diff -Nrcpad gcc-15.2.0/ChangeLog gcc-15.3.0/ChangeLog
*** gcc-15.2.0/ChangeLog	Fri Aug  8 06:52:35 2025
--- gcc-15.3.0/ChangeLog	Fri Jun 12 06:10:03 2026
***************
*** 1,3 ****
--- 1,7 ----
+ 2026-06-12  Release Manager
+ 
+ 	* GCC 15.3.0 released.
+ 
  2025-08-08  Release Manager
  
  	* GCC 15.2.0 released.
diff -Nrcpad gcc-15.2.0/INSTALL/binaries.html gcc-15.3.0/INSTALL/binaries.html
*** gcc-15.2.0/INSTALL/binaries.html	Fri Aug  8 06:52:57 2025
--- gcc-15.3.0/INSTALL/binaries.html	Fri Jun 12 06:10:26 2026
***************
*** 1,6 ****
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2025 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,9 ----
! <!DOCTYPE html>
  <html>
! <!-- Created by GNU Texinfo 7.1, https://www.gnu.org/software/texinfo/ -->
! <head>
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <!-- Copyright Â© 1988-2025 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,27 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
- <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: Binaries</title>
  
  <meta name="description" content="Installing GCC: Binaries">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,59 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
! a.summary-letter {text-decoration: none}
! blockquote.indentedblock {margin-right: 0em}
! blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
! blockquote.smallquotation {font-size: smaller}
! div.display {margin-left: 3.2em}
! div.example {margin-left: 3.2em}
! div.lisp {margin-left: 3.2em}
! div.smalldisplay {margin-left: 3.2em}
! div.smallexample {margin-left: 3.2em}
! div.smalllisp {margin-left: 3.2em}
! kbd {font-style: oblique}
! pre.display {font-family: inherit}
! pre.format {font-family: inherit}
! pre.menu-comment {font-family: serif}
! pre.menu-preformatted {font-family: serif}
! pre.smalldisplay {font-family: inherit; font-size: smaller}
! pre.smallexample {font-size: smaller}
! pre.smallformat {font-family: inherit; font-size: smaller}
! pre.smalllisp {font-size: smaller}
! span.nolinebreak {white-space: nowrap}
! span.roman {font-family: initial; font-weight: normal}
! span.sansserif {font-family: sans-serif; font-weight: normal}
! ul.no-bullet {list-style: none}
  -->
  </style>
  
--- 29,39 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
! ul.mark-bullet {list-style-type: disc}
  -->
  </style>
  
*************** ul.no-bullet {list-style: none}
*** 61,67 ****
  </head>
  
  <body lang="en">
- <h1 class="settitle" align="center">Installing GCC: Binaries</h1>
  
  
  
--- 41,46 ----
*************** ul.no-bullet {list-style: none}
*** 88,95 ****
  
  
  
! <a name="index-Binaries"></a>
! <a name="index-Installing-GCC_003a-Binaries"></a>
  
  <p>We are often asked about pre-compiled versions of GCC.  While we cannot
  provide these for all platforms, below you&rsquo;ll find links to binaries for
--- 67,74 ----
  
  
  
! <a class="index-entry-id" id="index-Binaries"></a>
! <a class="index-entry-id" id="index-Installing-GCC_003a-Binaries"></a>
  
  <p>We are often asked about pre-compiled versions of GCC.  While we cannot
  provide these for all platforms, below you&rsquo;ll find links to binaries for
*************** reasons.
*** 100,137 ****
  support them.  If you have any problems installing them, please
  contact their makers.
  </p>
! <ul>
! <li> AIX:
! <ul>
! <li> <a href="http://www.perzl.org/aix/">AIX Open Source Packages (AIX5L AIX 6.1
  AIX 7.1)</a>.
  </li></ul>
  
! </li><li> DOS&mdash;<a href="http://www.delorie.com/djgpp/">DJGPP</a>.
  
! </li><li> macOS:
! <ul>
! <li> The <a href="https://brew.sh">Homebrew</a> package manager;
! </li><li> <a href="https://www.macports.org">MacPorts</a>.
  </li></ul>
  
! </li><li> Microsoft Windows:
! <ul>
! <li> The <a href="https://sourceware.org/cygwin/">Cygwin</a> project;
! </li><li> The <a href="https://osdn.net/projects/mingw/">MinGW</a> and
! <a href="https://www.mingw-w64.org/">mingw-w64</a> projects.
  </li></ul>
  
! </li><li> <a href="http://www.openpkg.org/">OpenPKG</a> offers binaries for quite a
  number of platforms.
  
! </li><li> The <a href="https://gcc.gnu.org/wiki/GFortranBinaries">GFortran Wiki</a> has
  links to GNU Fortran binaries for several platforms.
  </li></ul>
  
  <hr />
  <p>
! <p><a href="./index.html">Return to the GCC Installation page</a>
  </p>
  
  
--- 79,116 ----
  support them.  If you have any problems installing them, please
  contact their makers.
  </p>
! <ul class="itemize mark-bullet">
! <li>AIX:
! <ul class="itemize mark-bullet">
! <li><a class="uref" href="http://www.perzl.org/aix/">AIX Open Source Packages (AIX5L AIX 6.1
  AIX 7.1)</a>.
  </li></ul>
  
! </li><li>DOS&mdash;<a class="uref" href="http://www.delorie.com/djgpp/">DJGPP</a>.
  
! </li><li>macOS:
! <ul class="itemize mark-bullet">
! <li>The <a class="uref" href="https://brew.sh">Homebrew</a> package manager;
! </li><li><a class="uref" href="https://www.macports.org">MacPorts</a>.
  </li></ul>
  
! </li><li>Microsoft Windows:
! <ul class="itemize mark-bullet">
! <li>The <a class="uref" href="https://sourceware.org/cygwin/">Cygwin</a> project;
! </li><li>The <a class="uref" href="https://osdn.net/projects/mingw/">MinGW</a> and
! <a class="uref" href="https://www.mingw-w64.org/">mingw-w64</a> projects.
  </li></ul>
  
! </li><li><a class="uref" href="http://www.openpkg.org/">OpenPKG</a> offers binaries for quite a
  number of platforms.
  
! </li><li>The <a class="uref" href="https://gcc.gnu.org/wiki/GFortranBinaries">GFortran Wiki</a> has
  links to GNU Fortran binaries for several platforms.
  </li></ul>
  
  <hr />
  <p>
! <p><a class="uref" href="./index.html">Return to the GCC Installation page</a>
  </p>
  
  
diff -Nrcpad gcc-15.2.0/INSTALL/build.html gcc-15.3.0/INSTALL/build.html
*** gcc-15.2.0/INSTALL/build.html	Fri Aug  8 06:52:57 2025
--- gcc-15.3.0/INSTALL/build.html	Fri Jun 12 06:10:25 2026
***************
*** 1,6 ****
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2025 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,9 ----
! <!DOCTYPE html>
  <html>
! <!-- Created by GNU Texinfo 7.1, https://www.gnu.org/software/texinfo/ -->
! <head>
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <!-- Copyright Â© 1988-2025 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,27 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
- <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: Building</title>
  
  <meta name="description" content="Installing GCC: Building">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,59 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
! a.summary-letter {text-decoration: none}
! blockquote.indentedblock {margin-right: 0em}
! blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
! blockquote.smallquotation {font-size: smaller}
! div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
! div.lisp {margin-left: 3.2em}
! div.smalldisplay {margin-left: 3.2em}
! div.smallexample {margin-left: 3.2em}
! div.smalllisp {margin-left: 3.2em}
! kbd {font-style: oblique}
! pre.display {font-family: inherit}
! pre.format {font-family: inherit}
! pre.menu-comment {font-family: serif}
! pre.menu-preformatted {font-family: serif}
! pre.smalldisplay {font-family: inherit; font-size: smaller}
! pre.smallexample {font-size: smaller}
! pre.smallformat {font-family: inherit; font-size: smaller}
! pre.smalllisp {font-size: smaller}
! span.nolinebreak {white-space: nowrap}
! span.roman {font-family: initial; font-weight: normal}
! span.sansserif {font-family: sans-serif; font-weight: normal}
! ul.no-bullet {list-style: none}
  -->
  </style>
  
--- 29,42 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
! a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
  div.example {margin-left: 3.2em}
! span:hover a.copiable-link {visibility: visible}
! ul.mark-bullet {list-style-type: disc}
  -->
  </style>
  
*************** ul.no-bullet {list-style: none}
*** 61,67 ****
  </head>
  
  <body lang="en">
- <h1 class="settitle" align="center">Installing GCC: Building</h1>
  
  
  
--- 44,49 ----
*************** ul.no-bullet {list-style: none}
*** 85,97 ****
  
  
  
! <a name="index-Installing-GCC_003a-Building"></a>
  
  <p>Now that GCC is configured, you are ready to build the compiler and
  runtime libraries.
  </p>
  <p>Some commands executed when making the compiler may fail (return a
! nonzero status) and be ignored by <code>make</code>.  These failures, which
  are often due to files that were not found, are expected, and can safely
  be ignored.
  </p>
--- 67,79 ----
  
  
  
! <a class="index-entry-id" id="index-Installing-GCC_003a-Building"></a>
  
  <p>Now that GCC is configured, you are ready to build the compiler and
  runtime libraries.
  </p>
  <p>Some commands executed when making the compiler may fail (return a
! nonzero status) and be ignored by <code class="command">make</code>.  These failures, which
  are often due to files that were not found, are expected, and can safely
  be ignored.
  </p>
*************** Unless you are a GCC developer, you can
*** 100,109 ****
  unless they cause compilation to fail.  Developers should attempt to fix
  any warnings encountered, however they can temporarily continue past
  warnings-as-errors by specifying the configure flag
! <samp>--disable-werror</samp>.
  </p>
  <p>On certain old systems, defining certain environment variables such as
! <code>CC</code> can interfere with the functioning of <code>make</code>.
  </p>
  <p>If you encounter seemingly strange errors when trying to build the
  compiler in a directory other than the source directory, it could be
--- 82,91 ----
  unless they cause compilation to fail.  Developers should attempt to fix
  any warnings encountered, however they can temporarily continue past
  warnings-as-errors by specifying the configure flag
! <samp class="option">--disable-werror</samp>.
  </p>
  <p>On certain old systems, defining certain environment variables such as
! <code class="env">CC</code> can interfere with the functioning of <code class="command">make</code>.
  </p>
  <p>If you encounter seemingly strange errors when trying to build the
  compiler in a directory other than the source directory, it could be
*************** because you have previously configured t
*** 111,127 ****
  directory.  Make sure you have done all the necessary preparations.
  </p>
  <p>If you build GCC on a BSD system using a directory stored in an old System
! V file system, problems may occur in running <code>fixincludes</code> if the
  System V file system doesn&rsquo;t support symbolic links.  These problems
! result in a failure to fix the declaration of <code>size_t</code> in
! <samp>sys/types.h</samp>.  If you find that <code>size_t</code> is a signed type and
  that type mismatches occur, this could be the cause.
  </p>
  <p>The solution is not to use such a directory for building GCC.
  </p>
  <p>Similarly, when building from the source repository or snapshots, or if you modify
! <samp>*.l</samp> files, you need the Flex lexical analyzer generator
! installed.  If you do not modify <samp>*.l</samp> files, releases contain
  the Flex-generated files and you do not need Flex installed to build
  them.  There is still one Flex-based lexical analyzer (part of the
  build machinery, not of GCC itself) that is used even if you only
--- 93,109 ----
  directory.  Make sure you have done all the necessary preparations.
  </p>
  <p>If you build GCC on a BSD system using a directory stored in an old System
! V file system, problems may occur in running <code class="command">fixincludes</code> if the
  System V file system doesn&rsquo;t support symbolic links.  These problems
! result in a failure to fix the declaration of <code class="code">size_t</code> in
! <samp class="file">sys/types.h</samp>.  If you find that <code class="code">size_t</code> is a signed type and
  that type mismatches occur, this could be the cause.
  </p>
  <p>The solution is not to use such a directory for building GCC.
  </p>
  <p>Similarly, when building from the source repository or snapshots, or if you modify
! <samp class="file">*.l</samp> files, you need the Flex lexical analyzer generator
! installed.  If you do not modify <samp class="file">*.l</samp> files, releases contain
  the Flex-generated files and you do not need Flex installed to build
  them.  There is still one Flex-based lexical analyzer (part of the
  build machinery, not of GCC itself) that is used even if you only
*************** documentation, you need version 4.7 or l
*** 132,354 ****
  want Info documentation to be regenerated.  Releases contain Info
  documentation pre-built for the unmodified documentation in the release.
  </p>
! <a name="Building-a-native-compiler"></a>
! <h3 class="section">Building a native compiler</h3>
  
  <p>For a native build, the default configuration is to perform
! a 3-stage bootstrap of the compiler when &lsquo;<samp>make</samp>&rsquo; is invoked.
  This will build the entire GCC system and ensure that it compiles
! itself correctly.  It can be disabled with the <samp>--disable-bootstrap</samp>
! parameter to &lsquo;<samp>configure</samp>&rsquo;, but bootstrapping is suggested because
  the compiler will be tested more completely and could also have
  better performance.
  </p>
  <p>The bootstrapping process will complete the following steps:
  </p>
! <ul>
! <li> Build tools necessary to build the compiler.
  
! </li><li> Perform a 3-stage bootstrap of the compiler.  This includes building
  three times the target tools for use by the compiler such as binutils
  (bfd, binutils, gas, gprof, ld, and opcodes) if they have been
  individually linked or moved into the top level GCC source tree before
  configuring.
  
! </li><li> Perform a comparison test of the stage2 and stage3 compilers.
  
! </li><li> Build runtime libraries using the stage3 compiler from the previous step.
  
  </li></ul>
  
! <p>If you are short on disk space you might consider &lsquo;<samp>make
  bootstrap-lean</samp>&rsquo; instead.  The sequence of compilation is the
  same described above, but object files from the stage1 and
  stage2 of the 3-stage bootstrap of the compiler are deleted as
  soon as they are no longer needed.
  </p>
  <p>If you wish to use non-default GCC flags when compiling the stage2
! and stage3 compilers, set <code>BOOT_CFLAGS</code> on the command line when
! doing &lsquo;<samp>make</samp>&rsquo;.  For example, if you want to save additional space
  during the bootstrap and in the final installation as well, you can
  build the compiler binaries without debugging information as in the
  following example.  This will save roughly 40% of disk space both for
  the bootstrap and the final installation.  (Libraries will still contain
  debugging information.)
  </p>
! <div class="smallexample">
! <pre class="smallexample">make BOOT_CFLAGS='-O' bootstrap
  </pre></div>
  
! <p>You can place non-default optimization flags into <code>BOOT_CFLAGS</code>; they
! are less well tested here than the default of &lsquo;<samp>-g -O2</samp>&rsquo;, but should
  still work.  In a few cases, you may find that you need to specify special
! flags such as <samp>-msoft-float</samp> here to complete the bootstrap; or,
  if the native compiler miscompiles the stage1 compiler, you may need
! to work around this, by choosing <code>BOOT_CFLAGS</code> to avoid the parts
! of the stage1 compiler that were miscompiled, or by using &lsquo;<samp>make
  bootstrap4</samp>&rsquo; to increase the number of stages of bootstrap.
  </p>
! <p><code>BOOT_CFLAGS</code> does not apply to bootstrapped target libraries.
  Since these are always compiled with the compiler currently being
! bootstrapped, you can use <code>CFLAGS_FOR_TARGET</code> to modify their
  compilation flags, as for non-bootstrapped target libraries.
  Again, if the native compiler miscompiles the stage1 compiler, you may
  need to work around this by avoiding non-working parts of the stage1
! compiler.  Use <code>STAGE1_TFLAGS</code> to this end.
  </p>
! <p>If you used the flag <samp>--enable-languages=&hellip;</samp> to restrict
  the compilers to be built, only those you&rsquo;ve actually enabled will be
  built.  This will of course only build those runtime libraries, for
  which the particular compiler has been built.  Please note,
! that re-defining <code>LANGUAGES</code> when calling &lsquo;<samp>make</samp>&rsquo;
! <strong>does not</strong> work anymore!
  </p>
  <p>If the comparison of stage2 and stage3 fails, this normally indicates
  that the stage2 compiler has compiled GCC incorrectly, and is therefore
  a potentially serious bug which you should investigate and report.  (On
  a few systems, meaningful comparison of object files is impossible; they
  always appear &ldquo;different&rdquo;.  If you encounter this problem, you will
! need to disable comparison in the <samp>Makefile</samp>.)
  </p>
  <p>If you do not want to bootstrap your compiler, you can configure with
! <samp>--disable-bootstrap</samp>.  In particular cases, you may want to
  bootstrap your compiler even if the target system is not the same as
  the one you are building on: for example, you could build a
! <code>powerpc-unknown-linux-gnu</code> toolchain on a
! <code>powerpc64-unknown-linux-gnu</code> host.  In this case, pass
! <samp>--enable-bootstrap</samp> to the configure script.
  </p>
! <p><code>BUILD_CONFIG</code> can be used to bring in additional customization
  to the build.  It can be set to a whitespace-separated list of names.
! For each such <code>NAME</code>, top-level <samp>config/<code>NAME</code>.mk</samp> will
! be included by the top-level <samp>Makefile</samp>, bringing in any settings
! it contains.  The default <code>BUILD_CONFIG</code> can be set using the
! configure option <samp>--with-build-config=<code>NAME</code>...</samp>.  Some
  examples of supported build configurations are:
  </p>
! <dl compact="compact">
! <dt>&lsquo;<samp>bootstrap-O1</samp>&rsquo;</dt>
! <dd><p>Removes any <samp>-O</samp>-started option from <code>BOOT_CFLAGS</code>, and adds
! <samp>-O1</samp> to it.  &lsquo;<samp>BUILD_CONFIG=bootstrap-O1</samp>&rsquo; is equivalent to
! &lsquo;<samp>BOOT_CFLAGS='-g -O1'</samp>&rsquo;.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-O3</samp>&rsquo;</dt>
! <dt>&lsquo;<samp>bootstrap-Og</samp>&rsquo;</dt>
! <dd><p>Analogous to <code>bootstrap-O1</code>.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-lto</samp>&rsquo;</dt>
  <dd><p>Enables Link-Time Optimization for host tools during bootstrapping.
! &lsquo;<samp>BUILD_CONFIG=bootstrap-lto</samp>&rsquo; is equivalent to adding
! <samp>-flto</samp> to &lsquo;<samp>BOOT_CFLAGS</samp>&rsquo;.  This option assumes that the host
  supports the linker plugin (e.g. GNU ld version 2.21 or later or GNU gold
  version 2.21 or later).
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-lto-noplugin</samp>&rsquo;</dt>
! <dd><p>This option is similar to <code>bootstrap-lto</code>, but is intended for
  hosts that do not support the linker plugin.  Without the linker plugin 
  static libraries are not compiled with link-time optimizations.  Since 
! the GCC middle end and back end are in <samp>libbackend.a</samp> this means
  that only the front end is actually LTO optimized.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-lto-lean</samp>&rsquo;</dt>
! <dd><p>This option is similar to <code>bootstrap-lto</code>, but is intended for
  faster build by only using LTO in the final bootstrap stage.
! With &lsquo;<samp>make profiledbootstrap</samp>&rsquo; the LTO frontend
  is trained only on generator files.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-debug</samp>&rsquo;</dt>
  <dd><p>Verifies that the compiler generates the same executable code, whether
  or not it is asked to emit debug information.  To this end, this
  option builds stage2 host programs without debug information, and uses
! <samp>contrib/compare-debug</samp> to compare them with the stripped stage3
! object files.  If <code>BOOT_CFLAGS</code> is overridden so as to not enable
  debug information, stage2 will have it, and stage3 won&rsquo;t.  This option
  is enabled by default when GCC bootstrapping is enabled, if
! <code>strip</code> can turn object files compiled with and without debug
  info into identical object files.  In addition to better test
  coverage, this option makes default bootstraps faster and leaner.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-debug-big</samp>&rsquo;</dt>
  <dd><p>Rather than comparing stripped object files, as in
! <code>bootstrap-debug</code>, this option saves internal compiler dumps
  during stage2 and stage3 and compares them as well, which helps catch
  additional potential problems, but at a great cost in terms of disk
! space.  It can be specified in addition to &lsquo;<samp>bootstrap-debug</samp>&rsquo;.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-debug-lean</samp>&rsquo;</dt>
! <dd><p>This option saves disk space compared with <code>bootstrap-debug-big</code>,
  but at the expense of some recompilation.  Instead of saving the dumps
  of stage2 and stage3 until the final compare, it uses
! <samp>-fcompare-debug</samp> to generate, compare and remove the dumps
  during stage3, repeating the compilation that already took place in
  stage2, whose dumps were not saved.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-debug-lib</samp>&rsquo;</dt>
  <dd><p>This option tests executable code invariance over debug information
! generation on target libraries, just like <code>bootstrap-debug-lean</code>
  tests it on host programs.  It builds stage3 libraries with
! <samp>-fcompare-debug</samp>, and it can be used along with any of the
! <code>bootstrap-debug</code> options above.
  </p>
! <p>There aren&rsquo;t <code>-lean</code> or <code>-big</code> counterparts to this option
  because most libraries are only build in stage3, so bootstrap compares
  would not get significant coverage.  Moreover, the few libraries built
  in stage2 are used in stage3 host programs, so we wouldn&rsquo;t want to
  compile stage2 libraries with different options for comparison purposes.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-debug-ckovw</samp>&rsquo;</dt>
  <dd><p>Arranges for error messages to be issued if the compiler built on any
! stage is run without the option <samp>-fcompare-debug</samp>.  This is
! useful to verify the full <samp>-fcompare-debug</samp> testing coverage.  It
! must be used along with <code>bootstrap-debug-lean</code> and
! <code>bootstrap-debug-lib</code>.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-cet</samp>&rsquo;</dt>
  <dd><p>This option enables Intel CET for host tools during bootstrapping.
! &lsquo;<samp>BUILD_CONFIG=bootstrap-cet</samp>&rsquo; is equivalent to adding
! <samp>-fcf-protection</samp> to &lsquo;<samp>BOOT_CFLAGS</samp>&rsquo;.  This option
  assumes that the host supports Intel CET (e.g. GNU assembler version
  2.30 or later).
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-time</samp>&rsquo;</dt>
  <dd><p>Arranges for the run time of each program started by the GCC driver,
! built in any stage, to be logged to <samp>time.log</samp>, in the top level of
  the build tree.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-asan</samp>&rsquo;</dt>
  <dd><p>Compiles GCC itself using Address Sanitization in order to catch invalid memory
  accesses within the GCC code.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-hwasan</samp>&rsquo;</dt>
  <dd><p>Compiles GCC itself using HWAddress Sanitization in order to catch invalid
  memory accesses within the GCC code.  This option is only available on AArch64
  systems that are running Linux kernel version 5.4 or later.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-ubsan</samp>&rsquo;</dt>
  <dd><p>Compiles GCC itself using Undefined Behavior Sanitization in order to catch
  undefined behavior within the GCC code.  Note that it does not abort on errors
! by default.  <code>UBSAN_OPTIONS</code> can be set to change this, like
! &lsquo;<samp>UBSAN_OPTIONS='abort_on_error=1:halt_on_error=1:print_summary=1:print_stacktrace=1'</samp>&rsquo;.
  </p>
  </dd>
  </dl>
  
! <a name="Building-a-cross-compiler"></a>
! <h3 class="section">Building a cross compiler</h3>
  
  <p>When building a cross compiler, it is not generally possible to do a
  3-stage bootstrap of the compiler.  This makes for an interesting problem
--- 114,337 ----
  want Info documentation to be regenerated.  Releases contain Info
  documentation pre-built for the unmodified documentation in the release.
  </p>
! <div class="section-level-extent" id="Building-a-native-compiler">
! <h3 class="section"><span>Building a native compiler<a class="copiable-link" href="#Building-a-native-compiler"> &para;</a></span></h3>
  
  <p>For a native build, the default configuration is to perform
! a 3-stage bootstrap of the compiler when &lsquo;<samp class="samp">make</samp>&rsquo; is invoked.
  This will build the entire GCC system and ensure that it compiles
! itself correctly.  It can be disabled with the <samp class="option">--disable-bootstrap</samp>
! parameter to &lsquo;<samp class="samp">configure</samp>&rsquo;, but bootstrapping is suggested because
  the compiler will be tested more completely and could also have
  better performance.
  </p>
  <p>The bootstrapping process will complete the following steps:
  </p>
! <ul class="itemize mark-bullet">
! <li>Build tools necessary to build the compiler.
  
! </li><li>Perform a 3-stage bootstrap of the compiler.  This includes building
  three times the target tools for use by the compiler such as binutils
  (bfd, binutils, gas, gprof, ld, and opcodes) if they have been
  individually linked or moved into the top level GCC source tree before
  configuring.
  
! </li><li>Perform a comparison test of the stage2 and stage3 compilers.
  
! </li><li>Build runtime libraries using the stage3 compiler from the previous step.
  
  </li></ul>
  
! <p>If you are short on disk space you might consider &lsquo;<samp class="samp">make
  bootstrap-lean</samp>&rsquo; instead.  The sequence of compilation is the
  same described above, but object files from the stage1 and
  stage2 of the 3-stage bootstrap of the compiler are deleted as
  soon as they are no longer needed.
  </p>
  <p>If you wish to use non-default GCC flags when compiling the stage2
! and stage3 compilers, set <code class="code">BOOT_CFLAGS</code> on the command line when
! doing &lsquo;<samp class="samp">make</samp>&rsquo;.  For example, if you want to save additional space
  during the bootstrap and in the final installation as well, you can
  build the compiler binaries without debugging information as in the
  following example.  This will save roughly 40% of disk space both for
  the bootstrap and the final installation.  (Libraries will still contain
  debugging information.)
  </p>
! <div class="example smallexample">
! <pre class="example-preformatted">make BOOT_CFLAGS='-O' bootstrap
  </pre></div>
  
! <p>You can place non-default optimization flags into <code class="code">BOOT_CFLAGS</code>; they
! are less well tested here than the default of &lsquo;<samp class="samp">-g -O2</samp>&rsquo;, but should
  still work.  In a few cases, you may find that you need to specify special
! flags such as <samp class="option">-msoft-float</samp> here to complete the bootstrap; or,
  if the native compiler miscompiles the stage1 compiler, you may need
! to work around this, by choosing <code class="code">BOOT_CFLAGS</code> to avoid the parts
! of the stage1 compiler that were miscompiled, or by using &lsquo;<samp class="samp">make
  bootstrap4</samp>&rsquo; to increase the number of stages of bootstrap.
  </p>
! <p><code class="code">BOOT_CFLAGS</code> does not apply to bootstrapped target libraries.
  Since these are always compiled with the compiler currently being
! bootstrapped, you can use <code class="code">CFLAGS_FOR_TARGET</code> to modify their
  compilation flags, as for non-bootstrapped target libraries.
  Again, if the native compiler miscompiles the stage1 compiler, you may
  need to work around this by avoiding non-working parts of the stage1
! compiler.  Use <code class="code">STAGE1_TFLAGS</code> to this end.
  </p>
! <p>If you used the flag <samp class="option">--enable-languages=&hellip;</samp> to restrict
  the compilers to be built, only those you&rsquo;ve actually enabled will be
  built.  This will of course only build those runtime libraries, for
  which the particular compiler has been built.  Please note,
! that re-defining <code class="env">LANGUAGES</code> when calling &lsquo;<samp class="samp">make</samp>&rsquo;
! <strong class="strong">does not</strong> work anymore!
  </p>
  <p>If the comparison of stage2 and stage3 fails, this normally indicates
  that the stage2 compiler has compiled GCC incorrectly, and is therefore
  a potentially serious bug which you should investigate and report.  (On
  a few systems, meaningful comparison of object files is impossible; they
  always appear &ldquo;different&rdquo;.  If you encounter this problem, you will
! need to disable comparison in the <samp class="file">Makefile</samp>.)
  </p>
  <p>If you do not want to bootstrap your compiler, you can configure with
! <samp class="option">--disable-bootstrap</samp>.  In particular cases, you may want to
  bootstrap your compiler even if the target system is not the same as
  the one you are building on: for example, you could build a
! <code class="code">powerpc-unknown-linux-gnu</code> toolchain on a
! <code class="code">powerpc64-unknown-linux-gnu</code> host.  In this case, pass
! <samp class="option">--enable-bootstrap</samp> to the configure script.
  </p>
! <p><code class="code">BUILD_CONFIG</code> can be used to bring in additional customization
  to the build.  It can be set to a whitespace-separated list of names.
! For each such <code class="code">NAME</code>, top-level <samp class="file">config/<code class="code">NAME</code>.mk</samp> will
! be included by the top-level <samp class="file">Makefile</samp>, bringing in any settings
! it contains.  The default <code class="code">BUILD_CONFIG</code> can be set using the
! configure option <samp class="option">--with-build-config=<code class="code">NAME</code>...</samp>.  Some
  examples of supported build configurations are:
  </p>
! <dl class="table">
! <dt>&lsquo;<samp class="samp">bootstrap-O1</samp>&rsquo;</dt>
! <dd><p>Removes any <samp class="option">-O</samp>-started option from <code class="code">BOOT_CFLAGS</code>, and adds
! <samp class="option">-O1</samp> to it.  &lsquo;<samp class="samp">BUILD_CONFIG=bootstrap-O1</samp>&rsquo; is equivalent to
! &lsquo;<samp class="samp">BOOT_CFLAGS='-g -O1'</samp>&rsquo;.
  </p>
  </dd>
! <dt>&lsquo;<samp class="samp">bootstrap-O3</samp>&rsquo;</dt>
! <dt>&lsquo;<samp class="samp">bootstrap-Og</samp>&rsquo;</dt>
! <dd><p>Analogous to <code class="code">bootstrap-O1</code>.
  </p>
  </dd>
! <dt>&lsquo;<samp class="samp">bootstrap-lto</samp>&rsquo;</dt>
  <dd><p>Enables Link-Time Optimization for host tools during bootstrapping.
! &lsquo;<samp class="samp">BUILD_CONFIG=bootstrap-lto</samp>&rsquo; is equivalent to adding
! <samp class="option">-flto</samp> to &lsquo;<samp class="samp">BOOT_CFLAGS</samp>&rsquo;.  This option assumes that the host
  supports the linker plugin (e.g. GNU ld version 2.21 or later or GNU gold
  version 2.21 or later).
  </p>
  </dd>
! <dt>&lsquo;<samp class="samp">bootstrap-lto-noplugin</samp>&rsquo;</dt>
! <dd><p>This option is similar to <code class="code">bootstrap-lto</code>, but is intended for
  hosts that do not support the linker plugin.  Without the linker plugin 
  static libraries are not compiled with link-time optimizations.  Since 
! the GCC middle end and back end are in <samp class="file">libbackend.a</samp> this means
  that only the front end is actually LTO optimized.
  </p>
  </dd>
! <dt>&lsquo;<samp class="samp">bootstrap-lto-lean</samp>&rsquo;</dt>
! <dd><p>This option is similar to <code class="code">bootstrap-lto</code>, but is intended for
  faster build by only using LTO in the final bootstrap stage.
! With &lsquo;<samp class="samp">make profiledbootstrap</samp>&rsquo; the LTO frontend
  is trained only on generator files.
  </p>
  </dd>
! <dt>&lsquo;<samp class="samp">bootstrap-debug</samp>&rsquo;</dt>
  <dd><p>Verifies that the compiler generates the same executable code, whether
  or not it is asked to emit debug information.  To this end, this
  option builds stage2 host programs without debug information, and uses
! <samp class="file">contrib/compare-debug</samp> to compare them with the stripped stage3
! object files.  If <code class="code">BOOT_CFLAGS</code> is overridden so as to not enable
  debug information, stage2 will have it, and stage3 won&rsquo;t.  This option
  is enabled by default when GCC bootstrapping is enabled, if
! <code class="code">strip</code> can turn object files compiled with and without debug
  info into identical object files.  In addition to better test
  coverage, this option makes default bootstraps faster and leaner.
  </p>
  </dd>
! <dt>&lsquo;<samp class="samp">bootstrap-debug-big</samp>&rsquo;</dt>
  <dd><p>Rather than comparing stripped object files, as in
! <code class="code">bootstrap-debug</code>, this option saves internal compiler dumps
  during stage2 and stage3 and compares them as well, which helps catch
  additional potential problems, but at a great cost in terms of disk
! space.  It can be specified in addition to &lsquo;<samp class="samp">bootstrap-debug</samp>&rsquo;.
  </p>
  </dd>
! <dt>&lsquo;<samp class="samp">bootstrap-debug-lean</samp>&rsquo;</dt>
! <dd><p>This option saves disk space compared with <code class="code">bootstrap-debug-big</code>,
  but at the expense of some recompilation.  Instead of saving the dumps
  of stage2 and stage3 until the final compare, it uses
! <samp class="option">-fcompare-debug</samp> to generate, compare and remove the dumps
  during stage3, repeating the compilation that already took place in
  stage2, whose dumps were not saved.
  </p>
  </dd>
! <dt>&lsquo;<samp class="samp">bootstrap-debug-lib</samp>&rsquo;</dt>
  <dd><p>This option tests executable code invariance over debug information
! generation on target libraries, just like <code class="code">bootstrap-debug-lean</code>
  tests it on host programs.  It builds stage3 libraries with
! <samp class="option">-fcompare-debug</samp>, and it can be used along with any of the
! <code class="code">bootstrap-debug</code> options above.
  </p>
! <p>There aren&rsquo;t <code class="code">-lean</code> or <code class="code">-big</code> counterparts to this option
  because most libraries are only build in stage3, so bootstrap compares
  would not get significant coverage.  Moreover, the few libraries built
  in stage2 are used in stage3 host programs, so we wouldn&rsquo;t want to
  compile stage2 libraries with different options for comparison purposes.
  </p>
  </dd>
! <dt>&lsquo;<samp class="samp">bootstrap-debug-ckovw</samp>&rsquo;</dt>
  <dd><p>Arranges for error messages to be issued if the compiler built on any
! stage is run without the option <samp class="option">-fcompare-debug</samp>.  This is
! useful to verify the full <samp class="option">-fcompare-debug</samp> testing coverage.  It
! must be used along with <code class="code">bootstrap-debug-lean</code> and
! <code class="code">bootstrap-debug-lib</code>.
  </p>
  </dd>
! <dt>&lsquo;<samp class="samp">bootstrap-cet</samp>&rsquo;</dt>
  <dd><p>This option enables Intel CET for host tools during bootstrapping.
! &lsquo;<samp class="samp">BUILD_CONFIG=bootstrap-cet</samp>&rsquo; is equivalent to adding
! <samp class="option">-fcf-protection</samp> to &lsquo;<samp class="samp">BOOT_CFLAGS</samp>&rsquo;.  This option
  assumes that the host supports Intel CET (e.g. GNU assembler version
  2.30 or later).
  </p>
  </dd>
! <dt>&lsquo;<samp class="samp">bootstrap-time</samp>&rsquo;</dt>
  <dd><p>Arranges for the run time of each program started by the GCC driver,
! built in any stage, to be logged to <samp class="file">time.log</samp>, in the top level of
  the build tree.
  </p>
  </dd>
! <dt>&lsquo;<samp class="samp">bootstrap-asan</samp>&rsquo;</dt>
  <dd><p>Compiles GCC itself using Address Sanitization in order to catch invalid memory
  accesses within the GCC code.
  </p>
  </dd>
! <dt>&lsquo;<samp class="samp">bootstrap-hwasan</samp>&rsquo;</dt>
  <dd><p>Compiles GCC itself using HWAddress Sanitization in order to catch invalid
  memory accesses within the GCC code.  This option is only available on AArch64
  systems that are running Linux kernel version 5.4 or later.
  </p>
  </dd>
! <dt>&lsquo;<samp class="samp">bootstrap-ubsan</samp>&rsquo;</dt>
  <dd><p>Compiles GCC itself using Undefined Behavior Sanitization in order to catch
  undefined behavior within the GCC code.  Note that it does not abort on errors
! by default.  <code class="code">UBSAN_OPTIONS</code> can be set to change this, like
! &lsquo;<samp class="samp">UBSAN_OPTIONS='abort_on_error=1:halt_on_error=1:print_summary=1:print_stacktrace=1'</samp>&rsquo;.
  </p>
  </dd>
  </dl>
  
! </div>
! <div class="section-level-extent" id="Building-a-cross-compiler">
! <h3 class="section"><span>Building a cross compiler<a class="copiable-link" href="#Building-a-cross-compiler"> &para;</a></span></h3>
  
  <p>When building a cross compiler, it is not generally possible to do a
  3-stage bootstrap of the compiler.  This makes for an interesting problem
*************** cross compiler.  The installed native co
*** 360,379 ****
  2.95 or later.
  </p>
  <p>Assuming you have already installed a native copy of GCC and configured
! your cross compiler, issue the command <code>make</code>, which performs the
  following steps:
  </p>
! <ul>
! <li> Build host tools necessary to build the compiler.
  
! </li><li> Build target tools for use by the compiler such as binutils (bfd,
  binutils, gas, gprof, ld, and opcodes)
  if they have been individually linked or moved into the top level GCC source
  tree before configuring.
  
! </li><li> Build the compiler (single stage only).
  
! </li><li> Build runtime libraries using the compiler from the previous step.
  </li></ul>
  
  <p>Note that if an error occurs in any step the make process will exit.
--- 343,362 ----
  2.95 or later.
  </p>
  <p>Assuming you have already installed a native copy of GCC and configured
! your cross compiler, issue the command <code class="command">make</code>, which performs the
  following steps:
  </p>
! <ul class="itemize mark-bullet">
! <li>Build host tools necessary to build the compiler.
  
! </li><li>Build target tools for use by the compiler such as binutils (bfd,
  binutils, gas, gprof, ld, and opcodes)
  if they have been individually linked or moved into the top level GCC source
  tree before configuring.
  
! </li><li>Build the compiler (single stage only).
  
! </li><li>Build runtime libraries using the compiler from the previous step.
  </li></ul>
  
  <p>Note that if an error occurs in any step the make process will exit.
*************** tree before configuring.
*** 381,404 ****
  <p>If you are not building GNU binutils in the same source tree as GCC,
  you will need a cross-assembler and cross-linker installed before
  configuring GCC.  Put them in the directory
! <samp><var>prefix</var>/<var>target</var>/bin</samp>.  Here is a table of the tools
  you should put in this directory:
  </p>
! <dl compact="compact">
! <dt><samp>as</samp></dt>
  <dd><p>This should be the cross-assembler.
  </p>
  </dd>
! <dt><samp>ld</samp></dt>
  <dd><p>This should be the cross-linker.
  </p>
  </dd>
! <dt><samp>ar</samp></dt>
  <dd><p>This should be the cross-archiver: a program which can manipulate
  archive files (linker libraries) in the target machine&rsquo;s format.
  </p>
  </dd>
! <dt><samp>ranlib</samp></dt>
  <dd><p>This should be a program to construct a symbol table in an archive file.
  </p></dd>
  </dl>
--- 364,387 ----
  <p>If you are not building GNU binutils in the same source tree as GCC,
  you will need a cross-assembler and cross-linker installed before
  configuring GCC.  Put them in the directory
! <samp class="file"><var class="var">prefix</var>/<var class="var">target</var>/bin</samp>.  Here is a table of the tools
  you should put in this directory:
  </p>
! <dl class="table">
! <dt><samp class="file">as</samp></dt>
  <dd><p>This should be the cross-assembler.
  </p>
  </dd>
! <dt><samp class="file">ld</samp></dt>
  <dd><p>This should be the cross-linker.
  </p>
  </dd>
! <dt><samp class="file">ar</samp></dt>
  <dd><p>This should be the cross-archiver: a program which can manipulate
  archive files (linker libraries) in the target machine&rsquo;s format.
  </p>
  </dd>
! <dt><samp class="file">ranlib</samp></dt>
  <dd><p>This should be a program to construct a symbol table in an archive file.
  </p></dd>
  </dl>
*************** and copy or link them to the proper plac
*** 408,414 ****
  find them when run later.
  </p>
  <p>The easiest way to provide these files is to build the Binutils package.
! Configure it with the same <samp>--host</samp> and <samp>--target</samp>
  options that you use for configuring GCC, then build and install
  them.  They install their executables automatically into the proper
  directory.  Alas, they do not support all the targets that GCC
--- 391,397 ----
  find them when run later.
  </p>
  <p>The easiest way to provide these files is to build the Binutils package.
! Configure it with the same <samp class="option">--host</samp> and <samp class="option">--target</samp>
  options that you use for configuring GCC, then build and install
  them.  They install their executables automatically into the proper
  directory.  Alas, they do not support all the targets that GCC
*************** supports.
*** 417,475 ****
  <p>If you are not building a C library in the same source tree as GCC,
  you should also provide the target libraries and headers before
  configuring GCC, specifying the directories with
! <samp>--with-sysroot</samp> or <samp>--with-headers</samp> and
! <samp>--with-libs</samp>.  Many targets also require &ldquo;start files&rdquo; such
! as <samp>crt0.o</samp> and
! <samp>crtn.o</samp> which are linked into each executable.  There may be several
! alternatives for <samp>crt0.o</samp>, for use with profiling or other
  compilation options.  Check your target&rsquo;s definition of
! <code>STARTFILE_SPEC</code> to find out what start files it uses.
  </p>
! <a name="Building-in-parallel"></a>
! <h3 class="section">Building in parallel</h3>
  
  <p>GNU Make 3.80 and above, which is necessary to build GCC, support
! building in parallel.  To activate this, you can use &lsquo;<samp>make -j 2</samp>&rsquo;
! instead of &lsquo;<samp>make</samp>&rsquo;.  You can also specify a bigger number, and
  in most cases using a value greater than the number of processors in
  your machine will result in fewer and shorter I/O latency hits, thus
  improving overall throughput; this is especially true for slow drives
  and network filesystems.
  </p>
! <a name="Building-the-Ada-compiler"></a>
! <h3 class="section">Building the Ada compiler</h3>
  
! <p><a href="prerequisites.html#GNAT-prerequisite">GNAT prerequisites</a>.
  </p>
! <a name="Building-the-D-compiler"></a>
! <h3 class="section">Building the D compiler</h3>
  
! <p><a href="prerequisites.html#GDC-prerequisite">GDC prerequisites</a>.
  </p>
! <a name="Building-with-profile-feedback"></a>
! <h3 class="section">Building with profile feedback</h3>
  
  <p>It is possible to use profile feedback to optimize the compiler itself.  This
  should result in a faster compiler binary.  Experiments done on x86 using gcc
  3.3 showed approximately 7 percent speedup on compiling C programs.  To
! bootstrap the compiler with profile feedback, use <code>make profiledbootstrap</code>.
  </p>
! <p>When &lsquo;<samp>make profiledbootstrap</samp>&rsquo; is run, it will first build a <code>stage1</code>
! compiler.  This compiler is used to build a <code>stageprofile</code> compiler
  instrumented to collect execution counts of instruction and branch
! probabilities.  Training run is done by building <code>stagetrain</code>
! compiler.  Finally a <code>stagefeedback</code> compiler is built
  using the information collected.
  </p>
  <p>Unlike standard bootstrap, several additional restrictions apply.  The
! compiler used to build <code>stage1</code> needs to support a 64-bit integral type.
  It is recommended to only use GCC for this.
  </p>
  <p>On Linux/x86_64 hosts with some restrictions (no virtualization) it is
! also possible to do autofdo build with &lsquo;<samp>make
  autoprofiledbootstrap</samp>&rsquo;. This uses Linux perf to sample branches in the
  binary and then rebuild it with feedback derived from the profile.
! Linux perf and the <code>autofdo</code> toolkit needs to be installed for
  this.
  </p>
  <p>Only the profile from the current build is used, so when an error
--- 400,462 ----
  <p>If you are not building a C library in the same source tree as GCC,
  you should also provide the target libraries and headers before
  configuring GCC, specifying the directories with
! <samp class="option">--with-sysroot</samp> or <samp class="option">--with-headers</samp> and
! <samp class="option">--with-libs</samp>.  Many targets also require &ldquo;start files&rdquo; such
! as <samp class="file">crt0.o</samp> and
! <samp class="file">crtn.o</samp> which are linked into each executable.  There may be several
! alternatives for <samp class="file">crt0.o</samp>, for use with profiling or other
  compilation options.  Check your target&rsquo;s definition of
! <code class="code">STARTFILE_SPEC</code> to find out what start files it uses.
  </p>
! </div>
! <div class="section-level-extent" id="Building-in-parallel">
! <h3 class="section"><span>Building in parallel<a class="copiable-link" href="#Building-in-parallel"> &para;</a></span></h3>
  
  <p>GNU Make 3.80 and above, which is necessary to build GCC, support
! building in parallel.  To activate this, you can use &lsquo;<samp class="samp">make -j 2</samp>&rsquo;
! instead of &lsquo;<samp class="samp">make</samp>&rsquo;.  You can also specify a bigger number, and
  in most cases using a value greater than the number of processors in
  your machine will result in fewer and shorter I/O latency hits, thus
  improving overall throughput; this is especially true for slow drives
  and network filesystems.
  </p>
! </div>
! <div class="section-level-extent" id="Building-the-Ada-compiler">
! <h3 class="section"><span>Building the Ada compiler<a class="copiable-link" href="#Building-the-Ada-compiler"> &para;</a></span></h3>
  
! <p><a class="uref" href="prerequisites.html#GNAT-prerequisite">GNAT prerequisites</a>.
  </p>
! </div>
! <div class="section-level-extent" id="Building-the-D-compiler">
! <h3 class="section"><span>Building the D compiler<a class="copiable-link" href="#Building-the-D-compiler"> &para;</a></span></h3>
  
! <p><a class="uref" href="prerequisites.html#GDC-prerequisite">GDC prerequisites</a>.
  </p>
! </div>
! <div class="section-level-extent" id="Building-with-profile-feedback">
! <h3 class="section"><span>Building with profile feedback<a class="copiable-link" href="#Building-with-profile-feedback"> &para;</a></span></h3>
  
  <p>It is possible to use profile feedback to optimize the compiler itself.  This
  should result in a faster compiler binary.  Experiments done on x86 using gcc
  3.3 showed approximately 7 percent speedup on compiling C programs.  To
! bootstrap the compiler with profile feedback, use <code class="code">make profiledbootstrap</code>.
  </p>
! <p>When &lsquo;<samp class="samp">make profiledbootstrap</samp>&rsquo; is run, it will first build a <code class="code">stage1</code>
! compiler.  This compiler is used to build a <code class="code">stageprofile</code> compiler
  instrumented to collect execution counts of instruction and branch
! probabilities.  Training run is done by building <code class="code">stagetrain</code>
! compiler.  Finally a <code class="code">stagefeedback</code> compiler is built
  using the information collected.
  </p>
  <p>Unlike standard bootstrap, several additional restrictions apply.  The
! compiler used to build <code class="code">stage1</code> needs to support a 64-bit integral type.
  It is recommended to only use GCC for this.
  </p>
  <p>On Linux/x86_64 hosts with some restrictions (no virtualization) it is
! also possible to do autofdo build with &lsquo;<samp class="samp">make
  autoprofiledbootstrap</samp>&rsquo;. This uses Linux perf to sample branches in the
  binary and then rebuild it with feedback derived from the profile.
! Linux perf and the <code class="code">autofdo</code> toolkit needs to be installed for
  this.
  </p>
  <p>Only the profile from the current build is used, so when an error
*************** the code quality may be much worse.
*** 478,484 ****
  </p>
  <hr />
  <p>
! <p><a href="./index.html">Return to the GCC Installation page</a>
  </p>
  
  
--- 465,471 ----
  </p>
  <hr />
  <p>
! <p><a class="uref" href="./index.html">Return to the GCC Installation page</a>
  </p>
  
  
*************** the code quality may be much worse.
*** 486,492 ****
  
  
  
! <hr>
  
  
  
--- 473,479 ----
  
  
  
! </div>
  
  
  
diff -Nrcpad gcc-15.2.0/INSTALL/configure.html gcc-15.3.0/INSTALL/configure.html
*** gcc-15.2.0/INSTALL/configure.html	Fri Aug  8 06:52:57 2025
--- gcc-15.3.0/INSTALL/configure.html	Fri Jun 12 06:10:25 2026
***************
*** 1,6 ****
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2025 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,9 ----
! <!DOCTYPE html>
  <html>
! <!-- Created by GNU Texinfo 7.1, https://www.gnu.org/software/texinfo/ -->
! <head>
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <!-- Copyright Â© 1988-2025 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,27 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
- <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: Configuration</title>
  
  <meta name="description" content="Installing GCC: Configuration">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,59 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
! a.summary-letter {text-decoration: none}
! blockquote.indentedblock {margin-right: 0em}
! blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
! blockquote.smallquotation {font-size: smaller}
! div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
! div.lisp {margin-left: 3.2em}
! div.smalldisplay {margin-left: 3.2em}
! div.smallexample {margin-left: 3.2em}
! div.smalllisp {margin-left: 3.2em}
! kbd {font-style: oblique}
! pre.display {font-family: inherit}
! pre.format {font-family: inherit}
! pre.menu-comment {font-family: serif}
! pre.menu-preformatted {font-family: serif}
! pre.smalldisplay {font-family: inherit; font-size: smaller}
! pre.smallexample {font-size: smaller}
! pre.smallformat {font-family: inherit; font-size: smaller}
! pre.smalllisp {font-size: smaller}
! span.nolinebreak {white-space: nowrap}
! span.roman {font-family: initial; font-weight: normal}
! span.sansserif {font-family: sans-serif; font-weight: normal}
! ul.no-bullet {list-style: none}
  -->
  </style>
  
--- 29,43 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
! a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
  div.example {margin-left: 3.2em}
! span:hover a.copiable-link {visibility: visible}
! ul.mark-bullet {list-style-type: disc}
! ul.mark-minus {list-style-type: "\2212"}
  -->
  </style>
  
*************** ul.no-bullet {list-style: none}
*** 61,67 ****
  </head>
  
  <body lang="en">
- <h1 class="settitle" align="center">Installing GCC: Configuration</h1>
  
  
  
--- 45,50 ----
*************** ul.no-bullet {list-style: none}
*** 84,159 ****
  
  
  
! <a name="index-Configuration"></a>
! <a name="index-Installing-GCC_003a-Configuration"></a>
  
  <p>Like most GNU software, GCC must be configured before it can be built.
  This document describes the recommended configuration procedure
  for both native and cross targets.
  </p>
! <p>We use <var>srcdir</var> to refer to the toplevel source directory for
! GCC; we use <var>objdir</var> to refer to the toplevel build/object directory.
  </p>
! <p>If you obtained the sources by cloning the repository, <var>srcdir</var>
! must refer to the top <samp>gcc</samp> directory, the one where the
! <samp>MAINTAINERS</samp> file can be found, and not its <samp>gcc</samp>
  subdirectory, otherwise the build will fail.
  </p>
! <p>If either <var>srcdir</var> or <var>objdir</var> is located on an automounted NFS
! file system, the shell&rsquo;s built-in <code>pwd</code> command will return
  temporary pathnames.  Using these can lead to various sorts of build
! problems.  To avoid this issue, set the <code>PWDCMD</code> environment
! variable to an automounter-aware <code>pwd</code> command, e.g.,
! <code>pawd</code> or &lsquo;<samp>amq -w</samp>&rsquo;, during the configuration and build
  phases.
  </p>
! <p>First, we <strong>highly</strong> recommend that GCC be built into a
! separate directory from the sources which does <strong>not</strong> reside
  within the source tree.  This is how we generally build GCC; building
! where <var>objdir</var> is a subdirectory of <var>srcdir</var> should work as well;
! building where <var>objdir</var> == <var>srcdir</var> is unsupported.
  </p>
  <p>If you have previously built GCC in the same directory for a
! different target machine, do &lsquo;<samp>make distclean</samp>&rsquo; to delete all files
! that might be invalid.  One of the files this deletes is <samp>Makefile</samp>;
! if &lsquo;<samp>make distclean</samp>&rsquo; complains that <samp>Makefile</samp> does not exist
  or issues a message like &ldquo;don&rsquo;t know how to make distclean&rdquo; it probably
  means that the directory is already suitably clean.  However, with the
! recommended method of building in a separate <var>objdir</var>, you should
! simply use a different <var>objdir</var> for each target.
  </p>
! <p>Second, when configuring a native system, either <code>cc</code> or
! <code>gcc</code> must be in your path or you must set <code>CC</code> in
  your environment before running configure.  Otherwise the configuration
  scripts may fail.
  </p>
  
  <p>To configure GCC:
  </p>
! <div class="smallexample">
! <pre class="smallexample">% mkdir <var>objdir</var>
! % cd <var>objdir</var>
! % <var>srcdir</var>/configure [<var>options</var>] [<var>target</var>]
  </pre></div>
  
! <a name="Distributor-options"></a>
! <h3 class="heading">Distributor options</h3>
  
  <p>If you will be distributing binary versions of GCC, with modifications
  to the source code, you should use the options described in this
  section to make clear that your version contains modifications.
  </p>
! <dl compact="compact">
! <dt><code>--with-pkgversion=<var>version</var></code></dt>
  <dd><p>Specify a string that identifies your package.  You may wish
  to include a build number or build date.  This version string will be
! included in the output of <code>gcc --version</code>.  This suffix does
! not replace the default version string, only the &lsquo;<samp>GCC</samp>&rsquo; part.
  </p>
! <p>The default value is &lsquo;<samp>GCC</samp>&rsquo;.
  </p>
  </dd>
! <dt><code>--with-bugurl=<var>url</var></code></dt>
  <dd><p>Specify the URL that users should visit if they wish to report a bug.
  You are of course welcome to forward bugs reported to you to the FSF,
  if you determine that they are not bugs in your modifications.
--- 67,141 ----
  
  
  
! <a class="index-entry-id" id="index-Configuration"></a>
! <a class="index-entry-id" id="index-Installing-GCC_003a-Configuration"></a>
  
  <p>Like most GNU software, GCC must be configured before it can be built.
  This document describes the recommended configuration procedure
  for both native and cross targets.
  </p>
! <p>We use <var class="var">srcdir</var> to refer to the toplevel source directory for
! GCC; we use <var class="var">objdir</var> to refer to the toplevel build/object directory.
  </p>
! <p>If you obtained the sources by cloning the repository, <var class="var">srcdir</var>
! must refer to the top <samp class="file">gcc</samp> directory, the one where the
! <samp class="file">MAINTAINERS</samp> file can be found, and not its <samp class="file">gcc</samp>
  subdirectory, otherwise the build will fail.
  </p>
! <p>If either <var class="var">srcdir</var> or <var class="var">objdir</var> is located on an automounted NFS
! file system, the shell&rsquo;s built-in <code class="command">pwd</code> command will return
  temporary pathnames.  Using these can lead to various sorts of build
! problems.  To avoid this issue, set the <code class="env">PWDCMD</code> environment
! variable to an automounter-aware <code class="command">pwd</code> command, e.g.,
! <code class="command">pawd</code> or &lsquo;<samp class="samp">amq -w</samp>&rsquo;, during the configuration and build
  phases.
  </p>
! <p>First, we <strong class="strong">highly</strong> recommend that GCC be built into a
! separate directory from the sources which does <strong class="strong">not</strong> reside
  within the source tree.  This is how we generally build GCC; building
! where <var class="var">objdir</var> is a subdirectory of <var class="var">srcdir</var> should work as well;
! building where <var class="var">objdir</var> == <var class="var">srcdir</var> is unsupported.
  </p>
  <p>If you have previously built GCC in the same directory for a
! different target machine, do &lsquo;<samp class="samp">make distclean</samp>&rsquo; to delete all files
! that might be invalid.  One of the files this deletes is <samp class="file">Makefile</samp>;
! if &lsquo;<samp class="samp">make distclean</samp>&rsquo; complains that <samp class="file">Makefile</samp> does not exist
  or issues a message like &ldquo;don&rsquo;t know how to make distclean&rdquo; it probably
  means that the directory is already suitably clean.  However, with the
! recommended method of building in a separate <var class="var">objdir</var>, you should
! simply use a different <var class="var">objdir</var> for each target.
  </p>
! <p>Second, when configuring a native system, either <code class="command">cc</code> or
! <code class="command">gcc</code> must be in your path or you must set <code class="env">CC</code> in
  your environment before running configure.  Otherwise the configuration
  scripts may fail.
  </p>
  
  <p>To configure GCC:
  </p>
! <div class="example smallexample">
! <pre class="example-preformatted">% mkdir <var class="var">objdir</var>
! % cd <var class="var">objdir</var>
! % <var class="var">srcdir</var>/configure [<var class="var">options</var>] [<var class="var">target</var>]
  </pre></div>
  
! <h3 class="heading" id="Distributor-options"><span>Distributor options<a class="copiable-link" href="#Distributor-options"> &para;</a></span></h3>
  
  <p>If you will be distributing binary versions of GCC, with modifications
  to the source code, you should use the options described in this
  section to make clear that your version contains modifications.
  </p>
! <dl class="table">
! <dt><code class="code">--with-pkgversion=<var class="var">version</var></code></dt>
  <dd><p>Specify a string that identifies your package.  You may wish
  to include a build number or build date.  This version string will be
! included in the output of <code class="command">gcc --version</code>.  This suffix does
! not replace the default version string, only the &lsquo;<samp class="samp">GCC</samp>&rsquo; part.
  </p>
! <p>The default value is &lsquo;<samp class="samp">GCC</samp>&rsquo;.
  </p>
  </dd>
! <dt><code class="code">--with-bugurl=<var class="var">url</var></code></dt>
  <dd><p>Specify the URL that users should visit if they wish to report a bug.
  You are of course welcome to forward bugs reported to you to the FSF,
  if you determine that they are not bugs in your modifications.
*************** if you determine that they are not bugs
*** 161,223 ****
  <p>The default value refers to the FSF&rsquo;s GCC bug tracker.
  </p>
  </dd>
! <dt><code>--with-documentation-root-url=<var>url</var></code></dt>
! <dd><p>Specify the URL root that contains GCC option documentation.  The <var>url</var>
! should end with a <code>/</code> character.
  </p>
! <p>The default value is <a href="https://gcc.gnu.org/onlinedocs/">https://gcc.gnu.org/onlinedocs/</a>
  on the GCC main development trunk.  On release branches, the default
! is <code>https://gcc.gnu.org/onlinedocs/gcc-<var>major</var>.<var>minor</var>.0/</code>.
  </p>
  </dd>
! <dt><code>--with-changes-root-url=<var>url</var></code></dt>
  <dd><p>Specify the URL root that contains information about changes in GCC
! releases like <code>gcc-<var>version</var>/changes.html</code>.
! The <var>url</var> should end with a <code>/</code> character.
  </p>
! <p>The default value is <a href="https://gcc.gnu.org/">https://gcc.gnu.org/</a>.
  </p>
  </dd>
  </dl>
  
! <a name="Host_002c-Build-and-Target-specification"></a>
! <h3 class="heading">Host, Build and Target specification</h3>
  
  <p>Specify the host, build and target machine configurations.  You do this
! when you run the <samp>configure</samp> script.
  </p>
! <p>The <em>build</em> machine is the system which you are using, the
! <em>host</em> machine is the system where you want to run the resulting
! compiler (normally the build machine), and the <em>target</em> machine is
  the system for which you want the compiler to generate code.
  </p>
  <p>If you are building a compiler to produce code for the machine it runs
  on (a native compiler), you normally do not need to specify any operands
! to <samp>configure</samp>; it will try to guess the type of machine you are on
  and use that as the build, host and target machines.  So you don&rsquo;t need
  to specify a configuration when building a native compiler unless
! <samp>configure</samp> cannot figure out what your configuration is or guesses
  wrong.
  </p>
! <p>In those cases, specify the build machine&rsquo;s <em>configuration name</em>
! with the <samp>--host</samp> option; the host and target will default to be
  the same as the host machine.
  </p>
  <p>Here is an example:
  </p>
! <div class="smallexample">
! <pre class="smallexample">./configure --host=x86_64-pc-linux-gnu
  </pre></div>
  
  <p>A configuration name may be canonical or it may be more or less
! abbreviated (<samp>config.sub</samp> script produces canonical versions).
  </p>
  <p>A canonical configuration name has three parts, separated by dashes.
! It looks like this: &lsquo;<samp><var>cpu</var>-<var>company</var>-<var>system</var></samp>&rsquo;.
  </p>
  <p>Here are the possible CPU types:
  </p>
! <blockquote>
  <p>aarch64, aarch64_be, alpha, alpha64, amdgcn, arc, arceb, arm, armeb, avr, bfin,
  bpf, cris, csky, epiphany, fido, fr30, frv, ft32, h8300, hppa, hppa2.0,
  hppa64, i486, i686, ia64, iq2000, lm32, loongarch64, m32c, m32r, m32rle, m68k,
--- 143,204 ----
  <p>The default value refers to the FSF&rsquo;s GCC bug tracker.
  </p>
  </dd>
! <dt><code class="code">--with-documentation-root-url=<var class="var">url</var></code></dt>
! <dd><p>Specify the URL root that contains GCC option documentation.  The <var class="var">url</var>
! should end with a <code class="code">/</code> character.
  </p>
! <p>The default value is <a class="uref" href="https://gcc.gnu.org/onlinedocs/">https://gcc.gnu.org/onlinedocs/</a>
  on the GCC main development trunk.  On release branches, the default
! is <code class="code">https://gcc.gnu.org/onlinedocs/gcc-<var class="var">major</var>.<var class="var">minor</var>.0/</code>.
  </p>
  </dd>
! <dt><code class="code">--with-changes-root-url=<var class="var">url</var></code></dt>
  <dd><p>Specify the URL root that contains information about changes in GCC
! releases like <code class="code">gcc-<var class="var">version</var>/changes.html</code>.
! The <var class="var">url</var> should end with a <code class="code">/</code> character.
  </p>
! <p>The default value is <a class="uref" href="https://gcc.gnu.org/">https://gcc.gnu.org/</a>.
  </p>
  </dd>
  </dl>
  
! <h3 class="heading" id="Host_002c-Build-and-Target-specification"><span>Host, Build and Target specification<a class="copiable-link" href="#Host_002c-Build-and-Target-specification"> &para;</a></span></h3>
  
  <p>Specify the host, build and target machine configurations.  You do this
! when you run the <samp class="file">configure</samp> script.
  </p>
! <p>The <em class="dfn">build</em> machine is the system which you are using, the
! <em class="dfn">host</em> machine is the system where you want to run the resulting
! compiler (normally the build machine), and the <em class="dfn">target</em> machine is
  the system for which you want the compiler to generate code.
  </p>
  <p>If you are building a compiler to produce code for the machine it runs
  on (a native compiler), you normally do not need to specify any operands
! to <samp class="file">configure</samp>; it will try to guess the type of machine you are on
  and use that as the build, host and target machines.  So you don&rsquo;t need
  to specify a configuration when building a native compiler unless
! <samp class="file">configure</samp> cannot figure out what your configuration is or guesses
  wrong.
  </p>
! <p>In those cases, specify the build machine&rsquo;s <em class="dfn">configuration name</em>
! with the <samp class="option">--host</samp> option; the host and target will default to be
  the same as the host machine.
  </p>
  <p>Here is an example:
  </p>
! <div class="example smallexample">
! <pre class="example-preformatted">./configure --host=x86_64-pc-linux-gnu
  </pre></div>
  
  <p>A configuration name may be canonical or it may be more or less
! abbreviated (<samp class="file">config.sub</samp> script produces canonical versions).
  </p>
  <p>A canonical configuration name has three parts, separated by dashes.
! It looks like this: &lsquo;<samp class="samp"><var class="var">cpu</var>-<var class="var">company</var>-<var class="var">system</var></samp>&rsquo;.
  </p>
  <p>Here are the possible CPU types:
  </p>
! <blockquote class="quotation">
  <p>aarch64, aarch64_be, alpha, alpha64, amdgcn, arc, arceb, arm, armeb, avr, bfin,
  bpf, cris, csky, epiphany, fido, fr30, frv, ft32, h8300, hppa, hppa2.0,
  hppa64, i486, i686, ia64, iq2000, lm32, loongarch64, m32c, m32r, m32rle, m68k,
*************** v850e, v850e1, vax, visium, x86_64, xsto
*** 232,389 ****
  
  <p>Here is a list of system types:
  </p>
! <blockquote>
! <p>aix<var>version</var>, amdhsa, aout, cygwin, darwin<var>version</var>,
  eabi, eabialtivec, eabisim, eabisimaltivec, elf, elf32,
! elfbare, elfoabi, freebsd<var>version</var>, gnu, hpux, hpux<var>version</var>,
  kfreebsd-gnu, kopensolaris-gnu, linux-androideabi, linux-gnu,
  linux-gnu_altivec, linux-musl, linux-uclibc, lynxos, mingw32, mingw32crt,
! mmixware, msdosdjgpp, netbsd, netbsdelf<var>version</var>, nto-qnx, openbsd,
! rtems, solaris<var>version</var>, symbianelf, tpf, uclinux, uclinux_eabi, vms,
  vxworks, vxworksae, vxworksmils
  </p></blockquote>
  
! <a name="Options-specification"></a>
! <h3 class="heading">Options specification</h3>
  
! <p>Use <var>options</var> to override several configure time options for
! GCC.  A list of supported <var>options</var> follows; &lsquo;<samp>configure
  --help</samp>&rsquo; may list other options, but those not listed below may not
  work and should not normally be used.
  </p>
! <p>Note that each <samp>--enable</samp> option has a corresponding
! <samp>--disable</samp> option and that each <samp>--with</samp> option has a
! corresponding <samp>--without</samp> option.
  </p>
! <dl compact="compact">
! <dt><code>--prefix=<var>dirname</var></code></dt>
  <dd><p>Specify the toplevel installation
  directory.  This is the recommended way to install the tools into a directory
  other than the default.  The toplevel installation directory defaults to
! <samp>/usr/local</samp>.
  </p>
! <p>We <strong>highly</strong> recommend against <var>dirname</var> being the same or a
! subdirectory of <var>objdir</var> or vice versa.  If specifying a directory
  beneath a user&rsquo;s home directory tree, some shells will not expand
! <var>dirname</var> correctly if it contains the &lsquo;<samp>~</samp>&rsquo; metacharacter; use
! <code>$HOME</code> instead.
  </p>
! <p>The following standard <code>autoconf</code> options are supported.  Normally you
  should not need to use these options.
! </p><dl compact="compact">
! <dt><code>--exec-prefix=<var>dirname</var></code></dt>
  <dd><p>Specify the toplevel installation directory for architecture-dependent
! files.  The default is <samp><var>prefix</var></samp>.
  </p>
  </dd>
! <dt><code>--bindir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for the executables called by users
! (such as <code>gcc</code> and <code>g++</code>).  The default is
! <samp><var>exec-prefix</var>/bin</samp>.
  </p>
  </dd>
! <dt><code>--libdir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for object code libraries and
! internal data files of GCC.  The default is <samp><var>exec-prefix</var>/lib</samp>.
  </p>
  </dd>
! <dt><code>--libexecdir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for internal executables of GCC.
! The default is <samp><var>exec-prefix</var>/libexec</samp>.
  </p>
  </dd>
! <dt><code>--with-slibdir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for the shared libgcc library.  The
! default is <samp><var>libdir</var></samp>.
  </p>
  </dd>
! <dt><code>--datarootdir=<var>dirname</var></code></dt>
  <dd><p>Specify the root of the directory tree for read-only architecture-independent
! data files referenced by GCC.  The default is <samp><var>prefix</var>/share</samp>.
  </p>
  </dd>
! <dt><code>--infodir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for documentation in info format.
! The default is <samp><var>datarootdir</var>/info</samp>.
  </p>
  </dd>
! <dt><code>--datadir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for some architecture-independent
! data files referenced by GCC.  The default is <samp><var>datarootdir</var></samp>.
  </p>
  </dd>
! <dt><code>--docdir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for documentation files (other
! than Info) for GCC.  The default is <samp><var>datarootdir</var>/doc</samp>.
  </p>
  </dd>
! <dt><code>--htmldir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for HTML documentation files.
! The default is <samp><var>docdir</var></samp>.
  </p>
  </dd>
! <dt><code>--pdfdir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for PDF documentation files.
! The default is <samp><var>docdir</var></samp>.
  </p>
  </dd>
! <dt><code>--mandir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for manual pages.  The default is
! <samp><var>datarootdir</var>/man</samp>.  (Note that the manual pages are only extracts
  from the full GCC manuals, which are provided in Texinfo format.  The manpages
  are derived by an automatic conversion process from parts of the full
  manual.)
  </p>
  </dd>
! <dt><code>--with-gxx-include-dir=<var>dirname</var></code></dt>
  <dd><p>Specify
  the installation directory for G++ header files.  The default depends
  on other configuration options, and differs between cross and native
  configurations.
  </p>
  </dd>
! <dt><code>--with-specs=<var>specs</var></code></dt>
  <dd><p>Specify additional command line driver SPECS.
  This can be useful if you need to turn on a non-standard feature by
  default without modifying the compiler&rsquo;s source code, for instance
! <samp>--with-specs=%{!fcommon:%{!fno-common:-fno-common}}</samp>.
  See &ldquo;Spec Files&rdquo; in the main manual
  </p>
  </dd>
  </dl>
  
  </dd>
! <dt><code>--program-prefix=<var>prefix</var></code></dt>
  <dd><p>GCC supports some transformations of the names of its programs when
! installing them.  This option prepends <var>prefix</var> to the names of
! programs to install in <var>bindir</var> (see above).  For example, specifying
! <samp>--program-prefix=foo-</samp> would result in &lsquo;<samp>gcc</samp>&rsquo;
! being installed as <samp>/usr/local/bin/foo-gcc</samp>.
  </p>
  </dd>
! <dt><code>--program-suffix=<var>suffix</var></code></dt>
! <dd><p>Appends <var>suffix</var> to the names of programs to install in <var>bindir</var>
! (see above).  For example, specifying <samp>--program-suffix=-3.1</samp>
! would result in &lsquo;<samp>gcc</samp>&rsquo; being installed as
! <samp>/usr/local/bin/gcc-3.1</samp>.
  </p>
  </dd>
! <dt><code>--program-transform-name=<var>pattern</var></code></dt>
! <dd><p>Applies the &lsquo;<samp>sed</samp>&rsquo; script <var>pattern</var> to be applied to the names
! of programs to install in <var>bindir</var> (see above).  <var>pattern</var> has to
! consist of one or more basic &lsquo;<samp>sed</samp>&rsquo; editing commands, separated by
! semicolons.  For example, if you want the &lsquo;<samp>gcc</samp>&rsquo; program name to be
! transformed to the installed program <samp>/usr/local/bin/myowngcc</samp> and
! the &lsquo;<samp>g++</samp>&rsquo; program name to be transformed to
! <samp>/usr/local/bin/gspecial++</samp> without changing other program names,
  you could use the pattern
! <samp>--program-transform-name='s/^gcc$/myowngcc/; s/^g++$/gspecial++/'</samp>
  to achieve this effect.
  </p>
  <p>All three options can be combined and used together, resulting in more
! complex conversion patterns.  As a basic rule, <var>prefix</var> (and
! <var>suffix</var>) are prepended (appended) before further transformations
! can happen with a special transformation script <var>pattern</var>.
  </p>
  <p>As currently implemented, this option only takes effect for native
  builds; cross compiler binaries&rsquo; names are not transformed even when a
--- 213,369 ----
  
  <p>Here is a list of system types:
  </p>
! <blockquote class="quotation">
! <p>aix<var class="var">version</var>, amdhsa, aout, cygwin, darwin<var class="var">version</var>,
  eabi, eabialtivec, eabisim, eabisimaltivec, elf, elf32,
! elfbare, elfoabi, freebsd<var class="var">version</var>, gnu, hpux, hpux<var class="var">version</var>,
  kfreebsd-gnu, kopensolaris-gnu, linux-androideabi, linux-gnu,
  linux-gnu_altivec, linux-musl, linux-uclibc, lynxos, mingw32, mingw32crt,
! mmixware, msdosdjgpp, netbsd, netbsdelf<var class="var">version</var>, nto-qnx, openbsd,
! rtems, solaris<var class="var">version</var>, symbianelf, tpf, uclinux, uclinux_eabi, vms,
  vxworks, vxworksae, vxworksmils
  </p></blockquote>
  
! <h3 class="heading" id="Options-specification"><span>Options specification<a class="copiable-link" href="#Options-specification"> &para;</a></span></h3>
  
! <p>Use <var class="var">options</var> to override several configure time options for
! GCC.  A list of supported <var class="var">options</var> follows; &lsquo;<samp class="samp">configure
  --help</samp>&rsquo; may list other options, but those not listed below may not
  work and should not normally be used.
  </p>
! <p>Note that each <samp class="option">--enable</samp> option has a corresponding
! <samp class="option">--disable</samp> option and that each <samp class="option">--with</samp> option has a
! corresponding <samp class="option">--without</samp> option.
  </p>
! <dl class="table">
! <dt><code class="code">--prefix=<var class="var">dirname</var></code></dt>
  <dd><p>Specify the toplevel installation
  directory.  This is the recommended way to install the tools into a directory
  other than the default.  The toplevel installation directory defaults to
! <samp class="file">/usr/local</samp>.
  </p>
! <p>We <strong class="strong">highly</strong> recommend against <var class="var">dirname</var> being the same or a
! subdirectory of <var class="var">objdir</var> or vice versa.  If specifying a directory
  beneath a user&rsquo;s home directory tree, some shells will not expand
! <var class="var">dirname</var> correctly if it contains the &lsquo;<samp class="samp">~</samp>&rsquo; metacharacter; use
! <code class="env">$HOME</code> instead.
  </p>
! <p>The following standard <code class="command">autoconf</code> options are supported.  Normally you
  should not need to use these options.
! </p><dl class="table">
! <dt><code class="code">--exec-prefix=<var class="var">dirname</var></code></dt>
  <dd><p>Specify the toplevel installation directory for architecture-dependent
! files.  The default is <samp class="file"><var class="var">prefix</var></samp>.
  </p>
  </dd>
! <dt><code class="code">--bindir=<var class="var">dirname</var></code></dt>
  <dd><p>Specify the installation directory for the executables called by users
! (such as <code class="command">gcc</code> and <code class="command">g++</code>).  The default is
! <samp class="file"><var class="var">exec-prefix</var>/bin</samp>.
  </p>
  </dd>
! <dt><code class="code">--libdir=<var class="var">dirname</var></code></dt>
  <dd><p>Specify the installation directory for object code libraries and
! internal data files of GCC.  The default is <samp class="file"><var class="var">exec-prefix</var>/lib</samp>.
  </p>
  </dd>
! <dt><code class="code">--libexecdir=<var class="var">dirname</var></code></dt>
  <dd><p>Specify the installation directory for internal executables of GCC.
! The default is <samp class="file"><var class="var">exec-prefix</var>/libexec</samp>.
  </p>
  </dd>
! <dt><code class="code">--with-slibdir=<var class="var">dirname</var></code></dt>
  <dd><p>Specify the installation directory for the shared libgcc library.  The
! default is <samp class="file"><var class="var">libdir</var></samp>.
  </p>
  </dd>
! <dt><code class="code">--datarootdir=<var class="var">dirname</var></code></dt>
  <dd><p>Specify the root of the directory tree for read-only architecture-independent
! data files referenced by GCC.  The default is <samp class="file"><var class="var">prefix</var>/share</samp>.
  </p>
  </dd>
! <dt><code class="code">--infodir=<var class="var">dirname</var></code></dt>
  <dd><p>Specify the installation directory for documentation in info format.
! The default is <samp class="file"><var class="var">datarootdir</var>/info</samp>.
  </p>
  </dd>
! <dt><code class="code">--datadir=<var class="var">dirname</var></code></dt>
  <dd><p>Specify the installation directory for some architecture-independent
! data files referenced by GCC.  The default is <samp class="file"><var class="var">datarootdir</var></samp>.
  </p>
  </dd>
! <dt><code class="code">--docdir=<var class="var">dirname</var></code></dt>
  <dd><p>Specify the installation directory for documentation files (other
! than Info) for GCC.  The default is <samp class="file"><var class="var">datarootdir</var>/doc</samp>.
  </p>
  </dd>
! <dt><code class="code">--htmldir=<var class="var">dirname</var></code></dt>
  <dd><p>Specify the installation directory for HTML documentation files.
! The default is <samp class="file"><var class="var">docdir</var></samp>.
  </p>
  </dd>
! <dt><code class="code">--pdfdir=<var class="var">dirname</var></code></dt>
  <dd><p>Specify the installation directory for PDF documentation files.
! The default is <samp class="file"><var class="var">docdir</var></samp>.
  </p>
  </dd>
! <dt><code class="code">--mandir=<var class="var">dirname</var></code></dt>
  <dd><p>Specify the installation directory for manual pages.  The default is
! <samp class="file"><var class="var">datarootdir</var>/man</samp>.  (Note that the manual pages are only extracts
  from the full GCC manuals, which are provided in Texinfo format.  The manpages
  are derived by an automatic conversion process from parts of the full
  manual.)
  </p>
  </dd>
! <dt><code class="code">--with-gxx-include-dir=<var class="var">dirname</var></code></dt>
  <dd><p>Specify
  the installation directory for G++ header files.  The default depends
  on other configuration options, and differs between cross and native
  configurations.
  </p>
  </dd>
! <dt><code class="code">--with-specs=<var class="var">specs</var></code></dt>
  <dd><p>Specify additional command line driver SPECS.
  This can be useful if you need to turn on a non-standard feature by
  default without modifying the compiler&rsquo;s source code, for instance
! <samp class="option">--with-specs=%{!fcommon:%{!fno-common:-fno-common}}</samp>.
  See &ldquo;Spec Files&rdquo; in the main manual
  </p>
  </dd>
  </dl>
  
  </dd>
! <dt><code class="code">--program-prefix=<var class="var">prefix</var></code></dt>
  <dd><p>GCC supports some transformations of the names of its programs when
! installing them.  This option prepends <var class="var">prefix</var> to the names of
! programs to install in <var class="var">bindir</var> (see above).  For example, specifying
! <samp class="option">--program-prefix=foo-</samp> would result in &lsquo;<samp class="samp">gcc</samp>&rsquo;
! being installed as <samp class="file">/usr/local/bin/foo-gcc</samp>.
  </p>
  </dd>
! <dt><code class="code">--program-suffix=<var class="var">suffix</var></code></dt>
! <dd><p>Appends <var class="var">suffix</var> to the names of programs to install in <var class="var">bindir</var>
! (see above).  For example, specifying <samp class="option">--program-suffix=-3.1</samp>
! would result in &lsquo;<samp class="samp">gcc</samp>&rsquo; being installed as
! <samp class="file">/usr/local/bin/gcc-3.1</samp>.
  </p>
  </dd>
! <dt><code class="code">--program-transform-name=<var class="var">pattern</var></code></dt>
! <dd><p>Applies the &lsquo;<samp class="samp">sed</samp>&rsquo; script <var class="var">pattern</var> to be applied to the names
! of programs to install in <var class="var">bindir</var> (see above).  <var class="var">pattern</var> has to
! consist of one or more basic &lsquo;<samp class="samp">sed</samp>&rsquo; editing commands, separated by
! semicolons.  For example, if you want the &lsquo;<samp class="samp">gcc</samp>&rsquo; program name to be
! transformed to the installed program <samp class="file">/usr/local/bin/myowngcc</samp> and
! the &lsquo;<samp class="samp">g++</samp>&rsquo; program name to be transformed to
! <samp class="file">/usr/local/bin/gspecial++</samp> without changing other program names,
  you could use the pattern
! <samp class="option">--program-transform-name='s/^gcc$/myowngcc/; s/^g++$/gspecial++/'</samp>
  to achieve this effect.
  </p>
  <p>All three options can be combined and used together, resulting in more
! complex conversion patterns.  As a basic rule, <var class="var">prefix</var> (and
! <var class="var">suffix</var>) are prepended (appended) before further transformations
! can happen with a special transformation script <var class="var">pattern</var>.
  </p>
  <p>As currently implemented, this option only takes effect for native
  builds; cross compiler binaries&rsquo; names are not transformed even when a
*************** transformation is explicitly asked for b
*** 391,428 ****
  </p>
  <p>For native builds, some of the installed programs are also installed
  with the target alias in front of their name, as in
! &lsquo;<samp>i686-pc-linux-gnu-gcc</samp>&rsquo;.  All of the above transformations happen
  before the target alias is prepended to the name&mdash;so, specifying
! <samp>--program-prefix=foo-</samp> and <samp>program-suffix=-3.1</samp>, the
  resulting binary would be installed as
! <samp>/usr/local/bin/i686-pc-linux-gnu-foo-gcc-3.1</samp>.
  </p>
  <p>As a last shortcoming, none of the installed Ada programs are
  transformed yet, which will be fixed in some time.
  </p>
  </dd>
! <dt><code>--with-local-prefix=<var>dirname</var></code></dt>
  <dd><p>Specify the
  installation directory for local include files.  The default is
! <samp>/usr/local</samp>.  Specify this option if you want the compiler to
! search directory <samp><var>dirname</var>/include</samp> for locally installed
! header files <em>instead</em> of <samp>/usr/local/include</samp>.
  </p>
! <p>You should specify <samp>--with-local-prefix</samp> <strong>only</strong> if your
! site has a different convention (not <samp>/usr/local</samp>) for where to put
  site-specific files.
  </p>
! <p>The default value for <samp>--with-local-prefix</samp> is <samp>/usr/local</samp>
! regardless of the value of <samp>--prefix</samp>.  Specifying
! <samp>--prefix</samp> has no effect on which directory GCC searches for
  local header files.  This may seem counterintuitive, but actually it is
  logical.
  </p>
! <p>The purpose of <samp>--prefix</samp> is to specify where to <em>install
! GCC</em>.  The local header files in <samp>/usr/local/include</samp>&mdash;if you put
  any in that directory&mdash;are not part of GCC.  They are part of other
  programs&mdash;perhaps many others.  (GCC installs its own header files in
! another directory which is based on the <samp>--prefix</samp> value.)
  </p>
  <p>Both the local-prefix include directory and the GCC-prefix include
  directory are part of GCC&rsquo;s &ldquo;system include&rdquo; directories.  Although these
--- 371,408 ----
  </p>
  <p>For native builds, some of the installed programs are also installed
  with the target alias in front of their name, as in
! &lsquo;<samp class="samp">i686-pc-linux-gnu-gcc</samp>&rsquo;.  All of the above transformations happen
  before the target alias is prepended to the name&mdash;so, specifying
! <samp class="option">--program-prefix=foo-</samp> and <samp class="option">program-suffix=-3.1</samp>, the
  resulting binary would be installed as
! <samp class="file">/usr/local/bin/i686-pc-linux-gnu-foo-gcc-3.1</samp>.
  </p>
  <p>As a last shortcoming, none of the installed Ada programs are
  transformed yet, which will be fixed in some time.
  </p>
  </dd>
! <dt><code class="code">--with-local-prefix=<var class="var">dirname</var></code></dt>
  <dd><p>Specify the
  installation directory for local include files.  The default is
! <samp class="file">/usr/local</samp>.  Specify this option if you want the compiler to
! search directory <samp class="file"><var class="var">dirname</var>/include</samp> for locally installed
! header files <em class="emph">instead</em> of <samp class="file">/usr/local/include</samp>.
  </p>
! <p>You should specify <samp class="option">--with-local-prefix</samp> <strong class="strong">only</strong> if your
! site has a different convention (not <samp class="file">/usr/local</samp>) for where to put
  site-specific files.
  </p>
! <p>The default value for <samp class="option">--with-local-prefix</samp> is <samp class="file">/usr/local</samp>
! regardless of the value of <samp class="option">--prefix</samp>.  Specifying
! <samp class="option">--prefix</samp> has no effect on which directory GCC searches for
  local header files.  This may seem counterintuitive, but actually it is
  logical.
  </p>
! <p>The purpose of <samp class="option">--prefix</samp> is to specify where to <em class="emph">install
! GCC</em>.  The local header files in <samp class="file">/usr/local/include</samp>&mdash;if you put
  any in that directory&mdash;are not part of GCC.  They are part of other
  programs&mdash;perhaps many others.  (GCC installs its own header files in
! another directory which is based on the <samp class="option">--prefix</samp> value.)
  </p>
  <p>Both the local-prefix include directory and the GCC-prefix include
  directory are part of GCC&rsquo;s &ldquo;system include&rdquo; directories.  Although these
*************** local-prefix include directory is search
*** 432,472 ****
  include directory.  Another characteristic of system include directories
  is that pedantic warnings are turned off for headers in these directories.
  </p>
! <p>Some autoconf macros add <samp>-I <var>directory</var></samp> options to the
  compiler command line, to ensure that directories containing installed
! packages&rsquo; headers are searched.  When <var>directory</var> is one of GCC&rsquo;s
  system include directories, GCC will ignore the option so that system
  directories continue to be processed in the correct order.  This
  may result in a search order different from what was specified but the
  directory will still be searched.
  </p>
  <p>GCC automatically searches for ordinary libraries using
! <code>GCC_EXEC_PREFIX</code>.  Thus, when the same installation prefix is
  used for both GCC and packages, GCC will automatically search for
  both headers and libraries.  This provides a configuration that is
  easy to use.  GCC behaves in a manner similar to that when it is
! installed as a system compiler in <samp>/usr</samp>.
  </p>
  <p>Sites that need to install multiple versions of GCC may not want to
  use the above simple configuration.  It is possible to use the
! <samp>--program-prefix</samp>, <samp>--program-suffix</samp> and
! <samp>--program-transform-name</samp> options to install multiple versions
  into a single directory, but it may be simpler to use different prefixes
! and the <samp>--with-local-prefix</samp> option to specify the location of the
  site-specific files for each version.  It will then be necessary for
  users to specify explicitly the location of local site libraries
! (e.g., with <code>LIBRARY_PATH</code>).
  </p>
! <p>The same value can be used for both <samp>--with-local-prefix</samp> and
! <samp>--prefix</samp> provided it is not <samp>/usr</samp>.  This can be used
! to avoid the default search of <samp>/usr/local/include</samp>.
  </p>
! <p><strong>Do not</strong> specify <samp>/usr</samp> as the <samp>--with-local-prefix</samp>!
! The directory you use for <samp>--with-local-prefix</samp> <strong>must not</strong>
  contain any of the system&rsquo;s standard header files.  If it did contain
  them, certain programs would be miscompiled (including GNU Emacs, on
  certain targets), because this would override and nullify the header
! file corrections made by the <code>fixincludes</code> script.
  </p>
  <p>Indications are that people who use this option use it based on mistaken
  ideas of what it is for.  People use it as if it specified where to
--- 412,452 ----
  include directory.  Another characteristic of system include directories
  is that pedantic warnings are turned off for headers in these directories.
  </p>
! <p>Some autoconf macros add <samp class="option">-I <var class="var">directory</var></samp> options to the
  compiler command line, to ensure that directories containing installed
! packages&rsquo; headers are searched.  When <var class="var">directory</var> is one of GCC&rsquo;s
  system include directories, GCC will ignore the option so that system
  directories continue to be processed in the correct order.  This
  may result in a search order different from what was specified but the
  directory will still be searched.
  </p>
  <p>GCC automatically searches for ordinary libraries using
! <code class="env">GCC_EXEC_PREFIX</code>.  Thus, when the same installation prefix is
  used for both GCC and packages, GCC will automatically search for
  both headers and libraries.  This provides a configuration that is
  easy to use.  GCC behaves in a manner similar to that when it is
! installed as a system compiler in <samp class="file">/usr</samp>.
  </p>
  <p>Sites that need to install multiple versions of GCC may not want to
  use the above simple configuration.  It is possible to use the
! <samp class="option">--program-prefix</samp>, <samp class="option">--program-suffix</samp> and
! <samp class="option">--program-transform-name</samp> options to install multiple versions
  into a single directory, but it may be simpler to use different prefixes
! and the <samp class="option">--with-local-prefix</samp> option to specify the location of the
  site-specific files for each version.  It will then be necessary for
  users to specify explicitly the location of local site libraries
! (e.g., with <code class="env">LIBRARY_PATH</code>).
  </p>
! <p>The same value can be used for both <samp class="option">--with-local-prefix</samp> and
! <samp class="option">--prefix</samp> provided it is not <samp class="file">/usr</samp>.  This can be used
! to avoid the default search of <samp class="file">/usr/local/include</samp>.
  </p>
! <p><strong class="strong">Do not</strong> specify <samp class="file">/usr</samp> as the <samp class="option">--with-local-prefix</samp>!
! The directory you use for <samp class="option">--with-local-prefix</samp> <strong class="strong">must not</strong>
  contain any of the system&rsquo;s standard header files.  If it did contain
  them, certain programs would be miscompiled (including GNU Emacs, on
  certain targets), because this would override and nullify the header
! file corrections made by the <code class="command">fixincludes</code> script.
  </p>
  <p>Indications are that people who use this option use it based on mistaken
  ideas of what it is for.  People use it as if it specified where to
*************** install part of GCC.  Perhaps they make
*** 474,494 ****
  installing GCC creates the directory.
  </p>
  </dd>
! <dt><code>--with-gcc-major-version-only</code></dt>
  <dd><p>Specifies that GCC should use only the major number rather than
! <var>major</var>.<var>minor</var>.<var>patchlevel</var> in filesystem paths.
  </p>
  </dd>
! <dt><code>--with-native-system-header-dir=<var>dirname</var></code></dt>
! <dd><p>Specifies that <var>dirname</var> is the directory that contains native system
! header files, rather than <samp>/usr/include</samp>.  This option is most useful
  if you are creating a compiler that should be isolated from the system
  as much as possible.  It is most commonly used with the
! <samp>--with-sysroot</samp> option and will cause GCC to search
! <var>dirname</var> inside the system root specified by that option.
  </p>
  </dd>
! <dt><code>--enable-shared[=<var>package</var>[,&hellip;]]</code></dt>
  <dd><p>Build shared versions of libraries, if shared libraries are supported on
  the target platform.  Unlike GCC 2.95.x and earlier, shared libraries
  are enabled by default on all platforms that support shared libraries.
--- 454,474 ----
  installing GCC creates the directory.
  </p>
  </dd>
! <dt><code class="code">--with-gcc-major-version-only</code></dt>
  <dd><p>Specifies that GCC should use only the major number rather than
! <var class="var">major</var>.<var class="var">minor</var>.<var class="var">patchlevel</var> in filesystem paths.
  </p>
  </dd>
! <dt><code class="code">--with-native-system-header-dir=<var class="var">dirname</var></code></dt>
! <dd><p>Specifies that <var class="var">dirname</var> is the directory that contains native system
! header files, rather than <samp class="file">/usr/include</samp>.  This option is most useful
  if you are creating a compiler that should be isolated from the system
  as much as possible.  It is most commonly used with the
! <samp class="option">--with-sysroot</samp> option and will cause GCC to search
! <var class="var">dirname</var> inside the system root specified by that option.
  </p>
  </dd>
! <dt><code class="code">--enable-shared[=<var class="var">package</var>[,&hellip;]]</code></dt>
  <dd><p>Build shared versions of libraries, if shared libraries are supported on
  the target platform.  Unlike GCC 2.95.x and earlier, shared libraries
  are enabled by default on all platforms that support shared libraries.
*************** are enabled by default on all platforms
*** 496,645 ****
  <p>If a list of packages is given as an argument, build shared libraries
  only for the listed packages.  For other packages, only static libraries
  will be built.  Package names currently recognized in the GCC tree are
! &lsquo;<samp>libgcc</samp>&rsquo; (also known as &lsquo;<samp>gcc</samp>&rsquo;), &lsquo;<samp>libstdc++</samp>&rsquo; (not
! &lsquo;<samp>libstdc++-v3</samp>&rsquo;), &lsquo;<samp>libffi</samp>&rsquo;, &lsquo;<samp>zlib</samp>&rsquo;, &lsquo;<samp>boehm-gc</samp>&rsquo;,
! &lsquo;<samp>ada</samp>&rsquo;, &lsquo;<samp>libada</samp>&rsquo;, &lsquo;<samp>libgo</samp>&rsquo;, &lsquo;<samp>libobjc</samp>&rsquo;, and &lsquo;<samp>libphobos</samp>&rsquo;.
! Note &lsquo;<samp>libiberty</samp>&rsquo; does not support shared libraries at all.
  </p>
! <p>Use <samp>--disable-shared</samp> to build only static libraries.  Note that
! <samp>--disable-shared</samp> does not accept a list of package names as
! argument, only <samp>--enable-shared</samp> does.
  </p>
! <p>Contrast with <samp>--enable-host-shared</samp>, which affects <em>host</em>
  code.
  </p>
  </dd>
! <dt><code>--enable-host-shared</code></dt>
! <dd><p>Specify that the <em>host</em> code should be built into position-independent
! machine code (with <samp>-fPIC</samp>), allowing it to be used within shared
  libraries, but yielding a slightly slower compiler.
  </p>
  <p>This option is required when building the libgccjit.so library.
  </p>
! <p>Contrast with <samp>--enable-shared</samp>, which affects <em>target</em>
  libraries.
  </p>
  </dd>
! <dt><code>--enable-versioned-jit</code></dt>
! <dd><p>Specify that the &lsquo;<samp>libgccjit</samp>&rsquo; library is built with a soname matching
  the GCC major version.
  </p>
  </dd>
! <dt><code>--enable-host-pie</code></dt>
! <dd><p>Specify that the <em>host</em> executables should be built into
! position-independent executables (with <samp>-fPIE</samp> and <samp>-pie</samp>),
  yielding a slightly slower compiler (but faster than
! <samp>--enable-host-shared</samp>).  Position-independent executables are loaded
  at random addresses each time they are executed, therefore provide additional
  protection against Return Oriented Programming (ROP) attacks.
  </p>
! <p><samp>--enable-host-pie</samp> may be used with <samp>--enable-host-shared</samp>,
! in which case <samp>-fPIC</samp> is used when compiling, and <samp>-pie</samp> when
  linking.
  </p>
  </dd>
! <dt><code>--enable-host-bind-now</code></dt>
! <dd><p>Specify that the <em>host</em> executables should be linked with the option
! <samp>-Wl,-z,now</samp>, which means that the dynamic linker will resolve all
  symbols when the executables are started, and that in turn allows RELRO to
  mark the GOT read-only, resulting in better security.
  </p>
  </dd>
! <dt><code><a name="with-gnu-as"></a>--with-gnu-as</code></dt>
  <dd><p>Specify that the compiler should assume that the
  assembler it finds is the GNU assembler.  However, this does not modify
  the rules to find an assembler and will result in confusion if the
  assembler found is not actually the GNU assembler.  (Confusion may also
  result if the compiler finds the GNU assembler but has not been
! configured with <samp>--with-gnu-as</samp>.)  If you have more than one
  assembler installed on your system, you may want to use this option in
! connection with <samp>--with-as=<var>pathname</var></samp> or
! <samp>--with-build-time-tools=<var>pathname</var></samp>.
  </p>
  <p>The following systems are the only ones where it makes a difference
  whether you use the GNU assembler.  On any other system,
! <samp>--with-gnu-as</samp> has no effect.
  </p>
! <ul>
! <li> &lsquo;<samp>hppa*-<var>any</var>-<var>any</var></samp>&rsquo;
! </li><li> &lsquo;<samp>*-*-solaris2.11</samp>&rsquo;
  </li></ul>
  
  </dd>
! <dt><code><a name="with-as"></a>--with-as=<var>pathname</var></code></dt>
  <dd><p>Specify that the compiler should use the assembler pointed to by
! <var>pathname</var>, rather than the one found by the standard rules to find
  an assembler, which are:
! </p><ul>
! <li> Unless GCC is being built with a cross compiler, check the
! <samp><var>libexec</var>/gcc/<var>target</var>/<var>version</var></samp> directory.
! <var>libexec</var> defaults to <samp><var>exec-prefix</var>/libexec</samp>;
! <var>exec-prefix</var> defaults to <var>prefix</var>, which
! defaults to <samp>/usr/local</samp> unless overridden by the
! <samp>--prefix=<var>pathname</var></samp> switch described above.  <var>target</var>
! is the target system triple, such as &lsquo;<samp>sparc-sun-solaris2.11</samp>&rsquo;, and
! <var>version</var> denotes the GCC version, such as 3.0.
  
! </li><li> If the target system is the same that you are building on, check
  operating system specific directories.
  
! </li><li> Check in the <code>PATH</code> for a tool whose name is prefixed by the
  target system triple.
  
! </li><li> Check in the <code>PATH</code> for a tool whose name is not prefixed by the
  target system triple, if the host and target system triple are
  the same (in other words, we use a host tool if it can be used for
  the target as well).
  </li></ul>
  
! <p>You may want to use <samp>--with-as</samp> if no assembler
  is installed in the directories listed above, or if you have multiple
  assemblers installed and want to choose one that is not found by the
  above rules.
  </p>
  </dd>
! <dt><code><a name="with-gnu-ld"></a>--with-gnu-ld</code></dt>
! <dd><p>Same as <a href="#with-gnu-as"><samp>--with-gnu-as</samp></a>
  but for the linker.
  </p>
  </dd>
! <dt><code>--with-ld=<var>pathname</var></code></dt>
! <dd><p>Same as <a href="#with-as"><samp>--with-as</samp></a>
  but for the linker.
  </p>
  </dd>
! <dt><code>--with-dsymutil=<var>pathname</var></code></dt>
! <dd><p>Same as <a href="#with-as"><samp>--with-as</samp></a>
  but for the debug linker (only used on Darwin platforms so far).
  </p>
  </dd>
! <dt><code>--with-tls=<var>dialect</var></code></dt>
! <dd><p>Specify the default TLS dialect, for systems were there is a choice.
! For ARM targets, possible values for <var>dialect</var> are <code>gnu</code> or
! <code>gnu2</code>, which select between the original GNU dialect and the GNU TLS
  descriptor-based dialect.
! For RISC-V targets, possible values for <var>dialect</var> are <code>trad</code> or
! <code>desc</code>, which select between the traditional GNU dialect and the GNU TLS
  descriptor-based dialect.
  </p>
  </dd>
! <dt><code>--enable-multiarch</code></dt>
  <dd><p>Specify whether to enable or disable multiarch support.  The default is
  to check for glibc start files in a multiarch location, and enable it
  if the files are found.  The auto detection is enabled for native builds,
! and for cross builds configured with <samp>--with-sysroot</samp>, and without
! <samp>--with-native-system-header-dir</samp>.
  More documentation about multiarch can be found at
! <a href="https://wiki.debian.org/Multiarch">https://wiki.debian.org/Multiarch</a>.
  </p>
  </dd>
! <dt><code>--enable-sjlj-exceptions</code></dt>
! <dd><p>Force use of the <code>setjmp</code>/<code>longjmp</code>-based scheme for exceptions.
! &lsquo;<samp>configure</samp>&rsquo; ordinarily picks the correct value based on the platform.
  Only use this option if you are sure you need a different setting.
  </p>
  </dd>
! <dt><code>--enable-vtable-verify</code></dt>
  <dd><p>Specify whether to enable or disable the vtable verification feature.
  Enabling this feature causes libstdc++ to be built with its virtual calls
  in verifiable mode.  This means that, when linked with libvtv, every
--- 476,625 ----
  <p>If a list of packages is given as an argument, build shared libraries
  only for the listed packages.  For other packages, only static libraries
  will be built.  Package names currently recognized in the GCC tree are
! &lsquo;<samp class="samp">libgcc</samp>&rsquo; (also known as &lsquo;<samp class="samp">gcc</samp>&rsquo;), &lsquo;<samp class="samp">libstdc++</samp>&rsquo; (not
! &lsquo;<samp class="samp">libstdc++-v3</samp>&rsquo;), &lsquo;<samp class="samp">libffi</samp>&rsquo;, &lsquo;<samp class="samp">zlib</samp>&rsquo;, &lsquo;<samp class="samp">boehm-gc</samp>&rsquo;,
! &lsquo;<samp class="samp">ada</samp>&rsquo;, &lsquo;<samp class="samp">libada</samp>&rsquo;, &lsquo;<samp class="samp">libgo</samp>&rsquo;, &lsquo;<samp class="samp">libobjc</samp>&rsquo;, and &lsquo;<samp class="samp">libphobos</samp>&rsquo;.
! Note &lsquo;<samp class="samp">libiberty</samp>&rsquo; does not support shared libraries at all.
  </p>
! <p>Use <samp class="option">--disable-shared</samp> to build only static libraries.  Note that
! <samp class="option">--disable-shared</samp> does not accept a list of package names as
! argument, only <samp class="option">--enable-shared</samp> does.
  </p>
! <p>Contrast with <samp class="option">--enable-host-shared</samp>, which affects <em class="emph">host</em>
  code.
  </p>
  </dd>
! <dt><code class="code">--enable-host-shared</code></dt>
! <dd><p>Specify that the <em class="emph">host</em> code should be built into position-independent
! machine code (with <samp class="option">-fPIC</samp>), allowing it to be used within shared
  libraries, but yielding a slightly slower compiler.
  </p>
  <p>This option is required when building the libgccjit.so library.
  </p>
! <p>Contrast with <samp class="option">--enable-shared</samp>, which affects <em class="emph">target</em>
  libraries.
  </p>
  </dd>
! <dt><code class="code">--enable-versioned-jit</code></dt>
! <dd><p>Specify that the &lsquo;<samp class="samp">libgccjit</samp>&rsquo; library is built with a soname matching
  the GCC major version.
  </p>
  </dd>
! <dt><code class="code">--enable-host-pie</code></dt>
! <dd><p>Specify that the <em class="emph">host</em> executables should be built into
! position-independent executables (with <samp class="option">-fPIE</samp> and <samp class="option">-pie</samp>),
  yielding a slightly slower compiler (but faster than
! <samp class="option">--enable-host-shared</samp>).  Position-independent executables are loaded
  at random addresses each time they are executed, therefore provide additional
  protection against Return Oriented Programming (ROP) attacks.
  </p>
! <p><samp class="option">--enable-host-pie</samp> may be used with <samp class="option">--enable-host-shared</samp>,
! in which case <samp class="option">-fPIC</samp> is used when compiling, and <samp class="option">-pie</samp> when
  linking.
  </p>
  </dd>
! <dt><code class="code">--enable-host-bind-now</code></dt>
! <dd><p>Specify that the <em class="emph">host</em> executables should be linked with the option
! <samp class="option">-Wl,-z,now</samp>, which means that the dynamic linker will resolve all
  symbols when the executables are started, and that in turn allows RELRO to
  mark the GOT read-only, resulting in better security.
  </p>
  </dd>
! <dt><code class="code"><a class="anchor" id="with-gnu-as"></a>--with-gnu-as</code></dt>
  <dd><p>Specify that the compiler should assume that the
  assembler it finds is the GNU assembler.  However, this does not modify
  the rules to find an assembler and will result in confusion if the
  assembler found is not actually the GNU assembler.  (Confusion may also
  result if the compiler finds the GNU assembler but has not been
! configured with <samp class="option">--with-gnu-as</samp>.)  If you have more than one
  assembler installed on your system, you may want to use this option in
! connection with <samp class="option">--with-as=<var class="var">pathname</var></samp> or
! <samp class="option">--with-build-time-tools=<var class="var">pathname</var></samp>.
  </p>
  <p>The following systems are the only ones where it makes a difference
  whether you use the GNU assembler.  On any other system,
! <samp class="option">--with-gnu-as</samp> has no effect.
  </p>
! <ul class="itemize mark-bullet">
! <li>&lsquo;<samp class="samp">hppa*-<var class="var">any</var>-<var class="var">any</var></samp>&rsquo;
! </li><li>&lsquo;<samp class="samp">*-*-solaris2.11</samp>&rsquo;
  </li></ul>
  
  </dd>
! <dt><code class="code"><a class="anchor" id="with-as"></a>--with-as=<var class="var">pathname</var></code></dt>
  <dd><p>Specify that the compiler should use the assembler pointed to by
! <var class="var">pathname</var>, rather than the one found by the standard rules to find
  an assembler, which are:
! </p><ul class="itemize mark-bullet">
! <li>Unless GCC is being built with a cross compiler, check the
! <samp class="file"><var class="var">libexec</var>/gcc/<var class="var">target</var>/<var class="var">version</var></samp> directory.
! <var class="var">libexec</var> defaults to <samp class="file"><var class="var">exec-prefix</var>/libexec</samp>;
! <var class="var">exec-prefix</var> defaults to <var class="var">prefix</var>, which
! defaults to <samp class="file">/usr/local</samp> unless overridden by the
! <samp class="option">--prefix=<var class="var">pathname</var></samp> switch described above.  <var class="var">target</var>
! is the target system triple, such as &lsquo;<samp class="samp">sparc-sun-solaris2.11</samp>&rsquo;, and
! <var class="var">version</var> denotes the GCC version, such as 3.0.
  
! </li><li>If the target system is the same that you are building on, check
  operating system specific directories.
  
! </li><li>Check in the <code class="env">PATH</code> for a tool whose name is prefixed by the
  target system triple.
  
! </li><li>Check in the <code class="env">PATH</code> for a tool whose name is not prefixed by the
  target system triple, if the host and target system triple are
  the same (in other words, we use a host tool if it can be used for
  the target as well).
  </li></ul>
  
! <p>You may want to use <samp class="option">--with-as</samp> if no assembler
  is installed in the directories listed above, or if you have multiple
  assemblers installed and want to choose one that is not found by the
  above rules.
  </p>
  </dd>
! <dt><code class="code"><a class="anchor" id="with-gnu-ld"></a>--with-gnu-ld</code></dt>
! <dd><p>Same as <a class="uref" href="#with-gnu-as"><samp class="option">--with-gnu-as</samp></a>
  but for the linker.
  </p>
  </dd>
! <dt><code class="code">--with-ld=<var class="var">pathname</var></code></dt>
! <dd><p>Same as <a class="uref" href="#with-as"><samp class="option">--with-as</samp></a>
  but for the linker.
  </p>
  </dd>
! <dt><code class="code">--with-dsymutil=<var class="var">pathname</var></code></dt>
! <dd><p>Same as <a class="uref" href="#with-as"><samp class="option">--with-as</samp></a>
  but for the debug linker (only used on Darwin platforms so far).
  </p>
  </dd>
! <dt><code class="code">--with-tls=<var class="var">dialect</var></code></dt>
! <dd><p>Specify the default TLS dialect, for systems where there is a choice.
! For ARM targets, possible values for <var class="var">dialect</var> are <code class="code">gnu</code> or
! <code class="code">gnu2</code>, which select between the original GNU dialect and the GNU TLS
  descriptor-based dialect.
! For RISC-V targets, possible values for <var class="var">dialect</var> are <code class="code">trad</code> or
! <code class="code">desc</code>, which select between the traditional GNU dialect and the GNU TLS
  descriptor-based dialect.
  </p>
  </dd>
! <dt><code class="code">--enable-multiarch</code></dt>
  <dd><p>Specify whether to enable or disable multiarch support.  The default is
  to check for glibc start files in a multiarch location, and enable it
  if the files are found.  The auto detection is enabled for native builds,
! and for cross builds configured with <samp class="option">--with-sysroot</samp>, and without
! <samp class="option">--with-native-system-header-dir</samp>.
  More documentation about multiarch can be found at
! <a class="uref" href="https://wiki.debian.org/Multiarch">https://wiki.debian.org/Multiarch</a>.
  </p>
  </dd>
! <dt><code class="code">--enable-sjlj-exceptions</code></dt>
! <dd><p>Force use of the <code class="code">setjmp</code>/<code class="code">longjmp</code>-based scheme for exceptions.
! &lsquo;<samp class="samp">configure</samp>&rsquo; ordinarily picks the correct value based on the platform.
  Only use this option if you are sure you need a different setting.
  </p>
  </dd>
! <dt><code class="code">--enable-vtable-verify</code></dt>
  <dd><p>Specify whether to enable or disable the vtable verification feature.
  Enabling this feature causes libstdc++ to be built with its virtual calls
  in verifiable mode.  This means that, when linked with libvtv, every
*************** call will be made before actually making
*** 648,702 ****
  the verifier will call stub functions (in libstdc++ itself) and do nothing.
  If vtable verification is disabled, then libstdc++ is not built with its
  virtual calls in verifiable mode at all.  However the libvtv library will
! still be built (see <samp>--disable-libvtv</samp> to turn off building libvtv).
! <samp>--disable-vtable-verify</samp> is the default.
  </p>
  </dd>
! <dt><code>--enable-libgdiagnostics</code></dt>
! <dd><p>Specify whether to build <code>libgdiagnostics</code>, a shared library exposing
  GCC&rsquo;s diagnostics capabilities via a C API, and a C++ wrapper API adding
  &ldquo;syntactic sugar&rdquo;.
  </p>
! <p>This option requires <samp>--enable-host-shared</samp> on non-Windows hosts.
  </p>
! <p>This option also enables <code>sarif-replay</code>, a command-line tool for
! viewing <a href="https://sarif.info/">SARIF files</a>.  <code>sarif-replay</code> takes
! one or more <code>.sarif</code> files as input and attempts to replay any
! diagnostics within them to stderr (via <code>libgdiagnostics</code>) in the style
  of GCC&rsquo;s diagnostics.
  </p>
  </dd>
! <dt><code>--disable-gcov</code></dt>
  <dd><p>Specify that the run-time library used for coverage analysis
  and associated host tools should not be built.
  </p>
  </dd>
! <dt><code>--disable-multilib</code></dt>
  <dd><p>Specify that multiple target
  libraries to support different target variants, calling
  conventions, etc. should not be built.  The default is to build a
  predefined set of them.
  </p>
  <p>Some targets provide finer-grained control over which multilibs are built
! (e.g., <samp>--disable-softfloat</samp>):
! </p><dl compact="compact">
! <dt><code>arm-*-*</code></dt>
  <dd><p>fpu, 26bit, underscore, interwork, biendian, nofmult.
  </p>
  </dd>
! <dt><code>m68*-*-*</code></dt>
  <dd><p>softfloat, m68881, m68000, m68020.
  </p>
  </dd>
! <dt><code>mips*-*-*</code></dt>
  <dd><p>single-float, biendian, softfloat.
  </p>
  </dd>
! <dt><code>msp430-*-*</code></dt>
  <dd><p>no-exceptions
  </p>
  </dd>
! <dt><code>powerpc*-*-*, rs6000*-*-*</code></dt>
  <dd><p>aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos, biendian,
  sysv, aix.
  </p>
--- 628,682 ----
  the verifier will call stub functions (in libstdc++ itself) and do nothing.
  If vtable verification is disabled, then libstdc++ is not built with its
  virtual calls in verifiable mode at all.  However the libvtv library will
! still be built (see <samp class="option">--disable-libvtv</samp> to turn off building libvtv).
! <samp class="option">--disable-vtable-verify</samp> is the default.
  </p>
  </dd>
! <dt><code class="code">--enable-libgdiagnostics</code></dt>
! <dd><p>Specify whether to build <code class="code">libgdiagnostics</code>, a shared library exposing
  GCC&rsquo;s diagnostics capabilities via a C API, and a C++ wrapper API adding
  &ldquo;syntactic sugar&rdquo;.
  </p>
! <p>This option requires <samp class="option">--enable-host-shared</samp> on non-Windows hosts.
  </p>
! <p>This option also enables <code class="code">sarif-replay</code>, a command-line tool for
! viewing <a class="uref" href="https://sarif.info/">SARIF files</a>.  <code class="code">sarif-replay</code> takes
! one or more <code class="code">.sarif</code> files as input and attempts to replay any
! diagnostics within them to stderr (via <code class="code">libgdiagnostics</code>) in the style
  of GCC&rsquo;s diagnostics.
  </p>
  </dd>
! <dt><code class="code">--disable-gcov</code></dt>
  <dd><p>Specify that the run-time library used for coverage analysis
  and associated host tools should not be built.
  </p>
  </dd>
! <dt><code class="code">--disable-multilib</code></dt>
  <dd><p>Specify that multiple target
  libraries to support different target variants, calling
  conventions, etc. should not be built.  The default is to build a
  predefined set of them.
  </p>
  <p>Some targets provide finer-grained control over which multilibs are built
! (e.g., <samp class="option">--disable-softfloat</samp>):
! </p><dl class="table">
! <dt><code class="code">arm-*-*</code></dt>
  <dd><p>fpu, 26bit, underscore, interwork, biendian, nofmult.
  </p>
  </dd>
! <dt><code class="code">m68*-*-*</code></dt>
  <dd><p>softfloat, m68881, m68000, m68020.
  </p>
  </dd>
! <dt><code class="code">mips*-*-*</code></dt>
  <dd><p>single-float, biendian, softfloat.
  </p>
  </dd>
! <dt><code class="code">msp430-*-*</code></dt>
  <dd><p>no-exceptions
  </p>
  </dd>
! <dt><code class="code">powerpc*-*-*, rs6000*-*-*</code></dt>
  <dd><p>aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos, biendian,
  sysv, aix.
  </p>
*************** sysv, aix.
*** 704,927 ****
  </dl>
  
  </dd>
! <dt><code><a name="with-multilib-list"></a>--with-multilib-list=<var>list</var></code></dt>
! <dt><code>--without-multilib-list</code></dt>
! <dd><p>Specify what multilibs to build.  <var>list</var> is a comma separated list of
  values, possibly consisting of a single value.  Currently only implemented
  for aarch64*-*-*, amdgcn*-*-*, arm*-*-*, loongarch*-*-*, nvptx-*, riscv*-*-*,
  sh*-*-* and x86-64-*-linux*.
  The accepted values and meaning for each target is given below.
  </p>
! <dl compact="compact">
! <dt><code>aarch64*-*-*</code></dt>
! <dd><p><var>list</var> is a comma separated list of <code>ilp32</code>, and <code>lp64</code>
  to enable ILP32 and LP64 run-time libraries, respectively.  If
! <var>list</var> is empty, then there will be no multilibs and only the
! default run-time library will be built.  If <var>list</var> is
! <code>default</code> or &ndash;with-multilib-list= is not specified, then the
  default set of libraries is selected based on the value of
! <samp>--target</samp>.
  </p>
  </dd>
! <dt><code>amdgcn*-*-*</code></dt>
! <dd><p><var>list</var> is a comma separated list of ISA names (allowed values:
! <code>gfx900</code>, <code>gfx902</code>, <code>gfx904</code>, <code>gfx906</code>, <code>gfx908</code>,
! <code>gfx909</code>, <code>gfx90a</code>, <code>gfx90c</code>, <code>gfx9-generic</code>,
! <code>gfx1030</code>, <code>gfx1031</code>, <code>gfx1032</code>, <code>gfx1033</code>,
! <code>gfx1034</code>, <code>gfx1035</code>, <code>gfx1036</code>, <code>gfx10-3-generic</code>,
! <code>gfx1100</code>, <code>gfx1101</code>, <code>gfx1102</code>, <code>gfx1103</code>,
! <code>gfx1150</code>, <code>gfx1151</code>, <code>gfx1152</code>, <code>gfx1153</code>,
! <code>gfx11-generic</code>).  It ought not include the name of the default
! ISA, specified via <samp>--with-arch</samp>.  If <var>list</var> is empty, then there
  will be no multilibs and only the default run-time library will be built.  If
! <var>list</var> is <code>default</code> or <samp>--with-multilib-list=</samp> is not
  specified, then the default set of libraries is selected.
  </p>
  </dd>
! <dt><code>arm*-*-*</code></dt>
! <dd><p><var>list</var> is a comma separated list of <code>aprofile</code> and
! <code>rmprofile</code> to build multilibs for A or R and M architecture
  profiles respectively.  Note that, due to some limitation of the current
! multilib framework, using the combined <code>aprofile,rmprofile</code>
  multilibs selects in some cases a less optimal multilib than when using
  the multilib profile for the architecture targetted.  The special value
! <code>default</code> is also accepted and is equivalent to omitting the
  option, i.e., only the default run-time library will be enabled.
  </p>
! <p><var>list</var> may instead contain <code>@name</code>, to use the multilib
! configuration Makefile fragment <samp>name</samp> in <samp>gcc/config/arm</samp> in
  the source tree (it is part of the corresponding sources, after all).
  It is recommended, but not required, that files used for this purpose to
! be named starting with <samp>t-ml-</samp>, to make their intended purpose
  self-evident, in line with GCC conventions.  Such files enable custom,
  user-chosen multilib lists to be configured.  Whether multiple such
  files can be used together depends on the contents of the supplied
! files.  See <samp>gcc/config/arm/t-multilib</samp> and its supplementary
! <samp>gcc/config/arm/t-*profile</samp> files for an example of what such
  Makefile fragments might look like for this version of GCC.  The macros
  expected to be defined in these fragments are not stable across GCC
! releases, so make sure they define the <code>MULTILIB</code>-related macros
  expected by the version of GCC you are building.
  See &ldquo;Target Makefile Fragments&rdquo; in the internals manual.
  </p>
  <p>The table below gives the combination of ISAs, architectures, FPUs and
  floating-point ABIs for which multilibs are built for each predefined
  profile.  The union of these options is considered when specifying both
! <code>aprofile</code> and <code>rmprofile</code>.
  </p>
! <table>
! <tr><td width="15%">Option</td><td width="28%">aprofile</td><td width="30%">rmprofile</td></tr>
! <tr><td width="15%">ISAs</td><td width="28%"><code>-marm</code> and <code>-mthumb</code></td><td width="30%"><code>-mthumb</code></td></tr>
  <tr><td width="15%">Architectures<br><br><br><br><br><br></td><td width="28%">default architecture<br>
! <code>-march=armv7-a</code><br>
! <code>-march=armv7ve</code><br>
! <code>-march=armv8-a</code><br><br><br></td><td width="30%">default architecture<br>
! <code>-march=armv6s-m</code><br>
! <code>-march=armv7-m</code><br>
! <code>-march=armv7e-m</code><br>
! <code>-march=armv8-m.base</code><br>
! <code>-march=armv8-m.main</code><br>
! <code>-march=armv7</code></td></tr>
  <tr><td width="15%">FPUs<br><br><br><br><br></td><td width="28%">none<br>
! <code>-mfpu=vfpv3-d16</code><br>
! <code>-mfpu=neon</code><br>
! <code>-mfpu=vfpv4-d16</code><br>
! <code>-mfpu=neon-vfpv4</code><br>
! <code>-mfpu=neon-fp-armv8</code></td><td width="30%">none<br>
! <code>-mfpu=vfpv3-d16</code><br>
! <code>-mfpu=fpv4-sp-d16</code><br>
! <code>-mfpu=fpv5-sp-d16</code><br>
! <code>-mfpu=fpv5-d16</code><br></td></tr>
! <tr><td width="15%">floating-point ABIs<br><br></td><td width="28%"><code>-mfloat-abi=soft</code><br>
! <code>-mfloat-abi=softfp</code><br>
! <code>-mfloat-abi=hard</code></td><td width="30%"><code>-mfloat-abi=soft</code><br>
! <code>-mfloat-abi=softfp</code><br>
! <code>-mfloat-abi=hard</code></td></tr>
  </table>
  
  </dd>
! <dt><code>loongarch*-*-*</code></dt>
! <dd><p><var>list</var> is a comma-separated list, with each of the element starting with
! the following ABI identifiers: <code>lp64d[/base]</code> <code>lp64f[/base]</code>
! <code>lp64d[/base]</code> (the <code>/base</code> suffix may be omitted)
  to enable their respective run-time libraries.
  </p>
! <p>A suffix <code>[/<var>arch</var>][/<var>option</var>/&hellip;]</code> may follow immediately
  after the ABI identifier to customize the compiler options for building the
! given set of libraries.  <var>arch</var> denotes the architecture name recognized
! by the <samp>-march=<var>arch</var></samp> compiler option, which acts as a basic target
! ISA configuration that can be adjusted using the subsequent <var>option</var>
! suffixes, where each <var>option</var> is a compiler option without a leading dash
  (&rsquo;-&rsquo;).
  </p>
  <p>If no such suffix is present for a given multilib variant, the
! configured value of <samp>--with-multilib-default</samp> is appended as a default
! suffix.  If <samp>--with-multilib-default</samp> is not given, the default build
! option <samp>-march=abi-default</samp> is applied when building the variants
  without a suffix.
  </p>
! <p>As a special case, <code>fixed</code> may be used in the position of <var>arch</var>,
  which means using the architecture configured with
! <samp>--with-arch=<var>arch</var></samp>, or its default value (e.g. <code>loongarch64</code>
! for <code>loongarch64-*</code> targets).
  </p>
! <p>If <var>list</var> is empty or <code>default</code>, or if <samp>--with-multilib-list</samp>
  is not specified, then only the default variant of the libraries are built,
  where the default ABI is implied by the configured target triplet.
  </p>
  </dd>
! <dt><code>nvptx-*</code></dt>
  <dd><p>The target libraries corresponding to the default value of the
! <samp>-march</samp> option are always built,
  see
! <a href="specific.html#nvptx-x-none">host/target specific installation notes</a>.
! If <var>list</var> is empty, &lsquo;<samp>no</samp>&rsquo;, or <samp>--without-multilib-list</samp>
  is specified, then no additional multilibs are built.
! Otherwise, <var>list</var> is a comma separated list specifying which
  multilibs to build.
! List items are either &lsquo;<samp>sm_SM</samp>&rsquo;, or &lsquo;<samp>default</samp>&rsquo;, which is a
! placeholder specifying a default set of multilibs: &lsquo;<samp>sm_52</samp>&rsquo;.
  Any duplicates are filtered out.
! If <samp>--with-multilib-list</samp> is not specified, then
! <samp>--with-multilib-list=default</samp> is assumed.
! For &lsquo;<samp>sm_30</samp>&rsquo;, &lsquo;<samp>sm_35</samp>&rsquo; target libraries, <samp>-mptx-3.1</samp>
  sub-variants are additionally built.
  </p>
  </dd>
! <dt><code>riscv*-*-*</code></dt>
! <dd><p><var>list</var> is a single ABI name.  The target architecture must be either
! <code>rv32gc</code> or <code>rv64gc</code>.  This will build a single multilib for the
! specified architecture and ABI pair.  If <code>--with-multilib-list</code> is not
  given, then a default set of multilibs is selected based on the value of
! <samp>--target</samp>.  This is usually a large set of multilibs.
  </p>
  </dd>
! <dt><code>sh*-*-*</code></dt>
! <dd><p><var>list</var> is a comma separated list of CPU names.  These must be of the
! form <code>sh*</code> or <code>m*</code> (in which case they match the compiler option
  for that processor).  The list should not contain any endian options -
! these are handled by <samp>--with-endian</samp>.
  </p>
! <p>If <var>list</var> is empty, then there will be no multilibs for extra
  processors.  The multilib for the secondary endian remains enabled.
  </p>
! <p>As a special case, if an entry in the list starts with a <code>!</code>
  (exclamation point), then it is added to the list of excluded multilibs.
! Entries of this sort should be compatible with &lsquo;<samp>MULTILIB_EXCLUDES</samp>&rsquo;
! (once the leading <code>!</code> has been stripped).
  </p>
! <p>If <samp>--with-multilib-list</samp> is not given, then a default set of
! multilibs is selected based on the value of <samp>--target</samp>.  This is
  usually the complete set of libraries, but some targets imply a more
  specialized subset.
  </p>
  <p>Example 1: to configure a compiler for SH4A only, but supporting both
  endians, with little endian being the default:
! </p><div class="smallexample">
! <pre class="smallexample">--with-cpu=sh4a --with-endian=little,big --with-multilib-list=
  </pre></div>
  
  <p>Example 2: to configure a compiler for both SH4A and SH4AL-DSP, but with
  only little endian SH4AL:
! </p><div class="smallexample">
! <pre class="smallexample">--with-cpu=sh4a --with-endian=little,big \
  --with-multilib-list=sh4al,!mb/m4al
  </pre></div>
  
  </dd>
! <dt><code>x86-64-*-linux*</code></dt>
! <dd><p><var>list</var> is a comma separated list of <code>m32</code>, <code>m64</code> and
! <code>mx32</code> to enable 32-bit, 64-bit and x32 run-time libraries,
! respectively.  If <var>list</var> is empty, then there will be no multilibs
  and only the default run-time library will be enabled.
  </p>
! <p>If <samp>--with-multilib-list</samp> is not given, then only 32-bit and
  64-bit run-time libraries will be enabled.
  </p></dd>
  </dl>
  
  </dd>
! <dt><code>--with-multilib-default</code></dt>
  <dd><p>On LoongArch targets, set the default build options for enabled multilibs
  without build options appended to their corresponding
! <samp>--with-multilib-list</samp> items.  The format of this value is
! <code>[/<var>arch</var>][/<var>option</var>/&hellip;]</code>, where <var>arch</var> is an
! architecture name recognized by <samp>-march=<var>arch</var></samp> compiler option,
! and subsequent <var>option</var> suffixes are compiler options minus a leading
  dash (&rsquo;-&rsquo;).
  </p>
! <p>Multiple <var>option</var>s may appear consecutively while <var>arch</var> may only
! appear in the beginning or be omitted (which means <samp>-march=abi-default</samp>
  is applied when building the libraries).
  </p>
  </dd>
! <dt><code>--with-strict-align-lib</code></dt>
! <dd><p>On LoongArch targets, build all enabled multilibs with <samp>-mstrict-align</samp>
  (Not enabled by default).
  </p>
  </dd>
! <dt><code>--with-multilib-generator=<var>config</var></code></dt>
! <dd><p>Specify what multilibs to build.  <var>config</var> is a semicolon separated list of
  values, possibly consisting of a single value.  Currently only implemented
  for riscv*-*-elf*.  The accepted values and meanings are given below.
  </p>
--- 684,908 ----
  </dl>
  
  </dd>
! <dt><code class="code"><a class="anchor" id="with-multilib-list"></a>--with-multilib-list=<var class="var">list</var></code></dt>
! <dt><code class="code">--without-multilib-list</code></dt>
! <dd><p>Specify what multilibs to build.  <var class="var">list</var> is a comma separated list of
  values, possibly consisting of a single value.  Currently only implemented
  for aarch64*-*-*, amdgcn*-*-*, arm*-*-*, loongarch*-*-*, nvptx-*, riscv*-*-*,
  sh*-*-* and x86-64-*-linux*.
  The accepted values and meaning for each target is given below.
  </p>
! <dl class="table">
! <dt><code class="code">aarch64*-*-*</code></dt>
! <dd><p><var class="var">list</var> is a comma separated list of <code class="code">ilp32</code>, and <code class="code">lp64</code>
  to enable ILP32 and LP64 run-time libraries, respectively.  If
! <var class="var">list</var> is empty, then there will be no multilibs and only the
! default run-time library will be built.  If <var class="var">list</var> is
! <code class="code">default</code> or &ndash;with-multilib-list= is not specified, then the
  default set of libraries is selected based on the value of
! <samp class="option">--target</samp>.
  </p>
  </dd>
! <dt><code class="code">amdgcn*-*-*</code></dt>
! <dd><p><var class="var">list</var> is a comma separated list of ISA names (allowed values:
! <code class="code">gfx900</code>, <code class="code">gfx902</code>, <code class="code">gfx904</code>, <code class="code">gfx906</code>, <code class="code">gfx908</code>,
! <code class="code">gfx909</code>, <code class="code">gfx90a</code>, <code class="code">gfx90c</code>, <code class="code">gfx9-generic</code>,
! <code class="code">gfx1030</code>, <code class="code">gfx1031</code>, <code class="code">gfx1032</code>, <code class="code">gfx1033</code>,
! <code class="code">gfx1034</code>, <code class="code">gfx1035</code>, <code class="code">gfx1036</code>, <code class="code">gfx10-3-generic</code>,
! <code class="code">gfx1100</code>, <code class="code">gfx1101</code>, <code class="code">gfx1102</code>, <code class="code">gfx1103</code>,
! <code class="code">gfx1150</code>, <code class="code">gfx1151</code>, <code class="code">gfx1152</code>, <code class="code">gfx1153</code>,
! <code class="code">gfx11-generic</code>).  It ought not include the name of the default
! ISA, specified via <samp class="option">--with-arch</samp>.  If <var class="var">list</var> is empty, then there
  will be no multilibs and only the default run-time library will be built.  If
! <var class="var">list</var> is <code class="code">default</code> or <samp class="option">--with-multilib-list=</samp> is not
  specified, then the default set of libraries is selected.
  </p>
  </dd>
! <dt><code class="code">arm*-*-*</code></dt>
! <dd><p><var class="var">list</var> is a comma separated list of <code class="code">aprofile</code> and
! <code class="code">rmprofile</code> to build multilibs for A or R and M architecture
  profiles respectively.  Note that, due to some limitation of the current
! multilib framework, using the combined <code class="code">aprofile,rmprofile</code>
  multilibs selects in some cases a less optimal multilib than when using
  the multilib profile for the architecture targetted.  The special value
! <code class="code">default</code> is also accepted and is equivalent to omitting the
  option, i.e., only the default run-time library will be enabled.
  </p>
! <p><var class="var">list</var> may instead contain <code class="code">@name</code>, to use the multilib
! configuration Makefile fragment <samp class="file">name</samp> in <samp class="file">gcc/config/arm</samp> in
  the source tree (it is part of the corresponding sources, after all).
  It is recommended, but not required, that files used for this purpose to
! be named starting with <samp class="file">t-ml-</samp>, to make their intended purpose
  self-evident, in line with GCC conventions.  Such files enable custom,
  user-chosen multilib lists to be configured.  Whether multiple such
  files can be used together depends on the contents of the supplied
! files.  See <samp class="file">gcc/config/arm/t-multilib</samp> and its supplementary
! <samp class="file">gcc/config/arm/t-*profile</samp> files for an example of what such
  Makefile fragments might look like for this version of GCC.  The macros
  expected to be defined in these fragments are not stable across GCC
! releases, so make sure they define the <code class="code">MULTILIB</code>-related macros
  expected by the version of GCC you are building.
  See &ldquo;Target Makefile Fragments&rdquo; in the internals manual.
  </p>
  <p>The table below gives the combination of ISAs, architectures, FPUs and
  floating-point ABIs for which multilibs are built for each predefined
  profile.  The union of these options is considered when specifying both
! <code class="code">aprofile</code> and <code class="code">rmprofile</code>.
  </p>
! <table class="multitable">
! <tbody><tr><td width="15%">Option</td><td width="28%">aprofile</td><td width="30%">rmprofile</td></tr>
! <tr><td width="15%">ISAs</td><td width="28%"><code class="code">-marm</code> and <code class="code">-mthumb</code></td><td width="30%"><code class="code">-mthumb</code></td></tr>
  <tr><td width="15%">Architectures<br><br><br><br><br><br></td><td width="28%">default architecture<br>
! <code class="code">-march=armv7-a</code><br>
! <code class="code">-march=armv7ve</code><br>
! <code class="code">-march=armv8-a</code><br><br><br></td><td width="30%">default architecture<br>
! <code class="code">-march=armv6s-m</code><br>
! <code class="code">-march=armv7-m</code><br>
! <code class="code">-march=armv7e-m</code><br>
! <code class="code">-march=armv8-m.base</code><br>
! <code class="code">-march=armv8-m.main</code><br>
! <code class="code">-march=armv7</code></td></tr>
  <tr><td width="15%">FPUs<br><br><br><br><br></td><td width="28%">none<br>
! <code class="code">-mfpu=vfpv3-d16</code><br>
! <code class="code">-mfpu=neon</code><br>
! <code class="code">-mfpu=vfpv4-d16</code><br>
! <code class="code">-mfpu=neon-vfpv4</code><br>
! <code class="code">-mfpu=neon-fp-armv8</code></td><td width="30%">none<br>
! <code class="code">-mfpu=vfpv3-d16</code><br>
! <code class="code">-mfpu=fpv4-sp-d16</code><br>
! <code class="code">-mfpu=fpv5-sp-d16</code><br>
! <code class="code">-mfpu=fpv5-d16</code><br></td></tr>
! <tr><td width="15%">floating-point ABIs<br><br></td><td width="28%"><code class="code">-mfloat-abi=soft</code><br>
! <code class="code">-mfloat-abi=softfp</code><br>
! <code class="code">-mfloat-abi=hard</code></td><td width="30%"><code class="code">-mfloat-abi=soft</code><br>
! <code class="code">-mfloat-abi=softfp</code><br>
! <code class="code">-mfloat-abi=hard</code></td></tr>
! </tbody>
  </table>
  
  </dd>
! <dt><code class="code">loongarch*-*-*</code></dt>
! <dd><p><var class="var">list</var> is a comma-separated list, with each of the element starting with
! the following ABI identifiers: <code class="code">lp64d[/base]</code> <code class="code">lp64f[/base]</code>
! <code class="code">lp64d[/base]</code> (the <code class="code">/base</code> suffix may be omitted)
  to enable their respective run-time libraries.
  </p>
! <p>A suffix <code class="code">[/<var class="var">arch</var>][/<var class="var">option</var>/&hellip;]</code> may follow immediately
  after the ABI identifier to customize the compiler options for building the
! given set of libraries.  <var class="var">arch</var> denotes the architecture name recognized
! by the <samp class="option">-march=<var class="var">arch</var></samp> compiler option, which acts as a basic target
! ISA configuration that can be adjusted using the subsequent <var class="var">option</var>
! suffixes, where each <var class="var">option</var> is a compiler option without a leading dash
  (&rsquo;-&rsquo;).
  </p>
  <p>If no such suffix is present for a given multilib variant, the
! configured value of <samp class="option">--with-multilib-default</samp> is appended as a default
! suffix.  If <samp class="option">--with-multilib-default</samp> is not given, the default build
! option <samp class="option">-march=abi-default</samp> is applied when building the variants
  without a suffix.
  </p>
! <p>As a special case, <code class="code">fixed</code> may be used in the position of <var class="var">arch</var>,
  which means using the architecture configured with
! <samp class="option">--with-arch=<var class="var">arch</var></samp>, or its default value (e.g. <code class="code">loongarch64</code>
! for <code class="code">loongarch64-*</code> targets).
  </p>
! <p>If <var class="var">list</var> is empty or <code class="code">default</code>, or if <samp class="option">--with-multilib-list</samp>
  is not specified, then only the default variant of the libraries are built,
  where the default ABI is implied by the configured target triplet.
  </p>
  </dd>
! <dt><code class="code">nvptx-*</code></dt>
  <dd><p>The target libraries corresponding to the default value of the
! <samp class="option">-march</samp> option are always built,
  see
! <a class="uref" href="specific.html#nvptx-x-none">host/target specific installation notes</a>.
! If <var class="var">list</var> is empty, &lsquo;<samp class="samp">no</samp>&rsquo;, or <samp class="option">--without-multilib-list</samp>
  is specified, then no additional multilibs are built.
! Otherwise, <var class="var">list</var> is a comma separated list specifying which
  multilibs to build.
! List items are either &lsquo;<samp class="samp">sm_SM</samp>&rsquo;, or &lsquo;<samp class="samp">default</samp>&rsquo;, which is a
! placeholder specifying a default set of multilibs: &lsquo;<samp class="samp">sm_52</samp>&rsquo;.
  Any duplicates are filtered out.
! If <samp class="option">--with-multilib-list</samp> is not specified, then
! <samp class="option">--with-multilib-list=default</samp> is assumed.
! For &lsquo;<samp class="samp">sm_30</samp>&rsquo;, &lsquo;<samp class="samp">sm_35</samp>&rsquo; target libraries, <samp class="option">-mptx-3.1</samp>
  sub-variants are additionally built.
  </p>
  </dd>
! <dt><code class="code">riscv*-*-*</code></dt>
! <dd><p><var class="var">list</var> is a single ABI name.  The target architecture must be either
! <code class="code">rv32gc</code> or <code class="code">rv64gc</code>.  This will build a single multilib for the
! specified architecture and ABI pair.  If <code class="code">--with-multilib-list</code> is not
  given, then a default set of multilibs is selected based on the value of
! <samp class="option">--target</samp>.  This is usually a large set of multilibs.
  </p>
  </dd>
! <dt><code class="code">sh*-*-*</code></dt>
! <dd><p><var class="var">list</var> is a comma separated list of CPU names.  These must be of the
! form <code class="code">sh*</code> or <code class="code">m*</code> (in which case they match the compiler option
  for that processor).  The list should not contain any endian options -
! these are handled by <samp class="option">--with-endian</samp>.
  </p>
! <p>If <var class="var">list</var> is empty, then there will be no multilibs for extra
  processors.  The multilib for the secondary endian remains enabled.
  </p>
! <p>As a special case, if an entry in the list starts with a <code class="code">!</code>
  (exclamation point), then it is added to the list of excluded multilibs.
! Entries of this sort should be compatible with &lsquo;<samp class="samp">MULTILIB_EXCLUDES</samp>&rsquo;
! (once the leading <code class="code">!</code> has been stripped).
  </p>
! <p>If <samp class="option">--with-multilib-list</samp> is not given, then a default set of
! multilibs is selected based on the value of <samp class="option">--target</samp>.  This is
  usually the complete set of libraries, but some targets imply a more
  specialized subset.
  </p>
  <p>Example 1: to configure a compiler for SH4A only, but supporting both
  endians, with little endian being the default:
! </p><div class="example smallexample">
! <pre class="example-preformatted">--with-cpu=sh4a --with-endian=little,big --with-multilib-list=
  </pre></div>
  
  <p>Example 2: to configure a compiler for both SH4A and SH4AL-DSP, but with
  only little endian SH4AL:
! </p><div class="example smallexample">
! <pre class="example-preformatted">--with-cpu=sh4a --with-endian=little,big \
  --with-multilib-list=sh4al,!mb/m4al
  </pre></div>
  
  </dd>
! <dt><code class="code">x86-64-*-linux*</code></dt>
! <dd><p><var class="var">list</var> is a comma separated list of <code class="code">m32</code>, <code class="code">m64</code> and
! <code class="code">mx32</code> to enable 32-bit, 64-bit and x32 run-time libraries,
! respectively.  If <var class="var">list</var> is empty, then there will be no multilibs
  and only the default run-time library will be enabled.
  </p>
! <p>If <samp class="option">--with-multilib-list</samp> is not given, then only 32-bit and
  64-bit run-time libraries will be enabled.
  </p></dd>
  </dl>
  
  </dd>
! <dt><code class="code">--with-multilib-default</code></dt>
  <dd><p>On LoongArch targets, set the default build options for enabled multilibs
  without build options appended to their corresponding
! <samp class="option">--with-multilib-list</samp> items.  The format of this value is
! <code class="code">[/<var class="var">arch</var>][/<var class="var">option</var>/&hellip;]</code>, where <var class="var">arch</var> is an
! architecture name recognized by <samp class="option">-march=<var class="var">arch</var></samp> compiler option,
! and subsequent <var class="var">option</var> suffixes are compiler options minus a leading
  dash (&rsquo;-&rsquo;).
  </p>
! <p>Multiple <var class="var">option</var>s may appear consecutively while <var class="var">arch</var> may only
! appear in the beginning or be omitted (which means <samp class="option">-march=abi-default</samp>
  is applied when building the libraries).
  </p>
  </dd>
! <dt><code class="code">--with-strict-align-lib</code></dt>
! <dd><p>On LoongArch targets, build all enabled multilibs with <samp class="option">-mstrict-align</samp>
  (Not enabled by default).
  </p>
  </dd>
! <dt><code class="code">--with-multilib-generator=<var class="var">config</var></code></dt>
! <dd><p>Specify what multilibs to build.  <var class="var">config</var> is a semicolon separated list of
  values, possibly consisting of a single value.  Currently only implemented
  for riscv*-*-elf*.  The accepted values and meanings are given below.
  </p>
*************** for riscv*-*-elf*.  The accepted values
*** 930,1001 ****
  reuse rule with architecture string and reuse rule with sub-extension.
  </p>
  <p>Example 1: Add multi-lib suppport for rv32i with ilp32.
! </p><div class="smallexample">
! <pre class="smallexample">rv32i-ilp32--
  </pre></div>
  
  <p>Example 2: Add multi-lib suppport for rv32i with ilp32 and rv32imafd with ilp32.
! </p><div class="smallexample">
! <pre class="smallexample">rv32i-ilp32--;rv32imafd-ilp32--
  </pre></div>
  
  <p>Example 3: Add multi-lib suppport for rv32i with ilp32; rv32im with ilp32 and
  rv32ic with ilp32 will reuse this multi-lib set.
! </p><div class="smallexample">
! <pre class="smallexample">rv32i-ilp32-rv32im-c
  </pre></div>
  
  <p>Example 4: Add multi-lib suppport for rv64ima with lp64; rv64imaf with lp64,
  rv64imac with lp64 and rv64imafc with lp64 will reuse this multi-lib set.
! </p><div class="smallexample">
! <pre class="smallexample">rv64ima-lp64--f,c,fc
  </pre></div>
  
! <p><samp>--with-multilib-generator</samp> have an optional configuration argument
! <samp>--cmodel=val</samp> for code model, this option will expand with other
! config options, <var>val</var> is a comma separated list of possible code model,
  currently we support medlow and medany.
  </p>
  <p>Example 5: Add multi-lib suppport for rv64ima with lp64; rv64ima with lp64 and
  medlow code model
! </p><div class="smallexample">
! <pre class="smallexample">rv64ima-lp64--;--cmodel=medlow
  </pre></div>
  
  <p>Example 6: Add multi-lib suppport for rv64ima with lp64; rv64ima with lp64 and
  medlow code model; rv64ima with lp64 and medany code model
! </p><div class="smallexample">
! <pre class="smallexample">rv64ima-lp64--;--cmodel=medlow,medany
  </pre></div>
  
  </dd>
! <dt><code>--with-endian=<var>endians</var></code></dt>
  <dd><p>Specify what endians to use.
  Currently only implemented for sh*-*-*.
  </p>
! <p><var>endians</var> may be one of the following:
! </p><dl compact="compact">
! <dt><code>big</code></dt>
  <dd><p>Use big endian exclusively.
  </p></dd>
! <dt><code>little</code></dt>
  <dd><p>Use little endian exclusively.
  </p></dd>
! <dt><code>big,little</code></dt>
  <dd><p>Use big endian by default.  Provide a multilib for little endian.
  </p></dd>
! <dt><code>little,big</code></dt>
  <dd><p>Use little endian by default.  Provide a multilib for big endian.
  </p></dd>
  </dl>
  
  </dd>
! <dt><code>--with-cmodel=<var>cmodel</var></code></dt>
  <dd><p>Specify what code model to use by default.
  Currently only implemented for riscv*-*-*.
  </p>
  </dd>
! <dt><code>--enable-threads</code></dt>
  <dd><p>Specify that the target
  supports threads.  This affects the Objective-C compiler and runtime
  library, and exception handling for other languages like C++.
--- 911,982 ----
  reuse rule with architecture string and reuse rule with sub-extension.
  </p>
  <p>Example 1: Add multi-lib suppport for rv32i with ilp32.
! </p><div class="example smallexample">
! <pre class="example-preformatted">rv32i-ilp32--
  </pre></div>
  
  <p>Example 2: Add multi-lib suppport for rv32i with ilp32 and rv32imafd with ilp32.
! </p><div class="example smallexample">
! <pre class="example-preformatted">rv32i-ilp32--;rv32imafd-ilp32--
  </pre></div>
  
  <p>Example 3: Add multi-lib suppport for rv32i with ilp32; rv32im with ilp32 and
  rv32ic with ilp32 will reuse this multi-lib set.
! </p><div class="example smallexample">
! <pre class="example-preformatted">rv32i-ilp32-rv32im-c
  </pre></div>
  
  <p>Example 4: Add multi-lib suppport for rv64ima with lp64; rv64imaf with lp64,
  rv64imac with lp64 and rv64imafc with lp64 will reuse this multi-lib set.
! </p><div class="example smallexample">
! <pre class="example-preformatted">rv64ima-lp64--f,c,fc
  </pre></div>
  
! <p><samp class="option">--with-multilib-generator</samp> have an optional configuration argument
! <samp class="option">--cmodel=val</samp> for code model, this option will expand with other
! config options, <var class="var">val</var> is a comma separated list of possible code model,
  currently we support medlow and medany.
  </p>
  <p>Example 5: Add multi-lib suppport for rv64ima with lp64; rv64ima with lp64 and
  medlow code model
! </p><div class="example smallexample">
! <pre class="example-preformatted">rv64ima-lp64--;--cmodel=medlow
  </pre></div>
  
  <p>Example 6: Add multi-lib suppport for rv64ima with lp64; rv64ima with lp64 and
  medlow code model; rv64ima with lp64 and medany code model
! </p><div class="example smallexample">
! <pre class="example-preformatted">rv64ima-lp64--;--cmodel=medlow,medany
  </pre></div>
  
  </dd>
! <dt><code class="code">--with-endian=<var class="var">endians</var></code></dt>
  <dd><p>Specify what endians to use.
  Currently only implemented for sh*-*-*.
  </p>
! <p><var class="var">endians</var> may be one of the following:
! </p><dl class="table">
! <dt><code class="code">big</code></dt>
  <dd><p>Use big endian exclusively.
  </p></dd>
! <dt><code class="code">little</code></dt>
  <dd><p>Use little endian exclusively.
  </p></dd>
! <dt><code class="code">big,little</code></dt>
  <dd><p>Use big endian by default.  Provide a multilib for little endian.
  </p></dd>
! <dt><code class="code">little,big</code></dt>
  <dd><p>Use little endian by default.  Provide a multilib for big endian.
  </p></dd>
  </dl>
  
  </dd>
! <dt><code class="code">--with-cmodel=<var class="var">cmodel</var></code></dt>
  <dd><p>Specify what code model to use by default.
  Currently only implemented for riscv*-*-*.
  </p>
  </dd>
! <dt><code class="code">--enable-threads</code></dt>
  <dd><p>Specify that the target
  supports threads.  This affects the Objective-C compiler and runtime
  library, and exception handling for other languages like C++.
*************** On some systems, this is the default.
*** 1004,1143 ****
  <p>In general, the best (and, in many cases, the only known) threading
  model available will be configured for use.  Beware that on some
  systems, GCC has not been taught what threading models are generally
! available for the system.  In this case, <samp>--enable-threads</samp> is an
! alias for <samp>--enable-threads=single</samp>.
  </p>
  </dd>
! <dt><code>--disable-threads</code></dt>
  <dd><p>Specify that threading support should be disabled for the system.
! This is an alias for <samp>--enable-threads=single</samp>.
  </p>
  </dd>
! <dt><code>--enable-threads=<var>lib</var></code></dt>
  <dd><p>Specify that
! <var>lib</var> is the thread support library.  This affects the Objective-C
  compiler and runtime library, and exception handling for other languages
! like C++.  The possibilities for <var>lib</var> are:
  </p>
! <dl compact="compact">
! <dt><code>aix</code></dt>
  <dd><p>AIX thread support.
  </p></dd>
! <dt><code>dce</code></dt>
  <dd><p>DCE thread support.
  </p></dd>
! <dt><code>lynx</code></dt>
  <dd><p>LynxOS thread support.
  </p></dd>
! <dt><code>mipssde</code></dt>
  <dd><p>MIPS SDE thread support.
  </p></dd>
! <dt><code>no</code></dt>
! <dd><p>This is an alias for &lsquo;<samp>single</samp>&rsquo;.
  </p></dd>
! <dt><code>posix</code></dt>
  <dd><p>Generic POSIX/Unix98 thread support.
  </p></dd>
! <dt><code>rtems</code></dt>
  <dd><p>RTEMS thread support.
  </p></dd>
! <dt><code>single</code></dt>
  <dd><p>Disable thread support, should work for all platforms.
  </p></dd>
! <dt><code>tpf</code></dt>
  <dd><p>TPF thread support.
  </p></dd>
! <dt><code>vxworks</code></dt>
  <dd><p>VxWorks thread support.
  </p></dd>
! <dt><code>win32</code></dt>
  <dd><p>Microsoft Win32 API thread support.
  </p></dd>
  </dl>
  
  </dd>
! <dt><code>--enable-tls</code></dt>
  <dd><p>Specify that the target supports TLS (Thread Local Storage).  Usually
  configure can correctly determine if TLS is supported.  In cases where
  it guesses incorrectly, TLS can be explicitly enabled or disabled with
! <samp>--enable-tls</samp> or <samp>--disable-tls</samp>.  This can happen if
  the assembler supports TLS but the C library does not, or if the
  assumptions made by the configure test are incorrect.
  </p>
  </dd>
! <dt><code>--disable-tls</code></dt>
  <dd><p>Specify that the target does not support TLS.
! This is an alias for <samp>--enable-tls=no</samp>.
  </p>
  </dd>
! <dt><code>--disable-tm-clone-registry</code></dt>
  <dd><p>Disable TM clone registry in libgcc. It is enabled in libgcc by default.
  This option helps to reduce code size for embedded targets which do
  not use transactional memory.
  </p>
  </dd>
! <dt><code>--with-cpu=<var>cpu</var></code></dt>
! <dt><code>--with-cpu-32=<var>cpu</var></code></dt>
! <dt><code>--with-cpu-64=<var>cpu</var></code></dt>
  <dd><p>Specify which cpu variant the compiler should generate code for by default.
! <var>cpu</var> will be used as the default value of the <samp>-mcpu=</samp> switch.
  This option is only supported on some targets, including ARC, ARM, i386, M68k,
! PowerPC, and SPARC.  It is mandatory for ARC.  The <samp>--with-cpu-32</samp> and
! <samp>--with-cpu-64</samp> options specify separate default CPUs for
  32-bit and 64-bit modes; these options are only supported for aarch64, i386,
  x86-64, PowerPC, and SPARC.
  </p>
  </dd>
! <dt><code>--with-schedule=<var>cpu</var></code></dt>
! <dt><code>--with-arch=<var>cpu</var></code></dt>
! <dt><code>--with-arch-32=<var>cpu</var></code></dt>
! <dt><code>--with-arch-64=<var>cpu</var></code></dt>
! <dt><code>--with-tune=<var>cpu</var></code></dt>
! <dt><code>--with-tune-32=<var>cpu</var></code></dt>
! <dt><code>--with-tune-64=<var>cpu</var></code></dt>
! <dt><code>--with-abi=<var>abi</var></code></dt>
! <dt><code>--with-fpu=<var>type</var></code></dt>
! <dt><code>--with-float=<var>type</var></code></dt>
! <dt><code>--with-simd=<var>type</var></code></dt>
! <dd><p>These configure options provide default values for the <samp>-mschedule=</samp>,
! <samp>-march=</samp>, <samp>-mtune=</samp>, <samp>-mabi=</samp>, and <samp>-mfpu=</samp>
! options and for <samp>-mhard-float</samp> or <samp>-msoft-float</samp>.  As with
! <samp>--with-cpu</samp>, which switches will be accepted and acceptable values
  of the arguments depend on the target.
  </p>
  </dd>
! <dt><code>--with-mode=<var>mode</var></code></dt>
! <dd><p>Specify if the compiler should default to <samp>-marm</samp> or <samp>-mthumb</samp>.
  This option is only supported on ARM targets.
  </p>
  </dd>
! <dt><code>--with-stack-offset=<var>num</var></code></dt>
! <dd><p>This option sets the default for the -mstack-offset=<var>num</var> option,
  and will thus generally also control the setting of this option for
  libraries.  This option is only supported on Epiphany targets.
  </p>
  </dd>
! <dt><code>--with-fpmath=<var>isa</var></code></dt>
! <dd><p>This options sets <samp>-mfpmath=sse</samp> by default and specifies the default
! ISA for floating-point arithmetics.  You can select either &lsquo;<samp>sse</samp>&rsquo; which
! enables <samp>-msse2</samp> or &lsquo;<samp>avx</samp>&rsquo; which enables <samp>-mavx</samp> by default.
  This option is only supported on i386 and x86-64 targets.
  </p>
  </dd>
! <dt><code>--with-fp-32=<var>mode</var></code></dt>
! <dd><p>On MIPS targets, set the default value for the <samp>-mfp</samp> option when using
! the o32 ABI.  The possibilities for <var>mode</var> are:
! </p><dl compact="compact">
! <dt><code>32</code></dt>
! <dd><p>Use the o32 FP32 ABI extension, as with the <samp>-mfp32</samp> command-line
  option.
  </p></dd>
! <dt><code>xx</code></dt>
! <dd><p>Use the o32 FPXX ABI extension, as with the <samp>-mfpxx</samp> command-line
  option.
  </p></dd>
! <dt><code>64</code></dt>
! <dd><p>Use the o32 FP64 ABI extension, as with the <samp>-mfp64</samp> command-line
  option.
  </p></dd>
  </dl>
--- 985,1124 ----
  <p>In general, the best (and, in many cases, the only known) threading
  model available will be configured for use.  Beware that on some
  systems, GCC has not been taught what threading models are generally
! available for the system.  In this case, <samp class="option">--enable-threads</samp> is an
! alias for <samp class="option">--enable-threads=single</samp>.
  </p>
  </dd>
! <dt><code class="code">--disable-threads</code></dt>
  <dd><p>Specify that threading support should be disabled for the system.
! This is an alias for <samp class="option">--enable-threads=single</samp>.
  </p>
  </dd>
! <dt><code class="code">--enable-threads=<var class="var">lib</var></code></dt>
  <dd><p>Specify that
! <var class="var">lib</var> is the thread support library.  This affects the Objective-C
  compiler and runtime library, and exception handling for other languages
! like C++.  The possibilities for <var class="var">lib</var> are:
  </p>
! <dl class="table">
! <dt><code class="code">aix</code></dt>
  <dd><p>AIX thread support.
  </p></dd>
! <dt><code class="code">dce</code></dt>
  <dd><p>DCE thread support.
  </p></dd>
! <dt><code class="code">lynx</code></dt>
  <dd><p>LynxOS thread support.
  </p></dd>
! <dt><code class="code">mipssde</code></dt>
  <dd><p>MIPS SDE thread support.
  </p></dd>
! <dt><code class="code">no</code></dt>
! <dd><p>This is an alias for &lsquo;<samp class="samp">single</samp>&rsquo;.
  </p></dd>
! <dt><code class="code">posix</code></dt>
  <dd><p>Generic POSIX/Unix98 thread support.
  </p></dd>
! <dt><code class="code">rtems</code></dt>
  <dd><p>RTEMS thread support.
  </p></dd>
! <dt><code class="code">single</code></dt>
  <dd><p>Disable thread support, should work for all platforms.
  </p></dd>
! <dt><code class="code">tpf</code></dt>
  <dd><p>TPF thread support.
  </p></dd>
! <dt><code class="code">vxworks</code></dt>
  <dd><p>VxWorks thread support.
  </p></dd>
! <dt><code class="code">win32</code></dt>
  <dd><p>Microsoft Win32 API thread support.
  </p></dd>
  </dl>
  
  </dd>
! <dt><code class="code">--enable-tls</code></dt>
  <dd><p>Specify that the target supports TLS (Thread Local Storage).  Usually
  configure can correctly determine if TLS is supported.  In cases where
  it guesses incorrectly, TLS can be explicitly enabled or disabled with
! <samp class="option">--enable-tls</samp> or <samp class="option">--disable-tls</samp>.  This can happen if
  the assembler supports TLS but the C library does not, or if the
  assumptions made by the configure test are incorrect.
  </p>
  </dd>
! <dt><code class="code">--disable-tls</code></dt>
  <dd><p>Specify that the target does not support TLS.
! This is an alias for <samp class="option">--enable-tls=no</samp>.
  </p>
  </dd>
! <dt><code class="code">--disable-tm-clone-registry</code></dt>
  <dd><p>Disable TM clone registry in libgcc. It is enabled in libgcc by default.
  This option helps to reduce code size for embedded targets which do
  not use transactional memory.
  </p>
  </dd>
! <dt><code class="code">--with-cpu=<var class="var">cpu</var></code></dt>
! <dt><code class="code">--with-cpu-32=<var class="var">cpu</var></code></dt>
! <dt><code class="code">--with-cpu-64=<var class="var">cpu</var></code></dt>
  <dd><p>Specify which cpu variant the compiler should generate code for by default.
! <var class="var">cpu</var> will be used as the default value of the <samp class="option">-mcpu=</samp> switch.
  This option is only supported on some targets, including ARC, ARM, i386, M68k,
! PowerPC, and SPARC.  It is mandatory for ARC.  The <samp class="option">--with-cpu-32</samp> and
! <samp class="option">--with-cpu-64</samp> options specify separate default CPUs for
  32-bit and 64-bit modes; these options are only supported for aarch64, i386,
  x86-64, PowerPC, and SPARC.
  </p>
  </dd>
! <dt><code class="code">--with-schedule=<var class="var">cpu</var></code></dt>
! <dt><code class="code">--with-arch=<var class="var">cpu</var></code></dt>
! <dt><code class="code">--with-arch-32=<var class="var">cpu</var></code></dt>
! <dt><code class="code">--with-arch-64=<var class="var">cpu</var></code></dt>
! <dt><code class="code">--with-tune=<var class="var">cpu</var></code></dt>
! <dt><code class="code">--with-tune-32=<var class="var">cpu</var></code></dt>
! <dt><code class="code">--with-tune-64=<var class="var">cpu</var></code></dt>
! <dt><code class="code">--with-abi=<var class="var">abi</var></code></dt>
! <dt><code class="code">--with-fpu=<var class="var">type</var></code></dt>
! <dt><code class="code">--with-float=<var class="var">type</var></code></dt>
! <dt><code class="code">--with-simd=<var class="var">type</var></code></dt>
! <dd><p>These configure options provide default values for the <samp class="option">-mschedule=</samp>,
! <samp class="option">-march=</samp>, <samp class="option">-mtune=</samp>, <samp class="option">-mabi=</samp>, and <samp class="option">-mfpu=</samp>
! options and for <samp class="option">-mhard-float</samp> or <samp class="option">-msoft-float</samp>.  As with
! <samp class="option">--with-cpu</samp>, which switches will be accepted and acceptable values
  of the arguments depend on the target.
  </p>
  </dd>
! <dt><code class="code">--with-mode=<var class="var">mode</var></code></dt>
! <dd><p>Specify if the compiler should default to <samp class="option">-marm</samp> or <samp class="option">-mthumb</samp>.
  This option is only supported on ARM targets.
  </p>
  </dd>
! <dt><code class="code">--with-stack-offset=<var class="var">num</var></code></dt>
! <dd><p>This option sets the default for the -mstack-offset=<var class="var">num</var> option,
  and will thus generally also control the setting of this option for
  libraries.  This option is only supported on Epiphany targets.
  </p>
  </dd>
! <dt><code class="code">--with-fpmath=<var class="var">isa</var></code></dt>
! <dd><p>This options sets <samp class="option">-mfpmath=sse</samp> by default and specifies the default
! ISA for floating-point arithmetics.  You can select either &lsquo;<samp class="samp">sse</samp>&rsquo; which
! enables <samp class="option">-msse2</samp> or &lsquo;<samp class="samp">avx</samp>&rsquo; which enables <samp class="option">-mavx</samp> by default.
  This option is only supported on i386 and x86-64 targets.
  </p>
  </dd>
! <dt><code class="code">--with-fp-32=<var class="var">mode</var></code></dt>
! <dd><p>On MIPS targets, set the default value for the <samp class="option">-mfp</samp> option when using
! the o32 ABI.  The possibilities for <var class="var">mode</var> are:
! </p><dl class="table">
! <dt><code class="code">32</code></dt>
! <dd><p>Use the o32 FP32 ABI extension, as with the <samp class="option">-mfp32</samp> command-line
  option.
  </p></dd>
! <dt><code class="code">xx</code></dt>
! <dd><p>Use the o32 FPXX ABI extension, as with the <samp class="option">-mfpxx</samp> command-line
  option.
  </p></dd>
! <dt><code class="code">64</code></dt>
! <dd><p>Use the o32 FP64 ABI extension, as with the <samp class="option">-mfp64</samp> command-line
  option.
  </p></dd>
  </dl>
*************** option.
*** 1145,1211 ****
  FP32 ABI extension.
  </p>
  </dd>
! <dt><code>--with-odd-spreg-32</code></dt>
! <dd><p>On MIPS targets, set the <samp>-modd-spreg</samp> option by default when using
  the o32 ABI.
  </p>
  </dd>
! <dt><code>--without-odd-spreg-32</code></dt>
! <dd><p>On MIPS targets, set the <samp>-mno-odd-spreg</samp> option by default when using
  the o32 ABI.  This is normally used in conjunction with
! <samp>--with-fp-32=64</samp> in order to target the o32 FP64A ABI extension.
  </p>
  </dd>
! <dt><code>--with-nan=<var>encoding</var></code></dt>
  <dd><p>On MIPS targets, set the default encoding convention to use for the
  special not-a-number (NaN) IEEE 754 floating-point data.  The
! possibilities for <var>encoding</var> are:
! </p><dl compact="compact">
! <dt><code>legacy</code></dt>
! <dd><p>Use the legacy encoding, as with the <samp>-mnan=legacy</samp> command-line
  option.
  </p></dd>
! <dt><code>2008</code></dt>
! <dd><p>Use the 754-2008 encoding, as with the <samp>-mnan=2008</samp> command-line
  option.
  </p></dd>
  </dl>
  <p>To use this configuration option you must have an assembler version
! installed that supports the <samp>-mnan=</samp> command-line option too.
  In the absence of this configuration option the default convention is
! the legacy encoding, as when neither of the <samp>-mnan=2008</samp> and
! <samp>-mnan=legacy</samp> command-line options has been used.
  </p>
  </dd>
! <dt><code>--with-divide=<var>type</var></code></dt>
  <dd><p>Specify how the compiler should generate code for checking for
  division by zero.  This option is only supported on the MIPS target.
! The possibilities for <var>type</var> are:
! </p><dl compact="compact">
! <dt><code>traps</code></dt>
  <dd><p>Division by zero checks use conditional traps (this is the default on
  systems that support conditional traps).
  </p></dd>
! <dt><code>breaks</code></dt>
  <dd><p>Division by zero checks use the break instruction.
  </p></dd>
  </dl>
  
  </dd>
! <dt><code>--with-compact-branches=<var>policy</var></code></dt>
  <dd><p>Specify how the compiler should generate branch instructions.
  This option is only supported on the MIPS target.
! The possibilities for <var>type</var> are:
! </p><dl compact="compact">
! <dt><code>optimal</code></dt>
  <dd><p>Cause a delay slot branch to be used if one is available in the
  current ISA and the delay slot is successfully filled. If the delay slot
  is not filled, a compact branch will be chosen if one is available.
  </p></dd>
! <dt><code>never</code></dt>
  <dd><p>Ensures that compact branch instructions will never be generated.
  </p></dd>
! <dt><code>always</code></dt>
  <dd><p>Ensures that a compact branch instruction will be generated if available.
  If a compact branch instruction is not available,
  a delay slot form of the branch will be used instead.
--- 1126,1192 ----
  FP32 ABI extension.
  </p>
  </dd>
! <dt><code class="code">--with-odd-spreg-32</code></dt>
! <dd><p>On MIPS targets, set the <samp class="option">-modd-spreg</samp> option by default when using
  the o32 ABI.
  </p>
  </dd>
! <dt><code class="code">--without-odd-spreg-32</code></dt>
! <dd><p>On MIPS targets, set the <samp class="option">-mno-odd-spreg</samp> option by default when using
  the o32 ABI.  This is normally used in conjunction with
! <samp class="option">--with-fp-32=64</samp> in order to target the o32 FP64A ABI extension.
  </p>
  </dd>
! <dt><code class="code">--with-nan=<var class="var">encoding</var></code></dt>
  <dd><p>On MIPS targets, set the default encoding convention to use for the
  special not-a-number (NaN) IEEE 754 floating-point data.  The
! possibilities for <var class="var">encoding</var> are:
! </p><dl class="table">
! <dt><code class="code">legacy</code></dt>
! <dd><p>Use the legacy encoding, as with the <samp class="option">-mnan=legacy</samp> command-line
  option.
  </p></dd>
! <dt><code class="code">2008</code></dt>
! <dd><p>Use the 754-2008 encoding, as with the <samp class="option">-mnan=2008</samp> command-line
  option.
  </p></dd>
  </dl>
  <p>To use this configuration option you must have an assembler version
! installed that supports the <samp class="option">-mnan=</samp> command-line option too.
  In the absence of this configuration option the default convention is
! the legacy encoding, as when neither of the <samp class="option">-mnan=2008</samp> and
! <samp class="option">-mnan=legacy</samp> command-line options has been used.
  </p>
  </dd>
! <dt><code class="code">--with-divide=<var class="var">type</var></code></dt>
  <dd><p>Specify how the compiler should generate code for checking for
  division by zero.  This option is only supported on the MIPS target.
! The possibilities for <var class="var">type</var> are:
! </p><dl class="table">
! <dt><code class="code">traps</code></dt>
  <dd><p>Division by zero checks use conditional traps (this is the default on
  systems that support conditional traps).
  </p></dd>
! <dt><code class="code">breaks</code></dt>
  <dd><p>Division by zero checks use the break instruction.
  </p></dd>
  </dl>
  
  </dd>
! <dt><code class="code">--with-compact-branches=<var class="var">policy</var></code></dt>
  <dd><p>Specify how the compiler should generate branch instructions.
  This option is only supported on the MIPS target.
! The possibilities for <var class="var">type</var> are:
! </p><dl class="table">
! <dt><code class="code">optimal</code></dt>
  <dd><p>Cause a delay slot branch to be used if one is available in the
  current ISA and the delay slot is successfully filled. If the delay slot
  is not filled, a compact branch will be chosen if one is available.
  </p></dd>
! <dt><code class="code">never</code></dt>
  <dd><p>Ensures that compact branch instructions will never be generated.
  </p></dd>
! <dt><code class="code">always</code></dt>
  <dd><p>Ensures that a compact branch instruction will be generated if available.
  If a compact branch instruction is not available,
  a delay slot form of the branch will be used instead.
*************** For pre-R6/microMIPS/MIPS16, this option
*** 1216,1251 ****
  
  
  </dd>
! <dt><code>--with-llsc</code></dt>
! <dd><p>On MIPS targets, make <samp>-mllsc</samp> the default when no
! <samp>-mno-llsc</samp> option is passed.  This is the default for
  Linux-based targets, as the kernel will emulate them if the ISA does
  not provide them.
  </p>
  </dd>
! <dt><code>--without-llsc</code></dt>
! <dd><p>On MIPS targets, make <samp>-mno-llsc</samp> the default when no
! <samp>-mllsc</samp> option is passed.
  </p>
  </dd>
! <dt><code>--with-synci</code></dt>
! <dd><p>On MIPS targets, make <samp>-msynci</samp> the default when no
! <samp>-mno-synci</samp> option is passed.
  </p>
  </dd>
! <dt><code>--without-synci</code></dt>
! <dd><p>On MIPS targets, make <samp>-mno-synci</samp> the default when no
! <samp>-msynci</samp> option is passed.  This is the default.
  </p>
  </dd>
! <dt><code>--with-lxc1-sxc1</code></dt>
! <dd><p>On MIPS targets, make <samp>-mlxc1-sxc1</samp> the default when no
! <samp>-mno-lxc1-sxc1</samp> option is passed.  This is the default.
  </p>
  </dd>
! <dt><code>--without-lxc1-sxc1</code></dt>
! <dd><p>On MIPS targets, make <samp>-mno-lxc1-sxc1</samp> the default when no
! <samp>-mlxc1-sxc1</samp> option is passed.  The indexed load/store
  instructions are not directly a problem but can lead to unexpected
  behaviour when deployed in an application intended for a 32-bit address
  space but run on a 64-bit processor.  The issue is seen because all
--- 1197,1232 ----
  
  
  </dd>
! <dt><code class="code">--with-llsc</code></dt>
! <dd><p>On MIPS targets, make <samp class="option">-mllsc</samp> the default when no
! <samp class="option">-mno-llsc</samp> option is passed.  This is the default for
  Linux-based targets, as the kernel will emulate them if the ISA does
  not provide them.
  </p>
  </dd>
! <dt><code class="code">--without-llsc</code></dt>
! <dd><p>On MIPS targets, make <samp class="option">-mno-llsc</samp> the default when no
! <samp class="option">-mllsc</samp> option is passed.
  </p>
  </dd>
! <dt><code class="code">--with-synci</code></dt>
! <dd><p>On MIPS targets, make <samp class="option">-msynci</samp> the default when no
! <samp class="option">-mno-synci</samp> option is passed.
  </p>
  </dd>
! <dt><code class="code">--without-synci</code></dt>
! <dd><p>On MIPS targets, make <samp class="option">-mno-synci</samp> the default when no
! <samp class="option">-msynci</samp> option is passed.  This is the default.
  </p>
  </dd>
! <dt><code class="code">--with-lxc1-sxc1</code></dt>
! <dd><p>On MIPS targets, make <samp class="option">-mlxc1-sxc1</samp> the default when no
! <samp class="option">-mno-lxc1-sxc1</samp> option is passed.  This is the default.
  </p>
  </dd>
! <dt><code class="code">--without-lxc1-sxc1</code></dt>
! <dd><p>On MIPS targets, make <samp class="option">-mno-lxc1-sxc1</samp> the default when no
! <samp class="option">-mlxc1-sxc1</samp> option is passed.  The indexed load/store
  instructions are not directly a problem but can lead to unexpected
  behaviour when deployed in an application intended for a 32-bit address
  space but run on a 64-bit processor.  The issue is seen because all
*************** known MIPS 64-bit Linux kernels execute
*** 1253,1272 ****
  with 64-bit addressing enabled which affects the overflow behaviour
  of the indexed addressing mode.  GCC will assume that ordinary
  32-bit arithmetic overflow behaviour is the same whether performed
! as an <code>addu</code> instruction or as part of the address calculation
! in <code>lwxc1</code> type instructions.  This assumption holds true in a
  pure 32-bit environment and can hold true in a 64-bit environment if
  the address space is accurately set to be 32-bit for o32 and n32.
  </p>
  </dd>
! <dt><code>--with-madd4</code></dt>
! <dd><p>On MIPS targets, make <samp>-mmadd4</samp> the default when no
! <samp>-mno-madd4</samp> option is passed.  This is the default.
  </p>
  </dd>
! <dt><code>--without-madd4</code></dt>
! <dd><p>On MIPS targets, make <samp>-mno-madd4</samp> the default when no
! <samp>-mmadd4</samp> option is passed.  The <code>madd4</code> instruction
  family can be problematic when targeting a combination of cores that
  implement these instructions differently.  There are two known cores
  that implement these as fused operations instead of unfused (where
--- 1234,1253 ----
  with 64-bit addressing enabled which affects the overflow behaviour
  of the indexed addressing mode.  GCC will assume that ordinary
  32-bit arithmetic overflow behaviour is the same whether performed
! as an <code class="code">addu</code> instruction or as part of the address calculation
! in <code class="code">lwxc1</code> type instructions.  This assumption holds true in a
  pure 32-bit environment and can hold true in a 64-bit environment if
  the address space is accurately set to be 32-bit for o32 and n32.
  </p>
  </dd>
! <dt><code class="code">--with-madd4</code></dt>
! <dd><p>On MIPS targets, make <samp class="option">-mmadd4</samp> the default when no
! <samp class="option">-mno-madd4</samp> option is passed.  This is the default.
  </p>
  </dd>
! <dt><code class="code">--without-madd4</code></dt>
! <dd><p>On MIPS targets, make <samp class="option">-mno-madd4</samp> the default when no
! <samp class="option">-mmadd4</samp> option is passed.  The <code class="code">madd4</code> instruction
  family can be problematic when targeting a combination of cores that
  implement these instructions differently.  There are two known cores
  that implement these as fused operations instead of unfused (where
*************** only way to ensure compatible code is ge
*** 1275,1367 ****
  a performance penalty.
  </p>
  </dd>
! <dt><code>--with-msa</code></dt>
! <dd><p>On MIPS targets, make <samp>-mmsa</samp> the default when no
! <samp>-mno-msa</samp> option is passed.
  </p>
  </dd>
! <dt><code>--without-msa</code></dt>
! <dd><p>On MIPS targets, make <samp>-mno-msa</samp> the default when no
! <samp>-mmsa</samp> option is passed. This is the default.
  </p>
  </dd>
! <dt><code>--with-mips-plt</code></dt>
  <dd><p>On MIPS targets, make use of copy relocations and PLTs.
  These features are extensions to the traditional
  SVR4-based MIPS ABIs and require support from GNU binutils
  and the runtime C library.
  </p>
  </dd>
! <dt><code>--with-stack-clash-protection-guard-size=<var>size</var></code></dt>
  <dd><p>On certain targets this option sets the default stack clash protection guard
! size as a power of two in bytes.  On AArch64 <var>size</var> is required to be either
  12 (4KB) or 16 (64KB).
  </p>
  </dd>
! <dt><code>--with-isa-spec=<var>ISA-spec-string</var></code></dt>
  <dd><p>On RISC-V targets specify the default version of the RISC-V Unprivileged
  (formerly User-Level) ISA specification to produce code conforming to.
! The possibilities for <var>ISA-spec-string</var> are:
! </p><dl compact="compact">
! <dt><code>2.2</code></dt>
  <dd><p>Produce code conforming to version 2.2.
  </p></dd>
! <dt><code>20190608</code></dt>
  <dd><p>Produce code conforming to version 20190608.
  </p></dd>
! <dt><code>20191213</code></dt>
  <dd><p>Produce code conforming to version 20191213.
  </p></dd>
  </dl>
  <p>In the absence of this configuration option the default version is 20191213.
  </p>
  </dd>
! <dt><code>--enable-__cxa_atexit</code></dt>
! <dd><p>Define if you want to use <code>__cxa_atexit</code>, rather than atexit, to
  register C++ destructors for local statics and global objects.
  This is essential for fully standards-compliant handling of
! destructors, but requires <code>__cxa_atexit</code> in libc.  This option is
  currently only available on systems with GNU libc.  When enabled, this
! will cause <samp>-fuse-cxa-atexit</samp> to be passed by default.
  </p>
  </dd>
! <dt><code>--enable-gnu-indirect-function</code></dt>
! <dd><p>Define if you want to enable the <code>ifunc</code> attribute.  This option is
  currently only available on systems with GNU libc on certain targets.
  </p>
  </dd>
! <dt><code>--enable-target-optspace</code></dt>
  <dd><p>Specify that target
  libraries should be optimized for code space instead of code speed.
  This is the default for the m32r platform.
  </p>
  </dd>
! <dt><code>--with-cpp-install-dir=<var>dirname</var></code></dt>
! <dd><p>Specify that the user visible <code>cpp</code> program should be installed
! in <samp><var>prefix</var>/<var>dirname</var>/cpp</samp>, in addition to <var>bindir</var>.
  </p>
  </dd>
! <dt><code>--enable-comdat</code></dt>
  <dd><p>Enable COMDAT group support.  This is primarily used to override the
  automatically detected value.
  </p>
  </dd>
! <dt><code>--enable-initfini-array</code></dt>
! <dd><p>Force the use of sections <code>.init_array</code> and <code>.fini_array</code>
! (instead of <code>.init</code> and <code>.fini</code>) for constructors and
! destructors.  Option <samp>--disable-initfini-array</samp> has the
  opposite effect.  If neither option is specified, the configure script
! will try to guess whether the <code>.init_array</code> and
! <code>.fini_array</code> sections are supported and, if they are, use them.
  </p>
  </dd>
! <dt><code>--enable-link-mutex</code></dt>
  <dd><p>When building GCC, use a mutex to avoid linking the compilers for
  multiple languages at the same time, to avoid thrashing on build
  systems with limited free memory.  The default is not to use such a mutex.
  </p>
  </dd>
! <dt><code>--enable-link-serialization</code></dt>
  <dd><p>When building GCC, use make dependencies to serialize linking the compilers for
  multiple languages, to avoid thrashing on build
  systems with limited free memory.  The default is not to add such
--- 1256,1348 ----
  a performance penalty.
  </p>
  </dd>
! <dt><code class="code">--with-msa</code></dt>
! <dd><p>On MIPS targets, make <samp class="option">-mmsa</samp> the default when no
! <samp class="option">-mno-msa</samp> option is passed.
  </p>
  </dd>
! <dt><code class="code">--without-msa</code></dt>
! <dd><p>On MIPS targets, make <samp class="option">-mno-msa</samp> the default when no
! <samp class="option">-mmsa</samp> option is passed. This is the default.
  </p>
  </dd>
! <dt><code class="code">--with-mips-plt</code></dt>
  <dd><p>On MIPS targets, make use of copy relocations and PLTs.
  These features are extensions to the traditional
  SVR4-based MIPS ABIs and require support from GNU binutils
  and the runtime C library.
  </p>
  </dd>
! <dt><code class="code">--with-stack-clash-protection-guard-size=<var class="var">size</var></code></dt>
  <dd><p>On certain targets this option sets the default stack clash protection guard
! size as a power of two in bytes.  On AArch64 <var class="var">size</var> is required to be either
  12 (4KB) or 16 (64KB).
  </p>
  </dd>
! <dt><code class="code">--with-isa-spec=<var class="var">ISA-spec-string</var></code></dt>
  <dd><p>On RISC-V targets specify the default version of the RISC-V Unprivileged
  (formerly User-Level) ISA specification to produce code conforming to.
! The possibilities for <var class="var">ISA-spec-string</var> are:
! </p><dl class="table">
! <dt><code class="code">2.2</code></dt>
  <dd><p>Produce code conforming to version 2.2.
  </p></dd>
! <dt><code class="code">20190608</code></dt>
  <dd><p>Produce code conforming to version 20190608.
  </p></dd>
! <dt><code class="code">20191213</code></dt>
  <dd><p>Produce code conforming to version 20191213.
  </p></dd>
  </dl>
  <p>In the absence of this configuration option the default version is 20191213.
  </p>
  </dd>
! <dt><code class="code">--enable-__cxa_atexit</code></dt>
! <dd><p>Define if you want to use <code class="code">__cxa_atexit</code>, rather than atexit, to
  register C++ destructors for local statics and global objects.
  This is essential for fully standards-compliant handling of
! destructors, but requires <code class="code">__cxa_atexit</code> in libc.  This option is
  currently only available on systems with GNU libc.  When enabled, this
! will cause <samp class="option">-fuse-cxa-atexit</samp> to be passed by default.
  </p>
  </dd>
! <dt><code class="code">--enable-gnu-indirect-function</code></dt>
! <dd><p>Define if you want to enable the <code class="code">ifunc</code> attribute.  This option is
  currently only available on systems with GNU libc on certain targets.
  </p>
  </dd>
! <dt><code class="code">--enable-target-optspace</code></dt>
  <dd><p>Specify that target
  libraries should be optimized for code space instead of code speed.
  This is the default for the m32r platform.
  </p>
  </dd>
! <dt><code class="code">--with-cpp-install-dir=<var class="var">dirname</var></code></dt>
! <dd><p>Specify that the user visible <code class="command">cpp</code> program should be installed
! in <samp class="file"><var class="var">prefix</var>/<var class="var">dirname</var>/cpp</samp>, in addition to <var class="var">bindir</var>.
  </p>
  </dd>
! <dt><code class="code">--enable-comdat</code></dt>
  <dd><p>Enable COMDAT group support.  This is primarily used to override the
  automatically detected value.
  </p>
  </dd>
! <dt><code class="code">--enable-initfini-array</code></dt>
! <dd><p>Force the use of sections <code class="code">.init_array</code> and <code class="code">.fini_array</code>
! (instead of <code class="code">.init</code> and <code class="code">.fini</code>) for constructors and
! destructors.  Option <samp class="option">--disable-initfini-array</samp> has the
  opposite effect.  If neither option is specified, the configure script
! will try to guess whether the <code class="code">.init_array</code> and
! <code class="code">.fini_array</code> sections are supported and, if they are, use them.
  </p>
  </dd>
! <dt><code class="code">--enable-link-mutex</code></dt>
  <dd><p>When building GCC, use a mutex to avoid linking the compilers for
  multiple languages at the same time, to avoid thrashing on build
  systems with limited free memory.  The default is not to use such a mutex.
  </p>
  </dd>
! <dt><code class="code">--enable-link-serialization</code></dt>
  <dd><p>When building GCC, use make dependencies to serialize linking the compilers for
  multiple languages, to avoid thrashing on build
  systems with limited free memory.  The default is not to add such
*************** compilers concurrently.  If the argument
*** 1370,1402 ****
  that number of concurrent link processes for the large binaries.
  </p>
  </dd>
! <dt><code>--enable-maintainer-mode</code></dt>
  <dd><p>The build rules that regenerate the Autoconf and Automake output files as
! well as the GCC master message catalog <samp>gcc.pot</samp> are normally
  disabled.  This is because it can only be rebuilt if the complete source
  tree is present.  If you have changed the sources and want to rebuild the
! catalog, configuring with <samp>--enable-maintainer-mode</samp> will enable
! this.  Note that you need a recent version of the <code>gettext</code> tools
  to do so.
  </p>
  </dd>
! <dt><code>--disable-bootstrap</code></dt>
  <dd><p>For a native build, the default configuration is to perform
! a 3-stage bootstrap of the compiler when &lsquo;<samp>make</samp>&rsquo; is invoked,
  testing that GCC can compile itself correctly.  If you want to disable
! this process, you can configure with <samp>--disable-bootstrap</samp>.
  </p>
  </dd>
! <dt><code>--enable-bootstrap</code></dt>
  <dd><p>In special cases, you may want to perform a 3-stage build
  even if the target and host triplets are different.
  This is possible when the host can run code compiled for
  the target (e.g. host is i686-linux, target is i486-linux).
  Starting from GCC 4.2, to do this you have to configure explicitly
! with <samp>--enable-bootstrap</samp>.
  </p>
  </dd>
! <dt><code>--enable-generated-files-in-srcdir</code></dt>
  <dd><p>Neither the .c and .h files that are generated from Bison and flex nor the
  info manuals and man pages that are built from the .texi files are present
  in the repository development tree.  When building GCC from that development tree,
--- 1351,1383 ----
  that number of concurrent link processes for the large binaries.
  </p>
  </dd>
! <dt><code class="code">--enable-maintainer-mode</code></dt>
  <dd><p>The build rules that regenerate the Autoconf and Automake output files as
! well as the GCC master message catalog <samp class="file">gcc.pot</samp> are normally
  disabled.  This is because it can only be rebuilt if the complete source
  tree is present.  If you have changed the sources and want to rebuild the
! catalog, configuring with <samp class="option">--enable-maintainer-mode</samp> will enable
! this.  Note that you need a recent version of the <code class="code">gettext</code> tools
  to do so.
  </p>
  </dd>
! <dt><code class="code">--disable-bootstrap</code></dt>
  <dd><p>For a native build, the default configuration is to perform
! a 3-stage bootstrap of the compiler when &lsquo;<samp class="samp">make</samp>&rsquo; is invoked,
  testing that GCC can compile itself correctly.  If you want to disable
! this process, you can configure with <samp class="option">--disable-bootstrap</samp>.
  </p>
  </dd>
! <dt><code class="code">--enable-bootstrap</code></dt>
  <dd><p>In special cases, you may want to perform a 3-stage build
  even if the target and host triplets are different.
  This is possible when the host can run code compiled for
  the target (e.g. host is i686-linux, target is i486-linux).
  Starting from GCC 4.2, to do this you have to configure explicitly
! with <samp class="option">--enable-bootstrap</samp>.
  </p>
  </dd>
! <dt><code class="code">--enable-generated-files-in-srcdir</code></dt>
  <dd><p>Neither the .c and .h files that are generated from Bison and flex nor the
  info manuals and man pages that are built from the .texi files are present
  in the repository development tree.  When building GCC from that development tree,
*************** or from one of our snapshots, those gene
*** 1404,1643 ****
  build directory, which allows for the source to be in a readonly
  directory.
  </p>
! <p>If you configure with <samp>--enable-generated-files-in-srcdir</samp> then those
  generated files will go into the source directory.  This is mainly intended
  for generating release or prerelease tarballs of the GCC sources, since it
  is not a requirement that the users of source releases to have flex, Bison,
  or makeinfo.
  </p>
  </dd>
! <dt><code>--enable-version-specific-runtime-libs</code></dt>
  <dd><p>Specify
  that runtime libraries should be installed in the compiler specific
! subdirectory (<samp><var>libdir</var>/gcc</samp>) rather than the usual places.  In
! addition, &lsquo;<samp>libstdc++</samp>&rsquo;&rsquo;s include files will be installed into
! <samp><var>libdir</var></samp> unless you overruled it by using
! <samp>--with-gxx-include-dir=<var>dirname</var></samp>.  Using this option is
  particularly useful if you intend to use several versions of GCC in
! parallel.  The default is &lsquo;<samp>yes</samp>&rsquo; for &lsquo;<samp>libada</samp>&rsquo;, and &lsquo;<samp>no</samp>&rsquo; for
  the remaining libraries.
  </p>
  </dd>
! <dt><code>--with-darwin-extra-rpath</code></dt>
  <dd><p>This is provided to allow distributions to add a single additional
  runpath on Darwin / macOS systems. This allows for cases where the
  installed GCC library directories are then symlinked to a common
  directory outside of the GCC installation.
  </p>
  </dd>
! <dt><code><a name="WithAixSoname"></a>--with-aix-soname=&lsquo;<samp>aix</samp>&rsquo;, &lsquo;<samp>svr4</samp>&rsquo; or &lsquo;<samp>both</samp>&rsquo;</code></dt>
! <dd><p>Traditional AIX shared library versioning (versioned <code>Shared Object</code>
! files as members of unversioned <code>Archive Library</code> files named
! &lsquo;<samp>lib.a</samp>&rsquo;) causes numerous headaches for package managers. However,
! <code>Import Files</code> as members of <code>Archive Library</code> files allow for
! <strong>filename-based versioning</strong> of shared libraries as seen on Linux/SVR4,
  where this is called the &quot;SONAME&quot;. But as they prevent static linking,
! <code>Import Files</code> may be used with <code>Runtime Linking</code> only, where the
! linker does search for &lsquo;<samp>libNAME.so</samp>&rsquo; before &lsquo;<samp>libNAME.a</samp>&rsquo; library
! filenames with the &lsquo;<samp>-lNAME</samp>&rsquo; linker flag.
  </p>
! <a name="AixLdCommand"></a><p>For detailed information please refer to the AIX
! <a href="https://www.ibm.com/support/knowledgecenter/search/%22the%20ld%20command%2C%20also%20called%20the%20linkage%20editor%20or%20binder%22">ld
  Command</a> reference.
  </p>
  <p>As long as shared library creation is enabled, upon:
! </p><dl compact="compact">
! <dt><code>--with-aix-soname=aix</code></dt>
! <dt><code>--with-aix-soname=both</code></dt>
! <dd><p>A (traditional AIX) <code>Shared Archive Library</code> file is created:
!  </p><ul>
! <li> using the &lsquo;<samp>libNAME.a</samp>&rsquo; filename scheme
!   </li><li> with the <code>Shared Object</code> file as archive member named
!   &lsquo;<samp>libNAME.so.V</samp>&rsquo; (except for &lsquo;<samp>libgcc_s</samp>&rsquo;, where the <code>Shared
!   Object</code> file is named &lsquo;<samp>shr.o</samp>&rsquo; for backwards compatibility), which
!   <ul class="no-bullet">
! <li>- is used for runtime loading from inside the &lsquo;<samp>libNAME.a</samp>&rsquo; file
!    </li><li>- is used for dynamic loading via
!    <code>dlopen(&quot;libNAME.a(libNAME.so.V)&quot;, RTLD_MEMBER)</code>
!    </li><li>- is used for shared linking
!    </li><li>- is used for static linking, so no separate <code>Static Archive
     Library</code> file is needed
    </li></ul>
  </li></ul>
  </dd>
! <dt><code>--with-aix-soname=both</code></dt>
! <dt><code>--with-aix-soname=svr4</code></dt>
! <dd><p>A (second) <code>Shared Archive Library</code> file is created:
!  </p><ul>
! <li> using the &lsquo;<samp>libNAME.so.V</samp>&rsquo; filename scheme
!  </li><li> with the <code>Shared Object</code> file as archive member named
!  &lsquo;<samp>shr.o</samp>&rsquo;, which
!   <ul class="no-bullet">
! <li>- is created with the <code>-G linker flag</code>
!    </li><li>- has the <code>F_LOADONLY</code> flag set
!    </li><li>- is used for runtime loading from inside the &lsquo;<samp>libNAME.so.V</samp>&rsquo; file
!    </li><li>- is used for dynamic loading via <code>dlopen(&quot;libNAME.so.V(shr.o)&quot;,
     RTLD_MEMBER)</code>
    </li></ul>
! </li><li> with the <code>Import File</code> as archive member named &lsquo;<samp>shr.imp</samp>&rsquo;,
   which
!   <ul class="no-bullet">
! <li>- refers to &lsquo;<samp>libNAME.so.V(shr.o)</samp>&rsquo; as the &quot;SONAME&quot;, to be recorded
!    in the <code>Loader Section</code> of subsequent binaries
!    </li><li>- indicates whether &lsquo;<samp>libNAME.so.V(shr.o)</samp>&rsquo; is 32 or 64 bit
!    </li><li>- lists all the public symbols exported by &lsquo;<samp>lib.so.V(shr.o)</samp>&rsquo;,
!    eventually decorated with the <code>&lsquo;<samp>weak</samp>&rsquo; Keyword</code>
!    </li><li>- is necessary for shared linking against &lsquo;<samp>lib.so.V(shr.o)</samp>&rsquo;
     </li></ul>
  </li></ul>
! <p>A symbolic link using the &lsquo;<samp>libNAME.so</samp>&rsquo; filename scheme is created:
!   </p><ul>
! <li> pointing to the &lsquo;<samp>libNAME.so.V</samp>&rsquo; <code>Shared Archive Library</code> file
!   </li><li> to permit the <code>ld Command</code> to find &lsquo;<samp>lib.so.V(shr.imp)</samp>&rsquo; via
!   the &lsquo;<samp>-lNAME</samp>&rsquo; argument (requires <code>Runtime Linking</code> to be enabled)
!   </li><li> to permit dynamic loading of &lsquo;<samp>lib.so.V(shr.o)</samp>&rsquo; without the need
!   to specify the version number via <code>dlopen(&quot;libNAME.so(shr.o)&quot;,
    RTLD_MEMBER)</code>
    </li></ul>
  </dd>
  </dl>
  
  <p>As long as static library creation is enabled, upon:
! </p><dl compact="compact">
! <dt><code>--with-aix-soname=svr4</code></dt>
! <dd><p>A <code>Static Archive Library</code> is created:
!  </p><ul>
! <li> using the &lsquo;<samp>libNAME.a</samp>&rsquo; filename scheme
!  </li><li> with all the <code>Static Object</code> files as archive members, which
!   <ul class="no-bullet">
! <li>- are used for static linking
    </li></ul>
  </li></ul>
  </dd>
  </dl>
  
! <p>While the aix-soname=&lsquo;<samp>svr4</samp>&rsquo; option does not create <code>Shared Object</code>
! files as members of unversioned <code>Archive Library</code> files any more, package
  managers still are responsible to
! <a href="./specific.html#TransferAixShobj">transfer</a> <code>Shared Object</code> files
! found as member of a previously installed unversioned <code>Archive Library</code>
! file into the newly installed <code>Archive Library</code> file with the same
  filename.
  </p>
! <p><em>WARNING:</em> Creating <code>Shared Object</code> files with <code>Runtime Linking</code>
! enabled may bloat the TOC, eventually leading to <code>TOC overflow</code> errors,
! requiring the use of either the <samp>-Wl,-bbigtoc</samp> linker flag (seen to
! break with the <code>GDB</code> debugger) or some of the TOC-related compiler flags,
  see &ldquo;RS/6000 and PowerPC Options&rdquo; in the main manual.
  </p>
! <p><samp>--with-aix-soname</samp> is currently supported by &lsquo;<samp>libgcc_s</samp>&rsquo; only, so
  this option is still experimental and not for normal use yet.
  </p>
! <p>Default is the traditional behavior <samp>--with-aix-soname=&lsquo;<samp>aix</samp>&rsquo;</samp>.
  </p>
  </dd>
! <dt><code>--enable-languages=<var>lang1</var>,<var>lang2</var>,&hellip;</code></dt>
  <dd><p>Specify that only a particular subset of compilers and
  their runtime libraries should be built.  For a list of valid values for
! <var>langN</var> you can issue the following command in the
! <samp>gcc</samp> directory of your GCC source tree:<br>
! </p><div class="smallexample">
! <pre class="smallexample">grep ^language= */config-lang.in
  </pre></div>
  <p>Currently, you can use any of the following:
! <code>all</code>, <code>default</code>, <code>ada</code>, <code>c</code>, <code>c++</code>,
! <code>cobol</code>, <code>d</code>, <code>fortran</code>, <code>go</code>, <code>jit</code>,
! <code>lto</code>, <code>m2</code>, <code>objc</code>, <code>obj-c++</code>.
  Building the Ada compiler has special requirements, see below.
! If you do not pass this flag, or specify the option <code>default</code>, then the
! default languages available in the <samp>gcc</samp> sub-tree will be configured.
  Ada, COBOL, D, Go, Jit, Objective-C++ and Modula-2 are not default languages.
  LTO is not a
! default language, but is built by default because <samp>--enable-lto</samp> is
  enabled by default.  The other languages are default languages.  If
! <code>all</code> is specified, then all available languages are built.  An
! exception is <code>jit</code> language, which requires
! <samp>--enable-host-shared</samp> to be included with <code>all</code>.
  </p>
  </dd>
! <dt><code>--enable-stage1-languages=<var>lang1</var>,<var>lang2</var>,&hellip;</code></dt>
  <dd><p>Specify that a particular subset of compilers and their runtime
  libraries should be built with the system C compiler during stage 1 of
  the bootstrap process, rather than only in later stages with the
  bootstrapped C compiler.  The list of valid values is the same as for
! <samp>--enable-languages</samp>, and the option <code>all</code> will select all
! of the languages enabled by <samp>--enable-languages</samp>.  This option is
  primarily useful for GCC development; for instance, when a development
  version of the compiler cannot bootstrap due to compiler bugs, or when
  one is debugging front ends other than the C front end.  When this
  option is used, one can then build the target libraries for the
! specified languages with the stage-1 compiler by using <code>make
  stage1-bubble all-target</code>, or run the testsuite on the stage-1 compiler
! for the specified languages using <code>make stage1-start check-gcc</code>.
  </p>
  </dd>
! <dt><code>--disable-libada</code></dt>
  <dd><p>Specify that the run-time libraries and tools used by GNAT should not
  be built.  This can be useful for debugging, or for compatibility with
  previous Ada build procedures, when it was required to explicitly
! do a &lsquo;<samp>make -C gcc gnatlib_and_tools</samp>&rsquo;.
  </p>
  </dd>
! <dt><code>--disable-libgm2</code></dt>
  <dd><p>Specify that the run-time libraries and tools used by Modula-2 should not
  be built.  This can be useful for debugging.
  </p>
  </dd>
! <dt><code>--disable-libsanitizer</code></dt>
  <dd><p>Specify that the run-time libraries for the various sanitizers should
  not be built.
  </p>
  </dd>
! <dt><code>--disable-libssp</code></dt>
  <dd><p>Specify that the run-time libraries for stack smashing protection
  should not be built or linked against.  On many targets library support
  is provided by the C library instead.
  </p>
  </dd>
! <dt><code>--disable-libquadmath</code></dt>
  <dd><p>Specify that the GCC quad-precision math library should not be built.
  On some systems, the library is required to be linkable when building
! the Fortran front end, unless <samp>--disable-libquadmath-support</samp>
  is used.
  </p>
  </dd>
! <dt><code>--disable-libquadmath-support</code></dt>
! <dd><p>Specify that the Fortran front end and <code>libgfortran</code> do not add
! support for <code>libquadmath</code> on systems supporting it.
  </p>
  </dd>
! <dt><code>--disable-libgomp</code></dt>
  <dd><p>Specify that the GNU Offloading and Multi Processing Runtime Library
  should not be built.
  </p>
  </dd>
! <dt><code>--disable-libvtv</code></dt>
  <dd><p>Specify that the run-time libraries used by vtable verification
  should not be built.
  </p>
  </dd>
! <dt><code>--with-dwarf2</code></dt>
  <dd><p>Specify that the compiler should
  use DWARF debugging information as the default; the exact
  DWARF version that is the default is target-specific.
  </p>
  </dd>
! <dt><code>--with-advance-toolchain=<var>at</var></code></dt>
  <dd><p>On 64-bit PowerPC Linux systems, configure the compiler to use the
  header files, library files, and the dynamic linker from the Advance
! Toolchain release <var>at</var> instead of the default versions that are
  provided by the Linux distribution.  In general, this option is
  intended for the developers of GCC, and it is not intended for general
  use.
  </p>
  </dd>
! <dt><code>--enable-targets=all</code></dt>
! <dt><code>--enable-targets=<var>target_list</var></code></dt>
  <dd><p>Some GCC targets, e.g. powerpc64-linux, build bi-arch compilers.
  These are compilers that are able to generate either 64-bit or 32-bit
  code.  Typically, the corresponding 32-bit target, e.g.
--- 1385,1624 ----
  build directory, which allows for the source to be in a readonly
  directory.
  </p>
! <p>If you configure with <samp class="option">--enable-generated-files-in-srcdir</samp> then those
  generated files will go into the source directory.  This is mainly intended
  for generating release or prerelease tarballs of the GCC sources, since it
  is not a requirement that the users of source releases to have flex, Bison,
  or makeinfo.
  </p>
  </dd>
! <dt><code class="code">--enable-version-specific-runtime-libs</code></dt>
  <dd><p>Specify
  that runtime libraries should be installed in the compiler specific
! subdirectory (<samp class="file"><var class="var">libdir</var>/gcc</samp>) rather than the usual places.  In
! addition, &lsquo;<samp class="samp">libstdc++</samp>&rsquo;&rsquo;s include files will be installed into
! <samp class="file"><var class="var">libdir</var></samp> unless you overruled it by using
! <samp class="option">--with-gxx-include-dir=<var class="var">dirname</var></samp>.  Using this option is
  particularly useful if you intend to use several versions of GCC in
! parallel.  The default is &lsquo;<samp class="samp">yes</samp>&rsquo; for &lsquo;<samp class="samp">libada</samp>&rsquo;, and &lsquo;<samp class="samp">no</samp>&rsquo; for
  the remaining libraries.
  </p>
  </dd>
! <dt><code class="code">--with-darwin-extra-rpath</code></dt>
  <dd><p>This is provided to allow distributions to add a single additional
  runpath on Darwin / macOS systems. This allows for cases where the
  installed GCC library directories are then symlinked to a common
  directory outside of the GCC installation.
  </p>
  </dd>
! <dt><code class="code"><a class="anchor" id="WithAixSoname"></a>--with-aix-soname=&lsquo;<samp class="samp">aix</samp>&rsquo;, &lsquo;<samp class="samp">svr4</samp>&rsquo; or &lsquo;<samp class="samp">both</samp>&rsquo;</code></dt>
! <dd><p>Traditional AIX shared library versioning (versioned <code class="code">Shared Object</code>
! files as members of unversioned <code class="code">Archive Library</code> files named
! &lsquo;<samp class="samp">lib.a</samp>&rsquo;) causes numerous headaches for package managers. However,
! <code class="code">Import Files</code> as members of <code class="code">Archive Library</code> files allow for
! <strong class="strong">filename-based versioning</strong> of shared libraries as seen on Linux/SVR4,
  where this is called the &quot;SONAME&quot;. But as they prevent static linking,
! <code class="code">Import Files</code> may be used with <code class="code">Runtime Linking</code> only, where the
! linker does search for &lsquo;<samp class="samp">libNAME.so</samp>&rsquo; before &lsquo;<samp class="samp">libNAME.a</samp>&rsquo; library
! filenames with the &lsquo;<samp class="samp">-lNAME</samp>&rsquo; linker flag.
  </p>
! <a class="anchor" id="AixLdCommand"></a><p>For detailed information please refer to the AIX
! <a class="uref" href="https://www.ibm.com/support/knowledgecenter/search/%22the%20ld%20command%2C%20also%20called%20the%20linkage%20editor%20or%20binder%22">ld
  Command</a> reference.
  </p>
  <p>As long as shared library creation is enabled, upon:
! </p><dl class="table">
! <dt><code class="code">--with-aix-soname=aix</code></dt>
! <dt><code class="code">--with-aix-soname=both</code></dt>
! <dd><p>A (traditional AIX) <code class="code">Shared Archive Library</code> file is created:
!  </p><ul class="itemize mark-bullet">
! <li>using the &lsquo;<samp class="samp">libNAME.a</samp>&rsquo; filename scheme
!   </li><li>with the <code class="code">Shared Object</code> file as archive member named
!   &lsquo;<samp class="samp">libNAME.so.V</samp>&rsquo; (except for &lsquo;<samp class="samp">libgcc_s</samp>&rsquo;, where the <code class="code">Shared
!   Object</code> file is named &lsquo;<samp class="samp">shr.o</samp>&rsquo; for backwards compatibility), which
!   <ul class="itemize mark-minus">
! <li>is used for runtime loading from inside the &lsquo;<samp class="samp">libNAME.a</samp>&rsquo; file
!    </li><li>is used for dynamic loading via
!    <code class="code">dlopen(&quot;libNAME.a(libNAME.so.V)&quot;, RTLD_MEMBER)</code>
!    </li><li>is used for shared linking
!    </li><li>is used for static linking, so no separate <code class="code">Static Archive
     Library</code> file is needed
    </li></ul>
  </li></ul>
  </dd>
! <dt><code class="code">--with-aix-soname=both</code></dt>
! <dt><code class="code">--with-aix-soname=svr4</code></dt>
! <dd><p>A (second) <code class="code">Shared Archive Library</code> file is created:
!  </p><ul class="itemize mark-bullet">
! <li>using the &lsquo;<samp class="samp">libNAME.so.V</samp>&rsquo; filename scheme
!  </li><li>with the <code class="code">Shared Object</code> file as archive member named
!  &lsquo;<samp class="samp">shr.o</samp>&rsquo;, which
!   <ul class="itemize mark-minus">
! <li>is created with the <code class="code">-G linker flag</code>
!    </li><li>has the <code class="code">F_LOADONLY</code> flag set
!    </li><li>is used for runtime loading from inside the &lsquo;<samp class="samp">libNAME.so.V</samp>&rsquo; file
!    </li><li>is used for dynamic loading via <code class="code">dlopen(&quot;libNAME.so.V(shr.o)&quot;,
     RTLD_MEMBER)</code>
    </li></ul>
! </li><li>with the <code class="code">Import File</code> as archive member named &lsquo;<samp class="samp">shr.imp</samp>&rsquo;,
   which
!   <ul class="itemize mark-minus">
! <li>refers to &lsquo;<samp class="samp">libNAME.so.V(shr.o)</samp>&rsquo; as the &quot;SONAME&quot;, to be recorded
!    in the <code class="code">Loader Section</code> of subsequent binaries
!    </li><li>indicates whether &lsquo;<samp class="samp">libNAME.so.V(shr.o)</samp>&rsquo; is 32 or 64 bit
!    </li><li>lists all the public symbols exported by &lsquo;<samp class="samp">lib.so.V(shr.o)</samp>&rsquo;,
!    eventually decorated with the <code class="code">&lsquo;<samp class="samp">weak</samp>&rsquo; Keyword</code>
!    </li><li>is necessary for shared linking against &lsquo;<samp class="samp">lib.so.V(shr.o)</samp>&rsquo;
     </li></ul>
  </li></ul>
! <p>A symbolic link using the &lsquo;<samp class="samp">libNAME.so</samp>&rsquo; filename scheme is created:
!   </p><ul class="itemize mark-bullet">
! <li>pointing to the &lsquo;<samp class="samp">libNAME.so.V</samp>&rsquo; <code class="code">Shared Archive Library</code> file
!   </li><li>to permit the <code class="code">ld Command</code> to find &lsquo;<samp class="samp">lib.so.V(shr.imp)</samp>&rsquo; via
!   the &lsquo;<samp class="samp">-lNAME</samp>&rsquo; argument (requires <code class="code">Runtime Linking</code> to be enabled)
!   </li><li>to permit dynamic loading of &lsquo;<samp class="samp">lib.so.V(shr.o)</samp>&rsquo; without the need
!   to specify the version number via <code class="code">dlopen(&quot;libNAME.so(shr.o)&quot;,
    RTLD_MEMBER)</code>
    </li></ul>
  </dd>
  </dl>
  
  <p>As long as static library creation is enabled, upon:
! </p><dl class="table">
! <dt><code class="code">--with-aix-soname=svr4</code></dt>
! <dd><p>A <code class="code">Static Archive Library</code> is created:
!  </p><ul class="itemize mark-bullet">
! <li>using the &lsquo;<samp class="samp">libNAME.a</samp>&rsquo; filename scheme
!  </li><li>with all the <code class="code">Static Object</code> files as archive members, which
!   <ul class="itemize mark-minus">
! <li>are used for static linking
    </li></ul>
  </li></ul>
  </dd>
  </dl>
  
! <p>While the aix-soname=&lsquo;<samp class="samp">svr4</samp>&rsquo; option does not create <code class="code">Shared Object</code>
! files as members of unversioned <code class="code">Archive Library</code> files any more, package
  managers still are responsible to
! <a class="uref" href="./specific.html#TransferAixShobj">transfer</a> <code class="code">Shared Object</code> files
! found as member of a previously installed unversioned <code class="code">Archive Library</code>
! file into the newly installed <code class="code">Archive Library</code> file with the same
  filename.
  </p>
! <p><em class="emph">WARNING:</em> Creating <code class="code">Shared Object</code> files with <code class="code">Runtime Linking</code>
! enabled may bloat the TOC, eventually leading to <code class="code">TOC overflow</code> errors,
! requiring the use of either the <samp class="option">-Wl,-bbigtoc</samp> linker flag (seen to
! break with the <code class="code">GDB</code> debugger) or some of the TOC-related compiler flags,
  see &ldquo;RS/6000 and PowerPC Options&rdquo; in the main manual.
  </p>
! <p><samp class="option">--with-aix-soname</samp> is currently supported by &lsquo;<samp class="samp">libgcc_s</samp>&rsquo; only, so
  this option is still experimental and not for normal use yet.
  </p>
! <p>Default is the traditional behavior <samp class="option">--with-aix-soname=&lsquo;<samp class="samp">aix</samp>&rsquo;</samp>.
  </p>
  </dd>
! <dt><code class="code">--enable-languages=<var class="var">lang1</var>,<var class="var">lang2</var>,&hellip;</code></dt>
  <dd><p>Specify that only a particular subset of compilers and
  their runtime libraries should be built.  For a list of valid values for
! <var class="var">langN</var> you can issue the following command in the
! <samp class="file">gcc</samp> directory of your GCC source tree:<br>
! </p><div class="example smallexample">
! <pre class="example-preformatted">grep ^language= */config-lang.in
  </pre></div>
  <p>Currently, you can use any of the following:
! <code class="code">all</code>, <code class="code">default</code>, <code class="code">ada</code>, <code class="code">c</code>, <code class="code">c++</code>,
! <code class="code">cobol</code>, <code class="code">d</code>, <code class="code">fortran</code>, <code class="code">go</code>, <code class="code">jit</code>,
! <code class="code">lto</code>, <code class="code">m2</code>, <code class="code">objc</code>, <code class="code">obj-c++</code>.
  Building the Ada compiler has special requirements, see below.
! If you do not pass this flag, or specify the option <code class="code">default</code>, then the
! default languages available in the <samp class="file">gcc</samp> sub-tree will be configured.
  Ada, COBOL, D, Go, Jit, Objective-C++ and Modula-2 are not default languages.
  LTO is not a
! default language, but is built by default because <samp class="option">--enable-lto</samp> is
  enabled by default.  The other languages are default languages.  If
! <code class="code">all</code> is specified, then all available languages are built.  An
! exception is <code class="code">jit</code> language, which requires
! <samp class="option">--enable-host-shared</samp> to be included with <code class="code">all</code>.
  </p>
  </dd>
! <dt><code class="code">--enable-stage1-languages=<var class="var">lang1</var>,<var class="var">lang2</var>,&hellip;</code></dt>
  <dd><p>Specify that a particular subset of compilers and their runtime
  libraries should be built with the system C compiler during stage 1 of
  the bootstrap process, rather than only in later stages with the
  bootstrapped C compiler.  The list of valid values is the same as for
! <samp class="option">--enable-languages</samp>, and the option <code class="code">all</code> will select all
! of the languages enabled by <samp class="option">--enable-languages</samp>.  This option is
  primarily useful for GCC development; for instance, when a development
  version of the compiler cannot bootstrap due to compiler bugs, or when
  one is debugging front ends other than the C front end.  When this
  option is used, one can then build the target libraries for the
! specified languages with the stage-1 compiler by using <code class="command">make
  stage1-bubble all-target</code>, or run the testsuite on the stage-1 compiler
! for the specified languages using <code class="command">make stage1-start check-gcc</code>.
  </p>
  </dd>
! <dt><code class="code">--disable-libada</code></dt>
  <dd><p>Specify that the run-time libraries and tools used by GNAT should not
  be built.  This can be useful for debugging, or for compatibility with
  previous Ada build procedures, when it was required to explicitly
! do a &lsquo;<samp class="samp">make -C gcc gnatlib_and_tools</samp>&rsquo;.
  </p>
  </dd>
! <dt><code class="code">--disable-libgm2</code></dt>
  <dd><p>Specify that the run-time libraries and tools used by Modula-2 should not
  be built.  This can be useful for debugging.
  </p>
  </dd>
! <dt><code class="code">--disable-libsanitizer</code></dt>
  <dd><p>Specify that the run-time libraries for the various sanitizers should
  not be built.
  </p>
  </dd>
! <dt><code class="code">--disable-libssp</code></dt>
  <dd><p>Specify that the run-time libraries for stack smashing protection
  should not be built or linked against.  On many targets library support
  is provided by the C library instead.
  </p>
  </dd>
! <dt><code class="code">--disable-libquadmath</code></dt>
  <dd><p>Specify that the GCC quad-precision math library should not be built.
  On some systems, the library is required to be linkable when building
! the Fortran front end, unless <samp class="option">--disable-libquadmath-support</samp>
  is used.
  </p>
  </dd>
! <dt><code class="code">--disable-libquadmath-support</code></dt>
! <dd><p>Specify that the Fortran front end and <code class="code">libgfortran</code> do not add
! support for <code class="code">libquadmath</code> on systems supporting it.
  </p>
  </dd>
! <dt><code class="code">--disable-libgomp</code></dt>
  <dd><p>Specify that the GNU Offloading and Multi Processing Runtime Library
  should not be built.
  </p>
  </dd>
! <dt><code class="code">--disable-libvtv</code></dt>
  <dd><p>Specify that the run-time libraries used by vtable verification
  should not be built.
  </p>
  </dd>
! <dt><code class="code">--with-dwarf2</code></dt>
  <dd><p>Specify that the compiler should
  use DWARF debugging information as the default; the exact
  DWARF version that is the default is target-specific.
  </p>
  </dd>
! <dt><code class="code">--with-advance-toolchain=<var class="var">at</var></code></dt>
  <dd><p>On 64-bit PowerPC Linux systems, configure the compiler to use the
  header files, library files, and the dynamic linker from the Advance
! Toolchain release <var class="var">at</var> instead of the default versions that are
  provided by the Linux distribution.  In general, this option is
  intended for the developers of GCC, and it is not intended for general
  use.
  </p>
  </dd>
! <dt><code class="code">--enable-targets=all</code></dt>
! <dt><code class="code">--enable-targets=<var class="var">target_list</var></code></dt>
  <dd><p>Some GCC targets, e.g. powerpc64-linux, build bi-arch compilers.
  These are compilers that are able to generate either 64-bit or 32-bit
  code.  Typically, the corresponding 32-bit target, e.g.
*************** Currently, this option only affects spar
*** 1651,1825 ****
  mips-linux and s390-linux.
  </p>
  </dd>
! <dt><code>--enable-default-pie</code></dt>
! <dd><p>Turn on <samp>-fPIE</samp> and <samp>-pie</samp> by default.
  </p>
  </dd>
! <dt><code>--enable-secureplt</code></dt>
! <dd><p>This option enables <samp>-msecure-plt</samp> by default for powerpc-linux.
  See &ldquo;RS/6000 and PowerPC Options&rdquo; in the main manual
  </p>
  </dd>
! <dt><code>--enable-default-ssp</code></dt>
! <dd><p>Turn on <samp>-fstack-protector-strong</samp> by default.
  </p>
  </dd>
! <dt><code>--enable-cld</code></dt>
! <dd><p>This option enables <samp>-mcld</samp> by default for 32-bit x86 targets.
  See &ldquo;i386 and x86-64 Options&rdquo; in the main manual
  </p>
  </dd>
! <dt><code>--enable-large-address-aware</code></dt>
! <dd><p>The <samp>--enable-large-address-aware</samp> option arranges for MinGW
! executables to be linked using the <samp>--large-address-aware</samp>
  option, that enables the use of more than 2GB of memory.  If GCC is
  configured with this option, its effects can be reversed by passing the
! <samp>-Wl,--disable-large-address-aware</samp> option to the so-configured
  compiler driver.
  </p>
  </dd>
! <dt><code>--enable-win32-registry</code></dt>
! <dt><code>--enable-win32-registry=<var>key</var></code></dt>
! <dt><code>--disable-win32-registry</code></dt>
! <dd><p>The <samp>--enable-win32-registry</samp> option enables Microsoft Windows-hosted GCC
  to look up installations paths in the registry using the following key:
  </p>
! <div class="smallexample">
! <pre class="smallexample"><code>HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\<var>key</var></code>
  </pre></div>
  
! <p><var>key</var> defaults to GCC version number, and can be overridden by the
! <samp>--enable-win32-registry=<var>key</var></samp> option.  Vendors and distributors
  who use custom installers are encouraged to provide a different key,
  perhaps one comprised of vendor name and GCC version number, to
  avoid conflict with existing installations.  This feature is enabled
! by default, and can be disabled by <samp>--disable-win32-registry</samp>
  option.  This option has no effect on the other hosts.
  </p>
  </dd>
! <dt><code>--nfp</code></dt>
  <dd><p>Specify that the machine does not have a floating point unit.  This
! option only applies to &lsquo;<samp>m68k-sun-sunos<var>n</var></samp>&rsquo;.  On any other
! system, <samp>--nfp</samp> has no effect.
  </p>
  </dd>
! <dt><code>--enable-werror</code></dt>
! <dt><code>--disable-werror</code></dt>
! <dt><code>--enable-werror=yes</code></dt>
! <dt><code>--enable-werror=no</code></dt>
  <dd><p>When you specify this option, it controls whether certain files in the
! compiler are built with <samp>-Werror</samp> in bootstrap stage2 and later.
! If you don&rsquo;t specify it, <samp>-Werror</samp> is turned on for the main
  development trunk.  However it defaults to off for release branches and
! final releases.  The specific files which get <samp>-Werror</samp> are
  controlled by the Makefiles.
  </p>
  </dd>
! <dt><code>--enable-checking</code></dt>
! <dt><code>--disable-checking</code></dt>
! <dt><code>--enable-checking=<var>list</var></code></dt>
  <dd><p>This option controls performing internal consistency checks in the compiler.
  It does not change the generated code, but adds error checking of the
  requested complexity.  This slows down the compiler and may only work
  properly if you are building the compiler with GCC.
  </p>
  <p>When the option is not specified, the active set of checks depends on context.
! Namely, bootstrap stage 1 defaults to &lsquo;<samp>--enable-checking=yes</samp>&rsquo;, builds
  from release branches or release archives default to
! &lsquo;<samp>--enable-checking=release</samp>&rsquo;, and otherwise
! &lsquo;<samp>--enable-checking=yes,extra</samp>&rsquo; is used.  When the option is
! specified without a <var>list</var>, the result is the same as
! &lsquo;<samp>--enable-checking=yes</samp>&rsquo;.  Likewise, &lsquo;<samp>--disable-checking</samp>&rsquo; is
! equivalent to &lsquo;<samp>--enable-checking=no</samp>&rsquo;.
  </p>
! <p>The categories of checks available in <var>list</var> are &lsquo;<samp>yes</samp>&rsquo; (most common
! checks &lsquo;<samp>assert,misc,gc,gimple,rtlflag,runtime,tree,types</samp>&rsquo;), &lsquo;<samp>no</samp>&rsquo;
! (no checks at all), &lsquo;<samp>all</samp>&rsquo; (all but &lsquo;<samp>valgrind</samp>&rsquo;), &lsquo;<samp>release</samp>&rsquo;
! (cheapest checks &lsquo;<samp>assert,runtime</samp>&rsquo;) or &lsquo;<samp>none</samp>&rsquo; (same as &lsquo;<samp>no</samp>&rsquo;).
! &lsquo;<samp>release</samp>&rsquo; checks are always on and to disable them
! &lsquo;<samp>--disable-checking</samp>&rsquo; or &lsquo;<samp>--enable-checking=no[,&lt;other checks&gt;]</samp>&rsquo;
  must be explicitly requested.  Disabling assertions makes the compiler and
  runtime slightly faster but increases the risk of undetected internal errors
  causing wrong code to be generated.
  </p>
! <p>Individual checks can be enabled with these flags: &lsquo;<samp>assert</samp>&rsquo;, &lsquo;<samp>df</samp>&rsquo;,
! &lsquo;<samp>extra</samp>&rsquo;, &lsquo;<samp>fold</samp>&rsquo;, &lsquo;<samp>gc</samp>&rsquo;, &lsquo;<samp>gcac</samp>&rsquo;, &lsquo;<samp>gimple</samp>&rsquo;,
! &lsquo;<samp>misc</samp>&rsquo;, &lsquo;<samp>rtl</samp>&rsquo;, &lsquo;<samp>rtlflag</samp>&rsquo;, &lsquo;<samp>runtime</samp>&rsquo;, &lsquo;<samp>tree</samp>&rsquo;,
! &lsquo;<samp>types</samp>&rsquo; and &lsquo;<samp>valgrind</samp>&rsquo;.  &lsquo;<samp>extra</samp>&rsquo; extends &lsquo;<samp>misc</samp>&rsquo;
  checking with extra checks that might affect code generation and should
  therefore not differ between stage1 and later stages in bootstrap.
  </p>
! <p>The &lsquo;<samp>valgrind</samp>&rsquo; check requires the external <code>valgrind</code> simulator,
! available from <a href="https://valgrind.org">https://valgrind.org</a>.  The &lsquo;<samp>rtl</samp>&rsquo; checks are
! expensive and the &lsquo;<samp>df</samp>&rsquo;, &lsquo;<samp>gcac</samp>&rsquo; and &lsquo;<samp>valgrind</samp>&rsquo; checks are very
  expensive.
  </p>
  </dd>
! <dt><code>--disable-stage1-checking</code></dt>
! <dt><code>--enable-stage1-checking</code></dt>
! <dt><code>--enable-stage1-checking=<var>list</var></code></dt>
! <dd><p>This option affects only bootstrap build.  If no <samp>--enable-checking</samp>
! option is specified the stage1 compiler is built with &lsquo;<samp>yes</samp>&rsquo; checking
  enabled, otherwise the stage1 checking flags are the same as specified by
! <samp>--enable-checking</samp>.  To build the stage1 compiler with
! different checking options use <samp>--enable-stage1-checking</samp>.
! The list of checking options is the same as for <samp>--enable-checking</samp>.
  If your system is too slow or too small to bootstrap a released compiler
! with checking for stage1 enabled, you can use &lsquo;<samp>--disable-stage1-checking</samp>&rsquo;
  to disable checking for the stage1 compiler.
  </p>
  </dd>
! <dt><code>--enable-coverage</code></dt>
! <dt><code>--enable-coverage=<var>level</var></code></dt>
  <dd><p>With this option, the compiler is built to collect self coverage
  information, every time it is run.  This is for internal development
  purposes, and only works when the compiler is being built with gcc.  The
! <var>level</var> argument controls whether the compiler is built optimized or
! not, values are &lsquo;<samp>opt</samp>&rsquo; and &lsquo;<samp>noopt</samp>&rsquo;.  For coverage analysis you
  want to disable optimization, for performance analysis you want to
  enable optimization.  When coverage is enabled, the default level is
  without optimization.
  </p>
  </dd>
! <dt><code>--enable-gather-detailed-mem-stats</code></dt>
  <dd><p>When this option is specified more detailed information on memory
  allocation is gathered.  This information is printed when using
! <samp>-fmem-report</samp>.
  </p>
  </dd>
! <dt><code>--enable-valgrind-annotations</code></dt>
  <dd><p>Mark selected memory related operations in the compiler when run under
  valgrind to suppress false positives.
  </p>
  </dd>
! <dt><code>--enable-nls</code></dt>
! <dt><code>--disable-nls</code></dt>
! <dd><p>The <samp>--enable-nls</samp> option enables Native Language Support (NLS),
  which lets GCC output diagnostics in languages other than American
  English.  Native Language Support is enabled by default if not doing a
! canadian cross build.  The <samp>--disable-nls</samp> option disables NLS.
  </p>
  <p>Note that this functionality requires either libintl (provided by GNU
  gettext) or C standard library that contains support for gettext (such
  as the GNU C Library).
! See <a href="#with-included-gettext">&ndash;with-included-gettext</a>, for more
  information on the conditions required to get gettext support.
  </p>
  </dd>
! <dt><code>--with-libintl-prefix=<var>dir</var></code></dt>
! <dt><code>--without-libintl-prefix</code></dt>
! <dd><p>Searches for libintl in <samp><var>dir</var>/include</samp> and
! <samp><var>dir</var>/lib</samp>, or disables manual searching for it, letting the
  linker handle it.
  </p>
  </dd>
! <dt><code>--with-libintl-type=<var>type</var></code></dt>
  <dd><p>Specifies the type of library to search for when looking for libintl.
! <var>type</var> can be one of <code>auto</code>, <code>static</code> or <code>shared</code>.
  </p>
! <a name="with-included-gettext"></a></dd>
! <dt><code>--with-included-gettext</code></dt>
! <dd><p>Only available if <samp>gettext</samp> is present in the source tree.
  </p>
  <p>Forces the gettext tree to be configured to build and use a new static
  libintl, overriding the system libintl.  Results in GCC being built
--- 1632,1806 ----
  mips-linux and s390-linux.
  </p>
  </dd>
! <dt><code class="code">--enable-default-pie</code></dt>
! <dd><p>Turn on <samp class="option">-fPIE</samp> and <samp class="option">-pie</samp> by default.
  </p>
  </dd>
! <dt><code class="code">--enable-secureplt</code></dt>
! <dd><p>This option enables <samp class="option">-msecure-plt</samp> by default for powerpc-linux.
  See &ldquo;RS/6000 and PowerPC Options&rdquo; in the main manual
  </p>
  </dd>
! <dt><code class="code">--enable-default-ssp</code></dt>
! <dd><p>Turn on <samp class="option">-fstack-protector-strong</samp> by default.
  </p>
  </dd>
! <dt><code class="code">--enable-cld</code></dt>
! <dd><p>This option enables <samp class="option">-mcld</samp> by default for 32-bit x86 targets.
  See &ldquo;i386 and x86-64 Options&rdquo; in the main manual
  </p>
  </dd>
! <dt><code class="code">--enable-large-address-aware</code></dt>
! <dd><p>The <samp class="option">--enable-large-address-aware</samp> option arranges for MinGW
! executables to be linked using the <samp class="option">--large-address-aware</samp>
  option, that enables the use of more than 2GB of memory.  If GCC is
  configured with this option, its effects can be reversed by passing the
! <samp class="option">-Wl,--disable-large-address-aware</samp> option to the so-configured
  compiler driver.
  </p>
  </dd>
! <dt><code class="code">--enable-win32-registry</code></dt>
! <dt><code class="code">--enable-win32-registry=<var class="var">key</var></code></dt>
! <dt><code class="code">--disable-win32-registry</code></dt>
! <dd><p>The <samp class="option">--enable-win32-registry</samp> option enables Microsoft Windows-hosted GCC
  to look up installations paths in the registry using the following key:
  </p>
! <div class="example smallexample">
! <pre class="example-preformatted"><code class="code">HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\<var class="var">key</var></code>
  </pre></div>
  
! <p><var class="var">key</var> defaults to GCC version number, and can be overridden by the
! <samp class="option">--enable-win32-registry=<var class="var">key</var></samp> option.  Vendors and distributors
  who use custom installers are encouraged to provide a different key,
  perhaps one comprised of vendor name and GCC version number, to
  avoid conflict with existing installations.  This feature is enabled
! by default, and can be disabled by <samp class="option">--disable-win32-registry</samp>
  option.  This option has no effect on the other hosts.
  </p>
  </dd>
! <dt><code class="code">--nfp</code></dt>
  <dd><p>Specify that the machine does not have a floating point unit.  This
! option only applies to &lsquo;<samp class="samp">m68k-sun-sunos<var class="var">n</var></samp>&rsquo;.  On any other
! system, <samp class="option">--nfp</samp> has no effect.
  </p>
  </dd>
! <dt><code class="code">--enable-werror</code></dt>
! <dt><code class="code">--disable-werror</code></dt>
! <dt><code class="code">--enable-werror=yes</code></dt>
! <dt><code class="code">--enable-werror=no</code></dt>
  <dd><p>When you specify this option, it controls whether certain files in the
! compiler are built with <samp class="option">-Werror</samp> in bootstrap stage2 and later.
! If you don&rsquo;t specify it, <samp class="option">-Werror</samp> is turned on for the main
  development trunk.  However it defaults to off for release branches and
! final releases.  The specific files which get <samp class="option">-Werror</samp> are
  controlled by the Makefiles.
  </p>
  </dd>
! <dt><code class="code">--enable-checking</code></dt>
! <dt><code class="code">--disable-checking</code></dt>
! <dt><code class="code">--enable-checking=<var class="var">list</var></code></dt>
  <dd><p>This option controls performing internal consistency checks in the compiler.
  It does not change the generated code, but adds error checking of the
  requested complexity.  This slows down the compiler and may only work
  properly if you are building the compiler with GCC.
  </p>
  <p>When the option is not specified, the active set of checks depends on context.
! Namely, bootstrap stage 1 defaults to &lsquo;<samp class="samp">--enable-checking=yes</samp>&rsquo;, builds
  from release branches or release archives default to
! &lsquo;<samp class="samp">--enable-checking=release</samp>&rsquo;, and otherwise
! &lsquo;<samp class="samp">--enable-checking=yes,extra</samp>&rsquo; is used.  When the option is
! specified without a <var class="var">list</var>, the result is the same as
! &lsquo;<samp class="samp">--enable-checking=yes</samp>&rsquo;.  Likewise, &lsquo;<samp class="samp">--disable-checking</samp>&rsquo; is
! equivalent to &lsquo;<samp class="samp">--enable-checking=no</samp>&rsquo;.
  </p>
! <p>The categories of checks available in <var class="var">list</var> are &lsquo;<samp class="samp">yes</samp>&rsquo; (most common
! checks &lsquo;<samp class="samp">assert,misc,gc,gimple,rtlflag,runtime,tree,types</samp>&rsquo;), &lsquo;<samp class="samp">no</samp>&rsquo;
! (no checks at all), &lsquo;<samp class="samp">all</samp>&rsquo; (all but &lsquo;<samp class="samp">valgrind</samp>&rsquo;), &lsquo;<samp class="samp">release</samp>&rsquo;
! (cheapest checks &lsquo;<samp class="samp">assert,runtime</samp>&rsquo;) or &lsquo;<samp class="samp">none</samp>&rsquo; (same as &lsquo;<samp class="samp">no</samp>&rsquo;).
! &lsquo;<samp class="samp">release</samp>&rsquo; checks are always on and to disable them
! &lsquo;<samp class="samp">--disable-checking</samp>&rsquo; or &lsquo;<samp class="samp">--enable-checking=no[,&lt;other checks&gt;]</samp>&rsquo;
  must be explicitly requested.  Disabling assertions makes the compiler and
  runtime slightly faster but increases the risk of undetected internal errors
  causing wrong code to be generated.
  </p>
! <p>Individual checks can be enabled with these flags: &lsquo;<samp class="samp">assert</samp>&rsquo;, &lsquo;<samp class="samp">df</samp>&rsquo;,
! &lsquo;<samp class="samp">extra</samp>&rsquo;, &lsquo;<samp class="samp">fold</samp>&rsquo;, &lsquo;<samp class="samp">gc</samp>&rsquo;, &lsquo;<samp class="samp">gcac</samp>&rsquo;, &lsquo;<samp class="samp">gimple</samp>&rsquo;,
! &lsquo;<samp class="samp">misc</samp>&rsquo;, &lsquo;<samp class="samp">rtl</samp>&rsquo;, &lsquo;<samp class="samp">rtlflag</samp>&rsquo;, &lsquo;<samp class="samp">runtime</samp>&rsquo;, &lsquo;<samp class="samp">tree</samp>&rsquo;,
! &lsquo;<samp class="samp">types</samp>&rsquo; and &lsquo;<samp class="samp">valgrind</samp>&rsquo;.  &lsquo;<samp class="samp">extra</samp>&rsquo; extends &lsquo;<samp class="samp">misc</samp>&rsquo;
  checking with extra checks that might affect code generation and should
  therefore not differ between stage1 and later stages in bootstrap.
  </p>
! <p>The &lsquo;<samp class="samp">valgrind</samp>&rsquo; check requires the external <code class="command">valgrind</code> simulator,
! available from <a class="uref" href="https://valgrind.org">https://valgrind.org</a>.  The &lsquo;<samp class="samp">rtl</samp>&rsquo; checks are
! expensive and the &lsquo;<samp class="samp">df</samp>&rsquo;, &lsquo;<samp class="samp">gcac</samp>&rsquo; and &lsquo;<samp class="samp">valgrind</samp>&rsquo; checks are very
  expensive.
  </p>
  </dd>
! <dt><code class="code">--disable-stage1-checking</code></dt>
! <dt><code class="code">--enable-stage1-checking</code></dt>
! <dt><code class="code">--enable-stage1-checking=<var class="var">list</var></code></dt>
! <dd><p>This option affects only bootstrap build.  If no <samp class="option">--enable-checking</samp>
! option is specified the stage1 compiler is built with &lsquo;<samp class="samp">yes</samp>&rsquo; checking
  enabled, otherwise the stage1 checking flags are the same as specified by
! <samp class="option">--enable-checking</samp>.  To build the stage1 compiler with
! different checking options use <samp class="option">--enable-stage1-checking</samp>.
! The list of checking options is the same as for <samp class="option">--enable-checking</samp>.
  If your system is too slow or too small to bootstrap a released compiler
! with checking for stage1 enabled, you can use &lsquo;<samp class="samp">--disable-stage1-checking</samp>&rsquo;
  to disable checking for the stage1 compiler.
  </p>
  </dd>
! <dt><code class="code">--enable-coverage</code></dt>
! <dt><code class="code">--enable-coverage=<var class="var">level</var></code></dt>
  <dd><p>With this option, the compiler is built to collect self coverage
  information, every time it is run.  This is for internal development
  purposes, and only works when the compiler is being built with gcc.  The
! <var class="var">level</var> argument controls whether the compiler is built optimized or
! not, values are &lsquo;<samp class="samp">opt</samp>&rsquo; and &lsquo;<samp class="samp">noopt</samp>&rsquo;.  For coverage analysis you
  want to disable optimization, for performance analysis you want to
  enable optimization.  When coverage is enabled, the default level is
  without optimization.
  </p>
  </dd>
! <dt><code class="code">--enable-gather-detailed-mem-stats</code></dt>
  <dd><p>When this option is specified more detailed information on memory
  allocation is gathered.  This information is printed when using
! <samp class="option">-fmem-report</samp>.
  </p>
  </dd>
! <dt><code class="code">--enable-valgrind-annotations</code></dt>
  <dd><p>Mark selected memory related operations in the compiler when run under
  valgrind to suppress false positives.
  </p>
  </dd>
! <dt><code class="code">--enable-nls</code></dt>
! <dt><code class="code">--disable-nls</code></dt>
! <dd><p>The <samp class="option">--enable-nls</samp> option enables Native Language Support (NLS),
  which lets GCC output diagnostics in languages other than American
  English.  Native Language Support is enabled by default if not doing a
! canadian cross build.  The <samp class="option">--disable-nls</samp> option disables NLS.
  </p>
  <p>Note that this functionality requires either libintl (provided by GNU
  gettext) or C standard library that contains support for gettext (such
  as the GNU C Library).
! See <a class="xref" href="#with-included-gettext">&ndash;with-included-gettext</a>, for more
  information on the conditions required to get gettext support.
  </p>
  </dd>
! <dt><code class="code">--with-libintl-prefix=<var class="var">dir</var></code></dt>
! <dt><code class="code">--without-libintl-prefix</code></dt>
! <dd><p>Searches for libintl in <samp class="file"><var class="var">dir</var>/include</samp> and
! <samp class="file"><var class="var">dir</var>/lib</samp>, or disables manual searching for it, letting the
  linker handle it.
  </p>
  </dd>
! <dt><code class="code">--with-libintl-type=<var class="var">type</var></code></dt>
  <dd><p>Specifies the type of library to search for when looking for libintl.
! <var class="var">type</var> can be one of <code class="code">auto</code>, <code class="code">static</code> or <code class="code">shared</code>.
  </p>
! <a class="anchor" id="with-included-gettext"></a></dd>
! <dt><code class="code">--with-included-gettext</code></dt>
! <dd><p>Only available if <samp class="file">gettext</samp> is present in the source tree.
  </p>
  <p>Forces the gettext tree to be configured to build and use a new static
  libintl, overriding the system libintl.  Results in GCC being built
*************** against the newly built libintl rather t
*** 1829,1837 ****
  to get gettext routines from.  The following table is a summary of the
  possible options:
  </p>
! <table>
! <thead><tr><th width="12%">GNU gettext present in sources</th><th width="12%">libintl installed on the system</th><th width="12%"><code>gettext</code> present in libc</th><th width="20%"><code>--with-included-gettext</code></th><th width="44%">Effects on localization</th></tr></thead>
! <tr><td width="12%">No</td><td width="12%">No</td><td width="12%">No</td><td width="20%">(ignored)</td><td width="44%">No localization</td></tr>
  <tr><td width="12%">No</td><td width="12%">No</td><td width="12%">Yes</td><td width="20%">(ignored)</td><td width="44%">Localized, libc gettext</td></tr>
  <tr><td width="12%">No</td><td width="12%">Yes</td><td width="12%">No</td><td width="20%">(ignored)</td><td width="44%">Localized, libintl</td></tr>
  <tr><td width="12%">No</td><td width="12%">Yes</td><td width="12%">Yes</td><td width="20%">(ignored)</td><td width="44%">Localized, libintl</td></tr>
--- 1810,1818 ----
  to get gettext routines from.  The following table is a summary of the
  possible options:
  </p>
! <table class="multitable">
! <thead><tr><th width="12%">GNU gettext present in sources</th><th width="12%">libintl installed on the system</th><th width="12%"><code class="code">gettext</code> present in libc</th><th width="20%"><code class="code">--with-included-gettext</code></th><th width="44%">Effects on localization</th></tr></thead>
! <tbody><tr><td width="12%">No</td><td width="12%">No</td><td width="12%">No</td><td width="20%">(ignored)</td><td width="44%">No localization</td></tr>
  <tr><td width="12%">No</td><td width="12%">No</td><td width="12%">Yes</td><td width="20%">(ignored)</td><td width="44%">Localized, libc gettext</td></tr>
  <tr><td width="12%">No</td><td width="12%">Yes</td><td width="12%">No</td><td width="20%">(ignored)</td><td width="44%">Localized, libintl</td></tr>
  <tr><td width="12%">No</td><td width="12%">Yes</td><td width="12%">Yes</td><td width="20%">(ignored)</td><td width="44%">Localized, libintl</td></tr>
*************** possible options:
*** 1843,1865 ****
  <tr><td width="12%">Yes</td><td width="12%">Yes</td><td width="12%">No</td><td width="20%">Yes</td><td width="44%">Localized, new, static libintl</td></tr>
  <tr><td width="12%">Yes</td><td width="12%">Yes</td><td width="12%">Yes</td><td width="20%">No</td><td width="44%">Localized, libintl</td></tr>
  <tr><td width="12%">Yes</td><td width="12%">Yes</td><td width="12%">Yes</td><td width="20%">Yes</td><td width="44%">Localized, new, static libintl</td></tr>
  </table>
  
  </dd>
! <dt><code>--with-catgets</code></dt>
! <dd><p>If NLS is enabled, and if the host lacks <code>gettext</code> but has the
! inferior <code>catgets</code> interface, the GCC build procedure normally
! ignores <code>catgets</code> and instead uses GCC&rsquo;s copy of the GNU
! <code>gettext</code> library.  The <samp>--with-catgets</samp> option causes the
! build procedure to use the host&rsquo;s <code>catgets</code> in this situation.
  </p>
  </dd>
! <dt><code>--with-libiconv-prefix=<var>dir</var></code></dt>
! <dd><p>Search for libiconv header files in <samp><var>dir</var>/include</samp> and
! libiconv library files in <samp><var>dir</var>/lib</samp>.
  </p>
  </dd>
! <dt><code>--enable-obsolete</code></dt>
  <dd><p>Enable configuration for an obsoleted system.  If you attempt to
  configure GCC for a system (build, host, or target) which has been
  obsoleted, and you do not specify this flag, configure will halt with an
--- 1824,1847 ----
  <tr><td width="12%">Yes</td><td width="12%">Yes</td><td width="12%">No</td><td width="20%">Yes</td><td width="44%">Localized, new, static libintl</td></tr>
  <tr><td width="12%">Yes</td><td width="12%">Yes</td><td width="12%">Yes</td><td width="20%">No</td><td width="44%">Localized, libintl</td></tr>
  <tr><td width="12%">Yes</td><td width="12%">Yes</td><td width="12%">Yes</td><td width="20%">Yes</td><td width="44%">Localized, new, static libintl</td></tr>
+ </tbody>
  </table>
  
  </dd>
! <dt><code class="code">--with-catgets</code></dt>
! <dd><p>If NLS is enabled, and if the host lacks <code class="code">gettext</code> but has the
! inferior <code class="code">catgets</code> interface, the GCC build procedure normally
! ignores <code class="code">catgets</code> and instead uses GCC&rsquo;s copy of the GNU
! <code class="code">gettext</code> library.  The <samp class="option">--with-catgets</samp> option causes the
! build procedure to use the host&rsquo;s <code class="code">catgets</code> in this situation.
  </p>
  </dd>
! <dt><code class="code">--with-libiconv-prefix=<var class="var">dir</var></code></dt>
! <dd><p>Search for libiconv header files in <samp class="file"><var class="var">dir</var>/include</samp> and
! libiconv library files in <samp class="file"><var class="var">dir</var>/lib</samp>.
  </p>
  </dd>
! <dt><code class="code">--enable-obsolete</code></dt>
  <dd><p>Enable configuration for an obsoleted system.  If you attempt to
  configure GCC for a system (build, host, or target) which has been
  obsoleted, and you do not specify this flag, configure will halt with an
*************** is removed entirely in the next major re
*** 1870,1976 ****
  forward to maintain the port.
  </p>
  </dd>
! <dt><code>--enable-decimal-float</code></dt>
! <dt><code>--enable-decimal-float=yes</code></dt>
! <dt><code>--enable-decimal-float=no</code></dt>
! <dt><code>--enable-decimal-float=bid</code></dt>
! <dt><code>--enable-decimal-float=dpd</code></dt>
! <dt><code>--disable-decimal-float</code></dt>
  <dd><p>Enable (or disable) support for the C decimal floating point extension
  that is in the IEEE 754-2008 standard.  This is enabled by default
  only on AArch64, PowerPC, i386, and x86_64 GNU/Linux systems.  Other
  systems may also support it, but require the user to specifically
  enable it.  You can optionally control which decimal floating point
! format is used (either &lsquo;<samp>bid</samp>&rsquo; or &lsquo;<samp>dpd</samp>&rsquo;).  The &lsquo;<samp>bid</samp>&rsquo;
  (binary integer decimal) format is default on AArch64, i386 and x86_64
! systems, and the &lsquo;<samp>dpd</samp>&rsquo; (densely packed decimal) format is default
  on PowerPC systems.
  </p>
  </dd>
! <dt><code>--enable-fixed-point</code></dt>
! <dt><code>--disable-fixed-point</code></dt>
  <dd><p>Enable (or disable) support for C fixed-point arithmetic.
  This option is enabled by default for some targets (such as MIPS) which
  have hardware-support for fixed-point operations.  On other targets, you
  may enable this option manually.
  </p>
  </dd>
! <dt><code>--with-long-double-128</code></dt>
! <dd><p>Specify if <code>long double</code> type should be 128-bit by default on selected
! GNU/Linux architectures.  If using <code>--without-long-double-128</code>,
! <code>long double</code> will be by default 64-bit, the same as <code>double</code> type.
  When neither of these configure options are used, the default will be
! 128-bit <code>long double</code> when built against GNU C Library 2.4 and later,
! 64-bit <code>long double</code> otherwise.
  </p>
  </dd>
! <dt><code>--with-long-double-format=ibm</code></dt>
! <dt><code>--with-long-double-format=ieee</code></dt>
! <dd><p>Specify whether <code>long double</code> uses the IBM extended double format
  or the IEEE 128-bit floating point format on PowerPC Linux systems.
  This configuration switch will only work on little endian PowerPC
  Linux systems and on big endian 64-bit systems where the default cpu
! is at least power7 (i.e. <samp>--with-cpu=power7</samp>,
! <samp>--with-cpu=power8</samp>, or <samp>--with-cpu=power9</samp> is used).
  </p>
! <p>If you use the <samp>--with-long-double-64</samp> configuration option,
! the <samp>--with-long-double-format=ibm</samp> and
! <samp>--with-long-double-format=ieee</samp> options are ignored.
  </p>
! <p>The default <code>long double</code> format is to use IBM extended double.
  Until all of the libraries are converted to use IEEE 128-bit floating
  point, it is not recommended to use
! <samp>--with-long-double-format=ieee</samp>.
  </p>
  </dd>
! <dt><code>--enable-fdpic</code></dt>
  <dd><p>On SH Linux systems, generate ELF FDPIC code.
  </p>
  </dd>
! <dt><code>--with-gmp=<var>pathname</var></code></dt>
! <dt><code>--with-gmp-include=<var>pathname</var></code></dt>
! <dt><code>--with-gmp-lib=<var>pathname</var></code></dt>
! <dt><code>--with-mpfr=<var>pathname</var></code></dt>
! <dt><code>--with-mpfr-include=<var>pathname</var></code></dt>
! <dt><code>--with-mpfr-lib=<var>pathname</var></code></dt>
! <dt><code>--with-mpc=<var>pathname</var></code></dt>
! <dt><code>--with-mpc-include=<var>pathname</var></code></dt>
! <dt><code>--with-mpc-lib=<var>pathname</var></code></dt>
  <dd><p>If you want to build GCC but do not have the GMP library, the MPFR
  library and/or the MPC library installed in a standard location and
  do not have their sources present in the GCC source tree then you
  can explicitly specify the directory where they are installed
! (&lsquo;<samp>--with-gmp=<var>gmpinstalldir</var></samp>&rsquo;,
! &lsquo;<samp>--with-mpfr=<var>mpfrinstalldir</var></samp>&rsquo;,
! &lsquo;<samp>--with-mpc=<var>mpcinstalldir</var></samp>&rsquo;).  The
! <samp>--with-gmp=<var>gmpinstalldir</var></samp> option is shorthand for
! <samp>--with-gmp-lib=<var>gmpinstalldir</var>/lib</samp> and
! <samp>--with-gmp-include=<var>gmpinstalldir</var>/include</samp>.  Likewise the
! <samp>--with-mpfr=<var>mpfrinstalldir</var></samp> option is shorthand for
! <samp>--with-mpfr-lib=<var>mpfrinstalldir</var>/lib</samp> and
! <samp>--with-mpfr-include=<var>mpfrinstalldir</var>/include</samp>, also the
! <samp>--with-mpc=<var>mpcinstalldir</var></samp> option is shorthand for
! <samp>--with-mpc-lib=<var>mpcinstalldir</var>/lib</samp> and
! <samp>--with-mpc-include=<var>mpcinstalldir</var>/include</samp>.  If these
  shorthand assumptions are not correct, you can use the explicit
  include and lib options directly.  You might also need to ensure the
  shared libraries can be found by the dynamic linker when building and
  using GCC, for example by setting the runtime shared library path
! variable (<code>LD_LIBRARY_PATH</code> on GNU/Linux and Solaris systems).
  </p>
  <p>These flags are applicable to the host platform only.  When building
  a cross compiler, they will not be used to configure target libraries.
  </p>
  </dd>
! <dt><code>--with-isl=<var>pathname</var></code></dt>
! <dt><code>--with-isl-include=<var>pathname</var></code></dt>
! <dt><code>--with-isl-lib=<var>pathname</var></code></dt>
  <dd><p>If you do not have the isl library installed in a standard location and you
  want to build GCC, you can explicitly specify the directory where it is
! installed (&lsquo;<samp>--with-isl=<var>islinstalldir</var></samp>&rsquo;). The
! <samp>--with-isl=<var>islinstalldir</var></samp> option is shorthand for
! <samp>--with-isl-lib=<var>islinstalldir</var>/lib</samp> and
! <samp>--with-isl-include=<var>islinstalldir</var>/include</samp>. If this
  shorthand assumption is not correct, you can use the explicit
  include and lib options directly.
  </p>
--- 1852,1958 ----
  forward to maintain the port.
  </p>
  </dd>
! <dt><code class="code">--enable-decimal-float</code></dt>
! <dt><code class="code">--enable-decimal-float=yes</code></dt>
! <dt><code class="code">--enable-decimal-float=no</code></dt>
! <dt><code class="code">--enable-decimal-float=bid</code></dt>
! <dt><code class="code">--enable-decimal-float=dpd</code></dt>
! <dt><code class="code">--disable-decimal-float</code></dt>
  <dd><p>Enable (or disable) support for the C decimal floating point extension
  that is in the IEEE 754-2008 standard.  This is enabled by default
  only on AArch64, PowerPC, i386, and x86_64 GNU/Linux systems.  Other
  systems may also support it, but require the user to specifically
  enable it.  You can optionally control which decimal floating point
! format is used (either &lsquo;<samp class="samp">bid</samp>&rsquo; or &lsquo;<samp class="samp">dpd</samp>&rsquo;).  The &lsquo;<samp class="samp">bid</samp>&rsquo;
  (binary integer decimal) format is default on AArch64, i386 and x86_64
! systems, and the &lsquo;<samp class="samp">dpd</samp>&rsquo; (densely packed decimal) format is default
  on PowerPC systems.
  </p>
  </dd>
! <dt><code class="code">--enable-fixed-point</code></dt>
! <dt><code class="code">--disable-fixed-point</code></dt>
  <dd><p>Enable (or disable) support for C fixed-point arithmetic.
  This option is enabled by default for some targets (such as MIPS) which
  have hardware-support for fixed-point operations.  On other targets, you
  may enable this option manually.
  </p>
  </dd>
! <dt><code class="code">--with-long-double-128</code></dt>
! <dd><p>Specify if <code class="code">long double</code> type should be 128-bit by default on selected
! GNU/Linux architectures.  If using <code class="code">--without-long-double-128</code>,
! <code class="code">long double</code> will be by default 64-bit, the same as <code class="code">double</code> type.
  When neither of these configure options are used, the default will be
! 128-bit <code class="code">long double</code> when built against GNU C Library 2.4 and later,
! 64-bit <code class="code">long double</code> otherwise.
  </p>
  </dd>
! <dt><code class="code">--with-long-double-format=ibm</code></dt>
! <dt><code class="code">--with-long-double-format=ieee</code></dt>
! <dd><p>Specify whether <code class="code">long double</code> uses the IBM extended double format
  or the IEEE 128-bit floating point format on PowerPC Linux systems.
  This configuration switch will only work on little endian PowerPC
  Linux systems and on big endian 64-bit systems where the default cpu
! is at least power7 (i.e. <samp class="option">--with-cpu=power7</samp>,
! <samp class="option">--with-cpu=power8</samp>, or <samp class="option">--with-cpu=power9</samp> is used).
  </p>
! <p>If you use the <samp class="option">--with-long-double-64</samp> configuration option,
! the <samp class="option">--with-long-double-format=ibm</samp> and
! <samp class="option">--with-long-double-format=ieee</samp> options are ignored.
  </p>
! <p>The default <code class="code">long double</code> format is to use IBM extended double.
  Until all of the libraries are converted to use IEEE 128-bit floating
  point, it is not recommended to use
! <samp class="option">--with-long-double-format=ieee</samp>.
  </p>
  </dd>
! <dt><code class="code">--enable-fdpic</code></dt>
  <dd><p>On SH Linux systems, generate ELF FDPIC code.
  </p>
  </dd>
! <dt><code class="code">--with-gmp=<var class="var">pathname</var></code></dt>
! <dt><code class="code">--with-gmp-include=<var class="var">pathname</var></code></dt>
! <dt><code class="code">--with-gmp-lib=<var class="var">pathname</var></code></dt>
! <dt><code class="code">--with-mpfr=<var class="var">pathname</var></code></dt>
! <dt><code class="code">--with-mpfr-include=<var class="var">pathname</var></code></dt>
! <dt><code class="code">--with-mpfr-lib=<var class="var">pathname</var></code></dt>
! <dt><code class="code">--with-mpc=<var class="var">pathname</var></code></dt>
! <dt><code class="code">--with-mpc-include=<var class="var">pathname</var></code></dt>
! <dt><code class="code">--with-mpc-lib=<var class="var">pathname</var></code></dt>
  <dd><p>If you want to build GCC but do not have the GMP library, the MPFR
  library and/or the MPC library installed in a standard location and
  do not have their sources present in the GCC source tree then you
  can explicitly specify the directory where they are installed
! (&lsquo;<samp class="samp">--with-gmp=<var class="var">gmpinstalldir</var></samp>&rsquo;,
! &lsquo;<samp class="samp">--with-mpfr=<var class="var">mpfrinstalldir</var></samp>&rsquo;,
! &lsquo;<samp class="samp">--with-mpc=<var class="var">mpcinstalldir</var></samp>&rsquo;).  The
! <samp class="option">--with-gmp=<var class="var">gmpinstalldir</var></samp> option is shorthand for
! <samp class="option">--with-gmp-lib=<var class="var">gmpinstalldir</var>/lib</samp> and
! <samp class="option">--with-gmp-include=<var class="var">gmpinstalldir</var>/include</samp>.  Likewise the
! <samp class="option">--with-mpfr=<var class="var">mpfrinstalldir</var></samp> option is shorthand for
! <samp class="option">--with-mpfr-lib=<var class="var">mpfrinstalldir</var>/lib</samp> and
! <samp class="option">--with-mpfr-include=<var class="var">mpfrinstalldir</var>/include</samp>, also the
! <samp class="option">--with-mpc=<var class="var">mpcinstalldir</var></samp> option is shorthand for
! <samp class="option">--with-mpc-lib=<var class="var">mpcinstalldir</var>/lib</samp> and
! <samp class="option">--with-mpc-include=<var class="var">mpcinstalldir</var>/include</samp>.  If these
  shorthand assumptions are not correct, you can use the explicit
  include and lib options directly.  You might also need to ensure the
  shared libraries can be found by the dynamic linker when building and
  using GCC, for example by setting the runtime shared library path
! variable (<code class="env">LD_LIBRARY_PATH</code> on GNU/Linux and Solaris systems).
  </p>
  <p>These flags are applicable to the host platform only.  When building
  a cross compiler, they will not be used to configure target libraries.
  </p>
  </dd>
! <dt><code class="code">--with-isl=<var class="var">pathname</var></code></dt>
! <dt><code class="code">--with-isl-include=<var class="var">pathname</var></code></dt>
! <dt><code class="code">--with-isl-lib=<var class="var">pathname</var></code></dt>
  <dd><p>If you do not have the isl library installed in a standard location and you
  want to build GCC, you can explicitly specify the directory where it is
! installed (&lsquo;<samp class="samp">--with-isl=<var class="var">islinstalldir</var></samp>&rsquo;). The
! <samp class="option">--with-isl=<var class="var">islinstalldir</var></samp> option is shorthand for
! <samp class="option">--with-isl-lib=<var class="var">islinstalldir</var>/lib</samp> and
! <samp class="option">--with-isl-include=<var class="var">islinstalldir</var>/include</samp>. If this
  shorthand assumption is not correct, you can use the explicit
  include and lib options directly.
  </p>
*************** include and lib options directly.
*** 1978,2104 ****
  a cross compiler, they will not be used to configure target libraries.
  </p>
  </dd>
! <dt><code>--with-stage1-ldflags=<var>flags</var></code></dt>
  <dd><p>This option may be used to set linker flags to be used when linking
  stage 1 of GCC.  These are also used when linking GCC if configured with
! <samp>--disable-bootstrap</samp>.  If <samp>--with-stage1-libs</samp> is not set to a
! value, then the default is &lsquo;<samp>-static-libstdc++ -static-libgcc</samp>&rsquo;, if
  supported.
  </p>
  </dd>
! <dt><code>--with-stage1-libs=<var>libs</var></code></dt>
  <dd><p>This option may be used to set libraries to be used when linking stage 1
  of GCC.  These are also used when linking GCC if configured with
! <samp>--disable-bootstrap</samp>.
  </p>
  </dd>
! <dt><code>--with-boot-ldflags=<var>flags</var></code></dt>
  <dd><p>This option may be used to set linker flags to be used when linking
  stage 2 and later when bootstrapping GCC.  If &ndash;with-boot-libs
  is not is set to a value, then the default is
! &lsquo;<samp>-static-libstdc++ -static-libgcc</samp>&rsquo;.
  </p>
  </dd>
! <dt><code>--with-boot-libs=<var>libs</var></code></dt>
  <dd><p>This option may be used to set libraries to be used when linking stage 2
  and later when bootstrapping GCC.
  </p>
  </dd>
! <dt><code>--with-debug-prefix-map=<var>map</var></code></dt>
! <dd><p>Convert source directory names using <samp>-fdebug-prefix-map</samp> when
! building runtime libraries.  &lsquo;<samp><var>map</var></samp>&rsquo; is a space-separated
! list of maps of the form &lsquo;<samp><var>old</var>=<var>new</var></samp>&rsquo;.
  </p>
  </dd>
! <dt><code>--enable-linker-build-id</code></dt>
! <dd><p>Tells GCC to pass <samp>--build-id</samp> option to the linker for all final
! links (links performed without the <samp>-r</samp> or <samp>--relocatable</samp>
  option), if the linker supports it.  If you specify
! <samp>--enable-linker-build-id</samp>, but your linker does not
! support <samp>--build-id</samp> option, a warning is issued and the
! <samp>--enable-linker-build-id</samp> option is ignored.  The default is off.
  </p>
  </dd>
! <dt><code>--with-linker-hash-style=<var>choice</var></code></dt>
! <dd><p>Tells GCC to pass <samp>--hash-style=<var>choice</var></samp> option to the
! linker for all final links. <var>choice</var> can be one of
! &lsquo;<samp>sysv</samp>&rsquo;, &lsquo;<samp>gnu</samp>&rsquo;, and &lsquo;<samp>both</samp>&rsquo; where &lsquo;<samp>sysv</samp>&rsquo; is the default.
  </p>
  </dd>
! <dt><code>--enable-gnu-unique-object</code></dt>
! <dt><code>--disable-gnu-unique-object</code></dt>
  <dd><p>Tells GCC to use the gnu_unique_object relocation for C++ template
  static data members and inline function local statics.  Enabled by
  default for a toolchain with an assembler that accepts it and
  GLIBC 2.11 or above, otherwise disabled.
  </p>
  </dd>
! <dt><code>--with-diagnostics-color=<var>choice</var></code></dt>
! <dd><p>Tells GCC to use <var>choice</var> as the default for <samp>-fdiagnostics-color=</samp>
! option (if not used explicitly on the command line).  <var>choice</var>
! can be one of &lsquo;<samp>never</samp>&rsquo;, &lsquo;<samp>auto</samp>&rsquo;, &lsquo;<samp>always</samp>&rsquo;, and &lsquo;<samp>auto-if-env</samp>&rsquo;
! where &lsquo;<samp>auto</samp>&rsquo; is the default.  &lsquo;<samp>auto-if-env</samp>&rsquo; makes
! <samp>-fdiagnostics-color=auto</samp> the default if <code>GCC_COLORS</code>
  is present and non-empty in the environment of the compiler, and
! <samp>-fdiagnostics-color=never</samp> otherwise.
  </p>
  </dd>
! <dt><code>--with-diagnostics-urls=<var>choice</var></code></dt>
! <dd><p>Tells GCC to use <var>choice</var> as the default for <samp>-fdiagnostics-urls=</samp>
! option (if not used explicitly on the command line).  <var>choice</var>
! can be one of &lsquo;<samp>never</samp>&rsquo;, &lsquo;<samp>auto</samp>&rsquo;, &lsquo;<samp>always</samp>&rsquo;, and &lsquo;<samp>auto-if-env</samp>&rsquo;
! where &lsquo;<samp>auto</samp>&rsquo; is the default.  &lsquo;<samp>auto-if-env</samp>&rsquo; makes
! <samp>-fdiagnostics-urls=auto</samp> the default if <code>GCC_URLS</code>
! or <code>TERM_URLS</code> is present and non-empty in the environment of the
! compiler, and <samp>-fdiagnostics-urls=never</samp> otherwise.
  </p>
  </dd>
! <dt><code>--enable-lto</code></dt>
! <dt><code>--disable-lto</code></dt>
  <dd><p>Enable support for link-time optimization (LTO).  This is enabled by
! default, and may be disabled using <samp>--disable-lto</samp>.
  </p>
  </dd>
! <dt><code>--enable-linker-plugin-configure-flags=FLAGS</code></dt>
! <dt><code>--enable-linker-plugin-flags=FLAGS</code></dt>
  <dd><p>By default, linker plugins (such as the LTO plugin) are built for the
  host system architecture.  For the case that the linker has a
  different (but run-time compatible) architecture, these flags can be
  specified to build plugins that are compatible to the linker.  For
  example, if you are building GCC for a 64-bit x86_64
! (&lsquo;<samp>x86_64-pc-linux-gnu</samp>&rsquo;) host system, but have a 32-bit x86
! GNU/Linux (&lsquo;<samp>i686-pc-linux-gnu</samp>&rsquo;) linker executable (which is
  executable on the former system), you can configure GCC as follows for
  getting compatible linker plugins:
  </p>
! <div class="smallexample">
! <pre class="smallexample">% <var>srcdir</var>/configure \
      --host=x86_64-pc-linux-gnu \
      --enable-linker-plugin-configure-flags=--host=i686-pc-linux-gnu \
      --enable-linker-plugin-flags='CC=gcc\ -m32\ -Wl,-rpath,[...]/i686-pc-linux-gnu/lib'
  </pre></div>
  
  </dd>
! <dt><code>--with-plugin-ld=<var>pathname</var></code></dt>
  <dd><p>Enable an alternate linker to be used at link-time optimization (LTO)
! link time when <samp>-fuse-linker-plugin</samp> is enabled.
  This linker should have plugin support such as gold starting with
  version 2.20 or GNU ld starting with version 2.21.
! See <samp>-fuse-linker-plugin</samp> for details.
  </p>
  </dd>
! <dt><code>--enable-canonical-system-headers</code></dt>
! <dt><code>--disable-canonical-system-headers</code></dt>
! <dd><p>Enable system header path canonicalization for <samp>libcpp</samp>.  This can
  produce shorter header file paths in diagnostics and dependency output
  files, but these changed header paths may conflict with some compilation
  environments.  Enabled by default, and may be disabled using
! <samp>--disable-canonical-system-headers</samp>.
  </p>
  </dd>
! <dt><code>--with-glibc-version=<var>major</var>.<var>minor</var></code></dt>
  <dd><p>Tell GCC that when the GNU C Library (glibc) is used on the target it
! will be version <var>major</var>.<var>minor</var> or later.  Normally this can
  be detected from the C library&rsquo;s header files, but this option may be
  needed when bootstrapping a cross toolchain without the header files
  available for building the initial bootstrap compiler.
--- 1960,2086 ----
  a cross compiler, they will not be used to configure target libraries.
  </p>
  </dd>
! <dt><code class="code">--with-stage1-ldflags=<var class="var">flags</var></code></dt>
  <dd><p>This option may be used to set linker flags to be used when linking
  stage 1 of GCC.  These are also used when linking GCC if configured with
! <samp class="option">--disable-bootstrap</samp>.  If <samp class="option">--with-stage1-libs</samp> is not set to a
! value, then the default is &lsquo;<samp class="samp">-static-libstdc++ -static-libgcc</samp>&rsquo;, if
  supported.
  </p>
  </dd>
! <dt><code class="code">--with-stage1-libs=<var class="var">libs</var></code></dt>
  <dd><p>This option may be used to set libraries to be used when linking stage 1
  of GCC.  These are also used when linking GCC if configured with
! <samp class="option">--disable-bootstrap</samp>.
  </p>
  </dd>
! <dt><code class="code">--with-boot-ldflags=<var class="var">flags</var></code></dt>
  <dd><p>This option may be used to set linker flags to be used when linking
  stage 2 and later when bootstrapping GCC.  If &ndash;with-boot-libs
  is not is set to a value, then the default is
! &lsquo;<samp class="samp">-static-libstdc++ -static-libgcc</samp>&rsquo;.
  </p>
  </dd>
! <dt><code class="code">--with-boot-libs=<var class="var">libs</var></code></dt>
  <dd><p>This option may be used to set libraries to be used when linking stage 2
  and later when bootstrapping GCC.
  </p>
  </dd>
! <dt><code class="code">--with-debug-prefix-map=<var class="var">map</var></code></dt>
! <dd><p>Convert source directory names using <samp class="option">-fdebug-prefix-map</samp> when
! building runtime libraries.  &lsquo;<samp class="samp"><var class="var">map</var></samp>&rsquo; is a space-separated
! list of maps of the form &lsquo;<samp class="samp"><var class="var">old</var>=<var class="var">new</var></samp>&rsquo;.
  </p>
  </dd>
! <dt><code class="code">--enable-linker-build-id</code></dt>
! <dd><p>Tells GCC to pass <samp class="option">--build-id</samp> option to the linker for all final
! links (links performed without the <samp class="option">-r</samp> or <samp class="option">--relocatable</samp>
  option), if the linker supports it.  If you specify
! <samp class="option">--enable-linker-build-id</samp>, but your linker does not
! support <samp class="option">--build-id</samp> option, a warning is issued and the
! <samp class="option">--enable-linker-build-id</samp> option is ignored.  The default is off.
  </p>
  </dd>
! <dt><code class="code">--with-linker-hash-style=<var class="var">choice</var></code></dt>
! <dd><p>Tells GCC to pass <samp class="option">--hash-style=<var class="var">choice</var></samp> option to the
! linker for all final links. <var class="var">choice</var> can be one of
! &lsquo;<samp class="samp">sysv</samp>&rsquo;, &lsquo;<samp class="samp">gnu</samp>&rsquo;, and &lsquo;<samp class="samp">both</samp>&rsquo; where &lsquo;<samp class="samp">sysv</samp>&rsquo; is the default.
  </p>
  </dd>
! <dt><code class="code">--enable-gnu-unique-object</code></dt>
! <dt><code class="code">--disable-gnu-unique-object</code></dt>
  <dd><p>Tells GCC to use the gnu_unique_object relocation for C++ template
  static data members and inline function local statics.  Enabled by
  default for a toolchain with an assembler that accepts it and
  GLIBC 2.11 or above, otherwise disabled.
  </p>
  </dd>
! <dt><code class="code">--with-diagnostics-color=<var class="var">choice</var></code></dt>
! <dd><p>Tells GCC to use <var class="var">choice</var> as the default for <samp class="option">-fdiagnostics-color=</samp>
! option (if not used explicitly on the command line).  <var class="var">choice</var>
! can be one of &lsquo;<samp class="samp">never</samp>&rsquo;, &lsquo;<samp class="samp">auto</samp>&rsquo;, &lsquo;<samp class="samp">always</samp>&rsquo;, and &lsquo;<samp class="samp">auto-if-env</samp>&rsquo;
! where &lsquo;<samp class="samp">auto</samp>&rsquo; is the default.  &lsquo;<samp class="samp">auto-if-env</samp>&rsquo; makes
! <samp class="option">-fdiagnostics-color=auto</samp> the default if <code class="env">GCC_COLORS</code>
  is present and non-empty in the environment of the compiler, and
! <samp class="option">-fdiagnostics-color=never</samp> otherwise.
  </p>
  </dd>
! <dt><code class="code">--with-diagnostics-urls=<var class="var">choice</var></code></dt>
! <dd><p>Tells GCC to use <var class="var">choice</var> as the default for <samp class="option">-fdiagnostics-urls=</samp>
! option (if not used explicitly on the command line).  <var class="var">choice</var>
! can be one of &lsquo;<samp class="samp">never</samp>&rsquo;, &lsquo;<samp class="samp">auto</samp>&rsquo;, &lsquo;<samp class="samp">always</samp>&rsquo;, and &lsquo;<samp class="samp">auto-if-env</samp>&rsquo;
! where &lsquo;<samp class="samp">auto</samp>&rsquo; is the default.  &lsquo;<samp class="samp">auto-if-env</samp>&rsquo; makes
! <samp class="option">-fdiagnostics-urls=auto</samp> the default if <code class="env">GCC_URLS</code>
! or <code class="env">TERM_URLS</code> is present and non-empty in the environment of the
! compiler, and <samp class="option">-fdiagnostics-urls=never</samp> otherwise.
  </p>
  </dd>
! <dt><code class="code">--enable-lto</code></dt>
! <dt><code class="code">--disable-lto</code></dt>
  <dd><p>Enable support for link-time optimization (LTO).  This is enabled by
! default, and may be disabled using <samp class="option">--disable-lto</samp>.
  </p>
  </dd>
! <dt><code class="code">--enable-linker-plugin-configure-flags=FLAGS</code></dt>
! <dt><code class="code">--enable-linker-plugin-flags=FLAGS</code></dt>
  <dd><p>By default, linker plugins (such as the LTO plugin) are built for the
  host system architecture.  For the case that the linker has a
  different (but run-time compatible) architecture, these flags can be
  specified to build plugins that are compatible to the linker.  For
  example, if you are building GCC for a 64-bit x86_64
! (&lsquo;<samp class="samp">x86_64-pc-linux-gnu</samp>&rsquo;) host system, but have a 32-bit x86
! GNU/Linux (&lsquo;<samp class="samp">i686-pc-linux-gnu</samp>&rsquo;) linker executable (which is
  executable on the former system), you can configure GCC as follows for
  getting compatible linker plugins:
  </p>
! <div class="example smallexample">
! <pre class="example-preformatted">% <var class="var">srcdir</var>/configure \
      --host=x86_64-pc-linux-gnu \
      --enable-linker-plugin-configure-flags=--host=i686-pc-linux-gnu \
      --enable-linker-plugin-flags='CC=gcc\ -m32\ -Wl,-rpath,[...]/i686-pc-linux-gnu/lib'
  </pre></div>
  
  </dd>
! <dt><code class="code">--with-plugin-ld=<var class="var">pathname</var></code></dt>
  <dd><p>Enable an alternate linker to be used at link-time optimization (LTO)
! link time when <samp class="option">-fuse-linker-plugin</samp> is enabled.
  This linker should have plugin support such as gold starting with
  version 2.20 or GNU ld starting with version 2.21.
! See <samp class="option">-fuse-linker-plugin</samp> for details.
  </p>
  </dd>
! <dt><code class="code">--enable-canonical-system-headers</code></dt>
! <dt><code class="code">--disable-canonical-system-headers</code></dt>
! <dd><p>Enable system header path canonicalization for <samp class="file">libcpp</samp>.  This can
  produce shorter header file paths in diagnostics and dependency output
  files, but these changed header paths may conflict with some compilation
  environments.  Enabled by default, and may be disabled using
! <samp class="option">--disable-canonical-system-headers</samp>.
  </p>
  </dd>
! <dt><code class="code">--with-glibc-version=<var class="var">major</var>.<var class="var">minor</var></code></dt>
  <dd><p>Tell GCC that when the GNU C Library (glibc) is used on the target it
! will be version <var class="var">major</var>.<var class="var">minor</var> or later.  Normally this can
  be detected from the C library&rsquo;s header files, but this option may be
  needed when bootstrapping a cross toolchain without the header files
  available for building the initial bootstrap compiler.
*************** However, such configurations may not wor
*** 2109,2131 ****
  configuration in GCC is on a per-multilib basis.
  </p>
  </dd>
! <dt><code>--enable-as-accelerator-for=<var>target</var></code></dt>
! <dd><p>Build as offload target compiler. Specify offload host triple by <var>target</var>.
  </p>
  </dd>
! <dt><code>--enable-offload-targets=<var>target1</var>[=<var>path1</var>],&hellip;,<var>targetN</var>[=<var>pathN</var>]</code></dt>
! <dd><p>Enable offloading to targets <var>target1</var>, &hellip;, <var>targetN</var>.
  Offload compilers are expected to be already installed.  Default search
! path for them is <samp><var>exec-prefix</var></samp>, but it can be changed by
! specifying paths <var>path1</var>, &hellip;, <var>pathN</var>.
  </p>
! <div class="smallexample">
! <pre class="smallexample">% <var>srcdir</var>/configure \
      --enable-offload-targets=amdgcn-amdhsa,nvptx-none
  </pre></div>
  
  </dd>
! <dt><code>--enable-offload-defaulted</code></dt>
  <dd>
  <p>Tell GCC that configured but not installed offload compilers and libgomp
  plugins are silently ignored.  Useful for distribution compilers where
--- 2091,2113 ----
  configuration in GCC is on a per-multilib basis.
  </p>
  </dd>
! <dt><code class="code">--enable-as-accelerator-for=<var class="var">target</var></code></dt>
! <dd><p>Build as offload target compiler. Specify offload host triple by <var class="var">target</var>.
  </p>
  </dd>
! <dt><code class="code">--enable-offload-targets=<var class="var">target1</var>[=<var class="var">path1</var>],&hellip;,<var class="var">targetN</var>[=<var class="var">pathN</var>]</code></dt>
! <dd><p>Enable offloading to targets <var class="var">target1</var>, &hellip;, <var class="var">targetN</var>.
  Offload compilers are expected to be already installed.  Default search
! path for them is <samp class="file"><var class="var">exec-prefix</var></samp>, but it can be changed by
! specifying paths <var class="var">path1</var>, &hellip;, <var class="var">pathN</var>.
  </p>
! <div class="example smallexample">
! <pre class="example-preformatted">% <var class="var">srcdir</var>/configure \
      --enable-offload-targets=amdgcn-amdhsa,nvptx-none
  </pre></div>
  
  </dd>
! <dt><code class="code">--enable-offload-defaulted</code></dt>
  <dd>
  <p>Tell GCC that configured but not installed offload compilers and libgomp
  plugins are silently ignored.  Useful for distribution compilers where
*************** of those optional packages should determ
*** 2134,2154 ****
  target set rather than the GCC configure-time selection.
  </p>
  </dd>
! <dt><code>--enable-cet</code></dt>
! <dt><code>--disable-cet</code></dt>
  <dd><p>Enable building target run-time libraries with control-flow
! instrumentation, see <samp>-fcf-protection</samp> option.  When
! <code>--enable-cet</code> is specified target libraries are configured
! to add <samp>-fcf-protection</samp> and, if needed, other target
  specific options to a set of building options.
  </p>
! <p><code>--enable-cet=auto</code> is default.  CET is enabled on Linux/x86 if
! target binutils supports <code>Intel CET</code> instructions and disabled
  otherwise.  In this case, the target libraries are configured to get
! additional <samp>-fcf-protection</samp> option.
  </p>
  </dd>
! <dt><code>--with-riscv-attribute=&lsquo;<samp>yes</samp>&rsquo;, &lsquo;<samp>no</samp>&rsquo; or &lsquo;<samp>default</samp>&rsquo;</code></dt>
  <dd><p>Generate RISC-V attribute by default, in order to record extra build
  information in object.
  </p>
--- 2116,2136 ----
  target set rather than the GCC configure-time selection.
  </p>
  </dd>
! <dt><code class="code">--enable-cet</code></dt>
! <dt><code class="code">--disable-cet</code></dt>
  <dd><p>Enable building target run-time libraries with control-flow
! instrumentation, see <samp class="option">-fcf-protection</samp> option.  When
! <code class="code">--enable-cet</code> is specified target libraries are configured
! to add <samp class="option">-fcf-protection</samp> and, if needed, other target
  specific options to a set of building options.
  </p>
! <p><code class="code">--enable-cet=auto</code> is default.  CET is enabled on Linux/x86 if
! target binutils supports <code class="code">Intel CET</code> instructions and disabled
  otherwise.  In this case, the target libraries are configured to get
! additional <samp class="option">-fcf-protection</samp> option.
  </p>
  </dd>
! <dt><code class="code">--with-riscv-attribute=&lsquo;<samp class="samp">yes</samp>&rsquo;, &lsquo;<samp class="samp">no</samp>&rsquo; or &lsquo;<samp class="samp">default</samp>&rsquo;</code></dt>
  <dd><p>Generate RISC-V attribute by default, in order to record extra build
  information in object.
  </p>
*************** information in object.
*** 2156,2166 ****
  target if target binutils supported.
  </p>
  </dd>
! <dt><code>--enable-s390-excess-float-precision</code></dt>
! <dt><code>--disable-s390-excess-float-precision</code></dt>
  <dd><p>On s390(x) targets, enable treatment of float expressions with double precision
! when in standards-compliant mode (e.g., when <code>--std=c99</code> or
! <code>-fexcess-precision=standard</code> are given).
  </p>
  <p>For a native build and cross compiles that have target headers, the option&rsquo;s
  default is derived from glibc&rsquo;s behavior. When glibc clamps float_t to double,
--- 2138,2148 ----
  target if target binutils supported.
  </p>
  </dd>
! <dt><code class="code">--enable-s390-excess-float-precision</code></dt>
! <dt><code class="code">--disable-s390-excess-float-precision</code></dt>
  <dd><p>On s390(x) targets, enable treatment of float expressions with double precision
! when in standards-compliant mode (e.g., when <code class="code">--std=c99</code> or
! <code class="code">-fexcess-precision=standard</code> are given).
  </p>
  <p>For a native build and cross compiles that have target headers, the option&rsquo;s
  default is derived from glibc&rsquo;s behavior. When glibc clamps float_t to double,
*************** GCC follows and enables the option. For
*** 2168,2182 ****
  disabled.
  </p>
  </dd>
! <dt><code>--with-zstd=<var>pathname</var></code></dt>
! <dt><code>--with-zstd-include=<var>pathname</var></code></dt>
! <dt><code>--with-zstd-lib=<var>pathname</var></code></dt>
! <dd><p>If you do not have the <code>zstd</code> library installed in a standard
  location and you want to build GCC, you can explicitly specify the
! directory where it is installed (&lsquo;<samp>--with-zstd=<var>zstdinstalldir</var></samp>&rsquo;).
! The <samp>--with-zstd=<var>zstdinstalldir</var></samp> option is shorthand for
! <samp>--with-zstd-lib=<var>zstdinstalldir</var>/lib</samp> and
! <samp>--with-zstd-include=<var>zstdinstalldir</var>/include</samp>. If this
  shorthand assumption is not correct, you can use the explicit
  include and lib options directly.
  </p>
--- 2150,2164 ----
  disabled.
  </p>
  </dd>
! <dt><code class="code">--with-zstd=<var class="var">pathname</var></code></dt>
! <dt><code class="code">--with-zstd-include=<var class="var">pathname</var></code></dt>
! <dt><code class="code">--with-zstd-lib=<var class="var">pathname</var></code></dt>
! <dd><p>If you do not have the <code class="code">zstd</code> library installed in a standard
  location and you want to build GCC, you can explicitly specify the
! directory where it is installed (&lsquo;<samp class="samp">--with-zstd=<var class="var">zstdinstalldir</var></samp>&rsquo;).
! The <samp class="option">--with-zstd=<var class="var">zstdinstalldir</var></samp> option is shorthand for
! <samp class="option">--with-zstd-lib=<var class="var">zstdinstalldir</var>/lib</samp> and
! <samp class="option">--with-zstd-include=<var class="var">zstdinstalldir</var>/include</samp>. If this
  shorthand assumption is not correct, you can use the explicit
  include and lib options directly.
  </p>
*************** a cross compiler, they will not be used
*** 2185,2491 ****
  </p></dd>
  </dl>
  
! <a name="Cross-Compiler-Specific-Options"></a>
! <h4 class="subheading">Cross-Compiler-Specific Options</h4>
  <p>The following options only apply to building cross compilers.
  </p>
! <dl compact="compact">
! <dt><code>--with-toolexeclibdir=<var>dir</var></code></dt>
  <dd><p>Specify the installation directory for libraries built with a cross compiler.
! The default is <samp>${gcc_tooldir}/lib</samp>.
  </p>
  </dd>
! <dt><code>--with-sysroot</code></dt>
! <dt><code>--with-sysroot=<var>dir</var></code></dt>
! <dd><p>Tells GCC to consider <var>dir</var> as the root of a tree that contains
  (a subset of) the root filesystem of the target operating system.
  Target system headers, libraries and run-time object files will be
  searched for in there.  More specifically, this acts as if
! <samp>--sysroot=<var>dir</var></samp> was added to the default options of the built
  compiler.  The specified directory is not copied into the
! install tree, unlike the options <samp>--with-headers</samp> and
! <samp>--with-libs</samp> that this option obsoletes.  The default value,
! in case <samp>--with-sysroot</samp> is not given an argument, is
! <samp>${gcc_tooldir}/sys-root</samp>.  If the specified directory is a
! subdirectory of <samp>${exec_prefix}</samp>, then it will be found relative to
  the GCC binaries if the installation tree is moved.
  </p>
  <p>This option affects the system root for the compiler used to build
  target libraries (which runs on the build system) and the compiler newly
! installed with <code>make install</code>; it does not affect the compiler which is
  used to build GCC itself.
  </p>
! <p>If you specify the <samp>--with-native-system-header-dir=<var>dirname</var></samp>
! option then the compiler will search that directory within <var>dirname</var> for
! native system headers rather than the default <samp>/usr/include</samp>.
  </p>
  </dd>
! <dt><code>--with-build-sysroot</code></dt>
! <dt><code>--with-build-sysroot=<var>dir</var></code></dt>
! <dd><p>Tells GCC to consider <var>dir</var> as the system root (see
! <samp>--with-sysroot</samp>) while building target libraries, instead of
! the directory specified with <samp>--with-sysroot</samp>.  This option is
! only useful when you are already using <samp>--with-sysroot</samp>.  You
! can use <samp>--with-build-sysroot</samp> when you are configuring with
! <samp>--prefix</samp> set to a directory that is different from the one in
  which you are installing GCC and your target libraries.
  </p>
  <p>This option affects the system root for the compiler used to build
  target libraries (which runs on the build system); it does not affect
  the compiler which is used to build GCC itself.
  </p>
! <p>If you specify the <samp>--with-native-system-header-dir=<var>dirname</var></samp>
! option then the compiler will search that directory within <var>dirname</var> for
! native system headers rather than the default <samp>/usr/include</samp>.
  </p>
  </dd>
! <dt><code>--with-headers</code></dt>
! <dt><code>--with-headers=<var>dir</var></code></dt>
! <dd><p>Deprecated in favor of <samp>--with-sysroot</samp>.
  Specifies that target headers are available when building a cross compiler.
! The <var>dir</var> argument specifies a directory which has the target include
! files.  These include files will be copied into the <samp>gcc</samp> install
! directory.  <em>This option with the <var>dir</var> argument is required</em> when
! building a cross compiler, if <samp><var>prefix</var>/<var>target</var>/sys-include</samp>
! doesn&rsquo;t pre-exist.  If <samp><var>prefix</var>/<var>target</var>/sys-include</samp> does
! pre-exist, the <var>dir</var> argument may be omitted.  <code>fixincludes</code>
  will be run on these files to make them compatible with GCC.
  </p>
  </dd>
! <dt><code>--without-headers</code></dt>
  <dd><p>Tells GCC not use any target headers from a libc when building a cross
  compiler.  When crossing to GNU/Linux, you need the headers so GCC
  can build the exception handling for libgcc.
  </p>
  </dd>
! <dt><code>--with-libs</code></dt>
! <dt><code>--with-libs=&quot;<var>dir1</var> <var>dir2</var> &hellip; <var>dirN</var>&quot;</code></dt>
! <dd><p>Deprecated in favor of <samp>--with-sysroot</samp>.
  Specifies a list of directories which contain the target runtime
! libraries.  These libraries will be copied into the <samp>gcc</samp> install
  directory.  If the directory list is omitted, this option has no
  effect.
  </p>
  </dd>
! <dt><code>--with-newlib</code></dt>
! <dd><p>Specifies that &lsquo;<samp>newlib</samp>&rsquo; is
! being used as the target C library.  This causes <code>__eprintf</code> to be
! omitted from <samp>libgcc.a</samp> on the assumption that it will be provided by
! &lsquo;<samp>newlib</samp>&rsquo;.
  </p>
  <a name="avr"></a>
  </dd>
! <dt><code>--with-avrlibc</code></dt>
  <dd><p>Only supported for the AVR target. Specifies that
! <a href="https://github.com/avrdudes/avr-libc/">AVR-LibC</a>
  is being used as the target C&nbsp; library.  This causes float support
! functions like <code>__addsf3</code> to be omitted from <samp>libgcc.a</samp> on
! the assumption that it will be provided by <samp>libm.a</samp>.  For more
! technical details, cf. <a href="https://gcc.gnu.org/PR54461">PR54461</a>.
  It is not supported for
  RTEMS configurations, which currently use Newlib.  The option is
  supported since version 4.7.2 and is the default in 4.8.0 and newer.
  </p>
  </dd>
! <dt><code>--with-double={32|64|32,64|64,32}</code></dt>
! <dt><code>--with-long-double={32|64|32,64|64,32|double}</code></dt>
  <dd><p>Only supported for the AVR target since version&nbsp;10.
! Specify the default layout available for the C/C++ &lsquo;<samp>double</samp>&rsquo;
! and &lsquo;<samp>long double</samp>&rsquo; type, respectively. The following rules apply:
! </p><ul>
! <li> The first value after the &lsquo;<samp>=</samp>&rsquo; specifies the default layout (in bits)
! of the type and also the default for the <samp>-mdouble=</samp> resp.
! <samp>-mlong-double=</samp> compiler option.
! </li><li> If more than one value is specified, respective multilib variants are
! available, and  <samp>-mdouble=</samp> resp. <samp>-mlong-double=</samp> acts
  as a multilib option.
! </li><li> If <samp>--with-long-double=double</samp> is specified, &lsquo;<samp>double</samp>&rsquo; and
! &lsquo;<samp>long double</samp>&rsquo; will have the same layout.
! </li><li> The defaults are <samp>--with-long-double=64,32</samp> and
! <samp>--with-double=32,64</samp>.  The default &lsquo;<samp>double</samp>&rsquo; layout imposed by
  the latter is compatible with older versions of the compiler that implement
! &lsquo;<samp>double</samp>&rsquo; as a 32-bit type, which does not comply to the language standard.
  </li></ul>
! <p>Not all combinations of <samp>--with-double=</samp> and
! <samp>--with-long-double=</samp> are valid.  For example, the combination
! <samp>--with-double=32,64</samp> <samp>--with-long-double=32</samp> will be
  rejected because the first option specifies the availability of
! multilibs for &lsquo;<samp>double</samp>&rsquo;, whereas the second option implies
! that &lsquo;<samp>long double</samp>&rsquo; &mdash; and hence also &lsquo;<samp>double</samp>&rsquo; &mdash; is always
  32&nbsp;bits wide.
  </p>
  </dd>
! <dt><code>--with-double-comparison={tristate|bool|libf7}</code></dt>
  <dd><p>Only supported for the AVR target since version&nbsp;10.
  Specify what result format is returned by library functions that
! compare 64-bit floating point values (<code>DFmode</code>).
! The GCC default is &lsquo;<samp>tristate</samp>&rsquo;.  If the floating point
! implementation returns a boolean instead, set it to &lsquo;<samp>bool</samp>&rsquo;.
  </p>
  </dd>
! <dt><code>--with-libf7={libgcc|math|math-symbols|no}</code></dt>
  <dd><p>Only supported for the AVR target since version&nbsp;10.
  Specify to which degree code from LibF7 is included in libgcc.
  LibF7 is an ad-hoc, AVR-specific, 64-bit floating point emulation
! written in C and (inline) assembly. &lsquo;<samp>libgcc</samp>&rsquo; adds support
  for functions that one would usually expect in libgcc like double addition,
! double comparisons and double conversions. &lsquo;<samp>math</samp>&rsquo; also adds routines
! that one would expect in <samp>libm.a</samp>, but with <code>__</code> (two underscores)
! prepended to the symbol names as specified by <samp>math.h</samp>.
! &lsquo;<samp>math-symbols</samp>&rsquo; also defines weak aliases for the functions
! declared in <samp>math.h</samp>.  However, <code>--with-libf7</code> won&rsquo;t
! install no <samp>math.h</samp> header file whatsoever, this file must come
! from elsewhere.  This option sets <samp>--with-double-comparison</samp>
! to &lsquo;<samp>bool</samp>&rsquo;.
  </p>
  </dd>
! <dt><code>--with-nds32-lib=<var>library</var></code></dt>
! <dd><p>Specifies that <var>library</var> setting is used for building <samp>libgcc.a</samp>.
! Currently, the valid <var>library</var> is &lsquo;<samp>newlib</samp>&rsquo; or &lsquo;<samp>mculib</samp>&rsquo;.
  This option is only supported for the NDS32 target.
  </p>
  </dd>
! <dt><code>--with-build-time-tools=<var>dir</var></code></dt>
  <dd><p>Specifies where to find the set of target tools (assembler, linker, etc.)
  that will be used while building GCC itself.  This option can be useful
  if the directory layouts are different between the system you are building
  GCC on, and the system where you will deploy it.
  </p>
! <p>For example, on an &lsquo;<samp>ia64-hp-hpux</samp>&rsquo; system, you may have the GNU
! assembler and linker in <samp>/usr/bin</samp>, and the native tools in a
  different path, and build a toolchain that expects to find the
! native tools in <samp>/usr/bin</samp>.
  </p>
! <p>When you use this option, you should ensure that <var>dir</var> includes
! <code>ar</code>, <code>as</code>, <code>ld</code>, <code>nm</code>,
! <code>ranlib</code> and <code>strip</code> if necessary, and possibly
! <code>objdump</code>.  Otherwise, GCC may use an inconsistent set of
  tools.
  </p></dd>
  </dl>
  
! <a name="Overriding-configure-test-results"></a>
! <h4 class="subsubheading">Overriding <code>configure</code> test results</h4>
  
  <p>Sometimes, it might be necessary to override the result of some
! <code>configure</code> test, for example in order to ease porting to a new
! system or work around a bug in a test.  The toplevel <code>configure</code>
  script provides three variables for this:
  </p>
! <dl compact="compact">
! <dd>
! <a name="index-build_005fconfigargs"></a>
! </dd>
! <dt><code>build_configargs</code></dt>
! <dd><p>The contents of this variable is passed to all build <code>configure</code>
  scripts.
  </p>
- <a name="index-host_005fconfigargs"></a>
  </dd>
! <dt><code>host_configargs</code></dt>
! <dd><p>The contents of this variable is passed to all host <code>configure</code>
  scripts.
  </p>
- <a name="index-target_005fconfigargs"></a>
  </dd>
! <dt><code>target_configargs</code></dt>
! <dd><p>The contents of this variable is passed to all target <code>configure</code>
  scripts.
  </p>
  </dd>
  </dl>
  
! <p>In order to avoid shell and <code>make</code> quoting issues for complex
! overrides, you can pass a setting for <code>CONFIG_SITE</code> and set
  variables in the site file.
  </p>
! <a name="Objective-C-Specific-Options"></a>
! <h4 class="subheading">Objective-C-Specific Options</h4>
  
  <p>The following options apply to the build of the Objective-C runtime library.
  </p>
! <dl compact="compact">
! <dt><code>--enable-objc-gc</code></dt>
  <dd><p>Specify that an additional variant of the GNU Objective-C runtime library
  is built, using an external build of the Boehm-Demers-Weiser garbage
! collector (<a href="https://www.hboehm.info/gc/">https://www.hboehm.info/gc/</a>).  This library needs to be
  available for each multilib variant, unless configured with
! <samp>--enable-objc-gc=&lsquo;<samp>auto</samp>&rsquo;</samp> in which case the build of the
  additional runtime library is skipped when not available and the build
  continues.
  </p>
  </dd>
! <dt><code>--with-target-bdw-gc=<var>list</var></code></dt>
! <dt><code>--with-target-bdw-gc-include=<var>list</var></code></dt>
! <dt><code>--with-target-bdw-gc-lib=<var>list</var></code></dt>
  <dd><p>Specify search directories for the garbage collector header files and
! libraries. <var>list</var> is a comma separated list of key value pairs of the
! form &lsquo;<samp><var>multilibdir</var>=<var>path</var></samp>&rsquo;, where the default multilib key
! is named as &lsquo;<samp>.</samp>&rsquo; (dot), or is omitted (e.g.
! &lsquo;<samp>--with-target-bdw-gc=/opt/bdw-gc,32=/opt-bdw-gc32</samp>&rsquo;).
  </p>
! <p>The options <samp>--with-target-bdw-gc-include</samp> and
! <samp>--with-target-bdw-gc-lib</samp> must always be specified together
  for each multilib variant and they take precedence over
! <samp>--with-target-bdw-gc</samp>.  If <samp>--with-target-bdw-gc-include</samp>
  is missing values for a multilib, then the value for the default
! multilib is used (e.g. &lsquo;<samp>--with-target-bdw-gc-include=/opt/bdw-gc/include</samp>&rsquo;
! &lsquo;<samp>--with-target-bdw-gc-lib=/opt/bdw-gc/lib64,32=/opt-bdw-gc/lib32</samp>&rsquo;).
  If none of these options are specified, the library is assumed in
  default locations.
  </p></dd>
  </dl>
  
! <a name="D-Specific-Options"></a>
! <h4 class="subheading">D-Specific Options</h4>
  
  <p>The following options apply to the build of the D runtime library.
  </p>
! <dl compact="compact">
! <dt><code>--enable-libphobos-checking</code></dt>
! <dt><code>--disable-libphobos-checking</code></dt>
! <dt><code>--enable-libphobos-checking=<var>list</var></code></dt>
  <dd><p>This option controls whether run-time checks and contracts are compiled into
  the D runtime library.  When the option is not specified, the library is built
! with &lsquo;<samp>release</samp>&rsquo; checking.  When the option is specified without a
! <var>list</var>, the result is the same as &lsquo;<samp>--enable-libphobos-checking=yes</samp>&rsquo;.
! Likewise, &lsquo;<samp>--disable-libphobos-checking</samp>&rsquo; is equivalent to
! &lsquo;<samp>--enable-libphobos-checking=no</samp>&rsquo;.
  </p>
! <p>The categories of checks available in <var>list</var> are &lsquo;<samp>yes</samp>&rsquo; (compiles
! libphobos with <samp>-fno-release</samp>), &lsquo;<samp>no</samp>&rsquo; (compiles libphobos with
! <samp>-frelease</samp>), &lsquo;<samp>all</samp>&rsquo; (same as &lsquo;<samp>yes</samp>&rsquo;), &lsquo;<samp>none</samp>&rsquo; or
! &lsquo;<samp>release</samp>&rsquo; (same as &lsquo;<samp>no</samp>&rsquo;).
  </p>
! <p>Individual checks available in <var>list</var> are &lsquo;<samp>assert</samp>&rsquo; (compiles libphobos
! with an extra option <samp>-fassert</samp>).
  </p>
  </dd>
! <dt><code>--with-libphobos-druntime-only</code></dt>
! <dt><code>--with-libphobos-druntime-only=<var>choice</var></code></dt>
  <dd><p>Specify whether to build only the core D runtime library (druntime), or both
  the core and standard library (phobos) into libphobos.  This is useful for
  targets that have full support in druntime, but no or incomplete support
! in phobos.  <var>choice</var> can be one of &lsquo;<samp>auto</samp>&rsquo;, &lsquo;<samp>yes</samp>&rsquo;, and &lsquo;<samp>no</samp>&rsquo;
! where &lsquo;<samp>auto</samp>&rsquo; is the default.
  </p>
! <p>When the option is not specified, the default choice &lsquo;<samp>auto</samp>&rsquo; means that it
  is inferred whether the target has support for the phobos standard library.
! When the option is specified without a <var>choice</var>,  the result is the same as
! &lsquo;<samp>--with-libphobos-druntime-only=yes</samp>&rsquo;.
  </p>
  </dd>
! <dt><code>--with-target-system-zlib</code></dt>
! <dd><p>Use installed &lsquo;<samp>zlib</samp>&rsquo; rather than that included with GCC.  This needs
  to be available for each multilib variant, unless configured with
! <samp>--with-target-system-zlib=&lsquo;<samp>auto</samp>&rsquo;</samp> in which case the GCC&nbsp;included
! &lsquo;<samp>zlib</samp>&rsquo; is only used when the system installed library is not available.
  </p></dd>
  </dl>
  
  <hr />
  <p>
! <p><a href="./index.html">Return to the GCC Installation page</a>
  </p>
  
  
--- 2167,2464 ----
  </p></dd>
  </dl>
  
! <h4 class="subheading" id="Cross-Compiler-Specific-Options"><span>Cross-Compiler-Specific Options<a class="copiable-link" href="#Cross-Compiler-Specific-Options"> &para;</a></span></h4>
  <p>The following options only apply to building cross compilers.
  </p>
! <dl class="table">
! <dt><code class="code">--with-toolexeclibdir=<var class="var">dir</var></code></dt>
  <dd><p>Specify the installation directory for libraries built with a cross compiler.
! The default is <samp class="option">${gcc_tooldir}/lib</samp>.
  </p>
  </dd>
! <dt><code class="code">--with-sysroot</code></dt>
! <dt><code class="code">--with-sysroot=<var class="var">dir</var></code></dt>
! <dd><p>Tells GCC to consider <var class="var">dir</var> as the root of a tree that contains
  (a subset of) the root filesystem of the target operating system.
  Target system headers, libraries and run-time object files will be
  searched for in there.  More specifically, this acts as if
! <samp class="option">--sysroot=<var class="var">dir</var></samp> was added to the default options of the built
  compiler.  The specified directory is not copied into the
! install tree, unlike the options <samp class="option">--with-headers</samp> and
! <samp class="option">--with-libs</samp> that this option obsoletes.  The default value,
! in case <samp class="option">--with-sysroot</samp> is not given an argument, is
! <samp class="option">${gcc_tooldir}/sys-root</samp>.  If the specified directory is a
! subdirectory of <samp class="option">${exec_prefix}</samp>, then it will be found relative to
  the GCC binaries if the installation tree is moved.
  </p>
  <p>This option affects the system root for the compiler used to build
  target libraries (which runs on the build system) and the compiler newly
! installed with <code class="code">make install</code>; it does not affect the compiler which is
  used to build GCC itself.
  </p>
! <p>If you specify the <samp class="option">--with-native-system-header-dir=<var class="var">dirname</var></samp>
! option then the compiler will search that directory within <var class="var">dirname</var> for
! native system headers rather than the default <samp class="file">/usr/include</samp>.
  </p>
  </dd>
! <dt><code class="code">--with-build-sysroot</code></dt>
! <dt><code class="code">--with-build-sysroot=<var class="var">dir</var></code></dt>
! <dd><p>Tells GCC to consider <var class="var">dir</var> as the system root (see
! <samp class="option">--with-sysroot</samp>) while building target libraries, instead of
! the directory specified with <samp class="option">--with-sysroot</samp>.  This option is
! only useful when you are already using <samp class="option">--with-sysroot</samp>.  You
! can use <samp class="option">--with-build-sysroot</samp> when you are configuring with
! <samp class="option">--prefix</samp> set to a directory that is different from the one in
  which you are installing GCC and your target libraries.
  </p>
  <p>This option affects the system root for the compiler used to build
  target libraries (which runs on the build system); it does not affect
  the compiler which is used to build GCC itself.
  </p>
! <p>If you specify the <samp class="option">--with-native-system-header-dir=<var class="var">dirname</var></samp>
! option then the compiler will search that directory within <var class="var">dirname</var> for
! native system headers rather than the default <samp class="file">/usr/include</samp>.
  </p>
  </dd>
! <dt><code class="code">--with-headers</code></dt>
! <dt><code class="code">--with-headers=<var class="var">dir</var></code></dt>
! <dd><p>Deprecated in favor of <samp class="option">--with-sysroot</samp>.
  Specifies that target headers are available when building a cross compiler.
! The <var class="var">dir</var> argument specifies a directory which has the target include
! files.  These include files will be copied into the <samp class="file">gcc</samp> install
! directory.  <em class="emph">This option with the <var class="var">dir</var> argument is required</em> when
! building a cross compiler, if <samp class="file"><var class="var">prefix</var>/<var class="var">target</var>/sys-include</samp>
! doesn&rsquo;t pre-exist.  If <samp class="file"><var class="var">prefix</var>/<var class="var">target</var>/sys-include</samp> does
! pre-exist, the <var class="var">dir</var> argument may be omitted.  <code class="command">fixincludes</code>
  will be run on these files to make them compatible with GCC.
  </p>
  </dd>
! <dt><code class="code">--without-headers</code></dt>
  <dd><p>Tells GCC not use any target headers from a libc when building a cross
  compiler.  When crossing to GNU/Linux, you need the headers so GCC
  can build the exception handling for libgcc.
  </p>
  </dd>
! <dt><code class="code">--with-libs</code></dt>
! <dt><code class="code">--with-libs=&quot;<var class="var">dir1</var> <var class="var">dir2</var> &hellip; <var class="var">dirN</var>&quot;</code></dt>
! <dd><p>Deprecated in favor of <samp class="option">--with-sysroot</samp>.
  Specifies a list of directories which contain the target runtime
! libraries.  These libraries will be copied into the <samp class="file">gcc</samp> install
  directory.  If the directory list is omitted, this option has no
  effect.
  </p>
  </dd>
! <dt><code class="code">--with-newlib</code></dt>
! <dd><p>Specifies that &lsquo;<samp class="samp">newlib</samp>&rsquo; is
! being used as the target C library.  This causes <code class="code">__eprintf</code> to be
! omitted from <samp class="file">libgcc.a</samp> on the assumption that it will be provided by
! &lsquo;<samp class="samp">newlib</samp>&rsquo;.
  </p>
  <a name="avr"></a>
  </dd>
! <dt><code class="code">--with-avrlibc</code></dt>
  <dd><p>Only supported for the AVR target. Specifies that
! <a class="uref" href="https://github.com/avrdudes/avr-libc/">AVR-LibC</a>
  is being used as the target C&nbsp; library.  This causes float support
! functions like <code class="code">__addsf3</code> to be omitted from <samp class="file">libgcc.a</samp> on
! the assumption that it will be provided by <samp class="file">libm.a</samp>.  For more
! technical details, cf. <a class="uref" href="https://gcc.gnu.org/PR54461">PR54461</a>.
  It is not supported for
  RTEMS configurations, which currently use Newlib.  The option is
  supported since version 4.7.2 and is the default in 4.8.0 and newer.
  </p>
  </dd>
! <dt><code class="code">--with-double={32|64|32,64|64,32}</code></dt>
! <dt><code class="code">--with-long-double={32|64|32,64|64,32|double}</code></dt>
  <dd><p>Only supported for the AVR target since version&nbsp;10.
! Specify the default layout available for the C/C++ &lsquo;<samp class="samp">double</samp>&rsquo;
! and &lsquo;<samp class="samp">long double</samp>&rsquo; type, respectively. The following rules apply:
! </p><ul class="itemize mark-bullet">
! <li>The first value after the &lsquo;<samp class="samp">=</samp>&rsquo; specifies the default layout (in bits)
! of the type and also the default for the <samp class="option">-mdouble=</samp> resp.
! <samp class="option">-mlong-double=</samp> compiler option.
! </li><li>If more than one value is specified, respective multilib variants are
! available, and  <samp class="option">-mdouble=</samp> resp. <samp class="option">-mlong-double=</samp> acts
  as a multilib option.
! </li><li>If <samp class="option">--with-long-double=double</samp> is specified, &lsquo;<samp class="samp">double</samp>&rsquo; and
! &lsquo;<samp class="samp">long double</samp>&rsquo; will have the same layout.
! </li><li>The defaults are <samp class="option">--with-long-double=64,32</samp> and
! <samp class="option">--with-double=32,64</samp>.  The default &lsquo;<samp class="samp">double</samp>&rsquo; layout imposed by
  the latter is compatible with older versions of the compiler that implement
! &lsquo;<samp class="samp">double</samp>&rsquo; as a 32-bit type, which does not comply to the language standard.
  </li></ul>
! <p>Not all combinations of <samp class="option">--with-double=</samp> and
! <samp class="option">--with-long-double=</samp> are valid.  For example, the combination
! <samp class="option">--with-double=32,64</samp> <samp class="option">--with-long-double=32</samp> will be
  rejected because the first option specifies the availability of
! multilibs for &lsquo;<samp class="samp">double</samp>&rsquo;, whereas the second option implies
! that &lsquo;<samp class="samp">long double</samp>&rsquo; &mdash; and hence also &lsquo;<samp class="samp">double</samp>&rsquo; &mdash; is always
  32&nbsp;bits wide.
  </p>
  </dd>
! <dt><code class="code">--with-double-comparison={tristate|bool|libf7}</code></dt>
  <dd><p>Only supported for the AVR target since version&nbsp;10.
  Specify what result format is returned by library functions that
! compare 64-bit floating point values (<code class="code">DFmode</code>).
! The GCC default is &lsquo;<samp class="samp">tristate</samp>&rsquo;.  If the floating point
! implementation returns a boolean instead, set it to &lsquo;<samp class="samp">bool</samp>&rsquo;.
  </p>
  </dd>
! <dt><code class="code">--with-libf7={libgcc|math|math-symbols|no}</code></dt>
  <dd><p>Only supported for the AVR target since version&nbsp;10.
  Specify to which degree code from LibF7 is included in libgcc.
  LibF7 is an ad-hoc, AVR-specific, 64-bit floating point emulation
! written in C and (inline) assembly. &lsquo;<samp class="samp">libgcc</samp>&rsquo; adds support
  for functions that one would usually expect in libgcc like double addition,
! double comparisons and double conversions. &lsquo;<samp class="samp">math</samp>&rsquo; also adds routines
! that one would expect in <samp class="file">libm.a</samp>, but with <code class="code">__</code> (two underscores)
! prepended to the symbol names as specified by <samp class="file">math.h</samp>.
! &lsquo;<samp class="samp">math-symbols</samp>&rsquo; also defines weak aliases for the functions
! declared in <samp class="file">math.h</samp>.  However, <code class="code">--with-libf7</code> won&rsquo;t
! install no <samp class="file">math.h</samp> header file whatsoever, this file must come
! from elsewhere.  This option sets <samp class="option">--with-double-comparison</samp>
! to &lsquo;<samp class="samp">bool</samp>&rsquo;.
  </p>
  </dd>
! <dt><code class="code">--with-nds32-lib=<var class="var">library</var></code></dt>
! <dd><p>Specifies that <var class="var">library</var> setting is used for building <samp class="file">libgcc.a</samp>.
! Currently, the valid <var class="var">library</var> is &lsquo;<samp class="samp">newlib</samp>&rsquo; or &lsquo;<samp class="samp">mculib</samp>&rsquo;.
  This option is only supported for the NDS32 target.
  </p>
  </dd>
! <dt><code class="code">--with-build-time-tools=<var class="var">dir</var></code></dt>
  <dd><p>Specifies where to find the set of target tools (assembler, linker, etc.)
  that will be used while building GCC itself.  This option can be useful
  if the directory layouts are different between the system you are building
  GCC on, and the system where you will deploy it.
  </p>
! <p>For example, on an &lsquo;<samp class="samp">ia64-hp-hpux</samp>&rsquo; system, you may have the GNU
! assembler and linker in <samp class="file">/usr/bin</samp>, and the native tools in a
  different path, and build a toolchain that expects to find the
! native tools in <samp class="file">/usr/bin</samp>.
  </p>
! <p>When you use this option, you should ensure that <var class="var">dir</var> includes
! <code class="command">ar</code>, <code class="command">as</code>, <code class="command">ld</code>, <code class="command">nm</code>,
! <code class="command">ranlib</code> and <code class="command">strip</code> if necessary, and possibly
! <code class="command">objdump</code>.  Otherwise, GCC may use an inconsistent set of
  tools.
  </p></dd>
  </dl>
  
! <h4 class="subsubheading" id="Overriding-configure-test-results"><span>Overriding <code class="command">configure</code> test results<a class="copiable-link" href="#Overriding-configure-test-results"> &para;</a></span></h4>
  
  <p>Sometimes, it might be necessary to override the result of some
! <code class="command">configure</code> test, for example in order to ease porting to a new
! system or work around a bug in a test.  The toplevel <code class="command">configure</code>
  script provides three variables for this:
  </p>
! <dl class="table">
! <dt><a id="index-build_005fconfigargs"></a><span><code class="code">build_configargs</code><a class="copiable-link" href="#index-build_005fconfigargs"> &para;</a></span></dt>
! <dd><p>The contents of this variable is passed to all build <code class="command">configure</code>
  scripts.
  </p>
  </dd>
! <dt><a id="index-host_005fconfigargs"></a><span><code class="code">host_configargs</code><a class="copiable-link" href="#index-host_005fconfigargs"> &para;</a></span></dt>
! <dd><p>The contents of this variable is passed to all host <code class="command">configure</code>
  scripts.
  </p>
  </dd>
! <dt><a id="index-target_005fconfigargs"></a><span><code class="code">target_configargs</code><a class="copiable-link" href="#index-target_005fconfigargs"> &para;</a></span></dt>
! <dd><p>The contents of this variable is passed to all target <code class="command">configure</code>
  scripts.
  </p>
  </dd>
  </dl>
  
! <p>In order to avoid shell and <code class="command">make</code> quoting issues for complex
! overrides, you can pass a setting for <code class="env">CONFIG_SITE</code> and set
  variables in the site file.
  </p>
! <h4 class="subheading" id="Objective-C-Specific-Options"><span>Objective-C-Specific Options<a class="copiable-link" href="#Objective-C-Specific-Options"> &para;</a></span></h4>
  
  <p>The following options apply to the build of the Objective-C runtime library.
  </p>
! <dl class="table">
! <dt><code class="code">--enable-objc-gc</code></dt>
  <dd><p>Specify that an additional variant of the GNU Objective-C runtime library
  is built, using an external build of the Boehm-Demers-Weiser garbage
! collector (<a class="uref" href="https://www.hboehm.info/gc/">https://www.hboehm.info/gc/</a>).  This library needs to be
  available for each multilib variant, unless configured with
! <samp class="option">--enable-objc-gc=&lsquo;<samp class="samp">auto</samp>&rsquo;</samp> in which case the build of the
  additional runtime library is skipped when not available and the build
  continues.
  </p>
  </dd>
! <dt><code class="code">--with-target-bdw-gc=<var class="var">list</var></code></dt>
! <dt><code class="code">--with-target-bdw-gc-include=<var class="var">list</var></code></dt>
! <dt><code class="code">--with-target-bdw-gc-lib=<var class="var">list</var></code></dt>
  <dd><p>Specify search directories for the garbage collector header files and
! libraries. <var class="var">list</var> is a comma separated list of key value pairs of the
! form &lsquo;<samp class="samp"><var class="var">multilibdir</var>=<var class="var">path</var></samp>&rsquo;, where the default multilib key
! is named as &lsquo;<samp class="samp">.</samp>&rsquo; (dot), or is omitted (e.g.
! &lsquo;<samp class="samp">--with-target-bdw-gc=/opt/bdw-gc,32=/opt-bdw-gc32</samp>&rsquo;).
  </p>
! <p>The options <samp class="option">--with-target-bdw-gc-include</samp> and
! <samp class="option">--with-target-bdw-gc-lib</samp> must always be specified together
  for each multilib variant and they take precedence over
! <samp class="option">--with-target-bdw-gc</samp>.  If <samp class="option">--with-target-bdw-gc-include</samp>
  is missing values for a multilib, then the value for the default
! multilib is used (e.g. &lsquo;<samp class="samp">--with-target-bdw-gc-include=/opt/bdw-gc/include</samp>&rsquo;
! &lsquo;<samp class="samp">--with-target-bdw-gc-lib=/opt/bdw-gc/lib64,32=/opt-bdw-gc/lib32</samp>&rsquo;).
  If none of these options are specified, the library is assumed in
  default locations.
  </p></dd>
  </dl>
  
! <h4 class="subheading" id="D-Specific-Options"><span>D-Specific Options<a class="copiable-link" href="#D-Specific-Options"> &para;</a></span></h4>
  
  <p>The following options apply to the build of the D runtime library.
  </p>
! <dl class="table">
! <dt><code class="code">--enable-libphobos-checking</code></dt>
! <dt><code class="code">--disable-libphobos-checking</code></dt>
! <dt><code class="code">--enable-libphobos-checking=<var class="var">list</var></code></dt>
  <dd><p>This option controls whether run-time checks and contracts are compiled into
  the D runtime library.  When the option is not specified, the library is built
! with &lsquo;<samp class="samp">release</samp>&rsquo; checking.  When the option is specified without a
! <var class="var">list</var>, the result is the same as &lsquo;<samp class="samp">--enable-libphobos-checking=yes</samp>&rsquo;.
! Likewise, &lsquo;<samp class="samp">--disable-libphobos-checking</samp>&rsquo; is equivalent to
! &lsquo;<samp class="samp">--enable-libphobos-checking=no</samp>&rsquo;.
  </p>
! <p>The categories of checks available in <var class="var">list</var> are &lsquo;<samp class="samp">yes</samp>&rsquo; (compiles
! libphobos with <samp class="option">-fno-release</samp>), &lsquo;<samp class="samp">no</samp>&rsquo; (compiles libphobos with
! <samp class="option">-frelease</samp>), &lsquo;<samp class="samp">all</samp>&rsquo; (same as &lsquo;<samp class="samp">yes</samp>&rsquo;), &lsquo;<samp class="samp">none</samp>&rsquo; or
! &lsquo;<samp class="samp">release</samp>&rsquo; (same as &lsquo;<samp class="samp">no</samp>&rsquo;).
  </p>
! <p>Individual checks available in <var class="var">list</var> are &lsquo;<samp class="samp">assert</samp>&rsquo; (compiles libphobos
! with an extra option <samp class="option">-fassert</samp>).
  </p>
  </dd>
! <dt><code class="code">--with-libphobos-druntime-only</code></dt>
! <dt><code class="code">--with-libphobos-druntime-only=<var class="var">choice</var></code></dt>
  <dd><p>Specify whether to build only the core D runtime library (druntime), or both
  the core and standard library (phobos) into libphobos.  This is useful for
  targets that have full support in druntime, but no or incomplete support
! in phobos.  <var class="var">choice</var> can be one of &lsquo;<samp class="samp">auto</samp>&rsquo;, &lsquo;<samp class="samp">yes</samp>&rsquo;, and &lsquo;<samp class="samp">no</samp>&rsquo;
! where &lsquo;<samp class="samp">auto</samp>&rsquo; is the default.
  </p>
! <p>When the option is not specified, the default choice &lsquo;<samp class="samp">auto</samp>&rsquo; means that it
  is inferred whether the target has support for the phobos standard library.
! When the option is specified without a <var class="var">choice</var>,  the result is the same as
! &lsquo;<samp class="samp">--with-libphobos-druntime-only=yes</samp>&rsquo;.
  </p>
  </dd>
! <dt><code class="code">--with-target-system-zlib</code></dt>
! <dd><p>Use installed &lsquo;<samp class="samp">zlib</samp>&rsquo; rather than that included with GCC.  This needs
  to be available for each multilib variant, unless configured with
! <samp class="option">--with-target-system-zlib=&lsquo;<samp class="samp">auto</samp>&rsquo;</samp> in which case the GCC&nbsp;included
! &lsquo;<samp class="samp">zlib</samp>&rsquo; is only used when the system installed library is not available.
  </p></dd>
  </dl>
  
  <hr />
  <p>
! <p><a class="uref" href="./index.html">Return to the GCC Installation page</a>
  </p>
  
  
diff -Nrcpad gcc-15.2.0/INSTALL/download.html gcc-15.3.0/INSTALL/download.html
*** gcc-15.2.0/INSTALL/download.html	Fri Aug  8 06:52:56 2025
--- gcc-15.3.0/INSTALL/download.html	Fri Jun 12 06:10:25 2026
***************
*** 1,6 ****
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2025 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,9 ----
! <!DOCTYPE html>
  <html>
! <!-- Created by GNU Texinfo 7.1, https://www.gnu.org/software/texinfo/ -->
! <head>
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <!-- Copyright Â© 1988-2025 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,27 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
- <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Downloading GCC</title>
  
  <meta name="description" content="Downloading GCC">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,67 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
! <style type="text/css">
! <!--
! a.summary-letter {text-decoration: none}
! blockquote.indentedblock {margin-right: 0em}
! blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
! blockquote.smallquotation {font-size: smaller}
! div.display {margin-left: 3.2em}
! div.example {margin-left: 3.2em}
! div.lisp {margin-left: 3.2em}
! div.smalldisplay {margin-left: 3.2em}
! div.smallexample {margin-left: 3.2em}
! div.smalllisp {margin-left: 3.2em}
! kbd {font-style: oblique}
! pre.display {font-family: inherit}
! pre.format {font-family: inherit}
! pre.menu-comment {font-family: serif}
! pre.menu-preformatted {font-family: serif}
! pre.smalldisplay {font-family: inherit; font-size: smaller}
! pre.smallexample {font-size: smaller}
! pre.smallformat {font-family: inherit; font-size: smaller}
! pre.smalllisp {font-size: smaller}
! span.nolinebreak {white-space: nowrap}
! span.roman {font-family: initial; font-weight: normal}
! span.sansserif {font-family: sans-serif; font-weight: normal}
! ul.no-bullet {list-style: none}
! -->
! </style>
  
  
  </head>
  
  <body lang="en">
- <h1 class="settitle" align="center">Downloading GCC</h1>
  
  
  
--- 29,41 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
! <meta name="viewport" content="width=device-width,initial-scale=1">
! 
  
  
  </head>
  
  <body lang="en">
  
  
  
*************** ul.no-bullet {list-style: none}
*** 83,95 ****
  
  
  
! <a name="index-Downloading-GCC"></a>
! <a name="index-Downloading-the-Source"></a>
  
! <p>GCC is distributed via <a href="https://gcc.gnu.org/git.html">git</a> and via
! HTTPS as tarballs compressed with <code>gzip</code> or <code>bzip2</code>.
  </p>
! <p>Please refer to the <a href="https://gcc.gnu.org/releases.html">releases web page</a>
  for information on how to obtain GCC.
  </p>
  <p>The source distribution includes the Ada, C, C++, Objective-C, COBOL
--- 57,69 ----
  
  
  
! <a class="index-entry-id" id="index-Downloading-GCC"></a>
! <a class="index-entry-id" id="index-Downloading-the-Source"></a>
  
! <p>GCC is distributed via <a class="uref" href="https://gcc.gnu.org/git.html">git</a> and via
! HTTPS as tarballs compressed with <code class="command">gzip</code> or <code class="command">bzip2</code>.
  </p>
! <p>Please refer to the <a class="uref" href="https://gcc.gnu.org/releases.html">releases web page</a>
  for information on how to obtain GCC.
  </p>
  <p>The source distribution includes the Ada, C, C++, Objective-C, COBOL
*************** installation or for use in place of the
*** 106,126 ****
  OS), unpack the binutils distribution either in the same directory or
  a separate one.  In the latter case, add symbolic links to any
  components of the binutils you intend to build alongside the compiler
! (<samp>bfd</samp>, <samp>binutils</samp>, <samp>gas</samp>, <samp>gprof</samp>, <samp>ld</samp>,
! <samp>opcodes</samp>, &hellip;) to the directory containing the GCC sources.
  </p>
  <p>Likewise the GMP, MPFR, MPC and Gettext libraries can be automatically
  built together with GCC.  You may simply run the
! <code>contrib/download_prerequisites</code> script in the GCC source directory
  to set up everything.
  Otherwise unpack the GMP, MPFR, MPC and/or Gettext source
  distributions in the directory containing the GCC sources and rename
! their directories to <samp>gmp</samp>, <samp>mpfr</samp>, <samp>mpc</samp> and
! <samp>gettext</samp>, respectively (or use symbolic links with the same name).
  </p>
  <hr />
  <p>
! <p><a href="./index.html">Return to the GCC Installation page</a>
  </p>
  
  
--- 80,100 ----
  OS), unpack the binutils distribution either in the same directory or
  a separate one.  In the latter case, add symbolic links to any
  components of the binutils you intend to build alongside the compiler
! (<samp class="file">bfd</samp>, <samp class="file">binutils</samp>, <samp class="file">gas</samp>, <samp class="file">gprof</samp>, <samp class="file">ld</samp>,
! <samp class="file">opcodes</samp>, &hellip;) to the directory containing the GCC sources.
  </p>
  <p>Likewise the GMP, MPFR, MPC and Gettext libraries can be automatically
  built together with GCC.  You may simply run the
! <code class="command">contrib/download_prerequisites</code> script in the GCC source directory
  to set up everything.
  Otherwise unpack the GMP, MPFR, MPC and/or Gettext source
  distributions in the directory containing the GCC sources and rename
! their directories to <samp class="file">gmp</samp>, <samp class="file">mpfr</samp>, <samp class="file">mpc</samp> and
! <samp class="file">gettext</samp>, respectively (or use symbolic links with the same name).
  </p>
  <hr />
  <p>
! <p><a class="uref" href="./index.html">Return to the GCC Installation page</a>
  </p>
  
  
diff -Nrcpad gcc-15.2.0/INSTALL/finalinstall.html gcc-15.3.0/INSTALL/finalinstall.html
*** gcc-15.2.0/INSTALL/finalinstall.html	Fri Aug  8 06:52:57 2025
--- gcc-15.3.0/INSTALL/finalinstall.html	Fri Jun 12 06:10:26 2026
***************
*** 1,6 ****
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2025 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,9 ----
! <!DOCTYPE html>
  <html>
! <!-- Created by GNU Texinfo 7.1, https://www.gnu.org/software/texinfo/ -->
! <head>
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <!-- Copyright Â© 1988-2025 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,27 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
- <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: Final installation</title>
  
  <meta name="description" content="Installing GCC: Final installation">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,59 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
- a.summary-letter {text-decoration: none}
- blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
- div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
- div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- div.smalllisp {margin-left: 3.2em}
- kbd {font-style: oblique}
- pre.display {font-family: inherit}
- pre.format {font-family: inherit}
- pre.menu-comment {font-family: serif}
- pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: inherit; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: inherit; font-size: smaller}
- pre.smalllisp {font-size: smaller}
- span.nolinebreak {white-space: nowrap}
- span.roman {font-family: initial; font-weight: normal}
- span.sansserif {font-family: sans-serif; font-weight: normal}
- ul.no-bullet {list-style: none}
  -->
  </style>
  
--- 29,39 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
  div.example {margin-left: 3.2em}
  -->
  </style>
  
*************** ul.no-bullet {list-style: none}
*** 61,67 ****
  </head>
  
  <body lang="en">
- <h1 class="settitle" align="center">Installing GCC: Final installation</h1>
  
  
  
--- 41,46 ----
*************** ul.no-bullet {list-style: none}
*** 89,96 ****
  
  
  <p>Now that GCC has been built (and optionally tested), you can install it with
! </p><div class="smallexample">
! <pre class="smallexample">cd <var>objdir</var> &amp;&amp; make install
  </pre></div>
  
  <p>We strongly recommend to install into a target directory where there is
--- 68,75 ----
  
  
  <p>Now that GCC has been built (and optionally tested), you can install it with
! </p><div class="example smallexample">
! <pre class="example-preformatted">cd <var class="var">objdir</var> &amp;&amp; make install
  </pre></div>
  
  <p>We strongly recommend to install into a target directory where there is
*************** depend on this debugging information (ca
*** 100,165 ****
  instance).
  </p>
  <p>That step completes the installation of GCC; user level binaries can
! be found in <samp><var>prefix</var>/bin</samp> where <var>prefix</var> is the value
! you specified with the <samp>--prefix</samp> to configure (or
! <samp>/usr/local</samp> by default).  (If you specified <samp>--bindir</samp>,
  that directory will be used instead; otherwise, if you specified
! <samp>--exec-prefix</samp>, <samp><var>exec-prefix</var>/bin</samp> will be used.)
  Headers for the C++ library are installed in
! <samp><var>prefix</var>/include</samp>; libraries in <samp><var>libdir</var></samp>
! (normally <samp><var>prefix</var>/lib</samp>); internal parts of the compiler in
! <samp><var>libdir</var>/gcc</samp> and <samp><var>libexecdir</var>/gcc</samp>; documentation
! in info format in <samp><var>infodir</var></samp> (normally
! <samp><var>prefix</var>/info</samp>).
  </p>
  <p>When installing cross-compilers, GCC&rsquo;s executables
! are not only installed into <samp><var>bindir</var></samp>, that
! is, <samp><var>exec-prefix</var>/bin</samp>, but additionally into
! <samp><var>exec-prefix</var>/<var>target-alias</var>/bin</samp>, if that directory
! exists.  Typically, such <em>tooldirs</em> hold target-specific
  binutils, including assembler and linker.
  </p>
! <p>Installation into a temporary staging area or into a <code>chroot</code>
  jail can be achieved with the command
  </p>
! <div class="smallexample">
! <pre class="smallexample">make DESTDIR=<var>path-to-rootdir</var> install
  </pre></div>
  
! <p>where <var>path-to-rootdir</var> is the absolute path of
  a directory relative to which all installation paths will be
! interpreted.  Note that the directory specified by <code>DESTDIR</code>
  need not exist yet; it will be created if necessary.
  </p>
! <p>There is a subtle point with tooldirs and <code>DESTDIR</code>:
  If you relocate a cross-compiler installation with
! e.g. &lsquo;<samp>DESTDIR=<var>rootdir</var></samp>&rsquo;, then the directory
! <samp><var>rootdir</var>/<var>exec-prefix</var>/<var>target-alias</var>/bin</samp> will
  be filled with duplicated GCC executables only if it already exists,
  it will not be created otherwise.  This is regarded as a feature,
  not as a bug, because it gives slightly more control to the packagers
! using the <code>DESTDIR</code> feature.
  </p>
  <p>You can install stripped programs and libraries with
  </p>
! <div class="smallexample">
! <pre class="smallexample">make install-strip
  </pre></div>
  
  <p>By default, only the man pages and info-format GCC documentation
  are built and installed.  If you want to generate the GCC manuals in
  other formats, use commands like
  </p>
! <div class="smallexample">
! <pre class="smallexample">make dvi
  make pdf
  make html
  </pre></div>
  
  <p>to build the manuals in the corresponding formats, and
  </p>
! <div class="smallexample">
! <pre class="smallexample">make install-dvi
  make install-pdf
  make install-html
  </pre></div>
--- 79,144 ----
  instance).
  </p>
  <p>That step completes the installation of GCC; user level binaries can
! be found in <samp class="file"><var class="var">prefix</var>/bin</samp> where <var class="var">prefix</var> is the value
! you specified with the <samp class="option">--prefix</samp> to configure (or
! <samp class="file">/usr/local</samp> by default).  (If you specified <samp class="option">--bindir</samp>,
  that directory will be used instead; otherwise, if you specified
! <samp class="option">--exec-prefix</samp>, <samp class="file"><var class="var">exec-prefix</var>/bin</samp> will be used.)
  Headers for the C++ library are installed in
! <samp class="file"><var class="var">prefix</var>/include</samp>; libraries in <samp class="file"><var class="var">libdir</var></samp>
! (normally <samp class="file"><var class="var">prefix</var>/lib</samp>); internal parts of the compiler in
! <samp class="file"><var class="var">libdir</var>/gcc</samp> and <samp class="file"><var class="var">libexecdir</var>/gcc</samp>; documentation
! in info format in <samp class="file"><var class="var">infodir</var></samp> (normally
! <samp class="file"><var class="var">prefix</var>/info</samp>).
  </p>
  <p>When installing cross-compilers, GCC&rsquo;s executables
! are not only installed into <samp class="file"><var class="var">bindir</var></samp>, that
! is, <samp class="file"><var class="var">exec-prefix</var>/bin</samp>, but additionally into
! <samp class="file"><var class="var">exec-prefix</var>/<var class="var">target-alias</var>/bin</samp>, if that directory
! exists.  Typically, such <em class="dfn">tooldirs</em> hold target-specific
  binutils, including assembler and linker.
  </p>
! <p>Installation into a temporary staging area or into a <code class="command">chroot</code>
  jail can be achieved with the command
  </p>
! <div class="example smallexample">
! <pre class="example-preformatted">make DESTDIR=<var class="var">path-to-rootdir</var> install
  </pre></div>
  
! <p>where <var class="var">path-to-rootdir</var> is the absolute path of
  a directory relative to which all installation paths will be
! interpreted.  Note that the directory specified by <code class="code">DESTDIR</code>
  need not exist yet; it will be created if necessary.
  </p>
! <p>There is a subtle point with tooldirs and <code class="code">DESTDIR</code>:
  If you relocate a cross-compiler installation with
! e.g. &lsquo;<samp class="samp">DESTDIR=<var class="var">rootdir</var></samp>&rsquo;, then the directory
! <samp class="file"><var class="var">rootdir</var>/<var class="var">exec-prefix</var>/<var class="var">target-alias</var>/bin</samp> will
  be filled with duplicated GCC executables only if it already exists,
  it will not be created otherwise.  This is regarded as a feature,
  not as a bug, because it gives slightly more control to the packagers
! using the <code class="code">DESTDIR</code> feature.
  </p>
  <p>You can install stripped programs and libraries with
  </p>
! <div class="example smallexample">
! <pre class="example-preformatted">make install-strip
  </pre></div>
  
  <p>By default, only the man pages and info-format GCC documentation
  are built and installed.  If you want to generate the GCC manuals in
  other formats, use commands like
  </p>
! <div class="example smallexample">
! <pre class="example-preformatted">make dvi
  make pdf
  make html
  </pre></div>
  
  <p>to build the manuals in the corresponding formats, and
  </p>
! <div class="example smallexample">
! <pre class="example-preformatted">make install-dvi
  make install-pdf
  make install-html
  </pre></div>
*************** make install-html
*** 167,186 ****
  <p>to install them.
  Alternatively, there are prebuilt online versions of the manuals for
  released versions of GCC on
! <a href="https://gcc.gnu.org/onlinedocs/">the GCC web site</a>.
  </p>
  <p>If you built GCC yourself we would like to know if the
! <a href="specific.html">host/target specific installation notes</a>
  didn&rsquo;t include your host/target information or if that information is
  incomplete or out of date.  Send a note to
! <a href="mailto:gcc@gcc.gnu.org">gcc@gcc.gnu.org</a> detailing how the information should be changed.
  </p>
  <p>If you find a bug, please report it following the
! <a href="../bugs/">bug reporting guidelines</a>.
  </p>
  <hr />
  <p>
! <p><a href="./index.html">Return to the GCC Installation page</a>
  </p>
  
  
--- 146,165 ----
  <p>to install them.
  Alternatively, there are prebuilt online versions of the manuals for
  released versions of GCC on
! <a class="uref" href="https://gcc.gnu.org/onlinedocs/">the GCC web site</a>.
  </p>
  <p>If you built GCC yourself we would like to know if the
! <a class="uref" href="specific.html">host/target specific installation notes</a>
  didn&rsquo;t include your host/target information or if that information is
  incomplete or out of date.  Send a note to
! <a class="email" href="mailto:gcc@gcc.gnu.org">gcc@gcc.gnu.org</a> detailing how the information should be changed.
  </p>
  <p>If you find a bug, please report it following the
! <a class="uref" href="../bugs/">bug reporting guidelines</a>.
  </p>
  <hr />
  <p>
! <p><a class="uref" href="./index.html">Return to the GCC Installation page</a>
  </p>
  
  
diff -Nrcpad gcc-15.2.0/INSTALL/gfdl.html gcc-15.3.0/INSTALL/gfdl.html
*** gcc-15.2.0/INSTALL/gfdl.html	Fri Aug  8 06:52:57 2025
--- gcc-15.3.0/INSTALL/gfdl.html	Fri Jun 12 06:10:26 2026
***************
*** 1,6 ****
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2025 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,9 ----
! <!DOCTYPE html>
  <html>
! <!-- Created by GNU Texinfo 7.1, https://www.gnu.org/software/texinfo/ -->
! <head>
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <!-- Copyright Â© 1988-2025 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,27 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
- <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: GNU Free Documentation License</title>
  
  <meta name="description" content="Installing GCC: GNU Free Documentation License">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,59 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
! a.summary-letter {text-decoration: none}
! blockquote.indentedblock {margin-right: 0em}
! blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
! blockquote.smallquotation {font-size: smaller}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
! div.lisp {margin-left: 3.2em}
! div.smalldisplay {margin-left: 3.2em}
! div.smallexample {margin-left: 3.2em}
! div.smalllisp {margin-left: 3.2em}
! kbd {font-style: oblique}
! pre.display {font-family: inherit}
! pre.format {font-family: inherit}
! pre.menu-comment {font-family: serif}
! pre.menu-preformatted {font-family: serif}
! pre.smalldisplay {font-family: inherit; font-size: smaller}
! pre.smallexample {font-size: smaller}
! pre.smallformat {font-family: inherit; font-size: smaller}
! pre.smalllisp {font-size: smaller}
! span.nolinebreak {white-space: nowrap}
! span.roman {font-family: initial; font-weight: normal}
! span.sansserif {font-family: sans-serif; font-weight: normal}
! ul.no-bullet {list-style: none}
  -->
  </style>
  
--- 29,44 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
! a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
! div.center {text-align:center}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
! pre.display-preformatted {font-family: inherit}
! span:hover a.copiable-link {visibility: visible}
  -->
  </style>
  
*************** ul.no-bullet {list-style: none}
*** 61,67 ****
  </head>
  
  <body lang="en">
- <h1 class="settitle" align="center">Installing GCC: GNU Free Documentation License</h1>
  
  
  
--- 46,51 ----
*************** ul.no-bullet {list-style: none}
*** 92,113 ****
  
  <h1 align="center">Installing GCC: GNU Free Documentation License</h1>
  
! <a name="index-FDL_002c-GNU-Free-Documentation-License"></a>
! <div align="center">Version 1.3, 3 November 2008
  </div>
  <div class="display">
! <pre class="display">Copyright &copy; 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
! <a href="https://www.fsf.org">https://www.fsf.org</a>
  
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
  </pre></div>
  
! <ol start="0">
  <li> PREAMBLE
  
  <p>The purpose of this License is to make a manual, textbook, or other
! functional and useful document <em>free</em> in the sense of freedom: to
  assure everyone the effective freedom to copy and redistribute it,
  with or without modifying it, either commercially or noncommercially.
  Secondarily, this License preserves for the author and publisher a way
--- 76,97 ----
  
  <h1 align="center">Installing GCC: GNU Free Documentation License</h1>
  
! <a class="index-entry-id" id="index-FDL_002c-GNU-Free-Documentation-License"></a>
! <div class="center">Version 1.3, 3 November 2008
  </div>
  <div class="display">
! <pre class="display-preformatted">Copyright &copy; 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
! <a class="uref" href="https://www.fsf.org">https://www.fsf.org</a>
  
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
  </pre></div>
  
! <ol class="enumerate" start="0">
  <li> PREAMBLE
  
  <p>The purpose of this License is to make a manual, textbook, or other
! functional and useful document <em class="dfn">free</em> in the sense of freedom: to
  assure everyone the effective freedom to copy and redistribute it,
  with or without modifying it, either commercially or noncommercially.
  Secondarily, this License preserves for the author and publisher a way
*************** An image format is not Transparent if us
*** 181,196 ****
  of text.  A copy that is not &ldquo;Transparent&rdquo; is called &ldquo;Opaque&rdquo;.
  </p>
  <p>Examples of suitable formats for Transparent copies include plain
! <small>ASCII</small> without markup, Texinfo input format, LaTeX input
! format, <acronym>SGML</acronym> or <acronym>XML</acronym> using a publicly available
! <acronym>DTD</acronym>, and standard-conforming simple <acronym>HTML</acronym>,
! PostScript or <acronym>PDF</acronym> designed for human modification.  Examples
! of transparent image formats include <acronym>PNG</acronym>, <acronym>XCF</acronym> and
! <acronym>JPG</acronym>.  Opaque formats include proprietary formats that can be
! read and edited only by proprietary word processors, <acronym>SGML</acronym> or
! <acronym>XML</acronym> for which the <acronym>DTD</acronym> and/or processing tools are
! not generally available, and the machine-generated <acronym>HTML</acronym>,
! PostScript or <acronym>PDF</acronym> produced by some word processors for
  output purposes only.
  </p>
  <p>The &ldquo;Title Page&rdquo; means, for a printed book, the title page itself,
--- 165,180 ----
  of text.  A copy that is not &ldquo;Transparent&rdquo; is called &ldquo;Opaque&rdquo;.
  </p>
  <p>Examples of suitable formats for Transparent copies include plain
! <small class="sc">ASCII</small> without markup, Texinfo input format, LaTeX input
! format, <abbr class="acronym">SGML</abbr> or <abbr class="acronym">XML</abbr> using a publicly available
! <abbr class="acronym">DTD</abbr>, and standard-conforming simple <abbr class="acronym">HTML</abbr>,
! PostScript or <abbr class="acronym">PDF</abbr> designed for human modification.  Examples
! of transparent image formats include <abbr class="acronym">PNG</abbr>, <abbr class="acronym">XCF</abbr> and
! <abbr class="acronym">JPG</abbr>.  Opaque formats include proprietary formats that can be
! read and edited only by proprietary word processors, <abbr class="acronym">SGML</abbr> or
! <abbr class="acronym">XML</abbr> for which the <abbr class="acronym">DTD</abbr> and/or processing tools are
! not generally available, and the machine-generated <abbr class="acronym">HTML</abbr>,
! PostScript or <abbr class="acronym">PDF</abbr> produced by some word processors for
  output purposes only.
  </p>
  <p>The &ldquo;Title Page&rdquo; means, for a printed book, the title page itself,
*************** Version filling the role of the Document
*** 279,285 ****
  and modification of the Modified Version to whoever possesses a copy
  of it.  In addition, you must do these things in the Modified Version:
  </p>
! <ol type="A" start="1">
  <li> Use in the Title Page (and on the covers, if any) a title distinct
  from that of the Document, and from those of previous versions
  (which should, if there were any, be listed in the History section
--- 263,269 ----
  and modification of the Modified Version to whoever possesses a copy
  of it.  In addition, you must do these things in the Modified Version:
  </p>
! <ol class="enumerate" type="A" start="1">
  <li> Use in the Title Page (and on the covers, if any) a title distinct
  from that of the Document, and from those of previous versions
  (which should, if there were any, be listed in the History section
*************** not give you any rights to use it.
*** 479,485 ****
  of the GNU Free Documentation License from time to time.  Such new
  versions will be similar in spirit to the present version, but may
  differ in detail to address new problems or concerns.  See
! <a href="https://www.gnu.org/copyleft/">https://www.gnu.org/copyleft/</a>.
  </p>
  <p>Each version of the License is given a distinguishing version number.
  If the Document specifies that a particular numbered version of this
--- 463,469 ----
  of the GNU Free Documentation License from time to time.  Such new
  versions will be similar in spirit to the present version, but may
  differ in detail to address new problems or concerns.  See
! <a class="uref" href="https://www.gnu.org/copyleft/">https://www.gnu.org/copyleft/</a>.
  </p>
  <p>Each version of the License is given a distinguishing version number.
  If the Document specifies that a particular numbered version of this
*************** provided the MMC is eligible for relicen
*** 525,555 ****
  </p>
  </li></ol>
  
! <a name="ADDENDUM_003a-How-to-use-this-License-for-your-documents"></a>
! <h3 class="unnumberedsec">ADDENDUM: How to use this License for your documents</h3>
  
  <p>To use this License in a document you have written, include a copy of
  the License in the document and put the following copyright and
  license notices just after the title page:
  </p>
! <div class="smallexample">
! <pre class="smallexample">  Copyright (C)  <var>year</var>  <var>your name</var>.
    Permission is granted to copy, distribute and/or modify this document
    under the terms of the GNU Free Documentation License, Version 1.3
    or any later version published by the Free Software Foundation;
    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
    Texts.  A copy of the license is included in the section entitled ``GNU
    Free Documentation License''.
! </pre></div>
  
  <p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
  replace the &ldquo;with...Texts.&rdquo; line with this:
  </p>
! <div class="smallexample">
! <pre class="smallexample">    with the Invariant Sections being <var>list their titles</var>, with
!     the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
!     being <var>list</var>.
! </pre></div>
  
  <p>If you have Invariant Sections without Cover Texts, or some other
  combination of the three, merge those two alternatives to suit the
--- 509,539 ----
  </p>
  </li></ol>
  
! <div class="unnumberedsec-level-extent" id="ADDENDUM_003a-How-to-use-this-License-for-your-documents">
! <h3 class="unnumberedsec"><span>ADDENDUM: How to use this License for your documents<a class="copiable-link" href="#ADDENDUM_003a-How-to-use-this-License-for-your-documents"> &para;</a></span></h3>
  
  <p>To use this License in a document you have written, include a copy of
  the License in the document and put the following copyright and
  license notices just after the title page:
  </p>
! <div class="example smallexample">
! <div class="group"><pre class="example-preformatted">  Copyright (C)  <var class="var">year</var>  <var class="var">your name</var>.
    Permission is granted to copy, distribute and/or modify this document
    under the terms of the GNU Free Documentation License, Version 1.3
    or any later version published by the Free Software Foundation;
    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
    Texts.  A copy of the license is included in the section entitled ``GNU
    Free Documentation License''.
! </pre></div></div>
  
  <p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
  replace the &ldquo;with...Texts.&rdquo; line with this:
  </p>
! <div class="example smallexample">
! <div class="group"><pre class="example-preformatted">    with the Invariant Sections being <var class="var">list their titles</var>, with
!     the Front-Cover Texts being <var class="var">list</var>, and with the Back-Cover Texts
!     being <var class="var">list</var>.
! </pre></div></div>
  
  <p>If you have Invariant Sections without Cover Texts, or some other
  combination of the three, merge those two alternatives to suit the
*************** to permit their use in free software.
*** 563,572 ****
  
  <hr />
  <p>
! <p><a href="./index.html">Return to the GCC Installation page</a>
  </p>
  
! <hr>
  
  
  
--- 547,556 ----
  
  <hr />
  <p>
! <p><a class="uref" href="./index.html">Return to the GCC Installation page</a>
  </p>
  
! </div>
  
  
  
diff -Nrcpad gcc-15.2.0/INSTALL/index.html gcc-15.3.0/INSTALL/index.html
*** gcc-15.2.0/INSTALL/index.html	Fri Aug  8 06:52:56 2025
--- gcc-15.3.0/INSTALL/index.html	Fri Jun 12 06:10:24 2026
***************
*** 1,6 ****
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2025 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,9 ----
! <!DOCTYPE html>
  <html>
! <!-- Created by GNU Texinfo 7.1, https://www.gnu.org/software/texinfo/ -->
! <head>
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <!-- Copyright Â© 1988-2025 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,27 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
- <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC</title>
  
  <meta name="description" content="Installing GCC">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,67 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
! <style type="text/css">
! <!--
! a.summary-letter {text-decoration: none}
! blockquote.indentedblock {margin-right: 0em}
! blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
! blockquote.smallquotation {font-size: smaller}
! div.display {margin-left: 3.2em}
! div.example {margin-left: 3.2em}
! div.lisp {margin-left: 3.2em}
! div.smalldisplay {margin-left: 3.2em}
! div.smallexample {margin-left: 3.2em}
! div.smalllisp {margin-left: 3.2em}
! kbd {font-style: oblique}
! pre.display {font-family: inherit}
! pre.format {font-family: inherit}
! pre.menu-comment {font-family: serif}
! pre.menu-preformatted {font-family: serif}
! pre.smalldisplay {font-family: inherit; font-size: smaller}
! pre.smallexample {font-size: smaller}
! pre.smallformat {font-family: inherit; font-size: smaller}
! pre.smalllisp {font-size: smaller}
! span.nolinebreak {white-space: nowrap}
! span.roman {font-family: initial; font-weight: normal}
! span.sansserif {font-family: sans-serif; font-weight: normal}
! ul.no-bullet {list-style: none}
! -->
! </style>
  
  
  </head>
  
  <body lang="en">
- <h1 class="settitle" align="center">Installing GCC</h1>
  
  
  
--- 29,41 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
! <meta name="viewport" content="width=device-width,initial-scale=1">
! 
  
  
  </head>
  
  <body lang="en">
  
  
  
*************** ul.no-bullet {list-style: none}
*** 83,89 ****
  
  
  <p>The latest version of this document is always available at
! <a href="https://gcc.gnu.org/install/">https://gcc.gnu.org/install/</a>.
  It refers to the current development sources, instructions for
  specific released versions are included with the sources.
  </p>
--- 57,63 ----
  
  
  <p>The latest version of this document is always available at
! <a class="uref" href="https://gcc.gnu.org/install/">https://gcc.gnu.org/install/</a>.
  It refers to the current development sources, instructions for
  specific released versions are included with the sources.
  </p>
*************** as detailing some target specific instal
*** 94,116 ****
  with their own installation instructions.  This document supersedes all
  package-specific installation instructions.
  </p>
! <p><em>Before</em> starting the build/install procedure please check the
! <a href="specific.html">host/target specific installation notes</a>.
  We recommend you browse the entire generic installation instructions before
  you proceed.
  </p>
  <p>The installation procedure itself is broken into five steps.
  </p>
! <ol>
! <li> <a href="prerequisites.html">Prerequisites</a>
! </li><li> <a href="download.html">Downloading the source</a>
! </li><li> <a href="configure.html">Configuration</a>
! </li><li> <a href="build.html">Building</a>
! </li><li> <a href="test.html">Testing</a> (optional)
! </li><li> <a href="finalinstall.html">Final install</a>
  </li></ol>
  
! <p>Please note that GCC does not support &lsquo;<samp>make uninstall</samp>&rsquo; and probably
  won&rsquo;t do so in the near future as this would open a can of worms.  Instead,
  we suggest that you install GCC into a directory of its own and simply
  remove that directory when you do not need that specific version of GCC
--- 68,90 ----
  with their own installation instructions.  This document supersedes all
  package-specific installation instructions.
  </p>
! <p><em class="emph">Before</em> starting the build/install procedure please check the
! <a class="uref" href="specific.html">host/target specific installation notes</a>.
  We recommend you browse the entire generic installation instructions before
  you proceed.
  </p>
  <p>The installation procedure itself is broken into five steps.
  </p>
! <ol class="enumerate">
! <li> <a class="uref" href="prerequisites.html">Prerequisites</a>
! </li><li> <a class="uref" href="download.html">Downloading the source</a>
! </li><li> <a class="uref" href="configure.html">Configuration</a>
! </li><li> <a class="uref" href="build.html">Building</a>
! </li><li> <a class="uref" href="test.html">Testing</a> (optional)
! </li><li> <a class="uref" href="finalinstall.html">Final install</a>
  </li></ol>
  
! <p>Please note that GCC does not support &lsquo;<samp class="samp">make uninstall</samp>&rsquo; and probably
  won&rsquo;t do so in the near future as this would open a can of worms.  Instead,
  we suggest that you install GCC into a directory of its own and simply
  remove that directory when you do not need that specific version of GCC
*************** more binaries exist that use them.
*** 119,125 ****
  </p>
  <hr />
  <p>
! <p><a href="./index.html">Return to the GCC Installation page</a>
  </p>
  <p>Copyright &copy; 1988-2025 Free Software Foundation, Inc.
  </p><br>
--- 93,99 ----
  </p>
  <hr />
  <p>
! <p><a class="uref" href="./index.html">Return to the GCC Installation page</a>
  </p>
  <p>Copyright &copy; 1988-2025 Free Software Foundation, Inc.
  </p><br>
*************** under the terms of the GNU Free Document
*** 128,134 ****
  any later version published by the Free Software Foundation; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled &ldquo;<a href="./gfdl.html">GNU
  Free Documentation License</a>&rdquo;.
  </p>
  <p>(a) The FSF&rsquo;s Front-Cover Text is:
--- 102,108 ----
  any later version published by the Free Software Foundation; with no
  Invariant Sections, the Front-Cover texts being (a) (see below), and
  with the Back-Cover Texts being (b) (see below).  A copy of the
! license is included in the section entitled &ldquo;<a class="uref" href="./gfdl.html">GNU
  Free Documentation License</a>&rdquo;.
  </p>
  <p>(a) The FSF&rsquo;s Front-Cover Text is:
*************** Free Documentation License</a>&rdquo;.
*** 144,150 ****
  
  
  
- 
  
  
  
--- 118,123 ----
diff -Nrcpad gcc-15.2.0/INSTALL/prerequisites.html gcc-15.3.0/INSTALL/prerequisites.html
*** gcc-15.2.0/INSTALL/prerequisites.html	Fri Aug  8 06:52:56 2025
--- gcc-15.3.0/INSTALL/prerequisites.html	Fri Jun 12 06:10:25 2026
***************
*** 1,6 ****
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2025 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,9 ----
! <!DOCTYPE html>
  <html>
! <!-- Created by GNU Texinfo 7.1, https://www.gnu.org/software/texinfo/ -->
! <head>
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <!-- Copyright Â© 1988-2025 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,27 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
- <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Prerequisites for GCC</title>
  
  <meta name="description" content="Prerequisites for GCC">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,59 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
! a.summary-letter {text-decoration: none}
! blockquote.indentedblock {margin-right: 0em}
! blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
! blockquote.smallquotation {font-size: smaller}
! div.display {margin-left: 3.2em}
! div.example {margin-left: 3.2em}
! div.lisp {margin-left: 3.2em}
! div.smalldisplay {margin-left: 3.2em}
! div.smallexample {margin-left: 3.2em}
! div.smalllisp {margin-left: 3.2em}
! kbd {font-style: oblique}
! pre.display {font-family: inherit}
! pre.format {font-family: inherit}
! pre.menu-comment {font-family: serif}
! pre.menu-preformatted {font-family: serif}
! pre.smalldisplay {font-family: inherit; font-size: smaller}
! pre.smallexample {font-size: smaller}
! pre.smallformat {font-family: inherit; font-size: smaller}
! pre.smalllisp {font-size: smaller}
! span.nolinebreak {white-space: nowrap}
! span.roman {font-family: initial; font-weight: normal}
! span.sansserif {font-family: sans-serif; font-weight: normal}
! ul.no-bullet {list-style: none}
  -->
  </style>
  
--- 29,41 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
! a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
! span:hover a.copiable-link {visibility: visible}
! strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
  -->
  </style>
  
*************** ul.no-bullet {list-style: none}
*** 61,67 ****
  </head>
  
  <body lang="en">
- <h1 class="settitle" align="center">Prerequisites for GCC</h1>
  
  
  
--- 43,48 ----
*************** ul.no-bullet {list-style: none}
*** 82,96 ****
  
  
  
! <a name="index-Prerequisites"></a>
  
  <p>GCC requires that various tools and packages be available for use in the
  build procedure.  Modifying GCC sources requires additional tools
  described below.
  </p>
! <a name="Tools_002fpackages-necessary-for-building-GCC"></a>
! <h3 class="heading">Tools/packages necessary for building GCC</h3>
! <dl compact="compact">
  <dt>ISO C++14 compiler</dt>
  <dd><p>Necessary to bootstrap GCC.  GCC 5.4 or newer has sufficient support
  for used C++14 features.
--- 63,76 ----
  
  
  
! <a class="index-entry-id" id="index-Prerequisites"></a>
  
  <p>GCC requires that various tools and packages be available for use in the
  build procedure.  Modifying GCC sources requires additional tools
  described below.
  </p>
! <h3 class="heading" id="Tools_002fpackages-necessary-for-building-GCC"><span>Tools/packages necessary for building GCC<a class="copiable-link" href="#Tools_002fpackages-necessary-for-building-GCC"> &para;</a></span></h3>
! <dl class="table">
  <dt>ISO C++14 compiler</dt>
  <dd><p>Necessary to bootstrap GCC.  GCC 5.4 or newer has sufficient support
  for used C++14 features.
*************** frontends other than C might use GCC ext
*** 117,146 ****
  for all target variants for which target libraries will be built (and not
  only the variant of the host C++ compiler).
  </p>
! <p>This affects the popular &lsquo;<samp>x86_64-pc-linux-gnu</samp>&rsquo; platform (among
! other multilib targets), for which 64-bit (&lsquo;<samp>x86_64</samp>&rsquo;) and 32-bit
! (&lsquo;<samp>i386</samp>&rsquo;) libc headers are usually packaged separately. If you do a
! build of a native compiler on &lsquo;<samp>x86_64-pc-linux-gnu</samp>&rsquo;, make sure you
  either have the 32-bit libc developer package properly installed (the exact
  name of the package depends on your distro) or you must build GCC as a
  64-bit only compiler by configuring with the option
! <samp>--disable-multilib</samp>.  Otherwise, you may encounter an error such as
! &lsquo;<samp>fatal error: gnu/stubs-32.h: No such file</samp>&rsquo;
  </p>
  </dd>
  <dt>Python</dt>
! <dd><p>If you configure a RISC-V compiler with the option <samp>--with-arch</samp> and
  the specified architecture string is non-canonical, then you will need
! <code>python</code> installed on the build system.
  </p>
  </dd>
! <dt><a name="GNAT-prerequisite"></a>GNAT</dt>
  <dd>
  <p>In order to build GNAT, the Ada compiler, you need a working GNAT
  compiler (GCC version 5.1 or later).
  </p>
! <p>This includes GNAT tools such as <code>gnatmake</code> and
! <code>gnatlink</code>, since the Ada front end is written in Ada and
  uses some GNAT-specific extensions.
  </p>
  <p>In order to build a cross compiler, it is strongly recommended to install
--- 97,126 ----
  for all target variants for which target libraries will be built (and not
  only the variant of the host C++ compiler).
  </p>
! <p>This affects the popular &lsquo;<samp class="samp">x86_64-pc-linux-gnu</samp>&rsquo; platform (among
! other multilib targets), for which 64-bit (&lsquo;<samp class="samp">x86_64</samp>&rsquo;) and 32-bit
! (&lsquo;<samp class="samp">i386</samp>&rsquo;) libc headers are usually packaged separately. If you do a
! build of a native compiler on &lsquo;<samp class="samp">x86_64-pc-linux-gnu</samp>&rsquo;, make sure you
  either have the 32-bit libc developer package properly installed (the exact
  name of the package depends on your distro) or you must build GCC as a
  64-bit only compiler by configuring with the option
! <samp class="option">--disable-multilib</samp>.  Otherwise, you may encounter an error such as
! &lsquo;<samp class="samp">fatal error: gnu/stubs-32.h: No such file</samp>&rsquo;
  </p>
  </dd>
  <dt>Python</dt>
! <dd><p>If you configure a RISC-V compiler with the option <samp class="option">--with-arch</samp> and
  the specified architecture string is non-canonical, then you will need
! <code class="command">python</code> installed on the build system.
  </p>
  </dd>
! <dt><a class="anchor" id="GNAT-prerequisite"></a>GNAT</dt>
  <dd>
  <p>In order to build GNAT, the Ada compiler, you need a working GNAT
  compiler (GCC version 5.1 or later).
  </p>
! <p>This includes GNAT tools such as <code class="command">gnatmake</code> and
! <code class="command">gnatlink</code>, since the Ada front end is written in Ada and
  uses some GNAT-specific extensions.
  </p>
  <p>In order to build a cross compiler, it is strongly recommended to install
*************** build.
*** 153,171 ****
  GNAT. More recent versions of GNAT than the version built are not guaranteed
  to work and will often fail during the build with compilation errors.
  </p>
! <p>Note that <code>configure</code> does not test whether the GNAT installation works
  and has a sufficiently recent version; if too old a GNAT version is
! installed and <samp>--enable-languages=ada</samp> is used, the build will fail.
  </p>
! <p><code>ADA_INCLUDE_PATH</code> and <code>ADA_OBJECT_PATH</code> environment variables
  must not be set when building the Ada compiler, the Ada tools, or the
  Ada runtime libraries. You can check that your build environment is clean
! by verifying that &lsquo;<samp>gnatls -v</samp>&rsquo; lists only one explicit path in each
  section.
  </p>
- <a name="index-cobol"></a>
  </dd>
! <dt><a name="GCOBOL-prerequisite"></a>GCOBOL</dt>
  <dd>
  <p>The COBOL compiler, gcobol, first appeared in GCC 15.  To build the
  COBOL parser, you need GNU Bison 3.5.1 or later (but not 3.8.0). To build
--- 133,150 ----
  GNAT. More recent versions of GNAT than the version built are not guaranteed
  to work and will often fail during the build with compilation errors.
  </p>
! <p>Note that <code class="command">configure</code> does not test whether the GNAT installation works
  and has a sufficiently recent version; if too old a GNAT version is
! installed and <samp class="option">--enable-languages=ada</samp> is used, the build will fail.
  </p>
! <p><code class="env">ADA_INCLUDE_PATH</code> and <code class="env">ADA_OBJECT_PATH</code> environment variables
  must not be set when building the Ada compiler, the Ada tools, or the
  Ada runtime libraries. You can check that your build environment is clean
! by verifying that &lsquo;<samp class="samp">gnatls -v</samp>&rsquo; lists only one explicit path in each
  section.
  </p>
  </dd>
! <dt><a id="index-cobol"></a><span><a class="anchor" id="GCOBOL-prerequisite"></a>GCOBOL<a class="copiable-link" href="#index-cobol"> &para;</a></span></dt>
  <dd>
  <p>The COBOL compiler, gcobol, first appeared in GCC 15.  To build the
  COBOL parser, you need GNU Bison 3.5.1 or later (but not 3.8.0). To build
*************** released on 2017-05-06.
*** 175,193 ****
  <p>The gcobol documentation is maintained as manpages using troff
  mdoc. GNU groff is required to convert them to PDF format.  Conversion
  to HTML is done with mandoc, available at
! <a href="http://mdocml.bsd.lv/">http://mdocml.bsd.lv/</a>.
  </p>
  <p>Because ISO COBOL defines strict requirements for numerical precision,
  gcobol requires hardware with 128-bit computation instructions.  This
  requirement applies to both host and target. For integer and
  fixed-point computation, gcobol uses
! </p><dl>
! <dt><a name="index-_005f_005fint128"></a>Data type: <strong>__int128</strong></dt>
  </dl>
! <p>meaning <code>16 == sizeof(long long int)</code>.
  For floating point, gcobol uses
! </p><dl>
! <dt><a name="index-_005fFloat128"></a>Data type: <strong>_Float128</strong></dt>
  </dl>
  <p>(On some architectures, GCC supports 128-bit floating point in software.)
  </p>
--- 154,172 ----
  <p>The gcobol documentation is maintained as manpages using troff
  mdoc. GNU groff is required to convert them to PDF format.  Conversion
  to HTML is done with mandoc, available at
! <a class="uref" href="http://mdocml.bsd.lv/">http://mdocml.bsd.lv/</a>.
  </p>
  <p>Because ISO COBOL defines strict requirements for numerical precision,
  gcobol requires hardware with 128-bit computation instructions.  This
  requirement applies to both host and target. For integer and
  fixed-point computation, gcobol uses
! </p><dl class="first-deftp">
! <dt class="deftp" id="index-_005f_005fint128"><span class="category-def">Data type: </span><span><strong class="def-name">__int128</strong><a class="copiable-link" href="#index-_005f_005fint128"> &para;</a></span></dt>
  </dl>
! <p>meaning <code class="code">16 == sizeof(long long int)</code>.
  For floating point, gcobol uses
! </p><dl class="first-deftp">
! <dt class="deftp" id="index-_005fFloat128"><span class="category-def">Data type: </span><span><strong class="def-name">_Float128</strong><a class="copiable-link" href="#index-_005fFloat128"> &para;</a></span></dt>
  </dl>
  <p>(On some architectures, GCC supports 128-bit floating point in software.)
  </p>
*************** For floating point, gcobol uses
*** 195,204 ****
  aarch64 with little-endian encoding.
  </p>
  </dd>
! <dt><a name="GDC-prerequisite"></a>GDC</dt>
  <dd>
  <p>In order to build GDC, the D compiler, you need a working GDC compiler
! (GCC version 9.4 or later) and D runtime library, &lsquo;<samp>libphobos</samp>&rsquo;, as
  the D front end is written in D.
  </p>
  <p>Versions of GDC prior to 12 can be built with an ISO C++11 compiler, which can
--- 174,183 ----
  aarch64 with little-endian encoding.
  </p>
  </dd>
! <dt><a class="anchor" id="GDC-prerequisite"></a>GDC</dt>
  <dd>
  <p>In order to build GDC, the D compiler, you need a working GDC compiler
! (GCC version 9.4 or later) and D runtime library, &lsquo;<samp class="samp">libphobos</samp>&rsquo;, as
  the D front end is written in D.
  </p>
  <p>Versions of GDC prior to 12 can be built with an ISO C++11 compiler, which can
*************** recent versions of GDC than the version
*** 209,234 ****
  will often fail during the build with compilation errors relating to
  deprecations or removed features.
  </p>
! <p>Note that <code>configure</code> does not test whether the GDC installation works
  and has a sufficiently recent version.  Though the implementation of the D
  front end does not make use of any GDC-specific extensions, or novel features
  of the D language, if too old a GDC version is installed and
! <samp>--enable-languages=d</samp> is used, the build will fail.
  </p>
! <p>On some targets, &lsquo;<samp>libphobos</samp>&rsquo; isn&rsquo;t enabled by default, but compiles
! and works if <samp>--enable-libphobos</samp> is used.  Specifics are
  documented for affected targets.
  </p>
  </dd>
! <dt><a name="GM2-prerequisite"></a>GM2</dt>
  <dd>
  <p>Python3 is required if you want to build the complete Modula-2
! documentation including the target <code>SYSTEM</code> definition module.
  If Python3 is unavailable Modula-2 documentation will include a target
  independent version of the SYSTEM modules.
  </p>
  </dd>
! <dt><a name="gccrs-prerequisite"></a>gccrs</dt>
  <dd>
  <p>The official Rust compiler and Rust build system (cargo) are required for
  building various parts of the gccrs frontend, until gccrs can compile them
--- 188,213 ----
  will often fail during the build with compilation errors relating to
  deprecations or removed features.
  </p>
! <p>Note that <code class="command">configure</code> does not test whether the GDC installation works
  and has a sufficiently recent version.  Though the implementation of the D
  front end does not make use of any GDC-specific extensions, or novel features
  of the D language, if too old a GDC version is installed and
! <samp class="option">--enable-languages=d</samp> is used, the build will fail.
  </p>
! <p>On some targets, &lsquo;<samp class="samp">libphobos</samp>&rsquo; isn&rsquo;t enabled by default, but compiles
! and works if <samp class="option">--enable-libphobos</samp> is used.  Specifics are
  documented for affected targets.
  </p>
  </dd>
! <dt><a class="anchor" id="GM2-prerequisite"></a>GM2</dt>
  <dd>
  <p>Python3 is required if you want to build the complete Modula-2
! documentation including the target <code class="code">SYSTEM</code> definition module.
  If Python3 is unavailable Modula-2 documentation will include a target
  independent version of the SYSTEM modules.
  </p>
  </dd>
! <dt><a class="anchor" id="gccrs-prerequisite"></a>gccrs</dt>
  <dd>
  <p>The official Rust compiler and Rust build system (cargo) are required for
  building various parts of the gccrs frontend, until gccrs can compile them
*************** by itself. The minimum supported Rust ve
*** 237,256 ****
  </dd>
  <dt>A &ldquo;working&rdquo; POSIX compatible shell, or GNU bash</dt>
  <dd>
! <p>Necessary when running <code>configure</code> because some
! <code>/bin/sh</code> shells have bugs and may crash when configuring the
! target libraries.  In other cases, <code>/bin/sh</code> or <code>ksh</code>
  have disastrous corner-case performance problems.  This
! can cause target <code>configure</code> runs to literally take days to
  complete in some cases.
  </p>
! <p>So on some platforms <code>/bin/ksh</code> is sufficient, on others it
  isn&rsquo;t.  See the host/target specific instructions for your platform, or
! use <code>bash</code> to be sure.  Then set <code>CONFIG_SHELL</code> in your
  environment to your &ldquo;good&rdquo; shell prior to running
! <code>configure</code>/<code>make</code>.
  </p>
! <p><code>zsh</code> is not a fully compliant POSIX shell and will not
  work when configuring GCC.
  </p>
  </dd>
--- 216,235 ----
  </dd>
  <dt>A &ldquo;working&rdquo; POSIX compatible shell, or GNU bash</dt>
  <dd>
! <p>Necessary when running <code class="command">configure</code> because some
! <code class="command">/bin/sh</code> shells have bugs and may crash when configuring the
! target libraries.  In other cases, <code class="command">/bin/sh</code> or <code class="command">ksh</code>
  have disastrous corner-case performance problems.  This
! can cause target <code class="command">configure</code> runs to literally take days to
  complete in some cases.
  </p>
! <p>So on some platforms <code class="command">/bin/ksh</code> is sufficient, on others it
  isn&rsquo;t.  See the host/target specific instructions for your platform, or
! use <code class="command">bash</code> to be sure.  Then set <code class="env">CONFIG_SHELL</code> in your
  environment to your &ldquo;good&rdquo; shell prior to running
! <code class="command">configure</code>/<code class="command">make</code>.
  </p>
! <p><code class="command">zsh</code> is not a fully compliant POSIX shell and will not
  work when configuring GCC.
  </p>
  </dd>
*************** with GNU libtool that includes doing a b
*** 278,284 ****
  <dt>gzip version 1.2.4 (or later) or</dt>
  <dt>bzip2 version 1.0.2 (or later)</dt>
  <dd>
! <p>Necessary to uncompress GCC <code>tar</code> files when source code is
  obtained via HTTPS mirror sites.
  </p>
  </dd>
--- 257,263 ----
  <dt>gzip version 1.2.4 (or later) or</dt>
  <dt>bzip2 version 1.0.2 (or later)</dt>
  <dd>
! <p>Necessary to uncompress GCC <code class="command">tar</code> files when source code is
  obtained via HTTPS mirror sites.
  </p>
  </dd>
*************** obtained via HTTPS mirror sites.
*** 290,317 ****
  <dt>GNU tar version 1.14 (or later)</dt>
  <dd>
  <p>Necessary (only on some platforms) to untar the source code.  Many
! systems&rsquo; <code>tar</code> programs will also work, only try GNU
! <code>tar</code> if you have problems.
  </p>
  </dd>
  <dt>Perl version 5.6.1 (or later)</dt>
  <dd>
! <p>Necessary when targeting Darwin, building &lsquo;<samp>libstdc++</samp>&rsquo;,
! and not using <samp>--disable-symvers</samp>.
! Necessary when targeting Solaris with Solaris <code>ld</code> and not using
! <samp>--disable-symvers</samp>.
  </p>
! <p>Necessary when regenerating <samp>Makefile</samp> dependencies in libiberty.
! Necessary when regenerating <samp>libiberty/functions.texi</samp>.
  Necessary when generating manpages from Texinfo manuals.
  Used by various scripts to generate some files included in the source
  repository (mainly Unicode-related and rarely changing) from source
  tables.
  </p>
! <p>Used by <code>automake</code>.
  </p>
! <p>If available, enables parallel testing of &lsquo;<samp>libgomp</samp>&rsquo; in case that
! <code>flock</code> is not available.
  </p>
  </dd>
  </dl>
--- 269,296 ----
  <dt>GNU tar version 1.14 (or later)</dt>
  <dd>
  <p>Necessary (only on some platforms) to untar the source code.  Many
! systems&rsquo; <code class="command">tar</code> programs will also work, only try GNU
! <code class="command">tar</code> if you have problems.
  </p>
  </dd>
  <dt>Perl version 5.6.1 (or later)</dt>
  <dd>
! <p>Necessary when targeting Darwin, building &lsquo;<samp class="samp">libstdc++</samp>&rsquo;,
! and not using <samp class="option">--disable-symvers</samp>.
! Necessary when targeting Solaris with Solaris <code class="command">ld</code> and not using
! <samp class="option">--disable-symvers</samp>.
  </p>
! <p>Necessary when regenerating <samp class="file">Makefile</samp> dependencies in libiberty.
! Necessary when regenerating <samp class="file">libiberty/functions.texi</samp>.
  Necessary when generating manpages from Texinfo manuals.
  Used by various scripts to generate some files included in the source
  repository (mainly Unicode-related and rarely changing) from source
  tables.
  </p>
! <p>Used by <code class="command">automake</code>.
  </p>
! <p>If available, enables parallel testing of &lsquo;<samp class="samp">libgomp</samp>&rsquo; in case that
! <code class="command">flock</code> is not available.
  </p>
  </dd>
  </dl>
*************** newer versions, though.  If your OS vend
*** 325,340 ****
  support libraries then using those packages may be the simplest way to
  install the libraries.
  </p>
! <dl compact="compact">
  <dt>GNU Multiple Precision Library (GMP) version 4.3.2 (or later)</dt>
  <dd>
  <p>Necessary to build GCC.  It can be downloaded from
! <a href="https://gmplib.org/">https://gmplib.org/</a>.  If a GMP source distribution is found in a
! subdirectory of your GCC sources named <samp>gmp</samp>, it will be built
  together with GCC.  Alternatively, if GMP is already installed but it
  is not in your library search path, you will have to configure with the
! <samp>--with-gmp</samp> configure option.  See also <samp>--with-gmp-lib</samp>
! and <samp>--with-gmp-include</samp>.
  The in-tree build is only supported with the GMP version that
  download_prerequisites installs.
  </p>
--- 304,319 ----
  support libraries then using those packages may be the simplest way to
  install the libraries.
  </p>
! <dl class="table">
  <dt>GNU Multiple Precision Library (GMP) version 4.3.2 (or later)</dt>
  <dd>
  <p>Necessary to build GCC.  It can be downloaded from
! <a class="uref" href="https://gmplib.org/">https://gmplib.org/</a>.  If a GMP source distribution is found in a
! subdirectory of your GCC sources named <samp class="file">gmp</samp>, it will be built
  together with GCC.  Alternatively, if GMP is already installed but it
  is not in your library search path, you will have to configure with the
! <samp class="option">--with-gmp</samp> configure option.  See also <samp class="option">--with-gmp-lib</samp>
! and <samp class="option">--with-gmp-include</samp>.
  The in-tree build is only supported with the GMP version that
  download_prerequisites installs.
  </p>
*************** download_prerequisites installs.
*** 342,353 ****
  <dt>MPFR Library version 3.1.0 (or later)</dt>
  <dd>
  <p>Necessary to build GCC.  It can be downloaded from
! <a href="https://www.mpfr.org">https://www.mpfr.org</a>.  If an MPFR source distribution is found
! in a subdirectory of your GCC sources named <samp>mpfr</samp>, it will be
  built together with GCC.  Alternatively, if MPFR is already installed
  but it is not in your default library search path, the
! <samp>--with-mpfr</samp> configure option should be used.  See also
! <samp>--with-mpfr-lib</samp> and <samp>--with-mpfr-include</samp>.
  The in-tree build is only supported with the MPFR version that
  download_prerequisites installs.
  </p>
--- 321,332 ----
  <dt>MPFR Library version 3.1.0 (or later)</dt>
  <dd>
  <p>Necessary to build GCC.  It can be downloaded from
! <a class="uref" href="https://www.mpfr.org">https://www.mpfr.org</a>.  If an MPFR source distribution is found
! in a subdirectory of your GCC sources named <samp class="file">mpfr</samp>, it will be
  built together with GCC.  Alternatively, if MPFR is already installed
  but it is not in your default library search path, the
! <samp class="option">--with-mpfr</samp> configure option should be used.  See also
! <samp class="option">--with-mpfr-lib</samp> and <samp class="option">--with-mpfr-include</samp>.
  The in-tree build is only supported with the MPFR version that
  download_prerequisites installs.
  </p>
*************** download_prerequisites installs.
*** 355,366 ****
  <dt>MPC Library version 1.0.1 (or later)</dt>
  <dd>
  <p>Necessary to build GCC.  It can be downloaded from
! <a href="https://www.multiprecision.org/mpc/">https://www.multiprecision.org/mpc/</a>.  If an MPC source distribution
! is found in a subdirectory of your GCC sources named <samp>mpc</samp>, it
  will be built together with GCC.  Alternatively, if MPC is already
  installed but it is not in your default library search path, the
! <samp>--with-mpc</samp> configure option should be used.  See also
! <samp>--with-mpc-lib</samp> and <samp>--with-mpc-include</samp>.
  The in-tree build is only supported with the MPC version that
  download_prerequisites installs.
  </p>
--- 334,345 ----
  <dt>MPC Library version 1.0.1 (or later)</dt>
  <dd>
  <p>Necessary to build GCC.  It can be downloaded from
! <a class="uref" href="https://www.multiprecision.org/mpc/">https://www.multiprecision.org/mpc/</a>.  If an MPC source distribution
! is found in a subdirectory of your GCC sources named <samp class="file">mpc</samp>, it
  will be built together with GCC.  Alternatively, if MPC is already
  installed but it is not in your default library search path, the
! <samp class="option">--with-mpc</samp> configure option should be used.  See also
! <samp class="option">--with-mpc-lib</samp> and <samp class="option">--with-mpc-include</samp>.
  The in-tree build is only supported with the MPC version that
  download_prerequisites installs.
  </p>
*************** download_prerequisites installs.
*** 368,377 ****
  <dt>isl Library version 0.15 or later.</dt>
  <dd>
  <p>Necessary to build GCC with the Graphite loop optimizations.
! It can be downloaded from <a href="https://gcc.gnu.org/pub/gcc/infrastructure/">https://gcc.gnu.org/pub/gcc/infrastructure/</a>.
  If an isl source distribution is found
! in a subdirectory of your GCC sources named <samp>isl</samp>, it will be
! built together with GCC.  Alternatively, the <samp>--with-isl</samp> configure
  option should be used if isl is not installed in your default library
  search path.
  </p>
--- 347,356 ----
  <dt>isl Library version 0.15 or later.</dt>
  <dd>
  <p>Necessary to build GCC with the Graphite loop optimizations.
! It can be downloaded from <a class="uref" href="https://gcc.gnu.org/pub/gcc/infrastructure/">https://gcc.gnu.org/pub/gcc/infrastructure/</a>.
  If an isl source distribution is found
! in a subdirectory of your GCC sources named <samp class="file">isl</samp>, it will be
! built together with GCC.  Alternatively, the <samp class="option">--with-isl</samp> configure
  option should be used if isl is not installed in your default library
  search path.
  </p>
*************** search path.
*** 380,386 ****
  <dd>
  <p>Necessary to build GCC with zstd compression used for LTO bytecode.
  The library is searched in your default library patch search.
! Alternatively, the <samp>--with-zstd</samp> configure option should be used.
  </p>
  </dd>
  <dt>Python3 modules</dt>
--- 359,365 ----
  <dd>
  <p>Necessary to build GCC with zstd compression used for LTO bytecode.
  The library is searched in your default library patch search.
! Alternatively, the <samp class="option">--with-zstd</samp> configure option should be used.
  </p>
  </dd>
  <dt>Python3 modules</dt>
*************** Alternatively, the <samp>--with-zstd</sa
*** 388,426 ****
  <p>The complete list of Python3 modules broken down by GCC subcomponent
  is shown below:
  </p>
! <dl compact="compact">
  <dt>internal debugging in gdbhooks</dt>
! <dd><p><code>gdb</code>, <code>gdb.printing</code>, <code>gdb.types</code>,
! <code>os.path</code>, <code>re</code>, <code>sys</code> and <code>tempfile</code>,
  </p>
  </dd>
  <dt>g++ testsuite</dt>
! <dd><p><code>gcov</code>, <code>gzip</code>, <code>json</code>, <code>os</code> and <code>pytest</code>.
  </p>
  </dd>
  <dt>SARIF testsuite</dt>
! <dd><p>Tests of SARIF output will use the <code>check-jsonschema</code> program from
! the <code>check-jsonschema</code> module (if available) to validate generated
  .sarif files.  If this tool is not found, the validation parts of those
  tests are skipped.
  </p>
  </dd>
  <dt>c++ cxx api generation</dt>
! <dd><p><code>csv</code>, <code>os</code>, <code>sys</code> and <code>time</code>.
  </p>
  </dd>
  <dt>modula-2 documentation</dt>
! <dd><p><code>argparse</code>, <code>os</code>, <code>pathlib</code>, <code>shutil</code> and
! <code>sys</code>.
  </p>
  </dd>
  <dt>git developer tools</dt>
! <dd><p><code>os</code> and <code>sys</code>.
  </p>
  </dd>
  <dt>ada documentation</dt>
! <dd><p><code>latex_elements</code>, <code>os</code>, <code>pygments</code>, <code>re</code>,
! <code>sys</code> and <code>time</code>.
  </p></dd>
  </dl>
  
--- 367,405 ----
  <p>The complete list of Python3 modules broken down by GCC subcomponent
  is shown below:
  </p>
! <dl class="table">
  <dt>internal debugging in gdbhooks</dt>
! <dd><p><code class="code">gdb</code>, <code class="code">gdb.printing</code>, <code class="code">gdb.types</code>,
! <code class="code">os.path</code>, <code class="code">re</code>, <code class="code">sys</code> and <code class="code">tempfile</code>,
  </p>
  </dd>
  <dt>g++ testsuite</dt>
! <dd><p><code class="code">gcov</code>, <code class="code">gzip</code>, <code class="code">json</code>, <code class="code">os</code> and <code class="code">pytest</code>.
  </p>
  </dd>
  <dt>SARIF testsuite</dt>
! <dd><p>Tests of SARIF output will use the <code class="code">check-jsonschema</code> program from
! the <code class="code">check-jsonschema</code> module (if available) to validate generated
  .sarif files.  If this tool is not found, the validation parts of those
  tests are skipped.
  </p>
  </dd>
  <dt>c++ cxx api generation</dt>
! <dd><p><code class="code">csv</code>, <code class="code">os</code>, <code class="code">sys</code> and <code class="code">time</code>.
  </p>
  </dd>
  <dt>modula-2 documentation</dt>
! <dd><p><code class="code">argparse</code>, <code class="code">os</code>, <code class="code">pathlib</code>, <code class="code">shutil</code> and
! <code class="code">sys</code>.
  </p>
  </dd>
  <dt>git developer tools</dt>
! <dd><p><code class="code">os</code> and <code class="code">sys</code>.
  </p>
  </dd>
  <dt>ada documentation</dt>
! <dd><p><code class="code">latex_elements</code>, <code class="code">os</code>, <code class="code">pygments</code>, <code class="code">re</code>,
! <code class="code">sys</code> and <code class="code">time</code>.
  </p></dd>
  </dl>
  
*************** tests are skipped.
*** 428,436 ****
  <dt>GNU gettext</dt>
  <dd>
  <p>Necessary to build GCC with internationalization support via
! <samp>--enable-nls</samp>.  It can be downloaded from
! <a href="https://www.gnu.org/software/gettext/">https://www.gnu.org/software/gettext/</a>. If a GNU gettext distribution
! is found in a subdirectory of your GCC sources named <samp>gettext</samp>, it
  will be built together with GCC, unless present in the system (either in
  libc or as a stand-alone library).
  </p>
--- 407,415 ----
  <dt>GNU gettext</dt>
  <dd>
  <p>Necessary to build GCC with internationalization support via
! <samp class="option">--enable-nls</samp>.  It can be downloaded from
! <a class="uref" href="https://www.gnu.org/software/gettext/">https://www.gnu.org/software/gettext/</a>. If a GNU gettext distribution
! is found in a subdirectory of your GCC sources named <samp class="file">gettext</samp>, it
  will be built together with GCC, unless present in the system (either in
  libc or as a stand-alone library).
  </p>
*************** libc or as a stand-alone library).
*** 439,462 ****
  </dd>
  </dl>
  
! <a name="Tools_002fpackages-necessary-for-modifying-GCC"></a>
! <h3 class="heading">Tools/packages necessary for modifying GCC</h3>
! <dl compact="compact">
  <dt>autoconf version 2.69</dt>
  <dt>GNU m4 version 1.4.6 (or later)</dt>
  <dd>
! <p>Necessary when modifying <samp>configure.ac</samp>, <samp>aclocal.m4</samp>, etc.
! to regenerate <samp>configure</samp> and <samp>config.in</samp> files.
  </p>
  </dd>
  <dt>automake version 1.15.1</dt>
  <dd>
! <p>Necessary when modifying a <samp>Makefile.am</samp> file to regenerate its
! associated <samp>Makefile.in</samp>.
  </p>
! <p>Much of GCC does not use automake, so directly edit the <samp>Makefile.in</samp>
! file.  Specifically this applies to the <samp>gcc</samp>, <samp>intl</samp>,
! <samp>libcpp</samp>, <samp>libiberty</samp>, <samp>libobjc</samp> directories as well
  as any of their subdirectories.
  </p>
  <p>For directories that use automake, GCC requires the latest release in
--- 418,440 ----
  </dd>
  </dl>
  
! <h3 class="heading" id="Tools_002fpackages-necessary-for-modifying-GCC"><span>Tools/packages necessary for modifying GCC<a class="copiable-link" href="#Tools_002fpackages-necessary-for-modifying-GCC"> &para;</a></span></h3>
! <dl class="table">
  <dt>autoconf version 2.69</dt>
  <dt>GNU m4 version 1.4.6 (or later)</dt>
  <dd>
! <p>Necessary when modifying <samp class="file">configure.ac</samp>, <samp class="file">aclocal.m4</samp>, etc.
! to regenerate <samp class="file">configure</samp> and <samp class="file">config.in</samp> files.
  </p>
  </dd>
  <dt>automake version 1.15.1</dt>
  <dd>
! <p>Necessary when modifying a <samp class="file">Makefile.am</samp> file to regenerate its
! associated <samp class="file">Makefile.in</samp>.
  </p>
! <p>Much of GCC does not use automake, so directly edit the <samp class="file">Makefile.in</samp>
! file.  Specifically this applies to the <samp class="file">gcc</samp>, <samp class="file">intl</samp>,
! <samp class="file">libcpp</samp>, <samp class="file">libiberty</samp>, <samp class="file">libobjc</samp> directories as well
  as any of their subdirectories.
  </p>
  <p>For directories that use automake, GCC requires the latest release in
*************** to the latest released version.
*** 467,480 ****
  </dd>
  <dt>gettext version 0.14.5 (or later)</dt>
  <dd>
! <p>Needed to regenerate <samp>gcc.pot</samp>.
  </p>
  </dd>
  <dt>gperf version 2.7.2 (or later)</dt>
  <dd>
! <p>Necessary when modifying <code>gperf</code> input files, e.g.
! <samp>gcc/cp/cfns.gperf</samp> to regenerate its associated header file, e.g.
! <samp>gcc/cp/cfns.h</samp>.
  </p>
  </dd>
  <dt>DejaGnu version 1.5.3 (or later)</dt>
--- 445,458 ----
  </dd>
  <dt>gettext version 0.14.5 (or later)</dt>
  <dd>
! <p>Needed to regenerate <samp class="file">gcc.pot</samp>.
  </p>
  </dd>
  <dt>gperf version 2.7.2 (or later)</dt>
  <dd>
! <p>Necessary when modifying <code class="command">gperf</code> input files, e.g.
! <samp class="file">gcc/cp/cfns.gperf</samp> to regenerate its associated header file, e.g.
! <samp class="file">gcc/cp/cfns.h</samp>.
  </p>
  </dd>
  <dt>DejaGnu version 1.5.3 (or later)</dt>
*************** details.
*** 488,507 ****
  <dt>autogen version 5.5.4 (or later) and</dt>
  <dt>guile version 1.4.1 (or later)</dt>
  <dd>
! <p>Necessary to regenerate <samp>fixinc/fixincl.x</samp> from
! <samp>fixinc/inclhack.def</samp> and <samp>fixinc/*.tpl</samp>.
  </p>
! <p>Necessary to run &lsquo;<samp>make check</samp>&rsquo; for <samp>fixinc</samp>.
  </p>
! <p>Necessary to regenerate the top level <samp>Makefile.in</samp> file from
! <samp>Makefile.tpl</samp> and <samp>Makefile.def</samp>.
  </p>
! <p>Necessary to regenerate the <samp>bits/version.h</samp> header for libstdc++.
  </p>
  </dd>
  <dt>Flex version 2.5.4 (or later)</dt>
  <dd>
! <p>Necessary when modifying <samp>*.l</samp> files.
  </p>
  <p>Necessary to build GCC during development because the generated output
  files are not included in the version-controlled source repository.
--- 466,485 ----
  <dt>autogen version 5.5.4 (or later) and</dt>
  <dt>guile version 1.4.1 (or later)</dt>
  <dd>
! <p>Necessary to regenerate <samp class="file">fixinc/fixincl.x</samp> from
! <samp class="file">fixinc/inclhack.def</samp> and <samp class="file">fixinc/*.tpl</samp>.
  </p>
! <p>Necessary to run &lsquo;<samp class="samp">make check</samp>&rsquo; for <samp class="file">fixinc</samp>.
  </p>
! <p>Necessary to regenerate the top level <samp class="file">Makefile.in</samp> file from
! <samp class="file">Makefile.tpl</samp> and <samp class="file">Makefile.def</samp>.
  </p>
! <p>Necessary to regenerate the <samp class="file">bits/version.h</samp> header for libstdc++.
  </p>
  </dd>
  <dt>Flex version 2.5.4 (or later)</dt>
  <dd>
! <p>Necessary when modifying <samp class="file">*.l</samp> files.
  </p>
  <p>Necessary to build GCC during development because the generated output
  files are not included in the version-controlled source repository.
*************** They are included in releases.
*** 510,516 ****
  </dd>
  <dt>Bison version 3.5.1 or later (but not 3.8.0)</dt>
  <dd>
! <p>Necessary when modifying <samp>*.y</samp> files in the COBOL front end.
  </p>
  <p>Necessary to build GCC during development because the generated output
  files are not included in the version-controlled source repository.
--- 488,494 ----
  </dd>
  <dt>Bison version 3.5.1 or later (but not 3.8.0)</dt>
  <dd>
! <p>Necessary when modifying <samp class="file">*.y</samp> files in the COBOL front end.
  </p>
  <p>Necessary to build GCC during development because the generated output
  files are not included in the version-controlled source repository.
*************** They are included in releases.
*** 519,530 ****
  </dd>
  <dt>Texinfo version 4.7 (or later)</dt>
  <dd>
! <p>Necessary for running <code>makeinfo</code> when modifying <samp>*.texi</samp>
  files to test your changes.
  </p>
! <p>Necessary for running <code>make dvi</code>, <code>make pdf</code>,
! or <code>make html</code> to create formatted documentation.  Texinfo version
! 4.8 or later is required for <code>make pdf</code>.
  </p>
  <p>Necessary to build GCC documentation in info format during development
  because the generated output files are not included in the repository.
--- 497,508 ----
  </dd>
  <dt>Texinfo version 4.7 (or later)</dt>
  <dd>
! <p>Necessary for running <code class="command">makeinfo</code> when modifying <samp class="file">*.texi</samp>
  files to test your changes.
  </p>
! <p>Necessary for running <code class="command">make dvi</code>, <code class="command">make pdf</code>,
! or <code class="command">make html</code> to create formatted documentation.  Texinfo version
! 4.8 or later is required for <code class="command">make pdf</code>.
  </p>
  <p>Necessary to build GCC documentation in info format during development
  because the generated output files are not included in the repository.
*************** the generated manuals.
*** 541,555 ****
  </dd>
  <dt>TeX (any working version)</dt>
  <dd>
! <p>Necessary for running <code>texi2dvi</code> and <code>texi2pdf</code>, which
! are used when running <code>make dvi</code> or <code>make pdf</code> to create
  DVI or PDF files, respectively.
  </p>
  </dd>
  <dt>Sphinx version 1.0 (or later)</dt>
  <dd>
! <p>Necessary to regenerate <samp>jit/docs/_build/texinfo</samp> from the <samp>.rst</samp>
! files in the directories below <samp>jit/docs</samp>.
  </p>
  </dd>
  <dt>git (any version)</dt>
--- 519,533 ----
  </dd>
  <dt>TeX (any working version)</dt>
  <dd>
! <p>Necessary for running <code class="command">texi2dvi</code> and <code class="command">texi2pdf</code>, which
! are used when running <code class="command">make dvi</code> or <code class="command">make pdf</code> to create
  DVI or PDF files, respectively.
  </p>
  </dd>
  <dt>Sphinx version 1.0 (or later)</dt>
  <dd>
! <p>Necessary to regenerate <samp class="file">jit/docs/_build/texinfo</samp> from the <samp class="file">.rst</samp>
! files in the directories below <samp class="file">jit/docs</samp>.
  </p>
  </dd>
  <dt>git (any version)</dt>
*************** snapshots of the development sources are
*** 566,572 ****
  </dd>
  <dt>patch version 2.5.4 (or later)</dt>
  <dd>
! <p>Necessary when applying patches, created with <code>diff</code>, to one&rsquo;s
  own sources.
  </p>
  </dd>
--- 544,550 ----
  </dd>
  <dt>patch version 2.5.4 (or later)</dt>
  <dd>
! <p>Necessary when applying patches, created with <code class="command">diff</code>, to one&rsquo;s
  own sources.
  </p>
  </dd>
*************** own sources.
*** 574,580 ****
  
  <hr />
  <p>
! <p><a href="./index.html">Return to the GCC Installation page</a>
  </p>
  
  
--- 552,558 ----
  
  <hr />
  <p>
! <p><a class="uref" href="./index.html">Return to the GCC Installation page</a>
  </p>
  
  
diff -Nrcpad gcc-15.2.0/INSTALL/specific.html gcc-15.3.0/INSTALL/specific.html
*** gcc-15.2.0/INSTALL/specific.html	Fri Aug  8 06:52:56 2025
--- gcc-15.3.0/INSTALL/specific.html	Fri Jun 12 06:10:25 2026
***************
*** 1,6 ****
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2025 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,9 ----
! <!DOCTYPE html>
  <html>
! <!-- Created by GNU Texinfo 7.1, https://www.gnu.org/software/texinfo/ -->
! <head>
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <!-- Copyright Â© 1988-2025 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,27 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
- <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Host/Target specific installation notes for GCC</title>
  
  <meta name="description" content="Host/Target specific installation notes for GCC">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,59 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
! a.summary-letter {text-decoration: none}
! blockquote.indentedblock {margin-right: 0em}
! blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
! blockquote.smallquotation {font-size: smaller}
! div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
! div.lisp {margin-left: 3.2em}
! div.smalldisplay {margin-left: 3.2em}
! div.smallexample {margin-left: 3.2em}
! div.smalllisp {margin-left: 3.2em}
! kbd {font-style: oblique}
! pre.display {font-family: inherit}
! pre.format {font-family: inherit}
! pre.menu-comment {font-family: serif}
! pre.menu-preformatted {font-family: serif}
! pre.smalldisplay {font-family: inherit; font-size: smaller}
! pre.smallexample {font-size: smaller}
! pre.smallformat {font-family: inherit; font-size: smaller}
! pre.smalllisp {font-size: smaller}
! span.nolinebreak {white-space: nowrap}
! span.roman {font-family: initial; font-weight: normal}
! span.sansserif {font-family: sans-serif; font-weight: normal}
! ul.no-bullet {list-style: none}
  -->
  </style>
  
--- 29,42 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
! a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
  div.example {margin-left: 3.2em}
! span:hover a.copiable-link {visibility: visible}
! ul.mark-bullet {list-style-type: disc}
  -->
  </style>
  
*************** ul.no-bullet {list-style: none}
*** 61,67 ****
  </head>
  
  <body lang="en">
- <h1 class="settitle" align="center">Host/Target specific installation notes for GCC</h1>
  
  
  
--- 44,49 ----
*************** ul.no-bullet {list-style: none}
*** 89,264 ****
  
  
  
! <a name="index-Specific"></a>
! <a name="index-Specific-installation-notes"></a>
! <a name="index-Target-specific-installation"></a>
! <a name="index-Host-specific-installation"></a>
! <a name="index-Target-specific-installation-notes"></a>
  
! <p>Please read this document carefully <em>before</em> installing the
  GNU Compiler Collection on your machine.
  </p>
! <p>Note that this list of install notes is <em>not</em> a list of supported
  hosts or targets.  Not all supported hosts and targets are listed
  here, only the ones that require host-specific or target-specific
  information have to. 
  </p>
! <ul>
! <li> <a href="#aarch64-x-x">aarch64*-*-*</a>
! </li><li> <a href="#amdgcn-x-amdhsa">amdgcn-*-amdhsa</a>
! </li><li> <a href="#amd64-x-solaris2">amd64-*-solaris2*</a>
! </li><li> <a href="#arc-x-elf32">arc-*-elf32</a>
! </li><li> <a href="#arc-linux-uclibc">arc-linux-uclibc</a>
! </li><li> <a href="#arm-x-eabi">arm-*-eabi</a>
! </li><li> <a href="#avr">avr</a>
! </li><li> <a href="#bfin">Blackfin</a>
! </li><li> <a href="#cris">cris</a>
! </li><li> <a href="#dos">DOS</a>
! </li><li> <a href="#epiphany-x-elf">epiphany-*-elf</a>
! </li><li> <a href="#ft32-x-elf">ft32-*-elf</a>
! </li><li> <a href="#x-x-freebsd">*-*-freebsd*</a>
! </li><li> <a href="#h8300-hms">h8300-hms</a>
! </li><li> <a href="#hppa-x-linux">hppa-*-linux</a>
! </li><li> <a href="#hppa64-hp-hpux11">hppa64-hp-hpux11*</a>
! </li><li> <a href="#x-x-linux-gnu">*-*-linux-gnu</a>
! </li><li> <a href="#ix86-x-linux">i?86-*-linux*</a>
! </li><li> <a href="#ix86-x-solaris2">i?86-*-solaris2*</a>
! </li><li> <a href="#ia64-x-linux">ia64-*-linux</a>
! </li><li> <a href="#ia64-x-hpux">ia64-*-hpux*</a>
! </li><li> <a href="#x-ibm-aix">*-ibm-aix*</a>
! </li><li> <a href="#iq2000-x-elf">iq2000-*-elf</a>
! </li><li> <a href="#loongarch">loongarch</a>
! </li><li> <a href="#lm32-x-elf">lm32-*-elf</a>
! </li><li> <a href="#lm32-x-uclinux">lm32-*-uclinux</a>
! </li><li> <a href="#m32c-x-elf">m32c-*-elf</a>
! </li><li> <a href="#m32r-x-elf">m32r-*-elf</a>
! </li><li> <a href="#m68k-x-x">m68k-*-*</a>
! </li><li> <a href="#m68k-x-uclinux">m68k-*-uclinux</a>
! </li><li> <a href="#microblaze-x-elf">microblaze-*-elf</a>
! </li><li> <a href="#mips-x-x">mips-*-*</a>
! </li><li> <a href="#moxie-x-elf">moxie-*-elf</a>
! </li><li> <a href="#msp430-x-elf">msp430-*-elf</a>
! </li><li> <a href="#nds32le-x-elf">nds32le-*-elf</a>
! </li><li> <a href="#nds32be-x-elf">nds32be-*-elf</a>
! </li><li> <a href="#nvptx-x-none">nvptx-*-none</a>
! </li><li> <a href="#or1k-x-elf">or1k-*-elf</a>
! </li><li> <a href="#or1k-x-linux">or1k-*-linux</a>
! </li><li> <a href="#powerpc-x-x">powerpc*-*-*</a>
! </li><li> <a href="#powerpc-x-darwin">powerpc-*-darwin*</a>
! </li><li> <a href="#powerpc-x-elf">powerpc-*-elf</a>
! </li><li> <a href="#powerpc-x-linux-gnu">powerpc*-*-linux-gnu*</a>
! </li><li> <a href="#powerpc-x-netbsd">powerpc-*-netbsd*</a>
! </li><li> <a href="#powerpc-x-eabisim">powerpc-*-eabisim</a>
! </li><li> <a href="#powerpc-x-eabi">powerpc-*-eabi</a>
! </li><li> <a href="#powerpcle-x-elf">powerpcle-*-elf</a>
! </li><li> <a href="#powerpcle-x-eabisim">powerpcle-*-eabisim</a>
! </li><li> <a href="#powerpcle-x-eabi">powerpcle-*-eabi</a>
! </li><li> <a href="#riscv32-x-elf">riscv32-*-elf</a>
! </li><li> <a href="#riscv32-x-linux">riscv32-*-linux</a>
! </li><li> <a href="#riscv64-x-elf">riscv64-*-elf</a>
! </li><li> <a href="#riscv64-x-linux">riscv64-*-linux</a>
! </li><li> <a href="#rl78-x-elf">rl78-*-elf</a>
! </li><li> <a href="#rx-x-elf">rx-*-elf</a>
! </li><li> <a href="#s390-x-linux">s390-*-linux*</a>
! </li><li> <a href="#s390x-x-linux">s390x-*-linux*</a>
! </li><li> <a href="#s390x-ibm-tpf">s390x-ibm-tpf*</a>
! </li><li> <a href="#x-x-solaris2">*-*-solaris2*</a>
! </li><li> <a href="#sparc-x-x">sparc*-*-*</a>
! </li><li> <a href="#sparc-sun-solaris2">sparc-sun-solaris2*</a>
! </li><li> <a href="#sparc-x-linux">sparc-*-linux*</a>
! </li><li> <a href="#sparc64-x-solaris2">sparc64-*-solaris2*</a>
! </li><li> <a href="#sparcv9-x-solaris2">sparcv9-*-solaris2*</a>
! </li><li> <a href="#c6x-x-x">c6x-*-*</a>
! </li><li> <a href="#visium-x-elf">visium-*-elf</a>
! </li><li> <a href="#x-x-vxworks">*-*-vxworks*</a>
! </li><li> <a href="#x86-64-x-x">x86_64-*-*, amd64-*-*</a>
! </li><li> <a href="#x86-64-x-solaris2">x86_64-*-solaris2*</a>
! </li><li> <a href="#xtensa-x-elf">xtensa*-*-elf</a>
! </li><li> <a href="#xtensa-x-linux">xtensa*-*-linux*</a>
! </li><li> <a href="#windows">Microsoft Windows</a>
! </li><li> <a href="#x-x-cygwin">*-*-cygwin</a>
! </li><li> <a href="#x-x-mingw32">*-*-mingw32</a>
! </li><li> <a href="#os2">OS/2</a>
! </li><li> <a href="#older">Older systems</a>
  </li></ul>
  
! <ul>
! <li> <a href="#elf">all ELF targets</a> (SVR4, Solaris, etc.)
  </li></ul>
  
  
  <!-- -------- host/target specific issues start here ---------------- -->
  <hr />
! <a name="aarch64-x-x"></a><a name="aarch64*-*-*"></a>
! <h3 class="heading">aarch64*-*-*</h3>
  <p>To enable a workaround for the Cortex-A53 erratum number 835769 by default
  (for all CPUs regardless of -mcpu option given) at configure time use the
! <samp>--enable-fix-cortex-a53-835769</samp> option.  This will enable the fix by
  default and can be explicitly disabled during compilation by passing the
! <samp>-mno-fix-cortex-a53-835769</samp> option.  Conversely,
! <samp>--disable-fix-cortex-a53-835769</samp> will disable the workaround by
  default.  The workaround is disabled by default if neither of
! <samp>--enable-fix-cortex-a53-835769</samp> or
! <samp>--disable-fix-cortex-a53-835769</samp> is given at configure time.
  </p>
  <p>To enable a workaround for the Cortex-A53 erratum number 843419 by default
  (for all CPUs regardless of -mcpu option given) at configure time use the
! <samp>--enable-fix-cortex-a53-843419</samp> option.  This workaround is applied at
  link time.  Enabling the workaround will cause GCC to pass the relevant option
  to the linker.  It can be explicitly disabled during compilation by passing the
! <samp>-mno-fix-cortex-a53-843419</samp> option.  Conversely,
! <samp>--disable-fix-cortex-a53-843419</samp> will disable the workaround by default.
  The workaround is disabled by default if neither of
! <samp>--enable-fix-cortex-a53-843419</samp> or
! <samp>--disable-fix-cortex-a53-843419</samp> is given at configure time.
  </p>
  <p>To enable Branch Target Identification Mechanism and Return Address Signing by
! default at configure time use the <samp>--enable-standard-branch-protection</samp>
! option.  This is equivalent to having <samp>-mbranch-protection=standard</samp>
  during compilation.  This can be explicitly disabled during compilation by
! passing the <samp>-mbranch-protection=none</samp> option which turns off all
  types of branch protections.  Conversely,
! <samp>--disable-standard-branch-protection</samp> will disable both the
  protections by default.  This mechanism is turned off by default if neither
  of the options are given at configure time.
  </p>
  <hr />
! <a name="amd64-x-solaris2"></a><a name="amd64-*-solaris2*"></a>
! <h3 class="heading">amd64-*-solaris2*</h3>
! <p>This is a synonym for &lsquo;<samp>x86_64-*-solaris2*</samp>&rsquo;.
  </p>
  <hr />
! <a name="amdgcn-x-amdhsa"></a><a name="amdgcn-*-amdhsa"></a>
! <h3 class="heading">amdgcn-*-amdhsa</h3>
  <p>AMD GCN GPU target.
  </p>
  <p>Instead of GNU Binutils, you need to install LLVM and copy
! <samp>bin/llvm-mc</samp> to <samp>amdgcn-amdhsa/bin/as</samp>,
! <samp>bin/lld</samp> to <samp>amdgcn-amdhsa/bin/ld</samp>,
! <samp>bin/llvm-nm</samp> to <samp>amdgcn-amdhsa/bin/nm</samp>, and
! <samp>bin/llvm-ar</samp> to both <samp>bin/amdgcn-amdhsa-ar</samp> and
! <samp>bin/amdgcn-amdhsa-ranlib</samp>.
  </p>
  <p>The required version of LLVM depends on the devices that you want to support.
  As the list of ISAs is long, GCC by default only builds a subset of the
! supported ISAs as multilib; use <code>--with-multilib-list=</code> to tailor the built
  multilibs.  Note that mixing ISAs in the same binary is not supported and gives
  a linker error.
  </p>
! <p>By default, multilib support is built for <code>gfx900</code>, <code>gfx906</code>,
! <code>gfx908</code>, <code>gfx90a</code>, <code>gfx90c</code>, <code>gfx1030</code>, <code>gfx1036</code>,
! <code>gfx1100</code> and <code>gfx1103</code>.  The default multilib configuration
  requires LLVM 15 or newer.  LLVM 13.0.1 or LLVM 14 can be used by specifying
! a <code>--with-multilib-list=</code> that does not list any GFX 11 device nor
! <code>gfx1036</code>.  At least LLVM 16 is required for <code>gfx1150</code> and
! <code>gfx1151</code>, LLVM 19 for the generic <code>gfx9-generic</code>,
! <code>gfx10-3-generic</code>, and <code>gfx11-generic</code> targets and for
! <code>gfx1152</code>, while LLVM 20 is required for <code>gfx1153</code>.
  </p>
  <p>The supported ISA architectures are listed in the GCC manual. The generic
! ISA targets <code>gfx9-generic</code>, <code>gfx10-3-generic</code>, and
! <code>gfx11-generic</code> reduce the number of required multilibs but note
! that <code>gfx9-generic</code> does not include <code>gfx908</code> or <code>gfx90a</code>,
  that linking specific ISA code with generic code is currently not supported,
  and that only a future ROCm release (newer than 6.3.3) will be able to execute
  generic code.
--- 71,243 ----
  
  
  
! <a class="index-entry-id" id="index-Specific"></a>
! <a class="index-entry-id" id="index-Specific-installation-notes"></a>
! <a class="index-entry-id" id="index-Target-specific-installation"></a>
! <a class="index-entry-id" id="index-Host-specific-installation"></a>
! <a class="index-entry-id" id="index-Target-specific-installation-notes"></a>
  
! <p>Please read this document carefully <em class="emph">before</em> installing the
  GNU Compiler Collection on your machine.
  </p>
! <p>Note that this list of install notes is <em class="emph">not</em> a list of supported
  hosts or targets.  Not all supported hosts and targets are listed
  here, only the ones that require host-specific or target-specific
  information have to. 
  </p>
! <ul class="itemize mark-bullet">
! <li><a class="uref" href="#aarch64-x-x">aarch64*-*-*</a>
! </li><li><a class="uref" href="#amdgcn-x-amdhsa">amdgcn-*-amdhsa</a>
! </li><li><a class="uref" href="#amd64-x-solaris2">amd64-*-solaris2*</a>
! </li><li><a class="uref" href="#arc-x-elf32">arc-*-elf32</a>
! </li><li><a class="uref" href="#arc-linux-uclibc">arc-linux-uclibc</a>
! </li><li><a class="uref" href="#arm-x-eabi">arm-*-eabi</a>
! </li><li><a class="uref" href="#avr">avr</a>
! </li><li><a class="uref" href="#bfin">Blackfin</a>
! </li><li><a class="uref" href="#cris">cris</a>
! </li><li><a class="uref" href="#dos">DOS</a>
! </li><li><a class="uref" href="#epiphany-x-elf">epiphany-*-elf</a>
! </li><li><a class="uref" href="#ft32-x-elf">ft32-*-elf</a>
! </li><li><a class="uref" href="#x-x-freebsd">*-*-freebsd*</a>
! </li><li><a class="uref" href="#h8300-hms">h8300-hms</a>
! </li><li><a class="uref" href="#hppa-x-linux">hppa-*-linux</a>
! </li><li><a class="uref" href="#hppa64-hp-hpux11">hppa64-hp-hpux11*</a>
! </li><li><a class="uref" href="#x-x-linux-gnu">*-*-linux-gnu</a>
! </li><li><a class="uref" href="#ix86-x-linux">i?86-*-linux*</a>
! </li><li><a class="uref" href="#ix86-x-solaris2">i?86-*-solaris2*</a>
! </li><li><a class="uref" href="#ia64-x-linux">ia64-*-linux</a>
! </li><li><a class="uref" href="#ia64-x-hpux">ia64-*-hpux*</a>
! </li><li><a class="uref" href="#x-ibm-aix">*-ibm-aix*</a>
! </li><li><a class="uref" href="#iq2000-x-elf">iq2000-*-elf</a>
! </li><li><a class="uref" href="#loongarch">loongarch</a>
! </li><li><a class="uref" href="#lm32-x-elf">lm32-*-elf</a>
! </li><li><a class="uref" href="#lm32-x-uclinux">lm32-*-uclinux</a>
! </li><li><a class="uref" href="#m32c-x-elf">m32c-*-elf</a>
! </li><li><a class="uref" href="#m32r-x-elf">m32r-*-elf</a>
! </li><li><a class="uref" href="#m68k-x-x">m68k-*-*</a>
! </li><li><a class="uref" href="#m68k-x-uclinux">m68k-*-uclinux</a>
! </li><li><a class="uref" href="#microblaze-x-elf">microblaze-*-elf</a>
! </li><li><a class="uref" href="#mips-x-x">mips-*-*</a>
! </li><li><a class="uref" href="#moxie-x-elf">moxie-*-elf</a>
! </li><li><a class="uref" href="#msp430-x-elf">msp430-*-elf</a>
! </li><li><a class="uref" href="#nds32le-x-elf">nds32le-*-elf</a>
! </li><li><a class="uref" href="#nds32be-x-elf">nds32be-*-elf</a>
! </li><li><a class="uref" href="#nvptx-x-none">nvptx-*-none</a>
! </li><li><a class="uref" href="#or1k-x-elf">or1k-*-elf</a>
! </li><li><a class="uref" href="#or1k-x-linux">or1k-*-linux</a>
! </li><li><a class="uref" href="#powerpc-x-x">powerpc*-*-*</a>
! </li><li><a class="uref" href="#powerpc-x-darwin">powerpc-*-darwin*</a>
! </li><li><a class="uref" href="#powerpc-x-elf">powerpc-*-elf</a>
! </li><li><a class="uref" href="#powerpc-x-linux-gnu">powerpc*-*-linux-gnu*</a>
! </li><li><a class="uref" href="#powerpc-x-netbsd">powerpc-*-netbsd*</a>
! </li><li><a class="uref" href="#powerpc-x-eabisim">powerpc-*-eabisim</a>
! </li><li><a class="uref" href="#powerpc-x-eabi">powerpc-*-eabi</a>
! </li><li><a class="uref" href="#powerpcle-x-elf">powerpcle-*-elf</a>
! </li><li><a class="uref" href="#powerpcle-x-eabisim">powerpcle-*-eabisim</a>
! </li><li><a class="uref" href="#powerpcle-x-eabi">powerpcle-*-eabi</a>
! </li><li><a class="uref" href="#riscv32-x-elf">riscv32-*-elf</a>
! </li><li><a class="uref" href="#riscv32-x-linux">riscv32-*-linux</a>
! </li><li><a class="uref" href="#riscv64-x-elf">riscv64-*-elf</a>
! </li><li><a class="uref" href="#riscv64-x-linux">riscv64-*-linux</a>
! </li><li><a class="uref" href="#rl78-x-elf">rl78-*-elf</a>
! </li><li><a class="uref" href="#rx-x-elf">rx-*-elf</a>
! </li><li><a class="uref" href="#s390-x-linux">s390-*-linux*</a>
! </li><li><a class="uref" href="#s390x-x-linux">s390x-*-linux*</a>
! </li><li><a class="uref" href="#s390x-ibm-tpf">s390x-ibm-tpf*</a>
! </li><li><a class="uref" href="#x-x-solaris2">*-*-solaris2*</a>
! </li><li><a class="uref" href="#sparc-x-x">sparc*-*-*</a>
! </li><li><a class="uref" href="#sparc-sun-solaris2">sparc-sun-solaris2*</a>
! </li><li><a class="uref" href="#sparc-x-linux">sparc-*-linux*</a>
! </li><li><a class="uref" href="#sparc64-x-solaris2">sparc64-*-solaris2*</a>
! </li><li><a class="uref" href="#sparcv9-x-solaris2">sparcv9-*-solaris2*</a>
! </li><li><a class="uref" href="#c6x-x-x">c6x-*-*</a>
! </li><li><a class="uref" href="#visium-x-elf">visium-*-elf</a>
! </li><li><a class="uref" href="#x-x-vxworks">*-*-vxworks*</a>
! </li><li><a class="uref" href="#x86-64-x-x">x86_64-*-*, amd64-*-*</a>
! </li><li><a class="uref" href="#x86-64-x-solaris2">x86_64-*-solaris2*</a>
! </li><li><a class="uref" href="#xtensa-x-elf">xtensa*-*-elf</a>
! </li><li><a class="uref" href="#xtensa-x-linux">xtensa*-*-linux*</a>
! </li><li><a class="uref" href="#windows">Microsoft Windows</a>
! </li><li><a class="uref" href="#x-x-cygwin">*-*-cygwin</a>
! </li><li><a class="uref" href="#x-x-mingw32">*-*-mingw32</a>
! </li><li><a class="uref" href="#os2">OS/2</a>
! </li><li><a class="uref" href="#older">Older systems</a>
  </li></ul>
  
! <ul class="itemize mark-bullet">
! <li><a class="uref" href="#elf">all ELF targets</a> (SVR4, Solaris, etc.)
  </li></ul>
  
  
  <!-- -------- host/target specific issues start here ---------------- -->
  <hr />
! <a class="anchor" id="aarch64-x-x"></a><h3 class="heading" id="aarch64*-*-*"><span>aarch64*-*-*<a class="copiable-link" href="#aarch64*-*-*"> &para;</a></span></h3>
  <p>To enable a workaround for the Cortex-A53 erratum number 835769 by default
  (for all CPUs regardless of -mcpu option given) at configure time use the
! <samp class="option">--enable-fix-cortex-a53-835769</samp> option.  This will enable the fix by
  default and can be explicitly disabled during compilation by passing the
! <samp class="option">-mno-fix-cortex-a53-835769</samp> option.  Conversely,
! <samp class="option">--disable-fix-cortex-a53-835769</samp> will disable the workaround by
  default.  The workaround is disabled by default if neither of
! <samp class="option">--enable-fix-cortex-a53-835769</samp> or
! <samp class="option">--disable-fix-cortex-a53-835769</samp> is given at configure time.
  </p>
  <p>To enable a workaround for the Cortex-A53 erratum number 843419 by default
  (for all CPUs regardless of -mcpu option given) at configure time use the
! <samp class="option">--enable-fix-cortex-a53-843419</samp> option.  This workaround is applied at
  link time.  Enabling the workaround will cause GCC to pass the relevant option
  to the linker.  It can be explicitly disabled during compilation by passing the
! <samp class="option">-mno-fix-cortex-a53-843419</samp> option.  Conversely,
! <samp class="option">--disable-fix-cortex-a53-843419</samp> will disable the workaround by default.
  The workaround is disabled by default if neither of
! <samp class="option">--enable-fix-cortex-a53-843419</samp> or
! <samp class="option">--disable-fix-cortex-a53-843419</samp> is given at configure time.
  </p>
  <p>To enable Branch Target Identification Mechanism and Return Address Signing by
! default at configure time use the <samp class="option">--enable-standard-branch-protection</samp>
! option.  This is equivalent to having <samp class="option">-mbranch-protection=standard</samp>
  during compilation.  This can be explicitly disabled during compilation by
! passing the <samp class="option">-mbranch-protection=none</samp> option which turns off all
  types of branch protections.  Conversely,
! <samp class="option">--disable-standard-branch-protection</samp> will disable both the
  protections by default.  This mechanism is turned off by default if neither
  of the options are given at configure time.
  </p>
  <hr />
! <a class="anchor" id="amd64-x-solaris2"></a><h3 class="heading" id="amd64-*-solaris2*"><span>amd64-*-solaris2*<a class="copiable-link" href="#amd64-*-solaris2*"> &para;</a></span></h3>
! <p>This is a synonym for &lsquo;<samp class="samp">x86_64-*-solaris2*</samp>&rsquo;.
  </p>
  <hr />
! <a class="anchor" id="amdgcn-x-amdhsa"></a><h3 class="heading" id="amdgcn-*-amdhsa"><span>amdgcn-*-amdhsa<a class="copiable-link" href="#amdgcn-*-amdhsa"> &para;</a></span></h3>
  <p>AMD GCN GPU target.
  </p>
  <p>Instead of GNU Binutils, you need to install LLVM and copy
! <samp class="file">bin/llvm-mc</samp> to <samp class="file">amdgcn-amdhsa/bin/as</samp>,
! <samp class="file">bin/lld</samp> to <samp class="file">amdgcn-amdhsa/bin/ld</samp>,
! <samp class="file">bin/llvm-nm</samp> to <samp class="file">amdgcn-amdhsa/bin/nm</samp>, and
! <samp class="file">bin/llvm-ar</samp> to both <samp class="file">bin/amdgcn-amdhsa-ar</samp> and
! <samp class="file">bin/amdgcn-amdhsa-ranlib</samp>.
  </p>
  <p>The required version of LLVM depends on the devices that you want to support.
  As the list of ISAs is long, GCC by default only builds a subset of the
! supported ISAs as multilib; use <code class="code">--with-multilib-list=</code> to tailor the built
  multilibs.  Note that mixing ISAs in the same binary is not supported and gives
  a linker error.
  </p>
! <p>By default, multilib support is built for <code class="code">gfx900</code>, <code class="code">gfx906</code>,
! <code class="code">gfx908</code>, <code class="code">gfx90a</code>, <code class="code">gfx90c</code>, <code class="code">gfx1030</code>, <code class="code">gfx1036</code>,
! <code class="code">gfx1100</code> and <code class="code">gfx1103</code>.  The default multilib configuration
  requires LLVM 15 or newer.  LLVM 13.0.1 or LLVM 14 can be used by specifying
! a <code class="code">--with-multilib-list=</code> that does not list any GFX 11 device nor
! <code class="code">gfx1036</code>.  At least LLVM 16 is required for <code class="code">gfx1150</code> and
! <code class="code">gfx1151</code>, LLVM 19 for the generic <code class="code">gfx9-generic</code>,
! <code class="code">gfx10-3-generic</code>, and <code class="code">gfx11-generic</code> targets and for
! <code class="code">gfx1152</code>, while LLVM 20 is required for <code class="code">gfx1153</code>.
  </p>
  <p>The supported ISA architectures are listed in the GCC manual. The generic
! ISA targets <code class="code">gfx9-generic</code>, <code class="code">gfx10-3-generic</code>, and
! <code class="code">gfx11-generic</code> reduce the number of required multilibs but note
! that <code class="code">gfx9-generic</code> does not include <code class="code">gfx908</code> or <code class="code">gfx90a</code>,
  that linking specific ISA code with generic code is currently not supported,
  and that only a future ROCm release (newer than 6.3.3) will be able to execute
  generic code.
*************** the device console output for GFX10 and
*** 268,343 ****
  commit 2ef1a37e7 [Mar 25, 2025] fixes a SIMD math issue).
  </p>
  <p>To run the binaries, install the HSA Runtime from the
! <a href="https://rocm.docs.amd.com/">ROCm Platform</a>, and use
! <samp>libexec/gcc/amdhsa-amdhsa/<var>version</var>/gcn-run</samp> to launch them
  on the GPU.
  </p>
  <hr />
! <a name="arc-x-elf32"></a><a name="arc-*-elf32"></a>
! <h3 class="heading">arc-*-elf32</h3>
  
! <p>Use &lsquo;<samp>configure --target=arc-elf32 --with-cpu=<var>cpu</var> --enable-languages=&quot;c,c++&quot;</samp>&rsquo;
! to configure GCC, with <var>cpu</var> being one of &lsquo;<samp>arc600</samp>&rsquo;, &lsquo;<samp>arc601</samp>&rsquo;,
! or &lsquo;<samp>arc700</samp>&rsquo;.
  </p>
  <hr />
! <a name="arc-linux-uclibc"></a><a name="arc-linux-uclibc-1"></a>
! <h3 class="heading">arc-linux-uclibc</h3>
  
! <p>Use &lsquo;<samp>configure --target=arc-linux-uclibc --with-cpu=arc700 --enable-languages=&quot;c,c++&quot;</samp>&rsquo; to configure GCC.
  </p>
  <hr />
! <a name="arm-x-eabi"></a><a name="arm-*-eabi"></a>
! <h3 class="heading">arm-*-eabi</h3>
  <p>ARM-family processors.
  </p>
  <p>Building the Ada frontend commonly fails (an infinite loop executing
! <code>xsinfo</code>) if the host compiler is GNAT 4.8.  Host compilers built from the
  GNAT 4.6, 4.9 or 5 release branches are known to succeed.
  </p>
  <hr />
! <a name="avr"></a><a name="avr-1"></a>
! <h3 class="heading">avr</h3>
  <p>AVR 8-bit microcontrollers.  These are used in embedded
  applications.  There are no standard Unix configurations.
! See <a href="https://gcc.gnu.org/onlinedocs/gcc/AVR-Options.html">AVR Options</a>
  in the main manual
  for the list of supported MCU types.
  </p>
! <p>Use &lsquo;<samp>configure --target=avr --enable-languages=&quot;c,c++&quot;</samp>&rsquo; to configure GCC.
  </p>
  <p>Further installation notes and other useful information about AVR tools
  can also be obtained from:
  </p>
! <ul>
! <li> <a href="https://avrdudes.github.io/avr-libc/avr-libc-user-manual/install_tools.html">AVR-LibC: Building and Installing the GNU Tool Chain</a>
! </li><li> <a href="https://github.com/sprintersb/atest?tab=readme-ov-file#running-the-avr-gcc-testsuite-using-the-avrtest-simulator">AVRtest: Running the avr-gcc Testsuite</a>
  </li></ul>
  
  <hr />
! <a name="bfin"></a><a name="Blackfin"></a>
! <h3 class="heading">Blackfin</h3>
  <p>The Blackfin processor, an Analog Devices DSP.
  See &ldquo;Blackfin Options&rdquo; in the main manual
  </p>
  <p>More information, and a version of binutils with support for this processor,
! are available at <a href="https://sourceforge.net/projects/adi-toolchain/">https://sourceforge.net/projects/adi-toolchain/</a>.
  </p>
  <hr />
! <a name="cris"></a><a name="CRIS"></a>
! <h3 class="heading">CRIS</h3>
  <p>CRIS is a CPU architecture in Axis Communications systems-on-a-chip, for
  example the ETRAX series.  These are used in embedded applications.
  </p>
  <p>See &ldquo;CRIS Options&rdquo; in the main manual
  for a list of CRIS-specific options.
  </p>
! <p>Use &lsquo;<samp>configure --target=cris-elf</samp>&rsquo; to configure GCC&nbsp;for building
  a cross-compiler for CRIS.
  <hr />
! <a name="dos"></a></p><a name="DOS"></a>
! <h3 class="heading">DOS</h3>
! <p>Please have a look at the <a href="binaries.html">binaries page</a>.
  </p>
  <p>You cannot install GCC by itself on MSDOS; it will not compile under
  any MSDOS compiler except itself.  You need to get the complete
--- 247,315 ----
  commit 2ef1a37e7 [Mar 25, 2025] fixes a SIMD math issue).
  </p>
  <p>To run the binaries, install the HSA Runtime from the
! <a class="uref" href="https://rocm.docs.amd.com/">ROCm Platform</a>, and use
! <samp class="file">libexec/gcc/amdhsa-amdhsa/<var class="var">version</var>/gcn-run</samp> to launch them
  on the GPU.
  </p>
  <hr />
! <a class="anchor" id="arc-x-elf32"></a><h3 class="heading" id="arc-*-elf32"><span>arc-*-elf32<a class="copiable-link" href="#arc-*-elf32"> &para;</a></span></h3>
  
! <p>Use &lsquo;<samp class="samp">configure --target=arc-elf32 --with-cpu=<var class="var">cpu</var> --enable-languages=&quot;c,c++&quot;</samp>&rsquo;
! to configure GCC, with <var class="var">cpu</var> being one of &lsquo;<samp class="samp">arc600</samp>&rsquo;, &lsquo;<samp class="samp">arc601</samp>&rsquo;,
! or &lsquo;<samp class="samp">arc700</samp>&rsquo;.
  </p>
  <hr />
! <a class="anchor" id="arc-linux-uclibc"></a><h3 class="heading" id="arc-linux-uclibc-1"><span>arc-linux-uclibc<a class="copiable-link" href="#arc-linux-uclibc-1"> &para;</a></span></h3>
  
! <p>Use &lsquo;<samp class="samp">configure --target=arc-linux-uclibc --with-cpu=arc700 --enable-languages=&quot;c,c++&quot;</samp>&rsquo; to configure GCC.
  </p>
  <hr />
! <a class="anchor" id="arm-x-eabi"></a><h3 class="heading" id="arm-*-eabi"><span>arm-*-eabi<a class="copiable-link" href="#arm-*-eabi"> &para;</a></span></h3>
  <p>ARM-family processors.
  </p>
  <p>Building the Ada frontend commonly fails (an infinite loop executing
! <code class="code">xsinfo</code>) if the host compiler is GNAT 4.8.  Host compilers built from the
  GNAT 4.6, 4.9 or 5 release branches are known to succeed.
  </p>
  <hr />
! <a class="anchor" id="avr"></a><h3 class="heading" id="avr-1"><span>avr<a class="copiable-link" href="#avr-1"> &para;</a></span></h3>
  <p>AVR 8-bit microcontrollers.  These are used in embedded
  applications.  There are no standard Unix configurations.
! See <a class="uref" href="https://gcc.gnu.org/onlinedocs/gcc/AVR-Options.html">AVR Options</a>
  in the main manual
  for the list of supported MCU types.
  </p>
! <p>Use &lsquo;<samp class="samp">configure --target=avr --enable-languages=&quot;c,c++&quot;</samp>&rsquo; to configure GCC.
  </p>
  <p>Further installation notes and other useful information about AVR tools
  can also be obtained from:
  </p>
! <ul class="itemize mark-bullet">
! <li><a class="uref" href="https://avrdudes.github.io/avr-libc/avr-libc-user-manual/install_tools.html">AVR-LibC: Building and Installing the GNU Tool Chain</a>
! </li><li><a class="uref" href="https://github.com/sprintersb/atest?tab=readme-ov-file#running-the-avr-gcc-testsuite-using-the-avrtest-simulator">AVRtest: Running the avr-gcc Testsuite</a>
  </li></ul>
  
  <hr />
! <a class="anchor" id="bfin"></a><h3 class="heading" id="Blackfin"><span>Blackfin<a class="copiable-link" href="#Blackfin"> &para;</a></span></h3>
  <p>The Blackfin processor, an Analog Devices DSP.
  See &ldquo;Blackfin Options&rdquo; in the main manual
  </p>
  <p>More information, and a version of binutils with support for this processor,
! are available at <a class="uref" href="https://sourceforge.net/projects/adi-toolchain/">https://sourceforge.net/projects/adi-toolchain/</a>.
  </p>
  <hr />
! <a class="anchor" id="cris"></a><h3 class="heading" id="CRIS"><span>CRIS<a class="copiable-link" href="#CRIS"> &para;</a></span></h3>
  <p>CRIS is a CPU architecture in Axis Communications systems-on-a-chip, for
  example the ETRAX series.  These are used in embedded applications.
  </p>
  <p>See &ldquo;CRIS Options&rdquo; in the main manual
  for a list of CRIS-specific options.
  </p>
! <p>Use &lsquo;<samp class="samp">configure --target=cris-elf</samp>&rsquo; to configure GCC&nbsp;for building
  a cross-compiler for CRIS.
  <hr />
! <a class="anchor" id="dos"></a></p><h3 class="heading" id="DOS"><span>DOS<a class="copiable-link" href="#DOS"> &para;</a></span></h3>
! <p>Please have a look at the <a class="uref" href="binaries.html">binaries page</a>.
  </p>
  <p>You cannot install GCC by itself on MSDOS; it will not compile under
  any MSDOS compiler except itself.  You need to get the complete
*************** compilation package DJGPP, which include
*** 345,399 ****
  and includes all the necessary compilation tools and libraries.
  </p>
  <hr />
! <a name="epiphany-x-elf"></a><a name="epiphany-*-elf"></a>
! <h3 class="heading">epiphany-*-elf</h3>
  <p>Adapteva Epiphany.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="x-x-freebsd"></a><a name="g_t*-*-freebsd*"></a>
! <h3 class="heading">*-*-freebsd*</h3>
  <p>FreeBSD using the ELF file format with DWARF 2 debugging.
  </p>
  <p>We recommend bootstrapping against the latest GNU binutils or the
! version found in the <samp>devel/binutils</samp> port. This also has been
  known to enable additional features and improve overall testsuite
  results.
  </p>
  <p>Ada and D (or rather their respective libraries) are broken on
  FreeBSD/i386. This also affects building 32-bit libraries on
! FreeBSD/amd64, so configure with <samp>--disable-multilib</samp>
  there in case you are building one of these front ends.
  </p>
  <p>Go (or rather libgo) is generally broken on FreeBSD.
  </p>
  <hr />
! <a name="ft32-x-elf"></a><a name="ft32-*-elf"></a>
! <h3 class="heading">ft32-*-elf</h3>
  <p>The FT32 processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="h8300-hms"></a><a name="h8300-hms-1"></a>
! <h3 class="heading">h8300-hms</h3>
  <p>Renesas H8/300 series of processors.
  </p>
  <hr />
! <a name="hppa64-hp-hpux11"></a><a name="hppa64-hp-hpux11*"></a>
! <h3 class="heading">hppa64-hp-hpux11*</h3>
! <p>Only the 64-bit &lsquo;<samp>hppa</samp>&rsquo; target is supported on HP-UX.  Support
! for 32-bit &lsquo;<samp>hppa</samp>&rsquo; was discontinued in GCC 13.
  </p> 
  <p>We require using gas on all hppa platforms.
  </p>
  <p>It may be helpful to configure GCC with the
! <a href="./configure.html#with-gnu-as"><samp>--with-gnu-as</samp></a> and
! <samp>--with-as=&hellip;</samp> options to ensure that GCC can find GAS.
  </p>
  <p>Only the HP linker is supported.  Thus, it is best to explicitly
! configure the target with the <samp>--with-ld=&hellip;</samp> option.
  </p>
! <p>The DCE thread library is not supported, so <samp>--enable-threads=dce</samp>
  does not work.
  </p>
  <p>Currently, there are no precompiled binaries for 64-bit HP-UX.
--- 317,366 ----
  and includes all the necessary compilation tools and libraries.
  </p>
  <hr />
! <a class="anchor" id="epiphany-x-elf"></a><h3 class="heading" id="epiphany-*-elf"><span>epiphany-*-elf<a class="copiable-link" href="#epiphany-*-elf"> &para;</a></span></h3>
  <p>Adapteva Epiphany.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a class="anchor" id="x-x-freebsd"></a><h3 class="heading" id="g_t*-*-freebsd*"><span>*-*-freebsd*<a class="copiable-link" href="#g_t*-*-freebsd*"> &para;</a></span></h3>
  <p>FreeBSD using the ELF file format with DWARF 2 debugging.
  </p>
  <p>We recommend bootstrapping against the latest GNU binutils or the
! version found in the <samp class="file">devel/binutils</samp> port. This also has been
  known to enable additional features and improve overall testsuite
  results.
  </p>
  <p>Ada and D (or rather their respective libraries) are broken on
  FreeBSD/i386. This also affects building 32-bit libraries on
! FreeBSD/amd64, so configure with <samp class="option">--disable-multilib</samp>
  there in case you are building one of these front ends.
  </p>
  <p>Go (or rather libgo) is generally broken on FreeBSD.
  </p>
  <hr />
! <a class="anchor" id="ft32-x-elf"></a><h3 class="heading" id="ft32-*-elf"><span>ft32-*-elf<a class="copiable-link" href="#ft32-*-elf"> &para;</a></span></h3>
  <p>The FT32 processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a class="anchor" id="h8300-hms"></a><h3 class="heading" id="h8300-hms-1"><span>h8300-hms<a class="copiable-link" href="#h8300-hms-1"> &para;</a></span></h3>
  <p>Renesas H8/300 series of processors.
  </p>
  <hr />
! <a class="anchor" id="hppa64-hp-hpux11"></a><h3 class="heading" id="hppa64-hp-hpux11*"><span>hppa64-hp-hpux11*<a class="copiable-link" href="#hppa64-hp-hpux11*"> &para;</a></span></h3>
! <p>Only the 64-bit &lsquo;<samp class="samp">hppa</samp>&rsquo; target is supported on HP-UX.  Support
! for 32-bit &lsquo;<samp class="samp">hppa</samp>&rsquo; was discontinued in GCC 13.
  </p> 
  <p>We require using gas on all hppa platforms.
  </p>
  <p>It may be helpful to configure GCC with the
! <a class="uref" href="./configure.html#with-gnu-as"><samp class="option">--with-gnu-as</samp></a> and
! <samp class="option">--with-as=&hellip;</samp> options to ensure that GCC can find GAS.
  </p>
  <p>Only the HP linker is supported.  Thus, it is best to explicitly
! configure the target with the <samp class="option">--with-ld=&hellip;</samp> option.
  </p>
! <p>The DCE thread library is not supported, so <samp class="option">--enable-threads=dce</samp>
  does not work.
  </p>
  <p>Currently, there are no precompiled binaries for 64-bit HP-UX.
*************** Then, the GCC distribution can be built.
*** 403,456 ****
  to the many dependencies.
  </p>
  <hr />
! <a name="x-x-linux-gnu"></a><a name="g_t*-*-linux-gnu"></a>
! <h3 class="heading">*-*-linux-gnu</h3>
  <p>Versions of libstdc++-v3 starting with 3.2.1 require bug fixes present
  in glibc 2.2.5 and later.  More information is available in the
  libstdc++-v3 documentation.
  </p>
  <hr />
! <a name="ix86-x-linux"></a><a name="i_003f86-*-linux*"></a>
! <h3 class="heading">i?86-*-linux*</h3>
  <p>If you receive Signal 11 errors when building on GNU/Linux, then it is
  possible you have a hardware problem.  Further information on this can be
! found on <a href="https://www.bitwizard.nl/sig11/">www.bitwizard.nl</a>.
  </p>
  <hr />
! <a name="ix86-x-solaris2"></a><a name="i_003f86-*-solaris2*"></a>
! <h3 class="heading">i?86-*-solaris2*</h3>
  <p>Use this for Solaris 11.4 on x86 and x86-64 systems.  Starting
! with GCC 4.7, there is also a 64-bit &lsquo;<samp>amd64-*-solaris2*</samp>&rsquo; or
! &lsquo;<samp>x86_64-*-solaris2*</samp>&rsquo; configuration that corresponds to
! &lsquo;<samp>sparcv9-sun-solaris2*</samp>&rsquo;.
  </p>
  <hr />
! <a name="ia64-x-linux"></a><a name="ia64-*-linux"></a>
! <h3 class="heading">ia64-*-linux</h3>
  <p>IA-64 processor (also known as IPF, or Itanium Processor Family)
  running GNU/Linux.
  </p>
  <p>If you are using the installed system libunwind library with
! <samp>--with-system-libunwind</samp>, then you must use libunwind 0.98 or
  later.
  </p>
  <hr />
! <a name="ia64-x-hpux"></a><a name="ia64-*-hpux*"></a>
! <h3 class="heading">ia64-*-hpux*</h3>
  <p>Building GCC on this target requires the GNU Assembler.  The bundled HP
  assembler will not work.  To prevent GCC from using the wrong assembler,
! the option <samp>--with-gnu-as</samp> may be necessary.
  </p>
  <hr />
  <!-- rs6000-ibm-aix*, powerpc-ibm-aix* -->
! <a name="x-ibm-aix"></a><a name="g_t*-ibm-aix*"></a>
! <h3 class="heading">*-ibm-aix*</h3>
  <p>Support for AIX version 3 and older was discontinued in GCC 3.4.
  Support for AIX version 4.2 and older was discontinued in GCC 4.5.
  </p>
  <p>&ldquo;out of memory&rdquo; bootstrap failures may indicate a problem with
  process resource limits (ulimit).  Hard limits are configured in the
! <samp>/etc/security/limits</samp> system configuration file.
  </p>
  <p>GCC 4.9 and above require a C++ compiler for bootstrap.  IBM VAC++ / xlC
  cannot bootstrap GCC.  xlc can bootstrap an older version of GCC and
--- 370,417 ----
  to the many dependencies.
  </p>
  <hr />
! <a class="anchor" id="x-x-linux-gnu"></a><h3 class="heading" id="g_t*-*-linux-gnu"><span>*-*-linux-gnu<a class="copiable-link" href="#g_t*-*-linux-gnu"> &para;</a></span></h3>
  <p>Versions of libstdc++-v3 starting with 3.2.1 require bug fixes present
  in glibc 2.2.5 and later.  More information is available in the
  libstdc++-v3 documentation.
  </p>
  <hr />
! <a class="anchor" id="ix86-x-linux"></a><h3 class="heading" id="i_003f86-*-linux*"><span>i?86-*-linux*<a class="copiable-link" href="#i_003f86-*-linux*"> &para;</a></span></h3>
  <p>If you receive Signal 11 errors when building on GNU/Linux, then it is
  possible you have a hardware problem.  Further information on this can be
! found on <a class="uref" href="https://www.bitwizard.nl/sig11/">www.bitwizard.nl</a>.
  </p>
  <hr />
! <a class="anchor" id="ix86-x-solaris2"></a><h3 class="heading" id="i_003f86-*-solaris2*"><span>i?86-*-solaris2*<a class="copiable-link" href="#i_003f86-*-solaris2*"> &para;</a></span></h3>
  <p>Use this for Solaris 11.4 on x86 and x86-64 systems.  Starting
! with GCC 4.7, there is also a 64-bit &lsquo;<samp class="samp">amd64-*-solaris2*</samp>&rsquo; or
! &lsquo;<samp class="samp">x86_64-*-solaris2*</samp>&rsquo; configuration that corresponds to
! &lsquo;<samp class="samp">sparcv9-sun-solaris2*</samp>&rsquo;.
  </p>
  <hr />
! <a class="anchor" id="ia64-x-linux"></a><h3 class="heading" id="ia64-*-linux"><span>ia64-*-linux<a class="copiable-link" href="#ia64-*-linux"> &para;</a></span></h3>
  <p>IA-64 processor (also known as IPF, or Itanium Processor Family)
  running GNU/Linux.
  </p>
  <p>If you are using the installed system libunwind library with
! <samp class="option">--with-system-libunwind</samp>, then you must use libunwind 0.98 or
  later.
  </p>
  <hr />
! <a class="anchor" id="ia64-x-hpux"></a><h3 class="heading" id="ia64-*-hpux*"><span>ia64-*-hpux*<a class="copiable-link" href="#ia64-*-hpux*"> &para;</a></span></h3>
  <p>Building GCC on this target requires the GNU Assembler.  The bundled HP
  assembler will not work.  To prevent GCC from using the wrong assembler,
! the option <samp class="option">--with-gnu-as</samp> may be necessary.
  </p>
  <hr />
  <!-- rs6000-ibm-aix*, powerpc-ibm-aix* -->
! <a class="anchor" id="x-ibm-aix"></a><h3 class="heading" id="g_t*-ibm-aix*"><span>*-ibm-aix*<a class="copiable-link" href="#g_t*-ibm-aix*"> &para;</a></span></h3>
  <p>Support for AIX version 3 and older was discontinued in GCC 3.4.
  Support for AIX version 4.2 and older was discontinued in GCC 4.5.
  </p>
  <p>&ldquo;out of memory&rdquo; bootstrap failures may indicate a problem with
  process resource limits (ulimit).  Hard limits are configured in the
! <samp class="file">/etc/security/limits</samp> system configuration file.
  </p>
  <p>GCC 4.9 and above require a C++ compiler for bootstrap.  IBM VAC++ / xlC
  cannot bootstrap GCC.  xlc can bootstrap an older version of GCC and
*************** G++ can bootstrap recent releases of GCC
*** 459,468 ****
  <p>GCC can bootstrap with recent versions of IBM XLC, but bootstrapping
  with an earlier release of GCC is recommended.  Bootstrapping with XLC
  requires a larger data segment, which can be enabled through the
! <var>LDR_CNTRL</var> environment variable, e.g.,
  </p>
! <div class="smallexample">
! <pre class="smallexample">% LDR_CNTRL=MAXDATA=0x50000000
  % export LDR_CNTRL
  </pre></div>
  
--- 420,429 ----
  <p>GCC can bootstrap with recent versions of IBM XLC, but bootstrapping
  with an earlier release of GCC is recommended.  Bootstrapping with XLC
  requires a larger data segment, which can be enabled through the
! <var class="var">LDR_CNTRL</var> environment variable, e.g.,
  </p>
! <div class="example smallexample">
! <pre class="example-preformatted">% LDR_CNTRL=MAXDATA=0x50000000
  % export LDR_CNTRL
  </pre></div>
  
*************** sources.  One may delete GCC&rsquo;s &ld
*** 471,504 ****
  with a version of GCC built for an earlier release of AIX.
  </p>
  <p>To speed up the configuration phases of bootstrapping and installing GCC,
! one may use GNU Bash instead of AIX <code>/bin/sh</code>, e.g.,
  </p>
! <div class="smallexample">
! <pre class="smallexample">% CONFIG_SHELL=/opt/freeware/bin/bash
  % export CONFIG_SHELL
  </pre></div>
  
! <p>and then proceed as described in <a href="build.html">the build
  instructions</a>, where we strongly recommend specifying an absolute path
! to invoke <var>srcdir</var>/configure.
  </p>
  <p>Because GCC on AIX is built as a 32-bit executable by default,
  (although it can generate 64-bit programs) the GMP and MPFR libraries
  required by gfortran must be 32-bit libraries.  Building GMP and MPFR
  as static archive libraries works better than shared libraries.
  </p>
! <p>Errors involving <code>alloca</code> when building GCC generally are due
! to an incorrect definition of <code>CC</code> in the Makefile or mixing files
  compiled with the native C compiler and GCC.  During the stage1 phase of
! the build, the native AIX compiler <strong>must</strong> be invoked as <code>cc</code>
! (not <code>xlc</code>).  Once <code>configure</code> has been informed of
! <code>xlc</code>, one needs to use &lsquo;<samp>make distclean</samp>&rsquo; to remove the
! configure cache files and ensure that <code>CC</code> environment variable
! does not provide a definition that will confuse <code>configure</code>.
  If this error occurs during stage2 or later, then the problem most likely
  is the version of Make (see above).
  </p>
! <p>The native <code>as</code> and <code>ld</code> are recommended for
  bootstrapping on AIX.  The GNU Assembler, GNU Linker, and GNU
  Binutils version 2.20 is the minimum level that supports bootstrap on
  AIX 5.  The GNU Assembler has not been updated to support AIX 6&nbsp;or
--- 432,465 ----
  with a version of GCC built for an earlier release of AIX.
  </p>
  <p>To speed up the configuration phases of bootstrapping and installing GCC,
! one may use GNU Bash instead of AIX <code class="command">/bin/sh</code>, e.g.,
  </p>
! <div class="example smallexample">
! <pre class="example-preformatted">% CONFIG_SHELL=/opt/freeware/bin/bash
  % export CONFIG_SHELL
  </pre></div>
  
! <p>and then proceed as described in <a class="uref" href="build.html">the build
  instructions</a>, where we strongly recommend specifying an absolute path
! to invoke <var class="var">srcdir</var>/configure.
  </p>
  <p>Because GCC on AIX is built as a 32-bit executable by default,
  (although it can generate 64-bit programs) the GMP and MPFR libraries
  required by gfortran must be 32-bit libraries.  Building GMP and MPFR
  as static archive libraries works better than shared libraries.
  </p>
! <p>Errors involving <code class="code">alloca</code> when building GCC generally are due
! to an incorrect definition of <code class="code">CC</code> in the Makefile or mixing files
  compiled with the native C compiler and GCC.  During the stage1 phase of
! the build, the native AIX compiler <strong class="strong">must</strong> be invoked as <code class="command">cc</code>
! (not <code class="command">xlc</code>).  Once <code class="command">configure</code> has been informed of
! <code class="command">xlc</code>, one needs to use &lsquo;<samp class="samp">make distclean</samp>&rsquo; to remove the
! configure cache files and ensure that <code class="env">CC</code> environment variable
! does not provide a definition that will confuse <code class="command">configure</code>.
  If this error occurs during stage2 or later, then the problem most likely
  is the version of Make (see above).
  </p>
! <p>The native <code class="command">as</code> and <code class="command">ld</code> are recommended for
  bootstrapping on AIX.  The GNU Assembler, GNU Linker, and GNU
  Binutils version 2.20 is the minimum level that supports bootstrap on
  AIX 5.  The GNU Assembler has not been updated to support AIX 6&nbsp;or
*************** IZ98477 for AIX 5.3 TL11 and IZ98134 for
*** 519,561 ****
  AIX 5.3 TL12 SP5, AIX 6.1 TL04 SP11, AIX 6.1 TL05 SP7, AIX 6.1 TL06 SP6,
  AIX 6.1 TL07 and AIX 7.1 TL01 should include the fix.
  </p>
! <p>Building <samp>libstdc++.a</samp> requires a fix for an AIX Assembler bug
  APAR IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1).  It also requires a
  fix for another AIX Assembler bug and a co-dependent AIX Archiver fix
  referenced as APAR IY53606 (AIX 5.2) or as APAR IY54774 (AIX 5.1)
  </p>
! <a name="TransferAixShobj"></a><p>&lsquo;<samp>libstdc++</samp>&rsquo; in GCC 3.4 increments the major version number of the
! shared object and GCC installation places the <samp>libstdc++.a</samp>
  shared library in a common location which will overwrite the and GCC
  3.3 version of the shared library.  Applications either need to be
  re-linked against the new shared library or the GCC 3.1 and GCC 3.3
! versions of the &lsquo;<samp>libstdc++</samp>&rsquo; shared object needs to be available
! to the AIX runtime loader.  The GCC 3.1 &lsquo;<samp>libstdc++.so.4</samp>&rsquo;, if
! present, and GCC 3.3 &lsquo;<samp>libstdc++.so.5</samp>&rsquo; shared objects can be
  installed for runtime dynamic loading using the following steps to set
! the &lsquo;<samp>F_LOADONLY</samp>&rsquo; flag in the shared object for <em>each</em>
! multilib <samp>libstdc++.a</samp> installed:
  </p>
  <p>Extract the shared objects from the currently installed
! <samp>libstdc++.a</samp> archive:
! </p><div class="smallexample">
! <pre class="smallexample">% ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5
  </pre></div>
  
! <p>Enable the &lsquo;<samp>F_LOADONLY</samp>&rsquo; flag so that the shared object will be
  available for runtime dynamic loading, but not linking:
! </p><div class="smallexample">
! <pre class="smallexample">% strip -e libstdc++.so.4 libstdc++.so.5
  </pre></div>
  
  <p>Archive the runtime-only shared object in the GCC 3.4
! <samp>libstdc++.a</samp> archive:
! </p><div class="smallexample">
! <pre class="smallexample">% ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5
  </pre></div>
  
  <p>Eventually, the
! <a href="./configure.html#WithAixSoname"><samp>--with-aix-soname=svr4</samp></a>
  configure option may drop the need for this procedure for libraries that
  support it.
  </p>
--- 480,522 ----
  AIX 5.3 TL12 SP5, AIX 6.1 TL04 SP11, AIX 6.1 TL05 SP7, AIX 6.1 TL06 SP6,
  AIX 6.1 TL07 and AIX 7.1 TL01 should include the fix.
  </p>
! <p>Building <samp class="file">libstdc++.a</samp> requires a fix for an AIX Assembler bug
  APAR IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1).  It also requires a
  fix for another AIX Assembler bug and a co-dependent AIX Archiver fix
  referenced as APAR IY53606 (AIX 5.2) or as APAR IY54774 (AIX 5.1)
  </p>
! <a class="anchor" id="TransferAixShobj"></a><p>&lsquo;<samp class="samp">libstdc++</samp>&rsquo; in GCC 3.4 increments the major version number of the
! shared object and GCC installation places the <samp class="file">libstdc++.a</samp>
  shared library in a common location which will overwrite the and GCC
  3.3 version of the shared library.  Applications either need to be
  re-linked against the new shared library or the GCC 3.1 and GCC 3.3
! versions of the &lsquo;<samp class="samp">libstdc++</samp>&rsquo; shared object needs to be available
! to the AIX runtime loader.  The GCC 3.1 &lsquo;<samp class="samp">libstdc++.so.4</samp>&rsquo;, if
! present, and GCC 3.3 &lsquo;<samp class="samp">libstdc++.so.5</samp>&rsquo; shared objects can be
  installed for runtime dynamic loading using the following steps to set
! the &lsquo;<samp class="samp">F_LOADONLY</samp>&rsquo; flag in the shared object for <em class="emph">each</em>
! multilib <samp class="file">libstdc++.a</samp> installed:
  </p>
  <p>Extract the shared objects from the currently installed
! <samp class="file">libstdc++.a</samp> archive:
! </p><div class="example smallexample">
! <pre class="example-preformatted">% ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5
  </pre></div>
  
! <p>Enable the &lsquo;<samp class="samp">F_LOADONLY</samp>&rsquo; flag so that the shared object will be
  available for runtime dynamic loading, but not linking:
! </p><div class="example smallexample">
! <pre class="example-preformatted">% strip -e libstdc++.so.4 libstdc++.so.5
  </pre></div>
  
  <p>Archive the runtime-only shared object in the GCC 3.4
! <samp class="file">libstdc++.a</samp> archive:
! </p><div class="example smallexample">
! <pre class="example-preformatted">% ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5
  </pre></div>
  
  <p>Eventually, the
! <a class="uref" href="./configure.html#WithAixSoname"><samp class="option">--with-aix-soname=svr4</samp></a>
  configure option may drop the need for this procedure for libraries that
  support it.
  </p>
*************** executable.
*** 571,583 ****
  to parse archive libraries did not handle the new format correctly.
  These routines are used by GCC and result in error messages during
  linking such as &ldquo;not a COFF file&rdquo;.  The version of the routines shipped
! with AIX 4.3.1 should work for a 32-bit environment.  The <samp>-g</samp>
  option of the archive command may be used to create archives of 32-bit
  objects using the original &ldquo;small format&rdquo;.  A correct version of the
  routines is shipped with AIX 4.3.2 and above.
  </p>
  <p>Some versions of the AIX binder (linker) can fail with a relocation
! overflow severe error when the <samp>-bbigtoc</samp> option is used to link
  GCC-produced object files into an executable that overflows the TOC.  A fix
  for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC) is
  available as PTF U455193.
--- 532,544 ----
  to parse archive libraries did not handle the new format correctly.
  These routines are used by GCC and result in error messages during
  linking such as &ldquo;not a COFF file&rdquo;.  The version of the routines shipped
! with AIX 4.3.1 should work for a 32-bit environment.  The <samp class="option">-g</samp>
  option of the archive command may be used to create archives of 32-bit
  objects using the original &ldquo;small format&rdquo;.  A correct version of the
  routines is shipped with AIX 4.3.2 and above.
  </p>
  <p>Some versions of the AIX binder (linker) can fail with a relocation
! overflow severe error when the <samp class="option">-bbigtoc</samp> option is used to link
  GCC-produced object files into an executable that overflows the TOC.  A fix
  for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC) is
  available as PTF U455193.
*************** AIX 4.3.1 and above.
*** 594,712 ****
  </p>
  <p>AIX provides National Language Support (NLS).  Compilers and assemblers
  use NLS to support locale-specific representations of various data
! formats including floating-point numbers (e.g., &lsquo;<samp>.</samp>&rsquo;  vs &lsquo;<samp>,</samp>&rsquo; for
  separating decimal fractions).  There have been problems reported where
  GCC does not produce the same floating-point formats that the assembler
! expects.  If one encounters this problem, set the <code>LANG</code>
! environment variable to &lsquo;<samp>C</samp>&rsquo; or &lsquo;<samp>En_US</samp>&rsquo;.
  </p>
! <p>A default can be specified with the <samp>-mcpu=<var>cpu_type</var></samp>
! switch and using the configure option <samp>--with-cpu-<var>cpu_type</var></samp>.
  </p>
  <hr />
! <a name="iq2000-x-elf"></a><a name="iq2000-*-elf"></a>
! <h3 class="heading">iq2000-*-elf</h3>
  <p>Vitesse IQ2000 processors.  These are used in embedded
  applications.  There are no standard Unix configurations.
  </p>
  <hr />
! <a name="lm32-x-elf"></a><a name="lm32-*-elf"></a>
! <h3 class="heading">lm32-*-elf</h3>
  <p>Lattice Mico32 processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="lm32-x-uclinux"></a><a name="lm32-*-uclinux"></a>
! <h3 class="heading">lm32-*-uclinux</h3>
  <p>Lattice Mico32 processor.
  This configuration is intended for embedded systems running uClinux.
  </p>
  <hr />
! <a name="loongarch"></a><a name="LoongArch"></a>
! <h3 class="heading">LoongArch</h3>
  <p>LoongArch processor.
  The following LoongArch targets are available:
! </p><dl compact="compact">
! <dt><code>loongarch64-linux-gnu*</code></dt>
  <dd><p>LoongArch processor running GNU/Linux.  This target triplet may be coupled
  with a small set of possible suffixes to identify their default ABI type:
! </p><dl compact="compact">
! <dt><code>f64</code></dt>
! <dd><p>Uses <code>lp64d/base</code> ABI by default.
  </p></dd>
! <dt><code>f32</code></dt>
! <dd><p>Uses <code>lp64f/base</code> ABI by default.
  </p></dd>
! <dt><code>sf</code></dt>
! <dd><p>Uses <code>lp64s/base</code> ABI by default.
  </p></dd>
  </dl>
  
  </dd>
! <dt><code>loongarch64-linux-gnu</code></dt>
! <dd><p>Same as <code>loongarch64-linux-gnuf64</code> for legacy support.
  </p></dd>
  </dl>
  
  <p>More information about LoongArch can be found at
! <a href="https://github.com/loongson/LoongArch-Documentation">https://github.com/loongson/LoongArch-Documentation</a>.
  </p>
  <hr />
! <a name="m32c-x-elf"></a><a name="m32c-*-elf"></a>
! <h3 class="heading">m32c-*-elf</h3>
  <p>Renesas M32C processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="m32r-x-elf"></a><a name="m32r-*-elf"></a>
! <h3 class="heading">m32r-*-elf</h3>
  <p>Renesas M32R processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="m68k-x-x"></a><a name="m68k-*-*"></a>
! <h3 class="heading">m68k-*-*</h3>
  <p>By default,
! &lsquo;<samp>m68k-*-elf*</samp>&rsquo;, &lsquo;<samp>m68k-*-rtems</samp>&rsquo;,  &lsquo;<samp>m68k-*-uclinux</samp>&rsquo; and
! &lsquo;<samp>m68k-*-linux</samp>&rsquo;
  build libraries for both M680x0 and ColdFire processors.  If you only
  need the M680x0 libraries, you can omit the ColdFire ones by passing
! <samp>--with-arch=m68k</samp> to <code>configure</code>.  Alternatively, you
! can omit the M680x0 libraries by passing <samp>--with-arch=cf</samp> to
! <code>configure</code>.  These targets default to 5206 or 5475 code as
  appropriate for the target system when
! configured with <samp>--with-arch=cf</samp> and 68020 code otherwise.
  </p>
! <p>The &lsquo;<samp>m68k-*-netbsd</samp>&rsquo; and
! &lsquo;<samp>m68k-*-openbsd</samp>&rsquo; targets also support the <samp>--with-arch</samp>
  option.  They will generate ColdFire CFV4e code when configured with
! <samp>--with-arch=cf</samp> and 68020 code otherwise.
  </p>
  <p>You can override the default processors listed above by configuring
! with <samp>--with-cpu=<var>target</var></samp>.  This <var>target</var> can either
! be a <samp>-mcpu</samp> argument or one of the following values:
! &lsquo;<samp>m68000</samp>&rsquo;, &lsquo;<samp>m68010</samp>&rsquo;, &lsquo;<samp>m68020</samp>&rsquo;, &lsquo;<samp>m68030</samp>&rsquo;,
! &lsquo;<samp>m68040</samp>&rsquo;, &lsquo;<samp>m68060</samp>&rsquo;, &lsquo;<samp>m68020-40</samp>&rsquo; and &lsquo;<samp>m68020-60</samp>&rsquo;.
  </p>
  <p>GCC requires at least binutils version 2.17 on these targets.
  </p>
  <hr />
! <a name="m68k-x-uclinux"></a><a name="m68k-*-uclinux"></a>
! <h3 class="heading">m68k-*-uclinux</h3>
  <p>GCC 4.3 changed the uClinux configuration so that it uses the
! &lsquo;<samp>m68k-linux-gnu</samp>&rsquo; ABI rather than the &lsquo;<samp>m68k-elf</samp>&rsquo; ABI.
  It also added improved support for C++ and flat shared libraries,
  both of which were ABI changes.
  </p>
  <hr />
! <a name="microblaze-x-elf"></a><a name="microblaze-*-elf"></a>
! <h3 class="heading">microblaze-*-elf</h3>
  <p>Xilinx MicroBlaze processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="mips-x-x"></a><a name="mips-*-*"></a>
! <h3 class="heading">mips-*-*</h3>
  <p>If on a MIPS system you get an error message saying &ldquo;does not have gp
  sections for all it&rsquo;s [sic] sectons [sic]&rdquo;, don&rsquo;t worry about it.  This
  happens whenever you use GAS with the MIPS linker, but there is not
--- 555,663 ----
  </p>
  <p>AIX provides National Language Support (NLS).  Compilers and assemblers
  use NLS to support locale-specific representations of various data
! formats including floating-point numbers (e.g., &lsquo;<samp class="samp">.</samp>&rsquo;  vs &lsquo;<samp class="samp">,</samp>&rsquo; for
  separating decimal fractions).  There have been problems reported where
  GCC does not produce the same floating-point formats that the assembler
! expects.  If one encounters this problem, set the <code class="env">LANG</code>
! environment variable to &lsquo;<samp class="samp">C</samp>&rsquo; or &lsquo;<samp class="samp">En_US</samp>&rsquo;.
  </p>
! <p>A default can be specified with the <samp class="option">-mcpu=<var class="var">cpu_type</var></samp>
! switch and using the configure option <samp class="option">--with-cpu-<var class="var">cpu_type</var></samp>.
  </p>
  <hr />
! <a class="anchor" id="iq2000-x-elf"></a><h3 class="heading" id="iq2000-*-elf"><span>iq2000-*-elf<a class="copiable-link" href="#iq2000-*-elf"> &para;</a></span></h3>
  <p>Vitesse IQ2000 processors.  These are used in embedded
  applications.  There are no standard Unix configurations.
  </p>
  <hr />
! <a class="anchor" id="lm32-x-elf"></a><h3 class="heading" id="lm32-*-elf"><span>lm32-*-elf<a class="copiable-link" href="#lm32-*-elf"> &para;</a></span></h3>
  <p>Lattice Mico32 processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a class="anchor" id="lm32-x-uclinux"></a><h3 class="heading" id="lm32-*-uclinux"><span>lm32-*-uclinux<a class="copiable-link" href="#lm32-*-uclinux"> &para;</a></span></h3>
  <p>Lattice Mico32 processor.
  This configuration is intended for embedded systems running uClinux.
  </p>
  <hr />
! <a class="anchor" id="loongarch"></a><h3 class="heading" id="LoongArch"><span>LoongArch<a class="copiable-link" href="#LoongArch"> &para;</a></span></h3>
  <p>LoongArch processor.
  The following LoongArch targets are available:
! </p><dl class="table">
! <dt><code class="code">loongarch64-linux-gnu*</code></dt>
  <dd><p>LoongArch processor running GNU/Linux.  This target triplet may be coupled
  with a small set of possible suffixes to identify their default ABI type:
! </p><dl class="table">
! <dt><code class="code">f64</code></dt>
! <dd><p>Uses <code class="code">lp64d/base</code> ABI by default.
  </p></dd>
! <dt><code class="code">f32</code></dt>
! <dd><p>Uses <code class="code">lp64f/base</code> ABI by default.
  </p></dd>
! <dt><code class="code">sf</code></dt>
! <dd><p>Uses <code class="code">lp64s/base</code> ABI by default.
  </p></dd>
  </dl>
  
  </dd>
! <dt><code class="code">loongarch64-linux-gnu</code></dt>
! <dd><p>Same as <code class="code">loongarch64-linux-gnuf64</code> for legacy support.
  </p></dd>
  </dl>
  
  <p>More information about LoongArch can be found at
! <a class="uref" href="https://github.com/loongson/LoongArch-Documentation">https://github.com/loongson/LoongArch-Documentation</a>.
  </p>
  <hr />
! <a class="anchor" id="m32c-x-elf"></a><h3 class="heading" id="m32c-*-elf"><span>m32c-*-elf<a class="copiable-link" href="#m32c-*-elf"> &para;</a></span></h3>
  <p>Renesas M32C processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a class="anchor" id="m32r-x-elf"></a><h3 class="heading" id="m32r-*-elf"><span>m32r-*-elf<a class="copiable-link" href="#m32r-*-elf"> &para;</a></span></h3>
  <p>Renesas M32R processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a class="anchor" id="m68k-x-x"></a><h3 class="heading" id="m68k-*-*"><span>m68k-*-*<a class="copiable-link" href="#m68k-*-*"> &para;</a></span></h3>
  <p>By default,
! &lsquo;<samp class="samp">m68k-*-elf*</samp>&rsquo;, &lsquo;<samp class="samp">m68k-*-rtems</samp>&rsquo;,  &lsquo;<samp class="samp">m68k-*-uclinux</samp>&rsquo; and
! &lsquo;<samp class="samp">m68k-*-linux</samp>&rsquo;
  build libraries for both M680x0 and ColdFire processors.  If you only
  need the M680x0 libraries, you can omit the ColdFire ones by passing
! <samp class="option">--with-arch=m68k</samp> to <code class="command">configure</code>.  Alternatively, you
! can omit the M680x0 libraries by passing <samp class="option">--with-arch=cf</samp> to
! <code class="command">configure</code>.  These targets default to 5206 or 5475 code as
  appropriate for the target system when
! configured with <samp class="option">--with-arch=cf</samp> and 68020 code otherwise.
  </p>
! <p>The &lsquo;<samp class="samp">m68k-*-netbsd</samp>&rsquo; and
! &lsquo;<samp class="samp">m68k-*-openbsd</samp>&rsquo; targets also support the <samp class="option">--with-arch</samp>
  option.  They will generate ColdFire CFV4e code when configured with
! <samp class="option">--with-arch=cf</samp> and 68020 code otherwise.
  </p>
  <p>You can override the default processors listed above by configuring
! with <samp class="option">--with-cpu=<var class="var">target</var></samp>.  This <var class="var">target</var> can either
! be a <samp class="option">-mcpu</samp> argument or one of the following values:
! &lsquo;<samp class="samp">m68000</samp>&rsquo;, &lsquo;<samp class="samp">m68010</samp>&rsquo;, &lsquo;<samp class="samp">m68020</samp>&rsquo;, &lsquo;<samp class="samp">m68030</samp>&rsquo;,
! &lsquo;<samp class="samp">m68040</samp>&rsquo;, &lsquo;<samp class="samp">m68060</samp>&rsquo;, &lsquo;<samp class="samp">m68020-40</samp>&rsquo; and &lsquo;<samp class="samp">m68020-60</samp>&rsquo;.
  </p>
  <p>GCC requires at least binutils version 2.17 on these targets.
  </p>
  <hr />
! <a class="anchor" id="m68k-x-uclinux"></a><h3 class="heading" id="m68k-*-uclinux"><span>m68k-*-uclinux<a class="copiable-link" href="#m68k-*-uclinux"> &para;</a></span></h3>
  <p>GCC 4.3 changed the uClinux configuration so that it uses the
! &lsquo;<samp class="samp">m68k-linux-gnu</samp>&rsquo; ABI rather than the &lsquo;<samp class="samp">m68k-elf</samp>&rsquo; ABI.
  It also added improved support for C++ and flat shared libraries,
  both of which were ABI changes.
  </p>
  <hr />
! <a class="anchor" id="microblaze-x-elf"></a><h3 class="heading" id="microblaze-*-elf"><span>microblaze-*-elf<a class="copiable-link" href="#microblaze-*-elf"> &para;</a></span></h3>
  <p>Xilinx MicroBlaze processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a class="anchor" id="mips-x-x"></a><h3 class="heading" id="mips-*-*"><span>mips-*-*<a class="copiable-link" href="#mips-*-*"> &para;</a></span></h3>
  <p>If on a MIPS system you get an error message saying &ldquo;does not have gp
  sections for all it&rsquo;s [sic] sectons [sic]&rdquo;, don&rsquo;t worry about it.  This
  happens whenever you use GAS with the MIPS linker, but there is not
*************** optional, and there should not be a warn
*** 718,947 ****
  </p>
  <p>The libstdc++ atomic locking routines for MIPS targets requires MIPS II
  and later.  A patch went in just after the GCC 3.3 release to
! make &lsquo;<samp>mips*-*-*</samp>&rsquo; use the generic implementation instead.  You can also
! configure for &lsquo;<samp>mipsel-elf</samp>&rsquo; as a workaround.  The
! &lsquo;<samp>mips*-*-linux*</samp>&rsquo; target continues to use the MIPS II routines.  More
  work on this is expected in future releases.
  </p>
  
! <p>The built-in <code>__sync_*</code> functions are available on MIPS II and
! later systems and others that support the &lsquo;<samp>ll</samp>&rsquo;, &lsquo;<samp>sc</samp>&rsquo; and
! &lsquo;<samp>sync</samp>&rsquo; instructions.  This can be overridden by passing
! <samp>--with-llsc</samp> or <samp>--without-llsc</samp> when configuring GCC.
  Since the Linux kernel emulates these instructions if they are
! missing, the default for &lsquo;<samp>mips*-*-linux*</samp>&rsquo; targets is
! <samp>--with-llsc</samp>.  The <samp>--with-llsc</samp> and
! <samp>--without-llsc</samp> configure options may be overridden at compile
! time by passing the <samp>-mllsc</samp> or <samp>-mno-llsc</samp> options to
  the compiler.
  </p>
  <p>MIPS systems check for division by zero (unless
! <samp>-mno-check-zero-division</samp> is passed to the compiler) by
  generating either a conditional trap or a break instruction.  Using
  trap results in smaller code, but is only supported on MIPS II and
  later.  Also, some versions of the Linux kernel have a bug that
! prevents trap from generating the proper signal (<code>SIGFPE</code>).  To enable
! the use of break, use the <samp>--with-divide=breaks</samp>
! <code>configure</code> option when configuring GCC.  The default is to
  use traps on systems that support them.
  </p>
  <hr />
! <a name="moxie-x-elf"></a><a name="moxie-*-elf"></a>
! <h3 class="heading">moxie-*-elf</h3>
  <p>The moxie processor.
  </p>
  <hr />
! <a name="msp430-x-elf"></a><a name="msp430-*-elf*"></a>
! <h3 class="heading">msp430-*-elf*</h3>
  <p>TI MSP430 processor.
  This configuration is intended for embedded systems.
  </p>
! <p>&lsquo;<samp>msp430-*-elf</samp>&rsquo; is the standard configuration with most GCC
  features enabled by default.
  </p>
! <p>&lsquo;<samp>msp430-*-elfbare</samp>&rsquo; is tuned for a bare-metal environment, and disables
  features related to shared libraries and other functionality not used for
  this device.  This reduces code and data usage of the GCC libraries, resulting
  in a minimal run-time environment by default.
  </p>
  <p>Features disabled by default include:
! </p><ul>
! <li> transactional memory
! </li><li> __cxa_atexit
  </li></ul>
  
  <hr />
! <a name="nds32le-x-elf"></a><a name="nds32le-*-elf"></a>
! <h3 class="heading">nds32le-*-elf</h3>
  <p>Andes NDS32 target in little endian mode.
  </p>
  <hr />
! <a name="nds32be-x-elf"></a><a name="nds32be-*-elf"></a>
! <h3 class="heading">nds32be-*-elf</h3>
  <p>Andes NDS32 target in big endian mode.
  </p>
  <hr />
! <a name="nvptx-x-none"></a><a name="nvptx-*-none"></a>
! <h3 class="heading">nvptx-*-none</h3>
  <p>Nvidia PTX target.
  </p>
  <p>Instead of GNU binutils, you will need to install
! <a href="https://github.com/SourceryTools/nvptx-tools">nvptx-tools</a>.
  Tell GCC where to find it:
! <samp>--with-build-time-tools=[install-nvptx-tools]/nvptx-none/bin</samp>.
  </p>
  <p>You will need newlib 4.3.0 or later.  It can be
  automatically built together with GCC.  For this, add a symbolic link
! to nvptx-newlib&rsquo;s <samp>newlib</samp> directory to the directory containing
  the GCC sources.
  </p>
! <p>Use the <samp>--disable-sjlj-exceptions</samp> and
! <samp>--enable-newlib-io-long-long</samp> options when configuring.
  </p>
! <p>The <samp>--with-arch</samp> option may be specified to override the
! default value for the <samp>-march</samp> option, and to also build
  corresponding target libraries.
! The default is <samp>--with-arch=sm_52</samp>.
  </p>
! <p>For example, if <samp>--with-arch=sm_70</samp> is specified,
! code generation defaults to <samp>-march=sm_70</samp> and
  corresponding target libraries are built, in addition to those
! mandated by <samp>--with-multilib-list</samp>, if any,
  see
! <a href="configure.html#with-multilib-list"><samp>--with-multilib-list</samp></a>.
  </p>
  <hr />
! <a name="or1k-x-elf"></a><a name="or1k-*-elf"></a>
! <h3 class="heading">or1k-*-elf</h3>
  <p>The OpenRISC 1000 32-bit processor with delay slots.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="or1k-x-linux"></a><a name="or1k-*-linux"></a>
! <h3 class="heading">or1k-*-linux</h3>
  <p>The OpenRISC 1000 32-bit processor with delay slots.
  </p>
  <hr />
! <a name="powerpc-x-x"></a><a name="powerpc-*-*"></a>
! <h3 class="heading">powerpc-*-*</h3>
! <p>You can specify a default version for the <samp>-mcpu=<var>cpu_type</var></samp>
! switch by using the configure option <samp>--with-cpu-<var>cpu_type</var></samp>.
  </p>
  <p>You will need GNU binutils 2.20 or newer.
  </p>
  <hr />
! <a name="powerpc-x-darwin"></a><a name="powerpc-*-darwin*"></a>
! <h3 class="heading">powerpc-*-darwin*</h3>
  <p>PowerPC running Darwin (Mac OS X kernel).
  </p>
  <p>Pre-installed versions of Mac OS X may not include any developer tools,
  meaning that you will not be able to build GCC from source.  Tool
  binaries are available at
! <a href="https://opensource.apple.com">https://opensource.apple.com</a>.
  </p>
  <p>This version of GCC requires at least cctools-590.36.  The
  cctools-590.36 package referenced from
! <a href="https://gcc.gnu.org/ml/gcc/2006-03/msg00507.html">https://gcc.gnu.org/ml/gcc/2006-03/msg00507.html</a> will not work
  on systems older than 10.3.9 (aka darwin7.9.0).
  </p>
  <hr />
! <a name="powerpc-x-elf"></a><a name="powerpc-*-elf"></a>
! <h3 class="heading">powerpc-*-elf</h3>
  <p>PowerPC system in big endian mode, running System V.4.
  </p>
  <hr />
! <a name="powerpc-x-linux-gnu"></a><a name="powerpc*-*-linux-gnu*"></a>
! <h3 class="heading">powerpc*-*-linux-gnu*</h3>
  <p>PowerPC system in big endian mode running Linux.
  </p>
  <hr />
! <a name="powerpc-x-netbsd"></a><a name="powerpc-*-netbsd*"></a>
! <h3 class="heading">powerpc-*-netbsd*</h3>
  <p>PowerPC system in big endian mode running NetBSD.
  </p>
  <hr />
! <a name="powerpc-x-eabisim"></a><a name="powerpc-*-eabisim"></a>
! <h3 class="heading">powerpc-*-eabisim</h3>
  <p>Embedded PowerPC system in big endian mode for use in running under the
  PSIM simulator.
  </p>
  <hr />
! <a name="powerpc-x-eabi"></a><a name="powerpc-*-eabi"></a>
! <h3 class="heading">powerpc-*-eabi</h3>
  <p>Embedded PowerPC system in big endian mode.
  </p>
  <hr />
! <a name="powerpcle-x-elf"></a><a name="powerpcle-*-elf"></a>
! <h3 class="heading">powerpcle-*-elf</h3>
  <p>PowerPC system in little endian mode, running System V.4.
  </p>
  <hr />
! <a name="powerpcle-x-eabisim"></a><a name="powerpcle-*-eabisim"></a>
! <h3 class="heading">powerpcle-*-eabisim</h3>
  <p>Embedded PowerPC system in little endian mode for use in running under
  the PSIM simulator.
  </p>
  <hr />
! <a name="powerpcle-x-eabi"></a><a name="powerpcle-*-eabi"></a>
! <h3 class="heading">powerpcle-*-eabi</h3>
  <p>Embedded PowerPC system in little endian mode.
  </p>
  <hr />
! <a name="rl78-x-elf"></a><a name="rl78-*-elf"></a>
! <h3 class="heading">rl78-*-elf</h3>
  <p>The Renesas RL78 processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="riscv32-x-elf"></a><a name="riscv32-*-elf"></a>
! <h3 class="heading">riscv32-*-elf</h3>
  <p>The RISC-V RV32 instruction set.
  This configuration is intended for embedded systems.
! This (and all other RISC-V) targets require the binutils 2.30 release.
  </p>
  <hr />
! <a name="riscv32-x-linux"></a><a name="riscv32-*-linux"></a>
! <h3 class="heading">riscv32-*-linux</h3>
  <p>The RISC-V RV32 instruction set running GNU/Linux.
! This (and all other RISC-V) targets require the binutils 2.30 release.
  </p>
  <hr />
! <a name="riscv64-x-elf"></a><a name="riscv64-*-elf"></a>
! <h3 class="heading">riscv64-*-elf</h3>
  <p>The RISC-V RV64 instruction set.
  This configuration is intended for embedded systems.
! This (and all other RISC-V) targets require the binutils 2.30 release.
  </p>
  <hr />
! <a name="riscv64-x-linux"></a><a name="riscv64-*-linux"></a>
! <h3 class="heading">riscv64-*-linux</h3>
  <p>The RISC-V RV64 instruction set running GNU/Linux.
! This (and all other RISC-V) targets require the binutils 2.30 release.
  </p>
  <hr />
! <a name="rx-x-elf"></a><a name="rx-*-elf"></a>
! <h3 class="heading">rx-*-elf</h3>
  <p>The Renesas RX processor.
  </p>
  <hr />
! <a name="s390-x-linux"></a><a name="s390-*-linux*"></a>
! <h3 class="heading">s390-*-linux*</h3>
  <p>S/390 system running GNU/Linux for S/390.
  </p>
  <hr />
! <a name="s390x-x-linux"></a><a name="s390x-*-linux*"></a>
! <h3 class="heading">s390x-*-linux*</h3>
  <p>zSeries system (64-bit) running GNU/Linux for zSeries.
  </p>
  <hr />
! <a name="s390x-ibm-tpf"></a><a name="s390x-ibm-tpf*"></a>
! <h3 class="heading">s390x-ibm-tpf*</h3>
  <p>zSeries system (64-bit) running TPF.  This platform is
  supported as cross-compilation target only.
  </p>
  <hr />
! <a name="x-x-solaris2"></a><a name="g_t*-*-solaris2*"></a>
! <h3 class="heading">*-*-solaris2*</h3>
  <p>Support for Solaris 11.3 and earlier has been removed in GCC 15.
  Support for Solaris 10 has been removed in GCC 10.  Support for Solaris
  9 has been removed in GCC 5.  Support for Solaris 8 has been removed in
--- 669,871 ----
  </p>
  <p>The libstdc++ atomic locking routines for MIPS targets requires MIPS II
  and later.  A patch went in just after the GCC 3.3 release to
! make &lsquo;<samp class="samp">mips*-*-*</samp>&rsquo; use the generic implementation instead.  You can also
! configure for &lsquo;<samp class="samp">mipsel-elf</samp>&rsquo; as a workaround.  The
! &lsquo;<samp class="samp">mips*-*-linux*</samp>&rsquo; target continues to use the MIPS II routines.  More
  work on this is expected in future releases.
  </p>
  
! <p>The built-in <code class="code">__sync_*</code> functions are available on MIPS II and
! later systems and others that support the &lsquo;<samp class="samp">ll</samp>&rsquo;, &lsquo;<samp class="samp">sc</samp>&rsquo; and
! &lsquo;<samp class="samp">sync</samp>&rsquo; instructions.  This can be overridden by passing
! <samp class="option">--with-llsc</samp> or <samp class="option">--without-llsc</samp> when configuring GCC.
  Since the Linux kernel emulates these instructions if they are
! missing, the default for &lsquo;<samp class="samp">mips*-*-linux*</samp>&rsquo; targets is
! <samp class="option">--with-llsc</samp>.  The <samp class="option">--with-llsc</samp> and
! <samp class="option">--without-llsc</samp> configure options may be overridden at compile
! time by passing the <samp class="option">-mllsc</samp> or <samp class="option">-mno-llsc</samp> options to
  the compiler.
  </p>
  <p>MIPS systems check for division by zero (unless
! <samp class="option">-mno-check-zero-division</samp> is passed to the compiler) by
  generating either a conditional trap or a break instruction.  Using
  trap results in smaller code, but is only supported on MIPS II and
  later.  Also, some versions of the Linux kernel have a bug that
! prevents trap from generating the proper signal (<code class="code">SIGFPE</code>).  To enable
! the use of break, use the <samp class="option">--with-divide=breaks</samp>
! <code class="command">configure</code> option when configuring GCC.  The default is to
  use traps on systems that support them.
  </p>
  <hr />
! <a class="anchor" id="moxie-x-elf"></a><h3 class="heading" id="moxie-*-elf"><span>moxie-*-elf<a class="copiable-link" href="#moxie-*-elf"> &para;</a></span></h3>
  <p>The moxie processor.
  </p>
  <hr />
! <a class="anchor" id="msp430-x-elf"></a><h3 class="heading" id="msp430-*-elf*"><span>msp430-*-elf*<a class="copiable-link" href="#msp430-*-elf*"> &para;</a></span></h3>
  <p>TI MSP430 processor.
  This configuration is intended for embedded systems.
  </p>
! <p>&lsquo;<samp class="samp">msp430-*-elf</samp>&rsquo; is the standard configuration with most GCC
  features enabled by default.
  </p>
! <p>&lsquo;<samp class="samp">msp430-*-elfbare</samp>&rsquo; is tuned for a bare-metal environment, and disables
  features related to shared libraries and other functionality not used for
  this device.  This reduces code and data usage of the GCC libraries, resulting
  in a minimal run-time environment by default.
  </p>
  <p>Features disabled by default include:
! </p><ul class="itemize mark-bullet">
! <li>transactional memory
! </li><li>__cxa_atexit
  </li></ul>
  
  <hr />
! <a class="anchor" id="nds32le-x-elf"></a><h3 class="heading" id="nds32le-*-elf"><span>nds32le-*-elf<a class="copiable-link" href="#nds32le-*-elf"> &para;</a></span></h3>
  <p>Andes NDS32 target in little endian mode.
  </p>
  <hr />
! <a class="anchor" id="nds32be-x-elf"></a><h3 class="heading" id="nds32be-*-elf"><span>nds32be-*-elf<a class="copiable-link" href="#nds32be-*-elf"> &para;</a></span></h3>
  <p>Andes NDS32 target in big endian mode.
  </p>
  <hr />
! <a class="anchor" id="nvptx-x-none"></a><h3 class="heading" id="nvptx-*-none"><span>nvptx-*-none<a class="copiable-link" href="#nvptx-*-none"> &para;</a></span></h3>
  <p>Nvidia PTX target.
  </p>
  <p>Instead of GNU binutils, you will need to install
! <a class="uref" href="https://github.com/SourceryTools/nvptx-tools">nvptx-tools</a>.
  Tell GCC where to find it:
! <samp class="option">--with-build-time-tools=[install-nvptx-tools]/nvptx-none/bin</samp>.
  </p>
  <p>You will need newlib 4.3.0 or later.  It can be
  automatically built together with GCC.  For this, add a symbolic link
! to nvptx-newlib&rsquo;s <samp class="file">newlib</samp> directory to the directory containing
  the GCC sources.
  </p>
! <p>Use the <samp class="option">--disable-sjlj-exceptions</samp> and
! <samp class="option">--enable-newlib-io-long-long</samp> options when configuring.
  </p>
! <p>The <samp class="option">--with-arch</samp> option may be specified to override the
! default value for the <samp class="option">-march</samp> option, and to also build
  corresponding target libraries.
! The default is <samp class="option">--with-arch=sm_52</samp>.
  </p>
! <p>For example, if <samp class="option">--with-arch=sm_70</samp> is specified,
! code generation defaults to <samp class="option">-march=sm_70</samp> and
  corresponding target libraries are built, in addition to those
! mandated by <samp class="option">--with-multilib-list</samp>, if any,
  see
! <a class="uref" href="configure.html#with-multilib-list"><samp class="option">--with-multilib-list</samp></a>.
  </p>
  <hr />
! <a class="anchor" id="or1k-x-elf"></a><h3 class="heading" id="or1k-*-elf"><span>or1k-*-elf<a class="copiable-link" href="#or1k-*-elf"> &para;</a></span></h3>
  <p>The OpenRISC 1000 32-bit processor with delay slots.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a class="anchor" id="or1k-x-linux"></a><h3 class="heading" id="or1k-*-linux"><span>or1k-*-linux<a class="copiable-link" href="#or1k-*-linux"> &para;</a></span></h3>
  <p>The OpenRISC 1000 32-bit processor with delay slots.
  </p>
  <hr />
! <a class="anchor" id="powerpc-x-x"></a><h3 class="heading" id="powerpc-*-*"><span>powerpc-*-*<a class="copiable-link" href="#powerpc-*-*"> &para;</a></span></h3>
! <p>You can specify a default version for the <samp class="option">-mcpu=<var class="var">cpu_type</var></samp>
! switch by using the configure option <samp class="option">--with-cpu-<var class="var">cpu_type</var></samp>.
  </p>
  <p>You will need GNU binutils 2.20 or newer.
  </p>
  <hr />
! <a class="anchor" id="powerpc-x-darwin"></a><h3 class="heading" id="powerpc-*-darwin*"><span>powerpc-*-darwin*<a class="copiable-link" href="#powerpc-*-darwin*"> &para;</a></span></h3>
  <p>PowerPC running Darwin (Mac OS X kernel).
  </p>
  <p>Pre-installed versions of Mac OS X may not include any developer tools,
  meaning that you will not be able to build GCC from source.  Tool
  binaries are available at
! <a class="uref" href="https://opensource.apple.com">https://opensource.apple.com</a>.
  </p>
  <p>This version of GCC requires at least cctools-590.36.  The
  cctools-590.36 package referenced from
! <a class="uref" href="https://gcc.gnu.org/ml/gcc/2006-03/msg00507.html">https://gcc.gnu.org/ml/gcc/2006-03/msg00507.html</a> will not work
  on systems older than 10.3.9 (aka darwin7.9.0).
  </p>
  <hr />
! <a class="anchor" id="powerpc-x-elf"></a><h3 class="heading" id="powerpc-*-elf"><span>powerpc-*-elf<a class="copiable-link" href="#powerpc-*-elf"> &para;</a></span></h3>
  <p>PowerPC system in big endian mode, running System V.4.
  </p>
  <hr />
! <a class="anchor" id="powerpc-x-linux-gnu"></a><h3 class="heading" id="powerpc*-*-linux-gnu*"><span>powerpc*-*-linux-gnu*<a class="copiable-link" href="#powerpc*-*-linux-gnu*"> &para;</a></span></h3>
  <p>PowerPC system in big endian mode running Linux.
  </p>
  <hr />
! <a class="anchor" id="powerpc-x-netbsd"></a><h3 class="heading" id="powerpc-*-netbsd*"><span>powerpc-*-netbsd*<a class="copiable-link" href="#powerpc-*-netbsd*"> &para;</a></span></h3>
  <p>PowerPC system in big endian mode running NetBSD.
  </p>
  <hr />
! <a class="anchor" id="powerpc-x-eabisim"></a><h3 class="heading" id="powerpc-*-eabisim"><span>powerpc-*-eabisim<a class="copiable-link" href="#powerpc-*-eabisim"> &para;</a></span></h3>
  <p>Embedded PowerPC system in big endian mode for use in running under the
  PSIM simulator.
  </p>
  <hr />
! <a class="anchor" id="powerpc-x-eabi"></a><h3 class="heading" id="powerpc-*-eabi"><span>powerpc-*-eabi<a class="copiable-link" href="#powerpc-*-eabi"> &para;</a></span></h3>
  <p>Embedded PowerPC system in big endian mode.
  </p>
  <hr />
! <a class="anchor" id="powerpcle-x-elf"></a><h3 class="heading" id="powerpcle-*-elf"><span>powerpcle-*-elf<a class="copiable-link" href="#powerpcle-*-elf"> &para;</a></span></h3>
  <p>PowerPC system in little endian mode, running System V.4.
  </p>
  <hr />
! <a class="anchor" id="powerpcle-x-eabisim"></a><h3 class="heading" id="powerpcle-*-eabisim"><span>powerpcle-*-eabisim<a class="copiable-link" href="#powerpcle-*-eabisim"> &para;</a></span></h3>
  <p>Embedded PowerPC system in little endian mode for use in running under
  the PSIM simulator.
  </p>
  <hr />
! <a class="anchor" id="powerpcle-x-eabi"></a><h3 class="heading" id="powerpcle-*-eabi"><span>powerpcle-*-eabi<a class="copiable-link" href="#powerpcle-*-eabi"> &para;</a></span></h3>
  <p>Embedded PowerPC system in little endian mode.
  </p>
  <hr />
! <a class="anchor" id="rl78-x-elf"></a><h3 class="heading" id="rl78-*-elf"><span>rl78-*-elf<a class="copiable-link" href="#rl78-*-elf"> &para;</a></span></h3>
  <p>The Renesas RL78 processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a class="anchor" id="riscv32-x-elf"></a><h3 class="heading" id="riscv32-*-elf"><span>riscv32-*-elf<a class="copiable-link" href="#riscv32-*-elf"> &para;</a></span></h3>
  <p>The RISC-V RV32 instruction set.
  This configuration is intended for embedded systems.
! This (and all other RISC-V) targets require the binutils 2.40 release.
  </p>
  <hr />
! <a class="anchor" id="riscv32-x-linux"></a><h3 class="heading" id="riscv32-*-linux"><span>riscv32-*-linux<a class="copiable-link" href="#riscv32-*-linux"> &para;</a></span></h3>
  <p>The RISC-V RV32 instruction set running GNU/Linux.
! This (and all other RISC-V) targets require the binutils 2.40 release.
  </p>
  <hr />
! <a class="anchor" id="riscv64-x-elf"></a><h3 class="heading" id="riscv64-*-elf"><span>riscv64-*-elf<a class="copiable-link" href="#riscv64-*-elf"> &para;</a></span></h3>
  <p>The RISC-V RV64 instruction set.
  This configuration is intended for embedded systems.
! This (and all other RISC-V) targets require the binutils 2.40 release.
  </p>
  <hr />
! <a class="anchor" id="riscv64-x-linux"></a><h3 class="heading" id="riscv64-*-linux"><span>riscv64-*-linux<a class="copiable-link" href="#riscv64-*-linux"> &para;</a></span></h3>
  <p>The RISC-V RV64 instruction set running GNU/Linux.
! This (and all other RISC-V) targets require the binutils 2.40 release.
  </p>
  <hr />
! <a class="anchor" id="rx-x-elf"></a><h3 class="heading" id="rx-*-elf"><span>rx-*-elf<a class="copiable-link" href="#rx-*-elf"> &para;</a></span></h3>
  <p>The Renesas RX processor.
  </p>
  <hr />
! <a class="anchor" id="s390-x-linux"></a><h3 class="heading" id="s390-*-linux*"><span>s390-*-linux*<a class="copiable-link" href="#s390-*-linux*"> &para;</a></span></h3>
  <p>S/390 system running GNU/Linux for S/390.
  </p>
  <hr />
! <a class="anchor" id="s390x-x-linux"></a><h3 class="heading" id="s390x-*-linux*"><span>s390x-*-linux*<a class="copiable-link" href="#s390x-*-linux*"> &para;</a></span></h3>
  <p>zSeries system (64-bit) running GNU/Linux for zSeries.
  </p>
  <hr />
! <a class="anchor" id="s390x-ibm-tpf"></a><h3 class="heading" id="s390x-ibm-tpf*"><span>s390x-ibm-tpf*<a class="copiable-link" href="#s390x-ibm-tpf*"> &para;</a></span></h3>
  <p>zSeries system (64-bit) running TPF.  This platform is
  supported as cross-compilation target only.
  </p>
  <hr />
! <a class="anchor" id="x-x-solaris2"></a><h3 class="heading" id="g_t*-*-solaris2*"><span>*-*-solaris2*<a class="copiable-link" href="#g_t*-*-solaris2*"> &para;</a></span></h3>
  <p>Support for Solaris 11.3 and earlier has been removed in GCC 15.
  Support for Solaris 10 has been removed in GCC 10.  Support for Solaris
  9 has been removed in GCC 5.  Support for Solaris 8 has been removed in
*************** GCC 4.8.  Support for Solaris 7 has been
*** 949,1014 ****
  </p>
  <p>Solaris 11.4 provides one or more of GCC 5, 7, 9, 10, 11, 12, 13, and 14.
  </p>
! <p>You need to install the <code>system/header</code>, <code>system/linker</code>, and
! <code>developer/assembler</code> packages.
  </p>
! <p>Trying to use the compatibility tools in <samp>/usr/ucb</samp>, from the
! <code>compatibility/ucb</code> package, to install GCC has been observed to
! cause trouble.  The fix is to remove <samp>/usr/ucb</samp> from your
! <code>PATH</code>.
  </p>
  <p>The build process works more smoothly with the legacy Solaris tools so,
! if you have <samp>/usr/xpg4/bin</samp> in your <code>PATH</code>, we recommend that
! you place <samp>/usr/bin</samp> before <samp>/usr/xpg4/bin</samp> for the duration
  of the build.
  </p>
  <p>We recommend the use of the Solaris assembler or the GNU assembler, in
  conjunction with the Solaris linker.
  </p>
! <p>The GNU <code>as</code> versions included in Solaris 11.4, from GNU
! binutils 2.30.1 or newer (in <samp>/usr/bin/gas</samp> and
! <samp>/usr/gnu/bin/as</samp>), are known to work.  The version from GNU
  binutils 2.44 is known to work as well.  Recent versions of the Solaris
! assembler in <samp>/usr/bin/as</samp> work almost as well, though.  To use GNU
! <code>as</code>, configure with the options <samp>--with-gnu-as
  --with-as=/usr/gnu/bin/as</samp>.
  </p>
  <p>For linking, the Solaris linker is preferred.  If you want to use the
  GNU linker instead, the version in Solaris 11.4, from GNU binutils
! 2.30.1 or newer (in <samp>/usr/gnu/bin/ld</samp> and <samp>/usr/bin/gld</samp>),
  works.  However, it
  generally lacks platform specific features, so better stay with Solaris
! <code>ld</code>.  When using the version from GNU binutils 2.44, there&rsquo;s
! an important caveat: binutils <em>must</em> be configured with
! <code>CONFIG_SHELL=/bin/bash</code>, otherwise the linker&rsquo;s built-in linker
  scripts get corrupted on x86.  To use the LTO linker plugin
! (<samp>-fuse-linker-plugin</samp>) with GNU <code>ld</code>, GNU binutils
! <em>must</em> be configured with <samp>--enable-largefile</samp>.  To use
! Solaris <code>ld</code>, we recommend to configure with
! <samp>--without-gnu-ld --with-ld=/usr/bin/ld</samp> to guarantee the
! right linker is found irrespective of the user&rsquo;s <code>PATH</code>.
  </p>
  <p>Note that your mileage may vary if you use a combination of the GNU
! tools and the Solaris tools: while the combination GNU <code>as</code> and
! Solaris <code>ld</code> works well, the reverse combination Solaris
! <code>as</code> with GNU <code>ld</code> may fail to build or cause memory
  corruption at runtime in some cases for C++ programs.
  </p>
! <p>To enable symbol versioning in &lsquo;<samp>libstdc++</samp>&rsquo; and other runtime
  libraries with the Solaris linker, you need to have any version of GNU
! <code>c++filt</code>, which is part of GNU binutils.  Symbol versioning
  will be disabled if no appropriate version is found.  Solaris
! <code>c++filt</code> from the Solaris Studio compilers does <em>not</em>
  work.
  </p>
  <p>In order to build the GNU Ada compiler, GNAT, a working GNAT is needed.
  Since Solaris 11.4 SRU 39, GNAT 11, 12, 13 or 14 is bundled in the
! <code>developer/gcc/gcc-gnat</code> package.
  </p>
! <p>In order to build the GNU D compiler, GDC, a working &lsquo;<samp>libphobos</samp>&rsquo; is
  needed.  That library wasn&rsquo;t built by default in GCC 9&ndash;11 on SPARC, or
  on x86 when the Solaris assembler is used, but can be enabled by
! configuring with <samp>--enable-libphobos</samp>.  Also, GDC 9.4.0 is
  required on x86, while GDC 9.3.0 is known to work on SPARC.
  </p>
  <p>The versions of the GNU Multiple Precision Library (GMP), the MPFR
--- 873,938 ----
  </p>
  <p>Solaris 11.4 provides one or more of GCC 5, 7, 9, 10, 11, 12, 13, and 14.
  </p>
! <p>You need to install the <code class="code">system/header</code>, <code class="code">system/linker</code>, and
! <code class="code">developer/assembler</code> packages.
  </p>
! <p>Trying to use the compatibility tools in <samp class="file">/usr/ucb</samp>, from the
! <code class="code">compatibility/ucb</code> package, to install GCC has been observed to
! cause trouble.  The fix is to remove <samp class="file">/usr/ucb</samp> from your
! <code class="env">PATH</code>.
  </p>
  <p>The build process works more smoothly with the legacy Solaris tools so,
! if you have <samp class="file">/usr/xpg4/bin</samp> in your <code class="env">PATH</code>, we recommend that
! you place <samp class="file">/usr/bin</samp> before <samp class="file">/usr/xpg4/bin</samp> for the duration
  of the build.
  </p>
  <p>We recommend the use of the Solaris assembler or the GNU assembler, in
  conjunction with the Solaris linker.
  </p>
! <p>The GNU <code class="command">as</code> versions included in Solaris 11.4, from GNU
! binutils 2.30.1 or newer (in <samp class="file">/usr/bin/gas</samp> and
! <samp class="file">/usr/gnu/bin/as</samp>), are known to work.  The version from GNU
  binutils 2.44 is known to work as well.  Recent versions of the Solaris
! assembler in <samp class="file">/usr/bin/as</samp> work almost as well, though.  To use GNU
! <code class="command">as</code>, configure with the options <samp class="option">--with-gnu-as
  --with-as=/usr/gnu/bin/as</samp>.
  </p>
  <p>For linking, the Solaris linker is preferred.  If you want to use the
  GNU linker instead, the version in Solaris 11.4, from GNU binutils
! 2.30.1 or newer (in <samp class="file">/usr/gnu/bin/ld</samp> and <samp class="file">/usr/bin/gld</samp>),
  works.  However, it
  generally lacks platform specific features, so better stay with Solaris
! <code class="command">ld</code>.  When using the version from GNU binutils 2.44, there&rsquo;s
! an important caveat: binutils <em class="emph">must</em> be configured with
! <code class="code">CONFIG_SHELL=/bin/bash</code>, otherwise the linker&rsquo;s built-in linker
  scripts get corrupted on x86.  To use the LTO linker plugin
! (<samp class="option">-fuse-linker-plugin</samp>) with GNU <code class="command">ld</code>, GNU binutils
! <em class="emph">must</em> be configured with <samp class="option">--enable-largefile</samp>.  To use
! Solaris <code class="command">ld</code>, we recommend to configure with
! <samp class="option">--without-gnu-ld --with-ld=/usr/bin/ld</samp> to guarantee the
! right linker is found irrespective of the user&rsquo;s <code class="env">PATH</code>.
  </p>
  <p>Note that your mileage may vary if you use a combination of the GNU
! tools and the Solaris tools: while the combination GNU <code class="command">as</code> and
! Solaris <code class="command">ld</code> works well, the reverse combination Solaris
! <code class="command">as</code> with GNU <code class="command">ld</code> may fail to build or cause memory
  corruption at runtime in some cases for C++ programs.
  </p>
! <p>To enable symbol versioning in &lsquo;<samp class="samp">libstdc++</samp>&rsquo; and other runtime
  libraries with the Solaris linker, you need to have any version of GNU
! <code class="command">c++filt</code>, which is part of GNU binutils.  Symbol versioning
  will be disabled if no appropriate version is found.  Solaris
! <code class="command">c++filt</code> from the Solaris Studio compilers does <em class="emph">not</em>
  work.
  </p>
  <p>In order to build the GNU Ada compiler, GNAT, a working GNAT is needed.
  Since Solaris 11.4 SRU 39, GNAT 11, 12, 13 or 14 is bundled in the
! <code class="code">developer/gcc/gcc-gnat</code> package.
  </p>
! <p>In order to build the GNU D compiler, GDC, a working &lsquo;<samp class="samp">libphobos</samp>&rsquo; is
  needed.  That library wasn&rsquo;t built by default in GCC 9&ndash;11 on SPARC, or
  on x86 when the Solaris assembler is used, but can be enabled by
! configuring with <samp class="option">--enable-libphobos</samp>.  Also, GDC 9.4.0 is
  required on x86, while GDC 9.3.0 is known to work on SPARC.
  </p>
  <p>The versions of the GNU Multiple Precision Library (GMP), the MPFR
*************** library and the MPC library bundled with
*** 1016,1023 ****
  recent enough to match GCC&rsquo;s requirements.
  </p>
  <hr />
! <a name="sparc-x-x"></a><a name="sparc*-*-*"></a>
! <h3 class="heading">sparc*-*-*</h3>
  <p>This section contains general configuration information for all
  SPARC-based platforms.  In addition to reading this section, please
  read all other sections that match your target.
--- 940,946 ----
  recent enough to match GCC&rsquo;s requirements.
  </p>
  <hr />
! <a class="anchor" id="sparc-x-x"></a><h3 class="heading" id="sparc*-*-*"><span>sparc*-*-*<a class="copiable-link" href="#sparc*-*-*"> &para;</a></span></h3>
  <p>This section contains general configuration information for all
  SPARC-based platforms.  In addition to reading this section, please
  read all other sections that match your target.
*************** read all other sections that match your
*** 1026,1036 ****
  library and the MPC library are known to be miscompiled by earlier
  versions of GCC on these platforms.  We therefore recommend the use
  of the exact versions of these libraries listed as minimal versions
! in <a href="prerequisites.html">the prerequisites</a>.
  </p>
  <hr />
! <a name="sparc-sun-solaris2"></a><a name="sparc-sun-solaris2*"></a>
! <h3 class="heading">sparc-sun-solaris2*</h3>
  <p>When GCC is configured to use GNU binutils 2.14 or later, the binaries
  produced are smaller than the ones produced using Solaris native tools;
  this difference is quite significant for binaries containing debugging
--- 949,958 ----
  library and the MPC library are known to be miscompiled by earlier
  versions of GCC on these platforms.  We therefore recommend the use
  of the exact versions of these libraries listed as minimal versions
! in <a class="uref" href="prerequisites.html">the prerequisites</a>.
  </p>
  <hr />
! <a class="anchor" id="sparc-sun-solaris2"></a><h3 class="heading" id="sparc-sun-solaris2*"><span>sparc-sun-solaris2*<a class="copiable-link" href="#sparc-sun-solaris2*"> &para;</a></span></h3>
  <p>When GCC is configured to use GNU binutils 2.14 or later, the binaries
  produced are smaller than the ones produced using Solaris native tools;
  this difference is quite significant for binaries containing debugging
*************** information.
*** 1038,1099 ****
  </p>
  <p>Starting with Solaris 7, the operating system is capable of executing
  64-bit SPARC V9 binaries.  GCC 3.1 and later properly supports
! this; the <samp>-m64</samp> option enables 64-bit code generation.
  </p>
  <p>When configuring the GNU Multiple Precision Library (GMP), the MPFR
  library or the MPC library on Solaris, the canonical target triplet must
! be specified as the <code>build</code> parameter on the <code>configure</code>
  line.  This target triplet can be obtained by invoking
! <code>./config.guess</code> in the toplevel source directory of GCC (and
  not that of GMP or MPFR or MPC).  For example:
  </p>
! <div class="smallexample">
! <pre class="smallexample">% <var>srcdir</var>/configure --build=sparc-sun-solaris2.11 --prefix=<var>dirname</var>
  </pre></div>
  
  <hr />
! <a name="sparc-x-linux"></a><a name="sparc-*-linux*"></a>
! <h3 class="heading">sparc-*-linux*</h3>
  
  <hr />
! <a name="sparc64-x-solaris2"></a><a name="sparc64-*-solaris2*"></a>
! <h3 class="heading">sparc64-*-solaris2*</h3>
! <p>This is a synonym for &lsquo;<samp>sparcv9-*-solaris2*</samp>&rsquo;.
  </p>
  <hr />
! <a name="sparcv9-x-solaris2"></a><a name="sparcv9-*-solaris2*"></a>
! <h3 class="heading">sparcv9-*-solaris2*</h3>
  
  <p>When configuring a 64-bit-default GCC on Solaris/SPARC, you must use a
  build compiler that generates 64-bit code, either by default or by
! specifying &lsquo;<samp>CC='gcc -m64' CXX='g++ -m64' GDC='gdc -m64'</samp>&rsquo; to <code>configure</code>.
! Additionally, you <em>must</em> pass <samp>--build=sparcv9-sun-solaris2.11</samp>
! or <samp>--build=sparc64-sun-solaris2.11</samp> because <samp>config.guess</samp>
  misdetects this situation, which can cause build failures.
  </p>
  <p>When configuring the GNU Multiple Precision Library (GMP), the MPFR
  library or the MPC library, the canonical target triplet must be specified
! as the <code>build</code> parameter on the <code>configure</code> line.  For example:
  </p>
! <div class="smallexample">
! <pre class="smallexample">% <var>srcdir</var>/configure --build=sparcv9-sun-solaris2.11 --prefix=<var>dirname</var>
  </pre></div>
  
  <hr />
! <a name="c6x-x-x"></a><a name="c6x-*-*"></a>
! <h3 class="heading">c6x-*-*</h3>
  <p>The C6X family of processors. This port requires binutils 2.22 or newer.
  </p>
  <hr />
! <a name="visium-x-elf"></a><a name="visium-*-elf"></a>
! <h3 class="heading">visium-*-elf</h3>
  <p>CDS VISIUMcore processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="x-x-vxworks"></a><a name="g_t*-*-vxworks*"></a>
! <h3 class="heading">*-*-vxworks*</h3>
! <p>Support for VxWorks is in flux.  At present GCC supports <em>only</em> the
  very recent VxWorks 5.5 (aka Tornado 2.2) release, and only on PowerPC.
  We welcome patches for other architectures supported by VxWorks 5.5.
  Support for VxWorks AE would also be welcome; we believe this is merely
--- 960,1015 ----
  </p>
  <p>Starting with Solaris 7, the operating system is capable of executing
  64-bit SPARC V9 binaries.  GCC 3.1 and later properly supports
! this; the <samp class="option">-m64</samp> option enables 64-bit code generation.
  </p>
  <p>When configuring the GNU Multiple Precision Library (GMP), the MPFR
  library or the MPC library on Solaris, the canonical target triplet must
! be specified as the <code class="command">build</code> parameter on the <code class="command">configure</code>
  line.  This target triplet can be obtained by invoking
! <code class="command">./config.guess</code> in the toplevel source directory of GCC (and
  not that of GMP or MPFR or MPC).  For example:
  </p>
! <div class="example smallexample">
! <pre class="example-preformatted">% <var class="var">srcdir</var>/configure --build=sparc-sun-solaris2.11 --prefix=<var class="var">dirname</var>
  </pre></div>
  
  <hr />
! <a class="anchor" id="sparc-x-linux"></a><h3 class="heading" id="sparc-*-linux*"><span>sparc-*-linux*<a class="copiable-link" href="#sparc-*-linux*"> &para;</a></span></h3>
  
  <hr />
! <a class="anchor" id="sparc64-x-solaris2"></a><h3 class="heading" id="sparc64-*-solaris2*"><span>sparc64-*-solaris2*<a class="copiable-link" href="#sparc64-*-solaris2*"> &para;</a></span></h3>
! <p>This is a synonym for &lsquo;<samp class="samp">sparcv9-*-solaris2*</samp>&rsquo;.
  </p>
  <hr />
! <a class="anchor" id="sparcv9-x-solaris2"></a><h3 class="heading" id="sparcv9-*-solaris2*"><span>sparcv9-*-solaris2*<a class="copiable-link" href="#sparcv9-*-solaris2*"> &para;</a></span></h3>
  
  <p>When configuring a 64-bit-default GCC on Solaris/SPARC, you must use a
  build compiler that generates 64-bit code, either by default or by
! specifying &lsquo;<samp class="samp">CC='gcc -m64' CXX='g++ -m64' GDC='gdc -m64'</samp>&rsquo; to <code class="command">configure</code>.
! Additionally, you <em class="emph">must</em> pass <samp class="option">--build=sparcv9-sun-solaris2.11</samp>
! or <samp class="option">--build=sparc64-sun-solaris2.11</samp> because <samp class="file">config.guess</samp>
  misdetects this situation, which can cause build failures.
  </p>
  <p>When configuring the GNU Multiple Precision Library (GMP), the MPFR
  library or the MPC library, the canonical target triplet must be specified
! as the <code class="command">build</code> parameter on the <code class="command">configure</code> line.  For example:
  </p>
! <div class="example smallexample">
! <pre class="example-preformatted">% <var class="var">srcdir</var>/configure --build=sparcv9-sun-solaris2.11 --prefix=<var class="var">dirname</var>
  </pre></div>
  
  <hr />
! <a class="anchor" id="c6x-x-x"></a><h3 class="heading" id="c6x-*-*"><span>c6x-*-*<a class="copiable-link" href="#c6x-*-*"> &para;</a></span></h3>
  <p>The C6X family of processors. This port requires binutils 2.22 or newer.
  </p>
  <hr />
! <a class="anchor" id="visium-x-elf"></a><h3 class="heading" id="visium-*-elf"><span>visium-*-elf<a class="copiable-link" href="#visium-*-elf"> &para;</a></span></h3>
  <p>CDS VISIUMcore processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a class="anchor" id="x-x-vxworks"></a><h3 class="heading" id="g_t*-*-vxworks*"><span>*-*-vxworks*<a class="copiable-link" href="#g_t*-*-vxworks*"> &para;</a></span></h3>
! <p>Support for VxWorks is in flux.  At present GCC supports <em class="emph">only</em> the
  very recent VxWorks 5.5 (aka Tornado 2.2) release, and only on PowerPC.
  We welcome patches for other architectures supported by VxWorks 5.5.
  Support for VxWorks AE would also be welcome; we believe this is merely
*************** not interested in supporting older, a.ou
*** 1102,1216 ****
  VxWorks in GCC 3.
  </p>
  <p>VxWorks comes with an older version of GCC installed in
! <samp><var>$WIND_BASE</var>/host</samp>; we recommend you do not overwrite it.
! Choose an installation <var>prefix</var> entirely outside <var>$WIND_BASE</var>.
! Before running <code>configure</code>, create the directories <samp><var>prefix</var></samp>
! and <samp><var>prefix</var>/bin</samp>.  Link or copy the appropriate assembler,
! linker, etc. into <samp><var>prefix</var>/bin</samp>, and set your <var>PATH</var> to
! include that directory while running both <code>configure</code> and
! <code>make</code>.
  </p>
! <p>You must give <code>configure</code> the
! <samp>--with-headers=<var>$WIND_BASE</var>/target/h</samp> switch so that it can
  find the VxWorks system headers.  Since VxWorks is a cross compilation
! target only, you must also specify <samp>--target=<var>target</var></samp>.
! <code>configure</code> will attempt to create the directory
! <samp><var>prefix</var>/<var>target</var>/sys-include</samp> and copy files into it;
! make sure the user running <code>configure</code> has sufficient privilege
  to do so.
  </p>
  <p>GCC&rsquo;s exception handling runtime requires a special &ldquo;configlette&rdquo;
! module, <samp>contrib/gthr_supp_vxw_5x.c</samp>.  Follow the instructions in
  that file to add the module to your kernel build.  (Future versions of
  VxWorks will incorporate this module.)
  </p>
  <hr />
! <a name="x86-64-x-x"></a><a name="x86_005f64-*-*_002c-amd64-*-*"></a>
! <h3 class="heading">x86_64-*-*, amd64-*-*</h3>
  <p>GCC supports the x86-64 architecture implemented by the AMD64 processor
  (amd64-*-* is an alias for x86_64-*-*) on GNU/Linux, FreeBSD and NetBSD.
  On GNU/Linux the default is a bi-arch compiler which is able to generate
! both 64-bit x86-64 and 32-bit x86 code (via the <samp>-m32</samp> switch).
  </p>
  <hr />
! <a name="x86-64-x-solaris2"></a><a name="x86_005f64-*-solaris2*"></a>
! <h3 class="heading">x86_64-*-solaris2*</h3>
  <p>Unlike other systems, without special options a
  bi-arch compiler is built which generates 32-bit code by default, but
! can generate 64-bit x86-64 code with the <samp>-m64</samp> switch.  Since
  GCC 4.7, there is also a configuration that defaults to 64-bit code, but
! can generate 32-bit code with <samp>-m32</samp>.  To configure and build
! this way, you have to provide all support libraries like <samp>libgmp</samp>
! as 64-bit code, configure with <samp>--target=x86_64-pc-solaris2.11</samp>
! and &lsquo;<samp>CC=gcc -m64</samp>&rsquo;.
  </p>
  <hr />
! <a name="xtensa-x-elf"></a><a name="xtensa*-*-elf"></a>
! <h3 class="heading">xtensa*-*-elf</h3>
  <p>This target is intended for embedded Xtensa systems using the
! &lsquo;<samp>newlib</samp>&rsquo; C library.  It uses ELF but does not support shared
  objects.  Designed-defined instructions specified via the
  Tensilica Instruction Extension (TIE) language are only supported
  through inline assembly.
  </p>
  <p>The Xtensa configuration information must be specified prior to
! building GCC.  The <samp>include/xtensa-config.h</samp> header
  file contains the configuration information.  If you created your
  own Xtensa configuration with the Xtensa Processor Generator, the
  downloaded files include a customized copy of this header file,
  which you can use to replace the default header file.
  </p>
  <hr />
! <a name="xtensa-x-linux"></a><a name="xtensa*-*-linux*"></a>
! <h3 class="heading">xtensa*-*-linux*</h3>
  <p>This target is for Xtensa systems running GNU/Linux.  It supports ELF
  shared objects and the GNU C library (glibc).  It also generates
  position-independent code (PIC) regardless of whether the
! <samp>-fpic</samp> or <samp>-fPIC</samp> options are used.  In other
  respects, this target is the same as the
! <a href="#xtensa*-*-elf">&lsquo;<samp>xtensa*-*-elf</samp>&rsquo;</a> target.
  </p>
  <hr />
! <a name="windows"></a><a name="Microsoft-Windows"></a>
! <h3 class="heading">Microsoft Windows</h3>
  
! <a name="Intel-16-bit-versions"></a>
! <h4 class="subheading">Intel 16-bit versions</h4>
  <p>The 16-bit versions of Microsoft Windows, such as Windows 3.1, are not
  supported.
  </p>
  <p>However, the 32-bit port has limited support for Microsoft
  Windows 3.11 in the Win32s environment, as a target only.  See below.
  </p>
! <a name="Intel-32-bit-versions"></a>
! <h4 class="subheading">Intel 32-bit versions</h4>
  <p>The 32-bit versions of Windows, including Windows 95, Windows NT, Windows
  XP, and Windows Vista, are supported by several different target
  platforms.  These targets differ in which Windows subsystem they target
  and which C libraries are used.
  </p>
! <ul>
! <li> Cygwin <a href="#x-x-cygwin">*-*-cygwin</a>: Cygwin provides a user-space
  Linux API emulation layer in the Win32 subsystem.
! </li><li> MinGW <a href="#x-x-mingw32">*-*-mingw32</a>: MinGW is a native GCC port for
  the Win32 subsystem that provides a subset of POSIX.
! </li><li> MKS i386-pc-mks: NuTCracker from MKS.  See
! <a href="https://www.mkssoftware.com">https://www.mkssoftware.com</a> for more information.
  </li></ul>
  
! <a name="Intel-64-bit-versions"></a>
! <h4 class="subheading">Intel 64-bit versions</h4>
  <p>GCC contains support for x86-64 using the mingw-w64
! runtime library, available from <a href="https://www.mingw-w64.org/downloads/">https://www.mingw-w64.org/downloads/</a>.
  This library should be used with the target triple x86_64-pc-mingw32.
  </p>
! <a name="Windows-CE"></a>
! <h4 class="subheading">Windows CE</h4>
  <p>Windows CE is supported as a target only on Hitachi
  SuperH (sh-wince-pe), and MIPS (mips-wince-pe).
  </p>
! <a name="Other-Windows-Platforms"></a>
! <h4 class="subheading">Other Windows Platforms</h4>
  <p>GCC no longer supports Windows NT on the Alpha or PowerPC.
  </p>
  <p>GCC no longer supports the Windows POSIX subsystem.
--- 1018,1122 ----
  VxWorks in GCC 3.
  </p>
  <p>VxWorks comes with an older version of GCC installed in
! <samp class="file"><var class="var">$WIND_BASE</var>/host</samp>; we recommend you do not overwrite it.
! Choose an installation <var class="var">prefix</var> entirely outside <var class="var">$WIND_BASE</var>.
! Before running <code class="command">configure</code>, create the directories <samp class="file"><var class="var">prefix</var></samp>
! and <samp class="file"><var class="var">prefix</var>/bin</samp>.  Link or copy the appropriate assembler,
! linker, etc. into <samp class="file"><var class="var">prefix</var>/bin</samp>, and set your <var class="var">PATH</var> to
! include that directory while running both <code class="command">configure</code> and
! <code class="command">make</code>.
  </p>
! <p>You must give <code class="command">configure</code> the
! <samp class="option">--with-headers=<var class="var">$WIND_BASE</var>/target/h</samp> switch so that it can
  find the VxWorks system headers.  Since VxWorks is a cross compilation
! target only, you must also specify <samp class="option">--target=<var class="var">target</var></samp>.
! <code class="command">configure</code> will attempt to create the directory
! <samp class="file"><var class="var">prefix</var>/<var class="var">target</var>/sys-include</samp> and copy files into it;
! make sure the user running <code class="command">configure</code> has sufficient privilege
  to do so.
  </p>
  <p>GCC&rsquo;s exception handling runtime requires a special &ldquo;configlette&rdquo;
! module, <samp class="file">contrib/gthr_supp_vxw_5x.c</samp>.  Follow the instructions in
  that file to add the module to your kernel build.  (Future versions of
  VxWorks will incorporate this module.)
  </p>
  <hr />
! <a class="anchor" id="x86-64-x-x"></a><h3 class="heading" id="x86_005f64-*-*_002c-amd64-*-*"><span>x86_64-*-*, amd64-*-*<a class="copiable-link" href="#x86_005f64-*-*_002c-amd64-*-*"> &para;</a></span></h3>
  <p>GCC supports the x86-64 architecture implemented by the AMD64 processor
  (amd64-*-* is an alias for x86_64-*-*) on GNU/Linux, FreeBSD and NetBSD.
  On GNU/Linux the default is a bi-arch compiler which is able to generate
! both 64-bit x86-64 and 32-bit x86 code (via the <samp class="option">-m32</samp> switch).
  </p>
  <hr />
! <a class="anchor" id="x86-64-x-solaris2"></a><h3 class="heading" id="x86_005f64-*-solaris2*"><span>x86_64-*-solaris2*<a class="copiable-link" href="#x86_005f64-*-solaris2*"> &para;</a></span></h3>
  <p>Unlike other systems, without special options a
  bi-arch compiler is built which generates 32-bit code by default, but
! can generate 64-bit x86-64 code with the <samp class="option">-m64</samp> switch.  Since
  GCC 4.7, there is also a configuration that defaults to 64-bit code, but
! can generate 32-bit code with <samp class="option">-m32</samp>.  To configure and build
! this way, you have to provide all support libraries like <samp class="file">libgmp</samp>
! as 64-bit code, configure with <samp class="option">--target=x86_64-pc-solaris2.11</samp>
! and &lsquo;<samp class="samp">CC=gcc -m64</samp>&rsquo;.
  </p>
  <hr />
! <a class="anchor" id="xtensa-x-elf"></a><h3 class="heading" id="xtensa*-*-elf"><span>xtensa*-*-elf<a class="copiable-link" href="#xtensa*-*-elf"> &para;</a></span></h3>
  <p>This target is intended for embedded Xtensa systems using the
! &lsquo;<samp class="samp">newlib</samp>&rsquo; C library.  It uses ELF but does not support shared
  objects.  Designed-defined instructions specified via the
  Tensilica Instruction Extension (TIE) language are only supported
  through inline assembly.
  </p>
  <p>The Xtensa configuration information must be specified prior to
! building GCC.  The <samp class="file">include/xtensa-config.h</samp> header
  file contains the configuration information.  If you created your
  own Xtensa configuration with the Xtensa Processor Generator, the
  downloaded files include a customized copy of this header file,
  which you can use to replace the default header file.
  </p>
  <hr />
! <a class="anchor" id="xtensa-x-linux"></a><h3 class="heading" id="xtensa*-*-linux*"><span>xtensa*-*-linux*<a class="copiable-link" href="#xtensa*-*-linux*"> &para;</a></span></h3>
  <p>This target is for Xtensa systems running GNU/Linux.  It supports ELF
  shared objects and the GNU C library (glibc).  It also generates
  position-independent code (PIC) regardless of whether the
! <samp class="option">-fpic</samp> or <samp class="option">-fPIC</samp> options are used.  In other
  respects, this target is the same as the
! <a class="uref" href="#xtensa*-*-elf">&lsquo;<samp class="samp">xtensa*-*-elf</samp>&rsquo;</a> target.
  </p>
  <hr />
! <a class="anchor" id="windows"></a><h3 class="heading" id="Microsoft-Windows"><span>Microsoft Windows<a class="copiable-link" href="#Microsoft-Windows"> &para;</a></span></h3>
  
! <h4 class="subheading" id="Intel-16-bit-versions"><span>Intel 16-bit versions<a class="copiable-link" href="#Intel-16-bit-versions"> &para;</a></span></h4>
  <p>The 16-bit versions of Microsoft Windows, such as Windows 3.1, are not
  supported.
  </p>
  <p>However, the 32-bit port has limited support for Microsoft
  Windows 3.11 in the Win32s environment, as a target only.  See below.
  </p>
! <h4 class="subheading" id="Intel-32-bit-versions"><span>Intel 32-bit versions<a class="copiable-link" href="#Intel-32-bit-versions"> &para;</a></span></h4>
  <p>The 32-bit versions of Windows, including Windows 95, Windows NT, Windows
  XP, and Windows Vista, are supported by several different target
  platforms.  These targets differ in which Windows subsystem they target
  and which C libraries are used.
  </p>
! <ul class="itemize mark-bullet">
! <li>Cygwin <a class="uref" href="#x-x-cygwin">*-*-cygwin</a>: Cygwin provides a user-space
  Linux API emulation layer in the Win32 subsystem.
! </li><li>MinGW <a class="uref" href="#x-x-mingw32">*-*-mingw32</a>: MinGW is a native GCC port for
  the Win32 subsystem that provides a subset of POSIX.
! </li><li>MKS i386-pc-mks: NuTCracker from MKS.  See
! <a class="uref" href="https://www.mkssoftware.com">https://www.mkssoftware.com</a> for more information.
  </li></ul>
  
! <h4 class="subheading" id="Intel-64-bit-versions"><span>Intel 64-bit versions<a class="copiable-link" href="#Intel-64-bit-versions"> &para;</a></span></h4>
  <p>GCC contains support for x86-64 using the mingw-w64
! runtime library, available from <a class="uref" href="https://www.mingw-w64.org/downloads/">https://www.mingw-w64.org/downloads/</a>.
  This library should be used with the target triple x86_64-pc-mingw32.
  </p>
! <h4 class="subheading" id="Windows-CE"><span>Windows CE<a class="copiable-link" href="#Windows-CE"> &para;</a></span></h4>
  <p>Windows CE is supported as a target only on Hitachi
  SuperH (sh-wince-pe), and MIPS (mips-wince-pe).
  </p>
! <h4 class="subheading" id="Other-Windows-Platforms"><span>Other Windows Platforms<a class="copiable-link" href="#Other-Windows-Platforms"> &para;</a></span></h4>
  <p>GCC no longer supports Windows NT on the Alpha or PowerPC.
  </p>
  <p>GCC no longer supports the Windows POSIX subsystem.
*************** SuperH (sh-wince-pe), and MIPS (mips-win
*** 1220,1229 ****
  <p>UWIN support has been removed due to a lack of maintenance.
  </p>
  <hr />
! <a name="x-x-cygwin"></a><a name="g_t*-*-cygwin"></a>
! <h3 class="heading">*-*-cygwin</h3>
  <p>Ports of GCC are included with the
! <a href="https://cygwin.com">Cygwin environment</a>.
  </p>
  <p>GCC will build under Cygwin without modification; it does not build
  with Microsoft&rsquo;s C++ compiler and there are no plans to make it do so.
--- 1126,1134 ----
  <p>UWIN support has been removed due to a lack of maintenance.
  </p>
  <hr />
! <a class="anchor" id="x-x-cygwin"></a><h3 class="heading" id="g_t*-*-cygwin"><span>*-*-cygwin<a class="copiable-link" href="#g_t*-*-cygwin"> &para;</a></span></h3>
  <p>Ports of GCC are included with the
! <a class="uref" href="https://cygwin.com">Cygwin environment</a>.
  </p>
  <p>GCC will build under Cygwin without modification; it does not build
  with Microsoft&rsquo;s C++ compiler and there are no plans to make it do so.
*************** the latest official GNU binutils release
*** 1235,1249 ****
  or version 2.20 or above if building your own.
  </p>
  <hr />
! <a name="x-x-mingw32"></a><a name="g_t*-*-mingw32"></a>
! <h3 class="heading">*-*-mingw32</h3>
  <p>GCC will build with and support only MinGW runtime 3.12 and later.
  Earlier versions of headers are incompatible with the new default semantics
! of <code>extern inline</code> in <code>-std=c99</code> and <code>-std=gnu99</code> modes.
  </p>
  <hr />
! <a name="older"></a><a name="Older-systems"></a>
! <h3 class="heading">Older systems</h3>
  <p>GCC contains support files for many older (1980s and early
  1990s) Unix variants.  For the most part, support for these systems
  has not been deliberately removed, but it has not been maintained for
--- 1140,1152 ----
  or version 2.20 or above if building your own.
  </p>
  <hr />
! <a class="anchor" id="x-x-mingw32"></a><h3 class="heading" id="g_t*-*-mingw32"><span>*-*-mingw32<a class="copiable-link" href="#g_t*-*-mingw32"> &para;</a></span></h3>
  <p>GCC will build with and support only MinGW runtime 3.12 and later.
  Earlier versions of headers are incompatible with the new default semantics
! of <code class="code">extern inline</code> in <code class="code">-std=c99</code> and <code class="code">-std=gnu99</code> modes.
  </p>
  <hr />
! <a class="anchor" id="older"></a><h3 class="heading" id="Older-systems"><span>Older systems<a class="copiable-link" href="#Older-systems"> &para;</a></span></h3>
  <p>GCC contains support files for many older (1980s and early
  1990s) Unix variants.  For the most part, support for these systems
  has not been deliberately removed, but it has not been maintained for
*************** several years and may suffer from bitrot
*** 1251,1257 ****
  </p>
  <p>Starting with GCC 3.1, each release has a list of &ldquo;obsoleted&rdquo; systems.
  Support for these systems is still present in that release, but
! <code>configure</code> will fail unless the <samp>--enable-obsolete</samp>
  option is given.  Unless a maintainer steps forward, support for these
  systems will be removed from the next release of GCC.
  </p>
--- 1154,1160 ----
  </p>
  <p>Starting with GCC 3.1, each release has a list of &ldquo;obsoleted&rdquo; systems.
  Support for these systems is still present in that release, but
! <code class="command">configure</code> will fail unless the <samp class="option">--enable-obsolete</samp>
  option is given.  Unless a maintainer steps forward, support for these
  systems will be removed from the next release of GCC.
  </p>
*************** bring GCC up on such a system, if still
*** 1262,1270 ****
  require first installing an old version of GCC which did work on that
  system, and using it to compile a more recent GCC, to avoid bugs in the
  vendor compiler.  Old releases of GCC 1 and GCC 2 are available in the
! <samp>old-releases</samp> directory on the <a href="../mirrors.html">GCC mirror
  sites</a>.  Header bugs may generally be avoided using
! <code>fixincludes</code>, but bugs or deficiencies in libraries and the
  operating system may still cause problems.
  </p>
  <p>Support for older systems as targets for cross-compilation is less
--- 1165,1173 ----
  require first installing an old version of GCC which did work on that
  system, and using it to compile a more recent GCC, to avoid bugs in the
  vendor compiler.  Old releases of GCC 1 and GCC 2 are available in the
! <samp class="file">old-releases</samp> directory on the <a class="uref" href="../mirrors.html">GCC mirror
  sites</a>.  Header bugs may generally be avoided using
! <code class="command">fixincludes</code>, but bugs or deficiencies in libraries and the
  operating system may still cause problems.
  </p>
  <p>Support for older systems as targets for cross-compilation is less
*************** problematic than support for them as hos
*** 1272,1278 ****
  wishes to make such a target work again (including resurrecting any of
  the targets that never worked with GCC 2, starting from the last
  version before they were removed), patches
! <a href="../contribute.html">following the usual requirements</a> would be
  likely to be accepted, since they should not affect the support for more
  modern targets.
  </p>
--- 1175,1181 ----
  wishes to make such a target work again (including resurrecting any of
  the targets that never worked with GCC 2, starting from the last
  version before they were removed), patches
! <a class="uref" href="../contribute.html">following the usual requirements</a> would be
  likely to be accepted, since they should not affect the support for more
  modern targets.
  </p>
*************** about GCC on such systems (which may no
*** 1282,1298 ****
  current GCC) is to be found in the GCC texinfo manual.
  </p>
  <hr />
! <a name="elf"></a><a name="all-ELF-targets-_0028SVR4_002c-Solaris_002c-etc_002e_0029"></a>
! <h3 class="heading">all ELF targets (SVR4, Solaris, etc.)</h3>
  <p>C++ support is significantly better on ELF targets if you use the
! <a href="./configure.html#with-gnu-ld">GNU linker</a>; duplicate copies of
  inlines, vtables and template instantiations will be discarded
  automatically.
  </p>
  
  <hr />
  <p>
! <p><a href="./index.html">Return to the GCC Installation page</a>
  </p>
  
  
--- 1185,1200 ----
  current GCC) is to be found in the GCC texinfo manual.
  </p>
  <hr />
! <a class="anchor" id="elf"></a><h3 class="heading" id="all-ELF-targets-_0028SVR4_002c-Solaris_002c-etc_002e_0029"><span>all ELF targets (SVR4, Solaris, etc.)<a class="copiable-link" href="#all-ELF-targets-_0028SVR4_002c-Solaris_002c-etc_002e_0029"> &para;</a></span></h3>
  <p>C++ support is significantly better on ELF targets if you use the
! <a class="uref" href="./configure.html#with-gnu-ld">GNU linker</a>; duplicate copies of
  inlines, vtables and template instantiations will be discarded
  automatically.
  </p>
  
  <hr />
  <p>
! <p><a class="uref" href="./index.html">Return to the GCC Installation page</a>
  </p>
  
  
diff -Nrcpad gcc-15.2.0/INSTALL/test.html gcc-15.3.0/INSTALL/test.html
*** gcc-15.2.0/INSTALL/test.html	Fri Aug  8 06:52:57 2025
--- gcc-15.3.0/INSTALL/test.html	Fri Jun 12 06:10:25 2026
***************
*** 1,6 ****
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2025 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,9 ----
! <!DOCTYPE html>
  <html>
! <!-- Created by GNU Texinfo 7.1, https://www.gnu.org/software/texinfo/ -->
! <head>
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <!-- Copyright Â© 1988-2025 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,27 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
- <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: Testing</title>
  
  <meta name="description" content="Installing GCC: Testing">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,59 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
! a.summary-letter {text-decoration: none}
! blockquote.indentedblock {margin-right: 0em}
! blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
! blockquote.smallquotation {font-size: smaller}
! div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
! div.lisp {margin-left: 3.2em}
! div.smalldisplay {margin-left: 3.2em}
! div.smallexample {margin-left: 3.2em}
! div.smalllisp {margin-left: 3.2em}
! kbd {font-style: oblique}
! pre.display {font-family: inherit}
! pre.format {font-family: inherit}
! pre.menu-comment {font-family: serif}
! pre.menu-preformatted {font-family: serif}
! pre.smalldisplay {font-family: inherit; font-size: smaller}
! pre.smallexample {font-size: smaller}
! pre.smallformat {font-family: inherit; font-size: smaller}
! pre.smalllisp {font-size: smaller}
! span.nolinebreak {white-space: nowrap}
! span.roman {font-family: initial; font-weight: normal}
! span.sansserif {font-family: sans-serif; font-weight: normal}
! ul.no-bullet {list-style: none}
  -->
  </style>
  
--- 29,42 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
! a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
  div.example {margin-left: 3.2em}
! span:hover a.copiable-link {visibility: visible}
! ul.mark-bullet {list-style-type: disc}
  -->
  </style>
  
*************** ul.no-bullet {list-style: none}
*** 61,67 ****
  </head>
  
  <body lang="en">
- <h1 class="settitle" align="center">Installing GCC: Testing</h1>
  
  
  
--- 44,49 ----
*************** ul.no-bullet {list-style: none}
*** 86,118 ****
  
  
  
! <a name="index-Testing"></a>
! <a name="index-Installing-GCC_003a-Testing"></a>
! <a name="index-Testsuite"></a>
  
  <p>Before you install GCC, we encourage you to run the testsuites and to
  compare your results with results from a similar configuration that have
  been submitted to the
! <a href="https://gcc.gnu.org/ml/gcc-testresults/">gcc-testresults mailing list</a>.
  This step is optional and may require you to download additional software,
  but it can give you confidence in your new GCC installation or point out
  problems before you install and start using your new GCC.
  </p>
! <p>First, you must have <a href="download.html">downloaded the testsuites</a>.
  These are included in the source tarball.
  </p>
  <p>Second, you must have the testing tools installed.  This includes
! <a href="https://www.gnu.org/software/dejagnu/">DejaGnu</a>, Tcl, and Expect;
  the DejaGnu site has links to these.
  Some optional tests also require Python3 and pytest module.
  </p>
! <p>If the directories where <code>runtest</code> and <code>expect</code> were
! installed are not in the <code>PATH</code>, you may need to set the following
  environment variables appropriately, as in the following example (which
! assumes that DejaGnu has been installed under <samp>/usr/local</samp>):
  </p>
! <div class="smallexample">
! <pre class="smallexample">TCL_LIBRARY = /usr/local/share/tcl8.0
  DEJAGNULIBS = /usr/local/share/dejagnu
  </pre></div>
  
--- 68,100 ----
  
  
  
! <a class="index-entry-id" id="index-Testing"></a>
! <a class="index-entry-id" id="index-Installing-GCC_003a-Testing"></a>
! <a class="index-entry-id" id="index-Testsuite"></a>
  
  <p>Before you install GCC, we encourage you to run the testsuites and to
  compare your results with results from a similar configuration that have
  been submitted to the
! <a class="uref" href="https://gcc.gnu.org/ml/gcc-testresults/">gcc-testresults mailing list</a>.
  This step is optional and may require you to download additional software,
  but it can give you confidence in your new GCC installation or point out
  problems before you install and start using your new GCC.
  </p>
! <p>First, you must have <a class="uref" href="download.html">downloaded the testsuites</a>.
  These are included in the source tarball.
  </p>
  <p>Second, you must have the testing tools installed.  This includes
! <a class="uref" href="https://www.gnu.org/software/dejagnu/">DejaGnu</a>, Tcl, and Expect;
  the DejaGnu site has links to these.
  Some optional tests also require Python3 and pytest module.
  </p>
! <p>If the directories where <code class="command">runtest</code> and <code class="command">expect</code> were
! installed are not in the <code class="env">PATH</code>, you may need to set the following
  environment variables appropriately, as in the following example (which
! assumes that DejaGnu has been installed under <samp class="file">/usr/local</samp>):
  </p>
! <div class="example smallexample">
! <pre class="example-preformatted">TCL_LIBRARY = /usr/local/share/tcl8.0
  DEJAGNULIBS = /usr/local/share/dejagnu
  </pre></div>
  
*************** portability in the DejaGnu code.)
*** 122,213 ****
  </p>
  
  <p>Finally, you can run the testsuite (which may take a long time):
! </p><div class="smallexample">
! <pre class="smallexample">cd <var>objdir</var>; make -k check
  </pre></div>
  
  <p>This will test various components of GCC, such as compiler
  front ends and runtime libraries.  While running the testsuite, DejaGnu
  might emit some harmless messages resembling
! &lsquo;<samp>WARNING: Couldn't find the global config file.</samp>&rsquo; or
! &lsquo;<samp>WARNING: Couldn't find tool init file</samp>&rsquo; that can be ignored.
  </p>
  <p>If you are testing a cross-compiler, you may want to run the testsuite
! on a simulator as described at <a href="https://gcc.gnu.org/simtest-howto.html">https://gcc.gnu.org/simtest-howto.html</a>.
  </p>
! <a name="How-can-you-run-the-testsuite-on-selected-tests_003f"></a>
! <h3 class="section">How can you run the testsuite on selected tests?</h3>
  
  <p>In order to run sets of tests selectively, there are targets
! &lsquo;<samp>make check-gcc</samp>&rsquo; and language specific &lsquo;<samp>make check-c</samp>&rsquo;,
! &lsquo;<samp>make check-c++</samp>&rsquo;, &lsquo;<samp>make check-d</samp>&rsquo; &lsquo;<samp>make check-fortran</samp>&rsquo;,
! &lsquo;<samp>make check-ada</samp>&rsquo;, &lsquo;<samp>make check-m2</samp>&rsquo;, &lsquo;<samp>make check-objc</samp>&rsquo;,
! &lsquo;<samp>make check-obj-c++</samp>&rsquo;, &lsquo;<samp>make check-lto</samp>&rsquo; in the <samp>gcc</samp>
  subdirectory of the object directory.  You can also just run
! &lsquo;<samp>make check</samp>&rsquo; in a subdirectory of the object directory.
  </p>
  
! <p>A more selective way to just run all <code>gcc</code> execute tests in the
  testsuite is to use
  </p>
! <div class="smallexample">
! <pre class="smallexample">make check-gcc RUNTESTFLAGS=&quot;execute.exp <var>other-options</var>&quot;
  </pre></div>
  
! <p>Likewise, in order to run only the <code>g++</code> &ldquo;old-deja&rdquo; tests in
! the testsuite with filenames matching &lsquo;<samp>9805*</samp>&rsquo;, you would use
  </p>
! <div class="smallexample">
! <pre class="smallexample">make check-g++ RUNTESTFLAGS=&quot;old-deja.exp=9805* <var>other-options</var>&quot;
  </pre></div>
  
! <p>The file-matching expression following <var>filename</var><code>.exp=</code> is treated
  as a series of whitespace-delimited glob expressions so that multiple patterns
  may be passed, although any whitespace must either be escaped or surrounded by
  single quotes if multiple expressions are desired. For example,
  </p>
! <div class="smallexample">
! <pre class="smallexample">make check-g++ RUNTESTFLAGS=&quot;old-deja.exp=9805*\ virtual2.c <var>other-options</var>&quot;
! make check-g++ RUNTESTFLAGS=&quot;'old-deja.exp=9805* virtual2.c' <var>other-options</var>&quot;
  </pre></div>
  
! <p>The <samp>*.exp</samp> files are located in the testsuite directories of the GCC
! source, the most important ones being <samp>compile.exp</samp>,
! <samp>execute.exp</samp>, <samp>dg.exp</samp> and <samp>old-deja.exp</samp>.
! To get a list of the possible <samp>*.exp</samp> files, pipe the
! output of &lsquo;<samp>make check</samp>&rsquo; into a file and look at the
! &lsquo;<samp>Running &hellip;  .exp</samp>&rsquo; lines.
  </p>
! <a name="Passing-options-and-running-multiple-testsuites"></a>
! <h3 class="section">Passing options and running multiple testsuites</h3>
  
  <p>You can pass multiple options to the testsuite using the
! &lsquo;<samp>--target_board</samp>&rsquo; option of DejaGNU, either passed as part of
! &lsquo;<samp>RUNTESTFLAGS</samp>&rsquo;, or directly to <code>runtest</code> if you prefer to
  work outside the makefiles.  For example,
  </p>
! <div class="smallexample">
! <pre class="smallexample">make check-g++ RUNTESTFLAGS=&quot;--target_board=unix/-O3/-fmerge-constants&quot;
  </pre></div>
  
! <p>will run the standard <code>g++</code> testsuites (&ldquo;unix&rdquo; is the target name
  for a standard native testsuite situation), passing
! &lsquo;<samp>-O3 -fmerge-constants</samp>&rsquo; to the compiler on every test, i.e.,
  slashes separate options.
  </p>
  <p>You can run the testsuites multiple times using combinations of options
  with a syntax similar to the brace expansion of popular shells:
  </p>
! <div class="smallexample">
! <pre class="smallexample">&hellip;&quot;--target_board=arm-sim\{-mhard-float,-msoft-float\}\{-O1,-O2,-O3,\}&quot;
  </pre></div>
  
  <p>(Note the empty option caused by the trailing comma in the final group.)
! The following will run each testsuite eight times using the &lsquo;<samp>arm-sim</samp>&rsquo;
  target, as if you had specified all possible combinations yourself:
  </p>
! <div class="smallexample">
! <pre class="smallexample">--target_board='arm-sim/-mhard-float/-O1 \
                  arm-sim/-mhard-float/-O2 \
                  arm-sim/-mhard-float/-O3 \
                  arm-sim/-mhard-float \
--- 104,196 ----
  </p>
  
  <p>Finally, you can run the testsuite (which may take a long time):
! </p><div class="example smallexample">
! <pre class="example-preformatted">cd <var class="var">objdir</var>; make -k check
  </pre></div>
  
  <p>This will test various components of GCC, such as compiler
  front ends and runtime libraries.  While running the testsuite, DejaGnu
  might emit some harmless messages resembling
! &lsquo;<samp class="samp">WARNING: Couldn't find the global config file.</samp>&rsquo; or
! &lsquo;<samp class="samp">WARNING: Couldn't find tool init file</samp>&rsquo; that can be ignored.
  </p>
  <p>If you are testing a cross-compiler, you may want to run the testsuite
! on a simulator as described at <a class="uref" href="https://gcc.gnu.org/simtest-howto.html">https://gcc.gnu.org/simtest-howto.html</a>.
  </p>
! <div class="section-level-extent" id="How-can-you-run-the-testsuite-on-selected-tests_003f">
! <h3 class="section"><span>How can you run the testsuite on selected tests?<a class="copiable-link" href="#How-can-you-run-the-testsuite-on-selected-tests_003f"> &para;</a></span></h3>
  
  <p>In order to run sets of tests selectively, there are targets
! &lsquo;<samp class="samp">make check-gcc</samp>&rsquo; and language specific &lsquo;<samp class="samp">make check-c</samp>&rsquo;,
! &lsquo;<samp class="samp">make check-c++</samp>&rsquo;, &lsquo;<samp class="samp">make check-d</samp>&rsquo; &lsquo;<samp class="samp">make check-fortran</samp>&rsquo;,
! &lsquo;<samp class="samp">make check-ada</samp>&rsquo;, &lsquo;<samp class="samp">make check-m2</samp>&rsquo;, &lsquo;<samp class="samp">make check-objc</samp>&rsquo;,
! &lsquo;<samp class="samp">make check-obj-c++</samp>&rsquo;, &lsquo;<samp class="samp">make check-lto</samp>&rsquo; in the <samp class="file">gcc</samp>
  subdirectory of the object directory.  You can also just run
! &lsquo;<samp class="samp">make check</samp>&rsquo; in a subdirectory of the object directory.
  </p>
  
! <p>A more selective way to just run all <code class="command">gcc</code> execute tests in the
  testsuite is to use
  </p>
! <div class="example smallexample">
! <pre class="example-preformatted">make check-gcc RUNTESTFLAGS=&quot;execute.exp <var class="var">other-options</var>&quot;
  </pre></div>
  
! <p>Likewise, in order to run only the <code class="command">g++</code> &ldquo;old-deja&rdquo; tests in
! the testsuite with filenames matching &lsquo;<samp class="samp">9805*</samp>&rsquo;, you would use
  </p>
! <div class="example smallexample">
! <pre class="example-preformatted">make check-g++ RUNTESTFLAGS=&quot;old-deja.exp=9805* <var class="var">other-options</var>&quot;
  </pre></div>
  
! <p>The file-matching expression following <var class="var">filename</var><code class="command">.exp=</code> is treated
  as a series of whitespace-delimited glob expressions so that multiple patterns
  may be passed, although any whitespace must either be escaped or surrounded by
  single quotes if multiple expressions are desired. For example,
  </p>
! <div class="example smallexample">
! <pre class="example-preformatted">make check-g++ RUNTESTFLAGS=&quot;old-deja.exp=9805*\ virtual2.c <var class="var">other-options</var>&quot;
! make check-g++ RUNTESTFLAGS=&quot;'old-deja.exp=9805* virtual2.c' <var class="var">other-options</var>&quot;
  </pre></div>
  
! <p>The <samp class="file">*.exp</samp> files are located in the testsuite directories of the GCC
! source, the most important ones being <samp class="file">compile.exp</samp>,
! <samp class="file">execute.exp</samp>, <samp class="file">dg.exp</samp> and <samp class="file">old-deja.exp</samp>.
! To get a list of the possible <samp class="file">*.exp</samp> files, pipe the
! output of &lsquo;<samp class="samp">make check</samp>&rsquo; into a file and look at the
! &lsquo;<samp class="samp">Running &hellip;  .exp</samp>&rsquo; lines.
  </p>
! </div>
! <div class="section-level-extent" id="Passing-options-and-running-multiple-testsuites">
! <h3 class="section"><span>Passing options and running multiple testsuites<a class="copiable-link" href="#Passing-options-and-running-multiple-testsuites"> &para;</a></span></h3>
  
  <p>You can pass multiple options to the testsuite using the
! &lsquo;<samp class="samp">--target_board</samp>&rsquo; option of DejaGNU, either passed as part of
! &lsquo;<samp class="samp">RUNTESTFLAGS</samp>&rsquo;, or directly to <code class="command">runtest</code> if you prefer to
  work outside the makefiles.  For example,
  </p>
! <div class="example smallexample">
! <pre class="example-preformatted">make check-g++ RUNTESTFLAGS=&quot;--target_board=unix/-O3/-fmerge-constants&quot;
  </pre></div>
  
! <p>will run the standard <code class="command">g++</code> testsuites (&ldquo;unix&rdquo; is the target name
  for a standard native testsuite situation), passing
! &lsquo;<samp class="samp">-O3 -fmerge-constants</samp>&rsquo; to the compiler on every test, i.e.,
  slashes separate options.
  </p>
  <p>You can run the testsuites multiple times using combinations of options
  with a syntax similar to the brace expansion of popular shells:
  </p>
! <div class="example smallexample">
! <pre class="example-preformatted">...&quot;--target_board=arm-sim\{-mhard-float,-msoft-float\}\{-O1,-O2,-O3,\}&quot;
  </pre></div>
  
  <p>(Note the empty option caused by the trailing comma in the final group.)
! The following will run each testsuite eight times using the &lsquo;<samp class="samp">arm-sim</samp>&rsquo;
  target, as if you had specified all possible combinations yourself:
  </p>
! <div class="example smallexample">
! <pre class="example-preformatted">--target_board='arm-sim/-mhard-float/-O1 \
                  arm-sim/-mhard-float/-O2 \
                  arm-sim/-mhard-float/-O3 \
                  arm-sim/-mhard-float \
*************** target, as if you had specified all poss
*** 220,271 ****
  <p>They can be combined as many times as you wish, in arbitrary ways.  This
  list:
  </p>
! <div class="smallexample">
! <pre class="smallexample">&hellip;&quot;--target_board=unix/-Wextra\{-O3,-fno-strength\}\{-fomit-frame,\}&quot;
  </pre></div>
  
! <p>will generate four combinations, all involving &lsquo;<samp>-Wextra</samp>&rsquo;.
  </p>
  <p>The disadvantage to this method is that the testsuites are run in serial,
  which is a waste on multiprocessor systems.  For users with GNU Make and
  a shell which performs brace expansion, you can run the testsuites in
! parallel by having the shell perform the combinations and <code>make</code>
! do the parallel runs.  Instead of using &lsquo;<samp>--target_board</samp>&rsquo;, use a
  special makefile target:
  </p>
! <div class="smallexample">
! <pre class="smallexample">make -j<var>N</var> check-<var>testsuite</var>//<var>test-target</var>/<var>option1</var>/<var>option2</var>/&hellip;
  </pre></div>
  
  <p>For example,
  </p>
! <div class="smallexample">
! <pre class="smallexample">make -j3 check-gcc//sh-hms-sim/{-m1,-m2,-m3,-m3e,-m4}/{,-nofpu}
  </pre></div>
  
  <p>will run three concurrent &ldquo;make-gcc&rdquo; testsuites, eventually testing all
  ten combinations as described above.  Note that this is currently only
! supported in the <samp>gcc</samp> subdirectory.  (To see how this works, try
! typing <code>echo</code> before the example given here.)
  </p>
  
! <a name="How-to-interpret-test-results"></a>
! <h3 class="section">How to interpret test results</h3>
  
! <p>The result of running the testsuite are various <samp>*.sum</samp> and <samp>*.log</samp>
! files in the testsuite subdirectories.  The <samp>*.log</samp> files contain a
  detailed log of the compiler invocations and the corresponding
! results, the <samp>*.sum</samp> files summarize the results.  These summaries
  contain status codes for all tests:
  </p>
! <ul>
! <li> PASS: the test passed as expected
! </li><li> XPASS: the test unexpectedly passed
! </li><li> FAIL: the test unexpectedly failed
! </li><li> XFAIL: the test failed as expected
! </li><li> UNSUPPORTED: the test is not supported on this platform
! </li><li> ERROR: the testsuite detected an error
! </li><li> WARNING: the testsuite detected a possible problem
  </li></ul>
  
  <p>It is normal for some tests to report unexpected failures.  At the
--- 203,255 ----
  <p>They can be combined as many times as you wish, in arbitrary ways.  This
  list:
  </p>
! <div class="example smallexample">
! <pre class="example-preformatted">...&quot;--target_board=unix/-Wextra\{-O3,-fno-strength\}\{-fomit-frame,\}&quot;
  </pre></div>
  
! <p>will generate four combinations, all involving &lsquo;<samp class="samp">-Wextra</samp>&rsquo;.
  </p>
  <p>The disadvantage to this method is that the testsuites are run in serial,
  which is a waste on multiprocessor systems.  For users with GNU Make and
  a shell which performs brace expansion, you can run the testsuites in
! parallel by having the shell perform the combinations and <code class="command">make</code>
! do the parallel runs.  Instead of using &lsquo;<samp class="samp">--target_board</samp>&rsquo;, use a
  special makefile target:
  </p>
! <div class="example smallexample">
! <pre class="example-preformatted">make -j<var class="var">N</var> check-<var class="var">testsuite</var>//<var class="var">test-target</var>/<var class="var">option1</var>/<var class="var">option2</var>/...
  </pre></div>
  
  <p>For example,
  </p>
! <div class="example smallexample">
! <pre class="example-preformatted">make -j3 check-gcc//sh-hms-sim/{-m1,-m2,-m3,-m3e,-m4}/{,-nofpu}
  </pre></div>
  
  <p>will run three concurrent &ldquo;make-gcc&rdquo; testsuites, eventually testing all
  ten combinations as described above.  Note that this is currently only
! supported in the <samp class="file">gcc</samp> subdirectory.  (To see how this works, try
! typing <code class="command">echo</code> before the example given here.)
  </p>
  
! </div>
! <div class="section-level-extent" id="How-to-interpret-test-results">
! <h3 class="section"><span>How to interpret test results<a class="copiable-link" href="#How-to-interpret-test-results"> &para;</a></span></h3>
  
! <p>The result of running the testsuite are various <samp class="file">*.sum</samp> and <samp class="file">*.log</samp>
! files in the testsuite subdirectories.  The <samp class="file">*.log</samp> files contain a
  detailed log of the compiler invocations and the corresponding
! results, the <samp class="file">*.sum</samp> files summarize the results.  These summaries
  contain status codes for all tests:
  </p>
! <ul class="itemize mark-bullet">
! <li>PASS: the test passed as expected
! </li><li>XPASS: the test unexpectedly passed
! </li><li>FAIL: the test unexpectedly failed
! </li><li>XFAIL: the test failed as expected
! </li><li>UNSUPPORTED: the test is not supported on this platform
! </li><li>ERROR: the testsuite detected an error
! </li><li>WARNING: the testsuite detected a possible problem
  </li></ul>
  
  <p>It is normal for some tests to report unexpected failures.  At the
*************** over whether or not a test is expected t
*** 274,292 ****
  be fixed in future releases.
  </p>
  
! <a name="Submitting-test-results"></a>
! <h3 class="section">Submitting test results</h3>
  
  <p>If you want to report the results to the GCC project, use the
! <samp>contrib/test_summary</samp> shell script.  Start it in the <var>objdir</var> with
  </p>
! <div class="smallexample">
! <pre class="smallexample"><var>srcdir</var>/contrib/test_summary -p your_commentary.txt \
      -m gcc-testresults@gcc.gnu.org |sh
  </pre></div>
  
! <p>This script uses the <code>Mail</code> program to send the results, so
! make sure it is in your <code>PATH</code>.  The file <samp>your_commentary.txt</samp> is
  prepended to the testsuite summary and should contain any special
  remarks you have on your results or your build environment.  Please
  do not edit the testsuite result block or the subject line, as these
--- 258,277 ----
  be fixed in future releases.
  </p>
  
! </div>
! <div class="section-level-extent" id="Submitting-test-results">
! <h3 class="section"><span>Submitting test results<a class="copiable-link" href="#Submitting-test-results"> &para;</a></span></h3>
  
  <p>If you want to report the results to the GCC project, use the
! <samp class="file">contrib/test_summary</samp> shell script.  Start it in the <var class="var">objdir</var> with
  </p>
! <div class="example smallexample">
! <pre class="example-preformatted"><var class="var">srcdir</var>/contrib/test_summary -p your_commentary.txt \
      -m gcc-testresults@gcc.gnu.org |sh
  </pre></div>
  
! <p>This script uses the <code class="command">Mail</code> program to send the results, so
! make sure it is in your <code class="env">PATH</code>.  The file <samp class="file">your_commentary.txt</samp> is
  prepended to the testsuite summary and should contain any special
  remarks you have on your results or your build environment.  Please
  do not edit the testsuite result block or the subject line, as these
*************** messages may be automatically processed.
*** 294,307 ****
  </p>
  <hr />
  <p>
! <p><a href="./index.html">Return to the GCC Installation page</a>
  </p>
  
  
  
  
  
! <hr>
  
  
  
--- 279,292 ----
  </p>
  <hr />
  <p>
! <p><a class="uref" href="./index.html">Return to the GCC Installation page</a>
  </p>
  
  
  
  
  
! </div>
  
  
  
diff -Nrcpad gcc-15.2.0/LAST_UPDATED gcc-15.3.0/LAST_UPDATED
*** gcc-15.2.0/LAST_UPDATED	Fri Aug  8 06:52:56 2025
--- gcc-15.3.0/LAST_UPDATED	Fri Jun 12 06:10:24 2026
***************
*** 1 ****
! Obtained from git: releases/gcc-15.2.0 revision 5115c7e447fc07457443df874bf57840e8316d5f
--- 1 ----
! Obtained from git: releases/gcc-15.3.0 revision 4db0e8df15bef836558857c291c323add11d035c
diff -Nrcpad gcc-15.2.0/MD5SUMS gcc-15.3.0/MD5SUMS
*** gcc-15.2.0/MD5SUMS	Fri Aug  8 07:18:05 2025
--- gcc-15.3.0/MD5SUMS	Fri Jun 12 06:36:52 2026
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-15.2.0.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
--- 1,5 ----
  # This file contains the MD5 checksums of the files in the
! # gcc-15.3.0.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
*************** b8acb527560fc760209d200fcfab8ff4  .githu
*** 21,50 ****
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 272b5deddad24f1fce1955c36d4e873b  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! f8b606723840fbee4aa05db52b84950a  INSTALL/binaries.html
! f4fb1b398af411b7601b9601d5bbea82  INSTALL/build.html
! 91819512c5d00028204d3830ac690077  INSTALL/configure.html
! 9b5ea6cc621359bc6f6d7d30c4b095d9  INSTALL/download.html
! e5c6c30346bbc63207b70eac28bb0f44  INSTALL/finalinstall.html
! 27733b127679a5d6588b602c5976e00b  INSTALL/gfdl.html
! 0181c2b55bd4dc77f3589e09512fadb4  INSTALL/index.html
! b82ff8feafc7177b05ab33ccd78025c8  INSTALL/prerequisites.html
! 6236f21861e957c0888398821944fe16  INSTALL/specific.html
! d2185f6132ea4497c07bc4ac1a0a1dfb  INSTALL/test.html
! 4a4ec387e4dcf47d714a323854dc7320  LAST_UPDATED
  9d2cf5b58292c2e8b0804d3eafc2d6f3  MAINTAINERS
  b714b83dd28679b75c5fd3e619d35956  Makefile.def
  9d0808afc70085c5ca8d45062fc59689  Makefile.in
  7c87bc1ac5389b3184deb34c599d184f  Makefile.tpl
! 3b771eeb7fcbf6eed62587a641182af5  NEWS
  80d26bc3b1ad4f6969a96a24c9181bf5  README
  d91842c1dd3e9080dd06b73340b682ee  SECURITY.txt
  a657821f65bab77f4fbf3a75cdee6da9  ar-lib
! 6cf0c727fb5a7c8af403f38d3bd2ca35  c++tools/ChangeLog
  772c4970b4827d9e21c892d684ee204e  c++tools/Makefile.in
  edf805e559bf9ecb62db313d2e6edb47  c++tools/config.h.in
  c37ea1a2f77642729239faeefeabadb1  c++tools/configure
--- 21,50 ----
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 3ab355c147b5f0a807f7c1b06c99192f  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 726d0d50ab2ad3f7bbcc924c7e8eb912  INSTALL/binaries.html
! 4a22c17c1434afefd5aad8ad400e513e  INSTALL/build.html
! d85b23f2acaa7fb3c0664622dd30917d  INSTALL/configure.html
! 7223d1b1456525fee1605d6279b90bb7  INSTALL/download.html
! 61efd754edb146cd87169be8fd13ef0b  INSTALL/finalinstall.html
! 23a220e7409b6dabc465eca85d35ca20  INSTALL/gfdl.html
! 80e5e526c9335e29dc77f1a067eb6944  INSTALL/index.html
! ebf2ab0162210fec490f0208de12b23c  INSTALL/prerequisites.html
! 75ea29b4f9ad858554af2cab0ad09637  INSTALL/specific.html
! 566f2461592845d8391fdac5dc8475d5  INSTALL/test.html
! 5604dd551cc6c22c98e44df58fae91c4  LAST_UPDATED
  9d2cf5b58292c2e8b0804d3eafc2d6f3  MAINTAINERS
  b714b83dd28679b75c5fd3e619d35956  Makefile.def
  9d0808afc70085c5ca8d45062fc59689  Makefile.in
  7c87bc1ac5389b3184deb34c599d184f  Makefile.tpl
! a12c0cbc3b08e88e61f423d5362fe61c  NEWS
  80d26bc3b1ad4f6969a96a24c9181bf5  README
  d91842c1dd3e9080dd06b73340b682ee  SECURITY.txt
  a657821f65bab77f4fbf3a75cdee6da9  ar-lib
! f237b129693f1cee3f4151b7dc4ef4cc  c++tools/ChangeLog
  772c4970b4827d9e21c892d684ee204e  c++tools/Makefile.in
  edf805e559bf9ecb62db313d2e6edb47  c++tools/config.h.in
  c37ea1a2f77642729239faeefeabadb1  c++tools/configure
*************** c37ea1a2f77642729239faeefeabadb1  c++too
*** 57,63 ****
  c64564b7c7563dae5ebe016f340c9cd9  config.guess
  040359150cf11493f973a46d8a25b06b  config.rpath
  111d54aa3a3019adbab413c8fb435f22  config.sub
! a48242244fc185385c19765cc3045b86  config/ChangeLog
  e8365ab73da09dccff77a6e2ad006a68  config/acinclude.m4
  e1b259699840442ff915265a77b3a578  config/acx.m4
  6b030f5cf640bdd401ea739f54a667f8  config/asmcfi.m4
--- 57,63 ----
  c64564b7c7563dae5ebe016f340c9cd9  config.guess
  040359150cf11493f973a46d8a25b06b  config.rpath
  111d54aa3a3019adbab413c8fb435f22  config.sub
! a683bfac81b99d8bc966bb3bd341a302  config/ChangeLog
  e8365ab73da09dccff77a6e2ad006a68  config/acinclude.m4
  e1b259699840442ff915265a77b3a578  config/acx.m4
  6b030f5cf640bdd401ea739f54a667f8  config/asmcfi.m4
*************** b75e527c5a9b8dcbcfb1ac321fa244eb  config
*** 118,127 ****
  534dce34ae221e73e2d67d3ba07f00a3  config/lthostflags.m4
  ad4ae2c604a57f5e6f53c9edc33ea1f1  config/math.m4
  e10d31316e03a59577fb4ed90a670914  config/mh-alpha-linux
! 3fe4a576c2a75736c8da3af1d0824217  config/mh-cygwin
  12e3e525300d7b265337e9f2dfe0e2af  config/mh-darwin
  625bacc09b9992290d94831bd7506bd0  config/mh-djgpp
! fd9ed5b9d9dbb22a41f305c72c411ba1  config/mh-mingw
  cd7034dccd04e50150b14c597dd545a5  config/mh-pa
  76d638a67d840715b2de89afee8ef49a  config/mh-ppc-aix
  bd6855445bd58ae7e066221ade8cc55d  config/mmap.m4
--- 118,127 ----
  534dce34ae221e73e2d67d3ba07f00a3  config/lthostflags.m4
  ad4ae2c604a57f5e6f53c9edc33ea1f1  config/math.m4
  e10d31316e03a59577fb4ed90a670914  config/mh-alpha-linux
! a6459928053a02b8092ceda8f534097e  config/mh-cygwin
  12e3e525300d7b265337e9f2dfe0e2af  config/mh-darwin
  625bacc09b9992290d94831bd7506bd0  config/mh-djgpp
! 44d3da2368ed3af5582490d54cd7e31a  config/mh-mingw
  cd7034dccd04e50150b14c597dd545a5  config/mh-pa
  76d638a67d840715b2de89afee8ef49a  config/mh-ppc-aix
  bd6855445bd58ae7e066221ade8cc55d  config/mmap.m4
*************** e2dc6b4fd62b77bff96b7951ef74f78f  config
*** 164,170 ****
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
  03e84607a1c4478aa65bd53937ed3aea  configure
  a10daf98a334165ec89e62510a1eb0a0  configure.ac
! 485cb6acfe45fd1d86facd7ffa527544  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  13605e5ba7b533ecbe3a902b8ebe4079  contrib/analyze_brprob.py
--- 164,170 ----
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
  03e84607a1c4478aa65bd53937ed3aea  configure
  a10daf98a334165ec89e62510a1eb0a0  configure.ac
! 912164d3b5b5ff28e785abe79c06a4cc  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  13605e5ba7b533ecbe3a902b8ebe4079  contrib/analyze_brprob.py
*************** abb4adeec48b5e472bc4fc459600de76  contri
*** 201,207 ****
  db03e57377f9eb202b7b783eb81fe40d  contrib/filter_knr2ansi.pl
  d577ea19d05f19a8364f73c9901223b7  contrib/filter_params.py
  1f09615feb91c049cbf46b27ea159c58  contrib/gcc-changelog/git_check_commit.py
! 1c82c39ec07b95e02c998d4285dac60c  contrib/gcc-changelog/git_commit.py
  6a772ce384751a560f60790681e6fc41  contrib/gcc-changelog/git_email.py
  039963086e96c2e9fdf8ae5643394a9c  contrib/gcc-changelog/git_repository.py
  dc2794d8add22497f9d729b995f5ef44  contrib/gcc-changelog/git_update_version.py
--- 201,207 ----
  db03e57377f9eb202b7b783eb81fe40d  contrib/filter_knr2ansi.pl
  d577ea19d05f19a8364f73c9901223b7  contrib/filter_params.py
  1f09615feb91c049cbf46b27ea159c58  contrib/gcc-changelog/git_check_commit.py
! 3ad680b6760dee460bc3d72644671f57  contrib/gcc-changelog/git_commit.py
  6a772ce384751a560f60790681e6fc41  contrib/gcc-changelog/git_email.py
  039963086e96c2e9fdf8ae5643394a9c  contrib/gcc-changelog/git_repository.py
  dc2794d8add22497f9d729b995f5ef44  contrib/gcc-changelog/git_update_version.py
*************** f87a91c941a8aaa300ac60c24979992b  contri
*** 223,229 ****
  587c829d88826fb8a7d70b7b8aa47a6c  contrib/git-fix-changelog.py
  5d80e88da5ae83c53513280bcff7c0a1  contrib/git-undescr.sh
  59304fc08afa489baa6b920cc76dc625  contrib/gthr_supp_vxw_5x.c
! 92bfd0a60dd4b96066f6c876a94c3cb6  contrib/header-tools/ChangeLog
  20f6fa0b5366976230b0538c5b0ae603  contrib/header-tools/README
  a674173d7f8b0f6c7c6cdb9f58e756f3  contrib/header-tools/count-headers
  8154e483c08f8955698d4e40aa8808ca  contrib/header-tools/gcc-order-headers
--- 223,229 ----
  587c829d88826fb8a7d70b7b8aa47a6c  contrib/git-fix-changelog.py
  5d80e88da5ae83c53513280bcff7c0a1  contrib/git-undescr.sh
  59304fc08afa489baa6b920cc76dc625  contrib/gthr_supp_vxw_5x.c
! 2ba5fbe572e57d390cf7338fe318311c  contrib/header-tools/ChangeLog
  20f6fa0b5366976230b0538c5b0ae603  contrib/header-tools/README
  a674173d7f8b0f6c7c6cdb9f58e756f3  contrib/header-tools/count-headers
  8154e483c08f8955698d4e40aa8808ca  contrib/header-tools/gcc-order-headers
*************** bda0e2d8e6960465c7778fe3856cdacc  contri
*** 265,271 ****
  2809fb88a72709fdece476dcdcb841a4  contrib/prerequisites.md5
  17fac6b39df387ffce2f399bf24a4193  contrib/prerequisites.sha512
  f6d7aacca35d091b5c304edef3e4472f  contrib/regenerate-sarif-spec-index.py
! c4edfcb7c08e5b93eb7d0be11414fa26  contrib/reghunt/ChangeLog
  2f6b6802701c14f9274e2103987932d6  contrib/reghunt/bin/gcc-build-full
  371554c47a7769f6e4971984f84c5455  contrib/reghunt/bin/gcc-build-simple
  3f2318bae7562a4ad1639e686916a545  contrib/reghunt/bin/gcc-cleanup
--- 265,271 ----
  2809fb88a72709fdece476dcdcb841a4  contrib/prerequisites.md5
  17fac6b39df387ffce2f399bf24a4193  contrib/prerequisites.sha512
  f6d7aacca35d091b5c304edef3e4472f  contrib/regenerate-sarif-spec-index.py
! 22910f0d4cb0dc955a6c20c5b8f26c9d  contrib/reghunt/ChangeLog
  2f6b6802701c14f9274e2103987932d6  contrib/reghunt/bin/gcc-build-full
  371554c47a7769f6e4971984f84c5455  contrib/reghunt/bin/gcc-build-simple
  3f2318bae7562a4ad1639e686916a545  contrib/reghunt/bin/gcc-cleanup
*************** f251d49dd87647250fcd74dd50b7835f  contri
*** 324,330 ****
  e2829fc4af4f433a6a328a62d5ce8066  contrib/reghunt/examples/reg-watch
  afd863c2ec84c906e20f9b9787b1f0fe  contrib/reghunt/examples/reg-watch.awk
  8955535523d4b5f48006bcb851ba9b4b  contrib/reghunt/examples/testall
! 079f53ac5fb01f742640a98b131c0567  contrib/regression/ChangeLog
  30553bfced1b2b46bf7ca01ef6ba69d1  contrib/regression/GCC_Regression_Tester.wdgt/Default.png
  ad38ddd771df222eb9d413e3c7f6a751  contrib/regression/GCC_Regression_Tester.wdgt/Icon.png
  777bd286c147cc02861811f66b9a4440  contrib/regression/GCC_Regression_Tester.wdgt/Info.plist
--- 324,330 ----
  e2829fc4af4f433a6a328a62d5ce8066  contrib/reghunt/examples/reg-watch
  afd863c2ec84c906e20f9b9787b1f0fe  contrib/reghunt/examples/reg-watch.awk
  8955535523d4b5f48006bcb851ba9b4b  contrib/reghunt/examples/testall
! 68232024531556c71e2abba513da36db  contrib/regression/ChangeLog
  30553bfced1b2b46bf7ca01ef6ba69d1  contrib/regression/GCC_Regression_Tester.wdgt/Default.png
  ad38ddd771df222eb9d413e3c7f6a751  contrib/regression/GCC_Regression_Tester.wdgt/Icon.png
  777bd286c147cc02861811f66b9a4440  contrib/regression/GCC_Regression_Tester.wdgt/Info.plist
*************** f068aafb849bb6af444e7442e70106d7  contri
*** 376,382 ****
  9f709ddf34273ffe202ff79517103dbe  contrib/vimrc
  da7aeedeb5a86ee6f5982e559a2d6dcc  contrib/warn_summary
  8b59f0d0a2dcdced14765c514fbad719  depcomp
! 1e570543150863bbe5c5d11eb8ece1fa  fixincludes/ChangeLog
  4afe55f959b7cceb7055ff11a9ca0e32  fixincludes/Makefile.in
  b6e3f4950abc6e254b467063381f6473  fixincludes/README
  455903ad4ff71fa5c5340ef7ae41a0e6  fixincludes/README-fixinc
--- 376,382 ----
  9f709ddf34273ffe202ff79517103dbe  contrib/vimrc
  da7aeedeb5a86ee6f5982e559a2d6dcc  contrib/warn_summary
  8b59f0d0a2dcdced14765c514fbad719  depcomp
! 133bcf5028bff025c34bb13d51d4bd31  fixincludes/ChangeLog
  4afe55f959b7cceb7055ff11a9ca0e32  fixincludes/Makefile.in
  b6e3f4950abc6e254b467063381f6473  fixincludes/README
  455903ad4ff71fa5c5340ef7ae41a0e6  fixincludes/README-fixinc
*************** b6ffc204128adbd2c41ac0cb4ce98dc7  fixinc
*** 388,401 ****
  2002770d703d59245d89f941a21f783d  fixincludes/fixfixes.c
  77fbad4fc8ec7be3578d045d003446ec  fixincludes/fixinc.in
  8ca216a7024876b7eb9b8abc30a30775  fixincludes/fixincl.c
! adf245e3714f799eafba40af16be8eb5  fixincludes/fixincl.tpl
! b735426413a7cd6dfc49a14edea7ed15  fixincludes/fixincl.x
  545875b4fe1c26bc3e1befc75b34e9f5  fixincludes/fixlib.c
  620c770139fc32c75b975b614d3156e8  fixincludes/fixlib.h
  5b2c1fd3ef9d44fb6beb1a0d45ddd533  fixincludes/fixopts.c
  ed1415e9dbc8f421fd9288bde0d90ad1  fixincludes/fixtests.c
  51e915676df084b64297d3c4fb0d9c18  fixincludes/genfixes
! 86c10da334bb7b92f399ff0157e281e6  fixincludes/inclhack.def
  d820d7184883bda7dd809406f0626d8e  fixincludes/mkfixinc.sh
  516608ac1550577d47f48809bb512629  fixincludes/mkheaders.in
  3aa0563cd682ee61ecd9eb6eea0b0bce  fixincludes/procopen.c
--- 388,401 ----
  2002770d703d59245d89f941a21f783d  fixincludes/fixfixes.c
  77fbad4fc8ec7be3578d045d003446ec  fixincludes/fixinc.in
  8ca216a7024876b7eb9b8abc30a30775  fixincludes/fixincl.c
! 7f0fed08dfa61ea12896569a2a5375d1  fixincludes/fixincl.tpl
! 32f101147d44b440e7b5f5e7c016f8f7  fixincludes/fixincl.x
  545875b4fe1c26bc3e1befc75b34e9f5  fixincludes/fixlib.c
  620c770139fc32c75b975b614d3156e8  fixincludes/fixlib.h
  5b2c1fd3ef9d44fb6beb1a0d45ddd533  fixincludes/fixopts.c
  ed1415e9dbc8f421fd9288bde0d90ad1  fixincludes/fixtests.c
  51e915676df084b64297d3c4fb0d9c18  fixincludes/genfixes
! 0141ff051b49ede5f953db69155fdbec  fixincludes/inclhack.def
  d820d7184883bda7dd809406f0626d8e  fixincludes/mkfixinc.sh
  516608ac1550577d47f48809bb512629  fixincludes/mkheaders.in
  3aa0563cd682ee61ecd9eb6eea0b0bce  fixincludes/procopen.c
*************** a22e70b3f29292d0e628450f4bb11e62  fixinc
*** 520,531 ****
  8baab8698bb83c6b90ef4091c00ddc1e  fixincludes/tests/base/unistd.h
  75d75572793b62bdd8ff4d1504e0cb4c  fixincludes/tests/base/yvals.h
  97329340dfb48ed4683fdb7d3f2f9014  gcc/ABOUT-GCC-NLS
! 1efbd568228b5af73cb0285b43d99a82  gcc/BASE-VER
  59530bdf33659b29e73d4adb9f9f6552  gcc/COPYING
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! ca12efd5b3613a82d86466fa3cc9994e  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 520,531 ----
  8baab8698bb83c6b90ef4091c00ddc1e  fixincludes/tests/base/unistd.h
  75d75572793b62bdd8ff4d1504e0cb4c  fixincludes/tests/base/yvals.h
  97329340dfb48ed4683fdb7d3f2f9014  gcc/ABOUT-GCC-NLS
! 17845d9ce818604e5d4a37b9ef3ad52f  gcc/BASE-VER
  59530bdf33659b29e73d4adb9f9f6552  gcc/COPYING
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! d27433886e656dbff09287ecaf85eb20  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 562,568 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 2f5ccef09bd82ec779ad9b1e3fd7f9a0  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 562,568 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 62dc9aba6855ceb0718c20f5e396921b  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** ec6799501b2eb2923d5de6a66169dbd2  gcc/ON
*** 574,580 ****
  cd96bf34cb76c97f86704a59b9ddb18a  gcc/acinclude.m4
  18db4664d7e31002aac43ebcf20e075f  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 5368a92edbfdaed06d06e3f0295dcd29  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
--- 574,580 ----
  cd96bf34cb76c97f86704a59b9ddb18a  gcc/acinclude.m4
  18db4664d7e31002aac43ebcf20e075f  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 7401165a07a0cf9c1799d9a2d43b4d64  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
*************** eea9961506181531b5f7f1a7f62fe428  gcc/ad
*** 603,609 ****
  2cf41efa2dee24b2dda73018b855edd3  gcc/ada/ChangeLog.tree-ssa
  711afb6f8ec14edf7425445a669e85ed  gcc/ada/Make-generated.in
  6c9c3b4249e781ed48c7ae55e8ef9999  gcc/ada/Makefile.in
! b4d8c0a7115d77fba33a6577ab6efe43  gcc/ada/Makefile.rtl
  36ed8f92f8a084af3653ce5eaf0eda34  gcc/ada/accessibility.adb
  fbd3226b85f1e1cc6eb250fa51de4be1  gcc/ada/accessibility.ads
  cc3c3e637adb577e88374e9630aa0e54  gcc/ada/ada_get_targ.adb
--- 603,609 ----
  2cf41efa2dee24b2dda73018b855edd3  gcc/ada/ChangeLog.tree-ssa
  711afb6f8ec14edf7425445a669e85ed  gcc/ada/Make-generated.in
  6c9c3b4249e781ed48c7ae55e8ef9999  gcc/ada/Makefile.in
! 4d98c43078d4a0fa4f984e2b80596b5c  gcc/ada/Makefile.rtl
  36ed8f92f8a084af3653ce5eaf0eda34  gcc/ada/accessibility.adb
  fbd3226b85f1e1cc6eb250fa51de4be1  gcc/ada/accessibility.ads
  cc3c3e637adb577e88374e9630aa0e54  gcc/ada/ada_get_targ.adb
*************** a07518144c5203a421dbc45a7b16e04f  gcc/ad
*** 611,617 ****
  30e7387695692ce78b78ca8165fa9561  gcc/ada/adabkend.ads
  3d1fcc88d6e5624970030c0a00ed8653  gcc/ada/adadecode.c
  066612d3b34078e2a26c00cff399ed82  gcc/ada/adadecode.h
! a4539cc4a5028b71e8c3fffdb29ebace  gcc/ada/adaint.c
  f6a5ac54108a44c0cdc3ee5c49d836ae  gcc/ada/adaint.h
  760bb6cd65cc72294ad54f492d54d482  gcc/ada/affinity.c
  a22ae88618cb2fc05cb66a79ed80efb5  gcc/ada/ali-util.adb
--- 611,617 ----
  30e7387695692ce78b78ca8165fa9561  gcc/ada/adabkend.ads
  3d1fcc88d6e5624970030c0a00ed8653  gcc/ada/adadecode.c
  066612d3b34078e2a26c00cff399ed82  gcc/ada/adadecode.h
! 973b6415adc52c90015dd36d928a35cd  gcc/ada/adaint.c
  f6a5ac54108a44c0cdc3ee5c49d836ae  gcc/ada/adaint.h
  760bb6cd65cc72294ad54f492d54d482  gcc/ada/affinity.c
  a22ae88618cb2fc05cb66a79ed80efb5  gcc/ada/ali-util.adb
*************** ae344bff4834b9e2ef3c07f6dd01b59b  gcc/ad
*** 664,670 ****
  530290230985903c593cb9d92f5b47c8  gcc/ada/cal.c
  2acfb74c50c4563afcbe6a1bca3912a3  gcc/ada/casing.adb
  c576df64e1d6a2ac70b389cc10a835e6  gcc/ada/casing.ads
! 20d0c21e346ef575a30e5da2f84b9b97  gcc/ada/checks.adb
  f963647952269416533799c6a5117ea3  gcc/ada/checks.ads
  4c0942bba88f786dffff9a3575759026  gcc/ada/cio.c
  f14d5e59f3344d9d8ee8a0e5e48a7080  gcc/ada/clean.adb
--- 664,670 ----
  530290230985903c593cb9d92f5b47c8  gcc/ada/cal.c
  2acfb74c50c4563afcbe6a1bca3912a3  gcc/ada/casing.adb
  c576df64e1d6a2ac70b389cc10a835e6  gcc/ada/casing.ads
! 92a07149f712b22fb9c3ba3ceb5c145f  gcc/ada/checks.adb
  f963647952269416533799c6a5117ea3  gcc/ada/checks.ads
  4c0942bba88f786dffff9a3575759026  gcc/ada/cio.c
  f14d5e59f3344d9d8ee8a0e5e48a7080  gcc/ada/clean.adb
*************** a012e0cb5df366014b5a4988036a509a  gcc/ad
*** 709,715 ****
  a279ed6487990a204e636674f9c44623  gcc/ada/doc/gnat_rm.rst
  c4f5f27a027adfe3db5b39193542c956  gcc/ada/doc/gnat_rm/about_this_guide.rst
  e183e323bf87ac50a5767106862fef97  gcc/ada/doc/gnat_rm/compatibility_and_porting_guide.rst
! 8e52fb340bf9b3b220e7e6a9cee8be87  gcc/ada/doc/gnat_rm/gnat_language_extensions.rst
  c2ce843af1cfd3f0c588b2a488ad8d45  gcc/ada/doc/gnat_rm/implementation_advice.rst
  9841e49a49af522a8041a3b7a4df8b92  gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
  687e948eae92592a9bb4b738fd473d80  gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
--- 709,715 ----
  a279ed6487990a204e636674f9c44623  gcc/ada/doc/gnat_rm.rst
  c4f5f27a027adfe3db5b39193542c956  gcc/ada/doc/gnat_rm/about_this_guide.rst
  e183e323bf87ac50a5767106862fef97  gcc/ada/doc/gnat_rm/compatibility_and_porting_guide.rst
! 19627ce6fbabc04031674f1954a44add  gcc/ada/doc/gnat_rm/gnat_language_extensions.rst
  c2ce843af1cfd3f0c588b2a488ad8d45  gcc/ada/doc/gnat_rm/implementation_advice.rst
  9841e49a49af522a8041a3b7a4df8b92  gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
  687e948eae92592a9bb4b738fd473d80  gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
*************** f1c71b64e1c84e240c7b5aea7331a32a  gcc/ad
*** 749,755 ****
  b197c097238ab059c90fd0c9452e6a76  gcc/ada/einfo-utils.adb
  9294b28a2b5738443be8b4fcd83a2391  gcc/ada/einfo-utils.ads
  4f882a8b5e78253d5838b1a83e4af5bb  gcc/ada/einfo.adb
! c8215fc59c32d3e426200668c4fc8caa  gcc/ada/einfo.ads
  9fb4fb23a55081d07dc554eeb3253f91  gcc/ada/elists.adb
  1d7f8772477453dee268f8697433a589  gcc/ada/elists.ads
  2d6cb36d45dda0bf32d01725709f0007  gcc/ada/elists.h
--- 749,755 ----
  b197c097238ab059c90fd0c9452e6a76  gcc/ada/einfo-utils.adb
  9294b28a2b5738443be8b4fcd83a2391  gcc/ada/einfo-utils.ads
  4f882a8b5e78253d5838b1a83e4af5bb  gcc/ada/einfo.adb
! e2f638673992d25b9275953519599e33  gcc/ada/einfo.ads
  9fb4fb23a55081d07dc554eeb3253f91  gcc/ada/elists.adb
  1d7f8772477453dee268f8697433a589  gcc/ada/elists.ads
  2d6cb36d45dda0bf32d01725709f0007  gcc/ada/elists.h
*************** eb0642ebe2b75475e73f7ae765d24bd2  gcc/ad
*** 766,776 ****
  b270d994d3afc78b194d5ab9ddd800c0  gcc/ada/eval_fat.adb
  04c8399e5b8f5b974be325af4fc5793b  gcc/ada/eval_fat.ads
  5062429d8789169d01db0423985a5e99  gcc/ada/exit.c
! bf6347103aec4d2c7abcf829cb740017  gcc/ada/exp_aggr.adb
  cc3a6ec62bea106872aef6143609f920  gcc/ada/exp_aggr.ads
  f5cfbe3c80cc2c7ded2440a52b2b9cf0  gcc/ada/exp_atag.adb
  17872534d797a09463e33092ff3c4b9c  gcc/ada/exp_atag.ads
! 21d2c4bba0a8e76e8fed08b94023fc91  gcc/ada/exp_attr.adb
  16622dd90fd58bfbfa68224d0bfaf8b2  gcc/ada/exp_attr.ads
  4cb08de59df5f8d0a124038dcbb392f0  gcc/ada/exp_cg.adb
  b18d9873e8e43583acd0e69ba6635023  gcc/ada/exp_cg.ads
--- 766,776 ----
  b270d994d3afc78b194d5ab9ddd800c0  gcc/ada/eval_fat.adb
  04c8399e5b8f5b974be325af4fc5793b  gcc/ada/eval_fat.ads
  5062429d8789169d01db0423985a5e99  gcc/ada/exit.c
! 13dcf193e50cfd0c71b0aa99b35b3632  gcc/ada/exp_aggr.adb
  cc3a6ec62bea106872aef6143609f920  gcc/ada/exp_aggr.ads
  f5cfbe3c80cc2c7ded2440a52b2b9cf0  gcc/ada/exp_atag.adb
  17872534d797a09463e33092ff3c4b9c  gcc/ada/exp_atag.ads
! 75f9d4cd8780ae213f93e8b450c7c397  gcc/ada/exp_attr.adb
  16622dd90fd58bfbfa68224d0bfaf8b2  gcc/ada/exp_attr.ads
  4cb08de59df5f8d0a124038dcbb392f0  gcc/ada/exp_cg.adb
  b18d9873e8e43583acd0e69ba6635023  gcc/ada/exp_cg.ads
*************** bdf1e45828c56644b32ac57ae50d5710  gcc/ad
*** 781,801 ****
  855ab7be8dea970234057b661c2254a2  gcc/ada/exp_ch12.ads
  fce186389d317dec9c580f569a2a845a  gcc/ada/exp_ch13.adb
  c6728830f0888dc3385e474b5925c01f  gcc/ada/exp_ch13.ads
! d037443d1b61c02110e124f3c701b449  gcc/ada/exp_ch2.adb
  476e299ea88b583859604d0071046143  gcc/ada/exp_ch2.ads
! e4038d2c72447e972a32b3dfdae7ae55  gcc/ada/exp_ch3.adb
  53e0d855cd76aedff48a9e6266db49e8  gcc/ada/exp_ch3.ads
! 00a2257236804c03d1ca7604dc7c55cf  gcc/ada/exp_ch4.adb
  689dbf89ad9d44a03b54f8ce05455a31  gcc/ada/exp_ch4.ads
! c642a1d7102316f2db8b308db52c324b  gcc/ada/exp_ch5.adb
  3564a044f1e9954ffdd8d3a48643fff9  gcc/ada/exp_ch5.ads
! 2263856420a09ab0977660d04793adc4  gcc/ada/exp_ch6.adb
! c22c79787fe7516adb5a4c55613fb6ab  gcc/ada/exp_ch6.ads
  356896e905fa10471e94e6ed528670a1  gcc/ada/exp_ch7.adb
  31ee5e50c565d4788d9b794acb5bfebb  gcc/ada/exp_ch7.ads
  ff5f2710ba824ff8ef979c388663bac2  gcc/ada/exp_ch8.adb
  c1f464d28d24669bfe156f13cabe5fca  gcc/ada/exp_ch8.ads
! 1b40c4cc65701ad7469641f6ffa19397  gcc/ada/exp_ch9.adb
  9ab762fdf6b68687829c67eae82562e8  gcc/ada/exp_ch9.ads
  f47ce79d25dbb4d2f5cc6c375ee8c103  gcc/ada/exp_code.adb
  983664237ff0b38442a164f60d531514  gcc/ada/exp_code.ads
--- 781,801 ----
  855ab7be8dea970234057b661c2254a2  gcc/ada/exp_ch12.ads
  fce186389d317dec9c580f569a2a845a  gcc/ada/exp_ch13.adb
  c6728830f0888dc3385e474b5925c01f  gcc/ada/exp_ch13.ads
! b9d5bddaa9aa52397a9d53cb0da957ed  gcc/ada/exp_ch2.adb
  476e299ea88b583859604d0071046143  gcc/ada/exp_ch2.ads
! 36e13a85b0752c1df5b9f17291cf3d1e  gcc/ada/exp_ch3.adb
  53e0d855cd76aedff48a9e6266db49e8  gcc/ada/exp_ch3.ads
! c32b79cba61a5b6f930702390ccb4a7e  gcc/ada/exp_ch4.adb
  689dbf89ad9d44a03b54f8ce05455a31  gcc/ada/exp_ch4.ads
! 9dda196327513bf2ff43b720e183d830  gcc/ada/exp_ch5.adb
  3564a044f1e9954ffdd8d3a48643fff9  gcc/ada/exp_ch5.ads
! 70cbc7566dc023482c5cd134af1130f5  gcc/ada/exp_ch6.adb
! 569663f94da41d023cc2d7056ce13439  gcc/ada/exp_ch6.ads
  356896e905fa10471e94e6ed528670a1  gcc/ada/exp_ch7.adb
  31ee5e50c565d4788d9b794acb5bfebb  gcc/ada/exp_ch7.ads
  ff5f2710ba824ff8ef979c388663bac2  gcc/ada/exp_ch8.adb
  c1f464d28d24669bfe156f13cabe5fca  gcc/ada/exp_ch8.ads
! 7a0d42894097baa065ca4fdd8034aa1f  gcc/ada/exp_ch9.adb
  9ab762fdf6b68687829c67eae82562e8  gcc/ada/exp_ch9.ads
  f47ce79d25dbb4d2f5cc6c375ee8c103  gcc/ada/exp_code.adb
  983664237ff0b38442a164f60d531514  gcc/ada/exp_code.ads
*************** ad6d5aa3f46cecc1cc7e6f14db186364  gcc/ad
*** 807,813 ****
  116919038aa6e7d0ec9ce9ab609f0bc2  gcc/ada/exp_dist.ads
  c5ca94cffafc304193b3e436bceb3fb3  gcc/ada/exp_fixd.adb
  9633ee578c6cb9ea5577a5cade68bdcc  gcc/ada/exp_fixd.ads
! 950e359997abe1b839b8fad4caafad05  gcc/ada/exp_imgv.adb
  9fc56117157205ad4de1209b42148d67  gcc/ada/exp_imgv.ads
  9f1bbeb12a811457cfb88a7e17ca9740  gcc/ada/exp_intr.adb
  923affd79668e065bae4808313b11bf9  gcc/ada/exp_intr.ads
--- 807,813 ----
  116919038aa6e7d0ec9ce9ab609f0bc2  gcc/ada/exp_dist.ads
  c5ca94cffafc304193b3e436bceb3fb3  gcc/ada/exp_fixd.adb
  9633ee578c6cb9ea5577a5cade68bdcc  gcc/ada/exp_fixd.ads
! 6e5168db26034525c37e53a6122f3b06  gcc/ada/exp_imgv.adb
  9fc56117157205ad4de1209b42148d67  gcc/ada/exp_imgv.ads
  9f1bbeb12a811457cfb88a7e17ca9740  gcc/ada/exp_intr.adb
  923affd79668e065bae4808313b11bf9  gcc/ada/exp_intr.ads
*************** c5ca94cffafc304193b3e436bceb3fb3  gcc/ad
*** 815,822 ****
  0e4de6363c3876604fc8fa97e180ddcf  gcc/ada/exp_pakd.ads
  d5272b91cd7a6980710ec6f6981d62c1  gcc/ada/exp_prag.adb
  044c8a4d86db8fbb4eaa241c597290a7  gcc/ada/exp_prag.ads
! 5c439124d2bab6aebfa6ddc31b112752  gcc/ada/exp_put_image.adb
! c0f39ee1d515a13193e5726a49291c99  gcc/ada/exp_put_image.ads
  e224b65ac653dc73160c1665f825b557  gcc/ada/exp_sel.adb
  adda0da8d4f449351c0486c3277f39bd  gcc/ada/exp_sel.ads
  624e684a9e8c068e4ad7dc5d3a3eb244  gcc/ada/exp_smem.adb
--- 815,822 ----
  0e4de6363c3876604fc8fa97e180ddcf  gcc/ada/exp_pakd.ads
  d5272b91cd7a6980710ec6f6981d62c1  gcc/ada/exp_prag.adb
  044c8a4d86db8fbb4eaa241c597290a7  gcc/ada/exp_prag.ads
! fb90ac7635c98fabd1180669de3fe664  gcc/ada/exp_put_image.adb
! ff12c6bb781bf3090c35650fb5954a87  gcc/ada/exp_put_image.ads
  e224b65ac653dc73160c1665f825b557  gcc/ada/exp_sel.adb
  adda0da8d4f449351c0486c3277f39bd  gcc/ada/exp_sel.ads
  624e684a9e8c068e4ad7dc5d3a3eb244  gcc/ada/exp_smem.adb
*************** b042ff9582cb94caab7f476203ea6809  gcc/ad
*** 829,835 ****
  52a5741c37559d0398594d7baa1c99ac  gcc/ada/exp_tss.ads
  17c1e6db56a29cef37eb0acfa2e2176f  gcc/ada/exp_unst.adb
  d2f34876e61000e49299ef9b2569cbbf  gcc/ada/exp_unst.ads
! e0890410b45b81ec10bec8de64107e53  gcc/ada/exp_util.adb
  f38c33811ff4495921f4fab803f1b045  gcc/ada/exp_util.ads
  3bba6a658c16a14ec3297c802dcde881  gcc/ada/expander.adb
  53bb0eb5c4feebf8b5fbef639f5827bd  gcc/ada/expander.ads
--- 829,835 ----
  52a5741c37559d0398594d7baa1c99ac  gcc/ada/exp_tss.ads
  17c1e6db56a29cef37eb0acfa2e2176f  gcc/ada/exp_unst.adb
  d2f34876e61000e49299ef9b2569cbbf  gcc/ada/exp_unst.ads
! c03e4fe0f4491dfe1c74ad2e30ff3518  gcc/ada/exp_util.adb
  f38c33811ff4495921f4fab803f1b045  gcc/ada/exp_util.ads
  3bba6a658c16a14ec3297c802dcde881  gcc/ada/expander.adb
  53bb0eb5c4feebf8b5fbef639f5827bd  gcc/ada/expander.ads
*************** fdb9382a8288a3a5b805910a0a3615e8  gcc/ad
*** 844,850 ****
  576d7463667fc4c859a05f9e19146427  gcc/ada/fname-uf.ads
  ec7cf235c00294fe67198b9bf264f3d9  gcc/ada/fname.adb
  5ef403dc7e6540ad58ec4ccec10de65c  gcc/ada/fname.ads
! 0654e14fe6913f4b6d80a4c5f51805df  gcc/ada/freeze.adb
  0cfb73b82bc6277eb801329c392229d2  gcc/ada/freeze.ads
  94e87c9cab4c338fd7a9cd7f89adbc90  gcc/ada/frontend.adb
  6f776be1d84e9d8c996b576c19a4349f  gcc/ada/frontend.ads
--- 844,850 ----
  576d7463667fc4c859a05f9e19146427  gcc/ada/fname-uf.ads
  ec7cf235c00294fe67198b9bf264f3d9  gcc/ada/fname.adb
  5ef403dc7e6540ad58ec4ccec10de65c  gcc/ada/fname.ads
! 5224ada998eff38699baf2b81d28e64a  gcc/ada/freeze.adb
  0cfb73b82bc6277eb801329c392229d2  gcc/ada/freeze.ads
  94e87c9cab4c338fd7a9cd7f89adbc90  gcc/ada/frontend.adb
  6f776be1d84e9d8c996b576c19a4349f  gcc/ada/frontend.ads
*************** b5542229d5cce6dd4fff7dc4ba8e789b  gcc/ad
*** 857,863 ****
  9225a8cf7f4c37e1ac2c83d2916a1bdf  gcc/ada/gcc-interface/ada.h
  910c4ca7f1543916fa6923fa18e926e0  gcc/ada/gcc-interface/config-lang.in
  27a97efc2691bb0e500931269e932bee  gcc/ada/gcc-interface/cuintp.cc
! 8fca78975db7b17ddd18c2ddf77f1647  gcc/ada/gcc-interface/decl.cc
  fa1feb51010fc73b933487acbdcf85e8  gcc/ada/gcc-interface/gadaint.h
  846fe3bd3db6658b85769bf0216e74fb  gcc/ada/gcc-interface/gigi.h
  8c3391ec25d2f8a3e26b0553d537d3e2  gcc/ada/gcc-interface/lang-specs.h
--- 857,863 ----
  9225a8cf7f4c37e1ac2c83d2916a1bdf  gcc/ada/gcc-interface/ada.h
  910c4ca7f1543916fa6923fa18e926e0  gcc/ada/gcc-interface/config-lang.in
  27a97efc2691bb0e500931269e932bee  gcc/ada/gcc-interface/cuintp.cc
! a197221d170e1cc91ca638ac5f849238  gcc/ada/gcc-interface/decl.cc
  fa1feb51010fc73b933487acbdcf85e8  gcc/ada/gcc-interface/gadaint.h
  846fe3bd3db6658b85769bf0216e74fb  gcc/ada/gcc-interface/gigi.h
  8c3391ec25d2f8a3e26b0553d537d3e2  gcc/ada/gcc-interface/lang-specs.h
*************** fa1feb51010fc73b933487acbdcf85e8  gcc/ad
*** 866,876 ****
  e8ba734d63b4001c905ea24a0dc1b6a3  gcc/ada/gcc-interface/misc.cc
  a74b4504c5ad4ed4e963f0691c289b40  gcc/ada/gcc-interface/system.ads
  b350a6fd65cafe8bd47dc42192437310  gcc/ada/gcc-interface/targtyps.cc
! c77b069c11d396024d465bc58c32292f  gcc/ada/gcc-interface/trans.cc
! e8e1dea48e7ee6c84d438db1b4a6a9b2  gcc/ada/gcc-interface/utils.cc
  7b0d708fd189018a87468ef844fc3811  gcc/ada/gcc-interface/utils2.cc
  20ab1d2ee73423b8b0fababbae54659c  gcc/ada/gen_il-fields.ads
! 580645a6185724324a0a7aad4f86301c  gcc/ada/gen_il-gen-gen_entities.adb
  ebed5be70c8d5e75b9d3e8ea56e94729  gcc/ada/gen_il-gen-gen_nodes.adb
  fa07e4c6240b8cfff6d7d98112fee236  gcc/ada/gen_il-gen.adb
  c979a98c6b57608c79d578871fa0c58a  gcc/ada/gen_il-gen.ads
--- 866,876 ----
  e8ba734d63b4001c905ea24a0dc1b6a3  gcc/ada/gcc-interface/misc.cc
  a74b4504c5ad4ed4e963f0691c289b40  gcc/ada/gcc-interface/system.ads
  b350a6fd65cafe8bd47dc42192437310  gcc/ada/gcc-interface/targtyps.cc
! da03d35f4d69ea6f735edce7df124c15  gcc/ada/gcc-interface/trans.cc
! a66c2acc9fb0d70b4c6209180d10b200  gcc/ada/gcc-interface/utils.cc
  7b0d708fd189018a87468ef844fc3811  gcc/ada/gcc-interface/utils2.cc
  20ab1d2ee73423b8b0fababbae54659c  gcc/ada/gen_il-fields.ads
! 2f546cdb7448f908e8cb114df99cc70d  gcc/ada/gen_il-gen-gen_entities.adb
  ebed5be70c8d5e75b9d3e8ea56e94729  gcc/ada/gen_il-gen-gen_nodes.adb
  fa07e4c6240b8cfff6d7d98112fee236  gcc/ada/gen_il-gen.adb
  c979a98c6b57608c79d578871fa0c58a  gcc/ada/gen_il-gen.ads
*************** ceea56f2846e3f170ecd0707ee0cd771  gcc/ad
*** 893,899 ****
  917ea7311a30ec4c5cec3e610ca640c2  gcc/ada/gnat2.gpr
  49c5329fd360e2bf4e549bc7de93aab7  gcc/ada/gnat_cuda.adb
  de69fc271ce889490809004600fcac0f  gcc/ada/gnat_cuda.ads
! dc9cda00481a5069f6febcb6a54e9c73  gcc/ada/gnat_rm.texi
  aab9a487c7c6377a292d239367dc7c62  gcc/ada/gnat_ugn.texi
  957e02fdb4684d592d9172cea8dfb4cb  gcc/ada/gnatbind.adb
  fff8dfca966e9d6f779ce90e57344a0f  gcc/ada/gnatbind.ads
--- 893,899 ----
  917ea7311a30ec4c5cec3e610ca640c2  gcc/ada/gnat2.gpr
  49c5329fd360e2bf4e549bc7de93aab7  gcc/ada/gnat_cuda.adb
  de69fc271ce889490809004600fcac0f  gcc/ada/gnat_cuda.ads
! 99ba48291635f2190727bb9bb49660d6  gcc/ada/gnat_rm.texi
  aab9a487c7c6377a292d239367dc7c62  gcc/ada/gnat_ugn.texi
  957e02fdb4684d592d9172cea8dfb4cb  gcc/ada/gnatbind.adb
  fff8dfca966e9d6f779ce90e57344a0f  gcc/ada/gnatbind.ads
*************** e7512e43fd2370e49f1edc56ff00f814  gcc/ad
*** 905,911 ****
  670cd3e724c6b64c7b322c6e75a0e7c4  gcc/ada/gnathtml.pl
  2eddc8dde06f1e8d1ae7a527fb72c263  gcc/ada/gnatkr.adb
  d7392969bf1bfb1dc263eadee42f41a4  gcc/ada/gnatkr.ads
! 396c7dd9ce4bc049ae401461ae99943a  gcc/ada/gnatlink.adb
  b82b4a0c5285d19d7f428258166a8842  gcc/ada/gnatlink.ads
  e4d52da60b01c43b1314ebb8d2d4d3fd  gcc/ada/gnatls.adb
  e204de79f4f6b64632812ec5d99d0161  gcc/ada/gnatls.ads
--- 905,911 ----
  670cd3e724c6b64c7b322c6e75a0e7c4  gcc/ada/gnathtml.pl
  2eddc8dde06f1e8d1ae7a527fb72c263  gcc/ada/gnatkr.adb
  d7392969bf1bfb1dc263eadee42f41a4  gcc/ada/gnatkr.ads
! 53f4a502665a8d6aa45b0cda91f2b8e7  gcc/ada/gnatlink.adb
  b82b4a0c5285d19d7f428258166a8842  gcc/ada/gnatlink.ads
  e4d52da60b01c43b1314ebb8d2d4d3fd  gcc/ada/gnatls.adb
  e204de79f4f6b64632812ec5d99d0161  gcc/ada/gnatls.ads
*************** ce9d63685950bde4c22b21c81ee87f10  gcc/ad
*** 2204,2210 ****
  3e3d627bde4f659149ea28b1dd9df65f  gcc/ada/libgnat/s-forrea.ads
  926c6616da8295743b34f040639247a6  gcc/ada/libgnat/s-gearop.adb
  6e234ce6ded6e03841bcac125cabd200  gcc/ada/libgnat/s-gearop.ads
! d2f81e36dbf4f87959e6ea1d347866e9  gcc/ada/libgnat/s-genbig.adb
  dad5dacde69a548c66911c4c27820786  gcc/ada/libgnat/s-genbig.ads
  f634b0d0730dc8e7cf76569b12756c23  gcc/ada/libgnat/s-geveop.adb
  6c43097ff5d87f24f861b19d4fd2c60e  gcc/ada/libgnat/s-geveop.ads
--- 2204,2210 ----
  3e3d627bde4f659149ea28b1dd9df65f  gcc/ada/libgnat/s-forrea.ads
  926c6616da8295743b34f040639247a6  gcc/ada/libgnat/s-gearop.adb
  6e234ce6ded6e03841bcac125cabd200  gcc/ada/libgnat/s-gearop.ads
! e4cafef82fedb414a82a82a54bc7b7d6  gcc/ada/libgnat/s-genbig.adb
  dad5dacde69a548c66911c4c27820786  gcc/ada/libgnat/s-genbig.ads
  f634b0d0730dc8e7cf76569b12756c23  gcc/ada/libgnat/s-geveop.adb
  6c43097ff5d87f24f861b19d4fd2c60e  gcc/ada/libgnat/s-geveop.ads
*************** e8bfda3d740dfbd8ccf4fc493d8457e1  gcc/ad
*** 2300,2305 ****
--- 2300,2306 ----
  fa0d4cc01f2a630943bfb0790f346d9f  gcc/ada/libgnat/s-optide.adb
  cebea250ccdaa20cc6766c78a8157d70  gcc/ada/libgnat/s-os_lib.adb
  5618e5fb1aebae9bf2a7b4fb5e4fb337  gcc/ada/libgnat/s-os_lib.ads
+ 03bc482ee69c65fe92b39f1ce7930d6a  gcc/ada/libgnat/s-oslock__darwin.ads
  ee69d5c31f1534ccc0aa80ab59587249  gcc/ada/libgnat/s-oslock__dummy.ads
  0b6cb9ac13ab2e70186fe46147ac6343  gcc/ada/libgnat/s-oslock__mingw.ads
  de8b2eecb4d04b82ea732adf1d76550f  gcc/ada/libgnat/s-oslock__posix.ads
*************** fb8ce448fc18100b7ab3696a970cefef  gcc/ad
*** 2600,2608 ****
  d7ef7e182a1e37222a10286b201abda7  gcc/ada/libgnat/s-scaval.ads
  8de14d068ceff95cf4226f50bcfe6a69  gcc/ada/libgnat/s-scaval__128.adb
  faf834df5906c5c44a11bf2e1714010c  gcc/ada/libgnat/s-scaval__128.ads
! 360a0e644022a2ea5c4c1a658e454b7c  gcc/ada/libgnat/s-secsta.adb
  c357811accaff09385431aded29b40aa  gcc/ada/libgnat/s-secsta.ads
! 677f7165ecde0a07422fe01be0e28a48  gcc/ada/libgnat/s-secsta__cheri.adb
  f3707f4d20aaf91eaf7ae4cbf0c0885c  gcc/ada/libgnat/s-sequio.adb
  63640562aa4ba92f5b0c26c9ab31bde5  gcc/ada/libgnat/s-sequio.ads
  26cec890209604c8977bd0d2e5a3dd93  gcc/ada/libgnat/s-shabig.ads
--- 2601,2609 ----
  d7ef7e182a1e37222a10286b201abda7  gcc/ada/libgnat/s-scaval.ads
  8de14d068ceff95cf4226f50bcfe6a69  gcc/ada/libgnat/s-scaval__128.adb
  faf834df5906c5c44a11bf2e1714010c  gcc/ada/libgnat/s-scaval__128.ads
! e26657d87c48dc2013170b7d82a93f88  gcc/ada/libgnat/s-secsta.adb
  c357811accaff09385431aded29b40aa  gcc/ada/libgnat/s-secsta.ads
! 9aebf4026339b6b995ff14d36133cde7  gcc/ada/libgnat/s-secsta__cheri.adb
  f3707f4d20aaf91eaf7ae4cbf0c0885c  gcc/ada/libgnat/s-sequio.adb
  63640562aa4ba92f5b0c26c9ab31bde5  gcc/ada/libgnat/s-sequio.ads
  26cec890209604c8977bd0d2e5a3dd93  gcc/ada/libgnat/s-shabig.ads
*************** bda6e6153863f28fe5e93d505727b03b  gcc/ad
*** 2633,2639 ****
  025b925122caa2aa5bbc931abccc32f1  gcc/ada/libgnat/s-stoele.ads
  0a0b6770f7babc248b2a2f27ab8b52bd  gcc/ada/libgnat/s-stopoo.adb
  3adae9a9cfd5cb0dc6a87f30a41a32cc  gcc/ada/libgnat/s-stopoo.ads
! 4ca21e4a3c1fea6cfa36b7bc6a6b66b7  gcc/ada/libgnat/s-stposu.adb
  3de12659c89015b6d86300c9fd13f0c3  gcc/ada/libgnat/s-stposu.ads
  d37cb5009fbf6cc86d2d4380f5882ad9  gcc/ada/libgnat/s-stratt.adb
  ab6a28dbd6b37651186442d1595a4e9d  gcc/ada/libgnat/s-stratt.ads
--- 2634,2640 ----
  025b925122caa2aa5bbc931abccc32f1  gcc/ada/libgnat/s-stoele.ads
  0a0b6770f7babc248b2a2f27ab8b52bd  gcc/ada/libgnat/s-stopoo.adb
  3adae9a9cfd5cb0dc6a87f30a41a32cc  gcc/ada/libgnat/s-stopoo.ads
! ce585ca6d9107de5141155187ba67b57  gcc/ada/libgnat/s-stposu.adb
  3de12659c89015b6d86300c9fd13f0c3  gcc/ada/libgnat/s-stposu.ads
  d37cb5009fbf6cc86d2d4380f5882ad9  gcc/ada/libgnat/s-stratt.adb
  ab6a28dbd6b37651186442d1595a4e9d  gcc/ada/libgnat/s-stratt.ads
*************** fcfa33c29572e4f892bd68b226e0184d  gcc/ad
*** 2891,2909 ****
  bb35d323ecf448aa8fb7025a4bc206ac  gcc/ada/raise.h
  60f15e9242cc708164c2465f35b7bcee  gcc/ada/repinfo-input.adb
  2068823632327326518141ecef478b56  gcc/ada/repinfo-input.ads
! c03cfc430368506adba96bf2402f38cd  gcc/ada/repinfo.adb
  2b7ee770fce987fa4a536a7ff6f66d28  gcc/ada/repinfo.ads
  9f01bfb3f02044d2af9dd8653ff046c7  gcc/ada/repinfo.h
  3d4a1dc93d967d84654b6489aaf51b1b  gcc/ada/restrict.adb
  058035f6a217fb7bed8ac566527a2c23  gcc/ada/restrict.ads
  9d12840e7f4b919f1f71a18a65b3463c  gcc/ada/rident.ads
! 32312ab752a2a0382c9276e387b389e1  gcc/ada/rtfinal.c
! 01263778e97af0ecb135164f1bbfd6ad  gcc/ada/rtinit.c
  b97bb61639a4fbef04ce0a15c662ecbd  gcc/ada/rtsfind.adb
  b33c5657f5f656c345cebf31636501bf  gcc/ada/rtsfind.ads
  66e987f268458746a6afb190c151af7a  gcc/ada/runtime.h
  b6100bf6eaab78f9424e994302129621  gcc/ada/s-oscons-tmplt.c
! a34bfe2b691bf488816cc77770321ff3  gcc/ada/s-pack.adb.tmpl
  769f019e3de5c30e3ae7534efbba17df  gcc/ada/s-pack.ads.tmpl
  f2b44210590da3ce7d60699034656b7f  gcc/ada/scans.adb
  4977672198cb113709dc518f67405d1b  gcc/ada/scans.ads
--- 2892,2910 ----
  bb35d323ecf448aa8fb7025a4bc206ac  gcc/ada/raise.h
  60f15e9242cc708164c2465f35b7bcee  gcc/ada/repinfo-input.adb
  2068823632327326518141ecef478b56  gcc/ada/repinfo-input.ads
! 47fd29f9f6d25a0b5b290e107a397458  gcc/ada/repinfo.adb
  2b7ee770fce987fa4a536a7ff6f66d28  gcc/ada/repinfo.ads
  9f01bfb3f02044d2af9dd8653ff046c7  gcc/ada/repinfo.h
  3d4a1dc93d967d84654b6489aaf51b1b  gcc/ada/restrict.adb
  058035f6a217fb7bed8ac566527a2c23  gcc/ada/restrict.ads
  9d12840e7f4b919f1f71a18a65b3463c  gcc/ada/rident.ads
! ea22245a2f9a79e09dc4fcb1574dcbfc  gcc/ada/rtfinal.c
! 1f05036b0eb43e0acd97ed27cf4f6f10  gcc/ada/rtinit.c
  b97bb61639a4fbef04ce0a15c662ecbd  gcc/ada/rtsfind.adb
  b33c5657f5f656c345cebf31636501bf  gcc/ada/rtsfind.ads
  66e987f268458746a6afb190c151af7a  gcc/ada/runtime.h
  b6100bf6eaab78f9424e994302129621  gcc/ada/s-oscons-tmplt.c
! 6c6bc69518c778cd3f35ca2095dc1ce1  gcc/ada/s-pack.adb.tmpl
  769f019e3de5c30e3ae7534efbba17df  gcc/ada/s-pack.ads.tmpl
  f2b44210590da3ce7d60699034656b7f  gcc/ada/scans.adb
  4977672198cb113709dc518f67405d1b  gcc/ada/scans.ads
*************** abd831e54ebd759115e62d420bdb5c2f  gcc/ad
*** 2918,2928 ****
  89b7ed9db10b2220f7130b1d92b0624a  gcc/ada/scos.h
  1e9843bd9ac3288c126ec7d6727ea8e6  gcc/ada/sdefault.ads
  3bf01e026b494a442389a5d3541785b8  gcc/ada/seh_init.c
! 162cc8e58f789b4cd25dc980dc46398a  gcc/ada/sem.adb
  afaa0a52de285d1aad9c58b79b424a1f  gcc/ada/sem.ads
! 4ab25deb814c762e9dcbea9e3fbe4ac8  gcc/ada/sem_aggr.adb
  d9e9e67a1e6554ab3bc7e11269dd3763  gcc/ada/sem_aggr.ads
! 278b33ffab0157c51132dcd3fc0daa1b  gcc/ada/sem_attr.adb
  bfe4748123d415f6eb13d89a585468f1  gcc/ada/sem_attr.ads
  4a02c8331cea42852aa409345905ab04  gcc/ada/sem_aux.adb
  3f6d12eb2d9c7a6a829eaf2bda0535a5  gcc/ada/sem_aux.ads
--- 2919,2929 ----
  89b7ed9db10b2220f7130b1d92b0624a  gcc/ada/scos.h
  1e9843bd9ac3288c126ec7d6727ea8e6  gcc/ada/sdefault.ads
  3bf01e026b494a442389a5d3541785b8  gcc/ada/seh_init.c
! b0607745e568ea27d4cb1091a13ee2ce  gcc/ada/sem.adb
  afaa0a52de285d1aad9c58b79b424a1f  gcc/ada/sem.ads
! baccd15153822f6fbc278d313cf492fd  gcc/ada/sem_aggr.adb
  d9e9e67a1e6554ab3bc7e11269dd3763  gcc/ada/sem_aggr.ads
! fd9b5fc36ee037edcbc5d5bb784d5d45  gcc/ada/sem_attr.adb
  bfe4748123d415f6eb13d89a585468f1  gcc/ada/sem_attr.ads
  4a02c8331cea42852aa409345905ab04  gcc/ada/sem_aux.adb
  3f6d12eb2d9c7a6a829eaf2bda0535a5  gcc/ada/sem_aux.ads
*************** bfe4748123d415f6eb13d89a585468f1  gcc/ad
*** 2930,2952 ****
  88daa5c9b6e135316b52695cae25a496  gcc/ada/sem_case.ads
  84667b3de209c0b04f82a349c6125ab0  gcc/ada/sem_cat.adb
  e364f4e3ae92066699cc93a8f7b828c1  gcc/ada/sem_cat.ads
! 53d4564d9d188f92bc3a52fb418d5826  gcc/ada/sem_ch10.adb
  14c23ddb8ce8f7ab6478f3aff202d2bf  gcc/ada/sem_ch10.ads
  5980a02146588bf0e31ced2382290670  gcc/ada/sem_ch11.adb
  1b6f89866a5d427002df059be3847d62  gcc/ada/sem_ch11.ads
! 2d222d3bc572e8af20b4403ed4ac5534  gcc/ada/sem_ch12.adb
  b0a3315dce9de8e3bbbb3682c8b0e2ff  gcc/ada/sem_ch12.ads
! bdd184bdbe9fb946500215a918ba9014  gcc/ada/sem_ch13.adb
  24bb91233702860aa2a308e59ba7cb6a  gcc/ada/sem_ch13.ads
  14326c522718c8cb8415b13a79c07972  gcc/ada/sem_ch2.adb
  2471d629be4739ff5135aa87a2ec9166  gcc/ada/sem_ch2.ads
! d3ec59bf77afef2bc8177941d25fe6d5  gcc/ada/sem_ch3.adb
  5fd10023b617fc61dce7c2801674285d  gcc/ada/sem_ch3.ads
! 3e54b6459faeeb42c9c8e748cfc81a3f  gcc/ada/sem_ch4.adb
  adba03aae1f439b9e9db8cea05d8e03f  gcc/ada/sem_ch4.ads
  3d2fb7e75bcf5cb7e2f014691fbc1d87  gcc/ada/sem_ch5.adb
  cbfbd3e4737f56717fc2ffda6b38f125  gcc/ada/sem_ch5.ads
! 7992ecc42e8487f8cdb65f2d2b283a10  gcc/ada/sem_ch6.adb
  b514f7f350605ee2678b654f7eef9152  gcc/ada/sem_ch6.ads
  3c7c6e6b95a9cddb1d6f1a42a5962379  gcc/ada/sem_ch7.adb
  24a1265e6a25756265643858abcf7ded  gcc/ada/sem_ch7.ads
--- 2931,2953 ----
  88daa5c9b6e135316b52695cae25a496  gcc/ada/sem_case.ads
  84667b3de209c0b04f82a349c6125ab0  gcc/ada/sem_cat.adb
  e364f4e3ae92066699cc93a8f7b828c1  gcc/ada/sem_cat.ads
! 1f29100983a397a5430c18faca8b6660  gcc/ada/sem_ch10.adb
  14c23ddb8ce8f7ab6478f3aff202d2bf  gcc/ada/sem_ch10.ads
  5980a02146588bf0e31ced2382290670  gcc/ada/sem_ch11.adb
  1b6f89866a5d427002df059be3847d62  gcc/ada/sem_ch11.ads
! add4ee44b18268dbe3d59cb4d9783497  gcc/ada/sem_ch12.adb
  b0a3315dce9de8e3bbbb3682c8b0e2ff  gcc/ada/sem_ch12.ads
! d66c7c0f7cdacbc9e39c757583ff4ee1  gcc/ada/sem_ch13.adb
  24bb91233702860aa2a308e59ba7cb6a  gcc/ada/sem_ch13.ads
  14326c522718c8cb8415b13a79c07972  gcc/ada/sem_ch2.adb
  2471d629be4739ff5135aa87a2ec9166  gcc/ada/sem_ch2.ads
! 41680984c5abf31afd3d60fbb33a3daa  gcc/ada/sem_ch3.adb
  5fd10023b617fc61dce7c2801674285d  gcc/ada/sem_ch3.ads
! d662b1429926c70cce061f8c0b6ec5fb  gcc/ada/sem_ch4.adb
  adba03aae1f439b9e9db8cea05d8e03f  gcc/ada/sem_ch4.ads
  3d2fb7e75bcf5cb7e2f014691fbc1d87  gcc/ada/sem_ch5.adb
  cbfbd3e4737f56717fc2ffda6b38f125  gcc/ada/sem_ch5.ads
! 62d192ac2f886ccdf43b3908637a43d7  gcc/ada/sem_ch6.adb
  b514f7f350605ee2678b654f7eef9152  gcc/ada/sem_ch6.ads
  3c7c6e6b95a9cddb1d6f1a42a5962379  gcc/ada/sem_ch7.adb
  24a1265e6a25756265643858abcf7ded  gcc/ada/sem_ch7.ads
*************** b514f7f350605ee2678b654f7eef9152  gcc/ad
*** 2954,2966 ****
  f3965d375e31f991fba42df0595a3470  gcc/ada/sem_ch8.ads
  8be6bc881183cddc88b43e757a478bc1  gcc/ada/sem_ch9.adb
  7b283bd6453de444c7075a8c6f215dda  gcc/ada/sem_ch9.ads
! dea2a3321bde0d3ed6be665ade24a2c6  gcc/ada/sem_dim.adb
  d0ed9c569455451ee26c8e2565b7125b  gcc/ada/sem_dim.ads
! 0b4ce58f68d5aff0988a26cb09840d67  gcc/ada/sem_disp.adb
  40937cb7584e45e4c545aa3e4c20fbb2  gcc/ada/sem_disp.ads
  8f677120e0bcecbdcfa5b9c4f44cb282  gcc/ada/sem_dist.adb
  a38c4ce4bc2936bd0a73c28ff1b0df61  gcc/ada/sem_dist.ads
! ea4d856a616d24b9db47871b82e88726  gcc/ada/sem_elab.adb
  c074ec7450863300eff2a21c036a624b  gcc/ada/sem_elab.ads
  1dcf7c5349839b9e9ab4ee0d1954c7c6  gcc/ada/sem_elim.adb
  c837e01542a712c622bac1cd152fc080  gcc/ada/sem_elim.ads
--- 2955,2967 ----
  f3965d375e31f991fba42df0595a3470  gcc/ada/sem_ch8.ads
  8be6bc881183cddc88b43e757a478bc1  gcc/ada/sem_ch9.adb
  7b283bd6453de444c7075a8c6f215dda  gcc/ada/sem_ch9.ads
! a3ec3b68d1191d6cfaaaa4ba524b8896  gcc/ada/sem_dim.adb
  d0ed9c569455451ee26c8e2565b7125b  gcc/ada/sem_dim.ads
! db704f222efa0f8a17d2cd7711c09627  gcc/ada/sem_disp.adb
  40937cb7584e45e4c545aa3e4c20fbb2  gcc/ada/sem_disp.ads
  8f677120e0bcecbdcfa5b9c4f44cb282  gcc/ada/sem_dist.adb
  a38c4ce4bc2936bd0a73c28ff1b0df61  gcc/ada/sem_dist.ads
! 2ac0bcc8c012f664bd89b9a24521c156  gcc/ada/sem_elab.adb
  c074ec7450863300eff2a21c036a624b  gcc/ada/sem_elab.ads
  1dcf7c5349839b9e9ab4ee0d1954c7c6  gcc/ada/sem_elim.adb
  c837e01542a712c622bac1cd152fc080  gcc/ada/sem_elim.ads
*************** e8e79e2a818321d7816e27eed8d17404  gcc/ad
*** 2970,2987 ****
  66ccba8e3b77fa8d6e0e13f6368d804a  gcc/ada/sem_intr.ads
  4a954a685009a9b0bcf72a8517dc3bdf  gcc/ada/sem_mech.adb
  bcb22deebc83b966e7be367087d9fd7b  gcc/ada/sem_mech.ads
! 44710494391a9ea926e38cb81fa49fbf  gcc/ada/sem_prag.adb
  3d4cec1697839c758bf4ee78035143d3  gcc/ada/sem_prag.ads
! 682159c8a517a990414691a040df1b40  gcc/ada/sem_res.adb
! bb01f11ceaa352a8b99f95fcbcfe97d9  gcc/ada/sem_res.ads
  28d33ede4288814374d1909847798c7d  gcc/ada/sem_scil.adb
  db6f5a37bd59fd83ff3286e71ab985fe  gcc/ada/sem_scil.ads
  224e89cdc39291b2a52f3e96e76cc3aa  gcc/ada/sem_smem.adb
  89d73c108bd8921f6d6cd84d98726ea5  gcc/ada/sem_smem.ads
! d0a2f5b2f65a874363f7fbe2b9a79f8b  gcc/ada/sem_type.adb
  dee50852181adfada17fb5b7423ed973  gcc/ada/sem_type.ads
! c1115e82e269d460e3f41dd81263544d  gcc/ada/sem_util.adb
! 907db3161ce24f5c766ff52fc6b8bbd0  gcc/ada/sem_util.ads
  e4e5495b136cf8092bcca5f770b4f9a7  gcc/ada/sem_warn.adb
  e71db5efd6c6d9969e1e7887ebe4e6b5  gcc/ada/sem_warn.ads
  239ca67ac9aa430abfe5120a8d4302d9  gcc/ada/set_targ.adb
--- 2971,2988 ----
  66ccba8e3b77fa8d6e0e13f6368d804a  gcc/ada/sem_intr.ads
  4a954a685009a9b0bcf72a8517dc3bdf  gcc/ada/sem_mech.adb
  bcb22deebc83b966e7be367087d9fd7b  gcc/ada/sem_mech.ads
! e194b17ba1df97f90ca61f6de49c194f  gcc/ada/sem_prag.adb
  3d4cec1697839c758bf4ee78035143d3  gcc/ada/sem_prag.ads
! 9f49ff013339b22f5d76832f13feabd4  gcc/ada/sem_res.adb
! 386c8b0cca974dd440238f8859677a5f  gcc/ada/sem_res.ads
  28d33ede4288814374d1909847798c7d  gcc/ada/sem_scil.adb
  db6f5a37bd59fd83ff3286e71ab985fe  gcc/ada/sem_scil.ads
  224e89cdc39291b2a52f3e96e76cc3aa  gcc/ada/sem_smem.adb
  89d73c108bd8921f6d6cd84d98726ea5  gcc/ada/sem_smem.ads
! 2725ef487c2447b8714c2c83b19a9b99  gcc/ada/sem_type.adb
  dee50852181adfada17fb5b7423ed973  gcc/ada/sem_type.ads
! 4292a2fc5b42cbce7ec79d19cc5f7eb9  gcc/ada/sem_util.adb
! 3d1db15a678b9ffc181d2df6ba742fdf  gcc/ada/sem_util.ads
  e4e5495b136cf8092bcca5f770b4f9a7  gcc/ada/sem_warn.adb
  e71db5efd6c6d9969e1e7887ebe4e6b5  gcc/ada/sem_warn.ads
  239ca67ac9aa430abfe5120a8d4302d9  gcc/ada/set_targ.adb
*************** f32c4d3d5df9ad9663b4978f7f8a2573  gcc/ad
*** 3001,3007 ****
  d78423bdc8b85ab7cdc070996aa4d544  gcc/ada/sinfo-utils.adb
  a279552ee28f4ed267298848351ccbc6  gcc/ada/sinfo-utils.ads
  e6d5c3ccb5893bb3943fbdf529b298d6  gcc/ada/sinfo.adb
! 8e8c42b290106081cdc833dabc5198d0  gcc/ada/sinfo.ads
  ebb37a07fb72782f86b0c141d3f6077c  gcc/ada/sinput-c.adb
  ec9033e4caebeb446063de16e18918f4  gcc/ada/sinput-c.ads
  2fec6a5fbe7c9e765ea70c82814b0fd3  gcc/ada/sinput-d.adb
--- 3002,3008 ----
  d78423bdc8b85ab7cdc070996aa4d544  gcc/ada/sinfo-utils.adb
  a279552ee28f4ed267298848351ccbc6  gcc/ada/sinfo-utils.ads
  e6d5c3ccb5893bb3943fbdf529b298d6  gcc/ada/sinfo.adb
! cf33b8a5c6ebad1e0cddb59c765649bb  gcc/ada/sinfo.ads
  ebb37a07fb72782f86b0c141d3f6077c  gcc/ada/sinput-c.adb
  ec9033e4caebeb446063de16e18918f4  gcc/ada/sinput-c.ads
  2fec6a5fbe7c9e765ea70c82814b0fd3  gcc/ada/sinput-d.adb
*************** ceaa52edf6355622601cd30f7c096b06  gcc/ad
*** 3027,3033 ****
  426fe1648aa969a711bc91b140c31950  gcc/ada/strub.ads
  8afc1c7d58bdd832cfc07e0b7f154b20  gcc/ada/style.adb
  47034d64868bf09604f7cf41bfa8f20b  gcc/ada/style.ads
! 602e5a3e4582230b3df902db3781e848  gcc/ada/styleg.adb
  93df3efe29025f787333e334faf17c55  gcc/ada/styleg.ads
  2e977ce8e3a4cc0d1344850f639eea97  gcc/ada/stylesw.adb
  072e20e96999b6e3137326e76e71b03d  gcc/ada/stylesw.ads
--- 3028,3034 ----
  426fe1648aa969a711bc91b140c31950  gcc/ada/strub.ads
  8afc1c7d58bdd832cfc07e0b7f154b20  gcc/ada/style.adb
  47034d64868bf09604f7cf41bfa8f20b  gcc/ada/style.ads
! 68cb599e2bce9af2fffbe9686938edc4  gcc/ada/styleg.adb
  93df3efe29025f787333e334faf17c55  gcc/ada/styleg.ads
  2e977ce8e3a4cc0d1344850f639eea97  gcc/ada/stylesw.adb
  072e20e96999b6e3137326e76e71b03d  gcc/ada/stylesw.ads
*************** cc77d76c407f099273c5d6691a91f67a  gcc/ad
*** 3086,3097 ****
  a8f3f69de7abdd693a971d4655971bf7  gcc/ada/xutil.ads
  60f1f34895b64cc9a3b2d590e6cf576f  gcc/addresses.h
  df3f6c6882fc8f715d4cc537af0f6442  gcc/adjust-alignment.cc
! 1d1b5baf1ff7de131233c8f72bb97a14  gcc/alias.cc
  0d0b7a8d67ab4391dba470baf07f7ad4  gcc/alias.h
  a13250e9011949e791f210139f4c4323  gcc/align.h
  192d075c6984da6ef1e282fd63829079  gcc/alloc-pool.cc
  b2194a7136db5f26272ca6162d858997  gcc/alloc-pool.h
! 3508fa21f94580fa968e5f0996b93a23  gcc/analyzer/ChangeLog
  0d3befc0b4bf59d902e1cf42adbe4bbf  gcc/analyzer/access-diagram.cc
  d06b0bdd3e866e801261efae99b70197  gcc/analyzer/access-diagram.h
  32d9f668dd8c176f7281357c6176be49  gcc/analyzer/analysis-plan.cc
--- 3087,3098 ----
  a8f3f69de7abdd693a971d4655971bf7  gcc/ada/xutil.ads
  60f1f34895b64cc9a3b2d590e6cf576f  gcc/addresses.h
  df3f6c6882fc8f715d4cc537af0f6442  gcc/adjust-alignment.cc
! 079505539424529dd1f369371eaa9c2d  gcc/alias.cc
  0d0b7a8d67ab4391dba470baf07f7ad4  gcc/alias.h
  a13250e9011949e791f210139f4c4323  gcc/align.h
  192d075c6984da6ef1e282fd63829079  gcc/alloc-pool.cc
  b2194a7136db5f26272ca6162d858997  gcc/alloc-pool.h
! 5752b6605bb3a1c772cb164242a23174  gcc/analyzer/ChangeLog
  0d3befc0b4bf59d902e1cf42adbe4bbf  gcc/analyzer/access-diagram.cc
  d06b0bdd3e866e801261efae99b70197  gcc/analyzer/access-diagram.h
  32d9f668dd8c176f7281357c6176be49  gcc/analyzer/analysis-plan.cc
*************** f0acfecca8767075f2b2e9bc04089741  gcc/an
*** 3156,3166 ****
  b10c92c6239ddb913269f044b7d241fa  gcc/analyzer/record-layout.cc
  137aeb98f719cee5d7abad8c51521e21  gcc/analyzer/record-layout.h
  fa88325d37a8f29becb9c6c05c81e953  gcc/analyzer/region-model-asm.cc
! 0fcb22e93f8816308419a2b4f4da8f86  gcc/analyzer/region-model-manager.cc
  9195fc0db12dd5628901e3d6615a1f44  gcc/analyzer/region-model-manager.h
  f99e78bf7ad4840c0d8cc59eaf034771  gcc/analyzer/region-model-reachability.cc
  34ab719ce08057bb88f8bf20e7c3c959  gcc/analyzer/region-model-reachability.h
! 140bad88f5384bce734e81e2ff0444da  gcc/analyzer/region-model.cc
  c216ef12a26b7d69c08a4c5f60470c0d  gcc/analyzer/region-model.h
  78ee896887a9d4ebd0a256671b8add8e  gcc/analyzer/region.cc
  6e644055b512784328073293c1d0a0c7  gcc/analyzer/region.h
--- 3157,3167 ----
  b10c92c6239ddb913269f044b7d241fa  gcc/analyzer/record-layout.cc
  137aeb98f719cee5d7abad8c51521e21  gcc/analyzer/record-layout.h
  fa88325d37a8f29becb9c6c05c81e953  gcc/analyzer/region-model-asm.cc
! 8c67eeb95bd4cac85627d248d0ba39dd  gcc/analyzer/region-model-manager.cc
  9195fc0db12dd5628901e3d6615a1f44  gcc/analyzer/region-model-manager.h
  f99e78bf7ad4840c0d8cc59eaf034771  gcc/analyzer/region-model-reachability.cc
  34ab719ce08057bb88f8bf20e7c3c959  gcc/analyzer/region-model-reachability.h
! afa49cf2a4164264b72ac44ff50741e1  gcc/analyzer/region-model.cc
  c216ef12a26b7d69c08a4c5f60470c0d  gcc/analyzer/region-model.h
  78ee896887a9d4ebd0a256671b8add8e  gcc/analyzer/region.cc
  6e644055b512784328073293c1d0a0c7  gcc/analyzer/region.h
*************** fe292df4b7f3e3ef7c0b8305084b6844  gcc/bi
*** 3212,3233 ****
  7cd04e6f25d02f9f2cecc8ce50e73e76  gcc/btfout.cc
  f808dbcc1ad6add5a0867c4b3e03fc4d  gcc/builtin-attrs.def
  9b2538f67781c7ccab3891a929caaaf0  gcc/builtin-types.def
! 2e944dea52dbc383e763e0585daa1b01  gcc/builtins.cc
  d86baafdac933140bc11c4cbfb28779e  gcc/builtins.def
  bd61b50b47560dc1324bf507bea5d87e  gcc/builtins.h
! 4942911cf91e722d99706644ba8c3c55  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  823fe168bb0f63a39de62d9f0251a1b5  gcc/c-family/c-ada-spec.cc
  4e83011bee68d9607834ed5335191d65  gcc/c-family/c-ada-spec.h
! 5a2e850515c6ecb57ffe6c19cadc6656  gcc/c-family/c-attribs.cc
! a6dc12cd1ca1a323c5da92b33bea1b8d  gcc/c-family/c-common.cc
  7d631d63d02c9fdb7b800977cd8dc894  gcc/c-family/c-common.def
  c6ac8fb15a8d6272184d999f651d660d  gcc/c-family/c-common.h
! 1c57db57b8673a678e1501b694ea87e0  gcc/c-family/c-cppbuiltin.cc
  01db2d5cca29943c49bb372f2137d874  gcc/c-family/c-dump.cc
  53e39536dbd251b4c218e15e99f21a0d  gcc/c-family/c-format.cc
  89a27efffabf06afdd7dee7495d2591c  gcc/c-family/c-format.h
! 33e75548501d8294a77fd654bc8d4d39  gcc/c-family/c-gimplify.cc
  4d15aede5a4841d6489aa40ad1304c00  gcc/c-family/c-indentation.cc
  a4b7179d2e948bb7586a9143fbe05593  gcc/c-family/c-indentation.h
  0fcfbb571d07d894c451986f55d04a9b  gcc/c-family/c-lex.cc
--- 3213,3234 ----
  7cd04e6f25d02f9f2cecc8ce50e73e76  gcc/btfout.cc
  f808dbcc1ad6add5a0867c4b3e03fc4d  gcc/builtin-attrs.def
  9b2538f67781c7ccab3891a929caaaf0  gcc/builtin-types.def
! 542c803f6a28d39f6101f0d3286bd240  gcc/builtins.cc
  d86baafdac933140bc11c4cbfb28779e  gcc/builtins.def
  bd61b50b47560dc1324bf507bea5d87e  gcc/builtins.h
! 418d88aeb1408dbfbb0212caa968d8bc  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  823fe168bb0f63a39de62d9f0251a1b5  gcc/c-family/c-ada-spec.cc
  4e83011bee68d9607834ed5335191d65  gcc/c-family/c-ada-spec.h
! 2de4ff375c457611a084ab029d7951ad  gcc/c-family/c-attribs.cc
! 364fe59813c3f5a2a44f15892f087f94  gcc/c-family/c-common.cc
  7d631d63d02c9fdb7b800977cd8dc894  gcc/c-family/c-common.def
  c6ac8fb15a8d6272184d999f651d660d  gcc/c-family/c-common.h
! 088f9e83e236e54e87478f4ec3a68756  gcc/c-family/c-cppbuiltin.cc
  01db2d5cca29943c49bb372f2137d874  gcc/c-family/c-dump.cc
  53e39536dbd251b4c218e15e99f21a0d  gcc/c-family/c-format.cc
  89a27efffabf06afdd7dee7495d2591c  gcc/c-family/c-format.h
! ad4f8886a2c8c645f1c4287124b88682  gcc/c-family/c-gimplify.cc
  4d15aede5a4841d6489aa40ad1304c00  gcc/c-family/c-indentation.cc
  a4b7179d2e948bb7586a9143fbe05593  gcc/c-family/c-indentation.h
  0fcfbb571d07d894c451986f55d04a9b  gcc/c-family/c-lex.cc
*************** fc808567009babd00ebcf49b5b985691  gcc/c-
*** 3248,3254 ****
  5f7fed5b8b1f0adfab1f4d8395a8516e  gcc/c-family/c-target.h
  3cc58e7c02b9a71a4264944913a66e09  gcc/c-family/c-type-mismatch.cc
  2716f2dd9d461ac6da32e9185698bbb2  gcc/c-family/c-type-mismatch.h
! 4286e0086805aa55b325f25d060c6003  gcc/c-family/c-ubsan.cc
  a28f2477c85a17e42026521322b3649a  gcc/c-family/c-ubsan.h
  ed4e4a12acd44dcb58dd646d038bc97a  gcc/c-family/c-warn.cc
  f6b6e110510ea514fc4bef91fb4e0a9d  gcc/c-family/c.opt
--- 3249,3255 ----
  5f7fed5b8b1f0adfab1f4d8395a8516e  gcc/c-family/c-target.h
  3cc58e7c02b9a71a4264944913a66e09  gcc/c-family/c-type-mismatch.cc
  2716f2dd9d461ac6da32e9185698bbb2  gcc/c-family/c-type-mismatch.h
! 3fef1c01f60e4d865b31a9d989b9bcd4  gcc/c-family/c-ubsan.cc
  a28f2477c85a17e42026521322b3649a  gcc/c-family/c-ubsan.h
  ed4e4a12acd44dcb58dd646d038bc97a  gcc/c-family/c-warn.cc
  f6b6e110510ea514fc4bef91fb4e0a9d  gcc/c-family/c.opt
*************** aaf683e3b02704cfbfab0627d82edf85  gcc/c-
*** 3258,3279 ****
  ce9d2259a1edb5d4b1f728988bd9ef6a  gcc/c-family/known-headers.h
  d1e9802a9c9cc0486941b538aaa07ff3  gcc/c-family/name-hint.h
  d71f74b5b48d9ec5e4e6463e7330121d  gcc/c-family/stub-objc.cc
! 74f99d269b00bec80bf8cb8fedf92b1f  gcc/c/ChangeLog
  b1fc09d2244c8e8a72b4df9bc9af30d7  gcc/c/Make-lang.in
  f1e5593aebd5cffb4b3cbffe6bd0860a  gcc/c/c-aux-info.cc
  178d24653bb20936d73bad078e70763c  gcc/c/c-convert.cc
! 8bf70b59fb3dc426c9608cd1fad229d9  gcc/c/c-decl.cc
  3601ac6299bb2579fedc2dcf2aba7773  gcc/c/c-errors.cc
  d9b5dea1631cefab5fe5ca3602db30f0  gcc/c/c-fold.cc
  d9c0725d061adffdf400457d91be3aed  gcc/c/c-lang.cc
  5466f6371f54fce4ae89206f7792bd01  gcc/c/c-lang.h
  dec36cf5c6a91b9509a566b6c8625548  gcc/c/c-objc-common.cc
  f9dc3d10fbfaa2d38905bc4e2579ba2b  gcc/c/c-objc-common.h
! 8deedc954a73dc5f92b48f4cf8de9955  gcc/c/c-parser.cc
  9c122bd6feb8ae4a94420c890e654801  gcc/c/c-parser.h
  9179f46b6a06c7d734278f5ce2c55883  gcc/c/c-tree.def
! f7331ce09e3bb7374f8cebf0a2195d47  gcc/c/c-tree.h
! a4abfef3c16be194f41e6d476f37b3a1  gcc/c/c-typeck.cc
  cd371895d730dd64e947066b2e4378f8  gcc/c/config-lang.in
  1bd76a24d1322659f048abe2272a6f34  gcc/c/gccspec.cc
  b908dbb3dee5ec448aacc3c5e1e430e7  gcc/c/gimple-parser.cc
--- 3259,3280 ----
  ce9d2259a1edb5d4b1f728988bd9ef6a  gcc/c-family/known-headers.h
  d1e9802a9c9cc0486941b538aaa07ff3  gcc/c-family/name-hint.h
  d71f74b5b48d9ec5e4e6463e7330121d  gcc/c-family/stub-objc.cc
! 086e1d85b297444065d05885e2a7a0b8  gcc/c/ChangeLog
  b1fc09d2244c8e8a72b4df9bc9af30d7  gcc/c/Make-lang.in
  f1e5593aebd5cffb4b3cbffe6bd0860a  gcc/c/c-aux-info.cc
  178d24653bb20936d73bad078e70763c  gcc/c/c-convert.cc
! cd6682cd1f70798eb36c3c08797aa364  gcc/c/c-decl.cc
  3601ac6299bb2579fedc2dcf2aba7773  gcc/c/c-errors.cc
  d9b5dea1631cefab5fe5ca3602db30f0  gcc/c/c-fold.cc
  d9c0725d061adffdf400457d91be3aed  gcc/c/c-lang.cc
  5466f6371f54fce4ae89206f7792bd01  gcc/c/c-lang.h
  dec36cf5c6a91b9509a566b6c8625548  gcc/c/c-objc-common.cc
  f9dc3d10fbfaa2d38905bc4e2579ba2b  gcc/c/c-objc-common.h
! 00b5b3a5c994f6892708cad5e4bd35c6  gcc/c/c-parser.cc
  9c122bd6feb8ae4a94420c890e654801  gcc/c/c-parser.h
  9179f46b6a06c7d734278f5ce2c55883  gcc/c/c-tree.def
! 14bdaa79be5634bd1cc7ff907c7a444b  gcc/c/c-tree.h
! bd353bf3fe2abe0107be57fef9eda2ad  gcc/c/c-typeck.cc
  cd371895d730dd64e947066b2e4378f8  gcc/c/config-lang.in
  1bd76a24d1322659f048abe2272a6f34  gcc/c/gccspec.cc
  b908dbb3dee5ec448aacc3c5e1e430e7  gcc/c/gimple-parser.cc
*************** dce5f9aa135bb3752695f3103daa686a  gcc/cf
*** 3292,3298 ****
  0d52ee7360736bb3d0306e66c1f3a9ce  gcc/cfgbuild.h
  39bbd18fab17b2880094aa317111df50  gcc/cfgcleanup.cc
  0761d2fe0a8e51aa7ed662e27b66747a  gcc/cfgcleanup.h
! 9996689c7ae5fb1fa1363217697db9d6  gcc/cfgexpand.cc
  b0df45fc1562ee51ee67ed5f30feb96e  gcc/cfgexpand.h
  748c8fca5e6dfe774ff333205ea9f9be  gcc/cfghooks.cc
  bbad65845fcf9cdbc5137d96f92eacab  gcc/cfghooks.h
--- 3293,3299 ----
  0d52ee7360736bb3d0306e66c1f3a9ce  gcc/cfgbuild.h
  39bbd18fab17b2880094aa317111df50  gcc/cfgcleanup.cc
  0761d2fe0a8e51aa7ed662e27b66747a  gcc/cfgcleanup.h
! 2b75c7ed31340afa9ca3a2c338c35864  gcc/cfgexpand.cc
  b0df45fc1562ee51ee67ed5f30feb96e  gcc/cfgexpand.h
  748c8fca5e6dfe774ff333205ea9f9be  gcc/cfghooks.cc
  bbad65845fcf9cdbc5137d96f92eacab  gcc/cfghooks.h
*************** bbad65845fcf9cdbc5137d96f92eacab  gcc/cf
*** 3301,3307 ****
  5ac695878401667aceb491bb5467c2b7  gcc/cfgloopanal.cc
  0a36fc8e64fdd79bb47a57fa94df4e3f  gcc/cfgloopmanip.cc
  7c2358ab451ca13a153f64b7682d772a  gcc/cfgloopmanip.h
! c97195f1544d9bfc539271f27e7a26b4  gcc/cfgrtl.cc
  28d9dedd6044321fe1df02d3575f81e9  gcc/cfgrtl.h
  3ab8af6bed1c2fb237681bbc3cb6aed0  gcc/cgraph.cc
  f875e225a02290cf7ed2e05c968f6c5d  gcc/cgraph.h
--- 3302,3308 ----
  5ac695878401667aceb491bb5467c2b7  gcc/cfgloopanal.cc
  0a36fc8e64fdd79bb47a57fa94df4e3f  gcc/cfgloopmanip.cc
  7c2358ab451ca13a153f64b7682d772a  gcc/cfgloopmanip.h
! 3123954653b267cc9e1887d756c6eec7  gcc/cfgrtl.cc
  28d9dedd6044321fe1df02d3575f81e9  gcc/cfgrtl.h
  3ab8af6bed1c2fb237681bbc3cb6aed0  gcc/cgraph.cc
  f875e225a02290cf7ed2e05c968f6c5d  gcc/cgraph.h
*************** f875e225a02290cf7ed2e05c968f6c5d  gcc/cg
*** 3309,3315 ****
  0562ea4e5f8c7c62289a233a9c5b4268  gcc/cgraphclones.cc
  3be8ee84d005d8a1f5a65ed6a7fce76a  gcc/cgraphunit.cc
  70fa61377ff65ad3f25778a40159f510  gcc/cif-code.def
! c34034d7dfb097c181960ac975cfd92e  gcc/cobol/ChangeLog
  38de2f3ba3eff58bbacc8dcdbdcd5be7  gcc/cobol/Make-lang.in
  0a84e784d2bc4066654d2377fc6a2930  gcc/cobol/TODO
  ff81b8f0fee01c60af0d84e2b6e6c7e3  gcc/cobol/cbldiag.h
--- 3310,3316 ----
  0562ea4e5f8c7c62289a233a9c5b4268  gcc/cgraphclones.cc
  3be8ee84d005d8a1f5a65ed6a7fce76a  gcc/cgraphunit.cc
  70fa61377ff65ad3f25778a40159f510  gcc/cif-code.def
! 86d15b34116564ef1d9ffa9245bc3bad  gcc/cobol/ChangeLog
  38de2f3ba3eff58bbacc8dcdbdcd5be7  gcc/cobol/Make-lang.in
  0a84e784d2bc4066654d2377fc6a2930  gcc/cobol/TODO
  ff81b8f0fee01c60af0d84e2b6e6c7e3  gcc/cobol/cbldiag.h
*************** d0fd2d6b92855f5ea2dcf1212cdff3ec  gcc/co
*** 3372,3378 ****
  f55010fab8b9aabea82c3ac50d031028  gcc/collect2.h
  47b3611844b583f418ce3aaf051c492a  gcc/color-macros.h
  7041e62f0f582b09331732fef4bb9545  gcc/combine-stack-adj.cc
! de3ef09dcf7fe0dca9ebbf10c83f4681  gcc/combine.cc
  2b9ccf7fc2473ef7e36aee9bcf170843  gcc/common.md
  12678e433ce3ad504a9bc371e63681ae  gcc/common.opt
  310d10d5092de3cf9710fc4c346b1549  gcc/common.opt.urls
--- 3373,3379 ----
  f55010fab8b9aabea82c3ac50d031028  gcc/collect2.h
  47b3611844b583f418ce3aaf051c492a  gcc/color-macros.h
  7041e62f0f582b09331732fef4bb9545  gcc/combine-stack-adj.cc
! b2487573fd5abb6a911abdda44306d0b  gcc/combine.cc
  2b9ccf7fc2473ef7e36aee9bcf170843  gcc/common.md
  12678e433ce3ad504a9bc371e63681ae  gcc/common.opt
  310d10d5092de3cf9710fc4c346b1549  gcc/common.opt.urls
*************** dae02ebe59cdaaf21611ad354e939ca5  gcc/co
*** 3386,3392 ****
  583d89cf5b4ff63572bfcd107bd598e1  gcc/common/config/alpha/alpha-common.cc
  c54d5f1066ada6f197004c84bc9e6a63  gcc/common/config/arc/arc-common.cc
  a2257a45385715383445b186a608b85d  gcc/common/config/arm/arm-common.cc
! b834ac8f2f7b5ad39cb3c24d5299c633  gcc/common/config/avr/avr-common.cc
  94fd737b0a4e5a33efec7b5a5e6ba9d1  gcc/common/config/bfin/bfin-common.cc
  539502c377f03b36d40016cfd9259d53  gcc/common/config/bpf/bpf-common.cc
  e278f87d704fd4b4533b822677f52229  gcc/common/config/c6x/c6x-common.cc
--- 3387,3393 ----
  583d89cf5b4ff63572bfcd107bd598e1  gcc/common/config/alpha/alpha-common.cc
  c54d5f1066ada6f197004c84bc9e6a63  gcc/common/config/arc/arc-common.cc
  a2257a45385715383445b186a608b85d  gcc/common/config/arm/arm-common.cc
! 408d2c0e35400fd0cfd5b1b00d8c879f  gcc/common/config/avr/avr-common.cc
  94fd737b0a4e5a33efec7b5a5e6ba9d1  gcc/common/config/bfin/bfin-common.cc
  539502c377f03b36d40016cfd9259d53  gcc/common/config/bpf/bpf-common.cc
  e278f87d704fd4b4533b822677f52229  gcc/common/config/c6x/c6x-common.cc
*************** b5a916bb9dd788754ac9e4ad7174ee74  gcc/co
*** 3435,3456 ****
  b209201703dd766f76ff5e16b99191e5  gcc/compare-elim.cc
  618780fbce0ce0cb6f9b86e079ce4e54  gcc/conditions.h
  1b4bc58c657bf910929d06d51bc8fa6c  gcc/config.build
! e5f14314b50c402188e9584b1eaa3965  gcc/config.gcc
  053bb14b428d0f073932e88b9a29a8bd  gcc/config.host
  1d528f9807496430cc01191e59f745d3  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
  ddbb7a934f8b8aa068e7b765c4375fbe  gcc/config/aarch64/aarch64-abi-ms.h
  9ff4e02500f5622983fef95cce7f38fd  gcc/config/aarch64/aarch64-arches.def
! 0746d3771e3a6276fdf28f14cbcb0809  gcc/config/aarch64/aarch64-builtins.cc
  482530e7572b40bc2ad01bdec0c1b97e  gcc/config/aarch64/aarch64-builtins.h
  d1e3bcda28d89d23e45fed74c629752a  gcc/config/aarch64/aarch64-c.cc
  ba4e797220b33827e769b09447623896  gcc/config/aarch64/aarch64-cc-fusion.cc
  133f61af7e288fe91ca31c659939c551  gcc/config/aarch64/aarch64-coff.h
! 8b59e9f9bf194c999ccfdbaf58382401  gcc/config/aarch64/aarch64-cores.def
! f0a8397b1e293e23f65674cd004845ae  gcc/config/aarch64/aarch64-cost-tables.h
  bef2a61270424fd606c71d78d20ad675  gcc/config/aarch64/aarch64-d.cc
  36405b6300d5ec6ca8faf17212ad1bc9  gcc/config/aarch64/aarch64-d.h
! d75100bc2f054afcf41a992cdaa5f793  gcc/config/aarch64/aarch64-early-ra.cc
  a626b42ff6790e8447d6f7bf1b19e5fb  gcc/config/aarch64/aarch64-elf-raw.h
  843882d6c2a5ee474fe70407c459300d  gcc/config/aarch64/aarch64-elf.h
  6e8efccd687b154a1a7fcc3e9672274f  gcc/config/aarch64/aarch64-errata.h
--- 3436,3457 ----
  b209201703dd766f76ff5e16b99191e5  gcc/compare-elim.cc
  618780fbce0ce0cb6f9b86e079ce4e54  gcc/conditions.h
  1b4bc58c657bf910929d06d51bc8fa6c  gcc/config.build
! 80ae961273735f72cbc0e508c76edf82  gcc/config.gcc
  053bb14b428d0f073932e88b9a29a8bd  gcc/config.host
  1d528f9807496430cc01191e59f745d3  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
  ddbb7a934f8b8aa068e7b765c4375fbe  gcc/config/aarch64/aarch64-abi-ms.h
  9ff4e02500f5622983fef95cce7f38fd  gcc/config/aarch64/aarch64-arches.def
! c10223e39727945bfeb62f1ca2170e31  gcc/config/aarch64/aarch64-builtins.cc
  482530e7572b40bc2ad01bdec0c1b97e  gcc/config/aarch64/aarch64-builtins.h
  d1e3bcda28d89d23e45fed74c629752a  gcc/config/aarch64/aarch64-c.cc
  ba4e797220b33827e769b09447623896  gcc/config/aarch64/aarch64-cc-fusion.cc
  133f61af7e288fe91ca31c659939c551  gcc/config/aarch64/aarch64-coff.h
! 506c78ba7d89b5955b977b2ebe899c24  gcc/config/aarch64/aarch64-cores.def
! 9bac3eb906f180e69a0abe65ec229b05  gcc/config/aarch64/aarch64-cost-tables.h
  bef2a61270424fd606c71d78d20ad675  gcc/config/aarch64/aarch64-d.cc
  36405b6300d5ec6ca8faf17212ad1bc9  gcc/config/aarch64/aarch64-d.h
! d0fd5d524d133cb5b494e3b2e01177f8  gcc/config/aarch64/aarch64-early-ra.cc
  a626b42ff6790e8447d6f7bf1b19e5fb  gcc/config/aarch64/aarch64-elf-raw.h
  843882d6c2a5ee474fe70407c459300d  gcc/config/aarch64/aarch64-elf.h
  6e8efccd687b154a1a7fcc3e9672274f  gcc/config/aarch64/aarch64-errata.h
*************** f931bc8e97c2f1358ad3ad91e902d553  gcc/co
*** 3468,3485 ****
  c9a52df251f3132f3562d3fffaa39c7b  gcc/config/aarch64/aarch64-option-extensions.def
  eb901cf32e942a31db5999eda012dc00  gcc/config/aarch64/aarch64-opts.h
  b14ff14af09e35148ebaceacc90e59a7  gcc/config/aarch64/aarch64-passes.def
! d9450e0fa15cd8b8f6659555820ec24e  gcc/config/aarch64/aarch64-protos.h
  7cfa3d0cdd28cdcd73a29c2c8a925548  gcc/config/aarch64/aarch64-simd-builtin-types.def
  f28e7beab7cc8baa0b1a2e5e9efc0597  gcc/config/aarch64/aarch64-simd-builtins.def
! 33ce4a896b77324d9be6448637daf9ca  gcc/config/aarch64/aarch64-simd-pragma-builtins.def
! 289754bc9c6eb2b3ec2ebb609d36de73  gcc/config/aarch64/aarch64-simd.md
  400cf23fe3c345ede58d2194530c6231  gcc/config/aarch64/aarch64-sme.md
  221b858bba4517a3871cb07292c6b216  gcc/config/aarch64/aarch64-speculation.cc
! 9ab182bab4cc10bb9676b1309abb562f  gcc/config/aarch64/aarch64-sve-builtins-base.cc
  35bb69e0b38657d068d103a2da1b8a16  gcc/config/aarch64/aarch64-sve-builtins-base.def
  cdcf6636402c3c91eb0010325542b491  gcc/config/aarch64/aarch64-sve-builtins-base.h
! 7bf84ccc784bb8957d9a6174156cd087  gcc/config/aarch64/aarch64-sve-builtins-functions.h
! 089932b501cb5cd94383201ef2002478  gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
  88653955c7c15c0ac1d6f1bd1b827641  gcc/config/aarch64/aarch64-sve-builtins-shapes.h
  e055c97bc39ff21701576ecf45b3a7a0  gcc/config/aarch64/aarch64-sve-builtins-sme.cc
  14751aeef4937155819adeff3187a05d  gcc/config/aarch64/aarch64-sve-builtins-sme.def
--- 3469,3486 ----
  c9a52df251f3132f3562d3fffaa39c7b  gcc/config/aarch64/aarch64-option-extensions.def
  eb901cf32e942a31db5999eda012dc00  gcc/config/aarch64/aarch64-opts.h
  b14ff14af09e35148ebaceacc90e59a7  gcc/config/aarch64/aarch64-passes.def
! 160daa130fb4c634bdf9fc8eb302c0d3  gcc/config/aarch64/aarch64-protos.h
  7cfa3d0cdd28cdcd73a29c2c8a925548  gcc/config/aarch64/aarch64-simd-builtin-types.def
  f28e7beab7cc8baa0b1a2e5e9efc0597  gcc/config/aarch64/aarch64-simd-builtins.def
! 9453dad923577ea174d49a4d5c3d2dc4  gcc/config/aarch64/aarch64-simd-pragma-builtins.def
! c39adde4468dd4defbf7200022246f97  gcc/config/aarch64/aarch64-simd.md
  400cf23fe3c345ede58d2194530c6231  gcc/config/aarch64/aarch64-sme.md
  221b858bba4517a3871cb07292c6b216  gcc/config/aarch64/aarch64-speculation.cc
! cab9211ac73c7480b9b4b45833e20d71  gcc/config/aarch64/aarch64-sve-builtins-base.cc
  35bb69e0b38657d068d103a2da1b8a16  gcc/config/aarch64/aarch64-sve-builtins-base.def
  cdcf6636402c3c91eb0010325542b491  gcc/config/aarch64/aarch64-sve-builtins-base.h
! 1aedb1965774496622db16f56a477345  gcc/config/aarch64/aarch64-sve-builtins-functions.h
! 4f52c837cf027999ea709c1cc977cb46  gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
  88653955c7c15c0ac1d6f1bd1b827641  gcc/config/aarch64/aarch64-sve-builtins-shapes.h
  e055c97bc39ff21701576ecf45b3a7a0  gcc/config/aarch64/aarch64-sve-builtins-sme.cc
  14751aeef4937155819adeff3187a05d  gcc/config/aarch64/aarch64-sve-builtins-sme.def
*************** e055c97bc39ff21701576ecf45b3a7a0  gcc/co
*** 3487,3507 ****
  d90362e92083076dd19c9edc16b0600a  gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
  5249e3dd61e8bd70c85a23c5711f3ca2  gcc/config/aarch64/aarch64-sve-builtins-sve2.def
  e2d80b89552da0c6b4cb6bede3b2e573  gcc/config/aarch64/aarch64-sve-builtins-sve2.h
! 2578221253cb8c19e9f778140a8cf9af  gcc/config/aarch64/aarch64-sve-builtins.cc
  30d08305d5bc784af521254aea449949  gcc/config/aarch64/aarch64-sve-builtins.def
! 5ef25fd86c1c16a4a6fb3f74e12802b4  gcc/config/aarch64/aarch64-sve-builtins.h
! 16747170f39e921f5b1e160e947deb43  gcc/config/aarch64/aarch64-sve.md
! a16f9cae06244c0294eb2792a27ba07a  gcc/config/aarch64/aarch64-sve2.md
! 805529fa07916adcabb727f19ebd8dd2  gcc/config/aarch64/aarch64-sys-regs.def
! b301dc231a69a28202d2b7d79ea75f5d  gcc/config/aarch64/aarch64-tune.md
  06480b67fa44a0b9fa7de2ed778a3df9  gcc/config/aarch64/aarch64-tuning-flags.def
  a2493e870eb12f5d646c24f2949e4cd3  gcc/config/aarch64/aarch64-vxworks.h
! 07893eeffa57c0900abac4a060662839  gcc/config/aarch64/aarch64.cc
  4c2226a017b612867a61db1f7929ad43  gcc/config/aarch64/aarch64.h
! 411e1d3571eca6300daf26431a1f99c7  gcc/config/aarch64/aarch64.md
  84c23cd68c90a9be4b986aa7009ba1c9  gcc/config/aarch64/aarch64.opt
  21fd50b19307096b8be37549ae0f6f77  gcc/config/aarch64/aarch64.opt.urls
! 99f46f1d591aa221b0c93a221ad9dc43  gcc/config/aarch64/arm_acle.h
  d8c2d46b77748c711b5354380ee49819  gcc/config/aarch64/arm_bf16.h
  f2ed4fb25bb00adfd0045bf870d46e50  gcc/config/aarch64/arm_fp16.h
  a40fb6a3f2f9048ea397a2c0936a4b88  gcc/config/aarch64/arm_neon.h
--- 3488,3508 ----
  d90362e92083076dd19c9edc16b0600a  gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
  5249e3dd61e8bd70c85a23c5711f3ca2  gcc/config/aarch64/aarch64-sve-builtins-sve2.def
  e2d80b89552da0c6b4cb6bede3b2e573  gcc/config/aarch64/aarch64-sve-builtins-sve2.h
! 944a43d9064bb880171790032fc91ade  gcc/config/aarch64/aarch64-sve-builtins.cc
  30d08305d5bc784af521254aea449949  gcc/config/aarch64/aarch64-sve-builtins.def
! b5b754958fa1c772f3c6b9961de6bb8d  gcc/config/aarch64/aarch64-sve-builtins.h
! f8e53efb41228263faa63280df0a8217  gcc/config/aarch64/aarch64-sve.md
! f4331859aa1baca8950f37fd9dfbe613  gcc/config/aarch64/aarch64-sve2.md
! 94024dd904900fa001fc7e12778c2f22  gcc/config/aarch64/aarch64-sys-regs.def
! b03a8cc94abbd83c9ad4852cd8527434  gcc/config/aarch64/aarch64-tune.md
  06480b67fa44a0b9fa7de2ed778a3df9  gcc/config/aarch64/aarch64-tuning-flags.def
  a2493e870eb12f5d646c24f2949e4cd3  gcc/config/aarch64/aarch64-vxworks.h
! bff2557a7770c93e85330eb42d418bd5  gcc/config/aarch64/aarch64.cc
  4c2226a017b612867a61db1f7929ad43  gcc/config/aarch64/aarch64.h
! db5a2720311ab2437aac8b6091056b31  gcc/config/aarch64/aarch64.md
  84c23cd68c90a9be4b986aa7009ba1c9  gcc/config/aarch64/aarch64.opt
  21fd50b19307096b8be37549ae0f6f77  gcc/config/aarch64/aarch64.opt.urls
! 7e3d9f33a52f69bf4b52cfc58cea9cb3  gcc/config/aarch64/arm_acle.h
  d8c2d46b77748c711b5354380ee49819  gcc/config/aarch64/arm_bf16.h
  f2ed4fb25bb00adfd0045bf870d46e50  gcc/config/aarch64/arm_fp16.h
  a40fb6a3f2f9048ea397a2c0936a4b88  gcc/config/aarch64/arm_neon.h
*************** f713d33fdaee532813b56547dd070c8c  gcc/co
*** 3522,3528 ****
  dfcdbda4a3bb64a86fdf64ce6fce0ae3  gcc/config/aarch64/geniterators.sh
  bc3b4ebfac8bfd42d3e9098f33585afd  gcc/config/aarch64/gentune.sh
  86eaf33edeb885c2c9ae2a9825879e59  gcc/config/aarch64/host-aarch64-darwin.cc
! abbbbf6a81aacb22ddfd5cf90e09c3fb  gcc/config/aarch64/iterators.md
  5b5a63a020088c423711fc910c09f55c  gcc/config/aarch64/predicates.md
  a4e902ee1494ba5eee811ea46ecdf995  gcc/config/aarch64/rtems.h
  9a62f0d5ab77ee226f2c440e8c4d3a1d  gcc/config/aarch64/t-aarch64
--- 3523,3529 ----
  dfcdbda4a3bb64a86fdf64ce6fce0ae3  gcc/config/aarch64/geniterators.sh
  bc3b4ebfac8bfd42d3e9098f33585afd  gcc/config/aarch64/gentune.sh
  86eaf33edeb885c2c9ae2a9825879e59  gcc/config/aarch64/host-aarch64-darwin.cc
! ebd811f0ed77e411e6941236371bd33b  gcc/config/aarch64/iterators.md
  5b5a63a020088c423711fc910c09f55c  gcc/config/aarch64/predicates.md
  a4e902ee1494ba5eee811ea46ecdf995  gcc/config/aarch64/rtems.h
  9a62f0d5ab77ee226f2c440e8c4d3a1d  gcc/config/aarch64/t-aarch64
*************** d88b01ec5c51c0e7e9948b03d926629d  gcc/co
*** 3548,3556 ****
  a817cc8c0648af85cd26652c17c0f063  gcc/config/aarch64/tuning_models/emag.h
  c414f4f4b0ca18716b952cdc996cd336  gcc/config/aarch64/tuning_models/exynosm1.h
  c20726a55db2926c898f89280cf7b685  gcc/config/aarch64/tuning_models/fujitsu_monaka.h
! 9f73f9910638c9e0a3139320e38ed6f0  gcc/config/aarch64/tuning_models/generic.h
! 3db39fdaa1e6c980b54f842eeff2fa0a  gcc/config/aarch64/tuning_models/generic_armv8_a.h
  cbb7f4c1241626aba880f9f98cf59b4f  gcc/config/aarch64/tuning_models/generic_armv9_a.h
  e3084154e4d8706cd3825dad493faefd  gcc/config/aarch64/tuning_models/neoverse512tvb.h
  ce0f856b5d88ad7f8a33a6e05b88176b  gcc/config/aarch64/tuning_models/neoversen1.h
  a3d9fb503080c4d2fcb58c74d82ef235  gcc/config/aarch64/tuning_models/neoversen2.h
--- 3549,3558 ----
  a817cc8c0648af85cd26652c17c0f063  gcc/config/aarch64/tuning_models/emag.h
  c414f4f4b0ca18716b952cdc996cd336  gcc/config/aarch64/tuning_models/exynosm1.h
  c20726a55db2926c898f89280cf7b685  gcc/config/aarch64/tuning_models/fujitsu_monaka.h
! 0f322b98277aa317e5d5cadc39479809  gcc/config/aarch64/tuning_models/generic.h
! e30640dfea93ba03612db7dd00511bf4  gcc/config/aarch64/tuning_models/generic_armv8_a.h
  cbb7f4c1241626aba880f9f98cf59b4f  gcc/config/aarch64/tuning_models/generic_armv9_a.h
+ 0ff8fa5f2ec82601fe7df026cfd4068a  gcc/config/aarch64/tuning_models/hip12.h
  e3084154e4d8706cd3825dad493faefd  gcc/config/aarch64/tuning_models/neoverse512tvb.h
  ce0f856b5d88ad7f8a33a6e05b88176b  gcc/config/aarch64/tuning_models/neoversen1.h
  a3d9fb503080c4d2fcb58c74d82ef235  gcc/config/aarch64/tuning_models/neoversen2.h
*************** d1b95435bb177952f26d761fee7430d6  gcc/co
*** 3559,3565 ****
  067f90a712678085bed8b60608edfc4b  gcc/config/aarch64/tuning_models/neoversev2.h
  42edc79260b9e5687e2f6d3c54678870  gcc/config/aarch64/tuning_models/neoversev3.h
  53b5e25dd9d162d4a60fa9c5e2ad104f  gcc/config/aarch64/tuning_models/neoversev3ae.h
! 7384cb5a512d446afe4c8d5d99ac4735  gcc/config/aarch64/tuning_models/olympus.h
  e0ea9a60e19c47697127edd6550da663  gcc/config/aarch64/tuning_models/qdf24xx.h
  1846be94d3382c182fb7d9a19bc9e042  gcc/config/aarch64/tuning_models/saphira.h
  9f37e6e78ab3e5e066a76b94257321a5  gcc/config/aarch64/tuning_models/thunderx.h
--- 3561,3567 ----
  067f90a712678085bed8b60608edfc4b  gcc/config/aarch64/tuning_models/neoversev2.h
  42edc79260b9e5687e2f6d3c54678870  gcc/config/aarch64/tuning_models/neoversev3.h
  53b5e25dd9d162d4a60fa9c5e2ad104f  gcc/config/aarch64/tuning_models/neoversev3ae.h
! 56ec9286d7248871a9db5fc7aa650f1f  gcc/config/aarch64/tuning_models/olympus.h
  e0ea9a60e19c47697127edd6550da663  gcc/config/aarch64/tuning_models/qdf24xx.h
  1846be94d3382c182fb7d9a19bc9e042  gcc/config/aarch64/tuning_models/saphira.h
  9f37e6e78ab3e5e066a76b94257321a5  gcc/config/aarch64/tuning_models/thunderx.h
*************** e142e166e7cd04ae80f0ab8164936571  gcc/co
*** 3655,3666 ****
  c3db7a7dfc5f086a04da4c1151d755d5  gcc/config/arm/arm-ldmstm.ml
  a7ae9132c9bec5a1cb9d4d193eb9fb9f  gcc/config/arm/arm-mlib.h
  46b06532a5609675535edd3c09991537  gcc/config/arm/arm-modes.def
! aa383b4f5882eae26cde94f0b22aedd1  gcc/config/arm/arm-mve-builtins-base.cc
! e7b7c026e8534c166c3243388a760db5  gcc/config/arm/arm-mve-builtins-base.def
! f7da1948e1d45b2ba15e1bf69f9fab63  gcc/config/arm/arm-mve-builtins-base.h
  e064d99cd82f974a718dd70c31575709  gcc/config/arm/arm-mve-builtins-functions.h
! cf6db86b33aad410441232cb5e3f30b7  gcc/config/arm/arm-mve-builtins-shapes.cc
! 22b0a5a853f387f3ca45b438b257a19e  gcc/config/arm/arm-mve-builtins-shapes.h
  682a014f9e1f141dfb4c3d481e890008  gcc/config/arm/arm-mve-builtins.cc
  c7d2396379cbe9f18b9ac7f95b2376f9  gcc/config/arm/arm-mve-builtins.def
  657d3ecd350c0aab459e5d706a2466b8  gcc/config/arm/arm-mve-builtins.h
--- 3657,3668 ----
  c3db7a7dfc5f086a04da4c1151d755d5  gcc/config/arm/arm-ldmstm.ml
  a7ae9132c9bec5a1cb9d4d193eb9fb9f  gcc/config/arm/arm-mlib.h
  46b06532a5609675535edd3c09991537  gcc/config/arm/arm-modes.def
! fd5f740912bb1e534afc98c780cd763f  gcc/config/arm/arm-mve-builtins-base.cc
! 5dabd9449a04e7a962314f9ed4839772  gcc/config/arm/arm-mve-builtins-base.def
! 94e97469c42bef233d8d5d05e30980ac  gcc/config/arm/arm-mve-builtins-base.h
  e064d99cd82f974a718dd70c31575709  gcc/config/arm/arm-mve-builtins-functions.h
! a662e7a4f23314603b77b0616ffa3d43  gcc/config/arm/arm-mve-builtins-shapes.cc
! 95568321fc40e4edcfd268f14ab48253  gcc/config/arm/arm-mve-builtins-shapes.h
  682a014f9e1f141dfb4c3d481e890008  gcc/config/arm/arm-mve-builtins.cc
  c7d2396379cbe9f18b9ac7f95b2376f9  gcc/config/arm/arm-mve-builtins.def
  657d3ecd350c0aab459e5d706a2466b8  gcc/config/arm/arm-mve-builtins.h
*************** eafc8a2abc331243ea846fab22b8aec4  gcc/co
*** 3671,3679 ****
  485d7b0baab6c9abc2c56a9f6c467afb  gcc/config/arm/arm-tables.opt
  f805d118929dd79f6bd4dc75c77c968b  gcc/config/arm/arm-tables.opt.urls
  a16ca2ab73b09afe4481044ebcec2010  gcc/config/arm/arm-tune.md
! 7d95ec920300fa051646557add91f019  gcc/config/arm/arm.cc
! fe5e2b24f803c40d73fe860e114fc6e0  gcc/config/arm/arm.h
! 11e0d112671b369f4d182ac9d5c6066b  gcc/config/arm/arm.md
  a7974fb16c914604eacaf43120b8769f  gcc/config/arm/arm.opt
  d96083967a30e6eb0f75d624af2d831a  gcc/config/arm/arm.opt.urls
  ccbf8aa9582c7ea8db0ed6a70d1dd691  gcc/config/arm/arm1020e.md
--- 3673,3681 ----
  485d7b0baab6c9abc2c56a9f6c467afb  gcc/config/arm/arm-tables.opt
  f805d118929dd79f6bd4dc75c77c968b  gcc/config/arm/arm-tables.opt.urls
  a16ca2ab73b09afe4481044ebcec2010  gcc/config/arm/arm-tune.md
! 9d72d08f0b50dda1a967bfeb70695c7c  gcc/config/arm/arm.cc
! 0ada24c6acb631d40bb857f80959936a  gcc/config/arm/arm.h
! b2f19c013193963dc0b7862e88720be5  gcc/config/arm/arm.md
  a7974fb16c914604eacaf43120b8769f  gcc/config/arm/arm.opt
  d96083967a30e6eb0f75d624af2d831a  gcc/config/arm/arm.opt.urls
  ccbf8aa9582c7ea8db0ed6a70d1dd691  gcc/config/arm/arm1020e.md
*************** e8da624def348c2c40197e1b1ad6f812  gcc/co
*** 3687,3693 ****
  b1a24a24b85a7cb705e34642d6262e82  gcc/config/arm/arm_cde_builtins.def
  97c08aba9b7507a2a727088723d324dd  gcc/config/arm/arm_cmse.h
  6bca088046fad4a4968ac527476fe0d3  gcc/config/arm/arm_fp16.h
! 3777ecd6cf5b0fe59734ec67479e8c4e  gcc/config/arm/arm_mve.h
  5e9c8b6c6b107ceb0259919168fcb6ca  gcc/config/arm/arm_mve_builtins.def
  1f4138dbad069d0f988c5b0ab3f8671b  gcc/config/arm/arm_mve_types.h
  6e4fbe4ba93f477a89f4979de431397f  gcc/config/arm/arm_neon.h
--- 3689,3695 ----
  b1a24a24b85a7cb705e34642d6262e82  gcc/config/arm/arm_cde_builtins.def
  97c08aba9b7507a2a727088723d324dd  gcc/config/arm/arm_cmse.h
  6bca088046fad4a4968ac527476fe0d3  gcc/config/arm/arm_fp16.h
! ac905e049d740c88f59b5a5c965d7e8e  gcc/config/arm/arm_mve.h
  5e9c8b6c6b107ceb0259919168fcb6ca  gcc/config/arm/arm_mve_builtins.def
  1f4138dbad069d0f988c5b0ab3f8671b  gcc/config/arm/arm_mve_types.h
  6e4fbe4ba93f477a89f4979de431397f  gcc/config/arm/arm_neon.h
*************** cb269e14a0ffcaf48937ea37a588d123  gcc/co
*** 3695,3701 ****
  130a8fbe50847f964b84dcc079274131  gcc/config/arm/arm_vfp_builtins.def
  ae20ce20f59a062f74bc3e38bfb8e776  gcc/config/arm/bpabi.h
  bbacfe695f3abec9a6aa46cee26c1db4  gcc/config/arm/common.md
! 1e5fd9611ba9a759a35660d0e4c4b3f7  gcc/config/arm/constraints.md
  583626dca1b07ab1d185bd33be9c755e  gcc/config/arm/cortex-a15-neon.md
  e3f39f090dffb6441661f2735ff625c7  gcc/config/arm/cortex-a15.md
  2e920cabf1d4fa68e020ec3becbec753  gcc/config/arm/cortex-a17-neon.md
--- 3697,3703 ----
  130a8fbe50847f964b84dcc079274131  gcc/config/arm/arm_vfp_builtins.def
  ae20ce20f59a062f74bc3e38bfb8e776  gcc/config/arm/bpabi.h
  bbacfe695f3abec9a6aa46cee26c1db4  gcc/config/arm/common.md
! 8474b1418ac7969a5e4a7720e58affb2  gcc/config/arm/constraints.md
  583626dca1b07ab1d185bd33be9c755e  gcc/config/arm/cortex-a15-neon.md
  e3f39f090dffb6441661f2735ff625c7  gcc/config/arm/cortex-a15.md
  2e920cabf1d4fa68e020ec3becbec753  gcc/config/arm/cortex-a17-neon.md
*************** d3258824a869cbf8507cc20b8354d63a  gcc/co
*** 3725,3731 ****
  7ce753afcddfce0345d95ad953e5a4b2  gcc/config/arm/fmp626.md
  2c6206b20ea2631cadbdfaa2019002d1  gcc/config/arm/freebsd.h
  d46e30ed2d47159006a0c4a6dd3bf6ef  gcc/config/arm/fuchsia-elf.h
! 0632ce6b37113785b331e73807d5e0bd  gcc/config/arm/iterators.md
  78c13c6d4c125cd3779c516e81bcb1ee  gcc/config/arm/iwmmxt.md
  8a220d94d24f542dbfc8bcf597747268  gcc/config/arm/iwmmxt2.md
  63f3c7dd672505a59cbe1c24092c9b34  gcc/config/arm/ldmstm.md
--- 3727,3733 ----
  7ce753afcddfce0345d95ad953e5a4b2  gcc/config/arm/fmp626.md
  2c6206b20ea2631cadbdfaa2019002d1  gcc/config/arm/freebsd.h
  d46e30ed2d47159006a0c4a6dd3bf6ef  gcc/config/arm/fuchsia-elf.h
! 22d49d65b0d0473ff7849f8d9c6e7f58  gcc/config/arm/iterators.md
  78c13c6d4c125cd3779c516e81bcb1ee  gcc/config/arm/iwmmxt.md
  8a220d94d24f542dbfc8bcf597747268  gcc/config/arm/iwmmxt2.md
  63f3c7dd672505a59cbe1c24092c9b34  gcc/config/arm/ldmstm.md
*************** e432241ef743dc9fad65a3e982e51711  gcc/co
*** 3736,3743 ****
  d790ecc09ebef93e83ed249e4941fda4  gcc/config/arm/marvell-f-iwmmxt.md
  0143017c5054dbb4839079ed89df7fc4  gcc/config/arm/marvell-pj4.md
  5b6e3779ce7193a5b2496230da7b4ef7  gcc/config/arm/mmintrin.h
! 2ceb00fd47c9ae2553581737206a0c2f  gcc/config/arm/mve.md
! 4639c23d19b1e88e0d32ef64d889c37e  gcc/config/arm/neon.md
  f208fab795fa9231cb51c748bd50e7e5  gcc/config/arm/netbsd-eabi.h
  79c1c27fe924ef728f21bd95a8c3ea71  gcc/config/arm/netbsd-elf.h
  8f026aba2fb3043f536516c1ed3776c7  gcc/config/arm/parsecpu.awk
--- 3738,3745 ----
  d790ecc09ebef93e83ed249e4941fda4  gcc/config/arm/marvell-f-iwmmxt.md
  0143017c5054dbb4839079ed89df7fc4  gcc/config/arm/marvell-pj4.md
  5b6e3779ce7193a5b2496230da7b4ef7  gcc/config/arm/mmintrin.h
! 75062e8222eb949b48a45bf16429e70e  gcc/config/arm/mve.md
! 9b289e7284b2cd56cb0baae163b4d9bd  gcc/config/arm/neon.md
  f208fab795fa9231cb51c748bd50e7e5  gcc/config/arm/netbsd-eabi.h
  79c1c27fe924ef728f21bd95a8c3ea71  gcc/config/arm/netbsd-elf.h
  8f026aba2fb3043f536516c1ed3776c7  gcc/config/arm/parsecpu.awk
*************** dc8e1ff924dd1f2699f60837b792825a  gcc/co
*** 3760,3774 ****
  b6434dfdcd32f4ab54f4e1e867cca4d4  gcc/config/arm/t-symbian
  1484dd700dca665c8ec9c7b42f260359  gcc/config/arm/t-vxworks
  84d24ab216855ebac94722b5968426ab  gcc/config/arm/thumb1.md
! 504553bf6ec36f1cc61ecf49e4866f0d  gcc/config/arm/thumb2.md
  b39ae9b1d0fd52783888ae034fa27218  gcc/config/arm/types.md
  22e6583951db6a19df7c215758f2ffbf  gcc/config/arm/uclinux-eabi.h
  764ee6f9b6836a3b69036da6a49da57e  gcc/config/arm/uclinux-elf.h
  85ec3386517177a4f52dfe3a6b7424c9  gcc/config/arm/uclinuxfdpiceabi.h
  c15086ec95d044fe59c3f12aa73190d1  gcc/config/arm/unknown-elf.h
! 9c959e58e72273924c71fe16e787590d  gcc/config/arm/unspecs.md
  73bd6e0ed5faced721e41f90a5d22e64  gcc/config/arm/vec-common.md
! cd17766ff1d7c30a7763b20fd4eef83a  gcc/config/arm/vfp.md
  97faf501b2f484ffffb0776805ec048c  gcc/config/arm/vfp11.md
  7103226c96e3a24663955d93879e07b5  gcc/config/arm/vxworks.h
  2d895654184d467da32c02a44f6598ac  gcc/config/arm/vxworks.opt
--- 3762,3776 ----
  b6434dfdcd32f4ab54f4e1e867cca4d4  gcc/config/arm/t-symbian
  1484dd700dca665c8ec9c7b42f260359  gcc/config/arm/t-vxworks
  84d24ab216855ebac94722b5968426ab  gcc/config/arm/thumb1.md
! 7ed58d599577d2073e0e8aa227ad3a84  gcc/config/arm/thumb2.md
  b39ae9b1d0fd52783888ae034fa27218  gcc/config/arm/types.md
  22e6583951db6a19df7c215758f2ffbf  gcc/config/arm/uclinux-eabi.h
  764ee6f9b6836a3b69036da6a49da57e  gcc/config/arm/uclinux-elf.h
  85ec3386517177a4f52dfe3a6b7424c9  gcc/config/arm/uclinuxfdpiceabi.h
  c15086ec95d044fe59c3f12aa73190d1  gcc/config/arm/unknown-elf.h
! 33bc3fb39961551d930b396b9e0baba8  gcc/config/arm/unspecs.md
  73bd6e0ed5faced721e41f90a5d22e64  gcc/config/arm/vec-common.md
! e60badd5a74f3c97d6f8e74b2f5f58fc  gcc/config/arm/vfp.md
  97faf501b2f484ffffb0776805ec048c  gcc/config/arm/vfp11.md
  7103226c96e3a24663955d93879e07b5  gcc/config/arm/vxworks.h
  2d895654184d467da32c02a44f6598ac  gcc/config/arm/vxworks.opt
*************** ad0769e595277d36f17947f5c5ac4550  gcc/co
*** 3779,3809 ****
  7ec1071b6a2f5dda8bfa124dd9543e12  gcc/config/avr/avr-c.cc
  fc218940ab265ae323b54d5f007d0d98  gcc/config/avr/avr-devices.cc
  5ed27daaa89e74cf4016168779065375  gcc/config/avr/avr-dimode.md
! a22b4318830a45fe7c7db53efb64970d  gcc/config/avr/avr-fixed.md
  f43b68e01b2d61fffb5336ef45fa1e7f  gcc/config/avr/avr-log.cc
! 117bbef05f3fb7ba16a92cee51e0064c  gcc/config/avr/avr-mcus.def
  1db4fe94056a22e92de33b6d365176c6  gcc/config/avr/avr-modes.def
  d37f092206fc4c0379cee5e5fc01b654  gcc/config/avr/avr-passes-fuse-move.h
  ce627f4de03a506a4263a68742891105  gcc/config/avr/avr-passes.cc
  6b425f8df921557284017d42be8efc3c  gcc/config/avr/avr-passes.def
  faa9a440c205461733203401725ce58c  gcc/config/avr/avr-protos.h
  eb753641e5bf09dbcc2be97e61be8767  gcc/config/avr/avr-stdint.h
! f4b2e0ca9954dd6c1064849f3e485603  gcc/config/avr/avr.cc
  08a0b2010b152c01b9bb5883c3d62b7f  gcc/config/avr/avr.h
! 3d964ad6aff7842114bb72be953b8364  gcc/config/avr/avr.md
  01f3921785c44d9f7a522cba81a86fd0  gcc/config/avr/avr.opt
  6010f6699565f81df0cf2aa3c7e89ba4  gcc/config/avr/avr.opt.urls
  e6d58e7505c28a23d3cd4e70e534521e  gcc/config/avr/avrlibc.h
  441eaa03acda9ba9c8febfe4aab09aaf  gcc/config/avr/builtins.def
  66196007356392102d57b2751db19590  gcc/config/avr/constraints.md
  c6568ca3d3967dc4577de343df313df3  gcc/config/avr/driver-avr.cc
! 2433491b0fd4d18db35f0d52566471c8  gcc/config/avr/elf.h
! 28aee5cb582edae79e10d384f4fa3141  gcc/config/avr/gen-avr-mmcu-specs.cc
  16aa5070fa9fc0e8ea08da2e81fa07ed  gcc/config/avr/gen-avr-mmcu-texi.cc
  6d9c1db61d58bad0e31aa7b00e2e9ffb  gcc/config/avr/genmultilib.awk
  436f7e20c4996793d1ea94555c59b608  gcc/config/avr/predicates.md
  3ecab14b4beaf91d8871dc902cee93b0  gcc/config/avr/ranges.h
! 9c5ee1a10c14849bd74a27b425d60a71  gcc/config/avr/specs.h
  6e6e06457d93dd95436762e8db93c538  gcc/config/avr/stdfix.h
  c9ff75ab151759fe329687b82352f34b  gcc/config/avr/t-avr
  8936068e99e1a52f6c98d17c9b83df34  gcc/config/bfin/bfin-modes.def
--- 3781,3811 ----
  7ec1071b6a2f5dda8bfa124dd9543e12  gcc/config/avr/avr-c.cc
  fc218940ab265ae323b54d5f007d0d98  gcc/config/avr/avr-devices.cc
  5ed27daaa89e74cf4016168779065375  gcc/config/avr/avr-dimode.md
! 202321106e6cf061505a50f7652826e2  gcc/config/avr/avr-fixed.md
  f43b68e01b2d61fffb5336ef45fa1e7f  gcc/config/avr/avr-log.cc
! 8b73988703afc48dba5f660f6f684492  gcc/config/avr/avr-mcus.def
  1db4fe94056a22e92de33b6d365176c6  gcc/config/avr/avr-modes.def
  d37f092206fc4c0379cee5e5fc01b654  gcc/config/avr/avr-passes-fuse-move.h
  ce627f4de03a506a4263a68742891105  gcc/config/avr/avr-passes.cc
  6b425f8df921557284017d42be8efc3c  gcc/config/avr/avr-passes.def
  faa9a440c205461733203401725ce58c  gcc/config/avr/avr-protos.h
  eb753641e5bf09dbcc2be97e61be8767  gcc/config/avr/avr-stdint.h
! 974976d84962a5b6ff190ebc2f3779ba  gcc/config/avr/avr.cc
  08a0b2010b152c01b9bb5883c3d62b7f  gcc/config/avr/avr.h
! fd2a227251c0157ea7263c83436c3387  gcc/config/avr/avr.md
  01f3921785c44d9f7a522cba81a86fd0  gcc/config/avr/avr.opt
  6010f6699565f81df0cf2aa3c7e89ba4  gcc/config/avr/avr.opt.urls
  e6d58e7505c28a23d3cd4e70e534521e  gcc/config/avr/avrlibc.h
  441eaa03acda9ba9c8febfe4aab09aaf  gcc/config/avr/builtins.def
  66196007356392102d57b2751db19590  gcc/config/avr/constraints.md
  c6568ca3d3967dc4577de343df313df3  gcc/config/avr/driver-avr.cc
! 6ed585b465646e6ca546cf3c7dfb041d  gcc/config/avr/elf.h
! 5b66e60edaae382611699bdfb090bdfc  gcc/config/avr/gen-avr-mmcu-specs.cc
  16aa5070fa9fc0e8ea08da2e81fa07ed  gcc/config/avr/gen-avr-mmcu-texi.cc
  6d9c1db61d58bad0e31aa7b00e2e9ffb  gcc/config/avr/genmultilib.awk
  436f7e20c4996793d1ea94555c59b608  gcc/config/avr/predicates.md
  3ecab14b4beaf91d8871dc902cee93b0  gcc/config/avr/ranges.h
! 0945248f84a38536e6ae07c2491065fd  gcc/config/avr/specs.h
  6e6e06457d93dd95436762e8db93c538  gcc/config/avr/stdfix.h
  c9ff75ab151759fe329687b82352f34b  gcc/config/avr/t-avr
  8936068e99e1a52f6c98d17c9b83df34  gcc/config/bfin/bfin-modes.def
*************** f564f4fdf8d82c60a526de3aeb908531  gcc/co
*** 3833,3839 ****
  9a5cadb0cb322fae6b6177fc361f00c1  gcc/config/bpf/bpf-protos.h
  404b12a13069ede5289ad6db734105f1  gcc/config/bpf/bpf.cc
  88a80edc8d111617067abb5a0b95d469  gcc/config/bpf/bpf.h
! 0e05ae54f1a8ca63ad1533179b4b4571  gcc/config/bpf/bpf.md
  d0866c4d53c2fdcec825b3485236d9a1  gcc/config/bpf/bpf.opt
  7b6aa42f841abd7c9839fec201bb5ddf  gcc/config/bpf/bpf.opt.urls
  5642edb6fb9afaa9ee550c880d44906e  gcc/config/bpf/btfext-out.cc
--- 3835,3841 ----
  9a5cadb0cb322fae6b6177fc361f00c1  gcc/config/bpf/bpf-protos.h
  404b12a13069ede5289ad6db734105f1  gcc/config/bpf/bpf.cc
  88a80edc8d111617067abb5a0b95d469  gcc/config/bpf/bpf.h
! 21b199571a3dea4f020394c4620a608c  gcc/config/bpf/bpf.md
  d0866c4d53c2fdcec825b3485236d9a1  gcc/config/bpf/bpf.opt
  7b6aa42f841abd7c9839fec201bb5ddf  gcc/config/bpf/bpf.opt.urls
  5642edb6fb9afaa9ee550c880d44906e  gcc/config/bpf/btfext-out.cc
*************** d6b10bd17eef3ffa35e47afa3e7b730d  gcc/co
*** 4028,4034 ****
  92be7c164d6a0c28f398bccf2e9074ef  gcc/config/gnu-user.h
  e602557b4e8c89be8ed22b2fc769290f  gcc/config/gnu-user.opt
  6b439d9b69b8df92af49c7024df0d474  gcc/config/gnu-user.opt.urls
! d5c6d059a56ac9976955afc9d6ebeae1  gcc/config/gnu.h
  d0a6e969946f8dfa6f2a114d426de2d5  gcc/config/h8300/addsub.md
  cddc64825ce6e6e92692684251745f9e  gcc/config/h8300/bitfield.md
  e0f182e6b6c3f56eae0c152e463235ef  gcc/config/h8300/combiner.md
--- 4030,4036 ----
  92be7c164d6a0c28f398bccf2e9074ef  gcc/config/gnu-user.h
  e602557b4e8c89be8ed22b2fc769290f  gcc/config/gnu-user.opt
  6b439d9b69b8df92af49c7024df0d474  gcc/config/gnu-user.opt.urls
! 473c85be539ca77be59f3df05cf50133  gcc/config/gnu.h
  d0a6e969946f8dfa6f2a114d426de2d5  gcc/config/h8300/addsub.md
  cddc64825ce6e6e92692684251745f9e  gcc/config/h8300/bitfield.md
  e0f182e6b6c3f56eae0c152e463235ef  gcc/config/h8300/combiner.md
*************** dae6c9115b5058fd917b309ee79438a6  gcc/co
*** 4070,4094 ****
  6fb8f575d2ba05a77e86b2a4670259bb  gcc/config/hpux11.opt.urls
  615ede3e03ebc06635041469a862accb  gcc/config/i386/adxintrin.h
  21cbb29f86ff25a147e5d677cb9053d1  gcc/config/i386/ammintrin.h
! 0f365c56840eb3944f31396f5b334fae  gcc/config/i386/amxavx512intrin.h
! db371b3bae058228fd1afba4355902d7  gcc/config/i386/amxbf16intrin.h
! 7f1c0051b6d17dab9f258187c7b9cc3e  gcc/config/i386/amxcomplexintrin.h
! e881567a284d0c4c6fd23ecaecaa29f7  gcc/config/i386/amxfp16intrin.h
! 0e0ea58145b6e2eb7763bd3455cea60c  gcc/config/i386/amxfp8intrin.h
! 86643835c40c95bff80d14e5c7a39263  gcc/config/i386/amxint8intrin.h
! 19b2b3866a28248586bc8f858adacdd5  gcc/config/i386/amxmovrsintrin.h
! 7627351f7405eceb02c9e7d73da70fa5  gcc/config/i386/amxtf32intrin.h
! 718d242a1b62ceb6aa2c434c663400c4  gcc/config/i386/amxtileintrin.h
  4739b13293a8cea0e9a3201a3a472ce6  gcc/config/i386/amxtransposeintrin.h
  d5344f5586a4fdddcf32cfad79672651  gcc/config/i386/athlon.md
  c7639653fc509c53955783e5c3d3ed63  gcc/config/i386/atom.md
  e4ad129bfdb387d691c45180574d648e  gcc/config/i386/att.h
! 530845165e814163a34b6e6782763ea6  gcc/config/i386/avx10_2-512bf16intrin.h
  ecc1c16f801882fa2e1ed99c97694993  gcc/config/i386/avx10_2-512convertintrin.h
  36c896a4416082bcb046eb2b200a71c3  gcc/config/i386/avx10_2-512mediaintrin.h
  c2d107314aa5790478bb819993a09aa9  gcc/config/i386/avx10_2-512minmaxintrin.h
  a9c0fdd5dbcb4b5619b2b59aff7f21ff  gcc/config/i386/avx10_2-512satcvtintrin.h
! d9fb23a5076ec2994e9413c0c6ad9627  gcc/config/i386/avx10_2bf16intrin.h
  c2a3fe52895b1689c1c46af985a10daa  gcc/config/i386/avx10_2convertintrin.h
  284b65d9f14985fcf610d8d1a59a3b88  gcc/config/i386/avx10_2copyintrin.h
  e982b5c4c994f88d7dbf190bc95d301a  gcc/config/i386/avx10_2mediaintrin.h
--- 4072,4096 ----
  6fb8f575d2ba05a77e86b2a4670259bb  gcc/config/hpux11.opt.urls
  615ede3e03ebc06635041469a862accb  gcc/config/i386/adxintrin.h
  21cbb29f86ff25a147e5d677cb9053d1  gcc/config/i386/ammintrin.h
! a3713e458fdc94ab5340bc220b4cb9fd  gcc/config/i386/amxavx512intrin.h
! 242785f344b871a4f50c646ba2ec64de  gcc/config/i386/amxbf16intrin.h
! 98ccf45d8bfa7925c152e946c3671c92  gcc/config/i386/amxcomplexintrin.h
! f4f6eae612e36e6933ab2e0b87a9d635  gcc/config/i386/amxfp16intrin.h
! 75b2616569c7394efae050df4767a533  gcc/config/i386/amxfp8intrin.h
! 0ca6308f48d177c1f4d602109530cb32  gcc/config/i386/amxint8intrin.h
! 908723d531540995e666ab5dca6d9742  gcc/config/i386/amxmovrsintrin.h
! c0d3ca3f62caf30238675b1b8479aadc  gcc/config/i386/amxtf32intrin.h
! 2b98a9bda943e43fedad48abd97e176a  gcc/config/i386/amxtileintrin.h
  4739b13293a8cea0e9a3201a3a472ce6  gcc/config/i386/amxtransposeintrin.h
  d5344f5586a4fdddcf32cfad79672651  gcc/config/i386/athlon.md
  c7639653fc509c53955783e5c3d3ed63  gcc/config/i386/atom.md
  e4ad129bfdb387d691c45180574d648e  gcc/config/i386/att.h
! d81f396b6bbbb5865185c6b88e047ed1  gcc/config/i386/avx10_2-512bf16intrin.h
  ecc1c16f801882fa2e1ed99c97694993  gcc/config/i386/avx10_2-512convertintrin.h
  36c896a4416082bcb046eb2b200a71c3  gcc/config/i386/avx10_2-512mediaintrin.h
  c2d107314aa5790478bb819993a09aa9  gcc/config/i386/avx10_2-512minmaxintrin.h
  a9c0fdd5dbcb4b5619b2b59aff7f21ff  gcc/config/i386/avx10_2-512satcvtintrin.h
! 499f6ff224b187236132c0d06d41e97f  gcc/config/i386/avx10_2bf16intrin.h
  c2a3fe52895b1689c1c46af985a10daa  gcc/config/i386/avx10_2convertintrin.h
  284b65d9f14985fcf610d8d1a59a3b88  gcc/config/i386/avx10_2copyintrin.h
  e982b5c4c994f88d7dbf190bc95d301a  gcc/config/i386/avx10_2mediaintrin.h
*************** a2bf0873375fc2ab681bcd55a2b23e26  gcc/co
*** 4167,4173 ****
  a5346c37d189bcadf27fd946fe2c2566  gcc/config/i386/djgpp.opt
  1b346c8cab1daa697ecd6c31e8e0e1d5  gcc/config/i386/djgpp.opt.urls
  0ada511dcea9cb884e7aed714cecb141  gcc/config/i386/dragonfly.h
! 136661c3f00ab0e5caae3d0b17f4f399  gcc/config/i386/driver-i386.cc
  8db059b2a4621231dcdc591159eace91  gcc/config/i386/driver-mingw32.cc
  436804c1d1ef71b2a318f01e7e91c190  gcc/config/i386/emmintrin.h
  def0edea16aac07cf3e0e7d2daf27455  gcc/config/i386/enqcmdintrin.h
--- 4169,4175 ----
  a5346c37d189bcadf27fd946fe2c2566  gcc/config/i386/djgpp.opt
  1b346c8cab1daa697ecd6c31e8e0e1d5  gcc/config/i386/djgpp.opt.urls
  0ada511dcea9cb884e7aed714cecb141  gcc/config/i386/dragonfly.h
! fd6cfaf4d5b29d0d64b44aeea5759534  gcc/config/i386/driver-i386.cc
  8db059b2a4621231dcdc591159eace91  gcc/config/i386/driver-mingw32.cc
  436804c1d1ef71b2a318f01e7e91c190  gcc/config/i386/emmintrin.h
  def0edea16aac07cf3e0e7d2daf27455  gcc/config/i386/enqcmdintrin.h
*************** c242989ba84f31157338b4714b4248e1  gcc/co
*** 4192,4214 ****
  2afb8c15e388bbdb218228ca7c8afb72  gcc/config/i386/haswell.md
  ebf8fdac06861901e2744eb4d97b15c5  gcc/config/i386/host-cygwin.cc
  3d9c9e8494474be5ac7db986b95cbdcf  gcc/config/i386/host-i386-darwin.cc
! fdf4ae0ccca294b8f1ce4d53f2bbf5fa  gcc/config/i386/host-mingw32.cc
  c527fd639b424e1e0a95494e13e8cad2  gcc/config/i386/hresetintrin.h
  597ec35a360b8b37f5d1e4483b508834  gcc/config/i386/i386-builtin-types.awk
  5090ae3207d0bedc79ecdcec7c2cb71b  gcc/config/i386/i386-builtin-types.def
! 5d41403b2bcce8b60a14478d49fc1d63  gcc/config/i386/i386-builtin.def
  e772636bf04161d74c6568f788415fe3  gcc/config/i386/i386-builtins.cc
  d3fb594d11281112ff8d8f304a000c4e  gcc/config/i386/i386-builtins.h
  b1d3b888c9cd80df50837a2c205587f2  gcc/config/i386/i386-c.cc
  54909bb70e074c14dcf4499a5baedc54  gcc/config/i386/i386-d.cc
  172dcd61afc5800b61ebb688838d9adc  gcc/config/i386/i386-d.h
! eec975e5d0b28a6fae8c54905cb7ad87  gcc/config/i386/i386-expand.cc
  c9c3969c00808c9b6809fbeab3e4a1d2  gcc/config/i386/i386-expand.h
  ba79dc9cffbca47e10d361aeb3d716f3  gcc/config/i386/i386-features.cc
  94adc181549d171cf2618530e3b49ff7  gcc/config/i386/i386-features.h
  6eb6541c33da88d0910200287b50cdff  gcc/config/i386/i386-isa.def
  795643c7d23acf02568d7fa7acad0138  gcc/config/i386/i386-modes.def
! 2416c5636e515b0240835120ca4cf86e  gcc/config/i386/i386-options.cc
  08c877d750ab52ddb4fe7c99c90d62de  gcc/config/i386/i386-options.h
  02c486451c524cfc143358e07b88cd70  gcc/config/i386/i386-opts.h
  690c3ac09dc36dc8e7f82bad277ec24c  gcc/config/i386/i386-passes.def
--- 4194,4216 ----
  2afb8c15e388bbdb218228ca7c8afb72  gcc/config/i386/haswell.md
  ebf8fdac06861901e2744eb4d97b15c5  gcc/config/i386/host-cygwin.cc
  3d9c9e8494474be5ac7db986b95cbdcf  gcc/config/i386/host-i386-darwin.cc
! 2df56b26eb137c3cee0794cd9a30c433  gcc/config/i386/host-mingw32.cc
  c527fd639b424e1e0a95494e13e8cad2  gcc/config/i386/hresetintrin.h
  597ec35a360b8b37f5d1e4483b508834  gcc/config/i386/i386-builtin-types.awk
  5090ae3207d0bedc79ecdcec7c2cb71b  gcc/config/i386/i386-builtin-types.def
! 06b9eb4bb29066c8e417daa395d993a6  gcc/config/i386/i386-builtin.def
  e772636bf04161d74c6568f788415fe3  gcc/config/i386/i386-builtins.cc
  d3fb594d11281112ff8d8f304a000c4e  gcc/config/i386/i386-builtins.h
  b1d3b888c9cd80df50837a2c205587f2  gcc/config/i386/i386-c.cc
  54909bb70e074c14dcf4499a5baedc54  gcc/config/i386/i386-d.cc
  172dcd61afc5800b61ebb688838d9adc  gcc/config/i386/i386-d.h
! b44da4b2d3aa31065c68dde766063260  gcc/config/i386/i386-expand.cc
  c9c3969c00808c9b6809fbeab3e4a1d2  gcc/config/i386/i386-expand.h
  ba79dc9cffbca47e10d361aeb3d716f3  gcc/config/i386/i386-features.cc
  94adc181549d171cf2618530e3b49ff7  gcc/config/i386/i386-features.h
  6eb6541c33da88d0910200287b50cdff  gcc/config/i386/i386-isa.def
  795643c7d23acf02568d7fa7acad0138  gcc/config/i386/i386-modes.def
! 224504f1fd020a80489c39cc10a7e268  gcc/config/i386/i386-options.cc
  08c877d750ab52ddb4fe7c99c90d62de  gcc/config/i386/i386-options.h
  02c486451c524cfc143358e07b88cd70  gcc/config/i386/i386-opts.h
  690c3ac09dc36dc8e7f82bad277ec24c  gcc/config/i386/i386-passes.def
*************** ba79dc9cffbca47e10d361aeb3d716f3  gcc/co
*** 4216,4224 ****
  5b778b3296ea91dab0ca82338ca6828d  gcc/config/i386/i386-rust-and-jit.inc
  b19c27e8a900f9eeb7d73e2bb4b8d313  gcc/config/i386/i386-rust.cc
  24065393854cd1e08e3285bd707210fe  gcc/config/i386/i386-rust.h
! bc56596480d67d323c5d40302bce3fc8  gcc/config/i386/i386.cc
! 814201a3143f3d15ba0b897e34e3d459  gcc/config/i386/i386.h
! 78ebb2bf35b2a4cabbdff4ced1fbc4e1  gcc/config/i386/i386.md
  5a3c6fa6266505bbc0789e269da6e250  gcc/config/i386/i386.opt
  56dd2039e03b3ae92142eb68be464b98  gcc/config/i386/i386.opt.urls
  f22876926ff4a2cb67b105ac266c72ea  gcc/config/i386/i386elf.h
--- 4218,4226 ----
  5b778b3296ea91dab0ca82338ca6828d  gcc/config/i386/i386-rust-and-jit.inc
  b19c27e8a900f9eeb7d73e2bb4b8d313  gcc/config/i386/i386-rust.cc
  24065393854cd1e08e3285bd707210fe  gcc/config/i386/i386-rust.h
! 984423facca351215a6d7f335c0d40bb  gcc/config/i386/i386.cc
! 0150b759a527c67bf0c83ed700545456  gcc/config/i386/i386.h
! 8a8569f9ec65419470ab249f54ecd60a  gcc/config/i386/i386.md
  5a3c6fa6266505bbc0789e269da6e250  gcc/config/i386/i386.opt
  56dd2039e03b3ae92142eb68be464b98  gcc/config/i386/i386.opt.urls
  f22876926ff4a2cb67b105ac266c72ea  gcc/config/i386/i386elf.h
*************** a0eef2ed8deb81df9cde53071094d3ff  gcc/co
*** 4244,4250 ****
  55b88c976269e37a537664690c4fab53  gcc/config/i386/mingw-w64.opt.urls
  b68f60806cbb24b711d235b8e446a62a  gcc/config/i386/mm3dnow.h
  783259947fde0f03f564d0e19ad27e23  gcc/config/i386/mmintrin.h
! 9cfe853ffa46db93a7b220aa724b4fbd  gcc/config/i386/mmx.md
  800d6b8630ece4412e7cc8572552812a  gcc/config/i386/movdirintrin.h
  a60aa400230276b237aace7baf1becdb  gcc/config/i386/movrsintrin.h
  0a902dd4d4e82e9bf2831a3848a102ed  gcc/config/i386/mwaitintrin.h
--- 4246,4252 ----
  55b88c976269e37a537664690c4fab53  gcc/config/i386/mingw-w64.opt.urls
  b68f60806cbb24b711d235b8e446a62a  gcc/config/i386/mm3dnow.h
  783259947fde0f03f564d0e19ad27e23  gcc/config/i386/mmintrin.h
! 0bfe63899c97e6d0701a66b4e810d3d8  gcc/config/i386/mmx.md
  800d6b8630ece4412e7cc8572552812a  gcc/config/i386/movdirintrin.h
  a60aa400230276b237aace7baf1becdb  gcc/config/i386/movrsintrin.h
  0a902dd4d4e82e9bf2831a3848a102ed  gcc/config/i386/mwaitintrin.h
*************** de4e89bc042c6bc7eb093bda5d33a266  gcc/co
*** 4281,4287 ****
  380f2e50c7d803059b0e7617da00460f  gcc/config/i386/sm4intrin.h
  a24296639492577352dd1309b136bc9a  gcc/config/i386/smmintrin.h
  f98c4d94bf04187a2905e9f4ce7d589b  gcc/config/i386/sol2.h
! 8587a07756c99cb2fad4c72072c8e617  gcc/config/i386/sse.md
  7c6ff828c11c2892168a2e450559dcb6  gcc/config/i386/ssemath.h
  7ada9f54207701e1d29fd03ea990e163  gcc/config/i386/stringop.def
  9f75a2e9a9bf20db0bef264cabe77a29  gcc/config/i386/subst.md
--- 4283,4289 ----
  380f2e50c7d803059b0e7617da00460f  gcc/config/i386/sm4intrin.h
  a24296639492577352dd1309b136bc9a  gcc/config/i386/smmintrin.h
  f98c4d94bf04187a2905e9f4ce7d589b  gcc/config/i386/sol2.h
! c8ea31976d63d485f96c63286b3c29a0  gcc/config/i386/sse.md
  7c6ff828c11c2892168a2e450559dcb6  gcc/config/i386/ssemath.h
  7ada9f54207701e1d29fd03ea990e163  gcc/config/i386/stringop.def
  9f75a2e9a9bf20db0bef264cabe77a29  gcc/config/i386/subst.md
*************** d4774d1c1bf66446a29da4693ee53d1e  gcc/co
*** 4334,4346 ****
  acfa3e6ce1f37bbad35e49e06b663ea9  gcc/config/i386/x86-tune-sched-bd.cc
  13fcb5234b2d8208c12932d96efef72b  gcc/config/i386/x86-tune-sched-core.cc
  9054e39f9f68ade31cfdeb33e9c905ce  gcc/config/i386/x86-tune-sched.cc
! 29d864447ea152baac4880e98ba5796f  gcc/config/i386/x86-tune.def
  95b91fd21504348ecd2f8510ebab204c  gcc/config/i386/x86gprintrin.h
  1ef1746c703bfdb9c245f7b7276b7d56  gcc/config/i386/x86intrin.h
  709155b5a0371d397baf22295493b77b  gcc/config/i386/xm-cygwin.h
  defa9e0464eba862bed3764716650f29  gcc/config/i386/xm-djgpp.h
  bae94af26195c7e64a5f59018ab9df85  gcc/config/i386/xm-mingw32.h
! 9463d0d50e39a1dff707b4a422f44f1d  gcc/config/i386/xmmintrin.h
  368186e4aee42c25c7031e2fcaa4c3fd  gcc/config/i386/xopintrin.h
  c59d69078b2dfb5edefbca0d79268e54  gcc/config/i386/xsavecintrin.h
  97f252ad13e5079471073dcf6ad3030c  gcc/config/i386/xsaveintrin.h
--- 4336,4348 ----
  acfa3e6ce1f37bbad35e49e06b663ea9  gcc/config/i386/x86-tune-sched-bd.cc
  13fcb5234b2d8208c12932d96efef72b  gcc/config/i386/x86-tune-sched-core.cc
  9054e39f9f68ade31cfdeb33e9c905ce  gcc/config/i386/x86-tune-sched.cc
! 23ca41fb2cba760dc5d556aa758bd93b  gcc/config/i386/x86-tune.def
  95b91fd21504348ecd2f8510ebab204c  gcc/config/i386/x86gprintrin.h
  1ef1746c703bfdb9c245f7b7276b7d56  gcc/config/i386/x86intrin.h
  709155b5a0371d397baf22295493b77b  gcc/config/i386/xm-cygwin.h
  defa9e0464eba862bed3764716650f29  gcc/config/i386/xm-djgpp.h
  bae94af26195c7e64a5f59018ab9df85  gcc/config/i386/xm-mingw32.h
! f0e2f038176680312a6cf7d3c8359dd2  gcc/config/i386/xmmintrin.h
  368186e4aee42c25c7031e2fcaa4c3fd  gcc/config/i386/xopintrin.h
  c59d69078b2dfb5edefbca0d79268e54  gcc/config/i386/xsavecintrin.h
  97f252ad13e5079471073dcf6ad3030c  gcc/config/i386/xsaveintrin.h
*************** fdc0b83b9dafbea2480c0a1207f45509  gcc/co
*** 4417,4423 ****
  a9d1d80c40cc6eb8e9a32d54f82dae43  gcc/config/lm32/t-lm32
  660559cdac2b08e91486a9db7b4a2872  gcc/config/lm32/t-rtems
  94943495585177e557d393d4272bec93  gcc/config/lm32/uclinux-elf.h
! 713faf5e5c45f844fbc9ad5551db1456  gcc/config/loongarch/constraints.md
  c34979082425d78409c769a25389d804  gcc/config/loongarch/elf.h
  8b1c9c004fdbc7f460a64bda0b70f4d6  gcc/config/loongarch/generic.md
  a61fbfd9ac48f94f17ccd936a484b2c8  gcc/config/loongarch/genopts/gen-evolution.awk
--- 4419,4425 ----
  a9d1d80c40cc6eb8e9a32d54f82dae43  gcc/config/lm32/t-lm32
  660559cdac2b08e91486a9db7b4a2872  gcc/config/lm32/t-rtems
  94943495585177e557d393d4272bec93  gcc/config/lm32/uclinux-elf.h
! 4474d8492bf00d91a068a17e68e2cd23  gcc/config/loongarch/constraints.md
  c34979082425d78409c769a25389d804  gcc/config/loongarch/elf.h
  8b1c9c004fdbc7f460a64bda0b70f4d6  gcc/config/loongarch/generic.md
  a61fbfd9ac48f94f17ccd936a484b2c8  gcc/config/loongarch/genopts/gen-evolution.awk
*************** c69ef27c10b319a5443289af516f40b8  gcc/co
*** 4428,4437 ****
  dfcc88ca848e0510d6a048cef812a984  gcc/config/loongarch/gnu-user.h
  0214c19eeeeb90d46d358333d5381814  gcc/config/loongarch/la464.md
  2da06c6340275c1c0670ab82a7252f77  gcc/config/loongarch/larchintrin.h
! b74eced053703973adb776263950adbe  gcc/config/loongarch/lasx.md
  64deba47bb6c4537af9a962db8e160d1  gcc/config/loongarch/lasxintrin.h
  a11605122c3f864d3527acf829c67179  gcc/config/loongarch/linux.h
! ac0512e8b259ed63d386edaa0457a5ad  gcc/config/loongarch/loongarch-builtins.cc
  514549db1d124f4f93b3859fca40e770  gcc/config/loongarch/loongarch-c.cc
  59c96fed2f7df8b17e509bfec3c4edcb  gcc/config/loongarch/loongarch-cpu.cc
  0857d194516733f19458bb44bfdeabc4  gcc/config/loongarch/loongarch-cpu.h
--- 4430,4439 ----
  dfcc88ca848e0510d6a048cef812a984  gcc/config/loongarch/gnu-user.h
  0214c19eeeeb90d46d358333d5381814  gcc/config/loongarch/la464.md
  2da06c6340275c1c0670ab82a7252f77  gcc/config/loongarch/larchintrin.h
! 53d67be06907a90f1726d9625189483f  gcc/config/loongarch/lasx.md
  64deba47bb6c4537af9a962db8e160d1  gcc/config/loongarch/lasxintrin.h
  a11605122c3f864d3527acf829c67179  gcc/config/loongarch/linux.h
! cdbdbcd41c06dc52f5c87bed89e0cf37  gcc/config/loongarch/loongarch-builtins.cc
  514549db1d124f4f93b3859fca40e770  gcc/config/loongarch/loongarch-c.cc
  59c96fed2f7df8b17e509bfec3c4edcb  gcc/config/loongarch/loongarch-cpu.cc
  0857d194516733f19458bb44bfdeabc4  gcc/config/loongarch/loongarch-cpu.h
*************** ac0512e8b259ed63d386edaa0457a5ad  gcc/co
*** 4439,4467 ****
  b9324da4da2e361b6f6b42ab32c89139  gcc/config/loongarch/loongarch-d.h
  833584d561eee00538a06353674c2923  gcc/config/loongarch/loongarch-def-array.h
  f33b12257452472d47dac65075ab5d62  gcc/config/loongarch/loongarch-def.cc
! 185ea2daeab6458dea2831efe865a9b3  gcc/config/loongarch/loongarch-def.h
  4a2c4b8277bf78c873773752258854de  gcc/config/loongarch/loongarch-driver.cc
  9034667d3a99adb6488a0cf70a9c572c  gcc/config/loongarch/loongarch-driver.h
  3fd647901cdc3e1d254c3b6a55a2fb7e  gcc/config/loongarch/loongarch-evolution.cc
  50e2e743ee1a4e3501d962e45003c84a  gcc/config/loongarch/loongarch-evolution.h
! ff10ba24a7f588f5d1bfbc386be0a309  gcc/config/loongarch/loongarch-ftypes.def
  d7cf3f5e6d8c9402706533b8bbd7093d  gcc/config/loongarch/loongarch-modes.def
  d3ad067b1fa15bbce42fd3cc4499966e  gcc/config/loongarch/loongarch-opts.cc
  084ba7e2ad2ac804b5f596bca0df06b3  gcc/config/loongarch/loongarch-opts.h
! 920651b1ba57b9faa704d0ac560b4ea4  gcc/config/loongarch/loongarch-protos.h
  688cd325dbeb853413435f029e712cb2  gcc/config/loongarch/loongarch-str.h
  a8cd9a4a3d712802475e91e0ec9a3274  gcc/config/loongarch/loongarch-target-attr.cc
  f539c2da7e8d7a3ef7c741bceee19eed  gcc/config/loongarch/loongarch-tune.h
! a9f0b7daa0d8e187bc6fc58f0b97baab  gcc/config/loongarch/loongarch.cc
  cac7a4f19361731647870d2210078a9e  gcc/config/loongarch/loongarch.h
! 9fd9109f20f7dfce6de910d45b5dbc85  gcc/config/loongarch/loongarch.md
  bcc951e237d5501fc2acd6ef3141724c  gcc/config/loongarch/loongarch.opt
  264f23ee79258ff82bda293d093dd06b  gcc/config/loongarch/loongarch.opt.urls
! a1ceaab52de5f1950f6c6b63c5a718ea  gcc/config/loongarch/lsx.md
  429434e5f1e9f9afc839f4409102d5ea  gcc/config/loongarch/lsxintrin.h
  5a232a75001e3db7ee3e491afdfae629  gcc/config/loongarch/musl.h
! e357122938174e9f48e1036cb67c8a21  gcc/config/loongarch/predicates.md
! 3b0d6d8a96b8678da4cf1e596d893d76  gcc/config/loongarch/simd.md
  8dd632424d9d78f36a7f6de524c32142  gcc/config/loongarch/sync.md
  e2aad9f2fd1ee2a4668948f381da109c  gcc/config/loongarch/t-linux
  4143126e9ad08f12c1a4555c0f87948d  gcc/config/loongarch/t-loongarch
--- 4441,4469 ----
  b9324da4da2e361b6f6b42ab32c89139  gcc/config/loongarch/loongarch-d.h
  833584d561eee00538a06353674c2923  gcc/config/loongarch/loongarch-def-array.h
  f33b12257452472d47dac65075ab5d62  gcc/config/loongarch/loongarch-def.cc
! 5155922cf688d9073a6497f7def3c933  gcc/config/loongarch/loongarch-def.h
  4a2c4b8277bf78c873773752258854de  gcc/config/loongarch/loongarch-driver.cc
  9034667d3a99adb6488a0cf70a9c572c  gcc/config/loongarch/loongarch-driver.h
  3fd647901cdc3e1d254c3b6a55a2fb7e  gcc/config/loongarch/loongarch-evolution.cc
  50e2e743ee1a4e3501d962e45003c84a  gcc/config/loongarch/loongarch-evolution.h
! 3fc1896059f9f241b97d3b6cc3ead0fc  gcc/config/loongarch/loongarch-ftypes.def
  d7cf3f5e6d8c9402706533b8bbd7093d  gcc/config/loongarch/loongarch-modes.def
  d3ad067b1fa15bbce42fd3cc4499966e  gcc/config/loongarch/loongarch-opts.cc
  084ba7e2ad2ac804b5f596bca0df06b3  gcc/config/loongarch/loongarch-opts.h
! 69bbf24dfcf19a6e6a733c4c49c080a7  gcc/config/loongarch/loongarch-protos.h
  688cd325dbeb853413435f029e712cb2  gcc/config/loongarch/loongarch-str.h
  a8cd9a4a3d712802475e91e0ec9a3274  gcc/config/loongarch/loongarch-target-attr.cc
  f539c2da7e8d7a3ef7c741bceee19eed  gcc/config/loongarch/loongarch-tune.h
! 9148f584e402226c743aac81b0434a70  gcc/config/loongarch/loongarch.cc
  cac7a4f19361731647870d2210078a9e  gcc/config/loongarch/loongarch.h
! 648c5cd498a2d5b2549da175e52de4d3  gcc/config/loongarch/loongarch.md
  bcc951e237d5501fc2acd6ef3141724c  gcc/config/loongarch/loongarch.opt
  264f23ee79258ff82bda293d093dd06b  gcc/config/loongarch/loongarch.opt.urls
! 6ba577cf829032a7c9669bad45925ce9  gcc/config/loongarch/lsx.md
  429434e5f1e9f9afc839f4409102d5ea  gcc/config/loongarch/lsxintrin.h
  5a232a75001e3db7ee3e491afdfae629  gcc/config/loongarch/musl.h
! 340e8f716943268501e797501cb0991a  gcc/config/loongarch/predicates.md
! 3dd4f7354bd890432c899e064e486f06  gcc/config/loongarch/simd.md
  8dd632424d9d78f36a7f6de524c32142  gcc/config/loongarch/sync.md
  e2aad9f2fd1ee2a4668948f381da109c  gcc/config/loongarch/t-linux
  4143126e9ad08f12c1a4555c0f87948d  gcc/config/loongarch/t-loongarch
*************** cb26f6c0709fd9533aec72a07a36bf8b  gcc/co
*** 4555,4571 ****
  d2676839c4d7a7bcd706a386c029aea2  gcc/config/mcore/predicates.md
  8e427b88391a8cbadd500d5b5c18dd88  gcc/config/mcore/t-mcore
  899d399d572cb0f5b6983bf29e5f2dc1  gcc/config/microblaze/constraints.md
  cd06662d679aac52aa61b8507723384a  gcc/config/microblaze/linux.h
  9bc1818e3b430b758bafdf04bac27f5b  gcc/config/microblaze/microblaze-c.cc
! c1cdfa70252d5e45a9df69ddc7a1ddcb  gcc/config/microblaze/microblaze-protos.h
! b6ebd6ba65f7755a82057ecdf931d5aa  gcc/config/microblaze/microblaze.cc
  0a4fb603eb9a1c6e31bb8fa7e38b16d1  gcc/config/microblaze/microblaze.h
! b3a2d37f3594f70e239fba70728cc641  gcc/config/microblaze/microblaze.md
  3da1e85fbc11c0a5b746cb77b96a06f3  gcc/config/microblaze/microblaze.opt
  ab7ecb87ef3b7a388cab0e4d0d2eb0db  gcc/config/microblaze/microblaze.opt.urls
  0014185f2b662af11e97611027548662  gcc/config/microblaze/predicates.md
  6440a5281eac59ad82a11734d4e82b80  gcc/config/microblaze/rtems.h
! 17120f7b651cdd7f0ef24e2c1b93b29b  gcc/config/microblaze/sync.md
  df031372af9c825d21d2058d266247a0  gcc/config/microblaze/t-microblaze
  63ccba4e7f745d36609d7c129bac6288  gcc/config/microblaze/t-microblaze-linux
  a8b08640136e3e7712d2278eb84c21d9  gcc/config/microblaze/t-rtems
--- 4557,4574 ----
  d2676839c4d7a7bcd706a386c029aea2  gcc/config/mcore/predicates.md
  8e427b88391a8cbadd500d5b5c18dd88  gcc/config/mcore/t-mcore
  899d399d572cb0f5b6983bf29e5f2dc1  gcc/config/microblaze/constraints.md
+ 1ac49ffd4d6e30329a7a425da3ce8eaa  gcc/config/microblaze/iterators.md
  cd06662d679aac52aa61b8507723384a  gcc/config/microblaze/linux.h
  9bc1818e3b430b758bafdf04bac27f5b  gcc/config/microblaze/microblaze-c.cc
! 6e52b66a284ee7f7534fd34961907824  gcc/config/microblaze/microblaze-protos.h
! ad6bbf6b9c6de5a9c347d1cd48cc4c76  gcc/config/microblaze/microblaze.cc
  0a4fb603eb9a1c6e31bb8fa7e38b16d1  gcc/config/microblaze/microblaze.h
! a3eae3d0a3005dcb292c7134f86a9457  gcc/config/microblaze/microblaze.md
  3da1e85fbc11c0a5b746cb77b96a06f3  gcc/config/microblaze/microblaze.opt
  ab7ecb87ef3b7a388cab0e4d0d2eb0db  gcc/config/microblaze/microblaze.opt.urls
  0014185f2b662af11e97611027548662  gcc/config/microblaze/predicates.md
  6440a5281eac59ad82a11734d4e82b80  gcc/config/microblaze/rtems.h
! 1750a4538fa32f377e18fb05173b0d21  gcc/config/microblaze/sync.md
  df031372af9c825d21d2058d266247a0  gcc/config/microblaze/t-microblaze
  63ccba4e7f745d36609d7c129bac6288  gcc/config/microblaze/t-microblaze-linux
  a8b08640136e3e7712d2278eb84c21d9  gcc/config/microblaze/t-rtems
*************** c7d4fb30a2fe78bcdb23db8d74da3746  gcc/co
*** 4867,4875 ****
  ede4cffb79f5496c4063328b9d126f26  gcc/config/pa/pa-openbsd.h
  cd1b48d66fffc5f91a26b160085fbd1e  gcc/config/pa/pa-opts.h
  596c088c93babeea4848ba2aed2eb6b0  gcc/config/pa/pa-protos.h
! e331e7449b7ec4ba3834db246f482600  gcc/config/pa/pa.cc
  f1b444334b18e47c3fd2604c6594c45d  gcc/config/pa/pa.h
! 5ad34ac7732965ac669deb50e30e698d  gcc/config/pa/pa.md
  3fe76eeefa8fabdfab333fb43efecaa8  gcc/config/pa/pa.opt
  933c64daea7344878218813a7a070f31  gcc/config/pa/pa.opt.urls
  b7f09c119e3da135e762b15fc5f8f98e  gcc/config/pa/pa32-linux.h
--- 4870,4878 ----
  ede4cffb79f5496c4063328b9d126f26  gcc/config/pa/pa-openbsd.h
  cd1b48d66fffc5f91a26b160085fbd1e  gcc/config/pa/pa-opts.h
  596c088c93babeea4848ba2aed2eb6b0  gcc/config/pa/pa-protos.h
! ae3652164c98edbfd442270f12a03e75  gcc/config/pa/pa.cc
  f1b444334b18e47c3fd2604c6594c45d  gcc/config/pa/pa.h
! 8e6e345e1186c8227240829fc3b9195b  gcc/config/pa/pa.md
  3fe76eeefa8fabdfab333fb43efecaa8  gcc/config/pa/pa.opt
  933c64daea7344878218813a7a070f31  gcc/config/pa/pa.opt.urls
  b7f09c119e3da135e762b15fc5f8f98e  gcc/config/pa/pa32-linux.h
*************** cd13b51383c99c08d86250b61fed3805  gcc/co
*** 4914,4920 ****
  540013c309ceb3efb2b16d728b1fc726  gcc/config/pru/t-pru
  a5e691ce14017f2a89283ed510bb78fd  gcc/config/riscv/arch-canonicalize
  81827306988efad07b1063e86fed4fba  gcc/config/riscv/autovec-opt.md
! 4032274539da6915927b3fb611848f38  gcc/config/riscv/autovec.md
  1b5bf211ae4f1c676fc56b08b23e7d66  gcc/config/riscv/bitmanip.md
  41ad36f502789bcb62ddd76fa56ba00d  gcc/config/riscv/constraints.md
  4e0968dc35562b151fd162778542718f  gcc/config/riscv/corev.def
--- 4917,4923 ----
  540013c309ceb3efb2b16d728b1fc726  gcc/config/pru/t-pru
  a5e691ce14017f2a89283ed510bb78fd  gcc/config/riscv/arch-canonicalize
  81827306988efad07b1063e86fed4fba  gcc/config/riscv/autovec-opt.md
! 257ef39a997b6782e80bfe268f7765bc  gcc/config/riscv/autovec.md
  1b5bf211ae4f1c676fc56b08b23e7d66  gcc/config/riscv/bitmanip.md
  41ad36f502789bcb62ddd76fa56ba00d  gcc/config/riscv/constraints.md
  4e0968dc35562b151fd162778542718f  gcc/config/riscv/corev.def
*************** b7e955ddfed9efbb0296ef639c095e2a  gcc/co
*** 4931,4977 ****
  52728cfca05017f727570e4e983fc5fa  gcc/config/riscv/multilib-generator
  80e8994ee9e6abf380e68aca6443d157  gcc/config/riscv/peephole.md
  a3d3fa9142d4e2ed34ead146941c574a  gcc/config/riscv/pic.md
! fd976e9dd7410889959b27b332b33e1b  gcc/config/riscv/predicates.md
! d7a63bbbf6653fc311084e8bb09d713b  gcc/config/riscv/riscv-avlprop.cc
  3b5651b95f6a076ccd28e73bae600e52  gcc/config/riscv/riscv-builtins.cc
! 4107a71abfd2e5225d66986a671e05a5  gcc/config/riscv/riscv-c.cc
  3b7012a7d47b9aaf163e890d3e29013e  gcc/config/riscv/riscv-cmo.def
  08fc3d4342dd32dd9e649003b3140d1f  gcc/config/riscv/riscv-cores.def
  173996678a5bf2b1b40e30fe260109b4  gcc/config/riscv/riscv-d.cc
  790bd2a5355776ab5ebf4c7814489760  gcc/config/riscv/riscv-d.h
  1b0b6b632f747d9387ef25821e8673b4  gcc/config/riscv/riscv-feature-bits.h
  b467d35485b39b25863e918609a322d0  gcc/config/riscv/riscv-ftypes.def
! b1bc6d82a24b7b0e658a43956a37419c  gcc/config/riscv/riscv-modes.def
  2b3bbaf831944c3ad3b4219f260ade71  gcc/config/riscv/riscv-opts.h
  028368b39011fff2cdc58337d388aaa8  gcc/config/riscv/riscv-passes.def
! cc4d538f7d66895b427db54b9660a953  gcc/config/riscv/riscv-protos.h
  446f0f39c6f980e246ea56f1233e9271  gcc/config/riscv/riscv-scalar-crypto.def
  8599f55379a8c8fc0b569c7401645a66  gcc/config/riscv/riscv-selftests.cc
  4c94b064f758f7bdf05e99a02b8e15ed  gcc/config/riscv/riscv-shorten-memrefs.cc
  62b31689063eeeca8f0e7ae25da92d0a  gcc/config/riscv/riscv-sr.cc
! 5934e743da72bdc74e1d53f049b127fc  gcc/config/riscv/riscv-string.cc
  6e4e2a0f934c6d930c9d9243d5c89f92  gcc/config/riscv/riscv-subset.h
  a583d4ec085af9e2f577c155bf259caf  gcc/config/riscv/riscv-target-attr.cc
! f7ba2198fd37168868f4010a0de34bab  gcc/config/riscv/riscv-v.cc
  0d419e9df116fed7ce6e0ae15131417e  gcc/config/riscv/riscv-v.h
! 8bb68ed754e01cc6cbd31b250968d7f6  gcc/config/riscv/riscv-vector-builtins-bases.cc
  689f453a4cdf7fa3e64a7f4bfba8f7dd  gcc/config/riscv/riscv-vector-builtins-bases.h
  bdc5f6caf56fd0411faf705e9c32ccd4  gcc/config/riscv/riscv-vector-builtins-functions.def
  7439c310d1c94dcd962b3e1c3cd5d462  gcc/config/riscv/riscv-vector-builtins-shapes.cc
  92a4d3a592ebef60b5ed8a2c0963b75a  gcc/config/riscv/riscv-vector-builtins-shapes.h
  8bb44ae09faa0c992fb3f5abd38f63db  gcc/config/riscv/riscv-vector-builtins-types.def
! 873a88df734d47135f3c07274c42c7c3  gcc/config/riscv/riscv-vector-builtins.cc
  d5729696e4e1e43d59d9a0a80bc8e837  gcc/config/riscv/riscv-vector-builtins.def
! d913150bdc8f6c319cfecb8fb792f47e  gcc/config/riscv/riscv-vector-builtins.h
  3ab2c03f8df3835afe50fe4842b35c33  gcc/config/riscv/riscv-vector-costs.cc
  bd7a0d0d03ad4788f6cf7579df11a66e  gcc/config/riscv/riscv-vector-costs.h
  f51037a9e437f8e9ce7215b2da5ad4e2  gcc/config/riscv/riscv-vector-switch.def
! 9a0be0e3c4d4b0eec09eef7dee2a028a  gcc/config/riscv/riscv-vsetvl.cc
  16b7359c0b12895c0d7452fc89879a1a  gcc/config/riscv/riscv-vsetvl.def
  7082a18dbfc574d47bf71f4d50dd30f9  gcc/config/riscv/riscv-zicfilp.cc
! 959f9025a3246cbc8914e965e8965b76  gcc/config/riscv/riscv.cc
! 1153302a8d65cedebba8e1a3f67931b2  gcc/config/riscv/riscv.h
! 4454024804f9347267bff50e57227934  gcc/config/riscv/riscv.md
  c799356a57b52ab91ff324ab22516fba  gcc/config/riscv/riscv.opt
  d1d34490d8b53ec20d70ed9e2e56e3ab  gcc/config/riscv/riscv.opt.urls
  374e3c204946cff8c4be2bcad6641830  gcc/config/riscv/riscv_bitmanip.h
--- 4934,4980 ----
  52728cfca05017f727570e4e983fc5fa  gcc/config/riscv/multilib-generator
  80e8994ee9e6abf380e68aca6443d157  gcc/config/riscv/peephole.md
  a3d3fa9142d4e2ed34ead146941c574a  gcc/config/riscv/pic.md
! 380c0b75c1a5cff427f22b233e0edbc5  gcc/config/riscv/predicates.md
! 33444caff1e16e1f451b7bcb146d58b7  gcc/config/riscv/riscv-avlprop.cc
  3b5651b95f6a076ccd28e73bae600e52  gcc/config/riscv/riscv-builtins.cc
! d111dbb07d61205c1bdfcb26461d17dc  gcc/config/riscv/riscv-c.cc
  3b7012a7d47b9aaf163e890d3e29013e  gcc/config/riscv/riscv-cmo.def
  08fc3d4342dd32dd9e649003b3140d1f  gcc/config/riscv/riscv-cores.def
  173996678a5bf2b1b40e30fe260109b4  gcc/config/riscv/riscv-d.cc
  790bd2a5355776ab5ebf4c7814489760  gcc/config/riscv/riscv-d.h
  1b0b6b632f747d9387ef25821e8673b4  gcc/config/riscv/riscv-feature-bits.h
  b467d35485b39b25863e918609a322d0  gcc/config/riscv/riscv-ftypes.def
! 0d09936882064ab1e86b155a0dada37c  gcc/config/riscv/riscv-modes.def
  2b3bbaf831944c3ad3b4219f260ade71  gcc/config/riscv/riscv-opts.h
  028368b39011fff2cdc58337d388aaa8  gcc/config/riscv/riscv-passes.def
! 773b37f980789be83dbd30a77dc98e11  gcc/config/riscv/riscv-protos.h
  446f0f39c6f980e246ea56f1233e9271  gcc/config/riscv/riscv-scalar-crypto.def
  8599f55379a8c8fc0b569c7401645a66  gcc/config/riscv/riscv-selftests.cc
  4c94b064f758f7bdf05e99a02b8e15ed  gcc/config/riscv/riscv-shorten-memrefs.cc
  62b31689063eeeca8f0e7ae25da92d0a  gcc/config/riscv/riscv-sr.cc
! 7f7046e3a3981d68f66d265e454c8bc6  gcc/config/riscv/riscv-string.cc
  6e4e2a0f934c6d930c9d9243d5c89f92  gcc/config/riscv/riscv-subset.h
  a583d4ec085af9e2f577c155bf259caf  gcc/config/riscv/riscv-target-attr.cc
! 6af86e3aaa0e3615b0f0013d422c0083  gcc/config/riscv/riscv-v.cc
  0d419e9df116fed7ce6e0ae15131417e  gcc/config/riscv/riscv-v.h
! e9337d0668f1b2b3b7fea53ab1230048  gcc/config/riscv/riscv-vector-builtins-bases.cc
  689f453a4cdf7fa3e64a7f4bfba8f7dd  gcc/config/riscv/riscv-vector-builtins-bases.h
  bdc5f6caf56fd0411faf705e9c32ccd4  gcc/config/riscv/riscv-vector-builtins-functions.def
  7439c310d1c94dcd962b3e1c3cd5d462  gcc/config/riscv/riscv-vector-builtins-shapes.cc
  92a4d3a592ebef60b5ed8a2c0963b75a  gcc/config/riscv/riscv-vector-builtins-shapes.h
  8bb44ae09faa0c992fb3f5abd38f63db  gcc/config/riscv/riscv-vector-builtins-types.def
! 76666f96958b7f31de0214778544f54d  gcc/config/riscv/riscv-vector-builtins.cc
  d5729696e4e1e43d59d9a0a80bc8e837  gcc/config/riscv/riscv-vector-builtins.def
! e689fde027c44b52f074bd7c02361a6d  gcc/config/riscv/riscv-vector-builtins.h
  3ab2c03f8df3835afe50fe4842b35c33  gcc/config/riscv/riscv-vector-costs.cc
  bd7a0d0d03ad4788f6cf7579df11a66e  gcc/config/riscv/riscv-vector-costs.h
  f51037a9e437f8e9ce7215b2da5ad4e2  gcc/config/riscv/riscv-vector-switch.def
! e67a32ac377a0e247ed24db0833b46e6  gcc/config/riscv/riscv-vsetvl.cc
  16b7359c0b12895c0d7452fc89879a1a  gcc/config/riscv/riscv-vsetvl.def
  7082a18dbfc574d47bf71f4d50dd30f9  gcc/config/riscv/riscv-zicfilp.cc
! 5a510cd5c5ea3f3d498a83a7840e2abf  gcc/config/riscv/riscv.cc
! ca16cdb10e634d6cfa172d8a447f3053  gcc/config/riscv/riscv.h
! e0f559ad59aa7daada8d2a405d8ea9d8  gcc/config/riscv/riscv.md
  c799356a57b52ab91ff324ab22516fba  gcc/config/riscv/riscv.opt
  d1d34490d8b53ec20d70ed9e2e56e3ab  gcc/config/riscv/riscv.opt.urls
  374e3c204946cff8c4be2bcad6641830  gcc/config/riscv/riscv_bitmanip.h
*************** b24091b318c53548bc2b7d90f6505e4e  gcc/co
*** 4995,5001 ****
  381cb38e167feed84dad697fce89cabd  gcc/config/riscv/t-linux
  1ed181a166b1d0e206c4a4e0024cce2a  gcc/config/riscv/t-linux-multilib
  eeb5331a1eeca9299967d7177826ce33  gcc/config/riscv/t-riscv
! 51c5ea17e60737c695a38285dfce555d  gcc/config/riscv/t-rtems
  97a182737ed075d29be4ab1e848de420  gcc/config/riscv/t-withmultilib
  0478f4e79601d91fb8ad8f210b304a7b  gcc/config/riscv/t-withmultilib-generator
  8bcdf79541abe727e991e00993f379f6  gcc/config/riscv/thead-peephole.md
--- 4998,5004 ----
  381cb38e167feed84dad697fce89cabd  gcc/config/riscv/t-linux
  1ed181a166b1d0e206c4a4e0024cce2a  gcc/config/riscv/t-linux-multilib
  eeb5331a1eeca9299967d7177826ce33  gcc/config/riscv/t-riscv
! fe202105dd9e81b9ce8fdcc11d52c294  gcc/config/riscv/t-rtems
  97a182737ed075d29be4ab1e848de420  gcc/config/riscv/t-withmultilib
  0478f4e79601d91fb8ad8f210b304a7b  gcc/config/riscv/t-withmultilib-generator
  8bcdf79541abe727e991e00993f379f6  gcc/config/riscv/thead-peephole.md
*************** bcf728ad2379630774fd5bb529d4ee86  gcc/co
*** 5004,5012 ****
  48f9dcd9a5cd1980bd2db7697cdb717a  gcc/config/riscv/thead.cc
  fd8e9517de64ab23821ea1284ea6d7f6  gcc/config/riscv/thead.md
  b5e46305db1116cc1758b504ea37fe74  gcc/config/riscv/vector-bfloat16.md
! 88f7597398d0c8b8b87baba5fd207996  gcc/config/riscv/vector-crypto.md
! 243d8ebb633382b17c68b2758bbbae23  gcc/config/riscv/vector-iterators.md
! 0177d30f61d7730f86b0c4407ba5dc3f  gcc/config/riscv/vector.md
  4ffde0be9b9a0efe78c98b4407d00397  gcc/config/riscv/xiangshan.md
  0f64aaa114ab62a1a46f7ac422d6a129  gcc/config/riscv/zc.md
  2a87e05e2432e50d410a6b774704755f  gcc/config/riscv/zicond.md
--- 5007,5015 ----
  48f9dcd9a5cd1980bd2db7697cdb717a  gcc/config/riscv/thead.cc
  fd8e9517de64ab23821ea1284ea6d7f6  gcc/config/riscv/thead.md
  b5e46305db1116cc1758b504ea37fe74  gcc/config/riscv/vector-bfloat16.md
! 428b3b15c346673ee5ffc9dc578ed026  gcc/config/riscv/vector-crypto.md
! e847047c2d6ded5b286719e41aff47f4  gcc/config/riscv/vector-iterators.md
! 4a0e33dafe97b8b4e542fe23ab0fe493  gcc/config/riscv/vector.md
  4ffde0be9b9a0efe78c98b4407d00397  gcc/config/riscv/xiangshan.md
  0f64aaa114ab62a1a46f7ac422d6a129  gcc/config/riscv/zc.md
  2a87e05e2432e50d410a6b774704755f  gcc/config/riscv/zicond.md
*************** fe3d972a79442dc1b2043eabe38c2e2f  gcc/co
*** 5040,5053 ****
  32e09b60381687f9cd5b7b33001c3517  gcc/config/rs6000/8540.md
  4f6028fe108314d2a33f8f7f909a73f7  gcc/config/rs6000/a2.md
  993b9ee39193c6e1b6fc812856635d87  gcc/config/rs6000/aix-stdint.h
! f52bc10b700a145b797b666c36290d6d  gcc/config/rs6000/aix.h
  1ca8614596b68cd336ca726ee25990e6  gcc/config/rs6000/aix64.opt
  d70f08b893e019d12b16dc9a70754ef9  gcc/config/rs6000/aix64.opt.urls
  1429db8f4765ff4aefe82f62895c1013  gcc/config/rs6000/aix71.h
  7f04e00d7abf437885d57dbffa4d8f4a  gcc/config/rs6000/aix72.h
  c544fe733de647bba75656a097ef5683  gcc/config/rs6000/aix73.h
  04684068198cd7d4bf973f2cf37245b7  gcc/config/rs6000/altivec.h
! e84127a4493a0433c0798fb72e06f484  gcc/config/rs6000/altivec.md
  6aae59d4e50476599eca7a9839fcea2a  gcc/config/rs6000/amo.h
  3bd1c96455c52fa67ad166ee514529f5  gcc/config/rs6000/biarch64.h
  bce756c85740f3f618c107b0cfad6962  gcc/config/rs6000/bmi2intrin.h
--- 5043,5056 ----
  32e09b60381687f9cd5b7b33001c3517  gcc/config/rs6000/8540.md
  4f6028fe108314d2a33f8f7f909a73f7  gcc/config/rs6000/a2.md
  993b9ee39193c6e1b6fc812856635d87  gcc/config/rs6000/aix-stdint.h
! e461e1f6a86f3065b555ed06153e27c2  gcc/config/rs6000/aix.h
  1ca8614596b68cd336ca726ee25990e6  gcc/config/rs6000/aix64.opt
  d70f08b893e019d12b16dc9a70754ef9  gcc/config/rs6000/aix64.opt.urls
  1429db8f4765ff4aefe82f62895c1013  gcc/config/rs6000/aix71.h
  7f04e00d7abf437885d57dbffa4d8f4a  gcc/config/rs6000/aix72.h
  c544fe733de647bba75656a097ef5683  gcc/config/rs6000/aix73.h
  04684068198cd7d4bf973f2cf37245b7  gcc/config/rs6000/altivec.h
! c95ef79b0d39ab81739003cca63c7c2c  gcc/config/rs6000/altivec.md
  6aae59d4e50476599eca7a9839fcea2a  gcc/config/rs6000/amo.h
  3bd1c96455c52fa67ad166ee514529f5  gcc/config/rs6000/biarch64.h
  bce756c85740f3f618c107b0cfad6962  gcc/config/rs6000/bmi2intrin.h
*************** a1a56cb74b09656a0d65c8351472c0dc  gcc/co
*** 5116,5122 ****
  1bf6742f3643571d537df3e6e0603170  gcc/config/rs6000/rbtree.h
  d139903a564018061688043567f8c198  gcc/config/rs6000/rs6000-builtin.cc
  dce39de8bb20b88ffeb8b2073101dcfe  gcc/config/rs6000/rs6000-builtins.def
! 508c2cb53cbe6fe9884e599852ff8143  gcc/config/rs6000/rs6000-c.cc
  4e26f14a54f324eddc2f83da389b6392  gcc/config/rs6000/rs6000-call.cc
  1ae7c413b9168d574ebf9cd906badcff  gcc/config/rs6000/rs6000-cpus.def
  46053ed1e2d7c0404bcfd27015e80dde  gcc/config/rs6000/rs6000-d.cc
--- 5119,5125 ----
  1bf6742f3643571d537df3e6e0603170  gcc/config/rs6000/rbtree.h
  d139903a564018061688043567f8c198  gcc/config/rs6000/rs6000-builtin.cc
  dce39de8bb20b88ffeb8b2073101dcfe  gcc/config/rs6000/rs6000-builtins.def
! 6f4ca4a71026ae8d65caa75e2e106028  gcc/config/rs6000/rs6000-c.cc
  4e26f14a54f324eddc2f83da389b6392  gcc/config/rs6000/rs6000-call.cc
  1ae7c413b9168d574ebf9cd906badcff  gcc/config/rs6000/rs6000-cpus.def
  46053ed1e2d7c0404bcfd27015e80dde  gcc/config/rs6000/rs6000-d.cc
*************** dfb9fde7c7559a50905b02c01b6d6ee8  gcc/co
*** 5249,5255 ****
  bc0fb519f0c53f7b5e44aadede6fbfad  gcc/config/s390/tpf.opt
  34c54b547202715f11db388829243402  gcc/config/s390/tpf.opt.urls
  d225211a59c66716b9cad3d9a2f13af4  gcc/config/s390/vecintrin.h
! 351ea2661de2b72c12795611857698d3  gcc/config/s390/vector.md
  8f88205b80cb5c8a16a0f55c1bbc53ab  gcc/config/s390/vx-builtins.md
  7813da5eac25ac16f589b0319ad43386  gcc/config/s390/x-native
  f9d87cd50e032287752597f9c084e3f5  gcc/config/sh/constraints.md
--- 5252,5258 ----
  bc0fb519f0c53f7b5e44aadede6fbfad  gcc/config/s390/tpf.opt
  34c54b547202715f11db388829243402  gcc/config/s390/tpf.opt.urls
  d225211a59c66716b9cad3d9a2f13af4  gcc/config/s390/vecintrin.h
! 456f3f366a07b5fd82b8ede69fadb243  gcc/config/s390/vector.md
  8f88205b80cb5c8a16a0f55c1bbc53ab  gcc/config/s390/vx-builtins.md
  7813da5eac25ac16f589b0319ad43386  gcc/config/s390/x-native
  f9d87cd50e032287752597f9c084e3f5  gcc/config/sh/constraints.md
*************** b626d860c343d873c5c18c343ad30f36  gcc/co
*** 5420,5426 ****
  d7cb356f9fecd713ff5194865f8d8173  gcc/config/vax/vax-protos.h
  d6ec281776489bd1ad94d64876f5af12  gcc/config/vax/vax.cc
  a51e7b0537c77e3398591603e7748765  gcc/config/vax/vax.h
! d5f8144170270a4d61b1b0c9c662ba34  gcc/config/vax/vax.md
  84f1233d12afb81233c4aff574547d07  gcc/config/vax/vax.opt
  6e18ff936a1a9e18a82aaa3e19e5c5fe  gcc/config/vax/vax.opt.urls
  c09f65693ee2b00a2b1f0031654ab7d1  gcc/config/visium/constraints.md
--- 5423,5429 ----
  d7cb356f9fecd713ff5194865f8d8173  gcc/config/vax/vax-protos.h
  d6ec281776489bd1ad94d64876f5af12  gcc/config/vax/vax.cc
  a51e7b0537c77e3398591603e7748765  gcc/config/vax/vax.h
! 04f26154aae4a0cef91b3847c5990733  gcc/config/vax/vax.md
  84f1233d12afb81233c4aff574547d07  gcc/config/vax/vax.opt
  6e18ff936a1a9e18a82aaa3e19e5c5fe  gcc/config/vax/vax.opt.urls
  c09f65693ee2b00a2b1f0031654ab7d1  gcc/config/visium/constraints.md
*************** a9c3cddee4e237141062720b72fe38cd  gcc/co
*** 5514,5520 ****
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  2a5216aefb9cdf4b270ef8e599cc794f  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! 468aeec2eebeba1061204d4007734622  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5517,5523 ----
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  2a5216aefb9cdf4b270ef8e599cc794f  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! 4dd13b62db6a8f58699aa45c4f621ad7  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** bcf7c5d02934e40f17edeb18d58c4d4d  gcc/cp
*** 5550,5617 ****
  c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp/ChangeLog.ptr
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
  08c713f559f658009bf94d139a24c2b6  gcc/cp/Make-lang.in
! f8d105353c88fb102e9216372bc4b70c  gcc/cp/call.cc
  fce8de27014c109814b3f69be6a5d4f6  gcc/cp/cfns.gperf
  68fc21d4889b1c70ccf89747b98b1fb4  gcc/cp/cfns.h
! bfc0a4cea2b61e7ae38934b220f84e85  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
! 79928faf39a0d7230d9c80c668f64a6a  gcc/cp/constexpr.cc
! d132f7f4c080ce3048977e23e33b9b1c  gcc/cp/constraint.cc
  a4c4f7387ee41213f5d0113f9e78d30c  gcc/cp/contracts.cc
  1f1cd3a021a2cd25741e252145ee8282  gcc/cp/contracts.h
! 564af52a675c5727faa9f84885de41dc  gcc/cp/coroutines.cc
  be1619275f92c0a0eb6eb83c1e3c7f6b  gcc/cp/coroutines.h
! bb4c9b6410ab82d5e1d215490036ab6b  gcc/cp/cp-gimplify.cc
  3bf6da2fd9bef7475fae5ee6d9cdcf15  gcc/cp/cp-lang.cc
  0083c32822e7d365ab0074f1807e8679  gcc/cp/cp-name-hint.h
  a46a06074cd68181251e3541b4689021  gcc/cp/cp-objcp-common.cc
  7475950f94ad8c7218f451feb5e71424  gcc/cp/cp-objcp-common.h
  6a7554ee20d49ef2b66e0b7cc2a696a1  gcc/cp/cp-trait.def
  ce9f2ccac9e2657417018bc8f8064421  gcc/cp/cp-tree.def
! 9ecc07c9a369453c25914654540a1164  gcc/cp/cp-tree.h
  e5ccdda9d62d96ac397910d0fa391b0a  gcc/cp/cp-ubsan.cc
! 64450079a2dd9e5a8767bb5e4bf3d904  gcc/cp/cvt.cc
  29df6edf4122d4be24abc0274514c9bc  gcc/cp/cxx-pretty-print.cc
  955ecfa636599a39229757737e271819  gcc/cp/cxx-pretty-print.h
  c1cc5dac36866c611933c037cc1d6f2f  gcc/cp/cxxapi-data.csv
! 9f9cd31507a85abfedf778a5046dc99a  gcc/cp/decl.cc
  7f116fdc50b24dcb13cdcf096636aef9  gcc/cp/decl.h
! 0b589466f97f1843080d9667c2263668  gcc/cp/decl2.cc
  691a10b3246d19925433648ba9a4ea9a  gcc/cp/dump.cc
! 837b6648692cfc90631f43732905eba0  gcc/cp/error.cc
  86f47b28d673601022d0205cdd718f9d  gcc/cp/except.cc
! f1581b369c1962c764264b1b2af61ca2  gcc/cp/expr.cc
  3b7c086cfb4ed89e6ae40a09ca796704  gcc/cp/friend.cc
  3d079dd21f8a1ab95fb2d1f96d799283  gcc/cp/g++spec.cc
  30b9ed40d39cf78b95792ef5dca2aebb  gcc/cp/gen-cxxapi-file.py
! fcad66262e081d6623d845cd6343e41f  gcc/cp/init.cc
! ddfea14bf3538c63472f984625d70840  gcc/cp/lambda.cc
  ac5d78393361c1bcb930119a896a14ca  gcc/cp/lang-specs.h
  81021bc440a536664fa5365b475b36c5  gcc/cp/lex.cc
  aaf76a9b03fd0532d2904aef004fd66a  gcc/cp/logic.cc
! 397b8de2f52e596d7d76347ee016a9b4  gcc/cp/mangle.cc
  936bd061907a7a899c3285cf17b17674  gcc/cp/mapper-client.cc
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
! 1fb77a33ed1eaaf5ffbe1fc992f353ff  gcc/cp/method.cc
! b45a9fcdee93f140fe52a76dcb1e8215  gcc/cp/module.cc
! 4191315bfa6c793b37107497c36d367f  gcc/cp/name-lookup.cc
  9644410086c3beb90033e77613e9d1a7  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
! 6ee3e41f349ec9e1b9c084a2fdcf5930  gcc/cp/parser.cc
  e8a3a03873c6294ff25a783941b8d8af  gcc/cp/parser.h
! 8b7b76acb9a2c9b6a0b4e0dfd38cd5cd  gcc/cp/pt.cc
  a121c0a45933b618832614be1fbfd5c7  gcc/cp/ptree.cc
  318c5e4a338363a8183b4a01222aa800  gcc/cp/rtti.cc
  a4930c49ed8f9e6b019399bd1faf86d0  gcc/cp/search.cc
! 48ed0bb4fa778a3b5f67ba653a2c2e72  gcc/cp/semantics.cc
  b58bf61fbfed45af179b7104e72a9486  gcc/cp/std-name-hint.gperf
  67c8ace75ad63aabe8efb9f9c016b437  gcc/cp/std-name-hint.h
! e3798db73e0b3e892e772acbe569a5b8  gcc/cp/tree.cc
  bb1304379ac1bf9a568942bc7e976e8a  gcc/cp/type-utils.h
! 1bf95758f700eb2864247d2a58e4934b  gcc/cp/typeck.cc
! 1fea2b59dbf93b59626d7546b3c1f738  gcc/cp/typeck2.cc
  aa6906e22dc44502ca268580e5b8dfdd  gcc/cp/vtable-class-hierarchy.cc
  c74d2f6cc5dcb1bf1953c093eb903b37  gcc/cppbuiltin.cc
  05a136afb0839d5238cd1390602e748e  gcc/cppbuiltin.h
--- 5553,5620 ----
  c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp/ChangeLog.ptr
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
  08c713f559f658009bf94d139a24c2b6  gcc/cp/Make-lang.in
! 20b4161ebb0e461c9a98ca8ea837da49  gcc/cp/call.cc
  fce8de27014c109814b3f69be6a5d4f6  gcc/cp/cfns.gperf
  68fc21d4889b1c70ccf89747b98b1fb4  gcc/cp/cfns.h
! 65891fa261ce5aa3474ed32683a124d3  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
! 482447b5d7665ad27d78740591be3c17  gcc/cp/constexpr.cc
! a4fc328db28f375cb129e7d3b1a96683  gcc/cp/constraint.cc
  a4c4f7387ee41213f5d0113f9e78d30c  gcc/cp/contracts.cc
  1f1cd3a021a2cd25741e252145ee8282  gcc/cp/contracts.h
! 29ad894cf15be394844155a0ebb602c6  gcc/cp/coroutines.cc
  be1619275f92c0a0eb6eb83c1e3c7f6b  gcc/cp/coroutines.h
! df06c0e1088c92bdb99eab5152b9f656  gcc/cp/cp-gimplify.cc
  3bf6da2fd9bef7475fae5ee6d9cdcf15  gcc/cp/cp-lang.cc
  0083c32822e7d365ab0074f1807e8679  gcc/cp/cp-name-hint.h
  a46a06074cd68181251e3541b4689021  gcc/cp/cp-objcp-common.cc
  7475950f94ad8c7218f451feb5e71424  gcc/cp/cp-objcp-common.h
  6a7554ee20d49ef2b66e0b7cc2a696a1  gcc/cp/cp-trait.def
  ce9f2ccac9e2657417018bc8f8064421  gcc/cp/cp-tree.def
! 60417c76f551d66a839ea4c104db2b24  gcc/cp/cp-tree.h
  e5ccdda9d62d96ac397910d0fa391b0a  gcc/cp/cp-ubsan.cc
! c68bb7b3acb5317c4a9cb464e89c7b68  gcc/cp/cvt.cc
  29df6edf4122d4be24abc0274514c9bc  gcc/cp/cxx-pretty-print.cc
  955ecfa636599a39229757737e271819  gcc/cp/cxx-pretty-print.h
  c1cc5dac36866c611933c037cc1d6f2f  gcc/cp/cxxapi-data.csv
! 4c19a29ee3065686da0bb82a1f147a8d  gcc/cp/decl.cc
  7f116fdc50b24dcb13cdcf096636aef9  gcc/cp/decl.h
! 4fac0de789f395329ba3720ed69283a8  gcc/cp/decl2.cc
  691a10b3246d19925433648ba9a4ea9a  gcc/cp/dump.cc
! 4e63f55752a046b72fa1a5ecb4bb5688  gcc/cp/error.cc
  86f47b28d673601022d0205cdd718f9d  gcc/cp/except.cc
! 9dea621d77989006c71b945f5a2e62a4  gcc/cp/expr.cc
  3b7c086cfb4ed89e6ae40a09ca796704  gcc/cp/friend.cc
  3d079dd21f8a1ab95fb2d1f96d799283  gcc/cp/g++spec.cc
  30b9ed40d39cf78b95792ef5dca2aebb  gcc/cp/gen-cxxapi-file.py
! bf0c6ed89af0ebbff5eaaa89fbbb4f3b  gcc/cp/init.cc
! 1c46e616fd245d926ad86c355fe3aad6  gcc/cp/lambda.cc
  ac5d78393361c1bcb930119a896a14ca  gcc/cp/lang-specs.h
  81021bc440a536664fa5365b475b36c5  gcc/cp/lex.cc
  aaf76a9b03fd0532d2904aef004fd66a  gcc/cp/logic.cc
! 46243b005718c971af97ce8067d512d1  gcc/cp/mangle.cc
  936bd061907a7a899c3285cf17b17674  gcc/cp/mapper-client.cc
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
! 8a43dc7eb02c2c19d4faa7344f490b26  gcc/cp/method.cc
! 52b813d42712667bf960ce4034dd1f29  gcc/cp/module.cc
! 64b5a4c1348e34deeccb9fe56f746027  gcc/cp/name-lookup.cc
  9644410086c3beb90033e77613e9d1a7  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
! 23a674fb768a06c61047c0072fa70a64  gcc/cp/parser.cc
  e8a3a03873c6294ff25a783941b8d8af  gcc/cp/parser.h
! 367fc49f979abc4b8693c564605621bb  gcc/cp/pt.cc
  a121c0a45933b618832614be1fbfd5c7  gcc/cp/ptree.cc
  318c5e4a338363a8183b4a01222aa800  gcc/cp/rtti.cc
  a4930c49ed8f9e6b019399bd1faf86d0  gcc/cp/search.cc
! 483ef0e336d3058e91d85828a7b9def8  gcc/cp/semantics.cc
  b58bf61fbfed45af179b7104e72a9486  gcc/cp/std-name-hint.gperf
  67c8ace75ad63aabe8efb9f9c016b437  gcc/cp/std-name-hint.h
! d0bfb08270cedacdd3ab45ed8f09ca82  gcc/cp/tree.cc
  bb1304379ac1bf9a568942bc7e976e8a  gcc/cp/type-utils.h
! b78a49f51d39b7d86c73cd1f5a2ab6d7  gcc/cp/typeck.cc
! 06e9bfe2cb4a555d8904828d99f3436e  gcc/cp/typeck2.cc
  aa6906e22dc44502ca268580e5b8dfdd  gcc/cp/vtable-class-hierarchy.cc
  c74d2f6cc5dcb1bf1953c093eb903b37  gcc/cppbuiltin.cc
  05a136afb0839d5238cd1390602e748e  gcc/cppbuiltin.h
*************** eea2c218106edc18c40919ad04f90bf8  gcc/cp
*** 5620,5633 ****
  8608c219e99c630df8a20d1c1136246e  gcc/cprop.cc
  707af5ebd869ba97993a146f0958c180  gcc/crc-verification.cc
  ec1e9c9456a8530e241079823e2fc126  gcc/crc-verification.h
! 9d3c9741dc7aa7fb63e5b4b472a4feb1  gcc/cse.cc
  4d2f6ca081e1447a5bc287da4f7f1f06  gcc/cselib.cc
  44a1aa31be5edacb5f5644352fbb669c  gcc/cselib.h
  1ded054093de910d9786c62bc4fe8cc6  gcc/cstamp-h.in
  15aef1bfc1d9935a8df200d3827b59c6  gcc/ctfc.cc
  3df123e84e7c118eb423425f2100e3b5  gcc/ctfc.h
  aec0cd5251de880945c96eb21e97eac9  gcc/ctfout.cc
! 3cbbedb9e1e4456dc79ccf9d4564f743  gcc/d/ChangeLog
  94dbce564aba342900829d11192f8905  gcc/d/ChangeLog-2006
  1a0536d6571bca334bb5c00dbdf257ab  gcc/d/ChangeLog-2007
  362a026d745031260b2e4dd8eba9becc  gcc/d/ChangeLog-2008
--- 5623,5636 ----
  8608c219e99c630df8a20d1c1136246e  gcc/cprop.cc
  707af5ebd869ba97993a146f0958c180  gcc/crc-verification.cc
  ec1e9c9456a8530e241079823e2fc126  gcc/crc-verification.h
! 7b94d6dc56b6743bf96b1a2d23b142e7  gcc/cse.cc
  4d2f6ca081e1447a5bc287da4f7f1f06  gcc/cselib.cc
  44a1aa31be5edacb5f5644352fbb669c  gcc/cselib.h
  1ded054093de910d9786c62bc4fe8cc6  gcc/cstamp-h.in
  15aef1bfc1d9935a8df200d3827b59c6  gcc/ctfc.cc
  3df123e84e7c118eb423425f2100e3b5  gcc/ctfc.h
  aec0cd5251de880945c96eb21e97eac9  gcc/ctfout.cc
! 9986fa393d0482fdd191c17a2798c238  gcc/d/ChangeLog
  94dbce564aba342900829d11192f8905  gcc/d/ChangeLog-2006
  1a0536d6571bca334bb5c00dbdf257ab  gcc/d/ChangeLog-2007
  362a026d745031260b2e4dd8eba9becc  gcc/d/ChangeLog-2008
*************** bea890f9a34a3828dac2371f1f1796bf  gcc/d/
*** 5652,5658 ****
  477218c51620c217d3332559ce436248  gcc/d/config-lang.in
  09eb2aeb6f4b5107b4a75f4d41928cf1  gcc/d/d-attribs.cc
  8592d6b7573b4c1b70a9d87b70dd115a  gcc/d/d-builtins.cc
! 266a80ef78f59a5018f92015cdfb5a0a  gcc/d/d-codegen.cc
  70ffb6bfceda6c8afd5611f3b4a675cd  gcc/d/d-compiler.cc
  186086ac63d9d73dbed30ccc75c3ae62  gcc/d/d-convert.cc
  973d6dc819b7a8aee527f89ad0f00e08  gcc/d/d-ctfloat.cc
--- 5655,5661 ----
  477218c51620c217d3332559ce436248  gcc/d/config-lang.in
  09eb2aeb6f4b5107b4a75f4d41928cf1  gcc/d/d-attribs.cc
  8592d6b7573b4c1b70a9d87b70dd115a  gcc/d/d-builtins.cc
! 8dbece46c92d9fc1cf2b032367feb3b7  gcc/d/d-codegen.cc
  70ffb6bfceda6c8afd5611f3b4a675cd  gcc/d/d-compiler.cc
  186086ac63d9d73dbed30ccc75c3ae62  gcc/d/d-convert.cc
  973d6dc819b7a8aee527f89ad0f00e08  gcc/d/d-ctfloat.cc
*************** e4a31bc23588216ddf30ac8e625a173f  gcc/d/
*** 5661,5670 ****
  749304aa6de563eed68793be22f7cd6e  gcc/d/d-frontend.h
  b2113d2270102ca524bf783ba0720409  gcc/d/d-gimplify.cc
  b197902ac3f4ed472b28f5e6b7c07aa8  gcc/d/d-incpath.cc
! 9d341fed5cd56d0944d3739952484691  gcc/d/d-lang.cc
  8e2c018aecf39b4921be7eb633e892bf  gcc/d/d-longdouble.cc
  c804430a913eaec7363c0683fca5b24a  gcc/d/d-port.cc
! 2be676d2b24fad57cc9b6b9cbee736f3  gcc/d/d-spec.cc
  b42111bc83ef5eba5936e92037011166  gcc/d/d-system.h
  450c5da271da15be56bc4fa871414687  gcc/d/d-target-def.h
  60f3189e8c693ba0f5e748ca1e14b29f  gcc/d/d-target.cc
--- 5664,5673 ----
  749304aa6de563eed68793be22f7cd6e  gcc/d/d-frontend.h
  b2113d2270102ca524bf783ba0720409  gcc/d/d-gimplify.cc
  b197902ac3f4ed472b28f5e6b7c07aa8  gcc/d/d-incpath.cc
! 345fe4e1e55500425d2a031014ee2e00  gcc/d/d-lang.cc
  8e2c018aecf39b4921be7eb633e892bf  gcc/d/d-longdouble.cc
  c804430a913eaec7363c0683fca5b24a  gcc/d/d-port.cc
! 7ecf12b7690f9c99c6104804587c8b4b  gcc/d/d-spec.cc
  b42111bc83ef5eba5936e92037011166  gcc/d/d-system.h
  450c5da271da15be56bc4fa871414687  gcc/d/d-target-def.h
  60f3189e8c693ba0f5e748ca1e14b29f  gcc/d/d-target.cc
*************** b42111bc83ef5eba5936e92037011166  gcc/d/
*** 5672,5678 ****
  a9a0e94499b8e62705e548d30fa9f8ea  gcc/d/d-target.h
  e7ed7a15a28cf7d93c8a5e3520d4ca4e  gcc/d/d-tree.def
  aee13a120e7caed00b270b16b9d16f5d  gcc/d/d-tree.h
! 356b0733844a963e49711111be346d6b  gcc/d/decl.cc
  e6320d8163671e43446e19cf6b36a9ce  gcc/d/dmd/MERGE
  ed33de5a82bf58502d473e8138f61580  gcc/d/dmd/README.md
  a0b3558bc182f44d37822b5dc59b6307  gcc/d/dmd/VERSION
--- 5675,5681 ----
  a9a0e94499b8e62705e548d30fa9f8ea  gcc/d/d-target.h
  e7ed7a15a28cf7d93c8a5e3520d4ca4e  gcc/d/d-tree.def
  aee13a120e7caed00b270b16b9d16f5d  gcc/d/d-tree.h
! 43fe4e670be6875864c2dd2392828843  gcc/d/decl.cc
  e6320d8163671e43446e19cf6b36a9ce  gcc/d/dmd/MERGE
  ed33de5a82bf58502d473e8138f61580  gcc/d/dmd/README.md
  a0b3558bc182f44d37822b5dc59b6307  gcc/d/dmd/VERSION
*************** a3cd575b3088ab06aa23c81c93ace7e7  gcc/d/
*** 5859,5865 ****
  0d315416551f6b73f1ad743aac72797f  gcc/d/dmd/visitor/postorder.d
  9b22040efac930e873d2a2565a2867da  gcc/d/dmd/visitor/statement_rewrite_walker.d
  1cbd9c1c0ec261f10e9d9443fc16f987  gcc/d/dmd/visitor/transitive.d
! 148514a7a1077ac4c32e33c4b762e0eb  gcc/d/expr.cc
  2057d17858e2ef23807352a10a9cda35  gcc/d/gdc.texi
  a12b39ae150ae1bf58a64debe13dee03  gcc/d/implement-d.texi
  39f5715b0c2d657196f43a31dc6c33fc  gcc/d/imports.cc
--- 5862,5868 ----
  0d315416551f6b73f1ad743aac72797f  gcc/d/dmd/visitor/postorder.d
  9b22040efac930e873d2a2565a2867da  gcc/d/dmd/visitor/statement_rewrite_walker.d
  1cbd9c1c0ec261f10e9d9443fc16f987  gcc/d/dmd/visitor/transitive.d
! 2200e4aad4f20dce5089910d6a2ca895  gcc/d/expr.cc
  2057d17858e2ef23807352a10a9cda35  gcc/d/gdc.texi
  a12b39ae150ae1bf58a64debe13dee03  gcc/d/implement-d.texi
  39f5715b0c2d657196f43a31dc6c33fc  gcc/d/imports.cc
*************** a7bde590e8469b2ffb53fcd2a06033af  gcc/d/
*** 5872,5880 ****
  532169cc522c2173657371a604a5c583  gcc/d/modules.cc
  5be4062eb2b710347ff98e3d8c9cfdde  gcc/d/runtime.cc
  14ab71dfd3fc06afb477ec01aa077f09  gcc/d/runtime.def
! a9fb549193a42256914944461c880024  gcc/d/toir.cc
  4af3aaebbbb939e7e67ed0f4349a4524  gcc/d/typeinfo.cc
! 6cca916bc4f20b74318d58d6429ce267  gcc/d/types.cc
  257fb956c4a8d2279293b031e195fdaa  gcc/data-streamer-in.cc
  80498597d8e433b8a182777985c81a1a  gcc/data-streamer-out.cc
  ef3c86ca257ef8868e25ee7cc2b20076  gcc/data-streamer.cc
--- 5875,5883 ----
  532169cc522c2173657371a604a5c583  gcc/d/modules.cc
  5be4062eb2b710347ff98e3d8c9cfdde  gcc/d/runtime.cc
  14ab71dfd3fc06afb477ec01aa077f09  gcc/d/runtime.def
! 295e39e98e26072e562ef18e757894b6  gcc/d/toir.cc
  4af3aaebbbb939e7e67ed0f4349a4524  gcc/d/typeinfo.cc
! 55c57c5f439e71bb5a6dfae687634148  gcc/d/types.cc
  257fb956c4a8d2279293b031e195fdaa  gcc/data-streamer-in.cc
  80498597d8e433b8a182777985c81a1a  gcc/data-streamer-out.cc
  ef3c86ca257ef8868e25ee7cc2b20076  gcc/data-streamer.cc
*************** b14c12c33aee36a4d29601627a1a67da  gcc/di
*** 5903,5909 ****
  be405b20597be971120eee5709db8c4a  gcc/diagnostic-diagram.h
  a24233a009f0c9d29e034e6ba63082de  gcc/diagnostic-event-id.h
  541be36efb19722196822437b834609d  gcc/diagnostic-format-json.cc
! 4820ce24c1774a9e97b247c6f278a014  gcc/diagnostic-format-sarif.cc
  3bb62254fe1be687eefe0e5a24ac93bd  gcc/diagnostic-format-sarif.h
  1b2d0d3102cf6a56bdf867930a56be70  gcc/diagnostic-format-text.cc
  66be909d880de2f75a896a45bf395ab6  gcc/diagnostic-format-text.h
--- 5906,5912 ----
  be405b20597be971120eee5709db8c4a  gcc/diagnostic-diagram.h
  a24233a009f0c9d29e034e6ba63082de  gcc/diagnostic-event-id.h
  541be36efb19722196822437b834609d  gcc/diagnostic-format-json.cc
! 1de230e753f9ddc8035bc24b27165516  gcc/diagnostic-format-sarif.cc
  3bb62254fe1be687eefe0e5a24ac93bd  gcc/diagnostic-format-sarif.h
  1b2d0d3102cf6a56bdf867930a56be70  gcc/diagnostic-format-text.cc
  66be909d880de2f75a896a45bf395ab6  gcc/diagnostic-format-text.h
*************** f076eff7f3e051217ab4840269c685f8  gcc/di
*** 5921,5933 ****
  81a24429bc8eb52cbe24d574c6ec7e53  gcc/diagnostic-spec.cc
  375a39d1eff397ae7fcdce6e05c76d50  gcc/diagnostic-spec.h
  dabd477d68c54372f8519e7c917d4a11  gcc/diagnostic-url.h
! c860597ec3a9ac45886199796b826b85  gcc/diagnostic.cc
  03b04b0fb78353ca76570e5ef92cf756  gcc/diagnostic.def
! c61c4737f1261c516fd04ddbb16c545e  gcc/diagnostic.h
  bec68218d528467fd119bf2cd02bc358  gcc/digraph.cc
  18e73120a6e21ceac1adce40777000cf  gcc/digraph.h
  bb82bca6383082ead28f6f21f0a6223f  gcc/doc/analyzer.texi
! 7c6d6f8bba4a9890d950bdef623af96f  gcc/doc/avr-mmcu.texi
  628200aba31497f381052220465b8927  gcc/doc/bugreport.texi
  4f969d517229b2a96d02a2cc09fb85f1  gcc/doc/cfg.texi
  5c6f1e0d6b6424f27020c9e5c08807d4  gcc/doc/collect2.texi
--- 5924,5936 ----
  81a24429bc8eb52cbe24d574c6ec7e53  gcc/diagnostic-spec.cc
  375a39d1eff397ae7fcdce6e05c76d50  gcc/diagnostic-spec.h
  dabd477d68c54372f8519e7c917d4a11  gcc/diagnostic-url.h
! 63db67e83cdb5679f562c6d74f609699  gcc/diagnostic.cc
  03b04b0fb78353ca76570e5ef92cf756  gcc/diagnostic.def
! 21632ab2885104ea10689f397a217121  gcc/diagnostic.h
  bec68218d528467fd119bf2cd02bc358  gcc/digraph.cc
  18e73120a6e21ceac1adce40777000cf  gcc/digraph.h
  bb82bca6383082ead28f6f21f0a6223f  gcc/doc/analyzer.texi
! 85fc81bd6947985dce85e8d008e693a1  gcc/doc/avr-mmcu.texi
  628200aba31497f381052220465b8927  gcc/doc/bugreport.texi
  4f969d517229b2a96d02a2cc09fb85f1  gcc/doc/cfg.texi
  5c6f1e0d6b6424f27020c9e5c08807d4  gcc/doc/collect2.texi
*************** bb82bca6383082ead28f6f21f0a6223f  gcc/do
*** 5936,5982 ****
  83d0f5c88fe90065e5c5538b9a3f123a  gcc/doc/configterms.texi
  b8ee6e280a9d71c11b682c6942c6bd21  gcc/doc/contrib.texi
  2bb27ef73a41b4f2fff3dd7b08febbfd  gcc/doc/contribute.texi
! 6f23779ed1d013e7399164d8be90b06b  gcc/doc/cpp.1
! c27e856fbb5adc3ed97c8552ba8ac797  gcc/doc/cpp.info
  dc09e43d1d1ebad6e6902b9c5b7aec73  gcc/doc/cpp.texi
  808d1c20ece40d5e2d9c8daa6cdaabf6  gcc/doc/cppdiropts.texi
  acdfc663791e4321372e79932070d05d  gcc/doc/cppenv.texi
! 1a5d726eac5750193fd37d2c3301552f  gcc/doc/cppinternals.info
  81ae745aed5479afae430c578fa29055  gcc/doc/cppinternals.texi
  1a2d44757bb0f40b09493ac3863eba93  gcc/doc/cppopts.texi
  14b0532614eb25d7d84e7efd6664ecf3  gcc/doc/cppwarnopts.texi
! 214bab38dfc304ce2f0b6afedaddfa3b  gcc/doc/extend.texi
  ddcdbcb699f5252a1c1219d92d87ed8b  gcc/doc/fragments.texi
  cd346f0c279f68138ef08c7addc796de  gcc/doc/frontends.texi
! a62035f95cb48cd27eba6b740f9ac226  gcc/doc/fsf-funding.7
! fb9c09d60dc9fb88314283830d064bb5  gcc/doc/g++.1
! fb9c09d60dc9fb88314283830d064bb5  gcc/doc/gcc.1
! c76952525647e2126ad49bc4db576a82  gcc/doc/gcc.info
  a28615d9873d98f0d5f4ef8dd3e4c39d  gcc/doc/gcc.texi
! 90155efeace6560a66f0ce884fcbbf37  gcc/doc/gccgo.1
! 90204f47da54c32c3188dea33ae9c23e  gcc/doc/gccgo.info
! a529e35883c0af6e6d7603c550a6cc2d  gcc/doc/gccinstall.info
! a7e4456ac8fefbdbcd74c06180de9a0e  gcc/doc/gccint.info
  5b1e6708c5ac4fb500ef658bfa6fe3d0  gcc/doc/gccint.texi
! 43b560ae468259d76eadb1680b1cbd76  gcc/doc/gcov-dump.1
  943006b46b746ef59c5c1ab4f334a241  gcc/doc/gcov-dump.texi
! 69e0ed0efb296248b46ecb104695b83c  gcc/doc/gcov-tool.1
  50c3a263a50fc4688ac3be5e8e8744ba  gcc/doc/gcov-tool.texi
! 04eae30904d32348699ce6a1e7ba4455  gcc/doc/gcov.1
  8700253b7c491bd8902f580c7dcff6dc  gcc/doc/gcov.texi
! f97cb312066f5371739598ab8b6b8b6b  gcc/doc/gdc.1
! b048c8ff2e938a9fedd3d49665cbbd3a  gcc/doc/gdc.info
  cc49c44389e2d6e1bc60b761b5602112  gcc/doc/generic.texi
! adabf792ad467e41296d16402d1dfa99  gcc/doc/gfdl.7
! 88517fe507e84da0d2fe0f63ac0dbff2  gcc/doc/gfortran.1
  6dd13335166acce8e899b838ecbd04bd  gcc/doc/gimple.texi
! 9ce981d761955b102d3fdf046747674b  gcc/doc/gm2.1
  d86921b1235f4213b89ef1d12d25a41a  gcc/doc/gm2.texi
! 483b70348b7ad60b7c670e6c5446091a  gcc/doc/gnat-style.info
! 9a0e3480750f35ea99d9dbdaa5f41e75  gcc/doc/gnat_rm.info
! 5149d63e98784936cd73628640d240cd  gcc/doc/gnat_ugn.info
  dc4ccd9843d88bc01c909438dabfd6ab  gcc/doc/gnu.texi
! bdeb46e97ed1333dfecf0e3541946570  gcc/doc/gpl.7
  e146722b4ab52551483390772327c93f  gcc/doc/gty.texi
  27e2895f33fff82c6e13b5b9e7b8df6b  gcc/doc/headerdirs.texi
  ee4c7654f733cefcb73d4fd24f3e1b82  gcc/doc/hostconfig.texi
--- 5939,5985 ----
  83d0f5c88fe90065e5c5538b9a3f123a  gcc/doc/configterms.texi
  b8ee6e280a9d71c11b682c6942c6bd21  gcc/doc/contrib.texi
  2bb27ef73a41b4f2fff3dd7b08febbfd  gcc/doc/contribute.texi
! 77251131205f7890c68269101b108984  gcc/doc/cpp.1
! 0a750b2c9ae9e09d6b3e07013bdf54f5  gcc/doc/cpp.info
  dc09e43d1d1ebad6e6902b9c5b7aec73  gcc/doc/cpp.texi
  808d1c20ece40d5e2d9c8daa6cdaabf6  gcc/doc/cppdiropts.texi
  acdfc663791e4321372e79932070d05d  gcc/doc/cppenv.texi
! aa40c33482f5d50cfa1fd0872ead609c  gcc/doc/cppinternals.info
  81ae745aed5479afae430c578fa29055  gcc/doc/cppinternals.texi
  1a2d44757bb0f40b09493ac3863eba93  gcc/doc/cppopts.texi
  14b0532614eb25d7d84e7efd6664ecf3  gcc/doc/cppwarnopts.texi
! 082ff6defdc22a86dcf33f90eba1e398  gcc/doc/extend.texi
  ddcdbcb699f5252a1c1219d92d87ed8b  gcc/doc/fragments.texi
  cd346f0c279f68138ef08c7addc796de  gcc/doc/frontends.texi
! bfd789dd4653703c2b9ed1ed11030ca4  gcc/doc/fsf-funding.7
! 5e53fbdb6352b22eac761e232ff0d96a  gcc/doc/g++.1
! 5e53fbdb6352b22eac761e232ff0d96a  gcc/doc/gcc.1
! 774010e68de424606198c4b5e059e9cc  gcc/doc/gcc.info
  a28615d9873d98f0d5f4ef8dd3e4c39d  gcc/doc/gcc.texi
! 5980c86fc6000c390b4dea1a91baab40  gcc/doc/gccgo.1
! e38997bf6c5deefeda049e8e64ca09e3  gcc/doc/gccgo.info
! 22f0b1b812b5eff049a5776f2fab92d5  gcc/doc/gccinstall.info
! 3c435bda3b1a90390c5e057bb174bbd2  gcc/doc/gccint.info
  5b1e6708c5ac4fb500ef658bfa6fe3d0  gcc/doc/gccint.texi
! 250641593f4d0748e212a0dc2e76991e  gcc/doc/gcov-dump.1
  943006b46b746ef59c5c1ab4f334a241  gcc/doc/gcov-dump.texi
! ea32286633eef7c450ce3b0c62a05d31  gcc/doc/gcov-tool.1
  50c3a263a50fc4688ac3be5e8e8744ba  gcc/doc/gcov-tool.texi
! b5482b29a14248f6b21137598cf756dd  gcc/doc/gcov.1
  8700253b7c491bd8902f580c7dcff6dc  gcc/doc/gcov.texi
! 73eaad7b3ba401bb97b1143ea287369d  gcc/doc/gdc.1
! 83a6bc83f79fee715c74df5897fddc86  gcc/doc/gdc.info
  cc49c44389e2d6e1bc60b761b5602112  gcc/doc/generic.texi
! 9b0a926c264c4326732bfcbac558d2c9  gcc/doc/gfdl.7
! bf06039eb7781dfd96a948dd6c7ea125  gcc/doc/gfortran.1
  6dd13335166acce8e899b838ecbd04bd  gcc/doc/gimple.texi
! 99d99e0769b0687c51bbb1d1a0339c68  gcc/doc/gm2.1
  d86921b1235f4213b89ef1d12d25a41a  gcc/doc/gm2.texi
! bb030c4c48541f4a270474b9a121564b  gcc/doc/gnat-style.info
! d8339c84c75a290b3a0c6d1e54e0e4b8  gcc/doc/gnat_rm.info
! 7b13fd84989dec0cb8110a9cd7603ae2  gcc/doc/gnat_ugn.info
  dc4ccd9843d88bc01c909438dabfd6ab  gcc/doc/gnu.texi
! 576171f96d145923513f8eb0f880e94a  gcc/doc/gpl.7
  e146722b4ab52551483390772327c93f  gcc/doc/gty.texi
  27e2895f33fff82c6e13b5b9e7b8df6b  gcc/doc/headerdirs.texi
  ee4c7654f733cefcb73d4fd24f3e1b82  gcc/doc/hostconfig.texi
*************** ee4c7654f733cefcb73d4fd24f3e1b82  gcc/do
*** 5987,5995 ****
  9512a9fe27682edff7dd2ed171bbb853  gcc/doc/include/gcc-common.texi
  95c90bf85d3eab67f348ee3ce0bf4050  gcc/doc/include/gpl_v3.texi
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
! 4cf31ce9dc9e7079c1c99e7dd07215ae  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! 9c88cabb8fa15f07666c1108c79290a5  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
  5200cc28a2ab912efe66f0944995c45b  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
--- 5990,5998 ----
  9512a9fe27682edff7dd2ed171bbb853  gcc/doc/include/gcc-common.texi
  95c90bf85d3eab67f348ee3ce0bf4050  gcc/doc/include/gpl_v3.texi
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
! 9e8e5a63a0a908a71f46700886e93598  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! b9effbfad0b92c32c59ebb131ceb756e  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
  5200cc28a2ab912efe66f0944995c45b  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
*************** ed1086c8532b0a9648a631bd118391b9  gcc/do
*** 6019,6028 ****
  e0cdf1b3b23ffeebe52940c4ad627db6  gcc/doc/libgdiagnostics/tutorial/example-1.png
  5402cddcce87202cec6f30b8bb787a75  gcc/doc/libgdiagnostics/tutorial/index.rst
  a1f65f3aec3cc5d5b6505fb976d4c216  gcc/doc/loop.texi
! 75221b4f40d34d58f4da438f7c81ef73  gcc/doc/lto-dump.1
  124b06847fae76f01f1c6a0b1adf9a15  gcc/doc/lto-dump.texi
  c98feb0a43876ed3ef2fca3c8448e8f8  gcc/doc/lto.texi
! 3444fd3ae3f4ed67da984b6201c4456a  gcc/doc/m2.info
  26f08ad01720c082109915a4ec33c80f  gcc/doc/makefile.texi
  2f8484fc473d3a7141e34a260b920ea3  gcc/doc/match-and-simplify.texi
  67bc6abc7b2807e12a964e03fe0349ac  gcc/doc/md.texi
--- 6022,6031 ----
  e0cdf1b3b23ffeebe52940c4ad627db6  gcc/doc/libgdiagnostics/tutorial/example-1.png
  5402cddcce87202cec6f30b8bb787a75  gcc/doc/libgdiagnostics/tutorial/index.rst
  a1f65f3aec3cc5d5b6505fb976d4c216  gcc/doc/loop.texi
! 188c3fc2e5d91d9fc31f80ef75cb299d  gcc/doc/lto-dump.1
  124b06847fae76f01f1c6a0b1adf9a15  gcc/doc/lto-dump.texi
  c98feb0a43876ed3ef2fca3c8448e8f8  gcc/doc/lto.texi
! db5d2052ac07d62a3d961591144441ab  gcc/doc/m2.info
  26f08ad01720c082109915a4ec33c80f  gcc/doc/makefile.texi
  2f8484fc473d3a7141e34a260b920ea3  gcc/doc/match-and-simplify.texi
  67bc6abc7b2807e12a964e03fe0349ac  gcc/doc/md.texi
*************** c98feb0a43876ed3ef2fca3c8448e8f8  gcc/do
*** 6035,6041 ****
  ee33d902cd60afae792843ff15ad6706  gcc/doc/portability.texi
  8489e4a02a5daa1d1ae726383b330653  gcc/doc/rtl.texi
  bd20fd07c5ee8f444bf1d3f5e64e066a  gcc/doc/service.texi
! dac5d7b3efd1f6082fdf8445128a8c67  gcc/doc/sourcebuild.texi
  14e3ed780980c4fff09173b869e850ed  gcc/doc/standards.texi
  bcede1ca08c149d6b7a9ad7cfc846f85  gcc/doc/tm.texi
  06d0869eb2bec892f989f31bcd7da233  gcc/doc/tm.texi.in
--- 6038,6044 ----
  ee33d902cd60afae792843ff15ad6706  gcc/doc/portability.texi
  8489e4a02a5daa1d1ae726383b330653  gcc/doc/rtl.texi
  bd20fd07c5ee8f444bf1d3f5e64e066a  gcc/doc/service.texi
! e533ea3217cf514ef3509a5b5b516edb  gcc/doc/sourcebuild.texi
  14e3ed780980c4fff09173b869e850ed  gcc/doc/standards.texi
  bcede1ca08c149d6b7a9ad7cfc846f85  gcc/doc/tm.texi
  06d0869eb2bec892f989f31bcd7da233  gcc/doc/tm.texi.in
*************** af0971ba9c5420512d37fa9e39c93077  gcc/du
*** 6057,6067 ****
  4adb99499107732ee645c169e7165605  gcc/dwarf2asm.cc
  e518c37d94908385da07142b92ea8cdb  gcc/dwarf2asm.h
  7efb4f91e749cd2ecf8f4c740fdb13b0  gcc/dwarf2cfi.cc
! 0a3eda9dab4d6f189c8f1075bd4b269a  gcc/dwarf2codeview.cc
  186b01005d892edba3b03fc17bd0dc8f  gcc/dwarf2codeview.h
  baaae59ceda4df837a6f62ffb0f29ee7  gcc/dwarf2ctf.cc
  1d0191caafac1774f50a47175d915ea0  gcc/dwarf2ctf.h
! 7cc9c8d25a9d43ddb6451c311969a2b2  gcc/dwarf2out.cc
  a37a84426cea5b6f077117901c0cbc81  gcc/dwarf2out.h
  fdd976759ee89958c91a4010e53c0f02  gcc/early-remat.cc
  e0339faf7da1ffc9030bc3a53b41cc1c  gcc/edit-context.cc
--- 6060,6070 ----
  4adb99499107732ee645c169e7165605  gcc/dwarf2asm.cc
  e518c37d94908385da07142b92ea8cdb  gcc/dwarf2asm.h
  7efb4f91e749cd2ecf8f4c740fdb13b0  gcc/dwarf2cfi.cc
! b21182651156de7779948fe8ca2c4160  gcc/dwarf2codeview.cc
  186b01005d892edba3b03fc17bd0dc8f  gcc/dwarf2codeview.h
  baaae59ceda4df837a6f62ffb0f29ee7  gcc/dwarf2ctf.cc
  1d0191caafac1774f50a47175d915ea0  gcc/dwarf2ctf.h
! 22a7571f4564c9136707e53f0b83daf8  gcc/dwarf2out.cc
  a37a84426cea5b6f077117901c0cbc81  gcc/dwarf2out.h
  fdd976759ee89958c91a4010e53c0f02  gcc/early-remat.cc
  e0339faf7da1ffc9030bc3a53b41cc1c  gcc/edit-context.cc
*************** e67bf1a2587fc7f7361e841145ff4cfb  gcc/es
*** 6080,6086 ****
  b5fa845ff578d70e8ceae655d6affc51  gcc/explow.h
  53e6f2a3611c2bbb776cbe624811431d  gcc/expmed.cc
  dee0d85cc89e81b4cc185f1c3102811e  gcc/expmed.h
! bc438860c6c9b2d1d32fad8eb6040ccd  gcc/expr.cc
  5480b0f834e382e22c92192d7f5a4744  gcc/expr.h
  7117d2d0dde87eaf1ab2853b5bfd62e2  gcc/ext-dce.cc
  2ecf474a8f5380e5027c5b7a745cd736  gcc/fibonacci_heap.cc
--- 6083,6089 ----
  b5fa845ff578d70e8ceae655d6affc51  gcc/explow.h
  53e6f2a3611c2bbb776cbe624811431d  gcc/expmed.cc
  dee0d85cc89e81b4cc185f1c3102811e  gcc/expmed.h
! 00618cd8d16c28fe4de06b5d13430711  gcc/expr.cc
  5480b0f834e382e22c92192d7f5a4744  gcc/expr.h
  7117d2d0dde87eaf1ab2853b5bfd62e2  gcc/ext-dce.cc
  2ecf474a8f5380e5027c5b7a745cd736  gcc/fibonacci_heap.cc
*************** e7580325e4512cd9f5c2d665b528fa8f  gcc/fi
*** 6096,6105 ****
  e8c5838138a5e07e5716964a8284e9a1  gcc/flags.h
  a798cdca802a57ffa3473ab610b37c86  gcc/fold-const-call.cc
  182559f127e8416b9e9abcffb267d5fc  gcc/fold-const-call.h
! 4b1bef753dda2d19671f35332c69a0f7  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 38ad62ff3dc32741a630b142f27a6f25  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6099,6108 ----
  e8c5838138a5e07e5716964a8284e9a1  gcc/flags.h
  a798cdca802a57ffa3473ab610b37c86  gcc/fold-const-call.cc
  182559f127e8416b9e9abcffb267d5fc  gcc/fold-const-call.h
! c93bd28b3de1f9c783e16fc6ec4aab32  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! f0a7918dbcbc6cca299c490b04222504  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** c38eb0f2f19a6cb4b79be761670131e8  gcc/fo
*** 6127,6137 ****
  db21881c77a22fd3dbfe253c364af5ee  gcc/fortran/Make-lang.in
  25a2099206e1596859cfc2d787790f32  gcc/fortran/arith.cc
  6b01ec523f3bee8e2469370d106896e3  gcc/fortran/arith.h
! 1f47886d616538f880e240f661990624  gcc/fortran/array.cc
  59221f5e105887dce9d0c1b7694aa86f  gcc/fortran/bbt.cc
! 3a560d16f485ed40604aa07a7acf15ad  gcc/fortran/check.cc
! 4cd50f78498dfdce8f3ba18b4639e2d6  gcc/fortran/class.cc
! 0b318d001d48262e9cebd6f7ebb84a37  gcc/fortran/coarray.cc
  6047324cb87b56ae23d2293c5ef13ddb  gcc/fortran/config-lang.in
  16ea0e15947038265fbb5983b455b7bf  gcc/fortran/constructor.cc
  85285f438769e841d8dc39fedcd731d5  gcc/fortran/constructor.h
--- 6130,6140 ----
  db21881c77a22fd3dbfe253c364af5ee  gcc/fortran/Make-lang.in
  25a2099206e1596859cfc2d787790f32  gcc/fortran/arith.cc
  6b01ec523f3bee8e2469370d106896e3  gcc/fortran/arith.h
! 2ea735e94d401cba796d5ac34b8e92fb  gcc/fortran/array.cc
  59221f5e105887dce9d0c1b7694aa86f  gcc/fortran/bbt.cc
! f50392141734ee3c270214455cbabf98  gcc/fortran/check.cc
! e37adaebb3dd766f8fad75bfa57d49d7  gcc/fortran/class.cc
! f10db6a507227000fd11f94c29855d74  gcc/fortran/coarray.cc
  6047324cb87b56ae23d2293c5ef13ddb  gcc/fortran/config-lang.in
  16ea0e15947038265fbb5983b455b7bf  gcc/fortran/constructor.cc
  85285f438769e841d8dc39fedcd731d5  gcc/fortran/constructor.h
*************** e2cec99de05b647cb16807fa80637b97  gcc/fo
*** 6140,6205 ****
  b7e224f665bb5044ce35ed09435bd4fb  gcc/fortran/cpp.h
  a232f4d280ad08511e2718281b3d1ab6  gcc/fortran/data.cc
  d85e2f2fc3ee4721563bd47719063fb6  gcc/fortran/data.h
! deb1774fa43b021f7fa8fde0fe6642d4  gcc/fortran/decl.cc
! c33e2c4c7527bec8a125dd093dc59f2a  gcc/fortran/dependency.cc
  70111b1c7592e650c281b513c3cf2f47  gcc/fortran/dependency.h
  9982bdf75ac5c9630f66edd2aea1fe8b  gcc/fortran/dump-parse-tree.cc
  860343539ea7488e7bb44b94ea2b0f77  gcc/fortran/error.cc
! 5b4fa713f1f7da55d9cef4d9a5f58e45  gcc/fortran/expr.cc
  88fde92a0336c0454c5baa0f3c24888a  gcc/fortran/f95-lang.cc
! 76bb26929c446b45cc1efbf25d27ea82  gcc/fortran/frontend-passes.cc
  a39f360f255f1ef6dfd91ccefef63e05  gcc/fortran/gfc-diagnostic.def
  bd08c55098f00394b9922e6163c27b92  gcc/fortran/gfc-internals.texi
! 557c4faded3d865f6f6304bf63f9bb85  gcc/fortran/gfortran.h
! 66b654ae96f9db6123eb6094d77b9974  gcc/fortran/gfortran.info
  7ec4df43fc3e2bbc14dd583bdd6483a5  gcc/fortran/gfortran.texi
  af66ab40a5434219772b76ad10035e45  gcc/fortran/gfortranspec.cc
! 9253f176e44c2708e2c503251b27d6b8  gcc/fortran/interface.cc
  e80f8d5e01bd73d525ea93cef3a40a2d  gcc/fortran/intrinsic.cc
  cf346cfc6814f9a773f9f0ee705ab3aa  gcc/fortran/intrinsic.h
  5a25603bd6939073616d56ff5c8de9cc  gcc/fortran/intrinsic.texi
  4a7f5923c18268b245556ded8e9ba554  gcc/fortran/invoke.texi
  40352b9b20b1301c44326264b3f12cd1  gcc/fortran/io.cc
  d2a28ef98f6f78d1608fb52204e013a5  gcc/fortran/ioparm.def
! 11a18b85b29013791ce49cfdacc46f8b  gcc/fortran/iresolve.cc
  40087b4e405f3e0f17ebd4f0e9b63f48  gcc/fortran/iso-c-binding.def
  526bc51ff7ab3f60f1b40c5ed2b4bc3d  gcc/fortran/iso-fortran-env.def
  5c4523263ea0f1cd46baacba848e1fd5  gcc/fortran/lang-specs.h
  2e69cb4e17cc2e89fd21228231798659  gcc/fortran/lang.opt
  9c43410ca32214bfab9763966c01547a  gcc/fortran/lang.opt.urls
  e350765243fa7b881ed82507561870ff  gcc/fortran/libgfortran.h
! 6ea6f6099b39496a2bec1a9d299d96c0  gcc/fortran/match.cc
  047778859aa899389e3b7e65c1439faa  gcc/fortran/match.h
  8181d5e935b96288d9a51fb8138faefb  gcc/fortran/matchexp.cc
  297213add624aabc75e1e83d2e504eef  gcc/fortran/mathbuiltins.def
  998aff51cf65acc4d9efe5abebaaaff6  gcc/fortran/misc.cc
  3b3c13f513e2236a6456d1d3b112404c  gcc/fortran/module.cc
! 50632a137a18f04dcc1b089dbb5f27e3  gcc/fortran/openmp.cc
  8376eba2060129f13c5146a7773b2af7  gcc/fortran/options.cc
! 066b089d8a8df7ff652dcc802d982276  gcc/fortran/parse.cc
  09678ef13dc709d251be943d808544b8  gcc/fortran/parse.h
! 8282ea5f4e00d5c64da552ea2f31dcc6  gcc/fortran/primary.cc
! 59bd7cbbcab403c9a0270725082c69cb  gcc/fortran/resolve.cc
! 8dc2391850ee95634781b6e296a096f6  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
! c78c72f9e780bf1c0eea63295c5ba590  gcc/fortran/simplify.cc
  3255bc920c3609e58d8a01f6464313e8  gcc/fortran/st.cc
! 7fc6fb7f159830fc0d98a9cd72e5cdf9  gcc/fortran/symbol.cc
  c9238712914e77b971fde08221a31bf7  gcc/fortran/target-memory.cc
  50451f5a575ab606948f8e72d8cc4721  gcc/fortran/target-memory.h
! 6d5de0711cf335a4a100f5ff822f641c  gcc/fortran/trans-array.cc
  a4f5f15bbfd3cf3b780e3a8875ebf0df  gcc/fortran/trans-array.h
  134a72b3349d427eccb35198acc48a71  gcc/fortran/trans-common.cc
  d555f911945a83db335013815934e941  gcc/fortran/trans-const.cc
  857805820c2a6ac77d2652c610d23de8  gcc/fortran/trans-const.h
! ba1a270a0735e8dd213da50ccb70ea32  gcc/fortran/trans-decl.cc
! e5e7102933a854ebc51d0ba2c6fb28aa  gcc/fortran/trans-expr.cc
! 4409efd13e205fa6886f73e55cc425bb  gcc/fortran/trans-intrinsic.cc
! 9cf7c294c06fdaea67dcd2b9ff2cf5ad  gcc/fortran/trans-io.cc
! b1027c10f4a35d0040a0da3b22a13d59  gcc/fortran/trans-openmp.cc
  03aafb32bf3170c38549a2536ebb7e4c  gcc/fortran/trans-stmt.cc
  3e46866176ab0bac5fb67ed27515535d  gcc/fortran/trans-stmt.h
! 3910394d74aab50fba42ab60b9b75ad3  gcc/fortran/trans-types.cc
  422959ab20fd75df3766a03597227fd2  gcc/fortran/trans-types.h
  c058a3abcdadde24710d79820f9cfc70  gcc/fortran/trans.cc
  13445b3cfeaf8978ee1d89a1997de16d  gcc/fortran/trans.h
--- 6143,6208 ----
  b7e224f665bb5044ce35ed09435bd4fb  gcc/fortran/cpp.h
  a232f4d280ad08511e2718281b3d1ab6  gcc/fortran/data.cc
  d85e2f2fc3ee4721563bd47719063fb6  gcc/fortran/data.h
! 6f5dcc22d51d5b872fd80e1bac67dc23  gcc/fortran/decl.cc
! 917fd2716f1eef2f47d4f032e14958ad  gcc/fortran/dependency.cc
  70111b1c7592e650c281b513c3cf2f47  gcc/fortran/dependency.h
  9982bdf75ac5c9630f66edd2aea1fe8b  gcc/fortran/dump-parse-tree.cc
  860343539ea7488e7bb44b94ea2b0f77  gcc/fortran/error.cc
! c51719103621c7d22803dcc683314e14  gcc/fortran/expr.cc
  88fde92a0336c0454c5baa0f3c24888a  gcc/fortran/f95-lang.cc
! 9e933a215ff39d7f5ddd5bbce3f846ea  gcc/fortran/frontend-passes.cc
  a39f360f255f1ef6dfd91ccefef63e05  gcc/fortran/gfc-diagnostic.def
  bd08c55098f00394b9922e6163c27b92  gcc/fortran/gfc-internals.texi
! 594106f4945aba24162f5490e0fec580  gcc/fortran/gfortran.h
! 9af5ce0dfe5cfb7260978abeb4bca36a  gcc/fortran/gfortran.info
  7ec4df43fc3e2bbc14dd583bdd6483a5  gcc/fortran/gfortran.texi
  af66ab40a5434219772b76ad10035e45  gcc/fortran/gfortranspec.cc
! a4984dc9bf03940afba552ffc09ccf12  gcc/fortran/interface.cc
  e80f8d5e01bd73d525ea93cef3a40a2d  gcc/fortran/intrinsic.cc
  cf346cfc6814f9a773f9f0ee705ab3aa  gcc/fortran/intrinsic.h
  5a25603bd6939073616d56ff5c8de9cc  gcc/fortran/intrinsic.texi
  4a7f5923c18268b245556ded8e9ba554  gcc/fortran/invoke.texi
  40352b9b20b1301c44326264b3f12cd1  gcc/fortran/io.cc
  d2a28ef98f6f78d1608fb52204e013a5  gcc/fortran/ioparm.def
! 981bb89fcd47e69bd3799049d44a6978  gcc/fortran/iresolve.cc
  40087b4e405f3e0f17ebd4f0e9b63f48  gcc/fortran/iso-c-binding.def
  526bc51ff7ab3f60f1b40c5ed2b4bc3d  gcc/fortran/iso-fortran-env.def
  5c4523263ea0f1cd46baacba848e1fd5  gcc/fortran/lang-specs.h
  2e69cb4e17cc2e89fd21228231798659  gcc/fortran/lang.opt
  9c43410ca32214bfab9763966c01547a  gcc/fortran/lang.opt.urls
  e350765243fa7b881ed82507561870ff  gcc/fortran/libgfortran.h
! f654eecadb8cabd4c371426eb83f08b1  gcc/fortran/match.cc
  047778859aa899389e3b7e65c1439faa  gcc/fortran/match.h
  8181d5e935b96288d9a51fb8138faefb  gcc/fortran/matchexp.cc
  297213add624aabc75e1e83d2e504eef  gcc/fortran/mathbuiltins.def
  998aff51cf65acc4d9efe5abebaaaff6  gcc/fortran/misc.cc
  3b3c13f513e2236a6456d1d3b112404c  gcc/fortran/module.cc
! 6829c070562363da8ee5620dc7b7a9ff  gcc/fortran/openmp.cc
  8376eba2060129f13c5146a7773b2af7  gcc/fortran/options.cc
! 2e829a5546ff491798ea9e9a22f75f9c  gcc/fortran/parse.cc
  09678ef13dc709d251be943d808544b8  gcc/fortran/parse.h
! 5c2d54d3cd692d45c1ce75bd538ba932  gcc/fortran/primary.cc
! e09da035372e070805f34ad9ed40ef6f  gcc/fortran/resolve.cc
! 853897286a4ee54af01b95fad77fb872  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
! 47b3ac143dd07e65789786d79d86b9d9  gcc/fortran/simplify.cc
  3255bc920c3609e58d8a01f6464313e8  gcc/fortran/st.cc
! abd1247d4f726490e981994fe5fc3124  gcc/fortran/symbol.cc
  c9238712914e77b971fde08221a31bf7  gcc/fortran/target-memory.cc
  50451f5a575ab606948f8e72d8cc4721  gcc/fortran/target-memory.h
! bb8ad9abb96ac91292a61b3c7fbde987  gcc/fortran/trans-array.cc
  a4f5f15bbfd3cf3b780e3a8875ebf0df  gcc/fortran/trans-array.h
  134a72b3349d427eccb35198acc48a71  gcc/fortran/trans-common.cc
  d555f911945a83db335013815934e941  gcc/fortran/trans-const.cc
  857805820c2a6ac77d2652c610d23de8  gcc/fortran/trans-const.h
! 0fe2b2c02eb1dadc79a71d2577983c50  gcc/fortran/trans-decl.cc
! d4f512509f36461a2b01f58a4dd4e23c  gcc/fortran/trans-expr.cc
! 2fc2e705f2020d62f54715e4698b69d6  gcc/fortran/trans-intrinsic.cc
! 98aa7d58758baa33999a0070d6f0176e  gcc/fortran/trans-io.cc
! 62232a16bc62a73bd54116692688baf7  gcc/fortran/trans-openmp.cc
  03aafb32bf3170c38549a2536ebb7e4c  gcc/fortran/trans-stmt.cc
  3e46866176ab0bac5fb67ed27515535d  gcc/fortran/trans-stmt.h
! b798d7499d8f9c9573d942f87340af9e  gcc/fortran/trans-types.cc
  422959ab20fd75df3766a03597227fd2  gcc/fortran/trans-types.h
  c058a3abcdadde24710d79820f9cfc70  gcc/fortran/trans.cc
  13445b3cfeaf8978ee1d89a1997de16d  gcc/fortran/trans.h
*************** f574663ce227d0be2e77015c008d708b  gcc/fp
*** 6211,6217 ****
  6e9698e4411a03357b6e2b60bc91c827  gcc/function-tests.cc
  25ebd6ca078bb3bcb357a9009a5a0ec1  gcc/function.cc
  f177e1c4e707bec79d4d662838428852  gcc/function.h
! 3c08c56c1de3b165b954ab5c185284c5  gcc/fwprop.cc
  261433f3124bfa2a1421c42d657e0560  gcc/gcc-ar.cc
  f646a11fe6d1080a95b097c175a93d61  gcc/gcc-attribute-urlifier.cc
  ff36560b7e36617656e4dc3e8c550bf9  gcc/gcc-main.cc
--- 6214,6220 ----
  6e9698e4411a03357b6e2b60bc91c827  gcc/function-tests.cc
  25ebd6ca078bb3bcb357a9009a5a0ec1  gcc/function.cc
  f177e1c4e707bec79d4d662838428852  gcc/function.h
! 13408bda9f802514e5d7e9507d0b875c  gcc/fwprop.cc
  261433f3124bfa2a1421c42d657e0560  gcc/gcc-ar.cc
  f646a11fe6d1080a95b097c175a93d61  gcc/gcc-attribute-urlifier.cc
  ff36560b7e36617656e4dc3e8c550bf9  gcc/gcc-main.cc
*************** d34323b4d6fe1da82a9a4c157463d875  gcc/gc
*** 6222,6228 ****
  7554533cf646554f951ac05ad4609005  gcc/gcc-urlifier.cc
  3ba51d67080efcd8791ea2eaf4103d72  gcc/gcc-urlifier.def
  7e2f3c81fe7c2381b433886ab2914fa7  gcc/gcc-urlifier.h
! 7ca1dc6e8d0934977e6df717c0fbe13c  gcc/gcc.cc
  265ae8f124014a92ca7dee798d9c2b46  gcc/gcc.h
  d66e80f2ea9c1b6754479c999040b857  gcc/gcov-counter.def
  c4e07547b91be991d1bed6c22015cec2  gcc/gcov-dump.cc
--- 6225,6231 ----
  7554533cf646554f951ac05ad4609005  gcc/gcc-urlifier.cc
  3ba51d67080efcd8791ea2eaf4103d72  gcc/gcc-urlifier.def
  7e2f3c81fe7c2381b433886ab2914fa7  gcc/gcc-urlifier.h
! 5f3d65144b12ff2db93c2ea064f3c257  gcc/gcc.cc
  265ae8f124014a92ca7dee798d9c2b46  gcc/gcc.h
  d66e80f2ea9c1b6754479c999040b857  gcc/gcov-counter.def
  c4e07547b91be991d1bed6c22015cec2  gcc/gcov-dump.cc
*************** fc01aba2ef6a14714b1f93c8cf4194e4  gcc/gi
*** 6287,6301 ****
  d6f9bd05a0669c41ec48c604502d60cf  gcc/gimple-array-bounds.h
  da09d1e31d3994eb3d6958074d7b7ce5  gcc/gimple-builder.cc
  50314e0ad6c6defd28ef9aa5216d4622  gcc/gimple-builder.h
! fea7635818b5d7cefd4c7a0b268a254c  gcc/gimple-crc-optimization.cc
  1e3c7b3ded904be69c3703ac6d27fa44  gcc/gimple-expr.cc
  7b4f02095ce9b7a43bee8570917b9dc7  gcc/gimple-expr.h
! c5d4ddea06a53f7125a589f1aee71c71  gcc/gimple-fold.cc
  8780d2011b6a9ef6c285eead522a3286  gcc/gimple-fold.h
  98652c967ce7f8dda9a1c398caa0996a  gcc/gimple-harden-conditionals.cc
  34959112cc04df5744be2b160e2f9d80  gcc/gimple-harden-control-flow.cc
  46c40ebab120d543476a2e46ac063bba  gcc/gimple-if-to-switch.cc
! c8b58b1fdd336324d189a3904520ad48  gcc/gimple-isel.cc
  319a859d4c4eb6948afa93d70a5c97ec  gcc/gimple-iterator.cc
  a0c225f8a1deb41873e5984a058b0f45  gcc/gimple-iterator.h
  4ab554af77b78b1a5d2948c9f0632680  gcc/gimple-laddress.cc
--- 6290,6304 ----
  d6f9bd05a0669c41ec48c604502d60cf  gcc/gimple-array-bounds.h
  da09d1e31d3994eb3d6958074d7b7ce5  gcc/gimple-builder.cc
  50314e0ad6c6defd28ef9aa5216d4622  gcc/gimple-builder.h
! 9f89e784b24a8598505c6de0352490f1  gcc/gimple-crc-optimization.cc
  1e3c7b3ded904be69c3703ac6d27fa44  gcc/gimple-expr.cc
  7b4f02095ce9b7a43bee8570917b9dc7  gcc/gimple-expr.h
! 8961c0089240e1d1a29bf60a03a7065b  gcc/gimple-fold.cc
  8780d2011b6a9ef6c285eead522a3286  gcc/gimple-fold.h
  98652c967ce7f8dda9a1c398caa0996a  gcc/gimple-harden-conditionals.cc
  34959112cc04df5744be2b160e2f9d80  gcc/gimple-harden-control-flow.cc
  46c40ebab120d543476a2e46ac063bba  gcc/gimple-if-to-switch.cc
! 65c7f0cbe140eb21ef44d13d4d22a125  gcc/gimple-isel.cc
  319a859d4c4eb6948afa93d70a5c97ec  gcc/gimple-iterator.cc
  a0c225f8a1deb41873e5984a058b0f45  gcc/gimple-iterator.h
  4ab554af77b78b1a5d2948c9f0632680  gcc/gimple-laddress.cc
*************** a0c225f8a1deb41873e5984a058b0f45  gcc/gi
*** 6304,6310 ****
  9d283d6d05cc10c386454e9c6a25e22a  gcc/gimple-loop-versioning.cc
  de516dc4a59882c258bf01584c25b2de  gcc/gimple-low.cc
  a507a70e7f4b0dd99e594d15a5a9a89b  gcc/gimple-low.h
! d0c07be6406911d79ae5087fbc68d02a  gcc/gimple-lower-bitint.cc
  bb02db160d1eb3a985d3b5dfa8e0566c  gcc/gimple-lower-bitint.h
  da1cba564288415af1f675747c508315  gcc/gimple-match-exports.cc
  144911a83796283e587e0c84378e118d  gcc/gimple-match-head.cc
--- 6307,6313 ----
  9d283d6d05cc10c386454e9c6a25e22a  gcc/gimple-loop-versioning.cc
  de516dc4a59882c258bf01584c25b2de  gcc/gimple-low.cc
  a507a70e7f4b0dd99e594d15a5a9a89b  gcc/gimple-low.h
! 207915bb0fd8c4bd97fd06eb9444b2af  gcc/gimple-lower-bitint.cc
  bb02db160d1eb3a985d3b5dfa8e0566c  gcc/gimple-lower-bitint.h
  da1cba564288415af1f675747c508315  gcc/gimple-match-exports.cc
  144911a83796283e587e0c84378e118d  gcc/gimple-match-head.cc
*************** d0e39d30292d3cb008ec7fb9517c3032  gcc/gi
*** 6320,6330 ****
  c8dd21ff63045c1a13e516534e9f26c8  gcc/gimple-range-edge.h
  59442dfc5a203baf74202d93da2c83ad  gcc/gimple-range-fold.cc
  6077f71d4f6a79ed60d0e24f247133a3  gcc/gimple-range-fold.h
! 2ab6e680fbd55d50bfc4690e2ecf8a4f  gcc/gimple-range-gori.cc
! db61cb44af184c491426f70b14b72f64  gcc/gimple-range-gori.h
  12b0f3b16b06728cdeddc2aaee126661  gcc/gimple-range-infer.cc
  d1b8fdd0fd8c738683e5995bf45cda94  gcc/gimple-range-infer.h
! e90a8c8db3c3bb2c54a6618e8ef278c4  gcc/gimple-range-op.cc
  c33a426eeaa6da07a474caf81b43a278  gcc/gimple-range-op.h
  33d3c148e1b6f1df39688e27f3511fe1  gcc/gimple-range-path.cc
  55a80a9f04099be643d37e29c9ac7d10  gcc/gimple-range-path.h
--- 6323,6333 ----
  c8dd21ff63045c1a13e516534e9f26c8  gcc/gimple-range-edge.h
  59442dfc5a203baf74202d93da2c83ad  gcc/gimple-range-fold.cc
  6077f71d4f6a79ed60d0e24f247133a3  gcc/gimple-range-fold.h
! d3d6074e5bf4591d5ad4f10d2e4ef053  gcc/gimple-range-gori.cc
! b5d47af740298e1ed81a515b363e0106  gcc/gimple-range-gori.h
  12b0f3b16b06728cdeddc2aaee126661  gcc/gimple-range-infer.cc
  d1b8fdd0fd8c738683e5995bf45cda94  gcc/gimple-range-infer.h
! 51462653f97d2448aad90172f9560e6b  gcc/gimple-range-op.cc
  c33a426eeaa6da07a474caf81b43a278  gcc/gimple-range-op.h
  33d3c148e1b6f1df39688e27f3511fe1  gcc/gimple-range-path.cc
  55a80a9f04099be643d37e29c9ac7d10  gcc/gimple-range-path.h
*************** eb7c233acdcae81b02395e856a9cfa3b  gcc/gi
*** 6336,6342 ****
  8eec860f985bd594ff1fcce24b6241c3  gcc/gimple-range.cc
  a4e263e8871b92796b1fb32a725e3eaa  gcc/gimple-range.h
  0a74fcfb6f542e62384811b3713681ce  gcc/gimple-ssa-backprop.cc
! 3cfaaa2decd6de2542a919cfb8bdb93d  gcc/gimple-ssa-isolate-paths.cc
  b417ca4d3d865879d0e642790dafa8cf  gcc/gimple-ssa-nonnull-compare.cc
  93101472142eb5910d34b5c961eee66b  gcc/gimple-ssa-sccopy.cc
  b551cb1f1566bf3aa2bca3816f2b1c98  gcc/gimple-ssa-split-paths.cc
--- 6339,6345 ----
  8eec860f985bd594ff1fcce24b6241c3  gcc/gimple-range.cc
  a4e263e8871b92796b1fb32a725e3eaa  gcc/gimple-range.h
  0a74fcfb6f542e62384811b3713681ce  gcc/gimple-ssa-backprop.cc
! 0ab9b6e5bdd17e08f5fdadd383ee292f  gcc/gimple-ssa-isolate-paths.cc
  b417ca4d3d865879d0e642790dafa8cf  gcc/gimple-ssa-nonnull-compare.cc
  93101472142eb5910d34b5c961eee66b  gcc/gimple-ssa-sccopy.cc
  b551cb1f1566bf3aa2bca3816f2b1c98  gcc/gimple-ssa-split-paths.cc
*************** fc5706ae421aa8f2f9bba7fe2c637237  gcc/gi
*** 6357,6366 ****
  19e41ad97511268bfc78109e4dbf8065  gcc/gimple-warn-recursion.cc
  9a2e63724237611a8367c48b2cafed18  gcc/gimple.cc
  2b31c9448b3ca4914742ffde943425c0  gcc/gimple.def
! 5dad29545d58e66718b3dc5060f127bc  gcc/gimple.h
! 140b5c45a362b9c0c981b683560d4ef8  gcc/gimplify-me.cc
  84814cb09300f3db388dd0d22133ccb4  gcc/gimplify-me.h
! 8c53ac4f655bf4ed40f3c2f5775f0ba6  gcc/gimplify.cc
  06f2b5470f6bc6f77e9b7966e34e5785  gcc/gimplify.h
  7df17d7c2bcdff0a474d633a02195544  gcc/ginclude/float.h
  d22f0a286107015428c4b28c0d17abda  gcc/ginclude/iso646.h
--- 6360,6369 ----
  19e41ad97511268bfc78109e4dbf8065  gcc/gimple-warn-recursion.cc
  9a2e63724237611a8367c48b2cafed18  gcc/gimple.cc
  2b31c9448b3ca4914742ffde943425c0  gcc/gimple.def
! de3c6e76ea556b82fe244a285b883d51  gcc/gimple.h
! 3a9aada7fb0c64db811ae3c7818bda68  gcc/gimplify-me.cc
  84814cb09300f3db388dd0d22133ccb4  gcc/gimplify-me.h
! ede245e91d746af0bdf2172f436e31f1  gcc/gimplify.cc
  06f2b5470f6bc6f77e9b7966e34e5785  gcc/gimplify.h
  7df17d7c2bcdff0a474d633a02195544  gcc/ginclude/float.h
  d22f0a286107015428c4b28c0d17abda  gcc/ginclude/iso646.h
*************** d7408ac6c915c3e2f58cd40bdb6a0671  gcc/gi
*** 6377,6384 ****
  1445e218a0aaddda35901b1f0b3e9caa  gcc/ginclude/tgmath.h
  18dd241fd4e77ac61edc90586b9fb2b6  gcc/ginclude/unwind-arm-common.h
  8d9ecf0d6ef93c79623ce1d27a32a2cb  gcc/ginclude/varargs.h
! b41648f499a7db07e24806aae26998b5  gcc/glimits.h
! 584d3e97bc14e9745300416832fa94a2  gcc/go/ChangeLog
  e697a6a6e7d6942b7375c665c70d34b4  gcc/go/Make-lang.in
  60ea054548c83c7f66170073f9f3e74c  gcc/go/README.gcc
  88217f68368328f3ce651c46f0830df8  gcc/go/config-lang.in
--- 6380,6387 ----
  1445e218a0aaddda35901b1f0b3e9caa  gcc/ginclude/tgmath.h
  18dd241fd4e77ac61edc90586b9fb2b6  gcc/ginclude/unwind-arm-common.h
  8d9ecf0d6ef93c79623ce1d27a32a2cb  gcc/ginclude/varargs.h
! e142e39a3f0871d041e6bc0a2df6e13a  gcc/glimits.h
! f108db899c189108e8e67bc40a860715  gcc/go/ChangeLog
  e697a6a6e7d6942b7375c665c70d34b4  gcc/go/Make-lang.in
  60ea054548c83c7f66170073f9f3e74c  gcc/go/README.gcc
  88217f68368328f3ce651c46f0830df8  gcc/go/config-lang.in
*************** c81003797329cf68441e2bed5e76c252  gcc/ho
*** 6482,6495 ****
  260dd898f6b9809f71a292b793d67324  gcc/hw-doloop.h
  4769eb51982f8ccb12764424698b464f  gcc/hwint.cc
  8826410aae6a5efbb3d335e5e3dceed4  gcc/hwint.h
! cbda0b9f91d4fe712bb30c630b42ef64  gcc/ifcvt.cc
  1d252ebba03aa858df6822a8b59e1d4e  gcc/ifcvt.h
  55413f67957a351f7ca1b0a8a2f69a7c  gcc/inchash.cc
  f380ce65b15eedb6d55a9848beb1ec3b  gcc/inchash.h
  a82ca6f10995888441918acc568477fc  gcc/incpath.cc
  078efe9e89bf7fcd6a66cd085de2d676  gcc/incpath.h
  ab23cbe770ec47ef81d84e5377063f0f  gcc/init-regs.cc
! b3d2e0a4fdb1acc7d7c1d1222ec7077d  gcc/input.cc
  61ec39febc0596c9836bf3c2bd87907c  gcc/input.h
  0dc4e5a1c70a5b34153b06594dd3ae85  gcc/insn-addr.h
  eec072fb4c8277a3634cf4cdc0846598  gcc/insn-notes.def
--- 6485,6498 ----
  260dd898f6b9809f71a292b793d67324  gcc/hw-doloop.h
  4769eb51982f8ccb12764424698b464f  gcc/hwint.cc
  8826410aae6a5efbb3d335e5e3dceed4  gcc/hwint.h
! 2fa5304f721833a530128d54b668c4d4  gcc/ifcvt.cc
  1d252ebba03aa858df6822a8b59e1d4e  gcc/ifcvt.h
  55413f67957a351f7ca1b0a8a2f69a7c  gcc/inchash.cc
  f380ce65b15eedb6d55a9848beb1ec3b  gcc/inchash.h
  a82ca6f10995888441918acc568477fc  gcc/incpath.cc
  078efe9e89bf7fcd6a66cd085de2d676  gcc/incpath.h
  ab23cbe770ec47ef81d84e5377063f0f  gcc/init-regs.cc
! 6504b77b10f885f0f4fccb6f5b9ae2de  gcc/input.cc
  61ec39febc0596c9836bf3c2bd87907c  gcc/input.h
  0dc4e5a1c70a5b34153b06594dd3ae85  gcc/insn-addr.h
  eec072fb4c8277a3634cf4cdc0846598  gcc/insn-notes.def
*************** ef535a32c5b6f227a666c63523f6bb80  gcc/in
*** 6500,6508 ****
  bcb802c64e78f80e8e46c799c7e449ad  gcc/intl.cc
  deb111e00b2b07aa631595045bce5003  gcc/intl.h
  47a65e558aff89879902e88b055c7b12  gcc/ipa-comdats.cc
! 0e159edeb47834067d833b5371c6471c  gcc/ipa-cp.cc
! b65413c6163d502dbe95a08ac40cb575  gcc/ipa-cp.h
! 4b65c0ccf8c98e3a0e1526acb4ebd3a4  gcc/ipa-devirt.cc
  f0dcd3b109344ff1bf5de85f4598f9b2  gcc/ipa-fnsummary.cc
  fef6f27045737cc29ebf2dbbd22dda02  gcc/ipa-fnsummary.h
  20f61df91290c70df6eccefd8d8c642c  gcc/ipa-free-lang-data.cc
--- 6503,6511 ----
  bcb802c64e78f80e8e46c799c7e449ad  gcc/intl.cc
  deb111e00b2b07aa631595045bce5003  gcc/intl.h
  47a65e558aff89879902e88b055c7b12  gcc/ipa-comdats.cc
! 77396d87335360a26a967b408f340247  gcc/ipa-cp.cc
! fa57f458a1533dfb39d7d64f4b7d9b93  gcc/ipa-cp.h
! ba0bc97ba823df45a13ce3431478ccfc  gcc/ipa-devirt.cc
  f0dcd3b109344ff1bf5de85f4598f9b2  gcc/ipa-fnsummary.cc
  fef6f27045737cc29ebf2dbbd22dda02  gcc/ipa-fnsummary.h
  20f61df91290c70df6eccefd8d8c642c  gcc/ipa-free-lang-data.cc
*************** afa2616e2d58a9137deaabc102d2d7c1  gcc/ip
*** 6516,6532 ****
  229bac80ef5400801cf4edfd97790ef8  gcc/ipa-inline.h
  19c0cbbd70e071bd63dbb0527d02423e  gcc/ipa-locality-cloning.cc
  e1e331896b86db8a2281657bbb21ac72  gcc/ipa-locality-cloning.h
! 5146e44af36aa042f1e1098a4e796065  gcc/ipa-modref-tree.cc
  5a1edb91a2b7237c3e946f040a3d9697  gcc/ipa-modref-tree.h
! 3f72461d9982b691967c88700eb6d7b8  gcc/ipa-modref.cc
  8fe1972490c1cce5a10c7cdcd57b2361  gcc/ipa-modref.h
  3d22f7330dddea6a398c36c252764f8e  gcc/ipa-param-manipulation.cc
  d33136e7edecd120aa035f0e1ad240b0  gcc/ipa-param-manipulation.h
! 319746b89d79d8638999fe7b6aad58ef  gcc/ipa-polymorphic-call.cc
  83c011375208cf1307980bcb1b18b67a  gcc/ipa-predicate.cc
  3290558dca39b32c0ca581e6c3427551  gcc/ipa-predicate.h
  efab6d5ed309040ea34311e2e35802fe  gcc/ipa-profile.cc
! 191f4b6285522225f83d829c5d171ce8  gcc/ipa-prop.cc
  769c7da3be6c74b69be2f9572626e59f  gcc/ipa-prop.h
  1ab3b52af464e998b39403664a5ee0c4  gcc/ipa-pure-const.cc
  ce0496bede6d40e2fcfbc8277856fc23  gcc/ipa-ref.cc
--- 6519,6535 ----
  229bac80ef5400801cf4edfd97790ef8  gcc/ipa-inline.h
  19c0cbbd70e071bd63dbb0527d02423e  gcc/ipa-locality-cloning.cc
  e1e331896b86db8a2281657bbb21ac72  gcc/ipa-locality-cloning.h
! 04c488e1d6439252e0fa7047b4426f9c  gcc/ipa-modref-tree.cc
  5a1edb91a2b7237c3e946f040a3d9697  gcc/ipa-modref-tree.h
! 5d99a0f2ff3cb927823d200e2a1d1e98  gcc/ipa-modref.cc
  8fe1972490c1cce5a10c7cdcd57b2361  gcc/ipa-modref.h
  3d22f7330dddea6a398c36c252764f8e  gcc/ipa-param-manipulation.cc
  d33136e7edecd120aa035f0e1ad240b0  gcc/ipa-param-manipulation.h
! 2b2c65c16c5ad90a796a628b3897552d  gcc/ipa-polymorphic-call.cc
  83c011375208cf1307980bcb1b18b67a  gcc/ipa-predicate.cc
  3290558dca39b32c0ca581e6c3427551  gcc/ipa-predicate.h
  efab6d5ed309040ea34311e2e35802fe  gcc/ipa-profile.cc
! a46738f2691ef2f413106830a4fa8763  gcc/ipa-prop.cc
  769c7da3be6c74b69be2f9572626e59f  gcc/ipa-prop.h
  1ab3b52af464e998b39403664a5ee0c4  gcc/ipa-pure-const.cc
  ce0496bede6d40e2fcfbc8277856fc23  gcc/ipa-ref.cc
*************** db3094a0c46c1db21262added5d20318  gcc/ip
*** 6542,6548 ****
  ee440e6aefa2af85a2a7e53c77974413  gcc/ipa-visibility.cc
  1c6b1bd1032d2a1be3c22a87e0fb2501  gcc/ipa.cc
  c293da53973fb7a7f436f875b73a9753  gcc/ira-build.cc
! b31fd788662b22cb8047b65a9502b4fa  gcc/ira-color.cc
  a6162cabbfeb130d9e619b6dc2676776  gcc/ira-conflicts.cc
  3191757bb3b47c4b71e2e3b2be1b60e4  gcc/ira-costs.cc
  8f521d3747eb310bfdf4ffac2035cae9  gcc/ira-emit.cc
--- 6545,6551 ----
  ee440e6aefa2af85a2a7e53c77974413  gcc/ipa-visibility.cc
  1c6b1bd1032d2a1be3c22a87e0fb2501  gcc/ipa.cc
  c293da53973fb7a7f436f875b73a9753  gcc/ira-build.cc
! 298942209318d0295ec6c61c662afe9a  gcc/ira-color.cc
  a6162cabbfeb130d9e619b6dc2676776  gcc/ira-conflicts.cc
  3191757bb3b47c4b71e2e3b2be1b60e4  gcc/ira-costs.cc
  8f521d3747eb310bfdf4ffac2035cae9  gcc/ira-emit.cc
*************** a6162cabbfeb130d9e619b6dc2676776  gcc/ir
*** 6552,6558 ****
  e02a7a08ca9acaac686d9cb897ac121b  gcc/ira.h
  101bad313081e351312c8d42e0b24b31  gcc/is-a.h
  4e832d29f0e621d177da3fa9c3e11b69  gcc/iterator-utils.h
! d2dba4605ad160fefb3b64e89280dee1  gcc/jit/ChangeLog
  6071bdf04fb356c5ac99a99ec00c9a12  gcc/jit/ChangeLog.jit
  40388d7c9424c7364e6ace25461e381e  gcc/jit/Make-lang.in
  fd0d76b6467c987f813d430a35d4760a  gcc/jit/TODO.rst
--- 6555,6561 ----
  e02a7a08ca9acaac686d9cb897ac121b  gcc/ira.h
  101bad313081e351312c8d42e0b24b31  gcc/is-a.h
  4e832d29f0e621d177da3fa9c3e11b69  gcc/iterator-utils.h
! 3ff10ed7fb0c977d6a568a1eeabe9ee9  gcc/jit/ChangeLog
  6071bdf04fb356c5ac99a99ec00c9a12  gcc/jit/ChangeLog.jit
  40388d7c9424c7364e6ace25461e381e  gcc/jit/Make-lang.in
  fd0d76b6467c987f813d430a35d4760a  gcc/jit/TODO.rst
*************** ed475e0212369987bb572e7eabb4b4d7  gcc/lo
*** 6677,6687 ****
  05bf78e6d3e36587723b1177ffcd9c6e  gcc/lower-subreg.h
  755a196fed2cd7b5878159035d75b39b  gcc/lra-assigns.cc
  0232e051e662ebb7fd2fa507d9c581b8  gcc/lra-coalesce.cc
! a6bf1ef46c92902beb3ec28006d6a9ff  gcc/lra-constraints.cc
  90be6ca8eebfbeae80589ba7a895bf60  gcc/lra-eliminations.cc
  d5aab2fda62b4b8a67dcd1bfeff169f5  gcc/lra-int.h
  9b39c90253128330d1b238b030a40fce  gcc/lra-lives.cc
! f8f8f93a11e3960a35e56fdfffdf4889  gcc/lra-remat.cc
  d5cf2fbf4d35e8e1f64d1638b2993c85  gcc/lra-spills.cc
  e5fef2ffe59f5bb8bf855af92be9ce6a  gcc/lra.cc
  f34f18b0bf45561aad0763e10bc1ecb1  gcc/lra.h
--- 6680,6690 ----
  05bf78e6d3e36587723b1177ffcd9c6e  gcc/lower-subreg.h
  755a196fed2cd7b5878159035d75b39b  gcc/lra-assigns.cc
  0232e051e662ebb7fd2fa507d9c581b8  gcc/lra-coalesce.cc
! 967a51f4463cb24a1ea354dd046d4a79  gcc/lra-constraints.cc
  90be6ca8eebfbeae80589ba7a895bf60  gcc/lra-eliminations.cc
  d5aab2fda62b4b8a67dcd1bfeff169f5  gcc/lra-int.h
  9b39c90253128330d1b238b030a40fce  gcc/lra-lives.cc
! c4b86e50ee28a36a4db80d0c00ec48cd  gcc/lra-remat.cc
  d5cf2fbf4d35e8e1f64d1638b2993c85  gcc/lra-spills.cc
  e5fef2ffe59f5bb8bf855af92be9ce6a  gcc/lra.cc
  f34f18b0bf45561aad0763e10bc1ecb1  gcc/lra.h
*************** f2a9985147f87fd566d4ae2dd8fceabc  gcc/lt
*** 6698,6705 ****
  dfa3caf86a8bb6ea08cabdee56e570e9  gcc/lto-streamer-out.cc
  8caf9a68892d64dc294b20c27291b749  gcc/lto-streamer.cc
  78ea6d3e135322dfe8157d78aba82074  gcc/lto-streamer.h
! 8acdefc9fffd53b3f4f16af933640084  gcc/lto-wrapper.cc
! a6e9af147c6704cc913ec083fc0af467  gcc/lto/ChangeLog
  e33b56ae6d73ecb6b658dd2ffff4202a  gcc/lto/Make-lang.in
  705d8eaa74b456d79367c2c42b7a2fef  gcc/lto/common.cc
  3d201b30f0538a8cfddc450739b1c8c5  gcc/lto/common.h
--- 6701,6708 ----
  dfa3caf86a8bb6ea08cabdee56e570e9  gcc/lto-streamer-out.cc
  8caf9a68892d64dc294b20c27291b749  gcc/lto-streamer.cc
  78ea6d3e135322dfe8157d78aba82074  gcc/lto-streamer.h
! 8b0a37984ce6cc6e0b1e0651b05742d0  gcc/lto-wrapper.cc
! 65544b7620f3c04685bc90b0c4839f02  gcc/lto/ChangeLog
  e33b56ae6d73ecb6b658dd2ffff4202a  gcc/lto/Make-lang.in
  705d8eaa74b456d79367c2c42b7a2fef  gcc/lto/common.cc
  3d201b30f0538a8cfddc450739b1c8c5  gcc/lto/common.h
*************** e33b56ae6d73ecb6b658dd2ffff4202a  gcc/lt
*** 6707,6729 ****
  a1977e121a895c3241becf0d3e41bd3a  gcc/lto/lang-specs.h
  d93ec20c141afe4ec8419083e7e5427d  gcc/lto/lang.opt
  e09c982f34fcc53d88fb9b974a77d569  gcc/lto/lang.opt.urls
! e9e3e1c53895933c30b602dfb27942ff  gcc/lto/lto-common.cc
  1bbd724bce4771513f0a356074d52d51  gcc/lto/lto-common.h
  24353553f316f6efb9d7f42253a3ec7c  gcc/lto/lto-dump.cc
  9a5a957f50fd70274ccec05a5ac526f6  gcc/lto/lto-lang.cc
! abba0d56cf42c70d1983f247453576cd  gcc/lto/lto-object.cc
  38c04a0ddda1a5a40c7fffc7079b0b21  gcc/lto/lto-partition.cc
  6bdee5523aaa6e7091e15f5270e1ef9f  gcc/lto/lto-partition.h
! 1fe27a12b5a9b027b47f819c6e23ed1c  gcc/lto/lto-symtab.cc
  37534ae509993637d7af9690433de15c  gcc/lto/lto-symtab.h
  b153638c23972a22ca31986c1b49348d  gcc/lto/lto-tree.h
  e44c0bf9cc0411d7bd57c6585eb6d0e4  gcc/lto/lto.cc
! 46fbea4008689ba8af9f80d1cdce438a  gcc/lto/lto.h
  890758104e7697865dd110259fee0af5  gcc/m2/COPYING.FDL
  b417a4bd52371186803e70c49d24764d  gcc/m2/COPYING.RUNTIME
  8f0e2cd40e05189ec81232da84bd6e1a  gcc/m2/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/m2/COPYING3.LIB
! 4c23fc224260b311ee1fd06bf909ab72  gcc/m2/ChangeLog
  33352ea845a8d2399793299f3e58a218  gcc/m2/Make-lang.in
  93fe99bf456561cd217f1c93d2ab7da7  gcc/m2/Make-maintainer.in
  6a74129fda00ca52ba9f953538250c45  gcc/m2/NEWS
--- 6710,6732 ----
  a1977e121a895c3241becf0d3e41bd3a  gcc/lto/lang-specs.h
  d93ec20c141afe4ec8419083e7e5427d  gcc/lto/lang.opt
  e09c982f34fcc53d88fb9b974a77d569  gcc/lto/lang.opt.urls
! 92442a2a292dfcc782c70585852097b7  gcc/lto/lto-common.cc
  1bbd724bce4771513f0a356074d52d51  gcc/lto/lto-common.h
  24353553f316f6efb9d7f42253a3ec7c  gcc/lto/lto-dump.cc
  9a5a957f50fd70274ccec05a5ac526f6  gcc/lto/lto-lang.cc
! 3b697054907d273bdcb6e5026d3bc875  gcc/lto/lto-object.cc
  38c04a0ddda1a5a40c7fffc7079b0b21  gcc/lto/lto-partition.cc
  6bdee5523aaa6e7091e15f5270e1ef9f  gcc/lto/lto-partition.h
! 7e83a0d015bcebc4943fb8ad514adf47  gcc/lto/lto-symtab.cc
  37534ae509993637d7af9690433de15c  gcc/lto/lto-symtab.h
  b153638c23972a22ca31986c1b49348d  gcc/lto/lto-tree.h
  e44c0bf9cc0411d7bd57c6585eb6d0e4  gcc/lto/lto.cc
! ff9a9ca6ac5fa2e371f831911c148f9b  gcc/lto/lto.h
  890758104e7697865dd110259fee0af5  gcc/m2/COPYING.FDL
  b417a4bd52371186803e70c49d24764d  gcc/m2/COPYING.RUNTIME
  8f0e2cd40e05189ec81232da84bd6e1a  gcc/m2/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/m2/COPYING3.LIB
! bcb37b4f625b3ed446057ed65b99bfa0  gcc/m2/ChangeLog
  33352ea845a8d2399793299f3e58a218  gcc/m2/Make-lang.in
  93fe99bf456561cd217f1c93d2ab7da7  gcc/m2/Make-maintainer.in
  6a74129fda00ca52ba9f953538250c45  gcc/m2/NEWS
*************** c68318dec81d9d0316a2b8481fea02b0  gcc/m2
*** 7676,7686 ****
  d8c314554dde17baabdee11b802264b3  gcc/m2/tools-src/mklink.c
  ff4d04d0175889f5cc05d2c0c762fe57  gcc/m2/tools-src/tidydates.py
  f9608e9005487c369e6c38949ab36fa1  gcc/m2/version.c
! 88e10618d6f39a411b34e2245b93307b  gcc/machmode.def
  550bdb35d0e034ca0050c574ba896d61  gcc/machmode.h
  486412acbbb6de10b080e31410a14f33  gcc/main.cc
  d053620a6d75e0f59842e390386fd917  gcc/make-unique.h
! 5ff78726c1db0bc193472a8b82102221  gcc/match.pd
  63bf182c7c3a100e101b2129976be89b  gcc/mcf.cc
  795fbbc034a60f5af7e79dbe3bac65a0  gcc/mem-stats-traits.h
  295dcd7618653c13dcf063266752d06f  gcc/mem-stats.h
--- 7679,7689 ----
  d8c314554dde17baabdee11b802264b3  gcc/m2/tools-src/mklink.c
  ff4d04d0175889f5cc05d2c0c762fe57  gcc/m2/tools-src/tidydates.py
  f9608e9005487c369e6c38949ab36fa1  gcc/m2/version.c
! 9c73ce7b15dda9ddf7130eb220aee884  gcc/machmode.def
  550bdb35d0e034ca0050c574ba896d61  gcc/machmode.h
  486412acbbb6de10b080e31410a14f33  gcc/main.cc
  d053620a6d75e0f59842e390386fd917  gcc/make-unique.h
! 9b93d31da15313dd58093c6363a31ad2  gcc/match.pd
  63bf182c7c3a100e101b2129976be89b  gcc/mcf.cc
  795fbbc034a60f5af7e79dbe3bac65a0  gcc/mem-stats-traits.h
  295dcd7618653c13dcf063266752d06f  gcc/mem-stats.h
*************** ebbe3379528e7b9db85647b877e5b0bb  gcc/me
*** 7690,7699 ****
  b82061b2c90528a47ea29b04cf44de77  gcc/mkconfig.sh
  a9772a5a6b37efbf620593d1ecb9a9a2  gcc/mode-classes.def
  7c54f78fff03db22e0e87662bf5c2ebb  gcc/mode-switching.cc
! dc32936944eec23defd5fd5af215d9ad  gcc/modulo-sched.cc
  9c6a28ae7944e5f796f3439aa2df1d22  gcc/multiple_target.cc
  cc17503ba43ac2b4a57f3a09d7a25fec  gcc/mux-utils.h
! 6a7f587617f64fe9418c3c61808f3594  gcc/objc/ChangeLog
  8d082f55b0cdfd75ea3681dfa074f5b2  gcc/objc/Make-lang.in
  9afcb04ac4a886901dfab5e553774a8e  gcc/objc/config-lang.in
  42a524a0868e4113a592235af9fd222a  gcc/objc/lang-specs.h
--- 7693,7702 ----
  b82061b2c90528a47ea29b04cf44de77  gcc/mkconfig.sh
  a9772a5a6b37efbf620593d1ecb9a9a2  gcc/mode-classes.def
  7c54f78fff03db22e0e87662bf5c2ebb  gcc/mode-switching.cc
! 05dd9bcbee4ec681bdb25810f43cfb53  gcc/modulo-sched.cc
  9c6a28ae7944e5f796f3439aa2df1d22  gcc/multiple_target.cc
  cc17503ba43ac2b4a57f3a09d7a25fec  gcc/mux-utils.h
! c2deac83c01ccdc20a359587eea1114e  gcc/objc/ChangeLog
  8d082f55b0cdfd75ea3681dfa074f5b2  gcc/objc/Make-lang.in
  9afcb04ac4a886901dfab5e553774a8e  gcc/objc/config-lang.in
  42a524a0868e4113a592235af9fd222a  gcc/objc/lang-specs.h
*************** d014415973aeadfa317bbf58d7670cb3  gcc/ob
*** 7712,7718 ****
  698aa8c8e68ec8bd5aa475f9a380de0f  gcc/objc/objc-runtime-shared-support.cc
  5b47b9b3c7bb8072b197715dfe71a9a2  gcc/objc/objc-runtime-shared-support.h
  b648849750be8f504a100c2ba7c790e0  gcc/objc/objc-tree.def
! e3eced05eff33b00c0d027d5a0ccc709  gcc/objcp/ChangeLog
  150f27d7488f95ff898f3ff26d4d4973  gcc/objcp/Make-lang.in
  004fa5a83d6b4ad3094b9b495f104ac6  gcc/objcp/config-lang.in
  b6aaded8e85e2c15678b63196f1010b6  gcc/objcp/lang-specs.h
--- 7715,7721 ----
  698aa8c8e68ec8bd5aa475f9a380de0f  gcc/objc/objc-runtime-shared-support.cc
  5b47b9b3c7bb8072b197715dfe71a9a2  gcc/objc/objc-runtime-shared-support.h
  b648849750be8f504a100c2ba7c790e0  gcc/objc/objc-tree.def
! ad745cf415a9f47e1482ab06169a6f34  gcc/objcp/ChangeLog
  150f27d7488f95ff898f3ff26d4d4973  gcc/objcp/Make-lang.in
  004fa5a83d6b4ad3094b9b495f104ac6  gcc/objcp/config-lang.in
  b6aaded8e85e2c15678b63196f1010b6  gcc/objcp/lang-specs.h
*************** f70c3872b668ba9c99b8d73ab2f9cf79  gcc/ob
*** 7722,7732 ****
  8d1f0d9303077458b28a80a9546ff2ba  gcc/obstack-utils.h
  c2186582925518f8871bcb0f066553f0  gcc/omp-api.h
  889315061b61c6bc0cb2f27a4eea3939  gcc/omp-builtins.def
! f441ac6601a5a1f6ba5ca39bef20c13a  gcc/omp-expand.cc
  286190bcce78c62804516df6cd0d1684  gcc/omp-expand.h
! 4690b68c8d78cbea16b05816b53a61cf  gcc/omp-general.cc
  8da93c6a9f42421b5af39e03da74c94c  gcc/omp-general.h
! 1324f8a540660f2cbdb237493c886d56  gcc/omp-low.cc
  73fb62acbdd74e28aff8cc147ee7fa11  gcc/omp-low.h
  bf774332919d8fc6ad76372ccefd0aa2  gcc/omp-oacc-kernels-decompose.cc
  51e7c46004876244d3f23ab786112c1a  gcc/omp-oacc-neuter-broadcast.cc
--- 7725,7735 ----
  8d1f0d9303077458b28a80a9546ff2ba  gcc/obstack-utils.h
  c2186582925518f8871bcb0f066553f0  gcc/omp-api.h
  889315061b61c6bc0cb2f27a4eea3939  gcc/omp-builtins.def
! 8f458018d16899fe9ad95027dd5c7038  gcc/omp-expand.cc
  286190bcce78c62804516df6cd0d1684  gcc/omp-expand.h
! 5968df0d183b039d8069e93d0f9acea9  gcc/omp-general.cc
  8da93c6a9f42421b5af39e03da74c94c  gcc/omp-general.h
! ef741f98121f6aca524b42183f3b6576  gcc/omp-low.cc
  73fb62acbdd74e28aff8cc147ee7fa11  gcc/omp-low.h
  bf774332919d8fc6ad76372ccefd0aa2  gcc/omp-oacc-kernels-decompose.cc
  51e7c46004876244d3f23ab786112c1a  gcc/omp-oacc-neuter-broadcast.cc
*************** b5fc1a94542b80b1683d2bee465e42be  gcc/op
*** 7749,7755 ****
  28bb97827aab6913c7fa55727bd8cea0  gcc/optabs-query.h
  796aae3e1b58b2fba9ea35dae89dbcd2  gcc/optabs-tree.cc
  295bbec8fcdeeac30d6f914e52d4adc4  gcc/optabs-tree.h
! 6c91dcd704f35b58dcd74d442e295139  gcc/optabs.cc
  70d148f0c420cc77d698f1d603fd9671  gcc/optabs.def
  30d9b07650a135e2e68bbac98a0e0295  gcc/optabs.h
  d272f0cd2742999e36feb3973232a1dc  gcc/optc-gen.awk
--- 7752,7758 ----
  28bb97827aab6913c7fa55727bd8cea0  gcc/optabs-query.h
  796aae3e1b58b2fba9ea35dae89dbcd2  gcc/optabs-tree.cc
  295bbec8fcdeeac30d6f914e52d4adc4  gcc/optabs-tree.h
! 749d47c101ddf957730c6fd1195faab4  gcc/optabs.cc
  70d148f0c420cc77d698f1d603fd9671  gcc/optabs.def
  30d9b07650a135e2e68bbac98a0e0295  gcc/optabs.h
  d272f0cd2742999e36feb3973232a1dc  gcc/optc-gen.awk
*************** e3f908061f2b051f55381b513a49022b  gcc/pa
*** 7781,7831 ****
  57048d71e78511e69e3d39d60cb2f1b7  gcc/plugin.cc
  995702441547e9826ffaea326d8be617  gcc/plugin.def
  79cd4ea374ded38e9f3ef38c1624db9e  gcc/plugin.h
! 457c685dd4451503f097cc50d8a8bccd  gcc/po/ChangeLog
  fcae8297fb0c1be8e1502d7ca12c249f  gcc/po/EXCLUDES
! e4e35545a1fab9b9decbe9b06b468f72  gcc/po/be.gmo
! ad3ed4d3a0135fbf9610627185805a14  gcc/po/be.po
  2c2ea0e3a2f4f05209b2462f48efcf95  gcc/po/da.gmo
! f06a600ee92348bc59755f3b4e3508bd  gcc/po/da.po
! 77d1784bcf27caba552f8c834cc25398  gcc/po/de.gmo
! eb727b61fc41c69f8eb58feed8f6f9af  gcc/po/de.po
! 189b9d1af87594807b0d0e10036a64c3  gcc/po/el.gmo
! 9dbd88f88adbc476a62e0c28592b8fe3  gcc/po/el.po
! 8f9262fe0fade6729b15cc2889510bcd  gcc/po/es.gmo
! 2a8b04245b2c87d2208d599cc879f4c5  gcc/po/es.po
  748a1d219b34c4206fcf3385510cec82  gcc/po/exgettext
! 2762ecc24ecfc7e9011c49dba61ec8c6  gcc/po/fi.gmo
! fc82e39614cbd5712e526b5f96bc1f74  gcc/po/fi.po
! 40a528ec16b2d8b5b0e118e5178c2484  gcc/po/fr.gmo
! 52fd9ff2ae03e28d28ad65440d9548b2  gcc/po/fr.po
  33581fd74cfda499d4056d86643578f2  gcc/po/gcc.pot
! ff4cf8b4b2214a0dc16a13d33f7823a2  gcc/po/hr.gmo
! a503217da1c8b34e8ca24bdf9a1da071  gcc/po/hr.po
! 4848a4683407c2972d525c4d6e39766d  gcc/po/id.gmo
! af3c799251d1ccd778d079cc33d83a66  gcc/po/id.po
  8ddc18127bfe8e90ac8dcb2c77e9699f  gcc/po/ja.gmo
! cdadc1058f06d0ca6243acd3565a7639  gcc/po/ja.po
  26fc9e0770528c19e5a53e914ba5e83b  gcc/po/ka.gmo
! e97a8754688d7e55785fc0c15f5fae20  gcc/po/ka.po
  0de8f74f2b34971c167300979ff78a8f  gcc/po/nl.gmo
! 8b02cf1040a718f8a94520e44a5d64ee  gcc/po/nl.po
! b4dc56b564b19c79c09637b78cb1e712  gcc/po/ru.gmo
! 283eb799328c71583ee2d31139dc75e1  gcc/po/ru.po
  3e10c91a14b575b8dbbcb945999adcca  gcc/po/sr.gmo
! 49c6f25b92dbcac486191d02ed2ff475  gcc/po/sr.po
! e23b05f4d7f549376b65a3e26514d213  gcc/po/sv.gmo
! 2dbe70e9733db8ccc56e287d4d44fdd4  gcc/po/sv.po
  328b858d48b2fac40539c9a86714b992  gcc/po/tr.gmo
! 54ded6be61153742ab246036bba96cb4  gcc/po/tr.po
! 4caeaf8a87fcfc2439b2ae7fb64c1295  gcc/po/uk.gmo
! b4c32ff4e5ca9301187557f4169661ac  gcc/po/uk.po
! c465805295702ad0a2c41dce26c090de  gcc/po/vi.gmo
! 70f1d6d8472dae5eb46823c0a1022832  gcc/po/vi.po
! b800e07c51bb040e0ae4de798fa9d422  gcc/po/zh_CN.gmo
! 5417b6136960b041ba20098b4f72b944  gcc/po/zh_CN.po
  01928bc0965eef40d2adf3f5e1c5b233  gcc/po/zh_TW.gmo
! b738479ec22d37eb065644041600a079  gcc/po/zh_TW.po
! 449bc0bffc750333208eec740b03a2c4  gcc/pointer-query.cc
  9e3a1ed4de088e9a46c7b6839471d431  gcc/pointer-query.h
  91b6348b1e00d92045418095ae4c75b0  gcc/poly-int-types.h
  49996ef12af53fc104c8c73884c06aa6  gcc/poly-int.h
--- 7784,7834 ----
  57048d71e78511e69e3d39d60cb2f1b7  gcc/plugin.cc
  995702441547e9826ffaea326d8be617  gcc/plugin.def
  79cd4ea374ded38e9f3ef38c1624db9e  gcc/plugin.h
! be639239c1b49aa38aaffdc47981d41b  gcc/po/ChangeLog
  fcae8297fb0c1be8e1502d7ca12c249f  gcc/po/EXCLUDES
! e832b89b6dbf9df838167843217e810d  gcc/po/be.gmo
! 276b0e994306e3cdb1f62b8de38fa0e9  gcc/po/be.po
  2c2ea0e3a2f4f05209b2462f48efcf95  gcc/po/da.gmo
! 4ce8480a8ed1c6ea96dcee25f16b5030  gcc/po/da.po
! 0d07108b05e86f2263fcad18340e8ab9  gcc/po/de.gmo
! 537e98eeb67896ac57d739aeffc9d95c  gcc/po/de.po
! 17988b99399797e62f94326e0f42bdc1  gcc/po/el.gmo
! fb211887132af72dd424dd2b31d66047  gcc/po/el.po
! 4d307aadcfb6c8344d018b9c3788b8b0  gcc/po/es.gmo
! 8db2cd09f0527a4cc27a7f190fd26a08  gcc/po/es.po
  748a1d219b34c4206fcf3385510cec82  gcc/po/exgettext
! a1513213b977a26cc23a14852da5e0a5  gcc/po/fi.gmo
! 6bc994ac2cef495e886c17a200067ac8  gcc/po/fi.po
! 3f1b1792c9a21e1c201d4c0deec6a110  gcc/po/fr.gmo
! 31fd60289038e7a7968d397f5a4d299f  gcc/po/fr.po
  33581fd74cfda499d4056d86643578f2  gcc/po/gcc.pot
! 17c56d46e6b2f2aa71f2dd1ce672abba  gcc/po/hr.gmo
! 967f372df07b8e132823a5ae78810e95  gcc/po/hr.po
! 9918f0e34df351303c1766f60d24c726  gcc/po/id.gmo
! 4aa3d72b7598f752dbeec3c515e3e3f4  gcc/po/id.po
  8ddc18127bfe8e90ac8dcb2c77e9699f  gcc/po/ja.gmo
! 3dd18bca034f2130b94fe69334f92964  gcc/po/ja.po
  26fc9e0770528c19e5a53e914ba5e83b  gcc/po/ka.gmo
! 801fffa9d9aeef707aff2ac0f13c5d92  gcc/po/ka.po
  0de8f74f2b34971c167300979ff78a8f  gcc/po/nl.gmo
! a7784b508797b07a4ce6f68f1bacacc8  gcc/po/nl.po
! f13ec86d952e4023d4a40ae89439f464  gcc/po/ru.gmo
! fdcd4a3815700acbdd4e1f3e6b833509  gcc/po/ru.po
  3e10c91a14b575b8dbbcb945999adcca  gcc/po/sr.gmo
! 7eca9b1e93a0943a9b3e0162afc96508  gcc/po/sr.po
! a171fd599025064b89420cb87d9f96a7  gcc/po/sv.gmo
! addbe678572b00fd728ed5da73f67e36  gcc/po/sv.po
  328b858d48b2fac40539c9a86714b992  gcc/po/tr.gmo
! 30f86071bc323d99189f4277b2844dd2  gcc/po/tr.po
! 13df8c4cb6eb9a28094d63019e1e5174  gcc/po/uk.gmo
! 97298dbd14ff0ae2044aa6223ff15d35  gcc/po/uk.po
! 606f60080b4df63b22a2887ce98f61ab  gcc/po/vi.gmo
! 6a667463af95654e143e41c99d642c20  gcc/po/vi.po
! 3bc29db1ba4a1ccf7af5e12a61ad477b  gcc/po/zh_CN.gmo
! 70925d4393f1c12426d647b87a2c5a10  gcc/po/zh_CN.po
  01928bc0965eef40d2adf3f5e1c5b233  gcc/po/zh_TW.gmo
! 8838373e81bbd8baacc3fd661c2b31cc  gcc/po/zh_TW.po
! ab9186866fe2714b87b213bded33a33c  gcc/pointer-query.cc
  9e3a1ed4de088e9a46c7b6839471d431  gcc/pointer-query.h
  91b6348b1e00d92045418095ae4c75b0  gcc/poly-int-types.h
  49996ef12af53fc104c8c73884c06aa6  gcc/poly-int.h
*************** a5461dd81ec55dc6f56817a1f356f345  gcc/pr
*** 7851,7861 ****
  abcd9fde490dc73b97b051f02682a850  gcc/profile-count.h
  be294583d74c167da1819e51e9001b52  gcc/profile.cc
  d30f617ac9705fc7dc5d14e744fe4ff0  gcc/profile.h
! 2869a390ab1988f2c3c7f610e74f7025  gcc/range-op-float.cc
  5ee20dec11c42aba14ee0af712f68d8c  gcc/range-op-mixed.h
  01058387fc46315c1e48161b3df36a09  gcc/range-op-ptr.cc
! a2017eee1188026abe7d17e1db0fbbda  gcc/range-op.cc
! eee3b15a4ba011e4744a1b724a3820a5  gcc/range-op.h
  e1edfa2841ce0f9e30db7b34a3a5a6d7  gcc/range.cc
  e1ebdb36533cc50099a4b487e7c70c49  gcc/range.h
  fbf6cd31aa699eaf7943473f49a25df6  gcc/read-md.cc
--- 7854,7864 ----
  abcd9fde490dc73b97b051f02682a850  gcc/profile-count.h
  be294583d74c167da1819e51e9001b52  gcc/profile.cc
  d30f617ac9705fc7dc5d14e744fe4ff0  gcc/profile.h
! fcd441ab2809b6470a3eaa51e39ba6da  gcc/range-op-float.cc
  5ee20dec11c42aba14ee0af712f68d8c  gcc/range-op-mixed.h
  01058387fc46315c1e48161b3df36a09  gcc/range-op-ptr.cc
! 2149fd213ecd177c818b26a1185bf222  gcc/range-op.cc
! 6dbdac1bda477c3b0050c125e3ef1dda  gcc/range-op.h
  e1edfa2841ce0f9e30db7b34a3a5a6d7  gcc/range.cc
  e1ebdb36533cc50099a4b487e7c70c49  gcc/range.h
  fbf6cd31aa699eaf7943473f49a25df6  gcc/read-md.cc
*************** d6625bf8e7676e7c0d45da5ca515ab06  gcc/re
*** 7872,7878 ****
  29f0358d26dd3f8be1417f9a16c71806  gcc/ree.cc
  40ff12eae68d7c45fee63cfa20a67634  gcc/reg-notes.def
  aa0ee68df72d26f412ede3144ff99d42  gcc/reg-stack.cc
! 326cfd57c1bbde18df46f04749c95d4c  gcc/regcprop.cc
  a15f939ddd4de2fc2a6dc44a5344d39f  gcc/regcprop.h
  fcafe43f1a7955c6e00e7b1301dae7ad  gcc/regenerate-attr-urls.py
  3779a015e4f5337a24cf38a89c57eea8  gcc/regenerate-opt-urls.py
--- 7875,7881 ----
  29f0358d26dd3f8be1417f9a16c71806  gcc/ree.cc
  40ff12eae68d7c45fee63cfa20a67634  gcc/reg-notes.def
  aa0ee68df72d26f412ede3144ff99d42  gcc/reg-stack.cc
! 3f9e91174c7e8a98c9f5539f47e2fdf9  gcc/regcprop.cc
  a15f939ddd4de2fc2a6dc44a5344d39f  gcc/regcprop.h
  fcafe43f1a7955c6e00e7b1301dae7ad  gcc/regenerate-attr-urls.py
  3779a015e4f5337a24cf38a89c57eea8  gcc/regenerate-opt-urls.py
*************** ae3ad005e8aa99428875298a3a4a9807  gcc/rt
*** 7893,7900 ****
  7948f19af7c7a128dd0ae8670c3fc343  gcc/rtl-iter.h
  8c3b34bb9f512d3d639e53c5b1cbb307  gcc/rtl-ssa.h
  3e123d92454df663839c73fe7db11784  gcc/rtl-ssa/access-utils.h
! 0dc16a95db8ca98a27e3650f6c12ce23  gcc/rtl-ssa/accesses.cc
! 9393072d67f2a5d2fe674ab8fc3d13e9  gcc/rtl-ssa/accesses.h
  66b4e87db60474417ffffe027ae7f92f  gcc/rtl-ssa/blocks.cc
  520011b5e2ce3793d91dd754d2a666ee  gcc/rtl-ssa/blocks.h
  33b2e67a8ebbdcbe29d4b567f6ce3700  gcc/rtl-ssa/change-utils.h
--- 7896,7903 ----
  7948f19af7c7a128dd0ae8670c3fc343  gcc/rtl-iter.h
  8c3b34bb9f512d3d639e53c5b1cbb307  gcc/rtl-ssa.h
  3e123d92454df663839c73fe7db11784  gcc/rtl-ssa/access-utils.h
! 8470a650080f5cf3a8ef379be1fdbefb  gcc/rtl-ssa/accesses.cc
! d188c44a99e5c3bc8d854836acecde41  gcc/rtl-ssa/accesses.h
  66b4e87db60474417ffffe027ae7f92f  gcc/rtl-ssa/blocks.cc
  520011b5e2ce3793d91dd754d2a666ee  gcc/rtl-ssa/blocks.h
  33b2e67a8ebbdcbe29d4b567f6ce3700  gcc/rtl-ssa/change-utils.h
*************** c08edc659010d9072c249418c1be7fe6  gcc/rt
*** 7927,7933 ****
  ecb31a48caf7998f695601ec7350bdc0  gcc/run-rtl-passes.cc
  c4bc204b62fdb61848c09abf05a60a9d  gcc/run-rtl-passes.h
  add9bd82fcec23469a4d0f7df03d9589  gcc/rust/CONTRIBUTING.md
! 380f5899ac477369766307c9879f3f15  gcc/rust/ChangeLog
  c2a8648800b13beaa7b2efef8e94ea6f  gcc/rust/Make-lang.in
  f3527e161e6e2827d299c1a928ebe1c6  gcc/rust/README.md
  1bde08bec2946c34ff76bc8cdc25d05c  gcc/rust/ast/rust-ast-builder-type.cc
--- 7930,7936 ----
  ecb31a48caf7998f695601ec7350bdc0  gcc/run-rtl-passes.cc
  c4bc204b62fdb61848c09abf05a60a9d  gcc/run-rtl-passes.h
  add9bd82fcec23469a4d0f7df03d9589  gcc/rust/CONTRIBUTING.md
! 2e511ca77af755064bc1d7c7399f3c98  gcc/rust/ChangeLog
  c2a8648800b13beaa7b2efef8e94ea6f  gcc/rust/Make-lang.in
  f3527e161e6e2827d299c1a928ebe1c6  gcc/rust/README.md
  1bde08bec2946c34ff76bc8cdc25d05c  gcc/rust/ast/rust-ast-builder-type.cc
*************** cf0f1ba732134068141dc67a09cd47ce  gcc/sh
*** 8454,8460 ****
  50d9999185408bcae454174489317b68  gcc/signop.h
  e5d40573610fb7583cb771d99f436041  gcc/simple-diagnostic-path.cc
  c8b2977ee32b0a12bea49921d2ec0c00  gcc/simple-diagnostic-path.h
! ae83e010453a23a26ac39885d9f21d6e  gcc/simplify-rtx.cc
  456e0937ae4b3a0f49fd44fb0d05eb52  gcc/sort.cc
  599fc125220850c86939202313a6f733  gcc/sparseset.cc
  430469e71b555502fe14de847bb52093  gcc/sparseset.h
--- 8457,8463 ----
  50d9999185408bcae454174489317b68  gcc/signop.h
  e5d40573610fb7583cb771d99f436041  gcc/simple-diagnostic-path.cc
  c8b2977ee32b0a12bea49921d2ec0c00  gcc/simple-diagnostic-path.h
! 14fd2eb2fc929a8aa57fe1c6a2dea457  gcc/simplify-rtx.cc
  456e0937ae4b3a0f49fd44fb0d05eb52  gcc/sort.cc
  599fc125220850c86939202313a6f733  gcc/sparseset.cc
  430469e71b555502fe14de847bb52093  gcc/sparseset.h
*************** f5e5ba1329ffae51d286f6c8932308d6  gcc/sr
*** 8472,8478 ****
  d0b55fa9a0f86f4f03bdbfcff3e068d8  gcc/stack-ptr-mod.cc
  bbd5abaa55463a5497e6ff9d14de3a1b  gcc/statistics.cc
  3fc844db346b8f5e70da401bd3f4ad0d  gcc/statistics.h
! 7a7a1a9ae9adfd12a338920b6553fb7c  gcc/stmt.cc
  dbd64f0fc5e750c51b3fae1183025ef5  gcc/stmt.h
  ace168df68feeff6e6062dce7285a09c  gcc/stor-layout.cc
  eb7d04020ade148a4c8969151c6d5478  gcc/stor-layout.h
--- 8475,8481 ----
  d0b55fa9a0f86f4f03bdbfcff3e068d8  gcc/stack-ptr-mod.cc
  bbd5abaa55463a5497e6ff9d14de3a1b  gcc/statistics.cc
  3fc844db346b8f5e70da401bd3f4ad0d  gcc/statistics.h
! 86e897778d82938e1a698a7427fde375  gcc/stmt.cc
  dbd64f0fc5e750c51b3fae1183025ef5  gcc/stmt.h
  ace168df68feeff6e6062dce7285a09c  gcc/stor-layout.cc
  eb7d04020ade148a4c8969151c6d5478  gcc/stor-layout.h
*************** f849345d69b622ff9e7b96095bc2c34e  gcc/sy
*** 8497,8503 ****
  c9829745147a0b8ec026a3c5029fe2ff  gcc/symtab-thunks.h
  aa2f440763246662044c0f16f1c5e858  gcc/symtab.cc
  b3a965e425e6cf7888319667faf58da9  gcc/sync-builtins.def
! b1497a03867668af210c32280876fdd7  gcc/system.h
  480d916fe042a150001ad88e88521c08  gcc/target-def.h
  7e57ef65e3a1144e28765b6e8d7f6cff  gcc/target-globals.cc
  32c99c974fd34089d47160168688da1d  gcc/target-globals.h
--- 8500,8506 ----
  c9829745147a0b8ec026a3c5029fe2ff  gcc/symtab-thunks.h
  aa2f440763246662044c0f16f1c5e858  gcc/symtab.cc
  b3a965e425e6cf7888319667faf58da9  gcc/sync-builtins.def
! 03b273c0c63ca319e07319d25adfb30d  gcc/system.h
  480d916fe042a150001ad88e88521c08  gcc/target-def.h
  7e57ef65e3a1144e28765b6e8d7f6cff  gcc/target-globals.cc
  32c99c974fd34089d47160168688da1d  gcc/target-globals.h
*************** b1497a03867668af210c32280876fdd7  gcc/sy
*** 8508,8514 ****
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 638409bbeb74a1a601d76cb729594d93  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8511,8517 ----
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 3b68d93c3acba931b0cb5efc2427c7ab  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** a2a78072e3d8b53573e8f00012aa5e02  gcc/te
*** 11473,11478 ****
--- 11476,11482 ----
  6f13c48d287fe59d52b17e51ccd6fca9  gcc/testsuite/c-c++-common/analyzer/analyzer-verbosity-2a.c
  6d64ae2854f0c1c2c817a3832375555f  gcc/testsuite/c-c++-common/analyzer/analyzer-verbosity-3.c
  ddd318f0d7ec18cf56dba10884be8c19  gcc/testsuite/c-c++-common/analyzer/analyzer-verbosity-3a.c
+ cca57e9fb9342c8e79642164deb2fa66  gcc/testsuite/c-c++-common/analyzer/arith-1.c
  fc965261104eb781f63faa0fe5a3d7b1  gcc/testsuite/c-c++-common/analyzer/asm-x86-1.c
  4f3de36e277422446a2a0c8cd3afe090  gcc/testsuite/c-c++-common/analyzer/asm-x86-dyndbg-2.c
  cfc15687f29058760db8cdfd6af9f0d8  gcc/testsuite/c-c++-common/analyzer/asm-x86-lp64-2.c
*************** eecccbd82a0978c6fefd4883a004a5ce  gcc/te
*** 11644,11649 ****
--- 11648,11654 ----
  a66185ed3bef2742621b423d3bec08ab  gcc/testsuite/c-c++-common/analyzer/infinite-recursion-pr108935-1.c
  7d75523d81879148276b42e991a4c362  gcc/testsuite/c-c++-common/analyzer/infinite-recursion-pr108935-1a.c
  66723f902622a5e196b22ca3d8fceff6  gcc/testsuite/c-c++-common/analyzer/infinite-recursion-pr108935-2.c
+ 06baba8fb190338b8a7cb3d26bb98679  gcc/testsuite/c-c++-common/analyzer/infinite-recursion-pr122975.c
  43c57be318716a133d18499c08ddc7aa  gcc/testsuite/c-c++-common/analyzer/infinite-recursion-variadic.c
  d5e270f77ea78102f30f82e5d2f2191b  gcc/testsuite/c-c++-common/analyzer/infinite-recursion.c
  e7a346d9228f0a095843adfb8d30f916  gcc/testsuite/c-c++-common/analyzer/init.c
*************** a20f56474f9327e4df5f75e759a08cfc  gcc/te
*** 11943,11948 ****
--- 11948,11954 ----
  8f913e3de654aeeed3a380e266f73c9d  gcc/testsuite/c-c++-common/analyzer/strlen-pr111361.c
  c02d2254f7ec2e1d0a71dadd15088d94  gcc/testsuite/c-c++-common/analyzer/strlen-pr112811.c
  3d94f951f5b6fbc3d0844975b793c18e  gcc/testsuite/c-c++-common/analyzer/strlen-pr113999.c
+ af84b442d8f68452823319bf94649695  gcc/testsuite/c-c++-common/analyzer/strlen-pr123085.c
  094be02eb52b4c58b434801cf6dd0582  gcc/testsuite/c-c++-common/analyzer/strncpy-1.c
  95822937a3320cebcdcd88c927eb703e  gcc/testsuite/c-c++-common/analyzer/strncpy-pr111361.c
  ed3ea054e3f77d74f5a3e9a655a63daa  gcc/testsuite/c-c++-common/analyzer/strndup-1.c
*************** fabe4f563e2a6b04ace68b9b7e010e6b  gcc/te
*** 12084,12089 ****
--- 12090,12099 ----
  a81fada6339487ed882e8189aae31718  gcc/testsuite/c-c++-common/asan/pr120608-2.c
  4bf79f26fda6692969b7b7acd3996a01  gcc/testsuite/c-c++-common/asan/pr120608-3.c
  bfeb7c22d0f9799de47d33dd1bcdde09  gcc/testsuite/c-c++-common/asan/pr120608-4.c
+ b3355bfb51e6a87d724e18d36b9ac8b6  gcc/testsuite/c-c++-common/asan/pr121389-1.c
+ eb77e0bf098a564e4879891993b2971a  gcc/testsuite/c-c++-common/asan/pr121389-2.c
+ deda343ed2f61c0d2a95534b8cfcec30  gcc/testsuite/c-c++-common/asan/pr121389-3.c
+ c4e5247a7ee4e73d4190e5abea3941e0  gcc/testsuite/c-c++-common/asan/pr121389-4.c
  9a0dd3dcef02945c8967f40a29316496  gcc/testsuite/c-c++-common/asan/pr56330.c
  202bae43b2843228776d43c8d07c92c8  gcc/testsuite/c-c++-common/asan/pr59029.c
  65128b17436f6406d9e224257030e000  gcc/testsuite/c-c++-common/asan/pr59063-1.c
*************** da5e564f6cffb4d2f63384ba5d7351b1  gcc/te
*** 12307,12312 ****
--- 12317,12324 ----
  8135260e5e210166919ed6d24752ad37  gcc/testsuite/c-c++-common/cpp/diagnostic-pragma-3.c
  7e07a117bfa1cbd4313441da514b62a7  gcc/testsuite/c-c++-common/cpp/dir-only-1.c
  94f40e67e3617fd463bd2b73d2f6d54c  gcc/testsuite/c-c++-common/cpp/dir-only-1.h
+ 3ddedbc00d4ff771f66edefc8d70881f  gcc/testsuite/c-c++-common/cpp/dir-only-10.c
+ 948247aa95702e920da7ab25ee7cf601  gcc/testsuite/c-c++-common/cpp/dir-only-11.c
  92a3350e430f3da6be21354b2cc4eb5d  gcc/testsuite/c-c++-common/cpp/dir-only-2.c
  d17c82849bf7f540adedf0e80d9b41df  gcc/testsuite/c-c++-common/cpp/dir-only-3.c
  f120018b9734950cca9c0e7ba0e9a33a  gcc/testsuite/c-c++-common/cpp/dir-only-3a.h
*************** e8f7b694ebd3603789b6992bc816222d  gcc/te
*** 13177,13183 ****
--- 13189,13197 ----
  d29126c43ce63e6c41ed6130742b15e2  gcc/testsuite/c-c++-common/gomp/pr118965-1.c
  424bcc14d1a0bf87f576aafc485996e9  gcc/testsuite/c-c++-common/gomp/pr118965-2.c
  c83ce004951a9a0719e190f7457302c7  gcc/testsuite/c-c++-common/gomp/pr119000.c
+ 250f54e2a193f434f875e2caf2868bc6  gcc/testsuite/c-c++-common/gomp/pr120052.c
  dfca692e0ac01a45a3200798a153ebf1  gcc/testsuite/c-c++-common/gomp/pr120180.c
+ c315375dde6dfd35915ac372415190a8  gcc/testsuite/c-c++-common/gomp/pr120564.c
  e16ef156ad193ef1f3cba60ad16e57ab  gcc/testsuite/c-c++-common/gomp/pr51360.c
  84c977571aeb43c0224137efe7f5b213  gcc/testsuite/c-c++-common/gomp/pr53580.c
  28bfd873981083756a16f70fdb0b86db  gcc/testsuite/c-c++-common/gomp/pr54017.c
*************** e1ef9c58498f72552b0ec84751024b54  gcc/te
*** 13557,13562 ****
--- 13571,13577 ----
  7e6323dd9b11ca893c79859f430b53ed  gcc/testsuite/c-c++-common/pr109884.c
  087cac8a02deb9e6057b84df8a4b50c5  gcc/testsuite/c-c++-common/pr111309-1.c
  eaa6db1ea7ec94af6a5743a71b3c75b4  gcc/testsuite/c-c++-common/pr111309-2.c
+ b27edfb18a0a46230f08ed022faced81  gcc/testsuite/c-c++-common/pr111817.c
  fd2495c48b560caf7d762a464c77b115  gcc/testsuite/c-c++-common/pr118205.c
  7f267008b2230604a2b8a18847bf6734  gcc/testsuite/c-c++-common/pr118430.c
  0c3f46dedcdae63c945f3862b8e0e0ed  gcc/testsuite/c-c++-common/pr118442.c
*************** e82c7b7752e66456db57ee27e9f0dea7  gcc/te
*** 13573,13578 ****
--- 13588,13595 ----
  8c1cd068c408ff1fcd80c540de835599  gcc/testsuite/c-c++-common/pr119616.c
  9032f3bb916ba5c274bdfec86c5c4ef5  gcc/testsuite/c-c++-common/pr119618.c
  c9f6665aa9cce2133e7c5f9edba34076  gcc/testsuite/c-c++-common/pr121159.c
+ f938d650e5405e1ae04ff131a9239d66  gcc/testsuite/c-c++-common/pr122188.c
+ 4d076347f661059e251ba973750b8ed5  gcc/testsuite/c-c++-common/pr124532.c
  f5dce8e27cfb8a6bfffe57596fecb796  gcc/testsuite/c-c++-common/pr19807-1.c
  8a7d9a8dd4af1ada80ca6a4b3201e073  gcc/testsuite/c-c++-common/pr19807-2.c
  39c0873a2c1c7f951e8b2f90ebc9e12d  gcc/testsuite/c-c++-common/pr19807-3.c
*************** b7f503ea1b7405c820c390c5eba04cb7  gcc/te
*** 13944,13949 ****
--- 13961,13967 ----
  492c0f8041eaf09efdbce2c58dd901a4  gcc/testsuite/c-c++-common/toplevel-asm-6.c
  0fa4a0ee5b9d36c2f49914adfda4059b  gcc/testsuite/c-c++-common/toplevel-asm-7.c
  b9e974e2779e4215afe8a7d06bef5993  gcc/testsuite/c-c++-common/toplevel-asm-8.c
+ 96c0880eb6513d2b016d112d26970588  gcc/testsuite/c-c++-common/toplevel-asm-9.c
  2a460af511669879d590f5b1a8e1fb2a  gcc/testsuite/c-c++-common/torture/20050113-1.c
  c1e50a7071b6999a8895b383c899231c  gcc/testsuite/c-c++-common/torture/aarch64-vect-lane-1.c
  e71883f492cebf8129478eb15f05b834  gcc/testsuite/c-c++-common/torture/aarch64-vect-lane-2.c
*************** d76466e093fe006789ccb59cf89f01bb  gcc/te
*** 14060,14065 ****
--- 14078,14084 ----
  993b07c1c8f1a0db0b2e9956c1045e2c  gcc/testsuite/c-c++-common/torture/pr117912-1.c
  457a8eeb2f3d9696c824ae9b75b4c721  gcc/testsuite/c-c++-common/torture/pr117912-2.c
  700dd88b5774e08268eb43b2572a7160  gcc/testsuite/c-c++-common/torture/pr117912-3.c
+ c3a3398c777344bf7331095f9c91352e  gcc/testsuite/c-c++-common/torture/pr124086-1.c
  9f1ae2fa915c5159ec134a1894ad5cf1  gcc/testsuite/c-c++-common/torture/pr42834.c
  675e839574d99a5e8a0446f66b3520ca  gcc/testsuite/c-c++-common/torture/pr46137.c
  dad442c09041500a2c414da240f49b82  gcc/testsuite/c-c++-common/torture/pr53505.c
*************** d38901b61d8e8c42e6c0084cde0eaec0  gcc/te
*** 15348,15353 ****
--- 15367,15373 ----
  d987b63109ee0eb4b7f916f91d8d24be  gcc/testsuite/g++.dg/abi/mangle79.C
  eeee984fc971f0592acc52efb13ea93e  gcc/testsuite/g++.dg/abi/mangle8.C
  91fe59f4b908b8f1ebd09487c43147d8  gcc/testsuite/g++.dg/abi/mangle80.C
+ e4d26caeda2af1863c043ca61abdd37d  gcc/testsuite/g++.dg/abi/mangle84.C
  8c95c7ea3760b8a1e7954b3da9f45a16  gcc/testsuite/g++.dg/abi/mangle9.C
  d85264fae2b4c2eb4d8629cb29c42e90  gcc/testsuite/g++.dg/abi/no-linkage-expr1.C
  0cccf158230e7bf1d438169164c8020a  gcc/testsuite/g++.dg/abi/no-weak1.C
*************** b1579268264426b91fb29ca4a7ae6672  gcc/te
*** 15370,15375 ****
--- 15390,15396 ----
  ed79cf5bf3c45230ee9187c4cf51338e  gcc/testsuite/g++.dg/abi/packed1.C
  a6094bf319c105760bebe41768865b66  gcc/testsuite/g++.dg/abi/param1.C
  dc8d04461395fe21c8df3c3ddc0eaefb  gcc/testsuite/g++.dg/abi/param2.C
+ c6ee91a6fae5891b271cf08faea94bc7  gcc/testsuite/g++.dg/abi/pr121801.C
  4f8a99ff3fb06bd92fa2824ba0222b0d  gcc/testsuite/g++.dg/abi/pr39188-1.h
  0b334e68ad96b9b585797769690bad26  gcc/testsuite/g++.dg/abi/pr39188-1a.C
  c96cb62975d4855a114a03ac254e17ce  gcc/testsuite/g++.dg/abi/pr39188-1b.C
*************** c88701df415b47ac9bf5cba84cf379ab  gcc/te
*** 15435,15441 ****
  a3ef49aa5fa035e0eaa1fb23c589fe61  gcc/testsuite/g++.dg/abi/vthunk2.C
  6881f6a907aed22e3604db9a81d71753  gcc/testsuite/g++.dg/abi/vthunk3.C
  59cdef1c2f5ac26231205b723cb9ea52  gcc/testsuite/g++.dg/abi/vtt1.C
! bbebf12acd88ceeb72fb99bff77e889b  gcc/testsuite/g++.dg/absvect.C
  cb66889e261971e64a6568617bffaeaa  gcc/testsuite/g++.dg/addr_builtin-1.C
  806e88a78438f2d478b5ab1e9caa01f7  gcc/testsuite/g++.dg/alias-checks.C
  45f080b7b8ebc92ae9b6072bf11d0451  gcc/testsuite/g++.dg/analyzer/analyzer.exp
--- 15456,15462 ----
  a3ef49aa5fa035e0eaa1fb23c589fe61  gcc/testsuite/g++.dg/abi/vthunk2.C
  6881f6a907aed22e3604db9a81d71753  gcc/testsuite/g++.dg/abi/vthunk3.C
  59cdef1c2f5ac26231205b723cb9ea52  gcc/testsuite/g++.dg/abi/vtt1.C
! 53e31dbb580c47605f7e76bc6cfd7704  gcc/testsuite/g++.dg/absvect.C
  cb66889e261971e64a6568617bffaeaa  gcc/testsuite/g++.dg/addr_builtin-1.C
  806e88a78438f2d478b5ab1e9caa01f7  gcc/testsuite/g++.dg/alias-checks.C
  45f080b7b8ebc92ae9b6072bf11d0451  gcc/testsuite/g++.dg/analyzer/analyzer.exp
*************** b62cd97dedd00a9fbbd509c4e3d6264b  gcc/te
*** 15496,15501 ****
--- 15517,15523 ----
  8b1aa8c61051ed1cee68c19feebe90b0  gcc/testsuite/g++.dg/asan/asan_test.cc
  7b5f694f7ad9cbae4aab558727eaceaf  gcc/testsuite/g++.dg/asan/asan_test_config.h
  a455db6e8dc9b02d6f2c59488f513896  gcc/testsuite/g++.dg/asan/asan_test_utils.h
+ eedaa19d1ebbb6f2ecc8a364fb1ddecd  gcc/testsuite/g++.dg/asan/coroutines1.C
  5e2fbdaa2b9b39d6bf1f290e581722f4  gcc/testsuite/g++.dg/asan/deep-stack-uaf-1.C
  0acf775bdbd67ca675dda4934aeacb5b  gcc/testsuite/g++.dg/asan/deep-tail-call-1.C
  b2988101c810da55bd5189f442c038b7  gcc/testsuite/g++.dg/asan/deep-thread-stack-1.C
*************** a086058df225e5fda842f4ebd12d6dbd  gcc/te
*** 16227,16232 ****
--- 16249,16257 ----
  4ba2a97e93d914ad5510f0a3df7d5dba  gcc/testsuite/g++.dg/coroutines/pr120273.C
  639bf3d722d542a1aab7bcbf3114716a  gcc/testsuite/g++.dg/coroutines/pr120453.C
  5e0a6f554522f0537a21112c91d33895  gcc/testsuite/g++.dg/coroutines/pr120495.C
+ cf70192c32f53d0ffe102b573d4080be  gcc/testsuite/g++.dg/coroutines/pr121643.C
+ 81dd0f7a2283cf853dddabb957fce0eb  gcc/testsuite/g++.dg/coroutines/pr123975.C
+ 0ca0846ef4e8c067a077207372df0fa3  gcc/testsuite/g++.dg/coroutines/pr125376.C
  cbb42d13b1660a8eb1d40a3d88308140  gcc/testsuite/g++.dg/coroutines/pr93458-1-missing-traits.C
  d9151fc224e4913ed7ffacd748769917  gcc/testsuite/g++.dg/coroutines/pr93458-2-bad-traits.C
  e9b715cb41c54f5b179b4725b788e338  gcc/testsuite/g++.dg/coroutines/pr93458-3-missing-handle.C
*************** a1e493fe52a51c424874f946c2d4dd19  gcc/te
*** 16394,16400 ****
  65ab5ab52798f9e0c1e79f85739017e5  gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
  64cae1ecb87704f989e3edaeb243c993  gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
  fbfa3478c3cb149485c72122eda6811b  gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
! 071a68722f4173f2f5200bdf87e9aff8  gcc/testsuite/g++.dg/coroutines/torture/pr103953.C
  d70e1067c46528fe83662185c66bef45  gcc/testsuite/g++.dg/coroutines/torture/pr105104.C
  ab314765ac0eb201bb3e11222207ee40  gcc/testsuite/g++.dg/coroutines/torture/pr109867.C
  25fa35420b604bea9857061f35656b5b  gcc/testsuite/g++.dg/coroutines/torture/pr113773.C
--- 16419,16425 ----
  65ab5ab52798f9e0c1e79f85739017e5  gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
  64cae1ecb87704f989e3edaeb243c993  gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
  fbfa3478c3cb149485c72122eda6811b  gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
! 6a8cfa17261ced2af232f482be80d5b0  gcc/testsuite/g++.dg/coroutines/torture/pr103953.C
  d70e1067c46528fe83662185c66bef45  gcc/testsuite/g++.dg/coroutines/torture/pr105104.C
  ab314765ac0eb201bb3e11222207ee40  gcc/testsuite/g++.dg/coroutines/torture/pr109867.C
  25fa35420b604bea9857061f35656b5b  gcc/testsuite/g++.dg/coroutines/torture/pr113773.C
*************** b8d20ab3fff2d35109e30a6a907845f1  gcc/te
*** 16463,16468 ****
--- 16488,16496 ----
  4722600ae996f63d5b716eb7620443ab  gcc/testsuite/g++.dg/cpp/embed-24.C
  4983500878e03a3abd76e7f7b681a086  gcc/testsuite/g++.dg/cpp/embed-25.C
  1cd2ff1ccb4cd02ce8ce68e808b8bc3e  gcc/testsuite/g++.dg/cpp/embed-26.C
+ 54f4ee2696995576c4c5fce0f28eb708  gcc/testsuite/g++.dg/cpp/embed-27.C
+ 616061a95b206fb48748193f412fa24c  gcc/testsuite/g++.dg/cpp/embed-28.C
+ c25d02a801170c4ea6811ff9f833a443  gcc/testsuite/g++.dg/cpp/embed-29.C
  518db3b2c551f0072b476c131c511910  gcc/testsuite/g++.dg/cpp/embed-3.C
  39e59b8a50db7adc52db30aeffc92f5c  gcc/testsuite/g++.dg/cpp/embed-4.C
  71d36e829a98f52caa2a8f034296db7c  gcc/testsuite/g++.dg/cpp/embed-5.C
*************** b8cd89a7510ad4bbf02ec052d02d2ee0  gcc/te
*** 16816,16821 ****
--- 16844,16850 ----
  eeac975a1b841cef4d5a4c468314ed8c  gcc/testsuite/g++.dg/cpp0x/constexpr-104472.C
  6ef86dfa8bcd129320f2714974f8ad93  gcc/testsuite/g++.dg/cpp0x/constexpr-105321.C
  24bbf6c5e0f31296c48440d4dae33447  gcc/testsuite/g++.dg/cpp0x/constexpr-113083.C
+ cf48bd83fff3e69e5f82d30185ef08d0  gcc/testsuite/g++.dg/cpp0x/constexpr-123889.C
  3e4cac522763806230540d3da6cc5ee1  gcc/testsuite/g++.dg/cpp0x/constexpr-46336.C
  d079e67f3b2be485ac7aed93b70984d2  gcc/testsuite/g++.dg/cpp0x/constexpr-46420.C
  329a82a822423273c0c0256fd27a6d52  gcc/testsuite/g++.dg/cpp0x/constexpr-47570.C
*************** b9007290e56f8c058df6fc2174bc755b  gcc/te
*** 16889,16894 ****
--- 16918,16925 ----
  b2e8cc3ca2686458232f6ab8399d9dda  gcc/testsuite/g++.dg/cpp0x/constexpr-93169.C
  bc7ccf4287a38e8f82df800db6150879  gcc/testsuite/g++.dg/cpp0x/constexpr-95307.C
  32c39fce8b20cb104d6da1cffca8a530  gcc/testsuite/g++.dg/cpp0x/constexpr-96241.C
+ 629f0389a900c8203177e0396b4ac416  gcc/testsuite/g++.dg/cpp0x/constexpr-97740a.C
+ eb45e434ffc94954a98ab41dfca4430c  gcc/testsuite/g++.dg/cpp0x/constexpr-97740b.C
  6aa74413b4ef74580a0a5da7abf23914  gcc/testsuite/g++.dg/cpp0x/constexpr-98.C
  5f550fa68a208c2d1f3f6d02dca0b709  gcc/testsuite/g++.dg/cpp0x/constexpr-98295.C
  d08d3bdb37be475451a39fd6f72486e9  gcc/testsuite/g++.dg/cpp0x/constexpr-99.C
*************** df7772e8bce1917bb8d1e66fcbe1ce31  gcc/te
*** 17000,17005 ****
--- 17031,17037 ----
  50c4fa620f7ec653b83dbc313350ac22  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor20.C
  75570067f1748bbf63ecff0edf089f3f  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor21.C
  898892e0dd2add16d81be2af167dd343  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor22.C
+ c3ffed418366431e337c777209f796c0  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor23.C
  6149d79aef3c5dc04bce76d97b8072e3  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor3.C
  fe03ae0923ec0f159b32d4c95a97afbb  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor4.C
  a15ac39628455598191a6c7526c0ea4b  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor5.C
*************** cf5dbf6e27520dc069362029f5cb0540  gcc/te
*** 17056,17062 ****
  0639a526e3e93a7d7ddd53722d0d65a4  gcc/testsuite/g++.dg/cpp0x/constexpr-empty9.C
  eebd11cc85b798aa6a7a34d54749b1fd  gcc/testsuite/g++.dg/cpp0x/constexpr-ex1.C
  4e6fff7f5e83663f75c94efbf299525b  gcc/testsuite/g++.dg/cpp0x/constexpr-ex2.C
! c42ce017f72e0ac9bc977500bc2d096c  gcc/testsuite/g++.dg/cpp0x/constexpr-ex3.C
  ce75146a9a51521a3b4ff82cc14225c3  gcc/testsuite/g++.dg/cpp0x/constexpr-ex4.C
  19eb610e0af0918f7473197af97c60d4  gcc/testsuite/g++.dg/cpp0x/constexpr-expinst.C
  54953d2c31360e2eeefa3305044bd360  gcc/testsuite/g++.dg/cpp0x/constexpr-explicit-inst.C
--- 17088,17094 ----
  0639a526e3e93a7d7ddd53722d0d65a4  gcc/testsuite/g++.dg/cpp0x/constexpr-empty9.C
  eebd11cc85b798aa6a7a34d54749b1fd  gcc/testsuite/g++.dg/cpp0x/constexpr-ex1.C
  4e6fff7f5e83663f75c94efbf299525b  gcc/testsuite/g++.dg/cpp0x/constexpr-ex2.C
! ee1630d30fdca78fd9a901d17054b392  gcc/testsuite/g++.dg/cpp0x/constexpr-ex3.C
  ce75146a9a51521a3b4ff82cc14225c3  gcc/testsuite/g++.dg/cpp0x/constexpr-ex4.C
  19eb610e0af0918f7473197af97c60d4  gcc/testsuite/g++.dg/cpp0x/constexpr-expinst.C
  54953d2c31360e2eeefa3305044bd360  gcc/testsuite/g++.dg/cpp0x/constexpr-explicit-inst.C
*************** f0e116d82b5a6de3a9e5af9a0a9f86f6  gcc/te
*** 17505,17510 ****
--- 17537,17543 ----
  60b64cb629f4a02ed81a12fb0b2cc041  gcc/testsuite/g++.dg/cpp0x/deleted16.C
  e0ec3b8dde104f6e13caaaf049aa05c6  gcc/testsuite/g++.dg/cpp0x/deleted16a.C
  739d0ece28a2f02a16bc7821fc37839c  gcc/testsuite/g++.dg/cpp0x/deleted17.C
+ 0d226107840844124f0e70cd70522c49  gcc/testsuite/g++.dg/cpp0x/deleted19.C
  80874d553919bf312b4841380187e0f9  gcc/testsuite/g++.dg/cpp0x/deleted2.C
  a9129f4cd34b93dbe745e3849ea1c38a  gcc/testsuite/g++.dg/cpp0x/deleted3.C
  d6f65d86ea217a2efd4c31ebedc9c9db  gcc/testsuite/g++.dg/cpp0x/deleted4.C
*************** c82585e1f78689d72ecd7ade6b5aeeb1  gcc/te
*** 17761,17767 ****
--- 17794,17802 ----
  493eb788170e4254e85e5d4a9a75cb3d  gcc/testsuite/g++.dg/cpp0x/gen-attrs-86.C
  e85d058a14211dcf2d4a869c0624ffae  gcc/testsuite/g++.dg/cpp0x/gen-attrs-87.C
  05a54074cd4251e2ff93c14d568fc89b  gcc/testsuite/g++.dg/cpp0x/gen-attrs-88.C
+ 612cbb9f8579e5b0993d513fe539de72  gcc/testsuite/g++.dg/cpp0x/gen-attrs-89.C
  5dd92815927177080853d47a890f5439  gcc/testsuite/g++.dg/cpp0x/gen-attrs-9.C
+ 3b01eb9296987e59c3e91a9998259d9b  gcc/testsuite/g++.dg/cpp0x/gen-attrs-90.C
  6555e6ec4bda3f0ea419f63e98af0a80  gcc/testsuite/g++.dg/cpp0x/gnu_fext-numeric-literals.C
  72a234ce75f2f8ec7fd9f0edfc628c19  gcc/testsuite/g++.dg/cpp0x/gnu_fno-ext-numeric-literals.C
  3e88c6e173fd3bd44055c2202907f7e1  gcc/testsuite/g++.dg/cpp0x/hog1.C
*************** eb2276f9d1b9a9784472833cd48eeadc  gcc/te
*** 18257,18262 ****
--- 18292,18298 ----
  292fedf73879dbf98cc33aee0028affb  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
  7dc3056938015ca751628b8b803f91cc  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
  cd133675ffbc6460b5d974d9620d59d5  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref2.C
+ 8ee58183c86b3171c935b8fb69d7ecfa  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref3.C
  8c20100753c25aa9b1b9e7bf49794a6f  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-rep1.C
  e01ca0b9a350018e38ca6f09cb7cd8b2  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-return1.C
  8055bd5b6e44c886ec71c0ed52b4451c  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-sfinae1.C
*************** e944a760f2bcd206b36820c53e03b241  gcc/te
*** 18460,18465 ****
--- 18496,18502 ----
  573ad180b4337eb14688fd7c74cdeccc  gcc/testsuite/g++.dg/cpp0x/noexcept88.C
  6920aaae5ff91adaae9f973d58b99fd0  gcc/testsuite/g++.dg/cpp0x/noexcept89.C
  01fdf9b25aed01336395f7314f3b5857  gcc/testsuite/g++.dg/cpp0x/noexcept90.C
+ a1c17fbec179b1075e3839acd36429dc  gcc/testsuite/g++.dg/cpp0x/noexcept91.C
  3bf83ccb654cedbb57a45851fb14aa9d  gcc/testsuite/g++.dg/cpp0x/nolinkage1.C
  6b7c91b931bbdacbbffbf9b90a79bc6a  gcc/testsuite/g++.dg/cpp0x/nolinkage1.h
  c92e0eda44dd6b3d74960b249fa5204f  gcc/testsuite/g++.dg/cpp0x/nolinkage1a.cc
*************** cd57481c3233939f35a9152176ba0610  gcc/te
*** 18607,18612 ****
--- 18644,18650 ----
  3bffe4cc168fde4f27dd432ad19e2f12  gcc/testsuite/g++.dg/cpp0x/nullptr44.C
  afdfafb40dd063d062a20c67e4309ae4  gcc/testsuite/g++.dg/cpp0x/nullptr45.C
  b34fb57802d0e40ddc608dc33eb1600e  gcc/testsuite/g++.dg/cpp0x/nullptr46.C
+ a60d34e7d9b973abeff594c297263e66  gcc/testsuite/g++.dg/cpp0x/nullptr47.C
  c0e1a381d8dd12ff190debb04e5ee084  gcc/testsuite/g++.dg/cpp0x/overflow1.C
  fb7661df85ad6b415b31574c67fa4ee0  gcc/testsuite/g++.dg/cpp0x/overload-conv-1.C
  5ca00ae02aa7919e0b3d9730fa9f9ac5  gcc/testsuite/g++.dg/cpp0x/overload-conv-2.C
*************** c261319c4540e21ce17bbed8a6a44f40  gcc/te
*** 18643,18648 ****
--- 18681,18691 ----
  fadcff10fef6007880be1e8b89051f65  gcc/testsuite/g++.dg/cpp0x/pr118923.C
  c6b0d9f964bf85f5f703f5dfa5e809e9  gcc/testsuite/g++.dg/cpp0x/pr119123.C
  b4c316ecfeb0a9b078a76b658ed94668  gcc/testsuite/g++.dg/cpp0x/pr119563.C
+ 29f9291c87488a55a2dd5fa47188ab10  gcc/testsuite/g++.dg/cpp0x/pr119580.C
+ 9598abf127e6826158d64ee6b05b0791  gcc/testsuite/g++.dg/cpp0x/pr122302.C
+ b2f7d7cab4ef6e12f25f82545d59869a  gcc/testsuite/g++.dg/cpp0x/pr123818.C
+ 823666b75dc5cb540393daba4df2d5df  gcc/testsuite/g++.dg/cpp0x/pr124489.C
+ e9b2f79897e6f763134d4ec57a8eb3b7  gcc/testsuite/g++.dg/cpp0x/pr124531.C
  26dea799d49ce223a0c4130a3c955271  gcc/testsuite/g++.dg/cpp0x/pr31431-2.C
  4d1da29b669bf3178b3987abce4d58b1  gcc/testsuite/g++.dg/cpp0x/pr31431.C
  d65e06a3830e2b511cc25692b94615a1  gcc/testsuite/g++.dg/cpp0x/pr31432.C
*************** e884bf1c365eb117bddb8cf25bb61944  gcc/te
*** 19109,19114 ****
--- 19152,19158 ----
  18a5617c6a56b06d2e51299f84183279  gcc/testsuite/g++.dg/cpp0x/static_assert15.C
  53545b7342e66ae87c68f3a770b6a193  gcc/testsuite/g++.dg/cpp0x/static_assert16.C
  a763580664ce585f23dcbf8cf13cab6a  gcc/testsuite/g++.dg/cpp0x/static_assert17.C
+ 0b478e7b19ce99e25e3b117a78dbd54a  gcc/testsuite/g++.dg/cpp0x/static_assert18.C
  7c94507411d8f0fcd4964618204cd929  gcc/testsuite/g++.dg/cpp0x/static_assert2.C
  f24eae3c4070d37d2bbcb3f45a386807  gcc/testsuite/g++.dg/cpp0x/static_assert3.C
  09c6459c722f7fda152e22ef59d4e30c  gcc/testsuite/g++.dg/cpp0x/static_assert4.C
*************** e791b94844e59093ad5ec4175c3b673a  gcc/te
*** 19636,19641 ****
--- 19680,19686 ----
  86dff67be95912f694daebdd0aee911b  gcc/testsuite/g++.dg/cpp1y/auto-fn63.C
  f97d20d3d680128b6e125d1793e29b87  gcc/testsuite/g++.dg/cpp1y/auto-fn64.C
  a5fbd625e8b645b90b2755400e929e2b  gcc/testsuite/g++.dg/cpp1y/auto-fn65.C
+ 88309773bbf1feef7121ba73e86cc151  gcc/testsuite/g++.dg/cpp1y/auto-fn66.C
  03b6f2674c38c8f6ed9f7fc03583b1dc  gcc/testsuite/g++.dg/cpp1y/auto-fn7.C
  e9a317fa32e36cef4553b50965e48550  gcc/testsuite/g++.dg/cpp1y/auto-fn8.C
  d67958b896eb1dae6f8862fd59b01c62  gcc/testsuite/g++.dg/cpp1y/auto-fn9.C
*************** afbdcf440b8da95f919e745c0f3a85d1  gcc/te
*** 19660,19665 ****
--- 19705,19711 ----
  bff4672a992bc57b0432abbc32b3c2c9  gcc/testsuite/g++.dg/cpp1y/constexpr-108158.C
  1d40cabd787f31f0fad7fcf842281e0d  gcc/testsuite/g++.dg/cpp1y/constexpr-110382.C
  c0c4053e9d0ac3fdafa8e18c09182922  gcc/testsuite/g++.dg/cpp1y/constexpr-110619.C
+ 99784bf84926c6a7d522ec738bd5f9aa  gcc/testsuite/g++.dg/cpp1y/constexpr-121445.C
  2d72668eefa5659edd32ef8dabc1c48e  gcc/testsuite/g++.dg/cpp1y/constexpr-50060.C
  fd3ea60479a528944a91cfd16e42839f  gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
  9ecc58eab147adafbf3780c51ed706fc  gcc/testsuite/g++.dg/cpp1y/constexpr-70265-1.C
*************** d91a981f54ab2a15c0e9427ccb338f24  gcc/te
*** 19952,19957 ****
--- 19998,20004 ----
  5272ec327005dde6e5a2aaffb7102e42  gcc/testsuite/g++.dg/cpp1y/lambda-generic-this3.C
  85be199d2e0d4a7142fba0bb5f749ab7  gcc/testsuite/g++.dg/cpp1y/lambda-generic-this4.C
  575f67ce02ade2344a76bcfc5971fb64  gcc/testsuite/g++.dg/cpp1y/lambda-generic-this5.C
+ 2fdf9da2a46e065e8da8779316de871e  gcc/testsuite/g++.dg/cpp1y/lambda-generic-this6.C
  06ba6684e3759115ec5098f38667687b  gcc/testsuite/g++.dg/cpp1y/lambda-generic-trailing1.C
  e947551033232c5abe95cce5adfd22aa  gcc/testsuite/g++.dg/cpp1y/lambda-generic-udt.C
  7515a5372d247dd5a94ef0626c25c2ae  gcc/testsuite/g++.dg/cpp1y/lambda-generic-uneval1.C
*************** c22e1405c91d95d32ec012cae1f23ccc  gcc/te
*** 20268,20273 ****
--- 20315,20321 ----
  7babed4c27249bda4fc60ca9f7b378c0  gcc/testsuite/g++.dg/cpp1y/var-templ85.C
  358ebedc9ef10722682a7bf350590dc2  gcc/testsuite/g++.dg/cpp1y/var-templ86.C
  2555b4c1ccdec6b7fca5b625f06840d3  gcc/testsuite/g++.dg/cpp1y/var-templ87.C
+ 6066c7bcfa1174f7783c52343cc9ad88  gcc/testsuite/g++.dg/cpp1y/var-templ88.C
  c62c3c5ce4dabfb077ffd26896b1d204  gcc/testsuite/g++.dg/cpp1y/var-templ9.C
  2e5f8fa912af0b2871356af6f1adbd06  gcc/testsuite/g++.dg/cpp1y/vla-initlist1.C
  4804988f5ca1de7a49a58e20c70fc457  gcc/testsuite/g++.dg/cpp1y/vla10.C
*************** dfd54cc6e7ae91a6a51dbda233f20174  gcc/te
*** 20603,20608 ****
--- 20651,20658 ----
  37c39f932f33f540d51f60eb06411c2f  gcc/testsuite/g++.dg/cpp1z/decomp61.C
  e0c740066bd9b5db23ad119756a191dc  gcc/testsuite/g++.dg/cpp1z/decomp62.C
  625fdfbc6a0c9cdfdfa656254c263bc2  gcc/testsuite/g++.dg/cpp1z/decomp63.C
+ 4267cc2db929f2666c1c5449e017a94a  gcc/testsuite/g++.dg/cpp1z/decomp66.C
+ d87e0f686f9f58fa2c8ea0990e82c1b3  gcc/testsuite/g++.dg/cpp1z/decomp67.C
  09468d9aa8e4fe8ac0677b17a3c509a2  gcc/testsuite/g++.dg/cpp1z/decomp7.C
  0d7ba62c8322f4f98a085026e3ac529a  gcc/testsuite/g++.dg/cpp1z/decomp8.C
  20aa008483ed89882491910be20354b8  gcc/testsuite/g++.dg/cpp1z/decomp9.C
*************** e3a88ae9ca562b3c9a47ee98c06e6ded  gcc/te
*** 20620,20625 ****
--- 20670,20676 ----
  63be3b6d75aa3c2c8088552683d5245e  gcc/testsuite/g++.dg/cpp1z/eval-order10.C
  3abc6084e572264410718d38beb290bb  gcc/testsuite/g++.dg/cpp1z/eval-order11.C
  2a2d4866a044c20823b5f37f629ac147  gcc/testsuite/g++.dg/cpp1z/eval-order13.C
+ 612e7cfe92accd2bee31cd13a0976f33  gcc/testsuite/g++.dg/cpp1z/eval-order14.C
  ebf7b90ef919b5a31b45b49ad9bd61c9  gcc/testsuite/g++.dg/cpp1z/eval-order2.C
  8b89dee7164b6f4d992706e5b85433f4  gcc/testsuite/g++.dg/cpp1z/eval-order3.C
  6d8d378fedaf65b4cb89952060799280  gcc/testsuite/g++.dg/cpp1z/eval-order4.C
*************** ae3e1959f85f05c9ec509a6dbdbe24ca  gcc/te
*** 20804,20809 ****
--- 20855,20861 ----
  d8c0c733385ca64144f09cf94dbfc159  gcc/testsuite/g++.dg/cpp1z/nontype6.C
  478af4b2682b8500b6d04a7190ab9e4b  gcc/testsuite/g++.dg/cpp1z/nontype6a.C
  1a73a13a161c05eab6182bb64cba004b  gcc/testsuite/g++.dg/cpp1z/nontype7.C
+ ad7260377d53bd5be2c8dfecf32c3fc2  gcc/testsuite/g++.dg/cpp1z/nontype9.C
  03ca05bf2eccb98d95222a2435a3d9ed  gcc/testsuite/g++.dg/cpp1z/pr110216.C
  86d3c074d77c88bd7ef317faea9d2968  gcc/testsuite/g++.dg/cpp1z/pr115440.C
  e668ace19a2b0d8946e0e19fd8317af1  gcc/testsuite/g++.dg/cpp1z/pr78771.C
*************** f35c40f9359deda380357490b21bcf4f  gcc/te
*** 20830,20835 ****
--- 20882,20888 ----
  1cec7e8e1ac5999209a00a7fd3e2dbab  gcc/testsuite/g++.dg/cpp1z/static1.C
  41cdf88b4e2dc9ba29ab954fd0f3d05c  gcc/testsuite/g++.dg/cpp1z/static2.C
  491588e8dd93d83d5049e3c332e8755f  gcc/testsuite/g++.dg/cpp1z/static_assert-nomsg.C
+ d123582c5d5cdc2e4fdc925fa563f023  gcc/testsuite/g++.dg/cpp1z/static_assert1.C
  7dd3448d4722a9ee0446db6aa3c7a0b0  gcc/testsuite/g++.dg/cpp1z/ttp1.C
  0cd62ffa5ae2d02bd665e02895b12f01  gcc/testsuite/g++.dg/cpp1z/ttp2.C
  64b3f9e4e9d3f04ac339e1f86e353e9b  gcc/testsuite/g++.dg/cpp1z/typename-tmpl-tmpl-parm-neg.C
*************** c6ad3dc1af7ae5c57b2194ad705be2a4  gcc/te
*** 20898,20903 ****
--- 20951,20957 ----
  cbc1aae360c38b8d5aba44cc0adb1d1a  gcc/testsuite/g++.dg/cpp23/auto-fncast16.C
  0d6c0765aa6e381e901ea54f31098f7d  gcc/testsuite/g++.dg/cpp23/auto-fncast17.C
  607b1507f1af352b3b8d73c0b0042af0  gcc/testsuite/g++.dg/cpp23/auto-fncast18.C
+ 7538b8341492d3e37f991c7d882723b9  gcc/testsuite/g++.dg/cpp23/auto-fncast19.C
  76d2964f5d2d58ccec6afc73c59f1b53  gcc/testsuite/g++.dg/cpp23/auto-fncast2.C
  dda23dff758a778a7ead9dd8b58268fc  gcc/testsuite/g++.dg/cpp23/auto-fncast3.C
  7f7896e62e131143c799cd8b4ac52168  gcc/testsuite/g++.dg/cpp23/auto-fncast4.C
*************** ee32c4ffc3127b060ad7d2d7978d4c00  gcc/te
*** 20909,20914 ****
--- 20963,20969 ----
  436f3521c73eff29eb95a9935488f619  gcc/testsuite/g++.dg/cpp23/charlit-encoding1.C
  bbd34d70bffdb5659d43e105cc5654f0  gcc/testsuite/g++.dg/cpp23/charset1.C
  fc95968ef690ef967f99e7fc9cf9bb22  gcc/testsuite/g++.dg/cpp23/class-deduction-inherited1.C
+ 289c2847fb294b33f74d735aba8d2b44  gcc/testsuite/g++.dg/cpp23/class-deduction-inherited10.C
  0bfba7997142477c825e6eac0de01c78  gcc/testsuite/g++.dg/cpp23/class-deduction-inherited2.C
  4d439f6f5585d12bf5b651068b33af79  gcc/testsuite/g++.dg/cpp23/class-deduction-inherited3.C
  726edadc3f3d862f8f9d5cdbffdc3430  gcc/testsuite/g++.dg/cpp23/class-deduction-inherited4.C
*************** d1816c76dd387be6d07b1763c88d7e12  gcc/te
*** 20916,20921 ****
--- 20971,20977 ----
  7102bd9f78d9dd5baf868b5867fd00fb  gcc/testsuite/g++.dg/cpp23/class-deduction-inherited6.C
  1eb71fc21e8ad1d9fc8b9177ae3ff8bd  gcc/testsuite/g++.dg/cpp23/class-deduction-inherited7.C
  b70c43fcf5e919517d07b52eba057f7e  gcc/testsuite/g++.dg/cpp23/class-deduction-inherited8.C
+ c281d9c48ed1e62c15bb0a8e9a361e9a  gcc/testsuite/g++.dg/cpp23/class-deduction-inherited9.C
  a5e6981af3e3d461e280ff24cd289402  gcc/testsuite/g++.dg/cpp23/concepts-err1.C
  636155e5662c48788ae52677e22b5249  gcc/testsuite/g++.dg/cpp23/consteval-if1.C
  821ea836b45f7af0a628e6eb278e28f9  gcc/testsuite/g++.dg/cpp23/consteval-if10.C
*************** c0e5d885fa865eb6022dc0d49f95ccc5  gcc/te
*** 20992,20997 ****
--- 21048,21054 ----
  db9c91c24877e8deb6833879427c1c5a  gcc/testsuite/g++.dg/cpp23/explicit-obj-diagnostics7.C
  bbec4ebaa9eb25cb6f5674378a048924  gcc/testsuite/g++.dg/cpp23/explicit-obj-diagnostics8.C
  91a2adb2573597b44ca672b07479e1fd  gcc/testsuite/g++.dg/cpp23/explicit-obj-diagnostics9.C
+ 3b319517c82e6d742f914bac434e5633  gcc/testsuite/g++.dg/cpp23/explicit-obj-eval-order.C
  d794673e83c406364ada43bb3424172f  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda1.C
  63a44991fb60332c0389b38376547489  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda10.C
  0aee297638cbb960b6d7a49303a84770  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda11.C
*************** d794673e83c406364ada43bb3424172f  gcc/te
*** 20999,21005 ****
  d74bbc201fde13d804d767363c281130  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda13.C
  ad90458ad42ff08d4a1c948d0770dd89  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda14.C
  51978f30a781d2e3a3434b8d371737b6  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda15.C
! 87abca8eb660254fbf201e771eef3751  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda2.C
  e8adbb443f8b231b244ffbcd64ee7da2  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda3.C
  0a50eb80a181d4196ff68849d37d2615  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda4.C
  cb8eabd8ed2aec8d2d6ba1aa825f9307  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda5.C
--- 21056,21063 ----
  d74bbc201fde13d804d767363c281130  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda13.C
  ad90458ad42ff08d4a1c948d0770dd89  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda14.C
  51978f30a781d2e3a3434b8d371737b6  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda15.C
! 4882304f120b6e2ec91e0db6c07d5eb4  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda19.C
! 0221584b2593a7b483e89830bc37b1d7  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda2.C
  e8adbb443f8b231b244ffbcd64ee7da2  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda3.C
  0a50eb80a181d4196ff68849d37d2615  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda4.C
  cb8eabd8ed2aec8d2d6ba1aa825f9307  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda5.C
*************** e4eef3325d652767c4b83b6aed8c24b5  gcc/te
*** 21041,21047 ****
  54f4344e911f644cb2cc34417b933914  gcc/testsuite/g++.dg/cpp23/ext-floating7.C
  bc34c96001d8dfdc3193f88b494b97a1  gcc/testsuite/g++.dg/cpp23/ext-floating8.C
  235a8f3c94e9cc7e9180fe31a3d8352b  gcc/testsuite/g++.dg/cpp23/ext-floating9.C
! 41f6b84af959c52c0015d14c364d9a05  gcc/testsuite/g++.dg/cpp23/feat-cxx2b.C
  b2919427c96be25ae3a72933323c8de1  gcc/testsuite/g++.dg/cpp23/init-stmt1.C
  368308646b02bb36cf22014a0d5bbbdb  gcc/testsuite/g++.dg/cpp23/init-stmt2.C
  906bfd9572fea8013b12e8c215392381  gcc/testsuite/g++.dg/cpp23/label1.C
--- 21099,21105 ----
  54f4344e911f644cb2cc34417b933914  gcc/testsuite/g++.dg/cpp23/ext-floating7.C
  bc34c96001d8dfdc3193f88b494b97a1  gcc/testsuite/g++.dg/cpp23/ext-floating8.C
  235a8f3c94e9cc7e9180fe31a3d8352b  gcc/testsuite/g++.dg/cpp23/ext-floating9.C
! cb638f384b69db1073adfb06c1cc5942  gcc/testsuite/g++.dg/cpp23/feat-cxx2b.C
  b2919427c96be25ae3a72933323c8de1  gcc/testsuite/g++.dg/cpp23/init-stmt1.C
  368308646b02bb36cf22014a0d5bbbdb  gcc/testsuite/g++.dg/cpp23/init-stmt2.C
  906bfd9572fea8013b12e8c215392381  gcc/testsuite/g++.dg/cpp23/label1.C
*************** e6cd912bf923af3add3056c0b7235bab  gcc/te
*** 21116,21121 ****
--- 21174,21181 ----
  0c6fcbc76ec6471803e93062f104892d  gcc/testsuite/g++.dg/cpp26/decomp11.C
  d01e805b9f6fdb44547d559f5b04ea4a  gcc/testsuite/g++.dg/cpp26/decomp12.C
  70cb6b928ead9bbcb58e49f48aac09a0  gcc/testsuite/g++.dg/cpp26/decomp2.C
+ 068dc2156782fc310d9fc4cd498d213d  gcc/testsuite/g++.dg/cpp26/decomp28.C
+ 75839c098b838f1ccf72394115eaf18b  gcc/testsuite/g++.dg/cpp26/decomp29.C
  04625a49d6c21164c6f7e075e578b4d2  gcc/testsuite/g++.dg/cpp26/decomp3.C
  e0331653ca37862860617d90def1c2d9  gcc/testsuite/g++.dg/cpp26/decomp4.C
  2765a6ddd9be5099086c5f772077d8d1  gcc/testsuite/g++.dg/cpp26/decomp5.C
*************** d0519edbdf7be9b73cadd101aebf0d60  gcc/te
*** 21129,21135 ****
  63db9f67d075960d87cf10ec80c8c798  gcc/testsuite/g++.dg/cpp26/delete2.C
  fcd9d0d666c1c3882f154900cd8e57fb  gcc/testsuite/g++.dg/cpp26/delete3.C
  b835b9bb00c8b448e2ac56df5e6cae60  gcc/testsuite/g++.dg/cpp26/enum-conv1.C
! 3f483bbcb1d535aa9c7cb56cc358f2df  gcc/testsuite/g++.dg/cpp26/feat-cxx26.C
  e439504634b8fdea668e10d9fc930c63  gcc/testsuite/g++.dg/cpp26/literals1.C
  24ebebb3be412c0e507595cb8c7458f5  gcc/testsuite/g++.dg/cpp26/literals2.C
  1eebd6cbce6cabc0490fdd8bf706934d  gcc/testsuite/g++.dg/cpp26/name-independent-decl1.C
--- 21189,21195 ----
  63db9f67d075960d87cf10ec80c8c798  gcc/testsuite/g++.dg/cpp26/delete2.C
  fcd9d0d666c1c3882f154900cd8e57fb  gcc/testsuite/g++.dg/cpp26/delete3.C
  b835b9bb00c8b448e2ac56df5e6cae60  gcc/testsuite/g++.dg/cpp26/enum-conv1.C
! 6db9247119c35aa62cb162c1e62c4b18  gcc/testsuite/g++.dg/cpp26/feat-cxx26.C
  e439504634b8fdea668e10d9fc930c63  gcc/testsuite/g++.dg/cpp26/literals1.C
  24ebebb3be412c0e507595cb8c7458f5  gcc/testsuite/g++.dg/cpp26/literals2.C
  1eebd6cbce6cabc0490fdd8bf706934d  gcc/testsuite/g++.dg/cpp26/name-independent-decl1.C
*************** b0f94df77ae1f45f51ea4e2c6bb9691a  gcc/te
*** 21150,21163 ****
  2932dc127ada32f6fb144906d4c837c5  gcc/testsuite/g++.dg/cpp26/pack-indexing14.C
  42acddf57107ca62daf89ff86652698f  gcc/testsuite/g++.dg/cpp26/pack-indexing15.C
  36888ce54ce42641fb6e61af819e4031  gcc/testsuite/g++.dg/cpp26/pack-indexing16.C
! 49ef5418646a1f810ced7c9ecba2f5a9  gcc/testsuite/g++.dg/cpp26/pack-indexing2.C
  01e2e390b9329b3e619416e0bf8b3684  gcc/testsuite/g++.dg/cpp26/pack-indexing3.C
  8105a5f8078fd0ba5507cadc224b15ad  gcc/testsuite/g++.dg/cpp26/pack-indexing4.C
  e23875fe03c3518fda8adb9018cbe078  gcc/testsuite/g++.dg/cpp26/pack-indexing5.C
  3a466ff0615f64b4c569586077d58222  gcc/testsuite/g++.dg/cpp26/pack-indexing6.C
! 5c290feeedde11d0fce582fb0bb4287a  gcc/testsuite/g++.dg/cpp26/pack-indexing7.C
  a457069f7773dede2d30437b9569df74  gcc/testsuite/g++.dg/cpp26/pack-indexing8.C
! b149ac22b34abf9137a6e7f290160e13  gcc/testsuite/g++.dg/cpp26/pack-indexing9.C
  935218094ce32f7e344f11a3fd203c32  gcc/testsuite/g++.dg/cpp26/pr115754.C
  e5c8f0eb28524b5990c773f0897c9a82  gcc/testsuite/g++.dg/cpp26/raw-string1.C
  b9789190917641a7dfa95059b0d37281  gcc/testsuite/g++.dg/cpp26/raw-string2.C
--- 21210,21230 ----
  2932dc127ada32f6fb144906d4c837c5  gcc/testsuite/g++.dg/cpp26/pack-indexing14.C
  42acddf57107ca62daf89ff86652698f  gcc/testsuite/g++.dg/cpp26/pack-indexing15.C
  36888ce54ce42641fb6e61af819e4031  gcc/testsuite/g++.dg/cpp26/pack-indexing16.C
! 66ff6dfe6ddc544b4653391842e6eae8  gcc/testsuite/g++.dg/cpp26/pack-indexing17.C
! 7b55370f3253f2eae6d541ae349b6268  gcc/testsuite/g++.dg/cpp26/pack-indexing17a.C
! dec9cc8d0d460e2cc13f361418bfbd4c  gcc/testsuite/g++.dg/cpp26/pack-indexing18.C
! 4dfa54f1d3bc2ea91cd06e41813f7f63  gcc/testsuite/g++.dg/cpp26/pack-indexing19.C
! 6574f34c0039c120f1496b48a1a8b9fd  gcc/testsuite/g++.dg/cpp26/pack-indexing2.C
! c664cf1427288d79a6a92cfc2f96c43b  gcc/testsuite/g++.dg/cpp26/pack-indexing20.C
! ebb5e891dd3f1f4176f01390886a7081  gcc/testsuite/g++.dg/cpp26/pack-indexing21.C
! fdfa996c41dbc6df8d980364fab84383  gcc/testsuite/g++.dg/cpp26/pack-indexing22.C
  01e2e390b9329b3e619416e0bf8b3684  gcc/testsuite/g++.dg/cpp26/pack-indexing3.C
  8105a5f8078fd0ba5507cadc224b15ad  gcc/testsuite/g++.dg/cpp26/pack-indexing4.C
  e23875fe03c3518fda8adb9018cbe078  gcc/testsuite/g++.dg/cpp26/pack-indexing5.C
  3a466ff0615f64b4c569586077d58222  gcc/testsuite/g++.dg/cpp26/pack-indexing6.C
! a2ed31a87be635ccecaefd980d49e1c7  gcc/testsuite/g++.dg/cpp26/pack-indexing7.C
  a457069f7773dede2d30437b9569df74  gcc/testsuite/g++.dg/cpp26/pack-indexing8.C
! b1a661a36ea39986cf741c0a238ce9f0  gcc/testsuite/g++.dg/cpp26/pack-indexing9.C
  935218094ce32f7e344f11a3fd203c32  gcc/testsuite/g++.dg/cpp26/pr115754.C
  e5c8f0eb28524b5990c773f0897c9a82  gcc/testsuite/g++.dg/cpp26/raw-string1.C
  b9789190917641a7dfa95059b0d37281  gcc/testsuite/g++.dg/cpp26/raw-string2.C
*************** fbdc0e6797df6f79ec2f98e9681b3df2  gcc/te
*** 21265,21270 ****
--- 21332,21338 ----
  041d83d15cbe2f1b6faf8df5779ee617  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias24.C
  de00e6f50f8aa11ae388287d947cb6dd  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias25.C
  5ca927feee2c144f300c078175416059  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias25a.C
+ e958b2de4daf4cbee928c81f06d5dc9e  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias26.C
  b5dae7ae7594a42f65f1f8f0f17b30a8  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias3.C
  06de637acc58c0572ef2eb75419e55e3  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias4.C
  0538d499885f751447275fb21053fc26  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias5.C
*************** edb46bdf72eaeb378f5f0d557153ad9d  gcc/te
*** 21311,21316 ****
--- 21379,21386 ----
  ce0107015099b9bc8bbb6308d69d1335  gcc/testsuite/g++.dg/cpp2a/concepts-decltype2.C
  20942197b42aecb2031c455e6c7139db  gcc/testsuite/g++.dg/cpp2a/concepts-decltype3.C
  bd5315a1ae1bb7ab6b080320eca4e7cc  gcc/testsuite/g++.dg/cpp2a/concepts-decltype4.C
+ 22508583fabe144a053070d600a2f4ff  gcc/testsuite/g++.dg/cpp2a/concepts-decltype5.C
+ c2e23a46012960cb2717300e180866e4  gcc/testsuite/g++.dg/cpp2a/concepts-decltype6.C
  2ff1559b74cd8147b9de258edac783b1  gcc/testsuite/g++.dg/cpp2a/concepts-defarg1.C
  8b450b687a58857141c45425bdbf8e80  gcc/testsuite/g++.dg/cpp2a/concepts-defarg2.C
  e0a60fccd4fe206005be1e84cfb2682d  gcc/testsuite/g++.dg/cpp2a/concepts-defarg3.C
*************** f48f8abadf7267488e7fc07300b15321  gcc/te
*** 21357,21362 ****
--- 21427,21434 ----
  f2bb90a7b95f5ca56f19993dc668ce44  gcc/testsuite/g++.dg/cpp2a/concepts-friend15.C
  78691a3f17811dcdecf47f6df427a97c  gcc/testsuite/g++.dg/cpp2a/concepts-friend16.C
  7ecb03f5905c0460a20f5edf81561f98  gcc/testsuite/g++.dg/cpp2a/concepts-friend17.C
+ b192de319a3668a8a3539d1c8be790c9  gcc/testsuite/g++.dg/cpp2a/concepts-friend18.C
+ 451bfd68952d37940a8f8c9efdf8011b  gcc/testsuite/g++.dg/cpp2a/concepts-friend18a.C
  2fdb3d1a7c3f6a1361b9e8a0700d78f5  gcc/testsuite/g++.dg/cpp2a/concepts-friend2.C
  3f315ba7ac021707fcaa518bf77b73e4  gcc/testsuite/g++.dg/cpp2a/concepts-friend3.C
  ac59cd12de1286d61d74c57276a780ba  gcc/testsuite/g++.dg/cpp2a/concepts-friend4.C
*************** b48de652a269ba0411d9c971e6b06869  gcc/te
*** 21452,21457 ****
--- 21524,21530 ----
  966bf7435554a7a150aa0fb09697b04c  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder11.C
  f57d40e8c8a062ab42228a604dc8b336  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder12.C
  3d20f95d326918d497b3b309b9eda0d9  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder13.C
+ 10165b900c5003d3691cd5cf5fae858b  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder15.C
  9a1776b1d9b3c080e847b78507e8c1c6  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder2.C
  d4ce4a5306e35eff2b78390b50d6c95b  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder3.C
  e428d578c8a0c5a61ab85eddccb24071  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder4.C
*************** ebebcf3ee0f1f8f456d97ce908f36eb5  gcc/te
*** 21467,21472 ****
--- 21540,21547 ----
  d730bf14b7c6a0ff4579eb13739f7d2f  gcc/testsuite/g++.dg/cpp2a/concepts-pr108579.C
  10c26b1079f1b79e271e63ca28b96ecd  gcc/testsuite/g++.dg/cpp2a/concepts-pr112436.C
  4b3fe1ba64fb6a81fe92d55b090adf3a  gcc/testsuite/g++.dg/cpp2a/concepts-pr116681.C
+ 24814124a2638795704cea1177c1d93c  gcc/testsuite/g++.dg/cpp2a/concepts-pr122494.C
+ c3a5a8ffeaedc47bb7c475c240bce1c2  gcc/testsuite/g++.dg/cpp2a/concepts-pr123814.C
  2e23f19968091d773a47c43a32a784ae  gcc/testsuite/g++.dg/cpp2a/concepts-pr58500.C
  07c6a4dff1357ef61c0d30b12db5c948  gcc/testsuite/g++.dg/cpp2a/concepts-pr58534.C
  b6ba42db630bfd3259d65662fc03aaa0  gcc/testsuite/g++.dg/cpp2a/concepts-pr58535.C
*************** f14a1d093c6192fd601a94286a19cd55  gcc/te
*** 21560,21569 ****
  f713831318164c8a8d53cee4f41a5feb  gcc/testsuite/g++.dg/cpp2a/concepts-pr98394.C
  47d56c0b8e4b2e304785aae26d0409fb  gcc/testsuite/g++.dg/cpp2a/concepts-pr98644.C
  7bff00217f0937919ad829a2aa4986de  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat1.C
! 494a9362815e7269cd14d3b6eb900c68  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat2.C
  c74823853141d61f8e8a8e1d3a3f8bd4  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat3.C
  333e80767f9ac98151ff6ec608cef8ab  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat4.C
! a5dcc7f1104645e397389de9dc3d2362  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat5.C
  05d0c4aeef396d36ed2d0d824682b06c  gcc/testsuite/g++.dg/cpp2a/concepts-redecl1.C
  89a75de6ffea2b5931b15021369b2a4e  gcc/testsuite/g++.dg/cpp2a/concepts-requires1.C
  2a75164ac4ebdba51dd415fcd578a8f9  gcc/testsuite/g++.dg/cpp2a/concepts-requires10.C
--- 21635,21644 ----
  f713831318164c8a8d53cee4f41a5feb  gcc/testsuite/g++.dg/cpp2a/concepts-pr98394.C
  47d56c0b8e4b2e304785aae26d0409fb  gcc/testsuite/g++.dg/cpp2a/concepts-pr98644.C
  7bff00217f0937919ad829a2aa4986de  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat1.C
! b0679a6958bd99749db8630269b69a2c  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat2.C
  c74823853141d61f8e8a8e1d3a3f8bd4  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat3.C
  333e80767f9ac98151ff6ec608cef8ab  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat4.C
! 068f4770bb6848b516017a203e505522  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat5.C
  05d0c4aeef396d36ed2d0d824682b06c  gcc/testsuite/g++.dg/cpp2a/concepts-redecl1.C
  89a75de6ffea2b5931b15021369b2a4e  gcc/testsuite/g++.dg/cpp2a/concepts-requires1.C
  2a75164ac4ebdba51dd415fcd578a8f9  gcc/testsuite/g++.dg/cpp2a/concepts-requires10.C
*************** b06aea4ef34a1015ed525413558ddac0  gcc/te
*** 21646,21651 ****
--- 21721,21729 ----
  a95dbf28241ffec87fb48912ed83e629  gcc/testsuite/g++.dg/cpp2a/concepts-using2.C
  8d75a7bd1dff1e92992b77d66deb889b  gcc/testsuite/g++.dg/cpp2a/concepts-using3.C
  1c0b6956abb6cc9d451cbad9763665e0  gcc/testsuite/g++.dg/cpp2a/concepts-using4.C
+ 10200cb73b1bb6443f53044708cc6c85  gcc/testsuite/g++.dg/cpp2a/concepts-using5.C
+ d413557ac25b939174ec565ccf9ef3a8  gcc/testsuite/g++.dg/cpp2a/concepts-using5a.C
+ 7e0d58ca005c696397e1e709ae4d04ac  gcc/testsuite/g++.dg/cpp2a/concepts-using7.C
  eb51a2e88a343491b3a0676b4ff623cf  gcc/testsuite/g++.dg/cpp2a/concepts-var-templ1.C
  c344a88e2fb58ca9d19beb62602dabc5  gcc/testsuite/g++.dg/cpp2a/concepts-var-templ1a.C
  d29bcca633bb639bebf16b846292cebc  gcc/testsuite/g++.dg/cpp2a/concepts-var-templ1b.C
*************** ec9f0efa4770d04a1dea842b64f19c44  gcc/te
*** 21733,21738 ****
--- 21811,21817 ----
  2d6205fea644048201c44086df527c3a  gcc/testsuite/g++.dg/cpp2a/consteval4.C
  34ecadb8994bf3d4c005295e95f6f53d  gcc/testsuite/g++.dg/cpp2a/consteval40.C
  09d61acf831f6fd33b3695f66ce79b1e  gcc/testsuite/g++.dg/cpp2a/consteval41.C
+ 25cda58432ffe21cd15da667f5edfb8d  gcc/testsuite/g++.dg/cpp2a/consteval42.C
  e71633ec506016932dc09c057d98c36c  gcc/testsuite/g++.dg/cpp2a/consteval5.C
  f8b2a0016c59d132f059d57a7638806f  gcc/testsuite/g++.dg/cpp2a/consteval6.C
  6517514915e5a24d0ee38257c46994cc  gcc/testsuite/g++.dg/cpp2a/consteval7.C
*************** b5f4f9a8f5933754f321648f67e54dac  gcc/te
*** 21771,21776 ****
--- 21850,21857 ----
  1a30baf82f09866d37d6e96a76379f47  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic16.C
  b64753c380df7428569f8befeb1510e8  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic17.C
  8fe226b0e900985b1f76643e8aaf737b  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic18.C
+ ba2b3d3cd6f23028bc237ee7025256fb  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic19.C
+ dd98bfd651ed53723db105ea6def894e  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic1a.C
  6a856dd4720aaf5ca7ba6e7422f849a9  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic2.C
  6ddf97a1878f89c02ca0c76de5f0f08f  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic3.C
  28c0eaf9ba35a479b5d50ddb90e7dc07  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic4.C
*************** d29f558af48deff313645aecd90adb8d  gcc/te
*** 21837,21845 ****
  7ab8f2bb925385f3c907d1d36a81ac9b  gcc/testsuite/g++.dg/cpp2a/constexpr-prvalue2.C
  081a94c39fa972dab2d9f8590e087bc6  gcc/testsuite/g++.dg/cpp2a/constexpr-ref1.C
  fe2e298a3cf2e9094a79a25a4ffd8fc2  gcc/testsuite/g++.dg/cpp2a/constexpr-shift1.C
! 1d1e610556de3295af12cf17177f42b7  gcc/testsuite/g++.dg/cpp2a/constexpr-try1.C
! 27ac7e1957f04ea6ee6160a7f7c14ecc  gcc/testsuite/g++.dg/cpp2a/constexpr-try2.C
! c169c0f663257a769b1da0d94c0c7307  gcc/testsuite/g++.dg/cpp2a/constexpr-try3.C
  d74e93a21b21eb22ce0742e9b6bbb923  gcc/testsuite/g++.dg/cpp2a/constexpr-try4.C
  02c2a396d7fac0a627ada9a52c486da3  gcc/testsuite/g++.dg/cpp2a/constexpr-try5.C
  e8575fbcf5a3e212ea28a4b89fbf8253  gcc/testsuite/g++.dg/cpp2a/constexpr-typeid1.C
--- 21918,21926 ----
  7ab8f2bb925385f3c907d1d36a81ac9b  gcc/testsuite/g++.dg/cpp2a/constexpr-prvalue2.C
  081a94c39fa972dab2d9f8590e087bc6  gcc/testsuite/g++.dg/cpp2a/constexpr-ref1.C
  fe2e298a3cf2e9094a79a25a4ffd8fc2  gcc/testsuite/g++.dg/cpp2a/constexpr-shift1.C
! 1f5b8000b29315ba3af28b7bd9f18540  gcc/testsuite/g++.dg/cpp2a/constexpr-try1.C
! 998420d0a57cce98957e79abdb9865d3  gcc/testsuite/g++.dg/cpp2a/constexpr-try2.C
! 7735fb04b9642ba24ab00207340cff41  gcc/testsuite/g++.dg/cpp2a/constexpr-try3.C
  d74e93a21b21eb22ce0742e9b6bbb923  gcc/testsuite/g++.dg/cpp2a/constexpr-try4.C
  02c2a396d7fac0a627ada9a52c486da3  gcc/testsuite/g++.dg/cpp2a/constexpr-try5.C
  e8575fbcf5a3e212ea28a4b89fbf8253  gcc/testsuite/g++.dg/cpp2a/constexpr-typeid1.C
*************** fc1805f7c9ae0e0d70715f21f1ab1323  gcc/te
*** 22080,22085 ****
--- 22161,22173 ----
  7b82b863c8a6f3c30784d618a2e3c535  gcc/testsuite/g++.dg/cpp2a/lambda-targ14.C
  8c0cfd54130aa654e2e50e1925316cab  gcc/testsuite/g++.dg/cpp2a/lambda-targ15.C
  d363d5590bc863dbb1f6bb96bad95b3c  gcc/testsuite/g++.dg/cpp2a/lambda-targ2.C
+ 4a6ffc2b771825c108a429a4faf02bcc  gcc/testsuite/g++.dg/cpp2a/lambda-targ20.C
+ e20c87111262a5e61bd6b3d5b3c21beb  gcc/testsuite/g++.dg/cpp2a/lambda-targ21.C
+ cf4951735fc79d21719a1d9d147e601f  gcc/testsuite/g++.dg/cpp2a/lambda-targ22.C
+ cda34ab516f0f3b749efab4ba8f525af  gcc/testsuite/g++.dg/cpp2a/lambda-targ22a.C
+ c9c401dee234950a35f6baa7697a4559  gcc/testsuite/g++.dg/cpp2a/lambda-targ23.C
+ 5891843d160f32e907903a257a0ac85a  gcc/testsuite/g++.dg/cpp2a/lambda-targ24.C
+ 2974766b277ea1141793386ea16ee705  gcc/testsuite/g++.dg/cpp2a/lambda-targ24a.C
  d948ecca981f7c5de5ca48afc987ea36  gcc/testsuite/g++.dg/cpp2a/lambda-targ2a.C
  096118fef57f992a05319e3b6f8ba6a7  gcc/testsuite/g++.dg/cpp2a/lambda-targ3.C
  21c4749dcabd9a286db03db935f9cd86  gcc/testsuite/g++.dg/cpp2a/lambda-targ4.C
*************** c09b3406a6984eced941c654f03df8b6  gcc/te
*** 22096,22102 ****
  7b52674a2e7474eb9db1b1396088d25a  gcc/testsuite/g++.dg/cpp2a/lambda-uneval11.C
  192206513f337817843dc6ba46bc0aab  gcc/testsuite/g++.dg/cpp2a/lambda-uneval12.C
  c79632f5b81fdadda65a61ca549d97f6  gcc/testsuite/g++.dg/cpp2a/lambda-uneval13.C
! 467e186d5def67de47b9fdac7558fede  gcc/testsuite/g++.dg/cpp2a/lambda-uneval14.C
  53c7dceb19a2ce9e52327177ea4fc212  gcc/testsuite/g++.dg/cpp2a/lambda-uneval15.C
  39a9dd88b9fa47a34b758e6abf328a7a  gcc/testsuite/g++.dg/cpp2a/lambda-uneval16.C
  e1f6714196bc4cc815de786f8301141d  gcc/testsuite/g++.dg/cpp2a/lambda-uneval17.C
--- 22184,22190 ----
  7b52674a2e7474eb9db1b1396088d25a  gcc/testsuite/g++.dg/cpp2a/lambda-uneval11.C
  192206513f337817843dc6ba46bc0aab  gcc/testsuite/g++.dg/cpp2a/lambda-uneval12.C
  c79632f5b81fdadda65a61ca549d97f6  gcc/testsuite/g++.dg/cpp2a/lambda-uneval13.C
! cc2487e7e3bd3a6792c3571765fb9e4b  gcc/testsuite/g++.dg/cpp2a/lambda-uneval14.C
  53c7dceb19a2ce9e52327177ea4fc212  gcc/testsuite/g++.dg/cpp2a/lambda-uneval15.C
  39a9dd88b9fa47a34b758e6abf328a7a  gcc/testsuite/g++.dg/cpp2a/lambda-uneval16.C
  e1f6714196bc4cc815de786f8301141d  gcc/testsuite/g++.dg/cpp2a/lambda-uneval17.C
*************** e99d0c361f9eaa55d53c9232f30b64cf  gcc/te
*** 22111,22116 ****
--- 22199,22205 ----
  c19bd936418c3099cfc71829fa23606a  gcc/testsuite/g++.dg/cpp2a/lambda-uneval25.C
  e59f63d278e1f049c181594746f34930  gcc/testsuite/g++.dg/cpp2a/lambda-uneval26.C
  7bb4a9851f98debfb5698f0c4a582baa  gcc/testsuite/g++.dg/cpp2a/lambda-uneval27.C
+ c3d9ded980076b7db82a63c086636931  gcc/testsuite/g++.dg/cpp2a/lambda-uneval29.C
  95297857429ac8850dbeb5773639ea6b  gcc/testsuite/g++.dg/cpp2a/lambda-uneval3.C
  2f7bd1774e5f890e65ee937419a29669  gcc/testsuite/g++.dg/cpp2a/lambda-uneval4.C
  8e6b610dd3dab06841943bfa5f325489  gcc/testsuite/g++.dg/cpp2a/lambda-uneval5.C
*************** fc8ccbfe7f14dd4a41ff708c5a05b226  gcc/te
*** 22280,22285 ****
--- 22369,22375 ----
  475c14632e683c843d48238b8c5514f2  gcc/testsuite/g++.dg/cpp2a/pr114426.C
  9d5c0df7ab0b6e3e5ab03bc8eb135452  gcc/testsuite/g++.dg/cpp2a/pr117317-1.C
  4b52a1949fed25dc03d5cfb83047e7c5  gcc/testsuite/g++.dg/cpp2a/pr117317-2.C
+ 938acbb8068f7a8fc2c3f43271324ef4  gcc/testsuite/g++.dg/cpp2a/pr123578.C
  7d1c1719a1c3e44cf69662819769f8a5  gcc/testsuite/g++.dg/cpp2a/pr88534.C
  3a4139bbe15eef2dce96cb020b2681f7  gcc/testsuite/g++.dg/cpp2a/pr88537.C
  b94ce4741edeca1190c4590e425522dc  gcc/testsuite/g++.dg/cpp2a/pr89913.C
*************** c805656a195d9a98cc7141e7db52d9ef  gcc/te
*** 22647,22652 ****
--- 22737,22743 ----
  57e21034689a45ffd010ec86b2596de5  gcc/testsuite/g++.dg/debug/pr106261.C
  19de4ef7373a891f957af0121c166d89  gcc/testsuite/g++.dg/debug/pr108967.C
  553e3d84e73e0efbd2c26b6ea6df2a6c  gcc/testsuite/g++.dg/debug/pr110295.C
+ 3976ffaa5281e386a32261afc9ccfd2b  gcc/testsuite/g++.dg/debug/pr124644.C
  fcdc9d29f34ff56d1b7de0d55a1eaed7  gcc/testsuite/g++.dg/debug/pr15736.C
  d25b84553c2083b28615202497b8f94a  gcc/testsuite/g++.dg/debug/pr16792.C
  91880dfb66fda0db4ddabf486346b755  gcc/testsuite/g++.dg/debug/pr22514.C
*************** becc0e6f064af285a504ff10eaffc525  gcc/te
*** 22725,22730 ****
--- 22816,22823 ----
  204f6d67816240aa15bfa5d9320862f5  gcc/testsuite/g++.dg/dfp/mangle-6.C
  8b4d16a77a1edab85ee4c99fda03eb79  gcc/testsuite/g++.dg/dfp/mangle-mode.C
  3a865b01c504023d0b90b1f055163c6a  gcc/testsuite/g++.dg/dfp/nofields.C
+ fd0549fb3825f83ce2ac884838fe2187  gcc/testsuite/g++.dg/dfp/pr122834-1.C
+ 87b1932d8497bd7b8b41f36fb0c23208  gcc/testsuite/g++.dg/dfp/pr122834-2.C
  919ff80bde2b401e1cf10423071bab16  gcc/testsuite/g++.dg/dfp/pr92744.C
  cd0133a632a541db051ef84d53754ac6  gcc/testsuite/g++.dg/dfp/typeid1.C
  d7b10c41bed5782388e3e624407cba5c  gcc/testsuite/g++.dg/dg.exp
*************** faa8333681bedde3ba84daa60ec26ff8  gcc/te
*** 23945,23950 ****
--- 24038,24044 ----
  98638e9fa0777943851858264e4df050  gcc/testsuite/g++.dg/ext/rank.C
  bce41fa775f2176271e957652f0edf69  gcc/testsuite/g++.dg/ext/reference_constructs_from_temporary1.C
  95d105b089ea555ab8e1c29ce9e1f667  gcc/testsuite/g++.dg/ext/reference_converts_from_temporary1.C
+ 0763fce1484e78d744fc7b1372ae9195  gcc/testsuite/g++.dg/ext/reference_xes_from_temporary1.C
  5c1bae2a1fbdc59653647bbd49eb336f  gcc/testsuite/g++.dg/ext/remove_all_extents.C
  01789f18bffef5bcf261727b48fc9bb5  gcc/testsuite/g++.dg/ext/remove_cv.C
  9d092236f17635c7e6d0abe935fd348f  gcc/testsuite/g++.dg/ext/remove_cvref.C
*************** a8cfc657234f5f421b289d2fa6196965  gcc/te
*** 24551,24556 ****
--- 24645,24652 ----
  ed2fe9b487c91fe33d6cccf142fa243c  gcc/testsuite/g++.dg/gomp/pr111274.C
  26a3372fea4c1feb18b0081e1b3f169f  gcc/testsuite/g++.dg/gomp/pr118876.C
  d03592521d487e264b0b5e3ef6f3dfb8  gcc/testsuite/g++.dg/gomp/pr119370.C
+ 996def323ebaae8304a543404625c64a  gcc/testsuite/g++.dg/gomp/pr121977.C
+ b30c571b03f08db4a17f3299d04b20fa  gcc/testsuite/g++.dg/gomp/pr123597.C
  539bba6df5330b7a6631eca5665a0899  gcc/testsuite/g++.dg/gomp/pr24849.C
  78ea34fd7a1a2767f61a703271e7070a  gcc/testsuite/g++.dg/gomp/pr25874.C
  93a85a09acfdf011a86ff95fc9184a94  gcc/testsuite/g++.dg/gomp/pr25996.C
*************** ecfa94e705bc436ad699767b1e4c929e  gcc/te
*** 25374,25379 ****
--- 25470,25476 ----
  55ee7bff7cc115f42266bd1d62dda46b  gcc/testsuite/g++.dg/ipa/pr100413.C
  901698e6dabf29dd6ced031811fcf59e  gcc/testsuite/g++.dg/ipa/pr103099.C
  f2ff4523ab9758b8e447b088ac708879  gcc/testsuite/g++.dg/ipa/pr106258.C
+ 4b93844d472e68bdcc050f5ef8ce7079  gcc/testsuite/g++.dg/ipa/pr106260.C
  c43cd4a90674d630795e0323738e0460  gcc/testsuite/g++.dg/ipa/pr107661.C
  7d63c0342d026b9ee4f2ecb03364cefe  gcc/testsuite/g++.dg/ipa/pr108110.C
  9a257f3564fd42fe9d7e00c5567f89d2  gcc/testsuite/g++.dg/ipa/pr108509.C
*************** e66c84f48f938ed2bb548ce51957afce  gcc/te
*** 25384,25389 ****
--- 25481,25487 ----
  d248bf5deb963f7dfbec9babb6fb70df  gcc/testsuite/g++.dg/ipa/pr116572.C
  9183db2978d574bc26d43a0d942ec920  gcc/testsuite/g++.dg/ipa/pr118243.C
  6cd3566146c3d805aaa4fc95d93401c3  gcc/testsuite/g++.dg/ipa/pr120146.C
+ 2e880749089a9c6febba9ae1fa0de490  gcc/testsuite/g++.dg/ipa/pr122856.C
  02f3704c0511b2d171c55dbf09c64325  gcc/testsuite/g++.dg/ipa/pr43695.C
  5345293723ad062b59b168c319738e1e  gcc/testsuite/g++.dg/ipa/pr43812.C
  b001cbe3dfdeb7d2a1061f024aa08ea4  gcc/testsuite/g++.dg/ipa/pr44372.C
*************** f1d9eed0025353353019a54838c87ed9  gcc/te
*** 26044,26049 ****
--- 26142,26149 ----
  170fab8219ca5d2db78f5026f9bf82c8  gcc/testsuite/g++.dg/lto/pr119067_0.C
  c2fbc4281a4940f3ba50c956b391e55a  gcc/testsuite/g++.dg/lto/pr119067_1.C
  f8d194a431c9313cc0e794b5fcc15ac6  gcc/testsuite/g++.dg/lto/pr119614_0.C
+ fca1ecf794ece1959ac2707634e0c851  gcc/testsuite/g++.dg/lto/pr121831_0.C
+ 1e3973e8017bb39e0770b6c9334d9d09  gcc/testsuite/g++.dg/lto/pr121831_1.C
  ba9b686c163762488051ec4094a838b2  gcc/testsuite/g++.dg/lto/pr40818_0.C
  08a786b250f802e56e458c7d60a358fc  gcc/testsuite/g++.dg/lto/pr42987_0.C
  1b56fef803fe85ec97121919ad3ba2b9  gcc/testsuite/g++.dg/lto/pr42987_1.C
*************** cbee807af28f014c203c54ab80ff50a2  gcc/te
*** 26086,26092 ****
  eb989cca62b61ae260c43eec2e863f53  gcc/testsuite/g++.dg/lto/pr60150_1.C
  4545a0f5287e3787b44c5f09c746b2c5  gcc/testsuite/g++.dg/lto/pr60336_0.C
  539839d2d7b449fce8fb3b3226460f52  gcc/testsuite/g++.dg/lto/pr60567_0.C
! b0b88b6e1ea73332e8af7ec97db10850  gcc/testsuite/g++.dg/lto/pr62026_0.C
  c3c4967cb8c2c452928945c0ccd6989d  gcc/testsuite/g++.dg/lto/pr63166_0.ii
  0b63c925f1273abcd9e9c38bcd437701  gcc/testsuite/g++.dg/lto/pr63166_1.ii
  55437e8d287eedf3fff9dd4b6ab2781a  gcc/testsuite/g++.dg/lto/pr63270.h
--- 26186,26192 ----
  eb989cca62b61ae260c43eec2e863f53  gcc/testsuite/g++.dg/lto/pr60150_1.C
  4545a0f5287e3787b44c5f09c746b2c5  gcc/testsuite/g++.dg/lto/pr60336_0.C
  539839d2d7b449fce8fb3b3226460f52  gcc/testsuite/g++.dg/lto/pr60567_0.C
! d83b76394d1651189b5ec0a02fe0bd15  gcc/testsuite/g++.dg/lto/pr62026_0.C
  c3c4967cb8c2c452928945c0ccd6989d  gcc/testsuite/g++.dg/lto/pr63166_0.ii
  0b63c925f1273abcd9e9c38bcd437701  gcc/testsuite/g++.dg/lto/pr63166_1.ii
  55437e8d287eedf3fff9dd4b6ab2781a  gcc/testsuite/g++.dg/lto/pr63270.h
*************** a8636939c5d030916bbdc239d5e9e9a3  gcc/te
*** 26272,26277 ****
--- 26372,26379 ----
  040be8991ebd5f345ea015fd8710afd5  gcc/testsuite/g++.dg/modules/auto-5_c.C
  b68df902c6a54181691939a43b2744d7  gcc/testsuite/g++.dg/modules/auto-6_a.H
  427dcd6424cdaf1a044b4b2d5267cbf7  gcc/testsuite/g++.dg/modules/auto-6_b.C
+ 9a7f1ce87583e6e392c76f4f6b195369  gcc/testsuite/g++.dg/modules/auto-8_a.H
+ 572d615e2c38b83d9a12eb7f97ed3dd6  gcc/testsuite/g++.dg/modules/auto-8_b.C
  53bbe2f7c4d5079131e5a6dea8da20db  gcc/testsuite/g++.dg/modules/bad-mapper-1.C
  429207e0eb777b4a43a566e8777f6503  gcc/testsuite/g++.dg/modules/bad-mapper-2.C
  457c206081cc6757683b25dc791287cd  gcc/testsuite/g++.dg/modules/bad-mapper-3.C
*************** c93b823398a766831d77299480881f8c  gcc/te
*** 26300,26305 ****
--- 26402,26409 ----
  c6cd935c87d3011588860690f34dcffa  gcc/testsuite/g++.dg/modules/bool-1_c.C
  67226a0f8fb18f2758255a7e268f26e1  gcc/testsuite/g++.dg/modules/bug-1_a.C
  88cddc44441b25d3b40a26a97bbb9459  gcc/testsuite/g++.dg/modules/bug-1_b.C
+ 98145ded42c55e56ff47a40bc69c8e15  gcc/testsuite/g++.dg/modules/builtin-10_a.C
+ fe8e60bc1bfdf56a0d11c2d420f2bcbf  gcc/testsuite/g++.dg/modules/builtin-10_b.C
  55f76fb62baa0263bb591fd5ac620cfb  gcc/testsuite/g++.dg/modules/builtin-1_a.C
  236c48837d220069251a3abe2784e304  gcc/testsuite/g++.dg/modules/builtin-1_b.C
  140e231775a8971dedf71fa2312c672e  gcc/testsuite/g++.dg/modules/builtin-2.C
*************** a7ee3a8d76bc139c4cf52d3492a2aff4  gcc/te
*** 26368,26373 ****
--- 26472,26479 ----
  2006efa004cac463749325d18b100fdd  gcc/testsuite/g++.dg/modules/concept-10_b.C
  c2514fb24a7f14f1f1edfc9217a858f2  gcc/testsuite/g++.dg/modules/concept-11_a.H
  191fb7c05c060bb53585c0c88c5bc056  gcc/testsuite/g++.dg/modules/concept-11_b.C
+ fadd6aa13f0173dad29bb90adc5338e0  gcc/testsuite/g++.dg/modules/concept-12_a.C
+ d84e92fe8fd291fd530a78ba8b49f463  gcc/testsuite/g++.dg/modules/concept-12_b.C
  b82e625ae44f653d9caf5a917ed2565a  gcc/testsuite/g++.dg/modules/concept-1_a.C
  2ae2870ddbfb381e60200518e1e9b824  gcc/testsuite/g++.dg/modules/concept-1_b.C
  6bc1b6fc0acb09251969b0d3737c9f40  gcc/testsuite/g++.dg/modules/concept-2_a.C
*************** fae22c7cff0bae185284077ff2e72523  gcc/te
*** 26410,26415 ****
--- 26516,26523 ----
  0a66e0a40527f0507cceaeb322c91a15  gcc/testsuite/g++.dg/modules/contracts-tpl-friend-1_b.C
  097ffafa56bf8b6bcbb8f85c58b0e187  gcc/testsuite/g++.dg/modules/convop-1_a.C
  02940f3eec05ab2c1e44ea29d72255b6  gcc/testsuite/g++.dg/modules/convop-1_b.C
+ f9fb2c7fc295df949a65ad17e27cbfe7  gcc/testsuite/g++.dg/modules/convop-2_a.H
+ f9153a236ec996492630837403e73485  gcc/testsuite/g++.dg/modules/convop-2_b.C
  ac21ba6dd7a4b896ded96e6d9d998074  gcc/testsuite/g++.dg/modules/cpp-1.C
  3bb7a96e17349f006fdc91b7d33ece61  gcc/testsuite/g++.dg/modules/cpp-10.C
  2d36bf18c705bff96fbeefdaf66de03e  gcc/testsuite/g++.dg/modules/cpp-11.C
*************** d35c4ba42a40c90525ba6fdc0e2639be  gcc/te
*** 26422,26427 ****
--- 26530,26537 ----
  4eba97bb9fb87086def101e7b749a77b  gcc/testsuite/g++.dg/modules/cpp-18.C
  c0ef2b8d52cd62eb091cd6a8355a3f55  gcc/testsuite/g++.dg/modules/cpp-19.C
  d3b0a55e79b15e865f383cb22a8e75f3  gcc/testsuite/g++.dg/modules/cpp-20.C
+ eca303993798718fc515fd54bb62d96e  gcc/testsuite/g++.dg/modules/cpp-21.C
+ 7b2d478b271e3d3ac206d81d2418ad36  gcc/testsuite/g++.dg/modules/cpp-22.C
  7df70a1a3701f4e80b19b9464ac25c08  gcc/testsuite/g++.dg/modules/cpp-2_a.H
  783ab638033bc17058b529268c3f6d93  gcc/testsuite/g++.dg/modules/cpp-2_b.H
  e1048ef57be07983f84fafa8dc76318c  gcc/testsuite/g++.dg/modules/cpp-2_c.C
*************** c46255bb51de7ad96b62c94e9c472cb4  gcc/te
*** 26579,26584 ****
--- 26689,26695 ----
  c60ce9cb77aee4deb3090704e1db970f  gcc/testsuite/g++.dg/modules/export-5_a.C
  475cd1f0fba2791b43a510dd62919021  gcc/testsuite/g++.dg/modules/export-5_b.C
  301c08d49a4d86740c0af5dc3a234f66  gcc/testsuite/g++.dg/modules/export-6.C
+ d629c3101bb6dd6c09df3fcd36e2121a  gcc/testsuite/g++.dg/modules/export-7.C
  72f93a05f3b46d53e36617fe0e02c955  gcc/testsuite/g++.dg/modules/extern-tpl-1_a.H
  3315098b4e8445874ea0c80fd4fb9568  gcc/testsuite/g++.dg/modules/extern-tpl-1_b.C
  af71a71f12f25f2b3cb5a86a955b562b  gcc/testsuite/g++.dg/modules/extern-tpl-1_c.C
*************** c1a2a3390492a95192a3736b25423528  gcc/te
*** 26674,26679 ****
--- 26785,26796 ----
  8a574d4894596714f7d0497433a93ebe  gcc/testsuite/g++.dg/modules/imp-member-2_b.C
  7c358b73d07322ea12822262e4d376a7  gcc/testsuite/g++.dg/modules/imp-member-2_c.C
  09b2e78c7082c3c6f91d5c66b21e9f2b  gcc/testsuite/g++.dg/modules/imp-member-3.H
+ 31c69886ec946d62cf0667dbcbdc7e4f  gcc/testsuite/g++.dg/modules/imp-member-4_a.C
+ f27466c6fc70ce46e080f3b2c7fb7050  gcc/testsuite/g++.dg/modules/imp-member-4_b.C
+ a191f79da591f001f65a3282e2d9da6e  gcc/testsuite/g++.dg/modules/imp-member-4_c.C
+ cc4377d64aa450d22e3845ae90b5bca9  gcc/testsuite/g++.dg/modules/imp-member-5_a.C
+ e3449d3f559db7103b7862066f6b2a5a  gcc/testsuite/g++.dg/modules/imp-member-5_b.C
+ fca6376f7a6015f262933d16975d3636  gcc/testsuite/g++.dg/modules/imp-member-5_c.C
  1f7d51f903fe6c300810c1d8d856401e  gcc/testsuite/g++.dg/modules/import-1_a.C
  cd504ebaf4fc289e921acc9934ead55f  gcc/testsuite/g++.dg/modules/import-1_b.C
  7dc13fb6d933fb23dc0f7251fa928bde  gcc/testsuite/g++.dg/modules/import-1_c.C
*************** c8f6159c50d59c6586f5797b42391c86  gcc/te
*** 26739,26744 ****
--- 26856,26865 ----
  1e129f71b6c51e2bb4325ececab6e9d0  gcc/testsuite/g++.dg/modules/inst-4_b.C
  9c1e5aa4fca91a8158a8ba8a5acab036  gcc/testsuite/g++.dg/modules/inst-5_a.H
  45ff01b5a1d0276885e30fb3445f5ed3  gcc/testsuite/g++.dg/modules/inst-5_b.C
+ 60bae6f4a7bfe8ecf40c92bc84aa9a4f  gcc/testsuite/g++.dg/modules/inst-6_a.C
+ 78bafa91ce71486fc147f8fef051956f  gcc/testsuite/g++.dg/modules/inst-6_b.C
+ 45f2bcdae473c2a99d7a5de022749d34  gcc/testsuite/g++.dg/modules/inst-7_a.C
+ 2b141f9dc25a6cb3cfca4a8e6b99e23d  gcc/testsuite/g++.dg/modules/inst-7_b.C
  a345a5bfe397e84c45d084024a9acbf2  gcc/testsuite/g++.dg/modules/internal-1.C
  e6b16a33fb2c85abf4f99ad0d5ad33bb  gcc/testsuite/g++.dg/modules/internal-10.C
  8fe7459b1e2ebdf33715cdab3dbafaf9  gcc/testsuite/g++.dg/modules/internal-11.C
*************** c087af9321ac0e24731d2a4d1bb3e319  gcc/te
*** 26748,26753 ****
--- 26869,26875 ----
  4fffea4cdfd477df735c06f198229d8f  gcc/testsuite/g++.dg/modules/internal-14_a.C
  10a79d90c63564fa8794a477cbcaed50  gcc/testsuite/g++.dg/modules/internal-14_b.C
  f3dc43a1a76c9644a2c2a98b1094e62a  gcc/testsuite/g++.dg/modules/internal-14_c.C
+ 88ee381d96387e16394444459f265bfd  gcc/testsuite/g++.dg/modules/internal-16.C
  c66d17d0fb2dc80371978510d0cc1f0f  gcc/testsuite/g++.dg/modules/internal-2_a.H
  21bb55995bb6fa8ed6a8fa69368f7f36  gcc/testsuite/g++.dg/modules/internal-2_b.H
  ba3bc4f8f333742fb78f03db052c4ffa  gcc/testsuite/g++.dg/modules/internal-2_c.C
*************** d78c1de0f7d9cac90e50c0208adc2926  gcc/te
*** 26769,26774 ****
--- 26891,26902 ----
  37de4dbdbe8e0e57b0f65d374829f234  gcc/testsuite/g++.dg/modules/keyword-1_b.C
  827c75baa7a6aa915ca300a3b69c2249  gcc/testsuite/g++.dg/modules/lambda-10_a.H
  19a555ec51a2362dce69d5e03c7b04a9  gcc/testsuite/g++.dg/modules/lambda-10_b.C
+ 62e7f6f61022bc772dcc984ba06b0b3e  gcc/testsuite/g++.dg/modules/lambda-11.h
+ 8c9596d790271d8547290c1515a3350b  gcc/testsuite/g++.dg/modules/lambda-11_a.H
+ 967c2f48b085f1c18832266697fac4ee  gcc/testsuite/g++.dg/modules/lambda-11_b.C
+ 804382f5b6a9cda1fca29fc8024f66a4  gcc/testsuite/g++.dg/modules/lambda-12.h
+ f42f3f252e14bfc0ef3c1e93ea73a06d  gcc/testsuite/g++.dg/modules/lambda-12_a.H
+ 92f393f2dacc1d0ca3a6c8c35172d4a5  gcc/testsuite/g++.dg/modules/lambda-12_b.C
  d40eb3b191ce03c71ec885f4126c9c01  gcc/testsuite/g++.dg/modules/lambda-1_a.C
  0c208993fd82c4dab83fb16f53f43099  gcc/testsuite/g++.dg/modules/lambda-1_b.C
  0b364ead1b387b5505e2f7bf2e5dc3b5  gcc/testsuite/g++.dg/modules/lambda-2.h
*************** e3f1bd8fef51acc6ca737521f975ab1c  gcc/te
*** 26804,26809 ****
--- 26932,26939 ----
  f691889108c3ab41c26b216899719992  gcc/testsuite/g++.dg/modules/lang-3_a.C
  29a3330000780d86555efc7480e1ea5b  gcc/testsuite/g++.dg/modules/lang-3_b.C
  7a61baf64b6b2df1f68f1344f599ce44  gcc/testsuite/g++.dg/modules/lang-3_c.C
+ f028acee4ae7cfe2d00c7bbae3a12adb  gcc/testsuite/g++.dg/modules/lang-4_a.C
+ 85f6fdb774d151ded1f900d5b64a83c4  gcc/testsuite/g++.dg/modules/lang-4_b.C
  f9e6b80b1e66a7547173ff7f3f39a78a  gcc/testsuite/g++.dg/modules/late-ret-1.H
  c363febb29cf4d3eccc01979daac4c46  gcc/testsuite/g++.dg/modules/late-ret-2_a.H
  9f2ead4d0b90ea087689b20fd95f201f  gcc/testsuite/g++.dg/modules/late-ret-2_b.H
*************** ad4492ce734ab625ca31a8dcc2cfe939  gcc/te
*** 26813,26818 ****
--- 26943,26951 ----
  276da43d466a2829c1bdbe61d568e6cc  gcc/testsuite/g++.dg/modules/late-ret-3_c.C
  c5775cba25f4ad0346ebb8c37187fb17  gcc/testsuite/g++.dg/modules/late-ret-4_a.H
  58a30a7fa14cc33fd5e58e740b7a646d  gcc/testsuite/g++.dg/modules/late-ret-4_b.C
+ 540a7794ac65049e5e060f5f388c645b  gcc/testsuite/g++.dg/modules/late-ret-5.h
+ 9546e757881037efb96360ffd0010275  gcc/testsuite/g++.dg/modules/late-ret-5_a.H
+ d49297c2f37e3449a56153f151e162f3  gcc/testsuite/g++.dg/modules/late-ret-5_b.C
  739350acfa3eb5d0429706893705d31b  gcc/testsuite/g++.dg/modules/lazy-1_a.C
  874867dd9f2863a33cff5a80f9a8c6fa  gcc/testsuite/g++.dg/modules/lazy-1_b.C
  5ad3883c603e1646226b91fad2ac09e3  gcc/testsuite/g++.dg/modules/leg-merge-1_a.H
*************** eea88cc62cf091daa90c9da3714651e9  gcc/te
*** 26995,27000 ****
--- 27128,27137 ----
  42f128106dcccfb827c0d63b8aa87a9b  gcc/testsuite/g++.dg/modules/merge-19_b.C
  c55f90e5ef6f7ab3992f6606da04c6d7  gcc/testsuite/g++.dg/modules/merge-1_a.C
  8dfdc3716d1dda6833ec359936a84a2c  gcc/testsuite/g++.dg/modules/merge-1_b.C
+ be8c261cfa813b26cb16b8b3aebaf9ec  gcc/testsuite/g++.dg/modules/merge-21_a.C
+ 7cd3f2e8de05b1dd669c3ff993d03b3a  gcc/testsuite/g++.dg/modules/merge-21_b.C
+ c7141313017295f3b98183a39be9dfd2  gcc/testsuite/g++.dg/modules/merge-21_c.C
+ a9756c1c5ac2dc00c4b157e7951cb465  gcc/testsuite/g++.dg/modules/merge-21_d.C
  4f1ab1a658f8fe8b82d453787cd70235  gcc/testsuite/g++.dg/modules/merge-2_a.H
  8cdb66c1a7c6fd5f699a54755e0262c3  gcc/testsuite/g++.dg/modules/merge-2_b.C
  bafe05354251f1f0df54dbb55d13354f  gcc/testsuite/g++.dg/modules/merge-3_a.H
*************** ad9ef329572dab16f2d3d5613538cd3f  gcc/te
*** 27059,27064 ****
--- 27196,27203 ----
  95ab3577dee99f3d59838a96f1cbf4fc  gcc/testsuite/g++.dg/modules/mod-tpl-2_b.C
  bbb42c3f40f239c2fad38126884d3bfd  gcc/testsuite/g++.dg/modules/modules.exp
  f49c118362c9a45e801940d0725a767d  gcc/testsuite/g++.dg/modules/mutual-friend.ii
+ 16465126f101e83b3563394ad1efa4dc  gcc/testsuite/g++.dg/modules/namespace-12_a.C
+ 9b622a44d3f7299cd41ff2819e176ecd  gcc/testsuite/g++.dg/modules/namespace-12_b.C
  ebce3d8effe71472ad6b1910c0b435f6  gcc/testsuite/g++.dg/modules/namespace-1_a.C
  c34c17e18223f5c84607e68a5f2dd81a  gcc/testsuite/g++.dg/modules/namespace-1_b.C
  9fc8de4ea84d52d9c619890b0581ed9e  gcc/testsuite/g++.dg/modules/namespace-1_c.C
*************** fce3f558aeb8001c53b2a58bdd35b90c  gcc/te
*** 27102,27107 ****
--- 27241,27250 ----
  29e61ee340b5bc3a7d8a0ba7a9b97160  gcc/testsuite/g++.dg/modules/noexcept-3_c.C
  3352ecf52d4c372d9299b5562e3d2bc1  gcc/testsuite/g++.dg/modules/noexcept-4_a.H
  1f41c550595320f883deb0c9cafc27d7  gcc/testsuite/g++.dg/modules/noexcept-4_b.C
+ f607f8896343cb10bfe1c533ab9b3f28  gcc/testsuite/g++.dg/modules/noexcept-5.h
+ 2a6066ee8de5da718d523238d43c0045  gcc/testsuite/g++.dg/modules/noexcept-5_a.C
+ 7df3f08ca2357d94302931ed7331bc7d  gcc/testsuite/g++.dg/modules/noexcept-5_b.C
+ 2a252bbd723530e61e33b6df1e1c2bfc  gcc/testsuite/g++.dg/modules/noexcept-5_c.C
  5267120dfe33094309707a439761d2ad  gcc/testsuite/g++.dg/modules/ns-alias-1_a.C
  5c1f7c01d38a7bbf2a7cb1627d2269cb  gcc/testsuite/g++.dg/modules/ns-alias-1_b.C
  35b6f149929214b0f06a476383cbce84  gcc/testsuite/g++.dg/modules/ns-alias-1_c.C
*************** e957d0bb77992ee1df76972e1b650438  gcc/te
*** 27157,27162 ****
--- 27300,27310 ----
  b526eccf4125841f7887f3c52a4ad9c3  gcc/testsuite/g++.dg/modules/p1689-target-default.exp.ddi
  a3be9aad9d10fc377af4164832c226c3  gcc/testsuite/g++.dg/modules/pack-index-1_a.C
  7b28120ef6b48516bc33d430f719231f  gcc/testsuite/g++.dg/modules/pack-index-1_b.C
+ 48a8472ca96b0f63e66d537146468c1b  gcc/testsuite/g++.dg/modules/part-11_a.C
+ 589ef0f7ed3e54007bef1bc3e4786e79  gcc/testsuite/g++.dg/modules/part-11_b.C
+ 0968ac1c13f417b9bf3cb86f09e51e4d  gcc/testsuite/g++.dg/modules/part-11_c.C
+ b214bb9855a87606d5686f0f7ac8c52b  gcc/testsuite/g++.dg/modules/part-11_d.C
+ 083aa9d1e97214e4158f7220127517ea  gcc/testsuite/g++.dg/modules/part-11_e.C
  c05001e1ed1bc8701ae61710ad3585cd  gcc/testsuite/g++.dg/modules/part-1_a.C
  8cc6c00af73d534c5bcd66d9d7757f8c  gcc/testsuite/g++.dg/modules/part-1_b.C
  103cfc3318415410b659f66bfb16f1bf  gcc/testsuite/g++.dg/modules/part-1_c.C
*************** d71ad1e42d5edd10bf65dd64c81a4107  gcc/te
*** 27261,27267 ****
  57c308104a9d589b59baa6c5289ef1ae  gcc/testsuite/g++.dg/modules/pr106761_b.C
  ce1fbbd73d685e48bf6b219484083996  gcc/testsuite/g++.dg/modules/pr106820_a.H
  d7c5aacc3100ff130d9b06f0b4d7b551  gcc/testsuite/g++.dg/modules/pr106820_b.C
! 633de5cc96e42a8f75edab46b98b2a45  gcc/testsuite/g++.dg/modules/pr108080.H
  d6c4487b2cdfe513fca59a9da2b03d10  gcc/testsuite/g++.dg/modules/pr113580_a.C
  2d13920b57e09bfba57cfacc02b5548b  gcc/testsuite/g++.dg/modules/pr113580_b.C
  b0187e4110d3e1feaedea59af55274e1  gcc/testsuite/g++.dg/modules/pr114005_a.C
--- 27409,27415 ----
  57c308104a9d589b59baa6c5289ef1ae  gcc/testsuite/g++.dg/modules/pr106761_b.C
  ce1fbbd73d685e48bf6b219484083996  gcc/testsuite/g++.dg/modules/pr106820_a.H
  d7c5aacc3100ff130d9b06f0b4d7b551  gcc/testsuite/g++.dg/modules/pr106820_b.C
! 0e300dd7ed7b402f26750dab3b720316  gcc/testsuite/g++.dg/modules/pr108080.H
  d6c4487b2cdfe513fca59a9da2b03d10  gcc/testsuite/g++.dg/modules/pr113580_a.C
  2d13920b57e09bfba57cfacc02b5548b  gcc/testsuite/g++.dg/modules/pr113580_b.C
  b0187e4110d3e1feaedea59af55274e1  gcc/testsuite/g++.dg/modules/pr114005_a.C
*************** d684f71f3f20bed75ccc9aecab05ecdb  gcc/te
*** 27297,27302 ****
--- 27445,27452 ----
  af1e9e3b0cc46e0d597048ea5dda7431  gcc/testsuite/g++.dg/modules/pr119102_b.C
  d1e2592670bcdeda87ffce22aa27ec30  gcc/testsuite/g++.dg/modules/pr119608_a.C
  42f7d0ad39e2bd3aa2ca1c1f2e1b0410  gcc/testsuite/g++.dg/modules/pr119608_b.C
+ 2b317cc9d17067098caad41a9ab4b86e  gcc/testsuite/g++.dg/modules/pr122922_a.C
+ acc8849da8a5b2d5ba59c3913e5a6714  gcc/testsuite/g++.dg/modules/pr122922_b.C
  56ba9e2a41b995724a511df79d8df541  gcc/testsuite/g++.dg/modules/pr98531-1.h
  7155fba8679861dc6ac8879b5f49a6eb  gcc/testsuite/g++.dg/modules/pr98531-1_a.H
  db36409e89afb58e627178caf0f3d7d5  gcc/testsuite/g++.dg/modules/pr98531-1_b.C
*************** c91c32cc6da48fa1750643064a8936bb  gcc/te
*** 27522,27528 ****
  489c5e2999bf8c59a45b7da2cceb4263  gcc/testsuite/g++.dg/modules/tdef-inst-1_a.C
  e7946cb9ca0e05cd9aa5194c00847d3f  gcc/testsuite/g++.dg/modules/tdef-inst-1_b.C
  e477359665d29b56320080e76b625816  gcc/testsuite/g++.dg/modules/test-depfile.py
! 1627cb0ba276312fba8e8c9134461bc1  gcc/testsuite/g++.dg/modules/test-p1689.py
  4ee1b098ceb95d001b4cea367f4c6ebb  gcc/testsuite/g++.dg/modules/thunk-1_a.C
  69d722c6c58df72cabc0c72876607de8  gcc/testsuite/g++.dg/modules/thunk-1_b.C
  3d43f235edc585cf8e8940b34d8a8a63  gcc/testsuite/g++.dg/modules/timevar-1_a.H
--- 27672,27678 ----
  489c5e2999bf8c59a45b7da2cceb4263  gcc/testsuite/g++.dg/modules/tdef-inst-1_a.C
  e7946cb9ca0e05cd9aa5194c00847d3f  gcc/testsuite/g++.dg/modules/tdef-inst-1_b.C
  e477359665d29b56320080e76b625816  gcc/testsuite/g++.dg/modules/test-depfile.py
! 30e08c22f8191a47d661f71db1bb52f1  gcc/testsuite/g++.dg/modules/test-p1689.py
  4ee1b098ceb95d001b4cea367f4c6ebb  gcc/testsuite/g++.dg/modules/thunk-1_a.C
  69d722c6c58df72cabc0c72876607de8  gcc/testsuite/g++.dg/modules/thunk-1_b.C
  3d43f235edc585cf8e8940b34d8a8a63  gcc/testsuite/g++.dg/modules/timevar-1_a.H
*************** b8fef9a1bd09e90415f3e35f5466c85c  gcc/te
*** 28071,28076 ****
--- 28221,28227 ----
  f974ff4ce09c3f50fcec3f4ce9c39925  gcc/testsuite/g++.dg/opt/pr119518.C
  c2e43e3226b99fa6ecf149ed5d036d49  gcc/testsuite/g++.dg/opt/pr119613.C
  8ae5f63f132f2e69255225e052069238  gcc/testsuite/g++.dg/opt/pr119614.C
+ 46bab0272c3e399fa4db680833cb9a89  gcc/testsuite/g++.dg/opt/pr122394.C
  2896f5b1a96dd9fabb1dbb65cb4c5921  gcc/testsuite/g++.dg/opt/pr13066-1.C
  4f87f86b9f018cae74888e97468b2fe0  gcc/testsuite/g++.dg/opt/pr14029.C
  8fb7e68e9e9b5eb02628e03f5333e645  gcc/testsuite/g++.dg/opt/pr14888.C
*************** a0196ebfddfdcb265613530b34c75302  gcc/te
*** 28391,28396 ****
--- 28542,28548 ----
  d0b5965b4982fc2453056380914a719f  gcc/testsuite/g++.dg/other/anon-union5.C
  498c728995604cce6cd6fb0603cfbad8  gcc/testsuite/g++.dg/other/anon-union6.C
  4f90ececca3ff47581ca71749fda9c86  gcc/testsuite/g++.dg/other/anon-union7.C
+ fe4ccc701c313926fdf04eb36eca6435  gcc/testsuite/g++.dg/other/anon-union8.C
  25bec11b40119085408d52eaa5b86f6e  gcc/testsuite/g++.dg/other/anon2.C
  ac03cab67f2c4f5731d36b19f2ee4f42  gcc/testsuite/g++.dg/other/anon3.C
  735bc52cab8eca56a711c2c10845c981  gcc/testsuite/g++.dg/other/anon4.C
*************** c5b17ec8776b6efea2d581feee1eee63  gcc/te
*** 28617,28622 ****
--- 28769,28775 ----
  7f6f8196eb6eae36b43ff96f94e48737  gcc/testsuite/g++.dg/other/pr113617.C
  a9facf6d9509cb68d6b2b62cd3645688  gcc/testsuite/g++.dg/other/pr113617.h
  f4bb431c848d4b8591c30c861f41d6cd  gcc/testsuite/g++.dg/other/pr117516.C
+ 090b0d31de50d5d78954887c98d7804a  gcc/testsuite/g++.dg/other/pr123331.C
  f43f96bf3c378817b959c22aee3466c0  gcc/testsuite/g++.dg/other/pr20366.C
  972110c0d861ecae87ae8ad4d861dd0f  gcc/testsuite/g++.dg/other/pr22003.C
  57901344b69ec7b216bf1128cc5a7242  gcc/testsuite/g++.dg/other/pr22358.C
*************** c5147fdec1f8af57aa91c7960d61a37c  gcc/te
*** 28932,28937 ****
--- 29085,29091 ----
  8e7b288b4c83f50703e3121d871e7ca1  gcc/testsuite/g++.dg/parse/colon-autocorrect-2.C
  cc7bbad3182c61322827fb53d2c0de46  gcc/testsuite/g++.dg/parse/comma1.C
  7a61c8e71deeb5afa8198794ebdf7d32  gcc/testsuite/g++.dg/parse/comma2.C
+ 98a1a2f21d1a9e354ec5c32d17f0b632  gcc/testsuite/g++.dg/parse/comma3.C
  4c4fb9d735c72b92a2a26f198f25d1e5  gcc/testsuite/g++.dg/parse/concat1.C
  73b5fec6848a7932aba299c38c57d8ed  gcc/testsuite/g++.dg/parse/cond1.C
  5b95db4d3d95193611271dcf7d869fe5  gcc/testsuite/g++.dg/parse/cond2.C
*************** c3945b36146c7d629c7336eb3f9329fe  gcc/te
*** 29035,29040 ****
--- 29189,29195 ----
  758a5593fac9b92bf48e5bc6573d64dd  gcc/testsuite/g++.dg/parse/crash78a.C
  37c0cb89d800249b63e524b045e2782b  gcc/testsuite/g++.dg/parse/crash79.C
  8192e78f11aebd3019eab4fc03de8002  gcc/testsuite/g++.dg/parse/crash80.C
+ 23b7108a88804e5cf4c0a9d029afae56  gcc/testsuite/g++.dg/parse/crash81.C
  5818f331167c496db06ad694932a1beb  gcc/testsuite/g++.dg/parse/crash9.C
  5940e29a523673e2c47048c21c11d678  gcc/testsuite/g++.dg/parse/ctor1.C
  6a4d22d64949d622a19d9e79684aad65  gcc/testsuite/g++.dg/parse/ctor10.C
*************** ad9259e6bdf3bdde202871cc62bd27bb  gcc/te
*** 29598,29603 ****
--- 29753,29760 ----
  d817d87f4590a7694dcb15ea0a0856a3  gcc/testsuite/g++.dg/pr115605.C
  af4c6212c5e52bf135c1867c6656d88b  gcc/testsuite/g++.dg/pr117222.C
  907af190ec2f3efd086d2b352c9934cd  gcc/testsuite/g++.dg/pr117919.C
+ 80867666af42eef238ead0c293e5bc0e  gcc/testsuite/g++.dg/pr121757.C
+ 9b72294c06cceb517f37832e017f79c1  gcc/testsuite/g++.dg/pr123575.C
  2ac64817a39fe1a5c2dc328f4233cda1  gcc/testsuite/g++.dg/pr37742.C
  32b2fbda29ffd2ac2181c43c971f3a7d  gcc/testsuite/g++.dg/pr44328.C
  e43b4ea2d038b181b57782d5d56d22ba  gcc/testsuite/g++.dg/pr44486.C
*************** f75072de1c2abdfca708b732cbfafa89  gcc/te
*** 30180,30193 ****
  44d05d042dc79a79585f17b3bcda6ec0  gcc/testsuite/g++.dg/template/crash103.C
  1225a54926913e691b51137aef8b5d33  gcc/testsuite/g++.dg/template/crash104.C
  f07fd8a3820e9db30fbbab54d71dd891  gcc/testsuite/g++.dg/template/crash105.C
! f19bbfba4bb14d6e3ff2d65c8da05557  gcc/testsuite/g++.dg/template/crash106.C
  792c7b5aeb05b03e17861b41172963b0  gcc/testsuite/g++.dg/template/crash107.C
  01e34c6dbadd8c372851425abdb78adb  gcc/testsuite/g++.dg/template/crash108.C
  b3167df4bc44e634fce27a27e383e9a4  gcc/testsuite/g++.dg/template/crash109.C
  b9d6c3e2462b2f141eef9706fb73f7ad  gcc/testsuite/g++.dg/template/crash11.C
  bc34a5c1a684295dab662a89dc6697f6  gcc/testsuite/g++.dg/template/crash110.C
  f5c17c8c05a6c2d1d6b29054c88125a1  gcc/testsuite/g++.dg/template/crash111.C
! cafccb8ed409984b3ee5d4f9079957fa  gcc/testsuite/g++.dg/template/crash112.C
  eefdeb6db423d33961319f597beaebfa  gcc/testsuite/g++.dg/template/crash113.C
  9cf3fd890329936ea0594b310d9a64c1  gcc/testsuite/g++.dg/template/crash114.C
  ef817469f252f778c53765d1bbf1e129  gcc/testsuite/g++.dg/template/crash115.C
--- 30337,30350 ----
  44d05d042dc79a79585f17b3bcda6ec0  gcc/testsuite/g++.dg/template/crash103.C
  1225a54926913e691b51137aef8b5d33  gcc/testsuite/g++.dg/template/crash104.C
  f07fd8a3820e9db30fbbab54d71dd891  gcc/testsuite/g++.dg/template/crash105.C
! f7adbbf195de7e6c3dcc4fd4325a3b5c  gcc/testsuite/g++.dg/template/crash106.C
  792c7b5aeb05b03e17861b41172963b0  gcc/testsuite/g++.dg/template/crash107.C
  01e34c6dbadd8c372851425abdb78adb  gcc/testsuite/g++.dg/template/crash108.C
  b3167df4bc44e634fce27a27e383e9a4  gcc/testsuite/g++.dg/template/crash109.C
  b9d6c3e2462b2f141eef9706fb73f7ad  gcc/testsuite/g++.dg/template/crash11.C
  bc34a5c1a684295dab662a89dc6697f6  gcc/testsuite/g++.dg/template/crash110.C
  f5c17c8c05a6c2d1d6b29054c88125a1  gcc/testsuite/g++.dg/template/crash111.C
! 84836a0a390a3f18de7863dcbb8138a6  gcc/testsuite/g++.dg/template/crash112.C
  eefdeb6db423d33961319f597beaebfa  gcc/testsuite/g++.dg/template/crash113.C
  9cf3fd890329936ea0594b310d9a64c1  gcc/testsuite/g++.dg/template/crash114.C
  ef817469f252f778c53765d1bbf1e129  gcc/testsuite/g++.dg/template/crash115.C
*************** e55baeaf118c452b9f707b8236ee86b1  gcc/te
*** 30353,30364 ****
  bbc0cedc0c23e5084b73fd2bd7d12be0  gcc/testsuite/g++.dg/template/defarg9.C
  08e2480f72bcb72f3f0c69f74625bd4c  gcc/testsuite/g++.dg/template/delete1.C
  f64b5dcbfa3d3051a358c8d1c1e8a878  gcc/testsuite/g++.dg/template/delete2.C
! 405318b0ed9079d8a3152d85bfbe6fc3  gcc/testsuite/g++.dg/template/dependent-args1.C
  ba2918f2d50d14da19e142ac392345e1  gcc/testsuite/g++.dg/template/dependent-base1.C
  2cfeba0039a93060ff77245f34166e52  gcc/testsuite/g++.dg/template/dependent-base2.C
  1ea2af4911d47cd67d9e3ab837ef48bc  gcc/testsuite/g++.dg/template/dependent-base3.C
  d84a51031591e89db0598597a16e9314  gcc/testsuite/g++.dg/template/dependent-base4.C
  1b766fbec06df8398c3415a9e993d06e  gcc/testsuite/g++.dg/template/dependent-base5.C
  d06a8849a0e0df87f9e222f08a6f4852  gcc/testsuite/g++.dg/template/dependent-expr1.C
  10b3f1b7a34c9d4e9be1e9844babd34d  gcc/testsuite/g++.dg/template/dependent-expr10.C
  6b486f8c9b9b318c76811eb21046957f  gcc/testsuite/g++.dg/template/dependent-expr2.C
--- 30510,30522 ----
  bbc0cedc0c23e5084b73fd2bd7d12be0  gcc/testsuite/g++.dg/template/defarg9.C
  08e2480f72bcb72f3f0c69f74625bd4c  gcc/testsuite/g++.dg/template/delete1.C
  f64b5dcbfa3d3051a358c8d1c1e8a878  gcc/testsuite/g++.dg/template/delete2.C
! 4820802a013c4ae847e44af5c8e547b3  gcc/testsuite/g++.dg/template/dependent-args1.C
  ba2918f2d50d14da19e142ac392345e1  gcc/testsuite/g++.dg/template/dependent-base1.C
  2cfeba0039a93060ff77245f34166e52  gcc/testsuite/g++.dg/template/dependent-base2.C
  1ea2af4911d47cd67d9e3ab837ef48bc  gcc/testsuite/g++.dg/template/dependent-base3.C
  d84a51031591e89db0598597a16e9314  gcc/testsuite/g++.dg/template/dependent-base4.C
  1b766fbec06df8398c3415a9e993d06e  gcc/testsuite/g++.dg/template/dependent-base5.C
+ 5ba9018528a9791e64425a869d0b3993  gcc/testsuite/g++.dg/template/dependent-base6.C
  d06a8849a0e0df87f9e222f08a6f4852  gcc/testsuite/g++.dg/template/dependent-expr1.C
  10b3f1b7a34c9d4e9be1e9844babd34d  gcc/testsuite/g++.dg/template/dependent-expr10.C
  6b486f8c9b9b318c76811eb21046957f  gcc/testsuite/g++.dg/template/dependent-expr2.C
*************** ecf4a5a96a9a66275db51c43656e4549  gcc/te
*** 30379,30384 ****
--- 30537,30543 ----
  5a8510fe4f107344e120dad60a01d61e  gcc/testsuite/g++.dg/template/dependent-name16.C
  821354ce1318166659eba50d9ae2f7bc  gcc/testsuite/g++.dg/template/dependent-name17.C
  e8a32b9dc0ab464b7f14ed88342967c0  gcc/testsuite/g++.dg/template/dependent-name18.C
+ 95cef29e581db16b7553a10027c170e2  gcc/testsuite/g++.dg/template/dependent-name19.C
  18d61b100652dfe4816b8b9c6cefa923  gcc/testsuite/g++.dg/template/dependent-name2.C
  03c5fb73327b7854a036dd70874ee185  gcc/testsuite/g++.dg/template/dependent-name3.C
  147338e18276d105fca28005404df2a8  gcc/testsuite/g++.dg/template/dependent-name4.C
*************** c26c19c6753e65db02ae97efd8a54af2  gcc/te
*** 31530,31541 ****
  e425d7fc584cf8535f3eee565f58f091  gcc/testsuite/g++.dg/tls/init-1.C
  ec6c7e65d57e2a70cb1a6852131a0f16  gcc/testsuite/g++.dg/tls/init-2.C
  e9afa7cf1ac751d2df40286607549ef0  gcc/testsuite/g++.dg/tls/locations1.C
! 2a8c59f8866b77fe70f624e3d722097d  gcc/testsuite/g++.dg/tls/pr102496-1.C
  abc37af969d1e3eb6c154521bc4614aa  gcc/testsuite/g++.dg/tls/pr102496-2.C
  7e8484ec05c7aa22b9de8e440eb62ad6  gcc/testsuite/g++.dg/tls/pr102642.C
  abcd9d688bd97352cf2201ae04eb0bcd  gcc/testsuite/g++.dg/tls/pr66808.C
  5b67d09a03c0a87ddd8fb4065b354311  gcc/testsuite/g++.dg/tls/pr69000.C
! f4ebaa2e9bc5b065a4c81b1ec15efe2c  gcc/testsuite/g++.dg/tls/pr77285-1.C
  f1ca461838c5ae75f6825f6cd92ae307  gcc/testsuite/g++.dg/tls/pr77285-2.C
  4db79bd63ba94ab802fb63629928af1d  gcc/testsuite/g++.dg/tls/pr79288.C
  eaa257e5d01462b4484236d4e40a6e81  gcc/testsuite/g++.dg/tls/pr85400.C
--- 31689,31700 ----
  e425d7fc584cf8535f3eee565f58f091  gcc/testsuite/g++.dg/tls/init-1.C
  ec6c7e65d57e2a70cb1a6852131a0f16  gcc/testsuite/g++.dg/tls/init-2.C
  e9afa7cf1ac751d2df40286607549ef0  gcc/testsuite/g++.dg/tls/locations1.C
! a3c6e48df168850652cb297ec24efd8d  gcc/testsuite/g++.dg/tls/pr102496-1.C
  abc37af969d1e3eb6c154521bc4614aa  gcc/testsuite/g++.dg/tls/pr102496-2.C
  7e8484ec05c7aa22b9de8e440eb62ad6  gcc/testsuite/g++.dg/tls/pr102642.C
  abcd9d688bd97352cf2201ae04eb0bcd  gcc/testsuite/g++.dg/tls/pr66808.C
  5b67d09a03c0a87ddd8fb4065b354311  gcc/testsuite/g++.dg/tls/pr69000.C
! 0ceb6a01aeecd4ce8dd293985c91a3de  gcc/testsuite/g++.dg/tls/pr77285-1.C
  f1ca461838c5ae75f6825f6cd92ae307  gcc/testsuite/g++.dg/tls/pr77285-2.C
  4db79bd63ba94ab802fb63629928af1d  gcc/testsuite/g++.dg/tls/pr79288.C
  eaa257e5d01462b4484236d4e40a6e81  gcc/testsuite/g++.dg/tls/pr85400.C
*************** c2a0cf3df84b0f5f4df65937e3fa4da2  gcc/te
*** 31767,31772 ****
--- 31926,31932 ----
  6766aa21b009a63d71d22aa6baba228d  gcc/testsuite/g++.dg/torture/pr111245.C
  25af1620df0107cd03f275ddc7fd98b6  gcc/testsuite/g++.dg/torture/pr111465.C
  fd7e86518ea2a69054ff33aa0689c56b  gcc/testsuite/g++.dg/torture/pr111773.C
+ 5c620542544d327d513aa9525aba2286  gcc/testsuite/g++.dg/torture/pr112400.C
  f5cb8caa482838045861d5ee18445814  gcc/testsuite/g++.dg/torture/pr113896.C
  c9d2586b0e3709f19a931052b6c72363  gcc/testsuite/g++.dg/torture/pr113994.C
  ef666186552a9562e70783bbdf98ac33  gcc/testsuite/g++.dg/torture/pr115694.C
*************** e8b09238e87e73505d31392aeef0e4b5  gcc/te
*** 31783,31788 ****
--- 31943,31950 ----
  786d0a5ec87e00507e8d07cca9bb139c  gcc/testsuite/g++.dg/torture/pr116842.C
  1e0447a2dc08b798ed33be384cdea31a  gcc/testsuite/g++.dg/torture/pr116902.C
  f052d3af1586cf42bf5ec8d92e1621ac  gcc/testsuite/g++.dg/torture/pr116927-1.C
+ 433f2d5d832623625319b4192fc7b69c  gcc/testsuite/g++.dg/torture/pr117217-1.C
+ 370446845d836416f63d6f4ab2dbab30  gcc/testsuite/g++.dg/torture/pr117217-2.C
  17ed764fa5d3f0ee6d17ed54d9664c47  gcc/testsuite/g++.dg/torture/pr117341-1.C
  372a5372bc2611240b35fde2512f27e9  gcc/testsuite/g++.dg/torture/pr118320.C
  ae883844cdffe266994223192fd8cd35  gcc/testsuite/g++.dg/torture/pr118521.C
*************** ae883844cdffe266994223192fd8cd35  gcc/te
*** 31791,31797 ****
--- 31953,31970 ----
  f298eddbaaad3dfdc15f6cf9683ff08a  gcc/testsuite/g++.dg/torture/pr11911.C
  9df51f0b5a7e716286f2e97dfd28d477  gcc/testsuite/g++.dg/torture/pr119610.C
  9cede7e8b587157ccdf0f9f6667d6cc8  gcc/testsuite/g++.dg/torture/pr119778.C
+ b13ff64f74236106c58ee8eec24c78a6  gcc/testsuite/g++.dg/torture/pr120098.C
  34ccf862a19942e4a76e7409c03669c6  gcc/testsuite/g++.dg/torture/pr120119-1.C
+ 4d68e68ec1a7391fe652111cdb89b309  gcc/testsuite/g++.dg/torture/pr120987-1.C
+ 75b55c517ba9c0f47c83851f084cb294  gcc/testsuite/g++.dg/torture/pr121870.C
+ 4cb804aebd63b708ddcac6b88e4a9b7f  gcc/testsuite/g++.dg/torture/pr123040.C
+ 2fa3f60c4a0ae3a4528024698d6d2c3c  gcc/testsuite/g++.dg/torture/pr123596.C
+ fd8e483532e07909315ca8711ef4503b  gcc/testsuite/g++.dg/torture/pr123603.C
+ 045de4cec99c01bff5389660b8937e19  gcc/testsuite/g++.dg/torture/pr123729.C
+ 1aa558892fb81543beeef357c4f49d60  gcc/testsuite/g++.dg/torture/pr124086-1.C
+ 947406bbc75c3117568a96cd4a4cc34b  gcc/testsuite/g++.dg/torture/pr124130.C
+ 61fcf1bc001bfcf25117da95aaa8edd8  gcc/testsuite/g++.dg/torture/pr124135-1.C
+ 101facde39ac59f9b142786ef251d0ca  gcc/testsuite/g++.dg/torture/pr124135-2.C
  161154ed9f6193a2a7da119e068c3f3f  gcc/testsuite/g++.dg/torture/pr27218.C
  a84e9fff95df4801f8e582fbc33303b8  gcc/testsuite/g++.dg/torture/pr30252.C
  e980bf95890544d46879b89f7aa98df6  gcc/testsuite/g++.dg/torture/pr30567.C
*************** cbba22e9568932c7e9798b4143e8babf  gcc/te
*** 32583,32588 ****
--- 32756,32762 ----
  953a8a51c8a8a352b27ca078389cd3a7  gcc/testsuite/g++.dg/tree-ssa/string-1.C
  23df56c1ec29f9a5d4f481355d17c3dc  gcc/testsuite/g++.dg/tree-ssa/strlenopt-1.C
  948d00fc979cc2bd7b0f86e83a4eb496  gcc/testsuite/g++.dg/tree-ssa/strlenopt-2.C
+ 28c806e9459e7d7405ec4d864fbc4f37  gcc/testsuite/g++.dg/tree-ssa/strlenopt-3.C
  2a5935f325533fa199bc7f5e3b2b36d5  gcc/testsuite/g++.dg/tree-ssa/tail-call-1.C
  0fb08fd6d187247ae5872931e884061c  gcc/testsuite/g++.dg/tree-ssa/tmmti.C
  d0016ead88409af28f506089528155ae  gcc/testsuite/g++.dg/tree-ssa/value-expr1.C
*************** a5706ac002500d657b5e8cd77cc6c62e  gcc/te
*** 33102,33107 ****
--- 33276,33282 ----
  1184b1df4ae243b5ab6917e0e3b219b6  gcc/testsuite/g++.dg/warn/Wmismatched-dealloc-2.C
  beb0dbeb6a47cd7fb34d04b431670905  gcc/testsuite/g++.dg/warn/Wmismatched-dealloc-3.C
  d183cd43f2c2caf1b71024ba3762ff44  gcc/testsuite/g++.dg/warn/Wmismatched-dealloc.C
+ c64dfbca6c8c86f3fd65230eca021a72  gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-10.C
  74decc16b8ca63b12db874b7dde868cf  gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-2.C
  5c4cad449e21fe0fade92c9c0d19fb5f  gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-3.C
  da3dbc8526151b41f4a741a5d5e51eae  gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-4.C
*************** cbb30a4d3c73f183db77e6da8a13e3a9  gcc/te
*** 37090,37095 ****
--- 37265,37273 ----
  f7378d596bb7308498db40ad34fd8dab  gcc/testsuite/g++.target/aarch64/bitfield-abi-warning.h
  64610704e2fb7b814ffc84b6b28714a0  gcc/testsuite/g++.target/aarch64/complex-init.C
  c11e5f97e7a5971cc5c5017024f54496  gcc/testsuite/g++.target/aarch64/diag_aka_1.C
+ 5c7d9c457935aed97ec5411da8248b77  gcc/testsuite/g++.target/aarch64/dwarf-bit-stride-func.C
+ 8768115d444f864192b9eed7e675cd58  gcc/testsuite/g++.target/aarch64/dwarf-bit-stride-pragma-sme.C
+ 6ae7e639f92550ad23b9ec3fe950fa14  gcc/testsuite/g++.target/aarch64/dwarf-bit-stride-pragma.C
  8d30bac01e24683c2d4e58c15ccb4a99  gcc/testsuite/g++.target/aarch64/fp8_mangling.C
  e488781ad97c2cdafc1c66ede7aa1e0f  gcc/testsuite/g++.target/aarch64/fp8_scalar_typecheck_2.C
  4320de0414b96b162e7734443992dd38  gcc/testsuite/g++.target/aarch64/interference.C
*************** af15d8508e94dffd343c693011e63fd4  gcc/te
*** 37126,37131 ****
--- 37304,37310 ----
  9b78f2399b3493ce846b6fb03c77ee6c  gcc/testsuite/g++.target/aarch64/pr109661-4.C
  c30fa1a8e837444d0a3e1e6be628b06d  gcc/testsuite/g++.target/aarch64/pr116074.C
  c8698b784efebd06777683e03d5bbfc7  gcc/testsuite/g++.target/aarch64/pr117048.C
+ cee7440840fa58ea5280af197f3054eb  gcc/testsuite/g++.target/aarch64/pr124126-1.C
  1755134bcb84bdbcfd658df7150649e0  gcc/testsuite/g++.target/aarch64/pr89752.C
  ba9d23bf9864be2b6061429c3faa49b7  gcc/testsuite/g++.target/aarch64/pr94052.C
  376b3a47b3ddd89e448a765321d0e622  gcc/testsuite/g++.target/aarch64/pr94514.C
*************** ba9d23bf9864be2b6061429c3faa49b7  gcc/te
*** 37140,37145 ****
--- 37319,37326 ----
  3de0947a17512aedda9a0acc7bcb39ed  gcc/testsuite/g++.target/aarch64/sme/exceptions_1.C
  79243c6f16baddd2d73325ca3aa928e2  gcc/testsuite/g++.target/aarch64/sme/exceptions_2.C
  6617c08f1c35a7b00949b2a7c76d1e15  gcc/testsuite/g++.target/aarch64/sme/keyword_macros_1.C
+ c9198836844a7336e686dd975a80fbbd  gcc/testsuite/g++.target/aarch64/sme/sme_throw_1.C
+ 9a3b7e2498f4259da15a71f2850ec227  gcc/testsuite/g++.target/aarch64/sme/sme_throw_2.C
  7c9f331f9af372aa80eabfedf84ae4d1  gcc/testsuite/g++.target/aarch64/sme/streaming_mode_1.C
  7fce27ec45311cf4d170ad324de8da10  gcc/testsuite/g++.target/aarch64/sme/streaming_mode_2.C
  d50d2632d11f285298dab758e5afed2c  gcc/testsuite/g++.target/aarch64/sme2/aarch64-sme2-acle-asm.exp
*************** f515b18aeb1d66984b8b5d71e9fc0b3c  gcc/te
*** 37273,37278 ****
--- 37454,37460 ----
  f3ce91773bd0b4a3127c481ccd50f20e  gcc/testsuite/g++.target/aarch64/sve/dup_sel_4.C
  88995b2addb79f14a72ba650d83a3920  gcc/testsuite/g++.target/aarch64/sve/dup_sel_5.C
  9e6f261244b524db00958d47111eef62  gcc/testsuite/g++.target/aarch64/sve/dup_sel_6.C
+ ed268bb0c6479d4c5a1aa2efea8c023a  gcc/testsuite/g++.target/aarch64/sve/dwarf-bit-stride.C
  57a0aa7896383cbb0273342d58a4a7b5  gcc/testsuite/g++.target/aarch64/sve/max_1.C
  ab6c5e333d0a740ae5ecff69966813a2  gcc/testsuite/g++.target/aarch64/sve/min_1.C
  2ff8eb172904381922581e6d91f913e4  gcc/testsuite/g++.target/aarch64/sve/noncall-eh-fp-1.C
*************** ab6c5e333d0a740ae5ecff69966813a2  gcc/te
*** 37281,37286 ****
--- 37463,37469 ----
  420c5e0492e7721ea27176c74cff65f5  gcc/testsuite/g++.target/aarch64/sve/pr116595.C
  a36c6629cdaa92f5a41aa0c862cf5a54  gcc/testsuite/g++.target/aarch64/sve/pr119610-sve.C
  48b79fc3f836bb02ceace04c37ddd7c4  gcc/testsuite/g++.target/aarch64/sve/pr119706.C
+ 81119ead1d39599a647b5c79f9d21a85  gcc/testsuite/g++.target/aarch64/sve/pr121449.C
  29fcc7f7695fcab2e4779698100f3053  gcc/testsuite/g++.target/aarch64/sve/pr96974.C
  6c0e94c363caf9e62df35ea98b4918ed  gcc/testsuite/g++.target/aarch64/sve/pr98177-1.C
  e64000c150bb204c31dca884ee33dd4f  gcc/testsuite/g++.target/aarch64/sve/pr98177-2.C
*************** aa928203aafdb1f6793fe73d77390fc9  gcc/te
*** 37296,37302 ****
  2db1f141b171b343da3bcd8a1f111fd8  gcc/testsuite/g++.target/aarch64/vect-simd-clone-1.C
  f89c5da906414e7c52ffb7bb0ab2b800  gcc/testsuite/g++.target/aarch64/vect_cmp-1.C
  cd7f71199c7444b1ce9488ac14f59b43  gcc/testsuite/g++.target/arm/arm.exp
! 99b5cde1aa5ba8d3c40ce3af92ef40f5  gcc/testsuite/g++.target/arm/bfloat_cpp_typecheck.C
  1be043d5daf902730f5c770ee4bbe8f1  gcc/testsuite/g++.target/arm/bti_thunk.C
  e64278e516f7ebae5481e326b54f28dd  gcc/testsuite/g++.target/arm/cde_mve.C
  817f6b8bbc13fc92c8ffbe3bcaf7963d  gcc/testsuite/g++.target/arm/interference.C
--- 37479,37485 ----
  2db1f141b171b343da3bcd8a1f111fd8  gcc/testsuite/g++.target/aarch64/vect-simd-clone-1.C
  f89c5da906414e7c52ffb7bb0ab2b800  gcc/testsuite/g++.target/aarch64/vect_cmp-1.C
  cd7f71199c7444b1ce9488ac14f59b43  gcc/testsuite/g++.target/arm/arm.exp
! d0eaacd5173a9a25d7ce41b86ccf8153  gcc/testsuite/g++.target/arm/bfloat_cpp_typecheck.C
  1be043d5daf902730f5c770ee4bbe8f1  gcc/testsuite/g++.target/arm/bti_thunk.C
  e64278e516f7ebae5481e326b54f28dd  gcc/testsuite/g++.target/arm/cde_mve.C
  817f6b8bbc13fc92c8ffbe3bcaf7963d  gcc/testsuite/g++.target/arm/interference.C
*************** b55cebf22ef53505e15f00d8c547efc0  gcc/te
*** 37340,37345 ****
--- 37523,37529 ----
  4a44f470ea24c20123902146bd5273ad  gcc/testsuite/g++.target/i386/avx512bw-pr98537-1.C
  3ec2a7fddbb432f8b259b0ada49c99a8  gcc/testsuite/g++.target/i386/avx512f-helper.h
  cbe0c3947d51802a4bf66ce01377fb64  gcc/testsuite/g++.target/i386/avx512f-pr96891-1.C
+ 8763b4590fa0e7aa581be6701962a55f  gcc/testsuite/g++.target/i386/avx512fp16-pr123607.C
  c89ba9cfe468937652adb223c2fe88f9  gcc/testsuite/g++.target/i386/avx512fp16-vcondmn-minmax.C
  d5287c6ed2bebf01314526c64e9b26ba  gcc/testsuite/g++.target/i386/avx512fp16-vcondmn-vec.C
  5df96b365d4dc9fff3b4d57ee1d9f8e5  gcc/testsuite/g++.target/i386/avx512vl-pr100738-1.C
*************** b74251af1154060812e45ff5697e903e  gcc/te
*** 37494,37499 ****
--- 37678,37694 ----
  9e6057d653e40c53fabdac3cf7cf9dfd  gcc/testsuite/g++.target/i386/pr116896-3.C
  c6fc9957abb94d73bf6685e341312513  gcc/testsuite/g++.target/i386/pr118068.C
  309d3ebda65ef0d79e21d0a9c0310055  gcc/testsuite/g++.target/i386/pr119689.C
+ 8881751e1efd14bcab3460abca01e627  gcc/testsuite/g++.target/i386/pr122446-1.C
+ 431f2273aedbab5747602c80152b78fd  gcc/testsuite/g++.target/i386/pr122446-amxavx512.C
+ e7e909b0858a352117bc6ee5a8fcafc7  gcc/testsuite/g++.target/i386/pr122446-amxbf16.C
+ b48e2095b969e9e4d541b80007eaed1f  gcc/testsuite/g++.target/i386/pr122446-amxcomplex.C
+ ea015573ee8ddabae38c2a615f8228fb  gcc/testsuite/g++.target/i386/pr122446-amxfp16.C
+ 38f98e80df657040e7cd34e280ccd4c0  gcc/testsuite/g++.target/i386/pr122446-amxfp8.C
+ 59ffb1a0656cc43a87c4b7e240fb28c6  gcc/testsuite/g++.target/i386/pr122446-amxint8.C
+ d127e2f7300195708178a6cec8648544  gcc/testsuite/g++.target/i386/pr122446-amxmovrs.C
+ f5a1d06c17cacf90f627c83c8b800a78  gcc/testsuite/g++.target/i386/pr122446-amxtf32.C
+ ffbb5e0bd5668625c6d5cef769228118  gcc/testsuite/g++.target/i386/pr122446-amxtile.C
+ fe98d8bd643079ebf7d12496d3189d03  gcc/testsuite/g++.target/i386/pr123779.C
  55fb67abf6517f92b1a0240d2c06b5c5  gcc/testsuite/g++.target/i386/pr35513-1.C
  14dde546e4eefec7aa6d1ac41261cb16  gcc/testsuite/g++.target/i386/pr35513-2.C
  1c706f97b6d93c0124dc4a203c98f6d2  gcc/testsuite/g++.target/i386/pr57362.C
*************** dfaa547e8fb7df38c4d964cefef4b708  gcc/te
*** 37564,37569 ****
--- 37759,37765 ----
  868a134a1623856acf8457d0e3e79317  gcc/testsuite/g++.target/loongarch/loongarch.exp
  3e379ce66f2b5fd83481c50aad661033  gcc/testsuite/g++.target/loongarch/pr106096.C
  91c50652b11a6f7dde25e6d7bba552c9  gcc/testsuite/g++.target/loongarch/pr106828.C
+ beefcfa1d7ebe27a8c765de46d63bba5  gcc/testsuite/g++.target/loongarch/pr117575.C
  70627fc5a9aed381933cfeb46e0cafe1  gcc/testsuite/g++.target/loongarch/vect-ashr-lshr.C
  f13d97450413e73ef42096f6d86f33b9  gcc/testsuite/g++.target/loongarch/vect-copysign-negconst-run.C
  20d9436c682a4415acafb5c98046ba99  gcc/testsuite/g++.target/loongarch/vect-copysign-negconst.C
*************** ea50428d09d0e781698b21023398bfee  gcc/te
*** 37633,37638 ****
--- 37829,37836 ----
  92cbd869a66e265db57a505d568038a0  gcc/testsuite/g++.target/powerpc/pr111367.C
  d2c732bc509e2385a06f111c954c2700  gcc/testsuite/g++.target/powerpc/pr111828-1.C
  d573b767c2de9d8c280bc5d867cf8c50  gcc/testsuite/g++.target/powerpc/pr111828-2.C
+ 30ee59b9e5c6ade87b3a5e9da350db58  gcc/testsuite/g++.target/powerpc/pr124133-1.C
+ 4a6ef2f6eb32a0a571721b0181a6bd02  gcc/testsuite/g++.target/powerpc/pr124133-2.C
  4ab48f85c0cc8642ccec86fab32865fd  gcc/testsuite/g++.target/powerpc/pr65240-1.C
  a65ca9dbc571190bf38872af7eb88b05  gcc/testsuite/g++.target/powerpc/pr65240-2.C
  a8c6dc89f2afd69a0ed5e88d861a88be  gcc/testsuite/g++.target/powerpc/pr65240-3.C
*************** af4c0a0f5ed69a8450f83634f706f725  gcc/te
*** 37680,37685 ****
--- 37878,37885 ----
  70b97714537133ddff4da9419b8fa1ff  gcc/testsuite/g++.target/riscv/mvc-symbols3.C
  e24f0e502cef393d2dbeeea684980651  gcc/testsuite/g++.target/riscv/mvc-symbols4.C
  6ccfbdc79a3df2fd72928d9b5b8e49eb  gcc/testsuite/g++.target/riscv/pr115458.C
+ a8a857220d4221ed70fa20fdbdf0cfca  gcc/testsuite/g++.target/riscv/pr122692-run-1.C
+ 605f86e49704fde491263d58c2ccade7  gcc/testsuite/g++.target/riscv/pr122692-run-2.C
  4c45e102d6dd19ee08a476904b64542d  gcc/testsuite/g++.target/riscv/pr96759.C
  ac37e529bda1269045c3681cc4b425dd  gcc/testsuite/g++.target/riscv/pr97682.C
  6e6f612caa7b4f4e5eea9cd6bba4227b  gcc/testsuite/g++.target/riscv/redundant-bitmap-1.C
*************** e296551bbee90148974ff78d5066caf7  gcc/te
*** 37724,37729 ****
--- 37924,37933 ----
  a6a5d652323c20e5b2bbc8ea9dc8f4d7  gcc/testsuite/g++.target/riscv/rvv/base/pr114714-1.C
  49cbe2dffc749d3ef1398685b035f4c9  gcc/testsuite/g++.target/riscv/rvv/base/pr114714-2.C
  c358c32e7ca409abcc867a3b5248f5bd  gcc/testsuite/g++.target/riscv/rvv/base/pr116883.C
+ c815e2b915616e550da03257a0782d3c  gcc/testsuite/g++.target/riscv/rvv/base/pr122448.C
+ 5278ec1993abdc95652f6d706ddaa862  gcc/testsuite/g++.target/riscv/rvv/base/pr123806.C
+ bb74b6c9495308ab73ce64ff3cfd9543  gcc/testsuite/g++.target/riscv/rvv/base/pr123808-2.C
+ 1079f987e4481f60dedf174de12857cb  gcc/testsuite/g++.target/riscv/rvv/base/pr123808.C
  979e78c5ed1d2ba91a46584480362b26  gcc/testsuite/g++.target/riscv/rvv/base/riscv_vector.h
  4a3be4db135c0350e87b0abdf4ca1ca8  gcc/testsuite/g++.target/riscv/rvv/rvv.exp
  c7172cd9252e12b67637bd9c4179611f  gcc/testsuite/g++.target/riscv/rvv/xtheadvector/pr116593.C
*************** a2656a59d00f50e3a24dc4e71bfb3973  gcc/te
*** 38786,38791 ****
--- 38990,38996 ----
  9b56cc2b8b8b471730e0b14ce4b78300  gcc/testsuite/gcc.c-torture/compile/pr103813.c
  4a6f867d2a09bace8b7a324f6a4f5237  gcc/testsuite/gcc.c-torture/compile/pr104327.c
  43abe0671a6ea621a4ca89fda41e49b8  gcc/testsuite/gcc.c-torture/compile/pr104499.c
+ acee4f72cc5b1f29df02485de18a69c0  gcc/testsuite/gcc.c-torture/compile/pr105192.c
  b8c09513cab59ca8f22d38e515f50fa8  gcc/testsuite/gcc.c-torture/compile/pr105234.c
  112c17f5638bc2cf5c04c9e917943218  gcc/testsuite/gcc.c-torture/compile/pr105247.c
  9477024f0d6e7d41ab0ee7d8ab3d3e58  gcc/testsuite/gcc.c-torture/compile/pr106030.c
*************** eea87d83e17b279b87e26692758e741d  gcc/te
*** 38860,38873 ****
--- 39065,39086 ----
  55a54152820578acabaf82298af82f50  gcc/testsuite/gcc.c-torture/compile/pr116009.c
  a36b5332929fccce3ba46aacdd6e1984  gcc/testsuite/gcc.c-torture/compile/pr116348.c
  49d6139389714e075cde88f08d4d1f2e  gcc/testsuite/gcc.c-torture/compile/pr116516.c
+ 4b342b76caa9e8e213c9b81ca64d1333  gcc/testsuite/gcc.c-torture/compile/pr116600.c
  0385d5805cb6d90dc8a17f2f44d3450e  gcc/testsuite/gcc.c-torture/compile/pr117358.c
  50f2676721fef746c58625b6346f5755  gcc/testsuite/gcc.c-torture/compile/pr117449.c
  7885242b11fb54f407c5b67910c8c93a  gcc/testsuite/gcc.c-torture/compile/pr118362.c
  ae878ea349c8f9f2a197bf59dcff9d3a  gcc/testsuite/gcc.c-torture/compile/pr118429.c
  6d7416e999725c0f023c4322893b1214  gcc/testsuite/gcc.c-torture/compile/pr118501.c
  4e917b913d6f56bf343a7bff79797c93  gcc/testsuite/gcc.c-torture/compile/pr119226.c
+ ab667119ae39828bcd103bb5c5434cdc  gcc/testsuite/gcc.c-torture/compile/pr120250.c
  ba307c947af4df2e0ff2f70272caf68a  gcc/testsuite/gcc.c-torture/compile/pr120807.c
+ 9f275c2b6e96b2a9fdee0b1a4aee96e9  gcc/testsuite/gcc.c-torture/compile/pr123365.c
+ 8c484e5df297a43329f4182432f35fda  gcc/testsuite/gcc.c-torture/compile/pr123386.c
+ ffc2d0352a16ed7c76c12152bde69753  gcc/testsuite/gcc.c-torture/compile/pr123703.c
+ b8b52e8f02c4a8a36a13b5243b69bbe6  gcc/testsuite/gcc.c-torture/compile/pr124250.c
+ 5ac4ade7a6a5945ebcf534694df7f5fc  gcc/testsuite/gcc.c-torture/compile/pr125039.c
  33c7141fcf5b1add3ddd2be0100f1f0d  gcc/testsuite/gcc.c-torture/compile/pr12517.c
+ dd5e4aadce0950a644e82414ff1f1b95  gcc/testsuite/gcc.c-torture/compile/pr125373.c
  ec16b12ab11c499bf321be18ea59da33  gcc/testsuite/gcc.c-torture/compile/pr12578.c
  86f3d5cf87d24e97aa663b79f2d0ac5d  gcc/testsuite/gcc.c-torture/compile/pr12899.c
  313f6ef65060506dfdf8ff0552bcf22a  gcc/testsuite/gcc.c-torture/compile/pr13066-1.c
*************** fd7185346c3b94c0a7f7afba7b6bc241  gcc/te
*** 41026,41031 ****
--- 41239,41249 ----
  b7150a91a8e64c0a2f8d47a9f857fd6e  gcc/testsuite/gcc.c-torture/execute/pr119291.c
  e88a36f4cba0e85d5491d4b566b19508  gcc/testsuite/gcc.c-torture/execute/pr119428.c
  eda2af339f8dd266a02b2d61a5444a03  gcc/testsuite/gcc.c-torture/execute/pr120677.c
+ d41fd1ea09327fdf9b68f657aea5661c  gcc/testsuite/gcc.c-torture/execute/pr122000.c
+ 529fc2a1e92dc790d3766cd8554fc89c  gcc/testsuite/gcc.c-torture/execute/pr122943.c
+ cb4c82184137c0933c1bae60a7df15bc  gcc/testsuite/gcc.c-torture/execute/pr123864.c
+ 95b7f2d687a5a5e2df1e09fad845a195  gcc/testsuite/gcc.c-torture/execute/pr123978.c
+ 256e8d04f36f265861609fbe23468388  gcc/testsuite/gcc.c-torture/execute/pr124358.c
  80c02c70a0b6b91b06942e395c34960f  gcc/testsuite/gcc.c-torture/execute/pr15262-1.c
  987c511633ad57d9f08d352eb9512819  gcc/testsuite/gcc.c-torture/execute/pr15262-2.c
  f7f514cfbd791b0c828e0710493b0910  gcc/testsuite/gcc.c-torture/execute/pr15262.c
*************** f5a92a0de23b213fa01a61cf7fe1ae34  gcc/te
*** 42504,42510 ****
  855fbbdc3d5be4f2d0684e44e4fec515  gcc/testsuite/gcc.dg/Wstringop-overflow-44.c
  d4f0d56a7c087ab9e26e9e5b226957e0  gcc/testsuite/gcc.dg/Wstringop-overflow-45.c
  c491d7d16a5eccfc3aa26cb9789fb97e  gcc/testsuite/gcc.dg/Wstringop-overflow-46.c
! 5f6864c29b96decf9d7d12324b2d6be0  gcc/testsuite/gcc.dg/Wstringop-overflow-47.c
  e47b31031fbcddf0625b2f4928216e92  gcc/testsuite/gcc.dg/Wstringop-overflow-49.c
  b6e551c9441e53cd1be6e84faec996ed  gcc/testsuite/gcc.dg/Wstringop-overflow-5.c
  8f7f0322c20d1913c505cfa93fc16056  gcc/testsuite/gcc.dg/Wstringop-overflow-50.c
--- 42722,42728 ----
  855fbbdc3d5be4f2d0684e44e4fec515  gcc/testsuite/gcc.dg/Wstringop-overflow-44.c
  d4f0d56a7c087ab9e26e9e5b226957e0  gcc/testsuite/gcc.dg/Wstringop-overflow-45.c
  c491d7d16a5eccfc3aa26cb9789fb97e  gcc/testsuite/gcc.dg/Wstringop-overflow-46.c
! b1c3da24f9514a3d2af92c76fdb1b45f  gcc/testsuite/gcc.dg/Wstringop-overflow-47.c
  e47b31031fbcddf0625b2f4928216e92  gcc/testsuite/gcc.dg/Wstringop-overflow-49.c
  b6e551c9441e53cd1be6e84faec996ed  gcc/testsuite/gcc.dg/Wstringop-overflow-5.c
  8f7f0322c20d1913c505cfa93fc16056  gcc/testsuite/gcc.dg/Wstringop-overflow-50.c
*************** d23060d9617d607793c74626be7479fe  gcc/te
*** 43042,43048 ****
  1fa3c19e4371898a9f78cb50d95028b8  gcc/testsuite/gcc.dg/analyzer/write-to-function-1.c
  6ec959b42308e02f8a893a9efaf86d98  gcc/testsuite/gcc.dg/analyzer/write-to-string-literal-2.c
  57fc075c8dbac107e616b70295049b4b  gcc/testsuite/gcc.dg/analyzer/write-to-string-literal-3.c
! 4ad6acd95f4f163ad0a0d3d4599de6ee  gcc/testsuite/gcc.dg/analyzer/zlib-3.c
  f879ebf85b514c5e20431d11da89e21f  gcc/testsuite/gcc.dg/analyzer/zlib-6.c
  82d2d50559f8da5c45335800f5d3273e  gcc/testsuite/gcc.dg/analyzer/zlib-6a.c
  9a236d4e4079496d64daed78574cc006  gcc/testsuite/gcc.dg/and-1.c
--- 43260,43266 ----
  1fa3c19e4371898a9f78cb50d95028b8  gcc/testsuite/gcc.dg/analyzer/write-to-function-1.c
  6ec959b42308e02f8a893a9efaf86d98  gcc/testsuite/gcc.dg/analyzer/write-to-string-literal-2.c
  57fc075c8dbac107e616b70295049b4b  gcc/testsuite/gcc.dg/analyzer/write-to-string-literal-3.c
! a2f12a816ca655be9b0789f90e836135  gcc/testsuite/gcc.dg/analyzer/zlib-3.c
  f879ebf85b514c5e20431d11da89e21f  gcc/testsuite/gcc.dg/analyzer/zlib-6.c
  82d2d50559f8da5c45335800f5d3273e  gcc/testsuite/gcc.dg/analyzer/zlib-6a.c
  9a236d4e4079496d64daed78574cc006  gcc/testsuite/gcc.dg/and-1.c
*************** d217543f954eb3f31e246355824f653a  gcc/te
*** 43592,43597 ****
--- 43810,43819 ----
  43db7c5f800ce763fcf885501389882a  gcc/testsuite/gcc.dg/bitint-122.c
  7d02ff9539e664bbbcfc85b464d916c1  gcc/testsuite/gcc.dg/bitint-123.c
  11e6d8eaf7b16f3f8aeaf1c2e626996f  gcc/testsuite/gcc.dg/bitint-124.c
+ c446cf331d60d19eea3950d7f444f8b3  gcc/testsuite/gcc.dg/bitint-125.c
+ 240ade406c4daf5c641e5c4f0bdd5ef5  gcc/testsuite/gcc.dg/bitint-126.c
+ 3fa6e340272f61c5b425b6a54732c94f  gcc/testsuite/gcc.dg/bitint-127.c
+ a7f36d213cef759e44b1ea369391b70d  gcc/testsuite/gcc.dg/bitint-128.c
  aa6e262f1d508ec048e76ac4af6675a4  gcc/testsuite/gcc.dg/bitint-13.c
  e6db29256563268a3c327706e78c79a4  gcc/testsuite/gcc.dg/bitint-14.c
  c748706240385773f27caba61cbbcbd8  gcc/testsuite/gcc.dg/bitint-15.c
*************** d05bdce55447fc39d09a1133e04e88b4  gcc/te
*** 44869,44874 ****
--- 45091,45097 ----
  45e735b0d33fac192a119347115d5b0c  gcc/testsuite/gcc.dg/completion-4.c
  649ce6d53eeda31c7cb4947fab7ac38f  gcc/testsuite/gcc.dg/completion-5.c
  a86556f4f0c72c0bee2f104440830505  gcc/testsuite/gcc.dg/complex-1.c
+ 79e8cd8a2d1264875feb64c5169b21d2  gcc/testsuite/gcc.dg/complex-10.c
  ec2d607c705e532267dc3c09849c554f  gcc/testsuite/gcc.dg/complex-2.c
  da2226add6799fd192e2b367404d1b0b  gcc/testsuite/gcc.dg/complex-2.h
  7cbd734da9d8330b57f4e78af353b9f2  gcc/testsuite/gcc.dg/complex-3.c
*************** c54a3052ec2d03b003a96b460fc1509c  gcc/te
*** 46258,46263 ****
--- 46481,46488 ----
  635a708f0d3160a61cc28f440b7af0d5  gcc/testsuite/gcc.dg/fail_always_inline2.c
  65d997c1872a855cefb9e7177015a53a  gcc/testsuite/gcc.dg/falign-labels-1.c
  2bc0342a25d7d1e316ce2fb511a55ca2  gcc/testsuite/gcc.dg/fastmath-1.c
+ 7b5f81b070e3d174eccc61ceb522baef  gcc/testsuite/gcc.dg/fatal-error-sarif.py
+ 9144b8297d87f2f6d00147e9df8b60d6  gcc/testsuite/gcc.dg/fatal-error.c
  c87b8cb24b5597f6cb6c5620972b8083  gcc/testsuite/gcc.dg/fdata-sections-1.c
  4d70da06c50e6429d5febbbf7d8e42c7  gcc/testsuite/gcc.dg/fdata-sections-2.c
  b0e2b944c95704b8a92af8e96e46c10a  gcc/testsuite/gcc.dg/field-merge-1.c
*************** b545fd5015b04774ac8c95c87722bfc2  gcc/te
*** 46748,46754 ****
  76411379bc46f8e28491db8515c8b035  gcc/testsuite/gcc.dg/freestanding-main.c
  196d33dd29e6d3bd808b05c7472ef1d2  gcc/testsuite/gcc.dg/freestanding-nonint-main.c
  60aef7ab4a0a9bca44f5182276f77cc3  gcc/testsuite/gcc.dg/fshort-wchar.c
! 2d177ba4dab767c88012364d96a56a76  gcc/testsuite/gcc.dg/fstack-protector-strong.c
  e229fba1e745ea8e6ffbf5e48314ecd3  gcc/testsuite/gcc.dg/ftrapv-1.c
  674ce79cdefdee8408c64f5ff5fc573d  gcc/testsuite/gcc.dg/ftrapv-2.c
  9337f6ee91ecdc5686e015d1984a97a2  gcc/testsuite/gcc.dg/ftrapv-3.c
--- 46973,46979 ----
  76411379bc46f8e28491db8515c8b035  gcc/testsuite/gcc.dg/freestanding-main.c
  196d33dd29e6d3bd808b05c7472ef1d2  gcc/testsuite/gcc.dg/freestanding-nonint-main.c
  60aef7ab4a0a9bca44f5182276f77cc3  gcc/testsuite/gcc.dg/fshort-wchar.c
! c03b7986b16e324c69d30de40be5dec9  gcc/testsuite/gcc.dg/fstack-protector-strong.c
  e229fba1e745ea8e6ffbf5e48314ecd3  gcc/testsuite/gcc.dg/ftrapv-1.c
  674ce79cdefdee8408c64f5ff5fc573d  gcc/testsuite/gcc.dg/ftrapv-2.c
  9337f6ee91ecdc5686e015d1984a97a2  gcc/testsuite/gcc.dg/ftrapv-3.c
*************** cd38ec3195ea21395e6d6950ff620410  gcc/te
*** 47117,47122 ****
--- 47342,47349 ----
  a633f425b4fdde0a7b6f0aa6aa2f2754  gcc/testsuite/gcc.dg/gomp/pr108435.c
  20a3ca0acce7dbf1520d374c9470fc34  gcc/testsuite/gcc.dg/gomp/pr110485.c
  7d1b62adb42c340855e993cf480a19ec  gcc/testsuite/gcc.dg/gomp/pr114075.c
+ ec1d4016ba60492b723014b99d2804e6  gcc/testsuite/gcc.dg/gomp/pr121453.c
+ c80489ac8415077c5335cf251371d6e9  gcc/testsuite/gcc.dg/gomp/pr123876.c
  7a163e65fe52b23fc85f2daa18c442ee  gcc/testsuite/gcc.dg/gomp/pr25874.c
  597de3ed24e1bc1c650af918589d83c3  gcc/testsuite/gcc.dg/gomp/pr25989.c
  0bd3e8dc860de61dd8e09229c090e1f5  gcc/testsuite/gcc.dg/gomp/pr25990.c
*************** e39432b4ae7797e55b13f6d2fd29a4a6  gcc/te
*** 48074,48079 ****
--- 48301,48307 ----
  fc7c9c751d59b444d0ab30c4d9029491  gcc/testsuite/gcc.dg/ipa/pr120044-1.c
  538e5a7542c72b7ea4e4375cbebde001  gcc/testsuite/gcc.dg/ipa/pr120044-2.c
  3c119ebca762218e529eb71f0df740de  gcc/testsuite/gcc.dg/ipa/pr120295.c
+ 72900ba4925dafc06ee62e16c28d6287  gcc/testsuite/gcc.dg/ipa/pr124777.c
  c8295ff7fd7e271d17e7609620f5dfcb  gcc/testsuite/gcc.dg/ipa/pr42706.c
  e4887053c792f4f78b03804c148839ce  gcc/testsuite/gcc.dg/ipa/pr45644.c
  6e1b4f2c5d0c0d768778da8e3b7df828  gcc/testsuite/gcc.dg/ipa/pr48195.c
*************** a7add68c69c48bffecd543855bc97366  gcc/te
*** 48405,48410 ****
--- 48633,48640 ----
  313b5ef23d14915b2a6f61b519f95205  gcc/testsuite/gcc.dg/lto/attr-weakref-1_0.c
  8c3a2c4fa0f190c6d2749b5524ab98c4  gcc/testsuite/gcc.dg/lto/attr-weakref-1_1.c
  5a674e54883d5de8ea06860e38b0cd2e  gcc/testsuite/gcc.dg/lto/attr-weakref-1_2.c
+ 18e88a9f17f78b46c1ce166e48f8d785  gcc/testsuite/gcc.dg/lto/attr-weakref-2_0.c
+ 7e33f6cf523487191171fa66361dc197  gcc/testsuite/gcc.dg/lto/attr-weakref-2_1.c
  77a8ef1bedade751008154d0c1ea49c8  gcc/testsuite/gcc.dg/lto/c-compatible-types-1_0.c
  2efe9845bc7f2a94bdb6da1ddfe698fc  gcc/testsuite/gcc.dg/lto/c-compatible-types-1_1.c
  fd5005c6fbb07e4f27713809ef1f5759  gcc/testsuite/gcc.dg/lto/chkp-privatize-1_1.c
*************** d043bebe314f4799a1f686632b791cca  gcc/te
*** 48474,48479 ****
--- 48704,48719 ----
  fc62f9b04cc5a79673dbe5e5bdabbe49  gcc/testsuite/gcc.dg/lto/pr117199_0.c
  6d71a1f58a218031bc3d4d7e09342e22  gcc/testsuite/gcc.dg/lto/pr117201_0.c
  5e48b5b5f991fe6ba63af683c6381505  gcc/testsuite/gcc.dg/lto/pr117288_0.c
+ f5f860d71dee47b53b433d6f33223758  gcc/testsuite/gcc.dg/lto/pr122515_0.c
+ 42ad058eb75d3c988533e8f8eecd45c5  gcc/testsuite/gcc.dg/lto/pr122515_1.c
+ c8348d97dcd57b983e2c4c696a5e8450  gcc/testsuite/gcc.dg/lto/pr122515_2.c
+ bc6aab4d748ab26c406bcfcfd94e43f4  gcc/testsuite/gcc.dg/lto/pr122515_3.c
+ b58dd1aaa3132751d46233b1e6a00a3e  gcc/testsuite/gcc.dg/lto/pr122515_4.c
+ e93496b3dab62466b11fccc4eb64033f  gcc/testsuite/gcc.dg/lto/pr122515_5.c
+ ce39b21091008775415dbe099db0aaf5  gcc/testsuite/gcc.dg/lto/pr122515_6.c
+ 7f03e9f210325e44859aafac7ad2f239  gcc/testsuite/gcc.dg/lto/pr122515_7.c
+ 6028a2dec4dfcb2bf14d8b228fb95959  gcc/testsuite/gcc.dg/lto/pr122515_8.c
+ ba260514a6f9ba02270018e5ccb3fc9c  gcc/testsuite/gcc.dg/lto/pr122515_9.c
  5192817b2492ca93ffadce3b4a5e4794  gcc/testsuite/gcc.dg/lto/pr27898_0.c
  c5f48897247dfaec60df4e32beffcd8e  gcc/testsuite/gcc.dg/lto/pr27898_1.c
  2ad724786bc4b555a7f31e8b3bf164b6  gcc/testsuite/gcc.dg/lto/pr28706_0.c
*************** c8b296cff91e0dc2cbddba1d03bda22e  gcc/te
*** 49069,49076 ****
  98c8542823586860a335df8e4a87940b  gcc/testsuite/gcc.dg/plugin/crash-test-ice-in-header.h
  7ce38991ee9680f25520e34f0eb8e02c  gcc/testsuite/gcc.dg/plugin/crash-test-ice-sarif.c
  25e14555a1456447b35858de17d08ee9  gcc/testsuite/gcc.dg/plugin/crash-test-ice-stderr.c
! 3333d94ad6aeaef96f8f360fbb86bc40  gcc/testsuite/gcc.dg/plugin/crash-test-write-though-null-sarif.c
! 6a8964ce93ffc0bd30309c60194183b2  gcc/testsuite/gcc.dg/plugin/crash-test-write-though-null-stderr.c
  07e231a98872197c9ea4f93a023099fe  gcc/testsuite/gcc.dg/plugin/crash_test_plugin.cc
  146ffa25d8a6444346ca2a51bfa748ec  gcc/testsuite/gcc.dg/plugin/diagnostic-group-test-1.c
  901114feb3fc4bc44a06034fc6abcbff  gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-inline-events-1.c
--- 49309,49316 ----
  98c8542823586860a335df8e4a87940b  gcc/testsuite/gcc.dg/plugin/crash-test-ice-in-header.h
  7ce38991ee9680f25520e34f0eb8e02c  gcc/testsuite/gcc.dg/plugin/crash-test-ice-sarif.c
  25e14555a1456447b35858de17d08ee9  gcc/testsuite/gcc.dg/plugin/crash-test-ice-stderr.c
! 3333d94ad6aeaef96f8f360fbb86bc40  gcc/testsuite/gcc.dg/plugin/crash-test-write-through-null-sarif.c
! 6a8964ce93ffc0bd30309c60194183b2  gcc/testsuite/gcc.dg/plugin/crash-test-write-through-null-stderr.c
  07e231a98872197c9ea4f93a023099fe  gcc/testsuite/gcc.dg/plugin/crash_test_plugin.cc
  146ffa25d8a6444346ca2a51bfa748ec  gcc/testsuite/gcc.dg/plugin/diagnostic-group-test-1.c
  901114feb3fc4bc44a06034fc6abcbff  gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-inline-events-1.c
*************** f22c386d32e16704e73e0ad284bf1ad1  gcc/te
*** 49163,49168 ****
--- 49403,49409 ----
  4644aff4e3d9b41ef0b44eb441b3e574  gcc/testsuite/gcc.dg/plugin/known-fns-1.c
  d3e84ae842f69911a3ac0ceb96542627  gcc/testsuite/gcc.dg/plugin/location-overflow-test-1.c
  b584a46252319e63ce8a18cd3d89f07c  gcc/testsuite/gcc.dg/plugin/location-overflow-test-2.c
+ fe003478e6d8c2bb947402b78ce24063  gcc/testsuite/gcc.dg/plugin/location-overflow-test-3.c
  9e170fe1467d0a1b2ec0d3baf50cff4b  gcc/testsuite/gcc.dg/plugin/location-overflow-test-pr116047-1.h
  668a3b5ad920346b135fa852ca249d17  gcc/testsuite/gcc.dg/plugin/location-overflow-test-pr116047-2.h
  be795e2075413ef468ce241bac4503e2  gcc/testsuite/gcc.dg/plugin/location-overflow-test-pr116047.c
*************** c323b7b4ac0cf2caa641c6bb31350375  gcc/te
*** 49179,49185 ****
  4905199fc259967af414db22821f7f74  gcc/testsuite/gcc.dg/plugin/must_tail_call_plugin.cc
  adbc6d60d6e1474ca93af3b50208e741  gcc/testsuite/gcc.dg/plugin/one_time-test-1.c
  91500c30c78de7048ecb72b86a431e80  gcc/testsuite/gcc.dg/plugin/one_time_plugin.cc
! cb2a99ae3709baa43a8722d591d81b1c  gcc/testsuite/gcc.dg/plugin/plugin.exp
  10b87cc378ff8b6e30ae77af8c669e4b  gcc/testsuite/gcc.dg/plugin/plugindir1.c
  770fbe5bf2a65884c6120dab4b13a1d4  gcc/testsuite/gcc.dg/plugin/plugindir2.c
  5be673fb13573d3689c3cc3dff9f5a2e  gcc/testsuite/gcc.dg/plugin/plugindir3.c
--- 49420,49426 ----
  4905199fc259967af414db22821f7f74  gcc/testsuite/gcc.dg/plugin/must_tail_call_plugin.cc
  adbc6d60d6e1474ca93af3b50208e741  gcc/testsuite/gcc.dg/plugin/one_time-test-1.c
  91500c30c78de7048ecb72b86a431e80  gcc/testsuite/gcc.dg/plugin/one_time_plugin.cc
! 11f55a3fb243cc49e067856dbedf320a  gcc/testsuite/gcc.dg/plugin/plugin.exp
  10b87cc378ff8b6e30ae77af8c669e4b  gcc/testsuite/gcc.dg/plugin/plugindir1.c
  770fbe5bf2a65884c6120dab4b13a1d4  gcc/testsuite/gcc.dg/plugin/plugindir2.c
  5be673fb13573d3689c3cc3dff9f5a2e  gcc/testsuite/gcc.dg/plugin/plugindir3.c
*************** d98596956367fc29b9341da6c0f03f55  gcc/te
*** 49291,49296 ****
--- 49532,49539 ----
  2eebdeb5aef44432de1498de14cbf4e6  gcc/testsuite/gcc.dg/pr101266.c
  a7ea71615239b0d5a09bdb20e483a02f  gcc/testsuite/gcc.dg/pr101285-1.c
  cbe7e390158f186ae3fd0f808bea7563  gcc/testsuite/gcc.dg/pr101294.c
+ 280ab2738fa9f4a59440b24de22faee0  gcc/testsuite/gcc.dg/pr101312-1.c
+ 1e4a8d2edc5aa23b12908e90b5487800  gcc/testsuite/gcc.dg/pr101312-2.c
  2eebc584a5365593600a3822a1b3e97d  gcc/testsuite/gcc.dg/pr101364-1.c
  70303171ed7f5b2cba05e6b98daad2ab  gcc/testsuite/gcc.dg/pr101384.c
  566100ed369cb8ddbb77ca59ac7f4416  gcc/testsuite/gcc.dg/pr101403.c
*************** b4bb8ae97fc12f1c66b22b9149ca7a2b  gcc/te
*** 49567,49572 ****
--- 49810,49816 ----
  45f9003776530da05643fd2fcd9640b8  gcc/testsuite/gcc.dg/pr109392.c
  bfcc628fc6999e234d82894274b24215  gcc/testsuite/gcc.dg/pr109393.c
  c84c4385dc7b913c1ab044bf620d7696  gcc/testsuite/gcc.dg/pr109409.c
+ e3305bd5445d5fff018b1f9ab0c905d3  gcc/testsuite/gcc.dg/pr109410-2.c
  8c5ddd68de1ed874eb52f91b7136909e  gcc/testsuite/gcc.dg/pr109410.c
  3399ef12e5625e30f72a928ee7afca74  gcc/testsuite/gcc.dg/pr109412.c
  86a351ab8a6255c1c7e39f673dcac916  gcc/testsuite/gcc.dg/pr109417.c
*************** d21d6fbc6fc43c655a90fc622dc9b3c2  gcc/te
*** 49734,49739 ****
--- 49978,49984 ----
  2698e38f605926d594403a52f22f5f00  gcc/testsuite/gcc.dg/pr116357.c
  4c67e27f1fbd89fff89dde4e36bf9a5e  gcc/testsuite/gcc.dg/pr116372.c
  7d6461bbfe4e766b9dcb02e2aec22645  gcc/testsuite/gcc.dg/pr116405.c
+ b7d6fb3e14f86c09ea6f178c014109c3  gcc/testsuite/gcc.dg/pr116479.c
  6eaf2c622feb5e0d2e5ca44ab5759351  gcc/testsuite/gcc.dg/pr116481.c
  8a82ecc27f5e5be1a3a5e59a3465ebcf  gcc/testsuite/gcc.dg/pr116588.c
  92460a4ebec7f60dcffc9eb68058c6b8  gcc/testsuite/gcc.dg/pr116726.c
*************** cb7b5505103ef079e746dd619a21ee86  gcc/te
*** 49819,49828 ****
--- 50064,50095 ----
  5bcef1d2686ff4144a4a4fcce9aad3ec  gcc/testsuite/gcc.dg/pr120353.c
  419de75d508972d0daecf2c3b360b2c8  gcc/testsuite/gcc.dg/pr120354.c
  9444444b4f048eadd4b6a2d7592f5fca  gcc/testsuite/gcc.dg/pr120480.c
+ fb8a0a60fb2754e29f845aad904922d4  gcc/testsuite/gcc.dg/pr120560.c
  4a9d9632d82cf6c4f4f4acbad8ab018d  gcc/testsuite/gcc.dg/pr120638.c
  c57884e34f257e33d206372fc675b716  gcc/testsuite/gcc.dg/pr121035.c
+ f67888cb77a175aca5793c68c576187f  gcc/testsuite/gcc.dg/pr121104.c
  d602fec0c129037ce49acd7cccfd6266  gcc/testsuite/gcc.dg/pr121202.c
  7032b52dc2dd1e6cab514293c2d0b276  gcc/testsuite/gcc.dg/pr121322.c
+ a0985c9ac5a161a568f68afc0223c2c1  gcc/testsuite/gcc.dg/pr121506.c
+ 3675df2622072bf0e5cccbf94e93a50f  gcc/testsuite/gcc.dg/pr122126_vextr.c
+ b975ebfa27ac446e553bacbb75421590  gcc/testsuite/gcc.dg/pr122126_vset.c
+ 97e3ae8b831374d54e4e70a229baa234  gcc/testsuite/gcc.dg/pr122572.c
+ 9f4094b7196b5eab8c79608995a96efc  gcc/testsuite/gcc.dg/pr122991.c
+ 9fcb8913b9a18055b2a811284d59780e  gcc/testsuite/gcc.dg/pr123018.c
+ 3190514d319cec9f570a97df97be613b  gcc/testsuite/gcc.dg/pr123294-1.c
+ 5fbcf85870a8e9883872a384e3cf5e12  gcc/testsuite/gcc.dg/pr123300.c
+ abcd5a197963ed0347e0d79e6d9ce62f  gcc/testsuite/gcc.dg/pr123356-1.c
+ ce83c5e57a56f41479e8822e32d633ea  gcc/testsuite/gcc.dg/pr123356-2.c
+ 3e218010f127737b8ec6efbf8cb00273  gcc/testsuite/gcc.dg/pr123431.c
+ b2e314205231dfc3005d83207407379b  gcc/testsuite/gcc.dg/pr123447.c
+ 2e58c4d553f61913c629f0f4e16cef6c  gcc/testsuite/gcc.dg/pr123537.c
+ 1d51dc92bcea9d1f45d53070aed9c180  gcc/testsuite/gcc.dg/pr123672.c
+ c862a5d1aff47e4a5a9bc1b257f3fd19  gcc/testsuite/gcc.dg/pr123856.c
+ 5cd501fa005281d9c622810307478c79  gcc/testsuite/gcc.dg/pr123882.c
+ f402be89e4891c76c691c8144fe168f7  gcc/testsuite/gcc.dg/pr124138.c
+ 0b8c4e1486bc61b4cdb4efb2e7f08d74  gcc/testsuite/gcc.dg/pr124635.c
+ 4ac96a747a32d5c51b5be5c05cdd21c5  gcc/testsuite/gcc.dg/pr125019.c
+ 7b30511bd41fb50fefd587c42e5d984c  gcc/testsuite/gcc.dg/pr125252.c
  bc5ddfbbc46f4e0cce1629d1b58d3090  gcc/testsuite/gcc.dg/pr12603.c
  72a2fca76cb69617ae36bab93c7ec0d7  gcc/testsuite/gcc.dg/pr12625-1.c
  6f0ef61e5a12db5f11da839b2988c5e1  gcc/testsuite/gcc.dg/pr13519-1.c
*************** b0750cc8ba04869cc1e70217f4eebdbc  gcc/te
*** 51486,51494 ****
  51488233d2ef3dad91c1b1404439bff0  gcc/testsuite/gcc.dg/pr87483.c
  b1250df26ff8ccc22fe46e310c4934e6  gcc/testsuite/gcc.dg/pr87485.c
  a357c4dca7ce74a04dd61ff432ff8404  gcc/testsuite/gcc.dg/pr87490.c
! 9f5835dddff06438d1493a4e9eb56c06  gcc/testsuite/gcc.dg/pr87600-1.c
! 941bf2bb808441fd8f30ce9dc0733891  gcc/testsuite/gcc.dg/pr87600-2.c
! 28c810126f7d3c5ae3071696d39f9f29  gcc/testsuite/gcc.dg/pr87600.h
  b7d45912d0dac5e2ce046c07528b0357  gcc/testsuite/gcc.dg/pr87672.c
  1e2ee0fcf0cc52376376b86486419c06  gcc/testsuite/gcc.dg/pr87746.c
  224228e72fa0c94015acbd06f5823e98  gcc/testsuite/gcc.dg/pr87790.c
--- 51753,51761 ----
  51488233d2ef3dad91c1b1404439bff0  gcc/testsuite/gcc.dg/pr87483.c
  b1250df26ff8ccc22fe46e310c4934e6  gcc/testsuite/gcc.dg/pr87485.c
  a357c4dca7ce74a04dd61ff432ff8404  gcc/testsuite/gcc.dg/pr87490.c
! 2074c70265dd55ff5184741b46a809c2  gcc/testsuite/gcc.dg/pr87600-1.c
! b96db39862d2314709fc8f443e2377ae  gcc/testsuite/gcc.dg/pr87600-2.c
! b961b12a1e03a86c009d49be3b3e062a  gcc/testsuite/gcc.dg/pr87600.h
  b7d45912d0dac5e2ce046c07528b0357  gcc/testsuite/gcc.dg/pr87672.c
  1e2ee0fcf0cc52376376b86486419c06  gcc/testsuite/gcc.dg/pr87746.c
  224228e72fa0c94015acbd06f5823e98  gcc/testsuite/gcc.dg/pr87790.c
*************** a9069345cbc40d488766c1fbf34c5555  gcc/te
*** 52009,52014 ****
--- 52276,52282 ----
  85baf2f4880c1f6892aac66e29e93d7a  gcc/testsuite/gcc.dg/rtl/arm/mve-vxbi.c
  0fad692089013e1244e2ad3e5560e613  gcc/testsuite/gcc.dg/rtl/powerpc/move_compare_peephole_32.c
  67d911dae09d634dcf74fac029f1d2e6  gcc/testsuite/gcc.dg/rtl/powerpc/move_compare_peephole_64.c
+ 7c5684bd93ee5f194df629270a23a3fb  gcc/testsuite/gcc.dg/rtl/powerpc/test-frame-related.c
  99f400c18a1446b31c6ca0a7cb30c35c  gcc/testsuite/gcc.dg/rtl/rtl.exp
  75dd0c3d9daa8abdd58a0d0eaf55bd9e  gcc/testsuite/gcc.dg/rtl/test.c
  555898d2432906a81b3aa66cb112a450  gcc/testsuite/gcc.dg/rtl/truncated-rtl-file.c
*************** b36a66c501ef03ad7cedb1c40484affd  gcc/te
*** 52503,52508 ****
--- 52771,52777 ----
  088575aea180cd1ef854fcc43bef2769  gcc/testsuite/gcc.dg/strlenopt-94.c
  92d0e4eba5d71d4f20fc6e1a8575d10f  gcc/testsuite/gcc.dg/strlenopt-95.c
  1abe5480308edb689056d78568150048  gcc/testsuite/gcc.dg/strlenopt-96.c
+ 7acdb4df3aa6d4d3b2a024a99bbaa231  gcc/testsuite/gcc.dg/strlenopt-97.c
  b5f70e58553a0938c1120805bb7995ab  gcc/testsuite/gcc.dg/strlenopt.h
  984ef97553c0d059b2563ed51439cb62  gcc/testsuite/gcc.dg/strncmp-1.c
  f58f592113e43197dadf58bbb685b20d  gcc/testsuite/gcc.dg/strncmp-2.c
*************** c66363249ca43baee9f09bde5baeb896  gcc/te
*** 52512,52517 ****
--- 52781,52787 ----
  6c551fbb45a2e62474fcd9aa76cc7676  gcc/testsuite/gcc.dg/strub-internal-volatile.c
  f863f39bb99153211219b4664754af40  gcc/testsuite/gcc.dg/strub-pr118007.c
  e1737f9100fe39030ff4b356bc6ff29e  gcc/testsuite/gcc.dg/struct-alias-1.c
+ edef350b4a9e0e8719343e4da222a540  gcc/testsuite/gcc.dg/struct-alias-2.c
  756d07d22a151e89582543f5a88bda9f  gcc/testsuite/gcc.dg/struct-by-value-1.c
  fff906a27910e082e50f16054f4642c4  gcc/testsuite/gcc.dg/struct-by-value-2.c
  690c0c9a2bb5e991b2ad555aa009a37c  gcc/testsuite/gcc.dg/struct-empty-1.c
*************** d74952b1e73d78295fc0ccb16c0a8b6f  gcc/te
*** 52869,52874 ****
--- 53139,53145 ----
  896ba6298bac21304239e8c0dcbadbd9  gcc/testsuite/gcc.dg/torture/bitint-76.c
  2608aa69ac055d04559dce7394b97765  gcc/testsuite/gcc.dg/torture/bitint-77.c
  cf2a2337cf009457d836bd48e49c0af3  gcc/testsuite/gcc.dg/torture/bitint-8.c
+ 368a2f51dfadfa4e9fbd0017065b6a83  gcc/testsuite/gcc.dg/torture/bitint-85.c
  4d03bd57dac0507a44cc15b9afacd8a3  gcc/testsuite/gcc.dg/torture/bitint-9.c
  cf9904d4026e69bddaf745011bbaaab3  gcc/testsuite/gcc.dg/torture/builtin-attr-1.c
  c3c39411545c83e500562780b71883b6  gcc/testsuite/gcc.dg/torture/builtin-complex-1.c
*************** b04080329963def55af4aa7a95268fbe  gcc/te
*** 52899,52905 ****
  fa7bdb79eb170773050b26a5ed2ae1ec  gcc/testsuite/gcc.dg/torture/builtin-math-3.c
  86c9312908e71a32a216fd720343d58f  gcc/testsuite/gcc.dg/torture/builtin-math-4.c
  091ba46b9b5948f7b1173f21c6c558b6  gcc/testsuite/gcc.dg/torture/builtin-math-5.c
! 35aafd27620207da2f66dd0e44ff780f  gcc/testsuite/gcc.dg/torture/builtin-math-6.c
  6f699b99531328babffd4ec110ba2fd7  gcc/testsuite/gcc.dg/torture/builtin-math-7.c
  c77f4d57bad6850b166ed11f47ce8a4e  gcc/testsuite/gcc.dg/torture/builtin-math-8.c
  d7925eb09751128af786d99274bd0ab7  gcc/testsuite/gcc.dg/torture/builtin-minmax-1.c
--- 53170,53176 ----
  fa7bdb79eb170773050b26a5ed2ae1ec  gcc/testsuite/gcc.dg/torture/builtin-math-3.c
  86c9312908e71a32a216fd720343d58f  gcc/testsuite/gcc.dg/torture/builtin-math-4.c
  091ba46b9b5948f7b1173f21c6c558b6  gcc/testsuite/gcc.dg/torture/builtin-math-5.c
! 2a86d2b8d17f5c82a3b1eac7e071ce50  gcc/testsuite/gcc.dg/torture/builtin-math-6.c
  6f699b99531328babffd4ec110ba2fd7  gcc/testsuite/gcc.dg/torture/builtin-math-7.c
  c77f4d57bad6850b166ed11f47ce8a4e  gcc/testsuite/gcc.dg/torture/builtin-math-8.c
  d7925eb09751128af786d99274bd0ab7  gcc/testsuite/gcc.dg/torture/builtin-minmax-1.c
*************** b465b03e50a5f0e6eb3f4fc778cae87c  gcc/te
*** 52913,52918 ****
--- 53184,53190 ----
  c1b87db2a9e9bd9b79aeb89e694fd159  gcc/testsuite/gcc.dg/torture/builtin-round-roundevenf128.c
  9e1b5d427790f2b01d5620a8b551a56a  gcc/testsuite/gcc.dg/torture/builtin-rounding-1.c
  e09f1e946db0ab1dc4d3acd77ea2b116  gcc/testsuite/gcc.dg/torture/builtin-self.c
+ c2dc4a738c80577d7e4b917e325e63aa  gcc/testsuite/gcc.dg/torture/builtin-shufflevector-pr123156.c
  fe01d458fb1e7b307aca4d27de62eff0  gcc/testsuite/gcc.dg/torture/builtin-sin-mpfr-1.c
  8d42dae4813a5c391a3481a72ac9c577  gcc/testsuite/gcc.dg/torture/builtin-sprintf.c
  23e1ea0bdd97005c1b4f8564d23f2b6a  gcc/testsuite/gcc.dg/torture/builtin-sqrt-cmp-1.c
*************** f5aad1409cbbb9e3039cb7da55080bc6  gcc/te
*** 53349,53354 ****
--- 53621,53627 ----
  14f1b7a5c96c7b0b8a599f2567caf3e0  gcc/testsuite/gcc.dg/torture/pr109652.c
  2187f595796e8269bf267180b56e18a8  gcc/testsuite/gcc.dg/torture/pr109689.c
  c1a87948bd38764af99342569982d720  gcc/testsuite/gcc.dg/torture/pr109940.c
+ cfb24796cf777565d6ee8e3cc9faa0c1  gcc/testsuite/gcc.dg/torture/pr110043.c
  c68e0fca588779377278aa9e84380d07  gcc/testsuite/gcc.dg/torture/pr110176.c
  0c0edd5cb473e3baec880eabda166963  gcc/testsuite/gcc.dg/torture/pr110228.c
  37a4a130bd302ce957ac9e65b5949c60  gcc/testsuite/gcc.dg/torture/pr110243.c
*************** fd4292c0fcabd728ea0a1a6dbef87843  gcc/te
*** 53369,53374 ****
--- 53642,53648 ----
  b6cc54f5d02a9045680d8ba8b767f7b8  gcc/testsuite/gcc.dg/torture/pr110924.c
  4dd66a9e59fc17c29835a93cd50deb03  gcc/testsuite/gcc.dg/torture/pr110979.c
  fa1cc5eb743efae6b534499912897d96  gcc/testsuite/gcc.dg/torture/pr111000.c
+ 7423e38f878a6e56fb7be82847619a5b  gcc/testsuite/gcc.dg/torture/pr111036.c
  1dd35b4e28b7f72f0b12fbe3e5efb60a  gcc/testsuite/gcc.dg/torture/pr111048.c
  b3155d2832f93397879a73cc5d6f43b5  gcc/testsuite/gcc.dg/torture/pr111128.c
  a5aabe56aa9f2db146fb1185eabbfacb  gcc/testsuite/gcc.dg/torture/pr111137.c
*************** a416af0125bad612c0cf46a5d6401e54  gcc/te
*** 53467,53472 ****
--- 53741,53747 ----
  cbf3e9074438c0fc59d7ba99a6377906  gcc/testsuite/gcc.dg/torture/pr116199.c
  781d8c238ddfb27c94a693a296ccb610  gcc/testsuite/gcc.dg/torture/pr116278-run-1.c
  164e88d40fc4ae642a6d4b4c04eb1f53  gcc/testsuite/gcc.dg/torture/pr116278-run-2.c
+ d55420193b502affe4f12bc50e33bc30  gcc/testsuite/gcc.dg/torture/pr116296.c
  2681c6cd00e71033ee5e58d3d2e24776  gcc/testsuite/gcc.dg/torture/pr116343.c
  99a6c1e6285db8d08064cd8aaa300ddd  gcc/testsuite/gcc.dg/torture/pr116380.c
  b0e70276ca1233459713c4c0637f5c31  gcc/testsuite/gcc.dg/torture/pr116409-1.c
*************** e1b9ad351c56aebfaff790ff4002bf6e  gcc/te
*** 53545,53557 ****
  68b7b9a81ceb31b6b33b9a797a7f6c30  gcc/testsuite/gcc.dg/torture/pr120242.c
  e9469d38b4234580f9b2284233404b3c  gcc/testsuite/gcc.dg/torture/pr120341-1.c
  aef01c040da8abd2a1e547ed6a07eb5a  gcc/testsuite/gcc.dg/torture/pr120341-2.c
! 12e839fd30c3a301bab4708aee3c9815  gcc/testsuite/gcc.dg/torture/pr120347.c
  590593d14c26e1d9ed776d01fc734a3c  gcc/testsuite/gcc.dg/torture/pr120369-1.c
  437bb98a945fa9a075fd7999043aea48  gcc/testsuite/gcc.dg/torture/pr120627.c
  e6e17b2280f19928b738f46328c5dcf7  gcc/testsuite/gcc.dg/torture/pr120654.c
  d9a43196d2efe2fcc49c98e125a9d6b3  gcc/testsuite/gcc.dg/torture/pr120736.c
  a789d5fa70ddcb7ea1760ee8688e331c  gcc/testsuite/gcc.dg/torture/pr120813.c
  e23df6b1422011499b9a500d2bf25add  gcc/testsuite/gcc.dg/torture/pr120944.c
  ded4330fd1cd52783bd9b1761db038ef  gcc/testsuite/gcc.dg/torture/pr16104-1.c
  fc265ee05da2f29f0e92804661cd1f28  gcc/testsuite/gcc.dg/torture/pr17526.c
  01c583edb41b632b835aa892b9c1cb14  gcc/testsuite/gcc.dg/torture/pr17933-1.c
--- 53820,53860 ----
  68b7b9a81ceb31b6b33b9a797a7f6c30  gcc/testsuite/gcc.dg/torture/pr120242.c
  e9469d38b4234580f9b2284233404b3c  gcc/testsuite/gcc.dg/torture/pr120341-1.c
  aef01c040da8abd2a1e547ed6a07eb5a  gcc/testsuite/gcc.dg/torture/pr120341-2.c
! 4a4948f29f25c101f9c54f3a82dbd2f2  gcc/testsuite/gcc.dg/torture/pr120347.c
  590593d14c26e1d9ed776d01fc734a3c  gcc/testsuite/gcc.dg/torture/pr120369-1.c
  437bb98a945fa9a075fd7999043aea48  gcc/testsuite/gcc.dg/torture/pr120627.c
  e6e17b2280f19928b738f46328c5dcf7  gcc/testsuite/gcc.dg/torture/pr120654.c
  d9a43196d2efe2fcc49c98e125a9d6b3  gcc/testsuite/gcc.dg/torture/pr120736.c
  a789d5fa70ddcb7ea1760ee8688e331c  gcc/testsuite/gcc.dg/torture/pr120813.c
  e23df6b1422011499b9a500d2bf25add  gcc/testsuite/gcc.dg/torture/pr120944.c
+ 8d649d57fe1e60239f2949a9cbec8646  gcc/testsuite/gcc.dg/torture/pr121103-1.c
+ d41266e6594db1994e416e7a7353751e  gcc/testsuite/gcc.dg/torture/pr121370.c
+ c2d31caef52166d51e81e4dc165eda16  gcc/testsuite/gcc.dg/torture/pr121649.c
+ ce9e02c12e351b909cd41d27cbe670cc  gcc/testsuite/gcc.dg/torture/pr121661-1.c
+ 949a4a95ad545289488a204b883b05d6  gcc/testsuite/gcc.dg/torture/pr121844.c
+ a0fb3a08e712a34686912f981529e52a  gcc/testsuite/gcc.dg/torture/pr122012.c
+ 256200aae431c6598adbd4613b49ae06  gcc/testsuite/gcc.dg/torture/pr122016.c
+ d4560440fd7b3647f8780537a59e4716  gcc/testsuite/gcc.dg/torture/pr122188.c
+ 98c07926a433421f3c019c7e8bf58ed7  gcc/testsuite/gcc.dg/torture/pr122537.c
+ 3142210a35bdb6d31b5c4bb65cf8e9e4  gcc/testsuite/gcc.dg/torture/pr123061.c
+ 10b3b873efcbbc683b1b7bc118deaf44  gcc/testsuite/gcc.dg/torture/pr123107.c
+ 555e199e2c16f6c135742459dd2921b3  gcc/testsuite/gcc.dg/torture/pr123175-1.c
+ a57694d59f86b331962949b865331a14  gcc/testsuite/gcc.dg/torture/pr123175-2.c
+ e03287adad00d313766ecc2e039fb9b5  gcc/testsuite/gcc.dg/torture/pr123298.c
+ 0cd9b5f403d655ca4804a15fc23543fd  gcc/testsuite/gcc.dg/torture/pr123416.c
+ 7d1a217129f5166f7cde3b004649bea9  gcc/testsuite/gcc.dg/torture/pr123636.c
+ ea90221ab80b5c3561ffc7665d2a343a  gcc/testsuite/gcc.dg/torture/pr123645-1.c
+ c6c07c813f67e0f94f1352f2810dfcff  gcc/testsuite/gcc.dg/torture/pr123645-2.c
+ 50838f4736657229a26dc1b011faf8d3  gcc/testsuite/gcc.dg/torture/pr123864.c
+ 846de4745dc42cf6d9abe36308df2301  gcc/testsuite/gcc.dg/torture/pr123887-2.c
+ 45e84720260c50c6a2acdec6f8eec9ca  gcc/testsuite/gcc.dg/torture/pr123887.c
+ d4f9bc1a728b13f9940b71ab03cc40fd  gcc/testsuite/gcc.dg/torture/pr124132.c
+ e394027559c72da3f714e1f0bce86a7c  gcc/testsuite/gcc.dg/torture/pr124555.c
+ 16b777622562135656ac0ab96375cfb5  gcc/testsuite/gcc.dg/torture/pr124868.c
+ c2d3ac4b0fce6da2e8aaeaf741803572  gcc/testsuite/gcc.dg/torture/pr124891.c
+ fbe779467ae6f7cb7ee578922f1e8686  gcc/testsuite/gcc.dg/torture/pr125025.c
+ a5b9e215eaee30cede04135bd18b6a59  gcc/testsuite/gcc.dg/torture/pr125153.c
+ f4849047990250a3f9ee017d25b29b9a  gcc/testsuite/gcc.dg/torture/pr125250.c
  ded4330fd1cd52783bd9b1761db038ef  gcc/testsuite/gcc.dg/torture/pr16104-1.c
  fc265ee05da2f29f0e92804661cd1f28  gcc/testsuite/gcc.dg/torture/pr17526.c
  01c583edb41b632b835aa892b9c1cb14  gcc/testsuite/gcc.dg/torture/pr17933-1.c
*************** d2e1860fa8199fa9cae01ffe45caa0c0  gcc/te
*** 54662,54668 ****
  d870c565ecc3624fb4fbcb1510c36484  gcc/testsuite/gcc.dg/torture/tree-loop-1.c
  95f12088e6a4e2a5036a44816c58215b  gcc/testsuite/gcc.dg/torture/type-generic-1.c
  bd588e9316f28797985023db337c730b  gcc/testsuite/gcc.dg/torture/va-arg-25.c
! 5c82e599e9517c158609d3871bb6ab3f  gcc/testsuite/gcc.dg/torture/vec-cvt-1.c
  70a7b1e7d786a67e8b07f4d2d0baba21  gcc/testsuite/gcc.dg/torture/vect-bool-1.c
  b8ce84a799f856b87c466889006803da  gcc/testsuite/gcc.dg/torture/vector-1.c
  8f292f1e4488a6043de93ca455705faf  gcc/testsuite/gcc.dg/torture/vector-2.c
--- 54965,54971 ----
  d870c565ecc3624fb4fbcb1510c36484  gcc/testsuite/gcc.dg/torture/tree-loop-1.c
  95f12088e6a4e2a5036a44816c58215b  gcc/testsuite/gcc.dg/torture/type-generic-1.c
  bd588e9316f28797985023db337c730b  gcc/testsuite/gcc.dg/torture/va-arg-25.c
! a2fa4a55ce8fbbb549f006c693524abb  gcc/testsuite/gcc.dg/torture/vec-cvt-1.c
  70a7b1e7d786a67e8b07f4d2d0baba21  gcc/testsuite/gcc.dg/torture/vect-bool-1.c
  b8ce84a799f856b87c466889006803da  gcc/testsuite/gcc.dg/torture/vector-1.c
  8f292f1e4488a6043de93ca455705faf  gcc/testsuite/gcc.dg/torture/vector-2.c
*************** bbd27c9626a85b85613edc25e673f5b8  gcc/te
*** 55176,55181 ****
--- 55479,55485 ----
  88685d259411b8277a35ca6a1e889adb  gcc/testsuite/gcc.dg/tree-ssa/copy-sign-2.c
  ab9071615cb96e67306f62799834192d  gcc/testsuite/gcc.dg/tree-ssa/copy-sign-3.c
  3e33363df98971ca2810932b7646d933  gcc/testsuite/gcc.dg/tree-ssa/counts-1.c
+ 87cfb5f2ac7de7373e23d0716af3b247  gcc/testsuite/gcc.dg/tree-ssa/cselim-4.c
  cb85a2159e6429ded025be9506d3d3ec  gcc/testsuite/gcc.dg/tree-ssa/cswtch-2.c
  eff8f806b1a91fc87bafb5aaff55fd32  gcc/testsuite/gcc.dg/tree-ssa/cswtch-3.c
  b51831242139a92b34dbcd60cebb1cd5  gcc/testsuite/gcc.dg/tree-ssa/cswtch-4.c
*************** c4d85f1a0ac2c091e026cf0d052e2f21  gcc/te
*** 55294,55301 ****
  fc8efeaf2ed7c9bba5d4f1717e7e356b  gcc/testsuite/gcc.dg/tree-ssa/forwprop-38.c
  260a7d066794f7642a568e403fb5e5d4  gcc/testsuite/gcc.dg/tree-ssa/forwprop-39.c
  cb909e7812f73f90414b63042c95d199  gcc/testsuite/gcc.dg/tree-ssa/forwprop-4.c
! eb894750e8c2c762096d861a6009f51a  gcc/testsuite/gcc.dg/tree-ssa/forwprop-40.c
! a7f663adfd228e0c28c58bd9894c4b57  gcc/testsuite/gcc.dg/tree-ssa/forwprop-41.c
  d56422e63543fcf4bf4b78d825c534da  gcc/testsuite/gcc.dg/tree-ssa/forwprop-5.c
  0f6dc2b3b3469af9cd27d5b5cd97353c  gcc/testsuite/gcc.dg/tree-ssa/forwprop-6.c
  a9096c4b5b756bdc9dcc196398730d73  gcc/testsuite/gcc.dg/tree-ssa/forwprop-7.c
--- 55598,55605 ----
  fc8efeaf2ed7c9bba5d4f1717e7e356b  gcc/testsuite/gcc.dg/tree-ssa/forwprop-38.c
  260a7d066794f7642a568e403fb5e5d4  gcc/testsuite/gcc.dg/tree-ssa/forwprop-39.c
  cb909e7812f73f90414b63042c95d199  gcc/testsuite/gcc.dg/tree-ssa/forwprop-4.c
! de0d5a27a8224396ca0f19ef47a34440  gcc/testsuite/gcc.dg/tree-ssa/forwprop-40.c
! b37bc1a875a42a06f975ad9f2fd0cfe6  gcc/testsuite/gcc.dg/tree-ssa/forwprop-41.c
  d56422e63543fcf4bf4b78d825c534da  gcc/testsuite/gcc.dg/tree-ssa/forwprop-5.c
  0f6dc2b3b3469af9cd27d5b5cd97353c  gcc/testsuite/gcc.dg/tree-ssa/forwprop-6.c
  a9096c4b5b756bdc9dcc196398730d73  gcc/testsuite/gcc.dg/tree-ssa/forwprop-7.c
*************** c4778a5d167ea622bf99df287c4bd701  gcc/te
*** 55312,55319 ****
  c177f823491b23ed671dd72cae6bdd38  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11c.c
  981ec8a8f9969e2f4fb9ade9b962de95  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-2.c
  5ae2c5d6d98bb28c830c4edfe000bf66  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-25.c
! 90512bbeacddcca66fd3984243eb5137  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-26.c
! 8cb7818e3e640f1d01eb6c6cb43f1975  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-28.c
  05e95b989cfdf6357a178aa625f98417  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-32.c
  c700544c3e68a401546cefbdad359728  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-33.c
  955e41ee303f67ec226ec41283fd05af  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-34.c
--- 55616,55623 ----
  c177f823491b23ed671dd72cae6bdd38  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11c.c
  981ec8a8f9969e2f4fb9ade9b962de95  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-2.c
  5ae2c5d6d98bb28c830c4edfe000bf66  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-25.c
! acf55a2a50daef94fee7e4893c59907f  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-26.c
! 32868b3ca203b17bb1a2fcb3daaec66b  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-28.c
  05e95b989cfdf6357a178aa625f98417  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-32.c
  c700544c3e68a401546cefbdad359728  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-33.c
  955e41ee303f67ec226ec41283fd05af  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-34.c
*************** b8236d8ce423075243050d2ed9692781  gcc/te
*** 55864,55869 ****
--- 56168,56175 ----
  6d2d98158a34d9ab09e487779a321f3d  gcc/testsuite/gcc.dg/tree-ssa/pr118637.c
  b0891b1dddf226da47f4f976abdd7cb0  gcc/testsuite/gcc.dg/tree-ssa/pr119085.c
  ef9f94de68c006babcf9169489ed1b51  gcc/testsuite/gcc.dg/tree-ssa/pr121264.c
+ 71eb14b3ae5faf81c5226dc766d48edd  gcc/testsuite/gcc.dg/tree-ssa/pr122976.c
+ fa32f3c662bc31e5bbf4daa360b9c87f  gcc/testsuite/gcc.dg/tree-ssa/pr123372.c
  78e6c5fe63f7305009c8a79840fe20dc  gcc/testsuite/gcc.dg/tree-ssa/pr13146.c
  eab19e0c04884cd782c9879cbe292109  gcc/testsuite/gcc.dg/tree-ssa/pr14341.c
  9945ed7002a5f7d4918e8ff5eb4cb647  gcc/testsuite/gcc.dg/tree-ssa/pr14490-1.c
*************** c80e73a06995d8806bc8a56ee1df1346  gcc/te
*** 56730,56736 ****
  05aea1a4d7030c5cf55b50b84dc9f78f  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2g.c
  15738f38675ee569391bc24effefc64b  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2h.c
  881f6db6cb1a3e63bf8dd2e0f203cc95  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-5.c
! 342510956765f8f3e21a344fc1792bae  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c
  de890ed0b8a4a8f0e19572bf759856a3  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-8.c
  1e01eee87c695d67cde163a4530069b0  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-9.c
  9131f70d5244737552818651f478cdc5  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-1.c
--- 57036,57042 ----
  05aea1a4d7030c5cf55b50b84dc9f78f  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2g.c
  15738f38675ee569391bc24effefc64b  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2h.c
  881f6db6cb1a3e63bf8dd2e0f203cc95  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-5.c
! ec9a74654ae0e303d2f9e1186eb48c55  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c
  de890ed0b8a4a8f0e19572bf759856a3  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-8.c
  1e01eee87c695d67cde163a4530069b0  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-9.c
  9131f70d5244737552818651f478cdc5  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-1.c
*************** bc1b0eb9d58483a9f609b164efd64d18  gcc/te
*** 56925,56930 ****
--- 57231,57237 ----
  6a109e21502e5353e985b8e9180f3c79  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-23.c
  99cacb357948a00b34aa1d255c66558b  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-24.c
  a3fc09fc73db236301044a5b2f7e7fea  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-25.c
+ 982d2d128f70750a32db6150ef8991ef  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-26.c
  c0ab69fe1a4b916817bbafe5e5048c34  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-3.c
  d00d2a078458d4fc876af7d2a29c241a  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-5.c
  769aa5eb478537be389d55c410c46887  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-6.c
*************** d27e19cbc74977f6d1e4eb7b508acbd2  gcc/te
*** 57005,57011 ****
  8754296b236f3b2f6abfa14ca2a80025  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-20.c
  5ccdb84afe4b17b83db35bd3a776f132  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-21.c
  be15956f5f5a8f21ac672a6ca9016095  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-22.c
- 1d6f4a0bcf8f68e346da79304c115731  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-23.c
  f9ec9861cfad29ae5e65f5801dec8b35  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-backedge.c
  345c2de66411a0afb210e968afaa62c0  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-invalid.c
  31af1b6bef4a6bfebd6ec195519366b8  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-valid.c
--- 57312,57317 ----
*************** df707465bb7e4b000207abad1e61b5e2  gcc/te
*** 57835,57841 ****
  00ebbce7dff85c1103b133cb02ef7fc7  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-half-float.c
  005c2fcc6a33e2f2e3160f2d41f80ea9  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-double.c
  59528ce01adb89a3254370b6e4775877  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-float.c
! 27913b4773f2c29692c33dfc232be411  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-half-float.c
  be8d0bd6699017c7caaca7b550b1ffbe  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-double.c
  12056b4bb025a055ab0b31784ca370c7  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-float.c
  4f0b37f5423ec8aff3036781000b82e0  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-half-float.c
--- 58141,58147 ----
  00ebbce7dff85c1103b133cb02ef7fc7  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-half-float.c
  005c2fcc6a33e2f2e3160f2d41f80ea9  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-double.c
  59528ce01adb89a3254370b6e4775877  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-float.c
! a84e480c43ff803e618e80cd3f8efbd3  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-half-float.c
  be8d0bd6699017c7caaca7b550b1ffbe  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-double.c
  12056b4bb025a055ab0b31784ca370c7  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-float.c
  4f0b37f5423ec8aff3036781000b82e0  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-half-float.c
*************** ae171ef5347c321225b18e5907b1331b  gcc/te
*** 58248,58253 ****
--- 58554,58560 ----
  7df91aea22a8a2dc08bd0d355fa30fae  gcc/testsuite/gcc.dg/vect/pr120817.c
  ea5b3c05fffa7f697082308298dd7c5c  gcc/testsuite/gcc.dg/vect/pr121049.c
  3ccd618a730abdb13ec305c26f14ac22  gcc/testsuite/gcc.dg/vect/pr121059.c
+ 60bff40ff6b8164be9848d671cc43701  gcc/testsuite/gcc.dg/vect/pr121659.c
  42d48d2ecd5682545b12ac42f879a831  gcc/testsuite/gcc.dg/vect/pr16105.c
  231c99dba9475fe09525bbf6f4374124  gcc/testsuite/gcc.dg/vect/pr18308.c
  915cf38408eaa7fee5013d90ec1c3251  gcc/testsuite/gcc.dg/vect/pr18400.c
*************** c317cb696a26bea6d51beb4b38e72094  gcc/te
*** 58872,58878 ****
  226f54e6f293495fd6c000a73ed8b7a3  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s323.c
  61d0197203c46e31e39c8c4f8ad9e853  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s3251.c
  5c71ac7653e5a2836d2465a9f13c6ede  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s331.c
! bf0687fd782a94fee64bb5a6231b7710  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s332.c
  1fa698b706ad7a329bb8f12d8c9de007  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s341.c
  a574c6728b7b30ed7cb79cad1aca2a5b  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s342.c
  e54027ff8457ca286ef1dc9996df732c  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s343.c
--- 59179,59185 ----
  226f54e6f293495fd6c000a73ed8b7a3  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s323.c
  61d0197203c46e31e39c8c4f8ad9e853  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s3251.c
  5c71ac7653e5a2836d2465a9f13c6ede  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s331.c
! 53a5d5cd29c902bc0475399ff4b0f9e6  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s332.c
  1fa698b706ad7a329bb8f12d8c9de007  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s341.c
  a574c6728b7b30ed7cb79cad1aca2a5b  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s342.c
  e54027ff8457ca286ef1dc9996df732c  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s343.c
*************** da2e0ca1db6e6911aecfa27990b0f4e7  gcc/te
*** 58898,58905 ****
  71c7e2710eb0d787abf80641134c8464  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s452.c
  0a53ab45e8069125854b0ad478690528  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s453.c
  8840c708a7f2798298113799bfaaea0b  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s471.c
! 7d9d5fc521d92219b5cd950f9bf40394  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s481.c
! 6d1198c692415eb73b7ee5001abac6ec  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s482.c
  ab963c718fe086a0fc72501588ceb52f  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s491.c
  69786ca5ac25ed37637f1c1fc9a0ea8f  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-va.c
  e66f09a7a57dbc6fd0a0e6f0ae175ceb  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-vag.c
--- 59205,59212 ----
  71c7e2710eb0d787abf80641134c8464  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s452.c
  0a53ab45e8069125854b0ad478690528  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s453.c
  8840c708a7f2798298113799bfaaea0b  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s471.c
! 18638a696cc1001bf4359e5dad5abf55  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s481.c
! 6c5035d692f7ead08fd0b1f21b1b6828  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s482.c
  ab963c718fe086a0fc72501588ceb52f  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s491.c
  69786ca5ac25ed37637f1c1fc9a0ea8f  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-va.c
  e66f09a7a57dbc6fd0a0e6f0ae175ceb  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-vag.c
*************** d69a35cfdc5358c8603e5c2e35112d75  gcc/te
*** 59259,59264 ****
--- 59566,59575 ----
  b14a7c563931d32378d5a7c177b4a9c9  gcc/testsuite/gcc.dg/vect/vect-early-break_136-pr120357.c
  40ef6dac17d7e04eaed85a5b371dc2eb  gcc/testsuite/gcc.dg/vect/vect-early-break_137-pr121190.c
  73bc7475d6af2bd77455abec5df316e4  gcc/testsuite/gcc.dg/vect/vect-early-break_14.c
+ 0f94ea8d32566351c449ef0923f780bb  gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_1.c
+ fca55cf03db9d8a5e743486b3427a96a  gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_2.c
+ 8cbd75311a4ecc168ec09085f538c7d0  gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_3.c
+ 25d4d94bafb1405becf55cc15f94275e  gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_4.c
  e90473e2ecf7c08db9278bdca5060773  gcc/testsuite/gcc.dg/vect/vect-early-break_15.c
  2232d395ceff11af9b28f269e86162c9  gcc/testsuite/gcc.dg/vect/vect-early-break_16.c
  74848a5e9be64a5356628885f52c286b  gcc/testsuite/gcc.dg/vect/vect-early-break_17.c
*************** f85ef0b99140422d78068ad18a39e03b  gcc/te
*** 59362,59372 ****
  b10686cc9cc745d9a4e579ee285eae2d  gcc/testsuite/gcc.dg/vect/vect-fma-2.c
  f26bda59075ce8ddcb0291dc86a118b3  gcc/testsuite/gcc.dg/vect/vect-fma-3.c
  609ec8572941506ac02bdead3631cf1a  gcc/testsuite/gcc.dg/vect/vect-fmax-1.c
! 8dd709fc543f80ce70588b05e38be7ae  gcc/testsuite/gcc.dg/vect/vect-fmax-2.c
! b913a0ce97e1075ed9731f6e62b860bf  gcc/testsuite/gcc.dg/vect/vect-fmax-3.c
  f7641c61bbf333053e42be5bfa67d8e4  gcc/testsuite/gcc.dg/vect/vect-fmin-1.c
! 33e9990b22cd49f97ec590b283e99e41  gcc/testsuite/gcc.dg/vect/vect-fmin-2.c
! 92e4333ba4e6a6e7852441677e9dd7e1  gcc/testsuite/gcc.dg/vect/vect-fmin-3.c
  beb6b00a289da33c6502147b465dbdfd  gcc/testsuite/gcc.dg/vect/vect-fncall-mask-math.c
  ddb5b38696ce380776208fd63305431f  gcc/testsuite/gcc.dg/vect/vect-fncall-mask.c
  e41338bfbaaf9c5f7d3e7394fd0720c0  gcc/testsuite/gcc.dg/vect/vect-fold-1.c
--- 59673,59683 ----
  b10686cc9cc745d9a4e579ee285eae2d  gcc/testsuite/gcc.dg/vect/vect-fma-2.c
  f26bda59075ce8ddcb0291dc86a118b3  gcc/testsuite/gcc.dg/vect/vect-fma-3.c
  609ec8572941506ac02bdead3631cf1a  gcc/testsuite/gcc.dg/vect/vect-fmax-1.c
! ff69a9e19928b3a1de48ce1b898d4a45  gcc/testsuite/gcc.dg/vect/vect-fmax-2.c
! d6b11f32049737083a9d8a816c7de6db  gcc/testsuite/gcc.dg/vect/vect-fmax-3.c
  f7641c61bbf333053e42be5bfa67d8e4  gcc/testsuite/gcc.dg/vect/vect-fmin-1.c
! 0cde09c690b3ca2b483cb6ce9cc4115e  gcc/testsuite/gcc.dg/vect/vect-fmin-2.c
! c8add09e1cb63057bdcddaad5063ed57  gcc/testsuite/gcc.dg/vect/vect-fmin-3.c
  beb6b00a289da33c6502147b465dbdfd  gcc/testsuite/gcc.dg/vect/vect-fncall-mask-math.c
  ddb5b38696ce380776208fd63305431f  gcc/testsuite/gcc.dg/vect/vect-fncall-mask.c
  e41338bfbaaf9c5f7d3e7394fd0720c0  gcc/testsuite/gcc.dg/vect/vect-fold-1.c
*************** a0e208729117f798ee5200a51a9c258b  gcc/te
*** 59561,59566 ****
--- 59872,59881 ----
  8689fbd68c008546f301818654595aab  gcc/testsuite/gcc.dg/vect/vect-pr114375.c
  8006cd394692bd071c0417ad10367515  gcc/testsuite/gcc.dg/vect/vect-pr120927-2.c
  dca085f893f46ecb56c7cecb15a42090  gcc/testsuite/gcc.dg/vect/vect-pr120927.c
+ f4b106f1a647b041f524318378f476f5  gcc/testsuite/gcc.dg/vect/vect-pr122793.c
+ 5346702060f2a1fdcbef60b8759f436c  gcc/testsuite/gcc.dg/vect/vect-pr123002.c
+ da160a8349fe2e0daa932c3bd967f635  gcc/testsuite/gcc.dg/vect/vect-pr124677.c
+ 09beadb34e2b0bfa6179ef89f2e6d9f7  gcc/testsuite/gcc.dg/vect/vect-pr124802.c
  4d57df9e3b3522c9f1a6707c05f1da45  gcc/testsuite/gcc.dg/vect/vect-pr69848.c
  3a3a316ff2f2496494ecb0bd77d61aad  gcc/testsuite/gcc.dg/vect/vect-pre-interact.c
  b860939f62d716a264f763f82b69b2c8  gcc/testsuite/gcc.dg/vect/vect-prefetch-drop.c
*************** bc0f68b226839ed569e371de527479fe  gcc/te
*** 59740,59745 ****
--- 60055,60061 ----
  e0f38a9b3ec0f742abed22cd672aa982  gcc/testsuite/gcc.dg/vect/vect-simd-clone-7.c
  c3250637f281a41b33f82d785f31ae71  gcc/testsuite/gcc.dg/vect/vect-simd-clone-8.c
  068515d98cb76263014fe2d1f01ac267  gcc/testsuite/gcc.dg/vect/vect-simd-clone-9.c
+ ac505120490b0eacba4e6c11d4f832b8  gcc/testsuite/gcc.dg/vect/vect-simd-clone-pr123794.c
  881d4e505bcbd60c6207348fb3385c98  gcc/testsuite/gcc.dg/vect/vect-simd-pr121130.c
  6e90abcda205699fc9e9fbcaeb293a8e  gcc/testsuite/gcc.dg/vect/vect-singleton_1.c
  c007274fcf98c292ac6a9827d7cc665e  gcc/testsuite/gcc.dg/vect/vect-strided-a-mult.c
*************** a204aadb3f5fc384dd117c7c09175029  gcc/te
*** 60435,60441 ****
  d5b77d8e1a21321e649e6b77802e64c8  gcc/testsuite/gcc.target/aarch64/acle/rwsr-2.c
  90a044b6489e0d51268ae3d5ce15dead  gcc/testsuite/gcc.target/aarch64/acle/rwsr-3.c
  07dc62ae2bcf9c8e358ed99fe06cd5d6  gcc/testsuite/gcc.target/aarch64/acle/rwsr-4.c
! 119d4f72bb0ea43c9a5cbee2e61cdd5e  gcc/testsuite/gcc.target/aarch64/acle/rwsr-armv8p9.c
  b478e4234b2713f0df0d417dd9d13425  gcc/testsuite/gcc.target/aarch64/acle/rwsr-ungated.c
  c41c68503dfa6ef4c72faaf77fd40cb2  gcc/testsuite/gcc.target/aarch64/acle/rwsr.c
  10ce3b5edee8a787906dd58121496c70  gcc/testsuite/gcc.target/aarch64/acle/tme.c
--- 60751,60757 ----
  d5b77d8e1a21321e649e6b77802e64c8  gcc/testsuite/gcc.target/aarch64/acle/rwsr-2.c
  90a044b6489e0d51268ae3d5ce15dead  gcc/testsuite/gcc.target/aarch64/acle/rwsr-3.c
  07dc62ae2bcf9c8e358ed99fe06cd5d6  gcc/testsuite/gcc.target/aarch64/acle/rwsr-4.c
! 8106917e4e230850cff2d4b822ab17d8  gcc/testsuite/gcc.target/aarch64/acle/rwsr-armv8p9.c
  b478e4234b2713f0df0d417dd9d13425  gcc/testsuite/gcc.target/aarch64/acle/rwsr-ungated.c
  c41c68503dfa6ef4c72faaf77fd40cb2  gcc/testsuite/gcc.target/aarch64/acle/rwsr.c
  10ce3b5edee8a787906dd58121496c70  gcc/testsuite/gcc.target/aarch64/acle/tme.c
*************** c5a25189d013bff63967d8ba4395e70f  gcc/te
*** 61297,61312 ****
--- 61613,61632 ----
  e8ccec6b2fb8a30023cf88dcf2548dba  gcc/testsuite/gcc.target/aarch64/cpymem-q-reg_1.c
  8d232ec62529aafba12431c49d0e03d4  gcc/testsuite/gcc.target/aarch64/cpymem-size.c
  f0ade2d7d5ecfdede0bcf4135fdc0398  gcc/testsuite/gcc.target/aarch64/crc-1-pmul.c
+ 16f041e0977d84cf970b45d1212dae98  gcc/testsuite/gcc.target/aarch64/crc-1.c
  bf0bb1609d53652872fb971275ba0031  gcc/testsuite/gcc.target/aarch64/crc-10-pmul.c
  40e8b2336857861ca31d2406a928ad42  gcc/testsuite/gcc.target/aarch64/crc-12-pmul.c
  a41ac1ed74daa11dd949a6028a04e6d9  gcc/testsuite/gcc.target/aarch64/crc-13-pmul.c
  058a51dfd9b715793597020ad0ac455b  gcc/testsuite/gcc.target/aarch64/crc-14-pmul.c
  2ff1b58a8561d535a8d45eaf5f22e92a  gcc/testsuite/gcc.target/aarch64/crc-17-pmul.c
  9372df20a81f71614d20f840944a0148  gcc/testsuite/gcc.target/aarch64/crc-18-pmul.c
+ 8df746cffc9d4647e7289a491fefbabf  gcc/testsuite/gcc.target/aarch64/crc-2.c
  84bca1420829aedf17db57cedd2deaac  gcc/testsuite/gcc.target/aarch64/crc-21-pmul.c
  3efd33ff4b2e6b2cda3ea2d843ec3d48  gcc/testsuite/gcc.target/aarch64/crc-22-pmul.c
  0b8757c41f816dcdbd655c8ef3f11416  gcc/testsuite/gcc.target/aarch64/crc-23-pmul.c
+ e64b445f3de5c32ef9fe6dabc536caaf  gcc/testsuite/gcc.target/aarch64/crc-3.c
  e9b2f2c412037d1ed54a8e6f2c8a2106  gcc/testsuite/gcc.target/aarch64/crc-4-pmul.c
+ 9a34e996498825327ef6f4346f4aab8e  gcc/testsuite/gcc.target/aarch64/crc-4.c
  336da770a6971a3a5734a42cb9b2383e  gcc/testsuite/gcc.target/aarch64/crc-5-pmul.c
  70c833cafde9cb10fb9c73183403a39d  gcc/testsuite/gcc.target/aarch64/crc-6-pmul.c
  95fe77a618d46d043b3fcc6cc56e6f43  gcc/testsuite/gcc.target/aarch64/crc-7-pmul.c
*************** a95c8779f3b9cc5c91774eab2c3b9b8d  gcc/te
*** 61349,61354 ****
--- 61669,61677 ----
  4662bde0005cf4c7497e012d44ac937a  gcc/testsuite/gcc.target/aarch64/declare-simd-2.c
  063fb3cb3ef8c03670a39beb490eee85  gcc/testsuite/gcc.target/aarch64/diag_aka_1.c
  99d13b07988399a087cb53856c728972  gcc/testsuite/gcc.target/aarch64/div-by-bitmask.c
+ 3488e2eafe407d3b6120c7194ed905bb  gcc/testsuite/gcc.target/aarch64/dwarf-bit-stride-func.c
+ 69d1e677362acf66e406e0f76cb24fff  gcc/testsuite/gcc.target/aarch64/dwarf-bit-stride-pragma-sme.c
+ 44e0ea6a8b4b6be2787d845af653ac9a  gcc/testsuite/gcc.target/aarch64/dwarf-bit-stride-pragma.c
  5a0fb82365f402f7b5e039bc723a3020  gcc/testsuite/gcc.target/aarch64/dwarf-cfa-reg.c
  a9ccf8cef71e90daa83ae00204fd983c  gcc/testsuite/gcc.target/aarch64/dwarf_reg_size_1.c
  5fdc01fccf89920c24ce6dadea7114d3  gcc/testsuite/gcc.target/aarch64/dwarf_reg_size_2.c
*************** e721f980e1e7a9648d77300c2f6ea0e5  gcc/te
*** 61747,61752 ****
--- 62070,62100 ----
  d28ce23985b773a211ff26743e9e661d  gcc/testsuite/gcc.target/aarch64/options_set_8.c
  55ae452185bb0bb101f614fc4fa21cd9  gcc/testsuite/gcc.target/aarch64/options_set_9.c
  2ba9e0951fadcf5ce5f2eab080c09a68  gcc/testsuite/gcc.target/aarch64/orr_imm_1.c
+ 5e0097785f095780e3c0a7ce682ddc69  gcc/testsuite/gcc.target/aarch64/pch/aarch64-pch.exp
+ a6744e260d36942daafb6b2fcf3e4e19  gcc/testsuite/gcc.target/aarch64/pch/pch_arm_acle.c
+ 7b90a6e9d561b2c19e6c612960e8ef70  gcc/testsuite/gcc.target/aarch64/pch/pch_arm_acle.hs
+ 5a5b4234700c182421280262006aff02  gcc/testsuite/gcc.target/aarch64/pch/pch_arm_acle_include_post.c
+ 7b90a6e9d561b2c19e6c612960e8ef70  gcc/testsuite/gcc.target/aarch64/pch/pch_arm_acle_include_post.hs
+ 4478fcdd1aefee96e33faf1c4b60215d  gcc/testsuite/gcc.target/aarch64/pch/pch_arm_multiple.c
+ 97e98018fd0a42839432bb5716c601bb  gcc/testsuite/gcc.target/aarch64/pch/pch_arm_multiple.hs
+ 4775f635f85fab86b3e43edddb4d3731  gcc/testsuite/gcc.target/aarch64/pch/pch_arm_multiple_include_post.c
+ 97e98018fd0a42839432bb5716c601bb  gcc/testsuite/gcc.target/aarch64/pch/pch_arm_multiple_include_post.hs
+ c1cc84ca237825286acc5b291c488ad3  gcc/testsuite/gcc.target/aarch64/pch/pch_arm_neon.c
+ eea843b45fced370cf40e4fd8434b286  gcc/testsuite/gcc.target/aarch64/pch/pch_arm_neon.hs
+ 66efb2495a5e78783e0592acaf913f90  gcc/testsuite/gcc.target/aarch64/pch/pch_arm_neon_include_post.c
+ eea843b45fced370cf40e4fd8434b286  gcc/testsuite/gcc.target/aarch64/pch/pch_arm_neon_include_post.hs
+ 0b52c4a1f6b3f91ec85ce6e2ce5d7f99  gcc/testsuite/gcc.target/aarch64/pch/pch_arm_neon_sve_bridge.c
+ c0b11c30b275c5fd2113fe2a4ecac4af  gcc/testsuite/gcc.target/aarch64/pch/pch_arm_neon_sve_bridge.hs
+ 48d3f71076eb2c9a167ad14ae32a23de  gcc/testsuite/gcc.target/aarch64/pch/pch_arm_neon_sve_bridge_include_post.c
+ c0b11c30b275c5fd2113fe2a4ecac4af  gcc/testsuite/gcc.target/aarch64/pch/pch_arm_neon_sve_bridge_include_post.hs
+ b2bd58eb682ff2375e24885036453e0e  gcc/testsuite/gcc.target/aarch64/pch/pch_arm_sme.c
+ 408bbbd938ffecc7c0bf0e2b87b2864b  gcc/testsuite/gcc.target/aarch64/pch/pch_arm_sme.hs
+ 6b00da17b87978f4062502ae983d70b2  gcc/testsuite/gcc.target/aarch64/pch/pch_arm_sme_include_post.c
+ 408bbbd938ffecc7c0bf0e2b87b2864b  gcc/testsuite/gcc.target/aarch64/pch/pch_arm_sme_include_post.hs
+ 957c9a141aeddbfd748594553077d14e  gcc/testsuite/gcc.target/aarch64/pch/pch_arm_sve.c
+ 58d8436df4c6af25396ff8f2e09b91c2  gcc/testsuite/gcc.target/aarch64/pch/pch_arm_sve.hs
+ 8e6da171896c5c3446074fa59d4c2cd4  gcc/testsuite/gcc.target/aarch64/pch/pch_arm_sve_include_post.c
+ 58d8436df4c6af25396ff8f2e09b91c2  gcc/testsuite/gcc.target/aarch64/pch/pch_arm_sve_include_post.hs
  2affd5586d9d9534731788d83a2a3904  gcc/testsuite/gcc.target/aarch64/pcs_attribute-2.c
  b0a892934f70ddbece003356d1462148  gcc/testsuite/gcc.target/aarch64/pcs_attribute-3.c
  9fe8a7ffd0c54ed06b5690a31efb7b70  gcc/testsuite/gcc.target/aarch64/pcs_attribute.c
*************** a5ca6cfb5312a89436fc398835b5c66c  gcc/te
*** 61865,61870 ****
--- 62213,62233 ----
  45402ac51e2ae003d26ed37573330166  gcc/testsuite/gcc.target/aarch64/pr118348_1.c
  cc8dc43c5d18de4984503248c86934e4  gcc/testsuite/gcc.target/aarch64/pr118348_2.c
  5afea9764e794ec9500d7840136687e8  gcc/testsuite/gcc.target/aarch64/pr119046.c
+ 4fb924f3ca58066d57cd648491945933  gcc/testsuite/gcc.target/aarch64/pr120986-1.c
+ 83ac293146b05a62ec4a19e52751ebd1  gcc/testsuite/gcc.target/aarch64/pr121253.c
+ c34d772e393da040a9ab73442d231d49  gcc/testsuite/gcc.target/aarch64/pr121853_1.c
+ bf526d120c538bd714985ac66c46f7bb  gcc/testsuite/gcc.target/aarch64/pr121853_2.c
+ 891d4e0624727f3778442b4412904fe3  gcc/testsuite/gcc.target/aarch64/pr123017_1.c
+ b19750d7ad94a45a0676b41ee667dab7  gcc/testsuite/gcc.target/aarch64/pr123017_2.c
+ f79aeeb83d4a0d143dccfa2cb843cc52  gcc/testsuite/gcc.target/aarch64/pr123017_3.c
+ 2c75a77689a0571c6259e94e431b0462  gcc/testsuite/gcc.target/aarch64/pr123017_4.c
+ 0da69e7d40288cff0a7db38b96b3ffcb  gcc/testsuite/gcc.target/aarch64/pr123017_5.c
+ ec79fa3be7327c757d4abcecfe6afb40  gcc/testsuite/gcc.target/aarch64/pr123017_6.c
+ 3c99f5bd7556f75f513af4ccabe65c85  gcc/testsuite/gcc.target/aarch64/pr123017_7.c
+ 98a4eb67a4078cb117ea1c80d44fee14  gcc/testsuite/gcc.target/aarch64/pr123206.c
+ 95306727ea8db0e2fdb8e199f754c587  gcc/testsuite/gcc.target/aarch64/pr123285-1.c
+ 3525a5777032197cdd1e39b2aad94c29  gcc/testsuite/gcc.target/aarch64/pr123294-1.c
+ 085f7e2087fb0cf8d5d9a44259bb616c  gcc/testsuite/gcc.target/aarch64/pr123548.c
  9adb42733d9f5e2b1f2dbb364b62100d  gcc/testsuite/gcc.target/aarch64/pr37780_1.c
  e668fb9e0d32efadd671247467dc90db  gcc/testsuite/gcc.target/aarch64/pr58460.c
  9023f817c07ddec673c5b546525fc184  gcc/testsuite/gcc.target/aarch64/pr60034.c
*************** a6b0a3d46a5a5170f93dc87f2d7171b5  gcc/te
*** 61992,61998 ****
  c5f7398a3319e25a23c9aebb45e8472a  gcc/testsuite/gcc.target/aarch64/ror_2.c
  6a7b4c2858dc4092dd8e5eead61374c3  gcc/testsuite/gcc.target/aarch64/ror_3.c
  d67c6012aab7b0d167366ecd8d9c9f29  gcc/testsuite/gcc.target/aarch64/rot_to_bswap.c
! 6aafdb77d40b133b0cfc4ba802e3088b  gcc/testsuite/gcc.target/aarch64/rotate_xar_1.c
  fd2b51934a9f3b3f1041deacbd4c5429  gcc/testsuite/gcc.target/aarch64/saddw-1.c
  06fac2f51e492eb91f6fdcb6f6baea2f  gcc/testsuite/gcc.target/aarch64/saddw-2.c
  e1cf0d479bffab78f82341c69892e846  gcc/testsuite/gcc.target/aarch64/saturating-arithmetic-signed.c
--- 62355,62361 ----
  c5f7398a3319e25a23c9aebb45e8472a  gcc/testsuite/gcc.target/aarch64/ror_2.c
  6a7b4c2858dc4092dd8e5eead61374c3  gcc/testsuite/gcc.target/aarch64/ror_3.c
  d67c6012aab7b0d167366ecd8d9c9f29  gcc/testsuite/gcc.target/aarch64/rot_to_bswap.c
! 84df7bd8d598e8ef1bbd0fad51087fcc  gcc/testsuite/gcc.target/aarch64/rotate_xar_1.c
  fd2b51934a9f3b3f1041deacbd4c5429  gcc/testsuite/gcc.target/aarch64/saddw-1.c
  06fac2f51e492eb91f6fdcb6f6baea2f  gcc/testsuite/gcc.target/aarch64/saddw-2.c
  e1cf0d479bffab78f82341c69892e846  gcc/testsuite/gcc.target/aarch64/saturating-arithmetic-signed.c
*************** b44e92a535087a99a3ac716388f1c979  gcc/te
*** 62016,62024 ****
  19f17e7dd89f8110e5c9f67f57238f8a  gcc/testsuite/gcc.target/aarch64/sha2_2.c
  ce1f8e207a7a24660c494ecf8dd545c2  gcc/testsuite/gcc.target/aarch64/sha2_3.c
  b6aa615b85ae40b63a22dbc7071fd902  gcc/testsuite/gcc.target/aarch64/sha3.h
! 32f4f51563b0d7be120e5d5009ab1e3e  gcc/testsuite/gcc.target/aarch64/sha3_1.c
! b452d4c86751bd11bf03b8ca21d25bf4  gcc/testsuite/gcc.target/aarch64/sha3_2.c
! 7bbc7a27b67681b713096a7ab9ed18a3  gcc/testsuite/gcc.target/aarch64/sha3_3.c
  720a26afca0daa0c0583c3cbf5f2c7d0  gcc/testsuite/gcc.target/aarch64/shadow_call_stack_1.c
  e35638303a0cd435f199e6e2d3d6e7c6  gcc/testsuite/gcc.target/aarch64/shadow_call_stack_2.c
  426a463bcea5af95b04b1d22b1bbacc9  gcc/testsuite/gcc.target/aarch64/shadow_call_stack_3.c
--- 62379,62387 ----
  19f17e7dd89f8110e5c9f67f57238f8a  gcc/testsuite/gcc.target/aarch64/sha2_2.c
  ce1f8e207a7a24660c494ecf8dd545c2  gcc/testsuite/gcc.target/aarch64/sha2_3.c
  b6aa615b85ae40b63a22dbc7071fd902  gcc/testsuite/gcc.target/aarch64/sha3.h
! 0e1d7a62f7703b3f36fc44bcf4596484  gcc/testsuite/gcc.target/aarch64/sha3_1.c
! 14eadc9c0aa9df2274e0d27fdd199be8  gcc/testsuite/gcc.target/aarch64/sha3_2.c
! 7cd7f2ba7ac06db85b53e098824fe6c9  gcc/testsuite/gcc.target/aarch64/sha3_3.c
  720a26afca0daa0c0583c3cbf5f2c7d0  gcc/testsuite/gcc.target/aarch64/shadow_call_stack_1.c
  e35638303a0cd435f199e6e2d3d6e7c6  gcc/testsuite/gcc.target/aarch64/shadow_call_stack_2.c
  426a463bcea5af95b04b1d22b1bbacc9  gcc/testsuite/gcc.target/aarch64/shadow_call_stack_3.c
*************** df08a7f1b91a8c0f914aab7f291c95e7  gcc/te
*** 62115,62122 ****
  670855cbe72625722e02671619b6566b  gcc/testsuite/gcc.target/aarch64/simd/lut.c
  eee3684fddf95ff5545c7c4454331e54  gcc/testsuite/gcc.target/aarch64/simd/mf8_data_1.c
  7a8dbe7357968ea67da61dae6606ebcd  gcc/testsuite/gcc.target/aarch64/simd/mf8_data_2.c
! 2f6c6fee34ced3b932053a03d9906520  gcc/testsuite/gcc.target/aarch64/simd/pr117048.c
  2797bd4410da16b66ebb2f474c595ee5  gcc/testsuite/gcc.target/aarch64/simd/pr117048_2.c
  f2791d55a2c9ed7182a54a406810cf47  gcc/testsuite/gcc.target/aarch64/simd/pr67896.c
  c4b08114012e09e0f47a84f5e5311441  gcc/testsuite/gcc.target/aarch64/simd/pr97349.c
  46d08ecc25480336a5b22ec204104ec5  gcc/testsuite/gcc.target/aarch64/simd/pr99195_1.c
--- 62478,62486 ----
  670855cbe72625722e02671619b6566b  gcc/testsuite/gcc.target/aarch64/simd/lut.c
  eee3684fddf95ff5545c7c4454331e54  gcc/testsuite/gcc.target/aarch64/simd/mf8_data_1.c
  7a8dbe7357968ea67da61dae6606ebcd  gcc/testsuite/gcc.target/aarch64/simd/mf8_data_2.c
! 77bcecb95fea0e774f3b59d6735b0334  gcc/testsuite/gcc.target/aarch64/simd/pr117048.c
  2797bd4410da16b66ebb2f474c595ee5  gcc/testsuite/gcc.target/aarch64/simd/pr117048_2.c
+ 67e9f00dffaa6f894241ef054cf29a1e  gcc/testsuite/gcc.target/aarch64/simd/pr121749.c
  f2791d55a2c9ed7182a54a406810cf47  gcc/testsuite/gcc.target/aarch64/simd/pr67896.c
  c4b08114012e09e0f47a84f5e5311441  gcc/testsuite/gcc.target/aarch64/simd/pr97349.c
  46d08ecc25480336a5b22ec204104ec5  gcc/testsuite/gcc.target/aarch64/simd/pr99195_1.c
*************** db7ec863bbc5f42e3eaaf7d41c078f60  gcc/te
*** 62614,62631 ****
  954127f6d3b08028a0dbbecea8abaea4  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/read_ver_za32.c
  6c42cd7108db85285989b01cdfe0ceab  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/read_ver_za64.c
  f73c190603e33d11562ee018328fb06d  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/read_ver_za8.c
! 57473390b86a03f32d83e9845fcd1e8f  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/revd_bf16.c
! 610cf99edd9ae5f40f3a3a69e3efc55b  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/revd_f16.c
! 494c59f5fc641ba1ca278e6162846419  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/revd_f32.c
! ad3bf5b4426c396c38ad710e89d302ac  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/revd_f64.c
! 5e7be0532c1cf9a24ceae0d2466cba9e  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/revd_s16.c
! 0122c325c4687b56eab55136cc73671a  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/revd_s32.c
! 9c0d30515c9685ca27aabb6a386b5537  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/revd_s64.c
! ee35ab070539123bfc539d4170588034  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/revd_s8.c
! b6285c7698184d8c087dacbadd41f5b4  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/revd_u16.c
! d21f72a1590a30f18e73717e7a20cf48  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/revd_u32.c
! aff628cd65c21a022877761c02d814f0  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/revd_u64.c
! a3fa32026373764c9168da8a3c6feb13  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/revd_u8.c
  92f3366342aae6b2ec7f6d53be3fe1a1  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/st1_hor_vnum_za128.c
  4a2c37b58b46cda8f18baebab50b1238  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/st1_hor_vnum_za16.c
  af7a839b3b15a2c2cfbbc10272a15951  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/st1_hor_vnum_za32.c
--- 62978,62995 ----
  954127f6d3b08028a0dbbecea8abaea4  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/read_ver_za32.c
  6c42cd7108db85285989b01cdfe0ceab  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/read_ver_za64.c
  f73c190603e33d11562ee018328fb06d  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/read_ver_za8.c
! 3d25db1ad0afebd094545ea84e5f3aae  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/revd_bf16.c
! 840005f252294243ace12ff7d5c6ef0a  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/revd_f16.c
! ce7f61fdd320c854577401af81f7c2d4  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/revd_f32.c
! 24ddf3db4f334ebe87c4dacc577c50a1  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/revd_f64.c
! 91a6c7952a3e12c0dc12f395162fae56  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/revd_s16.c
! 140dea06c2a63f12aa1cfeae3b45a418  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/revd_s32.c
! 4d1a33db10b9d8309a31c0d67aa11be8  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/revd_s64.c
! b484f4e09608622165b4b3ff193dad13  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/revd_s8.c
! 460c33ca47010b78e006ddface805b08  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/revd_u16.c
! 9e58a54ddefabef835a663a6e4ad220e  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/revd_u32.c
! 420869caff110ba03a219c0dbb0d6f6a  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/revd_u64.c
! 18e20b3d14d5d844ff81a8286d4363fd  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/revd_u8.c
  92f3366342aae6b2ec7f6d53be3fe1a1  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/st1_hor_vnum_za128.c
  4a2c37b58b46cda8f18baebab50b1238  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/st1_hor_vnum_za16.c
  af7a839b3b15a2c2cfbbc10272a15951  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/st1_hor_vnum_za32.c
*************** df9a1b5d24aec3bc8a0ef502ec0a64b9  gcc/te
*** 62722,62727 ****
--- 63086,63092 ----
  7f0a2bc5b5ada7add64168ea0a4c5b53  gcc/testsuite/gcc.target/aarch64/sme/nonlocal_goto_6.c
  cea477cbfc0138870da19d13a6f78a5c  gcc/testsuite/gcc.target/aarch64/sme/nonlocal_goto_7.c
  adb1015c9aa632296ceca120cacf20e3  gcc/testsuite/gcc.target/aarch64/sme/pr121028.c
+ 7d97d6a94b7d56da78720f808e65bcff  gcc/testsuite/gcc.target/aarch64/sme/pr121414_1.c
  b4e79a733b5f7121eaeed1af03f9454b  gcc/testsuite/gcc.target/aarch64/sme/sibcall_1.c
  e1bebbe2531d4c2ec4fb9cfa4437f1cb  gcc/testsuite/gcc.target/aarch64/sme/sibcall_2.c
  fab5f8d90e717b628f306df26d55a4c6  gcc/testsuite/gcc.target/aarch64/sme/sibcall_3.c
*************** fdf31615d4c23a6cda30ff2ff1493fcd  gcc/te
*** 62733,62738 ****
--- 63098,63104 ----
  5a4e5012170fd731aad53e8a5e8ca2b0  gcc/testsuite/gcc.target/aarch64/sme/sibcall_7_ts.c
  c24e7b6e6657e7a0bc6f6c3324ca0e55  gcc/testsuite/gcc.target/aarch64/sme/sibcall_8.c
  b7e9ea35db65f1f9ab0129b6787b4aa1  gcc/testsuite/gcc.target/aarch64/sme/sibcall_9.c
+ 4d9577c81fc117dbb22c930c6def7e07  gcc/testsuite/gcc.target/aarch64/sme/sme-shrinkwrap.c
  c7c73b255f9579fb4fca5284ec152e31  gcc/testsuite/gcc.target/aarch64/sme/streaming_mode_1.c
  9ce9b56fcc81eccd70d155b7ba6b7628  gcc/testsuite/gcc.target/aarch64/sme/streaming_mode_2.c
  fcf99b5d14963d6dc0b0c9a728fc8ac4  gcc/testsuite/gcc.target/aarch64/sme/streaming_mode_3.c
*************** e716ac2dd0b6a489e0a066923531fe33  gcc/te
*** 64661,64674 ****
  a7a4c48a2a400e927d1783f11ff5ae2f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_lane_f16.c
  1c2f087197693ac0f8341bb2de2f9903  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_lane_f32.c
  9bf80dcb14d6ec0ad3830bc283fafefa  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_lane_f64.c
! 5819dc70d5a76c525b922277c0b959ee  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s16.c
! 6a2ee9b11969c4475629e14cfed49038  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s32.c
! a5cea13f4b457eccce848243008a2449  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s64.c
! 540ce03a5aa12db4294f15800b60e830  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s8.c
! 935cb2f781553ba0bbcf7db6a6443a26  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u16.c
! d22a6497edd09e3536df77b5f96e55dd  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u32.c
! 416804e673fcd9e4da8d4cbbe54e3099  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u64.c
! 90173ee0d5de2d7ce44b254c077c25f6  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u8.c
  13e5426577da8e8350426b98cdde0d0f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mulh_s16.c
  887cde542b27dadbbd6e7abe7696d2cd  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mulh_s32.c
  78776c6e140b51a29713f2889bc58bca  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mulh_s64.c
--- 65027,65040 ----
  a7a4c48a2a400e927d1783f11ff5ae2f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_lane_f16.c
  1c2f087197693ac0f8341bb2de2f9903  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_lane_f32.c
  9bf80dcb14d6ec0ad3830bc283fafefa  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_lane_f64.c
! 93bec38f83aa08ea078a190a36ce60b6  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s16.c
! 4f42232f407acd56314fee0d0ff008e5  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s32.c
! 729ad62f6cb28217b9d2f1501b162f8c  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s64.c
! 56c4878136209bdc3156de990353cecf  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s8.c
! 6def2e7ca37494f570e330b41d18842f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u16.c
! 6993cbec8b136cc2cbabb54c90558144  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u32.c
! 465a374b40b8fec960f6f658afb9e57b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u64.c
! 59e9a7a2c74e7a644223ce578131448e  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u8.c
  13e5426577da8e8350426b98cdde0d0f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mulh_s16.c
  887cde542b27dadbbd6e7abe7696d2cd  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mulh_s32.c
  78776c6e140b51a29713f2889bc58bca  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mulh_s64.c
*************** ae44d68f203e7d5a17d19738cfbc53a0  gcc/te
*** 65724,65729 ****
--- 66090,66101 ----
  618eed08c799209fcc7e876e7bc1f5a9  gcc/testsuite/gcc.target/aarch64/sve/acle/general/orn_1.c
  c43619dc0345cb75df63193d4ecf32a5  gcc/testsuite/gcc.target/aarch64/sve/acle/general/orr_1.c
  f467f9ddc87398511c12147760e80eb4  gcc/testsuite/gcc.target/aarch64/sve/acle/general/perm_1.c
+ 0a35f14f6f82735e897ca461fd10bd66  gcc/testsuite/gcc.target/aarch64/sve/acle/general/perm_2.c
+ acdd75031b126bdb8ede449a87a8b4c8  gcc/testsuite/gcc.target/aarch64/sve/acle/general/perm_3.c
+ eb5400f39cf4b8034ce9bf768b42f01e  gcc/testsuite/gcc.target/aarch64/sve/acle/general/perm_4.c
+ dc5cc4bd54f699543e29d49d190cf7f3  gcc/testsuite/gcc.target/aarch64/sve/acle/general/perm_5.c
+ 4505bd757cf0718372154e481c4a2da0  gcc/testsuite/gcc.target/aarch64/sve/acle/general/perm_6.c
+ 453c5ef83bc5137397e38e9f3c9d6da9  gcc/testsuite/gcc.target/aarch64/sve/acle/general/perm_7.c
  bb3a7f2587d8584d185738649f93a6f6  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pfirst_1.c
  4a5457bf98a3061b6c949b777ceca410  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pnext_1.c
  6d3b0cbb6b0b88e0030fbf0003faa4c9  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pnext_2.c
*************** c4e807392dbe7079bb88acf040351299  gcc/te
*** 65736,65741 ****
--- 66108,66116 ----
  b47de1519a1ea6d899c2a6cd56b65cba  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr114577_2.c
  4be435ec882c5745457b0a6378296096  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464.c
  a37d20c2585b9553233fb42e281e9b03  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464_2.c
+ 89320642fc28eb425a70fa1fc222f0b2  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr120718.c
+ c1f0d92266055a62f8c3a0b32cffca32  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr121118_1.c
+ 4b3b421e52a2297ee3fdf3f39e2b6294  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr123392.c
  cd84e485b3fa7a0d50f2ee5113eca33d  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr94683.c
  111a35b5bdbe877086a99d29b13dc65b  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr94700.c
  dd9873ff910539b000561a51ccc3a52f  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr96146.c
*************** bf328a0ed3cadaf01cdcd516cb16a2eb  gcc/te
*** 65751,65756 ****
--- 66126,66132 ----
  21cf8f26265cb4080b1703c09d296dc5  gcc/testsuite/gcc.target/aarch64/sve/acle/general/ptrue_pat_5.c
  ef386f442776c7325a9c4120d5f0f1cd  gcc/testsuite/gcc.target/aarch64/sve/acle/general/qincb_1.c
  884f0309ada7f457179926eca68ecf14  gcc/testsuite/gcc.target/aarch64/sve/acle/general/rev-1.c
+ 52959d72e6279c53e3e28e80ecb896fe  gcc/testsuite/gcc.target/aarch64/sve/acle/general/rev_2.c
  b73d2b4b9aeaceb7898b89f8e147cc04  gcc/testsuite/gcc.target/aarch64/sve/acle/general/stack_vars_1.c
  a60971180940fb9126dc3f2440073c3a  gcc/testsuite/gcc.target/aarch64/sve/acle/general/struct_1.c
  9404c4e4b822b81b48891a1fe0625266  gcc/testsuite/gcc.target/aarch64/sve/acle/general/temporaries_1.c
*************** b756b55bf45e469c93050878d9bef905  gcc/te
*** 66072,66077 ****
--- 66448,66454 ----
  79f15d195cc9087e1d6665345a3f5123  gcc/testsuite/gcc.target/aarch64/sve/dup_lane_1.c
  7b29bcc5f4568a218b087ab7a6207177  gcc/testsuite/gcc.target/aarch64/sve/dup_lane_2.c
  f75cd152d1ea63349f09ef48040ff809  gcc/testsuite/gcc.target/aarch64/sve/dup_lane_3.c
+ dc3237178be6599bbf6062f3731243ef  gcc/testsuite/gcc.target/aarch64/sve/dwarf-bit-stride.c
  f8aebeb8f0a738c291cd7acbf0c1cd2e  gcc/testsuite/gcc.target/aarch64/sve/ext_1.c
  5a6168e8f8698cd82ef986d8c867fcc0  gcc/testsuite/gcc.target/aarch64/sve/ext_2.c
  d0e1d8fee3d430dd78f1f6b60a9c0f79  gcc/testsuite/gcc.target/aarch64/sve/ext_3.c
*************** df238b64cc974628a48afaac0cd271a1  gcc/te
*** 66597,66602 ****
--- 66974,66981 ----
  1b79fc9f352eda12d6be24fe2d93d5bc  gcc/testsuite/gcc.target/aarch64/sve/pr116259-1.c
  37c8a6d45bec8da5daf1eb003bdb2102  gcc/testsuite/gcc.target/aarch64/sve/pr119351.c
  fba890ec69e5613e555983284ebab389  gcc/testsuite/gcc.target/aarch64/sve/pr119351_run.c
+ ecd052b8b25dcdd22b9bc9b4afdddf04  gcc/testsuite/gcc.target/aarch64/sve/pr121604_brk.c
+ cbe63b7384f92925c6e39116fe7f79c6  gcc/testsuite/gcc.target/aarch64/sve/pr122827.c
  7e2aaf0806edd37415079b5c2e48b66c  gcc/testsuite/gcc.target/aarch64/sve/pr81003.c
  00b752a6e175de8b1a300df08f275461  gcc/testsuite/gcc.target/aarch64/sve/pr87563.c
  c56eeba71ad463673a1bdb30e7a94863  gcc/testsuite/gcc.target/aarch64/sve/pr87815.c
*************** b9b880247845019946d9397ae50a7dcf  gcc/te
*** 67887,67904 ****
  96438bdfb17fb69927c45a82c26bcbd0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rax1_s64.c
  4b908d3cdc65630d5d194574d04a9d04  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rax1_u64.c
  1e60fc894c3aa822383f66ed0fae4f0d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/recpe_u32.c
! 99dad9c3481eef0de2a4cd060e3a3a1f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_bf16.c
! 3259cdf48120dc09b7fc2c8efb94097b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_f16.c
! 50b69c6d4926cbee4a08a9ec84ff3a81  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_f32.c
! 23eaee7e58f44f6e200aa8b355a263c0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_f64.c
! c32db97afd2d9cc1a09a84988f8f16be  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s16.c
! c9959408786b02a63956b41e095add33  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s32.c
! 2a09d57eb999e40f06bd820be5e4027f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s64.c
! 01187424d3c6ca4bd77f86ac14381c51  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s8.c
! b58ca786c874c40a9b5a8dfb94364f3b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u16.c
! b5e97f46a70b15dfd94e483317742bde  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u32.c
! 58ea6ac95932884e317f9f9c4937c816  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u64.c
! e00b3221fce98366b7dda70015d71353  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u8.c
  9596a6d388086fba832d8a2f53ea57c9  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rhadd_s16.c
  10d33337c7eb8998a71c51e7f2bb3e30  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rhadd_s32.c
  dbc6f1ccc6394bbd64f2989e6f385bce  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rhadd_s64.c
--- 68266,68283 ----
  96438bdfb17fb69927c45a82c26bcbd0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rax1_s64.c
  4b908d3cdc65630d5d194574d04a9d04  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rax1_u64.c
  1e60fc894c3aa822383f66ed0fae4f0d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/recpe_u32.c
! 6dcdd634683cc5bf89527f1b3aa8bbe1  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_bf16.c
! 012a6600194eaffae32608214f7961c9  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_f16.c
! 8f78cd01c576e45a1c23352b4a45549e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_f32.c
! 3139d30903d8bd1998eaa0bf27d502dd  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_f64.c
! 57d9d47866b138860f9596ecf5f33c3f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s16.c
! 3a81d4e766ce2c370d5f1e889ebb6571  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s32.c
! 7579a7ee86d83cfb156bfd8326fc64b9  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s64.c
! c1b1f25927be0ef1d0776d5609fa76f7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s8.c
! 28e02d840ab26dfbfdd422470b9a0664  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u16.c
! 3ba755e3a4fcf839884e3245bac1c47b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u32.c
! 439b4003f6ccff9474809f43a320434c  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u64.c
! 1e000b1c81ff64e2c2bc15b428bc2184  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u8.c
  9596a6d388086fba832d8a2f53ea57c9  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rhadd_s16.c
  10d33337c7eb8998a71c51e7f2bb3e30  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rhadd_s32.c
  dbc6f1ccc6394bbd64f2989e6f385bce  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rhadd_s64.c
*************** f5f6f291e9c1c848a46c8ef91ca99f58  gcc/te
*** 68406,68411 ****
--- 68785,68793 ----
  429b387819fe31e459436020f966ae50  gcc/testsuite/gcc.target/aarch64/sve2/pr109636_1.c
  b1f13471701b0335894317ae214cc68c  gcc/testsuite/gcc.target/aarch64/sve2/pr116934.c
  3fcc51d99dc7ff15a8bb60da25dc470e  gcc/testsuite/gcc.target/aarch64/sve2/pr120999.c
+ b2d92d06e51698908b628bbf67a8336b  gcc/testsuite/gcc.target/aarch64/sve2/pr121599.c
+ 0f6c07a30f53dc4aadca1b9cf6c3a8db  gcc/testsuite/gcc.target/aarch64/sve2/pr121604_pmov.c
+ a1e717c0cbeba75388ce3e7b3922fe64  gcc/testsuite/gcc.target/aarch64/sve2/pr123775.c
  3ddfd16fcbf89890fd9785fec8f0c081  gcc/testsuite/gcc.target/aarch64/sve2/shracc_1.c
  8cd4d6e010de57b57d5d8fb325fa79bb  gcc/testsuite/gcc.target/aarch64/sve2/unpred_mul_1.c
  826ee7c8b41bb7da016220e1f67b1306  gcc/testsuite/gcc.target/aarch64/sve2/uzpq_1.c
*************** fc2eb8ac52faed5fba0a017b858d4ae4  gcc/te
*** 68500,68505 ****
--- 68882,68890 ----
  963d140aad02af938776268e2a209386  gcc/testsuite/gcc.target/aarch64/torture/aarch64-torture.exp
  4036d83a59b4adcf9e8a4cf5a291d22e  gcc/testsuite/gcc.target/aarch64/torture/pr111677.c
  8ba6cf5317762b2b89350d4f652efa53  gcc/testsuite/gcc.target/aarch64/torture/pr116564.c
+ 626bb6bb64c1bbe8eb5e2b92bf925aeb  gcc/testsuite/gcc.target/aarch64/torture/pr120986-2.c
+ d03b2f46140f14ae9b2101813aec3525  gcc/testsuite/gcc.target/aarch64/torture/pr121772.c
+ 164477999ab21aa17183a55d49bb0d71  gcc/testsuite/gcc.target/aarch64/torture/pr124491.c
  5266ac107a73e3ee1d1f44e1cda7d9f2  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-1.c
  9c3416db2fc04c3f91b03ecae15e943e  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-10.c
  df55bfe2c1ce46074b19b4566cedeef4  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-11.c
*************** df55bfe2c1ce46074b19b4566cedeef4  gcc/te
*** 68511,68516 ****
--- 68896,68902 ----
  6f76f09058dacb2d4652fe23212078dc  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-7.c
  5e87c222f1290ba69d1c720a5d7766b3  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-8.c
  d27cf5c573d83aeb3376b52fa2d42277  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-9.c
+ b7768547f670e0af5185d873e5dbc62e  gcc/testsuite/gcc.target/aarch64/torture/xar-zero.c
  3f00b9061bd4be55dd74c5c3274fd431  gcc/testsuite/gcc.target/aarch64/trunc-vec.c
  243944adb745b523dc89b085c3612ccb  gcc/testsuite/gcc.target/aarch64/tst-1.c
  b408270b084f360295aac255b1236a43  gcc/testsuite/gcc.target/aarch64/tst_1.c
*************** e916fcf0c3130fc5102d03f2d729ff64  gcc/te
*** 68748,68754 ****
  244ffe859281a44df2fa3ac62341bd75  gcc/testsuite/gcc.target/aarch64/with-tune-mcpu.c
  73648276a5cd96f9c11169ae4e70ef9c  gcc/testsuite/gcc.target/aarch64/with-tune-mtune.c
  a5784e5c868ce916e0684493e789ed30  gcc/testsuite/gcc.target/aarch64/xar_neon_modes.c
! ffef2c1734dfa074b538fd983a938858  gcc/testsuite/gcc.target/aarch64/xar_v2di_nonsve.c
  fd934708c3543d8703170d5494395bf0  gcc/testsuite/gcc.target/aarch64/xorsign.c
  69c2e660fb11d6895b17cde723e07c66  gcc/testsuite/gcc.target/aarch64/xorsign_exec.c
  4103f6313846ad5d7e1139c35722cc6c  gcc/testsuite/gcc.target/aarch64/xreg-vec-modes_1.c
--- 69134,69140 ----
  244ffe859281a44df2fa3ac62341bd75  gcc/testsuite/gcc.target/aarch64/with-tune-mcpu.c
  73648276a5cd96f9c11169ae4e70ef9c  gcc/testsuite/gcc.target/aarch64/with-tune-mtune.c
  a5784e5c868ce916e0684493e789ed30  gcc/testsuite/gcc.target/aarch64/xar_neon_modes.c
! 941eafc659fb2e3ecf4eac67350b6d5f  gcc/testsuite/gcc.target/aarch64/xar_v2di_nonsve.c
  fd934708c3543d8703170d5494395bf0  gcc/testsuite/gcc.target/aarch64/xorsign.c
  69c2e660fb11d6895b17cde723e07c66  gcc/testsuite/gcc.target/aarch64/xorsign_exec.c
  4103f6313846ad5d7e1139c35722cc6c  gcc/testsuite/gcc.target/aarch64/xreg-vec-modes_1.c
*************** deee7c31c5c250e8d2a4897962cdea6b  gcc/te
*** 69136,69147 ****
  624f21c628f0db266ffbb61efa0744c4  gcc/testsuite/gcc.target/arm/acle/ldcl.c
  3bab4e19ec4b17521402dfe4ef493288  gcc/testsuite/gcc.target/arm/acle/mcr.c
  7762e55b0ca2ef639e394dcbf0310e9d  gcc/testsuite/gcc.target/arm/acle/mcr2.c
! 835054b801b16b5cdedbb209ce908545  gcc/testsuite/gcc.target/arm/acle/mcrr.c
! ad33a8d60b3b2cd3d4f1a464974118d3  gcc/testsuite/gcc.target/arm/acle/mcrr2.c
  eee783c37d90eef12bf5d89dd9e9f34c  gcc/testsuite/gcc.target/arm/acle/mrc.c
  1089abf6533526d82e14c2c80d726483  gcc/testsuite/gcc.target/arm/acle/mrc2.c
! e66b3819f1cc1c13b66c38b83972f3a2  gcc/testsuite/gcc.target/arm/acle/mrrc.c
! 5280b32decaf5622a9f85f834e828bdf  gcc/testsuite/gcc.target/arm/acle/mrrc2.c
  861a159d41b35397c6507e6d28db94f5  gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-1.c
  000e018d4a9cef746da9ce68f812b5d8  gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-10.c
  3b4d3eb19280d0960f628378b29198de  gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-11.c
--- 69522,69533 ----
  624f21c628f0db266ffbb61efa0744c4  gcc/testsuite/gcc.target/arm/acle/ldcl.c
  3bab4e19ec4b17521402dfe4ef493288  gcc/testsuite/gcc.target/arm/acle/mcr.c
  7762e55b0ca2ef639e394dcbf0310e9d  gcc/testsuite/gcc.target/arm/acle/mcr2.c
! dfd2b10cfdc1cd7abe9d9c7e78ce4524  gcc/testsuite/gcc.target/arm/acle/mcrr.c
! afda16d3c97c2103efa481403bc85b15  gcc/testsuite/gcc.target/arm/acle/mcrr2.c
  eee783c37d90eef12bf5d89dd9e9f34c  gcc/testsuite/gcc.target/arm/acle/mrc.c
  1089abf6533526d82e14c2c80d726483  gcc/testsuite/gcc.target/arm/acle/mrc2.c
! 8d93c83d44d4793e5a63a292987b3195  gcc/testsuite/gcc.target/arm/acle/mrrc.c
! 328ad16bf3e69ce775fb3225bd750980  gcc/testsuite/gcc.target/arm/acle/mrrc2.c
  861a159d41b35397c6507e6d28db94f5  gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-1.c
  000e018d4a9cef746da9ce68f812b5d8  gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-10.c
  3b4d3eb19280d0960f628378b29198de  gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-11.c
*************** ad7292efdc490279906e7c95bdda09d7  gcc/te
*** 69164,69173 ****
  c65022a81cf8898ea37c82f9a6fe227f  gcc/testsuite/gcc.target/arm/acle/stc2l.c
  fc648f69779c2ae9f4075ca8aed84b4f  gcc/testsuite/gcc.target/arm/acle/stcl.c
  040dfdd8abd27c81f014da36e605a1ca  gcc/testsuite/gcc.target/arm/addr-modes-float.c
! e83f97202504a386d4e913ce29128f75  gcc/testsuite/gcc.target/arm/addr-modes-int.c
  d21ea73439704c16e82e0898ae8bc79e  gcc/testsuite/gcc.target/arm/addr-modes.h
! ec521664e76bf483f95c66515ae27933  gcc/testsuite/gcc.target/arm/aes-fuse-1.c
! bb4f62dc6804b99787551bd2e1ee1c9f  gcc/testsuite/gcc.target/arm/aes-fuse-2.c
  beeedfa6811e6847c3cf97dc8034edc6  gcc/testsuite/gcc.target/arm/aes_xor_combine.c
  4c670413ffa35c00c8cf86a9eda18d8b  gcc/testsuite/gcc.target/arm/anddi3-opt.c
  dfc4bf650d099d2aff3f9e5f3d4b62ac  gcc/testsuite/gcc.target/arm/anddi3-opt2.c
--- 69550,69559 ----
  c65022a81cf8898ea37c82f9a6fe227f  gcc/testsuite/gcc.target/arm/acle/stc2l.c
  fc648f69779c2ae9f4075ca8aed84b4f  gcc/testsuite/gcc.target/arm/acle/stcl.c
  040dfdd8abd27c81f014da36e605a1ca  gcc/testsuite/gcc.target/arm/addr-modes-float.c
! b604cc7251da4bfb8a20a095cd4444c8  gcc/testsuite/gcc.target/arm/addr-modes-int.c
  d21ea73439704c16e82e0898ae8bc79e  gcc/testsuite/gcc.target/arm/addr-modes.h
! 22aa6ac448a2401f8d5141e8c3cab826  gcc/testsuite/gcc.target/arm/aes-fuse-1.c
! fa423ed9adef04f77c3e87ee2b99d233  gcc/testsuite/gcc.target/arm/aes-fuse-2.c
  beeedfa6811e6847c3cf97dc8034edc6  gcc/testsuite/gcc.target/arm/aes_xor_combine.c
  4c670413ffa35c00c8cf86a9eda18d8b  gcc/testsuite/gcc.target/arm/anddi3-opt.c
  dfc4bf650d099d2aff3f9e5f3d4b62ac  gcc/testsuite/gcc.target/arm/anddi3-opt2.c
*************** b84f1f7cf1693c2d82dffe64a42da3b4  gcc/te
*** 69185,69195 ****
  3df621a2a6702666801f613e2c1e9223  gcc/testsuite/gcc.target/arm/armv8_1m-fp64-move-1.c
  6d693ceeceae55f1fff94a935992216e  gcc/testsuite/gcc.target/arm/armv8_1m-shift-imm-1.c
  c6c1c759a610556eca59987a77084f45  gcc/testsuite/gcc.target/arm/armv8_1m-shift-reg-1.c
! 53e11cdab71cca17d6fdaf4ed9224a30  gcc/testsuite/gcc.target/arm/armv8_2-fp16-arith-1.c
  5790d3efd74c1ddf5aeb2e8743385c60  gcc/testsuite/gcc.target/arm/armv8_2-fp16-arith-2.c
  6385d3494ed7d5dcaa3d33b79fcfc366  gcc/testsuite/gcc.target/arm/armv8_2-fp16-conv-1.c
! 2f54b8d253156a2be1577d30ce773f07  gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-1.c
! 8411d0e77a0611b1b9aef23030254fbe  gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c
  43365e7220d0c89c221983b0088e64ec  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-1.c
  fa5db58aee2ae5b90cd3abd3c09395cf  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-2.c
  992185bff8a637178d6613bb76a8369c  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-3.c
--- 69571,69581 ----
  3df621a2a6702666801f613e2c1e9223  gcc/testsuite/gcc.target/arm/armv8_1m-fp64-move-1.c
  6d693ceeceae55f1fff94a935992216e  gcc/testsuite/gcc.target/arm/armv8_1m-shift-imm-1.c
  c6c1c759a610556eca59987a77084f45  gcc/testsuite/gcc.target/arm/armv8_1m-shift-reg-1.c
! 5b3a2c86441e5d4b83712d58687052e0  gcc/testsuite/gcc.target/arm/armv8_2-fp16-arith-1.c
  5790d3efd74c1ddf5aeb2e8743385c60  gcc/testsuite/gcc.target/arm/armv8_2-fp16-arith-2.c
  6385d3494ed7d5dcaa3d33b79fcfc366  gcc/testsuite/gcc.target/arm/armv8_2-fp16-conv-1.c
! 99e1cbeb4911db07afb48911459483aa  gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-1.c
! c69f1e0f027fc631442a0a5361397ee1  gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c
  43365e7220d0c89c221983b0088e64ec  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-1.c
  fa5db58aee2ae5b90cd3abd3c09395cf  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-2.c
  992185bff8a637178d6613bb76a8369c  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-3.c
*************** bd5ec5e2db0882814e63c4239cc0bf29  gcc/te
*** 69274,69284 ****
  ebd9a7e3125d7b51692987388532dfb3  gcc/testsuite/gcc.target/arm/bfloat16_scalar_4.c
  7f6fca1944d2c355117b62adc96d2e90  gcc/testsuite/gcc.target/arm/bfloat16_scalar_typecheck.c
  9d566a8c25c9173357e8d1701a9c9181  gcc/testsuite/gcc.target/arm/bfloat16_simd_1_1.c
! e82342fa684459ff8667e9b61d0a7224  gcc/testsuite/gcc.target/arm/bfloat16_simd_1_2.c
  3d1619ca156d9442f835868012752a98  gcc/testsuite/gcc.target/arm/bfloat16_simd_2_1.c
! 713be387902863185c43e0479009cf62  gcc/testsuite/gcc.target/arm/bfloat16_simd_2_2.c
  a30e0a4d7a48b01ccc07bd5be4a0d065  gcc/testsuite/gcc.target/arm/bfloat16_simd_3_1.c
! 9083033564e6fc8e449d986191be65da  gcc/testsuite/gcc.target/arm/bfloat16_simd_3_2.c
  fd023d3635562de2ff5e0ed5260d21d5  gcc/testsuite/gcc.target/arm/bfloat16_vector_typecheck_1.c
  3a97f76c1b98b4d2244bb1a213d2e4b5  gcc/testsuite/gcc.target/arm/bfloat16_vector_typecheck_2.c
  6fd7f87aeac118d347a74f2afe95ddc0  gcc/testsuite/gcc.target/arm/bics_1.c
--- 69660,69670 ----
  ebd9a7e3125d7b51692987388532dfb3  gcc/testsuite/gcc.target/arm/bfloat16_scalar_4.c
  7f6fca1944d2c355117b62adc96d2e90  gcc/testsuite/gcc.target/arm/bfloat16_scalar_typecheck.c
  9d566a8c25c9173357e8d1701a9c9181  gcc/testsuite/gcc.target/arm/bfloat16_simd_1_1.c
! 6ff2d55b28e457c01e5f57c33217acd1  gcc/testsuite/gcc.target/arm/bfloat16_simd_1_2.c
  3d1619ca156d9442f835868012752a98  gcc/testsuite/gcc.target/arm/bfloat16_simd_2_1.c
! d477d122096a7671049840e4df85c931  gcc/testsuite/gcc.target/arm/bfloat16_simd_2_2.c
  a30e0a4d7a48b01ccc07bd5be4a0d065  gcc/testsuite/gcc.target/arm/bfloat16_simd_3_1.c
! 66a3582813f242f6acb7952136e2b12f  gcc/testsuite/gcc.target/arm/bfloat16_simd_3_2.c
  fd023d3635562de2ff5e0ed5260d21d5  gcc/testsuite/gcc.target/arm/bfloat16_vector_typecheck_1.c
  3a97f76c1b98b4d2244bb1a213d2e4b5  gcc/testsuite/gcc.target/arm/bfloat16_vector_typecheck_2.c
  6fd7f87aeac118d347a74f2afe95ddc0  gcc/testsuite/gcc.target/arm/bics_1.c
*************** e5306c98e7af9542607cef498d9d4cab  gcc/te
*** 69304,69309 ****
--- 69690,69696 ----
  bf06244dec6dc49e0817b03e4494a90f  gcc/testsuite/gcc.target/arm/builtin_uaddll.c
  f842ae48d03fd71d6c4251ee6b88d526  gcc/testsuite/gcc.target/arm/builtin_usubl.c
  33305e972aaa5cd2660665305329c212  gcc/testsuite/gcc.target/arm/builtin_usubll.c
+ 00d46b35880659bc8001ea4047b5bb1c  gcc/testsuite/gcc.target/arm/cbz-range.c
  528a1cc7ada5bc63c0c59152d86b8557  gcc/testsuite/gcc.target/arm/cbz.c
  78f9bef0e50a143219120e7b5b4af7b9  gcc/testsuite/gcc.target/arm/cmp-1.c
  97376f46024c436de8ce633177de6e0b  gcc/testsuite/gcc.target/arm/cmp-2.c
*************** a4114cf2b3bd0ac0af3dffbbe0b40004  gcc/te
*** 69322,69327 ****
--- 69709,69716 ----
  b3421fbdc1418b61214986622eb978f2  gcc/testsuite/gcc.target/arm/cmse/baseline/softfp.c
  dfde9b7816ac82223f119b2bfaa13341  gcc/testsuite/gcc.target/arm/cmse/baseline/union-1.c
  a3d5632079324bffb4dfe7cfa572dbe5  gcc/testsuite/gcc.target/arm/cmse/baseline/union-2.c
+ ab09e683e17dc7ce2c4d91c6a8e0d933  gcc/testsuite/gcc.target/arm/cmse/baseline/union-3.c
+ fc61b6892330cc23f0df8333d5d5ff47  gcc/testsuite/gcc.target/arm/cmse/baseline/union-4.c
  3a696ba550dff106d39149511c0b0de5  gcc/testsuite/gcc.target/arm/cmse/bitfield-1.c
  41ae1c120ef99d0e6c273119cef9cd11  gcc/testsuite/gcc.target/arm/cmse/bitfield-2.c
  5a79322cba867ee3afdfb353047e9ad7  gcc/testsuite/gcc.target/arm/cmse/bitfield-3.c
*************** b67dc35cb041e665b0436a8b3c1dbbf9  gcc/te
*** 69388,69393 ****
--- 69777,69783 ----
  df829d6ec7fb9540fcbd66368f0fb17b  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8a.c
  539f0378e45653ff2109841bd4bccc87  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/union-1.c
  f0d9b39107e4de1b049dca00b29a58d2  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/union-2.c
+ faca3c21de94fc80fda6fd51e8115e33  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/union-3.c
  ab4a6ad246ee43f02f3290436cb16703  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/bitfield-4.c
  55c0ab93e6f163c8a765c565d45a8deb  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/bitfield-5.c
  10fb3486026e454edbdbe45ab498982a  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/bitfield-6.c
*************** f32c9a4cdef7ef83fecd67301b456a9d  gcc/te
*** 69403,69412 ****
--- 69793,69805 ----
  ac653d1f3cfc80136bdb76146e93f54e  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/hard/cmse-5.c
  97787bd2fcb796ec7696f02f537bd431  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/hard/cmse-7.c
  72eb1b8dae3f9292128d561e3e35e163  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/hard/cmse-8.c
+ 1f19eefa0007defa3ca45a7482abfc1e  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/hard/union-4.c
+ 807c36fe1a023b784abbb41c04bd3fb3  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/hard/union-fp.c
  c10682b0d6dd961577656c6341f1e957  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/soft/cmse-13.c
  c55c869b20436c24bdd02f85fe70b11d  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/soft/cmse-5.c
  d0badae79ad18b1207053d6aee06d2e2  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/soft/cmse-7.c
  c706b608cdc03272d5b4c56b2eff0aec  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/soft/cmse-8.c
+ 40df0729b706e4e5aa6fb504927583cd  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/soft/union-4.c
  5f2c7d5d20375a6df18e5baba15b33c2  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/softfp-sp/cmse-5.c
  81bddd3d228a9a9ca4be6b55076773e3  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/softfp-sp/cmse-7.c
  5085fb86dd895243667d8656113e2d93  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/softfp-sp/cmse-8.c
*************** cb1f8a28400b5e5ea5ea510c8a09258b  gcc/te
*** 69414,69426 ****
--- 69807,69823 ----
  71cacd1a0ea9cb2d80cab5df1e00d276  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/softfp/cmse-5.c
  5d78ce9c80e35effb58bd70ff8e1c041  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/softfp/cmse-7.c
  7c237776495bc9451d7b94ec36068f56  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/softfp/cmse-8.c
+ b4f8619085f032943e4c8a193542e258  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/softfp/union-4.c
  cb60008d5e98eeaf45a18dec48047164  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/union-1.c
  bfdbc743afa8415599bab6c48cb26d64  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/union-2.c
+ bc5ddeb704b470aff4db297ad27825e6  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/union-3.c
  8cd1e54844f2fab111ede15dfc983556  gcc/testsuite/gcc.target/arm/cmse/pr100333.c
  c7feddd41b8ab7d0bcc61e9ba67a259a  gcc/testsuite/gcc.target/arm/cmse/pr99725.c
  dc937ad7bdd38e233f8eb2871fbab365  gcc/testsuite/gcc.target/arm/cmse/struct-1.c
  018f6e1e401b9f8f53cb13da1c5fcef7  gcc/testsuite/gcc.target/arm/cmse/union-1.x
  4b49e4c79c02f37ae492dd2e76ef29e7  gcc/testsuite/gcc.target/arm/cmse/union-2.x
+ 00b490e0defc9861facd27d1446d45db  gcc/testsuite/gcc.target/arm/cmse/union-3.x
+ 1e947232907f7ad0b0de9dc9f2203863  gcc/testsuite/gcc.target/arm/cmse/union-4.x
  2dc71ce174b431509377d1ffd99a8551  gcc/testsuite/gcc.target/arm/cold-lc.c
  415862d2bb4d1d07b30f96b9f6b103ae  gcc/testsuite/gcc.target/arm/combine-cmp-shift.c
  4aca50869b79ab15beb4a0ff13338a21  gcc/testsuite/gcc.target/arm/combine-movs.c
*************** e95ad2780e346935674e8e065a322d1d  gcc/te
*** 69484,69493 ****
  575ab2ac98e30ba3e1b351506a8afcb0  gcc/testsuite/gcc.target/arm/fmaxmin-2.c
  1f15e3fad418a20060c0b8a618fb5723  gcc/testsuite/gcc.target/arm/fmaxmin.c
  a1182e17a398d2114e6f9d6156618a24  gcc/testsuite/gcc.target/arm/fmaxmin.x
! acd3e91a7d28ee5546286c4936d86e11  gcc/testsuite/gcc.target/arm/fp16-aapcs-1.c
! 9e99c9ae7465a5459e190cb5d75fe5f7  gcc/testsuite/gcc.target/arm/fp16-aapcs-2.c
! 76aa061fcf894a1336f2f8d07bcd7524  gcc/testsuite/gcc.target/arm/fp16-aapcs-3.c
! 45400d3cc5277c10b804897e439d5ea8  gcc/testsuite/gcc.target/arm/fp16-aapcs-4.c
  f7e509420aab463592a3e5d54b6c6b8c  gcc/testsuite/gcc.target/arm/fp16-builtins-1.c
  237aa223257ca24bfddebcc43dd387a2  gcc/testsuite/gcc.target/arm/fp16-compile-alt-1.c
  85be9f1d24d495b2882fc58bb89a96d2  gcc/testsuite/gcc.target/arm/fp16-compile-alt-10.c
--- 69881,69887 ----
  575ab2ac98e30ba3e1b351506a8afcb0  gcc/testsuite/gcc.target/arm/fmaxmin-2.c
  1f15e3fad418a20060c0b8a618fb5723  gcc/testsuite/gcc.target/arm/fmaxmin.c
  a1182e17a398d2114e6f9d6156618a24  gcc/testsuite/gcc.target/arm/fmaxmin.x
! d8203dd017181ab133e278b2250a10d4  gcc/testsuite/gcc.target/arm/fp16-aapcs.c
  f7e509420aab463592a3e5d54b6c6b8c  gcc/testsuite/gcc.target/arm/fp16-builtins-1.c
  237aa223257ca24bfddebcc43dd387a2  gcc/testsuite/gcc.target/arm/fp16-compile-alt-1.c
  85be9f1d24d495b2882fc58bb89a96d2  gcc/testsuite/gcc.target/arm/fp16-compile-alt-10.c
*************** ed8f53ad845cace075e82259961588c1  gcc/te
*** 69574,69583 ****
  07838a70a70c703269fa0783335a34b7  gcc/testsuite/gcc.target/arm/ivopts-5.c
  371c001d833d940cd40d8aa3fee9915d  gcc/testsuite/gcc.target/arm/ivopts-orig_biv-inc.c
  c4e0098d92012d398b34de432c7f9cba  gcc/testsuite/gcc.target/arm/ivopts.c
! 629878f590b6027b463fdc14a2b3bd9f  gcc/testsuite/gcc.target/arm/lceil-vcvt_1.c
  a38561d69fa262860777d4da466d538e  gcc/testsuite/gcc.target/arm/ldrd-strd-offset.c
  02b9352efc9d3dded38ac3a6281bcdd1  gcc/testsuite/gcc.target/arm/ldrd-strd-pair-1.c
! cd5d776718748bd9e5c15d1b763fac4a  gcc/testsuite/gcc.target/arm/lfloor-vcvt_1.c
  3b99d425390b2c010e9f67c320c6651b  gcc/testsuite/gcc.target/arm/lob.h
  30eb8bf7f61ddb2c4d5226a9bb14e1c7  gcc/testsuite/gcc.target/arm/lob1.c
  21a0d38f913fade2adb9df1b375a0b15  gcc/testsuite/gcc.target/arm/lob2.c
--- 69968,69977 ----
  07838a70a70c703269fa0783335a34b7  gcc/testsuite/gcc.target/arm/ivopts-5.c
  371c001d833d940cd40d8aa3fee9915d  gcc/testsuite/gcc.target/arm/ivopts-orig_biv-inc.c
  c4e0098d92012d398b34de432c7f9cba  gcc/testsuite/gcc.target/arm/ivopts.c
! f34b883201d67907215163e81a1e647d  gcc/testsuite/gcc.target/arm/lceil-vcvt_1.c
  a38561d69fa262860777d4da466d538e  gcc/testsuite/gcc.target/arm/ldrd-strd-offset.c
  02b9352efc9d3dded38ac3a6281bcdd1  gcc/testsuite/gcc.target/arm/ldrd-strd-pair-1.c
! b6d21b184b9363ec63310029743b3ec8  gcc/testsuite/gcc.target/arm/lfloor-vcvt_1.c
  3b99d425390b2c010e9f67c320c6651b  gcc/testsuite/gcc.target/arm/lob.h
  30eb8bf7f61ddb2c4d5226a9bb14e1c7  gcc/testsuite/gcc.target/arm/lob1.c
  21a0d38f913fade2adb9df1b375a0b15  gcc/testsuite/gcc.target/arm/lob2.c
*************** bf821309d2cd93b8c0d6b0704742bc45  gcc/te
*** 69590,69596 ****
  045075d4c4f653f51cab15b6c12b3e09  gcc/testsuite/gcc.target/arm/long-calls-3.c
  856b2cad766c5a53d737088d9056031b  gcc/testsuite/gcc.target/arm/long-calls-4.c
  bda0b982c40bee2fd28b1750fa6bc2bf  gcc/testsuite/gcc.target/arm/lp1189445.c
! b4f8ad85c07f7be61a90747a85bd0be4  gcc/testsuite/gcc.target/arm/lround-vcvt_1.c
  8d549d0367ca6688329df1257420972a  gcc/testsuite/gcc.target/arm/lto/lto.exp
  fd9597acaf90b4fc0a611739248cecea  gcc/testsuite/gcc.target/arm/lto/pr61123-enum-size_0.c
  636cbd6b191957f3f94b3734e71688a5  gcc/testsuite/gcc.target/arm/lto/pr61123-enum-size_1.c
--- 69984,69990 ----
  045075d4c4f653f51cab15b6c12b3e09  gcc/testsuite/gcc.target/arm/long-calls-3.c
  856b2cad766c5a53d737088d9056031b  gcc/testsuite/gcc.target/arm/long-calls-4.c
  bda0b982c40bee2fd28b1750fa6bc2bf  gcc/testsuite/gcc.target/arm/lp1189445.c
! 907fdd46667ce02cd530e6e361337e71  gcc/testsuite/gcc.target/arm/lround-vcvt_1.c
  8d549d0367ca6688329df1257420972a  gcc/testsuite/gcc.target/arm/lto/lto.exp
  fd9597acaf90b4fc0a611739248cecea  gcc/testsuite/gcc.target/arm/lto/pr61123-enum-size_0.c
  636cbd6b191957f3f94b3734e71688a5  gcc/testsuite/gcc.target/arm/lto/pr61123-enum-size_1.c
*************** fffad35934f526817fc333e82d0e79bb  gcc/te
*** 69657,69663 ****
--- 70051,70059 ----
  f7aa4c937541029a5bd3fe618bef6974  gcc/testsuite/gcc.target/arm/mve/general/double_pragmas_1.c
  e787e32385a63c5e015b59725e3d0250  gcc/testsuite/gcc.target/arm/mve/general/nomve_1.c
  398e4816db99fac1f05cd83d7d9911ec  gcc/testsuite/gcc.target/arm/mve/general/preserve_user_namespace_1.c
+ 2250da8fa6c9a11e681ab30e5a28beff  gcc/testsuite/gcc.target/arm/mve/intrinsics/asrl-various-ranges.c
  2884159c19b60a0ae3743c8a1b9c6729  gcc/testsuite/gcc.target/arm/mve/intrinsics/asrl.c
+ 9771ae4e87fe4c9924a3ea4b95fbd696  gcc/testsuite/gcc.target/arm/mve/intrinsics/lsll-various-ranges.c
  c52dd6cedef3761b071c005d8eda4014  gcc/testsuite/gcc.target/arm/mve/intrinsics/lsll.c
  8742cb74c36fe44acebeaf852842a44d  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve-vldstr16-no-writeback.c
  755209da383c0bfcbef14b5d5e67e63c  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fp_fpu1.c
*************** ab72cfcef8400549b3b4d4d318e4955e  gcc/te
*** 69697,69702 ****
--- 70093,70101 ----
  4211e73819bb661ddd18271cf8dab0e5  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vstr_p.c
  cfb4125c4550d5cf153bac3dcd2886ad  gcc/testsuite/gcc.target/arm/mve/intrinsics/pr101016.c
  c6565beafc869833d2a6dd9484818c2d  gcc/testsuite/gcc.target/arm/mve/intrinsics/pr118332.c
+ 1073bc89c952fc9eb9cdb6a1efd78a78  gcc/testsuite/gcc.target/arm/mve/intrinsics/pr122175.c
+ b52bd79f0b568c75adaa75c022b0e2a0  gcc/testsuite/gcc.target/arm/mve/intrinsics/pr122223.c
+ d7c212778ee5c316128a821b206740c1  gcc/testsuite/gcc.target/arm/mve/intrinsics/pr124870.c
  b64a60d68e969b641b8652c2bd4eef0d  gcc/testsuite/gcc.target/arm/mve/intrinsics/pr97327.c
  f1860ef4320f7f2a6a4791bdb0c063ba  gcc/testsuite/gcc.target/arm/mve/intrinsics/sqrshr.c
  5d7653e2d5007d0c5a0f2368f9b07c02  gcc/testsuite/gcc.target/arm/mve/intrinsics/sqrshrl_sat48.c
*************** f800954ed63838e287ff6e1a23290ce0  gcc/te
*** 69767,69774 ****
  42477f6df1dda97231658c67dd1c33b3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_m_u32.c
  ec6423961de9ca5f2cb66d89043d66e8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_s32.c
  87dfc338f1af58cdf73c1f2e3a644405  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_u32.c
! 0e70b98bf29cbcedc33a3c6c66128fd0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_s32.c
! 76884627c97729162f401bd38f98783f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_u32.c
  90c91eea3a5177e36dd45a9543b728a4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_s32.c
  15e2481ce5d9bea739ce6b372c3d433e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_u32.c
  30849dd964b0e504a851831adfe15591  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_p_s32.c
--- 70166,70174 ----
  42477f6df1dda97231658c67dd1c33b3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_m_u32.c
  ec6423961de9ca5f2cb66d89043d66e8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_s32.c
  87dfc338f1af58cdf73c1f2e3a644405  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_u32.c
! 50e0a047cebdb35ac47d77a3b8ce7dd7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq-check-carry.c
! e43c5c55acb5b3a4298f4a7ec83f8eac  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_s32.c
! 546e8e74f477c43934e3b9daf9721338  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_u32.c
  90c91eea3a5177e36dd45a9543b728a4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_s32.c
  15e2481ce5d9bea739ce6b372c3d433e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_u32.c
  30849dd964b0e504a851831adfe15591  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_p_s32.c
*************** b16eb4dae838ed49e53f7c7a2d51615f  gcc/te
*** 69879,69887 ****
  379305fd24a862f238629854c414dee6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_f32.c
  a8bfc54a0b707b20b1e4337a873d1141  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_f16.c
  8b752c095c13aaa5b248cac872529034  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_f32.c
! 1c2dc2fc6339f159195d92c2987b135e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_s16.c
  746dd2a1cd67a54ed37d839514563937  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_s32.c
! 78d54654b68d817b4f9b11747f9774ab  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_u16.c
  3da9b316f166be2b0b1bef8b36a77698  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_u32.c
  b38d694edb554777c912d3d8b351542f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_s16.c
  e0f29475bccd8d3c60702fb4a340ce3e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_s32.c
--- 70279,70287 ----
  379305fd24a862f238629854c414dee6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_f32.c
  a8bfc54a0b707b20b1e4337a873d1141  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_f16.c
  8b752c095c13aaa5b248cac872529034  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_f32.c
! 6645e237ef6a7718a846b6be1f14e729  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_s16.c
  746dd2a1cd67a54ed37d839514563937  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_s32.c
! 23800fa69c42944a6f985c4ac98a4a1a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_u16.c
  3da9b316f166be2b0b1bef8b36a77698  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_u32.c
  b38d694edb554777c912d3d8b351542f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_s16.c
  e0f29475bccd8d3c60702fb4a340ce3e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_s32.c
*************** e0f29475bccd8d3c60702fb4a340ce3e  gcc/te
*** 69889,69897 ****
  5b7dec9e9a47f3693c0ad453c5f70d0b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_u16.c
  f82dce197d257352e69ae046fe7e17b7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_u32.c
  981cb4a3d8d3c985810e2af50820e729  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_u8.c
! b800334fa42fe33f6d447e96a271b86f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_s16.c
  32552c66d34e62a84fa1c34edea165d1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_s32.c
! bd9f6e74be4e9f7031bf83b1b68d0b67  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_u16.c
  64c8ce72f7403217eca720fdff91052b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_u32.c
  0a34875894b53d7fe0391138f5ef2daf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s16.c
  0006ca8192ad47c0dc56b383f2736f35  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s32.c
--- 70289,70297 ----
  5b7dec9e9a47f3693c0ad453c5f70d0b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_u16.c
  f82dce197d257352e69ae046fe7e17b7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_u32.c
  981cb4a3d8d3c985810e2af50820e729  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_u8.c
! e999f4f63c7f59e59d4be21d91c4f9ec  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_s16.c
  32552c66d34e62a84fa1c34edea165d1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_s32.c
! 29f8c8ed91aef3ce211503973d026051  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_u16.c
  64c8ce72f7403217eca720fdff91052b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_u32.c
  0a34875894b53d7fe0391138f5ef2daf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s16.c
  0006ca8192ad47c0dc56b383f2736f35  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s32.c
*************** eaca578057885ae943c817131017c789  gcc/te
*** 71110,71118 ****
  b9436ee142cf012cba4bc0227caee592  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u16.c
  54347a155ea714bcb9e212dc3462b701  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u32.c
  c800aa91b52274f68917941cd1190c7e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u8.c
! 17eaebdff48759b34a8e10340656b777  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_s16.c
  d4021f40246bd789c67f5fbc021f570d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_s32.c
! baf325d27e3cc75fa283ed038be71f09  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_u16.c
  e2c3f8d807e6df670b182639697d61d2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_u32.c
  f0a632576ce63037f3bf0c52cfdeaab4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_s16.c
  be099bfa149c919b97ff87b3ac9e563a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_s32.c
--- 71510,71518 ----
  b9436ee142cf012cba4bc0227caee592  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u16.c
  54347a155ea714bcb9e212dc3462b701  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u32.c
  c800aa91b52274f68917941cd1190c7e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u8.c
! 1ecc461eacff322e4e70e4468e408e38  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_s16.c
  d4021f40246bd789c67f5fbc021f570d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_s32.c
! 451c7697f29e12d8e4e3b98f74ba421d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_u16.c
  e2c3f8d807e6df670b182639697d61d2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_u32.c
  f0a632576ce63037f3bf0c52cfdeaab4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_s16.c
  be099bfa149c919b97ff87b3ac9e563a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_s32.c
*************** b810569b55c0974c561012a54fdccd5d  gcc/te
*** 71120,71128 ****
  aaf1ee37ab90a8743accdac607e5ddbd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_u16.c
  36c55ee3b8a6e46022a1c372de48d144  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_u32.c
  1c0b99695cb6d99decfe778dad796bb1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_u8.c
! ded3a05dba6e22eedd7087187a6a0860  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_s16.c
  c5fac965cbef4b881d9a1f2d98150781  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_s32.c
! c69943ff532db85c43c96ccec2f33c06  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_u16.c
  3984fdd8ff00f38d51ee6d0a12c1d577  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_u32.c
  98f05c45e70804bc87c31ef7bb1496c3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_s16.c
  9fd8ff0080b31d26e95e8154662b8b1d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_s32.c
--- 71520,71528 ----
  aaf1ee37ab90a8743accdac607e5ddbd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_u16.c
  36c55ee3b8a6e46022a1c372de48d144  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_u32.c
  1c0b99695cb6d99decfe778dad796bb1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_u8.c
! 8a835299c26823b053879511337d7e5a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_s16.c
  c5fac965cbef4b881d9a1f2d98150781  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_s32.c
! 69bb1727970db5a83942b6b918fcf52a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_u16.c
  3984fdd8ff00f38d51ee6d0a12c1d577  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_u32.c
  98f05c45e70804bc87c31ef7bb1496c3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_s16.c
  9fd8ff0080b31d26e95e8154662b8b1d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_s32.c
*************** c69943ff532db85c43c96ccec2f33c06  gcc/te
*** 71130,71138 ****
  01a1541f848b77189ff1703e153057f2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_u16.c
  57c84dfaf5a0ecb71406f24f4f636f1e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_u32.c
  5fac6cff0ac97247f74de50048bb21ba  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_u8.c
! a0e4fe8dfaeea84686a6c1c2003f745d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_s16.c
  1816737324959d4cf189b1504224ba7d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_s32.c
! ef855992672862b7ac27892241bbddaa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_u16.c
  5a07bf783a2ff4e7ffbb9b22e931232d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_u32.c
  b0dab0d07df2863f1f1023447370dcb3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_s16.c
  5a8c455825f86d346471e9f54aaa661c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_s32.c
--- 71530,71538 ----
  01a1541f848b77189ff1703e153057f2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_u16.c
  57c84dfaf5a0ecb71406f24f4f636f1e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_u32.c
  5fac6cff0ac97247f74de50048bb21ba  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_u8.c
! d7cec11fac57c4fd296f6f6baf946a4d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_s16.c
  1816737324959d4cf189b1504224ba7d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_s32.c
! 7a8ac4b5dbff39528e65dc83efbf6cc5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_u16.c
  5a07bf783a2ff4e7ffbb9b22e931232d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_u32.c
  b0dab0d07df2863f1f1023447370dcb3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_s16.c
  5a8c455825f86d346471e9f54aaa661c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_s32.c
*************** d6b79c1e1c2d8e751f7c2c105dae3898  gcc/te
*** 71183,71191 ****
  cb9e716f57810b5c1ce6abeabe0ab472  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_f32.c
  66867bf3d434113ee927a217680b23cd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_f16.c
  3a172a074a4862a157f14b3801bb1210  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_f32.c
! b679f6fa084af2157a4702ed3a8f933a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_s16.c
  bc4d6f06ce904236acedd8a196b21d7c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_s32.c
! ed3915612cd34365a95b50948d8c57b8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_u16.c
  6967987fe0e53d1d43cf04820504e0fc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_u32.c
  3e4edba2c408373fa1fdf38e3667d5f2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_s16.c
  b3ef2c205b2e4d7abe823331a5e5cb82  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_s32.c
--- 71583,71591 ----
  cb9e716f57810b5c1ce6abeabe0ab472  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_f32.c
  66867bf3d434113ee927a217680b23cd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_f16.c
  3a172a074a4862a157f14b3801bb1210  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_f32.c
! 1e3384ba9ab1b9b3fd37a092bfd22f68  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_s16.c
  bc4d6f06ce904236acedd8a196b21d7c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_s32.c
! 9b36e50834f20708a55479fe14d3a813  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_u16.c
  6967987fe0e53d1d43cf04820504e0fc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_u32.c
  3e4edba2c408373fa1fdf38e3667d5f2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_s16.c
  b3ef2c205b2e4d7abe823331a5e5cb82  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_s32.c
*************** ba90459935c5f1da32c14f639fd69799  gcc/te
*** 71193,71201 ****
  694e181768ab2f46aa267229ea46bae8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_u16.c
  7b254947d9d53ee8601410e8fc9a4cda  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_u32.c
  0d21a013db6a37220f36994890a724b2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_u8.c
! cb7920d9b05c231d39b1aee4377b7e85  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_s16.c
  682b50d539082f12948c3a093d482c86  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_s32.c
! b3fa31f2ab0bcb4b34769d23a58f0547  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_u16.c
  5c588306a470470d47e69c94f3e20b92  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_u32.c
  430b11d797496fa82cff7776e25e2c97  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_s16.c
  788a771e8e4508f41d3f90fc9f7fb05a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_s32.c
--- 71593,71601 ----
  694e181768ab2f46aa267229ea46bae8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_u16.c
  7b254947d9d53ee8601410e8fc9a4cda  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_u32.c
  0d21a013db6a37220f36994890a724b2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_u8.c
! b74ba12311da26177a09b55170c0a081  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_s16.c
  682b50d539082f12948c3a093d482c86  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_s32.c
! 77d49599f653ecf64fd2e2b80f02fd02  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_u16.c
  5c588306a470470d47e69c94f3e20b92  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_u32.c
  430b11d797496fa82cff7776e25e2c97  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_s16.c
  788a771e8e4508f41d3f90fc9f7fb05a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_s32.c
*************** ad0f72f16f1436835769ad26f4554b5b  gcc/te
*** 71748,71755 ****
  fe4b54b2c4e751934615b7c2ebfd87cd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_m_u32.c
  f2b889d1844a15b18389534c4050fd3b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_s32.c
  ed711f516d90a10c0e04b55f40a058fe  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_u32.c
! 22706fd4cb189bfba2724217e07083d8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c
! 0f8daa925acd949859c832c7d986478e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c
  a42ff09d93993a96614fefa3d6e96505  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_s32.c
  a719098a51cc49f83ff59264834d4b4c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_u32.c
  af70db4174c1713b590a6d5ba294aa2d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f16.c
--- 72148,72155 ----
  fe4b54b2c4e751934615b7c2ebfd87cd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_m_u32.c
  f2b889d1844a15b18389534c4050fd3b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_s32.c
  ed711f516d90a10c0e04b55f40a058fe  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_u32.c
! eecc04e0264dc2ab8b3824ea39698090  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c
! 1bd6cfd4525432a0c7ad3aeac010f72c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c
  a42ff09d93993a96614fefa3d6e96505  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_s32.c
  a719098a51cc49f83ff59264834d4b4c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_u32.c
  af70db4174c1713b590a6d5ba294aa2d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f16.c
*************** d104c798882729bd8931c673334d0232  gcc/te
*** 72133,72138 ****
--- 72533,72539 ----
  4ae6f7347fb5ee353212eb91d46cd67c  gcc/testsuite/gcc.target/arm/mve/pr114801.c
  8402a0860b5d6d3c80715f2741e4a862  gcc/testsuite/gcc.target/arm/mve/pr117408-1.c
  31e2d92c29bd8c4dc1a82b6e5740b459  gcc/testsuite/gcc.target/arm/mve/pr117408-2.c
+ 2844cdec13cd0820b83cc92387cb6ea6  gcc/testsuite/gcc.target/arm/mve/pr122858.c
  a27c7480ff5cba860dda5da683bb3b87  gcc/testsuite/gcc.target/arm/naked-1.c
  292c423c2aa66b03398c922259527367  gcc/testsuite/gcc.target/arm/naked-2.c
  2d75e6bd9379b6e090e6104b97434376  gcc/testsuite/gcc.target/arm/negdi-1.c
*************** bce9be46a9e956c5fcc66bfb68691f0f  gcc/te
*** 72154,72159 ****
--- 72555,72562 ----
  7783093cce901b3a47068de662227a6b  gcc/testsuite/gcc.target/arm/neon-offset-1.c
  2f0d808ded25a27c867026ac6296d1b9  gcc/testsuite/gcc.target/arm/neon-recip-div-1.c
  1f48b8fad239c5f29804610f9f08ce99  gcc/testsuite/gcc.target/arm/neon-reload-class.c
+ ac20adafaa278263e92b9a745a6cb0da  gcc/testsuite/gcc.target/arm/neon-smax16.c
+ 329671596e7c24a6fcb5c9d102bf7c37  gcc/testsuite/gcc.target/arm/neon-smin16.c
  ec34622d4bccd4ebbdf6fcf3d3936176  gcc/testsuite/gcc.target/arm/neon-thumb2-move.c
  add75049520bb3c0c677317469ccb57e  gcc/testsuite/gcc.target/arm/neon-vadds64.c
  323bfa59651e6ef8beef2767edd16ddf  gcc/testsuite/gcc.target/arm/neon-vaddu64.c
*************** c2682b969fcec66bb2ebb2442ff4221b  gcc/te
*** 72272,72277 ****
--- 72675,72683 ----
  39327fb26a438561d0617a9bfe99c59f  gcc/testsuite/gcc.target/arm/pr115188.c
  01f3623877a32b45af0d229eab49f4cf  gcc/testsuite/gcc.target/arm/pr117675.c
  bc84b25bc522b6ed07bd7885605c00d7  gcc/testsuite/gcc.target/arm/pr120351.c
+ 82da20b2c4061a368f405dbeb1cdb341  gcc/testsuite/gcc.target/arm/pr123271.c
+ 8120924509f8b52f39137165dd663164  gcc/testsuite/gcc.target/arm/pr124134.c
+ 236563c6007691d6571ab9e909e2c81e  gcc/testsuite/gcc.target/arm/pr124933.c
  3ce2c6a399da67ae36390d522e1f1296  gcc/testsuite/gcc.target/arm/pr19599.c
  3425143e88f989a8f52f345e6237106a  gcc/testsuite/gcc.target/arm/pr26702.c
  fc0dd660f56108005b4f0b142e94d10d  gcc/testsuite/gcc.target/arm/pr37780_1.c
*************** f2610d7575b26d3fa4727d383179637f  gcc/te
*** 72500,72506 ****
  cffb59f8fe9ec70efaff181d133efaf9  gcc/testsuite/gcc.target/arm/simd/bf16_ma_2.c
  fde2c43a7c47fe7ce9ddd5247cf0715e  gcc/testsuite/gcc.target/arm/simd/bf16_mmla_1.c
  f86742a960fc1c2bd4175fbdab1ce6af  gcc/testsuite/gcc.target/arm/simd/bf16_vldn_1.c
! c85c6e997259bc6ea785859ca3cd0503  gcc/testsuite/gcc.target/arm/simd/bf16_vstn_1.c
  4cb183a1602cdf7e8df9808095457c17  gcc/testsuite/gcc.target/arm/simd/fp16fml_high.c
  86a910fbea8e786089563912a699727e  gcc/testsuite/gcc.target/arm/simd/fp16fml_lane_high.c
  ce6bfdecafebf5d96e30584ac5bde11f  gcc/testsuite/gcc.target/arm/simd/fp16fml_lane_low.c
--- 72906,72912 ----
  cffb59f8fe9ec70efaff181d133efaf9  gcc/testsuite/gcc.target/arm/simd/bf16_ma_2.c
  fde2c43a7c47fe7ce9ddd5247cf0715e  gcc/testsuite/gcc.target/arm/simd/bf16_mmla_1.c
  f86742a960fc1c2bd4175fbdab1ce6af  gcc/testsuite/gcc.target/arm/simd/bf16_vldn_1.c
! d138dd36cdbc0aeae4d19064c2462bac  gcc/testsuite/gcc.target/arm/simd/bf16_vstn_1.c
  4cb183a1602cdf7e8df9808095457c17  gcc/testsuite/gcc.target/arm/simd/fp16fml_high.c
  86a910fbea8e786089563912a699727e  gcc/testsuite/gcc.target/arm/simd/fp16fml_lane_high.c
  ce6bfdecafebf5d96e30584ac5bde11f  gcc/testsuite/gcc.target/arm/simd/fp16fml_lane_low.c
*************** f0eb5e8a3b3eb97189a9cf149049fdb4  gcc/te
*** 72809,72815 ****
  1a434cdf201666683734ecb57116b1eb  gcc/testsuite/gcc.target/arm/unaligned-memcpy-3.c
  ff972a30747f3107d428fbd2b36c5388  gcc/testsuite/gcc.target/arm/unaligned-memcpy-4.c
  b2c4a07a3f14f80317075ad979b01692  gcc/testsuite/gcc.target/arm/unsigned-extend-1.c
! 1d12cb60b2e190558301f6543110d6d1  gcc/testsuite/gcc.target/arm/unsigned-extend-2.c
  6f28a91c6866a9c554b9e75346fc82ef  gcc/testsuite/gcc.target/arm/unsigned-float.c
  dafe3f438a1a1630e53458e22dbec6bc  gcc/testsuite/gcc.target/arm/usadv16qi.c
  dd7bfde900d68546e1d3dd468f37370b  gcc/testsuite/gcc.target/arm/va_list.c
--- 73215,73221 ----
  1a434cdf201666683734ecb57116b1eb  gcc/testsuite/gcc.target/arm/unaligned-memcpy-3.c
  ff972a30747f3107d428fbd2b36c5388  gcc/testsuite/gcc.target/arm/unaligned-memcpy-4.c
  b2c4a07a3f14f80317075ad979b01692  gcc/testsuite/gcc.target/arm/unsigned-extend-1.c
! f5dc21d31c426e6bafaa99ba81251950  gcc/testsuite/gcc.target/arm/unsigned-extend-2.c
  6f28a91c6866a9c554b9e75346fc82ef  gcc/testsuite/gcc.target/arm/unsigned-float.c
  dafe3f438a1a1630e53458e22dbec6bc  gcc/testsuite/gcc.target/arm/usadv16qi.c
  dd7bfde900d68546e1d3dd468f37370b  gcc/testsuite/gcc.target/arm/va_list.c
*************** ad889dc702c92663961bc564b883d787  gcc/te
*** 72853,72859 ****
  05c3589a49c42a1f66dba99c2e67575f  gcc/testsuite/gcc.target/arm/volatile-bitfields-2.c
  f0d030e6fbffef2383334d1424090ccf  gcc/testsuite/gcc.target/arm/volatile-bitfields-3.c
  56d8ff7bdf563dcd918699bd8ae01ee9  gcc/testsuite/gcc.target/arm/volatile-bitfields-4.c
! ff14f375f3415d01a476840f37b062b0  gcc/testsuite/gcc.target/arm/vrinta-ce.c
  22c159438f9959b6666b395d5c6aecbe  gcc/testsuite/gcc.target/arm/vrintaf32.c
  c9f286d71ee58c4562f8ce595d9435f7  gcc/testsuite/gcc.target/arm/vrintaf64.c
  7ae924766d744675519935afb228f3db  gcc/testsuite/gcc.target/arm/vrintmf32.c
--- 73259,73265 ----
  05c3589a49c42a1f66dba99c2e67575f  gcc/testsuite/gcc.target/arm/volatile-bitfields-2.c
  f0d030e6fbffef2383334d1424090ccf  gcc/testsuite/gcc.target/arm/volatile-bitfields-3.c
  56d8ff7bdf563dcd918699bd8ae01ee9  gcc/testsuite/gcc.target/arm/volatile-bitfields-4.c
! 76aa87f069cd2a3471fd342b14dd01ec  gcc/testsuite/gcc.target/arm/vrinta-ce.c
  22c159438f9959b6666b395d5c6aecbe  gcc/testsuite/gcc.target/arm/vrintaf32.c
  c9f286d71ee58c4562f8ce595d9435f7  gcc/testsuite/gcc.target/arm/vrintaf64.c
  7ae924766d744675519935afb228f3db  gcc/testsuite/gcc.target/arm/vrintmf32.c
*************** a1131491d67160098e775860b91e3021  gcc/te
*** 72902,72909 ****
--- 73308,73319 ----
  79a594a642e89de4c3a753867b50cf54  gcc/testsuite/gcc.target/arm/xordi3-opt.c
  c80b20e750ebef437da2bce443dea236  gcc/testsuite/gcc.target/avr/attribute-io.h
  67dbd95b35a1b23daab711eb1cc3e33f  gcc/testsuite/gcc.target/avr/avr.exp
+ 5c31309787a1c63d40dce18c252c37a1  gcc/testsuite/gcc.target/avr/cmpdi-1.c
  a6701935d18c8ed062555c8a48454bc9  gcc/testsuite/gcc.target/avr/dev-specific-rmw.c
+ 14ec7b85b2ab003574d858aa229c3112  gcc/testsuite/gcc.target/avr/dtofx.c
  2028ceccf9f97e5e84e9adf6beb7597e  gcc/testsuite/gcc.target/avr/exit-abort.h
+ 6c83d167de5a523cffe112594bd1cd56  gcc/testsuite/gcc.target/avr/fminfmax-1.c
+ f99b6b374e8532e344331366048bd0b9  gcc/testsuite/gcc.target/avr/fxtod.c
  ba7c48974675d54204196ccc8c44007e  gcc/testsuite/gcc.target/avr/isr-test.h
  d258157b4a9f2a166772579aaadca0be  gcc/testsuite/gcc.target/avr/lra-cpymem_qi.c
  c1c7be0795b89f4d537c95e15050d230  gcc/testsuite/gcc.target/avr/lra-elim.c
*************** b61291f78078147f21c923a3c8b81a63  gcc/te
*** 72951,72956 ****
--- 73361,73368 ----
  c2fc6d1ea97f22057cf58d7025837704  gcc/testsuite/gcc.target/avr/pr115830-lsr.c
  a221ce1cf8f087e1b841edfdc50cf1d1  gcc/testsuite/gcc.target/avr/pr115830-sub-ext.c
  6f031744eb7ae87b9e251bb5492208f6  gcc/testsuite/gcc.target/avr/pr115830-sub.c
+ c8dee67a2567af17cd08c345a4ef3aea  gcc/testsuite/gcc.target/avr/pr122220.c
+ abbae4b0f7390ccdb0c5394f5172173a  gcc/testsuite/gcc.target/avr/pr122222-sitod.c
  8d351de18b6ca99f76c43eaa14213d53  gcc/testsuite/gcc.target/avr/pr46779-1.c
  2887bd8c777e4696616590f0d60653b6  gcc/testsuite/gcc.target/avr/pr46779-2.c
  d92831f37e30237d1dc568f585e4c2c9  gcc/testsuite/gcc.target/avr/pr50739.c
*************** cbd676b663043514bbc26a8a6c3b7a9d  gcc/te
*** 72988,72993 ****
--- 73400,73406 ----
  57cf0cd622a50ae70434f57249214c0a  gcc/testsuite/gcc.target/avr/progmem-error-1.cpp
  56de611fd29076ce9da389a853476819  gcc/testsuite/gcc.target/avr/progmem-warning-1.c
  06a40c47b5a1c6fd69f69a33ab43a52e  gcc/testsuite/gcc.target/avr/progmem.h
+ d0517d381fce8d1c143604ebcf5f58cc  gcc/testsuite/gcc.target/avr/sincos-1.c
  e0cdee8aeda646b4568b7a3c52bff5fe  gcc/testsuite/gcc.target/avr/torture/add-extend.c
  2b06671686db85920f5618751e2f29b6  gcc/testsuite/gcc.target/avr/torture/addr-space-1-0.c
  74d75d6b9b2f092a0eaf81b8ffe81ced  gcc/testsuite/gcc.target/avr/torture/addr-space-1-1.c
*************** f0df0c8f4daf66789854622391d700cf  gcc/te
*** 73079,73084 ****
--- 73492,73507 ----
  59f291298a5520267ffaa080ff9af660  gcc/testsuite/gcc.target/avr/torture/pr120423-1.c
  335e928612eeba541ace98419cfa1588  gcc/testsuite/gcc.target/avr/torture/pr120423-116389.c
  63785ceba6e301ca68abd46c75c8f6a8  gcc/testsuite/gcc.target/avr/torture/pr120423-2.c
+ d0438290469e79373f6dd3933d324608  gcc/testsuite/gcc.target/avr/torture/pr122187.c
+ 29f4c964db7ef564a3a000cb063b157c  gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-ssk.c
+ 67193b81ec722633cd4a96c262f212b7  gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-ssr.c
+ 74bee38deb2c7a93221837e40bbfadc7  gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-suk.c
+ cfa6dc119f8aecd5a863526026a0b850  gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-sur.c
+ ebbf958a9ec613b0e83f39734d21b008  gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-usk.c
+ 61f30bb6c17362860da7175576769d9c  gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-usr.c
+ b5f3dac0a4aa3e456482d4b3162d64b6  gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-uuk.c
+ f5a1361523de0e3faf7dfdd815bbaedf  gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-uur.c
+ 33205c0601ab01f0a0bb4fcfdc9bd796  gcc/testsuite/gcc.target/avr/torture/pr125409.h
  42a74f28c740c9bd42dab79171f49a39  gcc/testsuite/gcc.target/avr/torture/pr39633.c
  8fb17af722ee890b7fa08b5610cdb80e  gcc/testsuite/gcc.target/avr/torture/pr41885.c
  70b849f57ecf42299230b99b7734dd2d  gcc/testsuite/gcc.target/avr/torture/pr51374-1.c
*************** b460526d0eaa50cb9a920c16a0074c0e  gcc/te
*** 73478,73483 ****
--- 73901,73907 ----
  e6aad35d5d9107b96f024e37ca14ddab  gcc/testsuite/gcc.target/bpf/smov-pseudoc-2.c
  b19d9fd422be4741c38cfd572b32a05b  gcc/testsuite/gcc.target/bpf/sync-fetch-and-add.c
  657b196a2414bfd6480a9ed6066f8819  gcc/testsuite/gcc.target/bpf/xbpf-indirect-call-1.c
+ fad710985d2f295db006a9d98419f4e9  gcc/testsuite/gcc.target/bpf/zero-ext.c
  3ae9e0cc2cd08e28ef54e8540c762679  gcc/testsuite/gcc.target/cris/20011127-1.c
  75d3e9019c866a8402bf7aa4c913ee2d  gcc/testsuite/gcc.target/cris/asm-b-1.c
  a9d478d7af0e0b31660f3b7e507a6318  gcc/testsuite/gcc.target/cris/asm-other.S
*************** a93a298f547274ed3c2b935fceada10f  gcc/te
*** 74015,74053 ****
  de43766ff547a704d67f8c662bc93c66  gcc/testsuite/gcc.target/i386/amxavx512-cvtrowps2ph-2.c
  cc0603febc979dbf700b27494eacbc42  gcc/testsuite/gcc.target/i386/amxavx512-movrow-2.c
  3e5ed8f51d1403b179db592f12cb019c  gcc/testsuite/gcc.target/i386/amxbf16-asmatt-1.c
! 215b9569abd57352c2d13ba5129e07cd  gcc/testsuite/gcc.target/i386/amxbf16-asmintel-1.c
  c4406ef230e7a6bb0e7b45b2f94958e9  gcc/testsuite/gcc.target/i386/amxbf16-dpbf16ps-2.c
  0787eb1011631a123144aa2e9fe5b9f2  gcc/testsuite/gcc.target/i386/amxcomplex-asmatt-1.c
! 971dbba18c823297793b59421738511a  gcc/testsuite/gcc.target/i386/amxcomplex-asmintel-1.c
  88abb806331f7455dfc053e7bfa9993d  gcc/testsuite/gcc.target/i386/amxcomplex-cmmimfp16ps-2.c
  5029635b15d7dd713761d53e4630a666  gcc/testsuite/gcc.target/i386/amxcomplex-cmmrlfp16ps-2.c
  0a13ebe83385a9aedb0a82cf5504a96b  gcc/testsuite/gcc.target/i386/amxfp16-asmatt-1.c
! eefaf66ff1c174b18d152560427620f0  gcc/testsuite/gcc.target/i386/amxfp16-asmintel-1.c
  26723806e86b2502f2d6b3c39febf8ce  gcc/testsuite/gcc.target/i386/amxfp16-dpfp16ps-2.c
  a9b74e9420dcdda704c0548b74c852cb  gcc/testsuite/gcc.target/i386/amxfp8-asmatt-1.c
! 0f7fd0338410d717ce022911f281c28b  gcc/testsuite/gcc.target/i386/amxfp8-asmintel-1.c
  f7f7179cee82b3e49fe8e952f16bd8bd  gcc/testsuite/gcc.target/i386/amxfp8-dpbf8ps-2.c
  158d08ba1bcd4db7917ac8e49a23d45b  gcc/testsuite/gcc.target/i386/amxfp8-dpbhf8ps-2.c
  79dd0e41d2df0fac63d405115f1a8f0b  gcc/testsuite/gcc.target/i386/amxfp8-dphbf8ps-2.c
  37ac1e9cd6f542adda9144f5f91575f7  gcc/testsuite/gcc.target/i386/amxfp8-dphf8ps-2.c
  b08450b417269b0fe19cdf6b9521036d  gcc/testsuite/gcc.target/i386/amxint8-asmatt-1.c
! 387b46d5778a99faba771df055b4280b  gcc/testsuite/gcc.target/i386/amxint8-asmintel-1.c
  06751f31b3086f1ff040533de854e994  gcc/testsuite/gcc.target/i386/amxint8-dpbssd-2.c
  e3f6b37649c7f1fa4d20b6327cdcdb27  gcc/testsuite/gcc.target/i386/amxint8-dpbsud-2.c
  a8ab966558faa138830cc3e75dbe4464  gcc/testsuite/gcc.target/i386/amxint8-dpbusd-2.c
  fc50af06e61cf9d13887f2fe515b0e27  gcc/testsuite/gcc.target/i386/amxint8-dpbuud-2.c
  6872cb4a8da17cfb612b8f89321beab6  gcc/testsuite/gcc.target/i386/amxmovrs-2rpntlvwrs-2.c
  1a53e29154e07b83ff9b167e4d136082  gcc/testsuite/gcc.target/i386/amxmovrs-asmatt-1.c
! 9c12ed8e1c893d496f5b35bc5eca35a1  gcc/testsuite/gcc.target/i386/amxmovrs-asmintel-1.c
  e733b32150a44e7be6c236ca11324770  gcc/testsuite/gcc.target/i386/amxmovrs-tileloaddrs-2.c
  83f382a948fa479169644b56fee9247b  gcc/testsuite/gcc.target/i386/amxtf32-asmatt-1.c
! 3f9a5f02b15d43a842b189003650c7bd  gcc/testsuite/gcc.target/i386/amxtf32-asmintel-1.c
  baf13b756391e3f11b0f7d619bd353a5  gcc/testsuite/gcc.target/i386/amxtf32-mmultf32ps-2.c
  4e7e8638f4652613beb251daa4730463  gcc/testsuite/gcc.target/i386/amxtile-2.c
  a455baf8f9990eb7494164842dce7c91  gcc/testsuite/gcc.target/i386/amxtile-3.c
  84fc02cc52ddc8bdd53d77902c0176fb  gcc/testsuite/gcc.target/i386/amxtile-4.c
  8e7fab1b3f5c89155f09aabb59da8382  gcc/testsuite/gcc.target/i386/amxtile-asmatt-1.c
! 2629a435840ab211444b4a2af4563d8d  gcc/testsuite/gcc.target/i386/amxtile-asmintel-1.c
  9e51e949fe004c4c5e1da4e313e83500  gcc/testsuite/gcc.target/i386/amxtranspose-2rpntlvw-2.c
  e78283d712c4a4cab944825c2f7e5931  gcc/testsuite/gcc.target/i386/amxtranspose-asmatt-1.c
  5aea7d3b63ac03844fed4c2affb200e1  gcc/testsuite/gcc.target/i386/amxtranspose-asmintel-1.c
--- 74439,74477 ----
  de43766ff547a704d67f8c662bc93c66  gcc/testsuite/gcc.target/i386/amxavx512-cvtrowps2ph-2.c
  cc0603febc979dbf700b27494eacbc42  gcc/testsuite/gcc.target/i386/amxavx512-movrow-2.c
  3e5ed8f51d1403b179db592f12cb019c  gcc/testsuite/gcc.target/i386/amxbf16-asmatt-1.c
! 56eacc542ab2a1453a34424301380e68  gcc/testsuite/gcc.target/i386/amxbf16-asmintel-1.c
  c4406ef230e7a6bb0e7b45b2f94958e9  gcc/testsuite/gcc.target/i386/amxbf16-dpbf16ps-2.c
  0787eb1011631a123144aa2e9fe5b9f2  gcc/testsuite/gcc.target/i386/amxcomplex-asmatt-1.c
! 4a8b5d514b0a549de6d01da6a871cace  gcc/testsuite/gcc.target/i386/amxcomplex-asmintel-1.c
  88abb806331f7455dfc053e7bfa9993d  gcc/testsuite/gcc.target/i386/amxcomplex-cmmimfp16ps-2.c
  5029635b15d7dd713761d53e4630a666  gcc/testsuite/gcc.target/i386/amxcomplex-cmmrlfp16ps-2.c
  0a13ebe83385a9aedb0a82cf5504a96b  gcc/testsuite/gcc.target/i386/amxfp16-asmatt-1.c
! 6367ac8d32cb21d49cfff80aef3427bd  gcc/testsuite/gcc.target/i386/amxfp16-asmintel-1.c
  26723806e86b2502f2d6b3c39febf8ce  gcc/testsuite/gcc.target/i386/amxfp16-dpfp16ps-2.c
  a9b74e9420dcdda704c0548b74c852cb  gcc/testsuite/gcc.target/i386/amxfp8-asmatt-1.c
! ac831a6e0f9a32623f8760f8cb0414ca  gcc/testsuite/gcc.target/i386/amxfp8-asmintel-1.c
  f7f7179cee82b3e49fe8e952f16bd8bd  gcc/testsuite/gcc.target/i386/amxfp8-dpbf8ps-2.c
  158d08ba1bcd4db7917ac8e49a23d45b  gcc/testsuite/gcc.target/i386/amxfp8-dpbhf8ps-2.c
  79dd0e41d2df0fac63d405115f1a8f0b  gcc/testsuite/gcc.target/i386/amxfp8-dphbf8ps-2.c
  37ac1e9cd6f542adda9144f5f91575f7  gcc/testsuite/gcc.target/i386/amxfp8-dphf8ps-2.c
  b08450b417269b0fe19cdf6b9521036d  gcc/testsuite/gcc.target/i386/amxint8-asmatt-1.c
! 2a1a600bd028c3c6663894e5e2dbe1ac  gcc/testsuite/gcc.target/i386/amxint8-asmintel-1.c
  06751f31b3086f1ff040533de854e994  gcc/testsuite/gcc.target/i386/amxint8-dpbssd-2.c
  e3f6b37649c7f1fa4d20b6327cdcdb27  gcc/testsuite/gcc.target/i386/amxint8-dpbsud-2.c
  a8ab966558faa138830cc3e75dbe4464  gcc/testsuite/gcc.target/i386/amxint8-dpbusd-2.c
  fc50af06e61cf9d13887f2fe515b0e27  gcc/testsuite/gcc.target/i386/amxint8-dpbuud-2.c
  6872cb4a8da17cfb612b8f89321beab6  gcc/testsuite/gcc.target/i386/amxmovrs-2rpntlvwrs-2.c
  1a53e29154e07b83ff9b167e4d136082  gcc/testsuite/gcc.target/i386/amxmovrs-asmatt-1.c
! 99e9447a1a04da33f504b1a6a4eaebf7  gcc/testsuite/gcc.target/i386/amxmovrs-asmintel-1.c
  e733b32150a44e7be6c236ca11324770  gcc/testsuite/gcc.target/i386/amxmovrs-tileloaddrs-2.c
  83f382a948fa479169644b56fee9247b  gcc/testsuite/gcc.target/i386/amxtf32-asmatt-1.c
! a44cf006e7d7dc3c6c4f6644cfe192cb  gcc/testsuite/gcc.target/i386/amxtf32-asmintel-1.c
  baf13b756391e3f11b0f7d619bd353a5  gcc/testsuite/gcc.target/i386/amxtf32-mmultf32ps-2.c
  4e7e8638f4652613beb251daa4730463  gcc/testsuite/gcc.target/i386/amxtile-2.c
  a455baf8f9990eb7494164842dce7c91  gcc/testsuite/gcc.target/i386/amxtile-3.c
  84fc02cc52ddc8bdd53d77902c0176fb  gcc/testsuite/gcc.target/i386/amxtile-4.c
  8e7fab1b3f5c89155f09aabb59da8382  gcc/testsuite/gcc.target/i386/amxtile-asmatt-1.c
! fd1b7cbd5c658f65380f068fc3718869  gcc/testsuite/gcc.target/i386/amxtile-asmintel-1.c
  9e51e949fe004c4c5e1da4e313e83500  gcc/testsuite/gcc.target/i386/amxtranspose-2rpntlvw-2.c
  e78283d712c4a4cab944825c2f7e5931  gcc/testsuite/gcc.target/i386/amxtranspose-asmatt-1.c
  5aea7d3b63ac03844fed4c2affb200e1  gcc/testsuite/gcc.target/i386/amxtranspose-asmintel-1.c
*************** c052d916aa90fa5343dac48ba370180f  gcc/te
*** 74065,74070 ****
--- 74489,74495 ----
  745e29c9e0b19c2b93d7ae9d0de30df9  gcc/testsuite/gcc.target/i386/apx-1.c
  64d9611d397e2c1046819d723f4b3641  gcc/testsuite/gcc.target/i386/apx-2.c
  c608f84b293f51940f3c9578d19c6aa6  gcc/testsuite/gcc.target/i386/apx-3.c
+ 08bbfd375d8c3815f761d62ed480569e  gcc/testsuite/gcc.target/i386/apx-broadcast.c
  7c46a716064ab2dc11e37236bf6686d1  gcc/testsuite/gcc.target/i386/apx-ccmp-1.c
  1286e3c101e82be9e0b5080f0cc61848  gcc/testsuite/gcc.target/i386/apx-ccmp-2.c
  79aef985ad83db2a31872946d14eefcc  gcc/testsuite/gcc.target/i386/apx-egprs-names.c
*************** a10a2300e50d1345807af584a2601db4  gcc/te
*** 74102,74107 ****
--- 74527,74533 ----
  fcf6ebcd2d266f7ad2c63665e05f9315  gcc/testsuite/gcc.target/i386/apx-ppx-1.c
  83cfbdd6adce9415b1a93deae7f63899  gcc/testsuite/gcc.target/i386/apx-ppx-2.c
  776a59a1e552c7cfc19cf5d797851ca4  gcc/testsuite/gcc.target/i386/apx-ppx-3.c
+ d8e5e32378321997699dcc76d26eae5e  gcc/testsuite/gcc.target/i386/apx-pr124892.c
  b76efc502226ffd2eed7d56bb5ac974a  gcc/testsuite/gcc.target/i386/apx-push2pop2-1.c
  ba815e440bcd2af0a357a066d6a64dbf  gcc/testsuite/gcc.target/i386/apx-push2pop2-2.c
  09b6d63033c67dd3b806c7c28d691ec9  gcc/testsuite/gcc.target/i386/apx-push2pop2_force_drap-1.c
*************** e1de65e21c6c26d2fdf84a8e600776a2  gcc/te
*** 74897,74902 ****
--- 75323,75332 ----
  4af5f36c571f416f48647ffb75a45045  gcc/testsuite/gcc.target/i386/avx10_2-partial-bf16-vector-fma-1.c
  060256f3db21d28f61a90f026c37c557  gcc/testsuite/gcc.target/i386/avx10_2-partial-bf16-vector-operations-1.c
  fa1d703c5c27e1abbf55a158e4d6ee34  gcc/testsuite/gcc.target/i386/avx10_2-partial-bf16-vector-smaxmin-1.c
+ b4a1927c931b8d7d2db97fa832391d68  gcc/testsuite/gcc.target/i386/avx10_2-pr124294.c
+ 7f70c3fddea0473820a89abc96523295  gcc/testsuite/gcc.target/i386/avx10_2-pr124341.c
+ 2069fc0ccb52a5d108ccb3dc947847f0  gcc/testsuite/gcc.target/i386/avx10_2-pr124349-2.c
+ 08b72689ae08221da32807545d916afe  gcc/testsuite/gcc.target/i386/avx10_2-pr124349.c
  d3b2e3b222506f251ae193405f6e6f11  gcc/testsuite/gcc.target/i386/avx10_2-satcvt-1.c
  250f1760735592622b647d89908ad24b  gcc/testsuite/gcc.target/i386/avx10_2-vaddbf16-2.c
  4bd1c7ec61e15679b46b7762ad78309b  gcc/testsuite/gcc.target/i386/avx10_2-vcmpbf16-2.c
*************** fa2c17673f6ee0e3a3910298a93d723d  gcc/te
*** 76185,76190 ****
--- 76615,76623 ----
  9a6936f1815277f15801196159007f44  gcc/testsuite/gcc.target/i386/avx512f-pr114566.c
  9d6b0fb1e1a52903717dc76f97738172  gcc/testsuite/gcc.target/i386/avx512f-pr116738-1.c
  678b1780c696a211b19a271bd7501f61  gcc/testsuite/gcc.target/i386/avx512f-pr116738-2.c
+ f20f5c3dc20ef0309b2a3dc9fdde483e  gcc/testsuite/gcc.target/i386/avx512f-pr124138-1.c
+ efe0a21951178063e3b3f10cf90f0adb  gcc/testsuite/gcc.target/i386/avx512f-pr124138-2.c
+ 1f47d4671c0dd3d13b733838385048ed  gcc/testsuite/gcc.target/i386/avx512f-pr124315.c
  88877c518076ecdec1dba128743ad627  gcc/testsuite/gcc.target/i386/avx512f-pr57233.c
  0272e0fc54cb34ee03db4b0027dbec3d  gcc/testsuite/gcc.target/i386/avx512f-pr63594-1.c
  381f53de01f1e9893e6903d9fac40b87  gcc/testsuite/gcc.target/i386/avx512f-pr63594-2.c
*************** cd26c5b9b2d79ae190b4c24e39a2ac2e  gcc/te
*** 77064,77069 ****
--- 77497,77503 ----
  a0059c72ee5f8a3b553da9a85e2e8686  gcc/testsuite/gcc.target/i386/avx512fp16-pr101846.c
  2e18bcbca55b5eaa82a1fe477d2bf780  gcc/testsuite/gcc.target/i386/avx512fp16-pr103750-1.c
  a89ea8a687198b0e470fb31d938c2a3f  gcc/testsuite/gcc.target/i386/avx512fp16-pr103750-2.c
+ c0aba89383e573771d0b9ccacbca61eb  gcc/testsuite/gcc.target/i386/avx512fp16-pr124335.c
  b5d5082a6d865b8b24dbefc908fafb2d  gcc/testsuite/gcc.target/i386/avx512fp16-pr94680.c
  0be682c7ab6c675fa46f84d592d76785  gcc/testsuite/gcc.target/i386/avx512fp16-recip-1.c
  38a807ac8fade227ea34604df002fb5f  gcc/testsuite/gcc.target/i386/avx512fp16-recip-2.c
*************** c1fc8c403bea321e9edbec8f46fe2fd8  gcc/te
*** 77486,77491 ****
--- 77920,77926 ----
  1156c3947fee64640053c33ec3a1d627  gcc/testsuite/gcc.target/i386/avx512vl-pr112435-1.c
  de717f1cf1bd87731a52727c854e17f3  gcc/testsuite/gcc.target/i386/avx512vl-pr112435-2.c
  ff7d4b178317336c918bd3d476aa77a8  gcc/testsuite/gcc.target/i386/avx512vl-pr112435-3.c
+ f66d7d39f6629aaa01b835c3db736017  gcc/testsuite/gcc.target/i386/avx512vl-pr124367.c
  1ce70da2226efd6f3d5d92c101fb79d9  gcc/testsuite/gcc.target/i386/avx512vl-pr79299-1.c
  e3cc31b3308cdb56423451f2cd8c2a00  gcc/testsuite/gcc.target/i386/avx512vl-pr79299-2.c
  7cff0350d919ed5edc42e841b11e38f2  gcc/testsuite/gcc.target/i386/avx512vl-pr82370.c
*************** a9b1dee6ec200856939709d32118cf4d  gcc/te
*** 78383,78389 ****
--- 78818,78834 ----
  98071546dc47914bb36a912c7912aca2  gcc/testsuite/gcc.target/i386/builtin-bswap-3.c
  3605b461ca62ccb4a3f70ccc13695ed5  gcc/testsuite/gcc.target/i386/builtin-bswap-4.c
  aa862ceda0d7a76c1857d703604c7cf7  gcc/testsuite/gcc.target/i386/builtin-bswap-5.c
+ 654b3662e0d1c66895af4e0b4c302291  gcc/testsuite/gcc.target/i386/builtin-copysign-2.c
+ c77edd4d8dc9ee85bf93b6e2c114d962  gcc/testsuite/gcc.target/i386/builtin-copysign-3.c
+ fa6ebeb8a38629b307b197117b388ef7  gcc/testsuite/gcc.target/i386/builtin-copysign-4.c
+ 183539c22965737f5ebca3d3e47d261b  gcc/testsuite/gcc.target/i386/builtin-copysign-5.c
+ 28a4a0d6bd0e09a7f1da7f5515db9c70  gcc/testsuite/gcc.target/i386/builtin-copysign-6.c
+ eeb2c795579e4b693eed6b471e041925  gcc/testsuite/gcc.target/i386/builtin-copysign-7.c
+ 4dde22c7279c7c8e684af5f718431d7d  gcc/testsuite/gcc.target/i386/builtin-copysign-8a.c
+ 19fe0cd1992bc2d71db601dda2c2bd34  gcc/testsuite/gcc.target/i386/builtin-copysign-8b.c
  04d6147486a507d49f5d165aac499b5d  gcc/testsuite/gcc.target/i386/builtin-copysign.c
+ 7c1badccd4856954ccba2139093860d2  gcc/testsuite/gcc.target/i386/builtin-fabs-1.c
+ eb024e3b157728adf6d4f14b1bd4c69d  gcc/testsuite/gcc.target/i386/builtin-fabs-2.c
  83540904d3592a74a85860a8850ad325  gcc/testsuite/gcc.target/i386/builtin-has-attribute.c
  c9f542098c7044c5b8ac4b18be20d199  gcc/testsuite/gcc.target/i386/builtin-issignaling-1.c
  07c7b1b786ccb4b67484b353aa40d9c7  gcc/testsuite/gcc.target/i386/builtin-ucmp.c
*************** dfd6d048c4cc790cbf85d5080d1b5a6e  gcc/te
*** 78423,78428 ****
--- 78868,78874 ----
  e420c76b5d51167be532aea06e242b7d  gcc/testsuite/gcc.target/i386/cet-notrack-icf-2.c
  ecf5960debbf0be72bff47ede8c8800e  gcc/testsuite/gcc.target/i386/cet-notrack-icf-3.c
  8f1538b43a15c0827f66b6f4352ef5fb  gcc/testsuite/gcc.target/i386/cet-notrack-icf-4.c
+ c62171467fd6ad70fac732b022943ed4  gcc/testsuite/gcc.target/i386/cet-pr124366.c
  b8e1eda2f252f129a90e54617fa39500  gcc/testsuite/gcc.target/i386/cet-property-1.c
  f03688bba56369ec92f324db56599b3d  gcc/testsuite/gcc.target/i386/cet-property-2.c
  a4dff4664eff59fc1d1d6ac49e52a6b6  gcc/testsuite/gcc.target/i386/cet-rdssp-1.c
*************** f1728b5e83b3ce3c8eaebf907d52fe30  gcc/te
*** 78942,78947 ****
--- 79388,79394 ----
  c6f6aaff47d064fbceed4cfbcb5b9279  gcc/testsuite/gcc.target/i386/keylocker-encodekey128.c
  a468c392fd8838d0198cfb8b367d4b6d  gcc/testsuite/gcc.target/i386/keylocker-encodekey256.c
  78393ec91600382e98db57e560deaea9  gcc/testsuite/gcc.target/i386/keylocker-loadiwkey.c
+ 75eec9ddfedd16dad1c34342d4bb3a1a  gcc/testsuite/gcc.target/i386/keylocker-pr123217.c
  6a61f297f5746de86187140f048ab655  gcc/testsuite/gcc.target/i386/l_fma_1.h
  c598c1d2a127be1189b3dfe020919429  gcc/testsuite/gcc.target/i386/l_fma_2.h
  8aa60b44b83369f838965e6e8e99c4e7  gcc/testsuite/gcc.target/i386/l_fma_3.h
*************** ceabed34440a4d5e7379a87fe03c334e  gcc/te
*** 79119,79124 ****
--- 79566,79572 ----
  d4c716e20ab6e64d6bb29cc63dd65677  gcc/testsuite/gcc.target/i386/movq-2.c
  d7e128da4dee8caf6cd8d400af12d230  gcc/testsuite/gcc.target/i386/movq.c
  cb58a62e42c29816d18ea3d55ab4997d  gcc/testsuite/gcc.target/i386/movrs-1.c
+ e1f5575d42c42c2ad22430f9a18c058e  gcc/testsuite/gcc.target/i386/movrs-pr124461.c
  347dca8d249a46ac2f5892d9ffdc0337  gcc/testsuite/gcc.target/i386/movsd.c
  bb0703a0cfe126aeba12e7589d46db56  gcc/testsuite/gcc.target/i386/movsi-sm-1.c
  a563480a1082f387ca849ebdfa1078d1  gcc/testsuite/gcc.target/i386/movti-2.c
*************** cbaafd43310e10a7ba4ce687bafe06da  gcc/te
*** 79254,79264 ****
  89d909d7d758041e829631ac800bf196  gcc/testsuite/gcc.target/i386/pieces-memcpy-15.c
  437a6c001b5f504cb8a978424f9f229c  gcc/testsuite/gcc.target/i386/pieces-memcpy-16.c
  a0fc0b89838032f850b17823a354b986  gcc/testsuite/gcc.target/i386/pieces-memcpy-17.c
! ce99ca62859e3b5ee0e5695b59309237  gcc/testsuite/gcc.target/i386/pieces-memcpy-18.c
  b5f6fb3aaac27e15ae52d9111e60d98d  gcc/testsuite/gcc.target/i386/pieces-memcpy-19.c
  279c04d20615905ca5bf2f44eb5a231d  gcc/testsuite/gcc.target/i386/pieces-memcpy-2.c
  7e2d486487e1f536c226d8bc290fd8ad  gcc/testsuite/gcc.target/i386/pieces-memcpy-20.c
! 2f4b551b9d6addea576cff08a8831f3f  gcc/testsuite/gcc.target/i386/pieces-memcpy-21.c
  483ed3c0a5b3efe685343cb5dc87d54d  gcc/testsuite/gcc.target/i386/pieces-memcpy-22.c
  2820c9b91ec98c38843764eea07d4b75  gcc/testsuite/gcc.target/i386/pieces-memcpy-3.c
  698986063dd5ba005476ca849de14359  gcc/testsuite/gcc.target/i386/pieces-memcpy-4.c
--- 79702,79712 ----
  89d909d7d758041e829631ac800bf196  gcc/testsuite/gcc.target/i386/pieces-memcpy-15.c
  437a6c001b5f504cb8a978424f9f229c  gcc/testsuite/gcc.target/i386/pieces-memcpy-16.c
  a0fc0b89838032f850b17823a354b986  gcc/testsuite/gcc.target/i386/pieces-memcpy-17.c
! 7a34703054f1d16fc3e3de2cc1b87012  gcc/testsuite/gcc.target/i386/pieces-memcpy-18.c
  b5f6fb3aaac27e15ae52d9111e60d98d  gcc/testsuite/gcc.target/i386/pieces-memcpy-19.c
  279c04d20615905ca5bf2f44eb5a231d  gcc/testsuite/gcc.target/i386/pieces-memcpy-2.c
  7e2d486487e1f536c226d8bc290fd8ad  gcc/testsuite/gcc.target/i386/pieces-memcpy-20.c
! 9d90237b50551a44a67d354724502ebb  gcc/testsuite/gcc.target/i386/pieces-memcpy-21.c
  483ed3c0a5b3efe685343cb5dc87d54d  gcc/testsuite/gcc.target/i386/pieces-memcpy-22.c
  2820c9b91ec98c38843764eea07d4b75  gcc/testsuite/gcc.target/i386/pieces-memcpy-3.c
  698986063dd5ba005476ca849de14359  gcc/testsuite/gcc.target/i386/pieces-memcpy-4.c
*************** ab6fa2bfe98c867fab182d157d457706  gcc/te
*** 79307,79316 ****
  d98f40e3e5aa8e8b9f5499569f688965  gcc/testsuite/gcc.target/i386/pieces-memset-43.c
  2b47b7f82aeabc7a238642520819b3f0  gcc/testsuite/gcc.target/i386/pieces-memset-44.c
  86947bff2a1eb3faba119670600994db  gcc/testsuite/gcc.target/i386/pieces-memset-45.c
! f29f6d2af05e1f08f148f0eed162d860  gcc/testsuite/gcc.target/i386/pieces-memset-46.c
  8f0614f1d8cbc09d9e6e515b9c85586c  gcc/testsuite/gcc.target/i386/pieces-memset-47.c
  fab4224ceed336ed6902793909c0c6c2  gcc/testsuite/gcc.target/i386/pieces-memset-48.c
! b6a5763cac2b72e43f0900c7fbca0740  gcc/testsuite/gcc.target/i386/pieces-memset-49.c
  e59e962761850423b307c01f720c8e84  gcc/testsuite/gcc.target/i386/pieces-memset-5.c
  f6afe5571570af54d1d2e02c0e28d3f6  gcc/testsuite/gcc.target/i386/pieces-memset-50.c
  587ca57e48d1c64f4cb91b6203512c99  gcc/testsuite/gcc.target/i386/pieces-memset-51.c
--- 79755,79764 ----
  d98f40e3e5aa8e8b9f5499569f688965  gcc/testsuite/gcc.target/i386/pieces-memset-43.c
  2b47b7f82aeabc7a238642520819b3f0  gcc/testsuite/gcc.target/i386/pieces-memset-44.c
  86947bff2a1eb3faba119670600994db  gcc/testsuite/gcc.target/i386/pieces-memset-45.c
! 3647374ee718421444609e296cfa0ad2  gcc/testsuite/gcc.target/i386/pieces-memset-46.c
  8f0614f1d8cbc09d9e6e515b9c85586c  gcc/testsuite/gcc.target/i386/pieces-memset-47.c
  fab4224ceed336ed6902793909c0c6c2  gcc/testsuite/gcc.target/i386/pieces-memset-48.c
! 9f2ed79a200ad2a71bf00d1e582aae79  gcc/testsuite/gcc.target/i386/pieces-memset-49.c
  e59e962761850423b307c01f720c8e84  gcc/testsuite/gcc.target/i386/pieces-memset-5.c
  f6afe5571570af54d1d2e02c0e28d3f6  gcc/testsuite/gcc.target/i386/pieces-memset-50.c
  587ca57e48d1c64f4cb91b6203512c99  gcc/testsuite/gcc.target/i386/pieces-memset-51.c
*************** f5a1252b1fe24ea2b97ff3762c399ed9  gcc/te
*** 80095,80102 ****
--- 80543,80569 ----
  16984aa55364473d08d90334f60bf59e  gcc/testsuite/gcc.target/i386/pr120427-5.c
  e33b63cd8f6d60b286b2286424f25714  gcc/testsuite/gcc.target/i386/pr120908.c
  b03b1d817538a863277c823b5e4cdf75  gcc/testsuite/gcc.target/i386/pr12092-1.c
+ 06cf62e068f23c847b4e4ce15a37d992  gcc/testsuite/gcc.target/i386/pr121208-1a.c
+ d7bb5368ed41a3ee6fb312a80c99d313  gcc/testsuite/gcc.target/i386/pr121208-1b.c
+ 4bc0f0b5cb9d3cd77907d3b642e0f8db  gcc/testsuite/gcc.target/i386/pr121208-2a.c
+ 26d68c5cba57817989670af4634fe936  gcc/testsuite/gcc.target/i386/pr121208-2b.c
+ d4ebe08b4cb963582547d8bb5712e712  gcc/testsuite/gcc.target/i386/pr121208-3a.c
+ 5064c3ab2b92e2f20dcd604d557d738c  gcc/testsuite/gcc.target/i386/pr121208-3b.c
  12e796120a8d76792772ddd159f57f3f  gcc/testsuite/gcc.target/i386/pr121274.c
+ acecf2f1dc8cd91c8c8b1bdd86ee2f01  gcc/testsuite/gcc.target/i386/pr121571.c
+ 671eb6b6dd41d0afefc1347129213f3d  gcc/testsuite/gcc.target/i386/pr121726.c
+ 600ff3c5da35f468b87a23e0d1678a3e  gcc/testsuite/gcc.target/i386/pr122104.c
+ bc47c79dae6f9fafe54d99c3d5a9a226  gcc/testsuite/gcc.target/i386/pr122266.c
+ dc0ac30205a49a37f80c833e996ed4d2  gcc/testsuite/gcc.target/i386/pr123121.c
  f99f88a6e994ad6e55e065e41bc58f8f  gcc/testsuite/gcc.target/i386/pr12329.c
+ fd0c95fcad577a49c3553f21604c3b61  gcc/testsuite/gcc.target/i386/pr123484.c
+ 5263cb01b17b6df3496a998c2a8e70d8  gcc/testsuite/gcc.target/i386/pr123489.c
+ 0c572aee98b871b5098fcc5a78b5d069  gcc/testsuite/gcc.target/i386/pr123523.c
+ fbfd31ba28ddc5c31ac2fd9d714443bb  gcc/testsuite/gcc.target/i386/pr124056.c
+ d9ed650f309dc0e24daeb25d90c34fa0  gcc/testsuite/gcc.target/i386/pr124316.c
+ 2ff14347296d11b5e3b328e3957e5191  gcc/testsuite/gcc.target/i386/pr124710-1.c
+ 79c874a97f648ff278ec1765414620b1  gcc/testsuite/gcc.target/i386/pr124710-2.c
+ dc1ca8471081be67fdad4d340997d425  gcc/testsuite/gcc.target/i386/pr125351.c
  8951a1fa31f2d45ef9eacfff6a733f77  gcc/testsuite/gcc.target/i386/pr13366.c
  9a752a4b3b77930d91d3c8b0c8897b90  gcc/testsuite/gcc.target/i386/pr13685.c
  31ead0ee84b382ba03e3561931bc6e40  gcc/testsuite/gcc.target/i386/pr14289-1.c
*************** e848ec23a6a21441ce72a346a0736a69  gcc/te
*** 81596,81602 ****
  79825d8e4562ba47624b18d80f41d52b  gcc/testsuite/gcc.target/i386/pr90510.c
  71daed2fce58de22bfa193c1d29d8205  gcc/testsuite/gcc.target/i386/pr90547.c
  cd32b51927f32216f74b09c3940931d8  gcc/testsuite/gcc.target/i386/pr90552.c
! 131fcfea3c839d23cb34af1cb8402815  gcc/testsuite/gcc.target/i386/pr90579.c
  3333c9fab61d2b0a85919c2f2bcabcf7  gcc/testsuite/gcc.target/i386/pr90693-2.c
  ab0b47df71ffc980ef55fd8e562bb640  gcc/testsuite/gcc.target/i386/pr90693.c
  bedac99974c4a13a1a78b62b24233122  gcc/testsuite/gcc.target/i386/pr90765-1.c
--- 82063,82069 ----
  79825d8e4562ba47624b18d80f41d52b  gcc/testsuite/gcc.target/i386/pr90510.c
  71daed2fce58de22bfa193c1d29d8205  gcc/testsuite/gcc.target/i386/pr90547.c
  cd32b51927f32216f74b09c3940931d8  gcc/testsuite/gcc.target/i386/pr90552.c
! b921eb0302ecb9ec6a18b6d4da46ad52  gcc/testsuite/gcc.target/i386/pr90579.c
  3333c9fab61d2b0a85919c2f2bcabcf7  gcc/testsuite/gcc.target/i386/pr90693-2.c
  ab0b47df71ffc980ef55fd8e562bb640  gcc/testsuite/gcc.target/i386/pr90693.c
  bedac99974c4a13a1a78b62b24233122  gcc/testsuite/gcc.target/i386/pr90765-1.c
*************** b3482aa074e044edfb2a4c72e5c1d085  gcc/te
*** 82888,82893 ****
--- 83355,83361 ----
  133d7eb15ead287c2ef11a8162780801  gcc/testsuite/gcc.target/i386/unroll-1.c
  c30812b4c7eb367ec8e5f4aba349d66b  gcc/testsuite/gcc.target/i386/user_msr-1.c
  d817f6a5d58eae58bff8e4083f7945db  gcc/testsuite/gcc.target/i386/user_msr-2.c
+ aa50202a413f80a35396415eec316d08  gcc/testsuite/gcc.target/i386/user_msr-pr123217.c
  aafb0010ebceff249236af3aa1f22e2b  gcc/testsuite/gcc.target/i386/vararg-1.c
  3b8acabb2f18b3fd13f3871729bac23f  gcc/testsuite/gcc.target/i386/vararg-10.c
  2869209769b52916ee551938b0c572f1  gcc/testsuite/gcc.target/i386/vararg-2.c
*************** d313cc77f313c4dd63cd510957fdd87c  gcc/te
*** 83151,83157 ****
  04745ab7394d1702daa975607c216973  gcc/testsuite/gcc.target/i386/zero-scratch-regs-20.c
  c8dd24e1b18af774be1f6fa045252612  gcc/testsuite/gcc.target/i386/zero-scratch-regs-21.c
  2e396378f3ddbd9c2d4a3a214f00eeda  gcc/testsuite/gcc.target/i386/zero-scratch-regs-22.c
! 844ff919190ce8569bfc0a5820c77ff5  gcc/testsuite/gcc.target/i386/zero-scratch-regs-23.c
  edede09b1afb458f310c448a3a2ffa14  gcc/testsuite/gcc.target/i386/zero-scratch-regs-24.c
  a7c92b064cd3dfa35552d030d9c88443  gcc/testsuite/gcc.target/i386/zero-scratch-regs-25.c
  ec39e4f7e99d99e583f0ad35694883c0  gcc/testsuite/gcc.target/i386/zero-scratch-regs-26.c
--- 83619,83625 ----
  04745ab7394d1702daa975607c216973  gcc/testsuite/gcc.target/i386/zero-scratch-regs-20.c
  c8dd24e1b18af774be1f6fa045252612  gcc/testsuite/gcc.target/i386/zero-scratch-regs-21.c
  2e396378f3ddbd9c2d4a3a214f00eeda  gcc/testsuite/gcc.target/i386/zero-scratch-regs-22.c
! 96e58fb14a56bdee8017b21ceb0c5f18  gcc/testsuite/gcc.target/i386/zero-scratch-regs-23.c
  edede09b1afb458f310c448a3a2ffa14  gcc/testsuite/gcc.target/i386/zero-scratch-regs-24.c
  a7c92b064cd3dfa35552d030d9c88443  gcc/testsuite/gcc.target/i386/zero-scratch-regs-25.c
  ec39e4f7e99d99e583f0ad35694883c0  gcc/testsuite/gcc.target/i386/zero-scratch-regs-26.c
*************** a0db901c2d58c6ec7373c71e5e9f5f96  gcc/te
*** 83162,83167 ****
--- 83630,83636 ----
  bc37db967928436168b8c1061133369a  gcc/testsuite/gcc.target/i386/zero-scratch-regs-30.c
  436c4c4db448d2a78bd0a4ff74e64d3a  gcc/testsuite/gcc.target/i386/zero-scratch-regs-31.c
  66378b9cfd36021151804e3b9acaa10c  gcc/testsuite/gcc.target/i386/zero-scratch-regs-32.c
+ a802b4b3fcbb11b953e3a919e483099b  gcc/testsuite/gcc.target/i386/zero-scratch-regs-33.c
  eadfc0a02336a6e52dffc2fcf8dfcf59  gcc/testsuite/gcc.target/i386/zero-scratch-regs-4.c
  66756a81f305b4e4d2c8a4d048f9a6ab  gcc/testsuite/gcc.target/i386/zero-scratch-regs-5.c
  1c155a5b2fa12b705e2c04f01342749d  gcc/testsuite/gcc.target/i386/zero-scratch-regs-6.c
*************** c16fea0d740f8946249d8d3ff6230152  gcc/te
*** 83242,83247 ****
--- 83711,83717 ----
  a7210513dd89b8e683a00184ee4478a4  gcc/testsuite/gcc.target/loongarch/attr-model-3.c
  9d4f972a3175f736a746ae031fb25e7a  gcc/testsuite/gcc.target/loongarch/attr-model-4.c
  02f1973aec4f57a84c09f2b6bc6eaf79  gcc/testsuite/gcc.target/loongarch/attr-model-5.c
+ eaedeb33f4a944f6ddcb113a7cd3ed14  gcc/testsuite/gcc.target/loongarch/attr-model-6.c
  f9bd26f98b04e99789925370214a2a06  gcc/testsuite/gcc.target/loongarch/attr-model-diag.c
  b0da33fc443024e77c7b605056bff4ae  gcc/testsuite/gcc.target/loongarch/attr-model-test.c
  10a58b0c68aafdaa8704cc0ab8a37e3c  gcc/testsuite/gcc.target/loongarch/avg-ceil-lasx.c
*************** d6d72f67d9c86c49fe483871b08cc2c0  gcc/te
*** 83259,83272 ****
  ca8ab2fdd097231be9dd3f7bfdcebb7b  gcc/testsuite/gcc.target/loongarch/builtin_thread_pointer.c
  9c31e2b0b719536d37a3b720ea2be5ad  gcc/testsuite/gcc.target/loongarch/bytepick_combine.c
  828a53a834899f6cac56d99b1ec04d3b  gcc/testsuite/gcc.target/loongarch/bytepick_shift_128.c
  00fd27046cb10694212b8b3aa9811204  gcc/testsuite/gcc.target/loongarch/cas-acquire.c
  07df4f30580de6fbe39974aaae4cfa05  gcc/testsuite/gcc.target/loongarch/cmodel-extreme-1.c
  8b8540247ed71088dc38c31caa401102  gcc/testsuite/gcc.target/loongarch/cmodel-extreme-2.c
  d984aef61afc8f09af4c880507f6c6e6  gcc/testsuite/gcc.target/loongarch/cmodel-func-attr-1.c
  50ab91c6f8ea866c2cdb3d64e26052d2  gcc/testsuite/gcc.target/loongarch/cmodel-pragma-attr-1.c
  6c4891b18c6bd1154b7ea8237dc05a30  gcc/testsuite/gcc.target/loongarch/cmov_ii.c
! 8372ae2166ed011a23a10b6a6415bc98  gcc/testsuite/gcc.target/loongarch/conditional-move-opt-1.c
! e47b1f0d85db9f65f76cc6e828f1d7a3  gcc/testsuite/gcc.target/loongarch/conditional-move-opt-2.c
  d714312bcf2901d8e4e91206a319c6bb  gcc/testsuite/gcc.target/loongarch/const-double-zero-stx.c
  c794f526430241ad83fd3ca5415524f0  gcc/testsuite/gcc.target/loongarch/crc-sext.c
  2ea39544bfe26567ec668ca7a33a8a5e  gcc/testsuite/gcc.target/loongarch/direct-extern-1.c
--- 83729,83749 ----
  ca8ab2fdd097231be9dd3f7bfdcebb7b  gcc/testsuite/gcc.target/loongarch/builtin_thread_pointer.c
  9c31e2b0b719536d37a3b720ea2be5ad  gcc/testsuite/gcc.target/loongarch/bytepick_combine.c
  828a53a834899f6cac56d99b1ec04d3b  gcc/testsuite/gcc.target/loongarch/bytepick_shift_128.c
+ 40d027f26b529d9286fbb712ca2a7342  gcc/testsuite/gcc.target/loongarch/can_inline_1.c
+ 7c4687586877a635387320076067d17b  gcc/testsuite/gcc.target/loongarch/can_inline_2.c
+ a1db2bbf996d48ba701c8efc582dad3d  gcc/testsuite/gcc.target/loongarch/can_inline_3.c
+ a1783fd9344ba40d5aa08ba39ced7efb  gcc/testsuite/gcc.target/loongarch/can_inline_4.c
+ e7871060f6568ccbaf0d8c13ef970b0e  gcc/testsuite/gcc.target/loongarch/can_inline_5.c
+ bde7ba2405e4971efe4fb79faf6333ec  gcc/testsuite/gcc.target/loongarch/can_inline_6.c
  00fd27046cb10694212b8b3aa9811204  gcc/testsuite/gcc.target/loongarch/cas-acquire.c
  07df4f30580de6fbe39974aaae4cfa05  gcc/testsuite/gcc.target/loongarch/cmodel-extreme-1.c
  8b8540247ed71088dc38c31caa401102  gcc/testsuite/gcc.target/loongarch/cmodel-extreme-2.c
  d984aef61afc8f09af4c880507f6c6e6  gcc/testsuite/gcc.target/loongarch/cmodel-func-attr-1.c
  50ab91c6f8ea866c2cdb3d64e26052d2  gcc/testsuite/gcc.target/loongarch/cmodel-pragma-attr-1.c
  6c4891b18c6bd1154b7ea8237dc05a30  gcc/testsuite/gcc.target/loongarch/cmov_ii.c
! 1faf96722faacc0ff389b62bf83b34ea  gcc/testsuite/gcc.target/loongarch/conditional-move-opt-1.c
! 9f48ac8201f97bdbd1ec5edcd8f2984e  gcc/testsuite/gcc.target/loongarch/conditional-move-opt-2.c
! 5f9e7145f8a500557b5629f8d93ad860  gcc/testsuite/gcc.target/loongarch/conditional-move-opt-3.c
  d714312bcf2901d8e4e91206a319c6bb  gcc/testsuite/gcc.target/loongarch/const-double-zero-stx.c
  c794f526430241ad83fd3ca5415524f0  gcc/testsuite/gcc.target/loongarch/crc-sext.c
  2ea39544bfe26567ec668ca7a33a8a5e  gcc/testsuite/gcc.target/loongarch/direct-extern-1.c
*************** c9d08bb72896d9b4861ce4073ec5e57f  gcc/te
*** 83303,83308 ****
--- 83780,83786 ----
  f72ce6aeb8beb0eff27354c07ef71cd1  gcc/testsuite/gcc.target/loongarch/flt-abi-isa-3.c
  ab6db876a44193a92b0a1625c65eb4e7  gcc/testsuite/gcc.target/loongarch/flt-abi-isa-4.c
  aaaf53a882a8a0ae0583d851021e03cc  gcc/testsuite/gcc.target/loongarch/fmax-fmin.c
+ ba1f9cd7776de398eabc15fb6f7d523b  gcc/testsuite/gcc.target/loongarch/fnmam4-vec.c
  fee1bedd25e7db9b4e91f3ede9e05608  gcc/testsuite/gcc.target/loongarch/frint.c
  2f79a7482d38a9632f39b484c09a8f2f  gcc/testsuite/gcc.target/loongarch/fscaleb.c
  40d69683116e216d2295e4600c830736  gcc/testsuite/gcc.target/loongarch/ftint-no-inexact.c
*************** dbfbd76701c5c3e6c8ed37ced1ba9cc7  gcc/te
*** 83389,83394 ****
--- 83867,83880 ----
  bfebec3a4dbfa9680a4285589498905c  gcc/testsuite/gcc.target/loongarch/pr119127.c
  dde2cba27bc4292492e4c0dd492a70e0  gcc/testsuite/gcc.target/loongarch/pr119408.c
  359760e5160f4b52d2fa349806589a0d  gcc/testsuite/gcc.target/loongarch/pr121064.c
+ acf1fac916847c2064b8d2bbb6535828  gcc/testsuite/gcc.target/loongarch/pr121542.c
+ 754f11f1533603a4d550b593afc0c673  gcc/testsuite/gcc.target/loongarch/pr121634.c
+ d1eee63ffd26f53d2b788cb0eb55f5a6  gcc/testsuite/gcc.target/loongarch/pr121875.c
+ 1dd25b33f6fd8d4c4dc750865d86f404  gcc/testsuite/gcc.target/loongarch/pr121906.c
+ 51927631f78916e06162754b5c3d24fd  gcc/testsuite/gcc.target/loongarch/pr122097.c
+ 0626ac54385b7d00394be7a0b09850a1  gcc/testsuite/gcc.target/loongarch/pr122695-1.c
+ fb640df1e5eb969859e5c360f608dec4  gcc/testsuite/gcc.target/loongarch/pr122695-2.c
+ 8784ee3164375854ef7b1ffc0c536b5e  gcc/testsuite/gcc.target/loongarch/pr125049.c
  1eac553341d725c6e59615b593aedb0d  gcc/testsuite/gcc.target/loongarch/pragma-push-pop.c
  3adba2a8ae6f671eb22ec8228777c1ac  gcc/testsuite/gcc.target/loongarch/prolog-opt.c
  1bfa30f99dc5f04f569fbff68640ab19  gcc/testsuite/gcc.target/loongarch/recip-divf.c
*************** eb7720d1ee0f7dde86471e1b8ad3b82f  gcc/te
*** 83688,83693 ****
--- 84174,84181 ----
  41959494be952fe2706930c383d4bb72  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsubwod-2.c
  601d1dad0996e42f64abfcea74b57e97  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvxor.c
  2b866f80af5cafa566ed2bbd75936c79  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvxori.c
+ 970835a22a2eef8dad1be6ea6edc6402  gcc/testsuite/gcc.target/loongarch/vector/lasx/pr123521.c
+ 91b4f4f5d2c5b786b45fad8edab6e2a3  gcc/testsuite/gcc.target/loongarch/vector/lasx/pr123766.c
  d26741a5156634ff29c61fea114bc141  gcc/testsuite/gcc.target/loongarch/vector/loongarch-vector.exp
  5d55305c4d66b32dd004f424d4a0a0fb  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-abs.c
  e9f9a02f0c23d753d9f3a17d45f85db1  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-builtin.c
*************** d9ab49aa7d7730596242bed46b4c7bed  gcc/te
*** 83899,83904 ****
--- 84387,84394 ----
  87366d24b56b7a97edbfcb4983a57a52  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vxori.c
  5c8f61426f6c4882be1e61b33f277961  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-xorsign-run.c
  ee9aafb340a5c2597a6f656ccbd8a374  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-xorsign.c
+ 559fe74ad49c6f3f986d68a4822b9041  gcc/testsuite/gcc.target/loongarch/vector/lsx/pr123766.c
+ c09c273ba4acff5a9b6ac824b23ab663  gcc/testsuite/gcc.target/loongarch/vector/lsx/pr123807.c
  70005d5f6a26c8e3f8e5afe7cdc53bbf  gcc/testsuite/gcc.target/loongarch/vector/simd_correctness_check.h
  32fede0d9373ef10c92cbfd15cda3c85  gcc/testsuite/gcc.target/loongarch/vfcmp-d.c
  c08e307370de6dd5122f517ca9b88bd3  gcc/testsuite/gcc.target/loongarch/vfcmp-f.c
*************** bce9fa2c6f1e56b2fc1016479a2343a7  gcc/te
*** 83985,83990 ****
--- 84475,84481 ----
  5b2981de420be71c356c495dfca11de9  gcc/testsuite/gcc.target/microblaze/isa/nofcmp.c
  a816dff6f0a70651b4a2baba36df01bf  gcc/testsuite/gcc.target/microblaze/isa/nofloat.c
  7bd8c4012b4e818f846d60047de3d957  gcc/testsuite/gcc.target/microblaze/isa/pcmp.c
+ f45b5b3a93982c8808b97cea207f6871  gcc/testsuite/gcc.target/microblaze/isa/pr103383.c
  215c22e1a44b562b1792467518f5da2c  gcc/testsuite/gcc.target/microblaze/isa/vanilla.c
  42df89e3b0bf957ab168e412244bb45d  gcc/testsuite/gcc.target/microblaze/microblaze.exp
  9a329728496d062effbbdf4b7bde3f00  gcc/testsuite/gcc.target/microblaze/others/break_handler.c
*************** c02928696f09c7fc9c99174083ecb49c  gcc/te
*** 85297,85303 ****
  a8f9adaf01b9c4605ccf3a2b91395d9a  gcc/testsuite/gcc.target/powerpc/builtins-1-be-folded.c
  d7a191d70b9b9996b4b19f79964cf6c2  gcc/testsuite/gcc.target/powerpc/builtins-1-le-folded.c
  3caa2573bbad9fdef8b5573d969fe446  gcc/testsuite/gcc.target/powerpc/builtins-1-p10-runnable.c
! f2df3bae9f5a0120e073ffd853edc95d  gcc/testsuite/gcc.target/powerpc/builtins-1-p9-runnable.c
  921f02aebf589561e6c7277649ac973d  gcc/testsuite/gcc.target/powerpc/builtins-1.c
  ec989a2f75efdf3d6a18fdd8ae6ce35b  gcc/testsuite/gcc.target/powerpc/builtins-1.fold.h
  ec62946f4bc26dd59bb4446e6db2b85f  gcc/testsuite/gcc.target/powerpc/builtins-10-runnable.c
--- 85788,85794 ----
  a8f9adaf01b9c4605ccf3a2b91395d9a  gcc/testsuite/gcc.target/powerpc/builtins-1-be-folded.c
  d7a191d70b9b9996b4b19f79964cf6c2  gcc/testsuite/gcc.target/powerpc/builtins-1-le-folded.c
  3caa2573bbad9fdef8b5573d969fe446  gcc/testsuite/gcc.target/powerpc/builtins-1-p10-runnable.c
! dc57c7d2d3ef6cbd9f55a24e38ba3fca  gcc/testsuite/gcc.target/powerpc/builtins-1-p9-runnable.c
  921f02aebf589561e6c7277649ac973d  gcc/testsuite/gcc.target/powerpc/builtins-1.c
  ec989a2f75efdf3d6a18fdd8ae6ce35b  gcc/testsuite/gcc.target/powerpc/builtins-1.fold.h
  ec62946f4bc26dd59bb4446e6db2b85f  gcc/testsuite/gcc.target/powerpc/builtins-10-runnable.c
*************** e6b0503077f4ef65c73a5ee91d64a1e4  gcc/te
*** 86176,86182 ****
  0a52159bfa51b1365996904b04ac429e  gcc/testsuite/gcc.target/powerpc/pr103127.c
  3a624f553d6aa779c9ac3ded4d4e2396  gcc/testsuite/gcc.target/powerpc/pr103316.c
  98706d03de6e03b69eeeb2965b987553  gcc/testsuite/gcc.target/powerpc/pr103353.c
! 4a0d8fa948f1e42c9d8e4482f83147b5  gcc/testsuite/gcc.target/powerpc/pr103515.c
  df7ee79b00954d8717bef9dacef99a6d  gcc/testsuite/gcc.target/powerpc/pr103605-1.c
  af8ca5b14e78666f87f75ec9728d5c7a  gcc/testsuite/gcc.target/powerpc/pr103605-2.c
  ddba8d82446a17f0e2280f3a093bc891  gcc/testsuite/gcc.target/powerpc/pr103605.h
--- 86667,86673 ----
  0a52159bfa51b1365996904b04ac429e  gcc/testsuite/gcc.target/powerpc/pr103127.c
  3a624f553d6aa779c9ac3ded4d4e2396  gcc/testsuite/gcc.target/powerpc/pr103316.c
  98706d03de6e03b69eeeb2965b987553  gcc/testsuite/gcc.target/powerpc/pr103353.c
! 0f42c3453fc643d36f313c59df4fb9ea  gcc/testsuite/gcc.target/powerpc/pr103515.c
  df7ee79b00954d8717bef9dacef99a6d  gcc/testsuite/gcc.target/powerpc/pr103605-1.c
  af8ca5b14e78666f87f75ec9728d5c7a  gcc/testsuite/gcc.target/powerpc/pr103605-2.c
  ddba8d82446a17f0e2280f3a093bc891  gcc/testsuite/gcc.target/powerpc/pr103605.h
*************** deb12224fed195721b2ddc8b70e46a23  gcc/te
*** 86293,86298 ****
--- 86784,86790 ----
  3944b7ca9b08abe29fedfeabbbd32d5a  gcc/testsuite/gcc.target/powerpc/pr116170.c
  68e7a002ed920723f1529e366afe30de  gcc/testsuite/gcc.target/powerpc/pr116415.c
  da26cb6383a24e6a94a6c247d777f6b8  gcc/testsuite/gcc.target/powerpc/pr118663.c
+ 800df636a3d7634e8c0d66c59de11951  gcc/testsuite/gcc.target/powerpc/pr121007.c
  f0441edf54193f1b965b7d96e3ad8f52  gcc/testsuite/gcc.target/powerpc/pr16155.c
  6f5ca156bb125cbf24502221226bb56e  gcc/testsuite/gcc.target/powerpc/pr16286.c
  198d8a69d2887e8fadcb050d90e21aa6  gcc/testsuite/gcc.target/powerpc/pr16458-1.c
*************** eac1daf20200582d78f7b10b7024f1e1  gcc/te
*** 87614,87627 ****
  a8776213e94c56a3260e8eeeb1d3a2ff  gcc/testsuite/gcc.target/powerpc/vsx-vector-6-func-cmp.h
  11f83747002569efd40f99981b9a1b1a  gcc/testsuite/gcc.target/powerpc/vsx-vector-7.c
  ebd3e2644f3e43135e2172b26fafd1bf  gcc/testsuite/gcc.target/powerpc/vsx-vector-abss.c
! dc9da1f79e927fa1a49909e33b90ae6b  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-1.c
! 122e02c07d89332f323fddcbe1f503b1  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-2.c
! cf187b01ce2e134767bc12f6b4d4a95f  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-3.c
! 61da0b5ae075373791e0d292c9edcf6e  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-4.c
! e57ba50788c16217b02f9a3c21fb80e2  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-5.c
! f7aa4b90ea888a70f773f57660df2fe6  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-6.c
! 21307ddcfb204442ffcf0b5c5fd50258  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-7.c
! f0daa9a34336334438adfc8ad1d8f05d  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-8.c
  c64a5cc2ce1d0b7ac9d881b4585a9313  gcc/testsuite/gcc.target/powerpc/vsx_mask-count-runnable.c
  37a4787409404cc5944ae67ed64e5513  gcc/testsuite/gcc.target/powerpc/vsx_mask-expand-runnable.c
  829a2621c1495feaccfe06f5b735d1db  gcc/testsuite/gcc.target/powerpc/vsx_mask-extract-runnable.c
--- 88106,88127 ----
  a8776213e94c56a3260e8eeeb1d3a2ff  gcc/testsuite/gcc.target/powerpc/vsx-vector-6-func-cmp.h
  11f83747002569efd40f99981b9a1b1a  gcc/testsuite/gcc.target/powerpc/vsx-vector-7.c
  ebd3e2644f3e43135e2172b26fafd1bf  gcc/testsuite/gcc.target/powerpc/vsx-vector-abss.c
! 43f0fd0f288b1f8b1684ec180b394ca9  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-1.c
! 48ee9cd54a5b90dfbb5863a2e48a09c8  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-10.c
! 57c9502895b5ef5cc036b4a24bc9dae2  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-11.c
! 85dab13ddf2c377ae5582da8786f518a  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-12.c
! 7e81559fd15bfe837065dcaf03ed5979  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-13.c
! 7c6cffdf3e1f05d2dec66c7d197e7517  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-14.c
! f4f27e95eeb7fb1d9c950a2108741642  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-15.c
! 8b8ea43be20a8eef8443ed25138feb09  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-16.c
! 010576f2b2aab2ba4b2ad7648f1e1bde  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-2.c
! 7de03072344d92fc674ff7667f7ec1f3  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-3.c
! 12501e17b8d40780150226d4e3dbe7cb  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-4.c
! f0050538b645310e4d0979e24d795aa2  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-5.c
! 058efb373d839b169530858336b15c64  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-6.c
! 376ac48340c386427a1be7e5e884993a  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-7.c
! 6a6f6da892e6ab1ee90807017ab944d9  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-8.c
! a9b38e5a37de52ced500d53d1d518b95  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-9.c
  c64a5cc2ce1d0b7ac9d881b4585a9313  gcc/testsuite/gcc.target/powerpc/vsx_mask-count-runnable.c
  37a4787409404cc5944ae67ed64e5513  gcc/testsuite/gcc.target/powerpc/vsx_mask-expand-runnable.c
  829a2621c1495feaccfe06f5b735d1db  gcc/testsuite/gcc.target/powerpc/vsx_mask-extract-runnable.c
*************** a0ec9e9b1278bec59b5f6fb4473ae0be  gcc/te
*** 88325,88330 ****
--- 88825,88834 ----
  9ae56141fab814505fcf7366ef12db85  gcc/testsuite/gcc.target/riscv/li.c
  6308e09d3e5133433b97e26dcb02daba  gcc/testsuite/gcc.target/riscv/load-immediate.c
  7530069d23aa7990ff78ecce4ac40cae  gcc/testsuite/gcc.target/riscv/losum-overflow.c
+ ce3b187939b87fc213b6c10c98975fc0  gcc/testsuite/gcc.target/riscv/lto/pr110812_0.c
+ cbd4eeb25a9dd3d6d0da83efc1b0bcfb  gcc/testsuite/gcc.target/riscv/lto/pr110812_1.c
+ 6e00e4b567840db065e76d03e81f08dc  gcc/testsuite/gcc.target/riscv/lto/riscv-lto.exp
+ 979e78c5ed1d2ba91a46584480362b26  gcc/testsuite/gcc.target/riscv/lto/riscv_vector.h
  7a85a9d76321b19b1c9a5242b0715dd4  gcc/testsuite/gcc.target/riscv/matrix_add_const.c
  921c846f9d343bd139a635f83e6db437  gcc/testsuite/gcc.target/riscv/mcpu-1.c
  84a4693e36dd49686414997cb37fc127  gcc/testsuite/gcc.target/riscv/mcpu-2.c
*************** b22a15e86fb70037feb383a055b6e153  gcc/te
*** 88719,88726 ****
--- 89223,89238 ----
  2bc8f4e965541e4fc96271a069a25fb6  gcc/testsuite/gcc.target/riscv/pr118241-b.cc
  b2926d7d0c3ebd0521abd5b1bd13e5f8  gcc/testsuite/gcc.target/riscv/pr118241.c
  8c91cf2796ff0e2ea816e9d35b520e8d  gcc/testsuite/gcc.target/riscv/pr118248.c
+ 8c47402dadb9fd32b53e1cd83b57dc70  gcc/testsuite/gcc.target/riscv/pr119275.c
+ bf00cac22e30fab76ac74c7b2e5af207  gcc/testsuite/gcc.target/riscv/pr119830.c
  b62a32eafb5e661786b5ef2b03b30be9  gcc/testsuite/gcc.target/riscv/pr119971.c
+ 5209003e1af2c30db39a214e7aa84709  gcc/testsuite/gcc.target/riscv/pr120674.c
  0cdcf97373ed486ded9f3c10ef04348d  gcc/testsuite/gcc.target/riscv/pr120714.c
+ f2efb1e403760ba651384395f140d44c  gcc/testsuite/gcc.target/riscv/pr121787-1.c
+ 6704284cca589a739b8ae2118470d94d  gcc/testsuite/gcc.target/riscv/pr121787-2.c
+ 517cee01d883f2604f8317ec8307ae44  gcc/testsuite/gcc.target/riscv/pr122215.c
+ fff9d84e7d142a27609a7e87d10bfded  gcc/testsuite/gcc.target/riscv/pr123092.c
+ a06f50eaf9ffceda3f1e44f0fe8c75f8  gcc/testsuite/gcc.target/riscv/pr124674.c
  37a08389ba95284cc27832767dfc1430  gcc/testsuite/gcc.target/riscv/pr43644.c
  10400130cc47973d43925669f3c795ed  gcc/testsuite/gcc.target/riscv/pr84660.c
  c2ac0b53d6af56f5ec5bded3d252dddc  gcc/testsuite/gcc.target/riscv/pr93202.c
*************** e5794d88a1109065814ce4f8f2246087  gcc/te
*** 89512,89517 ****
--- 90024,90040 ----
  e7ca8fe6239410f9affbff1106fd2d15  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr119114.c
  446b0327be112ddedf3f8db6bc96d603  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr119224.c
  97a2ebde6fd6564be1fe7abc131eb066  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr120356.c
+ cf801f2e1c669d164d4ceb3cd657f647  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr121510.c
+ ed132fcfade8212b992e822b341be9eb  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr121742.c
+ eda1f0d5c82c50988ede53858da3cabd  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr121780.c
+ cbc44c5c7fa77e3f0d3efc55779bba4b  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr121781.c
+ ca9ef4de6ed36716b972a6b4efc63e85  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr121845.c
+ e990c042b373d09f16b69f4b30f0ac20  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr122321.c
+ 9e392034c9515123dd44a7ee88bd8905  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr122627.c
+ 4c249548c54ca3fd544c8943a9d28b77  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123022-2.c
+ 159ba529f2ab9b94d86dd9c7121d5aec  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123022.c
+ 3bc5599b02b046096a6eb9e4366940ae  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123910.c
+ 7d8cbc2b37ba78b4c9e24546d49e35a9  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123940.c
  ee8bcba5f6876f2027f0f263f81465aa  gcc/testsuite/gcc.target/riscv/rvv/autovec/reduc/extract_last-1.c
  7ff884bfa2e6cf9bc4c6172466538515  gcc/testsuite/gcc.target/riscv/rvv/autovec/reduc/extract_last-10.c
  b2792e9264dcd6fa2e88f495d51677e6  gcc/testsuite/gcc.target/riscv/rvv/autovec/reduc/extract_last-11.c
*************** c68a73138459484ead0cddce6ce27d08  gcc/te
*** 91685,91690 ****
--- 92208,92218 ----
  eaed30eccbeb952165411cfd2c789b72  gcc/testsuite/gcc.target/riscv/rvv/base/pr118872.c
  96272d16f134fa97f27114f27089793a  gcc/testsuite/gcc.target/riscv/rvv/base/pr118931-run-1.c
  b8ddadeddd15bd6f079e943b9036825d  gcc/testsuite/gcc.target/riscv/rvv/base/pr119115.c
+ 250f19182eb5aac9b6a01d7c594e8f5f  gcc/testsuite/gcc.target/riscv/rvv/base/pr122270-1.c
+ b0032fffb6e1860da7ca94cd7252c411  gcc/testsuite/gcc.target/riscv/rvv/base/pr122652.c
+ 1fb93600882c294d9641935b1aacb938  gcc/testsuite/gcc.target/riscv/rvv/base/pr122656-1.c
+ 64bada55e64f1bf5909df579653ca6f5  gcc/testsuite/gcc.target/riscv/rvv/base/pr122656-2.c
+ 1a7fc8aa599cc5a3ee40ebe1e03362ff  gcc/testsuite/gcc.target/riscv/rvv/base/pr122869.c
  c05efbdfaafc64ad34b3d1c4b60a38eb  gcc/testsuite/gcc.target/riscv/rvv/base/pr90263.c
  be75fd39ea9b3d01e3e22294359fb482  gcc/testsuite/gcc.target/riscv/rvv/base/pragma-2.c
  20a3b581af8087da2c1170d56ff52971  gcc/testsuite/gcc.target/riscv/rvv/base/pragma-3.c
*************** e5381974a3b2ccf0d38f73344c8a9078  gcc/te
*** 92050,92056 ****
  1b25858552b8cb437258bf278146d5d6  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/dump-1.c
  9d2e430896393111a9b4c22466c8a590  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/ffload-1.c
  c7b01ead74b1c2140b6970629d7e0580  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/ffload-2.c
! 315f0ba2615efa932566161e1a556ac9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/ffload-3.c
  7aceacf5477c84c7acc88af610e405c8  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/ffload-5.c
  6692ec4f04940cef34ff878f4ce2afe6  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/ffload-6.c
  a011894c73696ec886b4c6812c8c84cb  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/ffload-7.c
--- 92578,92584 ----
  1b25858552b8cb437258bf278146d5d6  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/dump-1.c
  9d2e430896393111a9b4c22466c8a590  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/ffload-1.c
  c7b01ead74b1c2140b6970629d7e0580  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/ffload-2.c
! cb13238cde1f41aa866697bb3c76cddb  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/ffload-3.c
  7aceacf5477c84c7acc88af610e405c8  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/ffload-5.c
  6692ec4f04940cef34ff878f4ce2afe6  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/ffload-6.c
  a011894c73696ec886b4c6812c8c84cb  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/ffload-7.c
*************** c0713b9aa6ed439fab330ab7223032dc  gcc/te
*** 92132,92137 ****
--- 92660,92666 ----
  14e4ce1dbfe4c1978792e21458b54f60  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113429.c
  231f16f9d08fd8f85a1f7dac951a33d9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113696.c
  7af3daa5fca47d3622e18dcf26901c3a  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr115214.c
+ 1b8009a0ebc38d1aa9051f39e5badf50  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr121485.c
  979e78c5ed1d2ba91a46584480362b26  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/riscv_vector.h
  e08588cfa23221a10eaf714a16aa7ea1  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-1.c
  162e11cf9edc569ca4a0cc195e7265bb  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-10.c
*************** daf6c4e935d4c04b105ac15b59b3fbfe  gcc/te
*** 92388,92399 ****
  f54b80eb5fffa420f5aabbbf8ddda08b  gcc/testsuite/gcc.target/riscv/rvv/xsfvector/sf_vqmaccus_2x8x2.c
  97fbf1d8057a6c24e22a238f1b85178f  gcc/testsuite/gcc.target/riscv/rvv/xsfvector/sf_vqmaccus_4x8x4.c
  fc54d12a0cef4c8da27d6f46343e89eb  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector.c
! cbbf5673d8ca63042855a0cd377e13c2  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr114194-rv32.c
  6826c6caa6acfa0940cda65196713c07  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr114194-rv64.c
  3c7db89c35cb6e70949f5d530cb9444d  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr116591.c
  af1bc36c42c7044e45de0c750db8acd5  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr116592.c
  7d338001722ed5351345d67d29329c05  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr118357.c
  610e6f25965c50df94620396565cbba5  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr118601.c
  3b6f5cabe79dc861ffb53d3e1f5799fb  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/prefix.c
  2ab24ca52f156368073be4fd3c43c875  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlb-vsb.c
  d65b03ba20bf54651672609d9c9923cc  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlbu-vsb.c
--- 92917,92931 ----
  f54b80eb5fffa420f5aabbbf8ddda08b  gcc/testsuite/gcc.target/riscv/rvv/xsfvector/sf_vqmaccus_2x8x2.c
  97fbf1d8057a6c24e22a238f1b85178f  gcc/testsuite/gcc.target/riscv/rvv/xsfvector/sf_vqmaccus_4x8x4.c
  fc54d12a0cef4c8da27d6f46343e89eb  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector.c
! 80698f0ea2b45f848a640c6a55351dcc  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr114194-rv32.c
  6826c6caa6acfa0940cda65196713c07  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr114194-rv64.c
  3c7db89c35cb6e70949f5d530cb9444d  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr116591.c
  af1bc36c42c7044e45de0c750db8acd5  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr116592.c
  7d338001722ed5351345d67d29329c05  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr118357.c
  610e6f25965c50df94620396565cbba5  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr118601.c
+ e8e71b223dd9d7fee839474c55a75e59  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr123969.c
+ 4881cdf86600eb0940a8c82416f44a09  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr123971.c
+ b804f461139f6ef0af6f4985aac87bbe  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr124147.c
  3b6f5cabe79dc861ffb53d3e1f5799fb  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/prefix.c
  2ab24ca52f156368073be4fd3c43c875  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlb-vsb.c
  d65b03ba20bf54651672609d9c9923cc  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlbu-vsb.c
*************** b5858f375001f368a5271a2649982a89  gcc/te
*** 93959,93964 ****
--- 94491,94497 ----
  033a2c21a5b436ea0be85925b64ad636  gcc/testsuite/gcc.target/s390/vxe2/vlbr-1.c
  4867ef0206fcafa68e9f50126f9f6acc  gcc/testsuite/gcc.target/s390/vxe2/vstbr-1.c
  e9c716b3b95aa7f755d2ffbc70fef96d  gcc/testsuite/gcc.target/s390/vxe2/vstbr-2.c
+ 700cc48e8badd004d747c1cc677760bc  gcc/testsuite/gcc.target/s390/vxe3/vcmp-1.c
  e78213fbc65718e1688bc47eec7d1929  gcc/testsuite/gcc.target/s390/vxe3/vd-1.c
  2a817cc2f7ee38f3d328772ee6b7ef59  gcc/testsuite/gcc.target/s390/vxe3/vd-2.c
  e54c8148e7c43cb3dcd85f866133dce5  gcc/testsuite/gcc.target/s390/vxe3/vdl-1.c
*************** bcf389e3992a960c831b1dafe53a539c  gcc/te
*** 95293,95298 ****
--- 95826,95833 ----
  511a4b96302498f658f208676182a550  gcc/testsuite/gdc.dg/debug/pr119826.d
  0121ae6408f107a6bf6f915c24102bd3  gcc/testsuite/gdc.dg/debug/trivial.d
  112f5496f49034443259464e76b965ec  gcc/testsuite/gdc.dg/dg.exp
+ 1f25f7140ea236c33498050fa3d25fc3  gcc/testsuite/gdc.dg/driver_debuglib.d
+ bfb9dc003b6110d37dc4b62c222afe7d  gcc/testsuite/gdc.dg/driver_defaultlib.d
  738cb13f46975c2c4e05fd4d2864afda  gcc/testsuite/gdc.dg/driver_fonly1.d
  3ab866f47c35938e530f75c1a359e7d2  gcc/testsuite/gdc.dg/driver_fonly2.d
  3e3e4464fc963f4f4a57434be63c992f  gcc/testsuite/gdc.dg/driver_fonly3.d
*************** a2d402e0596a4abb1dc6e25b11e9aa9c  gcc/te
*** 95425,95430 ****
--- 95960,95976 ----
  72d81c5bd5b1ad40ec304fe72a725695  gcc/testsuite/gdc.dg/pr117115.d
  a81f29fc44be5cd208351e9e8b4a742b  gcc/testsuite/gdc.dg/pr117621.d
  0b4ca5d336606fc94e656b8731b0a78e  gcc/testsuite/gdc.dg/pr119139.d
+ ad51c6065b49988f50a3f799a0e5f9a3  gcc/testsuite/gdc.dg/pr121477.d
+ d9ff6161866e2870e0df96f834797f71  gcc/testsuite/gdc.dg/pr122817.d
+ e4d8064a02951cfe69cf639a94128dd0  gcc/testsuite/gdc.dg/pr123046.d
+ 9ce0fee5b0fbb84c1de9a43ef50b9462  gcc/testsuite/gdc.dg/pr123264.d
+ e89ebd75d9b162289c929675222e8501  gcc/testsuite/gdc.dg/pr123407a.d
+ a45efe7a1d6f8b7f15f7befa3e7b1768  gcc/testsuite/gdc.dg/pr123407b.d
+ 69d3ed5a5a7a71ad897f5f4d6f52654e  gcc/testsuite/gdc.dg/pr123411.d
+ 4e7020df6ad139d4b43104ca5b97d142  gcc/testsuite/gdc.dg/pr123419.d
+ 56c2a0939424aafd465f15ffdd08847b  gcc/testsuite/gdc.dg/pr123798.d
+ 8121b336beaee98841d3fb15f1ac0198  gcc/testsuite/gdc.dg/pr124026.d
+ 0510f96a422a0543d9382a0700a9b0fb  gcc/testsuite/gdc.dg/pr125089.d
  d32aa8ed5ea10931be4ddb5bb9e863d8  gcc/testsuite/gdc.dg/pr89017.d
  53fa8db94d4ca3fc9ba83769733dc0e7  gcc/testsuite/gdc.dg/pr89041.d
  6c316b13f71ea31fcada56b58a41ebd1  gcc/testsuite/gdc.dg/pr89042a.d
*************** de9193ce38f7ef3ee1cc3a94fc8a92dc  gcc/te
*** 95559,95564 ****
--- 96105,96112 ----
  ad67c2aef0ecf01677e58695b0cc5d36  gcc/testsuite/gdc.dg/torture/pr113758.d
  c3a3fcac804266bf984aad50e1f84157  gcc/testsuite/gdc.dg/torture/pr114171.d
  a1ef8a304026fe097c3f6356f2dd2b2a  gcc/testsuite/gdc.dg/torture/pr117002.d
+ 07b590affdb88374b53601052d66c8a8  gcc/testsuite/gdc.dg/torture/pr120096.d
+ 18190856d5dece191ecd40c185c2b684  gcc/testsuite/gdc.dg/torture/pr123422.d
  580aadb24b666799e25f1f02ef3b7bbb  gcc/testsuite/gdc.dg/torture/pr92309.d
  d5626e21f8cdc22799175cb6adfddfd6  gcc/testsuite/gdc.dg/torture/pr94424.d
  ae5b279461655f243d767b80a6d0bc1b  gcc/testsuite/gdc.dg/torture/pr94777b.d
*************** d922e822af6878c17645657a31f3a9ee  gcc/te
*** 99637,99642 ****
--- 100185,100191 ----
  f082841753f64949d8329e00653460ec  gcc/testsuite/gfortran.dg/alloc_comp_assign_14.f08
  85b8ed4293af5c7bd2103a9d510c2d38  gcc/testsuite/gfortran.dg/alloc_comp_assign_15.f03
  ae9a8153879a562e6eaad8b096b2f86b  gcc/testsuite/gfortran.dg/alloc_comp_assign_16.f03
+ 24801c6979936a4bda1ff676ac369104  gcc/testsuite/gfortran.dg/alloc_comp_assign_17.f90
  552851693306221f925e1819ce51de3f  gcc/testsuite/gfortran.dg/alloc_comp_assign_2.f90
  42f08bf1aab342b9e46a1eca61a4eba8  gcc/testsuite/gfortran.dg/alloc_comp_assign_3.f90
  46cc93b771f780be474234fcd524c4e6  gcc/testsuite/gfortran.dg/alloc_comp_assign_4.f90
*************** b09906ea02ce8406cdd3e27bb94de042  gcc/te
*** 100809,100814 ****
--- 101358,101364 ----
  f82e9b9c0fd2496c70490c91bc661d8b  gcc/testsuite/gfortran.dg/c_f_pointer_tests_9.f90
  d4987bd92136fbe1dc0dbed4d878bc35  gcc/testsuite/gfortran.dg/c_f_tests_driver.c
  6225c3ed3e9774c1780dabafdb403bbb  gcc/testsuite/gfortran.dg/c_funloc_tests.f03
+ 50477914f8343ce12f792f525c61b042  gcc/testsuite/gfortran.dg/c_funloc_tests_10.f90
  e3d7c198fc7009b223f98b2e4884b462  gcc/testsuite/gfortran.dg/c_funloc_tests_2.f03
  98e3aa16d995b23cb7838243c47d7edf  gcc/testsuite/gfortran.dg/c_funloc_tests_3.f03
  4e9d85f4aad841105271457e917b0066  gcc/testsuite/gfortran.dg/c_funloc_tests_3_funcs.c
*************** e3d7c198fc7009b223f98b2e4884b462  gcc/te
*** 100816,100823 ****
  369aef7f75f5b20a85f41e161e1ffb04  gcc/testsuite/gfortran.dg/c_funloc_tests_4_driver.c
  c667584e20b0f824467db7ec4e3b9343  gcc/testsuite/gfortran.dg/c_funloc_tests_5.f03
  65b5cc5ca9373288fd99f49ba472e18f  gcc/testsuite/gfortran.dg/c_funloc_tests_6.f90
! 50f4b315c9bd0e25bc32f9dd348dd475  gcc/testsuite/gfortran.dg/c_funloc_tests_7.f90
  59490e9c85587d64c753922197bc3806  gcc/testsuite/gfortran.dg/c_funloc_tests_8.f90
  f8f8342ffbfc860b3fd25bf3bb1a89b1  gcc/testsuite/gfortran.dg/c_funptr_1.f90
  3fc97d796867c00b63bcdccb04232885  gcc/testsuite/gfortran.dg/c_funptr_1_mod.f90
  4b6d52265411683cdb8530282a8dff39  gcc/testsuite/gfortran.dg/c_kind_int128_test1.f03
--- 101366,101374 ----
  369aef7f75f5b20a85f41e161e1ffb04  gcc/testsuite/gfortran.dg/c_funloc_tests_4_driver.c
  c667584e20b0f824467db7ec4e3b9343  gcc/testsuite/gfortran.dg/c_funloc_tests_5.f03
  65b5cc5ca9373288fd99f49ba472e18f  gcc/testsuite/gfortran.dg/c_funloc_tests_6.f90
! c584b712c310fcef8e2418ef0145cf8a  gcc/testsuite/gfortran.dg/c_funloc_tests_7.f90
  59490e9c85587d64c753922197bc3806  gcc/testsuite/gfortran.dg/c_funloc_tests_8.f90
+ 885a61e43f249cb0957e72eed77a6de3  gcc/testsuite/gfortran.dg/c_funloc_tests_9.f90
  f8f8342ffbfc860b3fd25bf3bb1a89b1  gcc/testsuite/gfortran.dg/c_funptr_1.f90
  3fc97d796867c00b63bcdccb04232885  gcc/testsuite/gfortran.dg/c_funptr_1_mod.f90
  4b6d52265411683cdb8530282a8dff39  gcc/testsuite/gfortran.dg/c_kind_int128_test1.f03
*************** bd5f87ec53f49e6a8981f467e5bb9e41  gcc/te
*** 101144,101149 ****
--- 101695,101701 ----
  d7de9573af1b1b97fe9d86450aa3a0af  gcc/testsuite/gfortran.dg/class_array_21.f03
  91de14bd0e1e34515a91a4245b3da873  gcc/testsuite/gfortran.dg/class_array_22.f03
  ead9e764a198bfb098ed6bc432712080  gcc/testsuite/gfortran.dg/class_array_23.f03
+ 9840782c78dd0706c5345e75fd6e0689  gcc/testsuite/gfortran.dg/class_array_24.f90
  b5fd99d851b46b95300feac81c24ebf1  gcc/testsuite/gfortran.dg/class_array_3.f03
  38a17a95f960b99768a15d9116701526  gcc/testsuite/gfortran.dg/class_array_4.f03
  b4dd99bc2d3d2741e6f3769df3b8d9e0  gcc/testsuite/gfortran.dg/class_array_5.f03
*************** dbc20d52e3c86639db916ad3c6392de8  gcc/te
*** 101168,101173 ****
--- 101720,101726 ----
  784981c65487b4a0183cad86f46120aa  gcc/testsuite/gfortran.dg/class_dummy_7.f90
  0cc6ac2d4005a9c12c43562be1747080  gcc/testsuite/gfortran.dg/class_dummy_8.f90
  2bfebae5013cc0462982590edf427c4f  gcc/testsuite/gfortran.dg/class_dummy_9.f90
+ 35e23120f2117bdd41eea9932266635b  gcc/testsuite/gfortran.dg/class_elemental_1.f90
  2f2b6b89c03eb0121abcd60df79d27ee  gcc/testsuite/gfortran.dg/class_is_1.f90
  84f9ccdf2ee8c8cfe397a0c82a7730af  gcc/testsuite/gfortran.dg/class_nameclash.f90
  9602d01ce3a47f3e2255aba5f234d1ae  gcc/testsuite/gfortran.dg/class_optional_1.f90
*************** ce0f5a926b10968749cdf08cebb52832  gcc/te
*** 101259,101264 ****
--- 101812,101818 ----
  b5a297f740fa264744c9afc7fff7715d  gcc/testsuite/gfortran.dg/coarray/poly_run_2.f90
  4a38a76fec0e874592a1f9fb9f16c668  gcc/testsuite/gfortran.dg/coarray/poly_run_3.f90
  4b0341b2a1bb1e5bdc699106788a0a18  gcc/testsuite/gfortran.dg/coarray/pr107441-caf.f90
+ 2afcfc1c548284b14216214f4d95b532  gcc/testsuite/gfortran.dg/coarray/pr125021.f90
  5e97d7510dca977612f9a19418ceeb7f  gcc/testsuite/gfortran.dg/coarray/pr81265.f90
  ee617f71d8add5aa5f59789faa17332e  gcc/testsuite/gfortran.dg/coarray/pr85510.f90
  908a6caa4e0b07e2cb6a80b7284553a9  gcc/testsuite/gfortran.dg/coarray/pr93671.f90
*************** cc7b1657de64dc18aa34c31291e692dc  gcc/te
*** 101411,101419 ****
  1b3c7a86b8ef34e232357cb1e76b8755  gcc/testsuite/gfortran.dg/coarray_lib_token_4.f90
  2d0699c77682dc9d6a0ceba649b61a15  gcc/testsuite/gfortran.dg/coarray_lock_1.f90
  f7a47ce438683c4f8c5566d174e4525b  gcc/testsuite/gfortran.dg/coarray_lock_2.f90
! bb8d56d19a9b76a2194076b6f5de055f  gcc/testsuite/gfortran.dg/coarray_lock_3.f90
! c132dbfa1738d526e8055c025c1641e0  gcc/testsuite/gfortran.dg/coarray_lock_4.f90
! 074eddb0df81baa8fa98afe087fec459  gcc/testsuite/gfortran.dg/coarray_lock_5.f90
  5a1674540bf58193c6febb71d5f4b58b  gcc/testsuite/gfortran.dg/coarray_lock_6.f90
  23b8603e7d1d4aaf27f154ffeffe5241  gcc/testsuite/gfortran.dg/coarray_lock_7.f90
  363f712216477dd98bef29eaa7b022e7  gcc/testsuite/gfortran.dg/coarray_poly_1.f90
--- 101965,101973 ----
  1b3c7a86b8ef34e232357cb1e76b8755  gcc/testsuite/gfortran.dg/coarray_lib_token_4.f90
  2d0699c77682dc9d6a0ceba649b61a15  gcc/testsuite/gfortran.dg/coarray_lock_1.f90
  f7a47ce438683c4f8c5566d174e4525b  gcc/testsuite/gfortran.dg/coarray_lock_2.f90
! 83bf59c0d8e4ecf8510b94d23cfb1069  gcc/testsuite/gfortran.dg/coarray_lock_3.f90
! 5b662516b0846930a9822c5d11db3acb  gcc/testsuite/gfortran.dg/coarray_lock_4.f90
! a61646c8d2a54bc1972126b81acf1cef  gcc/testsuite/gfortran.dg/coarray_lock_5.f90
  5a1674540bf58193c6febb71d5f4b58b  gcc/testsuite/gfortran.dg/coarray_lock_6.f90
  23b8603e7d1d4aaf27f154ffeffe5241  gcc/testsuite/gfortran.dg/coarray_lock_7.f90
  363f712216477dd98bef29eaa7b022e7  gcc/testsuite/gfortran.dg/coarray_poly_1.f90
*************** cb50185eaf87f5357dad5873642eec33  gcc/te
*** 101531,101536 ****
--- 102085,102091 ----
  5a8601e6c51ea544ca9179e464325eb0  gcc/testsuite/gfortran.dg/contiguous_13.f90
  52a454e4516aaff2011d2696c96ca5ab  gcc/testsuite/gfortran.dg/contiguous_14.f90
  8621637c284842966acb59cdbfe4e51a  gcc/testsuite/gfortran.dg/contiguous_15.f90
+ ffb54aced92284f6168ef0953f0396ea  gcc/testsuite/gfortran.dg/contiguous_16.f90
  9975df3f787a3eaea63dd5664ff235eb  gcc/testsuite/gfortran.dg/contiguous_2.f90
  a59d0430a52a3cf47c280856725dee23  gcc/testsuite/gfortran.dg/contiguous_3.f90
  b81d56e35fe81ed4c9f6f67cca8a0ab2  gcc/testsuite/gfortran.dg/contiguous_4.f90
*************** c8ca7a67e0b9c502e7883c6187a3b1f3  gcc/te
*** 101816,101821 ****
--- 102371,102377 ----
  f69f56fb4872918c466c7554afc79da9  gcc/testsuite/gfortran.dg/deferred_character_36.f90
  0c1889dba05d51d0a09b189a6caa16c0  gcc/testsuite/gfortran.dg/deferred_character_37.f90
  51fc8b5f96812427754c555184ed2c63  gcc/testsuite/gfortran.dg/deferred_character_38.f90
+ 215823acf008351c1205acdb4e513f5e  gcc/testsuite/gfortran.dg/deferred_character_39.f90
  5eede6c791f6d272034f9b84850ac6af  gcc/testsuite/gfortran.dg/deferred_character_4.f90
  981b809300de368e8fac65be4b40099c  gcc/testsuite/gfortran.dg/deferred_character_5.f90
  b8df78111bec4d4d4b97da6a15228361  gcc/testsuite/gfortran.dg/deferred_character_6.f90
*************** c9bae3926493665cd6a3a6bca4b52e53  gcc/te
*** 102109,102114 ****
--- 102665,102671 ----
  5f453b52ee72bd864f1fc70730289b71  gcc/testsuite/gfortran.dg/dtio_34.f90
  356cc9632fa969c2cee2d146f484043f  gcc/testsuite/gfortran.dg/dtio_35.f90
  a63c4c25b48888dec1fdd5c3312fe243  gcc/testsuite/gfortran.dg/dtio_36.f90
+ 6d70b4f88d2ebcdd865e42765b1486d8  gcc/testsuite/gfortran.dg/dtio_37.f90
  98feff72bfe6f9469278b8b049519af2  gcc/testsuite/gfortran.dg/dtio_4.f90
  5c6704b3b1b7266ea126e709df28bebe  gcc/testsuite/gfortran.dg/dtio_6.f90
  416c852bc110486241a963ccac6a32e0  gcc/testsuite/gfortran.dg/dtio_7.f90
*************** b05969f53054593dd395b4ea04ad9c70  gcc/te
*** 102802,102807 ****
--- 103359,103366 ----
  b8f902f76eb78d41248d3f43e7203c3e  gcc/testsuite/gfortran.dg/generic_33.f90
  4705e58dd699635bea41b395496c1088  gcc/testsuite/gfortran.dg/generic_34.f90
  37cd6187e808ee365884bcbc55152cbf  gcc/testsuite/gfortran.dg/generic_35.f90
+ 2ecee9dd67a37d46386d24fb1f25af74  gcc/testsuite/gfortran.dg/generic_36-1.f90
+ a5bbbc17d24a1ce19bfca4527daacdab  gcc/testsuite/gfortran.dg/generic_36-2.f90
  a5a419e931b944ccee23f03064f3067a  gcc/testsuite/gfortran.dg/generic_4.f90
  6b638ae392f7e94c1592d0efbc053876  gcc/testsuite/gfortran.dg/generic_5.f90
  dc5927a86c1c614c2ff8285c60cf86f9  gcc/testsuite/gfortran.dg/generic_6.f90
*************** dc0ed8100589e01d391b4954bad7b048  gcc/te
*** 102964,102969 ****
--- 103523,103529 ----
  983431ce9a90b70a112b9e156506033e  gcc/testsuite/gfortran.dg/goacc/nested-reductions-2-serial.f90
  36c28e9cc17a4b18de9957b99e3ae3d1  gcc/testsuite/gfortran.dg/goacc/nesting-fail-1.f95
  f8fe06410fd4ca50e585e681d35f4482  gcc/testsuite/gfortran.dg/goacc/note-parallelism.f90
+ 8f7b26e930f121be0c4ee68193d7adf3  gcc/testsuite/gfortran.dg/goacc/omp-108382.f90
  44c6212e07bf6b44bd6d26e3224f93d7  gcc/testsuite/gfortran.dg/goacc/omp-fixed.f
  0d004a9c292993dcae37ce3958b7e212  gcc/testsuite/gfortran.dg/goacc/omp.f95
  30617b4201e681ce9fc02f97597b907d  gcc/testsuite/gfortran.dg/goacc/orphan-reductions-1.f90
*************** fd931b02506b83f0422f0faed5da5c1e  gcc/te
*** 102975,102980 ****
--- 103535,103541 ----
  09ea63acb5c4c7a47cc2d19532460132  gcc/testsuite/gfortran.dg/goacc/pr104717.f90
  7e7fc3d088115060da170794a58be703  gcc/testsuite/gfortran.dg/goacc/pr109622-5.f90
  1455640e85064b6a149025dca753e059  gcc/testsuite/gfortran.dg/goacc/pr109622-6.f90
+ 25e0ac1a3686ba9ae8a974d05f23ebf5  gcc/testsuite/gfortran.dg/goacc/pr120723.f90
  3cdf23868f01623770b84c1bd05da5a3  gcc/testsuite/gfortran.dg/goacc/pr71704.f90
  2ff86b408ebb7a6e4fa041f1ea4a5204  gcc/testsuite/gfortran.dg/goacc/pr72715.f90
  dff0c4a3dcd2aac51063c6e05c6d4665  gcc/testsuite/gfortran.dg/goacc/pr72743.f90
*************** c4c86973cf0938ea1456949849582a2a  gcc/te
*** 103450,103455 ****
--- 104011,104019 ----
  72668677493c036639519f511321445d  gcc/testsuite/gfortran.dg/gomp/polymorphic-mapping-5.f90
  0cdaedb7a34b46ba225e78e6cb7f84fd  gcc/testsuite/gfortran.dg/gomp/polymorphic-mapping.f90
  dd42ad4341c4916a5494d5d3c6a52b40  gcc/testsuite/gfortran.dg/gomp/pr100965.f90
+ 390de4d65a27e4b7a8643dbffb713189  gcc/testsuite/gfortran.dg/gomp/pr101760.f90
+ 8b20a4cfa3b2f8bd56fdd2e034a5a32a  gcc/testsuite/gfortran.dg/gomp/pr102314.f90
+ e32d4057d47aefb786a7e251839952e3  gcc/testsuite/gfortran.dg/gomp/pr102430.f90
  8c46c1ee06eca3c9ecb211ced2a97c89  gcc/testsuite/gfortran.dg/gomp/pr102431.f90
  a1a9be8c9080ba2ba338bc6f63b406e3  gcc/testsuite/gfortran.dg/gomp/pr102621.f90
  f523f11e31c8d7a378a90e54f4cc9a88  gcc/testsuite/gfortran.dg/gomp/pr103643.f90
*************** edeec1fe2488c7117f56e10734af03dc  gcc/te
*** 103466,103471 ****
--- 104030,104036 ----
  697c52a53eea166cade44a3f935b8caf  gcc/testsuite/gfortran.dg/gomp/pr107214-7.f90
  1474c5a5881d7047f1212bc8cfb8ef92  gcc/testsuite/gfortran.dg/gomp/pr107214-8.f90
  3beded12a494129bebcc732d85089896  gcc/testsuite/gfortran.dg/gomp/pr107214.f90
+ 9413acb66d424e7e859e5b387d479808  gcc/testsuite/gfortran.dg/gomp/pr107425.f90
  616305573acc701769497c1eee637edc  gcc/testsuite/gfortran.dg/gomp/pr114825.f90
  14e2080dbf20d40b1e1572419572cae5  gcc/testsuite/gfortran.dg/gomp/pr115103.f90
  7e57554851ec1cc8a84c063d08c5e85b  gcc/testsuite/gfortran.dg/gomp/pr118790.f90
*************** c2c9b1a1db79eedb25331d3565231b66  gcc/te
*** 103555,103561 ****
--- 104120,104128 ----
  1365d33484c21cf6b603f60889b019a4  gcc/testsuite/gfortran.dg/gomp/pr92977.f90
  6db6e7072dccd0be789b6dc9bd2a586c  gcc/testsuite/gfortran.dg/gomp/pr93555.f90
  a921eeb5697bd066712d41d66d374930  gcc/testsuite/gfortran.dg/gomp/pr94672.f90
+ a3f6ee03ab79b516d4db9359c21a4896  gcc/testsuite/gfortran.dg/gomp/pr95163.f90
  8a04653b9aa2543e13a3136934e00444  gcc/testsuite/gfortran.dg/gomp/pr95869.f90
+ 8512ba21f2d6bfcb3e878c6c91c4dc17  gcc/testsuite/gfortran.dg/gomp/pr98203.f90
  f832e5b53ac5754d0490d912e4da9ec6  gcc/testsuite/gfortran.dg/gomp/pr99226.f90
  bcd0369b2e799c3808032efd4c583295  gcc/testsuite/gfortran.dg/gomp/pr99928-1.f90
  5a122e0df6f86c9b8f25e3ef0a8de595  gcc/testsuite/gfortran.dg/gomp/pr99928-11.f90
*************** b75cb93f87f099ad715aceb9cb7b1bf2  gcc/te
*** 104037,104042 ****
--- 104604,104610 ----
  1f7a9307002a1f0f2a5f8eb76998dcda  gcc/testsuite/gfortran.dg/implied_do_io_6.f90
  2b548a8a46da28ac4ce23e2509a886fc  gcc/testsuite/gfortran.dg/implied_do_io_7.f90
  1b11291348a686162c0e48c6b1b5cd66  gcc/testsuite/gfortran.dg/implied_do_io_8.f90
+ f9c9e0932087ab8751e466c8efd22612  gcc/testsuite/gfortran.dg/implied_do_io_9.f90
  a8761a2aaffb7680e80dcad5eceada12  gcc/testsuite/gfortran.dg/implied_shape_1.f08
  f9528d7042bf84bf037d6e2b109272ec  gcc/testsuite/gfortran.dg/implied_shape_2.f90
  1b2b68c816459c1a9395771e9851de87  gcc/testsuite/gfortran.dg/implied_shape_3.f08
*************** e5a418513e079e50ea576e021cf5ad8e  gcc/te
*** 104165,104170 ****
--- 104733,104739 ----
  1545bc137f7bcb397e7986a3324b63be  gcc/testsuite/gfortran.dg/inline_matmul_23.f90
  89a35f94060b171becdc54771a02040b  gcc/testsuite/gfortran.dg/inline_matmul_24.f90
  d5dddad98efc37928795b446cb8d6501  gcc/testsuite/gfortran.dg/inline_matmul_25.f90
+ f500cc59ecbd3442513dea98e8f73719  gcc/testsuite/gfortran.dg/inline_matmul_27.f90
  ffdb4ca68f61f3bd618415335c9c7c21  gcc/testsuite/gfortran.dg/inline_matmul_3.f90
  f95e5fd479c839cfa9cb3ac127ee7584  gcc/testsuite/gfortran.dg/inline_matmul_4.f90
  6cb787ca0dac6ea814c8af4ac7cb8022  gcc/testsuite/gfortran.dg/inline_matmul_5.f90
*************** b3de2cdb7dfd995e8d4a97fabcc29a38  gcc/te
*** 104327,104332 ****
--- 104896,104902 ----
  e797a26594e33f4316a85af1fe223cbc  gcc/testsuite/gfortran.dg/interface_abstract_3.f90
  a30d85d2601e16438a18162122cbc190  gcc/testsuite/gfortran.dg/interface_abstract_4.f90
  bb1e6a032a10a9e1ff7d9a5d79c13aa6  gcc/testsuite/gfortran.dg/interface_abstract_5.f90
+ a584146c98b61024b29fba4d0cf9aa8c  gcc/testsuite/gfortran.dg/interface_abstract_6.f90
  33a2f608c30f217c3799ca2ecec2ffec  gcc/testsuite/gfortran.dg/interface_assignment_1.f90
  4f0c646f0732570a97ff9a9dc8755be6  gcc/testsuite/gfortran.dg/interface_assignment_2.f90
  91f77567fb0079c826db40c2ce9296c0  gcc/testsuite/gfortran.dg/interface_assignment_3.f90
*************** ae3f6e29ad3108163b5c5c6a5f70ef7c  gcc/te
*** 104495,104500 ****
--- 105065,105071 ----
  ce08d00725a7d8d4e9547e8bf55eaa4b  gcc/testsuite/gfortran.dg/is_contiguous_2.f90
  b6282b55783f0b1b931571f793113587  gcc/testsuite/gfortran.dg/is_contiguous_3.f90
  d64f2f360e5963a4bea9642fa7bf28c2  gcc/testsuite/gfortran.dg/is_contiguous_4.f90
+ ebc7811d4f30308fbc8ee420f6168425  gcc/testsuite/gfortran.dg/is_contiguous_5.f90
  765cb2ca72a98a43c69ea99a61aa0a59  gcc/testsuite/gfortran.dg/is_iostat_end_eor_1.f90
  ca491b51342a862f4f525db35073fe93  gcc/testsuite/gfortran.dg/is_iostat_end_eor_2.f90
  e29de44a3798652da0c04b03153d2639  gcc/testsuite/gfortran.dg/ishft_1.f90
*************** c31049d80a6d5f251553cf67a645cfbc  gcc/te
*** 104937,104942 ****
--- 105508,105514 ----
  cda99c4f9b1e1ca808103eba31168058  gcc/testsuite/gfortran.dg/mvbits_9.f90
  ab43a12e9d7dd4f0eed4d087fc19a84f  gcc/testsuite/gfortran.dg/named_interface.f90
  7841bdfa2894b1c8f28e061e0d78ca99  gcc/testsuite/gfortran.dg/namelist_1.f90
+ eff259516b93a9cda51eb967046a18bb  gcc/testsuite/gfortran.dg/namelist_102.f90
  02a533763d199c5afa28bec631ca6b9e  gcc/testsuite/gfortran.dg/namelist_11.f
  fadabd8643639e650a8499262b9a767e  gcc/testsuite/gfortran.dg/namelist_12.f
  637100e10c22e1d286db1ce10741e289  gcc/testsuite/gfortran.dg/namelist_13.f90
*************** a3ab8fbef738997039cfd45f350461a3  gcc/te
*** 105397,105403 ****
--- 105969,105977 ----
  77eca811eac1f80edb0f33c68ac0c4d3  gcc/testsuite/gfortran.dg/power_7.f90
  457d6bb30d331f4d3250628bdae53dc3  gcc/testsuite/gfortran.dg/power_8.f90
  e13b5dd50c332ea865cb6fabb5f79f29  gcc/testsuite/gfortran.dg/pr100154.f90
+ d7642fe0f50bb28f873042d6721e3ffb  gcc/testsuite/gfortran.dg/pr100155.f90
  c9e427811a6c55713cbb096365eec807  gcc/testsuite/gfortran.dg/pr100193.f90
+ a7f1c1fb2de0acfdd19303c2a0d29d73  gcc/testsuite/gfortran.dg/pr100194.f90
  e08828a7d864f8531a58aa25e1b58894  gcc/testsuite/gfortran.dg/pr100273.f90
  fc0ae38e4fdc2d7761aba57181c97b51  gcc/testsuite/gfortran.dg/pr100551.f90
  17f130e627232745d6279696b6984514  gcc/testsuite/gfortran.dg/pr100949.f90
*************** afe21b866be9162c6b654dc6771e6ead  gcc/te
*** 105421,105429 ****
--- 105995,106006 ----
  1dd53d463caf1e16e47d0fe9cbf2309f  gcc/testsuite/gfortran.dg/pr102366.f90
  fc5031b16be6a0dc4152f151793f4acb  gcc/testsuite/gfortran.dg/pr102458.f90
  cbd40bc334c217d37c198b1f27373810  gcc/testsuite/gfortran.dg/pr102458b.f90
+ 44bc627bf6c28a64567fdb75fe688fdc  gcc/testsuite/gfortran.dg/pr102459.f90
  09759ba73ae30c3a54be532d97b7f526  gcc/testsuite/gfortran.dg/pr102520.f90
  73ad9dd0e1a553e17865bdfdf09510d0  gcc/testsuite/gfortran.dg/pr102532.f90
+ 4efde3b7d107b33c9c8792e23b683d17  gcc/testsuite/gfortran.dg/pr102596.f90
  c0ae1c78c693e1256c471360998b7568  gcc/testsuite/gfortran.dg/pr102597.f90
+ 322a54b0e735415005b9446efbfd32f0  gcc/testsuite/gfortran.dg/pr102619.f90
  c081e1f510a2d68ec176356111dab188  gcc/testsuite/gfortran.dg/pr102685.f90
  d99cea26823109c0bb853b42df152999  gcc/testsuite/gfortran.dg/pr102715.f90
  f28998ba16e7a78633a9de3d5eaf0667  gcc/testsuite/gfortran.dg/pr102816.f90
*************** aadce1b09e2a4d220805726af0c7f109  gcc/te
*** 105474,105479 ****
--- 106051,106057 ----
  7a5b7a18d621b5e1b9d04b73e259ddd4  gcc/testsuite/gfortran.dg/pr104849.f90
  35a7804825dacf412e34e3f973b467f1  gcc/testsuite/gfortran.dg/pr104908.f90
  a5bb6d9b844f014490dab5e87b60244c  gcc/testsuite/gfortran.dg/pr105152.f90
+ 472e7c3181a65bf922fc24aa4a286685  gcc/testsuite/gfortran.dg/pr105168.f90
  ff052278fd65d5823600af4550f5eae7  gcc/testsuite/gfortran.dg/pr105205.f90
  22283af469347d85bd1fe4dae42939a3  gcc/testsuite/gfortran.dg/pr105230.f90
  0d13bd4f2344022f31050b761cea6e41  gcc/testsuite/gfortran.dg/pr105361.f90
*************** d4b65efea892e3a54acdb92a298fc582  gcc/te
*** 105499,105504 ****
--- 106077,106083 ----
  0677f2dac82b1b95cde8edf69efd60a9  gcc/testsuite/gfortran.dg/pr106918.f90
  09719e2d59fe58682ef7a737cdf01620  gcc/testsuite/gfortran.dg/pr106934.f90
  e1ccca85dc432ca649742c05520157d9  gcc/testsuite/gfortran.dg/pr106945.f90
+ 1b7098a64b99eb214b607f599b3eb32f  gcc/testsuite/gfortran.dg/pr106946.f90
  a9c6ba4d14cec93cd2edec54fda6a916  gcc/testsuite/gfortran.dg/pr106985.f90
  eb96b826eeaf84f157c8635706721d40  gcc/testsuite/gfortran.dg/pr106986.f90
  054c58cb24c0bee4ea0b5fcf3cdbf86d  gcc/testsuite/gfortran.dg/pr106999.f90
*************** b7b6edb61862ad55069c70c4744ad157  gcc/te
*** 105542,105547 ****
--- 106121,106127 ----
  05aad7d3d7d82955070028e39fdf28af  gcc/testsuite/gfortran.dg/pr109358.f90
  f309d722fd5c0108897e848739b09dbb  gcc/testsuite/gfortran.dg/pr109662-a.f90
  87aa7841fecf66956c29baf129e68fb9  gcc/testsuite/gfortran.dg/pr109662.f90
+ 8d235bb163056c04ca2b4c16a3221c29  gcc/testsuite/gfortran.dg/pr109788.f90
  f2965c649a5f8dcb271f4f49f656cfff  gcc/testsuite/gfortran.dg/pr109948.f90
  898c3ea8360d1452c5f815b15dc6f6f8  gcc/testsuite/gfortran.dg/pr110221.f
  7e8f4bd708c5e8d2c848ebda68cfa3e5  gcc/testsuite/gfortran.dg/pr110224.f90
*************** f62b2fa65f325ecd9897d1210ea1dd59  gcc/te
*** 105572,105577 ****
--- 106152,106158 ----
  c2c29ab4a03f3fce7c592346c758df55  gcc/testsuite/gfortran.dg/pr114874_2.f90
  4b273604e577c17fd50a80fc5e61fbc9  gcc/testsuite/gfortran.dg/pr114883.f90
  114f9ad97017aeb38f9ec22adfdc15e9  gcc/testsuite/gfortran.dg/pr114959.f90
+ dcc85737c1fe827eb6a63f372dd52f3e  gcc/testsuite/gfortran.dg/pr115260.f90
  2cdd9da41524094c8df35fef567a26c5  gcc/testsuite/gfortran.dg/pr115281.f90
  862aedc97da38fe9b3319406b768d9c0  gcc/testsuite/gfortran.dg/pr115348.f90
  d1ba07988d4687e1f81b063e8b20cefa  gcc/testsuite/gfortran.dg/pr117060.f90
*************** c409953e60b511d0f73cda8df16bc1dc  gcc/te
*** 105584,105589 ****
--- 106165,106171 ----
  d8b2b1281d8bcf0eb181e2643ffb6265  gcc/testsuite/gfortran.dg/pr117820.f90
  f12b0640f8ed3bdc0c826763af5ffd1f  gcc/testsuite/gfortran.dg/pr117901.f90
  dcb4fe6d926f672dd118a4a8ec9b6625  gcc/testsuite/gfortran.dg/pr118640.f90
+ 86ed735b34078d76c3e00aee11815c32  gcc/testsuite/gfortran.dg/pr119273.f90
  21d662c2190def3714e2bdeb64b9dce2  gcc/testsuite/gfortran.dg/pr119502.f90
  bfe9a93946cdb6a9b66dd7249e65330d  gcc/testsuite/gfortran.dg/pr119836_1.f90
  1c099fc2477935ea4f6d6e213b94eb2f  gcc/testsuite/gfortran.dg/pr119836_2.f90
*************** e79a5fff5c4841ba8e2da41f54be1c1c  gcc/te
*** 105602,105607 ****
--- 106184,106195 ----
  4787146fc7e8109511f0d22d056e2127  gcc/testsuite/gfortran.dg/pr120191_2.f90
  05457962d41eef6a41a3de889144d78a  gcc/testsuite/gfortran.dg/pr120191_3.f90
  b1cb2c9a52574c2df5df49bd13ee7e5d  gcc/testsuite/gfortran.dg/pr120196.f90
+ 9a63937be6d5e03574fd9c46968454c5  gcc/testsuite/gfortran.dg/pr121234.f90
+ cf5eb5dbc3807278a7f8e6a11e5b41bf  gcc/testsuite/gfortran.dg/pr121743.f90
+ b9c77c8cd78fcd9e57fbfafe732a8c95  gcc/testsuite/gfortran.dg/pr122936.f90
+ 9aa1b21c93a3838e52245be748b9b301  gcc/testsuite/gfortran.dg/pr124161.f90
+ 5bfaeea8d13a5035cf46aaab485c2803  gcc/testsuite/gfortran.dg/pr124450.f90
+ 864111c6768fee3f647605c5cf8db475  gcc/testsuite/gfortran.dg/pr124567.f90
  984f8307f36d56a0b48b5acce2dd5eb5  gcc/testsuite/gfortran.dg/pr12884.f
  64075248b9d1bffd6f380bb4e2a6eae0  gcc/testsuite/gfortran.dg/pr15129.f90
  e9cbd51db4e16292fc5dd1fead2e5a49  gcc/testsuite/gfortran.dg/pr15140.f90
*************** f166fdd0a6158ee4997aa03d50735f03  gcc/te
*** 106033,106038 ****
--- 106621,106627 ----
  5b2aa5e5d8aa97b69f0cc98bc9709f3f  gcc/testsuite/gfortran.dg/pr78741.f90
  18ef55c7791c30ff0793ca246df65036  gcc/testsuite/gfortran.dg/pr78758.f90
  c7abc49e43c3b6377a0e019f9f4292ac  gcc/testsuite/gfortran.dg/pr79315.f90
+ 76b2c561e2cc2dffb48457fae519ab01  gcc/testsuite/gfortran.dg/pr79524.f90
  7dde52ec5dffa2ae8586c577cf97f742  gcc/testsuite/gfortran.dg/pr79886.f90
  c0b10ae015725070f4297a1ba8927463  gcc/testsuite/gfortran.dg/pr79966.f90
  21b5f06229f04696cc787b63748c5de0  gcc/testsuite/gfortran.dg/pr80494.f90
*************** e338cfba2f466abedf9af92b52cd6fb3  gcc/te
*** 106054,106059 ****
--- 106643,106649 ----
  b6ff04901e3aee18765a74bf65804e38  gcc/testsuite/gfortran.dg/pr82253.f90
  344be7c0602202457870166d368441e0  gcc/testsuite/gfortran.dg/pr82314.f90
  7f04eca318ca64e1442ceabc31fab9fb  gcc/testsuite/gfortran.dg/pr82397.f
+ 9f2daedbf44298499832b2b6d72eb79f  gcc/testsuite/gfortran.dg/pr82721.f90
  5e9eb92684de357b4c23a7f04959db82  gcc/testsuite/gfortran.dg/pr82774.f90
  616772c135ee9b14c410dcd23fdbc3e4  gcc/testsuite/gfortran.dg/pr82973.f90
  0a918cecf6f52a31004b77728cb30038  gcc/testsuite/gfortran.dg/pr83113.f90
*************** fd7937a762c5733d3533bba0d9b05a6e  gcc/te
*** 106068,106073 ****
--- 106658,106664 ----
  95b2ba5b10167fedc1a075877a7a103b  gcc/testsuite/gfortran.dg/pr84088.f90
  ee7b5aa850a8be8a1ed15f2fcdca347a  gcc/testsuite/gfortran.dg/pr84117.f90
  c41bc69547a048a19ccb1adc57ce3bca  gcc/testsuite/gfortran.dg/pr84155.f90
+ e6d08fa65e9eb602b71f0e6a8b44a739  gcc/testsuite/gfortran.dg/pr84245.f90
  12af81a97aa86950b63e458f115e45c9  gcc/testsuite/gfortran.dg/pr84523.f90
  6d593814cbde3b81eb21e9501a48bac2  gcc/testsuite/gfortran.dg/pr84565.f90
  4cf62650961664b3e4bce16d177b5929  gcc/testsuite/gfortran.dg/pr84674.f90
*************** cc82665e1d54c6a2d5a100788c474853  gcc/te
*** 106079,106084 ****
--- 106670,106676 ----
  42d21294436ebefdc995a697f0266fd9  gcc/testsuite/gfortran.dg/pr85082.f90
  4355c9f07079d67c1134f6106f8fcb0b  gcc/testsuite/gfortran.dg/pr85138_1.f90
  024b55ef8c68dc11bd1d65bbc8cf1b13  gcc/testsuite/gfortran.dg/pr85138_2.f90
+ 9c97d6fc9b5f00f49d5a36517bc8222d  gcc/testsuite/gfortran.dg/pr85352.f90
  bf416564a457b9444387855732e4d265  gcc/testsuite/gfortran.dg/pr85357.f90
  286fa2d8f5b3fa55fd3173261d6b4eea  gcc/testsuite/gfortran.dg/pr85520.f90
  3daad136d0cfc95d8964dc923c7cc4ac  gcc/testsuite/gfortran.dg/pr85521_1.f90
*************** c6d3d1ffedb5b952a8712db0cf31c809  gcc/te
*** 106162,106167 ****
--- 106754,106760 ----
  45bdaaba50a371d379854f3b6895d276  gcc/testsuite/gfortran.dg/pr88964.f90
  d0e021239a321dbde0c39d7f370068c8  gcc/testsuite/gfortran.dg/pr89077.f90
  a2461a16a54c67eb1031deda70d3c512  gcc/testsuite/gfortran.dg/pr89084.f90
+ f3fbf1380652a88bf0a5d643b52e4a3d  gcc/testsuite/gfortran.dg/pr89092.f90
  be4f5532cbaa58d083d822b627ffe5de  gcc/testsuite/gfortran.dg/pr89253.f
  eb191e16157f03cba56fb00422bb2852  gcc/testsuite/gfortran.dg/pr89266.f90
  2726f9a132f249a727072d95e5f0aee3  gcc/testsuite/gfortran.dg/pr89344.f90
*************** f9cd7fe0c8cb7be5b0846aa6c3eb0b93  gcc/te
*** 106280,106286 ****
--- 106873,106882 ----
  9a2df63b77cda57168f292b09bde71b3  gcc/testsuite/gfortran.dg/pr93686_4.f90
  0636d4a049257c8e3f6c32b4b7309697  gcc/testsuite/gfortran.dg/pr93714_1.f90
  93b8b244bce4583a43c29d892e177744  gcc/testsuite/gfortran.dg/pr93714_2.f90
+ 9a8647e0b1ef01e06d45cc2715ae05e8  gcc/testsuite/gfortran.dg/pr93715.f90
  4d2e245917c39b1bcaeea6010bcb6284  gcc/testsuite/gfortran.dg/pr93792.f90
+ 1c1c17dce5c14eb846c34e6f6eba3b12  gcc/testsuite/gfortran.dg/pr93814.f90
+ 5494bfcb0d61c11d34ea0b6e4e610c45  gcc/testsuite/gfortran.dg/pr93832.f90
  8b7bf068692a6a31b63dd4963c050e98  gcc/testsuite/gfortran.dg/pr93835.f08
  6736173bcc319bca35f5453a7bca947b  gcc/testsuite/gfortran.dg/pr94030_1.f90
  b0f8acfae3746c459e5af7bcca222814  gcc/testsuite/gfortran.dg/pr94030_2.f90
*************** f17ab40b1ca95ac01da77049baa72103  gcc/te
*** 106289,106294 ****
--- 106885,106891 ----
  bf6d4fa9d116ccede014485a892d0d71  gcc/testsuite/gfortran.dg/pr94380.f90
  b9faba8aac0e0dd38443caeb527db93d  gcc/testsuite/gfortran.dg/pr94397.F90
  16d161f7900dd36eabcbaea6cd9c1b6e  gcc/testsuite/gfortran.dg/pr94708.f90
+ e49db1fd07a952483324884a3682a4e8  gcc/testsuite/gfortran.dg/pr94978.f90
  b3aa92652c768e489db71c4bdec58492  gcc/testsuite/gfortran.dg/pr95053.f
  4643a453de4a8df5432d833cf8bfa122  gcc/testsuite/gfortran.dg/pr95053_2.f90
  9a887ac1c462736f729ec4ec967c8be2  gcc/testsuite/gfortran.dg/pr95053_3.f90
*************** a6b1d851f4c5b6cfffa8f56c8f9cd150  gcc/te
*** 106297,106302 ****
--- 106894,106900 ----
  81355955ad98611710451ef6e76d9dbe  gcc/testsuite/gfortran.dg/pr95090.f90
  10a1157f7a9fa8f2042a563c98a25914  gcc/testsuite/gfortran.dg/pr95091.f90
  7d3e3457f90590b31740ffdd3a4866a3  gcc/testsuite/gfortran.dg/pr95104.f90
+ e11cb19990efd60513bbac52ee105f02  gcc/testsuite/gfortran.dg/pr95338.f90
  66c58770643ed3f1944820fa6790cc27  gcc/testsuite/gfortran.dg/pr95340.f90
  395135621c98fea610c5f2b17feb7637  gcc/testsuite/gfortran.dg/pr95342.f90
  b9d5894d240b89777d50d53e0cd60929  gcc/testsuite/gfortran.dg/pr95373_1.f90
*************** b8bfd1cf7e719488d1db3ded54f068b2  gcc/te
*** 106330,106335 ****
--- 106928,106934 ----
  662210e69dcf405442181d9c4c2a91ec  gcc/testsuite/gfortran.dg/pr95827.f90
  62cd2c3c38efcf3442a00b172c23a0f1  gcc/testsuite/gfortran.dg/pr95828.f90
  f2cfdbd57b646ea77c8d2d572b0b4a79  gcc/testsuite/gfortran.dg/pr95829.f90
+ 153dd2ab3bb579bad81f3ed62e079ff2  gcc/testsuite/gfortran.dg/pr95879.f90
  4624ef21d27373ca19abedc766bf24c8  gcc/testsuite/gfortran.dg/pr95880.f90
  5f79fc5c2f7a030ad1b82b4793b0c8a7  gcc/testsuite/gfortran.dg/pr95881.f90
  5f9a08444201a18392648013e972a14a  gcc/testsuite/gfortran.dg/pr95882_1.f90
*************** c8c260dea52e24ac6be6641b8f123d9a  gcc/te
*** 106369,106374 ****
--- 106968,106974 ----
  a056a75dc3c7830d385da1c0b9d587bc  gcc/testsuite/gfortran.dg/pr96711.f90
  a94ae73a3b6b9628990c54fb08f2950c  gcc/testsuite/gfortran.dg/pr96737.f90
  74a709306836d044b8cd43d035aecdf2  gcc/testsuite/gfortran.dg/pr96859.f90
+ 3b72f7e6589a60bc5e040e31c77484b8  gcc/testsuite/gfortran.dg/pr96986.f90
  76f063a5164cc2eff42c50fc9b9989a1  gcc/testsuite/gfortran.dg/pr97036.f90
  70cac68f93e5398eb60f3aa67f709e6a  gcc/testsuite/gfortran.dg/pr97095.f
  f219dfba008fc41e9e809107b3498d57  gcc/testsuite/gfortran.dg/pr97272.f90
*************** fd451ea4b1a79fa9abd2cf68f7412b28  gcc/te
*** 106458,106463 ****
--- 107058,107064 ----
  9320a3af3b59853e788ce2c3b67864d0  gcc/testsuite/gfortran.dg/proc_decl_28.f90
  2934e7195cdccd1e48244488c1c65fe0  gcc/testsuite/gfortran.dg/proc_decl_29.f90
  16c107e1f480b5af263a3b24682145bf  gcc/testsuite/gfortran.dg/proc_decl_3.f90
+ fd4afe19d40a633c195f934e575928c5  gcc/testsuite/gfortran.dg/proc_decl_30.f90
  a8525fbfa5dd7f02a6b578bdaa7287ee  gcc/testsuite/gfortran.dg/proc_decl_4.f90
  fe8d4f1e3d50a724aa39ae0786c170a8  gcc/testsuite/gfortran.dg/proc_decl_5.f90
  db3fe18298b61a4ca63d026cd283db3b  gcc/testsuite/gfortran.dg/proc_decl_6.f90
*************** eef9c4fb4632664f421c4067e9f7dd53  gcc/te
*** 106889,106894 ****
--- 107490,107496 ----
  bcec3240f40aa5093a05d7cd8024acf3  gcc/testsuite/gfortran.dg/save_6.f90
  751220763a6526f3644c983c901f1c25  gcc/testsuite/gfortran.dg/save_7.f90
  6be5b43eab49c79032e7249345565e1c  gcc/testsuite/gfortran.dg/save_8.f90
+ 54c44419e66a3bf4083075200afb117b  gcc/testsuite/gfortran.dg/save_alloc_character_1.f90
  969e348eec71de0c469550da97db323d  gcc/testsuite/gfortran.dg/save_common.f90
  8077a483f690b8b2a62c945c63fa4b57  gcc/testsuite/gfortran.dg/save_parameter.f90
  1a1f478cd1af5c7ca0f1139bd3142853  gcc/testsuite/gfortran.dg/save_result.f90
*************** fe8536ad63d0a16274b5bc4f784951a1  gcc/te
*** 106919,106924 ****
--- 107521,107527 ----
  b7f0fac05667f630e8f9b90aebe1fea4  gcc/testsuite/gfortran.dg/select_char_1.f90
  4bf875de20300472ec17d50aced7e0ab  gcc/testsuite/gfortran.dg/select_char_2.f90
  9f98379d27ae7878917fe08a1c19379f  gcc/testsuite/gfortran.dg/select_char_3.f90
+ 940d47f5d16eb43c90d00e589e757088  gcc/testsuite/gfortran.dg/select_contiguous.f90
  37e908eef4b56dca409c4daba93bdcfc  gcc/testsuite/gfortran.dg/select_rank_1.f90
  b7f688acbe6b27032e2d16f367317b58  gcc/testsuite/gfortran.dg/select_rank_2.f90
  de48eaee117c9656a2db00a7ffbe9cb9  gcc/testsuite/gfortran.dg/select_rank_3.f90
*************** aa943f2bec85bb461999d2cb2adfc73a  gcc/te
*** 107204,107209 ****
--- 107807,107813 ----
  701cab3628ee98dbcccc1d64e72d4ed6  gcc/testsuite/gfortran.dg/submodule_31.f08
  2d0d1435c8fc29f13f4d8d923dcdddc5  gcc/testsuite/gfortran.dg/submodule_32.f08
  e87560f12976c9545d8b7ae479b2618c  gcc/testsuite/gfortran.dg/submodule_33.f08
+ ce6def9eadc42b1a4cd9adf6d9fe55ee  gcc/testsuite/gfortran.dg/submodule_34.f90
  68f9f70d888318a31160ba732171726f  gcc/testsuite/gfortran.dg/submodule_4.f08
  d470cf2de70b478f82f67f0729c09b76  gcc/testsuite/gfortran.dg/submodule_5.f08
  125419a41557152ac79de8af903ef20a  gcc/testsuite/gfortran.dg/submodule_6.f08
*************** c00e10e2dedc2a4d4050941a3ae36ab2  gcc/te
*** 107266,107271 ****
--- 107870,107876 ----
  d175a283aab741037bd1bdee76a76fa5  gcc/testsuite/gfortran.dg/transfer_array_intrinsic_4.f90
  c5cef3aa9c3895b4e6b38e993481ff14  gcc/testsuite/gfortran.dg/transfer_array_intrinsic_5.f90
  446033cb0484da91a769a31c11989942  gcc/testsuite/gfortran.dg/transfer_array_subref.f90
+ f3cfa4f9bf47a8662e4b6c7ad0aaf36f  gcc/testsuite/gfortran.dg/transfer_array_subref_2.f90
  fdabd8c65dcb8fb1bfe06c29c937c219  gcc/testsuite/gfortran.dg/transfer_assumed_size_1.f90
  1c08633181f8b50ad8fd08ed1f4f207f  gcc/testsuite/gfortran.dg/transfer_char_kind4.f90
  0d5a3d18a1eeb0de1ca65d86e1cd68f8  gcc/testsuite/gfortran.dg/transfer_check_1.f90
*************** ad625f0340741a09e4be8d42e070139e  gcc/te
*** 107278,107283 ****
--- 107883,107889 ----
  7f1199fe5fa90085dcbb4f81cbcf7062  gcc/testsuite/gfortran.dg/transfer_class_2.f90
  4003da30901edcfc6adf19924dc746a2  gcc/testsuite/gfortran.dg/transfer_class_3.f90
  d9a1040ed4fe93e5d91936d8b26af4cc  gcc/testsuite/gfortran.dg/transfer_class_4.f90
+ d265a0bb0e3067107f69caac520518ea  gcc/testsuite/gfortran.dg/transfer_class_5.f90
  dc67674921059cc6c14a48ba9f6e8515  gcc/testsuite/gfortran.dg/transfer_hollerith_1.f90
  adc172acf631bf550ac06d92fba37d99  gcc/testsuite/gfortran.dg/transfer_intrinsic_1.f90
  e26ab1b7e21f778b1135b8600958bcd1  gcc/testsuite/gfortran.dg/transfer_intrinsic_2.f90
*************** ed99007df506ce091870da0cdbff417d  gcc/te
*** 107725,107730 ****
--- 108331,108337 ----
  b6cbc2d7f0f983561ecfb1e889cc9564  gcc/testsuite/gfortran.dg/vect/pr115528.f
  82e3d5f4f3c4f37d7f7c646d31ed6168  gcc/testsuite/gfortran.dg/vect/pr115710.f90
  3392d3d67c1af3233bcb1cb1563137c7  gcc/testsuite/gfortran.dg/vect/pr116956.f90
+ 586131e6c904729b8febde3dbc667a68  gcc/testsuite/gfortran.dg/vect/pr125431.f90
  a17cb1ab891a5af3471298da97331dda  gcc/testsuite/gfortran.dg/vect/pr19049.f90
  fdb4a5f5d5eff2fd75822f14875bd776  gcc/testsuite/gfortran.dg/vect/pr32377.f90
  bbb6998ea100c6c2039976c6446a0c10  gcc/testsuite/gfortran.dg/vect/pr32380.f
*************** e3172873ebcacc53ed7031ec75e9c916  gcc/te
*** 107783,107788 ****
--- 108390,108396 ----
  943be5f26b034cab4a8d80ed72f35e29  gcc/testsuite/gfortran.dg/vect/vect-do-concurrent-1.f90
  f153623f2b5e969448f7c1a751dd783d  gcc/testsuite/gfortran.dg/vect/vect-early-break_1-pr113808.f90
  51d61a0ffbe2e176d92badb55eaf6889  gcc/testsuite/gfortran.dg/vect/vect-gems.f90
+ a28c6b7265042047039bb29c34ef4fcd  gcc/testsuite/gfortran.dg/vect/vect-pr123741.f90
  4f3678355b22f056682fe39ff2c98ba3  gcc/testsuite/gfortran.dg/vect/vect.exp
  5020f9773f3c21b86ac1fe3e513943a0  gcc/testsuite/gfortran.dg/vector_subscript_1.f90
  0833fb55cdacc085a113140aa1d94458  gcc/testsuite/gfortran.dg/vector_subscript_2.f90
*************** bc764eca2f460bc6fb657fb675420237  gcc/te
*** 108307,108312 ****
--- 108915,108922 ----
  eabee42e1a561616023ffd1f4d1a64e2  gcc/testsuite/gfortran.fortran-torture/execute/write_logical.f90
  e37afcf68e701a2324e777ab5f6054bf  gcc/testsuite/gfortran.target/aarch64/aarch64.exp
  c37460d9fc2ef94382053354df0c3ef3  gcc/testsuite/gfortran.target/aarch64/pr116234.f
+ f49a9e5ed9144077a6174c71610d8918  gcc/testsuite/gfortran.target/aarch64/pr122408_1.f90
+ 6890252516b3245a15477e317869c38e  gcc/testsuite/gfortran.target/aarch64/pr122408_2.f90
  ae00a4e2372b755ec611b96aaff6a49b  gcc/testsuite/gfortran.target/riscv/rvv/pr111395.f90
  284fdebd0dafabcd770080ec38c8109a  gcc/testsuite/gfortran.target/riscv/rvv/pr111566.f90
  803fa495544cb97b2d47fa3c10b273ce  gcc/testsuite/gfortran.target/riscv/rvv/pr118182.f
*************** b3a316ada43c24ff36cbe71860fae91c  gcc/te
*** 110538,110543 ****
--- 111148,111163 ----
  26bbb4b239255e447bbe6c32ccb6f5f3  gcc/testsuite/gnat.dg/aggr30.adb
  3c5d0783cbdc3181db59d9f27a9e1a2d  gcc/testsuite/gnat.dg/aggr30.ads
  4c012319986c2dce532428fea4934ee2  gcc/testsuite/gnat.dg/aggr31.adb
+ 2e81bb438686c4b5e8022356634d0f32  gcc/testsuite/gnat.dg/aggr33.adb
+ fbdb338ed0af1dd948f3a9a5e3ee1805  gcc/testsuite/gnat.dg/aggr34.adb
+ 0849064da3e768041e2dec19d47f5461  gcc/testsuite/gnat.dg/aggr34_pkg1.adb
+ add67b8a04a202421f2564cbcbcdbc88  gcc/testsuite/gnat.dg/aggr34_pkg1.ads
+ 59299ad44fc7c1448bdc355f64dda579  gcc/testsuite/gnat.dg/aggr34_pkg2.adb
+ 564b8aed71e56ea8798f32904183e4cf  gcc/testsuite/gnat.dg/aggr34_pkg2.ads
+ dc8fcab04675e97bd3b1a9cc9ea62b81  gcc/testsuite/gnat.dg/aggr34_pkg3.ads
+ de08963200919efd0d17eb3a00430d13  gcc/testsuite/gnat.dg/aggr35.adb
+ 437905f29fbe199a1751c27f0bd4d394  gcc/testsuite/gnat.dg/aggr35_pkg.adb
+ f43b0a38be6632f578965e09556359d0  gcc/testsuite/gnat.dg/aggr35_pkg.ads
  35168b6dce753ec723ff0dcf21d977d0  gcc/testsuite/gnat.dg/aggr4.adb
  a12ec40d7ebc1ab08b05b0d1f6a57bc4  gcc/testsuite/gnat.dg/aggr7.adb
  39fba9f7f4870b15e9c37bcf9a358858  gcc/testsuite/gnat.dg/aggr8.adb
*************** d845359337435f578035928aae3a54a9  gcc/te
*** 110576,110581 ****
--- 111196,111202 ----
  710f0098af79353fbabe70716868b46c  gcc/testsuite/gnat.dg/allocator.adb
  9ce9e39be8e332ea909ef77b7a0955c0  gcc/testsuite/gnat.dg/allocator2.adb
  337bdf33957aa3def74f1c62d778d5de  gcc/testsuite/gnat.dg/allocator2.ads
+ e139f6c5620dbb672262cf6b6382edc7  gcc/testsuite/gnat.dg/allocator4.adb
  bbc4e723041a85252bdd22da4896f11f  gcc/testsuite/gnat.dg/allocator_maxalign1.adb
  e092999a834f75b4b2227b818a8fa1bd  gcc/testsuite/gnat.dg/allocator_maxalign2.adb
  f9d8770ca5c9726aa3c53cd819807ead  gcc/testsuite/gnat.dg/allocator_maxalign2.ads
*************** d0f41363293cf0ce8de4f15905ffba68  gcc/te
*** 110713,110718 ****
--- 111334,111340 ----
  f1da017e79e481af350005333250268b  gcc/testsuite/gnat.dg/bias2.adb
  aae39b549f5bb7a2b837495c637aaa94  gcc/testsuite/gnat.dg/biased_subtype.adb
  9bbc182ee19d36c4abbd7d6046ac5664  gcc/testsuite/gnat.dg/biased_uc.adb
+ e075dee38216366d67c6249860794304  gcc/testsuite/gnat.dg/bigint1.adb
  faf4a0c852ea85d2eab4ec4413be5fba  gcc/testsuite/gnat.dg/bip_aggregate_bug.adb
  8207ec6dfb08b203e67809b4591cc486  gcc/testsuite/gnat.dg/bip_case_expr.adb
  0dd427e9ad2957343c4c86027593a8a0  gcc/testsuite/gnat.dg/bip_case_expr_pkg.ads
*************** ac267a2812409b3404f6c1aeba441861  gcc/te
*** 110794,110799 ****
--- 111416,111423 ----
  74ca656bc33692c00600828733edeca3  gcc/testsuite/gnat.dg/complex1.adb
  eabd848befe131fde7677a9da2ddf20b  gcc/testsuite/gnat.dg/complex1_pkg.ads
  0b8796322445f41bce527a08ee2783de  gcc/testsuite/gnat.dg/component_size.adb
+ 13eb5d243ed2779f56be7f0f26132a53  gcc/testsuite/gnat.dg/component_value1.adb
+ 7ad5ed9511b0c4ff7e5173963b1e276c  gcc/testsuite/gnat.dg/component_value2.adb
  65f042f7c7f3ba5cd72d9c078386a46e  gcc/testsuite/gnat.dg/compose.adb
  ac069379af0132c56a9f326aa688d9f0  gcc/testsuite/gnat.dg/concat1.adb
  d0d9950b243700f01e3cfad18d2b6139  gcc/testsuite/gnat.dg/concat1_pkg.adb
*************** ec7ae5b41af0b730610dc9a22fa581ed  gcc/te
*** 111113,111118 ****
--- 111737,111743 ----
  a4f52bfabfe2bc7e231d6ecd5aeefaf6  gcc/testsuite/gnat.dg/enum3.adb
  79e91643725fd540a4e8915c24d964f5  gcc/testsuite/gnat.dg/enum4.adb
  59ed0090b7193e032aae3fdff3f91c4f  gcc/testsuite/gnat.dg/enum5.adb
+ 2902659a8dc0155ec00ad737afd98480  gcc/testsuite/gnat.dg/enum6.adb
  9ec6e8c939115d52974c52ebef0dfd47  gcc/testsuite/gnat.dg/enum_rep.adb
  70cecb0f3bbaca4e003491cba4e20cbe  gcc/testsuite/gnat.dg/enum_rep.ads
  3c812d9c40899c50bf02d8f0caaf64e8  gcc/testsuite/gnat.dg/enum_rep2.adb
*************** cb1449549fbec08e3825194300068909  gcc/te
*** 111232,111239 ****
--- 111857,111874 ----
  9e7293f7fd3655a8da0bb7b827baa897  gcc/testsuite/gnat.dg/generic_inst14.adb
  da22f29f94ebe295441ccc41597913b0  gcc/testsuite/gnat.dg/generic_inst14_pkg-child.ads
  29969c1ad7978ac871e75cd3b2d99efd  gcc/testsuite/gnat.dg/generic_inst14_pkg.ads
+ 805df358d6aa478a18c1f6bc0729ce95  gcc/testsuite/gnat.dg/generic_inst16.adb
+ 7079f833540535d9e5214ea3439184fc  gcc/testsuite/gnat.dg/generic_inst16_pkg-child-grandchild.ads
+ cbda4ce37f542285b521cda175f88ae8  gcc/testsuite/gnat.dg/generic_inst16_pkg-child.ads
+ dd47c03d89ee0f8e064407c83ce2bd8a  gcc/testsuite/gnat.dg/generic_inst16_pkg.ads
+ f2632b1a519e9ef9974bffe9e87a626f  gcc/testsuite/gnat.dg/generic_inst16_proc.adb
+ 8cff9a48dce3a564b54a3bb3f90eb85d  gcc/testsuite/gnat.dg/generic_inst16_proc.ads
+ b5916e544f6608c5d56d2cd4f13b5ffc  gcc/testsuite/gnat.dg/generic_inst19.adb
  bfa8ba450e641250f8eccf95997dd260  gcc/testsuite/gnat.dg/generic_inst2.adb
  063cf5c93b1a85bf617a62be0da63bdb  gcc/testsuite/gnat.dg/generic_inst2.ads
+ 9754b7078322105e191275ecef261619  gcc/testsuite/gnat.dg/generic_inst20-sub.adb
+ 0681c30c9efac88d67f6a19fb0a024db  gcc/testsuite/gnat.dg/generic_inst20.adb
+ c840150e814260285b976366030a3845  gcc/testsuite/gnat.dg/generic_inst20.ads
  2faefd507420ceafdccad8d472e66202  gcc/testsuite/gnat.dg/generic_inst2_c.ads
  1997a63f7761d0c3157019f91d059346  gcc/testsuite/gnat.dg/generic_inst3.adb
  ec082cac4cc6410759efb287bf918b11  gcc/testsuite/gnat.dg/generic_inst3_kafka_lib-topic.ads
*************** ec09b316f95699b7f12d9bfa709c9e2a  gcc/te
*** 111457,111462 ****
--- 112092,112098 ----
  b4403186d926b98d81bf74273fbdd747  gcc/testsuite/gnat.dg/iter5.adb
  f755b068c4d637453db94629c3c405ed  gcc/testsuite/gnat.dg/iter5_pkg.ads
  7c24008f7846098944f65c4134ed3975  gcc/testsuite/gnat.dg/iter6.adb
+ f81dad5b681759920793751c1a1799f2  gcc/testsuite/gnat.dg/iter7.adb
  52e284e2eb886ee34b0b3277d11c4499  gcc/testsuite/gnat.dg/itype.adb
  a13cf13b784e8e31eb211878f32d8ac3  gcc/testsuite/gnat.dg/itype.ads
  6e6397753611cdca3dfc55e25547deb9  gcc/testsuite/gnat.dg/itypes.adb
*************** c0f02b651aa311a5b5cddd400f9701ed  gcc/te
*** 111640,111645 ****
--- 112276,112283 ----
  fb19807d91f445350623ae19eb1b5aee  gcc/testsuite/gnat.dg/lto28_pkg3.ads
  d38a63c50972ebf0d60bc6959e5d130f  gcc/testsuite/gnat.dg/lto29.adb
  92924880135ec84fd65e4fecf6055807  gcc/testsuite/gnat.dg/lto29_pkg.ads
+ 0bb4f053befcf73a4d457f035ee97b6a  gcc/testsuite/gnat.dg/lto30.adb
+ 5889bf52461acb4efaa37c6ba94a8f31  gcc/testsuite/gnat.dg/lto30.ads
  2acb4cc31994f1569a3db6ac6613928d  gcc/testsuite/gnat.dg/lto4.adb
  9b38247c8e825c514f87e2965d931dad  gcc/testsuite/gnat.dg/lto4.ads
  959fb8bdf4cd1c34347ecfbab19ea60b  gcc/testsuite/gnat.dg/lto5.adb
*************** f8a43d7dd54caabde100374f7144dfc3  gcc/te
*** 111775,111780 ****
--- 112413,112420 ----
  ab899fc6f72925f8084209d5187582d5  gcc/testsuite/gnat.dg/opt106_pkg1.ads
  acc696967fd0d2302cfab5304ee3a970  gcc/testsuite/gnat.dg/opt106_pkg2.adb
  e4a127b46129811de1774562e29fb8fc  gcc/testsuite/gnat.dg/opt106_pkg2.ads
+ 9d150b19ff3791d45b239fbe539ca3ec  gcc/testsuite/gnat.dg/opt107.adb
+ b639e95e2056957733aa779c0c757061  gcc/testsuite/gnat.dg/opt107_pkg.ads
  5d50fb38b1ab84c39760906cb103c522  gcc/testsuite/gnat.dg/opt10_pkg.ads
  603264d4afdd2fd2174ea9c4cf4653ed  gcc/testsuite/gnat.dg/opt11.adb
  53160585b3a5d820b653e1e0d5f14c75  gcc/testsuite/gnat.dg/opt11.ads
*************** ca98602bd726e6e8ddbebb3c4b65f0a8  gcc/te
*** 112117,112122 ****
--- 112757,112764 ----
  064d12236a5c1215b72e88bd09d6696a  gcc/testsuite/gnat.dg/prefix1.ads
  44b1484811be62cb2477a1085cf56d34  gcc/testsuite/gnat.dg/prefix2.adb
  32f82de6508bf8f6a0d20f850f638498  gcc/testsuite/gnat.dg/prefix2.ads
+ 3372ba396a449f3b5e1394881b6677d1  gcc/testsuite/gnat.dg/prefix4.adb
+ 7d40b6e578a7602141138b7c83607865  gcc/testsuite/gnat.dg/prefix4_pkg.ads
  1cd7dd16873b27f1e5bc896924554185  gcc/testsuite/gnat.dg/private_overriding.adb
  67fc1f73b2e24628841b19a37424a4dd  gcc/testsuite/gnat.dg/profile_warning.adb
  3be6aedb24cbe63f63ad93e27d8946b1  gcc/testsuite/gnat.dg/profile_warning.ads
*************** a4f83930fb87bd91e5bb42db50c8d318  gcc/te
*** 112146,112156 ****
--- 112788,112800 ----
  c0f68295e348ad36a641d8edeff2cfc6  gcc/testsuite/gnat.dg/prot9_pkg1.ads
  4cd15245a3399652865b3c6a9daf87ad  gcc/testsuite/gnat.dg/prot9_pkg2.ads
  8b9d81034e4a3268cbc4aae764775fd9  gcc/testsuite/gnat.dg/prot_def.adb
+ 00f160c0176ca352cbe49cfb9735cb39  gcc/testsuite/gnat.dg/protected_deref1.adb
  ca3a0803b3696ed0b41f6d8cbb5b962b  gcc/testsuite/gnat.dg/protected_func.adb
  f010d95f371dbccc1be8c51d48eb4db5  gcc/testsuite/gnat.dg/protected_func.ads
  ce1ec39ed99de56ced45d8b9f86bc85a  gcc/testsuite/gnat.dg/protected_null.adb
  e6da11fd6483154a13820d7470de4efb  gcc/testsuite/gnat.dg/protected_self_ref1.adb
  bffe9a3ac9d57a27e4b093a45da1b8bf  gcc/testsuite/gnat.dg/protected_self_ref2.adb
+ 490f367919990d8653ae99b43c2f2f82  gcc/testsuite/gnat.dg/protected_type1.adb
  75bce0278f16cfe77a4b103d59d4add4  gcc/testsuite/gnat.dg/pure_function1.adb
  16af05a0ec944108ab97d67c7b40ffdf  gcc/testsuite/gnat.dg/pure_function1.ads
  e0718db21208bd252d027916a866bcae  gcc/testsuite/gnat.dg/pure_function2.adb
*************** dc262de3547bdd707bae595ff3f7bad4  gcc/te
*** 112162,112167 ****
--- 112806,112812 ----
  004d0a4eab7269238d8df3bd245f540d  gcc/testsuite/gnat.dg/pure_subp_body.adb
  2cac0c26d493dcb2a6bc9eb14b048d12  gcc/testsuite/gnat.dg/pure_subp_body_pkg.ads
  90037ebb91d6c21f5fd1a7d637986ed6  gcc/testsuite/gnat.dg/put_image1.adb
+ e1775204b0488ec4f599a1dd54641058  gcc/testsuite/gnat.dg/put_image2.adb
  86264155418d37c3c433352efc4d7216  gcc/testsuite/gnat.dg/quote.adb
  14ca6ec6ac239ab1d151eea57c9f41a0  gcc/testsuite/gnat.dg/raise_ce.adb
  02b35cb51408b925b49e3ad8ff0a7ea4  gcc/testsuite/gnat.dg/raise_expr.adb
*************** d470ada2b4a8aa6d586007ab8f6e7e5f  gcc/te
*** 112177,112182 ****
--- 112822,112831 ----
  fde5d5ed0c271572ac7da0e31e22bc5c  gcc/testsuite/gnat.dg/range_check7.adb
  25b5534a4bc4502074ce6463c2f5e96b  gcc/testsuite/gnat.dg/rational_arithmetic.ads
  46cc8f530fa18a6afd30b9d241f7967e  gcc/testsuite/gnat.dg/recursive_call.adb
+ 91cab892d1898f9564d603cfa1201d11  gcc/testsuite/gnat.dg/reduce1.adb
+ 0b27bcc5788ce003bc049b34d20d5c88  gcc/testsuite/gnat.dg/reduce2.adb
+ 5870b8cebdd6ce91693a485c5a6854d5  gcc/testsuite/gnat.dg/reduce4.adb
+ 001425eca43e1ece9e65dd7929459079  gcc/testsuite/gnat.dg/reduce5.adb
  50be8d98f4f9ac99d64926a10596a2df  gcc/testsuite/gnat.dg/ref_type.adb
  5457827e708b7bfc92ffe5610655a443  gcc/testsuite/gnat.dg/ref_type.ads
  222b5d10f23a2e8e8a5e4d41e86e66ed  gcc/testsuite/gnat.dg/regpat1.adb
*************** e51121d34de5e0d22067137864528c8a  gcc/te
*** 112199,112204 ****
--- 112848,112854 ----
  b08ade850be1a0a80325c1a93e9c9043  gcc/testsuite/gnat.dg/renaming16.adb
  0278c64b189f758651064d6a8aeac4db  gcc/testsuite/gnat.dg/renaming16_pkg.ads
  5eaaed2371da7238ac1bdfe70068edcc  gcc/testsuite/gnat.dg/renaming17.adb
+ b500c932c841816b5021e1c75ea367c9  gcc/testsuite/gnat.dg/renaming18.adb
  3afb13f37cfc3455f0f0be64d053892f  gcc/testsuite/gnat.dg/renaming2.adb
  1a954da0b1e7e11673319b058eb82146  gcc/testsuite/gnat.dg/renaming3.adb
  9c415422ce59266c9af89e8d3fd1df74  gcc/testsuite/gnat.dg/renaming4.ads
*************** b6962b44f81ad681bf6bfb2bc80e5383  gcc/te
*** 112309,112314 ****
--- 112959,112967 ----
  c60566bc09d6f157c601d0691f67aa4e  gcc/testsuite/gnat.dg/specs/access_constant.ads
  a3aeba60c0c92acaa70248375acbbdbb  gcc/testsuite/gnat.dg/specs/access_constant_decl.ads
  60ca8801e0e8eccd8fec16ac238b860c  gcc/testsuite/gnat.dg/specs/aggr1.ads
+ 32d247327e117ebc5575470ee0186869  gcc/testsuite/gnat.dg/specs/aggr10.ads
+ b7160b72842f69638428bd8734f6ed79  gcc/testsuite/gnat.dg/specs/aggr11.ads
+ 7ead03d52ff6c05100ffd07ad0a17bcd  gcc/testsuite/gnat.dg/specs/aggr12.ads
  fe82e660f7a4e411f57c2b234839d4c8  gcc/testsuite/gnat.dg/specs/aggr2.ads
  5742258b0ea3fc3e05f71406d1b1322b  gcc/testsuite/gnat.dg/specs/aggr3.ads
  c8246a5026bc2feaf77f0681b54b41ea  gcc/testsuite/gnat.dg/specs/aggr3_pkg.ads
*************** bc5d484f0195c40f96573375913aad6a  gcc/te
*** 112317,112322 ****
--- 112970,112976 ----
  b028802f236df04a9a038de337a5c2dc  gcc/testsuite/gnat.dg/specs/aggr5.ads
  8317714735f6bcf3820730db670ecec1  gcc/testsuite/gnat.dg/specs/aggr6.ads
  d85e98dad301b07f80ba5ad3d5adbe63  gcc/testsuite/gnat.dg/specs/aggr8.ads
+ 8d9f49d860ee6a20314b8b77bfff71c6  gcc/testsuite/gnat.dg/specs/aggr9.ads
  03d5230a50a20391e0238f6841dcaf91  gcc/testsuite/gnat.dg/specs/ai_116.ads
  7d85593bd2feb29192cd8b150c52dde2  gcc/testsuite/gnat.dg/specs/alignment1.ads
  2137406ab24e57901900aff5d6a8f7d6  gcc/testsuite/gnat.dg/specs/alignment2.ads
*************** bfb26e1cdacb2ba2f03eb976978bb43f  gcc/te
*** 112339,112344 ****
--- 112993,112999 ----
  c32b716552779677ae176058dfb0e811  gcc/testsuite/gnat.dg/specs/attribute_parsing.ads
  f816d4862285932d8e7b70c2efc94426  gcc/testsuite/gnat.dg/specs/box1.ads
  250f7491f96f113a197899dda06a57fe  gcc/testsuite/gnat.dg/specs/bss1.ads
+ 9b7de00350e4ab77eabfdece45deb6e4  gcc/testsuite/gnat.dg/specs/class_wide1.ads
  22d47e1639397ee371d9448cf072ccfb  gcc/testsuite/gnat.dg/specs/clause_on_volatile.ads
  8def2fc44b62c48b1c9f7f2f3906807c  gcc/testsuite/gnat.dg/specs/compile_time1.ads
  78a5f35d64fd87f033de3894f27944ec  gcc/testsuite/gnat.dg/specs/compile_time1_pkg.ads
*************** e79713b5757a3f8a05926964d5c26b04  gcc/te
*** 112398,112403 ****
--- 113053,113062 ----
  bb0e77998b46620c791eef69edc120e4  gcc/testsuite/gnat.dg/specs/interface5.ads
  2964ca5392547150aa2109dc092cc2e2  gcc/testsuite/gnat.dg/specs/last_bit.ads
  843de13b4d5cc30db54743bb74dedbf4  gcc/testsuite/gnat.dg/specs/limited1.ads
+ fbedcb4ad7f2c4e1005641325af96acb  gcc/testsuite/gnat.dg/specs/limited_with3-child-grandchild-grandgrandchild.ads
+ 4825dd5c9d78470959a4f658e124ed25  gcc/testsuite/gnat.dg/specs/limited_with3-child-grandchild.ads
+ 17aae2f71cf406a1e253530584097a2d  gcc/testsuite/gnat.dg/specs/limited_with3-child.ads
+ 2c85f81ae35fa72b5f14adce251e570b  gcc/testsuite/gnat.dg/specs/limited_with3.ads
  f1e4623f01bee0dbc4135d608ad4e311  gcc/testsuite/gnat.dg/specs/limited_with4.ads
  f8ce8abd47440a8ef0caa15042246467  gcc/testsuite/gnat.dg/specs/limited_with4_pkg.ads
  5ca7e9884e00c38a3fcb9117d299b396  gcc/testsuite/gnat.dg/specs/linker_alias.ads
*************** bac1e8c2c28486c2dacd74f69ad37ca6  gcc/te
*** 112414,112419 ****
--- 113073,113080 ----
  8a6a0905a2e9d263001e69e19b9657c3  gcc/testsuite/gnat.dg/specs/lto3_pkg2.adb
  1d6fe3d382f738feda5c7c3faea04614  gcc/testsuite/gnat.dg/specs/lto3_pkg2.ads
  bd5a6ea89b23bd5629784ef6f9f822ab  gcc/testsuite/gnat.dg/specs/machine_attribute.ads
+ b1a7d26ec14c2e4b30e7f5732498d30e  gcc/testsuite/gnat.dg/specs/mutably_tagged1.ads
+ 348317dec7fec51cad1a52676c67e983  gcc/testsuite/gnat.dg/specs/mutably_tagged2.ads
  a573c4fbee048b518c86be4ea7e21d27  gcc/testsuite/gnat.dg/specs/no_streams.ads
  d470d680d139ab860f9207e4c6a63125  gcc/testsuite/gnat.dg/specs/noinline1.ads
  750425a1e2a00ca741c599016cfcbb7b  gcc/testsuite/gnat.dg/specs/noinline3.ads
*************** e5ba939d3c279c5b6a8f745c0873635b  gcc/te
*** 112458,112463 ****
--- 113119,113125 ----
  8789c55b908f87861cc84839fcf5c8e8  gcc/testsuite/gnat.dg/specs/private2.ads
  1a54485794dbb614c393e5e7884acc69  gcc/testsuite/gnat.dg/specs/private2_pkg.ads
  fc55b1bcb0c272bc29027f58c8607f74  gcc/testsuite/gnat.dg/specs/private_with.ads
+ 3cbbbcdd33c1cd2f5801d65eb79d3cb4  gcc/testsuite/gnat.dg/specs/put_image2.ads
  38c51300d90d115072862fad182112ba  gcc/testsuite/gnat.dg/specs/renaming1.ads
  3b6772c48920aaa7f63a032ce18244a2  gcc/testsuite/gnat.dg/specs/renaming2.ads
  f16ac17ba73b5454cac752f8f68ab33b  gcc/testsuite/gnat.dg/specs/renaming2_pkg1.ads
*************** de366240409b1c3413cd274333487fb7  gcc/te
*** 112509,112514 ****
--- 113171,113177 ----
  67001591d13a2654ac5b7435e121cb10  gcc/testsuite/gnat.dg/specs/unchecked_convert2.ads
  a013922e8c147a09784a5aca21aa3a65  gcc/testsuite/gnat.dg/specs/unchecked_union1.ads
  fbc11dba24887c4af40c8660f7168a67  gcc/testsuite/gnat.dg/specs/unchecked_union2.ads
+ bc8a00cafe93a77626f7d163fb369bcf  gcc/testsuite/gnat.dg/specs/unchecked_union3.ads
  c8cf8a4c8db78f809bd3550ca820e6a5  gcc/testsuite/gnat.dg/specs/universal_fixed.ads
  956da2e940d0e7706607f91ce39d70ad  gcc/testsuite/gnat.dg/specs/variant_part.ads
  12e2e0159b45a86a40c49bc020048d43  gcc/testsuite/gnat.dg/specs/varsize_return.ads
*************** cf6061ac7a16f74b48144be58c3da5e2  gcc/te
*** 112679,112684 ****
--- 113342,113348 ----
  5759a9e98b8bd75d202c89de02d3ae17  gcc/testsuite/gnat.dg/subp_inst_pkg.adb
  840b0c423abf6b2fae281aeda3118ba0  gcc/testsuite/gnat.dg/subp_inst_pkg.ads
  9ef2fc6a5b60d79af93069621bd1eac2  gcc/testsuite/gnat.dg/subpools1.adb
+ c4309006e0231d77ac58ae3bc3749a5b  gcc/testsuite/gnat.dg/subpools2.adb
  222b053d2f80b1a83bb11792bfddb673  gcc/testsuite/gnat.dg/suppress_initialization.adb
  1157c9aa08eff66ee964d92800c6cc34  gcc/testsuite/gnat.dg/suppress_initialization2.adb
  5182608e851d6647f1d27fb402e17eaf  gcc/testsuite/gnat.dg/suppress_initialization2.ads
*************** b2c755599d8ed47e117bbf82c6a6b12f  gcc/te
*** 112751,112756 ****
--- 113415,113422 ----
  35dc80c5b5ed756d2cc1c930f85a4456  gcc/testsuite/gnat.dg/task3_pkg2.ads
  c32b560114a348976d0298262741b6ea  gcc/testsuite/gnat.dg/task4.adb
  70bd634f46004ffa96eb4070f11592ef  gcc/testsuite/gnat.dg/task5.adb
+ 2eaa9f1d0d240e9dd1698e9211bd233e  gcc/testsuite/gnat.dg/task6.adb
+ b348428ccd472508457f80ed401511e5  gcc/testsuite/gnat.dg/task6.ads
  029ef2213e407fd423e0ce3d19a60a80  gcc/testsuite/gnat.dg/task_name.adb
  2d192de9da9a98892aa2c605de044591  gcc/testsuite/gnat.dg/task_name.ads
  91463323d692d06c9031a056ff412414  gcc/testsuite/gnat.dg/task_stack_align.adb
*************** f175b16d43d86bada669751e2223586b  gcc/te
*** 112846,112851 ****
--- 113512,113518 ----
  bb65c4fde027a30c686dc94b413d88df  gcc/testsuite/gnat.dg/unchecked_union1.adb
  1394b7d36fa61e7f3417caa6cf755de5  gcc/testsuite/gnat.dg/unchecked_union2.adb
  22691e0b30f29e2232672977844f75c1  gcc/testsuite/gnat.dg/unchecked_union3.adb
+ a5d89ecafbb5dd31c1a79cf5513d61ed  gcc/testsuite/gnat.dg/unchecked_union4.adb
  9bcc7fe177662a52afe92c8e863cb022  gcc/testsuite/gnat.dg/uninit_array.adb
  8e53621d67942b5d53e2c54dd1648dd7  gcc/testsuite/gnat.dg/uninit_array.ads
  be51b72e76043adb990a3e95f4c40554  gcc/testsuite/gnat.dg/uninit_array_pkg.ads
*************** a60d5bd3c7d97738a821caa2b6320a63  gcc/te
*** 113000,113005 ****
--- 113667,113673 ----
  0cdebd32eacd337e71c8db2ab9d37a99  gcc/testsuite/gnat.dg/warn32.adb
  3c7023a211454ed0b601f4509949969b  gcc/testsuite/gnat.dg/warn33.adb
  831b1f99f5a5a1534ee78ccfa364a4d6  gcc/testsuite/gnat.dg/warn33_pkg.ads
+ 39cca47bb47cf534b57f5fb91e1dd22b  gcc/testsuite/gnat.dg/warn34.adb
  3973b8e21a39fdc98663d8d4c6b3ae18  gcc/testsuite/gnat.dg/warn4.adb
  30bdcc5f53e82fa0a748765edd2d8e03  gcc/testsuite/gnat.dg/warn5.adb
  99d15089537d8f6f3bed5ba4b1675ffc  gcc/testsuite/gnat.dg/warn6.adb
*************** f37d4791cfa22e9a20848922ea5de498  gcc/te
*** 113064,113070 ****
  b760f8c4f0593565426879b84ab6787b  gcc/testsuite/go.go-torture/execute/var-1.go
  55c3fdb5eab9130c79b8548c994aa8d9  gcc/testsuite/go.go-torture/execute/var-2.go
  ac0017eb534302ec5987291f615d13ca  gcc/testsuite/go.go-torture/execute/var-3.go
! 759f9a83cb909fd541b8bcd224f3b47c  gcc/testsuite/go.test/go-test.exp
  88c59e0bc9f2a79ed3a3e8f1409ed1d8  gcc/testsuite/go.test/test/235.go
  1a94dd86d2262280f883261800a13104  gcc/testsuite/go.test/test/64bit.go
  43e15a8d565d16ab908b7cf6db8e0bf9  gcc/testsuite/go.test/test/README.gcc
--- 113732,113738 ----
  b760f8c4f0593565426879b84ab6787b  gcc/testsuite/go.go-torture/execute/var-1.go
  55c3fdb5eab9130c79b8548c994aa8d9  gcc/testsuite/go.go-torture/execute/var-2.go
  ac0017eb534302ec5987291f615d13ca  gcc/testsuite/go.go-torture/execute/var-3.go
! bc02310ebf5ad61b0f6f38fcb6cbb482  gcc/testsuite/go.test/go-test.exp
  88c59e0bc9f2a79ed3a3e8f1409ed1d8  gcc/testsuite/go.test/test/235.go
  1a94dd86d2262280f883261800a13104  gcc/testsuite/go.test/test/64bit.go
  43e15a8d565d16ab908b7cf6db8e0bf9  gcc/testsuite/go.test/test/README.gcc
*************** d19a0449bac1fb497429a88904f3d658  gcc/te
*** 115009,115015 ****
  50c0f03762d429c13fd0302c79d90157  gcc/testsuite/go.test/test/varinit.go
  6447a99ae1e2eec266af1ceab6a7343c  gcc/testsuite/go.test/test/zerodivide.go
  340e08c9aef97a2da8f4cd4568d52675  gcc/testsuite/jit.dg/add-driver-options-testlib.c
! 01bc6b4ba547ea58a271d43b3041aef1  gcc/testsuite/jit.dg/all-non-failing-tests.h
  7bc42e89ae77872c8fc581b4babf1832  gcc/testsuite/jit.dg/create-code-for-hello-world-executable.h
  6599d673695ac45c69f897e7b9643cdb  gcc/testsuite/jit.dg/harness.h
  c2ab8a50f6099a876788d5e2b281249b  gcc/testsuite/jit.dg/jit.exp
--- 115677,115683 ----
  50c0f03762d429c13fd0302c79d90157  gcc/testsuite/go.test/test/varinit.go
  6447a99ae1e2eec266af1ceab6a7343c  gcc/testsuite/go.test/test/zerodivide.go
  340e08c9aef97a2da8f4cd4568d52675  gcc/testsuite/jit.dg/add-driver-options-testlib.c
! f47f41120c0afb4b98eb7248eb58b2c7  gcc/testsuite/jit.dg/all-non-failing-tests.h
  7bc42e89ae77872c8fc581b4babf1832  gcc/testsuite/jit.dg/create-code-for-hello-world-executable.h
  6599d673695ac45c69f897e7b9643cdb  gcc/testsuite/jit.dg/harness.h
  c2ab8a50f6099a876788d5e2b281249b  gcc/testsuite/jit.dg/jit.exp
*************** c1c4ffe41bbf76d4a61fec8d9b42486c  gcc/te
*** 115037,115043 ****
  af0a18ef8912906bb36ca88219c06667  gcc/testsuite/jit.dg/test-calling-external-function.c
  fcf20b943f3e9affe23adec9277064a7  gcc/testsuite/jit.dg/test-calling-function-ptr.c
  e3bf5c17797aeaea60953345b0ec836b  gcc/testsuite/jit.dg/test-cast.c
! 1abc657df5f9cfb2b57bf23048e54d17  gcc/testsuite/jit.dg/test-cold-attribute.c
  dc3f5924516f317d0e822022186a89d9  gcc/testsuite/jit.dg/test-combination.c
  2e035396a65d6176ba9798f667c5621a  gcc/testsuite/jit.dg/test-compile-to-assembler.c
  897c5ab27b1fd560e0e9f30525797a81  gcc/testsuite/jit.dg/test-compile-to-dynamic-library.c
--- 115705,115711 ----
  af0a18ef8912906bb36ca88219c06667  gcc/testsuite/jit.dg/test-calling-external-function.c
  fcf20b943f3e9affe23adec9277064a7  gcc/testsuite/jit.dg/test-calling-function-ptr.c
  e3bf5c17797aeaea60953345b0ec836b  gcc/testsuite/jit.dg/test-cast.c
! 6bfe3202df4a59189a757d8df0af0d9d  gcc/testsuite/jit.dg/test-cold-attribute.c
  dc3f5924516f317d0e822022186a89d9  gcc/testsuite/jit.dg/test-combination.c
  2e035396a65d6176ba9798f667c5621a  gcc/testsuite/jit.dg/test-compile-to-assembler.c
  897c5ab27b1fd560e0e9f30525797a81  gcc/testsuite/jit.dg/test-compile-to-dynamic-library.c
*************** cde7364d679bf019115a37fca70a6f52  gcc/te
*** 115238,115248 ****
  a658e6e3511698723b87be3277ba706d  gcc/testsuite/lib/go-torture.exp
  450868d4f15f0faade8c693e132ee071  gcc/testsuite/lib/go.exp
  8699bdd60911dccd7ce56e96f4032646  gcc/testsuite/lib/hwasan-dg.exp
! 570d1ec9b7a393a25ac703df89bbc0ee  gcc/testsuite/lib/lto.exp
! 645e8af17b334c4e279636a7b47dacbe  gcc/testsuite/lib/mike-g++.exp
! b2d617c3a17f3ed4084a60722369c3a8  gcc/testsuite/lib/mike-gcc.exp
  bf783dcd14ad74babc1bf3e91cc46055  gcc/testsuite/lib/modules.exp
! 97bc4436b04d543c4739c11a3f4c7c79  gcc/testsuite/lib/multiline.exp
  1c00843e9346dc308c9c3779eb8ca531  gcc/testsuite/lib/obj-c++-dg.exp
  e7c501da98d4a79a382f65d5a172d7b5  gcc/testsuite/lib/obj-c++.exp
  19cb4fa8eed364c6b80adb42c6765a11  gcc/testsuite/lib/objc-dg.exp
--- 115906,115916 ----
  a658e6e3511698723b87be3277ba706d  gcc/testsuite/lib/go-torture.exp
  450868d4f15f0faade8c693e132ee071  gcc/testsuite/lib/go.exp
  8699bdd60911dccd7ce56e96f4032646  gcc/testsuite/lib/hwasan-dg.exp
! e2bfccdcb04d164f799a69e297694257  gcc/testsuite/lib/lto.exp
! f887af746e35775824357011ba8cc8e2  gcc/testsuite/lib/mike-g++.exp
! 89581124f5c556c81e1487958e00b9ec  gcc/testsuite/lib/mike-gcc.exp
  bf783dcd14ad74babc1bf3e91cc46055  gcc/testsuite/lib/modules.exp
! 3b0fe32f6824bdeabec33f57d9935ba8  gcc/testsuite/lib/multiline.exp
  1c00843e9346dc308c9c3779eb8ca531  gcc/testsuite/lib/obj-c++-dg.exp
  e7c501da98d4a79a382f65d5a172d7b5  gcc/testsuite/lib/obj-c++.exp
  19cb4fa8eed364c6b80adb42c6765a11  gcc/testsuite/lib/objc-dg.exp
*************** eb1595e729e2eaac81c7ffe330d8f24e  gcc/te
*** 115275,115281 ****
  f7940f4f8c24d9f0bf4d062473f55777  gcc/testsuite/lib/scanwpaipa.exp
  23e89ca46b182663a4139064b179545f  gcc/testsuite/lib/target-libpath.exp
  d9a6726c38c578e1cd46631ee7f92d0a  gcc/testsuite/lib/target-supports-dg.exp
! d73fc42d5648ab78fab5fe8b42d8d398  gcc/testsuite/lib/target-supports.exp
  cfe4a2f0a83382048de060dc6669cbb9  gcc/testsuite/lib/target-utils.exp
  e45ee1a35539730bd823a310ad306ded  gcc/testsuite/lib/timeout-dg.exp
  b755c82fb5ee43ef6c852f23fbdc8704  gcc/testsuite/lib/timeout.exp
--- 115943,115949 ----
  f7940f4f8c24d9f0bf4d062473f55777  gcc/testsuite/lib/scanwpaipa.exp
  23e89ca46b182663a4139064b179545f  gcc/testsuite/lib/target-libpath.exp
  d9a6726c38c578e1cd46631ee7f92d0a  gcc/testsuite/lib/target-supports-dg.exp
! 2735c5c8f072c9bf556fc5f4c9a7554e  gcc/testsuite/lib/target-supports.exp
  cfe4a2f0a83382048de060dc6669cbb9  gcc/testsuite/lib/target-utils.exp
  e45ee1a35539730bd823a310ad306ded  gcc/testsuite/lib/timeout-dg.exp
  b755c82fb5ee43ef6c852f23fbdc8704  gcc/testsuite/lib/timeout.exp
*************** c0b991692c06f34bf7f8673802e7b155  gcc/te
*** 117680,117685 ****
--- 118348,118354 ----
  5fb2390505ce446a223d21f02b332874  gcc/testsuite/selftests/x86_64/copy-hard-reg-into-frame.rtl
  e42076aeff1c5ac155a88db5b1993d38  gcc/testsuite/selftests/x86_64/times-two.rtl
  195d431640249dac1928ced4d93ecb76  gcc/testsuite/selftests/x86_64/unspec.rtl
+ 5bf662844191f6cef3adde64d58741b4  gcc/testsuite/sparseset.supp
  4f2cac6fe70242fd7fe19fc4905f4d47  gcc/text-art/box-drawing-chars.inc
  5d65dcbc77e136bacdbafd25df3f5adb  gcc/text-art/box-drawing.cc
  fa30a9d397e3ed1585af5280c4658965  gcc/text-art/box-drawing.h
*************** b4a6da1471f279353aaca4956c18cdea  gcc/tr
*** 117716,117728 ****
  bcff760f6710b9047412aba72a381983  gcc/tree-affine.h
  527c9fa3845b2653cafc14c109129179  gcc/tree-assume.cc
  918b3dce8ecc8579127255abad77605e  gcc/tree-call-cdce.cc
! 8724b2c8ddca47562f380d6bdc4b9ee3  gcc/tree-cfg.cc
  591222e5199894b9b5d23b1822f7e309  gcc/tree-cfg.h
  a48b85120f042a19d52da08d304cc287  gcc/tree-cfgcleanup.cc
  4357345e39068e97ced26f06af8109a6  gcc/tree-cfgcleanup.h
  1718a36253ebbb17fe4570fc768216c9  gcc/tree-chrec.cc
  0e4a484c6387f9be0a506783637432f9  gcc/tree-chrec.h
! 631f383225878af718642d2a458aefae  gcc/tree-complex.cc
  1a4cfcc258f7e90de06692e266fb2918  gcc/tree-core.h
  77244f55dae576a255f5b69b70774e54  gcc/tree-data-ref.cc
  e43a555cdaab9a97ba3910364910f865  gcc/tree-data-ref.h
--- 118385,118397 ----
  bcff760f6710b9047412aba72a381983  gcc/tree-affine.h
  527c9fa3845b2653cafc14c109129179  gcc/tree-assume.cc
  918b3dce8ecc8579127255abad77605e  gcc/tree-call-cdce.cc
! ecc3c287e84500d6b3a5d2cc1c7b3ada  gcc/tree-cfg.cc
  591222e5199894b9b5d23b1822f7e309  gcc/tree-cfg.h
  a48b85120f042a19d52da08d304cc287  gcc/tree-cfgcleanup.cc
  4357345e39068e97ced26f06af8109a6  gcc/tree-cfgcleanup.h
  1718a36253ebbb17fe4570fc768216c9  gcc/tree-chrec.cc
  0e4a484c6387f9be0a506783637432f9  gcc/tree-chrec.h
! d16f5368577d0ccd0ab1cc7a8b880b5b  gcc/tree-complex.cc
  1a4cfcc258f7e90de06692e266fb2918  gcc/tree-core.h
  77244f55dae576a255f5b69b70774e54  gcc/tree-data-ref.cc
  e43a555cdaab9a97ba3910364910f865  gcc/tree-data-ref.h
*************** f01aeac56dffd44808096094e2bf76c1  gcc/tr
*** 117733,117746 ****
  21e7c804e59b1471314ee9c773a41ed1  gcc/tree-diagnostic.h
  061a86cf1b2c01bdde3dc32a0701f5b5  gcc/tree-dump.cc
  f9731b5179d6c364587220c2aea59a3e  gcc/tree-dump.h
! 979524586cd9e564f98af3c19702737b  gcc/tree-eh.cc
  4687ad88ec16848852a4d3f21bafdeba  gcc/tree-eh.h
  f3e814f679f1b8d21b1c54ad5ee16856  gcc/tree-emutls.cc
  e046a9c4874579f81515c4b3d9106b63  gcc/tree-hash-traits.h
  7e063b1edd28723f3f432596c39cfbee  gcc/tree-hasher.h
  e14744b5f500a4c01221207e438177b8  gcc/tree-if-conv.cc
  002c9568898504ca2025dcacf5151fd6  gcc/tree-if-conv.h
! dbe6b6114696eccb16929a6a255e4cd8  gcc/tree-inline.cc
  326f91431bfd3c15d8ddd74699d666e6  gcc/tree-inline.h
  90ca59c0844cd326f35f9cae17ec174b  gcc/tree-into-ssa.cc
  ef1cb0fba517532ecda9f4e0dd5218f7  gcc/tree-into-ssa.h
--- 118402,118415 ----
  21e7c804e59b1471314ee9c773a41ed1  gcc/tree-diagnostic.h
  061a86cf1b2c01bdde3dc32a0701f5b5  gcc/tree-dump.cc
  f9731b5179d6c364587220c2aea59a3e  gcc/tree-dump.h
! 9efa24beafc3502f210cfd17eef55a96  gcc/tree-eh.cc
  4687ad88ec16848852a4d3f21bafdeba  gcc/tree-eh.h
  f3e814f679f1b8d21b1c54ad5ee16856  gcc/tree-emutls.cc
  e046a9c4874579f81515c4b3d9106b63  gcc/tree-hash-traits.h
  7e063b1edd28723f3f432596c39cfbee  gcc/tree-hasher.h
  e14744b5f500a4c01221207e438177b8  gcc/tree-if-conv.cc
  002c9568898504ca2025dcacf5151fd6  gcc/tree-if-conv.h
! 1c79d0364197f21840c57e2fd4b7c4b3  gcc/tree-inline.cc
  326f91431bfd3c15d8ddd74699d666e6  gcc/tree-inline.h
  90ca59c0844cd326f35f9cae17ec174b  gcc/tree-into-ssa.cc
  ef1cb0fba517532ecda9f4e0dd5218f7  gcc/tree-into-ssa.h
*************** ef1cb0fba517532ecda9f4e0dd5218f7  gcc/tr
*** 117752,117758 ****
  62502d6fd9aa927353d7437dc2a6da17  gcc/tree-nested.cc
  b9bad013f5186a6cf78fe8adbe457945  gcc/tree-nested.h
  45fa4d8e792d6ddd01efa95b7e6dd98e  gcc/tree-nrv.cc
! a94299d98262f49dd0caf9ecb3dbb2ef  gcc/tree-object-size.cc
  2726009c7d301c88845d73276d4dc3b9  gcc/tree-object-size.h
  d6f70ceb8f53d3be86548b178e50c8e0  gcc/tree-outof-ssa.cc
  b9d636bd9641f3038bbe37a70684e18e  gcc/tree-outof-ssa.h
--- 118421,118427 ----
  62502d6fd9aa927353d7437dc2a6da17  gcc/tree-nested.cc
  b9bad013f5186a6cf78fe8adbe457945  gcc/tree-nested.h
  45fa4d8e792d6ddd01efa95b7e6dd98e  gcc/tree-nrv.cc
! 789c3e09ad9c4e2b56ef934cc3b12872  gcc/tree-object-size.cc
  2726009c7d301c88845d73276d4dc3b9  gcc/tree-object-size.h
  d6f70ceb8f53d3be86548b178e50c8e0  gcc/tree-outof-ssa.cc
  b9d636bd9641f3038bbe37a70684e18e  gcc/tree-outof-ssa.h
*************** b9d636bd9641f3038bbe37a70684e18e  gcc/tr
*** 117760,117780 ****
  beaa17685ead93eee17f6373d004c4c4  gcc/tree-parloops.h
  316bf60cf7fdc1c96eb341a7f0b6bdc2  gcc/tree-pass.h
  3c7e6c651df0a795a0b1b01ca9c75a4d  gcc/tree-phinodes.cc
! 460fc341cb2d78f53e0a27c81de36a7d  gcc/tree-phinodes.h
  ec93059a3a566b33ecd4779d2fd3b4ee  gcc/tree-predcom.cc
  529cb4117fb3ff7fd899c570bd97e944  gcc/tree-pretty-print-markup.h
  de1b16517568fbc9dc329b653c6d6342  gcc/tree-pretty-print.cc
  fd4dd1219acc650a4f7855faa0097964  gcc/tree-pretty-print.h
  f2fea638426d89fe9ea58081e5c46b3a  gcc/tree-profile.cc
! b2ea6fc51eae4a47de35dc40a3f0235c  gcc/tree-scalar-evolution.cc
  dddd950fe463803c41bc0c7cddf0fe44  gcc/tree-scalar-evolution.h
! 13a1a3c110f5436efaea0ba67d84704f  gcc/tree-sra.cc
  c022e816e38c8f399e6a16163c56d6db  gcc/tree-sra.h
  3e42023ef3fe5187ffffddbbb5740208  gcc/tree-ssa-address.cc
  c724c8becbea9eec0f806e3335942c32  gcc/tree-ssa-address.h
  b8450f3f71eba56c45cfa47b8a520ef2  gcc/tree-ssa-alias-compare.h
! 4fd21ec021c4ec50ec3ce679c9690886  gcc/tree-ssa-alias.cc
! 9d359861d05b5dfbc59cbf45c70feb0f  gcc/tree-ssa-alias.h
  8dc44d35f782ba1dee0da995849e4e40  gcc/tree-ssa-ccp.cc
  0facf771754439bdf307ff1c5ae92cb5  gcc/tree-ssa-ccp.h
  56468d0bf8f8f4c754ea03008cc6c0eb  gcc/tree-ssa-coalesce.cc
--- 118429,118449 ----
  beaa17685ead93eee17f6373d004c4c4  gcc/tree-parloops.h
  316bf60cf7fdc1c96eb341a7f0b6bdc2  gcc/tree-pass.h
  3c7e6c651df0a795a0b1b01ca9c75a4d  gcc/tree-phinodes.cc
! 2d8a0c0b02a82db0dda078bfd85b3480  gcc/tree-phinodes.h
  ec93059a3a566b33ecd4779d2fd3b4ee  gcc/tree-predcom.cc
  529cb4117fb3ff7fd899c570bd97e944  gcc/tree-pretty-print-markup.h
  de1b16517568fbc9dc329b653c6d6342  gcc/tree-pretty-print.cc
  fd4dd1219acc650a4f7855faa0097964  gcc/tree-pretty-print.h
  f2fea638426d89fe9ea58081e5c46b3a  gcc/tree-profile.cc
! 055f8d35b7a9085ff9d4a90cd58ba399  gcc/tree-scalar-evolution.cc
  dddd950fe463803c41bc0c7cddf0fe44  gcc/tree-scalar-evolution.h
! 24348f279ea595d6674363727b9b3acb  gcc/tree-sra.cc
  c022e816e38c8f399e6a16163c56d6db  gcc/tree-sra.h
  3e42023ef3fe5187ffffddbbb5740208  gcc/tree-ssa-address.cc
  c724c8becbea9eec0f806e3335942c32  gcc/tree-ssa-address.h
  b8450f3f71eba56c45cfa47b8a520ef2  gcc/tree-ssa-alias-compare.h
! a280a6011e02f219424be98a9e9e0286  gcc/tree-ssa-alias.cc
! cca706bca4e77342da318cc597425137  gcc/tree-ssa-alias.h
  8dc44d35f782ba1dee0da995849e4e40  gcc/tree-ssa-ccp.cc
  0facf771754439bdf307ff1c5ae92cb5  gcc/tree-ssa-ccp.h
  56468d0bf8f8f4c754ea03008cc6c0eb  gcc/tree-ssa-coalesce.cc
*************** be605b5b6cac7c418bd348b54f9d47cf  gcc/tr
*** 117784,117832 ****
  4b3c2e3456bae55a01edd98396b099a1  gcc/tree-ssa-dce.h
  adfc498b0c97a8123c02d418757df496  gcc/tree-ssa-dom.cc
  0046e212ff1b9f3f4d27d055aa299c47  gcc/tree-ssa-dom.h
! 970603eba5771386ebe1627241c4dae7  gcc/tree-ssa-dse.cc
  a6d83be241a72da1740cf6c5b2ce7d52  gcc/tree-ssa-dse.h
! c2bfee2b31ff0129fc730cb3ac7a0137  gcc/tree-ssa-forwprop.cc
  417b731d1c8923a0eb41474c924dd760  gcc/tree-ssa-ifcombine.cc
  488acc5feebebd58899e9146d82d4af4  gcc/tree-ssa-live.cc
  cf4bde43ab3b843eff45bac243d4116d  gcc/tree-ssa-live.h
  02e9a1bf25d500979aa57640611d72bc  gcc/tree-ssa-loop-ch.cc
! b95106c31df764f5bd162b7d1cab8727  gcc/tree-ssa-loop-im.cc
  21088fa37f899ccd0056bf3486157db9  gcc/tree-ssa-loop-ivcanon.cc
! 16adb8fe3a072acbebf0e97867daeb3a  gcc/tree-ssa-loop-ivopts.cc
  1f70c217ef5bd5f655512b9232754870  gcc/tree-ssa-loop-ivopts.h
  71ebf1f6c8d82b1fdbca6c7aa3bd14cb  gcc/tree-ssa-loop-manip.cc
  fbcc93539b376489c1256eb8cf2d4800  gcc/tree-ssa-loop-manip.h
! 66f54027c40abbb5a8ce78570af5f508  gcc/tree-ssa-loop-niter.cc
  189317c0b965ddd0ee491f8e45af4b0d  gcc/tree-ssa-loop-niter.h
  523a4b7c5b7113009b3b1f0f514d0cd3  gcc/tree-ssa-loop-prefetch.cc
! 164c07dbb4079f7d4f41eb0101ed3193  gcc/tree-ssa-loop-split.cc
! 57dcd3919dadb6f23e2bcefe55f7cd14  gcc/tree-ssa-loop-unswitch.cc
  2f97e7f187f4f4cce48b71489ef542a0  gcc/tree-ssa-loop.cc
  538146c17730f67ffcc58afdfcc93712  gcc/tree-ssa-loop.h
! ddfe7a899798f2b0015084eb976ead01  gcc/tree-ssa-math-opts.cc
  c0b0549adb2c1140cf285901abb5a78c  gcc/tree-ssa-math-opts.h
  0ed882dedcd92c361bc556587aaa4b74  gcc/tree-ssa-operands.cc
  da72a60de8a6f51a635ead26120d3cc7  gcc/tree-ssa-operands.h
! 08cb1e9bb65caad7ed062b606b4c9334  gcc/tree-ssa-phiopt.cc
  0864f59d85045caee0a643f82fa6d20c  gcc/tree-ssa-phiprop.cc
! 0c173f8637d1259922572eb432a405ef  gcc/tree-ssa-pre.cc
! 207e8eba5552b33b5aae2de6e7c1f35d  gcc/tree-ssa-propagate.cc
  299c5d8dabcb4a4d30bab51fbedc4e68  gcc/tree-ssa-propagate.h
! 233d764ee886ccb3223d08a55f2a1ddc  gcc/tree-ssa-reassoc.cc
  258492cd7ef04be49374ea1e670f3b5b  gcc/tree-ssa-reassoc.h
! 9345c4fd15591c1c4b2ae0642aa4848e  gcc/tree-ssa-sccvn.cc
  4b05103d4706bf37cd0bc9f018b40965  gcc/tree-ssa-sccvn.h
! a27c58eccc3d8929767feb76dc99399f  gcc/tree-ssa-scopedtables.cc
  aa25adbcb019dd38a66ce237df54ae1d  gcc/tree-ssa-scopedtables.h
  1565dc0d975d174e5d53e4889ab223e3  gcc/tree-ssa-sink.cc
! f8a95ebe86d335b810e43ab71cae5b43  gcc/tree-ssa-strlen.cc
  817cd7b593b9ca11ac7464ee683d8f98  gcc/tree-ssa-strlen.h
  bd67579773d2e2f4ce02d41953702750  gcc/tree-ssa-structalias.cc
  8236d4d91b8701a8daadc2f8a12d4752  gcc/tree-ssa-tail-merge.cc
  18ba2469cfdfbd297fe2b0120e69a84c  gcc/tree-ssa-ter.cc
  3094df71c80e187685e4e97e428d64f4  gcc/tree-ssa-ter.h
! 5119cc77a94879d77536055405d9f25a  gcc/tree-ssa-threadbackward.cc
  33619340feba718aa0da2ca4ed04a573  gcc/tree-ssa-threadedge.cc
  cd9ecd37945746b6458a78b083cbe1b1  gcc/tree-ssa-threadedge.h
  39e65868f1dbc92a93a03e6b8245660a  gcc/tree-ssa-threadupdate.cc
--- 118453,118501 ----
  4b3c2e3456bae55a01edd98396b099a1  gcc/tree-ssa-dce.h
  adfc498b0c97a8123c02d418757df496  gcc/tree-ssa-dom.cc
  0046e212ff1b9f3f4d27d055aa299c47  gcc/tree-ssa-dom.h
! 5b0ddf1c586505180a07459157fc354c  gcc/tree-ssa-dse.cc
  a6d83be241a72da1740cf6c5b2ce7d52  gcc/tree-ssa-dse.h
! 3cd977c6c05b7607c353e399fcca0393  gcc/tree-ssa-forwprop.cc
  417b731d1c8923a0eb41474c924dd760  gcc/tree-ssa-ifcombine.cc
  488acc5feebebd58899e9146d82d4af4  gcc/tree-ssa-live.cc
  cf4bde43ab3b843eff45bac243d4116d  gcc/tree-ssa-live.h
  02e9a1bf25d500979aa57640611d72bc  gcc/tree-ssa-loop-ch.cc
! 16f97ebc8a7e0a36756f1f7162afbdb6  gcc/tree-ssa-loop-im.cc
  21088fa37f899ccd0056bf3486157db9  gcc/tree-ssa-loop-ivcanon.cc
! f5aabdf92f06e52bc27ccf01db908c7f  gcc/tree-ssa-loop-ivopts.cc
  1f70c217ef5bd5f655512b9232754870  gcc/tree-ssa-loop-ivopts.h
  71ebf1f6c8d82b1fdbca6c7aa3bd14cb  gcc/tree-ssa-loop-manip.cc
  fbcc93539b376489c1256eb8cf2d4800  gcc/tree-ssa-loop-manip.h
! 2098feb88cd827b60bfe27ffa5a29e17  gcc/tree-ssa-loop-niter.cc
  189317c0b965ddd0ee491f8e45af4b0d  gcc/tree-ssa-loop-niter.h
  523a4b7c5b7113009b3b1f0f514d0cd3  gcc/tree-ssa-loop-prefetch.cc
! 684cdd7a8e54471a9a485d08dec4ab1b  gcc/tree-ssa-loop-split.cc
! ada2da4e4f03dd37043a0cc6daa67681  gcc/tree-ssa-loop-unswitch.cc
  2f97e7f187f4f4cce48b71489ef542a0  gcc/tree-ssa-loop.cc
  538146c17730f67ffcc58afdfcc93712  gcc/tree-ssa-loop.h
! 192d7865777f9df5a5b638a53a52cc82  gcc/tree-ssa-math-opts.cc
  c0b0549adb2c1140cf285901abb5a78c  gcc/tree-ssa-math-opts.h
  0ed882dedcd92c361bc556587aaa4b74  gcc/tree-ssa-operands.cc
  da72a60de8a6f51a635ead26120d3cc7  gcc/tree-ssa-operands.h
! a976730172eb9a08c601510c1bf01a5a  gcc/tree-ssa-phiopt.cc
  0864f59d85045caee0a643f82fa6d20c  gcc/tree-ssa-phiprop.cc
! fcba91260f7125e0b7476810b2adceea  gcc/tree-ssa-pre.cc
! de952b75590b805f05f013f77904e23b  gcc/tree-ssa-propagate.cc
  299c5d8dabcb4a4d30bab51fbedc4e68  gcc/tree-ssa-propagate.h
! 33b23ac0296e477b051caad07dcdfd79  gcc/tree-ssa-reassoc.cc
  258492cd7ef04be49374ea1e670f3b5b  gcc/tree-ssa-reassoc.h
! d34b2911339d018e0b5118b19ae66533  gcc/tree-ssa-sccvn.cc
  4b05103d4706bf37cd0bc9f018b40965  gcc/tree-ssa-sccvn.h
! 02e5eca7e4a68fce9ad832750594c313  gcc/tree-ssa-scopedtables.cc
  aa25adbcb019dd38a66ce237df54ae1d  gcc/tree-ssa-scopedtables.h
  1565dc0d975d174e5d53e4889ab223e3  gcc/tree-ssa-sink.cc
! d9c76a3a3d805aab056b3d832d10285c  gcc/tree-ssa-strlen.cc
  817cd7b593b9ca11ac7464ee683d8f98  gcc/tree-ssa-strlen.h
  bd67579773d2e2f4ce02d41953702750  gcc/tree-ssa-structalias.cc
  8236d4d91b8701a8daadc2f8a12d4752  gcc/tree-ssa-tail-merge.cc
  18ba2469cfdfbd297fe2b0120e69a84c  gcc/tree-ssa-ter.cc
  3094df71c80e187685e4e97e428d64f4  gcc/tree-ssa-ter.h
! a4df6ac315a465c83784de448bd15a67  gcc/tree-ssa-threadbackward.cc
  33619340feba718aa0da2ca4ed04a573  gcc/tree-ssa-threadedge.cc
  cd9ecd37945746b6458a78b083cbe1b1  gcc/tree-ssa-threadedge.h
  39e65868f1dbc92a93a03e6b8245660a  gcc/tree-ssa-threadupdate.cc
*************** af4c63760c432f66b1c6c8e7e7666699  gcc/tr
*** 117843,117866 ****
  629c2d175128efb2809d4ed7e08f1a18  gcc/tree-streamer-out.cc
  22cddc57dea71a3e5c57e033b6f86476  gcc/tree-streamer.cc
  6714826bb9cd5f171a08cbabcb1da8e6  gcc/tree-streamer.h
! 899a002f8aec509c2457b02d6c7634d9  gcc/tree-switch-conversion.cc
  834999e1b44b915632e773927cdaa397  gcc/tree-switch-conversion.h
! 4395c5694fb8d6adf7c34f1dc685bc7c  gcc/tree-tailcall.cc
  61a9b445a765d6b6d497bc7273d05f64  gcc/tree-vect-data-refs.cc
! 7ac587d2dd45a9437f9daa1b6409dca9  gcc/tree-vect-generic.cc
  cc0bdf3f684b251509b8552d2d8549a3  gcc/tree-vect-loop-manip.cc
! a41c3fb8911461149186ff901cf31d4a  gcc/tree-vect-loop.cc
! 77240c08cea454c2d4a449206f7930c3  gcc/tree-vect-patterns.cc
! baa70369c21f662d5e61d1296052d231  gcc/tree-vect-slp-patterns.cc
! ab9bcf6e6a2121e20b6e65fff17d0f2e  gcc/tree-vect-slp.cc
! c095caa5b1ced0e7d097e6a525709865  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
  6a5457c324d4279acbd82f147f1dd823  gcc/tree-vectorizer.cc
! f5c90b57853064f13fc6868527a2ea7e  gcc/tree-vectorizer.h
! cb2defb55935eac3f24944ba204230f0  gcc/tree-vrp.cc
  a19edad681d27130bd2a0d83768ac946  gcc/tree-vrp.h
! d5ca524138d04514e07eeb06df2087cd  gcc/tree.cc
  db4e97cc6f33c2fe3aafe8676fb649a0  gcc/tree.def
  6a9ff2eecdb45074d05c5f46862dca43  gcc/tree.h
  b642c83968cda285afc700da2fb276d5  gcc/treestruct.def
--- 118512,118535 ----
  629c2d175128efb2809d4ed7e08f1a18  gcc/tree-streamer-out.cc
  22cddc57dea71a3e5c57e033b6f86476  gcc/tree-streamer.cc
  6714826bb9cd5f171a08cbabcb1da8e6  gcc/tree-streamer.h
! 5148cc6629c09aeb3927463d7cded67c  gcc/tree-switch-conversion.cc
  834999e1b44b915632e773927cdaa397  gcc/tree-switch-conversion.h
! cac3afe79bbadb8c304cebff78dbb3df  gcc/tree-tailcall.cc
  61a9b445a765d6b6d497bc7273d05f64  gcc/tree-vect-data-refs.cc
! cc4b6ecb376a4980bfd08a185c104993  gcc/tree-vect-generic.cc
  cc0bdf3f684b251509b8552d2d8549a3  gcc/tree-vect-loop-manip.cc
! 50b45429288c6e81f0bead093f403d8f  gcc/tree-vect-loop.cc
! 294fdaba99fd4fb48e7317235676a90b  gcc/tree-vect-patterns.cc
! 416ed4e13d1732162428324c31e142e5  gcc/tree-vect-slp-patterns.cc
! c417ef312ca64d3d6d752dc4dfbbc195  gcc/tree-vect-slp.cc
! c391a866336d7eb20bb88915dfda5f2b  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
  6a5457c324d4279acbd82f147f1dd823  gcc/tree-vectorizer.cc
! 0c9a7ff7e853c808c7e3b0f86864c519  gcc/tree-vectorizer.h
! 983065c230493e568be0a1933889b583  gcc/tree-vrp.cc
  a19edad681d27130bd2a0d83768ac946  gcc/tree-vrp.h
! e46786780046842137f0df52270989f8  gcc/tree.cc
  db4e97cc6f33c2fe3aafe8676fb649a0  gcc/tree.def
  6a9ff2eecdb45074d05c5f46862dca43  gcc/tree.h
  b642c83968cda285afc700da2fb276d5  gcc/treestruct.def
*************** df85736a75a28f2d961a417c6edbbeeb  gcc/va
*** 117891,117897 ****
  f2c2516eabc3b606655ae57885f6119a  gcc/value-range.h
  549819b3080f1e267be1a0eddd4ba81e  gcc/value-relation.cc
  9ecb4941bf4f8280d045adf518c3a64d  gcc/value-relation.h
! cba4500c3637e1d36913b20f1700d34e  gcc/var-tracking.cc
  8c55316e80e8121cbbb962ad5aa4610e  gcc/varasm.cc
  69f8e035a8548037bc8c8f7f854253c4  gcc/varasm.h
  e96ee31ef62fd5574909f9328fb29af9  gcc/varpool.cc
--- 118560,118566 ----
  f2c2516eabc3b606655ae57885f6119a  gcc/value-range.h
  549819b3080f1e267be1a0eddd4ba81e  gcc/value-relation.cc
  9ecb4941bf4f8280d045adf518c3a64d  gcc/value-relation.h
! e6b2af8aba277661240b816f67505f0a  gcc/var-tracking.cc
  8c55316e80e8121cbbb962ad5aa4610e  gcc/varasm.cc
  69f8e035a8548037bc8c8f7f854253c4  gcc/varasm.h
  e96ee31ef62fd5574909f9328fb29af9  gcc/varpool.cc
*************** d9c4840a497d0e1f2063865edafe6e97  gcc/ve
*** 117902,117908 ****
  54a3885ae2d326266cc13ab447394d8f  gcc/vector-builder.h
  40fec2b7bbea0b654d0704244caa4e9c  gcc/vmsdbg.h
  c2784afc7476e44bc70100f7c350e07b  gcc/vmsdbgout.cc
! 4a87100e64ed49d643e90ef831006a50  gcc/vr-values.cc
  0901703123c4198bb16fc8076912bd2e  gcc/vr-values.h
  9ce284cb128dc6f9cadddec86a09bb4a  gcc/vtable-verify.cc
  cdaf5a05f59e5ac25581747f6a7b4fe9  gcc/vtable-verify.h
--- 118571,118577 ----
  54a3885ae2d326266cc13ab447394d8f  gcc/vector-builder.h
  40fec2b7bbea0b654d0704244caa4e9c  gcc/vmsdbg.h
  c2784afc7476e44bc70100f7c350e07b  gcc/vmsdbgout.cc
! 887cde06475b45e050c7d86436e6fdd4  gcc/vr-values.cc
  0901703123c4198bb16fc8076912bd2e  gcc/vr-values.h
  9ce284cb128dc6f9cadddec86a09bb4a  gcc/vtable-verify.cc
  cdaf5a05f59e5ac25581747f6a7b4fe9  gcc/vtable-verify.h
*************** e3fa3f45e512510e34655f420629cbd8  gcc/wa
*** 117914,117924 ****
  88adca0d34004d3f3c8775540086085e  gcc/wide-int.cc
  4fc8c5d5a4dbeb10715da964977f1c81  gcc/wide-int.h
  818a3384157138e5a3f6fbc6368d2b11  gcc/xcoff.h
! 86176175b63824354a6deb07f6fb101b  gnattools/ChangeLog
  d8c97efb6bf9731cb774fb1b1b60a266  gnattools/Makefile.in
  813c7b1a065693bfcbc0b340b658fa5a  gnattools/configure
  b76be6d8444e427c06e4f182aa4a6a18  gnattools/configure.ac
! 90a22df00478b856182fa10f992b0be2  gotools/ChangeLog
  d0cd4560ae9ca95137adac2f96734dfc  gotools/Makefile.am
  a9620fe98e0c9bf3a5beee26347a0a27  gotools/Makefile.in
  7e23031e2e274aaa07b61c1e8f18dc99  gotools/README
--- 118583,118593 ----
  88adca0d34004d3f3c8775540086085e  gcc/wide-int.cc
  4fc8c5d5a4dbeb10715da964977f1c81  gcc/wide-int.h
  818a3384157138e5a3f6fbc6368d2b11  gcc/xcoff.h
! a9d5c6be5c0d372c4d7fa59173113b63  gnattools/ChangeLog
  d8c97efb6bf9731cb774fb1b1b60a266  gnattools/Makefile.in
  813c7b1a065693bfcbc0b340b658fa5a  gnattools/configure
  b76be6d8444e427c06e4f182aa4a6a18  gnattools/configure.ac
! 2739dbe1b41a4c0013e71b7f2ce9a55b  gotools/ChangeLog
  d0cd4560ae9ca95137adac2f96734dfc  gotools/Makefile.am
  a9620fe98e0c9bf3a5beee26347a0a27  gotools/Makefile.in
  7e23031e2e274aaa07b61c1e8f18dc99  gotools/README
*************** c4e8176c1964a5ebe0a55900f2141299  gotool
*** 117929,117935 ****
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! 542f8f9bb46e56403c56935bc38cfc6e  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
  44b123c52a2755c9e6bf43ec0c33ae49  include/ansidecl.h
--- 118598,118604 ----
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! 785e63eceb5c9d3d3e0c1e733671703f  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
  44b123c52a2755c9e6bf43ec0c33ae49  include/ansidecl.h
*************** c7399bbb7eadd31d7cd04991cd79c238  includ
*** 117983,117994 ****
  7127faa31e0d81ec43716b364e6b9577  include/xtensa-config.h
  8f560be172a91474b12b0b99071f2f02  include/xtensa-dynconfig.h
  361482dd6b5b5eb7090fff3986fba68a  install-sh
! 9c4dbd8f1a68dad455d605c3f24fd122  libada/ChangeLog
  66b34d64be399ddc98db2b4a844f1911  libada/Makefile.in
  46d6319e8ffc7eabf27cbecd6141a912  libada/configure
  c01f38de8270d558b8d3ecac839d3bbf  libada/configure.ac
  46d3fe6da7a771cc2d5420c4137a6861  libatomic/.gitignore
! 96918bf036e38d558876be76cdfb3c9d  libatomic/ChangeLog
  71c1b6c36a41008494bf13a4a0863768  libatomic/Makefile.am
  4edf5a5514d9eb3764c1536ce393dfb2  libatomic/Makefile.in
  04a8eb275561484cf0d6f8c459a38177  libatomic/acinclude.m4
--- 118652,118663 ----
  7127faa31e0d81ec43716b364e6b9577  include/xtensa-config.h
  8f560be172a91474b12b0b99071f2f02  include/xtensa-dynconfig.h
  361482dd6b5b5eb7090fff3986fba68a  install-sh
! 95966273dfc844013aedafc082a8851c  libada/ChangeLog
  66b34d64be399ddc98db2b4a844f1911  libada/Makefile.in
  46d6319e8ffc7eabf27cbecd6141a912  libada/configure
  c01f38de8270d558b8d3ecac839d3bbf  libada/configure.ac
  46d3fe6da7a771cc2d5420c4137a6861  libatomic/.gitignore
! 20ca2d558d29de89e7967a497bca1f8a  libatomic/ChangeLog
  71c1b6c36a41008494bf13a4a0863768  libatomic/Makefile.am
  4edf5a5514d9eb3764c1536ce393dfb2  libatomic/Makefile.in
  04a8eb275561484cf0d6f8c459a38177  libatomic/acinclude.m4
*************** c03a072efac9b30f8f8429ac52fd246b  libato
*** 118085,118091 ****
  8a7308fda7ed1543cb9e3be0f8e47bce  libatomic/testsuite/libatomic.c/atomic-store-5.c
  40618200985a15bcba64f871863da498  libatomic/testsuite/libatomic.c/c.exp
  97b0c9cdfcb733664bdf4efe0f5dc449  libatomic/testsuite/libatomic.c/generic-2.c
! e81dc4e18ea68829705eb87ac1cc9138  libbacktrace/ChangeLog
  eb3a88b53140eb234a99a4b3a55e56bf  libbacktrace/ChangeLog.jit
  d8ded612c0b12538d827f766c2ac1f16  libbacktrace/Makefile.am
  069039740ab2b76bff90e7ff6c92e85d  libbacktrace/Makefile.in
--- 118754,118760 ----
  8a7308fda7ed1543cb9e3be0f8e47bce  libatomic/testsuite/libatomic.c/atomic-store-5.c
  40618200985a15bcba64f871863da498  libatomic/testsuite/libatomic.c/c.exp
  97b0c9cdfcb733664bdf4efe0f5dc449  libatomic/testsuite/libatomic.c/generic-2.c
! 1bbac843b5d8865e112dd2c5cf0f35b0  libbacktrace/ChangeLog
  eb3a88b53140eb234a99a4b3a55e56bf  libbacktrace/ChangeLog.jit
  d8ded612c0b12538d827f766c2ac1f16  libbacktrace/Makefile.am
  069039740ab2b76bff90e7ff6c92e85d  libbacktrace/Makefile.in
*************** c0fa0a593b3a9b1ffd2f84bc40a22980  libbac
*** 118134,118140 ****
  69e738d1cd72baaeda073609f133f005  libbacktrace/xztest.c
  4d7dab09ddbe953244044c8a60434ad9  libbacktrace/zstdtest.c
  08e64385c7a2a6f5a8d0e25f4c237e51  libbacktrace/ztest.c
! 7b173db7242a13a41417d3900a51dab7  libcc1/ChangeLog
  e396ef427fc1a75d765f69ea2b48aef9  libcc1/Makefile.am
  0c197f689319d609a20206994cd5eb7e  libcc1/Makefile.in
  b39668f1b706dbfe7203b3cfa277b792  libcc1/aclocal.m4
--- 118803,118809 ----
  69e738d1cd72baaeda073609f133f005  libbacktrace/xztest.c
  4d7dab09ddbe953244044c8a60434ad9  libbacktrace/zstdtest.c
  08e64385c7a2a6f5a8d0e25f4c237e51  libbacktrace/ztest.c
! e83b60361dd58f8c0695d69243c6487d  libcc1/ChangeLog
  e396ef427fc1a75d765f69ea2b48aef9  libcc1/Makefile.am
  0c197f689319d609a20206994cd5eb7e  libcc1/Makefile.in
  b39668f1b706dbfe7203b3cfa277b792  libcc1/aclocal.m4
*************** a3bae9c01d333f7db29d4511561a7d00  libcc1
*** 118171,118184 ****
  8e32b4f309146e8842db7a077d77be28  libcody/CMakeLists.txt
  c96a56ec7f0400e30e99a9aa445e0425  libcody/CODING.md
  b5243c8c76fc965a409394a30679e613  libcody/CONTRIB.md
! 5f49e0df6f35e08d415c29a22477a588  libcody/ChangeLog
  86d3f3a95c324c9479bd8986968f4327  libcody/LICENSE
  55625eec19bfdb5cee37f8c7ae4b796b  libcody/Makefile.in
  ca1c6fe3df5427016005ce753c73d454  libcody/README.md
  99ad81d536fef63b80b7f776f0dec53c  libcody/buffer.cc
! 69dd1db758b0ea369d20d7331d889ef5  libcody/client.cc
  40072537e3589ff033129e9d5aa10660  libcody/cmake/libcody-config-ix.cmake
! 521e6cc4ebd40d0fbc4ad2fbd8c8063b  libcody/cody.hh
  b7630b2f7e3997152972e0d3f86af193  libcody/config.h.in
  a003d1057213ab79099f7bdbea631d9e  libcody/config.m4
  b1c5b142e9fe28fd473595d745695db1  libcody/configure
--- 118840,118853 ----
  8e32b4f309146e8842db7a077d77be28  libcody/CMakeLists.txt
  c96a56ec7f0400e30e99a9aa445e0425  libcody/CODING.md
  b5243c8c76fc965a409394a30679e613  libcody/CONTRIB.md
! 9ef597ed3cb1180f533113b1e11058c6  libcody/ChangeLog
  86d3f3a95c324c9479bd8986968f4327  libcody/LICENSE
  55625eec19bfdb5cee37f8c7ae4b796b  libcody/Makefile.in
  ca1c6fe3df5427016005ce753c73d454  libcody/README.md
  99ad81d536fef63b80b7f776f0dec53c  libcody/buffer.cc
! 6085d20f25e5c2f4809b76fc28261fb5  libcody/client.cc
  40072537e3589ff033129e9d5aa10660  libcody/cmake/libcody-config-ix.cmake
! fbd197f7a8c4380bf81aa2ca35950438  libcody/cody.hh
  b7630b2f7e3997152972e0d3f86af193  libcody/config.h.in
  a003d1057213ab79099f7bdbea631d9e  libcody/config.m4
  b1c5b142e9fe28fd473595d745695db1  libcody/configure
*************** b7f8907c165e46ed56efaa23a2c2a570  libcod
*** 118189,118196 ****
  cffdeae41b78da05839b193e90188f55  libcody/netserver.cc
  6419dfc879387358e95288142e569914  libcody/packet.cc
  688ece05c8b9d378b3df186808162e76  libcody/resolver.cc
! b1f3850fc5ac62999d1e124aa6f76531  libcody/server.cc
! 23a2475b88f7e52aa38d9b2fc4feb983  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
  e80a909ca87015a009bee9588bb84a64  libcpp/Makefile.in
  b07c7863f0e7ad4e6a0915d66fc9e582  libcpp/aclocal.m4
--- 118858,118865 ----
  cffdeae41b78da05839b193e90188f55  libcody/netserver.cc
  6419dfc879387358e95288142e569914  libcody/packet.cc
  688ece05c8b9d378b3df186808162e76  libcody/resolver.cc
! c94add0032978604acf65591bb86d2d6  libcody/server.cc
! ce42616a5aa61f4a87d45868adf90ecb  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
  e80a909ca87015a009bee9588bb84a64  libcpp/Makefile.in
  b07c7863f0e7ad4e6a0915d66fc9e582  libcpp/aclocal.m4
*************** b07c7863f0e7ad4e6a0915d66fc9e582  libcpp
*** 118202,118208 ****
  ea784e8b4e934b5966c1fa9ff3767729  libcpp/directives.cc
  02aef9903cbb33fe0e3146b5a9af1332  libcpp/errors.cc
  edcd9f141150c148f5c5c9584a446394  libcpp/expr.cc
! ce74c78c2cb27bcdeac8a9b0400712cd  libcpp/files.cc
  97faf9e969cb255f2a2a91e0e7ac3c32  libcpp/generated_cpp_wcwidth.h
  c496c50691c37464e0aacc985cc3ab1e  libcpp/identifiers.cc
  c6d289f358b723bb4db062b5dbb25cb9  libcpp/include/cpplib.h
--- 118871,118877 ----
  ea784e8b4e934b5966c1fa9ff3767729  libcpp/directives.cc
  02aef9903cbb33fe0e3146b5a9af1332  libcpp/errors.cc
  edcd9f141150c148f5c5c9584a446394  libcpp/expr.cc
! f768c7265561a73fb4219db736d385ea  libcpp/files.cc
  97faf9e969cb255f2a2a91e0e7ac3c32  libcpp/generated_cpp_wcwidth.h
  c496c50691c37464e0aacc985cc3ab1e  libcpp/identifiers.cc
  c6d289f358b723bb4db062b5dbb25cb9  libcpp/include/cpplib.h
*************** ac88522f7fec46badcd2623d11a4b61e  libcpp
*** 118213,118239 ****
  d516a30568fd33a5e69be4374f27812f  libcpp/include/symtab.h
  3f05e522dd9325c9807fc4f662533f7b  libcpp/init.cc
  a0d37c297f3d462529b502a4e1bd2378  libcpp/internal.h
! 14cdb8c198f4e4c14696bfbf98d11563  libcpp/lex.cc
  afb53d91467e0952508a757742351dd6  libcpp/line-map.cc
  46a07100f95f5e354c7e25cd19d26884  libcpp/location-example.txt
  9ca45c4c9e1829d625f4cc03b82debd1  libcpp/macro.cc
  b4c085899eca6fc0e5ddc81d15fc2e67  libcpp/makeucnid.cc
  f6299826ad91c3ae3e8be64e87bb7d20  libcpp/makeuname2c.cc
! 15ffbe55bf3e5cc75e66cfb1125773a8  libcpp/mkdeps.cc
  893a85ab3fc4806dc0c614afce9b7110  libcpp/pch.cc
! 45105001df77838b6bd31a5734b42d53  libcpp/po/ChangeLog
! 768453cca0d8c0e2666a269e0aff862b  libcpp/po/be.gmo
  5a131bbc2e718f87b148455d3b557800  libcpp/po/be.po
! 0b50e18ae82bca590e5c3f268b1aa40c  libcpp/po/ca.gmo
  4c220e08630ab2f3bc879ac1f37815d4  libcpp/po/ca.po
  bded59a97064870a8660599effc8a029  libcpp/po/cpplib.pot
  c19c4e8ad4e026281473519e17cd2205  libcpp/po/da.gmo
  380ca47053203f712d3d7c076a7fd036  libcpp/po/da.po
  767f1355d400af96d0a94c3e785a0003  libcpp/po/de.gmo
  fbf3462a03090944a65cdf86782c338c  libcpp/po/de.po
! 052839594c5d53aef4793e6e5a99c568  libcpp/po/el.gmo
  5d323f2c7ede1bdd541a0ef4b85bd9e8  libcpp/po/el.po
! d028a3bc1fb46d3f5e6a778d9653baf6  libcpp/po/eo.gmo
  edf308ffff09a33c6bedca74f8111249  libcpp/po/eo.po
  a986ef81af5e76de49d9931c7f0d5e5f  libcpp/po/es.gmo
  0e068d42c8afe63e50cd75160bed69bc  libcpp/po/es.po
--- 118882,118908 ----
  d516a30568fd33a5e69be4374f27812f  libcpp/include/symtab.h
  3f05e522dd9325c9807fc4f662533f7b  libcpp/init.cc
  a0d37c297f3d462529b502a4e1bd2378  libcpp/internal.h
! bb09fd4a3abcc96005d39b7733c1c1c9  libcpp/lex.cc
  afb53d91467e0952508a757742351dd6  libcpp/line-map.cc
  46a07100f95f5e354c7e25cd19d26884  libcpp/location-example.txt
  9ca45c4c9e1829d625f4cc03b82debd1  libcpp/macro.cc
  b4c085899eca6fc0e5ddc81d15fc2e67  libcpp/makeucnid.cc
  f6299826ad91c3ae3e8be64e87bb7d20  libcpp/makeuname2c.cc
! 7c1ec683f5224835368091f555f4ef75  libcpp/mkdeps.cc
  893a85ab3fc4806dc0c614afce9b7110  libcpp/pch.cc
! 8a90a28b53a1ed0f4face893c1429881  libcpp/po/ChangeLog
! f8911d7159af7a85a3b79336f7013869  libcpp/po/be.gmo
  5a131bbc2e718f87b148455d3b557800  libcpp/po/be.po
! c922d6fd1a96348b403c4095fefee166  libcpp/po/ca.gmo
  4c220e08630ab2f3bc879ac1f37815d4  libcpp/po/ca.po
  bded59a97064870a8660599effc8a029  libcpp/po/cpplib.pot
  c19c4e8ad4e026281473519e17cd2205  libcpp/po/da.gmo
  380ca47053203f712d3d7c076a7fd036  libcpp/po/da.po
  767f1355d400af96d0a94c3e785a0003  libcpp/po/de.gmo
  fbf3462a03090944a65cdf86782c338c  libcpp/po/de.po
! 0d573f89f39c3aa3ae8b85aaf00259e6  libcpp/po/el.gmo
  5d323f2c7ede1bdd541a0ef4b85bd9e8  libcpp/po/el.po
! 899863986728bfa3f7e9148ed619eed9  libcpp/po/eo.gmo
  edf308ffff09a33c6bedca74f8111249  libcpp/po/eo.po
  a986ef81af5e76de49d9931c7f0d5e5f  libcpp/po/es.gmo
  0e068d42c8afe63e50cd75160bed69bc  libcpp/po/es.po
*************** a986ef81af5e76de49d9931c7f0d5e5f  libcpp
*** 118241,118252 ****
  2bb109127244c1cc558247bf6f5358e1  libcpp/po/fi.po
  364ad84c499d98c5ee94f66f41f31348  libcpp/po/fr.gmo
  0f28f4d33a719388d2ce6ca97754c7c9  libcpp/po/fr.po
! 15eb5c97528146388a040361ac5000dc  libcpp/po/id.gmo
  f67dc849cdc1673bf8b9ab07908442b6  libcpp/po/id.po
  287138cc8161702bd8587936cdc0549a  libcpp/po/ja.gmo
  bfac1dfc0388188d269df5ed9038118e  libcpp/po/ja.po
! 44daae27236f8eebf987cd2272952398  libcpp/po/ka.gmo
! e13b22e52701d595c8621cb228f76700  libcpp/po/ka.po
  134eec119014d04e0ca336bfdd15dfbc  libcpp/po/nl.gmo
  342253256c10e4b81c6ca4fa6b714e02  libcpp/po/nl.po
  5cde548c01395247f98d86b31532606d  libcpp/po/pt_BR.gmo
--- 118910,118921 ----
  2bb109127244c1cc558247bf6f5358e1  libcpp/po/fi.po
  364ad84c499d98c5ee94f66f41f31348  libcpp/po/fr.gmo
  0f28f4d33a719388d2ce6ca97754c7c9  libcpp/po/fr.po
! a5c8eed089f5aae2fed515ddfda9e7dc  libcpp/po/id.gmo
  f67dc849cdc1673bf8b9ab07908442b6  libcpp/po/id.po
  287138cc8161702bd8587936cdc0549a  libcpp/po/ja.gmo
  bfac1dfc0388188d269df5ed9038118e  libcpp/po/ja.po
! a08b8ef056191b15aede78fb933ddd54  libcpp/po/ka.gmo
! 036cf21a1623fe1d59be753ba2b5af60  libcpp/po/ka.po
  134eec119014d04e0ca336bfdd15dfbc  libcpp/po/nl.gmo
  342253256c10e4b81c6ca4fa6b714e02  libcpp/po/nl.po
  5cde548c01395247f98d86b31532606d  libcpp/po/pt_BR.gmo
*************** ace14cc70e336c06007f0cf08d5edefa  libcpp
*** 118265,118271 ****
  3b866f248ceead26e4432280c9c89b0c  libcpp/po/uk.po
  5e38d6bb51aaf932cdb57a47194d36a6  libcpp/po/vi.gmo
  bc44b49c8cddddf9a15ee43df44e326e  libcpp/po/vi.po
! f639677b9a6c2cd7b5ace7a95f3ba445  libcpp/po/zh_CN.gmo
  3a9e8d5257306de129c16d46acb33af4  libcpp/po/zh_CN.po
  ccd4a83e370bfc57961c8aa17c69956b  libcpp/po/zh_TW.gmo
  d2d46ae8c53a803bc5e8064534efc539  libcpp/po/zh_TW.po
--- 118934,118940 ----
  3b866f248ceead26e4432280c9c89b0c  libcpp/po/uk.po
  5e38d6bb51aaf932cdb57a47194d36a6  libcpp/po/vi.gmo
  bc44b49c8cddddf9a15ee43df44e326e  libcpp/po/vi.po
! 44bf89bfef337346efbea5ee6cc9a0e3  libcpp/po/zh_CN.gmo
  3a9e8d5257306de129c16d46acb33af4  libcpp/po/zh_CN.po
  ccd4a83e370bfc57961c8aa17c69956b  libcpp/po/zh_TW.gmo
  d2d46ae8c53a803bc5e8064534efc539  libcpp/po/zh_TW.po
*************** decade758397edc223aca3be57c768ad  libcpp
*** 118277,118283 ****
  1933481613c4f7407662993c6089cf72  libcpp/ucnid.tab
  0da0352ccc865ea7f669ddaaa85a1640  libcpp/uname2c.h
  a6c2b3de06c7424706b16f4c206396a1  libdecnumber/.gitignore
! 127b78115291039b4b3834a93ee028de  libdecnumber/ChangeLog
  2bd831b17997584e38305782cebe6948  libdecnumber/ChangeLog.jit
  9f6ee29a7a652a85e55a84de49ff996b  libdecnumber/Makefile.in
  2a70099a79e40a57a666d5430a5e2529  libdecnumber/aclocal.m4
--- 118946,118952 ----
  1933481613c4f7407662993c6089cf72  libcpp/ucnid.tab
  0da0352ccc865ea7f669ddaaa85a1640  libcpp/uname2c.h
  a6c2b3de06c7424706b16f4c206396a1  libdecnumber/.gitignore
! 9d4609f6161b73e498102c80e253afc6  libdecnumber/ChangeLog
  2bd831b17997584e38305782cebe6948  libdecnumber/ChangeLog.jit
  9f6ee29a7a652a85e55a84de49ff996b  libdecnumber/Makefile.in
  2a70099a79e40a57a666d5430a5e2529  libdecnumber/aclocal.m4
*************** a97c47969dfc92a7666dfe3c2e1e1448  libdec
*** 118341,118347 ****
  beb433e3e74659ef6595bb7dc6760d90  libdecnumber/dpd/decimal64.h
  0f6db29710e7075c2fd62bc4478b3b8d  libdecnumber/dpd/decimal64Symbols.h
  055606b47e85369c5d003f6e3a1b657e  libffi/.gitattributes
! c6e6b7204d1960a3044622a4f927c4c7  libffi/ChangeLog
  0e38ead823643c45765e5fe55e7ab16b  libffi/ChangeLog.libffi
  fbbc216bc25d759a72ea3e6d734af56b  libffi/ChangeLog.libgcj
  d946d2b97454ad50a1dbfbf48923c5be  libffi/ChangeLog.v1
--- 119010,119016 ----
  beb433e3e74659ef6595bb7dc6760d90  libdecnumber/dpd/decimal64.h
  0f6db29710e7075c2fd62bc4478b3b8d  libdecnumber/dpd/decimal64Symbols.h
  055606b47e85369c5d003f6e3a1b657e  libffi/.gitattributes
! 3dd1929ae0890e748913dcd8e569247e  libffi/ChangeLog
  0e38ead823643c45765e5fe55e7ab16b  libffi/ChangeLog.libffi
  fbbc216bc25d759a72ea3e6d734af56b  libffi/ChangeLog.libgcj
  d946d2b97454ad50a1dbfbf48923c5be  libffi/ChangeLog.v1
*************** b129629db06d710e4bc7ff5b8719756a  libffi
*** 118360,118366 ****
  0c9310ab4da9ff4d0d8aa37fa8fcb0be  libffi/configure.ac
  54389f155bf929aa9429f225f0dbbaab  libffi/configure.host
  bad91ff01547ce79fe537211f4763ac0  libffi/doc/Makefile.am
! aa80c390acbb9137366229096a1c3845  libffi/doc/libffi.info
  db28be3951c18d6db6e90f7e612bc67b  libffi/doc/libffi.texi
  5919fb480c65fe4ba9e8d97536e528b2  libffi/doc/version.texi
  ea125d6ff0b3d20372a1556f82ca6a05  libffi/fficonfig.h.in
--- 119029,119035 ----
  0c9310ab4da9ff4d0d8aa37fa8fcb0be  libffi/configure.ac
  54389f155bf929aa9429f225f0dbbaab  libffi/configure.host
  bad91ff01547ce79fe537211f4763ac0  libffi/doc/Makefile.am
! c9f5f3eb2deb219f7587d6d862f6fd3e  libffi/doc/libffi.info
  db28be3951c18d6db6e90f7e612bc67b  libffi/doc/libffi.texi
  5919fb480c65fe4ba9e8d97536e528b2  libffi/doc/version.texi
  ea125d6ff0b3d20372a1556f82ca6a05  libffi/fficonfig.h.in
*************** a3eb5dee2788fe0a6c42502ba658eddd  libffi
*** 118738,118745 ****
  0f3c94e520870e194cf525de7ec404dc  libffi/testsuite/libffi.go/ffitest.h
  6cfb66c1c00023abb2c2276d85f16e77  libffi/testsuite/libffi.go/go.exp
  189dc193fd0e627a2d55b2e84871edc5  libffi/testsuite/libffi.go/static-chain.h
! 5bb0f726ae7ef162284d7dc141c17e9e  libgcc/ChangeLog
! b1229d68a3a67c6e30daf30379e7bb8f  libgcc/Makefile.in
  0f39724f440135be7a62bbd4e67e6840  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
  9e6d8ec4ff0470579444dbe0a1287f05  libgcc/config/aarch64/__aarch64_have_sme.c
--- 119407,119414 ----
  0f3c94e520870e194cf525de7ec404dc  libffi/testsuite/libffi.go/ffitest.h
  6cfb66c1c00023abb2c2276d85f16e77  libffi/testsuite/libffi.go/go.exp
  189dc193fd0e627a2d55b2e84871edc5  libffi/testsuite/libffi.go/static-chain.h
! 06f5e9209fe3657a4a95aa7a13c51cfa  libgcc/ChangeLog
! beb78e5f6395b748fd8cdc14953c2e01  libgcc/Makefile.in
  0f39724f440135be7a62bbd4e67e6840  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
  9e6d8ec4ff0470579444dbe0a1287f05  libgcc/config/aarch64/__aarch64_have_sme.c
*************** cc057a7bb2bda2a1ca4a54f52ae6347e  libgcc
*** 118759,118771 ****
  a077f95c64de11e67e5d9d909ec45b8c  libgcc/config/aarch64/heap-trampoline.c
  d0d4af45fffe18f866536603e6b369ec  libgcc/config/aarch64/libgcc-sme.ver
  dff4f63f801860d329f3c62f135233d4  libgcc/config/aarch64/libgcc-softfp.ver
! fff6214d8f727f1416ce009f15cc5f35  libgcc/config/aarch64/linux-unwind.h
  d09ef2fe232dae56563f13d2b6da6735  libgcc/config/aarch64/lse-init.c
  b2e6d3e9e2af6d58aa7d4238e49990fa  libgcc/config/aarch64/lse.S
  13e78e11bd6d056fd80598bac695009c  libgcc/config/aarch64/sfp-exceptions.c
  cc33fb6e397b63312a061b58f7bfa444  libgcc/config/aarch64/sfp-machine.h
  f56ac8f274604cf79ef262d4057d5987  libgcc/config/aarch64/sync-cache.c
! be71a3964258dd4b0434ff3c68b4be1d  libgcc/config/aarch64/t-aarch64
  5711e1b4b7c7ceabdfb54e3632fcd89c  libgcc/config/aarch64/t-heap-trampoline
  f5b7f4fb8a38b4ab16da22e90fdb1343  libgcc/config/aarch64/t-lse
  c6e6cbb6c43ce130d0d7f7f64a205fd8  libgcc/config/aarch64/t-mingw
--- 119428,119440 ----
  a077f95c64de11e67e5d9d909ec45b8c  libgcc/config/aarch64/heap-trampoline.c
  d0d4af45fffe18f866536603e6b369ec  libgcc/config/aarch64/libgcc-sme.ver
  dff4f63f801860d329f3c62f135233d4  libgcc/config/aarch64/libgcc-softfp.ver
! fe34a32aa13f1a6236c7a5ebc6eb2e96  libgcc/config/aarch64/linux-unwind.h
  d09ef2fe232dae56563f13d2b6da6735  libgcc/config/aarch64/lse-init.c
  b2e6d3e9e2af6d58aa7d4238e49990fa  libgcc/config/aarch64/lse.S
  13e78e11bd6d056fd80598bac695009c  libgcc/config/aarch64/sfp-exceptions.c
  cc33fb6e397b63312a061b58f7bfa444  libgcc/config/aarch64/sfp-machine.h
  f56ac8f274604cf79ef262d4057d5987  libgcc/config/aarch64/sync-cache.c
! 7e2cd63ccfd0af5494f9cbf73eba8058  libgcc/config/aarch64/t-aarch64
  5711e1b4b7c7ceabdfb54e3632fcd89c  libgcc/config/aarch64/t-heap-trampoline
  f5b7f4fb8a38b4ab16da22e90fdb1343  libgcc/config/aarch64/t-lse
  c6e6cbb6c43ce130d0d7f7f64a205fd8  libgcc/config/aarch64/t-mingw
*************** b38cbc5c54988720ae33d36a2ff78fd3  libgcc
*** 118884,118903 ****
  5ab16e6eec7523296afc7c8bfee38565  libgcc/config/avr/lib1funcs.S
  622f81485f02d0eac2caaafa7d3a2fd1  libgcc/config/avr/lib2-object.mk
  e6604d88f15777c25f5d887ca1f9148c  libgcc/config/avr/lib2funcs.c
! 7ea0bb5e33f184a9e54a72e3c121a20d  libgcc/config/avr/libf7/ChangeLog
  dd74908d3b47db38a7aaa2e9f130f20f  libgcc/config/avr/libf7/asm-defs.h
! a5efc328f8686b92830ca73ea0b4d047  libgcc/config/avr/libf7/f7-renames.h
! 9bc93ce2b7213ad3cabff898a2d31774  libgcc/config/avr/libf7/f7-wraps.h
  b9901623ec29c1c4dd98d6fae040518c  libgcc/config/avr/libf7/f7renames.sh
  76d89fdf12c2153d7cf3d12c025a8713  libgcc/config/avr/libf7/f7wraps.sh
  b77774db3e278767f77ced55b8e1fe89  libgcc/config/avr/libf7/libf7-array.def
  5d9def53110ec07e8f29e66d593d758f  libgcc/config/avr/libf7/libf7-asm-object.mk
! ec9b30a882ac6a7401555a33253eb439  libgcc/config/avr/libf7/libf7-asm.sx
  6b4886ae302fca1fa733831066c5c830  libgcc/config/avr/libf7/libf7-c-object.mk
! 8c31d45420a77d0121484bfbb4e9304c  libgcc/config/avr/libf7/libf7-common.mk
  29f415bcdf1f8cf82363009ed90158a0  libgcc/config/avr/libf7/libf7-const.def
  4be27333f32f04990c0af746c07ffd5d  libgcc/config/avr/libf7/libf7-constdef.h
! ec9773d81bd91f723677eed83c9e9e33  libgcc/config/avr/libf7/libf7.c
  96bca6a7335f821140d30c203401c36e  libgcc/config/avr/libf7/libf7.h
  2921a86fef727ada45668b8c0f091e33  libgcc/config/avr/libf7/t-libf7
  bf9360cfc14e0b0129af5560893f374e  libgcc/config/avr/libf7/t-libf7-math
--- 119553,119572 ----
  5ab16e6eec7523296afc7c8bfee38565  libgcc/config/avr/lib1funcs.S
  622f81485f02d0eac2caaafa7d3a2fd1  libgcc/config/avr/lib2-object.mk
  e6604d88f15777c25f5d887ca1f9148c  libgcc/config/avr/lib2funcs.c
! fc2f55c27c607b074a531705055f065d  libgcc/config/avr/libf7/ChangeLog
  dd74908d3b47db38a7aaa2e9f130f20f  libgcc/config/avr/libf7/asm-defs.h
! bd9ea3adc1ea81e3d0d05dc1b9999851  libgcc/config/avr/libf7/f7-renames.h
! fa695d06eee1fb3d5f9c3d904977f010  libgcc/config/avr/libf7/f7-wraps.h
  b9901623ec29c1c4dd98d6fae040518c  libgcc/config/avr/libf7/f7renames.sh
  76d89fdf12c2153d7cf3d12c025a8713  libgcc/config/avr/libf7/f7wraps.sh
  b77774db3e278767f77ced55b8e1fe89  libgcc/config/avr/libf7/libf7-array.def
  5d9def53110ec07e8f29e66d593d758f  libgcc/config/avr/libf7/libf7-asm-object.mk
! 686811c5649722c7336bf05e27415ddb  libgcc/config/avr/libf7/libf7-asm.sx
  6b4886ae302fca1fa733831066c5c830  libgcc/config/avr/libf7/libf7-c-object.mk
! 021ea561bcc2bc07286c89e312af685b  libgcc/config/avr/libf7/libf7-common.mk
  29f415bcdf1f8cf82363009ed90158a0  libgcc/config/avr/libf7/libf7-const.def
  4be27333f32f04990c0af746c07ffd5d  libgcc/config/avr/libf7/libf7-constdef.h
! 884b2f039045789cdd28e526e5587424  libgcc/config/avr/libf7/libf7.c
  96bca6a7335f821140d30c203401c36e  libgcc/config/avr/libf7/libf7.h
  2921a86fef727ada45668b8c0f091e33  libgcc/config/avr/libf7/t-libf7
  bf9360cfc14e0b0129af5560893f374e  libgcc/config/avr/libf7/t-libf7-math
*************** bdd08773400d12af9ac3b370d255ccca  libgcc
*** 119181,119187 ****
  40eda5c7825bbaa25723845c3f9caabd  libgcc/config/ia64/vms-unwind.h
  82cf742d0711f5ea45c5d4ae1837083b  libgcc/config/iq2000/lib2funcs.c
  102f7dad8ad6b54434a1b8313d1e42c4  libgcc/config/iq2000/t-iq2000
! a65f08d6dc5d71b4f04aa72d72715e4d  libgcc/config/libbid/ChangeLog
  c32cb18bbfd73dda967b708b16ce8e89  libgcc/config/libbid/_addsub_dd.c
  a0801827ba65b25ba20a91e765121b7f  libgcc/config/libbid/_addsub_sd.c
  1047ed1c06b6914a7df19b0739d305c3  libgcc/config/libbid/_addsub_td.c
--- 119850,119856 ----
  40eda5c7825bbaa25723845c3f9caabd  libgcc/config/ia64/vms-unwind.h
  82cf742d0711f5ea45c5d4ae1837083b  libgcc/config/iq2000/lib2funcs.c
  102f7dad8ad6b54434a1b8313d1e42c4  libgcc/config/iq2000/t-iq2000
! a2d6562fa9cf13b657fb9ac31a1645b6  libgcc/config/libbid/ChangeLog
  c32cb18bbfd73dda967b708b16ce8e89  libgcc/config/libbid/_addsub_dd.c
  a0801827ba65b25ba20a91e765121b7f  libgcc/config/libbid/_addsub_sd.c
  1047ed1c06b6914a7df19b0739d305c3  libgcc/config/libbid/_addsub_td.c
*************** ce614fa17d52c2d7121d7e2d6f80b02d  libgcc
*** 120069,120076 ****
  dca6d35465143e4a68b87cc9c4e803ee  libgcc/config/xtensa/unwind-dw2-xtensa.c
  b99cc01380166f4692e0732bbc912212  libgcc/config/xtensa/unwind-dw2-xtensa.h
  19ec14444518e397fc90d9fdb8667783  libgcc/config/xtensa/xtensa-config-builtin.h
! 5af73994c8475b4dc0103863bf096541  libgcc/configure
! 5f9f0e725d87d433ed6e08aad0d7bfb8  libgcc/configure.ac
  67c2374dbad34029ec8371ef10329bcd  libgcc/crtstuff.c
  ab5a8eda1cc5a04c100d837a67f3c0c3  libgcc/dfp-bit.c
  20a8155e167830f65cf1b081393e5207  libgcc/dfp-bit.h
--- 120738,120745 ----
  dca6d35465143e4a68b87cc9c4e803ee  libgcc/config/xtensa/unwind-dw2-xtensa.c
  b99cc01380166f4692e0732bbc912212  libgcc/config/xtensa/unwind-dw2-xtensa.h
  19ec14444518e397fc90d9fdb8667783  libgcc/config/xtensa/xtensa-config-builtin.h
! d1d7e66dc7e2d23b6835f3ce6a88a5da  libgcc/configure
! b0189d76af1ccb1db32084120fda87f6  libgcc/configure.ac
  67c2374dbad34029ec8371ef10329bcd  libgcc/crtstuff.c
  ab5a8eda1cc5a04c100d837a67f3c0c3  libgcc/dfp-bit.c
  20a8155e167830f65cf1b081393e5207  libgcc/dfp-bit.h
*************** f017ba40c4699f1549cd341ad688007f  libgcc
*** 120296,120302 ****
  804399bda5c6c23cd3e0cd78c21bc2fd  libgcc/vtv_end_preinit.c
  407de23229097d9b9a4d00e2e9c60c70  libgcc/vtv_start.c
  ba13e8c1385837f9a736ead153be6251  libgcc/vtv_start_preinit.c
! 8deaac610cfe07be16f3ac03083e03e8  libgcobol/ChangeLog
  b227feb8ac8df349788743a8ade3e840  libgcobol/LICENSE
  573e7a1dee0641f56d9b797b23dff44b  libgcobol/Makefile.am
  23cf4646d213d05645a0bf48209b374d  libgcobol/Makefile.in
--- 120965,120971 ----
  804399bda5c6c23cd3e0cd78c21bc2fd  libgcc/vtv_end_preinit.c
  407de23229097d9b9a4d00e2e9c60c70  libgcc/vtv_start.c
  ba13e8c1385837f9a736ead153be6251  libgcc/vtv_start_preinit.c
! 9356a30abb2ab400e001b03bc0aa78e4  libgcobol/ChangeLog
  b227feb8ac8df349788743a8ade3e840  libgcobol/LICENSE
  573e7a1dee0641f56d9b797b23dff44b  libgcobol/Makefile.am
  23cf4646d213d05645a0bf48209b374d  libgcobol/Makefile.in
*************** b054056cc4fe4de7a78d34e43f2f3bab  libgco
*** 120327,120333 ****
  469e0f6e21e357ff8b53b9d17373a6c8  libgcobol/libgcobol.spec.in
  7921a81e3cbf784d960d70db7bc6e242  libgcobol/valconv.cc
  c7d27fb7e36a42567d7cc4d14e7ed3fe  libgcobol/valconv.h
! ac7f063c8cb82a1c85489ce9730592e3  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
  522fdb2df6cefe6bcaed3c7c7311eae1  libgfortran/ChangeLog-2003
  5a3a93e76d878d063aba66079340cfe0  libgfortran/ChangeLog-2004
--- 120996,121002 ----
  469e0f6e21e357ff8b53b9d17373a6c8  libgcobol/libgcobol.spec.in
  7921a81e3cbf784d960d70db7bc6e242  libgcobol/valconv.cc
  c7d27fb7e36a42567d7cc4d14e7ed3fe  libgcobol/valconv.h
! f2d8f268dbe247f6652d05ac763d5115  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
  522fdb2df6cefe6bcaed3c7c7311eae1  libgfortran/ChangeLog-2003
  5a3a93e76d878d063aba66079340cfe0  libgfortran/ChangeLog-2004
*************** c7169b01bb969daf7e30948005f39988  libgfo
*** 121245,121251 ****
  2c879686a9c5431b13c4d3a9323e5fed  libgfortran/io/inquire.c
  9a1581b774b6fa5ddc5861750824984f  libgfortran/io/intrinsics.c
  68b0f7c5c62320c0b053455824877d6e  libgfortran/io/io.h
! 1c54bed7757f4af9f4ad352a00614fd9  libgfortran/io/list_read.c
  bc0fa60eac17837b1c762e97a8c08673  libgfortran/io/lock.c
  d043bdbc42f0d079e46ba78d36d7d784  libgfortran/io/open.c
  fa8c3abd0f354521bcc23aa747c190fe  libgfortran/io/read.c
--- 121914,121920 ----
  2c879686a9c5431b13c4d3a9323e5fed  libgfortran/io/inquire.c
  9a1581b774b6fa5ddc5861750824984f  libgfortran/io/intrinsics.c
  68b0f7c5c62320c0b053455824877d6e  libgfortran/io/io.h
! 3388245495015f8899db6b5cd580752d  libgfortran/io/list_read.c
  bc0fa60eac17837b1c762e97a8c08673  libgfortran/io/lock.c
  d043bdbc42f0d079e46ba78d36d7d784  libgfortran/io/open.c
  fa8c3abd0f354521bcc23aa747c190fe  libgfortran/io/read.c
*************** f63a06d746592d67d8c161bc2461a24e  libgfo
*** 121352,121358 ****
  e90afde1ec8653f66d433a7cc5e070a7  libgfortran/runtime/select_inc.c
  fa1f81a5ee204308c775545490d24fbd  libgfortran/runtime/stop.c
  08f6570c94f64b0aaf21fb2ec9aa10e9  libgfortran/runtime/string.c
! 7eaf962fb503b1eb3abdbf614799a7e6  libgm2/ChangeLog
  81dadb03add7a7278a98cd845177e76a  libgm2/Makefile.am
  38778826306c4efe1f6a33cb21cece23  libgm2/Makefile.in
  5655398e9c1e3027c587898dc4fce566  libgm2/acinclude.m4
--- 122021,122027 ----
  e90afde1ec8653f66d433a7cc5e070a7  libgfortran/runtime/select_inc.c
  fa1f81a5ee204308c775545490d24fbd  libgfortran/runtime/stop.c
  08f6570c94f64b0aaf21fb2ec9aa10e9  libgfortran/runtime/string.c
! 4b090d5beaa88ebf808a2bf3a73c336b  libgm2/ChangeLog
  81dadb03add7a7278a98cd845177e76a  libgm2/Makefile.am
  38778826306c4efe1f6a33cb21cece23  libgm2/Makefile.in
  5655398e9c1e3027c587898dc4fce566  libgm2/acinclude.m4
*************** a3a7e9ca6057da9ca42e03e41e1c73f7  libgo/
*** 126889,126902 ****
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! 112418432f958b0c7d637d694e34ae4a  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  883cfea6de23904b83d6bd58a729c866  libgomp/Makefile.am
  54c7bc8277669e3bf5f1a3db179ae206  libgomp/Makefile.in
  f931a90a01b7668928d9f7fcd5c7f3fb  libgomp/acc_prof.h
  d45f3b20f1be5d95a6c06fb81bedafe9  libgomp/acinclude.m4
  30a64ccfecfa60e8b5098e9fe26ea707  libgomp/aclocal.m4
! d8aa8371c40b734ac5451e05f1ec3ffd  libgomp/affinity-fmt.c
  01378bd902513e181046d9e2c91aaaf0  libgomp/affinity.c
  8fe4775ad9d79a2f006b290db4abdfa5  libgomp/alloc.c
  94bb34cb9fc447759270a29394905c04  libgomp/allocator.c
--- 127558,127571 ----
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! 3a2c70afede587b97f00eea3dc0662f8  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  883cfea6de23904b83d6bd58a729c866  libgomp/Makefile.am
  54c7bc8277669e3bf5f1a3db179ae206  libgomp/Makefile.in
  f931a90a01b7668928d9f7fcd5c7f3fb  libgomp/acc_prof.h
  d45f3b20f1be5d95a6c06fb81bedafe9  libgomp/acinclude.m4
  30a64ccfecfa60e8b5098e9fe26ea707  libgomp/aclocal.m4
! fda30f07f171a5ca7d9965961adcb7d6  libgomp/affinity-fmt.c
  01378bd902513e181046d9e2c91aaaf0  libgomp/affinity.c
  8fe4775ad9d79a2f006b290db4abdfa5  libgomp/alloc.c
  94bb34cb9fc447759270a29394905c04  libgomp/allocator.c
*************** c3d837ee5481f078c8b7875c1c8306be  libgom
*** 127030,127036 ****
  0214d07a09a5c6e422ca9541c3f6cba4  libgomp/libgomp-plugin.c
  1aa4ba0a2ee049ea5df6f42bca4e756e  libgomp/libgomp-plugin.h
  69e5cac35d68ce6db01326f45f2fc005  libgomp/libgomp.h
! ac3410249ffd4432cac832c0f894f12a  libgomp/libgomp.info
  794094e4a415fa9d14baf5f132c3d098  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
  7d6392be778d70e12dc7ada711cee1aa  libgomp/libgomp.texi
--- 127699,127705 ----
  0214d07a09a5c6e422ca9541c3f6cba4  libgomp/libgomp-plugin.c
  1aa4ba0a2ee049ea5df6f42bca4e756e  libgomp/libgomp-plugin.h
  69e5cac35d68ce6db01326f45f2fc005  libgomp/libgomp.h
! de2739c27634303a74df4c7e39a851d9  libgomp/libgomp.info
  794094e4a415fa9d14baf5f132c3d098  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
  7d6392be778d70e12dc7ada711cee1aa  libgomp/libgomp.texi
*************** e84312e49f013526d73d8d431b003123  libgom
*** 127543,127548 ****
--- 128212,128218 ----
  a4ab197aeadddd54aec1345501b5ea69  libgomp/testsuite/libgomp.c-c++-common/critical-hint-2.c
  a91d1e81f6056f17808a3f96ef2583c6  libgomp/testsuite/libgomp.c-c++-common/declare-target-indirect-1.c
  340f18f5450878329ed68937e697b129  libgomp/testsuite/libgomp.c-c++-common/declare-target-indirect-2.c
+ 87cbcc55746faa452b358c6cc4478de3  libgomp/testsuite/libgomp.c-c++-common/declare-variant-1.c
  12e3ee01b70343537315551db476c391  libgomp/testsuite/libgomp.c-c++-common/declare_target-1.c
  59c8656b7740501a704831756762d395  libgomp/testsuite/libgomp.c-c++-common/default-1.c
  a1a09ff547c6ff16fad80cd2261269ee  libgomp/testsuite/libgomp.c-c++-common/depend-1.c
*************** b018601a4e35da4037b1e04dfdb00b98  libgom
*** 128664,128669 ****
--- 129334,129340 ----
  10f51539240fd456f44686f1368a9ebb  libgomp/testsuite/libgomp.fortran/pointer1.f90
  ea1e8a0a21d27e85d504f82d979196a3  libgomp/testsuite/libgomp.fortran/pointer2.f90
  5a38dd4751898fd9556aa9ed131fad76  libgomp/testsuite/libgomp.fortran/pr100981-2.f90
+ bd4d373b7453a268a0da695bf8bf8f52  libgomp/testsuite/libgomp.fortran/pr120286.f90
  1e7de6c9f1376e7662fc088ab6ec5e64  libgomp/testsuite/libgomp.fortran/pr25162.f
  150790c35955da1ca1b74284c2553f34  libgomp/testsuite/libgomp.fortran/pr25219.f90
  a83bd562c0d1b609f2a71de244b3a1a0  libgomp/testsuite/libgomp.fortran/pr27395-1.f90
*************** e8a3245c095430c8ef2413afe2ee4c48  libgom
*** 129615,129621 ****
  1d2e2e1ab9f0d92351625f2c5661dbb8  libgomp/testsuite/libgomp.oacc-fortran/update-dt-array.f90
  989e6535f20045be32e9e91643a0b08f  libgomp/testsuite/libgomp.oacc-fortran/vector-routine.f90
  9b8b2dd0e3a57784ab6771591edb6c3b  libgomp/work.c
! 492ac4f275708fcea2b2188532ccdf46  libgrust/ChangeLog
  e61ce18b1a86e6764b3436d0638ec4d2  libgrust/Makefile.am
  d670b72d54b9c3daeabf87ef1a8f629b  libgrust/Makefile.in
  ec9513341b9bd1ba3b60bf6fec70f852  libgrust/aclocal.m4
--- 130286,130292 ----
  1d2e2e1ab9f0d92351625f2c5661dbb8  libgomp/testsuite/libgomp.oacc-fortran/update-dt-array.f90
  989e6535f20045be32e9e91643a0b08f  libgomp/testsuite/libgomp.oacc-fortran/vector-routine.f90
  9b8b2dd0e3a57784ab6771591edb6c3b  libgomp/work.c
! 45e638e17ef0c9c2e8d69ff877ccf70f  libgrust/ChangeLog
  e61ce18b1a86e6764b3436d0638ec4d2  libgrust/Makefile.am
  d670b72d54b9c3daeabf87ef1a8f629b  libgrust/Makefile.in
  ec9513341b9bd1ba3b60bf6fec70f852  libgrust/aclocal.m4
*************** d310c3612a920f243d62620f007dec94  libgru
*** 129925,129931 ****
  4d27195db5805ea05b982a2971711c94  libgrust/libproc_macro_internal/tokentree.h
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! 52338dddd1262aa912d85964fff55388  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
  9b063cff28e2237e897ffbd7475e05ac  libiberty/Makefile.in
  8b93d0e0369daed24e2260ccfd102eb3  libiberty/README
--- 130596,130602 ----
  4d27195db5805ea05b982a2971711c94  libgrust/libproc_macro_internal/tokentree.h
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! 0df21a53aa787fd66e75b2d4cf51236f  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
  9b063cff28e2237e897ffbd7475e05ac  libiberty/Makefile.in
  8b93d0e0369daed24e2260ccfd102eb3  libiberty/README
*************** e973bc72e9b2d610a4b9575612e4eb7e  libibe
*** 130038,130044 ****
  ff1d42d1bf1c07e5ea2e937d699ca374  libiberty/simple-object-elf.c
  a14629c770304471edee893f66642041  libiberty/simple-object-mach-o.c
  fa900905f05a445431f7a9aacedbc87a  libiberty/simple-object-xcoff.c
! 216392f132c9fc61c2d3f0a5a73271a2  libiberty/simple-object.c
  4863a11e04a2021af582edf86f156954  libiberty/simple-object.txh
  70cf700eee398fc6bf00ee58c616aba0  libiberty/snprintf.c
  ff47008e837114be5ffe97f256924c14  libiberty/sort.c
--- 130709,130715 ----
  ff1d42d1bf1c07e5ea2e937d699ca374  libiberty/simple-object-elf.c
  a14629c770304471edee893f66642041  libiberty/simple-object-mach-o.c
  fa900905f05a445431f7a9aacedbc87a  libiberty/simple-object-xcoff.c
! fe28e2d8825289c5934e92c8e120ed0c  libiberty/simple-object.c
  4863a11e04a2021af582edf86f156954  libiberty/simple-object.txh
  70cf700eee398fc6bf00ee58c616aba0  libiberty/snprintf.c
  ff47008e837114be5ffe97f256924c14  libiberty/sort.c
*************** e52d95644dc6f186070f349a5903ca72  libibe
*** 130094,130100 ****
  6f774a92661ca4a067f1691a7925524b  libiberty/xstrerror.c
  9ee73c41e33c5385829971172a184c87  libiberty/xstrndup.c
  264565e1673eec920dc95fb09d4605ea  libiberty/xvasprintf.c
! ee5397100239985c93c02d500e53ccaa  libitm/ChangeLog
  763fe82c2e5c5ae9547defb28107952a  libitm/Makefile.am
  9615a863768090f60933c0f1de86e7b0  libitm/Makefile.in
  354a4dc018f4a1bb610d11d1743d3cb1  libitm/aatree.cc
--- 130765,130771 ----
  6f774a92661ca4a067f1691a7925524b  libiberty/xstrerror.c
  9ee73c41e33c5385829971172a184c87  libiberty/xstrndup.c
  264565e1673eec920dc95fb09d4605ea  libiberty/xvasprintf.c
! 4285f32db802bd664e2d7ac536f83939  libitm/ChangeLog
  763fe82c2e5c5ae9547defb28107952a  libitm/Makefile.am
  9615a863768090f60933c0f1de86e7b0  libitm/Makefile.in
  354a4dc018f4a1bb610d11d1743d3cb1  libitm/aatree.cc
*************** e25455914644f3311064669e1ce05e86  libitm
*** 130158,130164 ****
  55fafde8278ecdd1122f7e735d43c4b9  libitm/dispatch.h
  aa97ff433e8d46c311d09afd743c3ac9  libitm/eh_cpp.cc
  227389b260f575acb56c4eed3d21f434  libitm/libitm.h
! efa3ec8383d6e3d909260cf8821b28ad  libitm/libitm.info
  0c43820b921ecdbe9d98f068100e716a  libitm/libitm.map
  ea467d7117853d139bb288ab75261139  libitm/libitm.spec.in
  c5d0acd750d34c1d66b612bace5289a0  libitm/libitm.texi
--- 130829,130835 ----
  55fafde8278ecdd1122f7e735d43c4b9  libitm/dispatch.h
  aa97ff433e8d46c311d09afd743c3ac9  libitm/eh_cpp.cc
  227389b260f575acb56c4eed3d21f434  libitm/libitm.h
! 7702fa3478b72b034549751a7c93bbe0  libitm/libitm.info
  0c43820b921ecdbe9d98f068100e716a  libitm/libitm.map
  ea467d7117853d139bb288ab75261139  libitm/libitm.spec.in
  c5d0acd750d34c1d66b612bace5289a0  libitm/libitm.texi
*************** b4e503ecfdccc9f13da8f73eeb6f23a9  libitm
*** 130204,130210 ****
  ef24198422c19f99b0c41be6a16f7081  libitm/testsuite/libitm.c/txrelease.c
  5eec74b1eee8d819e88b284abf80ec7c  libitm/useraction.cc
  6aa0b92295a7511a2af5672f4ad1cec4  libitm/util.cc
! ab9b23e859dab00aa9fb66d051cd337e  libobjc/ChangeLog
  da63bef4f8e0d2401aecc4ea0b7a15bd  libobjc/Makefile.in
  f641586fd7145ce4812e780e634634c0  libobjc/NXConstStr.m
  1c7a98dcda1e595d5dfefb22b7ac0cd0  libobjc/Object.m
--- 130875,130881 ----
  ef24198422c19f99b0c41be6a16f7081  libitm/testsuite/libitm.c/txrelease.c
  5eec74b1eee8d819e88b284abf80ec7c  libitm/useraction.cc
  6aa0b92295a7511a2af5672f4ad1cec4  libitm/util.cc
! ec7456c0f78b64cde0b6bae0ed3f23f6  libobjc/ChangeLog
  da63bef4f8e0d2401aecc4ea0b7a15bd  libobjc/Makefile.in
  f641586fd7145ce4812e780e634634c0  libobjc/NXConstStr.m
  1c7a98dcda1e595d5dfefb22b7ac0cd0  libobjc/Object.m
*************** a50aaef4b803051d8c8de65277787205  libobj
*** 130261,130267 ****
  1529c9317f23aa02b19c43cda7528d66  libobjc/selector.c
  e48bb3c47cdcb1bfade3ef0007f5a149  libobjc/sendmsg.c
  06be35842165837797461a0db264aeea  libobjc/thr.c
! 3bffe58389e1a4498ec4bc68d08c7d9d  libphobos/ChangeLog
  e188e263b43a1566b83ecb298034d491  libphobos/Makefile.am
  156e9416d3f91f179bb662effed69086  libphobos/Makefile.in
  ee88c20a7744a2305503e1670f3b7889  libphobos/README.gcc
--- 130932,130938 ----
  1529c9317f23aa02b19c43cda7528d66  libobjc/selector.c
  e48bb3c47cdcb1bfade3ef0007f5a149  libobjc/sendmsg.c
  06be35842165837797461a0db264aeea  libobjc/thr.c
! 2c46cc903289ddb7b5ee136d0f1d1341  libphobos/ChangeLog
  e188e263b43a1566b83ecb298034d491  libphobos/Makefile.am
  156e9416d3f91f179bb662effed69086  libphobos/Makefile.in
  ee88c20a7744a2305503e1670f3b7889  libphobos/README.gcc
*************** fbb3c30724cb241010afacb0505c53e7  libpho
*** 130270,130276 ****
  0c33f8a64a5c7307de4f56c482966852  libphobos/config.h.in
  0fbc6aac226228d33e1f5810b09eee59  libphobos/configure
  122f630ac036808d09fb88947d310aff  libphobos/configure.ac
! e67224389d81028699fa5631b7a00893  libphobos/configure.tgt
  63ec818a02a0e071420a85b12fbfd563  libphobos/d_rules.am
  e4224ccaecb14d942c71d31bef20d78c  libphobos/libdruntime/LICENSE.txt
  ddebe4c1ba53d5a98f1cbfe28019c009  libphobos/libdruntime/MERGE
--- 130941,130947 ----
  0c33f8a64a5c7307de4f56c482966852  libphobos/config.h.in
  0fbc6aac226228d33e1f5810b09eee59  libphobos/configure
  122f630ac036808d09fb88947d310aff  libphobos/configure.ac
! 244c05889f52ce1f31725196bb428bbb  libphobos/configure.tgt
  63ec818a02a0e071420a85b12fbfd563  libphobos/d_rules.am
  e4224ccaecb14d942c71d31bef20d78c  libphobos/libdruntime/LICENSE.txt
  ddebe4c1ba53d5a98f1cbfe28019c009  libphobos/libdruntime/MERGE
*************** d415620d052ae1db6d70544c35d1be49  libpho
*** 130339,130345 ****
  4f645e198123145858200ba494eff9a1  libphobos/libdruntime/core/internal/newaa.d
  3da42716a2bb1df75cc2b61bf90a9b2c  libphobos/libdruntime/core/internal/parseoptions.d
  c4a519a49c6da8005c2078035b344cf7  libphobos/libdruntime/core/internal/postblit.d
! 033d129addd5b23c56c0f4e77446b299  libphobos/libdruntime/core/internal/qsort.d
  eb7626a08581a41afe77af77f3194a7a  libphobos/libdruntime/core/internal/spinlock.d
  ae51deb9af8fd5e2af56c159ecda8af6  libphobos/libdruntime/core/internal/string.d
  0e954400ebc20e538cb0df0607daaeca  libphobos/libdruntime/core/internal/switch_.d
--- 131010,131016 ----
  4f645e198123145858200ba494eff9a1  libphobos/libdruntime/core/internal/newaa.d
  3da42716a2bb1df75cc2b61bf90a9b2c  libphobos/libdruntime/core/internal/parseoptions.d
  c4a519a49c6da8005c2078035b344cf7  libphobos/libdruntime/core/internal/postblit.d
! 621df54a1e1f5eaaec23be90f14f7f7d  libphobos/libdruntime/core/internal/qsort.d
  eb7626a08581a41afe77af77f3194a7a  libphobos/libdruntime/core/internal/spinlock.d
  ae51deb9af8fd5e2af56c159ecda8af6  libphobos/libdruntime/core/internal/string.d
  0e954400ebc20e538cb0df0607daaeca  libphobos/libdruntime/core/internal/switch_.d
*************** b394cf23a598d3271d7bd5c679c7febd  libpho
*** 131255,131261 ****
  fc53a03ee850127a74ad6bd174963745  libphobos/testsuite/libphobos.unittest/unittest.exp
  a8de1f183b347afc269d237f3fd14b61  libphobos/testsuite/testsuite_flags.in
  a916467b91076e631dd8edb7424769c7  libquadmath/COPYING.LIB
! a02d2848c2f592194c07b6580d173983  libquadmath/ChangeLog
  d981cb45023d55b1fe9629d54c616528  libquadmath/Makefile.am
  a3052de69d6eb9f6a29ceb534e231eda  libquadmath/Makefile.in
  d9afbc1f1e04c7e461265ff9323cc6f4  libquadmath/acinclude.m4
--- 131926,131932 ----
  fc53a03ee850127a74ad6bd174963745  libphobos/testsuite/libphobos.unittest/unittest.exp
  a8de1f183b347afc269d237f3fd14b61  libphobos/testsuite/testsuite_flags.in
  a916467b91076e631dd8edb7424769c7  libquadmath/COPYING.LIB
! 3d2093d01c9fbc0a52d2b0765f6e8283  libquadmath/ChangeLog
  d981cb45023d55b1fe9629d54c616528  libquadmath/Makefile.am
  a3052de69d6eb9f6a29ceb534e231eda  libquadmath/Makefile.in
  d9afbc1f1e04c7e461265ff9323cc6f4  libquadmath/acinclude.m4
*************** d9afbc1f1e04c7e461265ff9323cc6f4  libqua
*** 131263,131269 ****
  cf5a7864ff15ab4dd1604e0f6fe4e501  libquadmath/config.h.in
  724e7207c7bb5491c48ddf95aa824c04  libquadmath/configure
  c16d6073d91cefda754d990ede4d9e9f  libquadmath/configure.ac
! 8d1eca318d9d68aa1c99146cd2cbf13e  libquadmath/libquadmath.info
  93e59a240cab0611f80fc5d34139c86a  libquadmath/libquadmath.texi
  77280bb7ee423875e03d9c0d34527df6  libquadmath/libtool-version
  452fee0ef153d65eb7413a5103c63a23  libquadmath/math/acoshq.c
--- 131934,131940 ----
  cf5a7864ff15ab4dd1604e0f6fe4e501  libquadmath/config.h.in
  724e7207c7bb5491c48ddf95aa824c04  libquadmath/configure
  c16d6073d91cefda754d990ede4d9e9f  libquadmath/configure.ac
! 4ce522113e9df0a605b9b7850a650eba  libquadmath/libquadmath.info
  93e59a240cab0611f80fc5d34139c86a  libquadmath/libquadmath.texi
  77280bb7ee423875e03d9c0d34527df6  libquadmath/libtool-version
  452fee0ef153d65eb7413a5103c63a23  libquadmath/math/acoshq.c
*************** a73fdec6746eaad8ccdc8e8403aac562  libqua
*** 131396,131402 ****
  af84fa5118f4adec8393614994e1c4d6  libquadmath/strtod/strtoflt128.c
  d15a18f7c46ba2add6148edc5b7563c0  libquadmath/strtod/tens_in_limb.c
  12c73a846f7668d29de720bd79502bef  libquadmath/update-quadmath.py
! f6f7d9a88f7cf39f4a823115f8095a9c  libsanitizer/ChangeLog
  63916ba64a3cfa7ce2809fb46ab38597  libsanitizer/HOWTO_MERGE
  0249c37748936faf5b1efd5789587909  libsanitizer/LICENSE.TXT
  1a2ca7cd408b1705dc84c19070a7049b  libsanitizer/LOCAL_PATCHES
--- 132067,132073 ----
  af84fa5118f4adec8393614994e1c4d6  libquadmath/strtod/strtoflt128.c
  d15a18f7c46ba2add6148edc5b7563c0  libquadmath/strtod/tens_in_limb.c
  12c73a846f7668d29de720bd79502bef  libquadmath/update-quadmath.py
! 9f1cca725a01bd0bc3e2f023e2d22d39  libsanitizer/ChangeLog
  63916ba64a3cfa7ce2809fb46ab38597  libsanitizer/HOWTO_MERGE
  0249c37748936faf5b1efd5789587909  libsanitizer/LICENSE.TXT
  1a2ca7cd408b1705dc84c19070a7049b  libsanitizer/LOCAL_PATCHES
*************** c20619c1cdd5936e7b8b0c701a9389ef  libsan
*** 131695,131701 ****
  b582d1c8ad1dfab45211cbb7c25cf5f6  libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cpp
  a4d7b3990585330fb0fbc99e5afaf019  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.cpp
  0865bdc585846a1c9cfa5d1df0517d02  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.h
! ae39fafc805d942f70ebb97140084eae  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
  292ad6a7d436278e2f125cecbe8cd711  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
  711b54008ada7faff939a95e325b185b  libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.cpp
  ab1ad414331f77e459da9a32b756cbac  libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.h
--- 132366,132372 ----
  b582d1c8ad1dfab45211cbb7c25cf5f6  libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cpp
  a4d7b3990585330fb0fbc99e5afaf019  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.cpp
  0865bdc585846a1c9cfa5d1df0517d02  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.h
! e4cbbfcf70427c1b748d76fca60b3d89  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
  292ad6a7d436278e2f125cecbe8cd711  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
  711b54008ada7faff939a95e325b185b  libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.cpp
  ab1ad414331f77e459da9a32b756cbac  libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.h
*************** f01966720c236be4a6f849bb79c2e3a0  libsan
*** 131892,131898 ****
  36c349526a8bcc6a104185c4571b5363  libsanitizer/ubsan/ubsan_value.cpp
  f95aed5d713e73ada16956190fa4ac58  libsanitizer/ubsan/ubsan_value.h
  f44dc970bc1adae9a128b178a339fd0e  libsanitizer/ubsan/ubsan_win_runtime_thunk.cpp
! af6904a8912a381750a55cc06b8b5a16  libssp/ChangeLog
  3c64b74eec15b8c16d5cfabfe903d655  libssp/Makefile.am
  2223a5c6fc2f0f67afde93329459a92e  libssp/Makefile.in
  f6f6c804e40e3a3ef407d3d13fafb6c0  libssp/aclocal.m4
--- 132563,132569 ----
  36c349526a8bcc6a104185c4571b5363  libsanitizer/ubsan/ubsan_value.cpp
  f95aed5d713e73ada16956190fa4ac58  libsanitizer/ubsan/ubsan_value.h
  f44dc970bc1adae9a128b178a339fd0e  libsanitizer/ubsan/ubsan_win_runtime_thunk.cpp
! 846c0cff2dcb25debd88485193f68b97  libssp/ChangeLog
  3c64b74eec15b8c16d5cfabfe903d655  libssp/Makefile.am
  2223a5c6fc2f0f67afde93329459a92e  libssp/Makefile.in
  f6f6c804e40e3a3ef407d3d13fafb6c0  libssp/aclocal.m4
*************** d680e7307fb59fe24f8431e179191f16  libssp
*** 131922,131928 ****
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 304e4210c76c2d65ce012a74ce4467ca  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 132593,132599 ----
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! ae133d007df0e6f7ccaeeda33b7e1c64  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** f801ad9baad07e266be912cfec758b44  libstd
*** 131964,131970 ****
  13f901be7333a2072916659b04e88e8d  libstdc++-v3/config/abi/post/i386-solaris/amd64/baseline_symbols.txt
  d45eb5f70812c01e9571ca948c4da8cd  libstdc++-v3/config/abi/post/i386-solaris/baseline_symbols.txt
  0feacae434c67857f81d494f83cf3851  libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt
! 01500b319bb297b4059106c465b92567  libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt
  97784a5e669593e12f36ff38c1ed28cd  libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt
  61308215d393f11169ace76935f2b034  libstdc++-v3/config/abi/post/mips-linux-gnu/baseline_symbols.txt
  725325d7b24195d1e6374ce4e24afdb0  libstdc++-v3/config/abi/post/mips64-linux-gnu/32/baseline_symbols.txt
--- 132635,132641 ----
  13f901be7333a2072916659b04e88e8d  libstdc++-v3/config/abi/post/i386-solaris/amd64/baseline_symbols.txt
  d45eb5f70812c01e9571ca948c4da8cd  libstdc++-v3/config/abi/post/i386-solaris/baseline_symbols.txt
  0feacae434c67857f81d494f83cf3851  libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt
! 5dca274dfeba1c1c125014f358dc6b89  libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt
  97784a5e669593e12f36ff38c1ed28cd  libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt
  61308215d393f11169ace76935f2b034  libstdc++-v3/config/abi/post/mips-linux-gnu/baseline_symbols.txt
  725325d7b24195d1e6374ce4e24afdb0  libstdc++-v3/config/abi/post/mips64-linux-gnu/32/baseline_symbols.txt
*************** ed199f6700a016816d625b286bf25ead  libstd
*** 132147,132161 ****
  8913cf14e458f9cfae745a0d939c97e4  libstdc++-v3/config/os/vxworks/ctype_configure_char.cc
  e29a526ec89ed09bf39b0aa4fd4c5d79  libstdc++-v3/config/os/vxworks/ctype_inline.h
  788b66dfe66c25c24ff60bf253c9c7ff  libstdc++-v3/config/os/vxworks/os_defines.h
! 478bb531ef9cb3ab0f673e64b8b8aece  libstdc++-v3/configure
! 315146bda822dcbf6f5677aac62442a6  libstdc++-v3/configure.ac
  546d8799acc0db2a2a28b658d5665dc3  libstdc++-v3/configure.host
  450cc52f6f6f0abf59940662504c450e  libstdc++-v3/crossconfig.m4
  55ecb88d091a7c97abd35f475cf97c2b  libstdc++-v3/doc/Makefile.am
  d66f986053e4755f0517ff5cfe90b2b5  libstdc++-v3/doc/Makefile.in
  3f7ff07f68cc7610addc1921bc125548  libstdc++-v3/doc/doxygen/Intro.3
  8ddc98aa9ea49005b27aed1d2798e2fc  libstdc++-v3/doc/doxygen/doxygroups.cc
! 520db39aef0e2a59418132af88b897ed  libstdc++-v3/doc/doxygen/mainpage.html
  92f5430d44f06426f0d19bffc186ad05  libstdc++-v3/doc/doxygen/stdheader.cc
  1273764cd133c402d2d3f22cf2913af5  libstdc++-v3/doc/doxygen/tables.html
  093d173a914422cd19c7708bc2d0e736  libstdc++-v3/doc/doxygen/user.cfg.in
--- 132818,132832 ----
  8913cf14e458f9cfae745a0d939c97e4  libstdc++-v3/config/os/vxworks/ctype_configure_char.cc
  e29a526ec89ed09bf39b0aa4fd4c5d79  libstdc++-v3/config/os/vxworks/ctype_inline.h
  788b66dfe66c25c24ff60bf253c9c7ff  libstdc++-v3/config/os/vxworks/os_defines.h
! 09c8e0b714892f9ca47efdaabf583f94  libstdc++-v3/configure
! cea931b634158b7ec3ed389b8b5d2de6  libstdc++-v3/configure.ac
  546d8799acc0db2a2a28b658d5665dc3  libstdc++-v3/configure.host
  450cc52f6f6f0abf59940662504c450e  libstdc++-v3/crossconfig.m4
  55ecb88d091a7c97abd35f475cf97c2b  libstdc++-v3/doc/Makefile.am
  d66f986053e4755f0517ff5cfe90b2b5  libstdc++-v3/doc/Makefile.in
  3f7ff07f68cc7610addc1921bc125548  libstdc++-v3/doc/doxygen/Intro.3
  8ddc98aa9ea49005b27aed1d2798e2fc  libstdc++-v3/doc/doxygen/doxygroups.cc
! 0afaede288e1533644cb1445cf4ff813  libstdc++-v3/doc/doxygen/mainpage.html
  92f5430d44f06426f0d19bffc186ad05  libstdc++-v3/doc/doxygen/stdheader.cc
  1273764cd133c402d2d3f22cf2913af5  libstdc++-v3/doc/doxygen/tables.html
  093d173a914422cd19c7708bc2d0e736  libstdc++-v3/doc/doxygen/user.cfg.in
*************** d66f986053e4755f0517ff5cfe90b2b5  libstd
*** 132163,132169 ****
  6d16751d668adf69fac47cc69bde7d40  libstdc++-v3/doc/html/api.html
  08920438eea18325b4bfdf979379ff66  libstdc++-v3/doc/html/bk02.html
  47886ba7da131bf3cbf81a27cada5f6f  libstdc++-v3/doc/html/bk03.html
! 2ff76da9446af5dab1f67ad7cafbacaf  libstdc++-v3/doc/html/faq.html
  1ae70f0bf94464b036515d333fff8ab2  libstdc++-v3/doc/html/images/confdeps.png
  d7f63b43e9f4c39cf71de7585de522ee  libstdc++-v3/doc/html/images/pbds_balls_and_bins.png
  22eedc841676a98f8ae8b95131ac4d7e  libstdc++-v3/doc/html/images/pbds_binary_priority_queue_int_push.png
--- 132834,132840 ----
  6d16751d668adf69fac47cc69bde7d40  libstdc++-v3/doc/html/api.html
  08920438eea18325b4bfdf979379ff66  libstdc++-v3/doc/html/bk02.html
  47886ba7da131bf3cbf81a27cada5f6f  libstdc++-v3/doc/html/bk03.html
! 65dce8e582bd843739d504bcea146a86  libstdc++-v3/doc/html/faq.html
  1ae70f0bf94464b036515d333fff8ab2  libstdc++-v3/doc/html/images/confdeps.png
  d7f63b43e9f4c39cf71de7585de522ee  libstdc++-v3/doc/html/images/pbds_balls_and_bins.png
  22eedc841676a98f8ae8b95131ac4d7e  libstdc++-v3/doc/html/images/pbds_binary_priority_queue_int_push.png
*************** d7249eb4d31bd107d0b09ea3c80cb723  libstd
*** 132244,132250 ****
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/html/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/html/images/pbds_update_seq_diagram.png
  9262cc16ae0b0edc20fbb4efeabaaccd  libstdc++-v3/doc/html/index.html
! 4e75c9ed55364b062b87405d233e6dd8  libstdc++-v3/doc/html/manual/abi.html
  4ce10e27356ac31a5b7962aecbeb3638  libstdc++-v3/doc/html/manual/algorithms.html
  4fb7ffd9efe6e3547b24292c317aa5df  libstdc++-v3/doc/html/manual/api.html
  adafcaa8208ba56a2f53b5e10b57dde2  libstdc++-v3/doc/html/manual/appendix.html
--- 132915,132921 ----
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/html/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/html/images/pbds_update_seq_diagram.png
  9262cc16ae0b0edc20fbb4efeabaaccd  libstdc++-v3/doc/html/index.html
! f2a4f897df6c949ab6690c9b60f86bd4  libstdc++-v3/doc/html/manual/abi.html
  4ce10e27356ac31a5b7962aecbeb3638  libstdc++-v3/doc/html/manual/algorithms.html
  4fb7ffd9efe6e3547b24292c317aa5df  libstdc++-v3/doc/html/manual/api.html
  adafcaa8208ba56a2f53b5e10b57dde2  libstdc++-v3/doc/html/manual/appendix.html
*************** adafcaa8208ba56a2f53b5e10b57dde2  libstd
*** 132252,132305 ****
  23038a3eb57967596dd7dc4f944e55e6  libstdc++-v3/doc/html/manual/appendix_free.html
  7bedd2c8f6a4683546db552dc3e8261f  libstdc++-v3/doc/html/manual/appendix_gfdl.html
  502f9b7267830b21cb88745d060faacf  libstdc++-v3/doc/html/manual/appendix_gpl.html
! 482cee07da7c4a2382174e7ad504f024  libstdc++-v3/doc/html/manual/appendix_porting.html
! ac3612f72ad76b3796526d161b19db59  libstdc++-v3/doc/html/manual/associative.html
  b8ac9fc2f2cfcaed0450c79e2fb01569  libstdc++-v3/doc/html/manual/atomics.html
! d30e8a474595941b24a6493ad08f78d9  libstdc++-v3/doc/html/manual/backwards.html
  c60c6ae778d5dedae24ac21abf948bdb  libstdc++-v3/doc/html/manual/bitmap_allocator.html
  3a3d01d1d9478286b8c505d1449531d4  libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html
  6095fbb12cc581b2614870b42ad0e8b0  libstdc++-v3/doc/html/manual/bugs.html
  cc3700f2fde50987f186f23abf98a7b1  libstdc++-v3/doc/html/manual/concept_checking.html
  f3a54a6315d716742603d33f454f2c19  libstdc++-v3/doc/html/manual/concurrency.html
! 2bb7c0f8b8c4c8d632b4bb16d5c77345  libstdc++-v3/doc/html/manual/configure.html
  5328918ec42768cddb06c3e97ef4530c  libstdc++-v3/doc/html/manual/containers.html
! c7e40c1085e414b3b4d5896db4013205  libstdc++-v3/doc/html/manual/containers_and_c.html
  5905f8be24ae69bb804c3d5a6a4abf7d  libstdc++-v3/doc/html/manual/debug.html
  1bd34529d162b6f3a08d5f2ea4943c6a  libstdc++-v3/doc/html/manual/debug_mode.html
  90b457b0d4240ee5b826a815bcd90912  libstdc++-v3/doc/html/manual/debug_mode_design.html
  397ce9357678670b7c451c92eab7cb57  libstdc++-v3/doc/html/manual/debug_mode_semantics.html
  1fe03067a558eb3fd4b3a8c1337db0d1  libstdc++-v3/doc/html/manual/debug_mode_using.html
! 7f6c5a9eb000f65ee1888d459beb9dd5  libstdc++-v3/doc/html/manual/diagnostics.html
  074e3891bbedea5b412c648e455f6adf  libstdc++-v3/doc/html/manual/documentation_hacking.html
! 44375d933be3e667b4c31334c041decb  libstdc++-v3/doc/html/manual/dynamic_memory.html
  55666dfa05ec7aae2596d6968f6fdb38  libstdc++-v3/doc/html/manual/errno.html
  e47e050922ad8c8f67f42be36ea507c4  libstdc++-v3/doc/html/manual/ext_algorithms.html
  f06c80959b51df8ead13e6679a537cbc  libstdc++-v3/doc/html/manual/ext_compile_checks.html
  afcc2751dae09e088abc1e3175cb94cc  libstdc++-v3/doc/html/manual/ext_concurrency.html
  41d83456313998bffbded9e19febedc6  libstdc++-v3/doc/html/manual/ext_concurrency_impl.html
  9eae121ff2ad3f2dd5a2748f87f9f530  libstdc++-v3/doc/html/manual/ext_concurrency_use.html
! 0597d03ff215b7f17e0240178c030166  libstdc++-v3/doc/html/manual/ext_containers.html
! 561a364254927bdc578ac31f1b66747f  libstdc++-v3/doc/html/manual/ext_demangling.html
  05003e71d54cfdfd4c8291489f8ffa07  libstdc++-v3/doc/html/manual/ext_io.html
  44f8ef8b093904d418755d0e32d700b7  libstdc++-v3/doc/html/manual/ext_iterators.html
  ffd5e74a40bbf6623b8ccf687eb584d8  libstdc++-v3/doc/html/manual/ext_numerics.html
  6d380acac52eb8c888a54068e44b16ac  libstdc++-v3/doc/html/manual/ext_preface.html
! 6889f243ab6934ae5f80ea7fa9c69dbf  libstdc++-v3/doc/html/manual/ext_sgi.html
  9b34310c7cb7faa4373ee6683678c457  libstdc++-v3/doc/html/manual/ext_utilities.html
  9e255046a8ef2903114374ed06403045  libstdc++-v3/doc/html/manual/extensions.html
  76cac108e21e304b7607196fb5245e00  libstdc++-v3/doc/html/manual/facets.html
  9b06f8b16b4ba69e1269f98bb22377f2  libstdc++-v3/doc/html/manual/fstreams.html
! b404abb1e78a27e8a8980eb14ec27bab  libstdc++-v3/doc/html/manual/generalized_numeric_operations.html
  559ad34510db5c724ed2881282560ebc  libstdc++-v3/doc/html/manual/index.html
  8687facb6d19ccc2a663efbc50e745a1  libstdc++-v3/doc/html/manual/internals.html
  17d07c26f60433c6f5bf7f55a785fb3f  libstdc++-v3/doc/html/manual/intro.html
! 46de5aefef02b8c599fc816bea53ae67  libstdc++-v3/doc/html/manual/io.html
! 89dd67b210011f646675fa2ede886305  libstdc++-v3/doc/html/manual/io_and_c.html
! 32f6d6929349f8f96de44fbdd842ed48  libstdc++-v3/doc/html/manual/iterators.html
  aa205efdc2e69588d568e2c1738a8581  libstdc++-v3/doc/html/manual/license.html
  945f5ecd78f495a46c64b58665a37d69  libstdc++-v3/doc/html/manual/localization.html
  85ac3d22494cc64118e8df02fa68c90d  libstdc++-v3/doc/html/manual/make.html
! bed9104f8eff5fa454366f451181a04a  libstdc++-v3/doc/html/manual/memory.html
  c40a00e2cba07156a6bd77b14cccc2e4  libstdc++-v3/doc/html/manual/mt_allocator.html
  4934caabf7eef9ff3618e9ac17acba49  libstdc++-v3/doc/html/manual/mt_allocator_design.html
  bdbb1ff20830123a43576a05081312f9  libstdc++-v3/doc/html/manual/mt_allocator_ex_multi.html
--- 132923,132976 ----
  23038a3eb57967596dd7dc4f944e55e6  libstdc++-v3/doc/html/manual/appendix_free.html
  7bedd2c8f6a4683546db552dc3e8261f  libstdc++-v3/doc/html/manual/appendix_gfdl.html
  502f9b7267830b21cb88745d060faacf  libstdc++-v3/doc/html/manual/appendix_gpl.html
! a788b941dbdf4372824c82a3c22f6ce7  libstdc++-v3/doc/html/manual/appendix_porting.html
! 28d18f62862955c03fd5de7a9e104581  libstdc++-v3/doc/html/manual/associative.html
  b8ac9fc2f2cfcaed0450c79e2fb01569  libstdc++-v3/doc/html/manual/atomics.html
! 1985180c416d737bee7686d60f4e70ef  libstdc++-v3/doc/html/manual/backwards.html
  c60c6ae778d5dedae24ac21abf948bdb  libstdc++-v3/doc/html/manual/bitmap_allocator.html
  3a3d01d1d9478286b8c505d1449531d4  libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html
  6095fbb12cc581b2614870b42ad0e8b0  libstdc++-v3/doc/html/manual/bugs.html
  cc3700f2fde50987f186f23abf98a7b1  libstdc++-v3/doc/html/manual/concept_checking.html
  f3a54a6315d716742603d33f454f2c19  libstdc++-v3/doc/html/manual/concurrency.html
! 6e1071c3830037b074f1c397f4e7a3e6  libstdc++-v3/doc/html/manual/configure.html
  5328918ec42768cddb06c3e97ef4530c  libstdc++-v3/doc/html/manual/containers.html
! f66b4b01119c005cf471450613fc105b  libstdc++-v3/doc/html/manual/containers_and_c.html
  5905f8be24ae69bb804c3d5a6a4abf7d  libstdc++-v3/doc/html/manual/debug.html
  1bd34529d162b6f3a08d5f2ea4943c6a  libstdc++-v3/doc/html/manual/debug_mode.html
  90b457b0d4240ee5b826a815bcd90912  libstdc++-v3/doc/html/manual/debug_mode_design.html
  397ce9357678670b7c451c92eab7cb57  libstdc++-v3/doc/html/manual/debug_mode_semantics.html
  1fe03067a558eb3fd4b3a8c1337db0d1  libstdc++-v3/doc/html/manual/debug_mode_using.html
! ac31629383ea02b6f9d9689f5dd5494c  libstdc++-v3/doc/html/manual/diagnostics.html
  074e3891bbedea5b412c648e455f6adf  libstdc++-v3/doc/html/manual/documentation_hacking.html
! 0a3448d8bfaf5053260aeb3d9b7fd354  libstdc++-v3/doc/html/manual/dynamic_memory.html
  55666dfa05ec7aae2596d6968f6fdb38  libstdc++-v3/doc/html/manual/errno.html
  e47e050922ad8c8f67f42be36ea507c4  libstdc++-v3/doc/html/manual/ext_algorithms.html
  f06c80959b51df8ead13e6679a537cbc  libstdc++-v3/doc/html/manual/ext_compile_checks.html
  afcc2751dae09e088abc1e3175cb94cc  libstdc++-v3/doc/html/manual/ext_concurrency.html
  41d83456313998bffbded9e19febedc6  libstdc++-v3/doc/html/manual/ext_concurrency_impl.html
  9eae121ff2ad3f2dd5a2748f87f9f530  libstdc++-v3/doc/html/manual/ext_concurrency_use.html
! a475500e1e40ccf84021eef6688d0309  libstdc++-v3/doc/html/manual/ext_containers.html
! 36c76de14c65db6652b95eecd36601fb  libstdc++-v3/doc/html/manual/ext_demangling.html
  05003e71d54cfdfd4c8291489f8ffa07  libstdc++-v3/doc/html/manual/ext_io.html
  44f8ef8b093904d418755d0e32d700b7  libstdc++-v3/doc/html/manual/ext_iterators.html
  ffd5e74a40bbf6623b8ccf687eb584d8  libstdc++-v3/doc/html/manual/ext_numerics.html
  6d380acac52eb8c888a54068e44b16ac  libstdc++-v3/doc/html/manual/ext_preface.html
! 80ba3108a407ea691afc0849d1a7a487  libstdc++-v3/doc/html/manual/ext_sgi.html
  9b34310c7cb7faa4373ee6683678c457  libstdc++-v3/doc/html/manual/ext_utilities.html
  9e255046a8ef2903114374ed06403045  libstdc++-v3/doc/html/manual/extensions.html
  76cac108e21e304b7607196fb5245e00  libstdc++-v3/doc/html/manual/facets.html
  9b06f8b16b4ba69e1269f98bb22377f2  libstdc++-v3/doc/html/manual/fstreams.html
! fbe501e55689450dce7bb04b0f9a28b1  libstdc++-v3/doc/html/manual/generalized_numeric_operations.html
  559ad34510db5c724ed2881282560ebc  libstdc++-v3/doc/html/manual/index.html
  8687facb6d19ccc2a663efbc50e745a1  libstdc++-v3/doc/html/manual/internals.html
  17d07c26f60433c6f5bf7f55a785fb3f  libstdc++-v3/doc/html/manual/intro.html
! ad9c4c3d4e5712738facc14da8c89ae7  libstdc++-v3/doc/html/manual/io.html
! 5b9129eca807eb549e59c30ddf1605b9  libstdc++-v3/doc/html/manual/io_and_c.html
! 37ee363acc3e4b5507a49d588bbd797c  libstdc++-v3/doc/html/manual/iterators.html
  aa205efdc2e69588d568e2c1738a8581  libstdc++-v3/doc/html/manual/license.html
  945f5ecd78f495a46c64b58665a37d69  libstdc++-v3/doc/html/manual/localization.html
  85ac3d22494cc64118e8df02fa68c90d  libstdc++-v3/doc/html/manual/make.html
! 8f844e416e347cd59e91e9e3e3ddd63b  libstdc++-v3/doc/html/manual/memory.html
  c40a00e2cba07156a6bd77b14cccc2e4  libstdc++-v3/doc/html/manual/mt_allocator.html
  4934caabf7eef9ff3618e9ac17acba49  libstdc++-v3/doc/html/manual/mt_allocator_design.html
  bdbb1ff20830123a43576a05081312f9  libstdc++-v3/doc/html/manual/mt_allocator_ex_multi.html
*************** a40a3344663fbccc3184759981310047  libstd
*** 132307,132313 ****
  3113c1f4bb72a551ad756a0556819063  libstdc++-v3/doc/html/manual/mt_allocator_impl.html
  9dabea61a71c003598f8a991e614e76c  libstdc++-v3/doc/html/manual/numerics.html
  88a009e3d0a8c9e08103a63fdce3f776  libstdc++-v3/doc/html/manual/numerics_and_c.html
! d569c55932dee4a3a4e8598da8998e28  libstdc++-v3/doc/html/manual/pairs.html
  f9f0e84051f62c45dfb0a2c150dff6ee  libstdc++-v3/doc/html/manual/parallel_mode.html
  d0a5d1e6143763602cd06a3431e5eba7  libstdc++-v3/doc/html/manual/parallel_mode_design.html
  ecf6c505a75fa3dff283b1fefdda671b  libstdc++-v3/doc/html/manual/parallel_mode_semantics.html
--- 132978,132984 ----
  3113c1f4bb72a551ad756a0556819063  libstdc++-v3/doc/html/manual/mt_allocator_impl.html
  9dabea61a71c003598f8a991e614e76c  libstdc++-v3/doc/html/manual/numerics.html
  88a009e3d0a8c9e08103a63fdce3f776  libstdc++-v3/doc/html/manual/numerics_and_c.html
! c113923bbe1c3809744ab0db96c9ca87  libstdc++-v3/doc/html/manual/pairs.html
  f9f0e84051f62c45dfb0a2c150dff6ee  libstdc++-v3/doc/html/manual/parallel_mode.html
  d0a5d1e6143763602cd06a3431e5eba7  libstdc++-v3/doc/html/manual/parallel_mode_design.html
  ecf6c505a75fa3dff283b1fefdda671b  libstdc++-v3/doc/html/manual/parallel_mode_semantics.html
*************** e5c19b8ff5bc3c648559dbeb909a643d  libstd
*** 132316,132339 ****
  9979d7cb4d5cf7e6587881acebf84a4d  libstdc++-v3/doc/html/manual/policy_based_data_structures_test.html
  270766051c7a0ebb41d65856ebe73508  libstdc++-v3/doc/html/manual/policy_data_structures.html
  84c9bc8c54a3de8b4d90dfe3b438bc43  libstdc++-v3/doc/html/manual/policy_data_structures_ack.html
! d973b7693c2b6c717784b81d549c61e5  libstdc++-v3/doc/html/manual/policy_data_structures_design.html
  9acf818681732e9c264224c86b5ffdb3  libstdc++-v3/doc/html/manual/policy_data_structures_using.html
! 11c010c0761e0a41441314b388899e23  libstdc++-v3/doc/html/manual/setup.html
  05fe12a35eeac73538be455d4b27f923  libstdc++-v3/doc/html/manual/source_code_style.html
  f875f3f4cddfe4fee6aff2308ccb4563  libstdc++-v3/doc/html/manual/source_design_notes.html
  391422dd4f4cdbd4d764a952a0f345e6  libstdc++-v3/doc/html/manual/source_organization.html
! 81dacbaadda1905c0456712366f3917f  libstdc++-v3/doc/html/manual/status.html
  ea0c531c09fa230f346f8ba700961e4a  libstdc++-v3/doc/html/manual/std_contents.html
! 50160fa9f92780aaa6fc7a4ef13fc897  libstdc++-v3/doc/html/manual/streambufs.html
! 3cb55f3f54e0a98471bffdf9f533a8a2  libstdc++-v3/doc/html/manual/strings.html
  4fceea62121ba1fe214414a7506d385e  libstdc++-v3/doc/html/manual/stringstreams.html
! 52f0c68b15c7a2b6e098bcfb8da0094b  libstdc++-v3/doc/html/manual/support.html
! fcdceeabf3a95117ea22e93a0354e564  libstdc++-v3/doc/html/manual/termination.html
! 994a609aea3823f777eda71567bc8ed4  libstdc++-v3/doc/html/manual/test.html
  c39b927efcec5ac84139c1490c8ef320  libstdc++-v3/doc/html/manual/traits.html
! 530b96535baacfe35df2e65f9dfe7efc  libstdc++-v3/doc/html/manual/unordered_associative.html
  8aa9b7bfbe5a730701f97de49e583432  libstdc++-v3/doc/html/manual/using.html
! 78aa5833e13335bccb9f831528294eb7  libstdc++-v3/doc/html/manual/using_concurrency.html
  f8898e59cc7155a01a17f15a3b853c30  libstdc++-v3/doc/html/manual/using_dual_abi.html
  11dd55e39edb8313b5563e53067c431e  libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html
  09eeb2fa79fb240e032461adcbe2cb4a  libstdc++-v3/doc/html/manual/using_exceptions.html
--- 132987,133010 ----
  9979d7cb4d5cf7e6587881acebf84a4d  libstdc++-v3/doc/html/manual/policy_based_data_structures_test.html
  270766051c7a0ebb41d65856ebe73508  libstdc++-v3/doc/html/manual/policy_data_structures.html
  84c9bc8c54a3de8b4d90dfe3b438bc43  libstdc++-v3/doc/html/manual/policy_data_structures_ack.html
! 00aaa10e34d9e8b00a19d6c60ad1ed48  libstdc++-v3/doc/html/manual/policy_data_structures_design.html
  9acf818681732e9c264224c86b5ffdb3  libstdc++-v3/doc/html/manual/policy_data_structures_using.html
! 5fb6d2e05eb98a2128ffe705b93619e8  libstdc++-v3/doc/html/manual/setup.html
  05fe12a35eeac73538be455d4b27f923  libstdc++-v3/doc/html/manual/source_code_style.html
  f875f3f4cddfe4fee6aff2308ccb4563  libstdc++-v3/doc/html/manual/source_design_notes.html
  391422dd4f4cdbd4d764a952a0f345e6  libstdc++-v3/doc/html/manual/source_organization.html
! ac506f0c90b5919c5eec134bdd77dc85  libstdc++-v3/doc/html/manual/status.html
  ea0c531c09fa230f346f8ba700961e4a  libstdc++-v3/doc/html/manual/std_contents.html
! ed880ae9a474601ab139b1f243cbad76  libstdc++-v3/doc/html/manual/streambufs.html
! 2a262c4a0f123859ea1ea62fc6c5a226  libstdc++-v3/doc/html/manual/strings.html
  4fceea62121ba1fe214414a7506d385e  libstdc++-v3/doc/html/manual/stringstreams.html
! 75ab8c3dc22e27fc36cddbf1f63e62e0  libstdc++-v3/doc/html/manual/support.html
! 576070c373ebcaee386d0b95fe56b0c3  libstdc++-v3/doc/html/manual/termination.html
! ef21758d3146dfd1becb9df90c7ad489  libstdc++-v3/doc/html/manual/test.html
  c39b927efcec5ac84139c1490c8ef320  libstdc++-v3/doc/html/manual/traits.html
! b2b541e52af05c96f0b4e36d035d6ed9  libstdc++-v3/doc/html/manual/unordered_associative.html
  8aa9b7bfbe5a730701f97de49e583432  libstdc++-v3/doc/html/manual/using.html
! 67af75428c4b0fee1420d75c75421ab6  libstdc++-v3/doc/html/manual/using_concurrency.html
  f8898e59cc7155a01a17f15a3b853c30  libstdc++-v3/doc/html/manual/using_dual_abi.html
  11dd55e39edb8313b5563e53067c431e  libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html
  09eeb2fa79fb240e032461adcbe2cb4a  libstdc++-v3/doc/html/manual/using_exceptions.html
*************** e8b86abd99dc9893dfa1bb7533fdc23d  libstd
*** 132346,132352 ****
  5906074c27c57c65b220c35bbcb2c5ec  libstdc++-v3/doc/xml/book.txml
  44d3a92b83abfb18efac80519c79b44c  libstdc++-v3/doc/xml/chapter.txml
  011b8e6a5442e4dc08f02e7295b644a3  libstdc++-v3/doc/xml/class.txml
! bf9bccd7b0755cfea2731e669eb18a76  libstdc++-v3/doc/xml/faq.xml
  ea77580f7e81e2c49aea3f425c01ee2b  libstdc++-v3/doc/xml/gnu/fdl-1.3.xml
  56bb32e9ab9358834c5f8eca2cd0e969  libstdc++-v3/doc/xml/gnu/gpl-3.0.xml
  18a6390297702ec8fd75cbcc525d2005  libstdc++-v3/doc/xml/images/confdeps.dot
--- 133017,133023 ----
  5906074c27c57c65b220c35bbcb2c5ec  libstdc++-v3/doc/xml/book.txml
  44d3a92b83abfb18efac80519c79b44c  libstdc++-v3/doc/xml/chapter.txml
  011b8e6a5442e4dc08f02e7295b644a3  libstdc++-v3/doc/xml/class.txml
! f8a3eeba9dd66a276c1851dc3499ecf6  libstdc++-v3/doc/xml/faq.xml
  ea77580f7e81e2c49aea3f425c01ee2b  libstdc++-v3/doc/xml/gnu/fdl-1.3.xml
  56bb32e9ab9358834c5f8eca2cd0e969  libstdc++-v3/doc/xml/gnu/gpl-3.0.xml
  18a6390297702ec8fd75cbcc525d2005  libstdc++-v3/doc/xml/images/confdeps.dot
*************** cc132f90a00a3ca05f64b578f9e332aa  libstd
*** 132526,132585 ****
  f63bfdc03ba2b82c74864f02206d7c52  libstdc++-v3/doc/xml/images/pbds_tree_text_lor_find.svg
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/xml/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/xml/images/pbds_update_seq_diagram.png
! e7d6be44d477d4dfab6f169057dc4002  libstdc++-v3/doc/xml/manual/abi.xml
  c1d775ba87be90b85044162eab59a66c  libstdc++-v3/doc/xml/manual/algorithms.xml
! a87c9806b403e8eab90d3020e1111bd5  libstdc++-v3/doc/xml/manual/allocator.xml
  b9f6d3637e7f129ed22277a507325bfc  libstdc++-v3/doc/xml/manual/appendix_contributing.xml
  11e0fd62db5b93db462f3c54750904ec  libstdc++-v3/doc/xml/manual/appendix_free.xml
  0e37b1b056c89ad8cd7ef98f9924284c  libstdc++-v3/doc/xml/manual/appendix_porting.xml
  5139cfc8fdaabd93b5aa7362de789702  libstdc++-v3/doc/xml/manual/atomics.xml
! c3d24d92dc2ae1e99149164f60e80337  libstdc++-v3/doc/xml/manual/auto_ptr.xml
! 18ecbccd2db2605dc093780d7b72799b  libstdc++-v3/doc/xml/manual/backwards_compatibility.xml
  b84cb983bda244285e1314327a420e66  libstdc++-v3/doc/xml/manual/bitmap_allocator.xml
! b3f117e4c677e60cf6035cf76714b185  libstdc++-v3/doc/xml/manual/build_hacking.xml
  8f13cae7ea80bc018b87b4ff8de7e3cf  libstdc++-v3/doc/xml/manual/codecvt.xml
  af3361d0d0af961859ec0346c38ac8c8  libstdc++-v3/doc/xml/manual/concurrency.xml
  9da4610e32c81714e9188c6852c8dc93  libstdc++-v3/doc/xml/manual/concurrency_extensions.xml
! 1baba4ec8761c012c41a2ea967630fe1  libstdc++-v3/doc/xml/manual/configure.xml
! d7100469dfefd97836f3007f2682087d  libstdc++-v3/doc/xml/manual/containers.xml
  d08c687d9520b2f9d8dd6d973cca9e6a  libstdc++-v3/doc/xml/manual/ctype.xml
  0423695ef5d72eb026dfccb3b68e16ac  libstdc++-v3/doc/xml/manual/debug.xml
  a972c915c47573572139ea9161dec244  libstdc++-v3/doc/xml/manual/debug_mode.xml
! f320f25003678cca910f09ba54c923fc  libstdc++-v3/doc/xml/manual/diagnostics.xml
  3680906036c20b1ccc54e2d06b5a3a24  libstdc++-v3/doc/xml/manual/documentation_hacking.xml
  f300cfbcd39d07f1a1628c08ed8bc650  libstdc++-v3/doc/xml/manual/evolution.xml
! 250fbd9ce8e61158b22da9b231426c24  libstdc++-v3/doc/xml/manual/extensions.xml
  7f1864c7f3c3b2bfde84b7086be97ca7  libstdc++-v3/doc/xml/manual/internals.xml
! fb1b8e4745ce0e8ee919f6013ad8ba87  libstdc++-v3/doc/xml/manual/intro.xml
! 01ddfa93b18eebb84ed0144728f9bc9e  libstdc++-v3/doc/xml/manual/io.xml
! 5ac71d67674ea22bcf1e54043bf8e99d  libstdc++-v3/doc/xml/manual/iterators.xml
  b9c8759ff9b60e09bd2875420a55cd31  libstdc++-v3/doc/xml/manual/locale.xml
  b00f98f125f6186c369ce588d795f978  libstdc++-v3/doc/xml/manual/localization.xml
  90cedee1e8e04d1ab87bbf41d47293ec  libstdc++-v3/doc/xml/manual/messages.xml
  ac9d3bd9fc0873aff36db0b07a78bf4a  libstdc++-v3/doc/xml/manual/mt_allocator.xml
! 42b8355117a7bd9aa755048290e70d2c  libstdc++-v3/doc/xml/manual/numerics.xml
  670fae5ac4c0fa1aec6d56273ad3e32f  libstdc++-v3/doc/xml/manual/parallel_mode.xml
! 7c390b245068bcc2f3f52590bdf8526f  libstdc++-v3/doc/xml/manual/policy_data_structures.xml
  44c53fbcb219a9a8db16061983e78759  libstdc++-v3/doc/xml/manual/policy_data_structures_biblio.xml
  bdc0ccd8cfd9d1d8cc970f825d5fe4bd  libstdc++-v3/doc/xml/manual/prerequisites.xml
  adadeaccd7e3be18b69dcc095e96f3af  libstdc++-v3/doc/xml/manual/shared_ptr.xml
  d7f222c42325cd44eadad2c59eef7e6f  libstdc++-v3/doc/xml/manual/spine.xml
  596c7aab458db3d67d78deb96cbc9d9b  libstdc++-v3/doc/xml/manual/status_cxx1998.xml
! 644fc4f5809caba03388ce8159897214  libstdc++-v3/doc/xml/manual/status_cxx2011.xml
  a1e5e1f330c7f2768f2ee7abc3e07ee8  libstdc++-v3/doc/xml/manual/status_cxx2014.xml
! 63d72faceee46a17ae266389e86d5aed  libstdc++-v3/doc/xml/manual/status_cxx2017.xml
  dfb20c2399649a914760f055f32dd178  libstdc++-v3/doc/xml/manual/status_cxx2020.xml
! cf0ef2164c8071a200c66f96e7971b77  libstdc++-v3/doc/xml/manual/status_cxx2023.xml
  e12241b98a6c1e835b7b1d1bb31761ca  libstdc++-v3/doc/xml/manual/status_cxxis29124.xml
  947cbcb30cf76f2d22ef124b555113b9  libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
  4d3d64f9d7fc245ed5d85a621393ffce  libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml
! bfd38fc5f1090656a5139c94c16ea163  libstdc++-v3/doc/xml/manual/strings.xml
! 2b80feb1b53a8d0895a292620ec430b2  libstdc++-v3/doc/xml/manual/support.xml
! c540dcb615e766afe887215bd7795e42  libstdc++-v3/doc/xml/manual/test.xml
  e2e099be3dd6a4b7a940a7232635ee2c  libstdc++-v3/doc/xml/manual/test_policy_data_structures.xml
! 89a63a549c3438b3bee6bbf18f4c8b3e  libstdc++-v3/doc/xml/manual/using.xml
  257e301935b13b4b045e571fa248a4d8  libstdc++-v3/doc/xml/manual/using_exceptions.xml
! b820e3490221bb85cbf6bcdde0aa8150  libstdc++-v3/doc/xml/manual/utilities.xml
  c587674e0c370a2d6ccc5213ab3e4e65  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
  42d14268f2b16c54a6bc2f71538a838c  libstdc++-v3/fragment.am
--- 133197,133256 ----
  f63bfdc03ba2b82c74864f02206d7c52  libstdc++-v3/doc/xml/images/pbds_tree_text_lor_find.svg
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/xml/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/xml/images/pbds_update_seq_diagram.png
! fababc206c2f50bea99087667b23c9f6  libstdc++-v3/doc/xml/manual/abi.xml
  c1d775ba87be90b85044162eab59a66c  libstdc++-v3/doc/xml/manual/algorithms.xml
! 954cbafffb4b6f40cda84d906436793a  libstdc++-v3/doc/xml/manual/allocator.xml
  b9f6d3637e7f129ed22277a507325bfc  libstdc++-v3/doc/xml/manual/appendix_contributing.xml
  11e0fd62db5b93db462f3c54750904ec  libstdc++-v3/doc/xml/manual/appendix_free.xml
  0e37b1b056c89ad8cd7ef98f9924284c  libstdc++-v3/doc/xml/manual/appendix_porting.xml
  5139cfc8fdaabd93b5aa7362de789702  libstdc++-v3/doc/xml/manual/atomics.xml
! 9b574792eb53b53a4c25095856de9eba  libstdc++-v3/doc/xml/manual/auto_ptr.xml
! 61521d63ad9e9ab631ea718a1c9b6bb5  libstdc++-v3/doc/xml/manual/backwards_compatibility.xml
  b84cb983bda244285e1314327a420e66  libstdc++-v3/doc/xml/manual/bitmap_allocator.xml
! 31759d672b7c4bd11ca01ca6db69c514  libstdc++-v3/doc/xml/manual/build_hacking.xml
  8f13cae7ea80bc018b87b4ff8de7e3cf  libstdc++-v3/doc/xml/manual/codecvt.xml
  af3361d0d0af961859ec0346c38ac8c8  libstdc++-v3/doc/xml/manual/concurrency.xml
  9da4610e32c81714e9188c6852c8dc93  libstdc++-v3/doc/xml/manual/concurrency_extensions.xml
! 7ac1661f8bba0e715c24ddc063e48ee7  libstdc++-v3/doc/xml/manual/configure.xml
! 8fb8db51febba73cfb5456272d1dcb7a  libstdc++-v3/doc/xml/manual/containers.xml
  d08c687d9520b2f9d8dd6d973cca9e6a  libstdc++-v3/doc/xml/manual/ctype.xml
  0423695ef5d72eb026dfccb3b68e16ac  libstdc++-v3/doc/xml/manual/debug.xml
  a972c915c47573572139ea9161dec244  libstdc++-v3/doc/xml/manual/debug_mode.xml
! 90361f264f5edc899c47c155c4106f24  libstdc++-v3/doc/xml/manual/diagnostics.xml
  3680906036c20b1ccc54e2d06b5a3a24  libstdc++-v3/doc/xml/manual/documentation_hacking.xml
  f300cfbcd39d07f1a1628c08ed8bc650  libstdc++-v3/doc/xml/manual/evolution.xml
! 35161972a439c38c57ac30525b12bd9f  libstdc++-v3/doc/xml/manual/extensions.xml
  7f1864c7f3c3b2bfde84b7086be97ca7  libstdc++-v3/doc/xml/manual/internals.xml
! b9a71f2513a821d689faf68e4bb3c87f  libstdc++-v3/doc/xml/manual/intro.xml
! ae2b92cd9b8aa5539864e672f2380698  libstdc++-v3/doc/xml/manual/io.xml
! 3a6d3e952f11115ffc8c918555bbd8e7  libstdc++-v3/doc/xml/manual/iterators.xml
  b9c8759ff9b60e09bd2875420a55cd31  libstdc++-v3/doc/xml/manual/locale.xml
  b00f98f125f6186c369ce588d795f978  libstdc++-v3/doc/xml/manual/localization.xml
  90cedee1e8e04d1ab87bbf41d47293ec  libstdc++-v3/doc/xml/manual/messages.xml
  ac9d3bd9fc0873aff36db0b07a78bf4a  libstdc++-v3/doc/xml/manual/mt_allocator.xml
! b087484df7b339be84e496a6dc7e63c6  libstdc++-v3/doc/xml/manual/numerics.xml
  670fae5ac4c0fa1aec6d56273ad3e32f  libstdc++-v3/doc/xml/manual/parallel_mode.xml
! 61958800e0a22fd197373dc5b3cd3452  libstdc++-v3/doc/xml/manual/policy_data_structures.xml
  44c53fbcb219a9a8db16061983e78759  libstdc++-v3/doc/xml/manual/policy_data_structures_biblio.xml
  bdc0ccd8cfd9d1d8cc970f825d5fe4bd  libstdc++-v3/doc/xml/manual/prerequisites.xml
  adadeaccd7e3be18b69dcc095e96f3af  libstdc++-v3/doc/xml/manual/shared_ptr.xml
  d7f222c42325cd44eadad2c59eef7e6f  libstdc++-v3/doc/xml/manual/spine.xml
  596c7aab458db3d67d78deb96cbc9d9b  libstdc++-v3/doc/xml/manual/status_cxx1998.xml
! 74c26d4a4d90c9df8a1cdbb288ce3d37  libstdc++-v3/doc/xml/manual/status_cxx2011.xml
  a1e5e1f330c7f2768f2ee7abc3e07ee8  libstdc++-v3/doc/xml/manual/status_cxx2014.xml
! 84bac623e2b226860e4ec897010934bf  libstdc++-v3/doc/xml/manual/status_cxx2017.xml
  dfb20c2399649a914760f055f32dd178  libstdc++-v3/doc/xml/manual/status_cxx2020.xml
! 1151525e4f901bb58f4c36e8909ebf1c  libstdc++-v3/doc/xml/manual/status_cxx2023.xml
  e12241b98a6c1e835b7b1d1bb31761ca  libstdc++-v3/doc/xml/manual/status_cxxis29124.xml
  947cbcb30cf76f2d22ef124b555113b9  libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
  4d3d64f9d7fc245ed5d85a621393ffce  libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml
! 6ee9056a13ea8876e565b4ba45134bee  libstdc++-v3/doc/xml/manual/strings.xml
! cbd1ce02ad465e7f996671f14eee4ec9  libstdc++-v3/doc/xml/manual/support.xml
! 781c17f51704fbdcf6f729d3672f9aab  libstdc++-v3/doc/xml/manual/test.xml
  e2e099be3dd6a4b7a940a7232635ee2c  libstdc++-v3/doc/xml/manual/test_policy_data_structures.xml
! 51895aad91176abba6bdd35a08b3db4a  libstdc++-v3/doc/xml/manual/using.xml
  257e301935b13b4b045e571fa248a4d8  libstdc++-v3/doc/xml/manual/using_exceptions.xml
! bc0412a9556e7ed39afe5103b73f1f26  libstdc++-v3/doc/xml/manual/utilities.xml
  c587674e0c370a2d6ccc5213ab3e4e65  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
  42d14268f2b16c54a6bc2f71538a838c  libstdc++-v3/fragment.am
*************** b08a39f51d72ac622e2e5e257ae3897b  libstd
*** 132598,132610 ****
  c2f5862787920c2fc07b4f499e362a00  libstdc++-v3/include/bits/alloc_traits.h
  c124f049cd4f41ebcf3bbfd04df17cf5  libstdc++-v3/include/bits/allocated_ptr.h
  d18c16b3c9c3ab2e7d487de90ec27d17  libstdc++-v3/include/bits/allocator.h
! a65f3932e944795c8e78b00d2e7f11a0  libstdc++-v3/include/bits/atomic_base.h
  7c88fbee1dffec663e740720882b5344  libstdc++-v3/include/bits/atomic_futex.h
  c2ed9b9ed62b02a5aba9733f5b376172  libstdc++-v3/include/bits/atomic_timed_wait.h
! bb69994569d6bb0513c7fbd4d74bc697  libstdc++-v3/include/bits/atomic_wait.h
  3f7a7ce2588d1e8ea4f282e9f41ac292  libstdc++-v3/include/bits/basic_ios.h
  c54b27ddff7542cc6baa362f62fb5778  libstdc++-v3/include/bits/basic_ios.tcc
! 811aa7875a4cc11129344e9a96ad1f5b  libstdc++-v3/include/bits/basic_string.h
  ae1074cab6b583707efdb40bf0099caf  libstdc++-v3/include/bits/basic_string.tcc
  200662cd7d76e4a1990ec1207ae62a51  libstdc++-v3/include/bits/boost_concept_check.h
  a155d2afa910d24be0955f42c4585228  libstdc++-v3/include/bits/c++0x_warning.h
--- 133269,133281 ----
  c2f5862787920c2fc07b4f499e362a00  libstdc++-v3/include/bits/alloc_traits.h
  c124f049cd4f41ebcf3bbfd04df17cf5  libstdc++-v3/include/bits/allocated_ptr.h
  d18c16b3c9c3ab2e7d487de90ec27d17  libstdc++-v3/include/bits/allocator.h
! 77b77324133ff41213284fbe1fa43f73  libstdc++-v3/include/bits/atomic_base.h
  7c88fbee1dffec663e740720882b5344  libstdc++-v3/include/bits/atomic_futex.h
  c2ed9b9ed62b02a5aba9733f5b376172  libstdc++-v3/include/bits/atomic_timed_wait.h
! 4aec94297e365e5a284c252c0a72d1e5  libstdc++-v3/include/bits/atomic_wait.h
  3f7a7ce2588d1e8ea4f282e9f41ac292  libstdc++-v3/include/bits/basic_ios.h
  c54b27ddff7542cc6baa362f62fb5778  libstdc++-v3/include/bits/basic_ios.tcc
! 54a9a30a0b501f9ec6d735b7d829c2c3  libstdc++-v3/include/bits/basic_string.h
  ae1074cab6b583707efdb40bf0099caf  libstdc++-v3/include/bits/basic_string.tcc
  200662cd7d76e4a1990ec1207ae62a51  libstdc++-v3/include/bits/boost_concept_check.h
  a155d2afa910d24be0955f42c4585228  libstdc++-v3/include/bits/c++0x_warning.h
*************** a155d2afa910d24be0955f42c4585228  libstd
*** 132612,132628 ****
  4ab7627c024bab75db708e43d35616aa  libstdc++-v3/include/bits/char_traits.h
  195dabcb74f9b313c574745539925b0e  libstdc++-v3/include/bits/charconv.h
  8a303c55e1a9a90d751641a38581e2bc  libstdc++-v3/include/bits/chrono.h
! 3448d66faf4aeb61396ce4ac5dbcc176  libstdc++-v3/include/bits/chrono_io.h
  2ff73cb405cb01626a751e0fa0f339f3  libstdc++-v3/include/bits/codecvt.h
  23fc42ee8644308c793f44d20f00420e  libstdc++-v3/include/bits/concept_check.h
! e999e0783a5ca2165919f352526501e9  libstdc++-v3/include/bits/cow_string.h
! 99157013f345a7984753e3d01fdd744f  libstdc++-v3/include/bits/cpp_type_traits.h
! 7cddddf44455557aa3a51978b5887fff  libstdc++-v3/include/bits/deque.tcc
  be08582d1795753f6e8fb613a7ec9fe0  libstdc++-v3/include/bits/elements_of.h
  397af990234a7f718cce0f629f7d8b13  libstdc++-v3/include/bits/enable_special_members.h
  b194eb42ed4e3bc3a3f65805561d45c8  libstdc++-v3/include/bits/erase_if.h
  3b9b9d813acfbc8b09b99bf4602a9ed7  libstdc++-v3/include/bits/formatfwd.h
! 3c1cd1724fd697b7e7c6c0b2233c4c62  libstdc++-v3/include/bits/forward_list.h
  8123372b7074a636b749e1e60f9f2b81  libstdc++-v3/include/bits/forward_list.tcc
  547631f602a86bc167ed71b762904cd9  libstdc++-v3/include/bits/fs_dir.h
  6b7b8aca89690d8a4558046e54c35af9  libstdc++-v3/include/bits/fs_fwd.h
--- 133283,133299 ----
  4ab7627c024bab75db708e43d35616aa  libstdc++-v3/include/bits/char_traits.h
  195dabcb74f9b313c574745539925b0e  libstdc++-v3/include/bits/charconv.h
  8a303c55e1a9a90d751641a38581e2bc  libstdc++-v3/include/bits/chrono.h
! 0d566c2137e5065366831c2cb7161052  libstdc++-v3/include/bits/chrono_io.h
  2ff73cb405cb01626a751e0fa0f339f3  libstdc++-v3/include/bits/codecvt.h
  23fc42ee8644308c793f44d20f00420e  libstdc++-v3/include/bits/concept_check.h
! e8e2df39ad9386a7f40ad4e7c3ae4658  libstdc++-v3/include/bits/cow_string.h
! 3096fc9df7ce27113a7adfd3be390678  libstdc++-v3/include/bits/cpp_type_traits.h
! 0c714f37c68f18b6938f3dafdb2bb8cc  libstdc++-v3/include/bits/deque.tcc
  be08582d1795753f6e8fb613a7ec9fe0  libstdc++-v3/include/bits/elements_of.h
  397af990234a7f718cce0f629f7d8b13  libstdc++-v3/include/bits/enable_special_members.h
  b194eb42ed4e3bc3a3f65805561d45c8  libstdc++-v3/include/bits/erase_if.h
  3b9b9d813acfbc8b09b99bf4602a9ed7  libstdc++-v3/include/bits/formatfwd.h
! 0b4a32caac3b12dee4bd64701e0ee0b5  libstdc++-v3/include/bits/forward_list.h
  8123372b7074a636b749e1e60f9f2b81  libstdc++-v3/include/bits/forward_list.tcc
  547631f602a86bc167ed71b762904cd9  libstdc++-v3/include/bits/fs_dir.h
  6b7b8aca89690d8a4558046e54c35af9  libstdc++-v3/include/bits/fs_fwd.h
*************** f0db6753fd67e8ef172c6851da248f62  libstd
*** 132662,132693 ****
  d9b4799b2fcb53d3c0b0083520867135  libstdc++-v3/include/bits/ostream.h
  6a70bf77d2af097179dfd48fd590bcfc  libstdc++-v3/include/bits/ostream.tcc
  45be89105fdcb6d509423a07db106ba3  libstdc++-v3/include/bits/ostream_insert.h
! a0ff2aff5e6b290f02129d8fd5066f94  libstdc++-v3/include/bits/out_ptr.h
  8a8a359cdcce476304e0c7a41f405f02  libstdc++-v3/include/bits/parse_numbers.h
  5c23229552297aa0937e1eac544c60e6  libstdc++-v3/include/bits/postypes.h
  5f3f6621fe24c343d0311ca670a32765  libstdc++-v3/include/bits/predefined_ops.h
  f79ccf9398c9456b79cbbb762eebd943  libstdc++-v3/include/bits/ptr_traits.h
  083ee9dbf4a8803183e5f6a5d02a1c4f  libstdc++-v3/include/bits/quoted_string.h
  053e1de38aef43bbaf1a9a4af1e3ad2f  libstdc++-v3/include/bits/random.h
! 840a9ec8406b934a97a1df66d37af685  libstdc++-v3/include/bits/random.tcc
  b0c29f09a819ac9aa11c3507409c11ef  libstdc++-v3/include/bits/range_access.h
! c4870f814a271600f0c3b220ce577780  libstdc++-v3/include/bits/ranges_algo.h
  2739c66cfdc38cbad18771e2317ce548  libstdc++-v3/include/bits/ranges_algobase.h
! 8457ca60903b4ca07617a6f477e43ace  libstdc++-v3/include/bits/ranges_base.h
! 586727039587b10b560a902b1c7008b1  libstdc++-v3/include/bits/ranges_cmp.h
  4a47bd7ff3afbf353ca7c097f3fda6f8  libstdc++-v3/include/bits/ranges_uninitialized.h
  13ab6526ab5b8cd5e9a7b12e6bf761f6  libstdc++-v3/include/bits/ranges_util.h
  222a1067e3c63fb19ed0996234a84884  libstdc++-v3/include/bits/refwrap.h
  5b95e35539d0071176396cd82a6072b7  libstdc++-v3/include/bits/regex.h
! b5ae25c0469c7fb23c0914fcebced654  libstdc++-v3/include/bits/regex.tcc
  8574b29ef7f78afa13942ca1525502d5  libstdc++-v3/include/bits/regex_automaton.h
! 1a5c4b076e644644ecb038a6c2e76ca3  libstdc++-v3/include/bits/regex_automaton.tcc
! fafbb831bf729a319ae2fdce7a89fa09  libstdc++-v3/include/bits/regex_compiler.h
! 46fa213f3ad5327440d62134c29dbb18  libstdc++-v3/include/bits/regex_compiler.tcc
  fce0df5e6bf950f27228a12451fbd226  libstdc++-v3/include/bits/regex_constants.h
  6ca3bfbf5aafc309148a9ff8a58b7b80  libstdc++-v3/include/bits/regex_error.h
  d36de2845480e2dc51861df7b179eadc  libstdc++-v3/include/bits/regex_executor.h
! df3ef438d91412b71148268cb103fd3b  libstdc++-v3/include/bits/regex_executor.tcc
  15dd5944c7cd223ab035591c92c65fc5  libstdc++-v3/include/bits/regex_scanner.h
  27e294ed24336b703f9fb025b6d69f51  libstdc++-v3/include/bits/regex_scanner.tcc
  22a9676313472917eaaccc27ddfb10f4  libstdc++-v3/include/bits/requires_hosted.h
--- 133333,133364 ----
  d9b4799b2fcb53d3c0b0083520867135  libstdc++-v3/include/bits/ostream.h
  6a70bf77d2af097179dfd48fd590bcfc  libstdc++-v3/include/bits/ostream.tcc
  45be89105fdcb6d509423a07db106ba3  libstdc++-v3/include/bits/ostream_insert.h
! bc72db5fba502844a08e378d07cbad1c  libstdc++-v3/include/bits/out_ptr.h
  8a8a359cdcce476304e0c7a41f405f02  libstdc++-v3/include/bits/parse_numbers.h
  5c23229552297aa0937e1eac544c60e6  libstdc++-v3/include/bits/postypes.h
  5f3f6621fe24c343d0311ca670a32765  libstdc++-v3/include/bits/predefined_ops.h
  f79ccf9398c9456b79cbbb762eebd943  libstdc++-v3/include/bits/ptr_traits.h
  083ee9dbf4a8803183e5f6a5d02a1c4f  libstdc++-v3/include/bits/quoted_string.h
  053e1de38aef43bbaf1a9a4af1e3ad2f  libstdc++-v3/include/bits/random.h
! fa53e0cefb08b6413dcde80c93162b8a  libstdc++-v3/include/bits/random.tcc
  b0c29f09a819ac9aa11c3507409c11ef  libstdc++-v3/include/bits/range_access.h
! 77873fdd92445c1e5f197fb6e3f188b2  libstdc++-v3/include/bits/ranges_algo.h
  2739c66cfdc38cbad18771e2317ce548  libstdc++-v3/include/bits/ranges_algobase.h
! ddeb43e42ef0615042e595a570f7deaf  libstdc++-v3/include/bits/ranges_base.h
! 883a0bd952f6950bede431ee3aaa6be1  libstdc++-v3/include/bits/ranges_cmp.h
  4a47bd7ff3afbf353ca7c097f3fda6f8  libstdc++-v3/include/bits/ranges_uninitialized.h
  13ab6526ab5b8cd5e9a7b12e6bf761f6  libstdc++-v3/include/bits/ranges_util.h
  222a1067e3c63fb19ed0996234a84884  libstdc++-v3/include/bits/refwrap.h
  5b95e35539d0071176396cd82a6072b7  libstdc++-v3/include/bits/regex.h
! e0c67a0c1d1048900a9de5bbfafd0409  libstdc++-v3/include/bits/regex.tcc
  8574b29ef7f78afa13942ca1525502d5  libstdc++-v3/include/bits/regex_automaton.h
! db6c4ceeaebe1bbdea30ce7e55390464  libstdc++-v3/include/bits/regex_automaton.tcc
! 3fb4404ae5fd3a1a04b4d5d47bc5f1ad  libstdc++-v3/include/bits/regex_compiler.h
! 54dfcbf3783267b6229ab8b029ef5505  libstdc++-v3/include/bits/regex_compiler.tcc
  fce0df5e6bf950f27228a12451fbd226  libstdc++-v3/include/bits/regex_constants.h
  6ca3bfbf5aafc309148a9ff8a58b7b80  libstdc++-v3/include/bits/regex_error.h
  d36de2845480e2dc51861df7b179eadc  libstdc++-v3/include/bits/regex_executor.h
! cffd73f057e9c37be8d8f13e0e97c5c0  libstdc++-v3/include/bits/regex_executor.tcc
  15dd5944c7cd223ab035591c92c65fc5  libstdc++-v3/include/bits/regex_scanner.h
  27e294ed24336b703f9fb025b6d69f51  libstdc++-v3/include/bits/regex_scanner.tcc
  22a9676313472917eaaccc27ddfb10f4  libstdc++-v3/include/bits/requires_hosted.h
*************** e447352e9df05640e24a5f9f85d288ce  libstd
*** 132703,132724 ****
  6e1cf8eef346161386cb55d7106c60d6  libstdc++-v3/include/bits/std_function.h
  5b3bd66db6802c89905c016f488a41d0  libstdc++-v3/include/bits/std_mutex.h
  bb19c550085b43f6251959e05791f4c6  libstdc++-v3/include/bits/std_thread.h
! 551d2aa52bb5f639424652a68f20dae7  libstdc++-v3/include/bits/stl_algo.h
  1b4047632ad5c13fb8b11a4e72df1ff6  libstdc++-v3/include/bits/stl_algobase.h
  50378fb402a4f63ad663a2763f5cd08a  libstdc++-v3/include/bits/stl_bvector.h
! 8b19d3c29a5f7649b167865966c49a51  libstdc++-v3/include/bits/stl_construct.h
  bf0e42750b9f0a11336d82706c33fedb  libstdc++-v3/include/bits/stl_deque.h
! 8bd7e182b77be76921e6f1bead44217f  libstdc++-v3/include/bits/stl_function.h
  c6b4511debfbf2f7971dbae97dbcc998  libstdc++-v3/include/bits/stl_heap.h
  1863181d6606bfedafc789dd95b2c52d  libstdc++-v3/include/bits/stl_iterator.h
! e377e5172a37470411327d66be24b6a0  libstdc++-v3/include/bits/stl_iterator_base_funcs.h
  252307c6170fb8ddbc0bb33c0c80f35b  libstdc++-v3/include/bits/stl_iterator_base_types.h
  4f93444bfce714698d1c4bd36a134164  libstdc++-v3/include/bits/stl_list.h
  97a36b70cb7fa35e0e6b43ae0d6dc125  libstdc++-v3/include/bits/stl_map.h
  2525257e0e5e980d1c62e5c335ccd152  libstdc++-v3/include/bits/stl_multimap.h
  ed492cb12f700a39913c303324c4d3d0  libstdc++-v3/include/bits/stl_multiset.h
  480b44132613538ac869874bf3fc4e45  libstdc++-v3/include/bits/stl_numeric.h
! e767ec7b42d6a51baeeb74d932a1174f  libstdc++-v3/include/bits/stl_pair.h
  c187c580a48d3cfe2a81c4230220002d  libstdc++-v3/include/bits/stl_queue.h
  ef960a69cca203133e14f230f029c45f  libstdc++-v3/include/bits/stl_raw_storage_iter.h
  8b75378d24bf1cd680dec9034e5fa6cf  libstdc++-v3/include/bits/stl_relops.h
--- 133374,133395 ----
  6e1cf8eef346161386cb55d7106c60d6  libstdc++-v3/include/bits/std_function.h
  5b3bd66db6802c89905c016f488a41d0  libstdc++-v3/include/bits/std_mutex.h
  bb19c550085b43f6251959e05791f4c6  libstdc++-v3/include/bits/std_thread.h
! 49ff8521bb744ea31d55e5841e423121  libstdc++-v3/include/bits/stl_algo.h
  1b4047632ad5c13fb8b11a4e72df1ff6  libstdc++-v3/include/bits/stl_algobase.h
  50378fb402a4f63ad663a2763f5cd08a  libstdc++-v3/include/bits/stl_bvector.h
! f65ad579a9fde04c6c8620718aa6be84  libstdc++-v3/include/bits/stl_construct.h
  bf0e42750b9f0a11336d82706c33fedb  libstdc++-v3/include/bits/stl_deque.h
! b1eae8c031c2747c271f6dc4197697d5  libstdc++-v3/include/bits/stl_function.h
  c6b4511debfbf2f7971dbae97dbcc998  libstdc++-v3/include/bits/stl_heap.h
  1863181d6606bfedafc789dd95b2c52d  libstdc++-v3/include/bits/stl_iterator.h
! 67178d5a92899687c454183acba73197  libstdc++-v3/include/bits/stl_iterator_base_funcs.h
  252307c6170fb8ddbc0bb33c0c80f35b  libstdc++-v3/include/bits/stl_iterator_base_types.h
  4f93444bfce714698d1c4bd36a134164  libstdc++-v3/include/bits/stl_list.h
  97a36b70cb7fa35e0e6b43ae0d6dc125  libstdc++-v3/include/bits/stl_map.h
  2525257e0e5e980d1c62e5c335ccd152  libstdc++-v3/include/bits/stl_multimap.h
  ed492cb12f700a39913c303324c4d3d0  libstdc++-v3/include/bits/stl_multiset.h
  480b44132613538ac869874bf3fc4e45  libstdc++-v3/include/bits/stl_numeric.h
! 6e80cbf443dcf700e091712db15a3a4c  libstdc++-v3/include/bits/stl_pair.h
  c187c580a48d3cfe2a81c4230220002d  libstdc++-v3/include/bits/stl_queue.h
  ef960a69cca203133e14f230f029c45f  libstdc++-v3/include/bits/stl_raw_storage_iter.h
  8b75378d24bf1cd680dec9034e5fa6cf  libstdc++-v3/include/bits/stl_relops.h
*************** ef960a69cca203133e14f230f029c45f  libstd
*** 132726,132733 ****
  c48928d63732da42056105c33cf860ff  libstdc++-v3/include/bits/stl_stack.h
  e090d043a8cdc4479dde4340af533938  libstdc++-v3/include/bits/stl_tempbuf.h
  c0874190fac1e81e66ba299a8440f4e4  libstdc++-v3/include/bits/stl_tree.h
! 39e026c8777c826d5bfa7a763d177052  libstdc++-v3/include/bits/stl_uninitialized.h
! 396190da81f504591c361c73a800287e  libstdc++-v3/include/bits/stl_vector.h
  c021eea8ffb782c5cae76e39deaa7369  libstdc++-v3/include/bits/stream_iterator.h
  69fecd7181ec71c850dba6e19cf9a58c  libstdc++-v3/include/bits/streambuf.tcc
  512415517592a497decfef44b9a855e2  libstdc++-v3/include/bits/streambuf_iterator.h
--- 133397,133404 ----
  c48928d63732da42056105c33cf860ff  libstdc++-v3/include/bits/stl_stack.h
  e090d043a8cdc4479dde4340af533938  libstdc++-v3/include/bits/stl_tempbuf.h
  c0874190fac1e81e66ba299a8440f4e4  libstdc++-v3/include/bits/stl_tree.h
! ebd80c8a3e4b124803c9869be8fac1fa  libstdc++-v3/include/bits/stl_uninitialized.h
! 8490e2fecef4cd7900fd9fb673090379  libstdc++-v3/include/bits/stl_vector.h
  c021eea8ffb782c5cae76e39deaa7369  libstdc++-v3/include/bits/stream_iterator.h
  69fecd7181ec71c850dba6e19cf9a58c  libstdc++-v3/include/bits/streambuf.tcc
  512415517592a497decfef44b9a855e2  libstdc++-v3/include/bits/streambuf_iterator.h
*************** bde7ef0245c6a48f1e86c1154662b9b3  libstd
*** 132739,132745 ****
  0cd52362d57cc5fc0e0d07fab7c47853  libstdc++-v3/include/bits/unicode.h
  8ee97d70f6b24f44125831164552e776  libstdc++-v3/include/bits/uniform_int_dist.h
  0d7174a622374816c75ac03f78148fc9  libstdc++-v3/include/bits/unique_lock.h
! 2a66eb116b958ff020936c2699398133  libstdc++-v3/include/bits/unique_ptr.h
  d61a895413ba9f4aeab69b1af27eef73  libstdc++-v3/include/bits/unordered_map.h
  d85d327f1ca34fa9a7c0a77642f2da39  libstdc++-v3/include/bits/unordered_set.h
  a29de34311f884bb0a7bb8854fe4ce34  libstdc++-v3/include/bits/uses_allocator.h
--- 133410,133416 ----
  0cd52362d57cc5fc0e0d07fab7c47853  libstdc++-v3/include/bits/unicode.h
  8ee97d70f6b24f44125831164552e776  libstdc++-v3/include/bits/uniform_int_dist.h
  0d7174a622374816c75ac03f78148fc9  libstdc++-v3/include/bits/unique_lock.h
! 2699aa85778bc50b38ae3510bc869f15  libstdc++-v3/include/bits/unique_ptr.h
  d61a895413ba9f4aeab69b1af27eef73  libstdc++-v3/include/bits/unordered_map.h
  d85d327f1ca34fa9a7c0a77642f2da39  libstdc++-v3/include/bits/unordered_set.h
  a29de34311f884bb0a7bb8854fe4ce34  libstdc++-v3/include/bits/uses_allocator.h
*************** a462fb6c466b34fa25624b7fab6323e3  libstd
*** 132749,132757 ****
  315a9c07b613e42074ea6b8f4df4836a  libstdc++-v3/include/bits/valarray_array.h
  3ddbcccf58411251c2825ae41b697844  libstdc++-v3/include/bits/valarray_array.tcc
  a4c99020fc6d28e94d24a3f60a71b6ec  libstdc++-v3/include/bits/valarray_before.h
! 219f288570a1a64f28e936ca09d7eb14  libstdc++-v3/include/bits/vector.tcc
! 1ed2014de22effe1785695d161d0d30e  libstdc++-v3/include/bits/version.def
! f3e08e3719deb8aaf3a38d4131c0ce50  libstdc++-v3/include/bits/version.h
  0db0dfc5d016435e64398e3bb70098d3  libstdc++-v3/include/bits/version.tpl
  6ccd70c0c36dd38ba559c1fc5a05fbd0  libstdc++-v3/include/c/cassert
  c31b54f25b2f8c7ca3ca3eec930d4e1d  libstdc++-v3/include/c/cctype
--- 133420,133428 ----
  315a9c07b613e42074ea6b8f4df4836a  libstdc++-v3/include/bits/valarray_array.h
  3ddbcccf58411251c2825ae41b697844  libstdc++-v3/include/bits/valarray_array.tcc
  a4c99020fc6d28e94d24a3f60a71b6ec  libstdc++-v3/include/bits/valarray_before.h
! 0d0aa3ff481b12a643187f08a07e9944  libstdc++-v3/include/bits/vector.tcc
! 9d5c593eec1b20e4979286edd0c20387  libstdc++-v3/include/bits/version.def
! 378d8d3b9b446acd51b00d10307488b3  libstdc++-v3/include/bits/version.h
  0db0dfc5d016435e64398e3bb70098d3  libstdc++-v3/include/bits/version.tpl
  6ccd70c0c36dd38ba559c1fc5a05fbd0  libstdc++-v3/include/c/cassert
  c31b54f25b2f8c7ca3ca3eec930d4e1d  libstdc++-v3/include/c/cctype
*************** ba651830ef81cb6553fde41b9364bf09  libstd
*** 132787,132795 ****
  89fc2cd5fc780fd78514769a27629c3b  libstdc++-v3/include/c_compatibility/signal.h
  7819a7d000064f8b11fb803ca4bf35a9  libstdc++-v3/include/c_compatibility/stdarg.h
  e8f0a5b02e79903187f6f348af2a2914  libstdc++-v3/include/c_compatibility/stdatomic.h
! c59b5e0eca126fcdb5d60553d7306e06  libstdc++-v3/include/c_compatibility/stdbit.h
  bd4f9cf4d767abec63404e4abde2e546  libstdc++-v3/include/c_compatibility/stdbool.h
! fca90211dcbb917c2de0be1f5c2aafb9  libstdc++-v3/include/c_compatibility/stdckdint.h
  14c6a4cffa1b2fea2e123d46e682c66c  libstdc++-v3/include/c_compatibility/stddef.h
  60d4a67454c28e4a3cf6d5ec2a8ea211  libstdc++-v3/include/c_compatibility/stdint.h
  81ae737e201a48c65603b147fcf85175  libstdc++-v3/include/c_compatibility/stdio.h
--- 133458,133466 ----
  89fc2cd5fc780fd78514769a27629c3b  libstdc++-v3/include/c_compatibility/signal.h
  7819a7d000064f8b11fb803ca4bf35a9  libstdc++-v3/include/c_compatibility/stdarg.h
  e8f0a5b02e79903187f6f348af2a2914  libstdc++-v3/include/c_compatibility/stdatomic.h
! c2f557a28c1227cff940c6918cba6832  libstdc++-v3/include/c_compatibility/stdbit.h
  bd4f9cf4d767abec63404e4abde2e546  libstdc++-v3/include/c_compatibility/stdbool.h
! 20542d5b060306ef86fcc79ec742c748  libstdc++-v3/include/c_compatibility/stdckdint.h
  14c6a4cffa1b2fea2e123d46e682c66c  libstdc++-v3/include/c_compatibility/stddef.h
  60d4a67454c28e4a3cf6d5ec2a8ea211  libstdc++-v3/include/c_compatibility/stdint.h
  81ae737e201a48c65603b147fcf85175  libstdc++-v3/include/c_compatibility/stdio.h
*************** f480e69017dc35cc6fab6630bada4617  libstd
*** 132810,132816 ****
  aeb1d3638d20d4792a586c61c7c12544  libstdc++-v3/include/c_global/ciso646
  9d260929c3a8f563e7d273517c02af88  libstdc++-v3/include/c_global/climits
  a5b91f8c38eddd257a048cb2d3085834  libstdc++-v3/include/c_global/clocale
! 6452d0c55d05c54dbae7cbd855dfeceb  libstdc++-v3/include/c_global/cmath
  5674356fc9542152636dace9bfc3c2c8  libstdc++-v3/include/c_global/csetjmp
  41b8204a8236e2ec4001289746a8abef  libstdc++-v3/include/c_global/csignal
  e32033f054c4ecf20bd8d5e93aebf80d  libstdc++-v3/include/c_global/cstdalign
--- 133481,133487 ----
  aeb1d3638d20d4792a586c61c7c12544  libstdc++-v3/include/c_global/ciso646
  9d260929c3a8f563e7d273517c02af88  libstdc++-v3/include/c_global/climits
  a5b91f8c38eddd257a048cb2d3085834  libstdc++-v3/include/c_global/clocale
! 8c328b3732cea7e0296e6b53109bc92f  libstdc++-v3/include/c_global/cmath
  5674356fc9542152636dace9bfc3c2c8  libstdc++-v3/include/c_global/csetjmp
  41b8204a8236e2ec4001289746a8abef  libstdc++-v3/include/c_global/csignal
  e32033f054c4ecf20bd8d5e93aebf80d  libstdc++-v3/include/c_global/cstdalign
*************** dd865626b86d03c572a7b3ba8d459208  libstd
*** 132852,132859 ****
  6a32c920e39a02b78bb914632c4cc645  libstdc++-v3/include/debug/deque
  8b11b77754a41dfc2a3b22f49f17a211  libstdc++-v3/include/debug/formatter.h
  da0db59aefe20f491dc59d3f49cf1c6c  libstdc++-v3/include/debug/forward_list
! f24076b350dc9e5a87d645cb1c04b3fe  libstdc++-v3/include/debug/functions.h
! e8351ce24d977c21ec504a56e9a0fc71  libstdc++-v3/include/debug/helper_functions.h
  c671ee90f8af338c7b2aad28fb41de30  libstdc++-v3/include/debug/list
  48ad2bbf8cb94bbfb81869406475eaa3  libstdc++-v3/include/debug/macros.h
  c5d850b63f4a5052d58fbaa66c5a6b9e  libstdc++-v3/include/debug/map
--- 133523,133530 ----
  6a32c920e39a02b78bb914632c4cc645  libstdc++-v3/include/debug/deque
  8b11b77754a41dfc2a3b22f49f17a211  libstdc++-v3/include/debug/formatter.h
  da0db59aefe20f491dc59d3f49cf1c6c  libstdc++-v3/include/debug/forward_list
! ffc8e7ea0022fb867df992083c41f744  libstdc++-v3/include/debug/functions.h
! 91b41c8031068fe38be9d573cf78610e  libstdc++-v3/include/debug/helper_functions.h
  c671ee90f8af338c7b2aad28fb41de30  libstdc++-v3/include/debug/list
  48ad2bbf8cb94bbfb81869406475eaa3  libstdc++-v3/include/debug/macros.h
  c5d850b63f4a5052d58fbaa66c5a6b9e  libstdc++-v3/include/debug/map
*************** d4b2de3d2ea189b4008c7a08fac32061  libstd
*** 132862,132868 ****
  2c68f73d9eb34b023d03705e9f4c8526  libstdc++-v3/include/debug/multiset.h
  7e076b99794725488c411f9d02db1779  libstdc++-v3/include/debug/safe_base.h
  d404a676a7c00def9f1a8a3faa912a9f  libstdc++-v3/include/debug/safe_container.h
! 5d2bcdfe4c3d23a194bb54304ce92009  libstdc++-v3/include/debug/safe_iterator.h
  d6bcf138ca31811eb1e7b8c10ea1b3b8  libstdc++-v3/include/debug/safe_iterator.tcc
  237db896edaed32e5d11baf81abf1ddd  libstdc++-v3/include/debug/safe_local_iterator.h
  5d9deaf3dd1780277b9f1864d26b19ed  libstdc++-v3/include/debug/safe_local_iterator.tcc
--- 133533,133539 ----
  2c68f73d9eb34b023d03705e9f4c8526  libstdc++-v3/include/debug/multiset.h
  7e076b99794725488c411f9d02db1779  libstdc++-v3/include/debug/safe_base.h
  d404a676a7c00def9f1a8a3faa912a9f  libstdc++-v3/include/debug/safe_container.h
! 2d5e2ba43b293558b2dcf79f8b217c7d  libstdc++-v3/include/debug/safe_iterator.h
  d6bcf138ca31811eb1e7b8c10ea1b3b8  libstdc++-v3/include/debug/safe_iterator.tcc
  237db896edaed32e5d11baf81abf1ddd  libstdc++-v3/include/debug/safe_local_iterator.h
  5d9deaf3dd1780277b9f1864d26b19ed  libstdc++-v3/include/debug/safe_local_iterator.tcc
*************** e93b2cb0d9bc080141a7be39bc3a07d0  libstd
*** 133049,133055 ****
  83c2bd11fd05fc5ea9738c73d7188437  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp
  0705e2e73b4f4c036a79952a06ed4ffe  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp
  32b309c25c17d20855b23ce25fba75dd  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp
! 13aa20d9518130323a40374477d1092f  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
  886b707ab29cc7adbeccbc8886dc06ad  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp
  a03bf41a54bccd499e9a1b58101c05d4  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp
  4e1469c60d678de2406ed9bf2b67ebd1  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp
--- 133720,133726 ----
  83c2bd11fd05fc5ea9738c73d7188437  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp
  0705e2e73b4f4c036a79952a06ed4ffe  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp
  32b309c25c17d20855b23ce25fba75dd  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp
! d6ef55967a7e00056e54559f29b24d06  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
  886b707ab29cc7adbeccbc8886dc06ad  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp
  a03bf41a54bccd499e9a1b58101c05d4  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp
  4e1469c60d678de2406ed9bf2b67ebd1  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp
*************** fcc955b62295ec860d3325dcc560c84d  libstd
*** 133207,133213 ****
  2cf343e6aa6c9958f694b82002cb0ebc  libstdc++-v3/include/ext/pb_ds/tree_policy.hpp
  88e49bb63ce2d7e0b660d8e6d42f380b  libstdc++-v3/include/ext/pb_ds/trie_policy.hpp
  5a26ba93d8f758420b81f277bbf2b9ae  libstdc++-v3/include/ext/pod_char_traits.h
! c3b861479f216b935dce1631e21f1f40  libstdc++-v3/include/ext/pointer.h
  632b168bc3f59ee2f8d768f850477130  libstdc++-v3/include/ext/pool_allocator.h
  b322a22912e51ceadd84487a08225730  libstdc++-v3/include/ext/random
  d4823ad58701997da39ea15b0978cef0  libstdc++-v3/include/ext/random.tcc
--- 133878,133884 ----
  2cf343e6aa6c9958f694b82002cb0ebc  libstdc++-v3/include/ext/pb_ds/tree_policy.hpp
  88e49bb63ce2d7e0b660d8e6d42f380b  libstdc++-v3/include/ext/pb_ds/trie_policy.hpp
  5a26ba93d8f758420b81f277bbf2b9ae  libstdc++-v3/include/ext/pod_char_traits.h
! 4ad79df4aafab52a65d948cf79db6e77  libstdc++-v3/include/ext/pointer.h
  632b168bc3f59ee2f8d768f850477130  libstdc++-v3/include/ext/pool_allocator.h
  b322a22912e51ceadd84487a08225730  libstdc++-v3/include/ext/random
  d4823ad58701997da39ea15b0978cef0  libstdc++-v3/include/ext/random.tcc
*************** eb20df8190cb844a12f9fd68d043bcf0  libstd
*** 133270,133276 ****
  44d4d211c772a6d7858623a3153850b1  libstdc++-v3/include/parallel/types.h
  7997eb362a00f19f0f8e29fe72718fba  libstdc++-v3/include/parallel/unique_copy.h
  322d276913feb4b729019573db0593af  libstdc++-v3/include/parallel/workstealing.h
! 37ac2dd1c7910a98bcbb9619d27add88  libstdc++-v3/include/precompiled/extc++.h
  f0e7cc468f73a8275305a72b5912aab4  libstdc++-v3/include/precompiled/stdc++.h
  a62eb60403f5499c2d4a096e6a68b92b  libstdc++-v3/include/precompiled/stdtr1c++.h
  75cfb36aeb3ed8672bb4e2957272203c  libstdc++-v3/include/pstl/LICENSE.txt
--- 133941,133947 ----
  44d4d211c772a6d7858623a3153850b1  libstdc++-v3/include/parallel/types.h
  7997eb362a00f19f0f8e29fe72718fba  libstdc++-v3/include/parallel/unique_copy.h
  322d276913feb4b729019573db0593af  libstdc++-v3/include/parallel/workstealing.h
! 1bef868830f6ae886926e0673e218c09  libstdc++-v3/include/precompiled/extc++.h
  f0e7cc468f73a8275305a72b5912aab4  libstdc++-v3/include/precompiled/stdc++.h
  a62eb60403f5499c2d4a096e6a68b92b  libstdc++-v3/include/precompiled/stdtr1c++.h
  75cfb36aeb3ed8672bb4e2957272203c  libstdc++-v3/include/pstl/LICENSE.txt
*************** f9819c3fbab884d0ff4d0150023c3826  libstd
*** 133290,133296 ****
  132bbb9d90975f7f11e2ba4b77bc3bbf  libstdc++-v3/include/pstl/numeric_impl.h
  531b6552c2b0ded549ed9bc9b03bebf4  libstdc++-v3/include/pstl/parallel_backend.h
  c6ea5607259b8e63bb887db39136b942  libstdc++-v3/include/pstl/parallel_backend_serial.h
! eb7da829c52c944d7125a8a18352a312  libstdc++-v3/include/pstl/parallel_backend_tbb.h
  e128e525f970f3948feec2f4750919a8  libstdc++-v3/include/pstl/parallel_backend_utils.h
  688f2289e52048ec70461174eadd2efe  libstdc++-v3/include/pstl/parallel_impl.h
  f1cc3238df41adc204bc4f90accc63f3  libstdc++-v3/include/pstl/pstl_config.h
--- 133961,133967 ----
  132bbb9d90975f7f11e2ba4b77bc3bbf  libstdc++-v3/include/pstl/numeric_impl.h
  531b6552c2b0ded549ed9bc9b03bebf4  libstdc++-v3/include/pstl/parallel_backend.h
  c6ea5607259b8e63bb887db39136b942  libstdc++-v3/include/pstl/parallel_backend_serial.h
! e7017931c30ac7c644b653a1a29fbd0a  libstdc++-v3/include/pstl/parallel_backend_tbb.h
  e128e525f970f3948feec2f4750919a8  libstdc++-v3/include/pstl/parallel_backend_utils.h
  688f2289e52048ec70461174eadd2efe  libstdc++-v3/include/pstl/parallel_impl.h
  f1cc3238df41adc204bc4f90accc63f3  libstdc++-v3/include/pstl/pstl_config.h
*************** f1cc3238df41adc204bc4f90accc63f3  libstd
*** 133300,133323 ****
  9eb208714fb55de6cfffb684575b47e3  libstdc++-v3/include/std/algorithm
  d891b88417c6426b21aee63c74ec4e98  libstdc++-v3/include/std/any
  d434b6703454e6fece0bb6ab907894d5  libstdc++-v3/include/std/array
! 0629d22f554a52275f62402292b23e12  libstdc++-v3/include/std/atomic
  4f32c26cb6bb867bc482113b2f4a9eb1  libstdc++-v3/include/std/barrier
  2a2983a946c8ff2f85e6ee4fedaafdc7  libstdc++-v3/include/std/bit
  a2b26793e4e6009d6ffdd683cc309894  libstdc++-v3/include/std/bitset
  b992fa2a4889a430ba299555276bcf81  libstdc++-v3/include/std/charconv
! cb5ee04f24eb3f44950a511e7d8fd2e7  libstdc++-v3/include/std/chrono
  a90e2b9ed2c236c92f3f2387a39a0ac8  libstdc++-v3/include/std/codecvt
  73ad0b394fec64fa4f07972401973741  libstdc++-v3/include/std/complex
! c3c1dced3bd41cb17dfb1d65d089f9d3  libstdc++-v3/include/std/concepts
  4d4392c4b49029819ced576ee163366b  libstdc++-v3/include/std/condition_variable
  264518c8a6bbba954d8dfbc74162a7e2  libstdc++-v3/include/std/coroutine
  55eed7b7857afaaeaf8138c0485a60fa  libstdc++-v3/include/std/deque
  ae96a272e65886b9386e26db37971da1  libstdc++-v3/include/std/execution
! 13f5f9752c9229e8ce2f5a145ba63b2a  libstdc++-v3/include/std/expected
  c2e511ae49957a9f02446e544d201582  libstdc++-v3/include/std/filesystem
! 5aa136a1aaeb7658dee6ccdd5cb6e5c6  libstdc++-v3/include/std/flat_map
  8a5fa0a4bb554b2db8c2fed26a6993ca  libstdc++-v3/include/std/flat_set
! 52dd7d21877af7f366c62d1f8e91449b  libstdc++-v3/include/std/format
  fa4316749922813b44f2ee282452813b  libstdc++-v3/include/std/forward_list
  e790ae6877466aa86b47f36d201e8563  libstdc++-v3/include/std/fstream
  5b0f9576e4006baf8a1aba30625aa30c  libstdc++-v3/include/std/functional
--- 133971,133994 ----
  9eb208714fb55de6cfffb684575b47e3  libstdc++-v3/include/std/algorithm
  d891b88417c6426b21aee63c74ec4e98  libstdc++-v3/include/std/any
  d434b6703454e6fece0bb6ab907894d5  libstdc++-v3/include/std/array
! ced0f87b396ff4a012df9de2ab66f94f  libstdc++-v3/include/std/atomic
  4f32c26cb6bb867bc482113b2f4a9eb1  libstdc++-v3/include/std/barrier
  2a2983a946c8ff2f85e6ee4fedaafdc7  libstdc++-v3/include/std/bit
  a2b26793e4e6009d6ffdd683cc309894  libstdc++-v3/include/std/bitset
  b992fa2a4889a430ba299555276bcf81  libstdc++-v3/include/std/charconv
! 3bf203fb1e55bba4dd7bc24547df175d  libstdc++-v3/include/std/chrono
  a90e2b9ed2c236c92f3f2387a39a0ac8  libstdc++-v3/include/std/codecvt
  73ad0b394fec64fa4f07972401973741  libstdc++-v3/include/std/complex
! 202856e763349869c3ec034d584405ca  libstdc++-v3/include/std/concepts
  4d4392c4b49029819ced576ee163366b  libstdc++-v3/include/std/condition_variable
  264518c8a6bbba954d8dfbc74162a7e2  libstdc++-v3/include/std/coroutine
  55eed7b7857afaaeaf8138c0485a60fa  libstdc++-v3/include/std/deque
  ae96a272e65886b9386e26db37971da1  libstdc++-v3/include/std/execution
! c7512fdd688111026ada39c2eff08f8e  libstdc++-v3/include/std/expected
  c2e511ae49957a9f02446e544d201582  libstdc++-v3/include/std/filesystem
! 3a7d360b3d31ff6af5a3e9bcd9e077b0  libstdc++-v3/include/std/flat_map
  8a5fa0a4bb554b2db8c2fed26a6993ca  libstdc++-v3/include/std/flat_set
! e3ce6ca5d4a7e5215163adf9d3010c65  libstdc++-v3/include/std/format
  fa4316749922813b44f2ee282452813b  libstdc++-v3/include/std/forward_list
  e790ae6877466aa86b47f36d201e8563  libstdc++-v3/include/std/fstream
  5b0f9576e4006baf8a1aba30625aa30c  libstdc++-v3/include/std/functional
*************** f7460188b5b2ffa503809fc888af8523  libstd
*** 133330,133342 ****
  f025fc1b4184111fce84c2384de325d2  libstdc++-v3/include/std/istream
  b33cecab88c41408b5c244cc328a9cae  libstdc++-v3/include/std/iterator
  0238ca5f0c5de4952acb632ab76978e1  libstdc++-v3/include/std/latch
! ed6663b9ff729b09c2bacefa3568d1fc  libstdc++-v3/include/std/limits
  c9ef2791c2dc0d6c98a1a85c8f6aa473  libstdc++-v3/include/std/list
  f4af31191dea172207576960ad71d42d  libstdc++-v3/include/std/locale
  8b76fc7da76f0579c2fd1f22821d03be  libstdc++-v3/include/std/map
  ba52fc2e0904a31a08183de15bd8c424  libstdc++-v3/include/std/memory
  9e86c11ff29d60fddf403674e9182b36  libstdc++-v3/include/std/memory_resource
! a7b8e00d6cf56ea696ec15140b7c1d15  libstdc++-v3/include/std/mutex
  ef0d0725f5b70a4c1b5b62b84b2b63f7  libstdc++-v3/include/std/numbers
  dc13616d50b61cc61eb87d25bacd6a19  libstdc++-v3/include/std/numeric
  79b194dcc53ff3f04fcf800d0fc26cfa  libstdc++-v3/include/std/optional
--- 134001,134013 ----
  f025fc1b4184111fce84c2384de325d2  libstdc++-v3/include/std/istream
  b33cecab88c41408b5c244cc328a9cae  libstdc++-v3/include/std/iterator
  0238ca5f0c5de4952acb632ab76978e1  libstdc++-v3/include/std/latch
! 6fee3bd2ae266e1c139222a8029a295a  libstdc++-v3/include/std/limits
  c9ef2791c2dc0d6c98a1a85c8f6aa473  libstdc++-v3/include/std/list
  f4af31191dea172207576960ad71d42d  libstdc++-v3/include/std/locale
  8b76fc7da76f0579c2fd1f22821d03be  libstdc++-v3/include/std/map
  ba52fc2e0904a31a08183de15bd8c424  libstdc++-v3/include/std/memory
  9e86c11ff29d60fddf403674e9182b36  libstdc++-v3/include/std/memory_resource
! 96d4004072aee0df9b1cac29de7649c2  libstdc++-v3/include/std/mutex
  ef0d0725f5b70a4c1b5b62b84b2b63f7  libstdc++-v3/include/std/numbers
  dc13616d50b61cc61eb87d25bacd6a19  libstdc++-v3/include/std/numeric
  79b194dcc53ff3f04fcf800d0fc26cfa  libstdc++-v3/include/std/optional
*************** e03c583ee7c5891df1c7b190275435c9  libstd
*** 133344,133352 ****
  0f1bf0fdfc91c5159496ce06fc478adc  libstdc++-v3/include/std/print
  317c818ab1030cf117c8d8ef03df06aa  libstdc++-v3/include/std/queue
  01746ff9db8573f15b943b0c36cce6a8  libstdc++-v3/include/std/random
! e5f5a518f9ac990695882278e1955777  libstdc++-v3/include/std/ranges
  a28bf4bed6789b61535d4b05ff48ba76  libstdc++-v3/include/std/ratio
! 400d95a1fd416911b5c47562d7a586cf  libstdc++-v3/include/std/regex
  1bad2aed72c4537e7f08d24c1bf7d375  libstdc++-v3/include/std/scoped_allocator
  d0ccdc68b53e4f9522c73c04bfb81928  libstdc++-v3/include/std/semaphore
  9b8d5c4868a64371c6591ccd2d8ae5f0  libstdc++-v3/include/std/set
--- 134015,134023 ----
  0f1bf0fdfc91c5159496ce06fc478adc  libstdc++-v3/include/std/print
  317c818ab1030cf117c8d8ef03df06aa  libstdc++-v3/include/std/queue
  01746ff9db8573f15b943b0c36cce6a8  libstdc++-v3/include/std/random
! 851c7958c7b0448ac5e24899679bbd02  libstdc++-v3/include/std/ranges
  a28bf4bed6789b61535d4b05ff48ba76  libstdc++-v3/include/std/ratio
! 7d864de507d428ace2b6886ab9bb2610  libstdc++-v3/include/std/regex
  1bad2aed72c4537e7f08d24c1bf7d375  libstdc++-v3/include/std/scoped_allocator
  d0ccdc68b53e4f9522c73c04bfb81928  libstdc++-v3/include/std/semaphore
  9b8d5c4868a64371c6591ccd2d8ae5f0  libstdc++-v3/include/std/set
*************** ee32950ba29d7cda3e788de0776d8c16  libstd
*** 133354,133374 ****
  61856a4d90554afdb8c60710d5dea8c5  libstdc++-v3/include/std/source_location
  4b3e4b7e34641d76a52fcd6e71a90970  libstdc++-v3/include/std/span
  148ae450ade3ff3a68ef3e55c1b19e46  libstdc++-v3/include/std/spanstream
! 885b7d229d8dcf3ad5bb087b5a5a1fb4  libstdc++-v3/include/std/sstream
  996b935103050e40bdc3c486d0a1dc98  libstdc++-v3/include/std/stack
  ceee5b8e3956e8b0b5cf0c37821eb61a  libstdc++-v3/include/std/stacktrace
  03274bc404214a9a2c8235a5ae90f4fd  libstdc++-v3/include/std/stdexcept
  ece7d2fc2f03efd22a5d6ce6dc618b1b  libstdc++-v3/include/std/stdfloat
  ce747bb13a47b4ef33f5a3d2d11c472f  libstdc++-v3/include/std/stop_token
! 56f8a72abc9e7160f18f9a373325a008  libstdc++-v3/include/std/streambuf
  905475b4fea23e39df3f56c178517ade  libstdc++-v3/include/std/string
! c5a4df8fdbbe4b3d33d0b52db500e16d  libstdc++-v3/include/std/string_view
  362d06f047ef5267af7587a8d12e0c0d  libstdc++-v3/include/std/syncstream
  21988a8b4bf87b01fc566fe8659ab2cc  libstdc++-v3/include/std/system_error
  608edef7344e2e25c7b00170df6fa9e6  libstdc++-v3/include/std/text_encoding
  96f0baf96cfb63439fb481bbfb6b17da  libstdc++-v3/include/std/thread
! af3d3134c33d40c51e1d3493f1fb7cc4  libstdc++-v3/include/std/tuple
! 8f22fc68b35d01856ee0826270cfdc94  libstdc++-v3/include/std/type_traits
  237682577d22ec3f9f5046abf0acd8e7  libstdc++-v3/include/std/typeindex
  520c52362f53e18f20838693cfd131bf  libstdc++-v3/include/std/unordered_map
  c82be32edefaa23cc1228b092d319315  libstdc++-v3/include/std/unordered_set
--- 134025,134045 ----
  61856a4d90554afdb8c60710d5dea8c5  libstdc++-v3/include/std/source_location
  4b3e4b7e34641d76a52fcd6e71a90970  libstdc++-v3/include/std/span
  148ae450ade3ff3a68ef3e55c1b19e46  libstdc++-v3/include/std/spanstream
! efc4373db67a73c48dd730c0477ab593  libstdc++-v3/include/std/sstream
  996b935103050e40bdc3c486d0a1dc98  libstdc++-v3/include/std/stack
  ceee5b8e3956e8b0b5cf0c37821eb61a  libstdc++-v3/include/std/stacktrace
  03274bc404214a9a2c8235a5ae90f4fd  libstdc++-v3/include/std/stdexcept
  ece7d2fc2f03efd22a5d6ce6dc618b1b  libstdc++-v3/include/std/stdfloat
  ce747bb13a47b4ef33f5a3d2d11c472f  libstdc++-v3/include/std/stop_token
! 2d79bb9c8b0ddfefebfb1f8eb523c977  libstdc++-v3/include/std/streambuf
  905475b4fea23e39df3f56c178517ade  libstdc++-v3/include/std/string
! 9d86912dd89fcd32c17f0b69d2b316d1  libstdc++-v3/include/std/string_view
  362d06f047ef5267af7587a8d12e0c0d  libstdc++-v3/include/std/syncstream
  21988a8b4bf87b01fc566fe8659ab2cc  libstdc++-v3/include/std/system_error
  608edef7344e2e25c7b00170df6fa9e6  libstdc++-v3/include/std/text_encoding
  96f0baf96cfb63439fb481bbfb6b17da  libstdc++-v3/include/std/thread
! 4f791b866ab3bea65acaafbe47c37a04  libstdc++-v3/include/std/tuple
! 4c9882efcebded2d01ce0997d67240ae  libstdc++-v3/include/std/type_traits
  237682577d22ec3f9f5046abf0acd8e7  libstdc++-v3/include/std/typeindex
  520c52362f53e18f20838693cfd131bf  libstdc++-v3/include/std/unordered_map
  c82be32edefaa23cc1228b092d319315  libstdc++-v3/include/std/unordered_set
*************** b60f1331eaf500ccce917653c90c02d1  libstd
*** 133457,133463 ****
  2c05bcb0a318121f8deb29df215a1a76  libstdc++-v3/libsupc++/bad_cast.cc
  ed96195b097b5c5644e754342e3159bc  libstdc++-v3/libsupc++/bad_typeid.cc
  d54dac42098e24364e0e8249016c78b8  libstdc++-v3/libsupc++/class_type_info.cc
! 4750a9c27a7c55d2578910cbec3ba47d  libstdc++-v3/libsupc++/compare
  ee57ed7a57d178fce16de2ec28a8340c  libstdc++-v3/libsupc++/cxxabi.h
  563de5baf2c41e9759583af359bb650e  libstdc++-v3/libsupc++/cxxabi_forced.h
  8aae4a67a18f5276de7831d7a44b7b2f  libstdc++-v3/libsupc++/cxxabi_init_exception.h
--- 134128,134134 ----
  2c05bcb0a318121f8deb29df215a1a76  libstdc++-v3/libsupc++/bad_cast.cc
  ed96195b097b5c5644e754342e3159bc  libstdc++-v3/libsupc++/bad_typeid.cc
  d54dac42098e24364e0e8249016c78b8  libstdc++-v3/libsupc++/class_type_info.cc
! 4ac7b10ca519e171d6202c0ac90e052c  libstdc++-v3/libsupc++/compare
  ee57ed7a57d178fce16de2ec28a8340c  libstdc++-v3/libsupc++/cxxabi.h
  563de5baf2c41e9759583af359bb650e  libstdc++-v3/libsupc++/cxxabi_forced.h
  8aae4a67a18f5276de7831d7a44b7b2f  libstdc++-v3/libsupc++/cxxabi_init_exception.h
*************** c94ad903b4e7baf364cdc3ef5e9f58a8  libstd
*** 133542,133549 ****
  4cb74e4755d2e3e58503a243d7ae042b  libstdc++-v3/python/hook.in
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/python/libstdcxx/__init__.py
  f3661044e04e7499daef1e53bba37dc7  libstdc++-v3/python/libstdcxx/v6/__init__.py
! 6bfb86e6eb00a1b6bcaee948565dc0db  libstdc++-v3/python/libstdcxx/v6/printers.py
! c4a63edebdca46a9468f6ce9cde53449  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  cdac7363b91e7d57b85f7b560f62f033  libstdc++-v3/scripts/check_compile
  87c30a72c1d3ec2a203894ac24d78005  libstdc++-v3/scripts/check_performance
  128d0fbc24e1d43d9ff93d14bd521aa6  libstdc++-v3/scripts/check_simd
--- 134213,134220 ----
  4cb74e4755d2e3e58503a243d7ae042b  libstdc++-v3/python/hook.in
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/python/libstdcxx/__init__.py
  f3661044e04e7499daef1e53bba37dc7  libstdc++-v3/python/libstdcxx/v6/__init__.py
! 44da29d7c6a7f27b49b9feed380c843a  libstdc++-v3/python/libstdcxx/v6/printers.py
! 0adf034769d8327b096aeb5d78ebe475  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  cdac7363b91e7d57b85f7b560f62f033  libstdc++-v3/scripts/check_compile
  87c30a72c1d3ec2a203894ac24d78005  libstdc++-v3/scripts/check_performance
  128d0fbc24e1d43d9ff93d14bd521aa6  libstdc++-v3/scripts/check_simd
*************** f5af35184f655abcf9edbb76a7ac9985  libstd
*** 133626,133632 ****
  96c5a746ee563d36d5c93056996ec3ff  libstdc++-v3/src/c++11/streambuf-inst.cc
  63b97d5a214a3ed86e82dff205caf8b0  libstdc++-v3/src/c++11/string-inst.cc
  51eb59aec233df19c1193a1961362c36  libstdc++-v3/src/c++11/string-io-inst.cc
! b8e7b1593e5ed3dee7f0c98b40666a11  libstdc++-v3/src/c++11/system_error.cc
  2c8e1fdeb39d12dc28ddf3a5f6aaaf99  libstdc++-v3/src/c++11/thread.cc
  8f11c4680a8c193b75888713450f5ae3  libstdc++-v3/src/c++11/wlocale-inst.cc
  9a2f4bc77bc2e1c94a8b5cefd3821420  libstdc++-v3/src/c++11/wstring-inst.cc
--- 134297,134303 ----
  96c5a746ee563d36d5c93056996ec3ff  libstdc++-v3/src/c++11/streambuf-inst.cc
  63b97d5a214a3ed86e82dff205caf8b0  libstdc++-v3/src/c++11/string-inst.cc
  51eb59aec233df19c1193a1961362c36  libstdc++-v3/src/c++11/string-io-inst.cc
! 2d92d6ae252ba9485d45f9cd723caf2b  libstdc++-v3/src/c++11/system_error.cc
  2c8e1fdeb39d12dc28ddf3a5f6aaaf99  libstdc++-v3/src/c++11/thread.cc
  8f11c4680a8c193b75888713450f5ae3  libstdc++-v3/src/c++11/wlocale-inst.cc
  9a2f4bc77bc2e1c94a8b5cefd3821420  libstdc++-v3/src/c++11/wstring-inst.cc
*************** c9dcdd9b0b5c806e787dc702505f57e1  libstd
*** 133645,133651 ****
  ac9644e2d8390587379964f6b7e51ef0  libstdc++-v3/src/c++17/floating_to_chars.cc
  7c668fe3f79c2610268b1bc631741ad5  libstdc++-v3/src/c++17/fs_dir.cc
  38394abc0e937c8a15f74a60356f174a  libstdc++-v3/src/c++17/fs_ops.cc
! 94b95a511b91830b1c3dbfdf235ec988  libstdc++-v3/src/c++17/fs_path.cc
  3142d663ea92c3978de4c455280d486f  libstdc++-v3/src/c++17/memory_resource.cc
  4f2f44032e04f77de92166a02f76089d  libstdc++-v3/src/c++17/ostream-inst.cc
  f7696e2f5518e5e873ced4beacb8d107  libstdc++-v3/src/c++17/ryu/LOCAL_PATCHES
--- 134316,134322 ----
  ac9644e2d8390587379964f6b7e51ef0  libstdc++-v3/src/c++17/floating_to_chars.cc
  7c668fe3f79c2610268b1bc631741ad5  libstdc++-v3/src/c++17/fs_dir.cc
  38394abc0e937c8a15f74a60356f174a  libstdc++-v3/src/c++17/fs_ops.cc
! 122d8654e506222baff04d8d59eae218  libstdc++-v3/src/c++17/fs_path.cc
  3142d663ea92c3978de4c455280d486f  libstdc++-v3/src/c++17/memory_resource.cc
  4f2f44032e04f77de92166a02f76089d  libstdc++-v3/src/c++17/ostream-inst.cc
  f7696e2f5518e5e873ced4beacb8d107  libstdc++-v3/src/c++17/ryu/LOCAL_PATCHES
*************** e66e202fb59625eb933c316b0bf9ee34  libstd
*** 133668,133682 ****
  fc90aab2bcae05d7286b5666cd1f2be8  libstdc++-v3/src/c++20/Makefile.in
  94b3ab191e8fe566a951ac2b4f081c40  libstdc++-v3/src/c++20/format.cc
  939eb3ac7ce3c32a8b2aac493f053893  libstdc++-v3/src/c++20/sstream-inst.cc
! e9e89f4578e59d252e4caaf0b63d6dfb  libstdc++-v3/src/c++20/tzdata.zi
! b01c0cfbca4e753f78f74ab41ce26267  libstdc++-v3/src/c++20/tzdb.cc
  3665d657cc35c7afb8b5cc7bae0ef058  libstdc++-v3/src/c++23/Makefile.am
  d85f3a53465585d54b96880e79456c79  libstdc++-v3/src/c++23/Makefile.in
  3c95970ad4fd23117b63a99dd3241ebe  libstdc++-v3/src/c++23/libstdc++.modules.json.in
  2f142e6a788b76b05091ff09d99ae47c  libstdc++-v3/src/c++23/print.cc
  15f6b28b71ad24bc5b6d33c21048e59a  libstdc++-v3/src/c++23/stacktrace.cc
  c319163994652e23066095eded5869f0  libstdc++-v3/src/c++23/std-clib.cc.in
! 8b077c814dc27cd11461b13dd51dcbb3  libstdc++-v3/src/c++23/std.cc.in
  ef2786c62e1aa27a5405d7bf70e5212c  libstdc++-v3/src/c++23/std.compat.cc.in
  97527213996a1ca6a0910b1ab5f6c3a3  libstdc++-v3/src/c++26/Makefile.am
  5dd6b2acd5d63f897ba1545bb9a07d25  libstdc++-v3/src/c++26/Makefile.in
--- 134339,134353 ----
  fc90aab2bcae05d7286b5666cd1f2be8  libstdc++-v3/src/c++20/Makefile.in
  94b3ab191e8fe566a951ac2b4f081c40  libstdc++-v3/src/c++20/format.cc
  939eb3ac7ce3c32a8b2aac493f053893  libstdc++-v3/src/c++20/sstream-inst.cc
! 0dfa4a770289b4e926b8281770732d5a  libstdc++-v3/src/c++20/tzdata.zi
! b0d7e2c6204a3d2c19d2cea526f2a4df  libstdc++-v3/src/c++20/tzdb.cc
  3665d657cc35c7afb8b5cc7bae0ef058  libstdc++-v3/src/c++23/Makefile.am
  d85f3a53465585d54b96880e79456c79  libstdc++-v3/src/c++23/Makefile.in
  3c95970ad4fd23117b63a99dd3241ebe  libstdc++-v3/src/c++23/libstdc++.modules.json.in
  2f142e6a788b76b05091ff09d99ae47c  libstdc++-v3/src/c++23/print.cc
  15f6b28b71ad24bc5b6d33c21048e59a  libstdc++-v3/src/c++23/stacktrace.cc
  c319163994652e23066095eded5869f0  libstdc++-v3/src/c++23/std-clib.cc.in
! d6ec467bbf0414b1182989ccf09cf6a0  libstdc++-v3/src/c++23/std.cc.in
  ef2786c62e1aa27a5405d7bf70e5212c  libstdc++-v3/src/c++23/std.compat.cc.in
  97527213996a1ca6a0910b1ab5f6c3a3  libstdc++-v3/src/c++26/Makefile.am
  5dd6b2acd5d63f897ba1545bb9a07d25  libstdc++-v3/src/c++26/Makefile.in
*************** d261582526bd72a369fd09b9a5e27b62  libstd
*** 133731,133737 ****
  427145f15c1588507cc854a7c222094f  libstdc++-v3/src/filesystem/cow-path.cc
  b92adb30f5c707f7d2712de402cc66ba  libstdc++-v3/src/filesystem/dir-common.h
  644e833e765e73e5e86bff4b150dab3e  libstdc++-v3/src/filesystem/dir.cc
! 1c849e5f01320436f2c86830e37637be  libstdc++-v3/src/filesystem/ops-common.h
  2c978bede5376b1c0d23fabd3e70ec0f  libstdc++-v3/src/filesystem/ops.cc
  113879e407f06ea51cf09f1d102a9d4d  libstdc++-v3/src/filesystem/path.cc
  6313ac6df82e4bcf54d7f8bc2b00792e  libstdc++-v3/src/libbacktrace/Makefile.am
--- 134402,134408 ----
  427145f15c1588507cc854a7c222094f  libstdc++-v3/src/filesystem/cow-path.cc
  b92adb30f5c707f7d2712de402cc66ba  libstdc++-v3/src/filesystem/dir-common.h
  644e833e765e73e5e86bff4b150dab3e  libstdc++-v3/src/filesystem/dir.cc
! bda843db2d23dffae71b35d326ebf2da  libstdc++-v3/src/filesystem/ops-common.h
  2c978bede5376b1c0d23fabd3e70ec0f  libstdc++-v3/src/filesystem/ops.cc
  113879e407f06ea51cf09f1d102a9d4d  libstdc++-v3/src/filesystem/path.cc
  6313ac6df82e4bcf54d7f8bc2b00792e  libstdc++-v3/src/libbacktrace/Makefile.am
*************** ad7d8ce6072a5a6ebe5a27824b57cb45  libstd
*** 133740,133746 ****
  00b94d6669fba75f62da99691b48412e  libstdc++-v3/src/libbacktrace/backtrace-supported.h.in
  d80381bdd74336b121a4f087efc21dbb  libstdc++-v3/src/libbacktrace/config.h.in
  8ddbdc7435772874d921480508b7d635  libstdc++-v3/src/shared/hashtable-aux.cc
! 9f5552f4018925c716ba0a0498c09af9  libstdc++-v3/testsuite/17_intro/badnames.cc
  ecc5ca146d152b00b47e21b42b75654e  libstdc++-v3/testsuite/17_intro/freestanding.cc
  d5df5ddc3b7c5dba2e687798eaa28551  libstdc++-v3/testsuite/17_intro/headers/c++1998/103650.cc
  345d73b159ab977cac2e2661993ce03a  libstdc++-v3/testsuite/17_intro/headers/c++1998/49745.cc
--- 134411,134417 ----
  00b94d6669fba75f62da99691b48412e  libstdc++-v3/src/libbacktrace/backtrace-supported.h.in
  d80381bdd74336b121a4f087efc21dbb  libstdc++-v3/src/libbacktrace/config.h.in
  8ddbdc7435772874d921480508b7d635  libstdc++-v3/src/shared/hashtable-aux.cc
! c24f6a8a57a59ec8366bcb51e6aa6865  libstdc++-v3/testsuite/17_intro/badnames.cc
  ecc5ca146d152b00b47e21b42b75654e  libstdc++-v3/testsuite/17_intro/freestanding.cc
  d5df5ddc3b7c5dba2e687798eaa28551  libstdc++-v3/testsuite/17_intro/headers/c++1998/103650.cc
  345d73b159ab977cac2e2661993ce03a  libstdc++-v3/testsuite/17_intro/headers/c++1998/49745.cc
*************** d100df3b99954e5e2a1e25ac7967528c  libstd
*** 133766,133772 ****
  fa6dd9de47fc1161957dd77bcc925b13  libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc
  e4a354a67235724c5f38b1fc51630071  libstdc++-v3/testsuite/17_intro/headers/c++2014/parallel_mode.cc
  1b083d4d975f6db8c98c387c2bf43571  libstdc++-v3/testsuite/17_intro/headers/c++2017/parallel_mode.cc
! 0356cb159c4380ee8a1f33c09ac965fc  libstdc++-v3/testsuite/17_intro/names.cc
  d4446489cc9fd961dbc2f15b2b21fca7  libstdc++-v3/testsuite/17_intro/names_fortify.cc
  047ad714f0a1ac010ab86a084dfbeee7  libstdc++-v3/testsuite/17_intro/names_pstl.cc
  441838fc5a4a7a22a784014872e61926  libstdc++-v3/testsuite/17_intro/no_library_allocation.cc
--- 134437,134443 ----
  fa6dd9de47fc1161957dd77bcc925b13  libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc
  e4a354a67235724c5f38b1fc51630071  libstdc++-v3/testsuite/17_intro/headers/c++2014/parallel_mode.cc
  1b083d4d975f6db8c98c387c2bf43571  libstdc++-v3/testsuite/17_intro/headers/c++2017/parallel_mode.cc
! 7326a37eb7e5ab2825d52ca1c772eabd  libstdc++-v3/testsuite/17_intro/names.cc
  d4446489cc9fd961dbc2f15b2b21fca7  libstdc++-v3/testsuite/17_intro/names_fortify.cc
  047ad714f0a1ac010ab86a084dfbeee7  libstdc++-v3/testsuite/17_intro/names_pstl.cc
  441838fc5a4a7a22a784014872e61926  libstdc++-v3/testsuite/17_intro/no_library_allocation.cc
*************** c928488888eda816e615011cdcb4d90d  libstd
*** 133898,133904 ****
  662dd5cb650a0a850bc5fe376b02bd76  libstdc++-v3/testsuite/18_support/new_delete_placement.cc
  4029157ee3d03b1ba61e5d4a60e277cc  libstdc++-v3/testsuite/18_support/new_handler.cc
  6a319e680b081fce4c520de674e32ee3  libstdc++-v3/testsuite/18_support/new_nothrow.cc
! 49e7685f2fc05cdd1dd5d2a404340058  libstdc++-v3/testsuite/18_support/numeric_limits/128bit.cc
  e3d51c0ec766a987bfdde32fb16c811a  libstdc++-v3/testsuite/18_support/numeric_limits/29989.cc
  0277ffff4a7069a9ad290792be3467ca  libstdc++-v3/testsuite/18_support/numeric_limits/40856.cc
  7f16120374b01ead698f1344e1feae95  libstdc++-v3/testsuite/18_support/numeric_limits/char16_32_t.cc
--- 134569,134575 ----
  662dd5cb650a0a850bc5fe376b02bd76  libstdc++-v3/testsuite/18_support/new_delete_placement.cc
  4029157ee3d03b1ba61e5d4a60e277cc  libstdc++-v3/testsuite/18_support/new_handler.cc
  6a319e680b081fce4c520de674e32ee3  libstdc++-v3/testsuite/18_support/new_nothrow.cc
! 457817958c82b8b3f75ec9e7b60e2627  libstdc++-v3/testsuite/18_support/numeric_limits/128bit.cc
  e3d51c0ec766a987bfdde32fb16c811a  libstdc++-v3/testsuite/18_support/numeric_limits/29989.cc
  0277ffff4a7069a9ad290792be3467ca  libstdc++-v3/testsuite/18_support/numeric_limits/40856.cc
  7f16120374b01ead698f1344e1feae95  libstdc++-v3/testsuite/18_support/numeric_limits/char16_32_t.cc
*************** f18e7cefbea6929c94bbd2d65539b270  libstd
*** 133949,133955 ****
  f5897a45c81923d805b6e5ff5a13315f  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/less.cc
  c2a9a6f57e2374ca35e3ff15856e5819  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/not_equal.cc
  d4d6fd6e2c4dd3c75ef8ea215bece650  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/three_way.cc
! bafaff2a0448a9d24053e0a40a4cc2bd  libstdc++-v3/testsuite/19_diagnostics/error_category/system_category.cc
  25ceafd7651ec34c0cdd5f53d98d4da1  libstdc++-v3/testsuite/19_diagnostics/error_code/cons/1.cc
  07166070b38578a6b31c3c7fb96b0e85  libstdc++-v3/testsuite/19_diagnostics/error_code/cons/39882.cc
  81f9725b7658563bbe88b3ba6c3c1852  libstdc++-v3/testsuite/19_diagnostics/error_code/cons/lwg3629.cc
--- 134620,134626 ----
  f5897a45c81923d805b6e5ff5a13315f  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/less.cc
  c2a9a6f57e2374ca35e3ff15856e5819  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/not_equal.cc
  d4d6fd6e2c4dd3c75ef8ea215bece650  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/three_way.cc
! c8bf8de335cbc15b8f2415786da5547b  libstdc++-v3/testsuite/19_diagnostics/error_category/system_category.cc
  25ceafd7651ec34c0cdd5f53d98d4da1  libstdc++-v3/testsuite/19_diagnostics/error_code/cons/1.cc
  07166070b38578a6b31c3c7fb96b0e85  libstdc++-v3/testsuite/19_diagnostics/error_code/cons/39882.cc
  81f9725b7658563bbe88b3ba6c3c1852  libstdc++-v3/testsuite/19_diagnostics/error_code/cons/lwg3629.cc
*************** dc811926d3a0cc8410b37f38fd276e62  libstd
*** 134144,134150 ****
  7fdf3835a346e7ef9a3a8308d819b141  libstdc++-v3/testsuite/20_util/bind/cv_quals.cc
  3296aff77062491cdbb021ced8c9691a  libstdc++-v3/testsuite/20_util/bind/cv_quals_2.cc
  eb24581e6901c23d8bdbfca254833195  libstdc++-v3/testsuite/20_util/bind/cv_quals_3.cc
! 7108e4b81832823bce96a6c579a9a3c4  libstdc++-v3/testsuite/20_util/bind/dangling_ref.cc
  499a492e07678a83b4feca56bc7dec38  libstdc++-v3/testsuite/20_util/bind/is_placeholder_v.cc
  a8a56b45372ab9a92235b9c43274978f  libstdc++-v3/testsuite/20_util/bind/move.cc
  113518e192b41e33301c903e8048d393  libstdc++-v3/testsuite/20_util/bind/nested.cc
--- 134815,134821 ----
  7fdf3835a346e7ef9a3a8308d819b141  libstdc++-v3/testsuite/20_util/bind/cv_quals.cc
  3296aff77062491cdbb021ced8c9691a  libstdc++-v3/testsuite/20_util/bind/cv_quals_2.cc
  eb24581e6901c23d8bdbfca254833195  libstdc++-v3/testsuite/20_util/bind/cv_quals_3.cc
! 9e20c0553ba5c2a0e7032207ebaef1c2  libstdc++-v3/testsuite/20_util/bind/dangling_ref.cc
  499a492e07678a83b4feca56bc7dec38  libstdc++-v3/testsuite/20_util/bind/is_placeholder_v.cc
  a8a56b45372ab9a92235b9c43274978f  libstdc++-v3/testsuite/20_util/bind/move.cc
  113518e192b41e33301c903e8048d393  libstdc++-v3/testsuite/20_util/bind/nested.cc
*************** cd35f526f71cd243c4965f834df24c89  libstd
*** 134197,134202 ****
--- 134868,134874 ----
  eef2204d57edb98136c3ffd5d0879a97  libstdc++-v3/testsuite/20_util/bitset/version.cc
  c8f50ba04b6971c9baf46f1890fc61ef  libstdc++-v3/testsuite/20_util/bool_constant/requirements.cc
  d9e3a835b6facefd71de42c8fe38c7ed  libstdc++-v3/testsuite/20_util/common_reference/100894.cc
+ af25f8f7e85a16941631a585bc0e1b68  libstdc++-v3/testsuite/20_util/common_reference/p2655r3.cc
  b231fe644af8f6c7b8e8db865b0335e8  libstdc++-v3/testsuite/20_util/common_reference/requirements/alias_decl.cc
  e874c307ac6cb1be4ebab7d34d4673c1  libstdc++-v3/testsuite/20_util/common_reference/requirements/explicit_instantiation.cc
  3ec71232a9e140f7524d6dbc2af6bd6a  libstdc++-v3/testsuite/20_util/common_reference/requirements/typedefs.cc
*************** b6846002a3a56bb10b1621e1792c246a  libstd
*** 134288,134293 ****
--- 134960,134966 ----
  2fe263333a538ddd2a8cd7953725ff52  libstdc++-v3/testsuite/20_util/expected/lwg3877.cc
  72b0fd75fcf0b218f79d93c61319bb5d  libstdc++-v3/testsuite/20_util/expected/lwg3886.cc
  8717f284befd8d0ee8fe1e50dcc6a7a7  libstdc++-v3/testsuite/20_util/expected/lwg3938.cc
+ 97aac511f36cb21427676e071c189c5a  libstdc++-v3/testsuite/20_util/expected/lwg4222.cc
  4824cecd15088232e3348b8bad95b2ce  libstdc++-v3/testsuite/20_util/expected/monadic.cc
  4bfafe03465669c57c9cf2717bc9b00e  libstdc++-v3/testsuite/20_util/expected/observers.cc
  8854ae6d49bfd2df3b2f3a9095f61fc4  libstdc++-v3/testsuite/20_util/expected/requirements.cc
*************** ca6516aefe54fd40ebaa1dafa0a11255  libstd
*** 134382,134387 ****
--- 135055,135061 ----
  6bab66b664cfd3bdfffcc4a40e8765c9  libstdc++-v3/testsuite/20_util/function_objects/binders/3113.cc
  9eada3d910abb2dab015aedf3bc0d541  libstdc++-v3/testsuite/20_util/function_objects/comparisons.cc
  40c2bbe125de63af1786acb3b1450c2e  libstdc++-v3/testsuite/20_util/function_objects/comparisons_pointer.cc
+ ecfb8c4b535e0bf09b4b70c183321205  libstdc++-v3/testsuite/20_util/function_objects/comparisons_pointer_spaceship.cc
  87c00b085541617e0f20937088cd5ecf  libstdc++-v3/testsuite/20_util/function_objects/comparisons_void.cc
  5a3606d23c3021668b59cd384a9efe76  libstdc++-v3/testsuite/20_util/function_objects/constexpr.cc
  3ec127bce751f23d1edd40dc15a421d5  libstdc++-v3/testsuite/20_util/function_objects/constexpr_searcher.cc
*************** c27224cc73720e56bd8e333f40d4c8b6  libstd
*** 134914,134926 ****
  b6ec6940575a0e07d16235c054dfd511  libstdc++-v3/testsuite/20_util/pair/astuple/constexpr_get_by_type.cc
  f2f2b91309730f195c55679493733944  libstdc++-v3/testsuite/20_util/pair/astuple/get-2.cc
  ec6b64ce59fd0cdc4da2c87413aca483  libstdc++-v3/testsuite/20_util/pair/astuple/get.cc
! c091b1a30d02efa1a5c4242c9a095b10  libstdc++-v3/testsuite/20_util/pair/astuple/get_by_type.cc
  3fda333c62a545fe2651bddf9f002ece  libstdc++-v3/testsuite/20_util/pair/astuple/get_by_type_neg.cc
  564f7d68dbe4fd3956684aa724ffa91e  libstdc++-v3/testsuite/20_util/pair/astuple/get_neg.cc
  2d9ee0ff43279e9bf93015d92d067695  libstdc++-v3/testsuite/20_util/pair/comparison_operators/constexpr.cc
  d9787fa4df26e7d94fdf4b2e072b1cf2  libstdc++-v3/testsuite/20_util/pair/comparison_operators/constexpr_c++20.cc
  1554d14710a3f9fa155dc38437c6c3ae  libstdc++-v3/testsuite/20_util/pair/comparison_operators/constrained.cc
  04fed045318edda260e590d9ad1630a6  libstdc++-v3/testsuite/20_util/pair/comparison_operators/lwg3865.cc
  94af77da42e85818ea59aed3c5fef8db  libstdc++-v3/testsuite/20_util/pair/cons/92878_92947.cc
  c5964cf74c99c86ce570bfdb15835bb8  libstdc++-v3/testsuite/20_util/pair/cons/99957.cc
  8627f9e27d2f45fb1bcbc23d24e6eaaf  libstdc++-v3/testsuite/20_util/pair/cons/constexpr.cc
--- 135588,135601 ----
  b6ec6940575a0e07d16235c054dfd511  libstdc++-v3/testsuite/20_util/pair/astuple/constexpr_get_by_type.cc
  f2f2b91309730f195c55679493733944  libstdc++-v3/testsuite/20_util/pair/astuple/get-2.cc
  ec6b64ce59fd0cdc4da2c87413aca483  libstdc++-v3/testsuite/20_util/pair/astuple/get.cc
! 7b695dd84077ebc9ded8b6f97ea9c376  libstdc++-v3/testsuite/20_util/pair/astuple/get_by_type.cc
  3fda333c62a545fe2651bddf9f002ece  libstdc++-v3/testsuite/20_util/pair/astuple/get_by_type_neg.cc
  564f7d68dbe4fd3956684aa724ffa91e  libstdc++-v3/testsuite/20_util/pair/astuple/get_neg.cc
  2d9ee0ff43279e9bf93015d92d067695  libstdc++-v3/testsuite/20_util/pair/comparison_operators/constexpr.cc
  d9787fa4df26e7d94fdf4b2e072b1cf2  libstdc++-v3/testsuite/20_util/pair/comparison_operators/constexpr_c++20.cc
  1554d14710a3f9fa155dc38437c6c3ae  libstdc++-v3/testsuite/20_util/pair/comparison_operators/constrained.cc
  04fed045318edda260e590d9ad1630a6  libstdc++-v3/testsuite/20_util/pair/comparison_operators/lwg3865.cc
+ de22916c6d33b4376c80895f09fe7345  libstdc++-v3/testsuite/20_util/pair/cons/110853.cc
  94af77da42e85818ea59aed3c5fef8db  libstdc++-v3/testsuite/20_util/pair/cons/92878_92947.cc
  c5964cf74c99c86ce570bfdb15835bb8  libstdc++-v3/testsuite/20_util/pair/cons/99957.cc
  8627f9e27d2f45fb1bcbc23d24e6eaaf  libstdc++-v3/testsuite/20_util/pair/cons/constexpr.cc
*************** bdfa105b922bad5336a8c6d4533fc51f  libstd
*** 134978,134984 ****
  ff0ccdc05468ddce08d4ada91d33b781  libstdc++-v3/testsuite/20_util/ratio/operations/ops1.cc
  57f67e63ff4fb275bd9b09db383ca4df  libstdc++-v3/testsuite/20_util/ratio/operations/ops2.cc
  30cad9ff52b866b92a63310ead4f5c6c  libstdc++-v3/testsuite/20_util/ratio/operations/ops3.cc
! ad80681b6b901b11613ce8bef15006b3  libstdc++-v3/testsuite/20_util/ratio/operations/ops_overflow_neg.cc
  2397ab3807a9eb62ad653d874d58d857  libstdc++-v3/testsuite/20_util/ratio/requirements/constexpr_data.cc
  69afdb8700e22b161a1f973e70aff227  libstdc++-v3/testsuite/20_util/ratio/requirements/ratio_equal_v.cc
  d8bbe2c17046f08594a91f5a8e216ba7  libstdc++-v3/testsuite/20_util/ratio/requirements/type_constraints.cc
--- 135653,135659 ----
  ff0ccdc05468ddce08d4ada91d33b781  libstdc++-v3/testsuite/20_util/ratio/operations/ops1.cc
  57f67e63ff4fb275bd9b09db383ca4df  libstdc++-v3/testsuite/20_util/ratio/operations/ops2.cc
  30cad9ff52b866b92a63310ead4f5c6c  libstdc++-v3/testsuite/20_util/ratio/operations/ops3.cc
! a0585b8c8242c82e134c9055fdfd1dc9  libstdc++-v3/testsuite/20_util/ratio/operations/ops_overflow_neg.cc
  2397ab3807a9eb62ad653d874d58d857  libstdc++-v3/testsuite/20_util/ratio/requirements/constexpr_data.cc
  69afdb8700e22b161a1f973e70aff227  libstdc++-v3/testsuite/20_util/ratio/requirements/ratio_equal_v.cc
  d8bbe2c17046f08594a91f5a8e216ba7  libstdc++-v3/testsuite/20_util/ratio/requirements/type_constraints.cc
*************** a52bfedb1a381a0202dbb55c703013a0  libstd
*** 135178,135184 ****
  7c6df795389d4f9adf111d4d879fa257  libstdc++-v3/testsuite/20_util/specialized_algorithms/destroy/constrained.cc
  0c389150c2f95a24f62d342469a7c67e  libstdc++-v3/testsuite/20_util/specialized_algorithms/feature_test_macro.cc
  e7f673de33f454714074c0cd02339d78  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/1.cc
! cd86fee2a39f32a183ffe460241c5d26  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc
  ef6acc638fee193e17ccbdb06ce4dde8  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc
  09c95029dd16edca10e38b6f40f9859b  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc
  cc190104693360d7b581aac2061c8a7c  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc
--- 135853,135860 ----
  7c6df795389d4f9adf111d4d879fa257  libstdc++-v3/testsuite/20_util/specialized_algorithms/destroy/constrained.cc
  0c389150c2f95a24f62d342469a7c67e  libstdc++-v3/testsuite/20_util/specialized_algorithms/feature_test_macro.cc
  e7f673de33f454714074c0cd02339d78  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/1.cc
! 3d215c86194df15b75fdf87c57f36962  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_n_neg.cc
! 26b39447a16317aaeaca689f89179e8a  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc
  ef6acc638fee193e17ccbdb06ce4dde8  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc
  09c95029dd16edca10e38b6f40f9859b  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc
  cc190104693360d7b581aac2061c8a7c  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc
*************** b476188dcd60a78a354f813360a6615e  libstd
*** 135307,135312 ****
--- 135983,135989 ----
  d23b1a747046dfeaadefce18d2c02b12  libstdc++-v3/testsuite/20_util/tuple/cons/101960.cc
  187ef5eb9d79f3cb6e7970796ffabd33  libstdc++-v3/testsuite/20_util/tuple/cons/102270.cc
  9a6dc1f9548e126de2581231c632a19f  libstdc++-v3/testsuite/20_util/tuple/cons/114147.cc
+ acc813dd1edb9480437149d28cd4faf0  libstdc++-v3/testsuite/20_util/tuple/cons/121771.cc
  9fa494077b0931d8ef4ec90162b9567f  libstdc++-v3/testsuite/20_util/tuple/cons/41530.cc
  24632668d622491f2552c805cb356772  libstdc++-v3/testsuite/20_util/tuple/cons/44487.cc
  bd39d5b823bb9848e5a616ed07d127a6  libstdc++-v3/testsuite/20_util/tuple/cons/45228.cc
*************** e2b40f273adc9c3cdf931a505b25a3e3  libstd
*** 135440,135446 ****
  7cc86eac7379c689c0ac47faf59dee7f  libstdc++-v3/testsuite/20_util/unique_ptr/hash/types.cc
  865ecdda52bcc46067ae1155b4fc802d  libstdc++-v3/testsuite/20_util/unique_ptr/io/lwg2948.cc
  bb40414adb587ca6cdd1ffd17960c9e2  libstdc++-v3/testsuite/20_util/unique_ptr/lwg2762.cc
! a5234a3d63fc5d686aba74601e09973e  libstdc++-v3/testsuite/20_util/unique_ptr/lwg4148.cc
  a87ada64946cd931cadfaa13b513a900  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/43183.cc
  1dba41a3d994169c6dc80f6e218ba745  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/48398.cc
  1522af3c74e321802d64a0867e5e7e82  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/93562.cc
--- 136117,136124 ----
  7cc86eac7379c689c0ac47faf59dee7f  libstdc++-v3/testsuite/20_util/unique_ptr/hash/types.cc
  865ecdda52bcc46067ae1155b4fc802d  libstdc++-v3/testsuite/20_util/unique_ptr/io/lwg2948.cc
  bb40414adb587ca6cdd1ffd17960c9e2  libstdc++-v3/testsuite/20_util/unique_ptr/lwg2762.cc
! 455915dfcf4dc6251c24ac413d3dfcde  libstdc++-v3/testsuite/20_util/unique_ptr/lwg4148.cc
! 7314924b4534c814fb3127346d74c45f  libstdc++-v3/testsuite/20_util/unique_ptr/lwg4324.cc
  a87ada64946cd931cadfaa13b513a900  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/43183.cc
  1dba41a3d994169c6dc80f6e218ba745  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/48398.cc
  1522af3c74e321802d64a0867e5e7e82  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/93562.cc
*************** dd27d37e228d376460f2fda9aee33443  libstd
*** 135748,135757 ****
--- 136426,136437 ----
  3b08188db997d606499bfea78a86a3d7  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc
  fecb5f76794dcb7b16941f3d83836e9e  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring_float.cc
  07566e373883a954b71c561432ec0678  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/1.cc
+ c24c0e6f49ab658726699f1007f123b4  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/123991.cc
  f07b308f074673d92ba8c20c68c108e8  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/13650.cc
  b04b8c40e5387e81144707d8be2bf9c6  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/2.cc
  bd5d27b6c1da7f4be96a036ee98cfdc7  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/3.cc
  b224efd629e9e7ebc8872ba94d3cd565  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/1.cc
+ ec53bc1685fb080b40ba203340985256  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/123991.cc
  d075354ce70a50537b2c548670651dd6  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/13650.cc
  2f1a71838c6fedcdc0645a37a63a203b  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc
  e0c2465a8e27301df596bd29409f3212  libstdc++-v3/testsuite/21_strings/basic_string/operations/contains/char.cc
*************** c5f32b33de65013c0fc106b121d9adb9  libstd
*** 136808,136815 ****
  66d8e0b64dc2f55b235d2a74c80953c3  libstdc++-v3/testsuite/23_containers/deque/types/pmr_typedefs.cc
  2ef42205ec9719ecefddda3ad2adc42a  libstdc++-v3/testsuite/23_containers/deque/types/pmr_typedefs_debug.cc
  ca98b78997105b8f93c1c653568b6095  libstdc++-v3/testsuite/23_containers/deque/version.cc
! ef672746fcc1d35e2a4e9c40b64854cc  libstdc++-v3/testsuite/23_containers/flat_map/1.cc
! 3c9ecb51c6f7009d6f4a73f9f1271ed2  libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc
  9b2f42aff2cc15dfd3a3f7693a799f84  libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc
  76d6af8252b5ad047167bd10312d53bc  libstdc++-v3/testsuite/23_containers/flat_set/1.cc
  0c9946a785a1bcd0c52de4c0d17ff0e9  libstdc++-v3/testsuite/23_containers/forward_list/48101-2_neg.cc
--- 137488,137495 ----
  66d8e0b64dc2f55b235d2a74c80953c3  libstdc++-v3/testsuite/23_containers/deque/types/pmr_typedefs.cc
  2ef42205ec9719ecefddda3ad2adc42a  libstdc++-v3/testsuite/23_containers/deque/types/pmr_typedefs_debug.cc
  ca98b78997105b8f93c1c653568b6095  libstdc++-v3/testsuite/23_containers/deque/version.cc
! bbc92cff8e605f5f919d625f173343c8  libstdc++-v3/testsuite/23_containers/flat_map/1.cc
! d217a3bd92b8cd52c44f365ef36d41ac  libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc
  9b2f42aff2cc15dfd3a3f7693a799f84  libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc
  76d6af8252b5ad047167bd10312d53bc  libstdc++-v3/testsuite/23_containers/flat_set/1.cc
  0c9946a785a1bcd0c52de4c0d17ff0e9  libstdc++-v3/testsuite/23_containers/forward_list/48101-2_neg.cc
*************** f853e3faba83946cba803ed2d336b949  libstd
*** 136888,136893 ****
--- 137568,137574 ----
  db268bed47f60f6b1af825ba47d9208f  libstdc++-v3/testsuite/23_containers/forward_list/debug/swap.cc
  d4ee51b84c0cfe50159e901ceab77d6d  libstdc++-v3/testsuite/23_containers/forward_list/erasure.cc
  5a7c8f9f19c0dbd31aa26ec68ade8aeb  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/1.cc
+ 6bcb325735429aba259858615ce5626d  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/122661.cc
  6092207fd698ea7bfc4c337073f78a5a  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/2.cc
  5773fab502955c01595fb7f7ae84f130  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/3.cc
  1c061ac6a6811e5026f0fedb58f277e1  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/4.cc
*************** e3eb212137f2101dd4ceb83392d4f604  libstd
*** 138097,138104 ****
  61e8da4cd434fb8870df8cc065622ac8  libstdc++-v3/testsuite/23_containers/vector/cons/constexpr.cc
  6273d6891837720e35cbfccb6eaa7e66  libstdc++-v3/testsuite/23_containers/vector/cons/deduction.cc
  7a66bf7f5aca27ddc8ca203f2f55a9b6  libstdc++-v3/testsuite/23_containers/vector/cons/destroy-adl.cc
! 03d4bbea96b2b7d622e0f0d4ed285e82  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc
! c321498bb25d81efcdb153b4281a5653  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc
  833017a30b2de971981f574bdc3fd989  libstdc++-v3/testsuite/23_containers/vector/cons/from_range.cc
  95343136dbd192e25dfe16b3a4eda01d  libstdc++-v3/testsuite/23_containers/vector/cons/moveable.cc
  f1d10ca32c2d09fd89ac466ce1077fce  libstdc++-v3/testsuite/23_containers/vector/cons/moveable2.cc
--- 138778,138785 ----
  61e8da4cd434fb8870df8cc065622ac8  libstdc++-v3/testsuite/23_containers/vector/cons/constexpr.cc
  6273d6891837720e35cbfccb6eaa7e66  libstdc++-v3/testsuite/23_containers/vector/cons/deduction.cc
  7a66bf7f5aca27ddc8ca203f2f55a9b6  libstdc++-v3/testsuite/23_containers/vector/cons/destroy-adl.cc
! 2694e9f5cb5094fe107333e8e893566e  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc
! 3910bbb9d09dde186eeeeb0f6fc1fbab  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc
  833017a30b2de971981f574bdc3fd989  libstdc++-v3/testsuite/23_containers/vector/cons/from_range.cc
  95343136dbd192e25dfe16b3a4eda01d  libstdc++-v3/testsuite/23_containers/vector/cons/moveable.cc
  f1d10ca32c2d09fd89ac466ce1077fce  libstdc++-v3/testsuite/23_containers/vector/cons/moveable2.cc
*************** a5f7ae14b6844d43b1081a499624f525  libstd
*** 138179,138193 ****
  7d27fdbd20b83aa5340cdab8ef4c3ce8  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/58148.cc
  28a3af6e38881699bccce32dfeee9612  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/aliasing.cc
  26744f861734b6a0aa5bad87665a2ad9  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/const_iterator.cc
! be9bdc7d3330f3394771c82f96ecc66f  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/insert_range.cc
  35e70ddc10ee243c7ae40dfd6fba7ce6  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/self_insert.cc
  8fb5c601f412e71f5977219b7d89f18d  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc
! 2301f3312f26a25c0cecd650693c1ee6  libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable.cc
  071692d93dc4cd16ba56c3ef394403d9  libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable2.cc
  7499329ab40a3f8d9ec96557afc9fdf5  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/49836.cc
  19a7aa23a562ce123f59840732f99484  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/89130.cc
  39ea516b4e78257b10729b1294b8b0e1  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/89416.cc
  d5a10e609929e6fcd8ef4875e82e9fab  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/strong_guarantee.cc
  129e06da1f884b42b2e5f2d423c2fb99  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/1.cc
  f7d7b18ce6d96f9d3f0358f60af4bff3  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/2.cc
  291b9ca09e8fdf6c34b88c801b0b8072  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/3.cc
--- 138860,138875 ----
  7d27fdbd20b83aa5340cdab8ef4c3ce8  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/58148.cc
  28a3af6e38881699bccce32dfeee9612  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/aliasing.cc
  26744f861734b6a0aa5bad87665a2ad9  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/const_iterator.cc
! 6aab54959fea87d944b74494b2c45d20  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/insert_range.cc
  35e70ddc10ee243c7ae40dfd6fba7ce6  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/self_insert.cc
  8fb5c601f412e71f5977219b7d89f18d  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc
! c2276095d903b4d83e50a2140f3ab830  libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable.cc
  071692d93dc4cd16ba56c3ef394403d9  libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable2.cc
  7499329ab40a3f8d9ec96557afc9fdf5  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/49836.cc
  19a7aa23a562ce123f59840732f99484  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/89130.cc
  39ea516b4e78257b10729b1294b8b0e1  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/89416.cc
  d5a10e609929e6fcd8ef4875e82e9fab  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/strong_guarantee.cc
+ 4a2f9f9e84018ea58dae284a14d839cd  libstdc++-v3/testsuite/23_containers/vector/modifiers/resize.cc
  129e06da1f884b42b2e5f2d423c2fb99  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/1.cc
  f7d7b18ce6d96f9d3f0358f60af4bff3  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/2.cc
  291b9ca09e8fdf6c34b88c801b0b8072  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/3.cc
*************** b767444cc42a2221df71f8bbc317e333  libstd
*** 138236,138242 ****
  9f4e16d24466d0905c256e141d9b7e91  libstdc++-v3/testsuite/24_iterators/common_iterator/100823.cc
  2c61f978dca854377a1f045080bfc407  libstdc++-v3/testsuite/24_iterators/common_iterator/101527.cc
  51fc15623a3885b80419b7193df04bca  libstdc++-v3/testsuite/24_iterators/common_iterator/2.cc
! c78691d1ff6bc1b3ae254334b058b5ca  libstdc++-v3/testsuite/24_iterators/const_iterator/1.cc
  3fcc24ac9868ef19598ff1bf296928bb  libstdc++-v3/testsuite/24_iterators/const_iterator/112490.cc
  7455dfdc03b09fe8e0234649b4bc47f2  libstdc++-v3/testsuite/24_iterators/container_access.cc
  f18f6649cb045c0b15cc4cac54ee8f59  libstdc++-v3/testsuite/24_iterators/contiguous/concept.cc
--- 138918,138924 ----
  9f4e16d24466d0905c256e141d9b7e91  libstdc++-v3/testsuite/24_iterators/common_iterator/100823.cc
  2c61f978dca854377a1f045080bfc407  libstdc++-v3/testsuite/24_iterators/common_iterator/101527.cc
  51fc15623a3885b80419b7193df04bca  libstdc++-v3/testsuite/24_iterators/common_iterator/2.cc
! 2f1514de9134e83dc1048a4c719c67f2  libstdc++-v3/testsuite/24_iterators/const_iterator/1.cc
  3fcc24ac9868ef19598ff1bf296928bb  libstdc++-v3/testsuite/24_iterators/const_iterator/112490.cc
  7455dfdc03b09fe8e0234649b4bc47f2  libstdc++-v3/testsuite/24_iterators/container_access.cc
  f18f6649cb045c0b15cc4cac54ee8f59  libstdc++-v3/testsuite/24_iterators/contiguous/concept.cc
*************** a9cdb8e686465e04357dd6853b03f1db  libstd
*** 138288,138293 ****
--- 138970,138976 ----
  56a66c737c731f21039a8d95b0de27dd  libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/explicit_instantiation.cc
  f2795e80740d31215c14df45bcfec94d  libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/typedefs.cc
  6b194bacfaa14edb84157fbb83ce9363  libstdc++-v3/testsuite/24_iterators/istream_iterator/sentinel.cc
+ 486fa49e6e6487aad2e12a66d481a54c  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/105580.cc
  c89dc09a75ce203a2f073d2be856c3e2  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2.cc
  0eaf0a5eab483b6a8cf11573a6d6192d  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2627.cc
  3cf2980e126910c918c18f35cd60f00c  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/92285.cc
*************** a7fdd4ef46d148c07b2306186a300c7e  libstd
*** 138358,138363 ****
--- 139041,139047 ----
  ccbbe51e2f862feaa3f4e717ef2f1cd6  libstdc++-v3/testsuite/24_iterators/range_generators/subrange.cc
  176a646a1b7559b26db737da71d00cd9  libstdc++-v3/testsuite/24_iterators/range_generators/synopsis.cc
  02f28e9c43d1c6870cb37adefe922b06  libstdc++-v3/testsuite/24_iterators/range_operations/100768.cc
+ fac581d78e5a7c5f9a935172c7cda695  libstdc++-v3/testsuite/24_iterators/range_operations/122224.cc
  15713890df454c3323b70750ba44f7a5  libstdc++-v3/testsuite/24_iterators/range_operations/advance.cc
  cd26960c17e204b57f33cfd344c760f5  libstdc++-v3/testsuite/24_iterators/range_operations/advance_debug_neg.cc
  f3e9bd715fe13148d21f32ce807ccb06  libstdc++-v3/testsuite/24_iterators/range_operations/advance_overflow.cc
*************** dc51bf8ec0600eaf13a5e97b344b0c79  libstd
*** 138435,138440 ****
--- 139119,139125 ----
  ae049046b45a395504fd1e8a19c4f18b  libstdc++-v3/testsuite/25_algorithms/copy/108846.cc
  6f8c3f9d5e1238778b6e1ba3a9bb80ef  libstdc++-v3/testsuite/25_algorithms/copy/114817.cc
  23b0d913d66888b7f56b9fe9040957c3  libstdc++-v3/testsuite/25_algorithms/copy/115444.cc
+ 125e1ba85822cfd51c8df1b6a842bc84  libstdc++-v3/testsuite/25_algorithms/copy/122907.cc
  5003c29765774a7418c3443878d83332  libstdc++-v3/testsuite/25_algorithms/copy/2.cc
  273dff5a2d0cc6cda1596a2c8a114fec  libstdc++-v3/testsuite/25_algorithms/copy/3.cc
  809bbcd5453cb854bf0b20b8491fb7da  libstdc++-v3/testsuite/25_algorithms/copy/34595.cc
*************** eaaf09138f9c89061c5cd2835ee22dd9  libstd
*** 138965,138971 ****
  4baa175d84575e9b8eb6c56ded27ea43  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc
  3976ac394882d12b8b5646eefdd364ba  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc
  038c90cb46c6b428483cf2c2fbd9e9ff  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc
! b37d9cc6348d80b3465b1577d74b6d7a  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc
  51fd3c4098c1861566cbf9b6c277b0ac  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc
  d5e4ba72f1a9b9d6478a6a92b71b518b  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc
  ac8890df44a550f4ce2ae489e8713185  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/set_difference.cc
--- 139650,139656 ----
  4baa175d84575e9b8eb6c56ded27ea43  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc
  3976ac394882d12b8b5646eefdd364ba  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc
  038c90cb46c6b428483cf2c2fbd9e9ff  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc
! 80fd49c32fb41deda0115a76196d29ec  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc
  51fd3c4098c1861566cbf9b6c277b0ac  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc
  d5e4ba72f1a9b9d6478a6a92b71b518b  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc
  ac8890df44a550f4ce2ae489e8713185  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/set_difference.cc
*************** da6b9cea5f235e2b213bc339e6f3e108  libstd
*** 139007,139012 ****
--- 139692,139698 ----
  9b49cd894afc0849551f18e6a3ae9dad  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/2.cc
  08ce520470c2cc3960c9e999f60ce4a4  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/pod.cc
  f5a9097eb16672d6c05a87340096c086  libstdc++-v3/testsuite/25_algorithms/remove_if/1.cc
+ 22e4da064ddab0c392673bb1bf3caaed  libstdc++-v3/testsuite/25_algorithms/remove_if/120789.cc
  6ad9c03d796a5ea1c1db4dd2e57ffd11  libstdc++-v3/testsuite/25_algorithms/remove_if/check_type.cc
  1f4beb3d917a723881a7b3bc10780924  libstdc++-v3/testsuite/25_algorithms/remove_if/constexpr.cc
  95f6c3e6d7249235adc5bdb54c85cd0c  libstdc++-v3/testsuite/25_algorithms/remove_if/constrained.cc
*************** aed5b5a1bbd68cf60e20fcece3ee0863  libstd
*** 139175,139180 ****
--- 139861,139867 ----
  599daadb3db6b6b5291b2fd1508d55b8  libstdc++-v3/testsuite/25_algorithms/transform/requirements/explicit_instantiation/pod.cc
  df013990874a60d054aa46070d1ac5bb  libstdc++-v3/testsuite/25_algorithms/unique/1.cc
  9fc8b2e62a27f41f89e4f6bafd064f54  libstdc++-v3/testsuite/25_algorithms/unique/11480.cc
+ 12ee07b6e724d84c83471a929de6054c  libstdc++-v3/testsuite/25_algorithms/unique/120789.cc
  b844c411edd6cbdfcbf585555ffc293e  libstdc++-v3/testsuite/25_algorithms/unique/2.cc
  72b6f4e940949680db65cbf48a320570  libstdc++-v3/testsuite/25_algorithms/unique/constexpr.cc
  dc72aaba1141a4d064d97cb11b1948ff  libstdc++-v3/testsuite/25_algorithms/unique/constrained.cc
*************** dc72aaba1141a4d064d97cb11b1948ff  libstd
*** 139182,139192 ****
--- 139869,139881 ----
  e926410ecd98200362050b556c737fe6  libstdc++-v3/testsuite/25_algorithms/unique/requirements/explicit_instantiation/2.cc
  8cbfbe8c64ba99a379dcb9628a6ff052  libstdc++-v3/testsuite/25_algorithms/unique/requirements/explicit_instantiation/pod.cc
  18e3546d23e1a57a6cb1ade1374222f5  libstdc++-v3/testsuite/25_algorithms/unique_copy/1.cc
+ af21e5ed22ae1277398751ff84914c01  libstdc++-v3/testsuite/25_algorithms/unique_copy/120384.cc
  566c21bbd932c2ff2ea7ab5d0d026853  libstdc++-v3/testsuite/25_algorithms/unique_copy/2.cc
  bccc2620741d0bb50ee990ac03515498  libstdc++-v3/testsuite/25_algorithms/unique_copy/26133.cc
  9017b16aa2b3514d77f2217dfa840239  libstdc++-v3/testsuite/25_algorithms/unique_copy/check_type.cc
  025c3b6404eb8b477ce9e6cfe7cc6c9f  libstdc++-v3/testsuite/25_algorithms/unique_copy/constexpr.cc
  8aa85ba6eb17f92a2514e964dece3932  libstdc++-v3/testsuite/25_algorithms/unique_copy/constrained.cc
+ 91cc68ce8cc7db1c1695fb98cc9cad50  libstdc++-v3/testsuite/25_algorithms/unique_copy/lwg2439.cc
  7919be45417a16080b52507c963b33aa  libstdc++-v3/testsuite/25_algorithms/unique_copy/requirements/explicit_instantiation/2.cc
  344dbd3215f1a1cbbdecbd992213837c  libstdc++-v3/testsuite/25_algorithms/unique_copy/requirements/explicit_instantiation/pod.cc
  114cc2af89a8c0c92666c66a57ad7d45  libstdc++-v3/testsuite/25_algorithms/upper_bound/1.cc
*************** acc288d04b3a73568d5201ad5d6c08e0  libstd
*** 139574,139579 ****
--- 140263,140269 ----
  b17776ecba967116e9d79caa7701413a  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize.cc
  2a0447d8d19bae4620c991f9cf77009d  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/requirements/explicit_instantiation/1.cc
  5afae932ca0107a29bf73a8c55da95cd  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/requirements/typedefs.cc
+ c6b9a866c77dbfde316664357479e98d  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/122062.cc
  a9c2727c68b0bf8115dd197939502cca  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc
  99546b5e1ad01df10d3956ccc0fa48c4  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/initlist_fun.cc
  69e3b80ed51308d2bcbd9b1196852310  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/num_xbound_fun.cc
*************** e04480d7145ce32dec8a7341a42191e0  libstd
*** 140524,140529 ****
--- 141214,141220 ----
  f8aa587512ea87bee4653998bc8698a1  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/wchar_t/1057.cc
  b87fd9bae83b808001e3ee87d0feb501  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/wchar_t/9404-2.cc
  7de37da1e279afed871c3828a6207e71  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/1.cc
+ 977a013f60bef4a12b598777d9f03bd4  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/123100.cc
  204f77fd451f3bd1806404fc960fd04f  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/2.cc
  c980c2a0238b7f2bf45c99ef24a3f395  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/3.cc
  2c05a0e0d5e4ac8d232d3470c245b185  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/3955.cc
*************** b1bbe044bf2cc15fe9a6ecc95613510d  libstd
*** 140613,140619 ****
  ab943d9bc5490bc757c8302dfa9a2a91  libstdc++-v3/testsuite/27_io/filesystem/operations/relative.cc
  fb0171897b130763a1ebe8406ab18b30  libstdc++-v3/testsuite/27_io/filesystem/operations/remove.cc
  99ec46decac90cdf2549db4a6bc128d9  libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc
! 2bb08fe7776156238f12f9a7f4798d55  libstdc++-v3/testsuite/27_io/filesystem/operations/rename.cc
  05d39af031ecce987270ceb9b70d409d  libstdc++-v3/testsuite/27_io/filesystem/operations/resize_file.cc
  1d9f3065c6978d26c56d44c42e70dc5f  libstdc++-v3/testsuite/27_io/filesystem/operations/space.cc
  099ce0270a6ab9db7d982f896efdd3ed  libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc
--- 141304,141310 ----
  ab943d9bc5490bc757c8302dfa9a2a91  libstdc++-v3/testsuite/27_io/filesystem/operations/relative.cc
  fb0171897b130763a1ebe8406ab18b30  libstdc++-v3/testsuite/27_io/filesystem/operations/remove.cc
  99ec46decac90cdf2549db4a6bc128d9  libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc
! 4ca59312344242ce287cd2829ad039b6  libstdc++-v3/testsuite/27_io/filesystem/operations/rename.cc
  05d39af031ecce987270ceb9b70d409d  libstdc++-v3/testsuite/27_io/filesystem/operations/resize_file.cc
  1d9f3065c6978d26c56d44c42e70dc5f  libstdc++-v3/testsuite/27_io/filesystem/operations/space.cc
  099ce0270a6ab9db7d982f896efdd3ed  libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc
*************** a6b63f76b9699e67684f422ed69846ea  libstd
*** 141047,141053 ****
  7ea53405296926a9dc506025eecceaa0  libstdc++-v3/testsuite/28_regex/traits/char/icase.cc
  1c2ad6f1c4280d73dac215f3581c07df  libstdc++-v3/testsuite/28_regex/traits/char/isctype.cc
  dfbd1a31b7ec7e45e870d37fd51310d6  libstdc++-v3/testsuite/28_regex/traits/char/length.cc
! b6c9cf762295b0d7d88d4b954a0b445b  libstdc++-v3/testsuite/28_regex/traits/char/lookup_classname.cc
  1fcd1886ad09dcdaeb561247a69c7fe8  libstdc++-v3/testsuite/28_regex/traits/char/lookup_collatename.cc
  c6faa575752439d2eed0745f81bb4e92  libstdc++-v3/testsuite/28_regex/traits/char/transform.cc
  fe6d2f1b3deda1d666cee906ed0a4dbf  libstdc++-v3/testsuite/28_regex/traits/char/transform_primary.cc
--- 141738,141744 ----
  7ea53405296926a9dc506025eecceaa0  libstdc++-v3/testsuite/28_regex/traits/char/icase.cc
  1c2ad6f1c4280d73dac215f3581c07df  libstdc++-v3/testsuite/28_regex/traits/char/isctype.cc
  dfbd1a31b7ec7e45e870d37fd51310d6  libstdc++-v3/testsuite/28_regex/traits/char/length.cc
! 1430640f4659c1e2b701ab23d92b8a3f  libstdc++-v3/testsuite/28_regex/traits/char/lookup_classname.cc
  1fcd1886ad09dcdaeb561247a69c7fe8  libstdc++-v3/testsuite/28_regex/traits/char/lookup_collatename.cc
  c6faa575752439d2eed0745f81bb4e92  libstdc++-v3/testsuite/28_regex/traits/char/transform.cc
  fe6d2f1b3deda1d666cee906ed0a4dbf  libstdc++-v3/testsuite/28_regex/traits/char/transform_primary.cc
*************** fe6d2f1b3deda1d666cee906ed0a4dbf  libstd
*** 141058,141064 ****
  5ac30c0a4dec6bc04be8a868164cf4c6  libstdc++-v3/testsuite/28_regex/traits/wchar_t/ctor.cc
  aa9686b0c3bcd59574521b890fd352fa  libstdc++-v3/testsuite/28_regex/traits/wchar_t/isctype.cc
  425887f80f14050dd767888a2c0dc3aa  libstdc++-v3/testsuite/28_regex/traits/wchar_t/length.cc
! eda39c39a10010a17f161490dce86444  libstdc++-v3/testsuite/28_regex/traits/wchar_t/lookup_classname.cc
  ca05d7f5bb0250803906816453df3b79  libstdc++-v3/testsuite/28_regex/traits/wchar_t/lookup_collatename.cc
  820a5295b162a1df93b43517d5c33a75  libstdc++-v3/testsuite/28_regex/traits/wchar_t/transform.cc
  a12544c2b7c481a4e5018a8105a97909  libstdc++-v3/testsuite/28_regex/traits/wchar_t/transform_primary.cc
--- 141749,141755 ----
  5ac30c0a4dec6bc04be8a868164cf4c6  libstdc++-v3/testsuite/28_regex/traits/wchar_t/ctor.cc
  aa9686b0c3bcd59574521b890fd352fa  libstdc++-v3/testsuite/28_regex/traits/wchar_t/isctype.cc
  425887f80f14050dd767888a2c0dc3aa  libstdc++-v3/testsuite/28_regex/traits/wchar_t/length.cc
! 03e0038484ccef853ec5c154873897e0  libstdc++-v3/testsuite/28_regex/traits/wchar_t/lookup_classname.cc
  ca05d7f5bb0250803906816453df3b79  libstdc++-v3/testsuite/28_regex/traits/wchar_t/lookup_collatename.cc
  820a5295b162a1df93b43517d5c33a75  libstdc++-v3/testsuite/28_regex/traits/wchar_t/transform.cc
  a12544c2b7c481a4e5018a8105a97909  libstdc++-v3/testsuite/28_regex/traits/wchar_t/transform_primary.cc
*************** c68b5f0836c6d6755d79db2260009ea2  libstd
*** 141076,141082 ****
  f055bbfee2c4b973d46e29e09006ca8d  libstdc++-v3/testsuite/29_atomics/atomic/69769.cc
  a45c4fc47b3926e8d1e9582f0c633bf7  libstdc++-v3/testsuite/29_atomics/atomic/70766.cc
  63350a1cbb29ab67e43b7f49d0ce503d  libstdc++-v3/testsuite/29_atomics/atomic/89624.cc
! ce997c946b9d815d3b58c18b6822f7d2  libstdc++-v3/testsuite/29_atomics/atomic/compare_exchange_padding.cc
  39232eeaf175bdf8b48338d14b625dd7  libstdc++-v3/testsuite/29_atomics/atomic/cons/49445.cc
  0bef884e926cfd674ed04909c99b9880  libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
  1219539990355c9690f03a2f08ac601e  libstdc++-v3/testsuite/29_atomics/atomic/cons/constexpr.cc
--- 141767,141773 ----
  f055bbfee2c4b973d46e29e09006ca8d  libstdc++-v3/testsuite/29_atomics/atomic/69769.cc
  a45c4fc47b3926e8d1e9582f0c633bf7  libstdc++-v3/testsuite/29_atomics/atomic/70766.cc
  63350a1cbb29ab67e43b7f49d0ce503d  libstdc++-v3/testsuite/29_atomics/atomic/89624.cc
! e20db8e4b74cd8cd87b26cf643e05738  libstdc++-v3/testsuite/29_atomics/atomic/compare_exchange_padding.cc
  39232eeaf175bdf8b48338d14b625dd7  libstdc++-v3/testsuite/29_atomics/atomic/cons/49445.cc
  0bef884e926cfd674ed04909c99b9880  libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
  1219539990355c9690f03a2f08ac601e  libstdc++-v3/testsuite/29_atomics/atomic/cons/constexpr.cc
*************** b5add270eb89557e0c8d61fa1ace86e7  libstd
*** 141088,141093 ****
--- 141779,141785 ----
  8b7b0b498791a603f2f537f3d5035766  libstdc++-v3/testsuite/29_atomics/atomic/cons/trivial.cc
  0501a49acdbeebdf5bc829c9b499f09f  libstdc++-v3/testsuite/29_atomics/atomic/cons/user_pod.cc
  d4c98a94a0ffda92bd76d6f6dfdf9760  libstdc++-v3/testsuite/29_atomics/atomic/cons/value_init.cc
+ 822ec88a7f5dfe8ce7d354c55824d6bb  libstdc++-v3/testsuite/29_atomics/atomic/cons/zero_padding.cc
  952bd3c7bb4ba837b698e7f8d43b280f  libstdc++-v3/testsuite/29_atomics/atomic/is_always_lock_free.cc
  f9b2d6d78dc44c7b8285a07ef1cd9521  libstdc++-v3/testsuite/29_atomics/atomic/lock_free_aliases.cc
  467103d8d6f668882b30ac0653e0cd90  libstdc++-v3/testsuite/29_atomics/atomic/lwg3220.cc
*************** c1f319ba7f6ad7a6795bac75046271d0  libstd
*** 141096,141102 ****
  6afaee620f593086673491093e9e2c83  libstdc++-v3/testsuite/29_atomics/atomic/operators/56011.cc
  e4b6fcfd2a515534e7ba19934850347b  libstdc++-v3/testsuite/29_atomics/atomic/operators/integral_assignment.cc
  23d004ef8bc7604cf4a60c8c4af4adc1  libstdc++-v3/testsuite/29_atomics/atomic/operators/integral_conversion.cc
! b3d8282607956ee4826df350c5a70605  libstdc++-v3/testsuite/29_atomics/atomic/operators/pointer_partial_void.cc
  68b6db9b9df1ee4ad267757efbd252a7  libstdc++-v3/testsuite/29_atomics/atomic/requirements/base_classes.cc
  4770655eced43833b45a7bff9815589f  libstdc++-v3/testsuite/29_atomics/atomic/requirements/compare_exchange_lowering.cc
  638a3151b6917b31577257fe25faead9  libstdc++-v3/testsuite/29_atomics/atomic/requirements/explicit_instantiation/1.cc
--- 141788,141794 ----
  6afaee620f593086673491093e9e2c83  libstdc++-v3/testsuite/29_atomics/atomic/operators/56011.cc
  e4b6fcfd2a515534e7ba19934850347b  libstdc++-v3/testsuite/29_atomics/atomic/operators/integral_assignment.cc
  23d004ef8bc7604cf4a60c8c4af4adc1  libstdc++-v3/testsuite/29_atomics/atomic/operators/integral_conversion.cc
! b085cfae753eed6df7ceab06181bf1de  libstdc++-v3/testsuite/29_atomics/atomic/operators/pointer_partial_void.cc
  68b6db9b9df1ee4ad267757efbd252a7  libstdc++-v3/testsuite/29_atomics/atomic/requirements/base_classes.cc
  4770655eced43833b45a7bff9815589f  libstdc++-v3/testsuite/29_atomics/atomic/requirements/compare_exchange_lowering.cc
  638a3151b6917b31577257fe25faead9  libstdc++-v3/testsuite/29_atomics/atomic/requirements/explicit_instantiation/1.cc
*************** a11647f0a7197b8bca75ec68b5130c4d  libstd
*** 141133,141138 ****
--- 141825,141831 ----
  867a677947829787048e19ca55ac4223  libstdc++-v3/testsuite/29_atomics/atomic_float/requirements_cxx23.cc
  b765e7275b7fa1a7aaa78ec19d83f8f2  libstdc++-v3/testsuite/29_atomics/atomic_float/value_init.cc
  d3adedcb21c25a0282b31ce1181cbd83  libstdc++-v3/testsuite/29_atomics/atomic_float/wait_notify.cc
+ 25faa0b8cab947a81054c74813773331  libstdc++-v3/testsuite/29_atomics/atomic_float/zero_padding.cc
  133286452aebb9434cb1ec964820b1fc  libstdc++-v3/testsuite/29_atomics/atomic_integral/60940.cc
  6275533b1e69b1592edebc928f8d7210  libstdc++-v3/testsuite/29_atomics/atomic_integral/65147.cc
  a5fcec06638ffc2ee576a3828e54d5a2  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/assign_neg.cc
*************** ad9034013bdd2437cca11f0ba1ddc77e  libstd
*** 141303,141309 ****
  541a642f684120cf15e3efab97dbb1c6  libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc_min.cc
  f928b71e8e3379df3dec12c6778d93f9  libstdc++-v3/testsuite/30_threads/packaged_task/cons/assign_neg.cc
  0333461d9839e0cd5897823f742b9d34  libstdc++-v3/testsuite/30_threads/packaged_task/cons/copy_neg.cc
! ae44041381823a46a5ac2d066c71150e  libstdc++-v3/testsuite/30_threads/packaged_task/cons/dangling_ref.cc
  e3cd3b55ab1655176e9eae1b0b5f762e  libstdc++-v3/testsuite/30_threads/packaged_task/cons/deduction.cc
  ba4413ab6f8707eecf7439c419b333f6  libstdc++-v3/testsuite/30_threads/packaged_task/cons/deduction_c++23.cc
  a7699861951a48bd37d8f9e4d7d4d6ef  libstdc++-v3/testsuite/30_threads/packaged_task/cons/lwg4154_neg.cc
--- 141996,142002 ----
  541a642f684120cf15e3efab97dbb1c6  libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc_min.cc
  f928b71e8e3379df3dec12c6778d93f9  libstdc++-v3/testsuite/30_threads/packaged_task/cons/assign_neg.cc
  0333461d9839e0cd5897823f742b9d34  libstdc++-v3/testsuite/30_threads/packaged_task/cons/copy_neg.cc
! 1819879d3dc2788c98e2b8836daf3ddd  libstdc++-v3/testsuite/30_threads/packaged_task/cons/dangling_ref.cc
  e3cd3b55ab1655176e9eae1b0b5f762e  libstdc++-v3/testsuite/30_threads/packaged_task/cons/deduction.cc
  ba4413ab6f8707eecf7439c419b333f6  libstdc++-v3/testsuite/30_threads/packaged_task/cons/deduction_c++23.cc
  a7699861951a48bd37d8f9e4d7d4d6ef  libstdc++-v3/testsuite/30_threads/packaged_task/cons/lwg4154_neg.cc
*************** d15cdcf55f49de39c4fdefc419be3fea  libstd
*** 141506,141511 ****
--- 142199,142205 ----
  96c8307cdf633de4f51db02425271ebe  libstdc++-v3/testsuite/30_threads/thread/native_handle/cancel.cc
  8fff897afa187580148ceece57bbcb70  libstdc++-v3/testsuite/30_threads/thread/native_handle/typesizes.cc
  679cf57e4a61942ecaa9210578320dff  libstdc++-v3/testsuite/30_threads/thread/swap/1.cc
+ ec30d5440c1422ca4216d48631bf8250  libstdc++-v3/testsuite/30_threads/timed_mutex/121496.cc
  c5b715fd07d0ce109f0f584a1f179b22  libstdc++-v3/testsuite/30_threads/timed_mutex/cons/1.cc
  d54d8adc4826a7b1e97afcd4d9b8f264  libstdc++-v3/testsuite/30_threads/timed_mutex/cons/assign_neg.cc
  6032a54633b105ccfa64ff5ea2dd4b06  libstdc++-v3/testsuite/30_threads/timed_mutex/cons/copy_neg.cc
*************** f12da74b317d3e2a5a88c8d48f289674  libstd
*** 141641,141647 ****
  6fc43afff360ceef0b6d73943ee38f61  libstdc++-v3/testsuite/backward/hash_set/1.cc
  89a0e58a522391e68d2680afa635aeb2  libstdc++-v3/testsuite/backward/hash_set/25896.cc
  2c091597008357e678007f407f299a24  libstdc++-v3/testsuite/backward/hash_set/49060.cc
! 2698a443e19f71cbab30ef4754778267  libstdc++-v3/testsuite/backward/hash_set/check_construct_destroy.cc
  9fad04735388a6a4650701a8a040e5e5  libstdc++-v3/testsuite/backward/hash_set/requirements/explicit_instantiation.cc
  9fe399a1fb42687787771b8cfef37157  libstdc++-v3/testsuite/backward/strstream_members.cc
  f7c72527b115ae77f289202a9e1439ac  libstdc++-v3/testsuite/backward/strstream_move.cc
--- 142335,142341 ----
  6fc43afff360ceef0b6d73943ee38f61  libstdc++-v3/testsuite/backward/hash_set/1.cc
  89a0e58a522391e68d2680afa635aeb2  libstdc++-v3/testsuite/backward/hash_set/25896.cc
  2c091597008357e678007f407f299a24  libstdc++-v3/testsuite/backward/hash_set/49060.cc
! 5f11513e4030ec3b98584d848c7c5490  libstdc++-v3/testsuite/backward/hash_set/check_construct_destroy.cc
  9fad04735388a6a4650701a8a040e5e5  libstdc++-v3/testsuite/backward/hash_set/requirements/explicit_instantiation.cc
  9fe399a1fb42687787771b8cfef37157  libstdc++-v3/testsuite/backward/strstream_members.cc
  f7c72527b115ae77f289202a9e1439ac  libstdc++-v3/testsuite/backward/strstream_move.cc
*************** d860508e08a414ec1460e80180e40393  libstd
*** 142571,142586 ****
  ef2f4e85b3f385730ab4bd1fad98ccab  libstdc++-v3/testsuite/performance/23_containers/range_construct/list_construct2.cc
  aa50ec94a0aa77a0703874fe58208719  libstdc++-v3/testsuite/performance/23_containers/range_construct/vector_construct.cc
  5aebf4bc3a180504c2fa2e43e74dd6d6  libstdc++-v3/testsuite/performance/23_containers/resize/vector_bool.cc
! 9a2163e6878e3e22225129681ca96a75  libstdc++-v3/testsuite/performance/23_containers/sort_search/list.cc
  9d1d6439b2e93ebc48779237c0969b25  libstdc++-v3/testsuite/performance/25_algorithms/copy_backward_deque_iterators.cc
  ab09b2da7335847dccf2fd63d8b8fd89  libstdc++-v3/testsuite/performance/25_algorithms/copy_deque_iterators.cc
  6a6944457d6145fee939caa81a0bf393  libstdc++-v3/testsuite/performance/25_algorithms/copy_streambuf_iterators.cc
! 824f5174ad4f4597cb17e7b0af108f7c  libstdc++-v3/testsuite/performance/25_algorithms/equal_deque_iterators.cc
  6c237c6ab42e10e29629ddec6e8f7325  libstdc++-v3/testsuite/performance/25_algorithms/find_istreambuf_iterators.cc
  d02f1d737a7f2c7fafab78435fa78e93  libstdc++-v3/testsuite/performance/25_algorithms/inplace_merge.cc
  ff3f9bba9ccad4d1fc7a866b7a751251  libstdc++-v3/testsuite/performance/25_algorithms/lexicographical_compare.cc
  075844d01b94cfd34e1708cab1e2f312  libstdc++-v3/testsuite/performance/25_algorithms/nth_element_worst_case.cc
! ee0e492f7b0b50118dbda480520c67c1  libstdc++-v3/testsuite/performance/25_algorithms/search_n.cc
  e3d7908e495b67a7f37be76db8ed2169  libstdc++-v3/testsuite/performance/25_algorithms/sort.cc
  aef4f91004ab79c0eddaf5c332c6d491  libstdc++-v3/testsuite/performance/25_algorithms/sort_heap.cc
  7f064f37490bfa8d7841ad0fffb3de89  libstdc++-v3/testsuite/performance/25_algorithms/stable_sort.cc
--- 143265,143280 ----
  ef2f4e85b3f385730ab4bd1fad98ccab  libstdc++-v3/testsuite/performance/23_containers/range_construct/list_construct2.cc
  aa50ec94a0aa77a0703874fe58208719  libstdc++-v3/testsuite/performance/23_containers/range_construct/vector_construct.cc
  5aebf4bc3a180504c2fa2e43e74dd6d6  libstdc++-v3/testsuite/performance/23_containers/resize/vector_bool.cc
! 7ff826212a8220eb184ecf332c234f40  libstdc++-v3/testsuite/performance/23_containers/sort_search/list.cc
  9d1d6439b2e93ebc48779237c0969b25  libstdc++-v3/testsuite/performance/25_algorithms/copy_backward_deque_iterators.cc
  ab09b2da7335847dccf2fd63d8b8fd89  libstdc++-v3/testsuite/performance/25_algorithms/copy_deque_iterators.cc
  6a6944457d6145fee939caa81a0bf393  libstdc++-v3/testsuite/performance/25_algorithms/copy_streambuf_iterators.cc
! d940de57660124156c1e41869e403663  libstdc++-v3/testsuite/performance/25_algorithms/equal_deque_iterators.cc
  6c237c6ab42e10e29629ddec6e8f7325  libstdc++-v3/testsuite/performance/25_algorithms/find_istreambuf_iterators.cc
  d02f1d737a7f2c7fafab78435fa78e93  libstdc++-v3/testsuite/performance/25_algorithms/inplace_merge.cc
  ff3f9bba9ccad4d1fc7a866b7a751251  libstdc++-v3/testsuite/performance/25_algorithms/lexicographical_compare.cc
  075844d01b94cfd34e1708cab1e2f312  libstdc++-v3/testsuite/performance/25_algorithms/nth_element_worst_case.cc
! d09c03e581470b136a07d5f7e532d178  libstdc++-v3/testsuite/performance/25_algorithms/search_n.cc
  e3d7908e495b67a7f37be76db8ed2169  libstdc++-v3/testsuite/performance/25_algorithms/sort.cc
  aef4f91004ab79c0eddaf5c332c6d491  libstdc++-v3/testsuite/performance/25_algorithms/sort_heap.cc
  7f064f37490bfa8d7841ad0fffb3de89  libstdc++-v3/testsuite/performance/25_algorithms/stable_sort.cc
*************** a16369d471363910d742a5c1b8b92c3c  libstd
*** 142786,142791 ****
--- 143480,143486 ----
  3eb8e2fa183f344414482633d44531bb  libstdc++-v3/testsuite/std/format/ranges/format_kind_neg.cc
  6cb5d9fc875882db914c7abe02a8f948  libstdc++-v3/testsuite/std/format/ranges/formatter.cc
  533e25e218217c606aaf67745b9dbb5f  libstdc++-v3/testsuite/std/format/ranges/map.cc
+ 3c83d38b975b49e89716f008ae9810f3  libstdc++-v3/testsuite/std/format/ranges/pr119861_neg.cc
  94eb38239ab3228ac384cd8993a156d3  libstdc++-v3/testsuite/std/format/ranges/sequence.cc
  d7de22183439c27afc99361af6710aa0  libstdc++-v3/testsuite/std/format/ranges/string.cc
  22af3c8593871c64b40b11663417f80a  libstdc++-v3/testsuite/std/format/runtime_format.cc
*************** d6f43aa2aa28ccf6f02960749550aac6  libstd
*** 142837,142843 ****
  98b483f4295fbf685f4fe582088c3473  libstdc++-v3/testsuite/std/ranges/adaptors/filter.cc
  6ce4d9d01be4defd04026414dbac0d5b  libstdc++-v3/testsuite/std/ranges/adaptors/join.cc
  326917eee6123d6a19d60b706ad52413  libstdc++-v3/testsuite/std/ranges/adaptors/join_with/1.cc
! 284143a02c085fd30e15e55c66cfde20  libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc
  54271889e88b8f08f76cff98d9dfb68b  libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split_neg.cc
  52a7e19aa4c7f3a80c76630b6c935fd3  libstdc++-v3/testsuite/std/ranges/adaptors/lwg3286.cc
  09fc4e2885ef672deb76aa23b85e9bc0  libstdc++-v3/testsuite/std/ranges/adaptors/lwg3313_neg.cc
--- 143532,143538 ----
  98b483f4295fbf685f4fe582088c3473  libstdc++-v3/testsuite/std/ranges/adaptors/filter.cc
  6ce4d9d01be4defd04026414dbac0d5b  libstdc++-v3/testsuite/std/ranges/adaptors/join.cc
  326917eee6123d6a19d60b706ad52413  libstdc++-v3/testsuite/std/ranges/adaptors/join_with/1.cc
! b45e37390cc284dc08d10cc25468c3b5  libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc
  54271889e88b8f08f76cff98d9dfb68b  libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split_neg.cc
  52a7e19aa4c7f3a80c76630b6c935fd3  libstdc++-v3/testsuite/std/ranges/adaptors/lwg3286.cc
  09fc4e2885ef672deb76aa23b85e9bc0  libstdc++-v3/testsuite/std/ranges/adaptors/lwg3313_neg.cc
*************** e9ef3f2b572f799b265913487f27690b  libstd
*** 142908,142914 ****
  1cd9b515badcd164d6958b0fbbbb52cf  libstdc++-v3/testsuite/std/time/clock/file/overview.cc
  811bf06fb6123b7a4dc922fa36ba8a06  libstdc++-v3/testsuite/std/time/clock/gps/1.cc
  e9c8ba287435179e8670bb6951a6b4fa  libstdc++-v3/testsuite/std/time/clock/gps/io.cc
! 77e52cac2443b4c26b20b6bb1f917624  libstdc++-v3/testsuite/std/time/clock/local/io.cc
  13ae31163906c8eda2c2021c882bdc89  libstdc++-v3/testsuite/std/time/clock/system/io.cc
  b3cda48993495a5d2ff69f7f1ad2c695  libstdc++-v3/testsuite/std/time/clock/tai/1.cc
  a87e1152f6bc2804b93ce070a51eeb54  libstdc++-v3/testsuite/std/time/clock/tai/io.cc
--- 143603,143609 ----
  1cd9b515badcd164d6958b0fbbbb52cf  libstdc++-v3/testsuite/std/time/clock/file/overview.cc
  811bf06fb6123b7a4dc922fa36ba8a06  libstdc++-v3/testsuite/std/time/clock/gps/1.cc
  e9c8ba287435179e8670bb6951a6b4fa  libstdc++-v3/testsuite/std/time/clock/gps/io.cc
! 8acd6f904e5c685807dd2f220313bd5b  libstdc++-v3/testsuite/std/time/clock/local/io.cc
  13ae31163906c8eda2c2021c882bdc89  libstdc++-v3/testsuite/std/time/clock/system/io.cc
  b3cda48993495a5d2ff69f7f1ad2c695  libstdc++-v3/testsuite/std/time/clock/tai/1.cc
  a87e1152f6bc2804b93ce070a51eeb54  libstdc++-v3/testsuite/std/time/clock/tai/io.cc
*************** a87e1152f6bc2804b93ce070a51eeb54  libstd
*** 142922,142927 ****
--- 143617,143623 ----
  06b738d93b3d78681b0da48efd0a60bf  libstdc++-v3/testsuite/std/time/format/localized.cc
  9cd4d6791c125e40939cae77277f928d  libstdc++-v3/testsuite/std/time/format/pr117085.cc
  11836aec53351222d0be5ee9402f3069  libstdc++-v3/testsuite/std/time/format/pr117214.cc
+ fe8b2404cd96190b705e90b8f632dadc  libstdc++-v3/testsuite/std/time/format/pr117214_custom_timeput.cc
  107c8c7bd6daa477dad84b5cfee3eacf  libstdc++-v3/testsuite/std/time/format/pr119517.cc
  7151cef2bf017dd6ee0e0ee9830b8909  libstdc++-v3/testsuite/std/time/format/pr120114.cc
  2be47743c9d490923037b020cfc220b7  libstdc++-v3/testsuite/std/time/freestanding.cc
*************** dcb9d587d1738c8bdb50039c6928431e  libstd
*** 142946,142955 ****
  54378d7890a365088cc6292493caf83d  libstdc++-v3/testsuite/std/time/month_weekday_last/io.cc
  60231b6bb71cc9175500ebf6d9f92ceb  libstdc++-v3/testsuite/std/time/parse/114240.cc
  a0be85b8053be995a48a4cfec6a5b675  libstdc++-v3/testsuite/std/time/parse/114279.cc
! a62052228d6df7ad716017e0526fa955  libstdc++-v3/testsuite/std/time/parse/parse.cc
  8e3bf07939ba94874a6652e2a596d549  libstdc++-v3/testsuite/std/time/syn_c++20.cc
  f9d9d1cb483f1731762a8e5787c8020b  libstdc++-v3/testsuite/std/time/time_zone/get_info_local.cc
! d041367e20c424ad627fce102335edd0  libstdc++-v3/testsuite/std/time/time_zone/get_info_sys.cc
  efdc68d548df15089ce510e6bf1c33c7  libstdc++-v3/testsuite/std/time/time_zone/requirements.cc
  105f0ca3c8074ef3b2c1751d37ec2b96  libstdc++-v3/testsuite/std/time/time_zone/sys_info_abbrev.cc
  fb1501eaac6167bb3503c953bd7315db  libstdc++-v3/testsuite/std/time/traits/is_clock.cc
--- 143642,143654 ----
  54378d7890a365088cc6292493caf83d  libstdc++-v3/testsuite/std/time/month_weekday_last/io.cc
  60231b6bb71cc9175500ebf6d9f92ceb  libstdc++-v3/testsuite/std/time/parse/114240.cc
  a0be85b8053be995a48a4cfec6a5b675  libstdc++-v3/testsuite/std/time/parse/114279.cc
! 4547b0badce5668333f08490264f6870  libstdc++-v3/testsuite/std/time/parse/125369.cc
! 4650244d174eff0342f84405e248bbfe  libstdc++-v3/testsuite/std/time/parse/parse.cc
  8e3bf07939ba94874a6652e2a596d549  libstdc++-v3/testsuite/std/time/syn_c++20.cc
+ 942f5bb5a199e3f7b0821958da8b265a  libstdc++-v3/testsuite/std/time/time_zone/116110.cc
+ e5f71dc7f2292314c0c9b06c3b8acf2e  libstdc++-v3/testsuite/std/time/time_zone/124513.cc
  f9d9d1cb483f1731762a8e5787c8020b  libstdc++-v3/testsuite/std/time/time_zone/get_info_local.cc
! 5c55d9e35cb8c9c5e0a207bd53fa37d2  libstdc++-v3/testsuite/std/time/time_zone/get_info_sys.cc
  efdc68d548df15089ce510e6bf1c33c7  libstdc++-v3/testsuite/std/time/time_zone/requirements.cc
  105f0ca3c8074ef3b2c1751d37ec2b96  libstdc++-v3/testsuite/std/time/time_zone/sys_info_abbrev.cc
  fb1501eaac6167bb3503c953bd7315db  libstdc++-v3/testsuite/std/time/traits/is_clock.cc
*************** b7fda84fbeda06910b868e9c1900c04c  libstd
*** 142987,142993 ****
  c83ddc50378f7dedd8a117c97828123a  libstdc++-v3/testsuite/std/time/year_month_weekday_last/1.cc
  d331c4d1f095f322242d26131db04e1b  libstdc++-v3/testsuite/std/time/year_month_weekday_last/2.cc
  e794c3c683b129a1bc27715ff3ee3b37  libstdc++-v3/testsuite/std/time/year_month_weekday_last/io.cc
! 728832c3eb4e89e18aaf1a2ed1be2271  libstdc++-v3/testsuite/std/time/zoned_time/1.cc
  6e26d84ca6efe0ea496ba2fcc8ee280b  libstdc++-v3/testsuite/std/time/zoned_time/custom.cc
  6abf80ca9a7f01e8d061066eecdd2022  libstdc++-v3/testsuite/std/time/zoned_time/deduction.cc
  b817e9c1855b1b139f12f498f1c9db67  libstdc++-v3/testsuite/std/time/zoned_time/io.cc
--- 143686,143692 ----
  c83ddc50378f7dedd8a117c97828123a  libstdc++-v3/testsuite/std/time/year_month_weekday_last/1.cc
  d331c4d1f095f322242d26131db04e1b  libstdc++-v3/testsuite/std/time/year_month_weekday_last/2.cc
  e794c3c683b129a1bc27715ff3ee3b37  libstdc++-v3/testsuite/std/time/year_month_weekday_last/io.cc
! fa43bb38cebbbda727864c9b2ac9b67b  libstdc++-v3/testsuite/std/time/zoned_time/1.cc
  6e26d84ca6efe0ea496ba2fcc8ee280b  libstdc++-v3/testsuite/std/time/zoned_time/custom.cc
  6abf80ca9a7f01e8d061066eecdd2022  libstdc++-v3/testsuite/std/time/zoned_time/deduction.cc
  b817e9c1855b1b139f12f498f1c9db67  libstdc++-v3/testsuite/std/time/zoned_time/io.cc
*************** a44ae6829c2d6cbdbd08359d948c3328  libstd
*** 143718,143724 ****
  8b5ea64e3eece45f10f299183d0e13bd  libstdc++-v3/testsuite/util/thread/all.h
  b950d655469c477755252b1e18009596  libtool-ldflags
  39cc83ca69ddbbe398dd79a2ba6b5499  libtool.m4
! 52402cf6d88e998acd38454cbd155994  libvtv/ChangeLog
  2d74ef98580bcc9fd2c7902f0022be3a  libvtv/Makefile.am
  b1170aae9472f26fdc8326737dc22aba  libvtv/Makefile.in
  3b765c4f4a0a0f606db1472bce2b8d29  libvtv/acinclude.m4
--- 144417,144423 ----
  8b5ea64e3eece45f10f299183d0e13bd  libstdc++-v3/testsuite/util/thread/all.h
  b950d655469c477755252b1e18009596  libtool-ldflags
  39cc83ca69ddbbe398dd79a2ba6b5499  libtool.m4
! 5fd36a23ca20485fd96007559f5c8cee  libvtv/ChangeLog
  2d74ef98580bcc9fd2c7902f0022be3a  libvtv/Makefile.am
  b1170aae9472f26fdc8326737dc22aba  libvtv/Makefile.in
  3b765c4f4a0a0f606db1472bce2b8d29  libvtv/acinclude.m4
*************** b75b4606a8f849a2e4931aeabb4c2165  libvtv
*** 143801,143807 ****
  343510afde83a825cc4129be092e4f05  libvtv/vtv_utils.h
  247597a3fcc5b5aa8bd923351c59d853  ltgcc.m4
  2d10540be0b9516e14daf48616877aad  ltmain.sh
! 2568c05dfebfd0651754a59ddd5a90d7  lto-plugin/ChangeLog
  aced0d5ba993307440be577533b64eb3  lto-plugin/Makefile.am
  18a64561ab77c015f8c0e477b147509f  lto-plugin/Makefile.in
  75fc65b35d0a47ac098f7a278d37060b  lto-plugin/aclocal.m4
--- 144500,144506 ----
  343510afde83a825cc4129be092e4f05  libvtv/vtv_utils.h
  247597a3fcc5b5aa8bd923351c59d853  ltgcc.m4
  2d10540be0b9516e14daf48616877aad  ltmain.sh
! 0fddc31ac4d6b8de5e6c511e6acf6531  lto-plugin/ChangeLog
  aced0d5ba993307440be577533b64eb3  lto-plugin/Makefile.am
  18a64561ab77c015f8c0e477b147509f  lto-plugin/Makefile.in
  75fc65b35d0a47ac098f7a278d37060b  lto-plugin/aclocal.m4
*************** dee72a6a60e99528b0d17bf3ff9a1e15  ltopti
*** 143814,143820 ****
  bc2f6032c98896249eadb56177c7d357  ltsugar.m4
  c30cd33c496505f13d9fbdb6970c7c33  ltversion.m4
  293853a13b7e218e3a4342cf85fbbf25  lt~obsolete.m4
! bb857d2f1b2d601cae2111929d78badd  maintainer-scripts/ChangeLog
  33c7bc2d2c55956dfac85a05d8a80eff  maintainer-scripts/README
  507e832af5f2d63b8a78eef217c807a7  maintainer-scripts/branch_changer.py
  c819510f0d438149c1518bda7b165ac4  maintainer-scripts/bugzilla-close-candidate.py
--- 144513,144519 ----
  bc2f6032c98896249eadb56177c7d357  ltsugar.m4
  c30cd33c496505f13d9fbdb6970c7c33  ltversion.m4
  293853a13b7e218e3a4342cf85fbbf25  lt~obsolete.m4
! d27313b60d60a560aa4802fc0161ee9a  maintainer-scripts/ChangeLog
  33c7bc2d2c55956dfac85a05d8a80eff  maintainer-scripts/README
  507e832af5f2d63b8a78eef217c807a7  maintainer-scripts/branch_changer.py
  c819510f0d438149c1518bda7b165ac4  maintainer-scripts/bugzilla-close-candidate.py
*************** cf2baa0854f564a7785307e79f155efc  symlin
*** 143835,143841 ****
  40bb1f4ce4a60a36d1ec50d66aeed4d1  test-driver
  cb06c1be6a41d68b0a65e0c1a91752bc  ylwrap
  03bf3ba8089f4bf475ef4035cf316a47  zlib/CMakeLists.txt
! f436b7937562a47023e4688dd6acea58  zlib/ChangeLog
  f10e5e9394787b288e91fed29533720a  zlib/ChangeLog.gcj
  0e9a37be8e3b85cc0ccf60504064c297  zlib/ChangeLog.jit
  b7a1991f01daea3efe108a215c5514a5  zlib/FAQ
--- 144534,144540 ----
  40bb1f4ce4a60a36d1ec50d66aeed4d1  test-driver
  cb06c1be6a41d68b0a65e0c1a91752bc  ylwrap
  03bf3ba8089f4bf475ef4035cf316a47  zlib/CMakeLists.txt
! 908172fc7d4c7ef47fa11daeeac569d3  zlib/ChangeLog
  f10e5e9394787b288e91fed29533720a  zlib/ChangeLog.gcj
  0e9a37be8e3b85cc0ccf60504064c297  zlib/ChangeLog.jit
  b7a1991f01daea3efe108a215c5514a5  zlib/FAQ
diff -Nrcpad gcc-15.2.0/NEWS gcc-15.3.0/NEWS
*** gcc-15.2.0/NEWS	Fri Aug  8 06:53:47 2025
--- gcc-15.3.0/NEWS	Fri Jun 12 06:11:17 2026
*************** http://gcc.gnu.org/gcc-15/index.html
*** 9,28 ****
  
                               GCC 15 Release Series
  
!    August 8, 2025
  
!    The GCC developers are pleased to announce the release of GCC 15.2.
  
     This release is a bug-fix release, containing fixes for regressions in
!    GCC 15.1 relative to previous releases of GCC.
  
  Release History
  
     GCC 15.2
!           August 8, 2025 ([1]changes, [2]documentation)
  
     GCC 15.1
!           April 25, 2025 ([3]changes, [4]documentation)
  
  References and Acknowledgements
  
--- 9,31 ----
  
                               GCC 15 Release Series
  
!    June 12, 2026
  
!    The GCC developers are pleased to announce the release of GCC 15.3.
  
     This release is a bug-fix release, containing fixes for regressions in
!    GCC 15.2 relative to previous releases of GCC.
  
  Release History
  
+    GCC 15.3
+           June 12, 2026 ([1]changes, [2]documentation)
+ 
     GCC 15.2
!           August 8, 2025 ([3]changes, [4]documentation)
  
     GCC 15.1
!           April 25, 2025 ([5]changes, [6]documentation)
  
  References and Acknowledgements
  
*************** References and Acknowledgements
*** 32,78 ****
  
     The GCC developers would like to thank the numerous people that have
     contributed new features, improvements, bug fixes, and other changes as
!    well as test results to GCC. This [5]amazing group of volunteers is
     what makes GCC successful.
  
!    For additional information about GCC please refer to the [6]GCC project
!    web site or contact the [7]GCC development mailing list.
  
!    To obtain GCC please use [8]our mirror sites or [9]our version control
!    system.
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [10]GCC manuals. If that fails, the
!     [11]gcc-help@gcc.gnu.org mailing list might help. Comments on these
      web pages and the development of GCC are welcome on our developer
!     list at [12]gcc@gcc.gnu.org. All of [13]our lists have public
      archives.
  
!    Copyright (C) [14]Free Software Foundation, Inc. Verbatim copying and
     distribution of this entire article is permitted in any medium,
     provided this notice is preserved.
  
!    These pages are [15]maintained by the GCC team. Last modified
!    2025-08-08.
  
  References
  
     1. https://gcc.gnu.org/gcc-15/changes.html
!    2. https://gcc.gnu.org/onlinedocs/15.2.0/
     3. https://gcc.gnu.org/gcc-15/changes.html
!    4. https://gcc.gnu.org/onlinedocs/15.1.0/
!    5. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Contributors.html
!    6. https://gcc.gnu.org/index.html
!    7. mailto:gcc@gcc.gnu.org
!    8. https://gcc.gnu.org/mirrors.html
!    9. https://gcc.gnu.org/git.html
!   10. https://gcc.gnu.org/onlinedocs/
!   11. mailto:gcc-help@gcc.gnu.org
!   12. mailto:gcc@gcc.gnu.org
!   13. https://gcc.gnu.org/lists.html
!   14. https://www.fsf.org/
!   15. https://gcc.gnu.org/about.html
  ======================================================================
  http://gcc.gnu.org/gcc-15/changes.html
  
--- 35,83 ----
  
     The GCC developers would like to thank the numerous people that have
     contributed new features, improvements, bug fixes, and other changes as
!    well as test results to GCC. This [7]amazing group of volunteers is
     what makes GCC successful.
  
!    For additional information about GCC please refer to the [8]GCC project
!    web site or contact the [9]GCC development mailing list.
  
!    To obtain GCC please use [10]our mirror sites or [11]our version
!    control system.
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [12]GCC manuals. If that fails, the
!     [13]gcc-help@gcc.gnu.org mailing list might help. Comments on these
      web pages and the development of GCC are welcome on our developer
!     list at [14]gcc@gcc.gnu.org. All of [15]our lists have public
      archives.
  
!    Copyright (C) [16]Free Software Foundation, Inc. Verbatim copying and
     distribution of this entire article is permitted in any medium,
     provided this notice is preserved.
  
!    These pages are [17]maintained by the GCC team. Last modified
!    2026-06-12.
  
  References
  
     1. https://gcc.gnu.org/gcc-15/changes.html
!    2. https://gcc.gnu.org/onlinedocs/15.3.0/
     3. https://gcc.gnu.org/gcc-15/changes.html
!    4. https://gcc.gnu.org/onlinedocs/15.2.0/
!    5. https://gcc.gnu.org/gcc-15/changes.html
!    6. https://gcc.gnu.org/onlinedocs/15.1.0/
!    7. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Contributors.html
!    8. https://gcc.gnu.org/index.html
!    9. mailto:gcc@gcc.gnu.org
!   10. https://gcc.gnu.org/mirrors.html
!   11. https://gcc.gnu.org/git.html
!   12. https://gcc.gnu.org/onlinedocs/
!   13. mailto:gcc-help@gcc.gnu.org
!   14. mailto:gcc@gcc.gnu.org
!   15. https://gcc.gnu.org/lists.html
!   16. https://www.fsf.org/
!   17. https://gcc.gnu.org/about.html
  ======================================================================
  http://gcc.gnu.org/gcc-15/changes.html
  
*************** Caveats
*** 89,98 ****
         has now been removed entirely.
       * In the AArch64 port, support for ILP32 (-mabi=ilp32) has been
         deprecated and will be removed in a future release.
       * This is the last release supporting the old reload local register
         allocation code. It will be removed for GCC 16, causing targets
         that do not support the new LRA local register allocation code to
!        be removed. See the list of supported [3]targets for which ports
         are going to be affected (look for missing a, the ports that do not
         use LRA by default).
       * {0} initializer in C or C++ for unions no longer guarantees
--- 94,105 ----
         has now been removed entirely.
       * In the AArch64 port, support for ILP32 (-mabi=ilp32) has been
         deprecated and will be removed in a future release.
+      * Support for Solaris 11.3 (*-*-solaris2.11.3) has been removed.
+        Details can be found in the [3]obsoletion announcement.
       * This is the last release supporting the old reload local register
         allocation code. It will be removed for GCC 16, causing targets
         that do not support the new LRA local register allocation code to
!        be removed. See the list of supported [4]targets for which ports
         are going to be affected (look for missing a, the ports that do not
         use LRA by default).
       * {0} initializer in C or C++ for unions no longer guarantees
*************** Caveats
*** 100,119 ****
         initialization), it just initializes the first union member to
         zero. If initialization of the whole union including padding bits
         is desirable, use {} (valid in C23 or C++) or use
!        -fzero-init-padding-bits=unions option to restore old GCC behavior.
!      * [4]-fanalyzer is still only suitable for analyzing C code. In
         particular, using it on C++ is unlikely to give meaningful output.
!      * The json format for [5]-fdiagnostics-format= is deprecated and may
         be removed in a future release. Users seeking machine-readable
!        diagnostics from GCC should use [6]SARIF.
  
! [7]General Improvements
  
       * The default vectorizer cost model at -O2 has been enhanced to
!        handle an unknown tripcount. But it still disables vectorization of
!        loops when any runtime check for data dependence or alignment is
!        required, it also disables vectorization of epilogue loops but
!        otherwise is equal to the cheap cost model.
       * The vectorizer now supports vectorizing loops with early exits
         where the number of elements for the input pointers are unknown
         through peeling for alignment. This is supported only for loops
--- 107,127 ----
         initialization), it just initializes the first union member to
         zero. If initialization of the whole union including padding bits
         is desirable, use {} (valid in C23 or C++) or use
!        -fzero-init-padding-bits=unions option to restore the old GCC
!        behavior.
!      * [5]-fanalyzer is still only suitable for analyzing C code. In
         particular, using it on C++ is unlikely to give meaningful output.
!      * The json format for [6]-fdiagnostics-format= is deprecated and may
         be removed in a future release. Users seeking machine-readable
!        diagnostics from GCC should use [7]SARIF.
  
! [8]General Improvements
  
       * The default vectorizer cost model at -O2 has been enhanced to
!        handle an unknown tripcount. It still disables vectorization of
!        loops when any run-time check for data dependence or alignment is
!        required. It also disables vectorization of epilogue loops, but is
!        otherwise equal to the cheap cost model.
       * The vectorizer now supports vectorizing loops with early exits
         where the number of elements for the input pointers are unknown
         through peeling for alignment. This is supported only for loops
*************** Caveats
*** 123,129 ****
         significantly, making it possible to use in standard build systems.
       * Incremental Link-Time Optimizations significantly reduce average
         recompilation time of LTO when doing small code edits (e.g. editing
!        a single function). Enable with [8]-flto-incremental=.
       * For offloading using OpenMP and OpenACC, issues preventing some
         host-device architecture combinations have been resolved. In
         particular, offloading from aarch64 hosts to nvptx devices is now
--- 131,137 ----
         significantly, making it possible to use in standard build systems.
       * Incremental Link-Time Optimizations significantly reduce average
         recompilation time of LTO when doing small code edits (e.g. editing
!        a single function). Enable with [9]-flto-incremental=.
       * For offloading using OpenMP and OpenACC, issues preventing some
         host-device architecture combinations have been resolved. In
         particular, offloading from aarch64 hosts to nvptx devices is now
*************** Caveats
*** 135,162 ****
         larger than 4096. Very large source files have more accurate
         location reporting.
       * GCC can now emit diagnostics in multiple formats simultaneously,
!        via the new option [9]-fdiagnostics-add-output=. For example, use
!        [10]-fdiagnostics-add-output=sarif to get both GCC's classic text
!        output on stderr and [11]SARIF output to a file. There is also a
!        new option [12]-fdiagnostics-set-output= which exposes more control
         than existing options for some experimental cases. These new
         options are an alternative to the existing
!        [13]-fdiagnostics-format= which only supports a single output
         format at a time.
  
! [14]New Languages and Language specific improvements
  
!   [15]OpenMP
  
!    See the [16]GNU Offloading and Multi-Processing Project (GOMP) page for
     general information.
       * Support for unified-shared memory has been added for some AMD and
         Nvidia GPU devices, enabled when using the unified_shared_memory
         clause to the requires directive. The OpenMP 6.0 self_maps clause
         is also now supported. For details, see the offload-target
!        specifics section in the [17]GNU Offloading and Multi Processing
         Runtime Library Manual.
!      * GCC added ompx_gnu_pinned_mem_alloc as a [18]predefined allocator
         and, for C++, allocator class templates in the omp::allocator
         namespace for the predefined allocators as specified in the OpenMP
         specification 5.0, including omp::allocator::null_allocator of
--- 143,170 ----
         larger than 4096. Very large source files have more accurate
         location reporting.
       * GCC can now emit diagnostics in multiple formats simultaneously,
!        via the new option [10]-fdiagnostics-add-output=. For example, use
!        [11]-fdiagnostics-add-output=sarif to get both GCC's classic text
!        output on stderr and [12]SARIF output to a file. There is also a
!        new option [13]-fdiagnostics-set-output= which exposes more control
         than existing options for some experimental cases. These new
         options are an alternative to the existing
!        [14]-fdiagnostics-format= which only supports a single output
         format at a time.
  
! [15]New Languages and Language specific improvements
  
!   [16]OpenMP
  
!    See the [17]GNU Offloading and Multi-Processing Project (GOMP) page for
     general information.
       * Support for unified-shared memory has been added for some AMD and
         Nvidia GPU devices, enabled when using the unified_shared_memory
         clause to the requires directive. The OpenMP 6.0 self_maps clause
         is also now supported. For details, see the offload-target
!        specifics section in the [18]GNU Offloading and Multi Processing
         Runtime Library Manual.
!      * GCC added ompx_gnu_pinned_mem_alloc as a [19]predefined allocator
         and, for C++, allocator class templates in the omp::allocator
         namespace for the predefined allocators as specified in the OpenMP
         specification 5.0, including omp::allocator::null_allocator of
*************** Caveats
*** 165,171 ****
       * In C and Fortran, the allocate directive now supports static
         variables; stack variables were previously supported in those
         languages. C++ support is not available yet.
!      * Offloading improvements: On [19]Nvidia GPUs, writing to the
         terminal from OpenMP target regions (but not from OpenACC compute
         regions) is now also supported in Fortran; in C/C++ and on AMD GPUs
         this was already supported before with both OpenMP and OpenACC.
--- 173,179 ----
       * In C and Fortran, the allocate directive now supports static
         variables; stack variables were previously supported in those
         languages. C++ support is not available yet.
!      * Offloading improvements: On [20]Nvidia GPUs, writing to the
         terminal from OpenMP target regions (but not from OpenACC compute
         regions) is now also supported in Fortran; in C/C++ and on AMD GPUs
         this was already supported before with both OpenMP and OpenACC.
*************** Caveats
*** 180,197 ****
         latter with some restrictions).
       * The interop construct and the OpenMP interoperability API routines
         for C, C++ and Fortran are now implemented, including the OpenMP
!        6.0 additions. This includes foreign-runtime support for [20]Cuda,
!        Cuda Driver, and HIP on Nvida GPUs and for [21]HIP and HSA on AMD
         GPUs.
       * The OpenMP 5.1 dispatch construct has been implemented with support
         for the adjust_args and append_args clauses to the declare variant
         directive, including the following OpenMP 6.0 additions: the
         interop clause to dispatch and the syntax extensions to append_args
         are supported.
!      * OpenMP 6.0: The [22]get_device_from_uid and
!        [23]omp_get_uid_from_device API routines have been added.
  
!   [24]COBOL
  
       * GCC now includes an ISO COBOL compiler, gcobol. It has been tested
         on x86-64 and AArch64 targets. It is not expected to work on 32-bit
--- 188,205 ----
         latter with some restrictions).
       * The interop construct and the OpenMP interoperability API routines
         for C, C++ and Fortran are now implemented, including the OpenMP
!        6.0 additions. This includes foreign-runtime support for [21]Cuda,
!        Cuda Driver, and HIP on Nvida GPUs and for [22]HIP and HSA on AMD
         GPUs.
       * The OpenMP 5.1 dispatch construct has been implemented with support
         for the adjust_args and append_args clauses to the declare variant
         directive, including the following OpenMP 6.0 additions: the
         interop clause to dispatch and the syntax extensions to append_args
         are supported.
!      * OpenMP 6.0: The [23]get_device_from_uid and
!        [24]omp_get_uid_from_device API routines have been added.
  
!   [25]COBOL
  
       * GCC now includes an ISO COBOL compiler, gcobol. It has been tested
         on x86-64 and AArch64 targets. It is not expected to work on 32-bit
*************** Caveats
*** 203,219 ****
         object-orientation features, are yet to be implemented. Beyond ISO,
         gcobol recognizes some syntax common on other compilers, with
         special attention given to IBM.
!        More information about GCC COBOL can be found at [25]the COBOLworx
         website.
  
!   [26]Ada
  
!      * GNAT now allows the [27]'Round attribute also for ordinary
         fixed-point types.
!      * The new GNAT attribute [28]'Super can be applied to objects of
         tagged types in order to obtain a view conversion to the most
         immediate specific parent type.
!      * [29]Mutably tagged types with a defined size are now available
         through the use of Size'Class. This allows defining a maximum size
         for the tagged. Example:
  type Base is tagged null record with Size'Class => 16 * 8;
--- 211,227 ----
         object-orientation features, are yet to be implemented. Beyond ISO,
         gcobol recognizes some syntax common on other compilers, with
         special attention given to IBM.
!        More information about GCC COBOL can be found at [26]the COBOLworx
         website.
  
!   [27]Ada
  
!      * GNAT now allows the [28]'Round attribute also for ordinary
         fixed-point types.
!      * The new GNAT attribute [29]'Super can be applied to objects of
         tagged types in order to obtain a view conversion to the most
         immediate specific parent type.
!      * [30]Mutably tagged types with a defined size are now available
         through the use of Size'Class. This allows defining a maximum size
         for the tagged. Example:
  type Base is tagged null record with Size'Class => 16 * 8;
*************** type Base is tagged null record with Siz
*** 222,228 ****
  type Derived_Type is new Base with record Data_Field : Integer; end record;
       -- ERROR if Derived_Type exceeds 16 bytes
  
!      * New [30]Finalizable aspect. It is a GNAT language extension which
         serves as a lightweight alternative to controlled types.
  type T is record
       ...
--- 230,236 ----
  type Derived_Type is new Base with record Data_Field : Integer; end record;
       -- ERROR if Derived_Type exceeds 16 bytes
  
!      * New [31]Finalizable aspect. It is a GNAT language extension which
         serves as a lightweight alternative to controlled types.
  type T is record
       ...
*************** procedure Adjust     (Obj : in out T);
*** 235,259 ****
  procedure Finalize   (Obj : in out T);
  procedure Initialize (Obj : in out T);
  
!      * The aspect [31]No_Raise has been added, it declares that a
         subprogram cannot raise an exception.
!      * The aspect [32]External_Initialization has been added, it allows
         for data to be initialized using an external file which is loaded
         during compilation time.
!      * The aspect [33]Exit_Cases has been added to annotate functions and
!        procedures with side effects in SPARK (see [34]SPARK reference
         manual) . It can be used to partition the input state into a list
         of cases and specify, for each case, how the subprogram is allowed
         to terminate.
       * Language extensions are enabled through the use of pragma
         Extensions_Allowed (On | Off | All_Extensions); which has had its
         syntax changed. An argument of All_Extensions has the same effect
!        as On, except that [35]some extra experimental extensions are
         enabled.
       * Several new compilation flags have been added, some examples
!        include [36]-gnatis, [37]-gnatw.n, [38]-gnatw_l and [39]-gnatw.v.
         The internal debugging utilities for the compiler have also
!        received a lot of new options, please refer to [40]debug.adb for
         more information.
       * The diagnostics code has seen major refactoring, it now supports
         the sarif format -fdiagnostics-format=sarif-file among other
--- 243,267 ----
  procedure Finalize   (Obj : in out T);
  procedure Initialize (Obj : in out T);
  
!      * The aspect [32]No_Raise has been added, it declares that a
         subprogram cannot raise an exception.
!      * The aspect [33]External_Initialization has been added, it allows
         for data to be initialized using an external file which is loaded
         during compilation time.
!      * The aspect [34]Exit_Cases has been added to annotate functions and
!        procedures with side effects in SPARK (see [35]SPARK reference
         manual) . It can be used to partition the input state into a list
         of cases and specify, for each case, how the subprogram is allowed
         to terminate.
       * Language extensions are enabled through the use of pragma
         Extensions_Allowed (On | Off | All_Extensions); which has had its
         syntax changed. An argument of All_Extensions has the same effect
!        as On, except that [36]some extra experimental extensions are
         enabled.
       * Several new compilation flags have been added, some examples
!        include [37]-gnatis, [38]-gnatw.n, [39]-gnatw_l and [40]-gnatw.v.
         The internal debugging utilities for the compiler have also
!        received a lot of new options, please refer to [41]debug.adb for
         more information.
       * The diagnostics code has seen major refactoring, it now supports
         the sarif format -fdiagnostics-format=sarif-file among other
*************** procedure Initialize (Obj : in out T);
*** 266,278 ****
       * Task priorities on MinGW have been reworked.
       * The documentation has been rearanged for clarity, mainly the
         sections related to tasking and platform dependent information.
!      * REMOVAL: Generic_Formal_Hash_Table has been removed, the [41]SPARK
         Library is recommended as a substitute.
  
!   [42]C family
  
!      * A [43]musttail statement attribute was added to enforce tail calls.
!      * [44]Extended inline assembler statements can now be used with some
         limitations outside of functions as well. New constraints have been
         added for defining symbols or using symbols inside of inline
         assembler, and a new generic operand modifier has been added to
--- 274,293 ----
       * Task priorities on MinGW have been reworked.
       * The documentation has been rearanged for clarity, mainly the
         sections related to tasking and platform dependent information.
!      * REMOVAL: Generic_Formal_Hash_Table has been removed, the [42]SPARK
         Library is recommended as a substitute.
+      * The new [43]finally [44][RFC] keyword makes it possible to specify
+        a sequence of statements that shall be executed when another
+        sequence of statements is completed, regardless of whether the
+        completion was normal or abnormal.
+      * [45]String interpolation [46][RFC], inspired by python f-strings
+        (e.g. f"The name is {Name} and the sum is {X + Y}."), has been
+        added.
  
!   [47]C family
  
!      * A [48]musttail statement attribute was added to enforce tail calls.
!      * [49]Extended inline assembler statements can now be used with some
         limitations outside of functions as well. New constraints have been
         added for defining symbols or using symbols inside of inline
         assembler, and a new generic operand modifier has been added to
*************** sm.  */
*** 293,306 ****
       * The "redzone" clobber is now allowed in inline assembler statements
         to describe that the assembler can overwrite memory in the stack
         red zone (e.g. on x86-64 or PowerPC).
!      * The [45]nonnull_if_nonzero function attribute has been added to
         describe functions where some pointer parameter may be NULL only if
         some other parameter is zero.
!      * The [46]-Wtrailing-whitespace= and [47]-Wleading-whitespace=
         options have been added to diagnose certain whitespace characters
         at the end of source lines or whitespace characters at the start of
         source lines violating certain indentation styles.
!      * The [48]-Wheader-guard warning has been added and enabled in -Wall
         to warn about some inconsistencies in header file guarding macros.
       * The C and C++ frontends now provide fix-it hints for some cases of
         missing '&' and '*'. For example, note the ampersand fix-it hint in
--- 308,321 ----
       * The "redzone" clobber is now allowed in inline assembler statements
         to describe that the assembler can overwrite memory in the stack
         red zone (e.g. on x86-64 or PowerPC).
!      * The [50]nonnull_if_nonzero function attribute has been added to
         describe functions where some pointer parameter may be NULL only if
         some other parameter is zero.
!      * The [51]-Wtrailing-whitespace= and [52]-Wleading-whitespace=
         options have been added to diagnose certain whitespace characters
         at the end of source lines or whitespace characters at the start of
         source lines violating certain indentation styles.
!      * The [53]-Wheader-guard warning has been added and enabled in -Wall
         to warn about some inconsistencies in header file guarding macros.
       * The C and C++ frontends now provide fix-it hints for some cases of
         missing '&' and '*'. For example, note the ampersand fix-it hint in
*************** nt'}
*** 334,345 ****
         the left-hand type is shown in green and the right-hand type in
         dark blue.
  
!   [49]C
  
       * C23 by default: GCC 15 changes the default language version for C
!        compilation from [50]-std=gnu17 to [51]-std=gnu23. If your code
         relies on older versions of the C standard, you will need to either
!        add [52]-std= to your build flags, or port your code; see [53]the
         porting notes.
       * Some more C23 features have been implemented:
            + #embed preprocessing directive support.
--- 349,360 ----
         the left-hand type is shown in green and the right-hand type in
         dark blue.
  
!   [54]C
  
       * C23 by default: GCC 15 changes the default language version for C
!        compilation from [55]-std=gnu17 to [56]-std=gnu23. If your code
         relies on older versions of the C standard, you will need to either
!        add [57]-std= to your build flags, or port your code; see [58]the
         porting notes.
       * Some more C23 features have been implemented:
            + #embed preprocessing directive support.
*************** nt'}
*** 373,462 ****
              compiler side, C library headers will need adjustments too if
              using nonnull attribute).
  
!   [54]C++
  
       * Several C++26 features have been implemented:
!           + [55]P2558R2, Add @, $, and ` to the basic character set
!             ([56]PR110343)
!           + [57]P2552R3, On the ignorability of standard attributes
!             ([58]PR110345)
!           + [59]P2662R3, Pack indexing ([60]PR113798)
!           + [61]P0609R3, Attributes for structured bindings ([62]PR114456)
!           + [63]P2573R2, = delete("reason"); ([64]PR114458)
!           + [65]P2893R3, Variadic friends ([66]PR114459)
!           + [67]P3034R1, Disallow module declarations to be macros
!             ([68]PR114461)
!           + [69]P2747R2, constexpr placement new ([70]PR115744)
!           + [71]P0963R3, Structured binding declaration as a condition
!             ([72]PR115745)
!           + [73]P3144R2, Deleting a pointer to an incomplete type should
!             be ill-formed ([74]PR115747)
!           + [75]P3176R0, Oxford variadic comma ([76]PR117786)
!           + [77]P2865R5, Removing deprecated array comparisons
!             ([78]PR117788)
!           + [79]P1967R14, #embed ([80]PR119065)
!           + [81]P3247R2, Deprecating the notion of trivial types
!             ([82]PR117787)
       * Several C++23 features have been implemented:
!           + [83]P2615R1, Meaningful exports ([84]PR107688)
!           + [85]P2718R0, Wording for P2644R1 Fix for Range-based for Loop
!             ([86]PR107637)
       * Several C++ Defect Reports have been resolved, e.g.:
!           + [87]DR 36, using-declarations in multiple-declaration contexts
!           + [88]DR 882, Defining main as deleted
!           + [89]DR 1363, Triviality vs multiple default constructors
!           + [90]DR 1496, Triviality with deleted and missing default
              constructors
!           + [91]DR 2387, Linkage of const-qualified variable template
!           + [92]DR 2521, User-defined literals and reserved identifiers
!           + [93]DR 2627, Bit-fields and narrowing conversions
!           + [94]DR 2819, Cast from null pointer value in a constant
              expression (C++26 only)
!           + [95]DR 2867, Order of initialization for structured bindings
!           + [96]DR 2918, Consideration of constraints for address of
              overloaded function
!      * Inline assembler statements now support [97]constexpr generated
         strings, analoguous to static_assert.
       * Qualified name lookup failure into the current instantiation, e.g.
         this->non_existent, is now proactively diagnosed when parsing a
         template.
!      * The [98]-fassume-sane-operators-new-delete option has been added
         and enabled by default. This option allows control over some
         optimizations around calls to replaceable global operators new and
         delete. If a program overrides those replaceable global operators
         and the replaced definitions read or modify global state visible to
         the rest of the program, programs might need to be compiled with
         -fno-assume-sane-operators-new-delete.
!      * The [99]-Wself-move warning now warns even in a
         member-initializer-list.
       * The support for Concepts TS was removed. -fconcepts-ts has no
         effect anymore.
!      * A new option [100]-Wtemplate-body was added, which can be used to
         disable diagnosing errors when parsing a template.
       * C++ Modules have been greatly improved.
       * C++11 attributes are now supported even in C++98.
!      * New [101]flag_enum attribute to indicate that the enumerators are
         used in bitwise operations; this suppresses a -Wswitch warning.
!      * The [102]-Wdangling-reference warning has been improved: for
         example, it doesn't warn for empty classes anymore.
       * The front end's handling of explicitly-defaulted functions has been
         corrected to properly handle [dcl.fct.def.default]. The new
!        [103]-Wdefaulted-function-deleted warning warns when an explicitly
         defaulted function is deleted.
!      * The implementation of [104]DR 2789 was refined.
       * Compilation time speed ups, e.g. by improving hashing of template
         specializations.
       * Support for __builtin_operator_new and __builtin_operator_delete
!        was added. See [105]the manual for more info.
!      * More prvalues are evaluated at compile time ([106]git).
       * A new way of presenting complicated diagnostics (such as C++
         template errors) is available via
!        [107]-fdiagnostics-set-output=text:experimental-nesting=yes; an
!        example can be seen [108]here. This should be regarded as
         experimental in this release and is subject to change.
       * Various other diagnostic improvements.
  
!     [109]Runtime Library (libstdc++)
  
       * Debug assertions are now enabled by default for unoptimized builds.
         Use -D_GLIBCXX_NO_ASSERTIONS to override this.
--- 388,477 ----
              compiler side, C library headers will need adjustments too if
              using nonnull attribute).
  
!   [59]C++
  
       * Several C++26 features have been implemented:
!           + [60]P2558R2, Add @, $, and ` to the basic character set
!             ([61]PR110343)
!           + [62]P2552R3, On the ignorability of standard attributes
!             ([63]PR110345)
!           + [64]P2662R3, Pack indexing ([65]PR113798)
!           + [66]P0609R3, Attributes for structured bindings ([67]PR114456)
!           + [68]P2573R2, = delete("reason"); ([69]PR114458)
!           + [70]P2893R3, Variadic friends ([71]PR114459)
!           + [72]P3034R1, Disallow module declarations to be macros
!             ([73]PR114461)
!           + [74]P2747R2, constexpr placement new ([75]PR115744)
!           + [76]P0963R3, Structured binding declaration as a condition
!             ([77]PR115745)
!           + [78]P3144R2, Deleting a pointer to an incomplete type should
!             be ill-formed ([79]PR115747)
!           + [80]P3176R0, Oxford variadic comma ([81]PR117786)
!           + [82]P2865R5, Removing deprecated array comparisons
!             ([83]PR117788)
!           + [84]P1967R14, #embed ([85]PR119065)
!           + [86]P3247R2, Deprecating the notion of trivial types
!             ([87]PR117787)
       * Several C++23 features have been implemented:
!           + [88]P2615R1, Meaningful exports ([89]PR107688)
!           + [90]P2718R0, Wording for P2644R1 Fix for Range-based for Loop
!             ([91]PR107637)
       * Several C++ Defect Reports have been resolved, e.g.:
!           + [92]DR 36, using-declarations in multiple-declaration contexts
!           + [93]DR 882, Defining main as deleted
!           + [94]DR 1363, Triviality vs multiple default constructors
!           + [95]DR 1496, Triviality with deleted and missing default
              constructors
!           + [96]DR 2387, Linkage of const-qualified variable template
!           + [97]DR 2521, User-defined literals and reserved identifiers
!           + [98]DR 2627, Bit-fields and narrowing conversions
!           + [99]DR 2819, Cast from null pointer value in a constant
              expression (C++26 only)
!           + [100]DR 2867, Order of initialization for structured bindings
!           + [101]DR 2918, Consideration of constraints for address of
              overloaded function
!      * Inline assembler statements now support [102]constexpr generated
         strings, analoguous to static_assert.
       * Qualified name lookup failure into the current instantiation, e.g.
         this->non_existent, is now proactively diagnosed when parsing a
         template.
!      * The [103]-fassume-sane-operators-new-delete option has been added
         and enabled by default. This option allows control over some
         optimizations around calls to replaceable global operators new and
         delete. If a program overrides those replaceable global operators
         and the replaced definitions read or modify global state visible to
         the rest of the program, programs might need to be compiled with
         -fno-assume-sane-operators-new-delete.
!      * The [104]-Wself-move warning now warns even in a
         member-initializer-list.
       * The support for Concepts TS was removed. -fconcepts-ts has no
         effect anymore.
!      * A new option [105]-Wtemplate-body was added, which can be used to
         disable diagnosing errors when parsing a template.
       * C++ Modules have been greatly improved.
       * C++11 attributes are now supported even in C++98.
!      * New [106]flag_enum attribute to indicate that the enumerators are
         used in bitwise operations; this suppresses a -Wswitch warning.
!      * The [107]-Wdangling-reference warning has been improved: for
         example, it doesn't warn for empty classes anymore.
       * The front end's handling of explicitly-defaulted functions has been
         corrected to properly handle [dcl.fct.def.default]. The new
!        [108]-Wdefaulted-function-deleted warning warns when an explicitly
         defaulted function is deleted.
!      * The implementation of [109]DR 2789 was refined.
       * Compilation time speed ups, e.g. by improving hashing of template
         specializations.
       * Support for __builtin_operator_new and __builtin_operator_delete
!        was added. See [110]the manual for more info.
!      * More prvalues are evaluated at compile time ([111]git).
       * A new way of presenting complicated diagnostics (such as C++
         template errors) is available via
!        [112]-fdiagnostics-set-output=text:experimental-nesting=yes; an
!        example can be seen [113]here. This should be regarded as
         experimental in this release and is subject to change.
       * Various other diagnostic improvements.
  
!     [114]Runtime Library (libstdc++)
  
       * Debug assertions are now enabled by default for unoptimized builds.
         Use -D_GLIBCXX_NO_ASSERTIONS to override this.
*************** nt'}
*** 480,505 ****
            + Clarify handling of encodings in localized formatting of
              chrono types.
  
!   [110]D
  
       * Support for the D programming language has been updated to version
         2.111.0 of the language and run-time library. Full changelog for
         this release and previous releases can be found on the
!        [111]dlang.org website.
       * On supported targets, the version GNU_CET is now predefined when
         the option -fcf-protection is used. The protection level is also
         set in the traits key __traits(getTargetInfo, "CET").
!      * A new option [112]-finclude-imports was added, which tells the
         compiler to include imported modules in the compilation, as if they
         were given on the command-line.
  
!   [113]Fortran
  
       * Fortran 2018 and 2023 locality specifiers to do concurrent are now
         supported.
       * Experimental support for unsigned modular integers, enabled by
!        -funsigned; see [114]gfortran documentation for details. This
!        follows ([115]J3/24-116). With this option in force, the
         selected_logical_kind intrinsic function and, in the
         ISO_FORTRAN_ENV module, the named constants logical{8,16,32,64} and
         real16 were added. The ISO_C_BINDING module has been extended
--- 495,520 ----
            + Clarify handling of encodings in localized formatting of
              chrono types.
  
!   [115]D
  
       * Support for the D programming language has been updated to version
         2.111.0 of the language and run-time library. Full changelog for
         this release and previous releases can be found on the
!        [116]dlang.org website.
       * On supported targets, the version GNU_CET is now predefined when
         the option -fcf-protection is used. The protection level is also
         set in the traits key __traits(getTargetInfo, "CET").
!      * A new option [117]-finclude-imports was added, which tells the
         compiler to include imported modules in the compilation, as if they
         were given on the command-line.
  
!   [118]Fortran
  
       * Fortran 2018 and 2023 locality specifiers to do concurrent are now
         supported.
       * Experimental support for unsigned modular integers, enabled by
!        -funsigned; see [119]gfortran documentation for details. This
!        follows ([120]J3/24-116). With this option in force, the
         selected_logical_kind intrinsic function and, in the
         ISO_FORTRAN_ENV module, the named constants logical{8,16,32,64} and
         real16 were added. The ISO_C_BINDING module has been extended
*************** nt'}
*** 528,534 ****
         interoperable procedures with assumed shape and assumed rank
         arguments that require the header file <ISO_Fortran_binding.h>.
  
!   [116]Modula-2
  
       * The keyword FORWARD has been implemented in the compiler and is
         available by default in all dialects.
--- 543,549 ----
         interoperable procedures with assumed shape and assumed rank
         arguments that require the header file <ISO_Fortran_binding.h>.
  
!   [121]Modula-2
  
       * The keyword FORWARD has been implemented in the compiler and is
         available by default in all dialects.
*************** nt'}
*** 538,544 ****
       * Access to the GCC builtins clz, clzll, ctz and ctzll is now
         available from the module Builtins.
  
!   [117]Rust
  
       * Basic inline assembly support has been added to the frontend, which
         enables us to compile the architecture specific functions of core
--- 553,559 ----
       * Access to the GCC builtins clz, clzll, ctz and ctzll is now
         available from the module Builtins.
  
!   [122]Rust
  
       * Basic inline assembly support has been added to the frontend, which
         enables us to compile the architecture specific functions of core
*************** nt'}
*** 572,580 ****
       * Rewrite of our name resolution algorithm to properly handle the
         complex import/export structure used in core 1.49.
  
! [118]New Targets and Target Specific Improvements
  
!   [119]AArch64
  
       * Support has been added for the AArch64 MinGW target
         (aarch64-w64-mingw32). At present, this target supports C and C++
--- 587,595 ----
       * Rewrite of our name resolution algorithm to properly handle the
         complex import/export structure used in core 1.49.
  
! [123]New Targets and Target Specific Improvements
  
!   [124]AArch64
  
       * Support has been added for the AArch64 MinGW target
         (aarch64-w64-mingw32). At present, this target supports C and C++
*************** nt'}
*** 669,675 ****
              enabled by default at -O2 for AArch64 targets. The pass is
              still enabled by default at -O3 and -Ofast.
       * Support has been added for the following features of the Arm C
!        Language Extensions ([120]ACLE):
            + guarded control stacks
            + lookup table instructions with 2-bit and 4-bit indices
              (predefined macro __ARM_FEATURE_LUT, enabled by +lut)
--- 684,690 ----
              enabled by default at -O2 for AArch64 targets. The pass is
              still enabled by default at -O3 and -Ofast.
       * Support has been added for the following features of the Arm C
!        Language Extensions ([125]ACLE):
            + guarded control stacks
            + lookup table instructions with 2-bit and 4-bit indices
              (predefined macro __ARM_FEATURE_LUT, enabled by +lut)
*************** nt'}
*** 746,757 ****
            + improved register allocation, such as eliminating some vector
              moves
  
!   [121]AMD GPU (GCN)
  
       * The standard C++ library (libstdc++) is now supported and enabled.
       * Experimental support for supporting generic devices has been added;
         specifying gfx9-generic, gfx10-3-generic, or gfx11-generic to
!        [122]-march= will generate code that can run on all devices of a
         series. Additionally, the following specific devices are now have
         experimental support, all of which are compatible with a listed
         generic: gfx902, gfx904, gfx909, gfx1031, gfx1032, gfx1033,
--- 761,772 ----
            + improved register allocation, such as eliminating some vector
              moves
  
!   [126]AMD GPU (GCN)
  
       * The standard C++ library (libstdc++) is now supported and enabled.
       * Experimental support for supporting generic devices has been added;
         specifying gfx9-generic, gfx10-3-generic, or gfx11-generic to
!        [127]-march= will generate code that can run on all devices of a
         series. Additionally, the following specific devices are now have
         experimental support, all of which are compatible with a listed
         generic: gfx902, gfx904, gfx909, gfx1031, gfx1032, gfx1033,
*************** nt'}
*** 759,772 ****
         any of the listed new devices including the generic ones, GCC has
         to be configured to build the runtime library for the device. Note
         that generic support requires ROCm 6.4.0 (or newer). For details,
!        consult GCC's [123]installation notes.
       * Support for Fiji (gfx803) devices has been removed (this was
         already deprecated in GCC 14).
  
!   [124]AVR
  
       * Support has been added for the signal(num) and interrupt(num)
!        [125]function attributes that allow to specify the interrupt vector
         number num as an argument. It allows to use static functions as
         interrupt handlers, and also functions defined in a C++ namespace.
       * Support has been added for the noblock function attribute. It can
--- 774,787 ----
         any of the listed new devices including the generic ones, GCC has
         to be configured to build the runtime library for the device. Note
         that generic support requires ROCm 6.4.0 (or newer). For details,
!        consult GCC's [128]installation notes.
       * Support for Fiji (gfx803) devices has been removed (this was
         already deprecated in GCC 14).
  
!   [129]AVR
  
       * Support has been added for the signal(num) and interrupt(num)
!        [130]function attributes that allow to specify the interrupt vector
         number num as an argument. It allows to use static functions as
         interrupt handlers, and also functions defined in a C++ namespace.
       * Support has been added for the noblock function attribute. It can
*************** nt'}
*** 775,810 ****
         to globally re-enable interrupts. The difference to the interrupt
         attribute is that the noblock attribute just acts like a flag and
         does not impose a specific function name.
!      * Support has been added for the __builtin_avr_mask1 [126]built-in
         function. It can be used to compute some bit masks when code like
         1 << offset is not fast enough.
!      * Support has been added for a new 24-bit [127]named address space
         __flashx. It is similar to the __memx address space introduced in
!        v4.7, but reading is a bit more efficient since it only supports
         reading from program memory. Objects in the __flashx address space
!        are located in the .progmemx.data section.
       * Apart from the built-in types __int24 and __uint24 supported since
!        v4.7, support has been added for the signed __int24 and unsigned
         __int24 types.
       * Code generation for the 32-bit integer shifts with constant offset
         has been improved. The code size may slightly increase even when
         optimizing for code size with -Os.
       * Support has been added for a compact vector table as supported by
         some AVR devices. It can be activated by the new command-line
!        option [128]-mcvt. It links crtmcu-cvt.o as startup code which is
         supported since AVR-LibC v2.3.
!      * Support has been added for the new option [129]-mno-call-main.
         Instead of calling main, it will be located in section .init9.
       * New AVR specific optimizations have been added. They can be
!        controlled by the new command-line options [130]-mfuse-move,
!        [131]-msplit-ldst, [132]-msplit-bit-shift and
!        [133]-muse-nonzero-bits.
!      * Support for the following devices has been added in v15.2:
            + AVR32DA28S, AVR32DA32S, AVR32DA48S, AVR64DA28S, AVR64DA32S,
              AVR64DA48S AVR64DA64S, AVR128DA28S, AVR128DA32S, AVR128DA48S,
              AVR128DA64S.
  
!   [134]IA-32/x86-64
  
       * New ISA extension support for Intel AMX-AVX512 was added.
         AMX-AVX512 intrinsics are available via the -mamx-avx512 compiler
--- 790,832 ----
         to globally re-enable interrupts. The difference to the interrupt
         attribute is that the noblock attribute just acts like a flag and
         does not impose a specific function name.
!      * Support has been added for the __builtin_avr_mask1 [131]built-in
         function. It can be used to compute some bit masks when code like
         1 << offset is not fast enough.
!      * Support has been added for a new 24-bit [132]named address space
         __flashx. It is similar to the __memx address space introduced in
!        GCC 4.7, but reading is more efficient since it only supports
         reading from program memory. Objects in the __flashx address space
!        are located in the .progmemx.data section. The address space is
!        available when the feature-test macro __FLASHX is defined.
       * Apart from the built-in types __int24 and __uint24 supported since
!        GCC 4.7, support has been added for the signed __int24 and unsigned
         __int24 types.
       * Code generation for the 32-bit integer shifts with constant offset
         has been improved. The code size may slightly increase even when
         optimizing for code size with -Os.
       * Support has been added for a compact vector table as supported by
         some AVR devices. It can be activated by the new command-line
!        option [133]-mcvt. It links crtmcu-cvt.o as startup code which is
         supported since AVR-LibC v2.3.
!      * Support has been added for the new option [134]-mno-call-main.
         Instead of calling main, it will be located in section .init9.
       * New AVR specific optimizations have been added. They can be
!        controlled by the new command-line options [135]-mfuse-move,
!        [136]-msplit-ldst, [137]-msplit-bit-shift and
!        [138]-muse-nonzero-bits.
!      * Support for the following devices has been added in GCC 15.2:
            + AVR32DA28S, AVR32DA32S, AVR32DA48S, AVR64DA28S, AVR64DA32S,
              AVR64DA48S AVR64DA64S, AVR128DA28S, AVR128DA32S, AVR128DA48S,
              AVR128DA64S.
+      * Support for the following devices has been added in GCC 15.3:
+           + AVR32EB14, AVR32EB20, AVR32EB28, AVR32EB32, AVR16LA14,
+             AVR16LA20, AVR16LA28, AVR16LA32, AVR32LA14, AVR32LA20,
+             AVR32LA28, AVR32LA32.
+      * Support for the IEEE double functions sincos and sincosl has been
+        added in GCC 15.3.
  
!   [139]IA-32/x86-64
  
       * New ISA extension support for Intel AMX-AVX512 was added.
         AMX-AVX512 intrinsics are available via the -mamx-avx512 compiler
*************** nt'}
*** 831,840 ****
         intrinsics are available via the -msm4 -mavx10.2 compiler switches.
       * GCC now supports the Intel CPU named Diamond Rapids through
         -march=diamondrapids. Based on ISA extensions enabled on Granite
!        Rapids D, the switch further enables the AMX-AVX512, AMX-FP8,
!        AMX-MOVRS, AMX-TF32, AMX-TRANSPOSE, APX_F, AVX10.2, AVX-IFMA,
!        AVX-NE-CONVERT, AVX-VNNI-INT16, AVX-VNNI-INT8, CMPccXADD, MOVRS,
!        SHA512, SM3, SM4, and USER_MSR ISA extensions.
       * Support for Xeon Phi CPUs (a.k.a. Knight Landing and Knight Mill)
         were removed in GCC 15. GCC will no longer accept -march=knl,
         -march=knm, -mavx5124fmaps, -mavx5124vnniw, -mavx512er, -mavx512pf,
--- 853,871 ----
         intrinsics are available via the -msm4 -mavx10.2 compiler switches.
       * GCC now supports the Intel CPU named Diamond Rapids through
         -march=diamondrapids. Based on ISA extensions enabled on Granite
!        Rapids D, the switch in addition further enables the AMX-AVX512,
!        AMX-FP8, AMX-MOVRS, AMX-TF32, AMX-TRANSPOSE, APX_F, AVX10.2,
!        AVX-IFMA, AVX-NE-CONVERT, AVX-VNNI-INT16, AVX-VNNI-INT8, CMPccXADD,
!        MOVRS, SHA512, SM3, SM4, and USER_MSR ISA extensions. Since GCC
!        15.2, AMX-TRANSPOSE and USER_MSR are not enabled any longer.
!      * Since GCC 15.2, CLDEMOTE is not enabled through the compiler
!        switches -march=alderlake, -march=arrowlake, -march=arrowlake-s,
!        -march=gracemont, -march=lunarlake, -march=meteorlake,
!        -march=pantherlake and -march=raptorlake any longer. KL and WIDEKL
!        are not enabled through the compiler switches
!        -march=clearwaterforest and -march=pantherlake any longer.
!        PREFETCHI is not enabled through the compiler switch
!        -march=pantherlake any longer.
       * Support for Xeon Phi CPUs (a.k.a. Knight Landing and Knight Mill)
         were removed in GCC 15. GCC will no longer accept -march=knl,
         -march=knm, -mavx5124fmaps, -mavx5124vnniw, -mavx512er, -mavx512pf,
*************** nt'}
*** 854,878 ****
         AMD Core Math Library (ACML). However, that library is end-of-life
         and AOCL offers many more vectorized functions.
  
!   [135]LoongArch
  
       * Support has been added for target attributes and pragmas. For more
         details on available attributes and pragmas, including their proper
!        usage, please refer to the provided [136]documentation.
       * Support has been added for the new option
!        [137]-mannotate-tablejump, which can create an annotation section
         .discard.tablejump_annotate to correlate the jirl instruction and
         the jump table.
       * Add CRC expander to generate faster CRC.
       * Add ABI names for FPR.
  
!   [138]NVPTX
  
       * The standard C++ library (libstdc++) is now supported and enabled.
       * GCC's nvptx target now supports constructors and destructors. For
!        this, a recent version of [139]nvptx-tools is required.
  
!   [140]S/390, System z, IBM z Systems
  
       * Support for the z17 architecture has been added. When using option
         -march=z17, the compiler will generate code making use of the new
--- 885,909 ----
         AMD Core Math Library (ACML). However, that library is end-of-life
         and AOCL offers many more vectorized functions.
  
!   [140]LoongArch
  
       * Support has been added for target attributes and pragmas. For more
         details on available attributes and pragmas, including their proper
!        usage, please refer to the provided [141]documentation.
       * Support has been added for the new option
!        [142]-mannotate-tablejump, which can create an annotation section
         .discard.tablejump_annotate to correlate the jirl instruction and
         the jump table.
       * Add CRC expander to generate faster CRC.
       * Add ABI names for FPR.
  
!   [143]NVPTX
  
       * The standard C++ library (libstdc++) is now supported and enabled.
       * GCC's nvptx target now supports constructors and destructors. For
!        this, a recent version of [144]nvptx-tools is required.
  
!   [145]S/390, System z, IBM z Systems
  
       * Support for the z17 architecture has been added. When using option
         -march=z17, the compiler will generate code making use of the new
*************** nt'}
*** 884,904 ****
         enabled as before using option -mzvector.
       * Option -mlra and its counterpart -mno-lra have been removed.
  
!   [141]SH
  
       * Bare metal sh-elf targets are now using the newer soft-fp library
         for improved performance of floating-point emulation on CPUs
         without hardware floating-point support.
  
! [142]Operating Systems
  
    PowerPC Darwin
  
       * Fortran's IEEE modules are now supported on Darwin PowerPC.
  
! [143]Improvements to SARIF support
  
!      * GCC's [144]SARIF output has been extended in the following ways
            + GCC's SARIF output now captures all locations and labelled
              source ranges associated with a diagnostic, so that e.g. for
        PATH/missing-semicolon.c: In function 'missing_semicolon':
--- 915,935 ----
         enabled as before using option -mzvector.
       * Option -mlra and its counterpart -mno-lra have been removed.
  
!   [146]SH
  
       * Bare metal sh-elf targets are now using the newer soft-fp library
         for improved performance of floating-point emulation on CPUs
         without hardware floating-point support.
  
! [147]Operating Systems
  
    PowerPC Darwin
  
       * Fortran's IEEE modules are now supported on Darwin PowerPC.
  
! [148]Improvements to SARIF support
  
!      * GCC's [149]SARIF output has been extended in the following ways
            + GCC's SARIF output now captures all locations and labelled
              source ranges associated with a diagnostic, so that e.g. for
        PATH/missing-semicolon.c: In function 'missing_semicolon':
*************** nt'}
*** 915,936 ****
            + For every location in a diagnostic that isn't in the main
              source file, GCC's SARIF output now captures the chain of
              #include directives that led to that location, using
!             locationRelationship objects ([145]§3.34).
!           + SARIF [146]message objects now capture embedded URLs in GCC
!             diagnostics ([147]§3.11.6). In particular, references to other
              events in diagnostic paths now capture URLs to the pertinent
              threadFlowLocation object for the other event, such as
            "text": "second 'free' here; first 'free' was at [(1)](sarif:/runs/0/r
  esults/0/codeFlows/0/threadFlows/0/locations/0)"
  
            + GCC's SARIF output now captures the command-line arguments
!             ([148]§3.20.2), timestamps for the start and end of
!             compilation ([149]§§3.20.7-8), and the working directory
!             ([150]§3.20.19). It also now sets the roles property for SARIF
!             artifact objects ([151]§3.24.6).
            + For warnings where encoding is significant, such as
!             [152]-Wbidi-chars for a "trojan source" attack GCC's SARIF
!             output gains a rendered property ([153]§3.3.4) that escapes
              non-ASCII text in source snippets, such as:
      "rendered": {"text":
  
--- 946,967 ----
            + For every location in a diagnostic that isn't in the main
              source file, GCC's SARIF output now captures the chain of
              #include directives that led to that location, using
!             locationRelationship objects ([150]§3.34).
!           + SARIF [151]message objects now capture embedded URLs in GCC
!             diagnostics ([152]§3.11.6). In particular, references to other
              events in diagnostic paths now capture URLs to the pertinent
              threadFlowLocation object for the other event, such as
            "text": "second 'free' here; first 'free' was at [(1)](sarif:/runs/0/r
  esults/0/codeFlows/0/threadFlows/0/locations/0)"
  
            + GCC's SARIF output now captures the command-line arguments
!             ([153]§3.20.2), timestamps for the start and end of
!             compilation ([154]§§3.20.7-8), and the working directory
!             ([155]§3.20.19). It also now sets the roles property for SARIF
!             artifact objects ([156]§3.24.6).
            + For warnings where encoding is significant, such as
!             [157]-Wbidi-chars for a "trojan source" attack GCC's SARIF
!             output gains a rendered property ([158]§3.3.4) that escapes
              non-ASCII text in source snippets, such as:
      "rendered": {"text":
  
*************** E)\n"
*** 947,953 ****
              (shown here with the JSON string split into multiple lines for
              clarity).
            + Experimental SARIF 2.2 output has been added, via
!             [154]-fdiagnostics-add-output=sarif:version=2.2-prerelease.
              Given that the SARIF 2.2 specification is still under
              development, this uses an unofficial draft of the
              specification, and is subject to change.
--- 978,984 ----
              (shown here with the JSON string split into multiple lines for
              clarity).
            + Experimental SARIF 2.2 output has been added, via
!             [159]-fdiagnostics-add-output=sarif:version=2.2-prerelease.
              Given that the SARIF 2.2 specification is still under
              development, this uses an unofficial draft of the
              specification, and is subject to change.
*************** E)\n"
*** 956,967 ****
              property bag in SARIF output. The precise format of the
              property is subject to change
       * GCC 15 adds a new sarif-replay command-line tool for viewing .sarif
!        files. It uses [155]libgdiagnostics to "replay" any diagnostics
         found in the .sarif files in text form as if they were GCC
         diagnostics, with support for details such as fix-it hints,
         underlined ranges, and diagnostic paths.
  
! [156]Improvements to Static Analyzer
  
       * GCC's logic for printing execution paths has been improved in
         various ways
--- 987,998 ----
              property bag in SARIF output. The precise format of the
              property is subject to change
       * GCC 15 adds a new sarif-replay command-line tool for viewing .sarif
!        files. It uses [160]libgdiagnostics to "replay" any diagnostics
         found in the .sarif files in text form as if they were GCC
         diagnostics, with support for details such as fix-it hints,
         underlined ranges, and diagnostic paths.
  
! [161]Improvements to Static Analyzer
  
       * GCC's logic for printing execution paths has been improved in
         various ways
*************** infinite-loop]
*** 1009,1017 ****
            + Interprocedural depth markers now use unicode box-drawing
              characters where the locale supports this, and they are
              eliminated for purely intraprocedural paths, such as in the
!             example of [157]-Wanalyzer-infinite-loop above.
!      * A new [158]-fanalyzer warning
!        [159]-Wanalyzer-undefined-behavior-ptrdiff warns about pointer
         subtractions involving different chunks of memory. For example:
      demo.c: In function `test_invalid_calc_of_array_size':
      demo.c:9:20: warning: undefined behavior when subtracting pointers [CWE-469]
--- 1040,1048 ----
            + Interprocedural depth markers now use unicode box-drawing
              characters where the locale supports this, and they are
              eliminated for purely intraprocedural paths, such as in the
!             example of [162]-Wanalyzer-infinite-loop above.
!      * A new [163]-fanalyzer warning
!        [164]-Wanalyzer-undefined-behavior-ptrdiff warns about pointer
         subtractions involving different chunks of memory. For example:
      demo.c: In function `test_invalid_calc_of_array_size':
      demo.c:9:20: warning: undefined behavior when subtracting pointers [CWE-469]
*************** undefined behavior if they do not point
*** 1042,1258 ****
  
  Other significant improvements
  
!   [160]libgdiagnostics
  
     GCC's code for emitting diagnostics is now available to other
!    GPL3-compatible projects as a shared library, [161]libgdiagnostics.
     This covers such features as colorization, quoting lines of source
     code, labelling ranges of source, fix-it hints, execution paths, SARIF
     output, and so on. There is a C API, along with C++ and Python
     bindings.
  
! [162]GCC 15.1
  
!    This is the [163]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 15.1 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
! [164]GCC 15.2
  
!    This is the [165]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 15.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [166]GCC manuals. If that fails, the
!     [167]gcc-help@gcc.gnu.org mailing list might help. Comments on these
      web pages and the development of GCC are welcome on our developer
!     list at [168]gcc@gcc.gnu.org. All of [169]our lists have public
      archives.
  
!    Copyright (C) [170]Free Software Foundation, Inc. Verbatim copying and
     distribution of this entire article is permitted in any medium,
     provided this notice is preserved.
  
!    These pages are [171]maintained by the GCC team. Last modified
!    2025-08-08.
  
  References
  
     1. https://gcc.gnu.org/gcc-15/porting_to.html
     2. https://gcc.gnu.org/onlinedocs/index.html#current
!    3. https://gcc.gnu.org/backends.html
!    4. https://gcc.gnu.org/onlinedocs/gcc/Static-Analyzer-Options.html
!    5. https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-format
!    6. https://gcc.gnu.org/wiki/SARIF
!    7. https://gcc.gnu.org/gcc-15/changes.html#general
!    8. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Optimize-Options.html#index-flto-incremental
!    9. https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-add-output
    10. https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-add-output
!   11. https://gcc.gnu.org/wiki/SARIF
!   12. https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-set-output
!   13. https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-format
!   14. https://gcc.gnu.org/gcc-15/changes.html#languages
!   15. https://gcc.gnu.org/gcc-15/changes.html#openmp
!   16. https://gcc.gnu.org/projects/gomp/
!   17. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/libgomp/Offload-Target-Specifics.html
!   18. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/libgomp/OMP_005fALLOCATOR.html
!   19. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/libgomp/nvptx.html
!   20. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/libgomp/Foreign-runtime-support-for-Nvidia-GPUs.html
!   21. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/libgomp/Foreign-runtime-support-for-AMD-GPUs.html
!   22. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/libgomp/omp_005fget_005fdevice_005ffrom_005fuid.html
!   23. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/libgomp/omp_005fget_005fuid_005ffrom_005fdevice.html
!   24. https://gcc.gnu.org/gcc-15/changes.html#cobol
!   25. https://www.cobolworx.com/
!   26. https://gcc.gnu.org/gcc-15/changes.html#ada
!   27. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gnat_rm/Attribute-Round.html#index-Round
!   28. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gnat_rm/Attribute-Super.html#index-Super
!   29. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gnat_rm/Mutably-Tagged-Types-with-Size_2019Class-Aspect.html
!   30. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gnat_rm/Generalized-Finalization.html
!   31. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gnat_rm/No_005fRaise-aspect.html
!   32. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gnat_rm/External_005fInitialization-Aspect.html
!   33. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gnat_rm/Pragma-Exit_005fCases.html#index-Exit_005fCases
!   34. https://docs.adacore.com/spark2014-docs/html/lrm/subprograms.html#program-exit-aspects
!   35. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gnat_rm/Experimental-Language-Extensions.html
!   36. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gnat_ugn/Info-message-Control.html
!   37. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gnat_ugn/Warning-Message-Control.html#index--gnatw_002en-_0028gcc_0029
!   38. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gnat_ugn/Warning-Message-Control.html#index--gnatw_005fl-_0028gcc_0029
!   39. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gnat_ugn/Warning-Message-Control.html#index--gnatw_002ev-_0028gcc_0029
!   40. https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/ada/debug.adb
!   41. https://docs.adacore.com/spark2014-docs/html/ug/en/source/spark_libraries.html
!   42. https://gcc.gnu.org/gcc-15/changes.html#c-family
!   43. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Statement-Attributes.html#index-musttail-statement-attribute
!   44. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Extended-Asm.html
!   45. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Common-Function-Attributes.html#index-nonnull_005fif_005fnonzero-function-attribute
!   46. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Warning-Options.html#index-Wtrailing-whitespace_003d
!   47. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Warning-Options.html#index-Wleading-whitespace_003d
!   48. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Warning-Options.html#index-Wheader-guard
!   49. https://gcc.gnu.org/gcc-15/changes.html#c
!   50. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/C-Dialect-Options.html#index-std-1
!   51. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/C-Dialect-Options.html#index-std-1
!   52. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/C-Dialect-Options.html#index-std-1
!   53. https://gcc.gnu.org/gcc-15/porting_to.html#c23
!   54. https://gcc.gnu.org/gcc-15/changes.html#cxx
!   55. https://wg21.link/P2558R2
!   56. https://gcc.gnu.org/PR110343
!   57. https://wg21.link/P2552R3
!   58. https://gcc.gnu.org/PR110345
!   59. https://wg21.link/P2662R3
!   60. https://gcc.gnu.org/PR113798
!   61. https://wg21.link/P0609R3
!   62. https://gcc.gnu.org/PR114456
!   63. https://wg21.link/P2573R2
!   64. https://gcc.gnu.org/PR114458
!   65. https://wg21.link/P2893R3
!   66. https://gcc.gnu.org/PR114459
!   67. https://wg21.link/P3034R1
!   68. https://gcc.gnu.org/PR114461
!   69. https://wg21.link/P2747R2
!   70. https://gcc.gnu.org/PR115744
!   71. https://wg21.link/P0963R3
!   72. https://gcc.gnu.org/PR115745
!   73. https://wg21.link/P3144R2
!   74. https://gcc.gnu.org/PR115747
!   75. https://wg21.link/P3176R0
!   76. https://gcc.gnu.org/PR117786
!   77. https://wg21.link/P2865R5
!   78. https://gcc.gnu.org/PR117788
!   79. https://wg21.link/P1967R14
!   80. https://gcc.gnu.org/PR119065
!   81. https://wg21.link/P3247R2
!   82. https://gcc.gnu.org/PR117787
!   83. https://wg21.link/P2615R1
!   84. https://gcc.gnu.org/PR107688
!   85. https://wg21.link/P2718R0
!   86. https://gcc.gnu.org/PR107637
!   87. https://wg21.link/cwg36
!   88. https://wg21.link/cwg882
!   89. https://wg21.link/cwg1363
!   90. https://wg21.link/cwg1496
!   91. https://wg21.link/cwg2387
!   92. https://wg21.link/cwg2521
!   93. https://wg21.link/cwg2627
!   94. https://wg21.link/cwg2819
!   95. https://wg21.link/cwg2867
!   96. https://wg21.link/cwg2918
!   97. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Asm-constexprs.html
!   98. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/C_002b_002b-Dialect-Options.html#index-fassume-sane-operators-new-delete
!   99. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Warning-Options.html#index-Wself-move
!  100. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/C_002b_002b-Dialect-Options.html#index-Wtemplate-body
!  101. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Common-Type-Attributes.html#index-flag_005fenum-type-attribute
!  102. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/C_002b_002b-Dialect-Options.html#index-Wdangling-reference
!  103. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/C_002b_002b-Dialect-Options.html#index-Wdefaulted-function-deleted
!  104. https://wg21.link/cwg2789
!  105. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/New_002fDelete-Builtins.html
!  106. https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=12de1942a0a673f9f2f1c2bfce4279a666061ffc
!  107. https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-set-output
!  108. https://godbolt.org/z/K4jGrhao1
!  109. https://gcc.gnu.org/gcc-15/changes.html#libstdcxx
!  110. https://gcc.gnu.org/gcc-15/changes.html#d
!  111. https://dlang.org/changelog/2.111.0.html
!  112. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gdc/Runtime-Options.html#index-finclude-imports
!  113. https://gcc.gnu.org/gcc-15/changes.html#fortran
!  114. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gfortran/Unsigned-integers.html
!  115. https://j3-fortran.org/doc/year/24/24-116.txt
!  116. https://gcc.gnu.org/gcc-15/changes.html#modula2
!  117. https://gcc.gnu.org/gcc-15/changes.html#rust
!  118. https://gcc.gnu.org/gcc-15/changes.html#targets
!  119. https://gcc.gnu.org/gcc-15/changes.html#aarch64
!  120. https://github.com/ARM-software/acle
!  121. https://gcc.gnu.org/gcc-15/changes.html#amdgcn
!  122. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/AMD-GCN-Options.html
!  123. https://gcc.gnu.org/install/specific.html#amdgcn-x-amdhsa
!  124. https://gcc.gnu.org/gcc-15/changes.html#avr
!  125. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/AVR-Function-Attributes.html#index-signal_0028num_0029-function-attribute_002c-AVR
!  126. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/AVR-Built-in-Functions.html#index-_005f_005fbuiltin_005favr_005fmask1
!  127. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Named-Address-Spaces.html#AVR-Named-Address-Spaces-1
!  128. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/AVR-Options.html#index-mcvt
!  129. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/AVR-Options.html#index-mno-call-main
!  130. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/AVR-Options.html#index-mfuse-move
!  131. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/AVR-Options.html#index-msplit-ldst
!  132. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/AVR-Options.html#index-msplit-bit-shift
!  133. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/AVR-Options.html#index-muse-nonzero-bits
!  134. https://gcc.gnu.org/gcc-15/changes.html#x86
!  135. https://gcc.gnu.org/gcc-15/changes.html#loongarch
!  136. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/LoongArch-Function-Attributes.html#LoongArch-Function-Attributes-1
!  137. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/LoongArch-Options.html#index-mannotate-tablejump
!  138. https://gcc.gnu.org/gcc-15/changes.html#nvptx
!  139. https://gcc.gnu.org/install/specific.html#nvptx-x-none
!  140. https://gcc.gnu.org/gcc-15/changes.html#s390
!  141. https://gcc.gnu.org/gcc-15/changes.html#sh
!  142. https://gcc.gnu.org/gcc-15/changes.html#os
!  143. https://gcc.gnu.org/gcc-15/changes.html#sarif
!  144. https://gcc.gnu.org/wiki/SARIF
!  145. https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/sarif-v2.1.0-errata01-os-complete.html#_Toc141790978
!  146. https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/sarif-v2.1.0-errata01-os-complete.html#_Toc141790709
!  147. https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/sarif-v2.1.0-errata01-os-complete.html#_Toc141790717
!  148. https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/sarif-v2.1.0-errata01-os-complete.html#_Toc141790819
!  149. https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/sarif-v2.1.0-errata01-os-complete.html#_Toc141790824
!  150. https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/sarif-v2.1.0-errata01-os-complete.html#_Toc141790836
!  151. https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/sarif-v2.1.0-errata01-os-complete.html#_Toc141790867
!  152. https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wbidi-chars
!  153. https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/sarif-v2.1.0-errata01-os-complete.html#_Toc141790676
!  154. https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-add-output
!  155. https://gcc.gnu.org/wiki/libgdiagnostics
!  156. https://gcc.gnu.org/gcc-15/changes.html#analyzer
!  157. https://gcc.gnu.org/onlinedocs/gcc/Static-Analyzer-Options.html#index-Wanalyzer-infinite-loop
!  158. https://gcc.gnu.org/onlinedocs/gcc/Static-Analyzer-Options.html
!  159. https://gcc.gnu.org/onlinedocs/gcc/Static-Analyzer-Options.html#index-Wanalyzer-undefined-behavior-ptrdiff
!  160. https://gcc.gnu.org/gcc-15/changes.html#libgdiagnostics
!  161. https://gcc.gnu.org/wiki/libgdiagnostics
!  162. https://gcc.gnu.org/gcc-15/changes.html#15.1
!  163. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=15.0
!  164. https://gcc.gnu.org/gcc-15/changes.html#15.2
!  165. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=15.1
!  166. https://gcc.gnu.org/onlinedocs/
!  167. mailto:gcc-help@gcc.gnu.org
!  168. mailto:gcc@gcc.gnu.org
!  169. https://gcc.gnu.org/lists.html
!  170. https://www.fsf.org/
!  171. https://gcc.gnu.org/about.html
  ======================================================================
  http://gcc.gnu.org/gcc-14/index.html
  
--- 1073,1303 ----
  
  Other significant improvements
  
!   [165]libgdiagnostics
  
     GCC's code for emitting diagnostics is now available to other
!    GPL3-compatible projects as a shared library, [166]libgdiagnostics.
     This covers such features as colorization, quoting lines of source
     code, labelling ranges of source, fix-it hints, execution paths, SARIF
     output, and so on. There is a C API, along with C++ and Python
     bindings.
  
! [167]GCC 15.1
  
!    This is the [168]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 15.1 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
! [169]GCC 15.2
  
!    This is the [170]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 15.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
+ [171]GCC 15.3
+ 
+    This is the [172]list of problem reports (PRs) from GCC's bug tracking
+    system that are known to be fixed in the 15.3 release. This list might
+    not be complete (that is, it is possible that some PRs that have been
+    fixed are not listed here).
+ 
  
      For questions related to the use of GCC, please consult these web
!     pages and the [173]GCC manuals. If that fails, the
!     [174]gcc-help@gcc.gnu.org mailing list might help. Comments on these
      web pages and the development of GCC are welcome on our developer
!     list at [175]gcc@gcc.gnu.org. All of [176]our lists have public
      archives.
  
!    Copyright (C) [177]Free Software Foundation, Inc. Verbatim copying and
     distribution of this entire article is permitted in any medium,
     provided this notice is preserved.
  
!    These pages are [178]maintained by the GCC team. Last modified
!    2026-06-12.
  
  References
  
     1. https://gcc.gnu.org/gcc-15/porting_to.html
     2. https://gcc.gnu.org/onlinedocs/index.html#current
!    3. https://gcc.gnu.org/pipermail/gcc/2022-December/240322.html
!    4. https://gcc.gnu.org/backends.html
!    5. https://gcc.gnu.org/onlinedocs/gcc/Static-Analyzer-Options.html
!    6. https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-format
!    7. https://gcc.gnu.org/wiki/SARIF
!    8. https://gcc.gnu.org/gcc-15/changes.html#general
!    9. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Optimize-Options.html#index-flto-incremental
    10. https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-add-output
!   11. https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-add-output
!   12. https://gcc.gnu.org/wiki/SARIF
!   13. https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-set-output
!   14. https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-format
!   15. https://gcc.gnu.org/gcc-15/changes.html#languages
!   16. https://gcc.gnu.org/gcc-15/changes.html#openmp
!   17. https://gcc.gnu.org/projects/gomp/
!   18. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/libgomp/Offload-Target-Specifics.html
!   19. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/libgomp/OMP_005fALLOCATOR.html
!   20. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/libgomp/nvptx.html
!   21. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/libgomp/Foreign-runtime-support-for-Nvidia-GPUs.html
!   22. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/libgomp/Foreign-runtime-support-for-AMD-GPUs.html
!   23. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/libgomp/omp_005fget_005fdevice_005ffrom_005fuid.html
!   24. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/libgomp/omp_005fget_005fuid_005ffrom_005fdevice.html
!   25. https://gcc.gnu.org/gcc-15/changes.html#cobol
!   26. https://www.cobolworx.com/
!   27. https://gcc.gnu.org/gcc-15/changes.html#ada
!   28. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gnat_rm/Attribute-Round.html#index-Round
!   29. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gnat_rm/Attribute-Super.html#index-Super
!   30. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gnat_rm/Mutably-Tagged-Types-with-Size_2019Class-Aspect.html
!   31. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gnat_rm/Generalized-Finalization.html
!   32. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gnat_rm/No_005fRaise-aspect.html
!   33. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gnat_rm/External_005fInitialization-Aspect.html
!   34. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gnat_rm/Pragma-Exit_005fCases.html#index-Exit_005fCases
!   35. https://docs.adacore.com/spark2014-docs/html/lrm/subprograms.html#program-exit-aspects
!   36. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gnat_rm/Experimental-Language-Extensions.html
!   37. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gnat_ugn/Info-message-Control.html
!   38. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gnat_ugn/Warning-Message-Control.html#index--gnatw_002en-_0028gcc_0029
!   39. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gnat_ugn/Warning-Message-Control.html#index--gnatw_005fl-_0028gcc_0029
!   40. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gnat_ugn/Warning-Message-Control.html#index--gnatw_002ev-_0028gcc_0029
!   41. https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/ada/debug.adb
!   42. https://docs.adacore.com/spark2014-docs/html/ug/en/source/spark_libraries.html
!   43. https://gcc.gnu.org/onlinedocs/gnat_rm/Finally-construct.html
!   44. https://github.com/AdaCore/ada-spark-rfcs/blob/master/features/rfc-finally.md
!   45. https://gcc.gnu.org/onlinedocs/gnat_rm/String-interpolation.html
!   46. https://github.com/AdaCore/ada-spark-rfcs/blob/master/features/rfc-string-interpolation.md
!   47. https://gcc.gnu.org/gcc-15/changes.html#c-family
!   48. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Statement-Attributes.html#index-musttail-statement-attribute
!   49. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Extended-Asm.html
!   50. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Common-Function-Attributes.html#index-nonnull_005fif_005fnonzero-function-attribute
!   51. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Warning-Options.html#index-Wtrailing-whitespace_003d
!   52. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Warning-Options.html#index-Wleading-whitespace_003d
!   53. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Warning-Options.html#index-Wheader-guard
!   54. https://gcc.gnu.org/gcc-15/changes.html#c
!   55. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/C-Dialect-Options.html#index-std-1
!   56. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/C-Dialect-Options.html#index-std-1
!   57. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/C-Dialect-Options.html#index-std-1
!   58. https://gcc.gnu.org/gcc-15/porting_to.html#c23
!   59. https://gcc.gnu.org/gcc-15/changes.html#cxx
!   60. https://wg21.link/P2558R2
!   61. https://gcc.gnu.org/PR110343
!   62. https://wg21.link/P2552R3
!   63. https://gcc.gnu.org/PR110345
!   64. https://wg21.link/P2662R3
!   65. https://gcc.gnu.org/PR113798
!   66. https://wg21.link/P0609R3
!   67. https://gcc.gnu.org/PR114456
!   68. https://wg21.link/P2573R2
!   69. https://gcc.gnu.org/PR114458
!   70. https://wg21.link/P2893R3
!   71. https://gcc.gnu.org/PR114459
!   72. https://wg21.link/P3034R1
!   73. https://gcc.gnu.org/PR114461
!   74. https://wg21.link/P2747R2
!   75. https://gcc.gnu.org/PR115744
!   76. https://wg21.link/P0963R3
!   77. https://gcc.gnu.org/PR115745
!   78. https://wg21.link/P3144R2
!   79. https://gcc.gnu.org/PR115747
!   80. https://wg21.link/P3176R0
!   81. https://gcc.gnu.org/PR117786
!   82. https://wg21.link/P2865R5
!   83. https://gcc.gnu.org/PR117788
!   84. https://wg21.link/P1967R14
!   85. https://gcc.gnu.org/PR119065
!   86. https://wg21.link/P3247R2
!   87. https://gcc.gnu.org/PR117787
!   88. https://wg21.link/P2615R1
!   89. https://gcc.gnu.org/PR107688
!   90. https://wg21.link/P2718R0
!   91. https://gcc.gnu.org/PR107637
!   92. https://wg21.link/cwg36
!   93. https://wg21.link/cwg882
!   94. https://wg21.link/cwg1363
!   95. https://wg21.link/cwg1496
!   96. https://wg21.link/cwg2387
!   97. https://wg21.link/cwg2521
!   98. https://wg21.link/cwg2627
!   99. https://wg21.link/cwg2819
!  100. https://wg21.link/cwg2867
!  101. https://wg21.link/cwg2918
!  102. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Asm-constexprs.html
!  103. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/C_002b_002b-Dialect-Options.html#index-fassume-sane-operators-new-delete
!  104. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Warning-Options.html#index-Wself-move
!  105. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/C_002b_002b-Dialect-Options.html#index-Wtemplate-body
!  106. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Common-Type-Attributes.html#index-flag_005fenum-type-attribute
!  107. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/C_002b_002b-Dialect-Options.html#index-Wdangling-reference
!  108. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/C_002b_002b-Dialect-Options.html#index-Wdefaulted-function-deleted
!  109. https://wg21.link/cwg2789
!  110. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/New_002fDelete-Builtins.html
!  111. https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=12de1942a0a673f9f2f1c2bfce4279a666061ffc
!  112. https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-set-output
!  113. https://godbolt.org/z/K4jGrhao1
!  114. https://gcc.gnu.org/gcc-15/changes.html#libstdcxx
!  115. https://gcc.gnu.org/gcc-15/changes.html#d
!  116. https://dlang.org/changelog/2.111.0.html
!  117. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gdc/Runtime-Options.html#index-finclude-imports
!  118. https://gcc.gnu.org/gcc-15/changes.html#fortran
!  119. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gfortran/Unsigned-integers.html
!  120. https://j3-fortran.org/doc/year/24/24-116.txt
!  121. https://gcc.gnu.org/gcc-15/changes.html#modula2
!  122. https://gcc.gnu.org/gcc-15/changes.html#rust
!  123. https://gcc.gnu.org/gcc-15/changes.html#targets
!  124. https://gcc.gnu.org/gcc-15/changes.html#aarch64
!  125. https://github.com/ARM-software/acle
!  126. https://gcc.gnu.org/gcc-15/changes.html#amdgcn
!  127. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/AMD-GCN-Options.html
!  128. https://gcc.gnu.org/install/specific.html#amdgcn-x-amdhsa
!  129. https://gcc.gnu.org/gcc-15/changes.html#avr
!  130. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/AVR-Function-Attributes.html#index-signal_0028num_0029-function-attribute_002c-AVR
!  131. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/AVR-Built-in-Functions.html#index-_005f_005fbuiltin_005favr_005fmask1
!  132. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Named-Address-Spaces.html#AVR-Named-Address-Spaces-1
!  133. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/AVR-Options.html#index-mcvt
!  134. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/AVR-Options.html#index-mno-call-main
!  135. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/AVR-Options.html#index-mfuse-move
!  136. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/AVR-Options.html#index-msplit-ldst
!  137. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/AVR-Options.html#index-msplit-bit-shift
!  138. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/AVR-Options.html#index-muse-nonzero-bits
!  139. https://gcc.gnu.org/gcc-15/changes.html#x86
!  140. https://gcc.gnu.org/gcc-15/changes.html#loongarch
!  141. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/LoongArch-Function-Attributes.html#LoongArch-Function-Attributes-1
!  142. https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/LoongArch-Options.html#index-mannotate-tablejump
!  143. https://gcc.gnu.org/gcc-15/changes.html#nvptx
!  144. https://gcc.gnu.org/install/specific.html#nvptx-x-none
!  145. https://gcc.gnu.org/gcc-15/changes.html#s390
!  146. https://gcc.gnu.org/gcc-15/changes.html#sh
!  147. https://gcc.gnu.org/gcc-15/changes.html#os
!  148. https://gcc.gnu.org/gcc-15/changes.html#sarif
!  149. https://gcc.gnu.org/wiki/SARIF
!  150. https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/sarif-v2.1.0-errata01-os-complete.html#_Toc141790978
!  151. https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/sarif-v2.1.0-errata01-os-complete.html#_Toc141790709
!  152. https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/sarif-v2.1.0-errata01-os-complete.html#_Toc141790717
!  153. https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/sarif-v2.1.0-errata01-os-complete.html#_Toc141790819
!  154. https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/sarif-v2.1.0-errata01-os-complete.html#_Toc141790824
!  155. https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/sarif-v2.1.0-errata01-os-complete.html#_Toc141790836
!  156. https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/sarif-v2.1.0-errata01-os-complete.html#_Toc141790867
!  157. https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wbidi-chars
!  158. https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/sarif-v2.1.0-errata01-os-complete.html#_Toc141790676
!  159. https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-add-output
!  160. https://gcc.gnu.org/wiki/libgdiagnostics
!  161. https://gcc.gnu.org/gcc-15/changes.html#analyzer
!  162. https://gcc.gnu.org/onlinedocs/gcc/Static-Analyzer-Options.html#index-Wanalyzer-infinite-loop
!  163. https://gcc.gnu.org/onlinedocs/gcc/Static-Analyzer-Options.html
!  164. https://gcc.gnu.org/onlinedocs/gcc/Static-Analyzer-Options.html#index-Wanalyzer-undefined-behavior-ptrdiff
!  165. https://gcc.gnu.org/gcc-15/changes.html#libgdiagnostics
!  166. https://gcc.gnu.org/wiki/libgdiagnostics
!  167. https://gcc.gnu.org/gcc-15/changes.html#15.1
!  168. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=15.0
!  169. https://gcc.gnu.org/gcc-15/changes.html#15.2
!  170. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=15.2
!  171. https://gcc.gnu.org/gcc-15/changes.html#15.2
!  172. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=15.3
!  173. https://gcc.gnu.org/onlinedocs/
!  174. mailto:gcc-help@gcc.gnu.org
!  175. mailto:gcc@gcc.gnu.org
!  176. https://gcc.gnu.org/lists.html
!  177. https://www.fsf.org/
!  178. https://gcc.gnu.org/about.html
  ======================================================================
  http://gcc.gnu.org/gcc-14/index.html
  
*************** Caveats
*** 1509,1515 ****
         parts of the Ada runtime library, which has been subsequently
         proven to be correct with SPARK 2014.
       * Support for the LoongArch architecture.
!      * Support for vxWorks 7 Cert RTP has been removed.
       * Additional hardening improvements. For more information related to
         hardening options, refer to the [33]GCC Instrumentation Options and
         the [34]GNAT Reference Manual, Security and Hardening Features.
--- 1554,1560 ----
         parts of the Ada runtime library, which has been subsequently
         proven to be correct with SPARK 2014.
       * Support for the LoongArch architecture.
!      * Support for VxWorks 7 Cert RTP has been removed.
       * Additional hardening improvements. For more information related to
         hardening options, refer to the [33]GCC Instrumentation Options and
         the [34]GNAT Reference Manual, Security and Hardening Features.
*************** Caveats
*** 1521,1536 ****
              higher performance and easier integration with low footprint
              embedded runtimes.
            + [38]String Interpolation: allows for easier string formatting.
       * Further clean up and improvements to the GNAT code.
  
!   [39]C family
  
       * The Clang language extensions __has_feature and __has_extension
         have been implemented in GCC. These are available from C, C++, and
         Objective-C(++). This is primarily intended to aid the portability
         of code written against Clang.
  
!   [40]C
  
       * Some more C23 features have been implemented:
            + Bit-precise integer types (_BitInt (N) and unsigned _BitInt
--- 1566,1588 ----
              higher performance and easier integration with low footprint
              embedded runtimes.
            + [38]String Interpolation: allows for easier string formatting.
+      * [39]Fixed lower bound [40][RFC] : Unconstrained array types and
+        subtypes can be specified with a lower bound that is fixed to a
+        certain value, by writing an index range that uses the syntax
+        <lower-bound-expression> .. <>. This guarantees that all objects of
+        the type or subtype will have the specified lower bound.
       * Further clean up and improvements to the GNAT code.
  
!   [41]C family
  
       * The Clang language extensions __has_feature and __has_extension
         have been implemented in GCC. These are available from C, C++, and
         Objective-C(++). This is primarily intended to aid the portability
         of code written against Clang.
+      * GCC supports a new pragma #pragma GCC novector to indicate to the
+        vectorizer not to vectorize the loop annotated with the pragma.
  
!   [42]C
  
       * Some more C23 features have been implemented:
            + Bit-precise integer types (_BitInt (N) and unsigned _BitInt
*************** Caveats
*** 1546,1664 ****
         options -std=c23, -std=gnu23 and -Wc11-c23-compat. These are
         equivalent to the previous options -std=c2x, -std=gnu2x and
         -Wc11-c2x-compat, which are deprecated but remain supported.
-      * GCC supports a new pragma #pragma GCC novector to indicate to the
-        vectorizer not to vectorize the loop annotated with the pragma.
  
!   [41]C++
  
       * Several C++26 features have been implemented:
!           + [42]P1854R4, Making non-encodable string literals ill-formed
!             ([43]PR110341)
!           + [44]P2752R3, Static storage for braced initializers
!             ([45]PR110346)
!           + [46]P2361R6, Unevaluated strings ([47]PR110342)
!           + [48]P2738R1, constexpr cast from void* ([49]PR110344)
!           + [50]P2741R3, User-generated static_assert messages
!             ([51]PR110348)
!           + [52]P2169R4, Placeholder variables with no name ([53]PR110349)
!           + [54]P2864R2, Removing deprecated arithmetic conversion on
              enumerations
!           + [55]P2748R5, Disallow binding a returned reference to a
!             temporary ([56]PR114455)
!           + [57]P2809R3, Trivial infinite loops are not undefined behavior
!             ([58]PR114462)
       * Several C++23 features have been implemented:
!           + [59]P0847R7, Deducing this ([60]PR102609)
!           + [61]P2280R4, Using unknown references in constant expressions
!             ([62]PR106650)
!           + [63]P2564R3, consteval needs to propagate up ([64]PR107687)
!           + [65]P2582R1, Class template argument deduction from inherited
!             constructors ([66]PR106653)
       * Several C++ Defect Reports have been resolved, e.g.:
!           + [67]DR 532, Member/nonmember operator template partial
              ordering
!           + [68]DR 976, Deduction for const T& conversion operators
!           + [69]DR 2262, Attributes for asm-definition
!           + [70]DR 2359, Unintended copy initialization with designated
              initializers
!           + [71]DR 2386, tuple_size requirements for structured binding
!           + [72]DR 2406, [[fallthrough]] attribute and iteration
              statements
!           + [73]DR 2543, constinit and optimized dynamic initialization
!           + [74]DR 2586, Explicit object parameter for assignment and
              comparison
!           + [75]DR 2735, List-initialization and conversions in overload
              resolution
!           + [76]DR 2799, Inheriting default constructors
       * When a diagnostic occurs involving a C++ template, GCC will now
         quote the source code of the context at which the template is
         instantiated ("required from here"), rather than just print
         filename and line/column numbers.
       * New built-in __type_pack_element to speed up traits such as
!        std::tuple_element ([77]PR100157)
       * goto can cross the initialization of a trivially initialized object
!        with a non-trivial destructor ([78]DR 2256)
       * -Wdangling-reference false positives have been reduced. The warning
         does not warn about std::span-like classes; there is also a new
!        attribute gnu::no_dangling to suppress the warning. See [79]the
         manual for more info.
       * noexcept(expr) is now mangled as per the Itanium ABI
       * the named return value optimization can now be performed even for
         variables declared in an inner block of a function, see the
!        [80]test
       * New -Wnrvo warning, to warn if the named return value optimization
         is not performed although it is allowed by [class.copy.elision].
!        See [81]the manual for more info.
       * The backing array for std::initializer_list has been made static,
!        allowing combining multiple equivalent initializer-lists ([82]git)
       * New -Welaborated-enum-base warning, to warn if an additional
         enum-base is used in an elaborated-type-specifier
!      * Better #include hints for missing headers ([83]PR110164)
       * The arguments of a variable template-id are coerced earlier than
!        before, so various problems are detected earlier ([84]PR89442)
       * -Wmissing-field-initializers is no longer emitted for empty classes
!        ([85]PR110064)
       * The constexpr code now tracks lifetimes in constant evaluation;
         this change helps to detect bugs such as accessing a variable whose
!        lifetime has ended ([86]PR70331, [87]PR96630, [88]PR98675)
       * Array destruction can now be devirtualized
       * In-class member variable template partial specializations are now
!        accepted ([89]PR71954)
       * Improved diagnostic for explicit conversion functions: when a
         conversion doesn't work out only because the conversion function
         necessary to do the conversion couldn't be used because it was
!        marked explicit, explain that to the user ([90]git)
       * Corrected mangling of static/thread_local structured bindings at
!        function/block scope ([91]PR111069)
       * [basic.scope.block]/2 violations are detected even in compound-stmt
         of function-try-block and for block-scope external variables
!        ([92]PR52953)
       * Improved "not a constant expression" diagnostic when taking the
!        address of a non-static constexpr variable ([93]PR91483)
       * Non-dependent simple assignments are checked even in templates
!        ([94]PR18474)
       * Attributes hot and cold can be applied to classes as well. See
!        [95]the manual for more info.
       * Function template constraints, as well as CTAD placeholders, are
         now mangled
!      * Various decltype fixes: [96]PR79620, [97]PR79378, [98]PR83167,
!        [99]PR96917
       * New option -fdiagnostics-all-candidates to note all candidates
         during overload resolution failure
       * -Walloc-size and -Wcalloc-transposed-args warnings are enabled for
         C++ as well
       * The DR 2237 code no longer gives an error, it emits a
         -Wtemplate-id-cdtor warning instead
-      * GCC supports a new pragma #pragma GCC novector to indicate to the
-        vectorizer not to vectorize the loop annotated with the pragma.
       * C++ module scanning for named modules is now available, based on
!        the format described in [100]P1689R5, Format for describing
         dependencies of source files. The -fdeps-format=, -fdeps-file=, and
         -fdeps-target= flags may be used to generate dependency
         information. In GCC 14 p1689r5 is the only valid argument for
         -fdeps-format=.
  
!     [101]Runtime Library (libstdc++)
  
       * The libstdc++exp.a library now includes all the Filesystem TS
         symbols from the libstdc++fs.a library. The experimental symbols
--- 1598,1712 ----
         options -std=c23, -std=gnu23 and -Wc11-c23-compat. These are
         equivalent to the previous options -std=c2x, -std=gnu2x and
         -Wc11-c2x-compat, which are deprecated but remain supported.
  
!   [43]C++
  
       * Several C++26 features have been implemented:
!           + [44]P1854R4, Making non-encodable string literals ill-formed
!             ([45]PR110341)
!           + [46]P2752R3, Static storage for braced initializers
!             ([47]PR110346)
!           + [48]P2361R6, Unevaluated strings ([49]PR110342)
!           + [50]P2738R1, constexpr cast from void* ([51]PR110344)
!           + [52]P2741R3, User-generated static_assert messages
!             ([53]PR110348)
!           + [54]P2169R4, Placeholder variables with no name ([55]PR110349)
!           + [56]P2864R2, Removing deprecated arithmetic conversion on
              enumerations
!           + [57]P2748R5, Disallow binding a returned reference to a
!             temporary ([58]PR114455)
!           + [59]P2809R3, Trivial infinite loops are not undefined behavior
!             ([60]PR114462)
       * Several C++23 features have been implemented:
!           + [61]P0847R7, Deducing this ([62]PR102609)
!           + [63]P2280R4, Using unknown references in constant expressions
!             ([64]PR106650)
!           + [65]P2564R3, consteval needs to propagate up ([66]PR107687)
!           + [67]P2582R1, Class template argument deduction from inherited
!             constructors ([68]PR106653)
       * Several C++ Defect Reports have been resolved, e.g.:
!           + [69]DR 532, Member/nonmember operator template partial
              ordering
!           + [70]DR 976, Deduction for const T& conversion operators
!           + [71]DR 2262, Attributes for asm-definition
!           + [72]DR 2359, Unintended copy initialization with designated
              initializers
!           + [73]DR 2386, tuple_size requirements for structured binding
!           + [74]DR 2406, [[fallthrough]] attribute and iteration
              statements
!           + [75]DR 2543, constinit and optimized dynamic initialization
!           + [76]DR 2586, Explicit object parameter for assignment and
              comparison
!           + [77]DR 2735, List-initialization and conversions in overload
              resolution
!           + [78]DR 2799, Inheriting default constructors
       * When a diagnostic occurs involving a C++ template, GCC will now
         quote the source code of the context at which the template is
         instantiated ("required from here"), rather than just print
         filename and line/column numbers.
       * New built-in __type_pack_element to speed up traits such as
!        std::tuple_element ([79]PR100157)
       * goto can cross the initialization of a trivially initialized object
!        with a non-trivial destructor ([80]DR 2256)
       * -Wdangling-reference false positives have been reduced. The warning
         does not warn about std::span-like classes; there is also a new
!        attribute gnu::no_dangling to suppress the warning. See [81]the
         manual for more info.
       * noexcept(expr) is now mangled as per the Itanium ABI
       * the named return value optimization can now be performed even for
         variables declared in an inner block of a function, see the
!        [82]test
       * New -Wnrvo warning, to warn if the named return value optimization
         is not performed although it is allowed by [class.copy.elision].
!        See [83]the manual for more info.
       * The backing array for std::initializer_list has been made static,
!        allowing combining multiple equivalent initializer-lists ([84]git)
       * New -Welaborated-enum-base warning, to warn if an additional
         enum-base is used in an elaborated-type-specifier
!      * Better #include hints for missing headers ([85]PR110164)
       * The arguments of a variable template-id are coerced earlier than
!        before, so various problems are detected earlier ([86]PR89442)
       * -Wmissing-field-initializers is no longer emitted for empty classes
!        ([87]PR110064)
       * The constexpr code now tracks lifetimes in constant evaluation;
         this change helps to detect bugs such as accessing a variable whose
!        lifetime has ended ([88]PR70331, [89]PR96630, [90]PR98675)
       * Array destruction can now be devirtualized
       * In-class member variable template partial specializations are now
!        accepted ([91]PR71954)
       * Improved diagnostic for explicit conversion functions: when a
         conversion doesn't work out only because the conversion function
         necessary to do the conversion couldn't be used because it was
!        marked explicit, explain that to the user ([92]git)
       * Corrected mangling of static/thread_local structured bindings at
!        function/block scope ([93]PR111069)
       * [basic.scope.block]/2 violations are detected even in compound-stmt
         of function-try-block and for block-scope external variables
!        ([94]PR52953)
       * Improved "not a constant expression" diagnostic when taking the
!        address of a non-static constexpr variable ([95]PR91483)
       * Non-dependent simple assignments are checked even in templates
!        ([96]PR18474)
       * Attributes hot and cold can be applied to classes as well. See
!        [97]the manual for more info.
       * Function template constraints, as well as CTAD placeholders, are
         now mangled
!      * Various decltype fixes: [98]PR79620, [99]PR79378, [100]PR83167,
!        [101]PR96917
       * New option -fdiagnostics-all-candidates to note all candidates
         during overload resolution failure
       * -Walloc-size and -Wcalloc-transposed-args warnings are enabled for
         C++ as well
       * The DR 2237 code no longer gives an error, it emits a
         -Wtemplate-id-cdtor warning instead
       * C++ module scanning for named modules is now available, based on
!        the format described in [102]P1689R5, Format for describing
         dependencies of source files. The -fdeps-format=, -fdeps-file=, and
         -fdeps-target= flags may be used to generate dependency
         information. In GCC 14 p1689r5 is the only valid argument for
         -fdeps-format=.
  
!     [103]Runtime Library (libstdc++)
  
       * The libstdc++exp.a library now includes all the Filesystem TS
         symbols from the libstdc++fs.a library. The experimental symbols
*************** Caveats
*** 1697,1710 ****
       * Added missing functions for float and long double to <cmath>.
       * Using the std::setfill manipulator with std::istream is deprecated.
  
!   [102]D
  
       * Support for the D programming language has been updated to version
         2.108.1 of the language and run-time library. Full changelog for
         this release and previous releases can be found on the
!        [103]dlang.org website.
  
!   [104]Fortran
  
       * The compiler now accepts the -std=f2023 option, which has been
         added in preparation of support of Fortran 2023. This option
--- 1745,1758 ----
       * Added missing functions for float and long double to <cmath>.
       * Using the std::setfill manipulator with std::istream is deprecated.
  
!   [104]D
  
       * Support for the D programming language has been updated to version
         2.108.1 of the language and run-time library. Full changelog for
         this release and previous releases can be found on the
!        [105]dlang.org website.
  
!   [106]Fortran
  
       * The compiler now accepts the -std=f2023 option, which has been
         added in preparation of support of Fortran 2023. This option
*************** Caveats
*** 1714,1720 ****
         extension will be generated from free-form source files such as
         .F90 and .fi from fixed-form files such as .F.
  
!   [105]Modula-2
  
       * The automatic dependency generation options: -M, -MD, -MF, -MMD,
         -MP, -MQ and -MT have been implemented in the compiler.
--- 1762,1768 ----
         extension will be generated from free-form source files such as
         .F90 and .fi from fixed-form files such as .F.
  
!   [107]Modula-2
  
       * The automatic dependency generation options: -M, -MD, -MF, -MMD,
         -MP, -MQ and -MT have been implemented in the compiler.
*************** Caveats
*** 1722,1728 ****
         implemented to provide compile-time warnings against missing case
         clauses and uninitialized variables respectively.
  
!   [106]Rust
  
       * Experimental support for the Rust programming language has been
         added. The compiler is incomplete, but already supports a subset of
--- 1770,1776 ----
         implemented to provide compile-time warnings against missing case
         clauses and uninitialized variables respectively.
  
!   [108]Rust
  
       * Experimental support for the Rust programming language has been
         added. The compiler is incomplete, but already supports a subset of
*************** Caveats
*** 1731,1753 ****
         real-world Rust code yet. However, you can experiment with the
         compiler to run Rust code on #[no_core] targets.
  
! [107]libgccjit
  
       * The libgccjit API gained 6 new entry points:
!           + [108]gcc_jit_type_get_restrict for adding restrict to types
!             ([109]LIBGCCJIT_ABI_25).
            + 4 functions for setting attributes on functions and variables
!             ([110]LIBGCCJIT_ABI_26):
                 o gcc_jit_function_add_attribute
                 o gcc_jit_function_add_string_attribute
                 o gcc_jit_function_add_integer_array_attribute
                 o gcc_jit_lvalue_add_string_attribute
!           + [111]gcc_jit_context_new_sizeof for accessing the size of a
!             type ([112]LIBGCCJIT_ABI_27).
  
! [113]New Targets and Target Specific Improvements
  
!   [114]AArch64
  
       * A number of new CPUs are supported through the -mcpu and -mtune
         options (GCC identifiers in parentheses).
--- 1779,1801 ----
         real-world Rust code yet. However, you can experiment with the
         compiler to run Rust code on #[no_core] targets.
  
! [109]libgccjit
  
       * The libgccjit API gained 6 new entry points:
!           + [110]gcc_jit_type_get_restrict for adding restrict to types
!             ([111]LIBGCCJIT_ABI_25).
            + 4 functions for setting attributes on functions and variables
!             ([112]LIBGCCJIT_ABI_26):
                 o gcc_jit_function_add_attribute
                 o gcc_jit_function_add_string_attribute
                 o gcc_jit_function_add_integer_array_attribute
                 o gcc_jit_lvalue_add_string_attribute
!           + [113]gcc_jit_context_new_sizeof for accessing the size of a
!             type ([114]LIBGCCJIT_ABI_27).
  
! [115]New Targets and Target Specific Improvements
  
!   [116]AArch64
  
       * A number of new CPUs are supported through the -mcpu and -mtune
         options (GCC identifiers in parentheses).
*************** Caveats
*** 1767,1773 ****
            + Support is added for the Arm Streaming Matrix Extensions SME
              and SME2 through the +sme and +sme2 extensions to -march=. In
              particular, this includes support for the Beta state of the
!             [115]SME ACLE in the form of a new intrinsics arm_sme.h
              intrinsics header and a number of new keyword attributes to
              manage use of the new Streaming SVE state. For more
              information please refer to the ACLE documentation.
--- 1815,1821 ----
            + Support is added for the Arm Streaming Matrix Extensions SME
              and SME2 through the +sme and +sme2 extensions to -march=. In
              particular, this includes support for the Beta state of the
!             [117]SME ACLE in the form of a new intrinsics arm_sme.h
              intrinsics header and a number of new keyword attributes to
              manage use of the new Streaming SVE state. For more
              information please refer to the ACLE documentation.
*************** Caveats
*** 1795,1801 ****
       * Conformance with the ACLE specification is improved and a number of
         features aimed at helping developers deploy Arm architecture
         features are added:
!           + Support for the Beta version of the [116]Function
              Multiversioning Specification. This feature provides
              facilities to annotate functions with attributes that allow
              the compiler to generate multiple versions of the function,
--- 1843,1849 ----
       * Conformance with the ACLE specification is improved and a number of
         features aimed at helping developers deploy Arm architecture
         features are added:
!           + Support for the Beta version of the [118]Function
              Multiversioning Specification. This feature provides
              facilities to annotate functions with attributes that allow
              the compiler to generate multiple versions of the function,
*************** Caveats
*** 1803,1810 ****
              available in the system. Please refer to the ACLE
              specification for more details.
            + Support for more ACLE intrinsics in the arm_acle.h header,
!             including the [117]Memory prefetch intrinsics and the
!             [118]Special register intrinsics. This also includes
              intrinsics for the extension to 128-bit system registers,
              enabled through the +d128 extension to -march=.
            + Intrinsics enabled by the +dotprod, +fp16, +fp16fml, +i8mm,
--- 1851,1858 ----
              available in the system. Please refer to the ACLE
              specification for more details.
            + Support for more ACLE intrinsics in the arm_acle.h header,
!             including the [119]Memory prefetch intrinsics and the
!             [120]Special register intrinsics. This also includes
              intrinsics for the extension to 128-bit system registers,
              enabled through the +d128 extension to -march=.
            + Intrinsics enabled by the +dotprod, +fp16, +fp16fml, +i8mm,
*************** Caveats
*** 1812,1830 ****
              -march=armv8.2-a or higher to be specified. Likewise, the
              intrinsics enabled by +memtag no longer require
              -march=armv8.5-a.
!           + Support for the [119]NEON-SVE Bridge intrinsics. These are
              intrinsics that allow conversions between NEON and SVE
              vectors, enabled through the inclusion of the
              arm_neon_sve_bridge.h header.
       * The option -mtp= is now supported for changing the TPIDR register
         used for TLS accesses. For more details please refer to the
!        [120]documentation.
  
!   [121]AMD Radeon (GCN)
  
       * Initial support for the AMD Radeon gfx90c (GCN5), gfx1030, gfx1036
         (RDNA2), gfx1100 and gfx1103 (RDNA3) devices has been added. LLVM
!        15+ (assembler and linker) is [122]required to support GFX11.
       * Improved register usage and performance on CDNA Instinct MI100 and
         MI200 series devices.
       * The default device architecture is now gfx900 (Vega).
--- 1860,1878 ----
              -march=armv8.2-a or higher to be specified. Likewise, the
              intrinsics enabled by +memtag no longer require
              -march=armv8.5-a.
!           + Support for the [121]NEON-SVE Bridge intrinsics. These are
              intrinsics that allow conversions between NEON and SVE
              vectors, enabled through the inclusion of the
              arm_neon_sve_bridge.h header.
       * The option -mtp= is now supported for changing the TPIDR register
         used for TLS accesses. For more details please refer to the
!        [122]documentation.
  
!   [123]AMD Radeon (GCN)
  
       * Initial support for the AMD Radeon gfx90c (GCN5), gfx1030, gfx1036
         (RDNA2), gfx1100 and gfx1103 (RDNA3) devices has been added. LLVM
!        15+ (assembler and linker) is [124]required to support GFX11.
       * Improved register usage and performance on CDNA Instinct MI100 and
         MI200 series devices.
       * The default device architecture is now gfx900 (Vega).
*************** Caveats
*** 1832,1845 ****
         from a future release. The default compiler configuration no longer
         uses Fiji as the default device, and no longer includes the Fiji
         libraries. Both can be restored by configuring with
!        [123]--with-arch=fiji .
  
!   [124]arm
  
       * The Cortex-M52 CPU is now supported through the cortex-m52 argument
         to the -mcpu and -mtune options.
  
!   [125]AVR
  
       * On AVR64* and AVR128* devices, read-only data is now located in
         program memory per default and no longer in RAM.
--- 1880,1893 ----
         from a future release. The default compiler configuration no longer
         uses Fiji as the default device, and no longer includes the Fiji
         libraries. Both can be restored by configuring with
!        [125]--with-arch=fiji .
  
!   [126]arm
  
       * The Cortex-M52 CPU is now supported through the cortex-m52 argument
         to the -mcpu and -mtune options.
  
!   [127]AVR
  
       * On AVR64* and AVR128* devices, read-only data is now located in
         program memory per default and no longer in RAM.
*************** Caveats
*** 1855,1861 ****
              hardware default for bit-field NVMCTRL_CTRLB.FLMAP.
            + When a non-default block is used, then NVMCTRL_CTRLB.FLMAP
              must be initialized accordingly by hand, or AVR-LibC v2.2 that
!             implements [126]#931 can be used. The latter initializes
              NVMCTRL_CTRLB.FLMAP in the startup code and according to the
              value of __flmap or __RODATA_FLASH_START__.
            + When AVR-LibC with #931 is used, then defining the symbol
--- 1903,1909 ----
              hardware default for bit-field NVMCTRL_CTRLB.FLMAP.
            + When a non-default block is used, then NVMCTRL_CTRLB.FLMAP
              must be initialized accordingly by hand, or AVR-LibC v2.2 that
!             implements [128]#931 can be used. The latter initializes
              NVMCTRL_CTRLB.FLMAP in the startup code and according to the
              value of __flmap or __RODATA_FLASH_START__.
            + When AVR-LibC with #931 is used, then defining the symbol
*************** __asm (".global __flmap_lock"  "\n\t"
*** 1876,1882 ****
            + Read-only data is located in output section .rodata, whereas
              it is part of .text when located in RAM.
            + The feature is only available when the compiler is configured
!             with a version of Binutils that implements [127]PR31124, which
              is the case for Binutils v2.42 and up.
            + The implementation consists of two parts:
                1. Binutils supports new emulations avrxmega2_flmap and
--- 1924,1930 ----
            + Read-only data is located in output section .rodata, whereas
              it is part of .text when located in RAM.
            + The feature is only available when the compiler is configured
!             with a version of Binutils that implements [129]PR31124, which
              is the case for Binutils v2.42 and up.
            + The implementation consists of two parts:
                1. Binutils supports new emulations avrxmega2_flmap and
*************** __asm (".global __flmap_lock"  "\n\t"
*** 1884,1890 ****
                   to provide adjusted default linker description files.
                   Apart from that, these emulations behave exactly the same
                   like avrxmega2 resp. avrxmega4.
!               2. The compiler uses a [128]device-specs file which links
                   the program with -mavrxmega2_flmap or -mavrxmega2
                   depending on -m[no-]rodata-in-ram; and similar for
                   -mavrxmega4[_flmap].
--- 1932,1938 ----
                   to provide adjusted default linker description files.
                   Apart from that, these emulations behave exactly the same
                   like avrxmega2 resp. avrxmega4.
!               2. The compiler uses a [130]device-specs file which links
                   the program with -mavrxmega2_flmap or -mavrxmega2
                   depending on -m[no-]rodata-in-ram; and similar for
                   -mavrxmega4[_flmap].
*************** __asm (".global __flmap_lock"  "\n\t"
*** 1894,1919 ****
       * A new compiler option -m[no-]rodata-in-ram has been added. The
         default is to locate read-only data in program memory for devices
         that support it, e.g. for AVR64* and AVR128* devices as explained
!        above, and for devices from the [129]avrxmega3 and [130]avrtiny
         families.
       * The new built-in macro __AVR_RODATA_IN_RAM__ is supported on all
         devices. It's defined to 0 or 1.
       * A new optimization tries to improve code generation for indirect
!        memory accesses on [131]Reduced Tiny devices. It can be controlled
         by the new compiler option -mfuse-add=level where level may be 0, 1
         or 2.
       * On the Reduced Tiny devices, the meaning of register constraint "w"
         has been changed. It now constrains the registers R24...R31 as is
         the case for all the other devices.
!      * Support for the following devices has been added in v14.3:
            + AVR32SD20, AVR32SD28, AVR32SD32, AVR64SD28, AVR64SD32,
              AVR64SD48.
!      * Support for the following devices has been added in v14.4:
            + AVR32DA28S, AVR32DA32S, AVR32DA48S, AVR64DA28S, AVR64DA32S,
              AVR64DA48S AVR64DA64S, AVR128DA28S, AVR128DA32S, AVR128DA48S,
!             AVR128DA64S.
  
!   [132]IA-32/x86-64
  
       * New compiler option -m[no-]evex512 was added. The compiler switch
         enables/disables 512-bit vector. It will be default on if AVX512F
--- 1942,1969 ----
       * A new compiler option -m[no-]rodata-in-ram has been added. The
         default is to locate read-only data in program memory for devices
         that support it, e.g. for AVR64* and AVR128* devices as explained
!        above, and for devices from the [131]avrxmega3 and [132]avrtiny
         families.
       * The new built-in macro __AVR_RODATA_IN_RAM__ is supported on all
         devices. It's defined to 0 or 1.
       * A new optimization tries to improve code generation for indirect
!        memory accesses on [133]Reduced Tiny devices. It can be controlled
         by the new compiler option -mfuse-add=level where level may be 0, 1
         or 2.
       * On the Reduced Tiny devices, the meaning of register constraint "w"
         has been changed. It now constrains the registers R24...R31 as is
         the case for all the other devices.
!      * Support for the following devices has been added in GCC 14.3:
            + AVR32SD20, AVR32SD28, AVR32SD32, AVR64SD28, AVR64SD32,
              AVR64SD48.
!      * Support for the following devices has been added in GCC 14.4:
            + AVR32DA28S, AVR32DA32S, AVR32DA48S, AVR64DA28S, AVR64DA32S,
              AVR64DA48S AVR64DA64S, AVR128DA28S, AVR128DA32S, AVR128DA48S,
!             AVR128DA64S, AVR32EB14, AVR32EB20, AVR32EB28, AVR32EB32,
!             AVR16LA14, AVR16LA20, AVR16LA28, AVR16LA32, AVR32LA14,
!             AVR32LA20, AVR32LA28, AVR32LA32.
  
!   [134]IA-32/x86-64
  
       * New compiler option -m[no-]evex512 was added. The compiler switch
         enables/disables 512-bit vector. It will be default on if AVX512F
*************** __asm (".global __flmap_lock"  "\n\t"
*** 1946,1974 ****
       * New ISA extension support for Intel USER_MSR was added. USER_MSR
         intrinsics are available via the -muser_msr compiler switch.
       * GCC now supports the Intel CPU named Clearwater Forest through
!        -march=clearwaterforest. Based on Sierra Forest, the switch further
!        enables the AVX-VNNI-INT16, PREFETCHI, SHA512, SM3, SM4 and
!        USER_MSR ISA extensions.
       * GCC now supports the Intel CPU named Gracemont through
!        -march=gracemont. Gracemont is based on Alder Lake.
       * GCC now supports the Intel CPU named Arrow Lake through
!        -march=arrowlake. Based on Alder Lake, the switch further enables
!        the AVX-IFMA, AVX-NE-CONVERT, AVX-VNNI-INT8 and CMPccXADD ISA
!        extensions.
       * GCC now supports the Intel CPU named Arrow Lake S through
!        -march=arrowlake-s. Based on Arrow Lake, the switch further enables
!        the AVX-VNNI-INT16, SHA512, SM3 and SM4 ISA extensions.
       * GCC now supports the Intel CPU named Lunar Lake through
!        -march=lunarlake. Lunar Lake is based on Arrow Lake S.
       * GCC now supports the Intel CPU named Panther Lake through
!        -march=pantherlake. Based on Arrow Lake S, the switch further
!        enables the PREFETCHI ISA extensions.
       * Xeon Phi CPUs support (a.k.a. Knight Landing and Knight Mill) are
         marked as deprecated. GCC will emit a warning when using the
         -mavx5124fmaps, -mavx5124vnniw, -mavx512er, -mavx512pf,
         -mprefetchwt1, -march=knl, -march=knm, -mtune=knl or -mtune=knm
         compiler switches. Support will be removed in GCC 15.
!      * [133]Hardware-assisted AddressSanitizer now works for the x86-64
         target with LAM_U57. -fsanitize=hwaddress will enable -mlam=u57 by
         default.
       * GCC now supports AMD CPUs based on the znver5 core via
--- 1996,2032 ----
       * New ISA extension support for Intel USER_MSR was added. USER_MSR
         intrinsics are available via the -muser_msr compiler switch.
       * GCC now supports the Intel CPU named Clearwater Forest through
!        -march=clearwaterforest. Based on Sierra Forest, the switch in
!        addition enables the AVX-VNNI-INT16, PREFETCHI, SHA512, SM3, SM4
!        and USER_MSR ISA extensions. Since GCC 14.4, KL and WIDEKL are not
!        enabled any longer.
       * GCC now supports the Intel CPU named Gracemont through
!        -march=gracemont. Gracemont is based on Alder Lake. Since GCC 14.4,
!        CLDEMOTE is not enabled any longer.
       * GCC now supports the Intel CPU named Arrow Lake through
!        -march=arrowlake. Based on Alder Lake, the switch in addition
!        enables the AVX-IFMA, AVX-NE-CONVERT, AVX-VNNI-INT8 and CMPccXADD
!        ISA extensions. Since GCC 14.4, CLDEMOTE is not enabled any longer.
       * GCC now supports the Intel CPU named Arrow Lake S through
!        -march=arrowlake-s. Based on Arrow Lake, the switch in addition
!        enables the AVX-VNNI-INT16, SHA512, SM3 and SM4 ISA extensions.
!        Since GCC 14.4, CLDEMOTE is not enabled any longer.
       * GCC now supports the Intel CPU named Lunar Lake through
!        -march=lunarlake. Lunar Lake is based on Arrow Lake S. Since GCC
!        14.4, CLDEMOTE is not enabled any longer.
       * GCC now supports the Intel CPU named Panther Lake through
!        -march=pantherlake. Based on Arrow Lake S, the switch in addition
!        further enables the PREFETCHI ISA extensions. Since GCC 14.4,
!        CLDEMOTE, KL, PREFETCHI and WIDEKL are not enabled any longer.
!      * Since GCC 14.4, CLDEMOTE is not enabled through the compiler
!        switches -march=alderlake, -march=meteorlake and -march=raptorlake
!        any longer.
       * Xeon Phi CPUs support (a.k.a. Knight Landing and Knight Mill) are
         marked as deprecated. GCC will emit a warning when using the
         -mavx5124fmaps, -mavx5124vnniw, -mavx512er, -mavx512pf,
         -mprefetchwt1, -march=knl, -march=knm, -mtune=knl or -mtune=knm
         compiler switches. Support will be removed in GCC 15.
!      * [135]Hardware-assisted AddressSanitizer now works for the x86-64
         target with LAM_U57. -fsanitize=hwaddress will enable -mlam=u57 by
         default.
       * GCC now supports AMD CPUs based on the znver5 core via
*************** __asm (".global __flmap_lock"  "\n\t"
*** 1982,2003 ****
         arithmetic support of these types instead of __FLT16_MAX__(or other
         similar Macros).
  
!   [134]MCore
  
       * Bitfields are now signed by default per GCC policy. If you need
         bitfields to be unsigned, use -funsigned-bitfields.
  
!   [135]LoongArch
  
!      * Support for the following [136]-march parameters has been added:
            + la64v1.0
            + la64v1.1
            + la664
         It is now recommended to use -march=la64v1.0 as the only compiler
         option to describe the target ISA when building binaries for
         distribution. For more information on LoongArch ISA versions, see
!        [137]Toolchain Conventions of the LoongArch(TM) Architecture.
!      * Support for the following [138]-mtune parameters has been added:
            + generic
            + la664
       * New ISA Extension
--- 2040,2061 ----
         arithmetic support of these types instead of __FLT16_MAX__(or other
         similar Macros).
  
!   [136]MCore
  
       * Bitfields are now signed by default per GCC policy. If you need
         bitfields to be unsigned, use -funsigned-bitfields.
  
!   [137]LoongArch
  
!      * Support for the following [138]-march parameters has been added:
            + la64v1.0
            + la64v1.1
            + la664
         It is now recommended to use -march=la64v1.0 as the only compiler
         option to describe the target ISA when building binaries for
         distribution. For more information on LoongArch ISA versions, see
!        [139]Toolchain Conventions of the LoongArch(TM) Architecture.
!      * Support for the following [140]-mtune parameters has been added:
            + generic
            + la664
       * New ISA Extension
*************** __asm (".global __flmap_lock"  "\n\t"
*** 2034,2057 ****
              1 or undefined (iff __loongarch_version_major is undefined).
            + __FLOAT128_TYPE: It's defined to 1.
       * New Intrinsics
!           + [139]__builtin_thread_pointer
!           + [140]__lsx_*
!           + [141]__lasx_*
!           + [142]__frecipe_{s/d} and __frsqrte_{s/d}
       * New Compiler Option
!           + [143]-m[no-]lsx
!           + [144]-m[no-]lasx
!           + [145]-m[no-]frecipe
!           + [146]-m[no-]div32
!           + [147]-m[no-]lam-bh
!           + [148]-m[no-]lamcas
!           + [149]-m[no-]ld-seq-sa
!           + [150]-mrecip=
!           + [151]-m[no-]recip
!           + [152]-mexplicit-relocs={none,always,auto}
!           + [153]-m[no-]relax
!           + [154]-m[no-]pass-mrelax-to-as
!           + [155]-mtls-dialect={trad,desc}
       * Support for Ada and D.
       * Support for libffi.
       * Enable -free by default at -O2 or higher.
--- 2092,2115 ----
              1 or undefined (iff __loongarch_version_major is undefined).
            + __FLOAT128_TYPE: It's defined to 1.
       * New Intrinsics
!           + [141]__builtin_thread_pointer
!           + [142]__lsx_*
!           + [143]__lasx_*
!           + [144]__frecipe_{s/d} and __frsqrte_{s/d}
       * New Compiler Option
!           + [145]-m[no-]lsx
!           + [146]-m[no-]lasx
!           + [147]-m[no-]frecipe
!           + [148]-m[no-]div32
!           + [149]-m[no-]lam-bh
!           + [150]-m[no-]lamcas
!           + [151]-m[no-]ld-seq-sa
!           + [152]-mrecip=
!           + [153]-m[no-]recip
!           + [154]-mexplicit-relocs={none,always,auto}
!           + [155]-m[no-]relax
!           + [156]-m[no-]pass-mrelax-to-as
!           + [157]-mtls-dialect={trad,desc}
       * Support for Ada and D.
       * Support for libffi.
       * Enable -free by default at -O2 or higher.
*************** __asm (".global __flmap_lock"  "\n\t"
*** 2062,2076 ****
       * Optimizing built-in functions for memory-model-aware atomic
         operations using hierarchical dbar instructions.
       * TLS descriptors support. It is not enabled by default, and can be
!        enabled with [156]-mtls-dialect=desc. The default behavior can be
         configured with --with-tls=[trad|desc].
  
!   [157]RISC-V
  
       * The SLP and loop vectorizer are now enabled for RISC-V when the
         vector extension is enabled, thanks to Ju-Zhe Zhong from
!        [158]RiVAI, Pan Li from [159]Intel, and Robin Dapp from
!        [160]Ventana Micro for contributing most of the implementation!
       * The -mrvv-max-lmul= option has been introduced for performance
         tuning of the loop vectorizer. The default value is
         -mrvv-max-lmul=m1, which limits the maximum LMUL to 1. The
--- 2120,2134 ----
       * Optimizing built-in functions for memory-model-aware atomic
         operations using hierarchical dbar instructions.
       * TLS descriptors support. It is not enabled by default, and can be
!        enabled with [158]-mtls-dialect=desc. The default behavior can be
         configured with --with-tls=[trad|desc].
  
!   [159]RISC-V
  
       * The SLP and loop vectorizer are now enabled for RISC-V when the
         vector extension is enabled, thanks to Ju-Zhe Zhong from
!        [160]RiVAI, Pan Li from Intel, and Robin Dapp from [161]Ventana
!        Micro for contributing most of the implementation.
       * The -mrvv-max-lmul= option has been introduced for performance
         tuning of the loop vectorizer. The default value is
         -mrvv-max-lmul=m1, which limits the maximum LMUL to 1. The
*************** __asm (".global __flmap_lock"  "\n\t"
*** 2078,2117 ****
         LMUL value based on register pressure.
       * Atomic code generation has been improved and is now in conformance
         with the latest psABI specification, thanks to Patrick O'Neill from
!        [161]Rivos.
!      * Support for the vector intrinsics as specified in [162]version 1.0
         of the RISC-V vector intrinsic specification.
       * Support for the experimental vector crypto intrinsics as specified
!        in [163]RISC-V vector intrinsic specification, thanks to Feng Wang
!        et al. from [164]ESWIN Computing
       * Support for the T-head vector intrinsics.
       * Support for the scalar bitmanip and scalar crypto intrinsics,
!        thanks to Liao Shihua from [165]PLCT.
       * Support for the large code model via option -mcmodel=large, thanks
!        to Kuan-Lin Chen from [166]Andes Technology.
       * Support for the standard vector calling convention variant, thanks
!        to Lehua Ding from [167]RiVAI.
       * Supports the target attribute, which allows users to compile a
         function with specific extensions.
!      * -march= option no longer requires the architecture string to be in
!        canonical order, with only a few constraints remaining: the
         architecture string must start with rv[32|64][i|g|e], and must use
         an underscore as the separator after a multi-letter extension.
!      * -march=help option has been introduced to dump all supported
!        extensions.
       * Added experimental support for the -mrvv-vector-bits=zvl option and
         the riscv_rvv_vector_bits attribute, which specify a fixed length
         for scalable vector types. This option is optimized for specific
         vector core implementations; however, the code generated with this
         option is NOT portable between the core with different VLEN, thanks
!        to Pan Li from [168]Intel.
!      * Support for TLS descriptors has been introduced, which can be
!        enabled by the -mtls-dialect=desc option. The default behavior can
!        be configured with --with-tls=[trad|desc].
!      * Support for the TLS descriptors, this can be enabled by
!        -mtls-dialect=desc and the default behavior can be configure by
!        --with-tls=[trad|desc], and this feature require glibc 2.40, thanks
!        to Tatsuyuki Ishi from [169]Blue Whale Systems.
       * Support for the following standard extensions has been added:
            + Vector crypto extensions:
                 o Zvbb
--- 2136,2171 ----
         LMUL value based on register pressure.
       * Atomic code generation has been improved and is now in conformance
         with the latest psABI specification, thanks to Patrick O'Neill from
!        [162]Rivos.
!      * Support for the vector intrinsics as specified in [163]version 1.0
         of the RISC-V vector intrinsic specification.
       * Support for the experimental vector crypto intrinsics as specified
!        in [164]RISC-V vector intrinsic specification, thanks to Feng Wang
!        et al. from [165]ESWIN Computing
       * Support for the T-head vector intrinsics.
       * Support for the scalar bitmanip and scalar crypto intrinsics,
!        thanks to Liao Shihua from [166]PLCT.
       * Support for the large code model via option -mcmodel=large, thanks
!        to Kuan-Lin Chen from [167]Andes Technology.
       * Support for the standard vector calling convention variant, thanks
!        to Lehua Ding from [168]RiVAI.
       * Supports the target attribute, which allows users to compile a
         function with specific extensions.
!      * The -march= option no longer requires the architecture string to be
!        in canonical order, with only a few constraints remaining: the
         architecture string must start with rv[32|64][i|g|e], and must use
         an underscore as the separator after a multi-letter extension.
!      * -march=help has been introduced to list all supported extensions.
       * Added experimental support for the -mrvv-vector-bits=zvl option and
         the riscv_rvv_vector_bits attribute, which specify a fixed length
         for scalable vector types. This option is optimized for specific
         vector core implementations; however, the code generated with this
         option is NOT portable between the core with different VLEN, thanks
!        to Pan Li from Intel.
!      * Support for TLS descriptors has been introduced. It can be enabled
!        by the -mtls-dialect=desc option. The default behavior can be
!        configured with --with-tls=[trad|desc]. This feature requires glibc
!        2.40. Thanks to Tatsuyuki Ishi from [169]Blue Whale Systems.
       * Support for the following standard extensions has been added:
            + Vector crypto extensions:
                 o Zvbb
*************** void test (void)
*** 2351,2357 ****
     provided this notice is preserved.
  
     These pages are [211]maintained by the GCC team. Last modified
!    2025-07-06.
  
  References
  
--- 2405,2411 ----
     provided this notice is preserved.
  
     These pages are [211]maintained by the GCC team. Last modified
!    2026-04-30.
  
  References
  
*************** References
*** 2393,2528 ****
    36. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gnat_ugn/Alphabetical-List-of-All-Switches.html#index--gnateH-_0028gcc_0029
    37. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gnat_rm/Pragma-Storage_005fModel.html
    38. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gnat_rm/String-interpolation.html
!   39. https://gcc.gnu.org/gcc-14/changes.html#c-family
!   40. https://gcc.gnu.org/gcc-14/changes.html#c
!   41. https://gcc.gnu.org/gcc-14/changes.html#cxx
!   42. https://wg21.link/P1854R4
!   43. https://gcc.gnu.org/PR110341
!   44. https://wg21.link/P2752R3
!   45. https://gcc.gnu.org/PR110346
!   46. https://wg21.link/P2361R6
!   47. https://gcc.gnu.org/PR110342
!   48. https://wg21.link/P2738R1
!   49. https://gcc.gnu.org/PR110344
!   50. https://wg21.link/P2741R3
!   51. https://gcc.gnu.org/PR110348
!   52. https://wg21.link/P2169R4
!   53. https://gcc.gnu.org/PR110349
!   54. https://wg21.link/P2864R2
!   55. https://wg21.link/P2748R5
!   56. https://gcc.gnu.org/PR114455
!   57. https://wg21.link/P2809R3
!   58. https://gcc.gnu.org/PR114462
!   59. https://wg21.link/P0847R7
!   60. https://gcc.gnu.org/PR102609
!   61. https://wg21.link/P2280R4
!   62. https://gcc.gnu.org/PR106650
!   63. https://wg21.link/P2564R3
!   64. https://gcc.gnu.org/PR107687
!   65. https://wg21.link/P2582R1
!   66. https://gcc.gnu.org/PR106653
!   67. https://wg21.link/cwg532
!   68. https://wg21.link/cwg976
!   69. https://wg21.link/cwg2262
!   70. https://wg21.link/cwg2359
!   71. https://wg21.link/cwg2386
!   72. https://wg21.link/cwg2406
!   73. https://wg21.link/cwg2543
!   74. https://wg21.link/cwg2586
!   75. https://wg21.link/cwg2735
!   76. https://wg21.link/cwg2799
!   77. https://gcc.gnu.org/PR100157
!   78. https://cplusplus.github.io/CWG/issues/2256.html
!   79. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/C_002b_002b-Dialect-Options.html#index-Wdangling-reference
!   80. https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/testsuite/g%2B%2B.dg/opt/nrv23.C;h=9e1253cd830a84ad4de5ff3076a07c543afe344f;hb=7e0b65b239c3a0d68ce94896b236b03de666ffd6
!   81. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/Warning-Options.html#index-Wnrvo
!   82. https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=4d935f52b0d5c00fcc154461b87415ebd8791a94
!   83. https://gcc.gnu.org/PR110164
!   84. https://gcc.gnu.org/PR89442
!   85. https://gcc.gnu.org/PR110064
!   86. https://gcc.gnu.org/PR70331
!   87. https://gcc.gnu.org/PR96630
!   88. https://gcc.gnu.org/PR98675
!   89. https://gcc.gnu.org/PR71954
!   90. https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=85ad41a494e31311f8a6b2dbe930a128c5e85840
!   91. https://gcc.gnu.org/PR111069
!   92. https://gcc.gnu.org/PR52953
!   93. https://gcc.gnu.org/PR91483
!   94. https://gcc.gnu.org/PR18474
!   95. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/C_002b_002b-Attributes.html#index-cold-type-attribute
!   96. https://gcc.gnu.org/PR79620
!   97. https://gcc.gnu.org/PR79378
!   98. https://gcc.gnu.org/PR83167
!   99. https://gcc.gnu.org/PR96917
!  100. https://wg21.link/P1689R5
!  101. https://gcc.gnu.org/gcc-14/changes.html#libstdcxx
!  102. https://gcc.gnu.org/gcc-14/changes.html#d
!  103. https://dlang.org/changelog/2.108.1.html
!  104. https://gcc.gnu.org/gcc-14/changes.html#fortran
!  105. https://gcc.gnu.org/gcc-14/changes.html#modula2
!  106. https://gcc.gnu.org/gcc-14/changes.html#rust
!  107. https://gcc.gnu.org/gcc-14/changes.html#jit
!  108. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/jit/topics/types.html#c.gcc_jit_type_get_restrict
!  109. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/jit/topics/compatibility.html#libgccjit-abi-25
!  110. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/jit/topics/compatibility.html#libgccjit-abi-26
!  111. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/jit/topics/expressions.html#c.gcc_jit_context_new_sizeof
!  112. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/jit/topics/compatibility.html#libgccjit-abi-27
!  113. https://gcc.gnu.org/gcc-14/changes.html#targets
!  114. https://gcc.gnu.org/gcc-14/changes.html#aarch64
!  115. https://github.com/ARM-software/acle/blob/main/main/acle.md#sme-language-extensions-and-intrinsics
!  116. https://github.com/ARM-software/acle/blob/main/main/acle.md#function-multi-versioning
!  117. https://github.com/ARM-software/acle/blob/main/main/acle.md#memory-prefetch-intrinsics
!  118. https://github.com/ARM-software/acle/blob/main/main/acle.md#special-register-intrinsics
!  119. https://github.com/ARM-software/acle/blob/main/main/acle.md#neon-sve-bridge
!  120. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/AArch64-Options.html
!  121. https://gcc.gnu.org/gcc-14/changes.html#amdgcn
!  122. https://gcc.gnu.org/install/specific.html#amdgcn-x-amdhsa
!  123. https://gcc.gnu.org/install/specific.html#amdgcn-x-amdhsa
!  124. https://gcc.gnu.org/gcc-14/changes.html#arm
!  125. https://gcc.gnu.org/gcc-14/changes.html#avr
!  126. https://github.com/avrdudes/avr-libc/issues/931
!  127. https://sourceware.org/PR31124
!  128. https://gcc.gnu.org/wiki/avr-gcc#spec-files
!  129. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/AVR-Options.html#avrxmega3
!  130. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/AVR-Options.html#avrtiny
!  131. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/AVR-Options.html#avrtiny
!  132. https://gcc.gnu.org/gcc-14/changes.html#x86
!  133. https://gcc.gnu.org/gcc-11/changes.html
!  134. https://gcc.gnu.org/gcc-14/changes.html#mcore
!  135. https://gcc.gnu.org/gcc-14/changes.html#loongarch
!  136. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-march-7
!  137. https://github.com/loongson/la-toolchain-conventions/
!  138. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mtune-8
!  139. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Base-Built-in-Functions.html
!  140. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-SX-Vector-Intrinsics.html
!  141. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-ASX-Vector-Intrinsics.html
!  142. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Base-Built-in-Functions.html
!  143. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-ml_005ba_005dsx
!  144. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-ml_005ba_005dsx
!  145. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mfrecipe
!  146. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mdiv32
!  147. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mlam-bh
!  148. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mlamcas
!  149. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mld-seq-sa
!  150. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mrecip_003dopt
!  151. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mrecip
!  152. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mexplicit-relocs-1
!  153. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mrelax-2
!  154. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mpass-mrelax-to-as
!  155. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mtls-dialect-1
!  156. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mtls-dialect-1
!  157. https://gcc.gnu.org/gcc-14/changes.html#riscv
!  158. https://rivai-ic.com.cn/
!  159. https://www.intel.com/
!  160. https://www.ventanamicro.com/
!  161. https://www.rivosinc.com/
!  162. https://github.com/riscv-non-isa/rvv-intrinsic-doc/tree/v1.0.x
!  163. https://github.com/riscv-non-isa/rvv-intrinsic-doc/pull/234
!  164. https://eswincomputing.com/
!  165. https://plctlab.org/
!  166. https://www.andestech.com/
!  167. https://rivai-ic.com.cn/
!  168. https://www.intel.com/
   169. https://bluewhale.systems/
   170. https://gcc.gnu.org/gcc-14/changes.html#sparc
   171. https://gcc.gnu.org/gcc-14/changes.html#analyzer
--- 2447,2582 ----
    36. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gnat_ugn/Alphabetical-List-of-All-Switches.html#index--gnateH-_0028gcc_0029
    37. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gnat_rm/Pragma-Storage_005fModel.html
    38. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gnat_rm/String-interpolation.html
!   39. https://gcc.gnu.org/onlinedocs/gnat_rm/Fixed-lower-bounds-for-array-types-and-subtypes.html
!   40. https://github.com/AdaCore/ada-spark-rfcs/blob/master/features/rfc-fixed-lower-bound.rst
!   41. https://gcc.gnu.org/gcc-14/changes.html#c-family
!   42. https://gcc.gnu.org/gcc-14/changes.html#c
!   43. https://gcc.gnu.org/gcc-14/changes.html#cxx
!   44. https://wg21.link/P1854R4
!   45. https://gcc.gnu.org/PR110341
!   46. https://wg21.link/P2752R3
!   47. https://gcc.gnu.org/PR110346
!   48. https://wg21.link/P2361R6
!   49. https://gcc.gnu.org/PR110342
!   50. https://wg21.link/P2738R1
!   51. https://gcc.gnu.org/PR110344
!   52. https://wg21.link/P2741R3
!   53. https://gcc.gnu.org/PR110348
!   54. https://wg21.link/P2169R4
!   55. https://gcc.gnu.org/PR110349
!   56. https://wg21.link/P2864R2
!   57. https://wg21.link/P2748R5
!   58. https://gcc.gnu.org/PR114455
!   59. https://wg21.link/P2809R3
!   60. https://gcc.gnu.org/PR114462
!   61. https://wg21.link/P0847R7
!   62. https://gcc.gnu.org/PR102609
!   63. https://wg21.link/P2280R4
!   64. https://gcc.gnu.org/PR106650
!   65. https://wg21.link/P2564R3
!   66. https://gcc.gnu.org/PR107687
!   67. https://wg21.link/P2582R1
!   68. https://gcc.gnu.org/PR106653
!   69. https://wg21.link/cwg532
!   70. https://wg21.link/cwg976
!   71. https://wg21.link/cwg2262
!   72. https://wg21.link/cwg2359
!   73. https://wg21.link/cwg2386
!   74. https://wg21.link/cwg2406
!   75. https://wg21.link/cwg2543
!   76. https://wg21.link/cwg2586
!   77. https://wg21.link/cwg2735
!   78. https://wg21.link/cwg2799
!   79. https://gcc.gnu.org/PR100157
!   80. https://cplusplus.github.io/CWG/issues/2256.html
!   81. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/C_002b_002b-Dialect-Options.html#index-Wdangling-reference
!   82. https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/testsuite/g%2B%2B.dg/opt/nrv23.C;h=9e1253cd830a84ad4de5ff3076a07c543afe344f;hb=7e0b65b239c3a0d68ce94896b236b03de666ffd6
!   83. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/Warning-Options.html#index-Wnrvo
!   84. https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=4d935f52b0d5c00fcc154461b87415ebd8791a94
!   85. https://gcc.gnu.org/PR110164
!   86. https://gcc.gnu.org/PR89442
!   87. https://gcc.gnu.org/PR110064
!   88. https://gcc.gnu.org/PR70331
!   89. https://gcc.gnu.org/PR96630
!   90. https://gcc.gnu.org/PR98675
!   91. https://gcc.gnu.org/PR71954
!   92. https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=85ad41a494e31311f8a6b2dbe930a128c5e85840
!   93. https://gcc.gnu.org/PR111069
!   94. https://gcc.gnu.org/PR52953
!   95. https://gcc.gnu.org/PR91483
!   96. https://gcc.gnu.org/PR18474
!   97. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/C_002b_002b-Attributes.html#index-cold-type-attribute
!   98. https://gcc.gnu.org/PR79620
!   99. https://gcc.gnu.org/PR79378
!  100. https://gcc.gnu.org/PR83167
!  101. https://gcc.gnu.org/PR96917
!  102. https://wg21.link/P1689R5
!  103. https://gcc.gnu.org/gcc-14/changes.html#libstdcxx
!  104. https://gcc.gnu.org/gcc-14/changes.html#d
!  105. https://dlang.org/changelog/2.108.1.html
!  106. https://gcc.gnu.org/gcc-14/changes.html#fortran
!  107. https://gcc.gnu.org/gcc-14/changes.html#modula2
!  108. https://gcc.gnu.org/gcc-14/changes.html#rust
!  109. https://gcc.gnu.org/gcc-14/changes.html#jit
!  110. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/jit/topics/types.html#c.gcc_jit_type_get_restrict
!  111. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/jit/topics/compatibility.html#libgccjit-abi-25
!  112. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/jit/topics/compatibility.html#libgccjit-abi-26
!  113. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/jit/topics/expressions.html#c.gcc_jit_context_new_sizeof
!  114. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/jit/topics/compatibility.html#libgccjit-abi-27
!  115. https://gcc.gnu.org/gcc-14/changes.html#targets
!  116. https://gcc.gnu.org/gcc-14/changes.html#aarch64
!  117. https://github.com/ARM-software/acle/blob/main/main/acle.md#sme-language-extensions-and-intrinsics
!  118. https://github.com/ARM-software/acle/blob/main/main/acle.md#function-multi-versioning
!  119. https://github.com/ARM-software/acle/blob/main/main/acle.md#memory-prefetch-intrinsics
!  120. https://github.com/ARM-software/acle/blob/main/main/acle.md#special-register-intrinsics
!  121. https://github.com/ARM-software/acle/blob/main/main/acle.md#neon-sve-bridge
!  122. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/AArch64-Options.html
!  123. https://gcc.gnu.org/gcc-14/changes.html#amdgcn
!  124. https://gcc.gnu.org/install/specific.html#amdgcn-x-amdhsa
!  125. https://gcc.gnu.org/install/specific.html#amdgcn-x-amdhsa
!  126. https://gcc.gnu.org/gcc-14/changes.html#arm
!  127. https://gcc.gnu.org/gcc-14/changes.html#avr
!  128. https://github.com/avrdudes/avr-libc/issues/931
!  129. https://sourceware.org/PR31124
!  130. https://gcc.gnu.org/wiki/avr-gcc#spec-files
!  131. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/AVR-Options.html#avrxmega3
!  132. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/AVR-Options.html#avrtiny
!  133. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/AVR-Options.html#avrtiny
!  134. https://gcc.gnu.org/gcc-14/changes.html#x86
!  135. https://gcc.gnu.org/gcc-11/changes.html
!  136. https://gcc.gnu.org/gcc-14/changes.html#mcore
!  137. https://gcc.gnu.org/gcc-14/changes.html#loongarch
!  138. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-march-7
!  139. https://github.com/loongson/la-toolchain-conventions/
!  140. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mtune-8
!  141. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Base-Built-in-Functions.html
!  142. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-SX-Vector-Intrinsics.html
!  143. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-ASX-Vector-Intrinsics.html
!  144. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Base-Built-in-Functions.html
!  145. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-ml_005ba_005dsx
!  146. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-ml_005ba_005dsx
!  147. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mfrecipe
!  148. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mdiv32
!  149. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mlam-bh
!  150. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mlamcas
!  151. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mld-seq-sa
!  152. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mrecip_003dopt
!  153. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mrecip
!  154. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mexplicit-relocs-1
!  155. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mrelax-2
!  156. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mpass-mrelax-to-as
!  157. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mtls-dialect-1
!  158. https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/LoongArch-Options.html#index-mtls-dialect-1
!  159. https://gcc.gnu.org/gcc-14/changes.html#riscv
!  160. https://rivai-ic.com.cn/
!  161. https://www.ventanamicro.com/
!  162. https://www.rivosinc.com/
!  163. https://github.com/riscv-non-isa/riscv-rvv-intrinsic-doc/tree/v0.11.x
!  164. https://github.com/riscv-non-isa/riscv-rvv-intrinsic-doc/pull/234
!  165. https://eswincomputing.com/
!  166. https://plctlab.org/
!  167. https://www.andestech.com/
!  168. https://rivai-ic.com.cn/
   169. https://bluewhale.systems/
   170. https://gcc.gnu.org/gcc-14/changes.html#sparc
   171. https://gcc.gnu.org/gcc-14/changes.html#analyzer
*************** Caveats
*** 2853,2868 ****
            + [56]P2266R3, Simpler implicit move ([57]PR101165)
            + [58]P2468R2, The Equality Operator You Are Looking For
              ([59]PR106644)
!           + [60]P2362R3, Remove non-encodable
!             wide character literals and multicharacter wide character lite
!             rals ([61]PR106647)
            + [62]P2448R2, Relaxing some constexpr restrictions
              ([63]PR106649)
            + [64]P1467R9, Extended floating-point types and standard names
              ([65]PR106652)
            + [66]P1774R8, Portable assumptions ([67]PR106654)
!           + [68]P2295R6, Support for
!             UTF-8 as a portable source file encoding ([69]PR106655)
            + [70]P2589R1, static operator[] ([71]PR107684)
       * New warnings:
            + [72]-Wself-move warns when a value is moved to itself with
--- 2907,2921 ----
            + [56]P2266R3, Simpler implicit move ([57]PR101165)
            + [58]P2468R2, The Equality Operator You Are Looking For
              ([59]PR106644)
!           + [60]P2362R3, Remove non-encodable wide character literals and
!             multicharacter wide character literals ([61]PR106647)
            + [62]P2448R2, Relaxing some constexpr restrictions
              ([63]PR106649)
            + [64]P1467R9, Extended floating-point types and standard names
              ([65]PR106652)
            + [66]P1774R8, Portable assumptions ([67]PR106654)
!           + [68]P2295R6, Support for UTF-8 as a portable source file
!             encoding ([69]PR106655)
            + [70]P2589R1, static operator[] ([71]PR107684)
       * New warnings:
            + [72]-Wself-move warns when a value is moved to itself with
*************** Caveats
*** 3018,3024 ****
  
    [95]AVR
  
!      * Support for the following devices has been added in v13.3:
            + ATtiny102, ATtiny104, ATtiny424, ATtiny426, ATtiny427,
              ATtiny824, ATtiny826, ATtiny827, ATtiny1624, ATtiny1626,
              ATtiny1627, ATtiny3224, ATtiny3226, ATtiny3227, AVR32DD14,
--- 3071,3077 ----
  
    [95]AVR
  
!      * Support for the following devices has been added in GCC 13.3:
            + ATtiny102, ATtiny104, ATtiny424, ATtiny426, ATtiny427,
              ATtiny824, ATtiny826, ATtiny827, ATtiny1624, ATtiny1626,
              ATtiny1627, ATtiny3224, ATtiny3226, ATtiny3227, AVR32DD14,
*************** Caveats
*** 3027,3035 ****
              AVR64DD14, AVR64DD20, AVR64DD28, AVR64DD32, AVR64DU28,
              AVR64DU32, AVR64EA28, AVR64EA32, AVR64EA48, ATA5787, ATA5835,
              ATA5700M322.
!      * Support for the following devices has been added in v13.4:
            + AVR32SD20, AVR32SD28, AVR32SD32, AVR64SD28, AVR64SD32,
              AVR64SD48.
  
    [96]IA-32/x86-64
  
--- 3080,3094 ----
              AVR64DD14, AVR64DD20, AVR64DD28, AVR64DD32, AVR64DU28,
              AVR64DU32, AVR64EA28, AVR64EA32, AVR64EA48, ATA5787, ATA5835,
              ATA5700M322.
!      * Support for the following devices has been added in GCC 13.4:
            + AVR32SD20, AVR32SD28, AVR32SD32, AVR64SD28, AVR64SD32,
              AVR64SD48.
+      * Support for the following devices has been added in GCC 13.5:
+           + AVR32DA28S, AVR32DA32S, AVR32DA48S, AVR64DA28S, AVR64DA32S,
+             AVR64DA48S AVR64DA64S, AVR128DA28S, AVR128DA32S, AVR128DA48S,
+             AVR128DA64S, AVR32EB14, AVR32EB20, AVR32EB28, AVR32EB32,
+             AVR16LA14, AVR16LA20, AVR16LA28, AVR16LA32, AVR32LA14,
+             AVR32LA20, AVR32LA28, AVR32LA32.
  
    [96]IA-32/x86-64
  
*************** Caveats
*** 3059,3081 ****
       * New ISA extension support for Intel RAO-INT was added. RAO-INT
         intrinsics are available via the -mraoint compiler switch.
       * GCC now supports the Intel CPU named Raptor Lake through
!        -march=raptorlake. Raptor Lake is based on Alder Lake.
       * GCC now supports the Intel CPU named Meteor Lake through
!        -march=meteorlake. Meteor Lake is based on Alder Lake.
       * GCC now supports the Intel CPU named Sierra Forest through
         -march=sierraforest. Based on ISA extensions enabled on Alder Lake,
!        the switch further enables the AVX-IFMA, AVX-NE-CONVERT,
!        AVX-VNNI-INT8, CMPccXADD, ENQCMD and UINTR ISA extensions.
       * GCC now supports the Intel CPU named Grand Ridge through
!        -march=grandridge. Grand Ridge is based on Sierra Forest.
       * GCC now supports the Intel CPU named Emerald Rapids through
         -march=emeraldrapids. Emerald Rapids is based on Sapphire Rapids.
       * GCC now supports the Intel CPU named Granite Rapids through
!        -march=graniterapids. Based on Sapphire Rapids, the switch further
!        enables the AMX-FP16 and PREFETCHI ISA extensions.
       * GCC now supports the Intel CPU named Granite Rapids D through
!        -march=graniterapids-d. Based on Granite Rapids, the switch further
!        enables the AMX-COMPLEX ISA extensions.
       * GCC now supports AMD CPUs based on the znver4 core via
         -march=znver4. The switch makes GCC consider using 512-bit vectors
         when auto-vectorizing.
--- 3118,3148 ----
       * New ISA extension support for Intel RAO-INT was added. RAO-INT
         intrinsics are available via the -mraoint compiler switch.
       * GCC now supports the Intel CPU named Raptor Lake through
!        -march=raptorlake. Raptor Lake is based on Alder Lake. Since GCC
!        13.5, CLDEMOTE is not enabled any longer.
       * GCC now supports the Intel CPU named Meteor Lake through
!        -march=meteorlake. Meteor Lake is based on Alder Lake. Since GCC
!        13.5, CLDEMOTE is not enabled any longer.
       * GCC now supports the Intel CPU named Sierra Forest through
         -march=sierraforest. Based on ISA extensions enabled on Alder Lake,
!        the switch in addition enables the AVX-IFMA, AVX-NE-CONVERT,
!        AVX-VNNI-INT8 and CMPccXADD ISA extensions. Since GCC 13.2, ENQCMD
!        and UINTR are further enabled.
       * GCC now supports the Intel CPU named Grand Ridge through
!        -march=grandridge. Based on Sierra Forest, the switch in addition
!        enables the RAO-INT ISA extensions. Since GCC 13.2, ENQCMD and
!        UINTR are further enabled. Since GCC 13.3, RAO-INT is not enabled
!        any longer.
       * GCC now supports the Intel CPU named Emerald Rapids through
         -march=emeraldrapids. Emerald Rapids is based on Sapphire Rapids.
       * GCC now supports the Intel CPU named Granite Rapids through
!        -march=graniterapids. Based on Sapphire Rapids, the switch in
!        addition enables the AMX-FP16 and PREFETCHI ISA extensions.
       * GCC now supports the Intel CPU named Granite Rapids D through
!        -march=graniterapids-d. Based on Granite Rapids, the switch in
!        addition enables the AMX-COMPLEX ISA extensions.
!      * Since GCC 13.5, CLDEMOTE is not enabled through the compiler switch
!        -march=alderlake any longer.
       * GCC now supports AMD CPUs based on the znver4 core via
         -march=znver4. The switch makes GCC consider using 512-bit vectors
         when auto-vectorizing.
*************** Other significant improvements
*** 3271,3277 ****
     provided this notice is preserved.
  
     These pages are [145]maintained by the GCC team. Last modified
!    2025-06-05.
  
  References
  
--- 3338,3344 ----
     provided this notice is preserved.
  
     These pages are [145]maintained by the GCC team. Last modified
!    2026-03-15.
  
  References
  
*************** References
*** 3378,3384 ****
   101. https://gcc.gnu.org/install/
   102. https://gcc.gnu.org/install/specific.html#nvptx-x-none
   103. https://gcc.gnu.org/gcc-13/changes.html#riscv
!  104. https://github.com/riscv-non-isa/rvv-intrinsic-doc/tree/v0.11.x
   105. https://rivai-ic.com.cn/
   106. https://gcc.gnu.org/gcc-13/changes.html#os
   107. https://gcc.gnu.org/gcc-13/changes.html#windows
--- 3445,3451 ----
   101. https://gcc.gnu.org/install/
   102. https://gcc.gnu.org/install/specific.html#nvptx-x-none
   103. https://gcc.gnu.org/gcc-13/changes.html#riscv
!  104. https://github.com/riscv-non-isa/riscv-rvv-intrinsic-doc/tree/v0.11.x
   105. https://rivai-ic.com.cn/
   106. https://gcc.gnu.org/gcc-13/changes.html#os
   107. https://gcc.gnu.org/gcc-13/changes.html#windows
*************** function Multiply (S1, S2 : Sign) return
*** 4009,4014 ****
--- 4076,4083 ----
       * New ISA extension support for Intel AVX512-FP16 was added.
         AVX512-FP16 intrinsics are available via the -mavx512fp16 compiler
         switch.
+      * Since GCC 12.5, CLDEMOTE is not enabled through the compiler switch
+        -march=alderlake any longer.
       * For both C and C++ the _Float16 type is supported on x86 systems
         with SSE2 enabled. Without {-mavx512fp16}, all operations will be
         emulated in software and float instructions.
*************** Other significant improvements
*** 4207,4233 ****
  
    [165]Debugging formats
  
!      * GCC can now generate debugging information in [166]CTF, a
!        lightweight debugging format that provides information about C
!        types and the association between functions and data symbols and
!        types. This format is designed to be embedded in ELF files and to
!        be very compact and simple. A new command-line option -gctf enables
!        the generation of CTF.
       * GCC can now generate debugging information in BTF. This is a
         debugging format mainly used in BPF programs and the Linux kernel.
         The compiler can generate BTF for any target, when enabled with the
         command-line option -gbtf
  
! [167]GCC 12.1
  
!    This is the [168]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 12.1 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
! [169]GCC 12.2
  
!    This is the [170]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 12.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
--- 4276,4302 ----
  
    [165]Debugging formats
  
!      * GCC can now generate debugging information in CTF, a lightweight
!        debugging format that provides information about C types and the
!        association between functions and data symbols and types. This
!        format is designed to be embedded in ELF files and to be very
!        compact and simple. A new command-line option -gctf enables the
!        generation of CTF.
       * GCC can now generate debugging information in BTF. This is a
         debugging format mainly used in BPF programs and the Linux kernel.
         The compiler can generate BTF for any target, when enabled with the
         command-line option -gbtf
  
! [166]GCC 12.1
  
!    This is the [167]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 12.1 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
! [168]GCC 12.2
  
!    This is the [169]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 12.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
*************** Other significant improvements
*** 4241,4247 ****
         all optimization levels but -O0 and -Og. The old behavior can be
         obtained by explicitly passing -mcheck-zero-division to GCC.
  
! [171]GCC 12.3
  
    Target Specific Changes
  
--- 4310,4316 ----
         all optimization levels but -O0 and -Og. The old behavior can be
         obtained by explicitly passing -mcheck-zero-division to GCC.
  
! [170]GCC 12.3
  
    Target Specific Changes
  
*************** Other significant improvements
*** 4251,4289 ****
         -march=znver4. The switch makes GCC consider using 512-bit vectors
         when auto-vectorizing.
  
!    This is the [172]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 12.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
! [173]GCC 12.4
  
!    This is the [174]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 12.4 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
! [175]GCC 12.5
  
!    This is the [176]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 12.5 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [177]GCC manuals. If that fails, the
!     [178]gcc-help@gcc.gnu.org mailing list might help. Comments on these
      web pages and the development of GCC are welcome on our developer
!     list at [179]gcc@gcc.gnu.org. All of [180]our lists have public
      archives.
  
!    Copyright (C) [181]Free Software Foundation, Inc. Verbatim copying and
     distribution of this entire article is permitted in any medium,
     provided this notice is preserved.
  
!    These pages are [182]maintained by the GCC team. Last modified
!    2025-07-11.
  
  References
  
--- 4320,4358 ----
         -march=znver4. The switch makes GCC consider using 512-bit vectors
         when auto-vectorizing.
  
!    This is the [171]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 12.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
! [172]GCC 12.4
  
!    This is the [173]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 12.4 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
! [174]GCC 12.5
  
!    This is the [175]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 12.5 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [176]GCC manuals. If that fails, the
!     [177]gcc-help@gcc.gnu.org mailing list might help. Comments on these
      web pages and the development of GCC are welcome on our developer
!     list at [178]gcc@gcc.gnu.org. All of [179]our lists have public
      archives.
  
!    Copyright (C) [180]Free Software Foundation, Inc. Verbatim copying and
     distribution of this entire article is permitted in any medium,
     provided this notice is preserved.
  
!    These pages are [181]maintained by the GCC team. Last modified
!    2025-12-29.
  
  References
  
*************** References
*** 4403,4409 ****
   114. https://gcc.gnu.org/gcc-12/changes.html#targets
   115. https://gcc.gnu.org/gcc-12/changes.html#arm-targets
   116. https://gcc.gnu.org/gcc-12/changes.html#aarch64
!  117. https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/arm-a-profile-architecture-developments-2020
   118. https://gcc.gnu.org/gcc-12/changes.html#amdgcn
   119. https://gcc.gnu.org/gcc-12/changes.html#arm
   120. https://gcc.gnu.org/gcc-12/changes.html#bpf
--- 4472,4478 ----
   114. https://gcc.gnu.org/gcc-12/changes.html#targets
   115. https://gcc.gnu.org/gcc-12/changes.html#arm-targets
   116. https://gcc.gnu.org/gcc-12/changes.html#aarch64
!  117. https://developer.arm.com/community/arm-community-blogs/b/architectures-and-processors-blog/posts/arm-a-profile-architecture-developments-2020
   118. https://gcc.gnu.org/gcc-12/changes.html#amdgcn
   119. https://gcc.gnu.org/gcc-12/changes.html#arm
   120. https://gcc.gnu.org/gcc-12/changes.html#bpf
*************** References
*** 4452,4474 ****
   163. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init
   164. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init
   165. https://gcc.gnu.org/gcc-12/changes.html#debug
!  166. https://ctfstd.org/
!  167. https://gcc.gnu.org/gcc-12/changes.html#12.1
!  168. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=12.0
!  169. https://gcc.gnu.org/gcc-12/changes.html#12.2
!  170. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=12.2
!  171. https://gcc.gnu.org/gcc-12/changes.html#12.3
!  172. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=12.3
!  173. https://gcc.gnu.org/gcc-12/changes.html#12.4
!  174. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=12.4
!  175. https://gcc.gnu.org/gcc-12/changes.html#12.5
!  176. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=12.5
!  177. https://gcc.gnu.org/onlinedocs/
!  178. mailto:gcc-help@gcc.gnu.org
!  179. mailto:gcc@gcc.gnu.org
!  180. https://gcc.gnu.org/lists.html
!  181. https://www.fsf.org/
!  182. https://gcc.gnu.org/about.html
  ======================================================================
  http://gcc.gnu.org/gcc-11/index.html
  
--- 4521,4542 ----
   163. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init
   164. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init
   165. https://gcc.gnu.org/gcc-12/changes.html#debug
!  166. https://gcc.gnu.org/gcc-12/changes.html#12.1
!  167. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=12.0
!  168. https://gcc.gnu.org/gcc-12/changes.html#12.2
!  169. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=12.2
!  170. https://gcc.gnu.org/gcc-12/changes.html#12.3
!  171. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=12.3
!  172. https://gcc.gnu.org/gcc-12/changes.html#12.4
!  173. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=12.4
!  174. https://gcc.gnu.org/gcc-12/changes.html#12.5
!  175. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=12.5
!  176. https://gcc.gnu.org/onlinedocs/
!  177. mailto:gcc-help@gcc.gnu.org
!  178. mailto:gcc@gcc.gnu.org
!  179. https://gcc.gnu.org/lists.html
!  180. https://www.fsf.org/
!  181. https://gcc.gnu.org/about.html
  ======================================================================
  http://gcc.gnu.org/gcc-11/index.html
  
*************** Caveats
*** 4587,4593 ****
       * The libstdc++ configure option --enable-cheaders=c_std is
         deprecated and will be removed in a future release. It should be
         possible to use --enable-cheaders=c_global (the default) with no
!        change in behaviour.
       * The front end for compiling BRIG format of Heterogeneous System
         Architecture Intermediate Language (HSAIL) has been deprecated and
         will likely be removed in a future release.
--- 4655,4661 ----
       * The libstdc++ configure option --enable-cheaders=c_std is
         deprecated and will be removed in a future release. It should be
         possible to use --enable-cheaders=c_global (the default) with no
!        change in behavior.
       * The front end for compiling BRIG format of Heterogeneous System
         Architecture Intermediate Language (HSAIL) has been deprecated and
         will likely be removed in a future release.
*************** Other significant improvements
*** 5309,5315 ****
     provided this notice is preserved.
  
     These pages are [107]maintained by the GCC team. Last modified
!    2025-01-31.
  
  References
  
--- 5377,5383 ----
     provided this notice is preserved.
  
     These pages are [107]maintained by the GCC team. Last modified
!    2026-06-07.
  
  References
  
*************** References
*** 5378,5384 ****
    63. https://gcc.gnu.org/gcc-11/changes.html#targets
    64. https://gcc.gnu.org/gcc-11/changes.html#arm-targets
    65. https://gcc.gnu.org/gcc-11/changes.html#aarch64
!   66. https://developer.arm.com/documentation/102587/0102/Straight-line-speculation-frequently-asked-questions
    67. https://gcc.gnu.org/gcc-11/changes.html#amdgcn
    68. https://gcc.gnu.org/gcc-11/changes.html#arm
    69. https://gcc.gnu.org/gcc-11/changes.html#x86
--- 5446,5452 ----
    63. https://gcc.gnu.org/gcc-11/changes.html#targets
    64. https://gcc.gnu.org/gcc-11/changes.html#arm-targets
    65. https://gcc.gnu.org/gcc-11/changes.html#aarch64
!   66. https://developer.arm.com/documentation/110280/latest
    67. https://gcc.gnu.org/gcc-11/changes.html#amdgcn
    68. https://gcc.gnu.org/gcc-11/changes.html#arm
    69. https://gcc.gnu.org/gcc-11/changes.html#x86
*************** Caveats
*** 6509,6517 ****
  
  [9]General Improvements
  
!    The following GCC command line options have been introduced or
     improved.
!      * All command line options that take a byte-size argument accept
         64-bit integers as well as standard SI and IEC suffixes such as kb
         and KiB, MB and MiB, or GB and GiB denoting the corresponding
         multiples of bytes. See [10]Invoking GCC for more.
--- 6577,6585 ----
  
  [9]General Improvements
  
!    The following GCC command-line options have been introduced or
     improved.
!      * All command-line options that take a byte-size argument accept
         64-bit integers as well as standard SI and IEC suffixes such as kb
         and KiB, MB and MiB, or GB and GiB denoting the corresponding
         multiples of bytes. See [10]Invoking GCC for more.
*************** _SIZE'?
*** 7025,7036 ****
              option for Arm and thus -march=armv8-a+ssbs is an
              AArch64-specific option.
  
!       AArch64 specific
  
       * Support has been added for the Arm Neoverse E1 processor
         (-mcpu=neoverse-e1).
       * The AArch64 port now has support for stack clash protection using
!        the [72]-fstack-clash-protection option. The probing interval/guard
         size can be set by using --param
         stack-clash-protection-guard-size=12|16. The value of this
         parameter must be in bytes represented as a power of two. The two
--- 7093,7104 ----
              option for Arm and thus -march=armv8-a+ssbs is an
              AArch64-specific option.
  
!     [72]AArch64 specific
  
       * Support has been added for the Arm Neoverse E1 processor
         (-mcpu=neoverse-e1).
       * The AArch64 port now has support for stack clash protection using
!        the [73]-fstack-clash-protection option. The probing interval/guard
         size can be set by using --param
         stack-clash-protection-guard-size=12|16. The value of this
         parameter must be in bytes represented as a power of two. The two
*************** _SIZE'?
*** 7043,7049 ****
         option can now be used to enable the return address signing as well
         as the new Branch Target Identification feature of Armv8.5-A
         architecture. For more information on the arguments accepted by
!        this option, please refer to [73]AArch64-Options.
       * The following optional extensions to Armv8.5-A architecture are now
         supported and only affect the assembler.
            + Random Number Generation instructions through the
--- 7111,7117 ----
         option can now be used to enable the return address signing as well
         as the new Branch Target Identification feature of Armv8.5-A
         architecture. For more information on the arguments accepted by
!        this option, please refer to [74]AArch64-Options.
       * The following optional extensions to Armv8.5-A architecture are now
         supported and only affect the assembler.
            + Random Number Generation instructions through the
*************** _SIZE'?
*** 7051,7057 ****
            + Memory Tagging Extension through the -march=armv8.5-a+memtag
              option.
  
!       Arm specific
  
       * Support for the deprecated Armv2 and Armv3 architectures and their
         variants has been removed. Their corresponding -march values and
--- 7119,7125 ----
            + Memory Tagging Extension through the -march=armv8.5-a+memtag
              option.
  
!     [75]Arm specific
  
       * Support for the deprecated Armv2 and Armv3 architectures and their
         variants has been removed. Their corresponding -march values and
*************** _SIZE'?
*** 7062,7068 ****
       * Corrected FPU configurations for Cortex-R7 and Cortex-R8 when using
         their respective -mcpu options.
  
!   [74]AMD GCN
  
       * A new back end targeting AMD GCN GPUs has been contributed to GCC.
         The implementation is currently limited to compiling
--- 7130,7136 ----
       * Corrected FPU configurations for Cortex-R7 and Cortex-R8 when using
         their respective -mcpu options.
  
!   [76]AMD GCN
  
       * A new back end targeting AMD GCN GPUs has been contributed to GCC.
         The implementation is currently limited to compiling
*************** _SIZE'?
*** 7073,7091 ****
            + Fiji (fiji).
            + Vega 10 (gfx900).
  
!   [75]ARC
  
       * LRA is now on by default for the ARC target. This can be controlled
         by -mlra.
       * Add support for frame code-density and branch-and-index
         instructions.
  
!   [76]C-SKY
  
       * A new back end targeting C-SKY V2 processors has been contributed
         to GCC.
  
!   [77]IA-32/x86-64
  
       * Support of Intel MPX (Memory Protection Extensions) has been
         removed.
--- 7141,7159 ----
            + Fiji (fiji).
            + Vega 10 (gfx900).
  
!   [77]ARC
  
       * LRA is now on by default for the ARC target. This can be controlled
         by -mlra.
       * Add support for frame code-density and branch-and-index
         instructions.
  
!   [78]C-SKY
  
       * A new back end targeting C-SKY V2 processors has been contributed
         to GCC.
  
!   [79]IA-32/x86-64
  
       * Support of Intel MPX (Memory Protection Extensions) has been
         removed.
*************** _SIZE'?
*** 7096,7102 ****
         following ISA extensions: AVX512F, AVX512VL, AVX512CD, AVX512BW,
         AVX512DQ, AVX512VNNI.
  
!   [78]MIPS
  
       * The Loongson loongson-mmi and loongson-ext extensions have been
         split from loongson3a:
--- 7164,7170 ----
         following ISA extensions: AVX512F, AVX512VL, AVX512CD, AVX512BW,
         AVX512DQ, AVX512VNNI.
  
!   [80]MIPS
  
       * The Loongson loongson-mmi and loongson-ext extensions have been
         split from loongson3a:
*************** _SIZE'?
*** 7120,7131 ****
         -mtune options (as in -mcpu=gs464 or -mtune=gs464e) or as arguments
         to the equivalent target attributes and pragmas.
  
!   [79]OpenRISC
  
       * A new back end targeting OpenRISC processors has been contributed
         to GCC.
  
!   [80]S/390, System z, IBM z Systems
  
       * Support for the arch13 architecture has been added. When using the
         -march=arch13 option, the compiler will generate code making use of
--- 7188,7199 ----
         -mtune options (as in -mcpu=gs464 or -mtune=gs464e) or as arguments
         to the equivalent target attributes and pragmas.
  
!   [81]OpenRISC
  
       * A new back end targeting OpenRISC processors has been contributed
         to GCC.
  
!   [82]S/390, System z, IBM z Systems
  
       * Support for the arch13 architecture has been added. When using the
         -march=arch13 option, the compiler will generate code making use of
*************** _SIZE'?
*** 7155,7163 ****
         containing pointers to each profiling call stub. This is useful for
         automatically patching in and out calls.
  
! [81]Operating Systems
  
!   [82]Solaris
  
       * g++ now unconditionally enables large file support when compiling
         32-bit code.
--- 7223,7231 ----
         containing pointers to each profiling call stub. This is useful for
         automatically patching in and out calls.
  
! [83]Operating Systems
  
!   [84]Solaris
  
       * g++ now unconditionally enables large file support when compiling
         32-bit code.
*************** _SIZE'?
*** 7168,7176 ****
         Solaris 11/x86. It requires the use of GNU as. Solaris 11/SPARC
         support is still work-in-progress.
  
!   [83]Windows
  
!      * A C++ Microsoft ABI bitfield layout bug, [84]PR87137 has been
         fixed. A non-field declaration could cause the current bitfield
         allocation unit to be completed, incorrectly placing a following
         bitfield into a new allocation unit. The Microsoft ABI is selected
--- 7236,7244 ----
         Solaris 11/x86. It requires the use of GNU as. Solaris 11/SPARC
         support is still work-in-progress.
  
!   [85]Windows
  
!      * A C++ Microsoft ABI bitfield layout bug, [86]PR87137 has been
         fixed. A non-field declaration could cause the current bitfield
         allocation unit to be completed, incorrectly placing a following
         bitfield into a new allocation unit. The Microsoft ABI is selected
*************** _SIZE'?
*** 7181,7193 ****
            + SuperH targets when the -mhitachi option is specified, or
              __attribute__((renesas)) is used
  
! [85]Improvements for plugin authors
  
       * GCC's diagnostic subsystem now has a way to logically group
         together related diagnostics, auto_diagnostic_group. Such
         diagnostics will be nested by the output of
!        [86]-fdiagnostics-format=json.
!      * GCC now has a set of [87]user experience guidelines for GCC, with
         information and advice on implementing new diagnostics.
  
  Other significant improvements
--- 7249,7261 ----
            + SuperH targets when the -mhitachi option is specified, or
              __attribute__((renesas)) is used
  
! [87]Improvements for plugin authors
  
       * GCC's diagnostic subsystem now has a way to logically group
         together related diagnostics, auto_diagnostic_group. Such
         diagnostics will be nested by the output of
!        [88]-fdiagnostics-format=json.
!      * GCC now has a set of [89]user experience guidelines for GCC, with
         information and advice on implementing new diagnostics.
  
  Other significant improvements
*************** Other significant improvements
*** 7195,7224 ****
       * GCC's internal "selftest" suite now runs for C++ as well as C (in
         debug builds of the compiler).
  
! [88]GCC 9.1
  
!    This is the [89]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 9.1 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
! [90]GCC 9.2
  
!    This is the [91]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 9.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
! [92]GCC 9.3
  
!    This is the [93]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 9.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
! [94]GCC 9.4
  
!    This is the [95]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 9.4 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
--- 7263,7292 ----
       * GCC's internal "selftest" suite now runs for C++ as well as C (in
         debug builds of the compiler).
  
! [90]GCC 9.1
  
!    This is the [91]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 9.1 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
! [92]GCC 9.2
  
!    This is the [93]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 9.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
! [94]GCC 9.3
  
!    This is the [95]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 9.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
! [96]GCC 9.4
  
!    This is the [97]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 9.4 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
*************** Other significant improvements
*** 7241,7267 ****
         for all SVE implementations. Adding -msve-vector-bits=512 makes the
         code specific to 512-bit SVE.
  
! [96]GCC 9.5
  
!    This is the [97]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 9.5 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [98]GCC manuals. If that fails, the
!     [99]gcc-help@gcc.gnu.org mailing list might help. Comments on these
      web pages and the development of GCC are welcome on our developer
!     list at [100]gcc@gcc.gnu.org. All of [101]our lists have public
      archives.
  
!    Copyright (C) [102]Free Software Foundation, Inc. Verbatim copying and
     distribution of this entire article is permitted in any medium,
     provided this notice is preserved.
  
!    These pages are [103]maintained by the GCC team. Last modified
!    2025-01-31.
  
  References
  
--- 7309,7335 ----
         for all SVE implementations. Adding -msve-vector-bits=512 makes the
         code specific to 512-bit SVE.
  
! [98]GCC 9.5
  
!    This is the [99]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 9.5 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [100]GCC manuals. If that fails, the
!     [101]gcc-help@gcc.gnu.org mailing list might help. Comments on these
      web pages and the development of GCC are welcome on our developer
!     list at [102]gcc@gcc.gnu.org. All of [103]our lists have public
      archives.
  
!    Copyright (C) [104]Free Software Foundation, Inc. Verbatim copying and
     distribution of this entire article is permitted in any medium,
     provided this notice is preserved.
  
!    These pages are [105]maintained by the GCC team. Last modified
!    2026-06-10.
  
  References
  
*************** References
*** 7336,7373 ****
    69. https://gcc.gnu.org/onlinedocs/gcc-9.1.0/jit/topics/contexts.html#gcc_jit_context_add_driver_option
    70. https://gcc.gnu.org/gcc-9/changes.html#targets
    71. https://gcc.gnu.org/gcc-9/changes.html#arm-targets
!   72. https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc/Instrumentation-Options.html#index-fstack-protector
!   73. https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc/AArch64-Options.html#AArch64-Options
!   74. https://gcc.gnu.org/gcc-9/changes.html#amdgcn
!   75. https://gcc.gnu.org/gcc-9/changes.html#arc
!   76. https://gcc.gnu.org/gcc-9/changes.html#csky
!   77. https://gcc.gnu.org/gcc-9/changes.html#x86
!   78. https://gcc.gnu.org/gcc-9/changes.html#mips
!   79. https://gcc.gnu.org/gcc-9/changes.html#or1k
!   80. https://gcc.gnu.org/gcc-9/changes.html#s390
!   81. https://gcc.gnu.org/gcc-9/changes.html#os
!   82. https://gcc.gnu.org/gcc-9/changes.html#solaris
!   83. https://gcc.gnu.org/gcc-9/changes.html#windows
!   84. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87137
!   85. https://gcc.gnu.org/gcc-9/changes.html#plugins
!   86. https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-format
!   87. https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gccint/User-Experience-Guidelines.html
!   88. https://gcc.gnu.org/gcc-9/changes.html#GCC9.1
!   89. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=9.0
!   90. https://gcc.gnu.org/gcc-9/changes.html#GCC9.2
!   91. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=9.2
!   92. https://gcc.gnu.org/gcc-9/changes.html#GCC9.3
!   93. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=9.3
!   94. https://gcc.gnu.org/gcc-9/changes.html#GCC9.4
!   95. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=9.4
!   96. https://gcc.gnu.org/gcc-9/changes.html#GCC9.5
!   97. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=9.5
!   98. https://gcc.gnu.org/onlinedocs/
!   99. mailto:gcc-help@gcc.gnu.org
!  100. mailto:gcc@gcc.gnu.org
!  101. https://gcc.gnu.org/lists.html
!  102. https://www.fsf.org/
!  103. https://gcc.gnu.org/about.html
  ======================================================================
  http://gcc.gnu.org/gcc-8/index.html
  
--- 7404,7443 ----
    69. https://gcc.gnu.org/onlinedocs/gcc-9.1.0/jit/topics/contexts.html#gcc_jit_context_add_driver_option
    70. https://gcc.gnu.org/gcc-9/changes.html#targets
    71. https://gcc.gnu.org/gcc-9/changes.html#arm-targets
!   72. https://gcc.gnu.org/gcc-9/changes.html#aarch64
!   73. https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc/Instrumentation-Options.html#index-fstack-protector
!   74. https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc/AArch64-Options.html#AArch64-Options
!   75. https://gcc.gnu.org/gcc-9/changes.html#arm
!   76. https://gcc.gnu.org/gcc-9/changes.html#amdgcn
!   77. https://gcc.gnu.org/gcc-9/changes.html#arc
!   78. https://gcc.gnu.org/gcc-9/changes.html#csky
!   79. https://gcc.gnu.org/gcc-9/changes.html#x86
!   80. https://gcc.gnu.org/gcc-9/changes.html#mips
!   81. https://gcc.gnu.org/gcc-9/changes.html#or1k
!   82. https://gcc.gnu.org/gcc-9/changes.html#s390
!   83. https://gcc.gnu.org/gcc-9/changes.html#os
!   84. https://gcc.gnu.org/gcc-9/changes.html#solaris
!   85. https://gcc.gnu.org/gcc-9/changes.html#windows
!   86. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87137
!   87. https://gcc.gnu.org/gcc-9/changes.html#plugins
!   88. https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-format
!   89. https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gccint/User-Experience-Guidelines.html
!   90. https://gcc.gnu.org/gcc-9/changes.html#GCC9.1
!   91. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=9.0
!   92. https://gcc.gnu.org/gcc-9/changes.html#GCC9.2
!   93. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=9.2
!   94. https://gcc.gnu.org/gcc-9/changes.html#GCC9.3
!   95. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=9.3
!   96. https://gcc.gnu.org/gcc-9/changes.html#GCC9.4
!   97. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=9.4
!   98. https://gcc.gnu.org/gcc-9/changes.html#GCC9.5
!   99. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=9.5
!  100. https://gcc.gnu.org/onlinedocs/
!  101. mailto:gcc-help@gcc.gnu.org
!  102. mailto:gcc@gcc.gnu.org
!  103. https://gcc.gnu.org/lists.html
!  104. https://www.fsf.org/
!  105. https://gcc.gnu.org/about.html
  ======================================================================
  http://gcc.gnu.org/gcc-8/index.html
  
*************** Target Specific Changes
*** 10628,10670 ****
  
    IA-32/x86-64
  
!      * Support for the [51]deprecated pcommit instruction has been
!        removed.
  
!                                   [52]GCC 6.4
  
!    This is the [53]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 6.4 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
! [54]Operating Systems
  
!   [55]RTEMS
  
       * The ABI changes on ARM so that no short enums are used by default.
  
!                                   [56]GCC 6.5
  
!    This is the [57]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 6.5 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [58]GCC manuals. If that fails, the
!     [59]gcc-help@gcc.gnu.org mailing list might help. Comments on these
      web pages and the development of GCC are welcome on our developer
!     list at [60]gcc@gcc.gnu.org. All of [61]our lists have public
      archives.
  
!    Copyright (C) [62]Free Software Foundation, Inc. Verbatim copying and
     distribution of this entire article is permitted in any medium,
     provided this notice is preserved.
  
!    These pages are [63]maintained by the GCC team. Last modified
!    2025-01-31.
  
  References
  
--- 10698,10739 ----
  
    IA-32/x86-64
  
!      * Support for the deprecated pcommit instruction has been removed.
  
!                                   [51]GCC 6.4
  
!    This is the [52]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 6.4 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
! [53]Operating Systems
  
!   [54]RTEMS
  
       * The ABI changes on ARM so that no short enums are used by default.
  
!                                   [55]GCC 6.5
  
!    This is the [56]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 6.5 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [57]GCC manuals. If that fails, the
!     [58]gcc-help@gcc.gnu.org mailing list might help. Comments on these
      web pages and the development of GCC are welcome on our developer
!     list at [59]gcc@gcc.gnu.org. All of [60]our lists have public
      archives.
  
!    Copyright (C) [61]Free Software Foundation, Inc. Verbatim copying and
     distribution of this entire article is permitted in any medium,
     provided this notice is preserved.
  
!    These pages are [62]maintained by the GCC team. Last modified
!    2025-09-29.
  
  References
  
*************** References
*** 10680,10686 ****
    10. https://gcc.gnu.org/wiki/Offloading
    11. https://gcc.gnu.org/gcc-6/changes.html#c-family
    12. https://www.openmp.org/specifications/
!   13. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-1266
    14. https://gcc.gnu.org/gcc-6/changes.html#c
    15. https://gcc.gnu.org/gcc-6/changes.html#cxx
    16. https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4377.pdf
--- 10749,10755 ----
    10. https://gcc.gnu.org/wiki/Offloading
    11. https://gcc.gnu.org/gcc-6/changes.html#c-family
    12. https://www.openmp.org/specifications/
!   13. https://www.cve.org/CVERecord?id=CVE-2014-1266
    14. https://gcc.gnu.org/gcc-6/changes.html#c
    15. https://gcc.gnu.org/gcc-6/changes.html#cxx
    16. https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4377.pdf
*************** References
*** 10718,10736 ****
    48. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.2
    49. https://gcc.gnu.org/gcc-6/changes.html#GCC6.3
    50. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.3
!   51. https://www.intel.com/content/www/us/en/developer/articles/technical/deprecate-pcommit-instruction.html
!   52. https://gcc.gnu.org/gcc-6/changes.html#GCC6.4
!   53. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.4
!   54. https://gcc.gnu.org/gcc-6/changes.html#os64
!   55. https://gcc.gnu.org/gcc-6/changes.html#rtems64
!   56. https://gcc.gnu.org/gcc-6/changes.html#GCC6.5
!   57. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.5
!   58. https://gcc.gnu.org/onlinedocs/
!   59. mailto:gcc-help@gcc.gnu.org
!   60. mailto:gcc@gcc.gnu.org
!   61. https://gcc.gnu.org/lists.html
!   62. https://www.fsf.org/
!   63. https://gcc.gnu.org/about.html
  ======================================================================
  http://gcc.gnu.org/gcc-5/index.html
  
--- 10787,10804 ----
    48. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.2
    49. https://gcc.gnu.org/gcc-6/changes.html#GCC6.3
    50. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.3
!   51. https://gcc.gnu.org/gcc-6/changes.html#GCC6.4
!   52. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.4
!   53. https://gcc.gnu.org/gcc-6/changes.html#os64
!   54. https://gcc.gnu.org/gcc-6/changes.html#rtems64
!   55. https://gcc.gnu.org/gcc-6/changes.html#GCC6.5
!   56. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.5
!   57. https://gcc.gnu.org/onlinedocs/
!   58. mailto:gcc-help@gcc.gnu.org
!   59. mailto:gcc@gcc.gnu.org
!   60. https://gcc.gnu.org/lists.html
!   61. https://www.fsf.org/
!   62. https://gcc.gnu.org/about.html
  ======================================================================
  http://gcc.gnu.org/gcc-5/index.html
  
*************** void operator delete[] (void *, std::siz
*** 11536,11542 ****
  
    [56]RX
  
!      * A new command line option -mno-allow-string-insns can be used to
         disable the generation of the SCMPU, SMOVU, SMOVB, SMOVF, SUNTIL,
         SWHILE and RMPA instructions. An erratum released by Renesas shows
         that it is unsafe to use these instructions on addresses within the
--- 11604,11610 ----
  
    [56]RX
  
!      * A new command-line option -mno-allow-string-insns can be used to
         disable the generation of the SCMPU, SMOVU, SMOVB, SMOVF, SUNTIL,
         SWHILE and RMPA instructions. An erratum released by Renesas shows
         that it is unsafe to use these instructions on addresses within the
*************** Target Specific Changes
*** 11690,11712 ****
  
    IA-32/x86-64
  
!      * Support for the [71]deprecated pcommit instruction has been
!        removed.
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [72]GCC manuals. If that fails, the
!     [73]gcc-help@gcc.gnu.org mailing list might help. Comments on these
      web pages and the development of GCC are welcome on our developer
!     list at [74]gcc@gcc.gnu.org. All of [75]our lists have public
      archives.
  
!    Copyright (C) [76]Free Software Foundation, Inc. Verbatim copying and
     distribution of this entire article is permitted in any medium,
     provided this notice is preserved.
  
!    These pages are [77]maintained by the GCC team. Last modified
!    2025-02-28.
  
  References
  
--- 11758,11779 ----
  
    IA-32/x86-64
  
!      * Support for the pcommit instruction has been removed.
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [71]GCC manuals. If that fails, the
!     [72]gcc-help@gcc.gnu.org mailing list might help. Comments on these
      web pages and the development of GCC are welcome on our developer
!     list at [73]gcc@gcc.gnu.org. All of [74]our lists have public
      archives.
  
!    Copyright (C) [75]Free Software Foundation, Inc. Verbatim copying and
     distribution of this entire article is permitted in any medium,
     provided this notice is preserved.
  
!    These pages are [76]maintained by the GCC team. Last modified
!    2026-06-03.
  
  References
  
*************** References
*** 11780,11792 ****
    68. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.4
    69. https://gcc.gnu.org/gcc-5/changes.html#GCC5.5
    70. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.5
!   71. https://www.intel.com/content/www/us/en/developer/articles/technical/deprecate-pcommit-instruction.html
!   72. https://gcc.gnu.org/onlinedocs/
!   73. mailto:gcc-help@gcc.gnu.org
!   74. mailto:gcc@gcc.gnu.org
!   75. https://gcc.gnu.org/lists.html
!   76. https://www.fsf.org/
!   77. https://gcc.gnu.org/about.html
  ======================================================================
  http://gcc.gnu.org/gcc-4.9/index.html
  
--- 11847,11858 ----
    68. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.4
    69. https://gcc.gnu.org/gcc-5/changes.html#GCC5.5
    70. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.5
!   71. https://gcc.gnu.org/onlinedocs/
!   72. mailto:gcc-help@gcc.gnu.org
!   73. mailto:gcc@gcc.gnu.org
!   74. https://gcc.gnu.org/lists.html
!   75. https://www.fsf.org/
!   76. https://gcc.gnu.org/about.html
  ======================================================================
  http://gcc.gnu.org/gcc-4.9/index.html
  
*************** auto incr(T x) { return x++; }
*** 12491,12497 ****
     provided this notice is preserved.
  
     These pages are [56]maintained by the GCC team. Last modified
!    2025-06-10.
  
  References
  
--- 12557,12563 ----
     provided this notice is preserved.
  
     These pages are [56]maintained by the GCC team. Last modified
!    2026-06-01.
  
  References
  
*************** int i = A().f();  // error, f() requires
*** 12972,12978 ****
         architecture from ARM. Note that this is a separate port from the
         existing 32-bit ARM port.
       * The port provides initial support for the Cortex-A53 and the
!        Cortex-A57 processors with the command line options
         -mcpu=cortex-a53 and -mcpu=cortex-a57.
       * As of GCC 4.8.4 a workaround for the ARM Cortex-A53 erratum 835769
         has been added and can be enabled by giving the
--- 13038,13044 ----
         architecture from ARM. Note that this is a separate port from the
         existing 32-bit ARM port.
       * The port provides initial support for the Cortex-A53 and the
!        Cortex-A57 processors with the command-line options
         -mcpu=cortex-a53 and -mcpu=cortex-a57.
       * As of GCC 4.8.4 a workaround for the ARM Cortex-A53 erratum 835769
         has been added and can be enabled by giving the
*************** int i = A().f();  // error, f() requires
*** 13372,13378 ****
     provided this notice is preserved.
  
     These pages are [67]maintained by the GCC team. Last modified
!    2025-02-28.
  
  References
  
--- 13438,13444 ----
     provided this notice is preserved.
  
     These pages are [67]maintained by the GCC team. Last modified
!    2026-06-08.
  
  References
  
*************** Other significant improvements
*** 14328,14334 ****
     provided this notice is preserved.
  
     These pages are [66]maintained by the GCC team. Last modified
!    2025-06-10.
  
  References
  
--- 14394,14400 ----
     provided this notice is preserved.
  
     These pages are [66]maintained by the GCC team. Last modified
!    2026-04-30.
  
  References
  
*************** New Languages and Language specific impr
*** 14808,14814 ****
       * G++ now issues clearer diagnostics when a colon is used in a place
         where a double-colon was intended.
       * G++ no longer accepts mutable on reference members ([12]c++/33558).
!        Use -fpermissive to allow the old, non-conforming behaviour.
       * A few mangling fixes have been made, to attribute const/volatile on
         function pointer types, decltype of a plain decl, and use of a
         function parameter in the declaration of another parameter. By
--- 14874,14880 ----
       * G++ now issues clearer diagnostics when a colon is used in a place
         where a double-colon was intended.
       * G++ no longer accepts mutable on reference members ([12]c++/33558).
!        Use -fpermissive to allow the old, non-conforming behavior.
       * A few mangling fixes have been made, to attribute const/volatile on
         function pointer types, decltype of a plain decl, and use of a
         function parameter in the declaration of another parameter. By
*************** New Languages and Language specific impr
*** 14826,14832 ****
      struct A { A(); };
      struct B : A { int i; };
      const B b = B();
!        Use -fpermissive to allow the old, non-conforming behaviour.
  
      Runtime Library (libstdc++)
  
--- 14892,14898 ----
      struct A { A(); };
      struct B : A { int i; };
      const B b = B();
!        Use -fpermissive to allow the old, non-conforming behavior.
  
      Runtime Library (libstdc++)
  
*************** Changes for GCC Developers
*** 15387,15393 ****
     provided this notice is preserved.
  
     These pages are [46]maintained by the GCC team. Last modified
!    2025-01-31.
  
  References
  
--- 15453,15459 ----
     provided this notice is preserved.
  
     These pages are [46]maintained by the GCC team. Last modified
!    2026-06-07.
  
  References
  
*************** New Languages and Language specific impr
*** 15804,15810 ****
            + Existing facilities now exploit explicit operators and the
              newly implemented core C++0x features.
            + The header <cstdatomic> has been renamed to <atomic>.
!      * An experimental [15]profile mode has been added. This is an
         implementation of many C++ standard library constructs with an
         additional analysis layer that gives performance improvement advice
         based on recognition of suboptimal usage patterns. For example,
--- 15870,15876 ----
            + Existing facilities now exploit explicit operators and the
              newly implemented core C++0x features.
            + The header <cstdatomic> has been renamed to <atomic>.
!      * An experimental profile mode has been added. This is an
         implementation of many C++ standard library constructs with an
         additional analysis layer that gives performance improvement advice
         based on recognition of suboptimal usage patterns. For example,
*************** vector-size: improvement = 3: call stack
*** 15826,15832 ****
         These constructs can be substituted for the normal libstdc++
         constructs on a piecemeal basis, or all existing components can be
         transformed via the -D_GLIBCXX_PROFILE macro.
!      * [16]Support for decimal floating-point arithmetic (aka ISO C++ TR
         24733) has been added. This support is in header file
         <decimal/decimal>, uses namespace std::decimal, and includes
         classes decimal32, decimal64, and decimal128.
--- 15892,15898 ----
         These constructs can be substituted for the normal libstdc++
         constructs on a piecemeal basis, or all existing components can be
         transformed via the -D_GLIBCXX_PROFILE macro.
!      * [15]Support for decimal floating-point arithmetic (aka ISO C++ TR
         24733) has been added. This support is in header file
         <decimal/decimal>, uses namespace std::decimal, and includes
         classes decimal32, decimal64, and decimal128.
*************** vector-size: improvement = 3: call stack
*** 15836,15855 ****
         components that simplify the internal representation and present a
         more intuitive view of components when used with
         appropriately-advanced versions of GDB. For more information,
!        please consult the more [17]detailed description.
       * The default behavior for comparing typeinfo names has changed, so
         in <typeinfo>, __GXX_MERGED_TYPEINFO_NAMES now defaults to zero.
       * The new -static-libstdc++ option directs g++ to link the C++
         library statically, even if the default would normally be to link
         it dynamically.
  
!   [18]Fortran
  
       * The COMMON default padding has been changed - instead of adding the
         padding before a variable it is now added afterwards, which
         increases the compatibility with other vendors and helps to obtain
         the correct output in some cases. Cf. also the -falign-commons
!        option ([19]added in 4.4).
       * The -finit-real= option now also supports the value snan for
         signaling not-a-number; to be effective, one additionally needs to
         enable trapping (e.g. via -ffpe-trap=). Note: Compile-time
--- 15902,15921 ----
         components that simplify the internal representation and present a
         more intuitive view of components when used with
         appropriately-advanced versions of GDB. For more information,
!        please consult the more [16]detailed description.
       * The default behavior for comparing typeinfo names has changed, so
         in <typeinfo>, __GXX_MERGED_TYPEINFO_NAMES now defaults to zero.
       * The new -static-libstdc++ option directs g++ to link the C++
         library statically, even if the default would normally be to link
         it dynamically.
  
!   [17]Fortran
  
       * The COMMON default padding has been changed - instead of adding the
         padding before a variable it is now added afterwards, which
         increases the compatibility with other vendors and helps to obtain
         the correct output in some cases. Cf. also the -falign-commons
!        option ([18]added in 4.4).
       * The -finit-real= option now also supports the value snan for
         signaling not-a-number; to be effective, one additionally needs to
         enable trapping (e.g. via -ffpe-trap=). Note: Compile-time
*************** vector-size: improvement = 3: call stack
*** 15867,15873 ****
       * The run-time checking -fcheck=bounds now warns about invalid string
         lengths of character dummy arguments. Additionally, more
         compile-time checks have been added.
!      * The new option [20]-fno-protect-parens has been added; if set, the
         compiler may reorder REAL and COMPLEX expressions without regard to
         parentheses.
       * GNU Fortran no longer links against libgfortranbegin. As before,
--- 15933,15939 ----
       * The run-time checking -fcheck=bounds now warns about invalid string
         lengths of character dummy arguments. Additionally, more
         compile-time checks have been added.
!      * The new option [19]-fno-protect-parens has been added; if set, the
         compiler may reorder REAL and COMPLEX expressions without regard to
         parentheses.
       * GNU Fortran no longer links against libgfortranbegin. As before,
*************** vector-size: improvement = 3: call stack
*** 15875,15881 ****
         which is invoked by the main function. However, main is now
         generated and put in the same object file as MAIN__. For the time
         being, libgfortranbegin still exists for backward compatibility.
!        For details see the new [21]Mixed-Language Programming chapter in
         the manual.
       * The I/O library was restructured for performance and cleaner code.
       * Array assignments and WHERE are now run in parallel when OpenMP's
--- 15941,15947 ----
         which is invoked by the main function. However, main is now
         generated and put in the same object file as MAIN__. For the time
         being, libgfortranbegin still exists for backward compatibility.
!        For details see the new [20]Mixed-Language Programming chapter in
         the manual.
       * The I/O library was restructured for performance and cleaner code.
       * Array assignments and WHERE are now run in parallel when OpenMP's
*************** vector-size: improvement = 3: call stack
*** 15887,15893 ****
       * More Fortran 2003 and Fortran 2008 mathematical functions can now
         be used as initialization expressions.
       * Some extended attributes such as STDCALL are now supported via the
!        [22]GCC$ compiler directive.
       * For Fortran 77 compatibility: If -fno-sign-zero is used, the SIGN
         intrinsic behaves now as if zero were always positive.
       * For legacy compatibiliy: On Cygwin and MinGW, the special files
--- 15953,15959 ----
       * More Fortran 2003 and Fortran 2008 mathematical functions can now
         be used as initialization expressions.
       * Some extended attributes such as STDCALL are now supported via the
!        [21]GCC$ compiler directive.
       * For Fortran 77 compatibility: If -fno-sign-zero is used, the SIGN
         intrinsic behaves now as if zero were always positive.
       * For legacy compatibiliy: On Cygwin and MinGW, the special files
*************** vector-size: improvement = 3: call stack
*** 15913,15919 ****
              procedure pointer with PASS attribute now have to use CLASS in
              line with the Fortran 2003 standard; the workaround to use
              TYPE is no longer supported.
!           + [23]Experimental, incomplete support for polymorphism,
              including CLASS, SELECT TYPE and dynamic dispatch of
              type-bound procedure calls. Some features do not work yet such
              as unlimited polymorphism (CLASS(*)).
--- 15979,15985 ----
              procedure pointer with PASS attribute now have to use CLASS in
              line with the Fortran 2003 standard; the workaround to use
              TYPE is no longer supported.
!           + [22]Experimental, incomplete support for polymorphism,
              including CLASS, SELECT TYPE and dynamic dispatch of
              type-bound procedure calls. Some features do not work yet such
              as unlimited polymorphism (CLASS(*)).
*************** vector-size: improvement = 3: call stack
*** 15930,15936 ****
              ATAN(Y,X) is now an alias for ATAN2(Y,X).
            + The BLOCK construct has been implemented.
  
! [24]New Targets and Target Specific Improvements
  
    AIX
  
--- 15996,16002 ----
              ATAN(Y,X) is now an alias for ATAN2(Y,X).
            + The BLOCK construct has been implemented.
  
! [23]New Targets and Target Specific Improvements
  
    AIX
  
*************** vector-size: improvement = 3: call stack
*** 15961,15967 ****
            + ATmega16U2
            + ATmega32U2
  
!   [25]IA-32/x86-64
  
       * GCC now will set the default for -march= based on the configure
         target.
--- 16027,16033 ----
            + ATmega16U2
            + ATmega32U2
  
!   [24]IA-32/x86-64
  
       * GCC now will set the default for -march= based on the configure
         target.
*************** vector-size: improvement = 3: call stack
*** 15995,16001 ****
       * GCC now supports thread-local storage (TLS) on M68K and ColdFire
         processors.
  
!   [26]MeP
  
     Support has been added for the Toshiba Media embedded Processor (MeP,
     or mep-elf) embedded target.
--- 16061,16067 ----
       * GCC now supports thread-local storage (TLS) on M68K and ColdFire
         processors.
  
!   [25]MeP
  
     Support has been added for the Toshiba Media embedded Processor (MeP,
     or mep-elf) embedded target.
*************** vector-size: improvement = 3: call stack
*** 16033,16039 ****
         use_debug_exception_return. See the documentation for more details
         about these attributes.
  
!   [27]RS/6000 (POWER/PowerPC)
  
       * GCC now supports the Power ISA 2.06, which includes the VSX
         instructions that add vector 64-bit floating point support, new
--- 16099,16105 ----
         use_debug_exception_return. See the documentation for more details
         about these attributes.
  
!   [26]RS/6000 (POWER/PowerPC)
  
       * GCC now supports the Power ISA 2.06, which includes the VSX
         instructions that add vector 64-bit floating point support, new
*************** vector-size: improvement = 3: call stack
*** 16058,16070 ****
         adhere to the ABI for 128-bit vectors with 64-bit integer base
         types (PR 48857). This is also fixed in the GCC 4.6.1 release.
  
!   [28]RX
  
     Support has been added for the Renesas RX Processor (rx-elf) target.
  
! [29]Operating Systems
  
!   [30]Windows (Cygwin and MinGW)
  
       * GCC now installs all the major language runtime libraries as DLLs
         when configured with the --enable-shared option.
--- 16124,16136 ----
         adhere to the ABI for 128-bit vectors with 64-bit integer base
         types (PR 48857). This is also fixed in the GCC 4.6.1 release.
  
!   [27]RX
  
     Support has been added for the Renesas RX Processor (rx-elf) target.
  
! [28]Operating Systems
  
!   [29]Windows (Cygwin and MinGW)
  
       * GCC now installs all the major language runtime libraries as DLLs
         when configured with the --enable-shared option.
*************** Other significant improvements
*** 16113,16128 ****
         infodir info documentation [DATAROOTDIR/info]
         mandir  man documentation [DATAROOTDIR/man]
  
! [31]GCC 4.5.1
  
!    This is the [32]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.5.1 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
    All languages
  
!      * GCC's new link-time optimizer ([33]-flto) now also works on a few
         non-ELF targets:
            + Cygwin (*-cygwin*)
            + MinGW (*-mingw*)
--- 16179,16194 ----
         infodir info documentation [DATAROOTDIR/info]
         mandir  man documentation [DATAROOTDIR/man]
  
! [30]GCC 4.5.1
  
!    This is the [31]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.5.1 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
    All languages
  
!      * GCC's new link-time optimizer ([32]-flto) now also works on a few
         non-ELF targets:
            + Cygwin (*-cygwin*)
            + MinGW (*-mingw*)
*************** Other significant improvements
*** 16130,16145 ****
         LTO is not enabled by default for these targets. To enable LTO, you
         should configure with the --enable-lto option.
  
! [34]GCC 4.5.2
  
!    This is the [35]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.5.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
! [36]GCC 4.5.3
  
!    This is the [37]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.5.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
--- 16196,16211 ----
         LTO is not enabled by default for these targets. To enable LTO, you
         should configure with the --enable-lto option.
  
! [33]GCC 4.5.2
  
!    This is the [34]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.5.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
! [35]GCC 4.5.3
  
!    This is the [36]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.5.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
*************** Other significant improvements
*** 16154,16180 ****
     vec_vsx_ld and vec_vsx_st which always generates the VSX memory
     instructions.
  
! [38]GCC 4.5.4
  
!    This is the [39]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.5.4 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [40]GCC manuals. If that fails, the
!     [41]gcc-help@gcc.gnu.org mailing list might help. Comments on these
      web pages and the development of GCC are welcome on our developer
!     list at [42]gcc@gcc.gnu.org. All of [43]our lists have public
      archives.
  
!    Copyright (C) [44]Free Software Foundation, Inc. Verbatim copying and
     distribution of this entire article is permitted in any medium,
     provided this notice is preserved.
  
!    These pages are [45]maintained by the GCC team. Last modified
!    2025-01-31.
  
  References
  
--- 16220,16246 ----
     vec_vsx_ld and vec_vsx_st which always generates the VSX memory
     instructions.
  
! [37]GCC 4.5.4
  
!    This is the [38]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.5.4 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [39]GCC manuals. If that fails, the
!     [40]gcc-help@gcc.gnu.org mailing list might help. Comments on these
      web pages and the development of GCC are welcome on our developer
!     list at [41]gcc@gcc.gnu.org. All of [42]our lists have public
      archives.
  
!    Copyright (C) [43]Free Software Foundation, Inc. Verbatim copying and
     distribution of this entire article is permitted in any medium,
     provided this notice is preserved.
  
!    These pages are [44]maintained by the GCC team. Last modified
!    2025-09-29.
  
  References
  
*************** References
*** 16192,16228 ****
    12. https://gcc.gnu.org/gcc-4.5/cxx0x_status.html
    13. https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#757
    14. https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#176
!   15. https://gcc.gnu.org/onlinedocs/libstdc++/manual/profile_mode.html
!   16. https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.tr24733
!   17. https://sourceware.org/gdb/wiki/STLSupport
!   18. https://gcc.gnu.org/gcc-4.5/changes.html#Fortran
!   19. https://gcc.gnu.org/gcc-4.4/changes.html
!   20. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html
!   21. https://gcc.gnu.org/onlinedocs/gfortran/Mixed-Language-Programming.html
!   22. https://gcc.gnu.org/onlinedocs/gfortran/GNU-Fortran-Compiler-Directives.html
!   23. https://gcc.gnu.org/wiki/OOP
!   24. https://gcc.gnu.org/gcc-4.5/changes.html#targets
!   25. https://gcc.gnu.org/gcc-4.5/changes.html#x86
!   26. https://gcc.gnu.org/gcc-4.5/changes.html#mep
!   27. https://gcc.gnu.org/gcc-4.5/changes.html#rs6000
!   28. https://gcc.gnu.org/gcc-4.5/changes.html#rx
!   29. https://gcc.gnu.org/gcc-4.5/changes.html#os
!   30. https://gcc.gnu.org/gcc-4.5/changes.html#windows
!   31. https://gcc.gnu.org/gcc-4.5/changes.html#GCC4.5.1
!   32. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.1
!   33. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
!   34. https://gcc.gnu.org/gcc-4.5/changes.html#GCC4.5.2
!   35. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.2
!   36. https://gcc.gnu.org/gcc-4.5/changes.html#GCC4.5.3
!   37. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.3
!   38. https://gcc.gnu.org/gcc-4.5/changes.html#GCC4.5.4
!   39. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.4
!   40. https://gcc.gnu.org/onlinedocs/
!   41. mailto:gcc-help@gcc.gnu.org
!   42. mailto:gcc@gcc.gnu.org
!   43. https://gcc.gnu.org/lists.html
!   44. https://www.fsf.org/
!   45. https://gcc.gnu.org/about.html
  ======================================================================
  http://gcc.gnu.org/gcc-4.4/index.html
  
--- 16258,16293 ----
    12. https://gcc.gnu.org/gcc-4.5/cxx0x_status.html
    13. https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#757
    14. https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#176
!   15. https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.tr24733
!   16. https://sourceware.org/gdb/wiki/STLSupport
!   17. https://gcc.gnu.org/gcc-4.5/changes.html#Fortran
!   18. https://gcc.gnu.org/gcc-4.4/changes.html
!   19. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html
!   20. https://gcc.gnu.org/onlinedocs/gfortran/Mixed-Language-Programming.html
!   21. https://gcc.gnu.org/onlinedocs/gfortran/GNU-Fortran-Compiler-Directives.html
!   22. https://gcc.gnu.org/wiki/OOP
!   23. https://gcc.gnu.org/gcc-4.5/changes.html#targets
!   24. https://gcc.gnu.org/gcc-4.5/changes.html#x86
!   25. https://gcc.gnu.org/gcc-4.5/changes.html#mep
!   26. https://gcc.gnu.org/gcc-4.5/changes.html#rs6000
!   27. https://gcc.gnu.org/gcc-4.5/changes.html#rx
!   28. https://gcc.gnu.org/gcc-4.5/changes.html#os
!   29. https://gcc.gnu.org/gcc-4.5/changes.html#windows
!   30. https://gcc.gnu.org/gcc-4.5/changes.html#GCC4.5.1
!   31. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.1
!   32. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
!   33. https://gcc.gnu.org/gcc-4.5/changes.html#GCC4.5.2
!   34. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.2
!   35. https://gcc.gnu.org/gcc-4.5/changes.html#GCC4.5.3
!   36. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.3
!   37. https://gcc.gnu.org/gcc-4.5/changes.html#GCC4.5.4
!   38. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.4
!   39. https://gcc.gnu.org/onlinedocs/
!   40. mailto:gcc-help@gcc.gnu.org
!   41. mailto:gcc@gcc.gnu.org
!   42. https://gcc.gnu.org/lists.html
!   43. https://www.fsf.org/
!   44. https://gcc.gnu.org/about.html
  ======================================================================
  http://gcc.gnu.org/gcc-4.4/index.html
  
*************** General Optimizer Improvements
*** 24920,24926 ****
         for profile driven optimizations.
         Options -fprofile-arcs and -fbranch-probabilities can now be used
         to improve speed of the generated code by profiling the actual
!        program behaviour on typical runs. In the absence of profile info
         the compiler attempts to guess the profile statically.
       * [3]SPEC2000 and SPEC95 benchmark suites are now used daily to
         monitor performance of the generated code.
--- 24985,24991 ----
         for profile driven optimizations.
         Options -fprofile-arcs and -fbranch-probabilities can now be used
         to improve speed of the generated code by profiling the actual
!        program behavior on typical runs. In the absence of profile info
         the compiler attempts to guess the profile statically.
       * [3]SPEC2000 and SPEC95 benchmark suites are now used daily to
         monitor performance of the generated code.
*************** Documentation improvements
*** 25219,25225 ****
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2025-06-05.
  
  References
  
--- 25284,25290 ----
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2026-06-07.
  
  References
  
*************** New Languages and Language specific impr
*** 25396,25404 ****
       * New C++ support library and many C++ bug fixes, vastly improving
         our conformance to the ISO C++ standard.
       * New [7]inliner for C++.
!      * Rewritten C preprocessor, integrated into the C, C++ and Objective
!        C compilers, with very many improvements including ISO C99 support
!        and [8]improvements to dependency generation.
       * Support for more [9]ISO C99 features.
       * Many improvements to support for checking calls to format functions
         such as printf and scanf, including support for ISO C99 format
--- 25461,25469 ----
       * New C++ support library and many C++ bug fixes, vastly improving
         our conformance to the ISO C++ standard.
       * New [7]inliner for C++.
!      * Rewritten C preprocessor, integrated into the C, C++ and
!        Objective-C compilers, with very many improvements including ISO
!        C99 support and [8]improvements to dependency generation.
       * Support for more [9]ISO C99 features.
       * Many improvements to support for checking calls to format functions
         such as printf and scanf, including support for ISO C99 format
*************** Other significant improvements
*** 25485,25491 ****
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2025-06-05.
  
  References
  
--- 25550,25556 ----
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2026-01-02.
  
  References
  
*************** http://gcc.gnu.org/gcc-3.0/caveats.html
*** 25526,25532 ****
         about this may be fixed by adding a null statement (a single
         semicolon) after the label.
       * The poorly documented extension that allowed string constants in C,
!        C++ and Objective C to contain unescaped newlines has been
         deprecated and may be removed in a future version. Programs using
         this extension may be fixed in several ways: the bare newline may
         be replaced by \n, or preceded by \n\, or string concatenation may
--- 25591,25597 ----
         about this may be fixed by adding a null statement (a single
         semicolon) after the label.
       * The poorly documented extension that allowed string constants in C,
!        C++ and Objective-C to contain unescaped newlines has been
         deprecated and may be removed in a future version. Programs using
         this extension may be fixed in several ways: the bare newline may
         be replaced by \n, or preceded by \n\, or string concatenation may
*************** http://gcc.gnu.org/gcc-3.0/caveats.html
*** 25556,25562 ****
     provided this notice is preserved.
  
     These pages are [7]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
--- 25621,25627 ----
     provided this notice is preserved.
  
     These pages are [7]maintained by the GCC team. Last modified
!    2026-01-02.
  
  References
  
*************** http://gcc.gnu.org/gcc-2.95/features.htm
*** 25706,25712 ****
            + sh4
            + Support for new systems (OpenBSD, FreeBSD, UWIN, Interix,
              arm-linux)
!           + vxWorks targets include support for vxWorks threads
            + StrongARM 110 and ARM9 support added. ARM Scheduling
              parameters rewritten.
            + Various changes to the MIPS port to avoid assembler macros,
--- 25771,25777 ----
            + sh4
            + Support for new systems (OpenBSD, FreeBSD, UWIN, Interix,
              arm-linux)
!           + VxWorks targets include support for VxWorks threads
            + StrongARM 110 and ARM9 support added. ARM Scheduling
              parameters rewritten.
            + Various changes to the MIPS port to avoid assembler macros,
*************** Additional Changes in GCC 2.95.1
*** 25762,25768 ****
            + Fix compiler abort in new cfg code exposed by x86 port.
            + Fix out of range array reference in code convert flat
              registers to the x87 stacked FP register file.
!           + Fix minor vxworks configuration bug.
            + Fix return type of bsearch for SunOS 4.x.
       * Language & Runtime specific fixes.
            + The G++ signature extension has been deprecated. It will be
--- 25827,25833 ----
            + Fix compiler abort in new cfg code exposed by x86 port.
            + Fix out of range array reference in code convert flat
              registers to the x87 stacked FP register file.
!           + Fix minor VxWorks configuration bug.
            + Fix return type of bsearch for SunOS 4.x.
       * Language & Runtime specific fixes.
            + The G++ signature extension has been deprecated. It will be
*************** Additional Changes in GCC 2.95.3
*** 25903,25909 ****
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2025-06-05.
  
  References
  
--- 25968,25974 ----
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2025-10-08.
  
  References
  
diff -Nrcpad gcc-15.2.0/c++tools/ChangeLog gcc-15.3.0/c++tools/ChangeLog
*** gcc-15.2.0/c++tools/ChangeLog	Fri Aug  8 06:52:35 2025
--- gcc-15.3.0/c++tools/ChangeLog	Fri Jun 12 06:10:03 2026
***************
*** 1,3 ****
--- 1,7 ----
+ 2026-06-12  Release Manager
+ 
+ 	* GCC 15.3.0 released.
+ 
  2025-08-08  Release Manager
  
  	* GCC 15.2.0 released.
diff -Nrcpad gcc-15.2.0/config/ChangeLog gcc-15.3.0/config/ChangeLog
*** gcc-15.2.0/config/ChangeLog	Fri Aug  8 06:52:35 2025
--- gcc-15.3.0/config/ChangeLog	Fri Jun 12 06:10:03 2026
***************
*** 1,3 ****
--- 1,16 ----
+ 2026-06-12  Release Manager
+ 
+ 	* GCC 15.3.0 released.
+ 
+ 2026-04-15  TorbjÃ¶rn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	Backported from master:
+ 	2026-04-13  TorbjÃ¶rn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	PR target/69639
+ 	* mh-cygwin: Increase to 64MB stack reserve.
+ 	* mh-mingw: Likewise.
+ 
  2025-08-08  Release Manager
  
  	* GCC 15.2.0 released.
diff -Nrcpad gcc-15.2.0/config/mh-cygwin gcc-15.3.0/config/mh-cygwin
*** gcc-15.2.0/config/mh-cygwin	Fri Aug  8 06:51:39 2025
--- gcc-15.3.0/config/mh-cygwin	Fri Jun 12 06:09:05 2026
***************
*** 1,4 ****
! # Increase stack limit to a figure based on the Linux default, with 4MB added
! # as GCC turns out to need that much more to pass all the limits-* tests.
! LDFLAGS += -Wl,--stack,12582912
! BOOT_LDFLAGS += -Wl,--stack,12582912
--- 1,5 ----
! # Increase stack limit, to the same value that GCC tries to change to at
! # startup on Linux, as GCC turns out to need that much more to pass all the
! # limits-* tests.
! LDFLAGS += -Wl,--stack,67108864
! BOOT_LDFLAGS += -Wl,--stack,67108864
diff -Nrcpad gcc-15.2.0/config/mh-mingw gcc-15.3.0/config/mh-mingw
*** gcc-15.2.0/config/mh-mingw	Fri Aug  8 06:51:39 2025
--- gcc-15.3.0/config/mh-mingw	Fri Jun 12 06:09:05 2026
*************** STAGE2_CXXFLAGS += -D__USE_MINGW_ACCESS
*** 8,14 ****
  STAGE3_CXXFLAGS += -D__USE_MINGW_ACCESS
  STAGE4_CXXFLAGS += -D__USE_MINGW_ACCESS
  
! # Increase stack limit to a figure based on the Linux default, with 4MB added
! # as GCC turns out to need that much more to pass all the limits-* tests.
! LDFLAGS += -Wl,--stack,12582912
! BOOT_LDFLAGS += -Wl,--stack,12582912
--- 8,15 ----
  STAGE3_CXXFLAGS += -D__USE_MINGW_ACCESS
  STAGE4_CXXFLAGS += -D__USE_MINGW_ACCESS
  
! # Increase stack limit, to the same value that GCC tries to change to at
! # startup on Linux, as GCC turns out to need that much more to pass all the
! # limits-* tests.
! LDFLAGS += -Wl,--stack,67108864
! BOOT_LDFLAGS += -Wl,--stack,67108864
diff -Nrcpad gcc-15.2.0/contrib/ChangeLog gcc-15.3.0/contrib/ChangeLog
*** gcc-15.2.0/contrib/ChangeLog	Fri Aug  8 06:52:35 2025
--- gcc-15.3.0/contrib/ChangeLog	Fri Jun 12 06:10:03 2026
***************
*** 1,3 ****
--- 1,15 ----
+ 2026-06-12  Release Manager
+ 
+ 	* GCC 15.3.0 released.
+ 
+ 2026-01-14  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-28  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* gcc-changelog/git_commit.py: Add "diagnostics" to bug
+ 	components.
+ 
  2025-08-08  Release Manager
  
  	* GCC 15.2.0 released.
diff -Nrcpad gcc-15.2.0/contrib/gcc-changelog/git_commit.py gcc-15.3.0/contrib/gcc-changelog/git_commit.py
*** gcc-15.2.0/contrib/gcc-changelog/git_commit.py	Fri Aug  8 06:51:39 2025
--- gcc-15.3.0/contrib/gcc-changelog/git_commit.py	Fri Jun 12 06:09:05 2026
*************** bug_components = {
*** 97,102 ****
--- 97,103 ----
      'd',
      'debug',
      'demangler',
+     'diagnostics',
      'driver',
      'fastjar',
      'fortran',
diff -Nrcpad gcc-15.2.0/contrib/header-tools/ChangeLog gcc-15.3.0/contrib/header-tools/ChangeLog
*** gcc-15.2.0/contrib/header-tools/ChangeLog	Fri Aug  8 06:52:35 2025
--- gcc-15.3.0/contrib/header-tools/ChangeLog	Fri Jun 12 06:10:03 2026
***************
*** 1,3 ****
--- 1,7 ----
+ 2026-06-12  Release Manager
+ 
+ 	* GCC 15.3.0 released.
+ 
  2025-08-08  Release Manager
  
  	* GCC 15.2.0 released.
diff -Nrcpad gcc-15.2.0/contrib/reghunt/ChangeLog gcc-15.3.0/contrib/reghunt/ChangeLog
*** gcc-15.2.0/contrib/reghunt/ChangeLog	Fri Aug  8 06:52:35 2025
--- gcc-15.3.0/contrib/reghunt/ChangeLog	Fri Jun 12 06:10:03 2026
***************
*** 1,3 ****
--- 1,7 ----
+ 2026-06-12  Release Manager
+ 
+ 	* GCC 15.3.0 released.
+ 
  2025-08-08  Release Manager
  
  	* GCC 15.2.0 released.
diff -Nrcpad gcc-15.2.0/contrib/regression/ChangeLog gcc-15.3.0/contrib/regression/ChangeLog
*** gcc-15.2.0/contrib/regression/ChangeLog	Fri Aug  8 06:52:35 2025
--- gcc-15.3.0/contrib/regression/ChangeLog	Fri Jun 12 06:10:03 2026
***************
*** 1,3 ****
--- 1,7 ----
+ 2026-06-12  Release Manager
+ 
+ 	* GCC 15.3.0 released.
+ 
  2025-08-08  Release Manager
  
  	* GCC 15.2.0 released.
diff -Nrcpad gcc-15.2.0/fixincludes/ChangeLog gcc-15.3.0/fixincludes/ChangeLog
*** gcc-15.2.0/fixincludes/ChangeLog	Fri Aug  8 06:52:35 2025
--- gcc-15.3.0/fixincludes/ChangeLog	Fri Jun 12 06:10:03 2026
***************
*** 1,3 ****
--- 1,18 ----
+ 2026-06-12  Release Manager
+ 
+ 	* GCC 15.3.0 released.
+ 
+ 2025-08-31  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-08-28  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR bootstrap/118009
+ 	PR bootstrap/119089
+ 	* inclhack.def (pthread_incomplete_struct_argument): Add bypass.
+ 	* fixincl.tpl: Remove reference to svn in comment.
+ 	* fixincl.x: Regenerate.
+ 
  2025-08-08  Release Manager
  
  	* GCC 15.2.0 released.
diff -Nrcpad gcc-15.2.0/fixincludes/fixincl.tpl gcc-15.3.0/fixincludes/fixincl.tpl
*** gcc-15.2.0/fixincludes/fixincl.tpl	Fri Aug  8 06:51:39 2025
--- gcc-15.3.0/fixincludes/fixincl.tpl	Fri Jun 12 06:09:05 2026
*************** x=fixincl.x =]
*** 5,11 ****
       (dne "-D" " * " "/* ")
       (dne " * " "/* ") ) =]
   */
! /* DO NOT SVN-MERGE THIS FILE, EITHER [=
     (define re-ct 0) (define max-mach 0) (define ct 0)
     (define HACK "") (define Hack "")    (define tmp "") 
     (shell "date") =]
--- 5,11 ----
       (dne "-D" " * " "/* ")
       (dne " * " "/* ") ) =]
   */
! /* DO NOT MERGE THIS FILE, EITHER [=
     (define re-ct 0) (define max-mach 0) (define ct 0)
     (define HACK "") (define Hack "")    (define tmp "") 
     (shell "date") =]
diff -Nrcpad gcc-15.2.0/fixincludes/fixincl.x gcc-15.3.0/fixincludes/fixincl.x
*** gcc-15.2.0/fixincludes/fixincl.x	Fri Aug  8 06:52:54 2025
--- gcc-15.3.0/fixincludes/fixincl.x	Fri Jun 12 06:09:05 2026
***************
*** 2,12 ****
   *
   * DO NOT EDIT THIS FILE   (fixincl.x)
   *
!  * It has been AutoGen-ed  July 10, 2024 at 02:49:05 PM by AutoGen 5.18.16
   * From the definitions    inclhack.def
   * and the template file   fixincl
   */
! /* DO NOT SVN-MERGE THIS FILE, EITHER Wed Jul 10 14:49:05 CEST 2024
   *
   * You must regenerate it.  Use the ./genfixes script.
   *
--- 2,12 ----
   *
   * DO NOT EDIT THIS FILE   (fixincl.x)
   *
!  * It has been AutoGen-ed  August 28, 2025 at 05:57:29 PM by AutoGen 5.18.16
   * From the definitions    inclhack.def
   * and the template file   fixincl
   */
! /* DO NOT MERGE THIS FILE, EITHER Thu Aug 28 17:57:29 BST 2025
   *
   * You must regenerate it.  Use the ./genfixes script.
   *
*************** tSCC zPthread_Incomplete_Struct_Argument
*** 7547,7554 ****
  tSCC zPthread_Incomplete_Struct_ArgumentSelect0[] =
         "struct __jmp_buf_tag";
  
! #define    PTHREAD_INCOMPLETE_STRUCT_ARGUMENT_TEST_CT  1
  static tTestDesc aPthread_Incomplete_Struct_ArgumentTests[] = {
    { TT_EGREP,    zPthread_Incomplete_Struct_ArgumentSelect0, (regex_t*)NULL }, };
  
  /*
--- 7547,7561 ----
  tSCC zPthread_Incomplete_Struct_ArgumentSelect0[] =
         "struct __jmp_buf_tag";
  
! /*
!  *  content bypass pattern - skip fix if pattern found
!  */
! tSCC zPthread_Incomplete_Struct_ArgumentBypass0[] =
!        "bits/types/struct___jmp_buf_tag.h";
! 
! #define    PTHREAD_INCOMPLETE_STRUCT_ARGUMENT_TEST_CT  2
  static tTestDesc aPthread_Incomplete_Struct_ArgumentTests[] = {
+   { TT_NEGREP,   zPthread_Incomplete_Struct_ArgumentBypass0, (regex_t*)NULL },
    { TT_EGREP,    zPthread_Incomplete_Struct_ArgumentSelect0, (regex_t*)NULL }, };
  
  /*
*************** static const char* apzX11_SprintfPatch[]
*** 11202,11208 ****
   *
   *  List of all fixes
   */
! #define REGEX_COUNT          318
  #define MACH_LIST_SIZE_LIMIT 187
  #define FIX_COUNT            274
  
--- 11209,11215 ----
   *
   *  List of all fixes
   */
! #define REGEX_COUNT          319
  #define MACH_LIST_SIZE_LIMIT 187
  #define FIX_COUNT            274
  
diff -Nrcpad gcc-15.2.0/fixincludes/inclhack.def gcc-15.3.0/fixincludes/inclhack.def
*** gcc-15.2.0/fixincludes/inclhack.def	Fri Aug  8 06:51:39 2025
--- gcc-15.3.0/fixincludes/inclhack.def	Fri Jun 12 06:09:05 2026
*************** fix = {
*** 3803,3808 ****
--- 3803,3809 ----
      hackname  = pthread_incomplete_struct_argument;
      files     = pthread.h;
      select    = "struct __jmp_buf_tag";
+     bypass    = "bits/types/struct___jmp_buf_tag.h";
      c_fix     = format;
      c_fix_arg = "%1 *%2%3";
      c_fix_arg = "^(extern int __sigsetjmp \\(struct __jmp_buf_tag) "
diff -Nrcpad gcc-15.2.0/gcc/BASE-VER gcc-15.3.0/gcc/BASE-VER
*** gcc-15.2.0/gcc/BASE-VER	Fri Aug  8 06:52:35 2025
--- gcc-15.3.0/gcc/BASE-VER	Fri Jun 12 06:10:03 2026
***************
*** 1 ****
! 15.2.0
--- 1 ----
! 15.3.0
diff -Nrcpad gcc-15.2.0/gcc/ChangeLog gcc-15.3.0/gcc/ChangeLog
*** gcc-15.2.0/gcc/ChangeLog	Fri Aug  8 06:52:35 2025
--- gcc-15.3.0/gcc/ChangeLog	Fri Jun 12 06:10:03 2026
***************
*** 1,3 ****
--- 1,3290 ----
+ 2026-06-12  Release Manager
+ 
+ 	* GCC 15.3.0 released.
+ 
+ 2026-06-05  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Backported from master:
+ 	2026-04-17  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR middle-end/124900
+ 	* gimple-crc-optimization.cc (crc_optimization::optimize_crc_loop): Do
+ 	not expand to table when compiling for size.
+ 	(class crc_optimization): Update prototype of optimize_crc_loop to
+ 	include loop.
+ 	(crc_optimization::execute): Pass loop to optimize_crc_loop.
+ 
+ 2026-06-05  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Backported from master:
+ 	2026-06-03  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/125431
+ 	* tree-vect-slp-patterns.cc (complex_mul_pattern::matches,
+ 	complex_fms_pattern::matches): Gate on FP contraction.
+ 
+ 2026-06-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-05-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125250
+ 	* tree-ssa-loop-im.cc (execute_sm): For modes that cannot
+ 	transfer bits, _Bool and bitfield accesses force the
+ 	multi-threaded model.
+ 
+ 2026-06-03  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-02-14  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/124086
+ 	* tree-complex.cc (extract_component): Extend the check
+ 	for ssa names for VCE to include invariants.
+ 
+ 2026-06-03  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-02-04  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR middle-end/121661
+ 	* tree-complex.cc (extract_component): Create gimple
+ 	assign statements directly rather than call force_gimple_operand_gsi.
+ 
+ 2026-06-03  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-10-01  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/120560
+ 	* vr-values.cc (range_from_loop_direction): Use wi::ge_p rather
+ 	than wi::gt_p.
+ 
+ 2026-06-03  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	Backported from master:
+ 	2026-04-17  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/120098
+ 	* ipa-polymorphic-call.cc (polymorphic_ctor_dtor_p): Remove
+ 	check for pure/const flags
+ 
+ 2026-06-03  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	Backported from master:
+ 	2026-04-17  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/120098
+ 	* ipa-devirt.cc (odr_type_p): Add no_derived_construction_vtables
+ 	(odr_types_ptr): Move ahead in file.
+ 	(odr_types): Move ahead in file.
+ 	(anonymous_construction_vtable_p): New function.
+ 	(mark_derived_construction_vtables): New function.
+ 	(construction_vtable_hook): New function.
+ 	(type_possibly_instantiated_p): Watch for construction vtables.
+ 
+ 2026-06-03  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	Backported from master:
+ 	2026-06-01  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* config/aarch64/tuning_models/olympus.h (olympus_scalar_issue_info,
+ 	olympus_advsimd_issue_info, olympus_sve_issue_info): Set
+ 	loads_stores_per_cycle to 6.
+ 
+ 2026-06-03  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	Backported from master:
+ 	2026-06-01  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR target/122827
+ 	* config/aarch64/aarch64.cc (aarch64_hard_regno_call_part_clobbered):
+ 	For SVE modes use BYTES_PER_SVE_VECTOR for the per-register size
+ 	rather than GET_MODE_SIZE.
+ 	* config/aarch64/aarch64-early-ra.cc (early_ra::get_allocno_subgroup):
+ 	Classify any SVE mode as FPR_Z.
+ 
+ 2026-06-02  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	Backported from master:
+ 	2025-10-15  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR rtl-optimization/122266
+ 	* combine.cc (struct reg_stat_type): Change types of sign_bit_copies
+ 	and last_set_sign_bit_copies to unsigned short, to avoid overflows
+ 	on TImode (and wider) values.
+ 
+ 2026-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	Revert:
+ 	2025-06-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/120003
+ 	* tree-ssa-threadbackward.cc (back_threader::find_paths_to_names):
+ 	Allow block re-use but do not enlarge the path beyond such a
+ 	re-use.
+ 
+ 2026-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-05-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/125146
+ 	* gimple-fold.cc (fold_stmt_1): Discard stmts in seq
+ 	after failed gimple_simplify as well.
+ 
+ 2026-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-04-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125025
+ 	* tree-ssa-loop-niter.cc (number_of_iterations_ne): Avoid
+ 	negation of most negative signed integer.
+ 	(number_of_iterations_lt): Likewise.
+ 
+ 2026-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-04-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125019
+ 	* tree-vect-loop.cc (vectorizable_recurr): Properly guard
+ 	against hitting last stmt when searching for the insertion
+ 	place.
+ 
+ 2026-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-04-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/124868
+ 	* gimple-ssa-isolate-paths.cc (handle_return_addr_local_phi_arg):
+ 	Do not diagnose returns in blocks not dominated by the PHI.
+ 	(find_implicit_erroneous_behavior): Do two sweeps over PHIs,
+ 	first for NULL dereferences and then for local address returns.
+ 
+ 2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-05-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/125373
+ 	* config/i386/i386.md
+ 	(Convert imul by three, five and nine into lea define_peephole2s): Use
+ 	index_reg_operand instead of register_operand.
+ 
+ 2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-05-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/125079
+ 	* tree-ssa-strlen.cc (get_string_length): Transform
+ 	__strcat_chk (x, y, z) when we need strlen (x) afterwards into
+ 	l1 = strlen (x); l = __stpcpy_chk (x + l1, y, z - l1) - x;
+ 	where l is the strlen (x), instead of using z as last __stpcpy_chk
+ 	argument.
+ 
+ 2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-04-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/125039
+ 	* range-op-float.cc (operator_not_equal::fold_range): Call
+ 	empty_range_varying when not calling frelop_early_resolve.
+ 
+ 2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-04-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124133
+ 	* config/rs6000/rs6000-c.cc (c_fold_convert): New function.
+ 	(c_fold_build2_loc): Likewise.
+ 	(fully_fold_convert): Use c_fold_convert instead of fold_convert.
+ 	(altivec_build_resolved_builtin): Likewise.  Use c_fold_build2_loc
+ 	instead of fold_build2.
+ 	(resolve_vec_mul, resolve_vec_adde_sube, resolve_vec_addec_subec):
+ 	Use c_fold_build2_loc instead of fold_build2_loc.
+ 	(resolve_vec_splats, resolve_vec_extract): Use c_fold_convert instead
+ 	of fold_convert.
+ 	(resolve_vec_insert): Use c_fold_build2_loc instead of fold_build2.
+ 	(altivec_resolve_overloaded_builtin): Use c_fold_convert instead
+ 	of fold_convert.
+ 
+ 2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-04-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124892
+ 	* config/i386/i386.md (clz<mode>2_lzcnt_nf,
+ 	<lt_zcnt>_<mode>_nf, popcount<mode>2_nf): Emit explicit
+ 	set of (match_dup 0) to (const_int 0) without flags clobber instead of
+ 	using ix86_expand_clear.
+ 
+ 2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-04-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/124891
+ 	* tree-ssa-propagate.cc
+ 	(substitute_and_fold_dom_walker::before_dom_children): Call update_stmt
+ 	in the did_replace case before calling fold_stmt.
+ 
+ 2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-04-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/124826
+ 	* gimple-lower-bitint.cc (bitint_large_huge::handle_load): Look through
+ 	BIT_FIELD_REF with zero bit offset.
+ 
+ 2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-04-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/124754
+ 	* tree-ssa-strlen.cc (strlen_pass::handle_builtin_strcpy): Make
+ 	sure both get_stridx calls are done before first get_strinfo call.
+ 	(strlen_pass::handle_builtin_memcpy): Likewise.
+ 	(strlen_pass::handle_builtin_strcat): Likewise.
+ 
+ 2026-06-01  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.cc (pa_trampoline_init): Rework to use
+ 	clear_cache pattern.
+ 	* config/pa/pa.md (dcacheflush): Use "<<" condition instead
+ 	of "<<=".
+ 	(icacheflush): Remove.
+ 	(icacheflush1, icacheflush2, icacheflush3): New flush patterns
+ 	for PA 1.x targets, PA 2.0 targets, and PA 1.x no space
+ 	register targets.
+ 	(clear_cache): Rework to flush data and instruction caches.
+ 	Skip flush if the start address is greater than or equal to
+ 	the end address.  Don't align the end address to a cacheline
+ 	boundary.  Handle instruction flushes for PA 1.x targets,
+ 	PA 2.0 targets, and PA 1.x no space register targets.
+ 
+ 2026-06-01  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	Backported from master:
+ 	2026-05-19  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	PR target/124870
+ 	* config/arm/arm-mve-builtins-base.cc (vstrq_scatter_base_impl)
+ 	(vldrq_gather_base_impl): Fix call_properties.
+ 
+ 2026-05-27  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	Backported from master:
+ 	2026-05-27  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/x86-tune.def (X86_TUNE_USE_GATHER_2PARTS): Disable
+ 	for m_DIAMONDRAPIDS.
+ 	(X86_TUNE_USE_GATHER_4PARTS): Likewise.
+ 
+ 2026-05-25  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2026-05-25  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/125409
+ 	* config/avr/avr-fixed.md (FIXED_A, FIXED_B): Add PSI to iterators.
+ 
+ 2026-05-20  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	Backported from master:
+ 	2026-05-08  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR target/125049
+ 	* config/loongarch/predicates.md (ssp_operand): New
+ 	define_predicate.
+ 	(ssp_normal_operand): New define_predicate.
+ 	* config/loongarch/constraints.md (ZE): New define_constraint.
+ 	(ZF): New define_constraint.
+ 	* config/loongarch/loongarch.md (UNSPEC_SSP): New unspec.
+ 	(cbranch4): Add "@" to create gen_cbranch4(machine_mode, ...).
+ 	(@stack_protect_combined_set_normal_<mode>): New define_insn.
+ 	(@stack_protect_combined_set_extreme_<mode>): New define_insn.
+ 	(@stack_protect_combined_test_internal_<mode>): New define_insn.
+ 	(stack_protect_combined_set): New define_expand.
+ 	(stack_protect_combined_test): New define_expand.
+ 	* config/loongarch/loongarch-protos.h
+ 	(loongarch_output_asm_load_canary): Declare.
+ 	* config/loongarch/loongarch.cc (loongarch_print_operand): Allow
+ 	'v' to print d/w for DImode/SImode.
+ 	(loongarch_output_asm_load_canary): Implement.
+ 
+ 2026-05-19  Andi Kleen  <ak@gcc.gnu.org>
+ 
+ 	PR target/125351
+ 	* config/i386/i386.md: Use alternative to handle masm ptwrite
+ 	syntax.
+ 
+ 2026-05-16  Gopi Kumar Bulusu  <gopi@sankhya.com>
+ 
+ 	PR target/103383
+ 	* config/microblaze/microblaze.md: bswaphi2: (set_attr length 8)
+ 
+ 2026-05-14  Andi Kleen  <ak@gcc.gnu.org>
+ 
+ 	PR target/124316
+ 	* config/i386/i386.md (ptwrite): Add explicit mode to
+ 	instruction.
+ 
+ 2026-05-14  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2026-05-14  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/125194
+ 	* config/avr/avr.cc (avr_no_call_main_p): Remove variable...
+ 	(avr_file_end): ...and code that uses it.
+ 	(avr_insert_attributes): Same.  Add "used" to main attributes
+ 	when -mno-call-main.
+ 	* config/avr/gen-avr-mmcu-specs.cc (print_mcu): Emit code
+ 	for link_no_call_main specs.
+ 	* config/avr/specs.h (LINK_SPEC): Add %(link_no_call_main).
+ 
+ 2026-05-03  Collin Funk  <collin.funk1@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-05-03  Collin Funk  <collin.funk1@gmail.com>
+ 
+ 	* glimits.h (__STDC_VERSION_LIMITS_H__): Only define the macro
+ 	if it was not already defined.
+ 
+ 2026-04-30  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2026-04-14  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/123102
+ 	* config/arm/arm.md (*cmp_ite0): Apply stricter checks on the
+ 	comparison mode.
+ 	(*cmp_ite1, *cmp_and, *cmp_ior): Likewise.
+ 
+ 2026-04-29  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2026-04-15  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/122976
+ 	* tree-sra.cc (path_comparable_for_same_access): Return false if the
+ 	base is a MEM_REF with a different underlying type.
+ 
+ 2026-04-29  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2026-04-14  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/124777
+ 	* ipa-cp.h (ipacp_value_safe_for_type): Declare.
+ 	* ipa-cp.cc (ipacp_value_safe_for_type): Make public.
+ 	* ipa-prop.cc (ipa_set_jf_cst_copy): Fix comment.
+ 	(ipa_convert_prop_cst_jf): New function.
+ 	(update_jump_functions_after_inlining): Handle the constant to
+ 	pass-through case by calling ipa_convert_prop_cst_jf.
+ 
+ 2026-04-29  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2026-04-22  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/124933
+ 	* config/arm/constraints.md (Uj): Allow offset addressing for
+ 	all targets, only allow Neon addressing when we have both Neon
+ 	and FP16INST.
+ 	* config/arm/vfp.md (mov<mode>_vfp_<mode>16): Only use vld1/vst1
+ 	when the pattern needs address write-back.
+ 
+ 2026-04-27  Surya Kumari Jangala  <jskumari@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2025-12-14  Surya Kumari Jangala  <jskumari@linux.ibm.com>
+ 
+ 	PR rtl-optimization/122274
+ 	* regcprop.cc (value_data_entry): New field.
+ 	(kill_value_one_regno): Update field.
+ 	(init_value_data): Initialize field.
+ 	(kill_set_value_data): New field.
+ 	(kill_set_value): Update field.
+ 	(kill_autoinc_value): Likewise.
+ 	(copy_value): New parameter. Update field.
+ 	(incompatible_frame_status): New function.
+ 	(find_oldest_value_reg): New parameter. Compare frame relatedness of
+ 	insn and propagated value.
+ 	(replace_oldest_value_reg): Pass additional parameter to
+ 	find_oldest_value_reg().
+ 	(copyprop_hardreg_forward_1): Pass additional parameter to
+ 	find_oldest_value_reg(). Compare frame relatedness of insn and
+ 	propagated value. Call copy_value() with additional parameter.
+ 
+ 2026-04-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-12-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/123002
+ 	* tree-vectorizer.h (supportable_widening_operation): Remove
+ 	vinfo and stmt_info parameters, add flag to indicate whether
+ 	the context would allow OP_{EVEN,ODD}.
+ 	* tree-vect-patterns.cc (vect_recog_abd_pattern): Adjust
+ 	and pass false.
+ 	(vect_recog_widen_op_pattern): Likewise.
+ 	(vect_recog_widen_abd_pattern): Likewise.
+ 	* tree-vect-stmts.cc (vectorizable_conversion): Move
+ 	even/odd validity check here, from supportable_widening_operation.
+ 	Adjust it to be conservative.
+ 	(supportable_widening_operation): Get flag whether even/odd
+ 	is OK to use and remove then unused parameters and code.
+ 
+ 2026-04-19  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-04-14  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/124876
+ 	* config/i386/i386.cc (ix86_zero_call_used_regs): Zero ZMM16-31
+ 	if needed.
+ 
+ 2026-04-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-04-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/124802
+ 	* tree-vect-slp-patterns.cc (vect_match_expression_p): Fail
+ 	for SLP_TREE_PERMUTE_P.
+ 
+ 2026-04-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-03-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/124677
+ 	* tree-vect-loop.cc (vectorizable_recurr): Skip vector
+ 	stmts for the def.
+ 
+ 2026-04-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-03-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/124644
+ 	* dwarf2out.cc (dwarf2out_abstract_function): Only
+ 	add DW_AT_artificial if the decl isn't DECL_ARTIFICIAL.
+ 
+ 2026-04-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-03-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/124555
+ 	* match.pd ((A - B) >=/> 0 ? (A - B) : (B - A) -> abs (A - B)):
+ 	Guard the vector case with target_supports_op_p checks.
+ 	((A - B) <=/< 0 ? (A - B) : (B - A) -> -abs (A - B)): Likewise.
+ 	((type)A >=/> 0 ? A : -A -> abs (A)): Likewise.
+ 	((type)A <=/< 0 ? A : -A -> -abs (A)): Likewise.
+ 
+ 2026-04-14  Jan Hubicka  <jh@suse.cz>
+ 
+ 	Backported from master:
+ 	2026-03-10  Jan Hubicka  <jh@suse.cz>
+ 		    Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/120987
+ 	* ipa-modref.cc (ipa_merge_modref_summary_after_inlining): Mask
+ 	off non const/pure/novops related flags when combining of outer
+ 	functions.
+ 
+ 2026-04-13  Vineet Gupta  <vineet.gupta@linux.dev>
+ 
+ 	PR target/124670
+ 	* config/bpf/bpf.md (zero_extendsidi2): Use 'W' in asm template.
+ 
+ 2026-04-13  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2026-03-11  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/123271
+ 	* config/arm/arm.md (subvsi3_intmin): Renamed to ...
+ 	(sub_cmpVsi3_intmin): ... this.
+ 	(subvsi3): Renamed to ...
+ 	(sub_cmpVsi3): ... this.
+ 	(subvsi3_imm1): Renamed to ...
+ 	(sub_cmpVsi3_imm1): ... this.
+ 	(usubvsi3_borrow): Renamed to ...
+ 	(usub_cmpVsi3_borrow): ... this.
+ 	(usubvsi3_borrow_imm): Renamed to ...
+ 	(usub_cmpVsi3_borrow_imm): ... this.
+ 	(subvsi3_borrow): Renamed to ...
+ 	(sub_cmpVsi3_borrow): ... this.
+ 	(subvsi3_borrow_imm): Renamed to ...
+ 	(sub_cmpVsi3_borrow_imm): ... this.
+ 
+ 2026-04-13  Hu, Lin1  <lin1.hu@intel.com>
+ 
+ 	PR target/124710
+ 	* config/i386/sse.md (iptrps2qq): New mode attribute for
+ 	ps2qq Intel syntax memory operand size override.
+ 	(avx10_2_vcvttps2<sat_cvt_sign_prefix>qqs<mode><mask_name><round_saeonly_name>):
+ 	Use %<iptrps2qq>1 in Intel syntax to emit qword ptr for V2DI (128-bit)
+ 	memory operands.
+ 	(avx10_2_vcvttsd2<sat_cvt_sign_prefix>sis<mode><round_saeonly_name>):
+ 	Use %q1 in Intel syntax to emit qword ptr for scalar double memory
+ 	operands.
+ 	(avx10_2_vcvttss2<sat_cvt_sign_prefix>sis<mode><round_saeonly_name>):
+ 	Use %k1 in Intel syntax to emit dword ptr for scalar single memory
+ 	operands.
+ 
+ 2026-04-09  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	Backported from master:
+ 	2026-04-09  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR target/105192
+ 	* ifcvt.cc (find_if_header): Don't attempt to use ctrap expander
+ 	after reload.
+ 
+ 2026-04-07  Robin Dapp  <rdapp@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-04-07  Robin Dapp  <rdapp@oss.qualcomm.com>
+ 
+ 	PR target/124613
+ 	* config/riscv/riscv-vector-builtins.cc (rvv_switcher::rvv_switcher):
+ 	Add riscv_registering_builtins.
+ 	(rvv_switcher::~rvv_switcher): Set riscv_registering_builtins to
+ 	false.
+ 	* config/riscv/riscv.cc (riscv_vector_mode_supported_p): Use
+ 	riscv_registering_builtins.
+ 	* config/riscv/riscv.h: Declare.
+ 
+ 2026-04-01  Wu Haotian  <rigoligo03@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-03-31  Wu Haotian  <rigoligo03@gmail.com>
+ 
+ 	* config.gcc: removed linux.h and t-linux for loongarch*-*-elf* targets
+ 
+ 2026-03-31  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* tree-ssa-dse.cc (compute_trims): Bail out if ref->size is not
+ 	byte aligned either.
+ 
+ 2026-03-30  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/123017
+ 	* config/aarch64/aarch64-protos.h (struct cpu_branch_cost): Add
+ 	br_mispredict_factor.
+ 	* config/aarch64/aarch64.cc (aarch64_max_noce_ifcvt_seq_cost,
+ 	aarch64_noce_conversion_profitable_p,
+ 	TARGET_MAX_NOCE_IFCVT_SEQ_COST,
+ 	TARGET_NOCE_CONVERSION_PROFITABLE_P): New.
+ 	* config/aarch64/tuning_models/generic.h (generic_branch_cost): Add
+ 	br_mispredict_factor.
+ 	* config/aarch64/tuning_models/generic_armv8_a.h: Remove
+ 	generic_armv8_a_branch_cost and use generic_branch_cost.
+ 
+ 2026-03-29  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-03-29  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	PR target/124674
+ 	* config/riscv/riscv-modes.def: Create OImode.
+ 
+ 2026-03-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-03-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/124627
+ 	* tree-inline.cc (copy_debug_stmts): Only copy debug
+ 	stmts that are still in the IL.
+ 
+ 2026-03-17  Alice Carlotti  <alice.carlotti@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve2.md (@aarch64_pred_revd<mode>):
+ 	Remove movprfx alternative.
+ 	(@cond_revd<mode>): Likewise.
+ 
+ 2026-03-17  Robin Dapp  <rdapp@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-03-07  Robin Dapp  <rdapp@oss.qualcomm.com>
+ 
+ 	PR rtl-optimization/121649
+ 	* cse.cc (find_sets_in_insn):  Only use non-reg vec_select
+ 	simplifications.
+ 
+ 2026-03-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-01-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/123573
+ 	* fold-const.cc (fold_vec_perm): Actually check, not assert,
+ 	that input and output vector element numbers agree.
+ 	* match.pd (vec_perm @0 @1 @2): Make sure element numbers
+ 	are the same when folding to an input vector and wrap that
+ 	inside a VIEW_CONVERT_EXPR.
+ 
+ 2026-03-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-01-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/123175
+ 	* match.pd (vec_perm @0 @1 @2): Fixup for inputs having a
+ 	different number of elements than the result.
+ 	* tree-vect-generic.cc (lower_vec_perm): Likewise.
+ 
+ 2026-03-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/124132
+ 	* tree-ssa-loop-split.cc (compute_new_first_bound): Fix
+ 	bound difference computation.
+ 
+ 2026-03-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/124130
+ 	* tree-inline.cc (copy_edges_for_bb): Fixup noreturn calls
+ 	with abnormal edge source.
+ 
+ 2026-03-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-01-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/123596
+ 	* tree-eh.cc (sink_clobbers): Create a virtual PHI when
+ 	one is required but not present, queuing arguments
+ 	for renaming.
+ 
+ 2026-03-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-01-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/123298
+ 	* tree-ssa-alias.h (get_continuation_for_phi): Take a gphi *,
+ 	add is_backedge hook argument.
+ 	(walk_non_aliased_vuses): Add is_backedge hook argument.
+ 	* tree-ssa-alias.cc (maybe_skip_until): Adjust.
+ 	(get_continuation_for_phi): Use new hook to classify an
+ 	edge into the PHI as backedge.
+ 	(walk_non_aliased_vuses): Adjust.
+ 	* gimple-lower-bitint.cc (bitint_dom_walker::before_dom_children):
+ 	Likewise.
+ 	* ipa-prop.cc (determine_known_aggregate_parts): Likewise.
+ 	* tree-ssa-scopedtables.cc (avail_exprs_stack::lookup_avail_expr):
+ 	Likewise.
+ 	* tree-ssa-pre.cc (translate_vuse_through_block): Likewise.
+ 	* tree-ssa-sccvn.cc (vn_bb_to_rpo): Make BB to RPO order
+ 	mapping accessible from new hook.
+ 	(do_rpo_vn_1): Likewise.
+ 	(vn_is_backedge): New hook to classify edge.
+ 	(vn_reference_lookup_pieces): Adjust.
+ 	(vn_reference_lookup): Likewise.
+ 
+ 2026-03-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-01-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/123061
+ 	PR tree-optimization/123636
+ 	* tree-ssa-loop-im.cc (fill_always_executed_in_1): Change
+ 	outer-to-inner to inner-to-outer iteration.  Update inner
+ 	loop state only when always executed in an immediately
+ 	nested loop.
+ 
+ 2026-03-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-01-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122537
+ 	* tree-ssa-loop-niter.cc (number_of_iterations_lt_to_ne): Register
+ 	may_be_zero condition when the IV may overflow.
+ 
+ 2026-03-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-02-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121726
+ 	* tree-sra.cc (build_ref_for_offset): Add force_ref_all
+ 	parameter and use ptr_type_node as alias pointer type in
+ 	that case.
+ 	(build_ref_for_model): Add force_ref_all parameter and
+ 	pass it through, forcing build_ref_for_offset.
+ 	(generate_subtree_copies): Likewise.
+ 	(sra_modify_call_arg): Force ref-all accesses.
+ 
+ 2026-03-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-02-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/123416
+ 	* ipa-modref.cc (ipa_merge_modref_summary_after_inlining):
+ 	Fix typo in condtion for load merging when no callee summary.
+ 
+ 2026-03-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-01-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/116747
+ 	* tree-ssa-phiopt.cc (cond_if_else_store_replacement): Avoid
+ 	duplicate stmts in the set of store pairs to process.
+ 
+ 2026-03-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-01-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/111036
+ 	* match.pd (__builtin_constant_p ((T)x)): Strip nop-conversions
+ 	from __builtin_constant_p arguments.
+ 
+ 2026-03-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124461
+ 	* config/i386/i386.md (movrs<mode>): Use <imodesuffix> only for
+ 	-masm=att, not for -masm=intel.
+ 
+ 2026-03-14  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR target/123457
+ 	* config/aarch64/aarch64-sve-builtins.cc (struct registered_function_hasher):
+ 	Change base class to ggc_ptr_hash.
+ 	(initial_indexes): Mark with GTY.
+ 	(function_table): Likewise.
+ 	(handle_arm_sve_h): Allocate function_table from ggc instead of heap.
+ 
+ 2026-03-14  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR target/124126
+ 	* config/aarch64/aarch64-builtins.cc (aarch64_init_ls64_builtins_types): Copy
+ 	the array type before setting the mode.
+ 
+ 2026-03-14  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR target/123285
+ 	* config/aarch64/aarch64-early-ra.cc (early_ra::form_chains): Process clobbers
+ 	and ABI clobbers before starting to form the chain.
+ 
+ 2026-03-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-03-12  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR target/124409
+ 	* doc/install.texi: Increment the required binutils for
+ 	riscv to 2.40.
+ 
+ 2026-03-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-03-04  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/119568
+ 	* tree-ssa-math-opts.cc (convert_plusminus_to_widen): Reject different
+ 	mode classes.
+ 
+ 2026-03-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-02-20  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/121103
+ 	* gimple-fold.cc (gimple_fold_call): Don't simplify
+ 	noreturn functions.
+ 	* tree-ssa-dse.cc (dse_optimize_stmt): Don't handle
+ 	calls to noreturn functions.
+ 
+ 2026-03-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-01-30  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR rtl-optimization/122170
+ 	* ifcvt.cc (noce_can_force_operand): Don't only check if
+ 	there is an optab for the code check the entry for the
+ 	mode is non-null. Handle non integral div by checking
+ 	optab like force_operand does.
+ 
+ 2026-03-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-02-02  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR rtl-optimization/123294
+ 	* ifcvt.cc (noce_emit_store_flag): Reject modes
+ 	greater than MAX_FIXED_MODE_SIZE.
+ 
+ 2026-03-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-01-18  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/123645
+ 	* tree-ssa-phiopt.cc (cond_removal_in_builtin_zero_pattern): Rewrite
+ 	the canonicalization of the args code based on e1/e2 being edges into
+ 	the join block.
+ 
+ 2026-03-10  Robin Dapp  <rdapp@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-02-24  Robin Dapp  <rdapp@oss.qualcomm.com>
+ 
+ 	PR target/124147
+ 	* config/riscv/autovec.md: Work around fractional-LMUL modes for
+ 	TARGET_XTHEADVECTOR.
+ 	* config/riscv/riscv-protos.h (get_m1_mode): Export.
+ 	* config/riscv/riscv-v.cc (get_m1_mode): Allow to get a VLS m1
+ 	vector.
+ 
+ 2026-03-10  Robin Dapp  <rdapp@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-02-26  Robin Dapp  <rdapp@oss.qualcomm.com>
+ 
+ 	PR target/122448
+ 	* config/riscv/riscv-vsetvl.cc (compute_reaching_defintion):
+ 	Rename...
+ 	(compute_reaching_definition): ...To this.
+ 	(pre_vsetvl::compute_vsetvl_def_data):  Compute reaching
+ 	definitions for vsetvl VL -> vsetvl AVL.
+ 	(pre_vsetvl::compute_transparent): Include VL uses.
+ 	(pre_vsetvl::fuse_local_vsetvl_info): Initialize m_reg_use_loc.
+ 	(pre_vsetvl::earliest_fuse_vsetvl_info): Don't hoist if any
+ 	successor would use VL.
+ 
+ 2026-03-09  Kalvis Duckmanton  <kalvisd@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-02-14  Kalvis Duckmanton  <kalvisd@gmail.com>
+ 
+ 	PR target/112400
+ 	* config/vax/vax.md (casesi1): Wrap naked operand 1 with a USE
+ 	where used with the insn split to.
+ 	(*casesi1): Likewise naked incoming operand 1.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/124135
+ 	* tree-inline.cc (expand_call_inline): If both gimple_call_lhs (stmt)
+ 	and use_retvar aren't gimple regs but have gimple reg type, use
+ 	separate load of use_retva into SSA_NAME and then store of it
+ 	into gimple_call_lhs (stmt).
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/124358
+ 	* match.pd ((ptr) (x p+ y) p+ z -> (ptr) (x p+ (y + z))): Simplify
+ 	into (ptr) x p+ (y + z) instead.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124349
+ 	* config/i386/sse.md (iptrssebvec_2): New define_mode_attr.
+ 	(cvthf82ph<mode><mask_name>): Use it for -masm=intel input
+ 	operand.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124367
+ 	* config/i386/sse.md (*andnot<mode>3): Use 0x44 rather than $0x44
+ 	for -masm=intel.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124366
+ 	* config/i386/i386.md (@wrss<mode>, @wruss<mode>): Swap operand
+ 	order for -masm=intel.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124341
+ 	* config/i386/sse.md (vcvt<convertfp8_pack><mode><mask_name>): Use
+ 	<mask_operand3> rather than <mask_operand2> for -masm=intel.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124349
+ 	* config/i386/sse.md (avx10_2_comisbf16_v8bf): Use %w1 instead of %1
+ 	for -masm=intel.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124315
+ 	* config/i386/sse.md (avx512f_vmfmadd_<mode>_mask3<round_name>,
+ 	avx512f_vmfmsub_<mode>_mask3<round_name>,
+ 	avx512f_vmfnmadd_<mode>_mask3<round_name>,
+ 	avx512f_vmfnmsub_<mode>_mask3<round_name>): Use %<iptr>1 instead of
+ 	%<iptr>3 in -masm=intel syntax.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124335
+ 	* config/i386/sse.md (*avx512f_load<mode>_mask): Use %{%3%} instead of
+ 	%{3%} for -masm=intel syntax.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124294
+ 	* config/i386/sse.md (avx512fp16_mov<mode>): Fix ordering of operands
+ 	for -masm=intel for the avx10_2 alternative.  Fix up indentation in
+ 	the insn condition.
+ 	(vec_set<mode>_0): Fix comment typo, higer -> higher.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-02-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124138
+ 	* config/i386/i386.cc (avx_vpermilp_parallel): Verify
+ 	ipar[2] and ipar[3] aren't larger than 3.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-02-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/124056
+ 	* cfgexpand.cc (expand_asm_stmt): If after_md_seq is non-NULL, emit
+ 	it at the start of after_rtl_seq instead of after fallthru_label.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-02-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/116600
+ 	PR middle-end/123386
+ 	* cfgrtl.cc (force_nonfallthru_and_redirect): Don't do any
+ 	asm goto adjustments early, only note in asm_goto_edge if
+ 	any labels point originally to e->dest head.  After jumpblock
+ 	creation don't add an extra edge for asm_goto_edge, instead
+ 	adjust those labels pointing to former e->dest head to point
+ 	to jumpblock instead.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-02-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/123672
+ 	* tree-ssa-forwprop.cc (recognise_vec_perm_simplify_seq): Use std::swap
+ 	instead of fetching gimple_assign_rhs{1,2} again.  Change type of lanes
+ 	vector from auto_vec<unsigned int> to auto_vec<bool> and store true
+ 	instead of 1 into it.  Fix comment typo and formatting fix.
+ 	(can_blend_vec_perm_simplify_seqs_p): Put end of comment on the same
+ 	line as the last sentence in it.
+ 	(calc_perm_vec_perm_simplify_seqs): Change lane_assignment type from
+ 	auto_vec<int> to auto_vec<unsigned> and store 2 + l_orig into it
+ 	instead of true.  Fix comment typo and formatting fix.  Set use_seq1
+ 	to line_assignment[i] < 2 instead of line_assignment[i] != 2.  Replace
+ 	bogus computation of index for !use_seq with using
+ 	line_assignment[i] - 2.  Set l1 to l1 % nelts and similarly for l2.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-02-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/101312
+ 	* alias.cc (get_alias_set): Allow TYPE_CANONICAL (mv) to be
+ 	not its own TYPE_MAIN_VARIANT, as long as its TYPE_MAIN_VARIANT
+ 	has TYPE_CANONICAL equal to itself.
+ 	* tree.cc (verify_type): Likewise.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-02-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/123978
+ 	* range-op.h (OP_WIDEN_MULT_SIGNED_UNSIGNED): Define.
+ 	(OP_WIDEN_PLUS_SIGNED, OP_WIDEN_PLUS_UNSIGNED,
+ 	RANGE_OP_TABLE_SIZE): Renumber.
+ 	* gimple-range-op.cc (imple_range_op_handler::maybe_non_standard):
+ 	Use 3 different classes instead of 2 for WIDEN_MULT_EXPR, one
+ 	for both operands signed, one for both operands unsigned and
+ 	one for operands with different signedness.  In the last case
+ 	canonicalize to first operand signed second unsigned.
+ 	* range-op.cc (operator_widen_mult_signed::wi_fold): Use
+ 	TYPE_PRECISION (type) rather than wi::get_precision (whatever) * 2,
+ 	use SIGNED for all wide_int::from calls.
+ 	(operator_widen_mult_unsigned::wi_fold): Similarly but use UNSIGNED
+ 	for all wide_int::from calls.
+ 	(class operator_widen_mult_signed_unsigned): New type.
+ 	(operator_widen_mult_signed_unsigned::wi_fold): Define.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-02-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/123818
+ 	* tree.cc (simple_cst_equal) <case CONSTRUCTOR>: Return -1 if some
+ 	recursive call returns -1.  Also compare indexes.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-02-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/122689
+ 	* gimple-lower-bitint.cc (gimple_lower_bitint): For the PHI handling
+ 	if min_prec == prec, break after emitting assignment from c.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-02-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/121104
+ 	* tree-ssa-math-opts.cc (match_uaddc_usubc): Punt if
+ 	lhs of ovf1 or ovf2 doesn't have element type compatible with type.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/123864
+ 	* match.pd (__builtin_mul_overflow_p (x, cst, (stype) 0) ->
+ 	x > stype_max / cst || x < stype_min / cst): Only check
+ 	integer_minus_onep for signed types.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/123790
+ 	* fold-const.cc (fold_convert_const): Handle conversion of
+ 	integer_zerop to NULLPTR_TYPE.
+ 	(fold_convert_loc): Likewise.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/123876
+ 	* omp-low.cc (diagnose_sb_2): Handle GIMPLE_ASM.
+ 
+ 2026-03-05  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	Backported from master:
+ 	2026-03-05  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR target/123807
+ 	PR middle-end/124250
+ 	* config/loongarch/loongarch.cc
+ 	(loongarch_expand_vector_init_same): Revert r16-7163 change.
+ 
+ 2026-03-04  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2026-02-20  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/122856
+ 	* ipa-cp.cc (self_recursive_pass_through_p): Test jump function type first.
+ 	(self_recursive_ancestor_p): New function.
+ 	(find_scalar_values_for_callers_subset): Test also for self-recursive
+ 	ancestor jump functions.
+ 	(push_agg_values_for_index_from_edge): Likewise.
+ 
+ 2026-03-04  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	Backported from master:
+ 	2026-02-26  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR middle-end/124250
+ 	PR target/123807
+ 	* optabs.cc (expand_binop): Extend the shift amount if it's
+ 	narrower than the element of the shifted vector.
+ 
+ 2026-02-26  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	Revert:
+ 	2025-11-08  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	PR target/122097
+ 	* config/loongarch/loongarch.cc
+ 	(loongarch_const_vector_same_bytes_p): Add processing for
+ 	floating-point vector data.
+ 
+ 2026-02-26  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	Backported from master:
+ 	2026-02-03  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* config/loongarch/predicates.md (const_vector_neg_fp_operand):
+ 	New define_predicate.
+ 	(reg_or_vector_neg_fp_operand): New define_predicate.
+ 	* config/loongarch/lasx.md (copysign<mode>3): Remove.
+ 	(xorsign<mode>3): Remove.
+ 	* config/loongarch/lsx.md (copysign<mode>3): Remove.
+ 	(@xorsign<mode>3): Remove.
+ 	* config/loongarch/simd.md (copysign<mode>3): New define_expand.
+ 	(@xorsign<mode>3): New define_expand.
+ 	(and<mode>3): Only allow IVEC instead of ALLVEC.
+ 	(ior<mode>3): Likewise.
+ 	(xor<mode>3): Likewise.
+ 	* config/loongarch/loongarch.cc (loongarch_print_operand): No
+ 	longer allow floating-point vector constants for %V.
+ 	(loongarch_const_vector_bitimm_set_p): Always return false for
+ 	floating-point vector constants.
+ 	(loongarch_build_signbit_mask): Factor out force_reg.
+ 	(loongarch_emit_swrsqrtsf): Use integer vector mode instead of
+ 	floating-point vector mode when masking zero inputs.
+ 
+ 2026-02-25  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	Backported from master:
+ 	2025-06-02  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* doc/sourcebuild.texi (tls_link): Add documentation.
+ 
+ 2026-02-22  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-02-22  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/120974
+ 	* gcc.cc (join_spec_func): Escape special characters.
+ 
+ 2026-02-19  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/121571
+ 	* lra-constraints.cc (process_alt_operands): Reprocess asm insn
+ 	when there are no enough regs for the asm-insn.
+ 
+ 2026-02-18  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2026-02-17  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/124134
+ 	* config/arm/arm.md (movsfcc): FAIL if using restricted IT
+ 	blocks and we lack VSEL.
+ 	(movdfcc): Likewise.
+ 
+ 2026-02-17  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	Backported from master:
+ 	2026-01-30  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR target/123206
+ 	* config/aarch64/aarch64-builtins.cc (struct aarch64_pragma_builtins_data):
+ 	Declare array as CONSTEXPR.
+ 	* config/aarch64/aarch64-simd-pragma-builtins.def: Update
+ 	incorrect uses of TARGET_SIMD to use AARCH64_FL_SIMD instead.
+ 
+ 2026-02-16  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2026-02-09  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/117217
+ 	* tree-sra.cc (propagate_subaccesses_from_rhs): Do not propagate
+ 	bit-field children.
+ 	(propagate_subaccesses_from_lhs): Likewise.
+ 
+ 2026-02-16  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2026-02-06  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/106260
+ 	* ipa-cp.cc (initialize_node_lattices): Replace assert that there are
+ 	callers with handling that situation when -fno-toplevel_reorder.
+ 
+ 2026-02-16  Robin Dapp  <rdapp@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-02-05  Robin Dapp  <rdapp@oss.qualcomm.com>
+ 
+ 	PR target/123910
+ 	* config/riscv/riscv-string.cc (riscv_expand_block_move):
+ 	Remove !xtheadvector guard.
+ 	(use_vector_stringop_p): Guard small LMULs.
+ 	(check_vectorise_memory_operation): Ditto.
+ 
+ 2026-02-12  Pengfei Li  <Pengfei.Li2@arm.com>
+ 
+ 	PR middle-end/123447
+ 	* expr.cc (expand_expr_real_1): Increase stack slot alignment
+ 	for STRICT_ALIGNMENT targets.
+ 
+ 2026-02-11  Alice Carlotti  <alice.carlotti@arm.com>
+ 
+ 	PR target/123624
+ 	* config/aarch64/aarch64-protos.h
+ 	(aarch64_use_simple_return_insn_p): New.
+ 	* config/aarch64/aarch64.cc
+ 	(aarch64_use_simple_return_insn_p): New, used...
+ 	* config/aarch64/aarch64.md (simple_return): ...here.
+ 
+ 2026-02-11  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	Backported from master:
+ 	2025-04-25  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	PR rtl-optimization/116479
+ 	* modulo-sched.cc (doloop_register_get): Reject conditions with
+ 	decrements that are not 1.
+ 
+ 2026-02-10  Robin Dapp  <rdapp@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-02-06  Robin Dapp  <rdapp@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/123940
+ 	* tree-ssa-math-opts.cc (convert_mult_to_fma): Check
+ 	multiplication result is an addend.
+ 
+ 2026-02-10  Robin Dapp  <rdapp@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-02-05  Robin Dapp  <rdapp@oss.qualcomm.com>
+ 
+ 	PR target/123870
+ 	PR target/123969
+ 	* config/riscv/vector.md: Add vlds to "no ratio" for
+ 	theadvector.
+ 
+ 2026-02-10  Robin Dapp  <rdapp@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-02-05  Robin Dapp  <rdapp@oss.qualcomm.com>
+ 
+ 	PR target/123971
+ 	* config/riscv/riscv.cc (riscv_vector_mode_supported_any_target_p):
+ 	Remove TARGET_XTHEADVECTOR.
+ 
+ 2026-02-10  Robin Dapp  <rdapp@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-01-29  Robin Dapp  <rdapp@oss.qualcomm.com>
+ 
+ 	PR target/123806
+ 	* config/riscv/riscv-string.cc (expand_rawmemchr): Use unified
+ 	vl_read.
+ 	(expand_strcmp): Ditto.
+ 	* config/riscv/riscv-vector-builtins-bases.cc:
+ 	* config/riscv/riscv-vector-builtins.cc (function_expander::use_fof_load_insn):
+ 	Only emit the store and not the VL read.
+ 	* config/riscv/riscv-vsetvl.cc (get_fof_set_vl_reg): New
+ 	function.
+ 	(init_rtl_ssa): New wrapper.
+ 	(finish_rtl_ssa): Ditto.
+ 	(emit_fof_read_vls): Emit read_vl after each fault-only-first
+ 	load.
+ 	(pass_vsetvl::simple_vsetvl): Call emit_fof_read_vls ().
+ 	(pass_vsetvl::lazy_vsetvl): Ditto.
+ 	* config/riscv/vector-iterators.md: Add read_vl unspec.
+ 	* config/riscv/vector.md (read_vlsi): Unify.
+ 	(@read_vl<mode>): Ditto.
+ 	(read_vldi_zero_extend): Ditto.
+ 	(@pred_fault_load_set_vl<V_VLS:mode><P:mode>): New FoF variant
+ 	that saves VL in a register.
+ 	(@pred_fault_load_set_vl<VT:mode><P:mode>): Ditto.
+ 
+ 2026-02-10  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-01-19  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	PR rtl-optimization/121787
+ 	* config/riscv/riscv-vsetvl.cc (pre_vsetvl): Adjust call to
+ 	loop_optimizer_init to avoid making CFG changes.
+ 
+ 2026-02-10  Robin Dapp  <rdapp@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-01-22  Robin Dapp  <rdapp@oss.qualcomm.com>
+ 
+ 	PR target/122869
+ 	* config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load):
+ 	Remove
+ 	* config/riscv/riscv-vector-builtins.cc (function_expander::use_contiguous_load_insn):
+ 	Use new helper.
+ 	(function_expander::prepare_contiguous_load_insn): New helper.
+ 	(function_expander::use_fof_load_insn): New function to emit FoF
+ 	loads.
+ 	* config/riscv/riscv-vector-builtins.h: Declare new functions.
+ 
+ 2026-02-10  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	Backported from master:
+ 	2026-02-10  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* config/aarch64/tuning_models/olympus.h (olympus_sve_vector_cost):
+ 	Set align_load_cost to 6.
+ 
+ 2026-02-09  LIU Hao  <lh_mouse@126.com>
+ 
+ 	Backported from master:
+ 	2025-05-06  LIU Hao  <lh_mouse@126.com>
+ 
+ 	PR pch/14940
+ 	* config/i386/host-mingw32.cc (mingw32_gt_pch_use_address):
+ 	Replace the loop that attempted to map the PCH only to its
+ 	original address with more adaptive operations
+ 
+ 2026-02-09  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-01-21  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+ 
+ 	PR target/122781
+ 	* config/s390/vector.md: Don't emulate vec_cmpgtu for 128-bit
+ 	integers for VXE3.
+ 
+ 2026-02-06  xiezhiheng  <xiezhiheng@huawei.com>
+ 
+ 	Backported from master:
+ 	2026-02-05  xiezhiheng  <xiezhiheng@huawei.com>
+ 		    liyunfei  <liyunfei33@huawei.com>
+ 
+ 	* config/aarch64/aarch64-cores.def (AARCH64_CORE): Add hip12 core
+ 	* config/aarch64/aarch64-cost-tables.h: Add hip12_extra_costs
+ 	* config/aarch64/aarch64-tune.md: Regenerate
+ 	* config/aarch64/aarch64.cc: Include hip12 tuning model
+ 	* doc/invoke.texi: Document -mcpu=hip12
+ 	* config/aarch64/tuning_models/hip12.h: New file.
+ 
+ 2026-02-06  TorbjÃ¶rn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	* system.h: Avoid redefinition of CONST_CAST2 macro.
+ 
+ 2026-02-05  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	Backported from master:
+ 	2026-01-20  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR target/123584
+ 	* config/aarch64/aarch64-simd.md (aarch64_xarqv2di): Leave zero
+ 	rotate amounts as zero during expansion.
+ 	(*aarch64_xarqv2di_insn): Account for zero rotate amounts.  Print #
+ 	in rotate immediate.
+ 
+ 2026-02-05  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	Backported from master:
+ 	2026-01-28  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	PR target/123779
+ 	* config/i386/sse.md (*sse4_1_<code>v8qiv8hi2<mask_name>_2):
+ 	Rename to ...
+ 	(*sse4_1_<code>v8qiv8hi2_2): ... this, and drop mask conditions.
+ 	(*avx2_<code>v8qiv8si2<mask_name>_2): Rename to ...
+ 	(*avx2_<code>v8qiv8si2_2): ... this, and likewise.
+ 	(*sse4_1_<code>v4qiv4si2<mask_name>_2): Rename to ...
+ 	(*sse4_1_<code>v4qiv4si2_2): ... this, and likewise.
+ 	(*sse4_1_<code>v4hiv4si2<mask_name>_2): Rename to ...
+ 	(*sse4_1_<code>v4hiv4si2_2): ... this, and likewise.
+ 	(*avx2_<code>v4qiv4di2<mask_name>_2): Rename to ...
+ 	(*avx2_<code>v4qiv4di2_2): ... this, and likewise.
+ 	(*avx2_<code>v4hiv4di2<mask_name>_2): Rename to ...
+ 	(*avx2_<code>v4hiv4di2_2): ... this, and likewise.
+ 	(*sse4_1_<code>v2hiv2di2<mask_name>_2): Rename to ...
+ 	(*sse4_1_<code>v2hiv2di2_2): ... this, and likewise.
+ 	(*sse4_1_<code>v2siv2di2<mask_name>_2): Rename to ...
+ 	(*sse4_1_<code>v2siv2di2_2): ... this, and likewise.
+ 	(*avx512f_<code>v8qiv8di2<mask_name>_2): Rename to ...
+ 	(*avx512f_<code>v8qiv8di2_2): ... this.
+ 	(*avx512vl_<code>v8qiv8hi2_mask_2): New define_insn_and_split.
+ 	(*avx512vl_<code>v8qiv8si2_mask_2): Likewise.
+ 	(*avx512vl_<code>v4qiv4si2_mask_2): Likewise.
+ 	(*avx512vl_<code>v4hiv4si2_mask_2): Likewise.
+ 	(*avx512f_<code>v8qiv8di2_mask_2): Likewise.
+ 	(*avx512vl_<code>v4qiv4di2_mask_2): Likewise.
+ 	(*avx512vl_<code>v4hiv4di2_mask_2): Likewise.
+ 	(*avx512vl_<code>v2hiv2di2_mask_2): Likewise.
+ 	(*avx512vl_<code>v2siv2di2_mask_2): Likewise.
+ 
+ 2026-02-03  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	Backported from master:
+ 	2025-10-02  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	PR target/122051
+ 	* config/riscv/predicates.md (pmode_reg_or_uimm5_operand): Implement
+ 	directly rather than using vector_length_operand.
+ 
+ 2026-02-03  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	Backported from master:
+ 	2025-07-09  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	PR target/120642
+ 	* config/riscv/riscv-avlprop.cc (pass_avlprop::execute): Do not do
+ 	constant AVL propagation for xtheadvector.
+ 
+ 2026-02-03  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	PR target/123548
+ 	* config/aarch64/arm_acle.h (__plix): Change arguments to be
+ 	const.
+ 	(__pldx): Change arguments to be const.
+ 
+ 2026-02-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-01-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/123886
+ 	* dwarf2out.cc (sym_off_pair::sym): Remove GTY((skip)).
+ 
+ 2026-02-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-01-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/123794
+ 	* tree-vect-slp.cc (vect_remove_slp_scalar_calls): Unlink
+ 	VOPs for all calls.
+ 
+ 2026-02-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-01-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/123775
+ 	* match.pd ((view_convert (vec_cond ...))): Make sure the
+ 	resulting vec_cond can be expanded.
+ 
+ 2026-02-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-01-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/123729
+ 	* tree-vect-loop.cc (vect_create_epilog_for_reduction): Set
+ 	SSA_NAME_OCCURS_IN_ABNORMAL_PHI if the reduction flows
+ 	across an abnomal edge.
+ 
+ 2026-02-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-01-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-phinodes.h (phi_arg_index_from_use): Use gphi *.
+ 	(phi_arg_edge_from_use): New helper composing
+ 	phi_arg_index_from_use and gimple_phi_arg_edge.
+ 
+ 2026-02-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-01-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/123575
+ 	* match.pd (abs ((T)x) -> absu (x)): For vector type
+ 	arguments require the resulting operation is supported.
+ 
+ 2026-02-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-01-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/123537
+ 	* match.pd (REDUC (@0 & @1) -> @0[I] & @1[I]): Restrict
+ 	allowed conversions.
+ 
+ 2026-02-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-01-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/116296
+ 	* ipa-modref-tree.cc (modref_access_node::contains): Use
+ 	poly_offset_int for the param offset difference and the
+ 	overlap computation.
+ 
+ 2026-02-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-01-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/110043
+ 	* pointer-query.cc (get_offset_range): Fail for integer
+ 	types with precision larger than ptrdiff_type_node.
+ 
+ 2026-02-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-01-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/109410
+ 	* tree-ssa-reassoc.cc (build_and_add_sum): Use
+ 	gsi_start_nondebug_after_labels_bb to look for a possible
+ 	returns-twice call.
+ 
+ 2026-02-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-01-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR rtl-optimization/106859
+ 	* var-tracking.cc (val_store): Dump -1 as UID if setting_insn
+ 	is NULL.
+ 
+ 2026-02-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-01-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/123887
+ 	* match.pd ((a ? x : y) !=/== (b ? x : y)): Make sure
+ 	x and y have no side-effects before evaluating them
+ 	unconditionally.
+ 
+ 2026-02-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-01-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/123887
+ 	* match.pd ((zero_one ==/!= 0) ? .. z <op> y .. -> zero_one * z ..):
+ 	Check evaluating z unconditionally has no side-effects, like
+ 	trapping.
+ 
+ 2026-01-30  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	Backported from master:
+ 	2026-01-30  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/loongarch-ftypes.def: Remove unused type.
+ 
+ 2026-01-30  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	Backported from master:
+ 	2026-01-30  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	PR target/123766
+ 	* config/loongarch/loongarch-builtins.cc
+ 	(loongarch_build_vpointer_type): New function.  Return a type
+ 	for 'volatile void *'.
+ 	(LARCH_ATYPE_VPOINTER): New macro.
+ 	* config/loongarch/loongarch-ftypes.def: Change the pointer
+ 	type of the store class function from CVPOINTER to VPOINTER.
+ 
+ 2026-01-30  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	Backported from master:
+ 	2026-01-30  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	PR target/123807
+ 	* config/loongarch/loongarch.cc
+ 	(loongarch_expand_vector_init_same): When same is MEM and
+ 	GET_MODE(same) != imode, first load the data from memory
+ 	and then process it further.
+ 
+ 2026-01-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/123703
+ 	* builtins.cc (fold_builtin_abs): Return NULL_TREE if type is not
+ 	integral.
+ 
+ 2026-01-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/123736
+ 	* tree-ssa-loop-unswitch.cc (hoist_guard): Guard dump message
+ 	on dump_file && (dump_flags & TDF_DETAILS) condition.
+ 
+ 2026-01-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-01-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/123741
+ 	* tree-vect-stmts.cc (vectorizable_store): Add missing check
+ 	on loop vectorization.
+ 
+ 2026-01-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-01-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/123602
+ 	* tree-ssa-pre.cc (find_or_generate_expression): Do not
+ 	generate references to abnormal SSA names.
+ 
+ 2026-01-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-01-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/123107
+ 	* fold-const.cc (fold_binary_loc): Guard (v >> CST) == { 0, 0.. }
+ 	to v < { 0, 0.. } folding.
+ 
+ 2026-01-23  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	Backported from master:
+ 	2026-01-08  Richard Sandiford  <rdsandiford@googlemail.com>
+ 		    Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122793
+ 	* tree-vect-slp.cc (vect_add_slp_permutation): Document the existing
+ 	identity_offset parameter.  Handle identities that take from the
+ 	second input rather than the first.
+ 
+ 2026-01-23  Avinash Jayakar  <avinashd@linux.ibm.com>
+ 
+ 	PR target/119130
+ 	* config/rs6000/altivec.md (convert_4f32_8f16): Use same operand
+ 	order for both endian format.
+ 
+ 2026-01-23  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	Backported from master:
+ 	2026-01-23  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	* config/i386/sse.md (avx2_vbroadcasti128_<mode>): Constraint
+ 	alternative 0 with jm and add gpr16 attr to avoid egpr usage.
+ 
+ 2026-01-23  Lili Cui  <lili.cui@intel.com>
+ 
+ 	Backported from master:
+ 	2026-01-14  Lili Cui  <lili.cui@intel.com>
+ 
+ 	* config/i386/x86-tune.def (X86_TUNE_ALIGN_TIGHT_LOOPS):
+ 	disable tight loop alignment for m_CORE_ATOM.
+ 
+ 2026-01-22  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2026-01-22  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/123742
+ 	* config/arm/neon.md (*smin<mode>3_neon): Renamed to ...
+ 	(*smin<VDQWH:mode>3_neon): ... this.  Add HFmode support.
+ 	(*smax<mode>3_neon): Renamed to ...
+ 	(*smax<VDQWH:mode>3_neon): ... this.  Add HFmode support.
+ 
+ 2026-01-19  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-16  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/123092
+ 	* lra-constraints.cc (lra_constraints): Push insn on processing
+ 	stack after equivalence substitution.
+ 
+ 2026-01-19  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	Backported from master:
+ 	2026-01-19  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	PR target/117575
+ 	* config/loongarch/lasx.md: Modify the range of operand1.
+ 
+ 2026-01-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/123513
+ 	* tree.cc (valid_new_delete_pair_p): If new_name[3] or delete_name[3]
+ 	is 'I', return false with *pcertain set to false rather than true.
+ 
+ 2026-01-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/123607
+ 	* config/i386/i386.md (movhf_mask): Change constraint on
+ 	match_operand 2's second alternative from 0C to 0.
+ 
+ 2026-01-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/120250
+ 	* combine.cc (recog_for_combine): Don't try to put SET_SRC
+ 	into a constant pool if SET_DEST is pc_rtx.
+ 
+ 2026-01-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/123523
+ 	* simplify-rtx.cc (simplify_const_binary_operation): Use
+ 	DImode for VOIDmode shift and truncation counts if int_mode
+ 	is narrower than HOST_BITS_PER_WIDE_INT rather than
+ 	word_mode if int_mode it is narrower than BITS_PER_WORD.
+ 
+ 2026-01-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/123431
+ 	* gimple-range-op.cc (gimple_range_op_handler::maybe_builtin_call):
+ 	Punt if type-generic builtins with a single argument don't have
+ 	exactly one argument.  For returns_arg punt if call doesn't have
+ 	at least one argument.
+ 
+ 2026-01-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* doc/invoke.texi (-x): Add objc-cpp-output,
+ 	objc++-cpp-output, adascil, adawhy, modula-2, modula-2-cpp-output,
+ 	rust and lto as further possible option arguments.
+ 
+ 2026-01-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/123489
+ 	* config/i386/i386-builtin.def (__builtin_ia32_cvttsd2sis64_round,
+ 	__builtin_ia32_cvttsd2usis64_round, __builtin_ia32_cvttss2sis64_round,
+ 	__builtin_ia32_cvttss2usis64_round): Require OPTION_MASK_ISA_64BIT.
+ 
+ 2026-01-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/111817
+ 	* stmt.cc (parse_input_constraint): For matching construct, goto
+ 	before the loop without changing j instead of break.  Remove comment
+ 	about that problem.
+ 
+ 2026-01-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/119291
+ 	PR rtl-optimization/121773
+ 	* combine.cc (try_combine): Check that SET_DEST (setN) is neither
+ 	modified_between_p nor reg_used_between_p instead of just not
+ 	reg_used_between_p or pc_rtx.
+ 
+ 2026-01-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-06  Jakub Jelinek  <jakub@redhat.com>
+ 		    Marco Falke  <falke.marco@gmail.com>
+ 
+ 	PR tree-optimization/123351
+ 	* tree-object-size.cc (object_sizes_set_temp): Separate calls to
+ 	make_ssa_name to ensure deterministic execution order.
+ 
+ 2026-01-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/123372
+ 	* tree-ssa-math-opts.cc
+ 	(build_saturation_binary_arith_call_and_replace): Pass type of op_0
+ 	rather than type of lhs as second argument to
+ 	direct_internal_fn_supported_p.
+ 
+ 2026-01-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-12-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/123217
+ 	* config/i386/i386-expand.cc (ix86_expand_builtin)
+ 	<case IX86_BUILTIN_ENCODEKEY128U32, case IX86_BUILTIN_ENCODEKEY256U32,
+ 	case IX86_BUILTIN_URDMSR>: Set target to a new pseudo even if it is
+ 	non-NULL but doesn't satisfy register_operand predicate.
+ 
+ 2026-01-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-12-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* doc/install.texi (--with-tls=): Fix a typo, were -> where.
+ 
+ 2026-01-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-12-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/123155
+ 	* config/i386/xmmintrin.h (_mm_maskmove_si64): Rename offset automatic
+ 	variable to __offset.
+ 
+ 2026-01-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-12-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/123155
+ 	* config/i386/avx10_2-512bf16intrin.h (_mm512_roundscale_pbh,
+ 	_mm512_mask_roundscale_pbh, _mm512_maskz_roundscale_pbh,
+ 	_mm512_reduce_pbh, _mm512_mask_reduce_pbh, _mm512_maskz_reduce_pbh):
+ 	Rename B argument to __B.
+ 	* config/i386/avx10_2bf16intrin.h (_mm256_roundscale_pbh,
+ 	_mm256_mask_roundscale_pbh, _mm256_maskz_roundscale_pbh,
+ 	_mm_roundscale_pbh, _mm_mask_roundscale_pbh, _mm_maskz_roundscale_pbh,
+ 	_mm256_reduce_pbh, _mm256_mask_reduce_pbh, _mm256_maskz_reduce_pbh,
+ 	_mm_reduce_pbh, _mm_mask_reduce_pbh, _mm_maskz_reduce_pbh): Likewise.
+ 
+ 2026-01-16  Alice Carlotti  <alice.carlotti@arm.com>
+ 
+ 	PR target/123460
+ 	* config.gcc: Accept hyphens in aarch64 --with-arch extensions.
+ 
+ 2026-01-16  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/123121
+ 	* lra-remat.cc (bad_for_rematerialization_p): Consider div/mod ops.
+ 	(operand_to_remat): Exclude rematerialization of insns with
+ 	multiple sets.
+ 
+ 2026-01-16  Tejas Belagod  <tejas.belagod@arm.com>
+ 
+ 	PR middle-end/123392
+ 	* cfgexpand.cc (expand_debug_expr): Handle variable-length initializer
+ 	for CONSTRUCTOR.
+ 
+ 2026-01-16  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	Backported from master:
+ 	2026-01-16  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	PR target/123521
+ 	* config/loongarch/loongarch.cc
+ 	(loongarch_expand_vector_init_same): Fixed a bug in the
+ 	vector initialization section..
+ 
+ 2026-01-15  DengJianbo  <dengjianbo@loongson.cn>
+ 
+ 	Backported from master:
+ 	2026-01-15  DengJianbo  <dengjianbo@loongson.cn>
+ 
+ 	* config/loongarch/loongarch.md: Remove condition in template
+ 	movdi_symbolic_off64.
+ 
+ 2026-01-14  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR diagnostics/120063
+ 	* diagnostic-format-sarif.cc (maybe_get_sarif_level): Handle
+ 	DK_FATAL as SARIF level "error".
+ 	* diagnostic.cc (diagnostic_context::execution_failed_p): Also
+ 	treat any DK_FATAL errors as leading to failed execution.
+ 
+ 2026-01-13  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/123300
+ 	* gimple-range-gori.cc (gori_map::exports_and_deps): New.
+ 	* gimple-range-gori.h (exports_and_deps): New prototype.
+ 	(FOR_EACH_GORI_EXPORT_AND_DEP_NAME): New macro.
+ 	* tree-vrp.cc (remove_unreachable:remove_unreachable): Initialize
+ 	m_tmp bitmap.
+ 	(remove_unreachable:~remove_unreachable): Dispose of m_tmp bitmap.
+ 	(remove_unreachable:fully_replaceable): Move from static function
+ 	and check reachability of exports and dependencies.
+ 
+ 2026-01-13  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	Backported from master:
+ 	2026-01-13  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/123484
+ 	* config/i386/mmx.md (divv4hf3): Add TARGET_MMX_WITH_SSE to
+ 	the condition.
+ 	(cmlav4hf4): Ditto.
+ 	(cmla_conjv4hf4): Ditto.
+ 	(cmulv4hf3): Ditto.
+ 	(cmul_conjv4hf3): Ditto.
+ 
+ 2026-01-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-12-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/123040
+ 	* tree-ssa-sccvn.cc (vn_nary_build_or_lookup_1): Only insert
+ 	nary results.
+ 
+ 2026-01-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/121192
+ 	* expr.cc (store_constructor) <VECTOR_TYPE>: Disable the special
+ 	trick for uniform boolean vectors with integer modes and single-bit
+ 	mask entries on big-endian platforms.
+ 
+ 2026-01-02  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	PR target/121485
+ 	* config/riscv/vector-crypto.md: Fix mode attribute for the
+ 	lmul extending Zvkned patterns.
+ 
+ 2025-12-22  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/122868
+ 	* tree-vect-stmts.cc (vectorizable_load): Don't hoist loop invariant
+ 	conditional loads unless in header.
+ 
+ 2025-12-19  Yury Khrustalev  <yury.khrustalev@arm.com>
+ 
+ 	Backported from master:
+ 	2025-11-24  Yury Khrustalev  <yury.khrustalev@arm.com>
+ 
+ 	PR debug/121964
+ 	* dwarf2out.cc (gen_array_type_die): Add DW_AT_bit_stride attribute
+ 	for array types based on element type bit precision for integer and
+ 	boolean element types.
+ 
+ 2025-12-19  Yury Khrustalev  <yury.khrustalev@arm.com>
+ 
+ 	Backported from master:
+ 	2025-11-24  Yury Khrustalev  <yury.khrustalev@arm.com>
+ 
+ 	* machmode.def (VECTOR_BOOL_MODE): Fix comment.
+ 
+ 2025-12-16  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	Backported from master:
+ 	2025-12-09  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	PR target/123022
+ 	* config/riscv/vector.md: Add mode_idx attribute.
+ 
+ 2025-12-11  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/122215
+ 	* ira-color.cc (improve_allocation): Use register filter for all
+ 	loop on hard regs.
+ 
+ 2025-12-10  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	Backported from master:
+ 	2025-12-01  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	PR target/122652
+ 	* config/riscv/riscv-vsetvl.cc: Add nullptr check.
+ 
+ 2025-12-09  Robin Dapp  <rdapp.gcc@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-12-02  Robin Dapp  <rdapp.gcc@gmail.com>
+ 
+ 	PR target/122656
+ 	* config/riscv/riscv-vector-builtins-bases.cc: Use
+ 	use_contiguous_load for vlsegff.
+ 	* config/riscv/riscv-vector-builtins.cc (function_expander::use_exact_insn):
+ 	Only add rounding mode operand if insn requires it and number of
+ 	arguments is < required.
+ 	(function_expander::use_ternop_insn): Ditto.
+ 	(function_expander::use_widen_ternop_insn): Ditto.
+ 	* config/riscv/vector.md: Use vector-mode source operand.
+ 
+ 2025-12-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-12-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/122991
+ 	* config/aarch64/aarch64.md (crc_rev<ALLI:mode><ALLX:mode>4,
+ 	crc<ALLI:mode><ALLX:mode>4): Use const_int_operand predicate for
+ 	the last operand.
+ 
+ 2025-12-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-12-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/122943
+ 	* tree-switch-conversion.cc (switch_conversion::build_arrays):
+ 	Always gimplify subtraction in utype without cast to tidxtype
+ 	and set m_arr_ref_first to the last stmt of that.  Remove unneeded
+ 	update_stmt call.  If tidxtype is not utype, append after that stmt
+ 	cast to tidxtype and set tidx to the lhs of that cast.
+ 
+ 2025-12-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-11-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/120052
+ 	* gimplify.cc (gimplify_call_expr): For IFN_UBSAN_BOUNDS
+ 	call with integer_onep first argument, change that argument
+ 	to 0 and add TYPE_MAX_VALUE (TYPE_DOMAIN (arr_type)) to
+ 	3rd argument before gimplification.
+ 
+ 2025-12-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-11-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/120564
+ 	* omp-expand.cc (extract_omp_for_update_vars): Use build2 instead of
+ 	fold_build2 to build argument for gimple_build_cond_empty.
+ 
+ 2025-12-01  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	Backported from master:
+ 	2025-12-01  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/122858
+ 	* config/arm/constraints.md (Ph): New constraint.
+ 	* config/arm/mve.md (mve_asrl_imm, mve_lsll_imm): Fix constraints
+ 	of operand 1 and handle 32 as special shift amount.
+ 
+ 2025-12-01  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2025-05-07  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/110796
+ 	PR target/118446
+ 	* config/arm/arm.h (REVERSIBLE_CC_MODE): FP modes are only
+ 	reversible if flag_finite_math_only.
+ 	* config/arm/arm.cc (arm_select_cc_mode): Return CCFPmode for all
+ 	FP comparisons if flag_finite_math_only.
+ 
+ 2025-11-28  Avinash Jayakar  <avinashd@linux.ibm.com>
+ 
+ 	PR tree-optimization/122126
+ 	* gimple-isel.cc (gimple_expand_vec_set_extract_expr): Add bound check.
+ 
+ 2025-11-27  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-11-27  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/avr-mcus.def (AVR_MCUS): Add avr16la14, avr16la20,
+ 	avr16la28, avr16la32, avr32la14, avr32la20, avr32la28, avr32la32.
+ 	* doc/avr-mmcu.texi: Rebuild.
+ 
+ 2025-11-27  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2025-11-26  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/122867
+ 	* config/arm/arm.cc (arm_print_operand): Use %- to
+ 	emit LOCAL_LABEL_PREFIX.
+ 	(arm_print_operand_punct_valid_p): Allow %- for punct
+ 	and make %_ valid for all compilation variants.
+ 	* config/arm/thumb2.md (*thumb2_cbz): Handle very
+ 	large branch ranges that exceed the limit of b<cond>.
+ 	(*thumb2_cbnz): Likewise.
+ 
+ 2025-11-24  Pan Li  <pan2.li@intel.com>
+ 
+ 	Backported from master:
+ 	2025-11-20  Pan Li  <pan2.li@intel.com>
+ 
+ 	PR target/122692
+ 	* config/riscv/riscv.cc (riscv_expand_ustrunc): Leverage
+ 	riscv_extend_to_xmode_reg to take care of src rtx.
+ 
+ 2025-11-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/invoke.texi (Optimize Options) <-fmalloc-dce>: Remove
+ 	trailing space.
+ 	(AArch64 Options) <-march>: Fix pasto.
+ 
+ 2025-11-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-10-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122225
+ 	* tree-cfg.cc (verify_gimple_return): Look at DECL_RESULT
+ 	for DECL_BY_REFERENCE.
+ 
+ 2025-11-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-10-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	* config/i386/i386-options.cc (ix86_option_override_internal):
+ 	Fix check during opts->x_ix86_move_max initialization.
+ 
+ 2025-11-20  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	Backported from master:
+ 	2025-11-20  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR target/122695
+ 	* config/loongarch/loongarch.cc (loongarch_expand_vec_perm_1):
+ 	Simplify and fix the logic preventing the xvshuf.* unpredictable
+ 	behavior.
+ 
+ 2025-11-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	Backported from master:
+ 	2025-11-12  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	PR target/122539
+ 	* config/arm/arm.cc (comp_not_to_clear_mask_str_un): Skip partial
+ 	register clearing logic for FP_REGS.
+ 	(compute_not_to_clear_mask): Likewise.
+ 
+ 2025-11-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	Backported from master:
+ 	2025-11-12  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	PR target/122539
+ 	* config/arm/arm.cc (comp_not_to_clear_mask_str_un): Update
+ 	not_to_clear_reg_mask for union members.
+ 
+ 2025-11-18  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	Backported from master:
+ 	2025-11-04  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	PR lto/122515
+ 	* lto-wrapper.cc (debug_objcopy): Set type of INOFF to int64_t.
+ 	(run_gcc): Set type of FILE_OFFSET to int64_t.
+ 
+ 2025-11-18  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Backported from master:
+ 	2025-10-31  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/121853
+ 	* config/aarch64/aarch64-simd.md (extendbfsf2): New.
+ 
+ 2025-11-18  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2025-09-02  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/121776
+ 	* tree-ssa-strlen.cc (strlen_pass::handle_builtin_memcmp): Create
+ 	unaligned types if the alignment of the pointers is less
+ 	than the alignment of the new type.
+ 
+ 2025-11-17  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2025-08-18  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR middle-end/121581
+ 	* doc/extend.texi (__builtin_object_size): Fix example.
+ 
+ 2025-11-17  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	PR rtl-optimization/122627
+ 	* lra-constraints.cc (update_equiv): Remove patch from last week
+ 	related to pr122321.
+ 	(lra_constraints): Expand the equivalence array after eliminations
+ 	are complete.
+ 
+ 2025-11-16  Lewis Hyatt  <lhyatt@gmail.com>
+ 
+ 	* diagnostic.cc (num_digits): Change argument type from `int' to
+ 	`uint64_t'.
+ 	(test_num_digits): Add test for 64-bit argument.
+ 	* diagnostic.h (num_digits): Adjust prototype.
+ 	* input.cc (write_digit): Accept argument in range 0-9 instead of
+ 	an arbitrary int.
+ 	(write_digit_row): Adjust to change in write_digit().
+ 
+ 2025-11-14  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	Backported from master:
+ 	2025-08-14  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	PR target/119275
+ 	* config/riscv/riscv.cc (riscv_legitimize_move): Avoid calling
+ 	gen_lowpart for cases where it'll fail.  Just use standard expander
+ 	paths for those cases.
+ 
+ 2025-11-14  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-11-14  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*sub<mode>_3):
+ 	Remove 'i' from operand 0 constraint.
+ 
+ 2025-11-14  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/122216
+ 	* config/arm/arm-mve-builtins-base.cc (enum which_scalar_shift): New.
+ 	(mve_function_scalar_shift): New.
+ 	(asrl, lsll): New.
+ 	* config/arm/arm-mve-builtins-base.def (asrl, lsll): New.
+ 	* config/arm/arm-mve-builtins-base.h (asrl, lsll): New.
+ 	* config/arm/arm_mve.h (asrl): Delete.
+ 	(lsll): Delete.
+ 	(__arm_asrl): Delete.
+ 	(__arm_lsll): Delete.
+ 
+ 2025-11-14  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/122216
+ 	* config/arm/arm-mve-builtins-shapes.cc (scalar_s64_shift): New.
+ 	(scalar_u64_shift): New.
+ 	* config/arm/arm-mve-builtins-shapes.h: Likewise.
+ 
+ 2025-11-14  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/122216
+ 	* config/arm/arm.md (ashldi3, ashrdi3): Force shift amount into
+ 	QImode.
+ 	* config/arm/constraints.md: Fix comment, Pg is valid in Thumb-2
+ 	state only.
+ 	* config/arm/mve.md (mve_asrl): Handle various shift amount ranges.
+ 	(mve_asrl_imm, mve_asrl_internal): New patterns.
+ 	(mve_lsll): Handle various shift amount ranges.
+ 	(mve_lsll_imm, mve_lsll_internal): New patterns.
+ 
+ 2025-11-14  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/122216
+ 	* config/arm/thumb2.md (thumb2_asrl, thumb2_lsll, thumb2_lsrl):
+ 	Move to ...
+ 	* config/arm/mve.md (mve_asrl, mve_lsll, mve_lsrl): ... here. Use
+ 	match_operand instead of match_dup.
+ 	* config/arm/arm.md (ashldi3, ashrdi3, lshrdi3): Remove useless
+ 	copy. Update for new prototype.
+ 
+ 2025-11-12  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	Backported from master:
+ 	2025-11-12  Christophe Lyon  <christophe.lyon@linaro.org>
+ 		    Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/122175
+ 	* config/arm/iterators.md (asm_const_size): New mode attr.
+ 	* config/arm/mve.md (@mve_<mve_insn>q_n_<supf><mode>): Use it.
+ 
+ 2025-11-12  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/122189
+ 	* config/arm/iterators.md (VxCIQ_carry, VxCIQ_M_carry, VxCQ_carry)
+ 	(VxCQ_M_carry): New iterators.
+ 	* config/arm/mve.md (get_fpscr_nzcvqc, set_fpscr_nzcvqc): Use
+ 	unspec instead of unspec_volatile.
+ 	(vadciq, vadciq_m, vadcq, vadcq_m): Use vfpcc in operation.  Use a
+ 	different unspec code for carry calcultation.
+ 	* config/arm/unspecs.md (VADCQ_U_carry, VADCQ_M_U_carry)
+ 	(VADCQ_S_carry, VADCQ_M_S_carry, VSBCIQ_U_carry ,VSBCIQ_S_carry
+ 	,VSBCIQ_M_U_carry ,VSBCIQ_M_S_carry ,VSBCQ_U_carry ,VSBCQ_S_carry
+ 	,VSBCQ_M_U_carry ,VSBCQ_M_S_carry ,VADCIQ_U_carry
+ 	,VADCIQ_M_U_carry ,VADCIQ_S_carry ,VADCIQ_M_S_carry): New unspec
+ 	codes.
+ 
+ 2025-11-12  Hu, Lin1  <lin1.hu@intel.com>
+ 
+ 	Backported from master:
+ 	2025-11-12  Hu, Lin1  <lin1.hu@intel.com>
+ 
+ 	PR target/122446
+ 	* config/i386/amxavx512intrin.h (_tile_cvtrowps2bf16hi_internal):
+ 	Input register name by inline asm %c[...], and remove %% before tmm
+ 	from intel side.
+ 	(_tile_cvtrowps2bf16li_internal): Ditto.
+ 	* config/i386/amxbf16intrin.h (_tile_dpbf16ps_internal): Ditto
+ 	* config/i386/amxcomplexintrin.h (_tile_cmmimfp16ps_internal): Ditto
+ 	(_tile_cmmrlfp16ps_internal): Ditto
+ 	(_tile_cmmimfp16ps): Ditto
+ 	(_tile_cmmrlfp16ps): Ditto
+ 	* config/i386/amxfp16intrin.h (_tile_dpfp16ps_internal): Ditto
+ 	(_tile_dpfp16ps): Ditto
+ 	* config/i386/amxfp8intrin.h (_tile_dpbf8ps_internal): Ditto
+ 	(_tile_dpbhf8ps_internal): Ditto
+ 	(_tile_dphbf8ps_internal): Ditto
+ 	(_tile_dphf8ps_internal): Ditto
+ 	(_tile_dpbf8ps): Ditto
+ 	(_tile_dpbhf8ps): Ditto
+ 	(_tile_dphbf8ps): Ditto
+ 	(_tile_dphf8ps): Ditto
+ 	* config/i386/amxint8intrin.h (_tile_int8_dp_internal): Ditto
+ 	* config/i386/amxmovrsintrin.h (_tile_loaddrs_internal): Ditto
+ 	(_tile_loaddrst1_internal): Ditto
+ 	(_tile_loaddrs): Ditto
+ 	(_tile_loaddrst1): Ditto
+ 	* config/i386/amxtf32intrin.h (_tile_mmultf32ps_internal): Ditto
+ 	* config/i386/amxtileintrin.h (_tile_loadd): Ditto
+ 	(_tile_loadd_internal): Ditto
+ 	(_tile_stream_loadd): Ditto
+ 	(_tile_stream_loadd_internal): Ditto
+ 	(_tile_stored): Ditto
+ 	(_tile_stored_internal): Ditto
+ 	(_tile_zero): Ditto
+ 	(_tile_zero_internal): Ditto
+ 
+ 2025-11-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-11-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR lto/122620
+ 	* gimplify-me.cc (gimple_regimplify_operands): Don't try to regimplify
+ 	TREE_CLOBBER on rhs of gimple_clobber_p if it has gimple_reg_type.
+ 
+ 2025-11-11  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	Backported from master:
+ 	2025-11-08  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	PR target/122097
+ 	* config/loongarch/loongarch.cc
+ 	(loongarch_const_vector_same_bytes_p): Add processing for
+ 	floating-point vector data.
+ 
+ 2025-11-11  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	Backported from master:
+ 	2025-10-29  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	PR target/122097
+ 	* config/loongarch/loongarch.cc
+ 	(loongarch_const_vector_bitimm_set_p): Add support for vector float.
+ 	(loongarch_const_vector_bitimm_clr_p): Likewise.
+ 	(loongarch_print_operand): Likewise.
+ 	* config/loongarch/simd.md (and<mode>3): Likewise.
+ 
+ 2025-11-11  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	Backported from master:
+ 	2025-10-29  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/lasx.md (xor<mode>3): Delete.
+ 	(ior<mode>3): Delete.
+ 	(and<mode>3): Delete.
+ 	* config/loongarch/lsx.md (xor<mode>3): Delete.
+ 	(ior<mode>3): Delete.
+ 	(and<mode>3): Delete.
+ 	* config/loongarch/simd.md (xor<mode>3): Define.
+ 	(ior<mode>3): Likewise.
+ 	(and<mode>3): Likewise.
+ 
+ 2025-11-10  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2025-11-10  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/118460
+ 	* config/arm/arm.md (movhfcc): Use expandable_comparison_operator.
+ 	(movsfcc, movdfcc): Likewise.
+ 
+ 2025-11-10  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2025-10-15  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/118460
+ 	* config/arm/arm.cc (arm_canonicalize_comparison): For floating-
+ 	point comparisons, swap the operand order if that will be more
+ 	likely to produce a comparison that can be used with VSEL.
+ 	(arm_validize_comparison): Make sure that HFmode comparisons
+ 	are compatible with VSEL.
+ 
+ 2025-11-06  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-11-06  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/122516
+ 	* config/avr/elf.h (SUPPORTS_SHF_GNU_RETAIN): Define if
+ 	HAVE_GAS_SHF_GNU_RETAIN.
+ 
+ 2025-11-06  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-11-06  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/avr.cc (avr_output_addr_vec): Output
+ 	a valid opcode prior to the first gs() label provided:
+ 	- The code is compiled for an arch that has AVR-SD mcus, and
+ 	- the function has a "section" attribute, and
+ 	- the function has a gs() label addresses switch/case table.
+ 
+ 2025-11-03  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	Backported from master:
+ 	2025-11-01  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	PR rtl-optimization/122321
+ 	* lra-constraints.cc (update_equiv): Make sure REGNO is in
+ 	ira_reg_equiv before trying to update ira_reg_equiv.
+ 
+ 2025-11-03  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2025-10-26  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR target/122270
+ 	* config/riscv/riscv-vector-builtins-bases.cc (vset::fold): Use the
+ 	unshare_expr for the statement that will be added seperately rather
+ 	the one which will be used for the replacement.
+ 
+ 2025-11-02  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-11-02  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/122527
+ 	* config/avr/avr.cc (avr_load_libgcc_p): Return false if
+ 	the address-space is not ADDR_SPACE_FLASH.
+ 	(avr_out_lpm_no_lpmx [addr=REG]): Handle sizes of 3 and 4 bytes.
+ 
+ 2025-11-02  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-11-02  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR tree-optimization/118012
+ 	PR tree-optimization/122505
+ 	* config/avr/avr.md (mulpsi3): Also allow the insn condition
+ 	in the case where avropt_pr118012 && !AVR_TINY.
+ 	(*mulpsi3): Handle split for the !AVR_HAVE_MUL case.
+ 	(*mulpsi3-nomul.libgcc_split, *mulpsi3-nomul.libgcc): New insns.
+ 
+ 2025-10-31  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Backported from master:
+ 	2025-10-27  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/122408
+ 	* tree-vect-slp-patterns.cc (vect_validate_multiplication): Cleanup and
+ 	document interface.
+ 	(complex_mul_pattern::matches, complex_fms_pattern::matches): Update to
+ 	new interface.
+ 
+ 2025-10-31  Jinyang He  <hejinyang@loongson.cn>
+ 
+ 	Backported from master:
+ 	2025-10-30  Jinyang He  <hejinyang@loongson.cn>
+ 		    Peng Fan  <fanpeng@loongson.cn>
+ 
+ 	* config/loongarch/loongarch.cc
+ 	(loongarch_expand_conditional_move): Only allow valid binary
+ 	op when optimize conditional move.
+ 
+ 2025-10-30  Guo Jie  <guojie@loongson.cn>
+ 
+ 	Backported from master:
+ 	2025-10-30  Guo Jie  <guojie@loongson.cn>
+ 
+ 	* config/loongarch/lasx.md (fnma<mode>4): Remove.
+ 	* config/loongarch/lsx.md (fnma<mode>4): Remove.
+ 	* config/loongarch/simd.md (fnma<mode>4): Simplify and correct.
+ 
+ 2025-10-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/122394
+ 	* tree-ssa-phiopt.cc (spaceship_replacement): Use
+ 	build_debug_expr_decl instead of manually building DEBUG_EXPR_DECL
+ 	and getting SET_DECL_MODE wrong.
+ 
+ 2025-10-27  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	Backported from master:
+ 	2025-10-13  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	PR target/120674
+ 	* config/riscv/riscv.cc (riscv_dwarf_poly_indeterminite_value): Do not
+ 	set FACTOR to zero, for that case use one instead.
+ 
+ 2025-10-27  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Backported from master:
+ 	2025-10-17  Tamar Christina  <tamar.christina@arm.com>
+ 		    Jennifer Schmitz  <jschmitz@nvidia.com>
+ 
+ 	PR target/121604
+ 	* config/aarch64/aarch64-sve-builtins-shapes.cc (apply_predication):
+ 	Store gp_index.
+ 	(struct pmov_to_vector_lane_def): Mark instruction as has no GP.
+ 	* config/aarch64/aarch64-sve-builtins.h (function_instance::gp_value,
+ 	function_instance::inactive_values, function_instance::gp_index,
+ 	function_shape::has_gp_argument_p): New.
+ 	* config/aarch64/aarch64-sve-builtins.cc (gimple_folder::fold_pfalse):
+ 	Simplify code and use GP helpers.
+ 
+ 2025-10-26  LIU Hao  <lh_mouse@126.com>
+ 
+ 	Backported from master:
+ 	2025-10-26  LIU Hao  <lh_mouse@126.com>
+ 
+ 	PR target/119079
+ 	* config/i386/i386.md: Use `movsxd` to perform SI-to-DI extension in Intel
+ 	syntax.
+ 
+ 2025-10-24  Linsen Zhou  <i@lin.moe>
+ 
+ 	Backported from master:
+ 	2025-10-18  Linsen Zhou  <i@lin.moe>
+ 
+ 	PR tree-optimization/122012
+ 	* tree-object-size.cc (check_for_plus_in_loops): Skip check
+ 	for the variable offset
+ 
+ 2025-10-24  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-10-20  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/99930
+ 	PR target/122323
+ 	* config/i386/i386-expand.cc (ix86_expand_copysign): Swap
+ 	operands[1] with operands[2].  Optimize copysign (x, const_double)
+ 	instead of copysign (const_double, x).
+ 	* config/i386/i386.md (copysign<mode>3): Swap constraints for
+ 	operands[1] and operands[2].
+ 
+ 2025-10-22  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* config/i386/driver-i386.cc (host_detect_local_cpu): Correct
+ 	the logic for unknown model number cpu guess value.
+ 
+ 2025-10-21  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	Backported from master:
+ 	2025-10-10  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/122223
+ 	* config/arm/mve.md (@mve_vbicq_f<mode>): Fix operands order.
+ 
+ 2025-10-21  Jennifer Schmitz  <jschmitz@nvidia.com>
+ 
+ 	PR target/121599
+ 	* config/aarch64/aarch64-sve-builtins.cc
+ 	(function_expander::use_cond_insn): Use add_fixed_operand if
+ 	fallback_arg == CONST0_RTX (mode).
+ 
+ 2025-10-20  Svante Signell  <svante.signell@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-10-20  Svante Signell  <svante.signell@gmail.com>
+ 
+ 	PR go/104290
+ 	* config/gnu.h (OPTION_GLIBC_P, OPTION_GLIBC): Define.
+ 
+ 2025-10-17  Hu, Lin1  <lin1.hu@intel.com>
+ 
+ 	PR target/122119
+ 	* config/i386/amxmovrsintrin.h
+ 	(_tile_loaddrs_internal): Use __PTRDIFF_TYPE__ instead of long.
+ 	(_tile_loaddrst1_internal): Ditto.
+ 	(_tile_2rpntlvwz0rs_internal): Ditto.
+ 	(_tile_2rpntlvwz0rst1_internal): Ditto.
+ 	(_tile_2rpntlvwz1rs_internal): Ditto.
+ 	(_tile_2rpntlvwz1rst1_internal): Ditto.
+ 
+ 2025-10-16  Ayappan Perumal  <ayappap2@in.ibm.com>
+ 
+ 	Backported from master:
+ 	2025-10-16  Ayappan Perumal  <ayappap2@in.ibm.com>
+ 
+ 	* config/rs6000/aix.h (SUBTARGET_DRIVER_SELF_SPECS):
+ 	Error out when stack-protector option is used in AIX
+ 	as it is not supported on AIX
+ 	Approved By: Segher Boessenkool <segher@kernel.crashing.org>
+ 
+ 2025-10-15  Alice Carlotti  <alice.carlotti@arm.com>
+ 
+ 	* config/aarch64/aarch64-sys-regs.def: Fix pmsdsfr_el1 encoding.
+ 
+ 2025-10-15  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* config/i386/i386.h
+ 	(PTA_PANTHERLAKE): Remove PREFETCHI.
+ 	(PTA_DIAMONDRAPIDS): Remove USER_MSR.
+ 	* doc/invoke.texi: Correct documentation.
+ 
+ 2025-10-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-10-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/122133
+ 	* stmt.cc (resolve_asm_operand_names): Handle % and 2 letters followed
+ 	by open square.
+ 
+ 2025-10-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-10-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/122104
+ 	* tree-ssa-math-opts.cc (maybe_optimize_guarding_check): Call
+ 	reset_flow_sensitive_info_in_bb on bb when optimizing out the
+ 	guarding condition.
+ 
+ 2025-10-14  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* config/i386/i386.h (PTA_DIAMONDRAPIDS): Remove AMX-TRANSPOSE.
+ 	* doc/invoke.texi: Correct documentation.
+ 
+ 2025-10-13  Avinash Jayakar  <avinashd@linux.ibm.com>
+ 
+ 	PR tree-optimization/122213
+ 	* match.pd: Canonicalize unsigned pow2 div only for trunk, floor and
+ 	exact div.
+ 
+ 2025-10-11  Robin Dapp  <rdapp.gcc@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-10-07  Robin Dapp  <rdapp.gcc@gmail.com>
+ 
+ 	PR target/121845
+ 	* config/riscv/riscv-v.cc (shuffle_series_patterns):
+ 	Modulo indices for VLA and punt when wrapping for VLS.
+ 
+ 2025-10-08  Aurelien Jarno  <aurelien@aurel32.net>
+ 
+ 	Backported from master:
+ 	2025-10-02  Aurelien Jarno  <aurelien@aurel32.net>
+ 
+ 	PR target/121652
+ 	* config/riscv/riscv.md (round_pattern): special case NaN input
+ 	instead of saving/restoring fflags.
+ 
+ 2025-10-07  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-10-07  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/122187
+ 	* config/avr/avr.cc (avr_out_extr, avr_out_extr_not):
+ 	Make a local copy of the passed rtx[] operands.
+ 
+ 2025-10-03  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	Backported from master:
+ 	2025-09-04  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	PR target/121742
+ 	PR target/121780
+ 	PR target/121781
+ 	* config/riscv/riscv-v.cc (expand_vec_perm): Swap target and
+ 	tmp_target.
+ 
+ 2025-10-03  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	Backported from master:
+ 	2025-09-02  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	PR target/121742
+ 	* config/riscv/riscv-v.cc (expand_vec_perm): Use temporary if
+ 	op1 and target overlap.
+ 
+ 2025-10-02  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	PR target/110812
+ 	* config/riscv/riscv-c.cc (pragma_intrinsic_flags): Remove struct.
+ 	(riscv_pragma_intrinsic_flags_pollute): Remove function.
+ 	(riscv_pragma_intrinsic_flags_restore): Remove function.
+ 	(riscv_pragma_intrinsic): Simplify to only call handle_pragma_vector.
+ 	* config/riscv/riscv-vector-builtins.cc (pragma_intrinsic_flags):
+ 	Move struct definition here from riscv-c.cc.
+ 	(riscv_pragma_intrinsic_flags_pollute): Move and adapt from
+ 	riscv-c.cc, add zvfbfmin, zvfhmin and vector_elen_bf_16 support.
+ 	(riscv_pragma_intrinsic_flags_restore): Move from riscv-c.cc.
+ 	(rvv_switcher::rvv_switcher): Add pollute_flags parameter to
+ 	control flag manipulation.
+ 	(rvv_switcher::~rvv_switcher): Restore flags conditionally.
+ 	(register_builtin_types): Use rvv_switcher without polluting flags.
+ 	(get_required_extensions): Remove function.
+ 	(check_required_extensions): Simplify to only check type validity.
+ 	(function_instance::function_returns_void_p): Move implementation
+ 	from header.
+ 	(function_builder::add_function): Register placeholder for LTO.
+ 	(init_builtins): Simplify and handle LTO case.
+ 	(reinit_builtins): Remove function.
+ 	(handle_pragma_vector): Remove extension checking.
+ 	* config/riscv/riscv-vector-builtins.h
+ 	(function_instance::function_returns_void_p): Add declaration.
+ 	(function_call_info::function_returns_void_p): Remove inline
+ 	implementation.
+ 
+ 2025-09-26  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	Backported from master:
+ 	2025-09-26  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	PR target/121875
+ 	* config/loongarch/loongarch.cc
+ 	(loongarch_can_inline_p): New function.
+ 	(TARGET_CAN_INLINE_P): Define.
+ 
+ 2025-09-25  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	Backported from master:
+ 	2025-09-15  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR tree-optimization/121772
+ 	* match.pd: Add type check to reduc(ctor) pattern.
+ 
+ 2025-09-25  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-09-18  Tobias Burnus  <tburnus@baylibre.com>
+ 		    Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR middle-end/121922
+ 	* omp-general.cc (omp_dynamic_cond): Use 'unshare_expr' for
+ 	the user condition.
+ 
+ 2025-09-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-09-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/121977
+ 	* omp-low.cc (lower_omp_regimplify_operands_p): If maybe_lookup_decl
+ 	returns NULL, use maybe_lookup_decl_in_outer_ctx as fallback.
+ 
+ 2025-09-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-09-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* doc/invoke.texi (Wimplicit-fallthrough=): Document that also C23
+ 	provides a standard way to suppress the warning with [[fallthrough]];.
+ 
+ 2025-09-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-09-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/121828
+ 	* gimple-lower-bitint.cc (gimple_lower_bitint): For REALPART_EXPR
+ 	consumed by store in the same bb and with REALPART_EXPR from
+ 	optimizable_arith_overflow, don't add REALPART_EXPR lhs to
+ 	the m_names bitmap only if the cast from IMAGPART_EXPR doesn't
+ 	appear in between the REALPART_EXPR and the store.
+ 
+ 2025-09-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-09-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/121831
+ 	* expr.cc (raw_data_cst_read_str): New function.
+ 	(store_constructor) <case ARRAY_TYPE>: Handle RAW_DATA_CST.
+ 
+ 2025-09-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-08-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/121453
+ 	* omp-expand.cc (expand_omp_for_init_counts): Clear fd->loop.n2
+ 	before first zero count check if zero_iter1_bb is non-NULL upon
+ 	entry and fd->loop.n2 has not been written yet.
+ 
+ 2025-09-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-09-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122016
+ 	* tree-ssa-sccvn.cc (vn_nary_simplify): Do not use the
+ 	simplified expression when it references abnormals.
+ 
+ 2025-09-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-09-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121870
+ 	* tree-ssa-propagate.cc
+ 	(substitute_and_fold_engine::substitute_and_fold): Skip
+ 	removed stmts from noreturn fixup.
+ 
+ 2025-09-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-09-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107997
+ 	PR tree-optimization/121844
+ 	* tree-ssa-loop-ivopts.cc (allow_ip_end_pos_p): Do not allow
+ 	IP_END for latches ending with a control stmt.
+ 	(create_new_iv): Do not split the latch edge, instead assert
+ 	that's not necessary.
+ 
+ 2025-09-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-08-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121659
+ 	* tree-vect-slp.cc (vect_build_slp_tree_1): Do not allow
+ 	matching up comparison operators by swapping if that would
+ 	disturb STMT_VINFO_REDUC_IDX.  Make sure to only
+ 	actually mark operands for swapping when there was a
+ 	mismatch and we're not processing the first stmt.
+ 
+ 2025-09-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-08-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121527
+ 	* tree-sra.cc (build_access_from_expr_1): Do not strip an
+ 	outer VIEW_CONVERT_EXPR as it's relevant for the size of
+ 	the access.
+ 	(get_access_for_expr): Likewise.
+ 
+ 2025-09-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-08-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121370
+ 	* tree-scalar-evolution.cc (scev_dfs::add_to_evolution_1):
+ 	Avoid UB integer overflow in accumulating CHREC_RIGHT.
+ 
+ 2025-09-20  Michael Eager  <eager@eagercon.com>
+ 
+ 	PR target/118280
+ 	* config/microblaze/iterators.md: New.
+ 	* config/microblaze/microblaze-protos.h: Add
+ 	microblaze_subword_address.
+ 	* config/microblaze/microblaze.cc: Ditto.
+ 	* config/microblaze/microblaze.md: constants: Add UNSPECV_CAS_BOOL,
+ 	UNSPECV_CAS_MEM, UNSPECV_CAS_VAL, UNSPECV_ATOMIC_FETCH_OP
+ 	type: add atomic
+ 	* config/microblaze/sync.md: Add atomic_fetch_<atomic_optab>si
+ 	atomic_test_and_set
+ 
+ 2025-09-18  hongtao.liu  <hongtao.liu@intel.com>
+ 
+ 	Backported from master:
+ 	2025-09-18  hongtao.liu  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/x86-tune.def (X86_TUNE_AVX512_MOVE_BY_PIECES):
+ 	Remove SPR/GNR/DMR.
+ 	(X86_TUNE_AVX512_STORE_BY_PIECES): Ditto.
+ 
+ 2025-09-16  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	Backported from master:
+ 	2025-09-12  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* lra-constraints.cc (get_equiv): Bounds check before accessing
+ 	data in ira_reg_equiv.
+ 
+ 2025-09-16  Jennifer Schmitz  <jschmitz@nvidia.com>
+ 
+ 	PR target/121602
+ 	* config/aarch64/aarch64-sve-builtins.cc
+ 	(gimple_folder::fold_active_lanes_to): Add force_vector
+ 	statement.
+ 
+ 2025-09-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	Backported from master:
+ 	2025-08-11  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	PR target/121464
+ 	* config/arm/arm.md (arm_<mrrc>, arm_<mcrr>): Fix operand check.
+ 
+ 2025-09-15  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	Backported from master:
+ 	2025-09-03  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR target/121749
+ 	* config/aarch64/aarch64-simd.md (aarch64_<shrn_op>shrn_n<mode>):
+ 	Use aarch64_simd_shift_imm_offset_<vn_mode> instead of
+ 	aarch64_simd_shift_imm_offset_<ve_mode> predicate.
+ 	(aarch64_<shrn_op>shrn_n<mode> VQN define_expand): Likewise.
+ 	(*aarch64_<shrn_op>rshrn_n<mode>_insn): Likewise.
+ 	(aarch64_<shrn_op>rshrn_n<mode>): Likewise.
+ 	(aarch64_<shrn_op>rshrn_n<mode> VQN define_expand): Likewise.
+ 	(aarch64_sqshrun_n<mode>_insn): Likewise.
+ 	(aarch64_sqshrun_n<mode>): Likewise.
+ 	(aarch64_sqshrun_n<mode> VQN define_expand): Likewise.
+ 	(aarch64_sqrshrun_n<mode>_insn): Likewise.
+ 	(aarch64_sqrshrun_n<mode>): Likewise.
+ 	(aarch64_sqrshrun_n<mode>): Likewise.
+ 	* config/aarch64/iterators.md (vn_mode): Handle DI, SI, HI modes.
+ 
+ 2025-09-15  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-09-15  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/avr-mcus.def: Add avr32eb14, avr32eb20,
+ 	avr32eb28, avr32eb32.
+ 	* doc/avr-mmcu.texi: Rebuild.
+ 
+ 2025-09-15  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	Backported from master:
+ 	2025-09-15  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR target/121906
+ 	* config/loongarch/loongarch.md (*bstrins_<mode>_for_ior_mask):
+ 	Always create a new pseudo for the input register of the bstrins
+ 	instruction.
+ 
+ 2025-09-11  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	PR rtl-optimization/121757
+ 	* rtl-ssa/accesses.h (clobber_group::lookup_clobber): New member
+ 	function.
+ 	* rtl-ssa/accesses.cc (clobber_group::lookup_clobber): Likewise.
+ 	(clobber_group::prev_clobber, clobber_group::next_clobber)
+ 	(function_info::add_clobber): Use it.
+ 
+ 2025-09-10  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-09-10  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/81540
+ 	PR target/49857
+ 	* common/config/avr/avr-common.cc: Disable -ftree-switch-conversion.
+ 
+ 2025-09-08  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	Backported from master:
+ 	2025-09-05  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	PR target/121510
+ 	* config/riscv/riscv.cc (riscv_legitimize_move): Check if we can
+ 	vec_extract.
+ 
+ 2025-09-07  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-09-07  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/121794
+ 	* config/avr/avr.md (cmpqi3): Use cpi R,0 if possible.
+ 
+ 2025-09-05  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-09-05  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/121794
+ 	* config/avr/avr.cc (avr_out_compare): Only use zero_reg
+ 	when there is no other sequence of the same length.
+ 	(avr_out_plus_ext): Same.
+ 	(avr_out_plus_1): Same.
+ 
+ 2025-09-02  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	Backported from master:
+ 	2025-08-29  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	PR target/121548
+ 	* config/riscv/riscv-avlprop.cc (get_insn_vtype_mode): Assert
+ 	MODE_IDX is smaller than the number of operands.
+ 	(simplify_replace_vlmax_avl): Similarly.
+ 	(pass_avlprop::get_vlmax_ta_preferred_avl): Similarly.
+ 	* config/riscv/vector.md: Override merge_op_idx computation
+ 	for simple moves, just like is done for avl_type_idx and mode_idx.
+ 
+ 2025-09-01  Mark Harmstone  <mark@harmstone.com>
+ 
+ 	* dwarf2codeview.cc (get_type_num_array_type): Don't try to
+ 	encode non-C-style arrays.
+ 
+ 2025-08-31  Benjamin Wu  <bwu25@cs.washington.edu>
+ 
+ 	Backported from master:
+ 	2025-07-13  Benjamin Wu  <bwu25@cs.washington.edu>
+ 
+ 	* gimple.h (GTMA_DOES_GO_IRREVOCABLE): Fix typo.
+ 
+ 2025-08-25  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	Backported from master:
+ 	2025-08-25  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR target/121634
+ 	* config/loongarch/simd.md (simd_maddw_evod_<mode>_<su>): Use
+ 	WVEC_HALF instead of WVEC for the mode of the sign_extend for
+ 	the rhs of multiplication.
+ 
+ 2025-08-22  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	Backported from master:
+ 	2025-08-22  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* config/riscv/t-rtems: Add -mstrict-align multilibs for
+ 	targets without support for misaligned access in hardware.
+ 
+ 2025-08-20  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-08-20  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/121608
+ 	* config/avr/specs.h (LINK_RELAX_SPEC): Wrap in %{!r...}.
+ 
+ 2025-08-20  Vineet Gupta  <vineetg@rivosinc.com>
+ 
+ 	PR target/121534
+ 	* config/riscv/riscv.md (round_pattern): save/restore fflags.
+ 
+ 2025-08-18  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/121118
+ 	* config/aarch64/aarch64.cc (aarch64_sve_move_pred_via_while):
+ 	Return a VNx16BI predicate.
+ 
+ 2025-08-18  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2025-08-12  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/121253
+ 	* fwprop.cc (forward_propagate_into): Don't propagate asm defs.
+ 
+ 2025-08-15  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	Backported from master:
+ 	2025-08-08  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR target/120986
+ 	* config/aarch64/aarch64-sve-builtins.cc
+ 	(function_expander::expand): Relax fpm_t assert to allow
+ 	modeless const_ints.
+ 
+ 2025-08-15  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	Backported from master:
+ 	2025-08-08  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR target/120986
+ 	* config/aarch64/aarch64-sve2.md (@aarch64_sve_dot<mode>):
+ 	Switch mode iterator from SVE_FULL_HSF to new iterator;
+ 	remove insn predicate as this is now taken care of by conditions
+ 	in the mode iterator.
+ 	(@aarch64_sve_dot_lane<mode>): Likewise.
+ 	* config/aarch64/iterators.md (SVE_FULL_HSF_FP8_FDOT): New.
+ 
+ 2025-08-15  Pengfei Li  <Pengfei.Li2@arm.com>
+ 
+ 	PR target/121449
+ 	* config/aarch64/aarch64-sve.md
+ 	(mask_gather_load<mode><v_int_container>): Use vg<Vesize>
+ 	constraints for alternatives with immediate offset.
+ 	(mask_scatter_store<mode><v_int_container>): Likewise.
+ 
+ 2025-08-15  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	Backported from master:
+ 	2025-08-15  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	PR target/121542
+ 	* config/loongarch/loongarch.cc
+ 	(loongarch_vector_costs::add_stmt_cost): When using vectype,
+ 	first determine whether it is NULL.
+ 
+ 2025-08-14  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/121414
+ 	* config/aarch64/aarch64.cc (aarch64_is_variant_pcs): New function,
+ 	split out from...
+ 	(aarch64_asm_output_variant_pcs): ...here.  Handle various types
+ 	of SME function type.
+ 
+ 2025-08-14  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/121294
+ 	* config/aarch64/aarch64.md (UNSPEC_REV_PRED): New unspec.
+ 	* config/aarch64/aarch64-sve.md (@aarch64_sve_rev<mode>_acle)
+ 	(*aarch64_sve_rev<mode>_acle): New patterns.
+ 	* config/aarch64/aarch64-sve-builtins-base.cc
+ 	(svrev_impl::expand): Use the new patterns for boolean svrev.
+ 
+ 2025-08-14  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/121294
+ 	* config/aarch64/iterators.md (UNSPEC_TRN1_CONV): Delete.
+ 	(UNSPEC_PERMUTE_PRED): New unspec.
+ 	* config/aarch64/aarch64-sve.md (@aarch64_sve_trn1_conv<mode>):
+ 	Replace with...
+ 	(@aarch64_sve_<perm_insn><mode>_acle)
+ 	(*aarch64_sve_<perm_insn><mode>_acle): ...these new patterns.
+ 	* config/aarch64/aarch64.cc (aarch64_expand_sve_const_pred_trn):
+ 	Update accordingly.
+ 	* config/aarch64/aarch64-sve-builtins-functions.h
+ 	(binary_permute::expand): Use the new _acle patterns for
+ 	predicate operations.
+ 
+ 2025-08-14  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/120718
+ 	* simplify-rtx.cc (simplify_context::simplify_gen_subreg):
+ 	Remove MODE_COMPOSITE_P condition.
+ 
+ 2025-08-14  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/121007
+ 	* lra-constraints.cc (process_address_1): When changing base reg
+ 	on a reg of the base class, fall back to reload of whole inner address.
+ 	(process_address): Constrain the iteration number.
+ 
+ 2025-08-14  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	Backported from master:
+ 	2025-06-22  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	PR target/119830
+ 	* config/riscv/riscv.cc (riscv_build_integer_1): Make arithmetic in bclr case
+ 	clean for 32 bit hosts.
+ 
+ 2025-08-14  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-07-28  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/121208
+ 	* config/i386/i386.cc (ix86_tls_get_addr): Issue an error for
+ 	-mtls-dialect=gnu with no_caller_saved_registers attribute and
+ 	suggest -mtls-dialect=gnu2.
+ 
+ 2025-08-13  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2025-07-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 		    Yury Khrustalev  <yury.khrustalev@arm.com>
+ 
+ 	* doc/sourcebuild.texi (aarch64_sme_hw): Document.
+ 
+ 2025-08-13  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	Backported from master:
+ 	2025-08-13  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	PR target/120476
+ 	* config/loongarch/loongarch.cc
+ 	(loongarch_compute_pressure_classes): New function.
+ 	(TARGET_COMPUTE_PRESSURE_CLASSES): Define.
+ 
+ 2025-08-12  mengqinggang  <mengqinggang@loongson.cn>
+ 
+ 	Backported from master:
+ 	2025-08-12  mengqinggang  <mengqinggang@loongson.cn>
+ 
+ 	* config/loongarch/loongarch-def.h (ABI_BASE_LP64D): New macro.
+ 	(ABI_BASE_LP64F): New macro.
+ 	(ABI_BASE_LP64S): New macro.
+ 	(N_ABI_BASE_TYPES): New macro.
+ 
+ 2025-08-10  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	Backported from master:
+ 	2025-07-12  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR rtl-optimization/120983
+ 	* lra-constraints.cc (process_alt_operands): Allow reloading
+ 	user hard registers unless the insn is an asm.
+ 
+ 2025-08-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-08-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/121389
+ 	* tree-tailcall.cc (find_tail_calls): For finally_tmp.N
+ 	handle not just GIMPLE_CONDs with EQ_EXPR/NE_EXPR and only
+ 	values 0 and 1, but arbitrary non-negative values, arbitrary
+ 	comparisons in conditions and also GIMPLE_SWITCH next to
+ 	GIMPLE_CONDs.
+ 
+ 2025-08-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-08-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/121413
+ 	* gimple-lower-bitint.cc (abi_limb_prec): New variable
+ 	(bitint_precision_kind): Initialize it.
+ 	(gimple_lower_bitint): Clear it at the start.  For
+ 	min_prec > limb_prec descreased precision vars for
+ 	INTEGER_CST PHI arguments ensure min_prec is either
+ 	prec or multiple of abi_limb_prec.
+ 
+ 2025-08-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-08-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/121127
+ 	* gimple-lower-bitint.cc (bitint_large_huge::handle_operand_addr): For
+ 	uninitialized SSA_NAME, set *prec_stored to 0 rather than *prec.
+ 	Handle that case in narrowing casts.  If prec_stored is non-NULL,
+ 	set *prec_stored to prec_stored_val.
+ 
  2025-08-08  Release Manager
  
  	* GCC 15.2.0 released.
diff -Nrcpad gcc-15.2.0/gcc/DATESTAMP gcc-15.3.0/gcc/DATESTAMP
*** gcc-15.2.0/gcc/DATESTAMP	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/DATESTAMP	Fri Jun 12 06:09:05 2026
***************
*** 1 ****
! 20250808
--- 1 ----
! 20260612
diff -Nrcpad gcc-15.2.0/gcc/ada/ChangeLog gcc-15.3.0/gcc/ada/ChangeLog
*** gcc-15.2.0/gcc/ada/ChangeLog	Fri Aug  8 06:52:35 2025
--- gcc-15.3.0/gcc/ada/ChangeLog	Fri Jun 12 06:10:03 2026
***************
*** 1,3 ****
--- 1,457 ----
+ 2026-06-12  Release Manager
+ 
+ 	* GCC 15.3.0 released.
+ 
+ 2026-06-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/125695
+ 	* libgnat/s-genbig.adb ("**"): Do not drop the sign on the floor.
+ 	(Big_Exp): Take into account the parity of the exponent for -2.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_rm/gnat_language_extensions.rst
+ 	(Generalized Finalization): Document the new restriction.
+ 	* sem_ch13.adb (Resolve_Finalizable_Argument): Adjust wording of
+ 	error message.
+ 	(Resolve_Finalization_Procedure.Is_Finalizable_Primitive): Require
+ 	the procedure to be a primitive operation.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2026-05-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/125240
+ 	* gen_il-gen-gen_entities.adb (Enumeration_Kind): Make
+ 	Lit_Indexes and Lit_Strings be defined for root types only.
+ 	* einfo.ads (Lit_Hash): Adjust description.
+ 	(Lit_Indexes): Likewise.
+ 	(Lit_Strings): Likewise.
+ 	(E_Enumeration_Type): Likewise.
+ 	* exp_imgv.adb (Expand_Image_Attribute): Do not fetch the root type
+ 	for enumeration types, except for character types, and adjust.
+ 
+ 2026-04-30  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/125044
+ 	* sem_disp.adb (Check_Controlling_Formals): Apply the same massaging
+ 	to the result subtype as to the parameter subtypes.
+ 
+ 2026-04-29  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/125044
+ 	* exp_ch6.ads (Needs_BIP_Task_Actuals): Adjust description.
+ 	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Move activation
+ 	chain for every build-in-place function with task formal parameters
+ 	when the type of the return object might have tasks.
+ 
+ 2026-04-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/124836
+ 	* adaint.c [__MINGW32__]: Do not include mingw32.h twice, and also
+ 	include sys/param.h.
+ 
+ 2026-04-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Simple_Function_Return): Use a constant return
+ 	object when the simple return is rewritten as an extended one.
+ 	* libgnat/s-secsta.adb (SS_Allocate): Raise Storage_Error if the
+ 	requested size is negative.
+ 	* libgnat/s-secsta__cheri.adb (SS_Allocate): Likewise.
+ 
+ 2026-03-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/124607
+ 	* sem_elab.adb (Has_Body.Find_Body): Fix thinko.
+ 
+ 2026-03-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/124606
+ 	* sem_ch12.adb (Find_Actual_Type): Rename formal parameter.
+ 	(Map_Formal_Package_Entities): Do not register base types.
+ 
+ 2026-03-14  Matthias Klose  <doko@gcc.gnu.org>
+ 
+ 	PR ada/107475
+ 	* Makefile.rtl (s390% linux%): Define MISCLIB.
+ 	(arm% linux-gnueabi%): Likewise.
+ 	(%x32 linux%): Likewise.
+ 
+ 2026-02-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/124285
+ 	* gcc-interface/decl.cc (components_to_record): Force a packed
+ 	layout for the innermost variant of an unchecked union type with
+ 	fixed part and full representation clause.
+ 
+ 2026-02-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/123306
+ 	* freeze.adb (Freeze_Entity): For a class-wide equivalent type of
+ 	a non-interface root type, freeze the root type before it.
+ 	* sem_ch3.adb (Derived_Type_Declaration): Minor tweak.
+ 	* sem_ch12.adb (Analyze_One_Association): Revert latest change.
+ 	* sem_ch13.adb (Analyze_Attribute_Definition_Clause) <Size>: When
+ 	the prefix is a class-wide type, insert the declaration of the CW-
+ 	equivalent type immediately after that of the root type, and the
+ 	size check for the root type into its own freezing actions.
+ 
+ 2026-02-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/124226
+ 	* sem_res.adb (Resolve_Implicit_Dereference): Move declaration to...
+ 	* sem_res.ads (Resolve_Implicit_Dereference): ...here.
+ 	* sem_attr.adb (Resolve_Attribute) <Attribute_Access>: Also call
+ 	Resolve_Implicit_Dereference when resolving a protected operation.
+ 
+ 2026-02-24  Eric Botcazou  <ebotcazou@adacore.com>
+ 	    Liam Powell  <liam@liampwll.com>
+ 
+ 	PR ada/124224
+ 	* sem_aggr.adb (Resolve_Container_Aggregate): Minor tweaks.
+ 	(Resolve_Iterated_Association): Compute Typ on all paths.
+ 
+ 2026-02-20  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-stposu.adb (Finalize_Pool): Pass a local copy of the
+ 	handle in the call to Finalize_And_Deallocate.
+ 
+ 2026-02-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/124106
+ 	* exp_ch4.adb (Expand_N_Allocator): Minor fix in commentary.
+ 	(Expand_Allocator_Expression): Propagate the Subpool_Handle_Name
+ 	of the original allocator onto the newly built allocators.
+ 	* exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Likewise.
+ 	Use Preserve_Comes_From_Source to propagate Comes_From_Source.
+ 	(Make_CPP_Constructor_Call_In_Allocator): Likewise.
+ 
+ 2026-02-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 	    Liam Powell  <liam@liampwll.com>
+ 
+ 	PR ada/124054
+ 	* exp_util.adb (Build_Allocate_Deallocate_Proc): Tidy up and pass
+ 	Proc_Id as the new scope in the call to the New_Copy_Tree function.
+ 
+ 2026-02-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 	    Liam Powell  <liam@liampwll.com>
+ 
+ 	PR ada/124025
+ 	* exp_ch9.adb (Expand_Entry_Barrier.Is_Global_Entity): Use
+ 	Scope_Within_Or_Same to test whether the object is local.
+ 
+ 2026-02-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 	    Liam Powell  <liam@liampwll.com>
+ 
+ 	PR ada/123902
+ 	* sem_ch4.adb (Analyze_Selected_Component): Also test
+ 	Core_Extensions_Allowed for discriminated private types.
+ 	Rework and augment commentary throughout the procedure.
+ 
+ 2026-02-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 	    Liam Powell  <liam@liampwll.com>
+ 
+ 	PR ada/121316
+ 	* exp_ch5.adb (Expand_Iterator_Loop_Over_Array): Minor tweak.
+ 	(Expand_Iterator_Loop_Over_Container): Likewise.
+ 	(Expand_N_Loop_Statement): Use Statements (N) throughout.
+ 
+ 2026-01-30  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/123867
+ 	* sem_ch10.adb (Analyze_Compilation_Unit): Output info message
+ 	when -gnatdi is specified.
+ 	(Install_Parents): Likewise.  Set the Is_Visible_Lib_Unit flag
+ 	on the unit.
+ 	(Install_Private_With_Clauses): Do not output info message here.
+ 	(Remove_Parents): Output info message when -gnatdi is specified
+ 	and clear the Is_Visible_Lib_Unit flag on the unit.
+ 
+ 2026-01-29  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/123861
+ 	* sem_type.adb (Covers): Fix couple of typos in comment.
+ 	(Specific_Type): Adjust to Covers' handling of types declared
+ 	with the Aggregate aspect in Ada 2022.
+ 
+ 2026-01-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/123857
+ 	* checks.adb (Apply_Parameter_Validity_Checks.Add_Validity_Check):
+ 	Set Is_Checked on the generated {Pre,Post}_Condition pragma and
+ 	bail out if the parameter is of an Unchecked_Union type.
+ 
+ 2026-01-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/123832
+ 	* exp_imgv.adb: Add with and use clauses for Exp_Ch7.
+ 	(Expand_Image_Attribute): Establish a transient scope before
+ 	rewriting the attribute as a call to Put_Image.
+ 	(Expand_Wide_Image_Attribute): Likewise.
+ 	(Expand_Wide_Wide_Image_Attribute): Likewise.
+ 	* exp_put_image.ads (Build_Image_Call): Add note about the
+ 	need for a transient scope when the function is invoked.
+ 	* exp_put_image.adb (Build_Image_Call): Call Insert_Actions
+ 	to immediately insert the actions instead of wrapping them
+ 	in an Expression_With_Actions node.
+ 
+ 2026-01-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/123580
+ 	* sem_ch13.adb (Analyze_Aspects_At_Freeze_Point): Replace call to
+ 	Scope_Within_Or_Same (Current_Scope, S) with In_Open_Scopes (S) to
+ 	test whether S is open in the current scope.
+ 	* sem_util.adb (From_Nested_Package): Likewise.
+ 
+ 2026-01-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 	    Lisa Felidae  <lisa@felidae.bam.moe>
+ 
+ 	PR ada/68179
+ 	PR ada/123589
+ 	* exp_ch3.adb (Expand_Freeze_Array_Type): Build an initialization
+ 	procedure for a bit-packed array type if Has_Default_Aspect is set
+ 	on the base type, but make sure not to build it twice.  Also test
+ 	Has_Default_Aspect for a type derived from String.
+ 
+ 2026-01-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/68179
+ 	* exp_ch3.adb (Expand_Freeze_Array_Type): Build an initialization
+ 	procedure for a type derived from String declared with the aspect
+ 	Default_Aspect_Component_Value.
+ 
+ 2026-01-03  Eric Botcazou  <ebotcazou@gcc.gnu.org>
+ 
+ 	PR ada/123371
+ 	* sem_aggr.adb (Resolve_Iterated_Association): Call Preanalyze
+ 	instead of Analyze consistently, as well as Copy_Separate_Tree
+ 	instead of New_Copy_Tree.
+ 
+ 2025-12-27  Eric Botcazou  <ebotcazou@gcc.gnu.org>
+ 
+ 	PR ada/123306
+ 	* sem_ch12.adb (Analyze_One_Association): Immediately freeze the
+ 	root type of mutably tagged types used as actual type parameters.
+ 
+ 2025-12-26  Eric Botcazou  <ebotcazou@gcc.gnu.org>
+ 
+ 	PR ada/123088
+ 	* sem_aggr.adb (Resolve_Record_Aggregate): Add more robust guard.
+ 
+ 2025-12-26  Eric Botcazou  <ebotcazou@gcc.gnu.org>
+ 
+ 	PR ada/123302
+ 	* sem_ch12.adb (Save_Global_Reference.Save_References_In_Aggregate):
+ 	Recurse on the scope of the type to find one that is visible, in the
+ 	case of an actual in a subprogram call with a local type.
+ 
+ 2025-12-26  Eric Botcazou  <ebotcazou@gcc.gnu.org>
+ 
+ 	PR ada/123289
+ 	* sem_ch13.adb (Resolve_Aspect_Aggregate.Resolve_Operation): Give
+ 	an error if the operation's name denotes more than one subprogram.
+ 
+ 2025-12-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/123185
+ 	* sem_ch4.adb (Analyze_Overloaded_Selected_Component): Go to the
+ 	root when the prefix has a class-wide type.
+ 	* sem_res.adb (Resolve_Selected_Component): Likewise.
+ 
+ 2025-12-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/123060
+ 	* gcc-interface/utils.cc (update_pointer_to): Streamline.
+ 
+ 2025-12-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/123060
+ 	* gcc-interface/utils.cc (update_pointer_to): Preserve the alias
+ 	sets present on the old pointer and old reference, if any.
+ 
+ 2025-12-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/123138
+ 	* exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_Reduce>:
+ 	Override a universal numeric type only if the prefix is not an
+ 	aggregate.
+ 
+ 2025-12-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/123060
+ 	* gcc-interface/utils.cc (update_pointer_to): Synthesize a new
+ 	TYPE_CANONICAL for the old pointer type in the case where there
+ 	is no new pointer type.  Likewise for references.
+ 
+ 2025-12-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/123096
+ 	* exp_put_image.adb (Build_Record_Put_Image_Procedure): Call
+ 	Incomplete_Or_Partial_View with Partial_Only set to True.
+ 
+ 2025-12-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/123088
+ 	* sem_aggr.adb (Resolve_Record_Aggregate): Add missing guard.
+ 
+ 2025-12-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/123037
+ 	* rtinit.c [__MINGW32__]: Include <stdlib.h> and not <windows.h>.
+ 	* rtfinal.c [__MINGW32__]: Do not include <windows.h>.
+ 
+ 2025-12-06  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR ada/115305
+ 	* Makefile.rtl: Use s-oslock__darwin instead of the Posix version.
+ 	* libgnat/s-oslock__darwin.ads: New file.
+ 
+ 2025-11-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* repinfo.adb (List_Location): Do not output the final comma.
+ 	(List_Common_Type_Info): Adjust to above change.  Do not output
+ 	"??" for an unknown alignment.
+ 	(List_Entities): Do not output generic types.
+ 	(List_Object_Info): Adjust to above change.
+ 	(List_Subprogram_Info): Likewise.
+ 
+ 2025-11-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_type.adb (Last_Overloaded): Fix typo.
+ 
+ 2025-11-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/111433
+ 	* sem_util.ads (Incomplete_Or_Partial_View): Add Partial_Only formal
+ 	parameter.
+ 	* sem_util.adb (Incomplete_Or_Partial_View): Likewise.  Do not look
+ 	for an incomplete view if it is set to True.
+ 	* sem_ch6.adb (Check_Conformance.Null_Exclusions_Match): Pass True
+ 	for Partial_Only in the call to Incomplete_Or_Partial_View.
+ 
+ 2025-11-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/122640
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Set Is_True_Constant
+ 	on entry for constants and Never_Set_In_Source in all cases.
+ 	If an initialization expression is present, set Has_Initial_Value
+ 	and Is_True_Constant on variables.
+ 
+ 2025-11-12  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Call Mutate_Ekind earlier.
+ 
+ 2025-11-04  Bob Duff  <duff@adacore.com>
+ 
+ 	PR ada/118208
+ 	* exp_ch5.adb
+ 	(Expand_Assign_With_Target_Names.Replace_Target):
+ 	Remove code setting Entity to Empty.
+ 	* sinfo.ads (Has_Target_Names):
+ 	Improve comment: add "@" to clarify what "target name"
+ 	means, and remove the content-free phrase "and must
+ 	be expanded accordingly."
+ 
+ 2025-10-24  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/118782
+ 	* styleg.adb (Is_Box_Comment): Also stop the loop at EOF.
+ 
+ 2025-10-24  Nicolas Boulenguez  <nicolas@debian.org>
+ 
+ 	PR ada/81087
+ 	* gnatlink.adb (Is_Prefix): Move around, streamline and return false
+ 	when the prefix is not strict.
+ 	(Gnatlink): Fix other instances of incorrect lower bound assumption.
+ 
+ 2025-10-20  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/107536
+ 	* exp_ch2.adb (Expand_Renaming): Mark the entity as referenced.
+ 
+ 2025-10-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/118343
+ 	* Makefile.rtl (LLVM_BUILD): Delete.
+ 
+ 2025-09-30  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/117517
+ 	* sem_attr.adb (Resolve_Attribute) <Attribute_Reduce>: Try to
+ 	resolve the reducer first.  Fix casing of error message.
+ 
+ 2025-09-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/121968
+ 	* sem_ch12.adb (Associations.Find_Assoc): Add guard for clauses.
+ 	* sem_dim.adb (Analyze_Dimension_Array_Aggregate): Add test for
+ 	N_Iterated_Component_Association nodes.
+ 
+ 2025-09-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.cc (gnat_to_gnu)
+ 	<N_Object_Renaming_Declaration>: Deal with objects whose elaboration
+ 	is deferred.
+ 	(process_freeze_entity): Deal with renamed objects whose elaboration
+ 	is deferred.
+ 
+ 2025-09-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* checks.adb (Apply_Discriminant_Check): Remove undocumented test
+ 	on Is_Aliased_View applied to the left-hand side to skip the check
+ 	in the case where the subtypes are the same, and replace it with a
+ 	test that the subtypes are constrained.
+ 
+ 2025-09-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_util.adb (Finalize_Address): In an untagged derivation, call
+ 	Root_Type on the full view of the base type if the partial view is
+ 	itself not a derived type.
+ 	(Is_Untagged_Derivation): Minor formatting tweak.
+ 
+ 2025-09-11  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_aggr.adb (Build_Container_Aggr_Code.Build_Size_Expr): In the case
+ 	of an association with a single choice, only call Update_Choices when
+ 	the choice expression is nonstatic.
+ 
+ 2025-09-11  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_util.adb (Needs_One_Actual): Add support for untagged record
+ 	types when the sources are compiled with Core Extensions allowed.
+ 
+ 2025-09-11  Viljar Indus  <indus@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Aspect_Definitions): Create a temporary
+ 	pragma for the non-task and access type cases.
+ 
+ 2025-09-11  Marc PoulhiÃ¨s  <poulhies@adacore.com>
+ 
+ 	* s-pack.adb.tmpl: Typo fix in comment.
+ 
+ 2025-09-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Check_Interrupt_Or_Attach_Handler): Refine test for
+ 	protected procedures; fix typo in comment.
+ 
+ 2025-09-11  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* exp_ch3.adb (Init_Formals): Remove the check on Global_No_Tasking.
+ 	* sem.adb: Fix typo.
+ 
+ 2025-09-11  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_aggr.adb (Build_Container_Aggr_Code.To_Int): Replace existing
+ 	conditional expression with call to Expr_Value.
+ 
+ 2025-09-11  Steve Baird  <baird@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Profile): Do not emit a warning stating that
+ 	a formal parameter's size is 8 if the parameter's size is not 8.
+ 
+ 2025-09-11  Marc PoulhiÃ¨s  <poulhies@adacore.com>
+ 
+ 	* gcc-interface/trans.cc (gnat_to_gnu): Fix typo in comment.
+ 
  2025-08-08  Release Manager
  
  	* GCC 15.2.0 released.
diff -Nrcpad gcc-15.2.0/gcc/ada/Makefile.rtl gcc-15.3.0/gcc/ada/Makefile.rtl
*** gcc-15.2.0/gcc/ada/Makefile.rtl	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/Makefile.rtl	Fri Jun 12 06:09:05 2026
*************** ifndef ADAC
*** 26,37 ****
  ADAC=$(CC)
  endif
  
- ifeq ($(LLVM_CONFIG),)
- LLVM_BUILD := $(shell $(ADAC) -v | grep ^llvm-gcc)
- else
- LLVM_BUILD := llvm-gcc
- endif
- 
  # Objects needed only for tasking
  GNATRTL_TASKING_OBJS= \
    a-dispat$(objext) \
--- 26,31 ----
*************** ifeq ($(strip $(filter-out s390% linux%,
*** 2036,2041 ****
--- 2030,2036 ----
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
    EH_MECHANISM=-gcc
    THREADSLIB = -lpthread
+   MISCLIB = -ldl
    GNATLIB_SHARED = gnatlib-shared-dual
    LIBRARY_VERSION := $(LIB_VERSION)
  endif
*************** ifeq ($(strip $(filter-out arm% linux-gn
*** 2530,2535 ****
--- 2525,2531 ----
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
    EH_MECHANISM=-arm
    THREADSLIB = -lpthread
+   MISCLIB = -ldl
    GNATLIB_SHARED = gnatlib-shared-dual
    GMEM_LIB = gmemlib
    LIBRARY_VERSION := $(LIB_VERSION)
*************** ifeq ($(strip $(filter-out %x32 linux%,$
*** 2971,2976 ****
--- 2967,2973 ----
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
    EH_MECHANISM=-gcc
    THREADSLIB=-lpthread -lrt
+   MISCLIB = -ldl
    GNATLIB_SHARED=gnatlib-shared-dual
    GMEM_LIB = gmemlib
    LIBRARY_VERSION := $(LIB_VERSION)
*************** ifeq ($(strip $(filter-out darwin%,$(tar
*** 3040,3046 ****
      s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
      s-osinte.adb<libgnarl/s-osinte__darwin.adb \
      s-osinte.ads<libgnarl/s-osinte__darwin.ads \
!     s-oslock.ads<libgnat/s-oslock__posix.ads \
      s-taprop.adb<libgnarl/s-taprop__posix.adb \
      s-taspri.ads<libgnarl/s-taspri__posix.ads \
      g-sercom.adb<libgnat/g-sercom__linux.adb \
--- 3037,3043 ----
      s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
      s-osinte.adb<libgnarl/s-osinte__darwin.adb \
      s-osinte.ads<libgnarl/s-osinte__darwin.ads \
!     s-oslock.ads<libgnat/s-oslock__darwin.ads \
      s-taprop.adb<libgnarl/s-taprop__posix.adb \
      s-taspri.ads<libgnarl/s-taspri__posix.ads \
      g-sercom.adb<libgnat/g-sercom__linux.adb \
diff -Nrcpad gcc-15.2.0/gcc/ada/adaint.c gcc-15.3.0/gcc/ada/adaint.c
*** gcc-15.2.0/gcc/ada/adaint.c	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/adaint.c	Fri Jun 12 06:09:05 2026
*************** const char *__gnat_library_template = GN
*** 344,354 ****
  
  #else
  
- #if defined (__MINGW32__)
- #include "mingw32.h"
- #else
  #include <sys/param.h>
- #endif
  
  #ifdef MAXPATHLEN
  #define GNAT_MAX_PATH_LEN MAXPATHLEN
--- 344,350 ----
diff -Nrcpad gcc-15.2.0/gcc/ada/checks.adb gcc-15.3.0/gcc/ada/checks.adb
*** gcc-15.2.0/gcc/ada/checks.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/checks.adb	Fri Jun 12 06:09:05 2026
*************** package body Checks is
*** 1539,1559 ****
           return;
        end if;
  
!       --  Suppress checks if the subtypes are the same. The check must be
!       --  preserved in an assignment to a formal, because the constraint is
!       --  given by the actual.
  
        if Nkind (Original_Node (N)) /= N_Allocator
          and then (No (Lhs)
                     or else not Is_Entity_Name (Lhs)
                     or else No (Param_Entity (Lhs)))
        then
!          if (Etype (N) = Typ
!               or else (Do_Access and then Designated_Type (Typ) = S_Typ))
!            and then (No (Lhs) or else not Is_Aliased_View (Lhs))
!          then
!             return;
!          end if;
  
        --  We can also eliminate checks on allocators with a subtype mark that
        --  coincides with the context type. The context type may be a subtype
--- 1539,1556 ----
           return;
        end if;
  
!       --  Suppress checks if the subtypes are the same and constrained. The
!       --  check must be preserved in an assignment to a formal, because the
!       --  constraint is given by the actual.
  
        if Nkind (Original_Node (N)) /= N_Allocator
+         and then (if Do_Access then Designated_Type (Typ) else Typ) = S_Typ
+         and then Is_Constrained (S_Typ)
          and then (No (Lhs)
                     or else not Is_Entity_Name (Lhs)
                     or else No (Param_Entity (Lhs)))
        then
!          return;
  
        --  We can also eliminate checks on allocators with a subtype mark that
        --  coincides with the context type. The context type may be a subtype
*************** package body Checks is
*** 2534,2539 ****
--- 2531,2540 ----
                      Chars      => Name_Check,
                      Expression => Expr)));
  
+             --  The check is enabled unconditionally
+ 
+             Set_Is_Checked (Prag);
+ 
              --  Add a message unless exception messages are suppressed
  
              if not Exception_Locations_Suppressed then
*************** package body Checks is
*** 2591,2599 ****
           if Is_Scalar_Type (Typ) then
              Nam := Name_Valid;
  
!          --  For any non-scalar with scalar parts, generate 'Valid_Scalars test
  
!          elsif Scalar_Part_Present (Typ) then
              Nam := Name_Valid_Scalars;
  
           --  No test needed for other cases (no scalars to test)
--- 2592,2603 ----
           if Is_Scalar_Type (Typ) then
              Nam := Name_Valid;
  
!          --  For non-scalars with scalar parts, generate 'Valid_Scalars test,
!          --  except for unchecked unions since we cannot know where they are.
  
!          elsif Scalar_Part_Present (Typ)
!            and then not Is_Unchecked_Union (Typ)
!          then
              Nam := Name_Valid_Scalars;
  
           --  No test needed for other cases (no scalars to test)
*************** package body Checks is
*** 2685,2692 ****
           return;
        end if;
  
!       --  Inspect all the formals applying aliasing and scalar initialization
!       --  checks where applicable.
  
        Formal := First_Formal (Subp);
        while Present (Formal) loop
--- 2689,2695 ----
           return;
        end if;
  
!       --  Apply scalar initialization checks to formals where applicable
  
        Formal := First_Formal (Subp);
        while Present (Formal) loop
diff -Nrcpad gcc-15.2.0/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst gcc-15.3.0/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst
*** gcc-15.2.0/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst	Fri Jun 12 06:09:05 2026
*************** Here is the archetypal example:
*** 1469,1476 ****
      procedure Finalize   (Obj : in out T);
      procedure Initialize (Obj : in out T);
  
! The three procedures have the same profile, with a single ``in out`` parameter,
! and also have the same dynamic semantics as for controlled types:
  
   - ``Initialize`` is called when an object of type ``T`` is declared without
     initialization expression.
--- 1469,1477 ----
      procedure Finalize   (Obj : in out T);
      procedure Initialize (Obj : in out T);
  
! The three procedures must be primitive operations of ``T`` and have a single
! ``in out`` parameter. They need not be all specified by the aspect. If they
! are specified, they have the same dynamic semantics as for controlled types:
  
   - ``Initialize`` is called when an object of type ``T`` is declared without
     initialization expression.
diff -Nrcpad gcc-15.2.0/gcc/ada/einfo.ads gcc-15.3.0/gcc/ada/einfo.ads
*** gcc-15.2.0/gcc/ada/einfo.ads	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/einfo.ads	Fri Jun 12 06:09:05 2026
*************** package Einfo is
*** 3569,3590 ****
  --       type of the object.
  
  --    Lit_Hash [root type only]
! --       Defined in enumeration types and subtypes. Non-empty only for the
! --       case of an enumeration root type, where it contains the entity for
  --       the generated hash function. See unit Exp_Imgv for full details of
  --       the nature and use of this entity for implementing the Value
  --       attribute for the enumeration type in question.
  
! --    Lit_Indexes
! --       Defined in enumeration types and subtypes. Non-empty only for the
! --       case of an enumeration root type, where it contains the entity for
  --       the generated indexes entity. See unit Exp_Imgv for full details of
  --       the nature and use of this entity for implementing the Image and
  --       Value attributes for the enumeration type in question.
  
! --    Lit_Strings
! --       Defined in enumeration types and subtypes. Non-empty only for the
! --       case of an enumeration root type, where it contains the entity for
  --       the literals string entity. See unit Exp_Imgv for full details of
  --       the nature and use of this entity for implementing the Image and
  --       Value attributes for the enumeration type in question.
--- 3569,3587 ----
  --       type of the object.
  
  --    Lit_Hash [root type only]
! --       Defined in enumeration types and subtypes. Contains the entity for
  --       the generated hash function. See unit Exp_Imgv for full details of
  --       the nature and use of this entity for implementing the Value
  --       attribute for the enumeration type in question.
  
! --    Lit_Indexes [root type only]
! --       Defined in enumeration types and subtypes. Contains the entity for
  --       the generated indexes entity. See unit Exp_Imgv for full details of
  --       the nature and use of this entity for implementing the Image and
  --       Value attributes for the enumeration type in question.
  
! --    Lit_Strings [root type only]
! --       Defined in enumeration types and subtypes. Contains the entity for
  --       the literals string entity. See unit Exp_Imgv for full details of
  --       the nature and use of this entity for implementing the Image and
  --       Value attributes for the enumeration type in question.
*************** package Einfo is
*** 5453,5464 ****
     --  E_Enumeration_Subtype
     --    First_Entity $$$ type
     --    Renamed_Object $$$
-    --    Lit_Strings                          (root type only)
     --    First_Literal
     --    Lit_Indexes                          (root type only)
     --    Default_Aspect_Value                 (base type only)
     --    Scalar_Range
-    --    Lit_Hash                             (root type only)
     --    Enum_Pos_To_Rep                      (type only)
     --    Static_Discrete_Predicate
     --    Has_Biased_Representation
--- 5450,5461 ----
     --  E_Enumeration_Subtype
     --    First_Entity $$$ type
     --    Renamed_Object $$$
     --    First_Literal
+    --    Lit_Hash                             (root type only)
     --    Lit_Indexes                          (root type only)
+    --    Lit_Strings                          (root type only)
     --    Default_Aspect_Value                 (base type only)
     --    Scalar_Range
     --    Enum_Pos_To_Rep                      (type only)
     --    Static_Discrete_Predicate
     --    Has_Biased_Representation
diff -Nrcpad gcc-15.2.0/gcc/ada/exp_aggr.adb gcc-15.3.0/gcc/ada/exp_aggr.adb
*** gcc-15.2.0/gcc/ada/exp_aggr.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/exp_aggr.adb	Fri Jun 12 06:09:05 2026
*************** package body Exp_Aggr is
*** 6789,6795 ****
                 --  Choice is a single discrete value
  
                 elsif Is_Discrete_Type (Etype (Choice)) then
!                   Update_Choices (Choice, Choice);
  
                    Temp_Siz_Exp := Make_Integer_Literal (Loc, 1);
                    Set_Is_Static_Expression (Temp_Siz_Exp);
--- 6789,6797 ----
                 --  Choice is a single discrete value
  
                 elsif Is_Discrete_Type (Etype (Choice)) then
!                   if Is_Static_Expression (Choice) then
!                      Update_Choices (Choice, Choice);
!                   end if;
  
                    Temp_Siz_Exp := Make_Integer_Literal (Loc, 1);
                    Set_Is_Static_Expression (Temp_Siz_Exp);
*************** package body Exp_Aggr is
*** 7013,7025 ****
        -- To_Int --
        ------------
  
!       --  The bounds of the discrete range are integers or enumeration literals
  
        function To_Int (Expr : N_Subexpr_Id) return Int is
        begin
!          return UI_To_Int ((if Nkind (Expr) = N_Integer_Literal
!                             then Intval (Expr)
!                             else Enumeration_Pos (Entity (Expr))));
        end To_Int;
  
        --  Local variables
--- 7015,7025 ----
        -- To_Int --
        ------------
  
!       --  The bounds of the discrete range are static discrete values
  
        function To_Int (Expr : N_Subexpr_Id) return Int is
        begin
!          return UI_To_Int (Expr_Value (Expr));
        end To_Int;
  
        --  Local variables
diff -Nrcpad gcc-15.2.0/gcc/ada/exp_attr.adb gcc-15.3.0/gcc/ada/exp_attr.adb
*** gcc-15.2.0/gcc/ada/exp_attr.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/exp_attr.adb	Fri Jun 12 06:09:05 2026
*************** package body Exp_Attr is
*** 6368,6381 ****
                    Accum_Typ := Etype (N);
                 end if;
  
!                --  Try to cope with wrong E1 when Etype (N) doesn't help
                 if Is_Universal_Numeric_Type (Accum_Typ) then
!                   if Is_Array_Type (Etype (Prefix (N))) then
                       Accum_Typ := Component_Type (Etype (Prefix (N)));
-                   else
-                      --  Further hackery can be added here when there is a
-                      --  demonstrated need.
-                      null;
                    end if;
                 end if;
  
--- 6368,6380 ----
                    Accum_Typ := Etype (N);
                 end if;
  
!                --  If Accum_Typ is a universal numeric type and the prefix
!                --  is not an aggregate, use its component type in order to
!                --  avoid resolution problems later on.
! 
                 if Is_Universal_Numeric_Type (Accum_Typ) then
!                   if Nkind (Prefix (N)) /= N_Aggregate then
                       Accum_Typ := Component_Type (Etype (Prefix (N)));
                    end if;
                 end if;
  
diff -Nrcpad gcc-15.2.0/gcc/ada/exp_ch2.adb gcc-15.3.0/gcc/ada/exp_ch2.adb
*** gcc-15.2.0/gcc/ada/exp_ch2.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/exp_ch2.adb	Fri Jun 12 06:09:05 2026
*************** package body Exp_Ch2 is
*** 706,714 ****
        T : constant Entity_Id := Etype (N);
  
     begin
        Rewrite (N, New_Copy_Tree (Renamed_Object (E)));
  
!       --  We mark the copy as unanalyzed, so that it is sure to be reanalyzed
        --  at the top level. This is needed in the packed case since we
        --  specifically avoided expanding packed array references when the
        --  renaming declaration was analyzed.
--- 706,720 ----
        T : constant Entity_Id := Etype (N);
  
     begin
+       --  Mark the entity as referenced since this reference is going away
+ 
+       Set_Referenced (E);
+ 
+       --  Now rewrite the reference as a copy of the renamed object
+ 
        Rewrite (N, New_Copy_Tree (Renamed_Object (E)));
  
!       --  Mark the copy as unanalyzed to make sure that it is reanalyzed
        --  at the top level. This is needed in the packed case since we
        --  specifically avoided expanding packed array references when the
        --  renaming declaration was analyzed.
diff -Nrcpad gcc-15.2.0/gcc/ada/exp_ch3.adb gcc-15.3.0/gcc/ada/exp_ch3.adb
*** gcc-15.2.0/gcc/ada/exp_ch3.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/exp_ch3.adb	Fri Jun 12 06:09:05 2026
*************** package body Exp_Ch3 is
*** 5416,5421 ****
--- 5416,5423 ----
            (Component_Type (Typ));
  
     begin
+       --  First, the nonpacked case
+ 
        if not Is_Bit_Packed_Array (Typ) then
           if No (Init_Proc (Base)) then
  
*************** package body Exp_Ch3 is
*** 5438,5444 ****
              --  initialize scalars mode, and these types are treated specially
              --  and do not need initialization procedures.
  
!             elsif Is_Standard_String_Type (Base) then
                 null;
  
              --  Otherwise we have to build an init proc for the subtype
--- 5440,5448 ----
              --  initialize scalars mode, and these types are treated specially
              --  and do not need initialization procedures.
  
!             elsif Is_Standard_String_Type (Base)
!               and then not Has_Default_Aspect (Base)
!             then
                 null;
  
              --  Otherwise we have to build an init proc for the subtype
*************** package body Exp_Ch3 is
*** 5458,5475 ****
              end if;
           end if;
  
!       --  For packed case, default initialization, except if the component type
!       --  is itself a packed structure with an initialization procedure, or
!       --  initialize/normalize scalars active, and we have a base type, or the
!       --  type is public, because in that case a client might specify
!       --  Normalize_Scalars and there better be a public Init_Proc for it.
  
!       elsif (Present (Init_Proc (Component_Type (Base)))
!               and then No (Base_Init_Proc (Base)))
!         or else (Init_Or_Norm_Scalars and then Base = Typ)
          or else Is_Public (Typ)
        then
!          Build_Array_Init_Proc (Base, N);
        end if;
     end Expand_Freeze_Array_Type;
  
--- 5462,5481 ----
              end if;
           end if;
  
!       --  For the packed case, no initialization, except if the component type
!       --  has an initialization procedure, or Initialize/Normalize_Scalars is
!       --  active, or there is a Default_Component_Value aspect, or the type is
!       --  public, because a client might specify Initialize_Scalars and there
!       --  better be a public Init_Proc for it.
  
!       elsif Present (Init_Proc (Component_Type (Base)))
!         or else Init_Or_Norm_Scalars
!         or else Has_Default_Aspect (Base)
          or else Is_Public (Typ)
        then
!          if No (Init_Proc (Base)) then
!             Build_Array_Init_Proc (Base, N);
!          end if;
        end if;
     end Expand_Freeze_Array_Type;
  
*************** package body Exp_Ch3 is
*** 10663,10673 ****
                         or else (Is_Record_Type (Typ)
                                   and then Is_Protected_Record_Type (Typ));
        With_Task  : constant Boolean :=
!                      not Global_No_Tasking
!                        and then
!                      (Has_Task (Typ)
!                         or else (Is_Record_Type (Typ)
!                                    and then Is_Task_Record_Type (Typ)));
        Formals : List_Id;
  
     begin
--- 10669,10677 ----
                         or else (Is_Record_Type (Typ)
                                   and then Is_Protected_Record_Type (Typ));
        With_Task  : constant Boolean :=
!                      Has_Task (Typ)
!                        or else (Is_Record_Type (Typ)
!                                  and then Is_Task_Record_Type (Typ));
        Formals : List_Id;
  
     begin
diff -Nrcpad gcc-15.2.0/gcc/ada/exp_ch4.adb gcc-15.3.0/gcc/ada/exp_ch4.adb
*** gcc-15.2.0/gcc/ada/exp_ch4.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/exp_ch4.adb	Fri Jun 12 06:09:05 2026
*************** package body Exp_Ch4 is
*** 659,665 ****
               Object_Definition   => New_Occurrence_Of (Typ, Loc),
               Expression          =>
                 Make_Allocator (Loc,
!                  Expression => New_Occurrence_Of (Etype (Exp), Loc)));
  
        begin
           --  Prevent default initialization of the allocator
--- 659,667 ----
               Object_Definition   => New_Occurrence_Of (Typ, Loc),
               Expression          =>
                 Make_Allocator (Loc,
!                  Subpool_Handle_Name =>
!                    Relocate_Node (Subpool_Handle_Name (N)),
!                  Expression          => New_Occurrence_Of (Etype (Exp), Loc)));
  
        begin
           --  Prevent default initialization of the allocator
*************** package body Exp_Ch4 is
*** 698,704 ****
               Object_Definition   => New_Occurrence_Of (Typ, Loc),
               Expression          =>
                 Make_Allocator (Loc,
!                  Expression => New_Occurrence_Of (Etype (Exp), Loc)));
  
        begin
           --  Prevent default initialization of the allocator
--- 700,708 ----
               Object_Definition   => New_Occurrence_Of (Typ, Loc),
               Expression          =>
                 Make_Allocator (Loc,
!                  Subpool_Handle_Name =>
!                    Relocate_Node (Subpool_Handle_Name (N)),
!                  Expression          => New_Occurrence_Of (Etype (Exp), Loc)));
  
        begin
           --  Prevent default initialization of the allocator
*************** package body Exp_Ch4 is
*** 4559,4566 ****
  
        --  Set the storage pool and find the appropriate version of Allocate to
        --  call. Do not overwrite the storage pool if it is already set, which
!       --  can happen for build-in-place function returns (see
!       --  Exp_Ch4.Expand_N_Extended_Return_Statement).
  
        if No (Storage_Pool (N)) then
           Pool := Associated_Storage_Pool (Root_Type (PtrT));
--- 4563,4569 ----
  
        --  Set the storage pool and find the appropriate version of Allocate to
        --  call. Do not overwrite the storage pool if it is already set, which
!       --  can occur for BIP function returns (see Expand_N_Object_Declaration).
  
        if No (Storage_Pool (N)) then
           Pool := Associated_Storage_Pool (Root_Type (PtrT));
diff -Nrcpad gcc-15.2.0/gcc/ada/exp_ch5.adb gcc-15.3.0/gcc/ada/exp_ch5.adb
*** gcc-15.2.0/gcc/ada/exp_ch5.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/exp_ch5.adb	Fri Jun 12 06:09:05 2026
*************** package body Exp_Ch5 is
*** 2254,2260 ****
        function Replace_Target (N : Node_Id) return Traverse_Result;
        --  Replace occurrences of the target name by the proper entity: either
        --  the entity of the LHS in simple cases, or the formal of the
!       --  constructed procedure otherwise.
  
        --------------------
        -- Replace_Target --
--- 2254,2261 ----
        function Replace_Target (N : Node_Id) return Traverse_Result;
        --  Replace occurrences of the target name by the proper entity: either
        --  the entity of the LHS in simple cases, or the formal of the
!       --  constructed procedure otherwise. Mark all nodes as Analyzed=False
!       --  so reanalysis will occur.
  
        --------------------
        -- Replace_Target --
*************** package body Exp_Ch5 is
*** 2264,2283 ****
        begin
           if Nkind (N) = N_Target_Name then
              Rewrite (N, New_Occurrence_Of (Ent, Sloc (N)));
- 
-          --  The expression will be reanalyzed when the enclosing assignment
-          --  is reanalyzed, so reset the entity, which may be a temporary
-          --  created during analysis, e.g. a loop variable for an iterated
-          --  component association. However, if entity is callable then
-          --  resolution has established its proper identity (including in
-          --  rewritten prefixed calls) so we must preserve it.
- 
-          elsif Is_Entity_Name (N) then
-             if Present (Entity (N))
-               and then not Is_Overloadable (Entity (N))
-             then
-                Set_Entity (N, Empty);
-             end if;
           end if;
  
           Set_Analyzed (N, False);
--- 2265,2270 ----
*************** package body Exp_Ch5 is
*** 4978,4984 ****
        Array_Dim  : constant Pos        := Number_Dimensions (Array_Typ);
        Id         : constant Entity_Id  := Defining_Identifier (I_Spec);
        Loc        : constant Source_Ptr := Sloc (Isc);
!       Stats      : List_Id    := Statements (N);
        Core_Loop  : Node_Id;
        Dim1       : Int;
        Ind_Comp   : Node_Id;
--- 4965,4974 ----
        Array_Dim  : constant Pos        := Number_Dimensions (Array_Typ);
        Id         : constant Entity_Id  := Defining_Identifier (I_Spec);
        Loc        : constant Source_Ptr := Sloc (Isc);
! 
!       Stats : List_Id := Statements (N);
!       --  Maybe wrapped in a conditional if a filter is present
! 
        Core_Loop  : Node_Id;
        Dim1       : Int;
        Ind_Comp   : Node_Id;
*************** package body Exp_Ch5 is
*** 5268,5274 ****
        Id_Kind  : constant Entity_Kind := Ekind (Id);
        Loc      : constant Source_Ptr  := Sloc (N);
  
!       Stats    : List_Id     := Statements (N);
        --  Maybe wrapped in a conditional if a filter is present
  
        Cursor         : Entity_Id;
--- 5258,5264 ----
        Id_Kind  : constant Entity_Kind := Ekind (Id);
        Loc      : constant Source_Ptr  := Sloc (N);
  
!       Stats : List_Id := Statements (N);
        --  Maybe wrapped in a conditional if a filter is present
  
        Cursor         : Entity_Id;
*************** package body Exp_Ch5 is
*** 5789,5795 ****
              Loop_Id : constant Entity_Id := Defining_Identifier (LPS);
              Ltype   : constant Entity_Id := Etype (Loop_Id);
              Btype   : constant Entity_Id := Base_Type (Ltype);
!             Stats   : constant List_Id   := Statements (N);
              Expr    : Node_Id;
              Decls   : List_Id;
              New_Id  : Entity_Id;
--- 5779,5785 ----
              Loop_Id : constant Entity_Id := Defining_Identifier (LPS);
              Ltype   : constant Entity_Id := Etype (Loop_Id);
              Btype   : constant Entity_Id := Base_Type (Ltype);
! 
              Expr    : Node_Id;
              Decls   : List_Id;
              New_Id  : Entity_Id;
*************** package body Exp_Ch5 is
*** 5810,5816 ****
                 Set_Statements (N,
                    New_List (Make_If_Statement (Loc,
                      Condition => Iterator_Filter (LPS),
!                     Then_Statements => Stats)));
                 Analyze_List (Statements (N));
              end if;
  
--- 5800,5806 ----
                 Set_Statements (N,
                    New_List (Make_If_Statement (Loc,
                      Condition => Iterator_Filter (LPS),
!                     Then_Statements => Statements (N))));
                 Analyze_List (Statements (N));
              end if;
  
*************** package body Exp_Ch5 is
*** 5930,5936 ****
                         Declarations => Decls,
                         Handled_Statement_Sequence =>
                           Make_Handled_Sequence_Of_Statements (Loc,
!                            Statements => Stats))),
  
                     End_Label => End_Label (N)));
  
--- 5920,5926 ----
                         Declarations => Decls,
                         Handled_Statement_Sequence =>
                           Make_Handled_Sequence_Of_Statements (Loc,
!                            Statements => Statements (N)))),
  
                     End_Label => End_Label (N)));
  
diff -Nrcpad gcc-15.2.0/gcc/ada/exp_ch6.adb gcc-15.3.0/gcc/ada/exp_ch6.adb
*** gcc-15.2.0/gcc/ada/exp_ch6.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/exp_ch6.adb	Fri Jun 12 06:09:05 2026
*************** package body Exp_Ch6 is
*** 5491,5498 ****
        Loc          : constant Source_Ptr := Sloc (N);
        Func_Id      : constant Entity_Id :=
                         Return_Applies_To (Return_Statement_Entity (N));
-       Is_BIP_Func  : constant Boolean   :=
-                        Is_Build_In_Place_Function (Func_Id);
        Ret_Obj_Id   : constant Entity_Id :=
                         First_Entity (Return_Statement_Entity (N));
        Ret_Obj_Decl : constant Node_Id   := Parent (Ret_Obj_Id);
--- 5491,5496 ----
*************** package body Exp_Ch6 is
*** 5607,5618 ****
           --  master. But Move_Activation_Chain updates their master to be that
           --  of the caller, so they will not be terminated unless the return
           --  statement completes unsuccessfully due to exception, abort, goto,
!          --  or exit. As a formality, we test whether the function requires the
!          --  result to be built in place, though that's necessarily true for
!          --  the case of result types with task parts.
! 
!          if Is_BIP_Func and then Has_Task (Ret_Typ) then
  
              --  The return expression is an aggregate for a complex type which
              --  contains tasks. This particular case is left unexpanded since
              --  the regular expansion would insert all temporaries and
--- 5605,5617 ----
           --  master. But Move_Activation_Chain updates their master to be that
           --  of the caller, so they will not be terminated unless the return
           --  statement completes unsuccessfully due to exception, abort, goto,
!          --  or exit. Note that we test that the function is both BIP and has
!          --  implicit task formal parameters, because not all functions whose
!          --  result type contains tasks have them (see Needs_BIP_Task_Actuals).
  
+          if Is_Build_In_Place_Function (Func_Id)
+            and then Needs_BIP_Task_Actuals (Func_Id)
+          then
              --  The return expression is an aggregate for a complex type which
              --  contains tasks. This particular case is left unexpanded since
              --  the regular expansion would insert all temporaries and
*************** package body Exp_Ch6 is
*** 5625,5631 ****
              --  Do not move the activation chain if the return object does not
              --  contain tasks.
  
!             if Has_Task (Etype (Ret_Obj_Id)) then
                 Append_To (Stmts, Move_Activation_Chain (Func_Id));
              end if;
           end if;
--- 5624,5630 ----
              --  Do not move the activation chain if the return object does not
              --  contain tasks.
  
!             if Might_Have_Tasks (Etype (Ret_Obj_Id)) then
                 Append_To (Stmts, Move_Activation_Chain (Func_Id));
              end if;
           end if;
*************** package body Exp_Ch6 is
*** 6704,6710 ****
        --
        --  into
        --
!       --    return _anonymous_ : <return_subtype> := <expression>
  
        --  The expansion produced by Expand_N_Extended_Return_Statement will
        --  contain simple return statements (for example, a block containing
--- 6703,6709 ----
        --
        --  into
        --
!       --    return _anonymous_ : constant <return_subtype> := <expression>
  
        --  The expansion produced by Expand_N_Extended_Return_Statement will
        --  contain simple return statements (for example, a block containing
*************** package body Exp_Ch6 is
*** 6736,6741 ****
--- 6735,6741 ----
              Obj_Decl : constant Node_Id :=
                           Make_Object_Declaration (Loc,
                             Defining_Identifier => Make_Temporary (Loc, 'R'),
+                            Constant_Present    => True,
                             Object_Definition   => Subtype_Ind,
                             Expression          => Relocate_Node (Exp));
  
*************** package body Exp_Ch6 is
*** 8404,8420 ****
  
           New_Allocator :=
             Make_Allocator (Loc,
!              Expression => New_Occurrence_Of (Result_Subt, Loc));
           Set_No_Initialization (New_Allocator);
  
!          --  Copy attributes to new allocator. Note that the new allocator
!          --  logically comes from source if the original one did, so copy the
!          --  relevant flag. This ensures proper treatment of the restriction
!          --  No_Implicit_Heap_Allocations in this case.
  
           Set_Storage_Pool      (New_Allocator, Storage_Pool      (Allocator));
           Set_Procedure_To_Call (New_Allocator, Procedure_To_Call (Allocator));
-          Set_Comes_From_Source (New_Allocator, Comes_From_Source (Allocator));
  
           Rewrite (Allocator, New_Allocator);
  
--- 8404,8427 ----
  
           New_Allocator :=
             Make_Allocator (Loc,
!              Subpool_Handle_Name =>
!                Relocate_Node (Subpool_Handle_Name (Allocator)),
!              Expression          => New_Occurrence_Of (Result_Subt, Loc));
! 
!          --  Prevent default initialization of the allocator
! 
           Set_No_Initialization (New_Allocator);
  
!          --  Copy the Comes_From_Source flag onto the allocator since logically
!          --  this allocator is a replacement of the original allocator. This is
!          --  for proper handling of restriction No_Implicit_Heap_Allocations.
! 
!          Preserve_Comes_From_Source (New_Allocator, Allocator);
! 
!          --  Copy the attributes set by Expand_N_Allocator
  
           Set_Storage_Pool      (New_Allocator, Storage_Pool      (Allocator));
           Set_Procedure_To_Call (New_Allocator, Procedure_To_Call (Allocator));
  
           Rewrite (Allocator, New_Allocator);
  
*************** package body Exp_Ch6 is
*** 9393,9409 ****
  
        New_Allocator :=
          Make_Allocator (Loc,
!           Expression => New_Occurrence_Of (Result_Subt, Loc));
        Set_No_Initialization (New_Allocator);
  
!       --  Copy attributes to new allocator. Note that the new allocator
!       --  logically comes from source if the original one did, so copy the
!       --  relevant flag. This ensures proper treatment of the restriction
!       --  No_Implicit_Heap_Allocations in this case.
  
        Set_Storage_Pool      (New_Allocator, Storage_Pool      (Allocator));
        Set_Procedure_To_Call (New_Allocator, Procedure_To_Call (Allocator));
-       Set_Comes_From_Source (New_Allocator, Comes_From_Source (Allocator));
  
        Rewrite (Allocator, New_Allocator);
  
--- 9400,9423 ----
  
        New_Allocator :=
          Make_Allocator (Loc,
!           Subpool_Handle_Name =>
!             Relocate_Node (Subpool_Handle_Name (Allocator)),
!           Expression          => New_Occurrence_Of (Result_Subt, Loc));
! 
!       --  Prevent default initialization of the allocator
! 
        Set_No_Initialization (New_Allocator);
  
!       --  Copy the Comes_From_Source flag onto the allocator since logically
!       --  this allocator is a replacement of the original allocator. This is
!       --  for proper handling of restriction No_Implicit_Heap_Allocations.
! 
!       Preserve_Comes_From_Source (New_Allocator, Allocator);
! 
!       --  Copy the attributes set by Expand_N_Allocator
  
        Set_Storage_Pool      (New_Allocator, Storage_Pool      (Allocator));
        Set_Procedure_To_Call (New_Allocator, Procedure_To_Call (Allocator));
  
        Rewrite (Allocator, New_Allocator);
  
diff -Nrcpad gcc-15.2.0/gcc/ada/exp_ch6.ads gcc-15.3.0/gcc/ada/exp_ch6.ads
*** gcc-15.2.0/gcc/ada/exp_ch6.ads	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/exp_ch6.ads	Fri Jun 12 06:09:05 2026
*************** package Exp_Ch6 is
*** 294,300 ****
     --  dispatching calls, and descendant types may require finalization.
  
     function Needs_BIP_Task_Actuals (Func_Id : Entity_Id) return Boolean;
!    --  Return True if the function returns an object of a type that has tasks.
  
     function Unqual_BIP_Iface_Function_Call (Expr : Node_Id) return Node_Id;
     --  Return the inner BIP function call removing any qualification from Expr
--- 294,301 ----
     --  dispatching calls, and descendant types may require finalization.
  
     function Needs_BIP_Task_Actuals (Func_Id : Entity_Id) return Boolean;
!    --  Ada 2005 (AI-318-02): Return True if the function needs implicit
!    --  BIP_Task_Master and BIP_Activation_Chain parameters.
  
     function Unqual_BIP_Iface_Function_Call (Expr : Node_Id) return Node_Id;
     --  Return the inner BIP function call removing any qualification from Expr
diff -Nrcpad gcc-15.2.0/gcc/ada/exp_ch9.adb gcc-15.3.0/gcc/ada/exp_ch9.adb
*** gcc-15.2.0/gcc/ada/exp_ch9.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/exp_ch9.adb	Fri Jun 12 06:09:05 2026
*************** package body Exp_Ch9 is
*** 5824,5830 ****
                 --  during expansion, it is ok. If expansion is not performed,
                 --  then Func is Empty so this test cannot succeed.
  
!                if Scope (E) = Func_Id then
                    null;
  
                 --  A protected call from a barrier to another object is ok
--- 5824,5830 ----
                 --  during expansion, it is ok. If expansion is not performed,
                 --  then Func is Empty so this test cannot succeed.
  
!                if Scope_Within_Or_Same (S, Func_Id) then
                    null;
  
                 --  A protected call from a barrier to another object is ok
diff -Nrcpad gcc-15.2.0/gcc/ada/exp_imgv.adb gcc-15.3.0/gcc/ada/exp_imgv.adb
*** gcc-15.2.0/gcc/ada/exp_imgv.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/exp_imgv.adb	Fri Jun 12 06:09:05 2026
*************** with Einfo;          use Einfo;
*** 30,35 ****
--- 30,36 ----
  with Einfo.Entities; use Einfo.Entities;
  with Einfo.Utils;    use Einfo.Utils;
  with Debug;          use Debug;
+ with Exp_Ch7;        use Exp_Ch7;
  with Exp_Put_Image;
  with Exp_Util;       use Exp_Util;
  with Lib;            use Lib;
*************** package body Exp_Imgv is
*** 1047,1052 ****
--- 1048,1054 ----
        --  Exp_Put_Image for details.
  
        if Exp_Put_Image.Image_Should_Call_Put_Image (N) then
+          Establish_Transient_Scope (N, Manage_Sec_Stack => True);
           Rewrite (N, Exp_Put_Image.Build_Image_Call (N));
           Analyze_And_Resolve (N, Standard_String, Suppress => All_Checks);
           return;
*************** package body Exp_Imgv is
*** 1056,1066 ****
  
        --  Ada 2022 allows 'Image on private types, so fetch the underlying
        --  type to obtain the structure of the type. We use the base type,
!       --  not the root type for discrete types, to handle properly derived
!       --  types, but we use the root type for enumeration types, because the
!       --  literal map is attached to the root. Should be inherited ???
  
!       if Is_Real_Type (Ptyp) or else Is_Enumeration_Type (Ptyp) then
           Rtyp := Underlying_Type (Root_Type (Ptyp));
        else
           Rtyp := Underlying_Type (Base_Type (Ptyp));
--- 1058,1067 ----
  
        --  Ada 2022 allows 'Image on private types, so fetch the underlying
        --  type to obtain the structure of the type. We use the base type,
!       --  not the root type, for discrete types in order to handle derived
!       --  types, except for character types for which this is not needed.
  
!       if Is_Real_Type (Ptyp) or else Is_Character_Type (Ptyp) then
           Rtyp := Underlying_Type (Root_Type (Ptyp));
        else
           Rtyp := Underlying_Type (Base_Type (Ptyp));
*************** package body Exp_Imgv is
*** 1071,1077 ****
  
        Enum_Case := False;
  
!       if Rtyp = Standard_Boolean then
           --  Use inline expansion if the -gnatd_x switch is not passed to the
           --  compiler. Otherwise expand into a call to the runtime.
  
--- 1072,1078 ----
  
        Enum_Case := False;
  
!       if Is_Boolean_Type (Rtyp) then
           --  Use inline expansion if the -gnatd_x switch is not passed to the
           --  compiler. Otherwise expand into a call to the runtime.
  
*************** package body Exp_Imgv is
*** 1863,1868 ****
--- 1864,1870 ----
        --  Exp_Put_Image for details.
  
        if Exp_Put_Image.Image_Should_Call_Put_Image (N) then
+          Establish_Transient_Scope (N, Manage_Sec_Stack => True);
           Rewrite (N, Exp_Put_Image.Build_Image_Call (N));
           Analyze_And_Resolve (N, Standard_Wide_String, Suppress => All_Checks);
           return;
*************** package body Exp_Imgv is
*** 1972,1977 ****
--- 1974,1980 ----
        --  Exp_Put_Image for details.
  
        if Exp_Put_Image.Image_Should_Call_Put_Image (N) then
+          Establish_Transient_Scope (N, Manage_Sec_Stack => True);
           Rewrite (N, Exp_Put_Image.Build_Image_Call (N));
           Analyze_And_Resolve
             (N, Standard_Wide_Wide_String, Suppress => All_Checks);
diff -Nrcpad gcc-15.2.0/gcc/ada/exp_put_image.adb gcc-15.3.0/gcc/ada/exp_put_image.adb
*** gcc-15.2.0/gcc/ada/exp_put_image.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/exp_put_image.adb	Fri Jun 12 06:09:05 2026
*************** package body Exp_Put_Image is
*** 956,962 ****
                 --  use the first copy instead.
  
                 Partial_View := Incomplete_Or_Partial_View
!                                  (Defining_Identifier (Type_Decl));
  
                 pragma Assert (Ekind (Partial_View) in
                                E_Private_Type
--- 956,963 ----
                 --  use the first copy instead.
  
                 Partial_View := Incomplete_Or_Partial_View
!                                  (Defining_Identifier (Type_Decl),
!                                   Partial_Only => True);
  
                 pragma Assert (Ekind (Partial_View) in
                                E_Private_Type
*************** package body Exp_Put_Image is
*** 1235,1261 ****
     ----------------------
  
     function Build_Image_Call (N : Node_Id) return Node_Id is
!       --  For T'[[Wide_]Wide_]Image (X) Generate an Expression_With_Actions
!       --  node:
        --
!       --     do
!       --        S : Buffer;
!       --        U_Type'Put_Image (S, X);
!       --        Result : constant [[Wide_]Wide_]String :=
!       --          [[Wide_[Wide_]]Get (S);
!       --        Destroy (S);
!       --     in Result end
        --
!       --  where U_Type is the underlying type, as needed to bypass privacy.
  
-       Loc : constant Source_Ptr := Sloc (N);
-       U_Type : constant Entity_Id := Underlying_Type (Entity (Prefix (N)));
-       Sink_Entity : constant Entity_Id :=
-         Make_Temporary (Loc, 'S');
        Sink_Decl : constant Node_Id :=
          Make_Object_Declaration (Loc,
            Defining_Identifier => Sink_Entity,
!           Object_Definition =>
              New_Occurrence_Of (RTE (RE_Buffer_Type), Loc));
  
        Image_Prefix : constant Node_Id :=
--- 1236,1258 ----
     ----------------------
  
     function Build_Image_Call (N : Node_Id) return Node_Id is
!       --  For Typ'[[Wide_]Wide_]Image (X) generate:
        --
!       --    S : Buffer_Type;
!       --    U_Typ'Put_Image (S, X);
!       --    [[Wide_[Wide_]]Get (S)
        --
!       --  where U_Typ is the underlying type, as needed to bypass privacy.
! 
!       Loc   : constant Source_Ptr := Sloc (N);
!       U_Typ : constant Entity_Id  := Underlying_Type (Entity (Prefix (N)));
! 
!       Sink_Entity : constant Entity_Id := Make_Temporary (Loc, 'S');
  
        Sink_Decl : constant Node_Id :=
          Make_Object_Declaration (Loc,
            Defining_Identifier => Sink_Entity,
!           Object_Definition   =>
              New_Occurrence_Of (RTE (RE_Buffer_Type), Loc));
  
        Image_Prefix : constant Node_Id :=
*************** package body Exp_Put_Image is
*** 1263,1306 ****
  
        Put_Im : constant Node_Id :=
          Make_Attribute_Reference (Loc,
!           Prefix         => New_Occurrence_Of (U_Type, Loc),
            Attribute_Name => Name_Put_Image,
            Expressions    => New_List (
              New_Occurrence_Of (Sink_Entity, Loc),
              Image_Prefix));
-       Result_Entity : constant Entity_Id :=
-         Make_Temporary (Loc, 'R');
- 
-       subtype Image_Name_Id is Name_Id with Static_Predicate =>
-         Image_Name_Id in Name_Image | Name_Wide_Image | Name_Wide_Wide_Image;
-       --  Attribute names that will be mapped to the corresponding result types
-       --  and functions.
- 
-       Attribute_Name_Id : constant Name_Id :=
-         (if Attribute_Name (N) = Name_Img then Name_Image
-          else Attribute_Name (N));
  
!       Result_Typ    : constant Entity_Id :=
!         (case Image_Name_Id'(Attribute_Name_Id) is
!             when Name_Image           => Stand.Standard_String,
!             when Name_Wide_Image      => Stand.Standard_Wide_String,
!             when Name_Wide_Wide_Image => Stand.Standard_Wide_Wide_String);
!       Get_Func_Id   : constant RE_Id :=
!         (case Image_Name_Id'(Attribute_Name_Id) is
!             when Name_Image           => RE_Get,
!             when Name_Wide_Image      => RE_Wide_Get,
!             when Name_Wide_Wide_Image => RE_Wide_Wide_Get);
  
-       Result_Decl : constant Node_Id :=
-         Make_Object_Declaration (Loc,
-           Defining_Identifier => Result_Entity,
-           Object_Definition =>
-             New_Occurrence_Of (Result_Typ, Loc),
-           Expression =>
-             Make_Function_Call (Loc,
-               Name => New_Occurrence_Of (RTE (Get_Func_Id), Loc),
-               Parameter_Associations => New_List (
-                 New_Occurrence_Of (Sink_Entity, Loc))));
        Actions : List_Id;
  
        function Put_String_Exp (String_Exp : Node_Id;
--- 1260,1279 ----
  
        Put_Im : constant Node_Id :=
          Make_Attribute_Reference (Loc,
!           Prefix         => New_Occurrence_Of (U_Typ, Loc),
            Attribute_Name => Name_Put_Image,
            Expressions    => New_List (
              New_Occurrence_Of (Sink_Entity, Loc),
              Image_Prefix));
  
!       Get_Func_Id : constant RE_Id :=
!         (case Get_Attribute_Id (Attribute_Name (N)) is
!           when Attribute_Img             => RE_Get,
!           when Attribute_Image           => RE_Get,
!           when Attribute_Wide_Image      => RE_Wide_Get,
!           when Attribute_Wide_Wide_Image => RE_Wide_Wide_Get,
!           when others                    => raise Program_Error);
  
        Actions : List_Id;
  
        function Put_String_Exp (String_Exp : Node_Id;
*************** package body Exp_Put_Image is
*** 1347,1353 ****
     --  Start of processing for Build_Image_Call
  
     begin
!       if Is_Class_Wide_Type (U_Type) then
  
           --  For interface types we must generate code to displace the pointer
           --  to the object to reference the base of the underlying object.
--- 1320,1326 ----
     --  Start of processing for Build_Image_Call
  
     begin
!       if Is_Class_Wide_Type (U_Typ) then
  
           --  For interface types we must generate code to displace the pointer
           --  to the object to reference the base of the underlying object.
*************** package body Exp_Put_Image is
*** 1358,1364 ****
           --  Note that Image_Prefix'Address is recursively expanded into a
           --  call to Ada.Tags.Base_Address (Image_Prefix'Address).
  
!          if Is_Interface (U_Type) then
              Tag_Node :=
                Make_Explicit_Dereference (Loc,
                  Unchecked_Convert_To (RTE (RE_Tag_Ptr),
--- 1331,1337 ----
           --  Note that Image_Prefix'Address is recursively expanded into a
           --  call to Ada.Tags.Base_Address (Image_Prefix'Address).
  
!          if Is_Interface (U_Typ) then
              Tag_Node :=
                Make_Explicit_Dereference (Loc,
                  Unchecked_Convert_To (RTE (RE_Tag_Ptr),
*************** package body Exp_Put_Image is
*** 1399,1422 ****
                           (Sink_Decl,
                            Specific_Type_Name,
                            Qualification,
!                           Put_Im,
!                           Result_Decl);
           end;
        else
!          Actions := New_List (Sink_Decl, Put_Im, Result_Decl);
        end if;
  
!       --  To avoid leaks, we need to manage the secondary stack, because Get is
!       --  returning a String allocated thereon. It might be cleaner to let the
!       --  normal mechanisms for functions returning on the secondary stack call
!       --  Set_Uses_Sec_Stack, but this expansion of 'Image is happening too
!       --  late for that.
! 
!       Set_Uses_Sec_Stack (Current_Scope);
  
!       return Make_Expression_With_Actions (Loc,
!         Actions    => Actions,
!         Expression => New_Occurrence_Of (Result_Entity, Loc));
     end Build_Image_Call;
  
     ------------------------------
--- 1372,1391 ----
                           (Sink_Decl,
                            Specific_Type_Name,
                            Qualification,
!                           Put_Im);
           end;
+ 
        else
!          Actions := New_List (Sink_Decl, Put_Im);
        end if;
  
!       Insert_Actions (N, Actions);
  
!       return
!         Make_Function_Call (Loc,
!           Name => New_Occurrence_Of (RTE (Get_Func_Id), Loc),
!             Parameter_Associations => New_List (
!               New_Occurrence_Of (Sink_Entity, Loc)));
     end Build_Image_Call;
  
     ------------------------------
diff -Nrcpad gcc-15.2.0/gcc/ada/exp_put_image.ads gcc-15.3.0/gcc/ada/exp_put_image.ads
*** gcc-15.2.0/gcc/ada/exp_put_image.ads	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/exp_put_image.ads	Fri Jun 12 06:09:05 2026
*************** package Exp_Put_Image is
*** 89,95 ****
     function Build_Image_Call (N : Node_Id) return Node_Id;
     --  N is a call to T'[[Wide_]Wide_]Image, and this translates it into the
     --  appropriate code to call T'Put_Image into a buffer and then extract the
!    --  [[wide] wide] string from the buffer.
  
     procedure Preload_Root_Buffer_Type (Compilation_Unit : Node_Id);
     --  Call RTE (RE_Root_Buffer_Type) if necessary, to load the packages
--- 89,97 ----
     function Build_Image_Call (N : Node_Id) return Node_Id;
     --  N is a call to T'[[Wide_]Wide_]Image, and this translates it into the
     --  appropriate code to call T'Put_Image into a buffer and then extract the
!    --  [[wide] wide] string from the buffer. N must be wrapped in a transient
!    --  scope before invoking the function because the buffer is controlled and
!    --  the extraction is done on the secondary stack.
  
     procedure Preload_Root_Buffer_Type (Compilation_Unit : Node_Id);
     --  Call RTE (RE_Root_Buffer_Type) if necessary, to load the packages
diff -Nrcpad gcc-15.2.0/gcc/ada/exp_util.adb gcc-15.3.0/gcc/ada/exp_util.adb
*** gcc-15.2.0/gcc/ada/exp_util.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/exp_util.adb	Fri Jun 12 06:09:05 2026
*************** package body Exp_Util is
*** 971,993 ****
           Size_Id : constant Entity_Id := Make_Temporary (Loc, 'S');
  
           Actuals      : List_Id;
!          Alloc_Expr   : Node_Id := Empty;
           Fin_Coll_Id  : Entity_Id;
           Proc_To_Call : Entity_Id;
           Ptr_Coll_Id  : Entity_Id;
!          Subpool      : Node_Id := Empty;
  
        begin
!          --  When we are building an allocator procedure, extract the allocator
!          --  node for later processing and calculation of alignment.
! 
!          if Is_Allocate then
!             --  Extract the qualified expression if there is one from the
!             --  allocator.
  
!             if Nkind (Expression (Expr)) = N_Qualified_Expression then
!                Alloc_Expr := Expression (Expr);
!             end if;
           end if;
  
           --  Step 1: Construct all the actuals for the call to library routine
--- 971,992 ----
           Size_Id : constant Entity_Id := Make_Temporary (Loc, 'S');
  
           Actuals      : List_Id;
!          Alloc_Expr   : Node_Id;
           Fin_Coll_Id  : Entity_Id;
           Proc_To_Call : Entity_Id;
           Ptr_Coll_Id  : Entity_Id;
!          Subpool      : Node_Id;
  
        begin
!          --  When we are building an allocator procedure, extract the qualified
!          --  expression from the allocator if there is one.
  
!          if Is_Allocate
!            and then Nkind (Expression (Expr)) = N_Qualified_Expression
!          then
!             Alloc_Expr := Expression (Expr);
!          else
!             Alloc_Expr := Empty;
           end if;
  
           --  Step 1: Construct all the actuals for the call to library routine
*************** package body Exp_Util is
*** 1001,1015 ****
  
              --  b) Subpool
  
!             if Nkind (Expr) = N_Allocator then
!                Subpool := Subpool_Handle_Name (Expr);
!             end if;
  
              --  If a subpool is present it can be an arbitrary name, so make
              --  the actual by copying the tree.
  
              if Present (Subpool) then
!                Append_To (Actuals, New_Copy_Tree (Subpool, New_Sloc => Loc));
              else
                 Append_To (Actuals, Make_Null (Loc));
              end if;
--- 1000,1013 ----
  
              --  b) Subpool
  
!             Subpool := Subpool_Handle_Name (Expr);
  
              --  If a subpool is present it can be an arbitrary name, so make
              --  the actual by copying the tree.
  
              if Present (Subpool) then
!                Append_To
!                  (Actuals, New_Copy_Tree (Subpool, New_Scope => Proc_Id));
              else
                 Append_To (Actuals, Make_Null (Loc));
              end if;
*************** package body Exp_Util is
*** 6080,6086 ****
              Utyp := Corresponding_Record_Type (Root_Type (Btyp));
  
           elsif Is_Implicit_Full_View (Utyp) then
!             Utyp := Underlying_Type (Root_Type (Btyp));
  
              if Is_Protected_Type (Utyp) then
                 Utyp := Corresponding_Record_Type (Utyp);
--- 6078,6088 ----
              Utyp := Corresponding_Record_Type (Root_Type (Btyp));
  
           elsif Is_Implicit_Full_View (Utyp) then
!             if Is_Derived_Type (Btyp) then
!                Utyp := Underlying_Type (Root_Type (Btyp));
!             else
!                Utyp := Underlying_Type (Root_Type (Full_View (Btyp)));
!             end if;
  
              if Is_Protected_Type (Utyp) then
                 Utyp := Corresponding_Record_Type (Utyp);
*************** package body Exp_Util is
*** 9907,9913 ****
     begin
        return (not Is_Tagged_Type (T) and then Is_Derived_Type (T))
                 or else
!                  (Is_Private_Type (T) and then Present (Full_View (T))
                     and then not Is_Tagged_Type (Full_View (T))
                     and then Is_Derived_Type (Full_View (T))
                     and then Etype (Full_View (T)) /= T);
--- 9909,9916 ----
     begin
        return (not Is_Tagged_Type (T) and then Is_Derived_Type (T))
                 or else
!                  (Is_Private_Type (T)
!                    and then Present (Full_View (T))
                     and then not Is_Tagged_Type (Full_View (T))
                     and then Is_Derived_Type (Full_View (T))
                     and then Etype (Full_View (T)) /= T);
diff -Nrcpad gcc-15.2.0/gcc/ada/freeze.adb gcc-15.3.0/gcc/ada/freeze.adb
*** gcc-15.2.0/gcc/ada/freeze.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/freeze.adb	Fri Jun 12 06:09:05 2026
*************** package body Freeze is
*** 4811,4816 ****
--- 4811,4818 ----
                   and then Convention (F_Type) = Convention_Ada
                   and then not Has_Warnings_Off (F_Type)
                   and then not Has_Size_Clause (F_Type)
+                  and then Present (Esize (F_Type))
+                  and then Esize (F_Type) = 8
                 then
                    Error_Msg_N
                      ("& is an 8-bit Ada Boolean?x?", Formal);
*************** package body Freeze is
*** 7353,7358 ****
--- 7355,7369 ----
  
           elsif Ekind (E) in E_Record_Type | E_Record_Subtype then
              if not In_Generic_Scope (E) then
+                --  If this is a class-wide equivalent type for a non-interface
+                --  root type, freeze the root type.
+ 
+                if Is_Class_Wide_Equivalent_Type (E)
+                  and then Present (Parent_Subtype (E))
+                then
+                   Freeze_And_Append (Parent_Subtype (E), N, Result);
+                end if;
+ 
                 Freeze_Record_Type (E);
              end if;
  
diff -Nrcpad gcc-15.2.0/gcc/ada/gcc-interface/decl.cc gcc-15.3.0/gcc/ada/gcc-interface/decl.cc
*** gcc-15.2.0/gcc/ada/gcc-interface/decl.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/gcc-interface/decl.cc	Fri Jun 12 06:09:05 2026
*************** typedef struct vinfo
*** 8217,8223 ****
  
     DEBUG_INFO is true if we need to write debug information about the type.
  
!    IN_VARIANT is true if the componennt list is that of a variant.
  
     FIRST_FREE_POS, if nonzero, is the first (lowest) free field position in
     the outer record type down to this variant level.  It is nonzero only if
--- 8217,8223 ----
  
     DEBUG_INFO is true if we need to write debug information about the type.
  
!    IN_VARIANT is true if the component list is that of a variant.
  
     FIRST_FREE_POS, if nonzero, is the first (lowest) free field position in
     the outer record type down to this variant level.  It is nonzero only if
*************** components_to_record (Node_Id gnat_compo
*** 8334,8340 ****
        tree gnu_union_type;
        tree this_first_free_pos, gnu_variant_list = NULL_TREE;
        bool union_field_needs_strict_alignment = false;
!       bool innermost_variant_level = true;
        auto_vec <vinfo_t, 16> variant_types;
        vinfo_t *gnu_variant;
        unsigned int variants_align = 0;
--- 8334,8340 ----
        tree gnu_union_type;
        tree this_first_free_pos, gnu_variant_list = NULL_TREE;
        bool union_field_needs_strict_alignment = false;
!       bool innermost_of_unchecked_union = false;
        auto_vec <vinfo_t, 16> variant_types;
        vinfo_t *gnu_variant;
        unsigned int variants_align = 0;
*************** components_to_record (Node_Id gnat_compo
*** 8383,8397 ****
        /* For an unchecked union with a fixed part, we need to compute whether
  	 we are at the innermost level of the variant part.  */
        if (unchecked_union && gnu_field_list)
! 	for (variant = First_Non_Pragma (Variants (gnat_variant_part));
! 	     Present (variant);
! 	     variant = Next_Non_Pragma (variant))
! 	  if (Present (Component_List (variant))
! 	      && Present (Variant_Part (Component_List (variant))))
! 	    {
! 	      innermost_variant_level = false;
! 	      break;
! 	    }
  
        /* We build the variants in two passes.  The bulk of the work is done in
  	 the first pass, that is to say translating the GNAT nodes, building
--- 8383,8401 ----
        /* For an unchecked union with a fixed part, we need to compute whether
  	 we are at the innermost level of the variant part.  */
        if (unchecked_union && gnu_field_list)
! 	{
! 	  innermost_of_unchecked_union = true;
! 
! 	  for (variant = First_Non_Pragma (Variants (gnat_variant_part));
! 	       Present (variant);
! 	       variant = Next_Non_Pragma (variant))
! 	    if (Present (Component_List (variant))
! 		&& Present (Variant_Part (Component_List (variant))))
! 	      {
! 		innermost_of_unchecked_union = false;
! 		break;
! 	      }
! 	}
  
        /* We build the variants in two passes.  The bulk of the work is done in
  	 the first pass, that is to say translating the GNAT nodes, building
*************** components_to_record (Node_Id gnat_compo
*** 8438,8454 ****
  	     the outer variant, so as to flatten the rep-ed layout as much as
  	     possible, the reason being that we cannot do any flattening when
  	     a subtype statically selects a variant later on, for example for
! 	     an aggregate.  */
  	  has_rep
  	    = components_to_record (Component_List (variant), gnat_record_type,
! 				    NULL_TREE, gnu_variant_type, packed,
  				    definition, !all_rep_and_size, all_rep,
  				    unchecked_union, true, needs_xv_encodings,
  				    true, this_first_free_pos,
  				    (all_rep || this_first_free_pos)
! 				    && !(unchecked_union
! 				         && gnu_field_list
! 					 && innermost_variant_level)
  				    ? NULL : &gnu_rep_list);
  
  	  /* Translate the qualifier and annotate the GNAT node.  */
--- 8442,8458 ----
  	     the outer variant, so as to flatten the rep-ed layout as much as
  	     possible, the reason being that we cannot do any flattening when
  	     a subtype statically selects a variant later on, for example for
! 	     an aggregate; in that case, we force a packed layout because the
! 	     moved fields may overlap with packed bit-fields.  */
  	  has_rep
  	    = components_to_record (Component_List (variant), gnat_record_type,
! 				    NULL_TREE, gnu_variant_type, packed ||
! 				    (all_rep && innermost_of_unchecked_union),
  				    definition, !all_rep_and_size, all_rep,
  				    unchecked_union, true, needs_xv_encodings,
  				    true, this_first_free_pos,
  				    (all_rep || this_first_free_pos)
! 				    && !innermost_of_unchecked_union
  				    ? NULL : &gnu_rep_list);
  
  	  /* Translate the qualifier and annotate the GNAT node.  */
diff -Nrcpad gcc-15.2.0/gcc/ada/gcc-interface/trans.cc gcc-15.3.0/gcc/ada/gcc-interface/trans.cc
*** gcc-15.2.0/gcc/ada/gcc-interface/trans.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/gcc-interface/trans.cc	Fri Jun 12 06:09:05 2026
*************** gnat_to_gnu (Node_Id gnat_node)
*** 6855,6863 ****
  		&& (Is_Array_Type (Etype (gnat_temp))
  		    || Is_Record_Type (Etype (gnat_temp))
  		    || Is_Concurrent_Type (Etype (gnat_temp)))))
! 	gnat_to_gnu_entity (gnat_temp,
! 			    gnat_to_gnu (Renamed_Object (gnat_temp)),
! 			    true);
        break;
  
      case N_Exception_Renaming_Declaration:
--- 6855,6876 ----
  		&& (Is_Array_Type (Etype (gnat_temp))
  		    || Is_Record_Type (Etype (gnat_temp))
  		    || Is_Concurrent_Type (Etype (gnat_temp)))))
! 	{
! 	  gnu_expr = gnat_to_gnu (Renamed_Object (gnat_temp));
! 
! 	  /* The elaboration of object renamings present in the source code
! 	     never needs to be deferred.  But regular objects may be turned
! 	     into renamings during expansion and their elaboration may need
! 	     to be deferred, in which case we expect the renamed references
! 	     to have been stabilized, so we do not do it again here.  */
! 	  if (Present (Freeze_Node (gnat_temp)))
! 	    {
! 	      gcc_assert (!Comes_From_Source (gnat_node));
! 	      save_gnu_tree (gnat_node, gnu_expr, true);
! 	    }
! 	  else
! 	    gnat_to_gnu_entity (gnat_temp, gnu_expr, true);
! 	}
        break;
  
      case N_Exception_Renaming_Declaration:
*************** gnat_to_gnu (Node_Id gnat_node)
*** 8737,8743 ****
  
    /* Set the location information on the result if it's not a simple name
       or something that contains a simple name, for example a tag, because
!      we don"t want all the references to get the location of the first use.
       Note that we may have no result if we tried to build a CALL_EXPR node
       to a procedure with no side-effects and optimization is enabled.  */
    else if (kind != N_Identifier
--- 8750,8756 ----
  
    /* Set the location information on the result if it's not a simple name
       or something that contains a simple name, for example a tag, because
!      we don't want all the references to get the location of the first use.
       Note that we may have no result if we tried to build a CALL_EXPR node
       to a procedure with no side-effects and optimization is enabled.  */
    else if (kind != N_Identifier
*************** process_freeze_entity (Node_Id gnat_node
*** 9775,9784 ****
      }
    else
      {
        tree gnu_init
! 	= (Nkind (Declaration_Node (gnat_entity)) == N_Object_Declaration
! 	   && present_gnu_tree (Declaration_Node (gnat_entity)))
! 	  ? get_gnu_tree (Declaration_Node (gnat_entity)) : NULL_TREE;
  
        gnu_new = gnat_to_gnu_entity (gnat_entity, gnu_init, true);
      }
--- 9788,9802 ----
      }
    else
      {
+       /* For an object whose elaboration is deferred, the GCC tree of the
+ 	 declaration, if any, is the initialization expression.  */
+       const Node_Id gnat_decl = Declaration_Node (gnat_entity);
        tree gnu_init
! 	= (Nkind (gnat_decl) == N_Object_Declaration
! 	   || Nkind (gnat_decl) == N_Object_Renaming_Declaration)
! 	  && Present (Freeze_Node (gnat_entity))
! 	  && present_gnu_tree (gnat_decl)
! 	  ? get_gnu_tree (gnat_decl) : NULL_TREE;
  
        gnu_new = gnat_to_gnu_entity (gnat_entity, gnu_init, true);
      }
diff -Nrcpad gcc-15.2.0/gcc/ada/gcc-interface/utils.cc gcc-15.3.0/gcc/ada/gcc-interface/utils.cc
*** gcc-15.2.0/gcc/ada/gcc-interface/utils.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/gcc-interface/utils.cc	Fri Jun 12 06:09:05 2026
*************** update_pointer_to (tree old_type, tree n
*** 4594,4601 ****
  	    new_ptr = TYPE_NEXT_PTR_TO (new_ptr);
  	  TYPE_NEXT_PTR_TO (new_ptr) = ptr;
  	}
!       else
! 	TYPE_POINTER_TO (new_type) = ptr;
  
        /* Now adjust them.  */
        for (; ptr; ptr = TYPE_NEXT_PTR_TO (ptr))
--- 4594,4624 ----
  	    new_ptr = TYPE_NEXT_PTR_TO (new_ptr);
  	  TYPE_NEXT_PTR_TO (new_ptr) = ptr;
  	}
!       else if (ptr)
! 	{
! 	  TYPE_POINTER_TO (new_type) = ptr;
! 
! 	  /* If there is no pointer pointing to NEW_TYPE yet, re-compute the
! 	     TYPE_CANONICAL of the old pointer but pointing to NEW_TYPE, like
! 	     build_pointer_type would have done for such a pointer, because we
! 	     will propagate it in the adjustment loop below.  But make sure to
! 	     preserve an alias set already present on the old pointer.  */
! 	  if (TYPE_STRUCTURAL_EQUALITY_P (new_type))
! 	    SET_TYPE_STRUCTURAL_EQUALITY (ptr);
! 	  else if (TYPE_CANONICAL (new_type) != new_type
! 		   || (TYPE_REF_CAN_ALIAS_ALL (ptr)
! 		       && !lookup_attribute ("may_alias",
! 					     TYPE_ATTRIBUTES (new_type))))
! 	    {
! 	      const alias_set_type set
! 		= TYPE_STRUCTURAL_EQUALITY_P (ptr)
! 		  ? TYPE_ALIAS_SET (ptr)
! 		  : TYPE_ALIAS_SET (TYPE_CANONICAL (ptr));
! 	      TYPE_CANONICAL (ptr)
! 		= build_pointer_type (TYPE_CANONICAL (new_type));
! 	      TYPE_ALIAS_SET (TYPE_CANONICAL (ptr)) = set;
! 	    }
! 	}
  
        /* Now adjust them.  */
        for (; ptr; ptr = TYPE_NEXT_PTR_TO (ptr))
*************** update_pointer_to (tree old_type, tree n
*** 4615,4622 ****
  	    new_ref = TYPE_NEXT_REF_TO (new_ref);
  	  TYPE_NEXT_REF_TO (new_ref) = ref;
  	}
!       else
! 	TYPE_REFERENCE_TO (new_type) = ref;
  
        /* Now adjust them.  */
        for (; ref; ref = TYPE_NEXT_REF_TO (ref))
--- 4638,4668 ----
  	    new_ref = TYPE_NEXT_REF_TO (new_ref);
  	  TYPE_NEXT_REF_TO (new_ref) = ref;
  	}
!       else if (ref)
! 	{
! 	  TYPE_REFERENCE_TO (new_type) = ref;
! 
! 	  /* If there is no reference pointing to NEW_TYPE yet, re-compute the
! 	     TYPE_CANONICAL of the old reference but pointing to NEW_TYPE, like
! 	     build_reference_type would have done for such a reference, because
! 	     we will propagate it in the adjustment loop below.  But make sure
! 	     to preserve an alias set already present on the old reference.  */
! 	  if (TYPE_STRUCTURAL_EQUALITY_P (new_type))
! 	    SET_TYPE_STRUCTURAL_EQUALITY (ref);
! 	  else if (TYPE_CANONICAL (new_type) != new_type
! 		   || (TYPE_REF_CAN_ALIAS_ALL (ref)
! 		       && !lookup_attribute ("may_alias",
! 					     TYPE_ATTRIBUTES (new_type))))
! 	    {
! 	      const alias_set_type set
! 		= TYPE_STRUCTURAL_EQUALITY_P (ref)
! 		  ? TYPE_ALIAS_SET (ref)
! 		  : TYPE_ALIAS_SET (TYPE_CANONICAL (ref));
! 	      TYPE_CANONICAL (ref)
! 		= build_reference_type (TYPE_CANONICAL (new_type));
! 	      TYPE_ALIAS_SET (TYPE_CANONICAL (ref)) = set;
! 	    }
! 	}
  
        /* Now adjust them.  */
        for (; ref; ref = TYPE_NEXT_REF_TO (ref))
diff -Nrcpad gcc-15.2.0/gcc/ada/gen_il-gen-gen_entities.adb gcc-15.3.0/gcc/ada/gen_il-gen-gen_entities.adb
*** gcc-15.2.0/gcc/ada/gen_il-gen-gen_entities.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/gen_il-gen-gen_entities.adb	Fri Jun 12 06:09:05 2026
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 548,558 ****
         (Sm (First_Literal, Node_Id),
          Sm (Has_Enumeration_Rep_Clause, Flag),
          Sm (Has_Pragma_Ordered, Flag, Impl_Base_Type_Only),
!         Sm (Lit_Indexes, Node_Id),
!         Sm (Lit_Strings, Node_Id),
          Sm (Nonzero_Is_True, Flag, Base_Type_Only,
!             Pre => "Root_Type (N) = Standard_Boolean"),
!         Sm (Lit_Hash, Node_Id, Root_Type_Only)));
  
     Cc (E_Enumeration_Type, Enumeration_Kind,
         --  Enumeration types, created by an enumeration type declaration
--- 548,558 ----
         (Sm (First_Literal, Node_Id),
          Sm (Has_Enumeration_Rep_Clause, Flag),
          Sm (Has_Pragma_Ordered, Flag, Impl_Base_Type_Only),
!         Sm (Lit_Hash, Node_Id, Root_Type_Only),
!         Sm (Lit_Indexes, Node_Id, Root_Type_Only),
!         Sm (Lit_Strings, Node_Id, Root_Type_Only),
          Sm (Nonzero_Is_True, Flag, Base_Type_Only,
!             Pre => "Root_Type (N) = Standard_Boolean")));
  
     Cc (E_Enumeration_Type, Enumeration_Kind,
         --  Enumeration types, created by an enumeration type declaration
diff -Nrcpad gcc-15.2.0/gcc/ada/gnat_rm.texi gcc-15.3.0/gcc/ada/gnat_rm.texi
*** gcc-15.2.0/gcc/ada/gnat_rm.texi	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/gnat_rm.texi	Fri Jun 12 06:09:05 2026
*************** procedure Finalize   (Obj : in out T);
*** 30882,30889 ****
  procedure Initialize (Obj : in out T);
  @end example
  
! The three procedures have the same profile, with a single @code{in out} parameter,
! and also have the same dynamic semantics as for controlled types:
  
  @quotation
  
--- 30882,30890 ----
  procedure Initialize (Obj : in out T);
  @end example
  
! The three procedures must be primitive operations of @code{T} and have a single
! @code{in out} parameter. They need not be all specified by the aspect. If they
! are specified, they have the same dynamic semantics as for controlled types:
  
  @quotation
  
diff -Nrcpad gcc-15.2.0/gcc/ada/gnatlink.adb gcc-15.3.0/gcc/ada/gnatlink.adb
*** gcc-15.2.0/gcc/ada/gnatlink.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/gnatlink.adb	Fri Jun 12 06:09:05 2026
*************** procedure Gnatlink is
*** 266,271 ****
--- 266,274 ----
     function Index (S, Pattern : String) return Natural;
     --  Return the last occurrence of Pattern in S, or 0 if none
  
+    function Is_Prefix (S, Prefix : String) return Boolean;
+    --  Return whether Prefix is a strict prefix of S
+ 
     procedure Search_Library_Path
       (Next_Line   : String;
        Nfirst      : Integer;
*************** procedure Gnatlink is
*** 395,400 ****
--- 398,413 ----
        return 0;
     end Index;
  
+    ---------------
+    -- Is_Prefix --
+    ---------------
+ 
+    function Is_Prefix (S, Prefix : String) return Boolean is
+    begin
+       return Prefix'Length < S'Length
+         and then S (S'First .. S'First + Prefix'Length - 1) = Prefix;
+    end Is_Prefix;
+ 
     ------------------
     -- Process_Args --
     ------------------
*************** procedure Gnatlink is
*** 1292,1304 ****
                       else
                          for J in reverse 1 .. Linker_Options.Last loop
                             if Linker_Options.Table (J) /= null
!                              and then
!                                Linker_Options.Table (J)'Length
!                                          > Run_Path_Opt'Length
!                              and then
!                                Linker_Options.Table (J)
!                                  (1 .. Run_Path_Opt'Length) =
!                                                   Run_Path_Opt
                             then
                                --  We have found an already specified
                                --  run_path_option: we will add to this switch,
--- 1305,1312 ----
                       else
                          for J in reverse 1 .. Linker_Options.Last loop
                             if Linker_Options.Table (J) /= null
!                              and then Is_Prefix
!                                (Linker_Options.Table (J).all, Run_Path_Opt)
                             then
                                --  We have found an already specified
                                --  run_path_option: we will add to this switch,
*************** begin
*** 1887,1917 ****
           Shared_Libgcc_Seen : Boolean := False;
           Static_Libgcc_Seen : Boolean := False;
  
-          function Is_Prefix
-            (Complete_String : String; Prefix : String) return Boolean;
-          --  Returns whether Prefix is a prefix of Complete_String
- 
-          ---------------
-          -- Is_Prefix --
-          ---------------
- 
-          function Is_Prefix
-            (Complete_String : String; Prefix : String) return Boolean
-          is
-             S : String renames Complete_String;
-             P : String renames Prefix;
-          begin
-             return P'Length <= S'Length
-               and then S (S'First .. S'First + P'Length - 1) = P;
-          end Is_Prefix;
- 
        begin
           J := Linker_Options.First;
           while J <= Linker_Options.Last loop
              if Linker_Options.Table (J).all = "-Xlinker"
                and then J < Linker_Options.Last
!               and then Linker_Options.Table (J + 1)'Length > 8
!               and then Linker_Options.Table (J + 1) (1 .. 8) = "--stack="
              then
                 if Stack_Op then
                    Linker_Options.Table (J .. Linker_Options.Last - 2) :=
--- 1895,1906 ----
           Shared_Libgcc_Seen : Boolean := False;
           Static_Libgcc_Seen : Boolean := False;
  
        begin
           J := Linker_Options.First;
           while J <= Linker_Options.Last loop
              if Linker_Options.Table (J).all = "-Xlinker"
                and then J < Linker_Options.Last
!               and then Is_Prefix (Linker_Options.Table (J + 1).all, "--stack=")
              then
                 if Stack_Op then
                    Linker_Options.Table (J .. Linker_Options.Last - 2) :=
*************** begin
*** 1956,1967 ****
              --  Here we just check for a canonical form that matches the
              --  pragma Linker_Options set in the NT runtime.
  
!             if Is_Prefix
!                  (Complete_String => Linker_Options.Table (J).all,
!                   Prefix => "-Xlinker --stack=")
!               or else Is_Prefix
!                         (Complete_String => Linker_Options.Table (J).all,
!                          Prefix => "-Wl,--stack=")
              then
                 if Stack_Op then
                    Linker_Options.Table (J .. Linker_Options.Last - 1) :=
--- 1945,1952 ----
              --  Here we just check for a canonical form that matches the
              --  pragma Linker_Options set in the NT runtime.
  
!             if Is_Prefix (Linker_Options.Table (J).all, "-Xlinker --stack=")
!               or else Is_Prefix (Linker_Options.Table (J).all, "-Wl,--stack=")
              then
                 if Stack_Op then
                    Linker_Options.Table (J .. Linker_Options.Last - 1) :=
diff -Nrcpad gcc-15.2.0/gcc/ada/libgnat/s-genbig.adb gcc-15.3.0/gcc/ada/libgnat/s-genbig.adb
*** gcc-15.2.0/gcc/ada/libgnat/s-genbig.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/libgnat/s-genbig.adb	Fri Jun 12 06:09:05 2026
*************** package body System.Generic_Bignums is
*** 262,268 ****
           --  X ** 1 is X
  
           when 1 =>
!             return Normalize (X.D);
  
           --  X ** 2 is X * X
  
--- 262,268 ----
           --  X ** 1 is X
  
           when 1 =>
!             return Normalize (X.D, X.Neg);
  
           --  X ** 2 is X * X
  
*************** package body System.Generic_Bignums is
*** 331,344 ****
        elsif Y.Len > 1 then
           raise Storage_Error with "exponentiation result is too large";
  
!       --  Special case (+/-)2 ** K, where K is 1 .. 31 using a shift
  
        elsif X.Len = 1 and then X.D (1) = 2 and then Y.D (1) < 32 then
           declare
              D : constant Digit_Vector (1 .. 1) :=
                    [Shift_Left (SD'(1), Natural (Y.D (1)))];
           begin
!             return Normalize (D, X.Neg);
           end;
  
        --  Remaining cases have right operand of one word
--- 331,344 ----
        elsif Y.Len > 1 then
           raise Storage_Error with "exponentiation result is too large";
  
!       --  Special case (+/-)2 ** K, where K is in 1 .. 31, using a left shift
  
        elsif X.Len = 1 and then X.D (1) = 2 and then Y.D (1) < 32 then
           declare
              D : constant Digit_Vector (1 .. 1) :=
                    [Shift_Left (SD'(1), Natural (Y.D (1)))];
           begin
!             return Normalize (D, X.Neg and then (Y.D (1) and 1) = 1);
           end;
  
        --  Remaining cases have right operand of one word
diff -Nrcpad gcc-15.2.0/gcc/ada/libgnat/s-oslock__darwin.ads gcc-15.3.0/gcc/ada/libgnat/s-oslock__darwin.ads
*** gcc-15.2.0/gcc/ada/libgnat/s-oslock__darwin.ads	Thu Jan  1 00:00:00 1970
--- gcc-15.3.0/gcc/ada/libgnat/s-oslock__darwin.ads	Fri Jun 12 06:09:05 2026
***************
*** 0 ****
--- 1,57 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                       S Y S T E M . O S _ L O C K S                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --              Copyright (C) 2025, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a Darwin version of this package
+ 
+ with Interfaces.C;
+ with System.OS_Constants;
+ 
+ package System.OS_Locks is
+    pragma Preelaborate;
+ 
+    type pthread_mutex_t is limited private;
+ 
+    subtype RTS_Lock is pthread_mutex_t;
+    --  Should be used inside the runtime system. The difference between Lock
+    --  and the RTS_Lock is that the latter serves only as a semaphore so that
+    --  we do not check for ceiling violations.
+ 
+ private
+ 
+    subtype char_array is Interfaces.C.char_array;
+ 
+    type pthread_mutex_t is record
+       Sig  : Interfaces.C.long;
+       Data : char_array (1 .. OS_Constants.PTHREAD_MUTEX_SIZE);
+    end record;
+    pragma Convention (C, pthread_mutex_t);
+ 
+ end System.OS_Locks;
diff -Nrcpad gcc-15.2.0/gcc/ada/libgnat/s-secsta.adb gcc-15.3.0/gcc/ada/libgnat/s-secsta.adb
*** gcc-15.2.0/gcc/ada/libgnat/s-secsta.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/libgnat/s-secsta.adb	Fri Jun 12 06:09:05 2026
*************** package body System.Secondary_Stack is
*** 635,649 ****
           Padding := Alignment;
        end if;
  
        --  Round the requested size (plus the needed padding in case of
        --  over-alignment) up to the nearest multiple of the default
        --  alignment to ensure efficient access and that the next available
        --  Byte is always aligned on the default alignement value.
  
-       --  It should not be possible to request an allocation of negative
-       --  size.
- 
-       pragma Assert (Storage_Size >= 0);
        Mem_Size := Round_Up (Storage_Size + Padding);
  
        if Sec_Stack_Dynamic then
--- 635,651 ----
           Padding := Alignment;
        end if;
  
+       --  Raise Storage_Error if the size has overflowed
+ 
+       if Storage_Size < 0 then
+          raise Storage_Error with "object too large";
+       end if;
+ 
        --  Round the requested size (plus the needed padding in case of
        --  over-alignment) up to the nearest multiple of the default
        --  alignment to ensure efficient access and that the next available
        --  Byte is always aligned on the default alignement value.
  
        Mem_Size := Round_Up (Storage_Size + Padding);
  
        if Sec_Stack_Dynamic then
diff -Nrcpad gcc-15.2.0/gcc/ada/libgnat/s-secsta__cheri.adb gcc-15.3.0/gcc/ada/libgnat/s-secsta__cheri.adb
*** gcc-15.2.0/gcc/ada/libgnat/s-secsta__cheri.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/libgnat/s-secsta__cheri.adb	Fri Jun 12 06:09:05 2026
*************** package body System.Secondary_Stack is
*** 664,673 ****
           Over_Align_Padding := Alignment;
        end if;
  
!       --  It should not be possible to request an allocation of negative
!       --  size.
  
!       pragma Assert (Storage_Size >= 0);
  
        --  Round the requested size (plus the needed padding in case of
        --  over-alignment) to ensure that the CHERI bounds length will be
--- 664,674 ----
           Over_Align_Padding := Alignment;
        end if;
  
!       --  Raise Storage_Error if the size has overflowed
  
!       if Storage_Size < 0 then
!          raise Storage_Error with "object too large";
!       end if;
  
        --  Round the requested size (plus the needed padding in case of
        --  over-alignment) to ensure that the CHERI bounds length will be
diff -Nrcpad gcc-15.2.0/gcc/ada/libgnat/s-stposu.adb gcc-15.3.0/gcc/ada/libgnat/s-stposu.adb
*** gcc-15.2.0/gcc/ada/libgnat/s-stposu.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/libgnat/s-stposu.adb	Fri Jun 12 06:09:05 2026
*************** package body System.Storage_Pools.Subpoo
*** 398,403 ****
--- 398,404 ----
     procedure Finalize_Pool (Pool : in out Root_Storage_Pool_With_Subpools) is
        Curr_Ptr : SP_Node_Ptr;
        Ex_Occur : Exception_Occurrence;
+       Handle   : Subpool_Handle;
        Raised   : Boolean := False;
  
        function Is_Empty_List (L : not null SP_Node_Ptr) return Boolean;
*************** package body System.Storage_Pools.Subpoo
*** 432,447 ****
        while not Is_Empty_List (Pool.Subpools'Unchecked_Access) loop
           Curr_Ptr := Pool.Subpools.Next;
  
!          --  Perform the following actions:
! 
!          --    1) Finalize all objects chained on the subpool's collection
!          --    2) Remove the subpool from the owner's list of subpools
!          --    3) Deallocate the doubly linked list node associated with the
!          --       subpool.
!          --    4) Call Deallocate_Subpool
  
           begin
!             Finalize_And_Deallocate (Curr_Ptr.Subpool);
  
           exception
              when Fin_Occur : others =>
--- 433,445 ----
        while not Is_Empty_List (Pool.Subpools'Unchecked_Access) loop
           Curr_Ptr := Pool.Subpools.Next;
  
!          --  Finalize and deallocate the subpool. Beware that the node pointed
!          --  to by Curr_Ptr will be deallocated so may not be passed as actual
!          --  in the call, since the formal parameter is In Out.
  
           begin
!             Handle := Curr_Ptr.Subpool;
!             Finalize_And_Deallocate (Handle);
  
           exception
              when Fin_Occur : others =>
diff -Nrcpad gcc-15.2.0/gcc/ada/repinfo.adb gcc-15.3.0/gcc/ada/repinfo.adb
*** gcc-15.2.0/gcc/ada/repinfo.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/repinfo.adb	Fri Jun 12 06:09:05 2026
*************** package body Repinfo is
*** 375,383 ****
  
              if Esize (Ent) = RM_Size (Ent) then
                 if List_Representation_Info_To_JSON then
                    Write_Str ("  ""Size"": ");
                    Write_Val (Esize (Ent));
-                   Write_Line (",");
                 else
                    Write_Str ("for ");
                    List_Name (Ent);
--- 375,383 ----
  
              if Esize (Ent) = RM_Size (Ent) then
                 if List_Representation_Info_To_JSON then
+                   Write_Line (",");
                    Write_Str ("  ""Size"": ");
                    Write_Val (Esize (Ent));
                 else
                    Write_Str ("for ");
                    List_Name (Ent);
*************** package body Repinfo is
*** 390,402 ****
  
              else
                 if List_Representation_Info_To_JSON then
                    Write_Str ("  ""Object_Size"": ");
                    Write_Val (Esize (Ent));
-                   Write_Line (",");
  
                    Write_Str ("  ""Value_Size"": ");
                    Write_Val (RM_Size (Ent));
-                   Write_Line (",");
  
                 else
                    Write_Str ("for ");
--- 390,402 ----
  
              else
                 if List_Representation_Info_To_JSON then
+                   Write_Line (",");
                    Write_Str ("  ""Object_Size"": ");
                    Write_Val (Esize (Ent));
  
+                   Write_Line (",");
                    Write_Str ("  ""Value_Size"": ");
                    Write_Val (RM_Size (Ent));
  
                 else
                    Write_Str ("for ");
*************** package body Repinfo is
*** 417,422 ****
--- 417,423 ----
  
        if Known_Alignment (Ent) then
           if List_Representation_Info_To_JSON then
+             Write_Line (",");
              Write_Str ("  ""Alignment"": ");
              Write_Val (Alignment (Ent));
           else
*************** package body Repinfo is
*** 432,450 ****
        --  are not computed for types in a generic unit.
  
        else
!          --  Add unknown alignment entry in JSON format to ensure the format is
!          --  valid, as a comma is added by the caller before another field.
! 
!          if List_Representation_Info_To_JSON then
!             Write_Str ("  ""Alignment"": ");
!             Write_Unknown_Val;
!          end if;
! 
!          pragma Assert
!            (not Expander_Active or else
!               Is_Concurrent_Type (Ent) or else
!               Is_Class_Wide_Type (Ent) or else
!               Sem_Util.In_Generic_Scope (Ent));
        end if;
     end List_Common_Type_Info;
  
--- 433,442 ----
        --  are not computed for types in a generic unit.
  
        else
!          pragma Assert (not Expander_Active
!            or else Is_Concurrent_Type (Ent)
!            or else Is_Class_Wide_Type (Ent)
!            or else Sem_Util.In_Generic_Scope (Ent));
        end if;
     end List_Common_Type_Info;
  
*************** package body Repinfo is
*** 482,493 ****
  
           E := First_Entity (Ent);
           while Present (E) loop
!             --  We list entities that come from source (excluding private or
!             --  incomplete types or deferred constants, for which we will list
!             --  the information for the full view). If requested, we also list
!             --  relevant entities that have been generated when processing the
!             --  original entities coming from source. But if debug flag A is
!             --  set, then all entities are listed.
  
              if ((Comes_From_Source (E)
                     or else (Ekind (E) = E_Block
--- 474,486 ----
  
           E := First_Entity (Ent);
           while Present (E) loop
!             --  We list entities that come from source (except for incomplete,
!             --  private and generic types, as well as deferred constants, for
!             --  which we list the information for the full view). If requested
!             --  by the -gnatR4 switch, we also list relevant entities that have
!             --  been created when processing the original entities coming from
!             --  source. If debug switch -gnatdA is specified, then all entities
!             --  are listed.
  
              if ((Comes_From_Source (E)
                     or else (Ekind (E) = E_Block
*************** package body Repinfo is
*** 495,503 ****
                              Nkind (Parent (E)) = N_Implicit_Label_Declaration
                                and then
                              Comes_From_Source (Label_Construct (Parent (E)))))
!               and then not Is_Incomplete_Or_Private_Type (E)
!               and then not (Ekind (E) = E_Constant
!                               and then Present (Full_View (E))))
                or else (List_Representation_Info = 4
                           and then Relevant_Entities.Get (E))
                or else Debug_Flag_AA
--- 488,497 ----
                              Nkind (Parent (E)) = N_Implicit_Label_Declaration
                                and then
                              Comes_From_Source (Label_Construct (Parent (E)))))
!                  and then not Is_Incomplete_Or_Private_Type (E)
!                  and then not Is_Generic_Type (E)
!                  and then not (Ekind (E) = E_Constant
!                                 and then Present (Full_View (E))))
                or else (List_Representation_Info = 4
                           and then Relevant_Entities.Get (E))
                or else Debug_Flag_AA
*************** package body Repinfo is
*** 822,828 ****
        pragma Assert (List_Representation_Info_To_JSON);
        Write_Str ("  ""location"": """);
        Write_Location (Sloc (Ent));
!       Write_Line (""",");
     end List_Location;
  
     ---------------
--- 816,822 ----
        pragma Assert (List_Representation_Info_To_JSON);
        Write_Str ("  ""location"": """);
        Write_Location (Sloc (Ent));
!       Write_Str ("""");
     end List_Location;
  
     ---------------
*************** package body Repinfo is
*** 884,889 ****
--- 878,884 ----
           List_Name (Ent);
           Write_Line (""",");
           List_Location (Ent);
+          Write_Line (",");
  
           Write_Str ("  ""Size"": ");
           Write_Val (Esize (Ent));
*************** package body Repinfo is
*** 1874,1879 ****
--- 1869,1875 ----
           List_Name (Ent);
           Write_Line (""",");
           List_Location (Ent);
+          Write_Line (",");
  
           Write_Str ("  ""Convention"": """);
        else
diff -Nrcpad gcc-15.2.0/gcc/ada/rtfinal.c gcc-15.3.0/gcc/ada/rtfinal.c
*** gcc-15.2.0/gcc/ada/rtfinal.c	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/rtfinal.c	Fri Jun 12 06:09:05 2026
*************** extern int __gnat_rt_init_count;
*** 46,54 ****
  /*  see initialize.c  */
  
  #if defined (__MINGW32__)
- #define WIN32_LEAN_AND_MEAN
  #include "mingw32.h"
- #include <windows.h>
  
  extern CRITICAL_SECTION ProcListCS;
  extern HANDLE ProcListEvt;
--- 46,52 ----
diff -Nrcpad gcc-15.2.0/gcc/ada/rtinit.c gcc-15.3.0/gcc/ada/rtinit.c
*** gcc-15.2.0/gcc/ada/rtinit.c	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/rtinit.c	Fri Jun 12 06:09:05 2026
*************** int __gnat_rt_init_count = 0;
*** 70,78 ****
     and finalize properly the run-time. */
  
  #if defined (__MINGW32__)
! #define WIN32_LEAN_AND_MEAN
  #include "mingw32.h"
- #include <windows.h>
  
  extern void __gnat_init_float (void);
  
--- 70,77 ----
     and finalize properly the run-time. */
  
  #if defined (__MINGW32__)
! #include <stdlib.h>
  #include "mingw32.h"
  
  extern void __gnat_init_float (void);
  
diff -Nrcpad gcc-15.2.0/gcc/ada/s-pack.adb.tmpl gcc-15.3.0/gcc/ada/s-pack.adb.tmpl
*** gcc-15.2.0/gcc/ada/s-pack.adb.tmpl	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/s-pack.adb.tmpl	Fri Jun 12 06:09:05 2026
*************** package body System.Pack_@@ is
*** 37,43 ****
  
     --  The high-level idea of the implementation is to overlay a record
     --  containing components of the same size as that of the component
!    --  of the array, in order words @@ bits, and to access the indexed
     --  component of the array through the appropriate selected component
     --  of the record.
  
--- 37,43 ----
  
     --  The high-level idea of the implementation is to overlay a record
     --  containing components of the same size as that of the component
!    --  of the array, in other words @@ bits, and to access the indexed
     --  component of the array through the appropriate selected component
     --  of the record.
  
diff -Nrcpad gcc-15.2.0/gcc/ada/sem.adb gcc-15.3.0/gcc/ada/sem.adb
*** gcc-15.2.0/gcc/ada/sem.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/sem.adb	Fri Jun 12 06:09:06 2026
*************** package body Sem is
*** 1565,1571 ****
  
        --  Compile predefined units with GNAT_Mode set to True, to properly
        --  process the categorization stuff. However, do not set GNAT_Mode
!       --  to True for the renamings units (Text_IO, IO_Exceptions, Direct_IO,
        --  Sequential_IO) as this would prevent pragma Extend_System from being
        --  taken into account, for example when Text_IO is renaming DEC.Text_IO.
  
--- 1565,1571 ----
  
        --  Compile predefined units with GNAT_Mode set to True, to properly
        --  process the categorization stuff. However, do not set GNAT_Mode
!       --  to True for the renaming units (Text_IO, IO_Exceptions, Direct_IO,
        --  Sequential_IO) as this would prevent pragma Extend_System from being
        --  taken into account, for example when Text_IO is renaming DEC.Text_IO.
  
diff -Nrcpad gcc-15.2.0/gcc/ada/sem_aggr.adb gcc-15.3.0/gcc/ada/sem_aggr.adb
*** gcc-15.2.0/gcc/ada/sem_aggr.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/sem_aggr.adb	Fri Jun 12 06:09:06 2026
*************** package body Sem_Aggr is
*** 3790,3796 ****
        --  a subtype indication or an iterator specification that determines
        --  an element type.
  
!       Asp   : constant Node_Id := Find_Value_Of_Aspect (Typ, Aspect_Aggregate);
  
        Empty_Subp          : Node_Id := Empty;
        Add_Named_Subp      : Node_Id := Empty;
--- 3790,3796 ----
        --  a subtype indication or an iterator specification that determines
        --  an element type.
  
!       Asp : constant Node_Id := Find_Value_Of_Aspect (Typ, Aspect_Aggregate);
  
        Empty_Subp          : Node_Id := Empty;
        Add_Named_Subp      : Node_Id := Empty;
*************** package body Sem_Aggr is
*** 3807,3813 ****
           Key_Type  : Entity_Id;
           Elmt_Type : Entity_Id)
        is
!          Loc           : constant Source_Ptr := Sloc (N);
           Choice        : Node_Id;
           Copy          : Node_Id;
           Ent           : Entity_Id;
--- 3807,3814 ----
           Key_Type  : Entity_Id;
           Elmt_Type : Entity_Id)
        is
!          Loc : constant Source_Ptr := Sloc (N);
! 
           Choice        : Node_Id;
           Copy          : Node_Id;
           Ent           : Entity_Id;
*************** package body Sem_Aggr is
*** 3826,3835 ****
           --  is present.
  
           if Nkind (Comp) = N_Iterated_Element_Association then
- 
              --  Create a temporary scope to avoid some modifications from
!             --  escaping the Analyze call below. The original Tree will be
!             --  reanalyzed later.
  
              Ent := New_Internal_Entity
                       (E_Loop, Current_Scope, Sloc (Comp), 'L');
--- 3827,3835 ----
           --  is present.
  
           if Nkind (Comp) = N_Iterated_Element_Association then
              --  Create a temporary scope to avoid some modifications from
!             --  escaping the Preanalyze call below. The original tree will
!             --  be reanalyzed later.
  
              Ent := New_Internal_Entity
                       (E_Loop, Current_Scope, Sloc (Comp), 'L');
*************** package body Sem_Aggr is
*** 3841,3848 ****
                 Copy := Copy_Separate_Tree (Comp);
                 Set_Parent (Copy, Parent (Comp));
  
!                Analyze
!                  (Loop_Parameter_Specification (Copy));
  
                 if Present (Iterator_Specification (Copy)) then
                    Loop_Param_Id :=
--- 3841,3847 ----
                 Copy := Copy_Separate_Tree (Comp);
                 Set_Parent (Copy, Parent (Comp));
  
!                Preanalyze (Loop_Parameter_Specification (Copy));
  
                 if Present (Iterator_Specification (Copy)) then
                    Loop_Param_Id :=
*************** package body Sem_Aggr is
*** 3853,3861 ****
                 end if;
  
                 Id_Name := Chars (Loop_Param_Id);
              else
                 Copy := Copy_Separate_Tree (Iterator_Specification (Comp));
!                Analyze (Copy);
  
                 Loop_Param_Id := Defining_Identifier (Copy);
  
--- 3852,3862 ----
                 end if;
  
                 Id_Name := Chars (Loop_Param_Id);
+ 
              else
                 Copy := Copy_Separate_Tree (Iterator_Specification (Comp));
! 
!                Preanalyze (Copy);
  
                 Loop_Param_Id := Defining_Identifier (Copy);
  
*************** package body Sem_Aggr is
*** 3876,3892 ****
                         & "(RM22 4.3.5(24))",
                       Comp);
                 else
!                   Preanalyze_And_Resolve (New_Copy_Tree (Key_Expr), Key_Type);
                 end if;
              end if;
              End_Scope;
  
              Typ := Etype (Loop_Param_Id);
  
           elsif Present (Iterator_Specification (Comp)) then
              --  Create a temporary scope to avoid some modifications from
!             --  escaping the Analyze call below. The original Tree will be
!             --  reanalyzed later.
  
              Ent := New_Internal_Entity
                       (E_Loop, Current_Scope, Sloc (Comp), 'L');
--- 3877,3895 ----
                         & "(RM22 4.3.5(24))",
                       Comp);
                 else
!                   Preanalyze_And_Resolve
!                     (Copy_Separate_Tree (Key_Expr), Key_Type);
                 end if;
              end if;
+ 
              End_Scope;
  
              Typ := Etype (Loop_Param_Id);
  
           elsif Present (Iterator_Specification (Comp)) then
              --  Create a temporary scope to avoid some modifications from
!             --  escaping the Preanalyze call below. The original tree will
!             --  be reanalyzed later.
  
              Ent := New_Internal_Entity
                       (E_Loop, Current_Scope, Sloc (Comp), 'L');
*************** package body Sem_Aggr is
*** 3936,3942 ****
                and then Present (Key_Type)
                and then Base_Type (Entity (Choice)) = Base_Type (Key_Type)
              then
!                null;
  
              elsif Is_Object_Reference (Choice) then
                 declare
--- 3939,3945 ----
                and then Present (Key_Type)
                and then Base_Type (Entity (Choice)) = Base_Type (Key_Type)
              then
!                Typ := Entity (Choice);
  
              elsif Is_Object_Reference (Choice) then
                 declare
*************** package body Sem_Aggr is
*** 3948,3960 ****
                        Reverse_Present     => Reverse_Present (Comp),
                        Iterator_Filter     => Empty,
                        Subtype_Indication  => Empty);
                 begin
                    Set_Iterator_Specification (Comp, I_Spec);
                    Set_Defining_Identifier (Comp, Empty);
- 
                    Resolve_Iterated_Association (Comp, Key_Type, Elmt_Type);
-                   --  Recursive call to expand association as iterator_spec
- 
                    return;
                 end;
  
--- 3951,3963 ----
                        Reverse_Present     => Reverse_Present (Comp),
                        Iterator_Filter     => Empty,
                        Subtype_Indication  => Empty);
+ 
                 begin
+                   --  Recurse to expand association as iterator_spec
+ 
                    Set_Iterator_Specification (Comp, I_Spec);
                    Set_Defining_Identifier (Comp, Empty);
                    Resolve_Iterated_Association (Comp, Key_Type, Elmt_Type);
                    return;
                 end;
  
*************** package body Sem_Aggr is
*** 3966,3973 ****
                 Typ := Etype (Choice);  --  assume unique for now
              end if;
  
!             Loop_Param_Id :=
!               Defining_Identifier (Comp);
  
              Id_Name := Chars (Loop_Param_Id);
           end if;
--- 3969,3975 ----
                 Typ := Etype (Choice);  --  assume unique for now
              end if;
  
!             Loop_Param_Id := Defining_Identifier (Comp);
  
              Id_Name := Chars (Loop_Param_Id);
           end if;
*************** package body Sem_Aggr is
*** 3976,3984 ****
           --  visible in the expression for the component, and needed for its
           --  analysis.
  
!          Id := Make_Defining_Identifier (Sloc (Comp), Id_Name);
!          Ent := New_Internal_Entity (E_Loop,
!                   Current_Scope, Sloc (Comp), 'L');
           Set_Etype  (Ent, Standard_Void_Type);
           Set_Parent (Ent, Parent (Comp));
           Push_Scope (Ent);
--- 3978,3985 ----
           --  visible in the expression for the component, and needed for its
           --  analysis.
  
!          Id  := Make_Defining_Identifier (Sloc (Comp), Id_Name);
!          Ent := New_Internal_Entity (E_Loop, Current_Scope, Sloc (Comp), 'L');
           Set_Etype  (Ent, Standard_Void_Type);
           Set_Parent (Ent, Parent (Comp));
           Push_Scope (Ent);
*************** package body Sem_Aggr is
*** 4080,4091 ****
                    Comp : Node_Id := First (Component_Associations (N));
                 begin
                    while Present (Comp) loop
!                      if Nkind (Comp) in
!                        N_Iterated_Component_Association |
!                        N_Iterated_Element_Association
                       then
!                         Resolve_Iterated_Association
!                           (Comp, Empty, Elmt_Type);
                       else
                          Error_Msg_N ("illegal component association "
                            & "for unnamed container aggregate", Comp);
--- 4081,4090 ----
                    Comp : Node_Id := First (Component_Associations (N));
                 begin
                    while Present (Comp) loop
!                      if Nkind (Comp) in N_Iterated_Component_Association
!                                       | N_Iterated_Element_Association
                       then
!                         Resolve_Iterated_Association (Comp, Empty, Elmt_Type);
                       else
                          Error_Msg_N ("illegal component association "
                            & "for unnamed container aggregate", Comp);
*************** package body Sem_Aggr is
*** 4141,4152 ****
  
                    Analyze_And_Resolve (Expression (Comp), Elmt_Type);
  
!                elsif Nkind (Comp) in
!                  N_Iterated_Component_Association |
!                  N_Iterated_Element_Association
                 then
!                   Resolve_Iterated_Association
!                     (Comp, Key_Type, Elmt_Type);
                 end if;
  
                 Next (Comp);
--- 4140,4149 ----
  
                    Analyze_And_Resolve (Expression (Comp), Elmt_Type);
  
!                elsif Nkind (Comp) in N_Iterated_Component_Association
!                                    | N_Iterated_Element_Association
                 then
!                   Resolve_Iterated_Association (Comp, Key_Type, Elmt_Type);
                 end if;
  
                 Next (Comp);
*************** package body Sem_Aggr is
*** 4201,4209 ****
                          Analyze_And_Resolve (Expression (Comp), Comp_Type);
                       end if;
  
!                   elsif Nkind (Comp) in
!                     N_Iterated_Component_Association |
!                     N_Iterated_Element_Association
                    then
                       Resolve_Iterated_Association
                         (Comp, Index_Type, Comp_Type);
--- 4198,4205 ----
                          Analyze_And_Resolve (Expression (Comp), Comp_Type);
                       end if;
  
!                   elsif Nkind (Comp) in N_Iterated_Component_Association
!                                       | N_Iterated_Element_Association
                    then
                       Resolve_Iterated_Association
                         (Comp, Index_Type, Comp_Type);
*************** package body Sem_Aggr is
*** 6590,6596 ****
  
           --  Typ is not a derived tagged type
  
!          else
              Record_Def := Type_Definition (Parent (Base_Type (Typ)));
  
              if Null_Present (Record_Def) then
--- 6586,6592 ----
  
           --  Typ is not a derived tagged type
  
!          elsif Nkind (Parent (Base_Type (Typ))) = N_Full_Type_Declaration then
              Record_Def := Type_Definition (Parent (Base_Type (Typ)));
  
              if Null_Present (Record_Def) then
diff -Nrcpad gcc-15.2.0/gcc/ada/sem_attr.adb gcc-15.3.0/gcc/ada/sem_attr.adb
*** gcc-15.2.0/gcc/ada/sem_attr.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/sem_attr.adb	Fri Jun 12 06:09:06 2026
*************** package body Sem_Attr is
*** 11620,11625 ****
--- 11620,11626 ----
                 end if;
  
                 Resolve (Prefix (P));
+                Resolve_Implicit_Dereference (Prefix (P));
  
                 if not Is_Overloaded (P) then
                    Generate_Reference (Entity (Selector_Name (P)), P);
*************** package body Sem_Attr is
*** 12723,12729 ****
                 end Proper_Op;
  
              begin
!                Resolve (Init_Value_Exp, Typ);
                 if Is_Overloaded (Reducer_Subp_Name) then
                    Outer :
                    for Retry in Boolean loop
--- 12724,12733 ----
                 end Proper_Op;
  
              begin
!                --  First try to resolve the reducer and then, if this succeeds,
!                --  resolve the initial value.  This nicely deals with confused
!                --  programmers who swap the two items.
! 
                 if Is_Overloaded (Reducer_Subp_Name) then
                    Outer :
                    for Retry in Boolean loop
*************** package body Sem_Attr is
*** 12745,12758 ****
                 then
                    Op := Reducer_Subp_Name;
  
!                elsif Proper_Op (Entity (Reducer_Subp_Name)) then
                    Op := Entity (Reducer_Subp_Name);
                    Set_Etype (N, Typ);
                 end if;
  
                 if No (Op) then
!                   Error_Msg_N ("No suitable reducer subprogram found",
                      Reducer_Subp_Name);
                 end if;
              end;
  
--- 12749,12766 ----
                 then
                    Op := Reducer_Subp_Name;
  
!                elsif Is_Entity_Name (Reducer_Subp_Name)
!                  and then Proper_Op (Entity (Reducer_Subp_Name))
!                then
                    Op := Entity (Reducer_Subp_Name);
                    Set_Etype (N, Typ);
                 end if;
  
                 if No (Op) then
!                   Error_Msg_N ("no suitable reducer subprogram found",
                      Reducer_Subp_Name);
+                else
+                   Resolve (Init_Value_Exp, Typ);
                 end if;
              end;
  
diff -Nrcpad gcc-15.2.0/gcc/ada/sem_ch10.adb gcc-15.3.0/gcc/ada/sem_ch10.adb
*** gcc-15.2.0/gcc/ada/sem_ch10.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/sem_ch10.adb	Fri Jun 12 06:09:06 2026
*************** package body Sem_Ch10 is
*** 1146,1151 ****
--- 1146,1165 ----
  
        --  Now analyze the unit (package, subprogram spec, body) itself
  
+       if Debug_Flag_I then
+          if Nkind (Unit_Node) in N_Package_Declaration
+                                | N_Package_Renaming_Declaration
+                                | N_Subprogram_Declaration
+                                | N_Generic_Declaration
+            or else (Nkind (Unit_Node) = N_Subprogram_Body
+                      and then Acts_As_Spec (Unit_Node))
+          then
+             Write_Str ("install unit ");
+             Write_Name (Chars (Defining_Entity (Unit_Node)));
+             Write_Eol;
+          end if;
+       end if;
+ 
        Analyze (Unit_Node);
  
        if Warn_On_Redundant_Constructs then
*************** package body Sem_Ch10 is
*** 4684,4689 ****
--- 4698,4715 ----
           end if;
        end if;
  
+       if Debug_Flag_I then
+          Write_Str ("install parent unit ");
+          Write_Name (Chars (P_Name));
+          Write_Eol;
+       end if;
+ 
+       --  Skip this for predefined units because of the rtsfind mechanism
+ 
+       if not In_Predefined_Unit (P_Name) then
+          Set_Is_Visible_Lib_Unit (P_Name);
+       end if;
+ 
        --  This is the recursive call that ensures all parents are loaded
  
        if Is_Child_Spec (P) then
*************** package body Sem_Ch10 is
*** 4756,4767 ****
        Item   : Node_Id;
  
     begin
-       if Debug_Flag_I then
-          Write_Str ("install private with clauses of ");
-          Write_Name (Chars (P));
-          Write_Eol;
-       end if;
- 
        if Nkind (Parent (Decl)) = N_Compilation_Unit then
           Item := First (Context_Items (Parent (Decl)));
           while Present (Item) loop
--- 4782,4787 ----
*************** package body Sem_Ch10 is
*** 7324,7329 ****
--- 7344,7361 ----
           --  in the reverse order of their installation.
  
           Remove_Parents (P);
+ 
+          if Debug_Flag_I then
+             Write_Str ("remove parent unit ");
+             Write_Name (Chars (P_Name));
+             Write_Eol;
+          end if;
+ 
+          --  Skip this for predefined units because of the rtsfind mechanism
+ 
+          if not In_Predefined_Unit (P_Name) then
+             Set_Is_Visible_Lib_Unit (P_Name, False);
+          end if;
        end if;
     end Remove_Parents;
  
diff -Nrcpad gcc-15.2.0/gcc/ada/sem_ch12.adb gcc-15.3.0/gcc/ada/sem_ch12.adb
*** gcc-15.2.0/gcc/ada/sem_ch12.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/sem_ch12.adb	Fri Jun 12 06:09:06 2026
*************** package body Sem_Ch12 is
*** 637,649 ****
     --  of freeze nodes for instance bodies that may depend on other instances.
  
     function Find_Actual_Type
!      (Typ       : Entity_Id;
!       Gen_Type  : Entity_Id) return Entity_Id;
     --  When validating the actual types of a child instance, check whether
     --  the formal is a formal type of the parent unit, and retrieve the current
     --  actual for it. Typ is the entity in the analyzed formal type declaration
     --  (component or index type of an array type, or designated type of an
!    --  access formal) and Gen_Type is the enclosing analyzed formal array
     --  or access type. The desired actual may be a formal of a parent, or may
     --  be declared in a formal package of a parent. In both cases it is a
     --  generic actual type because it appears within a visible instance.
--- 637,649 ----
     --  of freeze nodes for instance bodies that may depend on other instances.
  
     function Find_Actual_Type
!      (Typ     : Entity_Id;
!       Gen_Typ : Entity_Id) return Entity_Id;
     --  When validating the actual types of a child instance, check whether
     --  the formal is a formal type of the parent unit, and retrieve the current
     --  actual for it. Typ is the entity in the analyzed formal type declaration
     --  (component or index type of an array type, or designated type of an
!    --  access formal) and Gen_Typ is the enclosing analyzed formal array
     --  or access type. The desired actual may be a formal of a parent, or may
     --  be declared in a formal package of a parent. In both cases it is a
     --  generic actual type because it appears within a visible instance.
*************** package body Sem_Ch12 is
*** 2044,2052 ****
        is
        begin
           for Index in Gen_Assocs.Assocs'Range loop
!             if Defining_Entity (Gen_Assocs.Assocs (Index).An_Formal) = F then
!                return Index;
!             end if;
           end loop;
  
           raise Program_Error; -- it must be present
--- 2044,2058 ----
        is
        begin
           for Index in Gen_Assocs.Assocs'Range loop
!             declare
!                An_F : constant Node_Id := Gen_Assocs.Assocs (Index).An_Formal;
!             begin
!                if Nkind (An_F) not in N_Use_Package_Clause | N_Use_Type_Clause
!                  and then Defining_Entity (An_F) = F
!                then
!                   return Index;
!                end if;
!             end;
           end loop;
  
           raise Program_Error; -- it must be present
*************** package body Sem_Ch12 is
*** 9852,9861 ****
     ----------------------
  
     function Find_Actual_Type
!      (Typ      : Entity_Id;
!       Gen_Type : Entity_Id) return Entity_Id
     is
!       Gen_Scope : constant Entity_Id := Scope (Gen_Type);
        T         : Entity_Id;
  
     begin
--- 9858,9867 ----
     ----------------------
  
     function Find_Actual_Type
!      (Typ     : Entity_Id;
!       Gen_Typ : Entity_Id) return Entity_Id
     is
!       Gen_Scope : constant Entity_Id := Scope (Gen_Typ);
        T         : Entity_Id;
  
     begin
*************** package body Sem_Ch12 is
*** 15863,15872 ****
                    Set_Instance_Of (Class_Wide_Type (E1), Class_Wide_Type (E2));
                 end if;
  
-                if Is_Constrained (E1) then
-                   Set_Instance_Of (Base_Type (E1), Base_Type (E2));
-                end if;
- 
                 if Ekind (E1) = E_Package and then No (Renamed_Entity (E1)) then
                    Map_Formal_Package_Entities (E1, E2);
                 end if;
--- 15869,15874 ----
*************** package body Sem_Ch12 is
*** 17378,17384 ****
           ----------------------------------
  
           procedure Save_References_In_Aggregate (N : Node_Id) is
-             Nam   : Node_Id;
              Qual  : Node_Id   := Empty;
              Typ   : Entity_Id := Empty;
  
--- 17380,17385 ----
*************** package body Sem_Ch12 is
*** 17434,17449 ****
                    end;
                 end if;
  
!                --  If the aggregate is an actual in a call, it has been
!                --  resolved in the current context, to some local type. The
                 --  enclosing call may have been disambiguated by the aggregate,
                 --  and this disambiguation might fail at instantiation time
                 --  because the type to which the aggregate did resolve is not
                 --  preserved. In order to preserve some of this information,
                 --  wrap the aggregate in a qualified expression, using the id
                 --  of its type. For further disambiguation we qualify the type
!                --  name with its scope (if visible and not hidden by a local
!                --  homograph) because both id's will have corresponding
                 --  entities in an instance. This resolves most of the problems
                 --  with missing type information on aggregates in instances.
  
--- 17435,17450 ----
                    end;
                 end if;
  
!                --  If the aggregate is an actual in a subprogram call, it has
!                --  been resolved in the current context to some local type. The
                 --  enclosing call may have been disambiguated by the aggregate,
                 --  and this disambiguation might fail at instantiation time
                 --  because the type to which the aggregate did resolve is not
                 --  preserved. In order to preserve some of this information,
                 --  wrap the aggregate in a qualified expression, using the id
                 --  of its type. For further disambiguation we qualify the type
!                --  name with its scope recursively (if visible and not hidden
!                --  by a local homograph) because both will have corresponding
                 --  entities in an instance. This resolves most of the problems
                 --  with missing type information on aggregates in instances.
  
*************** package body Sem_Ch12 is
*** 17453,17476 ****
                   and then Present (Typ)
                   and then Comes_From_Source (Typ)
                 then
!                   Nam := Make_Identifier (Loc, Chars (Typ));
  
!                   if Is_Immediately_Visible (Scope (Typ))
!                     and then
!                       (not In_Open_Scopes (Scope (Typ))
!                          or else Current_Entity (Scope (Typ)) = Scope (Typ))
!                   then
!                      Nam :=
!                        Make_Selected_Component (Loc,
!                          Prefix        =>
!                            Make_Identifier (Loc, Chars (Scope (Typ))),
!                          Selector_Name => Nam);
!                   end if;
  
!                   Qual :=
!                     Make_Qualified_Expression (Loc,
!                       Subtype_Mark => Nam,
!                       Expression   => Relocate_Node (N));
                 end if;
  
              --  For a full aggregate, if the type is global and a derived
--- 17454,17493 ----
                   and then Present (Typ)
                   and then Comes_From_Source (Typ)
                 then
!                   declare
!                      function Qualify_Name (S, E : Entity_Id) return Node_Id is
!                        (if E = S
!                         then Make_Identifier (Loc, Chars (E))
!                         else Make_Selected_Component (Loc,
!                                Prefix        => Qualify_Name (S, Scope (E)),
!                                Selector_Name =>
!                                  Make_Identifier (Loc, Chars (E))));
!                      --  Return the qualified name of E up to scope S
  
!                      Nam : Node_Id;
!                      S   : Entity_Id;
  
!                   begin
!                      S := Scope (Typ);
!                      while not Is_Immediately_Visible (S) loop
!                         S := Scope (S);
!                         exit when Is_Generic_Unit (S);
!                      end loop;
! 
!                      if not Is_Generic_Unit (S)
!                        and then (not In_Open_Scopes (S)
!                                   or else Current_Entity (S) = S)
!                      then
!                         Nam := Qualify_Name (S, Typ);
!                      else
!                         Nam := Make_Identifier (Loc, Chars (Typ));
!                      end if;
! 
!                      Qual :=
!                        Make_Qualified_Expression (Loc,
!                          Subtype_Mark => Nam,
!                          Expression   => Relocate_Node (N));
!                   end;
                 end if;
  
              --  For a full aggregate, if the type is global and a derived
diff -Nrcpad gcc-15.2.0/gcc/ada/sem_ch13.adb gcc-15.3.0/gcc/ada/sem_ch13.adb
*** gcc-15.2.0/gcc/ada/sem_ch13.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/sem_ch13.adb	Fri Jun 12 06:09:06 2026
*************** package body Sem_Ch13 is
*** 1340,1348 ****
        --  at the ends of certain declaration lists (like visible-part lists),
        --  not when this procedure is called at arbitrary freeze points.
  
!       if not Nonoverridable_Only
!         and then not Scope_Within_Or_Same (Current_Scope, Scope (E))
!       then
           if Is_Type (E) and then From_Nested_Package (E) then
              declare
                 Pack : constant Entity_Id := Scope (E);
--- 1340,1346 ----
        --  at the ends of certain declaration lists (like visible-part lists),
        --  not when this procedure is called at arbitrary freeze points.
  
!       if not Nonoverridable_Only and then not In_Open_Scopes (Scope (E)) then
           if Is_Type (E) and then From_Nested_Package (E) then
              declare
                 Pack : constant Entity_Id := Scope (E);
*************** package body Sem_Ch13 is
*** 4878,4891 ****
                          goto Continue;
                       end;
  
!                   --  All other cases, generate attribute definition
  
!                   else
                       Aitem :=
                         Make_Attribute_Definition_Clause (Loc,
                           Name       => Ent,
                           Chars      => Name_Storage_Size,
                           Expression => Relocate_Node (Expr));
                    end if;
  
                 when Aspect_External_Initialization =>
--- 4876,4903 ----
                          goto Continue;
                       end;
  
!                   --  Generate an attribute definition for access types
  
!                   elsif Is_Access_Type (E) then
                       Aitem :=
                         Make_Attribute_Definition_Clause (Loc,
                           Name       => Ent,
                           Chars      => Name_Storage_Size,
                           Expression => Relocate_Node (Expr));
+ 
+                   --  This is likely a misplaced aspect. Create a pragma to
+                   --  emit the actual error.
+ 
+                   else
+                      Aitem :=
+                        Make_Aitem_Pragma
+                          (Pragma_Argument_Associations =>
+                             New_List
+                               (Make_Pragma_Argument_Association
+                                  (Loc, Expression => Relocate_Node (Expr))),
+                           Pragma_Name                  => Name_Storage_Size);
+                      Insert_Pragma (Aitem);
+                      goto Continue;
                    end if;
  
                 when Aspect_External_Initialization =>
*************** package body Sem_Ch13 is
*** 7109,7125 ****
                             Set_Class_Wide_Equivalent_Type (Etyp,
                               Make_CW_Equivalent_Type (Etyp, Empty, Actions));
  
!                            --  Add a Compile_Time_Error sizing check as a hint
!                            --  to the backend.
  
!                            Append_To (Actions,
!                              Make_CW_Size_Compile_Check
!                                (Etype (Etyp), U_Ent));
  
!                            --  Set the expansion to occur during freezing when
!                            --  everything is analyzed
  
!                            Append_Freeze_Actions (Etyp, Actions);
  
                             Set_Is_Mutably_Tagged_Type (Etyp);
                          end;
--- 7121,7137 ----
                             Set_Class_Wide_Equivalent_Type (Etyp,
                               Make_CW_Equivalent_Type (Etyp, Empty, Actions));
  
!                            --  Insert its declaration immediately after that of
!                            --  the root type.
  
!                            Insert_Actions_After
!                              (Declaration_Node (Etype (Etyp)), Actions);
  
!                            --  Add a Compile_Time_Error size check for the root
!                            --  type at the freeze point.
  
!                            Append_Freeze_Action (Etype (Etyp),
!                              Make_CW_Size_Compile_Check (Etype (Etyp), U_Ent));
  
                             Set_Is_Mutably_Tagged_Type (Etyp);
                          end;
*************** package body Sem_Ch13 is
*** 16873,16878 ****
--- 16885,16891 ----
        begin
           return Ekind (E) = E_Procedure
             and then Scope (E) = Scope (Typ)
+            and then Is_Primitive (E)
             and then Present (First_Formal (E))
             and then Ekind (First_Formal (E)) = E_In_Out_Parameter
             and then Etype (First_Formal (E)) = Typ
*************** package body Sem_Ch13 is
*** 16926,16932 ****
        end if;
  
        Error_Msg_N
!         ("finalizable primitive must be local procedure whose only formal " &
           "parameter has mode `IN OUT` and is of the finalizable type", N);
     end Resolve_Finalizable_Argument;
  
--- 16939,16945 ----
        end if;
  
        Error_Msg_N
!         ("subprogram must denote primitive procedure whose only formal " &
           "parameter has mode `IN OUT` and is of the finalizable type", N);
     end Resolve_Finalizable_Argument;
  
*************** package body Sem_Ch13 is
*** 17224,17238 ****
        -----------------------
  
        procedure Resolve_Operation (Subp_Id : Node_Id) is
-          Subp : Entity_Id;
- 
           I  : Interp_Index;
           It : Interp;
  
        begin
           if not Is_Overloaded (Subp_Id) then
!             Subp := Entity (Subp_Id);
!             if not Pred (Subp) then
                 Error_Msg_NE
                   ("improper aggregate operation for&", Subp_Id, Typ);
              end if;
--- 17237,17248 ----
        -----------------------
  
        procedure Resolve_Operation (Subp_Id : Node_Id) is
           I  : Interp_Index;
           It : Interp;
  
        begin
           if not Is_Overloaded (Subp_Id) then
!             if not Pred (Entity (Subp_Id)) then
                 Error_Msg_NE
                   ("improper aggregate operation for&", Subp_Id, Typ);
              end if;
*************** package body Sem_Ch13 is
*** 17242,17250 ****
              Get_First_Interp (Subp_Id, I, It);
              while Present (It.Nam) loop
                 if Pred (It.Nam) then
                    Set_Is_Overloaded (Subp_Id, False);
                    Set_Entity (Subp_Id, It.Nam);
-                   exit;
                 end if;
  
                 Get_Next_Interp (I, It);
--- 17252,17272 ----
              Get_First_Interp (Subp_Id, I, It);
              while Present (It.Nam) loop
                 if Pred (It.Nam) then
+                   if Present (Entity (Subp_Id)) then
+                      --  ??? Cope with the obsolete renaming of Append_Vector
+                      --  in Ada.Containers.Vectors retained for compatibility.
+ 
+                      if No (Alias (Entity (Subp_Id)))
+                        and then No (Alias (It.Nam))
+                      then
+                         Error_Msg_N
+                           ("& must denote exactly one subprogram", Subp_Id);
+                      end if;
+ 
+                      exit;
+                   end if;
                    Set_Is_Overloaded (Subp_Id, False);
                    Set_Entity (Subp_Id, It.Nam);
                 end if;
  
                 Get_Next_Interp (I, It);
diff -Nrcpad gcc-15.2.0/gcc/ada/sem_ch3.adb gcc-15.3.0/gcc/ada/sem_ch3.adb
*** gcc-15.2.0/gcc/ada/sem_ch3.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/sem_ch3.adb	Fri Jun 12 06:09:06 2026
*************** package body Sem_Ch3 is
*** 4363,4368 ****
--- 4363,4381 ----
     --  Start of processing for Analyze_Object_Declaration
  
     begin
+       if Constant_Present (N) then
+          Mutate_Ekind (Id, E_Constant);
+          Set_Is_True_Constant (Id);
+       else
+          Mutate_Ekind (Id, E_Variable);
+       end if;
+ 
+       --  Indicate this is not set in source. Certainly true for constants, and
+       --  true for variables so far (will be reset for a variable if and when
+       --  we encounter a modification in the source).
+ 
+       Set_Never_Set_In_Source (Id);
+ 
        --  There are three kinds of implicit types generated by an
        --  object declaration:
  
*************** package body Sem_Ch3 is
*** 4442,4448 ****
  
              T := Find_Type_Of_Object (Object_Definition (N), N);
              Set_Etype (Id, T);
-             Mutate_Ekind (Id, E_Variable);
              goto Leave;
           end if;
  
--- 4455,4460 ----
*************** package body Sem_Ch3 is
*** 4468,4474 ****
  
           if Error_Posted (Id) then
              Set_Etype (Id, T);
-             Mutate_Ekind (Id, E_Variable);
              goto Leave;
           end if;
        end if;
--- 4480,4485 ----
*************** package body Sem_Ch3 is
*** 4645,4661 ****
              Set_Etype (E, T);
           end if;
  
-          --  If an initialization expression is present, then we set the
-          --  Is_True_Constant flag. It will be reset if this is a variable
-          --  and it is indeed modified.
- 
-          Set_Is_True_Constant (Id, True);
- 
           --  If we are analyzing a constant declaration, set its completion
           --  flag after analyzing and resolving the expression.
  
           if Constant_Present (N) then
              Set_Has_Completion (Id);
           end if;
  
           --  Set type and resolve (type may be overridden later on). Note:
--- 4656,4678 ----
              Set_Etype (E, T);
           end if;
  
           --  If we are analyzing a constant declaration, set its completion
           --  flag after analyzing and resolving the expression.
  
           if Constant_Present (N) then
              Set_Has_Completion (Id);
+ 
+          --  Set Has_Initial_Value if initialization expression present. Note
+          --  that if there is no initializing expression, we leave the state
+          --  of this flag unchanged (usually it will be False, but notably in
+          --  the case of exception choice variables, it will already be true).
+ 
+          --  Set Is_True_Constant if initialization expression is present. It
+          --  will be reset if the variable is indeed modified.
+ 
+          else
+             Set_Has_Initial_Value (Id);
+             Set_Is_True_Constant (Id);
           end if;
  
           --  Set type and resolve (type may be overridden later on). Note:
*************** package body Sem_Ch3 is
*** 4760,4766 ****
             and then In_Subrange_Of (Etype (Entity (E)), T)
           then
              Set_Is_Known_Valid (Id);
-             Mutate_Ekind (Id, E_Constant);
              Set_Actual_Subtype (Id, Etype (Entity (E)));
           end if;
  
--- 4777,4782 ----
*************** package body Sem_Ch3 is
*** 5009,5020 ****
              --  for discriminants and are thus not indefinite.
  
              elsif Is_Unchecked_Union (T) then
-                if Constant_Present (N) or else Nkind (E) = N_Function_Call then
-                   Mutate_Ekind (Id, E_Constant);
-                else
-                   Mutate_Ekind (Id, E_Variable);
-                end if;
- 
                 --  If the expression is an aggregate it contains the required
                 --  discriminant values but it has not been resolved yet, so do
                 --  it now, and treat it as the initial expression of an object
--- 5025,5030 ----
*************** package body Sem_Ch3 is
*** 5073,5089 ****
                    --  that subsequent uses of this entity are not rejected
                    --  via the same mechanism that (correctly) rejects
                    --  "X : Integer := X;".
- 
-                   if Constant_Present (N) then
-                      Mutate_Ekind         (Id, E_Constant);
-                      Set_Is_True_Constant (Id);
-                   else
-                      Mutate_Ekind (Id, E_Variable);
-                      if Present (E) then
-                         Set_Has_Initial_Value (Id);
-                      end if;
-                   end if;
- 
                    goto Leave;
                 end if;
  
--- 5083,5088 ----
*************** package body Sem_Ch3 is
*** 5207,5252 ****
  
        Check_Wide_Character_Restriction (T, Object_Definition (N));
  
-       --  Indicate this is not set in source. Certainly true for constants, and
-       --  true for variables so far (will be reset for a variable if and when
-       --  we encounter a modification in the source).
- 
-       Set_Never_Set_In_Source (Id);
- 
        --  Now establish the proper kind and type of the object
  
        if Ekind (Id) = E_Void then
           Reinit_Field_To_Zero (Id, F_Next_Inlined_Subprogram);
        end if;
  
!       if Constant_Present (N) then
!          Mutate_Ekind         (Id, E_Constant);
!          Set_Is_True_Constant (Id);
! 
!       else
!          Mutate_Ekind (Id, E_Variable);
! 
!          --  A variable is set as shared passive if it appears in a shared
!          --  passive package, and is at the outer level. This is not done for
!          --  entities generated during expansion, because those are always
!          --  manipulated locally.
! 
!          if Is_Shared_Passive (Current_Scope)
!            and then Is_Library_Level_Entity (Id)
!            and then Comes_From_Source (Id)
!          then
!             Set_Is_Shared_Passive (Id);
!             Check_Shared_Var (Id, T, N);
!          end if;
! 
!          --  Set Has_Initial_Value if initializing expression present. Note
!          --  that if there is no initializing expression, we leave the state
!          --  of this flag unchanged (usually it will be False, but notably in
!          --  the case of exception choice variables, it will already be true).
  
!          if Present (E) then
!             Set_Has_Initial_Value (Id);
!          end if;
        end if;
  
        --  Set the SPARK mode from the current context (may be overwritten later
--- 5206,5229 ----
  
        Check_Wide_Character_Restriction (T, Object_Definition (N));
  
        --  Now establish the proper kind and type of the object
  
        if Ekind (Id) = E_Void then
           Reinit_Field_To_Zero (Id, F_Next_Inlined_Subprogram);
        end if;
  
!       --  A variable is set as shared passive if it appears in a shared
!       --  passive package, and is at the outer level. This is not done for
!       --  entities generated during expansion, because those are always
!       --  manipulated locally.
  
!       if not Constant_Present (N)
!         and then Is_Shared_Passive (Current_Scope)
!         and then Is_Library_Level_Entity (Id)
!         and then Comes_From_Source (Id)
!       then
!          Set_Is_Shared_Passive (Id);
!          Check_Shared_Var (Id, T, N);
        end if;
  
        --  Set the SPARK mode from the current context (may be overwritten later
*************** package body Sem_Ch3 is
*** 18021,18032 ****
  
                    Insert_List_After_And_Analyze (N, Actions);
  
!                   --  Add a Compile_Time_Error sizing check as a hint
!                   --  to the backend since we don't know the true size of
!                   --  anything at this point.
  
!                   Append_Freeze_Actions (T,
!                     New_List (Make_CW_Size_Compile_Check (T, Root_Class_Typ)));
                 end if;
              end if;
           end;
--- 17998,18007 ----
  
                    Insert_List_After_And_Analyze (N, Actions);
  
!                   --  Add a Compile_Time_Error size check at the freeze point
  
!                   Append_Freeze_Action (T,
!                     Make_CW_Size_Compile_Check (T, Root_Class_Typ));
                 end if;
              end if;
           end;
diff -Nrcpad gcc-15.2.0/gcc/ada/sem_ch4.adb gcc-15.3.0/gcc/ada/sem_ch4.adb
*** gcc-15.2.0/gcc/ada/sem_ch4.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/sem_ch4.adb	Fri Jun 12 06:09:06 2026
*************** package body Sem_Ch4 is
*** 4381,4396 ****
              T := It.Typ;
           end if;
  
!          --  Locate the component. For a private prefix the selector can denote
!          --  a discriminant.
  
           if Is_Record_Type (T) or else Is_Private_Type (T) then
  
!             --  If the prefix is a class-wide type, the visible components are
!             --  those of the base type.
  
              if Is_Class_Wide_Type (T) then
!                T := Etype (T);
              end if;
  
              Comp := First_Entity (T);
--- 4381,4396 ----
              T := It.Typ;
           end if;
  
!          --  Find the selected component. For a private prefix, the selector
!          --  can denote a discriminant.
  
           if Is_Record_Type (T) or else Is_Private_Type (T) then
  
!             --  If the prefix has a class-wide type, the visible components are
!             --  those of the root type.
  
              if Is_Class_Wide_Type (T) then
!                T := Root_Type (T);
              end if;
  
              Comp := First_Entity (T);
*************** package body Sem_Ch4 is
*** 5683,5694 ****
           --  Ada 2005 (AI05-0030): In the case of dispatching requeue, the
           --  selected component should resolve to a name.
  
!          --  Extension feature: Also support calls with prefixed views for
!          --  untagged record types.
  
           if Ada_Version >= Ada_2005
             and then (Is_Tagged_Type (Prefix_Type)
!                        or else Core_Extensions_Allowed)
             and then not Is_Concurrent_Type (Prefix_Type)
           then
              if Nkind (Parent (N)) = N_Generic_Association
--- 5683,5694 ----
           --  Ada 2005 (AI05-0030): In the case of dispatching requeue, the
           --  selected component should resolve to a name.
  
!          --  GNAT extension: Accept calls with prefixed view for untagged
!          --  record types.
  
           if Ada_Version >= Ada_2005
             and then (Is_Tagged_Type (Prefix_Type)
!                       or else Core_Extensions_Allowed)
             and then not Is_Concurrent_Type (Prefix_Type)
           then
              if Nkind (Parent (N)) = N_Generic_Association
*************** package body Sem_Ch4 is
*** 5758,5765 ****
                 --  Before declaring an error, check whether this is tagged
                 --  private type and a call to a primitive operation.
  
                 elsif Ada_Version >= Ada_2005
!                  and then Is_Tagged_Type (Prefix_Type)
                   and then Try_Object_Operation (N)
                 then
                    return;
--- 5758,5769 ----
                 --  Before declaring an error, check whether this is tagged
                 --  private type and a call to a primitive operation.
  
+                --  GNAT extension: Accept calls with prefixed view for
+                --  untagged private types
+ 
                 elsif Ada_Version >= Ada_2005
!                  and then (Is_Tagged_Type (Prefix_Type)
!                             or else Core_Extensions_Allowed)
                   and then Try_Object_Operation (N)
                 then
                    return;
*************** package body Sem_Ch4 is
*** 5777,5784 ****
              Next_Entity (Comp);
           end loop;
  
!          --  Extension feature: Also support calls with prefixed views for
!          --  untagged private types.
  
           if Core_Extensions_Allowed then
              if Try_Object_Operation (N) then
--- 5781,5788 ----
              Next_Entity (Comp);
           end loop;
  
!          --  GNAT extension: Accept calls with prefixed view for untagged
!          --  private types.
  
           if Core_Extensions_Allowed then
              if Try_Object_Operation (N) then
*************** package body Sem_Ch4 is
*** 5960,5968 ****
           --  visible entities are plausible interpretations, check whether
           --  there is some other primitive operation with that name.
  
           if Ada_Version >= Ada_2005 and then Is_Tagged_Type (Prefix_Type) then
!             if (Etype (N) = Any_Type
!                   or else not Has_Candidate)
                and then Try_Object_Operation (N)
              then
                 return;
--- 5964,5976 ----
           --  visible entities are plausible interpretations, check whether
           --  there is some other primitive operation with that name.
  
+          --  Note that, unlike for other types, we do not accept calls with
+          --  prefixed view for untagged concurrent types with -gnatX, since
+          --  this would require associated legality rules to avoid conflict
+          --  with protected operations or entries of the concurrent types.
+ 
           if Ada_Version >= Ada_2005 and then Is_Tagged_Type (Prefix_Type) then
!             if (Etype (N) = Any_Type or else not Has_Candidate)
                and then Try_Object_Operation (N)
              then
                 return;
*************** package body Sem_Ch4 is
*** 6038,6045 ****
  
           Set_Is_Overloaded (N, Is_Overloaded (Sel));
  
!       --  Extension feature: Also support calls with prefixed views for
!       --  untagged types.
  
        elsif Core_Extensions_Allowed
          and then Try_Object_Operation (N)
--- 6046,6052 ----
  
           Set_Is_Overloaded (N, Is_Overloaded (Sel));
  
!       --  GNAT extension: Accept calls with prefixed view for untagged types
  
        elsif Core_Extensions_Allowed
          and then Try_Object_Operation (N)
*************** package body Sem_Ch4 is
*** 10282,10289 ****
           --  type, this is not a prefixed call. Restore the previous type as
           --  the current one is not a legal candidate.
  
!          --  Extension feature: Calls with prefixed views are also supported
!          --  for untagged types, so skip the early return when extensions are
           --  enabled, unless the type doesn't have a primitive operations list
           --  (such as in the case of predefined types).
  
--- 10289,10296 ----
           --  type, this is not a prefixed call. Restore the previous type as
           --  the current one is not a legal candidate.
  
!          --  GNAT extension: Given that calls with prefixed view are accepted
!          --  for untagged types, skip the early return when extensions are
           --  enabled, unless the type doesn't have a primitive operations list
           --  (such as in the case of predefined types).
  
*************** package body Sem_Ch4 is
*** 10309,10315 ****
                     (Call_Node       => New_Call_Node,
                      Node_To_Replace => Node_To_Replace);
  
!                --  Extension feature: In the case where the prefix is of an
                 --  access type, and a primitive wasn't found for the designated
                 --  type, then if the access type has primitives we attempt a
                 --  prefixed call using one of its primitives. (It seems that
--- 10316,10322 ----
                     (Call_Node       => New_Call_Node,
                      Node_To_Replace => Node_To_Replace);
  
!                --  GNAT extension: In the case where the prefix is of an
                 --  access type, and a primitive wasn't found for the designated
                 --  type, then if the access type has primitives we attempt a
                 --  prefixed call using one of its primitives. (It seems that
diff -Nrcpad gcc-15.2.0/gcc/ada/sem_ch6.adb gcc-15.3.0/gcc/ada/sem_ch6.adb
*** gcc-15.2.0/gcc/ada/sem_ch6.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/sem_ch6.adb	Fri Jun 12 06:09:06 2026
*************** package body Sem_Ch6 is
*** 5599,5605 ****
              declare
                 D : constant Entity_Id := Directly_Designated_Type (Etype (F1));
                 Partial_View_Of_Desig : constant Entity_Id :=
!                  Incomplete_Or_Partial_View (D);
              begin
                 return No (Partial_View_Of_Desig)
                   or else Is_Tagged_Type (Partial_View_Of_Desig)
--- 5599,5605 ----
              declare
                 D : constant Entity_Id := Directly_Designated_Type (Etype (F1));
                 Partial_View_Of_Desig : constant Entity_Id :=
!                  Incomplete_Or_Partial_View (D, Partial_Only => True);
              begin
                 return No (Partial_View_Of_Desig)
                   or else Is_Tagged_Type (Partial_View_Of_Desig)
diff -Nrcpad gcc-15.2.0/gcc/ada/sem_dim.adb gcc-15.3.0/gcc/ada/sem_dim.adb
*** gcc-15.2.0/gcc/ada/sem_dim.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/sem_dim.adb	Fri Jun 12 06:09:06 2026
*************** package body Sem_Dim is
*** 1273,1279 ****
  
           --  Get the expression from the component
  
!          if Nkind (Comp) = N_Component_Association then
              Expr := Expression (Comp);
           else
              Expr := Comp;
--- 1273,1281 ----
  
           --  Get the expression from the component
  
!          if Nkind (Comp) in N_Component_Association
!                           | N_Iterated_Component_Association
!          then
              Expr := Expression (Comp);
           else
              Expr := Comp;
diff -Nrcpad gcc-15.2.0/gcc/ada/sem_disp.adb gcc-15.3.0/gcc/ada/sem_disp.adb
*** gcc-15.2.0/gcc/ada/sem_disp.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/sem_disp.adb	Fri Jun 12 06:09:06 2026
*************** package body Sem_Disp is
*** 337,345 ****
           end if;
  
           if Present (Ctrl_Type) then
! 
!             --  Obtain the full type in case we are looking at an incomplete
!             --  view.
  
              if Ekind (Ctrl_Type) = E_Incomplete_Type
                and then Present (Full_View (Ctrl_Type))
--- 337,343 ----
           end if;
  
           if Present (Ctrl_Type) then
!             --  Use the full view for an incomplete type
  
              if Ekind (Ctrl_Type) = E_Incomplete_Type
                and then Present (Full_View (Ctrl_Type))
*************** package body Sem_Disp is
*** 347,354 ****
                 Ctrl_Type := Full_View (Ctrl_Type);
              end if;
  
!             --  When controlling type is concurrent and declared within a
!             --  generic or inside an instance use corresponding record type.
  
              if Is_Concurrent_Type (Ctrl_Type)
                and then Present (Corresponding_Record_Type (Ctrl_Type))
--- 345,351 ----
                 Ctrl_Type := Full_View (Ctrl_Type);
              end if;
  
!             --  Use the corresponding record type for a concurrent type
  
              if Is_Concurrent_Type (Ctrl_Type)
                and then Present (Corresponding_Record_Type (Ctrl_Type))
*************** package body Sem_Disp is
*** 440,445 ****
--- 437,458 ----
           Ctrl_Type := Check_Controlling_Type (Etype (Subp), Subp);
  
           if Present (Ctrl_Type) then
+             --  Use the full view for an incomplete type
+ 
+             if Ekind (Ctrl_Type) = E_Incomplete_Type
+               and then Present (Full_View (Ctrl_Type))
+             then
+                Ctrl_Type := Full_View (Ctrl_Type);
+             end if;
+ 
+             --  Use the corresponding record type for a concurrent type
+ 
+             if Is_Concurrent_Type (Ctrl_Type)
+               and then Present (Corresponding_Record_Type (Ctrl_Type))
+             then
+                Ctrl_Type := Corresponding_Record_Type (Ctrl_Type);
+             end if;
+ 
              if Ctrl_Type = Typ then
                 Set_Has_Controlling_Result (Subp);
  
diff -Nrcpad gcc-15.2.0/gcc/ada/sem_elab.adb gcc-15.3.0/gcc/ada/sem_elab.adb
*** gcc-15.2.0/gcc/ada/sem_elab.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/sem_elab.adb	Fri Jun 12 06:09:06 2026
*************** package body Sem_Elab is
*** 9892,9898 ****
                 --  The corresponding subunit was previously loaded
  
                 if Present (Lib_Unit) then
!                   return Lib_Unit;
  
                 --  Otherwise attempt to load the corresponding subunit
  
--- 9892,9898 ----
                 --  The corresponding subunit was previously loaded
  
                 if Present (Lib_Unit) then
!                   return Proper_Body (Unit (Lib_Unit));
  
                 --  Otherwise attempt to load the corresponding subunit
  
diff -Nrcpad gcc-15.2.0/gcc/ada/sem_prag.adb gcc-15.3.0/gcc/ada/sem_prag.adb
*** gcc-15.2.0/gcc/ada/sem_prag.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/sem_prag.adb	Fri Jun 12 06:09:06 2026
*************** package body Sem_Prag is
*** 6900,6911 ****
           Handler_Proc := Find_Unique_Parameterless_Procedure (Arg1_X, Arg1);
           Proc_Scope := Scope (Handler_Proc);
  
!          if Ekind (Proc_Scope) /= E_Protected_Type then
              Error_Pragma_Arg
                ("argument of pragma% must be protected procedure", Arg1);
           end if;
  
!          --  For pragma case (as opposed to access case), check placement.
           --  We don't need to do that for aspects, because we have the
           --  check that they aspect applies an appropriate procedure.
  
--- 6900,6913 ----
           Handler_Proc := Find_Unique_Parameterless_Procedure (Arg1_X, Arg1);
           Proc_Scope := Scope (Handler_Proc);
  
!          if Nkind (Parent (Subprogram_Spec (Handler_Proc))) /=
!            N_Protected_Definition
!          then
              Error_Pragma_Arg
                ("argument of pragma% must be protected procedure", Arg1);
           end if;
  
!          --  For pragma case (as opposed to aspect case), check placement.
           --  We don't need to do that for aspects, because we have the
           --  check that they aspect applies an appropriate procedure.
  
diff -Nrcpad gcc-15.2.0/gcc/ada/sem_res.adb gcc-15.3.0/gcc/ada/sem_res.adb
*** gcc-15.2.0/gcc/ada/sem_res.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/sem_res.adb	Fri Jun 12 06:09:06 2026
*************** package body Sem_Res is
*** 278,289 ****
     --  is the context type, which is used when the operation is a protected
     --  function with no arguments, and the return value is indexed.
  
-    procedure Resolve_Implicit_Dereference (P : Node_Id);
-    --  Called when P is the prefix of an indexed component, or of a selected
-    --  component, or of a slice. If P is of an access type, we unconditionally
-    --  rewrite it as an explicit dereference. This ensures that the expander
-    --  and the code generator have a fully explicit tree to work with.
- 
     procedure Resolve_Intrinsic_Operator (N : Node_Id; Typ : Entity_Id);
     --  A call to a user-defined intrinsic operator is rewritten as a call to
     --  the corresponding predefined operator, with suitable conversions. Note
--- 278,283 ----
*************** package body Sem_Res is
*** 11433,11448 ****
                 T := It.Typ;
              end if;
  
!             --  Locate selected component. For a private prefix the selector
              --  can denote a discriminant.
  
              if Is_Record_Type (T) or else Is_Private_Type (T) then
  
!                --  The visible components of a class-wide type are those of
!                --  the root type.
  
                 if Is_Class_Wide_Type (T) then
!                   T := Etype (T);
                 end if;
  
                 Comp := First_Entity (T);
--- 11427,11442 ----
                 T := It.Typ;
              end if;
  
!             --  Find the selected component. For a private prefix, the selector
              --  can denote a discriminant.
  
              if Is_Record_Type (T) or else Is_Private_Type (T) then
  
!                --  If the prefix has a class-wide type, the visible components
!                --  are those of the root type.
  
                 if Is_Class_Wide_Type (T) then
!                   T := Root_Type (T);
                 end if;
  
                 Comp := First_Entity (T);
diff -Nrcpad gcc-15.2.0/gcc/ada/sem_res.ads gcc-15.3.0/gcc/ada/sem_res.ads
*** gcc-15.2.0/gcc/ada/sem_res.ads	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/sem_res.ads	Fri Jun 12 06:09:06 2026
*************** package Sem_Res is
*** 133,138 ****
--- 133,144 ----
     --  own type. For now we assume that the prefix cannot be overloaded and
     --  the name of the entry plays no role in the resolution.
  
+    procedure Resolve_Implicit_Dereference (P : Node_Id);
+    --  Called when P is the prefix of an indexed component, or of a selected
+    --  component, or of a slice. If P is of an access type, we unconditionally
+    --  rewrite it as an explicit dereference. This ensures that the expander
+    --  and the code generator have a fully explicit tree to work with.
+ 
     procedure Resolve_Membership_Equality (N : Node_Id; Typ : Entity_Id);
     --  Resolve the equality operator in an individual membership test
  
diff -Nrcpad gcc-15.2.0/gcc/ada/sem_type.adb gcc-15.3.0/gcc/ada/sem_type.adb
*** gcc-15.2.0/gcc/ada/sem_type.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/sem_type.adb	Fri Jun 12 06:09:06 2026
*************** package body Sem_Type is
*** 109,115 ****
        Equal      => "=");
  
     Last_Overloaded : Node_Id := Empty;
!    --  Overloaded node after initializing a new collection of intepretation
  
     -------------------------------------
     -- Handling of Overload Resolution --
--- 109,115 ----
        Equal      => "=");
  
     Last_Overloaded : Node_Id := Empty;
!    --  Overloaded node after initializing a new collection of interpretations
  
     -------------------------------------
     -- Handling of Overload Resolution --
*************** package body Sem_Type is
*** 1012,1019 ****
        elsif T2 = Any_Composite and then Is_Aggregate_Type (T1) then
           return True;
  
!       --  In Ada_2022, an aggregate is compatible with the type that
!       --  as the corresponding aspect.
  
        elsif Ada_Version >= Ada_2022
          and then T2 = Any_Composite
--- 1012,1019 ----
        elsif T2 = Any_Composite and then Is_Aggregate_Type (T1) then
           return True;
  
!       --  In Ada 2022, an aggregate is compatible with the type that
!       --  has the corresponding aspect.
  
        elsif Ada_Version >= Ada_2022
          and then T2 = Any_Composite
*************** package body Sem_Type is
*** 3371,3376 ****
--- 3371,3379 ----
          or else (T1 = Any_Character     and then Is_Character_Type (T2))
          or else (T1 = Any_String        and then Is_String_Type (T2))
          or else (T1 = Any_Composite     and then Is_Aggregate_Type (T2))
+         or else (Ada_Version >= Ada_2022
+                   and then T1 = Any_Composite
+                   and then Has_Aspect (T2, Aspect_Aggregate))
        then
           return B2;
  
*************** package body Sem_Type is
*** 3391,3396 ****
--- 3394,3402 ----
          or else (T2 = Any_Character     and then Is_Character_Type (T1))
          or else (T2 = Any_String        and then Is_String_Type (T1))
          or else (T2 = Any_Composite     and then Is_Aggregate_Type (T1))
+         or else (Ada_Version >= Ada_2022
+                   and then T2 = Any_Composite
+                   and then Has_Aspect (T1, Aspect_Aggregate))
        then
           return B1;
  
diff -Nrcpad gcc-15.2.0/gcc/ada/sem_util.adb gcc-15.3.0/gcc/ada/sem_util.adb
*** gcc-15.2.0/gcc/ada/sem_util.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/sem_util.adb	Fri Jun 12 06:09:06 2026
*************** package body Sem_Util is
*** 9567,9573 ****
        return
          Ekind (Pack) = E_Package
            and then not Is_Frozen (Pack)
!           and then not Scope_Within_Or_Same (Current_Scope, Pack)
            and then In_Open_Scopes (Scope (Pack));
     end From_Nested_Package;
  
--- 9567,9573 ----
        return
          Ekind (Pack) = E_Package
            and then not Is_Frozen (Pack)
!           and then not In_Open_Scopes (Pack)
            and then In_Open_Scopes (Scope (Pack));
     end From_Nested_Package;
  
*************** package body Sem_Util is
*** 14355,14361 ****
     -- Incomplete_Or_Partial_View --
     --------------------------------
  
!    function Incomplete_Or_Partial_View (Id : Entity_Id) return Entity_Id is
        S : constant Entity_Id := Scope (Id);
  
        function Inspect_Decls
--- 14355,14363 ----
     -- Incomplete_Or_Partial_View --
     --------------------------------
  
!    function Incomplete_Or_Partial_View
!      (Id : Entity_Id; Partial_Only : Boolean := False) return Entity_Id
!    is
        S : constant Entity_Id := Scope (Id);
  
        function Inspect_Decls
*************** package body Sem_Util is
*** 14438,14443 ****
--- 14440,14446 ----
          and then (Is_Incomplete_Type (Prev) or else Ekind (Prev) = E_Constant)
          and then Present (Full_View (Prev))
          and then Full_View (Prev) = Id
+         and then not Partial_Only
        then
           return Prev;
        end if;
*************** package body Sem_Util is
*** 14449,14455 ****
              Pkg_Decl : constant Node_Id := Package_Specification (S);
  
           begin
!             --  It is knows that Typ has a private view, look for it in the
              --  visible declarations of the enclosing scope. A special case
              --  of this is when the two views have been exchanged - the full
              --  appears earlier than the private.
--- 14452,14458 ----
              Pkg_Decl : constant Node_Id := Package_Specification (S);
  
           begin
!             --  It is known that Typ has a private view, look for it in the
              --  visible declarations of the enclosing scope. A special case
              --  of this is when the two views have been exchanged - the full
              --  appears earlier than the private.
*************** package body Sem_Util is
*** 14469,14475 ****
              --  Taft amendment type. The incomplete view should be located in
              --  the private declarations of the enclosing scope.
  
!             elsif In_Package_Body (S) then
                 return Inspect_Decls (Private_Declarations (Pkg_Decl), True);
              end if;
           end;
--- 14472,14478 ----
              --  Taft amendment type. The incomplete view should be located in
              --  the private declarations of the enclosing scope.
  
!             elsif In_Package_Body (S) and then not Partial_Only then
                 return Inspect_Decls (Private_Declarations (Pkg_Decl), True);
              end if;
           end;
*************** package body Sem_Util is
*** 22755,22761 ****
     begin
        --  Ada 2005 or later, and formals present. The first formal must be
        --  of a type that supports prefix notation: a controlling argument,
!       --  a class-wide type, or an access to such.
  
        if Ada_Version >= Ada_2005
          and then Present (First_Formal (E))
--- 22758,22765 ----
     begin
        --  Ada 2005 or later, and formals present. The first formal must be
        --  of a type that supports prefix notation: a controlling argument,
!       --  a class-wide type, an access to such, or an untagged record type
!       --  (when compiling with Core_Extensions allowed).
  
        if Ada_Version >= Ada_2005
          and then Present (First_Formal (E))
*************** package body Sem_Util is
*** 22763,22769 ****
          and then
            (Is_Controlling_Formal (First_Formal (E))
              or else Is_Class_Wide_Type (Etype (First_Formal (E)))
!             or else Is_Anonymous_Access_Type (Etype (First_Formal (E))))
        then
           Formal := Next_Formal (First_Formal (E));
           while Present (Formal) loop
--- 22767,22775 ----
          and then
            (Is_Controlling_Formal (First_Formal (E))
              or else Is_Class_Wide_Type (Etype (First_Formal (E)))
!             or else Is_Anonymous_Access_Type (Etype (First_Formal (E)))
!             or else (Core_Extensions_Allowed
!                        and then Is_Record_Type (Etype (First_Formal (E)))))
        then
           Formal := Next_Formal (First_Formal (E));
           while Present (Formal) loop
diff -Nrcpad gcc-15.2.0/gcc/ada/sem_util.ads gcc-15.3.0/gcc/ada/sem_util.ads
*** gcc-15.2.0/gcc/ada/sem_util.ads	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/sem_util.ads	Fri Jun 12 06:09:06 2026
*************** package Sem_Util is
*** 1685,1693 ****
     --  package specification. The package must be on the scope stack, and the
     --  corresponding private part must not.
  
!    function Incomplete_Or_Partial_View (Id : Entity_Id) return Entity_Id;
     --  Given the entity of a constant or a type, retrieve the incomplete or
!    --  partial view of the same entity. Note that Id may not have a partial
     --  view in which case the function returns Empty.
  
     function Incomplete_View_From_Limited_With
--- 1685,1695 ----
     --  package specification. The package must be on the scope stack, and the
     --  corresponding private part must not.
  
!    function Incomplete_Or_Partial_View
!      (Id : Entity_Id; Partial_Only : Boolean := False) return Entity_Id;
     --  Given the entity of a constant or a type, retrieve the incomplete or
!    --  partial view of the same entity. If Partial_Only is True, retrieve
!    --  only the partial view of a type. Note that Id may not have a partial
     --  view in which case the function returns Empty.
  
     function Incomplete_View_From_Limited_With
diff -Nrcpad gcc-15.2.0/gcc/ada/sinfo.ads gcc-15.3.0/gcc/ada/sinfo.ads
*** gcc-15.2.0/gcc/ada/sinfo.ads	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/sinfo.ads	Fri Jun 12 06:09:06 2026
*************** package Sinfo is
*** 1477,1483 ****
  
     --  Has_Target_Names
     --    Present in assignment statements. Indicates that the RHS contains
!    --    target names (see AI12-0125-3) and must be expanded accordingly.
  
     --  Has_Wide_Character
     --    Present in string literals, set if any wide character (i.e. character
--- 1477,1483 ----
  
     --  Has_Target_Names
     --    Present in assignment statements. Indicates that the RHS contains
!    --    target names ("@" -- see AI12-0125-3).
  
     --  Has_Wide_Character
     --    Present in string literals, set if any wide character (i.e. character
diff -Nrcpad gcc-15.2.0/gcc/ada/styleg.adb gcc-15.3.0/gcc/ada/styleg.adb
*** gcc-15.2.0/gcc/ada/styleg.adb	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ada/styleg.adb	Fri Jun 12 06:09:06 2026
*************** package body Styleg is
*** 330,336 ****
           --  Do we need to worry about UTF_32 line terminators here ???
  
           S := Scan_Ptr + 3;
!          while Source (S) not in Line_Terminator loop
              S := S + 1;
           end loop;
  
--- 330,336 ----
           --  Do we need to worry about UTF_32 line terminators here ???
  
           S := Scan_Ptr + 3;
!          while Source (S) not in EOF | Line_Terminator loop
              S := S + 1;
           end loop;
  
diff -Nrcpad gcc-15.2.0/gcc/alias.cc gcc-15.3.0/gcc/alias.cc
*** gcc-15.2.0/gcc/alias.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/alias.cc	Fri Jun 12 06:09:06 2026
*************** get_alias_set (tree t)
*** 948,954 ****
    else
      {
        t = TYPE_CANONICAL (t);
!       gcc_checking_assert (!TYPE_STRUCTURAL_EQUALITY_P (t));
      }
  
    /* If this is a type with a known alias set, return it.  */
--- 948,959 ----
    else
      {
        t = TYPE_CANONICAL (t);
!       gcc_checking_assert (TYPE_CANONICAL (t) == t);
!       if (t != TYPE_MAIN_VARIANT (t))
! 	{
! 	  t = TYPE_MAIN_VARIANT (t);
! 	  gcc_checking_assert (TYPE_CANONICAL (t) == t);
! 	}
      }
  
    /* If this is a type with a known alias set, return it.  */
diff -Nrcpad gcc-15.2.0/gcc/analyzer/ChangeLog gcc-15.3.0/gcc/analyzer/ChangeLog
*** gcc-15.2.0/gcc/analyzer/ChangeLog	Fri Aug  8 06:52:35 2025
--- gcc-15.3.0/gcc/analyzer/ChangeLog	Fri Jun 12 06:10:03 2026
***************
*** 1,3 ****
--- 1,25 ----
+ 2026-06-12  Release Manager
+ 
+ 	* GCC 15.3.0 released.
+ 
+ 2026-01-14  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-12-15  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/123085
+ 	* region-model.cc (region_model::scan_for_null_terminator_1): Use
+ 	byte offset when accessing string constant.
+ 
+ 2026-01-14  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-12-15  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/122975
+ 	* region-model-manager.cc (region_model_manager::maybe_fold_binop): Fold
+ 	X + (-X) to zero.
+ 
  2025-08-08  Release Manager
  
  	* GCC 15.2.0 released.
diff -Nrcpad gcc-15.2.0/gcc/analyzer/region-model-manager.cc gcc-15.3.0/gcc/analyzer/region-model-manager.cc
*** gcc-15.2.0/gcc/analyzer/region-model-manager.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/analyzer/region-model-manager.cc	Fri Jun 12 06:09:06 2026
*************** region_model_manager::maybe_fold_binop (
*** 698,703 ****
--- 698,708 ----
        /* (VAL + 0) -> VAL.  */
        if (cst1 && zerop (cst1))
  	return get_or_create_cast (type, arg0);
+       /* X + (-X) -> 0.  */
+       if (const unaryop_svalue *unary_op = arg1->dyn_cast_unaryop_svalue ())
+ 	if (unary_op->get_op () == NEGATE_EXPR
+ 	    && unary_op->get_arg () == arg0)
+ 	  return get_or_create_int_cst (type, 0);
        break;
      case MINUS_EXPR:
        /* (VAL - 0) -> VAL.  */
diff -Nrcpad gcc-15.2.0/gcc/analyzer/region-model.cc gcc-15.3.0/gcc/analyzer/region-model.cc
*** gcc-15.2.0/gcc/analyzer/region-model.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/analyzer/region-model.cc	Fri Jun 12 06:09:06 2026
*************** region_model::scan_for_null_terminator_1
*** 4330,4353 ****
    if (const string_region *str_reg = base_reg->dyn_cast_string_region ())
      {
        tree string_cst = str_reg->get_string_cst ();
!       if (const void *p = memchr (TREE_STRING_POINTER (string_cst),
! 				  0,
! 				  TREE_STRING_LENGTH (string_cst)))
  	{
! 	  size_t num_bytes_read
! 	    = (const char *)p - TREE_STRING_POINTER (string_cst) + 1;
! 	  /* Simulate the read.  */
! 	  byte_range bytes_to_read (0, num_bytes_read);
! 	  const svalue *sval = get_store_bytes (reg, bytes_to_read, ctxt);
! 	  if (out_sval)
! 	    *out_sval = sval;
! 	  if (logger)
! 	    logger->log ("using string_cst");
! 	  return m_mgr->get_or_create_int_cst (size_type_node,
! 					       num_bytes_read);
  	}
      }
- 
    const binding_cluster *cluster = m_store.get_cluster (base_reg);
    iterable_cluster c (cluster);
    if (logger)
--- 4330,4360 ----
    if (const string_region *str_reg = base_reg->dyn_cast_string_region ())
      {
        tree string_cst = str_reg->get_string_cst ();
!       if (src_byte_offset >= 0
! 	  && src_byte_offset < TREE_STRING_LENGTH (string_cst)
! 	  && wi::fits_shwi_p (src_byte_offset))
  	{
! 	  HOST_WIDE_INT str_byte_offset = src_byte_offset.to_shwi ();
! 	  const char *effective_start
! 	    = TREE_STRING_POINTER (string_cst) + str_byte_offset;
! 	  size_t effective_len
! 	    = TREE_STRING_LENGTH (string_cst) - str_byte_offset;
! 	  if (const void *p = memchr (effective_start, 0, effective_len))
! 	    {
! 	      size_t num_bytes_read
! 		= (const char *)p - effective_start + 1;
! 	      /* Simulate the read.  */
! 	      byte_range bytes_to_read (0, num_bytes_read);
! 	      const svalue *sval = get_store_bytes (reg, bytes_to_read, ctxt);
! 	      if (out_sval)
! 		*out_sval = sval;
! 	      if (logger)
! 		logger->log ("using string_cst");
! 	      return m_mgr->get_or_create_int_cst (size_type_node,
! 						   num_bytes_read);
! 	    }
  	}
      }
    const binding_cluster *cluster = m_store.get_cluster (base_reg);
    iterable_cluster c (cluster);
    if (logger)
diff -Nrcpad gcc-15.2.0/gcc/builtins.cc gcc-15.3.0/gcc/builtins.cc
*** gcc-15.2.0/gcc/builtins.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/builtins.cc	Fri Jun 12 06:09:06 2026
*************** fold_builtin_fabs (location_t loc, tree
*** 9522,9528 ****
  static tree
  fold_builtin_abs (location_t loc, tree arg, tree type)
  {
!   if (!validate_arg (arg, INTEGER_TYPE))
      return NULL_TREE;
  
    if (TYPE_UNSIGNED (type))
--- 9522,9528 ----
  static tree
  fold_builtin_abs (location_t loc, tree arg, tree type)
  {
!   if (!validate_arg (arg, INTEGER_TYPE) || !INTEGRAL_TYPE_P (type))
      return NULL_TREE;
  
    if (TYPE_UNSIGNED (type))
diff -Nrcpad gcc-15.2.0/gcc/c/ChangeLog gcc-15.3.0/gcc/c/ChangeLog
*** gcc-15.2.0/gcc/c/ChangeLog	Fri Aug  8 06:52:35 2025
--- gcc-15.3.0/gcc/c/ChangeLog	Fri Jun 12 06:10:03 2026
***************
*** 1,3 ****
--- 1,74 ----
+ 2026-06-12  Release Manager
+ 
+ 	* GCC 15.3.0 released.
+ 
+ 2026-06-03  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/125252
+ 	* c-typeck.cc (ptr_to_tagged_member): Return type of member.
+ 	(c_type_canonical): Use incomplete type.
+ 
+ 2026-05-15  Andi Kleen  <ak@gcc.gnu.org>
+ 
+ 	PR c/124532
+ 	* c-parser.cc (struct attr_state): Add reset method.
+ 	(c_parser_compound_statement_nostart): Rename a to astate.
+ 	Reset state before iterating statements.
+ 
+ 2026-04-20  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-01  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/124635
+ 	* c-typeck.cc (c_reconstruct_complex_type): Copy
+ 	TYPE_REVERSE_STORAGE_ORDER.
+ 
+ 2026-04-20  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-03-03  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/122572
+ 	* c-decl.cc (finish_struct): Add distinct canonical type.
+ 	* c-tree.h (c_type_canonical): Prototype for new function.
+ 	* c-typeck.cc (c_type_canonical): New function.
+ 	(ptr_to_tagged_member): New function.
+ 
+ 2026-04-20  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-03-03  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/122572
+ 	* c-typeck.cc (tagged_types_tu_compatible_p): Fix check.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-02-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/123365
+ 	* c-decl.cc (build_compound_literal): Call relayout_decl
+ 	after completing the type.
+ 
+ 2025-12-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-12-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/123018
+ 	* c-decl.cc (finish_struct): Diagnose bit-fields with vector type.
+ 
+ 2025-12-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-11-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/121506
+ 	* c-typeck.cc (c_type_tag): If TYPE_NAME is TYPE_DECL
+ 	with non-NULL DECL_NAME, return that.
+ 
  2025-08-08  Release Manager
  
  	* GCC 15.2.0 released.
diff -Nrcpad gcc-15.2.0/gcc/c/c-decl.cc gcc-15.3.0/gcc/c/c-decl.cc
*** gcc-15.2.0/gcc/c/c-decl.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/c/c-decl.cc	Fri Jun 12 06:09:06 2026
*************** build_compound_literal (location_t loc,
*** 6539,6544 ****
--- 6539,6545 ----
  
        type = TREE_TYPE (decl);
        TREE_TYPE (DECL_INITIAL (decl)) = type;
+       relayout_decl (decl);
      }
  
    if (type == error_mark_node || !COMPLETE_TYPE_P (type))
*************** finish_struct (location_t loc, tree t, t
*** 9724,9729 ****
--- 9725,9737 ----
  	  unsigned HOST_WIDE_INT width
  	    = tree_to_uhwi (DECL_INITIAL (field));
  	  tree type = TREE_TYPE (field);
+ 	  if (VECTOR_TYPE_P (type))
+ 	    {
+ 	      error_at (DECL_SOURCE_LOCATION (field),
+ 			"bit-field %qD has invalid type", field);
+ 	      type = TREE_TYPE (type);
+ 	      TREE_TYPE (field) = type;
+ 	    }
  	  if (width != TYPE_PRECISION (type))
  	    {
  	      if (TREE_CODE (type) == BITINT_TYPE
*************** finish_struct (location_t loc, tree t, t
*** 9890,9899 ****
  
        tree *e = c_struct_htab->find_slot_with_hash (t, hash, INSERT);
        if (*e)
! 	TYPE_CANONICAL (t) = *e;
        else
  	{
! 	  TYPE_CANONICAL (t) = t;
  	  *e = t;
  	}
        c_update_type_canonical (t);
--- 9898,9907 ----
  
        tree *e = c_struct_htab->find_slot_with_hash (t, hash, INSERT);
        if (*e)
! 	TYPE_CANONICAL (t) = TYPE_CANONICAL (*e);
        else
  	{
! 	  TYPE_CANONICAL (t) = c_type_canonical (t);
  	  *e = t;
  	}
        c_update_type_canonical (t);
diff -Nrcpad gcc-15.2.0/gcc/c/c-parser.cc gcc-15.3.0/gcc/c/c-parser.cc
*** gcc-15.2.0/gcc/c/c-parser.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/c/c-parser.cc	Fri Jun 12 06:09:06 2026
*************** struct attr_state
*** 1709,1714 ****
--- 1709,1716 ----
  {
    /* True if we parsed a musttail attribute for return.  */
    bool musttail_p;
+ 
+   void reset () { musttail_p = false; }
  };
  
  static bool c_parser_nth_token_starts_std_attributes (c_parser *,
*************** c_parser_compound_statement_nostart (c_p
*** 7497,7503 ****
    bool in_omp_loop_block
      = omp_for_parse_state ? omp_for_parse_state->want_nested_loop : false;
    tree sl = NULL_TREE;
!   attr_state a = {};
  
    if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE))
      {
--- 7499,7505 ----
    bool in_omp_loop_block
      = omp_for_parse_state ? omp_for_parse_state->want_nested_loop : false;
    tree sl = NULL_TREE;
!   attr_state astate = {};
  
    if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE))
      {
*************** c_parser_compound_statement_nostart (c_p
*** 7589,7594 ****
--- 7591,7597 ----
  	      sl = push_stmt_list ();
  	      parser->error = false;
  	      before_labels = get_before_labels ();
+ 	      astate.reset ();
  	      continue;
  	    }
  	  else if (want_nested_loop
*************** c_parser_compound_statement_nostart (c_p
*** 7622,7627 ****
--- 7625,7631 ----
  		}
  	      parser->error = false;
  	      before_labels = get_before_labels ();
+ 	      astate.reset ();
  	      continue;
  	    }
  	  else if (c_parser_next_token_is (parser, CPP_SEMICOLON))
*************** c_parser_compound_statement_nostart (c_p
*** 7633,7638 ****
--- 7637,7643 ----
  	      /* FIXME:  Maybe issue a warning or something here?  */
  	      c_parser_consume_token (parser);
  	      before_labels = get_before_labels ();
+ 	      astate.reset ();
  	      continue;
  	    }
  	}
*************** c_parser_compound_statement_nostart (c_p
*** 7644,7650 ****
        if (have_std_attrs)
  	{
  	  std_attrs = c_parser_std_attribute_specifier_sequence (parser);
! 	  std_attrs = c_parser_handle_musttail (parser, std_attrs, a);
  	}
        if (c_parser_next_token_is_keyword (parser, RID_CASE)
  	  || c_parser_next_token_is_keyword (parser, RID_DEFAULT)
--- 7649,7655 ----
        if (have_std_attrs)
  	{
  	  std_attrs = c_parser_std_attribute_specifier_sequence (parser);
! 	  std_attrs = c_parser_handle_musttail (parser, std_attrs, astate);
  	}
        if (c_parser_next_token_is_keyword (parser, RID_CASE)
  	  || c_parser_next_token_is_keyword (parser, RID_DEFAULT)
*************** c_parser_compound_statement_nostart (c_p
*** 7786,7791 ****
--- 7791,7797 ----
                error_at (loc, "%<else%> without a previous %<if%>");
                c_parser_consume_token (parser);
  	      before_labels = get_before_labels ();
+ 	      astate.reset ();
                continue;
              }
          }
*************** c_parser_compound_statement_nostart (c_p
*** 7798,7804 ****
  	  mark_valid_location_for_stdc_pragma (false);
  	  if (!omp_for_parse_state)
  	    c_parser_statement_after_labels (parser, NULL, before_labels,
! 					     NULL, a);
  	  else
  	    {
  	      /* In canonical loop nest form, nested loops can only appear
--- 7804,7810 ----
  	  mark_valid_location_for_stdc_pragma (false);
  	  if (!omp_for_parse_state)
  	    c_parser_statement_after_labels (parser, NULL, before_labels,
! 					     NULL, astate);
  	  else
  	    {
  	      /* In canonical loop nest form, nested loops can only appear
*************** c_parser_compound_statement_nostart (c_p
*** 7815,7820 ****
--- 7821,7827 ----
  	}
  
        parser->error = false;
+       astate.reset ();
      }
    if (last_label)
      pedwarn_c11 (label_loc, OPT_Wfree_labels,
diff -Nrcpad gcc-15.2.0/gcc/c/c-tree.h gcc-15.3.0/gcc/c/c-tree.h
*** gcc-15.2.0/gcc/c/c-tree.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/c/c-tree.h	Fri Jun 12 06:09:06 2026
*************** extern tree c_build_function_call_vec (l
*** 892,897 ****
--- 892,898 ----
  				       vec<tree, va_gc> *);
  extern tree c_omp_clause_copy_ctor (tree, tree, tree);
  extern tree c_reconstruct_complex_type (tree, tree);
+ extern tree c_type_canonical (tree);
  extern tree c_build_type_attribute_variant (tree ntype, tree attrs);
  extern tree c_build_pointer_type (tree type);
  extern tree c_build_array_type (tree type, tree domain);
diff -Nrcpad gcc-15.2.0/gcc/c/c-typeck.cc gcc-15.3.0/gcc/c/c-typeck.cc
*** gcc-15.2.0/gcc/c/c-typeck.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/c/c-typeck.cc	Fri Jun 12 06:09:06 2026
*************** c_reconstruct_complex_type (tree type, t
*** 530,542 ****
      }
    else if (TREE_CODE (type) == ARRAY_TYPE)
      {
        inner = c_reconstruct_complex_type (TREE_TYPE (type), bottom);
        outer = c_build_array_type (inner, TYPE_DOMAIN (type));
  
        gcc_checking_assert (C_TYPE_VARIABLE_SIZE (type)
  			   == C_TYPE_VARIABLE_SIZE (outer));
-       gcc_checking_assert (C_TYPE_VARIABLY_MODIFIED (outer)
- 			   == C_TYPE_VARIABLY_MODIFIED (type));
      }
    else if (TREE_CODE (type) == FUNCTION_TYPE)
      {
--- 530,546 ----
      }
    else if (TREE_CODE (type) == ARRAY_TYPE)
      {
+       bool rso = TYPE_REVERSE_STORAGE_ORDER (type);
        inner = c_reconstruct_complex_type (TREE_TYPE (type), bottom);
        outer = c_build_array_type (inner, TYPE_DOMAIN (type));
+       if (rso)
+ 	{
+ 	  outer = build_distinct_type_copy (outer);
+ 	  TYPE_REVERSE_STORAGE_ORDER (outer) = 1;
+ 	}
  
        gcc_checking_assert (C_TYPE_VARIABLE_SIZE (type)
  			   == C_TYPE_VARIABLE_SIZE (outer));
      }
    else if (TREE_CODE (type) == FUNCTION_TYPE)
      {
*************** c_reconstruct_complex_type (tree type, t
*** 554,559 ****
--- 558,640 ----
  					      TYPE_QUALS (type));
  }
  
+ 
+ /* Helper function for c_canonical_type.  Check whether FIELD
+    contains a pointer to a structure or union with tag,
+    possibly nested in other type derivations, and return the
+    type of this nested structure or union.  */
+ static tree
+ ptr_to_tagged_member (tree field)
+ {
+   gcc_assert (FIELD_DECL == TREE_CODE (field));
+   tree type = TREE_TYPE (field);
+   bool ptr_seen = false;
+   while (TREE_CODE (type) == ARRAY_TYPE
+ 	 || TREE_CODE (type) == FUNCTION_TYPE
+ 	 || TREE_CODE (type) == POINTER_TYPE)
+     {
+       if (TREE_CODE (type) == POINTER_TYPE)
+ 	ptr_seen = true;
+       type = TREE_TYPE (type);
+     }
+ 
+   if (ptr_seen
+       && RECORD_OR_UNION_TYPE_P (type)
+       && NULL_TREE != c_type_tag (type))
+     return type;
+ 
+   return NULL_TREE;
+ }
+ 
+ /* For a record or union type, make necessary adaptations so that the
+    type can be used as TYPE_CANONICAL.
+ 
+    If the TYPE contains a pointer (possibly nested in other type
+    derivations) to a structure or union as a member, create a copy and
+    change the nested type to an incomplete type.  Otherwise, the middle-end
+    gets confused when recording component aliases in the case where we
+    have formed equivalency classes that include types for which these
+    member pointers end up pointing to other structure or unions types
+    which have the same tag but are not compatible.  */
+ tree
+ c_type_canonical (tree type)
+ {
+   gcc_assert (RECORD_OR_UNION_TYPE_P (type));
+ 
+   bool needs_mod = false;
+   for (tree x = TYPE_FIELDS (type); x; x = DECL_CHAIN (x))
+     {
+       if (!ptr_to_tagged_member (x))
+ 	continue;
+       needs_mod = true;
+       break;
+     }
+   if (!needs_mod)
+     return type;
+ 
+   /* Construct new version with such members replaced.  */
+   tree n = build_distinct_type_copy (type);
+   tree *fields = &TYPE_FIELDS (n);
+   for (tree x = TYPE_FIELDS (type); x; x = DECL_CHAIN (x))
+     {
+       tree f = copy_node (x);
+       if (tree m = ptr_to_tagged_member (x))
+ 	{
+ 	  tree new_node = make_node (TREE_CODE (m));
+ 	  TYPE_NAME (new_node) = TYPE_NAME (m);
+ 	  SET_TYPE_STRUCTURAL_EQUALITY (new_node);
+ 	  new_node = qualify_type (new_node, m);
+ 	  TREE_TYPE (f) = c_reconstruct_complex_type (TREE_TYPE (x),
+ 						      new_node);
+ 	}
+       *fields = f;
+       fields = &DECL_CHAIN (f);
+     }
+   TYPE_CANONICAL (n) = n;
+   return n;
+ }
+ 
+ 
  /* If NTYPE is a type of a non-variadic function with a prototype
     and OTYPE is a type of a function without a prototype and ATTRS
     contains attribute format, diagnosess and removes it from ATTRS.
*************** c_type_tag (const_tree t)
*** 602,610 ****
      return NULL_TREE;
    if (TREE_CODE (name) == TYPE_DECL)
      {
!       /* A TYPE_DECL added by add_decl_expr.  */
!       gcc_checking_assert (!DECL_NAME (name));
!       return NULL_TREE;
      }
    gcc_checking_assert (TREE_CODE (name) == IDENTIFIER_NODE);
    return name;
--- 683,691 ----
      return NULL_TREE;
    if (TREE_CODE (name) == TYPE_DECL)
      {
!       if (!DECL_NAME (name))
! 	return NULL_TREE;
!       name = DECL_NAME (name);
      }
    gcc_checking_assert (TREE_CODE (name) == IDENTIFIER_NODE);
    return name;
*************** tagged_types_tu_compatible_p (const_tree
*** 1833,1839 ****
    /* When forming equivalence classes for TYPE_CANONICAL in C23, we treat
       structs with the same tag as equivalent, but only when they are targets
       of pointers inside other structs.  */
!   if (data->equiv && data->pointedto)
      return true;
  
    /* Different types without tag are incompatible except as an anonymous
--- 1914,1920 ----
    /* When forming equivalence classes for TYPE_CANONICAL in C23, we treat
       structs with the same tag as equivalent, but only when they are targets
       of pointers inside other structs.  */
!   if (data->equiv && data->pointedto && NULL_TREE != c_type_tag (t1))
      return true;
  
    /* Different types without tag are incompatible except as an anonymous
diff -Nrcpad gcc-15.2.0/gcc/c-family/ChangeLog gcc-15.3.0/gcc/c-family/ChangeLog
*** gcc-15.2.0/gcc/c-family/ChangeLog	Fri Aug  8 06:52:35 2025
--- gcc-15.3.0/gcc/c-family/ChangeLog	Fri Jun 12 06:10:03 2026
***************
*** 1,3 ****
--- 1,92 ----
+ 2026-06-12  Release Manager
+ 
+ 	* GCC 15.3.0 released.
+ 
+ 2026-05-06  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-03-07  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/123856
+ 	* c-attribs.cc (handle_hardbool_attribute): Fix TYPE_NAME.
+ 
+ 2026-03-28  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-02-02  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* c-cppbuiltin.cc (c_cpp_builtins): Bump __cpp_deduction_guides to
+ 	202207L for C++23 and later.
+ 
+ 2026-03-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-02-12  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR c/105555
+ 	* c-common.cc (fold_offsetof): Handle REALPART_EXPR
+ 	and IMAGPART_EXPR.
+ 
+ 2026-01-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-12-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR c/123156
+ 	* c-common.cc (c_build_shufflevector): Use ssizetype for the
+ 	permute vector element type.
+ 
+ 2025-12-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-11-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/120052
+ 	* c-ubsan.cc (ubsan_instrument_bounds): For VLAs use
+ 	1 instead of 0 as first IFN_UBSAN_BOUNDS argument and only
+ 	use the addend without TYPE_MAX_VALUE (TYPE_DOMAIN (type))
+ 	in the 3rd argument.
+ 
+ 2025-12-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-11-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/122624
+ 	* c-common.cc (c_common_get_alias_set): Fix up handling of
+ 	BITINT_TYPEs.  For unsigned _BitInt(1) always return -1.  For other
+ 	unsigned types set TYPE_ALIAS_SET to get_alias_set of corresponding
+ 	signed type and return that.  For signed types check if corresponding
+ 	unsigned type has TYPE_ALIAS_SET_KNOWN_P and if so copy its
+ 	TYPE_ALIAS_SET and return that.
+ 
+ 2025-10-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-10-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/122302
+ 	* c-common.cc (braced_list_to_string): Call copy_node on RAW_DATA_CST
+ 	before changing RAW_DATA_POINTER and RAW_DATA_LENGTH on it.
+ 
+ 2025-10-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-10-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/122188
+ 	* c-gimplify.cc (c_gimplify_expr): Also gimplify the second operand
+ 	before the COND_EXPR and use in COND_EXPR result of gimplification.
+ 
+ 2025-10-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-10-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/122188
+ 	* c-gimplify.cc (c_gimplify_expr): Gimplify CALL_EXPR_ARG (*expr_p, 0)
+ 	instead of calling save_expr on it.
+ 
  2025-08-08  Release Manager
  
  	* GCC 15.2.0 released.
diff -Nrcpad gcc-15.2.0/gcc/c-family/c-attribs.cc gcc-15.3.0/gcc/c-family/c-attribs.cc
*** gcc-15.2.0/gcc/c-family/c-attribs.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/c-family/c-attribs.cc	Fri Jun 12 06:09:06 2026
*************** handle_hardbool_attribute (tree *node, t
*** 1191,1197 ****
  
    gcc_checking_assert (!TYPE_CACHED_VALUES_P (*node));
    TYPE_VALUES (*node) = values;
!   TYPE_NAME (*node) = orig;
  
    return NULL_TREE;
  }
--- 1191,1201 ----
  
    gcc_checking_assert (!TYPE_CACHED_VALUES_P (*node));
    TYPE_VALUES (*node) = values;
! 
!   if (TREE_CODE (orig) == TYPE_DECL)
!     TYPE_NAME (*node) = TYPE_NAME (orig);
!   else
!     TYPE_NAME (*node) = NULL_TREE;
  
    return NULL_TREE;
  }
diff -Nrcpad gcc-15.2.0/gcc/c-family/c-common.cc gcc-15.3.0/gcc/c-family/c-common.cc
*** gcc-15.2.0/gcc/c-family/c-common.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/c-family/c-common.cc	Fri Jun 12 06:09:06 2026
*************** c_build_shufflevector (location_t loc, t
*** 1255,1263 ****
    vec_perm_indices indices (sel, 2, maskl);
  
    tree ret_type = build_vector_type (TREE_TYPE (TREE_TYPE (v0)), maskl);
!   tree mask_type = build_vector_type (build_nonstandard_integer_type
! 		(TREE_INT_CST_LOW (TYPE_SIZE (TREE_TYPE (ret_type))), 1),
! 		maskl);
    /* Pad out arguments to the common vector size.  */
    if (v0n < maskl)
      {
--- 1255,1261 ----
    vec_perm_indices indices (sel, 2, maskl);
  
    tree ret_type = build_vector_type (TREE_TYPE (TREE_TYPE (v0)), maskl);
!   tree mask_type = build_vector_type (ssizetype, maskl);
    /* Pad out arguments to the common vector size.  */
    if (v0n < maskl)
      {
*************** c_common_get_alias_set (tree t)
*** 3938,3945 ****
    /* The C standard specifically allows aliasing between signed and
       unsigned variants of the same type.  We treat the signed
       variant as canonical.  */
!   if ((TREE_CODE (t) == INTEGER_TYPE || TREE_CODE (t) == BITINT_TYPE)
!       && TYPE_UNSIGNED (t))
      {
        tree t1 = c_common_signed_type (t);
  
--- 3936,3942 ----
    /* The C standard specifically allows aliasing between signed and
       unsigned variants of the same type.  We treat the signed
       variant as canonical.  */
!   if (TREE_CODE (t) == INTEGER_TYPE && TYPE_UNSIGNED (t))
      {
        tree t1 = c_common_signed_type (t);
  
*************** c_common_get_alias_set (tree t)
*** 3947,3952 ****
--- 3944,3984 ----
        if (t1 != t)
  	return get_alias_set (t1);
      }
+   if (TREE_CODE (t) == BITINT_TYPE)
+     {
+       /* For normal INTEGER_TYPEs (except ones built by
+ 	 build_nonstandard_integer_type), both signed and unsigned variants
+ 	 of the type are always reachable from GTY roots, so just calling
+ 	 get_alias_set on the signed type is ok.  For BITINT_TYPE and
+ 	 non-standard INTEGER_TYPEs, only unsigned could be used and the
+ 	 corresponding signed type could be created on demand and garbage
+ 	 collected as unused, so the alias set of unsigned type could keep
+ 	 changing.
+ 	 Avoid that by remembering the signed type alias set in
+ 	 TYPE_ALIAS_SET and also when being asked about !TYPE_UNSIGNED
+ 	 check if there isn't a corresponding unsigned type with
+ 	 TYPE_ALIAS_SET_KNOWN_P.  */
+       if (TYPE_UNSIGNED (t))
+ 	{
+ 	  /* There is no signed _BitInt(1).  */
+ 	  if (TYPE_PRECISION (t) == 1)
+ 	    return -1;
+ 	  tree t1 = c_common_signed_type (t);
+ 	  gcc_checking_assert (t != t1);
+ 	  TYPE_ALIAS_SET (t) = get_alias_set (t1);
+ 	  return TYPE_ALIAS_SET (t);
+ 	}
+       else
+ 	{
+ 	  tree t1 = c_common_unsigned_type (t);
+ 	  gcc_checking_assert (t != t1);
+ 	  if (TYPE_ALIAS_SET_KNOWN_P (t1))
+ 	    {
+ 	      TYPE_ALIAS_SET (t) = TYPE_ALIAS_SET (t1);
+ 	      return TYPE_ALIAS_SET (t);
+ 	    }
+ 	}
+     }
  
    return -1;
  }
*************** fold_offsetof (tree expr, tree type, enu
*** 7106,7111 ****
--- 7138,7153 ----
      case ERROR_MARK:
        return expr;
  
+     case REALPART_EXPR:
+      return fold_offsetof (TREE_OPERAND (expr, 0), type, code);
+ 
+     case IMAGPART_EXPR:
+      base = fold_offsetof (TREE_OPERAND (expr, 0), type, code);
+      if (base == error_mark_node)
+ 	return base;
+      off = TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (TREE_OPERAND (expr, 0))));
+      break;
+ 
      case VAR_DECL:
        error ("cannot apply %<offsetof%> to static data member %qD", expr);
        return error_mark_node;
*************** braced_list_to_string (tree type, tree c
*** 10245,10250 ****
--- 10287,10293 ----
  		    j = i - start;
  		  else
  		    j -= start;
+ 		  value = copy_node (value);
  		  RAW_DATA_POINTER (value) -= start;
  		  RAW_DATA_LENGTH (value) += start + end;
  		  i += end;
diff -Nrcpad gcc-15.2.0/gcc/c-family/c-cppbuiltin.cc gcc-15.3.0/gcc/c-family/c-cppbuiltin.cc
*** gcc-15.2.0/gcc/c-family/c-cppbuiltin.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/c-family/c-cppbuiltin.cc	Fri Jun 12 06:09:06 2026
*************** c_cpp_builtins (cpp_reader *pfile)
*** 1060,1066 ****
  	  cpp_define (pfile, "__cpp_conditional_explicit=201806L");
  	  cpp_define (pfile, "__cpp_consteval=202211L");
  	  cpp_define (pfile, "__cpp_constinit=201907L");
! 	  cpp_define (pfile, "__cpp_deduction_guides=201907L");
  	  cpp_define (pfile, "__cpp_nontype_template_args=201911L");
  	  cpp_define (pfile, "__cpp_nontype_template_parameter_class=201806L");
  	  cpp_define (pfile, "__cpp_impl_destroying_delete=201806L");
--- 1060,1067 ----
  	  cpp_define (pfile, "__cpp_conditional_explicit=201806L");
  	  cpp_define (pfile, "__cpp_consteval=202211L");
  	  cpp_define (pfile, "__cpp_constinit=201907L");
! 	  if (cxx_dialect <= cxx20)
! 	    cpp_define (pfile, "__cpp_deduction_guides=201907L");
  	  cpp_define (pfile, "__cpp_nontype_template_args=201911L");
  	  cpp_define (pfile, "__cpp_nontype_template_parameter_class=201806L");
  	  cpp_define (pfile, "__cpp_impl_destroying_delete=201806L");
*************** c_cpp_builtins (cpp_reader *pfile)
*** 1077,1082 ****
--- 1078,1084 ----
  	  cpp_define (pfile, "__cpp_auto_cast=202110L");
  	  if (cxx_dialect <= cxx23)
  	    cpp_define (pfile, "__cpp_constexpr=202211L");
+ 	  cpp_define (pfile, "__cpp_deduction_guides=202207L");
  	  cpp_define (pfile, "__cpp_multidimensional_subscript=202211L");
  	  cpp_define (pfile, "__cpp_named_character_escapes=202207L");
  	  cpp_define (pfile, "__cpp_static_call_operator=202207L");
diff -Nrcpad gcc-15.2.0/gcc/c-family/c-gimplify.cc gcc-15.3.0/gcc/c-family/c-gimplify.cc
*** gcc-15.2.0/gcc/c-family/c-gimplify.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/c-family/c-gimplify.cc	Fri Jun 12 06:09:06 2026
*************** c_gimplify_expr (tree *expr_p, gimple_se
*** 1009,1015 ****
  	    && call_expr_nargs (*expr_p) == 2
  	    && TREE_CODE (CALL_EXPR_ARG (*expr_p, 1)) != INTEGER_CST)
  	  {
! 	    tree a = save_expr (CALL_EXPR_ARG (*expr_p, 0));
  	    tree c = build_call_expr_loc (EXPR_LOCATION (*expr_p),
  					  fndecl, 1, a);
  	    *expr_p = build3_loc (EXPR_LOCATION (*expr_p), COND_EXPR,
--- 1009,1022 ----
  	    && call_expr_nargs (*expr_p) == 2
  	    && TREE_CODE (CALL_EXPR_ARG (*expr_p, 1)) != INTEGER_CST)
  	  {
! 	    tree a = CALL_EXPR_ARG (*expr_p, 0);
! 	    if (gimplify_expr (&a, pre_p, post_p, is_gimple_val, fb_rvalue)
! 		== GS_ERROR)
! 	      return GS_ERROR;
! 	    tree b = CALL_EXPR_ARG (*expr_p, 1);
! 	    if (gimplify_expr (&b, pre_p, post_p, is_gimple_val, fb_rvalue)
! 		== GS_ERROR)
! 	      return GS_ERROR;
  	    tree c = build_call_expr_loc (EXPR_LOCATION (*expr_p),
  					  fndecl, 1, a);
  	    *expr_p = build3_loc (EXPR_LOCATION (*expr_p), COND_EXPR,
*************** c_gimplify_expr (tree *expr_p, gimple_se
*** 1017,1023 ****
  				  build2_loc (EXPR_LOCATION (*expr_p),
  					      NE_EXPR, boolean_type_node, a,
  					      build_zero_cst (TREE_TYPE (a))),
! 				  c, CALL_EXPR_ARG (*expr_p, 1));
  	    return GS_OK;
  	  }
  	break;
--- 1024,1030 ----
  				  build2_loc (EXPR_LOCATION (*expr_p),
  					      NE_EXPR, boolean_type_node, a,
  					      build_zero_cst (TREE_TYPE (a))),
! 				  c, b);
  	    return GS_OK;
  	  }
  	break;
diff -Nrcpad gcc-15.2.0/gcc/c-family/c-ubsan.cc gcc-15.3.0/gcc/c-family/c-ubsan.cc
*** gcc-15.2.0/gcc/c-family/c-ubsan.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/c-family/c-ubsan.cc	Fri Jun 12 06:09:06 2026
*************** ubsan_instrument_bounds (location_t loc,
*** 460,466 ****
  
    bound = fold_build2 (PLUS_EXPR, TREE_TYPE (bound), bound,
  		       build_int_cst (TREE_TYPE (bound),
! 		       1 + ignore_off_by_one));
  
    /* Detect flexible array members and suchlike, unless
       -fsanitize=bounds-strict.  */
--- 460,466 ----
  
    bound = fold_build2 (PLUS_EXPR, TREE_TYPE (bound), bound,
  		       build_int_cst (TREE_TYPE (bound),
! 				      1 + ignore_off_by_one));
  
    /* Detect flexible array members and suchlike, unless
       -fsanitize=bounds-strict.  */
*************** ubsan_instrument_bounds (location_t loc,
*** 547,554 ****
      return NULL_TREE;
  
    *index = save_expr (*index);
!   /* Create a "(T *) 0" tree node to describe the array type.  */
!   tree zero_with_type = build_int_cst (build_pointer_type (type), 0);
    return build_call_expr_internal_loc (loc, IFN_UBSAN_BOUNDS,
  				       void_type_node, 3, zero_with_type,
  				       *index, bound);
--- 547,562 ----
      return NULL_TREE;
  
    *index = save_expr (*index);
!   /* If TYPE is a VLA, use 1 instead of 0 as the first argument and
!      use just the addend to TYPE_MAX_VALUE (domain) as the third argument
!      temporarily, so that gimplification can use TYPE_MAX_VALUE (domain)
!      after gimplify_type_sizes.  See PR120052.  */
!   bool is_vla = (TYPE_MAX_VALUE (domain)
! 		 && TREE_CODE (TYPE_MAX_VALUE (domain)) != INTEGER_CST);
!   if (is_vla)
!     bound = build_int_cst (TREE_TYPE (bound), 1 + ignore_off_by_one);
!   /* Create a "(T *) 0" (or 1) tree node to describe the array type.  */
!   tree zero_with_type = build_int_cst (build_pointer_type (type), is_vla);
    return build_call_expr_internal_loc (loc, IFN_UBSAN_BOUNDS,
  				       void_type_node, 3, zero_with_type,
  				       *index, bound);
diff -Nrcpad gcc-15.2.0/gcc/cfgexpand.cc gcc-15.3.0/gcc/cfgexpand.cc
*** gcc-15.2.0/gcc/cfgexpand.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cfgexpand.cc	Fri Jun 12 06:09:06 2026
*************** expand_asm_stmt (gasm *stmt)
*** 3767,3779 ****
       Case in point is when the i386 backend moved from cc0 to a hard reg --
       maintaining source-level compatibility means automatically clobbering
       the flags register.  */
-   rtx_insn *after_md_seq = NULL;
    auto_vec<rtx> use_rvec;
    if (targetm.md_asm_adjust)
!     after_md_seq
  	= targetm.md_asm_adjust (output_rvec, input_rvec, input_mode,
  				 constraints, use_rvec, clobber_rvec,
  				 clobbered_regs, locus);
  
    /* Do not allow the hook to change the output and input count,
       lest it mess up the operand numbering.  */
--- 3767,3788 ----
       Case in point is when the i386 backend moved from cc0 to a hard reg --
       maintaining source-level compatibility means automatically clobbering
       the flags register.  */
    auto_vec<rtx> use_rvec;
    if (targetm.md_asm_adjust)
!     {
!       rtx_insn *after_md_seq
  	= targetm.md_asm_adjust (output_rvec, input_rvec, input_mode,
  				 constraints, use_rvec, clobber_rvec,
  				 clobbered_regs, locus);
+       if (after_md_seq)
+ 	{
+ 	  push_to_sequence (after_md_seq);
+ 	  emit_insn (after_rtl_seq);
+ 	  after_rtl_seq = get_insns ();
+ 	  after_rtl_end = get_last_insn ();
+ 	  end_sequence ();
+ 	}
+     }
  
    /* Do not allow the hook to change the output and input count,
       lest it mess up the operand numbering.  */
*************** expand_asm_stmt (gasm *stmt)
*** 3948,3955 ****
    if (fallthru_label)
      emit_label (fallthru_label);
  
-   if (after_md_seq)
-     emit_insn (after_md_seq);
    if (after_rtl_seq)
      {
        if (nlabels == 0)
--- 3957,3962 ----
*************** expand_debug_expr (tree exp)
*** 5635,5646 ****
        else if (TREE_CODE (TREE_TYPE (exp)) == VECTOR_TYPE)
  	{
  	  unsigned i;
! 	  unsigned HOST_WIDE_INT nelts;
  	  tree val;
  
- 	  if (!TYPE_VECTOR_SUBPARTS (TREE_TYPE (exp)).is_constant (&nelts))
- 	    goto flag_unsupported;
- 
  	  op0 = gen_rtx_CONCATN (mode, rtvec_alloc (nelts));
  
  	  FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (exp), i, val)
--- 5642,5651 ----
        else if (TREE_CODE (TREE_TYPE (exp)) == VECTOR_TYPE)
  	{
  	  unsigned i;
! 	  poly_uint64 elts = TYPE_VECTOR_SUBPARTS (TREE_TYPE (exp));
! 	  unsigned HOST_WIDE_INT nelts = constant_lower_bound (elts);
  	  tree val;
  
  	  op0 = gen_rtx_CONCATN (mode, rtvec_alloc (nelts));
  
  	  FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (exp), i, val)
diff -Nrcpad gcc-15.2.0/gcc/cfgrtl.cc gcc-15.3.0/gcc/cfgrtl.cc
*** gcc-15.2.0/gcc/cfgrtl.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cfgrtl.cc	Fri Jun 12 06:09:06 2026
*************** force_nonfallthru_and_redirect (edge e,
*** 1594,1647 ****
      }
  
    /* If e->src ends with asm goto, see if any of the ASM_OPERANDS_LABELs
!      don't point to the target or fallthru label.  */
    if (JUMP_P (BB_END (e->src))
        && target != EXIT_BLOCK_PTR_FOR_FN (cfun)
        && (e->flags & EDGE_FALLTHRU)
        && (note = extract_asm_operands (PATTERN (BB_END (e->src)))))
      {
!       int i, n = ASM_OPERANDS_LABEL_LENGTH (note);
!       bool adjust_jump_target = false;
  
!       for (i = 0; i < n; ++i)
! 	{
! 	  if (XEXP (ASM_OPERANDS_LABEL (note, i), 0) == BB_HEAD (e->dest))
! 	    {
! 	      LABEL_NUSES (XEXP (ASM_OPERANDS_LABEL (note, i), 0))--;
! 	      XEXP (ASM_OPERANDS_LABEL (note, i), 0) = block_label (target);
! 	      LABEL_NUSES (XEXP (ASM_OPERANDS_LABEL (note, i), 0))++;
! 	      adjust_jump_target = true;
! 	    }
! 	  if (XEXP (ASM_OPERANDS_LABEL (note, i), 0) == BB_HEAD (target))
  	    asm_goto_edge = true;
! 	}
!       if (adjust_jump_target)
! 	{
! 	  rtx_insn *insn = BB_END (e->src);
! 	  rtx note;
! 	  rtx_insn *old_label = BB_HEAD (e->dest);
! 	  rtx_insn *new_label = BB_HEAD (target);
! 
! 	  if (JUMP_LABEL (insn) == old_label)
! 	    {
! 	      JUMP_LABEL (insn) = new_label;
! 	      note = find_reg_note (insn, REG_LABEL_TARGET, new_label);
! 	      if (note)
! 		remove_note (insn, note);
! 	    }
! 	  else
! 	    {
! 	      note = find_reg_note (insn, REG_LABEL_TARGET, old_label);
! 	      if (note)
! 		remove_note (insn, note);
! 	      if (JUMP_LABEL (insn) != new_label
! 		  && !find_reg_note (insn, REG_LABEL_TARGET, new_label))
! 		add_reg_note (insn, REG_LABEL_TARGET, new_label);
! 	    }
! 	  while ((note = find_reg_note (insn, REG_LABEL_OPERAND, old_label))
! 		 != NULL_RTX)
! 	    XEXP (note, 0) = new_label;
! 	}
      }
  
    if (EDGE_COUNT (e->src->succs) >= 2 || abnormal_edge_flags || asm_goto_edge)
--- 1594,1613 ----
      }
  
    /* If e->src ends with asm goto, see if any of the ASM_OPERANDS_LABELs
!      don't point to the fallthru label.  */
    if (JUMP_P (BB_END (e->src))
        && target != EXIT_BLOCK_PTR_FOR_FN (cfun)
        && (e->flags & EDGE_FALLTHRU)
        && (note = extract_asm_operands (PATTERN (BB_END (e->src)))))
      {
!       int n = ASM_OPERANDS_LABEL_LENGTH (note);
  
!       for (int i = 0; i < n; ++i)
! 	if (XEXP (ASM_OPERANDS_LABEL (note, i), 0) == BB_HEAD (e->dest))
! 	  {
  	    asm_goto_edge = true;
! 	    break;
! 	  }
      }
  
    if (EDGE_COUNT (e->src->succs) >= 2 || abnormal_edge_flags || asm_goto_edge)
*************** force_nonfallthru_and_redirect (edge e,
*** 1680,1694 ****
           and the reg crossing note should be removed.  */
        fixup_partition_crossing (new_edge);
  
!       /* If asm goto has any label refs to target's label,
! 	 add also edge from asm goto bb to target.  */
        if (asm_goto_edge)
  	{
! 	  new_edge->probability /= 2;
! 	  jump_block->count /= 2;
! 	  edge new_edge2 = make_edge (new_edge->src, target,
! 				      e->flags & ~EDGE_FALLTHRU);
! 	  new_edge2->probability = probability - new_edge->probability;
  	}
  
        new_bb = jump_block;
--- 1646,1690 ----
           and the reg crossing note should be removed.  */
        fixup_partition_crossing (new_edge);
  
!       /* If asm goto has any label refs to e->dest, change them to point
! 	 to jump_block instead.  */
        if (asm_goto_edge)
  	{
! 	  int n = ASM_OPERANDS_LABEL_LENGTH (note);
! 
! 	  for (int i = 0; i < n; ++i)
! 	    if (XEXP (ASM_OPERANDS_LABEL (note, i), 0) == BB_HEAD (e->dest))
! 	      {
! 		LABEL_NUSES (XEXP (ASM_OPERANDS_LABEL (note, i), 0))--;
! 		XEXP (ASM_OPERANDS_LABEL (note, i), 0)
! 		  = block_label (jump_block);
! 		LABEL_NUSES (XEXP (ASM_OPERANDS_LABEL (note, i), 0))++;
! 	      }
! 
! 	  rtx_insn *insn = BB_END (new_edge->src);
! 	  rtx note;
! 	  rtx_insn *old_label = BB_HEAD (e->dest);
! 	  rtx_insn *new_label = BB_HEAD (jump_block);
! 
! 	  if (JUMP_LABEL (insn) == old_label)
! 	    {
! 	      JUMP_LABEL (insn) = new_label;
! 	      note = find_reg_note (insn, REG_LABEL_TARGET, new_label);
! 	      if (note)
! 		remove_note (insn, note);
! 	    }
! 	  else
! 	    {
! 	      note = find_reg_note (insn, REG_LABEL_TARGET, old_label);
! 	      if (note)
! 		remove_note (insn, note);
! 	      if (JUMP_LABEL (insn) != new_label
! 		  && !find_reg_note (insn, REG_LABEL_TARGET, new_label))
! 		add_reg_note (insn, REG_LABEL_TARGET, new_label);
! 	    }
! 	  while ((note = find_reg_note (insn, REG_LABEL_OPERAND, old_label))
! 		 != NULL_RTX)
! 	    XEXP (note, 0) = new_label;
  	}
  
        new_bb = jump_block;
diff -Nrcpad gcc-15.2.0/gcc/cobol/ChangeLog gcc-15.3.0/gcc/cobol/ChangeLog
*** gcc-15.2.0/gcc/cobol/ChangeLog	Fri Aug  8 06:52:35 2025
--- gcc-15.3.0/gcc/cobol/ChangeLog	Fri Jun 12 06:10:03 2026
***************
*** 1,3 ****
--- 1,7 ----
+ 2026-06-12  Release Manager
+ 
+ 	* GCC 15.3.0 released.
+ 
  2025-08-08  Release Manager
  
  	* GCC 15.2.0 released.
diff -Nrcpad gcc-15.2.0/gcc/combine.cc gcc-15.3.0/gcc/combine.cc
*** gcc-15.2.0/gcc/combine.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/combine.cc	Fri Jun 12 06:09:06 2026
*************** struct reg_stat_type {
*** 195,201 ****
       sign bits copies it was known to have when it was last set.  */
  
    unsigned HOST_WIDE_INT	last_set_nonzero_bits;
!   char				last_set_sign_bit_copies;
    ENUM_BITFIELD(machine_mode)	last_set_mode : MACHINE_MODE_BITSIZE;
  
    /* Set to true if references to register n in expressions should not be
--- 195,201 ----
       sign bits copies it was known to have when it was last set.  */
  
    unsigned HOST_WIDE_INT	last_set_nonzero_bits;
!   unsigned short		last_set_sign_bit_copies;
    ENUM_BITFIELD(machine_mode)	last_set_mode : MACHINE_MODE_BITSIZE;
  
    /* Set to true if references to register n in expressions should not be
*************** struct reg_stat_type {
*** 216,222 ****
  
       If an entry is zero, it means that we don't know anything special.  */
  
!   unsigned char			sign_bit_copies;
  
    unsigned HOST_WIDE_INT	nonzero_bits;
  
--- 216,222 ----
  
       If an entry is zero, it means that we don't know anything special.  */
  
!   unsigned short		sign_bit_copies;
  
    unsigned HOST_WIDE_INT	nonzero_bits;
  
*************** try_combine (rtx_insn *i3, rtx_insn *i2,
*** 4026,4032 ****
  	  && !(GET_CODE (SET_DEST (set1)) == SUBREG
  	       && find_reg_note (i2, REG_DEAD,
  				 SUBREG_REG (SET_DEST (set1))))
! 	  && SET_DEST (set1) != pc_rtx
  	  && !reg_used_between_p (SET_DEST (set1), i2, i3)
  	  /* If I3 is a jump, ensure that set0 is a jump so that
  	     we do not create invalid RTL.  */
--- 4026,4032 ----
  	  && !(GET_CODE (SET_DEST (set1)) == SUBREG
  	       && find_reg_note (i2, REG_DEAD,
  				 SUBREG_REG (SET_DEST (set1))))
! 	  && !modified_between_p (SET_DEST (set1), i2, i3)
  	  && !reg_used_between_p (SET_DEST (set1), i2, i3)
  	  /* If I3 is a jump, ensure that set0 is a jump so that
  	     we do not create invalid RTL.  */
*************** try_combine (rtx_insn *i3, rtx_insn *i2,
*** 4042,4048 ****
  	       && !(GET_CODE (SET_DEST (set0)) == SUBREG
  		    && find_reg_note (i2, REG_DEAD,
  				      SUBREG_REG (SET_DEST (set0))))
! 	       && SET_DEST (set0) != pc_rtx
  	       && !reg_used_between_p (SET_DEST (set0), i2, i3)
  	       /* If I3 is a jump, ensure that set1 is a jump so that
  		  we do not create invalid RTL.  */
--- 4042,4048 ----
  	       && !(GET_CODE (SET_DEST (set0)) == SUBREG
  		    && find_reg_note (i2, REG_DEAD,
  				      SUBREG_REG (SET_DEST (set0))))
! 	       && !modified_between_p (SET_DEST (set0), i2, i3)
  	       && !reg_used_between_p (SET_DEST (set0), i2, i3)
  	       /* If I3 is a jump, ensure that set1 is a jump so that
  		  we do not create invalid RTL.  */
*************** recog_for_combine (rtx *pnewpat, rtx_ins
*** 11752,11758 ****
        rtx src = SET_SRC (pat);
        if (CONSTANT_P (src)
  	  && !CONST_INT_P (src)
! 	  && crtl->uses_const_pool)
  	{
  	  machine_mode mode = GET_MODE (src);
  	  if (mode == VOIDmode)
--- 11752,11759 ----
        rtx src = SET_SRC (pat);
        if (CONSTANT_P (src)
  	  && !CONST_INT_P (src)
! 	  && crtl->uses_const_pool
! 	  && SET_DEST (pat) != pc_rtx)
  	{
  	  machine_mode mode = GET_MODE (src);
  	  if (mode == VOIDmode)
diff -Nrcpad gcc-15.2.0/gcc/common/config/avr/avr-common.cc gcc-15.3.0/gcc/common/config/avr/avr-common.cc
*** gcc-15.2.0/gcc/common/config/avr/avr-common.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/common/config/avr/avr-common.cc	Fri Jun 12 06:09:06 2026
***************
*** 29,34 ****
--- 29,41 ----
  /* Implement TARGET_OPTION_OPTIMIZATION_TABLE.  */
  static const struct default_options avr_option_optimization_table[] =
    {
+     // The lookup table from tree-swicth-conversion.cc lives in .rodata
+     // and hence consumes RAM on almost all devices.  As PR49857 has
+     // been rejected several times for non-technical reasons, just
+     // disable -ftree-switch-conversion by default.  But even with PR49857
+     // in place there remains PR81540, which cannot be filtered out since
+     // the pass has no way to hook in.
+     { OPT_LEVELS_ALL, OPT_ftree_switch_conversion, NULL, 0 },
      // The only effect of -fcaller-saves might be that it triggers
      // a frame without need when it tries to be smart around calls.
      { OPT_LEVELS_ALL, OPT_fcaller_saves, NULL, 0 },
diff -Nrcpad gcc-15.2.0/gcc/config/aarch64/aarch64-builtins.cc gcc-15.3.0/gcc/config/aarch64/aarch64-builtins.cc
*** gcc-15.2.0/gcc/config/aarch64/aarch64-builtins.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/aarch64/aarch64-builtins.cc	Fri Jun 12 06:09:06 2026
*************** struct aarch64_pragma_builtins_data
*** 1719,1725 ****
    unsigned int flags;
  };
  
! static aarch64_pragma_builtins_data aarch64_pragma_builtins[] = {
  #include "aarch64-simd-pragma-builtins.def"
  };
  
--- 1719,1725 ----
    unsigned int flags;
  };
  
! static CONSTEXPR aarch64_pragma_builtins_data aarch64_pragma_builtins[] = {
  #include "aarch64-simd-pragma-builtins.def"
  };
  
*************** aarch64_init_ls64_builtins_types (void)
*** 2294,2299 ****
--- 2294,2300 ----
    const char *tuple_type_name = "__arm_data512_t";
    tree node_type = get_typenode_from_name (UINT64_TYPE);
    tree array_type = build_array_type_nelts (node_type, 8);
+   array_type = build_distinct_type_copy (array_type);
    SET_TYPE_MODE (array_type, V8DImode);
  
    gcc_assert (TYPE_MODE_RAW (array_type) == TYPE_MODE (array_type));
diff -Nrcpad gcc-15.2.0/gcc/config/aarch64/aarch64-cores.def gcc-15.3.0/gcc/config/aarch64/aarch64-cores.def
*** gcc-15.2.0/gcc/config/aarch64/aarch64-cores.def	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/aarch64/aarch64-cores.def	Fri Jun 12 06:09:06 2026
*************** AARCH64_CORE("a64fx", a64fx, a64fx, V8_2
*** 135,140 ****
--- 135,141 ----
  AARCH64_CORE("fujitsu-monaka", fujitsu_monaka, cortexa57, V9_3A, (F16, FAMINMAX, FP8FMA, FP8DOT2, FP8DOT4, LS64, LUT, RNG, CRYPTO, SVE2_AES, SVE2_BITPERM, SVE2_SHA3, SVE2_SM4), fujitsu_monaka, 0x46, 0x003, -1)
  
  /* HiSilicon ('H') cores. */
+ AARCH64_CORE("hip12", hip12, cortexa57, V8_7A, (F16, PROFILE, RNG, SVE2_BITPERM, SVE2_AES, SVE2_SM4, SVE2_SHA3, LS64, RCPC3), hip12, 0x48, 0xd06, -1)
  AARCH64_CORE("tsv110",  tsv110, tsv110, V8_2A,  (CRYPTO, F16), tsv110,   0x48, 0xd01, -1)
  
  /* ARMv8.3-A Architecture Processors.  */
diff -Nrcpad gcc-15.2.0/gcc/config/aarch64/aarch64-cost-tables.h gcc-15.3.0/gcc/config/aarch64/aarch64-cost-tables.h
*** gcc-15.2.0/gcc/config/aarch64/aarch64-cost-tables.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/aarch64/aarch64-cost-tables.h	Fri Jun 12 06:09:06 2026
*************** const struct cpu_cost_table tsv110_extra
*** 561,566 ****
--- 561,673 ----
    }
  };
  
+ const struct cpu_cost_table hip12_extra_costs =
+ {
+   /* ALU */
+   {
+     0,                 /* arith.  */
+     0,                 /* logical.  */
+     0,                 /* shift.  */
+     0,                 /* shift_reg.  */
+     COSTS_N_INSNS (1), /* arith_shift.  */
+     COSTS_N_INSNS (1), /* arith_shift_reg.  */
+     0,                 /* log_shift.  */
+     0,                 /* log_shift_reg.  */
+     0,                 /* extend.  */
+     COSTS_N_INSNS (1), /* extend_arith.  */
+     0,                 /* bfi.  */
+     0,                 /* bfx.  */
+     0,                 /* clz.  */
+     0,                 /* rev.  */
+     0,                 /* non_exec.  */
+     true               /* non_exec_costs_exec.  */
+   },
+   {
+     /* MULT SImode */
+     {
+       COSTS_N_INSNS (1),       /* simple.  */
+       COSTS_N_INSNS (1),       /* flag_setting.  */
+       COSTS_N_INSNS (1),       /* extend.  */
+       COSTS_N_INSNS (2),       /* add.  */
+       COSTS_N_INSNS (2),       /* extend_add.  */
+       COSTS_N_INSNS (5)        /* idiv.  */
+     },
+     /* MULT DImode */
+     {
+       COSTS_N_INSNS (2),       /* simple.  */
+       0,                       /* flag_setting (N/A).  */
+       COSTS_N_INSNS (2),       /* extend.  */
+       COSTS_N_INSNS (3),       /* add.  */
+       COSTS_N_INSNS (3),       /* extend_add.  */
+       COSTS_N_INSNS (7)        /* idiv.  */
+     }
+   },
+   /* LD/ST */
+   {
+     COSTS_N_INSNS (3),         /* load.  */
+     COSTS_N_INSNS (3),         /* load_sign_extend.  */
+     COSTS_N_INSNS (3),         /* ldrd.  */
+     0,                         /* ldm_1st.  */
+     0,                         /* ldm_regs_per_insn_1st.  */
+     0,                         /* ldm_regs_per_insn_subsequent.  */
+     COSTS_N_INSNS (5),         /* loadf.  */
+     COSTS_N_INSNS (5),         /* loadd.  */
+     COSTS_N_INSNS (4),         /* load_unaligned.  */
+     0,                         /* store.  */
+     0,                         /* strd.  */
+     0,                         /* stm_1st.  */
+     0,                         /* stm_regs_per_insn_1st.  */
+     0,                         /* stm_regs_per_insn_subsequent.  */
+     0,                         /* storef.  */
+     0,                         /* stored.  */
+     COSTS_N_INSNS (1),         /* store_unaligned.  */
+     COSTS_N_INSNS (5),         /* loadv.  */
+     COSTS_N_INSNS (1)          /* storev.  */
+   },
+   {
+     /* FP SFmode */
+     {
+       COSTS_N_INSNS (5),       /* div.  */
+       COSTS_N_INSNS (2),       /* mult.  */
+       COSTS_N_INSNS (4),       /* mult_addsub.  */
+       COSTS_N_INSNS (3),       /* fma.  */
+       COSTS_N_INSNS (1),       /* addsub.  */
+       COSTS_N_INSNS (1),       /* fpconst.  */
+       0,                       /* neg.  */
+       COSTS_N_INSNS (1),       /* compare.  */
+       COSTS_N_INSNS (2),       /* widen.  */
+       COSTS_N_INSNS (2),       /* narrow.  */
+       COSTS_N_INSNS (2),       /* toint.  */
+       COSTS_N_INSNS (3),       /* fromint.  */
+       COSTS_N_INSNS (2)        /* roundint.  */
+     },
+     /* FP DFmode */
+     {
+       COSTS_N_INSNS (7),       /* div.  */
+       COSTS_N_INSNS (2),       /* mult.  */
+       COSTS_N_INSNS (4),       /* mult_addsub.  */
+       COSTS_N_INSNS (3),       /* fma.  */
+       COSTS_N_INSNS (1),       /* addsub.  */
+       COSTS_N_INSNS (1),       /* fpconst.  */
+       0,                       /* neg.  */
+       COSTS_N_INSNS (1),       /* compare.  */
+       COSTS_N_INSNS (2),       /* widen.  */
+       COSTS_N_INSNS (2),       /* narrow.  */
+       COSTS_N_INSNS (2),       /* toint.  */
+       COSTS_N_INSNS (3),       /* fromint.  */
+       COSTS_N_INSNS (2)        /* roundint.  */
+     }
+   },
+   /* Vector */
+   {
+     COSTS_N_INSNS (1),  /* alu.  */
+     COSTS_N_INSNS (2),  /* mult.  */
+     COSTS_N_INSNS (1),  /* movi.  */
+     COSTS_N_INSNS (1),  /* dup.  */
+     COSTS_N_INSNS (1)   /* extract.  */
+   }
+ };
+ 
  const struct cpu_cost_table a64fx_extra_costs =
  {
    /* ALU */
diff -Nrcpad gcc-15.2.0/gcc/config/aarch64/aarch64-early-ra.cc gcc-15.3.0/gcc/config/aarch64/aarch64-early-ra.cc
*** gcc-15.2.0/gcc/config/aarch64/aarch64-early-ra.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/aarch64/aarch64-early-ra.cc	Fri Jun 12 06:09:06 2026
*************** early_ra::get_allocno_subgroup (rtx reg)
*** 1520,1526 ****
        group->has_flexible_stride = ((flags & HAS_FLEXIBLE_STRIDE) != 0
  				    && (flags & HAS_FIXED_STRIDE) == 0);
  
!       group->fpr_size = (maybe_gt (fpr_bits, 128) ? FPR_Z
  			 : maybe_gt (fpr_bits, 64) ? FPR_Q : FPR_D);
  
        entry = group;
--- 1520,1534 ----
        group->has_flexible_stride = ((flags & HAS_FLEXIBLE_STRIDE) != 0
  				    && (flags & HAS_FIXED_STRIDE) == 0);
  
!       // SVE modes always occupy the full Z register, even for partial modes
!       // like VNx2SF whose mode size is only 64 bits.  Treating such modes
!       // as FPR_D would let partial_fpr_clobbers ignore the fact that
!       // V8-V15 are only partially callee-saved under AAPCS64 -- the high
!       // bits of the Z register are clobbered by calls.  Always classify
!       // SVE modes as FPR_Z so that V8-V15 are excluded as candidates for
!       // pseudos that are live across calls.
!       group->fpr_size = ((aarch64_sve_mode_p (GET_MODE (reg))
! 			  || maybe_gt (fpr_bits, 128)) ? FPR_Z
  			 : maybe_gt (fpr_bits, 64) ? FPR_Q : FPR_D);
  
        entry = group;
*************** early_ra::form_chains ()
*** 2733,2755 ****
    if (dump_file && (dump_flags & TDF_DETAILS))
      fprintf (dump_file, "\nChaining allocnos:\n");
  
!   // Perform (modified) interval graph coloring.  First sort by
!   // increasing start point.
!   m_sorted_allocnos.reserve (m_allocnos.length ());
!   m_sorted_allocnos.splice (m_allocnos);
!   m_sorted_allocnos.qsort (cmp_increasing<&allocno_info::start_point>);
! 
!   // During this phase, color representatives are only correct for
!   // unprocessed allocno groups (where the color representative is
!   // the group itself) and for groups that contain a current chain head.
!   unsigned int ti = 0;
!   auto_vec<chain_candidate_info> candidates;
!   for (unsigned int hi = 0; hi < m_sorted_allocnos.length (); ++hi)
      {
-       auto *allocno1 = m_sorted_allocnos[hi];
-       if (allocno1->chain_next != INVALID_ALLOCNO)
- 	continue;
- 
        // Record conflicts with direct uses for FPR hard registers.
        auto *group1 = allocno1->group ();
        for (unsigned int fpr = allocno1->offset; fpr < 32; ++fpr)
--- 2741,2750 ----
    if (dump_file && (dump_flags & TDF_DETAILS))
      fprintf (dump_file, "\nChaining allocnos:\n");
  
!   // Record conflicts of hard register and ABI conflicts before the
!   // forming of chains so chains have the updated candidates
!   for (auto *allocno1 : m_allocnos)
      {
        // Record conflicts with direct uses for FPR hard registers.
        auto *group1 = allocno1->group ();
        for (unsigned int fpr = allocno1->offset; fpr < 32; ++fpr)
*************** early_ra::form_chains ()
*** 2765,2770 ****
--- 2760,2788 ----
  	    auto fprs = partial_fpr_clobbers (abi_id, group1->fpr_size);
  	    group1->fpr_candidates &= ~fprs >> allocno1->offset;
  	  }
+       if (allocno1->is_shared ())
+ 	{
+ 	  auto *allocno2 = m_allocnos[allocno1->related_allocno];
+ 	  merge_fpr_info (allocno2->group (), group1, allocno2->offset);
+ 	}
+     }
+ 
+   // Perform (modified) interval graph coloring.  First sort by
+   // increasing start point.
+   m_sorted_allocnos.reserve (m_allocnos.length ());
+   m_sorted_allocnos.splice (m_allocnos);
+   m_sorted_allocnos.qsort (cmp_increasing<&allocno_info::start_point>);
+ 
+   // During this phase, color representatives are only correct for
+   // unprocessed allocno groups (where the color representative is
+   // the group itself) and for groups that contain a current chain head.
+   unsigned int ti = 0;
+   auto_vec<chain_candidate_info> candidates;
+   for (unsigned int hi = 0; hi < m_sorted_allocnos.length (); ++hi)
+     {
+       auto *allocno1 = m_sorted_allocnos[hi];
+       if (allocno1->chain_next != INVALID_ALLOCNO)
+ 	continue;
  
        if (allocno1->is_shared ())
  	{
*************** early_ra::form_chains ()
*** 2772,2779 ****
  	    fprintf (dump_file, "  Allocno %d shares the same hard register"
  		     " as allocno %d\n", allocno1->id,
  		     allocno1->related_allocno);
- 	  auto *allocno2 = m_allocnos[allocno1->related_allocno];
- 	  merge_fpr_info (allocno2->group (), group1, allocno2->offset);
  	  m_shared_allocnos.safe_push (allocno1);
  	  continue;
  	}
--- 2790,2795 ----
diff -Nrcpad gcc-15.2.0/gcc/config/aarch64/aarch64-protos.h gcc-15.3.0/gcc/config/aarch64/aarch64-protos.h
*** gcc-15.2.0/gcc/config/aarch64/aarch64-protos.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/aarch64/aarch64-protos.h	Fri Jun 12 06:09:06 2026
*************** struct cpu_branch_cost
*** 481,486 ****
--- 481,487 ----
  {
    const int predictable;    /* Predictable branch or optimizing for size.  */
    const int unpredictable;  /* Unpredictable branch or optimizing for speed.  */
+   const int br_mispredict_factor;  /* Scale factor for cost of misprediction on branches.  */
  };
  
  /* Control approximate alternatives to certain FP operators.  */
*************** bool aarch64_uimm12_shift (unsigned HOST
*** 970,975 ****
--- 971,977 ----
  int aarch64_movk_shift (const wide_int_ref &, const wide_int_ref &);
  bool aarch64_is_mov_xn_imm (unsigned HOST_WIDE_INT);
  bool aarch64_use_return_insn_p (void);
+ bool aarch64_use_simple_return_insn_p (void);
  const char *aarch64_output_casesi (rtx *);
  const char *aarch64_output_load_tp (rtx);
  const char *aarch64_output_sme_zero_za (rtx);
diff -Nrcpad gcc-15.2.0/gcc/config/aarch64/aarch64-simd-pragma-builtins.def gcc-15.3.0/gcc/config/aarch64/aarch64-simd-pragma-builtins.def
*** gcc-15.2.0/gcc/config/aarch64/aarch64-simd-pragma-builtins.def	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/aarch64/aarch64-simd-pragma-builtins.def	Fri Jun 12 06:09:06 2026
*************** ENTRY_FMA_FPM (vmlalltt, f32, UNSPEC_FML
*** 197,203 ****
  #undef REQUIRED_EXTENSIONS
  
  // bsl
! #define REQUIRED_EXTENSIONS nonstreaming_only (TARGET_SIMD)
  ENTRY_TERNARY (vbsl_mf8, mf8, u8, mf8, mf8, UNSPEC_BSL, QUIET)
  ENTRY_TERNARY (vbslq_mf8, mf8q, u8q, mf8q, mf8q, UNSPEC_BSL, QUIET)
  #undef REQUIRED_EXTENSIONS
--- 197,203 ----
  #undef REQUIRED_EXTENSIONS
  
  // bsl
! #define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)
  ENTRY_TERNARY (vbsl_mf8, mf8, u8, mf8, mf8, UNSPEC_BSL, QUIET)
  ENTRY_TERNARY (vbslq_mf8, mf8q, u8q, mf8q, mf8q, UNSPEC_BSL, QUIET)
  #undef REQUIRED_EXTENSIONS
*************** ENTRY_BINARY (vcombine_mf8, mf8q, mf8, m
*** 208,214 ****
  #undef REQUIRED_EXTENSIONS
  
  // copy_lane
! #define REQUIRED_EXTENSIONS nonstreaming_only (TARGET_SIMD)
  ENTRY_BINARY_TWO_LANES (vcopy_lane_mf8, mf8, mf8, mf8,
  			UNSPEC_VEC_COPY, QUIET)
  ENTRY_BINARY_TWO_LANES (vcopyq_lane_mf8, mf8q, mf8q, mf8,
--- 208,214 ----
  #undef REQUIRED_EXTENSIONS
  
  // copy_lane
! #define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)
  ENTRY_BINARY_TWO_LANES (vcopy_lane_mf8, mf8, mf8, mf8,
  			UNSPEC_VEC_COPY, QUIET)
  ENTRY_BINARY_TWO_LANES (vcopyq_lane_mf8, mf8q, mf8q, mf8,
*************** ENTRY_BINARY_TWO_LANES (vcopyq_laneq_mf8
*** 220,231 ****
  #undef REQUIRED_EXTENSIONS
  
  // create
! #define REQUIRED_EXTENSIONS nonstreaming_only (TARGET_SIMD)
  ENTRY_UNARY (vcreate_mf8, mf8, u64_scalar, UNSPEC_VCREATE, QUIET)
  #undef REQUIRED_EXTENSIONS
  
  // dup
! #define REQUIRED_EXTENSIONS nonstreaming_only (TARGET_SIMD)
  ENTRY_UNARY (vdup_n_mf8, mf8, mf8_scalar, UNSPEC_DUP, QUIET)
  ENTRY_UNARY (vdupq_n_mf8, mf8q, mf8_scalar, UNSPEC_DUP, QUIET)
  
--- 220,231 ----
  #undef REQUIRED_EXTENSIONS
  
  // create
! #define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)
  ENTRY_UNARY (vcreate_mf8, mf8, u64_scalar, UNSPEC_VCREATE, QUIET)
  #undef REQUIRED_EXTENSIONS
  
  // dup
! #define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)
  ENTRY_UNARY (vdup_n_mf8, mf8, mf8_scalar, UNSPEC_DUP, QUIET)
  ENTRY_UNARY (vdupq_n_mf8, mf8q, mf8_scalar, UNSPEC_DUP, QUIET)
  
*************** ENTRY_UNARY_LANE (vdupq_laneq_mf8, mf8q,
*** 236,254 ****
  #undef REQUIRED_EXTENSIONS
  
  // dupb_lane
! #define REQUIRED_EXTENSIONS nonstreaming_only (TARGET_SIMD)
  ENTRY_UNARY_LANE (vdupb_lane_mf8, mf8_scalar, mf8, UNSPEC_GET_LANE, QUIET)
  ENTRY_UNARY_LANE (vdupb_laneq_mf8, mf8_scalar, mf8q, UNSPEC_GET_LANE, QUIET)
  #undef REQUIRED_EXTENSIONS
  
  // ext
! #define REQUIRED_EXTENSIONS nonstreaming_only (TARGET_SIMD)
  ENTRY_BINARY_LANE (vext_mf8, mf8, mf8, mf8, UNSPEC_EXT, QUIET)
  ENTRY_BINARY_LANE (vextq_mf8, mf8q, mf8q, mf8q, UNSPEC_EXT, QUIET)
  #undef REQUIRED_EXTENSIONS
  
  // ld1
! #define REQUIRED_EXTENSIONS nonstreaming_only (TARGET_SIMD)
  ENTRY_LOAD (vld1_mf8, mf8, mf8_scalar_const_ptr, UNSPEC_LD1)
  ENTRY_LOAD (vld1q_mf8, mf8q, mf8_scalar_const_ptr, UNSPEC_LD1)
  ENTRY_LOAD (vld1_dup_mf8, mf8, mf8_scalar_const_ptr, UNSPEC_DUP)
--- 236,254 ----
  #undef REQUIRED_EXTENSIONS
  
  // dupb_lane
! #define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)
  ENTRY_UNARY_LANE (vdupb_lane_mf8, mf8_scalar, mf8, UNSPEC_GET_LANE, QUIET)
  ENTRY_UNARY_LANE (vdupb_laneq_mf8, mf8_scalar, mf8q, UNSPEC_GET_LANE, QUIET)
  #undef REQUIRED_EXTENSIONS
  
  // ext
! #define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)
  ENTRY_BINARY_LANE (vext_mf8, mf8, mf8, mf8, UNSPEC_EXT, QUIET)
  ENTRY_BINARY_LANE (vextq_mf8, mf8q, mf8q, mf8q, UNSPEC_EXT, QUIET)
  #undef REQUIRED_EXTENSIONS
  
  // ld1
! #define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)
  ENTRY_LOAD (vld1_mf8, mf8, mf8_scalar_const_ptr, UNSPEC_LD1)
  ENTRY_LOAD (vld1q_mf8, mf8q, mf8_scalar_const_ptr, UNSPEC_LD1)
  ENTRY_LOAD (vld1_dup_mf8, mf8, mf8_scalar_const_ptr, UNSPEC_DUP)
*************** ENTRY_LOAD_LANE (vld1q_lane_mf8, mf8q, m
*** 261,267 ****
  #undef REQUIRED_EXTENSIONS
  
  // ld<n>
! #define REQUIRED_EXTENSIONS nonstreaming_only (TARGET_SIMD)
  ENTRY_LOAD (vld1_mf8_x2, mf8x2, mf8_scalar_const_ptr, UNSPEC_LD1x2)
  ENTRY_LOAD (vld1q_mf8_x2, mf8qx2, mf8_scalar_const_ptr, UNSPEC_LD1x2)
  ENTRY_LOAD (vld2_mf8, mf8x2, mf8_scalar_const_ptr, UNSPEC_LD2)
--- 261,267 ----
  #undef REQUIRED_EXTENSIONS
  
  // ld<n>
! #define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)
  ENTRY_LOAD (vld1_mf8_x2, mf8x2, mf8_scalar_const_ptr, UNSPEC_LD1x2)
  ENTRY_LOAD (vld1q_mf8_x2, mf8qx2, mf8_scalar_const_ptr, UNSPEC_LD1x2)
  ENTRY_LOAD (vld2_mf8, mf8x2, mf8_scalar_const_ptr, UNSPEC_LD2)
*************** ENTRY_LOAD_LANE (vld4q_lane_mf8, mf8qx4,
*** 297,309 ****
  #undef REQUIRED_EXTENSIONS
  
  // mov
! #define REQUIRED_EXTENSIONS nonstreaming_only (TARGET_SIMD)
  ENTRY_UNARY (vmov_n_mf8, mf8, mf8_scalar, UNSPEC_DUP, QUIET)
  ENTRY_UNARY (vmovq_n_mf8, mf8q, mf8_scalar, UNSPEC_DUP, QUIET)
  #undef REQUIRED_EXTENSIONS
  
  // rev
! #define REQUIRED_EXTENSIONS nonstreaming_only (TARGET_SIMD)
  ENTRY_UNARY (vrev64_mf8, mf8, mf8, UNSPEC_REV64, QUIET)
  ENTRY_UNARY (vrev64q_mf8, mf8q, mf8q, UNSPEC_REV64, QUIET)
  
--- 297,309 ----
  #undef REQUIRED_EXTENSIONS
  
  // mov
! #define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)
  ENTRY_UNARY (vmov_n_mf8, mf8, mf8_scalar, UNSPEC_DUP, QUIET)
  ENTRY_UNARY (vmovq_n_mf8, mf8q, mf8_scalar, UNSPEC_DUP, QUIET)
  #undef REQUIRED_EXTENSIONS
  
  // rev
! #define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)
  ENTRY_UNARY (vrev64_mf8, mf8, mf8, UNSPEC_REV64, QUIET)
  ENTRY_UNARY (vrev64q_mf8, mf8q, mf8q, UNSPEC_REV64, QUIET)
  
*************** ENTRY_UNARY (vrev16q_mf8, mf8q, mf8q, UN
*** 315,327 ****
  #undef REQUIRED_EXTENSIONS
  
  // set_lane
! #define REQUIRED_EXTENSIONS nonstreaming_only (TARGET_SIMD)
  ENTRY_BINARY_LANE (vset_lane_mf8, mf8, mf8_scalar, mf8, UNSPEC_SET_LANE, QUIET)
  ENTRY_BINARY_LANE (vsetq_lane_mf8, mf8q, mf8_scalar, mf8q, UNSPEC_SET_LANE, QUIET)
  #undef REQUIRED_EXTENSIONS
  
  // st1
! #define REQUIRED_EXTENSIONS nonstreaming_only (TARGET_SIMD)
  ENTRY_STORE (vst1_mf8, mf8_scalar_ptr, mf8, UNSPEC_ST1)
  ENTRY_STORE (vst1q_mf8, mf8_scalar_ptr, mf8q, UNSPEC_ST1)
  
--- 315,327 ----
  #undef REQUIRED_EXTENSIONS
  
  // set_lane
! #define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)
  ENTRY_BINARY_LANE (vset_lane_mf8, mf8, mf8_scalar, mf8, UNSPEC_SET_LANE, QUIET)
  ENTRY_BINARY_LANE (vsetq_lane_mf8, mf8q, mf8_scalar, mf8q, UNSPEC_SET_LANE, QUIET)
  #undef REQUIRED_EXTENSIONS
  
  // st1
! #define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)
  ENTRY_STORE (vst1_mf8, mf8_scalar_ptr, mf8, UNSPEC_ST1)
  ENTRY_STORE (vst1q_mf8, mf8_scalar_ptr, mf8q, UNSPEC_ST1)
  
*************** ENTRY_STORE_LANE (vst1q_lane_mf8, mf8_sc
*** 330,336 ****
  #undef REQUIRED_EXTENSIONS
  
  // st<n>
! #define REQUIRED_EXTENSIONS nonstreaming_only (TARGET_SIMD)
  ENTRY_STORE (vst2_mf8, mf8_scalar_ptr, mf8x2, UNSPEC_ST2)
  ENTRY_STORE (vst2q_mf8, mf8_scalar_ptr, mf8qx2, UNSPEC_ST2)
  ENTRY_STORE (vst1_mf8_x2, mf8_scalar_ptr, mf8x2, UNSPEC_ST1x2)
--- 330,336 ----
  #undef REQUIRED_EXTENSIONS
  
  // st<n>
! #define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)
  ENTRY_STORE (vst2_mf8, mf8_scalar_ptr, mf8x2, UNSPEC_ST2)
  ENTRY_STORE (vst2q_mf8, mf8_scalar_ptr, mf8qx2, UNSPEC_ST2)
  ENTRY_STORE (vst1_mf8_x2, mf8_scalar_ptr, mf8x2, UNSPEC_ST1x2)
*************** ENTRY_STORE_LANE (vst4q_lane_mf8, mf8_sc
*** 354,360 ****
  #undef REQUIRED_EXTENSIONS
  
  // tbl<n>
! #define REQUIRED_EXTENSIONS nonstreaming_only (TARGET_SIMD)
  ENTRY_BINARY (vtbl1_mf8, mf8, mf8, u8, UNSPEC_TBL, QUIET)
  ENTRY_BINARY (vtbl2_mf8, mf8, mf8x2, u8, UNSPEC_TBL, QUIET)
  ENTRY_BINARY (vtbl3_mf8, mf8, mf8x3, u8, UNSPEC_TBL, QUIET)
--- 354,360 ----
  #undef REQUIRED_EXTENSIONS
  
  // tbl<n>
! #define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)
  ENTRY_BINARY (vtbl1_mf8, mf8, mf8, u8, UNSPEC_TBL, QUIET)
  ENTRY_BINARY (vtbl2_mf8, mf8, mf8x2, u8, UNSPEC_TBL, QUIET)
  ENTRY_BINARY (vtbl3_mf8, mf8, mf8x3, u8, UNSPEC_TBL, QUIET)
*************** ENTRY_BINARY (vqtbl4q_mf8, mf8q, mf8qx4,
*** 371,377 ****
  #undef REQUIRED_EXTENSIONS
  
  // tbx<n>
! #define REQUIRED_EXTENSIONS nonstreaming_only (TARGET_SIMD)
  ENTRY_TERNARY (vtbx1_mf8, mf8, mf8, mf8, u8, UNSPEC_TBX, QUIET)
  ENTRY_TERNARY (vtbx2_mf8, mf8, mf8, mf8x2, u8, UNSPEC_TBX, QUIET)
  ENTRY_TERNARY (vtbx3_mf8, mf8, mf8, mf8x3, u8, UNSPEC_TBX, QUIET)
--- 371,377 ----
  #undef REQUIRED_EXTENSIONS
  
  // tbx<n>
! #define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)
  ENTRY_TERNARY (vtbx1_mf8, mf8, mf8, mf8, u8, UNSPEC_TBX, QUIET)
  ENTRY_TERNARY (vtbx2_mf8, mf8, mf8, mf8x2, u8, UNSPEC_TBX, QUIET)
  ENTRY_TERNARY (vtbx3_mf8, mf8, mf8, mf8x3, u8, UNSPEC_TBX, QUIET)
*************** ENTRY_TERNARY (vqtbx4q_mf8, mf8q, mf8q,
*** 388,394 ****
  #undef REQUIRED_EXTENSIONS
  
  // trn<n>
! #define REQUIRED_EXTENSIONS nonstreaming_only (TARGET_SIMD)
  ENTRY_BINARY (vtrn1_mf8, mf8, mf8, mf8, UNSPEC_TRN1, QUIET)
  ENTRY_BINARY (vtrn1q_mf8, mf8q, mf8q, mf8q, UNSPEC_TRN1, QUIET)
  ENTRY_BINARY (vtrn2_mf8, mf8, mf8, mf8, UNSPEC_TRN2, QUIET)
--- 388,394 ----
  #undef REQUIRED_EXTENSIONS
  
  // trn<n>
! #define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)
  ENTRY_BINARY (vtrn1_mf8, mf8, mf8, mf8, UNSPEC_TRN1, QUIET)
  ENTRY_BINARY (vtrn1q_mf8, mf8q, mf8q, mf8q, UNSPEC_TRN1, QUIET)
  ENTRY_BINARY (vtrn2_mf8, mf8, mf8, mf8, UNSPEC_TRN2, QUIET)
*************** ENTRY_BINARY (vtrnq_mf8, mf8qx2, mf8q, m
*** 398,404 ****
  #undef REQUIRED_EXTENSIONS
  
  // uzp<n>
! #define REQUIRED_EXTENSIONS nonstreaming_only (TARGET_SIMD)
  ENTRY_BINARY (vuzp1_mf8, mf8, mf8, mf8, UNSPEC_UZP1, QUIET)
  ENTRY_BINARY (vuzp1q_mf8, mf8q, mf8q, mf8q, UNSPEC_UZP1, QUIET)
  ENTRY_BINARY (vuzp2_mf8, mf8, mf8, mf8, UNSPEC_UZP2, QUIET)
--- 398,404 ----
  #undef REQUIRED_EXTENSIONS
  
  // uzp<n>
! #define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)
  ENTRY_BINARY (vuzp1_mf8, mf8, mf8, mf8, UNSPEC_UZP1, QUIET)
  ENTRY_BINARY (vuzp1q_mf8, mf8q, mf8q, mf8q, UNSPEC_UZP1, QUIET)
  ENTRY_BINARY (vuzp2_mf8, mf8, mf8, mf8, UNSPEC_UZP2, QUIET)
*************** ENTRY_BINARY (vuzpq_mf8, mf8qx2, mf8q, m
*** 408,414 ****
  #undef REQUIRED_EXTENSIONS
  
  // zip<n>
! #define REQUIRED_EXTENSIONS nonstreaming_only (TARGET_SIMD)
  ENTRY_BINARY (vzip1_mf8, mf8, mf8, mf8, UNSPEC_ZIP1, QUIET)
  ENTRY_BINARY (vzip1q_mf8, mf8q, mf8q, mf8q, UNSPEC_ZIP1, QUIET)
  ENTRY_BINARY (vzip2_mf8, mf8, mf8, mf8, UNSPEC_ZIP2, QUIET)
--- 408,414 ----
  #undef REQUIRED_EXTENSIONS
  
  // zip<n>
! #define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)
  ENTRY_BINARY (vzip1_mf8, mf8, mf8, mf8, UNSPEC_ZIP1, QUIET)
  ENTRY_BINARY (vzip1q_mf8, mf8q, mf8q, mf8q, UNSPEC_ZIP1, QUIET)
  ENTRY_BINARY (vzip2_mf8, mf8, mf8, mf8, UNSPEC_ZIP2, QUIET)
diff -Nrcpad gcc-15.2.0/gcc/config/aarch64/aarch64-simd.md gcc-15.3.0/gcc/config/aarch64/aarch64-simd.md
*** gcc-15.2.0/gcc/config/aarch64/aarch64-simd.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/aarch64/aarch64-simd.md	Fri Jun 12 06:09:06 2026
***************
*** 3181,3186 ****
--- 3181,3187 ----
      DONE;
    }
  )
+ 
  (define_insn "extend<mode><Vwide>2"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
  	(float_extend:<VWIDE>
***************
*** 3190,3195 ****
--- 3191,3219 ----
    [(set_attr "type" "neon_fp_cvt_widen_s")]
  )
  
+ /* A BF->SF is a shift left of 16, however shifts are expensive and the generic
+    middle-end expansion would force through DI move.  Instead use EXT to do the
+    shift to get better throughput and don't go through GPRs.  */
+ 
+ (define_expand "extendbfsf2"
+   [(set (match_operand:SF 0 "register_operand" "=w")
+ 	(float_extend:SF
+ 	  (match_operand:BF 1 "register_operand" "w")))]
+   "TARGET_SIMD"
+ {
+   rtx tmp0 = aarch64_gen_shareable_zero (V8BFmode);
+   rtx op0 = force_lowpart_subreg (V8BFmode, operands[1], BFmode);
+   rtx res = gen_reg_rtx (V8BFmode);
+   emit_insn (gen_aarch64_extv8bf (res, tmp0, op0, gen_int_mode (7, SImode)));
+   /* Subregs between floating point modes aren't allowed to change size, so go
+      through V4SFmode.  */
+   res = force_lowpart_subreg (V4SFmode, res, V8BFmode);
+   res = force_lowpart_subreg (SFmode, res, V4SFmode);
+   emit_move_insn (operands[0], res);
+   DONE;
+ })
+ 
+ 
  ;; Float narrowing operations.
  
  (define_insn "aarch64_float_trunc_rodd_df"
***************
*** 6678,6684 ****
  	(SAT_TRUNC:<VNARROWQ>
  	  (<TRUNC_SHIFT>:SD_HSDI
  	    (match_operand:SD_HSDI 1 "register_operand" "w")
! 	    (match_operand:SI 2 "aarch64_simd_shift_imm_offset_<ve_mode>"))))]
    "TARGET_SIMD"
    "<shrn_op>shrn\t%<vn2>0<Vmntype>, %<v>1<Vmtype>, %2"
    [(set_attr "type" "neon_shift_imm_narrow_q")]
--- 6702,6708 ----
  	(SAT_TRUNC:<VNARROWQ>
  	  (<TRUNC_SHIFT>:SD_HSDI
  	    (match_operand:SD_HSDI 1 "register_operand" "w")
! 	    (match_operand:SI 2 "aarch64_simd_shift_imm_offset_<vn_mode>"))))]
    "TARGET_SIMD"
    "<shrn_op>shrn\t%<vn2>0<Vmntype>, %<v>1<Vmtype>, %2"
    [(set_attr "type" "neon_shift_imm_narrow_q")]
***************
*** 6700,6706 ****
  	(ALL_TRUNC:<VNARROWQ>
  	  (<TRUNC_SHIFT>:VQN
  	    (match_operand:VQN 1 "register_operand")
! 	    (match_operand:SI 2 "aarch64_simd_shift_imm_offset_<ve_mode>"))))]
    "TARGET_SIMD"
    {
      operands[2] = aarch64_simd_gen_const_vector_dup (<MODE>mode,
--- 6724,6730 ----
  	(ALL_TRUNC:<VNARROWQ>
  	  (<TRUNC_SHIFT>:VQN
  	    (match_operand:VQN 1 "register_operand")
! 	    (match_operand:SI 2 "aarch64_simd_shift_imm_offset_<vn_mode>"))))]
    "TARGET_SIMD"
    {
      operands[2] = aarch64_simd_gen_const_vector_dup (<MODE>mode,
***************
*** 6731,6737 ****
  	      (<TRUNCEXTEND>:<DWI>
  	        (match_operand:SD_HSDI 1 "register_operand" "w"))
  	      (match_operand:<DWI> 3 "aarch64_int_rnd_operand"))
! 	    (match_operand:SI 2 "aarch64_simd_shift_imm_offset_<ve_mode>"))))]
    "TARGET_SIMD
     && aarch64_const_vec_rnd_cst_p (operands[3], operands[2])"
    "<shrn_op>rshrn\t%<vn2>0<Vmntype>, %<v>1<Vmtype>, %2"
--- 6755,6761 ----
  	      (<TRUNCEXTEND>:<DWI>
  	        (match_operand:SD_HSDI 1 "register_operand" "w"))
  	      (match_operand:<DWI> 3 "aarch64_int_rnd_operand"))
! 	    (match_operand:SI 2 "aarch64_simd_shift_imm_offset_<vn_mode>"))))]
    "TARGET_SIMD
     && aarch64_const_vec_rnd_cst_p (operands[3], operands[2])"
    "<shrn_op>rshrn\t%<vn2>0<Vmntype>, %<v>1<Vmtype>, %2"
***************
*** 6746,6752 ****
  	      (<TRUNCEXTEND>:<V2XWIDE>
  	        (match_operand:SD_HSDI 1 "register_operand"))
  	      (match_dup 3))
! 	    (match_operand:SI 2 "aarch64_simd_shift_imm_offset_<ve_mode>"))))]
    "TARGET_SIMD"
    {
      /* Use this expander to create the rounding constant vector, which is
--- 6770,6776 ----
  	      (<TRUNCEXTEND>:<V2XWIDE>
  	        (match_operand:SD_HSDI 1 "register_operand"))
  	      (match_dup 3))
! 	    (match_operand:SI 2 "aarch64_simd_shift_imm_offset_<vn_mode>"))))]
    "TARGET_SIMD"
    {
      /* Use this expander to create the rounding constant vector, which is
***************
*** 6766,6772 ****
  	      (<TRUNCEXTEND>:<V2XWIDE>
  	        (match_operand:VQN 1 "register_operand"))
  	      (match_dup 3))
! 	    (match_operand:SI 2 "aarch64_simd_shift_imm_offset_<ve_mode>"))))]
    "TARGET_SIMD"
    {
      if (<CODE> == TRUNCATE
--- 6790,6796 ----
  	      (<TRUNCEXTEND>:<V2XWIDE>
  	        (match_operand:VQN 1 "register_operand"))
  	      (match_dup 3))
! 	    (match_operand:SI 2 "aarch64_simd_shift_imm_offset_<vn_mode>"))))]
    "TARGET_SIMD"
    {
      if (<CODE> == TRUNCATE
***************
*** 6808,6814 ****
  	  (smax:SD_HSDI
  	    (ashiftrt:SD_HSDI
  	      (match_operand:SD_HSDI 1 "register_operand" "w")
! 	      (match_operand:SI 2 "aarch64_simd_shift_imm_offset_<ve_mode>"))
  	    (const_int 0))
  	  (const_int <half_mask>)))]
    "TARGET_SIMD"
--- 6832,6838 ----
  	  (smax:SD_HSDI
  	    (ashiftrt:SD_HSDI
  	      (match_operand:SD_HSDI 1 "register_operand" "w")
! 	      (match_operand:SI 2 "aarch64_simd_shift_imm_offset_<vn_mode>"))
  	    (const_int 0))
  	  (const_int <half_mask>)))]
    "TARGET_SIMD"
***************
*** 6819,6825 ****
  (define_expand "aarch64_sqshrun_n<mode>"
    [(match_operand:<VNARROWQ> 0 "register_operand")
     (match_operand:SD_HSDI 1 "register_operand")
!    (match_operand:SI 2 "aarch64_simd_shift_imm_offset_<ve_mode>")]
    "TARGET_SIMD"
    {
      rtx dst = gen_reg_rtx (<MODE>mode);
--- 6843,6849 ----
  (define_expand "aarch64_sqshrun_n<mode>"
    [(match_operand:<VNARROWQ> 0 "register_operand")
     (match_operand:SD_HSDI 1 "register_operand")
!    (match_operand:SI 2 "aarch64_simd_shift_imm_offset_<vn_mode>")]
    "TARGET_SIMD"
    {
      rtx dst = gen_reg_rtx (<MODE>mode);
***************
*** 6837,6843 ****
  	    (smax:VQN
  	      (ashiftrt:VQN
  		(match_operand:VQN 1 "register_operand")
! 		(match_operand:SI 2 "aarch64_simd_shift_imm_offset_<ve_mode>"))
  	      (match_dup 3))
  	    (match_dup 4))))]
    "TARGET_SIMD"
--- 6861,6867 ----
  	    (smax:VQN
  	      (ashiftrt:VQN
  		(match_operand:VQN 1 "register_operand")
! 		(match_operand:SI 2 "aarch64_simd_shift_imm_offset_<vn_mode>"))
  	      (match_dup 3))
  	    (match_dup 4))))]
    "TARGET_SIMD"
***************
*** 6879,6885 ****
  		(sign_extend:<DWI>
  		  (match_operand:SD_HSDI 1 "register_operand" "w"))
  		(match_operand:<DWI> 3 "aarch64_int_rnd_operand"))
! 	      (match_operand:SI 2 "aarch64_simd_shift_imm_offset_<ve_mode>"))
  	    (const_int 0))
  	  (const_int <half_mask>)))]
    "TARGET_SIMD
--- 6903,6909 ----
  		(sign_extend:<DWI>
  		  (match_operand:SD_HSDI 1 "register_operand" "w"))
  		(match_operand:<DWI> 3 "aarch64_int_rnd_operand"))
! 	      (match_operand:SI 2 "aarch64_simd_shift_imm_offset_<vn_mode>"))
  	    (const_int 0))
  	  (const_int <half_mask>)))]
    "TARGET_SIMD
***************
*** 6891,6897 ****
  (define_expand "aarch64_sqrshrun_n<mode>"
    [(match_operand:<VNARROWQ> 0 "register_operand")
     (match_operand:SD_HSDI 1 "register_operand")
!    (match_operand:SI 2 "aarch64_simd_shift_imm_offset_<ve_mode>")]
    "TARGET_SIMD"
    {
      int prec = GET_MODE_UNIT_PRECISION (<DWI>mode);
--- 6915,6921 ----
  (define_expand "aarch64_sqrshrun_n<mode>"
    [(match_operand:<VNARROWQ> 0 "register_operand")
     (match_operand:SD_HSDI 1 "register_operand")
!    (match_operand:SI 2 "aarch64_simd_shift_imm_offset_<vn_mode>")]
    "TARGET_SIMD"
    {
      int prec = GET_MODE_UNIT_PRECISION (<DWI>mode);
***************
*** 6914,6920 ****
  		  (sign_extend:<V2XWIDE>
  		    (match_operand:VQN 1 "register_operand"))
  		  (match_dup 3))
! 		(match_operand:SI 2 "aarch64_simd_shift_imm_offset_<ve_mode>"))
  	      (match_dup 4))
  	    (match_dup 5))))]
    "TARGET_SIMD"
--- 6938,6944 ----
  		  (sign_extend:<V2XWIDE>
  		    (match_operand:VQN 1 "register_operand"))
  		  (match_dup 3))
! 		(match_operand:SI 2 "aarch64_simd_shift_imm_offset_<vn_mode>"))
  	      (match_dup 4))
  	    (match_dup 5))))]
    "TARGET_SIMD"
***************
*** 9142,9150 ****
  	 (match_operand:V2DI 3 "aarch64_simd_lshift_imm" "Dl")))]
    "TARGET_SHA3"
    {
      operands[3]
!       = GEN_INT (64 - INTVAL (unwrap_const_vec_duplicate (operands[3])));
!     return "xar\\t%0.2d, %1.2d, %2.2d, %3";
    }
    [(set_attr "type" "crypto_sha3")]
  )
--- 9166,9178 ----
  	 (match_operand:V2DI 3 "aarch64_simd_lshift_imm" "Dl")))]
    "TARGET_SHA3"
    {
+     /* Translate the RTL left-rotate amount into the assembly right-rotate
+        amount.  Modulo by 64 to ensure that a left-rotate of 0 is emitted
+        as a right-rotate of 0 as accepted by the assembly instruction.  */
      operands[3]
!       = GEN_INT ((64 - INTVAL (unwrap_const_vec_duplicate (operands[3])))
! 		  % 64);
!     return "xar\\t%0.2d, %1.2d, %2.2d, #%3";
    }
    [(set_attr "type" "crypto_sha3")]
  )
***************
*** 9164,9172 ****
  	 (match_operand:SI 3 "aarch64_simd_shift_imm_di")))]
    "TARGET_SHA3"
    {
!     operands[3]
!       = aarch64_simd_gen_const_vector_dup (V2DImode,
! 					   64 - INTVAL (operands[3]));
    }
  )
  
--- 9192,9203 ----
  	 (match_operand:SI 3 "aarch64_simd_shift_imm_di")))]
    "TARGET_SHA3"
    {
!       operands[3]
!         = aarch64_simd_gen_const_vector_dup (V2DImode,
! 					     /* In the edge case of a 0 rotate
! 						amount leave as is.  */
! 					     operands[3] == CONST0_RTX (SImode)
! 					       ? 0 : 64 - INTVAL (operands[3]));
    }
  )
  
diff -Nrcpad gcc-15.2.0/gcc/config/aarch64/aarch64-sve-builtins-base.cc gcc-15.3.0/gcc/config/aarch64/aarch64-sve-builtins-base.cc
*** gcc-15.2.0/gcc/config/aarch64/aarch64-sve-builtins-base.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/aarch64/aarch64-sve-builtins-base.cc	Fri Jun 12 06:09:06 2026
*************** public:
*** 2857,2863 ****
    rtx
    expand (function_expander &e) const override
    {
!     return e.use_exact_insn (code_for_aarch64_sve_rev (e.vector_mode (0)));
    }
  };
  
--- 2857,2866 ----
    rtx
    expand (function_expander &e) const override
    {
!     auto mode = e.vector_mode (0);
!     return e.use_exact_insn (e.type_suffix (0).bool_p
! 			     ? code_for_aarch64_sve_rev_acle (mode)
! 			     : code_for_aarch64_sve_rev (mode));
    }
  };
  
diff -Nrcpad gcc-15.2.0/gcc/config/aarch64/aarch64-sve-builtins-functions.h gcc-15.3.0/gcc/config/aarch64/aarch64-sve-builtins-functions.h
*** gcc-15.2.0/gcc/config/aarch64/aarch64-sve-builtins-functions.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/aarch64/aarch64-sve-builtins-functions.h	Fri Jun 12 06:09:06 2026
*************** public:
*** 630,636 ****
    rtx
    expand (function_expander &e) const override
    {
!     insn_code icode = code_for_aarch64_sve (m_unspec, e.vector_mode (0));
      return e.use_exact_insn (icode);
    }
  
--- 630,639 ----
    rtx
    expand (function_expander &e) const override
    {
!     auto mode = e.vector_mode (0);
!     insn_code icode = (e.type_suffix (0).bool_p
! 		       ? code_for_aarch64_sve_acle (m_unspec, mode)
! 		       : code_for_aarch64_sve (m_unspec, mode));
      return e.use_exact_insn (icode);
    }
  
diff -Nrcpad gcc-15.2.0/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc gcc-15.3.0/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
*** gcc-15.2.0/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc	Fri Jun 12 06:09:06 2026
***************
*** 21,27 ****
--- 21,30 ----
  #include "system.h"
  #include "coretypes.h"
  #include "tm.h"
+ #include "basic-block.h"
  #include "tree.h"
+ #include "function.h"
+ #include "gimple.h"
  #include "rtl.h"
  #include "tm_p.h"
  #include "memmodel.h"
*************** za_group_is_pure_overload (const functio
*** 68,90 ****
     types in ARGUMENT_TYPES.  RETURN_TYPE is the type returned by the
     function.  */
  static void
! apply_predication (const function_instance &instance, tree return_type,
  		   vec<tree> &argument_types)
  {
    /* There are currently no SME ZA instructions that have both merging and
       unpredicated forms, so for simplicity, the predicates are always included
       in the original format string.  */
    if (instance.pred != PRED_none && instance.pred != PRED_za_m)
      {
        argument_types.quick_insert (0, instance.gp_type ());
        /* For unary merge operations, the first argument is a vector with
  	 the same type as the result.  For unary_convert_narrowt it also
  	 provides the "bottom" half of active elements, and is present
  	 for all types of predication.  */
        auto nargs = argument_types.length () - 1;
        if (instance.shape->has_merge_argument_p (instance, nargs))
! 	argument_types.quick_insert (0, return_type);
      }
  }
  
  /* Parse and move past an element type in FORMAT and return it as a type
--- 71,106 ----
     types in ARGUMENT_TYPES.  RETURN_TYPE is the type returned by the
     function.  */
  static void
! apply_predication (function_instance &instance, tree return_type,
  		   vec<tree> &argument_types)
  {
+   /* Initially mark the function as not being predicated.  */
+   instance.gp_index = -1;
+ 
    /* There are currently no SME ZA instructions that have both merging and
       unpredicated forms, so for simplicity, the predicates are always included
       in the original format string.  */
    if (instance.pred != PRED_none && instance.pred != PRED_za_m)
      {
        argument_types.quick_insert (0, instance.gp_type ());
+       instance.gp_index = 0;
        /* For unary merge operations, the first argument is a vector with
  	 the same type as the result.  For unary_convert_narrowt it also
  	 provides the "bottom" half of active elements, and is present
  	 for all types of predication.  */
        auto nargs = argument_types.length () - 1;
        if (instance.shape->has_merge_argument_p (instance, nargs))
! 	{
! 	  argument_types.quick_insert (0, return_type);
! 	  instance.gp_index = 1;
! 	}
      }
+ 
+   /* In this case the predicate type we added above is a non-governing
+      predicate operand (and there is no GP), so update the gp_index value
+      accordingly.  */
+   if (!instance.shape->has_gp_argument_p (instance))
+     instance.gp_index = -1;
  }
  
  /* Parse and move past an element type in FORMAT and return it as a type
*************** struct pmov_to_vector_lane_def : public
*** 3301,3306 ****
--- 3317,3330 ----
         but it doesn't currently have the necessary information.  */
      return c.require_immediate_range (1, 1, bytes - 1);
    }
+ 
+   /* This function has a predicate argument, and is a merging instruction, but
+      the predicate is not a GP.  */
+   bool
+   has_gp_argument_p (const function_instance &) const override
+   {
+     return false;
+   }
  };
  SHAPE (pmov_to_vector_lane)
  
diff -Nrcpad gcc-15.2.0/gcc/config/aarch64/aarch64-sve-builtins.cc gcc-15.3.0/gcc/config/aarch64/aarch64-sve-builtins.cc
*** gcc-15.2.0/gcc/config/aarch64/aarch64-sve-builtins.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/aarch64/aarch64-sve-builtins.cc	Fri Jun 12 06:09:06 2026
*************** public:
*** 92,98 ****
  };
  
  /* Hash traits for registered_function.  */
! struct registered_function_hasher : nofree_ptr_hash <registered_function>
  {
    typedef function_instance compare_type;
  
--- 92,98 ----
  };
  
  /* Hash traits for registered_function.  */
! struct registered_function_hasher : ggc_ptr_hash <registered_function>
  {
    typedef function_instance compare_type;
  
*************** tree acle_svprfop;
*** 1022,1033 ****
  static GTY(()) vec<registered_function *, va_gc> *registered_functions;
  
  /* Stores the starting function index for each pragma handler.  */
! static unsigned int initial_indexes[NUM_PRAGMA_HANDLERS];
  
  /* All registered function decls, hashed on the function_instance
     that they implement.  This is used for looking up implementations of
     overloaded functions.  */
! static hash_table<registered_function_hasher> *function_table;
  
  /* Index 0 maps all overloaded function names that we've registered so far to
     their associated function_instances.  Index 1 does the same for functions
--- 1022,1033 ----
  static GTY(()) vec<registered_function *, va_gc> *registered_functions;
  
  /* Stores the starting function index for each pragma handler.  */
! static  GTY(()) unsigned int initial_indexes[NUM_PRAGMA_HANDLERS];
  
  /* All registered function decls, hashed on the function_instance
     that they implement.  This is used for looking up implementations of
     overloaded functions.  */
! static GTY(()) hash_table<registered_function_hasher> *function_table;
  
  /* Index 0 maps all overloaded function names that we've registered so far to
     their associated function_instances.  Index 1 does the same for functions
*************** gimple_folder::redirect_pred_x ()
*** 3630,3653 ****
  gimple *
  gimple_folder::fold_pfalse ()
  {
!   if (pred == PRED_none)
      return nullptr;
!   tree arg0 = gimple_call_arg (call, 0);
    if (pred == PRED_m)
      {
!       /* Unary function shapes with _m predication are folded to the
! 	 inactive vector (arg0), while other function shapes are folded
! 	 to op1 (arg1).  */
!       tree arg1 = gimple_call_arg (call, 1);
!       if (is_pfalse (arg1))
! 	return fold_call_to (arg0);
!       if (is_pfalse (arg0))
! 	return fold_call_to (arg1);
        return nullptr;
      }
!   if ((pred == PRED_x || pred == PRED_z) && is_pfalse (arg0))
      return fold_call_to (build_zero_cst (TREE_TYPE (lhs)));
!   if (pred == PRED_implicit && is_pfalse (arg0))
      {
        unsigned int flags = call_properties ();
        /* Folding to lhs = {0, ...} is not appropriate for intrinsics with
--- 3630,3651 ----
  gimple *
  gimple_folder::fold_pfalse ()
  {
!   tree gp = gp_value (call);
!   /* If there isn't a GP then we can't do any folding as the instruction isn't
!      predicated.  */
!   if (!gp)
      return nullptr;
! 
    if (pred == PRED_m)
      {
!       tree val = inactive_values (call);
!       if (is_pfalse (gp))
! 	return fold_call_to (val);
        return nullptr;
      }
!   if ((pred == PRED_x || pred == PRED_z) && is_pfalse (gp))
      return fold_call_to (build_zero_cst (TREE_TYPE (lhs)));
!   if (pred == PRED_implicit && is_pfalse (gp))
      {
        unsigned int flags = call_properties ();
        /* Folding to lhs = {0, ...} is not appropriate for intrinsics with
*************** gimple_folder::fold_active_lanes_to (tre
*** 3799,3804 ****
--- 3797,3803 ----
  
    gimple_seq stmts = NULL;
    tree pred = convert_pred (stmts, vector_type (0), 0);
+   x = force_vector (stmts, TREE_TYPE (lhs), x);
    gsi_insert_seq_before (gsi, stmts, GSI_SAME_STMT);
    return gimple_build_assign (lhs, VEC_COND_EXPR, pred, x, vec_inactive);
  }
*************** function_expander::use_cond_insn (insn_c
*** 4351,4357 ****
    add_input_operand (icode, pred);
    for (unsigned int i = 0; i < nops; ++i)
      add_input_operand (icode, args[opno + i]);
!   add_input_operand (icode, fallback_arg);
    return generate_insn (icode);
  }
  
--- 4350,4360 ----
    add_input_operand (icode, pred);
    for (unsigned int i = 0; i < nops; ++i)
      add_input_operand (icode, args[opno + i]);
!   if (fallback_arg == CONST0_RTX (mode)
!       && insn_operand_matches (icode, m_ops.length (), fallback_arg))
!     add_fixed_operand (fallback_arg);
!   else
!     add_input_operand (icode, fallback_arg);
    return generate_insn (icode);
  }
  
*************** function_expander::expand ()
*** 4586,4593 ****
      {
        /* The last element of these functions is always an fpm_t that must be
           written to FPMR before the call to the instruction itself. */
!       gcc_assert (args.last ()->mode == DImode);
!       emit_move_insn (gen_rtx_REG (DImode, FPM_REGNUM), args.last ());
      }
    return base->expand (*this);
  }
--- 4589,4597 ----
      {
        /* The last element of these functions is always an fpm_t that must be
           written to FPMR before the call to the instruction itself. */
!       rtx fpm = args.last ();
!       gcc_assert (CONST_INT_P (fpm) || GET_MODE (fpm) == DImode);
!       emit_move_insn (gen_rtx_REG (DImode, FPM_REGNUM), fpm);
      }
    return base->expand (*this);
  }
*************** handle_arm_sve_h (bool function_nulls_p)
*** 4850,4856 ****
    register_svprfop ();
  
    /* Define the functions.  */
!   function_table = new hash_table<registered_function_hasher> (1023);
    function_builder builder (arm_sve_handle, function_nulls_p);
    for (unsigned int i = 0; i < ARRAY_SIZE (function_groups); ++i)
      builder.register_function_group (function_groups[i]);
--- 4854,4860 ----
    register_svprfop ();
  
    /* Define the functions.  */
!   function_table = hash_table<registered_function_hasher>::create_ggc (1023);
    function_builder builder (arm_sve_handle, function_nulls_p);
    for (unsigned int i = 0; i < ARRAY_SIZE (function_groups); ++i)
      builder.register_function_group (function_groups[i]);
diff -Nrcpad gcc-15.2.0/gcc/config/aarch64/aarch64-sve-builtins.h gcc-15.3.0/gcc/config/aarch64/aarch64-sve-builtins.h
*** gcc-15.2.0/gcc/config/aarch64/aarch64-sve-builtins.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/aarch64/aarch64-sve-builtins.h	Fri Jun 12 06:09:06 2026
*************** public:
*** 402,407 ****
--- 402,409 ----
    bool could_trap_p () const;
  
    vector_type_index gp_type_index () const;
+   tree gp_value (gcall *) const;
+   tree inactive_values (gcall *) const;
    tree gp_type () const;
  
    unsigned int vectors_per_tuple () const;
*************** public:
*** 435,440 ****
--- 437,443 ----
    group_suffix_index group_suffix_id;
    predication_index pred;
    fpm_mode_index fpm_mode;
+   int gp_index;
  };
  
  class registered_function;
*************** public:
*** 800,805 ****
--- 803,810 ----
    virtual bool has_merge_argument_p (const function_instance &,
  				     unsigned int) const;
  
+   virtual bool has_gp_argument_p (const function_instance &) const;
+ 
    virtual bool explicit_type_suffix_p (unsigned int) const = 0;
  
    /* True if the group suffix is present in overloaded names.
*************** function_instance::gp_type () const
*** 948,953 ****
--- 953,985 ----
    return acle_vector_types[0][gp_type_index ()];
  }
  
+ /* Return the tree value that should be used as the governing predicate of
+    this function.  If none then return NULL_TREE.  */
+ inline tree
+ function_instance::gp_value (gcall *call) const
+ {
+   if (gp_index < 0)
+     return NULL_TREE;
+ 
+   return gimple_call_arg (call, gp_index);
+ }
+ 
+ /* Return the tree value that should be used for the inactive lanes should this
+    function be a predicated function with a gp.  Otherwise return NULL_TREE.  */
+ inline tree
+ function_instance::inactive_values (gcall *call) const
+ {
+   if (gp_index < 0)
+     return NULL_TREE;
+ 
+   /* Function is unary with m predicate.  */
+   if (gp_index == 1)
+     return gimple_call_arg (call, 0);
+ 
+   /* Else the inactive values are the next element.  */
+   return gimple_call_arg (call, 1);
+ }
+ 
  /* If the function operates on tuples of vectors, return the number
     of vectors in the tuples, otherwise return 1.  */
  inline unsigned int
*************** function_shape::has_merge_argument_p (co
*** 1122,1127 ****
--- 1154,1167 ----
    return nargs == 1 && instance.pred == PRED_m;
  }
  
+ /* Return true if INSTANCE has an predicate argument that can be used as the global
+    predicate.  */
+ inline bool
+ function_shape::has_gp_argument_p (const function_instance &instance) const
+ {
+   return instance.pred != PRED_none;
+ }
+ 
  /* Return the mode of the result of a call.  */
  inline machine_mode
  function_expander::result_mode () const
diff -Nrcpad gcc-15.2.0/gcc/config/aarch64/aarch64-sve.md gcc-15.3.0/gcc/config/aarch64/aarch64-sve.md
*** gcc-15.2.0/gcc/config/aarch64/aarch64-sve.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/aarch64/aarch64-sve.md	Fri Jun 12 06:09:06 2026
***************
*** 1506,1523 ****
  	  UNSPEC_LD1_GATHER))]
    "TARGET_SVE && TARGET_NON_STREAMING"
    {@ [cons: =0, 1, 2, 3, 4, 5  ]
!      [&w, Z,   w, Ui1, Ui1, Upl] ld1<Vesize>\t%0.s, %5/z, [%2.s]
!      [?w, Z,   0, Ui1, Ui1, Upl] ^
!      [&w, vgw, w, Ui1, Ui1, Upl] ld1<Vesize>\t%0.s, %5/z, [%2.s, #%1]
!      [?w, vgw, 0, Ui1, Ui1, Upl] ^
!      [&w, rk,  w, Z,   Ui1, Upl] ld1<Vesize>\t%0.s, %5/z, [%1, %2.s, sxtw]
!      [?w, rk,  0, Z,   Ui1, Upl] ^
!      [&w, rk,  w, Ui1, Ui1, Upl] ld1<Vesize>\t%0.s, %5/z, [%1, %2.s, uxtw]
!      [?w, rk,  0, Ui1, Ui1, Upl] ^
!      [&w, rk,  w, Z,   i,   Upl] ld1<Vesize>\t%0.s, %5/z, [%1, %2.s, sxtw %p4]
!      [?w, rk,  0, Z,   i,   Upl] ^
!      [&w, rk,  w, Ui1, i,   Upl] ld1<Vesize>\t%0.s, %5/z, [%1, %2.s, uxtw %p4]
!      [?w, rk,  0, Ui1, i,   Upl] ^
    }
  )
  
--- 1506,1523 ----
  	  UNSPEC_LD1_GATHER))]
    "TARGET_SVE && TARGET_NON_STREAMING"
    {@ [cons: =0, 1, 2, 3, 4, 5  ]
!      [&w, Z,          w, Ui1, Ui1, Upl] ld1<Vesize>\t%0.s, %5/z, [%2.s]
!      [?w, Z,          0, Ui1, Ui1, Upl] ^
!      [&w, vg<Vesize>, w, Ui1, Ui1, Upl] ld1<Vesize>\t%0.s, %5/z, [%2.s, #%1]
!      [?w, vg<Vesize>, 0, Ui1, Ui1, Upl] ^
!      [&w, rk,         w, Z,   Ui1, Upl] ld1<Vesize>\t%0.s, %5/z, [%1, %2.s, sxtw]
!      [?w, rk,         0, Z,   Ui1, Upl] ^
!      [&w, rk,         w, Ui1, Ui1, Upl] ld1<Vesize>\t%0.s, %5/z, [%1, %2.s, uxtw]
!      [?w, rk,         0, Ui1, Ui1, Upl] ^
!      [&w, rk,         w, Z,   i,   Upl] ld1<Vesize>\t%0.s, %5/z, [%1, %2.s, sxtw %p4]
!      [?w, rk,         0, Z,   i,   Upl] ^
!      [&w, rk,         w, Ui1, i,   Upl] ld1<Vesize>\t%0.s, %5/z, [%1, %2.s, uxtw %p4]
!      [?w, rk,         0, Ui1, i,   Upl] ^
    }
  )
  
***************
*** 1536,1549 ****
  	  UNSPEC_LD1_GATHER))]
    "TARGET_SVE && TARGET_NON_STREAMING"
    {@ [cons: =0, 1, 2, 3, 4, 5]
!      [&w, Z,   w, i, Ui1, Upl] ld1<Vesize>\t%0.d, %5/z, [%2.d]
!      [?w, Z,   0, i, Ui1, Upl] ^
!      [&w, vgd, w, i, Ui1, Upl] ld1<Vesize>\t%0.d, %5/z, [%2.d, #%1]
!      [?w, vgd, 0, i, Ui1, Upl] ^
!      [&w, rk,  w, i, Ui1, Upl] ld1<Vesize>\t%0.d, %5/z, [%1, %2.d]
!      [?w, rk,  0, i, Ui1, Upl] ^
!      [&w, rk,  w, i, i,   Upl] ld1<Vesize>\t%0.d, %5/z, [%1, %2.d, lsl %p4]
!      [?w, rk,  0, i, i,   Upl] ^
    }
  )
  
--- 1536,1549 ----
  	  UNSPEC_LD1_GATHER))]
    "TARGET_SVE && TARGET_NON_STREAMING"
    {@ [cons: =0, 1, 2, 3, 4, 5]
!      [&w, Z,          w, i, Ui1, Upl] ld1<Vesize>\t%0.d, %5/z, [%2.d]
!      [?w, Z,          0, i, Ui1, Upl] ^
!      [&w, vg<Vesize>, w, i, Ui1, Upl] ld1<Vesize>\t%0.d, %5/z, [%2.d, #%1]
!      [?w, vg<Vesize>, 0, i, Ui1, Upl] ^
!      [&w, rk,         w, i, Ui1, Upl] ld1<Vesize>\t%0.d, %5/z, [%1, %2.d]
!      [?w, rk,         0, i, Ui1, Upl] ^
!      [&w, rk,         w, i, i,   Upl] ld1<Vesize>\t%0.d, %5/z, [%1, %2.d, lsl %p4]
!      [?w, rk,         0, i, i,   Upl] ^
    }
  )
  
***************
*** 2435,2447 ****
  	   (match_operand:SVE_4 4 "register_operand")]
  	  UNSPEC_ST1_SCATTER))]
    "TARGET_SVE && TARGET_NON_STREAMING"
!   {@ [ cons: 0 , 1 , 2   , 3   , 4 , 5    ]
!      [ Z       , w , Ui1 , Ui1 , w , Upl  ] st1<Vesize>\t%4.s, %5, [%1.s]
!      [ vgw     , w , Ui1 , Ui1 , w , Upl  ] st1<Vesize>\t%4.s, %5, [%1.s, #%0]
!      [ rk      , w , Z   , Ui1 , w , Upl  ] st1<Vesize>\t%4.s, %5, [%0, %1.s, sxtw]
!      [ rk      , w , Ui1 , Ui1 , w , Upl  ] st1<Vesize>\t%4.s, %5, [%0, %1.s, uxtw]
!      [ rk      , w , Z   , i   , w , Upl  ] st1<Vesize>\t%4.s, %5, [%0, %1.s, sxtw %p3]
!      [ rk      , w , Ui1 , i   , w , Upl  ] st1<Vesize>\t%4.s, %5, [%0, %1.s, uxtw %p3]
    }
  )
  
--- 2435,2447 ----
  	   (match_operand:SVE_4 4 "register_operand")]
  	  UNSPEC_ST1_SCATTER))]
    "TARGET_SVE && TARGET_NON_STREAMING"
!   {@ [ cons: 0    , 1 , 2   , 3   , 4 , 5    ]
!      [ Z          , w , Ui1 , Ui1 , w , Upl  ] st1<Vesize>\t%4.s, %5, [%1.s]
!      [ vg<Vesize> , w , Ui1 , Ui1 , w , Upl  ] st1<Vesize>\t%4.s, %5, [%1.s, #%0]
!      [ rk         , w , Z   , Ui1 , w , Upl  ] st1<Vesize>\t%4.s, %5, [%0, %1.s, sxtw]
!      [ rk         , w , Ui1 , Ui1 , w , Upl  ] st1<Vesize>\t%4.s, %5, [%0, %1.s, uxtw]
!      [ rk         , w , Z   , i   , w , Upl  ] st1<Vesize>\t%4.s, %5, [%0, %1.s, sxtw %p3]
!      [ rk         , w , Ui1 , i   , w , Upl  ] st1<Vesize>\t%4.s, %5, [%0, %1.s, uxtw %p3]
    }
  )
  
***************
*** 2458,2468 ****
  	   (match_operand:SVE_2 4 "register_operand")]
  	  UNSPEC_ST1_SCATTER))]
    "TARGET_SVE && TARGET_NON_STREAMING"
!   {@ [ cons: 0 , 1 , 3   , 4 , 5    ]
!      [ Z       , w , Ui1 , w , Upl  ] st1<Vesize>\t%4.d, %5, [%1.d]
!      [ vgd     , w , Ui1 , w , Upl  ] st1<Vesize>\t%4.d, %5, [%1.d, #%0]
!      [ rk      , w , Ui1 , w , Upl  ] st1<Vesize>\t%4.d, %5, [%0, %1.d]
!      [ rk      , w , i   , w , Upl  ] st1<Vesize>\t%4.d, %5, [%0, %1.d, lsl %p3]
    }
  )
  
--- 2458,2468 ----
  	   (match_operand:SVE_2 4 "register_operand")]
  	  UNSPEC_ST1_SCATTER))]
    "TARGET_SVE && TARGET_NON_STREAMING"
!   {@ [ cons: 0    , 1 , 3   , 4 , 5    ]
!      [ Z          , w , Ui1 , w , Upl  ] st1<Vesize>\t%4.d, %5, [%1.d]
!      [ vg<Vesize> , w , Ui1 , w , Upl  ] st1<Vesize>\t%4.d, %5, [%1.d, #%0]
!      [ rk         , w , Ui1 , w , Upl  ] st1<Vesize>\t%4.d, %5, [%0, %1.d]
!      [ rk         , w , i   , w , Upl  ] st1<Vesize>\t%4.d, %5, [%0, %1.d, lsl %p3]
    }
  )
  
***************
*** 9260,9266 ****
  	(unspec:PRED_ALL [(match_operand:PRED_ALL 1 "register_operand" "Upa")]
  			 UNSPEC_REV))]
    "TARGET_SVE"
!   "rev\t%0.<Vetype>, %1.<Vetype>")
  
  ;; -------------------------------------------------------------------------
  ;; ---- [PRED] Special-purpose binary permutes
--- 9260,9289 ----
  	(unspec:PRED_ALL [(match_operand:PRED_ALL 1 "register_operand" "Upa")]
  			 UNSPEC_REV))]
    "TARGET_SVE"
!   "rev\t%0.<Vetype>, %1.<Vetype>"
! )
! 
! (define_expand "@aarch64_sve_rev<mode>_acle"
!   [(set (match_operand:VNx16BI 0 "register_operand")
! 	(unspec:VNx16BI
! 	  [(match_operand:VNx16BI 1 "register_operand")
! 	   (match_dup:PRED_ALL 2)]
! 	  UNSPEC_REV_PRED))]
!   "TARGET_SVE"
!   {
!     operands[2] = CONST0_RTX (<MODE>mode);
!   }
! )
! 
! (define_insn "*aarch64_sve_rev<mode>_acle"
!   [(set (match_operand:VNx16BI 0 "register_operand" "=Upa")
! 	(unspec:VNx16BI
! 	  [(match_operand:VNx16BI 1 "register_operand" "Upa")
! 	   (match_operand:PRED_ALL 2 "aarch64_simd_imm_zero")]
! 	  UNSPEC_REV_PRED))]
!   "TARGET_SVE"
!   "rev\t%0.<Vetype>, %1.<Vetype>"
! )
  
  ;; -------------------------------------------------------------------------
  ;; ---- [PRED] Special-purpose binary permutes
***************
*** 9285,9302 ****
    "<perm_insn>\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>"
  )
  
! ;; Special purpose permute used by the predicate generation instructions.
! ;; Unlike the normal permute patterns, these instructions operate on VNx16BI
! ;; regardless of the element size, so that all input and output bits are
! ;; well-defined.  Operand 3 then indicates the size of the permute.
! (define_insn "@aarch64_sve_trn1_conv<mode>"
    [(set (match_operand:VNx16BI 0 "register_operand" "=Upa")
  	(unspec:VNx16BI [(match_operand:VNx16BI 1 "register_operand" "Upa")
  			 (match_operand:VNx16BI 2 "register_operand" "Upa")
! 			 (match_operand:PRED_ALL 3 "aarch64_simd_imm_zero")]
! 			UNSPEC_TRN1_CONV))]
    "TARGET_SVE"
!   "trn1\t%0.<PRED_ALL:Vetype>, %1.<PRED_ALL:Vetype>, %2.<PRED_ALL:Vetype>"
  )
  
  ;; =========================================================================
--- 9308,9346 ----
    "<perm_insn>\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>"
  )
  
! ;; Special-purpose permutes used by the ACLE intrinsics and predicate
! ;; generation instructions.  Unlike the normal permute patterns, these
! ;; instructions operate on VNx16BI regardless of the element size, so that
! ;; all input and output bits are well-defined.  Operand 3 then indicates
! ;; the size of the permute.
! ;;
! ;; To make generation easier, this pattern embeds the permute type as the
! ;; fourth operand to the unspec.  On the one hand, this avoids overloading
! ;; unspecs like UNSPEC_ZIP1 to represent two different operations.  On the
! ;; other hand, it avoids having a separate unspec for each variant, and
! ;; having to map from one kind of unspec to the other.
! (define_expand "@aarch64_sve_<perm_insn><mode>_acle"
!   [(set (match_operand:VNx16BI 0 "register_operand")
! 	(unspec:VNx16BI [(match_operand:VNx16BI 1 "register_operand")
! 			 (match_operand:VNx16BI 2 "register_operand")
! 			 (match_dup:PRED_ALL 3)
! 			 (const_int PERMUTE)]
! 			UNSPEC_PERMUTE_PRED))]
!   "TARGET_SVE"
!   {
!     operands[3] = CONST0_RTX (<MODE>mode);
!   }
! )
! 
! (define_insn "*aarch64_sve_<perm_insn><mode>_acle"
    [(set (match_operand:VNx16BI 0 "register_operand" "=Upa")
  	(unspec:VNx16BI [(match_operand:VNx16BI 1 "register_operand" "Upa")
  			 (match_operand:VNx16BI 2 "register_operand" "Upa")
! 			 (match_operand:PRED_ALL 3 "aarch64_simd_imm_zero")
! 			 (const_int PERMUTE)]
! 			UNSPEC_PERMUTE_PRED))]
    "TARGET_SVE"
!   "<perm_insn>\t%0.<PRED_ALL:Vetype>, %1.<PRED_ALL:Vetype>, %2.<PRED_ALL:Vetype>"
  )
  
  ;; =========================================================================
diff -Nrcpad gcc-15.2.0/gcc/config/aarch64/aarch64-sve2.md gcc-15.3.0/gcc/config/aarch64/aarch64-sve2.md
*** gcc-15.2.0/gcc/config/aarch64/aarch64-sve2.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/aarch64/aarch64-sve2.md	Fri Jun 12 06:09:06 2026
***************
*** 2161,2174 ****
  ;; - FDOT (2-way, indexed) (FP8DOT2)
  ;; -------------------------------------------------------------------------
  (define_insn "@aarch64_sve_dot<mode>"
!   [(set (match_operand:SVE_FULL_HSF 0 "register_operand")
! 	(unspec:SVE_FULL_HSF
! 	  [(match_operand:SVE_FULL_HSF 1 "register_operand")
  	   (match_operand:VNx16QI 2 "register_operand")
  	   (match_operand:VNx16QI 3 "register_operand")
  	   (reg:DI FPM_REGNUM)]
  	  UNSPEC_DOT_FP8))]
!   "TARGET_SSVE_FP8DOT4 && !(<MODE>mode == VNx8HFmode && !TARGET_SSVE_FP8DOT2)"
    {@ [ cons: =0 , 1 , 2 , 3 ; attrs: movprfx ]
       [ w        , 0 , w , w ; *              ] fdot\t%0.<Vetype>, %2.b, %3.b
       [ ?&w      , w , w , w ; yes            ] movprfx\t%0, %1\;fdot\t%0.<Vetype>, %2.b, %3.b
--- 2161,2174 ----
  ;; - FDOT (2-way, indexed) (FP8DOT2)
  ;; -------------------------------------------------------------------------
  (define_insn "@aarch64_sve_dot<mode>"
!   [(set (match_operand:SVE_FULL_HSF_FP8_FDOT 0 "register_operand")
! 	(unspec:SVE_FULL_HSF_FP8_FDOT
! 	  [(match_operand:SVE_FULL_HSF_FP8_FDOT 1 "register_operand")
  	   (match_operand:VNx16QI 2 "register_operand")
  	   (match_operand:VNx16QI 3 "register_operand")
  	   (reg:DI FPM_REGNUM)]
  	  UNSPEC_DOT_FP8))]
!   ""
    {@ [ cons: =0 , 1 , 2 , 3 ; attrs: movprfx ]
       [ w        , 0 , w , w ; *              ] fdot\t%0.<Vetype>, %2.b, %3.b
       [ ?&w      , w , w , w ; yes            ] movprfx\t%0, %1\;fdot\t%0.<Vetype>, %2.b, %3.b
***************
*** 2176,2190 ****
  )
  
  (define_insn "@aarch64_sve_dot_lane<mode>"
!   [(set (match_operand:SVE_FULL_HSF 0 "register_operand")
! 	(unspec:SVE_FULL_HSF
! 	  [(match_operand:SVE_FULL_HSF 1 "register_operand")
  	   (match_operand:VNx16QI 2 "register_operand")
  	   (match_operand:VNx16QI 3 "register_operand")
  	   (match_operand:SI 4 "const_int_operand")
  	   (reg:DI FPM_REGNUM)]
  	  UNSPEC_DOT_LANE_FP8))]
!   "TARGET_SSVE_FP8DOT4 && !(<MODE>mode == VNx8HFmode && !TARGET_SSVE_FP8DOT2)"
    {@ [ cons: =0 , 1 , 2 , 3 ; attrs: movprfx ]
       [ w        , 0 , w , y ; *              ] fdot\t%0.<Vetype>, %2.b, %3.b[%4]
       [ ?&w      , w , w , y ; yes            ] movprfx\t%0, %1\;fdot\t%0.<Vetype>, %2.b, %3.b[%4]
--- 2176,2190 ----
  )
  
  (define_insn "@aarch64_sve_dot_lane<mode>"
!   [(set (match_operand:SVE_FULL_HSF_FP8_FDOT 0 "register_operand")
! 	(unspec:SVE_FULL_HSF_FP8_FDOT
! 	  [(match_operand:SVE_FULL_HSF_FP8_FDOT 1 "register_operand")
  	   (match_operand:VNx16QI 2 "register_operand")
  	   (match_operand:VNx16QI 3 "register_operand")
  	   (match_operand:SI 4 "const_int_operand")
  	   (reg:DI FPM_REGNUM)]
  	  UNSPEC_DOT_LANE_FP8))]
!   ""
    {@ [ cons: =0 , 1 , 2 , 3 ; attrs: movprfx ]
       [ w        , 0 , w , y ; *              ] fdot\t%0.<Vetype>, %2.b, %3.b[%4]
       [ ?&w      , w , w , y ; yes            ] movprfx\t%0, %1\;fdot\t%0.<Vetype>, %2.b, %3.b[%4]
***************
*** 3774,3782 ****
  	     UNSPEC_REVD_ONLY)]
  	  UNSPEC_PRED_X))]
    "TARGET_SVE2p1_OR_SME"
!   {@ [ cons: =0 , 1   , 2 ; attrs: movprfx ]
!      [ w        , Upl , 0 ; *              ] revd\t%0.q, %1/m, %2.q
!      [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;revd\t%0.q, %1/m, %2.q
    }
  )
  
--- 3774,3781 ----
  	     UNSPEC_REVD_ONLY)]
  	  UNSPEC_PRED_X))]
    "TARGET_SVE2p1_OR_SME"
!   {@ [ cons: =0 , 1   , 2 ]
!      [ w        , Upl , 0 ] revd\t%0.q, %1/m, %2.q
    }
  )
  
***************
*** 3790,3798 ****
  	   (match_operand:SVE_FULL 3 "register_operand")]
  	  UNSPEC_SEL))]
    "TARGET_SVE2p1_OR_SME"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
!      [ w        , Upl , w , 0  ; *              ] revd\t%0.q, %1/m, %2.q
!      [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;revd\t%0.q, %1/m, %2.q
    }
  )
  
--- 3789,3796 ----
  	   (match_operand:SVE_FULL 3 "register_operand")]
  	  UNSPEC_SEL))]
    "TARGET_SVE2p1_OR_SME"
!   {@ [ cons: =0 , 1   , 2 , 3 ]
!      [ w        , Upl , w , 0 ] revd\t%0.q, %1/m, %2.q
    }
  )
  
diff -Nrcpad gcc-15.2.0/gcc/config/aarch64/aarch64-sys-regs.def gcc-15.3.0/gcc/config/aarch64/aarch64-sys-regs.def
*** gcc-15.2.0/gcc/config/aarch64/aarch64-sys-regs.def	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/aarch64/aarch64-sys-regs.def	Fri Jun 12 06:09:06 2026
***************
*** 740,746 ****
    SYSREG ("pmscr_el1",		CPENC (3,0,9,9,0),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
    SYSREG ("pmscr_el12",		CPENC (3,5,9,9,0),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
    SYSREG ("pmscr_el2",		CPENC (3,4,9,9,0),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmsdsfr_el1",	CPENC (3,4,9,10,4),	F_ARCHEXT,		AARCH64_FEATURE (SPE_FDS))
    SYSREG ("pmselr_el0",		CPENC (3,3,9,12,5),	0,			AARCH64_NO_FEATURES)
    SYSREG ("pmsevfr_el1",	CPENC (3,0,9,9,5),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
    SYSREG ("pmsfcr_el1",		CPENC (3,0,9,9,4),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
--- 740,746 ----
    SYSREG ("pmscr_el1",		CPENC (3,0,9,9,0),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
    SYSREG ("pmscr_el12",		CPENC (3,5,9,9,0),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
    SYSREG ("pmscr_el2",		CPENC (3,4,9,9,0),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmsdsfr_el1",	CPENC (3,0,9,10,4),	F_ARCHEXT,		AARCH64_FEATURE (SPE_FDS))
    SYSREG ("pmselr_el0",		CPENC (3,3,9,12,5),	0,			AARCH64_NO_FEATURES)
    SYSREG ("pmsevfr_el1",	CPENC (3,0,9,9,5),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
    SYSREG ("pmsfcr_el1",		CPENC (3,0,9,9,4),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
diff -Nrcpad gcc-15.2.0/gcc/config/aarch64/aarch64-tune.md gcc-15.3.0/gcc/config/aarch64/aarch64-tune.md
*** gcc-15.2.0/gcc/config/aarch64/aarch64-tune.md	Fri Aug  8 06:52:54 2025
--- gcc-15.3.0/gcc/config/aarch64/aarch64-tune.md	Fri Jun 12 06:10:23 2026
***************
*** 1,5 ****
  ;; -*- buffer-read-only: t -*-
  ;; Generated automatically by gentune.sh from aarch64-cores.def
  (define_attr "tune"
! 	"cortexa34,cortexa35,cortexa53,cortexa57,cortexa72,cortexa73,thunderx,thunderxt88,thunderxt88p1,octeontx,octeontxt81,octeontxt83,thunderxt81,thunderxt83,ampere1,ampere1a,ampere1b,emag,xgene1,falkor,qdf24xx,exynosm1,phecda,thunderx2t99p1,vulcan,thunderx2t99,cortexa55,cortexa75,cortexa76,cortexa76ae,cortexa77,cortexa78,cortexa78ae,cortexa78c,cortexa65,cortexa65ae,cortexx1,cortexx1c,neoversen1,ares,neoversee1,octeontx2,octeontx2t98,octeontx2t96,octeontx2t93,octeontx2f95,octeontx2f95n,octeontx2f95mm,a64fx,fujitsu_monaka,tsv110,thunderx3t110,neoversev1,zeus,neoverse512tvb,saphira,oryon1,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53,cortexa75cortexa55,cortexa76cortexa55,cortexr82,cortexr82ae,applea12,applem1_0,applem1_1,applem1_2,applem1_3,applem2_0,applem2_1,applem2_2,applem2_3,applem3_0,cortexa510,cortexa520,cortexa520ae,cortexa710,cortexa715,cortexa720,cortexa720ae,cortexa725,cortexx2,cortexx3,cortexx4,cortexx925,neoversen2,cobalt100,neoversen3,neoversev2,grace,neoversev3,neoversev3ae,demeter,olympus,gb10,generic,generic_armv8_a,generic_armv9_a"
  	(const (symbol_ref "((enum attr_tune) aarch64_tune)")))
--- 1,5 ----
  ;; -*- buffer-read-only: t -*-
  ;; Generated automatically by gentune.sh from aarch64-cores.def
  (define_attr "tune"
! 	"cortexa34,cortexa35,cortexa53,cortexa57,cortexa72,cortexa73,thunderx,thunderxt88,thunderxt88p1,octeontx,octeontxt81,octeontxt83,thunderxt81,thunderxt83,ampere1,ampere1a,ampere1b,emag,xgene1,falkor,qdf24xx,exynosm1,phecda,thunderx2t99p1,vulcan,thunderx2t99,cortexa55,cortexa75,cortexa76,cortexa76ae,cortexa77,cortexa78,cortexa78ae,cortexa78c,cortexa65,cortexa65ae,cortexx1,cortexx1c,neoversen1,ares,neoversee1,octeontx2,octeontx2t98,octeontx2t96,octeontx2t93,octeontx2f95,octeontx2f95n,octeontx2f95mm,a64fx,fujitsu_monaka,hip12,tsv110,thunderx3t110,neoversev1,zeus,neoverse512tvb,saphira,oryon1,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53,cortexa75cortexa55,cortexa76cortexa55,cortexr82,cortexr82ae,applea12,applem1_0,applem1_1,applem1_2,applem1_3,applem2_0,applem2_1,applem2_2,applem2_3,applem3_0,cortexa510,cortexa520,cortexa520ae,cortexa710,cortexa715,cortexa720,cortexa720ae,cortexa725,cortexx2,cortexx3,cortexx4,cortexx925,neoversen2,cobalt100,neoversen3,neoversev2,grace,neoversev3,neoversev3ae,demeter,olympus,gb10,generic,generic_armv8_a,generic_armv9_a"
  	(const (symbol_ref "((enum attr_tune) aarch64_tune)")))
diff -Nrcpad gcc-15.2.0/gcc/config/aarch64/aarch64.cc gcc-15.3.0/gcc/config/aarch64/aarch64.cc
*** gcc-15.2.0/gcc/config/aarch64/aarch64.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/aarch64/aarch64.cc	Fri Jun 12 06:09:06 2026
***************
*** 97,102 ****
--- 97,103 ----
  #include "ipa-prop.h"
  #include "ipa-fnsummary.h"
  #include "hash-map.h"
+ #include "ifcvt.h"
  
  /* This file should be included last.  */
  #include "target-def.h"
*************** static const struct aarch64_flag_desc aa
*** 407,412 ****
--- 408,414 ----
  #include "tuning_models/thunderxt88.h"
  #include "tuning_models/thunderx.h"
  #include "tuning_models/tsv110.h"
+ #include "tuning_models/hip12.h"
  #include "tuning_models/xgene1.h"
  #include "tuning_models/emag.h"
  #include "tuning_models/qdf24xx.h"
*************** aarch64_preferred_else_value (unsigned,
*** 2096,2101 ****
--- 2098,2213 ----
    return nops == 3 ? ops[2] : ops[0];
  }
  
+ /* Implement TARGET_MAX_NOCE_IFCVT_SEQ_COST.  If an explicit max was set then
+    honor it, otherwise apply a tuning specific scale to branch costs.  */
+ 
+ static unsigned int
+ aarch64_max_noce_ifcvt_seq_cost (edge e)
+ {
+   bool predictable_p = predictable_edge_p (e);
+   if (predictable_p)
+     {
+       if (OPTION_SET_P (param_max_rtl_if_conversion_predictable_cost))
+ 	return param_max_rtl_if_conversion_predictable_cost;
+     }
+   else
+     {
+       if (OPTION_SET_P (param_max_rtl_if_conversion_unpredictable_cost))
+ 	return param_max_rtl_if_conversion_unpredictable_cost;
+     }
+ 
+   /* For modern machines with long speculative execution chains and modern
+      branch prediction the penalty of the branch misprediction needs to weighed
+      against the cost of executing the instructions unconditionally.  RISC cores
+      tend to not have that deep pipelines and so the cost of mispredictions can
+      be reasonably cheap.  */
+ 
+   bool speed_p = optimize_function_for_speed_p (cfun);
+   return BRANCH_COST (speed_p, predictable_p)
+ 	 * aarch64_tune_params.branch_costs->br_mispredict_factor;
+ }
+ 
+ /* Return true if SEQ is a good candidate as a replacement for the
+    if-convertible sequence described in IF_INFO.  AArch64 has a range of
+    branchless statements and not all of them are potentially problematic.  For
+    instance a cset is usually beneficial whereas a csel is more complicated.  */
+ 
+ static bool
+ aarch64_noce_conversion_profitable_p (rtx_insn *seq,
+ 				      struct noce_if_info *if_info)
+ {
+   /* If not in a loop, just accept all if-conversion as the branch predictor
+      won't have anything to train on.  So assume sequences are essentially
+      unpredictable.  ce1 is in CFG mode still while ce2 is outside.  For ce2
+      accept limited if-conversion based on the shape of the instruction.  */
+   if (current_loops
+       && (!if_info->test_bb->loop_father
+ 	  || !if_info->test_bb->loop_father->header
+ 	  || bb_loop_depth (if_info->test_bb->loop_father->header) == 0))
+     return true;
+ 
+   /* For now we only care about csel speciifcally.  */
+   bool is_csel_p = true;
+ 
+   if (if_info->then_simple
+       && if_info->a != NULL_RTX
+       && !REG_P (if_info->a)
+       && !SUBREG_P (if_info->a))
+     is_csel_p = false;
+ 
+   if (if_info->else_simple
+       && if_info->b != NULL_RTX
+       && !REG_P (if_info->b)
+       && !SUBREG_P (if_info->b))
+     is_csel_p = false;
+ 
+   for (rtx_insn *insn = seq; is_csel_p && insn; insn = NEXT_INSN (insn))
+     {
+       rtx set = single_set (insn);
+       if (!set)
+ 	continue;
+ 
+       rtx src = SET_SRC (set);
+       rtx dst = SET_DEST (set);
+       machine_mode mode = GET_MODE (src);
+       if (GET_MODE_CLASS (mode) != MODE_INT)
+ 	continue;
+ 
+       switch (GET_CODE (src))
+ 	{
+ 	case PLUS:
+ 	case MINUS:
+ 	  {
+ 	    /* Likely a CINC.  */
+ 	    if (REG_P (dst)
+ 		&& (REG_P (XEXP (src, 0)) || SUBREG_P (XEXP (src, 0)))
+ 		&& (XEXP (src, 1) == CONST1_RTX (mode)
+ 		    || XEXP (src, 1) == CONSTM1_RTX (mode)))
+ 	      is_csel_p = false;
+ 	    break;
+ 	  }
+ 	default:
+ 	  break;
+ 	}
+     }
+ 
+   /* For now accept every variant but csel unconditionally because CSEL usually
+      means you have to wait for two values to be computed.  */
+   if (!is_csel_p)
+     return true;
+ 
+   /* TODO: Add detecting of csel, cinc, cset etc and take profiling in
+ 	   consideration.  For now this basic costing is enough to cover
+ 	   most cases.  */
+   if (if_info->speed_p)
+     {
+       unsigned cost = seq_cost (seq, true);
+       return cost <= if_info->max_seq_cost;
+     }
+ 
+   return default_noce_conversion_profitable_p (seq, if_info);
+ }
+ 
  /* Implement TARGET_HARD_REGNO_NREGS.  */
  
  static unsigned int
*************** aarch64_hard_regno_call_part_clobbered (
*** 2608,2617 ****
  {
    if (FP_REGNUM_P (regno) && abi_id != ARM_PCS_SVE)
      {
!       poly_int64 per_register_size = GET_MODE_SIZE (mode);
!       unsigned int nregs = hard_regno_nregs (regno, mode);
!       if (nregs > 1)
! 	per_register_size = exact_div (per_register_size, nregs);
        if (abi_id == ARM_PCS_SIMD || abi_id == ARM_PCS_TLSDESC)
  	return maybe_gt (per_register_size, 16);
        return maybe_gt (per_register_size, 8);
--- 2720,2742 ----
  {
    if (FP_REGNUM_P (regno) && abi_id != ARM_PCS_SVE)
      {
!       poly_int64 per_register_size;
!       if (aarch64_sve_mode_p (mode))
! 	/* SVE instructions operate on the full SVE register, even for
! 	   partial modes like VNx2SF whose GET_MODE_SIZE is only 8 bytes
! 	   under -msve-vector-bits=128.  The elements of such partial
! 	   modes are strided across the register and can lie outside the
! 	   callee-preserved low 64 bits.  Compare against the full SVE
! 	   vector size so that V8-V15 are correctly recognised as
! 	   partially clobbered for any SVE mode under AAPCS64/AAPCS_SIMD.  */
! 	per_register_size = BYTES_PER_SVE_VECTOR;
!       else
! 	{
! 	  per_register_size = GET_MODE_SIZE (mode);
! 	  unsigned int nregs = hard_regno_nregs (regno, mode);
! 	  if (nregs > 1)
! 	    per_register_size = exact_div (per_register_size, nregs);
! 	}
        if (abi_id == ARM_PCS_SIMD || abi_id == ARM_PCS_TLSDESC)
  	return maybe_gt (per_register_size, 16);
        return maybe_gt (per_register_size, 8);
*************** aarch64_sve_move_pred_via_while (rtx tar
*** 5943,5949 ****
    target = aarch64_target_reg (target, mode);
    emit_insn (gen_while (UNSPEC_WHILELO, DImode, mode,
  			target, const0_rtx, limit));
!   return target;
  }
  
  static rtx
--- 6068,6074 ----
    target = aarch64_target_reg (target, mode);
    emit_insn (gen_while (UNSPEC_WHILELO, DImode, mode,
  			target, const0_rtx, limit));
!   return gen_lowpart (VNx16BImode, target);
  }
  
  static rtx
*************** aarch64_expand_sve_const_pred_trn (rtx t
*** 6088,6095 ****
       operands but permutes them as though they had mode MODE.  */
    machine_mode mode = aarch64_sve_pred_mode (permute_size).require ();
    target = aarch64_target_reg (target, GET_MODE (a));
!   rtx type_reg = CONST0_RTX (mode);
!   emit_insn (gen_aarch64_sve_trn1_conv (mode, target, a, b, type_reg));
    return target;
  }
  
--- 6213,6219 ----
       operands but permutes them as though they had mode MODE.  */
    machine_mode mode = aarch64_sve_pred_mode (permute_size).require ();
    target = aarch64_target_reg (target, GET_MODE (a));
!   emit_insn (gen_aarch64_sve_acle (UNSPEC_TRN1, mode, target, a, b));
    return target;
  }
  
*************** aarch64_use_return_insn_p (void)
*** 10110,10115 ****
--- 10234,10253 ----
    return known_eq (cfun->machine->frame.frame_size, 0);
  }
  
+ /* Return false for locally streaming functions in order to avoid
+    shrink-wrapping them.  Shrink-wrapping is unsafe when the function prologue
+    and epilogue contain streaming state change, because these implicitly change
+    the meaning of poly_int values.  */
+ 
+ bool
+ aarch64_use_simple_return_insn_p (void)
+ {
+   if (aarch64_cfun_enables_pstate_sm ())
+     return false;
+ 
+   return true;
+ }
+ 
  /* Generate the epilogue instructions for returning from a function.
     This is almost exactly the reverse of the prolog sequence, except
     that we need to insert barriers to avoid scheduling loads that read
*************** aarch64_asm_preferred_eh_data_format (in
*** 25085,25104 ****
     return (global ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | type;
  }
  
  /* Output .variant_pcs for aarch64_vector_pcs function symbols.  */
  
  static void
  aarch64_asm_output_variant_pcs (FILE *stream, const tree decl, const char* name)
  {
!   if (TREE_CODE (decl) == FUNCTION_DECL)
      {
!       arm_pcs pcs = (arm_pcs) fndecl_abi (decl).id ();
!       if (pcs == ARM_PCS_SIMD || pcs == ARM_PCS_SVE)
! 	{
! 	  fprintf (stream, "\t.variant_pcs\t");
! 	  assemble_name (stream, name);
! 	  fprintf (stream, "\n");
! 	}
      }
  }
  
--- 25223,25263 ----
     return (global ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | type;
  }
  
+ /* Return true if function declaration FNDECL needs to be marked as
+    having a variant PCS.  */
+ 
+ static bool
+ aarch64_is_variant_pcs (tree fndecl)
+ {
+   /* Check for ABIs that preserve more registers than usual.  */
+   arm_pcs pcs = (arm_pcs) fndecl_abi (fndecl).id ();
+   if (pcs == ARM_PCS_SIMD || pcs == ARM_PCS_SVE)
+     return true;
+ 
+   /* Check for ABIs that allow PSTATE.SM to be 1 on entry.  */
+   tree fntype = TREE_TYPE (fndecl);
+   if (aarch64_fntype_pstate_sm (fntype) != AARCH64_ISA_MODE_SM_OFF)
+     return true;
+ 
+   /* Check for ABIs that require PSTATE.ZA to be 1 on entry, either because
+      of ZA or ZT0.  */
+   if (aarch64_fntype_pstate_za (fntype) != 0)
+     return true;
+ 
+   return false;
+ }
+ 
  /* Output .variant_pcs for aarch64_vector_pcs function symbols.  */
  
  static void
  aarch64_asm_output_variant_pcs (FILE *stream, const tree decl, const char* name)
  {
!   if (TREE_CODE (decl) == FUNCTION_DECL
!       && aarch64_is_variant_pcs (decl))
      {
!       fprintf (stream, "\t.variant_pcs\t");
!       assemble_name (stream, name);
!       fprintf (stream, "\n");
      }
  }
  
*************** aarch64_libgcc_floating_mode_supported_p
*** 31958,31963 ****
--- 32117,32129 ----
  #define TARGET_ATOMIC_ASSIGN_EXPAND_FENV \
    aarch64_atomic_assign_expand_fenv
  
+ /* If-conversion costs.  */
+ #undef TARGET_MAX_NOCE_IFCVT_SEQ_COST
+ #define TARGET_MAX_NOCE_IFCVT_SEQ_COST aarch64_max_noce_ifcvt_seq_cost
+ 
+ #undef TARGET_NOCE_CONVERSION_PROFITABLE_P
+ #define TARGET_NOCE_CONVERSION_PROFITABLE_P aarch64_noce_conversion_profitable_p
+ 
  /* Section anchor support.  */
  
  #undef TARGET_MIN_ANCHOR_OFFSET
diff -Nrcpad gcc-15.2.0/gcc/config/aarch64/aarch64.md gcc-15.3.0/gcc/config/aarch64/aarch64.md
*** gcc-15.2.0/gcc/config/aarch64/aarch64.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/aarch64/aarch64.md	Fri Jun 12 06:09:06 2026
***************
*** 280,285 ****
--- 280,286 ----
      UNSPEC_PACIBSP
      UNSPEC_PRLG_STK
      UNSPEC_REV
+     UNSPEC_REV_PRED
      UNSPEC_SADALP
      UNSPEC_SCVTF
      UNSPEC_SET_LANE
***************
*** 1115,1121 ****
  
  (define_insn "simple_return"
    [(simple_return)]
!   ""
    {
      output_asm_insn ("ret", operands);
      return aarch64_sls_barrier (aarch64_harden_sls_retbr_p ());
--- 1116,1122 ----
  
  (define_insn "simple_return"
    [(simple_return)]
!   "aarch64_use_simple_return_insn_p ()"
    {
      output_asm_insn ("ret", operands);
      return aarch64_sls_barrier (aarch64_harden_sls_retbr_p ());
***************
*** 4739,4745 ****
     ;; data
     (match_operand:ALLI 2 "register_operand" "r")
     ;; polynomial without leading 1
!    (match_operand:ALLX 3)]
    ""
    {
      /* If the polynomial is the same as the polynomial of crc32c* instruction,
--- 4740,4746 ----
     ;; data
     (match_operand:ALLI 2 "register_operand" "r")
     ;; polynomial without leading 1
!    (match_operand:ALLX 3 "const_int_operand")]
    ""
    {
      /* If the polynomial is the same as the polynomial of crc32c* instruction,
***************
*** 4778,4784 ****
     ;; data
     (match_operand:ALLI 2 "register_operand" "r")
     ;; polynomial without leading 1
!    (match_operand:ALLX 3)]
    "TARGET_AES && <ALLI:sizen> <= <ALLX:sizen>"
    {
      aarch64_expand_crc_using_pmull (<ALLX:MODE>mode, <ALLI:MODE>mode,
--- 4779,4785 ----
     ;; data
     (match_operand:ALLI 2 "register_operand" "r")
     ;; polynomial without leading 1
!    (match_operand:ALLX 3 "const_int_operand")]
    "TARGET_AES && <ALLI:sizen> <= <ALLX:sizen>"
    {
      aarch64_expand_crc_using_pmull (<ALLX:MODE>mode, <ALLI:MODE>mode,
diff -Nrcpad gcc-15.2.0/gcc/config/aarch64/arm_acle.h gcc-15.3.0/gcc/config/aarch64/arm_acle.h
*** gcc-15.2.0/gcc/config/aarch64/arm_acle.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/aarch64/arm_acle.h	Fri Jun 12 06:09:06 2026
*************** __pli (void const volatile *__addr)
*** 94,109 ****
  
  __extension__ extern __inline void
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __plix (unsigned int __cache, unsigned int __rettn,
  	void const volatile *__addr)
  {
    return __builtin_aarch64_plix (__cache, __rettn, __addr);
  }
  
  __extension__ extern __inline void
! __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __pldx (unsigned int __access, unsigned int __cache, unsigned int __rettn,
! 	void const volatile *__addr)
  {
    return __builtin_aarch64_pldx (__access, __cache, __rettn, __addr);
  }
--- 94,109 ----
  
  __extension__ extern __inline void
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __plix (const unsigned int __cache, const unsigned int __rettn,
  	void const volatile *__addr)
  {
    return __builtin_aarch64_plix (__cache, __rettn, __addr);
  }
  
  __extension__ extern __inline void
!   __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
!   __pldx (const unsigned int __access, const unsigned int __cache,
! 	  const unsigned int __rettn, void const volatile *__addr)
  {
    return __builtin_aarch64_pldx (__access, __cache, __rettn, __addr);
  }
diff -Nrcpad gcc-15.2.0/gcc/config/aarch64/iterators.md gcc-15.3.0/gcc/config/aarch64/iterators.md
*** gcc-15.2.0/gcc/config/aarch64/iterators.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/aarch64/iterators.md	Fri Jun 12 06:09:06 2026
***************
*** 529,534 ****
--- 529,540 ----
  ;; elements.
  (define_mode_iterator SVE_FULL_HSF [VNx8HF VNx4SF])
  
+ ;; Like SVE_FULL_HSF, but selectively enables those modes that are valid
+ ;; for the variant of the SVE2 FP8 FDOT instruction associated with that
+ ;; mode.
+ (define_mode_iterator SVE_FULL_HSF_FP8_FDOT [(VNx4SF "TARGET_SSVE_FP8DOT4")
+ 					     (VNx8HF "TARGET_SSVE_FP8DOT2")])
+ 
  ;; Fully-packed SVE integer vector modes that have 16-bit or 64-bit elements.
  (define_mode_iterator SVE_FULL_HDI [VNx8HI VNx2DI])
  
***************
*** 902,908 ****
      UNSPEC_UZP2Q	; Used in aarch64-sve.md.
      UNSPEC_ZIP1Q	; Used in aarch64-sve.md.
      UNSPEC_ZIP2Q	; Used in aarch64-sve.md.
-     UNSPEC_TRN1_CONV	; Used in aarch64-sve.md.
      UNSPEC_COND_CMPEQ_WIDE ; Used in aarch64-sve.md.
      UNSPEC_COND_CMPGE_WIDE ; Used in aarch64-sve.md.
      UNSPEC_COND_CMPGT_WIDE ; Used in aarch64-sve.md.
--- 908,913 ----
***************
*** 1157,1162 ****
--- 1162,1170 ----
      UNSPEC_LUTI2	; Used in aarch64-simd.md.
      UNSPEC_LUTI4	; Used in aarch64-simd.md.
  
+     ;; All used in aarch64-sve.md
+     UNSPEC_PERMUTE_PRED
+ 
      ;; All used in aarch64-sve2.md
      UNSPEC_ADDQV
      UNSPEC_ANDQV
***************
*** 2118,2124 ****
  			   (SI   "si")])
  
  ;; Like ve_mode but for the half-width modes.
! (define_mode_attr vn_mode [(V8HI  "qi") (V4SI  "hi") (V2DI  "si")])
  
  ;; Vm for lane instructions is restricted to FP_LO_REGS.
  (define_mode_attr vwx [(V4HI "x") (V8HI "x") (HI "x")
--- 2126,2133 ----
  			   (SI   "si")])
  
  ;; Like ve_mode but for the half-width modes.
! (define_mode_attr vn_mode [(V8HI  "qi") (V4SI  "hi") (V2DI  "si") (DI "si")
! 			   (SI "hi") (HI "qi")])
  
  ;; Vm for lane instructions is restricted to FP_LO_REGS.
  (define_mode_attr vwx [(V4HI "x") (V8HI "x") (HI "x")
diff -Nrcpad gcc-15.2.0/gcc/config/aarch64/tuning_models/generic.h gcc-15.3.0/gcc/config/aarch64/tuning_models/generic.h
*** gcc-15.2.0/gcc/config/aarch64/tuning_models/generic.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/aarch64/tuning_models/generic.h	Fri Jun 12 06:09:06 2026
*************** static const struct cpu_vector_cost gene
*** 128,134 ****
  static const struct cpu_branch_cost generic_branch_cost =
  {
    1,  /* Predictable.  */
!   3   /* Unpredictable.  */
  };
  
  /* Generic approximation modes.  */
--- 128,135 ----
  static const struct cpu_branch_cost generic_branch_cost =
  {
    1,  /* Predictable.  */
!   3,  /* Unpredictable.  */
!   7, /* br_mispredict_factor.  */
  };
  
  /* Generic approximation modes.  */
diff -Nrcpad gcc-15.2.0/gcc/config/aarch64/tuning_models/generic_armv8_a.h gcc-15.3.0/gcc/config/aarch64/tuning_models/generic_armv8_a.h
*** gcc-15.2.0/gcc/config/aarch64/tuning_models/generic_armv8_a.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/aarch64/tuning_models/generic_armv8_a.h	Fri Jun 12 06:09:06 2026
*************** static const struct cpu_vector_cost gene
*** 125,137 ****
    nullptr /* issue_info  */
  };
  
- /* Generic costs for branch instructions.  */
- static const struct cpu_branch_cost generic_armv8_a_branch_cost =
- {
-   1,  /* Predictable.  */
-   3   /* Unpredictable.  */
- };
- 
  /* Generic approximation modes.  */
  static const cpu_approx_modes generic_armv8_a_approx_modes =
  {
--- 125,130 ----
*************** static const struct tune_params generic_
*** 158,164 ****
    &generic_armv8_a_addrcost_table,
    &generic_armv8_a_regmove_cost,
    &generic_armv8_a_vector_cost,
!   &generic_armv8_a_branch_cost,
    &generic_armv8_a_approx_modes,
    SVE_NOT_IMPLEMENTED, /* sve_width  */
    { 4, /* load_int.  */
--- 151,157 ----
    &generic_armv8_a_addrcost_table,
    &generic_armv8_a_regmove_cost,
    &generic_armv8_a_vector_cost,
!   &generic_branch_cost,
    &generic_armv8_a_approx_modes,
    SVE_NOT_IMPLEMENTED, /* sve_width  */
    { 4, /* load_int.  */
diff -Nrcpad gcc-15.2.0/gcc/config/aarch64/tuning_models/hip12.h gcc-15.3.0/gcc/config/aarch64/tuning_models/hip12.h
*** gcc-15.2.0/gcc/config/aarch64/tuning_models/hip12.h	Thu Jan  1 00:00:00 1970
--- gcc-15.3.0/gcc/config/aarch64/tuning_models/hip12.h	Fri Jun 12 06:09:06 2026
***************
*** 0 ****
--- 1,226 ----
+ /* Tuning model description for AArch64 architecture.
+    Copyright (C) 2009-2026 Free Software Foundation, Inc.
+ 
+    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/>.  */
+ 
+ #ifndef GCC_AARCH64_H_HIP12
+ #define GCC_AARCH64_H_HIP12
+ 
+ #include "generic.h"
+ 
+ static const struct cpu_addrcost_table hip12_addrcost_table =
+ {
+     {
+       0, /* hi  */
+       0, /* si  */
+       0, /* di  */
+       2, /* ti  */
+     },
+   0, /* pre_modify  */
+   0, /* post_modify  */
+   2, /* post_modify_ld3_st3  */
+   2, /* post_modify_ld4_st4  */
+   0, /* register_offset  */
+   0, /* register_sextend  */
+   0, /* register_zextend  */
+   0, /* imm_offset  */
+ };
+ 
+ static const struct cpu_regmove_cost hip12_regmove_cost =
+ {
+   1, /* GP2GP  */
+   /* Spilling to int<->fp instead of memory is recommended so set
+      realistic costs compared to memmov_cost.  */
+   5, /* GP2FP  */
+   2, /* FP2GP  */
+   2  /* FP2FP  */
+ };
+ 
+ static const advsimd_vec_cost hip12_advsimd_vector_cost =
+ {
+   2, /* int_stmt_cost  */
+   2, /* fp_stmt_cost  */
+   2, /* ld2_st2_permute_cost  */
+   2, /* ld3_st3_permute_cost  */
+   3, /* ld4_st4_permute_cost  */
+   2, /* permute_cost  */
+   9, /* reduc_i8_cost  */
+   7, /* reduc_i16_cost  */
+   5, /* reduc_i32_cost  */
+   3, /* reduc_i64_cost  */
+   9, /* reduc_f16_cost  */
+   6, /* reduc_f32_cost  */
+   3, /* reduc_f64_cost  */
+   2, /* store_elt_extra_cost  */
+   2, /* vec_to_scalar_cost  */
+   4, /* scalar_to_vec_cost  */
+   6, /* align_load_cost  */
+   6, /* unalign_load_cost  */
+   1, /* unalign_store_cost  */
+   1  /* store_cost  */
+ };
+ 
+ static const sve_vec_cost hip12_sve_vector_cost =
+ {
+   {
+     2, /* int_stmt_cost  */
+     2, /* fp_stmt_cost  */
+     2, /* ld2_st2_permute_cost  */
+     3, /* ld3_st3_permute_cost  */
+     3, /* ld4_st4_permute_cost  */
+     2, /* permute_cost  */
+     /* Theoretically, a reduction involving 31 scalar ADDs could
+        complete in ~6 cycles and would have a cost of 31.  [SU]ADDV
+        completes in 13 cycles, so give it a cost of 31 + 7.  */
+     38, /* reduc_i8_cost  */
+     /* Likewise for 15 scalar ADDs (~3 cycles) vs. 10: 15 + 7.  */
+     22, /* reduc_i16_cost  */
+     /* Likewise for 7 scalar ADDs (~2 cycles) vs. 7: 7 + 5.  */
+     12, /* reduc_i32_cost  */
+     /* Likewise for 3 scalar ADDs (~1 cycles) vs. 4: 3 + 3.  */
+     6, /* reduc_i64_cost  */
+     /* Theoretically, a reduction involving 15 scalar FADDs could
+        complete in ~8 cycles and would have a cost of 30.  FADDV
+        completes in 15 cycles, so give it a cost of 30 + 7.  */
+     37, /* reduc_f16_cost  */
+     /* Likewise for 7 scalar FADDs (~4 cycles) vs. 12: 14 + 8.  */
+     22, /* reduc_f32_cost  */
+     /* Likewise for 3 scalar FADDs (~2 cycles) vs. 9: 6 + 7.  */
+     13, /* reduc_f64_cost  */
+     2, /* store_elt_extra_cost  */
+     2, /* vec_to_scalar_cost  */
+     4, /* scalar_to_vec_cost  */
+     6, /* align_load_cost  */
+     6, /* unalign_load_cost  */
+     1, /* unalign_store_cost  */
+     1  /* store_cost  */
+   },
+   3, /* clast_cost  */
+   42, /* fadda_f16_cost  */
+   26, /* fadda_f32_cost  */
+   20, /* fadda_f64_cost  */
+   32, /* gather_load_x32_cost  */
+   16, /* gather_load_x64_cost  */
+   96, /* gather_load_x32_init_cost  */
+   32, /* gather_load_x64_init_cost  */
+   3 /* scatter_store_elt_cost  */
+ };
+ 
+ static const aarch64_scalar_vec_issue_info hip12_scalar_issue_info =
+ {
+   5, /* loads_stores_per_cycle  */
+   2, /* stores_per_cycle  */
+   6, /* general_ops_per_cycle  */
+   0, /* fp_simd_load_general_ops  */
+   1 /* fp_simd_store_general_ops  */
+ };
+ 
+ static const aarch64_advsimd_vec_issue_info hip12_advsimd_issue_info =
+ {
+   {
+     5, /* loads_stores_per_cycle  */
+     2, /* stores_per_cycle  */
+     4, /* general_ops_per_cycle  */
+     0, /* fp_simd_load_general_ops  */
+     1 /* fp_simd_store_general_ops  */
+   },
+   2, /* ld2_st2_general_ops  */
+   2, /* ld3_st3_general_ops  */
+   3 /* ld4_st4_general_ops  */
+ };
+ 
+ static const aarch64_sve_vec_issue_info hip12_sve_issue_info =
+ {
+   {
+     {
+       5, /* loads_stores_per_cycle  */
+       2, /* stores_per_cycle  */
+       2, /* general_ops_per_cycle  */
+       0, /* fp_simd_load_general_ops  */
+       1 /* fp_simd_store_general_ops  */
+     },
+     2, /* ld2_st2_general_ops  */
+     2, /* ld3_st3_general_ops  */
+     3 /* ld4_st4_general_ops  */
+   },
+   2, /* pred_ops_per_cycle  */
+   2, /* while_pred_ops  */
+   2, /* int_cmp_pred_ops  */
+   1, /* fp_cmp_pred_ops  */
+   1, /* gather_scatter_pair_general_ops  */
+   1 /* gather_scatter_pair_pred_ops  */
+ };
+ 
+ static const aarch64_vec_issue_info hip12_vec_issue_info =
+ {
+   &hip12_scalar_issue_info,
+   &hip12_advsimd_issue_info,
+   &hip12_sve_issue_info
+ };
+ 
+ static const struct cpu_vector_cost hip12_vector_cost =
+ {
+   1, /* scalar_int_stmt_cost  */
+   2, /* scalar_fp_stmt_cost  */
+   4, /* scalar_load_cost  */
+   1, /* scalar_store_cost  */
+   1, /* cond_taken_branch_cost  */
+   1, /* cond_not_taken_branch_cost  */
+   &hip12_advsimd_vector_cost, /* advsimd  */
+   &hip12_sve_vector_cost, /* sve  */
+   &hip12_vec_issue_info /* issue_info  */
+ };
+ 
+ static const struct tune_params hip12_tunings =
+ {
+   &hip12_extra_costs,
+   &hip12_addrcost_table,
+   &hip12_regmove_cost,
+   &hip12_vector_cost,
+   &generic_branch_cost,
+   &generic_approx_modes,
+   SVE_256, /* sve_width  */
+   { 4, /* load_int.  */
+     1, /* store_int.  */
+     6, /* load_fp.  */
+     1, /* store_fp.  */
+     8, /* load_pred.  */
+     4 /* store_pred.  */
+   }, /* memmov_cost.  */
+   8,    /* issue_rate  */
+   (AARCH64_FUSE_BASE
+    | AARCH64_FUSE_CMP_CSEL
+    | AARCH64_FUSE_CMP_CSET), /* fusible_ops  */
+   "16", /* function_align.  */
+   "4",  /* jump_align.  */
+   "8",  /* loop_align.  */
+   2,    /* int_reassoc_width.  */
+   4,    /* fp_reassoc_width.  */
+   2,    /* fma_reassoc_width.  */
+   2,    /* vec_reassoc_width.  */
+   2,    /* min_div_recip_mul_sf.  */
+   2,    /* min_div_recip_mul_df.  */
+   0,    /* max_case_values.  */
+   tune_params::AUTOPREFETCHER_WEAK,    /* autoprefetcher_model.  */
+   (AARCH64_EXTRA_TUNE_BASE
+    | AARCH64_EXTRA_TUNE_MATCHED_VECTOR_THROUGHPUT),    /* tune_flags.  */
+   &generic_armv8_a_prefetch_tune,
+   AARCH64_LDP_STP_POLICY_ALWAYS,    /* ldp_policy_model.  */
+   AARCH64_LDP_STP_POLICY_ALWAYS     /* stp_policy_model.  */
+ };
+ 
+ #endif /* GCC_AARCH64_H_HIP12.  */
diff -Nrcpad gcc-15.2.0/gcc/config/aarch64/tuning_models/olympus.h gcc-15.3.0/gcc/config/aarch64/tuning_models/olympus.h
*** gcc-15.2.0/gcc/config/aarch64/tuning_models/olympus.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/aarch64/tuning_models/olympus.h	Fri Jun 12 06:09:06 2026
*************** static sve_vec_cost olympus_sve_vector_c
*** 75,81 ****
      2, /* store_elt_extra_cost  */
      8, /* vec_to_scalar_cost  */
      4, /* scalar_to_vec_cost  */
!     4, /* align_load_cost  */
      6, /* unalign_load_cost  */
      1, /* unalign_store_cost  */
      1  /* store_cost  */
--- 75,81 ----
      2, /* store_elt_extra_cost  */
      8, /* vec_to_scalar_cost  */
      4, /* scalar_to_vec_cost  */
!     6, /* align_load_cost  */
      6, /* unalign_load_cost  */
      1, /* unalign_store_cost  */
      1  /* store_cost  */
*************** static sve_vec_cost olympus_sve_vector_c
*** 93,99 ****
  
  static aarch64_scalar_vec_issue_info olympus_scalar_issue_info =
  {
!   4, /* loads_stores_per_cycle  */
    2, /* stores_per_cycle  */
    8, /* general_ops_per_cycle  */
    0, /* fp_simd_load_general_ops  */
--- 93,99 ----
  
  static aarch64_scalar_vec_issue_info olympus_scalar_issue_info =
  {
!   6, /* loads_stores_per_cycle  */
    2, /* stores_per_cycle  */
    8, /* general_ops_per_cycle  */
    0, /* fp_simd_load_general_ops  */
*************** static aarch64_scalar_vec_issue_info oly
*** 103,109 ****
  static aarch64_advsimd_vec_issue_info olympus_advsimd_issue_info =
  {
    {
!     3, /* loads_stores_per_cycle  */
      2, /* stores_per_cycle  */
      6, /* general_ops_per_cycle  */
      0, /* fp_simd_load_general_ops  */
--- 103,109 ----
  static aarch64_advsimd_vec_issue_info olympus_advsimd_issue_info =
  {
    {
!     6, /* loads_stores_per_cycle  */
      2, /* stores_per_cycle  */
      6, /* general_ops_per_cycle  */
      0, /* fp_simd_load_general_ops  */
*************** static aarch64_sve_vec_issue_info olympu
*** 118,124 ****
  {
    {
      {
!       3, /* loads_stores_per_cycle  */
        2, /* stores_per_cycle  */
        6, /* general_ops_per_cycle  */
        0, /* fp_simd_load_general_ops  */
--- 118,124 ----
  {
    {
      {
!       6, /* loads_stores_per_cycle  */
        2, /* stores_per_cycle  */
        6, /* general_ops_per_cycle  */
        0, /* fp_simd_load_general_ops  */
diff -Nrcpad gcc-15.2.0/gcc/config/arm/arm-mve-builtins-base.cc gcc-15.3.0/gcc/config/arm/arm-mve-builtins-base.cc
*** gcc-15.2.0/gcc/config/arm/arm-mve-builtins-base.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/arm/arm-mve-builtins-base.cc	Fri Jun 12 06:09:06 2026
*************** public:
*** 294,302 ****
      : m_to_int_mode (to_int_mode)
    {}
  
!   unsigned int call_properties (const function_instance &) const override
    {
!     return CP_WRITE_MEMORY;
    }
  
    machine_mode memory_vector_mode (const function_instance &fi) const override
--- 294,305 ----
      : m_to_int_mode (to_int_mode)
    {}
  
!   unsigned int call_properties (const function_instance &fi) const override
    {
!     if (fi.mode_suffix_id == MODE_wb)
!       return CP_WRITE_MEMORY | CP_READ_MEMORY;
!     else
!       return CP_WRITE_MEMORY;
    }
  
    machine_mode memory_vector_mode (const function_instance &fi) const override
*************** public:
*** 480,485 ****
--- 483,496 ----
      return type_suffixes[suffix].vector_mode;
    }
  
+   unsigned int call_properties (const function_instance &fi) const override
+   {
+     if (fi.mode_suffix_id == MODE_wb)
+       return CP_WRITE_MEMORY | CP_READ_MEMORY;
+     else
+       return CP_READ_MEMORY;
+   }
+ 
    rtx expand (function_expander &e) const override
    {
      insn_code icode;
*************** public:
*** 1167,1172 ****
--- 1178,1225 ----
    }
  };
  
+ 
+ /* Map the function directly to the appropriate scalar shift builtin.  */
+ enum which_scalar_shift {
+   ss_ASRL,
+   ss_LSLL,
+ };
+ 
+ class mve_function_scalar_shift : public function_base
+ {
+ public:
+   CONSTEXPR mve_function_scalar_shift (enum which_scalar_shift shl)
+     : m_scalar_shift (shl)
+   {}
+ 
+   /* Which scalar_shift builtin to map.  */
+   enum which_scalar_shift m_scalar_shift;
+ 
+   rtx
+   expand (function_expander &e) const override
+   {
+     insn_code code;
+ 
+     switch (m_scalar_shift)
+       {
+       case ss_ASRL:
+ 	e.args[1] = simplify_gen_subreg (QImode, e.args[1], SImode, 0);
+ 	code = CODE_FOR_mve_asrl;
+ 	break;
+ 
+       case ss_LSLL:
+ 	e.args[1] = simplify_gen_subreg (QImode, e.args[1], SImode, 0);
+ 	code = CODE_FOR_mve_lsll;
+ 	break;
+ 
+       default:
+ 	gcc_unreachable ();
+       }
+ 
+     return e.use_unpred_insn (code);
+   }
+ };
+ 
  } /* end anonymous namespace */
  
  namespace arm_mve {
*************** namespace arm_mve {
*** 1334,1339 ****
--- 1387,1394 ----
     (-1, -1, UNSPEC##_F,							\
      -1, -1, UNSPEC##_P_F))
  
+ FUNCTION (asrl, mve_function_scalar_shift, (ss_ASRL))
+ FUNCTION (lsll, mve_function_scalar_shift, (ss_LSLL))
  FUNCTION_PRED_P_S_U (vabavq, VABAVQ)
  FUNCTION_WITHOUT_N (vabdq, VABDQ)
  FUNCTION (vabsq, unspec_based_mve_function_exact_insn, (ABS, ABS, ABS, -1, -1, -1, VABSQ_M_S, -1, VABSQ_M_F, -1, -1, -1))
diff -Nrcpad gcc-15.2.0/gcc/config/arm/arm-mve-builtins-base.def gcc-15.3.0/gcc/config/arm/arm-mve-builtins-base.def
*** gcc-15.2.0/gcc/config/arm/arm-mve-builtins-base.def	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/arm/arm-mve-builtins-base.def	Fri Jun 12 06:09:06 2026
***************
*** 18,23 ****
--- 18,25 ----
     <http://www.gnu.org/licenses/>.  */
  
  #define REQUIRES_FLOAT false
+ DEF_MVE_FUNCTION (asrl, scalar_s64_shift, none, none)
+ DEF_MVE_FUNCTION (lsll, scalar_u64_shift, none, none)
  DEF_MVE_FUNCTION (vabavq, binary_acca_int32, all_integer, p_or_none)
  DEF_MVE_FUNCTION (vabdq, binary, all_integer, mx_or_none)
  DEF_MVE_FUNCTION (vabsq, unary, all_signed, mx_or_none)
diff -Nrcpad gcc-15.2.0/gcc/config/arm/arm-mve-builtins-base.h gcc-15.3.0/gcc/config/arm/arm-mve-builtins-base.h
*** gcc-15.2.0/gcc/config/arm/arm-mve-builtins-base.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/arm/arm-mve-builtins-base.h	Fri Jun 12 06:09:06 2026
***************
*** 23,28 ****
--- 23,30 ----
  namespace arm_mve {
  namespace functions {
  
+ extern const function_base *const asrl;
+ extern const function_base *const lsll;
  extern const function_base *const vabavq;
  extern const function_base *const vabdq;
  extern const function_base *const vabsq;
diff -Nrcpad gcc-15.2.0/gcc/config/arm/arm-mve-builtins-shapes.cc gcc-15.3.0/gcc/config/arm/arm-mve-builtins-shapes.cc
*** gcc-15.2.0/gcc/config/arm/arm-mve-builtins-shapes.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/arm/arm-mve-builtins-shapes.cc	Fri Jun 12 06:09:06 2026
*************** struct mvn_def : public overloaded_base<
*** 1682,1687 ****
--- 1682,1717 ----
  };
  SHAPE (mvn)
  
+ /* int64_t foo(int64_t, int32_t)
+ 
+    Example: asrl
+    int64_t [__arm_]arsl(int64_t value, int32_t shift)  */
+ struct scalar_s64_shift_def : public nonoverloaded_base
+ {
+   void
+   build (function_builder &b, const function_group_info &group,
+ 	 bool preserve_user_namespace) const override
+   {
+     build_all (b, "ss64,ss64,ss32", group, MODE_none, preserve_user_namespace);
+   }
+ };
+ SHAPE (scalar_s64_shift)
+ 
+ /* uint64_t foo(uint64_t, int32_t)
+ 
+    Example: lsll.
+    uint64_t [__arm_]lsll(uint64_t value, int32_t shift)  */
+ struct scalar_u64_shift_def : public nonoverloaded_base
+ {
+   void
+   build (function_builder &b, const function_group_info &group,
+ 	 bool preserve_user_namespace) const override
+   {
+     build_all (b, "su64,su64,ss32", group, MODE_none, preserve_user_namespace);
+   }
+ };
+ SHAPE (scalar_u64_shift)
+ 
  /* void vfoo[_t0](<X>_t *, <T0>[xN]_t)
  
     where <X> might be tied to <t0> (for non-truncating stores) or might
diff -Nrcpad gcc-15.2.0/gcc/config/arm/arm-mve-builtins-shapes.h gcc-15.3.0/gcc/config/arm/arm-mve-builtins-shapes.h
*** gcc-15.2.0/gcc/config/arm/arm-mve-builtins-shapes.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/arm/arm-mve-builtins-shapes.h	Fri Jun 12 06:09:06 2026
*************** namespace arm_mve
*** 66,71 ****
--- 66,73 ----
      extern const function_shape *const load_ext_gather_offset;
      extern const function_shape *const load_gather_base;
      extern const function_shape *const mvn;
+     extern const function_shape *const scalar_s64_shift;
+     extern const function_shape *const scalar_u64_shift;
      extern const function_shape *const store;
      extern const function_shape *const store_scatter_base;
      extern const function_shape *const store_scatter_offset;
diff -Nrcpad gcc-15.2.0/gcc/config/arm/arm.cc gcc-15.3.0/gcc/config/arm/arm.cc
*** gcc-15.2.0/gcc/config/arm/arm.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/arm/arm.cc	Fri Jun 12 06:09:06 2026
*************** arm_canonicalize_comparison (int *code,
*** 5726,5731 ****
--- 5726,5747 ----
  
    maxval = (HOST_WIDE_INT_1U << (GET_MODE_BITSIZE (mode) - 1)) - 1;
  
+   /* For floating-point comparisons, prefer >= and > over <= and < since
+      the former are supported by VSEL on some architectures.  Only do this
+      if both operands are registers.  */
+   if (GET_MODE_CLASS (mode) == MODE_FLOAT
+       && (*code == LE
+ 	  || *code == LT
+ 	  || *code == UNGT
+ 	  || *code == UNGE)
+       && register_operand (*op0, mode)
+       && register_operand (*op1, mode))
+     {
+       std::swap (*op0, *op1);
+       *code = (int) swap_condition ((rtx_code)*code);
+       return;
+     }
+ 
    /* For DImode, we have GE/LT/GEU/LTU comparisons (with cmp/sbc).  In
       ARM mode we can also use cmp/cmpeq for GTU/LEU.  GT/LE must be
       either reversed or (for constant OP1) adjusted to GE/LT.
*************** arm_select_cc_mode (enum rtx_code op, rt
*** 16218,16224 ****
  	case LE:
  	case GT:
  	case GE:
! 	  return CCFPEmode;
  
  	default:
  	  gcc_unreachable ();
--- 16234,16242 ----
  	case LE:
  	case GT:
  	case GE:
! 	  return (flag_finite_math_only
! 		  ? CCFPmode
! 		  : CCFPEmode);
  
  	default:
  	  gcc_unreachable ();
*************** comp_not_to_clear_mask_str_un (tree arg_
*** 18593,18598 ****
--- 18611,18619 ----
  
  	  if (*last_used_bit != offset)
  	    {
+ 	      /* We never clear padding bits in any other registers than the
+ 		 first 4 GPRs.  */
+ 	      gcc_assert (*regno < 4);
  	      if (offset < *last_used_bit)
  		{
  		  /* This field's offset is before the 'last_used_bit', that
*************** comp_not_to_clear_mask_str_un (tree arg_
*** 18685,18703 ****
  	      last_used_bit_t = (starting_bit + field_size) % 32;
  	    }
  
! 	  for (i = *regno; i < regno_t; i++)
  	    {
! 	      /* For all but the last register used by this field only keep the
! 		 padding bits that were padding bits in this field.  */
! 	      padding_bits_to_clear_res[i] &= padding_bits_to_clear_t[i];
! 	    }
  
! 	    /* For the last register, keep all padding bits that were padding
! 	       bits in this field and any padding bits that are still valid
! 	       as padding bits but fall outside of this field's size.  */
! 	    mask = (((uint32_t) -1) - ((uint32_t) 1 << last_used_bit_t)) + 1;
! 	    padding_bits_to_clear_res[regno_t]
! 	      &= padding_bits_to_clear_t[regno_t] | mask;
  
  	  /* Update the maximum size of the fields in terms of registers used
  	     ('max_reg') and the 'last_used_bit' in said register.  */
--- 18706,18730 ----
  	      last_used_bit_t = (starting_bit + field_size) % 32;
  	    }
  
! 	  /* We only clear padding bits in the first 4 GPRs.  No need to check
! 	     regno_t, since there is no way where this field would have been
! 	     put into part GPR part FP reg.  */
! 	  if (*regno < 4)
  	    {
! 	      for (i = *regno; i < regno_t; i++)
! 		{
! 		  /* For all but the last register used by this field only keep
! 		     the padding bits that were padding bits in this field.  */
! 		  padding_bits_to_clear_res[i] &= padding_bits_to_clear_t[i];
! 		}
  
! 	      /* For the last register, keep all padding bits that were padding
! 		 bits in this field and any padding bits that are still valid
! 		 as padding bits but fall outside of this field's size.  */
! 	      mask = (((uint32_t) -1) - ((uint32_t) 1 << last_used_bit_t)) + 1;
! 	      padding_bits_to_clear_res[regno_t]
! 		&= padding_bits_to_clear_t[regno_t] | mask;
! 	    }
  
  	  /* Update the maximum size of the fields in terms of registers used
  	     ('max_reg') and the 'last_used_bit' in said register.  */
*************** comp_not_to_clear_mask_str_un (tree arg_
*** 18712,18727 ****
  	  field = TREE_CHAIN (field);
  	}
  
!       /* Update the current padding_bits_to_clear using the intersection of the
! 	 padding bits of all the fields.  */
!       for (i=*regno; i < max_reg; i++)
! 	padding_bits_to_clear[i] |= padding_bits_to_clear_res[i];
  
!       /* Do not keep trailing padding bits, we do not know yet whether this
! 	 is the end of the argument.  */
!       mask = ((uint32_t) 1 << max_bit) - 1;
!       padding_bits_to_clear[max_reg]
! 	|= padding_bits_to_clear_res[max_reg] & mask;
  
        *regno = max_reg;
        *last_used_bit = max_bit;
--- 18739,18763 ----
  	  field = TREE_CHAIN (field);
  	}
  
!       /* We only clear padding bits in the first 4 GPRs.  No need to check
! 	 regno_t, since there is no way where this field would have been
! 	 put into part GPR part FP reg.  */
!       if (*regno < 4)
! 	{
! 	  /* Update the current padding_bits_to_clear using the intersection of the
! 	     padding bits of all the fields.  */
! 	  for (i=*regno; i < max_reg; i++)
! 	    padding_bits_to_clear[i] |= padding_bits_to_clear_res[i];
  
! 	  /* Do not keep trailing padding bits, we do not know yet whether this
! 	     is the end of the argument.  */
! 	  mask = ((uint32_t) 1 << max_bit) - 1;
! 	  padding_bits_to_clear[max_reg]
! 	    |= padding_bits_to_clear_res[max_reg] & mask;
! 	}
! 
!       for (int i = *regno; i < max_reg; ++i)
! 	not_to_clear_reg_mask |= HOST_WIDE_INT_1U << i;
  
        *regno = max_reg;
        *last_used_bit = max_bit;
*************** compute_not_to_clear_mask (tree arg_type
*** 18763,18770 ****
        /* If the 'last_used_bit' is not zero, that means we are still using a
  	 part of the last 'regno'.  In such cases we must clear the trailing
  	 bits.  Otherwise we are not using regno and we should mark it as to
! 	 clear.  */
!       if (last_used_bit != 0)
  	padding_bits_to_clear[regno]
  	  |= ((uint32_t)-1) - ((uint32_t) 1 << last_used_bit) + 1;
        else
--- 18799,18807 ----
        /* If the 'last_used_bit' is not zero, that means we are still using a
  	 part of the last 'regno'.  In such cases we must clear the trailing
  	 bits.  Otherwise we are not using regno and we should mark it as to
! 	 clear.  We only clear padding bits for scalar values that are passed
! 	 in registers, so regno is never 4 or higher.  */
!       if (regno < 4 && last_used_bit != 0)
  	padding_bits_to_clear[regno]
  	  |= ((uint32_t)-1) - ((uint32_t) 1 << last_used_bit) + 1;
        else
*************** arm_print_condition (FILE *stream)
*** 24196,24202 ****
  
  
  /* Globally reserved letters: acln
!    Puncutation letters currently used: @_|?().!#
     Lower case letters currently used: bcdefhimpqtvwxyz
     Upper case letters currently used: ABCDEFGHIJKLMOPQRSTUV
     Letters previously used, but now deprecated/obsolete: sNWXYZ.
--- 24233,24239 ----
  
  
  /* Globally reserved letters: acln
!    Puncutation letters currently used: @_-|?().!#
     Lower case letters currently used: bcdefhimpqtvwxyz
     Upper case letters currently used: ABCDEFGHIJKLMOPQRSTUV
     Letters previously used, but now deprecated/obsolete: sNWXYZ.
*************** arm_print_operand (FILE *stream, rtx x,
*** 24229,24234 ****
--- 24266,24276 ----
      case '_':
        fputs (user_label_prefix, stream);
        return;
+     case '-':
+ #ifdef LOCAL_LABEL_PREFIX
+       fputs (LOCAL_LABEL_PREFIX, stream);
+ #endif
+       return;
  
      case '|':
        fputs (REGISTER_PREFIX, stream);
*************** arm_print_operand_punct_valid_p (unsigne
*** 25078,25086 ****
  {
    return (code == '@' || code == '|' || code == '.'
  	  || code == '(' || code == ')' || code == '#'
  	  || (TARGET_32BIT && (code == '?'))
! 	  || (TARGET_THUMB2 && (code == '!'))
! 	  || (TARGET_THUMB && (code == '_')));
  }
  
  /* Target hook for assembling integer objects.  The ARM version needs to
--- 25120,25128 ----
  {
    return (code == '@' || code == '|' || code == '.'
  	  || code == '(' || code == ')' || code == '#'
+ 	  || code == '-' || code == '_'
  	  || (TARGET_32BIT && (code == '?'))
! 	  || (TARGET_THUMB2 && (code == '!')));
  }
  
  /* Target hook for assembling integer objects.  The ARM version needs to
*************** arm_validize_comparison (rtx *comparison
*** 32860,32865 ****
--- 32902,32910 ----
      case E_HFmode:
        if (!TARGET_VFP_FP16INST)
  	break;
+       if (!arm_vsel_comparison_operator (*comparison, mode))
+ 	return false;
+ 
        /* FP16 comparisons are done in SF mode.  */
        mode = SFmode;
        *op1 = convert_to_mode (mode, *op1, 1);
diff -Nrcpad gcc-15.2.0/gcc/config/arm/arm.h gcc-15.3.0/gcc/config/arm/arm.h
*** gcc-15.2.0/gcc/config/arm/arm.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/arm/arm.h	Fri Jun 12 06:09:06 2026
*************** extern int making_const_table;
*** 2257,2263 ****
  
  #define SELECT_CC_MODE(OP, X, Y)  arm_select_cc_mode (OP, X, Y)
  
! #define REVERSIBLE_CC_MODE(MODE) 1
  
  #define REVERSE_CONDITION(CODE,MODE) \
    (((MODE) == CCFPmode || (MODE) == CCFPEmode) \
--- 2257,2267 ----
  
  #define SELECT_CC_MODE(OP, X, Y)  arm_select_cc_mode (OP, X, Y)
  
! /* Floating-point modes cannot be reversed unless we don't care about
!    NaNs.  */
! #define REVERSIBLE_CC_MODE(MODE)			\
!   (flag_finite_math_only				\
!    || !((MODE) == CCFPmode || (MODE) == CCFPEmode))
  
  #define REVERSE_CONDITION(CODE,MODE) \
    (((MODE) == CCFPmode || (MODE) == CCFPEmode) \
diff -Nrcpad gcc-15.2.0/gcc/config/arm/arm.md gcc-15.3.0/gcc/config/arm/arm.md
*** gcc-15.2.0/gcc/config/arm/arm.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/arm/arm.md	Fri Jun 12 06:09:06 2026
***************
*** 1012,1018 ****
     (set_attr "type" "alus_sreg")]
  )
  
! (define_insn "subvsi3_intmin"
    [(set (reg:CC_V CC_REGNUM)
  	(compare:CC_V
  	  (plus:DI
--- 1012,1018 ----
     (set_attr "type" "alus_sreg")]
  )
  
! (define_insn "sub_cmpVsi3_intmin"
    [(set (reg:CC_V CC_REGNUM)
  	(compare:CC_V
  	  (plus:DI
***************
*** 1432,1446 ****
        operands[2] = GEN_INT (-INTVAL (operands[2]));
        /* Special case for INT_MIN.  */
        if (INTVAL (operands[2]) == 0x80000000)
! 	emit_insn (gen_subvsi3_intmin (operands[0], operands[1]));
        else
  	emit_insn (gen_addsi3_compareV_imm (operands[0], operands[1],
! 					  operands[2]));
      }
    else if (CONST_INT_P (operands[1]))
!     emit_insn (gen_subvsi3_imm1 (operands[0], operands[1], operands[2]));
    else
!     emit_insn (gen_subvsi3 (operands[0], operands[1], operands[2]));
  
    arm_gen_unlikely_cbranch (NE, CC_Vmode, operands[3]);
    DONE;
--- 1432,1446 ----
        operands[2] = GEN_INT (-INTVAL (operands[2]));
        /* Special case for INT_MIN.  */
        if (INTVAL (operands[2]) == 0x80000000)
! 	emit_insn (gen_sub_cmpVsi3_intmin (operands[0], operands[1]));
        else
  	emit_insn (gen_addsi3_compareV_imm (operands[0], operands[1],
! 					    operands[2]));
      }
    else if (CONST_INT_P (operands[1]))
!     emit_insn (gen_sub_cmpVsi3_imm1 (operands[0], operands[1], operands[2]));
    else
!     emit_insn (gen_sub_cmpVsi3 (operands[0], operands[1], operands[2]));
  
    arm_gen_unlikely_cbranch (NE, CC_Vmode, operands[3]);
    DONE;
***************
*** 1513,1526 ****
      hi_op2 = force_reg (SImode, hi_op2);
    rtx ccreg = gen_rtx_REG (mode, CC_REGNUM);
    if (CONST_INT_P (hi_op2))
!     emit_insn (gen_subvsi3_borrow_imm (hi_result, hi_op1, hi_op2,
  				       gen_rtx_LTU (SImode, ccreg, const0_rtx),
  				       gen_rtx_LTU (DImode, ccreg,
  						    const0_rtx)));
-   else
-     emit_insn (gen_subvsi3_borrow (hi_result, hi_op1, hi_op2,
- 				   gen_rtx_LTU (SImode, ccreg, const0_rtx),
- 				   gen_rtx_LTU (DImode, ccreg, const0_rtx)));
    arm_gen_unlikely_cbranch (NE, CC_Vmode, operands[3]);
  
    DONE;
--- 1513,1528 ----
      hi_op2 = force_reg (SImode, hi_op2);
    rtx ccreg = gen_rtx_REG (mode, CC_REGNUM);
    if (CONST_INT_P (hi_op2))
!     emit_insn (gen_sub_cmpVsi3_borrow_imm (hi_result, hi_op1, hi_op2,
! 					   gen_rtx_LTU (SImode, ccreg,
! 							const0_rtx),
! 					   gen_rtx_LTU (DImode, ccreg,
! 							const0_rtx)));
!   else
!     emit_insn (gen_sub_cmpVsi3_borrow (hi_result, hi_op1, hi_op2,
  				       gen_rtx_LTU (SImode, ccreg, const0_rtx),
  				       gen_rtx_LTU (DImode, ccreg,
  						    const0_rtx)));
    arm_gen_unlikely_cbranch (NE, CC_Vmode, operands[3]);
  
    DONE;
***************
*** 1630,1644 ****
      hi_op2 = force_reg (SImode, hi_op2);
    rtx ccreg = gen_rtx_REG (mode, CC_REGNUM);
    if (CONST_INT_P (hi_op2))
!     emit_insn (gen_usubvsi3_borrow_imm (hi_result, hi_op1, hi_op2,
! 					GEN_INT (UINTVAL (hi_op2) & 0xffffffff),
  					gen_rtx_LTU (SImode, ccreg, const0_rtx),
  					gen_rtx_LTU (DImode, ccreg,
  						     const0_rtx)));
-   else
-     emit_insn (gen_usubvsi3_borrow (hi_result, hi_op1, hi_op2,
- 				    gen_rtx_LTU (SImode, ccreg, const0_rtx),
- 				    gen_rtx_LTU (DImode, ccreg, const0_rtx)));
    arm_gen_unlikely_cbranch (LTU, CC_Bmode, operands[3]);
  
    DONE;
--- 1632,1649 ----
      hi_op2 = force_reg (SImode, hi_op2);
    rtx ccreg = gen_rtx_REG (mode, CC_REGNUM);
    if (CONST_INT_P (hi_op2))
!     emit_insn (gen_usub_cmpVsi3_borrow_imm (hi_result, hi_op1, hi_op2,
! 					    GEN_INT (UINTVAL (hi_op2)
! 						     & 0xffffffff),
! 					    gen_rtx_LTU (SImode, ccreg,
! 							 const0_rtx),
! 					    gen_rtx_LTU (DImode, ccreg,
! 							 const0_rtx)));
!   else
!     emit_insn (gen_usub_cmpVsi3_borrow (hi_result, hi_op1, hi_op2,
  					gen_rtx_LTU (SImode, ccreg, const0_rtx),
  					gen_rtx_LTU (DImode, ccreg,
  						     const0_rtx)));
    arm_gen_unlikely_cbranch (LTU, CC_Bmode, operands[3]);
  
    DONE;
***************
*** 1657,1663 ****
     (set_attr "type" "alus_sreg")]
  )
  
! (define_insn "subvsi3"
    [(set (reg:CC_V CC_REGNUM)
  	(compare:CC_V
  	 (minus:DI
--- 1662,1668 ----
     (set_attr "type" "alus_sreg")]
  )
  
! (define_insn "sub_cmpVsi3"
    [(set (reg:CC_V CC_REGNUM)
  	(compare:CC_V
  	 (minus:DI
***************
*** 1674,1680 ****
     (set_attr "type" "alus_sreg")]
  )
  
! (define_insn "subvsi3_imm1"
    [(set (reg:CC_V CC_REGNUM)
  	(compare:CC_V
  	 (minus:DI
--- 1679,1685 ----
     (set_attr "type" "alus_sreg")]
  )
  
! (define_insn "sub_cmpVsi3_imm1"
    [(set (reg:CC_V CC_REGNUM)
  	(compare:CC_V
  	 (minus:DI
***************
*** 2131,2137 ****
     (set_attr "type" "alus_imm")]
  )
  
! (define_insn "usubvsi3_borrow"
    [(set (reg:CC_B CC_REGNUM)
  	(compare:CC_B
  	 (zero_extend:DI (match_operand:SI 1 "s_register_operand" "0,r"))
--- 2136,2142 ----
     (set_attr "type" "alus_imm")]
  )
  
! (define_insn "usub_cmpVsi3_borrow"
    [(set (reg:CC_B CC_REGNUM)
  	(compare:CC_B
  	 (zero_extend:DI (match_operand:SI 1 "s_register_operand" "0,r"))
***************
*** 2149,2155 ****
     (set_attr "length" "2,4")]
  )
  
! (define_insn "usubvsi3_borrow_imm"
    [(set (reg:CC_B CC_REGNUM)
  	(compare:CC_B
  	 (zero_extend:DI (match_operand:SI 1 "s_register_operand" "r,r"))
--- 2154,2160 ----
     (set_attr "length" "2,4")]
  )
  
! (define_insn "usub_cmpVsi3_borrow_imm"
    [(set (reg:CC_B CC_REGNUM)
  	(compare:CC_B
  	 (zero_extend:DI (match_operand:SI 1 "s_register_operand" "r,r"))
***************
*** 2168,2174 ****
     (set_attr "type" "alus_imm")]
  )
  
! (define_insn "subvsi3_borrow"
    [(set (reg:CC_V CC_REGNUM)
  	(compare:CC_V
  	 (minus:DI
--- 2173,2179 ----
     (set_attr "type" "alus_imm")]
  )
  
! (define_insn "sub_cmpVsi3_borrow"
    [(set (reg:CC_V CC_REGNUM)
  	(compare:CC_V
  	 (minus:DI
***************
*** 2189,2195 ****
     (set_attr "length" "2,4")]
  )
  
! (define_insn "subvsi3_borrow_imm"
    [(set (reg:CC_V CC_REGNUM)
  	(compare:CC_V
  	 (minus:DI
--- 2194,2200 ----
     (set_attr "length" "2,4")]
  )
  
! (define_insn "sub_cmpVsi3_borrow_imm"
    [(set (reg:CC_V CC_REGNUM)
  	(compare:CC_V
  	 (minus:DI
***************
*** 4606,4615 ****
        if (arm_reg_or_long_shift_imm (operands[2], GET_MODE (operands[2]))
  	  && (REG_P (operands[2]) || INTVAL(operands[2]) != 32))
          {
! 	  if (!reg_overlap_mentioned_p(operands[0], operands[1]))
! 	    emit_insn (gen_movdi (operands[0], operands[1]));
! 
! 	  emit_insn (gen_thumb2_lsll (operands[0], operands[2]));
  	  DONE;
  	}
      }
--- 4611,4618 ----
        if (arm_reg_or_long_shift_imm (operands[2], GET_MODE (operands[2]))
  	  && (REG_P (operands[2]) || INTVAL(operands[2]) != 32))
          {
! 	  operands[2] = convert_modes (QImode, SImode, operands[2], 0);
! 	  emit_insn (gen_mve_lsll (operands[0], operands[1], operands[2]));
  	  DONE;
  	}
      }
***************
*** 4645,4654 ****
    if (TARGET_HAVE_MVE && !BYTES_BIG_ENDIAN
        && arm_reg_or_long_shift_imm (operands[2], GET_MODE (operands[2])))
      {
!       if (!reg_overlap_mentioned_p(operands[0], operands[1]))
! 	emit_insn (gen_movdi (operands[0], operands[1]));
! 
!       emit_insn (gen_thumb2_asrl (operands[0], operands[2]));
        DONE;
      }
  
--- 4648,4655 ----
    if (TARGET_HAVE_MVE && !BYTES_BIG_ENDIAN
        && arm_reg_or_long_shift_imm (operands[2], GET_MODE (operands[2])))
      {
!       operands[2] = convert_modes (QImode, SImode, operands[2], 0);
!       emit_insn (gen_mve_asrl (operands[0], operands[1], operands[2]));
        DONE;
      }
  
***************
*** 4680,4689 ****
    if (TARGET_HAVE_MVE && !BYTES_BIG_ENDIAN
      && long_shift_imm (operands[2], GET_MODE (operands[2])))
      {
!       if (!reg_overlap_mentioned_p(operands[0], operands[1]))
!         emit_insn (gen_movdi (operands[0], operands[1]));
! 
!       emit_insn (gen_thumb2_lsrl (operands[0], operands[2]));
        DONE;
      }
  
--- 4681,4687 ----
    if (TARGET_HAVE_MVE && !BYTES_BIG_ENDIAN
      && long_shift_imm (operands[2], GET_MODE (operands[2])))
      {
!       emit_insn (gen_mve_lsrl (operands[0], operands[1], operands[2]));
        DONE;
      }
  
***************
*** 8369,8375 ****
  
  (define_expand "movhfcc"
    [(set (match_operand:HF 0 "s_register_operand")
! 	(if_then_else:HF (match_operand 1 "arm_cond_move_operator")
  			 (match_operand:HF 2 "s_register_operand")
  			 (match_operand:HF 3 "s_register_operand")))]
    "TARGET_VFP_FP16INST"
--- 8367,8373 ----
  
  (define_expand "movhfcc"
    [(set (match_operand:HF 0 "s_register_operand")
! 	(if_then_else:HF (match_operand 1 "expandable_comparison_operator")
  			 (match_operand:HF 2 "s_register_operand")
  			 (match_operand:HF 3 "s_register_operand")))]
    "TARGET_VFP_FP16INST"
***************
*** 8391,8397 ****
  
  (define_expand "movsfcc"
    [(set (match_operand:SF 0 "s_register_operand")
! 	(if_then_else:SF (match_operand 1 "arm_cond_move_operator")
  			 (match_operand:SF 2 "s_register_operand")
  			 (match_operand:SF 3 "s_register_operand")))]
    "TARGET_32BIT && TARGET_HARD_FLOAT"
--- 8389,8395 ----
  
  (define_expand "movsfcc"
    [(set (match_operand:SF 0 "s_register_operand")
! 	(if_then_else:SF (match_operand 1 "expandable_comparison_operator")
  			 (match_operand:SF 2 "s_register_operand")
  			 (match_operand:SF 3 "s_register_operand")))]
    "TARGET_32BIT && TARGET_HARD_FLOAT"
***************
*** 8400,8408 ****
      enum rtx_code code = GET_CODE (operands[1]);
      rtx ccreg;
  
      if (!arm_validize_comparison (&operands[1], &XEXP (operands[1], 0),
         				  &XEXP (operands[1], 1)))
!        FAIL;
  
      code = GET_CODE (operands[1]);
      ccreg = arm_gen_compare_reg (code, XEXP (operands[1], 0),
--- 8398,8410 ----
      enum rtx_code code = GET_CODE (operands[1]);
      rtx ccreg;
  
+     /* Perverse combinations of architecture options can't be supported
+        as they need conditional instructions.  */
+     if (TARGET_THUMB2 && arm_restrict_it && !TARGET_VFP5)
+       FAIL;
      if (!arm_validize_comparison (&operands[1], &XEXP (operands[1], 0),
         				  &XEXP (operands[1], 1)))
!       FAIL;
  
      code = GET_CODE (operands[1]);
      ccreg = arm_gen_compare_reg (code, XEXP (operands[1], 0),
***************
*** 8413,8419 ****
  
  (define_expand "movdfcc"
    [(set (match_operand:DF 0 "s_register_operand")
! 	(if_then_else:DF (match_operand 1 "arm_cond_move_operator")
  			 (match_operand:DF 2 "s_register_operand")
  			 (match_operand:DF 3 "s_register_operand")))]
    "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
--- 8415,8421 ----
  
  (define_expand "movdfcc"
    [(set (match_operand:DF 0 "s_register_operand")
! 	(if_then_else:DF (match_operand 1 "expandable_comparison_operator")
  			 (match_operand:DF 2 "s_register_operand")
  			 (match_operand:DF 3 "s_register_operand")))]
    "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
***************
*** 8422,8430 ****
      enum rtx_code code = GET_CODE (operands[1]);
      rtx ccreg;
  
      if (!arm_validize_comparison (&operands[1], &XEXP (operands[1], 0), 
         				  &XEXP (operands[1], 1)))
!        FAIL;
      code = GET_CODE (operands[1]);
      ccreg = arm_gen_compare_reg (code, XEXP (operands[1], 0),
  				 XEXP (operands[1], 1), NULL_RTX);
--- 8424,8436 ----
      enum rtx_code code = GET_CODE (operands[1]);
      rtx ccreg;
  
+     /* Perverse combinations of architecture options can't be supported
+        as they need conditional instructions.  */
+     if (TARGET_THUMB2 && arm_restrict_it && !TARGET_VFP5)
+       FAIL;
      if (!arm_validize_comparison (&operands[1], &XEXP (operands[1], 0), 
         				  &XEXP (operands[1], 1)))
!       FAIL;
      code = GET_CODE (operands[1]);
      ccreg = arm_gen_compare_reg (code, XEXP (operands[1], 0),
  				 XEXP (operands[1], 1), NULL_RTX);
***************
*** 10145,10150 ****
--- 10151,10157 ----
     (set_attr "type" "multiple")]
  )
  
+ ;; (pred4 && pred5) != 0
  (define_insn "*cmp_ite0"
    [(set (match_operand 6 "dominant_cc_register" "")
  	(compare
***************
*** 10161,10167 ****
  	        "lPy,rI,L,lPy,lPy,rI,rI,L,L")])
  	  (const_int 0))
  	 (const_int 0)))]
!   "TARGET_32BIT"
    "*
    {
      static const char * const cmp1[NUM_OF_COND_CMP][2] =
--- 10168,10178 ----
  	        "lPy,rI,L,lPy,lPy,rI,rI,L,L")])
  	  (const_int 0))
  	 (const_int 0)))]
!   "TARGET_32BIT
!    && GET_MODE (operands[6]) != CCmode
!    && (GET_MODE (operands[6])
!        == arm_select_dominance_cc_mode (operands[4], operands[5],
! 					DOM_CC_X_AND_Y))"
    "*
    {
      static const char * const cmp1[NUM_OF_COND_CMP][2] =
***************
*** 10228,10233 ****
--- 10239,10245 ----
             (const_int 10))])]
  )
  
+ ;; (!pred4 || pred5) != 0
  (define_insn "*cmp_ite1"
    [(set (match_operand 6 "dominant_cc_register" "")
  	(compare
***************
*** 10244,10250 ****
  	        "lPy,rI,L,lPy,lPy,rI,rI,L,L")])
  	  (const_int 1))
  	 (const_int 0)))]
!   "TARGET_32BIT"
    "*
    {
      static const char * const cmp1[NUM_OF_COND_CMP][2] =
--- 10256,10266 ----
  	        "lPy,rI,L,lPy,lPy,rI,rI,L,L")])
  	  (const_int 1))
  	 (const_int 0)))]
!   "TARGET_32BIT
!    && GET_MODE (operands[6]) != CCmode
!    && (GET_MODE (operands[6])
!        == arm_select_dominance_cc_mode (operands[4], operands[5],
! 					DOM_CC_NX_OR_Y))"
    "*
    {
      static const char * const cmp1[NUM_OF_COND_CMP][2] =
***************
*** 10327,10333 ****
  	    (match_operand:SI 3 "arm_add_operand"
  	        "lPy,rI,L,lPy,lPy,r,rI,rI,L,L")]))
  	 (const_int 0)))]
!   "TARGET_32BIT"
    "*
    {
      static const char *const cmp1[NUM_OF_COND_CMP][2] =
--- 10343,10353 ----
  	    (match_operand:SI 3 "arm_add_operand"
  	        "lPy,rI,L,lPy,lPy,r,rI,rI,L,L")]))
  	 (const_int 0)))]
!   "TARGET_32BIT
!    && GET_MODE (operands[6]) != CCmode
!    && (GET_MODE (operands[6])
!        == arm_select_dominance_cc_mode (operands[4], operands[5],
! 					DOM_CC_X_AND_Y))"
    "*
    {
      static const char *const cmp1[NUM_OF_COND_CMP][2] =
***************
*** 10412,10418 ****
  	    (match_operand:SI 3 "arm_add_operand"
  	        "lPy,rI,L,lPy,lPy,r,rI,rI,L,L")]))
  	 (const_int 0)))]
!   "TARGET_32BIT"
    "*
    {
      static const char *const cmp1[NUM_OF_COND_CMP][2] =
--- 10432,10442 ----
  	    (match_operand:SI 3 "arm_add_operand"
  	        "lPy,rI,L,lPy,lPy,r,rI,rI,L,L")]))
  	 (const_int 0)))]
!   "TARGET_32BIT
!    && GET_MODE (operands[6]) != CCmode
!    && (GET_MODE (operands[6])
!        == arm_select_dominance_cc_mode (operands[4], operands[5],
! 					DOM_CC_X_OR_Y))"
    "*
    {
      static const char *const cmp1[NUM_OF_COND_CMP][2] =
***************
*** 13044,13050 ****
    "arm_coproc_builtin_available (VUNSPEC_<MCRR>)"
  {
    arm_const_bounds (operands[0], 0, 16);
!   arm_const_bounds (operands[1], 0, 8);
    arm_const_bounds (operands[3], 0, (1 << 5));
    return "<mcrr>\\tp%c0, %1, %Q2, %R2, CR%c3";
  }
--- 13068,13074 ----
    "arm_coproc_builtin_available (VUNSPEC_<MCRR>)"
  {
    arm_const_bounds (operands[0], 0, 16);
!   arm_const_bounds (operands[1], 0, 16);
    arm_const_bounds (operands[3], 0, (1 << 5));
    return "<mcrr>\\tp%c0, %1, %Q2, %R2, CR%c3";
  }
***************
*** 13059,13065 ****
    "arm_coproc_builtin_available (VUNSPEC_<MRRC>)"
  {
    arm_const_bounds (operands[1], 0, 16);
!   arm_const_bounds (operands[2], 0, 8);
    arm_const_bounds (operands[3], 0, (1 << 5));
    return "<mrrc>\\tp%c1, %2, %Q0, %R0, CR%c3";
  }
--- 13083,13089 ----
    "arm_coproc_builtin_available (VUNSPEC_<MRRC>)"
  {
    arm_const_bounds (operands[1], 0, 16);
!   arm_const_bounds (operands[2], 0, 16);
    arm_const_bounds (operands[3], 0, (1 << 5));
    return "<mrrc>\\tp%c1, %2, %Q0, %R0, CR%c3";
  }
diff -Nrcpad gcc-15.2.0/gcc/config/arm/arm_mve.h gcc-15.3.0/gcc/config/arm/arm_mve.h
*** gcc-15.2.0/gcc/config/arm/arm_mve.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/arm/arm_mve.h	Fri Jun 12 06:09:06 2026
***************
*** 95,102 ****
  #define uqshll(__p0, __p1) __arm_uqshll(__p0, __p1)
  #define urshr(__p0, __p1) __arm_urshr(__p0, __p1)
  #define urshrl(__p0, __p1) __arm_urshrl(__p0, __p1)
- #define lsll(__p0, __p1) __arm_lsll(__p0, __p1)
- #define asrl(__p0, __p1) __arm_asrl(__p0, __p1)
  #endif
  
  /* For big-endian, GCC's vector indices are reversed within each 64 bits
--- 95,100 ----
*************** __arm_vgetq_lane_u64 (uint64x2_t __a, co
*** 254,273 ****
    return __a[__ARM_LANEQ(__a,__idx)];
  }
  
- __extension__ extern __inline  uint64_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_lsll (uint64_t value, int32_t shift)
- {
-   return (value << shift);
- }
- 
- __extension__ extern __inline int64_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_asrl (int64_t value, int32_t shift)
- {
-   return (value >> shift);
- }
- 
  __extension__ extern __inline uint64_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_uqrshll (uint64_t value, int32_t shift)
--- 252,257 ----
diff -Nrcpad gcc-15.2.0/gcc/config/arm/constraints.md gcc-15.3.0/gcc/config/arm/constraints.md
*** gcc-15.2.0/gcc/config/arm/constraints.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/arm/constraints.md	Fri Jun 12 06:09:06 2026
***************
*** 34,42 ****
  ;; in ARM/Thumb-2 state: Da, Db, Dc, Dd, Dn, DN, Dm, Dl, DL, Do, Dv, Dy, Di,
  ;;			 Dj, Ds, Dt, Dp, Dz, Tu, Te
  ;; in Thumb-1 state: Pa, Pb, Pc, Pd, Pe
! ;; in Thumb-2 state: Ha, Pj, PJ, Ps, Pt, Pu, Pv, Pw, Px, Py, Pz, Rd, Rf, Rb, Ra,
! ;;		     Rg, Ri
! ;; in all states: Pg
  
  ;; The following memory constraints have been used:
  ;; in ARM/Thumb-2 state: Uh, Ut, Uv, Uy, Un, Um, Us, Uo, Up, Uf, Ux, Ul, Uz
--- 34,41 ----
  ;; in ARM/Thumb-2 state: Da, Db, Dc, Dd, Dn, DN, Dm, Dl, DL, Do, Dv, Dy, Di,
  ;;			 Dj, Ds, Dt, Dp, Dz, Tu, Te
  ;; in Thumb-1 state: Pa, Pb, Pc, Pd, Pe
! ;; in Thumb-2 state: Ha, Pg, Ph, Pj, PJ, Ps, Pt, Pu, Pv, Pw, Px, Py, Pz, Ra,
! ;;		     Rb, Rd, Rf, Rg, Ri
  
  ;; The following memory constraints have been used:
  ;; in ARM/Thumb-2 state: Uh, Ut, Uv, Uy, Un, Um, Us, Uo, Up, Uf, Ux, Ul, Uz
***************
*** 244,249 ****
--- 243,253 ----
    (and (match_code "const_int")
         (match_test "TARGET_THUMB2 && ival >= 1 && ival <= 32")))
  
+ (define_constraint "Ph"
+   "@internal In Thumb-2 state a constant in range 32 to 255"
+   (and (match_code "const_int")
+        (match_test "TARGET_THUMB2 && ival >= 32 && ival <= 255")))
+ 
  (define_constraint "Ps"
    "@internal In Thumb-2 state a constant in the range -255 to +255"
    (and (match_code "const_int")
***************
*** 471,482 ****
  (define_memory_constraint "Uj"
   "@internal
    In ARM/Thumb-2 state a VFP load/store address that supports writeback
!   for Neon but not for MVE"
   (and (match_code "mem")
!       (match_test "TARGET_32BIT")
!       (match_test "TARGET_HAVE_MVE
!                    ? arm_coproc_mem_operand_no_writeback (op)
!                    : neon_vector_mem_operand (op, 2, true)")))
  
  (define_memory_constraint "Uy"
   "@internal
--- 475,486 ----
  (define_memory_constraint "Uj"
   "@internal
    In ARM/Thumb-2 state a VFP load/store address that supports writeback
!   for Neon but not for MVE or VFP_FP16INST"
   (and (match_code "mem")
!       (match_test "TARGET_32BIT
! 		   && (arm_coproc_mem_operand_no_writeback (op)
! 		       || (TARGET_NEON_FP16
! 			   && neon_vector_mem_operand (op, 2, true)))")))
  
  (define_memory_constraint "Uy"
   "@internal
diff -Nrcpad gcc-15.2.0/gcc/config/arm/iterators.md gcc-15.3.0/gcc/config/arm/iterators.md
*** gcc-15.2.0/gcc/config/arm/iterators.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/arm/iterators.md	Fri Jun 12 06:09:06 2026
***************
*** 2064,2069 ****
--- 2064,2077 ----
  			     (V2QI "v2qi")])
  (define_mode_attr MVE_vctp [(V16BI "8") (V8BI "16") (V4BI "32") (V2QI "64")])
  
+ ;; Assembly modifier for a const_int operand to narrow it to a
+ ;; specific mode.  For vector modes this is the element size.
+ ;; Currently only supports SI and HI.
+ 
+ (define_mode_attr asm_const_size [(SI "") (HI "L")
+ 				  (V4SI "") (V2SI "")
+ 				  (V8HI "L") (V4HI "L")])
+ 
  ;;----------------------------------------------------------------------------
  ;; Code attributes
  ;;----------------------------------------------------------------------------
***************
*** 3022,3024 ****
--- 3030,3049 ----
  ;; Define iterators for VCMLA operations as MUL
  (define_int_iterator VCMUL_OP [UNSPEC_VCMUL
  			       UNSPEC_VCMUL_CONJ])
+ 
+ (define_int_attr VxCIQ_carry   [(VADCIQ_U "VADCIQ_U_carry")
+ 				(VADCIQ_S "VADCIQ_S_carry")
+ 				(VSBCIQ_U "VSBCIQ_U_carry")
+ 				(VSBCIQ_S "VSBCIQ_S_carry")])
+ (define_int_attr VxCIQ_M_carry [(VADCIQ_M_U "VADCIQ_M_U_carry")
+ 				(VADCIQ_M_S "VADCIQ_M_S_carry")
+ 				(VSBCIQ_M_U "VSBCIQ_M_U_carry")
+ 				(VSBCIQ_M_S "VSBCIQ_M_S_carry")])
+ (define_int_attr VxCQ_carry [(VADCQ_U "VADCQ_U_carry")
+ 			     (VADCQ_S "VADCQ_S_carry")
+ 			     (VSBCQ_U "VSBCQ_U_carry")
+ 			     (VSBCQ_S "VSBCQ_S_carry")])
+ (define_int_attr VxCQ_M_carry [(VADCQ_M_U "VADCQ_M_U_carry")
+ 			       (VADCQ_M_S "VADCQ_M_S_carry")
+ 			       (VSBCQ_M_U "VSBCQ_M_U_carry")
+ 			       (VSBCQ_M_S "VSBCQ_M_S_carry")])
diff -Nrcpad gcc-15.2.0/gcc/config/arm/mve.md gcc-15.3.0/gcc/config/arm/mve.md
*** gcc-15.2.0/gcc/config/arm/mve.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/arm/mve.md	Fri Jun 12 06:09:06 2026
***************
*** 417,423 ****
  	 VMVNQ_N))
    ]
    "TARGET_HAVE_MVE"
!   "<mve_insn>.i%#<V_sz_elem>\t%q0, %1"
   [(set (attr "mve_unpredicated_insn") (symbol_ref "CODE_FOR_mve_<mve_insn>q_n_<supf><mode>"))
    (set_attr "type" "mve_move")
  ])
--- 417,423 ----
  	 VMVNQ_N))
    ]
    "TARGET_HAVE_MVE"
!   "<mve_insn>.i%#<V_sz_elem>\t%q0, %<asm_const_size>1"
   [(set (attr "mve_unpredicated_insn") (symbol_ref "CODE_FOR_mve_<mve_insn>q_n_<supf><mode>"))
    (set_attr "type" "mve_move")
  ])
***************
*** 1186,1193 ****
  (define_insn "@mve_vbicq_f<mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(and:MVE_0 (not:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w"))
! 			      (match_operand:MVE_0 2 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    "vbic\t%q0, %q1, %q2"
--- 1186,1193 ----
  (define_insn "@mve_vbicq_f<mode>"
    [
     (set (match_operand:MVE_0 0 "s_register_operand" "=w")
! 	(and:MVE_0 (not:MVE_0 (match_operand:MVE_0 2 "s_register_operand" "w"))
! 			      (match_operand:MVE_0 1 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    "vbic\t%q0, %q1, %q2"
***************
*** 1444,1450 ****
  	 MVE_INT_N_BINARY_LOGIC))
    ]
    "TARGET_HAVE_MVE"
!   "<mve_insn>.i%#<V_sz_elem>	%q0, %2"
   [(set (attr "mve_unpredicated_insn") (symbol_ref "CODE_FOR_mve_<mve_insn>q_n_<supf><mode>"))
    (set_attr "type" "mve_move")
  ])
--- 1444,1450 ----
  	 MVE_INT_N_BINARY_LOGIC))
    ]
    "TARGET_HAVE_MVE"
!   "<mve_insn>.i%#<V_sz_elem>	%q0, %<asm_const_size>2"
   [(set (attr "mve_unpredicated_insn") (symbol_ref "CODE_FOR_mve_<mve_insn>q_n_<supf><mode>"))
    (set_attr "type" "mve_move")
  ])
***************
*** 2335,2341 ****
  	 VMVNQ_M_N))
    ]
    "TARGET_HAVE_MVE"
!   "vpst\;<mve_insn>t.i%#<V_sz_elem>\t%q0, %2"
   [(set (attr "mve_unpredicated_insn") (symbol_ref "CODE_FOR_mve_<mve_insn>q_n_<supf><mode>"))
    (set_attr "type" "mve_move")
     (set_attr "length""8")])
--- 2335,2341 ----
  	 VMVNQ_M_N))
    ]
    "TARGET_HAVE_MVE"
!   "vpst\;<mve_insn>t.i%#<V_sz_elem>\t%q0, %<asm_const_size>2"
   [(set (attr "mve_unpredicated_insn") (symbol_ref "CODE_FOR_mve_<mve_insn>q_n_<supf><mode>"))
    (set_attr "type" "mve_move")
     (set_attr "length""8")])
***************
*** 2353,2359 ****
  	 MVE_INT_M_N_BINARY_LOGIC))
    ]
    "TARGET_HAVE_MVE"
!   "vpst\;<mve_insn>t.i%#<V_sz_elem>\t%q0, %2"
   [(set (attr "mve_unpredicated_insn") (symbol_ref "CODE_FOR_mve_<mve_insn>q_n_<supf><mode>"))
    (set_attr "type" "mve_move")
     (set_attr "length""8")])
--- 2353,2359 ----
  	 MVE_INT_M_N_BINARY_LOGIC))
    ]
    "TARGET_HAVE_MVE"
!   "vpst\;<mve_insn>t.i%#<V_sz_elem>\t%q0, %<asm_const_size>2"
   [(set (attr "mve_unpredicated_insn") (symbol_ref "CODE_FOR_mve_<mve_insn>q_n_<supf><mode>"))
    (set_attr "type" "mve_move")
     (set_attr "length""8")])
***************
*** 3965,3978 ****
  
  (define_insn "get_fpscr_nzcvqc"
   [(set (match_operand:SI 0 "register_operand" "=r")
!    (unspec_volatile:SI [(reg:SI VFPCC_REGNUM)] UNSPEC_GET_FPSCR_NZCVQC))]
   "TARGET_HAVE_MVE"
   "vmrs\\t%0, FPSCR_nzcvqc"
   [(set_attr "type" "mve_move")])
  
  (define_insn "set_fpscr_nzcvqc"
   [(set (reg:SI VFPCC_REGNUM)
!    (unspec_volatile:SI [(match_operand:SI 0 "register_operand" "r")]
      VUNSPEC_SET_FPSCR_NZCVQC))]
   "TARGET_HAVE_MVE"
   "vmsr\\tFPSCR_nzcvqc, %0"
--- 3965,3978 ----
  
  (define_insn "get_fpscr_nzcvqc"
   [(set (match_operand:SI 0 "register_operand" "=r")
!    (unspec:SI [(reg:SI VFPCC_REGNUM)] UNSPEC_GET_FPSCR_NZCVQC))]
   "TARGET_HAVE_MVE"
   "vmrs\\t%0, FPSCR_nzcvqc"
   [(set_attr "type" "mve_move")])
  
  (define_insn "set_fpscr_nzcvqc"
   [(set (reg:SI VFPCC_REGNUM)
!    (unspec:SI [(match_operand:SI 0 "register_operand" "r")]
      VUNSPEC_SET_FPSCR_NZCVQC))]
   "TARGET_HAVE_MVE"
   "vmsr\\tFPSCR_nzcvqc, %0"
***************
*** 3988,3995 ****
  		      (match_operand:V4SI 2 "s_register_operand" "w")]
  	 VxCIQ))
     (set (reg:SI VFPCC_REGNUM)
! 	(unspec:SI [(const_int 0)]
! 	 VxCIQ))
    ]
    "TARGET_HAVE_MVE"
    "<mve_insn>.i32\t%q0, %q1, %q2"
--- 3988,3996 ----
  		      (match_operand:V4SI 2 "s_register_operand" "w")]
  	 VxCIQ))
     (set (reg:SI VFPCC_REGNUM)
! 	(unspec:SI [(match_dup 1)
! 		    (match_dup 2)]
! 	 <VxCIQ_carry>))
    ]
    "TARGET_HAVE_MVE"
    "<mve_insn>.i32\t%q0, %q1, %q2"
***************
*** 4009,4016 ****
  		      (match_operand:V4BI 4 "vpr_register_operand" "Up")]
  	 VxCIQ_M))
     (set (reg:SI VFPCC_REGNUM)
! 	(unspec:SI [(const_int 0)]
! 	 VxCIQ_M))
    ]
    "TARGET_HAVE_MVE"
    "vpst\;<mve_insn>t.i32\t%q0, %q2, %q3"
--- 4010,4020 ----
  		      (match_operand:V4BI 4 "vpr_register_operand" "Up")]
  	 VxCIQ_M))
     (set (reg:SI VFPCC_REGNUM)
!     (unspec:SI [(match_dup 1)
! 		(match_dup 2)
! 		(match_dup 3)
! 		(match_dup 4)]
! 	 <VxCIQ_M_carry>))
    ]
    "TARGET_HAVE_MVE"
    "vpst\;<mve_insn>t.i32\t%q0, %q2, %q3"
***************
*** 4025,4035 ****
  (define_insn "@mve_<mve_insn>q_<supf>v4si"
    [(set (match_operand:V4SI 0 "s_register_operand" "=w")
  	(unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w")
! 		       (match_operand:V4SI 2 "s_register_operand" "w")]
  	 VxCQ))
     (set (reg:SI VFPCC_REGNUM)
! 	(unspec:SI [(reg:SI VFPCC_REGNUM)]
! 	 VxCQ))
    ]
    "TARGET_HAVE_MVE"
    "<mve_insn>.i32\t%q0, %q1, %q2"
--- 4029,4042 ----
  (define_insn "@mve_<mve_insn>q_<supf>v4si"
    [(set (match_operand:V4SI 0 "s_register_operand" "=w")
  	(unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w")
! 		      (match_operand:V4SI 2 "s_register_operand" "w")
! 		      (reg:SI VFPCC_REGNUM)]
  	 VxCQ))
     (set (reg:SI VFPCC_REGNUM)
!     (unspec:SI [(match_dup 1)
! 		(match_dup 2)
! 		(reg:SI VFPCC_REGNUM)]
! 	 <VxCQ_carry>))
    ]
    "TARGET_HAVE_MVE"
    "<mve_insn>.i32\t%q0, %q1, %q2"
***************
*** 4047,4057 ****
  	(unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "0")
  		      (match_operand:V4SI 2 "s_register_operand" "w")
  		      (match_operand:V4SI 3 "s_register_operand" "w")
! 		      (match_operand:V4BI 4 "vpr_register_operand" "Up")]
  	 VxCQ_M))
     (set (reg:SI VFPCC_REGNUM)
! 	(unspec:SI [(reg:SI VFPCC_REGNUM)]
! 	 VxCQ_M))
    ]
    "TARGET_HAVE_MVE"
    "vpst\;<mve_insn>t.i32\t%q0, %q2, %q3"
--- 4054,4069 ----
  	(unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "0")
  		      (match_operand:V4SI 2 "s_register_operand" "w")
  		      (match_operand:V4SI 3 "s_register_operand" "w")
! 		      (match_operand:V4BI 4 "vpr_register_operand" "Up")
! 		      (reg:SI VFPCC_REGNUM)]
  	 VxCQ_M))
     (set (reg:SI VFPCC_REGNUM)
!     (unspec:SI [(match_dup 1)
! 		(match_dup 2)
! 		(match_dup 3)
! 		(match_dup 4)
! 		(reg:SI VFPCC_REGNUM)]
! 	 <VxCQ_M_carry>))
    ]
    "TARGET_HAVE_MVE"
    "vpst\;<mve_insn>t.i32\t%q0, %q2, %q3"
***************
*** 4702,4704 ****
--- 4714,4928 ----
    "TARGET_HAVE_MVE"
    "dlstp.<dlstp_elemsize>\t%|lr, %0"
    [(set_attr "type" "mve_misc")])
+ 
+ 
+ ;;
+ ;; Scalar shifts
+ ;;
+ ;; immediate shift amounts have to be in the [1..32] range
+ ;;
+ ;; shift amounts stored in a register can be negative, in which case
+ ;; the shift is reversed (asrl, lsll only)
+ ;; since RTL expects shift amounts to be unsigned, make sure the
+ ;; negative case is handled, in case simplify_rtx could optimize:
+ ;; (set (reg:SI 1) (const_int -5))
+ ;; (set (reg:DI 2) (ashift:DI (reg:DI 3) (reg:SI 1)))
+ ;; into:
+ ;; (set (reg:DI 2) (ashift:DI (reg:DI 3) (const_int -5)))
+ 
+ ;; General pattern for asrl
+ (define_expand "mve_asrl"
+   [(set (match_operand:DI 0 "arm_general_register_operand" "")
+ 	(ashiftrt:DI (match_operand:DI 1 "arm_general_register_operand" "")
+ 		     (match_operand:QI 2 "reg_or_int_operand" "")))]
+   "TARGET_HAVE_MVE"
+ {
+   rtx amount = operands[2];
+   if (CONST_INT_P (amount))
+     {
+       HOST_WIDE_INT ival = INTVAL (amount);
+ 
+       if (ival >= 0)
+ 	/* Right shift.  */
+ 	emit_insn (gen_mve_asrl_imm (operands[0], operands[1], amount));
+       else
+ 	/* Left shift.  */
+ 	emit_insn (gen_mve_lsll_imm (operands[0], operands[1],
+ 				     GEN_INT (-ival)));
+       DONE;
+     }
+ 
+   emit_insn (gen_mve_asrl_internal (operands[0], operands[1], operands[2]));
+   DONE;
+ })
+ 
+ ;; immediate shift amount
+ ;; we have to split the insn if the amount is not in the [1..32] range
+ (define_insn_and_split "mve_asrl_imm"
+   [(set (match_operand:DI 0 "arm_general_register_operand" "=r,r")
+ 	  (ashiftrt:DI (match_operand:DI 1 "arm_general_register_operand" "0,r")
+ 		       (match_operand:QI 2 "immediate_operand" "Pg,Ph")))]
+   "TARGET_HAVE_MVE"
+   "asrl%?\\t%Q0, %R0, %2"
+   "&& satisfies_constraint_Ph (operands[2])"
+   [(clobber (const_int 0))]
+   "
+   rtx amount = operands[2];
+   HOST_WIDE_INT ival = INTVAL (amount);
+ 
+   /* shift amount in [1..32] is already handled by the Pg constraint.  */
+ 
+   /* Shift by 0, it is just a move.  */
+   if (ival == 0)
+     {
+       emit_insn (gen_movdi (operands[0], operands[1]));
+       DONE;
+     }
+ 
+   /* ival < 0 should have already been handled by mve_asrl. */
+   gcc_assert (ival >= 32);
+ 
+   rtx in_hi = gen_highpart (SImode, operands[1]);
+   rtx out_lo = gen_lowpart (SImode, operands[0]);
+   rtx out_hi = gen_highpart (SImode, operands[0]);
+ 
+   if (ival == 32)
+     /* out_hi gets the sign bit
+        out_lo gets in_hi.  */
+     emit_insn (gen_movsi (out_lo, in_hi));
+   else
+     /* Shift amount above immediate range (ival > 32).
+        out_hi gets the sign bit
+        out_lo gets in_hi << (ival - 32) or << 31 if ival >= 64.
+        If ival >= 64, the result is either 0 or -1, depending on the
+        input sign.  */
+     emit_insn (gen_rtx_SET (out_lo,
+ 			    gen_rtx_fmt_ee (ASHIFTRT,
+ 					    SImode,
+ 					    in_hi,
+ 					    GEN_INT (MIN (ival - 32,
+ 							  31)))));
+ 
+   /* Copy sign bit, which is OK even if out_lo == in_hi.  */
+   emit_insn (gen_rtx_SET (out_hi,
+ 			  gen_rtx_fmt_ee (ASHIFTRT,
+ 					  SImode,
+ 					  in_hi,
+ 					  GEN_INT (31))));
+   DONE;
+   "
+   [(set_attr "predicable" "yes,yes")
+    (set_attr "length" "4,8")])
+ 
+ (define_insn "mve_asrl_internal"
+   [(set (match_operand:DI 0 "arm_general_register_operand" "=r")
+ 	(if_then_else:DI
+ 	  (ge:QI (match_operand:QI 2 "arm_general_register_operand" "r")
+ 		 (const_int 0))
+ 	  (ashiftrt:DI (match_operand:DI 1 "arm_general_register_operand" "0")
+ 		       (match_dup 2))
+ 	  (ashift:DI (match_dup 1) (neg:QI (match_dup 2)))))]
+   "TARGET_HAVE_MVE"
+   "asrl%?\\t%Q0, %R0, %2"
+   [(set_attr "predicable" "yes")])
+ 
+ ;; General pattern for lsll
+ (define_expand "mve_lsll"
+   [(set (match_operand:DI 0 "arm_general_register_operand" "")
+ 	(ashift:DI (match_operand:DI 1 "arm_general_register_operand" "")
+ 		   (match_operand:QI 2 "reg_or_int_operand" "")))]
+   "TARGET_HAVE_MVE"
+ {
+   rtx amount = operands[2];
+   if (CONST_INT_P (amount))
+     {
+       HOST_WIDE_INT ival = INTVAL (amount);
+ 
+       if (ival >= 0)
+ 	/* Left shift.  */
+ 	emit_insn (gen_mve_lsll_imm (operands[0], operands[1], amount));
+       else
+ 	/* Right shift.  */
+ 	emit_insn (gen_lshrdi3 (operands[0], operands[1],
+                                 GEN_INT (-ival)));
+       DONE;
+     }
+ 
+   emit_insn (gen_mve_lsll_internal (operands[0], operands[1], operands[2]));
+   DONE;
+ })
+ 
+ ;; immediate shift amount
+ ;; we have to split the insn if the amount is not in the [1..32] range
+ (define_insn_and_split "mve_lsll_imm"
+   [(set (match_operand:DI 0 "arm_general_register_operand" "=r,r")
+ 	  (ashift:DI (match_operand:DI 1 "arm_general_register_operand" "0,r")
+ 		     (match_operand:QI 2 "immediate_operand" "Pg,Ph")))]
+   "TARGET_HAVE_MVE"
+   "lsll%?\\t%Q0, %R0, %2"
+   "&& satisfies_constraint_Ph (operands[2])"
+   [(clobber (const_int 0))]
+   "
+   rtx amount = operands[2];
+   HOST_WIDE_INT ival = INTVAL (amount);
+ 
+   /* shift amount in [1..32] is already handled by the Pg constraint.  */
+ 
+   /* Shift by 0, it is just a move.  */
+   if (ival == 0)
+     {
+       emit_insn (gen_movdi (operands[0], operands[1]));
+       DONE;
+     }
+ 
+   /* Shift amount larger than input, result is 0.  */
+   if (ival >= 64)
+     {
+       emit_insn (gen_movdi (operands[0], const0_rtx));
+       DONE;
+     }
+ 
+   /* ival < 0 should have already been handled by mve_asrl. */
+   gcc_assert (ival >= 32);
+ 
+   rtx in_lo = gen_lowpart (SImode, operands[1]);
+   rtx out_lo = gen_lowpart (SImode, operands[0]);
+   rtx out_hi = gen_highpart (SImode, operands[0]);
+ 
+   if (ival == 32)
+     /* Shift by 32 is just a move.  */
+     emit_insn (gen_movsi (out_hi, in_lo));
+   else
+     /* Shift amount above immediate range: 32 < ival < 64.  */
+     emit_insn (gen_rtx_SET (out_hi,
+ 			    gen_rtx_fmt_ee (ASHIFT,
+ 					    SImode,
+ 					    in_lo,
+ 					    GEN_INT (ival - 32))));
+ 
+   /* Clear low 32 bits.  */
+   emit_insn (gen_rtx_SET (out_lo, const0_rtx));
+   DONE;
+   "
+   [(set_attr "predicable" "yes,yes")
+    (set_attr "length" "4,8")])
+ 
+ (define_insn "mve_lsll_internal"
+   [(set (match_operand:DI 0 "arm_general_register_operand" "=r")
+         (if_then_else:DI
+ 	  (ge:QI (match_operand:QI 2 "arm_general_register_operand" "r")
+ 		 (const_int 0))
+ 	  (ashift:DI (match_operand:DI 1 "arm_general_register_operand" "0")
+ 		     (match_dup 2))
+ 	  (lshiftrt:DI (match_dup 1) (neg:QI (match_dup 2)))))]
+   "TARGET_HAVE_MVE"
+   "lsll%?\\t%Q0, %R0, %2"
+   [(set_attr "predicable" "yes")])
+ 
+ (define_insn "mve_lsrl"
+   [(set (match_operand:DI 0 "arm_general_register_operand" "=r")
+ 	(lshiftrt:DI (match_operand:DI 1 "arm_general_register_operand" "0")
+ 		     (match_operand:SI 2 "long_shift_imm" "Pg")))]
+   "TARGET_HAVE_MVE"
+   "lsrl%?\\t%Q0, %R0, %2"
+   [(set_attr "predicable" "yes")])
diff -Nrcpad gcc-15.2.0/gcc/config/arm/neon.md gcc-15.3.0/gcc/config/arm/neon.md
*** gcc-15.2.0/gcc/config/arm/neon.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/arm/neon.md	Fri Jun 12 06:09:06 2026
***************
*** 872,882 ****
    [(set_attr "type" "neon_minmax<q>")]
  )
  
! (define_insn "*smin<mode>3_neon"
!   [(set (match_operand:VDQW 0 "s_register_operand" "=w")
! 	(smin:VDQW (match_operand:VDQW 1 "s_register_operand" "w")
! 		   (match_operand:VDQW 2 "s_register_operand" "w")))]
!   "TARGET_NEON"
    "vmin.<V_s_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
    [(set (attr "type")
        (if_then_else (match_test "<Is_float_mode>")
--- 872,882 ----
    [(set_attr "type" "neon_minmax<q>")]
  )
  
! (define_insn "*smin<VDQWH:mode>3_neon"
!   [(set (match_operand:VDQWH 0 "s_register_operand" "=w")
! 	(smin:VDQWH (match_operand:VDQWH 1 "s_register_operand" "w")
! 		    (match_operand:VDQWH 2 "s_register_operand" "w")))]
!   "ARM_HAVE_NEON_<MODE>_ARITH"
    "vmin.<V_s_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
    [(set (attr "type")
        (if_then_else (match_test "<Is_float_mode>")
***************
*** 884,894 ****
                      (const_string "neon_minmax<q>")))]
  )
  
! (define_insn "*smax<mode>3_neon"
!   [(set (match_operand:VDQW 0 "s_register_operand" "=w")
! 	(smax:VDQW (match_operand:VDQW 1 "s_register_operand" "w")
! 		   (match_operand:VDQW 2 "s_register_operand" "w")))]
!   "TARGET_NEON"
    "vmax.<V_s_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
    [(set (attr "type")
        (if_then_else (match_test "<Is_float_mode>")
--- 884,894 ----
                      (const_string "neon_minmax<q>")))]
  )
  
! (define_insn "*smax<VDQWH:mode>3_neon"
!   [(set (match_operand:VDQWH 0 "s_register_operand" "=w")
! 	(smax:VDQWH (match_operand:VDQWH 1 "s_register_operand" "w")
! 		    (match_operand:VDQWH 2 "s_register_operand" "w")))]
!   "ARM_HAVE_NEON_<MODE>_ARITH"
    "vmax.<V_s_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
    [(set (attr "type")
        (if_then_else (match_test "<Is_float_mode>")
diff -Nrcpad gcc-15.2.0/gcc/config/arm/thumb2.md gcc-15.3.0/gcc/config/arm/thumb2.md
*** gcc-15.2.0/gcc/config/arm/thumb2.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/arm/thumb2.md	Fri Jun 12 06:09:06 2026
***************
*** 1465,1483 ****
  	      (pc)))
     (clobber (reg:CC CC_REGNUM))]
    "TARGET_THUMB2"
!   "*
!   if (get_attr_length (insn) == 2)
!     return \"cbz\\t%0, %l1\";
!   else
!     return \"cmp\\t%0, #0\;beq\\t%l1\";
!   "
    [(set (attr "length")
          (if_then_else
  	    (and (ge (minus (match_dup 1) (pc)) (const_int 2))
  	         (le (minus (match_dup 1) (pc)) (const_int 128))
  	         (not (match_test "which_alternative")))
  	    (const_int 2)
! 	    (const_int 8)))
     (set_attr "type" "branch,multiple")]
  )
  
--- 1465,1488 ----
  	      (pc)))
     (clobber (reg:CC CC_REGNUM))]
    "TARGET_THUMB2"
!   {
!     int offset = (INSN_ADDRESSES (INSN_UID (operands[1]))
! 		  - INSN_ADDRESSES (INSN_UID (insn)));
!     if (get_attr_length (insn) == 2)
!       return "cbz\t%0, %l1";
!     else if (offset >= -1048564 && offset <= 1048576)
!       return "cmp\t%0, #0\;beq\t%l1";
!     else if (which_alternative == 0)
!       return "cbnz\t%0, %-LCB%=\;b\t%l1\n%-LCB%=:";
!     return "cmp\t%0, #0\;bne\t%-LCB%=\;b\t%l1\n%-LCB%=:";
!   }
    [(set (attr "length")
          (if_then_else
  	    (and (ge (minus (match_dup 1) (pc)) (const_int 2))
  	         (le (minus (match_dup 1) (pc)) (const_int 128))
  	         (not (match_test "which_alternative")))
  	    (const_int 2)
! 	    (const_int 10)))
     (set_attr "type" "branch,multiple")]
  )
  
***************
*** 1489,1507 ****
  	      (pc)))
     (clobber (reg:CC CC_REGNUM))]
    "TARGET_THUMB2"
!   "*
!   if (get_attr_length (insn) == 2)
!     return \"cbnz\\t%0, %l1\";
!   else
!     return \"cmp\\t%0, #0\;bne\\t%l1\";
!   "
    [(set (attr "length")
          (if_then_else
  	    (and (ge (minus (match_dup 1) (pc)) (const_int 2))
  	         (le (minus (match_dup 1) (pc)) (const_int 128))
  	         (not (match_test "which_alternative")))
  	    (const_int 2)
! 	    (const_int 8)))
     (set_attr "type" "branch,multiple")]
  )
  
--- 1494,1517 ----
  	      (pc)))
     (clobber (reg:CC CC_REGNUM))]
    "TARGET_THUMB2"
!   {
!     int offset = (INSN_ADDRESSES (INSN_UID (operands[1]))
! 		  - INSN_ADDRESSES (INSN_UID (insn)));
!     if (get_attr_length (insn) == 2)
!       return "cbnz\t%0, %l1";
!     else if (offset >= -1048564 && offset <= 1048576)
!       return "cmp\t%0, #0\;bne\t%l1";
!     else if (which_alternative == 0)
!       return "cbz\t%0, %-LCB%=\;b\t%l1\n%-LCB%=:";
!     return "cmp\t%0, #0\;beq\t%-LCB%=\;b\t%l1\n%-LCB%=:";
!   }
    [(set (attr "length")
          (if_then_else
  	    (and (ge (minus (match_dup 1) (pc)) (const_int 2))
  	         (le (minus (match_dup 1) (pc)) (const_int 128))
  	         (not (match_test "which_alternative")))
  	    (const_int 2)
! 	    (const_int 10)))
     (set_attr "type" "branch,multiple")]
  )
  
***************
*** 1734,1763 ****
    [(set_attr "predicable" "yes")]
  )
  
- (define_insn "thumb2_asrl"
-   [(set (match_operand:DI 0 "arm_general_register_operand" "+r")
- 	(ashiftrt:DI (match_dup 0)
- 		     (match_operand:SI 1 "arm_reg_or_long_shift_imm" "rPg")))]
-   "TARGET_HAVE_MVE"
-   "asrl%?\\t%Q0, %R0, %1"
-   [(set_attr "predicable" "yes")])
- 
- (define_insn "thumb2_lsll"
-   [(set (match_operand:DI 0 "arm_general_register_operand" "+r")
- 	(ashift:DI (match_dup 0)
- 		   (match_operand:SI 1 "arm_reg_or_long_shift_imm" "rPg")))]
-   "TARGET_HAVE_MVE"
-   "lsll%?\\t%Q0, %R0, %1"
-   [(set_attr "predicable" "yes")])
- 
- (define_insn "thumb2_lsrl"
-   [(set (match_operand:DI 0 "arm_general_register_operand" "+r")
- 	(lshiftrt:DI (match_dup 0)
- 		     (match_operand:SI 1 "long_shift_imm" "Pg")))]
-   "TARGET_HAVE_MVE"
-   "lsrl%?\\t%Q0, %R0, %1"
-   [(set_attr "predicable" "yes")])
- 
  ;; Originally expanded by 'doloop_end'.
  (define_insn "*doloop_end_internal"
    [(set (pc)
--- 1744,1749 ----
diff -Nrcpad gcc-15.2.0/gcc/config/arm/unspecs.md gcc-15.3.0/gcc/config/arm/unspecs.md
*** gcc-15.2.0/gcc/config/arm/unspecs.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/arm/unspecs.md	Fri Jun 12 06:09:06 2026
***************
*** 1189,1209 ****
--- 1189,1225 ----
    VLDRGBWBQ
    VLDRGBWBQ_Z
    VADCQ_U
+   VADCQ_U_carry
    VADCQ_M_U
+   VADCQ_M_U_carry
    VADCQ_S
+   VADCQ_S_carry
    VADCQ_M_S
+   VADCQ_M_S_carry
    VSBCIQ_U
+   VSBCIQ_U_carry
    VSBCIQ_S
+   VSBCIQ_S_carry
    VSBCIQ_M_U
+   VSBCIQ_M_U_carry
    VSBCIQ_M_S
+   VSBCIQ_M_S_carry
    VSBCQ_U
+   VSBCQ_U_carry
    VSBCQ_S
+   VSBCQ_S_carry
    VSBCQ_M_U
+   VSBCQ_M_U_carry
    VSBCQ_M_S
+   VSBCQ_M_S_carry
    VADCIQ_U
+   VADCIQ_U_carry
    VADCIQ_M_U
+   VADCIQ_M_U_carry
    VADCIQ_S
+   VADCIQ_S_carry
    VADCIQ_M_S
+   VADCIQ_M_S_carry
    VLD2Q
    VLD4Q
    VST2Q
diff -Nrcpad gcc-15.2.0/gcc/config/arm/vfp.md gcc-15.3.0/gcc/config/arm/vfp.md
*** gcc-15.2.0/gcc/config/arm/vfp.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/arm/vfp.md	Fri Jun 12 06:09:06 2026
***************
*** 424,435 ****
      case 6: /* S register from immediate.  */
        return \"vmov.f16\\t%0, %1\t%@ __<fporbf>\";
      case 7: /* S register from memory.  */
!       if (TARGET_HAVE_MVE)
  	return \"vldr.16\\t%0, %1\";
        else
  	return \"vld1.16\\t{%z0}, %A1\";
      case 8: /* Memory from S register.  */
!       if (TARGET_HAVE_MVE)
  	return \"vstr.16\\t%1, %0\";
        else
  	return \"vst1.16\\t{%z1}, %A0\";
--- 424,435 ----
      case 6: /* S register from immediate.  */
        return \"vmov.f16\\t%0, %1\t%@ __<fporbf>\";
      case 7: /* S register from memory.  */
!       if (!auto_inc_p (XEXP (operands[1], 0)))
  	return \"vldr.16\\t%0, %1\";
        else
  	return \"vld1.16\\t{%z0}, %A1\";
      case 8: /* Memory from S register.  */
!       if (!auto_inc_p (XEXP (operands[0], 0)))
  	return \"vstr.16\\t%1, %0\";
        else
  	return \"vst1.16\\t{%z1}, %A0\";
diff -Nrcpad gcc-15.2.0/gcc/config/avr/avr-fixed.md gcc-15.3.0/gcc/config/avr/avr-fixed.md
*** gcc-15.2.0/gcc/config/avr/avr-fixed.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/avr/avr-fixed.md	Fri Jun 12 06:09:06 2026
***************
*** 43,51 ****
     SQ USQ SA USA
     DQ UDQ DA UDA
     TA UTA
!    QI HI SI DI])
  
! ;; Same so that be can build cross products
  
  (define_mode_iterator FIXED_B
    [QQ UQQ
--- 43,51 ----
     SQ USQ SA USA
     DQ UDQ DA UDA
     TA UTA
!    QI HI PSI SI DI])
  
! ;; Same so that we can build cartesian products.
  
  (define_mode_iterator FIXED_B
    [QQ UQQ
***************
*** 53,59 ****
     SQ USQ SA USA
     DQ UDQ DA UDA
     TA UTA
!    QI HI SI DI])
  
  (define_insn_and_split "fract<FIXED_B:mode><FIXED_A:mode>2"
    [(set (match_operand:FIXED_A 0 "register_operand" "=r")
--- 53,59 ----
     SQ USQ SA USA
     DQ UDQ DA UDA
     TA UTA
!    QI HI PSI SI DI])
  
  (define_insn_and_split "fract<FIXED_B:mode><FIXED_A:mode>2"
    [(set (match_operand:FIXED_A 0 "register_operand" "=r")
diff -Nrcpad gcc-15.2.0/gcc/config/avr/avr-mcus.def gcc-15.3.0/gcc/config/avr/avr-mcus.def
*** gcc-15.2.0/gcc/config/avr/avr-mcus.def	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/avr/avr-mcus.def	Fri Jun 12 06:09:06 2026
*************** AVR_MCU ("avr16eb14",        ARCH_AVRXME
*** 411,422 ****
--- 411,434 ----
  AVR_MCU ("avr16eb20",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR16EB20__",   0x7800, 0x0, 0x4000, 0x8000)
  AVR_MCU ("avr16eb28",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR16EB28__",   0x7800, 0x0, 0x4000, 0x8000)
  AVR_MCU ("avr16eb32",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR16EB32__",   0x7800, 0x0, 0x4000, 0x8000)
+ AVR_MCU ("avr32eb14",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32EB14__",   0x7400, 0x0, 0x8000, 0x8000)
+ AVR_MCU ("avr32eb20",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32EB20__",   0x7400, 0x0, 0x8000, 0x8000)
+ AVR_MCU ("avr32eb28",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32EB28__",   0x7400, 0x0, 0x8000, 0x8000)
+ AVR_MCU ("avr32eb32",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32EB32__",   0x7400, 0x0, 0x8000, 0x8000)
  AVR_MCU ("avr16ea28",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR16EA28__",   0x7800, 0x0, 0x4000, 0x8000)
  AVR_MCU ("avr16ea32",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR16EA32__",   0x7800, 0x0, 0x4000, 0x8000)
  AVR_MCU ("avr16ea48",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR16EA48__",   0x7800, 0x0, 0x4000, 0x8000)
  AVR_MCU ("avr32ea28",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32EA28__",   0x7000, 0x0, 0x8000, 0x8000)
  AVR_MCU ("avr32ea32",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32EA32__",   0x7000, 0x0, 0x8000, 0x8000)
  AVR_MCU ("avr32ea48",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32EA48__",   0x7000, 0x0, 0x8000, 0x8000)
+ AVR_MCU ("avr16la14",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR16LA14__",   0x7800, 0x0, 0x4000, 0x8000)
+ AVR_MCU ("avr16la20",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR16LA20__",   0x7800, 0x0, 0x4000, 0x8000)
+ AVR_MCU ("avr16la28",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR16LA28__",   0x7800, 0x0, 0x4000, 0x8000)
+ AVR_MCU ("avr16la32",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR16LA32__",   0x7800, 0x0, 0x4000, 0x8000)
+ AVR_MCU ("avr32la14",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32LA14__",   0x7800, 0x0, 0x8000, 0x8000)
+ AVR_MCU ("avr32la20",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32LA20__",   0x7800, 0x0, 0x8000, 0x8000)
+ AVR_MCU ("avr32la28",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32LA28__",   0x7800, 0x0, 0x8000, 0x8000)
+ AVR_MCU ("avr32la32",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32LA32__",   0x7800, 0x0, 0x8000, 0x8000)
  AVR_MCU ("avr32sd20",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32SD20__",   0x7000, 0x0, 0x8000, 0x8000)
  AVR_MCU ("avr32sd28",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32SD28__",   0x7000, 0x0, 0x8000, 0x8000)
  AVR_MCU ("avr32sd32",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32SD32__",   0x7000, 0x0, 0x8000, 0x8000)
diff -Nrcpad gcc-15.2.0/gcc/config/avr/avr.cc gcc-15.3.0/gcc/config/avr/avr.cc
*** gcc-15.2.0/gcc/config/avr/avr.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/avr/avr.cc	Fri Jun 12 06:09:06 2026
*************** bool avr_need_clear_bss_p = false;
*** 230,238 ****
  bool avr_need_copy_data_p = false;
  bool avr_has_rodata_p = false;
  
- /* To track if we satisfy __call_main from AVR-LibC.  */
- bool avr_no_call_main_p = false;
- 
  /* Counts how often pass avr-fuse-add has been executed.  Is is kept in
     sync with cfun->machine->n_avr_fuse_add_executed and serves as an
     insn condition for shift insn splitters.  */
--- 230,235 ----
*************** avr_load_libgcc_p (rtx op)
*** 3293,3299 ****
  
    return (n_bytes > 2
  	  && !AVR_HAVE_LPMX
! 	  && avr_mem_flash_p (op));
  }
  
  
--- 3290,3297 ----
  
    return (n_bytes > 2
  	  && !AVR_HAVE_LPMX
! 	  && avr_mem_flash_p (op)
! 	  && MEM_ADDR_SPACE (op) == ADDR_SPACE_FLASH);
  }
  
  
*************** avr_out_lpm_no_lpmx (rtx_insn *insn, rtx
*** 3645,3650 ****
--- 3643,3688 ----
  	    avr_asm_len ("sbiw %2,1", xop, plen, 1);
  
  	  break; /* 2 */
+ 
+ 	/* cases 3 and 4 are only needed with ELPM but no ELPMx.  */
+ 
+ 	case 3:
+ 	  if (REGNO (dest) == REG_Z - 2
+ 	      && !reg_unused_after (insn, all_regs_rtx[REG_31]))
+ 	    avr_asm_len ("push r31", xop, plen, 1);
+ 
+ 	  avr_asm_len ("%4lpm $ mov %A0,%3 $ adiw %2,1", xop, plen, 3);
+ 	  avr_asm_len ("%4lpm $ mov %B0,%3 $ adiw %2,1", xop, plen, 3);
+ 	  avr_asm_len ("%4lpm $ mov %C0,%3", xop, plen, 2);
+ 
+ 	  if (REGNO (dest) == REG_Z - 2)
+ 	    {
+ 	      if (!reg_unused_after (insn, all_regs_rtx[REG_31]))
+ 		avr_asm_len ("pop r31", xop, plen, 1);
+ 	    }
+ 	  else if (!reg_unused_after (insn, addr))
+ 	    avr_asm_len ("sbiw %2,2", xop, plen, 1);
+ 
+ 	  break; /* 3 */
+ 
+ 	case 4:
+ 	  avr_asm_len ("%4lpm $ mov %A0,%3 $ adiw %2,1", xop, plen, 3);
+ 	  avr_asm_len ("%4lpm $ mov %B0,%3 $ adiw %2,1", xop, plen, 3);
+ 	  if (REGNO (dest) != REG_Z - 2)
+ 	    {
+ 	      avr_asm_len ("%4lpm $ mov %C0,%3 $ adiw %2,1", xop, plen, 3);
+ 	      avr_asm_len ("%4lpm $ mov %D0,%3", xop, plen, 2);
+ 	      if (!reg_unused_after (insn, addr))
+ 		avr_asm_len ("sbiw %2,3", xop, plen, 1);
+ 	    }
+ 	  else
+ 	    {
+ 	      avr_asm_len ("%4lpm $ push %3 $ adiw %2,1", xop, plen, 3);
+ 	      avr_asm_len ("%4lpm $ mov %D0,%3", xop, plen, 2);
+ 	      avr_asm_len ("pop $C0", xop, plen, 1);
+ 	    }
+ 
+ 	  break; /* 4 */
  	}
  
        break; /* REG */
*************** avr_out_compare (rtx_insn *insn, rtx *xo
*** 6667,6700 ****
  	    }
  	}
  
!       /* Comparing against 0 is easy.  */
! 
!       if (val8 == 0)
! 	{
! 	  avr_asm_len (i == start
! 		       ? "cp %0,__zero_reg__"
! 		       : "cpc %0,__zero_reg__", xop, plen, 1);
! 	  continue;
! 	}
  
!       /* Upper registers can compare and subtract-with-carry immediates.
! 	 Notice that compare instructions do the same as respective subtract
! 	 instruction; the only difference is that comparisons don't write
! 	 the result back to the target register.  */
  
!       if (test_hard_reg_class (LD_REGS, xop[0]))
  	{
! 	  if (i == start)
! 	    {
! 	      avr_asm_len ("cpi %0,%1", xop, plen, 1);
! 	      continue;
! 	    }
! 	  else if (reg_unused_after (insn, xreg))
! 	    {
! 	      avr_asm_len ("sbci %0,%1", xop, plen, 1);
! 	      changed[i] = true;
! 	      continue;
! 	    }
  	}
  
        /* When byte comparisons for an EQ or NE comparison look like
--- 6705,6718 ----
  	    }
  	}
  
!       /* Otherwise, compare a single byte with CP / CPC or equivalent.  */
  
!       const bool ldreg_p = test_hard_reg_class (LD_REGS, xop[0]);
  
!       if (ldreg_p && i == start)
  	{
! 	  avr_asm_len ("cpi %0,%1", xop, plen, 1);
! 	  continue;
  	}
  
        /* When byte comparisons for an EQ or NE comparison look like
*************** avr_out_compare (rtx_insn *insn, rtx *xo
*** 6711,6717 ****
  
  	  for (int j = start; j < i && ! found; ++j)
  	    if (val8 == avr_uint8 (xval, j)
! 		// Make sure that we didn't clobber x[j] above.
  		&& ! changed[j])
  	      {
  		rtx op[] = { xop[0], avr_byte (xreg, j) };
--- 6729,6735 ----
  
  	  for (int j = start; j < i && ! found; ++j)
  	    if (val8 == avr_uint8 (xval, j)
! 		// Make sure that we didn't clobber x[j] with SBCI.
  		&& ! changed[j])
  	      {
  		rtx op[] = { xop[0], avr_byte (xreg, j) };
*************** avr_out_compare (rtx_insn *insn, rtx *xo
*** 6723,6728 ****
--- 6741,6777 ----
  	    continue;
  	}
  
+       /* Upper registers can SBCI which has the same effect like CPC on
+ 	 SREG, but it writes back the result of the subtraction to %0.
+ 	 Therefore, SBCI can only replace CPC when %0 is unused after,
+ 	 or when the comparison is against 0x..0000.  */
+ 
+       if (ldreg_p && i > start)
+ 	{
+ 	  bool zero_p = true;
+ 
+ 	  for (int j = start; j <= i; ++j)
+ 	    zero_p &= avr_uint8 (xval, j) == 0;
+ 
+ 	  if (zero_p || reg_unused_after (insn, xreg))
+ 	    {
+ 	      avr_asm_len ("sbci %0,%1", xop, plen, 1);
+ 	      changed[i] = !zero_p;
+ 	      continue;
+ 	    }
+ 	}
+ 
+       /* Comparing against 0 is easy, but only invoke __zero_reg__ when
+ 	 nothing else has been found.  This is better for small ISRs.  */
+ 
+       if (val8 == 0)
+ 	{
+ 	  avr_asm_len (i == start
+ 		       ? "cp %0,__zero_reg__"
+ 		       : "cpc %0,__zero_reg__", xop, plen, 1);
+ 	  continue;
+ 	}
+ 
        /* Must load the value into the scratch register.  */
  
        gcc_assert (REG_P (xop[2]));
*************** avr_out_plus_ext (rtx_insn *insn, rtx *y
*** 8603,8613 ****
--- 8652,8668 ----
    const int n_bytes0 = GET_MODE_SIZE (GET_MODE (xop[0]));
    const int n_bytes1 = GET_MODE_SIZE (GET_MODE (xop[1]));
    rtx msb1 = all_regs_rtx[n_bytes1 - 1 + REGNO (xop[1])];
+   // Prefer SBCI *,0 over SBC *,__zero_reg__.
+   const bool sbci_p = add == MINUS && n_bytes0 > n_bytes1
+     ? test_hard_reg_class (LD_REGS, avr_byte (xop[0], n_bytes1))
+     : false;
  
    const char *const s_ADD = add == PLUS ? "add %0,%1" : "sub %0,%1";
    const char *const s_ADC = add == PLUS ? "adc %0,%1" : "sbc %0,%1";
    const char *const s_DEC = add == PLUS
      ? "adc %0,__zero_reg__"  CR_TAB  "sbrc %1,7"  CR_TAB  "dec %0"
+     : sbci_p
+     ? "sbci %0,0"            CR_TAB  "sbrc %1,7"  CR_TAB  "inc %0"
      : "sbc %0,__zero_reg__"  CR_TAB  "sbrc %1,7"  CR_TAB  "inc %0";
  
    // A register that containts 8 copies of $1.msb.
*************** avr_out_plus_ext (rtx_insn *insn, rtx *y
*** 8652,8657 ****
--- 8707,8714 ----
  	  regs[1] = msb1;
  	  avr_asm_len (s_DEC, regs, plen, 3);
  	}
+       else if (sbci_p && regs[1] == zero_reg_rtx)
+ 	avr_asm_len ("sbci %0,0", regs, plen, 1);
        else
  	avr_asm_len (s_ADC, regs, plen, 1);
      }
*************** avr_out_plus_1 (rtx xinsn, rtx *xop, int
*** 8960,8966 ****
  	{
  	  if (started)
  	    avr_asm_len (code == PLUS
! 			 ? "adc %0,__zero_reg__" : "sbc %0,__zero_reg__",
  			 op, plen, 1);
  	  continue;
  	}
--- 9017,9024 ----
  	{
  	  if (started)
  	    avr_asm_len (code == PLUS
! 			 ? "adc %0,__zero_reg__"
! 			 : ld_reg_p ? "sbci %0,0" : "sbc %0,__zero_reg__",
  			 op, plen, 1);
  	  continue;
  	}
*************** avr_out_insv (rtx_insn *insn, rtx xop[],
*** 10192,10207 ****
  }
  
  
! /* Output instructions to extract a bit to 8-bit register XOP[0].
!    The input XOP[1] is a register or an 8-bit MEM in the lower I/O range.
!    XOP[2] is the const_int bit position.  Return "".
  
     PLEN != 0: Set *PLEN to the code length in words.  Don't output anything.
     PLEN == 0: Output instructions.  */
  
  const char *
! avr_out_extr (rtx_insn *insn, rtx xop[], int *plen)
  {
    rtx dest = xop[0];
    rtx src = xop[1];
    int bit = INTVAL (xop[2]);
--- 10250,10266 ----
  }
  
  
! /* Output instructions to extract a bit to 8-bit register OP[0].
!    The input OP[1] is a register or an 8-bit MEM in the lower I/O range.
!    OP[2] is the const_int bit position.  Return "".
  
     PLEN != 0: Set *PLEN to the code length in words.  Don't output anything.
     PLEN == 0: Output instructions.  */
  
  const char *
! avr_out_extr (rtx_insn *insn, rtx op[], int *plen)
  {
+   rtx xop[] = { op[0], op[1], op[2] };
    rtx dest = xop[0];
    rtx src = xop[1];
    int bit = INTVAL (xop[2]);
*************** avr_out_extr (rtx_insn *insn, rtx xop[],
*** 10259,10274 ****
  }
  
  
! /* Output instructions to extract a negated bit to 8-bit register XOP[0].
!    The input XOP[1] is an 8-bit register or MEM in the lower I/O range.
!    XOP[2] is the const_int bit position.  Return "".
  
     PLEN != 0: Set *PLEN to the code length in words.  Don't output anything.
     PLEN == 0: Output instructions.  */
  
  const char *
! avr_out_extr_not (rtx_insn * /* insn */, rtx xop[], int *plen)
  {
    rtx dest = xop[0];
    rtx src = xop[1];
    int bit = INTVAL (xop[2]);
--- 10318,10334 ----
  }
  
  
! /* Output instructions to extract a negated bit to 8-bit register OP[0].
!    The input OP[1] is an 8-bit register or MEM in the lower I/O range.
!    OP[2] is the const_int bit position.  Return "".
  
     PLEN != 0: Set *PLEN to the code length in words.  Don't output anything.
     PLEN == 0: Output instructions.  */
  
  const char *
! avr_out_extr_not (rtx_insn * /* insn */, rtx op[], int *plen)
  {
+   rtx xop[] = { op[0], op[1], op[2] };
    rtx dest = xop[0];
    rtx src = xop[1];
    int bit = INTVAL (xop[2]);
*************** avr_insert_attributes (tree node, tree *
*** 11826,11832 ****
  	      *attributes = tree_cons (get_identifier ("section"),
  				       arg, *attributes);
  	    }
! 	  avr_no_call_main_p = true;
  	}
      } // -mno-call-main
  #endif // AVR-LibC
--- 11886,11894 ----
  	      *attributes = tree_cons (get_identifier ("section"),
  				       arg, *attributes);
  	    }
! 	  if (!lookup_attribute ("used", *attributes))
! 	    *attributes = tree_cons (get_identifier ("used"),
! 				     NULL_TREE, *attributes);
  	}
      } // -mno-call-main
  #endif // AVR-LibC
*************** avr_file_end (void)
*** 12430,12444 ****
  
    if (avr_need_clear_bss_p)
      fputs (".global __do_clear_bss\n", asm_out_file);
- 
-   /* Don't let __call_main call main() and exit().
-      Defining this symbol will keep the code from being pulled
-      in from lib<mcu>.a as requested by AVR-LibC's gcrt1.S.
-      We invoke main() by other means: putting it in .init9.  */
- 
-   if (avr_no_call_main_p)
-     fputs (".global __call_main\n"
- 	   "__call_main = 0\n", asm_out_file);
  }
  
  
--- 12492,12497 ----
*************** avr_output_addr_vec (rtx_insn *labl, rtx
*** 14384,14389 ****
--- 14437,14452 ----
  {
    FILE *stream = asm_out_file;
  
+   // AVR-SD: On functional safety devices, each executed instruction must
+   // be followed by a valid opcode.  This is because instruction validation
+   // runs at fetch and decode for the next instruction and while the 2-stage
+   // pipeline is executing the current one.  There is no multilib option for
+   // these devices, so take all multilib variants that contain AVR-SD.
+   const bool maybe_sd = (AVR_HAVE_JMP_CALL
+ 			 && (avr_arch_index == ARCH_AVRXMEGA2
+ 			     || avr_arch_index == ARCH_AVRXMEGA3));
+   bool uses_subsection = false;
+ 
    app_disable ();
  
    // Switch to appropriate (sub)section.
*************** avr_output_addr_vec (rtx_insn *labl, rtx
*** 14397,14402 ****
--- 14460,14466 ----
  
        switch_to_section (current_function_section ());
        fprintf (stream, "\t.subsection\t1\n");
+       uses_subsection = true;
      }
    else
      {
*************** avr_output_addr_vec (rtx_insn *labl, rtx
*** 14419,14428 ****
  	       AVR_HAVE_JMP_CALL ? "a" : "ax");
      }
  
-   // Output the label that precedes the table.
- 
    ASM_OUTPUT_ALIGN (stream, 1);
  
    char s_labl[40];
    targetm.asm_out.generate_internal_label (s_labl, "L",
  					   CODE_LABEL_NUMBER (labl));
--- 14483,14503 ----
  	       AVR_HAVE_JMP_CALL ? "a" : "ax");
      }
  
    ASM_OUTPUT_ALIGN (stream, 1);
  
+   if (maybe_sd && uses_subsection)
+     {
+       // Insert a valid opcode prior to the first gs() label.
+       // Any valid opcode will do.  Use CLH since it disassembles
+       // more nicely than NOP = 0x0000.  This is all GCC can do.
+       // Other cases, like inserting CLH after the vector table and
+       // after the last instruction, are handled by other parts of
+       // the toolchain.
+       fprintf (stream, "\tclh\n");
+     }
+ 
+   // Output the label that precedes the table.
+ 
    char s_labl[40];
    targetm.asm_out.generate_internal_label (s_labl, "L",
  					   CODE_LABEL_NUMBER (labl));
diff -Nrcpad gcc-15.2.0/gcc/config/avr/avr.md gcc-15.3.0/gcc/config/avr/avr.md
*** gcc-15.2.0/gcc/config/avr/avr.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/avr/avr.md	Fri Jun 12 06:09:06 2026
***************
*** 4091,4099 ****
                               (match_operand:PSI 2 "nonmemory_operand" "")))
                (clobber (reg:HI 26))
                (clobber (reg:DI 18))])]
!   "AVR_HAVE_MUL"
    {
!     if (s8_operand (operands[2], PSImode))
        {
          rtx reg = force_reg (QImode, gen_int_mode (INTVAL (operands[2]), QImode));
          emit_insn (gen_mulsqipsi3 (operands[0], reg, operands[1]));
--- 4091,4107 ----
                               (match_operand:PSI 2 "nonmemory_operand" "")))
                (clobber (reg:HI 26))
                (clobber (reg:DI 18))])]
!   "AVR_HAVE_MUL
!    || (avropt_pr118012
!        /* AVR_TINY passes args on the stack, so we cannot work
!           around PR118012 like this. */
!        && ! AVR_TINY)"
    {
!     if (!AVR_HAVE_MUL)
!       {
!         operands[2] = force_reg (PSImode, operands[2]);
!       }
!     else if (s8_operand (operands[2], PSImode))
        {
          rtx reg = force_reg (QImode, gen_int_mode (INTVAL (operands[2]), QImode));
          emit_insn (gen_mulsqipsi3 (operands[0], reg, operands[1]));
***************
*** 4198,4204 ****
                    (match_operand:PSI 2 "pseudo_register_or_const_int_operand" "rn")))
     (clobber (reg:HI 26))
     (clobber (reg:DI 18))]
!   "AVR_HAVE_MUL && !reload_completed"
    { gcc_unreachable(); }
    "&& 1"
    [(set (reg:PSI 18)
--- 4206,4214 ----
                    (match_operand:PSI 2 "pseudo_register_or_const_int_operand" "rn")))
     (clobber (reg:HI 26))
     (clobber (reg:DI 18))]
!   "!reload_completed
!    && (AVR_HAVE_MUL
!        || (avropt_pr118012 && !AVR_TINY))"
    { gcc_unreachable(); }
    "&& 1"
    [(set (reg:PSI 18)
***************
*** 4208,4220 ****
     (parallel [(set (reg:PSI 22)
                     (mult:PSI (reg:PSI 22)
                               (reg:PSI 18)))
!               (clobber (reg:QI 21))
!               (clobber (reg:QI 25))
!               (clobber (reg:HI 26))])
     (set (match_dup 0)
          (reg:PSI 22))]
    {
!     if (s8_operand (operands[2], PSImode))
        {
          rtx reg = force_reg (QImode, gen_int_mode (INTVAL (operands[2]), QImode));
          emit_insn (gen_mulsqipsi3 (operands[0], reg, operands[1]));
--- 4218,4247 ----
     (parallel [(set (reg:PSI 22)
                     (mult:PSI (reg:PSI 22)
                               (reg:PSI 18)))
!               (clobber (match_dup 3))
!               (clobber (match_dup 4))
!               (clobber (match_dup 5))])
     (set (match_dup 0)
          (reg:PSI 22))]
    {
!     if (AVR_HAVE_MUL)
!       {
!         operands[3] = gen_rtx_REG (QImode, REG_21);
!         operands[4] = gen_rtx_REG (QImode, REG_25);
!         operands[5] = gen_rtx_REG (HImode, REG_26);
!       }
!     else
!       {
!         operands[3] = gen_rtx_REG (SImode, REG_18);
!         operands[4] = gen_rtx_SCRATCH (QImode);
!         operands[5] = gen_rtx_SCRATCH (HImode);
!       }
! 
!     if (!AVR_HAVE_MUL)
!       {
!         operands[2] = force_reg (PSImode, operands[2]);
!       }
!     else if (s8_operand (operands[2], PSImode))
        {
          rtx reg = force_reg (QImode, gen_int_mode (INTVAL (operands[2]), QImode));
          emit_insn (gen_mulsqipsi3 (operands[0], reg, operands[1]));
***************
*** 4273,4278 ****
--- 4300,4336 ----
    "%~call __mulpsi3"
    [(set_attr "type" "xcall")])
  
+ (define_insn_and_split "*mulpsi3-nomul.libgcc_split"
+   [(set (reg:PSI 22)
+         (mult:PSI (reg:PSI 22)
+                   (reg:PSI 18)))
+    (clobber (reg:SI 18))
+    (clobber (scratch:QI))
+    (clobber (scratch:HI))]
+   "!AVR_HAVE_MUL && avropt_pr118012 && !AVR_TINY"
+   "#"
+   "&& reload_completed"
+   [(parallel [(set (reg:PSI 22)
+                    (mult:PSI (reg:PSI 22)
+                              (reg:PSI 18)))
+               (clobber (reg:SI 18))
+               (clobber (scratch:QI))
+               (clobber (scratch:HI))
+               (clobber (reg:CC REG_CC))])])
+ 
+ (define_insn "*mulpsi3-nomul.libgcc"
+   [(set (reg:PSI 22)
+         (mult:PSI (reg:PSI 22)
+                   (reg:PSI 18)))
+    (clobber (reg:SI 18))
+    (clobber (scratch:QI))
+    (clobber (scratch:HI))
+    (clobber (reg:CC REG_CC))]
+   "reload_completed
+    && !AVR_HAVE_MUL && avropt_pr118012 && !AVR_TINY"
+   "%~call __mulpsi3"
+   [(set_attr "type" "xcall")])
+ 
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;; 24-bit signed/unsigned division and modulo.
***************
*** 6811,6823 ****
  ;; "cmpqq3" "cmpuqq3"
  (define_insn "cmp<mode>3"
    [(set (reg:CC REG_CC)
!         (compare:CC (match_operand:ALL1 0 "register_operand"  "r  ,r,d")
!                     (match_operand:ALL1 1 "nonmemory_operand" "Y00,r,i")))]
    "reload_completed"
    "@
! 	cp %0, __zero_reg__
! 	cp %0,%1
! 	cpi %0,lo8(%1)"
    [(set_attr "length" "1,1,1")])
  
  
--- 6869,6881 ----
  ;; "cmpqq3" "cmpuqq3"
  (define_insn "cmp<mode>3"
    [(set (reg:CC REG_CC)
!         (compare:CC (match_operand:ALL1 0 "register_operand"  "d,r  ,r")
!                     (match_operand:ALL1 1 "nonmemory_operand" "i,Y00,r")))]
    "reload_completed"
    "@
! 	cpi %0,lo8(%1)
! 	cp %0,__zero_reg__
! 	cp %0,%1"
    [(set_attr "length" "1,1,1")])
  
  
diff -Nrcpad gcc-15.2.0/gcc/config/avr/elf.h gcc-15.3.0/gcc/config/avr/elf.h
*** gcc-15.2.0/gcc/config/avr/elf.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/avr/elf.h	Fri Jun 12 06:09:06 2026
***************
*** 18,23 ****
--- 18,36 ----
     along with GCC; see the file COPYING3.  If not see
     <http://www.gnu.org/licenses/>.  */
  
+ /* defaults.h requires HAVE_INITFINI_ARRAY_SUPPORT to be present
+    in order for attribute "retain" to be recognized.  This is due
+    to some quirks in crtstuff.h -- which isn't even used by avr.
+    All we need is that Binutils supports the "R"etain section flag.
+    If that's the case, define SUPPORTS_SHF_GNU_RETAIN so that
+    defaults.h doesn't define it to 0.  */
+ #if defined(IN_GCC) && !defined(USED_FOR_TARGET) && !defined(GENERATOR_FILE)
+ #include "auto-host.h" /* HAVE_GAS_SHF_GNU_RETAIN */
+ #if HAVE_GAS_SHF_GNU_RETAIN
+ #undef SUPPORTS_SHF_GNU_RETAIN
+ #define SUPPORTS_SHF_GNU_RETAIN 1
+ #endif
+ #endif
  
  /* Overriding some definitions from elfos.h for AVR.  */
  
diff -Nrcpad gcc-15.2.0/gcc/config/avr/gen-avr-mmcu-specs.cc gcc-15.3.0/gcc/config/avr/gen-avr-mmcu-specs.cc
*** gcc-15.2.0/gcc/config/avr/gen-avr-mmcu-specs.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/avr/gen-avr-mmcu-specs.cc	Fri Jun 12 06:09:06 2026
*************** print_mcu (const avr_mcu_t *mcu, const M
*** 355,360 ****
--- 355,362 ----
  
    fprintf (f, "*link_relax:\n\t%s\n\n", LINK_RELAX_SPEC);
  
+   fprintf (f, "*link_no_call_main:\n\t%s\n\n", "%{mno-call-main: --defsym __call_main=0}");
+ 
    fprintf (f, "*link_arch:\n\t%s", link_arch_spec);
    if (mi.is_device
        && rodata_pm_offset)
diff -Nrcpad gcc-15.2.0/gcc/config/avr/specs.h gcc-15.3.0/gcc/config/avr/specs.h
*** gcc-15.2.0/gcc/config/avr/specs.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/avr/specs.h	Fri Jun 12 06:09:06 2026
*************** along with GCC; see the file COPYING3.
*** 57,63 ****
    "%(asm_errata_skip) "
  
  #define LINK_RELAX_SPEC                         \
!   "%{mrelax:--relax} "
  
  #undef  LINK_SPEC
  #define LINK_SPEC                               \
--- 57,63 ----
    "%(asm_errata_skip) "
  
  #define LINK_RELAX_SPEC                         \
!   "%{!r:%{mrelax:--relax}} "
  
  #undef  LINK_SPEC
  #define LINK_SPEC                               \
*************** along with GCC; see the file COPYING3.
*** 67,72 ****
--- 67,73 ----
    "%(link_relax) "                              \
    "%(link_pmem_wrap) "                          \
    "%(link_rodata_in_ram) "                      \
+   "%(link_no_call_main) "                       \
    "%{shared:%eshared is not supported} "
  
  #undef  LIB_SPEC
diff -Nrcpad gcc-15.2.0/gcc/config/bpf/bpf.md gcc-15.3.0/gcc/config/bpf/bpf.md
*** gcc-15.2.0/gcc/config/bpf/bpf.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/bpf/bpf.md	Fri Jun 12 06:09:06 2026
***************
*** 300,306 ****
  	  (match_operand:SI 1 "nonimmediate_operand" "r,q")))]
    ""
    "@
!    *return bpf_output_move (operands, bpf_has_alu32 ? \"{mov32\t%0,%1|%0 = %1}\" : \"{mov\t%0,%1\;and\t%0,0xffffffff|%0 = %1;%0 &= 0xffffffff}\");
     *return bpf_output_move (operands, \"{ldxw\t%0,%1|%0 = *(u32 *) %1}\");"
    [(set_attr "type" "alu,ldx")])
  
--- 300,306 ----
  	  (match_operand:SI 1 "nonimmediate_operand" "r,q")))]
    ""
    "@
!    *return bpf_output_move (operands, bpf_has_alu32 ? \"{mov32\t%0,%1|%W0 = %W1}\" : \"{mov\t%0,%1\;and\t%0,0xffffffff|%0 = %1;%0 &= 0xffffffff}\");
     *return bpf_output_move (operands, \"{ldxw\t%0,%1|%0 = *(u32 *) %1}\");"
    [(set_attr "type" "alu,ldx")])
  
diff -Nrcpad gcc-15.2.0/gcc/config/gnu.h gcc-15.3.0/gcc/config/gnu.h
*** gcc-15.2.0/gcc/config/gnu.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/gnu.h	Fri Jun 12 06:09:06 2026
*************** You should have received a copy of the G
*** 19,24 ****
--- 19,28 ----
  along with GCC.  If not, see <http://www.gnu.org/licenses/>.
  */
  
+ /* C libraries used on GNU/Hurd.  */
+ #define OPTION_GLIBC_P(opts)	(DEFAULT_LIBC == LIBC_GLIBC)
+ #define OPTION_GLIBC		OPTION_GLIBC_P (&global_options)
+ 
  #undef GNU_USER_TARGET_OS_CPP_BUILTINS
  #define GNU_USER_TARGET_OS_CPP_BUILTINS()		\
      do {					\
diff -Nrcpad gcc-15.2.0/gcc/config/i386/amxavx512intrin.h gcc-15.3.0/gcc/config/i386/amxavx512intrin.h
*** gcc-15.2.0/gcc/config/i386/amxavx512intrin.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/i386/amxavx512intrin.h	Fri Jun 12 06:09:06 2026
***************
*** 39,46 ****
  ({									\
    __m512 dst;								\
    __asm__ volatile							\
!   ("{tcvtrowd2ps\t%1, %%tmm"#src", %0|tcvtrowd2ps\t%0, %%tmm"#src", %1}"	\
!    : "=v" (dst) : "r" ((unsigned) (A)));				\
    dst;									\
  })
  
--- 39,47 ----
  ({									\
    __m512 dst;								\
    __asm__ volatile							\
!   ("{tcvtrowd2ps\t%1, %%tmm%c[_src], %0					\
!     |tcvtrowd2ps\t%0, tmm%c[_src], %1}"					\
!    : "=v" (dst) : "r" ((unsigned) (A)), [_src]"i"(src));		\
    dst;									\
  })
  
***************
*** 48,55 ****
  ({									\
    __m512 dst;								\
    __asm__ volatile							\
!   ("{tcvtrowd2ps\t$"#imm", %%tmm"#src", %0|tcvtrowd2ps\t%0, %%tmm"#src", "#imm"}"	\
!    : "=v" (dst) :);							\
    dst;									\
  })
  
--- 49,57 ----
  ({									\
    __m512 dst;								\
    __asm__ volatile							\
!   ("{tcvtrowd2ps\t%[_imm], %%tmm%c[_src], %0				\
!     |tcvtrowd2ps\t%0, tmm%c[_src], %[_imm]}"				\
!    : "=v" (dst) : [_src]"i"(src), [_imm]"i"(imm));			\
    dst;									\
  })
  
***************
*** 57,64 ****
  ({									\
    __m512bh dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2bf16h\t%1, %%tmm"#src", %0|tcvtrowps2bf16h\t%0, %%tmm"#src", %1}"	\
!    : "=v" (dst) : "r" ((unsigned) (A)));				\
    dst;									\
  })
  
--- 59,67 ----
  ({									\
    __m512bh dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2bf16h\t%1, %%tmm%c[_src], %0				\
!     |tcvtrowps2bf16h\t%0, tmm%c[_src], %1}"				\
!     : "=v" (dst) : "r" ((unsigned) (A)), [_src]"i"(src));		\
    dst;									\
  })
  
***************
*** 66,73 ****
  ({									\
    __m512bh dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2bf16h\t$"#imm", %%tmm"#src", %0|tcvtrowps2bf16h\t%0, %%tmm"#src", "#imm"}"	\
!    : "=v" (dst) :);							\
    dst;									\
  })
  
--- 69,77 ----
  ({									\
    __m512bh dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2bf16h\t%[_imm], %%tmm%c[_src], %0			\
!     |tcvtrowps2bf16h\t%0, tmm%c[_src], %[_imm]}"			\
!     : "=v" (dst) : [_src]"i"(src), [_imm]"i"(imm));			\
    dst;									\
  })
  
***************
*** 75,82 ****
  ({									\
    __m512bh dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2bf16l\t%1, %%tmm"#src", %0|tcvtrowps2bf16l\t%0, %%tmm"#src", %1}"	\
!    : "=v" (dst) : "r" ((unsigned) (A)));				\
    dst;									\
  })
  
--- 79,87 ----
  ({									\
    __m512bh dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2bf16l\t%1, %%tmm%c[_src], %0				\
!     |tcvtrowps2bf16l\t%0, tmm%c[_src], %1}"				\
!     : "=v" (dst) : "r" ((unsigned) (A)), [_src]"i"(src));		\
    dst;									\
  })
  
***************
*** 84,91 ****
  ({									\
    __m512bh dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2bf16l\t$"#imm", %%tmm"#src", %0|tcvtrowps2bf16l\t%0, %%tmm"#src", "#imm"}"	\
!    : "=v" (dst) :);							\
    dst;									\
  })
  
--- 89,97 ----
  ({									\
    __m512bh dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2bf16l\t%[_imm], %%tmm%c[_src], %0			\
!     |tcvtrowps2bf16l\t%0, tmm%c[_src], "#imm"}"				\
!     : "=v" (dst) : [_src]"i"(src), [_imm]"i"(imm));			\
    dst;									\
  })
  
***************
*** 93,100 ****
  ({									\
    __m512h dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2phh\t%1, %%tmm"#src", %0|tcvtrowps2phh\t%0, %%tmm"#src", %1}"	\
!    : "=v" (dst) : "r" ((unsigned) (A)));				\
    dst;									\
  })
  
--- 99,106 ----
  ({									\
    __m512h dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2phh\t%1, %%tmm%c[_src], %0|tcvtrowps2phh\t%0, tmm%c[_src], %1}"	\
!     : "=v" (dst) : "r" ((unsigned) (A)), [_src]"i"(src));		\
    dst;									\
  })
  
***************
*** 102,109 ****
  ({									\
    __m512h dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2phh\t$"#imm", %%tmm"#src", %0|tcvtrowps2phh\t%0, %%tmm"#src", "#imm"}"	\
!    : "=v" (dst) :);							\
    dst;									\
  })
  
--- 108,116 ----
  ({									\
    __m512h dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2phh\t%[_imm], %%tmm%c[_src], %0				\
!     |tcvtrowps2phh\t%0, tmm%c[_src], "#imm"}"				\
!     : "=v" (dst) : [_src]"i"(src), [_imm]"i"(imm));		      	\
    dst;									\
  })
  
***************
*** 111,118 ****
  ({									\
    __m512h dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2phl\t%1, %%tmm"#src", %0|tcvtrowps2phl\t%0, %%tmm"#src", %1}"	\
!    : "=v" (dst) : "r" ((unsigned) (A)));				\
    dst;									\
  })
  
--- 118,125 ----
  ({									\
    __m512h dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2phl\t%1, %%tmm%c[_src], %0|tcvtrowps2phl\t%0, tmm%c[_src], %1}"	\
!     : "=v" (dst) : "r" ((unsigned) (A)), [_src]"i"(src));		\
    dst;									\
  })
  
***************
*** 120,127 ****
  ({									\
    __m512h dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2phl\t$"#imm", %%tmm"#src", %0|tcvtrowps2phl\t%0, %%tmm"#src", "#imm"}"	\
!    : "=v" (dst) :);							\
    dst;									\
  })
  
--- 127,135 ----
  ({									\
    __m512h dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2phl\t%[_imm], %%tmm%c[_src], %0				\
!     |tcvtrowps2phl\t%0, tmm%c[_src], "#imm"}"				\
!     : "=v" (dst) : [_src]"i"(src), [_imm]"i"(imm));			\
    dst;									\
  })
  
***************
*** 129,136 ****
  ({									\
    __m512 dst;								\
    __asm__ volatile							\
!   ("{tilemovrow\t%1, %%tmm"#src", %0|tilemovrow\t%0, %%tmm"#src", %1}"	\
!    : "=v" (dst) : "r" ((unsigned) (A)));				\
    dst;									\
  })
  
--- 137,144 ----
  ({									\
    __m512 dst;								\
    __asm__ volatile							\
!   ("{tilemovrow\t%1, %%tmm%c[_src], %0|tilemovrow\t%0, tmm%c[_src], %1}"  \
!     : "=v" (dst) : "r" ((unsigned) (A)), [_src]"i"(src));		\
    dst;									\
  })
  
***************
*** 138,145 ****
  ({									\
    __m512 dst;								\
    __asm__ volatile							\
!   ("{tilemovrow\t$"#imm", %%tmm"#src", %0|tilemovrow\t%0, %%tmm"#src", "#imm"}"	\
!    : "=v" (dst) :);							\
    dst;									\
  })
  
--- 146,154 ----
  ({									\
    __m512 dst;								\
    __asm__ volatile							\
!   ("{tilemovrow\t%[_imm], %%tmm%c[_src], %0				\
!     |tilemovrow\t%0, tmm%c[_src], "#imm"}"				\
!     : "=v" (dst) : [_src]"i"(src), [_imm]"i"(imm));			\
    dst;									\
  })
  
diff -Nrcpad gcc-15.2.0/gcc/config/i386/amxbf16intrin.h gcc-15.3.0/gcc/config/i386/amxbf16intrin.h
*** gcc-15.2.0/gcc/config/i386/amxbf16intrin.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/i386/amxbf16intrin.h	Fri Jun 12 06:09:06 2026
***************
*** 36,43 ****
  
  #if defined(__x86_64__)
  #define _tile_dpbf16ps_internal(dst,src1,src2)					\
!   __asm__ volatile\
!   ("{tdpbf16ps\t%%tmm"#src2", %%tmm"#src1", %%tmm"#dst"|tdpbf16ps\t%%tmm"#dst", %%tmm"#src1", %%tmm"#src2"}" ::)
  
  #define _tile_dpbf16ps(dst,src1,src2)					\
    _tile_dpbf16ps_internal (dst, src1, src2)
--- 36,45 ----
  
  #if defined(__x86_64__)
  #define _tile_dpbf16ps_internal(dst,src1,src2)					\
!   __asm__ volatile								\
!   ("{tdpbf16ps\t%%tmm%c[_src2], %%tmm%c[_src1], %%tmm%c[_dst]			\
!     |tdpbf16ps\ttmm%c[_dst], tmm%c[_src1], tmm%c[_src2]}"			\
!     :: [_dst]"i"(dst), [_src1]"i"(src1), [_src2]"i"(src2))
  
  #define _tile_dpbf16ps(dst,src1,src2)					\
    _tile_dpbf16ps_internal (dst, src1, src2)
diff -Nrcpad gcc-15.2.0/gcc/config/i386/amxcomplexintrin.h gcc-15.3.0/gcc/config/i386/amxcomplexintrin.h
*** gcc-15.2.0/gcc/config/i386/amxcomplexintrin.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/i386/amxcomplexintrin.h	Fri Jun 12 06:09:06 2026
***************
*** 35,47 ****
  #endif /* __AMX_COMPLEX__ */
  
  #if defined(__x86_64__)
! #define _tile_cmmimfp16ps_internal(src1_dst,src2,src3)				\
!   __asm__ volatile\
!   ("{tcmmimfp16ps\t%%tmm"#src3", %%tmm"#src2", %%tmm"#src1_dst"|tcmmimfp16ps\t%%tmm"#src1_dst", %%tmm"#src2", %%tmm"#src3"}" ::)
  
! #define _tile_cmmrlfp16ps_internal(src1_dst,src2,src3)				\
!   __asm__ volatile\
!   ("{tcmmrlfp16ps\t%%tmm"#src3", %%tmm"#src2", %%tmm"#src1_dst"|tcmmrlfp16ps\t%%tmm"#src1_dst", %%tmm"#src2", %%tmm"#src3"}" ::)
  
  #define _tile_cmmimfp16ps(src1_dst,src2,src3)					\
    _tile_cmmimfp16ps_internal (src1_dst, src2, src3)
--- 35,51 ----
  #endif /* __AMX_COMPLEX__ */
  
  #if defined(__x86_64__)
! #define _tile_cmmimfp16ps_internal(src1_dst,src2,src3)			  \
!   __asm__ volatile							  \
!   ("{tcmmimfp16ps\t%%tmm%c[_src3], %%tmm%c[_src2], %%tmm%c[_src1_dst]	  \
!     |tcmmimfp16ps\ttmm%c[_src1_dst], tmm%c[_src2], tmm%c[_src3]}"	  \
!     :: [_src1_dst]"i"(src1_dst), [_src2]"i"(src2), [_src3]"i"(src3))
  
! #define _tile_cmmrlfp16ps_internal(src1_dst,src2,src3)			  \
!   __asm__ volatile							  \
!   ("{tcmmrlfp16ps\t%%tmm%c[_src3], %%tmm%c[_src2], %%tmm%c[_src1_dst]	  \
!     |tcmmrlfp16ps\ttmm%c[_src1_dst], tmm%c[_src2], tmm%c[_src3]}"	  \
!     :: [_src1_dst]"i"(src1_dst), [_src2]"i"(src2), [_src3]"i"(src3))
  
  #define _tile_cmmimfp16ps(src1_dst,src2,src3)					\
    _tile_cmmimfp16ps_internal (src1_dst, src2, src3)
diff -Nrcpad gcc-15.2.0/gcc/config/i386/amxfp16intrin.h gcc-15.3.0/gcc/config/i386/amxfp16intrin.h
*** gcc-15.2.0/gcc/config/i386/amxfp16intrin.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/i386/amxfp16intrin.h	Fri Jun 12 06:09:06 2026
***************
*** 29,37 ****
  #define _AMXFP16INTRIN_H_INCLUDED
  
  #if defined(__x86_64__)
! #define _tile_dpfp16ps_internal(dst,src1,src2)			\
!   __asm__ volatile \
!   ("{tdpfp16ps\t%%tmm"#src2", %%tmm"#src1", %%tmm"#dst"|tdpfp16ps\t%%tmm"#dst", %%tmm"#src1", %%tmm"#src2"}" ::)
  
  #define _tile_dpfp16ps(dst,src1,src2)				\
    _tile_dpfp16ps_internal (dst,src1,src2)
--- 29,39 ----
  #define _AMXFP16INTRIN_H_INCLUDED
  
  #if defined(__x86_64__)
! #define _tile_dpfp16ps_internal(dst,src1,src2)				\
!   __asm__ volatile							\
!   ("{tdpfp16ps\t%%tmm%c[_src2], %%tmm%c[_src1], %%tmm%c[_dst]		\
!     |tdpfp16ps\ttmm%c[_dst], tmm%c[_src1], tmm%c[_src2]}"		\
!     :: [_dst]"i"(dst), [_src1]"i"(src1), [_src2]"i"(src2))
  
  #define _tile_dpfp16ps(dst,src1,src2)				\
    _tile_dpfp16ps_internal (dst,src1,src2)
diff -Nrcpad gcc-15.2.0/gcc/config/i386/amxfp8intrin.h gcc-15.3.0/gcc/config/i386/amxfp8intrin.h
*** gcc-15.2.0/gcc/config/i386/amxfp8intrin.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/i386/amxfp8intrin.h	Fri Jun 12 06:09:06 2026
***************
*** 29,49 ****
  #define _AMXFP8INTRIN_H_INCLUDED
  
  #if defined(__x86_64__)
! #define _tile_dpbf8ps_internal(dst,src1,src2)			\
!   __asm__ volatile \
!   ("{tdpbf8ps\t%%tmm"#src2", %%tmm"#src1", %%tmm"#dst"|tdpbf8ps\t%%tmm"#dst", %%tmm"#src1", %%tmm"#src2"}" ::)
  
! #define _tile_dpbhf8ps_internal(dst,src1,src2)			\
!   __asm__ volatile \
!   ("{tdpbhf8ps\t%%tmm"#src2", %%tmm"#src1", %%tmm"#dst"|tdpbhf8ps\t%%tmm"#dst", %%tmm"#src1", %%tmm"#src2"}" ::)
  
! #define _tile_dphbf8ps_internal(dst,src1,src2)			\
!   __asm__ volatile \
!   ("{tdphbf8ps\t%%tmm"#src2", %%tmm"#src1", %%tmm"#dst"|tdphbf8ps\t%%tmm"#dst", %%tmm"#src1", %%tmm"#src2"}" ::)
  
! #define _tile_dphf8ps_internal(dst,src1,src2)			\
!   __asm__ volatile \
!   ("{tdphf8ps\t%%tmm"#src2", %%tmm"#src1", %%tmm"#dst"|tdphf8ps\t%%tmm"#dst", %%tmm"#src1", %%tmm"#src2"}" ::)
  
  #define _tile_dpbf8ps(dst,src1,src2)				\
    _tile_dpbf8ps_internal (dst,src1,src2)
--- 29,57 ----
  #define _AMXFP8INTRIN_H_INCLUDED
  
  #if defined(__x86_64__)
! #define _tile_dpbf8ps_internal(dst,src1,src2)				\
!   __asm__ volatile							\
!   ("{tdpbf8ps\t%%tmm%c[_src2], %%tmm%c[_src1], %%tmm%c[_dst]		\
!     |tdpbf8ps\ttmm%c[_dst], tmm%c[_src1], tmm%c[_src2]}"		\
!     :: [_dst]"i"(dst), [_src1]"i"(src1), [_src2]"i"(src2))
  
! #define _tile_dpbhf8ps_internal(dst,src1,src2)				\
!   __asm__ volatile							\
!   ("{tdpbhf8ps\t%%tmm%c[_src2], %%tmm%c[_src1], %%tmm%c[_dst]		\
!     |tdpbhf8ps\ttmm%c[_dst], tmm%c[_src1], tmm%c[_src2]}"		\
!     :: [_dst]"i"(dst), [_src1]"i"(src1), [_src2]"i"(src2))
  
! #define _tile_dphbf8ps_internal(dst,src1,src2)				\
!   __asm__ volatile							\
!   ("{tdphbf8ps\t%%tmm%c[_src2], %%tmm%c[_src1], %%tmm%c[_dst]		\
!     |tdphbf8ps\ttmm%c[_dst], tmm%c[_src1], tmm%c[_src2]}"		\
!     :: [_dst]"i"(dst), [_src1]"i"(src1), [_src2]"i"(src2))
  
! #define _tile_dphf8ps_internal(dst,src1,src2)				\
!   __asm__ volatile							\
!   ("{tdphf8ps\t%%tmm%c[_src2], %%tmm%c[_src1], %%tmm%c[_dst]		\
!     |tdphf8ps\ttmm%c[_dst], tmm%c[_src1], tmm%c[_src2]}"		\
!     :: [_dst]"i"(dst), [_src1]"i"(src1), [_src2]"i"(src2))
  
  #define _tile_dpbf8ps(dst,src1,src2)				\
    _tile_dpbf8ps_internal (dst,src1,src2)
diff -Nrcpad gcc-15.2.0/gcc/config/i386/amxint8intrin.h gcc-15.3.0/gcc/config/i386/amxint8intrin.h
*** gcc-15.2.0/gcc/config/i386/amxint8intrin.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/i386/amxint8intrin.h	Fri Jun 12 06:09:06 2026
***************
*** 37,43 ****
  #if defined(__x86_64__)
  #define _tile_int8_dp_internal(name,dst,src1,src2)					\
    __asm__ volatile							\
!   ("{"#name"\t%%tmm"#src2", %%tmm"#src1", %%tmm"#dst"|"#name"\t%%tmm"#dst", %%tmm"#src1", %%tmm"#src2"}" ::)
  
  #define _tile_dpbssd(dst,src1,src2)					\
    _tile_int8_dp_internal (tdpbssd, dst, src1, src2)
--- 37,45 ----
  #if defined(__x86_64__)
  #define _tile_int8_dp_internal(name,dst,src1,src2)					\
    __asm__ volatile							\
!   ("{"#name"\t%%tmm%c[_src2], %%tmm%c[_src1], %%tmm%c[_dst]		\
!    |"#name"\ttmm%c[_dst], tmm%c[_src1], tmm%c[_src2]}"		\
!    ::[_dst]"i"(dst),[_src1]"i"(src1),[_src2]"i"(src2))
  
  #define _tile_dpbssd(dst,src1,src2)					\
    _tile_int8_dp_internal (tdpbssd, dst, src1, src2)
diff -Nrcpad gcc-15.2.0/gcc/config/i386/amxmovrsintrin.h gcc-15.3.0/gcc/config/i386/amxmovrsintrin.h
*** gcc-15.2.0/gcc/config/i386/amxmovrsintrin.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/i386/amxmovrsintrin.h	Fri Jun 12 06:09:06 2026
***************
*** 36,52 ****
  #define __DISABLE_AMX_MOVRS__
  #endif /* __AMX_MOVRS__ */
  
! #define _tile_loaddrs_internal(tdst, base, stride)	  \
! __asm__ volatile					  \
!   ("{tileloaddrs\t(%0,%1,1), %%tmm"#tdst		  \
!      "|tileloaddrs\t%%tmm"#tdst", [%0+%1*1]}"		  \
!    :: "r" ((const void*) (base)), "r" ((long) (stride)))
  
! #define _tile_loaddrst1_internal(tdst, base, stride)	  \
! __asm__ volatile					  \
!   ("{tileloaddrst1\t(%0,%1,1), %%tmm"#tdst		  \
!      "|tileloaddrst1\t%%tmm"#tdst", [%0+%1*1]}"		  \
!    :: "r" ((const void*) (base)), "r" ((long) (stride)))
  
  #define _tile_loaddrs(tdst, base, stride)		  \
    _tile_loaddrs_internal(tdst, base, stride)
--- 36,52 ----
  #define __DISABLE_AMX_MOVRS__
  #endif /* __AMX_MOVRS__ */
  
! #define _tile_loaddrs_internal(tdst, base, stride)			\
! __asm__ volatile							\
!   ("{tileloaddrs\t(%0,%1,1), %%tmm%c[_tdst]				\
!     |tileloaddrs\ttmm%c[_tdst], [%0+%1*1]}"				\
!     :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)), [_tdst]"i"(tdst))
  
! #define _tile_loaddrst1_internal(tdst, base, stride)			\
! __asm__ volatile							\
!   ("{tileloaddrst1\t(%0,%1,1), %%tmm%c[_tdst]				\
!     |tileloaddrst1\ttmm%c[_tdst], [%0+%1*1]}"				\
!     :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)), [_tdst]"i"(tdst))
  
  #define _tile_loaddrs(tdst, base, stride)		  \
    _tile_loaddrs_internal(tdst, base, stride)
*************** __asm__ volatile					  \
*** 68,93 ****
  #define _tile_2rpntlvwz0rs_internal(tdst, base, stride)	  \
    __asm__ volatile					  \
    ("{t2rpntlvwz0rs\t(%0,%1,1), %%tmm"#tdst		  \
!      "|t2rpntlvwz0rs\t%%tmm"#tdst", [%0+%1*1]}"	  \
!    :: "r" ((const void*) (base)), "r" ((long) (stride)))
  
  #define _tile_2rpntlvwz0rst1_internal(tdst, base, stride) \
    __asm__ volatile					  \
    ("{t2rpntlvwz0rst1\t(%0,%1,1), %%tmm"#tdst		  \
!      "|t2rpntlvwz0rst1\t%%tmm"#tdst", [%0+%1*1]}"	  \
!    :: "r" ((const void*) (base)), "r" ((long) (stride)))
  
  #define _tile_2rpntlvwz1rs_internal(tdst, base, stride)	  \
    __asm__ volatile					  \
    ("{t2rpntlvwz1rs\t(%0,%1,1), %%tmm"#tdst		  \
!      "|t2rpntlvwz1rs\t%%tmm"#tdst", [%0+%1*1]}"		  \
!    :: "r" ((const void*) (base)), "r" ((long) (stride)))
  
  #define _tile_2rpntlvwz1rst1_internal(tdst, base, stride) \
    __asm__ volatile					  \
    ("{t2rpntlvwz1rst1\t(%0,%1,1), %%tmm"#tdst		  \
!      "|t2rpntlvwz1rst1\t%%tmm"#tdst", [%0+%1*1]}"	  \
!    :: "r" ((const void*) (base)), "r" ((long) (stride)))
  
  #define _tile_2rpntlvwz0rs(tdst, base, stride)		  \
    _tile_2rpntlvwz0rs_internal(tdst, base, stride)
--- 68,93 ----
  #define _tile_2rpntlvwz0rs_internal(tdst, base, stride)	  \
    __asm__ volatile					  \
    ("{t2rpntlvwz0rs\t(%0,%1,1), %%tmm"#tdst		  \
!      "|t2rpntlvwz0rs\ttmm"#tdst", [%0+%1*1]}"	  \
!    :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)))
  
  #define _tile_2rpntlvwz0rst1_internal(tdst, base, stride) \
    __asm__ volatile					  \
    ("{t2rpntlvwz0rst1\t(%0,%1,1), %%tmm"#tdst		  \
!      "|t2rpntlvwz0rst1\ttmm"#tdst", [%0+%1*1]}"	  \
!    :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)))
  
  #define _tile_2rpntlvwz1rs_internal(tdst, base, stride)	  \
    __asm__ volatile					  \
    ("{t2rpntlvwz1rs\t(%0,%1,1), %%tmm"#tdst		  \
!      "|t2rpntlvwz1rs\ttmm"#tdst", [%0+%1*1]}"		  \
!    :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)))
  
  #define _tile_2rpntlvwz1rst1_internal(tdst, base, stride) \
    __asm__ volatile					  \
    ("{t2rpntlvwz1rst1\t(%0,%1,1), %%tmm"#tdst		  \
!      "|t2rpntlvwz1rst1\ttmm"#tdst", [%0+%1*1]}"	  \
!    :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)))
  
  #define _tile_2rpntlvwz0rs(tdst, base, stride)		  \
    _tile_2rpntlvwz0rs_internal(tdst, base, stride)
diff -Nrcpad gcc-15.2.0/gcc/config/i386/amxtf32intrin.h gcc-15.3.0/gcc/config/i386/amxtf32intrin.h
*** gcc-15.2.0/gcc/config/i386/amxtf32intrin.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/i386/amxtf32intrin.h	Fri Jun 12 06:09:06 2026
***************
*** 31,38 ****
  
  #if defined(__x86_64__)
  #define _tile_mmultf32ps_internal(src1_dst,src2,src3)			\
!   __asm__ volatile\
!   ("{tmmultf32ps\t%%tmm"#src3", %%tmm"#src2", %%tmm"#src1_dst"|tmmultf32ps\t%%tmm"#src1_dst", %%tmm"#src2", %%tmm"#src3"}" ::)
  
  #define _tile_mmultf32ps(src1_dst,src2,src3)				\
    _tile_mmultf32ps_internal (src1_dst, src2, src3)
--- 31,40 ----
  
  #if defined(__x86_64__)
  #define _tile_mmultf32ps_internal(src1_dst,src2,src3)			\
!   __asm__ volatile						    	\
!   ("{tmmultf32ps\t%%tmm%c[_src3], %%tmm%c[_src2], %%tmm%c[_src1_dst]	\
!     |tmmultf32ps\ttmm%c[_src1_dst], tmm%c[_src2], tmm%c[_src3]}"	\
!     :: [_src1_dst]"i"(src1_dst), [_src2]"i"(src2), [_src3]"i"(src3))
  
  #define _tile_mmultf32ps(src1_dst,src2,src3)				\
    _tile_mmultf32ps_internal (src1_dst, src2, src3)
diff -Nrcpad gcc-15.2.0/gcc/config/i386/amxtileintrin.h gcc-15.3.0/gcc/config/i386/amxtileintrin.h
*** gcc-15.2.0/gcc/config/i386/amxtileintrin.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/i386/amxtileintrin.h	Fri Jun 12 06:09:06 2026
*************** _tile_release (void)
*** 61,92 ****
  
  #define _tile_loadd_internal(dst,base,stride)				\
    __asm__ volatile							\
!   ("{tileloadd\t(%0,%1,1), %%tmm"#dst"|tileloadd\t%%tmm"#dst", [%0+%1*1]}" \
!    :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)))
  
  #define _tile_stream_loadd(dst,base,stride)		\
    _tile_stream_loadd_internal (dst, base, stride)
  
  #define _tile_stream_loadd_internal(dst,base,stride)			\
    __asm__ volatile							\
!   ("{tileloaddt1\t(%0,%1,1), %%tmm"#dst"|tileloaddt1\t%%tmm"#dst", [%0+%1*1]}" \
!    :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)))
  
  #define _tile_stored(dst,base,stride)		\
    _tile_stored_internal (dst, base, stride)
  
  #define _tile_stored_internal(src,base,stride)				\
    __asm__ volatile							\
!   ("{tilestored\t%%tmm"#src", (%0,%1,1)|tilestored\t[%0+%1*1], %%tmm"#src"}" \
!    :: "r" ((void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)) \
!    : "memory")
  
  #define _tile_zero(dst)				\
    _tile_zero_internal (dst)
  
! #define _tile_zero_internal(dst)		\
!   __asm__ volatile				\
!   ("tilezero\t%%tmm"#dst ::)
  
  #endif
  
--- 61,92 ----
  
  #define _tile_loadd_internal(dst,base,stride)				\
    __asm__ volatile							\
!   ("{tileloadd\t(%0,%1,1), %%tmm%c[_dst]|tileloadd\ttmm%c[_dst], [%0+%1*1]}" \
!   :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)), [_dst]"i"(dst))
  
  #define _tile_stream_loadd(dst,base,stride)		\
    _tile_stream_loadd_internal (dst, base, stride)
  
  #define _tile_stream_loadd_internal(dst,base,stride)			\
    __asm__ volatile							\
!   ("{tileloaddt1\t(%0,%1,1), %%tmm%c[_dst]|tileloaddt1\ttmm%c[_dst], [%0+%1*1]}" \
!   :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)), [_dst]"i"(dst))
  
  #define _tile_stored(dst,base,stride)		\
    _tile_stored_internal (dst, base, stride)
  
  #define _tile_stored_internal(src,base,stride)				\
    __asm__ volatile							\
!   ("{tilestored\t%%tmm%c[_src], (%0,%1,1)|tilestored\t[%0+%1*1], tmm%c[_src]}" \
!   :: "r" ((void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)), [_src]"i"(src) \
!   : "memory")
  
  #define _tile_zero(dst)				\
    _tile_zero_internal (dst)
  
! #define _tile_zero_internal(dst)					\
!   __asm__ volatile							\
!   ("{tilezero\t%%tmm%c[_dst]|tilezero\ttmm%c[_dst]}" :: [_dst]"i"(dst))
  
  #endif
  
diff -Nrcpad gcc-15.2.0/gcc/config/i386/avx10_2-512bf16intrin.h gcc-15.3.0/gcc/config/i386/avx10_2-512bf16intrin.h
*** gcc-15.2.0/gcc/config/i386/avx10_2-512bf16intrin.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/i386/avx10_2-512bf16intrin.h	Fri Jun 12 06:09:06 2026
*************** _mm512_maskz_getexp_pbh (__mmask32 __U,
*** 472,499 ****
  #ifdef __OPTIMIZE__
  extern __inline__ __m512bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_roundscale_pbh (__m512bh __A, int B)
  {
    return (__m512bh)
!     __builtin_ia32_rndscalebf16512_mask (__A, B,
  					 (__v32bf) _mm512_setzero_si512 (),
  					 (__mmask32) -1);
  }
  
  extern __inline__ __m512bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_roundscale_pbh (__m512bh __W, __mmask32 __U, __m512bh __A, int B)
  {
    return (__m512bh)
!     __builtin_ia32_rndscalebf16512_mask (__A, B, __W,  __U);
  }
  
  extern __inline__ __m512bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_maskz_roundscale_pbh (__mmask32 __U, __m512bh __A, int B)
  {
    return (__m512bh)
!     __builtin_ia32_rndscalebf16512_mask (__A, B,
  					 (__v32bf) _mm512_setzero_si512 (),
  					 __U);
  }
--- 472,499 ----
  #ifdef __OPTIMIZE__
  extern __inline__ __m512bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_roundscale_pbh (__m512bh __A, int __B)
  {
    return (__m512bh)
!     __builtin_ia32_rndscalebf16512_mask (__A, __B,
  					 (__v32bf) _mm512_setzero_si512 (),
  					 (__mmask32) -1);
  }
  
  extern __inline__ __m512bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_roundscale_pbh (__m512bh __W, __mmask32 __U, __m512bh __A, int __B)
  {
    return (__m512bh)
!     __builtin_ia32_rndscalebf16512_mask (__A, __B, __W,  __U);
  }
  
  extern __inline__ __m512bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_maskz_roundscale_pbh (__mmask32 __U, __m512bh __A, int __B)
  {
    return (__m512bh)
!     __builtin_ia32_rndscalebf16512_mask (__A, __B,
  					 (__v32bf) _mm512_setzero_si512 (),
  					 __U);
  }
*************** _mm512_maskz_roundscale_pbh (__mmask32 _
*** 518,527 ****
  #ifdef __OPTIMIZE__
  extern __inline__ __m512bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_reduce_pbh (__m512bh __A, int B)
  {
    return (__m512bh)
!     __builtin_ia32_reducebf16512_mask (__A, B,
  				       (__v32bf) _mm512_setzero_si512 (),
  				       (__mmask32) -1);
  }
--- 518,527 ----
  #ifdef __OPTIMIZE__
  extern __inline__ __m512bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_reduce_pbh (__m512bh __A, int __B)
  {
    return (__m512bh)
!     __builtin_ia32_reducebf16512_mask (__A, __B,
  				       (__v32bf) _mm512_setzero_si512 (),
  				       (__mmask32) -1);
  }
*************** _mm512_reduce_pbh (__m512bh __A, int B)
*** 529,546 ****
  extern __inline__ __m512bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_reduce_pbh (__m512bh __W, __mmask32 __U,
! 			__m512bh __A, int B)
  {
    return (__m512bh)
!     __builtin_ia32_reducebf16512_mask (__A, B, __W,  __U);
  }
  
  extern __inline__ __m512bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_maskz_reduce_pbh (__mmask32 __U, __m512bh __A, int B)
  {
    return (__m512bh)
!     __builtin_ia32_reducebf16512_mask (__A, B,
  					  (__v32bf) _mm512_setzero_si512 (),
  					  __U);
  }
--- 529,546 ----
  extern __inline__ __m512bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_reduce_pbh (__m512bh __W, __mmask32 __U,
! 			__m512bh __A, int __B)
  {
    return (__m512bh)
!     __builtin_ia32_reducebf16512_mask (__A, __B, __W,  __U);
  }
  
  extern __inline__ __m512bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_maskz_reduce_pbh (__mmask32 __U, __m512bh __A, int __B)
  {
    return (__m512bh)
!     __builtin_ia32_reducebf16512_mask (__A, __B,
  					  (__v32bf) _mm512_setzero_si512 (),
  					  __U);
  }
diff -Nrcpad gcc-15.2.0/gcc/config/i386/avx10_2bf16intrin.h gcc-15.3.0/gcc/config/i386/avx10_2bf16intrin.h
*** gcc-15.2.0/gcc/config/i386/avx10_2bf16intrin.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/i386/avx10_2bf16intrin.h	Fri Jun 12 06:09:06 2026
*************** _mm_maskz_getexp_pbh (__mmask8 __U, __m1
*** 905,914 ****
  #ifdef __OPTIMIZE__
  extern __inline__ __m256bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_roundscale_pbh (__m256bh __A, int B)
  {
    return (__m256bh)
!     __builtin_ia32_rndscalebf16256_mask (__A, B,
  					 (__v16bf) _mm256_setzero_si256 (),
  					 (__mmask16) -1);
  }
--- 905,914 ----
  #ifdef __OPTIMIZE__
  extern __inline__ __m256bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_roundscale_pbh (__m256bh __A, int __B)
  {
    return (__m256bh)
!     __builtin_ia32_rndscalebf16256_mask (__A, __B,
  					 (__v16bf) _mm256_setzero_si256 (),
  					 (__mmask16) -1);
  }
*************** _mm256_roundscale_pbh (__m256bh __A, int
*** 916,943 ****
  extern __inline__ __m256bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_roundscale_pbh (__m256bh __W, __mmask16 __U,
! 			    __m256bh __A, int B)
  {
    return (__m256bh)
!     __builtin_ia32_rndscalebf16256_mask (__A, B, __W, __U);
  }
  
  extern __inline__ __m256bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_maskz_roundscale_pbh (__mmask16 __U, __m256bh __A, int B)
  {
    return (__m256bh)
!     __builtin_ia32_rndscalebf16256_mask (__A, B,
  					 (__v16bf) _mm256_setzero_si256 (),
  					 __U);
  }
  
  extern __inline__ __m128bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_roundscale_pbh (__m128bh __A, int B)
  {
    return (__m128bh)
!     __builtin_ia32_rndscalebf16128_mask (__A, B,
  					 (__v8bf) _mm_setzero_si128 (),
  					 (__mmask8) -1);
  }
--- 916,943 ----
  extern __inline__ __m256bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_roundscale_pbh (__m256bh __W, __mmask16 __U,
! 			    __m256bh __A, int __B)
  {
    return (__m256bh)
!     __builtin_ia32_rndscalebf16256_mask (__A, __B, __W, __U);
  }
  
  extern __inline__ __m256bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_maskz_roundscale_pbh (__mmask16 __U, __m256bh __A, int __B)
  {
    return (__m256bh)
!     __builtin_ia32_rndscalebf16256_mask (__A, __B,
  					 (__v16bf) _mm256_setzero_si256 (),
  					 __U);
  }
  
  extern __inline__ __m128bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_roundscale_pbh (__m128bh __A, int __B)
  {
    return (__m128bh)
!     __builtin_ia32_rndscalebf16128_mask (__A, __B,
  					 (__v8bf) _mm_setzero_si128 (),
  					 (__mmask8) -1);
  }
*************** _mm_roundscale_pbh (__m128bh __A, int B)
*** 945,962 ****
  extern __inline__ __m128bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_roundscale_pbh (__m128bh __W, __mmask8 __U,
! 			 __m128bh __A, int B)
  {
    return (__m128bh)
!     __builtin_ia32_rndscalebf16128_mask (__A, B, __W, __U);
  }
  
  extern __inline__ __m128bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_maskz_roundscale_pbh (__mmask8 __U, __m128bh __A, int B)
  {
    return (__m128bh)
!     __builtin_ia32_rndscalebf16128_mask (__A, B,
  					 (__v8bf) _mm_setzero_si128 (),
  					 __U);
  }
--- 945,962 ----
  extern __inline__ __m128bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_roundscale_pbh (__m128bh __W, __mmask8 __U,
! 			 __m128bh __A, int __B)
  {
    return (__m128bh)
!     __builtin_ia32_rndscalebf16128_mask (__A, __B, __W, __U);
  }
  
  extern __inline__ __m128bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_maskz_roundscale_pbh (__mmask8 __U, __m128bh __A, int __B)
  {
    return (__m128bh)
!     __builtin_ia32_rndscalebf16128_mask (__A, __B,
  					 (__v8bf) _mm_setzero_si128 (),
  					 __U);
  }
*************** _mm_maskz_roundscale_pbh (__mmask8 __U,
*** 994,1003 ****
  #ifdef __OPTIMIZE__
  extern __inline__ __m256bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_reduce_pbh (__m256bh __A, int B)
  {
    return (__m256bh)
!     __builtin_ia32_reducebf16256_mask (__A, B,
  				       (__v16bf) _mm256_setzero_si256 (),
  				       (__mmask16) -1);
  }
--- 994,1003 ----
  #ifdef __OPTIMIZE__
  extern __inline__ __m256bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_reduce_pbh (__m256bh __A, int __B)
  {
    return (__m256bh)
!     __builtin_ia32_reducebf16256_mask (__A, __B,
  				       (__v16bf) _mm256_setzero_si256 (),
  				       (__mmask16) -1);
  }
*************** _mm256_reduce_pbh (__m256bh __A, int B)
*** 1005,1032 ****
  extern __inline__ __m256bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_reduce_pbh (__m256bh __W, __mmask16 __U,
! 			__m256bh __A, int B)
  {
    return (__m256bh)
!     __builtin_ia32_reducebf16256_mask (__A, B, __W, __U);
  }
  
  extern __inline__ __m256bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_maskz_reduce_pbh (__mmask16 __U, __m256bh __A, int B)
  {
    return (__m256bh)
!     __builtin_ia32_reducebf16256_mask (__A, B,
  				       (__v16bf) _mm256_setzero_si256 (),
  				       __U);
  }
  
  extern __inline__ __m128bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_reduce_pbh (__m128bh __A, int B)
  {
    return (__m128bh)
!     __builtin_ia32_reducebf16128_mask (__A, B,
  				       (__v8bf) _mm_setzero_si128 (),
  				       (__mmask8) -1);
  }
--- 1005,1032 ----
  extern __inline__ __m256bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_reduce_pbh (__m256bh __W, __mmask16 __U,
! 			__m256bh __A, int __B)
  {
    return (__m256bh)
!     __builtin_ia32_reducebf16256_mask (__A, __B, __W, __U);
  }
  
  extern __inline__ __m256bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_maskz_reduce_pbh (__mmask16 __U, __m256bh __A, int __B)
  {
    return (__m256bh)
!     __builtin_ia32_reducebf16256_mask (__A, __B,
  				       (__v16bf) _mm256_setzero_si256 (),
  				       __U);
  }
  
  extern __inline__ __m128bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_reduce_pbh (__m128bh __A, int __B)
  {
    return (__m128bh)
!     __builtin_ia32_reducebf16128_mask (__A, __B,
  				       (__v8bf) _mm_setzero_si128 (),
  				       (__mmask8) -1);
  }
*************** _mm_reduce_pbh (__m128bh __A, int B)
*** 1034,1051 ****
  extern __inline__ __m128bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_reduce_pbh (__m128bh __W, __mmask8 __U,
! 		     __m128bh __A, int B)
  {
    return (__m128bh)
!     __builtin_ia32_reducebf16128_mask (__A, B, __W, __U);
  }
  
  extern __inline__ __m128bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_maskz_reduce_pbh (__mmask8 __U, __m128bh __A, int B)
  {
    return (__m128bh)
!     __builtin_ia32_reducebf16128_mask (__A, B,
  				       (__v8bf) _mm_setzero_si128 (),
  				       __U);
  }
--- 1034,1051 ----
  extern __inline__ __m128bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_reduce_pbh (__m128bh __W, __mmask8 __U,
! 		     __m128bh __A, int __B)
  {
    return (__m128bh)
!     __builtin_ia32_reducebf16128_mask (__A, __B, __W, __U);
  }
  
  extern __inline__ __m128bh
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_maskz_reduce_pbh (__mmask8 __U, __m128bh __A, int __B)
  {
    return (__m128bh)
!     __builtin_ia32_reducebf16128_mask (__A, __B,
  				       (__v8bf) _mm_setzero_si128 (),
  				       __U);
  }
diff -Nrcpad gcc-15.2.0/gcc/config/i386/driver-i386.cc gcc-15.3.0/gcc/config/i386/driver-i386.cc
*** gcc-15.2.0/gcc/config/i386/driver-i386.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/i386/driver-i386.cc	Fri Jun 12 06:09:06 2026
*************** const char *host_detect_local_cpu (int a
*** 666,683 ****
  		}
  	      else if (has_feature (FEATURE_AVX))
  		{
- 		  /* Assume Panther Lake.  */
- 		  if (has_feature (FEATURE_PREFETCHI))
- 		    cpu = "pantherlake";
  		  /* Assume Clearwater Forest.  */
! 		  else if (has_feature (FEATURE_USER_MSR))
  		    cpu = "clearwaterforest";
- 		  /* Assume Arrow Lake S.  */
  		  else if (has_feature (FEATURE_SM3))
! 		    cpu = "arrowlake-s";
  		  /* Assume Sierra Forest.  */
! 		  else if (has_feature (FEATURE_AVXVNNIINT8))
  		    cpu = "sierraforest";
  		  /* Assume Alder Lake.  */
  		  else if (has_feature (FEATURE_SERIALIZE))
  		    cpu = "alderlake";
--- 666,689 ----
  		}
  	      else if (has_feature (FEATURE_AVX))
  		{
  		  /* Assume Clearwater Forest.  */
! 		  if (has_feature (FEATURE_USER_MSR))
  		    cpu = "clearwaterforest";
  		  else if (has_feature (FEATURE_SM3))
! 		    {
! 			if (has_feature (FEATURE_KL))
! 			  /* Assume Arrow Lake S.  */
! 			  cpu = "arrowlake-s";
! 			else
! 			  /* Assume Panther Lake.  */
! 			  cpu = "pantherlake";
! 		    }
  		  /* Assume Sierra Forest.  */
! 		  else if (has_feature (FEATURE_CLDEMOTE))
  		    cpu = "sierraforest";
+ 		  /* Assume Arrow Lake.  */
+ 		  else if (has_feature (FEATURE_AVXVNNIINT8))
+ 		    cpu = "arrowlake";
  		  /* Assume Alder Lake.  */
  		  else if (has_feature (FEATURE_SERIALIZE))
  		    cpu = "alderlake";
diff -Nrcpad gcc-15.2.0/gcc/config/i386/host-mingw32.cc gcc-15.3.0/gcc/config/i386/host-mingw32.cc
*** gcc-15.2.0/gcc/config/i386/host-mingw32.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/i386/host-mingw32.cc	Fri Jun 12 06:09:06 2026
*************** mingw32_gt_pch_use_address (void *&addr,
*** 135,141 ****
       and earlier, backslashes are invalid in object name.  So, we need
       to check if we are on Windows2000 or higher.  */
    OSVERSIONINFO version_info;
-   int r;
  
    version_info.dwOSVersionInfoSize = sizeof (version_info);
  
--- 135,140 ----
*************** mingw32_gt_pch_use_address (void *&addr,
*** 169,193 ****
        return -1;
      }
  
!   /* Retry five times, as here might occure a race with multiple gcc's
!      instances at same time.  */
!   for (r = 0; r < 5; r++)
!    {
!       mmap_addr = MapViewOfFileEx (mmap_handle, FILE_MAP_COPY, 0, offset,
! 				   size, addr);
!       if (mmap_addr == addr)
! 	break;
!       if (r != 4)
!         Sleep (500);
!    }
! 
!   if (mmap_addr != addr)
      {
!       w32_error (__FUNCTION__, __FILE__, __LINE__, "MapViewOfFileEx");
!       CloseHandle(mmap_handle);
!       return  -1;
      }
  
    return 1;
  }
  
--- 168,191 ----
        return -1;
      }
  
!   /* Try mapping the file at `addr`.  */
!   mmap_addr = MapViewOfFileEx (mmap_handle, FILE_MAP_COPY, 0, offset,
! 			       size, addr);
!   if (mmap_addr == NULL)
      {
!       /* We could not map the file at its original address, so let the
! 	 system choose a different one. The PCH can be relocated later.  */
!       mmap_addr = MapViewOfFileEx (mmap_handle, FILE_MAP_COPY, 0, offset,
! 				   size, NULL);
!       if (mmap_addr == NULL)
! 	{
! 	  w32_error (__FUNCTION__, __FILE__, __LINE__, "MapViewOfFileEx");
! 	  CloseHandle(mmap_handle);
! 	  return  -1;
! 	}
      }
  
+   addr = mmap_addr;
    return 1;
  }
  
diff -Nrcpad gcc-15.2.0/gcc/config/i386/i386-builtin.def gcc-15.3.0/gcc/config/i386/i386-builtin.def
*** gcc-15.2.0/gcc/config/i386/i386-builtin.def	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/i386/i386-builtin.def	Fri Jun 12 06:09:06 2026
*************** BDESC (0, OPTION_MASK_ISA2_AVX10_2, CODE
*** 3678,3690 ****
  BDESC (0, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_vcvttps2udqsv16sf_mask_round, "__builtin_ia32_cvttps2udqs512_mask_round", IX86_BUILTIN_VCVTTPS2UDQS512_MASK_ROUND, UNKNOWN, (int) V16SI_FTYPE_V16SF_V16SI_HI_INT)
  BDESC (0, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_vcvttps2uqqsv8di_mask_round, "__builtin_ia32_cvttps2uqqs512_mask_round", IX86_BUILTIN_VCVTTPS2UQQS512_MASK_ROUND, UNKNOWN, (int) V8DI_FTYPE_V8SF_V8DI_QI_INT)
  BDESC (0, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_vcvttsd2sissi_round, "__builtin_ia32_cvttsd2sis32_round", IX86_BUILTIN_VCVTTSD2SIS32_ROUND, UNKNOWN, (int) INT_FTYPE_V2DF_INT)
! BDESC (0, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_vcvttsd2sisdi_round, "__builtin_ia32_cvttsd2sis64_round", IX86_BUILTIN_VCVTTSD2SIS64_ROUND, UNKNOWN, (int) INT64_FTYPE_V2DF_INT)
  BDESC (0, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_vcvttsd2usissi_round, "__builtin_ia32_cvttsd2usis32_round", IX86_BUILTIN_VCVTTSD2USIS32_ROUND, UNKNOWN, (int) INT_FTYPE_V2DF_INT)
! BDESC (0, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_vcvttsd2usisdi_round, "__builtin_ia32_cvttsd2usis64_round", IX86_BUILTIN_VCVTTSD2USIS64_ROUND, UNKNOWN, (int) INT64_FTYPE_V2DF_INT)
  BDESC (0, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_vcvttss2sissi_round, "__builtin_ia32_cvttss2sis32_round", IX86_BUILTIN_VCVTTSS2SIS32_ROUND, UNKNOWN, (int) INT_FTYPE_V4SF_INT)
! BDESC (0, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_vcvttss2sisdi_round, "__builtin_ia32_cvttss2sis64_round", IX86_BUILTIN_VCVTTSS2SIS64_ROUND, UNKNOWN, (int) INT64_FTYPE_V4SF_INT)
  BDESC (0, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_vcvttss2usissi_round, "__builtin_ia32_cvttss2usis32_round", IX86_BUILTIN_VCVTTSS2USIS32_ROUND, UNKNOWN, (int) INT_FTYPE_V4SF_INT)
! BDESC (0, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_vcvttss2usisdi_round, "__builtin_ia32_cvttss2usis64_round", IX86_BUILTIN_VCVTTSS2USIS64_ROUND, UNKNOWN, (int) INT64_FTYPE_V4SF_INT)
  BDESC (0, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_minmaxpv8df_mask_round, "__builtin_ia32_minmaxpd512_mask_round", IX86_BUILTIN_MINMAXPD512_MASK_ROUND, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_INT_V8DF_UQI_INT)
  BDESC (0, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_minmaxpv32hf_mask_round, "__builtin_ia32_minmaxph512_mask_round", IX86_BUILTIN_MINMAXPH512_MASK_ROUND, UNKNOWN, (int) V32HF_FTYPE_V32HF_V32HF_INT_V32HF_USI_INT)
  BDESC (0, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_minmaxpv16sf_mask_round, "__builtin_ia32_minmaxps512_mask_round", IX86_BUILTIN_MINMAXPS512_MASK_ROUND, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_INT_V16SF_UHI_INT)
--- 3678,3690 ----
  BDESC (0, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_vcvttps2udqsv16sf_mask_round, "__builtin_ia32_cvttps2udqs512_mask_round", IX86_BUILTIN_VCVTTPS2UDQS512_MASK_ROUND, UNKNOWN, (int) V16SI_FTYPE_V16SF_V16SI_HI_INT)
  BDESC (0, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_vcvttps2uqqsv8di_mask_round, "__builtin_ia32_cvttps2uqqs512_mask_round", IX86_BUILTIN_VCVTTPS2UQQS512_MASK_ROUND, UNKNOWN, (int) V8DI_FTYPE_V8SF_V8DI_QI_INT)
  BDESC (0, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_vcvttsd2sissi_round, "__builtin_ia32_cvttsd2sis32_round", IX86_BUILTIN_VCVTTSD2SIS32_ROUND, UNKNOWN, (int) INT_FTYPE_V2DF_INT)
! BDESC (OPTION_MASK_ISA_64BIT, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_vcvttsd2sisdi_round, "__builtin_ia32_cvttsd2sis64_round", IX86_BUILTIN_VCVTTSD2SIS64_ROUND, UNKNOWN, (int) INT64_FTYPE_V2DF_INT)
  BDESC (0, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_vcvttsd2usissi_round, "__builtin_ia32_cvttsd2usis32_round", IX86_BUILTIN_VCVTTSD2USIS32_ROUND, UNKNOWN, (int) INT_FTYPE_V2DF_INT)
! BDESC (OPTION_MASK_ISA_64BIT, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_vcvttsd2usisdi_round, "__builtin_ia32_cvttsd2usis64_round", IX86_BUILTIN_VCVTTSD2USIS64_ROUND, UNKNOWN, (int) INT64_FTYPE_V2DF_INT)
  BDESC (0, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_vcvttss2sissi_round, "__builtin_ia32_cvttss2sis32_round", IX86_BUILTIN_VCVTTSS2SIS32_ROUND, UNKNOWN, (int) INT_FTYPE_V4SF_INT)
! BDESC (OPTION_MASK_ISA_64BIT, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_vcvttss2sisdi_round, "__builtin_ia32_cvttss2sis64_round", IX86_BUILTIN_VCVTTSS2SIS64_ROUND, UNKNOWN, (int) INT64_FTYPE_V4SF_INT)
  BDESC (0, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_vcvttss2usissi_round, "__builtin_ia32_cvttss2usis32_round", IX86_BUILTIN_VCVTTSS2USIS32_ROUND, UNKNOWN, (int) INT_FTYPE_V4SF_INT)
! BDESC (OPTION_MASK_ISA_64BIT, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_vcvttss2usisdi_round, "__builtin_ia32_cvttss2usis64_round", IX86_BUILTIN_VCVTTSS2USIS64_ROUND, UNKNOWN, (int) INT64_FTYPE_V4SF_INT)
  BDESC (0, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_minmaxpv8df_mask_round, "__builtin_ia32_minmaxpd512_mask_round", IX86_BUILTIN_MINMAXPD512_MASK_ROUND, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_INT_V8DF_UQI_INT)
  BDESC (0, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_minmaxpv32hf_mask_round, "__builtin_ia32_minmaxph512_mask_round", IX86_BUILTIN_MINMAXPH512_MASK_ROUND, UNKNOWN, (int) V32HF_FTYPE_V32HF_V32HF_INT_V32HF_USI_INT)
  BDESC (0, OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_minmaxpv16sf_mask_round, "__builtin_ia32_minmaxps512_mask_round", IX86_BUILTIN_MINMAXPS512_MASK_ROUND, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_INT_V16SF_UHI_INT)
diff -Nrcpad gcc-15.2.0/gcc/config/i386/i386-expand.cc gcc-15.3.0/gcc/config/i386/i386-expand.cc
*** gcc-15.2.0/gcc/config/i386/i386-expand.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/i386/i386-expand.cc	Fri Jun 12 06:09:06 2026
*************** ix86_expand_copysign (rtx operands[])
*** 2361,2394 ****
      vdest = gen_reg_rtx (vmode);
    else
      dest = NULL_RTX;
!   op1 = lowpart_subreg (vmode, force_reg (mode, operands[2]), mode);
    mask = ix86_build_signbit_mask (vmode, TARGET_AVX512F && mode != HFmode, 0);
  
!   if (CONST_DOUBLE_P (operands[1]))
      {
!       op0 = simplify_unary_operation (ABS, mode, operands[1], mode);
!       /* Optimize for 0, simplify b = copy_signf (0.0f, a) to b = mask & a.  */
!       if (op0 == CONST0_RTX (mode))
  	{
! 	  emit_move_insn (vdest, gen_rtx_AND (vmode, mask, op1));
! 	  if (dest)
! 	    emit_move_insn (dest, lowpart_subreg (mode, vdest, vmode));
! 	  return;
  	}
! 
!       if (GET_MODE_SIZE (mode) < 16)
! 	op0 = ix86_build_const_vector (vmode, false, op0);
!       op0 = force_reg (vmode, op0);
      }
    else
!     op0 = lowpart_subreg (vmode, force_reg (mode, operands[1]), mode);
  
    op2 = gen_reg_rtx (vmode);
    op3 = gen_reg_rtx (vmode);
!   emit_move_insn (op2, gen_rtx_AND (vmode,
! 				    gen_rtx_NOT (vmode, mask),
! 				    op0));
!   emit_move_insn (op3, gen_rtx_AND (vmode, mask, op1));
    emit_move_insn (vdest, gen_rtx_IOR (vmode, op2, op3));
    if (dest)
      emit_move_insn (dest, lowpart_subreg (mode, vdest, vmode));
--- 2361,2404 ----
      vdest = gen_reg_rtx (vmode);
    else
      dest = NULL_RTX;
!   op1 = lowpart_subreg (vmode, force_reg (mode, operands[1]), mode);
    mask = ix86_build_signbit_mask (vmode, TARGET_AVX512F && mode != HFmode, 0);
  
!   if (CONST_DOUBLE_P (operands[2]))
      {
!       if (real_isneg (CONST_DOUBLE_REAL_VALUE (operands[2])))
! 	/* Simplify b = copysign (a, negative) to b = mask | a.  */
! 	op1 = gen_rtx_IOR (vmode, mask, op1);
!       else
  	{
! 	  /* Simplify b = copysign (a, positive) to b = invert_mask & a.  */
! 	  rtx invert_mask
! 	    = ix86_build_signbit_mask (vmode,
! 				       TARGET_AVX512F && mode != HFmode,
! 				       true);
! 	  op1 = gen_rtx_AND (vmode, invert_mask, op1);
  	}
!       emit_move_insn (vdest, op1);
!       if (dest)
! 	emit_move_insn (dest, lowpart_subreg (mode, vdest, vmode));
!       return;
      }
    else
!     op0 = lowpart_subreg (vmode, force_reg (mode, operands[2]), mode);
  
    op2 = gen_reg_rtx (vmode);
    op3 = gen_reg_rtx (vmode);
!   rtx invert_mask;
!   /* NB: Generate vmovdqa, vpandn, vpand, vpor for AVX and generate pand,
!      pand, por for SSE.  */
!   if (TARGET_AVX)
!     invert_mask = gen_rtx_NOT (vmode, mask);
!   else
!     invert_mask = ix86_build_signbit_mask (vmode,
! 					   TARGET_AVX512F && mode != HFmode,
! 					   true);
!   emit_move_insn (op2, gen_rtx_AND (vmode, invert_mask, op1));
!   emit_move_insn (op3, gen_rtx_AND (vmode, mask, op0));
    emit_move_insn (vdest, gen_rtx_IOR (vmode, op2, op3));
    if (dest)
      emit_move_insn (dest, lowpart_subreg (mode, vdest, vmode));
*************** ix86_expand_builtin (tree exp, rtx targe
*** 14105,14111 ****
  	for (i = 0; i < 3; i++)
  	  xmm_regs[i] = gen_rtx_REG (V2DImode, GET_SSE_REGNO (i));
  
! 	if (target == 0)
  	  target = gen_reg_rtx (SImode);
  
  	emit_insn (gen_encodekey128u32 (target, op0));
--- 14115,14121 ----
  	for (i = 0; i < 3; i++)
  	  xmm_regs[i] = gen_rtx_REG (V2DImode, GET_SSE_REGNO (i));
  
! 	if (target == 0 || !register_operand (target, SImode))
  	  target = gen_reg_rtx (SImode);
  
  	emit_insn (gen_encodekey128u32 (target, op0));
*************** ix86_expand_builtin (tree exp, rtx targe
*** 14148,14154 ****
  	for (i = 0; i < 4; i++)
  	  xmm_regs[i] = gen_rtx_REG (V2DImode, GET_SSE_REGNO (i));
  
! 	if (target == 0)
  	  target = gen_reg_rtx (SImode);
  
  	emit_insn (gen_encodekey256u32 (target, op0));
--- 14158,14164 ----
  	for (i = 0; i < 4; i++)
  	  xmm_regs[i] = gen_rtx_REG (V2DImode, GET_SSE_REGNO (i));
  
! 	if (target == 0 || !register_operand (target, SImode))
  	  target = gen_reg_rtx (SImode);
  
  	emit_insn (gen_encodekey256u32 (target, op0));
*************** ix86_expand_builtin (tree exp, rtx targe
*** 14297,14303 ****
  	  }
  	else
  	  {
! 	    if (target == 0)
  	      target = gen_reg_rtx (DImode);
  	    icode = CODE_FOR_urdmsr;
  	    op1 = op0;
--- 14307,14313 ----
  	  }
  	else
  	  {
! 	    if (target == 0 || !register_operand (target, DImode))
  	      target = gen_reg_rtx (DImode);
  	    icode = CODE_FOR_urdmsr;
  	    op1 = op0;
diff -Nrcpad gcc-15.2.0/gcc/config/i386/i386-options.cc gcc-15.3.0/gcc/config/i386/i386-options.cc
*** gcc-15.2.0/gcc/config/i386/i386-options.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/i386/i386-options.cc	Fri Jun 12 06:09:06 2026
*************** ix86_option_override_internal (bool main
*** 3047,3053 ****
        else
  	{
  	  opts->x_ix86_move_max = opts->x_prefer_vector_width_type;
! 	  if (opts_set->x_ix86_move_max == PVW_NONE)
  	    {
  	      if (TARGET_AVX512F_P (opts->x_ix86_isa_flags)
  		  && TARGET_EVEX512_P (opts->x_ix86_isa_flags2))
--- 3047,3053 ----
        else
  	{
  	  opts->x_ix86_move_max = opts->x_prefer_vector_width_type;
! 	  if (opts->x_ix86_move_max == PVW_NONE)
  	    {
  	      if (TARGET_AVX512F_P (opts->x_ix86_isa_flags)
  		  && TARGET_EVEX512_P (opts->x_ix86_isa_flags2))
diff -Nrcpad gcc-15.2.0/gcc/config/i386/i386.cc gcc-15.3.0/gcc/config/i386/i386.cc
*** gcc-15.2.0/gcc/config/i386/i386.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/i386/i386.cc	Fri Jun 12 06:09:06 2026
*************** ix86_zero_call_used_regs (HARD_REG_SET n
*** 3994,3999 ****
--- 3994,4010 ----
      {
        emit_insn (zero_all_vec_insn);
        all_sse_zeroed = true;
+       if (TARGET_64BIT && TARGET_AVX512F)
+ 	{
+ 	  rtx zero = CONST0_RTX (V4SFmode);
+ 	  for (unsigned int regno = XMM16_REG;
+ 	       regno <= XMM31_REG;
+ 	       regno++)
+ 	    {
+ 	      rtx reg = gen_rtx_REG (V4SFmode, regno);
+ 	      emit_move_insn (reg, zero);
+ 	    }
+ 	}
      }
  
    /* mm/st registers are shared registers set, we should follow the following
*************** static GTY(()) rtx ix86_tls_symbol;
*** 12132,12137 ****
--- 12143,12170 ----
  static rtx
  ix86_tls_get_addr (void)
  {
+   if (cfun->machine->call_saved_registers
+       == TYPE_NO_CALLER_SAVED_REGISTERS)
+     {
+       /* __tls_get_addr doesn't preserve vector registers.  When a
+ 	 function with no_caller_saved_registers attribute calls
+ 	 __tls_get_addr, YMM and ZMM registers will be clobbered.
+ 	 Issue an error and suggest -mtls-dialect=gnu2 in this case.  */
+       if (cfun->machine->func_type == TYPE_NORMAL)
+ 	error (G_("%<-mtls-dialect=gnu2%> must be used with a function"
+ 		  " with the %<no_caller_saved_registers%> attribute"));
+       else
+ 	error (cfun->machine->func_type == TYPE_EXCEPTION
+ 	       ? G_("%<-mtls-dialect=gnu2%> must be used with an"
+ 		    " exception service routine")
+ 	       : G_("%<-mtls-dialect=gnu2%> must be used with an"
+ 		    " interrupt service routine"));
+       /* Don't issue the same error twice.  */
+       cfun->machine->func_type = TYPE_NORMAL;
+       cfun->machine->call_saved_registers
+ 	= TYPE_DEFAULT_CALL_SAVED_REGISTERS;
+     }
+ 
    if (!ix86_tls_symbol)
      {
        const char *sym
*************** avx_vpermilp_parallel (rtx par, machine_
*** 20224,20230 ****
  	}
        for (i = 2; i < 4; ++i)
  	{
! 	  if (ipar[i] < 2)
  	    return 0;
  	  mask |= (ipar[i] - 2) << i;
  	}
--- 20257,20263 ----
  	}
        for (i = 2; i < 4; ++i)
  	{
! 	  if (ipar[i] < 2 || ipar[i] >= 4)
  	    return 0;
  	  mask |= (ipar[i] - 2) << i;
  	}
diff -Nrcpad gcc-15.2.0/gcc/config/i386/i386.h gcc-15.3.0/gcc/config/i386/i386.h
*** gcc-15.2.0/gcc/config/i386/i386.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/i386/i386.h	Fri Jun 12 06:09:06 2026
*************** constexpr wide_int_bitmask PTA_CLEARWATE
*** 2446,2452 ****
    (PTA_SIERRAFOREST & (~(PTA_KL | PTA_WIDEKL))) | PTA_AVXVNNIINT16 | PTA_SHA512
    | PTA_SM3 | PTA_SM4 | PTA_USER_MSR | PTA_PREFETCHI;
  constexpr wide_int_bitmask PTA_PANTHERLAKE =
!   (PTA_ARROWLAKE_S & (~(PTA_KL | PTA_WIDEKL))) | PTA_PREFETCHI;
  constexpr wide_int_bitmask PTA_DIAMONDRAPIDS = PTA_SKYLAKE | PTA_PKU | PTA_SHA
    | PTA_GFNI | PTA_VAES | PTA_VPCLMULQDQ | PTA_RDPID | PTA_PCONFIG
    | PTA_WBNOINVD | PTA_CLWB | PTA_MOVDIRI | PTA_MOVDIR64B | PTA_ENQCMD
--- 2446,2452 ----
    (PTA_SIERRAFOREST & (~(PTA_KL | PTA_WIDEKL))) | PTA_AVXVNNIINT16 | PTA_SHA512
    | PTA_SM3 | PTA_SM4 | PTA_USER_MSR | PTA_PREFETCHI;
  constexpr wide_int_bitmask PTA_PANTHERLAKE =
!   (PTA_ARROWLAKE_S & (~(PTA_KL | PTA_WIDEKL)));
  constexpr wide_int_bitmask PTA_DIAMONDRAPIDS = PTA_SKYLAKE | PTA_PKU | PTA_SHA
    | PTA_GFNI | PTA_VAES | PTA_VPCLMULQDQ | PTA_RDPID | PTA_PCONFIG
    | PTA_WBNOINVD | PTA_CLWB | PTA_MOVDIRI | PTA_MOVDIR64B | PTA_ENQCMD
*************** constexpr wide_int_bitmask PTA_DIAMONDRA
*** 2456,2462 ****
    | PTA_AVX10_1 | PTA_AVXIFMA | PTA_AVXNECONVERT | PTA_AVXVNNIINT16
    | PTA_AVXVNNIINT8 | PTA_CMPCCXADD | PTA_SHA512 | PTA_SM3 | PTA_SM4
    | PTA_AVX10_2 | PTA_APX_F | PTA_AMX_AVX512 | PTA_AMX_FP8 | PTA_AMX_TF32
!   | PTA_AMX_TRANSPOSE | PTA_MOVRS | PTA_AMX_MOVRS | PTA_USER_MSR;
  
  constexpr wide_int_bitmask PTA_BDVER1 = PTA_64BIT | PTA_MMX | PTA_SSE
    | PTA_SSE2 | PTA_SSE3 | PTA_SSE4A | PTA_CX16 | PTA_ABM | PTA_SSSE3
--- 2456,2462 ----
    | PTA_AVX10_1 | PTA_AVXIFMA | PTA_AVXNECONVERT | PTA_AVXVNNIINT16
    | PTA_AVXVNNIINT8 | PTA_CMPCCXADD | PTA_SHA512 | PTA_SM3 | PTA_SM4
    | PTA_AVX10_2 | PTA_APX_F | PTA_AMX_AVX512 | PTA_AMX_FP8 | PTA_AMX_TF32
!   | PTA_MOVRS | PTA_AMX_MOVRS;
  
  constexpr wide_int_bitmask PTA_BDVER1 = PTA_64BIT | PTA_MMX | PTA_SSE
    | PTA_SSE2 | PTA_SSE3 | PTA_SSE4A | PTA_CX16 | PTA_ABM | PTA_SSSE3
diff -Nrcpad gcc-15.2.0/gcc/config/i386/i386.md gcc-15.3.0/gcc/config/i386/i386.md
*** gcc-15.2.0/gcc/config/i386/i386.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/i386/i386.md	Fri Jun 12 06:09:06 2026
***************
*** 4983,4989 ****
    "TARGET_64BIT"
    "@
     {cltq|cdqe}
!    movs{lq|x}\t{%1, %0|%0, %1}"
    [(set_attr "type" "imovx")
     (set_attr "mode" "DI")
     (set_attr "prefix_0f" "0")
--- 4983,4989 ----
    "TARGET_64BIT"
    "@
     {cltq|cdqe}
!    movs{lq|xd}\t{%1, %0|%0, %1}"
    [(set_attr "type" "imovx")
     (set_attr "mode" "DI")
     (set_attr "prefix_0f" "0")
***************
*** 8677,8683 ****
    [(set (reg FLAGS_REG)
  	(compare (match_operand:SWI 1 "nonimmediate_operand" "0,0,rm,r")
  		 (match_operand:SWI 2 "<general_operand>" "<r><i>,<m>,r<i>,<m>")))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>i,r,r")
  	(minus:SWI (match_dup 1) (match_dup 2)))]
    "ix86_match_ccmode (insn, CCmode)
     && ix86_binary_operator_ok (MINUS, <MODE>mode, operands, TARGET_APX_NDD)"
--- 8677,8683 ----
    [(set (reg FLAGS_REG)
  	(compare (match_operand:SWI 1 "nonimmediate_operand" "0,0,rm,r")
  		 (match_operand:SWI 2 "<general_operand>" "<r><i>,<m>,r<i>,<m>")))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>,r,r")
  	(minus:SWI (match_dup 1) (match_dup 2)))]
    "ix86_match_ccmode (insn, CCmode)
     && ix86_binary_operator_ok (MINUS, <MODE>mode, operands, TARGET_APX_NDD)"
***************
*** 14952,14959 ****
  
  (define_expand "copysign<mode>3"
    [(match_operand:SSEMODEF 0 "register_operand")
!    (match_operand:SSEMODEF 1 "nonmemory_operand")
!    (match_operand:SSEMODEF 2 "register_operand")]
    "(SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH)
     || (TARGET_SSE && (<MODE>mode == TFmode))
     || (TARGET_AVX512FP16 && (<MODE>mode ==HFmode))"
--- 14952,14959 ----
  
  (define_expand "copysign<mode>3"
    [(match_operand:SSEMODEF 0 "register_operand")
!    (match_operand:SSEMODEF 1 "register_operand")
!    (match_operand:SSEMODEF 2 "nonmemory_operand")]
    "(SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH)
     || (TARGET_SSE && (<MODE>mode == TFmode))
     || (TARGET_AVX512FP16 && (<MODE>mode ==HFmode))"
***************
*** 21519,21529 ****
    "&& TARGET_AVOID_FALSE_DEP_FOR_BMI && epilogue_completed
     && optimize_function_for_speed_p (cfun)
     && !reg_mentioned_p (operands[0], operands[1])"
!   [(parallel
      [(set (match_dup 0)
  	  (clz:SWI48 (match_dup 1)))
       (unspec [(match_dup 0)] UNSPEC_INSN_FALSE_DEP)])]
!   "ix86_expand_clear (operands[0]);"
    [(set_attr "prefix_rep" "1")
     (set_attr "type" "bitmanip")
     (set_attr "mode" "<MODE>")])
--- 21519,21530 ----
    "&& TARGET_AVOID_FALSE_DEP_FOR_BMI && epilogue_completed
     && optimize_function_for_speed_p (cfun)
     && !reg_mentioned_p (operands[0], operands[1])"
!   [(set (match_dup 0) (const_int 0))
!    (parallel
      [(set (match_dup 0)
  	  (clz:SWI48 (match_dup 1)))
       (unspec [(match_dup 0)] UNSPEC_INSN_FALSE_DEP)])]
!   ""
    [(set_attr "prefix_rep" "1")
     (set_attr "type" "bitmanip")
     (set_attr "mode" "<MODE>")])
***************
*** 21680,21690 ****
    "&& TARGET_AVOID_FALSE_DEP_FOR_BMI && epilogue_completed
     && optimize_function_for_speed_p (cfun)
     && !reg_mentioned_p (operands[0], operands[1])"
!   [(parallel
      [(set (match_dup 0)
  	  (unspec:SWI48 [(match_dup 1)] LT_ZCNT))
       (unspec [(match_dup 0)] UNSPEC_INSN_FALSE_DEP)])]
!   "ix86_expand_clear (operands[0]);"
    [(set_attr "type" "<lt_zcnt_type>")
     (set_attr "prefix_0f" "1")
     (set_attr "prefix_rep" "1")
--- 21681,21692 ----
    "&& TARGET_AVOID_FALSE_DEP_FOR_BMI && epilogue_completed
     && optimize_function_for_speed_p (cfun)
     && !reg_mentioned_p (operands[0], operands[1])"
!   [(set (match_dup 0) (const_int 0))
!    (parallel
      [(set (match_dup 0)
  	  (unspec:SWI48 [(match_dup 1)] LT_ZCNT))
       (unspec [(match_dup 0)] UNSPEC_INSN_FALSE_DEP)])]
!   ""
    [(set_attr "type" "<lt_zcnt_type>")
     (set_attr "prefix_0f" "1")
     (set_attr "prefix_rep" "1")
***************
*** 22326,22336 ****
    "&& TARGET_AVOID_FALSE_DEP_FOR_BMI && epilogue_completed
     && optimize_function_for_speed_p (cfun)
     && !reg_mentioned_p (operands[0], operands[1])"
!   [(parallel
      [(set (match_dup 0)
  	  (popcount:SWI48 (match_dup 1)))
       (unspec [(match_dup 0)] UNSPEC_INSN_FALSE_DEP)])]
!   "ix86_expand_clear (operands[0]);"
    [(set_attr "prefix_rep" "1")
     (set_attr "type" "bitmanip")
     (set_attr "mode" "<MODE>")])
--- 22328,22339 ----
    "&& TARGET_AVOID_FALSE_DEP_FOR_BMI && epilogue_completed
     && optimize_function_for_speed_p (cfun)
     && !reg_mentioned_p (operands[0], operands[1])"
!   [(set (match_dup 0) (const_int 0))
!    (parallel
      [(set (match_dup 0)
  	  (popcount:SWI48 (match_dup 1)))
       (unspec [(match_dup 0)] UNSPEC_INSN_FALSE_DEP)])]
!   ""
    [(set_attr "prefix_rep" "1")
     (set_attr "type" "bitmanip")
     (set_attr "mode" "<MODE>")])
***************
*** 26585,26591 ****
    [(set (match_operand:HF 0 "nonimmediate_operand" "=v,m,v")
  	(unspec:HF
  	  [(match_operand:HF 1 "nonimmediate_operand" "m,v,v")
! 	   (match_operand:HF 2 "nonimm_or_0_operand" "0C,0C,0C")
  	   (match_operand:QI 3 "register_operand" "Yk,Yk,Yk")]
  	  UNSPEC_MOVCC_MASK))]
    "TARGET_AVX512FP16"
--- 26588,26594 ----
    [(set (match_operand:HF 0 "nonimmediate_operand" "=v,m,v")
  	(unspec:HF
  	  [(match_operand:HF 1 "nonimmediate_operand" "m,v,v")
! 	   (match_operand:HF 2 "nonimm_or_0_operand" "0C,0,0C")
  	   (match_operand:QI 3 "register_operand" "Yk,Yk,Yk")]
  	  UNSPEC_MOVCC_MASK))]
    "TARGET_AVX512FP16"
***************
*** 27625,27631 ****
  {
    output_asm_insn ("mov{<imodesuffix>}\t{%3, %<k>1|%<k>1, %3}", operands);
    output_asm_insn ("mov{<imodesuffix>}\t{%<k>1, %0|%0, %<k>1}", operands);
!   return "movs{lq|x}\t{%2, %1|%1, %2}";
  }
    [(set_attr "type" "multi")
     (set_attr "length" "24")])
--- 27628,27634 ----
  {
    output_asm_insn ("mov{<imodesuffix>}\t{%3, %<k>1|%<k>1, %3}", operands);
    output_asm_insn ("mov{<imodesuffix>}\t{%<k>1, %0|%0, %<k>1}", operands);
!   return "movs{lq|xd}\t{%2, %1|%1, %2}";
  }
    [(set_attr "type" "multi")
     (set_attr "length" "24")])
***************
*** 28785,28791 ****
  (define_peephole2
    [(parallel
      [(set (match_operand:SWI48 0 "register_operand")
! 	  (mult:SWI48 (match_operand:SWI48 1 "register_operand")
  		      (match_operand:SWI48 2 "const359_operand")))
       (clobber (reg:CC FLAGS_REG))])]
    "!TARGET_PARTIAL_REG_STALL
--- 28788,28794 ----
  (define_peephole2
    [(parallel
      [(set (match_operand:SWI48 0 "register_operand")
! 	  (mult:SWI48 (match_operand:SWI48 1 "index_reg_operand")
  		      (match_operand:SWI48 2 "const359_operand")))
       (clobber (reg:CC FLAGS_REG))])]
    "!TARGET_PARTIAL_REG_STALL
***************
*** 28798,28804 ****
  
  (define_peephole2
    [(parallel
!     [(set (match_operand:SWI48 0 "register_operand")
  	  (mult:SWI48 (match_operand:SWI48 1 "nonimmediate_operand")
  		      (match_operand:SWI48 2 "const359_operand")))
       (clobber (reg:CC FLAGS_REG))])]
--- 28801,28807 ----
  
  (define_peephole2
    [(parallel
!     [(set (match_operand:SWI48 0 "index_reg_operand")
  	  (mult:SWI48 (match_operand:SWI48 1 "nonimmediate_operand")
  		      (match_operand:SWI48 2 "const359_operand")))
       (clobber (reg:CC FLAGS_REG))])]
***************
*** 29508,29514 ****
    [(unspec_volatile [(match_operand:SWI48 0 "nonimmediate_operand" "rm")]
  		    UNSPECV_PTWRITE)]
    "TARGET_PTWRITE"
!   "ptwrite\t%0"
    [(set_attr "type" "other")
     (set_attr "prefix_0f" "1")
     (set_attr "prefix_rep" "1")])
--- 29511,29517 ----
    [(unspec_volatile [(match_operand:SWI48 0 "nonimmediate_operand" "rm")]
  		    UNSPECV_PTWRITE)]
    "TARGET_PTWRITE"
!   "ptwrite{<imodesuffix>|}\t%0"
    [(set_attr "type" "other")
     (set_attr "prefix_0f" "1")
     (set_attr "prefix_rep" "1")])
***************
*** 29590,29596 ****
  		     (match_operand:SWI48 1 "memory_operand" "m")]
  		    UNSPECV_WRSS)]
    "TARGET_SHSTK"
!   "wrss<mskmodesuffix>\t%0, %1"
    [(set_attr "length" "3")
     (set_attr "type" "other")])
  
--- 29593,29599 ----
  		     (match_operand:SWI48 1 "memory_operand" "m")]
  		    UNSPECV_WRSS)]
    "TARGET_SHSTK"
!   "wrss<mskmodesuffix>\t{%0, %1|%1, %0}"
    [(set_attr "length" "3")
     (set_attr "type" "other")])
  
***************
*** 29599,29605 ****
  		     (match_operand:SWI48 1 "memory_operand" "m")]
  		    UNSPECV_WRUSS)]
    "TARGET_SHSTK"
!   "wruss<mskmodesuffix>\t%0, %1"
    [(set_attr "length" "4")
     (set_attr "type" "other")])
  
--- 29602,29608 ----
  		     (match_operand:SWI48 1 "memory_operand" "m")]
  		    UNSPECV_WRUSS)]
    "TARGET_SHSTK"
!   "wruss<mskmodesuffix>\t{%0, %1|%1, %0}"
    [(set_attr "length" "4")
     (set_attr "type" "other")])
  
***************
*** 30119,30125 ****
        [(match_operand:SWI1248x 1 "memory_operand" "m")]
        UNSPECV_MOVRS))]
    "TARGET_MOVRS && TARGET_64BIT"
!   "movrs<imodesuffix>\t{%1, %0|%0, %1}"
    [(set_attr "prefix" "orig")
     (set_attr "type" "other")
     (set_attr "mode" "<MODE>")])
--- 30122,30128 ----
        [(match_operand:SWI1248x 1 "memory_operand" "m")]
        UNSPECV_MOVRS))]
    "TARGET_MOVRS && TARGET_64BIT"
!   "movrs{<imodesuffix>}\t{%1, %0|%0, %1}"
    [(set_attr "prefix" "orig")
     (set_attr "type" "other")
     (set_attr "mode" "<MODE>")])
diff -Nrcpad gcc-15.2.0/gcc/config/i386/mmx.md gcc-15.3.0/gcc/config/i386/mmx.md
*** gcc-15.2.0/gcc/config/i386/mmx.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/i386/mmx.md	Fri Jun 12 06:09:06 2026
***************
*** 2038,2044 ****
  	(div:V4HF
  	  (match_operand:V4HF 1 "nonimmediate_operand")
  	  (match_operand:V4HF 2 "register_operand")))]
!   "TARGET_AVX512FP16 && TARGET_AVX512VL && ix86_partial_vec_fp_math"
  {
    rtx op2 = gen_reg_rtx (V8HFmode);
    rtx op1 = gen_reg_rtx (V8HFmode);
--- 2038,2045 ----
  	(div:V4HF
  	  (match_operand:V4HF 1 "nonimmediate_operand")
  	  (match_operand:V4HF 2 "register_operand")))]
!   "TARGET_AVX512FP16 && TARGET_AVX512VL && ix86_partial_vec_fp_math
!   && TARGET_MMX_WITH_SSE"
  {
    rtx op2 = gen_reg_rtx (V8HFmode);
    rtx op1 = gen_reg_rtx (V8HFmode);
***************
*** 2873,2879 ****
     (match_operand:V4HF 1 "vector_operand")
     (match_operand:V4HF 2 "vector_operand")
     (match_operand:V4HF 3 "vector_operand")]
!   "TARGET_AVX512FP16 && TARGET_AVX512VL"
  {
    rtx op3 = gen_reg_rtx (V8HFmode);
    rtx op2 = gen_reg_rtx (V8HFmode);
--- 2874,2881 ----
     (match_operand:V4HF 1 "vector_operand")
     (match_operand:V4HF 2 "vector_operand")
     (match_operand:V4HF 3 "vector_operand")]
!   "TARGET_AVX512FP16 && TARGET_AVX512VL
!   && TARGET_MMX_WITH_SSE"
  {
    rtx op3 = gen_reg_rtx (V8HFmode);
    rtx op2 = gen_reg_rtx (V8HFmode);
***************
*** 2895,2901 ****
     (match_operand:V4HF 1 "vector_operand")
     (match_operand:V4HF 2 "vector_operand")
     (match_operand:V4HF 3 "vector_operand")]
!   "TARGET_AVX512FP16 && TARGET_AVX512VL"
  {
    rtx op3 = gen_reg_rtx (V8HFmode);
    rtx op2 = gen_reg_rtx (V8HFmode);
--- 2897,2904 ----
     (match_operand:V4HF 1 "vector_operand")
     (match_operand:V4HF 2 "vector_operand")
     (match_operand:V4HF 3 "vector_operand")]
!   "TARGET_AVX512FP16 && TARGET_AVX512VL
!   && TARGET_MMX_WITH_SSE"
  {
    rtx op3 = gen_reg_rtx (V8HFmode);
    rtx op2 = gen_reg_rtx (V8HFmode);
***************
*** 2916,2922 ****
    [(match_operand:V4HF 0 "register_operand")
     (match_operand:V4HF 1 "vector_operand")
     (match_operand:V4HF 2 "vector_operand")]
!   "TARGET_AVX512FP16 && TARGET_AVX512VL"
  {
    rtx op2 = gen_reg_rtx (V8HFmode);
    rtx op1 = gen_reg_rtx (V8HFmode);
--- 2919,2926 ----
    [(match_operand:V4HF 0 "register_operand")
     (match_operand:V4HF 1 "vector_operand")
     (match_operand:V4HF 2 "vector_operand")]
!   "TARGET_AVX512FP16 && TARGET_AVX512VL
!   && TARGET_MMX_WITH_SSE"
  {
    rtx op2 = gen_reg_rtx (V8HFmode);
    rtx op1 = gen_reg_rtx (V8HFmode);
***************
*** 2934,2940 ****
    [(match_operand:V4HF 0 "register_operand")
     (match_operand:V4HF 1 "vector_operand")
     (match_operand:V4HF 2 "vector_operand")]
!   "TARGET_AVX512FP16 && TARGET_AVX512VL"
  {
    rtx op2 = gen_reg_rtx (V8HFmode);
    rtx op1 = gen_reg_rtx (V8HFmode);
--- 2938,2945 ----
    [(match_operand:V4HF 0 "register_operand")
     (match_operand:V4HF 1 "vector_operand")
     (match_operand:V4HF 2 "vector_operand")]
!   "TARGET_AVX512FP16 && TARGET_AVX512VL
!   && TARGET_MMX_WITH_SSE"
  {
    rtx op2 = gen_reg_rtx (V8HFmode);
    rtx op1 = gen_reg_rtx (V8HFmode);
diff -Nrcpad gcc-15.2.0/gcc/config/i386/sse.md gcc-15.3.0/gcc/config/i386/sse.md
*** gcc-15.2.0/gcc/config/i386/sse.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/i386/sse.md	Fri Jun 12 06:09:06 2026
***************
*** 1722,1728 ****
  	  (match_operand:<ssevecmode> 4 "const0_operand")
  	  (const_int 1)))]
    "TARGET_AVX512F"
!   "vmov<ssescalarmodesuffix>\t{%1, %0%{%3%}%N2|%0%{3%}%N2, %1}"
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "evex")
     (set_attr "memory" "load")
--- 1722,1728 ----
  	  (match_operand:<ssevecmode> 4 "const0_operand")
  	  (const_int 1)))]
    "TARGET_AVX512F"
!   "vmov<ssescalarmodesuffix>\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "evex")
     (set_attr "memory" "load")
***************
*** 4890,4896 ****
  	    (match_operand:V8BF 1 "nonimmediate_operand" "vm")
  	    (parallel [(const_int 0)]))))]
    "TARGET_AVX10_2"
!   "vcomisbf16\t{%1, %0|%0, %1}"
    [(set_attr "prefix" "evex")
     (set_attr "type" "ssecomi")])
  
--- 4890,4896 ----
  	    (match_operand:V8BF 1 "nonimmediate_operand" "vm")
  	    (parallel [(const_int 0)]))))]
    "TARGET_AVX10_2"
!   "vcomisbf16\t{%1, %0|%0, %w1}"
    [(set_attr "prefix" "evex")
     (set_attr "type" "ssecomi")])
  
***************
*** 6693,6699 ****
  	  (match_dup 3)
  	  (const_int 1)))]
    "TARGET_AVX512F"
!   "vfmadd231<ssescalarmodesuffix>\t{<round_op5>%2, %1, %0%{%4%}|%0%{%4%}, %<iptr>3, %<iptr>2<round_op5>}"
    [(set_attr "type" "ssemuladd")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<MODE>")])
--- 6693,6699 ----
  	  (match_dup 3)
  	  (const_int 1)))]
    "TARGET_AVX512F"
!   "vfmadd231<ssescalarmodesuffix>\t{<round_op5>%2, %1, %0%{%4%}|%0%{%4%}, %<iptr>1, %<iptr>2<round_op5>}"
    [(set_attr "type" "ssemuladd")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<MODE>")])
***************
*** 6767,6773 ****
  	  (match_dup 3)
  	  (const_int 1)))]
    "TARGET_AVX512F"
!   "vfmsub231<ssescalarmodesuffix>\t{<round_op5>%2, %1, %0%{%4%}|%0%{%4%}, %<iptr>3, %<iptr>2<round_op5>}"
    [(set_attr "type" "ssemuladd")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<MODE>")])
--- 6767,6773 ----
  	  (match_dup 3)
  	  (const_int 1)))]
    "TARGET_AVX512F"
!   "vfmsub231<ssescalarmodesuffix>\t{<round_op5>%2, %1, %0%{%4%}|%0%{%4%}, %<iptr>1, %<iptr>2<round_op5>}"
    [(set_attr "type" "ssemuladd")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<MODE>")])
***************
*** 6828,6834 ****
  	  (match_dup 3)
  	  (const_int 1)))]
    "TARGET_AVX512F"
!   "vfnmadd231<ssescalarmodesuffix>\t{<round_op5>%2, %1, %0%{%4%}|%0%{%4%}, %<iptr>3, %<iptr>2<round_op5>}"
    [(set_attr "type" "ssemuladd")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<MODE>")])
--- 6828,6834 ----
  	  (match_dup 3)
  	  (const_int 1)))]
    "TARGET_AVX512F"
!   "vfnmadd231<ssescalarmodesuffix>\t{<round_op5>%2, %1, %0%{%4%}|%0%{%4%}, %<iptr>1, %<iptr>2<round_op5>}"
    [(set_attr "type" "ssemuladd")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<MODE>")])
***************
*** 6905,6911 ****
  	  (match_dup 3)
  	  (const_int 1)))]
    "TARGET_AVX512F"
!   "vfnmsub231<ssescalarmodesuffix>\t{<round_op5>%2, %1, %0%{%4%}|%0%{%4%}, %<iptr>3, %<iptr>2<round_op5>}"
    [(set_attr "type" "ssemuladd")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<MODE>")])
--- 6905,6911 ----
  	  (match_dup 3)
  	  (const_int 1)))]
    "TARGET_AVX512F"
!   "vfnmsub231<ssescalarmodesuffix>\t{<round_op5>%2, %1, %0%{%4%}|%0%{%4%}, %<iptr>1, %<iptr>2<round_op5>}"
    [(set_attr "type" "ssemuladd")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<MODE>")])
***************
*** 12034,12040 ****
    operands[2] = gen_lowpart (<ssescalarmode>mode, operands[2]);
  })
  
! ;; vmovw clears also the higer bits
  (define_insn "vec_set<mode>_0"
    [(set (match_operand:VI2F_256_512 0 "register_operand" "=v,v,v")
  	(vec_merge:VI2F_256_512
--- 12034,12040 ----
    operands[2] = gen_lowpart (<ssescalarmode>mode, operands[2]);
  })
  
! ;; vmovw clears also the higher bits
  (define_insn "vec_set<mode>_0"
    [(set (match_operand:VI2F_256_512 0 "register_operand" "=v,v,v")
  	(vec_merge:VI2F_256_512
***************
*** 12099,12108 ****
  	  (match_operand:V8_128 1 "reg_or_0_operand" "v,C")
  	  (const_int 1)))]
    "TARGET_AVX512FP16
!   || (TARGET_AVX10_2 && const0_operand (operands[1], <MODE>mode))"
    "@
      vmovsh\t{%2, %1, %0|%0, %1, %2}
!     vmovw\t{%2, %0|%2, %0}"
    [(set_attr "isa" "*,avx10_2")
     (set_attr "type" "ssemov")
     (set_attr "prefix" "evex")
--- 12099,12108 ----
  	  (match_operand:V8_128 1 "reg_or_0_operand" "v,C")
  	  (const_int 1)))]
    "TARGET_AVX512FP16
!    || (TARGET_AVX10_2 && const0_operand (operands[1], <MODE>mode))"
    "@
      vmovsh\t{%2, %1, %0|%0, %1, %2}
!     vmovw\t{%2, %0|%0, %2}"
    [(set_attr "isa" "*,avx10_2")
     (set_attr "type" "ssemov")
     (set_attr "prefix" "evex")
***************
*** 18544,18552 ****
        tmp = "pternlog";
        ssesuffix = "<ternlogsuffix>";
        if (which_alternative != 4 || TARGET_AVX512VL)
! 	ops = "v%s%s\t{$0x44, %%1, %%2, %%0|%%0, %%2, %%1, $0x44}";
        else
! 	ops = "v%s%s\t{$0x44, %%g1, %%g2, %%g0|%%g0, %%g2, %%g1, $0x44}";
        break;
      default:
        gcc_unreachable ();
--- 18544,18552 ----
        tmp = "pternlog";
        ssesuffix = "<ternlogsuffix>";
        if (which_alternative != 4 || TARGET_AVX512VL)
! 	ops = "v%s%s\t{$0x44, %%1, %%2, %%0|%%0, %%2, %%1, 0x44}";
        else
! 	ops = "v%s%s\t{$0x44, %%g1, %%g2, %%g0|%%g0, %%g2, %%g1, 0x44}";
        break;
      default:
        gcc_unreachable ();
***************
*** 24254,24260 ****
     (set_attr "prefix" "orig,orig,maybe_evex")
     (set_attr "mode" "TI")])
  
! (define_insn_and_split "*sse4_1_<code>v8qiv8hi2<mask_name>_2"
    [(set (match_operand:V8HI 0 "register_operand")
  	(any_extend:V8HI
  	  (vec_select:V8QI
--- 24254,24260 ----
     (set_attr "prefix" "orig,orig,maybe_evex")
     (set_attr "mode" "TI")])
  
! (define_insn_and_split "*sse4_1_<code>v8qiv8hi2_2"
    [(set (match_operand:V8HI 0 "register_operand")
  	(any_extend:V8HI
  	  (vec_select:V8QI
***************
*** 24266,24272 ****
  		       (const_int 2) (const_int 3)
  		       (const_int 4) (const_int 5)
  		       (const_int 6) (const_int 7)]))))]
!   "TARGET_SSE4_1 && <mask_avx512bw_condition> && <mask_avx512vl_condition>
     && ix86_pre_reload_split ()"
    "#"
    "&& 1"
--- 24266,24272 ----
  		       (const_int 2) (const_int 3)
  		       (const_int 4) (const_int 5)
  		       (const_int 6) (const_int 7)]))))]
!   "TARGET_SSE4_1
     && ix86_pre_reload_split ()"
    "#"
    "&& 1"
***************
*** 24274,24279 ****
--- 24274,24305 ----
  	(any_extend:V8HI (match_dup 1)))]
    "operands[1] = adjust_address_nv (operands[1], V8QImode, 0);")
  
+ (define_insn_and_split "*avx512vl_<code>v8qiv8hi2_mask_2"
+   [(set (match_operand:V8HI 0 "register_operand")
+ 	(vec_merge:V8HI
+ 	  (any_extend:V8HI
+ 	    (vec_select:V8QI
+ 	      (subreg:V16QI
+ 		(vec_concat:V2DI
+ 		  (match_operand:DI 1 "memory_operand")
+ 		  (const_int 0)) 0)
+ 	      (parallel [(const_int 0) (const_int 1)
+ 			 (const_int 2) (const_int 3)
+ 		         (const_int 4) (const_int 5)
+ 		         (const_int 6) (const_int 7)])))
+ 	  (match_operand:V8HI 2 "nonimm_or_0_operand")
+ 	  (match_operand:QI 3 "register_operand")))]
+   "TARGET_AVX512VL && TARGET_AVX512BW
+    && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(set (match_dup 0)
+ 	(vec_merge:V8HI
+ 	  (any_extend:V8HI (match_dup 1))
+ 	  (match_dup 2)
+ 	  (match_dup 3)))]
+   "operands[1] = adjust_address_nv (operands[1], V8QImode, 0);")
+ 
  (define_insn_and_split "*sse4_1_zero_extendv8qiv8hi2_3"
    [(set (match_operand:V16QI 0 "register_operand" "=Yr,*x,Yw")
  	(vec_select:V16QI
***************
*** 24406,24412 ****
     (set_attr "prefix" "maybe_evex")
     (set_attr "mode" "OI")])
  
! (define_insn_and_split "*avx2_<code>v8qiv8si2<mask_name>_2"
    [(set (match_operand:V8SI 0 "register_operand")
  	(any_extend:V8SI
  	  (vec_select:V8QI
--- 24432,24438 ----
     (set_attr "prefix" "maybe_evex")
     (set_attr "mode" "OI")])
  
! (define_insn_and_split "*avx2_<code>v8qiv8si2_2"
    [(set (match_operand:V8SI 0 "register_operand")
  	(any_extend:V8SI
  	  (vec_select:V8QI
***************
*** 24418,24424 ****
  		       (const_int 2) (const_int 3)
  		       (const_int 4) (const_int 5)
  		       (const_int 6) (const_int 7)]))))]
!   "TARGET_AVX2 && <mask_avx512vl_condition>
     && ix86_pre_reload_split ()"
    "#"
    "&& 1"
--- 24444,24450 ----
  		       (const_int 2) (const_int 3)
  		       (const_int 4) (const_int 5)
  		       (const_int 6) (const_int 7)]))))]
!   "TARGET_AVX2
     && ix86_pre_reload_split ()"
    "#"
    "&& 1"
***************
*** 24426,24431 ****
--- 24452,24484 ----
  	(any_extend:V8SI (match_dup 1)))]
    "operands[1] = adjust_address_nv (operands[1], V8QImode, 0);")
  
+ (define_insn_and_split "*avx512vl_<code>v8qiv8si2_mask_2"
+   [(set (match_operand:V8SI 0 "register_operand")
+ 	(vec_merge:V8SI
+ 	  (any_extend:V8SI
+ 	    (vec_select:V8QI
+ 	      (subreg:V16QI
+ 		(vec_concat:V2DI
+ 		  (match_operand:DI 1 "memory_operand")
+ 		  (const_int 0)) 0)
+ 	      (parallel [(const_int 0) (const_int 1)
+ 			 (const_int 2) (const_int 3)
+ 			 (const_int 4) (const_int 5)
+ 			 (const_int 6) (const_int 7)])))
+ 	  (match_operand:V8SI 2 "nonimm_or_0_operand")
+ 	  (match_operand:QI 3 "register_operand")))]
+   "TARGET_AVX512VL
+    && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(set (match_dup 0)
+ 	(vec_merge:V8SI
+ 	  (any_extend:V8SI (match_dup 1))
+ 	  (match_dup 2)
+ 	  (match_dup 3)))]
+   "operands[1] = adjust_address_nv (operands[1], V8QImode, 0);")
+ 
+ 
  (define_expand "<insn>v8qiv8si2"
    [(set (match_operand:V8SI 0 "register_operand")
  	(any_extend:V8SI
***************
*** 24469,24475 ****
     (set_attr "prefix" "orig,orig,maybe_evex")
     (set_attr "mode" "TI")])
  
! (define_insn_and_split "*sse4_1_<code>v4qiv4si2<mask_name>_2"
    [(set (match_operand:V4SI 0 "register_operand")
  	(any_extend:V4SI
  	  (vec_select:V4QI
--- 24522,24528 ----
     (set_attr "prefix" "orig,orig,maybe_evex")
     (set_attr "mode" "TI")])
  
! (define_insn_and_split "*sse4_1_<code>v4qiv4si2_2"
    [(set (match_operand:V4SI 0 "register_operand")
  	(any_extend:V4SI
  	  (vec_select:V4QI
***************
*** 24491,24496 ****
--- 24544,24578 ----
  	(any_extend:V4SI (match_dup 1)))]
    "operands[1] = adjust_address_nv (operands[1], V4QImode, 0);")
  
+ (define_insn_and_split "*avx512vl_<code>v4qiv4si2_mask_2"
+   [(set (match_operand:V4SI 0 "register_operand")
+ 	(vec_merge:V4SI
+ 	  (any_extend:V4SI
+ 	    (vec_select:V4QI
+ 	      (subreg:V16QI
+ 		(vec_merge:V4SI
+ 		  (vec_duplicate:V4SI
+ 		    (match_operand:SI 1 "memory_operand"))
+ 		  (const_vector:V4SI
+ 		    [(const_int 0) (const_int 0)
+ 		     (const_int 0) (const_int 0)])
+ 		  (const_int 1)) 0)
+ 	      (parallel [(const_int 0) (const_int 1)
+ 			 (const_int 2) (const_int 3)])))
+ 	  (match_operand:V4SI 2 "nonimm_or_0_operand")
+ 	  (match_operand:QI 3 "register_operand")))]
+   "TARGET_AVX512VL
+    && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(set (match_dup 0)
+ 	(vec_merge:V4SI
+ 	  (any_extend:V4SI (match_dup 1))
+ 	  (match_dup 2)
+ 	  (match_dup 3)))]
+   "operands[1] = adjust_address_nv (operands[1], V4QImode, 0);")
+ 
+ 
  (define_expand "<insn>v4qiv4si2"
    [(set (match_operand:V4SI 0 "register_operand")
  	(any_extend:V4SI
***************
*** 24642,24648 ****
     (set_attr "prefix" "orig,orig,maybe_evex")
     (set_attr "mode" "TI")])
  
! (define_insn_and_split "*sse4_1_<code>v4hiv4si2<mask_name>_2"
    [(set (match_operand:V4SI 0 "register_operand")
  	(any_extend:V4SI
  	  (vec_select:V4HI
--- 24724,24730 ----
     (set_attr "prefix" "orig,orig,maybe_evex")
     (set_attr "mode" "TI")])
  
! (define_insn_and_split "*sse4_1_<code>v4hiv4si2_2"
    [(set (match_operand:V4SI 0 "register_operand")
  	(any_extend:V4SI
  	  (vec_select:V4HI
***************
*** 24652,24658 ****
  		(const_int 0)) 0)
  	    (parallel [(const_int 0) (const_int 1)
  		       (const_int 2) (const_int 3)]))))]
!   "TARGET_SSE4_1 && <mask_avx512vl_condition>
     && ix86_pre_reload_split ()"
    "#"
    "&& 1"
--- 24734,24740 ----
  		(const_int 0)) 0)
  	    (parallel [(const_int 0) (const_int 1)
  		       (const_int 2) (const_int 3)]))))]
!   "TARGET_SSE4_1
     && ix86_pre_reload_split ()"
    "#"
    "&& 1"
***************
*** 24660,24665 ****
--- 24742,24772 ----
  	(any_extend:V4SI (match_dup 1)))]
    "operands[1] = adjust_address_nv (operands[1], V4HImode, 0);")
  
+ (define_insn_and_split "*avx512vl_<code>v4hiv4si2_mask_2"
+   [(set (match_operand:V4SI 0 "register_operand")
+ 	(vec_merge:V4SI
+ 	  (any_extend:V4SI
+ 	    (vec_select:V4HI
+ 	      (subreg:V8HI
+ 		(vec_concat:V2DI
+ 		  (match_operand:DI 1 "memory_operand")
+ 		  (const_int 0)) 0)
+ 	      (parallel [(const_int 0) (const_int 1)
+ 			 (const_int 2) (const_int 3)])))
+ 	  (match_operand:V4SI 2 "nonimm_or_0_operand")
+ 	  (match_operand:QI 3 "register_operand")))]
+   "TARGET_AVX512VL
+    && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(set (match_dup 0)
+ 	(vec_merge:V4SI
+ 	  (any_extend:V4SI (match_dup 1))
+ 	  (match_dup 2)
+ 	  (match_dup 3)))]
+   "operands[1] = adjust_address_nv (operands[1], V4HImode, 0);")
+ 
+ 
  (define_expand "<insn>v4hiv4si2"
    [(set (match_operand:V4SI 0 "register_operand")
  	(any_extend:V4SI
***************
*** 24770,24776 ****
     (set_attr "prefix" "evex")
     (set_attr "mode" "XI")])
  
! (define_insn_and_split "*avx512f_<code>v8qiv8di2<mask_name>_2"
    [(set (match_operand:V8DI 0 "register_operand")
  	(any_extend:V8DI
  	  (vec_select:V8QI
--- 24877,24883 ----
     (set_attr "prefix" "evex")
     (set_attr "mode" "XI")])
  
! (define_insn_and_split "*avx512f_<code>v8qiv8di2_2"
    [(set (match_operand:V8DI 0 "register_operand")
  	(any_extend:V8DI
  	  (vec_select:V8QI
***************
*** 24789,24794 ****
--- 24896,24927 ----
  	(any_extend:V8DI (match_dup 1)))]
    "operands[1] = adjust_address_nv (operands[1], V8QImode, 0);")
  
+ (define_insn_and_split "*avx512f_<code>v8qiv8di2_mask_2"
+   [(set (match_operand:V8DI 0 "register_operand")
+ 	(vec_merge:V8DI
+ 	  (any_extend:V8DI
+ 	    (vec_select:V8QI
+ 	      (subreg:V16QI
+ 		(vec_concat:V2DI
+ 		  (match_operand:DI 1 "memory_operand")
+ 		  (const_int 0)) 0)
+ 	      (parallel [(const_int 0) (const_int 1)
+ 			 (const_int 2) (const_int 3)
+ 		         (const_int 4) (const_int 5)
+ 		         (const_int 6) (const_int 7)])))
+ 	  (match_operand:V8DI 2 "nonimm_or_0_operand")
+ 	  (match_operand:QI 3 "register_operand")))]
+   "TARGET_AVX512F && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(set (match_dup 0)
+ 	(vec_merge:V8DI
+ 	  (any_extend:V8DI (match_dup 1))
+ 	  (match_dup 2)
+ 	  (match_dup 3)))]
+   "operands[1] = adjust_address_nv (operands[1], V8QImode, 0);")
+ 
+ 
  (define_expand "<insn>v8qiv8di2"
    [(set (match_operand:V8DI 0 "register_operand")
  	(any_extend:V8DI
***************
*** 24829,24835 ****
     (set_attr "prefix" "maybe_evex")
     (set_attr "mode" "OI")])
  
! (define_insn_and_split "*avx2_<code>v4qiv4di2<mask_name>_2"
    [(set (match_operand:V4DI 0 "register_operand")
  	(any_extend:V4DI
  	  (vec_select:V4QI
--- 24962,24968 ----
     (set_attr "prefix" "maybe_evex")
     (set_attr "mode" "OI")])
  
! (define_insn_and_split "*avx2_<code>v4qiv4di2_2"
    [(set (match_operand:V4DI 0 "register_operand")
  	(any_extend:V4DI
  	  (vec_select:V4QI
***************
*** 24843,24849 ****
  		(const_int 1)) 0)
  	    (parallel [(const_int 0) (const_int 1)
  		       (const_int 2) (const_int 3)]))))]
!   "TARGET_AVX2 && <mask_avx512vl_condition>
     && ix86_pre_reload_split ()"
    "#"
    "&& 1"
--- 24976,24982 ----
  		(const_int 1)) 0)
  	    (parallel [(const_int 0) (const_int 1)
  		       (const_int 2) (const_int 3)]))))]
!   "TARGET_AVX2
     && ix86_pre_reload_split ()"
    "#"
    "&& 1"
***************
*** 24851,24856 ****
--- 24984,25018 ----
  	(any_extend:V4DI (match_dup 1)))]
    "operands[1] = adjust_address_nv (operands[1], V4QImode, 0);")
  
+ (define_insn_and_split "*avx512vl_<code>v4qiv4di2_mask_2"
+   [(set (match_operand:V4DI 0 "register_operand")
+ 	(vec_merge:V4DI
+ 	  (any_extend:V4DI
+ 	    (vec_select:V4QI
+ 	      (subreg:V16QI
+ 		(vec_merge:V4SI
+ 		  (vec_duplicate:V4SI
+ 		    (match_operand:SI 1 "memory_operand"))
+ 		  (const_vector:V4SI
+ 		    [(const_int 0) (const_int 0)
+ 		     (const_int 0) (const_int 0)])
+ 		  (const_int 1)) 0)
+ 	      (parallel [(const_int 0) (const_int 1)
+ 			 (const_int 2) (const_int 3)])))
+ 	  (match_operand:V4DI 2 "nonimm_or_0_operand")
+ 	  (match_operand:QI 3 "register_operand")))]
+   "TARGET_AVX512VL
+    && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(set (match_dup 0)
+ 	(vec_merge:V4DI
+ 	  (any_extend:V4DI (match_dup 1))
+ 	  (match_dup 2)
+ 	  (match_dup 3)))]
+   "operands[1] = adjust_address_nv (operands[1], V4QImode, 0);")
+ 
+ 
  (define_expand "<insn>v4qiv4di2"
    [(set (match_operand:V4DI 0 "register_operand")
  	(any_extend:V4DI
***************
*** 24972,24978 ****
     (set_attr "prefix" "maybe_evex")
     (set_attr "mode" "OI")])
  
! (define_insn_and_split "*avx2_<code>v4hiv4di2<mask_name>_2"
    [(set (match_operand:V4DI 0 "register_operand")
  	(any_extend:V4DI
  	  (vec_select:V4HI
--- 25134,25140 ----
     (set_attr "prefix" "maybe_evex")
     (set_attr "mode" "OI")])
  
! (define_insn_and_split "*avx2_<code>v4hiv4di2_2"
    [(set (match_operand:V4DI 0 "register_operand")
  	(any_extend:V4DI
  	  (vec_select:V4HI
***************
*** 24982,24988 ****
  		(const_int 0)) 0)
  	    (parallel [(const_int 0) (const_int 1)
  		       (const_int 2) (const_int 3)]))))]
!   "TARGET_AVX2 && <mask_avx512vl_condition>
     && ix86_pre_reload_split ()"
    "#"
    "&& 1"
--- 25144,25150 ----
  		(const_int 0)) 0)
  	    (parallel [(const_int 0) (const_int 1)
  		       (const_int 2) (const_int 3)]))))]
!   "TARGET_AVX2
     && ix86_pre_reload_split ()"
    "#"
    "&& 1"
***************
*** 24990,24995 ****
--- 25152,25182 ----
  	(any_extend:V4DI (match_dup 1)))]
    "operands[1] = adjust_address_nv (operands[1], V4HImode, 0);")
  
+ (define_insn_and_split "*avx512vl_<code>v4hiv4di2_mask_2"
+   [(set (match_operand:V4DI 0 "register_operand")
+ 	(vec_merge:V4DI
+ 	  (any_extend:V4DI
+ 	    (vec_select:V4HI
+ 	      (subreg:V8HI
+ 		(vec_concat:V2DI
+ 		  (match_operand:DI 1 "memory_operand")
+ 		  (const_int 0)) 0)
+ 	      (parallel [(const_int 0) (const_int 1)
+ 		         (const_int 2) (const_int 3)])))
+ 	  (match_operand:V4DI 2 "nonimm_or_0_operand")
+ 	  (match_operand:QI 3 "register_operand")))]
+   "TARGET_AVX512VL
+    && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(set (match_dup 0)
+ 	(vec_merge:V4DI
+ 	  (any_extend:V4DI (match_dup 1))
+ 	  (match_dup 2)
+ 	  (match_dup 3)))]
+   "operands[1] = adjust_address_nv (operands[1], V4HImode, 0);")
+ 
+ 
  (define_expand "<insn>v4hiv4di2"
    [(set (match_operand:V4DI 0 "register_operand")
  	(any_extend:V4DI
***************
*** 25032,25038 ****
     (set_attr "prefix" "orig,orig,maybe_evex")
     (set_attr "mode" "TI")])
  
! (define_insn_and_split "*sse4_1_<code>v2hiv2di2<mask_name>_2"
    [(set (match_operand:V2DI 0 "register_operand")
  	(any_extend:V2DI
  	  (vec_select:V2HI
--- 25219,25225 ----
     (set_attr "prefix" "orig,orig,maybe_evex")
     (set_attr "mode" "TI")])
  
! (define_insn_and_split "*sse4_1_<code>v2hiv2di2_2"
    [(set (match_operand:V2DI 0 "register_operand")
  	(any_extend:V2DI
  	  (vec_select:V2HI
***************
*** 25045,25051 ****
  		    (const_int 0) (const_int 0)])
  		(const_int 1)) 0)
  	    (parallel [(const_int 0) (const_int 1)]))))]
!   "TARGET_SSE4_1 && <mask_avx512vl_condition>
     && ix86_pre_reload_split ()"
    "#"
    "&& 1"
--- 25232,25238 ----
  		    (const_int 0) (const_int 0)])
  		(const_int 1)) 0)
  	    (parallel [(const_int 0) (const_int 1)]))))]
!   "TARGET_SSE4_1
     && ix86_pre_reload_split ()"
    "#"
    "&& 1"
***************
*** 25053,25058 ****
--- 25240,25273 ----
  	(any_extend:V2DI (match_dup 1)))]
    "operands[1] = adjust_address_nv (operands[1], V2HImode, 0);")
  
+ (define_insn_and_split "*avx512vl_<code>v2hiv2di2_mask_2"
+   [(set (match_operand:V2DI 0 "register_operand")
+ 	(vec_merge:V2DI
+ 	  (any_extend:V2DI
+ 	    (vec_select:V2HI
+ 	      (subreg:V8HI
+ 		(vec_merge:V4SI
+ 		  (vec_duplicate:V4SI
+ 		    (match_operand:SI 1 "memory_operand"))
+ 		  (const_vector:V4SI
+ 		    [(const_int 0) (const_int 0)
+ 		     (const_int 0) (const_int 0)])
+ 		  (const_int 1)) 0)
+ 	      (parallel [(const_int 0) (const_int 1)])))
+ 	  (match_operand:V2DI 2 "nonimm_or_0_operand")
+ 	  (match_operand:QI 3 "register_operand")))]
+   "TARGET_AVX512VL
+    && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(set (match_dup 0)
+ 	(vec_merge:V2DI
+ 	  (any_extend:V2DI (match_dup 1))
+ 	  (match_dup 2)
+ 	  (match_dup 3)))]
+   "operands[1] = adjust_address_nv (operands[1], V2HImode, 0);")
+ 
+ 
  (define_expand "<insn>v2hiv2di2"
    [(set (match_operand:V2DI 0 "register_operand")
  	(any_extend:V2DI
***************
*** 25198,25204 ****
     (set_attr "prefix" "orig,orig,maybe_evex")
     (set_attr "mode" "TI")])
  
! (define_insn_and_split "*sse4_1_<code>v2siv2di2<mask_name>_2"
    [(set (match_operand:V2DI 0 "register_operand")
  	(any_extend:V2DI
  	  (vec_select:V2SI
--- 25413,25419 ----
     (set_attr "prefix" "orig,orig,maybe_evex")
     (set_attr "mode" "TI")])
  
! (define_insn_and_split "*sse4_1_<code>v2siv2di2_2"
    [(set (match_operand:V2DI 0 "register_operand")
  	(any_extend:V2DI
  	  (vec_select:V2SI
***************
*** 25207,25213 ****
  		(match_operand:DI 1 "memory_operand")
  		(const_int 0)) 0)
  	    (parallel [(const_int 0) (const_int 1)]))))]
!   "TARGET_SSE4_1 && <mask_avx512vl_condition>
     && ix86_pre_reload_split ()"
    "#"
    "&& 1"
--- 25422,25428 ----
  		(match_operand:DI 1 "memory_operand")
  		(const_int 0)) 0)
  	    (parallel [(const_int 0) (const_int 1)]))))]
!   "TARGET_SSE4_1
     && ix86_pre_reload_split ()"
    "#"
    "&& 1"
***************
*** 25215,25220 ****
--- 25430,25458 ----
  	(any_extend:V2DI (match_dup 1)))]
    "operands[1] = adjust_address_nv (operands[1], V2SImode, 0);")
  
+ (define_insn_and_split "*avx512vl_<code>v2siv2di2_mask_2"
+   [(set (match_operand:V2DI 0 "register_operand")
+ 	(vec_merge:V2DI
+ 	  (any_extend:V2DI
+ 	    (vec_select:V2SI
+ 	      (subreg:V4SI
+ 		(vec_concat:V2DI
+ 		  (match_operand:DI 1 "memory_operand")
+ 		  (const_int 0)) 0)
+ 	      (parallel [(const_int 0) (const_int 1)])))
+ 	  (match_operand:V2DI 2 "nonimm_or_0_operand")
+ 	  (match_operand:QI 3 "register_operand")))]
+   "TARGET_AVX512VL
+    && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(set (match_dup 0)
+ 	(vec_merge:V2DI
+ 	  (any_extend:V2DI (match_dup 1))
+ 	  (match_dup 2)
+ 	  (match_dup 3)))]
+   "operands[1] = adjust_address_nv (operands[1], V2SImode, 0);")
+ 
  (define_insn_and_split "*sse4_1_zero_extendv2siv2di2_3"
    [(set (match_operand:V4SI 0 "register_operand" "=Yr,*x,v")
  	(vec_select:V4SI
***************
*** 27885,27901 ****
  (define_insn "avx2_vbroadcasti128_<mode>"
    [(set (match_operand:VI_256 0 "register_operand" "=x,v,v")
  	(vec_concat:VI_256
! 	  (match_operand:<ssehalfvecmode> 1 "memory_operand" "m,m,m")
  	  (match_dup 1)))]
    "TARGET_AVX2"
    "@
     vbroadcasti128\t{%1, %0|%0, %1}
     vbroadcast<i128vldq>\t{%1, %0|%0, %1}
     vbroadcast<shuffletype>32x4\t{%1, %0|%0, %1}"
!   [(set_attr "isa" "*,avx512dq,avx512vl")
     (set_attr "type" "ssemov")
     (set_attr "prefix_extra" "1")
     (set_attr "prefix" "vex,evex,evex")
     (set_attr "mode" "OI")])
  
  ;; optimize vlddqu + vinserti128 to vbroadcasti128, the former will use
--- 28123,28140 ----
  (define_insn "avx2_vbroadcasti128_<mode>"
    [(set (match_operand:VI_256 0 "register_operand" "=x,v,v")
  	(vec_concat:VI_256
! 	  (match_operand:<ssehalfvecmode> 1 "memory_operand" "jm,m,m")
  	  (match_dup 1)))]
    "TARGET_AVX2"
    "@
     vbroadcasti128\t{%1, %0|%0, %1}
     vbroadcast<i128vldq>\t{%1, %0|%0, %1}
     vbroadcast<shuffletype>32x4\t{%1, %0|%0, %1}"
!   [(set_attr "isa" "noavx512vl,avx512dq,avx512vl")
     (set_attr "type" "ssemov")
     (set_attr "prefix_extra" "1")
     (set_attr "prefix" "vex,evex,evex")
+    (set_attr "addr" "gpr16,*,*")
     (set_attr "mode" "OI")])
  
  ;; optimize vlddqu + vinserti128 to vbroadcasti128, the former will use
***************
*** 31747,31758 ****
  	   (match_operand:VHF_AVX10_2 2 "nonimmediate_operand" "vm")]
  	  UNSPEC_CONVERTFP8_PACK))]
    "TARGET_AVX10_2"
!   "vcvt<convertfp8_pack>\t{%2, %1, %0<mask_operand3>|%0<mask_operand2>, %1, %2}"
    [(set_attr "prefix" "evex")])
  
  (define_mode_attr ssebvecmode_2
    [(V8HF "V16QI") (V16HF "V16QI") (V32HF "V32QI")])
  
  (define_int_iterator UNSPEC_VCVTBIASPH2FP8_PACK
     [UNSPEC_VCVTBIASPH2BF8 UNSPEC_VCVTBIASPH2BF8S
      UNSPEC_VCVTBIASPH2HF8 UNSPEC_VCVTBIASPH2HF8S])
--- 31986,32000 ----
  	   (match_operand:VHF_AVX10_2 2 "nonimmediate_operand" "vm")]
  	  UNSPEC_CONVERTFP8_PACK))]
    "TARGET_AVX10_2"
!   "vcvt<convertfp8_pack>\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
    [(set_attr "prefix" "evex")])
  
  (define_mode_attr ssebvecmode_2
    [(V8HF "V16QI") (V16HF "V16QI") (V32HF "V32QI")])
  
+ (define_mode_attr iptrssebvec_2
+   [(V8HF "q") (V16HF "") (V32HF "")])
+ 
  (define_int_iterator UNSPEC_VCVTBIASPH2FP8_PACK
     [UNSPEC_VCVTBIASPH2BF8 UNSPEC_VCVTBIASPH2BF8S
      UNSPEC_VCVTBIASPH2HF8 UNSPEC_VCVTBIASPH2HF8S])
***************
*** 31929,31935 ****
  	  [(match_operand:<ssebvecmode_2> 1 "nonimmediate_operand" "vm")]
  	  UNSPEC_VCVTHF82PH))]
    "TARGET_AVX10_2"
!   "vcvthf82ph\t{%1, %0<mask_operand2>|%0<mask_operand2>, %1}"
    [(set_attr "prefix" "evex")])
  
  (define_int_iterator VPDPWPROD
--- 32171,32177 ----
  	  [(match_operand:<ssebvecmode_2> 1 "nonimmediate_operand" "vm")]
  	  UNSPEC_VCVTHF82PH))]
    "TARGET_AVX10_2"
!   "vcvthf82ph\t{%1, %0<mask_operand2>|%0<mask_operand2>, %<iptrssebvec_2>1}"
    [(set_attr "prefix" "evex")])
  
  (define_int_iterator VPDPWPROD
***************
*** 32575,32580 ****
--- 32817,32827 ----
    [(V16SF "") (V8SF "") (V4SF "")
     (V8DF "") (V4DF "{y}") (V2DF "{x}")])
  
+ ;; Pointer size override for ps2qq conversions: V2DI uses half-width (64-bit)
+ ;; source, needing %q for Intel syntax memory operand disambiguation.
+ (define_mode_attr iptrps2qq
+   [(V8DI "") (V4DI "") (V2DI "q")])
+ 
  (define_insn "avx10_2_vcvtt<castmode>2<sat_cvt_sign_prefix>dqs<mode><mask_name><round_saeonly_name>"
   [(set (match_operand:<VEC_GATHER_IDXSI> 0 "register_operand" "=v")
         (unspec:<VEC_GATHER_IDXSI>
***************
*** 32603,32609 ****
  	  [(match_operand:<vpckfloat_temp_mode> 1 "<round_saeonly_nimm_predicate>" "<round_saeonly_constraint>")]
  	  UNSPEC_SAT_CVT_DS_SIGN_ITER))]
   "TARGET_AVX10_2 && <round_saeonly_mode512bit_condition>"
!  "vcvttps2<sat_cvt_sign_prefix>qqs\t{<round_saeonly_mask_op2>%1, %0<mask_operand2>|%0<mask_operand2>, %1<round_saeonly_mask_op2>}"
   [(set_attr "type" "ssecvt")
    (set_attr "prefix" "evex")
    (set_attr "mode" "<sseinsnmode>")])
--- 32850,32856 ----
  	  [(match_operand:<vpckfloat_temp_mode> 1 "<round_saeonly_nimm_predicate>" "<round_saeonly_constraint>")]
  	  UNSPEC_SAT_CVT_DS_SIGN_ITER))]
   "TARGET_AVX10_2 && <round_saeonly_mode512bit_condition>"
!  "vcvttps2<sat_cvt_sign_prefix>qqs\t{<round_saeonly_mask_op2>%1, %0<mask_operand2>|%0<mask_operand2>, %<iptrps2qq>1<round_saeonly_mask_op2>}"
   [(set_attr "type" "ssecvt")
    (set_attr "prefix" "evex")
    (set_attr "mode" "<sseinsnmode>")])
***************
*** 32616,32622 ****
        (parallel [(const_int 0)]))]
      UNSPEC_SAT_CVT_DS_SIGN_ITER))]
   "TARGET_AVX10_2"
!  "vcvttsd2<sat_cvt_sign_prefix>sis\t{<round_saeonly_op2>%1, %0|%0, %1<round_saeonly_op2>}"
   [(set_attr "type" "ssecvt")
   (set_attr "prefix" "evex")
   (set_attr "mode" "<MODE>")])
--- 32863,32869 ----
        (parallel [(const_int 0)]))]
      UNSPEC_SAT_CVT_DS_SIGN_ITER))]
   "TARGET_AVX10_2"
!  "vcvttsd2<sat_cvt_sign_prefix>sis\t{<round_saeonly_op2>%1, %0|%0, %q1<round_saeonly_op2>}"
   [(set_attr "type" "ssecvt")
   (set_attr "prefix" "evex")
   (set_attr "mode" "<MODE>")])
***************
*** 32629,32635 ****
        (parallel [(const_int 0)]))]
      UNSPEC_SAT_CVT_DS_SIGN_ITER))]
   "TARGET_AVX10_2"
!  "vcvttss2<sat_cvt_sign_prefix>sis\t{<round_saeonly_op2>%1, %0|%0, %1<round_saeonly_op2>}"
   [(set_attr "type" "ssecvt")
   (set_attr "prefix" "evex")
   (set_attr "mode" "<MODE>")])
--- 32876,32882 ----
        (parallel [(const_int 0)]))]
      UNSPEC_SAT_CVT_DS_SIGN_ITER))]
   "TARGET_AVX10_2"
!  "vcvttss2<sat_cvt_sign_prefix>sis\t{<round_saeonly_op2>%1, %0|%0, %k1<round_saeonly_op2>}"
   [(set_attr "type" "ssecvt")
   (set_attr "prefix" "evex")
   (set_attr "mode" "<MODE>")])
diff -Nrcpad gcc-15.2.0/gcc/config/i386/x86-tune.def gcc-15.3.0/gcc/config/i386/x86-tune.def
*** gcc-15.2.0/gcc/config/i386/x86-tune.def	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/i386/x86-tune.def	Fri Jun 12 06:09:06 2026
*************** DEF_TUNE (X86_TUNE_FOUR_JUMP_LIMIT, "fou
*** 252,258 ****
  
  /* X86_TUNE_ALIGN_TIGHT_LOOPS: if false, tight loops are not aligned. */
  DEF_TUNE (X86_TUNE_ALIGN_TIGHT_LOOPS, "align_tight_loops",
! 	 ~(m_ZHAOXIN | m_CASCADELAKE | m_SKYLAKE_AVX512))
  
  /*****************************************************************************/
  /* Integer instruction selection tuning                                      */
--- 252,259 ----
  
  /* X86_TUNE_ALIGN_TIGHT_LOOPS: if false, tight loops are not aligned. */
  DEF_TUNE (X86_TUNE_ALIGN_TIGHT_LOOPS, "align_tight_loops",
! 	 ~(m_ZHAOXIN | m_CASCADELAKE | m_SKYLAKE_AVX512
! 	   | m_CORE_ATOM))
  
  /*****************************************************************************/
  /* Integer instruction selection tuning                                      */
*************** DEF_TUNE (X86_TUNE_AVOID_4BYTE_PREFIXES,
*** 513,519 ****
  /* X86_TUNE_USE_GATHER_2PARTS: Use gather instructions for vectors with 2
     elements.  */
  DEF_TUNE (X86_TUNE_USE_GATHER_2PARTS, "use_gather_2parts",
! 	  ~(m_ZNVER | m_CORE_HYBRID
  	    | m_YONGFENG | m_SHIJIDADAO | m_CORE_ATOM | m_GENERIC | m_GDS))
  
  /* X86_TUNE_USE_SCATTER_2PARTS: Use scater instructions for vectors with 2
--- 514,520 ----
  /* X86_TUNE_USE_GATHER_2PARTS: Use gather instructions for vectors with 2
     elements.  */
  DEF_TUNE (X86_TUNE_USE_GATHER_2PARTS, "use_gather_2parts",
! 	  ~(m_ZNVER | m_CORE_HYBRID | m_DIAMONDRAPIDS
  	    | m_YONGFENG | m_SHIJIDADAO | m_CORE_ATOM | m_GENERIC | m_GDS))
  
  /* X86_TUNE_USE_SCATTER_2PARTS: Use scater instructions for vectors with 2
*************** DEF_TUNE (X86_TUNE_USE_SCATTER_2PARTS, "
*** 524,530 ****
  /* X86_TUNE_USE_GATHER_4PARTS: Use gather instructions for vectors with 4
     elements.  */
  DEF_TUNE (X86_TUNE_USE_GATHER_4PARTS, "use_gather_4parts",
! 	  ~(m_ZNVER | m_CORE_HYBRID
  	    | m_YONGFENG | m_SHIJIDADAO | m_CORE_ATOM | m_GENERIC | m_GDS))
  
  /* X86_TUNE_USE_SCATTER_4PARTS: Use scater instructions for vectors with 4
--- 525,531 ----
  /* X86_TUNE_USE_GATHER_4PARTS: Use gather instructions for vectors with 4
     elements.  */
  DEF_TUNE (X86_TUNE_USE_GATHER_4PARTS, "use_gather_4parts",
! 	  ~(m_ZNVER | m_CORE_HYBRID | m_DIAMONDRAPIDS
  	    | m_YONGFENG | m_SHIJIDADAO | m_CORE_ATOM | m_GENERIC | m_GDS))
  
  /* X86_TUNE_USE_SCATTER_4PARTS: Use scater instructions for vectors with 4
*************** DEF_TUNE (X86_TUNE_AVX256_AVOID_VEC_PERM
*** 607,612 ****
--- 608,615 ----
  /* X86_TUNE_AVX256_SPLIT_REGS: if true, AVX512 ops are split into two AVX256 ops.  */
  DEF_TUNE (X86_TUNE_AVX512_SPLIT_REGS, "avx512_split_regs", m_ZNVER4)
  
+ /* It's better to align MOVE_MAX with prefer_vector_width to reduce
+    risk of STLF stalls(small store followed by big load.)  */
  /* X86_TUNE_AVX256_MOVE_BY_PIECES: Optimize move_by_pieces with 256-bit
     AVX instructions.  */
  DEF_TUNE (X86_TUNE_AVX256_MOVE_BY_PIECES, "avx256_move_by_pieces",
*************** DEF_TUNE (X86_TUNE_AVX256_STORE_BY_PIECE
*** 620,633 ****
  /* X86_TUNE_AVX512_MOVE_BY_PIECES: Optimize move_by_pieces with 512-bit
     AVX instructions.  */
  DEF_TUNE (X86_TUNE_AVX512_MOVE_BY_PIECES, "avx512_move_by_pieces",
! 	  m_SAPPHIRERAPIDS | m_GRANITERAPIDS | m_GRANITERAPIDS_D
! 	  | m_DIAMONDRAPIDS | m_ZNVER4 | m_ZNVER5)
  
  /* X86_TUNE_AVX512_STORE_BY_PIECES: Optimize store_by_pieces with 512-bit
     AVX instructions.  */
  DEF_TUNE (X86_TUNE_AVX512_STORE_BY_PIECES, "avx512_store_by_pieces",
! 	  m_SAPPHIRERAPIDS | m_GRANITERAPIDS | m_GRANITERAPIDS_D
! 	  | m_DIAMONDRAPIDS | m_ZNVER4 | m_ZNVER5)
  
  /* X86_TUNE_AVX512_TWO_EPILOGUES: Use two vector epilogues for 512-bit
     vectorized loops.  */
--- 623,634 ----
  /* X86_TUNE_AVX512_MOVE_BY_PIECES: Optimize move_by_pieces with 512-bit
     AVX instructions.  */
  DEF_TUNE (X86_TUNE_AVX512_MOVE_BY_PIECES, "avx512_move_by_pieces",
! 	   m_ZNVER4 | m_ZNVER5)
  
  /* X86_TUNE_AVX512_STORE_BY_PIECES: Optimize store_by_pieces with 512-bit
     AVX instructions.  */
  DEF_TUNE (X86_TUNE_AVX512_STORE_BY_PIECES, "avx512_store_by_pieces",
! 	  m_ZNVER4 | m_ZNVER5)
  
  /* X86_TUNE_AVX512_TWO_EPILOGUES: Use two vector epilogues for 512-bit
     vectorized loops.  */
diff -Nrcpad gcc-15.2.0/gcc/config/i386/xmmintrin.h gcc-15.3.0/gcc/config/i386/xmmintrin.h
*** gcc-15.2.0/gcc/config/i386/xmmintrin.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/i386/xmmintrin.h	Fri Jun 12 06:09:06 2026
*************** _mm_maskmove_si64 (__m64 __A, __m64 __N,
*** 1223,1239 ****
    __v2di __N128 = __extension__ (__v2di) { ((__v1di) __N)[0], 0 };
  
    /* Check the alignment of __P.  */
!   __SIZE_TYPE__ offset = ((__SIZE_TYPE__) __P) & 0xf;
!   if (offset)
      {
        /* If the misalignment of __P > 8, subtract __P by 8 bytes.
  	 Otherwise, subtract __P by the misalignment.  */
!       if (offset > 8)
! 	offset = 8;
!       __P = (char *) (((__SIZE_TYPE__) __P) - offset);
  
        /* Shift __A128 and __N128 to the left by the adjustment.  */
!       switch (offset)
  	{
  	case 1:
  	  __A128 = __builtin_ia32_pslldqi128 (__A128, 8);
--- 1223,1239 ----
    __v2di __N128 = __extension__ (__v2di) { ((__v1di) __N)[0], 0 };
  
    /* Check the alignment of __P.  */
!   __SIZE_TYPE__ __offset = ((__SIZE_TYPE__) __P) & 0xf;
!   if (__offset)
      {
        /* If the misalignment of __P > 8, subtract __P by 8 bytes.
  	 Otherwise, subtract __P by the misalignment.  */
!       if (__offset > 8)
! 	__offset = 8;
!       __P = (char *) (((__SIZE_TYPE__) __P) - __offset);
  
        /* Shift __A128 and __N128 to the left by the adjustment.  */
!       switch (__offset)
  	{
  	case 1:
  	  __A128 = __builtin_ia32_pslldqi128 (__A128, 8);
diff -Nrcpad gcc-15.2.0/gcc/config/loongarch/constraints.md gcc-15.3.0/gcc/config/loongarch/constraints.md
*** gcc-15.2.0/gcc/config/loongarch/constraints.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/loongarch/constraints.md	Fri Jun 12 06:09:06 2026
***************
*** 370,372 ****
--- 370,381 ----
     and offset that is suitable for use in instructions with the same
     addressing mode as @code{preld}."
     (match_test "loongarch_12bit_offset_address_p (op, mode)"))
+ 
+ (define_constraint "ZE"
+   "A symbolic suitable as stack canary in the normal/medium code model."
+   (match_operand 0 "ssp_normal_operand"))
+ 
+ (define_constraint "ZF"
+   "A symbolic suitable as stack canary, but in the extreme code model."
+   (and (match_operand 0 "ssp_operand")
+        (not (match_operand 0 "ssp_normal_operand"))))
diff -Nrcpad gcc-15.2.0/gcc/config/loongarch/lasx.md gcc-15.3.0/gcc/config/loongarch/lasx.md
*** gcc-15.2.0/gcc/config/loongarch/lasx.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/loongarch/lasx.md	Fri Jun 12 06:09:06 2026
***************
*** 792,850 ****
    [(set_attr "type" "simd_div")
     (set_attr "mode" "<MODE>")])
  
- (define_insn "xor<mode>3"
-   [(set (match_operand:LASX 0 "register_operand" "=f,f,f")
- 	(xor:LASX
- 	  (match_operand:LASX 1 "register_operand" "f,f,f")
- 	  (match_operand:LASX 2 "reg_or_vector_same_val_operand" "f,YC,Urv8")))]
-   "ISA_HAS_LASX"
-   "@
-    xvxor.v\t%u0,%u1,%u2
-    xvbitrevi.%v0\t%u0,%u1,%V2
-    xvxori.b\t%u0,%u1,%B2"
-   [(set_attr "type" "simd_logic,simd_bit,simd_logic")
-    (set_attr "mode" "<MODE>")])
- 
- (define_insn "ior<mode>3"
-   [(set (match_operand:LASX 0 "register_operand" "=f,f,f")
- 	(ior:LASX
- 	  (match_operand:LASX 1 "register_operand" "f,f,f")
- 	  (match_operand:LASX 2 "reg_or_vector_same_val_operand" "f,YC,Urv8")))]
-   "ISA_HAS_LASX"
-   "@
-    xvor.v\t%u0,%u1,%u2
-    xvbitseti.%v0\t%u0,%u1,%V2
-    xvori.b\t%u0,%u1,%B2"
-   [(set_attr "type" "simd_logic,simd_bit,simd_logic")
-    (set_attr "mode" "<MODE>")])
- 
- (define_insn "and<mode>3"
-   [(set (match_operand:LASX 0 "register_operand" "=f,f,f")
- 	(and:LASX
- 	  (match_operand:LASX 1 "register_operand" "f,f,f")
- 	  (match_operand:LASX 2 "reg_or_vector_same_val_operand" "f,YZ,Urv8")))]
-   "ISA_HAS_LASX"
- {
-   switch (which_alternative)
-     {
-     case 0:
-       return "xvand.v\t%u0,%u1,%u2";
-     case 1:
-       {
- 	rtx elt0 = CONST_VECTOR_ELT (operands[2], 0);
- 	unsigned HOST_WIDE_INT val = ~UINTVAL (elt0);
- 	operands[2] = loongarch_gen_const_int_vector (<MODE>mode, val & (-val));
- 	return "xvbitclri.%v0\t%u0,%u1,%V2";
-       }
-     case 2:
-       return "xvandi.b\t%u0,%u1,%B2";
-     default:
-       gcc_unreachable ();
-     }
- }
-   [(set_attr "type" "simd_logic,simd_bit,simd_logic")
-    (set_attr "mode" "<MODE>")])
- 
  (define_insn "one_cmpl<mode>2"
    [(set (match_operand:ILASX 0 "register_operand" "=f")
  	(not:ILASX (match_operand:ILASX 1 "register_operand" "f")))]
--- 792,797 ----
***************
*** 993,1008 ****
    [(set_attr "type" "simd_fmadd")
     (set_attr "mode" "<MODE>")])
  
- (define_insn "fnma<mode>4"
-   [(set (match_operand:FLASX 0 "register_operand" "=f")
- 	(fma:FLASX (neg:FLASX (match_operand:FLASX 1 "register_operand" "f"))
- 		   (match_operand:FLASX 2 "register_operand" "f")
- 		   (match_operand:FLASX 3 "register_operand" "0")))]
-   "ISA_HAS_LASX"
-   "xvfnmsub.<flasxfmt>\t%u0,%u1,%u2,%u0"
-   [(set_attr "type" "simd_fmadd")
-    (set_attr "mode" "<MODE>")])
- 
  (define_expand "sqrt<mode>2"
    [(set (match_operand:FLASX 0 "register_operand")
      (sqrt:FLASX (match_operand:FLASX 1 "register_operand")))]
--- 940,945 ----
***************
*** 2699,2757 ****
    [(set_attr "type" "simd_int_arith")
     (set_attr "mode" "<MODE>")])
  
- (define_expand "copysign<mode>3"
-   [(set (match_dup 4)
- 	(and:FLASX
- 	  (not:FLASX (match_dup 3))
- 	  (match_operand:FLASX 1 "register_operand")))
-    (set (match_dup 5)
- 	(and:FLASX (match_dup 3)
- 		   (match_operand:FLASX 2 "reg_or_vector_same_val_operand")))
-    (set (match_operand:FLASX 0 "register_operand")
- 	(ior:FLASX (match_dup 4) (match_dup 5)))]
-   "ISA_HAS_LASX"
- {
-   /* copysign (x, -1) should instead be expanded as setting the sign
-      bit.  */
-   if (!REG_P (operands[2]))
-     {
-       rtx op2_elt = unwrap_const_vec_duplicate (operands[2]);
-       if (GET_CODE (op2_elt) == CONST_DOUBLE
- 	  && real_isneg (CONST_DOUBLE_REAL_VALUE (op2_elt)))
- 	{
- 	  rtx n = GEN_INT (8 * GET_MODE_SIZE (<UNITMODE>mode) - 1);
- 	  operands[0] = lowpart_subreg (<VIMODE256>mode, operands[0],
- 					<MODE>mode);
- 	  operands[1] = lowpart_subreg (<VIMODE256>mode, operands[1],
- 					<MODE>mode);
- 	  emit_insn (gen_lasx_xvbitseti_<lasxfmt> (operands[0],
- 						   operands[1], n));
- 	  DONE;
- 	}
-     }
- 
-   operands[2] = force_reg (<MODE>mode, operands[2]);
-   operands[3] = loongarch_build_signbit_mask (<MODE>mode, 1, 0);
- 
-   operands[4] = gen_reg_rtx (<MODE>mode);
-   operands[5] = gen_reg_rtx (<MODE>mode);
- })
- 
- (define_expand "xorsign<mode>3"
-   [(set (match_dup 4)
-     (and:FLASX (match_dup 3)
-         (match_operand:FLASX 2 "register_operand")))
-    (set (match_operand:FLASX 0 "register_operand")
-     (xor:FLASX (match_dup 4)
-          (match_operand:FLASX 1 "register_operand")))]
-   "ISA_HAS_LASX"
- {
-   operands[3] = loongarch_build_signbit_mask (<MODE>mode, 1, 0);
- 
-   operands[4] = gen_reg_rtx (<MODE>mode);
- })
- 
- 
  (define_insn "absv4df2"
    [(set (match_operand:V4DF 0 "register_operand" "=f")
  	(abs:V4DF (match_operand:V4DF 1 "register_operand" "f")))]
--- 2636,2641 ----
***************
*** 3498,3504 ****
    [(set (match_operand:FLASX 0 "register_operand" "=f")
      (vec_merge:FLASX
        (vec_duplicate:FLASX
!         (match_operand:<UNITMODE> 1 "register_operand" "f"))
        (match_operand:FLASX 2 "register_operand" "0")
        (match_operand 3 "const_<bitmask256>_operand" "")))]
    "ISA_HAS_LASX"
--- 3382,3388 ----
    [(set (match_operand:FLASX 0 "register_operand" "=f")
      (vec_merge:FLASX
        (vec_duplicate:FLASX
!         (match_operand:<UNITMODE> 1 "reg_or_0_operand" "f"))
        (match_operand:FLASX 2 "register_operand" "0")
        (match_operand 3 "const_<bitmask256>_operand" "")))]
    "ISA_HAS_LASX"
diff -Nrcpad gcc-15.2.0/gcc/config/loongarch/loongarch-builtins.cc gcc-15.3.0/gcc/config/loongarch/loongarch-builtins.cc
*** gcc-15.2.0/gcc/config/loongarch/loongarch-builtins.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/loongarch/loongarch-builtins.cc	Fri Jun 12 06:09:06 2026
*************** static const struct loongarch_builtin_de
*** 1468,1477 ****
    LSX_BUILTIN (vfrintrp_d, LARCH_V2DF_FTYPE_V2DF),
    LSX_BUILTIN (vfrintrm_s, LARCH_V4SF_FTYPE_V4SF),
    LSX_BUILTIN (vfrintrm_d, LARCH_V2DF_FTYPE_V2DF),
!   LSX_NO_TARGET_BUILTIN (vstelm_b, LARCH_VOID_FTYPE_V16QI_CVPOINTER_SI_UQI),
!   LSX_NO_TARGET_BUILTIN (vstelm_h, LARCH_VOID_FTYPE_V8HI_CVPOINTER_SI_UQI),
!   LSX_NO_TARGET_BUILTIN (vstelm_w, LARCH_VOID_FTYPE_V4SI_CVPOINTER_SI_UQI),
!   LSX_NO_TARGET_BUILTIN (vstelm_d, LARCH_VOID_FTYPE_V2DI_CVPOINTER_SI_UQI),
    LSX_BUILTIN (vaddwev_d_w, LARCH_V2DI_FTYPE_V4SI_V4SI),
    LSX_BUILTIN (vaddwev_w_h, LARCH_V4SI_FTYPE_V8HI_V8HI),
    LSX_BUILTIN (vaddwev_h_b, LARCH_V8HI_FTYPE_V16QI_V16QI),
--- 1468,1477 ----
    LSX_BUILTIN (vfrintrp_d, LARCH_V2DF_FTYPE_V2DF),
    LSX_BUILTIN (vfrintrm_s, LARCH_V4SF_FTYPE_V4SF),
    LSX_BUILTIN (vfrintrm_d, LARCH_V2DF_FTYPE_V2DF),
!   LSX_NO_TARGET_BUILTIN (vstelm_b, LARCH_VOID_FTYPE_V16QI_VPOINTER_SI_UQI),
!   LSX_NO_TARGET_BUILTIN (vstelm_h, LARCH_VOID_FTYPE_V8HI_VPOINTER_SI_UQI),
!   LSX_NO_TARGET_BUILTIN (vstelm_w, LARCH_VOID_FTYPE_V4SI_VPOINTER_SI_UQI),
!   LSX_NO_TARGET_BUILTIN (vstelm_d, LARCH_VOID_FTYPE_V2DI_VPOINTER_SI_UQI),
    LSX_BUILTIN (vaddwev_d_w, LARCH_V2DI_FTYPE_V4SI_V4SI),
    LSX_BUILTIN (vaddwev_w_h, LARCH_V4SI_FTYPE_V8HI_V8HI),
    LSX_BUILTIN (vaddwev_h_b, LARCH_V8HI_FTYPE_V16QI_V16QI),
*************** static const struct loongarch_builtin_de
*** 1641,1647 ****
    LSX_BUILTIN (vssrarni_du_q, LARCH_UV2DI_FTYPE_UV2DI_V2DI_USI),
    LSX_BUILTIN (vpermi_w, LARCH_V4SI_FTYPE_V4SI_V4SI_USI),
    LSX_BUILTIN (vld, LARCH_V16QI_FTYPE_CVPOINTER_SI),
!   LSX_NO_TARGET_BUILTIN (vst, LARCH_VOID_FTYPE_V16QI_CVPOINTER_SI),
    LSX_BUILTIN (vssrlrn_b_h, LARCH_V16QI_FTYPE_V8HI_V8HI),
    LSX_BUILTIN (vssrlrn_h_w, LARCH_V8HI_FTYPE_V4SI_V4SI),
    LSX_BUILTIN (vssrlrn_w_d, LARCH_V4SI_FTYPE_V2DI_V2DI),
--- 1641,1647 ----
    LSX_BUILTIN (vssrarni_du_q, LARCH_UV2DI_FTYPE_UV2DI_V2DI_USI),
    LSX_BUILTIN (vpermi_w, LARCH_V4SI_FTYPE_V4SI_V4SI_USI),
    LSX_BUILTIN (vld, LARCH_V16QI_FTYPE_CVPOINTER_SI),
!   LSX_NO_TARGET_BUILTIN (vst, LARCH_VOID_FTYPE_V16QI_VPOINTER_SI),
    LSX_BUILTIN (vssrlrn_b_h, LARCH_V16QI_FTYPE_V8HI_V8HI),
    LSX_BUILTIN (vssrlrn_h_w, LARCH_V8HI_FTYPE_V4SI_V4SI),
    LSX_BUILTIN (vssrlrn_w_d, LARCH_V4SI_FTYPE_V2DI_V2DI),
*************** static const struct loongarch_builtin_de
*** 1652,1658 ****
    LSX_BUILTIN (vldi, LARCH_V2DI_FTYPE_HI),
    LSX_BUILTIN (vshuf_b, LARCH_V16QI_FTYPE_V16QI_V16QI_V16QI),
    LSX_BUILTIN (vldx, LARCH_V16QI_FTYPE_CVPOINTER_DI),
!   LSX_NO_TARGET_BUILTIN (vstx, LARCH_VOID_FTYPE_V16QI_CVPOINTER_DI),
    LSX_BUILTIN (vextl_qu_du, LARCH_UV2DI_FTYPE_UV2DI),
  
    /* Built-in functions for LASX */
--- 1652,1658 ----
    LSX_BUILTIN (vldi, LARCH_V2DI_FTYPE_HI),
    LSX_BUILTIN (vshuf_b, LARCH_V16QI_FTYPE_V16QI_V16QI_V16QI),
    LSX_BUILTIN (vldx, LARCH_V16QI_FTYPE_CVPOINTER_DI),
!   LSX_NO_TARGET_BUILTIN (vstx, LARCH_VOID_FTYPE_V16QI_VPOINTER_DI),
    LSX_BUILTIN (vextl_qu_du, LARCH_UV2DI_FTYPE_UV2DI),
  
    /* Built-in functions for LASX */
*************** static const struct loongarch_builtin_de
*** 2181,2191 ****
    LASX_BUILTIN (xvfrintrm_s, LARCH_V8SF_FTYPE_V8SF),
    LASX_BUILTIN (xvfrintrm_d, LARCH_V4DF_FTYPE_V4DF),
    LASX_BUILTIN (xvld, LARCH_V32QI_FTYPE_CVPOINTER_SI),
!   LASX_NO_TARGET_BUILTIN (xvst, LARCH_VOID_FTYPE_V32QI_CVPOINTER_SI),
!   LASX_NO_TARGET_BUILTIN (xvstelm_b, LARCH_VOID_FTYPE_V32QI_CVPOINTER_SI_UQI),
!   LASX_NO_TARGET_BUILTIN (xvstelm_h, LARCH_VOID_FTYPE_V16HI_CVPOINTER_SI_UQI),
!   LASX_NO_TARGET_BUILTIN (xvstelm_w, LARCH_VOID_FTYPE_V8SI_CVPOINTER_SI_UQI),
!   LASX_NO_TARGET_BUILTIN (xvstelm_d, LARCH_VOID_FTYPE_V4DI_CVPOINTER_SI_UQI),
    LASX_BUILTIN (xvinsve0_w, LARCH_V8SI_FTYPE_V8SI_V8SI_UQI),
    LASX_BUILTIN (xvinsve0_d, LARCH_V4DI_FTYPE_V4DI_V4DI_UQI),
    LASX_BUILTIN (xvpickve_w, LARCH_V8SI_FTYPE_V8SI_UQI),
--- 2181,2191 ----
    LASX_BUILTIN (xvfrintrm_s, LARCH_V8SF_FTYPE_V8SF),
    LASX_BUILTIN (xvfrintrm_d, LARCH_V4DF_FTYPE_V4DF),
    LASX_BUILTIN (xvld, LARCH_V32QI_FTYPE_CVPOINTER_SI),
!   LASX_NO_TARGET_BUILTIN (xvst, LARCH_VOID_FTYPE_V32QI_VPOINTER_SI),
!   LASX_NO_TARGET_BUILTIN (xvstelm_b, LARCH_VOID_FTYPE_V32QI_VPOINTER_SI_UQI),
!   LASX_NO_TARGET_BUILTIN (xvstelm_h, LARCH_VOID_FTYPE_V16HI_VPOINTER_SI_UQI),
!   LASX_NO_TARGET_BUILTIN (xvstelm_w, LARCH_VOID_FTYPE_V8SI_VPOINTER_SI_UQI),
!   LASX_NO_TARGET_BUILTIN (xvstelm_d, LARCH_VOID_FTYPE_V4DI_VPOINTER_SI_UQI),
    LASX_BUILTIN (xvinsve0_w, LARCH_V8SI_FTYPE_V8SI_V8SI_UQI),
    LASX_BUILTIN (xvinsve0_d, LARCH_V4DI_FTYPE_V4DI_V4DI_UQI),
    LASX_BUILTIN (xvpickve_w, LARCH_V8SI_FTYPE_V8SI_UQI),
*************** static const struct loongarch_builtin_de
*** 2201,2207 ****
    LASX_BUILTIN (xvorn_v, LARCH_UV32QI_FTYPE_UV32QI_UV32QI),
    LASX_BUILTIN (xvldi, LARCH_V4DI_FTYPE_HI),
    LASX_BUILTIN (xvldx, LARCH_V32QI_FTYPE_CVPOINTER_DI),
!   LASX_NO_TARGET_BUILTIN (xvstx, LARCH_VOID_FTYPE_V32QI_CVPOINTER_DI),
    LASX_BUILTIN (xvextl_qu_du, LARCH_UV4DI_FTYPE_UV4DI),
  
    /* LASX */
--- 2201,2207 ----
    LASX_BUILTIN (xvorn_v, LARCH_UV32QI_FTYPE_UV32QI_UV32QI),
    LASX_BUILTIN (xvldi, LARCH_V4DI_FTYPE_HI),
    LASX_BUILTIN (xvldx, LARCH_V32QI_FTYPE_CVPOINTER_DI),
!   LASX_NO_TARGET_BUILTIN (xvstx, LARCH_VOID_FTYPE_V32QI_VPOINTER_DI),
    LASX_BUILTIN (xvextl_qu_du, LARCH_UV4DI_FTYPE_UV4DI),
  
    /* LASX */
*************** loongarch_build_cvpointer_type (void)
*** 2451,2461 ****
--- 2451,2475 ----
    return cache;
  }
  
+ /* Return a type for 'volatile void *'.  */
+ 
+ static tree
+ loongarch_build_vpointer_type (void)
+ {
+   static tree cache;
+ 
+   if (cache == NULL_TREE)
+     cache = build_pointer_type (build_qualified_type (void_type_node,
+ 						      TYPE_QUAL_VOLATILE));
+   return cache;
+ }
+ 
  /* Source-level argument types.  */
  #define LARCH_ATYPE_VOID void_type_node
  #define LARCH_ATYPE_INT integer_type_node
  #define LARCH_ATYPE_POINTER ptr_type_node
  #define LARCH_ATYPE_CVPOINTER loongarch_build_cvpointer_type ()
+ #define LARCH_ATYPE_VPOINTER loongarch_build_vpointer_type ()
  #define LARCH_ATYPE_BOOLEAN boolean_type_node
  /* Standard mode-based argument types.  */
  #define LARCH_ATYPE_QI intQI_type_node
diff -Nrcpad gcc-15.2.0/gcc/config/loongarch/loongarch-def.h gcc-15.3.0/gcc/config/loongarch/loongarch-def.h
*** gcc-15.2.0/gcc/config/loongarch/loongarch-def.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/loongarch/loongarch-def.h	Fri Jun 12 06:09:06 2026
*************** extern loongarch_def_array<const char *,
*** 78,89 ****
  
  
  /* Base ABI */
! enum {
!   ABI_BASE_LP64D	= 0,
!   ABI_BASE_LP64F	= 1,
!   ABI_BASE_LP64S	= 2,
!   N_ABI_BASE_TYPES	= 3
! };
  
  extern loongarch_def_array<const char *, N_ABI_BASE_TYPES>
    loongarch_abi_base_strings;
--- 78,87 ----
  
  
  /* Base ABI */
! #define ABI_BASE_LP64D	  0
! #define ABI_BASE_LP64F	  1
! #define ABI_BASE_LP64S	  2
! #define N_ABI_BASE_TYPES  3
  
  extern loongarch_def_array<const char *, N_ABI_BASE_TYPES>
    loongarch_abi_base_strings;
diff -Nrcpad gcc-15.2.0/gcc/config/loongarch/loongarch-ftypes.def gcc-15.3.0/gcc/config/loongarch/loongarch-ftypes.def
*** gcc-15.2.0/gcc/config/loongarch/loongarch-ftypes.def	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/loongarch/loongarch-ftypes.def	Fri Jun 12 06:09:06 2026
*************** DEF_LARCH_FTYPE (2, (V8QI, V4HI, V4HI))
*** 492,518 ****
  DEF_LARCH_FTYPE (1, (V8QI, V8QI))
  DEF_LARCH_FTYPE (2, (V8QI, V8QI, V8QI))
  
- DEF_LARCH_FTYPE (2, (VOID, SI, CVPOINTER))
  DEF_LARCH_FTYPE (2, (VOID, SI, SI))
  DEF_LARCH_FTYPE (2, (VOID, UQI, SI))
  DEF_LARCH_FTYPE (2, (VOID, USI, UQI))
  DEF_LARCH_FTYPE (1, (VOID, UHI))
! DEF_LARCH_FTYPE (3, (VOID, V16QI, CVPOINTER, SI))
! DEF_LARCH_FTYPE (3, (VOID, V16QI, CVPOINTER, DI))
! DEF_LARCH_FTYPE (3, (VOID, V32QI, CVPOINTER, SI))
! DEF_LARCH_FTYPE (3, (VOID, V32QI, CVPOINTER, DI))
  DEF_LARCH_FTYPE (3, (VOID, V4DF, POINTER, SI))
  DEF_LARCH_FTYPE (3, (VOID, V2DF, POINTER, SI))
- DEF_LARCH_FTYPE (3, (VOID, V2DI, CVPOINTER, SI))
- DEF_LARCH_FTYPE (3, (VOID, V4DI, CVPOINTER, SI))
  DEF_LARCH_FTYPE (2, (VOID, V2HI, V2HI))
  DEF_LARCH_FTYPE (2, (VOID, V4QI, V4QI))
  DEF_LARCH_FTYPE (3, (VOID, V4SF, POINTER, SI))
  DEF_LARCH_FTYPE (3, (VOID, V8SF, POINTER, SI))
- DEF_LARCH_FTYPE (3, (VOID, V4SI, CVPOINTER, SI))
- DEF_LARCH_FTYPE (3, (VOID, V8SI, CVPOINTER, SI))
- DEF_LARCH_FTYPE (3, (VOID, V8HI, CVPOINTER, SI))
- DEF_LARCH_FTYPE (3, (VOID, V16HI, CVPOINTER, SI))
  
  DEF_LARCH_FTYPE (1, (V16HI, V32QI))
  DEF_LARCH_FTYPE (1, (UV16HI, UV32QI))
--- 492,511 ----
  DEF_LARCH_FTYPE (1, (V8QI, V8QI))
  DEF_LARCH_FTYPE (2, (V8QI, V8QI, V8QI))
  
  DEF_LARCH_FTYPE (2, (VOID, SI, SI))
  DEF_LARCH_FTYPE (2, (VOID, UQI, SI))
  DEF_LARCH_FTYPE (2, (VOID, USI, UQI))
  DEF_LARCH_FTYPE (1, (VOID, UHI))
! DEF_LARCH_FTYPE (3, (VOID, V16QI, VPOINTER, SI))
! DEF_LARCH_FTYPE (3, (VOID, V16QI, VPOINTER, DI))
! DEF_LARCH_FTYPE (3, (VOID, V32QI, VPOINTER, SI))
! DEF_LARCH_FTYPE (3, (VOID, V32QI, VPOINTER, DI))
  DEF_LARCH_FTYPE (3, (VOID, V4DF, POINTER, SI))
  DEF_LARCH_FTYPE (3, (VOID, V2DF, POINTER, SI))
  DEF_LARCH_FTYPE (2, (VOID, V2HI, V2HI))
  DEF_LARCH_FTYPE (2, (VOID, V4QI, V4QI))
  DEF_LARCH_FTYPE (3, (VOID, V4SF, POINTER, SI))
  DEF_LARCH_FTYPE (3, (VOID, V8SF, POINTER, SI))
  
  DEF_LARCH_FTYPE (1, (V16HI, V32QI))
  DEF_LARCH_FTYPE (1, (UV16HI, UV32QI))
*************** DEF_LARCH_FTYPE (2, (V4DI, UQI, USI))
*** 607,625 ****
  DEF_LARCH_FTYPE (2, (V2DI, UQI, USI))
  DEF_LARCH_FTYPE (2, (V4DI, UQI, UQI))
  DEF_LARCH_FTYPE (2, (V2DI, UQI, UQI))
- DEF_LARCH_FTYPE (4, (VOID, SI, UQI, V16QI, CVPOINTER))
- DEF_LARCH_FTYPE (4, (VOID, SI, UQI, V8HI, CVPOINTER))
- DEF_LARCH_FTYPE (4, (VOID, SI, UQI, V4SI, CVPOINTER))
- DEF_LARCH_FTYPE (4, (VOID, SI, UQI, V2DI, CVPOINTER))
  DEF_LARCH_FTYPE (2, (V16QI, SI, CVPOINTER))
  DEF_LARCH_FTYPE (2, (V8HI, SI, CVPOINTER))
  DEF_LARCH_FTYPE (2, (V4SI, SI, CVPOINTER))
  DEF_LARCH_FTYPE (2, (V2DI, SI, CVPOINTER))
- DEF_LARCH_FTYPE (4, (VOID, V32QI, UQI, SI,  CVPOINTER))
- DEF_LARCH_FTYPE (4, (VOID, V16HI, UQI, SI, CVPOINTER))
- DEF_LARCH_FTYPE (4, (VOID, V8SI, UQI, SI, CVPOINTER))
- DEF_LARCH_FTYPE (4, (VOID, V4DI, UQI, SI, CVPOINTER))
- DEF_LARCH_FTYPE (3, (VOID, V32QI, SI,  CVPOINTER))
  DEF_LARCH_FTYPE (2, (V32QI, SI, CVPOINTER))
  DEF_LARCH_FTYPE (2, (V16HI, SI, CVPOINTER))
  DEF_LARCH_FTYPE (2, (V8SI, SI, CVPOINTER))
--- 600,609 ----
*************** DEF_LARCH_FTYPE(3,(V4DI,V4DI,UV16HI,V16H
*** 682,691 ****
  DEF_LARCH_FTYPE(2,(UV8SI,UV32QI,UV32QI))
  DEF_LARCH_FTYPE(2,(V8SI,UV32QI,V32QI))
  
! DEF_LARCH_FTYPE(4,(VOID,V16QI,CVPOINTER,SI,UQI))
! DEF_LARCH_FTYPE(4,(VOID,V8HI,CVPOINTER,SI,UQI))
! DEF_LARCH_FTYPE(4,(VOID,V4SI,CVPOINTER,SI,UQI))
! DEF_LARCH_FTYPE(4,(VOID,V2DI,CVPOINTER,SI,UQI))
  
  DEF_LARCH_FTYPE (2, (DI, V16QI, UQI))
  DEF_LARCH_FTYPE (2, (DI, V8HI, UQI))
--- 666,675 ----
  DEF_LARCH_FTYPE(2,(UV8SI,UV32QI,UV32QI))
  DEF_LARCH_FTYPE(2,(V8SI,UV32QI,V32QI))
  
! DEF_LARCH_FTYPE(4,(VOID,V16QI,VPOINTER,SI,UQI))
! DEF_LARCH_FTYPE(4,(VOID,V8HI,VPOINTER,SI,UQI))
! DEF_LARCH_FTYPE(4,(VOID,V4SI,VPOINTER,SI,UQI))
! DEF_LARCH_FTYPE(4,(VOID,V2DI,VPOINTER,SI,UQI))
  
  DEF_LARCH_FTYPE (2, (DI, V16QI, UQI))
  DEF_LARCH_FTYPE (2, (DI, V8HI, UQI))
*************** DEF_LARCH_FTYPE (3, (UV16HI, UV16HI, V16
*** 707,716 ****
  DEF_LARCH_FTYPE (3, (UV8SI, UV8SI, V8SI, USI))
  DEF_LARCH_FTYPE (3, (UV4DI, UV4DI, V4DI, USI))
  
! DEF_LARCH_FTYPE(4,(VOID,V32QI,CVPOINTER,SI,UQI))
! DEF_LARCH_FTYPE(4,(VOID,V16HI,CVPOINTER,SI,UQI))
! DEF_LARCH_FTYPE(4,(VOID,V8SI,CVPOINTER,SI,UQI))
! DEF_LARCH_FTYPE(4,(VOID,V4DI,CVPOINTER,SI,UQI))
  
  DEF_LARCH_FTYPE (1, (BOOLEAN,V16QI))
  DEF_LARCH_FTYPE(2,(V16QI,CVPOINTER,CVPOINTER))
--- 691,700 ----
  DEF_LARCH_FTYPE (3, (UV8SI, UV8SI, V8SI, USI))
  DEF_LARCH_FTYPE (3, (UV4DI, UV4DI, V4DI, USI))
  
! DEF_LARCH_FTYPE(4,(VOID,V32QI,VPOINTER,SI,UQI))
! DEF_LARCH_FTYPE(4,(VOID,V16HI,VPOINTER,SI,UQI))
! DEF_LARCH_FTYPE(4,(VOID,V8SI,VPOINTER,SI,UQI))
! DEF_LARCH_FTYPE(4,(VOID,V4DI,VPOINTER,SI,UQI))
  
  DEF_LARCH_FTYPE (1, (BOOLEAN,V16QI))
  DEF_LARCH_FTYPE(2,(V16QI,CVPOINTER,CVPOINTER))
diff -Nrcpad gcc-15.2.0/gcc/config/loongarch/loongarch-protos.h gcc-15.3.0/gcc/config/loongarch/loongarch-protos.h
*** gcc-15.2.0/gcc/config/loongarch/loongarch-protos.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/loongarch/loongarch-protos.h	Fri Jun 12 06:09:06 2026
*************** extern void loongarch_register_pragmas (
*** 223,226 ****
--- 223,227 ----
  extern bool loongarch_process_target_attr (tree args, tree fndecl);
  extern rtx loongarch_gen_stepped_int_parallel (unsigned int nelts, int base,
  					       int step);
+ extern void loongarch_output_asm_load_canary (rtx reg, rtx canary, rtx tmp);
  #endif /* ! GCC_LOONGARCH_PROTOS_H */
diff -Nrcpad gcc-15.2.0/gcc/config/loongarch/loongarch.cc gcc-15.3.0/gcc/config/loongarch/loongarch.cc
*** gcc-15.2.0/gcc/config/loongarch/loongarch.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/loongarch/loongarch.cc	Fri Jun 12 06:09:06 2026
*************** loongarch_symbol_binds_local_p (const_rt
*** 1718,1731 ****
  bool
  loongarch_const_vector_bitimm_set_p (rtx op, machine_mode mode)
  {
!   if (GET_CODE (op) == CONST_VECTOR && op != CONST0_RTX (mode))
      {
        unsigned HOST_WIDE_INT val = UINTVAL (CONST_VECTOR_ELT (op, 0));
        int vlog2 = exact_log2 (val & GET_MODE_MASK (GET_MODE_INNER (mode)));
  
        if (vlog2 != -1)
  	{
- 	  gcc_assert (GET_MODE_CLASS (mode) == MODE_VECTOR_INT);
  	  gcc_assert (vlog2 >= 0 && vlog2 <= GET_MODE_UNIT_BITSIZE (mode) - 1);
  	  return loongarch_const_vector_same_val_p (op, mode);
  	}
--- 1718,1732 ----
  bool
  loongarch_const_vector_bitimm_set_p (rtx op, machine_mode mode)
  {
!   if (GET_CODE (op) == CONST_VECTOR
!       && (GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT
! 	  || GET_MODE_CLASS (mode) == MODE_VECTOR_INT))
      {
        unsigned HOST_WIDE_INT val = UINTVAL (CONST_VECTOR_ELT (op, 0));
        int vlog2 = exact_log2 (val & GET_MODE_MASK (GET_MODE_INNER (mode)));
  
        if (vlog2 != -1)
  	{
  	  gcc_assert (vlog2 >= 0 && vlog2 <= GET_MODE_UNIT_BITSIZE (mode) - 1);
  	  return loongarch_const_vector_same_val_p (op, mode);
  	}
*************** loongarch_const_vector_bitimm_set_p (rtx
*** 1740,1753 ****
  bool
  loongarch_const_vector_bitimm_clr_p (rtx op, machine_mode mode)
  {
!   if (GET_CODE (op) == CONST_VECTOR && op != CONSTM1_RTX (mode))
      {
!       unsigned HOST_WIDE_INT val = ~UINTVAL (CONST_VECTOR_ELT (op, 0));
        int vlog2 = exact_log2 (val & GET_MODE_MASK (GET_MODE_INNER (mode)));
  
        if (vlog2 != -1)
  	{
- 	  gcc_assert (GET_MODE_CLASS (mode) == MODE_VECTOR_INT);
  	  gcc_assert (vlog2 >= 0 && vlog2 <= GET_MODE_UNIT_BITSIZE (mode) - 1);
  	  return loongarch_const_vector_same_val_p (op, mode);
  	}
--- 1741,1775 ----
  bool
  loongarch_const_vector_bitimm_clr_p (rtx op, machine_mode mode)
  {
!   if (GET_CODE (op) == CONST_VECTOR
!       && (GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT
! 	  || GET_MODE_CLASS (mode) == MODE_VECTOR_INT))
      {
!       unsigned HOST_WIDE_INT val;
!       if (GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT)
! 	{
! 	  rtx val_s = CONST_VECTOR_ELT (op, 0);
! 	  const REAL_VALUE_TYPE *x = CONST_DOUBLE_REAL_VALUE (val_s);
! 	  if (GET_MODE (val_s) == DFmode)
! 	    {
! 	      long tmp[2];
! 	      REAL_VALUE_TO_TARGET_DOUBLE (*x, tmp);
! 	      val = ~((unsigned HOST_WIDE_INT) tmp[1] << 32 | tmp[0]);
! 	    }
! 	  else
! 	    {
! 	      long tmp;
! 	      REAL_VALUE_TO_TARGET_SINGLE (*x, tmp);
! 	      val = ~((unsigned HOST_WIDE_INT) tmp);
! 	    }
! 	}
!       else
! 	val = ~UINTVAL (CONST_VECTOR_ELT (op, 0));
! 
        int vlog2 = exact_log2 (val & GET_MODE_MASK (GET_MODE_INNER (mode)));
  
        if (vlog2 != -1)
  	{
  	  gcc_assert (vlog2 >= 0 && vlog2 <= GET_MODE_UNIT_BITSIZE (mode) - 1);
  	  return loongarch_const_vector_same_val_p (op, mode);
  	}
*************** loongarch_vector_costs::add_stmt_cost (i
*** 4390,4395 ****
--- 4412,4418 ----
  	    break;
  	  }
        else if (TARGET_RECIP_VEC_DIV
+ 	       && vectype
  	       && gimple_code (stmt_info->stmt) == GIMPLE_ASSIGN)
  	{
  	  machine_mode mode = TYPE_MODE (vectype);
*************** loongarch_expand_conditional_move (rtx *
*** 5436,5447 ****
  	    }
  	}
  
        /* Check if the optimization conditions are met.  */
        if (value_if_true_insn
  	  && value_if_false_insn
! 	  /* Make sure that value_if_false and var are the same.  */
! 	  && BINARY_P (value_if_true_insn_src
! 		       = SET_SRC (single_set (value_if_true_insn)))
  	  /* Make sure that both value_if_true and value_if_false
  	     has the same var.  */
  	  && rtx_equal_p (XEXP (value_if_true_insn_src, 0),
--- 5459,5490 ----
  	    }
  	}
  
+       auto is_binary_op_0_keep_orig = [](enum rtx_code code)
+ 	{
+ 	  switch (code)
+ 	    {
+ 	    case PLUS:
+ 	    case MINUS:
+ 	    case IOR:
+ 	    case XOR:
+ 	    case ROTATE:
+ 	    case ROTATERT:
+ 	    case ASHIFT:
+ 	    case ASHIFTRT:
+ 	    case LSHIFTRT:
+ 	      return true;
+ 	    default:
+ 	      return false;
+ 	    }
+ 	};
+ 
        /* Check if the optimization conditions are met.  */
        if (value_if_true_insn
  	  && value_if_false_insn
! 	  /* Make sure that the orig value OP 0 keep orig.  */
! 	  && (value_if_true_insn_src
! 	      = SET_SRC (single_set (value_if_true_insn)))
! 	  && is_binary_op_0_keep_orig ( GET_CODE (value_if_true_insn_src))
  	  /* Make sure that both value_if_true and value_if_false
  	     has the same var.  */
  	  && rtx_equal_p (XEXP (value_if_true_insn_src, 0),
*************** loongarch_print_operand (FILE *file, rtx
*** 6398,6412 ****
        if (CONST_VECTOR_P (op))
  	{
  	  machine_mode mode = GET_MODE_INNER (GET_MODE (op));
! 	  unsigned HOST_WIDE_INT val = UINTVAL (CONST_VECTOR_ELT (op, 0));
! 	  int vlog2 = exact_log2 (val & GET_MODE_MASK (mode));
! 	  if (vlog2 != -1)
! 	    fprintf (file, "%d", vlog2);
! 	  else
! 	    output_operand_lossage ("invalid use of '%%%c'", letter);
  	}
!       else
! 	output_operand_lossage ("invalid use of '%%%c'", letter);
        break;
  
      case 'W':
--- 6441,6459 ----
        if (CONST_VECTOR_P (op))
  	{
  	  machine_mode mode = GET_MODE_INNER (GET_MODE (op));
! 	  rtx val_s = CONST_VECTOR_ELT (op, 0);
! 	  if (CONST_INT_P (val_s))
! 	    {
! 	      unsigned HOST_WIDE_INT val = UINTVAL (val_s);
! 	      int vlog2 = exact_log2 (val & GET_MODE_MASK (mode));
! 	      if (vlog2 != -1)
! 		{
! 		  fprintf (file, "%d", vlog2);
! 		  break;
! 		}
! 	    }
  	}
!       output_operand_lossage ("invalid use of '%%%c'", letter);
        break;
  
      case 'W':
*************** loongarch_print_operand (FILE *file, rtx
*** 6484,6495 ****
--- 6531,6544 ----
  	case E_V4SFmode:
  	case E_V8SImode:
  	case E_V8SFmode:
+ 	case E_SImode:
  	  fprintf (file, "w");
  	  break;
  	case E_V2DImode:
  	case E_V2DFmode:
  	case E_V4DImode:
  	case E_V4DFmode:
+ 	case E_DImode:
  	  fprintf (file, "d");
  	  break;
  	default:
*************** loongarch_expand_vec_perm_1 (rtx operand
*** 8883,8939 ****
    /* Number of elements in the vector.  */
    w = GET_MODE_NUNITS (mode);
  
!   rtx round_data[MAX_VECT_LEN];
!   rtx round_reg, round_data_rtx;
! 
!   if (mode != E_V32QImode)
      {
!       for (int i = 0; i < w; i += 1)
! 	{
! 	  round_data[i] = GEN_INT (0x1f);
! 	}
! 
!       if (mode == E_V4DFmode)
! 	{
! 	  round_data_rtx = gen_rtx_CONST_VECTOR (E_V4DImode,
! 						 gen_rtvec_v (w, round_data));
! 	  round_reg = gen_reg_rtx (E_V4DImode);
! 	}
!       else if (mode == E_V8SFmode)
! 	{
! 
! 	  round_data_rtx = gen_rtx_CONST_VECTOR (E_V8SImode,
! 						 gen_rtvec_v (w, round_data));
! 	  round_reg = gen_reg_rtx (E_V8SImode);
! 	}
!       else
! 	{
! 	  round_data_rtx = gen_rtx_CONST_VECTOR (mode,
! 						 gen_rtvec_v (w, round_data));
! 	  round_reg = gen_reg_rtx (mode);
! 	}
! 
!       emit_move_insn (round_reg, round_data_rtx);
!       switch (mode)
! 	{
! 	case E_V32QImode:
! 	  emit_insn (gen_andv32qi3 (mask, mask, round_reg));
! 	  break;
! 	case E_V16HImode:
! 	  emit_insn (gen_andv16hi3 (mask, mask, round_reg));
! 	  break;
! 	case E_V8SImode:
! 	case E_V8SFmode:
! 	  emit_insn (gen_andv8si3 (mask, mask, round_reg));
! 	  break;
! 	case E_V4DImode:
! 	case E_V4DFmode:
! 	  emit_insn (gen_andv4di3 (mask, mask, round_reg));
! 	  break;
! 	default:
! 	  gcc_unreachable ();
! 	  break;
! 	}
      }
  
    if (mode == V4DImode || mode == V4DFmode)
--- 8932,8944 ----
    /* Number of elements in the vector.  */
    w = GET_MODE_NUNITS (mode);
  
!   /* If we are using xvshuf.*, clamp the selector to avoid unpredictable
!      output.  */
!   if (maskmode != V8SImode && maskmode != V4DImode)
      {
!       rtx t = gen_const_vec_duplicate (maskmode, GEN_INT (0x1f));
!       mask = expand_binop (maskmode, and_optab, mask, t, NULL_RTX, false,
! 			   OPTAB_DIRECT);
      }
  
    if (mode == V4DImode || mode == V4DFmode)
*************** loongarch_expand_vector_init_same (rtx t
*** 10146,10177 ****
  	}
      }
  
!   if (imode == GET_MODE (same))
!     temp = same;
!   else if (GET_MODE_SIZE (imode) >= UNITS_PER_WORD)
!     {
!       if (GET_CODE (same) == MEM)
! 	{
! 	  rtx reg_tmp = gen_reg_rtx (GET_MODE (same));
! 	  loongarch_emit_move (reg_tmp, same);
! 	  temp = simplify_gen_subreg (imode, reg_tmp, GET_MODE (reg_tmp), 0);
! 	}
!       else
! 	temp = simplify_gen_subreg (imode, same, GET_MODE (same), 0);
!     }
!   else
!     {
!       if (GET_CODE (same) == MEM)
! 	{
! 	  rtx reg_tmp = gen_reg_rtx (GET_MODE (same));
! 	  loongarch_emit_move (reg_tmp, same);
! 	  temp = lowpart_subreg (imode, reg_tmp, GET_MODE (reg_tmp));
! 	}
!       else
! 	temp = lowpart_subreg (imode, same, GET_MODE (same));
!     }
! 
!   temp = force_reg (imode, temp);
  
    switch (vmode)
      {
--- 10151,10157 ----
  	}
      }
  
!   temp = force_reg (imode, same);
  
    switch (vmode)
      {
*************** loongarch_build_signbit_mask (machine_mo
*** 10920,10926 ****
      return force_reg (inner_mode, mask);
  
    v = loongarch_build_const_vector (vec_mode, vect, mask);
!   return force_reg (vec_mode, v);
  }
  
  /* Use rsqrte instruction and Newton-Rhapson to compute the approximation of
--- 10900,10906 ----
      return force_reg (inner_mode, mask);
  
    v = loongarch_build_const_vector (vec_mode, vect, mask);
!   return v;
  }
  
  /* Use rsqrte instruction and Newton-Rhapson to compute the approximation of
*************** void loongarch_emit_swrsqrtsf (rtx res,
*** 10969,10978 ****
        if (VECTOR_MODE_P (mode))
  	{
  	  machine_mode imode = related_int_vector_mode (mode).require ();
! 	  rtx mask = gen_reg_rtx (imode);
! 	  emit_insn (gen_rtx_SET (mask, gen_rtx_NE (imode, a, zero)));
! 	  emit_insn (gen_rtx_SET (x0, gen_rtx_AND (mode, x0,
! 						   gen_lowpart (mode, mask))));
  	}
        else
  	{
--- 10949,10959 ----
        if (VECTOR_MODE_P (mode))
  	{
  	  machine_mode imode = related_int_vector_mode (mode).require ();
! 	  rtx mask = force_reg (imode, gen_rtx_NE (imode, a, zero));
! 	  emit_move_insn (gen_lowpart (imode, x0),
! 			  gen_rtx_AND (imode,
! 				       gen_lowpart (imode, x0),
! 				       mask));
  	}
        else
  	{
*************** loongarch_c_mode_for_suffix (char suffix
*** 11152,11157 ****
--- 11133,11262 ----
    return VOIDmode;
  }
  
+ /* Implement TARGET_COMPUTE_PRESSURE_CLASSES.  */
+ 
+ static int
+ loongarch_compute_pressure_classes (reg_class *classes)
+ {
+   int i = 0;
+   classes[i++] = GENERAL_REGS;
+   classes[i++] = FP_REGS;
+   classes[i++] = FCC_REGS;
+   return i;
+ }
+ 
+ /* Implement TARGET_CAN_INLINE_P.  Determine whether inlining the function
+    CALLER into the function CALLEE is safe.  Inlining should be rejected if
+    there is no always_inline attribute and the target options differ except
+    for differences in ISA extensions or performance tuning options like the
+    code model, TLS dialect, etc.  */
+ 
+ static bool
+ loongarch_can_inline_p (tree caller, tree callee)
+ {
+   tree callee_tree = DECL_FUNCTION_SPECIFIC_TARGET (callee);
+   tree caller_tree = DECL_FUNCTION_SPECIFIC_TARGET (caller);
+ 
+   if (!callee_tree)
+     callee_tree = target_option_default_node;
+ 
+   if (!caller_tree)
+     caller_tree = target_option_default_node;
+ 
+   /* If both caller and callee have attributes, assume that if the
+      pointer is different, the two functions have different target
+      options since build_target_option_node uses a hash table for the
+      options.  */
+   if (callee_tree == caller_tree)
+     return true;
+ 
+   struct cl_target_option *callee_opts = TREE_TARGET_OPTION (callee_tree);
+   struct cl_target_option *caller_opts = TREE_TARGET_OPTION (caller_tree);
+ 
+   /* Callee and caller should have the same target options.  */
+   int callee_target_flags = callee_opts->x_target_flags;
+   int caller_target_flags = caller_opts->x_target_flags;
+ 
+   if (callee_target_flags != caller_target_flags)
+     return false;
+ 
+   /* If callee enables the isa extension that the caller does not enable,
+      inlining is disabled.  */
+   if (~caller_opts->x_la_isa_evolution
+       & callee_opts->x_la_isa_evolution)
+     return false;
+ 
+   /* If simd extensions are enabled for the callee but not for the caller,
+      inlining is disabled.  */
+   if ((caller_opts->x_la_opt_simd == ISA_EXT_NONE
+        && callee_opts->x_la_opt_simd != ISA_EXT_NONE)
+       || (caller_opts->x_la_opt_simd == ISA_EXT_SIMD_LSX
+ 	  && callee_opts->x_la_opt_simd == ISA_EXT_SIMD_LASX))
+     return false;
+ 
+   bool always_inline
+     = lookup_attribute ("always_inline", DECL_ATTRIBUTES (callee));
+ 
+   /* If the architectural features match up and the callee is always_inline
+      then the other attributes don't matter.  */
+   if (always_inline)
+     return true;
+ 
+   if (caller_opts->x_la_opt_cmodel != callee_opts->x_la_opt_cmodel)
+     return false;
+ 
+   return true;
+ }
+ 
+ /* Output assembly to materialize the address of the stack canary value
+    into reg.  The third argument, tmp, should be and should only be
+    non-NULL if the extreme code model is effective for the canary.  If
+    the fourth arugment, load, is true, the canary value is loaded into
+    the register.
+ 
+    The assembly cannot be splitted due to security reason.  */
+ void
+ loongarch_output_asm_load_canary (rtx reg, rtx canary, rtx tmp)
+ {
+   gcc_checking_assert (ssp_operand (canary, VOIDmode));
+   gcc_checking_assert ((!tmp) == ssp_normal_operand (canary, VOIDmode));
+   gcc_checking_assert (register_operand (reg, Pmode));
+ 
+   rtx op[] = {reg, canary, tmp};
+   bool got = (loongarch_classify_symbol (canary) == SYMBOL_GOT_DISP);
+   bool need_ld = false;
+ 
+   if (la_opt_explicit_relocs != EXPLICIT_RELOCS_ALWAYS)
+     {
+       if (got)
+ 	output_asm_insn (tmp ? "la.global\t%0,%2,%1" : "la.global\t%0,%1",
+ 			 op);
+       else
+ 	output_asm_insn (tmp ? "la.local\t%0,%2,%1" : "la.local\t%0,%1",
+ 			 op);
+ 
+       need_ld = true;
+     }
+   else
+     {
+       output_asm_insn ("pcalau12i\t%0,%r1", op);
+       if (!tmp)
+ 	output_asm_insn ("ld.%v0\t%0,%0,%L1", op);
+       else
+ 	{
+ 	  output_asm_insn ("addi.d\t%2,$r0,%L1", op);
+ 	  output_asm_insn ("lu32i.d\t%2,%R1", op);
+ 	  output_asm_insn ("lu52i.d\t%2,%2,%H1", op);
+ 	  output_asm_insn ("ldx.d\t%0,%0,%2", op);
+ 	}
+ 
+       need_ld = got;
+     }
+ 
+   if (need_ld)
+     output_asm_insn ("ld.%v0\t%0,%0,0", op);
+ }
+ 
  /* Initialize the GCC target structure.  */
  #undef TARGET_ASM_ALIGNED_HI_OP
  #define TARGET_ASM_ALIGNED_HI_OP "\t.half\t"
*************** loongarch_c_mode_for_suffix (char suffix
*** 11426,11431 ****
--- 11531,11542 ----
  #undef TARGET_C_MODE_FOR_SUFFIX
  #define TARGET_C_MODE_FOR_SUFFIX loongarch_c_mode_for_suffix
  
+ #undef TARGET_COMPUTE_PRESSURE_CLASSES
+ #define TARGET_COMPUTE_PRESSURE_CLASSES loongarch_compute_pressure_classes
+ 
+ #undef TARGET_CAN_INLINE_P
+ #define TARGET_CAN_INLINE_P loongarch_can_inline_p
+ 
  struct gcc_target targetm = TARGET_INITIALIZER;
  
  #include "gt-loongarch.h"
diff -Nrcpad gcc-15.2.0/gcc/config/loongarch/loongarch.md gcc-15.3.0/gcc/config/loongarch/loongarch.md
*** gcc-15.2.0/gcc/config/loongarch/loongarch.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/loongarch/loongarch.md	Fri Jun 12 06:09:06 2026
***************
*** 83,88 ****
--- 83,90 ----
    UNSPEC_LOAD_SYMBOL_OFFSET64
    UNSPEC_LA_PCREL_64_PART1
    UNSPEC_LA_PCREL_64_PART2
+ 
+   UNSPEC_SSP
  ])
  
  (define_c_enum "unspecv" [
***************
*** 1619,1631 ****
      operands[2] = GEN_INT (len);
      operands[4] = GEN_INT (lo);
  
!     if (lo)
!       {
! 	rtx tmp = gen_reg_rtx (<MODE>mode);
! 	emit_move_insn (tmp, gen_rtx_ASHIFTRT(<MODE>mode, operands[3],
! 					      GEN_INT (lo)));
! 	operands[3] = tmp;
!       }
    })
  
  ;; We always avoid the shift operation in bstrins_<mode>_for_ior_mask
--- 1621,1633 ----
      operands[2] = GEN_INT (len);
      operands[4] = GEN_INT (lo);
  
!     /* Use a new pseudo register even if lo == 0 or we'll wreck havoc
!        when operands[0] is same as operands[3].  See PR 121906.  */
!     rtx tmp = gen_reg_rtx (<MODE>mode);
!     rtx val = lo ? gen_rtx_ASHIFTRT (<MODE>mode, operands[3], GEN_INT (lo))
! 		 : operands[3];
!     emit_move_insn (tmp, val);
!     operands[3] = tmp;
    })
  
  ;; We always avoid the shift operation in bstrins_<mode>_for_ior_mask
***************
*** 2237,2243 ****
    (unspec:DI [(const_int 0)]
      UNSPEC_LOAD_SYMBOL_OFFSET64)
    (clobber (match_operand:DI 2 "register_operand" "=&r,r"))]
!  "TARGET_64BIT && TARGET_CMODEL_EXTREME"
  {
    if (which_alternative == 1)
      return "#";
--- 2239,2245 ----
    (unspec:DI [(const_int 0)]
      UNSPEC_LOAD_SYMBOL_OFFSET64)
    (clobber (match_operand:DI 2 "register_operand" "=&r,r"))]
!  "TARGET_64BIT"
  {
    if (which_alternative == 1)
      return "#";
***************
*** 3372,3378 ****
  ;; QImode values so we can force zero-extension.
  (define_mode_iterator BR [(QI "TARGET_64BIT") SI (DI "TARGET_64BIT")])
  
! (define_expand "cbranch<mode>4"
    [(set (pc)
  	(if_then_else (match_operator 0 "comparison_operator"
  			[(match_operand:BR 1 "register_operand")
--- 3374,3380 ----
  ;; QImode values so we can force zero-extension.
  (define_mode_iterator BR [(QI "TARGET_64BIT") SI (DI "TARGET_64BIT")])
  
! (define_expand "@cbranch<mode>4"
    [(set (pc)
  	(if_then_else (match_operator 0 "comparison_operator"
  			[(match_operand:BR 1 "register_operand")
***************
*** 4632,4637 ****
--- 4634,4723 ----
      operands[0] = loongarch_rewrite_mem_for_simple_ldst (operands[0]);
    })
  
+ ;; Set and check against stack canary without leaving it in a register.
+ ;; DO NOT ATTEMPT TO SPLIT THESE INSNS!  It's important for security reason
+ ;; that the canary value does not live beyond the life of this sequence.
+ 
+ (define_insn "@stack_protect_combined_set_normal_<mode>"
+   [(set (match_operand:P 0 "memory_operand" "=m,ZC")
+         (unspec:P [(mem:P (match_operand:P 1 "ssp_normal_operand"))]
+ 		  UNSPEC_SSP))
+    (set (match_scratch:P 2 "=&r,&r") (const_int 0))]
+   ""
+ {
+   loongarch_output_asm_load_canary (operands[2], operands[1], NULL_RTX);
+   output_asm_insn (which_alternative ? "stptr.d\t%2,%0" : "st.d\t%2,%0",
+ 		   operands);
+   return "ori\t%2,$r0,0";
+ }
+   [(set_attr "type" "store")
+    (set_attr "length" "20")])
+ 
+ (define_insn "@stack_protect_combined_set_extreme_<mode>"
+   [(set (match_operand:P 0 "memory_operand" "=m,ZC")
+         (unspec:P [(mem:P (match_operand:P 1 "ssp_operand"))] UNSPEC_SSP))
+    (set (match_scratch:P 2 "=&r,&r") (const_int 0))
+    (set (match_scratch:P 3 "=&r,&r") (const_int 0))]
+   ""
+ {
+   loongarch_output_asm_load_canary (operands[2], operands[1], operands[3]);
+   output_asm_insn (which_alternative ? "stptr.d\t%2,%0" : "st.d\t%2,%0",
+ 		   operands);
+   return "ori\t%2,$r0,0\n\tori\t%3,$r0,0";
+ }
+   [(set_attr "type" "store")
+    (set_attr "length" "36")])
+ 
+ (define_insn "@stack_protect_combined_test_internal_<mode>"
+   [(set (match_operand:P 0 "register_operand" "=r,r,&r,&r")
+ 	(xor:P
+ 	  (match_operand:P 1 "memory_operand" "=m,ZC,m,ZC")
+ 	    (unspec:P
+ 	      [(mem:P (match_operand:P 2 "ssp_operand" "ZE,ZE,ZF,ZF"))]
+ 	      UNSPEC_SSP)))
+    (set (match_scratch:P 3 "=&r,&r,&r,&r") (const_int 0))]
+   ""
+ {
+   rtx t = (which_alternative >= 2 ? operands[0] : NULL_RTX);
+   loongarch_output_asm_load_canary (operands[3], operands[2], t);
+   output_asm_insn ((which_alternative & 1) ? "ldptr.d\t%0,%1"
+ 					   : "ld.d\t%0,%1",
+ 		   operands);
+   return "xor\t%0,%0,%3\n\tori\t%3,$r0,0";
+ }
+   [(set_attr "type" "load,load,load,load")
+    (set_attr "length" "24,24,36,36")])
+ 
+ (define_expand "stack_protect_combined_set"
+   [(match_operand 0 "memory_operand")
+    (match_operand 1 "memory_operand")]
+   ""
+ {
+   rtx canary = XEXP (operands[1], 0);
+   auto fn = (ssp_normal_operand (canary, VOIDmode)
+ 	     ? gen_stack_protect_combined_set_normal
+ 	     : gen_stack_protect_combined_set_extreme);
+ 
+   emit_insn (fn (Pmode, operands[0], canary));
+   DONE;
+ })
+ 
+ (define_expand "stack_protect_combined_test"
+   [(match_operand 0 "memory_operand")
+    (match_operand 1 "memory_operand")
+    (match_operand 2 "")]
+   ""
+ {
+   rtx t = gen_reg_rtx (Pmode);
+   rtx canary = XEXP (operands[1], 0);
+   emit_insn (gen_stack_protect_combined_test_internal (Pmode, t,
+ 						       operands[0],
+ 						       canary));
+   rtx cond = gen_rtx_EQ (VOIDmode, t, const0_rtx);
+   emit_jump_insn (gen_cbranch4 (Pmode, cond, t, const0_rtx, operands[2]));
+   DONE;
+ })
+ 
  ;; Synchronization instructions.
  
  (include "sync.md")
diff -Nrcpad gcc-15.2.0/gcc/config/loongarch/lsx.md gcc-15.3.0/gcc/config/loongarch/lsx.md
*** gcc-15.2.0/gcc/config/loongarch/lsx.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/loongarch/lsx.md	Fri Jun 12 06:09:06 2026
***************
*** 654,712 ****
    [(set_attr "type" "simd_div")
     (set_attr "mode" "<MODE>")])
  
- (define_insn "xor<mode>3"
-   [(set (match_operand:LSX 0 "register_operand" "=f,f,f")
- 	(xor:LSX
- 	  (match_operand:LSX 1 "register_operand" "f,f,f")
- 	  (match_operand:LSX 2 "reg_or_vector_same_val_operand" "f,YC,Urv8")))]
-   "ISA_HAS_LSX"
-   "@
-    vxor.v\t%w0,%w1,%w2
-    vbitrevi.%v0\t%w0,%w1,%V2
-    vxori.b\t%w0,%w1,%B2"
-   [(set_attr "type" "simd_logic,simd_bit,simd_logic")
-    (set_attr "mode" "<MODE>")])
- 
- (define_insn "ior<mode>3"
-   [(set (match_operand:LSX 0 "register_operand" "=f,f,f")
- 	(ior:LSX
- 	  (match_operand:LSX 1 "register_operand" "f,f,f")
- 	  (match_operand:LSX 2 "reg_or_vector_same_val_operand" "f,YC,Urv8")))]
-   "ISA_HAS_LSX"
-   "@
-    vor.v\t%w0,%w1,%w2
-    vbitseti.%v0\t%w0,%w1,%V2
-    vori.b\t%w0,%w1,%B2"
-   [(set_attr "type" "simd_logic,simd_bit,simd_logic")
-    (set_attr "mode" "<MODE>")])
- 
- (define_insn "and<mode>3"
-   [(set (match_operand:LSX 0 "register_operand" "=f,f,f")
- 	(and:LSX
- 	  (match_operand:LSX 1 "register_operand" "f,f,f")
- 	  (match_operand:LSX 2 "reg_or_vector_same_val_operand" "f,YZ,Urv8")))]
-   "ISA_HAS_LSX"
- {
-   switch (which_alternative)
-     {
-     case 0:
-       return "vand.v\t%w0,%w1,%w2";
-     case 1:
-       {
- 	rtx elt0 = CONST_VECTOR_ELT (operands[2], 0);
- 	unsigned HOST_WIDE_INT val = ~UINTVAL (elt0);
- 	operands[2] = loongarch_gen_const_int_vector (<MODE>mode, val & (-val));
- 	return "vbitclri.%v0\t%w0,%w1,%V2";
-       }
-     case 2:
-       return "vandi.b\t%w0,%w1,%B2";
-     default:
-       gcc_unreachable ();
-     }
- }
-   [(set_attr "type" "simd_logic,simd_bit,simd_logic")
-    (set_attr "mode" "<MODE>")])
- 
  (define_insn "one_cmpl<mode>2"
    [(set (match_operand:ILSX 0 "register_operand" "=f")
  	(not:ILSX (match_operand:ILSX 1 "register_operand" "f")))]
--- 654,659 ----
***************
*** 852,867 ****
    [(set_attr "type" "simd_fmadd")
     (set_attr "mode" "<MODE>")])
  
- (define_insn "fnma<mode>4"
-   [(set (match_operand:FLSX 0 "register_operand" "=f")
- 	(fma:FLSX (neg:FLSX (match_operand:FLSX 1 "register_operand" "f"))
- 		  (match_operand:FLSX 2 "register_operand" "f")
- 		  (match_operand:FLSX 3 "register_operand" "0")))]
-   "ISA_HAS_LSX"
-   "vfnmsub.<flsxfmt>\t%w0,%w1,%w2,%w0"
-   [(set_attr "type" "simd_fmadd")
-    (set_attr "mode" "<MODE>")])
- 
  (define_expand "sqrt<mode>2"
    [(set (match_operand:FLSX 0 "register_operand")
      (sqrt:FLSX (match_operand:FLSX 1 "register_operand")))]
--- 799,804 ----
***************
*** 2289,2347 ****
    [(set_attr "type" "simd_int_arith")
     (set_attr "mode" "<MODE>")])
  
- (define_expand "copysign<mode>3"
-   [(set (match_dup 4)
- 	(and:FLSX
- 	  (not:FLSX (match_dup 3))
- 	  (match_operand:FLSX 1 "register_operand")))
-    (set (match_dup 5)
- 	(and:FLSX (match_dup 3)
- 		  (match_operand:FLSX 2 "reg_or_vector_same_val_operand")))
-    (set (match_operand:FLSX 0 "register_operand")
- 	(ior:FLSX (match_dup 4) (match_dup 5)))]
-   "ISA_HAS_LSX"
- {
-   /* copysign (x, -1) should instead be expanded as setting the sign
-      bit.  */
-   if (!REG_P (operands[2]))
-     {
-       rtx op2_elt = unwrap_const_vec_duplicate (operands[2]);
-       if (GET_CODE (op2_elt) == CONST_DOUBLE
- 	  && real_isneg (CONST_DOUBLE_REAL_VALUE (op2_elt)))
- 	{
- 	  rtx n = GEN_INT (8 * GET_MODE_SIZE (<UNITMODE>mode) - 1);
- 	  operands[0] = lowpart_subreg (<VIMODE>mode, operands[0],
- 					<MODE>mode);
- 	  operands[1] = lowpart_subreg (<VIMODE>mode, operands[1],
- 					<MODE>mode);
- 	  emit_insn (gen_lsx_vbitseti_<lsxfmt> (operands[0], operands[1],
- 						n));
- 	  DONE;
- 	}
-     }
- 
-   operands[2] = force_reg (<MODE>mode, operands[2]);
-   operands[3] = loongarch_build_signbit_mask (<MODE>mode, 1, 0);
- 
-   operands[4] = gen_reg_rtx (<MODE>mode);
-   operands[5] = gen_reg_rtx (<MODE>mode);
- })
- 
- (define_expand "@xorsign<mode>3"
-   [(set (match_dup 4)
-     (and:FLSX (match_dup 3)
-         (match_operand:FLSX 2 "register_operand")))
-    (set (match_operand:FLSX 0 "register_operand")
-     (xor:FLSX (match_dup 4)
-          (match_operand:FLSX 1 "register_operand")))]
-   "ISA_HAS_LSX"
- {
-   operands[3] = loongarch_build_signbit_mask (<MODE>mode, 1, 0);
- 
-   operands[4] = gen_reg_rtx (<MODE>mode);
- })
- 
- 
  (define_insn "absv2df2"
    [(set (match_operand:V2DF 0 "register_operand" "=f")
  	(abs:V2DF (match_operand:V2DF 1 "register_operand" "f")))]
--- 2226,2231 ----
diff -Nrcpad gcc-15.2.0/gcc/config/loongarch/predicates.md gcc-15.3.0/gcc/config/loongarch/predicates.md
*** gcc-15.2.0/gcc/config/loongarch/predicates.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/loongarch/predicates.md	Fri Jun 12 06:09:06 2026
***************
*** 593,598 ****
--- 593,606 ----
   (ior (match_operand 0 "register_operand")
        (match_operand 0 "symbolic_off64_operand")))
  
+ ;; Currently stack canary must be the global symbol __stack_chk_guard.
+ (define_predicate "ssp_operand" (match_code "symbol_ref"))
+ 
+ ;; If the stack canary is within the normal/medium code model.
+ (define_predicate "ssp_normal_operand"
+   (and (match_operand 0 "ssp_operand")
+        (not (match_operand 0 "symbolic_off64_operand"))))
+ 
  (define_predicate "equality_operator"
    (match_code "eq,ne"))
  
***************
*** 647,652 ****
--- 655,672 ----
    return loongarch_const_vector_same_int_p (op, mode);
  })
  
+ (define_predicate "const_vector_neg_fp_operand"
+   (match_code "const_vector")
+ {
+   machine_mode imode = related_int_vector_mode (mode).require ();
+   rtx mask = loongarch_build_signbit_mask (imode, 1, 0);
+ 
+   op = gen_lowpart (imode, op);
+   return rtx_equal_p (mask,
+ 		      simplify_const_binary_operation (AND, imode, mask,
+ 						       op));
+ })
+ 
  (define_predicate "par_const_vector_shf_set_operand"
    (match_code "parallel")
  {
***************
*** 673,678 ****
--- 693,702 ----
    (ior (match_operand 0 "register_operand")
         (match_operand 0 "const_vector_same_uimm_operand")))
  
+ (define_predicate "reg_or_vector_neg_fp_operand"
+   (ior (match_operand 0 "register_operand")
+        (match_operand 0 "const_vector_neg_fp_operand")))
+ 
  ;; PARALLEL for a vec_select that selects all the even or all the odd
  ;; elements of a vector of MODE.
  (define_special_predicate "vect_par_cnst_even_or_odd_half"
diff -Nrcpad gcc-15.2.0/gcc/config/loongarch/simd.md gcc-15.3.0/gcc/config/loongarch/simd.md
*** gcc-15.2.0/gcc/config/loongarch/simd.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/loongarch/simd.md	Fri Jun 12 06:09:06 2026
***************
*** 431,436 ****
--- 431,447 ----
    [(set_attr "type" "simd_int_arith")
     (set_attr "mode" "<MODE>")])
  
+ ;; <x>vfnmsub.{s/d}
+ (define_insn "fnma<mode>4"
+   [(set (match_operand:FVEC 0 "register_operand" "=f")
+ 	(fma:FVEC (neg:FVEC (match_operand:FVEC 1 "register_operand" "f"))
+ 		  (match_operand:FVEC 2 "register_operand" "f")
+ 		  (match_operand:FVEC 3 "register_operand" "f")))]
+   "!HONOR_SIGNED_ZEROS (<MODE>mode)"
+   "<x>vfnmsub.<simdfmt>\t%<wu>0,%<wu>1,%<wu>2,%<wu>3"
+   [(set_attr "type" "simd_fmadd")
+    (set_attr "mode" "<MODE>")])
+ 
  ;; <x>vfcmp.*.{s/d} with defined RTX code
  ;; There are no fcmp.{sugt/suge/cgt/cge}.{s/d} menmonics in GAS, so we have
  ;; to reverse the operands ourselves :(.
***************
*** 773,779 ****
  	      (vec_select:<VEC_HALF>
  		(match_operand:IVEC 2 "register_operand" "f")
  		(match_operand:IVEC 4 "vect_par_cnst_even_or_odd_half")))
! 	    (any_extend:<WVEC>
  	      (vec_select:<VEC_HALF>
  		(match_operand:IVEC 3 "register_operand" "f")
  		(match_dup 4))))
--- 784,790 ----
  	      (vec_select:<VEC_HALF>
  		(match_operand:IVEC 2 "register_operand" "f")
  		(match_operand:IVEC 4 "vect_par_cnst_even_or_odd_half")))
! 	    (any_extend:<WVEC_HALF>
  	      (vec_select:<VEC_HALF>
  		(match_operand:IVEC 3 "register_operand" "f")
  		(match_dup 4))))
***************
*** 972,977 ****
--- 983,1087 ----
    DONE;
  })
  
+ (define_insn "xor<mode>3"
+   [(set (match_operand:IVEC 0 "register_operand" "=f,f,f")
+ 	(xor:IVEC
+ 	  (match_operand:IVEC 1 "register_operand" "f,f,f")
+ 	  (match_operand:IVEC 2 "reg_or_vector_same_val_operand" "f,YC,Urv8")))]
+   ""
+   "@
+    <x>vxor.v\t%<wu>0,%<wu>1,%<wu>2
+    <x>vbitrevi.%v0\t%<wu>0,%<wu>1,%V2
+    <x>vxori.b\t%<wu>0,%<wu>1,%B2"
+   [(set_attr "type" "simd_logic,simd_bit,simd_logic")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "ior<mode>3"
+   [(set (match_operand:IVEC 0 "register_operand" "=f,f,f")
+ 	(ior:IVEC
+ 	  (match_operand:IVEC 1 "register_operand" "f,f,f")
+ 	  (match_operand:IVEC 2 "reg_or_vector_same_val_operand" "f,YC,Urv8")))]
+   ""
+   "@
+    <x>vor.v\t%<wu>0,%<wu>1,%<wu>2
+    <x>vbitseti.%v0\t%<wu>0,%<wu>1,%V2
+    <x>vori.b\t%<wu>0,%<wu>1,%B2"
+   [(set_attr "type" "simd_logic,simd_bit,simd_logic")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "and<mode>3"
+   [(set (match_operand:IVEC 0 "register_operand" "=f,f,f")
+ 	(and:IVEC
+ 	  (match_operand:IVEC 1 "register_operand" "f,f,f")
+ 	  (match_operand:IVEC 2 "reg_or_vector_same_val_operand" "f,YZ,Urv8")))]
+   ""
+ {
+   switch (which_alternative)
+     {
+     case 0:
+       return "<x>vand.v\t%<wu>0,%<wu>1,%<wu>2";
+     case 1:
+       {
+ 	operands[2] = simplify_const_unary_operation (NOT, <MODE>mode,
+ 						      operands[2],
+ 						      <MODE>mode);
+ 	return "<x>vbitclri.%v0\t%<wu>0,%<wu>1,%V2";
+       }
+     case 2:
+       return "<x>vandi.b\t%<wu>0,%<wu>1,%B2";
+     default:
+       gcc_unreachable ();
+     }
+ }
+   [(set_attr "type" "simd_logic,simd_bit,simd_logic")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_expand "copysign<mode>3"
+   [(match_operand:FVEC 0 "register_operand")
+    (match_operand:FVEC 1 "register_operand")
+    (match_operand:FVEC 2 "reg_or_vector_neg_fp_operand")]
+   ""
+ {
+   machine_mode imode = <VIMODE>mode;
+   rtx op[3], mask = loongarch_build_signbit_mask (imode, 1, 0);
+ 
+   /* Pun the operation into fixed-point bitwise operations.  */
+   for (int i = 0; i < 3; i++)
+     op[i] = lowpart_subreg (imode, operands[i], <MODE>mode);
+ 
+   /* Copysign from a positive const should have been already simplified
+      to abs, ignore the case here.  Copysign from a negative const is
+      a simple vbitset which is an alternative of ior (see above).  */
+   if (const_vector_neg_fp_operand (operands[2], <MODE>mode))
+     emit_insn (gen_ior<vimode>3 (op[0], op[1], mask));
+   else
+     {
+       mask = force_reg (imode, mask);
+       emit_insn (gen_<simd_isa>_<x>vbitsel_<simdfmt_as_i> (op[0], op[1],
+ 							   op[2], mask));
+     }
+ 
+   DONE;
+ })
+ 
+ (define_expand "@xorsign<mode>3"
+   [(match_operand:FVEC 0 "register_operand")
+    (match_operand:FVEC 1 "register_operand")
+    (match_operand:FVEC 2 "register_operand")]
+   ""
+ {
+   machine_mode imode = <VIMODE>mode;
+   rtx op[3];
+ 
+   for (int i = 0; i < 3; i++)
+     op[i] = lowpart_subreg (imode, operands[i], <MODE>mode);
+ 
+   rtx t = loongarch_build_signbit_mask (imode, 1, 0);
+   t = force_reg (imode, simplify_gen_binary (AND, imode, op[2], t));
+   emit_move_insn (op[0], simplify_gen_binary (XOR, imode, op[1], t));
+   DONE;
+ })
+ 
  ; The LoongArch SX Instructions.
  (include "lsx.md")
  
diff -Nrcpad gcc-15.2.0/gcc/config/microblaze/iterators.md gcc-15.3.0/gcc/config/microblaze/iterators.md
*** gcc-15.2.0/gcc/config/microblaze/iterators.md	Thu Jan  1 00:00:00 1970
--- gcc-15.3.0/gcc/config/microblaze/iterators.md	Fri Jun 12 06:09:06 2026
***************
*** 0 ****
--- 1,25 ----
+ ;; Iterator definitions for GCC MicroBlaze machine description files.
+ ;; Copyright (C) 2012-2024 Free Software Foundation, Inc.
+ ;;
+ ;; 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/>.
+ 
+ ; atomics code iterator
+ (define_code_iterator any_atomic [plus ior xor and])
+ 
+ ; atomics code attribute
+ (define_code_attr atomic_optab
+   [(plus "add") (ior "or") (xor "xor") (and "and")])
diff -Nrcpad gcc-15.2.0/gcc/config/microblaze/microblaze-protos.h gcc-15.3.0/gcc/config/microblaze/microblaze-protos.h
*** gcc-15.2.0/gcc/config/microblaze/microblaze-protos.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/microblaze/microblaze-protos.h	Fri Jun 12 06:09:06 2026
*************** extern int symbol_mentioned_p (rtx);
*** 62,67 ****
--- 62,68 ----
  extern int label_mentioned_p (rtx);
  extern bool microblaze_cannot_force_const_mem (machine_mode, rtx);
  extern void microblaze_eh_return (rtx op0);
+ extern void microblaze_subword_address (rtx, rtx *, rtx *);
  #endif  /* RTX_CODE */
  
  /* Declare functions in microblaze-c.cc.  */
diff -Nrcpad gcc-15.2.0/gcc/config/microblaze/microblaze.cc gcc-15.3.0/gcc/config/microblaze/microblaze.cc
*** gcc-15.2.0/gcc/config/microblaze/microblaze.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/microblaze/microblaze.cc	Fri Jun 12 06:09:06 2026
*************** microblaze_expand_block_move (rtx dest,
*** 1300,1305 ****
--- 1300,1333 ----
    return false;
  }
  
+ /* Compute memory address *aligned_mem and corresponding shift value (*shift)
+    from a QImode memory reference MEM */
+ void
+ microblaze_subword_address (rtx mem, rtx *aligned_mem, rtx *shift)
+ {
+   /* Align the memory address to a word.  */
+   rtx addr = force_reg (Pmode, XEXP (mem, 0));
+ 
+   rtx addr_mask = gen_int_mode (-4, Pmode);
+ 
+   rtx aligned_addr = gen_reg_rtx (Pmode);
+ 
+   emit_move_insn (aligned_addr,  gen_rtx_AND (Pmode, addr, addr_mask));
+ 
+   *aligned_mem = change_address (mem, SImode, aligned_addr);
+ 
+   /* Calculate the shift amount.  */
+   emit_move_insn (*shift, gen_rtx_AND (SImode, addr, gen_int_mode (3, SImode)));
+ 
+   if (TARGET_LITTLE_ENDIAN == 0) {
+     emit_move_insn (*shift,
+ 		    gen_rtx_MINUS (SImode, gen_int_mode (3, SImode), *shift));
+   }
+ 
+   emit_move_insn (*shift, gen_rtx_ASHIFT (SImode, *shift,
+ 					  gen_int_mode (3, SImode)));
+ }
+ 
  static bool
  microblaze_rtx_costs (rtx x, machine_mode mode, int outer_code ATTRIBUTE_UNUSED,
  		      int opno ATTRIBUTE_UNUSED, int *total,
diff -Nrcpad gcc-15.2.0/gcc/config/microblaze/microblaze.md gcc-15.3.0/gcc/config/microblaze/microblaze.md
*** gcc-15.2.0/gcc/config/microblaze/microblaze.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/microblaze/microblaze.md	Fri Jun 12 06:09:06 2026
***************
*** 21,26 ****
--- 21,27 ----
  
  (include "constraints.md")
  (include "predicates.md")
+ (include "iterators.md")
  
  ;;----------------------------------------------------
  ;; Constants
***************
*** 43,48 ****
--- 44,53 ----
    (UNSPEC_TLS           106)    ;; jump table
    (UNSPEC_SET_TEXT      107)    ;; set text start
    (UNSPEC_TEXT          108)    ;; data text relative
+   (UNSPECV_CAS_BOOL     201)    ;; compare and swap (bool)
+   (UNSPECV_CAS_VAL      202)    ;; compare and swap (val)
+   (UNSPECV_CAS_MEM      203)    ;; compare and swap (mem)
+   (UNSPECV_ATOMIC_FETCH_OP     204)    ;; atomic fetch op
  ])
  
  (define_c_enum "unspec" [
***************
*** 79,85 ****
  ;; bshift 	Shift operations
  
  (define_attr "type"
!   "unknown,branch,jump,call,load,store,move,arith,darith,imul,idiv,icmp,multi,nop,no_delay_arith,no_delay_load,no_delay_store,no_delay_imul,no_delay_move,bshift,fadd,frsub,fmul,fdiv,fcmp,fsl,fsqrt,fcvt,trap"
    (const_string "unknown"))
  
  ;; Main data type used by the insn
--- 84,90 ----
  ;; bshift 	Shift operations
  
  (define_attr "type"
!   "unknown,branch,jump,call,load,store,move,arith,darith,imul,idiv,icmp,multi,nop,no_delay_arith,no_delay_load,no_delay_store,no_delay_imul,no_delay_move,bshift,fadd,frsub,fmul,fdiv,fcmp,fsl,fsqrt,fcvt,trap,atomic"
    (const_string "unknown"))
  
  ;; Main data type used by the insn
***************
*** 364,369 ****
--- 369,377 ----
          (bswap:SI (match_operand:SI 1 "register_operand" "r")))]
    "TARGET_REORDER"
    "swapb %0, %1"
+   [(set_attr "type"	"no_delay_arith")
+    (set_attr "mode"	"SI")
+    (set_attr "length"	"4")]
  )
  
  (define_insn "bswaphi2"
***************
*** 372,377 ****
--- 380,388 ----
    "TARGET_REORDER"
    "swapb %0, %1
     swaph %0, %0"
+   [(set_attr "type"	"no_delay_arith")
+    (set_attr "mode"	"SI")
+    (set_attr "length"	"8")]
  )
  
  ;;----------------------------------------------------------------
diff -Nrcpad gcc-15.2.0/gcc/config/microblaze/sync.md gcc-15.3.0/gcc/config/microblaze/sync.md
*** gcc-15.2.0/gcc/config/microblaze/sync.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/microblaze/sync.md	Fri Jun 12 06:09:06 2026
***************
*** 18,43 ****
  ;; <http://www.gnu.org/licenses/>.
  
  (define_insn "atomic_compare_and_swapsi"
!   [(match_operand:SI 0 "register_operand" "=&d")	;; bool output
!    (match_operand:SI 1 "register_operand" "=&d")	;; val output
!    (match_operand:SI 2 "nonimmediate_operand" "+Q")	;; memory
!    (match_operand:SI 3 "register_operand" "d")		;; expected value
!    (match_operand:SI 4 "register_operand" "d")		;; desired value
!    (match_operand:SI 5 "const_int_operand" "")		;; is_weak
!    (match_operand:SI 6 "const_int_operand" "")		;; mod_s
!    (match_operand:SI 7 "const_int_operand" "")		;; mod_f
     (clobber (match_scratch:SI 8 "=&d"))]
    ""
    {
!     output_asm_insn ("addc \tr0,r0,r0", operands);
!     output_asm_insn ("lwx  \t%1,%y2,r0", operands);
!     output_asm_insn ("addic\t%8,r0,0", operands);
!     output_asm_insn ("bnei \t%8,.-8", operands);
!     output_asm_insn ("cmp  \t%0,%1,%3", operands);
!     output_asm_insn ("bnei \t%0,.+16", operands);
!     output_asm_insn ("swx  \t%4,%y2,r0", operands);
!     output_asm_insn ("addic\t%8,r0,0", operands);
!     output_asm_insn ("bnei \t%8,.-28", operands);
!     return "";
    }
  )
--- 18,114 ----
  ;; <http://www.gnu.org/licenses/>.
  
  (define_insn "atomic_compare_and_swapsi"
!   [(set (match_operand:SI 0 "register_operand" "=&d")		;; bool output
!         (unspec_volatile:SI
!           [(match_operand:SI 2 "nonimmediate_operand" "+Q")	;; memory
!            (match_operand:SI 3 "register_operand" "d")		;; expected value
!            (match_operand:SI 4 "register_operand" "d")]		;; desired value
!           UNSPECV_CAS_BOOL))
!    (set (match_operand:SI 1 "register_operand" "=&d")		;; val output
!         (unspec_volatile:SI [(const_int 0)] UNSPECV_CAS_VAL))
!    (set (match_dup 2)
!         (unspec_volatile:SI [(const_int 0)] UNSPECV_CAS_MEM))
!    (match_operand:SI 5 "const_int_operand" "")			;; is_weak
!    (match_operand:SI 6 "const_int_operand" "")			;; mod_s
!    (match_operand:SI 7 "const_int_operand" "")			;; mod_f
     (clobber (match_scratch:SI 8 "=&d"))]
    ""
    {
!     return "add  \t%0,r0,r0\n\t"
!       "lwx  \t%1,%y2,r0\n\t"
!       "addic\t%8,r0,0\n\t"
!       "bnei \t%8,.-8\n\t"
!       "cmp  \t%8,%1,%3\n\t"
!       "bnei \t%8,.+20\n\t"
!       "swx  \t%4,%y2,r0\n\t"
!       "addic\t%8,r0,0\n\t"
!       "bnei \t%8,.-28\n\t"
!       "addi \t%0,r0,1";
    }
+   [(set_attr "type"	"atomic")
+   (set_attr "mode"	"SI")
+   (set_attr "length"	"40")]
  )
+ 
+ ;;
+ ;;
+ ;;
+ ;;
+ (define_insn "atomic_fetch_<atomic_optab>si"
+   [(set (match_operand:SI 0 "register_operand" "=&d")
+ 	(match_operand:SI 1 "memory_operand" "+Q"))
+    (set (match_dup 1)
+ 	(unspec_volatile:SI
+ 	  [(any_atomic:SI (match_dup 1)
+ 		   (match_operand:SI 2 "register_operand" "d"))
+ 	   (match_operand:SI 3 "const_int_operand")] ;; model
+ 	 UNSPECV_ATOMIC_FETCH_OP))
+    (clobber (match_scratch:SI 4 "=&d"))]	  ;; tmp_1
+   ""
+   {
+     return
+       "lwx  \t%0,%y1,r0\n\t"
+       "addic\t%4,r0,0\n\t"
+       "bnei \t%4,.-8\n\t"
+       "<atomic_optab>\t%4,%0,%2\n\t"
+       "swx  \t%4,%y1,r0\n\t"
+       "addic\t%4,r0,0\n\t"
+       "bnei \t%4,.-24";
+   }
+   [(set_attr "type"	"atomic")
+   (set_attr "mode"	"SI")
+   (set_attr "length"	"28")])
+ 
+ ;;
+ ;; MicroBlaze only supports lx/sx instructions for word mode only
+ ;;
+ ;; Use shift|mask magic to implement atomic_test_and_set using lwx/swx
+ ;;
+ (define_expand "atomic_test_and_set"
+   [(match_operand:QI 0 "register_operand" "")    ;; bool output
+    (match_operand:QI 1 "memory_operand" "m")    ;; memory
+    (match_operand:SI 2 "const_int_operand" "")]  ;; model
+   ""
+ {
+   rtx old = gen_reg_rtx (SImode);
+   rtx mem = operands[1];
+   rtx model = operands[2];
+   rtx set = gen_reg_rtx (SImode);
+   rtx aligned_mem = gen_reg_rtx (SImode);
+   rtx shift = gen_reg_rtx (SImode);
+ 
+   microblaze_subword_address (mem, &aligned_mem, &shift);
+ 
+   emit_move_insn (set, GEN_INT (1));
+   rtx shifted_set = gen_reg_rtx (SImode);
+ 
+   emit_move_insn (shifted_set, gen_rtx_ASHIFT (SImode, set, shift));
+ 
+   emit_insn (gen_atomic_fetch_orsi (old, aligned_mem, shifted_set, model));
+ 
+   emit_move_insn (old, gen_rtx_ASHIFTRT (SImode, old, shift));
+ 
+   emit_move_insn (operands[0], gen_lowpart (QImode, old));
+ 
+   DONE;
+ })
diff -Nrcpad gcc-15.2.0/gcc/config/pa/pa.cc gcc-15.3.0/gcc/config/pa/pa.cc
*** gcc-15.2.0/gcc/config/pa/pa.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/pa/pa.cc	Fri Jun 12 06:09:06 2026
*************** static void
*** 10636,10645 ****
  pa_trampoline_init (rtx m_tramp, tree fndecl, rtx chain_value)
  {
    rtx fnaddr = XEXP (DECL_RTL (fndecl), 0);
!   rtx start_addr = gen_reg_rtx (Pmode);
!   rtx end_addr = gen_reg_rtx (Pmode);
!   rtx line_length = gen_reg_rtx (Pmode);
!   rtx r_tramp, tmp;
  
    emit_block_move (m_tramp, assemble_trampoline_template (),
  		   GEN_INT (TRAMPOLINE_SIZE), BLOCK_OP_NORMAL);
--- 10636,10642 ----
  pa_trampoline_init (rtx m_tramp, tree fndecl, rtx chain_value)
  {
    rtx fnaddr = XEXP (DECL_RTL (fndecl), 0);
!   rtx start, end, r_tramp, tmp;
  
    emit_block_move (m_tramp, assemble_trampoline_template (),
  		   GEN_INT (TRAMPOLINE_SIZE), BLOCK_OP_NORMAL);
*************** pa_trampoline_init (rtx m_tramp, tree fn
*** 10647,10652 ****
--- 10644,10652 ----
  
    if (!TARGET_64BIT)
      {
+       /* Start of trampoline code.  */
+       start = r_tramp;
+ 
        tmp = adjust_address (m_tramp, Pmode, 48);
        emit_move_insn (tmp, fnaddr);
        tmp = adjust_address (m_tramp, Pmode, 52);
*************** pa_trampoline_init (rtx m_tramp, tree fn
*** 10654,10681 ****
  
        /* Create a fat pointer for the trampoline.  */
        tmp = adjust_address (m_tramp, Pmode, 56);
!       emit_move_insn (tmp, r_tramp);
        tmp = adjust_address (m_tramp, Pmode, 60);
        emit_move_insn (tmp, gen_rtx_REG (Pmode, 19));
- 
-       /* fdc and fic only use registers for the address to flush,
- 	 they do not accept integer displacements.  We align the
- 	 start and end addresses to the beginning of their respective
- 	 cache lines to minimize the number of lines flushed.  */
-       emit_insn (gen_andsi3 (start_addr, r_tramp,
- 			     GEN_INT (-MIN_CACHELINE_SIZE)));
-       tmp = force_reg (Pmode, plus_constant (Pmode, r_tramp,
- 					     TRAMPOLINE_CODE_SIZE-1));
-       emit_insn (gen_andsi3 (end_addr, tmp,
- 			     GEN_INT (-MIN_CACHELINE_SIZE)));
-       emit_move_insn (line_length, GEN_INT (MIN_CACHELINE_SIZE));
-       emit_insn (gen_dcacheflushsi (start_addr, end_addr, line_length));
-       emit_insn (gen_icacheflushsi (start_addr, end_addr, line_length,
- 				    gen_reg_rtx (Pmode),
- 				    gen_reg_rtx (Pmode)));
      }
    else
      {
        tmp = adjust_address (m_tramp, Pmode, 56);
        emit_move_insn (tmp, fnaddr);
        tmp = adjust_address (m_tramp, Pmode, 64);
--- 10654,10668 ----
  
        /* Create a fat pointer for the trampoline.  */
        tmp = adjust_address (m_tramp, Pmode, 56);
!       emit_move_insn (tmp, start);
        tmp = adjust_address (m_tramp, Pmode, 60);
        emit_move_insn (tmp, gen_rtx_REG (Pmode, 19));
      }
    else
      {
+       /* Start of trampoline code.  */
+       start = force_reg (Pmode, plus_constant (Pmode, r_tramp, 32));
+ 
        tmp = adjust_address (m_tramp, Pmode, 56);
        emit_move_insn (tmp, fnaddr);
        tmp = adjust_address (m_tramp, Pmode, 64);
*************** pa_trampoline_init (rtx m_tramp, tree fn
*** 10683,10711 ****
  
        /* Create a fat pointer for the trampoline.  */
        tmp = adjust_address (m_tramp, Pmode, 16);
!       emit_move_insn (tmp, force_reg (Pmode, plus_constant (Pmode,
! 							    r_tramp, 32)));
        tmp = adjust_address (m_tramp, Pmode, 24);
        emit_move_insn (tmp, gen_rtx_REG (Pmode, 27));
- 
-       /* fdc and fic only use registers for the address to flush,
- 	 they do not accept integer displacements.  We align the
- 	 start and end addresses to the beginning of their respective
- 	 cache lines to minimize the number of lines flushed.  */
-       tmp = force_reg (Pmode, plus_constant (Pmode, r_tramp, 32));
-       emit_insn (gen_anddi3 (start_addr, tmp,
- 			     GEN_INT (-MIN_CACHELINE_SIZE)));
-       tmp = force_reg (Pmode, plus_constant (Pmode, tmp,
- 					     TRAMPOLINE_CODE_SIZE - 1));
-       emit_insn (gen_anddi3 (end_addr, tmp,
- 			     GEN_INT (-MIN_CACHELINE_SIZE)));
-       emit_move_insn (line_length, GEN_INT (MIN_CACHELINE_SIZE));
-       emit_insn (gen_dcacheflushdi (start_addr, end_addr, line_length));
-       emit_insn (gen_icacheflushdi (start_addr, end_addr, line_length,
- 				    gen_reg_rtx (Pmode),
- 				    gen_reg_rtx (Pmode)));
      }
  
  #ifdef HAVE_ENABLE_EXECUTE_STACK
    emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__enable_execute_stack"),
  		     LCT_NORMAL, VOIDmode, XEXP (m_tramp, 0), Pmode);
--- 10670,10685 ----
  
        /* Create a fat pointer for the trampoline.  */
        tmp = adjust_address (m_tramp, Pmode, 16);
!       emit_move_insn (tmp, start);
        tmp = adjust_address (m_tramp, Pmode, 24);
        emit_move_insn (tmp, gen_rtx_REG (Pmode, 27));
      }
  
+   end = force_reg (Pmode, plus_constant (Pmode, start, TRAMPOLINE_CODE_SIZE));
+ 
+   /* Flush trampoline.  */
+   emit_insn (gen_clear_cache (start, end));
+ 
  #ifdef HAVE_ENABLE_EXECUTE_STACK
    emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__enable_execute_stack"),
  		     LCT_NORMAL, VOIDmode, XEXP (m_tramp, 0), Pmode);
diff -Nrcpad gcc-15.2.0/gcc/config/pa/pa.md gcc-15.3.0/gcc/config/pa/pa.md
*** gcc-15.2.0/gcc/config/pa/pa.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/pa/pa.md	Fri Jun 12 06:09:06 2026
*************** add,l %2,%3,%3\;bv,n %%r0(%3)"
*** 9966,9975 ****
    [(set_attr "type" "fpalu")
     (set_attr "length" "4")])
  
! ;; The following two patterns are used by the trampoline code for nested
  ;; functions.  They flush the I and D cache lines from the start address
! ;; (operand0) to the end address (operand1).  No lines are flushed if the
! ;; end address is less than the start address (unsigned).
  ;;
  ;; Because the range of memory flushed is variable and the size of a MEM
  ;; can only be a CONST_INT, the patterns specify that they perform an
--- 9966,9974 ----
    [(set_attr "type" "fpalu")
     (set_attr "length" "4")])
  
! ;; The following four patterns are used by the trampoline code for nested
  ;; functions.  They flush the I and D cache lines from the start address
! ;; (operand0) to the end address (operand1).
  ;;
  ;; Because the range of memory flushed is variable and the size of a MEM
  ;; can only be a CONST_INT, the patterns specify that they perform an
*************** add,l %2,%3,%3\;bv,n %%r0(%3)"
*** 9978,9986 ****
  ;; The address range for an icache flush must lie within a single
  ;; space on targets with non-equivalent space registers.
  ;;
! ;; Operand 0 contains the start address.
  ;; Operand 1 contains the end address.
! ;; Operand 2 contains the line length to use.
  (define_insn "dcacheflush<P:mode>"
    [(const_int 1)
     (unspec_volatile [(mem:BLK (scratch))] UNSPECV_DCACHE)
--- 9977,9985 ----
  ;; The address range for an icache flush must lie within a single
  ;; space on targets with non-equivalent space registers.
  ;;
! ;; Operand 0 contains the line aligned start address.
  ;; Operand 1 contains the end address.
! ;; Operand 2 contains the line size to use.
  (define_insn "dcacheflush<P:mode>"
    [(const_int 1)
     (unspec_volatile [(mem:BLK (scratch))] UNSPECV_DCACHE)
*************** add,l %2,%3,%3\;bv,n %%r0(%3)"
*** 9989,9999 ****
     (use (match_operand 2 "pmode_register_operand" "r"))
     (clobber (match_scratch:P 3 "=&0"))]
    ""
!   "cmpb,<dwc><<=,n %3,%1,.\;fdc,m %2(%3)\;sync"
    [(set_attr "type" "multi")
     (set_attr "length" "12")])
  
! (define_insn "icacheflush<P:mode>"
    [(const_int 2)
     (unspec_volatile [(mem:BLK (scratch))] UNSPECV_ICACHE)
     (use (match_operand 0 "pmode_register_operand" "r"))
--- 9988,9998 ----
     (use (match_operand 2 "pmode_register_operand" "r"))
     (clobber (match_scratch:P 3 "=&0"))]
    ""
!   "{comb|cmpb},<dwc><<,n %3,%1,.\;fdc,m %2(%3)\;sync"
    [(set_attr "type" "multi")
     (set_attr "length" "12")])
  
! (define_insn "icacheflush1<P:mode>"
    [(const_int 2)
     (unspec_volatile [(mem:BLK (scratch))] UNSPECV_ICACHE)
     (use (match_operand 0 "pmode_register_operand" "r"))
*************** add,l %2,%3,%3\;bv,n %%r0(%3)"
*** 10003,10026 ****
     (clobber (match_operand 4 "pmode_register_operand" "=&r"))
     (clobber (match_scratch:P 5 "=&0"))]
    ""
!   "mfsp %%sr0,%4\;ldsid (%5),%3\;mtsp %3,%%sr0\;cmpb,<dwc><<=,n %5,%1,.\;fic,m %2(%%sr0,%5)\;sync\;mtsp %4,%%sr0\;nop\;nop\;nop\;nop\;nop\;nop"
    [(set_attr "type" "multi")
     (set_attr "length" "52")])
  
  (define_expand "clear_cache"
    [(match_operand 0 "pmode_register_operand")
     (match_operand 1 "pmode_register_operand")]
    ""
  {
!   rtx line_length = gen_reg_rtx (Pmode);
  
-   emit_move_insn (line_length, GEN_INT (MIN_CACHELINE_SIZE));
    if (TARGET_64BIT)
!     emit_insn (gen_icacheflushdi (operands[0], operands[1], line_length,
! 				  gen_reg_rtx (Pmode), gen_reg_rtx (Pmode)));
    else
!     emit_insn (gen_icacheflushsi (operands[0], operands[1], line_length,
! 				  gen_reg_rtx (Pmode), gen_reg_rtx (Pmode)));
    DONE;
  })
  
--- 10002,10087 ----
     (clobber (match_operand 4 "pmode_register_operand" "=&r"))
     (clobber (match_scratch:P 5 "=&0"))]
    ""
!   "mfsp %%sr1,%4\;ldsid (%5),%3\;mtsp %3,%%sr1\;{comb|cmpb},<dwc><<,n %5,%1,.\;fic,m %2(%%sr1,%5)\;sync\;mtsp %4,%%sr1\;nop\;nop\;nop\;nop\;nop\;nop"
    [(set_attr "type" "multi")
     (set_attr "length" "52")])
  
+ (define_insn "icacheflush2<P:mode>"
+   [(const_int 2)
+    (unspec_volatile [(mem:BLK (scratch))] UNSPECV_ICACHE)
+    (use (match_operand 0 "pmode_register_operand" "r"))
+    (use (match_operand 1 "pmode_register_operand" "r"))
+    (use (match_operand 2 "pmode_register_operand" "r"))
+    (clobber (match_scratch:P 3 "=&0"))]
+   "TARGET_PA_20"
+   "cmpb,<dwc><<,n %3,%1,.\;fic,m %2(%3)\;sync\;nop\;nop\;nop\;nop\;nop\;nop\;nop"
+   [(set_attr "type" "multi")
+    (set_attr "length" "40")])
+ 
+ (define_insn "icacheflush3<P:mode>"
+   [(const_int 3)
+    (unspec_volatile [(mem:BLK (scratch))] UNSPECV_ICACHE)
+    (use (match_operand 0 "pmode_register_operand" "r"))
+    (use (match_operand 1 "pmode_register_operand" "r"))
+    (use (match_operand 2 "pmode_register_operand" "r"))
+    (clobber (match_scratch:P 3 "=&0"))]
+   "!TARGET_PA_20 && TARGET_NO_SPACE_REGS"
+   "comb,<dwc><<,n %3,%1,.\;fic,m %2(%%sr4,%3)\;sync\;nop\;nop\;nop\;nop\;nop\;nop\;nop"
+   [(set_attr "type" "multi")
+    (set_attr "length" "40")])
+ 
+ ;; clear_cache
+ ;;
+ ;; Note the data and instruction cache flushes need to be separated
+ ;; by a sync instruction (see page 7-151 in PA 2.0 architecture manual).
+ ;; Thus, we can't combine the flush operations in a single loop.
+ 
+ ;; Operand 0 contains the start address (inclusive).
+ ;; Operand 1 contains the end address (exclusive).
  (define_expand "clear_cache"
    [(match_operand 0 "pmode_register_operand")
     (match_operand 1 "pmode_register_operand")]
    ""
  {
!   rtx start = gen_reg_rtx (Pmode);
!   rtx line_size = gen_reg_rtx (Pmode);
!   rtx lab = gen_label_rtx ();
!   rtx op0 = operands[0];
!   rtx op1 = operands[1];
! 
!   /* Skip flush if op0 is greater than or equal to op1.  */
!   emit_cmp_and_jump_insns (op0, op1, GEU, NULL_RTX, Pmode, 0, lab);
! 
!   /* Load cache line size.  */
!   emit_move_insn (line_size, GEN_INT (MIN_CACHELINE_SIZE));
  
    if (TARGET_64BIT)
!     {
!       /* Align the start address.  */
!       emit_insn (gen_anddi3 (start, op0, GEN_INT (-MIN_CACHELINE_SIZE)));
! 
!       /* Flush the cache.  */
!       emit_insn (gen_dcacheflushdi (start, op1, line_size));
!       emit_insn (gen_icacheflush2di (start, op1, line_size));
!     }
    else
!     {
!       /* Align the start address.  */
!       emit_insn (gen_andsi3 (start, op0, GEN_INT (-MIN_CACHELINE_SIZE)));
! 
!       /* Flush the cache.  */
!       emit_insn (gen_dcacheflushsi (start, op1, line_size));
!       if (TARGET_PA_20)
! 	emit_insn (gen_icacheflush2si (start, op1, line_size));
!       else if (TARGET_NO_SPACE_REGS)
! 	emit_insn (gen_icacheflush3si (start, op1, line_size));
!       else
! 	emit_insn (gen_icacheflush1si (start, op1, line_size,
! 				       gen_reg_rtx (Pmode),
! 				       gen_reg_rtx (Pmode)));
!     }
! 
!   emit_label (lab);
    DONE;
  })
  
diff -Nrcpad gcc-15.2.0/gcc/config/riscv/autovec.md gcc-15.3.0/gcc/config/riscv/autovec.md
*** gcc-15.2.0/gcc/config/riscv/autovec.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/riscv/autovec.md	Fri Jun 12 06:09:06 2026
***************
*** 420,428 ****
     (match_operand 1 "")]
    "TARGET_VECTOR"
    {
!     /* Expand into a QImode vector.  */
!     machine_mode qimode = riscv_vector::get_vector_mode
  	(QImode, GET_MODE_NUNITS (<MODE>mode)).require ();
      rtx tmp = gen_reg_rtx (qimode);
      riscv_vector::expand_vec_init (tmp, operands[1]);
  
--- 420,437 ----
     (match_operand 1 "")]
    "TARGET_VECTOR"
    {
!     /* Expand into a QImode vector.
!        For XTheadVector which does not have fractional-LMUL modes, we use
!        a full-size vector instead.  */
!     bool fractional_p = known_lt (GET_MODE_NUNITS (<MODE>mode),
! 				  BYTES_PER_RISCV_VECTOR);
!     machine_mode qimode;
!     if (!TARGET_XTHEADVECTOR || !fractional_p)
!       qimode = riscv_vector::get_vector_mode
  	(QImode, GET_MODE_NUNITS (<MODE>mode)).require ();
+     else
+       qimode = riscv_vector::get_m1_mode
+ 	(QImode, GET_MODE_NUNITS (<MODE>mode).is_constant ()).require ();
      rtx tmp = gen_reg_rtx (qimode);
      riscv_vector::expand_vec_init (tmp, operands[1]);
  
***************
*** 434,440 ****
      riscv_vector::emit_vlmax_insn (icode, riscv_vector::BINARY_OP, ops);
  
      /* Compare against zero.  */
!     riscv_vector::expand_vec_cmp (operands[0], NE, tmp2, CONST0_RTX (qimode));
      DONE;
    }
  )
--- 443,454 ----
      riscv_vector::emit_vlmax_insn (icode, riscv_vector::BINARY_OP, ops);
  
      /* Compare against zero.  */
!     rtx op0;
!     if (!TARGET_XTHEADVECTOR || !fractional_p)
!       op0 = operands[0];
!     else
!       op0 = gen_lowpart (riscv_vector::get_mask_mode (qimode), operands[0]);
!     riscv_vector::expand_vec_cmp (op0, NE, tmp2, CONST0_RTX (qimode));
      DONE;
    }
  )
***************
*** 1452,1466 ****
  	 [(match_operand	  2 "nonmemory_operand")])))]
    "TARGET_VECTOR"
  {
!   /* Create an empty byte vector and set it to one under mask.  */
!   machine_mode qimode = riscv_vector::get_vector_mode
!       (QImode, GET_MODE_NUNITS (<MODE>mode)).require ();
  
    rtx tmp1 = gen_reg_rtx (qimode);
    emit_move_insn (tmp1, gen_const_vec_duplicate (qimode, GEN_INT (0)));
    rtx ones = gen_const_vec_duplicate (qimode, GEN_INT (1));
  
!   rtx ops1[] = {tmp1, tmp1, ones, operands[1]};
    riscv_vector::emit_vlmax_insn (code_for_pred_merge (qimode),
  				 riscv_vector::MERGE_OP, ops1);
  
--- 1466,1495 ----
  	 [(match_operand	  2 "nonmemory_operand")])))]
    "TARGET_VECTOR"
  {
!   /* Create an empty byte vector and set it to one under mask.
!      For XTheadVector which does not have fractional-LMUL modes, we use
!      a full-size vector instead.  */
!   bool fractional_p = known_lt (GET_MODE_NUNITS (<MODE>mode),
! 				BYTES_PER_RISCV_VECTOR);
!   machine_mode qimode;
!   if (!TARGET_XTHEADVECTOR || !fractional_p)
!     qimode = riscv_vector::get_vector_mode
! 	(QImode, GET_MODE_NUNITS (<MODE>mode)).require ();
!   else
!     qimode = riscv_vector::get_m1_mode
! 	(QImode, GET_MODE_NUNITS (<MODE>mode).is_constant ()).require ();
  
    rtx tmp1 = gen_reg_rtx (qimode);
    emit_move_insn (tmp1, gen_const_vec_duplicate (qimode, GEN_INT (0)));
    rtx ones = gen_const_vec_duplicate (qimode, GEN_INT (1));
  
!   rtx op1;
!   if (!TARGET_XTHEADVECTOR || !fractional_p)
!     op1 = operands[1];
!   else
!     op1 = gen_lowpart (riscv_vector::get_mask_mode (qimode), operands[1]);
! 
!   rtx ops1[] = {tmp1, tmp1, ones, op1};
    riscv_vector::emit_vlmax_insn (code_for_pred_merge (qimode),
  				 riscv_vector::MERGE_OP, ops1);
  
diff -Nrcpad gcc-15.2.0/gcc/config/riscv/predicates.md gcc-15.3.0/gcc/config/riscv/predicates.md
*** gcc-15.2.0/gcc/config/riscv/predicates.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/riscv/predicates.md	Fri Jun 12 06:09:06 2026
***************
*** 589,601 ****
  (define_predicate "ge_operator"
    (match_code "ge,geu"))
  
! ;; pmode_reg_or_uimm5_operand can be used by vsll.vx/vsrl.vx/vsra.vx instructions.
! ;; Since it has the same predicate with vector_length_operand which allows register
! ;; or immediate (0 ~ 31), we define this predicate same as vector_length_operand here.
! ;; We don't use vector_length_operand directly to predicate vsll.vx/vsrl.vx/vsra.vx
! ;; since it may be confusing.
  (define_special_predicate "pmode_reg_or_uimm5_operand"
!   (match_operand 0 "vector_length_operand"))
  
  (define_special_predicate "pmode_reg_or_0_operand"
    (ior (match_operand 0 "const_0_operand")
--- 589,600 ----
  (define_predicate "ge_operator"
    (match_code "ge,geu"))
  
! ;; pmode_reg_or_uimm5_operand can be used by vsll.vx/vsrl.vx/vsra.vx instructions
! ;; It is *not* equivalent to vector_length_operand due to the vector_length_operand
! ;; needing to conditionalize some behavior on XTHEADVECTOR.
  (define_special_predicate "pmode_reg_or_uimm5_operand"
!   (ior (match_operand 0 "pmode_register_operand")
!        (match_operand 0 "const_csr_operand")))
  
  (define_special_predicate "pmode_reg_or_0_operand"
    (ior (match_operand 0 "const_0_operand")
diff -Nrcpad gcc-15.2.0/gcc/config/riscv/riscv-avlprop.cc gcc-15.3.0/gcc/config/riscv/riscv-avlprop.cc
*** gcc-15.2.0/gcc/config/riscv/riscv-avlprop.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/riscv/riscv-avlprop.cc	Fri Jun 12 06:09:06 2026
*************** get_insn_vtype_mode (rtx_insn *rinsn)
*** 156,161 ****
--- 156,162 ----
    extract_insn_cached (rinsn);
    int mode_idx = get_attr_mode_idx (rinsn);
    gcc_assert (mode_idx != INVALID_ATTRIBUTE);
+   gcc_assert (mode_idx < recog_data.n_operands);
    return GET_MODE (recog_data.operand[mode_idx]);
  }
  
*************** simplify_replace_vlmax_avl (rtx_insn *ri
*** 205,210 ****
--- 206,212 ----
      {
        int index = get_attr_avl_type_idx (rinsn);
        gcc_assert (index != INVALID_ATTRIBUTE);
+       gcc_assert (index < recog_data.n_operands);
        validate_change_or_fail (rinsn, recog_data.operand_loc[index],
  			       get_avl_type_rtx (avl_type::NONVLMAX), false);
      }
*************** pass_avlprop::get_vlmax_ta_preferred_avl
*** 361,366 ****
--- 363,370 ----
  	     is not depend on.  */
  	  extract_insn_cached (use_insn->rtl ());
  	  int merge_op_idx = get_attr_merge_op_idx (use_insn->rtl ());
+ 	  gcc_assert (merge_op_idx == INVALID_ATTRIBUTE
+ 		      || merge_op_idx < recog_data.n_operands);
  	  if (merge_op_idx != INVALID_ATTRIBUTE
  	      && !satisfies_constraint_vu (recog_data.operand[merge_op_idx])
  	      && refers_to_regno_p (set->regno (),
*************** pass_avlprop::execute (function *fn)
*** 508,514 ****
        simplify_replace_vlmax_avl (rinsn, prop.second);
      }
  
!   if (rvv_vector_bits == RVV_VECTOR_BITS_ZVL)
      {
        /* Simplify VLMAX AVL into immediate AVL.
  	 E.g. Simplify this following case:
--- 512,518 ----
        simplify_replace_vlmax_avl (rinsn, prop.second);
      }
  
!   if (rvv_vector_bits == RVV_VECTOR_BITS_ZVL && !TARGET_XTHEADVECTOR)
      {
        /* Simplify VLMAX AVL into immediate AVL.
  	 E.g. Simplify this following case:
diff -Nrcpad gcc-15.2.0/gcc/config/riscv/riscv-c.cc gcc-15.3.0/gcc/config/riscv/riscv-c.cc
*** gcc-15.2.0/gcc/config/riscv/riscv-c.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/riscv/riscv-c.cc	Fri Jun 12 06:09:06 2026
*************** along with GCC; see the file COPYING3.
*** 34,110 ****
  
  #define builtin_define(TXT) cpp_define (pfile, TXT)
  
- struct pragma_intrinsic_flags
- {
-   int intrinsic_target_flags;
- 
-   int intrinsic_riscv_vector_elen_flags;
-   int intrinsic_riscv_zvl_flags;
-   int intrinsic_riscv_zvb_subext;
-   int intrinsic_riscv_zvk_subext;
- };
- 
- static void
- riscv_pragma_intrinsic_flags_pollute (struct pragma_intrinsic_flags *flags)
- {
-   flags->intrinsic_target_flags = target_flags;
-   flags->intrinsic_riscv_vector_elen_flags = riscv_vector_elen_flags;
-   flags->intrinsic_riscv_zvl_flags = riscv_zvl_flags;
-   flags->intrinsic_riscv_zvb_subext = riscv_zvb_subext;
-   flags->intrinsic_riscv_zvk_subext = riscv_zvk_subext;
- 
-   target_flags = target_flags
-     | MASK_VECTOR;
- 
-   riscv_zvl_flags = riscv_zvl_flags
-     | MASK_ZVL32B
-     | MASK_ZVL64B
-     | MASK_ZVL128B
-     | MASK_ZVL256B
-     | MASK_ZVL512B
-     | MASK_ZVL1024B
-     | MASK_ZVL2048B
-     | MASK_ZVL4096B;
- 
-   riscv_vector_elen_flags = riscv_vector_elen_flags
-     | MASK_VECTOR_ELEN_32
-     | MASK_VECTOR_ELEN_64
-     | MASK_VECTOR_ELEN_FP_16
-     | MASK_VECTOR_ELEN_FP_32
-     | MASK_VECTOR_ELEN_FP_64;
- 
-   riscv_zvb_subext = riscv_zvb_subext
-     | MASK_ZVBB
-     | MASK_ZVBC
-     | MASK_ZVKB;
- 
-   riscv_zvk_subext = riscv_zvk_subext
-     | MASK_ZVKG
-     | MASK_ZVKNED
-     | MASK_ZVKNHA
-     | MASK_ZVKNHB
-     | MASK_ZVKSED
-     | MASK_ZVKSH
-     | MASK_ZVKN
-     | MASK_ZVKNC
-     | MASK_ZVKNG
-     | MASK_ZVKS
-     | MASK_ZVKSC
-     | MASK_ZVKSG
-     | MASK_ZVKT;
- }
- 
- static void
- riscv_pragma_intrinsic_flags_restore (struct pragma_intrinsic_flags *flags)
- {
-   target_flags = flags->intrinsic_target_flags;
- 
-   riscv_vector_elen_flags = flags->intrinsic_riscv_vector_elen_flags;
-   riscv_zvl_flags = flags->intrinsic_riscv_zvl_flags;
-   riscv_zvb_subext = flags->intrinsic_riscv_zvb_subext;
-   riscv_zvk_subext = flags->intrinsic_riscv_zvk_subext;
- }
- 
  static int
  riscv_ext_version_value (unsigned major, unsigned minor)
  {
--- 34,39 ----
*************** riscv_pragma_intrinsic (cpp_reader *)
*** 281,300 ****
    if (strcmp (name, "vector") == 0
        || strcmp (name, "xtheadvector") == 0)
      {
-       struct pragma_intrinsic_flags backup_flags;
- 
-       riscv_pragma_intrinsic_flags_pollute (&backup_flags);
- 
-       riscv_option_override ();
-       init_adjust_machine_modes ();
-       riscv_vector::reinit_builtins ();
        riscv_vector::handle_pragma_vector ();
- 
-       riscv_pragma_intrinsic_flags_restore (&backup_flags);
- 
-       /* Re-initialize after the flags are restored.  */
-       riscv_option_override ();
-       init_adjust_machine_modes ();
      }
    else
      error ("unknown %<#pragma riscv intrinsic%> option %qs", name);
--- 210,216 ----
diff -Nrcpad gcc-15.2.0/gcc/config/riscv/riscv-modes.def gcc-15.3.0/gcc/config/riscv/riscv-modes.def
*** gcc-15.2.0/gcc/config/riscv/riscv-modes.def	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/riscv/riscv-modes.def	Fri Jun 12 06:09:06 2026
*************** You should have received a copy of the G
*** 19,24 ****
--- 19,26 ----
  along with GCC; see the file COPYING3.  If not see
  <http://www.gnu.org/licenses/>.  */
  
+ INT_MODE (OI, 32);
+ 
  FLOAT_MODE (HF, 2, ieee_half_format);
  FLOAT_MODE (TF, 16, ieee_quad_format);
  FLOAT_MODE (BF, 2, 0);
diff -Nrcpad gcc-15.2.0/gcc/config/riscv/riscv-protos.h gcc-15.3.0/gcc/config/riscv/riscv-protos.h
*** gcc-15.2.0/gcc/config/riscv/riscv-protos.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/riscv/riscv-protos.h	Fri Jun 12 06:09:06 2026
*************** enum tail_policy get_prefer_tail_policy
*** 630,635 ****
--- 630,636 ----
  enum mask_policy get_prefer_mask_policy ();
  rtx get_avl_type_rtx (enum avl_type);
  opt_machine_mode get_lmul_mode (scalar_mode, int);
+ opt_machine_mode get_m1_mode (machine_mode, bool = false);
  opt_machine_mode get_vector_mode (scalar_mode, poly_uint64);
  opt_machine_mode get_tuple_mode (machine_mode, unsigned int);
  bool simm5_p (rtx);
diff -Nrcpad gcc-15.2.0/gcc/config/riscv/riscv-string.cc gcc-15.3.0/gcc/config/riscv/riscv-string.cc
*** gcc-15.2.0/gcc/config/riscv/riscv-string.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/riscv/riscv-string.cc	Fri Jun 12 06:09:06 2026
*************** riscv_expand_block_move_scalar (rtx dest
*** 976,982 ****
  bool
  riscv_expand_block_move (rtx dest, rtx src, rtx length)
  {
!   if ((TARGET_VECTOR && !TARGET_XTHEADVECTOR)
        && stringop_strategy & STRATEGY_VECTOR)
      {
        bool ok = riscv_vector::expand_block_move (dest, src, length, false);
--- 976,982 ----
  bool
  riscv_expand_block_move (rtx dest, rtx src, rtx length)
  {
!   if (TARGET_VECTOR
        && stringop_strategy & STRATEGY_VECTOR)
      {
        bool ok = riscv_vector::expand_block_move (dest, src, length, false);
*************** use_vector_stringop_p (struct stringop_i
*** 1082,1090 ****
    rtx avl = length_in;
    HOST_WIDE_INT potential_ew = max_ew;
  
!   if (!TARGET_VECTOR || !(stringop_strategy & STRATEGY_VECTOR))
      return false;
  
    if (CONST_INT_P (length_in))
      {
        HOST_WIDE_INT length = INTVAL (length_in);
--- 1082,1096 ----
    rtx avl = length_in;
    HOST_WIDE_INT potential_ew = max_ew;
  
!   if (!TARGET_VECTOR
!       || !(stringop_strategy & STRATEGY_VECTOR))
      return false;
  
+   if (TARGET_XTHEADVECTOR
+       && (!CONST_INT_P (length_in)
+ 	  || known_lt (INTVAL (length_in), BYTES_PER_RISCV_VECTOR)))
+       return false;
+ 
    if (CONST_INT_P (length_in))
      {
        HOST_WIDE_INT length = INTVAL (length_in);
*************** expand_rawmemchr (machine_mode mode, rtx
*** 1377,1386 ****
  		   riscv_vector::UNARY_OP, vlops);
  
    /* Read how far we read.  */
!   if (Pmode == SImode)
!     emit_insn (gen_read_vlsi (cnt));
!   else
!     emit_insn (gen_read_vldi_zero_extend (cnt));
  
    /* Compare needle with haystack and store in a mask.  */
    rtx eq = gen_rtx_EQ (mask_mode, gen_const_vec_duplicate (vmode, needle), vec);
--- 1383,1389 ----
  		   riscv_vector::UNARY_OP, vlops);
  
    /* Read how far we read.  */
!   emit_insn (gen_read_vl (Pmode, cnt));
  
    /* Compare needle with haystack and store in a mask.  */
    rtx eq = gen_rtx_EQ (mask_mode, gen_const_vec_duplicate (vmode, needle), vec);
*************** expand_strcmp (rtx result, rtx src1, rtx
*** 1493,1502 ****
      }
  
    /* Read the vl for the next pointer bump.  */
!   if (Pmode == SImode)
!     emit_insn (gen_read_vlsi (cnt));
!   else
!     emit_insn (gen_read_vldi_zero_extend (cnt));
  
    if (with_length)
      {
--- 1496,1502 ----
      }
  
    /* Read the vl for the next pointer bump.  */
!   emit_insn (gen_read_vl (Pmode, cnt));
  
    if (with_length)
      {
*************** check_vectorise_memory_operation (rtx le
*** 1577,1582 ****
--- 1577,1586 ----
  
    HOST_WIDE_INT length = INTVAL (length_in);
  
+   if (TARGET_XTHEADVECTOR
+       && known_lt (length, BYTES_PER_RISCV_VECTOR))
+     return false;
+ 
    /* If it's tiny, default operation is likely better; maybe worth
       considering fractional lmul in the future as well.  */
    if (length < (TARGET_MIN_VLEN / 8))
diff -Nrcpad gcc-15.2.0/gcc/config/riscv/riscv-v.cc gcc-15.3.0/gcc/config/riscv/riscv-v.cc
*** gcc-15.2.0/gcc/config/riscv/riscv-v.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/riscv/riscv-v.cc	Fri Jun 12 06:09:06 2026
*************** get_lmul_mode (scalar_mode mode, int lmu
*** 1966,1979 ****
    return E_VOIDmode;
  }
  
! /* Return the appropriate M1 mode for MODE.  */
  
! static opt_machine_mode
! get_m1_mode (machine_mode mode)
  {
    scalar_mode smode = GET_MODE_INNER (mode);
    unsigned int bytes = GET_MODE_SIZE (smode);
!   poly_uint64 m1_nunits = exact_div (BYTES_PER_RISCV_VECTOR, bytes);
    return get_vector_mode (smode, m1_nunits);
  }
  
--- 1966,1984 ----
    return E_VOIDmode;
  }
  
! /* Return the appropriate LMUL1 mode for MODE.
!    If VLS_P is specified, get a VLS mode that represents a full
!    vector.  */
  
! opt_machine_mode
! get_m1_mode (machine_mode mode, bool vls_p)
  {
    scalar_mode smode = GET_MODE_INNER (mode);
    unsigned int bytes = GET_MODE_SIZE (smode);
!   poly_uint64 bytes_vector = BYTES_PER_RISCV_VECTOR;
!   if (vls_p)
!     bytes_vector = constant_lower_bound (bytes_vector);
!   poly_uint64 m1_nunits = exact_div (bytes_vector, bytes);
    return get_vector_mode (smode, m1_nunits);
  }
  
*************** expand_vec_perm (rtx target, rtx op0, rt
*** 3053,3067 ****
    mask_mode = get_mask_mode (data_mode);
    rtx mask = gen_reg_rtx (mask_mode);
    rtx max_sel = gen_const_vector_dup (sel_mode, nunits);
  
    /* Step 1: generate a mask that should select everything >= nunits into the
     * mask.  */
    expand_vec_cmp (mask, GEU, sel_mod, max_sel);
  
!   /* Step2: gather every op0 values indexed by sel into target,
  	    we don't need to care about the result of the element
  	    whose index >= nunits.  */
!   emit_vlmax_gather_insn (target, op0, sel_mod);
  
    /* Step3: shift the range from (nunits, max_of_mode] to
  	    [0, max_of_mode - nunits].  */
--- 3058,3074 ----
    mask_mode = get_mask_mode (data_mode);
    rtx mask = gen_reg_rtx (mask_mode);
    rtx max_sel = gen_const_vector_dup (sel_mode, nunits);
+   bool overlap = reg_overlap_mentioned_p (target, op1);
+   rtx tmp_target = overlap ? gen_reg_rtx (data_mode) : target;
  
    /* Step 1: generate a mask that should select everything >= nunits into the
     * mask.  */
    expand_vec_cmp (mask, GEU, sel_mod, max_sel);
  
!   /* Step2: gather every op0 values indexed by sel into TMP_TARGET,
  	    we don't need to care about the result of the element
  	    whose index >= nunits.  */
!   emit_vlmax_gather_insn (tmp_target, op0, sel_mod);
  
    /* Step3: shift the range from (nunits, max_of_mode] to
  	    [0, max_of_mode - nunits].  */
*************** expand_vec_perm (rtx target, rtx op0, rt
*** 3071,3077 ****
  
    /* Step4: gather those into the previously masked-out elements
  	    of target.  */
!   emit_vlmax_masked_gather_mu_insn (target, op1, tmp, mask);
  }
  
  /* Implement TARGET_VECTORIZE_VEC_PERM_CONST for RVV.  */
--- 3078,3087 ----
  
    /* Step4: gather those into the previously masked-out elements
  	    of target.  */
!   emit_vlmax_masked_gather_mu_insn (tmp_target, op1, tmp, mask);
! 
!   if (overlap)
!     emit_move_insn (target, tmp_target);
  }
  
  /* Implement TARGET_VECTORIZE_VEC_PERM_CONST for RVV.  */
*************** shuffle_series_patterns (struct expand_v
*** 3941,3946 ****
--- 3951,3959 ----
    bool need_insert = false;
    bool have_series = false;
  
+   poly_int64 len = d->perm.length ();
+   bool need_modulo = !len.is_constant ();
+ 
    /* Check for a full series.  */
    if (known_ne (step1, 0) && d->perm.series_p (0, 1, el1, step1))
      have_series = true;
*************** shuffle_series_patterns (struct expand_v
*** 3952,3958 ****
        need_insert = true;
      }
  
!   if (!have_series)
      return false;
  
    /* Disable shuffle if we can't find an appropriate integer index mode for
--- 3965,3997 ----
        need_insert = true;
      }
  
!   /* A permute like {0, 3, 2, 1} is recognized as series because series_p also
!      allows wrapping/modulo of the permute index.  The step would be 3 and the
!      indices are correct modulo 4.  As noted in expand_vec_perm vrgather does
!      not handle wrapping but rather zeros out-of-bounds indices.
!      This means we would need to emit an explicit modulo operation here which
!      does not seem worth it.  We rather defer to the generic handling instead.
!      Even in the non-wrapping case it is doubtful whether
!       vid
!       vmul
!       vrgather
!      is preferable over
!       vle
!       vrgather.
!      If the permute mask can be reused there shouldn't be any difference and
!      otherwise it becomes a question of load bandwidth.  */
!   if (have_series && len.is_constant ())
!     {
!       int64_t step = need_insert ? step2.to_constant () : step1.to_constant ();
!       int prec = GET_MODE_PRECISION (GET_MODE_INNER (d->vmode));
!       wide_int wlen = wide_int::from (len.to_constant (), prec * 2, SIGNED);
!       wide_int wstep = wide_int::from (step, prec * 2, SIGNED);
!       wide_int result = wi::mul (wlen, wstep);
!       if (wi::gt_p (result, wlen, SIGNED))
! 	need_modulo = true;
!     }
! 
!   if (!have_series || (len.is_constant () && need_modulo))
      return false;
  
    /* Disable shuffle if we can't find an appropriate integer index mode for
*************** shuffle_series_patterns (struct expand_v
*** 3971,3976 ****
--- 4010,4022 ----
    expand_vec_series (series, gen_int_mode (need_insert ? el2 : el1, eltmode),
  		     gen_int_mode (need_insert ? step2 : step1, eltmode));
  
+   if (need_modulo)
+     {
+       rtx mod = gen_const_vector_dup (sel_mode, len - 1);
+       series = expand_simple_binop (sel_mode, AND, series, mod, NULL,
+ 				    0, OPTAB_DIRECT);
+     }
+ 
    /* Insert the remaining element if necessary.  */
    if (need_insert)
      {
diff -Nrcpad gcc-15.2.0/gcc/config/riscv/riscv-vector-builtins-bases.cc gcc-15.3.0/gcc/config/riscv/riscv-vector-builtins-bases.cc
*** gcc-15.2.0/gcc/config/riscv/riscv-vector-builtins-bases.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/riscv/riscv-vector-builtins-bases.cc	Fri Jun 12 06:09:06 2026
*************** enum lst_type
*** 58,111 ****
    LST_INDEXED,
  };
  
- /* Helper function to fold vleff and vlsegff.  */
- static gimple *
- fold_fault_load (gimple_folder &f)
- {
-   /* fold fault_load (const *base, size_t *new_vl, size_t vl)
- 
-      ====> fault_load (const *base, size_t vl)
- 	   new_vl = MEM_REF[read_vl ()].  */
- 
-   auto_vec<tree> vargs (gimple_call_num_args (f.call) - 1);
- 
-   for (unsigned i = 0; i < gimple_call_num_args (f.call); i++)
-     {
-       /* Exclude size_t *new_vl argument.  */
-       if (i == gimple_call_num_args (f.call) - 2)
- 	continue;
- 
-       vargs.quick_push (gimple_call_arg (f.call, i));
-     }
- 
-   gimple *repl = gimple_build_call_vec (gimple_call_fn (f.call), vargs);
-   gimple_call_set_lhs (repl, f.lhs);
- 
-   /* Handle size_t *new_vl by read_vl.  */
-   tree new_vl = gimple_call_arg (f.call, gimple_call_num_args (f.call) - 2);
-   if (integer_zerop (new_vl))
-     {
-       /* This case happens when user passes the nullptr to new_vl argument.
- 	 In this case, we just need to ignore the new_vl argument and return
- 	 fault_load instruction directly. */
-       return repl;
-     }
- 
-   tree tmp_var = create_tmp_var (size_type_node, "new_vl");
-   tree decl = get_read_vl_decl ();
-   gimple *g = gimple_build_call (decl, 0);
-   gimple_call_set_lhs (g, tmp_var);
-   tree indirect
-     = fold_build2 (MEM_REF, size_type_node,
- 		   gimple_call_arg (f.call, gimple_call_num_args (f.call) - 2),
- 		   build_int_cst (build_pointer_type (size_type_node), 0));
-   gassign *assign = gimple_build_assign (indirect, tmp_var);
- 
-   gsi_insert_after (f.gsi, assign, GSI_SAME_STMT);
-   gsi_insert_after (f.gsi, g, GSI_SAME_STMT);
-   return repl;
- }
- 
  /* Implements vsetvl<mode> && vsetvlmax<mode>.  */
  template<bool VLMAX_P>
  class vsetvl : public function_base
--- 58,63 ----
*************** public:
*** 1792,1803 ****
         The fold routines expect the replacement statement to have the
         same lhs as the original call, so return the copy statement
         rather than the field update.  */
!     gassign *copy = gimple_build_assign (unshare_expr (f.lhs), rhs_tuple);
  
      /* Get a reference to the individual vector.  */
      tree field = tuple_type_field (TREE_TYPE (f.lhs));
      tree lhs_array
!       = build3 (COMPONENT_REF, TREE_TYPE (field), f.lhs, field, NULL_TREE);
      tree lhs_vector = build4 (ARRAY_REF, TREE_TYPE (rhs_vector), lhs_array,
  			      index, NULL_TREE, NULL_TREE);
      gassign *update = gimple_build_assign (lhs_vector, rhs_vector);
--- 1744,1756 ----
         The fold routines expect the replacement statement to have the
         same lhs as the original call, so return the copy statement
         rather than the field update.  */
!     gassign *copy = gimple_build_assign (f.lhs, rhs_tuple);
  
      /* Get a reference to the individual vector.  */
      tree field = tuple_type_field (TREE_TYPE (f.lhs));
      tree lhs_array
!       = build3 (COMPONENT_REF, TREE_TYPE (field), unshare_expr (f.lhs),
! 		field, NULL_TREE);
      tree lhs_vector = build4 (ARRAY_REF, TREE_TYPE (rhs_vector), lhs_array,
  			      index, NULL_TREE, NULL_TREE);
      gassign *update = gimple_build_assign (lhs_vector, rhs_vector);
*************** public:
*** 1924,1933 ****
  
    rtx expand (function_expander &e) const override
    {
!     if (Pmode == SImode)
!       emit_insn (gen_read_vlsi (e.target));
!     else
!       emit_insn (gen_read_vldi_zero_extend (e.target));
      return e.target;
    }
  };
--- 1877,1883 ----
  
    rtx expand (function_expander &e) const override
    {
!     emit_insn (gen_read_vl (Pmode, e.target));
      return e.target;
    }
  };
*************** public:
*** 1945,1959 ****
      return pred != PRED_TYPE_none;
    }
  
-   gimple *fold (gimple_folder &f) const override
-   {
-     return fold_fault_load (f);
-   }
- 
    rtx expand (function_expander &e) const override
    {
!     return e.use_contiguous_load_insn (
!       code_for_pred_fault_load (e.vector_mode ()));
    }
  };
  
--- 1895,1903 ----
      return pred != PRED_TYPE_none;
    }
  
    rtx expand (function_expander &e) const override
    {
!     return e.use_fof_load_insn ();
    }
  };
  
*************** public:
*** 2121,2134 ****
      return pred != PRED_TYPE_none;
    }
  
-   gimple *fold (gimple_folder &f) const override
-   {
-     return fold_fault_load (f);
-   }
- 
    rtx expand (function_expander &e) const override
    {
!     return e.use_exact_insn (code_for_pred_fault_load (e.vector_mode ()));
    }
  };
  
--- 2065,2073 ----
      return pred != PRED_TYPE_none;
    }
  
    rtx expand (function_expander &e) const override
    {
!     return e.use_fof_load_insn ();
    }
  };
  
diff -Nrcpad gcc-15.2.0/gcc/config/riscv/riscv-vector-builtins.cc gcc-15.3.0/gcc/config/riscv/riscv-vector-builtins.cc
*** gcc-15.2.0/gcc/config/riscv/riscv-vector-builtins.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/riscv/riscv-vector-builtins.cc	Fri Jun 12 06:09:06 2026
*************** static hash_table<registered_function_ha
*** 3136,3141 ****
--- 3136,3193 ----
  static hash_table<non_overloaded_registered_function_hasher>
    *non_overloaded_function_table;
  
+ struct pragma_intrinsic_flags
+ {
+   int intrinsic_target_flags;
+ 
+   int intrinsic_riscv_vector_elen_flags;
+   int intrinsic_riscv_zvl_flags;
+ };
+ 
+ static void
+ riscv_pragma_intrinsic_flags_pollute (struct pragma_intrinsic_flags *flags)
+ {
+   /* We already defer the required extension checking to expantion time, so we
+      only need to pollute those flags that might affect the type registration.
+ 
+      e.g. zvfbmin and zvfhmin are required to define the vector bf16 and f16,
+ 	  and VECTOR_ELEN* also required for vector interger and floating
+ 	  type.  */
+   flags->intrinsic_target_flags = target_flags;
+   flags->intrinsic_riscv_vector_elen_flags = riscv_vector_elen_flags;
+   flags->intrinsic_riscv_zvl_flags = riscv_zvl_flags;
+ 
+   target_flags = target_flags
+     | MASK_VECTOR;
+ 
+   riscv_zvl_flags = riscv_zvl_flags
+     | MASK_ZVL32B
+     | MASK_ZVL64B
+     | MASK_ZVL128B
+     | MASK_ZVL256B
+     | MASK_ZVL512B
+     | MASK_ZVL1024B
+     | MASK_ZVL2048B
+     | MASK_ZVL4096B;
+ 
+   riscv_vector_elen_flags = riscv_vector_elen_flags
+     | MASK_VECTOR_ELEN_32
+     | MASK_VECTOR_ELEN_64
+     | MASK_VECTOR_ELEN_FP_16
+     | MASK_VECTOR_ELEN_BF_16
+     | MASK_VECTOR_ELEN_FP_32
+     | MASK_VECTOR_ELEN_FP_64;
+ }
+ 
+ static void
+ riscv_pragma_intrinsic_flags_restore (struct pragma_intrinsic_flags *flags)
+ {
+   target_flags = flags->intrinsic_target_flags;
+ 
+   riscv_vector_elen_flags = flags->intrinsic_riscv_vector_elen_flags;
+   riscv_zvl_flags = flags->intrinsic_riscv_zvl_flags;
+ }
+ 
  /* RAII class for enabling enough RVV features to define the built-in
     types and implement the riscv_vector.h pragma.
  
*************** static hash_table<non_overloaded_registe
*** 3148,3175 ****
  class rvv_switcher
  {
  public:
!   rvv_switcher ();
    ~rvv_switcher ();
  
  private:
    bool m_old_have_regs_of_mode[MAX_MACHINE_MODE];
  };
  
! rvv_switcher::rvv_switcher ()
  {
    /* Set have_regs_of_mode before targetm.init_builtins ().  */
    memcpy (m_old_have_regs_of_mode, have_regs_of_mode,
  	  sizeof (have_regs_of_mode));
    for (int i = 0; i < NUM_MACHINE_MODES; ++i)
      if (riscv_v_ext_vector_mode_p ((machine_mode) i))
        have_regs_of_mode[i] = true;
  }
  
  rvv_switcher::~rvv_switcher ()
  {
    /* Recover back have_regs_of_mode.  */
    memcpy (have_regs_of_mode, m_old_have_regs_of_mode,
  	  sizeof (have_regs_of_mode));
  }
  
  /* Add attribute NAME to ATTRS.  */
--- 3200,3264 ----
  class rvv_switcher
  {
  public:
!   rvv_switcher (bool pollute_flags = true);
    ~rvv_switcher ();
  
  private:
    bool m_old_have_regs_of_mode[MAX_MACHINE_MODE];
+   struct pragma_intrinsic_flags backup_flags;
+   bool m_pollute_flags;
  };
  
! static void
! register_builtin_types_on_null ();
! 
! rvv_switcher::rvv_switcher (bool pollute_flags)
!   : m_pollute_flags (pollute_flags)
  {
+   if (m_pollute_flags)
+     {
+       riscv_pragma_intrinsic_flags_pollute (&backup_flags);
+       riscv_option_override ();
+     }
+ 
+   /* Allow all vector modes during builtin registration so that
+      vector_mode_supported_p does not reject fractional LMUL modes
+      for xtheadvector.  */
+   riscv_registering_builtins = true;
+ 
    /* Set have_regs_of_mode before targetm.init_builtins ().  */
    memcpy (m_old_have_regs_of_mode, have_regs_of_mode,
  	  sizeof (have_regs_of_mode));
    for (int i = 0; i < NUM_MACHINE_MODES; ++i)
      if (riscv_v_ext_vector_mode_p ((machine_mode) i))
        have_regs_of_mode[i] = true;
+ 
+   /* Not necessary to adjust mode and register type if we don't pollute
+      flags.  */
+   if (m_pollute_flags)
+     {
+       init_adjust_machine_modes ();
+ 
+       register_builtin_types_on_null ();
+     }
  }
  
  rvv_switcher::~rvv_switcher ()
  {
+   riscv_registering_builtins = false;
+ 
    /* Recover back have_regs_of_mode.  */
    memcpy (have_regs_of_mode, m_old_have_regs_of_mode,
  	  sizeof (have_regs_of_mode));
+ 
+   if (m_pollute_flags)
+     {
+       riscv_pragma_intrinsic_flags_restore (&backup_flags);
+ 
+       /* Re-initialize after the flags are restored.  */
+       riscv_option_override ();
+       init_adjust_machine_modes ();
+     }
  }
  
  /* Add attribute NAME to ATTRS.  */
*************** register_tuple_type (vector_type_index t
*** 3326,3351 ****
  static void
  register_builtin_types ()
  {
!   /* Get type node from get_typenode_from_name to prevent we have different type
!      node define in different target libraries, e.g. int32_t defined as
!      `long` in RV32/newlib-stdint, but `int` for RV32/glibc-stdint.h.
!      NOTE: uint[16|32|64]_type_node already defined in tree.h.  */
!   tree int8_type_node = get_typenode_from_name (INT8_TYPE);
!   tree uint8_type_node = get_typenode_from_name (UINT8_TYPE);
!   tree int16_type_node = get_typenode_from_name (INT16_TYPE);
!   tree int32_type_node = get_typenode_from_name (INT32_TYPE);
!   tree int64_type_node = get_typenode_from_name (INT64_TYPE);
! 
!   machine_mode mode;
! #define DEF_RVV_TYPE(NAME, NCHARS, ABI_NAME, SCALAR_TYPE, VECTOR_MODE,         \
! 		     ARGS...)                                                  \
!   mode = VECTOR_MODE##mode;                                                    \
!   register_builtin_type (VECTOR_TYPE_##NAME, SCALAR_TYPE##_type_node, mode);
! #define DEF_RVV_TUPLE_TYPE(NAME, NCHARS, ABI_NAME, SUBPART_TYPE, SCALAR_TYPE,  \
! 			   NF, VECTOR_SUFFIX)                                  \
!   register_tuple_type (VECTOR_TYPE_##NAME, VECTOR_TYPE_##SUBPART_TYPE,         \
! 		       SCALAR_TYPE##_type_node, NF);
! #include "riscv-vector-builtins.def"
  }
  
  /* Similar as register_builtin_types but perform the registration if and
--- 3415,3424 ----
  static void
  register_builtin_types ()
  {
!   /* Don't pollute flags at this stage to make sure we only register type with
!      what we want so far, we will register all type if necessary later.   */
!   rvv_switcher rvv (/* pollute_flags */ false);
!   register_builtin_types_on_null ();
  }
  
  /* Similar as register_builtin_types but perform the registration if and
*************** required_extensions_p (enum rvv_base_typ
*** 3457,3481 ****
    gcc_unreachable ();
  }
  
- static uint64_t
- get_required_extensions (vector_type_index type_idx)
- {
-   for (unsigned int i = 0; all_ops[i].index != NUM_VECTOR_TYPES; i++)
-     if (type_idx == all_ops[i].index)
-       return all_ops[i].required_extensions;
-   for (unsigned int i = 0; b_ops[i].index != NUM_VECTOR_TYPES; i++)
-     if (type_idx == b_ops[i].index)
-       return b_ops[i].required_extensions;
-   gcc_unreachable ();
- }
- 
  /* Check whether all the RVV_REQUIRE_* values in REQUIRED_EXTENSIONS are
!    enabled.  */
  static bool
  check_required_extensions (const function_instance &instance)
  {
    rvv_type_info type_info = instance.type;
-   uint64_t required_extensions = type_info.required_extensions;
    const rvv_op_info *op_info = instance.op_info;
  
    if (required_extensions_p (op_info->ret.base_type))
--- 3530,3544 ----
    gcc_unreachable ();
  }
  
  /* Check whether all the RVV_REQUIRE_* values in REQUIRED_EXTENSIONS are
!    enabled.
!    TODO: We defer the required extensions to expantion time, this function is
! 	 only doing the legality now, and we may rename this function and moving
! 	 to another layer.  */
  static bool
  check_required_extensions (const function_instance &instance)
  {
    rvv_type_info type_info = instance.type;
    const rvv_op_info *op_info = instance.op_info;
  
    if (required_extensions_p (op_info->ret.base_type))
*************** check_required_extensions (const functio
*** 3484,3531 ****
  	= op_info->ret.get_function_type_index (type_info.index);
        if (ret_type_idx == NUM_VECTOR_TYPES)
  	return false;
-       required_extensions |= get_required_extensions (ret_type_idx);
      }
  
    for (unsigned i = 0; op_info->args[i].base_type != NUM_BASE_TYPES; ++i)
      {
        if (!required_extensions_p (op_info->args[i].base_type))
  	continue;
- 
        enum vector_type_index vector_type
  	= op_info->args[i].get_function_type_index (type_info.index);
        if (vector_type == NUM_VECTOR_TYPES)
  	return false;
-       required_extensions |= get_required_extensions (vector_type);
- 
-       /* According to RVV ISA, EEW=64 index of indexed loads/stores require
- 	 XLEN = 64.  */
-       if (op_info->args[i].base_type == RVV_BASE_eew64_index)
- 	required_extensions |= RVV_REQUIRE_RV64BIT;
      }
  
-   uint64_t riscv_isa_flags = 0;
- 
-   if (TARGET_VECTOR_ELEN_BF_16)
-     riscv_isa_flags |= RVV_REQUIRE_ELEN_BF_16;
-   if (TARGET_VECTOR_ELEN_FP_16)
-     riscv_isa_flags |= RVV_REQUIRE_ELEN_FP_16;
-   if (TARGET_VECTOR_ELEN_FP_32)
-     riscv_isa_flags |= RVV_REQUIRE_ELEN_FP_32;
-   if (TARGET_VECTOR_ELEN_FP_64)
-     riscv_isa_flags |= RVV_REQUIRE_ELEN_FP_64;
-   if (TARGET_VECTOR_ELEN_64)
-     riscv_isa_flags |= RVV_REQUIRE_ELEN_64;
-   if (TARGET_64BIT)
-     riscv_isa_flags |= RVV_REQUIRE_RV64BIT;
-   if (TARGET_FULL_V)
-     riscv_isa_flags |= RVV_REQUIRE_FULL_V;
-   if (TARGET_MIN_VLEN > 32)
-     riscv_isa_flags |= RVV_REQUIRE_MIN_VLEN_64;
- 
-   uint64_t missing_extensions = required_extensions & ~riscv_isa_flags;
-   if (missing_extensions != 0)
-     return false;
    return true;
  }
  
--- 3547,3564 ----
*************** function_instance::get_return_type () co
*** 3688,3693 ****
--- 3721,3732 ----
    return op_info->ret.get_tree_type (type.index);
  }
  
+ bool
+ function_instance::function_returns_void_p () const
+ {
+   return get_return_type () == void_type_node;
+ }
+ 
  tree
  function_instance::get_arg_type (unsigned opno) const
  {
*************** function_builder::add_function (const fu
*** 3960,3966 ****
       nodes and remove the target hook. For now, however, we need to appease the
       validation and return a non-NULL, non-error_mark_node node, so we
       arbitrarily choose integer_zero_node.  */
!   tree decl = placeholder_p
  		? integer_zero_node
  		: simulate_builtin_function_decl (input_location, name, fntype,
  						  code, NULL, attrs);
--- 3999,4005 ----
       nodes and remove the target hook. For now, however, we need to appease the
       validation and return a non-NULL, non-error_mark_node node, so we
       arbitrarily choose integer_zero_node.  */
!   tree decl = placeholder_p || in_lto_p
  		? integer_zero_node
  		: simulate_builtin_function_decl (input_location, name, fntype,
  						  code, NULL, attrs);
*************** function_expander::use_exact_insn (insn_
*** 4205,4219 ****
  
    /* The RVV floating-point only support dynamic rounding mode in the
       FRM register.  */
!   if (opno != insn_data[icode].n_generator_args)
      add_input_operand (Pmode, gen_int_mode (riscv_vector::FRM_DYN, Pmode));
  
    return generate_insn (icode);
  }
  
! /* Use contiguous load INSN.  */
! rtx
! function_expander::use_contiguous_load_insn (insn_code icode)
  {
    gcc_assert (call_expr_nargs (exp) > 0);
    machine_mode mode = TYPE_MODE (TREE_TYPE (exp));
--- 4244,4258 ----
  
    /* The RVV floating-point only support dynamic rounding mode in the
       FRM register.  */
!   if (base->may_require_frm_p ()
!       && opno < insn_data[icode].n_generator_args)
      add_input_operand (Pmode, gen_int_mode (riscv_vector::FRM_DYN, Pmode));
  
    return generate_insn (icode);
  }
  
! int
! function_expander::prepare_contiguous_load_insn ()
  {
    gcc_assert (call_expr_nargs (exp) > 0);
    machine_mode mode = TYPE_MODE (TREE_TYPE (exp));
*************** function_expander::use_contiguous_load_i
*** 4232,4241 ****
--- 4271,4289 ----
      add_vundef_operand (mode);
  
    add_mem_operand (mode, arg_offset++);
+   return arg_offset;
+ }
+ 
+ /* Use contiguous load INSN.  */
+ rtx
+ function_expander::use_contiguous_load_insn (insn_code icode)
+ {
+   int arg_offset = prepare_contiguous_load_insn ();
  
    for (int argno = arg_offset; argno < call_expr_nargs (exp); argno++)
      add_input_operand (argno);
  
+   machine_mode mode = TYPE_MODE (TREE_TYPE (exp));
    if (GET_MODE_CLASS (mode) != MODE_VECTOR_BOOL)
      {
        add_input_operand (Pmode, get_tail_policy_for_pred (pred));
*************** function_expander::use_contiguous_load_i
*** 4244,4253 ****
  
    if (opno != insn_data[icode].n_generator_args)
      add_input_operand (Pmode, get_avl_type_rtx (avl_type::NONVLMAX));
- 
    return generate_insn (icode);
  }
  
  /* Use contiguous store INSN.  */
  rtx
  function_expander::use_contiguous_store_insn (insn_code icode)
--- 4292,4349 ----
  
    if (opno != insn_data[icode].n_generator_args)
      add_input_operand (Pmode, get_avl_type_rtx (avl_type::NONVLMAX));
    return generate_insn (icode);
  }
  
+ /* Similar to use_contiguous_load_insn but skips the vector-length destination
+    operand that a fault-only-first load intrinsic has.  Then we add tail and
+    mask policy as well as AVL operand.  Last, add the vector-length destination
+    operand that we skipped initially.  */
+ rtx
+ function_expander::use_fof_load_insn ()
+ {
+   int arg_offset = prepare_contiguous_load_insn ();
+ 
+   int vl_dest_arg = call_expr_nargs (exp) - 2;
+   for (int argno = arg_offset; argno < call_expr_nargs (exp); argno++)
+     {
+       /* Skip argument for VL destination in memory but add the others.  */
+       if (argno != vl_dest_arg)
+ 	add_input_operand (argno);
+     }
+ 
+   machine_mode mode = TYPE_MODE (TREE_TYPE (exp));
+   if (GET_MODE_CLASS (mode) != MODE_VECTOR_BOOL)
+     {
+       add_input_operand (Pmode, get_tail_policy_for_pred (pred));
+       add_input_operand (Pmode, get_mask_policy_for_pred (pred));
+     }
+ 
+   add_input_operand (Pmode, get_avl_type_rtx (avl_type::NONVLMAX));
+ 
+   tree arg = CALL_EXPR_ARG (exp, vl_dest_arg);
+ 
+   /* Use a regular FoF load if the user does not want to store VL.  */
+   if (integer_zerop (arg))
+     {
+       insn_code icode = code_for_pred_fault_load (mode);
+       return generate_insn (icode);
+     }
+ 
+   /* The VL-setting FoF load writes the new VL to VL_REG.
+      Store it to memory.  */
+   rtx vl_reg = gen_reg_rtx (Pmode);
+   add_output_operand (Pmode, vl_reg);
+   insn_code icode = code_for_pred_fault_load_set_vl (mode, Pmode);
+   rtx res = generate_insn (icode);
+ 
+   rtx addr = expand_normal (arg);
+   rtx mem = gen_rtx_MEM (Pmode, memory_address (Pmode, addr));
+   emit_move_insn (mem, vl_reg);
+ 
+   return res;
+ }
+ 
  /* Use contiguous store INSN.  */
  rtx
  function_expander::use_contiguous_store_insn (insn_code icode)
*************** function_expander::use_ternop_insn (bool
*** 4390,4396 ****
  
    /* The RVV floating-point only support dynamic rounding mode in the
       FRM register.  */
!   if (opno != insn_data[icode].n_generator_args)
      add_input_operand (Pmode, gen_int_mode (riscv_vector::FRM_DYN, Pmode));
  
    return generate_insn (icode);
--- 4486,4493 ----
  
    /* The RVV floating-point only support dynamic rounding mode in the
       FRM register.  */
!   if (base->may_require_frm_p ()
!       && opno < insn_data[icode].n_generator_args)
      add_input_operand (Pmode, gen_int_mode (riscv_vector::FRM_DYN, Pmode));
  
    return generate_insn (icode);
*************** function_expander::use_widen_ternop_insn
*** 4431,4437 ****
  
    /* The RVV floating-point only support dynamic rounding mode in the
       FRM register.  */
!   if (opno != insn_data[icode].n_generator_args)
      add_input_operand (Pmode, gen_int_mode (riscv_vector::FRM_DYN, Pmode));
  
    return generate_insn (icode);
--- 4528,4535 ----
  
    /* The RVV floating-point only support dynamic rounding mode in the
       FRM register.  */
!   if (base->may_require_frm_p ()
!       && opno < insn_data[icode].n_generator_args)
      add_input_operand (Pmode, gen_int_mode (riscv_vector::FRM_DYN, Pmode));
  
    return generate_insn (icode);
*************** builtin_type_p (const_tree type)
*** 4695,4722 ****
  void
  init_builtins ()
  {
-   rvv_switcher rvv;
-   if (!TARGET_VECTOR)
-     return;
-   register_builtin_types ();
-   if (in_lto_p)
-     handle_pragma_vector ();
- }
- 
- /* Reinitialize builtins similar to init_builtins,  but only the null
-    builtin types will be registered.  */
- void
- reinit_builtins ()
- {
-   rvv_switcher rvv;
- 
-   if (!TARGET_VECTOR)
-     return;
- 
-   register_builtin_types_on_null ();
- 
    if (in_lto_p)
      handle_pragma_vector ();
  }
  
  /* Implement TARGET_VERIFY_TYPE_CONTEXT for RVV types.  */
--- 4793,4807 ----
  void
  init_builtins ()
  {
    if (in_lto_p)
+     /* "pragma vector" will register type during the process. */
      handle_pragma_vector ();
+   else
+     {
+       if (!TARGET_VECTOR)
+ 	return;
+       register_builtin_types ();
+     }
  }
  
  /* Implement TARGET_VERIFY_TYPE_CONTEXT for RVV types.  */
*************** handle_pragma_vector ()
*** 4882,4891 ****
    function_table = new hash_table<registered_function_hasher> (1023);
    function_builder builder;
    for (unsigned int i = 0; i < ARRAY_SIZE (function_groups); ++i)
!   {
!     if (function_groups[i].match (function_groups[i].required_extensions))
!       builder.register_function_group (function_groups[i]);
!   }
  }
  
  /* Return the function decl with RVV function subcode CODE, or error_mark_node
--- 4967,4973 ----
    function_table = new hash_table<registered_function_hasher> (1023);
    function_builder builder;
    for (unsigned int i = 0; i < ARRAY_SIZE (function_groups); ++i)
!     builder.register_function_group (function_groups[i]);
  }
  
  /* Return the function decl with RVV function subcode CODE, or error_mark_node
diff -Nrcpad gcc-15.2.0/gcc/config/riscv/riscv-vector-builtins.h gcc-15.3.0/gcc/config/riscv/riscv-vector-builtins.h
*** gcc-15.2.0/gcc/config/riscv/riscv-vector-builtins.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/riscv/riscv-vector-builtins.h	Fri Jun 12 06:09:06 2026
*************** public:
*** 407,412 ****
--- 407,413 ----
    bool any_type_float_p () const;
  
    tree get_return_type () const;
+   bool function_returns_void_p () const;
    tree get_arg_type (unsigned opno) const;
  
    /* The properties of the function.  (The explicit "enum"s are required
*************** class function_call_info : public functi
*** 462,469 ****
  public:
    function_call_info (location_t, const function_instance &, tree);
  
-   bool function_returns_void_p ();
- 
    /* The location of the call.  */
    location_t location;
  
--- 463,468 ----
*************** public:
*** 471,483 ****
    tree fndecl;
  };
  
- /* Return true if the function has no return value.  */
- inline bool
- function_call_info::function_returns_void_p ()
- {
-   return TREE_TYPE (TREE_TYPE (fndecl)) == void_type_node;
- }
- 
  /* A class for folding a gimple function call.  */
  class gimple_folder : public function_call_info
  {
--- 470,475 ----
*************** public:
*** 521,527 ****
--- 513,521 ----
    machine_mode ret_mode (void) const;
  
    rtx use_exact_insn (insn_code);
+   int prepare_contiguous_load_insn ();
    rtx use_contiguous_load_insn (insn_code);
+   rtx use_fof_load_insn ();
    rtx use_contiguous_store_insn (insn_code);
    rtx use_compare_insn (rtx_code, insn_code);
    rtx use_ternop_insn (bool, insn_code);
diff -Nrcpad gcc-15.2.0/gcc/config/riscv/riscv-vsetvl.cc gcc-15.3.0/gcc/config/riscv/riscv-vsetvl.cc
*** gcc-15.2.0/gcc/config/riscv/riscv-vsetvl.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/riscv/riscv-vsetvl.cc	Fri Jun 12 06:09:06 2026
*************** bitmap_union_of_preds_with_entry (sbitma
*** 131,137 ****
     information's in each Base Blocks.
     This function references the compute_available implementation in lcm.cc  */
  static void
! compute_reaching_defintion (sbitmap *gen, sbitmap *kill, sbitmap *in,
  			    sbitmap *out)
  {
    edge e;
--- 131,137 ----
     information's in each Base Blocks.
     This function references the compute_available implementation in lcm.cc  */
  static void
! compute_reaching_definition (sbitmap *gen, sbitmap *kill, sbitmap *in,
  			    sbitmap *out)
  {
    edge e;
*************** fault_first_load_p (rtx_insn *rinsn)
*** 294,299 ****
--- 294,380 ----
  	     || get_attr_type (rinsn) == TYPE_VLSEGDFF);
  }
  
+ /* Return the VL output register from a fault-only-first load with VL
+    output (pred_fault_load_set_vl pattern) if RINSN is such an insn
+    or NULL_RTX otherwise.
+    The pattern has: (set vl_output (unspec:P [(reg:SI VL_REGNUM)]
+ 					     UNSPEC_READ_VL))  */
+ static rtx
+ get_fof_set_vl_reg (rtx_insn *rinsn)
+ {
+   if (!fault_first_load_p (rinsn))
+     return NULL_RTX;
+ 
+   rtx pat = PATTERN (rinsn);
+   if (GET_CODE (pat) != PARALLEL)
+     return NULL_RTX;
+ 
+   if (XVECLEN (pat, 0) != 3)
+     return NULL_RTX;
+ 
+   rtx sub = XVECEXP (pat, 0, 2);
+   if (GET_CODE (sub) == SET
+       && GET_CODE (SET_SRC (sub)) == UNSPEC
+       && XINT (SET_SRC (sub), 1) == UNSPEC_READ_VL)
+     return SET_DEST (sub);
+ 
+   return NULL_RTX;
+ }
+ 
+ /* Initialize RTL SSA and related infrastructure for vsetvl analysis.  */
+ static void
+ init_rtl_ssa ()
+ {
+   calculate_dominance_info (CDI_DOMINATORS);
+   loop_optimizer_init (AVOID_CFG_MODIFICATIONS);
+   connect_infinite_loops_to_exit ();
+   df_analyze ();
+   crtl->ssa = new function_info (cfun);
+ }
+ 
+ /* Finalize RTL SSA and cleanup.  */
+ static void
+ finish_rtl_ssa ()
+ {
+   free_dominance_info (CDI_DOMINATORS);
+   loop_optimizer_finalize ();
+   if (crtl->ssa->perform_pending_updates ())
+     cleanup_cfg (0);
+   delete crtl->ssa;
+   crtl->ssa = nullptr;
+ }
+ 
+ /* Emit read_vl instructions after fault-only-first loads that have
+    a VL output register.
+    This needs to happen last, i.e. when we made the VL dataflow
+    explicit by inserting vsetvls.  */
+ 
+ static void
+ emit_fof_read_vls ()
+ {
+   basic_block bb;
+   rtx_insn *rinsn;
+ 
+   FOR_EACH_BB_FN (bb, cfun)
+     FOR_BB_INSNS (bb, rinsn)
+       {
+ 	if (!NONDEBUG_INSN_P (rinsn))
+ 	  continue;
+ 
+ 	rtx vl_dest = get_fof_set_vl_reg (rinsn);
+ 	if (!vl_dest)
+ 	  continue;
+ 
+ 	if (dump_file)
+ 	  fprintf (dump_file,
+ 		   "  Inserting read_vl after FoF insn %d into r%d\n",
+ 		   INSN_UID (rinsn), REGNO (vl_dest));
+ 
+ 	rtx read_vl_pat = gen_read_vl (Pmode, vl_dest);
+ 	emit_insn_after (read_vl_pat, rinsn);
+       }
+ }
+ 
  /* Return true if the instruction is read vl instruction.  */
  static bool
  read_vl_insn_p (rtx_insn *rinsn)
*************** public:
*** 1178,1184 ****
      if (fault_first_load_p (insn->rtl ()))
        {
  	for (insn_info *i = insn->next_nondebug_insn ();
! 	     i->bb () == insn->bb (); i = i->next_nondebug_insn ())
  	  {
  	    if (find_access (i->defs (), VL_REGNUM))
  	      break;
--- 1259,1265 ----
      if (fault_first_load_p (insn->rtl ()))
        {
  	for (insn_info *i = insn->next_nondebug_insn ();
! 	     i && i->bb () == insn->bb (); i = i->next_nondebug_insn ())
  	  {
  	    if (find_access (i->defs (), VL_REGNUM))
  	      break;
*************** public:
*** 1188,1193 ****
--- 1269,1281 ----
  		break;
  	      }
  	  }
+ 	/* If no csrr found but this is a _set_vl style fault-only-first
+ 	   load, use the insn itself as the VL source.
+ 	   If we have two identical vector configs that just differ in
+ 	   AVL and the AVL is just "modified" by a read_vl we
+ 	   can consider them equal and elide the second one.  */
+ 	if (!m_read_vl_insn && get_fof_set_vl_reg (insn->rtl ()))
+ 	  m_read_vl_insn = insn;
        }
    }
  
*************** private:
*** 2175,2186 ****
--- 2263,2282 ----
    /* data for avl reaching definition.  */
    sbitmap *m_reg_def_loc;
  
+   /* Holds register uses per basic block.  Restricted to those registers that
+      are used as vsetvl destinations.  */
+   sbitmap *m_reg_use_loc;
+ 
    /* data for vsetvl info reaching definition.  */
    vsetvl_info m_unknown_info;
    auto_vec<vsetvl_info *> m_vsetvl_def_exprs;
    sbitmap *m_vsetvl_def_in;
    sbitmap *m_vsetvl_def_out;
  
+   /* Reaching data for vsetvl AVL operands.  */
+   sbitmap *m_vsetvl_avl_reach_in;
+   sbitmap *m_vsetvl_avl_reach_out;
+ 
    /* data for lcm */
    auto_vec<vsetvl_info *> m_exprs;
    sbitmap *m_avloc;
*************** private:
*** 2418,2434 ****
  
  public:
    pre_vsetvl ()
!     : m_vsetvl_def_in (nullptr), m_vsetvl_def_out (nullptr), m_avloc (nullptr),
        m_avin (nullptr), m_avout (nullptr), m_kill (nullptr), m_antloc (nullptr),
        m_transp (nullptr), m_insert (nullptr), m_del (nullptr), m_edges (nullptr)
    {
!     /* Initialization of RTL_SSA.  */
!     calculate_dominance_info (CDI_DOMINATORS);
!     loop_optimizer_init (LOOPS_NORMAL);
!     /* Create FAKE edges for infinite loops.  */
!     connect_infinite_loops_to_exit ();
!     df_analyze ();
!     crtl->ssa = new function_info (cfun);
      m_vector_block_infos.safe_grow_cleared (last_basic_block_for_fn (cfun));
      compute_probabilities ();
      m_unknown_info.set_unknown ();
--- 2514,2527 ----
  
  public:
    pre_vsetvl ()
!     : m_reg_def_loc (nullptr), m_reg_use_loc (nullptr),
!       m_vsetvl_def_in (nullptr), m_vsetvl_def_out (nullptr),
!       m_vsetvl_avl_reach_in (nullptr), m_vsetvl_avl_reach_out (nullptr),
!       m_avloc (nullptr),
        m_avin (nullptr), m_avout (nullptr), m_kill (nullptr), m_antloc (nullptr),
        m_transp (nullptr), m_insert (nullptr), m_del (nullptr), m_edges (nullptr)
    {
!     init_rtl_ssa ();
      m_vector_block_infos.safe_grow_cleared (last_basic_block_for_fn (cfun));
      compute_probabilities ();
      m_unknown_info.set_unknown ();
*************** public:
*** 2436,2456 ****
  
    void finish ()
    {
!     free_dominance_info (CDI_DOMINATORS);
!     loop_optimizer_finalize ();
!     if (crtl->ssa->perform_pending_updates ())
!       cleanup_cfg (0);
!     delete crtl->ssa;
!     crtl->ssa = nullptr;
  
      if (m_reg_def_loc)
        sbitmap_vector_free (m_reg_def_loc);
  
      if (m_vsetvl_def_in)
        sbitmap_vector_free (m_vsetvl_def_in);
      if (m_vsetvl_def_out)
        sbitmap_vector_free (m_vsetvl_def_out);
  
      if (m_avloc)
        sbitmap_vector_free (m_avloc);
      if (m_kill)
--- 2529,2551 ----
  
    void finish ()
    {
!     finish_rtl_ssa ();
  
      if (m_reg_def_loc)
        sbitmap_vector_free (m_reg_def_loc);
+     if (m_reg_use_loc)
+       sbitmap_vector_free (m_reg_use_loc);
  
      if (m_vsetvl_def_in)
        sbitmap_vector_free (m_vsetvl_def_in);
      if (m_vsetvl_def_out)
        sbitmap_vector_free (m_vsetvl_def_out);
  
+     if (m_vsetvl_avl_reach_in)
+       sbitmap_vector_free (m_vsetvl_avl_reach_in);
+     if (m_vsetvl_avl_reach_out)
+       sbitmap_vector_free (m_vsetvl_avl_reach_out);
+ 
      if (m_avloc)
        sbitmap_vector_free (m_avloc);
      if (m_kill)
*************** pre_vsetvl::compute_vsetvl_def_data ()
*** 2531,2536 ****
--- 2626,2635 ----
      sbitmap_vector_free (m_vsetvl_def_in);
    if (m_vsetvl_def_out)
      sbitmap_vector_free (m_vsetvl_def_out);
+   if (m_vsetvl_avl_reach_in)
+     sbitmap_vector_free (m_vsetvl_avl_reach_in);
+   if (m_vsetvl_avl_reach_out)
+     sbitmap_vector_free (m_vsetvl_avl_reach_out);
  
    sbitmap *def_loc = sbitmap_vector_alloc (last_basic_block_for_fn (cfun),
  					   m_vsetvl_def_exprs.length ());
*************** pre_vsetvl::compute_vsetvl_def_data ()
*** 2542,2547 ****
--- 2641,2651 ----
    m_vsetvl_def_out = sbitmap_vector_alloc (last_basic_block_for_fn (cfun),
  					   m_vsetvl_def_exprs.length ());
  
+   m_vsetvl_avl_reach_in
+     = sbitmap_vector_alloc (last_basic_block_for_fn (cfun), GP_REG_LAST + 1);
+   m_vsetvl_avl_reach_out
+     = sbitmap_vector_alloc (last_basic_block_for_fn (cfun), GP_REG_LAST + 1);
+ 
    bitmap_vector_clear (def_loc, last_basic_block_for_fn (cfun));
    bitmap_vector_clear (m_kill, last_basic_block_for_fn (cfun));
    bitmap_vector_clear (m_vsetvl_def_out, last_basic_block_for_fn (cfun));
*************** pre_vsetvl::compute_vsetvl_def_data ()
*** 2578,2585 ****
    bitmap_set_bit (m_vsetvl_def_out[entry->index],
  		  get_expr_index (m_vsetvl_def_exprs, m_unknown_info));
  
!   compute_reaching_defintion (def_loc, m_kill, m_vsetvl_def_in,
! 			      m_vsetvl_def_out);
  
    if (dump_file && (dump_flags & TDF_DETAILS))
      {
--- 2682,2689 ----
    bitmap_set_bit (m_vsetvl_def_out[entry->index],
  		  get_expr_index (m_vsetvl_def_exprs, m_unknown_info));
  
!   compute_reaching_definition (def_loc, m_kill, m_vsetvl_def_in,
! 			       m_vsetvl_def_out);
  
    if (dump_file && (dump_flags & TDF_DETAILS))
      {
*************** pre_vsetvl::compute_vsetvl_def_data ()
*** 2611,2616 ****
--- 2715,2741 ----
  
    sbitmap_vector_free (def_loc);
    sbitmap_vector_free (m_kill);
+ 
+   /* Now compute the reaching definitions for AVL operands.
+      We can reuse def_loc but index it by regnos now.  */
+   def_loc = sbitmap_vector_alloc (last_basic_block_for_fn (cfun),
+ 				  GP_REG_LAST + 1);
+ 
+   bitmap_vector_clear (def_loc, last_basic_block_for_fn (cfun));
+   bitmap_vector_clear (m_vsetvl_avl_reach_out, last_basic_block_for_fn (cfun));
+ 
+   for (const bb_info *bb : crtl->ssa->bbs ())
+     {
+       vsetvl_block_info &block_info = get_block_info (bb);
+       if (block_info.empty_p ())
+ 	continue;
+       vsetvl_info &info = block_info.get_exit_info ();
+       if (info.has_vl ())
+ 	bitmap_set_bit (def_loc[bb->index ()], REGNO (info.get_vl ()));
+     }
+ 
+   compute_reaching_definition (def_loc, m_reg_def_loc, m_vsetvl_avl_reach_in,
+ 			       m_vsetvl_avl_reach_out);
  }
  
  /* Subroutine of compute_lcm_local_properties which Compute local transparent
*************** pre_vsetvl::compute_transparent (const b
*** 2636,2645 ****
        if (info->has_nonvlmax_reg_avl ()
  	  && bitmap_bit_p (m_reg_def_loc[bb_index], REGNO (info->get_avl ())))
  	bitmap_clear_bit (m_transp[bb_index], i);
!       else if (info->has_vl ()
! 	       && bitmap_bit_p (m_reg_def_loc[bb_index],
! 				REGNO (info->get_vl ())))
! 	bitmap_clear_bit (m_transp[bb_index], i);
      }
  }
  
--- 2761,2779 ----
        if (info->has_nonvlmax_reg_avl ()
  	  && bitmap_bit_p (m_reg_def_loc[bb_index], REGNO (info->get_avl ())))
  	bitmap_clear_bit (m_transp[bb_index], i);
!       else if (info->has_vl ())
! 	{
! 	  /* If the VL reg is redefined, we cannot move a vsetvl past it.  */
! 	  if (bitmap_bit_p (m_reg_def_loc[bb_index],
! 			    REGNO (info->get_vl ())))
! 	    bitmap_clear_bit (m_transp[bb_index], i);
! 	  /* Same if there is a VL reg use that didn't come from a vsetvl.  */
! 	  else if (bitmap_bit_p (m_reg_use_loc[bb_index],
! 				 REGNO (info->get_vl ()))
! 		   && !bitmap_bit_p (m_vsetvl_avl_reach_in[bb_index],
! 				     REGNO (info->get_vl ())))
! 	    bitmap_clear_bit (m_transp[bb_index], i);
! 	}
      }
  }
  
*************** pre_vsetvl::fuse_local_vsetvl_info ()
*** 2775,2780 ****
--- 2909,2929 ----
    bitmap_vector_clear (m_reg_def_loc, last_basic_block_for_fn (cfun));
    bitmap_ones (m_reg_def_loc[ENTRY_BLOCK_PTR_FOR_FN (cfun)->index]);
  
+   m_reg_use_loc
+     = sbitmap_vector_alloc (last_basic_block_for_fn (cfun), GP_REG_LAST + 1);
+   bitmap_vector_clear (m_reg_use_loc, last_basic_block_for_fn (cfun));
+ 
+   /* No need to track all GPRs, just use those that are VL destinations.
+      Store them in a bitmap for filtering the uses later on.  */
+   auto_bitmap vsetvl_dest_regs;
+   for (bb_info *bb : crtl->ssa->bbs ())
+     for (insn_info *insn : bb->real_nondebug_insns ())
+       {
+ 	vsetvl_info info = vsetvl_info (insn);
+ 	if (info.valid_p () && info.has_vl ())
+ 	  bitmap_set_bit (vsetvl_dest_regs, REGNO (info.get_vl ()));
+       }
+ 
    for (bb_info *bb : crtl->ssa->bbs ())
      {
        auto &block_info = get_block_info (bb);
*************** pre_vsetvl::fuse_local_vsetvl_info ()
*** 2790,2800 ****
  	  if (curr_info.valid_p () || curr_info.unknown_p ())
  	    infos.safe_push (curr_info);
  
- 	  /* Collecting GP registers modified by the current bb.  */
  	  if (insn->is_real ())
! 	    for (def_info *def : insn->defs ())
! 	      if (def->is_reg () && GP_REG_P (def->regno ()))
! 		bitmap_set_bit (m_reg_def_loc[bb->index ()], def->regno ());
  	}
  
        vsetvl_info prev_info = vsetvl_info ();
--- 2939,2960 ----
  	  if (curr_info.valid_p () || curr_info.unknown_p ())
  	    infos.safe_push (curr_info);
  
  	  if (insn->is_real ())
! 	    {
! 	      /* Collect GPRs modified by the current bb.  */
! 	      for (def_info *def : insn->defs ())
! 		if (def->is_reg () && GP_REG_P (def->regno ()))
! 		  bitmap_set_bit (m_reg_def_loc[bb->index ()], def->regno ());
! 	      /* Collect non-vsetvl uses of GPRs.  */
! 	      if (!curr_info.valid_p ())
! 		{
! 		  for (use_info *use : insn->uses ())
! 		    if (use->is_reg () && GP_REG_P (use->regno ())
! 			&& bitmap_bit_p (vsetvl_dest_regs, use->regno ()))
! 		      bitmap_set_bit (m_reg_use_loc[bb->index ()],
! 				      use->regno ());
! 		}
! 	    }
  	}
  
        vsetvl_info prev_info = vsetvl_info ();
*************** pre_vsetvl::earliest_fuse_vsetvl_info (i
*** 3039,3048 ****
  	      if (!bitmap_bit_p (m_transp[eg->src->index], expr_index))
  		continue;
  
  	      if (dump_file && (dump_flags & TDF_DETAILS))
  		{
  		  fprintf (dump_file,
! 			   "      Set empty bb %u to info:", eg->src->index);
  		  curr_info.dump (dump_file, "        ");
  		}
  	      src_block_info.set_info (curr_info);
--- 3199,3241 ----
  	      if (!bitmap_bit_p (m_transp[eg->src->index], expr_index))
  		continue;
  
+ 	      /* Transparency tells us if we can move upwards without looking
+ 		 down.  It is still possible to clobber non-vsetvl uses
+ 		 that happen to share the vsetvl destination register of the
+ 		 vsetvl we are about to hoist.
+ 		 As we have computed the vsetvl VL dest -> vsetvl AVL reach
+ 		 before, we can check if our VL register is live-in for each
+ 		 successor and not reached by a vsetvl.  If so, we cannot
+ 		 hoist, as that would clobber the use.  */
+ 	      if (curr_info.has_vl ())
+ 		{
+ 		  edge succ;
+ 		  edge_iterator it;
+ 		  bool clobber = false;
+ 		  FOR_EACH_EDGE (succ, it, eg->src->succs)
+ 		    {
+ 		      if (succ->dest == eg->dest)
+ 			continue;
+ 		      if (bitmap_bit_p (df_get_live_in (succ->dest),
+ 					REGNO (curr_info.get_vl ()))
+ 			  && !bitmap_bit_p
+ 			  (m_vsetvl_avl_reach_in[succ->dest->index],
+ 			   REGNO (curr_info.get_vl ())))
+ 			{
+ 			  clobber = true;
+ 			  break;
+ 			}
+ 		    }
+ 		  if (clobber)
+ 		    continue;
+ 		}
+ 
+ 
  	      if (dump_file && (dump_flags & TDF_DETAILS))
  		{
  		  fprintf (dump_file,
! 			   "      Hoisting vsetvl info from bb %u to "
! 			   "bb %u: ", eg->dest->index, eg->src->index);
  		  curr_info.dump (dump_file, "        ");
  		}
  	      src_block_info.set_info (curr_info);
*************** pass_vsetvl::simple_vsetvl ()
*** 3612,3617 ****
--- 3805,3815 ----
  	    }
  	}
      }
+ 
+   if (dump_file)
+     fprintf (dump_file, "\nEmit missing read_vl()s for fault-only-first "
+ 	     "loads\n");
+   emit_fof_read_vls ();
  }
  
  /* Lazy vsetvl insertion for optimize > 0. */
*************** pass_vsetvl::lazy_vsetvl ()
*** 3660,3665 ****
--- 3858,3870 ----
  	     "\nPhase 4: Insert, modify and remove vsetvl insns.\n\n");
    pre.emit_vsetvl ();
  
+   /* Phase 4b: Emit read_vl for fault-only-first loads with VL output
+      register.  */
+   if (dump_file)
+     fprintf (dump_file, "\nPhase 4b: Emit missing read_vl()s for "
+ 	     "fault-only-first loads\n");
+   emit_fof_read_vls ();
+ 
    /* Phase 5: Cleanup */
    if (dump_file)
      fprintf (dump_file, "\nPhase 5: Cleanup\n\n");
diff -Nrcpad gcc-15.2.0/gcc/config/riscv/riscv.cc gcc-15.3.0/gcc/config/riscv/riscv.cc
*** gcc-15.2.0/gcc/config/riscv/riscv.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/riscv/riscv.cc	Fri Jun 12 06:09:06 2026
*************** poly_uint16 riscv_vector_chunks;
*** 340,345 ****
--- 340,348 ----
  /* The number of bytes in a vector chunk.  */
  unsigned riscv_bytes_per_vector_chunk;
  
+ /* Whether we are currently registering builtins.  */
+ bool riscv_registering_builtins;
+ 
  /* Index R is the smallest register class that contains register R.  */
  const enum reg_class riscv_regno_to_class[FIRST_PSEUDO_REGISTER] = {
    GR_REGS,	GR_REGS,	GR_REGS,	GR_REGS,
*************** riscv_build_integer_1 (struct riscv_inte
*** 1007,1022 ****
  	  /* Now iterate over the bits we want to clear until the cost is
  	     too high or we're done.  */
  	  nval = value ^ HOST_WIDE_INT_C (-1);
! 	  nval &= HOST_WIDE_INT_C (~0x7fffffff);
  	  while (nval && alt_cost < cost)
  	    {
  	      HOST_WIDE_INT bit = ctz_hwi (nval);
  	      alt_codes[alt_cost].code = AND;
! 	      alt_codes[alt_cost].value = ~(1UL << bit);
  	      alt_codes[alt_cost].use_uw = false;
  	      alt_codes[alt_cost].save_temporary = false;
  	      alt_cost++;
! 	      nval &= ~(1UL << bit);
  	    }
  
  	  if (nval == 0 && alt_cost <= cost)
--- 1010,1025 ----
  	  /* Now iterate over the bits we want to clear until the cost is
  	     too high or we're done.  */
  	  nval = value ^ HOST_WIDE_INT_C (-1);
! 	  nval &= ~HOST_WIDE_INT_C (0x7fffffff);
  	  while (nval && alt_cost < cost)
  	    {
  	      HOST_WIDE_INT bit = ctz_hwi (nval);
  	      alt_codes[alt_cost].code = AND;
! 	      alt_codes[alt_cost].value = ~(HOST_WIDE_INT_UC (1) << bit);
  	      alt_codes[alt_cost].use_uw = false;
  	      alt_codes[alt_cost].save_temporary = false;
  	      alt_cost++;
! 	      nval &= ~(HOST_WIDE_INT_UC (1) << bit);
  	    }
  
  	  if (nval == 0 && alt_cost <= cost)
*************** riscv_legitimize_move (machine_mode mode
*** 3596,3602 ****
        /* This test can fail if (for example) we want a HF and Z[v]fh is
  	 not enabled.  In that case we just want to let the standard
  	 expansion path run.  */
!       if (riscv_vector::get_vector_mode (smode, nunits).exists (&vmode))
  	{
  	  rtx v = gen_lowpart (vmode, SUBREG_REG (src));
  	  rtx int_reg = dest;
--- 3599,3607 ----
        /* This test can fail if (for example) we want a HF and Z[v]fh is
  	 not enabled.  In that case we just want to let the standard
  	 expansion path run.  */
!       if (riscv_vector::get_vector_mode (smode, nunits).exists (&vmode)
! 	  && convert_optab_handler (vec_extract_optab, vmode, smode)
! 	  && gen_lowpart_common (vmode, SUBREG_REG (src)))
  	{
  	  rtx v = gen_lowpart (vmode, SUBREG_REG (src));
  	  rtx int_reg = dest;
*************** static bool
*** 11726,11732 ****
  riscv_vector_mode_supported_p (machine_mode mode)
  {
    if (TARGET_VECTOR)
!     return riscv_v_ext_mode_p (mode);
  
    return false;
  }
--- 11731,11747 ----
  riscv_vector_mode_supported_p (machine_mode mode)
  {
    if (TARGET_VECTOR)
!     {
!       /* Avoid fractional LMUL modes for xtheadvector with the exception
! 	 of builtin registration time.  During registration, all modes
! 	 must be available so the order and numbering is consistent,
! 	 see PR123279.  */
!       if (TARGET_XTHEADVECTOR && !riscv_registering_builtins
! 	  && maybe_lt (GET_MODE_SIZE (mode), BYTES_PER_RISCV_VECTOR))
! 	return false;
! 
!       return riscv_v_ext_mode_p (mode);
!     }
  
    return false;
  }
*************** riscv_dwarf_poly_indeterminate_value (un
*** 11808,11813 ****
--- 11823,11835 ----
    */
    gcc_assert (i == 1);
    *factor = BYTES_PER_RISCV_VECTOR.coeffs[1];
+ 
+   /* The factor will be zero if vector is not enabled.  That ultimately
+      causes problems in the dwarf2 emitter as the factor is used for
+      a division, causing a divide by zero.  */
+   if (*factor == 0)
+     *factor = 1;
+ 
    *offset = 1;
    return RISCV_DWARF_VLENB;
  }
*************** extract_base_offset_in_addr (rtx mem, rt
*** 12633,12640 ****
  static bool
  riscv_vector_mode_supported_any_target_p (machine_mode)
  {
-   if (TARGET_XTHEADVECTOR)
-     return false;
    return true;
  }
  
--- 12655,12660 ----
*************** riscv_expand_ustrunc (rtx dest, rtx src)
*** 13008,13014 ****
    gcc_assert (precision < 64);
  
    uint64_t max = ((uint64_t)1u << precision) - 1u;
!   rtx xmode_src = gen_lowpart (Xmode, src);
    rtx xmode_dest = gen_reg_rtx (Xmode);
    rtx xmode_lt = gen_reg_rtx (Xmode);
  
--- 13028,13034 ----
    gcc_assert (precision < 64);
  
    uint64_t max = ((uint64_t)1u << precision) - 1u;
!   rtx xmode_src = riscv_extend_to_xmode_reg (src, GET_MODE (src), ZERO_EXTEND);
    rtx xmode_dest = gen_reg_rtx (Xmode);
    rtx xmode_lt = gen_reg_rtx (Xmode);
  
diff -Nrcpad gcc-15.2.0/gcc/config/riscv/riscv.h gcc-15.3.0/gcc/config/riscv/riscv.h
*** gcc-15.2.0/gcc/config/riscv/riscv.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/riscv/riscv.h	Fri Jun 12 06:09:06 2026
*************** extern bool riscv_user_wants_strict_alig
*** 1192,1197 ****
--- 1192,1198 ----
  extern unsigned riscv_stack_boundary;
  extern unsigned riscv_bytes_per_vector_chunk;
  extern poly_uint16 riscv_vector_chunks;
+ extern bool riscv_registering_builtins;
  extern poly_int64 riscv_v_adjust_nunits (enum machine_mode, int);
  extern poly_int64 riscv_v_adjust_nunits (machine_mode, bool, int, int);
  extern poly_int64 riscv_v_adjust_precision (enum machine_mode, int);
diff -Nrcpad gcc-15.2.0/gcc/config/riscv/riscv.md gcc-15.3.0/gcc/config/riscv/riscv.md
*** gcc-15.2.0/gcc/config/riscv/riscv.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/riscv/riscv.md	Fri Jun 12 06:09:06 2026
***************
*** 2281,2303 ****
    else
      {
        rtx reg;
!       rtx label = gen_label_rtx ();
        rtx end_label = gen_label_rtx ();
        rtx abs_reg = gen_reg_rtx (<ANYF:MODE>mode);
        rtx coeff_reg = gen_reg_rtx (<ANYF:MODE>mode);
        rtx tmp_reg = gen_reg_rtx (<ANYF:MODE>mode);
  
        riscv_emit_move (tmp_reg, operands[1]);
        riscv_emit_move (coeff_reg,
  		       riscv_vector::get_fp_rounding_coefficient (<ANYF:MODE>mode));
        emit_insn (gen_abs<ANYF:mode>2 (abs_reg, operands[1]));
  
!       riscv_expand_conditional_branch (label, LT, abs_reg, coeff_reg);
  
        emit_jump_insn (gen_jump (end_label));
        emit_barrier ();
  
!       emit_label (label);
        switch (<ANYF:MODE>mode)
  	{
  	case SFmode:
--- 2281,2318 ----
    else
      {
        rtx reg;
!       rtx label1 = gen_label_rtx ();
!       rtx label2 = gen_label_rtx ();
!       rtx label3 = gen_label_rtx ();
        rtx end_label = gen_label_rtx ();
        rtx abs_reg = gen_reg_rtx (<ANYF:MODE>mode);
        rtx coeff_reg = gen_reg_rtx (<ANYF:MODE>mode);
        rtx tmp_reg = gen_reg_rtx (<ANYF:MODE>mode);
  
        riscv_emit_move (tmp_reg, operands[1]);
+ 
+       if (flag_trapping_math)
+ 	{
+ 	  /* Check if the input is a NaN.  */
+ 	  riscv_expand_conditional_branch (label1, EQ,
+ 					   operands[1], operands[1]);
+ 
+ 	  emit_jump_insn (gen_jump (label3));
+ 	  emit_barrier ();
+ 
+ 	  emit_label (label1);
+ 	}
+ 
        riscv_emit_move (coeff_reg,
  		       riscv_vector::get_fp_rounding_coefficient (<ANYF:MODE>mode));
        emit_insn (gen_abs<ANYF:mode>2 (abs_reg, operands[1]));
  
!       riscv_expand_conditional_branch (label2, LT, abs_reg, coeff_reg);
  
        emit_jump_insn (gen_jump (end_label));
        emit_barrier ();
  
!       emit_label (label2);
        switch (<ANYF:MODE>mode)
  	{
  	case SFmode:
***************
*** 2316,2321 ****
--- 2331,2346 ----
  
        emit_insn (gen_copysign<ANYF:mode>3 (tmp_reg, abs_reg, operands[1]));
  
+       emit_jump_insn (gen_jump (end_label));
+       emit_barrier ();
+ 
+       if (flag_trapping_math)
+ 	{
+ 	  emit_label (label3);
+ 	  /* Generate a qNaN from an sNaN if needed.  */
+ 	  emit_insn (gen_add<ANYF:mode>3 (tmp_reg, operands[1], operands[1]));
+ 	}
+ 
        emit_label (end_label);
        riscv_emit_move (operands[0], tmp_reg);
      }
diff -Nrcpad gcc-15.2.0/gcc/config/riscv/t-rtems gcc-15.3.0/gcc/config/riscv/t-rtems
*** gcc-15.2.0/gcc/config/riscv/t-rtems	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/riscv/t-rtems	Fri Jun 12 06:09:06 2026
***************
*** 1,8 ****
  MULTILIB_OPTIONS	=
  MULTILIB_DIRNAMES	=
  
! MULTILIB_OPTIONS	+= march=rv32i/march=rv32iac/march=rv32im/march=rv32imf/march=rv32ima/march=rv32imac/march=rv32imaf/march=rv32imafc/march=rv32imafd/march=rv32imafdc/march=rv64ima/march=rv64imac/march=rv64imafd/march=rv64imafdc
! MULTILIB_DIRNAMES	+= rv32i       rv32iac       rv32im       rv32imf      rv32ima       rv32imac       rv32imaf       rv32imafc       rv32imafd       rv32imafdc       rv64ima       rv64imac       rv64imafd       rv64imafdc
  
  MULTILIB_OPTIONS	+= mabi=ilp32/mabi=ilp32f/mabi=ilp32d/mabi=lp64/mabi=lp64d
  MULTILIB_DIRNAMES	+= ilp32      ilp32f      ilp32d      lp64      lp64d
--- 1,8 ----
  MULTILIB_OPTIONS	=
  MULTILIB_DIRNAMES	=
  
! MULTILIB_OPTIONS	+= march=rv32i/march=rv32iac/march=rv32im/march=rv32imf/march=rv32ima/march=rv32imac/march=rv32imaf/march=rv32imafc/march=rv32imafd/march=rv32imafdc/march=rv64ima/march=rv64imac/march=rv64imafd/march=rv64imafdc/march=rv64imc
! MULTILIB_DIRNAMES	+= rv32i       rv32iac       rv32im       rv32imf       rv32ima       rv32imac       rv32imaf       rv32imafc       rv32imafd       rv32imafdc       rv64ima       rv64imac       rv64imafd       rv64imafdc       rv64imc
  
  MULTILIB_OPTIONS	+= mabi=ilp32/mabi=ilp32f/mabi=ilp32d/mabi=lp64/mabi=lp64d
  MULTILIB_DIRNAMES	+= ilp32      ilp32f      ilp32d      lp64      lp64d
*************** MULTILIB_DIRNAMES	+= ilp32      ilp32f
*** 10,15 ****
--- 10,18 ----
  MULTILIB_OPTIONS	+= mcmodel=medany
  MULTILIB_DIRNAMES	+= medany
  
+ MULTILIB_OPTIONS	+= mstrict-align
+ MULTILIB_DIRNAMES	+= strict-align
+ 
  MULTILIB_REQUIRED	=
  MULTILIB_REQUIRED	+= march=rv32i/mabi=ilp32
  MULTILIB_REQUIRED	+= march=rv32iac/mabi=ilp32
*************** MULTILIB_REQUIRED	+= march=rv64ima/mabi=
*** 25,27 ****
--- 28,32 ----
  MULTILIB_REQUIRED	+= march=rv64imac/mabi=lp64/mcmodel=medany
  MULTILIB_REQUIRED	+= march=rv64imafd/mabi=lp64d/mcmodel=medany
  MULTILIB_REQUIRED	+= march=rv64imafdc/mabi=lp64d/mcmodel=medany
+ MULTILIB_REQUIRED	+= march=rv64imafdc/mabi=lp64d/mcmodel=medany/mstrict-align
+ MULTILIB_REQUIRED	+= march=rv64imc/mabi=lp64/mcmodel=medany/mstrict-align
diff -Nrcpad gcc-15.2.0/gcc/config/riscv/vector-crypto.md gcc-15.3.0/gcc/config/riscv/vector-crypto.md
*** gcc-15.2.0/gcc/config/riscv/vector-crypto.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/riscv/vector-crypto.md	Fri Jun 12 06:09:06 2026
***************
*** 538,544 ****
    "TARGET_ZVKNED || TARGET_ZVKSED"
    "v<vv_ins_name>.<ins_type>\t%0,%2"
    [(set_attr "type" "v<vv_ins_name>")
!    (set_attr "mode" "<MODE>")])
  
  (define_insn "@pred_crypto_vv<vv_ins_name><ins_type>x4<mode>_scalar"
   [(set (match_operand:<VSIX4> 0 "register_operand"      "=&vr")
--- 538,544 ----
    "TARGET_ZVKNED || TARGET_ZVKSED"
    "v<vv_ins_name>.<ins_type>\t%0,%2"
    [(set_attr "type" "v<vv_ins_name>")
!    (set_attr "mode" "<VSIX2>")])
  
  (define_insn "@pred_crypto_vv<vv_ins_name><ins_type>x4<mode>_scalar"
   [(set (match_operand:<VSIX4> 0 "register_operand"      "=&vr")
***************
*** 556,562 ****
   "TARGET_ZVKNED || TARGET_ZVKSED"
   "v<vv_ins_name>.<ins_type>\t%0,%2"
   [(set_attr "type" "v<vv_ins_name>")
!   (set_attr "mode" "<MODE>")])
  
  (define_insn "@pred_crypto_vv<vv_ins_name><ins_type>x8<mode>_scalar"
   [(set (match_operand:<VSIX8> 0 "register_operand"      "=&vr")
--- 556,562 ----
   "TARGET_ZVKNED || TARGET_ZVKSED"
   "v<vv_ins_name>.<ins_type>\t%0,%2"
   [(set_attr "type" "v<vv_ins_name>")
!   (set_attr "mode" "<VSIX4>")])
  
  (define_insn "@pred_crypto_vv<vv_ins_name><ins_type>x8<mode>_scalar"
   [(set (match_operand:<VSIX8> 0 "register_operand"      "=&vr")
***************
*** 574,580 ****
   "TARGET_ZVKNED || TARGET_ZVKSED"
   "v<vv_ins_name>.<ins_type>\t%0,%2"
   [(set_attr "type" "v<vv_ins_name>")
!   (set_attr "mode" "<MODE>")])
  
  (define_insn "@pred_crypto_vv<vv_ins_name><ins_type>x16<mode>_scalar"
   [(set (match_operand:<VSIX16> 0 "register_operand"      "=&vr")
--- 574,580 ----
   "TARGET_ZVKNED || TARGET_ZVKSED"
   "v<vv_ins_name>.<ins_type>\t%0,%2"
   [(set_attr "type" "v<vv_ins_name>")
!   (set_attr "mode" "<VSIX8>")])
  
  (define_insn "@pred_crypto_vv<vv_ins_name><ins_type>x16<mode>_scalar"
   [(set (match_operand:<VSIX16> 0 "register_operand"      "=&vr")
***************
*** 592,598 ****
   "TARGET_ZVKNED || TARGET_ZVKSED"
   "v<vv_ins_name>.<ins_type>\t%0,%2"
   [(set_attr "type" "v<vv_ins_name>")
!   (set_attr "mode" "<MODE>")])
  
  ;; vaeskf1.vi vsm4k.vi
  (define_insn "@pred_crypto_vi<vi_ins_name><mode>_scalar"
--- 592,598 ----
   "TARGET_ZVKNED || TARGET_ZVKSED"
   "v<vv_ins_name>.<ins_type>\t%0,%2"
   [(set_attr "type" "v<vv_ins_name>")
!   (set_attr "mode" "<VSIX16>")])
  
  ;; vaeskf1.vi vsm4k.vi
  (define_insn "@pred_crypto_vi<vi_ins_name><mode>_scalar"
diff -Nrcpad gcc-15.2.0/gcc/config/riscv/vector-iterators.md gcc-15.3.0/gcc/config/riscv/vector-iterators.md
*** gcc-15.2.0/gcc/config/riscv/vector-iterators.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/riscv/vector-iterators.md	Fri Jun 12 06:09:06 2026
***************
*** 79,84 ****
--- 79,85 ----
    UNSPEC_VCOMPRESS
    UNSPEC_VLEFF
    UNSPEC_MODIFY_VL
+   UNSPEC_READ_VL
  
    UNSPEC_VFFMA
  
diff -Nrcpad gcc-15.2.0/gcc/config/riscv/vector.md gcc-15.3.0/gcc/config/riscv/vector.md
*** gcc-15.2.0/gcc/config/riscv/vector.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/riscv/vector.md	Fri Jun 12 06:09:06 2026
***************
*** 491,498 ****
  			  vaeskf1,vaeskf2,vaesz,vsha2ms,vsha2ch,vsha2cl,vsm4k,vsm4r,\
  			  vsm3me,vsm3c,vfncvtbf16,vfwcvtbf16,vfwmaccbf16")
  	   (const_int INVALID_ATTRIBUTE)
! 	(and (eq_attr "type" "vlde,vste,vlsegde,vssegte,vlsegds,vssegts,\
! 			       vlsegdff,vssegtux,vlsegdox,vlsegdux")
  	      (match_test "TARGET_XTHEADVECTOR"))
  	   (const_int INVALID_ATTRIBUTE)
  	 (eq_attr "mode" "RVVM8QI,RVVM1BI") (const_int 1)
--- 491,498 ----
  			  vaeskf1,vaeskf2,vaesz,vsha2ms,vsha2ch,vsha2cl,vsm4k,vsm4r,\
  			  vsm3me,vsm3c,vfncvtbf16,vfwcvtbf16,vfwmaccbf16")
  	   (const_int INVALID_ATTRIBUTE)
! 	(and (eq_attr "type" "vlde,vste,vlds,vsts,vlsegde,vssegte,vlsegds,\
! 			      vssegts,vlsegdff,vssegtux,vlsegdox,vlsegdux")
  	      (match_test "TARGET_XTHEADVECTOR"))
  	   (const_int INVALID_ATTRIBUTE)
  	 (eq_attr "mode" "RVVM8QI,RVVM1BI") (const_int 1)
***************
*** 1412,1417 ****
--- 1412,1418 ----
    }
    [(set_attr "type" "vmov,vlde,vste")
     (set_attr "mode" "<VT:MODE>")
+    (set (attr "merge_op_idx") (const_int INVALID_ATTRIBUTE))
     (set (attr "avl_type_idx") (const_int INVALID_ATTRIBUTE))
     (set (attr "mode_idx") (const_int INVALID_ATTRIBUTE))])
  
***************
*** 1449,1454 ****
--- 1450,1456 ----
    }
    [(set_attr "type" "vlde,vste,vmov")
     (set_attr "mode" "<MODE>")
+    (set (attr "merge_op_idx") (const_int INVALID_ATTRIBUTE))
     (set (attr "avl_type_idx") (const_int INVALID_ATTRIBUTE))
     (set (attr "mode_idx") (const_int INVALID_ATTRIBUTE))]
  )
***************
*** 1499,1504 ****
--- 1501,1507 ----
  }
    [(set_attr "type" "vlde,vste,vmov")
     (set_attr "mode" "<VLS_AVL_REG:MODE>")
+    (set (attr "merge_op_idx") (const_int INVALID_ATTRIBUTE))
     (set (attr "avl_type_idx") (const_int INVALID_ATTRIBUTE))
     (set (attr "mode_idx") (const_int INVALID_ATTRIBUTE))]
  )
***************
*** 4092,4097 ****
--- 4095,4101 ----
    "TARGET_VECTOR"
    "vw<plus_minus:insn><any_extend:u>.wx\t%0,%3,%z4%p1"
    [(set_attr "type" "vi<widen_binop_insn_type>")
+    (set_attr "mode_idx" "3")
     (set_attr "mode" "<V_DOUBLE_TRUNC>")])
  
  (define_insn "@pred_single_widen_add<any_extend:su><mode>_extended_scalar"
***************
*** 4358,4363 ****
--- 4362,4368 ----
    "TARGET_VECTOR"
    "v<insn>.vx\t%0,%3,%4%p1"
    [(set_attr "type" "<int_binop_insn_type>")
+    (set_attr "mode_idx" "3")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "@pred_<optab><mode>_scalar"
***************
*** 4379,4384 ****
--- 4384,4390 ----
    "TARGET_VECTOR"
    "v<insn>.vx\t%0,%3,%4%p1"
    [(set_attr "type" "<int_binop_insn_type>")
+    (set_attr "mode_idx" "3")
     (set_attr "mode" "<MODE>")])
  
  (define_expand "@pred_<optab><mode>_scalar"
***************
*** 4433,4438 ****
--- 4439,4445 ----
    "TARGET_VECTOR"
    "v<insn>.vx\t%0,%3,%4%p1"
    [(set_attr "type" "<int_binop_insn_type>")
+    (set_attr "mode_idx" "3")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*pred_<optab><mode>_extended_scalar"
***************
*** 4455,4460 ****
--- 4462,4468 ----
    "TARGET_VECTOR && !TARGET_64BIT"
    "v<insn>.vx\t%0,%3,%4%p1"
    [(set_attr "type" "<int_binop_insn_type>")
+    (set_attr "mode_idx" "3")
     (set_attr "mode" "<MODE>")])
  
  (define_expand "@pred_<optab><mode>_scalar"
***************
*** 4509,4514 ****
--- 4517,4523 ----
    "TARGET_VECTOR"
    "v<insn>.vx\t%0,%3,%z4%p1"
    [(set_attr "type" "<int_binop_insn_type>")
+    (set_attr "mode_idx" "3")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*pred_<optab><mode>_extended_scalar"
***************
*** 4531,4536 ****
--- 4540,4546 ----
    "TARGET_VECTOR && !TARGET_64BIT"
    "v<insn>.vx\t%0,%3,%z4%p1"
    [(set_attr "type" "<int_binop_insn_type>")
+    (set_attr "mode_idx" "3")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "@pred_<sat_op><mode>"
***************
*** 4576,4581 ****
--- 4586,4592 ----
    "TARGET_VECTOR"
    "v<sat_op>.vx\t%0,%3,%z4%p1"
    [(set_attr "type" "<sat_insn_type>")
+    (set_attr "mode_idx" "3")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "@pred_<sat_op><mode>_scalar"
***************
*** 8307,8327 ****
  ;; - 7.7. Unit-stride Fault-Only-First Loads
  ;; -------------------------------------------------------------------------------
  
! (define_insn "read_vlsi"
!   [(set (match_operand:SI 0 "register_operand" "=r")
! 	(reg:SI VL_REGNUM))]
    "TARGET_VECTOR"
    "csrr\t%0,vl"
    [(set_attr "type" "rdvl")
!    (set_attr "mode" "SI")])
! 
! (define_insn "read_vldi_zero_extend"
!   [(set (match_operand:DI 0 "register_operand" "=r")
! 	(zero_extend:DI (reg:SI VL_REGNUM)))]
!   "TARGET_VECTOR && TARGET_64BIT"
!   "csrr\t%0,vl"
!   [(set_attr "type" "rdvl")
!    (set_attr "mode" "DI")])
  
  (define_insn "@pred_fault_load<mode>"
    [(set (match_operand:V 0 "register_operand"              "=vd,    vd,    vr,    vr")
--- 8318,8330 ----
  ;; - 7.7. Unit-stride Fault-Only-First Loads
  ;; -------------------------------------------------------------------------------
  
! (define_insn "@read_vl<mode>"
!   [(set (match_operand:P 0 "register_operand" "=r")
! 	(unspec:P [(reg:SI VL_REGNUM)] UNSPEC_READ_VL))]
    "TARGET_VECTOR"
    "csrr\t%0,vl"
    [(set_attr "type" "rdvl")
!    (set_attr "mode" "<MODE>")])
  
  (define_insn "@pred_fault_load<mode>"
    [(set (match_operand:V 0 "register_operand"              "=vd,    vd,    vr,    vr")
***************
*** 8351,8356 ****
--- 8354,8389 ----
    [(set_attr "type" "vldff")
     (set_attr "mode" "<MODE>")])
  
+ (define_insn "@pred_fault_load_set_vl<V_VLS:mode><P:mode>"
+   [(set (match_operand:V_VLS 0 "register_operand"	       "=  vd,    vd,    vr,    vr")
+ 	(if_then_else:V_VLS
+ 	  (unspec:<V_VLS:VM>
+ 	    [(match_operand:<V_VLS:VM> 1 "vector_mask_operand" "   vm,    vm,   Wc1,   Wc1")
+ 	     (match_operand 4 "vector_length_operand"          "  rvl,   rvl,   rvl,   rvl")
+ 	     (match_operand 5 "const_int_operand"              "    i,     i,     i,     i")
+ 	     (match_operand 6 "const_int_operand"              "    i,     i,     i,     i")
+ 	     (match_operand 7 "const_int_operand"              "    i,     i,     i,     i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:V_VLS
+ 	    [(match_operand:V_VLS 3 "memory_operand"           "    m,     m,     m,     m")] UNSPEC_VLEFF)
+ 	  (match_operand:V_VLS 2 "vector_merge_operand"        "   vu,     0,    vu,     0")))
+    (set (reg:SI VL_REGNUM)
+ 	  (unspec:SI
+ 	    [(if_then_else:V_VLS
+ 	       (unspec:<V_VLS:VM>
+ 		[(match_dup 1) (match_dup 4) (match_dup 5)
+ 		 (match_dup 6) (match_dup 7)
+ 		 (reg:SI VL_REGNUM) (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	       (unspec:V_VLS [(match_dup 3)] UNSPEC_VLEFF)
+ 	       (match_dup 2))] UNSPEC_MODIFY_VL))
+    (set (match_operand:P 8 "register_operand"		       "=   r,     r,     r,     r")
+ 	(unspec:P [(reg:SI VL_REGNUM)] UNSPEC_READ_VL))]
+   "TARGET_VECTOR"
+   "vle<sew>ff.v\t%0,%3%p1"
+   [(set_attr "type" "vldff")
+    (set_attr "mode" "<V_VLS:MODE>")])
+ 
  
  ;; -------------------------------------------------------------------------------
  ;; ---- Predicated Segment loads/stores
***************
*** 8449,8455 ****
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
  	  (unspec:VT
! 	    [(match_operand 3 "pmode_reg_or_0_operand"   "   rJ,    rJ,    rJ")
  	     (mem:BLK (scratch))] UNSPEC_VLEFF)
  	  (match_operand:VT 2 "vector_merge_operand"     "    0,    vu,    vu")))
     (set (reg:SI VL_REGNUM)
--- 8482,8488 ----
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
  	  (unspec:VT
! 	    [(match_operand:VT 3 "memory_operand"	 "    m,     m,     m")
  	     (mem:BLK (scratch))] UNSPEC_VLEFF)
  	  (match_operand:VT 2 "vector_merge_operand"     "    0,    vu,    vu")))
     (set (reg:SI VL_REGNUM)
***************
*** 8464,8473 ****
  	        [(match_dup 3) (mem:BLK (scratch))] UNSPEC_VLEFF)
  	     (match_dup 2))] UNSPEC_MODIFY_VL))]
    "TARGET_VECTOR"
!   "vlseg<nf>e<sew>ff.v\t%0,(%z3)%p1"
    [(set_attr "type" "vlsegdff")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "@pred_indexed_<order>load<V1T:mode><RATIO64I:mode>"
    [(set (match_operand:V1T 0 "register_operand"           "=&vr,  &vr")
  	(if_then_else:V1T
--- 8497,8539 ----
  	        [(match_dup 3) (mem:BLK (scratch))] UNSPEC_VLEFF)
  	     (match_dup 2))] UNSPEC_MODIFY_VL))]
    "TARGET_VECTOR"
!   "vlseg<nf>e<sew>ff.v\t%0,%3%p1"
    [(set_attr "type" "vlsegdff")
     (set_attr "mode" "<MODE>")])
  
+ (define_insn "@pred_fault_load_set_vl<VT:mode><P:mode>"
+   [(set (match_operand:VT 0 "register_operand"              "=  vr,    vr,    vd")
+ 	(if_then_else:VT
+ 	  (unspec:<VT:VM>
+ 	    [(match_operand:<VT:VM> 1 "vector_mask_operand" "vmWc1,   Wc1,    vm")
+ 	     (match_operand 4 "vector_length_operand"       "  rvl,   rvl,   rvl")
+ 	     (match_operand 5 "const_int_operand"           "    i,     i,     i")
+ 	     (match_operand 6 "const_int_operand"           "    i,     i,     i")
+ 	     (match_operand 7 "const_int_operand"           "    i,     i,     i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:VT
+ 	    [(match_operand:VT 3 "memory_operand"	    "    m,     m,     m")
+ 	     (mem:BLK (scratch))] UNSPEC_VLEFF)
+ 	  (match_operand:VT 2 "vector_merge_operand"        "    0,    vu,    vu")))
+    (set (reg:SI VL_REGNUM)
+         (unspec:SI
+           [(if_then_else:VT
+ 	     (unspec:<VT:VM>
+ 	       [(match_dup 1) (match_dup 4) (match_dup 5)
+ 	        (match_dup 6) (match_dup 7)
+ 	        (reg:SI VL_REGNUM)
+ 	        (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	     (unspec:VT
+ 	        [(match_dup 3) (mem:BLK (scratch))] UNSPEC_VLEFF)
+ 	     (match_dup 2))] UNSPEC_MODIFY_VL))
+    (set (match_operand:P 8 "register_operand"		    "=   r,     r,     r")
+ 	(unspec:P [(reg:SI VL_REGNUM)] UNSPEC_READ_VL))]
+   "TARGET_VECTOR"
+   "vlseg<nf>e<sew>ff.v\t%0,%3%p1"
+   [(set_attr "type" "vlsegdff")
+    (set_attr "mode" "<VT:MODE>")])
+ 
  (define_insn "@pred_indexed_<order>load<V1T:mode><RATIO64I:mode>"
    [(set (match_operand:V1T 0 "register_operand"           "=&vr,  &vr")
  	(if_then_else:V1T
diff -Nrcpad gcc-15.2.0/gcc/config/rs6000/aix.h gcc-15.3.0/gcc/config/rs6000/aix.h
*** gcc-15.2.0/gcc/config/rs6000/aix.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/rs6000/aix.h	Fri Jun 12 06:09:06 2026
***************
*** 281,284 ****
  #undef SUBTARGET_DRIVER_SELF_SPECS
  #define SUBTARGET_DRIVER_SELF_SPECS	\
  "%{m64:-maix64} %<m64",			\
! "%{m32:-maix32} %<m32"
--- 281,286 ----
  #undef SUBTARGET_DRIVER_SELF_SPECS
  #define SUBTARGET_DRIVER_SELF_SPECS	\
  "%{m64:-maix64} %<m64",			\
! "%{m32:-maix32} %<m32",			\
! "%{fstack-protector*: %<fstack-protector* \
!    %estack-protector not supported on AIX}"
diff -Nrcpad gcc-15.2.0/gcc/config/rs6000/altivec.md gcc-15.3.0/gcc/config/rs6000/altivec.md
*** gcc-15.2.0/gcc/config/rs6000/altivec.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/rs6000/altivec.md	Fri Jun 12 06:09:06 2026
***************
*** 3625,3634 ****
  
    emit_insn (gen_vsx_xvcvsphp (rtx_tmp_hi, operands[1]));
    emit_insn (gen_vsx_xvcvsphp (rtx_tmp_lo, operands[2]));
!   if (!BYTES_BIG_ENDIAN)
!     emit_insn (gen_altivec_vpkuwum (operands[0], rtx_tmp_hi, rtx_tmp_lo));
!   else
!     emit_insn (gen_altivec_vpkuwum (operands[0], rtx_tmp_lo, rtx_tmp_hi));
    DONE;
  })
  
--- 3625,3631 ----
  
    emit_insn (gen_vsx_xvcvsphp (rtx_tmp_hi, operands[1]));
    emit_insn (gen_vsx_xvcvsphp (rtx_tmp_lo, operands[2]));
!   emit_insn (gen_altivec_vpkuwum (operands[0], rtx_tmp_hi, rtx_tmp_lo));
    DONE;
  })
  
diff -Nrcpad gcc-15.2.0/gcc/config/rs6000/rs6000-c.cc gcc-15.3.0/gcc/config/rs6000/rs6000-c.cc
*** gcc-15.2.0/gcc/config/rs6000/rs6000-c.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/rs6000/rs6000-c.cc	Fri Jun 12 06:09:06 2026
*************** rs6000_builtin_type_compatible (tree par
*** 835,848 ****
    return lang_hooks.types_compatible_p (parmtype, argtype);
  }
  
! /* In addition to calling fold_convert for EXPR of type TYPE, also
     call c_fully_fold to remove any C_MAYBE_CONST_EXPRs that could be
     hiding there (PR47197).  */
  
  static tree
  fully_fold_convert (tree type, tree expr)
  {
!   tree result = fold_convert (type, expr);
    bool maybe_const = true;
  
    if (!c_dialect_cxx ())
--- 835,874 ----
    return lang_hooks.types_compatible_p (parmtype, argtype);
  }
  
! /* Return fold_convert (TYPE, EXPR) for C and convert (TYPE, EXPR)
!    for C++.  The latter is needed because resolve_overloaded_builtin
!    can be called when parsing templates too if they don't have type
!    dependent operands, but the nested trees might not be usable in
!    GENERIC folding.  */
! 
! static tree
! c_fold_convert (tree type, tree expr)
! {
!   return c_dialect_cxx () ? convert (type, expr) : fold_convert (type, expr);
! }
! 
! /* Similar wrapper for fold_build2_loc.  For C++ just call build2_loc.  */
! 
! static tree
! c_fold_build2_loc (location_t loc, enum tree_code code, tree type, tree arg0,
! 		   tree arg1)
! {
!   if (!c_dialect_cxx ())
!     return fold_build2_loc (loc, code, type, arg0, arg1);
!   else if (loc != UNKNOWN_LOCATION)
!     return build2_loc (loc, code, type, arg0, arg1);
!   else
!     return build2 (code, type, arg0, arg1);
! }
! 
! /* In addition to calling c_fold_convert for EXPR of type TYPE, also
     call c_fully_fold to remove any C_MAYBE_CONST_EXPRs that could be
     hiding there (PR47197).  */
  
  static tree
  fully_fold_convert (tree type, tree expr)
  {
!   tree result = c_fold_convert (type, expr);
    bool maybe_const = true;
  
    if (!c_dialect_cxx ())
*************** fully_fold_convert (tree type, tree expr
*** 855,861 ****
     The overloaded builtin that matched the types and args is described
     by DESC.  The N arguments are given in ARGS, respectively.
  
!    Actually the only thing it does is calling fold_convert on ARGS, with
     a small exception for vec_{all,any}_{ge,le} predicates. */
  
  static tree
--- 881,887 ----
     The overloaded builtin that matched the types and args is described
     by DESC.  The N arguments are given in ARGS, respectively.
  
!    Actually the only thing it does is calling c_fold_convert on ARGS, with
     a small exception for vec_{all,any}_{ge,le} predicates. */
  
  static tree
*************** altivec_build_resolved_builtin (tree *ar
*** 891,898 ****
        std::swap (args[1], args[2]);
        std::swap (arg_type[1], arg_type[2]);
  
!       args[0] = fold_build2 (BIT_XOR_EXPR, TREE_TYPE (args[0]), args[0],
! 			     build_int_cst (NULL_TREE, 2));
      }
  
    for (int j = 0; j < n; j++)
--- 917,925 ----
        std::swap (args[1], args[2]);
        std::swap (arg_type[1], arg_type[2]);
  
!       args[0] = c_fold_build2_loc (UNKNOWN_LOCATION, BIT_XOR_EXPR,
! 				   TREE_TYPE (args[0]), args[0],
! 				   build_int_cst (NULL_TREE, 2));
      }
  
    for (int j = 0; j < n; j++)
*************** altivec_build_resolved_builtin (tree *ar
*** 923,929 ****
      default:
        gcc_unreachable ();
      }
!   return fold_convert (ret_type, call);
  }
  
  /* Enumeration of possible results from attempted overload resolution.
--- 950,956 ----
      default:
        gcc_unreachable ();
      }
!   return c_fold_convert (ret_type, call);
  }
  
  /* Enumeration of possible results from attempted overload resolution.
*************** resolve_vec_mul (resolution *res, tree *
*** 964,971 ****
      case E_TImode:
        /* For scalar types just use a multiply expression.  */
        *res = resolved;
!       return fold_build2_loc (loc, MULT_EXPR, types[0], args[0],
! 			      fold_convert (types[0], args[1]));
      case E_SFmode:
        {
  	/* For floats use the xvmulsp instruction directly.  */
--- 991,998 ----
      case E_TImode:
        /* For scalar types just use a multiply expression.  */
        *res = resolved;
!       return c_fold_build2_loc (loc, MULT_EXPR, types[0], args[0],
! 				c_fold_convert (types[0], args[1]));
      case E_SFmode:
        {
  	/* For floats use the xvmulsp instruction directly.  */
*************** resolve_vec_adde_sube (resolution *res,
*** 1108,1115 ****
  							params);
  	tree const1 = build_int_cstu (TREE_TYPE (types[0]), 1);
  	tree ones_vector = build_vector_from_val (types[0], const1);
! 	tree and_expr = fold_build2_loc (loc, BIT_AND_EXPR, types[0],
! 					 args[2], ones_vector);
  	params = make_tree_vector ();
  	vec_safe_push (params, call);
  	vec_safe_push (params, and_expr);
--- 1135,1142 ----
  							params);
  	tree const1 = build_int_cstu (TREE_TYPE (types[0]), 1);
  	tree ones_vector = build_vector_from_val (types[0], const1);
! 	tree and_expr = c_fold_build2_loc (loc, BIT_AND_EXPR, types[0],
! 					   args[2], ones_vector);
  	params = make_tree_vector ();
  	vec_safe_push (params, call);
  	vec_safe_push (params, and_expr);
*************** resolve_vec_addec_subec (resolution *res
*** 1194,1201 ****
  							 params);
  	tree const1 = build_int_cstu (TREE_TYPE (types[0]), 1);
  	tree ones_vector = build_vector_from_val (types[0], const1);
! 	tree and_expr = fold_build2_loc (loc, BIT_AND_EXPR, types[0],
! 					 args[2], ones_vector);
  	params = make_tree_vector ();
  	vec_safe_push (params, call2);
  	vec_safe_push (params, and_expr);
--- 1221,1228 ----
  							 params);
  	tree const1 = build_int_cstu (TREE_TYPE (types[0]), 1);
  	tree ones_vector = build_vector_from_val (types[0], const1);
! 	tree and_expr = c_fold_build2_loc (loc, BIT_AND_EXPR, types[0],
! 					   args[2], ones_vector);
  	params = make_tree_vector ();
  	vec_safe_push (params, call2);
  	vec_safe_push (params, and_expr);
*************** resolve_vec_splats (resolution *res, rs6
*** 1303,1309 ****
        return error_mark_node;
      }
  
!   arg = save_expr (fold_convert (TREE_TYPE (type), arg));
    vec<constructor_elt, va_gc> *vec;
    vec_alloc (vec, size);
  
--- 1330,1336 ----
        return error_mark_node;
      }
  
!   arg = save_expr (c_fold_convert (TREE_TYPE (type), arg));
    vec<constructor_elt, va_gc> *vec;
    vec_alloc (vec, size);
  
*************** resolve_vec_extract (resolution *res, ve
*** 1442,1448 ****
  	  tree result = build_call_expr (call, 2, arg1, arg2);
  	  /* Coerce the result to vector element type.  May be no-op.  */
  	  arg1_inner_type = TREE_TYPE (arg1_type);
! 	  result = fold_convert (arg1_inner_type, result);
  	  *res = resolved;
  	  return result;
  	}
--- 1469,1475 ----
  	  tree result = build_call_expr (call, 2, arg1, arg2);
  	  /* Coerce the result to vector element type.  May be no-op.  */
  	  arg1_inner_type = TREE_TYPE (arg1_type);
! 	  result = c_fold_convert (arg1_inner_type, result);
  	  *res = resolved;
  	  return result;
  	}
*************** resolve_vec_insert (resolution *res, vec
*** 1566,1573 ****
    if (TARGET_VSX)
      {
        stmt = build_array_ref (loc, stmt, arg2);
!       stmt = fold_build2 (MODIFY_EXPR, TREE_TYPE (arg0), stmt,
! 			  convert (TREE_TYPE (stmt), arg0));
        stmt = build2 (COMPOUND_EXPR, arg1_type, stmt, decl);
      }
    else
--- 1593,1601 ----
    if (TARGET_VSX)
      {
        stmt = build_array_ref (loc, stmt, arg2);
!       stmt = c_fold_build2_loc (UNKNOWN_LOCATION, MODIFY_EXPR,
! 				TREE_TYPE (arg0), stmt,
! 				convert (TREE_TYPE (stmt), arg0));
        stmt = build2 (COMPOUND_EXPR, arg1_type, stmt, decl);
      }
    else
*************** altivec_resolve_overloaded_builtin (loca
*** 1791,1797 ****
  		     "const");
  	  type = build_qualified_type (TREE_TYPE (type), 0);
  	  type = build_pointer_type (type);
! 	  arg = fold_convert (type, arg);
  	}
  
        /* For RS6000_OVLD_VEC_LXVL, convert any const * to its non constant
--- 1819,1825 ----
  		     "const");
  	  type = build_qualified_type (TREE_TYPE (type), 0);
  	  type = build_pointer_type (type);
! 	  arg = c_fold_convert (type, arg);
  	}
  
        /* For RS6000_OVLD_VEC_LXVL, convert any const * to its non constant
*************** altivec_resolve_overloaded_builtin (loca
*** 1802,1808 ****
  	{
  	  type = build_qualified_type (TREE_TYPE (type), 0);
  	  type = build_pointer_type (type);
! 	  arg = fold_convert (type, arg);
  	}
  
        args[n] = arg;
--- 1830,1836 ----
  	{
  	  type = build_qualified_type (TREE_TYPE (type), 0);
  	  type = build_pointer_type (type);
! 	  arg = c_fold_convert (type, arg);
  	}
  
        args[n] = arg;
diff -Nrcpad gcc-15.2.0/gcc/config/s390/vector.md gcc-15.3.0/gcc/config/s390/vector.md
*** gcc-15.2.0/gcc/config/s390/vector.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/s390/vector.md	Fri Jun 12 06:09:06 2026
***************
*** 2181,2187 ****
    [(set (match_operand:VI_HW_T              0 "register_operand" "=v")
  	(gtu:VI_HW_T (match_operand:VI_HW_T 1 "register_operand"  "v")
  		     (match_operand:VI_HW_T 2 "register_operand"  "v")))]
!   "TARGET_VX"
    "#"
    "&& can_create_pseudo_p ()"
    [(set (match_dup 3)
--- 2181,2187 ----
    [(set (match_operand:VI_HW_T              0 "register_operand" "=v")
  	(gtu:VI_HW_T (match_operand:VI_HW_T 1 "register_operand"  "v")
  		     (match_operand:VI_HW_T 2 "register_operand"  "v")))]
!   "TARGET_VX && !TARGET_VXE3"
    "#"
    "&& can_create_pseudo_p ()"
    [(set (match_dup 3)
diff -Nrcpad gcc-15.2.0/gcc/config/vax/vax.md gcc-15.3.0/gcc/config/vax/vax.md
*** gcc-15.2.0/gcc/config/vax/vax.md	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config/vax/vax.md	Fri Jun 12 06:09:06 2026
***************
*** 2909,2915 ****
    "#"
    "reload_completed"
    [(parallel
!      [(match_dup 1)
        (set (pc)
  	   (plus:SI (sign_extend:SI
  		      (mem:HI (plus:SI
--- 2909,2915 ----
    "#"
    "reload_completed"
    [(parallel
!      [(use (match_dup 1))
        (set (pc)
  	   (plus:SI (sign_extend:SI
  		      (mem:HI (plus:SI
***************
*** 2922,2928 ****
    "")
  
  (define_insn "*casesi1"
!   [(match_operand:SI 1 "const_int_operand" "n")
     (set (pc)
  	(plus:SI (sign_extend:SI
  		   (mem:HI (plus:SI
--- 2922,2928 ----
    "")
  
  (define_insn "*casesi1"
!   [(use (match_operand:SI 1 "const_int_operand" "n"))
     (set (pc)
  	(plus:SI (sign_extend:SI
  		   (mem:HI (plus:SI
diff -Nrcpad gcc-15.2.0/gcc/config.gcc gcc-15.3.0/gcc/config.gcc
*** gcc-15.2.0/gcc/config.gcc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/config.gcc	Fri Jun 12 06:09:06 2026
*************** loongarch*-*-linux*)
*** 2602,2609 ****
  
  loongarch*-*-elf*)
  	tm_file="elfos.h newlib-stdint.h ${tm_file}"
! 	tm_file="${tm_file} loongarch/elf.h loongarch/linux.h loongarch/loongarch-driver.h"
! 	tmake_file="${tmake_file} loongarch/t-multilib loongarch/t-linux"
  	gnu_ld=yes
  	gas=yes
  
--- 2602,2609 ----
  
  loongarch*-*-elf*)
  	tm_file="elfos.h newlib-stdint.h ${tm_file}"
! 	tm_file="${tm_file} loongarch/elf.h loongarch/loongarch-driver.h"
! 	tmake_file="${tmake_file} loongarch/t-multilib"
  	gnu_ld=yes
  	gas=yes
  
*************** case "${target}" in
*** 4304,4310 ****
  				  echo "Unknown extension used in --with-$which=$val" 1>&2
  				  exit 1
  				fi
! 				ext_val=`echo $ext_val | sed -E -e 's/[a-z0-9]+//'`
  			  done
  
  			  true
--- 4304,4310 ----
  				  echo "Unknown extension used in --with-$which=$val" 1>&2
  				  exit 1
  				fi
! 				ext_val=`echo $ext_val | sed -E -e 's/[a-z0-9-]+//'`
  			  done
  
  			  true
diff -Nrcpad gcc-15.2.0/gcc/cp/ChangeLog gcc-15.3.0/gcc/cp/ChangeLog
*** gcc-15.2.0/gcc/cp/ChangeLog	Fri Aug  8 06:52:35 2025
--- gcc-15.3.0/gcc/cp/ChangeLog	Fri Jun 12 06:10:03 2026
***************
*** 1,3 ****
--- 1,900 ----
+ 2026-06-12  Release Manager
+ 
+ 	* GCC 15.3.0 released.
+ 
+ 2026-06-05  Jason Merrill  <jason@redhat.com>
+ 
+ 	Revert:
+ 	2026-05-14  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+ 		    Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/123346
+ 	* constexpr.cc (init_subob_ctx): Do initialize new_ctx.ctor
+ 	for an empty union member.
+ 
+ 2026-06-05  Jason Merrill  <jason@redhat.com>
+ 
+ 	Revert:
+ 	2026-05-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/125315
+ 	* constexpr.cc (init_subob_ctx): Allow both ctor and object
+ 	to be null for an empty subobject.
+ 
+ 2026-06-03  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-10-12  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122163
+ 	* expr.cc (mark_use): When processing a reference, always return
+ 	an lvalue reference when !rvalue_p.
+ 
+ 2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-05-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/125376
+ 	* coroutines.cc (register_local_var_uses): Ignore DECL_NAME for
+ 	name independent decls.
+ 
+ 2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/124850
+ 	* typeck.cc (cxx_mark_addressable): For DECL_ANON_UNION_VAR_P vars
+ 	also mark their DECL_VALUE_EXPR.
+ 
+ 2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-04-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* parser.cc (cp_parser_omp_loop_nest): Write orig_declv, not incrv.
+ 
+ 2026-06-01  Yang Kun  <yangkun@disroot.org>
+ 
+ 	Backported from master:
+ 	2026-04-08  Yang Kun  <yangkun@disroot.org>
+ 
+ 	* parser.cc (cp_parser_omp_clause_proc_bind): Fix error message
+ 	(cp_parser_omp_clause_device_type): Likewise.
+ 
+ 2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-04-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/124487
+ 	* mangle.cc (write_type) <case PACK_INDEX_TYPE>: Handle even
+ 	the case of partially substituted pack.
+ 	(write_expression): Similarly for PACK_INDEX_EXPR.
+ 
+ 2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-04-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/124487
+ 	* mangle.cc (write_type) <case PACK_INDEX_TYPE>: Handle pack index
+ 	mangling unless (for now) PACK_INDEX_PACK is a TREE_VEC.
+ 	(write_expression): Handle PACK_INDEX_EXPR.
+ 
+ 2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-04-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/124198
+ 	* parser.cc (cp_parser_pack_index): If index is not type dependent,
+ 	call build_converted_constant_expr on it.  Return error_mark_node
+ 	if index is error_operand_p.
+ 	* pt.cc (tsubst_pack_index): Likewise.
+ 
+ 2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-04-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/124531
+ 	* init.cc (build_vec_init): Call braced_lists_to_strings for
+ 	array CONSTRUCTORs.  Handle RAW_DATA_CST and handle RANGE_EXPR
+ 	correctly.
+ 
+ 2026-05-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-05-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/125315
+ 	* constexpr.cc (init_subob_ctx): Allow both ctor and object
+ 	to be null for an empty subobject.
+ 
+ 2026-05-14  Jason Merrill  <jason@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-04-17  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/124632
+ 	* constexpr.cc (cxx_eval_call_expression): Unshare bindings
+ 	sooner.
+ 
+ 2026-05-14  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-04-16  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+ 		    Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/123346
+ 	* constexpr.cc (init_subob_ctx): Do initialize new_ctx.ctor
+ 	for an empty union member.
+ 
+ 2026-05-01  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-01  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/123143
+ 	* pt.cc (tsubst_expr) <case COMPONENT_REF>: Check identifier_p
+ 	before doing lookup for a template function.
+ 
+ 2026-04-16  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-04-15  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/120338
+ 	* decl.cc (cp_finish_decl): Set DECL_INITIAL to error_mark_node
+ 	instead of NULL_TREE for deleted main.
+ 
+ 2026-04-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-04-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/121643
+ 	PR c++/123975
+ 	* coroutines.cc (build_co_await): Pass rvalue to await_suspend.
+ 	(expand_one_await_expression): Fix await_suspend surgery.
+ 
+ 2026-04-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-04-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/121961
+ 	* coroutines.cc (build_actor_fn): Move the delete label before
+ 	the refcount handling.
+ 	(cp_coroutine_transform::build_ramp_function): Decrement refcount
+ 	after destroying gro.
+ 
+ 2026-04-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-04-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/117133
+ 	PR c++/124768
+ 	PR c++/124773
+ 	* mangle.cc (unmangled_name_p): Don't mangle internal extern "C"
+ 	variables.
+ 
+ 2026-04-07  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-04-07  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/123700
+ 	* pt.cc (dependent_opaque_alias_p): Return true for a
+ 	template-id typedef with a lambda targ.
+ 
+ 2026-04-07  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-04-07  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/123529
+ 	PR c++/98930
+ 	* pt.cc (has_value_dependent_address): Correct context
+ 	dependence check for a static local variable.
+ 
+ 2026-04-07  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/118630
+ 	* module.cc (depset::hash::add_dependency): Correct entry point
+ 	corection for recursive clusters.
+ 
+ 2026-04-07  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/124735
+ 	* module.cc (trees_in::is_matching_decl): Handle importing
+ 	undeduced auto when existing is already deduced.
+ 
+ 2026-04-07  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/124781
+ 	* module.cc (set_originating_module): Add a function comment,
+ 	only set attachment/exporting for entities with non-NULL
+ 	DECL_CONTEXT.
+ 	(check_module_decl_linkage): Use decl_anon_ns_mem_p instead of
+ 	decl_internal_context_p.
+ 
+ 2026-04-07  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/124785
+ 	* module.cc (trees_in::is_matching_decl): Narrow condition for
+ 	when noexcept propagation occurs; assert that we don't propagate
+ 	noexcept-specs for TEMPLATE_DECLs.
+ 
+ 2026-04-02  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-04-02  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/124477
+ 	* module.cc (trees_in::read_function_def): Set DECL_ARGUMENTS if
+ 	installing and otherwise missing.
+ 
+ 2026-03-28  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-03  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* constraint.cc (struct sat_entry): New data member inst_entry.
+ 	(satisfaction_cache::satisfaction_cache): Initialize inst_entry.
+ 	(satisfaction_cache::get): Use it to prefer printing the
+ 	instantiated atom in case of constraint recursion.
+ 	(satisfy_atom): Set inst_entry of the first cache entry to point
+ 	to the second entry.
+ 
+ 2026-03-28  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-03  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/123665
+ 	PR c++/123408
+ 	* pt.cc (build_extra_args): If TREE_STATIC was set on the
+ 	arguments, keep it set.
+ 	(add_extra_args): Set TREE_STATIC on the resulting arguments
+ 	when substituting templated arguments into a full set of
+ 	deferred arguments.
+ 	(tsubst_lambda_expr): Always defer templated substitution if
+ 	LAMBDA_EXPR_EXTRA_ARGS was set.
+ 
+ 2026-03-28  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-02-10  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/122621
+ 	* pt.cc (tsubst_pack_expansion): Use tf_partial instead of
+ 	tf_none, except when substituting outer (non-dependent) template
+ 	arguments.
+ 
+ 2026-03-17  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-16  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/124489
+ 	* error.cc (dump_type) <case NULLPTR_TYPE>: Use pp_cxx_ws_string
+ 	instead of pp_string.
+ 
+ 2026-03-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/120039
+ 	PR c++/122559
+ 	* pt.cc (tsubst_expr) <case VAR_DECL>: Don't call lookup_name on
+ 	DECL_NAME (t) if it is NULL_TREE.
+ 
+ 2026-03-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* parser.cc (cp_parser_omp_taskwait): Set TREE_TYPE of OMP_TASK
+ 	to void_type_node rather than void_node.
+ 	(cp_parser_omp_dispatch): Likewise.
+ 
+ 2026-03-12  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-03-12  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/124309
+ 	* module.cc (enum module_directness): Fix inconsistent
+ 	capitalisation.
+ 	(module_state::read_imports): Reparent module locations newly
+ 	seen as direct via partition.
+ 
+ 2026-03-12  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-03-12  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/124311
+ 	* module.cc (trees_in::key_mergeable): Check DECL_DEFAULTED_FN
+ 	instead of DECL_ARTIFICIAL.
+ 
+ 2026-03-12  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-03-12  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/124431
+ 	* module.cc (trees_in::key_mergeable): Allow merging members of
+ 	template specialisations.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-02-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/120685
+ 	* typeck2.cc (build_functional_cast_1): For C++23 auto(x)
+ 	without tf_warning or tf_error return error_mark_node instead of
+ 	emitting pedwarn and handling it.
+ 	* semantics.cc (finish_compound_literal): Similarly for C++26
+ 	auto{x}.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-02-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/123889
+ 	* constexpr.cc (explain_invalid_constexpr_fn): Diagnose
+ 	NULL or error_mark_node massaged on non-constructor.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/123578
+ 	* tree.cc (cxx_printable_name_internal): Call lang_decl_name before
+ 	finding the slot to cache it in and repeat search in the cache
+ 	after the call.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/123737
+ 	* parser.cc (cp_parser_expression): Don't handle CPP_EMBED just
+ 	as the last byte in it if expression has or might have overloaded
+ 	type.  In that case call build_x_compound_expr for each byte
+ 	in CPP_EMBED separately.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/123667
+ 	* semantics.cc (finish_decltype_type): Allow a structured binding
+ 	for ptds.saved to have DECL_HAS_VALUE_EXPR_P cleared, if it is
+ 	not within current_function_decl, but in that case assert that
+ 	lookup_decomp_type succeeded.
+ 
+ 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/123684
+ 	* name-lookup.cc (handle_namespace_attrs): Only handle visibility and
+ 	abi_tag attributes in the gnu namespace and deprecated attribute in
+ 	the standard or gnu namespaces.
+ 
+ 2026-03-03  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-30  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/123845
+ 	PR libstdc++/114865
+ 	* constexpr.cc (build_data_member_initialization): Remove
+ 	C++11-specific recognition of MODIFY_EXPR.
+ 	(check_constexpr_ctor_body): Relax error diagnostic to a
+ 	pedwarn and don't clear DECL_DECLARED_CONSTEXPR_P upon
+ 	error.  Return true if complaining.
+ 
+ 2026-02-19  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-02-12  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/123989
+ 	* cp-gimplify.cc (cp_gimplify_expr) <case CALL_EXPR>: Evaluate
+ 	the object argument of an xobj memfn call first too.
+ 
+ 2026-02-17  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-02-17  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/121822
+ 	* cvt.cc (convert_to_void): Don't evaluate a concept-id
+ 	in an unevaluated context.
+ 
+ 2026-02-17  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-02-17  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/122318
+ 	PR c++/101670
+ 	* pt.cc (unify) <default>: Accept LAMBDA_EXPR.
+ 
+ 2026-02-05  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-02-05  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/122169
+ 	* pt.cc (tsubst_pack_index): Propagate cv-qualifiers of
+ 	PACK_INDEX_TYPE.
+ 
+ 2026-01-27  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-27  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/123676
+ 	* pt.cc (tsubst_pack_expansion): Relax unsubsituted_packs
+ 	assert to allow !processing_template_decl when args is
+ 	NULL_TREE.
+ 
+ 2026-01-27  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-27  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/122494
+ 	PR c++/123814
+ 	* constexpr.cc (cxx_eval_outermost_constant_expr): Clear
+ 	uid_sensitive_constexpr_evaluation_value when mce_true.
+ 
+ 2026-01-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/123597
+ 	* parser.cc (substitute_in_tree_walker, substitute_in_tree): Don't
+ 	consider BIND_EXPRs with !BIND_EXPR_VARS redundant if
+ 	processing_template_decl.
+ 
+ 2026-01-20  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-12-23  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+ 
+ 	PR c++/122550
+ 	* decl.cc (member_like_constrained_friend_p): Check that the
+ 	friend's enclosing class is an implicit instantiation.
+ 
+ 2026-01-20  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-12-18  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+ 		    Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/122070
+ 	* pt.cc (type_targs_deducible_from): Fall back to
+ 	TYPE_TEMPLATE_INFO when TYPE_TEMPLATE_INFO_MAYBE_ALIAS is NULL.
+ 
+ 2026-01-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/123331
+ 	* constexpr.cc (cxx_eval_vec_init_1): Don't build INIT_EXPR if
+ 	eltinit is erroneous.
+ 
+ 2026-01-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-12-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/91388
+ 	* semantics.cc (finish_static_assert): Suppress -Wreturn-type warnings
+ 	in functions with failed assertions.
+ 
+ 2026-01-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-12-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/122772
+ 	* tree.cc (cp_stabilize_bitfield_reference): New function.
+ 	(cp_stabilize_reference): Use it for stabilization of
+ 	clk_bitfield or clk_packed lvalues.
+ 
+ 2026-01-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-12-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/122834
+ 	* typeck.cc (cp_compare_floating_point_conversion_ranks): Return
+ 	3 if fmt2->b is 10 except for _Float16 vs. _Decimal128, in that
+ 	case return -2.
+ 
+ 2026-01-14  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-09-17  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR c++/121966
+ 	* call.cc (print_z_candidates): Copy the filtering logic on viable
+ 	candidates from the printing loop to the counting loop, so that
+ 	num_candidates matches the number of iterations of the latter
+ 	loop.
+ 
+ 2026-01-09  Eczbek  <eczbek.void@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-11-29  Eczbek  <eczbek.void@gmail.com>
+ 		    Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/116952
+ 	* parser.cc (cp_parser_lambda_expression): Revert
+ 	r11-8166-ge1666ebd9ad31d change prohibiting lambda in non-type
+ 	parameter.
+ 
+ 2026-01-09  Jason Merrill  <jason@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-09-27  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/122048
+ 	* pt.cc (tsubst_expr): Don't use a lambda current_class_ptr.
+ 
+ 2026-01-09  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/121854
+ 	* lambda.cc (lambda_expr_this_capture): Don't assume
+ 	current_class_ref.
+ 
+ 2025-12-23  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-12-19  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122922
+ 	* module.cc (trees_in::post_types): New member.
+ 	(trees_in::trees_in): Initialize it.
+ 	(trees_in::~trees_in): Clean it up.
+ 	(trees_in::post_process_type): New functions.
+ 	(trees_in::tree_node): Save incomplete ARRAY_TYPEs for later
+ 	post-processing.
+ 	(module_state::read_cluster): Attempt to complete any
+ 	ARRAY_TYPEs we saved earlier.
+ 
+ 2025-12-16  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-12-15  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/122752
+ 	* pt.cc (tsubst) <case TYPENAME_TYPE>: Allow TYPENAME_TYPE
+ 	resolving to another wildcard type.
+ 
+ 2025-12-16  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-11-19  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/122668
+ 	PR c++/114764
+ 	* pt.cc (dependentish_scope_p): Return true for the current
+ 	instantiation from within an immediately parsed noexcept-spec.
+ 
+ 2025-12-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-11-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/121445
+ 	* constexpr.cc (build_data_member_initialization): Just return
+ 	false if member is COMPONENT_REF of COMPONENT_REF with
+ 	VAR_P get_base_address.
+ 
+ 2025-12-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-11-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/120876
+ 	* pt.cc (tsubst_baselink): Move maybe_incomplete handling after
+ 	!baselink handling.
+ 
+ 2025-11-28  Daniele Sahebi  <daniele@mkryss.me>
+ 
+ 	Backported from master:
+ 	2025-11-22  Daniele Sahebi  <daniele@mkryss.me>
+ 		    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/122658
+ 	* call.cc (build_over_call): Don't call build_cplus_new in
+ 	template declarations.
+ 
+ 2025-11-26  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-11-26  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/121325
+ 	* pt.cc (tsubst_tree_vec): New.
+ 	(tsubst_pack_index): Call it.
+ 
+ 2025-11-25  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-11-25  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122789
+ 	* module.cc (trees_out::core_vals): Treat REQUIRES_EXPR
+ 	specially and stream the chained decls of its first operand.
+ 	(trees_in::core_vals): Likewise.
+ 	(trees_out::tree_node): Check the PARM_DECLs we see are what we
+ 	expect.
+ 
+ 2025-11-21  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-11-21  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/120529
+ 	* call.cc (ref_conv_binds_to_temporary): Don't ignore access control.
+ 
+ 2025-11-19  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-11-19  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/119580
+ 	* pt.cc (tsubst_baselink): Return error_mark_node if
+ 	tsubst_template_args returned error_mark_node.
+ 
+ 2025-11-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-11-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR c++/122677
+ 	* module.cc (create_dirs): Skip past any leading slashes.
+ 
+ 2025-11-16  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-11-16  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122625
+ 	* module.cc (trees_in::read_var_def): Also track class-scope
+ 	primary template specialisations.
+ 
+ 2025-11-04  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-11-04  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122253
+ 	* decl2.cc (min_vis_expr_r): Don't mark no-linkage declarations
+ 	as VISIBILITY_ANON.
+ 
+ 2025-11-02  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-11-02  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122421
+ 	* module.cc (trees_in::read_var_def): Don't handle class-scope
+ 	variables anymore.
+ 	(trees_in::read_class_def): Handle them here instead.
+ 
+ 2025-11-01  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-11-01  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122381
+ 	* module.cc (trees_out::core_vals): Write BASELINK_OPTYPE (aka
+ 	TREE_CHAIN).
+ 	(trees_in::core_vals): Read it.
+ 
+ 2025-10-28  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-10-14  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/122192
+ 	* parser.cc (cp_parser_mem_initializer_id): Pass class_type
+ 	instead of typename_type to cp_parser_class_name in the
+ 	nested-name-specifier case.
+ 
+ 2025-10-28  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-10-10  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/122192
+ 	* decl.cc (make_typename_type): Document base-specifier as
+ 	another type-only lookup case.
+ 	* parser.cc (cp_parser_class_name): Propagate tag_type to
+ 	make_typename_type instead of hardcoding typename_type.
+ 	(cp_parser_base_specifier): Pass class_type instead of
+ 	typename_type as tag_type to cp_parser_class_name.
+ 
+ 2025-10-28  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-10-27  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122310
+ 	* module.cc (get_keyed_decl_scope): New function.
+ 	(trees_out::get_merge_kind): Use it.
+ 	(trees_out::key_mergeable): Use it.
+ 	(maybe_key_decl): Key to the containing type for all members.
+ 
+ 2025-10-14  Jason Merrill  <jason@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-08-21  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/120757
+ 	* pt.cc (tsubst_expr) [OFFSET_REF]: Don't tsubst the type.
+ 
+ 2025-09-25  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-09-25  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122015
+ 	PR c++/122019
+ 	* module.cc (trees_in::install_entity): Remove incorrect
+ 	assertion.
+ 
+ 2025-09-24  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-09-20  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/121981
+ 	* pt.cc (any_template_parm_r) <case TEMPLATE_TYPE_PARM>:
+ 	Don't walk TREE_TYPE.
+ 
+ 2025-09-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-08-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/121524
+ 	* tree.cc (build_cplus_array_type): Don't reuse variant type
+ 	if it has TREE_DEPRECATED or TREE_UNAVAILABLE flags set or,
+ 	unless elt_type has TYPE_USER_ALIGN set and TYPE_ALIGN is
+ 	TYPE_ALIGN of elt_type, TYPE_USER_ALIGN is not set.
+ 
+ 2025-09-24  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-09-24  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122019
+ 	* module.cc (trees_in::install_entity): Don't be affected by
+ 	global language linkage state.
+ 	(trees_in::is_matching_decl): Check mismatching language linkage
+ 	for variables too.
+ 	(module_may_redeclare): Report the correct module name for
+ 	partitions and implementation units.
+ 
+ 2025-09-23  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-09-22  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122015
+ 	* cp-tree.h (make_auto_pack): Declare.
+ 	* lambda.cc (lambda_capture_field_type): Use make_auto_pack to
+ 	ensure TYPE_CANONICAL is set correctly.
+ 	* pt.cc (make_auto_pack): New function.
+ 
+ 2025-09-15  Matthias Kretz  <m.kretz@gsi.de>
+ 
+ 	Backported from master:
+ 	2025-09-09  Matthias Kretz  <m.kretz@gsi.de>
+ 
+ 	PR c++/121801
+ 	* mangle.cc (write_real_cst): Handle 16-bit real and assert
+ 	that reals have 16 bits or a multiple of 32 bits.
+ 
+ 2025-09-12  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-09-12  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/121795
+ 	* pt.cc (unify) <case PACK_INDEX_TYPE>: New non-deduced context
+ 	case.
+ 
+ 2025-09-11  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-09-03  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/97740
+ 	* pt.cc (tsubst_expr) <case COMPONENT_REF>: Don't check access
+ 	when the given member is already a FIELD_DECL.
+ 
+ 2025-09-04  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-09-04  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/121724
+ 	* name-lookup.cc (push_namespace): Mark inline namespace
+ 	contexts as purview if needed.
+ 
+ 2025-08-27  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-08-23  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/120499
+ 	* method.cc (synthesize_method): Set the instantiating module.
+ 
+ 2025-08-26  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-08-19  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/121351
+ 	* class.cc (add_method): Use outer_template_args when
+ 	substituting outer template arguments into constraints.
+ 
+ 2025-08-08  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-08-04  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/121351
+ 	PR c++/119859
+ 	* class.cc (add_method): Substitute outer template arguments
+ 	into constraints before comparing them if the declarations are
+ 	from different classes.
+ 
+ 2025-08-08  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-08-04  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/120620
+ 	* constexpr.cc (cxx_dynamic_cast_fn_p): Return true only
+ 	for synthesized __dynamic_cast.
+ 
  2025-08-08  Release Manager
  
  	* GCC 15.2.0 released.
diff -Nrcpad gcc-15.2.0/gcc/cp/call.cc gcc-15.3.0/gcc/cp/call.cc
*** gcc-15.2.0/gcc/cp/call.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cp/call.cc	Fri Jun 12 06:09:06 2026
*************** print_z_candidates (location_t loc, stru
*** 4203,4209 ****
  
    int num_candidates = 0;
    for (auto iter = candidates; iter; iter = iter->next)
!     ++num_candidates;
  
    inform_n (loc,
  	    num_candidates, "there is %i candidate", "there are %i candidates",
--- 4203,4213 ----
  
    int num_candidates = 0;
    for (auto iter = candidates; iter; iter = iter->next)
!     {
!       if (only_viable_p.is_true () && iter->viable != 1)
! 	break;
!       ++num_candidates;
!     }
  
    inform_n (loc,
  	    num_candidates, "there is %i candidate", "there are %i candidates",
*************** ref_conv_binds_to_temporary (tree type,
*** 10143,10153 ****
    const int flags = direct_init_p ? LOOKUP_NORMAL : LOOKUP_IMPLICIT;
    conversion *conv = implicit_conversion (type, TREE_TYPE (expr), expr,
  					  /*c_cast_p=*/false, flags, tf_none);
!   tristate ret (tristate::TS_UNKNOWN);
!   if (conv && !conv->bad_p)
!     ret = tristate (conv_binds_ref_to_temporary (conv));
  
!   return ret;
  }
  
  /* Call the trivial destructor for INSTANCE, which can be either an lvalue of
--- 10147,10165 ----
    const int flags = direct_init_p ? LOOKUP_NORMAL : LOOKUP_IMPLICIT;
    conversion *conv = implicit_conversion (type, TREE_TYPE (expr), expr,
  					  /*c_cast_p=*/false, flags, tf_none);
!   if (!conv || conv->bad_p)
!     return tristate::unknown ();
  
!   if (conv_binds_ref_to_temporary (conv))
!     {
!       /* Actually perform the conversion to check access control.  */
!       if (convert_like (conv, expr, tf_none) != error_mark_node)
! 	return tristate (true);
!       else
! 	return tristate::unknown ();
!     }
! 
!   return tristate (false);
  }
  
  /* Call the trivial destructor for INSTANCE, which can be either an lvalue of
*************** build_over_call (struct z_candidate *can
*** 10268,10285 ****
  	TREE_NO_WARNING (expr) = true;
        if (immediate_invocation_p (fn))
  	{
! 	  tree obj_arg = NULL_TREE, exprimm = expr;
  	  if (DECL_CONSTRUCTOR_P (fn))
  	    obj_arg = first_arg;
- 	  if (obj_arg
- 	      && is_dummy_object (obj_arg)
- 	      && !type_dependent_expression_p (obj_arg))
- 	    {
- 	      exprimm = build_cplus_new (DECL_CONTEXT (fn), expr, complain);
- 	      obj_arg = NULL_TREE;
- 	    }
  	  /* Look through *(const T *)&obj.  */
! 	  else if (obj_arg && INDIRECT_REF_P (obj_arg))
  	    {
  	      tree addr = TREE_OPERAND (obj_arg, 0);
  	      STRIP_NOPS (addr);
--- 10280,10290 ----
  	TREE_NO_WARNING (expr) = true;
        if (immediate_invocation_p (fn))
  	{
! 	  tree obj_arg = NULL_TREE;
  	  if (DECL_CONSTRUCTOR_P (fn))
  	    obj_arg = first_arg;
  	  /* Look through *(const T *)&obj.  */
! 	  if (obj_arg && INDIRECT_REF_P (obj_arg))
  	    {
  	      tree addr = TREE_OPERAND (obj_arg, 0);
  	      STRIP_NOPS (addr);
*************** build_over_call (struct z_candidate *can
*** 10291,10297 ****
  		    obj_arg = TREE_OPERAND (addr, 0);
  		}
  	    }
! 	  fold_non_dependent_expr (exprimm, complain,
  				   /*manifestly_const_eval=*/true,
  				   obj_arg);
  	}
--- 10296,10302 ----
  		    obj_arg = TREE_OPERAND (addr, 0);
  		}
  	    }
! 	  fold_non_dependent_expr (expr, complain,
  				   /*manifestly_const_eval=*/true,
  				   obj_arg);
  	}
diff -Nrcpad gcc-15.2.0/gcc/cp/class.cc gcc-15.3.0/gcc/cp/class.cc
*** gcc-15.2.0/gcc/cp/class.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cp/class.cc	Fri Jun 12 06:09:06 2026
*************** add_method (tree type, tree method, bool
*** 1351,1357 ****
        if (!compparms (parms1, parms2))
  	continue;
  
!       if (!equivalently_constrained (fn, method))
  	{
  	  if (processing_template_decl)
  	    /* We can't check satisfaction in dependent context, wait until
--- 1351,1380 ----
        if (!compparms (parms1, parms2))
  	continue;
  
!       tree fn_constraints = get_constraints (fn);
!       tree method_constraints = get_constraints (method);
! 
!       if (fn_constraints && method_constraints
! 	  && DECL_CONTEXT (fn) != type
! 	  && !processing_template_decl)
! 	{
! 	  if (TREE_CODE (fn) == TEMPLATE_DECL)
! 	    ++processing_template_decl;
! 	  if (tree outer_args = outer_template_args (fn))
! 	    fn_constraints = tsubst_constraint_info (fn_constraints,
! 						     outer_args,
! 						     tf_warning_or_error,
! 						     fn);
! 	  if (tree outer_args = outer_template_args (method))
! 	    method_constraints = tsubst_constraint_info (method_constraints,
! 							 outer_args,
! 							 tf_warning_or_error,
! 							 method);
! 	  if (TREE_CODE (fn) == TEMPLATE_DECL)
! 	    --processing_template_decl;
! 	}
! 
!       if (!equivalent_constraints (fn_constraints, method_constraints))
  	{
  	  if (processing_template_decl)
  	    /* We can't check satisfaction in dependent context, wait until
diff -Nrcpad gcc-15.2.0/gcc/cp/constexpr.cc gcc-15.3.0/gcc/cp/constexpr.cc
*** gcc-15.2.0/gcc/cp/constexpr.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cp/constexpr.cc	Fri Jun 12 06:09:06 2026
*************** build_data_member_initialization (tree t
*** 399,409 ****
      }
    if (TREE_CODE (t) == CONVERT_EXPR)
      t = TREE_OPERAND (t, 0);
!   if (TREE_CODE (t) == INIT_EXPR
!       /* vptr initialization shows up as a MODIFY_EXPR.  In C++14 we only
! 	 use what this function builds for cx_check_missing_mem_inits, and
! 	 assignment in the ctor body doesn't count.  */
!       || (cxx_dialect < cxx14 && TREE_CODE (t) == MODIFY_EXPR))
      {
        member = TREE_OPERAND (t, 0);
        init = break_out_target_exprs (TREE_OPERAND (t, 1));
--- 399,405 ----
      }
    if (TREE_CODE (t) == CONVERT_EXPR)
      t = TREE_OPERAND (t, 0);
!   if (TREE_CODE (t) == INIT_EXPR)
      {
        member = TREE_OPERAND (t, 0);
        init = break_out_target_exprs (TREE_OPERAND (t, 1));
*************** build_data_member_initialization (tree t
*** 464,469 ****
--- 460,468 ----
        if (TREE_CODE (aggr) != COMPONENT_REF)
  	/* Normal member initialization.  */
  	member = TREE_OPERAND (member, 1);
+       else if (VAR_P (get_base_address (aggr)))
+ 	/* Initializing a local variable, don't add anything.  */
+ 	return true;
        else if (ANON_AGGR_TYPE_P (TREE_TYPE (aggr)))
  	/* Initializing a member of an anonymous union.  */
  	return build_anon_member_initialization (member, init, vec);
*************** check_constexpr_ctor_body (tree last, tr
*** 562,572 ****
    else if (list != last
  	   && !check_constexpr_ctor_body_1 (last, list))
      ok = false;
!   if (!ok)
      {
!       if (complain)
! 	error ("%<constexpr%> constructor does not have empty body");
!       DECL_DECLARED_CONSTEXPR_P (current_function_decl) = false;
      }
    return ok;
  }
--- 561,571 ----
    else if (list != last
  	   && !check_constexpr_ctor_body_1 (last, list))
      ok = false;
!   if (!ok && complain)
      {
!       pedwarn (input_location, OPT_Wc__14_extensions,
! 	       "%<constexpr%> constructor does not have empty body");
!       ok = true;
      }
    return ok;
  }
*************** explain_invalid_constexpr_fn (tree fun)
*** 1115,1120 ****
--- 1114,1122 ----
  		  require_potential_rvalue_constant_expression (body);
  		}
  	    }
+ 	  else if (body == NULL_TREE || body == error_mark_node)
+ 	    error ("body of %<constexpr%> function %qD not a return-statement",
+ 		   fun);
  	}
      }
  }
*************** cxx_dynamic_cast_fn_p (tree fndecl)
*** 2459,2465 ****
  {
    return (cxx_dialect >= cxx20
  	  && id_equal (DECL_NAME (fndecl), "__dynamic_cast")
! 	  && CP_DECL_CONTEXT (fndecl) == abi_node);
  }
  
  /* Often, we have an expression in the form of address + offset, e.g.
--- 2461,2471 ----
  {
    return (cxx_dialect >= cxx20
  	  && id_equal (DECL_NAME (fndecl), "__dynamic_cast")
! 	  && CP_DECL_CONTEXT (fndecl) == abi_node
! 	  /* Only consider implementation-detail __dynamic_cast calls that
! 	     correspond to a dynamic_cast, and ignore direct calls to
! 	     abi::__dynamic_cast.  */
! 	  && DECL_ARTIFICIAL (fndecl));
  }
  
  /* Often, we have an expression in the form of address + offset, e.g.
*************** cxx_eval_call_expression (const constexp
*** 3254,3259 ****
--- 3260,3275 ----
  	      *entry = new_call;
  	      entry->result (ctx->manifestly_const_eval) = unknown_type_node;
  	      fb.preserve ();
+ 
+ 	      /* Unshare args going into the hash table to separate them
+ 		 from the caller's context, for better GC and to avoid
+ 		 problems with verify_gimple.  */
+ 	      tree bound = new_call.bindings;
+ 	      for (int i = 0; i < TREE_VEC_LENGTH (bound); ++i)
+ 		{
+ 		  tree &arg = TREE_VEC_ELT (bound, i);
+ 		  arg = unshare_expr_without_location (arg);
+ 		}
  	    }
  	}
        /* Calls that are in progress have their result set to unknown_type_node,
*************** cxx_eval_call_expression (const constexp
*** 3312,3324 ****
  	      tree arg = TREE_VEC_ELT (bound, i);
  	      if (entry)
  		{
! 		  /* Unshare args going into the hash table to separate them
! 		     from the caller's context, for better GC and to avoid
! 		     problems with verify_gimple.  */
! 		  arg = unshare_expr_without_location (arg);
! 		  TREE_VEC_ELT (bound, i) = arg;
! 
! 		  /* And then unshare again so the callee doesn't change the
  		     argument values in the hash table. XXX Could we unshare
  		     lazily in cxx_eval_store_expression?  */
  		  arg = unshare_constructor (arg);
--- 3328,3334 ----
  	      tree arg = TREE_VEC_ELT (bound, i);
  	      if (entry)
  		{
! 		  /* Unshare again so the callee doesn't change the
  		     argument values in the hash table. XXX Could we unshare
  		     lazily in cxx_eval_store_expression?  */
  		  arg = unshare_constructor (arg);
*************** cxx_eval_vec_init_1 (const constexpr_ctx
*** 5746,5752 ****
  	  eltinit = (perform_implicit_conversion_flags
  		     (elttype, eltinit, complain,
  		      LOOKUP_IMPLICIT|LOOKUP_NO_NARROWING));
! 	  if (CLASS_TYPE_P (elttype) && new_ctx.object)
  	    /* Clarify what object is being initialized (118285).  */
  	    eltinit = build2 (INIT_EXPR, elttype, new_ctx.object, eltinit);
  	  eltinit = cxx_eval_constant_expression (&new_ctx, eltinit, lval,
--- 5756,5764 ----
  	  eltinit = (perform_implicit_conversion_flags
  		     (elttype, eltinit, complain,
  		      LOOKUP_IMPLICIT|LOOKUP_NO_NARROWING));
! 	  if (CLASS_TYPE_P (elttype)
! 	      && new_ctx.object
! 	      && !error_operand_p (eltinit))
  	    /* Clarify what object is being initialized (118285).  */
  	    eltinit = build2 (INIT_EXPR, elttype, new_ctx.object, eltinit);
  	  eltinit = cxx_eval_constant_expression (&new_ctx, eltinit, lval,
*************** cxx_eval_outermost_constant_expr (tree t
*** 9230,9235 ****
--- 9242,9258 ----
  	r = TARGET_EXPR_INITIAL (r);
      }
  
+   /* uid_sensitive_constexpr_evaluation_value restricts warning-dependent
+      constexpr evaluation to avoid unnecessary template instantiation, and is
+      always done with mce_unknown.  But due to gaps in the restriction logic
+      we may still end up taking an evaluation path that in turn requires
+      manifestly constant evaluation, and such evaluation must not be
+      restricted since it likely has semantic consequences.
+      TODO: Remove/replace the mechanism in GCC 17.  */
+   auto uids = make_temp_override (uid_sensitive_constexpr_evaluation_value);
+   if (ctx.manifestly_const_eval == mce_true)
+     uid_sensitive_constexpr_evaluation_value = false;
+ 
    auto_vec<tree, 16> cleanups;
    global_ctx.cleanups = &cleanups;
  
diff -Nrcpad gcc-15.2.0/gcc/cp/constraint.cc gcc-15.3.0/gcc/cp/constraint.cc
*** gcc-15.2.0/gcc/cp/constraint.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cp/constraint.cc	Fri Jun 12 06:09:06 2026
*************** struct GTY((for_user)) sat_entry
*** 1895,1900 ****
--- 1895,1904 ----
       the first time.  */
    tree result;
  
+   /* For a !ATOMIC_CONSTR_MAP_INSTANTIATED_P atom, this conveniently points to
+      the entry for the corresponding atom after instantiating its mapping.  */
+   sat_entry *inst_entry;
+ 
    /* The value of input_location when satisfaction of ATOM+ARGS was first
       performed.  */
    location_t location;
*************** satisfaction_cache
*** 2054,2059 ****
--- 2058,2064 ----
        entry->atom = atom;
        entry->args = args;
        entry->result = NULL_TREE;
+       entry->inst_entry = nullptr;
        entry->location = input_location;
        entry->ftc_begin = entry->ftc_end = -1;
        entry->diagnose_instability = false;
*************** satisfaction_cache::get ()
*** 2093,2102 ****
      {
        /* If we get here, it means satisfaction is self-recursive.  */
        gcc_checking_assert (!entry->result || seen_error ());
        if (info.noisy ())
! 	error_at (EXPR_LOCATION (ATOMIC_CONSTR_EXPR (entry->atom)),
  		  "satisfaction of atomic constraint %qE depends on itself",
! 		  entry->atom);
        return error_mark_node;
      }
  
--- 2098,2109 ----
      {
        /* If we get here, it means satisfaction is self-recursive.  */
        gcc_checking_assert (!entry->result || seen_error ());
+       /* Prefer printing the instantiated mapping.  */
+       tree atom = entry->inst_entry ? entry->inst_entry->atom : entry->atom;
        if (info.noisy ())
! 	error_at (EXPR_LOCATION (ATOMIC_CONSTR_EXPR (atom)),
  		  "satisfaction of atomic constraint %qE depends on itself",
! 		  atom);
        return error_mark_node;
      }
  
*************** satisfy_atom (tree t, tree args, sat_inf
*** 2416,2421 ****
--- 2423,2430 ----
    gcc_assert (!ATOMIC_CONSTR_MAP_INSTANTIATED_P (t));
    ATOMIC_CONSTR_MAP_INSTANTIATED_P (t) = true;
    satisfaction_cache inst_cache (t, /*args=*/NULL_TREE, info);
+   if (cache.entry && inst_cache.entry)
+     cache.entry->inst_entry = inst_cache.entry;
    if (tree r = inst_cache.get ())
      {
        cache.entry->location = inst_cache.entry->location;
diff -Nrcpad gcc-15.2.0/gcc/cp/coroutines.cc gcc-15.3.0/gcc/cp/coroutines.cc
*** gcc-15.2.0/gcc/cp/coroutines.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cp/coroutines.cc	Fri Jun 12 06:09:06 2026
*************** build_co_await (location_t loc, tree a,
*** 1431,1436 ****
--- 1431,1439 ----
        3. a coroutine handle, we execute the handle.resume() call.  */
    tree awsp_func = NULL_TREE;
    tree h_proxy = get_coroutine_self_handle_proxy (current_function_decl);
+   /* expand_one_await_expression will replace the argument with a prvalue call
+      to from_address, so pass an rvalue now as well.  */
+   h_proxy = move (h_proxy);
    vec<tree, va_gc> *args = make_tree_vector_single (h_proxy);
    tree awsp_call
      = build_new_method_call (e_proxy, awsp_meth, &args, NULL_TREE,
*************** expand_one_await_expression (tree *expr,
*** 2212,2218 ****
      build_new_method_call (dummy_ch, data->hfa_m, &args, NULL_TREE,
  			   LOOKUP_NORMAL, NULL, tf_warning_or_error));
    release_tree_vector (args);
!   CALL_EXPR_ARG (susp_call, call_expr_nargs (susp_call) - 1) = hfa;
  
    bool is_cont = false;
    /* NOTE: final suspend can't resume; the "resume" label in that case
--- 2215,2232 ----
      build_new_method_call (dummy_ch, data->hfa_m, &args, NULL_TREE,
  			   LOOKUP_NORMAL, NULL, tf_warning_or_error));
    release_tree_vector (args);
!   {
!     tree fn = get_callee_fndecl (susp_call);
!     int argno = 0 + DECL_OBJECT_MEMBER_FUNCTION_P (fn);
!     tree &arg = CALL_EXPR_ARG (susp_call, argno);
!     /* Handle await_suspend taking an unusual type (c++/123975).  */
!     tree type = TYPE_ARG_TYPES (TREE_TYPE (fn));
!     type = TREE_VALUE (chain_index (argno, type));
!     hfa = perform_implicit_conversion (type, hfa, tf_warning_or_error);
!     hfa = convert_for_arg_passing (type, hfa, tf_warning_or_error);
!     gcc_checking_assert (same_type_p (TREE_TYPE (arg), TREE_TYPE (hfa)));
!     arg = hfa;
!   }
  
    bool is_cont = false;
    /* NOTE: final suspend can't resume; the "resume" label in that case
*************** build_actor_fn (location_t loc, tree cor
*** 2624,2630 ****
    /* The destroy point numbered #1 is special, in that it is reached from a
       coroutine that is suspended after re-throwing from unhandled_exception().
       This label just invokes the cleanup of promise, param copies and the
!      frame itself.  */
    tree del_promise_label
      = create_named_label_with_ctx (loc, "coro.delete.promise", actor);
    finish_case_label (loc, build_int_cst (short_unsigned_type_node, 1),
--- 2638,2644 ----
    /* The destroy point numbered #1 is special, in that it is reached from a
       coroutine that is suspended after re-throwing from unhandled_exception().
       This label just invokes the cleanup of promise, param copies and the
!      frame itself, if the ramp isn't still keeping them alive.  */
    tree del_promise_label
      = create_named_label_with_ctx (loc, "coro.delete.promise", actor);
    finish_case_label (loc, build_int_cst (short_unsigned_type_node, 1),
*************** build_actor_fn (location_t loc, tree cor
*** 2718,2723 ****
--- 2732,2740 ----
    /* Add in our function body with the co_returns rewritten to final form.  */
    add_stmt (fnbody);
  
+   tree r = build_stmt (loc, LABEL_EXPR, del_promise_label);
+   add_stmt (r);
+ 
    /* We are done with the frame, but if the ramp still has a hold on it
       we should not cleanup.  So decrement the refcount and then return to
       the ramp if it is > 0.  */
*************** build_actor_fn (location_t loc, tree cor
*** 2727,2733 ****
    tree released = build2_loc (loc, MINUS_EXPR, short_unsigned_type_node,
  			      coro_frame_refcount,
  			      build_int_cst (short_unsigned_type_node, 1));
!   tree r = cp_build_modify_expr (loc, coro_frame_refcount, NOP_EXPR, released,
  				 tf_warning_or_error);
    finish_expr_stmt (r);
    tree cond = build2_loc (loc, NE_EXPR, short_unsigned_type_node,
--- 2744,2750 ----
    tree released = build2_loc (loc, MINUS_EXPR, short_unsigned_type_node,
  			      coro_frame_refcount,
  			      build_int_cst (short_unsigned_type_node, 1));
!   r = cp_build_modify_expr (loc, coro_frame_refcount, NOP_EXPR, released,
  				 tf_warning_or_error);
    finish_expr_stmt (r);
    tree cond = build2_loc (loc, NE_EXPR, short_unsigned_type_node,
*************** build_actor_fn (location_t loc, tree cor
*** 2740,2747 ****
    finish_if_stmt (ramp_cu_if);
  
    /* Otherwise, do the tail of the function; first cleanups.  */
-   r = build_stmt (loc, LABEL_EXPR, del_promise_label);
-   add_stmt (r);
  
    /* Destructors for the things we built explicitly.
       promise... */
--- 2757,2762 ----
*************** register_local_var_uses (tree *stmt, int
*** 4364,4369 ****
--- 4379,4386 ----
  	 identify them in the coroutine frame.  */
        tree lvname = DECL_NAME (lvar);
        char *buf = NULL;
+       if (name_independent_decl_p (lvar))
+ 	lvname = NULL_TREE;
  
        /* The outermost bind scope contains the artificial variables that
  	 we inject to implement the coro state machine.  We want to be able
*************** cp_coroutine_transform::build_ramp_funct
*** 5255,5260 ****
--- 5272,5294 ----
        push_cleanup (p, r, /*eh_only*/false);
      }
  
+   /* Now that we've constructed everything in the frame, consider it
+      used...  */
+   r = cp_build_modify_expr (loc, coro_frame_refcount, NOP_EXPR,
+ 			    build_int_cst (short_unsigned_type_node, 1),
+ 			    tf_warning_or_error);
+   finish_expr_stmt (r);
+   /* ... but when we finish we want to release that, and we want to do that
+      before the frame cleanups run.  But after the gro cleanup, in case it
+      calls destroy (PR121961).  */
+   tree released
+     = build2_loc (loc, MINUS_EXPR, short_unsigned_type_node,
+ 		  coro_frame_refcount,
+ 		  build_int_cst (short_unsigned_type_node, 1));
+   released = cp_build_modify_expr (loc, coro_frame_refcount, NOP_EXPR, released,
+ 				 tf_warning_or_error);
+   push_cleanup (NULL_TREE, released, /*eh_only*/false);
+ 
    tree get_ro
      = coro_build_promise_expression (orig_fn_decl, p,
  				     coro_get_return_object_identifier,
*************** cp_coroutine_transform::build_ramp_funct
*** 5316,5335 ****
  	push_cleanup (coro_gro, coro_gro_cleanup, /*eh_only*/false);
      }
  
!   /* Start the coroutine body, we now have a use of the frame...  */
!   r = cp_build_modify_expr (loc, coro_frame_refcount, NOP_EXPR,
! 			    build_int_cst (short_unsigned_type_node, 1),
! 			    tf_warning_or_error);
!   finish_expr_stmt (r);
!   /* ... but when we finish we want to release that, and we want to do that
!      before any of the other cleanups run.  */
!   tree released
!     = build2_loc (loc, MINUS_EXPR, short_unsigned_type_node, coro_frame_refcount,
! 		  build_int_cst (short_unsigned_type_node, 1));
!   released = cp_build_modify_expr (loc, coro_frame_refcount, NOP_EXPR, released,
! 				 tf_warning_or_error);
!   push_cleanup (NULL_TREE, released, /*eh_only*/false);
! 
    r = build_call_expr_loc (fn_start, resumer, 1, coro_fp);
    finish_expr_stmt (r);
  
--- 5350,5356 ----
  	push_cleanup (coro_gro, coro_gro_cleanup, /*eh_only*/false);
      }
  
!   /* Start the coroutine body.  */
    r = build_call_expr_loc (fn_start, resumer, 1, coro_fp);
    finish_expr_stmt (r);
  
diff -Nrcpad gcc-15.2.0/gcc/cp/cp-gimplify.cc gcc-15.3.0/gcc/cp/cp-gimplify.cc
*** gcc-15.2.0/gcc/cp/cp-gimplify.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cp/cp-gimplify.cc	Fri Jun 12 06:09:06 2026
*************** cp_gimplify_expr (tree *expr_p, gimple_s
*** 845,851 ****
  	  tree fntype = TREE_TYPE (CALL_EXPR_FN (*expr_p));
  	  if (INDIRECT_TYPE_P (fntype))
  	    fntype = TREE_TYPE (fntype);
! 	  if (TREE_CODE (fntype) == METHOD_TYPE)
  	    {
  	      int nargs = call_expr_nargs (*expr_p);
  	      bool side_effects = false;
--- 845,859 ----
  	  tree fntype = TREE_TYPE (CALL_EXPR_FN (*expr_p));
  	  if (INDIRECT_TYPE_P (fntype))
  	    fntype = TREE_TYPE (fntype);
! 	  tree decl = cp_get_callee_fndecl_nofold (*expr_p);
! 	  /* We can't just rely on 'decl' because virtual function callees
! 	     are expressed as OBJ_TYPE_REF.  Note that the xobj memfn check
! 	     will also hold for calls of the form (&A::f)(a, ...) which does
! 	     not require such sequencing, though it's allowed under
! 	     "indeterminately sequenced".  */
! 	  if (TREE_CODE (fntype) == METHOD_TYPE
! 	      || (decl && DECL_LANG_SPECIFIC (decl)
! 		  && DECL_XOBJ_MEMBER_FUNCTION_P (decl)))
  	    {
  	      int nargs = call_expr_nargs (*expr_p);
  	      bool side_effects = false;
diff -Nrcpad gcc-15.2.0/gcc/cp/cp-tree.h gcc-15.3.0/gcc/cp/cp-tree.h
*** gcc-15.2.0/gcc/cp/cp-tree.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cp/cp-tree.h	Fri Jun 12 06:09:06 2026
*************** extern tree make_constrained_auto		(tree
*** 7663,7668 ****
--- 7663,7669 ----
  extern tree make_constrained_decltype_auto	(tree, tree);
  extern tree make_template_placeholder		(tree);
  extern tree make_cast_auto			(void);
+ extern tree make_auto_pack			(void);
  extern bool template_placeholder_p		(tree);
  extern bool ctad_template_p			(tree);
  extern bool unparenthesized_id_or_class_member_access_p (tree);
diff -Nrcpad gcc-15.2.0/gcc/cp/cvt.cc gcc-15.3.0/gcc/cp/cvt.cc
*** gcc-15.2.0/gcc/cp/cvt.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cp/cvt.cc	Fri Jun 12 06:09:06 2026
*************** convert_to_void (tree expr, impl_conv_vo
*** 1204,1210 ****
  
    /* Explicitly evaluate void-converted concept checks since their
       satisfaction may produce ill-formed programs.  */
!    if (concept_check_p (expr))
       expr = evaluate_concept_check (expr);
  
    if (VOID_TYPE_P (TREE_TYPE (expr)))
--- 1204,1210 ----
  
    /* Explicitly evaluate void-converted concept checks since their
       satisfaction may produce ill-formed programs.  */
!    if (concept_check_p (expr) && !cp_unevaluated_operand)
       expr = evaluate_concept_check (expr);
  
    if (VOID_TYPE_P (TREE_TYPE (expr)))
diff -Nrcpad gcc-15.2.0/gcc/cp/decl.cc gcc-15.3.0/gcc/cp/decl.cc
*** gcc-15.2.0/gcc/cp/decl.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cp/decl.cc	Fri Jun 12 06:09:06 2026
*************** member_like_constrained_friend_p (tree d
*** 1012,1017 ****
--- 1012,1018 ----
  	  && DECL_UNIQUE_FRIEND_P (decl)
  	  && DECL_FRIEND_CONTEXT (decl)
  	  && get_constraints (decl)
+ 	  && CLASSTYPE_IMPLICIT_INSTANTIATION (DECL_FRIEND_CONTEXT (decl))
  	  && (!DECL_TEMPLATE_INFO (decl)
  	      || !PRIMARY_TEMPLATE_P (DECL_TI_TEMPLATE (decl))
  	      || (uses_outer_template_parms_in_constraints
*************** make_typename_type (tree context, tree n
*** 4546,4552 ****
  	   - the tag corresponds to a class-key or 'enum' so
  	     [basic.lookup.elab] applies, or
  	   - the tag corresponds to scope_type or tf_qualifying_scope is
! 	     set so [basic.lookup.qual]/1 applies.
  	 TODO: If we'd set/track the scope_type tag thoroughly on all
  	 TYPENAME_TYPEs that are followed by :: then we wouldn't need the
  	 tf_qualifying_scope flag.  */
--- 4547,4555 ----
  	   - the tag corresponds to a class-key or 'enum' so
  	     [basic.lookup.elab] applies, or
  	   - the tag corresponds to scope_type or tf_qualifying_scope is
! 	     set so [basic.lookup.qual]/1 applies, or
! 	   - we're inside a base-specifier so [class.derived.general]/2 applies;
! 	     the tag will already be class_type in that case.
  	 TODO: If we'd set/track the scope_type tag thoroughly on all
  	 TYPENAME_TYPEs that are followed by :: then we wouldn't need the
  	 tf_qualifying_scope flag.  */
*************** cp_finish_decl (tree decl, tree init, bo
*** 8942,8948 ****
  	      /* [basic.start.main]/3: A program that defines main as deleted
  		 is ill-formed.  */
  	      error ("%<::main%> cannot be deleted");
! 	      DECL_INITIAL (decl) = NULL_TREE;
  	    }
  	  else
  	    {
--- 8945,8951 ----
  	      /* [basic.start.main]/3: A program that defines main as deleted
  		 is ill-formed.  */
  	      error ("%<::main%> cannot be deleted");
! 	      DECL_INITIAL (decl) = error_mark_node;
  	    }
  	  else
  	    {
diff -Nrcpad gcc-15.2.0/gcc/cp/decl2.cc gcc-15.3.0/gcc/cp/decl2.cc
*** gcc-15.2.0/gcc/cp/decl2.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cp/decl2.cc	Fri Jun 12 06:09:06 2026
*************** min_vis_expr_r (tree *tp, int */*walk_su
*** 2862,2868 ****
  	  break;
  	}
      addressable:
!       if (! TREE_PUBLIC (t))
  	tpvis = VISIBILITY_ANON;
        else
  	tpvis = DECL_VISIBILITY (t);
--- 2862,2873 ----
  	  break;
  	}
      addressable:
!       if (decl_linkage (t) == lk_none)
! 	tpvis = type_visibility (TREE_TYPE (t));
!       /* Decls that have had their visibility constrained will report
! 	 as external linkage, but we still want to transitively constrain
! 	 if we refer to them, so just check TREE_PUBLIC instead.  */
!       else if (!TREE_PUBLIC (t))
  	tpvis = VISIBILITY_ANON;
        else
  	tpvis = DECL_VISIBILITY (t);
diff -Nrcpad gcc-15.2.0/gcc/cp/error.cc gcc-15.3.0/gcc/cp/error.cc
*** gcc-15.2.0/gcc/cp/error.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cp/error.cc	Fri Jun 12 06:09:06 2026
*************** dump_type (cxx_pretty_printer *pp, tree
*** 834,840 ****
        break;
  
      case NULLPTR_TYPE:
!       pp_string (pp, "std::nullptr_t");
        break;
  
      default:
--- 834,840 ----
        break;
  
      case NULLPTR_TYPE:
!       pp_cxx_ws_string (pp, "std::nullptr_t");
        break;
  
      default:
diff -Nrcpad gcc-15.2.0/gcc/cp/expr.cc gcc-15.3.0/gcc/cp/expr.cc
*** gcc-15.2.0/gcc/cp/expr.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cp/expr.cc	Fri Jun 12 06:09:06 2026
*************** mark_use (tree expr, bool rvalue_p, bool
*** 180,186 ****
  	    }
  	  tree r = mark_rvalue_use (ref, loc, reject_builtin);
  	  if (r != ref)
! 	    expr = convert_from_reference (r);
  	}
        break;
  
--- 180,195 ----
  	    }
  	  tree r = mark_rvalue_use (ref, loc, reject_builtin);
  	  if (r != ref)
! 	    {
! 	      if (!rvalue_p)
! 		{
! 		  /* Make sure we still return an lvalue.  */
! 		  gcc_assert (TREE_CODE (r) == NOP_EXPR);
! 		  TREE_TYPE (r) = cp_build_reference_type (TREE_TYPE (r),
! 							   false);
! 		}
! 	      expr = convert_from_reference (r);
! 	    }
  	}
        break;
  
diff -Nrcpad gcc-15.2.0/gcc/cp/init.cc gcc-15.3.0/gcc/cp/init.cc
*** gcc-15.2.0/gcc/cp/init.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cp/init.cc	Fri Jun 12 06:09:06 2026
*************** build_vec_init (tree base, tree maxindex
*** 4768,4773 ****
--- 4768,4790 ----
       some are non-constant.  */
    bool do_static_init = (DECL_P (obase) && TREE_STATIC (obase));
  
+   if (init
+       && TREE_CODE (init) == CONSTRUCTOR
+       && TREE_CODE (TREE_TYPE (init)) == ARRAY_TYPE
+       && INTEGRAL_TYPE_P (type)
+       && same_type_p (type, TREE_TYPE (TREE_TYPE (init))))
+     {
+       /* If RAW_DATA_CST is in the CONSTRUCTOR, we want to optimize
+ 	 INTEGER_CST, RAW_DATA_CST, INTEGER_CST into just
+ 	 RAW_DATA_CST larger by 2 chars if possible.  But at least
+ 	 for now punt if braced_lists_to_strings instead turns it
+ 	 into a STRING_CST in the try_const case, as the STRING_CST
+ 	 case doesn't handle try_const.  */
+       tree new_init = braced_lists_to_strings (TREE_TYPE (init), init);
+       if (!try_const || TREE_CODE (new_init) == CONSTRUCTOR)
+ 	init = new_init;
+     }
+ 
    bool empty_list = false;
    if (init && BRACE_ENCLOSED_INITIALIZER_P (init)
        && CONSTRUCTOR_NELTS (init) == 0)
*************** build_vec_init (tree base, tree maxindex
*** 4781,4786 ****
--- 4798,4808 ----
        /* Do non-default initialization of non-trivial arrays resulting from
  	 brace-enclosed initializers.  */
        unsigned HOST_WIDE_INT idx;
+       /* Used in RAW_DATA_CST handling below if we need to expand it
+ 	 (not digested char-sized integer type).  It is -1 when not peeling
+ 	 off such RAW_DATA_CST, otherwise indicates which index from
+ 	 the RAW_DATA_CST has been handled most recently.  */
+       unsigned int raw_idx = -1;
        tree field, elt;
        /* If the constructor already has the array type, it's been through
  	 digest_init, so we shouldn't try to do anything more.  */
*************** build_vec_init (tree base, tree maxindex
*** 4798,4810 ****
  
        FOR_EACH_CONSTRUCTOR_ELT (CONSTRUCTOR_ELTS (init), idx, field, elt)
  	{
- 	  tree baseref = build1 (INDIRECT_REF, type, base);
  	  tree one_init;
  
! 	  if (field && TREE_CODE (field) == RANGE_EXPR)
! 	    num_initialized_elts += range_expr_nelts (field);
! 	  else
! 	    num_initialized_elts++;
  
  	  /* We need to see sub-array TARGET_EXPR before cp_fold_r so we can
  	     handle cleanup flags properly.  */
--- 4820,4895 ----
  
        FOR_EACH_CONSTRUCTOR_ELT (CONSTRUCTOR_ELTS (init), idx, field, elt)
  	{
  	  tree one_init;
  
! 	  if (TREE_CODE (elt) == RAW_DATA_CST)
! 	    {
! 	      if (digested
! 		  && (TREE_CODE (type) == INTEGER_TYPE
! 		      || is_byte_access_type (type))
! 		  && TYPE_PRECISION (type) == CHAR_BIT)
! 		{
! 		  /* If possible, handle RAW_DATA_CST as ARRAY_TYPE
! 		     copy from ctor to MEM_REF.  */
! 		  tree atype
! 		    = build_array_of_n_type (type, RAW_DATA_LENGTH (elt));
! 		  tree alias_set
! 		    = build_int_cst (build_pointer_type (type), 0);
! 		  tree lhs = build2 (MEM_REF, atype, base, alias_set);
! 		  tree ctor
! 		    = build_constructor_single (atype, bitsize_zero_node,
! 						copy_node (elt));
! 		  one_init = build2 (MODIFY_EXPR, void_type_node, lhs, ctor);
! 
! 		  if (try_const)
! 		    {
! 		      if (!field)
! 			field = size_int (num_initialized_elts);
! 		      CONSTRUCTOR_APPEND_ELT (const_vec, field, elt);
! 		      if (do_static_init)
! 			one_init = NULL_TREE;
! 		    }
! 
! 		  if (one_init)
! 		    finish_expr_stmt (one_init);
! 
! 		  /* Adjust the counter and pointer.  */
! 		  tree length = build_int_cst (ptrdiff_type_node,
! 					       RAW_DATA_LENGTH (elt));
! 		  one_init = cp_build_binary_op (loc, MINUS_EXPR, iterator,
! 						 length, complain);
! 		  gcc_assert (one_init != error_mark_node);
! 		  one_init = build2 (MODIFY_EXPR, void_type_node, iterator,
! 				     one_init);
! 		  finish_expr_stmt (one_init);
! 
! 		  one_init = cp_build_binary_op (loc, PLUS_EXPR, base, length,
! 						 complain);
! 		  gcc_assert (one_init != error_mark_node);
! 		  one_init = build2 (MODIFY_EXPR, void_type_node, base,
! 				     one_init);
! 		  finish_expr_stmt (one_init);
! 
! 		  num_initialized_elts += RAW_DATA_LENGTH (elt);
! 		  continue;
! 		}
! 	      else
! 		{
! 		  /* Otherwise peel it off into separate constants.  */
! 		  tree orig_elt = elt;
! 		  elt = build_int_cst (TREE_TYPE (elt),
! 				       RAW_DATA_UCHAR_ELT (elt, ++raw_idx));
! 		  if (raw_idx && field)
! 		    field = size_binop (PLUS_EXPR, field,
! 					bitsize_int (raw_idx));
! 		  if (raw_idx + 1 == (unsigned) RAW_DATA_LENGTH (orig_elt))
! 		    raw_idx = -1;
! 		  else
! 		    --idx;
! 		}
! 	    }
! 
! 	  tree baseref = build1 (INDIRECT_REF, type, base);
  
  	  /* We need to see sub-array TARGET_EXPR before cp_fold_r so we can
  	     handle cleanup flags properly.  */
*************** build_vec_init (tree base, tree maxindex
*** 4825,4831 ****
  	  if (try_const)
  	    {
  	      if (!field)
! 		field = size_int (idx);
  	      tree e = maybe_constant_init (one_init);
  	      if (reduced_constant_expression_p (e))
  		{
--- 4910,4916 ----
  	  if (try_const)
  	    {
  	      if (!field)
! 		field = size_int (num_initialized_elts);
  	      tree e = maybe_constant_init (one_init);
  	      if (reduced_constant_expression_p (e))
  		{
*************** build_vec_init (tree base, tree maxindex
*** 4848,4853 ****
--- 4933,4953 ----
  		}
  	    }
  
+ 	  tree end = NULL_TREE, body = NULL_TREE;
+ 	  if (field && TREE_CODE (field) == RANGE_EXPR)
+ 	    {
+ 	      tree sub
+ 		= cp_build_binary_op (loc, MINUS_EXPR, iterator,
+ 				      build_int_cst (TREE_TYPE (iterator),
+ 						     range_expr_nelts (field)),
+ 				     complain);
+ 	      gcc_assert (sub != error_mark_node);
+ 	      end = get_internal_target_expr (sub);
+ 	      add_stmt (end);
+ 
+ 	      body = push_stmt_list ();
+ 	    }
+ 
  	  if (one_init)
  	    {
  	      /* Only create one std::allocator temporary.  */
*************** build_vec_init (tree base, tree maxindex
*** 4868,4873 ****
--- 4968,4987 ----
  	    errors = true;
  	  else
  	    finish_expr_stmt (one_init);
+ 
+ 	  if (field && TREE_CODE (field) == RANGE_EXPR)
+ 	    {
+ 	      tree exit = build1 (EXIT_EXPR, void_type_node,
+ 				  build2 (EQ_EXPR, boolean_type_node,
+ 					  iterator, TARGET_EXPR_SLOT (end)));
+ 	      add_stmt (exit);
+ 	      body = pop_stmt_list (body);
+ 	      tree loop = build1 (LOOP_EXPR, void_type_node, body);
+ 	      add_stmt (loop);
+ 	      num_initialized_elts += range_expr_nelts (field);
+ 	    }
+ 	  else
+ 	    num_initialized_elts++;
  	}
  
        /* Any elements without explicit initializers get T{}.  */
diff -Nrcpad gcc-15.2.0/gcc/cp/lambda.cc gcc-15.3.0/gcc/cp/lambda.cc
*** gcc-15.2.0/gcc/cp/lambda.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cp/lambda.cc	Fri Jun 12 06:09:06 2026
*************** lambda_capture_field_type (tree expr, bo
*** 222,239 ****
      type = TREE_TYPE (expr);
    else if (explicit_init_p)
      {
-       tree auto_node = make_auto ();
- 
-       type = auto_node;
-       if (by_reference_p)
- 	/* Add the reference now, so deduction doesn't lose
- 	   outermost CV qualifiers of EXPR.  */
- 	type = build_reference_type (type);
        if (uses_parameter_packs (expr))
! 	/* Stick with 'auto' even if the type could be deduced.  */
! 	TEMPLATE_TYPE_PARAMETER_PACK (auto_node) = true;
        else
! 	type = do_auto_deduction (type, expr, auto_node);
      }
    else if (!type_deducible_expression_p (expr))
      {
--- 222,244 ----
      type = TREE_TYPE (expr);
    else if (explicit_init_p)
      {
        if (uses_parameter_packs (expr))
! 	{
! 	  /* Stick with 'auto...' even if the type could be deduced.  */
! 	  type = make_auto_pack ();
! 	  if (by_reference_p)
! 	    type = build_reference_type (type);
! 	}
        else
! 	{
! 	  tree auto_node = make_auto ();
! 	  type = auto_node;
! 	  if (by_reference_p)
! 	    /* Add the reference now, so deduction doesn't lose
! 	       outermost CV qualifiers of EXPR.  */
! 	    type = build_reference_type (type);
! 	  type = do_auto_deduction (type, expr, auto_node);
! 	}
      }
    else if (!type_deducible_expression_p (expr))
      {
*************** lambda_expr_this_capture (tree lambda, i
*** 917,924 ****
    else
      {
        /* To make sure that current_class_ref is for the lambda.  */
!       gcc_assert (TYPE_MAIN_VARIANT (TREE_TYPE (current_class_ref))
! 		  == LAMBDA_EXPR_CLOSURE (lambda));
  
        result = this_capture;
  
--- 922,930 ----
    else
      {
        /* To make sure that current_class_ref is for the lambda.  */
!       gcc_assert (!current_class_ref
! 		  || (TYPE_MAIN_VARIANT (TREE_TYPE (current_class_ref))
! 		      == LAMBDA_EXPR_CLOSURE (lambda)));
  
        result = this_capture;
  
diff -Nrcpad gcc-15.2.0/gcc/cp/mangle.cc gcc-15.3.0/gcc/cp/mangle.cc
*** gcc-15.2.0/gcc/cp/mangle.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cp/mangle.cc	Fri Jun 12 06:09:06 2026
*************** unmangled_name_p (const tree decl)
*** 753,766 ****
      }
    else if (VAR_P (decl))
      {
        /* static variables are mangled.  */
        if (!DECL_EXTERNAL_LINKAGE_P (decl))
  	return false;
  
-       /* extern "C" declarations aren't mangled.  */
-       if (DECL_EXTERN_C_P (decl))
- 	return true;
- 
        /* Other variables at non-global scope are mangled.  */
        if (CP_DECL_CONTEXT (decl) != global_namespace)
  	return false;
--- 753,766 ----
      }
    else if (VAR_P (decl))
      {
+       /* extern "C" declarations aren't mangled.  */
+       if (DECL_NAMESPACE_SCOPE_P (decl) && DECL_EXTERN_C_P (decl))
+ 	return true;
+ 
        /* static variables are mangled.  */
        if (!DECL_EXTERNAL_LINKAGE_P (decl))
  	return false;
  
        /* Other variables at non-global scope are mangled.  */
        if (CP_DECL_CONTEXT (decl) != global_namespace)
  	return false;
*************** write_real_cst (const tree value)
*** 2161,2171 ****
    int i, limit, dir;
  
    tree type = TREE_TYPE (value);
!   int words = GET_MODE_BITSIZE (SCALAR_FLOAT_TYPE_MODE (type)) / 32;
  
    real_to_target (target_real, &TREE_REAL_CST (value),
  		  TYPE_MODE (type));
  
    /* The value in target_real is in the target word order,
       so we must write it out backward if that happens to be
       little-endian.  write_number cannot be used, it will
--- 2161,2184 ----
    int i, limit, dir;
  
    tree type = TREE_TYPE (value);
!   int bits = GET_MODE_BITSIZE (SCALAR_FLOAT_TYPE_MODE (type));
!   int words = bits / 32;
  
    real_to_target (target_real, &TREE_REAL_CST (value),
  		  TYPE_MODE (type));
  
+   if (words == 0)
+     {
+       /* _Float16 and std::bfloat16_t are the only supported types smaller than
+ 	 32 bits.  */
+       gcc_assert (bits == 16);
+       sprintf (buffer, "%04lx", (unsigned long) target_real[0]);
+       write_chars (buffer, 4);
+       return;
+     }
+ 
+   gcc_assert (bits % 32 == 0);
+ 
    /* The value in target_real is in the target word order,
       so we must write it out backward if that happens to be
       little-endian.  write_number cannot be used, it will
*************** write_type (tree type)
*** 2675,2683 ****
  	      break;
  
  	    case PACK_INDEX_TYPE:
! 	      /* TODO Mangle pack indexing
! 		 <https://github.com/itanium-cxx-abi/cxx-abi/issues/175>.  */
! 	      sorry ("mangling type pack index");
  	      break;
  
  	    case LANG_TYPE:
--- 2688,2708 ----
  	      break;
  
  	    case PACK_INDEX_TYPE:
! 	      /* https://github.com/itanium-cxx-abi/cxx-abi/issues/175.  */
! 	      write_string ("Dy");
! 	      if (TREE_CODE (PACK_INDEX_PACK (type)) == TREE_VEC)
! 		{
! 		  write_char ('J');
! 		  for (int i = 0; i < TREE_VEC_LENGTH (PACK_INDEX_PACK (type));
! 		       ++i)
! 		    write_template_arg (TREE_VEC_ELT (PACK_INDEX_PACK (type),
! 						      i));
! 		  write_char ('E');
! 		}
! 	      else
! 		/* Dy rather than DyDp.  */
! 		write_type (PACK_EXPANSION_PATTERN (PACK_INDEX_PACK (type)));
! 	      write_expression (PACK_INDEX_INDEX (type));
  	      break;
  
  	    case LANG_TYPE:
*************** write_expression (tree expr)
*** 3532,3537 ****
--- 3557,3579 ----
        else
  	goto normal_expr;
      }
+   else if (code == PACK_INDEX_EXPR)
+     {
+       /* https://github.com/itanium-cxx-abi/cxx-abi/issues/175.  */
+       write_string ("sy");
+       if (TREE_CODE (PACK_INDEX_PACK (expr)) == TREE_VEC)
+ 	{
+ 	  write_char ('J');
+ 	  for (int i = 0; i < TREE_VEC_LENGTH (PACK_INDEX_PACK (expr));
+ 	       ++i)
+ 	    write_template_arg (TREE_VEC_ELT (PACK_INDEX_PACK (expr), i));
+ 	  write_char ('E');
+ 	}
+       else
+ 	/* sy rather than sysp.  */
+ 	write_expression (PACK_EXPANSION_PATTERN (PACK_INDEX_PACK (expr)));
+       write_expression (PACK_INDEX_INDEX (expr));
+     }
    else if (TREE_CODE (expr) == ALIGNOF_EXPR)
      {
        if (!ALIGNOF_EXPR_STD_P (expr))
diff -Nrcpad gcc-15.2.0/gcc/cp/method.cc gcc-15.3.0/gcc/cp/method.cc
*** gcc-15.2.0/gcc/cp/method.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cp/method.cc	Fri Jun 12 06:09:06 2026
*************** synthesize_method (tree fndecl)
*** 1851,1856 ****
--- 1851,1859 ----
    finish_function_body (stmt);
    finish_function (/*inline_p=*/false);
  
+   /* Remember that we were defined in this module.  */
+   set_instantiating_module (fndecl);
+ 
    if (!DECL_DELETED_FN (fndecl))
      expand_or_defer_fn (fndecl);
  
diff -Nrcpad gcc-15.2.0/gcc/cp/module.cc gcc-15.3.0/gcc/cp/module.cc
*** gcc-15.2.0/gcc/cp/module.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cp/module.cc	Fri Jun 12 06:09:06 2026
*************** vec<tree, va_heap, vl_embed> *post_load_
*** 2789,2794 ****
--- 2789,2796 ----
  typedef hash_map<tree, auto_vec<tree>> keyed_map_t;
  static keyed_map_t *keyed_table;
  
+ static tree get_keyed_decl_scope (tree);
+ 
  /* Instantiations of temploid friends imported from another module
     need to be attached to the same module as the temploid.  This maps
     these decls to the temploid they are instantiated from, as there is
*************** private:
*** 2952,2957 ****
--- 2954,2960 ----
    vec<tree> back_refs;		/* Back references.  */
    duplicate_hash_map *duplicates;	/* Map from existings to duplicate.  */
    vec<post_process_data> post_decls;	/* Decls to post process.  */
+   vec<tree> post_types;		/* Types to post process.  */
    unsigned unused;		/* Inhibit any interior TREE_USED
  				   marking.  */
  
*************** public:
*** 3056,3067 ****
--- 3059,3081 ----
    {
      return post_decls;
    }
+   /* Return the types to postprocess.  */
+   const vec<tree>& post_process_type ()
+   {
+     return post_types;
+   }
  private:
    /* Register DATA for postprocessing.  */
    void post_process (post_process_data data)
    {
      post_decls.safe_push (data);
    }
+   /* Register TYPE for postprocessing.  */
+   void post_process_type (tree type)
+   {
+     gcc_checking_assert (TYPE_P (type));
+     post_types.safe_push (type);
+   }
  
  private:
    void assert_definition (tree, bool installing);
*************** trees_in::trees_in (module_state *state)
*** 3074,3079 ****
--- 3088,3094 ----
    duplicates = NULL;
    back_refs.create (500);
    post_decls.create (0);
+   post_types.create (0);
  }
  
  trees_in::~trees_in ()
*************** trees_in::~trees_in ()
*** 3081,3086 ****
--- 3096,3102 ----
    delete (duplicates);
    back_refs.release ();
    post_decls.release ();
+   post_types.release ();
  }
  
  /* Tree stream writer.  */
*************** enum module_directness {
*** 3650,3656 ****
    MD_NONE,  		/* Not direct.  */
    MD_PARTITION_DIRECT,	/* Direct import of a partition.  */
    MD_DIRECT,		/* Direct import.  */
!   MD_PURVIEW_DIRECT,	/* direct import in purview.  */
  };
  
  /* State of a particular module. */
--- 3666,3672 ----
    MD_NONE,  		/* Not direct.  */
    MD_PARTITION_DIRECT,	/* Direct import of a partition.  */
    MD_DIRECT,		/* Direct import.  */
!   MD_PURVIEW_DIRECT,	/* Direct import in purview.  */
  };
  
  /* State of a particular module. */
*************** maybe_add_cmi_prefix (const char *to, si
*** 4882,4889 ****
  static void
  create_dirs (char *path)
  {
    /* Try and create the missing directories.  */
!   for (char *base = path; *base; base++)
      if (IS_DIR_SEPARATOR (*base))
        {
  	char sep = *base;
--- 4898,4910 ----
  static void
  create_dirs (char *path)
  {
+   char *base = path;
+   /* Skip past initial slashes of absolute path.  */
+   while (IS_DIR_SEPARATOR (*base))
+     base++;
+ 
    /* Try and create the missing directories.  */
!   for (; *base; base++)
      if (IS_DIR_SEPARATOR (*base))
        {
  	char sep = *base;
*************** trees_out::core_vals (tree t)
*** 6400,6412 ****
  	if (has_warning_spec (t))
  	  u (get_warning_spec (t));
  
-       /* Walk in forward order, as (for instance) REQUIRES_EXPR has a
-          bunch of unscoped parms on its first operand.  It's safer to
-          create those in order.  */
        bool vl = TREE_CODE_CLASS (code) == tcc_vl_exp;
!       for (unsigned limit = (vl ? VL_EXP_OPERAND_LENGTH (t)
! 			     : TREE_OPERAND_LENGTH (t)),
! 	     ix = unsigned (vl); ix != limit; ix++)
  	WT (TREE_OPERAND (t, ix));
      }
    else
--- 6421,6439 ----
  	if (has_warning_spec (t))
  	  u (get_warning_spec (t));
  
        bool vl = TREE_CODE_CLASS (code) == tcc_vl_exp;
!       unsigned limit = (vl ? VL_EXP_OPERAND_LENGTH (t)
! 			: TREE_OPERAND_LENGTH (t));
!       unsigned ix = unsigned (vl);
!       if (code == REQUIRES_EXPR)
! 	{
! 	  /* The first operand of a REQUIRES_EXPR is a tree chain
! 	     of PARM_DECLs.  We need to stream this separately as
! 	     otherwise we would only stream the first one.  */
! 	  chained_decls (REQUIRES_EXPR_PARMS (t));
! 	  ++ix;
! 	}
!       for (; ix != limit; ix++)
  	WT (TREE_OPERAND (t, ix));
      }
    else
*************** trees_out::core_vals (tree t)
*** 6688,6693 ****
--- 6715,6721 ----
        WT (((lang_tree_node *)t)->baselink.binfo);
        WT (((lang_tree_node *)t)->baselink.functions);
        WT (((lang_tree_node *)t)->baselink.access_binfo);
+       WT (((lang_tree_node *)t)->baselink.common.chain);
        break;
  
      case CONSTRAINT_INFO:
*************** trees_in::core_vals (tree t)
*** 6981,6989 ****
  	put_warning_spec (t, u ());
  
        bool vl = TREE_CODE_CLASS (code) == tcc_vl_exp;
!       for (unsigned limit = (vl ? VL_EXP_OPERAND_LENGTH (t)
! 			     : TREE_OPERAND_LENGTH (t)),
! 	     ix = unsigned (vl); ix != limit; ix++)
  	RTU (TREE_OPERAND (t, ix));
      }
  
--- 7009,7023 ----
  	put_warning_spec (t, u ());
  
        bool vl = TREE_CODE_CLASS (code) == tcc_vl_exp;
!       unsigned limit = (vl ? VL_EXP_OPERAND_LENGTH (t)
! 			: TREE_OPERAND_LENGTH (t));
!       unsigned ix = unsigned (vl);
!       if (code == REQUIRES_EXPR)
! 	{
! 	  REQUIRES_EXPR_PARMS (t) = chained_decls ();
! 	  ++ix;
! 	}
!       for (; ix != limit; ix++)
  	RTU (TREE_OPERAND (t, ix));
      }
  
*************** trees_in::core_vals (tree t)
*** 7257,7262 ****
--- 7291,7297 ----
        RT (((lang_tree_node *)t)->baselink.binfo);
        RTU (((lang_tree_node *)t)->baselink.functions);
        RT (((lang_tree_node *)t)->baselink.access_binfo);
+       RT (((lang_tree_node *)t)->baselink.common.chain);
        break;
  
      case CONSTRAINT_INFO:
*************** trees_in::install_entity (tree decl)
*** 8109,8115 ****
    if (!DECL_LANG_SPECIFIC (not_tmpl)
        || !DECL_MODULE_ENTITY_P (not_tmpl))
      {
!       retrofit_lang_decl (not_tmpl);
        DECL_MODULE_ENTITY_P (not_tmpl) = true;
  
        /* Insert into the entity hash (it cannot already be there).  */
--- 8144,8156 ----
    if (!DECL_LANG_SPECIFIC (not_tmpl)
        || !DECL_MODULE_ENTITY_P (not_tmpl))
      {
!       /* We don't want to use retrofit_lang_decl directly so that we aren't
! 	 affected by the language state when we load in.  */
!       if (!DECL_LANG_SPECIFIC (not_tmpl))
! 	{
! 	  maybe_add_lang_decl_raw (not_tmpl, false);
! 	  SET_DECL_LANGUAGE (not_tmpl, lang_cplusplus);
! 	}
        DECL_MODULE_ENTITY_P (not_tmpl) = true;
  
        /* Insert into the entity hash (it cannot already be there).  */
*************** trees_out::tree_node (tree t)
*** 10007,10015 ****
  	      break;
  
  	    case PARM_DECL:
! 	      /* REQUIRES_EXPRs have a tree list of uncontexted
! 		 PARM_DECLS.  It'd be nice if they had a
! 		 distinguishing flag to double check.  */
  	      break;
  	    }
  	  goto by_value;
--- 10048,10057 ----
  	      break;
  
  	    case PARM_DECL:
! 	      /* REQUIRES_EXPRs have a chain of uncontexted PARM_DECLS,
! 		 and an implicit this parm in an NSDMI has no context.  */
! 	      gcc_checking_assert (CONSTRAINT_VAR_P (t)
! 				   || DECL_NAME (t) == this_identifier);
  	      break;
  	    }
  	  goto by_value;
*************** trees_in::tree_node (bool is_use)
*** 10175,10184 ****
  
  	  case ARRAY_TYPE:
  	    {
  	      tree domain = tree_node ();
  	      int dep = u ();
  	      if (!get_overrun ())
! 		res = build_cplus_array_type (res, domain, dep);
  	    }
  	    break;
  
--- 10217,10239 ----
  
  	  case ARRAY_TYPE:
  	    {
+ 	      tree elt_type = res;
  	      tree domain = tree_node ();
  	      int dep = u ();
  	      if (!get_overrun ())
! 		{
! 		  res = build_cplus_array_type (elt_type, domain, dep);
! 		  /* If we're an array of an incomplete imported type,
! 		     save it for post-processing so that we can attempt
! 		     to complete the type later if it will get a
! 		     definition later in the cluster.  */
! 		  if (!dep
! 		      && !COMPLETE_TYPE_P (elt_type)
! 		      && CLASS_TYPE_P (elt_type)
! 		      && DECL_LANG_SPECIFIC (TYPE_NAME (elt_type))
! 		      && DECL_MODULE_IMPORT_P (TYPE_NAME (elt_type)))
! 		    post_process_type (res);
! 		}
  	    }
  	    break;
  
*************** trees_out::get_merge_kind (tree decl, de
*** 11269,11288 ****
  	    if (DECL_IMPLICIT_TYPEDEF_P (STRIP_TEMPLATE (decl))
  		&& LAMBDA_TYPE_P (TREE_TYPE (decl)))
  	      {
! 		if (tree scope = LAMBDA_TYPE_EXTRA_SCOPE (TREE_TYPE (decl)))
! 		  {
! 		    /* Lambdas attached to fields are keyed to its class.  */
! 		    if (TREE_CODE (scope) == FIELD_DECL)
! 		      scope = TYPE_NAME (DECL_CONTEXT (scope));
! 		    if (DECL_LANG_SPECIFIC (scope)
! 			&& DECL_MODULE_KEYED_DECLS_P (scope))
! 		      {
! 			mk = MK_keyed;
! 			break;
! 		      }
! 		  }
! 		/* Lambdas not attached to any mangling scope are TU-local.  */
! 		mk = MK_unique;
  		break;
  	      }
  
--- 11324,11335 ----
  	    if (DECL_IMPLICIT_TYPEDEF_P (STRIP_TEMPLATE (decl))
  		&& LAMBDA_TYPE_P (TREE_TYPE (decl)))
  	      {
! 		if (get_keyed_decl_scope (decl))
! 		  mk = MK_keyed;
! 		else
! 		  /* Lambdas not attached to any mangling scope are TU-local
! 		     and so cannot be deduplicated.  */
! 		  mk = MK_unique;
  		break;
  	      }
  
*************** trees_out::key_mergeable (int tag, merge
*** 11583,11598 ****
  
  	case MK_keyed:
  	  {
! 	    gcc_checking_assert (LAMBDA_TYPE_P (TREE_TYPE (inner)));
! 	    tree scope = LAMBDA_TYPE_EXTRA_SCOPE (TREE_TYPE (inner));
! 	    gcc_checking_assert (TREE_CODE (scope) == VAR_DECL
! 				 || TREE_CODE (scope) == FIELD_DECL
! 				 || TREE_CODE (scope) == PARM_DECL
! 				 || TREE_CODE (scope) == TYPE_DECL
! 				 || TREE_CODE (scope) == CONCEPT_DECL);
! 	    /* Lambdas attached to fields are keyed to the class.  */
! 	    if (TREE_CODE (scope) == FIELD_DECL)
! 	      scope = TYPE_NAME (DECL_CONTEXT (scope));
  	    auto *root = keyed_table->get (scope);
  	    unsigned ix = root->length ();
  	    /* If we don't find it, we'll write a really big number
--- 11630,11638 ----
  
  	case MK_keyed:
  	  {
! 	    tree scope = get_keyed_decl_scope (inner);
! 	    gcc_checking_assert (scope);
! 
  	    auto *root = keyed_table->get (scope);
  	    unsigned ix = root->length ();
  	    /* If we don't find it, we'll write a really big number
*************** trees_in::key_mergeable (int tag, merge_
*** 11932,11943 ****
  
  	  case TYPE_DECL:
  	    gcc_checking_assert (!is_imported_temploid_friend);
  	    if (is_attached && !(state->is_module () || state->is_partition ())
! 		/* Implicit member functions can come from
! 		   anywhere.  */
! 		&& !(DECL_ARTIFICIAL (decl)
! 		     && TREE_CODE (decl) == FUNCTION_DECL
! 		     && !DECL_THUNK_P (decl)))
  	      kind = "unique";
  	    else
  	      {
--- 11972,11988 ----
  
  	  case TYPE_DECL:
  	    gcc_checking_assert (!is_imported_temploid_friend);
+ 	    int use_tmpl = 0;
  	    if (is_attached && !(state->is_module () || state->is_partition ())
! 		/* Implicit or in-class defaulted member functions
! 		   can come from anywhere.  */
! 		&& !(TREE_CODE (decl) == FUNCTION_DECL
! 		     && !DECL_THUNK_P (decl)
! 		     && DECL_DEFAULTED_FN (decl)
! 		     && !DECL_DEFAULTED_OUTSIDE_CLASS_P (decl))
! 		/* As can members of template specialisations.  */
! 		&& !(node_template_info (container, use_tmpl)
! 		     && use_tmpl != 0))
  	      kind = "unique";
  	    else
  	      {
*************** trees_in::is_matching_decl (tree existin
*** 12148,12154 ****
  
    // FIXME: do more precise errors at point of mismatch
    const char *mismatch_msg = nullptr;
!   if (TREE_CODE (d_inner) == FUNCTION_DECL)
      {
        tree e_ret = fndecl_declared_return_type (existing);
        tree d_ret = fndecl_declared_return_type (decl);
--- 12193,12207 ----
  
    // FIXME: do more precise errors at point of mismatch
    const char *mismatch_msg = nullptr;
! 
!   if (VAR_OR_FUNCTION_DECL_P (d_inner)
!       && DECL_EXTERN_C_P (d_inner) != DECL_EXTERN_C_P (e_inner))
!     {
!       mismatch_msg = G_("conflicting language linkage for imported "
! 			"declaration %#qD");
!       goto mismatch;
!     }
!   else if (TREE_CODE (d_inner) == FUNCTION_DECL)
      {
        tree e_ret = fndecl_declared_return_type (existing);
        tree d_ret = fndecl_declared_return_type (decl);
*************** trees_in::is_matching_decl (tree existin
*** 12165,12177 ****
        tree e_type = TREE_TYPE (e_inner);
        tree d_type = TREE_TYPE (d_inner);
  
-       if (DECL_EXTERN_C_P (d_inner) != DECL_EXTERN_C_P (e_inner))
- 	{
- 	  mismatch_msg = G_("conflicting language linkage for imported "
- 			    "declaration %#qD");
- 	  goto mismatch;
- 	}
- 
        for (tree e_args = TYPE_ARG_TYPES (e_type),
  	     d_args = TYPE_ARG_TYPES (d_type);
  	   e_args != d_args && (e_args || d_args);
--- 12218,12223 ----
*************** trees_in::is_matching_decl (tree existin
*** 12200,12211 ****
        tree d_spec = TYPE_RAISES_EXCEPTIONS (d_type);
        if (DECL_MAYBE_DELETED (e_inner) || DEFERRED_NOEXCEPT_SPEC_P (e_spec))
  	{
! 	  if (!DEFERRED_NOEXCEPT_SPEC_P (d_spec)
  	      || (UNEVALUATED_NOEXCEPT_SPEC_P (e_spec)
  		  && !UNEVALUATED_NOEXCEPT_SPEC_P (d_spec)))
  	    {
  	      dump (dumper::MERGE)
  		&& dump ("Propagating instantiated noexcept to %N", existing);
  	      TREE_TYPE (existing) = d_type;
  
  	      /* Propagate to existing clones.  */
--- 12246,12259 ----
        tree d_spec = TYPE_RAISES_EXCEPTIONS (d_type);
        if (DECL_MAYBE_DELETED (e_inner) || DEFERRED_NOEXCEPT_SPEC_P (e_spec))
  	{
! 	  if (!(DECL_MAYBE_DELETED (d_inner)
! 		|| DEFERRED_NOEXCEPT_SPEC_P (d_spec))
  	      || (UNEVALUATED_NOEXCEPT_SPEC_P (e_spec)
  		  && !UNEVALUATED_NOEXCEPT_SPEC_P (d_spec)))
  	    {
  	      dump (dumper::MERGE)
  		&& dump ("Propagating instantiated noexcept to %N", existing);
+ 	      gcc_checking_assert (existing == e_inner);
  	      TREE_TYPE (existing) = d_type;
  
  	      /* Propagate to existing clones.  */
*************** trees_in::is_matching_decl (tree existin
*** 12231,12237 ****
  
        /* Similarly if EXISTING has an undeduced return type, but DECL's
  	 is already deduced.  */
!       if (undeduced_auto_decl (existing) && !undeduced_auto_decl (decl))
  	{
  	  dump (dumper::MERGE)
  	    && dump ("Propagating deduced return type to %N", existing);
--- 12279,12287 ----
  
        /* Similarly if EXISTING has an undeduced return type, but DECL's
  	 is already deduced.  */
!       bool e_undeduced = undeduced_auto_decl (existing);
!       bool d_undeduced = undeduced_auto_decl (decl);
!       if (e_undeduced && !d_undeduced)
  	{
  	  dump (dumper::MERGE)
  	    && dump ("Propagating deduced return type to %N", existing);
*************** trees_in::is_matching_decl (tree existin
*** 12239,12244 ****
--- 12289,12296 ----
  	  DECL_SAVED_AUTO_RETURN_TYPE (existing) = TREE_TYPE (e_type);
  	  TREE_TYPE (existing) = change_return_type (TREE_TYPE (d_type), e_type);
  	}
+       else if (d_undeduced && !e_undeduced)
+ 	/* EXISTING was deduced, leave it alone.  */;
        else if (type_uses_auto (d_ret)
  	       && !same_type_p (TREE_TYPE (d_type), TREE_TYPE (e_type)))
  	{
*************** trees_in::read_function_def (tree decl,
*** 12771,12776 ****
--- 12823,12835 ----
        DECL_INITIAL (decl) = initial;
        DECL_SAVED_TREE (decl) = saved;
  
+       /* Some entities (like anticipated builtins) were declared without
+ 	 DECL_ARGUMENTS, so update them now.  But don't do it if there's
+ 	 already an argument list, because we've already built the
+ 	 definition referencing those merged PARM_DECLs.  */
+       if (!DECL_ARGUMENTS (decl))
+ 	DECL_ARGUMENTS (decl) = DECL_ARGUMENTS (maybe_dup);
+ 
        if (context)
  	SET_DECL_FRIEND_CONTEXT (decl, context);
        if (cexpr.decl)
*************** trees_in::read_var_def (tree decl, tree
*** 12852,12863 ****
  	  if (DECL_EXPLICIT_INSTANTIATION (decl)
  	      && !DECL_EXTERNAL (decl))
  	    setup_explicit_instantiation_definition_linkage (decl);
! 	  if (DECL_IMPLICIT_INSTANTIATION (decl)
! 	      || (DECL_EXPLICIT_INSTANTIATION (decl)
! 		  && !DECL_EXTERNAL (decl))
! 	      || (DECL_CLASS_SCOPE_P (decl)
! 		  && !DECL_VTABLE_OR_VTT_P (decl)
! 		  && !DECL_TEMPLATE_INFO (decl)))
  	    note_vague_linkage_variable (decl);
  	}
        if (!dyn_init)
--- 12911,12923 ----
  	  if (DECL_EXPLICIT_INSTANTIATION (decl)
  	      && !DECL_EXTERNAL (decl))
  	    setup_explicit_instantiation_definition_linkage (decl);
! 	  /* Class non-template static members are handled in read_class_def.
! 	     But still handle specialisations of member templates.  */
! 	  if ((!DECL_CLASS_SCOPE_P (decl)
! 	       || primary_template_specialization_p (decl))
! 	      && (DECL_IMPLICIT_INSTANTIATION (decl)
! 		  || (DECL_EXPLICIT_INSTANTIATION (decl)
! 		      && !DECL_EXTERNAL (decl))))
  	    note_vague_linkage_variable (decl);
  	}
        if (!dyn_init)
*************** trees_in::read_class_def (tree defn, tre
*** 13271,13276 ****
--- 13331,13340 ----
  			DECL_ACCESS (d) = tree_cons (type, access, list);
  		    }
  		}
+ 
+ 	      if (TREE_CODE (decl) == VAR_DECL
+ 		  && TREE_CODE (maybe_template) != TEMPLATE_DECL)
+ 		note_vague_linkage_variable (decl);
  	    }
  	}
  
*************** depset::hash::add_dependency (depset *de
*** 14222,14230 ****
       details.  */
    if (writing_merge_key)
      {
!       dep->set_flag_bit<DB_MAYBE_RECURSIVE_BIT> ();
!       if (!current->is_maybe_recursive ())
  	current->set_flag_bit<DB_ENTRY_BIT> ();
      }
  
    if (dep->is_unreached ())
--- 14286,14295 ----
       details.  */
    if (writing_merge_key)
      {
!       if (!dep->is_maybe_recursive () && !current->is_maybe_recursive ())
  	current->set_flag_bit<DB_ENTRY_BIT> ();
+       dep->set_flag_bit<DB_MAYBE_RECURSIVE_BIT> ();
+       current->set_flag_bit<DB_MAYBE_RECURSIVE_BIT> ();
      }
  
    if (dep->is_unreached ())
*************** module_state::read_imports (bytes_in &se
*** 16103,16110 ****
  
  	  if (is_partition ())
  	    {
! 	      if (!imp->is_direct ())
! 		imp->directness = MD_PARTITION_DIRECT;
  	      if (exportedness > 0)
  		imp->exported_p = true;
  	    }
--- 16168,16178 ----
  
  	  if (is_partition ())
  	    {
! 	      if (!imp->is_direct () && !imp->is_partition_direct ())
! 		{
! 		  imp->directness = MD_PARTITION_DIRECT;
! 		  linemap_module_reparent (line_table, imp->loc, floc);
! 		}
  	      if (exportedness > 0)
  		imp->exported_p = true;
  	    }
*************** module_state::read_cluster (unsigned snu
*** 16820,16826 ****
  	      && DECL_NOT_REALLY_EXTERN (decl))
  	    DECL_EXTERNAL (decl) = false;
  	}
! 
      }
    /* Look, function.cc's interface to cfun does too much for us, we
       just need to restore the old value.  I do not want to go
--- 16888,16900 ----
  	      && DECL_NOT_REALLY_EXTERN (decl))
  	    DECL_EXTERNAL (decl) = false;
  	}
!     }
!   for (const tree& type : sec.post_process_type ())
!     {
!       /* Attempt to complete an array type now in case its element type
! 	 had a definition streamed later in the cluster.  */
!       gcc_checking_assert (TREE_CODE (type) == ARRAY_TYPE);
!       complete_type (type);
      }
    /* Look, function.cc's interface to cfun does too much for us, we
       just need to restore the old value.  I do not want to go
*************** module_may_redeclare (tree olddecl, tree
*** 20641,20647 ****
      // FIXME: Should we be checking this in more places on the scope chain?
      return true;
  
!   module_state *old_mod = (*modules)[0];
    module_state *new_mod = old_mod;
  
    tree old_origin = get_originating_module_decl (decl);
--- 20715,20721 ----
      // FIXME: Should we be checking this in more places on the scope chain?
      return true;
  
!   module_state *old_mod = get_primary ((*modules)[0]);
    module_state *new_mod = old_mod;
  
    tree old_origin = get_originating_module_decl (decl);
*************** module_may_redeclare (tree olddecl, tree
*** 20651,20657 ****
    if (DECL_LANG_SPECIFIC (old_inner) && DECL_MODULE_IMPORT_P (old_inner))
      {
        unsigned index = import_entity_index (old_origin);
!       old_mod = import_entity_module (index);
      }
  
    bool newdecl_attached_p = module_attach_p ();
--- 20725,20731 ----
    if (DECL_LANG_SPECIFIC (old_inner) && DECL_MODULE_IMPORT_P (old_inner))
      {
        unsigned index = import_entity_index (old_origin);
!       old_mod = get_primary (import_entity_module (index));
      }
  
    bool newdecl_attached_p = module_attach_p ();
*************** module_may_redeclare (tree olddecl, tree
*** 20664,20670 ****
        if (DECL_LANG_SPECIFIC (new_inner) && DECL_MODULE_IMPORT_P (new_inner))
  	{
  	  unsigned index = import_entity_index (new_origin);
! 	  new_mod = import_entity_module (index);
  	}
      }
  
--- 20738,20744 ----
        if (DECL_LANG_SPECIFIC (new_inner) && DECL_MODULE_IMPORT_P (new_inner))
  	{
  	  unsigned index = import_entity_index (new_origin);
! 	  new_mod = get_primary (import_entity_module (index));
  	}
      }
  
*************** module_may_redeclare (tree olddecl, tree
*** 20675,20682 ****
  	/* Both are GM entities, OK.  */
  	return true;
  
!       if (new_mod == old_mod
! 	  || (new_mod && get_primary (new_mod) == get_primary (old_mod)))
  	/* Both attached to same named module, OK.  */
  	return true;
      }
--- 20749,20755 ----
  	/* Both are GM entities, OK.  */
  	return true;
  
!       if (new_mod == old_mod)
  	/* Both attached to same named module, OK.  */
  	return true;
      }
*************** set_defining_module_for_partial_spec (tr
*** 20819,20830 ****
      vec_safe_push (partial_specializations, decl);
  }
  
  void
  set_originating_module (tree decl, bool friend_p ATTRIBUTE_UNUSED)
  {
    set_instantiating_module (decl);
  
!   if (!DECL_NAMESPACE_SCOPE_P (decl))
      return;
  
    gcc_checking_assert (friend_p || decl == get_originating_module_decl (decl));
--- 20892,20909 ----
      vec_safe_push (partial_specializations, decl);
  }
  
+ /* Record that DECL is declared in this TU, and note attachment and
+    exporting for namespace-scope entities.  FRIEND_P is true if
+    this is a friend declaration.  */
+ 
  void
  set_originating_module (tree decl, bool friend_p ATTRIBUTE_UNUSED)
  {
    set_instantiating_module (decl);
  
!   /* DECL_CONTEXT may not be set yet when we're called for
!      non-namespace-scope entities.  */
!   if (!DECL_CONTEXT (decl) || !DECL_NAMESPACE_SCOPE_P (decl))
      return;
  
    gcc_checking_assert (friend_p || decl == get_originating_module_decl (decl));
*************** check_module_decl_linkage (tree decl)
*** 20877,20883 ****
  	 internal namespace as exporting a declaration with internal
  	 linkage, as this would also implicitly export the internal
  	 linkage namespace.  */
!       if (decl_internal_context_p (decl))
  	{
  	  error_at (DECL_SOURCE_LOCATION (decl),
  		    "exporting declaration %qD declared in unnamed namespace",
--- 20956,20962 ----
  	 internal namespace as exporting a declaration with internal
  	 linkage, as this would also implicitly export the internal
  	 linkage namespace.  */
!       if (decl_anon_ns_mem_p (decl))
  	{
  	  error_at (DECL_SOURCE_LOCATION (decl),
  		    "exporting declaration %qD declared in unnamed namespace",
*************** maybe_key_decl (tree ctx, tree decl)
*** 20910,20918 ****
        && TREE_CODE (ctx) != CONCEPT_DECL)
      return;
  
!   /* For fields, key it to the containing type to handle deduplication
!      correctly.  */
!   if (TREE_CODE (ctx) == FIELD_DECL)
      ctx = TYPE_NAME (DECL_CONTEXT (ctx));
  
    if (!keyed_table)
--- 20989,21009 ----
        && TREE_CODE (ctx) != CONCEPT_DECL)
      return;
  
!   /* For members, key it to the containing type to handle deduplication
!      correctly.  For fields, this is necessary as FIELD_DECLs have no
!      dep and so would only be streamed after the lambda type, defeating
!      our ability to merge them.
! 
!      Other class-scope key decls might depend on the type of the lambda
!      but be within the same cluster; we need to ensure that we never
!      first see the key decl while streaming the lambda type as merging
!      would then fail when comparing the partially-streamed lambda type
!      of the key decl with the existing (PR c++/122310).
! 
!      Perhaps sort_cluster can be adjusted to handle this better, but
!      this is a simple workaround (and might down on the number of
!      entries in keyed_table as a bonus).  */
!   while (DECL_CLASS_SCOPE_P (ctx))
      ctx = TYPE_NAME (DECL_CONTEXT (ctx));
  
    if (!keyed_table)
*************** maybe_key_decl (tree ctx, tree decl)
*** 20927,20932 ****
--- 21018,21047 ----
    vec.safe_push (decl);
  }
  
+ /* Find the scope that the lambda DECL is keyed to, if any.  */
+ 
+ static tree
+ get_keyed_decl_scope (tree decl)
+ {
+   gcc_checking_assert (LAMBDA_TYPE_P (TREE_TYPE (decl)));
+   tree scope = LAMBDA_TYPE_EXTRA_SCOPE (TREE_TYPE (decl));
+   if (!scope)
+     return NULL_TREE;
+ 
+   gcc_checking_assert (TREE_CODE (scope) == VAR_DECL
+ 		       || TREE_CODE (scope) == FIELD_DECL
+ 		       || TREE_CODE (scope) == PARM_DECL
+ 		       || TREE_CODE (scope) == TYPE_DECL
+ 		       || TREE_CODE (scope) == CONCEPT_DECL);
+ 
+   while (DECL_CLASS_SCOPE_P (scope))
+     scope = TYPE_NAME (DECL_CONTEXT (scope));
+ 
+   gcc_checking_assert (DECL_LANG_SPECIFIC (scope)
+ 		       && DECL_MODULE_KEYED_DECLS_P (scope));
+   return scope;
+ }
+ 
  /* DECL is an instantiated friend that should be attached to the same
     module that ORIG is.  */
  
diff -Nrcpad gcc-15.2.0/gcc/cp/name-lookup.cc gcc-15.3.0/gcc/cp/name-lookup.cc
*** gcc-15.2.0/gcc/cp/name-lookup.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cp/name-lookup.cc	Fri Jun 12 06:09:06 2026
*************** handle_namespace_attrs (tree ns, tree at
*** 6514,6520 ****
        tree name = get_attribute_name (d);
        tree args = TREE_VALUE (d);
  
!       if (is_attribute_p ("visibility", name))
  	{
  	  /* attribute visibility is a property of the syntactic block
  	     rather than the namespace as a whole, so we don't touch the
--- 6514,6521 ----
        tree name = get_attribute_name (d);
        tree args = TREE_VALUE (d);
  
!       if (is_attribute_p ("visibility", name)
! 	  && args != error_mark_node)
  	{
  	  /* attribute visibility is a property of the syntactic block
  	     rather than the namespace as a whole, so we don't touch the
*************** handle_namespace_attrs (tree ns, tree at
*** 6536,6542 ****
  	  push_visibility (TREE_STRING_POINTER (x), 1);
  	  saw_vis = true;
  	}
!       else if (is_attribute_p ("abi_tag", name))
  	{
  	  if (!DECL_NAME (ns))
  	    {
--- 6537,6544 ----
  	  push_visibility (TREE_STRING_POINTER (x), 1);
  	  saw_vis = true;
  	}
!       else if (is_attribute_p ("abi_tag", name)
! 	       && args != error_mark_node)
  	{
  	  if (!DECL_NAME (ns))
  	    {
*************** handle_namespace_attrs (tree ns, tree at
*** 6563,6569 ****
  	    DECL_ATTRIBUTES (ns) = tree_cons (name, args,
  					      DECL_ATTRIBUTES (ns));
  	}
!       else if (is_attribute_p ("deprecated", name))
  	{
  	  if (!DECL_NAME (ns))
  	    {
--- 6565,6572 ----
  	    DECL_ATTRIBUTES (ns) = tree_cons (name, args,
  					      DECL_ATTRIBUTES (ns));
  	}
!       else if (is_attribute_p ("deprecated", name)
! 	       && args != error_mark_node)
  	{
  	  if (!DECL_NAME (ns))
  	    {
*************** push_namespace (tree name, bool make_inl
*** 9236,9241 ****
--- 9239,9247 ----
  		  gcc_checking_assert (!(tree)slot || (tree)slot == ctx);
  		  slot = ctx;
  		}
+ 
+ 	      if (module_purview_p ())
+ 		DECL_MODULE_PURVIEW_P (ctx) = true;
  	    }
  	}
  
diff -Nrcpad gcc-15.2.0/gcc/cp/parser.cc gcc-15.3.0/gcc/cp/parser.cc
*** gcc-15.2.0/gcc/cp/parser.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cp/parser.cc	Fri Jun 12 06:09:06 2026
*************** cp_parser_pack_index (cp_parser *parser,
*** 5940,5945 ****
--- 5940,5950 ----
    if (TREE_CODE (pack) == TYPE_DECL)
      pack = TREE_TYPE (pack);
    pack = make_pack_expansion (pack);
+   if (!type_dependent_expression_p (index))
+     index = build_converted_constant_expr (size_type_node, index,
+ 					   tf_warning_or_error);
+   if (error_operand_p (index))
+     return error_mark_node;
    return make_pack_index (pack, index);
  }
  
*************** cp_parser_expression (cp_parser* parser,
*** 11268,11277 ****
  	     and one CPP_NUMBER plus CPP_COMMA before it and one
  	     CPP_COMMA plus CPP_NUMBER after it is guaranteed by
  	     the preprocessor.  Thus, parse the whole CPP_EMBED just
! 	     as a single INTEGER_CST, the last byte in it.  */
  	  tree raw_data = cp_lexer_peek_token (parser->lexer)->u.value;
  	  location_t loc = cp_lexer_peek_token (parser->lexer)->location;
  	  cp_lexer_consume_token (parser->lexer);
  	  assignment_expression
  	    = *raw_data_iterator (raw_data, RAW_DATA_LENGTH (raw_data) - 1);
  	  assignment_expression.set_location (loc);
--- 11273,11296 ----
  	     and one CPP_NUMBER plus CPP_COMMA before it and one
  	     CPP_COMMA plus CPP_NUMBER after it is guaranteed by
  	     the preprocessor.  Thus, parse the whole CPP_EMBED just
! 	     as a single INTEGER_CST, the last byte in it.  Though,
! 	     don't use that shortcut if the comma operator could be
! 	     overloaded.  */
  	  tree raw_data = cp_lexer_peek_token (parser->lexer)->u.value;
  	  location_t loc = cp_lexer_peek_token (parser->lexer)->location;
  	  cp_lexer_consume_token (parser->lexer);
+ 	  if (OVERLOAD_TYPE_P (TREE_TYPE (expression))
+ 	      || type_dependent_expression_p (expression))
+ 	    for (unsigned i = 0; i < RAW_DATA_LENGTH (raw_data) - 1U; ++i)
+ 	      {
+ 		assignment_expression
+ 		  = *raw_data_iterator (raw_data, i);
+ 		assignment_expression.set_location (loc);
+ 		expression
+ 		  = build_x_compound_expr (loc, expression,
+ 					   assignment_expression, NULL_TREE,
+ 					   complain_flags (decltype_p));
+ 	      }
  	  assignment_expression
  	    = *raw_data_iterator (raw_data, RAW_DATA_LENGTH (raw_data) - 1);
  	  assignment_expression.set_location (loc);
*************** cp_parser_lambda_expression (cp_parser*
*** 11693,11713 ****
    LAMBDA_EXPR_LOCATION (lambda_expr) = token->location;
  
    if (cxx_dialect >= cxx20)
!     {
!       /* C++20 allows lambdas in unevaluated context, but one in the type of a
! 	 non-type parameter is nonsensical.
! 
! 	 Distinguish a lambda in the parameter type from a lambda in the
! 	 default argument by looking at local_variables_forbidden_p, which is
! 	 only set in default arguments.  */
!       if (processing_template_parmlist && !parser->local_variables_forbidden_p)
! 	{
! 	  error_at (token->location,
! 		    "lambda-expression in template parameter type");
! 	  token->error_reported = true;
! 	  ok = false;
! 	}
!     }
    else if (cp_unevaluated_operand)
      {
        if (!token->error_reported)
--- 11712,11718 ----
    LAMBDA_EXPR_LOCATION (lambda_expr) = token->location;
  
    if (cxx_dialect >= cxx20)
!     /* C++20 allows lambdas in unevaluated context.  */;
    else if (cp_unevaluated_operand)
      {
        if (!token->error_reported)
*************** cp_parser_mem_initializer_id (cp_parser*
*** 18374,18380 ****
      return cp_parser_class_name (parser,
  				 /*typename_keyword_p=*/true,
  				 /*template_keyword_p=*/template_p,
! 				 typename_type,
  				 /*check_dependency_p=*/true,
  				 /*class_head_p=*/false,
  				 /*is_declaration=*/true);
--- 18379,18385 ----
      return cp_parser_class_name (parser,
  				 /*typename_keyword_p=*/true,
  				 /*template_keyword_p=*/template_p,
! 				 class_type,
  				 /*check_dependency_p=*/true,
  				 /*class_head_p=*/false,
  				 /*is_declaration=*/true);
*************** cp_parser_class_name (cp_parser *parser,
*** 27406,27413 ****
    /* If this is a typename, create a TYPENAME_TYPE.  */
    if (typename_p && decl != error_mark_node)
      {
!       decl = make_typename_type (scope, decl, typename_type,
! 				 /*complain=*/tf_error);
        if (decl != error_mark_node)
  	decl = TYPE_NAME (decl);
      }
--- 27411,27417 ----
    /* If this is a typename, create a TYPENAME_TYPE.  */
    if (typename_p && decl != error_mark_node)
      {
!       decl = make_typename_type (scope, decl, tag_type, /*complain=*/tf_error);
        if (decl != error_mark_node)
  	decl = TYPE_NAME (decl);
      }
*************** cp_parser_base_specifier (cp_parser* par
*** 29748,29754 ****
        type = cp_parser_class_name (parser,
  				   class_scope_p,
  				   template_p,
! 				   typename_type,
  				   /*check_dependency_p=*/true,
  				   /*class_head_p=*/false,
  				   /*is_declaration=*/true);
--- 29752,29758 ----
        type = cp_parser_class_name (parser,
  				   class_scope_p,
  				   template_p,
! 				   class_type,
  				   /*check_dependency_p=*/true,
  				   /*class_head_p=*/false,
  				   /*is_declaration=*/true);
*************** cp_parser_omp_clause_proc_bind (cp_parse
*** 42757,42763 ****
    return c;
  
   invalid_kind:
!   cp_parser_error (parser, "invalid depend kind");
   resync_fail:
    cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true,
  					 /*or_comma=*/false,
--- 42761,42767 ----
    return c;
  
   invalid_kind:
!   cp_parser_error (parser, "invalid proc_bind kind");
   resync_fail:
    cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true,
  					 /*or_comma=*/false,
*************** cp_parser_omp_clause_device_type (cp_par
*** 42824,42830 ****
    return c;
  
   invalid_kind:
!   cp_parser_error (parser, "invalid depend kind");
   resync_fail:
    cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true,
  					 /*or_comma=*/false,
--- 42828,42834 ----
    return c;
  
   invalid_kind:
!   cp_parser_error (parser, "expected %<host%>, %<nohost%> or %<any%>");
   resync_fail:
    cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true,
  					 /*or_comma=*/false,
*************** cp_parser_omp_loop_nest (cp_parser *pars
*** 46425,46431 ****
  	  TREE_VEC_ELT (omp_for_parse_state->condv, depth) = NULL_TREE;
  	  TREE_VEC_ELT (omp_for_parse_state->incrv, depth) = NULL_TREE;
  	  if (omp_for_parse_state->orig_declv)
! 	    TREE_VEC_ELT (omp_for_parse_state->incrv, depth) = NULL_TREE;
  	  vec_safe_push (omp_for_parse_state->init_blockv, NULL_TREE);
  	  vec_safe_push (omp_for_parse_state->body_blockv, NULL_TREE);
  	  vec_safe_push (omp_for_parse_state->init_placeholderv, NULL_TREE);
--- 46429,46435 ----
  	  TREE_VEC_ELT (omp_for_parse_state->condv, depth) = NULL_TREE;
  	  TREE_VEC_ELT (omp_for_parse_state->incrv, depth) = NULL_TREE;
  	  if (omp_for_parse_state->orig_declv)
! 	    TREE_VEC_ELT (omp_for_parse_state->orig_declv, depth) = NULL_TREE;
  	  vec_safe_push (omp_for_parse_state->init_blockv, NULL_TREE);
  	  vec_safe_push (omp_for_parse_state->body_blockv, NULL_TREE);
  	  vec_safe_push (omp_for_parse_state->init_placeholderv, NULL_TREE);
*************** substitute_in_tree_walker (tree *tp, int
*** 46913,46918 ****
--- 46917,46925 ----
    else if (TREE_CODE (*tp) == BIND_EXPR
  	   && BIND_EXPR_BODY (*tp) == sit->orig
  	   && !BIND_EXPR_VARS (*tp)
+ 	   /* BIND_EXPRs in templates likely have NULL BIND_EXPR_VARS,
+ 	      are created by begin_compound_stmt and are not redundant.  */
+ 	   && !processing_template_decl
  	   && (sit->flatten || TREE_CODE (sit->repl) == BIND_EXPR))
      {
        *tp = sit->repl;
*************** substitute_in_tree (tree *context, tree
*** 46957,46963 ****
    struct sit_data data;
  
    gcc_assert (*context && orig && repl);
!   if (TREE_CODE (repl) == BIND_EXPR && !BIND_EXPR_VARS (repl))
      repl = BIND_EXPR_BODY (repl);
    data.orig = orig;
    data.repl = repl;
--- 46964,46975 ----
    struct sit_data data;
  
    gcc_assert (*context && orig && repl);
!   /* Look through redundant BIND_EXPR.  BIND_EXPRs in templates likely have
!      NULL BIND_EXPR_VARS, are created by begin_compound_stmt and are not
!      redundant.  */
!   if (TREE_CODE (repl) == BIND_EXPR
!       && !BIND_EXPR_VARS (repl)
!       && !processing_template_decl)
      repl = BIND_EXPR_BODY (repl);
    data.orig = orig;
    data.repl = repl;
*************** cp_parser_omp_taskwait (cp_parser *parse
*** 48032,48038 ****
    if (clauses)
      {
        tree stmt = make_node (OMP_TASK);
!       TREE_TYPE (stmt) = void_node;
        OMP_TASK_CLAUSES (stmt) = clauses;
        OMP_TASK_BODY (stmt) = NULL_TREE;
        SET_EXPR_LOCATION (stmt, pragma_tok->location);
--- 48044,48050 ----
    if (clauses)
      {
        tree stmt = make_node (OMP_TASK);
!       TREE_TYPE (stmt) = void_type_node;
        OMP_TASK_CLAUSES (stmt) = clauses;
        OMP_TASK_BODY (stmt) = NULL_TREE;
        SET_EXPR_LOCATION (stmt, pragma_tok->location);
*************** cp_parser_omp_dispatch (cp_parser *parse
*** 50337,50343 ****
    if (depend_clauses != NULL_TREE)
      {
        tree stmt = make_node (OMP_TASK);
!       TREE_TYPE (stmt) = void_node;
        OMP_TASK_CLAUSES (stmt) = depend_clauses;
        OMP_TASK_BODY (stmt) = NULL_TREE;
        SET_EXPR_LOCATION (stmt, loc);
--- 50349,50355 ----
    if (depend_clauses != NULL_TREE)
      {
        tree stmt = make_node (OMP_TASK);
!       TREE_TYPE (stmt) = void_type_node;
        OMP_TASK_CLAUSES (stmt) = depend_clauses;
        OMP_TASK_BODY (stmt) = NULL_TREE;
        SET_EXPR_LOCATION (stmt, loc);
diff -Nrcpad gcc-15.2.0/gcc/cp/pt.cc gcc-15.3.0/gcc/cp/pt.cc
*** gcc-15.2.0/gcc/cp/pt.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cp/pt.cc	Fri Jun 12 06:09:06 2026
*************** dependent_alias_template_spec_p (const_t
*** 6825,6830 ****
--- 6825,6838 ----
  bool
  dependent_opaque_alias_p (const_tree t)
  {
+   auto any_lambda_targ_p = [] (tree args)
+     {
+       for (tree arg : tree_vec_range (args))
+ 	if (TREE_CODE (arg) == LAMBDA_EXPR)
+ 	  return true;
+       return false;
+     };
+ 
    return (TYPE_P (t)
  	  && typedef_variant_p (t)
  	  && (any_dependent_type_attributes_p (DECL_ATTRIBUTES
*************** dependent_opaque_alias_p (const_tree t)
*** 6835,6841 ****
  		 alias would incorrectly yield a distinct lambda type.  */
  	      || (TREE_CODE (t) == DECLTYPE_TYPE
  		  && TREE_CODE (DECLTYPE_TYPE_EXPR (t)) == LAMBDA_EXPR
! 		  && !typedef_variant_p (DECL_ORIGINAL_TYPE (TYPE_NAME (t))))));
  }
  
  /* Return the number of innermost template parameters in TMPL.  */
--- 6843,6859 ----
  		 alias would incorrectly yield a distinct lambda type.  */
  	      || (TREE_CODE (t) == DECLTYPE_TYPE
  		  && TREE_CODE (DECLTYPE_TYPE_EXPR (t)) == LAMBDA_EXPR
! 		  && !typedef_variant_p (DECL_ORIGINAL_TYPE (TYPE_NAME (t))))
! 	      /* Also treat an alias to A<lambda> as opaque so that it doesn't
! 		 "leak" into a deeper template context which would cause us to
! 		 over substitute into the lambda.  */
! 	      /* FIXME These lambda checks don't recognize deeply nested lambda
! 		 subexpressions, and we can't use walk_tree here because it's
! 		 slow.  Maybe a tree flag indicating typedef opaqueness?  */
! 	      || (TYPE_TEMPLATE_INFO (t)
! 		  && PRIMARY_TEMPLATE_P (TYPE_TI_TEMPLATE (t))
! 		  && any_lambda_targ_p (INNERMOST_TEMPLATE_ARGS
! 					(TYPE_TI_ARGS (t))))));
  }
  
  /* Return the number of innermost template parameters in TMPL.  */
*************** has_value_dependent_address (tree op)
*** 7066,7072 ****
        if (VAR_P (op)
  	  && TREE_STATIC (op)
  	  && TREE_CODE (ctx) == FUNCTION_DECL
! 	  && type_dependent_expression_p (ctx))
  	return true;
      }
  
--- 7084,7091 ----
        if (VAR_P (op)
  	  && TREE_STATIC (op)
  	  && TREE_CODE (ctx) == FUNCTION_DECL
! 	  && DECL_TEMPLATE_INFO (ctx)
! 	  && any_dependent_template_arguments_p (DECL_TI_ARGS (ctx)))
  	return true;
      }
  
*************** any_template_parm_r (tree t, void *data)
*** 11117,11123 ****
        break;
  
      case TEMPLATE_PARM_INDEX:
!       WALK_SUBTREE (TREE_TYPE (t));
        break;
  
      case TEMPLATE_DECL:
--- 11136,11145 ----
        break;
  
      case TEMPLATE_PARM_INDEX:
!       /* No need to consider template parameters within the type of an NTTP:
! 	 substitution into an NTTP is done directly with the corresponding
! 	 template argument, and its type only comes into play earlier during
! 	 coercion.  */
        break;
  
      case TEMPLATE_DECL:
*************** build_extra_args (tree pattern, tree arg
*** 13735,13741 ****
    /* Make a copy of the extra arguments so that they won't get changed
       out from under us.  */
    tree extra = preserve_args (copy_template_args (args), /*cow_p=*/false);
!   if (complain & tf_partial)
      /* Remember whether this is a partial substitution.  */
      TREE_STATIC (extra) = true;
    if (local_specializations)
--- 13757,13763 ----
    /* Make a copy of the extra arguments so that they won't get changed
       out from under us.  */
    tree extra = preserve_args (copy_template_args (args), /*cow_p=*/false);
!   if ((complain & tf_partial) || TREE_STATIC (args))
      /* Remember whether this is a partial substitution.  */
      TREE_STATIC (extra) = true;
    if (local_specializations)
*************** add_extra_args (tree extra, tree args, t
*** 13774,13784 ****
        extra = TREE_VALUE (extra);
      }
    if (TREE_STATIC (extra))
!     /* This is a partial substitution into e.g. a requires-expr or lambda-expr
!        inside a default template argument; we expect 'extra' to be a full set
!        of template arguments for the template context, so it suffices to just
!        substitute into them.  */
!     args = tsubst_template_args (extra, args, complain, in_decl);
    else
      args = add_to_template_args (extra, args);
    return args;
--- 13796,13812 ----
        extra = TREE_VALUE (extra);
      }
    if (TREE_STATIC (extra))
!     {
!       /* This is a partial substitution into e.g. a requires-expr or lambda-expr
! 	 inside a default template argument; we expect 'extra' to be a full set
! 	 of template arguments for the template context, so it suffices to just
! 	 substitute into them.  */
!       args = tsubst_template_args (extra, args, complain, in_decl);
!       if (processing_template_decl)
! 	/* A templated substitution into a partial substitution is still a
! 	   partial substitution.  */
! 	TREE_STATIC (args) = true;
!     }
    else
      args = add_to_template_args (extra, args);
    return args;
*************** tsubst_pack_expansion (tree t, tree args
*** 13942,13948 ****
  	  /* We can't substitute for this parameter pack.  We use a flag as
  	     well as the missing_level counter because function parameter
  	     packs don't have a level.  */
! 	  gcc_assert (processing_template_decl || is_auto (parm_pack));
  	  unsubstituted_packs = true;
  	}
      }
--- 13970,13977 ----
  	  /* We can't substitute for this parameter pack.  We use a flag as
  	     well as the missing_level counter because function parameter
  	     packs don't have a level.  */
! 	  gcc_assert (processing_template_decl || is_auto (parm_pack)
! 		      || args == NULL_TREE);
  	  unsubstituted_packs = true;
  	}
      }
*************** tsubst_pack_expansion (tree t, tree args
*** 14090,14095 ****
--- 14119,14143 ----
    return result;
  }
  
+ /* Substitute ARGS into T, which is a TREE_VEC.  This function creates a new
+    TREE_VEC rather than substituting the elements in-place.  */
+ 
+ static tree
+ tsubst_tree_vec (tree t, tree args, tsubst_flags_t complain, tree in_decl)
+ {
+   const int len = TREE_VEC_LENGTH (t);
+   tree r = make_tree_vec (len);
+   for (int i = 0; i < len; ++i)
+     {
+       tree arg = TREE_VEC_ELT (t, i);
+       if (TYPE_P (arg))
+ 	TREE_VEC_ELT (r, i) = tsubst (arg, args, complain, in_decl);
+       else
+ 	TREE_VEC_ELT (r, i) = tsubst_expr (arg, args, complain, in_decl);
+     }
+   return r;
+ }
+ 
  /* Substitute ARGS into T, which is a pack index (i.e., PACK_INDEX_TYPE or
     PACK_INDEX_EXPR).  Returns a single type or expression, a PACK_INDEX_*
     node if only a partial substitution could be performed, or ERROR_MARK_NODE
*************** tsubst_pack_index (tree t, tree args, ts
*** 14107,14113 ****
  	 a partially instantiated closure.  Let tsubst find the
  	 fully-instantiated one.  */
        gcc_assert (TREE_CODE (pack) == TREE_VEC);
!       pack = tsubst (pack, args, complain, in_decl);
      }
    if (TREE_CODE (pack) == TREE_VEC && TREE_VEC_LENGTH (pack) == 0)
      {
--- 14155,14161 ----
  	 a partially instantiated closure.  Let tsubst find the
  	 fully-instantiated one.  */
        gcc_assert (TREE_CODE (pack) == TREE_VEC);
!       pack = tsubst_tree_vec (pack, args, complain, in_decl);
      }
    if (TREE_CODE (pack) == TREE_VEC && TREE_VEC_LENGTH (pack) == 0)
      {
*************** tsubst_pack_index (tree t, tree args, ts
*** 14118,14127 ****
    tree index = tsubst_expr (PACK_INDEX_INDEX (t), args, complain, in_decl);
    const bool parenthesized_p = (TREE_CODE (t) == PACK_INDEX_EXPR
  				&& PACK_INDEX_PARENTHESIZED_P (t));
    if (!value_dependent_expression_p (index) && TREE_CODE (pack) == TREE_VEC)
!     return pack_index_element (index, pack, parenthesized_p, complain);
    else
!     return make_pack_index (pack, index);
  }
  
  /* Make an argument pack out of the TREE_VEC VEC.  */
--- 14166,14184 ----
    tree index = tsubst_expr (PACK_INDEX_INDEX (t), args, complain, in_decl);
    const bool parenthesized_p = (TREE_CODE (t) == PACK_INDEX_EXPR
  				&& PACK_INDEX_PARENTHESIZED_P (t));
+   tree r;
+   if (!type_dependent_expression_p (index))
+     index = build_converted_constant_expr (size_type_node, index, complain);
+   if (error_operand_p (index))
+     return error_mark_node;
    if (!value_dependent_expression_p (index) && TREE_CODE (pack) == TREE_VEC)
!     r = pack_index_element (index, pack, parenthesized_p, complain);
    else
!     r = make_pack_index (pack, index);
!   if (TREE_CODE (t) == PACK_INDEX_TYPE)
!     r = cp_build_qualified_type (r, cp_type_quals (t) | cp_type_quals (r),
! 				 complain | tf_ignore_bad_quals);
!   return r;
  }
  
  /* Make an argument pack out of the TREE_VEC VEC.  */
*************** tsubst (tree t, tree args, tsubst_flags_
*** 17174,17180 ****
  	    f = TREE_TYPE (f);
  	  }
  
! 	if (TREE_CODE (f) != TYPENAME_TYPE)
  	  {
  	    if (TYPENAME_IS_ENUM_P (t) && TREE_CODE (f) != ENUMERAL_TYPE)
  	      {
--- 17231,17237 ----
  	    f = TREE_TYPE (f);
  	  }
  
! 	if (!WILDCARD_TYPE_P (f))
  	  {
  	    if (TYPENAME_IS_ENUM_P (t) && TREE_CODE (f) != ENUMERAL_TYPE)
  	      {
*************** tsubst_baselink (tree baselink, tree obj
*** 17446,17451 ****
--- 17503,17510 ----
        if (template_args)
  	template_args = tsubst_template_args (template_args, args,
  					      complain, in_decl);
+       if (template_args == error_mark_node)
+ 	return error_mark_node;
      }
  
    tree binfo_type = BINFO_TYPE (BASELINK_BINFO (baselink));
*************** tsubst_baselink (tree baselink, tree obj
*** 17476,17481 ****
--- 17535,17549 ----
        bool maybe_incomplete = BASELINK_FUNCTIONS_MAYBE_INCOMPLETE_P (baselink);
        baselink = lookup_fnfields (qualifying_scope, name, /*protect=*/1,
  				  complain);
+       if (!baselink)
+ 	{
+ 	  if ((complain & tf_error)
+ 	      && constructor_name_p (name, qualifying_scope))
+ 	    error ("cannot call constructor %<%T::%D%> directly",
+ 		   qualifying_scope, name);
+ 	  return error_mark_node;
+ 	}
+ 
        if (maybe_incomplete)
  	{
  	  /* Filter out from the new lookup set those functions which didn't
*************** tsubst_baselink (tree baselink, tree obj
*** 17489,17503 ****
  	  BASELINK_FUNCTIONS_MAYBE_INCOMPLETE_P (baselink) = true;
  	}
  
-       if (!baselink)
- 	{
- 	  if ((complain & tf_error)
- 	      && constructor_name_p (name, qualifying_scope))
- 	    error ("cannot call constructor %<%T::%D%> directly",
- 		   qualifying_scope, name);
- 	  return error_mark_node;
- 	}
- 
        fns = BASELINK_FUNCTIONS (baselink);
      }
    else
--- 17557,17562 ----
*************** tsubst_lambda_expr (tree t, tree args, t
*** 20184,20190 ****
  
    args = add_extra_args (LAMBDA_EXPR_EXTRA_ARGS (t), args, complain, in_decl);
    if (processing_template_decl
!       && (!in_template_context || (complain & tf_partial)))
      {
        /* Defer templated substitution into a lambda-expr if we lost the
  	 necessary template context.  This may happen for a lambda-expr
--- 20243,20250 ----
  
    args = add_extra_args (LAMBDA_EXPR_EXTRA_ARGS (t), args, complain, in_decl);
    if (processing_template_decl
!       && (!in_template_context || (complain & tf_partial)
! 	  || LAMBDA_EXPR_EXTRA_ARGS (t)))
      {
        /* Defer templated substitution into a lambda-expr if we lost the
  	 necessary template context.  This may happen for a lambda-expr
*************** tsubst_lambda_expr (tree t, tree args, t
*** 20192,20198 ****
  
  	 Defer dependent substitution as well so that we don't prematurely
  	 lower the level of a deduced return type or any other auto or
! 	 template parameter belonging to the lambda.  */
        t = copy_node (t);
        LAMBDA_EXPR_EXTRA_ARGS (t) = NULL_TREE;
        LAMBDA_EXPR_EXTRA_ARGS (t) = build_extra_args (t, args, complain);
--- 20252,20262 ----
  
  	 Defer dependent substitution as well so that we don't prematurely
  	 lower the level of a deduced return type or any other auto or
! 	 template parameter belonging to the lambda.
! 
! 	 Finally, if a substitution into this lambda was previously
! 	 deferred, keep deferring until the final (non-templated)
! 	 substitution.  */
        t = copy_node (t);
        LAMBDA_EXPR_EXTRA_ARGS (t) = NULL_TREE;
        LAMBDA_EXPR_EXTRA_ARGS (t) = build_extra_args (t, args, complain);
*************** tsubst_expr (tree t, tree args, tsubst_f
*** 21766,21773 ****
--- 21830,21843 ----
  	  }
  	else if (TREE_CODE (member) == FIELD_DECL)
  	  {
+ 	    /* Assume access of this FIELD_DECL has already been checked; we
+ 	       don't recheck it to avoid bogus access errors when substituting
+ 	       a reduced constant initializer (97740).  */
+ 	    gcc_checking_assert (TREE_CODE (TREE_OPERAND (t, 1)) == FIELD_DECL);
+ 	    push_deferring_access_checks (dk_deferred);
  	    r = finish_non_static_data_member (member, object, NULL_TREE,
  					       complain);
+ 	    pop_deferring_access_checks ();
  	    if (REF_PARENTHESIZED_P (t))
  	      r = force_paren_expr (r);
  	    RETURN (r);
*************** tsubst_expr (tree t, tree args, tsubst_f
*** 21796,21802 ****
  	      }
  	  }
  	else if (TREE_CODE (member) == SCOPE_REF
! 		 && TREE_CODE (TREE_OPERAND (member, 1)) == TEMPLATE_ID_EXPR)
  	  {
  	    /* Lookup the template functions now that we know what the
  	       scope is.  */
--- 21866,21873 ----
  	      }
  	  }
  	else if (TREE_CODE (member) == SCOPE_REF
! 		 && TREE_CODE (TREE_OPERAND (member, 1)) == TEMPLATE_ID_EXPR
! 		 && identifier_p (TREE_OPERAND (TREE_OPERAND (member, 1), 0)))
  	  {
  	    /* Lookup the template functions now that we know what the
  	       scope is.  */
*************** tsubst_expr (tree t, tree args, tsubst_f
*** 21993,21999 ****
  	  if (r == NULL_TREE && TREE_CODE (t) == PARM_DECL)
  	    {
  	      /* We get here for a use of 'this' in an NSDMI.  */
! 	      if (DECL_NAME (t) == this_identifier && current_class_ptr)
  		RETURN (current_class_ptr);
  
  	      /* This can happen for a parameter name used later in a function
--- 22064,22071 ----
  	  if (r == NULL_TREE && TREE_CODE (t) == PARM_DECL)
  	    {
  	      /* We get here for a use of 'this' in an NSDMI.  */
! 	      if (DECL_NAME (t) == this_identifier && current_class_ptr
! 		  && !LAMBDA_TYPE_P (TREE_TYPE (TREE_TYPE (current_class_ptr))))
  		RETURN (current_class_ptr);
  
  	      /* This can happen for a parameter name used later in a function
*************** tsubst_expr (tree t, tree args, tsubst_f
*** 22009,22015 ****
  	  else if (r == NULL_TREE)
  	    {
  	      /* First try name lookup to find the instantiation.  */
! 	      r = lookup_name (DECL_NAME (t));
  	      if (r)
  		{
  		  if (!VAR_P (r))
--- 22081,22088 ----
  	  else if (r == NULL_TREE)
  	    {
  	      /* First try name lookup to find the instantiation.  */
! 	      if (DECL_NAME (t))
! 		r = lookup_name (DECL_NAME (t));
  	      if (r)
  		{
  		  if (!VAR_P (r))
*************** tsubst_expr (tree t, tree args, tsubst_f
*** 22212,22223 ****
  
      case OFFSET_REF:
        {
! 	tree type = tsubst (TREE_TYPE (t), args, complain, in_decl);
  	tree op0 = RECUR (TREE_OPERAND (t, 0));
  	tree op1 = RECUR (TREE_OPERAND (t, 1));
  	r = build2 (OFFSET_REF, type, op0, op1);
  	PTRMEM_OK_P (r) = PTRMEM_OK_P (t);
! 	if (!mark_used (TREE_OPERAND (r, 1), complain)
  	    && !(complain & tf_error))
  	  RETURN (error_mark_node);
  	RETURN (r);
--- 22285,22300 ----
  
      case OFFSET_REF:
        {
! 	/* We should only get here for an OFFSET_REF like A::m; a .* in a
! 	   template is represented as a DOTSTAR_EXPR.  */
! 	gcc_checking_assert
! 	  (same_type_p (TREE_TYPE (t), TREE_TYPE (TREE_OPERAND (t, 1))));
  	tree op0 = RECUR (TREE_OPERAND (t, 0));
  	tree op1 = RECUR (TREE_OPERAND (t, 1));
+ 	tree type = TREE_TYPE (op1);
  	r = build2 (OFFSET_REF, type, op0, op1);
  	PTRMEM_OK_P (r) = PTRMEM_OK_P (t);
! 	if (!mark_used (op1, complain)
  	    && !(complain & tf_error))
  	  RETURN (error_mark_node);
  	RETURN (r);
*************** unify (tree tparms, tree targs, tree par
*** 25969,25976 ****
      case TYPEOF_TYPE:
      case DECLTYPE_TYPE:
      case TRAIT_TYPE:
!       /* Cannot deduce anything from TYPEOF_TYPE, DECLTYPE_TYPE,
! 	 or TRAIT_TYPE nodes.  */
        return unify_success (explain_p);
  
      case ERROR_MARK:
--- 26046,26053 ----
      case TYPEOF_TYPE:
      case DECLTYPE_TYPE:
      case TRAIT_TYPE:
!     case PACK_INDEX_TYPE:
!       /* These are non-deduced contexts.  */
        return unify_success (explain_p);
  
      case ERROR_MARK:
*************** unify (tree tparms, tree targs, tree par
*** 25998,26003 ****
--- 26075,26081 ----
  	return unify_success (explain_p);
        gcc_assert (EXPR_P (parm)
  		  || TREE_CODE (parm) == CONSTRUCTOR
+ 		  || TREE_CODE (parm) == LAMBDA_EXPR
  		  || TREE_CODE (parm) == TRAIT_EXPR);
      expr:
        /* We must be looking at an expression.  This can happen with
*************** dependent_scope_p (tree scope)
*** 28721,28727 ****
  bool
  dependentish_scope_p (tree scope)
  {
!   return dependent_scope_p (scope) || any_dependent_bases_p (scope);
  }
  
  /* T is a SCOPE_REF.  Return whether it represents a non-static member of
--- 28799,28814 ----
  bool
  dependentish_scope_p (tree scope)
  {
!   return dependent_scope_p (scope) || any_dependent_bases_p (scope)
!     /* A noexcept-spec is a complete-class context, so this should never hold.
!        But since we don't implement deferred noexcept-spec parsing of a friend
!        declaration (PR114764) we compensate by treating the current
!        instantiation as dependent to avoid bogus name lookup failures in this
!        case (PR122668).  */
!     || (cp_noexcept_operand
! 	&& CLASS_TYPE_P (scope)
! 	&& TYPE_BEING_DEFINED (scope)
! 	&& dependent_type_p (scope));
  }
  
  /* T is a SCOPE_REF.  Return whether it represents a non-static member of
*************** make_constrained_decltype_auto (tree con
*** 30120,30125 ****
--- 30207,30224 ----
    return make_constrained_placeholder_type (type, con, args);
  }
  
+ /* Create an "auto..." type-specifier.  */
+ 
+ tree
+ make_auto_pack ()
+ {
+   tree type = make_auto_1 (auto_identifier, false);
+   TEMPLATE_TYPE_PARAMETER_PACK (type) = true;
+   /* Our canonical type depends on being a pack.  */
+   TYPE_CANONICAL (type) = canonical_type_parameter (type);
+   return type;
+ }
+ 
  /* Returns true if the placeholder type constraint T has any dependent
     (explicit) template arguments.  */
  
*************** alias_ctad_tweaks (tree tmpl, tree uguid
*** 30975,30981 ****
  			  (INNERMOST_TEMPLATE_PARMS (fullatparms)));
      }
  
!   tsubst_flags_t complain = tf_none;
    tree aguides = NULL_TREE;
    tree atparms = INNERMOST_TEMPLATE_PARMS (fullatparms);
    unsigned natparms = TREE_VEC_LENGTH (atparms);
--- 31074,31080 ----
  			  (INNERMOST_TEMPLATE_PARMS (fullatparms)));
      }
  
!   tsubst_flags_t complain = tf_partial;
    tree aguides = NULL_TREE;
    tree atparms = INNERMOST_TEMPLATE_PARMS (fullatparms);
    unsigned natparms = TREE_VEC_LENGTH (atparms);
*************** alias_ctad_tweaks (tree tmpl, tree uguid
*** 31088,31094 ****
  	  if (ci)
  	    {
  	      if (tree outer_targs = outer_template_args (f))
! 		ci = tsubst_constraint_info (ci, outer_targs, complain, in_decl);
  	      ci = tsubst_constraint_info (ci, targs, complain, in_decl);
  	    }
  	  if (ci == error_mark_node)
--- 31187,31194 ----
  	  if (ci)
  	    {
  	      if (tree outer_targs = outer_template_args (f))
! 		ci = tsubst_constraint_info (ci, outer_targs,
! 					     complain & ~tf_partial, in_decl);
  	      ci = tsubst_constraint_info (ci, targs, complain, in_decl);
  	    }
  	  if (ci == error_mark_node)
*************** type_targs_deducible_from (tree tmpl, tr
*** 31240,31246 ****
  	 per alias_ctad_tweaks.  */
        tparms = INNERMOST_TEMPLATE_PARMS (TREE_PURPOSE (tmpl));
        ttype = TREE_VALUE (tmpl);
!       tmpl = TI_TEMPLATE (TYPE_TEMPLATE_INFO_MAYBE_ALIAS (ttype));
      }
  
    int len = TREE_VEC_LENGTH (tparms);
--- 31340,31350 ----
  	 per alias_ctad_tweaks.  */
        tparms = INNERMOST_TEMPLATE_PARMS (TREE_PURPOSE (tmpl));
        ttype = TREE_VALUE (tmpl);
!       tree ti = TYPE_TEMPLATE_INFO_MAYBE_ALIAS (ttype);
!       if (!ti)
! 	/* TTYPE is a typedef to a template-id.  */
! 	ti = TYPE_TEMPLATE_INFO (ttype);
!       tmpl = TI_TEMPLATE (ti);
      }
  
    int len = TREE_VEC_LENGTH (tparms);
diff -Nrcpad gcc-15.2.0/gcc/cp/semantics.cc gcc-15.3.0/gcc/cp/semantics.cc
*** gcc-15.2.0/gcc/cp/semantics.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cp/semantics.cc	Fri Jun 12 06:09:06 2026
*************** finish_compound_literal (tree type, tree
*** 3834,3842 ****
  	  return error_mark_node;
  	}
        else if (cxx_dialect < cxx23)
! 	pedwarn (input_location, OPT_Wc__23_extensions,
! 		 "%<auto{x}%> only available with "
! 		 "%<-std=c++23%> or %<-std=gnu++23%>");
        type = do_auto_deduction (type, compound_literal, type, complain,
  				adc_variable_type);
        if (type == error_mark_node)
--- 3834,3845 ----
  	  return error_mark_node;
  	}
        else if (cxx_dialect < cxx23)
! 	{
! 	  if ((complain & tf_warning_or_error) != 0)
! 	    pedwarn (input_location, OPT_Wc__23_extensions,
! 		     "%<auto{x}%> only available with "
! 		     "%<-std=c++23%> or %<-std=gnu++23%>");
! 	}
        type = do_auto_deduction (type, compound_literal, type, complain,
  				adc_variable_type);
        if (type == error_mark_node)
*************** finish_static_assert (tree condition, tr
*** 12471,12476 ****
--- 12474,12489 ----
  	    error_at (cloc, "static assertion failed: %.*s", len, msg);
  
  	  diagnose_failing_condition (bad, cloc, show_expr_p);
+ 
+ 	  /* Suppress -Wreturn-type for functions with failed static_asserts.
+ 	     Otherwise templates like:
+ 	     if constexpr (whatever)
+ 	       return something (args);
+ 	     else
+ 	       static_assert (false, "explanation");
+ 	     get a useless extra -Wreturn-type warning.  */
+ 	  if (current_function_decl)
+ 	    suppress_warning (current_function_decl, OPT_Wreturn_type);
  	}
        else if (condition && condition != error_mark_node)
  	{
*************** finish_decltype_type (tree expr, bool id
*** 12588,12599 ****
  	{
  	  if (ptds.saved)
  	    {
! 	      gcc_checking_assert (DECL_HAS_VALUE_EXPR_P (expr));
  	      /* DECL_HAS_VALUE_EXPR_P is always set if
! 		 processing_template_decl.  If lookup_decomp_type
  		 returns non-NULL, it is the tuple case.  */
  	      if (tree ret = lookup_decomp_type (expr))
  		return ret;
  	    }
  	  if (DECL_HAS_VALUE_EXPR_P (expr))
  	    /* Expr is an array or struct subobject proxy, handle
--- 12601,12616 ----
  	{
  	  if (ptds.saved)
  	    {
! 	      gcc_checking_assert (DECL_HAS_VALUE_EXPR_P (expr)
! 				   || (DECL_CONTEXT (expr)
! 				       != current_function_decl));
  	      /* DECL_HAS_VALUE_EXPR_P is always set if
! 		 processing_template_decl at least for structured bindings
! 		 within the template.  If lookup_decomp_type
  		 returns non-NULL, it is the tuple case.  */
  	      if (tree ret = lookup_decomp_type (expr))
  		return ret;
+ 	      gcc_checking_assert (DECL_HAS_VALUE_EXPR_P (expr));
  	    }
  	  if (DECL_HAS_VALUE_EXPR_P (expr))
  	    /* Expr is an array or struct subobject proxy, handle
diff -Nrcpad gcc-15.2.0/gcc/cp/tree.cc gcc-15.3.0/gcc/cp/tree.cc
*** gcc-15.2.0/gcc/cp/tree.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cp/tree.cc	Fri Jun 12 06:09:06 2026
*************** non_mergeable_glvalue_p (const_tree ref)
*** 424,429 ****
--- 424,506 ----
  	  && !(kind & (clk_class|clk_mergeable)));
  }
  
+ /* C++-specific version of stabilize_reference for bit-fields and
+    DECL_PACKED fields.  We can't bind a reference to those.  */
+ 
+ static tree
+ cp_stabilize_bitfield_reference (tree ref)
+ {
+   tree op1, op2, op3;
+   STRIP_ANY_LOCATION_WRAPPER (ref);
+   switch (TREE_CODE (ref))
+     {
+     case VAR_DECL:
+     case PARM_DECL:
+     case RESULT_DECL:
+     CASE_CONVERT:
+     case FLOAT_EXPR:
+     case FIX_TRUNC_EXPR:
+     case INDIRECT_REF:
+     case COMPONENT_REF:
+     case BIT_FIELD_REF:
+     case ARRAY_REF:
+     case ARRAY_RANGE_REF:
+     case ERROR_MARK:
+     case REALPART_EXPR:
+     case IMAGPART_EXPR:
+     default:
+       break;
+     case COMPOUND_EXPR:
+       op2 = cp_stabilize_bitfield_reference (TREE_OPERAND (ref, 1));
+       if (op2 == TREE_OPERAND (ref, 1))
+ 	return ref;
+       op1 = TREE_OPERAND (ref, 0);
+       if (TREE_SIDE_EFFECTS (op1))
+ 	{
+ 	  if (VOID_TYPE_P (TREE_TYPE (op1)))
+ 	    op1 = save_expr (op1);
+ 	  else
+ 	    {
+ 	      op1 = build2 (COMPOUND_EXPR, void_type_node, op1,
+ 			    void_node);
+ 	      op1 = save_expr (op1);
+ 	    }
+ 	}
+       return build2 (COMPOUND_EXPR, TREE_TYPE (op2), op1, op2);
+     case COND_EXPR:
+       op1 = TREE_OPERAND (ref, 0);
+       op2 = TREE_OPERAND (ref, 1);
+       op3 = TREE_OPERAND (ref, 2);
+       if (op2 && TREE_CODE (op2) != THROW_EXPR)
+ 	op2 = cp_stabilize_bitfield_reference (op2);
+       if (TREE_CODE (op3) != THROW_EXPR)
+ 	op3 = cp_stabilize_bitfield_reference (op3);
+       if (op2 == NULL_TREE)
+ 	op1 = cp_stabilize_bitfield_reference (op1);
+       if (op1 == TREE_OPERAND (ref, 0)
+ 	  && op2 == TREE_OPERAND (ref, 1)
+ 	  && op3 == TREE_OPERAND (ref, 2))
+ 	return ref;
+       if (op2 != NULL_TREE && TREE_SIDE_EFFECTS (op1))
+ 	op1 = save_expr (op1);
+       return build3 (COND_EXPR, TREE_TYPE (ref), op1, op2, op3);
+     case PREINCREMENT_EXPR:
+     case PREDECREMENT_EXPR:
+       op1 = cp_stabilize_bitfield_reference (TREE_OPERAND (ref, 0));
+       if (op1 == TREE_OPERAND (ref, 0))
+ 	return ref;
+       return build2 (COMPOUND_EXPR, TREE_TYPE (ref),
+ 		     build2 (TREE_CODE (ref), TREE_TYPE (ref), op1,
+ 			     TREE_OPERAND (ref, 0)), op1);
+     case PAREN_EXPR:
+       op1 = cp_stabilize_bitfield_reference (TREE_OPERAND (ref, 0));
+       if (op1 == TREE_OPERAND (ref, 0))
+ 	return ref;
+       return build1 (PAREN_EXPR, TREE_TYPE (ref), op1);
+     }
+   return stabilize_reference (ref);
+ }
+ 
  /* C++-specific version of stabilize_reference.  */
  
  tree
*************** cp_stabilize_reference (tree ref)
*** 455,460 ****
--- 532,539 ----
        cp_lvalue_kind kind = lvalue_kind (ref);
        if ((kind & ~clk_class) != clk_none)
  	{
+ 	  if (kind & (clk_bitfield | clk_packed))
+ 	    return cp_stabilize_bitfield_reference (ref);
  	  tree type = unlowered_expr_type (ref);
  	  bool rval = !!(kind & clk_rvalueref);
  	  type = cp_build_reference_type (type, rval);
*************** build_cplus_array_type (tree elt_type, t
*** 1185,1191 ****
        for (t = m; t; t = TYPE_NEXT_VARIANT (t))
  	if (TREE_TYPE (t) == elt_type
  	    && TYPE_NAME (t) == NULL_TREE
! 	    && TYPE_ATTRIBUTES (t) == NULL_TREE)
  	  break;
        if (!t)
  	{
--- 1264,1275 ----
        for (t = m; t; t = TYPE_NEXT_VARIANT (t))
  	if (TREE_TYPE (t) == elt_type
  	    && TYPE_NAME (t) == NULL_TREE
! 	    && TYPE_ATTRIBUTES (t) == NULL_TREE
! 	    && (!TYPE_USER_ALIGN (t)
! 		|| (TYPE_USER_ALIGN (elt_type)
! 		    && TYPE_ALIGN (t) == TYPE_ALIGN (elt_type)))
! 	    && !TREE_DEPRECATED (t)
! 	    && !TREE_UNAVAILABLE (t))
  	  break;
        if (!t)
  	{
*************** cxx_printable_name_internal (tree decl,
*** 2747,2752 ****
--- 2831,2845 ----
        /* yes, so return it.  */
        return print_ring[i];
  
+   const char *ret = lang_decl_name (decl, v, translate);
+ 
+   /* The lang_decl_name call could have called this function recursively,
+      so check again.  */
+   for (i = 0; i < PRINT_RING_SIZE; i++)
+     if (uid_ring[i] == DECL_UID (decl) && translate == trans_ring[i])
+       /* yes, so return it.  */
+       return print_ring[i];
+ 
    if (++ring_counter == PRINT_RING_SIZE)
      ring_counter = 0;
  
*************** cxx_printable_name_internal (tree decl,
*** 2766,2772 ****
  
    free (print_ring[ring_counter]);
  
!   print_ring[ring_counter] = xstrdup (lang_decl_name (decl, v, translate));
    uid_ring[ring_counter] = DECL_UID (decl);
    trans_ring[ring_counter] = translate;
    return print_ring[ring_counter];
--- 2859,2865 ----
  
    free (print_ring[ring_counter]);
  
!   print_ring[ring_counter] = xstrdup (ret);
    uid_ring[ring_counter] = DECL_UID (decl);
    trans_ring[ring_counter] = translate;
    return print_ring[ring_counter];
diff -Nrcpad gcc-15.2.0/gcc/cp/typeck.cc gcc-15.3.0/gcc/cp/typeck.cc
*** gcc-15.2.0/gcc/cp/typeck.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cp/typeck.cc	Fri Jun 12 06:09:06 2026
*************** cp_compare_floating_point_conversion_ran
*** 305,311 ****
  
    const struct real_format *fmt1 = REAL_MODE_FORMAT (TYPE_MODE (t1));
    const struct real_format *fmt2 = REAL_MODE_FORMAT (TYPE_MODE (t2));
!   gcc_assert (fmt1->b == 2 && fmt2->b == 2);
    /* For {ibm,mips}_extended_format formats, the type has variable
       precision up to ~2150 bits when the first double is around maximum
       representable double and second double is subnormal minimum.
--- 305,334 ----
  
    const struct real_format *fmt1 = REAL_MODE_FORMAT (TYPE_MODE (t1));
    const struct real_format *fmt2 = REAL_MODE_FORMAT (TYPE_MODE (t2));
!   /* Currently, extended floating point types are only binary, and
!      they never have a proper subset or superset of values with
!      decimal floating point types except for the _Float16 vs. _Decimal128
!      pair, so return 3 for unordered conversion ranks.  */
!   gcc_assert (fmt1->b == 2);
!   if (fmt2->b == 10)
!     {
!       /* _Float16 needs at most 21 decimal digits (e.g.
! 	 0x1.a3cp-14f16 is exactly 0.000100076198577880859375DL),
! 	 so it is not a proper subset of _Decimal64 but is subset
! 	 of _Decimal128.  While std::bfloat16_t needs at most 96
! 	 decimal digits, so even _Decimal128 doesn't cover it.
! 	 _Float32 has at least one value which needs 112 decimal
! 	 digits, _Float64 at least 767 decimal digits.  */
!       if (fmt1->emin == -13
! 	  && fmt1->emax == 16
! 	  && fmt1->p == 11
! 	  && fmt2->emin == -6142
! 	  && fmt2->emax == 6145
! 	  && fmt2->p == 34)
! 	return -2;
!       return 3;
!     }
!   gcc_assert (fmt2->b == 2);
    /* For {ibm,mips}_extended_format formats, the type has variable
       precision up to ~2150 bits when the first double is around maximum
       representable double and second double is subnormal minimum.
*************** cxx_mark_addressable (tree exp, bool arr
*** 8114,8119 ****
--- 8137,8146 ----
  		    || DECL_IN_AGGR_P (x) == 0
  		    || TREE_STATIC (x)
  		    || DECL_EXTERNAL (x));
+ 	if (VAR_P (x)
+ 	    && DECL_ANON_UNION_VAR_P (x)
+ 	    && !TREE_ADDRESSABLE (x))
+ 	  cxx_mark_addressable (DECL_VALUE_EXPR (x));
  	/* Fall through.  */
  
        case RESULT_DECL:
diff -Nrcpad gcc-15.2.0/gcc/cp/typeck2.cc gcc-15.3.0/gcc/cp/typeck2.cc
*** gcc-15.2.0/gcc/cp/typeck2.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cp/typeck2.cc	Fri Jun 12 06:09:06 2026
*************** build_functional_cast_1 (location_t loc,
*** 2509,2517 ****
  	      return error_mark_node;
  	    }
  	  else if (cxx_dialect < cxx23)
! 	    pedwarn (loc, OPT_Wc__23_extensions,
! 		     "%<auto(x)%> only available with "
! 		     "%<-std=c++23%> or %<-std=gnu++23%>");
  	}
        else
  	{
--- 2509,2520 ----
  	      return error_mark_node;
  	    }
  	  else if (cxx_dialect < cxx23)
! 	    {
! 	      if ((complain & tf_warning_or_error) != 0)
! 		pedwarn (loc, OPT_Wc__23_extensions,
! 			 "%<auto(x)%> only available with "
! 			 "%<-std=c++23%> or %<-std=gnu++23%>");
! 	    }
  	}
        else
  	{
diff -Nrcpad gcc-15.2.0/gcc/cse.cc gcc-15.3.0/gcc/cse.cc
*** gcc-15.2.0/gcc/cse.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/cse.cc	Fri Jun 12 06:09:06 2026
*************** find_sets_in_insn (rtx_insn *insn, vec<s
*** 4297,4304 ****
  		 used to tell CSE how to get to a particular constant.  */
  	      rtx y = simplify_gen_vec_select (SET_DEST (x), i);
  	      gcc_assert (y);
! 	      rtx set = gen_rtx_SET (y, CONST_VECTOR_ELT (src, i));
! 	      add_to_set (psets, set, true);
  	    }
  	}
        else
--- 4297,4307 ----
  		 used to tell CSE how to get to a particular constant.  */
  	      rtx y = simplify_gen_vec_select (SET_DEST (x), i);
  	      gcc_assert (y);
! 	      if (!REG_P (y))
! 		{
! 		  rtx set = gen_rtx_SET (y, CONST_VECTOR_ELT (src, i));
! 		  add_to_set (psets, set, true);
! 		}
  	    }
  	}
        else
diff -Nrcpad gcc-15.2.0/gcc/d/ChangeLog gcc-15.3.0/gcc/d/ChangeLog
*** gcc-15.2.0/gcc/d/ChangeLog	Fri Aug  8 06:52:35 2025
--- gcc-15.3.0/gcc/d/ChangeLog	Fri Jun 12 06:10:03 2026
***************
*** 1,3 ****
--- 1,133 ----
+ 2026-06-12  Release Manager
+ 
+ 	* GCC 15.3.0 released.
+ 
+ 2026-05-05  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2026-05-05  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/125089
+ 	* types.cc (finish_aggregate_mode): Explicitly set TYPE_MODE of
+ 	non-POD types here.
+ 	(finish_aggregate_type): Propagate TREE_ADDRESSABLE to all variants.
+ 	(TypeVisitor::visit (TypeStruct *)): Set TREE_ADDRESSABLE before
+ 	visiting struct members.
+ 
+ 2026-04-20  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2026-04-20  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/123411
+ 	* types.cc (TypeVisitor::visit (TypeEnum *)): Only call layout_type on
+ 	the TYPE_MAIN_VARIANT of the enum.
+ 
+ 2026-02-08  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2026-02-08  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/124026
+ 	* expr.cc (ExprVisitor::visit (FuncExp *)): Always convert function
+ 	literal to a delegate if the expression expects one.
+ 
+ 2026-01-30  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2026-01-30  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/123264
+ 	* types.cc (finish_aggregate_type): Propagate struct TYPE_NAME to all
+ 	TYPE_NEXT_VARIANT types.
+ 
+ 2026-01-29  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2026-01-29  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/123407
+ 	* decl.cc (get_symbol_decl): Handle declarations with matching
+ 	assembler names, but different TREE_CODE.
+ 
+ 2026-01-29  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2026-01-29  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/123046
+ 	* d-codegen.cc (build_address): Return `null' when generating the
+ 	address of a `noreturn' declaration.
+ 	(d_build_call): Compare TYPE_MAIN_VARIANT of type with `noreturn'.
+ 	* decl.cc (get_fndecl_arguments): Likewise.
+ 	* types.cc (finish_aggregate_mode): Likewise.
+ 	(TypeVisitor::visit (TypeFunction *)): Likewise.
+ 
+ 2026-01-29  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2026-01-29  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/123349
+ 	* d-spec.cc (lang_specific_driver): Use xstrdup to copy -defaultlib
+ 	and -debuglib argument, and unconditionally free the old value.
+ 
+ 2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/123419
+ 	* expr.cc (ExprVisitor::visit (VarExp *)): Adjust assertion.
+ 
+ 2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/123798
+ 	* types.cc (insert_aggregate_bitfield): Set DECL_NONADDRESSABLE_P and
+ 	DECL_PADDING_P on bit-field decls.
+ 	(finish_aggregate_type): Pass the aligned bit offset to layout_decl.
+ 
+ 2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/121477
+ 	* d-codegen.cc (d_mark_addressable): Give an error if taking the
+ 	address of a DECL_BIT_FIELD.
+ 
+ 2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/123422
+ 	* expr.cc (ExprVisitor::visit (ArrayLiteralExp *)): Don't add
+ 	TARGET_EXPR around constructor.
+ 	* toir.cc (IRVisitor::visit (ReturnStatement *)): Recognize more
+ 	patterns for return value optimization.
+ 
+ 2026-01-27  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2026-01-27  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/120096
+ 	* expr.cc (ExprVisitor::visit (ArrayLiteralExp *)): Include saved side
+ 	effects in expression result.
+ 
+ 2026-01-27  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2026-01-27  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/122817
+ 	* d-lang.cc (d_parse_file): Set module filename location after
+ 	creation.
+ 
  2025-08-08  Release Manager
  
  	* GCC 15.2.0 released.
diff -Nrcpad gcc-15.2.0/gcc/d/d-codegen.cc gcc-15.3.0/gcc/d/d-codegen.cc
*** gcc-15.2.0/gcc/d/d-codegen.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/d/d-codegen.cc	Fri Jun 12 06:09:06 2026
*************** build_address (tree exp)
*** 705,710 ****
--- 705,715 ----
    if (TREE_CODE (exp) == CONST_DECL)
      exp = DECL_INITIAL (exp);
  
+   /* Type `noreturn' has no storage, return `null' for the expression.  */
+   if (DECL_P (exp) && TREE_CODE (exp) != FIELD_DECL
+       && TYPE_MAIN_VARIANT (TREE_TYPE (exp)) == noreturn_type_node)
+     return compound_expr (init, null_pointer_node);
+ 
    /* Some expression lowering may request an address of a compile-time constant,
       or other non-lvalue expression.  Make sure it is assigned to a location we
       can reference.  */
*************** d_mark_addressable (tree exp, bool compl
*** 744,751 ****
  {
    switch (TREE_CODE (exp))
      {
-     case ADDR_EXPR:
      case COMPONENT_REF:
      case ARRAY_REF:
      case REALPART_EXPR:
      case IMAGPART_EXPR:
--- 749,760 ----
  {
    switch (TREE_CODE (exp))
      {
      case COMPONENT_REF:
+       if (complain && DECL_BIT_FIELD (TREE_OPERAND (exp, 1)))
+ 	error ("cannot take address of bit-field %qD", TREE_OPERAND (exp, 1));
+ 
+       /* Fall through.  */
+     case ADDR_EXPR:
      case ARRAY_REF:
      case REALPART_EXPR:
      case IMAGPART_EXPR:
*************** d_build_call (TypeFunction *tf, tree cal
*** 2354,2360 ****
  
  	  /* Type `noreturn` is a terminator, as no other arguments can possibly
  	     be evaluated after it.  */
! 	  if (TREE_TYPE (targ) == noreturn_type_node)
  	    noreturn_call = true;
  
  	  vec_safe_push (args, targ);
--- 2363,2369 ----
  
  	  /* Type `noreturn` is a terminator, as no other arguments can possibly
  	     be evaluated after it.  */
! 	  if (TYPE_MAIN_VARIANT (TREE_TYPE (targ)) == noreturn_type_node)
  	    noreturn_call = true;
  
  	  vec_safe_push (args, targ);
*************** d_build_call (TypeFunction *tf, tree cal
*** 2374,2380 ****
        unsigned int ix;
  
        FOR_EACH_VEC_SAFE_ELT (args, ix, arg)
! 	saved_args = compound_expr (saved_args, arg);
  
        /* Add a stub result type for the expression.  */
        tree result = build_zero_cst (TREE_TYPE (ctype));
--- 2383,2394 ----
        unsigned int ix;
  
        FOR_EACH_VEC_SAFE_ELT (args, ix, arg)
! 	{
! 	  saved_args = compound_expr (saved_args, arg);
! 
! 	  if (TYPE_MAIN_VARIANT (TREE_TYPE (arg)) == noreturn_type_node)
! 	    break;
! 	}
  
        /* Add a stub result type for the expression.  */
        tree result = build_zero_cst (TREE_TYPE (ctype));
diff -Nrcpad gcc-15.2.0/gcc/d/d-lang.cc gcc-15.3.0/gcc/d/d-lang.cc
*** gcc-15.2.0/gcc/d/d-lang.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/d/d-lang.cc	Fri Jun 12 06:09:06 2026
*************** d_parse_file (void)
*** 1128,1133 ****
--- 1128,1134 ----
  				      Identifier::idPool ("__stdin"),
  				      global.params.ddoc.doOutput,
  				      global.params.dihdr.doOutput);
+ 	  m->loc = Loc::singleFilename (in_fnames[i]);
  	  modules.push (m);
  
  	  /* Zero the padding past the end of the buffer so the D lexer has a
*************** d_parse_file (void)
*** 1148,1153 ****
--- 1149,1155 ----
  	  Module *m = Module::create (in_fnames[i], Identifier::idPool (name),
  				      global.params.ddoc.doOutput,
  				      global.params.dihdr.doOutput);
+ 	  m->loc = Loc::singleFilename (in_fnames[i]);
  	  modules.push (m);
  	  FileName::free (name);
  	}
diff -Nrcpad gcc-15.2.0/gcc/d/d-spec.cc gcc-15.3.0/gcc/d/d-spec.cc
*** gcc-15.2.0/gcc/d/d-spec.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/d/d-spec.cc	Fri Jun 12 06:09:06 2026
*************** lang_specific_driver (cl_decoded_option
*** 162,185 ****
  	  break;
  
  	case OPT_defaultlib_:
! 	  if (defaultlib != NULL)
! 	    free (CONST_CAST (char *, defaultlib));
  	  if (arg != NULL)
  	    {
  	      args[i] |= SKIPOPT;
! 	      defaultlib = XNEWVEC (char, strlen (arg));
! 	      strcpy (CONST_CAST (char *, defaultlib), arg);
  	    }
  	  break;
  
  	case OPT_debuglib_:
! 	  if (debuglib != NULL)
! 	    free (CONST_CAST (char *, debuglib));
  	  if (arg != NULL)
  	    {
  	      args[i] |= SKIPOPT;
! 	      debuglib = XNEWVEC (char, strlen (arg));
! 	      strcpy (CONST_CAST (char *, debuglib), arg);
  	    }
  	  break;
  
--- 162,181 ----
  	  break;
  
  	case OPT_defaultlib_:
! 	  free (CONST_CAST (char *, defaultlib));
  	  if (arg != NULL)
  	    {
  	      args[i] |= SKIPOPT;
! 	      defaultlib = xstrdup (arg);
  	    }
  	  break;
  
  	case OPT_debuglib_:
! 	  free (CONST_CAST (char *, debuglib));
  	  if (arg != NULL)
  	    {
  	      args[i] |= SKIPOPT;
! 	      debuglib = xstrdup (arg);
  	    }
  	  break;
  
diff -Nrcpad gcc-15.2.0/gcc/d/decl.cc gcc-15.3.0/gcc/d/decl.cc
*** gcc-15.2.0/gcc/d/decl.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/d/decl.cc	Fri Jun 12 06:09:06 2026
*************** get_fndecl_arguments (FuncDeclaration *d
*** 184,190 ****
  
  	  /* Type `noreturn` is a terminator, as no other arguments can possibly
  	     be evaluated after it.  */
! 	  if (TREE_TYPE (parm_decl) == noreturn_type_node)
  	    break;
  
  	  /* Chain them in the correct order.  */
--- 184,190 ----
  
  	  /* Type `noreturn` is a terminator, as no other arguments can possibly
  	     be evaluated after it.  */
! 	  if (TYPE_MAIN_VARIANT (TREE_TYPE (parm_decl)) == noreturn_type_node)
  	    break;
  
  	  /* Chain them in the correct order.  */
*************** get_symbol_decl (Declaration *decl)
*** 1213,1220 ****
  
    /* Deal with placeholder symbols immediately:
       SymbolDeclaration is used as a shell around an initializer symbol.  */
!   SymbolDeclaration *sd = decl->isSymbolDeclaration ();
!   if (sd)
      {
        decl->csym = aggregate_initializer_decl (sd->dsym);
        return decl->csym;
--- 1213,1219 ----
  
    /* Deal with placeholder symbols immediately:
       SymbolDeclaration is used as a shell around an initializer symbol.  */
!   if (SymbolDeclaration *sd = decl->isSymbolDeclaration ())
      {
        decl->csym = aggregate_initializer_decl (sd->dsym);
        return decl->csym;
*************** get_symbol_decl (Declaration *decl)
*** 1225,1232 ****
      return get_typeinfo_decl ((TypeInfoDeclaration *) decl);
  
    /* FuncAliasDeclaration is used to import functions from another scope.  */
!   FuncAliasDeclaration *fad = decl->isFuncAliasDeclaration ();
!   if (fad)
      {
        decl->csym = get_symbol_decl (fad->funcalias);
        return decl->csym;
--- 1224,1230 ----
      return get_typeinfo_decl ((TypeInfoDeclaration *) decl);
  
    /* FuncAliasDeclaration is used to import functions from another scope.  */
!   if (FuncAliasDeclaration *fad = decl->isFuncAliasDeclaration ())
      {
        decl->csym = get_symbol_decl (fad->funcalias);
        return decl->csym;
*************** get_symbol_decl (Declaration *decl)
*** 1261,1268 ****
      }
  
    /* Build the tree for the symbol.  */
!   FuncDeclaration *fd = decl->isFuncDeclaration ();
!   if (fd)
      {
        /* Run full semantic on functions we need to know about.  */
        if (!dmd::functionSemantic (fd))
--- 1259,1265 ----
      }
  
    /* Build the tree for the symbol.  */
!   if (FuncDeclaration *fd = decl->isFuncDeclaration ())
      {
        /* Run full semantic on functions we need to know about.  */
        if (!dmd::functionSemantic (fd))
*************** get_symbol_decl (Declaration *decl)
*** 1354,1382 ****
        if (IDENTIFIER_DSYMBOL (mangled_name))
  	{
  	  Declaration *other = IDENTIFIER_DSYMBOL (mangled_name);
! 	  tree olddecl = decl->csym;
! 	  decl->csym = get_symbol_decl (other);
! 
! 	  /* Update the symbol location to the current definition.  */
! 	  if (DECL_EXTERNAL (decl->csym) && !DECL_INITIAL (decl->csym))
! 	    DECL_SOURCE_LOCATION (decl->csym) = DECL_SOURCE_LOCATION (olddecl);
  
! 	  /* The current declaration is a prototype or marked extern, merge
! 	     applied user attributes and return.  */
! 	  if (DECL_EXTERNAL (olddecl) && !DECL_INITIAL (olddecl))
! 	    {
! 	      apply_user_attributes (decl, decl->csym);
! 	      return decl->csym;
! 	    }
! 	  /* The previous declaration is a prototype or marked extern, set the
! 	     current declaration as the main reference of the symbol.  */
! 	  else if (DECL_EXTERNAL (decl->csym) && !DECL_INITIAL (decl->csym))
  	    {
! 	      IDENTIFIER_DSYMBOL (mangled_name) = decl;
! 	      DECL_EXTERNAL (decl->csym) = 0;
  	    }
! 	  /* Non-extern, non-templated decls shouldn't be defined twice.  */
! 	  else if (!decl->isInstantiated ())
  	    ScopeDsymbol::multiplyDefined (decl->loc, decl, other);
  	}
        else
--- 1351,1388 ----
        if (IDENTIFIER_DSYMBOL (mangled_name))
  	{
  	  Declaration *other = IDENTIFIER_DSYMBOL (mangled_name);
! 	  tree newdecl = decl->csym;
! 	  tree olddecl = get_symbol_decl (other);
  
! 	  if (TREE_CODE (olddecl) == TREE_CODE (newdecl))
  	    {
! 	      /* Update the symbol location to the current definition.  */
! 	      if (DECL_EXTERNAL (olddecl) && !DECL_INITIAL (olddecl))
! 		DECL_SOURCE_LOCATION (olddecl) = DECL_SOURCE_LOCATION (newdecl);
! 
! 	      /* The current declaration is a prototype or marked extern, merge
! 		 applied user attributes and return.  */
! 	      if (DECL_EXTERNAL (newdecl) && !DECL_INITIAL (newdecl))
! 		{
! 		  apply_user_attributes (decl, olddecl);
! 		  decl->csym = olddecl;
! 		  return decl->csym;
! 		}
! 	      /* The previous declaration is a prototype or marked extern, set
! 		 the current declaration as the main reference of the symbol.
! 	       */
! 	      else if (DECL_EXTERNAL (olddecl) && !DECL_INITIAL (olddecl))
! 		{
! 		  IDENTIFIER_DSYMBOL (mangled_name) = decl;
! 		  decl->csym = olddecl;
! 		  DECL_EXTERNAL (decl->csym) = 0;
! 		}
! 	      /* Non-extern, non-templated decls shouldn't be defined twice.  */
! 	      else if (!decl->isInstantiated ())
! 		ScopeDsymbol::multiplyDefined (decl->loc, decl, other);
  	    }
! 	  /* Declarations are for conflicting kinds of symbol.  */
! 	  else
  	    ScopeDsymbol::multiplyDefined (decl->loc, decl, other);
  	}
        else
*************** get_symbol_decl (Declaration *decl)
*** 1418,1423 ****
--- 1424,1432 ----
      }
    else if (TREE_CODE (decl->csym) == FUNCTION_DECL)
      {
+       FuncDeclaration *fd = decl->isFuncDeclaration ();
+       gcc_assert (fd != NULL);
+ 
        /* Dual-context functions require the code generation to build an array
  	 for the context pointer of the function, making the delicate task of
  	 tracking which context to follow when encountering a non-local symbol,
*************** get_symbol_decl (Declaration *decl)
*** 1571,1576 ****
--- 1580,1586 ----
    if (decl->isDataseg () || decl->isCodeseg () || decl->isThreadlocal ())
      {
        /* Set TREE_PUBLIC by default, but allow private template to override.  */
+       FuncDeclaration *fd = decl->isFuncDeclaration ();
        if (!fd || !fd->isNested ())
  	TREE_PUBLIC (decl->csym) = 1;
  
diff -Nrcpad gcc-15.2.0/gcc/d/expr.cc gcc-15.3.0/gcc/d/expr.cc
*** gcc-15.2.0/gcc/d/expr.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/d/expr.cc	Fri Jun 12 06:09:06 2026
*************** public:
*** 2034,2060 ****
      /* Compile the declaration.  */
      build_lambda_tree (e->fd, e->type->toBasetype ());
  
!     /* If nested, this will be a trampoline.  */
!     if (e->fd->isNested ())
!       {
! 	tree func = build_address (get_symbol_decl (e->fd));
! 	tree object;
  
! 	if (this->constp_)
  	  {
! 	    /* Static delegate variables have no context pointer.  */
! 	    object = null_pointer_node;
! 	    this->result_ = build_method_call (func, object, e->fd->type);
  	    TREE_CONSTANT (this->result_) = 1;
  	  }
  	else
  	  {
! 	    object = get_frame_for_symbol (e->fd);
  	    this->result_ = build_method_call (func, object, e->fd->type);
  	  }
        }
      else
        {
  	this->result_ = build_nop (build_ctype (e->type),
  				   build_address (get_symbol_decl (e->fd)));
        }
--- 2034,2064 ----
      /* Compile the declaration.  */
      build_lambda_tree (e->fd, e->type->toBasetype ());
  
!     tree func = build_address (get_symbol_decl (e->fd));
!     Type *tb = e->type->toBasetype ();
  
!     /* If a delegate is expected, the literal will be inferred as a delegate
!        even if it accesses no variables from an enclosing function.  */
!     if (tb->ty == TY::Tdelegate)
!       {
! 	/* Static delegate variables have no context pointer.  */
! 	if (this->constp_ || !e->fd->isNested ())
  	  {
! 	    this->result_ = build_method_call (func, null_pointer_node,
! 					       e->fd->type);
  	    TREE_CONSTANT (this->result_) = 1;
  	  }
  	else
  	  {
! 	    gcc_assert (e->fd->isNested ());
! 	    tree object = get_frame_for_symbol (e->fd);
  	    this->result_ = build_method_call (func, object, e->fd->type);
  	  }
        }
      else
        {
+ 	/* The function literal is a function pointer.  */
+ 	gcc_assert (tb->ty == TY::Tpointer);
  	this->result_ = build_nop (build_ctype (e->type),
  				   build_address (get_symbol_decl (e->fd)));
        }
*************** public:
*** 2174,2180 ****
  	      {
  		/* Generate a slice for non-zero initialized aggregates,
  		   otherwise create an empty array.  */
! 		gcc_assert (e->type->isConst ()
  			    && e->type->nextOf ()->ty == TY::Tvoid);
  
  		tree type = build_ctype (e->type);
--- 2178,2184 ----
  	      {
  		/* Generate a slice for non-zero initialized aggregates,
  		   otherwise create an empty array.  */
! 		gcc_assert (e->type->nextOf ()->isConst ()
  			    && e->type->nextOf ()->ty == TY::Tvoid);
  
  		tree type = build_ctype (e->type);
*************** public:
*** 2708,2715 ****
  	/* Array literal for a `scope' dynamic array.  */
  	gcc_assert (tb->ty == TY::Tarray);
  	ctor = force_target_expr (ctor);
! 	this->result_ = d_array_value (type, size_int (e->elements->length),
! 				       build_address (ctor));
        }
      else
        {
--- 2712,2720 ----
  	/* Array literal for a `scope' dynamic array.  */
  	gcc_assert (tb->ty == TY::Tarray);
  	ctor = force_target_expr (ctor);
! 	ctor = d_array_value (type, size_int (e->elements->length),
! 			      build_address (ctor));
! 	this->result_ = compound_expr (saved_elems, ctor);
        }
      else
        {
diff -Nrcpad gcc-15.2.0/gcc/d/toir.cc gcc-15.3.0/gcc/d/toir.cc
*** gcc-15.2.0/gcc/d/toir.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/d/toir.cc	Fri Jun 12 06:09:06 2026
*************** public:
*** 1022,1062 ****
  	/* Detect a call to a constructor function, or if returning a struct
  	   literal, write result directly into the return value.  */
  	StructLiteralExp *sle = NULL;
  	bool using_rvo_p = false;
  
  	if (DotVarExp *dve = (s->exp->isCallExp ()
  			      ? s->exp->isCallExp ()->e1->isDotVarExp ()
  			      : NULL))
  	  {
  	    if (dve->var->isCtorDeclaration ())
  	      {
  		if (CommaExp *ce = dve->e1->isCommaExp ())
  		  {
! 		    /* Temporary initialized inside a return expression, and
! 		       used as the return value.  Replace it with the hidden
! 			reference to allow RVO return.  */
! 		    DeclarationExp *de = ce->e1->isDeclarationExp ();
! 		    VarExp *ve = ce->e2->isVarExp ();
! 		    if (de != NULL && ve != NULL
! 			&& ve->var == de->declaration
! 			&& ve->var->storage_class & STCtemp)
! 		      {
! 			tree var = get_symbol_decl (ve->var);
! 			TREE_ADDRESSABLE (var) = 1;
! 			SET_DECL_VALUE_EXPR (var, decl);
! 			DECL_HAS_VALUE_EXPR_P (var) = 1;
! 			SET_DECL_LANG_NRVO (var, this->func_->shidden);
! 			using_rvo_p = true;
! 		      }
  		  }
  		else
  		  sle = dve->e1->isStructLiteralExp ();
  	      }
  	  }
  	else
  	  sle = s->exp->isStructLiteralExp ();
  
! 	if (sle != NULL)
  	  {
  	    StructDeclaration *sd = type->baseElemOf ()->isTypeStruct ()->sym;
  	    sle->sym = build_address (this->func_->shidden);
--- 1022,1085 ----
  	/* Detect a call to a constructor function, or if returning a struct
  	   literal, write result directly into the return value.  */
  	StructLiteralExp *sle = NULL;
+ 	DeclarationExp *de = NULL;
+ 	VarExp *ve = NULL;
  	bool using_rvo_p = false;
  
  	if (DotVarExp *dve = (s->exp->isCallExp ()
  			      ? s->exp->isCallExp ()->e1->isDotVarExp ()
  			      : NULL))
  	  {
+ 	    /* Look for `var.__ctor(copytmp = {}, &copytmp)'  */
  	    if (dve->var->isCtorDeclaration ())
  	      {
  		if (CommaExp *ce = dve->e1->isCommaExp ())
  		  {
! 		    de = ce->e1->isDeclarationExp ();
! 		    ve = ce->e2->isVarExp ();
  		  }
  		else
  		  sle = dve->e1->isStructLiteralExp ();
  	      }
  	  }
+ 	else if (CommaExp *ce1 = s->exp->isCommaExp ())
+ 	  {
+ 	    /* Look for `copytmp = {}, copytmp.__ctor(), copytmp'  */
+ 	    if (CommaExp *ce2 = ce1->e2->isCommaExp ())
+ 	      {
+ 		DotVarExp *dve = ce2->e1->isCallExp ()
+ 		  ? ce2->e1->isCallExp ()->e1->isDotVarExp () : NULL;
+ 
+ 		if (dve && dve->var->isCtorDeclaration ())
+ 		  {
+ 		    de = ce1->e1->isDeclarationExp ();
+ 		    ve = ce2->e2->isVarExp ();
+ 		  }
+ 	      }
+ 	    else
+ 	      {
+ 		de = ce1->e1->isDeclarationExp ();
+ 		ve = ce1->e2->isVarExp ();
+ 	      }
+ 	  }
  	else
  	  sle = s->exp->isStructLiteralExp ();
  
! 	if (de != NULL && ve != NULL
! 	    && ve->var == de->declaration
! 	    && ve->var->storage_class & STCtemp)
! 	  {
! 	    /* Temporary initialized inside a return expression, and
! 	       used as the return value.  Replace it with the hidden
! 	       reference to allow RVO return.  */
! 	    tree var = get_symbol_decl (ve->var);
! 	    TREE_ADDRESSABLE (var) = 1;
! 	    SET_DECL_VALUE_EXPR (var, decl);
! 	    DECL_HAS_VALUE_EXPR_P (var) = 1;
! 	    SET_DECL_LANG_NRVO (var, this->func_->shidden);
! 	    using_rvo_p = true;
! 	  }
! 	else if (sle != NULL)
  	  {
  	    StructDeclaration *sd = type->baseElemOf ()->isTypeStruct ()->sym;
  	    sle->sym = build_address (this->func_->shidden);
diff -Nrcpad gcc-15.2.0/gcc/d/types.cc gcc-15.3.0/gcc/d/types.cc
*** gcc-15.2.0/gcc/d/types.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/d/types.cc	Fri Jun 12 06:09:06 2026
*************** insert_aggregate_bitfield (tree type, tr
*** 324,329 ****
--- 324,333 ----
    DECL_BIT_FIELD (bitfield) = 1;
    DECL_BIT_FIELD_TYPE (bitfield) = TREE_TYPE (bitfield);
  
+   DECL_NONADDRESSABLE_P (bitfield) = 1;
+   if (DECL_NAME (bitfield) == NULL_TREE)
+     DECL_PADDING_P (bitfield) = 1;
+ 
    TYPE_FIELDS (type) = chainon (TYPE_FIELDS (type), bitfield);
  }
  
*************** finish_aggregate_mode (tree type)
*** 589,595 ****
  	return;
      }
  
!   compute_record_mode (type);
  
    /* Propagate computed mode to all variants of this aggregate type.  */
    for (tree t = TYPE_MAIN_VARIANT (type); t; t = TYPE_NEXT_VARIANT (t))
--- 593,604 ----
  	return;
      }
  
!   /* Force mode of non-trivially copyable structs to be BLKmode, preventing it
!      from being returned in a register.  */
!   if (TREE_ADDRESSABLE (type))
!     SET_TYPE_MODE (type, BLKmode);
!   else
!     compute_record_mode (type);
  
    /* Propagate computed mode to all variants of this aggregate type.  */
    for (tree t = TYPE_MAIN_VARIANT (type); t; t = TYPE_NEXT_VARIANT (t))
*************** finish_aggregate_type (unsigned structsi
*** 671,677 ****
  	  continue;
  	}
  
!       layout_decl (field, 0);
  
        /* Give bit-field its proper type after layout_decl.  */
        if (DECL_BIT_FIELD (field))
--- 680,690 ----
  	  continue;
  	}
  
!       /* Layout the field decl using its known alignment.  */
!       unsigned int known_align =
! 	least_bit_hwi (tree_to_uhwi (DECL_FIELD_BIT_OFFSET (field)));
! 
!       layout_decl (field, known_align);
  
        /* Give bit-field its proper type after layout_decl.  */
        if (DECL_BIT_FIELD (field))
*************** finish_aggregate_type (unsigned structsi
*** 699,704 ****
--- 712,718 ----
        if (t == type)
  	continue;
  
+       TYPE_NAME (t) = TYPE_NAME (type);
        TYPE_FIELDS (t) = TYPE_FIELDS (type);
        TYPE_LANG_SPECIFIC (t) = TYPE_LANG_SPECIFIC (type);
        TYPE_SIZE (t) = TYPE_SIZE (type);
*************** finish_aggregate_type (unsigned structsi
*** 706,711 ****
--- 720,726 ----
        TYPE_PACKED (t) = TYPE_PACKED (type);
        SET_TYPE_ALIGN (t, TYPE_ALIGN (type));
        TYPE_USER_ALIGN (t) = TYPE_USER_ALIGN (type);
+       TREE_ADDRESSABLE (t) = TREE_ADDRESSABLE (type);
      }
  
    /* Complete any other forward-referenced fields of this aggregate type.  */
*************** public:
*** 955,961 ****
  
  	/* Type `noreturn` is a terminator, as no other arguments can possibly
  	   be evaluated after it.  */
! 	if (type == noreturn_type_node)
  	  break;
  
  	fnparams = chainon (fnparams, build_tree_list (0, type));
--- 970,976 ----
  
  	/* Type `noreturn` is a terminator, as no other arguments can possibly
  	   be evaluated after it.  */
! 	if (TYPE_MAIN_VARIANT (type) == noreturn_type_node)
  	  break;
  
  	fnparams = chainon (fnparams, build_tree_list (0, type));
*************** public:
*** 981,987 ****
      d_keep (t->ctype);
  
      /* Qualify function types that have the type `noreturn` as volatile.  */
!     if (fntype == noreturn_type_node)
        t->ctype = build_qualified_type (t->ctype, TYPE_QUAL_VOLATILE);
  
      /* Handle any special support for calling conventions.  */
--- 996,1002 ----
      d_keep (t->ctype);
  
      /* Qualify function types that have the type `noreturn` as volatile.  */
!     if (TYPE_MAIN_VARIANT (fntype) == noreturn_type_node)
        t->ctype = build_qualified_type (t->ctype, TYPE_QUAL_VOLATILE);
  
      /* Handle any special support for calling conventions.  */
*************** public:
*** 1170,1202 ****
      /* Finish the enumeration type.  */
      if (TREE_CODE (t->ctype) == ENUMERAL_TYPE)
        {
! 	TYPE_MIN_VALUE (t->ctype) = TYPE_MIN_VALUE (basetype);
! 	TYPE_MAX_VALUE (t->ctype) = TYPE_MAX_VALUE (basetype);
! 	TYPE_UNSIGNED (t->ctype) = TYPE_UNSIGNED (basetype);
! 	SET_TYPE_ALIGN (t->ctype, TYPE_ALIGN (basetype));
! 	TYPE_SIZE (t->ctype) = NULL_TREE;
! 	TYPE_PRECISION (t->ctype) = dmd::size (t, t->sym->loc) * 8;
  
! 	layout_type (t->ctype);
  
  	/* Fix up all forward-referenced variants of this enum type.  */
! 	for (tree v = TYPE_MAIN_VARIANT (t->ctype); v;
! 	     v = TYPE_NEXT_VARIANT (v))
  	  {
! 	    if (v == t->ctype)
! 	      continue;
! 
! 	    TYPE_VALUES (v) = TYPE_VALUES (t->ctype);
! 	    TYPE_LANG_SPECIFIC (v) = TYPE_LANG_SPECIFIC (t->ctype);
! 	    TYPE_MIN_VALUE (v) = TYPE_MIN_VALUE (t->ctype);
! 	    TYPE_MAX_VALUE (v) = TYPE_MAX_VALUE (t->ctype);
! 	    TYPE_UNSIGNED (v) = TYPE_UNSIGNED (t->ctype);
! 	    TYPE_SIZE (v) = TYPE_SIZE (t->ctype);
! 	    TYPE_SIZE_UNIT (v) = TYPE_SIZE_UNIT (t->ctype);
! 	    SET_TYPE_MODE (v, TYPE_MODE (t->ctype));
! 	    TYPE_PRECISION (v) = TYPE_PRECISION (t->ctype);
! 	    SET_TYPE_ALIGN (v, TYPE_ALIGN (t->ctype));
! 	    TYPE_USER_ALIGN (v) = TYPE_USER_ALIGN (t->ctype);
  	  }
  
  	/* Complete forward-referenced fields of this enum type.  */
--- 1185,1219 ----
      /* Finish the enumeration type.  */
      if (TREE_CODE (t->ctype) == ENUMERAL_TYPE)
        {
! 	tree type = TYPE_MAIN_VARIANT (t->ctype);
  
! 	if (type == t->ctype)
! 	  {
! 	    TYPE_MIN_VALUE (type) = TYPE_MIN_VALUE (basetype);
! 	    TYPE_MAX_VALUE (type) = TYPE_MAX_VALUE (basetype);
! 	    TYPE_UNSIGNED (type) = TYPE_UNSIGNED (basetype);
! 	    SET_TYPE_ALIGN (type, TYPE_ALIGN (basetype));
! 	    TYPE_SIZE (type) = NULL_TREE;
! 	    TYPE_PRECISION (type) = dmd::size (t, t->sym->loc) * 8;
! 
! 	    layout_type (type);
! 	  }
  
  	/* Fix up all forward-referenced variants of this enum type.  */
! 	for (tree variant = TYPE_NEXT_VARIANT (type); variant;
! 	     variant = TYPE_NEXT_VARIANT (variant))
  	  {
! 	    TYPE_VALUES (variant) = TYPE_VALUES (type);
! 	    TYPE_LANG_SPECIFIC (variant) = TYPE_LANG_SPECIFIC (type);
! 	    TYPE_MIN_VALUE (variant) = TYPE_MIN_VALUE (type);
! 	    TYPE_MAX_VALUE (variant) = TYPE_MAX_VALUE (type);
! 	    TYPE_UNSIGNED (variant) = TYPE_UNSIGNED (type);
! 	    TYPE_SIZE (variant) = TYPE_SIZE (type);
! 	    TYPE_SIZE_UNIT (variant) = TYPE_SIZE_UNIT (type);
! 	    SET_TYPE_MODE (variant, TYPE_MODE (type));
! 	    TYPE_PRECISION (variant) = TYPE_PRECISION (type);
! 	    SET_TYPE_ALIGN (variant, TYPE_ALIGN (type));
! 	    TYPE_USER_ALIGN (variant) = TYPE_USER_ALIGN (type);
  	  }
  
  	/* Complete forward-referenced fields of this enum type.  */
*************** public:
*** 1223,1228 ****
--- 1240,1251 ----
      TYPE_LANG_SPECIFIC (t->ctype) = build_lang_type (t);
      TYPE_CXX_ODR_P (t->ctype) = 1;
  
+     /* For structs with a user defined postblit, copy constructor, or a
+        destructor, also set TREE_ADDRESSABLE on the type and all variants.
+        This will make the struct be passed around by reference.  */
+     if (!t->sym->isPOD ())
+       TREE_ADDRESSABLE (t->ctype) = 1;
+ 
      if (t->sym->members)
        {
  	/* Must set up the overall size and alignment before determining
*************** public:
*** 1244,1261 ****
  	build_type_decl (t->ctype, t->sym);
  	apply_user_attributes (t->sym, t->ctype);
        }
- 
-     /* For structs with a user defined postblit, copy constructor, or a
-        destructor, also set TREE_ADDRESSABLE on the type and all variants.
-        This will make the struct be passed around by reference.  */
-     if (!t->sym->isPOD ())
-       {
- 	for (tree tv = t->ctype; tv != NULL_TREE; tv = TYPE_NEXT_VARIANT (tv))
- 	  {
- 	    TREE_ADDRESSABLE (tv) = 1;
- 	    SET_TYPE_MODE (tv, BLKmode);
- 	  }
-       }
    }
  
    /* Build a class type.  Whereas structs are value types, classes are
--- 1267,1272 ----
diff -Nrcpad gcc-15.2.0/gcc/diagnostic-format-sarif.cc gcc-15.3.0/gcc/diagnostic-format-sarif.cc
*** gcc-15.2.0/gcc/diagnostic-format-sarif.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/diagnostic-format-sarif.cc	Fri Jun 12 06:09:06 2026
*************** maybe_get_sarif_level (diagnostic_t diag
*** 1838,1843 ****
--- 1838,1844 ----
      {
      case DK_WARNING:
        return "warning";
+     case DK_FATAL:
      case DK_ERROR:
        return "error";
      case DK_NOTE:
diff -Nrcpad gcc-15.2.0/gcc/diagnostic.cc gcc-15.3.0/gcc/diagnostic.cc
*** gcc-15.2.0/gcc/diagnostic.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/diagnostic.cc	Fri Jun 12 06:09:06 2026
*************** diagnostic_context::execution_failed_p (
*** 476,482 ****
  {
    /* Equivalent to (seen_error () || werrorcount), but on
       this context, rather than global_dc.  */
!   return (diagnostic_count (DK_ERROR)
  	  || diagnostic_count (DK_SORRY)
  	  || diagnostic_count (DK_WERROR));
  }
--- 476,483 ----
  {
    /* Equivalent to (seen_error () || werrorcount), but on
       this context, rather than global_dc.  */
!   return (diagnostic_count (DK_FATAL)
! 	  || diagnostic_count (DK_ERROR)
  	  || diagnostic_count (DK_SORRY)
  	  || diagnostic_count (DK_WERROR));
  }
*************** diagnostic_context::report_verbatim (tex
*** 1566,1576 ****
  /* Get the number of digits in the decimal representation of VALUE.  */
  
  int
! num_digits (int value)
  {
    /* Perhaps simpler to use log10 for this, but doing it this way avoids
       using floating point.  */
-   gcc_assert (value >= 0);
  
    if (value == 0)
      return 1;
--- 1567,1576 ----
  /* Get the number of digits in the decimal representation of VALUE.  */
  
  int
! num_digits (uint64_t value)
  {
    /* Perhaps simpler to use log10 for this, but doing it this way avoids
       using floating point.  */
  
    if (value == 0)
      return 1;
*************** test_num_digits ()
*** 2397,2402 ****
--- 2397,2403 ----
    ASSERT_EQ (7, num_digits (9999999));
    ASSERT_EQ (8, num_digits (10000000));
    ASSERT_EQ (8, num_digits (99999999));
+   ASSERT_EQ (20, num_digits (uint64_t (-1)));
  }
  
  /* Run all of the selftests within this file.  */
diff -Nrcpad gcc-15.2.0/gcc/diagnostic.h gcc-15.3.0/gcc/diagnostic.h
*** gcc-15.2.0/gcc/diagnostic.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/diagnostic.h	Fri Jun 12 06:09:06 2026
*************** extern const char *diagnostic_get_color_
*** 1254,1260 ****
  extern char *build_message_string (const char *, ...) ATTRIBUTE_PRINTF_1;
  
  /* Compute the number of digits in the decimal representation of an integer.  */
! extern int num_digits (int);
  
  inline bool
  warning_enabled_at (location_t loc, diagnostic_option_id option_id)
--- 1254,1260 ----
  extern char *build_message_string (const char *, ...) ATTRIBUTE_PRINTF_1;
  
  /* Compute the number of digits in the decimal representation of an integer.  */
! extern int num_digits (uint64_t);
  
  inline bool
  warning_enabled_at (location_t loc, diagnostic_option_id option_id)
diff -Nrcpad gcc-15.2.0/gcc/doc/avr-mmcu.texi gcc-15.3.0/gcc/doc/avr-mmcu.texi
*** gcc-15.2.0/gcc/doc/avr-mmcu.texi	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/doc/avr-mmcu.texi	Fri Jun 12 06:09:06 2026
***************
*** 54,60 ****
  
  @item @anchor{avrxmega3}avrxmega3
  ``XMEGA'' devices with up to 64@tie{}KiB of combined program memory and RAM, and with program memory visible in the RAM address space.
! @*@var{mcu}@tie{}= @code{attiny202}, @code{attiny204}, @code{attiny212}, @code{attiny214}, @code{attiny402}, @code{attiny404}, @code{attiny406}, @code{attiny412}, @code{attiny414}, @code{attiny416}, @code{attiny416auto}, @code{attiny417}, @code{attiny424}, @code{attiny426}, @code{attiny427}, @code{attiny804}, @code{attiny806}, @code{attiny807}, @code{attiny814}, @code{attiny816}, @code{attiny817}, @code{attiny824}, @code{attiny826}, @code{attiny827}, @code{attiny1604}, @code{attiny1606}, @code{attiny1607}, @code{attiny1614}, @code{attiny1616}, @code{attiny1617}, @code{attiny1624}, @code{attiny1626}, @code{attiny1627}, @code{attiny3214}, @code{attiny3216}, @code{attiny3217}, @code{attiny3224}, @code{attiny3226}, @code{attiny3227}, @code{atmega808}, @code{atmega809}, @code{atmega1608}, @code{atmega1609}, @code{atmega3208}, @code{atmega3209}, @code{atmega4808}, @code{atmega4809}, @code{avr16dd14}, @code{avr16dd20}, @code{avr16dd28}, @code{avr16dd32}, @code{avr16du14}, @code{avr16du20}, @code{avr16du28}, @code{avr16du32}, @code{avr16ea28}, @code{avr16ea32}, @code{avr16ea48}, @code{avr16eb14}, @code{avr16eb20}, @code{avr16eb28}, @code{avr16eb32}, @code{avr32da28}, @code{avr32da28s}, @code{avr32da32}, @code{avr32da32s}, @code{avr32da48}, @code{avr32da48s}, @code{avr32db28}, @code{avr32db32}, @code{avr32db48}, @code{avr32dd14}, @code{avr32dd20}, @code{avr32dd28}, @code{avr32dd32}, @code{avr32du14}, @code{avr32du20}, @code{avr32du28}, @code{avr32du32}, @code{avr32ea28}, @code{avr32ea32}, @code{avr32ea48}, @code{avr32sd20}, @code{avr32sd28}, @code{avr32sd32}.
  
  @item @anchor{avrxmega4}avrxmega4
  ``XMEGA'' devices with more than 64@tie{}KiB and up to 128@tie{}KiB of program memory.
--- 54,60 ----
  
  @item @anchor{avrxmega3}avrxmega3
  ``XMEGA'' devices with up to 64@tie{}KiB of combined program memory and RAM, and with program memory visible in the RAM address space.
! @*@var{mcu}@tie{}= @code{attiny202}, @code{attiny204}, @code{attiny212}, @code{attiny214}, @code{attiny402}, @code{attiny404}, @code{attiny406}, @code{attiny412}, @code{attiny414}, @code{attiny416}, @code{attiny416auto}, @code{attiny417}, @code{attiny424}, @code{attiny426}, @code{attiny427}, @code{attiny804}, @code{attiny806}, @code{attiny807}, @code{attiny814}, @code{attiny816}, @code{attiny817}, @code{attiny824}, @code{attiny826}, @code{attiny827}, @code{attiny1604}, @code{attiny1606}, @code{attiny1607}, @code{attiny1614}, @code{attiny1616}, @code{attiny1617}, @code{attiny1624}, @code{attiny1626}, @code{attiny1627}, @code{attiny3214}, @code{attiny3216}, @code{attiny3217}, @code{attiny3224}, @code{attiny3226}, @code{attiny3227}, @code{atmega808}, @code{atmega809}, @code{atmega1608}, @code{atmega1609}, @code{atmega3208}, @code{atmega3209}, @code{atmega4808}, @code{atmega4809}, @code{avr16dd14}, @code{avr16dd20}, @code{avr16dd28}, @code{avr16dd32}, @code{avr16du14}, @code{avr16du20}, @code{avr16du28}, @code{avr16du32}, @code{avr16ea28}, @code{avr16ea32}, @code{avr16ea48}, @code{avr16eb14}, @code{avr16eb20}, @code{avr16eb28}, @code{avr16eb32}, @code{avr16la14}, @code{avr16la20}, @code{avr16la28}, @code{avr16la32}, @code{avr32da28}, @code{avr32da28s}, @code{avr32da32}, @code{avr32da32s}, @code{avr32da48}, @code{avr32da48s}, @code{avr32db28}, @code{avr32db32}, @code{avr32db48}, @code{avr32dd14}, @code{avr32dd20}, @code{avr32dd28}, @code{avr32dd32}, @code{avr32du14}, @code{avr32du20}, @code{avr32du28}, @code{avr32du32}, @code{avr32ea28}, @code{avr32ea32}, @code{avr32ea48}, @code{avr32eb14}, @code{avr32eb20}, @code{avr32eb28}, @code{avr32eb32}, @code{avr32la14}, @code{avr32la20}, @code{avr32la28}, @code{avr32la32}, @code{avr32sd20}, @code{avr32sd28}, @code{avr32sd32}.
  
  @item @anchor{avrxmega4}avrxmega4
  ``XMEGA'' devices with more than 64@tie{}KiB and up to 128@tie{}KiB of program memory.
diff -Nrcpad gcc-15.2.0/gcc/doc/cpp.1 gcc-15.3.0/gcc/doc/cpp.1
*** gcc-15.2.0/gcc/doc/cpp.1	Fri Aug  8 06:54:13 2025
--- gcc-15.3.0/gcc/doc/cpp.1	Fri Jun 12 06:11:48 2026
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
--- 1,5 ----
! .\" -*- mode: troff; coding: utf-8 -*-
! .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
***************
*** 15,43 ****
  .ft R
  .fi
  ..
! .\" Set up some character translations and predefined strings.  \*(-- will
! .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
! .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
! .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
! .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
! .\" nothing in troff, for use with C<>.
! .tr \(*W-
! .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
  .ie n \{\
- .    ds -- \(*W-
- .    ds PI pi
- .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
- .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
- .    ds L" ""
- .    ds R" ""
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
- .    ds -- \|\(em\|
- .    ds PI \(*p
- .    ds L" ``
- .    ds R" ''
  .    ds C`
  .    ds C'
  'br\}
--- 16,27 ----
  .ft R
  .fi
  ..
! .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
  .ie n \{\
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
  .    ds C`
  .    ds C'
  'br\}
***************
*** 54,142 ****
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .if !\nF .nr F 0
! .if \nF>0 \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    if !\nF==2 \{\
! .        nr % 0
! .        nr F 2
  .    \}
  .\}
  .\"
! .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
! .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
! .    \" fudge factors for nroff and troff
! .if n \{\
! .    ds #H 0
! .    ds #V .8m
! .    ds #F .3m
! .    ds #[ \f1
! .    ds #] \fP
! .\}
! .if t \{\
! .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
! .    ds #V .6m
! .    ds #F 0
! .    ds #[ \&
! .    ds #] \&
! .\}
! .    \" simple accents for nroff and troff
! .if n \{\
! .    ds ' \&
! .    ds ` \&
! .    ds ^ \&
! .    ds , \&
! .    ds ~ ~
! .    ds /
! .\}
! .if t \{\
! .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
! .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
! .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
! .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
! .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
! .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
! .\}
! .    \" troff and (daisy-wheel) nroff accents
! .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
! .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
! .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
! .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
! .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
! .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
! .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
! .ds ae a\h'-(\w'a'u*4/10)'e
! .ds Ae A\h'-(\w'A'u*4/10)'E
! .    \" corrections for vroff
! .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
! .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
! .    \" for low resolution devices (crt and lpr)
! .if \n(.H>23 .if \n(.V>19 \
! \{\
! .    ds : e
! .    ds 8 ss
! .    ds o a
! .    ds d- d\h'-1'\(ga
! .    ds D- D\h'-1'\(hy
! .    ds th \o'bp'
! .    ds Th \o'LP'
! .    ds ae ae
! .    ds Ae AE
! .\}
! .rm #[ #] #H #V #F C
  .\" ========================================================================
  .\"
  .IX Title "CPP 1"
! .TH CPP 1 "2025-08-08" "gcc-15.2.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH "NAME"
  cpp \- The C Preprocessor
! .SH "SYNOPSIS"
  .IX Header "SYNOPSIS"
  cpp [\fB\-D\fR\fImacro\fR[=\fIdefn\fR]...] [\fB\-U\fR\fImacro\fR]
      [\fB\-I\fR\fIdir\fR...] [\fB\-iquote\fR\fIdir\fR...]
--- 38,71 ----
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .nr rF 0
! .if \n(.g .if rF .nr rF 1
! .if (\n(rF:(\n(.g==0)) \{\
! .    if \nF \{\
! .        de IX
! .        tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .        if !\nF==2 \{\
! .            nr % 0
! .            nr F 2
! .        \}
  .    \}
  .\}
+ .rr rF
  .\"
! .\" Required to disable full justification in groff 1.23.0.
! .if n .ds AD l
  .\" ========================================================================
  .\"
  .IX Title "CPP 1"
! .TH CPP 1 2026-06-12 gcc-15.3.0 GNU
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH NAME
  cpp \- The C Preprocessor
! .SH SYNOPSIS
  .IX Header "SYNOPSIS"
  cpp [\fB\-D\fR\fImacro\fR[=\fIdefn\fR]...] [\fB\-U\fR\fImacro\fR]
      [\fB\-I\fR\fIdir\fR...] [\fB\-iquote\fR\fIdir\fR...]
*************** cpp [\fB\-D\fR\fImacro\fR[=\fIdefn\fR]..
*** 146,155 ****
      \fIinfile\fR [[\fB\-o\fR] \fIoutfile\fR]
  .PP
  Only the most useful options are given above; see below for a more
! complete list of preprocessor-specific options.  
  In addition, \fBcpp\fR accepts most \fBgcc\fR driver options, which
! are not listed here.  Refer to the \s-1GCC\s0 documentation for details.
! .SH "DESCRIPTION"
  .IX Header "DESCRIPTION"
  The C preprocessor, often known as \fIcpp\fR, is a \fImacro processor\fR
  that is used automatically by the C compiler to transform your program
--- 75,84 ----
      \fIinfile\fR [[\fB\-o\fR] \fIoutfile\fR]
  .PP
  Only the most useful options are given above; see below for a more
! complete list of preprocessor\-specific options.  
  In addition, \fBcpp\fR accepts most \fBgcc\fR driver options, which
! are not listed here.  Refer to the GCC documentation for details.
! .SH DESCRIPTION
  .IX Header "DESCRIPTION"
  The C preprocessor, often known as \fIcpp\fR, is a \fImacro processor\fR
  that is used automatically by the C compiler to transform your program
*************** before compilation.  It is called a macr
*** 157,165 ****
  you to define \fImacros\fR, which are brief abbreviations for longer
  constructs.
  .PP
! The C preprocessor is intended to be used only with C, \*(C+, and
! Objective-C source code.  In the past, it has been abused as a general
! text processor.  It will choke on input which does not obey C's lexical
  rules.  For example, apostrophes will be interpreted as the beginning of
  character constants, and cause errors.  Also, you cannot rely on it
  preserving characteristics of the input which are not significant to
--- 86,94 ----
  you to define \fImacros\fR, which are brief abbreviations for longer
  constructs.
  .PP
! The C preprocessor is intended to be used only with C, C++, and
! Objective\-C source code.  In the past, it has been abused as a general
! text processor.  It will choke on input which does not obey C\*(Aqs lexical
  rules.  For example, apostrophes will be interpreted as the beginning of
  character constants, and cause errors.  Also, you cannot rely on it
  preserving characteristics of the input which are not significant to
*************** C\-family languages.  If a Makefile is p
*** 167,205 ****
  will be removed, and the Makefile will not work.
  .PP
  Having said that, you can often get away with using cpp on things which
! are not C.  Other Algol-ish programming languages are often safe
  (Ada, etc.) So is assembly, with caution.  \fB\-traditional\-cpp\fR
  mode preserves more white space, and is otherwise more permissive.  Many
! of the problems can be avoided by writing C or \*(C+ style comments
  instead of native language comments, and keeping macros simple.
  .PP
  Wherever possible, you should use a preprocessor geared to the language
! you are writing in.  Modern versions of the \s-1GNU\s0 assembler have macro
  facilities.  Most high level programming languages have their own
  conditional compilation and inclusion mechanism.  If all else fails,
! try a true general text processor, such as \s-1GNU M4.\s0
  .PP
! C preprocessors vary in some details.  This manual discusses the \s-1GNU C\s0
! preprocessor, which provides a small superset of the features of \s-1ISO\s0
! Standard C.  In its default mode, the \s-1GNU C\s0 preprocessor does not do a
  few things required by the standard.  These are features which are
  rarely, if ever, used, and may cause surprising changes to the meaning
! of a program which does not expect them.  To get strict \s-1ISO\s0 Standard C,
  you should use the \fB\-std=c90\fR, \fB\-std=c99\fR,
  \&\fB\-std=c11\fR or \fB\-std=c17\fR options, depending
  on which version of the standard you want.  To get all the mandatory
  diagnostics, you must also use \fB\-pedantic\fR.
  .PP
! This manual describes the behavior of the \s-1ISO\s0 preprocessor.  To
! minimize gratuitous differences, where the \s-1ISO\s0 preprocessor's
  behavior does not conflict with traditional semantics, the
  traditional preprocessor should behave the same way.  The various
  differences that do exist are detailed in the section \fBTraditional
  Mode\fR.
  .PP
! For clarity, unless noted otherwise, references to \fB\s-1CPP\s0\fR in this
! manual refer to \s-1GNU CPP.\s0
! .SH "OPTIONS"
  .IX Header "OPTIONS"
  The \fBcpp\fR command expects two file names as arguments, \fIinfile\fR and
  \&\fIoutfile\fR.  The preprocessor reads \fIinfile\fR together with any
--- 96,134 ----
  will be removed, and the Makefile will not work.
  .PP
  Having said that, you can often get away with using cpp on things which
! are not C.  Other Algol\-ish programming languages are often safe
  (Ada, etc.) So is assembly, with caution.  \fB\-traditional\-cpp\fR
  mode preserves more white space, and is otherwise more permissive.  Many
! of the problems can be avoided by writing C or C++ style comments
  instead of native language comments, and keeping macros simple.
  .PP
  Wherever possible, you should use a preprocessor geared to the language
! you are writing in.  Modern versions of the GNU assembler have macro
  facilities.  Most high level programming languages have their own
  conditional compilation and inclusion mechanism.  If all else fails,
! try a true general text processor, such as GNU M4.
  .PP
! C preprocessors vary in some details.  This manual discusses the GNU C
! preprocessor, which provides a small superset of the features of ISO
! Standard C.  In its default mode, the GNU C preprocessor does not do a
  few things required by the standard.  These are features which are
  rarely, if ever, used, and may cause surprising changes to the meaning
! of a program which does not expect them.  To get strict ISO Standard C,
  you should use the \fB\-std=c90\fR, \fB\-std=c99\fR,
  \&\fB\-std=c11\fR or \fB\-std=c17\fR options, depending
  on which version of the standard you want.  To get all the mandatory
  diagnostics, you must also use \fB\-pedantic\fR.
  .PP
! This manual describes the behavior of the ISO preprocessor.  To
! minimize gratuitous differences, where the ISO preprocessor\*(Aqs
  behavior does not conflict with traditional semantics, the
  traditional preprocessor should behave the same way.  The various
  differences that do exist are detailed in the section \fBTraditional
  Mode\fR.
  .PP
! For clarity, unless noted otherwise, references to \fBCPP\fR in this
! manual refer to GNU CPP.
! .SH OPTIONS
  .IX Header "OPTIONS"
  The \fBcpp\fR command expects two file names as arguments, \fIinfile\fR and
  \&\fIoutfile\fR.  The preprocessor reads \fIinfile\fR together with any
*************** which take an argument may have that arg
*** 218,224 ****
  after the option, or with a space between option and argument:
  \&\fB\-Ifoo\fR and \fB\-I foo\fR have the same effect.
  .PP
! Many options have multi-letter names; therefore multiple single-letter
  options may \fInot\fR be grouped: \fB\-dM\fR is very different from
  \&\fB\-d\ \-M\fR.
  .IP "\fB\-D\fR \fIname\fR" 4
--- 147,153 ----
  after the option, or with a space between option and argument:
  \&\fB\-Ifoo\fR and \fB\-I foo\fR have the same effect.
  .PP
! Many options have multi\-letter names; therefore multiple single\-letter
  options may \fInot\fR be grouped: \fB\-dM\fR is very different from
  \&\fB\-d\ \-M\fR.
  .IP "\fB\-D\fR \fIname\fR" 4
*************** they appeared during translation phase t
*** 231,245 ****
  directive.  In particular, the definition is truncated by
  embedded newline characters.
  .Sp
! If you are invoking the preprocessor from a shell or shell-like
! program you may need to use the shell's quoting syntax to protect
  characters such as spaces that have a meaning in the shell syntax.
  .Sp
! If you wish to define a function-like macro on the command line, write
  its argument list with surrounding parentheses before the equals sign
  (if any).  Parentheses are meaningful to most shells, so you should
  quote the option.  With \fBsh\fR and \fBcsh\fR,
! \&\fB\-D'\fR\fIname\fR\fB(\fR\fIargs...\fR\fB)=\fR\fIdefinition\fR\fB'\fR works.
  .Sp
  \&\fB\-D\fR and \fB\-U\fR options are processed in the order they
  are given on the command line.  All \fB\-imacros\fR \fIfile\fR and
--- 160,174 ----
  directive.  In particular, the definition is truncated by
  embedded newline characters.
  .Sp
! If you are invoking the preprocessor from a shell or shell\-like
! program you may need to use the shell\*(Aqs quoting syntax to protect
  characters such as spaces that have a meaning in the shell syntax.
  .Sp
! If you wish to define a function\-like macro on the command line, write
  its argument list with surrounding parentheses before the equals sign
  (if any).  Parentheses are meaningful to most shells, so you should
  quote the option.  With \fBsh\fR and \fBcsh\fR,
! \&\fB\-D\*(Aq\fR\fIname\fR\fB(\fR\fIargs...\fR\fB)=\fR\fIdefinition\fR\fB\*(Aq\fR works.
  .Sp
  \&\fB\-D\fR and \fB\-U\fR options are processed in the order they
  are given on the command line.  All \fB\-imacros\fR \fIfile\fR and
*************** provided with a \fB\-D\fR option.
*** 253,259 ****
  .IX Item "-include file"
  Process \fIfile\fR as if \f(CW\*(C`#include "file"\*(C'\fR appeared as the first
  line of the primary source file.  However, the first directory searched
! for \fIfile\fR is the preprocessor's working directory \fIinstead of\fR
  the directory containing the main source file.  If not found there, it
  is searched for in the remainder of the \f(CW\*(C`#include "..."\*(C'\fR search
  chain as normal.
--- 182,188 ----
  .IX Item "-include file"
  Process \fIfile\fR as if \f(CW\*(C`#include "file"\*(C'\fR appeared as the first
  line of the primary source file.  However, the first directory searched
! for \fIfile\fR is the preprocessor\*(Aqs working directory \fIinstead of\fR
  the directory containing the main source file.  If not found there, it
  is searched for in the remainder of the \f(CW\*(C`#include "..."\*(C'\fR search
  chain as normal.
*************** processing its declarations.
*** 269,292 ****
  .Sp
  All files specified by \fB\-imacros\fR are processed before all files
  specified by \fB\-include\fR.
! .IP "\fB\-undef\fR" 4
  .IX Item "-undef"
! Do not predefine any system-specific or GCC-specific macros.  The
  standard predefined macros remain defined.
! .IP "\fB\-pthread\fR" 4
  .IX Item "-pthread"
! Define additional macros required for using the \s-1POSIX\s0 threads library.
  You should use this option consistently for both compilation and linking.
  This option is supported on GNU/Linux targets, most other Unix derivatives,
  and also on x86 Cygwin and MinGW targets.
! .IP "\fB\-M\fR" 4
  .IX Item "-M"
  Instead of outputting the result of preprocessing, output a rule
  suitable for \fBmake\fR describing the dependencies of the main
  source file.  The preprocessor outputs one \fBmake\fR rule containing
  the object file name for that source file, a colon, and the names of all
  the included files, including those coming from \fB\-include\fR or
! \&\fB\-imacros\fR command-line options.
  .Sp
  Unless specified explicitly (with \fB\-MT\fR or \fB\-MQ\fR), the
  object file name consists of the name of the source file with any
--- 198,221 ----
  .Sp
  All files specified by \fB\-imacros\fR are processed before all files
  specified by \fB\-include\fR.
! .IP \fB\-undef\fR 4
  .IX Item "-undef"
! Do not predefine any system\-specific or GCC\-specific macros.  The
  standard predefined macros remain defined.
! .IP \fB\-pthread\fR 4
  .IX Item "-pthread"
! Define additional macros required for using the POSIX threads library.
  You should use this option consistently for both compilation and linking.
  This option is supported on GNU/Linux targets, most other Unix derivatives,
  and also on x86 Cygwin and MinGW targets.
! .IP \fB\-M\fR 4
  .IX Item "-M"
  Instead of outputting the result of preprocessing, output a rule
  suitable for \fBmake\fR describing the dependencies of the main
  source file.  The preprocessor outputs one \fBmake\fR rule containing
  the object file name for that source file, a colon, and the names of all
  the included files, including those coming from \fB\-include\fR or
! \&\fB\-imacros\fR command\-line options.
  .Sp
  Unless specified explicitly (with \fB\-MT\fR or \fB\-MQ\fR), the
  object file name consists of the name of the source file with any
*************** parts removed.  If there are many includ
*** 295,310 ****
  split into several lines using \fB\e\fR\-newline.  The rule has no
  commands.
  .Sp
! This option does not suppress the preprocessor's debug output, such as
  \&\fB\-dM\fR.  To avoid mixing such debug output with the dependency
  rules you should explicitly specify the dependency output file with
  \&\fB\-MF\fR, or use an environment variable like
! \&\fB\s-1DEPENDENCIES_OUTPUT\s0\fR.  Debug output
  is still sent to the regular output stream as normal.
  .Sp
  Passing \fB\-M\fR to the driver implies \fB\-E\fR, and suppresses
  warnings with an implicit \fB\-w\fR.
! .IP "\fB\-MM\fR" 4
  .IX Item "-MM"
  Like \fB\-M\fR but do not mention header files that are found in
  system header directories, nor header files that are included,
--- 224,239 ----
  split into several lines using \fB\e\fR\-newline.  The rule has no
  commands.
  .Sp
! This option does not suppress the preprocessor\*(Aqs debug output, such as
  \&\fB\-dM\fR.  To avoid mixing such debug output with the dependency
  rules you should explicitly specify the dependency output file with
  \&\fB\-MF\fR, or use an environment variable like
! \&\fBDEPENDENCIES_OUTPUT\fR.  Debug output
  is still sent to the regular output stream as normal.
  .Sp
  Passing \fB\-M\fR to the driver implies \fB\-E\fR, and suppresses
  warnings with an implicit \fB\-w\fR.
! .IP \fB\-MM\fR 4
  .IX Item "-MM"
  Like \fB\-M\fR but do not mention header files that are found in
  system header directories, nor header files that are included,
*************** When used with the driver options \fB\-M
*** 324,330 ****
  \&\fB\-MF\fR overrides the default dependency output file.
  .Sp
  If \fIfile\fR is \fI\-\fR, then the dependencies are written to \fIstdout\fR.
! .IP "\fB\-MG\fR" 4
  .IX Item "-MG"
  In conjunction with an option such as \fB\-M\fR requesting
  dependency generation, \fB\-MG\fR assumes missing header files are
--- 253,259 ----
  \&\fB\-MF\fR overrides the default dependency output file.
  .Sp
  If \fIfile\fR is \fI\-\fR, then the dependencies are written to \fIstdout\fR.
! .IP \fB\-MG\fR 4
  .IX Item "-MG"
  In conjunction with an option such as \fB\-M\fR requesting
  dependency generation, \fB\-MG\fR assumes missing header files are
*************** also suppresses preprocessed output, as
*** 335,346 ****
  this useless.
  .Sp
  This feature is used in automatic updating of makefiles.
! .IP "\fB\-Mno\-modules\fR" 4
  .IX Item "-Mno-modules"
  Disable dependency generation for compiled module interfaces.
! .IP "\fB\-MP\fR" 4
  .IX Item "-MP"
! This option instructs \s-1CPP\s0 to add a phony target for each dependency
  other than the main file, causing each to depend on nothing.  These
  dummy rules work around errors \fBmake\fR gives if you remove header
  files without updating the \fIMakefile\fR to match.
--- 264,275 ----
  this useless.
  .Sp
  This feature is used in automatic updating of makefiles.
! .IP \fB\-Mno\-modules\fR 4
  .IX Item "-Mno-modules"
  Disable dependency generation for compiled module interfaces.
! .IP \fB\-MP\fR 4
  .IX Item "-MP"
! This option instructs CPP to add a phony target for each dependency
  other than the main file, causing each to depend on nothing.  These
  dummy rules work around errors \fBmake\fR gives if you remove header
  files without updating the \fIMakefile\fR to match.
*************** This is typical output:
*** 355,369 ****
  .IP "\fB\-MT\fR \fItarget\fR" 4
  .IX Item "-MT target"
  Change the target of the rule emitted by dependency generation.  By
! default \s-1CPP\s0 takes the name of the main input file, deletes any
  directory components and any file suffix such as \fB.c\fR, and
! appends the platform's usual object suffix.  The result is the target.
  .Sp
  An \fB\-MT\fR option sets the target to be exactly the string you
  specify.  If you want multiple targets, you can specify them as a single
  argument to \fB\-MT\fR, or use multiple \fB\-MT\fR options.
  .Sp
! For example, \fB\-MT\ '$(objpfx)foo.o'\fR might give
  .Sp
  .Vb 1
  \&        $(objpfx)foo.o: foo.c
--- 284,298 ----
  .IP "\fB\-MT\fR \fItarget\fR" 4
  .IX Item "-MT target"
  Change the target of the rule emitted by dependency generation.  By
! default CPP takes the name of the main input file, deletes any
  directory components and any file suffix such as \fB.c\fR, and
! appends the platform\*(Aqs usual object suffix.  The result is the target.
  .Sp
  An \fB\-MT\fR option sets the target to be exactly the string you
  specify.  If you want multiple targets, you can specify them as a single
  argument to \fB\-MT\fR, or use multiple \fB\-MT\fR options.
  .Sp
! For example, \fB\-MT\ \*(Aq$(objpfx)foo.o\*(Aq\fR might give
  .Sp
  .Vb 1
  \&        $(objpfx)foo.o: foo.c
*************** For example, \fB\-MT\ '$(objpfx)foo.o'\f
*** 371,377 ****
  .IP "\fB\-MQ\fR \fItarget\fR" 4
  .IX Item "-MQ target"
  Same as \fB\-MT\fR, but it quotes any characters which are special to
! Make.  \fB\-MQ\ '$(objpfx)foo.o'\fR gives
  .Sp
  .Vb 1
  \&        $$(objpfx)foo.o: foo.c
--- 300,306 ----
  .IP "\fB\-MQ\fR \fItarget\fR" 4
  .IX Item "-MQ target"
  Same as \fB\-MT\fR, but it quotes any characters which are special to
! Make.  \fB\-MQ\ \*(Aq$(objpfx)foo.o\*(Aq\fR gives
  .Sp
  .Vb 1
  \&        $$(objpfx)foo.o: foo.c
*************** Make.  \fB\-MQ\ '$(objpfx)foo.o'\fR give
*** 379,385 ****
  .Sp
  The default target is automatically quoted, as if it were given with
  \&\fB\-MQ\fR.
! .IP "\fB\-MD\fR" 4
  .IX Item "-MD"
  \&\fB\-MD\fR is equivalent to \fB\-M \-MF\fR \fIfile\fR, except that
  \&\fB\-E\fR is not implied.  The driver determines \fIfile\fR based on
--- 308,314 ----
  .Sp
  The default target is automatically quoted, as if it were given with
  \&\fB\-MQ\fR.
! .IP \fB\-MD\fR 4
  .IX Item "-MD"
  \&\fB\-MD\fR is equivalent to \fB\-M \-MF\fR \fIfile\fR, except that
  \&\fB\-E\fR is not implied.  The driver determines \fIfile\fR based on
*************** is understood to specify a target object
*** 394,404 ****
  .Sp
  Since \fB\-E\fR is not implied, \fB\-MD\fR can be used to generate
  a dependency output file as a side effect of the compilation process.
! .IP "\fB\-MMD\fR" 4
  .IX Item "-MMD"
  Like \fB\-MD\fR except mention only user header files, not system
  header files.
! .IP "\fB\-fpreprocessed\fR" 4
  .IX Item "-fpreprocessed"
  Indicate to the preprocessor that the input file has already been
  preprocessed.  This suppresses things like macro expansion, trigraph
--- 323,333 ----
  .Sp
  Since \fB\-E\fR is not implied, \fB\-MD\fR can be used to generate
  a dependency output file as a side effect of the compilation process.
! .IP \fB\-MMD\fR 4
  .IX Item "-MMD"
  Like \fB\-MD\fR except mention only user header files, not system
  header files.
! .IP \fB\-fpreprocessed\fR 4
  .IX Item "-fpreprocessed"
  Indicate to the preprocessor that the input file has already been
  preprocessed.  This suppresses things like macro expansion, trigraph
*************** a tokenizer for the front ends.
*** 410,422 ****
  .Sp
  \&\fB\-fpreprocessed\fR is implicit if the input file has one of the
  extensions \fB.i\fR, \fB.ii\fR or \fB.mi\fR.  These are the
! extensions that \s-1GCC\s0 uses for preprocessed files created by
  \&\fB\-save\-temps\fR.
! .IP "\fB\-fdirectives\-only\fR" 4
  .IX Item "-fdirectives-only"
  When preprocessing, handle directives, but do not expand macros.
  .Sp
! The option's behavior depends on the \fB\-E\fR and \fB\-fpreprocessed\fR
  options.
  .Sp
  With \fB\-E\fR, preprocessing is limited to the handling of directives
--- 339,351 ----
  .Sp
  \&\fB\-fpreprocessed\fR is implicit if the input file has one of the
  extensions \fB.i\fR, \fB.ii\fR or \fB.mi\fR.  These are the
! extensions that GCC uses for preprocessed files created by
  \&\fB\-save\-temps\fR.
! .IP \fB\-fdirectives\-only\fR 4
  .IX Item "-fdirectives-only"
  When preprocessing, handle directives, but do not expand macros.
  .Sp
! The option\*(Aqs behavior depends on the \fB\-E\fR and \fB\-fpreprocessed\fR
  options.
  .Sp
  With \fB\-E\fR, preprocessing is limited to the handling of directives
*************** files previously preprocessed with \f(CW
*** 433,456 ****
  With both \fB\-E\fR and \fB\-fpreprocessed\fR, the rules for
  \&\fB\-fpreprocessed\fR take precedence.  This enables full preprocessing of
  files previously preprocessed with \f(CW\*(C`\-E \-fdirectives\-only\*(C'\fR.
! .IP "\fB\-fdollars\-in\-identifiers\fR" 4
  .IX Item "-fdollars-in-identifiers"
  Accept \fB$\fR in identifiers.
! .IP "\fB\-fextended\-identifiers\fR" 4
  .IX Item "-fextended-identifiers"
  Accept universal character names and extended characters in
  identifiers.  This option is enabled by default for C99 (and later C
! standard versions) and \*(C+.
! .IP "\fB\-fno\-canonical\-system\-headers\fR" 4
  .IX Item "-fno-canonical-system-headers"
  When preprocessing, do not shorten system header paths with canonicalization.
! .IP "\fB\-fmax\-include\-depth=\fR\fIdepth\fR" 4
  .IX Item "-fmax-include-depth=depth"
  Set the maximum depth of the nested #include. The default is 200.
! .IP "\fB\-fsearch\-include\-path\fR[\fB=\fR\fIkind\fR]" 4
  .IX Item "-fsearch-include-path[=kind]"
  Look for input files on the #include path, not just the current
! directory.  This is particularly useful with \*(C+20 modules, for which
  both header units and module interface units need to be compiled
  directly:
  .Sp
--- 362,385 ----
  With both \fB\-E\fR and \fB\-fpreprocessed\fR, the rules for
  \&\fB\-fpreprocessed\fR take precedence.  This enables full preprocessing of
  files previously preprocessed with \f(CW\*(C`\-E \-fdirectives\-only\*(C'\fR.
! .IP \fB\-fdollars\-in\-identifiers\fR 4
  .IX Item "-fdollars-in-identifiers"
  Accept \fB$\fR in identifiers.
! .IP \fB\-fextended\-identifiers\fR 4
  .IX Item "-fextended-identifiers"
  Accept universal character names and extended characters in
  identifiers.  This option is enabled by default for C99 (and later C
! standard versions) and C++.
! .IP \fB\-fno\-canonical\-system\-headers\fR 4
  .IX Item "-fno-canonical-system-headers"
  When preprocessing, do not shorten system header paths with canonicalization.
! .IP \fB\-fmax\-include\-depth=\fR\fIdepth\fR 4
  .IX Item "-fmax-include-depth=depth"
  Set the maximum depth of the nested #include. The default is 200.
! .IP \fB\-fsearch\-include\-path\fR[\fB=\fR\fIkind\fR] 4
  .IX Item "-fsearch-include-path[=kind]"
  Look for input files on the #include path, not just the current
! directory.  This is particularly useful with C++20 modules, for which
  both header units and module interface units need to be compiled
  directly:
  .Sp
*************** directly:
*** 458,473 ****
  \&        g++ \-c \-std=c++20 \-fmodules \-fsearch\-include\-path bits/stdc++.h bits/std.cc
  .Ve
  .Sp
! \&\fIkind\fR defaults to \fBuser\fR, which looks on the \f(CW\*(C`#include
! "..."\*(C'\fR search path; you can also explicitly specify \fBsystem\fR
  for the \f(CW\*(C`#include <...>\*(C'\fR search path.
! .IP "\fB\-ftabstop=\fR\fIwidth\fR" 4
  .IX Item "-ftabstop=width"
  Set the distance between tab stops.  This helps the preprocessor report
  correct column numbers in warnings or errors, even if tabs appear on the
  line.  If the value is less than 1 or greater than 100, the option is
  ignored.  The default is 8.
! .IP "\fB\-ftrack\-macro\-expansion\fR[\fB=\fR\fIlevel\fR]" 4
  .IX Item "-ftrack-macro-expansion[=level]"
  Track locations of tokens across macro expansions. This allows the
  compiler to emit diagnostic about the current macro expansion stack
--- 387,402 ----
  \&        g++ \-c \-std=c++20 \-fmodules \-fsearch\-include\-path bits/stdc++.h bits/std.cc
  .Ve
  .Sp
! \&\fIkind\fR defaults to \fBuser\fR, which looks on the \f(CW#include
! "..."\fR search path; you can also explicitly specify \fBsystem\fR
  for the \f(CW\*(C`#include <...>\*(C'\fR search path.
! .IP \fB\-ftabstop=\fR\fIwidth\fR 4
  .IX Item "-ftabstop=width"
  Set the distance between tab stops.  This helps the preprocessor report
  correct column numbers in warnings or errors, even if tabs appear on the
  line.  If the value is less than 1 or greater than 100, the option is
  ignored.  The default is 8.
! .IP \fB\-ftrack\-macro\-expansion\fR[\fB=\fR\fIlevel\fR] 4
  .IX Item "-ftrack-macro-expansion[=level]"
  Track locations of tokens across macro expansions. This allows the
  compiler to emit diagnostic about the current macro expansion stack
*************** when a compilation error occurs in a mac
*** 475,531 ****
  option makes the preprocessor and the compiler consume more
  memory. The \fIlevel\fR parameter can be used to choose the level of
  precision of token location tracking thus decreasing the memory
! consumption if necessary. Value \fB0\fR of \fIlevel\fR de-activates
  this option. Value \fB1\fR tracks tokens locations in a
  degraded mode for the sake of minimal memory overhead. In this mode
  all tokens resulting from the expansion of an argument of a
! function-like macro have the same location. Value \fB2\fR tracks
  tokens locations completely. This value is the most memory hungry.
  When this option is given no argument, the default parameter value is
  \&\fB2\fR.
  .Sp
  Note that \f(CW\*(C`\-ftrack\-macro\-expansion=2\*(C'\fR is activated by default.
! .IP "\fB\-fmacro\-prefix\-map=\fR\fIold\fR\fB=\fR\fInew\fR" 4
  .IX Item "-fmacro-prefix-map=old=new"
! When preprocessing files residing in directory \fI\fIold\fI\fR,
  expand the \f(CW\*(C`_\|_FILE_\|_\*(C'\fR and \f(CW\*(C`_\|_BASE_FILE_\|_\*(C'\fR macros as if the
! files resided in directory \fI\fInew\fI\fR instead.  This can be used
  to change an absolute path to a relative path by using \fI.\fR for
  \&\fInew\fR which can result in more reproducible builds that are
  location independent.  This option also affects
  \&\f(CW\*(C`_\|_builtin_FILE()\*(C'\fR during compilation.  See also
  \&\fB\-ffile\-prefix\-map\fR and \fB\-fcanon\-prefix\-map\fR.
! .IP "\fB\-fexec\-charset=\fR\fIcharset\fR" 4
  .IX Item "-fexec-charset=charset"
  Set the execution character set, used for string and character
! constants.  The default is \s-1UTF\-8.\s0  \fIcharset\fR can be any encoding
! supported by the system's \f(CW\*(C`iconv\*(C'\fR library routine.
! .IP "\fB\-fwide\-exec\-charset=\fR\fIcharset\fR" 4
  .IX Item "-fwide-exec-charset=charset"
  Set the wide execution character set, used for wide string and
! character constants.  The default is one of \s-1UTF\-32BE, UTF\-32LE, UTF\-16BE,\s0
! or \s-1UTF\-16LE,\s0 whichever corresponds to the width of \f(CW\*(C`wchar_t\*(C'\fR and the
! big-endian or little-endian byte order being used for code generation.  As
  with \fB\-fexec\-charset\fR, \fIcharset\fR can be any encoding supported
! by the system's \f(CW\*(C`iconv\*(C'\fR library routine; however, you will have
  problems with encodings that do not fit exactly in \f(CW\*(C`wchar_t\*(C'\fR.
! .IP "\fB\-finput\-charset=\fR\fIcharset\fR" 4
  .IX Item "-finput-charset=charset"
  Set the input character set, used for translation from the character
! set of the input file to the source character set used by \s-1GCC.\s0  If the
! locale does not specify, or \s-1GCC\s0 cannot get this information from the
! locale, the default is \s-1UTF\-8.\s0  This can be overridden by either the locale
! or this command-line option.  Currently the command-line option takes
! precedence if there's a conflict.  \fIcharset\fR can be any encoding
! supported by the system's \f(CW\*(C`iconv\*(C'\fR library routine.
! .IP "\fB\-fworking\-directory\fR" 4
  .IX Item "-fworking-directory"
  Enable generation of linemarkers in the preprocessor output that
  let the compiler know the current working directory at the time of
  preprocessing.  When this option is enabled, the preprocessor
  emits, after the initial linemarker, a second linemarker with the
! current working directory followed by two slashes.  \s-1GCC\s0 uses this
! directory, when it's present in the preprocessed input, as the
  directory emitted as the current working directory in some debugging
  information formats.  This option is implicitly enabled if debugging
  information is enabled, but this can be inhibited with the negated
--- 404,460 ----
  option makes the preprocessor and the compiler consume more
  memory. The \fIlevel\fR parameter can be used to choose the level of
  precision of token location tracking thus decreasing the memory
! consumption if necessary. Value \fB0\fR of \fIlevel\fR de\-activates
  this option. Value \fB1\fR tracks tokens locations in a
  degraded mode for the sake of minimal memory overhead. In this mode
  all tokens resulting from the expansion of an argument of a
! function\-like macro have the same location. Value \fB2\fR tracks
  tokens locations completely. This value is the most memory hungry.
  When this option is given no argument, the default parameter value is
  \&\fB2\fR.
  .Sp
  Note that \f(CW\*(C`\-ftrack\-macro\-expansion=2\*(C'\fR is activated by default.
! .IP \fB\-fmacro\-prefix\-map=\fR\fIold\fR\fB=\fR\fInew\fR 4
  .IX Item "-fmacro-prefix-map=old=new"
! When preprocessing files residing in directory \fIold\fR,
  expand the \f(CW\*(C`_\|_FILE_\|_\*(C'\fR and \f(CW\*(C`_\|_BASE_FILE_\|_\*(C'\fR macros as if the
! files resided in directory \fInew\fR instead.  This can be used
  to change an absolute path to a relative path by using \fI.\fR for
  \&\fInew\fR which can result in more reproducible builds that are
  location independent.  This option also affects
  \&\f(CW\*(C`_\|_builtin_FILE()\*(C'\fR during compilation.  See also
  \&\fB\-ffile\-prefix\-map\fR and \fB\-fcanon\-prefix\-map\fR.
! .IP \fB\-fexec\-charset=\fR\fIcharset\fR 4
  .IX Item "-fexec-charset=charset"
  Set the execution character set, used for string and character
! constants.  The default is UTF\-8.  \fIcharset\fR can be any encoding
! supported by the system\*(Aqs \f(CW\*(C`iconv\*(C'\fR library routine.
! .IP \fB\-fwide\-exec\-charset=\fR\fIcharset\fR 4
  .IX Item "-fwide-exec-charset=charset"
  Set the wide execution character set, used for wide string and
! character constants.  The default is one of UTF\-32BE, UTF\-32LE, UTF\-16BE,
! or UTF\-16LE, whichever corresponds to the width of \f(CW\*(C`wchar_t\*(C'\fR and the
! big\-endian or little\-endian byte order being used for code generation.  As
  with \fB\-fexec\-charset\fR, \fIcharset\fR can be any encoding supported
! by the system\*(Aqs \f(CW\*(C`iconv\*(C'\fR library routine; however, you will have
  problems with encodings that do not fit exactly in \f(CW\*(C`wchar_t\*(C'\fR.
! .IP \fB\-finput\-charset=\fR\fIcharset\fR 4
  .IX Item "-finput-charset=charset"
  Set the input character set, used for translation from the character
! set of the input file to the source character set used by GCC.  If the
! locale does not specify, or GCC cannot get this information from the
! locale, the default is UTF\-8.  This can be overridden by either the locale
! or this command\-line option.  Currently the command\-line option takes
! precedence if there\*(Aqs a conflict.  \fIcharset\fR can be any encoding
! supported by the system\*(Aqs \f(CW\*(C`iconv\*(C'\fR library routine.
! .IP \fB\-fworking\-directory\fR 4
  .IX Item "-fworking-directory"
  Enable generation of linemarkers in the preprocessor output that
  let the compiler know the current working directory at the time of
  preprocessing.  When this option is enabled, the preprocessor
  emits, after the initial linemarker, a second linemarker with the
! current working directory followed by two slashes.  GCC uses this
! directory, when it\*(Aqs present in the preprocessed input, as the
  directory emitted as the current working directory in some debugging
  information formats.  This option is implicitly enabled if debugging
  information is enabled, but this can be inhibited with the negated
*************** it does not use shell special characters
*** 542,548 ****
  .IX Item "-A -predicate=answer"
  Cancel an assertion with the predicate \fIpredicate\fR and answer
  \&\fIanswer\fR.
! .IP "\fB\-C\fR" 4
  .IX Item "-C"
  Do not discard comments.  All comments are passed through to the output
  file, except for comments in processed directives, which are deleted
--- 471,477 ----
  .IX Item "-A -predicate=answer"
  Cancel an assertion with the predicate \fIpredicate\fR and answer
  \&\fIanswer\fR.
! .IP \fB\-C\fR 4
  .IX Item "-C"
  Do not discard comments.  All comments are passed through to the output
  file, except for comments in processed directives, which are deleted
*************** causes the preprocessor to treat comment
*** 553,621 ****
  For example, comments appearing at the start of what would be a
  directive line have the effect of turning that line into an ordinary
  source line, since the first token on the line is no longer a \fB#\fR.
! .IP "\fB\-CC\fR" 4
  .IX Item "-CC"
  Do not discard comments, including during macro expansion.  This is
  like \fB\-C\fR, except that comments contained within macros are
  also passed through to the output file where the macro is expanded.
  .Sp
  In addition to the side effects of the \fB\-C\fR option, the
! \&\fB\-CC\fR option causes all \*(C+\-style comments inside a macro
  to be converted to C\-style comments.  This is to prevent later use
  of that macro from inadvertently commenting out the remainder of
  the source line.
  .Sp
  The \fB\-CC\fR option is generally used to support lint comments.
! .IP "\fB\-P\fR" 4
  .IX Item "-P"
  Inhibit generation of linemarkers in the output from the preprocessor.
  This might be useful when running the preprocessor on something that is
  not C code, and will be sent to a program which might be confused by the
  linemarkers.
! .IP "\fB\-traditional\fR" 4
  .IX Item "-traditional"
  .PD 0
! .IP "\fB\-traditional\-cpp\fR" 4
  .IX Item "-traditional-cpp"
  .PD
! Try to imitate the behavior of pre-standard C preprocessors, as
! opposed to \s-1ISO C\s0 preprocessors.
  .Sp
! Note that \s-1GCC\s0 does not otherwise attempt to emulate a pre-standard 
  C compiler, and these options are only supported with the \fB\-E\fR 
! switch, or when invoking \s-1CPP\s0 explicitly.
! .IP "\fB\-trigraphs\fR" 4
  .IX Item "-trigraphs"
! Support \s-1ISO C\s0 trigraphs.
! These are three-character sequences, all starting with \fB??\fR, that
! are defined by \s-1ISO C\s0 to stand for single characters.  For example,
! \&\fB??/\fR stands for \fB\e\fR, so \fB'??/n'\fR is a character
  constant for a newline.
  .Sp
! By default, \s-1GCC\s0 ignores trigraphs, but in
! standard-conforming modes it converts them.  See the \fB\-std\fR and
  \&\fB\-ansi\fR options.
! .IP "\fB\-remap\fR" 4
  .IX Item "-remap"
  Enable special code to work around file systems which only permit very
! short file names, such as MS-DOS.
! .IP "\fB\-H\fR" 4
  .IX Item "-H"
  Print the name of each header file used, in addition to other normal
  activities.  Each name is indented to show how deep in the
  \&\fB#include\fR stack it is.  Precompiled header files are also
  printed, even if they are found to be invalid; an invalid precompiled
  header file is printed with \fB...x\fR and a valid one with \fB...!\fR .
! .IP "\fB\-d\fR\fIletters\fR" 4
  .IX Item "-dletters"
  Says to make debugging dumps during compilation as specified by
  \&\fIletters\fR.  The flags documented here are those relevant to the
  preprocessor.  Other \fIletters\fR are interpreted
! by the compiler proper, or reserved for future versions of \s-1GCC,\s0 and so
  are silently ignored.  If you specify \fIletters\fR whose behavior
  conflicts, the result is undefined.
  .RS 4
! .IP "\fB\-dM\fR" 4
  .IX Item "-dM"
  Instead of the normal output, generate a list of \fB#define\fR
  directives for all the macros defined during the execution of the
--- 482,550 ----
  For example, comments appearing at the start of what would be a
  directive line have the effect of turning that line into an ordinary
  source line, since the first token on the line is no longer a \fB#\fR.
! .IP \fB\-CC\fR 4
  .IX Item "-CC"
  Do not discard comments, including during macro expansion.  This is
  like \fB\-C\fR, except that comments contained within macros are
  also passed through to the output file where the macro is expanded.
  .Sp
  In addition to the side effects of the \fB\-C\fR option, the
! \&\fB\-CC\fR option causes all C++\-style comments inside a macro
  to be converted to C\-style comments.  This is to prevent later use
  of that macro from inadvertently commenting out the remainder of
  the source line.
  .Sp
  The \fB\-CC\fR option is generally used to support lint comments.
! .IP \fB\-P\fR 4
  .IX Item "-P"
  Inhibit generation of linemarkers in the output from the preprocessor.
  This might be useful when running the preprocessor on something that is
  not C code, and will be sent to a program which might be confused by the
  linemarkers.
! .IP \fB\-traditional\fR 4
  .IX Item "-traditional"
  .PD 0
! .IP \fB\-traditional\-cpp\fR 4
  .IX Item "-traditional-cpp"
  .PD
! Try to imitate the behavior of pre\-standard C preprocessors, as
! opposed to ISO C preprocessors.
  .Sp
! Note that GCC does not otherwise attempt to emulate a pre\-standard 
  C compiler, and these options are only supported with the \fB\-E\fR 
! switch, or when invoking CPP explicitly.
! .IP \fB\-trigraphs\fR 4
  .IX Item "-trigraphs"
! Support ISO C trigraphs.
! These are three\-character sequences, all starting with \fB??\fR, that
! are defined by ISO C to stand for single characters.  For example,
! \&\fB??/\fR stands for \fB\e\fR, so \fB\*(Aq??/n\*(Aq\fR is a character
  constant for a newline.
  .Sp
! By default, GCC ignores trigraphs, but in
! standard\-conforming modes it converts them.  See the \fB\-std\fR and
  \&\fB\-ansi\fR options.
! .IP \fB\-remap\fR 4
  .IX Item "-remap"
  Enable special code to work around file systems which only permit very
! short file names, such as MS\-DOS.
! .IP \fB\-H\fR 4
  .IX Item "-H"
  Print the name of each header file used, in addition to other normal
  activities.  Each name is indented to show how deep in the
  \&\fB#include\fR stack it is.  Precompiled header files are also
  printed, even if they are found to be invalid; an invalid precompiled
  header file is printed with \fB...x\fR and a valid one with \fB...!\fR .
! .IP \fB\-d\fR\fIletters\fR 4
  .IX Item "-dletters"
  Says to make debugging dumps during compilation as specified by
  \&\fIletters\fR.  The flags documented here are those relevant to the
  preprocessor.  Other \fIletters\fR are interpreted
! by the compiler proper, or reserved for future versions of GCC, and so
  are silently ignored.  If you specify \fIletters\fR whose behavior
  conflicts, the result is undefined.
  .RS 4
! .IP \fB\-dM\fR 4
  .IX Item "-dM"
  Instead of the normal output, generate a list of \fB#define\fR
  directives for all the macros defined during the execution of the
*************** Assuming you have no file \fIfoo.h\fR, t
*** 628,646 ****
  .Ve
  .Sp
  shows all the predefined macros.
! .IP "\fB\-dD\fR" 4
  .IX Item "-dD"
  Like \fB\-dM\fR except that it outputs \fIboth\fR the \fB#define\fR
  directives and the result of preprocessing.  Both kinds of output go to
  the standard output file.
! .IP "\fB\-dN\fR" 4
  .IX Item "-dN"
  Like \fB\-dD\fR, but emit only the macro names, not their expansions.
! .IP "\fB\-dI\fR" 4
  .IX Item "-dI"
  Output \fB#include\fR directives in addition to the result of
  preprocessing.
! .IP "\fB\-dU\fR" 4
  .IX Item "-dU"
  Like \fB\-dD\fR except that only macros that are expanded, or whose
  definedness is tested in preprocessor directives, are output; the
--- 557,575 ----
  .Ve
  .Sp
  shows all the predefined macros.
! .IP \fB\-dD\fR 4
  .IX Item "-dD"
  Like \fB\-dM\fR except that it outputs \fIboth\fR the \fB#define\fR
  directives and the result of preprocessing.  Both kinds of output go to
  the standard output file.
! .IP \fB\-dN\fR 4
  .IX Item "-dN"
  Like \fB\-dD\fR, but emit only the macro names, not their expansions.
! .IP \fB\-dI\fR 4
  .IX Item "-dI"
  Output \fB#include\fR directives in addition to the result of
  preprocessing.
! .IP \fB\-dU\fR 4
  .IX Item "-dU"
  Like \fB\-dD\fR except that only macros that are expanded, or whose
  definedness is tested in preprocessor directives, are output; the
*************** undefined at the time.
*** 650,663 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-fdebug\-cpp\fR" 4
  .IX Item "-fdebug-cpp"
! This option is only useful for debugging \s-1GCC.\s0  When used from \s-1CPP\s0 or with
  \&\fB\-E\fR, it dumps debugging information about location maps.  Every
  token in the output is preceded by the dump of the map its location
  belongs to.
  .Sp
! When used from \s-1GCC\s0 without \fB\-E\fR, this option has no effect.
  .IP "\fB\-I\fR \fIdir\fR" 4
  .IX Item "-I dir"
  .PD 0
--- 579,592 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-fdebug\-cpp\fR 4
  .IX Item "-fdebug-cpp"
! This option is only useful for debugging GCC.  When used from CPP or with
  \&\fB\-E\fR, it dumps debugging information about location maps.  Every
  token in the output is preceded by the dump of the map its location
  belongs to.
  .Sp
! When used from GCC without \fB\-E\fR, this option has no effect.
  .IP "\fB\-I\fR \fIdir\fR" 4
  .IX Item "-I dir"
  .PD 0
*************** or \f(CW$SYSROOT\fR is replaced by the s
*** 676,715 ****
  \&\fB\-\-sysroot\fR and \fB\-isysroot\fR.
  .Sp
  Directories specified with \fB\-iquote\fR apply only to the quote 
! form of the directive, \f(CW\*(C`#include\ "\f(CIfile\f(CW"\*(C'\fR.
  Directories specified with \fB\-I\fR, \fB\-isystem\fR, 
  or \fB\-idirafter\fR apply to lookup for both the
! \&\f(CW\*(C`#include\ "\f(CIfile\f(CW"\*(C'\fR and
! \&\f(CW\*(C`#include\ <\f(CIfile\f(CW>\*(C'\fR directives.
  .Sp
  You can specify any number or combination of these options on the 
  command line to search for header files in several directories.  
  The lookup order is as follows:
  .RS 4
! .IP "1." 4
  .IX Item "1."
  For the quote form of the include directive, the directory of the current
  file is searched first.
! .IP "2." 4
  .IX Item "2."
  For the quote form of the include directive, the directories specified
! by \fB\-iquote\fR options are searched in left-to-right order,
  as they appear on the command line.
! .IP "3." 4
  .IX Item "3."
  Directories specified with \fB\-I\fR options are scanned in
! left-to-right order.
! .IP "4." 4
  .IX Item "4."
  Directories specified with \fB\-isystem\fR options are scanned in
! left-to-right order.
! .IP "5." 4
  .IX Item "5."
  Standard system directories are scanned.
! .IP "6." 4
  .IX Item "6."
  Directories specified with \fB\-idirafter\fR options are scanned in
! left-to-right order.
  .RE
  .RS 4
  .Sp
--- 605,644 ----
  \&\fB\-\-sysroot\fR and \fB\-isysroot\fR.
  .Sp
  Directories specified with \fB\-iquote\fR apply only to the quote 
! form of the directive, \f(CW\*(C`#include\ "\fR\f(CIfile\fR\f(CW"\*(C'\fR.
  Directories specified with \fB\-I\fR, \fB\-isystem\fR, 
  or \fB\-idirafter\fR apply to lookup for both the
! \&\f(CW\*(C`#include\ "\fR\f(CIfile\fR\f(CW"\*(C'\fR and
! \&\f(CW\*(C`#include\ <\fR\f(CIfile\fR\f(CW>\*(C'\fR directives.
  .Sp
  You can specify any number or combination of these options on the 
  command line to search for header files in several directories.  
  The lookup order is as follows:
  .RS 4
! .IP 1. 4
  .IX Item "1."
  For the quote form of the include directive, the directory of the current
  file is searched first.
! .IP 2. 4
  .IX Item "2."
  For the quote form of the include directive, the directories specified
! by \fB\-iquote\fR options are searched in left\-to\-right order,
  as they appear on the command line.
! .IP 3. 4
  .IX Item "3."
  Directories specified with \fB\-I\fR options are scanned in
! left\-to\-right order.
! .IP 4. 4
  .IX Item "4."
  Directories specified with \fB\-isystem\fR options are scanned in
! left\-to\-right order.
! .IP 5. 4
  .IX Item "5."
  Standard system directories are scanned.
! .IP 6. 4
  .IX Item "6."
  Directories specified with \fB\-idirafter\fR options are scanned in
! left\-to\-right order.
  .RE
  .RS 4
  .Sp
*************** You can use \fB\-I\fR to override a syst
*** 717,723 ****
  file, substituting your own version, since these directories are
  searched before the standard system header file directories.  
  However, you should
! not use this option to add directories that contain vendor-supplied
  system header files; use \fB\-isystem\fR for that.
  .Sp
  The \fB\-isystem\fR and \fB\-idirafter\fR options also mark the directory
--- 646,652 ----
  file, substituting your own version, since these directories are
  searched before the standard system header file directories.  
  However, you should
! not use this option to add directories that contain vendor\-supplied
  system header files; use \fB\-isystem\fR for that.
  .Sp
  The \fB\-isystem\fR and \fB\-idirafter\fR options also mark the directory
*************** If a standard system include directory,
*** 728,740 ****
  \&\fB\-isystem\fR, is also specified with \fB\-I\fR, the \fB\-I\fR
  option is ignored.  The directory is still searched but as a
  system directory at its normal position in the system include chain.
! This is to ensure that \s-1GCC\s0's procedure to fix buggy system headers and
  the ordering for the \f(CW\*(C`#include_next\*(C'\fR directive are not inadvertently
  changed.
  If you really need to change the search order for system directories,
  use the \fB\-nostdinc\fR and/or \fB\-isystem\fR options.
  .RE
! .IP "\fB\-I\-\fR" 4
  .IX Item "-I-"
  Split the include path.
  This option has been deprecated.  Please use \fB\-iquote\fR instead for
--- 657,669 ----
  \&\fB\-isystem\fR, is also specified with \fB\-I\fR, the \fB\-I\fR
  option is ignored.  The directory is still searched but as a
  system directory at its normal position in the system include chain.
! This is to ensure that GCC\*(Aqs procedure to fix buggy system headers and
  the ordering for the \f(CW\*(C`#include_next\*(C'\fR directive are not inadvertently
  changed.
  If you really need to change the search order for system directories,
  use the \fB\-nostdinc\fR and/or \fB\-isystem\fR options.
  .RE
! .IP \fB\-I\-\fR 4
  .IX Item "-I-"
  Split the include path.
  This option has been deprecated.  Please use \fB\-iquote\fR instead for
*************** option.
*** 743,755 ****
  .Sp
  Any directories specified with \fB\-I\fR
  options before \fB\-I\-\fR are searched only for headers requested with
! \&\f(CW\*(C`#include\ "\f(CIfile\f(CW"\*(C'\fR; they are not searched for
! \&\f(CW\*(C`#include\ <\f(CIfile\f(CW>\*(C'\fR.  If additional directories are
  specified with \fB\-I\fR options after the \fB\-I\-\fR, those
  directories are searched for all \fB#include\fR directives.
  .Sp
  In addition, \fB\-I\-\fR inhibits the use of the directory of the current
! file directory as the first search directory for \f(CW\*(C`#include\ "\f(CIfile\f(CW"\*(C'\fR.  There is no way to override this effect of \fB\-I\-\fR.
  .IP "\fB\-iprefix\fR \fIprefix\fR" 4
  .IX Item "-iprefix prefix"
  Specify \fIprefix\fR as the prefix for subsequent \fB\-iwithprefix\fR
--- 672,684 ----
  .Sp
  Any directories specified with \fB\-I\fR
  options before \fB\-I\-\fR are searched only for headers requested with
! \&\f(CW\*(C`#include\ "\fR\f(CIfile\fR\f(CW"\*(C'\fR; they are not searched for
! \&\f(CW\*(C`#include\ <\fR\f(CIfile\fR\f(CW>\*(C'\fR.  If additional directories are
  specified with \fB\-I\fR options after the \fB\-I\-\fR, those
  directories are searched for all \fB#include\fR directives.
  .Sp
  In addition, \fB\-I\-\fR inhibits the use of the directory of the current
! file directory as the first search directory for \f(CW\*(C`#include\ "\fR\f(CIfile\fR\f(CW"\*(C'\fR.  There is no way to override this effect of \fB\-I\-\fR.
  .IP "\fB\-iprefix\fR \fIprefix\fR" 4
  .IX Item "-iprefix prefix"
  Specify \fIprefix\fR as the prefix for subsequent \fB\-iwithprefix\fR
*************** information.
*** 774,793 ****
  .IP "\fB\-imultilib\fR \fIdir\fR" 4
  .IX Item "-imultilib dir"
  Use \fIdir\fR as a subdirectory of the directory containing
! target-specific \*(C+ headers.
! .IP "\fB\-nostdinc\fR" 4
  .IX Item "-nostdinc"
  Do not search the standard system directories for header files.
  Only the directories explicitly specified with \fB\-I\fR,
  \&\fB\-iquote\fR, \fB\-isystem\fR, and/or \fB\-idirafter\fR
  options (and the directory of the current file, if appropriate) 
  are searched.
! .IP "\fB\-nostdinc++\fR" 4
  .IX Item "-nostdinc++"
! Do not search for header files in the \*(C+\-specific standard directories,
  but do still search the other standard directories.  (This option is
! used when building the \*(C+ library.)
! .IP "\fB\-\-embed\-dir=\fR\fIdir\fR" 4
  .IX Item "--embed-dir=dir"
  Append \fIdir\fR directory to the list of searched directories for
  \&\f(CW\*(C`#embed\*(C'\fR preprocessing directive or \f(CW\*(C`_\|_has_embed\*(C'\fR macro.
--- 703,722 ----
  .IP "\fB\-imultilib\fR \fIdir\fR" 4
  .IX Item "-imultilib dir"
  Use \fIdir\fR as a subdirectory of the directory containing
! target\-specific C++ headers.
! .IP \fB\-nostdinc\fR 4
  .IX Item "-nostdinc"
  Do not search the standard system directories for header files.
  Only the directories explicitly specified with \fB\-I\fR,
  \&\fB\-iquote\fR, \fB\-isystem\fR, and/or \fB\-idirafter\fR
  options (and the directory of the current file, if appropriate) 
  are searched.
! .IP \fB\-nostdinc++\fR 4
  .IX Item "-nostdinc++"
! Do not search for header files in the C++\-specific standard directories,
  but do still search the other standard directories.  (This option is
! used when building the C++ library.)
! .IP \fB\-\-embed\-dir=\fR\fIdir\fR 4
  .IX Item "--embed-dir=dir"
  Append \fIdir\fR directory to the list of searched directories for
  \&\f(CW\*(C`#embed\*(C'\fR preprocessing directive or \f(CW\*(C`_\|_has_embed\*(C'\fR macro.
*************** There are no default directories for \f(
*** 796,811 ****
  If \fIdir\fR begins with \fB=\fR or \f(CW$SYSROOT\fR, then the \fB=\fR
  or \f(CW$SYSROOT\fR is replaced by the sysroot prefix; see
  \&\fB\-\-sysroot\fR and \fB\-isysroot\fR.
! .IP "\fB\-Wcomment\fR" 4
  .IX Item "-Wcomment"
  .PD 0
! .IP "\fB\-Wcomments\fR" 4
  .IX Item "-Wcomments"
  .PD
! Warn whenever a comment-start sequence \fB/*\fR appears in a \fB/*\fR
! comment, or whenever a backslash-newline appears in a \fB//\fR comment.
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wtrigraphs\fR" 4
  .IX Item "-Wtrigraphs"
  Warn if any trigraphs are encountered that might change the meaning of
  the program.  Trigraphs within comments are not warned about,
--- 725,740 ----
  If \fIdir\fR begins with \fB=\fR or \f(CW$SYSROOT\fR, then the \fB=\fR
  or \f(CW$SYSROOT\fR is replaced by the sysroot prefix; see
  \&\fB\-\-sysroot\fR and \fB\-isysroot\fR.
! .IP \fB\-Wcomment\fR 4
  .IX Item "-Wcomment"
  .PD 0
! .IP \fB\-Wcomments\fR 4
  .IX Item "-Wcomments"
  .PD
! Warn whenever a comment\-start sequence \fB/*\fR appears in a \fB/*\fR
! comment, or whenever a backslash\-newline appears in a \fB//\fR comment.
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wtrigraphs\fR 4
  .IX Item "-Wtrigraphs"
  Warn if any trigraphs are encountered that might change the meaning of
  the program.  Trigraphs within comments are not warned about,
*************** This option is implied by \fB\-Wall\fR.
*** 815,843 ****
  given, this option is still enabled unless trigraphs are enabled.  To
  get trigraph conversion without warnings, but get the other
  \&\fB\-Wall\fR warnings, use \fB\-trigraphs \-Wall \-Wno\-trigraphs\fR.
! .IP "\fB\-Wundef\fR" 4
  .IX Item "-Wundef"
  Warn if an undefined identifier is evaluated in an \f(CW\*(C`#if\*(C'\fR directive.
  Such identifiers are replaced with zero.
! .IP "\fB\-Wexpansion\-to\-defined\fR" 4
  .IX Item "-Wexpansion-to-defined"
  Warn whenever \fBdefined\fR is encountered in the expansion of a macro
  (including the case where the macro is expanded by an \fB#if\fR directive).
  Such usage is not portable.
  This warning is also enabled by \fB\-Wpedantic\fR and \fB\-Wextra\fR.
! .IP "\fB\-Wunused\-macros\fR" 4
  .IX Item "-Wunused-macros"
  Warn about macros defined in the main file that are unused.  A macro
  is \fIused\fR if it is expanded or tested for existence at least once.
  The preprocessor also warns if the macro has not been used at the
  time it is redefined or undefined.
  .Sp
! Built-in macros, macros defined on the command line, and macros
  defined in include files are not warned about.
  .Sp
  \&\fINote:\fR If a macro is actually used, but only used in skipped
  conditional blocks, then the preprocessor reports it as unused.  To avoid the
! warning in such a case, you might improve the scope of the macro's
  definition by, for example, moving it into the first skipped block.
  Alternatively, you could provide a dummy use with something like:
  .Sp
--- 744,772 ----
  given, this option is still enabled unless trigraphs are enabled.  To
  get trigraph conversion without warnings, but get the other
  \&\fB\-Wall\fR warnings, use \fB\-trigraphs \-Wall \-Wno\-trigraphs\fR.
! .IP \fB\-Wundef\fR 4
  .IX Item "-Wundef"
  Warn if an undefined identifier is evaluated in an \f(CW\*(C`#if\*(C'\fR directive.
  Such identifiers are replaced with zero.
! .IP \fB\-Wexpansion\-to\-defined\fR 4
  .IX Item "-Wexpansion-to-defined"
  Warn whenever \fBdefined\fR is encountered in the expansion of a macro
  (including the case where the macro is expanded by an \fB#if\fR directive).
  Such usage is not portable.
  This warning is also enabled by \fB\-Wpedantic\fR and \fB\-Wextra\fR.
! .IP \fB\-Wunused\-macros\fR 4
  .IX Item "-Wunused-macros"
  Warn about macros defined in the main file that are unused.  A macro
  is \fIused\fR if it is expanded or tested for existence at least once.
  The preprocessor also warns if the macro has not been used at the
  time it is redefined or undefined.
  .Sp
! Built\-in macros, macros defined on the command line, and macros
  defined in include files are not warned about.
  .Sp
  \&\fINote:\fR If a macro is actually used, but only used in skipped
  conditional blocks, then the preprocessor reports it as unused.  To avoid the
! warning in such a case, you might improve the scope of the macro\*(Aqs
  definition by, for example, moving it into the first skipped block.
  Alternatively, you could provide a dummy use with something like:
  .Sp
*************** Alternatively, you could provide a dummy
*** 845,851 ****
  \&        #if defined the_macro_causing_the_warning
  \&        #endif
  .Ve
! .IP "\fB\-Wno\-endif\-labels\fR" 4
  .IX Item "-Wno-endif-labels"
  Do not warn whenever an \f(CW\*(C`#else\*(C'\fR or an \f(CW\*(C`#endif\*(C'\fR are followed by text.
  This sometimes happens in older programs with code of the form
--- 774,780 ----
  \&        #if defined the_macro_causing_the_warning
  \&        #endif
  .Ve
! .IP \fB\-Wno\-endif\-labels\fR 4
  .IX Item "-Wno-endif-labels"
  Do not warn whenever an \f(CW\*(C`#else\*(C'\fR or an \f(CW\*(C`#endif\*(C'\fR are followed by text.
  This sometimes happens in older programs with code of the form
*************** This sometimes happens in older programs
*** 860,868 ****
  .Sp
  The second and third \f(CW\*(C`FOO\*(C'\fR should be in comments.
  This warning is on by default.
! .SH "ENVIRONMENT"
  .IX Header "ENVIRONMENT"
! This section describes the environment variables that affect how \s-1CPP\s0
  operates.  You can use them to specify directories or prefixes to use
  when searching for include files, or to control dependency output.
  .PP
--- 789,797 ----
  .Sp
  The second and third \f(CW\*(C`FOO\*(C'\fR should be in comments.
  This warning is on by default.
! .SH ENVIRONMENT
  .IX Header "ENVIRONMENT"
! This section describes the environment variables that affect how CPP
  operates.  You can use them to specify directories or prefixes to use
  when searching for include files, or to control dependency output.
  .PP
*************** Note that you can also specify places to
*** 870,893 ****
  \&\fB\-I\fR, and control dependency output with options like
  \&\fB\-M\fR.  These take precedence over
  environment variables, which in turn take precedence over the
! configuration of \s-1GCC.\s0
! .IP "\fB\s-1CPATH\s0\fR" 4
  .IX Item "CPATH"
  .PD 0
! .IP "\fBC_INCLUDE_PATH\fR" 4
  .IX Item "C_INCLUDE_PATH"
! .IP "\fB\s-1CPLUS_INCLUDE_PATH\s0\fR" 4
  .IX Item "CPLUS_INCLUDE_PATH"
! .IP "\fB\s-1OBJC_INCLUDE_PATH\s0\fR" 4
  .IX Item "OBJC_INCLUDE_PATH"
  .PD
! Each variable's value is a list of directories separated by a special
! character, much like \fB\s-1PATH\s0\fR, in which to look for header files.
! The special character, \f(CW\*(C`PATH_SEPARATOR\*(C'\fR, is target-dependent and
! determined at \s-1GCC\s0 build time.  For Microsoft Windows-based targets it is a
  semicolon, and for almost all other targets it is a colon.
  .Sp
! \&\fB\s-1CPATH\s0\fR specifies a list of directories to be searched as if
  specified with \fB\-I\fR, but after any paths given with \fB\-I\fR
  options on the command line.  This environment variable is used
  regardless of which language is being preprocessed.
--- 799,822 ----
  \&\fB\-I\fR, and control dependency output with options like
  \&\fB\-M\fR.  These take precedence over
  environment variables, which in turn take precedence over the
! configuration of GCC.
! .IP \fBCPATH\fR 4
  .IX Item "CPATH"
  .PD 0
! .IP \fBC_INCLUDE_PATH\fR 4
  .IX Item "C_INCLUDE_PATH"
! .IP \fBCPLUS_INCLUDE_PATH\fR 4
  .IX Item "CPLUS_INCLUDE_PATH"
! .IP \fBOBJC_INCLUDE_PATH\fR 4
  .IX Item "OBJC_INCLUDE_PATH"
  .PD
! Each variable\*(Aqs value is a list of directories separated by a special
! character, much like \fBPATH\fR, in which to look for header files.
! The special character, \f(CW\*(C`PATH_SEPARATOR\*(C'\fR, is target\-dependent and
! determined at GCC build time.  For Microsoft Windows\-based targets it is a
  semicolon, and for almost all other targets it is a colon.
  .Sp
! \&\fBCPATH\fR specifies a list of directories to be searched as if
  specified with \fB\-I\fR, but after any paths given with \fB\-I\fR
  options on the command line.  This environment variable is used
  regardless of which language is being preprocessed.
*************** paths given with \fB\-isystem\fR options
*** 900,915 ****
  In all these variables, an empty element instructs the compiler to
  search its current working directory.  Empty elements can appear at the
  beginning or end of a path.  For instance, if the value of
! \&\fB\s-1CPATH\s0\fR is \f(CW\*(C`:/special/include\*(C'\fR, that has the same
  effect as \fB\-I.\ \-I/special/include\fR.
! .IP "\fB\s-1DEPENDENCIES_OUTPUT\s0\fR" 4
  .IX Item "DEPENDENCIES_OUTPUT"
  If this variable is set, its value specifies how to output
! dependencies for Make based on the non-system header files processed
  by the compiler.  System header files are ignored in the dependency
  output.
  .Sp
! The value of \fB\s-1DEPENDENCIES_OUTPUT\s0\fR can be just a file name, in
  which case the Make rules are written to that file, guessing the target
  name from the source file name.  Or the value can have the form
  \&\fIfile\fR\fB \fR\fItarget\fR, in which case the rules are written to
--- 829,844 ----
  In all these variables, an empty element instructs the compiler to
  search its current working directory.  Empty elements can appear at the
  beginning or end of a path.  For instance, if the value of
! \&\fBCPATH\fR is \f(CW\*(C`:/special/include\*(C'\fR, that has the same
  effect as \fB\-I.\ \-I/special/include\fR.
! .IP \fBDEPENDENCIES_OUTPUT\fR 4
  .IX Item "DEPENDENCIES_OUTPUT"
  If this variable is set, its value specifies how to output
! dependencies for Make based on the non\-system header files processed
  by the compiler.  System header files are ignored in the dependency
  output.
  .Sp
! The value of \fBDEPENDENCIES_OUTPUT\fR can be just a file name, in
  which case the Make rules are written to that file, guessing the target
  name from the source file name.  Or the value can have the form
  \&\fIfile\fR\fB \fR\fItarget\fR, in which case the rules are written to
*************** file \fIfile\fR using \fItarget\fR as th
*** 918,939 ****
  In other words, this environment variable is equivalent to combining
  the options \fB\-MM\fR and \fB\-MF\fR,
  with an optional \fB\-MT\fR switch too.
! .IP "\fB\s-1SUNPRO_DEPENDENCIES\s0\fR" 4
  .IX Item "SUNPRO_DEPENDENCIES"
! This variable is the same as \fB\s-1DEPENDENCIES_OUTPUT\s0\fR (see above),
  except that system header files are not ignored, so it implies
  \&\fB\-M\fR rather than \fB\-MM\fR.  However, the dependence on the
  main input file is omitted.
! .IP "\fB\s-1SOURCE_DATE_EPOCH\s0\fR" 4
  .IX Item "SOURCE_DATE_EPOCH"
! If this variable is set, its value specifies a \s-1UNIX\s0 timestamp to be
  used in replacement of the current date and time in the \f(CW\*(C`_\|_DATE_\|_\*(C'\fR
  and \f(CW\*(C`_\|_TIME_\|_\*(C'\fR macros, so that the embedded timestamps become
  reproducible.
  .Sp
! The value of \fB\s-1SOURCE_DATE_EPOCH\s0\fR must be a \s-1UNIX\s0 timestamp,
  defined as the number of seconds (excluding leap seconds) since
! 01 Jan 1970 00:00:00 represented in \s-1ASCII\s0; identical to the output of
  \&\f(CW\*(C`date +%s\*(C'\fR on GNU/Linux and other systems that support the
  \&\f(CW%s\fR extension in the \f(CW\*(C`date\*(C'\fR command.
  .Sp
--- 847,868 ----
  In other words, this environment variable is equivalent to combining
  the options \fB\-MM\fR and \fB\-MF\fR,
  with an optional \fB\-MT\fR switch too.
! .IP \fBSUNPRO_DEPENDENCIES\fR 4
  .IX Item "SUNPRO_DEPENDENCIES"
! This variable is the same as \fBDEPENDENCIES_OUTPUT\fR (see above),
  except that system header files are not ignored, so it implies
  \&\fB\-M\fR rather than \fB\-MM\fR.  However, the dependence on the
  main input file is omitted.
! .IP \fBSOURCE_DATE_EPOCH\fR 4
  .IX Item "SOURCE_DATE_EPOCH"
! If this variable is set, its value specifies a UNIX timestamp to be
  used in replacement of the current date and time in the \f(CW\*(C`_\|_DATE_\|_\*(C'\fR
  and \f(CW\*(C`_\|_TIME_\|_\*(C'\fR macros, so that the embedded timestamps become
  reproducible.
  .Sp
! The value of \fBSOURCE_DATE_EPOCH\fR must be a UNIX timestamp,
  defined as the number of seconds (excluding leap seconds) since
! 01 Jan 1970 00:00:00 represented in ASCII; identical to the output of
  \&\f(CW\*(C`date +%s\*(C'\fR on GNU/Linux and other systems that support the
  \&\f(CW%s\fR extension in the \f(CW\*(C`date\*(C'\fR command.
  .Sp
*************** time of the source or package and it sho
*** 942,968 ****
  process.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf\-funding\fR\|(7),
! \&\fIgcc\fR\|(1), and the Info entries for \fIcpp\fR and \fIgcc\fR.
! .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 1987\-2025 Free Software Foundation, Inc.
  .PP
  Permission is granted to copy, distribute and/or modify this document
! under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 or
  any later version published by the Free Software Foundation.  A copy of
  the license is included in the
! man page \fIgfdl\fR\|(7).
! This manual contains no Invariant Sections.  The Front-Cover Texts are
! (a) (see below), and the Back-Cover Texts are (b) (see below).
  .PP
! (a) The \s-1FSF\s0's Front-Cover Text is:
  .PP
  .Vb 1
  \&     A GNU Manual
  .Ve
  .PP
! (b) The \s-1FSF\s0's Back-Cover Text is:
  .PP
  .Vb 3
  \&     You have freedom to copy and modify this GNU Manual, like GNU
--- 871,897 ----
  process.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fBgpl\fR\|(7), \fBgfdl\fR\|(7), \fBfsf\-funding\fR\|(7),
! \&\fBgcc\fR\|(1), and the Info entries for \fIcpp\fR and \fIgcc\fR.
! .SH COPYRIGHT
  .IX Header "COPYRIGHT"
  Copyright (c) 1987\-2025 Free Software Foundation, Inc.
  .PP
  Permission is granted to copy, distribute and/or modify this document
! under the terms of the GNU Free Documentation License, Version 1.3 or
  any later version published by the Free Software Foundation.  A copy of
  the license is included in the
! man page \fBgfdl\fR\|(7).
! This manual contains no Invariant Sections.  The Front\-Cover Texts are
! (a) (see below), and the Back\-Cover Texts are (b) (see below).
  .PP
! (a) The FSF\*(Aqs Front\-Cover Text is:
  .PP
  .Vb 1
  \&     A GNU Manual
  .Ve
  .PP
! (b) The FSF\*(Aqs Back\-Cover Text is:
  .PP
  .Vb 3
  \&     You have freedom to copy and modify this GNU Manual, like GNU
diff -Nrcpad gcc-15.2.0/gcc/doc/cpp.info gcc-15.3.0/gcc/doc/cpp.info
*** gcc-15.2.0/gcc/doc/cpp.info	Fri Aug  8 07:10:00 2025
--- gcc-15.3.0/gcc/doc/cpp.info	Fri Jun 12 06:28:38 2026
***************
*** 1,6 ****
! This is cpp.info, produced by makeinfo version 6.5 from cpp.texi.
  
! Copyright (C) 1987-2025 Free Software Foundation, Inc.
  
     Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,6 ----
! This is cpp.info, produced by makeinfo version 7.1 from cpp.texi.
  
! Copyright Â© 1987-2025 Free Software Foundation, Inc.
  
     Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** Obsolete Features
*** 131,137 ****
  * Obsolete Features::
  
  
!    Copyright (C) 1987-2025 Free Software Foundation, Inc.
  
     Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 131,137 ----
  * Obsolete Features::
  
  
!    Copyright Â© 1987-2025 Free Software Foundation, Inc.
  
     Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** File: cpp.info,  Node: Overview,  Next:
*** 158,167 ****
  1 Overview
  **********
  
! The C preprocessor, often known as "cpp", is a "macro processor" that is
  used automatically by the C compiler to transform your program before
  compilation.  It is called a macro processor because it allows you to
! define "macros", which are brief abbreviations for longer constructs.
  
     The C preprocessor is intended to be used only with C, C++, and
  Objective-C source code.  In the past, it has been abused as a general
--- 158,167 ----
  1 Overview
  **********
  
! The C preprocessor, often known as â€œcppâ€�, is a â€œmacro processorâ€� that is
  used automatically by the C compiler to transform your program before
  compilation.  It is called a macro processor because it allows you to
! define â€œmacrosâ€�, which are brief abbreviations for longer constructs.
  
     The C preprocessor is intended to be used only with C, C++, and
  Objective-C source code.  In the past, it has been abused as a general
*************** will be removed, and the Makefile will n
*** 174,180 ****
  
     Having said that, you can often get away with using cpp on things
  which are not C.  Other Algol-ish programming languages are often safe
! (Ada, etc.)  So is assembly, with caution.  '-traditional-cpp' mode
  preserves more white space, and is otherwise more permissive.  Many of
  the problems can be avoided by writing C or C++ style comments instead
  of native language comments, and keeping macros simple.
--- 174,180 ----
  
     Having said that, you can often get away with using cpp on things
  which are not C.  Other Algol-ish programming languages are often safe
! (Ada, etc.)  So is assembly, with caution.  â€˜-traditional-cppâ€™ mode
  preserves more white space, and is otherwise more permissive.  Many of
  the problems can be avoided by writing C or C++ style comments instead
  of native language comments, and keeping macros simple.
*************** Standard C.  In its default mode, the GN
*** 191,199 ****
  few things required by the standard.  These are features which are
  rarely, if ever, used, and may cause surprising changes to the meaning
  of a program which does not expect them.  To get strict ISO Standard C,
! you should use the '-std=c90', '-std=c99', '-std=c11' or '-std=c17'
  options, depending on which version of the standard you want.  To get
! all the mandatory diagnostics, you must also use '-pedantic'.  *Note
  Invocation::.
  
     This manual describes the behavior of the ISO preprocessor.  To
--- 191,199 ----
  few things required by the standard.  These are features which are
  rarely, if ever, used, and may cause surprising changes to the meaning
  of a program which does not expect them.  To get strict ISO Standard C,
! you should use the â€˜-std=c90â€™, â€˜-std=c99â€™, â€˜-std=c11â€™ or â€˜-std=c17â€™
  options, depending on which version of the standard you want.  To get
! all the mandatory diagnostics, you must also use â€˜-pedanticâ€™.  *Note
  Invocation::.
  
     This manual describes the behavior of the ISO preprocessor.  To
*************** does not conflict with traditional seman
*** 202,208 ****
  preprocessor should behave the same way.  The various differences that
  do exist are detailed in the section *note Traditional Mode::.
  
!    For clarity, unless noted otherwise, references to 'CPP' in this
  manual refer to GNU CPP.
  
  * Menu:
--- 202,208 ----
  preprocessor should behave the same way.  The various differences that
  do exist are detailed in the section *note Traditional Mode::.
  
!    For clarity, unless noted otherwise, references to â€˜CPPâ€™ in this
  manual refer to GNU CPP.
  
  * Menu:
*************** there are really at least four.
*** 225,248 ****
     The files input to CPP might be in any character set at all.  CPP's
  very first action, before it even looks for line boundaries, is to
  convert the file into the character set it uses for internal processing.
! That set is what the C standard calls the "source" character set.  It
  must be isomorphic with ISO 10646, also known as Unicode.  CPP uses the
  UTF-8 encoding of Unicode.
  
     The character sets of the input files are specified using the
! '-finput-charset=' option.
  
     All preprocessing work (the subject of the rest of this manual) is
  carried out in the source character set.  If you request textual output
! from the preprocessor with the '-E' option, it will be in UTF-8.
  
     After preprocessing is complete, string and character constants are
! converted again, into the "execution" character set.  This character set
  is under control of the user; the default is UTF-8, matching the source
  character set.  Wide string and character constants have their own
  character set, which is not called out specifically in the standard.
  Again, it is under control of the user.  The default is UTF-16 or
! UTF-32, whichever fits in the target's 'wchar_t' type, in the target
  machine's byte order.(1)  Octal and hexadecimal escape sequences do not
  undergo conversion; '\x12' has the value 0x12 regardless of the
  currently selected execution character set.  All other escapes are
--- 225,248 ----
     The files input to CPP might be in any character set at all.  CPP's
  very first action, before it even looks for line boundaries, is to
  convert the file into the character set it uses for internal processing.
! That set is what the C standard calls the â€œsourceâ€� character set.  It
  must be isomorphic with ISO 10646, also known as Unicode.  CPP uses the
  UTF-8 encoding of Unicode.
  
     The character sets of the input files are specified using the
! â€˜-finput-charset=â€™ option.
  
     All preprocessing work (the subject of the rest of this manual) is
  carried out in the source character set.  If you request textual output
! from the preprocessor with the â€˜-Eâ€™ option, it will be in UTF-8.
  
     After preprocessing is complete, string and character constants are
! converted again, into the â€œexecutionâ€� character set.  This character set
  is under control of the user; the default is UTF-8, matching the source
  character set.  Wide string and character constants have their own
  character set, which is not called out specifically in the standard.
  Again, it is under control of the user.  The default is UTF-16 or
! UTF-32, whichever fits in the target's â€˜wchar_tâ€™ type, in the target
  machine's byte order.(1)  Octal and hexadecimal escape sequences do not
  undergo conversion; '\x12' has the value 0x12 regardless of the
  currently selected execution character set.  All other escapes are
*************** represent, then converted to the executi
*** 251,265 ****
  unescaped characters.
  
     In identifiers, characters outside the ASCII range can be specified
! with the '\u' and '\U' escapes or used directly in the input encoding.
  If strict ISO C90 conformance is specified with an option such as
! '-std=c90', or '-fno-extended-identifiers' is used, then those
  constructs are not permitted in identifiers.
  
     ---------- Footnotes ----------
  
     (1) UTF-16 does not meet the requirements of the C standard for a
! wide character set, but the choice of 16-bit 'wchar_t' is enshrined in
  some system ABIs so we cannot fix this.
  
  
--- 251,265 ----
  unescaped characters.
  
     In identifiers, characters outside the ASCII range can be specified
! with the â€˜\uâ€™ and â€˜\Uâ€™ escapes or used directly in the input encoding.
  If strict ISO C90 conformance is specified with an option such as
! â€˜-std=c90â€™, or â€˜-fno-extended-identifiersâ€™ is used, then those
  constructs are not permitted in identifiers.
  
     ---------- Footnotes ----------
  
     (1) UTF-16 does not meet the requirements of the C standard for a
! wide character set, but the choice of 16-bit â€˜wchar_tâ€™ is enshrined in
  some system ABIs so we cannot fix this.
  
  
*************** standard.
*** 279,286 ****
    1. The input file is read into memory and broken into lines.
  
       Different systems use different conventions to indicate the end of
!      a line.  GCC accepts the ASCII control sequences 'LF', 'CR LF' and
!      'CR' as end-of-line markers.  These are the canonical sequences
       used by Unix, DOS and VMS, and the classic Mac OS (before OSX)
       respectively.  You may therefore safely copy source code written on
       any of those systems to a different one and use it without
--- 279,286 ----
    1. The input file is read into memory and broken into lines.
  
       Different systems use different conventions to indicate the end of
!      a line.  GCC accepts the ASCII control sequences â€˜LFâ€™, â€˜CR LFâ€™ and
!      â€˜CRâ€™ as end-of-line markers.  These are the canonical sequences
       used by Unix, DOS and VMS, and the classic Mac OS (before OSX)
       respectively.  You may therefore safely copy source code written on
       any of those systems to a different one and use it without
*************** standard.
*** 296,313 ****
  
    2. If trigraphs are enabled, they are replaced by their corresponding
       single characters.  By default GCC ignores trigraphs, but if you
!      request a strictly conforming mode with the '-std' option, or you
!      specify the '-trigraphs' option, then it converts them.
  
!      These are nine three-character sequences, all starting with '??',
       that are defined by ISO C to stand for single characters.  They
       permit obsolete systems that lack some of C's punctuation to use C.
!      For example, '??/' stands for '\', so '??/n' is a character
       constant for a newline.
  
       Trigraphs are not popular and many compilers implement them
       incorrectly.  Portable code should not rely on trigraphs being
!      either converted or ignored.  With '-Wtrigraphs' GCC will warn you
       when a trigraph may change the meaning of your program if it were
       converted.  *Note Wtrigraphs::.
  
--- 296,313 ----
  
    2. If trigraphs are enabled, they are replaced by their corresponding
       single characters.  By default GCC ignores trigraphs, but if you
!      request a strictly conforming mode with the â€˜-stdâ€™ option, or you
!      specify the â€˜-trigraphsâ€™ option, then it converts them.
  
!      These are nine three-character sequences, all starting with â€˜??â€™,
       that are defined by ISO C to stand for single characters.  They
       permit obsolete systems that lack some of C's punctuation to use C.
!      For example, â€˜??/â€™ stands for â€˜\â€™, so '??/n' is a character
       constant for a newline.
  
       Trigraphs are not popular and many compilers implement them
       incorrectly.  Portable code should not rely on trigraphs being
!      either converted or ignored.  With â€˜-Wtrigraphsâ€™ GCC will warn you
       when a trigraph may change the meaning of your program if it were
       converted.  *Note Wtrigraphs::.
  
*************** standard.
*** 315,321 ****
       from being confused with a trigraph by inserting a backslash
       between the question marks, or by separating the string literal at
       the trigraph and making use of string literal concatenation.
!      "(??\?)" is the string '(???)', not '(?]'.  Traditional C compilers
       do not recognize these idioms.
  
       The nine trigraphs and their replacements are
--- 315,321 ----
       from being confused with a trigraph by inserting a backslash
       between the question marks, or by separating the string literal at
       the trigraph and making use of string literal concatenation.
!      "(??\?)" is the string â€˜(???)â€™, not â€˜(?]â€™.  Traditional C compilers
       do not recognize these idioms.
  
       The nine trigraphs and their replacements are
*************** standard.
*** 325,338 ****
  
    3. Continued lines are merged into one long line.
  
!      A continued line is a line which ends with a backslash, '\'.  The
       backslash is removed and the following line is joined with the
       current one.  No space is inserted, so you may split a line
       anywhere, even in the middle of a word.  (It is generally more
       readable to split lines only at white space.)
  
       The trailing backslash on a continued line is commonly referred to
!      as a "backslash-newline".
  
       If there is white space between a backslash and the end of a line,
       that is still a continued line.  However, as this is usually the
--- 325,338 ----
  
    3. Continued lines are merged into one long line.
  
!      A continued line is a line which ends with a backslash, â€˜\â€™.  The
       backslash is removed and the following line is joined with the
       current one.  No space is inserted, so you may split a line
       anywhere, even in the middle of a word.  (It is generally more
       readable to split lines only at white space.)
  
       The trailing backslash on a continued line is commonly referred to
!      as a â€œbackslash-newlineâ€�.
  
       If there is white space between a backslash and the end of a line,
       that is still a continued line.  However, as this is usually the
*************** standard.
*** 341,352 ****
  
    4. All comments are replaced with single spaces.
  
!      There are two kinds of comments.  "Block comments" begin with '/*'
!      and continue until the next '*/'.  Block comments do not nest:
  
            /* this is /* one comment */ text outside comment
  
!      "Line comments" begin with '//' and continue to the end of the
       current line.  Line comments do not nest either, but it does not
       matter, because they would end in the same place anyway.
  
--- 341,352 ----
  
    4. All comments are replaced with single spaces.
  
!      There are two kinds of comments.  â€œBlock commentsâ€� begin with â€˜/*â€™
!      and continue until the next â€˜*/â€™.  Block comments do not nest:
  
            /* this is /* one comment */ text outside comment
  
!      â€œLine commentsâ€� begin with â€˜//â€™ and continue to the end of the
       current line.  Line comments do not nest either, but it does not
       matter, because they would end in the same place anyway.
  
*************** comment.
*** 369,375 ****
           oops! this isn't a comment anymore */
  
     Comments are not recognized within string literals.  "/* blah */" is
! the string constant '/* blah */', not an empty string.
  
     Line comments are not in the 1989 edition of the C standard, but they
  are recognized by GCC as an extension.  In C++ and in the 1999 edition
--- 369,375 ----
           oops! this isn't a comment anymore */
  
     Comments are not recognized within string literals.  "/* blah */" is
! the string constant â€˜/* blah */â€™, not an empty string.
  
     Line comments are not in the 1989 edition of the C standard, but they
  are recognized by GCC as an extension.  In C++ and in the 1999 edition
*************** of the C standard, they are an official
*** 378,385 ****
     Since these transformations happen before all other processing, you
  can split a line mechanically with backslash-newline anywhere.  You can
  comment out the end of a line.  You can continue a line comment onto the
! next line with backslash-newline.  You can even split '/*', '*/', and
! '//' onto multiple lines with backslash-newline.  For example:
  
       /\
       *
--- 378,385 ----
     Since these transformations happen before all other processing, you
  can split a line mechanically with backslash-newline anywhere.  You can
  comment out the end of a line.  You can continue a line comment onto the
! next line with backslash-newline.  You can even split â€˜/*â€™, â€˜*/â€™, and
! â€˜//â€™ onto multiple lines with backslash-newline.  For example:
  
       /\
       *
*************** next line with backslash-newline.  You c
*** 389,395 ****
       O 10\
       20
  
! is equivalent to '#define FOO 1020'.  All these tricks are extremely
  confusing and should not be used in code intended to be readable.
  
     There is no way to prevent a backslash at the end of a line from
--- 389,395 ----
       O 10\
       20
  
! is equivalent to â€˜#define FOO 1020â€™.  All these tricks are extremely
  confusing and should not be used in code intended to be readable.
  
     There is no way to prevent a backslash at the end of a line from
*************** File: cpp.info,  Node: Tokenization,  Ne
*** 403,409 ****
  ================
  
  After the textual transformations are finished, the input file is
! converted into a sequence of "preprocessing tokens".  These mostly
  correspond to the syntactic tokens used by the C compiler, but there are
  a few differences.  White space separates tokens; it is not itself a
  token of any kind.  Tokens do not have to be separated by white space,
--- 403,409 ----
  ================
  
  After the textual transformations are finished, the input file is
! converted into a sequence of â€œpreprocessing tokensâ€�.  These mostly
  correspond to the syntactic tokens used by the C compiler, but there are
  a few differences.  White space separates tokens; it is not itself a
  token of any kind.  Tokens do not have to be separated by white space,
*************** but it is often necessary to avoid ambig
*** 412,442 ****
     When faced with a sequence of characters that has more than one
  possible tokenization, the preprocessor is greedy.  It always makes each
  token, starting from the left, as big as possible before moving on to
! the next token.  For instance, 'a+++++b' is interpreted as
! 'a ++ ++ + b', not as 'a ++ + ++ b', even though the latter tokenization
  could be part of a valid C program and the former could not.
  
     Once the input file is broken into tokens, the token boundaries never
! change, except when the '##' preprocessing operator is used to paste
  tokens together.  *Note Concatenation::.  For example,
  
       #define foo() bar
       foo()baz
!           ==> bar baz
       _not_
!           ==> barbaz
  
     The compiler does not re-tokenize the preprocessor's output.  Each
  preprocessing token becomes one compiler token.
  
     Preprocessing tokens fall into five broad classes: identifiers,
  preprocessing numbers, string literals, punctuators, and other.  An
! "identifier" is the same as an identifier in C: any sequence of letters,
  digits, or underscores, which begins with a letter or underscore.
  Keywords of C have no significance to the preprocessor; they are
  ordinary identifiers.  You can define a macro whose name is a keyword,
  for instance.  The only identifier which can be considered a
! preprocessing keyword is 'defined'.  *Note Defined::.
  
     This is mostly true of other languages which use the C preprocessor.
  However, a few of the keywords of C++ are significant even in the
--- 412,442 ----
     When faced with a sequence of characters that has more than one
  possible tokenization, the preprocessor is greedy.  It always makes each
  token, starting from the left, as big as possible before moving on to
! the next token.  For instance, â€˜a+++++bâ€™ is interpreted as
! â€˜a ++ ++ + bâ€™, not as â€˜a ++ + ++ bâ€™, even though the latter tokenization
  could be part of a valid C program and the former could not.
  
     Once the input file is broken into tokens, the token boundaries never
! change, except when the â€˜##â€™ preprocessing operator is used to paste
  tokens together.  *Note Concatenation::.  For example,
  
       #define foo() bar
       foo()baz
!           â†¦ bar baz
       _not_
!           â†¦ barbaz
  
     The compiler does not re-tokenize the preprocessor's output.  Each
  preprocessing token becomes one compiler token.
  
     Preprocessing tokens fall into five broad classes: identifiers,
  preprocessing numbers, string literals, punctuators, and other.  An
! â€œidentifierâ€� is the same as an identifier in C: any sequence of letters,
  digits, or underscores, which begins with a letter or underscore.
  Keywords of C have no significance to the preprocessor; they are
  ordinary identifiers.  You can define a macro whose name is a keyword,
  for instance.  The only identifier which can be considered a
! preprocessing keyword is â€˜definedâ€™.  *Note Defined::.
  
     This is mostly true of other languages which use the C preprocessor.
  However, a few of the keywords of C++ are significant even in the
*************** preprocessor.  *Note C++ Named Operators
*** 446,487 ****
  part of the "basic source character set", at the implementation's
  discretion (such as accented Latin letters, Greek letters, or Chinese
  ideograms).  This may be done with an extended character set, or the
! '\u' and '\U' escape sequences.
  
!    As an extension, GCC treats '$' as a letter.  This is for
! compatibility with some systems, such as VMS, where '$' is commonly used
! in system-defined function and object names.  '$' is not a letter in
! strictly conforming mode, or if you specify the '-$' option.  *Note
  Invocation::.
  
!    A "preprocessing number" has a rather bizarre definition.  The
  category includes all the normal integer and floating point constants
  one expects of C, but also a number of other things one might not
  initially recognize as a number.  Formally, preprocessing numbers begin
  with an optional period, a required decimal digit, and then continue
  with any sequence of letters, digits, underscores, periods, and
! exponents.  Exponents are the two-character sequences 'e+', 'e-', 'E+',
! 'E-', 'p+', 'p-', 'P+', and 'P-'.  (The exponents that begin with 'p' or
! 'P' are used for hexadecimal floating-point constants.)
  
     The purpose of this unusual definition is to isolate the preprocessor
  from the full complexity of numeric constants.  It does not have to
  distinguish between lexically valid and invalid floating-point numbers,
  which is complicated.  The definition also permits you to split an
  identifier at any position and get exactly two tokens, which can then be
! pasted back together with the '##' operator.
  
     It's possible for preprocessing numbers to cause programs to be
! misinterpreted.  For example, '0xE+12' is a preprocessing number which
  does not translate to any valid numeric constant, therefore a syntax
! error.  It does not mean '0xE + 12', which is what you might have
  intended.
  
!    "String literals" are string constants, character constants, and
! header file names (the argument of '#include').(1)  String constants and
  character constants are straightforward: "..." or '...'.  In either case
  embedded quotes should be escaped with a backslash: '\'' is the
! character constant for '''.  There is no limit on the length of a
  character constant, but the value of a character constant that contains
  more than one character is implementation-defined.  *Note Implementation
  Details::.
--- 446,487 ----
  part of the "basic source character set", at the implementation's
  discretion (such as accented Latin letters, Greek letters, or Chinese
  ideograms).  This may be done with an extended character set, or the
! â€˜\uâ€™ and â€˜\Uâ€™ escape sequences.
  
!    As an extension, GCC treats â€˜$â€™ as a letter.  This is for
! compatibility with some systems, such as VMS, where â€˜$â€™ is commonly used
! in system-defined function and object names.  â€˜$â€™ is not a letter in
! strictly conforming mode, or if you specify the â€˜-$â€™ option.  *Note
  Invocation::.
  
!    A â€œpreprocessing numberâ€� has a rather bizarre definition.  The
  category includes all the normal integer and floating point constants
  one expects of C, but also a number of other things one might not
  initially recognize as a number.  Formally, preprocessing numbers begin
  with an optional period, a required decimal digit, and then continue
  with any sequence of letters, digits, underscores, periods, and
! exponents.  Exponents are the two-character sequences â€˜e+â€™, â€˜e-â€™, â€˜E+â€™,
! â€˜E-â€™, â€˜p+â€™, â€˜p-â€™, â€˜P+â€™, and â€˜P-â€™.  (The exponents that begin with â€˜pâ€™ or
! â€˜Pâ€™ are used for hexadecimal floating-point constants.)
  
     The purpose of this unusual definition is to isolate the preprocessor
  from the full complexity of numeric constants.  It does not have to
  distinguish between lexically valid and invalid floating-point numbers,
  which is complicated.  The definition also permits you to split an
  identifier at any position and get exactly two tokens, which can then be
! pasted back together with the â€˜##â€™ operator.
  
     It's possible for preprocessing numbers to cause programs to be
! misinterpreted.  For example, â€˜0xE+12â€™ is a preprocessing number which
  does not translate to any valid numeric constant, therefore a syntax
! error.  It does not mean â€˜0xE + 12â€™, which is what you might have
  intended.
  
!    â€œString literalsâ€� are string constants, character constants, and
! header file names (the argument of â€˜#includeâ€™).(1)  String constants and
  character constants are straightforward: "..." or '...'.  In either case
  embedded quotes should be escaped with a backslash: '\'' is the
! character constant for â€˜'â€™.  There is no limit on the length of a
  character constant, but the value of a character constant that contains
  more than one character is implementation-defined.  *Note Implementation
  Details::.
*************** Operation::.
*** 496,507 ****
     No string literal may extend past the end of a line.  You may use
  continued lines instead, or string constant concatenation.
  
!    "Punctuators" are all the usual bits of punctuation which are
  meaningful to C and C++.  All but three of the punctuation characters in
! ASCII are C punctuators.  The exceptions are '@', '$', and '`'.  In
  addition, all the two- and three-character operators are punctuators.
! There are also six "digraphs", which the C++ standard calls "alternative
! tokens", which are merely alternate ways to spell other punctuators.
  This is a second attempt to work around missing punctuation in obsolete
  systems.  It has no negative side effects, unlike trigraphs, but does
  not cover as much ground.  The digraphs and their corresponding normal
--- 496,507 ----
     No string literal may extend past the end of a line.  You may use
  continued lines instead, or string constant concatenation.
  
!    â€œPunctuatorsâ€� are all the usual bits of punctuation which are
  meaningful to C and C++.  All but three of the punctuation characters in
! ASCII are C punctuators.  The exceptions are â€˜@â€™, â€˜$â€™, and â€˜`â€™.  In
  addition, all the two- and three-character operators are punctuators.
! There are also six â€œdigraphsâ€�, which the C++ standard calls â€œalternative
! tokensâ€�, which are merely alternate ways to spell other punctuators.
  This is a second attempt to work around missing punctuation in obsolete
  systems.  It has no negative side effects, unlike trigraphs, but does
  not cover as much ground.  The digraphs and their corresponding normal
*************** punctuators are:
*** 513,520 ****
     Any other single byte is considered "other" and passed on to the
  preprocessor's output unchanged.  The C compiler will almost certainly
  reject source code containing "other" tokens.  In ASCII, the only
! "other" characters are '@', '$', '`', and control characters other than
! NUL (all bits zero).  (Note that '$' is normally considered a letter.)
  All bytes with the high bit set (numeric range 0x7F-0xFF) that were not
  succesfully interpreted as part of an extended character in the input
  encoding are also "other" in the present implementation.
--- 513,520 ----
     Any other single byte is considered "other" and passed on to the
  preprocessor's output unchanged.  The C compiler will almost certainly
  reject source code containing "other" tokens.  In ASCII, the only
! "other" characters are â€˜@â€™, â€˜$â€™, â€˜`â€™, and control characters other than
! NUL (all bits zero).  (Note that â€˜$â€™ is normally considered a letter.)
  All bytes with the high bit set (numeric range 0x7F-0xFF) that were not
  succesfully interpreted as part of an extended character in the input
  encoding are also "other" in the present implementation.
*************** have the same meaning.
*** 529,542 ****
       #define X^@1
       #define X 1
  
! (where '^@' is ASCII NUL).  Within string or character constants, NULs
  are preserved.  In the latter two cases the preprocessor emits a warning
  message.
  
     ---------- Footnotes ----------
  
!    (1) The C standard uses the term "string literal" to refer only to
! what we are calling "string constants".
  
  
  File: cpp.info,  Node: The preprocessing language,  Prev: Tokenization,  Up: Overview
--- 529,542 ----
       #define X^@1
       #define X 1
  
! (where â€˜^@â€™ is ASCII NUL).  Within string or character constants, NULs
  are preserved.  In the latter two cases the preprocessor emits a warning
  message.
  
     ---------- Footnotes ----------
  
!    (1) The C standard uses the term â€œstring literalâ€� to refer only to
! what we are calling â€œstring constantsâ€�.
  
  
  File: cpp.info,  Node: The preprocessing language,  Prev: Tokenization,  Up: Overview
*************** File: cpp.info,  Node: The preprocessing
*** 546,590 ****
  
  After tokenization, the stream of tokens may simply be passed straight
  to the compiler's parser.  However, if it contains any operations in the
! "preprocessing language", it will be transformed first.  This stage
  corresponds roughly to the standard's "translation phase 4" and is what
  most people think of as the preprocessor's job.
  
!    The preprocessing language consists of "directives" to be executed
! and "macros" to be expanded.  Its primary capabilities are:
  
!    * Inclusion of header files.  These are files of declarations that
       can be substituted into your program.
  
!    * Macro expansion.  You can define "macros", which are abbreviations
       for arbitrary fragments of C code.  The preprocessor will replace
       the macros with their definitions throughout the program.  Some
       macros are automatically defined for you.
  
!    * Conditional compilation.  You can include or exclude parts of the
       program according to various conditions.
  
!    * Line control.  If you use a program to combine or rearrange source
       files into an intermediate file which is then compiled, you can use
       line control to inform the compiler where each source line
       originally came from.
  
!    * Diagnostics.  You can detect problems at compile time and issue
       errors or warnings.
  
     There are a few more, less useful, features.
  
     Except for expansion of predefined macros, all these operations are
! triggered with "preprocessing directives".  Preprocessing directives are
! lines in your program that start with '#'.  Whitespace is allowed before
! and after the '#'.  The '#' is followed by an identifier, the "directive
! name".  It specifies the operation to perform.  Directives are commonly
! referred to as '#NAME' where NAME is the directive name.  For example,
! '#define' is the directive that defines a macro.
  
!    The '#' which begins a directive cannot come from a macro expansion.
! Also, the directive name is not macro expanded.  Thus, if 'foo' is
! defined as a macro expanding to 'define', that does not make '#foo' a
  valid preprocessing directive.
  
     The set of valid directive names is fixed.  Programs cannot define
--- 546,590 ----
  
  After tokenization, the stream of tokens may simply be passed straight
  to the compiler's parser.  However, if it contains any operations in the
! â€œpreprocessing languageâ€�, it will be transformed first.  This stage
  corresponds roughly to the standard's "translation phase 4" and is what
  most people think of as the preprocessor's job.
  
!    The preprocessing language consists of â€œdirectivesâ€� to be executed
! and â€œmacrosâ€� to be expanded.  Its primary capabilities are:
  
!    â€¢ Inclusion of header files.  These are files of declarations that
       can be substituted into your program.
  
!    â€¢ Macro expansion.  You can define â€œmacrosâ€�, which are abbreviations
       for arbitrary fragments of C code.  The preprocessor will replace
       the macros with their definitions throughout the program.  Some
       macros are automatically defined for you.
  
!    â€¢ Conditional compilation.  You can include or exclude parts of the
       program according to various conditions.
  
!    â€¢ Line control.  If you use a program to combine or rearrange source
       files into an intermediate file which is then compiled, you can use
       line control to inform the compiler where each source line
       originally came from.
  
!    â€¢ Diagnostics.  You can detect problems at compile time and issue
       errors or warnings.
  
     There are a few more, less useful, features.
  
     Except for expansion of predefined macros, all these operations are
! triggered with â€œpreprocessing directivesâ€�.  Preprocessing directives are
! lines in your program that start with â€˜#â€™.  Whitespace is allowed before
! and after the â€˜#â€™.  The â€˜#â€™ is followed by an identifier, the â€œdirective
! nameâ€�.  It specifies the operation to perform.  Directives are commonly
! referred to as â€˜#NAMEâ€™ where NAME is the directive name.  For example,
! â€˜#defineâ€™ is the directive that defines a macro.
  
!    The â€˜#â€™ which begins a directive cannot come from a macro expansion.
! Also, the directive name is not macro expanded.  Thus, if â€˜fooâ€™ is
! defined as a macro expanding to â€˜defineâ€™, that does not make â€˜#fooâ€™ a
  valid preprocessing directive.
  
     The set of valid directive names is fixed.  Programs cannot define
*************** new preprocessing directives.
*** 592,598 ****
  
     Some directives require arguments; these make up the rest of the
  directive line and must be separated from the directive name by
! whitespace.  For example, '#define' must be followed by a macro name and
  the intended expansion of the macro.
  
     A preprocessing directive cannot cover more than one line.  The line
--- 592,598 ----
  
     Some directives require arguments; these make up the rest of the
  directive line and must be separated from the directive name by
! whitespace.  For example, â€˜#defineâ€™ must be followed by a macro name and
  the intended expansion of the macro.
  
     A preprocessing directive cannot cover more than one line.  The line
*************** File: cpp.info,  Node: Header Files,  Ne
*** 609,625 ****
  
  A header file is a file containing C declarations and macro definitions
  (*note Macros::) to be shared between several source files.  You request
! the use of a header file in your program by "including" it, with the C
! preprocessing directive '#include'.
  
     Header files serve two purposes.
  
!    * System header files declare the interfaces to parts of the
       operating system.  You include them in your program to supply the
       definitions and declarations you need to invoke system calls and
       libraries.
  
!    * Your own header files contain declarations for interfaces between
       the source files of your program.  Each time you have a group of
       related declarations and macro definitions all or most of which are
       needed in several different source files, it is a good idea to
--- 609,625 ----
  
  A header file is a file containing C declarations and macro definitions
  (*note Macros::) to be shared between several source files.  You request
! the use of a header file in your program by â€œincludingâ€� it, with the C
! preprocessing directive â€˜#includeâ€™.
  
     Header files serve two purposes.
  
!    â€¢ System header files declare the interfaces to parts of the
       operating system.  You include them in your program to supply the
       definitions and declarations you need to invoke system calls and
       libraries.
  
!    â€¢ Your own header files contain declarations for interfaces between
       the source files of your program.  Each time you have a group of
       related declarations and macro definitions all or most of which are
       needed in several different source files, it is a good idea to
*************** as the risk that a failure to find one c
*** 636,642 ****
  inconsistencies within a program.
  
     In C, the usual convention is to give header files names that end
! with '.h'.  It is most portable to use only letters, digits, dashes, and
  underscores in header file names, and at most one dot.
  
  * Menu:
--- 636,642 ----
  inconsistencies within a program.
  
     In C, the usual convention is to give header files names that end
! with â€˜.hâ€™.  It is most portable to use only letters, digits, dashes, and
  underscores in header file names, and at most one dot.
  
  * Menu:
*************** File: cpp.info,  Node: Include Syntax,
*** 657,689 ****
  ==================
  
  Both user and system header files are included using the preprocessing
! directive '#include'.  It has two variants:
  
! '#include <FILE>'
       This variant is used for system header files.  It searches for a
       file named FILE in a standard list of system directories.  You can
!      prepend directories to this list with the '-I' option (*note
       Invocation::).
  
! '#include "FILE"'
       This variant is used for header files of your own program.  It
       searches for a file named FILE first in the directory containing
       the current file, then in the quote directories and then the same
!      directories used for '<FILE>'.  You can prepend directories to the
!      list of quote directories with the '-iquote' option.
  
!    The argument of '#include', whether delimited with quote marks or
  angle brackets, behaves like a string constant in that comments are not
! recognized, and macro names are not expanded.  Thus, '#include <x/*y>'
! specifies inclusion of a system header file named 'x/*y'.
  
     However, if backslashes occur within FILE, they are considered
  ordinary text characters, not escape characters.  None of the character
  escape sequences appropriate to string constants in C are processed.
! Thus, '#include "x\n\\y"' specifies a filename containing three
! backslashes.  (Some systems interpret '\' as a pathname separator.  All
! of these also interpret '/' the same way.  It is most portable to use
! only '/'.)
  
     It is an error if there is anything (other than comments) on the line
  after the file name.
--- 657,689 ----
  ==================
  
  Both user and system header files are included using the preprocessing
! directive â€˜#includeâ€™.  It has two variants:
  
! â€˜#include <FILE>â€™
       This variant is used for system header files.  It searches for a
       file named FILE in a standard list of system directories.  You can
!      prepend directories to this list with the â€˜-Iâ€™ option (*note
       Invocation::).
  
! â€˜#include "FILE"â€™
       This variant is used for header files of your own program.  It
       searches for a file named FILE first in the directory containing
       the current file, then in the quote directories and then the same
!      directories used for â€˜<FILE>â€™.  You can prepend directories to the
!      list of quote directories with the â€˜-iquoteâ€™ option.
  
!    The argument of â€˜#includeâ€™, whether delimited with quote marks or
  angle brackets, behaves like a string constant in that comments are not
! recognized, and macro names are not expanded.  Thus, â€˜#include <x/*y>â€™
! specifies inclusion of a system header file named â€˜x/*yâ€™.
  
     However, if backslashes occur within FILE, they are considered
  ordinary text characters, not escape characters.  None of the character
  escape sequences appropriate to string constants in C are processed.
! Thus, â€˜#include "x\n\\y"â€™ specifies a filename containing three
! backslashes.  (Some systems interpret â€˜\â€™ as a pathname separator.  All
! of these also interpret â€˜/â€™ the same way.  It is most portable to use
! only â€˜/â€™.)
  
     It is an error if there is anything (other than comments) on the line
  after the file name.
*************** File: cpp.info,  Node: Include Operation
*** 694,710 ****
  2.2 Include Operation
  =====================
  
! The '#include' directive works by directing the C preprocessor to scan
  the specified file as input before continuing with the rest of the
  current file.  The output from the preprocessor contains the output
  already generated, followed by the output resulting from the included
  file, followed by the output that comes from the text after the
! '#include' directive.  For example, if you have a header file 'header.h'
  as follows,
  
       char *test (void);
  
! and a main program called 'program.c' that uses the header file, like
  this,
  
       int x;
--- 694,710 ----
  2.2 Include Operation
  =====================
  
! The â€˜#includeâ€™ directive works by directing the C preprocessor to scan
  the specified file as input before continuing with the rest of the
  current file.  The output from the preprocessor contains the output
  already generated, followed by the output resulting from the included
  file, followed by the output that comes from the text after the
! â€˜#includeâ€™ directive.  For example, if you have a header file â€˜header.hâ€™
  as follows,
  
       char *test (void);
  
! and a main program called â€˜program.câ€™ that uses the header file, like
  this,
  
       int x;
*************** this,
*** 716,722 ****
         puts (test ());
       }
  
! the compiler will see the same token stream as it would if 'program.c'
  read
  
       int x;
--- 716,722 ----
         puts (test ());
       }
  
! the compiler will see the same token stream as it would if â€˜program.câ€™
  read
  
       int x;
*************** the file.
*** 742,748 ****
  syntactic units--function declarations or definitions, type
  declarations, etc.
  
!    The line following the '#include' directive is always treated as a
  separate line by the C preprocessor, even if the included file lacks a
  final newline.
  
--- 742,748 ----
  syntactic units--function declarations or definitions, type
  declarations, etc.
  
!    The line following the â€˜#includeâ€™ directive is always treated as a
  separate line by the C preprocessor, even if the included file lacks a
  final newline.
  
*************** File: cpp.info,  Node: Search Path,  Nex
*** 753,794 ****
  ===============
  
  By default, the preprocessor looks for header files included by the
! quote form of the directive '#include "FILE"' first relative to the
  directory of the current file, and then in a preconfigured list of
! standard system directories.  For example, if '/usr/include/sys/stat.h'
! contains '#include "types.h"', GCC looks for 'types.h' first in
! '/usr/include/sys', then in its usual search path.
  
!    For the angle-bracket form '#include <FILE>', the preprocessor's
  default behavior is to look only in the standard system directories.
  The exact search directory list depends on the target system, how GCC is
  configured, and where it is installed.  You can find the default search
! directory list for your version of CPP by invoking it with the '-v'
  option.  For example,
  
       cpp -v /dev/null -o /dev/null
  
     There are a number of command-line options you can use to add
  additional directories to the search path.  The most commonly-used
! option is '-IDIR', which causes DIR to be searched after the current
  directory (for the quote form of the directive) and ahead of the
! standard system directories.  You can specify multiple '-I' options on
  the command line, in which case the directories are searched in
  left-to-right order.
  
     If you need separate control over the search paths for the quote and
! angle-bracket forms of the '#include' directive, you can use the
! '-iquote' and/or '-isystem' options instead of '-I'.  *Note
  Invocation::, for a detailed description of these options, as well as
  others that are less generally useful.
  
!    If you specify other options on the command line, such as '-I', that
  affect where the preprocessor searches for header files, the directory
! list printed by the '-v' option reflects the actual search path used by
  the preprocessor.
  
     Note that you can also prevent the preprocessor from searching any of
! the default system header directories with the '-nostdinc' option.  This
  is useful when you are compiling an operating system kernel or some
  other program that does not use the standard C library facilities, or
  the standard C library itself.
--- 753,794 ----
  ===============
  
  By default, the preprocessor looks for header files included by the
! quote form of the directive â€˜#include "FILE"â€™ first relative to the
  directory of the current file, and then in a preconfigured list of
! standard system directories.  For example, if â€˜/usr/include/sys/stat.hâ€™
! contains â€˜#include "types.h"â€™, GCC looks for â€˜types.hâ€™ first in
! â€˜/usr/include/sysâ€™, then in its usual search path.
  
!    For the angle-bracket form â€˜#include <FILE>â€™, the preprocessor's
  default behavior is to look only in the standard system directories.
  The exact search directory list depends on the target system, how GCC is
  configured, and where it is installed.  You can find the default search
! directory list for your version of CPP by invoking it with the â€˜-vâ€™
  option.  For example,
  
       cpp -v /dev/null -o /dev/null
  
     There are a number of command-line options you can use to add
  additional directories to the search path.  The most commonly-used
! option is â€˜-IDIRâ€™, which causes DIR to be searched after the current
  directory (for the quote form of the directive) and ahead of the
! standard system directories.  You can specify multiple â€˜-Iâ€™ options on
  the command line, in which case the directories are searched in
  left-to-right order.
  
     If you need separate control over the search paths for the quote and
! angle-bracket forms of the â€˜#includeâ€™ directive, you can use the
! â€˜-iquoteâ€™ and/or â€˜-isystemâ€™ options instead of â€˜-Iâ€™.  *Note
  Invocation::, for a detailed description of these options, as well as
  others that are less generally useful.
  
!    If you specify other options on the command line, such as â€˜-Iâ€™, that
  affect where the preprocessor searches for header files, the directory
! list printed by the â€˜-vâ€™ option reflects the actual search path used by
  the preprocessor.
  
     Note that you can also prevent the preprocessor from searching any of
! the default system header directories with the â€˜-nostdincâ€™ option.  This
  is useful when you are compiling an operating system kernel or some
  other program that does not use the standard C library facilities, or
  the standard C library itself.
*************** contents of the file in a conditional, l
*** 815,836 ****
  
       #endif /* !FILE_FOO_SEEN */
  
!    This construct is commonly known as a "wrapper #ifndef".  When the
  header is included again, the conditional will be false, because
! 'FILE_FOO_SEEN' is defined.  The preprocessor will skip over the entire
  contents of the file, and the compiler will not see it twice.
  
     CPP optimizes even further.  It remembers when a header file has a
! wrapper '#ifndef'.  If a subsequent '#include' specifies that header,
! and the macro in the '#ifndef' is still defined, it does not bother to
  rescan the file at all.
  
     You can put comments outside the wrapper.  They will not interfere
  with this optimization.
  
!    The macro 'FILE_FOO_SEEN' is called the "controlling macro" or "guard
! macro".  In a user header file, the macro name should not begin with
! '_'.  In a system header file, it should begin with '__' to avoid
  conflicts with user programs.  In any kind of header file, the macro
  name should contain the name of the file and some additional text, to
  avoid conflicts with other header files.
--- 815,836 ----
  
       #endif /* !FILE_FOO_SEEN */
  
!    This construct is commonly known as a â€œwrapper #ifndefâ€�.  When the
  header is included again, the conditional will be false, because
! â€˜FILE_FOO_SEENâ€™ is defined.  The preprocessor will skip over the entire
  contents of the file, and the compiler will not see it twice.
  
     CPP optimizes even further.  It remembers when a header file has a
! wrapper â€˜#ifndefâ€™.  If a subsequent â€˜#includeâ€™ specifies that header,
! and the macro in the â€˜#ifndefâ€™ is still defined, it does not bother to
  rescan the file at all.
  
     You can put comments outside the wrapper.  They will not interfere
  with this optimization.
  
!    The macro â€˜FILE_FOO_SEENâ€™ is called the â€œcontrolling macroâ€� or â€œguard
! macroâ€�.  In a user header file, the macro name should not begin with
! â€˜_â€™.  In a system header file, it should begin with â€˜__â€™ to avoid
  conflicts with user programs.  In any kind of header file, the macro
  name should contain the name of the file and some additional text, to
  avoid conflicts with other header files.
*************** File: cpp.info,  Node: Alternatives to W
*** 842,871 ****
  ===================================
  
  CPP supports two more ways of indicating that a header file should be
! read only once.  Neither one is as portable as a wrapper '#ifndef' and
  we recommend you do not use them in new programs, with the caveat that
! '#import' is standard practice in Objective-C.
  
!    CPP supports a variant of '#include' called '#import' which includes
! a file, but does so at most once.  If you use '#import' instead of
! '#include', then you don't need the conditionals inside the header file
! to prevent multiple inclusion of the contents.  '#import' is standard in
  Objective-C, but is considered a deprecated extension in C and C++.
  
!    '#import' is not a well designed feature.  It requires the users of a
  header file to know that it should only be included once.  It is much
  better for the header file's implementor to write the file so that users
! don't need to know this.  Using a wrapper '#ifndef' accomplishes this
  goal.
  
!    In the present implementation, a single use of '#import' will prevent
! the file from ever being read again, by either '#import' or '#include'.
! You should not rely on this; do not use both '#import' and '#include' to
  refer to the same header file.
  
     Another way to prevent a header file from being included more than
! once is with the '#pragma once' directive (*note Pragmas::).  '#pragma
! once' does not have the problems that '#import' does, but it is not
  recognized by all preprocessors, so you cannot rely on it in a portable
  program.
  
--- 842,871 ----
  ===================================
  
  CPP supports two more ways of indicating that a header file should be
! read only once.  Neither one is as portable as a wrapper â€˜#ifndefâ€™ and
  we recommend you do not use them in new programs, with the caveat that
! â€˜#importâ€™ is standard practice in Objective-C.
  
!    CPP supports a variant of â€˜#includeâ€™ called â€˜#importâ€™ which includes
! a file, but does so at most once.  If you use â€˜#importâ€™ instead of
! â€˜#includeâ€™, then you don't need the conditionals inside the header file
! to prevent multiple inclusion of the contents.  â€˜#importâ€™ is standard in
  Objective-C, but is considered a deprecated extension in C and C++.
  
!    â€˜#importâ€™ is not a well designed feature.  It requires the users of a
  header file to know that it should only be included once.  It is much
  better for the header file's implementor to write the file so that users
! don't need to know this.  Using a wrapper â€˜#ifndefâ€™ accomplishes this
  goal.
  
!    In the present implementation, a single use of â€˜#importâ€™ will prevent
! the file from ever being read again, by either â€˜#importâ€™ or â€˜#includeâ€™.
! You should not rely on this; do not use both â€˜#importâ€™ and â€˜#includeâ€™ to
  refer to the same header file.
  
     Another way to prevent a header file from being included more than
! once is with the â€˜#pragma onceâ€™ directive (*note Pragmas::).  â€˜#pragma
! onceâ€™ does not have the problems that â€˜#importâ€™ does, but it is not
  recognized by all preprocessors, so you cannot rely on it in a portable
  program.
  
*************** systems, for instance.  You could do thi
*** 889,916 ****
       #endif
  
     That rapidly becomes tedious.  Instead, the preprocessor offers the
! ability to use a macro for the header name.  This is called a "computed
! include".  Instead of writing a header name as the direct argument of
! '#include', you simply put a macro name there instead:
  
       #define SYSTEM_H "system_1.h"
       ...
       #include SYSTEM_H
  
! 'SYSTEM_H' will be expanded, and the preprocessor will look for
! 'system_1.h' as if the '#include' had been written that way originally.
! 'SYSTEM_H' could be defined by your Makefile with a '-D' option.
  
!    You must be careful when you define the macro.  '#define' saves
  tokens, not text.  The preprocessor has no way of knowing that the macro
! will be used as the argument of '#include', so it generates ordinary
  tokens, not a header name.  This is unlikely to cause problems if you
  use double-quote includes, which are close enough to string constants.
  If you use angle brackets, however, you may have trouble.
  
     The syntax of a computed include is actually a bit more general than
! the above.  If the first non-whitespace character after '#include' is
! not '"' or '<', then the entire line is macro-expanded like running text
  would be.
  
     If the line expands to a single string constant, the contents of that
--- 889,916 ----
       #endif
  
     That rapidly becomes tedious.  Instead, the preprocessor offers the
! ability to use a macro for the header name.  This is called a â€œcomputed
! includeâ€�.  Instead of writing a header name as the direct argument of
! â€˜#includeâ€™, you simply put a macro name there instead:
  
       #define SYSTEM_H "system_1.h"
       ...
       #include SYSTEM_H
  
! â€˜SYSTEM_Hâ€™ will be expanded, and the preprocessor will look for
! â€˜system_1.hâ€™ as if the â€˜#includeâ€™ had been written that way originally.
! â€˜SYSTEM_Hâ€™ could be defined by your Makefile with a â€˜-Dâ€™ option.
  
!    You must be careful when you define the macro.  â€˜#defineâ€™ saves
  tokens, not text.  The preprocessor has no way of knowing that the macro
! will be used as the argument of â€˜#includeâ€™, so it generates ordinary
  tokens, not a header name.  This is unlikely to cause problems if you
  use double-quote includes, which are close enough to string constants.
  If you use angle brackets, however, you may have trouble.
  
     The syntax of a computed include is actually a bit more general than
! the above.  If the first non-whitespace character after â€˜#includeâ€™ is
! not â€˜"â€™ or â€˜<â€™, then the entire line is macro-expanded like running text
  would be.
  
     If the line expands to a single string constant, the contents of that
*************** escapes in the string.  Therefore
*** 921,934 ****
       #define HEADER "a\"b"
       #include HEADER
  
! looks for a file named 'a\"b'.  CPP searches for the file according to
  the rules for double-quoted includes.
  
!    If the line expands to a token stream beginning with a '<' token and
! including a '>' token, then the tokens between the '<' and the first '>'
  are combined to form the filename to be included.  Any whitespace
  between tokens is reduced to a single space; then any space after the
! initial '<' is retained, but a trailing space before the closing '>' is
  ignored.  CPP searches for the file according to the rules for
  angle-bracket includes.
  
--- 921,934 ----
       #define HEADER "a\"b"
       #include HEADER
  
! looks for a file named â€˜a\"bâ€™.  CPP searches for the file according to
  the rules for double-quoted includes.
  
!    If the line expands to a token stream beginning with a â€˜<â€™ token and
! including a â€˜>â€™ token, then the tokens between the â€˜<â€™ and the first â€˜>â€™
  are combined to form the filename to be included.  Any whitespace
  between tokens is reduced to a single space; then any space after the
! initial â€˜<â€™ is retained, but a trailing space before the closing â€˜>â€™ is
  ignored.  CPP searches for the file according to the rules for
  angle-bracket includes.
  
*************** File: cpp.info,  Node: Wrapper Headers,
*** 950,963 ****
  ===================
  
  Sometimes it is necessary to adjust the contents of a system-provided
! header file without editing it directly.  GCC's 'fixincludes' operation
  does this, for example.  One way to do that would be to create a new
  header file with the same name and insert it in the search path before
  the original header.  That works fine as long as you're willing to
  replace the old header entirely.  But what if you want to refer to the
  old header from the new one?
  
!    You cannot simply include the old header with '#include'.  That will
  start from the beginning, and find your new header again.  If your
  header is not protected from multiple inclusion (*note Once-Only
  Headers::), it will recurse infinitely and cause a fatal error.
--- 950,963 ----
  ===================
  
  Sometimes it is necessary to adjust the contents of a system-provided
! header file without editing it directly.  GCC's â€˜fixincludesâ€™ operation
  does this, for example.  One way to do that would be to create a new
  header file with the same name and insert it in the search path before
  the original header.  That works fine as long as you're willing to
  replace the old header entirely.  But what if you want to refer to the
  old header from the new one?
  
!    You cannot simply include the old header with â€˜#includeâ€™.  That will
  start from the beginning, and find your new header again.  If your
  header is not protected from multiple inclusion (*note Once-Only
  Headers::), it will recurse infinitely and cause a fatal error.
*************** This works, but is not clean; should the
*** 968,997 ****
  would have to edit the new headers to match.
  
     There is no way to solve this problem within the C standard, but you
! can use the GNU extension '#include_next'.  It means, "Include the
! _next_ file with this name".  This directive works like '#include'
  except in searching for the specified file: it starts searching the list
  of header file directories _after_ the directory in which the current
  file was found.
  
!    Suppose you specify '-I /usr/local/include', and the list of
! directories to search also includes '/usr/include'; and suppose both
! directories contain 'signal.h'.  Ordinary '#include <signal.h>' finds
! the file under '/usr/local/include'.  If that file contains
! '#include_next <signal.h>', it starts searching after that directory,
! and finds the file in '/usr/include'.
  
!    '#include_next' does not distinguish between '<FILE>' and '"FILE"'
  inclusion, nor does it check that the file you specify has the same name
  as the current file.  It simply looks for the file named, starting with
  the directory in the search path after the one where the current file
  was found.
  
!    The use of '#include_next' can lead to great confusion.  We recommend
  it be used only when there is no other alternative.  In particular, it
  should not be used in the headers belonging to a specific program; it
  should be used only to make global corrections along the lines of
! 'fixincludes'.
  
  
  File: cpp.info,  Node: System Headers,  Prev: Wrapper Headers,  Up: Header Files
--- 968,997 ----
  would have to edit the new headers to match.
  
     There is no way to solve this problem within the C standard, but you
! can use the GNU extension â€˜#include_nextâ€™.  It means, "Include the
! _next_ file with this name".  This directive works like â€˜#includeâ€™
  except in searching for the specified file: it starts searching the list
  of header file directories _after_ the directory in which the current
  file was found.
  
!    Suppose you specify â€˜-I /usr/local/includeâ€™, and the list of
! directories to search also includes â€˜/usr/includeâ€™; and suppose both
! directories contain â€˜signal.hâ€™.  Ordinary â€˜#include <signal.h>â€™ finds
! the file under â€˜/usr/local/includeâ€™.  If that file contains
! â€˜#include_next <signal.h>â€™, it starts searching after that directory,
! and finds the file in â€˜/usr/includeâ€™.
  
!    â€˜#include_nextâ€™ does not distinguish between â€˜<FILE>â€™ and â€˜"FILE"â€™
  inclusion, nor does it check that the file you specify has the same name
  as the current file.  It simply looks for the file named, starting with
  the directory in the search path after the one where the current file
  was found.
  
!    The use of â€˜#include_nextâ€™ can lead to great confusion.  We recommend
  it be used only when there is no other alternative.  In particular, it
  should not be used in the headers belonging to a specific program; it
  should be used only to make global corrections along the lines of
! â€˜fixincludesâ€™.
  
  
  File: cpp.info,  Node: System Headers,  Prev: Wrapper Headers,  Up: Header Files
*************** File: cpp.info,  Node: System Headers,
*** 1001,1008 ****
  
  The header files declaring interfaces to the operating system and
  runtime libraries often cannot be written in strictly conforming C.
! Therefore, GCC gives code found in "system headers" special treatment.
! All warnings, other than those generated by '#warning' (*note
  Diagnostics::), are suppressed while GCC is processing a system header.
  Macros defined in a system header are immune to a few warnings wherever
  they are expanded.  This immunity is granted on an ad-hoc basis, when we
--- 1001,1008 ----
  
  The header files declaring interfaces to the operating system and
  runtime libraries often cannot be written in strictly conforming C.
! Therefore, GCC gives code found in â€œsystem headersâ€� special treatment.
! All warnings, other than those generated by â€˜#warningâ€™ (*note
  Diagnostics::), are suppressed while GCC is processing a system header.
  Macros defined in a system header are immune to a few warnings wherever
  they are expanded.  This immunity is granted on an ad-hoc basis, when we
*************** considered system headers.  These direct
*** 1014,1031 ****
  compiled.  There are, however, two ways to make normal headers into
  system headers:
  
!    * Header files found in directories added to the search path with the
!      '-isystem' and '-idirafter' command-line options are treated as
       system headers for the purposes of diagnostics.
  
!    * There is also a directive, '#pragma GCC system_header', which tells
       GCC to consider the rest of the current include file a system
       header, no matter where it was found.  Code that comes before the
!      '#pragma' in the file is not affected.  '#pragma GCC system_header'
       has no effect in the primary source file.
  
     On some targets, such as RS/6000 AIX, GCC implicitly surrounds all
! system headers with an 'extern "C"' block when compiling as C++.
  
  
  File: cpp.info,  Node: Macros,  Next: Conditionals,  Prev: Header Files,  Up: Top
--- 1014,1031 ----
  compiled.  There are, however, two ways to make normal headers into
  system headers:
  
!    â€¢ Header files found in directories added to the search path with the
!      â€˜-isystemâ€™ and â€˜-idirafterâ€™ command-line options are treated as
       system headers for the purposes of diagnostics.
  
!    â€¢ There is also a directive, â€˜#pragma GCC system_headerâ€™, which tells
       GCC to consider the rest of the current include file a system
       header, no matter where it was found.  Code that comes before the
!      â€˜#pragmaâ€™ in the file is not affected.  â€˜#pragma GCC system_headerâ€™
       has no effect in the primary source file.
  
     On some targets, such as RS/6000 AIX, GCC implicitly surrounds all
! system headers with an â€˜extern "C"â€™ block when compiling as C++.
  
  
  File: cpp.info,  Node: Macros,  Next: Conditionals,  Prev: Header Files,  Up: Top
*************** File: cpp.info,  Node: Macros,  Next: Co
*** 1033,1049 ****
  3 Macros
  ********
  
! A "macro" is a fragment of code which has been given a name.  Whenever
  the name is used, it is replaced by the contents of the macro.  There
  are two kinds of macros.  They differ mostly in what they look like when
! they are used.  "Object-like" macros resemble data objects when used,
! "function-like" macros resemble function calls.
  
     You may define any valid identifier as a macro, even if it is a C
  keyword.  The preprocessor does not know anything about keywords.  This
! can be useful if you wish to hide a keyword such as 'const' from an
  older compiler that does not understand it.  However, the preprocessor
! operator 'defined' (*note Defined::) can never be defined as a macro,
  and C++'s named operators (*note C++ Named Operators::) cannot be macros
  when you are compiling C++.
  
--- 1033,1049 ----
  3 Macros
  ********
  
! A â€œmacroâ€� is a fragment of code which has been given a name.  Whenever
  the name is used, it is replaced by the contents of the macro.  There
  are two kinds of macros.  They differ mostly in what they look like when
! they are used.  â€œObject-likeâ€� macros resemble data objects when used,
! â€œfunction-likeâ€� macros resemble function calls.
  
     You may define any valid identifier as a macro, even if it is a C
  keyword.  The preprocessor does not know anything about keywords.  This
! can be useful if you wish to hide a keyword such as â€˜constâ€™ from an
  older compiler that does not understand it.  However, the preprocessor
! operator â€˜definedâ€™ (*note Defined::) can never be defined as a macro,
  and C++'s named operators (*note C++ Named Operators::) cannot be macros
  when you are compiling C++.
  
*************** File: cpp.info,  Node: Object-like Macro
*** 1066,1091 ****
  3.1 Object-like Macros
  ======================
  
! An "object-like macro" is a simple identifier which will be replaced by
  a code fragment.  It is called object-like because it looks like a data
  object in code that uses it.  They are most commonly used to give
  symbolic names to numeric constants.
  
!    You create macros with the '#define' directive.  '#define' is
  followed by the name of the macro and then the token sequence it should
  be an abbreviation for, which is variously referred to as the macro's
! "body", "expansion" or "replacement list".  For example,
  
       #define BUFFER_SIZE 1024
  
! defines a macro named 'BUFFER_SIZE' as an abbreviation for the token
! '1024'.  If somewhere after this '#define' directive there comes a C
  statement of the form
  
       foo = (char *) malloc (BUFFER_SIZE);
  
! then the C preprocessor will recognize and "expand" the macro
! 'BUFFER_SIZE'.  The C compiler will see the same tokens as it would if
  you had written
  
       foo = (char *) malloc (1024);
--- 1066,1091 ----
  3.1 Object-like Macros
  ======================
  
! An â€œobject-like macroâ€� is a simple identifier which will be replaced by
  a code fragment.  It is called object-like because it looks like a data
  object in code that uses it.  They are most commonly used to give
  symbolic names to numeric constants.
  
!    You create macros with the â€˜#defineâ€™ directive.  â€˜#defineâ€™ is
  followed by the name of the macro and then the token sequence it should
  be an abbreviation for, which is variously referred to as the macro's
! â€œbodyâ€�, â€œexpansionâ€� or â€œreplacement listâ€�.  For example,
  
       #define BUFFER_SIZE 1024
  
! defines a macro named â€˜BUFFER_SIZEâ€™ as an abbreviation for the token
! â€˜1024â€™.  If somewhere after this â€˜#defineâ€™ directive there comes a C
  statement of the form
  
       foo = (char *) malloc (BUFFER_SIZE);
  
! then the C preprocessor will recognize and â€œexpandâ€� the macro
! â€˜BUFFER_SIZEâ€™.  The C compiler will see the same tokens as it would if
  you had written
  
       foo = (char *) malloc (1024);
*************** you had written
*** 1094,1100 ****
  easier to read when it is possible to tell at a glance which names are
  macros.
  
!    The macro's body ends at the end of the '#define' line.  You may
  continue the definition onto multiple lines, if necessary, using
  backslash-newline.  When the macro is expanded, however, it will all
  come out on one line.  For example,
--- 1094,1100 ----
  easier to read when it is possible to tell at a glance which names are
  macros.
  
!    The macro's body ends at the end of the â€˜#defineâ€™ line.  You may
  continue the definition onto multiple lines, if necessary, using
  backslash-newline.  When the macro is expanded, however, it will all
  come out on one line.  For example,
*************** come out on one line.  For example,
*** 1103,1109 ****
                       2, \
                       3
       int x[] = { NUMBERS };
!           ==> int x[] = { 1, 2, 3 };
  
  The most common visible consequence of this is surprising line numbers
  in error messages.
--- 1103,1109 ----
                       2, \
                       3
       int x[] = { NUMBERS };
!           â†¦ int x[] = { 1, 2, 3 };
  
  The most common visible consequence of this is surprising line numbers
  in error messages.
*************** macros to expand.  For example,
*** 1133,1153 ****
       #define TABLESIZE BUFSIZE
       #define BUFSIZE 1024
       TABLESIZE
!           ==> BUFSIZE
!           ==> 1024
  
! 'TABLESIZE' is expanded first to produce 'BUFSIZE', then that macro is
! expanded to produce the final result, '1024'.
  
!    Notice that 'BUFSIZE' was not defined when 'TABLESIZE' was defined.
! The '#define' for 'TABLESIZE' uses exactly the expansion you specify--in
! this case, 'BUFSIZE'--and does not check to see whether it too contains
! macro names.  Only when you _use_ 'TABLESIZE' is the result of its
  expansion scanned for more macro names.
  
!    This makes a difference if you change the definition of 'BUFSIZE' at
! some point in the source file.  'TABLESIZE', defined as shown, will
! always expand using the definition of 'BUFSIZE' that is currently in
  effect:
  
       #define BUFSIZE 1020
--- 1133,1153 ----
       #define TABLESIZE BUFSIZE
       #define BUFSIZE 1024
       TABLESIZE
!           â†¦ BUFSIZE
!           â†¦ 1024
  
! â€˜TABLESIZEâ€™ is expanded first to produce â€˜BUFSIZEâ€™, then that macro is
! expanded to produce the final result, â€˜1024â€™.
  
!    Notice that â€˜BUFSIZEâ€™ was not defined when â€˜TABLESIZEâ€™ was defined.
! The â€˜#defineâ€™ for â€˜TABLESIZEâ€™ uses exactly the expansion you specify--in
! this case, â€˜BUFSIZEâ€™--and does not check to see whether it too contains
! macro names.  Only when you _use_ â€˜TABLESIZEâ€™ is the result of its
  expansion scanned for more macro names.
  
!    This makes a difference if you change the definition of â€˜BUFSIZEâ€™ at
! some point in the source file.  â€˜TABLESIZEâ€™, defined as shown, will
! always expand using the definition of â€˜BUFSIZEâ€™ that is currently in
  effect:
  
       #define BUFSIZE 1020
*************** effect:
*** 1155,1161 ****
       #undef BUFSIZE
       #define BUFSIZE 37
  
! Now 'TABLESIZE' expands (in two stages) to '37'.
  
     If the expansion of a macro contains its own name, either directly or
  via intermediate macros, it is not expanded again when the expansion is
--- 1155,1161 ----
       #undef BUFSIZE
       #define BUFSIZE 37
  
! Now â€˜TABLESIZEâ€™ expands (in two stages) to â€˜37â€™.
  
     If the expansion of a macro contains its own name, either directly or
  via intermediate macros, it is not expanded again when the expansion is
*************** File: cpp.info,  Node: Function-like Mac
*** 1169,1181 ****
  ========================
  
  You can also define macros whose use looks like a function call.  These
! are called "function-like macros".  To define a function-like macro, you
! use the same '#define' directive, but you put a pair of parentheses
  immediately after the macro name.  For example,
  
       #define lang_init()  c_init()
       lang_init()
!           ==> c_init()
  
     A function-like macro is only expanded if its name appears with a
  pair of parentheses after it.  If you write just the name, it is left
--- 1169,1181 ----
  ========================
  
  You can also define macros whose use looks like a function call.  These
! are called â€œfunction-like macrosâ€�.  To define a function-like macro, you
! use the same â€˜#defineâ€™ directive, but you put a pair of parentheses
  immediately after the macro name.  For example,
  
       #define lang_init()  c_init()
       lang_init()
!           â†¦ c_init()
  
     A function-like macro is only expanded if its name appears with a
  pair of parentheses after it.  If you write just the name, it is left
*************** same name, and you wish to use the funct
*** 1188,1194 ****
         foo();
         funcptr = foo;
  
!    Here the call to 'foo()' will use the macro, but the function pointer
  will get the address of the real function.  If the macro were to be
  expanded, it would cause a syntax error.
  
--- 1188,1194 ----
         foo();
         funcptr = foo;
  
!    Here the call to â€˜foo()â€™ will use the macro, but the function pointer
  will get the address of the real function.  If the macro were to be
  expanded, it would cause a syntax error.
  
*************** parentheses.
*** 1199,1209 ****
  
       #define lang_init ()    c_init()
       lang_init()
!           ==> () c_init()()
  
     The first two pairs of parentheses in this expansion come from the
  macro.  The third is the pair that was originally after the macro
! invocation.  Since 'lang_init' is an object-like macro, it does not
  consume those parentheses.
  
  
--- 1199,1209 ----
  
       #define lang_init ()    c_init()
       lang_init()
!           â†¦ () c_init()()
  
     The first two pairs of parentheses in this expansion come from the
  macro.  The third is the pair that was originally after the macro
! invocation.  Since â€˜lang_initâ€™ is an object-like macro, it does not
  consume those parentheses.
  
  
*************** File: cpp.info,  Node: Macro Arguments,
*** 1212,1225 ****
  3.3 Macro Arguments
  ===================
  
! Function-like macros can take "arguments", just like true functions.  To
! define a macro that uses arguments, you insert "parameters" between the
  pair of parentheses in the macro definition that make the macro
  function-like.  The parameters must be valid C identifiers, separated by
  commas and optionally whitespace.
  
     To invoke a macro that takes arguments, you write the name of the
! macro followed by a list of "actual arguments" in parentheses, separated
  by commas.  The invocation of the macro need not be restricted to a
  single logical line--it can cross as many lines in the source file as
  you wish.  The number of arguments you give must match the number of
--- 1212,1225 ----
  3.3 Macro Arguments
  ===================
  
! Function-like macros can take â€œargumentsâ€�, just like true functions.  To
! define a macro that uses arguments, you insert â€œparametersâ€� between the
  pair of parentheses in the macro definition that make the macro
  function-like.  The parameters must be valid C identifiers, separated by
  commas and optionally whitespace.
  
     To invoke a macro that takes arguments, you write the name of the
! macro followed by a list of â€œactual argumentsâ€� in parentheses, separated
  by commas.  The invocation of the macro need not be restricted to a
  single logical line--it can cross as many lines in the source file as
  you wish.  The number of arguments you give must match the number of
*************** macro body.)
*** 1232,1240 ****
  numeric values, as it is defined in many C programs, and some uses.
  
       #define min(X, Y)  ((X) < (Y) ? (X) : (Y))
!        x = min(a, b);          ==>  x = ((a) < (b) ? (a) : (b));
!        y = min(1, 2);          ==>  y = ((1) < (2) ? (1) : (2));
!        z = min(a + 28, *p);    ==>  z = ((a + 28) < (*p) ? (a + 28) : (*p));
  
  (In this small example you can already see several of the dangers of
  macro arguments.  *Note Macro Pitfalls::, for detailed explanations.)
--- 1232,1240 ----
  numeric values, as it is defined in many C programs, and some uses.
  
       #define min(X, Y)  ((X) < (Y) ? (X) : (Y))
!        x = min(a, b);          â†¦  x = ((a) < (b) ? (a) : (b));
!        y = min(1, 2);          â†¦  y = ((1) < (2) ? (1) : (2));
!        z = min(a + 28, *p);    â†¦  z = ((a + 28) < (*p) ? (a + 28) : (*p));
  
  (In this small example you can already see several of the dangers of
  macro arguments.  *Note Macro Pitfalls::, for detailed explanations.)
*************** prevent a comma from separating argument
*** 1248,1256 ****
  
       macro (array[x = y, x + 1])
  
! passes two arguments to 'macro': 'array[x = y' and 'x + 1]'.  If you
! want to supply 'array[x = y, x + 1]' as an argument, you can write it as
! 'array[(x = y, x + 1)]', which is equivalent C code.
  
     All arguments to a macro are completely macro-expanded before they
  are substituted into the macro body.  After substitution, the complete
--- 1248,1256 ----
  
       macro (array[x = y, x + 1])
  
! passes two arguments to â€˜macroâ€™: â€˜array[x = yâ€™ and â€˜x + 1]â€™.  If you
! want to supply â€˜array[x = y, x + 1]â€™ as an argument, you can write it as
! â€˜array[(x = y, x + 1)]â€™, which is equivalent C code.
  
     All arguments to a macro are completely macro-expanded before they
  are substituted into the macro body.  After substitution, the complete
*************** worry about whether any function call is
*** 1260,1266 ****
  You can run into trouble if you try to be too clever, though.  *Note
  Argument Prescan::, for detailed discussion.
  
!    For example, 'min (min (a, b), c)' is first expanded to
  
         min (((a) < (b) ? (a) : (b)), (c))
  
--- 1260,1266 ----
  You can run into trouble if you try to be too clever, though.  *Note
  Argument Prescan::, for detailed discussion.
  
!    For example, â€˜min (min (a, b), c)â€™ is first expanded to
  
         min (((a) < (b) ? (a) : (b)), (c))
  
*************** and then to
*** 1276,1293 ****
  preprocessor (but many macros will then expand to invalid code).  You
  cannot leave out arguments entirely; if a macro takes two arguments,
  there must be exactly one comma at the top level of its argument list.
! Here are some silly examples using 'min':
  
!      min(, b)        ==> ((   ) < (b) ? (   ) : (b))
!      min(a, )        ==> ((a  ) < ( ) ? (a  ) : ( ))
!      min(,)          ==> ((   ) < ( ) ? (   ) : ( ))
!      min((,),)       ==> (((,)) < ( ) ? ((,)) : ( ))
  
!      min()      error-> macro "min" requires 2 arguments, but only 1 given
!      min(,,)    error-> macro "min" passed 3 arguments, but takes just 2
  
!    Whitespace is not a preprocessing token, so if a macro 'foo' takes
! one argument, 'foo ()' and 'foo ( )' both supply it an empty argument.
  Previous GNU preprocessor implementations and documentation were
  incorrect on this point, insisting that a function-like macro that takes
  a single argument be passed a space if an empty argument was required.
--- 1276,1293 ----
  preprocessor (but many macros will then expand to invalid code).  You
  cannot leave out arguments entirely; if a macro takes two arguments,
  there must be exactly one comma at the top level of its argument list.
! Here are some silly examples using â€˜minâ€™:
  
!      min(, b)        â†¦ ((   ) < (b) ? (   ) : (b))
!      min(a, )        â†¦ ((a  ) < ( ) ? (a  ) : ( ))
!      min(,)          â†¦ ((   ) < ( ) ? (   ) : ( ))
!      min((,),)       â†¦ (((,)) < ( ) ? ((,)) : ( ))
  
!      min()      errorâ†’ macro "min" requires 2 arguments, but only 1 given
!      min(,,)    errorâ†’ macro "min" passed 3 arguments, but takes just 2
  
!    Whitespace is not a preprocessing token, so if a macro â€˜fooâ€™ takes
! one argument, â€˜foo ()â€™ and â€˜foo ( )â€™ both supply it an empty argument.
  Previous GNU preprocessor implementations and documentation were
  incorrect on this point, insisting that a function-like macro that takes
  a single argument be passed a space if an empty argument was required.
*************** a single argument be passed a space if a
*** 1296,1302 ****
  their corresponding actual arguments.
  
       #define foo(x) x, "x"
!      foo(bar)        ==> bar, "x"
  
  
  File: cpp.info,  Node: Stringizing,  Next: Concatenation,  Prev: Macro Arguments,  Up: Macros
--- 1296,1302 ----
  their corresponding actual arguments.
  
       #define foo(x) x, "x"
!      foo(bar)        â†¦ bar, "x"
  
  
  File: cpp.info,  Node: Stringizing,  Next: Concatenation,  Prev: Macro Arguments,  Up: Macros
*************** File: cpp.info,  Node: Stringizing,  Nex
*** 1306,1316 ****
  
  Sometimes you may want to convert a macro argument into a string
  constant.  Parameters are not replaced inside string constants, but you
! can use the '#' preprocessing operator instead.  When a macro parameter
! is used with a leading '#', the preprocessor replaces it with the
  literal text of the actual argument, converted to a string constant.
  Unlike normal parameter replacement, the argument is not macro-expanded
! first.  This is called "stringizing".
  
     There is no way to combine an argument with surrounding text and
  stringize it all together.  Instead, you can write a series of adjacent
--- 1306,1316 ----
  
  Sometimes you may want to convert a macro argument into a string
  constant.  Parameters are not replaced inside string constants, but you
! can use the â€˜#â€™ preprocessing operator instead.  When a macro parameter
! is used with a leading â€˜#â€™, the preprocessor replaces it with the
  literal text of the actual argument, converted to a string constant.
  Unlike normal parameter replacement, the argument is not macro-expanded
! first.  This is called â€œstringizingâ€�.
  
     There is no way to combine an argument with surrounding text and
  stringize it all together.  Instead, you can write a series of adjacent
*************** combines all the adjacent string constan
*** 1325,1349 ****
               fprintf (stderr, "Warning: " #EXP "\n"); } \
       while (0)
       WARN_IF (x == 0);
!           ==> do { if (x == 0)
                  fprintf (stderr, "Warning: " "x == 0" "\n"); } while (0);
  
! The argument for 'EXP' is substituted once, as-is, into the 'if'
! statement, and once, stringized, into the argument to 'fprintf'.  If 'x'
! were a macro, it would be expanded in the 'if' statement, but not in the
  string.
  
!    The 'do' and 'while (0)' are a kludge to make it possible to write
! 'WARN_IF (ARG);', which the resemblance of 'WARN_IF' to a function would
  make C programmers want to do; see *note Swallowing the Semicolon::.
  
     Stringizing in C involves more than putting double-quote characters
  around the fragment.  The preprocessor backslash-escapes the quotes
  surrounding embedded string constants, and all backslashes within string
  and character constants, in order to get a valid C string constant with
! the proper contents.  Thus, stringizing 'p = "foo\n";' results in
  "p = \"foo\\n\";".  However, backslashes that are not inside string or
! character constants are not duplicated: '\n' by itself stringizes to
  "\n".
  
     All leading and trailing whitespace in text being stringized is
--- 1325,1349 ----
               fprintf (stderr, "Warning: " #EXP "\n"); } \
       while (0)
       WARN_IF (x == 0);
!           â†¦ do { if (x == 0)
                  fprintf (stderr, "Warning: " "x == 0" "\n"); } while (0);
  
! The argument for â€˜EXPâ€™ is substituted once, as-is, into the â€˜ifâ€™
! statement, and once, stringized, into the argument to â€˜fprintfâ€™.  If â€˜xâ€™
! were a macro, it would be expanded in the â€˜ifâ€™ statement, but not in the
  string.
  
!    The â€˜doâ€™ and â€˜while (0)â€™ are a kludge to make it possible to write
! â€˜WARN_IF (ARG);â€™, which the resemblance of â€˜WARN_IFâ€™ to a function would
  make C programmers want to do; see *note Swallowing the Semicolon::.
  
     Stringizing in C involves more than putting double-quote characters
  around the fragment.  The preprocessor backslash-escapes the quotes
  surrounding embedded string constants, and all backslashes within string
  and character constants, in order to get a valid C string constant with
! the proper contents.  Thus, stringizing â€˜p = "foo\n";â€™ results in
  "p = \"foo\\n\";".  However, backslashes that are not inside string or
! character constants are not duplicated: â€˜\nâ€™ by itself stringizes to
  "\n".
  
     All leading and trailing whitespace in text being stringized is
*************** you have to use two levels of macros.
*** 1362,1377 ****
       #define str(s) #s
       #define foo 4
       str (foo)
!           ==> "foo"
       xstr (foo)
!           ==> xstr (4)
!           ==> str (4)
!           ==> "4"
  
!    's' is stringized when it is used in 'str', so it is not
! macro-expanded first.  But 's' is an ordinary argument to 'xstr', so it
! is completely macro-expanded before 'xstr' itself is expanded (*note
! Argument Prescan::).  Therefore, by the time 'str' gets to its argument,
  it has already been macro-expanded.
  
  
--- 1362,1377 ----
       #define str(s) #s
       #define foo 4
       str (foo)
!           â†¦ "foo"
       xstr (foo)
!           â†¦ xstr (4)
!           â†¦ str (4)
!           â†¦ "4"
  
!    â€˜sâ€™ is stringized when it is used in â€˜strâ€™, so it is not
! macro-expanded first.  But â€˜sâ€™ is an ordinary argument to â€˜xstrâ€™, so it
! is completely macro-expanded before â€˜xstrâ€™ itself is expanded (*note
! Argument Prescan::).  Therefore, by the time â€˜strâ€™ gets to its argument,
  it has already been macro-expanded.
  
  
*************** File: cpp.info,  Node: Concatenation,  N
*** 1381,1419 ****
  =================
  
  It is often useful to merge two tokens into one while expanding macros.
! This is called "token pasting" or "token concatenation".  The '##'
  preprocessing operator performs token pasting.  When a macro is
! expanded, the two tokens on either side of each '##' operator are
! combined into a single token, which then replaces the '##' and the two
  original tokens in the macro expansion.  Usually both will be
  identifiers, or one will be an identifier and the other a preprocessing
  number.  When pasted, they make a longer identifier.  This isn't the
  only valid case.  It is also possible to concatenate two numbers (or a
! number and a name, such as '1.5' and 'e3') into a number.  Also,
! multi-character operators such as '+=' can be formed by token pasting.
  
     However, two tokens that don't together form a valid token cannot be
! pasted together.  For example, you cannot concatenate 'x' with '+' in
  either order.  If you try, the preprocessor issues a warning and emits
  the two tokens.  Whether it puts white space between the tokens is
! undefined.  It is common to find unnecessary uses of '##' in complex
  macros.  If you get this warning, it is likely that you can simply
! remove the '##'.
  
!    Both the tokens combined by '##' could come from the macro body, but
  you could just as well write them as one token in the first place.
  Token pasting is most useful when one or both of the tokens comes from a
! macro argument.  If either of the tokens next to an '##' is a parameter
! name, it is replaced by its actual argument before '##' executes.  As
  with stringizing, the actual argument is not macro-expanded first.  If
! the argument is empty, that '##' has no effect.
  
     Keep in mind that the C preprocessor converts comments to whitespace
  before macros are even considered.  Therefore, you cannot create a
! comment by concatenating '/' and '*'.  You can put as much whitespace
! between '##' and its operands as you like, including comments, and you
  can put comments in arguments that will be concatenated.  However, it is
! an error if '##' appears at either end of a macro body.
  
     Consider a C program that interprets named commands.  There probably
  needs to be a table of commands, perhaps an array of structures declared
--- 1381,1419 ----
  =================
  
  It is often useful to merge two tokens into one while expanding macros.
! This is called â€œtoken pastingâ€� or â€œtoken concatenationâ€�.  The â€˜##â€™
  preprocessing operator performs token pasting.  When a macro is
! expanded, the two tokens on either side of each â€˜##â€™ operator are
! combined into a single token, which then replaces the â€˜##â€™ and the two
  original tokens in the macro expansion.  Usually both will be
  identifiers, or one will be an identifier and the other a preprocessing
  number.  When pasted, they make a longer identifier.  This isn't the
  only valid case.  It is also possible to concatenate two numbers (or a
! number and a name, such as â€˜1.5â€™ and â€˜e3â€™) into a number.  Also,
! multi-character operators such as â€˜+=â€™ can be formed by token pasting.
  
     However, two tokens that don't together form a valid token cannot be
! pasted together.  For example, you cannot concatenate â€˜xâ€™ with â€˜+â€™ in
  either order.  If you try, the preprocessor issues a warning and emits
  the two tokens.  Whether it puts white space between the tokens is
! undefined.  It is common to find unnecessary uses of â€˜##â€™ in complex
  macros.  If you get this warning, it is likely that you can simply
! remove the â€˜##â€™.
  
!    Both the tokens combined by â€˜##â€™ could come from the macro body, but
  you could just as well write them as one token in the first place.
  Token pasting is most useful when one or both of the tokens comes from a
! macro argument.  If either of the tokens next to an â€˜##â€™ is a parameter
! name, it is replaced by its actual argument before â€˜##â€™ executes.  As
  with stringizing, the actual argument is not macro-expanded first.  If
! the argument is empty, that â€˜##â€™ has no effect.
  
     Keep in mind that the C preprocessor converts comments to whitespace
  before macros are even considered.  Therefore, you cannot create a
! comment by concatenating â€˜/â€™ and â€˜*â€™.  You can put as much whitespace
! between â€˜##â€™ and its operands as you like, including comments, and you
  can put comments in arguments that will be concatenated.  However, it is
! an error if â€˜##â€™ appears at either end of a macro body.
  
     Consider a C program that interprets named commands.  There probably
  needs to be a table of commands, perhaps an array of structures declared
*************** as follows:
*** 1436,1442 ****
  in the string constant and once in the function name.  A macro which
  takes the name of a command as an argument can make this unnecessary.
  The string constant can be created with stringizing, and the function
! name by concatenating the argument with '_command'.  Here is how it is
  done:
  
       #define COMMAND(NAME)  { #NAME, NAME ## _command }
--- 1436,1442 ----
  in the string constant and once in the function name.  A macro which
  takes the name of a command as an argument can make this unnecessary.
  The string constant can be created with stringizing, and the function
! name by concatenating the argument with â€˜_commandâ€™.  Here is how it is
  done:
  
       #define COMMAND(NAME)  { #NAME, NAME ## _command }
*************** a function.  Here is an example:
*** 1460,1493 ****
  
       #define eprintf(...) fprintf (stderr, __VA_ARGS__)
  
!    This kind of macro is called "variadic".  When the macro is invoked,
  all the tokens in its argument list after the last named argument (this
! macro has none), including any commas, become the "variable argument".
! This sequence of tokens replaces the identifier '__VA_ARGS__' in the
  macro body wherever it appears.  Thus, we have this expansion:
  
       eprintf ("%s:%d: ", input_file, lineno)
!           ==>  fprintf (stderr, "%s:%d: ", input_file, lineno)
  
     The variable argument is completely macro-expanded before it is
  inserted into the macro expansion, just like an ordinary argument.  You
! may use the '#' and '##' operators to stringize the variable argument or
  to paste its leading or trailing token with another token.  (But see
! below for an important special case for '##'.)
  
     If your macro is complicated, you may want a more descriptive name
! for the variable argument than '__VA_ARGS__'.  CPP permits this, as an
! extension.  You may write an argument name immediately before the '...';
! that name is used for the variable argument.  The 'eprintf' macro above
  could be written
  
       #define eprintf(args...) fprintf (stderr, args)
  
! using this extension.  You cannot use '__VA_ARGS__' and this extension
  in the same macro.
  
     You can have named arguments as well as variable arguments in a
! variadic macro.  We could define 'eprintf' like this, instead:
  
       #define eprintf(format, ...) fprintf (stderr, format, __VA_ARGS__)
  
--- 1460,1493 ----
  
       #define eprintf(...) fprintf (stderr, __VA_ARGS__)
  
!    This kind of macro is called â€œvariadicâ€�.  When the macro is invoked,
  all the tokens in its argument list after the last named argument (this
! macro has none), including any commas, become the â€œvariable argumentâ€�.
! This sequence of tokens replaces the identifier â€˜__VA_ARGS__â€™ in the
  macro body wherever it appears.  Thus, we have this expansion:
  
       eprintf ("%s:%d: ", input_file, lineno)
!           â†¦  fprintf (stderr, "%s:%d: ", input_file, lineno)
  
     The variable argument is completely macro-expanded before it is
  inserted into the macro expansion, just like an ordinary argument.  You
! may use the â€˜#â€™ and â€˜##â€™ operators to stringize the variable argument or
  to paste its leading or trailing token with another token.  (But see
! below for an important special case for â€˜##â€™.)
  
     If your macro is complicated, you may want a more descriptive name
! for the variable argument than â€˜__VA_ARGS__â€™.  CPP permits this, as an
! extension.  You may write an argument name immediately before the â€˜...â€™;
! that name is used for the variable argument.  The â€˜eprintfâ€™ macro above
  could be written
  
       #define eprintf(args...) fprintf (stderr, args)
  
! using this extension.  You cannot use â€˜__VA_ARGS__â€™ and this extension
  in the same macro.
  
     You can have named arguments as well as variable arguments in a
! variadic macro.  We could define â€˜eprintfâ€™ like this, instead:
  
       #define eprintf(format, ...) fprintf (stderr, format, __VA_ARGS__)
  
*************** gotten a syntax error, because there wou
*** 1502,1508 ****
  after the format string.
  
       eprintf("success!\n", );
!           ==> fprintf(stderr, "success!\n", );
  
     This has been fixed in C++20, and GNU CPP also has a pair of
  extensions which deal with this problem.
--- 1502,1508 ----
  after the format string.
  
       eprintf("success!\n", );
!           â†¦ fprintf(stderr, "success!\n", );
  
     This has been fixed in C++20, and GNU CPP also has a pair of
  extensions which deal with this problem.
*************** extensions which deal with this problem.
*** 1511,1544 ****
  leave the variable argument out entirely:
  
       eprintf ("success!\n")
!           ==> fprintf(stderr, "success!\n", );
  
! Second, C++20 introduces the '__VA_OPT__' function macro.  This macro
  may only appear in the definition of a variadic macro.  If the variable
! argument has any tokens, then a '__VA_OPT__' invocation expands to its
  argument; but if the variable argument does not have any tokens, the
! '__VA_OPT__' expands to nothing:
  
       #define eprintf(format, ...) \
         fprintf (stderr, format __VA_OPT__(,) __VA_ARGS__)
  
!    '__VA_OPT__' is also available in GNU C and GNU C++.
  
     Historically, GNU CPP has also had another extension to handle the
! trailing comma: the '##' token paste operator has a special meaning when
  placed between a comma and a variable argument.  Despite the
! introduction of '__VA_OPT__', this extension remains supported in GNU
  CPP, for backward compatibility.  If you write
  
       #define eprintf(format, ...) fprintf (stderr, format, ##__VA_ARGS__)
  
! and the variable argument is left out when the 'eprintf' macro is used,
! then the comma before the '##' will be deleted.  This does _not_ happen
  if you pass an empty argument, nor does it happen if the token preceding
! '##' is anything other than a comma.
  
       eprintf ("success!\n")
!           ==> fprintf(stderr, "success!\n");
  
  The above explanation is ambiguous about the case where the only macro
  parameter is a variable arguments parameter, as it is meaningless to try
--- 1511,1544 ----
  leave the variable argument out entirely:
  
       eprintf ("success!\n")
!           â†¦ fprintf(stderr, "success!\n", );
  
! Second, C++20 introduces the â€˜__VA_OPT__â€™ function macro.  This macro
  may only appear in the definition of a variadic macro.  If the variable
! argument has any tokens, then a â€˜__VA_OPT__â€™ invocation expands to its
  argument; but if the variable argument does not have any tokens, the
! â€˜__VA_OPT__â€™ expands to nothing:
  
       #define eprintf(format, ...) \
         fprintf (stderr, format __VA_OPT__(,) __VA_ARGS__)
  
!    â€˜__VA_OPT__â€™ is also available in GNU C and GNU C++.
  
     Historically, GNU CPP has also had another extension to handle the
! trailing comma: the â€˜##â€™ token paste operator has a special meaning when
  placed between a comma and a variable argument.  Despite the
! introduction of â€˜__VA_OPT__â€™, this extension remains supported in GNU
  CPP, for backward compatibility.  If you write
  
       #define eprintf(format, ...) fprintf (stderr, format, ##__VA_ARGS__)
  
! and the variable argument is left out when the â€˜eprintfâ€™ macro is used,
! then the comma before the â€˜##â€™ will be deleted.  This does _not_ happen
  if you pass an empty argument, nor does it happen if the token preceding
! â€˜##â€™ is anything other than a comma.
  
       eprintf ("success!\n")
!           â†¦ fprintf(stderr, "success!\n");
  
  The above explanation is ambiguous about the case where the only macro
  parameter is a variable arguments parameter, as it is meaningless to try
*************** standard.  Otherwise the comma is droppe
*** 1548,1565 ****
  standard.
  
     The C standard mandates that the only place the identifier
! '__VA_ARGS__' can appear is in the replacement list of a variadic macro.
  It may not be used as a macro name, macro argument name, or within a
  different type of macro.  It may also be forbidden in open text; the
  standard is ambiguous.  We recommend you avoid using it except for its
  defined purpose.
  
!    Likewise, C++ forbids '__VA_OPT__' anywhere outside the replacement
  list of a variadic macro.
  
     Variadic macros became a standard part of the C language with C99.
  GNU CPP previously supported them with a named variable argument
! ('args...', not '...' and '__VA_ARGS__'), which is still supported for
  backward compatibility.
  
  
--- 1548,1565 ----
  standard.
  
     The C standard mandates that the only place the identifier
! â€˜__VA_ARGS__â€™ can appear is in the replacement list of a variadic macro.
  It may not be used as a macro name, macro argument name, or within a
  different type of macro.  It may also be forbidden in open text; the
  standard is ambiguous.  We recommend you avoid using it except for its
  defined purpose.
  
!    Likewise, C++ forbids â€˜__VA_OPT__â€™ anywhere outside the replacement
  list of a variadic macro.
  
     Variadic macros became a standard part of the C language with C99.
  GNU CPP previously supported them with a named variable argument
! (â€˜args...â€™, not â€˜...â€™ and â€˜__VA_ARGS__â€™), which is still supported for
  backward compatibility.
  
  
*************** standards, so they are available with al
*** 1593,1613 ****
  standards.  Older compilers may not provide all of them.  Their names
  all start with double underscores.
  
! '__FILE__'
       This macro expands to the name of the current input file, in the
       form of a C string constant.  This is the path by which the
       preprocessor opened the file, not the short name specified in
!      '#include' or as the input file name argument.  For example,
!      '"/usr/local/include/myheader.h"' is a possible expansion of this
       macro.
  
! '__LINE__'
       This macro expands to the current input line number, in the form of
       a decimal integer constant.  While we call it a predefined macro,
       it's a pretty strange macro, since its "definition" changes with
       each new line of source code.
  
!    '__FILE__' and '__LINE__' are useful in generating an error message
  to report an inconsistency detected by the program; the message can
  state the source line at which the inconsistency was detected.  For
  example,
--- 1593,1613 ----
  standards.  Older compilers may not provide all of them.  Their names
  all start with double underscores.
  
! â€˜__FILE__â€™
       This macro expands to the name of the current input file, in the
       form of a C string constant.  This is the path by which the
       preprocessor opened the file, not the short name specified in
!      â€˜#includeâ€™ or as the input file name argument.  For example,
!      â€˜"/usr/local/include/myheader.h"â€™ is a possible expansion of this
       macro.
  
! â€˜__LINE__â€™
       This macro expands to the current input line number, in the form of
       a decimal integer constant.  While we call it a predefined macro,
       it's a pretty strange macro, since its "definition" changes with
       each new line of source code.
  
!    â€˜__FILE__â€™ and â€˜__LINE__â€™ are useful in generating an error message
  to report an inconsistency detected by the program; the message can
  state the source line at which the inconsistency was detected.  For
  example,
*************** example,
*** 1617,1722 ****
                        "%d at %s, line %d.",
                length, __FILE__, __LINE__);
  
!    An '#include' directive changes the expansions of '__FILE__' and
! '__LINE__' to correspond to the included file.  At the end of that file,
! when processing resumes on the input file that contained the '#include'
! directive, the expansions of '__FILE__' and '__LINE__' revert to the
! values they had before the '#include' (but '__LINE__' is then
  incremented by one as processing moves to the line after the
! '#include').
  
!    A '#line' directive changes '__LINE__', and may change '__FILE__' as
  well.  *Note Line Control::.
  
!    C99 introduced '__func__', and GCC has provided '__FUNCTION__' for a
  long time.  Both of these are strings containing the name of the current
  function (there are slight semantic differences; see the GCC manual).
  Neither of them is a macro; the preprocessor does not know the name of
  the current function.  They tend to be useful in conjunction with
! '__FILE__' and '__LINE__', though.
  
! '__DATE__'
       This macro expands to a string constant that describes the date on
       which the preprocessor is being run.  The string constant contains
!      eleven characters and looks like '"Feb 12 1996"'.  If the day of
       the month is less than 10, it is padded with a space on the left.
  
       If GCC cannot determine the current date, it will emit a warning
!      message (once per compilation) and '__DATE__' will expand to
!      '"??? ?? ????"'.
  
! '__TIME__'
       This macro expands to a string constant that describes the time at
       which the preprocessor is being run.  The string constant contains
!      eight characters and looks like '"23:59:01"'.
  
       If GCC cannot determine the current time, it will emit a warning
!      message (once per compilation) and '__TIME__' will expand to
!      '"??:??:??"'.
  
! '__STDC__'
       In normal operation, this macro expands to the constant 1, to
       signify that this compiler conforms to ISO Standard C.  If GNU CPP
       is used with a compiler other than GCC, this is not necessarily
       true; however, the preprocessor always conforms to the standard
!      unless the '-traditional-cpp' option is used.
  
!      This macro is not defined if the '-traditional-cpp' option is used.
  
       On some hosts, the system compiler uses a different convention,
!      where '__STDC__' is normally 0, but is 1 if the user specifies
       strict conformance to the C Standard.  CPP follows the host
       convention when processing system header files, but when processing
!      user files '__STDC__' is always 1.  This has been reported to cause
       problems; for instance, some versions of Solaris provide X Windows
!      headers that expect '__STDC__' to be either undefined or 1.  *Note
       Invocation::.
  
! '__STDC_VERSION__'
       This macro expands to the C Standard's version number, a long
!      integer constant of the form 'YYYYMML' where YYYY and MM are the
       year and month of the Standard version.  This signifies which
       version of the C Standard the compiler conforms to.  Like
!      '__STDC__', this is not necessarily accurate for the entire
       implementation, unless GNU CPP is being used with GCC.
  
!      The value '199409L' signifies the 1989 C standard as amended in
!      1994, which is the current default; the value '199901L' signifies
!      the 1999 revision of the C standard; the value '201112L' signifies
!      the 2011 revision of the C standard; the value '201710L' signifies
       the 2017 revision of the C standard (which is otherwise identical
       to the 2011 version apart from correction of defects).  The value
!      '202311L' is used for the '-std=c23' and '-std=gnu23' modes.  An
!      unspecified value larger than '202311L' is used for the
!      experimental '-std=c2y' and '-std=gnu2y' modes.
  
!      This macro is not defined if the '-traditional-cpp' option is used,
       nor when compiling C++ or Objective-C.
  
! '__STDC_HOSTED__'
       This macro is defined, with value 1, if the compiler's target is a
!      "hosted environment".  A hosted environment has the complete
       facilities of the standard C library available.
  
! '__cplusplus'
       This macro is defined when the C++ compiler is in use.  You can use
!      '__cplusplus' to test whether a header is compiled by a C compiler
!      or a C++ compiler.  This macro is similar to '__STDC_VERSION__', in
       that it expands to a version number.  Depending on the language
!      standard selected, the value of the macro is '199711L' for the 1998
!      C++ standard, '201103L' for the 2011 C++ standard, '201402L' for
!      the 2014 C++ standard, '201703L' for the 2017 C++ standard,
!      '202002L' for the 2020 C++ standard, '202302L' for the 2023 C++
!      standard, or an unspecified value strictly larger than '202302L'
!      for the experimental languages enabled by '-std=c++26' and
!      '-std=gnu++26'.
  
! '__OBJC__'
       This macro is defined, with value 1, when the Objective-C compiler
!      is in use.  You can use '__OBJC__' to test whether a header is
       compiled by a C compiler or an Objective-C compiler.
  
! '__ASSEMBLER__'
       This macro is defined with value 1 when preprocessing assembly
       language.
  
--- 1617,1722 ----
                        "%d at %s, line %d.",
                length, __FILE__, __LINE__);
  
!    An â€˜#includeâ€™ directive changes the expansions of â€˜__FILE__â€™ and
! â€˜__LINE__â€™ to correspond to the included file.  At the end of that file,
! when processing resumes on the input file that contained the â€˜#includeâ€™
! directive, the expansions of â€˜__FILE__â€™ and â€˜__LINE__â€™ revert to the
! values they had before the â€˜#includeâ€™ (but â€˜__LINE__â€™ is then
  incremented by one as processing moves to the line after the
! â€˜#includeâ€™).
  
!    A â€˜#lineâ€™ directive changes â€˜__LINE__â€™, and may change â€˜__FILE__â€™ as
  well.  *Note Line Control::.
  
!    C99 introduced â€˜__func__â€™, and GCC has provided â€˜__FUNCTION__â€™ for a
  long time.  Both of these are strings containing the name of the current
  function (there are slight semantic differences; see the GCC manual).
  Neither of them is a macro; the preprocessor does not know the name of
  the current function.  They tend to be useful in conjunction with
! â€˜__FILE__â€™ and â€˜__LINE__â€™, though.
  
! â€˜__DATE__â€™
       This macro expands to a string constant that describes the date on
       which the preprocessor is being run.  The string constant contains
!      eleven characters and looks like â€˜"Feb 12 1996"â€™.  If the day of
       the month is less than 10, it is padded with a space on the left.
  
       If GCC cannot determine the current date, it will emit a warning
!      message (once per compilation) and â€˜__DATE__â€™ will expand to
!      â€˜"??? ?? ????"â€™.
  
! â€˜__TIME__â€™
       This macro expands to a string constant that describes the time at
       which the preprocessor is being run.  The string constant contains
!      eight characters and looks like â€˜"23:59:01"â€™.
  
       If GCC cannot determine the current time, it will emit a warning
!      message (once per compilation) and â€˜__TIME__â€™ will expand to
!      â€˜"??:??:??"â€™.
  
! â€˜__STDC__â€™
       In normal operation, this macro expands to the constant 1, to
       signify that this compiler conforms to ISO Standard C.  If GNU CPP
       is used with a compiler other than GCC, this is not necessarily
       true; however, the preprocessor always conforms to the standard
!      unless the â€˜-traditional-cppâ€™ option is used.
  
!      This macro is not defined if the â€˜-traditional-cppâ€™ option is used.
  
       On some hosts, the system compiler uses a different convention,
!      where â€˜__STDC__â€™ is normally 0, but is 1 if the user specifies
       strict conformance to the C Standard.  CPP follows the host
       convention when processing system header files, but when processing
!      user files â€˜__STDC__â€™ is always 1.  This has been reported to cause
       problems; for instance, some versions of Solaris provide X Windows
!      headers that expect â€˜__STDC__â€™ to be either undefined or 1.  *Note
       Invocation::.
  
! â€˜__STDC_VERSION__â€™
       This macro expands to the C Standard's version number, a long
!      integer constant of the form â€˜YYYYMMLâ€™ where YYYY and MM are the
       year and month of the Standard version.  This signifies which
       version of the C Standard the compiler conforms to.  Like
!      â€˜__STDC__â€™, this is not necessarily accurate for the entire
       implementation, unless GNU CPP is being used with GCC.
  
!      The value â€˜199409Lâ€™ signifies the 1989 C standard as amended in
!      1994, which is the current default; the value â€˜199901Lâ€™ signifies
!      the 1999 revision of the C standard; the value â€˜201112Lâ€™ signifies
!      the 2011 revision of the C standard; the value â€˜201710Lâ€™ signifies
       the 2017 revision of the C standard (which is otherwise identical
       to the 2011 version apart from correction of defects).  The value
!      â€˜202311Lâ€™ is used for the â€˜-std=c23â€™ and â€˜-std=gnu23â€™ modes.  An
!      unspecified value larger than â€˜202311Lâ€™ is used for the
!      experimental â€˜-std=c2yâ€™ and â€˜-std=gnu2yâ€™ modes.
  
!      This macro is not defined if the â€˜-traditional-cppâ€™ option is used,
       nor when compiling C++ or Objective-C.
  
! â€˜__STDC_HOSTED__â€™
       This macro is defined, with value 1, if the compiler's target is a
!      â€œhosted environmentâ€�.  A hosted environment has the complete
       facilities of the standard C library available.
  
! â€˜__cplusplusâ€™
       This macro is defined when the C++ compiler is in use.  You can use
!      â€˜__cplusplusâ€™ to test whether a header is compiled by a C compiler
!      or a C++ compiler.  This macro is similar to â€˜__STDC_VERSION__â€™, in
       that it expands to a version number.  Depending on the language
!      standard selected, the value of the macro is â€˜199711Lâ€™ for the 1998
!      C++ standard, â€˜201103Lâ€™ for the 2011 C++ standard, â€˜201402Lâ€™ for
!      the 2014 C++ standard, â€˜201703Lâ€™ for the 2017 C++ standard,
!      â€˜202002Lâ€™ for the 2020 C++ standard, â€˜202302Lâ€™ for the 2023 C++
!      standard, or an unspecified value strictly larger than â€˜202302Lâ€™
!      for the experimental languages enabled by â€˜-std=c++26â€™ and
!      â€˜-std=gnu++26â€™.
  
! â€˜__OBJC__â€™
       This macro is defined, with value 1, when the Objective-C compiler
!      is in use.  You can use â€˜__OBJC__â€™ to test whether a header is
       compiled by a C compiler or an Objective-C compiler.
  
! â€˜__ASSEMBLER__â€™
       This macro is defined with value 1 when preprocessing assembly
       language.
  
*************** with the same meanings regardless of the
*** 1731,1761 ****
  which you are using GNU C or GNU Fortran.  Their names all start with
  double underscores.
  
! '__COUNTER__'
       This macro expands to sequential integral values starting from 0.
!      In conjunction with the '##' operator, this provides a convenient
       means to generate unique identifiers.  Care must be taken to ensure
!      that '__COUNTER__' is not expanded prior to inclusion of
       precompiled headers which use it.  Otherwise, the precompiled
       headers will not be used.
  
! '__GFORTRAN__'
       The GNU Fortran compiler defines this.
  
! '__GNUC__'
! '__GNUC_MINOR__'
! '__GNUC_PATCHLEVEL__'
       These macros are defined by all GNU compilers that use the C
       preprocessor: C, C++, Objective-C and Fortran.  Their values are
       the major version, minor version, and patch level of the compiler,
       as integer constants.  For example, GCC version X.Y.Z defines
!      '__GNUC__' to X, '__GNUC_MINOR__' to Y, and '__GNUC_PATCHLEVEL__'
       to Z.  These macros are also defined if you invoke the preprocessor
       directly.
  
       If all you need to know is whether or not your program is being
       compiled by GCC, or a non-GCC compiler that claims to accept the
!      GNU C dialects, you can simply test '__GNUC__'.  If you need to
       write code which depends on a specific version, you must be more
       careful.  Each time the minor version is increased, the patch level
       is reset to zero; each time the major version is increased, the
--- 1731,1761 ----
  which you are using GNU C or GNU Fortran.  Their names all start with
  double underscores.
  
! â€˜__COUNTER__â€™
       This macro expands to sequential integral values starting from 0.
!      In conjunction with the â€˜##â€™ operator, this provides a convenient
       means to generate unique identifiers.  Care must be taken to ensure
!      that â€˜__COUNTER__â€™ is not expanded prior to inclusion of
       precompiled headers which use it.  Otherwise, the precompiled
       headers will not be used.
  
! â€˜__GFORTRAN__â€™
       The GNU Fortran compiler defines this.
  
! â€˜__GNUC__â€™
! â€˜__GNUC_MINOR__â€™
! â€˜__GNUC_PATCHLEVEL__â€™
       These macros are defined by all GNU compilers that use the C
       preprocessor: C, C++, Objective-C and Fortran.  Their values are
       the major version, minor version, and patch level of the compiler,
       as integer constants.  For example, GCC version X.Y.Z defines
!      â€˜__GNUC__â€™ to X, â€˜__GNUC_MINOR__â€™ to Y, and â€˜__GNUC_PATCHLEVEL__â€™
       to Z.  These macros are also defined if you invoke the preprocessor
       directly.
  
       If all you need to know is whether or not your program is being
       compiled by GCC, or a non-GCC compiler that claims to accept the
!      GNU C dialects, you can simply test â€˜__GNUC__â€™.  If you need to
       write code which depends on a specific version, you must be more
       careful.  Each time the minor version is increased, the patch level
       is reset to zero; each time the major version is increased, the
*************** double underscores.
*** 1781,1834 ****
  
       Many people find this form easier to understand.
  
! '__GNUG__'
       The GNU C++ compiler defines this.  Testing it is equivalent to
!      testing '(__GNUC__ && __cplusplus)'.
  
! '__STRICT_ANSI__'
!      GCC defines this macro if and only if the '-ansi' switch, or a
!      '-std' switch specifying strict conformance to some version of ISO
       C or ISO C++, was specified when GCC was invoked.  It is defined to
!      '1'.  This macro exists primarily to direct GNU libc's header files
       to use only definitions found in standard C.
  
! '__BASE_FILE__'
       This macro expands to the name of the main input file, in the form
       of a C string constant.  This is the source file that was specified
       on the command line of the preprocessor or C compiler.
  
! '__FILE_NAME__'
       This macro expands to the basename of the current input file, in
       the form of a C string constant.  This is the last path component
       by which the preprocessor opened the file.  For example, processing
!      '"/usr/local/include/myheader.h"' would set this macro to
!      '"myheader.h"'.
  
! '__INCLUDE_LEVEL__'
       This macro expands to a decimal integer constant that represents
       the depth of nesting in include files.  The value of this macro is
!      incremented on every '#include' directive and decremented at the
       end of every included file.  It starts out at 0, its value within
       the base file specified on the command line.
  
! '__ELF__'
       This macro is defined if the target uses the ELF object format.
  
! '__VERSION__'
       This macro expands to a string constant which describes the version
       of the compiler in use.  You should not rely on its contents having
       any particular form, but it can be counted on to contain at least
       the release number.
  
! '__OPTIMIZE__'
! '__OPTIMIZE_SIZE__'
! '__NO_INLINE__'
!      These macros describe the compilation mode.  '__OPTIMIZE__' is
!      defined in all optimizing compilations.  '__OPTIMIZE_SIZE__' is
       defined if the compiler is optimizing for size, not speed.
!      '__NO_INLINE__' is defined if no functions will be inlined into
       their callers (when not optimizing, or when inlining has been
!      specifically disabled by '-fno-inline').
  
       These macros cause certain GNU header files to provide optimized
       definitions, using macros or inline functions, of system library
--- 1781,1834 ----
  
       Many people find this form easier to understand.
  
! â€˜__GNUG__â€™
       The GNU C++ compiler defines this.  Testing it is equivalent to
!      testing â€˜(__GNUC__ && __cplusplus)â€™.
  
! â€˜__STRICT_ANSI__â€™
!      GCC defines this macro if and only if the â€˜-ansiâ€™ switch, or a
!      â€˜-stdâ€™ switch specifying strict conformance to some version of ISO
       C or ISO C++, was specified when GCC was invoked.  It is defined to
!      â€˜1â€™.  This macro exists primarily to direct GNU libc's header files
       to use only definitions found in standard C.
  
! â€˜__BASE_FILE__â€™
       This macro expands to the name of the main input file, in the form
       of a C string constant.  This is the source file that was specified
       on the command line of the preprocessor or C compiler.
  
! â€˜__FILE_NAME__â€™
       This macro expands to the basename of the current input file, in
       the form of a C string constant.  This is the last path component
       by which the preprocessor opened the file.  For example, processing
!      â€˜"/usr/local/include/myheader.h"â€™ would set this macro to
!      â€˜"myheader.h"â€™.
  
! â€˜__INCLUDE_LEVEL__â€™
       This macro expands to a decimal integer constant that represents
       the depth of nesting in include files.  The value of this macro is
!      incremented on every â€˜#includeâ€™ directive and decremented at the
       end of every included file.  It starts out at 0, its value within
       the base file specified on the command line.
  
! â€˜__ELF__â€™
       This macro is defined if the target uses the ELF object format.
  
! â€˜__VERSION__â€™
       This macro expands to a string constant which describes the version
       of the compiler in use.  You should not rely on its contents having
       any particular form, but it can be counted on to contain at least
       the release number.
  
! â€˜__OPTIMIZE__â€™
! â€˜__OPTIMIZE_SIZE__â€™
! â€˜__NO_INLINE__â€™
!      These macros describe the compilation mode.  â€˜__OPTIMIZE__â€™ is
!      defined in all optimizing compilations.  â€˜__OPTIMIZE_SIZE__â€™ is
       defined if the compiler is optimizing for size, not speed.
!      â€˜__NO_INLINE__â€™ is defined if no functions will be inlined into
       their callers (when not optimizing, or when inlining has been
!      specifically disabled by â€˜-fno-inlineâ€™).
  
       These macros cause certain GNU header files to provide optimized
       definitions, using macros or inline functions, of system library
*************** double underscores.
*** 1836,2074 ****
       make sure that programs will execute with the same effect whether
       or not they are defined.  If they are defined, their value is 1.
  
! '__GNUC_GNU_INLINE__'
!      GCC defines this macro if functions declared 'inline' will be
       handled in GCC's traditional gnu90 mode.  Object files will contain
!      externally visible definitions of all functions declared 'inline'
!      without 'extern' or 'static'.  They will not contain any
!      definitions of any functions declared 'extern inline'.
  
! '__GNUC_STDC_INLINE__'
!      GCC defines this macro if functions declared 'inline' will be
       handled according to the ISO C99 or later standards.  Object files
       will contain externally visible definitions of all functions
!      declared 'extern inline'.  They will not contain definitions of any
!      functions declared 'inline' without 'extern'.
  
!      If this macro is defined, GCC supports the 'gnu_inline' function
       attribute as a way to always get the gnu90 behavior.
  
! '__CHAR_UNSIGNED__'
!      GCC defines this macro if and only if the data type 'char' is
       unsigned on the target machine.  It exists to cause the standard
!      header file 'limits.h' to work correctly.  You should not use this
       macro yourself; instead, refer to the standard macros defined in
!      'limits.h'.
  
! '__WCHAR_UNSIGNED__'
!      Like '__CHAR_UNSIGNED__', this macro is defined if and only if the
!      data type 'wchar_t' is unsigned and the front-end is in C++ mode.
  
! '__REGISTER_PREFIX__'
       This macro expands to a single token (not a string constant) which
       is the prefix applied to CPU register names in assembly language
       for this target.  You can use it to write assembly that is usable
!      in multiple environments.  For example, in the 'm68k-aout'
!      environment it expands to nothing, but in the 'm68k-coff'
!      environment it expands to a single '%'.
  
! '__USER_LABEL_PREFIX__'
       This macro expands to a single token which is the prefix applied to
       user labels (symbols visible to C code) in assembly.  For example,
!      in the 'm68k-aout' environment it expands to an '_', but in the
!      'm68k-coff' environment it expands to nothing.
  
       This macro will have the correct definition even if
!      '-f(no-)underscores' is in use, but it will not be correct if
       target-specific options that adjust this prefix are used (e.g. the
!      OSF/rose '-mno-underscores' option).
  
! '__SIZE_TYPE__'
! '__PTRDIFF_TYPE__'
! '__WCHAR_TYPE__'
! '__WINT_TYPE__'
! '__INTMAX_TYPE__'
! '__UINTMAX_TYPE__'
! '__SIG_ATOMIC_TYPE__'
! '__INT8_TYPE__'
! '__INT16_TYPE__'
! '__INT32_TYPE__'
! '__INT64_TYPE__'
! '__UINT8_TYPE__'
! '__UINT16_TYPE__'
! '__UINT32_TYPE__'
! '__UINT64_TYPE__'
! '__INT_LEAST8_TYPE__'
! '__INT_LEAST16_TYPE__'
! '__INT_LEAST32_TYPE__'
! '__INT_LEAST64_TYPE__'
! '__UINT_LEAST8_TYPE__'
! '__UINT_LEAST16_TYPE__'
! '__UINT_LEAST32_TYPE__'
! '__UINT_LEAST64_TYPE__'
! '__INT_FAST8_TYPE__'
! '__INT_FAST16_TYPE__'
! '__INT_FAST32_TYPE__'
! '__INT_FAST64_TYPE__'
! '__UINT_FAST8_TYPE__'
! '__UINT_FAST16_TYPE__'
! '__UINT_FAST32_TYPE__'
! '__UINT_FAST64_TYPE__'
! '__INTPTR_TYPE__'
! '__UINTPTR_TYPE__'
       These macros are defined to the correct underlying types for the
!      'size_t', 'ptrdiff_t', 'wchar_t', 'wint_t', 'intmax_t',
!      'uintmax_t', 'sig_atomic_t', 'int8_t', 'int16_t', 'int32_t',
!      'int64_t', 'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t',
!      'int_least8_t', 'int_least16_t', 'int_least32_t', 'int_least64_t',
!      'uint_least8_t', 'uint_least16_t', 'uint_least32_t',
!      'uint_least64_t', 'int_fast8_t', 'int_fast16_t', 'int_fast32_t',
!      'int_fast64_t', 'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t',
!      'uint_fast64_t', 'intptr_t', and 'uintptr_t' typedefs,
       respectively.  They exist to make the standard header files
!      'stddef.h', 'stdint.h', and 'wchar.h' work correctly.  You should
       not use these macros directly; instead, include the appropriate
       headers and use the typedefs.  Some of these macros may not be
!      defined on particular systems if GCC does not provide a 'stdint.h'
       header on those systems.
  
! '__CHAR_BIT__'
       Defined to the number of bits used in the representation of the
!      'char' data type.  It exists to make the standard header given
       numerical limits work correctly.  You should not use this macro
       directly; instead, include the appropriate headers.
  
! '__SCHAR_MAX__'
! '__WCHAR_MAX__'
! '__SHRT_MAX__'
! '__INT_MAX__'
! '__LONG_MAX__'
! '__LONG_LONG_MAX__'
! '__WINT_MAX__'
! '__SIZE_MAX__'
! '__PTRDIFF_MAX__'
! '__INTMAX_MAX__'
! '__UINTMAX_MAX__'
! '__SIG_ATOMIC_MAX__'
! '__INT8_MAX__'
! '__INT16_MAX__'
! '__INT32_MAX__'
! '__INT64_MAX__'
! '__UINT8_MAX__'
! '__UINT16_MAX__'
! '__UINT32_MAX__'
! '__UINT64_MAX__'
! '__INT_LEAST8_MAX__'
! '__INT_LEAST16_MAX__'
! '__INT_LEAST32_MAX__'
! '__INT_LEAST64_MAX__'
! '__UINT_LEAST8_MAX__'
! '__UINT_LEAST16_MAX__'
! '__UINT_LEAST32_MAX__'
! '__UINT_LEAST64_MAX__'
! '__INT_FAST8_MAX__'
! '__INT_FAST16_MAX__'
! '__INT_FAST32_MAX__'
! '__INT_FAST64_MAX__'
! '__UINT_FAST8_MAX__'
! '__UINT_FAST16_MAX__'
! '__UINT_FAST32_MAX__'
! '__UINT_FAST64_MAX__'
! '__INTPTR_MAX__'
! '__UINTPTR_MAX__'
! '__WCHAR_MIN__'
! '__WINT_MIN__'
! '__SIG_ATOMIC_MIN__'
!      Defined to the maximum value of the 'signed char', 'wchar_t',
!      'signed short', 'signed int', 'signed long', 'signed long long',
!      'wint_t', 'size_t', 'ptrdiff_t', 'intmax_t', 'uintmax_t',
!      'sig_atomic_t', 'int8_t', 'int16_t', 'int32_t', 'int64_t',
!      'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t', 'int_least8_t',
!      'int_least16_t', 'int_least32_t', 'int_least64_t', 'uint_least8_t',
!      'uint_least16_t', 'uint_least32_t', 'uint_least64_t',
!      'int_fast8_t', 'int_fast16_t', 'int_fast32_t', 'int_fast64_t',
!      'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t',
!      'intptr_t', and 'uintptr_t' types and to the minimum value of the
!      'wchar_t', 'wint_t', and 'sig_atomic_t' types respectively.  They
       exist to make the standard header given numerical limits work
       correctly.  You should not use these macros directly; instead,
       include the appropriate headers.  Some of these macros may not be
!      defined on particular systems if GCC does not provide a 'stdint.h'
       header on those systems.
  
! '__INT8_C'
! '__INT16_C'
! '__INT32_C'
! '__INT64_C'
! '__UINT8_C'
! '__UINT16_C'
! '__UINT32_C'
! '__UINT64_C'
! '__INTMAX_C'
! '__UINTMAX_C'
!      Defined to implementations of the standard 'stdint.h' macros with
!      the same names without the leading '__'.  They exist the make the
       implementation of that header work correctly.  You should not use
       these macros directly; instead, include the appropriate headers.
       Some of these macros may not be defined on particular systems if
!      GCC does not provide a 'stdint.h' header on those systems.
  
! '__SCHAR_WIDTH__'
! '__SHRT_WIDTH__'
! '__INT_WIDTH__'
! '__LONG_WIDTH__'
! '__LONG_LONG_WIDTH__'
! '__PTRDIFF_WIDTH__'
! '__SIG_ATOMIC_WIDTH__'
! '__SIZE_WIDTH__'
! '__WCHAR_WIDTH__'
! '__WINT_WIDTH__'
! '__INT_LEAST8_WIDTH__'
! '__INT_LEAST16_WIDTH__'
! '__INT_LEAST32_WIDTH__'
! '__INT_LEAST64_WIDTH__'
! '__INT_FAST8_WIDTH__'
! '__INT_FAST16_WIDTH__'
! '__INT_FAST32_WIDTH__'
! '__INT_FAST64_WIDTH__'
! '__INTPTR_WIDTH__'
! '__INTMAX_WIDTH__'
       Defined to the bit widths of the corresponding types.  They exist
!      to make the implementations of 'limits.h' and 'stdint.h' behave
       correctly.  You should not use these macros directly; instead,
       include the appropriate headers.  Some of these macros may not be
!      defined on particular systems if GCC does not provide a 'stdint.h'
       header on those systems.
  
! '__SIZEOF_INT__'
! '__SIZEOF_LONG__'
! '__SIZEOF_LONG_LONG__'
! '__SIZEOF_SHORT__'
! '__SIZEOF_POINTER__'
! '__SIZEOF_FLOAT__'
! '__SIZEOF_DOUBLE__'
! '__SIZEOF_LONG_DOUBLE__'
! '__SIZEOF_SIZE_T__'
! '__SIZEOF_WCHAR_T__'
! '__SIZEOF_WINT_T__'
! '__SIZEOF_PTRDIFF_T__'
!      Defined to the number of bytes of the C standard data types: 'int',
!      'long', 'long long', 'short', 'void *', 'float', 'double', 'long
!      double', 'size_t', 'wchar_t', 'wint_t' and 'ptrdiff_t'.
  
! '__BYTE_ORDER__'
! '__ORDER_LITTLE_ENDIAN__'
! '__ORDER_BIG_ENDIAN__'
! '__ORDER_PDP_ENDIAN__'
!      '__BYTE_ORDER__' is defined to one of the values
!      '__ORDER_LITTLE_ENDIAN__', '__ORDER_BIG_ENDIAN__', or
!      '__ORDER_PDP_ENDIAN__' to reflect the layout of multi-byte and
!      multi-word quantities in memory.  If '__BYTE_ORDER__' is equal to
!      '__ORDER_LITTLE_ENDIAN__' or '__ORDER_BIG_ENDIAN__', then
       multi-byte and multi-word quantities are laid out identically: the
       byte (word) at the lowest address is the least significant or most
       significant byte (word) of the quantity, respectively.  If
!      '__BYTE_ORDER__' is equal to '__ORDER_PDP_ENDIAN__', then bytes in
       16-bit words are laid out in a little-endian fashion, whereas the
       16-bit subwords of a 32-bit quantity are laid out in big-endian
       fashion.
--- 1836,2074 ----
       make sure that programs will execute with the same effect whether
       or not they are defined.  If they are defined, their value is 1.
  
! â€˜__GNUC_GNU_INLINE__â€™
!      GCC defines this macro if functions declared â€˜inlineâ€™ will be
       handled in GCC's traditional gnu90 mode.  Object files will contain
!      externally visible definitions of all functions declared â€˜inlineâ€™
!      without â€˜externâ€™ or â€˜staticâ€™.  They will not contain any
!      definitions of any functions declared â€˜extern inlineâ€™.
  
! â€˜__GNUC_STDC_INLINE__â€™
!      GCC defines this macro if functions declared â€˜inlineâ€™ will be
       handled according to the ISO C99 or later standards.  Object files
       will contain externally visible definitions of all functions
!      declared â€˜extern inlineâ€™.  They will not contain definitions of any
!      functions declared â€˜inlineâ€™ without â€˜externâ€™.
  
!      If this macro is defined, GCC supports the â€˜gnu_inlineâ€™ function
       attribute as a way to always get the gnu90 behavior.
  
! â€˜__CHAR_UNSIGNED__â€™
!      GCC defines this macro if and only if the data type â€˜charâ€™ is
       unsigned on the target machine.  It exists to cause the standard
!      header file â€˜limits.hâ€™ to work correctly.  You should not use this
       macro yourself; instead, refer to the standard macros defined in
!      â€˜limits.hâ€™.
  
! â€˜__WCHAR_UNSIGNED__â€™
!      Like â€˜__CHAR_UNSIGNED__â€™, this macro is defined if and only if the
!      data type â€˜wchar_tâ€™ is unsigned and the front-end is in C++ mode.
  
! â€˜__REGISTER_PREFIX__â€™
       This macro expands to a single token (not a string constant) which
       is the prefix applied to CPU register names in assembly language
       for this target.  You can use it to write assembly that is usable
!      in multiple environments.  For example, in the â€˜m68k-aoutâ€™
!      environment it expands to nothing, but in the â€˜m68k-coffâ€™
!      environment it expands to a single â€˜%â€™.
  
! â€˜__USER_LABEL_PREFIX__â€™
       This macro expands to a single token which is the prefix applied to
       user labels (symbols visible to C code) in assembly.  For example,
!      in the â€˜m68k-aoutâ€™ environment it expands to an â€˜_â€™, but in the
!      â€˜m68k-coffâ€™ environment it expands to nothing.
  
       This macro will have the correct definition even if
!      â€˜-f(no-)underscoresâ€™ is in use, but it will not be correct if
       target-specific options that adjust this prefix are used (e.g. the
!      OSF/rose â€˜-mno-underscoresâ€™ option).
  
! â€˜__SIZE_TYPE__â€™
! â€˜__PTRDIFF_TYPE__â€™
! â€˜__WCHAR_TYPE__â€™
! â€˜__WINT_TYPE__â€™
! â€˜__INTMAX_TYPE__â€™
! â€˜__UINTMAX_TYPE__â€™
! â€˜__SIG_ATOMIC_TYPE__â€™
! â€˜__INT8_TYPE__â€™
! â€˜__INT16_TYPE__â€™
! â€˜__INT32_TYPE__â€™
! â€˜__INT64_TYPE__â€™
! â€˜__UINT8_TYPE__â€™
! â€˜__UINT16_TYPE__â€™
! â€˜__UINT32_TYPE__â€™
! â€˜__UINT64_TYPE__â€™
! â€˜__INT_LEAST8_TYPE__â€™
! â€˜__INT_LEAST16_TYPE__â€™
! â€˜__INT_LEAST32_TYPE__â€™
! â€˜__INT_LEAST64_TYPE__â€™
! â€˜__UINT_LEAST8_TYPE__â€™
! â€˜__UINT_LEAST16_TYPE__â€™
! â€˜__UINT_LEAST32_TYPE__â€™
! â€˜__UINT_LEAST64_TYPE__â€™
! â€˜__INT_FAST8_TYPE__â€™
! â€˜__INT_FAST16_TYPE__â€™
! â€˜__INT_FAST32_TYPE__â€™
! â€˜__INT_FAST64_TYPE__â€™
! â€˜__UINT_FAST8_TYPE__â€™
! â€˜__UINT_FAST16_TYPE__â€™
! â€˜__UINT_FAST32_TYPE__â€™
! â€˜__UINT_FAST64_TYPE__â€™
! â€˜__INTPTR_TYPE__â€™
! â€˜__UINTPTR_TYPE__â€™
       These macros are defined to the correct underlying types for the
!      â€˜size_tâ€™, â€˜ptrdiff_tâ€™, â€˜wchar_tâ€™, â€˜wint_tâ€™, â€˜intmax_tâ€™,
!      â€˜uintmax_tâ€™, â€˜sig_atomic_tâ€™, â€˜int8_tâ€™, â€˜int16_tâ€™, â€˜int32_tâ€™,
!      â€˜int64_tâ€™, â€˜uint8_tâ€™, â€˜uint16_tâ€™, â€˜uint32_tâ€™, â€˜uint64_tâ€™,
!      â€˜int_least8_tâ€™, â€˜int_least16_tâ€™, â€˜int_least32_tâ€™, â€˜int_least64_tâ€™,
!      â€˜uint_least8_tâ€™, â€˜uint_least16_tâ€™, â€˜uint_least32_tâ€™,
!      â€˜uint_least64_tâ€™, â€˜int_fast8_tâ€™, â€˜int_fast16_tâ€™, â€˜int_fast32_tâ€™,
!      â€˜int_fast64_tâ€™, â€˜uint_fast8_tâ€™, â€˜uint_fast16_tâ€™, â€˜uint_fast32_tâ€™,
!      â€˜uint_fast64_tâ€™, â€˜intptr_tâ€™, and â€˜uintptr_tâ€™ typedefs,
       respectively.  They exist to make the standard header files
!      â€˜stddef.hâ€™, â€˜stdint.hâ€™, and â€˜wchar.hâ€™ work correctly.  You should
       not use these macros directly; instead, include the appropriate
       headers and use the typedefs.  Some of these macros may not be
!      defined on particular systems if GCC does not provide a â€˜stdint.hâ€™
       header on those systems.
  
! â€˜__CHAR_BIT__â€™
       Defined to the number of bits used in the representation of the
!      â€˜charâ€™ data type.  It exists to make the standard header given
       numerical limits work correctly.  You should not use this macro
       directly; instead, include the appropriate headers.
  
! â€˜__SCHAR_MAX__â€™
! â€˜__WCHAR_MAX__â€™
! â€˜__SHRT_MAX__â€™
! â€˜__INT_MAX__â€™
! â€˜__LONG_MAX__â€™
! â€˜__LONG_LONG_MAX__â€™
! â€˜__WINT_MAX__â€™
! â€˜__SIZE_MAX__â€™
! â€˜__PTRDIFF_MAX__â€™
! â€˜__INTMAX_MAX__â€™
! â€˜__UINTMAX_MAX__â€™
! â€˜__SIG_ATOMIC_MAX__â€™
! â€˜__INT8_MAX__â€™
! â€˜__INT16_MAX__â€™
! â€˜__INT32_MAX__â€™
! â€˜__INT64_MAX__â€™
! â€˜__UINT8_MAX__â€™
! â€˜__UINT16_MAX__â€™
! â€˜__UINT32_MAX__â€™
! â€˜__UINT64_MAX__â€™
! â€˜__INT_LEAST8_MAX__â€™
! â€˜__INT_LEAST16_MAX__â€™
! â€˜__INT_LEAST32_MAX__â€™
! â€˜__INT_LEAST64_MAX__â€™
! â€˜__UINT_LEAST8_MAX__â€™
! â€˜__UINT_LEAST16_MAX__â€™
! â€˜__UINT_LEAST32_MAX__â€™
! â€˜__UINT_LEAST64_MAX__â€™
! â€˜__INT_FAST8_MAX__â€™
! â€˜__INT_FAST16_MAX__â€™
! â€˜__INT_FAST32_MAX__â€™
! â€˜__INT_FAST64_MAX__â€™
! â€˜__UINT_FAST8_MAX__â€™
! â€˜__UINT_FAST16_MAX__â€™
! â€˜__UINT_FAST32_MAX__â€™
! â€˜__UINT_FAST64_MAX__â€™
! â€˜__INTPTR_MAX__â€™
! â€˜__UINTPTR_MAX__â€™
! â€˜__WCHAR_MIN__â€™
! â€˜__WINT_MIN__â€™
! â€˜__SIG_ATOMIC_MIN__â€™
!      Defined to the maximum value of the â€˜signed charâ€™, â€˜wchar_tâ€™,
!      â€˜signed shortâ€™, â€˜signed intâ€™, â€˜signed longâ€™, â€˜signed long longâ€™,
!      â€˜wint_tâ€™, â€˜size_tâ€™, â€˜ptrdiff_tâ€™, â€˜intmax_tâ€™, â€˜uintmax_tâ€™,
!      â€˜sig_atomic_tâ€™, â€˜int8_tâ€™, â€˜int16_tâ€™, â€˜int32_tâ€™, â€˜int64_tâ€™,
!      â€˜uint8_tâ€™, â€˜uint16_tâ€™, â€˜uint32_tâ€™, â€˜uint64_tâ€™, â€˜int_least8_tâ€™,
!      â€˜int_least16_tâ€™, â€˜int_least32_tâ€™, â€˜int_least64_tâ€™, â€˜uint_least8_tâ€™,
!      â€˜uint_least16_tâ€™, â€˜uint_least32_tâ€™, â€˜uint_least64_tâ€™,
!      â€˜int_fast8_tâ€™, â€˜int_fast16_tâ€™, â€˜int_fast32_tâ€™, â€˜int_fast64_tâ€™,
!      â€˜uint_fast8_tâ€™, â€˜uint_fast16_tâ€™, â€˜uint_fast32_tâ€™, â€˜uint_fast64_tâ€™,
!      â€˜intptr_tâ€™, and â€˜uintptr_tâ€™ types and to the minimum value of the
!      â€˜wchar_tâ€™, â€˜wint_tâ€™, and â€˜sig_atomic_tâ€™ types respectively.  They
       exist to make the standard header given numerical limits work
       correctly.  You should not use these macros directly; instead,
       include the appropriate headers.  Some of these macros may not be
!      defined on particular systems if GCC does not provide a â€˜stdint.hâ€™
       header on those systems.
  
! â€˜__INT8_Câ€™
! â€˜__INT16_Câ€™
! â€˜__INT32_Câ€™
! â€˜__INT64_Câ€™
! â€˜__UINT8_Câ€™
! â€˜__UINT16_Câ€™
! â€˜__UINT32_Câ€™
! â€˜__UINT64_Câ€™
! â€˜__INTMAX_Câ€™
! â€˜__UINTMAX_Câ€™
!      Defined to implementations of the standard â€˜stdint.hâ€™ macros with
!      the same names without the leading â€˜__â€™.  They exist the make the
       implementation of that header work correctly.  You should not use
       these macros directly; instead, include the appropriate headers.
       Some of these macros may not be defined on particular systems if
!      GCC does not provide a â€˜stdint.hâ€™ header on those systems.
  
! â€˜__SCHAR_WIDTH__â€™
! â€˜__SHRT_WIDTH__â€™
! â€˜__INT_WIDTH__â€™
! â€˜__LONG_WIDTH__â€™
! â€˜__LONG_LONG_WIDTH__â€™
! â€˜__PTRDIFF_WIDTH__â€™
! â€˜__SIG_ATOMIC_WIDTH__â€™
! â€˜__SIZE_WIDTH__â€™
! â€˜__WCHAR_WIDTH__â€™
! â€˜__WINT_WIDTH__â€™
! â€˜__INT_LEAST8_WIDTH__â€™
! â€˜__INT_LEAST16_WIDTH__â€™
! â€˜__INT_LEAST32_WIDTH__â€™
! â€˜__INT_LEAST64_WIDTH__â€™
! â€˜__INT_FAST8_WIDTH__â€™
! â€˜__INT_FAST16_WIDTH__â€™
! â€˜__INT_FAST32_WIDTH__â€™
! â€˜__INT_FAST64_WIDTH__â€™
! â€˜__INTPTR_WIDTH__â€™
! â€˜__INTMAX_WIDTH__â€™
       Defined to the bit widths of the corresponding types.  They exist
!      to make the implementations of â€˜limits.hâ€™ and â€˜stdint.hâ€™ behave
       correctly.  You should not use these macros directly; instead,
       include the appropriate headers.  Some of these macros may not be
!      defined on particular systems if GCC does not provide a â€˜stdint.hâ€™
       header on those systems.
  
! â€˜__SIZEOF_INT__â€™
! â€˜__SIZEOF_LONG__â€™
! â€˜__SIZEOF_LONG_LONG__â€™
! â€˜__SIZEOF_SHORT__â€™
! â€˜__SIZEOF_POINTER__â€™
! â€˜__SIZEOF_FLOAT__â€™
! â€˜__SIZEOF_DOUBLE__â€™
! â€˜__SIZEOF_LONG_DOUBLE__â€™
! â€˜__SIZEOF_SIZE_T__â€™
! â€˜__SIZEOF_WCHAR_T__â€™
! â€˜__SIZEOF_WINT_T__â€™
! â€˜__SIZEOF_PTRDIFF_T__â€™
!      Defined to the number of bytes of the C standard data types: â€˜intâ€™,
!      â€˜longâ€™, â€˜long longâ€™, â€˜shortâ€™, â€˜void *â€™, â€˜floatâ€™, â€˜doubleâ€™, â€˜long
!      doubleâ€™, â€˜size_tâ€™, â€˜wchar_tâ€™, â€˜wint_tâ€™ and â€˜ptrdiff_tâ€™.
  
! â€˜__BYTE_ORDER__â€™
! â€˜__ORDER_LITTLE_ENDIAN__â€™
! â€˜__ORDER_BIG_ENDIAN__â€™
! â€˜__ORDER_PDP_ENDIAN__â€™
!      â€˜__BYTE_ORDER__â€™ is defined to one of the values
!      â€˜__ORDER_LITTLE_ENDIAN__â€™, â€˜__ORDER_BIG_ENDIAN__â€™, or
!      â€˜__ORDER_PDP_ENDIAN__â€™ to reflect the layout of multi-byte and
!      multi-word quantities in memory.  If â€˜__BYTE_ORDER__â€™ is equal to
!      â€˜__ORDER_LITTLE_ENDIAN__â€™ or â€˜__ORDER_BIG_ENDIAN__â€™, then
       multi-byte and multi-word quantities are laid out identically: the
       byte (word) at the lowest address is the least significant or most
       significant byte (word) of the quantity, respectively.  If
!      â€˜__BYTE_ORDER__â€™ is equal to â€˜__ORDER_PDP_ENDIAN__â€™, then bytes in
       16-bit words are laid out in a little-endian fashion, whereas the
       16-bit subwords of a 32-bit quantity are laid out in big-endian
       fashion.
*************** double underscores.
*** 2078,2118 ****
            /* Test for a little-endian machine */
            #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
  
! '__FLOAT_WORD_ORDER__'
!      '__FLOAT_WORD_ORDER__' is defined to one of the values
!      '__ORDER_LITTLE_ENDIAN__' or '__ORDER_BIG_ENDIAN__' to reflect the
       layout of the words of multi-word floating-point quantities.
  
! '__DEPRECATED'
       This macro is defined, with value 1, when compiling a C++ source
       file with warnings about deprecated constructs enabled.  These
       warnings are enabled by default, but can be disabled with
!      '-Wno-deprecated'.
  
! '__EXCEPTIONS'
       This macro is defined, with value 1, when compiling a C++ source
!      file with exceptions enabled.  If '-fno-exceptions' is used when
       compiling the file, then this macro is not defined.
  
! '__GXX_RTTI'
       This macro is defined, with value 1, when compiling a C++ source
!      file with runtime type identification enabled.  If '-fno-rtti' is
       used when compiling the file, then this macro is not defined.
  
! '__USING_SJLJ_EXCEPTIONS__'
       This macro is defined, with value 1, if the compiler uses the old
!      mechanism based on 'setjmp' and 'longjmp' for exception handling.
  
! '__GXX_EXPERIMENTAL_CXX0X__'
       This macro is defined when compiling a C++ source file with C++11
       features enabled, i.e., for all C++ language dialects except
!      '-std=c++98' and '-std=gnu++98'.  This macro is obsolete, but can
       be used to detect experimental C++0x features in very old versions
!      of GCC. Since GCC 4.7.0 the '__cplusplus' macro is defined
!      correctly, so most code should test '__cplusplus >= 201103L'
       instead of using this macro.
  
! '__GXX_WEAK__'
       This macro is defined when compiling a C++ source file.  It has the
       value 1 if the compiler will use weak symbols, COMDAT sections, or
       other similar techniques to collapse symbols with "vague linkage"
--- 2078,2118 ----
            /* Test for a little-endian machine */
            #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
  
! â€˜__FLOAT_WORD_ORDER__â€™
!      â€˜__FLOAT_WORD_ORDER__â€™ is defined to one of the values
!      â€˜__ORDER_LITTLE_ENDIAN__â€™ or â€˜__ORDER_BIG_ENDIAN__â€™ to reflect the
       layout of the words of multi-word floating-point quantities.
  
! â€˜__DEPRECATEDâ€™
       This macro is defined, with value 1, when compiling a C++ source
       file with warnings about deprecated constructs enabled.  These
       warnings are enabled by default, but can be disabled with
!      â€˜-Wno-deprecatedâ€™.
  
! â€˜__EXCEPTIONSâ€™
       This macro is defined, with value 1, when compiling a C++ source
!      file with exceptions enabled.  If â€˜-fno-exceptionsâ€™ is used when
       compiling the file, then this macro is not defined.
  
! â€˜__GXX_RTTIâ€™
       This macro is defined, with value 1, when compiling a C++ source
!      file with runtime type identification enabled.  If â€˜-fno-rttiâ€™ is
       used when compiling the file, then this macro is not defined.
  
! â€˜__USING_SJLJ_EXCEPTIONS__â€™
       This macro is defined, with value 1, if the compiler uses the old
!      mechanism based on â€˜setjmpâ€™ and â€˜longjmpâ€™ for exception handling.
  
! â€˜__GXX_EXPERIMENTAL_CXX0X__â€™
       This macro is defined when compiling a C++ source file with C++11
       features enabled, i.e., for all C++ language dialects except
!      â€˜-std=c++98â€™ and â€˜-std=gnu++98â€™.  This macro is obsolete, but can
       be used to detect experimental C++0x features in very old versions
!      of GCC. Since GCC 4.7.0 the â€˜__cplusplusâ€™ macro is defined
!      correctly, so most code should test â€˜__cplusplus >= 201103Lâ€™
       instead of using this macro.
  
! â€˜__GXX_WEAK__â€™
       This macro is defined when compiling a C++ source file.  It has the
       value 1 if the compiler will use weak symbols, COMDAT sections, or
       other similar techniques to collapse symbols with "vague linkage"
*************** double underscores.
*** 2122,2221 ****
       the purpose of this macro is to ease implementation of the C++
       runtime library provided with G++.
  
! '__NEXT_RUNTIME__'
       This macro is defined, with value 1, if (and only if) the NeXT
!      runtime (as in '-fnext-runtime') is in use for Objective-C.  If the
       GNU runtime is used, this macro is not defined, so that you can use
       this macro to determine which runtime (NeXT or GNU) is being used.
  
! '__LP64__'
! '_LP64'
       These macros are defined, with value 1, if (and only if) the
!      compilation is for a target where 'long int' and pointer both use
!      64-bits and 'int' uses 32-bit.
  
! '__SSP__'
!      This macro is defined, with value 1, when '-fstack-protector' is in
       use.
  
! '__SSP_ALL__'
!      This macro is defined, with value 2, when '-fstack-protector-all'
       is in use.
  
! '__SSP_STRONG__'
       This macro is defined, with value 3, when
!      '-fstack-protector-strong' is in use.
  
! '__SSP_EXPLICIT__'
       This macro is defined, with value 4, when
!      '-fstack-protector-explicit' is in use.
  
! '__SANITIZE_ADDRESS__'
!      This macro is defined, with value 1, when '-fsanitize=address' or
!      '-fsanitize=kernel-address' are in use.
  
! '__SANITIZE_THREAD__'
!      This macro is defined, with value 1, when '-fsanitize=thread' is in
       use.
  
! '__TIMESTAMP__'
       This macro expands to a string constant that describes the date and
       time of the last modification of the current source file.  The
       string constant contains abbreviated day of the week, month, day of
       the month, time in hh:mm:ss form, year and looks like
!      '"Sun Sep 16 01:03:52 1973"'.  If the day of the month is less than
       10, it is padded with a space on the left.
  
       If GCC cannot determine the current date, it will emit a warning
!      message (once per compilation) and '__TIMESTAMP__' will expand to
!      '"??? ??? ?? ??:??:?? ????"'.
  
! '__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1'
! '__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2'
! '__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4'
! '__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8'
! '__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16'
       These macros are defined when the target processor supports atomic
       compare and swap operations on operands 1, 2, 4, 8 or 16 bytes in
       length, respectively.
  
! '__HAVE_SPECULATION_SAFE_VALUE'
       This macro is defined with the value 1 to show that this version of
!      GCC supports '__builtin_speculation_safe_value'.
  
! '__GCC_HAVE_DWARF2_CFI_ASM'
       This macro is defined when the compiler is emitting DWARF CFI
       directives to the assembler.  When this is defined, it is possible
       to emit those same directives in inline assembly.
  
! '__FP_FAST_FMA'
! '__FP_FAST_FMAF'
! '__FP_FAST_FMAL'
       These macros are defined with value 1 if the backend supports the
!      'fma', 'fmaf', and 'fmal' builtin functions, so that the include
!      file 'math.h' can define the macros 'FP_FAST_FMA', 'FP_FAST_FMAF',
!      and 'FP_FAST_FMAL' for compatibility with the 1999 C standard.
  
! '__FP_FAST_FMAF16'
! '__FP_FAST_FMAF32'
! '__FP_FAST_FMAF64'
! '__FP_FAST_FMAF128'
! '__FP_FAST_FMAF32X'
! '__FP_FAST_FMAF64X'
! '__FP_FAST_FMAF128X'
       These macros are defined with the value 1 if the backend supports
!      the 'fma' functions using the additional '_FloatN' and '_FloatNx'
       types that are defined in ISO/IEC TS 18661-3:2015.  The include
!      file 'math.h' can define the 'FP_FAST_FMAFN' and 'FP_FAST_FMAFNx'
!      macros if the user defined '__STDC_WANT_IEC_60559_TYPES_EXT__'
!      before including 'math.h'.
  
! '__GCC_IEC_559'
       This macro is defined to indicate the intended level of support for
       IEEE 754 (IEC 60559) floating-point arithmetic.  It expands to a
       nonnegative integer value.  If 0, it indicates that the combination
       of the compiler configuration and the command-line options is not
!      intended to support IEEE 754 arithmetic for 'float' and 'double' as
       defined in C99 and C11 Annex F (for example, that the standard
       rounding modes and exceptions are not supported, or that
       optimizations are enabled that conflict with IEEE 754 semantics).
--- 2122,2221 ----
       the purpose of this macro is to ease implementation of the C++
       runtime library provided with G++.
  
! â€˜__NEXT_RUNTIME__â€™
       This macro is defined, with value 1, if (and only if) the NeXT
!      runtime (as in â€˜-fnext-runtimeâ€™) is in use for Objective-C.  If the
       GNU runtime is used, this macro is not defined, so that you can use
       this macro to determine which runtime (NeXT or GNU) is being used.
  
! â€˜__LP64__â€™
! â€˜_LP64â€™
       These macros are defined, with value 1, if (and only if) the
!      compilation is for a target where â€˜long intâ€™ and pointer both use
!      64-bits and â€˜intâ€™ uses 32-bit.
  
! â€˜__SSP__â€™
!      This macro is defined, with value 1, when â€˜-fstack-protectorâ€™ is in
       use.
  
! â€˜__SSP_ALL__â€™
!      This macro is defined, with value 2, when â€˜-fstack-protector-allâ€™
       is in use.
  
! â€˜__SSP_STRONG__â€™
       This macro is defined, with value 3, when
!      â€˜-fstack-protector-strongâ€™ is in use.
  
! â€˜__SSP_EXPLICIT__â€™
       This macro is defined, with value 4, when
!      â€˜-fstack-protector-explicitâ€™ is in use.
  
! â€˜__SANITIZE_ADDRESS__â€™
!      This macro is defined, with value 1, when â€˜-fsanitize=addressâ€™ or
!      â€˜-fsanitize=kernel-addressâ€™ are in use.
  
! â€˜__SANITIZE_THREAD__â€™
!      This macro is defined, with value 1, when â€˜-fsanitize=threadâ€™ is in
       use.
  
! â€˜__TIMESTAMP__â€™
       This macro expands to a string constant that describes the date and
       time of the last modification of the current source file.  The
       string constant contains abbreviated day of the week, month, day of
       the month, time in hh:mm:ss form, year and looks like
!      â€˜"Sun Sep 16 01:03:52 1973"â€™.  If the day of the month is less than
       10, it is padded with a space on the left.
  
       If GCC cannot determine the current date, it will emit a warning
!      message (once per compilation) and â€˜__TIMESTAMP__â€™ will expand to
!      â€˜"??? ??? ?? ??:??:?? ????"â€™.
  
! â€˜__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1â€™
! â€˜__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2â€™
! â€˜__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4â€™
! â€˜__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8â€™
! â€˜__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16â€™
       These macros are defined when the target processor supports atomic
       compare and swap operations on operands 1, 2, 4, 8 or 16 bytes in
       length, respectively.
  
! â€˜__HAVE_SPECULATION_SAFE_VALUEâ€™
       This macro is defined with the value 1 to show that this version of
!      GCC supports â€˜__builtin_speculation_safe_valueâ€™.
  
! â€˜__GCC_HAVE_DWARF2_CFI_ASMâ€™
       This macro is defined when the compiler is emitting DWARF CFI
       directives to the assembler.  When this is defined, it is possible
       to emit those same directives in inline assembly.
  
! â€˜__FP_FAST_FMAâ€™
! â€˜__FP_FAST_FMAFâ€™
! â€˜__FP_FAST_FMALâ€™
       These macros are defined with value 1 if the backend supports the
!      â€˜fmaâ€™, â€˜fmafâ€™, and â€˜fmalâ€™ builtin functions, so that the include
!      file â€˜math.hâ€™ can define the macros â€˜FP_FAST_FMAâ€™, â€˜FP_FAST_FMAFâ€™,
!      and â€˜FP_FAST_FMALâ€™ for compatibility with the 1999 C standard.
  
! â€˜__FP_FAST_FMAF16â€™
! â€˜__FP_FAST_FMAF32â€™
! â€˜__FP_FAST_FMAF64â€™
! â€˜__FP_FAST_FMAF128â€™
! â€˜__FP_FAST_FMAF32Xâ€™
! â€˜__FP_FAST_FMAF64Xâ€™
! â€˜__FP_FAST_FMAF128Xâ€™
       These macros are defined with the value 1 if the backend supports
!      the â€˜fmaâ€™ functions using the additional â€˜_FloatNâ€™ and â€˜_FloatNxâ€™
       types that are defined in ISO/IEC TS 18661-3:2015.  The include
!      file â€˜math.hâ€™ can define the â€˜FP_FAST_FMAFNâ€™ and â€˜FP_FAST_FMAFNxâ€™
!      macros if the user defined â€˜__STDC_WANT_IEC_60559_TYPES_EXT__â€™
!      before including â€˜math.hâ€™.
  
! â€˜__GCC_IEC_559â€™
       This macro is defined to indicate the intended level of support for
       IEEE 754 (IEC 60559) floating-point arithmetic.  It expands to a
       nonnegative integer value.  If 0, it indicates that the combination
       of the compiler configuration and the command-line options is not
!      intended to support IEEE 754 arithmetic for â€˜floatâ€™ and â€˜doubleâ€™ as
       defined in C99 and C11 Annex F (for example, that the standard
       rounding modes and exceptions are not supported, or that
       optimizations are enabled that conflict with IEEE 754 semantics).
*************** double underscores.
*** 2230,2279 ****
       controlled by standard pragmas, where those standards do not
       require a particular default state.  It does not indicate whether
       optimizations respect signaling NaN semantics (the macro for that
!      is '__SUPPORT_SNAN__').  It does not indicate support for decimal
       floating point or the IEEE 754 binary16 and binary128 types.
  
! '__GCC_IEC_559_COMPLEX'
       This macro is defined to indicate the intended level of support for
       IEEE 754 (IEC 60559) floating-point arithmetic for complex numbers,
       as defined in C99 and C11 Annex G. It expands to a nonnegative
       integer value.  If 0, it indicates that the combination of the
       compiler configuration and the command-line options is not intended
       to support Annex G requirements (for example, because
!      '-fcx-limited-range' was used).  If 1 or more, it indicates that it
       is intended to support those requirements; this does not mean that
       all relevant language features are supported by GCC.
  
! '__NO_MATH_ERRNO__'
!      This macro is defined if '-fno-math-errno' is used, or enabled by
!      another option such as '-ffast-math' or by default.
  
! '__RECIPROCAL_MATH__'
!      This macro is defined if '-freciprocal-math' is used, or enabled by
!      another option such as '-ffast-math' or by default.
  
! '__NO_SIGNED_ZEROS__'
!      This macro is defined if '-fno-signed-zeros' is used, or enabled by
!      another option such as '-ffast-math' or by default.
  
! '__NO_TRAPPING_MATH__'
!      This macro is defined if '-fno-trapping-math' is used.
  
! '__ASSOCIATIVE_MATH__'
!      This macro is defined if '-fassociative-math' is used, or enabled
!      by another option such as '-ffast-math' or by default.
  
! '__ROUNDING_MATH__'
!      This macro is defined if '-frounding-math' is used.
  
! '__GNUC_EXECUTION_CHARSET_NAME'
! '__GNUC_WIDE_EXECUTION_CHARSET_NAME'
       These macros are defined to expand to a narrow string literal of
       the name of the narrow and wide compile-time execution character
       set used.  It directly reflects the name passed to the options
!      '-fexec-charset' and '-fwide-exec-charset', or the defaults
       documented for those options (that is, it can expand to something
!      like '"UTF-8"').  *Note Invocation::.
  
  
  File: cpp.info,  Node: System-specific Predefined Macros,  Next: C++ Named Operators,  Prev: Common Predefined Macros,  Up: Predefined Macros
--- 2230,2279 ----
       controlled by standard pragmas, where those standards do not
       require a particular default state.  It does not indicate whether
       optimizations respect signaling NaN semantics (the macro for that
!      is â€˜__SUPPORT_SNAN__â€™).  It does not indicate support for decimal
       floating point or the IEEE 754 binary16 and binary128 types.
  
! â€˜__GCC_IEC_559_COMPLEXâ€™
       This macro is defined to indicate the intended level of support for
       IEEE 754 (IEC 60559) floating-point arithmetic for complex numbers,
       as defined in C99 and C11 Annex G. It expands to a nonnegative
       integer value.  If 0, it indicates that the combination of the
       compiler configuration and the command-line options is not intended
       to support Annex G requirements (for example, because
!      â€˜-fcx-limited-rangeâ€™ was used).  If 1 or more, it indicates that it
       is intended to support those requirements; this does not mean that
       all relevant language features are supported by GCC.
  
! â€˜__NO_MATH_ERRNO__â€™
!      This macro is defined if â€˜-fno-math-errnoâ€™ is used, or enabled by
!      another option such as â€˜-ffast-mathâ€™ or by default.
  
! â€˜__RECIPROCAL_MATH__â€™
!      This macro is defined if â€˜-freciprocal-mathâ€™ is used, or enabled by
!      another option such as â€˜-ffast-mathâ€™ or by default.
  
! â€˜__NO_SIGNED_ZEROS__â€™
!      This macro is defined if â€˜-fno-signed-zerosâ€™ is used, or enabled by
!      another option such as â€˜-ffast-mathâ€™ or by default.
  
! â€˜__NO_TRAPPING_MATH__â€™
!      This macro is defined if â€˜-fno-trapping-mathâ€™ is used.
  
! â€˜__ASSOCIATIVE_MATH__â€™
!      This macro is defined if â€˜-fassociative-mathâ€™ is used, or enabled
!      by another option such as â€˜-ffast-mathâ€™ or by default.
  
! â€˜__ROUNDING_MATH__â€™
!      This macro is defined if â€˜-frounding-mathâ€™ is used.
  
! â€˜__GNUC_EXECUTION_CHARSET_NAMEâ€™
! â€˜__GNUC_WIDE_EXECUTION_CHARSET_NAMEâ€™
       These macros are defined to expand to a narrow string literal of
       the name of the narrow and wide compile-time execution character
       set used.  It directly reflects the name passed to the options
!      â€˜-fexec-charsetâ€™ and â€˜-fwide-exec-charsetâ€™, or the defaults
       documented for those options (that is, it can expand to something
!      like â€˜"UTF-8"â€™).  *Note Invocation::.
  
  
  File: cpp.info,  Node: System-specific Predefined Macros,  Next: C++ Named Operators,  Prev: Common Predefined Macros,  Up: Predefined Macros
*************** File: cpp.info,  Node: System-specific P
*** 2284,2306 ****
  The C preprocessor normally predefines several macros that indicate what
  type of system and machine is in use.  They are obviously different on
  each target supported by GCC.  This manual, being for all systems and
! machines, cannot tell you what their names are, but you can use 'cpp
! -dM' to see them all.  *Note Invocation::.  All system-specific
  predefined macros expand to a constant value, so you can test them with
! either '#ifdef' or '#if'.
  
     The C standard requires that all system-specific macros be part of
! the "reserved namespace".  All names which begin with two underscores,
  or an underscore and a capital letter, are reserved for the compiler and
  library to use as they wish.  However, historically system-specific
  macros have had names with no special prefix; for instance, it is common
! to find 'unix' defined on Unix systems.  For all such macros, GCC
  provides a parallel macro with two underscores added at the beginning
! and the end.  If 'unix' is defined, '__unix__' will be defined too.
! There will never be more than two underscores; the parallel of '_mips'
! is '__mips__'.
  
!    When the '-ansi' option, or any '-std' option that requests strict
  conformance, is given to the compiler, all the system-specific
  predefined macros outside the reserved namespace are suppressed.  The
  parallel macros, inside the reserved namespace, remain defined.
--- 2284,2306 ----
  The C preprocessor normally predefines several macros that indicate what
  type of system and machine is in use.  They are obviously different on
  each target supported by GCC.  This manual, being for all systems and
! machines, cannot tell you what their names are, but you can use â€˜cpp
! -dMâ€™ to see them all.  *Note Invocation::.  All system-specific
  predefined macros expand to a constant value, so you can test them with
! either â€˜#ifdefâ€™ or â€˜#ifâ€™.
  
     The C standard requires that all system-specific macros be part of
! the â€œreserved namespaceâ€�.  All names which begin with two underscores,
  or an underscore and a capital letter, are reserved for the compiler and
  library to use as they wish.  However, historically system-specific
  macros have had names with no special prefix; for instance, it is common
! to find â€˜unixâ€™ defined on Unix systems.  For all such macros, GCC
  provides a parallel macro with two underscores added at the beginning
! and the end.  If â€˜unixâ€™ is defined, â€˜__unix__â€™ will be defined too.
! There will never be more than two underscores; the parallel of â€˜_mipsâ€™
! is â€˜__mips__â€™.
  
!    When the â€˜-ansiâ€™ option, or any â€˜-stdâ€™ option that requests strict
  conformance, is given to the compiler, all the system-specific
  predefined macros outside the reserved namespace are suppressed.  The
  parallel macros, inside the reserved namespace, remain defined.
*************** encourage you to correct older code to u
*** 2311,2317 ****
  you find it.  We don't recommend you use the system-specific macros that
  are in the reserved namespace, either.  It is better in the long run to
  check specifically for features you need, using a tool such as
! 'autoconf'.
  
  
  File: cpp.info,  Node: C++ Named Operators,  Prev: System-specific Predefined Macros,  Up: Predefined Macros
--- 2311,2317 ----
  you find it.  We don't recommend you use the system-specific macros that
  are in the reserved namespace, either.  It is better in the long run to
  check specifically for features you need, using a tool such as
! â€˜autoconfâ€™.
  
  
  File: cpp.info,  Node: C++ Named Operators,  Prev: System-specific Predefined Macros,  Up: Predefined Macros
*************** File: cpp.info,  Node: C++ Named Operato
*** 2322,2346 ****
  In C++, there are eleven keywords which are simply alternate spellings
  of operators normally written with punctuation.  These keywords are
  treated as such even in the preprocessor.  They function as operators in
! '#if', and they cannot be defined as macros or poisoned.  In C, you can
  request that those keywords take their C++ meaning by including
! 'iso646.h'.  That header defines each one as a normal object-like macro
  expanding to the appropriate punctuator.
  
     These are the named operators and their corresponding punctuators:
  
  Named Operator   Punctuator
! 'and'            '&&'
! 'and_eq'         '&='
! 'bitand'         '&'
! 'bitor'          '|'
! 'compl'          '~'
! 'not'            '!'
! 'not_eq'         '!='
! 'or'             '||'
! 'or_eq'          '|='
! 'xor'            '^'
! 'xor_eq'         '^='
  
  
  File: cpp.info,  Node: Undefining and Redefining Macros,  Next: Directives Within Macro Arguments,  Prev: Predefined Macros,  Up: Macros
--- 2322,2346 ----
  In C++, there are eleven keywords which are simply alternate spellings
  of operators normally written with punctuation.  These keywords are
  treated as such even in the preprocessor.  They function as operators in
! â€˜#ifâ€™, and they cannot be defined as macros or poisoned.  In C, you can
  request that those keywords take their C++ meaning by including
! â€˜iso646.hâ€™.  That header defines each one as a normal object-like macro
  expanding to the appropriate punctuator.
  
     These are the named operators and their corresponding punctuators:
  
  Named Operator   Punctuator
! â€˜andâ€™            â€˜&&â€™
! â€˜and_eqâ€™         â€˜&=â€™
! â€˜bitandâ€™         â€˜&â€™
! â€˜bitorâ€™          â€˜|â€™
! â€˜complâ€™          â€˜~â€™
! â€˜notâ€™            â€˜!â€™
! â€˜not_eqâ€™         â€˜!=â€™
! â€˜orâ€™             â€˜||â€™
! â€˜or_eqâ€™          â€˜|=â€™
! â€˜xorâ€™            â€˜^â€™
! â€˜xor_eqâ€™         â€˜^=â€™
  
  
  File: cpp.info,  Node: Undefining and Redefining Macros,  Next: Directives Within Macro Arguments,  Prev: Predefined Macros,  Up: Macros
*************** File: cpp.info,  Node: Undefining and Re
*** 2348,2375 ****
  3.8 Undefining and Redefining Macros
  ====================================
  
! If a macro ceases to be useful, it may be "undefined" with the '#undef'
! directive.  '#undef' takes a single argument, the name of the macro to
  undefine.  You use the bare macro name, even if the macro is
  function-like.  It is an error if anything appears on the line after the
! macro name.  '#undef' has no effect if the name is not a macro.
  
       #define FOO 4
!      x = FOO;        ==> x = 4;
       #undef FOO
!      x = FOO;        ==> x = FOO;
  
!    Once a macro has been undefined, that identifier may be "redefined"
! as a macro by a subsequent '#define' directive.  The new definition need
  not have any resemblance to the old definition.
  
     However, if an identifier which is currently a macro is redefined,
! then the new definition must be "effectively the same" as the old one.
  Two macro definitions are effectively the same if:
!    * Both are the same type of macro (object- or function-like).
!    * All the tokens of the replacement list are the same.
!    * If there are any parameters, they are the same.
!    * Whitespace appears in the same places in both.  It need not be
       exactly the same amount of whitespace, though.  Remember that
       comments count as whitespace.
  
--- 2348,2375 ----
  3.8 Undefining and Redefining Macros
  ====================================
  
! If a macro ceases to be useful, it may be â€œundefinedâ€� with the â€˜#undefâ€™
! directive.  â€˜#undefâ€™ takes a single argument, the name of the macro to
  undefine.  You use the bare macro name, even if the macro is
  function-like.  It is an error if anything appears on the line after the
! macro name.  â€˜#undefâ€™ has no effect if the name is not a macro.
  
       #define FOO 4
!      x = FOO;        â†¦ x = 4;
       #undef FOO
!      x = FOO;        â†¦ x = FOO;
  
!    Once a macro has been undefined, that identifier may be â€œredefinedâ€�
! as a macro by a subsequent â€˜#defineâ€™ directive.  The new definition need
  not have any resemblance to the old definition.
  
     However, if an identifier which is currently a macro is redefined,
! then the new definition must be â€œeffectively the sameâ€� as the old one.
  Two macro definitions are effectively the same if:
!    â€¢ Both are the same type of macro (object- or function-like).
!    â€¢ All the tokens of the replacement list are the same.
!    â€¢ If there are any parameters, they are the same.
!    â€¢ Whitespace appears in the same places in both.  It need not be
       exactly the same amount of whitespace, though.  Remember that
       comments count as whitespace.
  
*************** arguments.  For example,
*** 2454,2461 ****
       #define twice(x) (2*(x))
       #define call_with_1(x) x(1)
       call_with_1 (twice)
!           ==> twice(1)
!           ==> (2*(1))
  
     Macro definitions do not have to have balanced parentheses.  By
  writing an unbalanced open parenthesis in a macro body, it is possible
--- 2454,2461 ----
       #define twice(x) (2*(x))
       #define call_with_1(x) x(1)
       call_with_1 (twice)
!           â†¦ twice(1)
!           â†¦ (2*(1))
  
     Macro definitions do not have to have balanced parentheses.  By
  writing an unbalanced open parenthesis in a macro body, it is possible
*************** outside of it.  For example,
*** 2465,2471 ****
       #define strange(file) fprintf (file, "%s %d",
       ...
       strange(stderr) p, 35)
!           ==> fprintf (stderr, "%s %d", p, 35)
  
     The ability to piece together a macro call can be useful, but the use
  of unbalanced open parentheses in a macro body is just confusing, and
--- 2465,2471 ----
       #define strange(file) fprintf (file, "%s %d",
       ...
       strange(stderr) p, 35)
!           â†¦ fprintf (stderr, "%s %d", p, 35)
  
     The ability to piece together a macro call can be useful, but the use
  of unbalanced open parentheses in a macro body is just confusing, and
*************** way.
*** 2488,2498 ****
       #define ceil_div(x, y) (x + y - 1) / y
  
  whose purpose is to divide, rounding up.  (One use for this operation is
! to compute how many 'int' objects are needed to hold a certain number of
! 'char' objects.)  Then suppose it is used as follows:
  
       a = ceil_div (b & c, sizeof (int));
!           ==> a = (b & c + sizeof (int) - 1) / sizeof (int);
  
  This does not do what is intended.  The operator-precedence rules of C
  make it equivalent to this:
--- 2488,2498 ----
       #define ceil_div(x, y) (x + y - 1) / y
  
  whose purpose is to divide, rounding up.  (One use for this operation is
! to compute how many â€˜intâ€™ objects are needed to hold a certain number of
! â€˜charâ€™ objects.)  Then suppose it is used as follows:
  
       a = ceil_div (b & c, sizeof (int));
!           â†¦ a = (b & c + sizeof (int) - 1) / sizeof (int);
  
  This does not do what is intended.  The operator-precedence rules of C
  make it equivalent to this:
*************** Defining the macro as
*** 2509,2527 ****
  
  provides the desired result.
  
!    Unintended grouping can result in another way.  Consider 'sizeof
! ceil_div(1, 2)'.  That has the appearance of a C expression that would
! compute the size of the type of 'ceil_div (1, 2)', but in fact it means
  something very different.  Here is what it expands to:
  
       sizeof ((1) + (2) - 1) / (2)
  
  This would take the size of an integer and divide it by two.  The
! precedence rules have put the division outside the 'sizeof' when it was
  intended to be inside.
  
     Parentheses around the entire macro definition prevent such problems.
! Here, then, is the recommended way to define 'ceil_div':
  
       #define ceil_div(x, y) (((x) + (y) - 1) / (y))
  
--- 2509,2527 ----
  
  provides the desired result.
  
!    Unintended grouping can result in another way.  Consider â€˜sizeof
! ceil_div(1, 2)â€™.  That has the appearance of a C expression that would
! compute the size of the type of â€˜ceil_div (1, 2)â€™, but in fact it means
  something very different.  Here is what it expands to:
  
       sizeof ((1) + (2) - 1) / (2)
  
  This would take the size of an integer and divide it by two.  The
! precedence rules have put the division outside the â€˜sizeofâ€™ when it was
  intended to be inside.
  
     Parentheses around the entire macro definition prevent such problems.
! Here, then, is the recommended way to define â€˜ceil_divâ€™:
  
       #define ceil_div(x, y) (((x) + (y) - 1) / (y))
  
*************** File: cpp.info,  Node: Swallowing the Se
*** 2533,2539 ****
  
  Often it is desirable to define a macro that expands into a compound
  statement.  Consider, for example, the following macro, that advances a
! pointer (the argument 'p' says where to find it) across whitespace
  characters:
  
       #define SKIP_SPACES(p, limit)  \
--- 2533,2539 ----
  
  Often it is desirable to define a macro that expands into a compound
  statement.  Consider, for example, the following macro, that advances a
! pointer (the argument â€˜pâ€™ says where to find it) across whitespace
  characters:
  
       #define SKIP_SPACES(p, limit)  \
*************** Here backslash-newline is used to split
*** 2546,2559 ****
  be a single logical line, so that it resembles the way such code would
  be laid out if not part of a macro definition.
  
!    A call to this macro might be 'SKIP_SPACES (p, lim)'.  Strictly
  speaking, the call expands to a compound statement, which is a complete
  statement with no need for a semicolon to end it.  However, since it
  looks like a function call, it minimizes confusion if you can use it
! like a function call, writing a semicolon afterward, as in 'SKIP_SPACES
! (p, lim);'
  
!    This can cause trouble before 'else' statements, because the
  semicolon is actually a null statement.  Suppose you write
  
       if (*p != 0)
--- 2546,2559 ----
  be a single logical line, so that it resembles the way such code would
  be laid out if not part of a macro definition.
  
!    A call to this macro might be â€˜SKIP_SPACES (p, lim)â€™.  Strictly
  speaking, the call expands to a compound statement, which is a complete
  statement with no need for a semicolon to end it.  However, since it
  looks like a function call, it minimizes confusion if you can use it
! like a function call, writing a semicolon afterward, as in â€˜SKIP_SPACES
! (p, lim);â€™
  
!    This can cause trouble before â€˜elseâ€™ statements, because the
  semicolon is actually a null statement.  Suppose you write
  
       if (*p != 0)
*************** semicolon is actually a null statement.
*** 2561,2571 ****
       else ...
  
  The presence of two statements--the compound statement and a null
! statement--in between the 'if' condition and the 'else' makes invalid C
  code.
  
!    The definition of the macro 'SKIP_SPACES' can be altered to solve
! this problem, using a 'do ... while' statement.  Here is how:
  
       #define SKIP_SPACES(p, limit)     \
       do { char *lim = (limit);         \
--- 2561,2571 ----
       else ...
  
  The presence of two statements--the compound statement and a null
! statement--in between the â€˜ifâ€™ condition and the â€˜elseâ€™ makes invalid C
  code.
  
!    The definition of the macro â€˜SKIP_SPACESâ€™ can be altered to solve
! this problem, using a â€˜do ... whileâ€™ statement.  Here is how:
  
       #define SKIP_SPACES(p, limit)     \
       do { char *lim = (limit);         \
*************** this problem, using a 'do ... while' sta
*** 2574,2580 ****
                p--; break; }}}          \
       while (0)
  
!    Now 'SKIP_SPACES (p, lim);' expands into
  
       do {...} while (0);
  
--- 2574,2580 ----
                p--; break; }}}          \
       while (0)
  
!    Now â€˜SKIP_SPACES (p, lim);â€™ expands into
  
       do {...} while (0);
  
*************** File: cpp.info,  Node: Duplication of Si
*** 2587,2593 ****
  3.10.4 Duplication of Side Effects
  ----------------------------------
  
! Many C programs define a macro 'min', for "minimum", like this:
  
       #define min(X, Y)  ((X) < (Y) ? (X) : (Y))
  
--- 2587,2593 ----
  3.10.4 Duplication of Side Effects
  ----------------------------------
  
! Many C programs define a macro â€˜minâ€™, for "minimum", like this:
  
       #define min(X, Y)  ((X) < (Y) ? (X) : (Y))
  
*************** it expands as follows:
*** 2600,2616 ****
  
       next = ((x + y) < (foo (z)) ? (x + y) : (foo (z)));
  
! where 'x + y' has been substituted for 'X' and 'foo (z)' for 'Y'.
  
!    The function 'foo' is used only once in the statement as it appears
! in the program, but the expression 'foo (z)' has been substituted twice
! into the macro expansion.  As a result, 'foo' might be called two times
  when the statement is executed.  If it has side effects or if it takes a
  long time to compute, the results might not be what you intended.  We
! say that 'min' is an "unsafe" macro.
  
!    The best solution to this problem is to define 'min' in a way that
! computes the value of 'foo (z)' only once.  The C language offers no
  standard way to do this, but it can be done with GNU extensions as
  follows:
  
--- 2600,2616 ----
  
       next = ((x + y) < (foo (z)) ? (x + y) : (foo (z)));
  
! where â€˜x + yâ€™ has been substituted for â€˜Xâ€™ and â€˜foo (z)â€™ for â€˜Yâ€™.
  
!    The function â€˜fooâ€™ is used only once in the statement as it appears
! in the program, but the expression â€˜foo (z)â€™ has been substituted twice
! into the macro expansion.  As a result, â€˜fooâ€™ might be called two times
  when the statement is executed.  If it has side effects or if it takes a
  long time to compute, the results might not be what you intended.  We
! say that â€˜minâ€™ is an â€œunsafeâ€� macro.
  
!    The best solution to this problem is to define â€˜minâ€™ in a way that
! computes the value of â€˜foo (z)â€™ only once.  The C language offers no
  standard way to do this, but it can be done with GNU extensions as
  follows:
  
*************** follows:
*** 2619,2625 ****
          typeof (Y) y_ = (Y);          \
          (x_ < y_) ? x_ : y_; })
  
!    The '({ ... })' notation produces a compound statement that acts as
  an expression.  Its value is the value of its last statement.  This
  permits us to define local variables and assign each argument to one.
  The local variables have underscores after their names to reduce the
--- 2619,2625 ----
          typeof (Y) y_ = (Y);          \
          (x_ < y_) ? x_ : y_; })
  
!    The â€˜({ ... })â€™ notation produces a compound statement that acts as
  an expression.  Its value is the value of its last statement.  This
  permits us to define local variables and assign each argument to one.
  The local variables have underscores after their names to reduce the
*************** risk of conflict with an identifier of w
*** 2627,2635 ****
  avoid this entirely).  Now each argument is evaluated exactly once.
  
     If you do not wish to use GNU C extensions, the only solution is to
! be careful when _using_ the macro 'min'.  For example, you can calculate
! the value of 'foo (z)', save it in a variable, and use that variable in
! 'min':
  
       #define min(X, Y)  ((X) < (Y) ? (X) : (Y))
       ...
--- 2627,2635 ----
  avoid this entirely).  Now each argument is evaluated exactly once.
  
     If you do not wish to use GNU C extensions, the only solution is to
! be careful when _using_ the macro â€˜minâ€™.  For example, you can calculate
! the value of â€˜foo (z)â€™, save it in a variable, and use that variable in
! â€˜minâ€™:
  
       #define min(X, Y)  ((X) < (Y) ? (X) : (Y))
       ...
*************** the value of 'foo (z)', save it in a var
*** 2638,2644 ****
         next = min (x + y, tem);
       }
  
! (where we assume that 'foo' returns type 'int').
  
  
  File: cpp.info,  Node: Self-Referential Macros,  Next: Argument Prescan,  Prev: Duplication of Side Effects,  Up: Macro Pitfalls
--- 2638,2644 ----
         next = min (x + y, tem);
       }
  
! (where we assume that â€˜fooâ€™ returns type â€˜intâ€™).
  
  
  File: cpp.info,  Node: Self-Referential Macros,  Next: Argument Prescan,  Prev: Duplication of Side Effects,  Up: Macro Pitfalls
*************** File: cpp.info,  Node: Self-Referential
*** 2646,2652 ****
  3.10.5 Self-Referential Macros
  ------------------------------
  
! A "self-referential" macro is one whose name appears in its definition.
  Recall that all macro definitions are rescanned for more macros to
  replace.  If the self-reference were considered a use of the macro, it
  would produce an infinitely large expansion.  To prevent this, the
--- 2646,2652 ----
  3.10.5 Self-Referential Macros
  ------------------------------
  
! A â€œself-referentialâ€� macro is one whose name appears in its definition.
  Recall that all macro definitions are rescanned for more macros to
  replace.  If the self-reference were considered a use of the macro, it
  would produce an infinitely large expansion.  To prevent this, the
*************** preprocessor output unchanged.  Consider
*** 2655,2702 ****
  
       #define foo (4 + foo)
  
! where 'foo' is also a variable in your program.
  
!    Following the ordinary rules, each reference to 'foo' will expand
! into '(4 + foo)'; then this will be rescanned and will expand into '(4 +
! (4 + foo))'; and so on until the computer runs out of memory.
  
     The self-reference rule cuts this process short after one step, at
! '(4 + foo)'.  Therefore, this macro definition has the possibly useful
! effect of causing the program to add 4 to the value of 'foo' wherever
! 'foo' is referred to.
  
     In most cases, it is a bad idea to take advantage of this feature.  A
! person reading the program who sees that 'foo' is a variable will not
  expect that it is a macro as well.  The reader will come across the
! identifier 'foo' in the program and think its value should be that of
! the variable 'foo', whereas in fact the value is four greater.
  
     One common, useful use of self-reference is to create a macro which
  expands to itself.  If you write
  
       #define EPERM EPERM
  
! then the macro 'EPERM' expands to 'EPERM'.  Effectively, it is left
  alone by the preprocessor whenever it's used in running text.  You can
! tell that it's a macro with '#ifdef'.  You might do this if you want to
! define numeric constants with an 'enum', but have '#ifdef' be true for
  each constant.
  
!    If a macro 'x' expands to use a macro 'y', and the expansion of 'y'
! refers to the macro 'x', that is an "indirect self-reference" of 'x'.
! 'x' is not expanded in this case either.  Thus, if we have
  
       #define x (4 + y)
       #define y (2 * x)
  
! then 'x' and 'y' expand as follows:
  
!      x    ==> (4 + y)
!           ==> (4 + (2 * x))
  
!      y    ==> (2 * x)
!           ==> (2 * (4 + y))
  
  Each macro is expanded when it appears in the definition of the other
  macro, but not when it indirectly appears in its own definition.
--- 2655,2702 ----
  
       #define foo (4 + foo)
  
! where â€˜fooâ€™ is also a variable in your program.
  
!    Following the ordinary rules, each reference to â€˜fooâ€™ will expand
! into â€˜(4 + foo)â€™; then this will be rescanned and will expand into â€˜(4 +
! (4 + foo))â€™; and so on until the computer runs out of memory.
  
     The self-reference rule cuts this process short after one step, at
! â€˜(4 + foo)â€™.  Therefore, this macro definition has the possibly useful
! effect of causing the program to add 4 to the value of â€˜fooâ€™ wherever
! â€˜fooâ€™ is referred to.
  
     In most cases, it is a bad idea to take advantage of this feature.  A
! person reading the program who sees that â€˜fooâ€™ is a variable will not
  expect that it is a macro as well.  The reader will come across the
! identifier â€˜fooâ€™ in the program and think its value should be that of
! the variable â€˜fooâ€™, whereas in fact the value is four greater.
  
     One common, useful use of self-reference is to create a macro which
  expands to itself.  If you write
  
       #define EPERM EPERM
  
! then the macro â€˜EPERMâ€™ expands to â€˜EPERMâ€™.  Effectively, it is left
  alone by the preprocessor whenever it's used in running text.  You can
! tell that it's a macro with â€˜#ifdefâ€™.  You might do this if you want to
! define numeric constants with an â€˜enumâ€™, but have â€˜#ifdefâ€™ be true for
  each constant.
  
!    If a macro â€˜xâ€™ expands to use a macro â€˜yâ€™, and the expansion of â€˜yâ€™
! refers to the macro â€˜xâ€™, that is an â€œindirect self-referenceâ€� of â€˜xâ€™.
! â€˜xâ€™ is not expanded in this case either.  Thus, if we have
  
       #define x (4 + y)
       #define y (2 * x)
  
! then â€˜xâ€™ and â€˜yâ€™ expand as follows:
  
!      x    â†¦ (4 + y)
!           â†¦ (4 + (2 * x))
  
!      y    â†¦ (2 * x)
!           â†¦ (2 * (4 + y))
  
  Each macro is expanded when it appears in the definition of the other
  macro, but not when it indirectly appears in its own definition.
*************** difference?  And why not skip it and mak
*** 2734,2752 ****
  answer is that the prescan does make a difference in three special
  cases:
  
!    * Nested calls to a macro.
  
!      We say that "nested" calls to a macro occur when a macro's argument
!      contains a call to that very macro.  For example, if 'f' is a macro
!      that expects one argument, 'f (f (1))' is a nested pair of calls to
!      'f'.  The desired expansion is made by expanding 'f (1)' and
!      substituting that into the definition of 'f'.  The prescan causes
!      the expected result to happen.  Without the prescan, 'f (1)' itself
!      would be substituted as an argument, and the inner use of 'f' would
       appear during the main scan as an indirect self-reference and would
       not be expanded.
  
!    * Macros that call other macros that stringize or concatenate.
  
       If an argument is stringized or concatenated, the prescan does not
       occur.  If you _want_ to expand a macro, then stringize or
--- 2734,2752 ----
  answer is that the prescan does make a difference in three special
  cases:
  
!    â€¢ Nested calls to a macro.
  
!      We say that â€œnestedâ€� calls to a macro occur when a macro's argument
!      contains a call to that very macro.  For example, if â€˜fâ€™ is a macro
!      that expects one argument, â€˜f (f (1))â€™ is a nested pair of calls to
!      â€˜fâ€™.  The desired expansion is made by expanding â€˜f (1)â€™ and
!      substituting that into the definition of â€˜fâ€™.  The prescan causes
!      the expected result to happen.  Without the prescan, â€˜f (1)â€™ itself
!      would be substituted as an argument, and the inner use of â€˜fâ€™ would
       appear during the main scan as an indirect self-reference and would
       not be expanded.
  
!    â€¢ Macros that call other macros that stringize or concatenate.
  
       If an argument is stringized or concatenated, the prescan does not
       occur.  If you _want_ to expand a macro, then stringize or
*************** cases:
*** 2759,2769 ****
            #define TABLESIZE 1024
            #define BUFSIZE TABLESIZE
  
!      then 'AFTERX(BUFSIZE)' expands to 'X_BUFSIZE', and
!      'XAFTERX(BUFSIZE)' expands to 'X_1024'.  (Not to 'X_TABLESIZE'.
       Prescan always does a complete expansion.)
  
!    * Macros used in arguments, whose expansions contain unshielded
       commas.
  
       This can cause a macro expanded on the second scan to be called
--- 2759,2769 ----
            #define TABLESIZE 1024
            #define BUFSIZE TABLESIZE
  
!      then â€˜AFTERX(BUFSIZE)â€™ expands to â€˜X_BUFSIZEâ€™, and
!      â€˜XAFTERX(BUFSIZE)â€™ expands to â€˜X_1024â€™.  (Not to â€˜X_TABLESIZEâ€™.
       Prescan always does a complete expansion.)
  
!    â€¢ Macros used in arguments, whose expansions contain unshielded
       commas.
  
       This can cause a macro expanded on the second scan to be called
*************** cases:
*** 2773,2781 ****
            #define bar(x) lose(x)
            #define lose(x) (1 + (x))
  
!      We would like 'bar(foo)' to turn into '(1 + (foo))', which would
!      then turn into '(1 + (a,b))'.  Instead, 'bar(foo)' expands into
!      'lose(a,b)', and you get an error because 'lose' requires a single
       argument.  In this case, the problem is easily solved by the same
       parentheses that ought to be used to prevent misnesting of
       arithmetic operations:
--- 2773,2781 ----
            #define bar(x) lose(x)
            #define lose(x) (1 + (x))
  
!      We would like â€˜bar(foo)â€™ to turn into â€˜(1 + (foo))â€™, which would
!      then turn into â€˜(1 + (a,b))â€™.  Instead, â€˜bar(foo)â€™ expands into
!      â€˜lose(a,b)â€™, and you get an error because â€˜loseâ€™ requires a single
       argument.  In this case, the problem is easily solved by the same
       parentheses that ought to be used to prevent misnesting of
       arithmetic operations:
*************** cases:
*** 2784,2790 ****
       or
            #define bar(x) lose((x))
  
!      The extra pair of parentheses prevents the comma in 'foo''s
       definition from being interpreted as an argument separator.
  
  
--- 2784,2790 ----
       or
            #define bar(x) lose((x))
  
!      The extra pair of parentheses prevents the comma in â€˜fooâ€™'s
       definition from being interpreted as an argument separator.
  
  
*************** different to the line containing the arg
*** 2807,2813 ****
                          ignored (),
                          syntax error);
  
! The syntax error triggered by the tokens 'syntax error' results in an
  error message citing line three--the line of ignore_second_arg-- even
  though the problematic code comes from line five.
  
--- 2807,2813 ----
                          ignored (),
                          syntax error);
  
! The syntax error triggered by the tokens â€˜syntax errorâ€™ results in an
  error message citing line three--the line of ignore_second_arg-- even
  though the problematic code comes from line five.
  
*************** File: cpp.info,  Node: Conditionals,  Ne
*** 2819,2833 ****
  4 Conditionals
  **************
  
! A "conditional" is a directive that instructs the preprocessor to select
  whether or not to include a chunk of code in the final token stream
  passed to the compiler.  Preprocessor conditionals can test arithmetic
  expressions, or whether a name is defined as a macro, or both
! simultaneously using the special 'defined' operator.
  
!    A conditional in the C preprocessor resembles in some ways an 'if'
  statement in C, but it is important to understand the difference between
! them.  The condition in an 'if' statement is tested during the execution
  of your program.  Its purpose is to allow your program to behave
  differently from run to run, depending on the data it is operating on.
  The condition in a preprocessing conditional directive is tested when
--- 2819,2833 ----
  4 Conditionals
  **************
  
! A â€œconditionalâ€� is a directive that instructs the preprocessor to select
  whether or not to include a chunk of code in the final token stream
  passed to the compiler.  Preprocessor conditionals can test arithmetic
  expressions, or whether a name is defined as a macro, or both
! simultaneously using the special â€˜definedâ€™ operator.
  
!    A conditional in the C preprocessor resembles in some ways an â€˜ifâ€™
  statement in C, but it is important to understand the difference between
! them.  The condition in an â€˜ifâ€™ statement is tested during the execution
  of your program.  Its purpose is to allow your program to behave
  differently from run to run, depending on the data it is operating on.
  The condition in a preprocessing conditional directive is tested when
*************** included in the program depending on the
*** 2836,2845 ****
  compilation.
  
     However, the distinction is becoming less clear.  Modern compilers
! often do test 'if' statements when a program is compiled, if their
  conditions are known not to vary at run time, and eliminate code which
  can never be executed.  If you can count on your compiler to do this,
! you may find that your program is more readable if you use 'if'
  statements with constant conditions (perhaps determined by macros).  Of
  course, you can only use this to exclude code, not type definitions or
  other preprocessing directives, and you can only do it if the code
--- 2836,2845 ----
  compilation.
  
     However, the distinction is becoming less clear.  Modern compilers
! often do test â€˜ifâ€™ statements when a program is compiled, if their
  conditions are known not to vary at run time, and eliminate code which
  can never be executed.  If you can count on your compiler to do this,
! you may find that your program is more readable if you use â€˜ifâ€™
  statements with constant conditions (perhaps determined by macros).  Of
  course, you can only use this to exclude code, not type definitions or
  other preprocessing directives, and you can only do it if the code
*************** File: cpp.info,  Node: Conditional Uses,
*** 2859,2865 ****
  
  There are three general reasons to use a conditional.
  
!    * A program may need to use different code depending on the machine
       or operating system it is to run on.  In some cases the code for
       one operating system may be erroneous on another operating system;
       for example, it might refer to data types or constants that do not
--- 2859,2865 ----
  
  There are three general reasons to use a conditional.
  
!    â€¢ A program may need to use different code depending on the machine
       or operating system it is to run on.  In some cases the code for
       one operating system may be erroneous on another operating system;
       for example, it might refer to data types or constants that do not
*************** There are three general reasons to use a
*** 2869,2880 ****
       the offending code can be effectively excised from the program when
       it is not valid.
  
!    * You may want to be able to compile the same source file into two
       different programs.  One version might make frequent time-consuming
       consistency checks on its intermediate data, or print the values of
       those data for debugging, and the other not.
  
!    * A conditional whose condition is always false is one way to exclude
       code from the program but keep it as a sort of comment for future
       reference.
  
--- 2869,2880 ----
       the offending code can be effectively excised from the program when
       it is not valid.
  
!    â€¢ You may want to be able to compile the same source file into two
       different programs.  One version might make frequent time-consuming
       consistency checks on its intermediate data, or print the values of
       those data for debugging, and the other not.
  
!    â€¢ A conditional whose condition is always false is one way to exclude
       code from the program but keep it as a sort of comment for future
       reference.
  
*************** File: cpp.info,  Node: Conditional Synta
*** 2888,2895 ****
  4.2 Conditional Syntax
  ======================
  
! A conditional in the C preprocessor begins with a "conditional
! directive": '#if', '#ifdef' or '#ifndef'.
  
  * Menu:
  
--- 2888,2895 ----
  4.2 Conditional Syntax
  ======================
  
! A conditional in the C preprocessor begins with a â€œconditional
! directiveâ€�: â€˜#ifâ€™, â€˜#ifdefâ€™ or â€˜#ifndefâ€™.
  
  * Menu:
  
*************** directive": '#if', '#ifdef' or '#ifndef'
*** 2904,2911 ****
  * __has_builtin::
  * __has_feature::
  * __has_extension::
! * __has_include::        '__has_include' and
!                                  '__has_include_next'
  * __has_embed::
  
  
--- 2904,2911 ----
  * __has_builtin::
  * __has_feature::
  * __has_extension::
! * __has_include::        â€˜__has_includeâ€™ and
!                                  â€˜__has_include_nextâ€™
  * __has_embed::
  
  
*************** The simplest sort of conditional is
*** 2922,2937 ****
  
       #endif /* MACRO */
  
!    This block is called a "conditional group".  CONTROLLED TEXT will be
  included in the output of the preprocessor if and only if MACRO is
! defined.  We say that the conditional "succeeds" if MACRO is defined,
! "fails" if it is not.
  
     The CONTROLLED TEXT inside of a conditional can include preprocessing
  directives.  They are executed only if the conditional succeeds.  You
  can nest conditional groups inside other conditional groups, but they
! must be completely nested.  In other words, '#endif' always matches the
! nearest '#ifdef' (or '#ifndef', or '#if').  Also, you cannot start a
  conditional group in one file and end it in another.
  
     Even if a conditional fails, the CONTROLLED TEXT inside it is still
--- 2922,2937 ----
  
       #endif /* MACRO */
  
!    This block is called a â€œconditional groupâ€�.  CONTROLLED TEXT will be
  included in the output of the preprocessor if and only if MACRO is
! defined.  We say that the conditional â€œsucceedsâ€� if MACRO is defined,
! â€œfailsâ€� if it is not.
  
     The CONTROLLED TEXT inside of a conditional can include preprocessing
  directives.  They are executed only if the conditional succeeds.  You
  can nest conditional groups inside other conditional groups, but they
! must be completely nested.  In other words, â€˜#endifâ€™ always matches the
! nearest â€˜#ifdefâ€™ (or â€˜#ifndefâ€™, or â€˜#ifâ€™).  Also, you cannot start a
  conditional group in one file and end it in another.
  
     Even if a conditional fails, the CONTROLLED TEXT inside it is still
*************** must all be lexically valid C.  Normally
*** 2940,2971 ****
  that all comments and string literals inside a failing conditional group
  must still be properly ended.
  
!    The comment following the '#endif' is not required, but it is a good
  practice if there is a lot of CONTROLLED TEXT, because it helps people
! match the '#endif' to the corresponding '#ifdef'.  Older programs
! sometimes put MACRO directly after the '#endif' without enclosing it in
  a comment.  This is invalid code according to the C standard.  CPP
! accepts it with a warning.  It never affects which '#ifndef' the
! '#endif' matches.
  
     Sometimes you wish to use some code if a macro is _not_ defined.  You
! can do this by writing '#ifndef' instead of '#ifdef'.  One common use of
! '#ifndef' is to include code only the first time a header file is
  included.  *Note Once-Only Headers::.
  
     Macro definitions can vary between compilations for several reasons.
  Here are some samples.
  
!    * Some macros are predefined on each kind of machine (*note
       System-specific Predefined Macros::).  This allows you to provide
       code specially tuned for a particular machine.
  
!    * System header files define more macros, associated with the
       features they implement.  You can test these macros with
       conditionals to avoid using a system feature on a machine where it
       is not implemented.
  
!    * Macros can be defined or undefined with the '-D' and '-U'
       command-line options when you compile the program.  You can arrange
       to compile the same source file into two different programs by
       choosing a macro name to specify which program you want, writing
--- 2940,2971 ----
  that all comments and string literals inside a failing conditional group
  must still be properly ended.
  
!    The comment following the â€˜#endifâ€™ is not required, but it is a good
  practice if there is a lot of CONTROLLED TEXT, because it helps people
! match the â€˜#endifâ€™ to the corresponding â€˜#ifdefâ€™.  Older programs
! sometimes put MACRO directly after the â€˜#endifâ€™ without enclosing it in
  a comment.  This is invalid code according to the C standard.  CPP
! accepts it with a warning.  It never affects which â€˜#ifndefâ€™ the
! â€˜#endifâ€™ matches.
  
     Sometimes you wish to use some code if a macro is _not_ defined.  You
! can do this by writing â€˜#ifndefâ€™ instead of â€˜#ifdefâ€™.  One common use of
! â€˜#ifndefâ€™ is to include code only the first time a header file is
  included.  *Note Once-Only Headers::.
  
     Macro definitions can vary between compilations for several reasons.
  Here are some samples.
  
!    â€¢ Some macros are predefined on each kind of machine (*note
       System-specific Predefined Macros::).  This allows you to provide
       code specially tuned for a particular machine.
  
!    â€¢ System header files define more macros, associated with the
       features they implement.  You can test these macros with
       conditionals to avoid using a system feature on a machine where it
       is not implemented.
  
!    â€¢ Macros can be defined or undefined with the â€˜-Dâ€™ and â€˜-Uâ€™
       command-line options when you compile the program.  You can arrange
       to compile the same source file into two different programs by
       choosing a macro name to specify which program you want, writing
*************** Here are some samples.
*** 2973,2983 ****
       controlling the state of the macro with command-line options,
       perhaps set in the Makefile.  *Note Invocation::.
  
!    * Your program might have a special header file (often called
!      'config.h') that is adjusted when the program is compiled.  It can
       define or not define macros depending on the features of the system
       and the desired capabilities of the program.  The adjustment can be
!      automated by a tool such as 'autoconf', or done by hand.
  
  
  File: cpp.info,  Node: If,  Next: Defined,  Prev: Ifdef,  Up: Conditional Syntax
--- 2973,2983 ----
       controlling the state of the macro with command-line options,
       perhaps set in the Makefile.  *Note Invocation::.
  
!    â€¢ Your program might have a special header file (often called
!      â€˜config.hâ€™) that is adjusted when the program is compiled.  It can
       define or not define macros depending on the features of the system
       and the desired capabilities of the program.  The adjustment can be
!      automated by a tool such as â€˜autoconfâ€™, or done by hand.
  
  
  File: cpp.info,  Node: If,  Next: Defined,  Prev: Ifdef,  Up: Conditional Syntax
*************** File: cpp.info,  Node: If,  Next: Define
*** 2985,2991 ****
  4.2.2 If
  --------
  
! The '#if' directive allows you to test the value of an arithmetic
  expression, rather than the mere existence of one macro.  Its syntax is
  
       #if EXPRESSION
--- 2985,2991 ----
  4.2.2 If
  --------
  
! The â€˜#ifâ€™ directive allows you to test the value of an arithmetic
  expression, rather than the mere existence of one macro.  Its syntax is
  
       #if EXPRESSION
*************** expression, rather than the mere existen
*** 2997,3032 ****
     EXPRESSION is a C expression of integer type, subject to stringent
  restrictions.  It may contain
  
!    * Integer constants.
  
!    * Character constants, which are interpreted as they would be in
       normal code.
  
!    * Arithmetic operators for addition, subtraction, multiplication,
       division, bitwise operations, shifts, comparisons, and logical
!      operations ('&&' and '||').  The latter two obey the usual
       short-circuiting rules of standard C.
  
!    * Macros.  All macros in the expression are expanded before actual
       computation of the expression's value begins.
  
!    * Uses of the 'defined' operator, which lets you check whether macros
!      are defined in the middle of an '#if'.
  
!    * Identifiers that are not macros, which are all considered to be the
!      number zero.  This allows you to write '#if MACRO' instead of
!      '#ifdef MACRO', if you know that MACRO, when defined, will always
       have a nonzero value.  Function-like macros used without their
       function call parentheses are also treated as zero.
  
!      In some contexts this shortcut is undesirable.  The '-Wundef'
       option causes GCC to warn whenever it encounters an identifier
!      which is not a macro in an '#if'.
  
     The preprocessor does not know anything about types in the language.
! Therefore, 'sizeof' operators are not recognized in '#if', and neither
! are 'enum' constants.  They will be taken as identifiers which are not
! macros, and replaced by zero.  In the case of 'sizeof', this is likely
  to cause the expression to be invalid.
  
     The preprocessor calculates the value of EXPRESSION.  It carries out
--- 2997,3032 ----
     EXPRESSION is a C expression of integer type, subject to stringent
  restrictions.  It may contain
  
!    â€¢ Integer constants.
  
!    â€¢ Character constants, which are interpreted as they would be in
       normal code.
  
!    â€¢ Arithmetic operators for addition, subtraction, multiplication,
       division, bitwise operations, shifts, comparisons, and logical
!      operations (â€˜&&â€™ and â€˜||â€™).  The latter two obey the usual
       short-circuiting rules of standard C.
  
!    â€¢ Macros.  All macros in the expression are expanded before actual
       computation of the expression's value begins.
  
!    â€¢ Uses of the â€˜definedâ€™ operator, which lets you check whether macros
!      are defined in the middle of an â€˜#ifâ€™.
  
!    â€¢ Identifiers that are not macros, which are all considered to be the
!      number zero.  This allows you to write â€˜#if MACROâ€™ instead of
!      â€˜#ifdef MACROâ€™, if you know that MACRO, when defined, will always
       have a nonzero value.  Function-like macros used without their
       function call parentheses are also treated as zero.
  
!      In some contexts this shortcut is undesirable.  The â€˜-Wundefâ€™
       option causes GCC to warn whenever it encounters an identifier
!      which is not a macro in an â€˜#ifâ€™.
  
     The preprocessor does not know anything about types in the language.
! Therefore, â€˜sizeofâ€™ operators are not recognized in â€˜#ifâ€™, and neither
! are â€˜enumâ€™ constants.  They will be taken as identifiers which are not
! macros, and replaced by zero.  In the case of â€˜sizeofâ€™, this is likely
  to cause the expression to be invalid.
  
     The preprocessor calculates the value of EXPRESSION.  It carries out
*************** all calculations in the widest integer t
*** 3034,3040 ****
  most machines supported by GCC this is 64 bits.  This is not the same
  rule as the compiler uses to calculate the value of a constant
  expression, and may give different results in some cases.  If the value
! comes out to be nonzero, the '#if' succeeds and the CONTROLLED TEXT is
  included; otherwise it is skipped.
  
  
--- 3034,3040 ----
  most machines supported by GCC this is 64 bits.  This is not the same
  rule as the compiler uses to calculate the value of a constant
  expression, and may give different results in some cases.  If the value
! comes out to be nonzero, the â€˜#ifâ€™ succeeds and the CONTROLLED TEXT is
  included; otherwise it is skipped.
  
  
*************** File: cpp.info,  Node: Defined,  Next: E
*** 3043,3077 ****
  4.2.3 Defined
  -------------
  
! The special operator 'defined' is used in '#if' and '#elif' expressions
! to test whether a certain name is defined as a macro.  'defined NAME'
! and 'defined (NAME)' are both expressions whose value is 1 if NAME is
  defined as a macro at the current point in the program, and 0 otherwise.
! Thus, '#if defined MACRO' is precisely equivalent to '#ifdef MACRO'.
  
!    'defined' is useful when you wish to test more than one macro for
  existence at once.  For example,
  
       #if defined (__vax__) || defined (__ns16000__)
  
! would succeed if either of the names '__vax__' or '__ns16000__' is
  defined as a macro.
  
     Conditionals written like this:
  
       #if defined BUFSIZE && BUFSIZE >= 1024
  
! can generally be simplified to just '#if BUFSIZE >= 1024', since if
! 'BUFSIZE' is not defined, it will be interpreted as having the value
  zero.
  
!    If the 'defined' operator appears as a result of a macro expansion,
  the C standard says the behavior is undefined.  GNU cpp treats it as a
! genuine 'defined' operator and evaluates it normally.  It will warn
  wherever your code uses this feature if you use the command-line option
! '-Wpedantic', since other compilers may handle it differently.  The
! warning is also enabled by '-Wextra', and can also be enabled
! individually with '-Wexpansion-to-defined'.
  
  
  File: cpp.info,  Node: Else,  Next: Elif,  Prev: Defined,  Up: Conditional Syntax
--- 3043,3077 ----
  4.2.3 Defined
  -------------
  
! The special operator â€˜definedâ€™ is used in â€˜#ifâ€™ and â€˜#elifâ€™ expressions
! to test whether a certain name is defined as a macro.  â€˜defined NAMEâ€™
! and â€˜defined (NAME)â€™ are both expressions whose value is 1 if NAME is
  defined as a macro at the current point in the program, and 0 otherwise.
! Thus, â€˜#if defined MACROâ€™ is precisely equivalent to â€˜#ifdef MACROâ€™.
  
!    â€˜definedâ€™ is useful when you wish to test more than one macro for
  existence at once.  For example,
  
       #if defined (__vax__) || defined (__ns16000__)
  
! would succeed if either of the names â€˜__vax__â€™ or â€˜__ns16000__â€™ is
  defined as a macro.
  
     Conditionals written like this:
  
       #if defined BUFSIZE && BUFSIZE >= 1024
  
! can generally be simplified to just â€˜#if BUFSIZE >= 1024â€™, since if
! â€˜BUFSIZEâ€™ is not defined, it will be interpreted as having the value
  zero.
  
!    If the â€˜definedâ€™ operator appears as a result of a macro expansion,
  the C standard says the behavior is undefined.  GNU cpp treats it as a
! genuine â€˜definedâ€™ operator and evaluates it normally.  It will warn
  wherever your code uses this feature if you use the command-line option
! â€˜-Wpedanticâ€™, since other compilers may handle it differently.  The
! warning is also enabled by â€˜-Wextraâ€™, and can also be enabled
! individually with â€˜-Wexpansion-to-definedâ€™.
  
  
  File: cpp.info,  Node: Else,  Next: Elif,  Prev: Defined,  Up: Conditional Syntax
*************** File: cpp.info,  Node: Else,  Next: Elif
*** 3079,3085 ****
  4.2.4 Else
  ----------
  
! The '#else' directive can be added to a conditional to provide
  alternative text to be used if the condition fails.  This is what it
  looks like:
  
--- 3079,3085 ----
  4.2.4 Else
  ----------
  
! The â€˜#elseâ€™ directive can be added to a conditional to provide
  alternative text to be used if the condition fails.  This is what it
  looks like:
  
*************** looks like:
*** 3092,3098 ****
  If EXPRESSION is nonzero, the TEXT-IF-TRUE is included and the
  TEXT-IF-FALSE is skipped.  If EXPRESSION is zero, the opposite happens.
  
!    You can use '#else' with '#ifdef' and '#ifndef', too.
  
  
  File: cpp.info,  Node: Elif,  Next: __has_attribute,  Prev: Else,  Up: Conditional Syntax
--- 3092,3098 ----
  If EXPRESSION is nonzero, the TEXT-IF-TRUE is included and the
  TEXT-IF-FALSE is skipped.  If EXPRESSION is zero, the opposite happens.
  
!    You can use â€˜#elseâ€™ with â€˜#ifdefâ€™ and â€˜#ifndefâ€™, too.
  
  
  File: cpp.info,  Node: Elif,  Next: __has_attribute,  Prev: Else,  Up: Conditional Syntax
*************** two possible alternatives.  For example,
*** 3113,3119 ****
       #endif /* X != 2 */
       #endif /* X != 1 */
  
!    Another conditional directive, '#elif', allows this to be abbreviated
  as follows:
  
       #if X == 1
--- 3113,3119 ----
       #endif /* X != 2 */
       #endif /* X != 1 */
  
!    Another conditional directive, â€˜#elifâ€™, allows this to be abbreviated
  as follows:
  
       #if X == 1
*************** as follows:
*** 3124,3159 ****
       ...
       #endif /* X != 2 and X != 1*/
  
!    '#elif' stands for "else if".  Like '#else', it goes in the middle of
  a conditional group and subdivides it; it does not require a matching
! '#endif' of its own.  Like '#if', the '#elif' directive includes an
! expression to be tested.  The text following the '#elif' is processed
! only if the original '#if'-condition failed and the '#elif' condition
  succeeds.
  
!    More than one '#elif' can go in the same conditional group.  Then the
! text after each '#elif' is processed only if the '#elif' condition
! succeeds after the original '#if' and all previous '#elif' directives
  within it have failed.
  
!    '#else' is allowed after any number of '#elif' directives, but
! '#elif' may not follow '#else'.
  
  
  File: cpp.info,  Node: __has_attribute,  Next: __has_cpp_attribute,  Prev: Elif,  Up: Conditional Syntax
  
! 4.2.6 '__has_attribute'
  -----------------------
  
! The special operator '__has_attribute (OPERAND)' may be used in '#if'
! and '#elif' expressions to test whether the attribute referenced by its
  OPERAND is recognized by GCC. Using the operator in other contexts is
  not valid.  In C code, if compiling for strict conformance to standards
  before C23, OPERAND must be a valid identifier.  Otherwise, OPERAND may
! be optionally introduced by the 'ATTRIBUTE-SCOPE::' prefix.  The
  ATTRIBUTE-SCOPE prefix identifies the "namespace" within which the
! attribute is recognized.  The scope of GCC attributes is 'gnu' or
! '__gnu__'.  The '__has_attribute' operator by itself, without any
  OPERAND or parentheses, acts as a predefined macro so that support for
  it can be tested in portable code.  Thus, the recommended use of the
  operator is as follows:
--- 3124,3159 ----
       ...
       #endif /* X != 2 and X != 1*/
  
!    â€˜#elifâ€™ stands for "else if".  Like â€˜#elseâ€™, it goes in the middle of
  a conditional group and subdivides it; it does not require a matching
! â€˜#endifâ€™ of its own.  Like â€˜#ifâ€™, the â€˜#elifâ€™ directive includes an
! expression to be tested.  The text following the â€˜#elifâ€™ is processed
! only if the original â€˜#ifâ€™-condition failed and the â€˜#elifâ€™ condition
  succeeds.
  
!    More than one â€˜#elifâ€™ can go in the same conditional group.  Then the
! text after each â€˜#elifâ€™ is processed only if the â€˜#elifâ€™ condition
! succeeds after the original â€˜#ifâ€™ and all previous â€˜#elifâ€™ directives
  within it have failed.
  
!    â€˜#elseâ€™ is allowed after any number of â€˜#elifâ€™ directives, but
! â€˜#elifâ€™ may not follow â€˜#elseâ€™.
  
  
  File: cpp.info,  Node: __has_attribute,  Next: __has_cpp_attribute,  Prev: Elif,  Up: Conditional Syntax
  
! 4.2.6 â€˜__has_attributeâ€™
  -----------------------
  
! The special operator â€˜__has_attribute (OPERAND)â€™ may be used in â€˜#ifâ€™
! and â€˜#elifâ€™ expressions to test whether the attribute referenced by its
  OPERAND is recognized by GCC. Using the operator in other contexts is
  not valid.  In C code, if compiling for strict conformance to standards
  before C23, OPERAND must be a valid identifier.  Otherwise, OPERAND may
! be optionally introduced by the â€˜ATTRIBUTE-SCOPE::â€™ prefix.  The
  ATTRIBUTE-SCOPE prefix identifies the "namespace" within which the
! attribute is recognized.  The scope of GCC attributes is â€˜gnuâ€™ or
! â€˜__gnu__â€™.  The â€˜__has_attributeâ€™ operator by itself, without any
  OPERAND or parentheses, acts as a predefined macro so that support for
  it can be tested in portable code.  Thus, the recommended use of the
  operator is as follows:
*************** operator is as follows:
*** 3164,3172 ****
       #  endif
       #endif
  
!    The first '#if' test succeeds only when the operator is supported by
  the version of GCC (or another compiler) being used.  Only when that
! test succeeds is it valid to use '__has_attribute' as a preprocessor
  operator.  As a result, combining the two tests into a single expression
  as shown below would only be valid with a compiler that supports the
  operator but not with others that don't.
--- 3164,3172 ----
       #  endif
       #endif
  
!    The first â€˜#ifâ€™ test succeeds only when the operator is supported by
  the version of GCC (or another compiler) being used.  Only when that
! test succeeds is it valid to use â€˜__has_attributeâ€™ as a preprocessor
  operator.  As a result, combining the two tests into a single expression
  as shown below would only be valid with a compiler that supports the
  operator but not with others that don't.
*************** operator but not with others that don't.
*** 3178,3192 ****
  
  File: cpp.info,  Node: __has_cpp_attribute,  Next: __has_c_attribute,  Prev: __has_attribute,  Up: Conditional Syntax
  
! 4.2.7 '__has_cpp_attribute'
  ---------------------------
  
! The special operator '__has_cpp_attribute (OPERAND)' may be used in
! '#if' and '#elif' expressions in C++ code to test whether the attribute
! referenced by its OPERAND is recognized by GCC. '__has_cpp_attribute
! (OPERAND)' is equivalent to '__has_attribute (OPERAND)' except that when
  OPERAND designates a supported standard attribute it evaluates to an
! integer constant of the form 'YYYYMM' indicating the year and month when
  the attribute was first introduced into the C++ standard.  For
  additional information including the dates of the introduction of
  current standard attributes, see
--- 3178,3192 ----
  
  File: cpp.info,  Node: __has_cpp_attribute,  Next: __has_c_attribute,  Prev: __has_attribute,  Up: Conditional Syntax
  
! 4.2.7 â€˜__has_cpp_attributeâ€™
  ---------------------------
  
! The special operator â€˜__has_cpp_attribute (OPERAND)â€™ may be used in
! â€˜#ifâ€™ and â€˜#elifâ€™ expressions in C++ code to test whether the attribute
! referenced by its OPERAND is recognized by GCC. â€˜__has_cpp_attribute
! (OPERAND)â€™ is equivalent to â€˜__has_attribute (OPERAND)â€™ except that when
  OPERAND designates a supported standard attribute it evaluates to an
! integer constant of the form â€˜YYYYMMâ€™ indicating the year and month when
  the attribute was first introduced into the C++ standard.  For
  additional information including the dates of the introduction of
  current standard attributes, see
*************** SD-6: SG10 Feature Test Recommendations
*** 3195,3227 ****
  
  File: cpp.info,  Node: __has_c_attribute,  Next: __has_builtin,  Prev: __has_cpp_attribute,  Up: Conditional Syntax
  
! 4.2.8 '__has_c_attribute'
  -------------------------
  
! The special operator '__has_c_attribute (OPERAND)' may be used in '#if'
! and '#elif' expressions in C code to test whether the attribute
  referenced by its OPERAND is recognized by GCC in attributes using the
! '[[]]' syntax.  GNU attributes must be specified with the scope 'gnu' or
! '__gnu__' with '__has_c_attribute'.  When OPERAND designates a supported
  standard attribute it evaluates to an integer constant of the form
! 'YYYYMM' indicating the year and month when the attribute was first
  introduced into the C standard, or when the syntax of operands to the
  attribute was extended in the C standard.
  
  
  File: cpp.info,  Node: __has_builtin,  Next: __has_feature,  Prev: __has_c_attribute,  Up: Conditional Syntax
  
! 4.2.9 '__has_builtin'
  ---------------------
  
! The special operator '__has_builtin (OPERAND)' may be used in constant
! integer contexts and in preprocessor '#if' and '#elif' expressions to
  test whether the symbol named by its OPERAND is recognized as a built-in
  function by GCC in the current language and conformance mode.  It
  evaluates to a constant integer with a nonzero value if the argument
  refers to such a function, and to zero otherwise.  The operator may also
! be used in preprocessor '#if' and '#elif' expressions.  The
! '__has_builtin' operator by itself, without any OPERAND or parentheses,
  acts as a predefined macro so that support for it can be tested in
  portable code.  Thus, the recommended use of the operator is as follows:
  
--- 3195,3227 ----
  
  File: cpp.info,  Node: __has_c_attribute,  Next: __has_builtin,  Prev: __has_cpp_attribute,  Up: Conditional Syntax
  
! 4.2.8 â€˜__has_c_attributeâ€™
  -------------------------
  
! The special operator â€˜__has_c_attribute (OPERAND)â€™ may be used in â€˜#ifâ€™
! and â€˜#elifâ€™ expressions in C code to test whether the attribute
  referenced by its OPERAND is recognized by GCC in attributes using the
! â€˜[[]]â€™ syntax.  GNU attributes must be specified with the scope â€˜gnuâ€™ or
! â€˜__gnu__â€™ with â€˜__has_c_attributeâ€™.  When OPERAND designates a supported
  standard attribute it evaluates to an integer constant of the form
! â€˜YYYYMMâ€™ indicating the year and month when the attribute was first
  introduced into the C standard, or when the syntax of operands to the
  attribute was extended in the C standard.
  
  
  File: cpp.info,  Node: __has_builtin,  Next: __has_feature,  Prev: __has_c_attribute,  Up: Conditional Syntax
  
! 4.2.9 â€˜__has_builtinâ€™
  ---------------------
  
! The special operator â€˜__has_builtin (OPERAND)â€™ may be used in constant
! integer contexts and in preprocessor â€˜#ifâ€™ and â€˜#elifâ€™ expressions to
  test whether the symbol named by its OPERAND is recognized as a built-in
  function by GCC in the current language and conformance mode.  It
  evaluates to a constant integer with a nonzero value if the argument
  refers to such a function, and to zero otherwise.  The operator may also
! be used in preprocessor â€˜#ifâ€™ and â€˜#elifâ€™ expressions.  The
! â€˜__has_builtinâ€™ operator by itself, without any OPERAND or parentheses,
  acts as a predefined macro so that support for it can be tested in
  portable code.  Thus, the recommended use of the operator is as follows:
  
*************** portable code.  Thus, the recommended us
*** 3237,3253 ****
  
  File: cpp.info,  Node: __has_feature,  Next: __has_extension,  Prev: __has_builtin,  Up: Conditional Syntax
  
! 4.2.10 '__has_feature'
  ----------------------
  
! The special operator '__has_feature (OPERAND)' may be used in constant
! integer contexts and in preprocessor '#if' and '#elif' expressions to
  test whether the identifier given in OPERAND is recognized as a feature
  supported by GCC given the current options and, in the case of standard
  language features, whether the feature is available in the chosen
  version of the language standard.
  
!    Note that '__has_feature' and '__has_extension' are not recommended
  for use in new code, and are only provided for compatibility with Clang.
  For details of which identifiers are accepted by these function-like
  macros, see
--- 3237,3253 ----
  
  File: cpp.info,  Node: __has_feature,  Next: __has_extension,  Prev: __has_builtin,  Up: Conditional Syntax
  
! 4.2.10 â€˜__has_featureâ€™
  ----------------------
  
! The special operator â€˜__has_feature (OPERAND)â€™ may be used in constant
! integer contexts and in preprocessor â€˜#ifâ€™ and â€˜#elifâ€™ expressions to
  test whether the identifier given in OPERAND is recognized as a feature
  supported by GCC given the current options and, in the case of standard
  language features, whether the feature is available in the chosen
  version of the language standard.
  
!    Note that â€˜__has_featureâ€™ and â€˜__has_extensionâ€™ are not recommended
  for use in new code, and are only provided for compatibility with Clang.
  For details of which identifiers are accepted by these function-like
  macros, see
*************** the Clang documentation (https://clang.l
*** 3256,3277 ****
  
  File: cpp.info,  Node: __has_extension,  Next: __has_include,  Prev: __has_feature,  Up: Conditional Syntax
  
! 4.2.11 '__has_extension'
  ------------------------
  
! The special operator '__has_extension (OPERAND)' may be used in constant
! integer contexts and in preprocessor '#if' and '#elif' expressions to
  test whether the identifier given in OPERAND is recognized as an
  extension supported by GCC given the current options.  In any given
! context, the features accepted by '__has_extension' are a strict
! superset of those accepted by '__has_feature'.  Unlike '__has_feature',
! '__has_extension' tests whether a given feature is available regardless
  of strict language standards conformance.
  
!    If the '-pedantic-errors' flag is given, '__has_extension' is
! equivalent to '__has_feature'.
  
!    Note that '__has_feature' and '__has_extension' are not recommended
  for use in new code, and are only provided for compatibility with Clang.
  For details of which identifiers are accepted by these function-like
  macros, see
--- 3256,3277 ----
  
  File: cpp.info,  Node: __has_extension,  Next: __has_include,  Prev: __has_feature,  Up: Conditional Syntax
  
! 4.2.11 â€˜__has_extensionâ€™
  ------------------------
  
! The special operator â€˜__has_extension (OPERAND)â€™ may be used in constant
! integer contexts and in preprocessor â€˜#ifâ€™ and â€˜#elifâ€™ expressions to
  test whether the identifier given in OPERAND is recognized as an
  extension supported by GCC given the current options.  In any given
! context, the features accepted by â€˜__has_extensionâ€™ are a strict
! superset of those accepted by â€˜__has_featureâ€™.  Unlike â€˜__has_featureâ€™,
! â€˜__has_extensionâ€™ tests whether a given feature is available regardless
  of strict language standards conformance.
  
!    If the â€˜-pedantic-errorsâ€™ flag is given, â€˜__has_extensionâ€™ is
! equivalent to â€˜__has_featureâ€™.
  
!    Note that â€˜__has_featureâ€™ and â€˜__has_extensionâ€™ are not recommended
  for use in new code, and are only provided for compatibility with Clang.
  For details of which identifiers are accepted by these function-like
  macros, see
*************** the Clang documentation (https://clang.l
*** 3280,3301 ****
  
  File: cpp.info,  Node: __has_include,  Next: __has_embed,  Prev: __has_extension,  Up: Conditional Syntax
  
! 4.2.12 '__has_include', '__has_include_next'
  --------------------------------------------
  
! The special operators '__has_include (OPERAND)' and '__has_include_next
! (OPERAND)' may be used in '#if' and '#elif' expressions to test whether
  the header referenced by their OPERAND can be included using the
! '#include' and '#include_next' directive, respectively.  Using the
  operators in other contexts is not valid.  The OPERAND takes the same
! form as the file in the '#include' and '#include_next' directives
  respectively (*note Include Syntax::) and the operators evaluate to a
  nonzero value if the header can be included and to zero otherwise.  Note
  that that the ability to include a header doesn't imply that the header
! doesn't contain invalid constructs or '#error' directives that would
  cause the preprocessor to fail.
  
!    The '__has_include' and '__has_include_next' operators by themselves,
  without any OPERAND or parentheses, act as predefined macros so that
  support for them can be tested in portable code.  Thus, the recommended
  use of the operators is as follows:
--- 3280,3301 ----
  
  File: cpp.info,  Node: __has_include,  Next: __has_embed,  Prev: __has_extension,  Up: Conditional Syntax
  
! 4.2.12 â€˜__has_includeâ€™, â€˜__has_include_nextâ€™
  --------------------------------------------
  
! The special operators â€˜__has_include (OPERAND)â€™ and â€˜__has_include_next
! (OPERAND)â€™ may be used in â€˜#ifâ€™ and â€˜#elifâ€™ expressions to test whether
  the header referenced by their OPERAND can be included using the
! â€˜#includeâ€™ and â€˜#include_nextâ€™ directive, respectively.  Using the
  operators in other contexts is not valid.  The OPERAND takes the same
! form as the file in the â€˜#includeâ€™ and â€˜#include_nextâ€™ directives
  respectively (*note Include Syntax::) and the operators evaluate to a
  nonzero value if the header can be included and to zero otherwise.  Note
  that that the ability to include a header doesn't imply that the header
! doesn't contain invalid constructs or â€˜#errorâ€™ directives that would
  cause the preprocessor to fail.
  
!    The â€˜__has_includeâ€™ and â€˜__has_include_nextâ€™ operators by themselves,
  without any OPERAND or parentheses, act as predefined macros so that
  support for them can be tested in portable code.  Thus, the recommended
  use of the operators is as follows:
*************** use of the operators is as follows:
*** 3306,3314 ****
       #  endif
       #endif
  
!    The first '#if' test succeeds only when the operator is supported by
  the version of GCC (or another compiler) being used.  Only when that
! test succeeds is it valid to use '__has_include' as a preprocessor
  operator.  As a result, combining the two tests into a single expression
  as shown below would only be valid with a compiler that supports the
  operator but not with others that don't.
--- 3306,3314 ----
       #  endif
       #endif
  
!    The first â€˜#ifâ€™ test succeeds only when the operator is supported by
  the version of GCC (or another compiler) being used.  Only when that
! test succeeds is it valid to use â€˜__has_includeâ€™ as a preprocessor
  operator.  As a result, combining the two tests into a single expression
  as shown below would only be valid with a compiler that supports the
  operator but not with others that don't.
*************** operator but not with others that don't.
*** 3317,3342 ****
       ...
       #endif
  
!    The same holds for '__has_include_next'.
  
  
  File: cpp.info,  Node: __has_embed,  Prev: __has_include,  Up: Conditional Syntax
  
! 4.2.13 '__has_embed'
  --------------------
  
! The special operator '__has_embed (OPERANDS)' may be used in '#if' and
! '#elif' expressions to test whether a binary resource specified by the
! first operand with optional '#embed' parameters can be included using
! the '#embed' directive (*note Binary Resource Inclusion::) with the same
! parameters.  The operator returns '__STDC_EMBED_NOT_FOUND__' if either
  the binary resource does not exist or at least one of the parameters is
! not supported by the implementation, '__STDC_EMBED_FOUND__' if all the
  parameters are supported and the resource is not empty and finally
! '__STDC_EMBED_EMPTY__' if all the parameters are supported and the
! resource is empty.  The support of '__has_embed' operator can be tested
! with '#ifdef' etc.  similarly to '__has_include' and the same rules on
! how to test it apply.  '__FILE__' can be often used to test if an
  implementation supports some implementation defined parameter, e.g.
  
       #ifdef __has_embed
--- 3317,3342 ----
       ...
       #endif
  
!    The same holds for â€˜__has_include_nextâ€™.
  
  
  File: cpp.info,  Node: __has_embed,  Prev: __has_include,  Up: Conditional Syntax
  
! 4.2.13 â€˜__has_embedâ€™
  --------------------
  
! The special operator â€˜__has_embed (OPERANDS)â€™ may be used in â€˜#ifâ€™ and
! â€˜#elifâ€™ expressions to test whether a binary resource specified by the
! first operand with optional â€˜#embedâ€™ parameters can be included using
! the â€˜#embedâ€™ directive (*note Binary Resource Inclusion::) with the same
! parameters.  The operator returns â€˜__STDC_EMBED_NOT_FOUND__â€™ if either
  the binary resource does not exist or at least one of the parameters is
! not supported by the implementation, â€˜__STDC_EMBED_FOUND__â€™ if all the
  parameters are supported and the resource is not empty and finally
! â€˜__STDC_EMBED_EMPTY__â€™ if all the parameters are supported and the
! resource is empty.  The support of â€˜__has_embedâ€™ operator can be tested
! with â€˜#ifdefâ€™ etc.  similarly to â€˜__has_includeâ€™ and the same rules on
! how to test it apply.  â€˜__FILE__â€™ can be often used to test if an
  implementation supports some implementation defined parameter, e.g.
  
       #ifdef __has_embed
*************** implementation supports some implementat
*** 3345,3351 ****
       #endif
       #endif
  
!    The '__has_embed' operator is not supported in the Traditional Mode
  (*note Traditional Mode::).
  
  
--- 3345,3351 ----
       #endif
       #endif
  
!    The â€˜__has_embedâ€™ operator is not supported in the Traditional Mode
  (*note Traditional Mode::).
  
  
*************** code will end the commenting-out.  The p
*** 3361,3380 ****
  syntax errors.
  
     One way to avoid this problem is to use an always-false conditional
! instead.  For instance, put '#if 0' before the deleted code and '#endif'
  after it.  This works even if the code being turned off contains
! conditionals, but they must be entire conditionals (balanced '#if' and
! '#endif').
  
!    Some people use '#ifdef notdef' instead.  This is risky, because
! 'notdef' might be accidentally defined as a macro, and then the
! conditional would succeed.  '#if 0' can be counted on to fail.
  
!    Do not use '#if 0' for comments which are not C code.  Use a real
! comment, instead.  The interior of '#if 0' must consist of complete
  tokens; in particular, single-quote characters must balance.  Comments
  often contain unbalanced single-quote characters (known in English as
! apostrophes).  These confuse '#if 0'.  They don't confuse '/*'.
  
  
  File: cpp.info,  Node: Diagnostics,  Next: Line Control,  Prev: Conditionals,  Up: Top
--- 3361,3380 ----
  syntax errors.
  
     One way to avoid this problem is to use an always-false conditional
! instead.  For instance, put â€˜#if 0â€™ before the deleted code and â€˜#endifâ€™
  after it.  This works even if the code being turned off contains
! conditionals, but they must be entire conditionals (balanced â€˜#ifâ€™ and
! â€˜#endifâ€™).
  
!    Some people use â€˜#ifdef notdefâ€™ instead.  This is risky, because
! â€˜notdefâ€™ might be accidentally defined as a macro, and then the
! conditional would succeed.  â€˜#if 0â€™ can be counted on to fail.
  
!    Do not use â€˜#if 0â€™ for comments which are not C code.  Use a real
! comment, instead.  The interior of â€˜#if 0â€™ must consist of complete
  tokens; in particular, single-quote characters must balance.  Comments
  often contain unbalanced single-quote characters (known in English as
! apostrophes).  These confuse â€˜#if 0â€™.  They don't confuse â€˜/*â€™.
  
  
  File: cpp.info,  Node: Diagnostics,  Next: Line Control,  Prev: Conditionals,  Up: Top
*************** File: cpp.info,  Node: Diagnostics,  Nex
*** 3382,3392 ****
  5 Diagnostics
  *************
  
! The directive '#error' causes the preprocessor to report a fatal error.
! The tokens forming the rest of the line following '#error' are used as
  the error message.
  
!    You would use '#error' inside of a conditional that detects a
  combination of parameters which you know the program does not properly
  support.  For example, if you know that the program will not run
  properly on a VAX, you might write
--- 3382,3392 ----
  5 Diagnostics
  *************
  
! The directive â€˜#errorâ€™ causes the preprocessor to report a fatal error.
! The tokens forming the rest of the line following â€˜#errorâ€™ are used as
  the error message.
  
!    You would use â€˜#errorâ€™ inside of a conditional that detects a
  combination of parameters which you know the program does not properly
  support.  For example, if you know that the program will not run
  properly on a VAX, you might write
*************** properly on a VAX, you might write
*** 3397,3416 ****
  
     If you have several configuration parameters that must be set up by
  the installation in a consistent way, you can use conditionals to detect
! an inconsistency and report it with '#error'.  For example,
  
       #if !defined(FOO) && defined(BAR)
       #error "BAR requires FOO."
       #endif
  
!    The directive '#warning' is like '#error', but causes the
  preprocessor to issue a warning and continue preprocessing.  The tokens
! following '#warning' are used as the warning message.
  
!    You might use '#warning' in obsolete header files, with a message
  directing the user to the header file which should be used instead.
  
!    Neither '#error' nor '#warning' macro-expands its argument.  Internal
  whitespace sequences are each replaced with a single space.  The line
  must consist of complete tokens.  It is wisest to make the argument of
  these directives be a single string constant; this avoids problems with
--- 3397,3416 ----
  
     If you have several configuration parameters that must be set up by
  the installation in a consistent way, you can use conditionals to detect
! an inconsistency and report it with â€˜#errorâ€™.  For example,
  
       #if !defined(FOO) && defined(BAR)
       #error "BAR requires FOO."
       #endif
  
!    The directive â€˜#warningâ€™ is like â€˜#errorâ€™, but causes the
  preprocessor to issue a warning and continue preprocessing.  The tokens
! following â€˜#warningâ€™ are used as the warning message.
  
!    You might use â€˜#warningâ€™ in obsolete header files, with a message
  directing the user to the header file which should be used instead.
  
!    Neither â€˜#errorâ€™ nor â€˜#warningâ€™ macro-expands its argument.  Internal
  whitespace sequences are each replaced with a single space.  The line
  must consist of complete tokens.  It is wisest to make the argument of
  these directives be a single string constant; this avoids problems with
*************** reported as having appeared on the line
*** 3429,3467 ****
  outermost macro was used.  We intend to be more accurate in the future.
  
     If you write a program which generates source code, such as the
! 'bison' parser generator, you may want to adjust the preprocessor's
  notion of the current file name and line number by hand.  Parts of the
! output from 'bison' are generated from scratch, other parts come from a
! standard parser file.  The rest are copied verbatim from 'bison''s
  input.  You would like compiler error messages and symbolic debuggers to
! be able to refer to 'bison''s input file.
  
!    'bison' or any such program can arrange this by writing '#line'
! directives into the output file.  '#line' is a directive that specifies
  the original line number and source file name for subsequent input in
! the current preprocessor input file.  '#line' has three variants:
  
! '#line LINENUM'
       LINENUM is a non-negative decimal integer constant.  It specifies
       the line number which should be reported for the following line of
       input.  Subsequent lines are counted from LINENUM.
  
! '#line LINENUM FILENAME'
       LINENUM is the same as for the first form, and has the same effect.
       In addition, FILENAME is a string constant.  The following line and
       all subsequent lines are reported to come from the file it
       specifies, until something else happens to change that.  FILENAME
       is interpreted according to the normal rules for a string constant:
       backslash escapes are interpreted.  This is different from
!      '#include'.
  
! '#line ANYTHING ELSE'
       ANYTHING ELSE is checked for macro calls, which are expanded.  The
       result should match one of the above two forms.
  
!    '#line' directives alter the results of the '__FILE__' and '__LINE__'
  predefined macros from that point on.  *Note Standard Predefined
! Macros::.  They do not have any effect on '#include''s idea of the
  directory containing the current file.
  
  
--- 3429,3467 ----
  outermost macro was used.  We intend to be more accurate in the future.
  
     If you write a program which generates source code, such as the
! â€˜bisonâ€™ parser generator, you may want to adjust the preprocessor's
  notion of the current file name and line number by hand.  Parts of the
! output from â€˜bisonâ€™ are generated from scratch, other parts come from a
! standard parser file.  The rest are copied verbatim from â€˜bisonâ€™'s
  input.  You would like compiler error messages and symbolic debuggers to
! be able to refer to â€˜bisonâ€™'s input file.
  
!    â€˜bisonâ€™ or any such program can arrange this by writing â€˜#lineâ€™
! directives into the output file.  â€˜#lineâ€™ is a directive that specifies
  the original line number and source file name for subsequent input in
! the current preprocessor input file.  â€˜#lineâ€™ has three variants:
  
! â€˜#line LINENUMâ€™
       LINENUM is a non-negative decimal integer constant.  It specifies
       the line number which should be reported for the following line of
       input.  Subsequent lines are counted from LINENUM.
  
! â€˜#line LINENUM FILENAMEâ€™
       LINENUM is the same as for the first form, and has the same effect.
       In addition, FILENAME is a string constant.  The following line and
       all subsequent lines are reported to come from the file it
       specifies, until something else happens to change that.  FILENAME
       is interpreted according to the normal rules for a string constant:
       backslash escapes are interpreted.  This is different from
!      â€˜#includeâ€™.
  
! â€˜#line ANYTHING ELSEâ€™
       ANYTHING ELSE is checked for macro calls, which are expanded.  The
       result should match one of the above two forms.
  
!    â€˜#lineâ€™ directives alter the results of the â€˜__FILE__â€™ and â€˜__LINE__â€™
  predefined macros from that point on.  *Note Standard Predefined
! Macros::.  They do not have any effect on â€˜#includeâ€™'s idea of the
  directory containing the current file.
  
  
*************** File: cpp.info,  Node: Pragmas,  Next: B
*** 3470,3505 ****
  7 Pragmas
  *********
  
! The '#pragma' directive is the method specified by the C standard for
  providing additional information to the compiler, beyond what is
  conveyed in the language itself.  The forms of this directive (commonly
! known as "pragmas") specified by C standard are prefixed with 'STDC'.  A
  C compiler is free to attach any meaning it likes to other pragmas.
! Most GNU-defined, supported pragmas have been given a 'GCC' prefix.
  
!    C99 introduced the '_Pragma' operator.  This feature addresses a
! major problem with '#pragma': being a directive, it cannot be produced
! as the result of macro expansion.  '_Pragma' is an operator, much like
! 'sizeof' or 'defined', and can be embedded in a macro.
  
!    Its syntax is '_Pragma (STRING-LITERAL)', where STRING-LITERAL can be
  either a normal or wide-character string literal.  It is destringized,
! by replacing all '\\' with a single '\' and all '\"' with a '"'.  The
  result is then processed as if it had appeared as the right hand side of
! a '#pragma' directive.  For example,
  
       _Pragma ("GCC dependency \"parse.y\"")
  
! has the same effect as '#pragma GCC dependency "parse.y"'.  The same
  effect could be achieved using macros, for example
  
       #define DO_PRAGMA(x) _Pragma (#x)
       DO_PRAGMA (GCC dependency "parse.y")
  
!    The standard is unclear on where a '_Pragma' operator can appear.
  The preprocessor does not accept it within a preprocessing conditional
! directive like '#if'.  To be safe, you are probably best keeping it out
! of directives other than '#define', and putting it on a line of its own.
  
     This manual documents the pragmas which are meaningful to the
  preprocessor itself.  Other pragmas are meaningful to the C or C++
--- 3470,3505 ----
  7 Pragmas
  *********
  
! The â€˜#pragmaâ€™ directive is the method specified by the C standard for
  providing additional information to the compiler, beyond what is
  conveyed in the language itself.  The forms of this directive (commonly
! known as â€œpragmasâ€�) specified by C standard are prefixed with â€˜STDCâ€™.  A
  C compiler is free to attach any meaning it likes to other pragmas.
! Most GNU-defined, supported pragmas have been given a â€˜GCCâ€™ prefix.
  
!    C99 introduced the â€˜_Pragmaâ€™ operator.  This feature addresses a
! major problem with â€˜#pragmaâ€™: being a directive, it cannot be produced
! as the result of macro expansion.  â€˜_Pragmaâ€™ is an operator, much like
! â€˜sizeofâ€™ or â€˜definedâ€™, and can be embedded in a macro.
  
!    Its syntax is â€˜_Pragma (STRING-LITERAL)â€™, where STRING-LITERAL can be
  either a normal or wide-character string literal.  It is destringized,
! by replacing all â€˜\\â€™ with a single â€˜\â€™ and all â€˜\"â€™ with a â€˜"â€™.  The
  result is then processed as if it had appeared as the right hand side of
! a â€˜#pragmaâ€™ directive.  For example,
  
       _Pragma ("GCC dependency \"parse.y\"")
  
! has the same effect as â€˜#pragma GCC dependency "parse.y"â€™.  The same
  effect could be achieved using macros, for example
  
       #define DO_PRAGMA(x) _Pragma (#x)
       DO_PRAGMA (GCC dependency "parse.y")
  
!    The standard is unclear on where a â€˜_Pragmaâ€™ operator can appear.
  The preprocessor does not accept it within a preprocessing conditional
! directive like â€˜#ifâ€™.  To be safe, you are probably best keeping it out
! of directives other than â€˜#defineâ€™, and putting it on a line of its own.
  
     This manual documents the pragmas which are meaningful to the
  preprocessor itself.  Other pragmas are meaningful to the C or C++
*************** compilers.  They are documented in the G
*** 3507,3514 ****
  
     GCC plugins may provide their own pragmas.
  
! '#pragma GCC dependency'
!      '#pragma GCC dependency' allows you to check the relative dates of
       the current file and another file.  If the other file is more
       recent than the current file, a warning is issued.  This is useful
       if the current file is derived from the other file, and should be
--- 3507,3514 ----
  
     GCC plugins may provide their own pragmas.
  
! â€˜#pragma GCC dependencyâ€™
!      â€˜#pragma GCC dependencyâ€™ allows you to check the relative dates of
       the current file and another file.  If the other file is more
       recent than the current file, a warning is issued.  This is useful
       if the current file is derived from the other file, and should be
*************** compilers.  They are documented in the G
*** 3519,3529 ****
            #pragma GCC dependency "parse.y"
            #pragma GCC dependency "/usr/include/time.h" rerun fixincludes
  
! '#pragma GCC poison'
       Sometimes, there is an identifier that you want to remove
       completely from your program, and make sure that it never creeps
!      back in.  To enforce this, you can "poison" the identifier with
!      this pragma.  '#pragma GCC poison' is followed by a list of
       identifiers to poison.  If any of those identifiers appears
       anywhere in the source after the directive, it is a hard error.
       For example,
--- 3519,3529 ----
            #pragma GCC dependency "parse.y"
            #pragma GCC dependency "/usr/include/time.h" rerun fixincludes
  
! â€˜#pragma GCC poisonâ€™
       Sometimes, there is an identifier that you want to remove
       completely from your program, and make sure that it never creeps
!      back in.  To enforce this, you can â€œpoisonâ€� the identifier with
!      this pragma.  â€˜#pragma GCC poisonâ€™ is followed by a list of
       identifiers to poison.  If any of those identifiers appears
       anywhere in the source after the directive, it is a hard error.
       For example,
*************** compilers.  They are documented in the G
*** 3546,3573 ****
  
       will not produce an error.
  
! '#pragma GCC system_header'
       This pragma takes no arguments.  It causes the rest of the code in
       the current file to be treated as if it came from a system header.
       *Note System Headers::.
  
! '#pragma GCC warning'
! '#pragma GCC error'
!      '#pragma GCC warning "message"' causes the preprocessor to issue a
!      warning diagnostic with the text 'message'.  The message contained
!      in the pragma must be a single string literal.  Similarly, '#pragma
!      GCC error "message"' issues an error message.  Unlike the
!      '#warning' and '#error' directives, these pragmas can be embedded
!      in preprocessor macros using '_Pragma'.
  
! '#pragma once'
!      If '#pragma once' is seen when scanning a header file, that file
       will never be read again, no matter what.  It is a less-portable
!      alternative to using '#ifndef' to guard the contents of header
       files against multiple inclusions.
  
! '#pragma region {tokens}...'
! '#pragma endregion {tokens}...'
       These pragmas are accepted, but have no effect.
  
  
--- 3546,3573 ----
  
       will not produce an error.
  
! â€˜#pragma GCC system_headerâ€™
       This pragma takes no arguments.  It causes the rest of the code in
       the current file to be treated as if it came from a system header.
       *Note System Headers::.
  
! â€˜#pragma GCC warningâ€™
! â€˜#pragma GCC errorâ€™
!      â€˜#pragma GCC warning "message"â€™ causes the preprocessor to issue a
!      warning diagnostic with the text â€˜messageâ€™.  The message contained
!      in the pragma must be a single string literal.  Similarly, â€˜#pragma
!      GCC error "message"â€™ issues an error message.  Unlike the
!      â€˜#warningâ€™ and â€˜#errorâ€™ directives, these pragmas can be embedded
!      in preprocessor macros using â€˜_Pragmaâ€™.
  
! â€˜#pragma onceâ€™
!      If â€˜#pragma onceâ€™ is seen when scanning a header file, that file
       will never be read again, no matter what.  It is a less-portable
!      alternative to using â€˜#ifndefâ€™ to guard the contents of header
       files against multiple inclusions.
  
! â€˜#pragma region {tokens}...â€™
! â€˜#pragma endregion {tokens}...â€™
       These pragmas are accepted, but have no effect.
  
  
*************** File: cpp.info,  Node: Binary Resource I
*** 3576,3640 ****
  8 Binary Resource Inclusion
  ***************************
  
! The '#embed' directive as specified in the C23 standard allows efficient
  inclusion of binary data, usually in initializers of arrays.  GCC
  supports this directive in C23 mode and as an extension in older C
  versions and in C++.
  
!    Similarly to the '#include' directive (*note Include Syntax::) the
  first argument of the directive is a filename in the same forms as
! '#include'.
  
! '#embed <FILE>'
       If FILE is an absolute filename, this includes the mentioned file,
       otherwise searches it in directories specified by the
!      '--embed-dir=' command line option for the FILE.
  
! '#embed "FILE"'
       This variant searches FILE in the same directory as the source file
!      which uses the '#embed' directive and only if not found there
!      continues searching directories specified by the '--embed-dir='
       command line option.
  
!    The '#embed' directive is expanded as if it was a sequence of integer
! literals from 0 to 'UCHAR_MAX' separated by commas, e.g. '#embed
! __FILE__ limit(4)' could act as if it expanded to '35,101,109,98'.  No
  character set conversion is performed.
  
     Optional embed parameters can be specified after the required
  filename argument.  There are either standard attributes, specified by
  an identifier or identifier prefixed and suffixed by 2 underscores (both
  treated the same), followed by parameter argument in parentheses, like
! '#embed "foo.dat" limit(1) __prefix__(32, ) suffix(, 0)' with currently
! supported standard parameters 'limit', 'prefix', 'suffix' and
! 'if_empty', or implementation defined parameters specified by a unique
! vendor prefix followed by '::' followed by name of the parameter.  GCC
! uses the 'gnu' prefix for vendor parameters and currently supports the
! 'gnu::offset' and 'gnu::base64' parameters.
  
!    The 'limit' parameter argument is a constant expression which
  specifies the maximum number of bytes included by the directive,
! 'prefix' and 'suffix' arguments are balanced token sequences which are
  prepended and appended to the integer literal sequence if that sequence
! is not empty and 'if_empty' argument is balanced token sequence which is
! used as expansion for '#embed' directive if the resource is empty.
  
!    The 'gnu::offset' parameter argument is a constant expression which
  specifies how many bytes to skip from the start of the resource.
! 'limit' is then counted from that position.
  
!    The 'gnu::base64' parameter argument is a possibly concatenated
  character string literal with base64 encoded data.  See
  <https://datatracker.ietf.org/doc/html/rfc4648#section-4>.  There should
  be no newlines in the string literal and because this parameter is meant
  namely for use by the preprocessor itself, there is no support for any
! escape sequences in the string literal argument.  If 'gnu::base64'
! parameter is specified, the 'limit' and 'gnu::offset' parameters should
! not be specified and the filename should be always '"."'.  Instead of
  reading a file the directive will decode the base64 encoded data and use
  that as the data to include.
  
!    The '#embed' directive is not supported in the Traditional Mode
  (*note Traditional Mode::).
  
  
--- 3576,3640 ----
  8 Binary Resource Inclusion
  ***************************
  
! The â€˜#embedâ€™ directive as specified in the C23 standard allows efficient
  inclusion of binary data, usually in initializers of arrays.  GCC
  supports this directive in C23 mode and as an extension in older C
  versions and in C++.
  
!    Similarly to the â€˜#includeâ€™ directive (*note Include Syntax::) the
  first argument of the directive is a filename in the same forms as
! â€˜#includeâ€™.
  
! â€˜#embed <FILE>â€™
       If FILE is an absolute filename, this includes the mentioned file,
       otherwise searches it in directories specified by the
!      â€˜--embed-dir=â€™ command line option for the FILE.
  
! â€˜#embed "FILE"â€™
       This variant searches FILE in the same directory as the source file
!      which uses the â€˜#embedâ€™ directive and only if not found there
!      continues searching directories specified by the â€˜--embed-dir=â€™
       command line option.
  
!    The â€˜#embedâ€™ directive is expanded as if it was a sequence of integer
! literals from 0 to â€˜UCHAR_MAXâ€™ separated by commas, e.g. â€˜#embed
! __FILE__ limit(4)â€™ could act as if it expanded to â€˜35,101,109,98â€™.  No
  character set conversion is performed.
  
     Optional embed parameters can be specified after the required
  filename argument.  There are either standard attributes, specified by
  an identifier or identifier prefixed and suffixed by 2 underscores (both
  treated the same), followed by parameter argument in parentheses, like
! â€˜#embed "foo.dat" limit(1) __prefix__(32, ) suffix(, 0)â€™ with currently
! supported standard parameters â€˜limitâ€™, â€˜prefixâ€™, â€˜suffixâ€™ and
! â€˜if_emptyâ€™, or implementation defined parameters specified by a unique
! vendor prefix followed by â€˜::â€™ followed by name of the parameter.  GCC
! uses the â€˜gnuâ€™ prefix for vendor parameters and currently supports the
! â€˜gnu::offsetâ€™ and â€˜gnu::base64â€™ parameters.
  
!    The â€˜limitâ€™ parameter argument is a constant expression which
  specifies the maximum number of bytes included by the directive,
! â€˜prefixâ€™ and â€˜suffixâ€™ arguments are balanced token sequences which are
  prepended and appended to the integer literal sequence if that sequence
! is not empty and â€˜if_emptyâ€™ argument is balanced token sequence which is
! used as expansion for â€˜#embedâ€™ directive if the resource is empty.
  
!    The â€˜gnu::offsetâ€™ parameter argument is a constant expression which
  specifies how many bytes to skip from the start of the resource.
! â€˜limitâ€™ is then counted from that position.
  
!    The â€˜gnu::base64â€™ parameter argument is a possibly concatenated
  character string literal with base64 encoded data.  See
  <https://datatracker.ietf.org/doc/html/rfc4648#section-4>.  There should
  be no newlines in the string literal and because this parameter is meant
  namely for use by the preprocessor itself, there is no support for any
! escape sequences in the string literal argument.  If â€˜gnu::base64â€™
! parameter is specified, the â€˜limitâ€™ and â€˜gnu::offsetâ€™ parameters should
! not be specified and the filename should be always â€˜"."â€™.  Instead of
  reading a file the directive will decode the base64 encoded data and use
  that as the data to include.
  
!    The â€˜#embedâ€™ directive is not supported in the Traditional Mode
  (*note Traditional Mode::).
  
  
*************** File: cpp.info,  Node: Other Directives,
*** 3643,3663 ****
  9 Other Directives
  ******************
  
! The '#ident' directive takes one argument, a string constant.  On some
  systems, that string constant is copied into a special segment of the
! object file.  On other systems, the directive is ignored.  The '#sccs'
! directive is a synonym for '#ident'.
  
     These directives are not part of the C standard, but they are not
  official GNU extensions either.  What historical information we have
  been able to find, suggests they originated with System V.
  
!    The "null directive" consists of a '#' followed by a newline, with
  only whitespace (including comments) in between.  A null directive is
  understood as a preprocessing directive but has no effect on the
  preprocessor output.  The primary significance of the existence of the
! null directive is that an input line consisting of just a '#' will
! produce no output, rather than a line of output containing just a '#'.
  Supposedly some old C programs contain such lines.
  
  
--- 3643,3663 ----
  9 Other Directives
  ******************
  
! The â€˜#identâ€™ directive takes one argument, a string constant.  On some
  systems, that string constant is copied into a special segment of the
! object file.  On other systems, the directive is ignored.  The â€˜#sccsâ€™
! directive is a synonym for â€˜#identâ€™.
  
     These directives are not part of the C standard, but they are not
  official GNU extensions either.  What historical information we have
  been able to find, suggests they originated with System V.
  
!    The â€œnull directiveâ€� consists of a â€˜#â€™ followed by a newline, with
  only whitespace (including comments) in between.  A null directive is
  understood as a preprocessing directive but has no effect on the
  preprocessor output.  The primary significance of the existence of the
! null directive is that an input line consisting of just a â€˜#â€™ will
! produce no output, rather than a line of output containing just a â€˜#â€™.
  Supposedly some old C programs contain such lines.
  
  
*************** the form
*** 3692,3733 ****
  
       # LINENUM FILENAME FLAGS
  
! These are called "linemarkers".  They are inserted as needed into the
  output (but never within a string or character constant).  They mean
  that the following line originated in file FILENAME at line LINENUM.
  FILENAME will never contain any non-printing characters; they are
  replaced with octal escape sequences.
  
!    After the file name comes zero or more flags, which are '1', '2',
! '3', or '4'.  If there are multiple flags, spaces separate them.  Here
  is what the flags mean:
  
! '1'
       This indicates the start of a new file.
! '2'
       This indicates returning to a file (after having included another
       file).
! '3'
       This indicates that the following text comes from a system header
       file, so certain warnings should be suppressed.
! '4'
       This indicates that the following text should be treated as being
!      wrapped in an implicit 'extern "C"' block.
  
     As an extension, the preprocessor accepts linemarkers in
  non-assembler input files.  They are treated like the corresponding
! '#line' directive, (*note Line Control::), except that trailing flags
  are permitted, and are interpreted with the meanings described above.
  If multiple flags are given, they must be in ascending order.
  
     Some directives may be duplicated in the output of the preprocessor.
! These are '#ident' (always), '#pragma' (only if the preprocessor does
! not handle the pragma itself), and '#define' and '#undef' (with certain
! debugging options).  If this happens, the '#' of the directive will
  always be in the first column, and there will be no space between the
! '#' and the directive name.  If macro expansion happens to generate
  tokens which might be mistaken for a duplicated directive, a space will
! be inserted between the '#' and the directive name.
  
  
  File: cpp.info,  Node: Traditional Mode,  Next: Implementation Details,  Prev: Preprocessor Output,  Up: Top
--- 3692,3733 ----
  
       # LINENUM FILENAME FLAGS
  
! These are called â€œlinemarkersâ€�.  They are inserted as needed into the
  output (but never within a string or character constant).  They mean
  that the following line originated in file FILENAME at line LINENUM.
  FILENAME will never contain any non-printing characters; they are
  replaced with octal escape sequences.
  
!    After the file name comes zero or more flags, which are â€˜1â€™, â€˜2â€™,
! â€˜3â€™, or â€˜4â€™.  If there are multiple flags, spaces separate them.  Here
  is what the flags mean:
  
! â€˜1â€™
       This indicates the start of a new file.
! â€˜2â€™
       This indicates returning to a file (after having included another
       file).
! â€˜3â€™
       This indicates that the following text comes from a system header
       file, so certain warnings should be suppressed.
! â€˜4â€™
       This indicates that the following text should be treated as being
!      wrapped in an implicit â€˜extern "C"â€™ block.
  
     As an extension, the preprocessor accepts linemarkers in
  non-assembler input files.  They are treated like the corresponding
! â€˜#lineâ€™ directive, (*note Line Control::), except that trailing flags
  are permitted, and are interpreted with the meanings described above.
  If multiple flags are given, they must be in ascending order.
  
     Some directives may be duplicated in the output of the preprocessor.
! These are â€˜#identâ€™ (always), â€˜#pragmaâ€™ (only if the preprocessor does
! not handle the pragma itself), and â€˜#defineâ€™ and â€˜#undefâ€™ (with certain
! debugging options).  If this happens, the â€˜#â€™ of the directive will
  always be in the first column, and there will be no space between the
! â€˜#â€™ and the directive name.  If macro expansion happens to generate
  tokens which might be mistaken for a duplicated directive, a space will
! be inserted between the â€˜#â€™ and the directive name.
  
  
  File: cpp.info,  Node: Traditional Mode,  Next: Implementation Details,  Prev: Preprocessor Output,  Up: Top
*************** File: cpp.info,  Node: Traditional Mode,
*** 3737,3743 ****
  
  Traditional (pre-standard) C preprocessing is rather different from the
  preprocessing specified by the standard.  When the preprocessor is
! invoked with the '-traditional-cpp' option, it attempts to emulate a
  traditional preprocessor.
  
     This mode is not useful for compiling C code with GCC, but is
--- 3737,3743 ----
  
  Traditional (pre-standard) C preprocessing is rather different from the
  preprocessing specified by the standard.  When the preprocessor is
! invoked with the â€˜-traditional-cppâ€™ option, it attempts to emulate a
  traditional preprocessor.
  
     This mode is not useful for compiling C code with GCC, but is
*************** the output.  In particular, hard tabs re
*** 3780,3788 ****
  useful if, for example, you are preprocessing a Makefile.
  
     Traditional CPP only recognizes C-style block comments, and treats
! the '/*' sequence as introducing a comment only if it lies outside
  quoted text.  Quoted text is introduced by the usual single and double
! quotes, and also by an initial '<' in a '#include' directive.
  
     Traditionally, comments are completely removed and are not replaced
  with a space.  Since a traditional compiler does its own tokenization of
--- 3780,3788 ----
  useful if, for example, you are preprocessing a Makefile.
  
     Traditional CPP only recognizes C-style block comments, and treats
! the â€˜/*â€™ sequence as introducing a comment only if it lies outside
  quoted text.  Quoted text is introduced by the usual single and double
! quotes, and also by an initial â€˜<â€™ in a â€˜#includeâ€™ directive.
  
     Traditionally, comments are completely removed and are not replaced
  with a space.  Since a traditional compiler does its own tokenization of
*************** re-lex its input.  For example, in
*** 3793,3799 ****
  
       #if foo/**/bar
  
! 'foo' and 'bar' are distinct identifiers and expanded separately if they
  happen to be macros.  In other words, this directive is equivalent to
  
       #if foo bar
--- 3793,3799 ----
  
       #if foo/**/bar
  
! â€˜fooâ€™ and â€˜barâ€™ are distinct identifiers and expanded separately if they
  happen to be macros.  In other words, this directive is equivalent to
  
       #if foo bar
*************** with replacement text that contains an u
*** 3808,3814 ****
  you attempt to compile preprocessed output containing an unmatched quote
  you will get a syntax error.
  
!    However, all preprocessing directives other than '#define' require
  matching quotes.  For example:
  
       #define m This macro's fine and has an unmatched quote
--- 3808,3814 ----
  you attempt to compile preprocessed output containing an unmatched quote
  you will get a syntax error.
  
!    However, all preprocessing directives other than â€˜#defineâ€™ require
  matching quotes.  For example:
  
       #define m This macro's fine and has an unmatched quote
*************** can run together with the text after the
*** 3839,3851 ****
  single token.
  
     Normally comments are removed from the replacement text after the
! macro is expanded, but if the '-CC' option is passed on the command-line
  comments are preserved.  (In fact, the current implementation removes
  comments even before saving the macro replacement text, but it careful
  to do it in such a way that the observed effect is identical even in the
  function-like macro case.)
  
!    The ISO stringizing operator '#' and token paste operator '##' have
  no special meaning.  As explained later, an effect similar to these
  operators can be obtained in a different way.  Macro names that are
  embedded in quotes, either from the main file or after macro
--- 3839,3851 ----
  single token.
  
     Normally comments are removed from the replacement text after the
! macro is expanded, but if the â€˜-CCâ€™ option is passed on the command-line
  comments are preserved.  (In fact, the current implementation removes
  comments even before saving the macro replacement text, but it careful
  to do it in such a way that the observed effect is identical even in the
  function-like macro case.)
  
!    The ISO stringizing operator â€˜#â€™ and token paste operator â€˜##â€™ have
  no special meaning.  As explained later, an effect similar to these
  operators can be obtained in a different way.  Macro names that are
  embedded in quotes, either from the main file or after macro
*************** invocation.
*** 3863,3869 ****
       #define PLUS +
       #define INC(x) PLUS+x
       INC(foo);
!           ==> ++foo;
  
     Function-like macros are similar in form but quite different in
  behavior to their ISO counterparts.  Their arguments are contained
--- 3863,3869 ----
       #define PLUS +
       #define INC(x) PLUS+x
       INC(foo);
!           â†¦ ++foo;
  
     Function-like macros are similar in form but quite different in
  behavior to their ISO counterparts.  Their arguments are contained
*************** comma or parenthesis that comes before t
*** 3874,3886 ****
  any other character.  There is no facility for handling variadic macros.
  
     This implementation removes all comments from macro arguments, unless
! the '-C' option is given.  The form of all other horizontal whitespace
  in arguments is preserved, including leading and trailing whitespace.
  In particular
  
       f( )
  
! is treated as an invocation of the macro 'f' with a single argument
  consisting of a single space.  If you want to invoke a function-like
  macro that takes no arguments, you must not leave any whitespace between
  the parentheses.
--- 3874,3886 ----
  any other character.  There is no facility for handling variadic macros.
  
     This implementation removes all comments from macro arguments, unless
! the â€˜-Câ€™ option is given.  The form of all other horizontal whitespace
  in arguments is preserved, including leading and trailing whitespace.
  In particular
  
       f( )
  
! is treated as an invocation of the macro â€˜fâ€™ with a single argument
  consisting of a single space.  If you want to invoke a function-like
  macro that takes no arguments, you must not leave any whitespace between
  the parentheses.
*************** quotes or not.  This provides a way to s
*** 3895,3901 ****
  
       #define str(x) "x"
       str(/* A comment */some text )
!           ==> "some text "
  
  Note that the comment is removed, but that the trailing space is
  preserved.  Here is an example of using a comment to effect token
--- 3895,3901 ----
  
       #define str(x) "x"
       str(/* A comment */some text )
!           â†¦ "some text "
  
  Note that the comment is removed, but that the trailing space is
  preserved.  Here is an example of using a comment to effect token
*************** pasting.
*** 3903,3909 ****
  
       #define suffix(x) foo_/**/x
       suffix(bar)
!           ==> foo_bar
  
  
  File: cpp.info,  Node: Traditional miscellany,  Next: Traditional warnings,  Prev: Traditional macros,  Up: Traditional Mode
--- 3903,3909 ----
  
       #define suffix(x) foo_/**/x
       suffix(bar)
!           â†¦ foo_bar
  
  
  File: cpp.info,  Node: Traditional miscellany,  Next: Traditional warnings,  Prev: Traditional macros,  Up: Traditional Mode
*************** File: cpp.info,  Node: Traditional misce
*** 3914,3935 ****
  Here are some things to be aware of when using the traditional
  preprocessor.
  
!    * Preprocessing directives are recognized only when their leading '#'
       appears in the first column.  There can be no whitespace between
!      the beginning of the line and the '#', but whitespace can follow
!      the '#'.
  
!    * A true traditional C preprocessor does not recognize '#error' or
!      '#pragma', and may not recognize '#elif'.  CPP supports all the
       directives in traditional mode that it supports in ISO mode,
       including extensions, with the exception that the effects of
!      '#pragma GCC poison' are undefined.
  
!    * __STDC__ is not defined.
  
!    * If you use digraphs the behavior is undefined.
  
!    * If a line that looks like a directive appears within macro
       arguments, the behavior is undefined.
  
  
--- 3914,3935 ----
  Here are some things to be aware of when using the traditional
  preprocessor.
  
!    â€¢ Preprocessing directives are recognized only when their leading â€˜#â€™
       appears in the first column.  There can be no whitespace between
!      the beginning of the line and the â€˜#â€™, but whitespace can follow
!      the â€˜#â€™.
  
!    â€¢ A true traditional C preprocessor does not recognize â€˜#errorâ€™ or
!      â€˜#pragmaâ€™, and may not recognize â€˜#elifâ€™.  CPP supports all the
       directives in traditional mode that it supports in ISO mode,
       including extensions, with the exception that the effects of
!      â€˜#pragma GCC poisonâ€™ are undefined.
  
!    â€¢ __STDC__ is not defined.
  
!    â€¢ If you use digraphs the behavior is undefined.
  
!    â€¢ If a line that looks like a directive appears within macro
       arguments, the behavior is undefined.
  
  
*************** File: cpp.info,  Node: Traditional warni
*** 3939,3976 ****
  =========================
  
  You can request warnings about features that did not exist, or worked
! differently, in traditional C with the '-Wtraditional' option.  GCC does
  not warn about features of ISO C which you must use when you are using a
! conforming compiler, such as the '#' and '##' operators.
  
!    Presently '-Wtraditional' warns about:
  
!    * Macro parameters that appear within string literals in the macro
       body.  In traditional C macro replacement takes place within string
       literals, but does not in ISO C.
  
!    * In traditional C, some preprocessor directives did not exist.
       Traditional preprocessors would only consider a line to be a
!      directive if the '#' appeared in column 1 on the line.  Therefore
!      '-Wtraditional' warns about directives that traditional C
!      understands but would ignore because the '#' does not appear as the
       first character on the line.  It also suggests you hide directives
!      like '#pragma' not understood by traditional C by indenting them.
!      Some traditional implementations would not recognize '#elif', so it
       suggests avoiding it altogether.
  
!    * A function-like macro that appears without an argument list.  In
       some traditional preprocessors this was an error.  In ISO C it
       merely means that the macro is not expanded.
  
!    * The unary plus operator.  This did not exist in traditional C.
  
!    * The 'U' and 'LL' integer constant suffixes, which were not
!      available in traditional C.  (Traditional C does support the 'L'
       suffix for simple long integer constants.)  You are not warned
       about uses of these suffixes in macros defined in system headers.
!      For instance, 'UINT_MAX' may well be defined as '4294967295U', but
!      you will not be warned if you use 'UINT_MAX'.
  
       You can usually avoid the warning, and the related warning about
       constants which are so large that they are unsigned, by writing the
--- 3939,3976 ----
  =========================
  
  You can request warnings about features that did not exist, or worked
! differently, in traditional C with the â€˜-Wtraditionalâ€™ option.  GCC does
  not warn about features of ISO C which you must use when you are using a
! conforming compiler, such as the â€˜#â€™ and â€˜##â€™ operators.
  
!    Presently â€˜-Wtraditionalâ€™ warns about:
  
!    â€¢ Macro parameters that appear within string literals in the macro
       body.  In traditional C macro replacement takes place within string
       literals, but does not in ISO C.
  
!    â€¢ In traditional C, some preprocessor directives did not exist.
       Traditional preprocessors would only consider a line to be a
!      directive if the â€˜#â€™ appeared in column 1 on the line.  Therefore
!      â€˜-Wtraditionalâ€™ warns about directives that traditional C
!      understands but would ignore because the â€˜#â€™ does not appear as the
       first character on the line.  It also suggests you hide directives
!      like â€˜#pragmaâ€™ not understood by traditional C by indenting them.
!      Some traditional implementations would not recognize â€˜#elifâ€™, so it
       suggests avoiding it altogether.
  
!    â€¢ A function-like macro that appears without an argument list.  In
       some traditional preprocessors this was an error.  In ISO C it
       merely means that the macro is not expanded.
  
!    â€¢ The unary plus operator.  This did not exist in traditional C.
  
!    â€¢ The â€˜Uâ€™ and â€˜LLâ€™ integer constant suffixes, which were not
!      available in traditional C.  (Traditional C does support the â€˜Lâ€™
       suffix for simple long integer constants.)  You are not warned
       about uses of these suffixes in macros defined in system headers.
!      For instance, â€˜UINT_MAXâ€™ may well be defined as â€˜4294967295Uâ€™, but
!      you will not be warned if you use â€˜UINT_MAXâ€™.
  
       You can usually avoid the warning, and the related warning about
       constants which are so large that they are unsigned, by writing the
*************** File: cpp.info,  Node: Implementation-de
*** 4004,4023 ****
  ====================================
  
  This is how CPP behaves in all the cases which the C standard describes
! as "implementation-defined".  This term means that the implementation is
  free to do what it likes, but must document its choice and stick to it.
  
!    * The mapping of physical source file multi-byte characters to the
       execution character set.
  
       The input character set can be specified using the
!      '-finput-charset' option, while the execution character set may be
!      controlled using the '-fexec-charset' and '-fwide-exec-charset'
       options.
  
!    * Identifier characters.
  
!      The C and C++ standards allow identifiers to be composed of '_' and
       the alphanumeric characters.  C++ also allows universal character
       names.  C99 and later C standards permit both universal character
       names and implementation-defined characters.  In both C and C++
--- 4004,4023 ----
  ====================================
  
  This is how CPP behaves in all the cases which the C standard describes
! as â€œimplementation-definedâ€�.  This term means that the implementation is
  free to do what it likes, but must document its choice and stick to it.
  
!    â€¢ The mapping of physical source file multi-byte characters to the
       execution character set.
  
       The input character set can be specified using the
!      â€˜-finput-charsetâ€™ option, while the execution character set may be
!      controlled using the â€˜-fexec-charsetâ€™ and â€˜-fwide-exec-charsetâ€™
       options.
  
!    â€¢ Identifier characters.
  
!      The C and C++ standards allow identifiers to be composed of â€˜_â€™ and
       the alphanumeric characters.  C++ also allows universal character
       names.  C99 and later C standards permit both universal character
       names and implementation-defined characters.  In both C and C++
*************** free to do what it likes, but must docum
*** 4025,4044 ****
       that correspond to universal character names permitted by the
       chosen standard.
  
!      GCC allows the '$' character in identifiers as an extension for
!      most targets.  This is true regardless of the 'std=' switch, since
       this extension cannot conflict with standards-conforming programs.
       When preprocessing assembler, however, dollars are not identifier
       characters by default.
  
!      Currently the targets that by default do not permit '$' are AVR,
       IP2K, MMIX, MIPS Irix 3, ARM aout, and PowerPC targets for the AIX
       operating system.
  
!      You can override the default with '-fdollars-in-identifiers' or
!      '-fno-dollars-in-identifiers'.  *Note fdollars-in-identifiers::.
  
!    * Non-empty sequences of whitespace characters.
  
       In textual output, each whitespace sequence is collapsed to a
       single space.  For aesthetic reasons, the first token on each
--- 4025,4044 ----
       that correspond to universal character names permitted by the
       chosen standard.
  
!      GCC allows the â€˜$â€™ character in identifiers as an extension for
!      most targets.  This is true regardless of the â€˜std=â€™ switch, since
       this extension cannot conflict with standards-conforming programs.
       When preprocessing assembler, however, dollars are not identifier
       characters by default.
  
!      Currently the targets that by default do not permit â€˜$â€™ are AVR,
       IP2K, MMIX, MIPS Irix 3, ARM aout, and PowerPC targets for the AIX
       operating system.
  
!      You can override the default with â€˜-fdollars-in-identifiersâ€™ or
!      â€˜-fno-dollars-in-identifiersâ€™.  *Note fdollars-in-identifiers::.
  
!    â€¢ Non-empty sequences of whitespace characters.
  
       In textual output, each whitespace sequence is collapsed to a
       single space.  For aesthetic reasons, the first token on each
*************** free to do what it likes, but must docum
*** 4046,4088 ****
       that it appears in the same column as it did in the original source
       file.
  
!    * The numeric value of character constants in preprocessor
       expressions.
  
       The preprocessor and compiler interpret character constants in the
!      same way; i.e. escape sequences such as '\a' are given the values
       they would have on the target machine.
  
       The compiler evaluates a multi-character character constant a
       character at a time, shifting the previous value left by the number
       of bits per target character, and then or-ing in the bit-pattern of
       the new character truncated to the width of a target character.
!      The final bit-pattern is given type 'int', and is therefore signed,
       regardless of whether single characters are signed or not.  If
       there are more characters in the constant than would fit in the
!      target 'int' the compiler issues a warning, and the excess leading
       characters are ignored.
  
!      For example, ''ab'' for a target with an 8-bit 'char' would be
       interpreted as
!      '(int) ((unsigned char) 'a' * 256 + (unsigned char) 'b')', and
!      ''\234a'' as
!      '(int) ((unsigned char) '\234' * 256 + (unsigned char) 'a')'.
  
!    * Source file inclusion.
  
       For a discussion on how the preprocessor locates header files,
       *note Include Operation::.
  
!    * Interpretation of the filename resulting from a macro-expanded
!      '#include' directive.
  
       *Note Computed Includes::.
  
!    * Treatment of a '#pragma' directive that after macro-expansion
       results in a standard pragma.
  
!      No macro expansion occurs on any '#pragma' directive line, so the
       question does not arise.
  
       Note that GCC does not yet implement any of the standard pragmas.
--- 4046,4088 ----
       that it appears in the same column as it did in the original source
       file.
  
!    â€¢ The numeric value of character constants in preprocessor
       expressions.
  
       The preprocessor and compiler interpret character constants in the
!      same way; i.e. escape sequences such as â€˜\aâ€™ are given the values
       they would have on the target machine.
  
       The compiler evaluates a multi-character character constant a
       character at a time, shifting the previous value left by the number
       of bits per target character, and then or-ing in the bit-pattern of
       the new character truncated to the width of a target character.
!      The final bit-pattern is given type â€˜intâ€™, and is therefore signed,
       regardless of whether single characters are signed or not.  If
       there are more characters in the constant than would fit in the
!      target â€˜intâ€™ the compiler issues a warning, and the excess leading
       characters are ignored.
  
!      For example, â€˜'ab'â€™ for a target with an 8-bit â€˜charâ€™ would be
       interpreted as
!      â€˜(int) ((unsigned char) 'a' * 256 + (unsigned char) 'b')â€™, and
!      â€˜'\234a'â€™ as
!      â€˜(int) ((unsigned char) '\234' * 256 + (unsigned char) 'a')â€™.
  
!    â€¢ Source file inclusion.
  
       For a discussion on how the preprocessor locates header files,
       *note Include Operation::.
  
!    â€¢ Interpretation of the filename resulting from a macro-expanded
!      â€˜#includeâ€™ directive.
  
       *Note Computed Includes::.
  
!    â€¢ Treatment of a â€˜#pragmaâ€™ directive that after macro-expansion
       results in a standard pragma.
  
!      No macro expansion occurs on any â€˜#pragmaâ€™ directive line, so the
       question does not arise.
  
       Note that GCC does not yet implement any of the standard pragmas.
*************** and all the others known.  It is intende
*** 4099,4150 ****
  limits as possible.  If you encounter an undocumented or inconvenient
  limit, please report that as a bug.  *Note Reporting Bugs: (gcc)Bugs.
  
!    Where we say something is limited "only by available memory", that
  means that internal data structures impose no intrinsic limit, and space
! is allocated with 'malloc' or equivalent.  The actual limit will
  therefore depend on many things, such as the size of other things
  allocated by the compiler at the same time, the amount of memory
  consumed by other processes on the same computer, etc.
  
!    * Nesting levels of '#include' files.
  
       We impose an arbitrary limit of 200 levels, to avoid runaway
       recursion.  The standard requires at least 15 levels.
  
!    * Nesting levels of conditional inclusion.
  
       The C standard mandates this be at least 63.  CPP is limited only
       by available memory.
  
!    * Levels of parenthesized expressions within a full expression.
  
       The C standard requires this to be at least 63.  In preprocessor
       conditional expressions, it is limited only by available memory.
  
!    * Significant initial characters in an identifier or macro name.
  
       The preprocessor treats all characters as significant.  The C
       standard requires only that the first 63 be significant.
  
!    * Number of macros simultaneously defined in a single translation
       unit.
  
       The standard requires at least 4095 be possible.  CPP is limited
       only by available memory.
  
!    * Number of parameters in a macro definition and arguments in a macro
       call.
  
!      We allow 'USHRT_MAX', which is no smaller than 65,535.  The minimum
       required by the standard is 127.
  
!    * Number of characters on a logical source line.
  
       The C standard requires a minimum of 4096 be permitted.  CPP places
       no limits on this, but you may get incorrect column numbers
       reported in diagnostics for lines longer than 65,535 characters.
  
!    * Maximum size of a source file.
  
       The standard does not specify any lower limit on the maximum size
       of a source file.  GNU cpp maps files into memory, so it is limited
--- 4099,4150 ----
  limits as possible.  If you encounter an undocumented or inconvenient
  limit, please report that as a bug.  *Note Reporting Bugs: (gcc)Bugs.
  
!    Where we say something is limited â€œonly by available memoryâ€�, that
  means that internal data structures impose no intrinsic limit, and space
! is allocated with â€˜mallocâ€™ or equivalent.  The actual limit will
  therefore depend on many things, such as the size of other things
  allocated by the compiler at the same time, the amount of memory
  consumed by other processes on the same computer, etc.
  
!    â€¢ Nesting levels of â€˜#includeâ€™ files.
  
       We impose an arbitrary limit of 200 levels, to avoid runaway
       recursion.  The standard requires at least 15 levels.
  
!    â€¢ Nesting levels of conditional inclusion.
  
       The C standard mandates this be at least 63.  CPP is limited only
       by available memory.
  
!    â€¢ Levels of parenthesized expressions within a full expression.
  
       The C standard requires this to be at least 63.  In preprocessor
       conditional expressions, it is limited only by available memory.
  
!    â€¢ Significant initial characters in an identifier or macro name.
  
       The preprocessor treats all characters as significant.  The C
       standard requires only that the first 63 be significant.
  
!    â€¢ Number of macros simultaneously defined in a single translation
       unit.
  
       The standard requires at least 4095 be possible.  CPP is limited
       only by available memory.
  
!    â€¢ Number of parameters in a macro definition and arguments in a macro
       call.
  
!      We allow â€˜USHRT_MAXâ€™, which is no smaller than 65,535.  The minimum
       required by the standard is 127.
  
!    â€¢ Number of characters on a logical source line.
  
       The C standard requires a minimum of 4096 be permitted.  CPP places
       no limits on this, but you may get incorrect column numbers
       reported in diagnostics for lines longer than 65,535 characters.
  
!    â€¢ Maximum size of a source file.
  
       The standard does not specify any lower limit on the maximum size
       of a source file.  GNU cpp maps files into memory, so it is limited
*************** plan to remove the feature in a future v
*** 4165,4171 ****
  12.3.1 Assertions
  -----------------
  
! "Assertions" are a deprecated alternative to macros in writing
  conditionals to test what sort of computer or system the compiled
  program will run on.  Assertions are usually predefined, but you can
  define them with preprocessing directives or command-line options.
--- 4165,4171 ----
  12.3.1 Assertions
  -----------------
  
! â€œAssertionsâ€� are a deprecated alternative to macros in writing
  conditionals to test what sort of computer or system the compiled
  program will run on.  Assertions are usually predefined, but you can
  define them with preprocessing directives or command-line options.
*************** PREDICATE must be a single identifier.
*** 4186,4197 ****
  tokens; all characters are significant except for leading and trailing
  whitespace, and differences in internal whitespace sequences are
  ignored.  (This is similar to the rules governing macro redefinition.)
! Thus, '(x + y)' is different from '(x+y)' but equivalent to '( x + y )'.
  Parentheses do not nest inside an answer.
  
!    To test an assertion, you write it in an '#if'.  For example, this
! conditional succeeds if either 'vax' or 'ns16000' has been asserted as
! an answer for 'machine'.
  
       #if #machine (vax) || #machine (ns16000)
  
--- 4186,4197 ----
  tokens; all characters are significant except for leading and trailing
  whitespace, and differences in internal whitespace sequences are
  ignored.  (This is similar to the rules governing macro redefinition.)
! Thus, â€˜(x + y)â€™ is different from â€˜(x+y)â€™ but equivalent to â€˜( x + y )â€™.
  Parentheses do not nest inside an answer.
  
!    To test an assertion, you write it in an â€˜#ifâ€™.  For example, this
! conditional succeeds if either â€˜vaxâ€™ or â€˜ns16000â€™ has been asserted as
! an answer for â€˜machineâ€™.
  
       #if #machine (vax) || #machine (ns16000)
  
*************** omitting the answer in the conditional:
*** 4200,4207 ****
  
       #if #machine
  
!    Assertions are made with the '#assert' directive.  Its sole argument
! is the assertion to make, without the leading '#' that identifies
  assertions in conditionals.
  
       #assert PREDICATE (ANSWER)
--- 4200,4207 ----
  
       #if #machine
  
!    Assertions are made with the â€˜#assertâ€™ directive.  Its sole argument
! is the assertion to make, without the leading â€˜#â€™ that identifies
  assertions in conditionals.
  
       #assert PREDICATE (ANSWER)
*************** answers.  Subsequent assertions do not o
*** 4211,4225 ****
  same predicate.  All the answers for any given predicate are
  simultaneously true.
  
!    Assertions can be canceled with the '#unassert' directive.  It has
! the same syntax as '#assert'.  In that form it cancels only the answer
! which was specified on the '#unassert' line; other answers for that
  predicate remain true.  You can cancel an entire predicate by leaving
  out the answer:
  
       #unassert PREDICATE
  
! In either form, if no such assertion has been made, '#unassert' has no
  effect.
  
     You can also make or cancel assertions using command-line options.
--- 4211,4225 ----
  same predicate.  All the answers for any given predicate are
  simultaneously true.
  
!    Assertions can be canceled with the â€˜#unassertâ€™ directive.  It has
! the same syntax as â€˜#assertâ€™.  In that form it cancels only the answer
! which was specified on the â€˜#unassertâ€™ line; other answers for that
  predicate remain true.  You can cancel an entire predicate by leaving
  out the answer:
  
       #unassert PREDICATE
  
! In either form, if no such assertion has been made, â€˜#unassertâ€™ has no
  effect.
  
     You can also make or cancel assertions using command-line options.
*************** File: cpp.info,  Node: Invocation,  Next
*** 4234,4278 ****
  Most often when you use the C preprocessor you do not have to invoke it
  explicitly: the C compiler does so automatically.  However, the
  preprocessor is sometimes useful on its own.  You can invoke the
! preprocessor either with the 'cpp' command, or via 'gcc -E'.  In GCC,
  the preprocessor is actually integrated with the compiler rather than a
  separate program, and both of these commands invoke GCC and tell it to
  stop after the preprocessing phase.
  
!    The 'cpp' options listed here are also accepted by 'gcc' and have the
! same meaning.  Likewise the 'cpp' command accepts all the usual 'gcc'
  driver options, although those pertaining to compilation phases after
  preprocessing are ignored.
  
     Only options specific to preprocessing behavior are documented here.
  Refer to the GCC manual for full documentation of other driver options.
  
!    The 'cpp' command expects two file names as arguments, INFILE and
  OUTFILE.  The preprocessor reads INFILE together with any other files it
! specifies with '#include'.  All the output generated by the combined
  input files is written in OUTFILE.
  
!    Either INFILE or OUTFILE may be '-', which as INFILE means to read
  from standard input and as OUTFILE means to write to standard output.
! If either file is omitted, it means the same as if '-' had been
! specified for that file.  You can also use the '-o OUTFILE' option to
  specify the output file.
  
!    Unless otherwise noted, or the option ends in '=', all options which
  take an argument may have that argument appear either immediately after
! the option, or with a space between option and argument: '-Ifoo' and '-I
! foo' have the same effect.
  
     Many options have multi-letter names; therefore multiple
! single-letter options may _not_ be grouped: '-dM' is very different from
! '-d -M'.
  
! '-D NAME'
!      Predefine NAME as a macro, with definition '1'.
  
! '-D NAME=DEFINITION'
       The contents of DEFINITION are tokenized and processed as if they
!      appeared during translation phase three in a '#define' directive.
       In particular, the definition is truncated by embedded newline
       characters.
  
--- 4234,4278 ----
  Most often when you use the C preprocessor you do not have to invoke it
  explicitly: the C compiler does so automatically.  However, the
  preprocessor is sometimes useful on its own.  You can invoke the
! preprocessor either with the â€˜cppâ€™ command, or via â€˜gcc -Eâ€™.  In GCC,
  the preprocessor is actually integrated with the compiler rather than a
  separate program, and both of these commands invoke GCC and tell it to
  stop after the preprocessing phase.
  
!    The â€˜cppâ€™ options listed here are also accepted by â€˜gccâ€™ and have the
! same meaning.  Likewise the â€˜cppâ€™ command accepts all the usual â€˜gccâ€™
  driver options, although those pertaining to compilation phases after
  preprocessing are ignored.
  
     Only options specific to preprocessing behavior are documented here.
  Refer to the GCC manual for full documentation of other driver options.
  
!    The â€˜cppâ€™ command expects two file names as arguments, INFILE and
  OUTFILE.  The preprocessor reads INFILE together with any other files it
! specifies with â€˜#includeâ€™.  All the output generated by the combined
  input files is written in OUTFILE.
  
!    Either INFILE or OUTFILE may be â€˜-â€™, which as INFILE means to read
  from standard input and as OUTFILE means to write to standard output.
! If either file is omitted, it means the same as if â€˜-â€™ had been
! specified for that file.  You can also use the â€˜-o OUTFILEâ€™ option to
  specify the output file.
  
!    Unless otherwise noted, or the option ends in â€˜=â€™, all options which
  take an argument may have that argument appear either immediately after
! the option, or with a space between option and argument: â€˜-Ifooâ€™ and â€˜-I
! fooâ€™ have the same effect.
  
     Many options have multi-letter names; therefore multiple
! single-letter options may _not_ be grouped: â€˜-dMâ€™ is very different from
! â€˜-d -Mâ€™.
  
! â€˜-D NAMEâ€™
!      Predefine NAME as a macro, with definition â€˜1â€™.
  
! â€˜-D NAME=DEFINITIONâ€™
       The contents of DEFINITION are tokenized and processed as if they
!      appeared during translation phase three in a â€˜#defineâ€™ directive.
       In particular, the definition is truncated by embedded newline
       characters.
  
*************** single-letter options may _not_ be group
*** 4283,4394 ****
       If you wish to define a function-like macro on the command line,
       write its argument list with surrounding parentheses before the
       equals sign (if any).  Parentheses are meaningful to most shells,
!      so you should quote the option.  With 'sh' and 'csh',
!      '-D'NAME(ARGS...)=DEFINITION'' works.
  
!      '-D' and '-U' options are processed in the order they are given on
!      the command line.  All '-imacros FILE' and '-include FILE' options
!      are processed after all '-D' and '-U' options.
  
! '-U NAME'
       Cancel any previous definition of NAME, either built in or provided
!      with a '-D' option.
  
! '-include FILE'
!      Process FILE as if '#include "file"' appeared as the first line of
       the primary source file.  However, the first directory searched for
       FILE is the preprocessor's working directory _instead of_ the
       directory containing the main source file.  If not found there, it
!      is searched for in the remainder of the '#include "..."' search
       chain as normal.
  
!      If multiple '-include' options are given, the files are included in
       the order they appear on the command line.
  
! '-imacros FILE'
!      Exactly like '-include', except that any output produced by
       scanning FILE is thrown away.  Macros it defines remain defined.
       This allows you to acquire all the macros from a header without
       also processing its declarations.
  
!      All files specified by '-imacros' are processed before all files
!      specified by '-include'.
  
! '-undef'
       Do not predefine any system-specific or GCC-specific macros.  The
       standard predefined macros remain defined.  *Note Standard
       Predefined Macros::.
  
! '-pthread'
       Define additional macros required for using the POSIX threads
       library.  You should use this option consistently for both
       compilation and linking.  This option is supported on GNU/Linux
       targets, most other Unix derivatives, and also on x86 Cygwin and
       MinGW targets.
  
! '-M'
       Instead of outputting the result of preprocessing, output a rule
!      suitable for 'make' describing the dependencies of the main source
!      file.  The preprocessor outputs one 'make' rule containing the
       object file name for that source file, a colon, and the names of
!      all the included files, including those coming from '-include' or
!      '-imacros' command-line options.
  
!      Unless specified explicitly (with '-MT' or '-MQ'), the object file
       name consists of the name of the source file with any suffix
       replaced with object file suffix and with any leading directory
       parts removed.  If there are many included files then the rule is
!      split into several lines using '\'-newline.  The rule has no
       commands.
  
       This option does not suppress the preprocessor's debug output, such
!      as '-dM'.  To avoid mixing such debug output with the dependency
       rules you should explicitly specify the dependency output file with
!      '-MF', or use an environment variable like 'DEPENDENCIES_OUTPUT'
       (*note Environment Variables::).  Debug output is still sent to the
       regular output stream as normal.
  
!      Passing '-M' to the driver implies '-E', and suppresses warnings
!      with an implicit '-w'.
  
! '-MM'
!      Like '-M' but do not mention header files that are found in system
       header directories, nor header files that are included, directly or
       indirectly, from such a header.
  
       This implies that the choice of angle brackets or double quotes in
!      an '#include' directive does not in itself determine whether that
!      header appears in '-MM' dependency output.
  
! '-MF FILE'
!      When used with '-M' or '-MM', specifies a file to write the
!      dependencies to.  If no '-MF' switch is given the preprocessor
       sends the rules to the same place it would send preprocessed
       output.
  
!      When used with the driver options '-MD' or '-MMD', '-MF' overrides
       the default dependency output file.
  
!      If FILE is '-', then the dependencies are written to 'stdout'.
  
! '-MG'
!      In conjunction with an option such as '-M' requesting dependency
!      generation, '-MG' assumes missing header files are generated files
       and adds them to the dependency list without raising an error.  The
!      dependency filename is taken directly from the '#include' directive
!      without prepending any path.  '-MG' also suppresses preprocessed
       output, as a missing header file renders this useless.
  
       This feature is used in automatic updating of makefiles.
  
! '-Mno-modules'
       Disable dependency generation for compiled module interfaces.
  
! '-MP'
       This option instructs CPP to add a phony target for each dependency
       other than the main file, causing each to depend on nothing.  These
!      dummy rules work around errors 'make' gives if you remove header
!      files without updating the 'Makefile' to match.
  
       This is typical output:
  
--- 4283,4394 ----
       If you wish to define a function-like macro on the command line,
       write its argument list with surrounding parentheses before the
       equals sign (if any).  Parentheses are meaningful to most shells,
!      so you should quote the option.  With â€˜shâ€™ and â€˜cshâ€™,
!      â€˜-D'NAME(ARGS...)=DEFINITION'â€™ works.
  
!      â€˜-Dâ€™ and â€˜-Uâ€™ options are processed in the order they are given on
!      the command line.  All â€˜-imacros FILEâ€™ and â€˜-include FILEâ€™ options
!      are processed after all â€˜-Dâ€™ and â€˜-Uâ€™ options.
  
! â€˜-U NAMEâ€™
       Cancel any previous definition of NAME, either built in or provided
!      with a â€˜-Dâ€™ option.
  
! â€˜-include FILEâ€™
!      Process FILE as if â€˜#include "file"â€™ appeared as the first line of
       the primary source file.  However, the first directory searched for
       FILE is the preprocessor's working directory _instead of_ the
       directory containing the main source file.  If not found there, it
!      is searched for in the remainder of the â€˜#include "..."â€™ search
       chain as normal.
  
!      If multiple â€˜-includeâ€™ options are given, the files are included in
       the order they appear on the command line.
  
! â€˜-imacros FILEâ€™
!      Exactly like â€˜-includeâ€™, except that any output produced by
       scanning FILE is thrown away.  Macros it defines remain defined.
       This allows you to acquire all the macros from a header without
       also processing its declarations.
  
!      All files specified by â€˜-imacrosâ€™ are processed before all files
!      specified by â€˜-includeâ€™.
  
! â€˜-undefâ€™
       Do not predefine any system-specific or GCC-specific macros.  The
       standard predefined macros remain defined.  *Note Standard
       Predefined Macros::.
  
! â€˜-pthreadâ€™
       Define additional macros required for using the POSIX threads
       library.  You should use this option consistently for both
       compilation and linking.  This option is supported on GNU/Linux
       targets, most other Unix derivatives, and also on x86 Cygwin and
       MinGW targets.
  
! â€˜-Mâ€™
       Instead of outputting the result of preprocessing, output a rule
!      suitable for â€˜makeâ€™ describing the dependencies of the main source
!      file.  The preprocessor outputs one â€˜makeâ€™ rule containing the
       object file name for that source file, a colon, and the names of
!      all the included files, including those coming from â€˜-includeâ€™ or
!      â€˜-imacrosâ€™ command-line options.
  
!      Unless specified explicitly (with â€˜-MTâ€™ or â€˜-MQâ€™), the object file
       name consists of the name of the source file with any suffix
       replaced with object file suffix and with any leading directory
       parts removed.  If there are many included files then the rule is
!      split into several lines using â€˜\â€™-newline.  The rule has no
       commands.
  
       This option does not suppress the preprocessor's debug output, such
!      as â€˜-dMâ€™.  To avoid mixing such debug output with the dependency
       rules you should explicitly specify the dependency output file with
!      â€˜-MFâ€™, or use an environment variable like â€˜DEPENDENCIES_OUTPUTâ€™
       (*note Environment Variables::).  Debug output is still sent to the
       regular output stream as normal.
  
!      Passing â€˜-Mâ€™ to the driver implies â€˜-Eâ€™, and suppresses warnings
!      with an implicit â€˜-wâ€™.
  
! â€˜-MMâ€™
!      Like â€˜-Mâ€™ but do not mention header files that are found in system
       header directories, nor header files that are included, directly or
       indirectly, from such a header.
  
       This implies that the choice of angle brackets or double quotes in
!      an â€˜#includeâ€™ directive does not in itself determine whether that
!      header appears in â€˜-MMâ€™ dependency output.
  
! â€˜-MF FILEâ€™
!      When used with â€˜-Mâ€™ or â€˜-MMâ€™, specifies a file to write the
!      dependencies to.  If no â€˜-MFâ€™ switch is given the preprocessor
       sends the rules to the same place it would send preprocessed
       output.
  
!      When used with the driver options â€˜-MDâ€™ or â€˜-MMDâ€™, â€˜-MFâ€™ overrides
       the default dependency output file.
  
!      If FILE is â€˜-â€™, then the dependencies are written to â€˜stdoutâ€™.
  
! â€˜-MGâ€™
!      In conjunction with an option such as â€˜-Mâ€™ requesting dependency
!      generation, â€˜-MGâ€™ assumes missing header files are generated files
       and adds them to the dependency list without raising an error.  The
!      dependency filename is taken directly from the â€˜#includeâ€™ directive
!      without prepending any path.  â€˜-MGâ€™ also suppresses preprocessed
       output, as a missing header file renders this useless.
  
       This feature is used in automatic updating of makefiles.
  
! â€˜-Mno-modulesâ€™
       Disable dependency generation for compiled module interfaces.
  
! â€˜-MPâ€™
       This option instructs CPP to add a phony target for each dependency
       other than the main file, causing each to depend on nothing.  These
!      dummy rules work around errors â€˜makeâ€™ gives if you remove header
!      files without updating the â€˜Makefileâ€™ to match.
  
       This is typical output:
  
*************** single-letter options may _not_ be group
*** 4396,4496 ****
  
            test.h:
  
! '-MT TARGET'
  
       Change the target of the rule emitted by dependency generation.  By
       default CPP takes the name of the main input file, deletes any
!      directory components and any file suffix such as '.c', and appends
       the platform's usual object suffix.  The result is the target.
  
!      An '-MT' option sets the target to be exactly the string you
       specify.  If you want multiple targets, you can specify them as a
!      single argument to '-MT', or use multiple '-MT' options.
  
!      For example, '-MT '$(objpfx)foo.o'' might give
  
            $(objpfx)foo.o: foo.c
  
! '-MQ TARGET'
  
!      Same as '-MT', but it quotes any characters which are special to
!      Make.  '-MQ '$(objpfx)foo.o'' gives
  
            $$(objpfx)foo.o: foo.c
  
       The default target is automatically quoted, as if it were given
!      with '-MQ'.
  
! '-MD'
!      '-MD' is equivalent to '-M -MF FILE', except that '-E' is not
!      implied.  The driver determines FILE based on whether an '-o'
       option is given.  If it is, the driver uses its argument but with a
!      suffix of '.d', otherwise it takes the name of the input file,
!      removes any directory components and suffix, and applies a '.d'
       suffix.
  
!      If '-MD' is used in conjunction with '-E', any '-o' switch is
       understood to specify the dependency output file (*note -MF:
!      dashMF.), but if used without '-E', each '-o' is understood to
       specify a target object file.
  
!      Since '-E' is not implied, '-MD' can be used to generate a
       dependency output file as a side effect of the compilation process.
  
! '-MMD'
!      Like '-MD' except mention only user header files, not system header
       files.
  
! '-fpreprocessed'
       Indicate to the preprocessor that the input file has already been
       preprocessed.  This suppresses things like macro expansion,
       trigraph conversion, escaped newline splicing, and processing of
       most directives.  The preprocessor still recognizes and removes
!      comments, so that you can pass a file preprocessed with '-C' to the
       compiler without problems.  In this mode the integrated
       preprocessor is little more than a tokenizer for the front ends.
  
!      '-fpreprocessed' is implicit if the input file has one of the
!      extensions '.i', '.ii' or '.mi'.  These are the extensions that GCC
!      uses for preprocessed files created by '-save-temps'.
  
! '-fdirectives-only'
       When preprocessing, handle directives, but do not expand macros.
  
!      The option's behavior depends on the '-E' and '-fpreprocessed'
       options.
  
!      With '-E', preprocessing is limited to the handling of directives
!      such as '#define', '#ifdef', and '#error'.  Other preprocessor
       operations, such as macro expansion and trigraph conversion are not
!      performed.  In addition, the '-dD' option is implicitly enabled.
  
!      With '-fpreprocessed', predefinition of command line and most
!      builtin macros is disabled.  Macros such as '__LINE__', which are
       contextually dependent, are handled normally.  This enables
!      compilation of files previously preprocessed with '-E
!      -fdirectives-only'.
  
!      With both '-E' and '-fpreprocessed', the rules for '-fpreprocessed'
       take precedence.  This enables full preprocessing of files
!      previously preprocessed with '-E -fdirectives-only'.
  
! '-fdollars-in-identifiers'
!      Accept '$' in identifiers.  *Note Identifier characters::.
  
! '-fextended-identifiers'
       Accept universal character names and extended characters in
       identifiers.  This option is enabled by default for C99 (and later
       C standard versions) and C++.
  
! '-fno-canonical-system-headers'
       When preprocessing, do not shorten system header paths with
       canonicalization.
  
! '-fmax-include-depth=DEPTH'
       Set the maximum depth of the nested #include.  The default is 200.
  
! '-fsearch-include-path[=KIND]'
       Look for input files on the #include path, not just the current
       directory.  This is particularly useful with C++20 modules, for
       which both header units and module interface units need to be
--- 4396,4496 ----
  
            test.h:
  
! â€˜-MT TARGETâ€™
  
       Change the target of the rule emitted by dependency generation.  By
       default CPP takes the name of the main input file, deletes any
!      directory components and any file suffix such as â€˜.câ€™, and appends
       the platform's usual object suffix.  The result is the target.
  
!      An â€˜-MTâ€™ option sets the target to be exactly the string you
       specify.  If you want multiple targets, you can specify them as a
!      single argument to â€˜-MTâ€™, or use multiple â€˜-MTâ€™ options.
  
!      For example, â€˜-MT '$(objpfx)foo.o'â€™ might give
  
            $(objpfx)foo.o: foo.c
  
! â€˜-MQ TARGETâ€™
  
!      Same as â€˜-MTâ€™, but it quotes any characters which are special to
!      Make.  â€˜-MQ '$(objpfx)foo.o'â€™ gives
  
            $$(objpfx)foo.o: foo.c
  
       The default target is automatically quoted, as if it were given
!      with â€˜-MQâ€™.
  
! â€˜-MDâ€™
!      â€˜-MDâ€™ is equivalent to â€˜-M -MF FILEâ€™, except that â€˜-Eâ€™ is not
!      implied.  The driver determines FILE based on whether an â€˜-oâ€™
       option is given.  If it is, the driver uses its argument but with a
!      suffix of â€˜.dâ€™, otherwise it takes the name of the input file,
!      removes any directory components and suffix, and applies a â€˜.dâ€™
       suffix.
  
!      If â€˜-MDâ€™ is used in conjunction with â€˜-Eâ€™, any â€˜-oâ€™ switch is
       understood to specify the dependency output file (*note -MF:
!      dashMF.), but if used without â€˜-Eâ€™, each â€˜-oâ€™ is understood to
       specify a target object file.
  
!      Since â€˜-Eâ€™ is not implied, â€˜-MDâ€™ can be used to generate a
       dependency output file as a side effect of the compilation process.
  
! â€˜-MMDâ€™
!      Like â€˜-MDâ€™ except mention only user header files, not system header
       files.
  
! â€˜-fpreprocessedâ€™
       Indicate to the preprocessor that the input file has already been
       preprocessed.  This suppresses things like macro expansion,
       trigraph conversion, escaped newline splicing, and processing of
       most directives.  The preprocessor still recognizes and removes
!      comments, so that you can pass a file preprocessed with â€˜-Câ€™ to the
       compiler without problems.  In this mode the integrated
       preprocessor is little more than a tokenizer for the front ends.
  
!      â€˜-fpreprocessedâ€™ is implicit if the input file has one of the
!      extensions â€˜.iâ€™, â€˜.iiâ€™ or â€˜.miâ€™.  These are the extensions that GCC
!      uses for preprocessed files created by â€˜-save-tempsâ€™.
  
! â€˜-fdirectives-onlyâ€™
       When preprocessing, handle directives, but do not expand macros.
  
!      The option's behavior depends on the â€˜-Eâ€™ and â€˜-fpreprocessedâ€™
       options.
  
!      With â€˜-Eâ€™, preprocessing is limited to the handling of directives
!      such as â€˜#defineâ€™, â€˜#ifdefâ€™, and â€˜#errorâ€™.  Other preprocessor
       operations, such as macro expansion and trigraph conversion are not
!      performed.  In addition, the â€˜-dDâ€™ option is implicitly enabled.
  
!      With â€˜-fpreprocessedâ€™, predefinition of command line and most
!      builtin macros is disabled.  Macros such as â€˜__LINE__â€™, which are
       contextually dependent, are handled normally.  This enables
!      compilation of files previously preprocessed with â€˜-E
!      -fdirectives-onlyâ€™.
  
!      With both â€˜-Eâ€™ and â€˜-fpreprocessedâ€™, the rules for â€˜-fpreprocessedâ€™
       take precedence.  This enables full preprocessing of files
!      previously preprocessed with â€˜-E -fdirectives-onlyâ€™.
  
! â€˜-fdollars-in-identifiersâ€™
!      Accept â€˜$â€™ in identifiers.  *Note Identifier characters::.
  
! â€˜-fextended-identifiersâ€™
       Accept universal character names and extended characters in
       identifiers.  This option is enabled by default for C99 (and later
       C standard versions) and C++.
  
! â€˜-fno-canonical-system-headersâ€™
       When preprocessing, do not shorten system header paths with
       canonicalization.
  
! â€˜-fmax-include-depth=DEPTHâ€™
       Set the maximum depth of the nested #include.  The default is 200.
  
! â€˜-fsearch-include-path[=KIND]â€™
       Look for input files on the #include path, not just the current
       directory.  This is particularly useful with C++20 modules, for
       which both header units and module interface units need to be
*************** single-letter options may _not_ be group
*** 4498,4555 ****
  
            g++ -c -std=c++20 -fmodules -fsearch-include-path bits/stdc++.h bits/std.cc
  
!      KIND defaults to 'user', which looks on the '#include "..."' search
!      path; you can also explicitly specify 'system' for the '#include
!      <...>' search path.
  
! '-ftabstop=WIDTH'
       Set the distance between tab stops.  This helps the preprocessor
       report correct column numbers in warnings or errors, even if tabs
       appear on the line.  If the value is less than 1 or greater than
       100, the option is ignored.  The default is 8.
  
! '-ftrack-macro-expansion[=LEVEL]'
       Track locations of tokens across macro expansions.  This allows the
       compiler to emit diagnostic about the current macro expansion stack
       when a compilation error occurs in a macro expansion.  Using this
       option makes the preprocessor and the compiler consume more memory.
       The LEVEL parameter can be used to choose the level of precision of
       token location tracking thus decreasing the memory consumption if
!      necessary.  Value '0' of LEVEL de-activates this option.  Value '1'
       tracks tokens locations in a degraded mode for the sake of minimal
       memory overhead.  In this mode all tokens resulting from the
       expansion of an argument of a function-like macro have the same
!      location.  Value '2' tracks tokens locations completely.  This
       value is the most memory hungry.  When this option is given no
!      argument, the default parameter value is '2'.
  
!      Note that '-ftrack-macro-expansion=2' is activated by default.
  
! '-fmacro-prefix-map=OLD=NEW'
!      When preprocessing files residing in directory 'OLD', expand the
!      '__FILE__' and '__BASE_FILE__' macros as if the files resided in
!      directory 'NEW' instead.  This can be used to change an absolute
!      path to a relative path by using '.' for NEW which can result in
       more reproducible builds that are location independent.  This
!      option also affects '__builtin_FILE()' during compilation.  See
!      also '-ffile-prefix-map' and '-fcanon-prefix-map'.
  
! '-fexec-charset=CHARSET'
       Set the execution character set, used for string and character
       constants.  The default is UTF-8.  CHARSET can be any encoding
!      supported by the system's 'iconv' library routine.
  
! '-fwide-exec-charset=CHARSET'
       Set the wide execution character set, used for wide string and
       character constants.  The default is one of UTF-32BE, UTF-32LE,
       UTF-16BE, or UTF-16LE, whichever corresponds to the width of
!      'wchar_t' and the big-endian or little-endian byte order being used
!      for code generation.  As with '-fexec-charset', CHARSET can be any
!      encoding supported by the system's 'iconv' library routine;
       however, you will have problems with encodings that do not fit
!      exactly in 'wchar_t'.
  
! '-finput-charset=CHARSET'
       Set the input character set, used for translation from the
       character set of the input file to the source character set used by
       GCC.  If the locale does not specify, or GCC cannot get this
--- 4498,4555 ----
  
            g++ -c -std=c++20 -fmodules -fsearch-include-path bits/stdc++.h bits/std.cc
  
!      KIND defaults to â€˜userâ€™, which looks on the â€˜#include "..."â€™ search
!      path; you can also explicitly specify â€˜systemâ€™ for the â€˜#include
!      <...>â€™ search path.
  
! â€˜-ftabstop=WIDTHâ€™
       Set the distance between tab stops.  This helps the preprocessor
       report correct column numbers in warnings or errors, even if tabs
       appear on the line.  If the value is less than 1 or greater than
       100, the option is ignored.  The default is 8.
  
! â€˜-ftrack-macro-expansion[=LEVEL]â€™
       Track locations of tokens across macro expansions.  This allows the
       compiler to emit diagnostic about the current macro expansion stack
       when a compilation error occurs in a macro expansion.  Using this
       option makes the preprocessor and the compiler consume more memory.
       The LEVEL parameter can be used to choose the level of precision of
       token location tracking thus decreasing the memory consumption if
!      necessary.  Value â€˜0â€™ of LEVEL de-activates this option.  Value â€˜1â€™
       tracks tokens locations in a degraded mode for the sake of minimal
       memory overhead.  In this mode all tokens resulting from the
       expansion of an argument of a function-like macro have the same
!      location.  Value â€˜2â€™ tracks tokens locations completely.  This
       value is the most memory hungry.  When this option is given no
!      argument, the default parameter value is â€˜2â€™.
  
!      Note that â€˜-ftrack-macro-expansion=2â€™ is activated by default.
  
! â€˜-fmacro-prefix-map=OLD=NEWâ€™
!      When preprocessing files residing in directory â€˜OLDâ€™, expand the
!      â€˜__FILE__â€™ and â€˜__BASE_FILE__â€™ macros as if the files resided in
!      directory â€˜NEWâ€™ instead.  This can be used to change an absolute
!      path to a relative path by using â€˜.â€™ for NEW which can result in
       more reproducible builds that are location independent.  This
!      option also affects â€˜__builtin_FILE()â€™ during compilation.  See
!      also â€˜-ffile-prefix-mapâ€™ and â€˜-fcanon-prefix-mapâ€™.
  
! â€˜-fexec-charset=CHARSETâ€™
       Set the execution character set, used for string and character
       constants.  The default is UTF-8.  CHARSET can be any encoding
!      supported by the system's â€˜iconvâ€™ library routine.
  
! â€˜-fwide-exec-charset=CHARSETâ€™
       Set the wide execution character set, used for wide string and
       character constants.  The default is one of UTF-32BE, UTF-32LE,
       UTF-16BE, or UTF-16LE, whichever corresponds to the width of
!      â€˜wchar_tâ€™ and the big-endian or little-endian byte order being used
!      for code generation.  As with â€˜-fexec-charsetâ€™, CHARSET can be any
!      encoding supported by the system's â€˜iconvâ€™ library routine;
       however, you will have problems with encodings that do not fit
!      exactly in â€˜wchar_tâ€™.
  
! â€˜-finput-charset=CHARSETâ€™
       Set the input character set, used for translation from the
       character set of the input file to the source character set used by
       GCC.  If the locale does not specify, or GCC cannot get this
*************** single-letter options may _not_ be group
*** 4557,4565 ****
       overridden by either the locale or this command-line option.
       Currently the command-line option takes precedence if there's a
       conflict.  CHARSET can be any encoding supported by the system's
!      'iconv' library routine.
  
! '-fworking-directory'
       Enable generation of linemarkers in the preprocessor output that
       let the compiler know the current working directory at the time of
       preprocessing.  When this option is enabled, the preprocessor
--- 4557,4565 ----
       overridden by either the locale or this command-line option.
       Currently the command-line option takes precedence if there's a
       conflict.  CHARSET can be any encoding supported by the system's
!      â€˜iconvâ€™ library routine.
  
! â€˜-fworking-directoryâ€™
       Enable generation of linemarkers in the preprocessor output that
       let the compiler know the current working directory at the time of
       preprocessing.  When this option is enabled, the preprocessor
*************** single-letter options may _not_ be group
*** 4569,4649 ****
       directory emitted as the current working directory in some
       debugging information formats.  This option is implicitly enabled
       if debugging information is enabled, but this can be inhibited with
!      the negated form '-fno-working-directory'.  If the '-P' flag is
       present in the command line, this option has no effect, since no
!      '#line' directives are emitted whatsoever.
  
! '-A PREDICATE=ANSWER'
       Make an assertion with the predicate PREDICATE and answer ANSWER.
!      This form is preferred to the older form '-A PREDICATE(ANSWER)',
       which is still supported, because it does not use shell special
       characters.  *Note Obsolete Features::.
  
! '-A -PREDICATE=ANSWER'
       Cancel an assertion with the predicate PREDICATE and answer ANSWER.
  
! '-C'
       Do not discard comments.  All comments are passed through to the
       output file, except for comments in processed directives, which are
       deleted along with the directive.
  
!      You should be prepared for side effects when using '-C'; it causes
       the preprocessor to treat comments as tokens in their own right.
       For example, comments appearing at the start of what would be a
       directive line have the effect of turning that line into an
       ordinary source line, since the first token on the line is no
!      longer a '#'.
  
! '-CC'
       Do not discard comments, including during macro expansion.  This is
!      like '-C', except that comments contained within macros are also
       passed through to the output file where the macro is expanded.
  
!      In addition to the side effects of the '-C' option, the '-CC'
       option causes all C++-style comments inside a macro to be converted
       to C-style comments.  This is to prevent later use of that macro
       from inadvertently commenting out the remainder of the source line.
  
!      The '-CC' option is generally used to support lint comments.
  
! '-P'
       Inhibit generation of linemarkers in the output from the
       preprocessor.  This might be useful when running the preprocessor
       on something that is not C code, and will be sent to a program
       which might be confused by the linemarkers.  *Note Preprocessor
       Output::.
  
! '-traditional'
! '-traditional-cpp'
  
       Try to imitate the behavior of pre-standard C preprocessors, as
       opposed to ISO C preprocessors.  *Note Traditional Mode::.
  
       Note that GCC does not otherwise attempt to emulate a pre-standard
!      C compiler, and these options are only supported with the '-E'
       switch, or when invoking CPP explicitly.
  
! '-trigraphs'
       Support ISO C trigraphs.  These are three-character sequences, all
!      starting with '??', that are defined by ISO C to stand for single
!      characters.  For example, '??/' stands for '\', so ''??/n'' is a
       character constant for a newline.  *Note Initial processing::.
  
       By default, GCC ignores trigraphs, but in standard-conforming modes
!      it converts them.  See the '-std' and '-ansi' options.
  
! '-remap'
       Enable special code to work around file systems which only permit
       very short file names, such as MS-DOS.
  
! '-H'
       Print the name of each header file used, in addition to other
       normal activities.  Each name is indented to show how deep in the
!      '#include' stack it is.  Precompiled header files are also printed,
       even if they are found to be invalid; an invalid precompiled header
!      file is printed with '...x' and a valid one with '...!' .
  
! '-dLETTERS'
       Says to make debugging dumps during compilation as specified by
       LETTERS.  The flags documented here are those relevant to the
       preprocessor.  Other LETTERS are interpreted by the compiler
--- 4569,4649 ----
       directory emitted as the current working directory in some
       debugging information formats.  This option is implicitly enabled
       if debugging information is enabled, but this can be inhibited with
!      the negated form â€˜-fno-working-directoryâ€™.  If the â€˜-Pâ€™ flag is
       present in the command line, this option has no effect, since no
!      â€˜#lineâ€™ directives are emitted whatsoever.
  
! â€˜-A PREDICATE=ANSWERâ€™
       Make an assertion with the predicate PREDICATE and answer ANSWER.
!      This form is preferred to the older form â€˜-A PREDICATE(ANSWER)â€™,
       which is still supported, because it does not use shell special
       characters.  *Note Obsolete Features::.
  
! â€˜-A -PREDICATE=ANSWERâ€™
       Cancel an assertion with the predicate PREDICATE and answer ANSWER.
  
! â€˜-Câ€™
       Do not discard comments.  All comments are passed through to the
       output file, except for comments in processed directives, which are
       deleted along with the directive.
  
!      You should be prepared for side effects when using â€˜-Câ€™; it causes
       the preprocessor to treat comments as tokens in their own right.
       For example, comments appearing at the start of what would be a
       directive line have the effect of turning that line into an
       ordinary source line, since the first token on the line is no
!      longer a â€˜#â€™.
  
! â€˜-CCâ€™
       Do not discard comments, including during macro expansion.  This is
!      like â€˜-Câ€™, except that comments contained within macros are also
       passed through to the output file where the macro is expanded.
  
!      In addition to the side effects of the â€˜-Câ€™ option, the â€˜-CCâ€™
       option causes all C++-style comments inside a macro to be converted
       to C-style comments.  This is to prevent later use of that macro
       from inadvertently commenting out the remainder of the source line.
  
!      The â€˜-CCâ€™ option is generally used to support lint comments.
  
! â€˜-Pâ€™
       Inhibit generation of linemarkers in the output from the
       preprocessor.  This might be useful when running the preprocessor
       on something that is not C code, and will be sent to a program
       which might be confused by the linemarkers.  *Note Preprocessor
       Output::.
  
! â€˜-traditionalâ€™
! â€˜-traditional-cppâ€™
  
       Try to imitate the behavior of pre-standard C preprocessors, as
       opposed to ISO C preprocessors.  *Note Traditional Mode::.
  
       Note that GCC does not otherwise attempt to emulate a pre-standard
!      C compiler, and these options are only supported with the â€˜-Eâ€™
       switch, or when invoking CPP explicitly.
  
! â€˜-trigraphsâ€™
       Support ISO C trigraphs.  These are three-character sequences, all
!      starting with â€˜??â€™, that are defined by ISO C to stand for single
!      characters.  For example, â€˜??/â€™ stands for â€˜\â€™, so â€˜'??/n'â€™ is a
       character constant for a newline.  *Note Initial processing::.
  
       By default, GCC ignores trigraphs, but in standard-conforming modes
!      it converts them.  See the â€˜-stdâ€™ and â€˜-ansiâ€™ options.
  
! â€˜-remapâ€™
       Enable special code to work around file systems which only permit
       very short file names, such as MS-DOS.
  
! â€˜-Hâ€™
       Print the name of each header file used, in addition to other
       normal activities.  Each name is indented to show how deep in the
!      â€˜#includeâ€™ stack it is.  Precompiled header files are also printed,
       even if they are found to be invalid; an invalid precompiled header
!      file is printed with â€˜...xâ€™ and a valid one with â€˜...!â€™ .
  
! â€˜-dLETTERSâ€™
       Says to make debugging dumps during compilation as specified by
       LETTERS.  The flags documented here are those relevant to the
       preprocessor.  Other LETTERS are interpreted by the compiler
*************** single-letter options may _not_ be group
*** 4651,4708 ****
       ignored.  If you specify LETTERS whose behavior conflicts, the
       result is undefined.
  
!      '-dM'
!           Instead of the normal output, generate a list of '#define'
            directives for all the macros defined during the execution of
            the preprocessor, including predefined macros.  This gives you
            a way of finding out what is predefined in your version of the
!           preprocessor.  Assuming you have no file 'foo.h', the command
  
                 touch foo.h; cpp -dM foo.h
  
            shows all the predefined macros.
  
!      '-dD'
!           Like '-dM' except that it outputs _both_ the '#define'
            directives and the result of preprocessing.  Both kinds of
            output go to the standard output file.
  
!      '-dN'
!           Like '-dD', but emit only the macro names, not their
            expansions.
  
!      '-dI'
!           Output '#include' directives in addition to the result of
            preprocessing.
  
!      '-dU'
!           Like '-dD' except that only macros that are expanded, or whose
            definedness is tested in preprocessor directives, are output;
            the output is delayed until the use or test of the macro; and
!           '#undef' directives are also output for macros tested but
            undefined at the time.
  
! '-fdebug-cpp'
       This option is only useful for debugging GCC. When used from CPP or
!      with '-E', it dumps debugging information about location maps.
       Every token in the output is preceded by the dump of the map its
       location belongs to.
  
!      When used from GCC without '-E', this option has no effect.
  
! '-I DIR'
! '-iquote DIR'
! '-isystem DIR'
! '-idirafter DIR'
       Add the directory DIR to the list of directories to be searched for
       header files during preprocessing.  *Note Search Path::.  If DIR
!      begins with '=' or '$SYSROOT', then the '=' or '$SYSROOT' is
!      replaced by the sysroot prefix; see '--sysroot' and '-isysroot'.
  
!      Directories specified with '-iquote' apply only to the quote form
!      of the directive, '#include "FILE"'.  Directories specified with
!      '-I', '-isystem', or '-idirafter' apply to lookup for both the
!      '#include "FILE"' and '#include <FILE>' directives.
  
       You can specify any number or combination of these options on the
       command line to search for header files in several directories.
--- 4651,4708 ----
       ignored.  If you specify LETTERS whose behavior conflicts, the
       result is undefined.
  
!      â€˜-dMâ€™
!           Instead of the normal output, generate a list of â€˜#defineâ€™
            directives for all the macros defined during the execution of
            the preprocessor, including predefined macros.  This gives you
            a way of finding out what is predefined in your version of the
!           preprocessor.  Assuming you have no file â€˜foo.hâ€™, the command
  
                 touch foo.h; cpp -dM foo.h
  
            shows all the predefined macros.
  
!      â€˜-dDâ€™
!           Like â€˜-dMâ€™ except that it outputs _both_ the â€˜#defineâ€™
            directives and the result of preprocessing.  Both kinds of
            output go to the standard output file.
  
!      â€˜-dNâ€™
!           Like â€˜-dDâ€™, but emit only the macro names, not their
            expansions.
  
!      â€˜-dIâ€™
!           Output â€˜#includeâ€™ directives in addition to the result of
            preprocessing.
  
!      â€˜-dUâ€™
!           Like â€˜-dDâ€™ except that only macros that are expanded, or whose
            definedness is tested in preprocessor directives, are output;
            the output is delayed until the use or test of the macro; and
!           â€˜#undefâ€™ directives are also output for macros tested but
            undefined at the time.
  
! â€˜-fdebug-cppâ€™
       This option is only useful for debugging GCC. When used from CPP or
!      with â€˜-Eâ€™, it dumps debugging information about location maps.
       Every token in the output is preceded by the dump of the map its
       location belongs to.
  
!      When used from GCC without â€˜-Eâ€™, this option has no effect.
  
! â€˜-I DIRâ€™
! â€˜-iquote DIRâ€™
! â€˜-isystem DIRâ€™
! â€˜-idirafter DIRâ€™
       Add the directory DIR to the list of directories to be searched for
       header files during preprocessing.  *Note Search Path::.  If DIR
!      begins with â€˜=â€™ or â€˜$SYSROOTâ€™, then the â€˜=â€™ or â€˜$SYSROOTâ€™ is
!      replaced by the sysroot prefix; see â€˜--sysrootâ€™ and â€˜-isysrootâ€™.
  
!      Directories specified with â€˜-iquoteâ€™ apply only to the quote form
!      of the directive, â€˜#include "FILE"â€™.  Directories specified with
!      â€˜-Iâ€™, â€˜-isystemâ€™, or â€˜-idirafterâ€™ apply to lookup for both the
!      â€˜#include "FILE"â€™ and â€˜#include <FILE>â€™ directives.
  
       You can specify any number or combination of these options on the
       command line to search for header files in several directories.
*************** single-letter options may _not_ be group
*** 4712,4838 ****
            the current file is searched first.
  
         2. For the quote form of the include directive, the directories
!           specified by '-iquote' options are searched in left-to-right
            order, as they appear on the command line.
  
!        3. Directories specified with '-I' options are scanned in
            left-to-right order.
  
!        4. Directories specified with '-isystem' options are scanned in
            left-to-right order.
  
         5. Standard system directories are scanned.
  
!        6. Directories specified with '-idirafter' options are scanned in
            left-to-right order.
  
!      You can use '-I' to override a system header file, substituting
       your own version, since these directories are searched before the
       standard system header file directories.  However, you should not
       use this option to add directories that contain vendor-supplied
!      system header files; use '-isystem' for that.
  
!      The '-isystem' and '-idirafter' options also mark the directory as
       a system directory, so that it gets the same special treatment that
       is applied to the standard system directories.  *Note System
       Headers::.
  
       If a standard system include directory, or a directory specified
!      with '-isystem', is also specified with '-I', the '-I' option is
       ignored.  The directory is still searched but as a system directory
       at its normal position in the system include chain.  This is to
       ensure that GCC's procedure to fix buggy system headers and the
!      ordering for the '#include_next' directive are not inadvertently
       changed.  If you really need to change the search order for system
!      directories, use the '-nostdinc' and/or '-isystem' options.  *Note
       System Headers::.
  
! '-I-'
       Split the include path.  This option has been deprecated.  Please
!      use '-iquote' instead for '-I' directories before the '-I-' and
!      remove the '-I-' option.
  
!      Any directories specified with '-I' options before '-I-' are
!      searched only for headers requested with '#include "FILE"'; they
!      are not searched for '#include <FILE>'.  If additional directories
!      are specified with '-I' options after the '-I-', those directories
!      are searched for all '#include' directives.
  
!      In addition, '-I-' inhibits the use of the directory of the current
!      file directory as the first search directory for '#include "FILE"'.
!      There is no way to override this effect of '-I-'.  *Note Search
       Path::.
  
! '-iprefix PREFIX'
!      Specify PREFIX as the prefix for subsequent '-iwithprefix' options.
       If the prefix represents a directory, you should include the final
!      '/'.
  
! '-iwithprefix DIR'
! '-iwithprefixbefore DIR'
!      Append DIR to the prefix specified previously with '-iprefix', and
       add the resulting directory to the include search path.
!      '-iwithprefixbefore' puts it in the same place '-I' would;
!      '-iwithprefix' puts it where '-idirafter' would.
  
! '-isysroot DIR'
!      This option is like the '--sysroot' option, but applies only to
       header files (except for Darwin targets, where it applies to both
!      header files and libraries).  See the '--sysroot' option for more
       information.
  
! '-imultilib DIR'
       Use DIR as a subdirectory of the directory containing
       target-specific C++ headers.
  
! '-nostdinc'
       Do not search the standard system directories for header files.
!      Only the directories explicitly specified with '-I', '-iquote',
!      '-isystem', and/or '-idirafter' options (and the directory of the
       current file, if appropriate) are searched.
  
! '-nostdinc++'
       Do not search for header files in the C++-specific standard
       directories, but do still search the other standard directories.
       (This option is used when building the C++ library.)
  
! '--embed-dir=DIR'
       Append DIR directory to the list of searched directories for
!      '#embed' preprocessing directive or '__has_embed' macro.  There are
!      no default directories for '#embed'.
  
!      If DIR begins with '=' or '$SYSROOT', then the '=' or '$SYSROOT' is
!      replaced by the sysroot prefix; see '--sysroot' and '-isysroot'.
  
! '-Wcomment'
! '-Wcomments'
!      Warn whenever a comment-start sequence '/*' appears in a '/*'
!      comment, or whenever a backslash-newline appears in a '//' comment.
!      This warning is enabled by '-Wall'.
  
! '-Wtrigraphs'
       Warn if any trigraphs are encountered that might change the meaning
       of the program.  Trigraphs within comments are not warned about,
       except those that would form escaped newlines.
  
!      This option is implied by '-Wall'.  If '-Wall' is not given, this
       option is still enabled unless trigraphs are enabled.  To get
!      trigraph conversion without warnings, but get the other '-Wall'
!      warnings, use '-trigraphs -Wall -Wno-trigraphs'.
  
! '-Wundef'
!      Warn if an undefined identifier is evaluated in an '#if' directive.
       Such identifiers are replaced with zero.
  
! '-Wexpansion-to-defined'
!      Warn whenever 'defined' is encountered in the expansion of a macro
!      (including the case where the macro is expanded by an '#if'
       directive).  Such usage is not portable.  This warning is also
!      enabled by '-Wpedantic' and '-Wextra'.
  
! '-Wunused-macros'
       Warn about macros defined in the main file that are unused.  A
!      macro is "used" if it is expanded or tested for existence at least
       once.  The preprocessor also warns if the macro has not been used
       at the time it is redefined or undefined.
  
--- 4712,4838 ----
            the current file is searched first.
  
         2. For the quote form of the include directive, the directories
!           specified by â€˜-iquoteâ€™ options are searched in left-to-right
            order, as they appear on the command line.
  
!        3. Directories specified with â€˜-Iâ€™ options are scanned in
            left-to-right order.
  
!        4. Directories specified with â€˜-isystemâ€™ options are scanned in
            left-to-right order.
  
         5. Standard system directories are scanned.
  
!        6. Directories specified with â€˜-idirafterâ€™ options are scanned in
            left-to-right order.
  
!      You can use â€˜-Iâ€™ to override a system header file, substituting
       your own version, since these directories are searched before the
       standard system header file directories.  However, you should not
       use this option to add directories that contain vendor-supplied
!      system header files; use â€˜-isystemâ€™ for that.
  
!      The â€˜-isystemâ€™ and â€˜-idirafterâ€™ options also mark the directory as
       a system directory, so that it gets the same special treatment that
       is applied to the standard system directories.  *Note System
       Headers::.
  
       If a standard system include directory, or a directory specified
!      with â€˜-isystemâ€™, is also specified with â€˜-Iâ€™, the â€˜-Iâ€™ option is
       ignored.  The directory is still searched but as a system directory
       at its normal position in the system include chain.  This is to
       ensure that GCC's procedure to fix buggy system headers and the
!      ordering for the â€˜#include_nextâ€™ directive are not inadvertently
       changed.  If you really need to change the search order for system
!      directories, use the â€˜-nostdincâ€™ and/or â€˜-isystemâ€™ options.  *Note
       System Headers::.
  
! â€˜-I-â€™
       Split the include path.  This option has been deprecated.  Please
!      use â€˜-iquoteâ€™ instead for â€˜-Iâ€™ directories before the â€˜-I-â€™ and
!      remove the â€˜-I-â€™ option.
  
!      Any directories specified with â€˜-Iâ€™ options before â€˜-I-â€™ are
!      searched only for headers requested with â€˜#include "FILE"â€™; they
!      are not searched for â€˜#include <FILE>â€™.  If additional directories
!      are specified with â€˜-Iâ€™ options after the â€˜-I-â€™, those directories
!      are searched for all â€˜#includeâ€™ directives.
  
!      In addition, â€˜-I-â€™ inhibits the use of the directory of the current
!      file directory as the first search directory for â€˜#include "FILE"â€™.
!      There is no way to override this effect of â€˜-I-â€™.  *Note Search
       Path::.
  
! â€˜-iprefix PREFIXâ€™
!      Specify PREFIX as the prefix for subsequent â€˜-iwithprefixâ€™ options.
       If the prefix represents a directory, you should include the final
!      â€˜/â€™.
  
! â€˜-iwithprefix DIRâ€™
! â€˜-iwithprefixbefore DIRâ€™
!      Append DIR to the prefix specified previously with â€˜-iprefixâ€™, and
       add the resulting directory to the include search path.
!      â€˜-iwithprefixbeforeâ€™ puts it in the same place â€˜-Iâ€™ would;
!      â€˜-iwithprefixâ€™ puts it where â€˜-idirafterâ€™ would.
  
! â€˜-isysroot DIRâ€™
!      This option is like the â€˜--sysrootâ€™ option, but applies only to
       header files (except for Darwin targets, where it applies to both
!      header files and libraries).  See the â€˜--sysrootâ€™ option for more
       information.
  
! â€˜-imultilib DIRâ€™
       Use DIR as a subdirectory of the directory containing
       target-specific C++ headers.
  
! â€˜-nostdincâ€™
       Do not search the standard system directories for header files.
!      Only the directories explicitly specified with â€˜-Iâ€™, â€˜-iquoteâ€™,
!      â€˜-isystemâ€™, and/or â€˜-idirafterâ€™ options (and the directory of the
       current file, if appropriate) are searched.
  
! â€˜-nostdinc++â€™
       Do not search for header files in the C++-specific standard
       directories, but do still search the other standard directories.
       (This option is used when building the C++ library.)
  
! â€˜--embed-dir=DIRâ€™
       Append DIR directory to the list of searched directories for
!      â€˜#embedâ€™ preprocessing directive or â€˜__has_embedâ€™ macro.  There are
!      no default directories for â€˜#embedâ€™.
  
!      If DIR begins with â€˜=â€™ or â€˜$SYSROOTâ€™, then the â€˜=â€™ or â€˜$SYSROOTâ€™ is
!      replaced by the sysroot prefix; see â€˜--sysrootâ€™ and â€˜-isysrootâ€™.
  
! â€˜-Wcommentâ€™
! â€˜-Wcommentsâ€™
!      Warn whenever a comment-start sequence â€˜/*â€™ appears in a â€˜/*â€™
!      comment, or whenever a backslash-newline appears in a â€˜//â€™ comment.
!      This warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Wtrigraphsâ€™
       Warn if any trigraphs are encountered that might change the meaning
       of the program.  Trigraphs within comments are not warned about,
       except those that would form escaped newlines.
  
!      This option is implied by â€˜-Wallâ€™.  If â€˜-Wallâ€™ is not given, this
       option is still enabled unless trigraphs are enabled.  To get
!      trigraph conversion without warnings, but get the other â€˜-Wallâ€™
!      warnings, use â€˜-trigraphs -Wall -Wno-trigraphsâ€™.
  
! â€˜-Wundefâ€™
!      Warn if an undefined identifier is evaluated in an â€˜#ifâ€™ directive.
       Such identifiers are replaced with zero.
  
! â€˜-Wexpansion-to-definedâ€™
!      Warn whenever â€˜definedâ€™ is encountered in the expansion of a macro
!      (including the case where the macro is expanded by an â€˜#ifâ€™
       directive).  Such usage is not portable.  This warning is also
!      enabled by â€˜-Wpedanticâ€™ and â€˜-Wextraâ€™.
  
! â€˜-Wunused-macrosâ€™
       Warn about macros defined in the main file that are unused.  A
!      macro is â€œusedâ€� if it is expanded or tested for existence at least
       once.  The preprocessor also warns if the macro has not been used
       at the time it is redefined or undefined.
  
*************** single-letter options may _not_ be group
*** 4849,4856 ****
            #if defined the_macro_causing_the_warning
            #endif
  
! '-Wno-endif-labels'
!      Do not warn whenever an '#else' or an '#endif' are followed by
       text.  This sometimes happens in older programs with code of the
       form
  
--- 4849,4856 ----
            #if defined the_macro_causing_the_warning
            #endif
  
! â€˜-Wno-endif-labelsâ€™
!      Do not warn whenever an â€˜#elseâ€™ or an â€˜#endifâ€™ are followed by
       text.  This sometimes happens in older programs with code of the
       form
  
*************** single-letter options may _not_ be group
*** 4860,4866 ****
            ...
            #endif FOO
  
!      The second and third 'FOO' should be in comments.  This warning is
       on by default.
  
  
--- 4860,4866 ----
            ...
            #endif FOO
  
!      The second and third â€˜FOOâ€™ should be in comments.  This warning is
       on by default.
  
  
*************** operates.  You can use them to specify d
*** 4874,4945 ****
  when searching for include files, or to control dependency output.
  
     Note that you can also specify places to search using options such as
! '-I', and control dependency output with options like '-M' (*note
  Invocation::).  These take precedence over environment variables, which
  in turn take precedence over the configuration of GCC.
  
! 'CPATH'
! 'C_INCLUDE_PATH'
! 'CPLUS_INCLUDE_PATH'
! 'OBJC_INCLUDE_PATH'
       Each variable's value is a list of directories separated by a
!      special character, much like 'PATH', in which to look for header
!      files.  The special character, 'PATH_SEPARATOR', is
       target-dependent and determined at GCC build time.  For Microsoft
       Windows-based targets it is a semicolon, and for almost all other
       targets it is a colon.
  
!      'CPATH' specifies a list of directories to be searched as if
!      specified with '-I', but after any paths given with '-I' options on
       the command line.  This environment variable is used regardless of
       which language is being preprocessed.
  
       The remaining environment variables apply only when preprocessing
       the particular language indicated.  Each specifies a list of
!      directories to be searched as if specified with '-isystem', but
!      after any paths given with '-isystem' options on the command line.
  
       In all these variables, an empty element instructs the compiler to
       search its current working directory.  Empty elements can appear at
       the beginning or end of a path.  For instance, if the value of
!      'CPATH' is ':/special/include', that has the same effect as
!      '-I. -I/special/include'.
  
       See also *note Search Path::.
  
! 'DEPENDENCIES_OUTPUT'
       If this variable is set, its value specifies how to output
       dependencies for Make based on the non-system header files
       processed by the compiler.  System header files are ignored in the
       dependency output.
  
!      The value of 'DEPENDENCIES_OUTPUT' can be just a file name, in
       which case the Make rules are written to that file, guessing the
       target name from the source file name.  Or the value can have the
!      form 'FILE TARGET', in which case the rules are written to file
       FILE using TARGET as the target name.
  
       In other words, this environment variable is equivalent to
!      combining the options '-MM' and '-MF' (*note Invocation::), with an
!      optional '-MT' switch too.
  
! 'SUNPRO_DEPENDENCIES'
!      This variable is the same as 'DEPENDENCIES_OUTPUT' (see above),
!      except that system header files are not ignored, so it implies '-M'
!      rather than '-MM'.  However, the dependence on the main input file
       is omitted.  *Note Invocation::.
  
! 'SOURCE_DATE_EPOCH'
       If this variable is set, its value specifies a UNIX timestamp to be
!      used in replacement of the current date and time in the '__DATE__'
!      and '__TIME__' macros, so that the embedded timestamps become
       reproducible.
  
!      The value of 'SOURCE_DATE_EPOCH' must be a UNIX timestamp, defined
       as the number of seconds (excluding leap seconds) since 01 Jan 1970
!      00:00:00 represented in ASCII; identical to the output of 'date
!      +%s' on GNU/Linux and other systems that support the '%s' extension
!      in the 'date' command.
  
       The value should be a known timestamp such as the last modification
       time of the source or package and it should be set by the build
--- 4874,4945 ----
  when searching for include files, or to control dependency output.
  
     Note that you can also specify places to search using options such as
! â€˜-Iâ€™, and control dependency output with options like â€˜-Mâ€™ (*note
  Invocation::).  These take precedence over environment variables, which
  in turn take precedence over the configuration of GCC.
  
! â€˜CPATHâ€™
! â€˜C_INCLUDE_PATHâ€™
! â€˜CPLUS_INCLUDE_PATHâ€™
! â€˜OBJC_INCLUDE_PATHâ€™
       Each variable's value is a list of directories separated by a
!      special character, much like â€˜PATHâ€™, in which to look for header
!      files.  The special character, â€˜PATH_SEPARATORâ€™, is
       target-dependent and determined at GCC build time.  For Microsoft
       Windows-based targets it is a semicolon, and for almost all other
       targets it is a colon.
  
!      â€˜CPATHâ€™ specifies a list of directories to be searched as if
!      specified with â€˜-Iâ€™, but after any paths given with â€˜-Iâ€™ options on
       the command line.  This environment variable is used regardless of
       which language is being preprocessed.
  
       The remaining environment variables apply only when preprocessing
       the particular language indicated.  Each specifies a list of
!      directories to be searched as if specified with â€˜-isystemâ€™, but
!      after any paths given with â€˜-isystemâ€™ options on the command line.
  
       In all these variables, an empty element instructs the compiler to
       search its current working directory.  Empty elements can appear at
       the beginning or end of a path.  For instance, if the value of
!      â€˜CPATHâ€™ is â€˜:/special/includeâ€™, that has the same effect as
!      â€˜-I. -I/special/includeâ€™.
  
       See also *note Search Path::.
  
! â€˜DEPENDENCIES_OUTPUTâ€™
       If this variable is set, its value specifies how to output
       dependencies for Make based on the non-system header files
       processed by the compiler.  System header files are ignored in the
       dependency output.
  
!      The value of â€˜DEPENDENCIES_OUTPUTâ€™ can be just a file name, in
       which case the Make rules are written to that file, guessing the
       target name from the source file name.  Or the value can have the
!      form â€˜FILE TARGETâ€™, in which case the rules are written to file
       FILE using TARGET as the target name.
  
       In other words, this environment variable is equivalent to
!      combining the options â€˜-MMâ€™ and â€˜-MFâ€™ (*note Invocation::), with an
!      optional â€˜-MTâ€™ switch too.
  
! â€˜SUNPRO_DEPENDENCIESâ€™
!      This variable is the same as â€˜DEPENDENCIES_OUTPUTâ€™ (see above),
!      except that system header files are not ignored, so it implies â€˜-Mâ€™
!      rather than â€˜-MMâ€™.  However, the dependence on the main input file
       is omitted.  *Note Invocation::.
  
! â€˜SOURCE_DATE_EPOCHâ€™
       If this variable is set, its value specifies a UNIX timestamp to be
!      used in replacement of the current date and time in the â€˜__DATE__â€™
!      and â€˜__TIME__â€™ macros, so that the embedded timestamps become
       reproducible.
  
!      The value of â€˜SOURCE_DATE_EPOCHâ€™ must be a UNIX timestamp, defined
       as the number of seconds (excluding leap seconds) since 01 Jan 1970
!      00:00:00 represented in ASCII; identical to the output of â€˜date
!      +%sâ€™ on GNU/Linux and other systems that support the â€˜%sâ€™ extension
!      in the â€˜dateâ€™ command.
  
       The value should be a known timestamp such as the last modification
       time of the source or package and it should be set by the build
*************** GNU Free Documentation License
*** 4953,4959 ****
  
                       Version 1.3, 3 November 2008
  
!      Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
       <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies
--- 4953,4959 ----
  
                       Version 1.3, 3 November 2008
  
!      Copyright Â© 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
       <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies
*************** GNU Free Documentation License
*** 4962,4968 ****
    0. PREAMBLE
  
       The purpose of this License is to make a manual, textbook, or other
!      functional and useful document "free" in the sense of freedom: to
       assure everyone the effective freedom to copy and redistribute it,
       with or without modifying it, either commercially or
       noncommercially.  Secondarily, this License preserves for the
--- 4962,4968 ----
    0. PREAMBLE
  
       The purpose of this License is to make a manual, textbook, or other
!      functional and useful document â€œfreeâ€� in the sense of freedom: to
       assure everyone the effective freedom to copy and redistribute it,
       with or without modifying it, either commercially or
       noncommercially.  Secondarily, this License preserves for the
*************** Option Index
*** 5473,5566 ****
  ************
  
  CPP's command-line options and environment variables are indexed here
! without any initial '-' or '--'.
  
  [index]
  * Menu:
  
! * A:                                     Invocation.          (line 349)
! * C:                                     Invocation.          (line 358)
! * CC:                                    Invocation.          (line 370)
  * CPATH:                                 Environment Variables.
                                                                (line  15)
  * CPLUS_INCLUDE_PATH:                    Environment Variables.
                                                                (line  17)
! * C_INCLUDE_PATH:                        Environment Variables.
!                                                               (line  16)
! * D:                                     Invocation.          (line  43)
! * d:                                     Invocation.          (line 419)
! * dD:                                    Invocation.          (line 438)
  * DEPENDENCIES_OUTPUT:                   Environment Variables.
!                                                               (line  45)
! * dI:                                    Invocation.          (line 447)
! * dM:                                    Invocation.          (line 427)
! * dN:                                    Invocation.          (line 443)
! * dU:                                    Invocation.          (line 451)
! * embed-dir:                             Invocation.          (line 572)
! * fdebug-cpp:                            Invocation.          (line 458)
! * fdirectives-only:                      Invocation.          (line 230)
! * fdollars-in-identifiers:               Invocation.          (line 251)
! * fexec-charset:                         Invocation.          (line 310)
! * fextended-identifiers:                 Invocation.          (line 254)
! * finput-charset:                        Invocation.          (line 325)
! * fmacro-prefix-map:                     Invocation.          (line 301)
! * fmax-include-depth:                    Invocation.          (line 263)
! * fno-canonical-system-headers:          Invocation.          (line 259)
! * fno-working-directory:                 Invocation.          (line 335)
! * fpreprocessed:                         Invocation.          (line 217)
! * fsearch-include-path:                  Invocation.          (line 266)
! * ftabstop:                              Invocation.          (line 278)
! * ftrack-macro-expansion:                Invocation.          (line 284)
! * fwide-exec-charset:                    Invocation.          (line 315)
! * fworking-directory:                    Invocation.          (line 335)
! * H:                                     Invocation.          (line 412)
! * I:                                     Invocation.          (line 466)
! * I-:                                    Invocation.          (line 523)
! * idirafter:                             Invocation.          (line 466)
! * imacros:                               Invocation.          (line  81)
! * imultilib:                             Invocation.          (line 557)
! * include:                               Invocation.          (line  70)
! * iprefix:                               Invocation.          (line 539)
! * iquote:                                Invocation.          (line 466)
! * isysroot:                              Invocation.          (line 551)
! * isystem:                               Invocation.          (line 466)
! * iwithprefix:                           Invocation.          (line 544)
! * iwithprefixbefore:                     Invocation.          (line 544)
! * M:                                     Invocation.          (line 102)
! * MD:                                    Invocation.          (line 197)
! * MF:                                    Invocation.          (line 136)
! * MG:                                    Invocation.          (line 147)
! * MM:                                    Invocation.          (line 127)
! * MMD:                                   Invocation.          (line 213)
! * Mno-modules:                           Invocation.          (line 157)
! * MP:                                    Invocation.          (line 160)
! * MQ:                                    Invocation.          (line 187)
! * MT:                                    Invocation.          (line 172)
! * nostdinc:                              Invocation.          (line 561)
! * nostdinc++:                            Invocation.          (line 567)
  * OBJC_INCLUDE_PATH:                     Environment Variables.
                                                                (line  18)
! * P:                                     Invocation.          (line 382)
! * pthread:                               Invocation.          (line  95)
! * remap:                                 Invocation.          (line 408)
  * SOURCE_DATE_EPOCH:                     Environment Variables.
!                                                               (line  67)
  * SUNPRO_DEPENDENCIES:                   Environment Variables.
!                                                               (line  61)
! * traditional:                           Invocation.          (line 389)
! * traditional-cpp:                       Invocation.          (line 389)
! * trigraphs:                             Invocation.          (line 399)
! * U:                                     Invocation.          (line  66)
! * undef:                                 Invocation.          (line  90)
! * Wcomment:                              Invocation.          (line 580)
! * Wcomments:                             Invocation.          (line 580)
! * Wendif-labels:                         Invocation.          (line 625)
! * Wexpansion-to-defined:                 Invocation.          (line 600)
! * Wno-endif-labels:                      Invocation.          (line 625)
! * Wno-undef:                             Invocation.          (line 596)
! * Wtrigraphs:                            Invocation.          (line 586)
! * Wundef:                                Invocation.          (line 596)
! * Wunused-macros:                        Invocation.          (line 606)
  
  
  File: cpp.info,  Node: Concept Index,  Prev: Option Index,  Up: Top
--- 5473,5566 ----
  ************
  
  CPP's command-line options and environment variables are indexed here
! without any initial â€˜-â€™ or â€˜--â€™.
  
  [index]
  * Menu:
  
! * A:                                     Invocation.          (line 348)
! * C:                                     Invocation.          (line 357)
! * C_INCLUDE_PATH:                        Environment Variables.
!                                                               (line  16)
! * CC:                                    Invocation.          (line 369)
  * CPATH:                                 Environment Variables.
                                                                (line  15)
  * CPLUS_INCLUDE_PATH:                    Environment Variables.
                                                                (line  17)
! * D:                                     Invocation.          (line  42)
! * d:                                     Invocation.          (line 418)
! * dD:                                    Invocation.          (line 437)
  * DEPENDENCIES_OUTPUT:                   Environment Variables.
!                                                               (line  44)
! * dI:                                    Invocation.          (line 446)
! * dM:                                    Invocation.          (line 426)
! * dN:                                    Invocation.          (line 442)
! * dU:                                    Invocation.          (line 450)
! * embed-dir:                             Invocation.          (line 571)
! * fdebug-cpp:                            Invocation.          (line 457)
! * fdirectives-only:                      Invocation.          (line 229)
! * fdollars-in-identifiers:               Invocation.          (line 250)
! * fexec-charset:                         Invocation.          (line 309)
! * fextended-identifiers:                 Invocation.          (line 253)
! * finput-charset:                        Invocation.          (line 324)
! * fmacro-prefix-map:                     Invocation.          (line 300)
! * fmax-include-depth:                    Invocation.          (line 262)
! * fno-canonical-system-headers:          Invocation.          (line 258)
! * fno-working-directory:                 Invocation.          (line 334)
! * fpreprocessed:                         Invocation.          (line 216)
! * fsearch-include-path:                  Invocation.          (line 265)
! * ftabstop:                              Invocation.          (line 277)
! * ftrack-macro-expansion:                Invocation.          (line 283)
! * fwide-exec-charset:                    Invocation.          (line 314)
! * fworking-directory:                    Invocation.          (line 334)
! * H:                                     Invocation.          (line 411)
! * I:                                     Invocation.          (line 465)
! * I-:                                    Invocation.          (line 522)
! * idirafter:                             Invocation.          (line 465)
! * imacros:                               Invocation.          (line  80)
! * imultilib:                             Invocation.          (line 556)
! * include:                               Invocation.          (line  69)
! * iprefix:                               Invocation.          (line 538)
! * iquote:                                Invocation.          (line 465)
! * isysroot:                              Invocation.          (line 550)
! * isystem:                               Invocation.          (line 465)
! * iwithprefix:                           Invocation.          (line 543)
! * iwithprefixbefore:                     Invocation.          (line 543)
! * M:                                     Invocation.          (line 101)
! * MD:                                    Invocation.          (line 196)
! * MF:                                    Invocation.          (line 135)
! * MG:                                    Invocation.          (line 146)
! * MM:                                    Invocation.          (line 126)
! * MMD:                                   Invocation.          (line 212)
! * Mno-modules:                           Invocation.          (line 156)
! * MP:                                    Invocation.          (line 159)
! * MQ:                                    Invocation.          (line 186)
! * MT:                                    Invocation.          (line 171)
! * nostdinc:                              Invocation.          (line 560)
! * nostdinc++:                            Invocation.          (line 566)
  * OBJC_INCLUDE_PATH:                     Environment Variables.
                                                                (line  18)
! * P:                                     Invocation.          (line 381)
! * pthread:                               Invocation.          (line  94)
! * remap:                                 Invocation.          (line 407)
  * SOURCE_DATE_EPOCH:                     Environment Variables.
!                                                               (line  66)
  * SUNPRO_DEPENDENCIES:                   Environment Variables.
!                                                               (line  60)
! * traditional:                           Invocation.          (line 388)
! * traditional-cpp:                       Invocation.          (line 388)
! * trigraphs:                             Invocation.          (line 398)
! * U:                                     Invocation.          (line  65)
! * undef:                                 Invocation.          (line  89)
! * Wcomment:                              Invocation.          (line 579)
! * Wcomments:                             Invocation.          (line 579)
! * Wendif-labels:                         Invocation.          (line 624)
! * Wexpansion-to-defined:                 Invocation.          (line 599)
! * Wno-endif-labels:                      Invocation.          (line 624)
! * Wno-undef:                             Invocation.          (line 595)
! * Wtrigraphs:                            Invocation.          (line 585)
! * Wundef:                                Invocation.          (line 595)
! * Wunused-macros:                        Invocation.          (line 605)
  
  
  File: cpp.info,  Node: Concept Index,  Prev: Option Index,  Up: Top
*************** Concept Index
*** 5571,5588 ****
  [index]
  * Menu:
  
- * # operator:                            Stringizing.         (line   6)
- * ## operator:                           Concatenation.       (line   6)
- * _Pragma:                               Pragmas.             (line  13)
  * __has_attribute:                       __has_attribute.     (line   6)
  * __has_builtin:                         __has_builtin.       (line   6)
- * __has_cpp_attribute:                   __has_cpp_attribute. (line   6)
  * __has_c_attribute:                     __has_c_attribute.   (line   6)
  * __has_embed:                           __has_embed.         (line   6)
  * __has_extension:                       __has_extension.     (line   6)
  * __has_feature:                         __has_feature.       (line   6)
  * __has_include:                         __has_include.       (line   6)
  * __has_include_next:                    __has_include.       (line   6)
  * alternative tokens:                    Tokenization.        (line 100)
  * arguments:                             Macro Arguments.     (line   6)
  * arguments in macro definitions:        Macro Arguments.     (line   6)
--- 5571,5588 ----
  [index]
  * Menu:
  
  * __has_attribute:                       __has_attribute.     (line   6)
  * __has_builtin:                         __has_builtin.       (line   6)
  * __has_c_attribute:                     __has_c_attribute.   (line   6)
+ * __has_cpp_attribute:                   __has_cpp_attribute. (line   6)
  * __has_embed:                           __has_embed.         (line   6)
  * __has_extension:                       __has_extension.     (line   6)
  * __has_feature:                         __has_feature.       (line   6)
  * __has_include:                         __has_include.       (line   6)
  * __has_include_next:                    __has_include.       (line   6)
+ * _Pragma:                               Pragmas.             (line  13)
+ * # operator:                            Stringizing.         (line   6)
+ * ## operator:                           Concatenation.       (line   6)
  * alternative tokens:                    Tokenization.        (line 100)
  * arguments:                             Macro Arguments.     (line   6)
  * arguments in macro definitions:        Macro Arguments.     (line   6)
*************** Concept Index
*** 5590,5601 ****
  * assertions, canceling:                 Obsolete Features.   (line  59)
  * backslash-newline:                     Initial processing.  (line  61)
  * block comments:                        Initial processing.  (line  77)
! * C language, traditional:               Invocation.          (line 389)
  * C++ named operators:                   C++ Named Operators. (line   6)
  * character constants:                   Tokenization.        (line  81)
! * character set, execution:              Invocation.          (line 310)
! * character set, input:                  Invocation.          (line 325)
! * character set, wide execution:         Invocation.          (line 315)
  * command line:                          Invocation.          (line   6)
  * commenting out code:                   Deleted Code.        (line   6)
  * comments:                              Initial processing.  (line  77)
--- 5590,5601 ----
  * assertions, canceling:                 Obsolete Features.   (line  59)
  * backslash-newline:                     Initial processing.  (line  61)
  * block comments:                        Initial processing.  (line  77)
! * C language, traditional:               Invocation.          (line 388)
  * C++ named operators:                   C++ Named Operators. (line   6)
  * character constants:                   Tokenization.        (line  81)
! * character set, execution:              Invocation.          (line 309)
! * character set, input:                  Invocation.          (line 324)
! * character set, wide execution:         Invocation.          (line 314)
  * command line:                          Invocation.          (line   6)
  * commenting out code:                   Deleted Code.        (line   6)
  * comments:                              Initial processing.  (line  77)
*************** Concept Index
*** 5609,5618 ****
  * controlling macro:                     Once-Only Headers.   (line  35)
  * defined:                               Defined.             (line   6)
  * dependencies for make as output:       Environment Variables.
!                                                               (line  45)
  * dependencies for make as output <1>:   Environment Variables.
!                                                               (line  61)
! * dependencies, make:                    Invocation.          (line 102)
  * diagnostic:                            Diagnostics.         (line   6)
  * digraphs:                              Tokenization.        (line 100)
  * directive line:                        The preprocessing language.
--- 5609,5618 ----
  * controlling macro:                     Once-Only Headers.   (line  35)
  * defined:                               Defined.             (line   6)
  * dependencies for make as output:       Environment Variables.
!                                                               (line  44)
  * dependencies for make as output <1>:   Environment Variables.
!                                                               (line  60)
! * dependencies, make:                    Invocation.          (line 101)
  * diagnostic:                            Diagnostics.         (line   6)
  * digraphs:                              Tokenization.        (line 100)
  * directive line:                        The preprocessing language.
*************** Concept Index
*** 5653,5659 ****
  * macros in include:                     Computed Includes.   (line   6)
  * macros with arguments:                 Macro Arguments.     (line   6)
  * macros with variable arguments:        Variadic Macros.     (line   6)
! * make:                                  Invocation.          (line 102)
  * manifest constants:                    Object-like Macros.  (line   6)
  * named operators:                       C++ Named Operators. (line   6)
  * newlines in macro arguments:           Newlines in Arguments.
--- 5653,5659 ----
  * macros in include:                     Computed Includes.   (line   6)
  * macros with arguments:                 Macro Arguments.     (line   6)
  * macros with variable arguments:        Variadic Macros.     (line   6)
! * make:                                  Invocation.          (line 101)
  * manifest constants:                    Object-like Macros.  (line   6)
  * named operators:                       C++ Named Operators. (line   6)
  * newlines in macro arguments:           Newlines in Arguments.
*************** Concept Index
*** 5661,5667 ****
  * null directive:                        Other Directives.    (line  15)
  * numbers:                               Tokenization.        (line  58)
  * object-like macro:                     Object-like Macros.  (line   6)
! * options:                               Invocation.          (line  43)
  * options, grouping:                     Invocation.          (line  38)
  * other tokens:                          Tokenization.        (line 114)
  * output format:                         Preprocessor Output. (line  12)
--- 5661,5667 ----
  * null directive:                        Other Directives.    (line  15)
  * numbers:                               Tokenization.        (line  58)
  * object-like macro:                     Object-like Macros.  (line   6)
! * options:                               Invocation.          (line  42)
  * options, grouping:                     Invocation.          (line  38)
  * other tokens:                          Tokenization.        (line 114)
  * output format:                         Preprocessor Output. (line  12)
*************** Concept Index
*** 5708,5714 ****
  * token concatenation:                   Concatenation.       (line   6)
  * token pasting:                         Concatenation.       (line   6)
  * tokens:                                Tokenization.        (line   6)
! * traditional C language:                Invocation.          (line 389)
  * trigraphs:                             Initial processing.  (line  32)
  * undefining macros:                     Undefining and Redefining Macros.
                                                                (line   6)
--- 5708,5714 ----
  * token concatenation:                   Concatenation.       (line   6)
  * token pasting:                         Concatenation.       (line   6)
  * tokens:                                Tokenization.        (line   6)
! * traditional C language:                Invocation.          (line 388)
  * trigraphs:                             Initial processing.  (line  32)
  * undefining macros:                     Undefining and Redefining Macros.
                                                                (line   6)
*************** Concept Index
*** 5722,5808 ****
  
  
  Tag Table:
! Node: Top945
! Node: Overview3536
! Node: Character sets6374
! Ref: Character sets-Footnote-18546
! Node: Initial processing8727
! Ref: trigraphs10286
! Node: Tokenization14486
! Ref: Tokenization-Footnote-121316
! Node: The preprocessing language21427
! Node: Header Files24306
! Node: Include Syntax26222
! Node: Include Operation27859
! Node: Search Path29707
! Node: Once-Only Headers31929
! Node: Alternatives to Wrapper #ifndef33588
! Node: Computed Includes35237
! Node: Wrapper Headers38395
! Node: System Headers40818
! Node: Macros42419
! Node: Object-like Macros43556
! Node: Function-like Macros47146
! Node: Macro Arguments48762
! Node: Stringizing52901
! Node: Concatenation56062
! Node: Variadic Macros59159
! Node: Predefined Macros64111
! Node: Standard Predefined Macros64699
! Node: Common Predefined Macros71192
! Node: System-specific Predefined Macros93828
! Node: C++ Named Operators95851
! Node: Undefining and Redefining Macros96815
! Node: Directives Within Macro Arguments98913
! Node: Macro Pitfalls99854
! Node: Misnesting100387
! Node: Operator Precedence Problems101499
! Node: Swallowing the Semicolon103365
! Node: Duplication of Side Effects105388
! Node: Self-Referential Macros107571
! Node: Argument Prescan109980
! Node: Newlines in Arguments113731
! Node: Conditionals114682
! Node: Conditional Uses116378
! Node: Conditional Syntax117736
! Node: Ifdef118293
! Node: If121450
! Node: Defined123754
! Node: Else125147
! Node: Elif125717
! Node: __has_attribute127030
! Node: __has_cpp_attribute128624
! Node: __has_c_attribute129514
! Node: __has_builtin130287
! Node: __has_feature131420
! Node: __has_extension132299
! Node: __has_include133421
! Node: __has_embed135273
! Node: Deleted Code136607
! Node: Diagnostics137854
! Node: Line Control139403
! Node: Pragmas141681
! Node: Binary Resource Inclusion146202
! Node: Other Directives149458
! Node: Preprocessor Output150526
! Node: Traditional Mode153681
! Node: Traditional lexical analysis154818
! Node: Traditional macros157321
! Node: Traditional miscellany161118
! Node: Traditional warnings162114
! Node: Implementation Details164311
! Node: Implementation-defined behavior164874
! Ref: Identifier characters165624
! Node: Implementation limits168673
! Node: Obsolete Features171346
! Node: Invocation174190
! Ref: dashMF180225
! Ref: fdollars-in-identifiers184887
! Ref: Wtrigraphs199948
! Node: Environment Variables202003
! Node: GNU Free Documentation License205694
! Node: Index of Directives230844
! Node: Option Index233143
! Node: Concept Index239391
  
  End Tag Table
--- 5722,5813 ----
  
  
  Tag Table:
! Node: Top944
! Node: Overview3534
! Node: Character sets6412
! Ref: Character sets-Footnote-18620
! Node: Initial processing8805
! Ref: trigraphs10376
! Node: Tokenization14656
! Ref: Tokenization-Footnote-121650
! Node: The preprocessing language21769
! Node: Header Files24722
! Node: Include Syntax26654
! Node: Include Operation28343
! Node: Search Path30215
! Node: Once-Only Headers32501
! Node: Alternatives to Wrapper #ifndef34200
! Node: Computed Includes35917
! Node: Wrapper Headers39151
! Node: System Headers41638
! Node: Macros43275
! Node: Object-like Macros44432
! Node: Function-like Macros48126
! Node: Macro Arguments49758
! Node: Stringizing53951
! Node: Concatenation57192
! Node: Variadic Macros60373
! Node: Predefined Macros65425
! Node: Standard Predefined Macros66013
! Node: Common Predefined Macros72774
! Node: System-specific Predefined Macros96974
! Node: C++ Named Operators99045
! Node: Undefining and Redefining Macros100105
! Node: Directives Within Macro Arguments102239
! Node: Macro Pitfalls103180
! Node: Misnesting103713
! Node: Operator Precedence Problems104825
! Node: Swallowing the Semicolon106715
! Node: Duplication of Side Effects108774
! Node: Self-Referential Macros111029
! Node: Argument Prescan113538
! Node: Newlines in Arguments117375
! Node: Conditionals118330
! Node: Conditional Uses120050
! Node: Conditional Syntax121414
! Node: Ifdef121995
! Node: If125240
! Node: Defined127612
! Node: Else129073
! Node: Elif129659
! Node: __has_attribute131044
! Node: __has_cpp_attribute132678
! Node: __has_c_attribute133596
! Node: __has_builtin134405
! Node: __has_feature135566
! Node: __has_extension136469
! Node: __has_include137643
! Node: __has_embed139559
! Node: Deleted Code140949
! Node: Diagnostics142240
! Node: Line Control143829
! Node: Pragmas146171
! Node: Binary Resource Inclusion150844
! Node: Other Directives154236
! Node: Preprocessor Output155332
! Node: Traditional Mode158559
! Node: Traditional lexical analysis159700
! Node: Traditional macros162227
! Node: Traditional miscellany166044
! Node: Traditional warnings167078
! Node: Implementation Details169345
! Node: Implementation-defined behavior169908
! Ref: Identifier characters170678
! Node: Implementation limits173805
! Node: Obsolete Features176510
! Node: Invocation179410
! Ref: dashMF185681
! Ref: fdollars-in-identifiers190611
! Ref: Wtrigraphs206332
! Node: Environment Variables208455
! Node: GNU Free Documentation License212278
! Node: Index of Directives237431
! Node: Option Index239730
! Node: Concept Index245986
  
  End Tag Table
+ 
+ 
+ Local Variables:
+ coding: utf-8
+ End:
diff -Nrcpad gcc-15.2.0/gcc/doc/cppinternals.info gcc-15.3.0/gcc/doc/cppinternals.info
*** gcc-15.2.0/gcc/doc/cppinternals.info	Fri Aug  8 07:10:00 2025
--- gcc-15.3.0/gcc/doc/cppinternals.info	Fri Jun 12 06:28:38 2026
***************
*** 1,4 ****
! This is cppinternals.info, produced by makeinfo version 6.5 from
  cppinternals.texi.
  
  INFO-DIR-SECTION Software development
--- 1,4 ----
! This is cppinternals.info, produced by makeinfo version 7.1 from
  cppinternals.texi.
  
  INFO-DIR-SECTION Software development
*************** The GNU C Preprocessor Internals
*** 44,50 ****
  1 Cpplib--the GNU C Preprocessor
  ********************************
  
! The GNU C preprocessor is implemented as a library, "cpplib", so it can
  be easily shared between a stand-alone preprocessor, and a preprocessor
  integrated with the C, C++ and Objective-C front ends.  It is also
  available for use by other programs, though this is not recommended as
--- 44,50 ----
  1 Cpplib--the GNU C Preprocessor
  ********************************
  
! The GNU C preprocessor is implemented as a library, â€œcpplibâ€�, so it can
  be easily shared between a stand-alone preprocessor, and a preprocessor
  integrated with the C, C++ and Objective-C front ends.  It is also
  available for use by other programs, though this is not recommended as
*************** cpplib has two interfaces--one is expose
*** 85,97 ****
  is for both internal and external use.
  
     The convention is that functions and types that are exposed to
! multiple files internally are prefixed with '_cpp_', and are to be found
! in the file 'internal.h'.  Functions and types exposed to external
! clients are in 'cpplib.h', and prefixed with 'cpp_'.  For historical
  reasons this is no longer quite true, but we should strive to stick to
  it.
  
!    We are striving to reduce the information exposed in 'cpplib.h' to
  the bare minimum necessary, and then to keep it there.  This makes clear
  exactly what external clients are entitled to assume, and allows us to
  change internals in the future without worrying whether library clients
--- 85,97 ----
  is for both internal and external use.
  
     The convention is that functions and types that are exposed to
! multiple files internally are prefixed with â€˜_cpp_â€™, and are to be found
! in the file â€˜internal.hâ€™.  Functions and types exposed to external
! clients are in â€˜cpplib.hâ€™, and prefixed with â€˜cpp_â€™.  For historical
  reasons this is no longer quite true, but we should strive to stick to
  it.
  
!    We are striving to reduce the information exposed in â€˜cpplib.hâ€™ to
  the bare minimum necessary, and then to keep it there.  This makes clear
  exactly what external clients are entitled to assume, and allows us to
  change internals in the future without worrying whether library clients
*************** The Lexer
*** 107,113 ****
  Overview
  ========
  
! The lexer is contained in the file 'lex.cc'.  It is a hand-coded lexer,
  and not implemented as a state machine.  It can understand C, C++ and
  Objective-C source code, and has been extended to allow reasonably
  successful preprocessing of assembly language.  The lexer does not make
--- 107,113 ----
  Overview
  ========
  
! The lexer is contained in the file â€˜lex.ccâ€™.  It is a hand-coded lexer,
  and not implemented as a state machine.  It can understand C, C++ and
  Objective-C source code, and has been extended to allow reasonably
  successful preprocessing of assembly language.  The lexer does not make
*************** them as they are encountered in a single
*** 116,132 ****
  returns preprocessing tokens individually, not a line at a time.
  
     It is mostly transparent to users of the library, since the library's
! interface for obtaining the next token, 'cpp_get_token', takes care of
  lexing new tokens, handling directives, and expanding macros as
  necessary.  However, the lexer does expose some functionality so that
  clients of the library can easily spell a given token, such as
! 'cpp_spell_token' and 'cpp_token_len'.  These functions are useful when
  generating diagnostics, and for emitting the preprocessed output.
  
  Lexing a token
  ==============
  
! Lexing of an individual token is handled by '_cpp_lex_direct' and its
  subroutines.  In its current form the code is quite complicated, with
  read ahead characters and such-like, since it strives to not step back
  in the character stream in preparation for handling non-ASCII file
--- 116,132 ----
  returns preprocessing tokens individually, not a line at a time.
  
     It is mostly transparent to users of the library, since the library's
! interface for obtaining the next token, â€˜cpp_get_tokenâ€™, takes care of
  lexing new tokens, handling directives, and expanding macros as
  necessary.  However, the lexer does expose some functionality so that
  clients of the library can easily spell a given token, such as
! â€˜cpp_spell_tokenâ€™ and â€˜cpp_token_lenâ€™.  These functions are useful when
  generating diagnostics, and for emitting the preprocessed output.
  
  Lexing a token
  ==============
  
! Lexing of an individual token is handled by â€˜_cpp_lex_directâ€™ and its
  subroutines.  In its current form the code is quite complicated, with
  read ahead characters and such-like, since it strives to not step back
  in the character stream in preparation for handling non-ASCII file
*************** encodings.  The current plan is to conve
*** 134,199 ****
  before processing them.  This complexity is therefore unnecessary and
  will be removed, so I'll not discuss it further here.
  
!    The job of '_cpp_lex_direct' is simply to lex a token.  It is not
  responsible for issues like directive handling, returning lookahead
  tokens directly, multiple-include optimization, or conditional block
! skipping.  It necessarily has a minor ro^le to play in memory management
  of lexed lines.  I discuss these issues in a separate section (*note
  Lexing a line::).
  
     The lexer places the token it lexes into storage pointed to by the
! variable 'cur_token', and then increments it.  This variable is
  important for correct diagnostic positioning.  Unless a specific line
  and column are passed to the diagnostic routines, they will examine the
! 'line' and 'col' values of the token just before the location that
! 'cur_token' points to, and use that location to report the diagnostic.
  
     The lexer does not consider whitespace to be a token in its own
  right.  If whitespace (other than a new line) precedes a token, it sets
! the 'PREV_WHITE' bit in the token's flags.  Each token has its 'line'
! and 'col' variables set to the line and column of the first character of
  the token.  This line number is the line number in the translation unit,
  and can be converted to a source (file, line) pair using the line map
  code.
  
!    The first token on a logical, i.e. unescaped, line has the flag 'BOL'
  set for beginning-of-line.  This flag is intended for internal use, both
! to distinguish a '#' that begins a directive from one that doesn't, and
  to generate a call-back to clients that want to be notified about the
  start of every non-directive line with tokens on it.  Clients cannot
  reliably determine this for themselves: the first token might be a
! macro, and the tokens of a macro expansion do not have the 'BOL' flag
  set.  The macro expansion may even be empty, and the next token on the
! line certainly won't have the 'BOL' flag set.
  
     New lines are treated specially; exactly how the lexer handles them
  is context-dependent.  The C standard mandates that directives are
  terminated by the first unescaped newline character, even if it appears
  in the middle of a macro expansion.  Therefore, if the state variable
! 'in_directive' is set, the lexer returns a 'CPP_EOF' token, which is
  normally used to indicate end-of-file, to indicate end-of-directive.  In
! a directive a 'CPP_EOF' token never means end-of-file.  Conveniently, if
! the caller was 'collect_args', it already handles 'CPP_EOF' as if it
  were end-of-file, and reports an error about an unterminated macro
  argument list.
  
     The C standard also specifies that a new line in the middle of the
  arguments to a macro is treated as whitespace.  This white space is
  important in case the macro argument is stringized.  The state variable
! 'parsing_args' is nonzero when the preprocessor is collecting the
  arguments to a macro call.  It is set to 1 when looking for the opening
  parenthesis to a function-like macro, and 2 when collecting the actual
  arguments up to the closing parenthesis, since these two cases need to
  be distinguished sometimes.  One such time is here: the lexer sets the
! 'PREV_WHITE' flag of a token if it meets a new line when 'parsing_args'
  is set to 2.  It doesn't set it if it meets a new line when
! 'parsing_args' is 1, since then code like
  
       #define foo() bar
       foo
       baz
  
! would be output with an erroneous space before 'baz':
  
       foo
        baz
--- 134,199 ----
  before processing them.  This complexity is therefore unnecessary and
  will be removed, so I'll not discuss it further here.
  
!    The job of â€˜_cpp_lex_directâ€™ is simply to lex a token.  It is not
  responsible for issues like directive handling, returning lookahead
  tokens directly, multiple-include optimization, or conditional block
! skipping.  It necessarily has a minor rÃ´le to play in memory management
  of lexed lines.  I discuss these issues in a separate section (*note
  Lexing a line::).
  
     The lexer places the token it lexes into storage pointed to by the
! variable â€˜cur_tokenâ€™, and then increments it.  This variable is
  important for correct diagnostic positioning.  Unless a specific line
  and column are passed to the diagnostic routines, they will examine the
! â€˜lineâ€™ and â€˜colâ€™ values of the token just before the location that
! â€˜cur_tokenâ€™ points to, and use that location to report the diagnostic.
  
     The lexer does not consider whitespace to be a token in its own
  right.  If whitespace (other than a new line) precedes a token, it sets
! the â€˜PREV_WHITEâ€™ bit in the token's flags.  Each token has its â€˜lineâ€™
! and â€˜colâ€™ variables set to the line and column of the first character of
  the token.  This line number is the line number in the translation unit,
  and can be converted to a source (file, line) pair using the line map
  code.
  
!    The first token on a logical, i.e. unescaped, line has the flag â€˜BOLâ€™
  set for beginning-of-line.  This flag is intended for internal use, both
! to distinguish a â€˜#â€™ that begins a directive from one that doesn't, and
  to generate a call-back to clients that want to be notified about the
  start of every non-directive line with tokens on it.  Clients cannot
  reliably determine this for themselves: the first token might be a
! macro, and the tokens of a macro expansion do not have the â€˜BOLâ€™ flag
  set.  The macro expansion may even be empty, and the next token on the
! line certainly won't have the â€˜BOLâ€™ flag set.
  
     New lines are treated specially; exactly how the lexer handles them
  is context-dependent.  The C standard mandates that directives are
  terminated by the first unescaped newline character, even if it appears
  in the middle of a macro expansion.  Therefore, if the state variable
! â€˜in_directiveâ€™ is set, the lexer returns a â€˜CPP_EOFâ€™ token, which is
  normally used to indicate end-of-file, to indicate end-of-directive.  In
! a directive a â€˜CPP_EOFâ€™ token never means end-of-file.  Conveniently, if
! the caller was â€˜collect_argsâ€™, it already handles â€˜CPP_EOFâ€™ as if it
  were end-of-file, and reports an error about an unterminated macro
  argument list.
  
     The C standard also specifies that a new line in the middle of the
  arguments to a macro is treated as whitespace.  This white space is
  important in case the macro argument is stringized.  The state variable
! â€˜parsing_argsâ€™ is nonzero when the preprocessor is collecting the
  arguments to a macro call.  It is set to 1 when looking for the opening
  parenthesis to a function-like macro, and 2 when collecting the actual
  arguments up to the closing parenthesis, since these two cases need to
  be distinguished sometimes.  One such time is here: the lexer sets the
! â€˜PREV_WHITEâ€™ flag of a token if it meets a new line when â€˜parsing_argsâ€™
  is set to 2.  It doesn't set it if it meets a new line when
! â€˜parsing_argsâ€™ is 1, since then code like
  
       #define foo() bar
       foo
       baz
  
! would be output with an erroneous space before â€˜bazâ€™:
  
       foo
        baz
*************** would be output with an erroneous space
*** 202,214 ****
  correct in the preprocessor; there are plenty of tests in the testsuite
  for corner cases like this.
  
!    The lexer is written to treat each of '\r', '\n', '\r\n' and '\n\r'
  as a single new line indicator.  This allows it to transparently
  preprocess MS-DOS, Macintosh and Unix files without their needing to
  pass through a special filter beforehand.
  
!    We also decided to treat a backslash, either '\' or the trigraph
! '??/', separated from one of the above newline indicators by non-comment
  whitespace only, as intending to escape the newline.  It tends to be a
  typing mistake, and cannot reasonably be mistaken for anything else in
  any of the C-family grammars.  Since handling it this way is not
--- 202,214 ----
  correct in the preprocessor; there are plenty of tests in the testsuite
  for corner cases like this.
  
!    The lexer is written to treat each of â€˜\râ€™, â€˜\nâ€™, â€˜\r\nâ€™ and â€˜\n\râ€™
  as a single new line indicator.  This allows it to transparently
  preprocess MS-DOS, Macintosh and Unix files without their needing to
  pass through a special filter beforehand.
  
!    We also decided to treat a backslash, either â€˜\â€™ or the trigraph
! â€˜??/â€™, separated from one of the above newline indicators by non-comment
  whitespace only, as intending to escape the newline.  It tends to be a
  typing mistake, and cannot reasonably be mistaken for anything else in
  any of the C-family grammars.  Since handling it this way is not
*************** strictly conforming to the ISO standard,
*** 216,288 ****
  wherever it encounters it.
  
     Handling newlines like this is made simpler by doing it in one place
! only.  The function 'handle_newline' takes care of all newline
! characters, and 'skip_escaped_newlines' takes care of arbitrarily long
! sequences of escaped newlines, deferring to 'handle_newline' to handle
  the newlines themselves.
  
     The most painful aspect of lexing ISO-standard C and C++ is handling
  trigraphs and backlash-escaped newlines.  Trigraphs are processed before
  any interpretation of the meaning of a character is made, and
  unfortunately there is a trigraph representation for a backslash, so it
! is possible for the trigraph '??/' to introduce an escaped newline.
  
     Escaped newlines are tedious because theoretically they can occur
! anywhere--between the '+' and '=' of the '+=' token, within the
! characters of an identifier, and even between the '*' and '/' that
  terminates a comment.  Moreover, you cannot be sure there is just
  one--there might be an arbitrarily long sequence of them.
  
!    So, for example, the routine that lexes a number, 'parse_number',
  cannot assume that it can scan forwards until the first non-number
! character and be done with it, because this could be the '\' introducing
! an escaped newline, or the '?' introducing the trigraph sequence that
! represents the '\' of an escaped newline.  If it encounters a '?' or
! '\', it calls 'skip_escaped_newlines' to skip over any potential escaped
  newlines before checking whether the number has been finished.
  
!    Similarly code in the main body of '_cpp_lex_direct' cannot simply
! check for a '=' after a '+' character to determine whether it has a '+='
  token; it needs to be prepared for an escaped newline of some sort.
! Such cases use the function 'get_effective_char', which returns the
  first character after any intervening escaped newlines.
  
     The lexer needs to keep track of the correct column position,
! including counting tabs as specified by the '-ftabstop=' option.  This
  should be done even within C-style comments; they can appear in the
  middle of a line, and we want to report diagnostics in the correct
  position for text appearing after the end of the comment.
  
!    Some identifiers, such as '__VA_ARGS__' and poisoned identifiers, may
  be invalid and require a diagnostic.  However, if they appear in a macro
  expansion we don't want to complain with each use of the macro.  It is
  therefore best to catch them during the lexing stage, in
! 'parse_identifier'.  In both cases, whether a diagnostic is needed or
  not is dependent upon the lexer's state.  For example, we don't want to
  issue a diagnostic for re-poisoning a poisoned identifier, or for using
! '__VA_ARGS__' in the expansion of a variable-argument macro.  Therefore
! 'parse_identifier' makes use of state flags to determine whether a
  diagnostic is appropriate.  Since we change state on a per-token basis,
  and don't lex whole lines at a time, this is not a problem.
  
     Another place where state flags are used to change behavior is whilst
! lexing header names.  Normally, a '<' would be lexed as a single token.
! After a '#include' directive, though, it should be lexed as a single
! token as far as the nearest '>' character.  Note that we don't allow the
! terminators of header names to be escaped; the first '"' or '>'
  terminates the header name.
  
     Interpretation of some character sequences depends upon whether we
  are lexing C, C++ or Objective-C, and on the revision of the standard in
! force.  For example, '::' is a single token in C++, but in C it is two
! separate ':' tokens and almost certainly a syntax error.  Such cases are
! handled by '_cpp_lex_direct' based upon command-line flags stored in the
! 'cpp_options' structure.
  
     Once a token has been lexed, it leads an independent existence.  The
  spelling of numbers, identifiers and strings is copied to permanent
  storage from the original input buffer, so a token remains valid and
! correct even if its source buffer is freed with '_cpp_pop_buffer'.  The
  storage holding the spellings of such tokens remains until the client
  program calls cpp_destroy, probably at the end of the translation unit.
  
--- 216,288 ----
  wherever it encounters it.
  
     Handling newlines like this is made simpler by doing it in one place
! only.  The function â€˜handle_newlineâ€™ takes care of all newline
! characters, and â€˜skip_escaped_newlinesâ€™ takes care of arbitrarily long
! sequences of escaped newlines, deferring to â€˜handle_newlineâ€™ to handle
  the newlines themselves.
  
     The most painful aspect of lexing ISO-standard C and C++ is handling
  trigraphs and backlash-escaped newlines.  Trigraphs are processed before
  any interpretation of the meaning of a character is made, and
  unfortunately there is a trigraph representation for a backslash, so it
! is possible for the trigraph â€˜??/â€™ to introduce an escaped newline.
  
     Escaped newlines are tedious because theoretically they can occur
! anywhere--between the â€˜+â€™ and â€˜=â€™ of the â€˜+=â€™ token, within the
! characters of an identifier, and even between the â€˜*â€™ and â€˜/â€™ that
  terminates a comment.  Moreover, you cannot be sure there is just
  one--there might be an arbitrarily long sequence of them.
  
!    So, for example, the routine that lexes a number, â€˜parse_numberâ€™,
  cannot assume that it can scan forwards until the first non-number
! character and be done with it, because this could be the â€˜\â€™ introducing
! an escaped newline, or the â€˜?â€™ introducing the trigraph sequence that
! represents the â€˜\â€™ of an escaped newline.  If it encounters a â€˜?â€™ or
! â€˜\â€™, it calls â€˜skip_escaped_newlinesâ€™ to skip over any potential escaped
  newlines before checking whether the number has been finished.
  
!    Similarly code in the main body of â€˜_cpp_lex_directâ€™ cannot simply
! check for a â€˜=â€™ after a â€˜+â€™ character to determine whether it has a â€˜+=â€™
  token; it needs to be prepared for an escaped newline of some sort.
! Such cases use the function â€˜get_effective_charâ€™, which returns the
  first character after any intervening escaped newlines.
  
     The lexer needs to keep track of the correct column position,
! including counting tabs as specified by the â€˜-ftabstop=â€™ option.  This
  should be done even within C-style comments; they can appear in the
  middle of a line, and we want to report diagnostics in the correct
  position for text appearing after the end of the comment.
  
!    Some identifiers, such as â€˜__VA_ARGS__â€™ and poisoned identifiers, may
  be invalid and require a diagnostic.  However, if they appear in a macro
  expansion we don't want to complain with each use of the macro.  It is
  therefore best to catch them during the lexing stage, in
! â€˜parse_identifierâ€™.  In both cases, whether a diagnostic is needed or
  not is dependent upon the lexer's state.  For example, we don't want to
  issue a diagnostic for re-poisoning a poisoned identifier, or for using
! â€˜__VA_ARGS__â€™ in the expansion of a variable-argument macro.  Therefore
! â€˜parse_identifierâ€™ makes use of state flags to determine whether a
  diagnostic is appropriate.  Since we change state on a per-token basis,
  and don't lex whole lines at a time, this is not a problem.
  
     Another place where state flags are used to change behavior is whilst
! lexing header names.  Normally, a â€˜<â€™ would be lexed as a single token.
! After a â€˜#includeâ€™ directive, though, it should be lexed as a single
! token as far as the nearest â€˜>â€™ character.  Note that we don't allow the
! terminators of header names to be escaped; the first â€˜"â€™ or â€˜>â€™
  terminates the header name.
  
     Interpretation of some character sequences depends upon whether we
  are lexing C, C++ or Objective-C, and on the revision of the standard in
! force.  For example, â€˜::â€™ is a single token in C++, but in C it is two
! separate â€˜:â€™ tokens and almost certainly a syntax error.  Such cases are
! handled by â€˜_cpp_lex_directâ€™ based upon command-line flags stored in the
! â€˜cpp_optionsâ€™ structure.
  
     Once a token has been lexed, it leads an independent existence.  The
  spelling of numbers, identifiers and strings is copied to permanent
  storage from the original input buffer, so a token remains valid and
! correct even if its source buffer is freed with â€˜_cpp_pop_bufferâ€™.  The
  storage holding the spellings of such tokens remains until the client
  program calls cpp_destroy, probably at the end of the translation unit.
  
*************** to cpplib itself internally.
*** 299,307 ****
  token stream.  For example, after the name of a function-like macro, it
  wants to check the next token to see if it is an opening parenthesis.
  Another example is that, after reading the first few tokens of a
! '#pragma' directive and not recognizing it as a registered pragma, it
  wants to backtrack and allow the user-defined handler for unknown
! pragmas to access the full '#pragma' token stream.  The stand-alone
  preprocessor wants to be able to test the current token with the
  previous one to see if a space needs to be inserted to preserve their
  separate tokenization upon re-lexing (paste avoidance), so it needs to
--- 299,307 ----
  token stream.  For example, after the name of a function-like macro, it
  wants to check the next token to see if it is an opening parenthesis.
  Another example is that, after reading the first few tokens of a
! â€˜#pragmaâ€™ directive and not recognizing it as a registered pragma, it
  wants to backtrack and allow the user-defined handler for unknown
! pragmas to access the full â€˜#pragmaâ€™ token stream.  The stand-alone
  preprocessor wants to be able to test the current token with the
  previous one to see if a space needs to be inserted to preserve their
  separate tokenization upon re-lexing (paste avoidance), so it needs to
*************** to jump back to a prior position in that
*** 312,321 ****
  
     The rule I chose, which is fairly natural, is to arrange that the
  preprocessor lex all tokens on a line consecutively into a token buffer,
! which I call a "token run", and when meeting an unescaped new line
  (newlines within comments do not count either), to start lexing back at
  the beginning of the run.  Note that we do _not_ lex a line of tokens at
! once; if we did that 'parse_identifier' would not have state flags
  available to warn about invalid identifiers (*note Invalid
  identifiers::).
  
--- 312,321 ----
  
     The rule I chose, which is fairly natural, is to arrange that the
  preprocessor lex all tokens on a line consecutively into a token buffer,
! which I call a â€œtoken runâ€�, and when meeting an unescaped new line
  (newlines within comments do not count either), to start lexing back at
  the beginning of the run.  Note that we do _not_ lex a line of tokens at
! once; if we did that â€˜parse_identifierâ€™ would not have state flags
  available to warn about invalid identifiers (*note Invalid
  identifiers::).
  
*************** identifiers::).
*** 323,329 ****
  line is valid, but since each logical line overwrites the tokens of the
  previous line, tokens from prior lines are unavailable.  In particular,
  since a directive only occupies a single logical line, this means that
! the directive handlers like the '#pragma' handler can jump around in the
  directive's tokens if necessary.
  
     Two issues remain: what about tokens that arise from macro
--- 323,329 ----
  line is valid, but since each logical line overwrites the tokens of the
  previous line, tokens from prior lines are unavailable.  In particular,
  since a directive only occupies a single logical line, this means that
! the directive handlers like the â€˜#pragmaâ€™ handler can jump around in the
  directive's tokens if necessary.
  
     Two issues remain: what about tokens that arise from macro
*************** line, we cannot reallocate the run.  Ins
*** 336,347 ****
  by chaining a new token run on to the end of the existing one.
  
     The tokens forming a macro's replacement list are collected by the
! '#define' handler, and placed in storage that is only freed by
! 'cpp_destroy'.  So if a macro is expanded in the line of tokens, the
  pointers to the tokens of its expansion that are returned will always
  remain valid.  However, macros are a little trickier than that, since
  they give rise to three sources of fresh tokens.  They are the built-in
! macros like '__LINE__', and the '#' and '##' operators for stringizing
  and token pasting.  I handled this by allocating space for these tokens
  from the lexer's token run chain.  This means they automatically receive
  the same lifetime guarantees as lexed tokens, and we don't need to
--- 336,347 ----
  by chaining a new token run on to the end of the existing one.
  
     The tokens forming a macro's replacement list are collected by the
! â€˜#defineâ€™ handler, and placed in storage that is only freed by
! â€˜cpp_destroyâ€™.  So if a macro is expanded in the line of tokens, the
  pointers to the tokens of its expansion that are returned will always
  remain valid.  However, macros are a little trickier than that, since
  they give rise to three sources of fresh tokens.  They are the built-in
! macros like â€˜__LINE__â€™, and the â€˜#â€™ and â€˜##â€™ operators for stringizing
  and token pasting.  I handled this by allocating space for these tokens
  from the lexer's token run chain.  This means they automatically receive
  the same lifetime guarantees as lexed tokens, and we don't need to
*************** management issues, but not all.  The ope
*** 352,358 ****
  function-like macro name might lie on a different line, and the front
  ends definitely want the ability to look ahead past the end of the
  current line.  So cpplib only moves back to the start of the token run
! at the end of a line if the variable 'keep_tokens' is zero.
  Line-buffering is quite natural for the preprocessor, and as a result
  the only time cpplib needs to increment this variable is whilst looking
  for the opening parenthesis to, and reading the arguments of, a
--- 352,358 ----
  function-like macro name might lie on a different line, and the front
  ends definitely want the ability to look ahead past the end of the
  current line.  So cpplib only moves back to the start of the token run
! at the end of a line if the variable â€˜keep_tokensâ€™ is zero.
  Line-buffering is quite natural for the preprocessor, and as a result
  the only time cpplib needs to increment this variable is whilst looking
  for the opening parenthesis to, and reading the arguments of, a
*************** function-like macro.  In the near future
*** 360,371 ****
  to increment and decrement this variable, so that clients can share full
  control over the lifetime of token pointers too.
  
!    The routine '_cpp_lex_token' handles moving to new token runs,
! calling '_cpp_lex_direct' to lex new tokens, or returning
  previously-lexed tokens if we stepped back in the token stream.  It also
! checks each token for the 'BOL' flag, which might indicate a directive
  that needs to be handled, or require a start-of-line call-back to be
! made.  '_cpp_lex_token' also handles skipping over tokens in failed
  conditional blocks, and invalidates the control macro of the
  multiple-include optimization if a token was successfully lexed outside
  a directive.  In other words, its callers do not need to concern
--- 360,371 ----
  to increment and decrement this variable, so that clients can share full
  control over the lifetime of token pointers too.
  
!    The routine â€˜_cpp_lex_tokenâ€™ handles moving to new token runs,
! calling â€˜_cpp_lex_directâ€™ to lex new tokens, or returning
  previously-lexed tokens if we stepped back in the token stream.  It also
! checks each token for the â€˜BOLâ€™ flag, which might indicate a directive
  that needs to be handled, or require a start-of-line call-back to be
! made.  â€˜_cpp_lex_tokenâ€™ also handles skipping over tokens in failed
  conditional blocks, and invalidates the control macro of the
  multiple-include optimization if a token was successfully lexed outside
  a directive.  In other words, its callers do not need to concern
*************** Hash Nodes
*** 379,397 ****
  
  When cpplib encounters an "identifier", it generates a hash code for it
  and stores it in the hash table.  By "identifier" we mean tokens with
! type 'CPP_NAME'; this includes identifiers in the usual C sense, as well
  as keywords, directive names, macro names and so on.  For example, all
! of 'pragma', 'int', 'foo' and '__GNUC__' are identifiers and hashed when
  lexed.
  
     Each node in the hash table contain various information about the
  identifier it represents.  For example, its length and type.  At any one
  time, each identifier falls into exactly one of three categories:
  
!    * Macros
  
       These have been declared to be macros, either on the command line
!      or with '#define'.  A few, such as '__TIME__' are built-ins entered
       in the hash table during initialization.  The hash node for a
       normal macro points to a structure with more information about the
       macro, such as whether it is function-like, how many arguments it
--- 379,397 ----
  
  When cpplib encounters an "identifier", it generates a hash code for it
  and stores it in the hash table.  By "identifier" we mean tokens with
! type â€˜CPP_NAMEâ€™; this includes identifiers in the usual C sense, as well
  as keywords, directive names, macro names and so on.  For example, all
! of â€˜pragmaâ€™, â€˜intâ€™, â€˜fooâ€™ and â€˜__GNUC__â€™ are identifiers and hashed when
  lexed.
  
     Each node in the hash table contain various information about the
  identifier it represents.  For example, its length and type.  At any one
  time, each identifier falls into exactly one of three categories:
  
!    â€¢ Macros
  
       These have been declared to be macros, either on the command line
!      or with â€˜#defineâ€™.  A few, such as â€˜__TIME__â€™ are built-ins entered
       in the hash table during initialization.  The hash node for a
       normal macro points to a structure with more information about the
       macro, such as whether it is function-like, how many arguments it
*************** time, each identifier falls into exactly
*** 399,435 ****
       and instead contain an enum indicating which of the various
       built-in macros it is.
  
!    * Assertions
  
       Assertions are in a separate namespace to macros.  To enforce this,
!      cpp actually prepends a '#' character before hashing and entering
       it in the hash table.  An assertion's node points to a chain of
       answers to that assertion.
  
!    * Void
  
       Everything else falls into this category--an identifier that is not
       currently a macro, or a macro that has since been undefined with
!      '#undef'.
  
       When preprocessing C++, this category also includes the named
!      operators, such as 'xor'.  In expressions these behave like the
       operators they represent, but in contexts where the spelling of a
       token matters they are spelt differently.  This spelling
       distinction is relevant when they are operands of the stringizing
!      and pasting macro operators '#' and '##'.  Named operator hash
       nodes are flagged, both to catch the spelling distinction and to
       prevent them from being defined as macros.
  
     The same identifiers share the same hash node.  Since each identifier
  token, after lexing, contains a pointer to its hash node, this is used
  to provide rapid lookup of various information.  For example, when
! parsing a '#define' statement, CPP flags each argument's identifier hash
  node with the index of that argument.  This makes duplicated argument
  checking an O(1) operation for each argument.  Similarly, for each
  identifier in the macro's expansion, lookup to see if it is an argument,
  and which argument it is, is also an O(1) operation.  Further, each
! directive name, such as 'endif', has an associated directive enum stored
  in its hash node, so that directive lookup is also O(1).
  
  
--- 399,435 ----
       and instead contain an enum indicating which of the various
       built-in macros it is.
  
!    â€¢ Assertions
  
       Assertions are in a separate namespace to macros.  To enforce this,
!      cpp actually prepends a â€˜#â€™ character before hashing and entering
       it in the hash table.  An assertion's node points to a chain of
       answers to that assertion.
  
!    â€¢ Void
  
       Everything else falls into this category--an identifier that is not
       currently a macro, or a macro that has since been undefined with
!      â€˜#undefâ€™.
  
       When preprocessing C++, this category also includes the named
!      operators, such as â€˜xorâ€™.  In expressions these behave like the
       operators they represent, but in contexts where the spelling of a
       token matters they are spelt differently.  This spelling
       distinction is relevant when they are operands of the stringizing
!      and pasting macro operators â€˜#â€™ and â€˜##â€™.  Named operator hash
       nodes are flagged, both to catch the spelling distinction and to
       prevent them from being defined as macros.
  
     The same identifiers share the same hash node.  Since each identifier
  token, after lexing, contains a pointer to its hash node, this is used
  to provide rapid lookup of various information.  For example, when
! parsing a â€˜#defineâ€™ statement, CPP flags each argument's identifier hash
  node with the index of that argument.  This makes duplicated argument
  checking an O(1) operation for each argument.  Similarly, for each
  identifier in the macro's expansion, lookup to see if it is an argument,
  and which argument it is, is also an O(1) operation.  Further, each
! directive name, such as â€˜endifâ€™, has an associated directive enum stored
  in its hash node, so that directive lookup is also O(1).
  
  
*************** to get the replacement list of a macro.
*** 461,487 ****
  its parameters, in the form of an ordered list of pointers to the hash
  table entry of each parameter's identifier.  Further, in the macro's
  stored expansion each occurrence of a parameter is replaced with a
! special token of type 'CPP_MACRO_ARG'.  Each such token holds the index
  of the parameter it represents in the parameter list, which allows rapid
  replacement of parameters with their arguments during expansion.
  Despite this optimization it is still necessary to store the original
! parameters to the macro, both for dumping with e.g., '-dD', and to warn
  about non-trivial macro redefinitions when the parameter names have
  changed.
  
  Macro expansion overview
  ========================
  
! The preprocessor maintains a "context stack", implemented as a linked
! list of 'cpp_context' structures, which together represent the macro
! expansion state at any one time.  The 'struct cpp_reader' member
! variable 'context' points to the current top of this stack.  The top
  normally holds the unexpanded replacement list of the innermost macro
  under expansion, except when cpplib is about to pre-expand an argument,
  in which case it holds that argument's unexpanded tokens.
  
!    When there are no macros under expansion, cpplib is in "base
! context".  All contexts other than the base context contain a contiguous
  list of tokens delimited by a starting and ending token.  When not in
  base context, cpplib obtains the next token from the list of the top
  context.  If there are no tokens left in the list, it pops that context
--- 461,487 ----
  its parameters, in the form of an ordered list of pointers to the hash
  table entry of each parameter's identifier.  Further, in the macro's
  stored expansion each occurrence of a parameter is replaced with a
! special token of type â€˜CPP_MACRO_ARGâ€™.  Each such token holds the index
  of the parameter it represents in the parameter list, which allows rapid
  replacement of parameters with their arguments during expansion.
  Despite this optimization it is still necessary to store the original
! parameters to the macro, both for dumping with e.g., â€˜-dDâ€™, and to warn
  about non-trivial macro redefinitions when the parameter names have
  changed.
  
  Macro expansion overview
  ========================
  
! The preprocessor maintains a â€œcontext stackâ€�, implemented as a linked
! list of â€˜cpp_contextâ€™ structures, which together represent the macro
! expansion state at any one time.  The â€˜struct cpp_readerâ€™ member
! variable â€˜contextâ€™ points to the current top of this stack.  The top
  normally holds the unexpanded replacement list of the innermost macro
  under expansion, except when cpplib is about to pre-expand an argument,
  in which case it holds that argument's unexpanded tokens.
  
!    When there are no macros under expansion, cpplib is in â€œbase
! contextâ€�.  All contexts other than the base context contain a contiguous
  list of tokens delimited by a starting and ending token.  When not in
  base context, cpplib obtains the next token from the list of the top
  context.  If there are no tokens left in the list, it pops that context
*************** reads tokens directly from the lexer.
*** 491,514 ****
  
     If it encounters an identifier that is both a macro and enabled for
  expansion, cpplib prepares to push a new context for that macro on the
! stack by calling the routine 'enter_macro_context'.  When this routine
  returns, the new context will contain the unexpanded tokens of the
  replacement list of that macro.  In the case of function-like macros,
! 'enter_macro_context' also replaces any parameters in the replacement
! list, stored as 'CPP_MACRO_ARG' tokens, with the appropriate macro
  argument.  If the standard requires that the parameter be replaced with
  its expanded argument, the argument will have been fully macro expanded
  first.
  
!    'enter_macro_context' also handles special macros like '__LINE__'.
  Although these macros expand to a single token which cannot contain any
  further macros, for reasons of token spacing (*note Token Spacing::) and
  simplicity of implementation, cpplib handles these special macros by
  pushing a context containing just that one token.
  
!    The final thing that 'enter_macro_context' does before returning is
  to mark the macro disabled for expansion (except for special macros like
! '__TIME__').  The macro is re-enabled when its context is later popped
  from the context stack, as described above.  This strict ordering
  ensures that a macro is disabled whilst its expansion is being scanned,
  but that it is _not_ disabled whilst any arguments to it are being
--- 491,514 ----
  
     If it encounters an identifier that is both a macro and enabled for
  expansion, cpplib prepares to push a new context for that macro on the
! stack by calling the routine â€˜enter_macro_contextâ€™.  When this routine
  returns, the new context will contain the unexpanded tokens of the
  replacement list of that macro.  In the case of function-like macros,
! â€˜enter_macro_contextâ€™ also replaces any parameters in the replacement
! list, stored as â€˜CPP_MACRO_ARGâ€™ tokens, with the appropriate macro
  argument.  If the standard requires that the parameter be replaced with
  its expanded argument, the argument will have been fully macro expanded
  first.
  
!    â€˜enter_macro_contextâ€™ also handles special macros like â€˜__LINE__â€™.
  Although these macros expand to a single token which cannot contain any
  further macros, for reasons of token spacing (*note Token Spacing::) and
  simplicity of implementation, cpplib handles these special macros by
  pushing a context containing just that one token.
  
!    The final thing that â€˜enter_macro_contextâ€™ does before returning is
  to mark the macro disabled for expansion (except for special macros like
! â€˜__TIME__â€™).  The macro is re-enabled when its context is later popped
  from the context stack, as described above.  This strict ordering
  ensures that a macro is disabled whilst its expansion is being scanned,
  but that it is _not_ disabled whilst any arguments to it are being
*************** which illustrates many of the points abo
*** 547,567 ****
       #define foo(x) bar x
       foo(foo) (2)
  
! which fully expands to 'bar foo (2)'.  During pre-expansion of the
! argument, 'foo' does not expand even though the macro is enabled, since
  it has no following parenthesis [pre-expansion of an argument only uses
  tokens from that argument; it cannot take tokens from whatever follows
! the macro invocation].  This still leaves the argument token 'foo'
  eligible for future expansion.  Then, when re-scanning after argument
! replacement, the token 'foo' is rejected for expansion, and marked
  ineligible for future expansion, since the macro is now disabled.  It is
! disabled because the replacement list 'bar foo' of the macro is still on
  the context stack.
  
     If instead the algorithm looked for an opening parenthesis first and
  then tested whether the macro were disabled it would be subtly wrong.
! In the example above, the replacement list of 'foo' would be popped in
! the process of finding the parenthesis, re-enabling 'foo' and expanding
  it a second time.
  
  Looking for a function-like macro's opening parenthesis
--- 547,567 ----
       #define foo(x) bar x
       foo(foo) (2)
  
! which fully expands to â€˜bar foo (2)â€™.  During pre-expansion of the
! argument, â€˜fooâ€™ does not expand even though the macro is enabled, since
  it has no following parenthesis [pre-expansion of an argument only uses
  tokens from that argument; it cannot take tokens from whatever follows
! the macro invocation].  This still leaves the argument token â€˜fooâ€™
  eligible for future expansion.  Then, when re-scanning after argument
! replacement, the token â€˜fooâ€™ is rejected for expansion, and marked
  ineligible for future expansion, since the macro is now disabled.  It is
! disabled because the replacement list â€˜bar fooâ€™ of the macro is still on
  the context stack.
  
     If instead the algorithm looked for an opening parenthesis first and
  then tested whether the macro were disabled it would be subtly wrong.
! In the example above, the replacement list of â€˜fooâ€™ would be popped in
! the process of finding the parenthesis, re-enabling â€˜fooâ€™ and expanding
  it a second time.
  
  Looking for a function-like macro's opening parenthesis
*************** padding tokens.
*** 579,585 ****
  permitted by cpplib, because in general it might involve issues like
  restoring popped contexts onto the context stack, which are too hard.
  Instead, searching for the parenthesis is handled by a special function,
! 'funlike_invocation_p', which remembers padding information as it reads
  tokens.  If the next real token is not an opening parenthesis, it backs
  up that one token, and then pushes an extra context just containing the
  padding information if necessary.
--- 579,585 ----
  permitted by cpplib, because in general it might involve issues like
  restoring popped contexts onto the context stack, which are too hard.
  Instead, searching for the parenthesis is handled by a special function,
! â€˜funlike_invocation_pâ€™, which remembers padding information as it reads
  tokens.  If the next real token is not an opening parenthesis, it backs
  up that one token, and then pushes an extra context just containing the
  padding information if necessary.
*************** Marking tokens ineligible for future exp
*** 590,601 ****
  As discussed above, cpplib needs a way of marking tokens as
  unexpandable.  Since the tokens cpplib handles are read-only once they
  have been lexed, it instead makes a copy of the token and adds the flag
! 'NO_EXPAND' to the copy.
  
     For efficiency and to simplify memory management by avoiding having
  to remember to free these tokens, they are allocated as temporary tokens
  from the lexer's current token run (*note Lexing a line::) using the
! function '_cpp_temp_token'.  The tokens are then re-used once the
  current line of tokens has been read in.
  
     This might sound unsafe.  However, tokens runs are not re-used at the
--- 590,601 ----
  As discussed above, cpplib needs a way of marking tokens as
  unexpandable.  Since the tokens cpplib handles are read-only once they
  have been lexed, it instead makes a copy of the token and adds the flag
! â€˜NO_EXPANDâ€™ to the copy.
  
     For efficiency and to simplify memory management by avoiding having
  to remember to free these tokens, they are allocated as temporary tokens
  from the lexer's current token run (*note Lexing a line::) using the
! function â€˜_cpp_temp_tokenâ€™.  The tokens are then re-used once the
  current line of tokens has been read in.
  
     This might sound unsafe.  However, tokens runs are not re-used at the
*************** substitution.  For example:
*** 620,628 ****
       #define EMPTY
       #define f(x) =x=
       +PLUS -EMPTY- PLUS+ f(=)
!              ==> + + - - + + = = =
       _not_
!              ==> ++ -- ++ ===
  
     One solution would be to simply insert a space between all adjacent
  tokens.  However, we would like to keep space insertion to a minimum,
--- 620,628 ----
       #define EMPTY
       #define f(x) =x=
       +PLUS -EMPTY- PLUS+ f(=)
!              â†¦ + + - - + + = = =
       _not_
!              â†¦ ++ -- ++ ===
  
     One solution would be to simply insert a space between all adjacent
  tokens.  However, we would like to keep space insertion to a minimum,
*************** still try to abuse the preprocessor for
*** 631,646 ****
  Makefiles.
  
     For now, just notice that when tokens are added (or removed, as shown
! by the 'EMPTY' example) from the original lexed token stream, we need to
! check for accidental token pasting.  We call this "paste avoidance".
  Token addition and removal can only occur because of macro expansion,
  but accidental pasting can occur in many places: both before and after
  each macro replacement, each argument replacement, and additionally each
! token created by the '#' and '##' operators.
  
     Look at how the preprocessor gets whitespace output correct normally.
! The 'cpp_token' structure contains a flags byte, and one of those flags
! is 'PREV_WHITE'.  This is flagged by the lexer, and indicates that the
  token was preceded by whitespace of some form other than a new line.
  The stand-alone preprocessor can use this flag to decide whether to
  insert a space between tokens in the output.
--- 631,646 ----
  Makefiles.
  
     For now, just notice that when tokens are added (or removed, as shown
! by the â€˜EMPTYâ€™ example) from the original lexed token stream, we need to
! check for accidental token pasting.  We call this â€œpaste avoidanceâ€�.
  Token addition and removal can only occur because of macro expansion,
  but accidental pasting can occur in many places: both before and after
  each macro replacement, each argument replacement, and additionally each
! token created by the â€˜#â€™ and â€˜##â€™ operators.
  
     Look at how the preprocessor gets whitespace output correct normally.
! The â€˜cpp_tokenâ€™ structure contains a flags byte, and one of those flags
! is â€˜PREV_WHITEâ€™.  This is flagged by the lexer, and indicates that the
  token was preceded by whitespace of some form other than a new line.
  The stand-alone preprocessor can use this flag to decide whether to
  insert a space between tokens in the output.
*************** insert a space between tokens in the out
*** 649,675 ****
  
       #define add(x, y, z) x + y +z;
       sum = add (1,2, 3);
!              ==> sum = 1 + 2 +3;
  
!    The interesting thing here is that the tokens '1' and '2' are output
! with a preceding space, and '3' is output without a preceding space, but
  when lexed none of these tokens had that property.  Careful
! consideration reveals that '1' gets its preceding whitespace from the
! space preceding 'add' in the macro invocation, _not_ replacement list.
! '2' gets its whitespace from the space preceding the parameter 'y' in
! the macro replacement list, and '3' has no preceding space because
! parameter 'z' has none in the replacement list.
  
     Once lexed, tokens are effectively fixed and cannot be altered, since
  pointers to them might be held in many places, in particular by
  in-progress macro expansions.  So instead of modifying the two tokens
! above, the preprocessor inserts a special token, which I call a "padding
! token", into the token stream to indicate that spacing of the subsequent
  token is special.  The preprocessor inserts padding tokens in front of
  every macro expansion and expanded macro argument.  These point to a
! "source token" from which the subsequent real token should inherit its
! spacing.  In the above example, the source tokens are 'add' in the macro
! invocation, and 'y' and 'z' in the macro replacement list, respectively.
  
     It is quite easy to get multiple padding tokens in a row, for example
  if a macro's first replacement token expands straight into another
--- 649,675 ----
  
       #define add(x, y, z) x + y +z;
       sum = add (1,2, 3);
!              â†¦ sum = 1 + 2 +3;
  
!    The interesting thing here is that the tokens â€˜1â€™ and â€˜2â€™ are output
! with a preceding space, and â€˜3â€™ is output without a preceding space, but
  when lexed none of these tokens had that property.  Careful
! consideration reveals that â€˜1â€™ gets its preceding whitespace from the
! space preceding â€˜addâ€™ in the macro invocation, _not_ replacement list.
! â€˜2â€™ gets its whitespace from the space preceding the parameter â€˜yâ€™ in
! the macro replacement list, and â€˜3â€™ has no preceding space because
! parameter â€˜zâ€™ has none in the replacement list.
  
     Once lexed, tokens are effectively fixed and cannot be altered, since
  pointers to them might be held in many places, in particular by
  in-progress macro expansions.  So instead of modifying the two tokens
! above, the preprocessor inserts a special token, which I call a â€œpadding
! tokenâ€�, into the token stream to indicate that spacing of the subsequent
  token is special.  The preprocessor inserts padding tokens in front of
  every macro expansion and expanded macro argument.  These point to a
! â€œsource tokenâ€� from which the subsequent real token should inherit its
! spacing.  In the above example, the source tokens are â€˜addâ€™ in the macro
! invocation, and â€˜yâ€™ and â€˜zâ€™ in the macro replacement list, respectively.
  
     It is quite easy to get multiple padding tokens in a row, for example
  if a macro's first replacement token expands straight into another
*************** macro.
*** 678,687 ****
       #define foo bar
       #define bar baz
       [foo]
!              ==> [baz]
  
!    Here, two padding tokens are generated with sources the 'foo' token
! between the brackets, and the 'bar' token from foo's replacement list,
  respectively.  Clearly the first padding token is the one to use, so the
  output code should contain a rule that the first padding token in a
  sequence is the one that matters.
--- 678,687 ----
       #define foo bar
       #define bar baz
       [foo]
!              â†¦ [baz]
  
!    Here, two padding tokens are generated with sources the â€˜fooâ€™ token
! between the brackets, and the â€˜barâ€™ token from foo's replacement list,
  respectively.  Clearly the first padding token is the one to use, so the
  output code should contain a rule that the first padding token in a
  sequence is the one that matters.
*************** slightly:
*** 693,707 ****
       #define bar EMPTY baz
       #define EMPTY
       [foo] EMPTY;
!              ==> [ baz] ;
  
!    As shown, now there should be a space before 'baz' and the semicolon
  in the output.
  
!    The rules we decided above fail for 'baz': we generate three padding
! tokens, one per macro invocation, before the token 'baz'.  We would then
  have it take its spacing from the first of these, which carries source
! token 'foo' with no leading space.
  
     It is vital that cpplib get spacing correct in these examples since
  any of these macro expansions could be stringized, where spacing
--- 693,707 ----
       #define bar EMPTY baz
       #define EMPTY
       [foo] EMPTY;
!              â†¦ [ baz] ;
  
!    As shown, now there should be a space before â€˜bazâ€™ and the semicolon
  in the output.
  
!    The rules we decided above fail for â€˜bazâ€™: we generate three padding
! tokens, one per macro invocation, before the token â€˜bazâ€™.  We would then
  have it take its spacing from the first of these, which carries source
! token â€˜fooâ€™ with no leading space.
  
     It is vital that cpplib get spacing correct in these examples since
  any of these macro expansions could be stringized, where spacing
*************** matters.
*** 709,719 ****
  
     So, this demonstrates that not just entering macro and argument
  expansions, but leaving them requires special handling too.  I made
! cpplib insert a padding token with a 'NULL' source token when leaving
  macro expansions, as well as after each replaced argument in a macro's
  replacement list.  It also inserts appropriate padding tokens on either
! side of tokens created by the '#' and '##' operators.  I expanded the
! rule so that, if we see a padding token with a 'NULL' source token,
  _and_ that source token has no leading space, then we behave as if we
  have seen no padding tokens at all.  A quick check shows this rule will
  then get the above example correct as well.
--- 709,719 ----
  
     So, this demonstrates that not just entering macro and argument
  expansions, but leaving them requires special handling too.  I made
! cpplib insert a padding token with a â€˜NULLâ€™ source token when leaving
  macro expansions, as well as after each replaced argument in a macro's
  replacement list.  It also inserts appropriate padding tokens on either
! side of tokens created by the â€˜#â€™ and â€˜##â€™ operators.  I expanded the
! rule so that, if we see a padding token with a â€˜NULLâ€™ source token,
  _and_ that source token has no leading space, then we behave as if we
  have seen no padding tokens at all.  A quick check shows this rule will
  then get the above example correct as well.
*************** implementation of paste avoidance easy:
*** 725,731 ****
  preprocessor is fixing up spacing because of padding tokens, and it
  turns out that no space is needed, it has to take the extra step to
  check that a space is not needed after all to avoid an accidental paste.
! The function 'cpp_avoid_paste' advises whether a space is required
  between two consecutive tokens.  To avoid excessive spacing, it tries
  hard to only require a space if one is likely to be necessary, but for
  reasons of efficiency it is slightly conservative and might recommend a
--- 725,731 ----
  preprocessor is fixing up spacing because of padding tokens, and it
  turns out that no space is needed, it has to take the extra step to
  check that a space is not needed after all to avoid an accidental paste.
! The function â€˜cpp_avoid_pasteâ€™ advises whether a space is required
  between two consecutive tokens.  To avoid excessive spacing, it tries
  hard to only require a space if one is likely to be necessary, but for
  reasons of efficiency it is slightly conservative and might recommend a
*************** Just which line number anyway?
*** 743,771 ****
  There are three reasonable requirements a cpplib client might have for
  the line number of a token passed to it:
  
!    * The source line it was lexed on.
!    * The line it is output on.  This can be different to the line it was
       lexed on if, for example, there are intervening escaped newlines or
       C-style comments.  For example:
  
            foo /* A long
            comment */ bar \
            baz
!           =>
            foo bar baz
  
!    * If the token results from a macro expansion, the line of the macro
       name, or possibly the line of the closing parenthesis in the case
       of function-like macro expansion.
  
!    The 'cpp_token' structure contains 'line' and 'col' members.  The
  lexer fills these in with the line and column of the first character of
  the token.  Consequently, but maybe unexpectedly, a token from the
  replacement list of a macro expansion carries the location of the token
! within the '#define' directive, because cpplib expands a macro by
  returning pointers to the tokens in its replacement list.  The current
  implementation of cpplib assigns tokens created from built-in macros and
! the '#' and '##' operators the location of the most recently lexed
  token.  This is a because they are allocated from the lexer's token
  runs, and because of the way the diagnostic routines infer the
  appropriate location to report.
--- 743,771 ----
  There are three reasonable requirements a cpplib client might have for
  the line number of a token passed to it:
  
!    â€¢ The source line it was lexed on.
!    â€¢ The line it is output on.  This can be different to the line it was
       lexed on if, for example, there are intervening escaped newlines or
       C-style comments.  For example:
  
            foo /* A long
            comment */ bar \
            baz
!           â‡’
            foo bar baz
  
!    â€¢ If the token results from a macro expansion, the line of the macro
       name, or possibly the line of the closing parenthesis in the case
       of function-like macro expansion.
  
!    The â€˜cpp_tokenâ€™ structure contains â€˜lineâ€™ and â€˜colâ€™ members.  The
  lexer fills these in with the line and column of the first character of
  the token.  Consequently, but maybe unexpectedly, a token from the
  replacement list of a macro expansion carries the location of the token
! within the â€˜#defineâ€™ directive, because cpplib expands a macro by
  returning pointers to the tokens in its replacement list.  The current
  implementation of cpplib assigns tokens created from built-in macros and
! the â€˜#â€™ and â€˜##â€™ operators the location of the most recently lexed
  token.  This is a because they are allocated from the lexer's token
  runs, and because of the way the diagnostic routines infer the
  appropriate location to report.
*************** line other than the first.
*** 787,793 ****
  
     To solve these issues, cpplib provides a callback that is generated
  whenever it lexes a preprocessing token that starts a new logical line
! other than a directive.  It passes this token (which may be a 'CPP_EOF'
  token indicating the end of the translation unit) to the callback
  routine, which can then use the line and column of this token to produce
  correct output.
--- 787,793 ----
  
     To solve these issues, cpplib provides a callback that is generated
  whenever it lexes a preprocessing token that starts a new logical line
! other than a directive.  It passes this token (which may be a â€˜CPP_EOFâ€™
  token indicating the end of the translation unit) to the callback
  routine, which can then use the line and column of this token to produce
  correct output.
*************** starts counting from one.
*** 810,821 ****
  translation unit.  With some simple infrastructure, it is straight
  forward to map from this to the original source file and line number
  pair, saving space whenever line number information needs to be saved.
! The code the implements this mapping lies in the files 'line-map.cc' and
! 'line-map.h'.
  
     Command-line macros and assertions are implemented by pushing a
! buffer containing the right hand side of an equivalent '#define' or
! '#assert' directive.  Some built-in macros are handled similarly.  Since
  these are all processed before the first line of the main input file, it
  will typically have an assigned line closer to twenty than to one.
  
--- 810,821 ----
  translation unit.  With some simple infrastructure, it is straight
  forward to map from this to the original source file and line number
  pair, saving space whenever line number information needs to be saved.
! The code the implements this mapping lies in the files â€˜line-map.ccâ€™ and
! â€˜line-map.hâ€™.
  
     Command-line macros and assertions are implemented by pushing a
! buffer containing the right hand side of an equivalent â€˜#defineâ€™ or
! â€˜#assertâ€™ directive.  Some built-in macros are handled similarly.  Since
  these are all processed before the first line of the main input file, it
  will typically have an assigned line closer to twenty than to one.
  
*************** Header files are often of the form
*** 834,843 ****
  
  to prevent the compiler from processing them more than once.  The
  preprocessor notices such header files, so that if the header file
! appears in a subsequent '#include' directive and 'FOO' is defined, then
  it is ignored and it doesn't preprocess or even re-open the file a
! second time.  This is referred to as the "multiple include
! optimization".
  
     Under what circumstances is such an optimization valid?  If the file
  were included a second time, it can only be optimized away if that
--- 834,843 ----
  
  to prevent the compiler from processing them more than once.  The
  preprocessor notices such header files, so that if the header file
! appears in a subsequent â€˜#includeâ€™ directive and â€˜FOOâ€™ is defined, then
  it is ignored and it doesn't preprocess or even re-open the file a
! second time.  This is referred to as the â€œmultiple include
! optimizationâ€�.
  
     Under what circumstances is such an optimization valid?  If the file
  were included a second time, it can only be optimized away if that
*************** inclusion would result in no tokens to r
*** 845,856 ****
  directives to process.  Therefore the current implementation imposes
  requirements and makes some allowances as follows:
  
!   1. There must be no tokens outside the controlling '#if'-'#endif'
       pair, but whitespace and comments are permitted.
  
    2. There must be no directives outside the controlling directive pair,
!      but the "null directive" (a line containing nothing other than a
!      single '#' and possibly whitespace) is permitted.
  
    3. The opening directive must be of the form
  
--- 845,856 ----
  directives to process.  Therefore the current implementation imposes
  requirements and makes some allowances as follows:
  
!   1. There must be no tokens outside the controlling â€˜#ifâ€™-â€˜#endifâ€™
       pair, but whitespace and comments are permitted.
  
    2. There must be no directives outside the controlling directive pair,
!      but the â€œnull directiveâ€� (a line containing nothing other than a
!      single â€˜#â€™ and possibly whitespace) is permitted.
  
    3. The opening directive must be of the form
  
*************** requirements and makes some allowances a
*** 860,927 ****
  
            #if !defined FOO     [equivalently, #if !defined(FOO)]
  
!   4. In the second form above, the tokens forming the '#if' expression
       must have come directly from the source file--no macro expansion
       must have been involved.  This is because macro definitions can
       change, and tracking whether or not a relevant change has been made
       is not worth the implementation cost.
  
!   5. There can be no '#else' or '#elif' directives at the outer
       conditional block level, because they would probably contain
       something of interest to a subsequent pass.
  
     First, when pushing a new file on the buffer stack,
! '_stack_include_file' sets the controlling macro 'mi_cmacro' to 'NULL',
! and sets 'mi_valid' to 'true'.  This indicates that the preprocessor has
  not yet encountered anything that would invalidate the multiple-include
  optimization.  As described in the next few paragraphs, these two
  variables having these values effectively indicates top-of-file.
  
     When about to return a token that is not part of a directive,
! '_cpp_lex_token' sets 'mi_valid' to 'false'.  This enforces the
  constraint that tokens outside the controlling conditional block
  invalidate the optimization.
  
!    The 'do_if', when appropriate, and 'do_ifndef' directive handlers
! pass the controlling macro to the function 'push_conditional'.  cpplib
  maintains a stack of nested conditional blocks, and after processing
! every opening conditional this function pushes an 'if_stack' structure
  onto the stack.  In this structure it records the controlling macro for
  the block, provided there is one and we're at top-of-file (as described
! above).  If an '#elif' or '#else' directive is encountered, the
! controlling macro for that block is cleared to 'NULL'.  Otherwise, it
! survives until the '#endif' closing the block, upon which 'do_endif'
! sets 'mi_valid' to true and stores the controlling macro in 'mi_cmacro'.
  
!    '_cpp_handle_directive' clears 'mi_valid' when processing any
  directive other than an opening conditional and the null directive.
  With this, and requiring top-of-file to record a controlling macro, and
! no '#else' or '#elif' for it to survive and be copied to 'mi_cmacro' by
! 'do_endif', we have enforced the absence of directives outside the main
  conditional block for the optimization to be on.
  
!    Note that whilst we are inside the conditional block, 'mi_valid' is
! likely to be reset to 'false', but this does not matter since the
! closing '#endif' restores it to 'true' if appropriate.
  
!    Finally, since '_cpp_lex_direct' pops the file off the buffer stack
! at 'EOF' without returning a token, if the '#endif' directive was not
! followed by any tokens, 'mi_valid' is 'true' and '_cpp_pop_file_buffer'
  remembers the controlling macro associated with the file.  Subsequent
! calls to 'stack_include_file' result in no buffer being pushed if the
  controlling macro is defined, effecting the optimization.
  
     A quick word on how we handle the
  
       #if !defined FOO
  
! case.  '_cpp_parse_expr' and 'parse_defined' take steps to see whether
! the three stages '!', 'defined-expression' and 'end-of-directive' occur
! in order in a '#if' expression.  If so, they return the guard macro to
! 'do_if' in the variable 'mi_ind_cmacro', and otherwise set it to 'NULL'.
! 'enter_macro_context' sets 'mi_valid' to false, so if a macro was
  expanded whilst parsing any part of the expression, then the top-of-file
! test in 'push_conditional' fails and the optimization is turned off.
  
  
  File: cppinternals.info,  Node: Files,  Next: Concept Index,  Prev: Guard Macros,  Up: Top
--- 860,927 ----
  
            #if !defined FOO     [equivalently, #if !defined(FOO)]
  
!   4. In the second form above, the tokens forming the â€˜#ifâ€™ expression
       must have come directly from the source file--no macro expansion
       must have been involved.  This is because macro definitions can
       change, and tracking whether or not a relevant change has been made
       is not worth the implementation cost.
  
!   5. There can be no â€˜#elseâ€™ or â€˜#elifâ€™ directives at the outer
       conditional block level, because they would probably contain
       something of interest to a subsequent pass.
  
     First, when pushing a new file on the buffer stack,
! â€˜_stack_include_fileâ€™ sets the controlling macro â€˜mi_cmacroâ€™ to â€˜NULLâ€™,
! and sets â€˜mi_validâ€™ to â€˜trueâ€™.  This indicates that the preprocessor has
  not yet encountered anything that would invalidate the multiple-include
  optimization.  As described in the next few paragraphs, these two
  variables having these values effectively indicates top-of-file.
  
     When about to return a token that is not part of a directive,
! â€˜_cpp_lex_tokenâ€™ sets â€˜mi_validâ€™ to â€˜falseâ€™.  This enforces the
  constraint that tokens outside the controlling conditional block
  invalidate the optimization.
  
!    The â€˜do_ifâ€™, when appropriate, and â€˜do_ifndefâ€™ directive handlers
! pass the controlling macro to the function â€˜push_conditionalâ€™.  cpplib
  maintains a stack of nested conditional blocks, and after processing
! every opening conditional this function pushes an â€˜if_stackâ€™ structure
  onto the stack.  In this structure it records the controlling macro for
  the block, provided there is one and we're at top-of-file (as described
! above).  If an â€˜#elifâ€™ or â€˜#elseâ€™ directive is encountered, the
! controlling macro for that block is cleared to â€˜NULLâ€™.  Otherwise, it
! survives until the â€˜#endifâ€™ closing the block, upon which â€˜do_endifâ€™
! sets â€˜mi_validâ€™ to true and stores the controlling macro in â€˜mi_cmacroâ€™.
  
!    â€˜_cpp_handle_directiveâ€™ clears â€˜mi_validâ€™ when processing any
  directive other than an opening conditional and the null directive.
  With this, and requiring top-of-file to record a controlling macro, and
! no â€˜#elseâ€™ or â€˜#elifâ€™ for it to survive and be copied to â€˜mi_cmacroâ€™ by
! â€˜do_endifâ€™, we have enforced the absence of directives outside the main
  conditional block for the optimization to be on.
  
!    Note that whilst we are inside the conditional block, â€˜mi_validâ€™ is
! likely to be reset to â€˜falseâ€™, but this does not matter since the
! closing â€˜#endifâ€™ restores it to â€˜trueâ€™ if appropriate.
  
!    Finally, since â€˜_cpp_lex_directâ€™ pops the file off the buffer stack
! at â€˜EOFâ€™ without returning a token, if the â€˜#endifâ€™ directive was not
! followed by any tokens, â€˜mi_validâ€™ is â€˜trueâ€™ and â€˜_cpp_pop_file_bufferâ€™
  remembers the controlling macro associated with the file.  Subsequent
! calls to â€˜stack_include_fileâ€™ result in no buffer being pushed if the
  controlling macro is defined, effecting the optimization.
  
     A quick word on how we handle the
  
       #if !defined FOO
  
! case.  â€˜_cpp_parse_exprâ€™ and â€˜parse_definedâ€™ take steps to see whether
! the three stages â€˜!â€™, â€˜defined-expressionâ€™ and â€˜end-of-directiveâ€™ occur
! in order in a â€˜#ifâ€™ expression.  If so, they return the guard macro to
! â€˜do_ifâ€™ in the variable â€˜mi_ind_cmacroâ€™, and otherwise set it to â€˜NULLâ€™.
! â€˜enter_macro_contextâ€™ sets â€˜mi_validâ€™ to false, so if a macro was
  expanded whilst parsing any part of the expression, then the top-of-file
! test in â€˜push_conditionalâ€™ fails and the optimization is turned off.
  
  
  File: cppinternals.info,  Node: Files,  Next: Concept Index,  Prev: Guard Macros,  Up: Top
*************** File Handling
*** 930,942 ****
  *************
  
  Fairly obviously, the file handling code of cpplib resides in the file
! 'files.cc'.  It takes care of the details of file searching, opening,
  reading and caching, for both the main source file and all the headers
  it recursively includes.
  
     The basic strategy is to minimize the number of system calls.  On
! many systems, the basic 'open ()' and 'fstat ()' system calls can be
! quite expensive.  For every '#include'-d file, we need to try all the
  directories in the search path until we find a match.  Some projects,
  such as glibc, pass twenty or thirty include paths on the command line,
  so this can rapidly become time consuming.
--- 930,942 ----
  *************
  
  Fairly obviously, the file handling code of cpplib resides in the file
! â€˜files.ccâ€™.  It takes care of the details of file searching, opening,
  reading and caching, for both the main source file and all the headers
  it recursively includes.
  
     The basic strategy is to minimize the number of system calls.  On
! many systems, the basic â€˜open ()â€™ and â€˜fstat ()â€™ system calls can be
! quite expensive.  For every â€˜#includeâ€™-d file, we need to try all the
  directories in the search path until we find a match.  Some projects,
  such as glibc, pass twenty or thirty include paths on the command line,
  so this can rapidly become time consuming.
*************** repeating the filesystem queries whilst
*** 948,992 ****
  
     For each file we try to open, we store the constructed path in a
  splay tree.  This path first undergoes simplification by the function
! '_cpp_simplify_pathname'.  For example, '/usr/include/bits/../foo.h' is
! simplified to '/usr/include/foo.h' before we enter it in the splay tree
! and try to 'open ()' the file.  CPP will then find subsequent uses of
! 'foo.h', even as '/usr/include/foo.h', in the splay tree and save system
  calls.
  
     Further, it is likely the file contents have also been cached, saving
! a 'read ()' system call.  We don't bother caching the contents of header
  files that are re-inclusion protected, and whose re-inclusion macro is
  defined when we leave the header file for the first time.  If the host
  supports it, we try to map suitably large files into memory, rather than
  reading them in directly.
  
     The include paths are internally stored on a null-terminated
! singly-linked list, starting with the '"header.h"' directory search
! chain, which then links into the '<header.h>' directory chain.
  
!    Files included with the '<foo.h>' syntax start the lookup directly in
  the second half of this chain.  However, files included with the
! '"foo.h"' syntax start at the beginning of the chain, but with one extra
  directory prepended.  This is the directory of the current file; the one
! containing the '#include' directive.  Prepending this directory on a
! per-file basis is handled by the function 'search_from'.
  
     Note that a header included with a directory component, such as
! '#include "mydir/foo.h"' and opened as '/usr/local/include/mydir/foo.h',
! will have the complete path minus the basename 'foo.h' as the current
  directory.
  
     Enough information is stored in the splay tree that CPP can
  immediately tell whether it can skip the header file because of the
  multiple include optimization, whether the file didn't exist or couldn't
  be opened for some reason, or whether the header was flagged not to be
! re-used, as it is with the obsolete '#import' directive.
  
     For the benefit of MS-DOS filesystems with an 8.3 filename
  limitation, CPP offers the ability to treat various include file names
  as aliases for the real header files with shorter names.  The map from
! one to the other is found in a special file called 'header.gcc', stored
  in the command line (or system) include directories to which the mapping
  applies.  This may be higher up the directory tree than the full path to
  the file minus the base name.
--- 948,992 ----
  
     For each file we try to open, we store the constructed path in a
  splay tree.  This path first undergoes simplification by the function
! â€˜_cpp_simplify_pathnameâ€™.  For example, â€˜/usr/include/bits/../foo.hâ€™ is
! simplified to â€˜/usr/include/foo.hâ€™ before we enter it in the splay tree
! and try to â€˜open ()â€™ the file.  CPP will then find subsequent uses of
! â€˜foo.hâ€™, even as â€˜/usr/include/foo.hâ€™, in the splay tree and save system
  calls.
  
     Further, it is likely the file contents have also been cached, saving
! a â€˜read ()â€™ system call.  We don't bother caching the contents of header
  files that are re-inclusion protected, and whose re-inclusion macro is
  defined when we leave the header file for the first time.  If the host
  supports it, we try to map suitably large files into memory, rather than
  reading them in directly.
  
     The include paths are internally stored on a null-terminated
! singly-linked list, starting with the â€˜"header.h"â€™ directory search
! chain, which then links into the â€˜<header.h>â€™ directory chain.
  
!    Files included with the â€˜<foo.h>â€™ syntax start the lookup directly in
  the second half of this chain.  However, files included with the
! â€˜"foo.h"â€™ syntax start at the beginning of the chain, but with one extra
  directory prepended.  This is the directory of the current file; the one
! containing the â€˜#includeâ€™ directive.  Prepending this directory on a
! per-file basis is handled by the function â€˜search_fromâ€™.
  
     Note that a header included with a directory component, such as
! â€˜#include "mydir/foo.h"â€™ and opened as â€˜/usr/local/include/mydir/foo.hâ€™,
! will have the complete path minus the basename â€˜foo.hâ€™ as the current
  directory.
  
     Enough information is stored in the splay tree that CPP can
  immediately tell whether it can skip the header file because of the
  multiple include optimization, whether the file didn't exist or couldn't
  be opened for some reason, or whether the header was flagged not to be
! re-used, as it is with the obsolete â€˜#importâ€™ directive.
  
     For the benefit of MS-DOS filesystems with an 8.3 filename
  limitation, CPP offers the ability to treat various include file names
  as aliases for the real header files with shorter names.  The map from
! one to the other is found in a special file called â€˜header.gccâ€™, stored
  in the command line (or system) include directories to which the mapping
  applies.  This may be higher up the directory tree than the full path to
  the file minus the base name.
*************** Concept Index
*** 1026,1041 ****
  
  Tag Table:
  Node: Top905
! Node: Conventions2743
! Node: Lexer3685
! Ref: Invalid identifiers11600
! Ref: Lexing a line13550
! Node: Hash Nodes18319
! Node: Macro Expansion21198
! Node: Token Spacing30142
! Node: Line Numbering35998
! Node: Guard Macros40084
! Node: Files44875
! Node: Concept Index48342
  
  End Tag Table
--- 1026,1046 ----
  
  Tag Table:
  Node: Top905
! Node: Conventions2747
! Node: Lexer3709
! Ref: Invalid identifiers11844
! Ref: Lexing a line13850
! Node: Hash Nodes18679
! Node: Macro Expansion21620
! Node: Token Spacing30660
! Node: Line Numbering36640
! Node: Guard Macros40777
! Node: Files45800
! Node: Concept Index49355
  
  End Tag Table
+ 
+ 
+ Local Variables:
+ coding: utf-8
+ End:
diff -Nrcpad gcc-15.2.0/gcc/doc/extend.texi gcc-15.3.0/gcc/doc/extend.texi
*** gcc-15.2.0/gcc/doc/extend.texi	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/doc/extend.texi	Fri Jun 12 06:09:06 2026
*************** is computed.
*** 16971,16977 ****
  
  @smallexample
  struct V @{ char buf1[10]; int b; char buf2[10]; @} var;
! char *p = &var.buf1[1], *q = &var.b;
  
  /* Here the object p points to is var.  */
  assert (__builtin_object_size (p, 0) == sizeof (var) - 1);
--- 16971,16978 ----
  
  @smallexample
  struct V @{ char buf1[10]; int b; char buf2[10]; @} var;
! char *p = &var.buf1[1];
! int *q = &var.b;
  
  /* Here the object p points to is var.  */
  assert (__builtin_object_size (p, 0) == sizeof (var) - 1);
diff -Nrcpad gcc-15.2.0/gcc/doc/fsf-funding.7 gcc-15.3.0/gcc/doc/fsf-funding.7
*** gcc-15.2.0/gcc/doc/fsf-funding.7	Fri Aug  8 06:54:13 2025
--- gcc-15.3.0/gcc/doc/fsf-funding.7	Fri Jun 12 06:11:48 2026
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
--- 1,5 ----
! .\" -*- mode: troff; coding: utf-8 -*-
! .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
***************
*** 15,43 ****
  .ft R
  .fi
  ..
! .\" Set up some character translations and predefined strings.  \*(-- will
! .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
! .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
! .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
! .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
! .\" nothing in troff, for use with C<>.
! .tr \(*W-
! .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
  .ie n \{\
- .    ds -- \(*W-
- .    ds PI pi
- .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
- .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
- .    ds L" ""
- .    ds R" ""
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
- .    ds -- \|\(em\|
- .    ds PI \(*p
- .    ds L" ``
- .    ds R" ''
  .    ds C`
  .    ds C'
  'br\}
--- 16,27 ----
  .ft R
  .fi
  ..
! .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
  .ie n \{\
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
  .    ds C`
  .    ds C'
  'br\}
***************
*** 54,142 ****
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .if !\nF .nr F 0
! .if \nF>0 \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    if !\nF==2 \{\
! .        nr % 0
! .        nr F 2
  .    \}
  .\}
  .\"
! .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
! .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
! .    \" fudge factors for nroff and troff
! .if n \{\
! .    ds #H 0
! .    ds #V .8m
! .    ds #F .3m
! .    ds #[ \f1
! .    ds #] \fP
! .\}
! .if t \{\
! .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
! .    ds #V .6m
! .    ds #F 0
! .    ds #[ \&
! .    ds #] \&
! .\}
! .    \" simple accents for nroff and troff
! .if n \{\
! .    ds ' \&
! .    ds ` \&
! .    ds ^ \&
! .    ds , \&
! .    ds ~ ~
! .    ds /
! .\}
! .if t \{\
! .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
! .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
! .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
! .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
! .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
! .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
! .\}
! .    \" troff and (daisy-wheel) nroff accents
! .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
! .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
! .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
! .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
! .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
! .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
! .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
! .ds ae a\h'-(\w'a'u*4/10)'e
! .ds Ae A\h'-(\w'A'u*4/10)'E
! .    \" corrections for vroff
! .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
! .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
! .    \" for low resolution devices (crt and lpr)
! .if \n(.H>23 .if \n(.V>19 \
! \{\
! .    ds : e
! .    ds 8 ss
! .    ds o a
! .    ds d- d\h'-1'\(ga
! .    ds D- D\h'-1'\(hy
! .    ds th \o'bp'
! .    ds Th \o'LP'
! .    ds ae ae
! .    ds Ae AE
! .\}
! .rm #[ #] #H #V #F C
  .\" ========================================================================
  .\"
  .IX Title "FSF-FUNDING 7"
! .TH FSF-FUNDING 7 "2025-08-08" "gcc-15.2.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH "NAME"
  fsf\-funding \- Funding Free Software
! .SH "DESCRIPTION"
  .IX Header "DESCRIPTION"
  .SS "Funding Free Software"
  .IX Subsection "Funding Free Software"
--- 38,71 ----
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .nr rF 0
! .if \n(.g .if rF .nr rF 1
! .if (\n(rF:(\n(.g==0)) \{\
! .    if \nF \{\
! .        de IX
! .        tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .        if !\nF==2 \{\
! .            nr % 0
! .            nr F 2
! .        \}
  .    \}
  .\}
+ .rr rF
  .\"
! .\" Required to disable full justification in groff 1.23.0.
! .if n .ds AD l
  .\" ========================================================================
  .\"
  .IX Title "FSF-FUNDING 7"
! .TH FSF-FUNDING 7 2026-06-12 gcc-15.3.0 GNU
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH NAME
  fsf\-funding \- Funding Free Software
! .SH DESCRIPTION
  .IX Header "DESCRIPTION"
  .SS "Funding Free Software"
  .IX Subsection "Funding Free Software"
*************** development.  The most effective approac
*** 146,152 ****
  commercial redistributors to donate.
  .PP
  Users of free software systems can boost the pace of development by
! encouraging for-a-fee distributors to donate part of their selling price
  to free software developers\-\-\-the Free Software Foundation, and others.
  .PP
  The way to convince distributors to do this is to demand it and expect
--- 75,81 ----
  commercial redistributors to donate.
  .PP
  Users of free software systems can boost the pace of development by
! encouraging for\-a\-fee distributors to donate part of their selling price
  to free software developers\-\-\-the Free Software Foundation, and others.
  .PP
  The way to convince distributors to do this is to demand it and expect
*************** how much they give to free software deve
*** 155,166 ****
  they must compete to be the one who gives the most.
  .PP
  To make this approach work, you must insist on numbers that you can
! compare, such as, \*(L"We will donate ten dollars to the Frobnitz project
! for each disk sold.\*(R"  Don't be satisfied with a vague promise, such as
! \&\*(L"A portion of the profits are donated,\*(R" since it doesn't give a basis
  for comparison.
  .PP
! Even a precise fraction \*(L"of the profits from this disk\*(R" is not very
  meaningful, since creative accounting and unrelated business decisions
  can greatly alter what fraction of the sales price counts as profit.
  If the price you pay is \f(CW$50\fR, ten percent of the profit is probably
--- 84,95 ----
  they must compete to be the one who gives the most.
  .PP
  To make this approach work, you must insist on numbers that you can
! compare, such as, "We will donate ten dollars to the Frobnitz project
! for each disk sold."  Don\*(Aqt be satisfied with a vague promise, such as
! "A portion of the profits are donated," since it doesn\*(Aqt give a basis
  for comparison.
  .PP
! Even a precise fraction "of the profits from this disk" is not very
  meaningful, since creative accounting and unrelated business decisions
  can greatly alter what fraction of the sales price counts as profit.
  If the price you pay is \f(CW$50\fR, ten percent of the profit is probably
*************** less than a dollar; it might be a few ce
*** 168,188 ****
  .PP
  Some redistributors do development work themselves.  This is useful too;
  but to keep everyone honest, you need to inquire how much they do, and
! what kind.  Some kinds of development make much more long-term
  difference than others.  For example, maintaining a separate version of
  a program contributes very little; maintaining the standard version of a
  program for the whole community contributes much.  Easy new ports
  contribute little, since someone else would surely do them; difficult
! ports such as adding a new \s-1CPU\s0 to the \s-1GNU\s0 Compiler Collection contribute more;
  major new features or packages contribute the most.
  .PP
! By establishing the idea that supporting further development is \*(L"the
! proper thing to do\*(R" when distributing free software for a fee, we can
  assure a steady flow of resources into making more free software.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7).
! .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 1994 Free Software Foundation, Inc.
  Verbatim copying and redistribution of this section is permitted
--- 97,117 ----
  .PP
  Some redistributors do development work themselves.  This is useful too;
  but to keep everyone honest, you need to inquire how much they do, and
! what kind.  Some kinds of development make much more long\-term
  difference than others.  For example, maintaining a separate version of
  a program contributes very little; maintaining the standard version of a
  program for the whole community contributes much.  Easy new ports
  contribute little, since someone else would surely do them; difficult
! ports such as adding a new CPU to the GNU Compiler Collection contribute more;
  major new features or packages contribute the most.
  .PP
! By establishing the idea that supporting further development is "the
! proper thing to do" when distributing free software for a fee, we can
  assure a steady flow of resources into making more free software.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fBgpl\fR\|(7), \fBgfdl\fR\|(7).
! .SH COPYRIGHT
  .IX Header "COPYRIGHT"
  Copyright (c) 1994 Free Software Foundation, Inc.
  Verbatim copying and redistribution of this section is permitted
diff -Nrcpad gcc-15.2.0/gcc/doc/g++.1 gcc-15.3.0/gcc/doc/g++.1
*** gcc-15.2.0/gcc/doc/g++.1	Fri Aug  8 07:10:01 2025
--- gcc-15.3.0/gcc/doc/g++.1	Fri Jun 12 06:28:40 2026
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
--- 1,5 ----
! .\" -*- mode: troff; coding: utf-8 -*-
! .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
***************
*** 15,43 ****
  .ft R
  .fi
  ..
! .\" Set up some character translations and predefined strings.  \*(-- will
! .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
! .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
! .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
! .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
! .\" nothing in troff, for use with C<>.
! .tr \(*W-
! .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
  .ie n \{\
- .    ds -- \(*W-
- .    ds PI pi
- .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
- .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
- .    ds L" ""
- .    ds R" ""
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
- .    ds -- \|\(em\|
- .    ds PI \(*p
- .    ds L" ``
- .    ds R" ''
  .    ds C`
  .    ds C'
  'br\}
--- 16,27 ----
  .ft R
  .fi
  ..
! .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
  .ie n \{\
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
  .    ds C`
  .    ds C'
  'br\}
***************
*** 54,157 ****
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .if !\nF .nr F 0
! .if \nF>0 \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    if !\nF==2 \{\
! .        nr % 0
! .        nr F 2
  .    \}
  .\}
  .\"
! .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
! .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
! .    \" fudge factors for nroff and troff
! .if n \{\
! .    ds #H 0
! .    ds #V .8m
! .    ds #F .3m
! .    ds #[ \f1
! .    ds #] \fP
! .\}
! .if t \{\
! .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
! .    ds #V .6m
! .    ds #F 0
! .    ds #[ \&
! .    ds #] \&
! .\}
! .    \" simple accents for nroff and troff
! .if n \{\
! .    ds ' \&
! .    ds ` \&
! .    ds ^ \&
! .    ds , \&
! .    ds ~ ~
! .    ds /
! .\}
! .if t \{\
! .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
! .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
! .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
! .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
! .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
! .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
! .\}
! .    \" troff and (daisy-wheel) nroff accents
! .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
! .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
! .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
! .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
! .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
! .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
! .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
! .ds ae a\h'-(\w'a'u*4/10)'e
! .ds Ae A\h'-(\w'A'u*4/10)'E
! .    \" corrections for vroff
! .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
! .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
! .    \" for low resolution devices (crt and lpr)
! .if \n(.H>23 .if \n(.V>19 \
! \{\
! .    ds : e
! .    ds 8 ss
! .    ds o a
! .    ds d- d\h'-1'\(ga
! .    ds D- D\h'-1'\(hy
! .    ds th \o'bp'
! .    ds Th \o'LP'
! .    ds ae ae
! .    ds Ae AE
! .\}
! .rm #[ #] #H #V #F C
  .\" ========================================================================
  .\"
  .IX Title "GCC 1"
! .TH GCC 1 "2025-08-08" "gcc-15.2.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH "NAME"
  gcc \- GNU project C and C++ compiler
! .SH "SYNOPSIS"
  .IX Header "SYNOPSIS"
  gcc [\fB\-c\fR|\fB\-S\fR|\fB\-E\fR] [\fB\-std=\fR\fIstandard\fR]
      [\fB\-g\fR] [\fB\-pg\fR] [\fB\-O\fR\fIlevel\fR]
      [\fB\-W\fR\fIwarn\fR...] [\fB\-Wpedantic\fR]
      [\fB\-I\fR\fIdir\fR...] [\fB\-L\fR\fIdir\fR...]
      [\fB\-D\fR\fImacro\fR[=\fIdefn\fR]...] [\fB\-U\fR\fImacro\fR]
!     [\fB\-f\fR\fIoption\fR...] [\fB\-m\fR\fImachine-option\fR...]
      [\fB\-o\fR \fIoutfile\fR] [@\fIfile\fR] \fIinfile\fR...
  .PP
  Only the most useful options are listed here; see below for the
  remainder.  \fBg++\fR accepts mostly the same options as \fBgcc\fR.
! .SH "DESCRIPTION"
  .IX Header "DESCRIPTION"
! When you invoke \s-1GCC,\s0 it normally does preprocessing, compilation,
! assembly and linking.  The \*(L"overall options\*(R" allow you to stop this
  process at an intermediate stage.  For example, the \fB\-c\fR option
  says not to run the linker.  Then the output consists of object files
  output by the assembler.
--- 38,86 ----
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .nr rF 0
! .if \n(.g .if rF .nr rF 1
! .if (\n(rF:(\n(.g==0)) \{\
! .    if \nF \{\
! .        de IX
! .        tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .        if !\nF==2 \{\
! .            nr % 0
! .            nr F 2
! .        \}
  .    \}
  .\}
+ .rr rF
  .\"
! .\" Required to disable full justification in groff 1.23.0.
! .if n .ds AD l
  .\" ========================================================================
  .\"
  .IX Title "GCC 1"
! .TH GCC 1 2026-06-12 gcc-15.3.0 GNU
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH NAME
  gcc \- GNU project C and C++ compiler
! .SH SYNOPSIS
  .IX Header "SYNOPSIS"
  gcc [\fB\-c\fR|\fB\-S\fR|\fB\-E\fR] [\fB\-std=\fR\fIstandard\fR]
      [\fB\-g\fR] [\fB\-pg\fR] [\fB\-O\fR\fIlevel\fR]
      [\fB\-W\fR\fIwarn\fR...] [\fB\-Wpedantic\fR]
      [\fB\-I\fR\fIdir\fR...] [\fB\-L\fR\fIdir\fR...]
      [\fB\-D\fR\fImacro\fR[=\fIdefn\fR]...] [\fB\-U\fR\fImacro\fR]
!     [\fB\-f\fR\fIoption\fR...] [\fB\-m\fR\fImachine\-option\fR...]
      [\fB\-o\fR \fIoutfile\fR] [@\fIfile\fR] \fIinfile\fR...
  .PP
  Only the most useful options are listed here; see below for the
  remainder.  \fBg++\fR accepts mostly the same options as \fBgcc\fR.
! .SH DESCRIPTION
  .IX Header "DESCRIPTION"
! When you invoke GCC, it normally does preprocessing, compilation,
! assembly and linking.  The "overall options" allow you to stop this
  process at an intermediate stage.  For example, the \fB\-c\fR option
  says not to run the linker.  Then the output consists of object files
  output by the assembler.
*************** control the preprocessor and others the
*** 161,184 ****
  options control the assembler and linker; most of these are not
  documented here, since you rarely need to use any of them.
  .PP
! Most of the command-line options that you can use with \s-1GCC\s0 are useful
  for C programs; when an option is only useful with another language
! (usually \*(C+), the explanation says so explicitly.  If the description
  for a particular option does not mention a source language, you can use
  that option with all supported languages.
  .PP
! The usual way to run \s-1GCC\s0 is to run the executable called \fBgcc\fR, or
! \&\fImachine\fR\fB\-gcc\fR when cross-compiling, or
! \&\fImachine\fR\fB\-gcc\-\fR\fIversion\fR to run a specific version of \s-1GCC.\s0
! When you compile \*(C+ programs, you should invoke \s-1GCC\s0 as \fBg++\fR
  instead.
  .PP
  The \fBgcc\fR program accepts options and file names as operands.  Many
! options have multi-letter names; therefore multiple single-letter options
  may \fInot\fR be grouped: \fB\-dv\fR is very different from \fB\-d\ \-v\fR.
  .PP
  You can mix options and other arguments.  For the most part, the order
! you use doesn't matter.  Order does matter when you use several
  options of the same kind; for example, if you specify \fB\-L\fR more
  than once, the directories are searched in the order specified.  Also,
  the placement of the \fB\-l\fR option is significant.
--- 90,113 ----
  options control the assembler and linker; most of these are not
  documented here, since you rarely need to use any of them.
  .PP
! Most of the command\-line options that you can use with GCC are useful
  for C programs; when an option is only useful with another language
! (usually C++), the explanation says so explicitly.  If the description
  for a particular option does not mention a source language, you can use
  that option with all supported languages.
  .PP
! The usual way to run GCC is to run the executable called \fBgcc\fR, or
! \&\fImachine\fR\fB\-gcc\fR when cross\-compiling, or
! \&\fImachine\fR\fB\-gcc\-\fR\fIversion\fR to run a specific version of GCC.
! When you compile C++ programs, you should invoke GCC as \fBg++\fR
  instead.
  .PP
  The \fBgcc\fR program accepts options and file names as operands.  Many
! options have multi\-letter names; therefore multiple single\-letter options
  may \fInot\fR be grouped: \fB\-dv\fR is very different from \fB\-d\ \-v\fR.
  .PP
  You can mix options and other arguments.  For the most part, the order
! you use doesn\*(Aqt matter.  Order does matter when you use several
  options of the same kind; for example, if you specify \fB\-L\fR more
  than once, the directories are searched in the order specified.  Also,
  the placement of the \fB\-l\fR option is significant.
*************** integers followed by a byte size suffix
*** 201,210 ****
  such as \f(CW\*(C`kB\*(C'\fR and \f(CW\*(C`KiB\*(C'\fR for kilobyte and kibibyte, respectively,
  \&\f(CW\*(C`MB\*(C'\fR and \f(CW\*(C`MiB\*(C'\fR for megabyte and mebibyte, \f(CW\*(C`GB\*(C'\fR and
  \&\f(CW\*(C`GiB\*(C'\fR for gigabyte and gigibyte, and so on.  Such arguments are
! designated by \fIbyte-size\fR in the following text.  Refer to the \s-1NIST,
! IEC,\s0 and other relevant national and international standards for the full
  listing and explanation of the binary and decimal byte size prefixes.
! .SH "OPTIONS"
  .IX Header "OPTIONS"
  .SS "Option Summary"
  .IX Subsection "Option Summary"
--- 130,139 ----
  such as \f(CW\*(C`kB\*(C'\fR and \f(CW\*(C`KiB\*(C'\fR for kilobyte and kibibyte, respectively,
  \&\f(CW\*(C`MB\*(C'\fR and \f(CW\*(C`MiB\*(C'\fR for megabyte and mebibyte, \f(CW\*(C`GB\*(C'\fR and
  \&\f(CW\*(C`GiB\*(C'\fR for gigabyte and gigibyte, and so on.  Such arguments are
! designated by \fIbyte\-size\fR in the following text.  Refer to the NIST,
! IEC, and other relevant national and international standards for the full
  listing and explanation of the binary and decimal byte size prefixes.
! .SH OPTIONS
  .IX Header "OPTIONS"
  .SS "Option Summary"
  .IX Subsection "Option Summary"
*************** in the following sections.
*** 231,238 ****
  \&\fB\-fplan9\-extensions  \-fsigned\-bitfields  \-funsigned\-bitfields
  \&\-fsigned\-char  \-funsigned\-char  \-fstrict\-flex\-arrays[=\fR\fIn\fR\fB]
  \&\-fsso\-struct=\fR\fIendianness\fR
! .IP "\fI\*(C+ Language Options\fR" 4
! .IX Item " Language Options"
  \&\fB\-fabi\-version=\fR\fIn\fR  \fB\-fno\-access\-control
  \&\-faligned\-new=\fR\fIn\fR  \fB\-fno\-assume\-sane\-operators\-new\-delete
  \&\-fchar8_t  \-fcheck\-new
--- 160,167 ----
  \&\fB\-fplan9\-extensions  \-fsigned\-bitfields  \-funsigned\-bitfields
  \&\-fsigned\-char  \-funsigned\-char  \-fstrict\-flex\-arrays[=\fR\fIn\fR\fB]
  \&\-fsso\-struct=\fR\fIendianness\fR
! .IP "\fIC++ Language Options\fR" 4
! .IX Item "C++ Language Options"
  \&\fB\-fabi\-version=\fR\fIn\fR  \fB\-fno\-access\-control
  \&\-faligned\-new=\fR\fIn\fR  \fB\-fno\-assume\-sane\-operators\-new\-delete
  \&\-fchar8_t  \-fcheck\-new
*************** in the following sections.
*** 298,306 ****
  \&\-Wno\-template\-id\-cdtor  \-Wtemplate\-names\-tu\-local
  \&\-Wno\-terminate  \-Wno\-vexing\-parse  \-Wvirtual\-inheritance
  \&\-Wno\-virtual\-move\-assign  \-Wvolatile\fR
! .IP "\fIObjective-C and Objective\-\*(C+ Language Options\fR" 4
! .IX Item "Objective-C and Objective- Language Options"
! \&\fB\-fconstant\-string\-class=\fR\fIclass-name\fR
  \&\fB\-fgnu\-runtime  \-fnext\-runtime
  \&\-fno\-nil\-receivers
  \&\-fobjc\-abi\-version=\fR\fIn\fR
--- 227,235 ----
  \&\-Wno\-template\-id\-cdtor  \-Wtemplate\-names\-tu\-local
  \&\-Wno\-terminate  \-Wno\-vexing\-parse  \-Wvirtual\-inheritance
  \&\-Wno\-virtual\-move\-assign  \-Wvolatile\fR
! .IP "\fIObjective\-C and Objective\-C++ Language Options\fR" 4
! .IX Item "Objective-C and Objective-C++ Language Options"
! \&\fB\-fconstant\-string\-class=\fR\fIclass\-name\fR
  \&\fB\-fgnu\-runtime  \-fnext\-runtime
  \&\-fno\-nil\-receivers
  \&\-fobjc\-abi\-version=\fR\fIn\fR
*************** in the following sections.
*** 323,339 ****
  .IX Item "OpenMP and OpenACC Options"
  \&\fB\-foffload=\fR\fIarg\fR  \fB\-foffload\-options=\fR\fIarg\fR
  \&\fB\-fopenacc  \-fopenacc\-dim=\fR\fIgeom\fR
! \&\fB\-fopenmp  \-fopenmp\-simd  \-fopenmp\-target\-simd\-clone\fR[\fB=\fR\fIdevice-type\fR]
  .IP "\fIDiagnostic Message Formatting Options\fR" 4
  .IX Item "Diagnostic Message Formatting Options"
  \&\fB\-fmessage\-length=\fR\fIn\fR
  \&\fB\-fdiagnostics\-plain\-output
! \&\-fdiagnostics\-show\-location=\fR[\fBonce\fR|\fBevery-line\fR]
  \&\fB\-fdiagnostics\-color=\fR[\fBauto\fR|\fBnever\fR|\fBalways\fR]
  \&\fB\-fdiagnostics\-urls=\fR[\fBauto\fR|\fBnever\fR|\fBalways\fR]
! \&\fB\-fdiagnostics\-format=\fR[\fBtext\fR|\fBsarif-stderr\fR|\fBsarif-file\fR|\fBjson\fR|\fBjson-stderr\fR|\fBjson-file\fR]
! \&\fB\-fdiagnostics\-add\-output=\fR\fIDIAGNOSTICS-OUTPUT-SPEC\fR
! \&\fB\-fdiagnostics\-set\-output=\fR\fIDIAGNOSTICS-OUTPUT-SPEC\fR
  \&\fB\-fno\-diagnostics\-json\-formatting
  \&\-fno\-diagnostics\-show\-option  \-fno\-diagnostics\-show\-caret
  \&\-fno\-diagnostics\-show\-event\-links
--- 252,268 ----
  .IX Item "OpenMP and OpenACC Options"
  \&\fB\-foffload=\fR\fIarg\fR  \fB\-foffload\-options=\fR\fIarg\fR
  \&\fB\-fopenacc  \-fopenacc\-dim=\fR\fIgeom\fR
! \&\fB\-fopenmp  \-fopenmp\-simd  \-fopenmp\-target\-simd\-clone\fR[\fB=\fR\fIdevice\-type\fR]
  .IP "\fIDiagnostic Message Formatting Options\fR" 4
  .IX Item "Diagnostic Message Formatting Options"
  \&\fB\-fmessage\-length=\fR\fIn\fR
  \&\fB\-fdiagnostics\-plain\-output
! \&\-fdiagnostics\-show\-location=\fR[\fBonce\fR|\fBevery\-line\fR]
  \&\fB\-fdiagnostics\-color=\fR[\fBauto\fR|\fBnever\fR|\fBalways\fR]
  \&\fB\-fdiagnostics\-urls=\fR[\fBauto\fR|\fBnever\fR|\fBalways\fR]
! \&\fB\-fdiagnostics\-format=\fR[\fBtext\fR|\fBsarif\-stderr\fR|\fBsarif\-file\fR|\fBjson\fR|\fBjson\-stderr\fR|\fBjson\-file\fR]
! \&\fB\-fdiagnostics\-add\-output=\fR\fIDIAGNOSTICS\-OUTPUT\-SPEC\fR
! \&\fB\-fdiagnostics\-set\-output=\fR\fIDIAGNOSTICS\-OUTPUT\-SPEC\fR
  \&\fB\-fno\-diagnostics\-json\-formatting
  \&\-fno\-diagnostics\-show\-option  \-fno\-diagnostics\-show\-caret
  \&\-fno\-diagnostics\-show\-event\-links
*************** in the following sections.
*** 344,350 ****
  \&\-fdiagnostics\-minimum\-margin\-width=\fR\fIwidth\fR
  \&\fB\-fdiagnostics\-parseable\-fixits  \-fdiagnostics\-generate\-patch
  \&\-fdiagnostics\-show\-template\-tree  \-fno\-elide\-type
! \&\-fdiagnostics\-path\-format=\fR[\fBnone\fR|\fBseparate-events\fR|\fBinline-events\fR]
  \&\fB\-fdiagnostics\-show\-path\-depths
  \&\-fno\-show\-column
  \&\-fdiagnostics\-column\-unit=\fR[\fBdisplay\fR|\fBbyte\fR]
--- 273,279 ----
  \&\-fdiagnostics\-minimum\-margin\-width=\fR\fIwidth\fR
  \&\fB\-fdiagnostics\-parseable\-fixits  \-fdiagnostics\-generate\-patch
  \&\-fdiagnostics\-show\-template\-tree  \-fno\-elide\-type
! \&\-fdiagnostics\-path\-format=\fR[\fBnone\fR|\fBseparate\-events\fR|\fBinline\-events\fR]
  \&\fB\-fdiagnostics\-show\-path\-depths
  \&\-fno\-show\-column
  \&\-fdiagnostics\-column\-unit=\fR[\fBdisplay\fR|\fBbyte\fR]
*************** in the following sections.
*** 357,364 ****
  \&\-pedantic\-errors \-fpermissive
  \&\-w  \-Wextra  \-Wall  \-Wabi=\fR\fIn\fR
  \&\fB\-Waddress  \-Wno\-address\-of\-packed\-member  \-Waggregate\-return
! \&\-Walloc\-size  \-Walloc\-size\-larger\-than=\fR\fIbyte-size\fR  \fB\-Walloc\-zero
! \&\-Walloca  \-Walloca\-larger\-than=\fR\fIbyte-size\fR
  \&\fB\-Wno\-aggressive\-loop\-optimizations
  \&\-Warith\-conversion
  \&\-Warray\-bounds  \-Warray\-bounds=\fR\fIn\fR  \fB\-Warray\-compare
--- 286,293 ----
  \&\-pedantic\-errors \-fpermissive
  \&\-w  \-Wextra  \-Wall  \-Wabi=\fR\fIn\fR
  \&\fB\-Waddress  \-Wno\-address\-of\-packed\-member  \-Waggregate\-return
! \&\-Walloc\-size  \-Walloc\-size\-larger\-than=\fR\fIbyte\-size\fR  \fB\-Walloc\-zero
! \&\-Walloca  \-Walloca\-larger\-than=\fR\fIbyte\-size\fR
  \&\fB\-Wno\-aggressive\-loop\-optimizations
  \&\-Warith\-conversion
  \&\-Warray\-bounds  \-Warray\-bounds=\fR\fIn\fR  \fB\-Warray\-compare
*************** in the following sections.
*** 397,403 ****
  \&\-Wformat\-nonliteral  \-Wformat\-overflow=\fR\fIn\fR
  \&\fB\-Wformat\-security  \-Wformat\-signedness  \-Wformat\-truncation=\fR\fIn\fR
  \&\fB\-Wformat\-y2k  \-Wframe\-address
! \&\-Wframe\-larger\-than=\fR\fIbyte-size\fR  \fB\-Wno\-free\-nonheap\-object
  \&\-Wheader\-guard  \-Wno\-if\-not\-aligned  \-Wno\-ignored\-attributes
  \&\-Wignored\-qualifiers  \-Wno\-incompatible\-pointer\-types  \-Whardened
  \&\-Wimplicit  \-Wimplicit\-fallthrough  \-Wimplicit\-fallthrough=\fR\fIn\fR
--- 326,332 ----
  \&\-Wformat\-nonliteral  \-Wformat\-overflow=\fR\fIn\fR
  \&\fB\-Wformat\-security  \-Wformat\-signedness  \-Wformat\-truncation=\fR\fIn\fR
  \&\fB\-Wformat\-y2k  \-Wframe\-address
! \&\-Wframe\-larger\-than=\fR\fIbyte\-size\fR  \fB\-Wno\-free\-nonheap\-object
  \&\-Wheader\-guard  \-Wno\-if\-not\-aligned  \-Wno\-ignored\-attributes
  \&\-Wignored\-qualifiers  \-Wno\-incompatible\-pointer\-types  \-Whardened
  \&\-Wimplicit  \-Wimplicit\-fallthrough  \-Wimplicit\-fallthrough=\fR\fIn\fR
*************** in the following sections.
*** 406,412 ****
  \&\-Winit\-self  \-Winline  \-Wno\-int\-conversion  \-Wint\-in\-bool\-context
  \&\-Wno\-int\-to\-pointer\-cast  \-Wno\-invalid\-memory\-model
  \&\-Winvalid\-pch  \-Winvalid\-utf8  \-Wno\-unicode  \-Wjump\-misses\-init
! \&\-Wlarger\-than=\fR\fIbyte-size\fR  \fB\-Wleading\-whitespace=\fR\fIkind\fR
  \&\fB\-Wlogical\-not\-parentheses  \-Wlogical\-op
  \&\-Wlong\-long  \-Wno\-lto\-type\-mismatch \-Wmain  \-Wmaybe\-uninitialized
  \&\-Wmemset\-elt\-size  \-Wmemset\-transposed\-args
--- 335,341 ----
  \&\-Winit\-self  \-Winline  \-Wno\-int\-conversion  \-Wint\-in\-bool\-context
  \&\-Wno\-int\-to\-pointer\-cast  \-Wno\-invalid\-memory\-model
  \&\-Winvalid\-pch  \-Winvalid\-utf8  \-Wno\-unicode  \-Wjump\-misses\-init
! \&\-Wlarger\-than=\fR\fIbyte\-size\fR  \fB\-Wleading\-whitespace=\fR\fIkind\fR
  \&\fB\-Wlogical\-not\-parentheses  \-Wlogical\-op
  \&\-Wlong\-long  \-Wno\-lto\-type\-mismatch \-Wmain  \-Wmaybe\-uninitialized
  \&\-Wmemset\-elt\-size  \-Wmemset\-transposed\-args
*************** in the following sections.
*** 436,447 ****
  \&\-Wno\-sizeof\-array\-argument
  \&\-Wsizeof\-array\-div
  \&\-Wsizeof\-pointer\-div  \-Wsizeof\-pointer\-memaccess
! \&\-Wstack\-protector  \-Wstack\-usage=\fR\fIbyte-size\fR  \fB\-Wstrict\-aliasing
  \&\-Wstrict\-aliasing=n  \-Wstrict\-overflow  \-Wstrict\-overflow=\fR\fIn\fR
  \&\fB\-Wstring\-compare
  \&\-Wno\-stringop\-overflow \-Wno\-stringop\-overread
  \&\-Wno\-stringop\-truncation  \-Wstrict\-flex\-arrays
! \&\-Wsuggest\-attribute=\fR\fIattribute-name\fR
  \&\fB\-Wswitch  \-Wno\-switch\-bool  \-Wswitch\-default  \-Wswitch\-enum
  \&\-Wno\-switch\-outside\-range  \-Wno\-switch\-unreachable  \-Wsync\-nand
  \&\-Wsystem\-headers  \-Wtautological\-compare  \-Wtrailing\-whitespace
--- 365,376 ----
  \&\-Wno\-sizeof\-array\-argument
  \&\-Wsizeof\-array\-div
  \&\-Wsizeof\-pointer\-div  \-Wsizeof\-pointer\-memaccess
! \&\-Wstack\-protector  \-Wstack\-usage=\fR\fIbyte\-size\fR  \fB\-Wstrict\-aliasing
  \&\-Wstrict\-aliasing=n  \-Wstrict\-overflow  \-Wstrict\-overflow=\fR\fIn\fR
  \&\fB\-Wstring\-compare
  \&\-Wno\-stringop\-overflow \-Wno\-stringop\-overread
  \&\-Wno\-stringop\-truncation  \-Wstrict\-flex\-arrays
! \&\-Wsuggest\-attribute=\fR\fIattribute\-name\fR
  \&\fB\-Wswitch  \-Wno\-switch\-bool  \-Wswitch\-default  \-Wswitch\-enum
  \&\-Wno\-switch\-outside\-range  \-Wno\-switch\-unreachable  \-Wsync\-nand
  \&\-Wsystem\-headers  \-Wtautological\-compare  \-Wtrailing\-whitespace
*************** in the following sections.
*** 460,466 ****
  \&\-Wuse\-after\-free  \-Wuse\-after\-free=\fR\fIn\fR  \fB\-Wuseless\-cast
  \&\-Wno\-varargs  \-Wvariadic\-macros
  \&\-Wvector\-operation\-performance
! \&\-Wvla  \-Wvla\-larger\-than=\fR\fIbyte-size\fR  \fB\-Wno\-vla\-larger\-than
  \&\-Wvolatile\-register\-var  \-Wwrite\-strings
  \&\-Wno\-xor\-used\-as\-pow
  \&\-Wzero\-as\-null\-pointer\-constant
--- 389,395 ----
  \&\-Wuse\-after\-free  \-Wuse\-after\-free=\fR\fIn\fR  \fB\-Wuseless\-cast
  \&\-Wno\-varargs  \-Wvariadic\-macros
  \&\-Wvector\-operation\-performance
! \&\-Wvla  \-Wvla\-larger\-than=\fR\fIbyte\-size\fR  \fB\-Wno\-vla\-larger\-than
  \&\-Wvolatile\-register\-var  \-Wwrite\-strings
  \&\-Wno\-xor\-used\-as\-pow
  \&\-Wzero\-as\-null\-pointer\-constant
*************** in the following sections.
*** 544,550 ****
  \&\-Wno\-analyzer\-va\-list\-use\-after\-va\-end
  \&\-Wno\-analyzer\-write\-to\-const
  \&\-Wno\-analyzer\-write\-to\-string\-literal\fR
! .IP "\fIC and Objective-C-only Warning Options\fR" 4
  .IX Item "C and Objective-C-only Warning Options"
  \&\fB\-Wbad\-function\-cast \-Wdeprecated\-non\-prototype \-Wfree\-labels
  \&\-Wmissing\-declarations \-Wmissing\-parameter\-name \-Wmissing\-parameter\-type
--- 473,479 ----
  \&\-Wno\-analyzer\-va\-list\-use\-after\-va\-end
  \&\-Wno\-analyzer\-write\-to\-const
  \&\-Wno\-analyzer\-write\-to\-string\-literal\fR
! .IP "\fIC and Objective\-C\-only Warning Options\fR" 4
  .IX Item "C and Objective-C-only Warning Options"
  \&\fB\-Wbad\-function\-cast \-Wdeprecated\-non\-prototype \-Wfree\-labels
  \&\-Wmissing\-declarations \-Wmissing\-parameter\-name \-Wmissing\-parameter\-type
*************** in the following sections.
*** 572,578 ****
  \&\-fdebug\-prefix\-map=\fR\fIold\fR\fB=\fR\fInew\fR  \fB\-fdebug\-types\-section
  \&\-fno\-eliminate\-unused\-debug\-types
  \&\-femit\-struct\-debug\-baseonly  \-femit\-struct\-debug\-reduced
! \&\-femit\-struct\-debug\-detailed\fR[\fB=\fR\fIspec-list\fR]
  \&\fB\-fno\-eliminate\-unused\-debug\-symbols  \-femit\-class\-debug\-always
  \&\-fno\-merge\-debug\-strings  \-fno\-dwarf2\-cfi\-asm
  \&\-fvar\-tracking  \-fvar\-tracking\-assignments\fR
--- 501,507 ----
  \&\-fdebug\-prefix\-map=\fR\fIold\fR\fB=\fR\fInew\fR  \fB\-fdebug\-types\-section
  \&\-fno\-eliminate\-unused\-debug\-types
  \&\-femit\-struct\-debug\-baseonly  \-femit\-struct\-debug\-reduced
! \&\-femit\-struct\-debug\-detailed\fR[\fB=\fR\fIspec\-list\fR]
  \&\fB\-fno\-eliminate\-unused\-debug\-symbols  \-femit\-class\-debug\-always
  \&\-fno\-merge\-debug\-strings  \-fno\-dwarf2\-cfi\-asm
  \&\-fvar\-tracking  \-fvar\-tracking\-assignments\fR
*************** in the following sections.
*** 684,690 ****
  \&\fB\-fprofile\-note=\fR\fIpath\fR \fB\-fprofile\-prefix\-path=\fR\fIpath\fR
  \&\fB\-fprofile\-update=\fR\fImethod\fR \fB\-fprofile\-filter\-files=\fR\fIregex\fR
  \&\fB\-fprofile\-exclude\-files=\fR\fIregex\fR
! \&\fB\-fprofile\-reproducible=\fR[\fBmultithreaded\fR|\fBparallel-runs\fR|\fBserial\fR]
  \&\fB\-fsanitize=\fR\fIstyle\fR  \fB\-fsanitize\-recover  \-fsanitize\-recover=\fR\fIstyle\fR
  \&\fB\-fsanitize\-trap   \-fsanitize\-trap=\fR\fIstyle\fR
  \&\fB\-fasan\-shadow\-offset=\fR\fInumber\fR  \fB\-fsanitize\-sections=\fR\fIs1\fR\fB,\fR\fIs2\fR\fB,...
--- 613,619 ----
  \&\fB\-fprofile\-note=\fR\fIpath\fR \fB\-fprofile\-prefix\-path=\fR\fIpath\fR
  \&\fB\-fprofile\-update=\fR\fImethod\fR \fB\-fprofile\-filter\-files=\fR\fIregex\fR
  \&\fB\-fprofile\-exclude\-files=\fR\fIregex\fR
! \&\fB\-fprofile\-reproducible=\fR[\fBmultithreaded\fR|\fBparallel\-runs\fR|\fBserial\fR]
  \&\fB\-fsanitize=\fR\fIstyle\fR  \fB\-fsanitize\-recover  \-fsanitize\-recover=\fR\fIstyle\fR
  \&\fB\-fsanitize\-trap   \-fsanitize\-trap=\fR\fIstyle\fR
  \&\fB\-fasan\-shadow\-offset=\fR\fInumber\fR  \fB\-fsanitize\-sections=\fR\fIs1\fR\fB,\fR\fIs2\fR\fB,...
*************** in the following sections.
*** 693,699 ****
  \&\fB\-fharden\-compares \-fharden\-conditional\-branches  \-fhardened
  \&\-fharden\-control\-flow\-redundancy  \-fhardcfr\-skip\-leaf
  \&\-fhardcfr\-check\-exceptions  \-fhardcfr\-check\-returning\-calls
! \&\-fhardcfr\-check\-noreturn\-calls=\fR[\fBalways\fR|\fBno-xthrow\fR|\fBnothrow\fR|\fBnever\fR]
  \&\fB\-fstack\-protector  \-fstack\-protector\-all  \-fstack\-protector\-strong
  \&\-fstack\-protector\-explicit  \-fstack\-check
  \&\-fstack\-limit\-register=\fR\fIreg\fR  \fB\-fstack\-limit\-symbol=\fR\fIsym\fR
--- 622,628 ----
  \&\fB\-fharden\-compares \-fharden\-conditional\-branches  \-fhardened
  \&\-fharden\-control\-flow\-redundancy  \-fhardcfr\-skip\-leaf
  \&\-fhardcfr\-check\-exceptions  \-fhardcfr\-check\-returning\-calls
! \&\-fhardcfr\-check\-noreturn\-calls=\fR[\fBalways\fR|\fBno\-xthrow\fR|\fBnothrow\fR|\fBnever\fR]
  \&\fB\-fstack\-protector  \-fstack\-protector\-all  \-fstack\-protector\-strong
  \&\-fstack\-protector\-explicit  \-fstack\-check
  \&\-fstack\-limit\-register=\fR\fIreg\fR  \fB\-fstack\-limit\-symbol=\fR\fIsym\fR
*************** in the following sections.
*** 731,737 ****
  \&\fB\-Wa,\fR\fIoption\fR  \fB\-Xassembler\fR \fIoption\fR
  .IP "\fILinker Options\fR" 4
  .IX Item "Linker Options"
! \&\fIobject-file-name\fR  \fB\-fuse\-ld=\fR\fIlinker\fR  \fB\-l\fR\fIlibrary\fR
  \&\fB\-nostartfiles  \-nodefaultlibs  \-nolibc  \-nostdlib  \-nostdlib++
  \&\-e\fR \fIentry\fR  \fB\-\-entry=\fR\fIentry\fR
  \&\fB\-pie  \-pthread  \-r  \-rdynamic
--- 660,666 ----
  \&\fB\-Wa,\fR\fIoption\fR  \fB\-Xassembler\fR \fIoption\fR
  .IP "\fILinker Options\fR" 4
  .IX Item "Linker Options"
! \&\fIobject\-file\-name\fR  \fB\-fuse\-ld=\fR\fIlinker\fR  \fB\-l\fR\fIlibrary\fR
  \&\fB\-nostartfiles  \-nodefaultlibs  \-nolibc  \-nostdlib  \-nostdlib++
  \&\-e\fR \fIentry\fR  \fB\-\-entry=\fR\fIentry\fR
  \&\fB\-pie  \-pthread  \-r  \-rdynamic
*************** in the following sections.
*** 776,787 ****
  \&\fB\-d\fR\fIletters\fR  \fB\-dumpspecs  \-dumpmachine  \-dumpversion
  \&\-dumpfullversion  \-fcallgraph\-info\fR[\fB=su,da\fR]
  \&\fB\-fchecking  \-fchecking=\fR\fIn\fR
! \&\fB\-fdbg\-cnt\-list  \-fdbg\-cnt=\fR\fIcounter-value-list\fR
  \&\fB\-fdisable\-ipa\-\fR\fIpass_name\fR
  \&\fB\-fdisable\-rtl\-\fR\fIpass_name\fR
! \&\fB\-fdisable\-rtl\-\fR\fIpass-name\fR\fB=\fR\fIrange-list\fR
  \&\fB\-fdisable\-tree\-\fR\fIpass_name\fR
! \&\fB\-fdisable\-tree\-\fR\fIpass-name\fR\fB=\fR\fIrange-list\fR
  \&\fB\-fdump\-debug  \-fdump\-earlydebug
  \&\-fdump\-noaddr  \-fdump\-unnumbered  \-fdump\-unnumbered\-links
  \&\-fdump\-final\-insns\fR[\fB=\fR\fIfile\fR]
--- 705,716 ----
  \&\fB\-d\fR\fIletters\fR  \fB\-dumpspecs  \-dumpmachine  \-dumpversion
  \&\-dumpfullversion  \-fcallgraph\-info\fR[\fB=su,da\fR]
  \&\fB\-fchecking  \-fchecking=\fR\fIn\fR
! \&\fB\-fdbg\-cnt\-list  \-fdbg\-cnt=\fR\fIcounter\-value\-list\fR
  \&\fB\-fdisable\-ipa\-\fR\fIpass_name\fR
  \&\fB\-fdisable\-rtl\-\fR\fIpass_name\fR
! \&\fB\-fdisable\-rtl\-\fR\fIpass\-name\fR\fB=\fR\fIrange\-list\fR
  \&\fB\-fdisable\-tree\-\fR\fIpass_name\fR
! \&\fB\-fdisable\-tree\-\fR\fIpass\-name\fR\fB=\fR\fIrange\-list\fR
  \&\fB\-fdump\-debug  \-fdump\-earlydebug
  \&\-fdump\-noaddr  \-fdump\-unnumbered  \-fdump\-unnumbered\-links
  \&\-fdump\-final\-insns\fR[\fB=\fR\fIfile\fR]
*************** in the following sections.
*** 799,805 ****
  \&\fB\-fdump\-tree\-\fR\fIswitch\fR\fB\-\fR\fIoptions\fR\fB=\fR\fIfilename\fR
  \&\fB\-fcompare\-debug\fR[\fB=\fR\fIopts\fR]  \fB\-fcompare\-debug\-second
  \&\-fenable\-\fR\fIkind\fR\fB\-\fR\fIpass\fR
! \&\fB\-fenable\-\fR\fIkind\fR\fB\-\fR\fIpass\fR\fB=\fR\fIrange-list\fR
  \&\fB\-fira\-verbose=\fR\fIn\fR
  \&\fB\-flto\-report  \-flto\-report\-wpa  \-fmem\-report\-wpa
  \&\-fmem\-report  \-fpre\-ipa\-mem\-report  \-fpost\-ipa\-mem\-report
--- 728,734 ----
  \&\fB\-fdump\-tree\-\fR\fIswitch\fR\fB\-\fR\fIoptions\fR\fB=\fR\fIfilename\fR
  \&\fB\-fcompare\-debug\fR[\fB=\fR\fIopts\fR]  \fB\-fcompare\-debug\-second
  \&\-fenable\-\fR\fIkind\fR\fB\-\fR\fIpass\fR
! \&\fB\-fenable\-\fR\fIkind\fR\fB\-\fR\fIpass\fR\fB=\fR\fIrange\-list\fR
  \&\fB\-fira\-verbose=\fR\fIn\fR
  \&\fB\-flto\-report  \-flto\-report\-wpa  \-fmem\-report\-wpa
  \&\-fmem\-report  \-fpre\-ipa\-mem\-report  \-fpost\-ipa\-mem\-report
*************** in the following sections.
*** 814,820 ****
  \&\-print\-prog\-name=\fR\fIprogram\fR  \fB\-print\-search\-dirs  \-Q
  \&\-print\-sysroot  \-print\-sysroot\-headers\-suffix
  \&\-save\-temps  \-save\-temps=cwd  \-save\-temps=obj  \-time\fR[\fB=\fR\fIfile\fR]
! .IP "\fIMachine-Dependent Options\fR" 4
  .IX Item "Machine-Dependent Options"
  \&\fIAArch64 Options\fR (\fBAArch64 Options\fR)
  \&\fB\-mabi=\fR\fIname\fR  \fB\-mbig\-endian  \-mlittle\-endian
--- 743,749 ----
  \&\-print\-prog\-name=\fR\fIprogram\fR  \fB\-print\-search\-dirs  \-Q
  \&\-print\-sysroot  \-print\-sysroot\-headers\-suffix
  \&\-save\-temps  \-save\-temps=cwd  \-save\-temps=obj  \-time\fR[\fB=\fR\fIfile\fR]
! .IP "\fIMachine\-Dependent Options\fR" 4
  .IX Item "Machine-Dependent Options"
  \&\fIAArch64 Options\fR (\fBAArch64 Options\fR)
  \&\fB\-mabi=\fR\fIname\fR  \fB\-mbig\-endian  \-mlittle\-endian
*************** in the following sections.
*** 828,834 ****
  \&\-mlow\-precision\-recip\-sqrt  \-mlow\-precision\-sqrt  \-mlow\-precision\-div
  \&\-mpc\-relative\-literal\-loads
  \&\-msign\-return\-address=\fR\fIscope\fR
! \&\fB\-mbranch\-protection=\fR\fInone\fR\fB|\fR\fIstandard\fR\fB|\fR\fIpac-ret\fR\fB[+\fR\fIleaf\fR
  \&\fB+\fR\fIb\-key\fR\fB]|\fR\fIbti\fR\fB|\fR\fIgcs\fR
  \&\fB\-mharden\-sls=\fR\fIopts\fR
  \&\fB\-march=\fR\fIname\fR  \fB\-mcpu=\fR\fIname\fR  \fB\-mtune=\fR\fIname\fR
--- 757,763 ----
  \&\-mlow\-precision\-recip\-sqrt  \-mlow\-precision\-sqrt  \-mlow\-precision\-div
  \&\-mpc\-relative\-literal\-loads
  \&\-msign\-return\-address=\fR\fIscope\fR
! \&\fB\-mbranch\-protection=\fR\fInone\fR\fB|\fR\fIstandard\fR\fB|\fR\fIpac\-ret\fR\fB[+\fR\fIleaf\fR
  \&\fB+\fR\fIb\-key\fR\fB]|\fR\fIbti\fR\fB|\fR\fIgcs\fR
  \&\fB\-mharden\-sls=\fR\fIopts\fR
  \&\fB\-march=\fR\fIname\fR  \fB\-mcpu=\fR\fIname\fR  \fB\-mtune=\fR\fIname\fR
*************** in the following sections.
*** 846,855 ****
  \&\-mfp\-mode=\fR\fImode\fR  \fB\-mvect\-double  \-max\-vect\-align=\fR\fInum\fR
  \&\fB\-msplit\-vecmove\-early  \-m1reg\-\fR\fIreg\fR
  .Sp
! \&\fI\s-1AMD GCN\s0 Options\fR (\fB\s-1AMD GCN\s0 Options\fR)
  \&\fB\-march=\fR\fIgpu\fR \fB\-mtune=\fR\fIgpu\fR \fB\-mstack\-size=\fR\fIbytes\fR
  .Sp
! \&\fI\s-1ARC\s0 Options\fR (\fB\s-1ARC\s0 Options\fR)
  \&\fB\-mbarrel\-shifter  \-mjli\-always
  \&\-mcpu=\fR\fIcpu\fR  \fB\-mA6  \-mARC600  \-mA7  \-mARC700
  \&\-mdpfp  \-mdpfp\-compact  \-mdpfp\-fast  \-mno\-dpfp\-lrsr
--- 775,784 ----
  \&\-mfp\-mode=\fR\fImode\fR  \fB\-mvect\-double  \-max\-vect\-align=\fR\fInum\fR
  \&\fB\-msplit\-vecmove\-early  \-m1reg\-\fR\fIreg\fR
  .Sp
! \&\fIAMD GCN Options\fR (\fBAMD GCN Options\fR)
  \&\fB\-march=\fR\fIgpu\fR \fB\-mtune=\fR\fIgpu\fR \fB\-mstack\-size=\fR\fIbytes\fR
  .Sp
! \&\fIARC Options\fR (\fBARC Options\fR)
  \&\fB\-mbarrel\-shifter  \-mjli\-always
  \&\-mcpu=\fR\fIcpu\fR  \fB\-mA6  \-mARC600  \-mA7  \-mARC700
  \&\-mdpfp  \-mdpfp\-compact  \-mdpfp\-fast  \-mno\-dpfp\-lrsr
*************** in the following sections.
*** 869,875 ****
  \&\-munalign\-prob\-threshold=\fR\fIprobability\fR  \fB\-mmpy\-option=\fR\fImulto\fR
  \&\fB\-mdiv\-rem  \-mcode\-density  \-mll64  \-mfpu=\fR\fIfpu\fR  \fB\-mrf16  \-mbranch\-index\fR
  .Sp
! \&\fI\s-1ARM\s0 Options\fR (\fB\s-1ARM\s0 Options\fR)
  \&\fB\-mapcs\-frame  \-mno\-apcs\-frame
  \&\-mabi=\fR\fIname\fR
  \&\fB\-mapcs\-stack\-check  \-mno\-apcs\-stack\-check
--- 798,804 ----
  \&\-munalign\-prob\-threshold=\fR\fIprobability\fR  \fB\-mmpy\-option=\fR\fImulto\fR
  \&\fB\-mdiv\-rem  \-mcode\-density  \-mll64  \-mfpu=\fR\fIfpu\fR  \fB\-mrf16  \-mbranch\-index\fR
  .Sp
! \&\fIARM Options\fR (\fBARM Options\fR)
  \&\fB\-mapcs\-frame  \-mno\-apcs\-frame
  \&\-mabi=\fR\fIname\fR
  \&\fB\-mapcs\-stack\-check  \-mno\-apcs\-stack\-check
*************** in the following sections.
*** 909,918 ****
  \&\-mfix\-cmse\-cve\-2021\-35465
  \&\-mstack\-protector\-guard=\fR\fIguard\fR \fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR
  \&\fB\-mfdpic
! \&\-mbranch\-protection=\fR\fInone\fR\fB|\fR\fIstandard\fR\fB|\fR\fIpac-ret\fR\fB[+\fR\fIleaf\fR\fB]
! [+\fR\fIbti\fR\fB]|\fR\fIbti\fR\fB[+\fR\fIpac-ret\fR\fB[+\fR\fIleaf\fR\fB]]\fR
  .Sp
! \&\fI\s-1AVR\s0 Options\fR (\fB\s-1AVR\s0 Options\fR)
  \&\fB\-mmcu=\fR\fImcu\fR  \fB\-mabsdata  \-maccumulate\-args  \-mcvt
  \&\-mbranch\-cost=\fR\fIcost\fR  \fB\-mfuse\-add=\fR\fIlevel\fR  \fB\-mfuse\-move=\fR\fIlevel\fR
  \&\fB\-mfuse\-move2  \-mcall\-prologues  \-mgas\-isr\-prologues  \-mint8  \-mflmap
--- 838,847 ----
  \&\-mfix\-cmse\-cve\-2021\-35465
  \&\-mstack\-protector\-guard=\fR\fIguard\fR \fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR
  \&\fB\-mfdpic
! \&\-mbranch\-protection=\fR\fInone\fR\fB|\fR\fIstandard\fR\fB|\fR\fIpac\-ret\fR\fB[+\fR\fIleaf\fR\fB]
! [+\fR\fIbti\fR\fB]|\fR\fIbti\fR\fB[+\fR\fIpac\-ret\fR\fB[+\fR\fIleaf\fR\fB]]\fR
  .Sp
! \&\fIAVR Options\fR (\fBAVR Options\fR)
  \&\fB\-mmcu=\fR\fImcu\fR  \fB\-mabsdata  \-maccumulate\-args  \-mcvt
  \&\-mbranch\-cost=\fR\fIcost\fR  \fB\-mfuse\-add=\fR\fIlevel\fR  \fB\-mfuse\-move=\fR\fIlevel\fR
  \&\fB\-mfuse\-move2  \-mcall\-prologues  \-mgas\-isr\-prologues  \-mint8  \-mflmap
*************** in the following sections.
*** 936,944 ****
  .Sp
  \&\fIC6X Options\fR (\fBC6X Options\fR)
  \&\fB\-mbig\-endian  \-mlittle\-endian  \-march=\fR\fIcpu\fR
! \&\fB\-msim  \-msdata=\fR\fIsdata-type\fR
  .Sp
! \&\fI\s-1CRIS\s0 Options\fR (\fB\s-1CRIS\s0 Options\fR)
  \&\fB\-mcpu=\fR\fIcpu\fR  \fB\-march=\fR\fIcpu\fR
  \&\fB\-mtune=\fR\fIcpu\fR \fB\-mmax\-stack\-frame=\fR\fIn\fR
  \&\fB\-metrax4  \-metrax100  \-mpdebug  \-mcc\-init  \-mno\-side\-effects
--- 865,873 ----
  .Sp
  \&\fIC6X Options\fR (\fBC6X Options\fR)
  \&\fB\-mbig\-endian  \-mlittle\-endian  \-march=\fR\fIcpu\fR
! \&\fB\-msim  \-msdata=\fR\fIsdata\-type\fR
  .Sp
! \&\fICRIS Options\fR (\fBCRIS Options\fR)
  \&\fB\-mcpu=\fR\fIcpu\fR  \fB\-march=\fR\fIcpu\fR
  \&\fB\-mtune=\fR\fIcpu\fR \fB\-mmax\-stack\-frame=\fR\fIn\fR
  \&\fB\-metrax4  \-metrax100  \-mpdebug  \-mcc\-init  \-mno\-side\-effects
*************** in the following sections.
*** 990,1001 ****
  \&\-whatsloaded  \-F  \-gused  \-gfull  \-mmacosx\-version\-min=\fR\fIversion\fR
  \&\fB\-mkernel  \-mone\-byte\-bool\fR
  .Sp
! \&\fI\s-1DEC\s0 Alpha Options\fR (\fB\s-1DEC\s0 Alpha Options\fR)
  \&\fB\-mno\-fp\-regs  \-msoft\-float
  \&\-mieee  \-mieee\-with\-inexact  \-mieee\-conformant
  \&\-mfp\-trap\-mode=\fR\fImode\fR  \fB\-mfp\-rounding\-mode=\fR\fImode\fR
  \&\fB\-mtrap\-precision=\fR\fImode\fR  \fB\-mbuild\-constants
! \&\-mcpu=\fR\fIcpu-type\fR  \fB\-mtune=\fR\fIcpu-type\fR
  \&\fB\-mbwx  \-mmax  \-mfix  \-mcix
  \&\-msafe\-bwa  \-msafe\-partial
  \&\-mfloat\-vax  \-mfloat\-ieee
--- 919,930 ----
  \&\-whatsloaded  \-F  \-gused  \-gfull  \-mmacosx\-version\-min=\fR\fIversion\fR
  \&\fB\-mkernel  \-mone\-byte\-bool\fR
  .Sp
! \&\fIDEC Alpha Options\fR (\fBDEC Alpha Options\fR)
  \&\fB\-mno\-fp\-regs  \-msoft\-float
  \&\-mieee  \-mieee\-with\-inexact  \-mieee\-conformant
  \&\-mfp\-trap\-mode=\fR\fImode\fR  \fB\-mfp\-rounding\-mode=\fR\fImode\fR
  \&\fB\-mtrap\-precision=\fR\fImode\fR  \fB\-mbuild\-constants
! \&\-mcpu=\fR\fIcpu\-type\fR  \fB\-mtune=\fR\fIcpu\-type\fR
  \&\fB\-mbwx  \-mmax  \-mfix  \-mcix
  \&\-msafe\-bwa  \-msafe\-partial
  \&\-mfloat\-vax  \-mfloat\-ieee
*************** in the following sections.
*** 1009,1021 ****
  \&\-mjmp32 \-malu32 \-mv3\-atomics \-mbswap \-msdiv \-msmov \-mcpu=\fR\fIversion\fR
  \&\fB\-masm=\fR\fIdialect\fR \fB\-minline\-memops\-threshold=\fR\fIbytes\fR
  .Sp
! \&\fI\s-1FR30\s0 Options\fR (\fB\s-1FR30\s0 Options\fR)
  \&\fB\-msmall\-model  \-mno\-lsim\fR
  .Sp
! \&\fI\s-1FT32\s0 Options\fR (\fB\s-1FT32\s0 Options\fR)
  \&\fB\-msim  \-mlra  \-mnodiv  \-mft32b  \-mcompress  \-mnopm\fR
  .Sp
! \&\fI\s-1FRV\s0 Options\fR (\fB\s-1FRV\s0 Options\fR)
  \&\fB\-mgpr\-32  \-mgpr\-64  \-mfpr\-32  \-mfpr\-64
  \&\-mhard\-float  \-msoft\-float
  \&\-malloc\-cc  \-mfixed\-cc  \-mdword  \-mno\-dword
--- 938,950 ----
  \&\-mjmp32 \-malu32 \-mv3\-atomics \-mbswap \-msdiv \-msmov \-mcpu=\fR\fIversion\fR
  \&\fB\-masm=\fR\fIdialect\fR \fB\-minline\-memops\-threshold=\fR\fIbytes\fR
  .Sp
! \&\fIFR30 Options\fR (\fBFR30 Options\fR)
  \&\fB\-msmall\-model  \-mno\-lsim\fR
  .Sp
! \&\fIFT32 Options\fR (\fBFT32 Options\fR)
  \&\fB\-msim  \-mlra  \-mnodiv  \-mft32b  \-mcompress  \-mnopm\fR
  .Sp
! \&\fIFRV Options\fR (\fBFRV Options\fR)
  \&\fB\-mgpr\-32  \-mgpr\-64  \-mfpr\-32  \-mfpr\-64
  \&\-mhard\-float  \-msoft\-float
  \&\-malloc\-cc  \-mfixed\-cc  \-mdword  \-mno\-dword
*************** in the following sections.
*** 1040,1051 ****
  \&\fIH8/300 Options\fR (\fBH8/300 Options\fR)
  \&\fB\-mrelax  \-mh  \-ms  \-mn  \-mexr  \-mno\-exr  \-mint32  \-malign\-300\fR
  .Sp
! \&\fI\s-1HPPA\s0 Options\fR (\fB\s-1HPPA\s0 Options\fR)
! \&\fB\-march=\fR\fIarchitecture-type\fR
  \&\fB\-matomic\-libcalls  \-mbig\-switch
  \&\-mcaller\-copies  \-mdisable\-fpregs  \-mdisable\-indexing
  \&\-mordered  \-mfast\-indirect\-calls  \-mgas  \-mgnu\-ld   \-mhp\-ld
! \&\-mfixed\-range=\fR\fIregister-range\fR
  \&\fB\-mcoherent\-ldcw \-mjump\-in\-delay  \-mlinker\-opt  \-mlong\-calls
  \&\-mlong\-load\-store  \-mno\-atomic\-libcalls  \-mno\-disable\-fpregs
  \&\-mno\-disable\-indexing  \-mno\-fast\-indirect\-calls  \-mno\-gas
--- 969,980 ----
  \&\fIH8/300 Options\fR (\fBH8/300 Options\fR)
  \&\fB\-mrelax  \-mh  \-ms  \-mn  \-mexr  \-mno\-exr  \-mint32  \-malign\-300\fR
  .Sp
! \&\fIHPPA Options\fR (\fBHPPA Options\fR)
! \&\fB\-march=\fR\fIarchitecture\-type\fR
  \&\fB\-matomic\-libcalls  \-mbig\-switch
  \&\-mcaller\-copies  \-mdisable\-fpregs  \-mdisable\-indexing
  \&\-mordered  \-mfast\-indirect\-calls  \-mgas  \-mgnu\-ld   \-mhp\-ld
! \&\-mfixed\-range=\fR\fIregister\-range\fR
  \&\fB\-mcoherent\-ldcw \-mjump\-in\-delay  \-mlinker\-opt  \-mlong\-calls
  \&\-mlong\-load\-store  \-mno\-atomic\-libcalls  \-mno\-disable\-fpregs
  \&\-mno\-disable\-indexing  \-mno\-fast\-indirect\-calls  \-mno\-gas
*************** in the following sections.
*** 1053,1062 ****
  \&\-mno\-portable\-runtime  \-mno\-soft\-float
  \&\-mno\-space\-regs  \-msoft\-float  \-mpa\-risc\-1\-0
  \&\-mpa\-risc\-1\-1  \-mpa\-risc\-2\-0  \-mportable\-runtime
! \&\-mschedule=\fR\fIcpu-type\fR  \fB\-mspace\-regs  \-msoft\-mult  \-msio  \-mwsio
! \&\-munix=\fR\fIunix-std\fR  \fB\-nolibdld  \-static  \-threads\fR
  .Sp
! \&\fI\s-1IA\-64\s0 Options\fR (\fB\s-1IA\-64\s0 Options\fR)
  \&\fB\-mbig\-endian  \-mlittle\-endian  \-mgnu\-as  \-mgnu\-ld  \-mno\-pic
  \&\-mvolatile\-asm\-stop  \-mregister\-names  \-msdata  \-mno\-sdata
  \&\-mconstant\-gp  \-mauto\-pic  \-mfused\-madd
--- 982,991 ----
  \&\-mno\-portable\-runtime  \-mno\-soft\-float
  \&\-mno\-space\-regs  \-msoft\-float  \-mpa\-risc\-1\-0
  \&\-mpa\-risc\-1\-1  \-mpa\-risc\-2\-0  \-mportable\-runtime
! \&\-mschedule=\fR\fIcpu\-type\fR  \fB\-mspace\-regs  \-msoft\-mult  \-msio  \-mwsio
! \&\-munix=\fR\fIunix\-std\fR  \fB\-nolibdld  \-static  \-threads\fR
  .Sp
! \&\fIIA\-64 Options\fR (\fBIA\-64 Options\fR)
  \&\fB\-mbig\-endian  \-mlittle\-endian  \-mgnu\-as  \-mgnu\-ld  \-mno\-pic
  \&\-mvolatile\-asm\-stop  \-mregister\-names  \-msdata  \-mno\-sdata
  \&\-mconstant\-gp  \-mauto\-pic  \-mfused\-madd
*************** in the following sections.
*** 1069,1091 ****
  \&\-minline\-sqrt\-min\-latency  \-minline\-sqrt\-max\-throughput
  \&\-mno\-inline\-sqrt
  \&\-mdwarf2\-asm  \-mearly\-stop\-bits
! \&\-mfixed\-range=\fR\fIregister-range\fR  \fB\-mtls\-size=\fR\fItls-size\fR
! \&\fB\-mtune=\fR\fIcpu-type\fR  \fB\-milp32  \-mlp64
  \&\-msched\-br\-data\-spec  \-msched\-ar\-data\-spec  \-msched\-control\-spec
  \&\-msched\-br\-in\-data\-spec  \-msched\-ar\-in\-data\-spec  \-msched\-in\-control\-spec
  \&\-msched\-spec\-ldc  \-msched\-spec\-control\-ldc
  \&\-msched\-prefer\-non\-data\-spec\-insns  \-msched\-prefer\-non\-control\-spec\-insns
  \&\-msched\-stop\-bits\-after\-every\-cycle  \-msched\-count\-spec\-in\-critical\-path
  \&\-msel\-sched\-dont\-check\-control\-spec  \-msched\-fp\-mem\-deps\-zero\-cost
! \&\-msched\-max\-memory\-insns\-hard\-limit  \-msched\-max\-memory\-insns=\fR\fImax-insns\fR
  .Sp
! \&\fI\s-1LM32\s0 Options\fR (\fB\s-1LM32\s0 Options\fR)
  \&\fB\-mbarrel\-shift\-enabled  \-mdivide\-enabled  \-mmultiply\-enabled
  \&\-msign\-extend\-enabled  \-muser\-enabled\fR
  .Sp
  \&\fILoongArch Options\fR (\fBLoongArch Options\fR)
! \&\fB\-march=\fR\fIarch-type\fR  \fB\-mtune=\fR\fItune-type\fR \fB\-mabi=\fR\fIbase-abi-type\fR
! \&\fB\-mfpu=\fR\fIfpu-type\fR \fB\-msimd=\fR\fIsimd-type\fR
  \&\fB\-msoft\-float \-msingle\-float \-mdouble\-float \-mlsx \-mno\-lsx \-mlasx \-mno\-lasx
  \&\-mbranch\-cost=\fR\fIn\fR \fB\-maddr\-reg\-reg\-cost=\fR\fIn\fR  \fB\-mcheck\-zero\-division
  \&\-mno\-check\-zero\-division
--- 998,1020 ----
  \&\-minline\-sqrt\-min\-latency  \-minline\-sqrt\-max\-throughput
  \&\-mno\-inline\-sqrt
  \&\-mdwarf2\-asm  \-mearly\-stop\-bits
! \&\-mfixed\-range=\fR\fIregister\-range\fR  \fB\-mtls\-size=\fR\fItls\-size\fR
! \&\fB\-mtune=\fR\fIcpu\-type\fR  \fB\-milp32  \-mlp64
  \&\-msched\-br\-data\-spec  \-msched\-ar\-data\-spec  \-msched\-control\-spec
  \&\-msched\-br\-in\-data\-spec  \-msched\-ar\-in\-data\-spec  \-msched\-in\-control\-spec
  \&\-msched\-spec\-ldc  \-msched\-spec\-control\-ldc
  \&\-msched\-prefer\-non\-data\-spec\-insns  \-msched\-prefer\-non\-control\-spec\-insns
  \&\-msched\-stop\-bits\-after\-every\-cycle  \-msched\-count\-spec\-in\-critical\-path
  \&\-msel\-sched\-dont\-check\-control\-spec  \-msched\-fp\-mem\-deps\-zero\-cost
! \&\-msched\-max\-memory\-insns\-hard\-limit  \-msched\-max\-memory\-insns=\fR\fImax\-insns\fR
  .Sp
! \&\fILM32 Options\fR (\fBLM32 Options\fR)
  \&\fB\-mbarrel\-shift\-enabled  \-mdivide\-enabled  \-mmultiply\-enabled
  \&\-msign\-extend\-enabled  \-muser\-enabled\fR
  .Sp
  \&\fILoongArch Options\fR (\fBLoongArch Options\fR)
! \&\fB\-march=\fR\fIarch\-type\fR  \fB\-mtune=\fR\fItune\-type\fR \fB\-mabi=\fR\fIbase\-abi\-type\fR
! \&\fB\-mfpu=\fR\fIfpu\-type\fR \fB\-msimd=\fR\fIsimd\-type\fR
  \&\fB\-msoft\-float \-msingle\-float \-mdouble\-float \-mlsx \-mno\-lsx \-mlasx \-mno\-lasx
  \&\-mbranch\-cost=\fR\fIn\fR \fB\-maddr\-reg\-reg\-cost=\fR\fIn\fR  \fB\-mcheck\-zero\-division
  \&\-mno\-check\-zero\-division
*************** in the following sections.
*** 1095,1101 ****
  \&\fB\-mmax\-inline\-memcpy\-size=\fR\fIn\fR
  \&\fB\-mexplicit\-relocs=\fR\fIstyle\fR \fB\-mexplicit\-relocs \-mno\-explicit\-relocs
  \&\-mdirect\-extern\-access \-mno\-direct\-extern\-access
! \&\-mcmodel=\fR\fIcode-model\fR \fB\-mrelax \-mpass\-mrelax\-to\-as
  \&\-mrecip  \-mrecip=\fR\fIopt\fR \fB\-mfrecipe \-mno\-frecipe \-mdiv32 \-mno\-div32
  \&\-mlam\-bh \-mno\-lam\-bh \-mlamcas \-mno\-lamcas \-mld\-seq\-sa \-mno\-ld\-seq\-sa
  \&\-mtls\-dialect=\fR\fIopt\fR \fB\-mannotate\-tablejump \-mno\-annotate\-tablejump\fR
--- 1024,1030 ----
  \&\fB\-mmax\-inline\-memcpy\-size=\fR\fIn\fR
  \&\fB\-mexplicit\-relocs=\fR\fIstyle\fR \fB\-mexplicit\-relocs \-mno\-explicit\-relocs
  \&\-mdirect\-extern\-access \-mno\-direct\-extern\-access
! \&\-mcmodel=\fR\fIcode\-model\fR \fB\-mrelax \-mpass\-mrelax\-to\-as
  \&\-mrecip  \-mrecip=\fR\fIopt\fR \fB\-mfrecipe \-mno\-frecipe \-mdiv32 \-mno\-div32
  \&\-mlam\-bh \-mno\-lam\-bh \-mlamcas \-mno\-lamcas \-mld\-seq\-sa \-mno\-ld\-seq\-sa
  \&\-mtls\-dialect=\fR\fIopt\fR \fB\-mannotate\-tablejump \-mno\-annotate\-tablejump\fR
*************** in the following sections.
*** 1109,1116 ****
  \&\-malign\-loops  \-mno\-align\-loops
  \&\-missue\-rate=\fR\fInumber\fR
  \&\fB\-mbranch\-cost=\fR\fInumber\fR
! \&\fB\-mmodel=\fR\fIcode-size-model-type\fR
! \&\fB\-msdata=\fR\fIsdata-type\fR
  \&\fB\-mno\-flush\-func  \-mflush\-func=\fR\fIname\fR
  \&\fB\-mno\-flush\-trap  \-mflush\-trap=\fR\fInumber\fR
  \&\fB\-G\fR \fInum\fR
--- 1038,1045 ----
  \&\-malign\-loops  \-mno\-align\-loops
  \&\-missue\-rate=\fR\fInumber\fR
  \&\fB\-mbranch\-cost=\fR\fInumber\fR
! \&\fB\-mmodel=\fR\fIcode\-size\-model\-type\fR
! \&\fB\-msdata=\fR\fIsdata\-type\fR
  \&\fB\-mno\-flush\-func  \-mflush\-func=\fR\fIname\fR
  \&\fB\-mno\-flush\-trap  \-mflush\-trap=\fR\fInumber\fR
  \&\fB\-G\fR \fInum\fR
*************** in the following sections.
*** 1138,1147 ****
  \&\fB\-mmemcpy  \-mxl\-soft\-mul  \-mxl\-soft\-div  \-mxl\-barrel\-shift
  \&\-mxl\-pattern\-compare  \-mxl\-stack\-check  \-mxl\-gp\-opt  \-mno\-clearbss
  \&\-mxl\-multiply\-high  \-mxl\-float\-convert  \-mxl\-float\-sqrt
! \&\-mbig\-endian  \-mlittle\-endian  \-mxl\-reorder  \-mxl\-mode\-\fR\fIapp-model\fR
  \&\fB\-mpic\-data\-is\-text\-relative\fR
  .Sp
! \&\fI\s-1MIPS\s0 Options\fR (\fB\s-1MIPS\s0 Options\fR)
  \&\fB\-EL  \-EB  \-march=\fR\fIarch\fR  \fB\-mtune=\fR\fIarch\fR
  \&\fB\-mips1  \-mips2  \-mips3  \-mips4  \-mips32  \-mips32r2  \-mips32r3  \-mips32r5
  \&\-mips32r6  \-mips64  \-mips64r2  \-mips64r3  \-mips64r5  \-mips64r6
--- 1067,1076 ----
  \&\fB\-mmemcpy  \-mxl\-soft\-mul  \-mxl\-soft\-div  \-mxl\-barrel\-shift
  \&\-mxl\-pattern\-compare  \-mxl\-stack\-check  \-mxl\-gp\-opt  \-mno\-clearbss
  \&\-mxl\-multiply\-high  \-mxl\-float\-convert  \-mxl\-float\-sqrt
! \&\-mbig\-endian  \-mlittle\-endian  \-mxl\-reorder  \-mxl\-mode\-\fR\fIapp\-model\fR
  \&\fB\-mpic\-data\-is\-text\-relative\fR
  .Sp
! \&\fIMIPS Options\fR (\fBMIPS Options\fR)
  \&\fB\-EL  \-EB  \-march=\fR\fIarch\fR  \fB\-mtune=\fR\fIarch\fR
  \&\fB\-mips1  \-mips2  \-mips3  \-mips4  \-mips32  \-mips32r2  \-mips32r3  \-mips32r5
  \&\-mips32r6  \-mips64  \-mips64r2  \-mips64r3  \-mips64r5  \-mips64r6
*************** in the following sections.
*** 1166,1172 ****
  \&\-mloongson\-mmi  \-mno\-loongson\-mmi
  \&\-mloongson\-ext  \-mno\-loongson\-ext
  \&\-mloongson\-ext2  \-mno\-loongson\-ext2
! \&\-mfpu=\fR\fIfpu-type\fR
  \&\fB\-msmartmips  \-mno\-smartmips
  \&\-mpaired\-single  \-mno\-paired\-single  \-mdmx  \-mno\-mdmx
  \&\-mips3d  \-mno\-mips3d  \-mmt  \-mno\-mt  \-mllsc  \-mno\-llsc
--- 1095,1101 ----
  \&\-mloongson\-mmi  \-mno\-loongson\-mmi
  \&\-mloongson\-ext  \-mno\-loongson\-ext
  \&\-mloongson\-ext2  \-mno\-loongson\-ext2
! \&\-mfpu=\fR\fIfpu\-type\fR
  \&\fB\-msmartmips  \-mno\-smartmips
  \&\-mpaired\-single  \-mno\-paired\-single  \-mdmx  \-mno\-mdmx
  \&\-mips3d  \-mno\-mips3d  \-mmt  \-mno\-mt  \-mllsc  \-mno\-llsc
*************** in the following sections.
*** 1201,1230 ****
  \&\-mrelax\-pic\-calls  \-mno\-relax\-pic\-calls  \-mmcount\-ra\-address
  \&\-mframe\-header\-opt  \-mno\-frame\-header\-opt\fR
  .Sp
! \&\fI\s-1MMIX\s0 Options\fR (\fB\s-1MMIX\s0 Options\fR)
  \&\fB\-mlibfuncs  \-mno\-libfuncs  \-mepsilon  \-mno\-epsilon  \-mabi=gnu
  \&\-mabi=mmixware  \-mzero\-extend  \-mknuthdiv  \-mtoplevel\-symbols
  \&\-melf  \-mbranch\-predict  \-mno\-branch\-predict  \-mbase\-addresses
  \&\-mno\-base\-addresses  \-msingle\-exit  \-mno\-single\-exit\fR
  .Sp
! \&\fI\s-1MN10300\s0 Options\fR (\fB\s-1MN10300\s0 Options\fR)
  \&\fB\-mmult\-bug  \-mno\-mult\-bug
  \&\-mno\-am33  \-mam33  \-mam33\-2  \-mam34
! \&\-mtune=\fR\fIcpu-type\fR
  \&\fB\-mreturn\-pointer\-on\-d0
  \&\-mno\-crt0  \-mrelax  \-mliw  \-msetlb\fR
  .Sp
  \&\fIMoxie Options\fR (\fBMoxie Options\fR)
  \&\fB\-meb  \-mel  \-mmul.x  \-mno\-crt0\fR
  .Sp
! \&\fI\s-1MSP430\s0 Options\fR (\fB\s-1MSP430\s0 Options\fR)
  \&\fB\-msim  \-masm\-hex  \-mmcu=  \-mcpu=  \-mlarge  \-msmall  \-mrelax
  \&\-mwarn\-mcu
  \&\-mcode\-region=  \-mdata\-region=
  \&\-msilicon\-errata=  \-msilicon\-errata\-warn=
  \&\-mhwmult=  \-minrt  \-mtiny\-printf  \-mmax\-inline\-shift=\fR
  .Sp
! \&\fI\s-1NDS32\s0 Options\fR (\fB\s-1NDS32\s0 Options\fR)
  \&\fB\-mbig\-endian  \-mlittle\-endian
  \&\-mreduced\-regs  \-mfull\-regs
  \&\-mcmov  \-mno\-cmov
--- 1130,1159 ----
  \&\-mrelax\-pic\-calls  \-mno\-relax\-pic\-calls  \-mmcount\-ra\-address
  \&\-mframe\-header\-opt  \-mno\-frame\-header\-opt\fR
  .Sp
! \&\fIMMIX Options\fR (\fBMMIX Options\fR)
  \&\fB\-mlibfuncs  \-mno\-libfuncs  \-mepsilon  \-mno\-epsilon  \-mabi=gnu
  \&\-mabi=mmixware  \-mzero\-extend  \-mknuthdiv  \-mtoplevel\-symbols
  \&\-melf  \-mbranch\-predict  \-mno\-branch\-predict  \-mbase\-addresses
  \&\-mno\-base\-addresses  \-msingle\-exit  \-mno\-single\-exit\fR
  .Sp
! \&\fIMN10300 Options\fR (\fBMN10300 Options\fR)
  \&\fB\-mmult\-bug  \-mno\-mult\-bug
  \&\-mno\-am33  \-mam33  \-mam33\-2  \-mam34
! \&\-mtune=\fR\fIcpu\-type\fR
  \&\fB\-mreturn\-pointer\-on\-d0
  \&\-mno\-crt0  \-mrelax  \-mliw  \-msetlb\fR
  .Sp
  \&\fIMoxie Options\fR (\fBMoxie Options\fR)
  \&\fB\-meb  \-mel  \-mmul.x  \-mno\-crt0\fR
  .Sp
! \&\fIMSP430 Options\fR (\fBMSP430 Options\fR)
  \&\fB\-msim  \-masm\-hex  \-mmcu=  \-mcpu=  \-mlarge  \-msmall  \-mrelax
  \&\-mwarn\-mcu
  \&\-mcode\-region=  \-mdata\-region=
  \&\-msilicon\-errata=  \-msilicon\-errata\-warn=
  \&\-mhwmult=  \-minrt  \-mtiny\-printf  \-mmax\-inline\-shift=\fR
  .Sp
! \&\fINDS32 Options\fR (\fBNDS32 Options\fR)
  \&\fB\-mbig\-endian  \-mlittle\-endian
  \&\-mreduced\-regs  \-mfull\-regs
  \&\-mcmov  \-mno\-cmov
*************** in the following sections.
*** 1236,1245 ****
  \&\-misr\-vector\-size=\fR\fInum\fR
  \&\fB\-mcache\-block\-size=\fR\fInum\fR
  \&\fB\-march=\fR\fIarch\fR
! \&\fB\-mcmodel=\fR\fIcode-model\fR
  \&\fB\-mctor\-dtor  \-mrelax\fR
  .Sp
! \&\fINvidia \s-1PTX\s0 Options\fR (\fBNvidia \s-1PTX\s0 Options\fR)
  \&\fB\-m64  \-mmainkernel  \-moptimize\fR
  .Sp
  \&\fIOpenRISC Options\fR (\fBOpenRISC Options\fR)
--- 1165,1174 ----
  \&\-misr\-vector\-size=\fR\fInum\fR
  \&\fB\-mcache\-block\-size=\fR\fInum\fR
  \&\fB\-march=\fR\fIarch\fR
! \&\fB\-mcmodel=\fR\fIcode\-model\fR
  \&\fB\-mctor\-dtor  \-mrelax\fR
  .Sp
! \&\fINvidia PTX Options\fR (\fBNvidia PTX Options\fR)
  \&\fB\-m64  \-mmainkernel  \-moptimize\fR
  .Sp
  \&\fIOpenRISC Options\fR (\fBOpenRISC Options\fR)
*************** in the following sections.
*** 1247,1276 ****
  \&\-msoft\-mul  \-msoft\-div
  \&\-msoft\-float  \-mhard\-float  \-mdouble\-float \-munordered\-float
  \&\-mcmov  \-mror  \-mrori  \-msext  \-msfimm  \-mshftimm
! \&\-mcmodel=\fR\fIcode-model\fR
  .Sp
! \&\fI\s-1PDP\-11\s0 Options\fR (\fB\s-1PDP\-11\s0 Options\fR)
  \&\fB\-mfpu  \-msoft\-float  \-mac0  \-mno\-ac0  \-m40  \-m45  \-m10
  \&\-mint32  \-mno\-int16  \-mint16  \-mno\-int32
  \&\-msplit  \-munix\-asm  \-mdec\-asm  \-mgnu\-asm  \-mlra\fR
  .Sp
  \&\fIPowerPC Options\fR
! See \s-1RS/6000\s0 and PowerPC Options.
  .Sp
! \&\fI\s-1PRU\s0 Options\fR (\fB\s-1PRU\s0 Options\fR)
  \&\fB\-mmcu=\fR\fImcu\fR  \fB\-minrt  \-mno\-relax  \-mloop
  \&\-mabi=\fR\fIvariant\fR
  .Sp
! \&\fIRISC-V Options\fR (\fBRISC-V Options\fR)
  \&\fB\-mbranch\-cost=\fR\fIN\-instruction\fR
  \&\fB\-mplt  \-mno\-plt
! \&\-mabi=\fR\fIABI-string\fR
  \&\fB\-mfdiv  \-mno\-fdiv
  \&\-mfence\-tso  \-mno\-fence\-tso
  \&\-mdiv  \-mno\-div
! \&\-misa\-spec=\fR\fIISA-spec-string\fR
! \&\fB\-march=\fR\fIISA-string\fR
! \&\fB\-mtune=\fR\fIprocessor-string\fR
  \&\fB\-mpreferred\-stack\-boundary=\fR\fInum\fR
  \&\fB\-msmall\-data\-limit=\fR\fIN\-bytes\fR
  \&\fB\-msave\-restore  \-mno\-save\-restore
--- 1176,1205 ----
  \&\-msoft\-mul  \-msoft\-div
  \&\-msoft\-float  \-mhard\-float  \-mdouble\-float \-munordered\-float
  \&\-mcmov  \-mror  \-mrori  \-msext  \-msfimm  \-mshftimm
! \&\-mcmodel=\fR\fIcode\-model\fR
  .Sp
! \&\fIPDP\-11 Options\fR (\fBPDP\-11 Options\fR)
  \&\fB\-mfpu  \-msoft\-float  \-mac0  \-mno\-ac0  \-m40  \-m45  \-m10
  \&\-mint32  \-mno\-int16  \-mint16  \-mno\-int32
  \&\-msplit  \-munix\-asm  \-mdec\-asm  \-mgnu\-asm  \-mlra\fR
  .Sp
  \&\fIPowerPC Options\fR
! See RS/6000 and PowerPC Options.
  .Sp
! \&\fIPRU Options\fR (\fBPRU Options\fR)
  \&\fB\-mmcu=\fR\fImcu\fR  \fB\-minrt  \-mno\-relax  \-mloop
  \&\-mabi=\fR\fIvariant\fR
  .Sp
! \&\fIRISC\-V Options\fR (\fBRISC\-V Options\fR)
  \&\fB\-mbranch\-cost=\fR\fIN\-instruction\fR
  \&\fB\-mplt  \-mno\-plt
! \&\-mabi=\fR\fIABI\-string\fR
  \&\fB\-mfdiv  \-mno\-fdiv
  \&\-mfence\-tso  \-mno\-fence\-tso
  \&\-mdiv  \-mno\-div
! \&\-misa\-spec=\fR\fIISA\-spec\-string\fR
! \&\fB\-march=\fR\fIISA\-string\fR
! \&\fB\-mtune=\fR\fIprocessor\-string\fR
  \&\fB\-mpreferred\-stack\-boundary=\fR\fInum\fR
  \&\fB\-msmall\-data\-limit=\fR\fIN\-bytes\fR
  \&\fB\-msave\-restore  \-mno\-save\-restore
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 1292,1306 ****
  \&\-minline\-strncmp  \-mno\-inline\-strncmp
  \&\-mtls\-dialect=desc  \-mtls\-dialect=trad\fR
  .Sp
! \&\fI\s-1RL78\s0 Options\fR (\fB\s-1RL78\s0 Options\fR)
  \&\fB\-msim  \-mmul=none  \-mmul=g13  \-mmul=g14  \-mallregs
  \&\-mcpu=g10  \-mcpu=g13  \-mcpu=g14  \-mg10  \-mg13  \-mg14
  \&\-m64bit\-doubles  \-m32bit\-doubles  \-msave\-mduc\-in\-interrupts\fR
  .Sp
! \&\fI\s-1RS/6000\s0 and PowerPC Options\fR (\fB\s-1RS/6000\s0 and PowerPC Options\fR)
! \&\fB\-mcpu=\fR\fIcpu-type\fR
! \&\fB\-mtune=\fR\fIcpu-type\fR
! \&\fB\-mcmodel=\fR\fIcode-model\fR
  \&\fB\-mpowerpc64
  \&\-maltivec  \-mno\-altivec
  \&\-mpowerpc\-gpopt  \-mno\-powerpc\-gpopt
--- 1221,1235 ----
  \&\-minline\-strncmp  \-mno\-inline\-strncmp
  \&\-mtls\-dialect=desc  \-mtls\-dialect=trad\fR
  .Sp
! \&\fIRL78 Options\fR (\fBRL78 Options\fR)
  \&\fB\-msim  \-mmul=none  \-mmul=g13  \-mmul=g14  \-mallregs
  \&\-mcpu=g10  \-mcpu=g13  \-mcpu=g14  \-mg10  \-mg13  \-mg14
  \&\-m64bit\-doubles  \-m32bit\-doubles  \-msave\-mduc\-in\-interrupts\fR
  .Sp
! \&\fIRS/6000 and PowerPC Options\fR (\fBRS/6000 and PowerPC Options\fR)
! \&\fB\-mcpu=\fR\fIcpu\-type\fR
! \&\fB\-mtune=\fR\fIcpu\-type\fR
! \&\fB\-mcmodel=\fR\fIcode\-model\fR
  \&\fB\-mpowerpc64
  \&\-maltivec  \-mno\-altivec
  \&\-mpowerpc\-gpopt  \-mno\-powerpc\-gpopt
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 1327,1333 ****
  \&\-mcall\-sysv  \-mcall\-sysv\-eabi  \-mcall\-sysv\-noeabi
  \&\-mtraceback=\fR\fItraceback_type\fR
  \&\fB\-maix\-struct\-return  \-msvr4\-struct\-return
! \&\-mabi=\fR\fIabi-type\fR  \fB\-msecure\-plt  \-mbss\-plt
  \&\-msplit\-patch\-nops
  \&\-mlongcall  \-mno\-longcall  \-mpltseq  \-mno\-pltseq
  \&\-mblock\-move\-inline\-limit=\fR\fInum\fR
--- 1256,1262 ----
  \&\-mcall\-sysv  \-mcall\-sysv\-eabi  \-mcall\-sysv\-noeabi
  \&\-mtraceback=\fR\fItraceback_type\fR
  \&\fB\-maix\-struct\-return  \-msvr4\-struct\-return
! \&\-mabi=\fR\fIabi\-type\fR  \fB\-msecure\-plt  \-mbss\-plt
  \&\-msplit\-patch\-nops
  \&\-mlongcall  \-mno\-longcall  \-mpltseq  \-mno\-pltseq
  \&\-mblock\-move\-inline\-limit=\fR\fInum\fR
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 1359,1365 ****
  \&\-mpcrel \-mno\-pcrel \-mmma \-mno\-mmma \-mrop\-protect \-mno\-rop\-protect
  \&\-mprivileged \-mno\-privileged\fR
  .Sp
! \&\fI\s-1RX\s0 Options\fR (\fB\s-1RX\s0 Options\fR)
  \&\fB\-m64bit\-doubles  \-m32bit\-doubles  \-fpu  \-nofpu
  \&\-mcpu=
  \&\-mbig\-endian\-data  \-mlittle\-endian\-data
--- 1288,1294 ----
  \&\-mpcrel \-mno\-pcrel \-mmma \-mno\-mmma \-mrop\-protect \-mno\-rop\-protect
  \&\-mprivileged \-mno\-privileged\fR
  .Sp
! \&\fIRX Options\fR (\fBRX Options\fR)
  \&\fB\-m64bit\-doubles  \-m32bit\-doubles  \-fpu  \-nofpu
  \&\-mcpu=
  \&\-mbig\-endian\-data  \-mlittle\-endian\-data
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 1376,1382 ****
  \&\-msave\-acc\-in\-interrupts\fR
  .Sp
  \&\fIS/390 and zSeries Options\fR (\fBS/390 and zSeries Options\fR)
! \&\fB\-mtune=\fR\fIcpu-type\fR  \fB\-march=\fR\fIcpu-type\fR
  \&\fB\-mhard\-float  \-msoft\-float  \-mhard\-dfp  \-mno\-hard\-dfp
  \&\-mlong\-double\-64  \-mlong\-double\-128
  \&\-mbackchain  \-mno\-backchain  \-mpacked\-stack  \-mno\-packed\-stack
--- 1305,1311 ----
  \&\-msave\-acc\-in\-interrupts\fR
  .Sp
  \&\fIS/390 and zSeries Options\fR (\fBS/390 and zSeries Options\fR)
! \&\fB\-mtune=\fR\fIcpu\-type\fR  \fB\-march=\fR\fIcpu\-type\fR
  \&\fB\-mhard\-float  \-msoft\-float  \-mhard\-dfp  \-mno\-hard\-dfp
  \&\-mlong\-double\-64  \-mlong\-double\-128
  \&\-mbackchain  \-mno\-backchain  \-mpacked\-stack  \-mno\-packed\-stack
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 1388,1394 ****
  \&\-mwarn\-framesize  \-mwarn\-dynamicstack  \-mstack\-size  \-mstack\-guard
  \&\-mhotpatch=\fR\fIhalfwords\fR\fB,\fR\fIhalfwords\fR
  .Sp
! \&\fI\s-1SH\s0 Options\fR (\fB\s-1SH\s0 Options\fR)
  \&\fB\-m1  \-m2  \-m2e
  \&\-m2a\-nofpu  \-m2a\-single\-only  \-m2a\-single  \-m2a
  \&\-m3  \-m3e
--- 1317,1323 ----
  \&\-mwarn\-framesize  \-mwarn\-dynamicstack  \-mstack\-size  \-mstack\-guard
  \&\-mhotpatch=\fR\fIhalfwords\fR\fB,\fR\fIhalfwords\fR
  .Sp
! \&\fISH Options\fR (\fBSH Options\fR)
  \&\fB\-m1  \-m2  \-m2e
  \&\-m2a\-nofpu  \-m2a\-single\-only  \-m2a\-single  \-m2a
  \&\-m3  \-m3e
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 1398,1406 ****
  \&\-mbigtable  \-mfmovd  \-mrenesas  \-mno\-renesas  \-mnomacsave
  \&\-mieee  \-mno\-ieee  \-mbitops  \-misize  \-minline\-ic_invalidate  \-mpadstruct
  \&\-mprefergot  \-musermode  \-multcost=\fR\fInumber\fR  \fB\-mdiv=\fR\fIstrategy\fR
! \&\fB\-mdivsi3_libfunc=\fR\fIname\fR  \fB\-mfixed\-range=\fR\fIregister-range\fR
  \&\fB\-maccumulate\-outgoing\-args
! \&\-matomic\-model=\fR\fIatomic-model\fR
  \&\fB\-mbranch\-cost=\fR\fInum\fR  \fB\-mzdcbranch  \-mno\-zdcbranch
  \&\-mcbranch\-force\-delay\-slot
  \&\-mfused\-madd  \-mno\-fused\-madd  \-mfsca  \-mno\-fsca  \-mfsrra  \-mno\-fsrra
--- 1327,1335 ----
  \&\-mbigtable  \-mfmovd  \-mrenesas  \-mno\-renesas  \-mnomacsave
  \&\-mieee  \-mno\-ieee  \-mbitops  \-misize  \-minline\-ic_invalidate  \-mpadstruct
  \&\-mprefergot  \-musermode  \-multcost=\fR\fInumber\fR  \fB\-mdiv=\fR\fIstrategy\fR
! \&\fB\-mdivsi3_libfunc=\fR\fIname\fR  \fB\-mfixed\-range=\fR\fIregister\-range\fR
  \&\fB\-maccumulate\-outgoing\-args
! \&\-matomic\-model=\fR\fIatomic\-model\fR
  \&\fB\-mbranch\-cost=\fR\fInum\fR  \fB\-mzdcbranch  \-mno\-zdcbranch
  \&\-mcbranch\-force\-delay\-slot
  \&\-mfused\-madd  \-mno\-fused\-madd  \-mfsca  \-mno\-fsca  \-mfsrra  \-mno\-fsrra
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 1410,1420 ****
  \&\fB\-mclear\-hwcap  \-mno\-clear\-hwcap  \-mimpure\-text  \-mno\-impure\-text
  \&\-pthreads\fR
  .Sp
! \&\fI\s-1SPARC\s0 Options\fR (\fB\s-1SPARC\s0 Options\fR)
! \&\fB\-mcpu=\fR\fIcpu-type\fR
! \&\fB\-mtune=\fR\fIcpu-type\fR
! \&\fB\-mcmodel=\fR\fIcode-model\fR
! \&\fB\-mmemory\-model=\fR\fImem-model\fR
  \&\fB\-m32  \-m64  \-mapp\-regs  \-mno\-app\-regs
  \&\-mfaster\-structs  \-mno\-faster\-structs  \-mflat  \-mno\-flat
  \&\-mfpu  \-mno\-fpu  \-mhard\-float  \-msoft\-float
--- 1339,1349 ----
  \&\fB\-mclear\-hwcap  \-mno\-clear\-hwcap  \-mimpure\-text  \-mno\-impure\-text
  \&\-pthreads\fR
  .Sp
! \&\fISPARC Options\fR (\fBSPARC Options\fR)
! \&\fB\-mcpu=\fR\fIcpu\-type\fR
! \&\fB\-mtune=\fR\fIcpu\-type\fR
! \&\fB\-mcmodel=\fR\fIcode\-model\fR
! \&\fB\-mmemory\-model=\fR\fImem\-model\fR
  \&\fB\-m32  \-m64  \-mapp\-regs  \-mno\-app\-regs
  \&\-mfaster\-structs  \-mno\-faster\-structs  \-mflat  \-mno\-flat
  \&\-mfpu  \-mno\-fpu  \-mhard\-float  \-msoft\-float
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 1451,1464 ****
  \&\-mrh850\-abi
  \&\-mbig\-switch\fR
  .Sp
! \&\fI\s-1VAX\s0 Options\fR (\fB\s-1VAX\s0 Options\fR)
  \&\fB\-munix  \-mgnu  \-md  \-md\-float  \-mg  \-mg\-float  \-mlra\fR
  .Sp
  \&\fIVisium Options\fR (\fBVisium Options\fR)
  \&\fB\-mdebug  \-msim  \-mfpu  \-mno\-fpu  \-mhard\-float  \-msoft\-float
! \&\-mcpu=\fR\fIcpu-type\fR  \fB\-mtune=\fR\fIcpu-type\fR  \fB\-msv\-mode  \-muser\-mode\fR
  .Sp
! \&\fI\s-1VMS\s0 Options\fR (\fB\s-1VMS\s0 Options\fR)
  \&\fB\-mvms\-return\-codes  \-mdebug\-main=\fR\fIprefix\fR  \fB\-mmalloc64
  \&\-mpointer\-size=\fR\fIsize\fR
  .Sp
--- 1380,1393 ----
  \&\-mrh850\-abi
  \&\-mbig\-switch\fR
  .Sp
! \&\fIVAX Options\fR (\fBVAX Options\fR)
  \&\fB\-munix  \-mgnu  \-md  \-md\-float  \-mg  \-mg\-float  \-mlra\fR
  .Sp
  \&\fIVisium Options\fR (\fBVisium Options\fR)
  \&\fB\-mdebug  \-msim  \-mfpu  \-mno\-fpu  \-mhard\-float  \-msoft\-float
! \&\-mcpu=\fR\fIcpu\-type\fR  \fB\-mtune=\fR\fIcpu\-type\fR  \fB\-msv\-mode  \-muser\-mode\fR
  .Sp
! \&\fIVMS Options\fR (\fBVMS Options\fR)
  \&\fB\-mvms\-return\-codes  \-mdebug\-main=\fR\fIprefix\fR  \fB\-mmalloc64
  \&\-mpointer\-size=\fR\fIsize\fR
  .Sp
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 1467,1474 ****
  \&\-Xbind\-lazy  \-Xbind\-now\fR
  .Sp
  \&\fIx86 Options\fR (\fBx86 Options\fR)
! \&\fB\-mtune=\fR\fIcpu-type\fR  \fB\-march=\fR\fIcpu-type\fR
! \&\fB\-mtune\-ctrl=\fR\fIfeature-list\fR  \fB\-mdump\-tune\-features  \-mno\-default
  \&\-mfpmath=\fR\fIunit\fR
  \&\fB\-masm=\fR\fIdialect\fR  \fB\-mno\-fancy\-math\-387
  \&\-mno\-fp\-ret\-in\-387  \-m80387  \-mhard\-float  \-msoft\-float
--- 1396,1403 ----
  \&\-Xbind\-lazy  \-Xbind\-now\fR
  .Sp
  \&\fIx86 Options\fR (\fBx86 Options\fR)
! \&\fB\-mtune=\fR\fIcpu\-type\fR  \fB\-march=\fR\fIcpu\-type\fR
! \&\fB\-mtune\-ctrl=\fR\fIfeature\-list\fR  \fB\-mdump\-tune\-features  \-mno\-default
  \&\-mfpmath=\fR\fIunit\fR
  \&\fB\-masm=\fR\fIdialect\fR  \fB\-mno\-fancy\-math\-387
  \&\-mno\-fp\-ret\-in\-387  \-m80387  \-mhard\-float  \-msoft\-float
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 1509,1515 ****
  \&\-mveclibabi=\fR\fItype\fR  \fB\-mvect8\-ret\-in\-mem
  \&\-mpc32  \-mpc64  \-mpc80  \-mdaz\-ftz \-mstackrealign
  \&\-momit\-leaf\-frame\-pointer  \-mno\-red\-zone  \-mno\-tls\-direct\-seg\-refs
! \&\-mcmodel=\fR\fIcode-model\fR  \fB\-mabi=\fR\fIname\fR  \fB\-maddress\-mode=\fR\fImode\fR
  \&\fB\-m32  \-m64  \-mx32  \-m16  \-miamcu  \-mlarge\-data\-threshold=\fR\fInum\fR
  \&\fB\-msse2avx  \-mfentry  \-mrecord\-mcount  \-mnop\-mcount  \-m8bit\-idiv
  \&\-minstrument\-return=\fR\fItype\fR \fB\-mfentry\-name=\fR\fIname\fR \fB\-mfentry\-section=\fR\fIname\fR
--- 1438,1444 ----
  \&\-mveclibabi=\fR\fItype\fR  \fB\-mvect8\-ret\-in\-mem
  \&\-mpc32  \-mpc64  \-mpc80  \-mdaz\-ftz \-mstackrealign
  \&\-momit\-leaf\-frame\-pointer  \-mno\-red\-zone  \-mno\-tls\-direct\-seg\-refs
! \&\-mcmodel=\fR\fIcode\-model\fR  \fB\-mabi=\fR\fIname\fR  \fB\-maddress\-mode=\fR\fImode\fR
  \&\fB\-m32  \-m64  \-mx32  \-m16  \-miamcu  \-mlarge\-data\-threshold=\fR\fInum\fR
  \&\fB\-msse2avx  \-mfentry  \-mrecord\-mcount  \-mnop\-mcount  \-m8bit\-idiv
  \&\-minstrument\-return=\fR\fItype\fR \fB\-mfentry\-name=\fR\fIname\fR \fB\-mfentry\-section=\fR\fIname\fR
*************** See Cygwin and MinGW Options.
*** 1539,1545 ****
  \&\-mauto\-litpools  \-mno\-auto\-litpools
  \&\-mtarget\-align  \-mno\-target\-align
  \&\-mlongcalls  \-mno\-longcalls
! \&\-mabi=\fR\fIabi-type\fR
  \&\fB\-mextra\-l32r\-costs=\fR\fIcycles\fR
  \&\fB\-mstrict\-align  \-mno\-strict\-align\fR
  .Sp
--- 1468,1474 ----
  \&\-mauto\-litpools  \-mno\-auto\-litpools
  \&\-mtarget\-align  \-mno\-target\-align
  \&\-mlongcalls  \-mno\-longcalls
! \&\-mabi=\fR\fIabi\-type\fR
  \&\fB\-mextra\-l32r\-costs=\fR\fIcycles\fR
  \&\fB\-mstrict\-align  \-mno\-strict\-align\fR
  .Sp
*************** See S/390 and zSeries Options.
*** 1548,1554 ****
  .SS "Options Controlling the Kind of Output"
  .IX Subsection "Options Controlling the Kind of Output"
  Compilation can involve up to four stages: preprocessing, compilation
! proper, assembly and linking, always in that order.  \s-1GCC\s0 is capable of
  preprocessing and compiling several files either into several
  assembler input files, or into one assembler input file; then each
  assembler input file produces an object file, and linking combines all
--- 1477,1483 ----
  .SS "Options Controlling the Kind of Output"
  .IX Subsection "Options Controlling the Kind of Output"
  Compilation can involve up to four stages: preprocessing, compilation
! proper, assembly and linking, always in that order.  GCC is capable of
  preprocessing and compiling several files either into several
  assembler input files, or into one assembler input file; then each
  assembler input file produces an object file, and linking combines all
*************** into an executable file.
*** 1557,1738 ****
  .PP
  For any given input file, the file name suffix determines what kind of
  compilation is done:
! .IP "\fIfile\fR\fB.c\fR" 4
  .IX Item "file.c"
  C source code that must be preprocessed.
! .IP "\fIfile\fR\fB.i\fR" 4
  .IX Item "file.i"
  C source code that should not be preprocessed.
! .IP "\fIfile\fR\fB.ii\fR" 4
  .IX Item "file.ii"
! \&\*(C+ source code that should not be preprocessed.
! .IP "\fIfile\fR\fB.m\fR" 4
  .IX Item "file.m"
! Objective-C source code.  Note that you must link with the \fIlibobjc\fR
! library to make an Objective-C program work.
! .IP "\fIfile\fR\fB.mi\fR" 4
  .IX Item "file.mi"
! Objective-C source code that should not be preprocessed.
! .IP "\fIfile\fR\fB.mm\fR" 4
  .IX Item "file.mm"
  .PD 0
! .IP "\fIfile\fR\fB.M\fR" 4
  .IX Item "file.M"
  .PD
! Objective\-\*(C+ source code.  Note that you must link with the \fIlibobjc\fR
! library to make an Objective\-\*(C+ program work.  Note that \fB.M\fR refers
  to a literal capital M.
! .IP "\fIfile\fR\fB.mii\fR" 4
  .IX Item "file.mii"
! Objective\-\*(C+ source code that should not be preprocessed.
! .IP "\fIfile\fR\fB.h\fR" 4
  .IX Item "file.h"
! C, \*(C+, Objective-C or Objective\-\*(C+ header file to be turned into a
! precompiled header (default), or C, \*(C+ header file to be turned into an
  Ada spec (via the \fB\-fdump\-ada\-spec\fR switch).
! .IP "\fIfile\fR\fB.cc\fR" 4
  .IX Item "file.cc"
  .PD 0
! .IP "\fIfile\fR\fB.cp\fR" 4
  .IX Item "file.cp"
! .IP "\fIfile\fR\fB.cxx\fR" 4
  .IX Item "file.cxx"
! .IP "\fIfile\fR\fB.cpp\fR" 4
  .IX Item "file.cpp"
! .IP "\fIfile\fR\fB.CPP\fR" 4
  .IX Item "file.CPP"
! .IP "\fIfile\fR\fB.c++\fR" 4
  .IX Item "file.c++"
! .IP "\fIfile\fR\fB.C\fR" 4
  .IX Item "file.C"
  .PD
! \&\*(C+ source code that must be preprocessed.  Note that in \fB.cxx\fR,
  the last two letters must both be literally \fBx\fR.  Likewise,
  \&\fB.C\fR refers to a literal capital C.
! .IP "\fIfile\fR\fB.mm\fR" 4
  .IX Item "file.mm"
  .PD 0
! .IP "\fIfile\fR\fB.M\fR" 4
  .IX Item "file.M"
  .PD
! Objective\-\*(C+ source code that must be preprocessed.
! .IP "\fIfile\fR\fB.mii\fR" 4
  .IX Item "file.mii"
! Objective\-\*(C+ source code that should not be preprocessed.
! .IP "\fIfile\fR\fB.hh\fR" 4
  .IX Item "file.hh"
  .PD 0
! .IP "\fIfile\fR\fB.H\fR" 4
  .IX Item "file.H"
! .IP "\fIfile\fR\fB.hp\fR" 4
  .IX Item "file.hp"
! .IP "\fIfile\fR\fB.hxx\fR" 4
  .IX Item "file.hxx"
! .IP "\fIfile\fR\fB.hpp\fR" 4
  .IX Item "file.hpp"
! .IP "\fIfile\fR\fB.HPP\fR" 4
  .IX Item "file.HPP"
! .IP "\fIfile\fR\fB.h++\fR" 4
  .IX Item "file.h++"
! .IP "\fIfile\fR\fB.tcc\fR" 4
  .IX Item "file.tcc"
  .PD
! \&\*(C+ header file to be turned into a precompiled header or Ada spec.
! .IP "\fIfile\fR\fB.f\fR" 4
  .IX Item "file.f"
  .PD 0
! .IP "\fIfile\fR\fB.for\fR" 4
  .IX Item "file.for"
! .IP "\fIfile\fR\fB.ftn\fR" 4
  .IX Item "file.ftn"
! .IP "\fIfile\fR\fB.fi\fR" 4
  .IX Item "file.fi"
  .PD
  Fixed form Fortran source code that should not be preprocessed.
! .IP "\fIfile\fR\fB.F\fR" 4
  .IX Item "file.F"
  .PD 0
! .IP "\fIfile\fR\fB.FOR\fR" 4
  .IX Item "file.FOR"
! .IP "\fIfile\fR\fB.fpp\fR" 4
  .IX Item "file.fpp"
! .IP "\fIfile\fR\fB.FPP\fR" 4
  .IX Item "file.FPP"
! .IP "\fIfile\fR\fB.FTN\fR" 4
  .IX Item "file.FTN"
  .PD
  Fixed form Fortran source code that must be preprocessed (with the traditional
  preprocessor).
! .IP "\fIfile\fR\fB.f90\fR" 4
  .IX Item "file.f90"
  .PD 0
! .IP "\fIfile\fR\fB.f95\fR" 4
  .IX Item "file.f95"
! .IP "\fIfile\fR\fB.f03\fR" 4
  .IX Item "file.f03"
! .IP "\fIfile\fR\fB.f08\fR" 4
  .IX Item "file.f08"
! .IP "\fIfile\fR\fB.fii\fR" 4
  .IX Item "file.fii"
  .PD
  Free form Fortran source code that should not be preprocessed.
! .IP "\fIfile\fR\fB.F90\fR" 4
  .IX Item "file.F90"
  .PD 0
! .IP "\fIfile\fR\fB.F95\fR" 4
  .IX Item "file.F95"
! .IP "\fIfile\fR\fB.F03\fR" 4
  .IX Item "file.F03"
! .IP "\fIfile\fR\fB.F08\fR" 4
  .IX Item "file.F08"
  .PD
  Free form Fortran source code that must be preprocessed (with the
  traditional preprocessor).
! .IP "\fIfile\fR\fB.cob\fR" 4
  .IX Item "file.cob"
  .PD 0
! .IP "\fIfile\fR\fB.COB\fR" 4
  .IX Item "file.COB"
! .IP "\fIfile\fR\fB.cbl\fR" 4
  .IX Item "file.cbl"
! .IP "\fIfile\fR\fB.CBL\fR" 4
  .IX Item "file.CBL"
  .PD
! \&\s-1COBOL\s0 source code.
! .IP "\fIfile\fR\fB.go\fR" 4
  .IX Item "file.go"
  Go source code.
! .IP "\fIfile\fR\fB.d\fR" 4
  .IX Item "file.d"
  D source code.
! .IP "\fIfile\fR\fB.di\fR" 4
  .IX Item "file.di"
  D interface file.
! .IP "\fIfile\fR\fB.dd\fR" 4
  .IX Item "file.dd"
  D documentation code (Ddoc).
! .IP "\fIfile\fR\fB.ads\fR" 4
  .IX Item "file.ads"
  Ada source code file that contains a library unit declaration (a
  declaration of a package, subprogram, or generic, or a generic
  instantiation), or a library unit renaming declaration (a package,
  generic, or subprogram renaming declaration).  Such files are also
  called \fIspecs\fR.
! .IP "\fIfile\fR\fB.adb\fR" 4
  .IX Item "file.adb"
  Ada source code file containing a library unit body (a subprogram or
  package body).  Such files are also called \fIbodies\fR.
! .IP "\fIfile\fR\fB.s\fR" 4
  .IX Item "file.s"
  Assembler code.
! .IP "\fIfile\fR\fB.S\fR" 4
  .IX Item "file.S"
  .PD 0
! .IP "\fIfile\fR\fB.sx\fR" 4
  .IX Item "file.sx"
  .PD
  Assembler code that must be preprocessed.
! .IP "\fIother\fR" 4
  .IX Item "other"
  An object file to be fed straight into linking.
  Any file name with no recognized suffix is treated this way.
--- 1486,1667 ----
  .PP
  For any given input file, the file name suffix determines what kind of
  compilation is done:
! .IP \fIfile\fR\fB.c\fR 4
  .IX Item "file.c"
  C source code that must be preprocessed.
! .IP \fIfile\fR\fB.i\fR 4
  .IX Item "file.i"
  C source code that should not be preprocessed.
! .IP \fIfile\fR\fB.ii\fR 4
  .IX Item "file.ii"
! C++ source code that should not be preprocessed.
! .IP \fIfile\fR\fB.m\fR 4
  .IX Item "file.m"
! Objective\-C source code.  Note that you must link with the \fIlibobjc\fR
! library to make an Objective\-C program work.
! .IP \fIfile\fR\fB.mi\fR 4
  .IX Item "file.mi"
! Objective\-C source code that should not be preprocessed.
! .IP \fIfile\fR\fB.mm\fR 4
  .IX Item "file.mm"
  .PD 0
! .IP \fIfile\fR\fB.M\fR 4
  .IX Item "file.M"
  .PD
! Objective\-C++ source code.  Note that you must link with the \fIlibobjc\fR
! library to make an Objective\-C++ program work.  Note that \fB.M\fR refers
  to a literal capital M.
! .IP \fIfile\fR\fB.mii\fR 4
  .IX Item "file.mii"
! Objective\-C++ source code that should not be preprocessed.
! .IP \fIfile\fR\fB.h\fR 4
  .IX Item "file.h"
! C, C++, Objective\-C or Objective\-C++ header file to be turned into a
! precompiled header (default), or C, C++ header file to be turned into an
  Ada spec (via the \fB\-fdump\-ada\-spec\fR switch).
! .IP \fIfile\fR\fB.cc\fR 4
  .IX Item "file.cc"
  .PD 0
! .IP \fIfile\fR\fB.cp\fR 4
  .IX Item "file.cp"
! .IP \fIfile\fR\fB.cxx\fR 4
  .IX Item "file.cxx"
! .IP \fIfile\fR\fB.cpp\fR 4
  .IX Item "file.cpp"
! .IP \fIfile\fR\fB.CPP\fR 4
  .IX Item "file.CPP"
! .IP \fIfile\fR\fB.c++\fR 4
  .IX Item "file.c++"
! .IP \fIfile\fR\fB.C\fR 4
  .IX Item "file.C"
  .PD
! C++ source code that must be preprocessed.  Note that in \fB.cxx\fR,
  the last two letters must both be literally \fBx\fR.  Likewise,
  \&\fB.C\fR refers to a literal capital C.
! .IP \fIfile\fR\fB.mm\fR 4
  .IX Item "file.mm"
  .PD 0
! .IP \fIfile\fR\fB.M\fR 4
  .IX Item "file.M"
  .PD
! Objective\-C++ source code that must be preprocessed.
! .IP \fIfile\fR\fB.mii\fR 4
  .IX Item "file.mii"
! Objective\-C++ source code that should not be preprocessed.
! .IP \fIfile\fR\fB.hh\fR 4
  .IX Item "file.hh"
  .PD 0
! .IP \fIfile\fR\fB.H\fR 4
  .IX Item "file.H"
! .IP \fIfile\fR\fB.hp\fR 4
  .IX Item "file.hp"
! .IP \fIfile\fR\fB.hxx\fR 4
  .IX Item "file.hxx"
! .IP \fIfile\fR\fB.hpp\fR 4
  .IX Item "file.hpp"
! .IP \fIfile\fR\fB.HPP\fR 4
  .IX Item "file.HPP"
! .IP \fIfile\fR\fB.h++\fR 4
  .IX Item "file.h++"
! .IP \fIfile\fR\fB.tcc\fR 4
  .IX Item "file.tcc"
  .PD
! C++ header file to be turned into a precompiled header or Ada spec.
! .IP \fIfile\fR\fB.f\fR 4
  .IX Item "file.f"
  .PD 0
! .IP \fIfile\fR\fB.for\fR 4
  .IX Item "file.for"
! .IP \fIfile\fR\fB.ftn\fR 4
  .IX Item "file.ftn"
! .IP \fIfile\fR\fB.fi\fR 4
  .IX Item "file.fi"
  .PD
  Fixed form Fortran source code that should not be preprocessed.
! .IP \fIfile\fR\fB.F\fR 4
  .IX Item "file.F"
  .PD 0
! .IP \fIfile\fR\fB.FOR\fR 4
  .IX Item "file.FOR"
! .IP \fIfile\fR\fB.fpp\fR 4
  .IX Item "file.fpp"
! .IP \fIfile\fR\fB.FPP\fR 4
  .IX Item "file.FPP"
! .IP \fIfile\fR\fB.FTN\fR 4
  .IX Item "file.FTN"
  .PD
  Fixed form Fortran source code that must be preprocessed (with the traditional
  preprocessor).
! .IP \fIfile\fR\fB.f90\fR 4
  .IX Item "file.f90"
  .PD 0
! .IP \fIfile\fR\fB.f95\fR 4
  .IX Item "file.f95"
! .IP \fIfile\fR\fB.f03\fR 4
  .IX Item "file.f03"
! .IP \fIfile\fR\fB.f08\fR 4
  .IX Item "file.f08"
! .IP \fIfile\fR\fB.fii\fR 4
  .IX Item "file.fii"
  .PD
  Free form Fortran source code that should not be preprocessed.
! .IP \fIfile\fR\fB.F90\fR 4
  .IX Item "file.F90"
  .PD 0
! .IP \fIfile\fR\fB.F95\fR 4
  .IX Item "file.F95"
! .IP \fIfile\fR\fB.F03\fR 4
  .IX Item "file.F03"
! .IP \fIfile\fR\fB.F08\fR 4
  .IX Item "file.F08"
  .PD
  Free form Fortran source code that must be preprocessed (with the
  traditional preprocessor).
! .IP \fIfile\fR\fB.cob\fR 4
  .IX Item "file.cob"
  .PD 0
! .IP \fIfile\fR\fB.COB\fR 4
  .IX Item "file.COB"
! .IP \fIfile\fR\fB.cbl\fR 4
  .IX Item "file.cbl"
! .IP \fIfile\fR\fB.CBL\fR 4
  .IX Item "file.CBL"
  .PD
! COBOL source code.
! .IP \fIfile\fR\fB.go\fR 4
  .IX Item "file.go"
  Go source code.
! .IP \fIfile\fR\fB.d\fR 4
  .IX Item "file.d"
  D source code.
! .IP \fIfile\fR\fB.di\fR 4
  .IX Item "file.di"
  D interface file.
! .IP \fIfile\fR\fB.dd\fR 4
  .IX Item "file.dd"
  D documentation code (Ddoc).
! .IP \fIfile\fR\fB.ads\fR 4
  .IX Item "file.ads"
  Ada source code file that contains a library unit declaration (a
  declaration of a package, subprogram, or generic, or a generic
  instantiation), or a library unit renaming declaration (a package,
  generic, or subprogram renaming declaration).  Such files are also
  called \fIspecs\fR.
! .IP \fIfile\fR\fB.adb\fR 4
  .IX Item "file.adb"
  Ada source code file containing a library unit body (a subprogram or
  package body).  Such files are also called \fIbodies\fR.
! .IP \fIfile\fR\fB.s\fR 4
  .IX Item "file.s"
  Assembler code.
! .IP \fIfile\fR\fB.S\fR 4
  .IX Item "file.S"
  .PD 0
! .IP \fIfile\fR\fB.sx\fR 4
  .IX Item "file.sx"
  .PD
  Assembler code that must be preprocessed.
! .IP \fIother\fR 4
  .IX Item "other"
  An object file to be fed straight into linking.
  Any file name with no recognized suffix is treated this way.
*************** the next \fB\-x\fR option.  Possible val
*** 1748,1761 ****
  .Vb 10
  \&        c  c\-header  cpp\-output
  \&        c++  c++\-header  c++\-system\-header c++\-user\-header c++\-cpp\-output
! \&        objective\-c  objective\-c\-header  objective\-c\-cpp\-output
! \&        objective\-c++ objective\-c++\-header objective\-c++\-cpp\-output
  \&        assembler  assembler\-with\-cpp
! \&        ada
  \&        cobol
  \&        d
! \&        f77  f77\-cpp\-input f95  f95\-cpp\-input
  \&        go
  .Ve
  .Sp
  Note that \fB\-x\fR does not imply a particular language standard.
--- 1677,1694 ----
  .Vb 10
  \&        c  c\-header  cpp\-output
  \&        c++  c++\-header  c++\-system\-header c++\-user\-header c++\-cpp\-output
! \&        objective\-c  objective\-c\-header  objective\-c\-cpp\-output  objc\-cpp\-output
! \&        objective\-c++  objective\-c++\-header  objective\-c++\-cpp\-output
! \&        objc++\-cpp\-output
  \&        assembler  assembler\-with\-cpp
! \&        ada  adascil  adawhy
  \&        cobol
  \&        d
! \&        f77  f77\-cpp\-input  f95  f95\-cpp\-input
  \&        go
+ \&        modula\-2  modula\-2\-cpp\-output
+ \&        rust
+ \&        lto
  .Ve
  .Sp
  Note that \fB\-x\fR does not imply a particular language standard.
*************** If you only want some of the stages of c
*** 1771,1778 ****
  \&\fB\-x\fR (or filename suffixes) to tell \fBgcc\fR where to start, and
  one of the options \fB\-c\fR, \fB\-S\fR, or \fB\-E\fR to say where
  \&\fBgcc\fR is to stop.  Note that some combinations (for example,
! \&\fB\-x cpp-output \-E\fR) instruct \fBgcc\fR to do nothing at all.
! .IP "\fB\-c\fR" 4
  .IX Item "-c"
  Compile or assemble the source files, but do not link.  The linking
  stage simply is not done.  The ultimate output is in the form of an
--- 1704,1711 ----
  \&\fB\-x\fR (or filename suffixes) to tell \fBgcc\fR where to start, and
  one of the options \fB\-c\fR, \fB\-S\fR, or \fB\-E\fR to say where
  \&\fBgcc\fR is to stop.  Note that some combinations (for example,
! \&\fB\-x cpp\-output \-E\fR) instruct \fBgcc\fR to do nothing at all.
! .IP \fB\-c\fR 4
  .IX Item "-c"
  Compile or assemble the source files, but do not link.  The linking
  stage simply is not done.  The ultimate output is in the form of an
*************** the suffix \fB.c\fR, \fB.i\fR, \fB.s\fR,
*** 1783,1805 ****
  .Sp
  Unrecognized input files, not requiring compilation or assembly, are
  ignored.
! .IP "\fB\-S\fR" 4
  .IX Item "-S"
  Stop after the stage of compilation proper; do not assemble.  The output
! is in the form of an assembler code file for each non-assembler input
  file specified.
  .Sp
  By default, the assembler file name for a source file is made by
  replacing the suffix \fB.c\fR, \fB.i\fR, etc., with \fB.s\fR.
  .Sp
! Input files that don't require compilation are ignored.
! .IP "\fB\-E\fR" 4
  .IX Item "-E"
  Stop after the preprocessing stage; do not run the compiler proper.  The
  output is in the form of preprocessed source code, which is sent to the
  standard output.
  .Sp
! Input files that don't require preprocessing are ignored.
  .IP "\fB\-o\fR \fIfile\fR" 4
  .IX Item "-o file"
  Place the primary output in file \fIfile\fR.  This applies to whatever
--- 1716,1738 ----
  .Sp
  Unrecognized input files, not requiring compilation or assembly, are
  ignored.
! .IP \fB\-S\fR 4
  .IX Item "-S"
  Stop after the stage of compilation proper; do not assemble.  The output
! is in the form of an assembler code file for each non\-assembler input
  file specified.
  .Sp
  By default, the assembler file name for a source file is made by
  replacing the suffix \fB.c\fR, \fB.i\fR, etc., with \fB.s\fR.
  .Sp
! Input files that don\*(Aqt require compilation are ignored.
! .IP \fB\-E\fR 4
  .IX Item "-E"
  Stop after the preprocessing stage; do not run the compiler proper.  The
  output is in the form of preprocessed source code, which is sent to the
  standard output.
  .Sp
! Input files that don\*(Aqt require preprocessing are ignored.
  .IP "\fB\-o\fR \fIfile\fR" 4
  .IX Item "-o file"
  Place the primary output in file \fIfile\fR.  This applies to whatever
*************** object file, an assembler file or prepro
*** 1808,1816 ****
  .Sp
  If \fB\-o\fR is not specified, the default is to put an executable
  file in \fIa.out\fR, the object file for
! \&\fI\fIsource\fI.\fIsuffix\fI\fR in \fI\fIsource\fI.o\fR, its
! assembler file in \fI\fIsource\fI.s\fR, a precompiled header file in
! \&\fI\fIsource\fI.\fIsuffix\fI.gch\fR, and all preprocessed C source on
  standard output.
  .Sp
  Though \fB\-o\fR names only the primary output, it also affects the
--- 1741,1749 ----
  .Sp
  If \fB\-o\fR is not specified, the default is to put an executable
  file in \fIa.out\fR, the object file for
! \&\fIsource.suffix\fR in \fIsource.o\fR, its
! assembler file in \fIsource.s\fR, a precompiled header file in
! \&\fIsource.suffix.gch\fR, and all preprocessed C source on
  standard output.
  .Sp
  Though \fB\-o\fR names only the primary output, it also affects the
*************** dumps next to it, e.g., aux file \fIfoo.
*** 1835,1841 ****
  \&\fB\-gsplit\-dwarf\fR, and dump file \fIfoo.c.???r.final\fR for
  \&\fB\-fdump\-rtl\-final\fR.
  .Sp
! If a non-linker output file is explicitly specified, aux and dump files
  by default take the same base name:
  .Sp
  .Vb 1
--- 1768,1774 ----
  \&\fB\-gsplit\-dwarf\fR, and dump file \fIfoo.c.???r.final\fR for
  \&\fB\-fdump\-rtl\-final\fR.
  .Sp
! If a non\-linker output file is explicitly specified, aux and dump files
  by default take the same base name:
  .Sp
  .Vb 1
*************** an intermediate, thus auxiliary output),
*** 1892,1905 ****
  (implied) output file \fIfoo.o\fR.
  .Sp
  Absent this option, dump and aux files take their names from the input
! file, or from the (non-linker) output file, if one is explicitly
  specified: dump output files (e.g. those requested by \fB\-fdump\-*\fR
  options) with the input name suffix, and aux output files (those
! requested by other non-dump options, e.g. \f(CW\*(C`\-save\-temps\*(C'\fR,
  \&\f(CW\*(C`\-gsplit\-dwarf\*(C'\fR, \f(CW\*(C`\-fcallgraph\-info\*(C'\fR) without it.
  .Sp
  Similar suffix differentiation of dump and aux outputs can be attained
! for explicitly-given \fB\-dumpbase basename.suf\fR by also specifying
  \&\fB\-dumpbase\-ext .suf\fR.
  .Sp
  If \fIdumpbase\fR is explicitly specified with any directory component,
--- 1825,1838 ----
  (implied) output file \fIfoo.o\fR.
  .Sp
  Absent this option, dump and aux files take their names from the input
! file, or from the (non\-linker) output file, if one is explicitly
  specified: dump output files (e.g. those requested by \fB\-fdump\-*\fR
  options) with the input name suffix, and aux output files (those
! requested by other non\-dump options, e.g. \f(CW\*(C`\-save\-temps\*(C'\fR,
  \&\f(CW\*(C`\-gsplit\-dwarf\*(C'\fR, \f(CW\*(C`\-fcallgraph\-info\*(C'\fR) without it.
  .Sp
  Similar suffix differentiation of dump and aux outputs can be attained
! for explicitly\-given \fB\-dumpbase basename.suf\fR by also specifying
  \&\fB\-dumpbase\-ext .suf\fR.
  .Sp
  If \fIdumpbase\fR is explicitly specified with any directory component,
*************** will name aux outputs \fIdir/foo.*\fR an
*** 1944,1950 ****
  \&\fIdir/foo.c.*\fR.  Note how their basenames are taken from the input
  name, but the directory still defaults to that of the output.
  .Sp
! The empty-string dumpbase does not prevent the use of the output
  basename for outputs during linking:
  .Sp
  .Vb 1
--- 1877,1883 ----
  \&\fIdir/foo.c.*\fR.  Note how their basenames are taken from the input
  name, but the directory still defaults to that of the output.
  .Sp
! The empty\-string dumpbase does not prevent the use of the output
  basename for outputs during linking:
  .Sp
  .Vb 1
*************** basename for outputs during linking:
*** 1953,1959 ****
  .Sp
  The compilation of the source files will name auxiliary outputs
  \&\fIdir/foo.*\fR and \fIdir/bar.*\fR, and dump outputs
! \&\fIdir/foo.c.*\fR and \fIdir/bar.c.*\fR.  \s-1LTO\s0 recompilation during
  linking will use \fIdir/foobar.\fR as the prefix for dumps and
  auxiliary files.
  .IP "\fB\-dumpbase\-ext\fR \fIauxdropsuf\fR" 4
--- 1886,1892 ----
  .Sp
  The compilation of the source files will name auxiliary outputs
  \&\fIdir/foo.*\fR and \fIdir/bar.*\fR, and dump outputs
! \&\fIdir/foo.c.*\fR and \fIdir/bar.c.*\fR.  LTO recompilation during
  linking will use \fIdir/foobar.\fR as the prefix for dumps and
  auxiliary files.
  .IP "\fB\-dumpbase\-ext\fR \fIauxdropsuf\fR" 4
*************** When compiling from multiple input files
*** 2036,2042 ****
  specified, \fIdumpbase\fR, minus a \fIauxdropsuf\fR suffix, and a dash
  are appended to (or override, if containing any directory components) an
  explicit or defaulted \fIdumppfx\fR, so that each of the multiple
! compilations gets differently-named aux and dump outputs.
  .Sp
  .Vb 1
  \&        gcc foo.c bar.c \-c \-dumpdir dir/pfx\- \-dumpbase main ...
--- 1969,1975 ----
  specified, \fIdumpbase\fR, minus a \fIauxdropsuf\fR suffix, and a dash
  are appended to (or override, if containing any directory components) an
  explicit or defaulted \fIdumppfx\fR, so that each of the multiple
! compilations gets differently\-named aux and dump outputs.
  .Sp
  .Vb 1
  \&        gcc foo.c bar.c \-c \-dumpdir dir/pfx\- \-dumpbase main ...
*************** outputs auxiliary dumps to \fIdir/pfx\-m
*** 2046,2052 ****
  \&\fIdir/pfx\-main\-bar.*\fR, appending \fIdumpbase\fR\- to \fIdumppfx\fR.
  Dump outputs retain the input file suffix: \fIdir/pfx\-main\-foo.c.*\fR
  and \fIdir/pfx\-main\-bar.c.*\fR, respectively.  Contrast with the
! single-input compilation:
  .Sp
  .Vb 1
  \&        gcc foo.c \-c \-dumpdir dir/pfx\- \-dumpbase main ...
--- 1979,1985 ----
  \&\fIdir/pfx\-main\-bar.*\fR, appending \fIdumpbase\fR\- to \fIdumppfx\fR.
  Dump outputs retain the input file suffix: \fIdir/pfx\-main\-foo.c.*\fR
  and \fIdir/pfx\-main\-bar.c.*\fR, respectively.  Contrast with the
! single\-input compilation:
  .Sp
  .Vb 1
  \&        gcc foo.c \-c \-dumpdir dir/pfx\- \-dumpbase main ...
*************** instead.  Note, however, that unlike ear
*** 2071,2085 ****
  .Sp
  does not append the output name \fImain\fR to \fIdumppfx\fR, because
  \&\fB\-dumpdir\fR is explicitly specified.  The goal is that the
! explicitly-specified \fIdumppfx\fR may contain the specified output name
! as part of the prefix, if desired; only an explicitly-specified
  \&\fB\-dumpbase\fR would be combined with it, in order to avoid simply
  discarding a meaningful option.
  .Sp
  When compiling and then linking from a single input file, the linker
  output base name will only be appended to the default \fIdumppfx\fR as
  above if it does not share the base name with the single input file
! name.  This has been covered in single-input linking cases above, but
  not with an explicit \fB\-dumpdir\fR that inhibits the combination,
  even if overridden by \fB\-save\-temps=*\fR:
  .Sp
--- 2004,2018 ----
  .Sp
  does not append the output name \fImain\fR to \fIdumppfx\fR, because
  \&\fB\-dumpdir\fR is explicitly specified.  The goal is that the
! explicitly\-specified \fIdumppfx\fR may contain the specified output name
! as part of the prefix, if desired; only an explicitly\-specified
  \&\fB\-dumpbase\fR would be combined with it, in order to avoid simply
  discarding a meaningful option.
  .Sp
  When compiling and then linking from a single input file, the linker
  output base name will only be appended to the default \fIdumppfx\fR as
  above if it does not share the base name with the single input file
! name.  This has been covered in single\-input linking cases above, but
  not with an explicit \fB\-dumpdir\fR that inhibits the combination,
  even if overridden by \fB\-save\-temps=*\fR:
  .Sp
*************** for each input are formed by combining \
*** 2102,2197 ****
  minus suffix, and the auxiliary output suffix; dump output names are
  only different in that the suffix from \fIdumpbase\fR is retained.
  .Sp
! When it comes to auxiliary and dump outputs created during \s-1LTO\s0
  recompilation, a combination of \fIdumppfx\fR and \fIdumpbase\fR, as
  given or as derived from the linker output name but not from inputs,
  even in cases in which this combination would not otherwise be used as
! such, is passed down with a trailing period replacing the compiler-added
! dash, if any, as a \fB\-dumpdir\fR option to \fBlto-wrapper\fR;
  being involved in linking, this program does not normally get any
  \&\fB\-dumpbase\fR and \fB\-dumpbase\-ext\fR, and it ignores them.
  .Sp
! When running sub-compilers, \fBlto-wrapper\fR appends \s-1LTO\s0 stage
  names to the received \fIdumppfx\fR, ensures it contains a directory
  component so that it overrides any \fB\-dumpdir\fR, and passes that as
! \&\fB\-dumpbase\fR to sub-compilers.
! .IP "\fB\-v\fR" 4
  .IX Item "-v"
  Print (on standard error output) the commands executed to run the stages
  of compilation.  Also print the version number of the compiler driver
  program and of the preprocessor and the compiler proper.
! .IP "\fB\-###\fR" 4
  .IX Item "-###"
  Like \fB\-v\fR except the commands are not executed and arguments
  are quoted unless they contain only alphanumeric characters or \f(CW\*(C`./\-_\*(C'\fR.
! This is useful for shell scripts to capture the driver-generated command lines.
! .IP "\fB\-\-help\fR" 4
  .IX Item "--help"
! Print (on the standard output) a description of the command-line options
  understood by \fBgcc\fR.  If the \fB\-v\fR option is also specified
  then \fB\-\-help\fR is also passed on to the various processes
! invoked by \fBgcc\fR, so that they can display the command-line options
  they accept.  If the \fB\-Wextra\fR option has also been specified
! (prior to the \fB\-\-help\fR option), then command-line options that
  have no documentation associated with them are also displayed.
! .IP "\fB\-\-target\-help\fR" 4
  .IX Item "--target-help"
! Print (on the standard output) a description of target-specific command-line
! options for each tool.  For some targets extra target-specific
  information may also be printed.
! .IP "\fB\-\-help={\fR\fIclass\fR|[\fB^\fR]\fIqualifier\fR\fB}\fR[\fB,...\fR]" 4
  .IX Item "--help={class|[^]qualifier}[,...]"
! Print (on the standard output) a description of the command-line
  options understood by the compiler that fit into all specified classes
  and qualifiers.  These are the supported classes:
  .RS 4
! .IP "\fBoptimizers\fR" 4
  .IX Item "optimizers"
  Display all of the optimization options supported by the
  compiler.
! .IP "\fBwarnings\fR" 4
  .IX Item "warnings"
  Display all of the options controlling warning messages
  produced by the compiler.
! .IP "\fBtarget\fR" 4
  .IX Item "target"
! Display target-specific options.  Unlike the
! \&\fB\-\-target\-help\fR option however, target-specific options of the
  linker and assembler are not displayed.  This is because those
  tools do not currently support the extended \fB\-\-help=\fR syntax.
! .IP "\fBparams\fR" 4
  .IX Item "params"
  Display the values recognized by the \fB\-\-param\fR
  option.
! .IP "\fIlanguage\fR" 4
  .IX Item "language"
  Display the options supported for \fIlanguage\fR, where
  \&\fIlanguage\fR is the name of one of the languages supported in this
! version of \s-1GCC.\s0  If an option is supported by all languages, one needs
  to select \fBcommon\fR class.
! .IP "\fBcommon\fR" 4
  .IX Item "common"
  Display the options that are common to all languages.
  .RE
  .RS 4
  .Sp
  These are the supported qualifiers:
! .IP "\fBundocumented\fR" 4
  .IX Item "undocumented"
  Display only those options that are undocumented.
! .IP "\fBjoined\fR" 4
  .IX Item "joined"
  Display options taking an argument that appears after an equal
  sign in the same continuous piece of text, such as:
  \&\fB\-\-help=target\fR.
! .IP "\fBseparate\fR" 4
  .IX Item "separate"
  Display options taking an argument that appears as a separate word
! following the original option, such as: \fB\-o output-file\fR.
  .RE
  .RS 4
  .Sp
! Thus for example to display all the undocumented target-specific
  switches supported by the compiler, use:
  .Sp
  .Vb 1
--- 2035,2130 ----
  minus suffix, and the auxiliary output suffix; dump output names are
  only different in that the suffix from \fIdumpbase\fR is retained.
  .Sp
! When it comes to auxiliary and dump outputs created during LTO
  recompilation, a combination of \fIdumppfx\fR and \fIdumpbase\fR, as
  given or as derived from the linker output name but not from inputs,
  even in cases in which this combination would not otherwise be used as
! such, is passed down with a trailing period replacing the compiler\-added
! dash, if any, as a \fB\-dumpdir\fR option to \fBlto\-wrapper\fR;
  being involved in linking, this program does not normally get any
  \&\fB\-dumpbase\fR and \fB\-dumpbase\-ext\fR, and it ignores them.
  .Sp
! When running sub\-compilers, \fBlto\-wrapper\fR appends LTO stage
  names to the received \fIdumppfx\fR, ensures it contains a directory
  component so that it overrides any \fB\-dumpdir\fR, and passes that as
! \&\fB\-dumpbase\fR to sub\-compilers.
! .IP \fB\-v\fR 4
  .IX Item "-v"
  Print (on standard error output) the commands executed to run the stages
  of compilation.  Also print the version number of the compiler driver
  program and of the preprocessor and the compiler proper.
! .IP \fB\-###\fR 4
  .IX Item "-###"
  Like \fB\-v\fR except the commands are not executed and arguments
  are quoted unless they contain only alphanumeric characters or \f(CW\*(C`./\-_\*(C'\fR.
! This is useful for shell scripts to capture the driver\-generated command lines.
! .IP \fB\-\-help\fR 4
  .IX Item "--help"
! Print (on the standard output) a description of the command\-line options
  understood by \fBgcc\fR.  If the \fB\-v\fR option is also specified
  then \fB\-\-help\fR is also passed on to the various processes
! invoked by \fBgcc\fR, so that they can display the command\-line options
  they accept.  If the \fB\-Wextra\fR option has also been specified
! (prior to the \fB\-\-help\fR option), then command\-line options that
  have no documentation associated with them are also displayed.
! .IP \fB\-\-target\-help\fR 4
  .IX Item "--target-help"
! Print (on the standard output) a description of target\-specific command\-line
! options for each tool.  For some targets extra target\-specific
  information may also be printed.
! .IP \fB\-\-help={\fR\fIclass\fR|[\fB^\fR]\fIqualifier\fR\fB}\fR[\fB,...\fR] 4
  .IX Item "--help={class|[^]qualifier}[,...]"
! Print (on the standard output) a description of the command\-line
  options understood by the compiler that fit into all specified classes
  and qualifiers.  These are the supported classes:
  .RS 4
! .IP \fBoptimizers\fR 4
  .IX Item "optimizers"
  Display all of the optimization options supported by the
  compiler.
! .IP \fBwarnings\fR 4
  .IX Item "warnings"
  Display all of the options controlling warning messages
  produced by the compiler.
! .IP \fBtarget\fR 4
  .IX Item "target"
! Display target\-specific options.  Unlike the
! \&\fB\-\-target\-help\fR option however, target\-specific options of the
  linker and assembler are not displayed.  This is because those
  tools do not currently support the extended \fB\-\-help=\fR syntax.
! .IP \fBparams\fR 4
  .IX Item "params"
  Display the values recognized by the \fB\-\-param\fR
  option.
! .IP \fIlanguage\fR 4
  .IX Item "language"
  Display the options supported for \fIlanguage\fR, where
  \&\fIlanguage\fR is the name of one of the languages supported in this
! version of GCC.  If an option is supported by all languages, one needs
  to select \fBcommon\fR class.
! .IP \fBcommon\fR 4
  .IX Item "common"
  Display the options that are common to all languages.
  .RE
  .RS 4
  .Sp
  These are the supported qualifiers:
! .IP \fBundocumented\fR 4
  .IX Item "undocumented"
  Display only those options that are undocumented.
! .IP \fBjoined\fR 4
  .IX Item "joined"
  Display options taking an argument that appears after an equal
  sign in the same continuous piece of text, such as:
  \&\fB\-\-help=target\fR.
! .IP \fBseparate\fR 4
  .IX Item "separate"
  Display options taking an argument that appears as a separate word
! following the original option, such as: \fB\-o output\-file\fR.
  .RE
  .RS 4
  .Sp
! Thus for example to display all the undocumented target\-specific
  switches supported by the compiler, use:
  .Sp
  .Vb 1
*************** qualifiers.
*** 2213,2219 ****
  Combining several classes is possible, although this usually
  restricts the output so much that there is nothing to display.  One
  case where it does work, however, is when one of the classes is
! \&\fItarget\fR.  For example, to display all the target-specific
  optimization options, use:
  .Sp
  .Vb 1
--- 2146,2152 ----
  Combining several classes is possible, although this usually
  restricts the output so much that there is nothing to display.  One
  case where it does work, however, is when one of the classes is
! \&\fItarget\fR.  For example, to display all the target\-specific
  optimization options, use:
  .Sp
  .Vb 1
*************** options, an indication is given as to wh
*** 2233,2239 ****
  disabled or set to a specific value (assuming that the compiler
  knows this at the point where the \fB\-\-help=\fR option is used).
  .Sp
! Here is a truncated example from the \s-1ARM\s0 port of \fBgcc\fR:
  .Sp
  .Vb 5
  \&          % gcc \-Q \-mabi=2 \-\-help=target \-c
--- 2166,2172 ----
  disabled or set to a specific value (assuming that the compiler
  knows this at the point where the \fB\-\-help=\fR option is used).
  .Sp
! Here is a truncated example from the ARM port of \fBgcc\fR:
  .Sp
  .Vb 5
  \&          % gcc \-Q \-mabi=2 \-\-help=target \-c
*************** Here is a truncated example from the \s-
*** 2243,2249 ****
  \&          \-mapcs                                [disabled]
  .Ve
  .Sp
! The output is sensitive to the effects of previous command-line
  options, so for example it is possible to find out which optimizations
  are enabled at \fB\-O2\fR by using:
  .Sp
--- 2176,2182 ----
  \&          \-mapcs                                [disabled]
  .Ve
  .Sp
! The output is sensitive to the effects of previous command\-line
  options, so for example it is possible to find out which optimizations
  are enabled at \fB\-O2\fR by using:
  .Sp
*************** by \fB\-O3\fR by using:
*** 2260,2283 ****
  \&        diff /tmp/O2\-opts /tmp/O3\-opts | grep enabled
  .Ve
  .RE
! .IP "\fB\-\-version\fR" 4
  .IX Item "--version"
! Display the version number and copyrights of the invoked \s-1GCC.\s0
! .IP "\fB\-pass\-exit\-codes\fR" 4
  .IX Item "-pass-exit-codes"
  Normally the \fBgcc\fR program exits with the code of 1 if any
! phase of the compiler returns a non-success return code.  If you specify
  \&\fB\-pass\-exit\-codes\fR, the \fBgcc\fR program instead returns with
  the numerically highest error produced by any phase returning an error
! indication.  The C, \*(C+, and Fortran front ends return 4 if an internal
  compiler error is encountered.
! .IP "\fB\-pipe\fR" 4
  .IX Item "-pipe"
  Use pipes rather than temporary files for communication between the
  various stages of compilation.  This fails to work on some systems where
! the assembler is unable to read from a pipe; but the \s-1GNU\s0 assembler has
  no trouble.
! .IP "\fB\-specs=\fR\fIfile\fR" 4
  .IX Item "-specs=file"
  Process \fIfile\fR after the compiler reads in the standard \fIspecs\fR
  file, in order to override the defaults which the \fBgcc\fR driver
--- 2193,2216 ----
  \&        diff /tmp/O2\-opts /tmp/O3\-opts | grep enabled
  .Ve
  .RE
! .IP \fB\-\-version\fR 4
  .IX Item "--version"
! Display the version number and copyrights of the invoked GCC.
! .IP \fB\-pass\-exit\-codes\fR 4
  .IX Item "-pass-exit-codes"
  Normally the \fBgcc\fR program exits with the code of 1 if any
! phase of the compiler returns a non\-success return code.  If you specify
  \&\fB\-pass\-exit\-codes\fR, the \fBgcc\fR program instead returns with
  the numerically highest error produced by any phase returning an error
! indication.  The C, C++, and Fortran front ends return 4 if an internal
  compiler error is encountered.
! .IP \fB\-pipe\fR 4
  .IX Item "-pipe"
  Use pipes rather than temporary files for communication between the
  various stages of compilation.  This fails to work on some systems where
! the assembler is unable to read from a pipe; but the GNU assembler has
  no trouble.
! .IP \fB\-specs=\fR\fIfile\fR 4
  .IX Item "-specs=file"
  Process \fIfile\fR after the compiler reads in the standard \fIspecs\fR
  file, in order to override the defaults which the \fBgcc\fR driver
*************** program uses when determining what switc
*** 2285,2291 ****
  \&\fBcc1plus\fR, \fBas\fR, \fBld\fR, etc.  More than one
  \&\fB\-specs=\fR\fIfile\fR can be specified on the command line, and they
  are processed in order, from left to right.
! .IP "\fB\-wrapper\fR" 4
  .IX Item "-wrapper"
  Invoke all subcommands under a wrapper program.  The name of the
  wrapper program and its parameters are passed as a comma separated
--- 2218,2224 ----
  \&\fBcc1plus\fR, \fBas\fR, \fBld\fR, etc.  More than one
  \&\fB\-specs=\fR\fIfile\fR can be specified on the command line, and they
  are processed in order, from left to right.
! .IP \fB\-wrapper\fR 4
  .IX Item "-wrapper"
  Invoke all subcommands under a wrapper program.  The name of the
  wrapper program and its parameters are passed as a comma separated
*************** list.
*** 2298,2354 ****
  This invokes all subprograms of \fBgcc\fR under
  \&\fBgdb \-\-args\fR, thus the invocation of \fBcc1\fR is
  \&\fBgdb \-\-args cc1 ...\fR.
! .IP "\fB\-ffile\-prefix\-map=\fR\fIold\fR\fB=\fR\fInew\fR" 4
  .IX Item "-ffile-prefix-map=old=new"
! When compiling files residing in directory \fI\fIold\fI\fR, record
  any references to them in the result of the compilation as if the
! files resided in directory \fI\fInew\fI\fR instead.  Specifying this
  option is equivalent to specifying all the individual
  \&\fB\-f*\-prefix\-map\fR options.  This can be used to make reproducible
  builds that are location independent.  Directories referenced by
  directives are not affected by these options.  See also
  \&\fB\-fmacro\-prefix\-map\fR, \fB\-fdebug\-prefix\-map\fR,
  \&\fB\-fprofile\-prefix\-map\fR and \fB\-fcanon\-prefix\-map\fR.
! .IP "\fB\-fcanon\-prefix\-map\fR" 4
  .IX Item "-fcanon-prefix-map"
  For the \fB\-f*\-prefix\-map\fR options normally comparison
! of \fI\fIold\fI\fR prefix against the filename that would be normally
  referenced in the result of the compilation is done using textual
  comparison of the prefixes, or ignoring character case for case insensitive
! filesystems and considering slashes and backslashes as equal on \s-1DOS\s0 based
  filesystems.  The \fB\-fcanon\-prefix\-map\fR causes such comparisons
! to be done on canonicalized paths of \fI\fIold\fI\fR
  and the referenced filename.
! .IP "\fB\-fplugin=\fR\fIname\fR\fB.so\fR" 4
  .IX Item "-fplugin=name.so"
  Load the plugin code in file \fIname\fR.so, assumed to be a
! shared object to be dlopen'd by the compiler.  The base name of
  the shared object file is used to identify the plugin for the
  purposes of argument parsing (See
  \&\fB\-fplugin\-arg\-\fR\fIname\fR\fB\-\fR\fIkey\fR\fB=\fR\fIvalue\fR below).
  Each plugin should define the callback functions specified in the
! Plugins \s-1API.\s0
! .IP "\fB\-fplugin\-arg\-\fR\fIname\fR\fB\-\fR\fIkey\fR\fB=\fR\fIvalue\fR" 4
  .IX Item "-fplugin-arg-name-key=value"
  Define an argument called \fIkey\fR with a value of \fIvalue\fR
  for the plugin called \fIname\fR.
! .IP "\fB\-fdump\-ada\-spec\fR[\fB\-slim\fR]" 4
  .IX Item "-fdump-ada-spec[-slim]"
! For C and \*(C+ source and include files, generate corresponding Ada specs.
! .IP "\fB\-fada\-spec\-parent=\fR\fIunit\fR" 4
  .IX Item "-fada-spec-parent=unit"
  In conjunction with \fB\-fdump\-ada\-spec\fR[\fB\-slim\fR] above, generate
  Ada specs as child units of parent \fIunit\fR.
! .IP "\fB\-fdump\-go\-spec=\fR\fIfile\fR" 4
  .IX Item "-fdump-go-spec=file"
  For input files in any language, generate corresponding Go
  declarations in \fIfile\fR.  This generates Go \f(CW\*(C`const\*(C'\fR,
  \&\f(CW\*(C`type\*(C'\fR, \f(CW\*(C`var\*(C'\fR, and \f(CW\*(C`func\*(C'\fR declarations which may be a
  useful way to start writing a Go interface to code written in some
  other language.
! .IP "\fB@\fR\fIfile\fR" 4
  .IX Item "@file"
! Read command-line options from \fIfile\fR.  The options read are
  inserted in place of the original @\fIfile\fR option.  If \fIfile\fR
  does not exist, or cannot be read, then the option will be treated
  literally, and not removed.
--- 2231,2287 ----
  This invokes all subprograms of \fBgcc\fR under
  \&\fBgdb \-\-args\fR, thus the invocation of \fBcc1\fR is
  \&\fBgdb \-\-args cc1 ...\fR.
! .IP \fB\-ffile\-prefix\-map=\fR\fIold\fR\fB=\fR\fInew\fR 4
  .IX Item "-ffile-prefix-map=old=new"
! When compiling files residing in directory \fIold\fR, record
  any references to them in the result of the compilation as if the
! files resided in directory \fInew\fR instead.  Specifying this
  option is equivalent to specifying all the individual
  \&\fB\-f*\-prefix\-map\fR options.  This can be used to make reproducible
  builds that are location independent.  Directories referenced by
  directives are not affected by these options.  See also
  \&\fB\-fmacro\-prefix\-map\fR, \fB\-fdebug\-prefix\-map\fR,
  \&\fB\-fprofile\-prefix\-map\fR and \fB\-fcanon\-prefix\-map\fR.
! .IP \fB\-fcanon\-prefix\-map\fR 4
  .IX Item "-fcanon-prefix-map"
  For the \fB\-f*\-prefix\-map\fR options normally comparison
! of \fIold\fR prefix against the filename that would be normally
  referenced in the result of the compilation is done using textual
  comparison of the prefixes, or ignoring character case for case insensitive
! filesystems and considering slashes and backslashes as equal on DOS based
  filesystems.  The \fB\-fcanon\-prefix\-map\fR causes such comparisons
! to be done on canonicalized paths of \fIold\fR
  and the referenced filename.
! .IP \fB\-fplugin=\fR\fIname\fR\fB.so\fR 4
  .IX Item "-fplugin=name.so"
  Load the plugin code in file \fIname\fR.so, assumed to be a
! shared object to be dlopen\*(Aqd by the compiler.  The base name of
  the shared object file is used to identify the plugin for the
  purposes of argument parsing (See
  \&\fB\-fplugin\-arg\-\fR\fIname\fR\fB\-\fR\fIkey\fR\fB=\fR\fIvalue\fR below).
  Each plugin should define the callback functions specified in the
! Plugins API.
! .IP \fB\-fplugin\-arg\-\fR\fIname\fR\fB\-\fR\fIkey\fR\fB=\fR\fIvalue\fR 4
  .IX Item "-fplugin-arg-name-key=value"
  Define an argument called \fIkey\fR with a value of \fIvalue\fR
  for the plugin called \fIname\fR.
! .IP \fB\-fdump\-ada\-spec\fR[\fB\-slim\fR] 4
  .IX Item "-fdump-ada-spec[-slim]"
! For C and C++ source and include files, generate corresponding Ada specs.
! .IP \fB\-fada\-spec\-parent=\fR\fIunit\fR 4
  .IX Item "-fada-spec-parent=unit"
  In conjunction with \fB\-fdump\-ada\-spec\fR[\fB\-slim\fR] above, generate
  Ada specs as child units of parent \fIunit\fR.
! .IP \fB\-fdump\-go\-spec=\fR\fIfile\fR 4
  .IX Item "-fdump-go-spec=file"
  For input files in any language, generate corresponding Go
  declarations in \fIfile\fR.  This generates Go \f(CW\*(C`const\*(C'\fR,
  \&\f(CW\*(C`type\*(C'\fR, \f(CW\*(C`var\*(C'\fR, and \f(CW\*(C`func\*(C'\fR declarations which may be a
  useful way to start writing a Go interface to code written in some
  other language.
! .IP \fB@\fR\fIfile\fR 4
  .IX Item "@file"
! Read command\-line options from \fIfile\fR.  The options read are
  inserted in place of the original @\fIfile\fR option.  If \fIfile\fR
  does not exist, or cannot be read, then the option will be treated
  literally, and not removed.
*************** option in either single or double quotes
*** 2359,2658 ****
  backslash) may be included by prefixing the character to be included
  with a backslash.  The \fIfile\fR may itself contain additional
  @\fIfile\fR options; any such options will be processed recursively.
! .SS "Compiling \*(C+ Programs"
! .IX Subsection "Compiling Programs"
! \&\*(C+ source files conventionally use one of the suffixes \fB.C\fR,
  \&\fB.cc\fR, \fB.cpp\fR, \fB.CPP\fR, \fB.c++\fR, \fB.cp\fR, or
! \&\fB.cxx\fR; \*(C+ header files often use \fB.hh\fR, \fB.hpp\fR,
  \&\fB.H\fR, or (for shared template code) \fB.tcc\fR;
! preprocessed \*(C+ files use the suffix \fB.ii\fR; and \*(C+20 module interface
  units sometimes use \fB.ixx\fR, \fB.cppm\fR, \fB.cxxm\fR, \fB.c++m\fR,
  or \fB.ccm\fR.
  .PP
! \&\s-1GCC\s0 recognizes files with these names and compiles them as \*(C+ programs even if you
  call the compiler the same way as for compiling C programs (usually
  with the name \fBgcc\fR).
  .PP
! However, the use of \fBgcc\fR does not add the \*(C+ library.
! \&\fBg++\fR is a program that calls \s-1GCC\s0 and automatically specifies linking
! against the \*(C+ library.  It treats \fB.c\fR,
! \&\fB.h\fR and \fB.i\fR files as \*(C+ source files instead of C source
  files unless \fB\-x\fR is used.  This program is also useful when
! precompiling a C header file with a \fB.h\fR extension for use in \*(C+
  compilations.  On many systems, \fBg++\fR is also installed with
  the name \fBc++\fR.
  .PP
! When you compile \*(C+ programs, you may specify many of the same
! command-line options that you use for compiling programs in any
! language; or command-line options meaningful for C and related
! languages; or options that are meaningful only for \*(C+ programs.
  .SS "Options Controlling C Dialect"
  .IX Subsection "Options Controlling C Dialect"
  The following options control the dialect of C (or languages derived
! from C, such as \*(C+, Objective-C and Objective\-\*(C+) that the compiler
  accepts:
! .IP "\fB\-ansi\fR" 4
  .IX Item "-ansi"
! In C mode, this is equivalent to \fB\-std=c90\fR. In \*(C+ mode, it is
  equivalent to \fB\-std=c++98\fR.
! .IP "\fB\-std=\fR" 4
  .IX Item "-std="
  Determine the language standard.   This option
! is currently only supported when compiling C or \*(C+.
  .Sp
  The compiler can accept several base standards, such as \fBc90\fR or
! \&\fBc++98\fR, and \s-1GNU\s0 dialects of those standards, such as
  \&\fBgnu90\fR or \fBgnu++98\fR.  When a base standard is specified, the
  compiler accepts all programs following that standard plus those
! using \s-1GNU\s0 extensions that do not contradict it.  For example,
! \&\fB\-std=c90\fR turns off certain features of \s-1GCC\s0 that are
! incompatible with \s-1ISO C90,\s0 such as the \f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`typeof\*(C'\fR
! keywords, but not other \s-1GNU\s0 extensions that do not have a meaning in
! \&\s-1ISO C90,\s0 such as omitting the middle term of a \f(CW\*(C`?:\*(C'\fR
! expression. On the other hand, when a \s-1GNU\s0 dialect of a standard is
  specified, all features supported by the compiler are enabled, even when
  those features change the meaning of the base standard.  As a result, some
! strict-conforming programs may be rejected.  The particular standard
! is used by \fB\-Wpedantic\fR to identify which features are \s-1GNU\s0
  extensions given that version of the standard. For example
! \&\fB\-std=gnu90 \-Wpedantic\fR warns about \*(C+ style \fB//\fR
  comments, while \fB\-std=gnu99 \-Wpedantic\fR does not.
  .Sp
  A value for this option must be provided; possible values are
  .RS 4
! .IP "\fBc90\fR" 4
  .IX Item "c90"
  .PD 0
! .IP "\fBc89\fR" 4
  .IX Item "c89"
! .IP "\fBiso9899:1990\fR" 4
  .IX Item "iso9899:1990"
  .PD
! Support all \s-1ISO C90\s0 programs (certain \s-1GNU\s0 extensions that conflict
! with \s-1ISO C90\s0 are disabled). Same as \fB\-ansi\fR for C code.
! .IP "\fBiso9899:199409\fR" 4
  .IX Item "iso9899:199409"
! \&\s-1ISO C90\s0 as modified in amendment 1.
! .IP "\fBc99\fR" 4
  .IX Item "c99"
  .PD 0
! .IP "\fBc9x\fR" 4
  .IX Item "c9x"
! .IP "\fBiso9899:1999\fR" 4
  .IX Item "iso9899:1999"
! .IP "\fBiso9899:199x\fR" 4
  .IX Item "iso9899:199x"
  .PD
! \&\s-1ISO C99.\s0  This standard is substantially completely supported, modulo
! bugs and floating-point issues
  (mainly but not entirely relating to optional C99 features from
  Annexes F and G).  See
  <\fBhttps://gcc.gnu.org/c99status.html\fR> for more information.  The
  names \fBc9x\fR and \fBiso9899:199x\fR are deprecated.
! .IP "\fBc11\fR" 4
  .IX Item "c11"
  .PD 0
! .IP "\fBc1x\fR" 4
  .IX Item "c1x"
! .IP "\fBiso9899:2011\fR" 4
  .IX Item "iso9899:2011"
  .PD
! \&\s-1ISO C11,\s0 the 2011 revision of the \s-1ISO C\s0 standard.  This standard is
! substantially completely supported, modulo bugs, floating-point issues
  (mainly but not entirely relating to optional C11 features from
! Annexes F and G) and the optional Annexes K (Bounds-checking
  interfaces) and L (Analyzability).  The name \fBc1x\fR is deprecated.
! .IP "\fBc17\fR" 4
  .IX Item "c17"
  .PD 0
! .IP "\fBc18\fR" 4
  .IX Item "c18"
! .IP "\fBiso9899:2017\fR" 4
  .IX Item "iso9899:2017"
! .IP "\fBiso9899:2018\fR" 4
  .IX Item "iso9899:2018"
  .PD
! \&\s-1ISO C17,\s0 the 2017 revision of the \s-1ISO C\s0 standard
  (published in 2018).  This standard is
  same as C11 except for corrections of defects (all of which are also
  applied with \fB\-std=c11\fR) and a new value of
  \&\f(CW\*(C`_\|_STDC_VERSION_\|_\*(C'\fR, and so is supported to the same extent as C11.
! .IP "\fBc23\fR" 4
  .IX Item "c23"
  .PD 0
! .IP "\fBc2x\fR" 4
  .IX Item "c2x"
! .IP "\fBiso9899:2024\fR" 4
  .IX Item "iso9899:2024"
  .PD
! \&\s-1ISO C23,\s0 the 2023 revision of the \s-1ISO C\s0 standard (published in 2024).  The
  name \fBc2x\fR is deprecated.
! .IP "\fBc2y\fR" 4
  .IX Item "c2y"
! The next version of the \s-1ISO C\s0 standard, still under development.  The
  support for this version is experimental and incomplete.
! .IP "\fBgnu90\fR" 4
  .IX Item "gnu90"
  .PD 0
! .IP "\fBgnu89\fR" 4
  .IX Item "gnu89"
  .PD
! \&\s-1GNU\s0 dialect of \s-1ISO C90\s0 (including some C99 features).
! .IP "\fBgnu99\fR" 4
  .IX Item "gnu99"
  .PD 0
! .IP "\fBgnu9x\fR" 4
  .IX Item "gnu9x"
  .PD
! \&\s-1GNU\s0 dialect of \s-1ISO C99.\s0  The name \fBgnu9x\fR is deprecated.
! .IP "\fBgnu11\fR" 4
  .IX Item "gnu11"
  .PD 0
! .IP "\fBgnu1x\fR" 4
  .IX Item "gnu1x"
  .PD
! \&\s-1GNU\s0 dialect of \s-1ISO C11.\s0
  The name \fBgnu1x\fR is deprecated.
! .IP "\fBgnu17\fR" 4
  .IX Item "gnu17"
  .PD 0
! .IP "\fBgnu18\fR" 4
  .IX Item "gnu18"
  .PD
! \&\s-1GNU\s0 dialect of \s-1ISO C17.\s0
! .IP "\fBgnu23\fR" 4
  .IX Item "gnu23"
  .PD 0
! .IP "\fBgnu2x\fR" 4
  .IX Item "gnu2x"
  .PD
! \&\s-1GNU\s0 dialect of \s-1ISO C23.\s0  This is the default for C code.  The name
  \&\fBgnu2x\fR is deprecated.
! .IP "\fBgnu2y\fR" 4
  .IX Item "gnu2y"
! The next version of the \s-1ISO C\s0 standard, still under development, plus
! \&\s-1GNU\s0 extensions.  The support for this version is experimental and
  incomplete.  The name \fBgnu2x\fR is deprecated.
! .IP "\fBc++98\fR" 4
  .IX Item "c++98"
  .PD 0
! .IP "\fBc++03\fR" 4
  .IX Item "c++03"
  .PD
! The 1998 \s-1ISO \*(C+\s0 standard plus the 2003 technical corrigendum and some
! additional defect reports. Same as \fB\-ansi\fR for \*(C+ code.
! .IP "\fBgnu++98\fR" 4
  .IX Item "gnu++98"
  .PD 0
! .IP "\fBgnu++03\fR" 4
  .IX Item "gnu++03"
  .PD
! \&\s-1GNU\s0 dialect of \fB\-std=c++98\fR.
! .IP "\fBc++11\fR" 4
  .IX Item "c++11"
  .PD 0
! .IP "\fBc++0x\fR" 4
  .IX Item "c++0x"
  .PD
! The 2011 \s-1ISO \*(C+\s0 standard plus amendments.
  The name \fBc++0x\fR is deprecated.
! .IP "\fBgnu++11\fR" 4
  .IX Item "gnu++11"
  .PD 0
! .IP "\fBgnu++0x\fR" 4
  .IX Item "gnu++0x"
  .PD
! \&\s-1GNU\s0 dialect of \fB\-std=c++11\fR.
  The name \fBgnu++0x\fR is deprecated.
! .IP "\fBc++14\fR" 4
  .IX Item "c++14"
  .PD 0
! .IP "\fBc++1y\fR" 4
  .IX Item "c++1y"
  .PD
! The 2014 \s-1ISO \*(C+\s0 standard plus amendments.
  The name \fBc++1y\fR is deprecated.
! .IP "\fBgnu++14\fR" 4
  .IX Item "gnu++14"
  .PD 0
! .IP "\fBgnu++1y\fR" 4
  .IX Item "gnu++1y"
  .PD
! \&\s-1GNU\s0 dialect of \fB\-std=c++14\fR.
  The name \fBgnu++1y\fR is deprecated.
! .IP "\fBc++17\fR" 4
  .IX Item "c++17"
  .PD 0
! .IP "\fBc++1z\fR" 4
  .IX Item "c++1z"
  .PD
! The 2017 \s-1ISO \*(C+\s0 standard plus amendments.
  The name \fBc++1z\fR is deprecated.
! .IP "\fBgnu++17\fR" 4
  .IX Item "gnu++17"
  .PD 0
! .IP "\fBgnu++1z\fR" 4
  .IX Item "gnu++1z"
  .PD
! \&\s-1GNU\s0 dialect of \fB\-std=c++17\fR.
! This is the default for \*(C+ code.
  The name \fBgnu++1z\fR is deprecated.
! .IP "\fBc++20\fR" 4
  .IX Item "c++20"
  .PD 0
! .IP "\fBc++2a\fR" 4
  .IX Item "c++2a"
  .PD
! The 2020 \s-1ISO \*(C+\s0 standard plus amendments.
  Support is experimental, and could change in incompatible ways in
  future releases.
  The name \fBc++2a\fR is deprecated.
! .IP "\fBgnu++20\fR" 4
  .IX Item "gnu++20"
  .PD 0
! .IP "\fBgnu++2a\fR" 4
  .IX Item "gnu++2a"
  .PD
! \&\s-1GNU\s0 dialect of \fB\-std=c++20\fR.
  Support is experimental, and could change in incompatible ways in
  future releases.
  The name \fBgnu++2a\fR is deprecated.
! .IP "\fBc++23\fR" 4
  .IX Item "c++23"
  .PD 0
! .IP "\fBc++2b\fR" 4
  .IX Item "c++2b"
  .PD
! The 2023 \s-1ISO \*(C+\s0 standard plus amendments (published in 2024).
  Support is experimental, and could change in incompatible ways in
  future releases.
  The name \fBc++2b\fR is deprecated.
! .IP "\fBgnu++23\fR" 4
  .IX Item "gnu++23"
  .PD 0
! .IP "\fBgnu++2b\fR" 4
  .IX Item "gnu++2b"
  .PD
! \&\s-1GNU\s0 dialect of \fB\-std=c++23\fR.
  Support is experimental, and could change in incompatible ways in
  future releases.
  The name \fBgnu++2b\fR is deprecated.
! .IP "\fBc++2c\fR" 4
  .IX Item "c++2c"
  .PD 0
! .IP "\fBc++26\fR" 4
  .IX Item "c++26"
  .PD
! The next revision of the \s-1ISO \*(C+\s0 standard, planned for
  2026.  Support is highly experimental, and will almost certainly
  change in incompatible ways in future releases.
! .IP "\fBgnu++2c\fR" 4
  .IX Item "gnu++2c"
  .PD 0
! .IP "\fBgnu++26\fR" 4
  .IX Item "gnu++26"
  .PD
! \&\s-1GNU\s0 dialect of \fB\-std=c++2c\fR.  Support is highly experimental,
  and will almost certainly change in incompatible ways in future
  releases.
  .RE
--- 2292,2591 ----
  backslash) may be included by prefixing the character to be included
  with a backslash.  The \fIfile\fR may itself contain additional
  @\fIfile\fR options; any such options will be processed recursively.
! .SS "Compiling C++ Programs"
! .IX Subsection "Compiling C++ Programs"
! C++ source files conventionally use one of the suffixes \fB.C\fR,
  \&\fB.cc\fR, \fB.cpp\fR, \fB.CPP\fR, \fB.c++\fR, \fB.cp\fR, or
! \&\fB.cxx\fR; C++ header files often use \fB.hh\fR, \fB.hpp\fR,
  \&\fB.H\fR, or (for shared template code) \fB.tcc\fR;
! preprocessed C++ files use the suffix \fB.ii\fR; and C++20 module interface
  units sometimes use \fB.ixx\fR, \fB.cppm\fR, \fB.cxxm\fR, \fB.c++m\fR,
  or \fB.ccm\fR.
  .PP
! GCC recognizes files with these names and compiles them as C++ programs even if you
  call the compiler the same way as for compiling C programs (usually
  with the name \fBgcc\fR).
  .PP
! However, the use of \fBgcc\fR does not add the C++ library.
! \&\fBg++\fR is a program that calls GCC and automatically specifies linking
! against the C++ library.  It treats \fB.c\fR,
! \&\fB.h\fR and \fB.i\fR files as C++ source files instead of C source
  files unless \fB\-x\fR is used.  This program is also useful when
! precompiling a C header file with a \fB.h\fR extension for use in C++
  compilations.  On many systems, \fBg++\fR is also installed with
  the name \fBc++\fR.
  .PP
! When you compile C++ programs, you may specify many of the same
! command\-line options that you use for compiling programs in any
! language; or command\-line options meaningful for C and related
! languages; or options that are meaningful only for C++ programs.
  .SS "Options Controlling C Dialect"
  .IX Subsection "Options Controlling C Dialect"
  The following options control the dialect of C (or languages derived
! from C, such as C++, Objective\-C and Objective\-C++) that the compiler
  accepts:
! .IP \fB\-ansi\fR 4
  .IX Item "-ansi"
! In C mode, this is equivalent to \fB\-std=c90\fR. In C++ mode, it is
  equivalent to \fB\-std=c++98\fR.
! .IP \fB\-std=\fR 4
  .IX Item "-std="
  Determine the language standard.   This option
! is currently only supported when compiling C or C++.
  .Sp
  The compiler can accept several base standards, such as \fBc90\fR or
! \&\fBc++98\fR, and GNU dialects of those standards, such as
  \&\fBgnu90\fR or \fBgnu++98\fR.  When a base standard is specified, the
  compiler accepts all programs following that standard plus those
! using GNU extensions that do not contradict it.  For example,
! \&\fB\-std=c90\fR turns off certain features of GCC that are
! incompatible with ISO C90, such as the \f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`typeof\*(C'\fR
! keywords, but not other GNU extensions that do not have a meaning in
! ISO C90, such as omitting the middle term of a \f(CW\*(C`?:\*(C'\fR
! expression. On the other hand, when a GNU dialect of a standard is
  specified, all features supported by the compiler are enabled, even when
  those features change the meaning of the base standard.  As a result, some
! strict\-conforming programs may be rejected.  The particular standard
! is used by \fB\-Wpedantic\fR to identify which features are GNU
  extensions given that version of the standard. For example
! \&\fB\-std=gnu90 \-Wpedantic\fR warns about C++ style \fB//\fR
  comments, while \fB\-std=gnu99 \-Wpedantic\fR does not.
  .Sp
  A value for this option must be provided; possible values are
  .RS 4
! .IP \fBc90\fR 4
  .IX Item "c90"
  .PD 0
! .IP \fBc89\fR 4
  .IX Item "c89"
! .IP \fBiso9899:1990\fR 4
  .IX Item "iso9899:1990"
  .PD
! Support all ISO C90 programs (certain GNU extensions that conflict
! with ISO C90 are disabled). Same as \fB\-ansi\fR for C code.
! .IP \fBiso9899:199409\fR 4
  .IX Item "iso9899:199409"
! ISO C90 as modified in amendment 1.
! .IP \fBc99\fR 4
  .IX Item "c99"
  .PD 0
! .IP \fBc9x\fR 4
  .IX Item "c9x"
! .IP \fBiso9899:1999\fR 4
  .IX Item "iso9899:1999"
! .IP \fBiso9899:199x\fR 4
  .IX Item "iso9899:199x"
  .PD
! ISO C99.  This standard is substantially completely supported, modulo
! bugs and floating\-point issues
  (mainly but not entirely relating to optional C99 features from
  Annexes F and G).  See
  <\fBhttps://gcc.gnu.org/c99status.html\fR> for more information.  The
  names \fBc9x\fR and \fBiso9899:199x\fR are deprecated.
! .IP \fBc11\fR 4
  .IX Item "c11"
  .PD 0
! .IP \fBc1x\fR 4
  .IX Item "c1x"
! .IP \fBiso9899:2011\fR 4
  .IX Item "iso9899:2011"
  .PD
! ISO C11, the 2011 revision of the ISO C standard.  This standard is
! substantially completely supported, modulo bugs, floating\-point issues
  (mainly but not entirely relating to optional C11 features from
! Annexes F and G) and the optional Annexes K (Bounds\-checking
  interfaces) and L (Analyzability).  The name \fBc1x\fR is deprecated.
! .IP \fBc17\fR 4
  .IX Item "c17"
  .PD 0
! .IP \fBc18\fR 4
  .IX Item "c18"
! .IP \fBiso9899:2017\fR 4
  .IX Item "iso9899:2017"
! .IP \fBiso9899:2018\fR 4
  .IX Item "iso9899:2018"
  .PD
! ISO C17, the 2017 revision of the ISO C standard
  (published in 2018).  This standard is
  same as C11 except for corrections of defects (all of which are also
  applied with \fB\-std=c11\fR) and a new value of
  \&\f(CW\*(C`_\|_STDC_VERSION_\|_\*(C'\fR, and so is supported to the same extent as C11.
! .IP \fBc23\fR 4
  .IX Item "c23"
  .PD 0
! .IP \fBc2x\fR 4
  .IX Item "c2x"
! .IP \fBiso9899:2024\fR 4
  .IX Item "iso9899:2024"
  .PD
! ISO C23, the 2023 revision of the ISO C standard (published in 2024).  The
  name \fBc2x\fR is deprecated.
! .IP \fBc2y\fR 4
  .IX Item "c2y"
! The next version of the ISO C standard, still under development.  The
  support for this version is experimental and incomplete.
! .IP \fBgnu90\fR 4
  .IX Item "gnu90"
  .PD 0
! .IP \fBgnu89\fR 4
  .IX Item "gnu89"
  .PD
! GNU dialect of ISO C90 (including some C99 features).
! .IP \fBgnu99\fR 4
  .IX Item "gnu99"
  .PD 0
! .IP \fBgnu9x\fR 4
  .IX Item "gnu9x"
  .PD
! GNU dialect of ISO C99.  The name \fBgnu9x\fR is deprecated.
! .IP \fBgnu11\fR 4
  .IX Item "gnu11"
  .PD 0
! .IP \fBgnu1x\fR 4
  .IX Item "gnu1x"
  .PD
! GNU dialect of ISO C11.
  The name \fBgnu1x\fR is deprecated.
! .IP \fBgnu17\fR 4
  .IX Item "gnu17"
  .PD 0
! .IP \fBgnu18\fR 4
  .IX Item "gnu18"
  .PD
! GNU dialect of ISO C17.
! .IP \fBgnu23\fR 4
  .IX Item "gnu23"
  .PD 0
! .IP \fBgnu2x\fR 4
  .IX Item "gnu2x"
  .PD
! GNU dialect of ISO C23.  This is the default for C code.  The name
  \&\fBgnu2x\fR is deprecated.
! .IP \fBgnu2y\fR 4
  .IX Item "gnu2y"
! The next version of the ISO C standard, still under development, plus
! GNU extensions.  The support for this version is experimental and
  incomplete.  The name \fBgnu2x\fR is deprecated.
! .IP \fBc++98\fR 4
  .IX Item "c++98"
  .PD 0
! .IP \fBc++03\fR 4
  .IX Item "c++03"
  .PD
! The 1998 ISO C++ standard plus the 2003 technical corrigendum and some
! additional defect reports. Same as \fB\-ansi\fR for C++ code.
! .IP \fBgnu++98\fR 4
  .IX Item "gnu++98"
  .PD 0
! .IP \fBgnu++03\fR 4
  .IX Item "gnu++03"
  .PD
! GNU dialect of \fB\-std=c++98\fR.
! .IP \fBc++11\fR 4
  .IX Item "c++11"
  .PD 0
! .IP \fBc++0x\fR 4
  .IX Item "c++0x"
  .PD
! The 2011 ISO C++ standard plus amendments.
  The name \fBc++0x\fR is deprecated.
! .IP \fBgnu++11\fR 4
  .IX Item "gnu++11"
  .PD 0
! .IP \fBgnu++0x\fR 4
  .IX Item "gnu++0x"
  .PD
! GNU dialect of \fB\-std=c++11\fR.
  The name \fBgnu++0x\fR is deprecated.
! .IP \fBc++14\fR 4
  .IX Item "c++14"
  .PD 0
! .IP \fBc++1y\fR 4
  .IX Item "c++1y"
  .PD
! The 2014 ISO C++ standard plus amendments.
  The name \fBc++1y\fR is deprecated.
! .IP \fBgnu++14\fR 4
  .IX Item "gnu++14"
  .PD 0
! .IP \fBgnu++1y\fR 4
  .IX Item "gnu++1y"
  .PD
! GNU dialect of \fB\-std=c++14\fR.
  The name \fBgnu++1y\fR is deprecated.
! .IP \fBc++17\fR 4
  .IX Item "c++17"
  .PD 0
! .IP \fBc++1z\fR 4
  .IX Item "c++1z"
  .PD
! The 2017 ISO C++ standard plus amendments.
  The name \fBc++1z\fR is deprecated.
! .IP \fBgnu++17\fR 4
  .IX Item "gnu++17"
  .PD 0
! .IP \fBgnu++1z\fR 4
  .IX Item "gnu++1z"
  .PD
! GNU dialect of \fB\-std=c++17\fR.
! This is the default for C++ code.
  The name \fBgnu++1z\fR is deprecated.
! .IP \fBc++20\fR 4
  .IX Item "c++20"
  .PD 0
! .IP \fBc++2a\fR 4
  .IX Item "c++2a"
  .PD
! The 2020 ISO C++ standard plus amendments.
  Support is experimental, and could change in incompatible ways in
  future releases.
  The name \fBc++2a\fR is deprecated.
! .IP \fBgnu++20\fR 4
  .IX Item "gnu++20"
  .PD 0
! .IP \fBgnu++2a\fR 4
  .IX Item "gnu++2a"
  .PD
! GNU dialect of \fB\-std=c++20\fR.
  Support is experimental, and could change in incompatible ways in
  future releases.
  The name \fBgnu++2a\fR is deprecated.
! .IP \fBc++23\fR 4
  .IX Item "c++23"
  .PD 0
! .IP \fBc++2b\fR 4
  .IX Item "c++2b"
  .PD
! The 2023 ISO C++ standard plus amendments (published in 2024).
  Support is experimental, and could change in incompatible ways in
  future releases.
  The name \fBc++2b\fR is deprecated.
! .IP \fBgnu++23\fR 4
  .IX Item "gnu++23"
  .PD 0
! .IP \fBgnu++2b\fR 4
  .IX Item "gnu++2b"
  .PD
! GNU dialect of \fB\-std=c++23\fR.
  Support is experimental, and could change in incompatible ways in
  future releases.
  The name \fBgnu++2b\fR is deprecated.
! .IP \fBc++2c\fR 4
  .IX Item "c++2c"
  .PD 0
! .IP \fBc++26\fR 4
  .IX Item "c++26"
  .PD
! The next revision of the ISO C++ standard, planned for
  2026.  Support is highly experimental, and will almost certainly
  change in incompatible ways in future releases.
! .IP \fBgnu++2c\fR 4
  .IX Item "gnu++2c"
  .PD 0
! .IP \fBgnu++26\fR 4
  .IX Item "gnu++26"
  .PD
! GNU dialect of \fB\-std=c++2c\fR.  Support is highly experimental,
  and will almost certainly change in incompatible ways in future
  releases.
  .RE
*************** definition (\fBC\fR or \fBF\fR, respecti
*** 2673,2711 ****
  character).  In the case of function definitions, a K&R\-style list of
  arguments followed by their declarations is also provided, inside
  comments, after the declaration.
! .IP "\fB\-fno\-asm\fR" 4
  .IX Item "-fno-asm"
  Do not recognize \f(CW\*(C`asm\*(C'\fR, \f(CW\*(C`inline\*(C'\fR or \f(CW\*(C`typeof\*(C'\fR as a
  keyword, so that code can use these words as identifiers.  You can use
  the keywords \f(CW\*(C`_\|_asm_\|_\*(C'\fR, \f(CW\*(C`_\|_inline_\|_\*(C'\fR and \f(CW\*(C`_\|_typeof_\|_\*(C'\fR
  instead.  In C, \fB\-ansi\fR implies \fB\-fno\-asm\fR.
  .Sp
! In \*(C+, \f(CW\*(C`inline\*(C'\fR is a standard keyword and is not affected by
  this switch.  You may want to use the \fB\-fno\-gnu\-keywords\fR flag
  instead, which disables \f(CW\*(C`typeof\*(C'\fR but not \f(CW\*(C`asm\*(C'\fR and
  \&\f(CW\*(C`inline\*(C'\fR.  In C99 mode (\fB\-std=c99\fR or \fB\-std=gnu99\fR),
  this switch only affects the \f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`typeof\*(C'\fR keywords,
! since \f(CW\*(C`inline\*(C'\fR is a standard keyword in \s-1ISO C99.\s0  In C23 mode
  (\fB\-std=c23\fR or \fB\-std=gnu23\fR), this switch only affects
  the \f(CW\*(C`asm\*(C'\fR keyword, since \f(CW\*(C`typeof\*(C'\fR is a standard keyword in
! \&\s-1ISO C23.\s0
! .IP "\fB\-fno\-builtin\fR" 4
  .IX Item "-fno-builtin"
  .PD 0
! .IP "\fB\-fno\-builtin\-\fR\fIfunction\fR" 4
  .IX Item "-fno-builtin-function"
  .PD
! Don't recognize built-in functions that do not begin with
  \&\fB_\|_builtin_\fR as prefix.
  .Sp
! \&\s-1GCC\s0 normally generates special code to handle certain built-in functions
  more efficiently; for instance, calls to \f(CW\*(C`alloca\*(C'\fR may become single
  instructions which adjust the stack directly, and calls to \f(CW\*(C`memcpy\*(C'\fR
  may become inline copy loops.  The resulting code is often both smaller
  and faster, but since the function calls no longer appear as such, you
  cannot set a breakpoint on those calls, nor can you change the behavior
  of the functions by linking with a different library.  In addition,
! when a function is recognized as a built-in function, \s-1GCC\s0 may use
  information about that function to warn about problems with calls to
  that function, or to generate more efficient code, even if the
  resulting code still contains calls to that function.  For example,
--- 2606,2644 ----
  character).  In the case of function definitions, a K&R\-style list of
  arguments followed by their declarations is also provided, inside
  comments, after the declaration.
! .IP \fB\-fno\-asm\fR 4
  .IX Item "-fno-asm"
  Do not recognize \f(CW\*(C`asm\*(C'\fR, \f(CW\*(C`inline\*(C'\fR or \f(CW\*(C`typeof\*(C'\fR as a
  keyword, so that code can use these words as identifiers.  You can use
  the keywords \f(CW\*(C`_\|_asm_\|_\*(C'\fR, \f(CW\*(C`_\|_inline_\|_\*(C'\fR and \f(CW\*(C`_\|_typeof_\|_\*(C'\fR
  instead.  In C, \fB\-ansi\fR implies \fB\-fno\-asm\fR.
  .Sp
! In C++, \f(CW\*(C`inline\*(C'\fR is a standard keyword and is not affected by
  this switch.  You may want to use the \fB\-fno\-gnu\-keywords\fR flag
  instead, which disables \f(CW\*(C`typeof\*(C'\fR but not \f(CW\*(C`asm\*(C'\fR and
  \&\f(CW\*(C`inline\*(C'\fR.  In C99 mode (\fB\-std=c99\fR or \fB\-std=gnu99\fR),
  this switch only affects the \f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`typeof\*(C'\fR keywords,
! since \f(CW\*(C`inline\*(C'\fR is a standard keyword in ISO C99.  In C23 mode
  (\fB\-std=c23\fR or \fB\-std=gnu23\fR), this switch only affects
  the \f(CW\*(C`asm\*(C'\fR keyword, since \f(CW\*(C`typeof\*(C'\fR is a standard keyword in
! ISO C23.
! .IP \fB\-fno\-builtin\fR 4
  .IX Item "-fno-builtin"
  .PD 0
! .IP \fB\-fno\-builtin\-\fR\fIfunction\fR 4
  .IX Item "-fno-builtin-function"
  .PD
! Don\*(Aqt recognize built\-in functions that do not begin with
  \&\fB_\|_builtin_\fR as prefix.
  .Sp
! GCC normally generates special code to handle certain built\-in functions
  more efficiently; for instance, calls to \f(CW\*(C`alloca\*(C'\fR may become single
  instructions which adjust the stack directly, and calls to \f(CW\*(C`memcpy\*(C'\fR
  may become inline copy loops.  The resulting code is often both smaller
  and faster, but since the function calls no longer appear as such, you
  cannot set a breakpoint on those calls, nor can you change the behavior
  of the functions by linking with a different library.  In addition,
! when a function is recognized as a built\-in function, GCC may use
  information about that function to warn about problems with calls to
  that function, or to generate more efficient code, even if the
  resulting code still contains calls to that function.  For example,
*************** warnings are given with \fB\-Wformat\fR
*** 2714,2770 ****
  known not to modify global memory.
  .Sp
  With the \fB\-fno\-builtin\-\fR\fIfunction\fR option
! only the built-in function \fIfunction\fR is
  disabled.  \fIfunction\fR must not begin with \fB_\|_builtin_\fR.  If a
! function is named that is not built-in in this version of \s-1GCC,\s0 this
  option is ignored.  There is no corresponding
  \&\fB\-fbuiltin\-\fR\fIfunction\fR option; if you wish to enable
! built-in functions selectively when using \fB\-fno\-builtin\fR or
  \&\fB\-ffreestanding\fR, you may define macros such as:
  .Sp
  .Vb 2
  \&        #define abs(n)          _\|_builtin_abs ((n))
  \&        #define strcpy(d, s)    _\|_builtin_strcpy ((d), (s))
  .Ve
! .IP "\fB\-fcond\-mismatch\fR" 4
  .IX Item "-fcond-mismatch"
  Allow conditional expressions with mismatched types in the second and
  third arguments.  The value of such an expression is void.  This option
! is not supported for \*(C+.
! .IP "\fB\-ffreestanding\fR" 4
  .IX Item "-ffreestanding"
  Assert that compilation targets a freestanding environment.  This
  implies \fB\-fno\-builtin\fR.  A freestanding environment
  is one in which the standard library may not exist, and program startup may
! not necessarily be at \f(CW\*(C`main\*(C'\fR.  The most obvious example is an \s-1OS\s0 kernel.
  This is equivalent to \fB\-fno\-hosted\fR.
! .IP "\fB\-fgimple\fR" 4
  .IX Item "-fgimple"
  Enable parsing of function definitions marked with \f(CW\*(C`_\|_GIMPLE\*(C'\fR.
! This is an experimental feature that allows unit testing of \s-1GIMPLE\s0
  passes.
! .IP "\fB\-fgnu\-tm\fR" 4
  .IX Item "-fgnu-tm"
  When the option \fB\-fgnu\-tm\fR is specified, the compiler
! generates code for the Linux variant of Intel's current Transactional
! Memory \s-1ABI\s0 specification document (Revision 1.1, May 6 2009).  This is
  an experimental feature whose interface may change in future versions
! of \s-1GCC,\s0 as the official specification changes.  Please note that not
  all architectures are supported for this feature.
  .Sp
! For more information on \s-1GCC\s0's support for transactional memory,
  .Sp
  Note that the transactional memory feature is not supported with
! non-call exceptions (\fB\-fnon\-call\-exceptions\fR).
! .IP "\fB\-fgnu89\-inline\fR" 4
  .IX Item "-fgnu89-inline"
! The option \fB\-fgnu89\-inline\fR tells \s-1GCC\s0 to use the traditional
! \&\s-1GNU\s0 semantics for \f(CW\*(C`inline\*(C'\fR functions when in C99 mode.
  .Sp
  Using this option is roughly equivalent to adding the
  \&\f(CW\*(C`gnu_inline\*(C'\fR function attribute to all inline functions.
  .Sp
! The option \fB\-fno\-gnu89\-inline\fR explicitly tells \s-1GCC\s0 to use the
  C99 semantics for \f(CW\*(C`inline\*(C'\fR when in C99 or gnu99 mode (i.e., it
  specifies the default behavior).
  This option is not supported in \fB\-std=c90\fR or
--- 2647,2703 ----
  known not to modify global memory.
  .Sp
  With the \fB\-fno\-builtin\-\fR\fIfunction\fR option
! only the built\-in function \fIfunction\fR is
  disabled.  \fIfunction\fR must not begin with \fB_\|_builtin_\fR.  If a
! function is named that is not built\-in in this version of GCC, this
  option is ignored.  There is no corresponding
  \&\fB\-fbuiltin\-\fR\fIfunction\fR option; if you wish to enable
! built\-in functions selectively when using \fB\-fno\-builtin\fR or
  \&\fB\-ffreestanding\fR, you may define macros such as:
  .Sp
  .Vb 2
  \&        #define abs(n)          _\|_builtin_abs ((n))
  \&        #define strcpy(d, s)    _\|_builtin_strcpy ((d), (s))
  .Ve
! .IP \fB\-fcond\-mismatch\fR 4
  .IX Item "-fcond-mismatch"
  Allow conditional expressions with mismatched types in the second and
  third arguments.  The value of such an expression is void.  This option
! is not supported for C++.
! .IP \fB\-ffreestanding\fR 4
  .IX Item "-ffreestanding"
  Assert that compilation targets a freestanding environment.  This
  implies \fB\-fno\-builtin\fR.  A freestanding environment
  is one in which the standard library may not exist, and program startup may
! not necessarily be at \f(CW\*(C`main\*(C'\fR.  The most obvious example is an OS kernel.
  This is equivalent to \fB\-fno\-hosted\fR.
! .IP \fB\-fgimple\fR 4
  .IX Item "-fgimple"
  Enable parsing of function definitions marked with \f(CW\*(C`_\|_GIMPLE\*(C'\fR.
! This is an experimental feature that allows unit testing of GIMPLE
  passes.
! .IP \fB\-fgnu\-tm\fR 4
  .IX Item "-fgnu-tm"
  When the option \fB\-fgnu\-tm\fR is specified, the compiler
! generates code for the Linux variant of Intel\*(Aqs current Transactional
! Memory ABI specification document (Revision 1.1, May 6 2009).  This is
  an experimental feature whose interface may change in future versions
! of GCC, as the official specification changes.  Please note that not
  all architectures are supported for this feature.
  .Sp
! For more information on GCC\*(Aqs support for transactional memory,
  .Sp
  Note that the transactional memory feature is not supported with
! non\-call exceptions (\fB\-fnon\-call\-exceptions\fR).
! .IP \fB\-fgnu89\-inline\fR 4
  .IX Item "-fgnu89-inline"
! The option \fB\-fgnu89\-inline\fR tells GCC to use the traditional
! GNU semantics for \f(CW\*(C`inline\*(C'\fR functions when in C99 mode.
  .Sp
  Using this option is roughly equivalent to adding the
  \&\f(CW\*(C`gnu_inline\*(C'\fR function attribute to all inline functions.
  .Sp
! The option \fB\-fno\-gnu89\-inline\fR explicitly tells GCC to use the
  C99 semantics for \f(CW\*(C`inline\*(C'\fR when in C99 or gnu99 mode (i.e., it
  specifies the default behavior).
  This option is not supported in \fB\-std=c90\fR or
*************** This option is not supported in \fB\-std
*** 2773,2795 ****
  The preprocessor macros \f(CW\*(C`_\|_GNUC_GNU_INLINE_\|_\*(C'\fR and
  \&\f(CW\*(C`_\|_GNUC_STDC_INLINE_\|_\*(C'\fR may be used to check which semantics are
  in effect for \f(CW\*(C`inline\*(C'\fR functions.
! .IP "\fB\-fhosted\fR" 4
  .IX Item "-fhosted"
  Assert that compilation targets a hosted environment.  This implies
  \&\fB\-fbuiltin\fR.  A hosted environment is one in which the
  entire standard library is available, and in which \f(CW\*(C`main\*(C'\fR has a return
  type of \f(CW\*(C`int\*(C'\fR.  Examples are nearly everything except a kernel.
  This is equivalent to \fB\-fno\-freestanding\fR.
! .IP "\fB\-flax\-vector\-conversions\fR" 4
  .IX Item "-flax-vector-conversions"
  Allow implicit conversions between vectors with differing numbers of
  elements and/or incompatible element types.  This option should not be
  used for new code.
! .IP "\fB\-fms\-extensions\fR" 4
  .IX Item "-fms-extensions"
! Accept some non-standard constructs used in Microsoft header files.
  .Sp
! In \*(C+ code, this allows member names in structures to be similar
  to previous types declarations.
  .Sp
  .Vb 4
--- 2706,2728 ----
  The preprocessor macros \f(CW\*(C`_\|_GNUC_GNU_INLINE_\|_\*(C'\fR and
  \&\f(CW\*(C`_\|_GNUC_STDC_INLINE_\|_\*(C'\fR may be used to check which semantics are
  in effect for \f(CW\*(C`inline\*(C'\fR functions.
! .IP \fB\-fhosted\fR 4
  .IX Item "-fhosted"
  Assert that compilation targets a hosted environment.  This implies
  \&\fB\-fbuiltin\fR.  A hosted environment is one in which the
  entire standard library is available, and in which \f(CW\*(C`main\*(C'\fR has a return
  type of \f(CW\*(C`int\*(C'\fR.  Examples are nearly everything except a kernel.
  This is equivalent to \fB\-fno\-freestanding\fR.
! .IP \fB\-flax\-vector\-conversions\fR 4
  .IX Item "-flax-vector-conversions"
  Allow implicit conversions between vectors with differing numbers of
  elements and/or incompatible element types.  This option should not be
  used for new code.
! .IP \fB\-fms\-extensions\fR 4
  .IX Item "-fms-extensions"
! Accept some non\-standard constructs used in Microsoft header files.
  .Sp
! In C++ code, this allows member names in structures to be similar
  to previous types declarations.
  .Sp
  .Vb 4
*************** Some cases of unnamed fields in structur
*** 2803,2812 ****
  accepted with this option.
  .Sp
  Note that this option is off for all targets except for x86
! targets using ms-abi.
! .IP "\fB\-fpermitted\-flt\-eval\-methods=\fR\fIstyle\fR" 4
  .IX Item "-fpermitted-flt-eval-methods=style"
! \&\s-1ISO/IEC TS 18661\-3\s0 defines new permissible values for
  \&\f(CW\*(C`FLT_EVAL_METHOD\*(C'\fR that indicate that operations and constants with
  a semantic type that is an interchange or extended format should be
  evaluated to the precision and range of that type.  These new values are
--- 2736,2745 ----
  accepted with this option.
  .Sp
  Note that this option is off for all targets except for x86
! targets using ms\-abi.
! .IP \fB\-fpermitted\-flt\-eval\-methods=\fR\fIstyle\fR 4
  .IX Item "-fpermitted-flt-eval-methods=style"
! ISO/IEC TS 18661\-3 defines new permissible values for
  \&\f(CW\*(C`FLT_EVAL_METHOD\*(C'\fR that indicate that operations and constants with
  a semantic type that is an interchange or extended format should be
  evaluated to the precision and range of that type.  These new values are
*************** the new values.
*** 2817,2828 ****
  .Sp
  \&\fB\-fpermitted\-flt\-eval\-methods\fR specifies whether the compiler
  should allow only the values of \f(CW\*(C`FLT_EVAL_METHOD\*(C'\fR specified in C99/C11,
! or the extended set of values specified in \s-1ISO/IEC TS 18661\-3.\s0
  .Sp
  \&\fIstyle\fR is either \f(CW\*(C`c11\*(C'\fR or \f(CW\*(C`ts\-18661\-3\*(C'\fR as appropriate.
  .Sp
  The default when in a standards compliant mode (\fB\-std=c11\fR or similar)
! is \fB\-fpermitted\-flt\-eval\-methods=c11\fR.  The default when in a \s-1GNU\s0
  dialect (\fB\-std=gnu11\fR or similar) is
  \&\fB\-fpermitted\-flt\-eval\-methods=ts\-18661\-3\fR.
  .Sp
--- 2750,2761 ----
  .Sp
  \&\fB\-fpermitted\-flt\-eval\-methods\fR specifies whether the compiler
  should allow only the values of \f(CW\*(C`FLT_EVAL_METHOD\*(C'\fR specified in C99/C11,
! or the extended set of values specified in ISO/IEC TS 18661\-3.
  .Sp
  \&\fIstyle\fR is either \f(CW\*(C`c11\*(C'\fR or \f(CW\*(C`ts\-18661\-3\*(C'\fR as appropriate.
  .Sp
  The default when in a standards compliant mode (\fB\-std=c11\fR or similar)
! is \fB\-fpermitted\-flt\-eval\-methods=c11\fR.  The default when in a GNU
  dialect (\fB\-std=gnu11\fR or similar) is
  \&\fB\-fpermitted\-flt\-eval\-methods=ts\-18661\-3\fR.
  .Sp
*************** resources are provided by the source.  T
*** 2833,2884 ****
  required dependencies between compilation rules of dependent sources based on
  their contents rather than requiring such information be reflected within the
  build tools as well.
! .IP "\fB\-fdeps\-file=\fR\fIfile\fR" 4
  .IX Item "-fdeps-file=file"
  Where to write structured dependency information.
! .IP "\fB\-fdeps\-format=\fR\fIformat\fR" 4
  .IX Item "-fdeps-format=format"
  The format to use for structured dependency information. \fBp1689r5\fR is the
  only supported format right now.  Note that when this argument is specified, the
! output of \fB\-MF\fR is stripped of some information (namely \*(C+ modules) so
  that it does not use extended makefile syntax not understood by most tools.
! .IP "\fB\-fdeps\-target=\fR\fIfile\fR" 4
  .IX Item "-fdeps-target=file"
  Analogous to \fB\-MT\fR but for structured dependency information.  This
  indicates the target which will ultimately need any required resources and
  provide any resources extracted from the source that may be required by other
  sources.
! .IP "\fB\-fplan9\-extensions\fR" 4
  .IX Item "-fplan9-extensions"
! Accept some non-standard constructs used in Plan 9 code.
  .Sp
  This enables \fB\-fms\-extensions\fR, permits passing pointers to
  structures with anonymous fields to functions that expect pointers to
  elements of the type of the field, and permits referring to anonymous
  fields declared using a typedef.    This is only
! supported for C, not \*(C+.
! .IP "\fB\-fsigned\-bitfields\fR" 4
  .IX Item "-fsigned-bitfields"
  .PD 0
! .IP "\fB\-funsigned\-bitfields\fR" 4
  .IX Item "-funsigned-bitfields"
! .IP "\fB\-fno\-signed\-bitfields\fR" 4
  .IX Item "-fno-signed-bitfields"
! .IP "\fB\-fno\-unsigned\-bitfields\fR" 4
  .IX Item "-fno-unsigned-bitfields"
  .PD
! These options control whether a bit-field is signed or unsigned, when the
  declaration does not use either \f(CW\*(C`signed\*(C'\fR or \f(CW\*(C`unsigned\*(C'\fR.  By
! default, such a bit-field is signed, because this is consistent: the
  basic integer types such as \f(CW\*(C`int\*(C'\fR are signed types.
! .IP "\fB\-fsigned\-char\fR" 4
  .IX Item "-fsigned-char"
  Let the type \f(CW\*(C`char\*(C'\fR be signed, like \f(CW\*(C`signed char\*(C'\fR.
  .Sp
  Note that this is equivalent to \fB\-fno\-unsigned\-char\fR, which is
  the negative form of \fB\-funsigned\-char\fR.  Likewise, the option
  \&\fB\-fno\-signed\-char\fR is equivalent to \fB\-funsigned\-char\fR.
! .IP "\fB\-funsigned\-char\fR" 4
  .IX Item "-funsigned-char"
  Let the type \f(CW\*(C`char\*(C'\fR be unsigned, like \f(CW\*(C`unsigned char\*(C'\fR.
  .Sp
--- 2766,2817 ----
  required dependencies between compilation rules of dependent sources based on
  their contents rather than requiring such information be reflected within the
  build tools as well.
! .IP \fB\-fdeps\-file=\fR\fIfile\fR 4
  .IX Item "-fdeps-file=file"
  Where to write structured dependency information.
! .IP \fB\-fdeps\-format=\fR\fIformat\fR 4
  .IX Item "-fdeps-format=format"
  The format to use for structured dependency information. \fBp1689r5\fR is the
  only supported format right now.  Note that when this argument is specified, the
! output of \fB\-MF\fR is stripped of some information (namely C++ modules) so
  that it does not use extended makefile syntax not understood by most tools.
! .IP \fB\-fdeps\-target=\fR\fIfile\fR 4
  .IX Item "-fdeps-target=file"
  Analogous to \fB\-MT\fR but for structured dependency information.  This
  indicates the target which will ultimately need any required resources and
  provide any resources extracted from the source that may be required by other
  sources.
! .IP \fB\-fplan9\-extensions\fR 4
  .IX Item "-fplan9-extensions"
! Accept some non\-standard constructs used in Plan 9 code.
  .Sp
  This enables \fB\-fms\-extensions\fR, permits passing pointers to
  structures with anonymous fields to functions that expect pointers to
  elements of the type of the field, and permits referring to anonymous
  fields declared using a typedef.    This is only
! supported for C, not C++.
! .IP \fB\-fsigned\-bitfields\fR 4
  .IX Item "-fsigned-bitfields"
  .PD 0
! .IP \fB\-funsigned\-bitfields\fR 4
  .IX Item "-funsigned-bitfields"
! .IP \fB\-fno\-signed\-bitfields\fR 4
  .IX Item "-fno-signed-bitfields"
! .IP \fB\-fno\-unsigned\-bitfields\fR 4
  .IX Item "-fno-unsigned-bitfields"
  .PD
! These options control whether a bit\-field is signed or unsigned, when the
  declaration does not use either \f(CW\*(C`signed\*(C'\fR or \f(CW\*(C`unsigned\*(C'\fR.  By
! default, such a bit\-field is signed, because this is consistent: the
  basic integer types such as \f(CW\*(C`int\*(C'\fR are signed types.
! .IP \fB\-fsigned\-char\fR 4
  .IX Item "-fsigned-char"
  Let the type \f(CW\*(C`char\*(C'\fR be signed, like \f(CW\*(C`signed char\*(C'\fR.
  .Sp
  Note that this is equivalent to \fB\-fno\-unsigned\-char\fR, which is
  the negative form of \fB\-funsigned\-char\fR.  Likewise, the option
  \&\fB\-fno\-signed\-char\fR is equivalent to \fB\-funsigned\-char\fR.
! .IP \fB\-funsigned\-char\fR 4
  .IX Item "-funsigned-char"
  Let the type \f(CW\*(C`char\*(C'\fR be unsigned, like \f(CW\*(C`unsigned char\*(C'\fR.
  .Sp
*************** make such a program work with the opposi
*** 2896,2906 ****
  The type \f(CW\*(C`char\*(C'\fR is always a distinct type from each of
  \&\f(CW\*(C`signed char\*(C'\fR or \f(CW\*(C`unsigned char\*(C'\fR, even though its behavior
  is always just like one of those two.
! .IP "\fB\-fstrict\-flex\-arrays\fR (C and \*(C+ only)" 4
! .IX Item "-fstrict-flex-arrays (C and only)"
  .PD 0
! .IP "\fB\-fstrict\-flex\-arrays=\fR\fIlevel\fR\fB \fR(C and \*(C+ only)" 4
! .IX Item "-fstrict-flex-arrays=level (C and only)"
  .PD
  Control when to treat the trailing array of a structure as a flexible array
  member for the purpose of accessing the elements of such an array.  The value
--- 2829,2839 ----
  The type \f(CW\*(C`char\*(C'\fR is always a distinct type from each of
  \&\f(CW\*(C`signed char\*(C'\fR or \f(CW\*(C`unsigned char\*(C'\fR, even though its behavior
  is always just like one of those two.
! .IP "\fB\-fstrict\-flex\-arrays\fR (C and C++ only)" 4
! .IX Item "-fstrict-flex-arrays (C and C++ only)"
  .PD 0
! .IP "\fB\-fstrict\-flex\-arrays=\fR\fIlevel\fR\fB \fR(C and C++ only)" 4
! .IX Item "-fstrict-flex-arrays=level (C and C++ only)"
  .PD
  Control when to treat the trailing array of a structure as a flexible array
  member for the purpose of accessing the elements of such an array.  The value
*************** The negative form \fB\-fno\-strict\-flex
*** 2916,2923 ****
  case all trailing arrays of structures are treated as flexible array members.
  .Sp
  There are two more levels in between 0 and 3, which are provided to
! support older code that uses the \s-1GCC\s0 zero-length array extension
! (\fB[0]\fR) or one-element array as flexible array members
  (\fB[1]\fR).  When \fIlevel\fR is 1, the trailing array is treated as
  a flexible array member when it is declared as either \fB[]\fR,
  \&\fB[0]\fR, or \fB[1]\fR.  When \fIlevel\fR is 2, the trailing array
--- 2849,2856 ----
  case all trailing arrays of structures are treated as flexible array members.
  .Sp
  There are two more levels in between 0 and 3, which are provided to
! support older code that uses the GCC zero\-length array extension
! (\fB[0]\fR) or one\-element array as flexible array members
  (\fB[1]\fR).  When \fIlevel\fR is 1, the trailing array is treated as
  a flexible array member when it is declared as either \fB[]\fR,
  \&\fB[0]\fR, or \fB[1]\fR.  When \fIlevel\fR is 2, the trailing array
*************** structure by using the variable attribut
*** 2929,2948 ****
  .Sp
  The \fB\-fstrict_flex_arrays\fR option interacts with the
  \&\fB\-Wstrict\-flex\-arrays\fR option.
! .IP "\fB\-fsso\-struct=\fR\fIendianness\fR" 4
  .IX Item "-fsso-struct=endianness"
  Set the default scalar storage order of structures and unions to the
! specified endianness.  The accepted values are \fBbig-endian\fR,
! \&\fBlittle-endian\fR and \fBnative\fR for the native endianness of
! the target (the default).  This option is not supported for \*(C+.
  .Sp
! \&\fBWarning:\fR the \fB\-fsso\-struct\fR switch causes \s-1GCC\s0 to generate
  code that is not binary compatible with code generated without it if the
  specified endianness is not the native endianness of the target.
! .SS "Options Controlling \*(C+ Dialect"
! .IX Subsection "Options Controlling Dialect"
! This section describes the command-line options that are only meaningful
! for \*(C+ programs.  You can also use most of the \s-1GNU\s0 compiler options
  regardless of what language your program is in.  For example, you
  might compile a file \fIfirstClass.C\fR like this:
  .PP
--- 2862,2881 ----
  .Sp
  The \fB\-fstrict_flex_arrays\fR option interacts with the
  \&\fB\-Wstrict\-flex\-arrays\fR option.
! .IP \fB\-fsso\-struct=\fR\fIendianness\fR 4
  .IX Item "-fsso-struct=endianness"
  Set the default scalar storage order of structures and unions to the
! specified endianness.  The accepted values are \fBbig\-endian\fR,
! \&\fBlittle\-endian\fR and \fBnative\fR for the native endianness of
! the target (the default).  This option is not supported for C++.
  .Sp
! \&\fBWarning:\fR the \fB\-fsso\-struct\fR switch causes GCC to generate
  code that is not binary compatible with code generated without it if the
  specified endianness is not the native endianness of the target.
! .SS "Options Controlling C++ Dialect"
! .IX Subsection "Options Controlling C++ Dialect"
! This section describes the command\-line options that are only meaningful
! for C++ programs.  You can also use most of the GNU compiler options
  regardless of what language your program is in.  For example, you
  might compile a file \fIfirstClass.C\fR like this:
  .PP
*************** might compile a file \fIfirstClass.C\fR
*** 2951,2974 ****
  .Ve
  .PP
  In this example, only \fB\-fstrict\-enums\fR is an option meant
! only for \*(C+ programs; you can use the other options with any
! language supported by \s-1GCC.\s0
  .PP
  Some options for compiling C programs, such as \fB\-std\fR, are also
! relevant for \*(C+ programs.
  .PP
! Here is a list of options that are \fIonly\fR for compiling \*(C+ programs:
! .IP "\fB\-fabi\-version=\fR\fIn\fR" 4
  .IX Item "-fabi-version=n"
! Use version \fIn\fR of the \*(C+ \s-1ABI.\s0  The default is version 0.
  .Sp
  Version 0 refers to the version conforming most closely to
! the \*(C+ \s-1ABI\s0 specification.  Therefore, the \s-1ABI\s0 obtained using version 0
! will change in different versions of G++ as \s-1ABI\s0 bugs are fixed.
  .Sp
! Version 1 is the version of the \*(C+ \s-1ABI\s0 that first appeared in G++ 3.2.
  .Sp
! Version 2 is the version of the \*(C+ \s-1ABI\s0 that first appeared in G++
  3.4, and was the default through G++ 4.9.
  .Sp
  Version 3 corrects an error in mangling a constant address as a
--- 2884,2907 ----
  .Ve
  .PP
  In this example, only \fB\-fstrict\-enums\fR is an option meant
! only for C++ programs; you can use the other options with any
! language supported by GCC.
  .PP
  Some options for compiling C programs, such as \fB\-std\fR, are also
! relevant for C++ programs.
  .PP
! Here is a list of options that are \fIonly\fR for compiling C++ programs:
! .IP \fB\-fabi\-version=\fR\fIn\fR 4
  .IX Item "-fabi-version=n"
! Use version \fIn\fR of the C++ ABI.  The default is version 0.
  .Sp
  Version 0 refers to the version conforming most closely to
! the C++ ABI specification.  Therefore, the ABI obtained using version 0
! will change in different versions of G++ as ABI bugs are fixed.
  .Sp
! Version 1 is the version of the C++ ABI that first appeared in G++ 3.2.
  .Sp
! Version 2 is the version of the C++ ABI that first appeared in G++
  3.4, and was the default through G++ 4.9.
  .Sp
  Version 3 corrects an error in mangling a constant address as a
*************** plain decl, and use of a function parame
*** 2983,2989 ****
  another parameter.
  .Sp
  Version 6, which first appeared in G++ 4.7, corrects the promotion
! behavior of \*(C+11 scoped enums and the mangling of template argument
  packs, const/static_cast, prefix ++ and \-\-, and a class scope function
  used as a template argument.
  .Sp
--- 2916,2922 ----
  another parameter.
  .Sp
  Version 6, which first appeared in G++ 4.7, corrects the promotion
! behavior of C++11 scoped enums and the mangling of template argument
  packs, const/static_cast, prefix ++ and \-\-, and a class scope function
  used as a template argument.
  .Sp
*************** builtin type and corrects the mangling o
*** 2992,2998 ****
  scope.
  .Sp
  Version 8, which first appeared in G++ 4.9, corrects the substitution
! behavior of function types with function-cv-qualifiers.
  .Sp
  Version 9, which first appeared in G++ 5.2, corrects the alignment of
  \&\f(CW\*(C`nullptr_t\*(C'\fR.
--- 2925,2931 ----
  scope.
  .Sp
  Version 8, which first appeared in G++ 4.9, corrects the substitution
! behavior of function types with function\-cv\-qualifiers.
  .Sp
  Version 9, which first appeared in G++ 5.2, corrects the alignment of
  \&\f(CW\*(C`nullptr_t\*(C'\fR.
*************** change in version 12.
*** 3019,3025 ****
  Version 14, which first appeared in G++ 10, corrects the mangling of
  the nullptr expression.
  .Sp
! Version 15, which first appeared in G++ 10.3, corrects G++ 10 \s-1ABI\s0
  tag regression.
  .Sp
  Version 16, which first appeared in G++ 11, changes the mangling of
--- 2952,2958 ----
  Version 14, which first appeared in G++ 10, corrects the mangling of
  the nullptr expression.
  .Sp
! Version 15, which first appeared in G++ 10.3, corrects G++ 10 ABI
  tag regression.
  .Sp
  Version 16, which first appeared in G++ 11, changes the mangling of
*************** dependent operator names.
*** 3028,3090 ****
  .Sp
  Version 17, which first appeared in G++ 12, fixes layout of classes
  that inherit from aggregate classes with default member initializers
! in \*(C+14 and up.
  .Sp
  Version 18, which first appeared in G++ 13, fixes manglings of lambdas
  that have additional context.
  .Sp
  Version 19, which first appeared in G++ 14, fixes manglings of structured
! bindings to include \s-1ABI\s0 tags.
  .Sp
  Version 20, which first appeared in G++ 15, fixes manglings of lambdas
  in static data member initializers.
  .Sp
  See also \fB\-Wabi\fR.
! .IP "\fB\-fabi\-compat\-version=\fR\fIn\fR" 4
  .IX Item "-fabi-compat-version=n"
  On targets that support strong aliases, G++
  works around mangling changes by creating an alias with the correct
  mangled name when defining a symbol with an incorrect mangled name.
! This switch specifies which \s-1ABI\s0 version to use for the alias.
  .Sp
! With \fB\-fabi\-version=0\fR (the default), this defaults to 13 (\s-1GCC 8.2\s0
! compatibility).  If another \s-1ABI\s0 version is explicitly selected, this
! defaults to 0.  For compatibility with \s-1GCC\s0 versions 3.2 through 4.9,
  use \fB\-fabi\-compat\-version=2\fR.
  .Sp
  If this option is not provided but \fB\-Wabi=\fR\fIn\fR is, that
  version is used for compatibility aliases.  If this option is provided
  along with \fB\-Wabi\fR (without the version), the version from this
  option is used for the warning.
! .IP "\fB\-fno\-access\-control\fR" 4
  .IX Item "-fno-access-control"
  Turn off all access checking.  This switch is mainly useful for working
  around bugs in the access control code.
! .IP "\fB\-faligned\-new\fR" 4
  .IX Item "-faligned-new"
! Enable support for \*(C+17 \f(CW\*(C`new\*(C'\fR of types that require more
  alignment than \f(CW\*(C`void* ::operator new(std::size_t)\*(C'\fR provides.  A
  numeric argument such as \f(CW\*(C`\-faligned\-new=32\*(C'\fR can be used to
  specify how much alignment (in bytes) is provided by that function,
  but few users will need to override the default of
! \&\f(CW\*(C`alignof(std::max_align_t)\*(C'\fR.
  .Sp
  This flag is enabled by default for \fB\-std=c++17\fR.
! .IP "\fB\-fno\-assume\-sane\-operators\-new\fR" 4
  .IX Item "-fno-assume-sane-operators-new"
! The \*(C+ standard allows replacing the global \f(CW\*(C`new\*(C'\fR, \f(CW\*(C`new[]\*(C'\fR,
! \&\f(CW\*(C`delete\*(C'\fR and \f(CW\*(C`delete[]\*(C'\fR operators, though a lot of \*(C+ programs
! don't replace them and just use the implementation provided version.
! Furthermore, the \*(C+ standard allows omitting those calls if they are
  made from new or delete expressions (and by extension the same is
  assumed if \f(CW\*(C`_\|_builtin_operator_new\*(C'\fR or \f(CW\*(C`_\|_builtin_operator_delete\*(C'\fR
  functions are used).
  This option allows control over some optimizations around calls
  to those operators.
! With \f(CW\*(C`\-fassume\-sane\-operators\-new\-delete\*(C'\fR option \s-1GCC\s0 may assume that
  calls to the replaceable global operators from new or delete expressions or
  from \f(CW\*(C`_\|_builtin_operator_new\*(C'\fR or \f(CW\*(C`_\|_builtin_operator_delete\*(C'\fR calls
! don't read or modify any global variables or variables whose address could
  escape to the operators (global state; except for \f(CW\*(C`errno\*(C'\fR for the
  \&\f(CW\*(C`new\*(C'\fR and \f(CW\*(C`new[]\*(C'\fR operators).
  This allows most optimizations across those calls and is something that
--- 2961,3023 ----
  .Sp
  Version 17, which first appeared in G++ 12, fixes layout of classes
  that inherit from aggregate classes with default member initializers
! in C++14 and up.
  .Sp
  Version 18, which first appeared in G++ 13, fixes manglings of lambdas
  that have additional context.
  .Sp
  Version 19, which first appeared in G++ 14, fixes manglings of structured
! bindings to include ABI tags.
  .Sp
  Version 20, which first appeared in G++ 15, fixes manglings of lambdas
  in static data member initializers.
  .Sp
  See also \fB\-Wabi\fR.
! .IP \fB\-fabi\-compat\-version=\fR\fIn\fR 4
  .IX Item "-fabi-compat-version=n"
  On targets that support strong aliases, G++
  works around mangling changes by creating an alias with the correct
  mangled name when defining a symbol with an incorrect mangled name.
! This switch specifies which ABI version to use for the alias.
  .Sp
! With \fB\-fabi\-version=0\fR (the default), this defaults to 13 (GCC 8.2
! compatibility).  If another ABI version is explicitly selected, this
! defaults to 0.  For compatibility with GCC versions 3.2 through 4.9,
  use \fB\-fabi\-compat\-version=2\fR.
  .Sp
  If this option is not provided but \fB\-Wabi=\fR\fIn\fR is, that
  version is used for compatibility aliases.  If this option is provided
  along with \fB\-Wabi\fR (without the version), the version from this
  option is used for the warning.
! .IP \fB\-fno\-access\-control\fR 4
  .IX Item "-fno-access-control"
  Turn off all access checking.  This switch is mainly useful for working
  around bugs in the access control code.
! .IP \fB\-faligned\-new\fR 4
  .IX Item "-faligned-new"
! Enable support for C++17 \f(CW\*(C`new\*(C'\fR of types that require more
  alignment than \f(CW\*(C`void* ::operator new(std::size_t)\*(C'\fR provides.  A
  numeric argument such as \f(CW\*(C`\-faligned\-new=32\*(C'\fR can be used to
  specify how much alignment (in bytes) is provided by that function,
  but few users will need to override the default of
! \&\f(CWalignof(std::max_align_t)\fR.
  .Sp
  This flag is enabled by default for \fB\-std=c++17\fR.
! .IP \fB\-fno\-assume\-sane\-operators\-new\fR 4
  .IX Item "-fno-assume-sane-operators-new"
! The C++ standard allows replacing the global \f(CW\*(C`new\*(C'\fR, \f(CW\*(C`new[]\*(C'\fR,
! \&\f(CW\*(C`delete\*(C'\fR and \f(CW\*(C`delete[]\*(C'\fR operators, though a lot of C++ programs
! don\*(Aqt replace them and just use the implementation provided version.
! Furthermore, the C++ standard allows omitting those calls if they are
  made from new or delete expressions (and by extension the same is
  assumed if \f(CW\*(C`_\|_builtin_operator_new\*(C'\fR or \f(CW\*(C`_\|_builtin_operator_delete\*(C'\fR
  functions are used).
  This option allows control over some optimizations around calls
  to those operators.
! With \f(CW\*(C`\-fassume\-sane\-operators\-new\-delete\*(C'\fR option GCC may assume that
  calls to the replaceable global operators from new or delete expressions or
  from \f(CW\*(C`_\|_builtin_operator_new\*(C'\fR or \f(CW\*(C`_\|_builtin_operator_delete\*(C'\fR calls
! don\*(Aqt read or modify any global variables or variables whose address could
  escape to the operators (global state; except for \f(CW\*(C`errno\*(C'\fR for the
  \&\f(CW\*(C`new\*(C'\fR and \f(CW\*(C`new[]\*(C'\fR operators).
  This allows most optimizations across those calls and is something that
*************** the implementation provided operators sa
*** 3092,3115 ****
  implementation details are observable in the code or unless \f(CW\*(C`malloc\*(C'\fR
  hooks are used, but might not be satisfied if a program replaces those
  operators.  This behavior is enabled by default.
! With \f(CW\*(C`\-fno\-assume\-sane\-operators\-new\-delete\*(C'\fR option \s-1GCC\s0 must
  assume all these calls (whether from new or delete expressions or called
  directly) may read and write global state unless proven otherwise (e.g.
! when \s-1GCC\s0 compiles their implementation).  Use this option if those
  operators are or may be replaced and code needs to expect such behavior.
! .IP "\fB\-fchar8_t\fR" 4
  .IX Item "-fchar8_t"
  .PD 0
! .IP "\fB\-fno\-char8_t\fR" 4
  .IX Item "-fno-char8_t"
  .PD
! Enable support for \f(CW\*(C`char8_t\*(C'\fR as adopted for \*(C+20.  This includes
  the addition of a new \f(CW\*(C`char8_t\*(C'\fR fundamental type, changes to the
! types of \s-1UTF\-8\s0 string and character literals, new signatures for
! user-defined literals, associated standard library updates, and new
  \&\f(CW\*(C`_\|_cpp_char8_t\*(C'\fR and \f(CW\*(C`_\|_cpp_lib_char8_t\*(C'\fR feature test macros.
  .Sp
! This option enables functions to be overloaded for ordinary and \s-1UTF\-8\s0
  strings:
  .Sp
  .Vb 4
--- 3025,3048 ----
  implementation details are observable in the code or unless \f(CW\*(C`malloc\*(C'\fR
  hooks are used, but might not be satisfied if a program replaces those
  operators.  This behavior is enabled by default.
! With \f(CW\*(C`\-fno\-assume\-sane\-operators\-new\-delete\*(C'\fR option GCC must
  assume all these calls (whether from new or delete expressions or called
  directly) may read and write global state unless proven otherwise (e.g.
! when GCC compiles their implementation).  Use this option if those
  operators are or may be replaced and code needs to expect such behavior.
! .IP \fB\-fchar8_t\fR 4
  .IX Item "-fchar8_t"
  .PD 0
! .IP \fB\-fno\-char8_t\fR 4
  .IX Item "-fno-char8_t"
  .PD
! Enable support for \f(CW\*(C`char8_t\*(C'\fR as adopted for C++20.  This includes
  the addition of a new \f(CW\*(C`char8_t\*(C'\fR fundamental type, changes to the
! types of UTF\-8 string and character literals, new signatures for
! user\-defined literals, associated standard library updates, and new
  \&\f(CW\*(C`_\|_cpp_char8_t\*(C'\fR and \f(CW\*(C`_\|_cpp_lib_char8_t\*(C'\fR feature test macros.
  .Sp
! This option enables functions to be overloaded for ordinary and UTF\-8
  strings:
  .Sp
  .Vb 4
*************** strings:
*** 3119,3125 ****
  \&        int v2 = f(u8"text");   // Calls #2
  .Ve
  .Sp
! and introduces new signatures for user-defined literals:
  .Sp
  .Vb 6
  \&        int operator""_udl1(char8_t);
--- 3052,3058 ----
  \&        int v2 = f(u8"text");   // Calls #2
  .Ve
  .Sp
! and introduces new signatures for user\-defined literals:
  .Sp
  .Vb 6
  \&        int operator""_udl1(char8_t);
*************** and introduces new signatures for user-d
*** 3130,3138 ****
  \&        int v5 = u8"text"_udl3;
  .Ve
  .Sp
! The change to the types of \s-1UTF\-8\s0 string and character literals introduces
! incompatibilities with \s-1ISO \*(C+11\s0 and later standards.  For example, the
! following code is well-formed under \s-1ISO \*(C+11,\s0 but is ill-formed when
  \&\fB\-fchar8_t\fR is specified.
  .Sp
  .Vb 11
--- 3063,3071 ----
  \&        int v5 = u8"text"_udl3;
  .Ve
  .Sp
! The change to the types of UTF\-8 string and character literals introduces
! incompatibilities with ISO C++11 and later standards.  For example, the
! following code is well\-formed under ISO C++11, but is ill\-formed when
  \&\fB\-fchar8_t\fR is specified.
  .Sp
  .Vb 11
*************** following code is well-formed under \s-1
*** 3148,3185 ****
  \&                                //        \`basic_string<char8_t>\*(Aq to non\-scalar
  \&                                //        type \`basic_string<char>\*(Aq requested
  .Ve
! .IP "\fB\-fcheck\-new\fR" 4
  .IX Item "-fcheck-new"
! Check that the pointer returned by \f(CW\*(C`operator new\*(C'\fR is non-null
  before attempting to modify the storage allocated.  This check is
! normally unnecessary because the \*(C+ standard specifies that
  \&\f(CW\*(C`operator new\*(C'\fR only returns \f(CW0\fR if it is declared
! \&\f(CW\*(C`throw()\*(C'\fR, in which case the compiler always checks the
  return value even without this option.  In all other cases, when
! \&\f(CW\*(C`operator new\*(C'\fR has a non-empty exception specification, memory
  exhaustion is signalled by throwing \f(CW\*(C`std::bad_alloc\*(C'\fR.  See also
  \&\fBnew (nothrow)\fR.
! .IP "\fB\-fconcepts\fR" 4
  .IX Item "-fconcepts"
! Enable support for the \*(C+ Concepts feature for constraining template
  arguments.  With \fB\-std=c++20\fR and above, Concepts are part of
  the language standard, so \fB\-fconcepts\fR defaults to on.
  .Sp
! Some constructs that were allowed by the earlier \*(C+ Extensions for
! Concepts Technical Specification, \s-1ISO 19217\s0 (2015), but didn't make it
  into the standard, could additionally be enabled by
  \&\fB\-fconcepts\-ts\fR.  The option \fB\-fconcepts\-ts\fR was deprecated
! in \s-1GCC 14\s0 and removed in \s-1GCC 15\s0; users are expected to convert their code
! to \*(C+20 concepts.
! .IP "\fB\-fconstexpr\-depth=\fR\fIn\fR" 4
  .IX Item "-fconstexpr-depth=n"
! Set the maximum nested evaluation depth for \*(C+11 constexpr functions
  to \fIn\fR.  A limit is needed to detect endless recursion during
  constant expression evaluation.  The minimum specified by the standard
  is 512.
! .IP "\fB\-fconstexpr\-cache\-depth=\fR\fIn\fR" 4
  .IX Item "-fconstexpr-cache-depth=n"
! Set the maximum level of nested evaluation depth for \*(C+11 constexpr
  functions that will be cached to \fIn\fR.  This is a heuristic that
  trades off compilation speed (when the cache avoids repeated
  calculations) against memory consumption (when the cache grows very
--- 3081,3118 ----
  \&                                //        \`basic_string<char8_t>\*(Aq to non\-scalar
  \&                                //        type \`basic_string<char>\*(Aq requested
  .Ve
! .IP \fB\-fcheck\-new\fR 4
  .IX Item "-fcheck-new"
! Check that the pointer returned by \f(CW\*(C`operator new\*(C'\fR is non\-null
  before attempting to modify the storage allocated.  This check is
! normally unnecessary because the C++ standard specifies that
  \&\f(CW\*(C`operator new\*(C'\fR only returns \f(CW0\fR if it is declared
! \&\f(CWthrow()\fR, in which case the compiler always checks the
  return value even without this option.  In all other cases, when
! \&\f(CW\*(C`operator new\*(C'\fR has a non\-empty exception specification, memory
  exhaustion is signalled by throwing \f(CW\*(C`std::bad_alloc\*(C'\fR.  See also
  \&\fBnew (nothrow)\fR.
! .IP \fB\-fconcepts\fR 4
  .IX Item "-fconcepts"
! Enable support for the C++ Concepts feature for constraining template
  arguments.  With \fB\-std=c++20\fR and above, Concepts are part of
  the language standard, so \fB\-fconcepts\fR defaults to on.
  .Sp
! Some constructs that were allowed by the earlier C++ Extensions for
! Concepts Technical Specification, ISO 19217 (2015), but didn\*(Aqt make it
  into the standard, could additionally be enabled by
  \&\fB\-fconcepts\-ts\fR.  The option \fB\-fconcepts\-ts\fR was deprecated
! in GCC 14 and removed in GCC 15; users are expected to convert their code
! to C++20 concepts.
! .IP \fB\-fconstexpr\-depth=\fR\fIn\fR 4
  .IX Item "-fconstexpr-depth=n"
! Set the maximum nested evaluation depth for C++11 constexpr functions
  to \fIn\fR.  A limit is needed to detect endless recursion during
  constant expression evaluation.  The minimum specified by the standard
  is 512.
! .IP \fB\-fconstexpr\-cache\-depth=\fR\fIn\fR 4
  .IX Item "-fconstexpr-cache-depth=n"
! Set the maximum level of nested evaluation depth for C++11 constexpr
  functions that will be cached to \fIn\fR.  This is a heuristic that
  trades off compilation speed (when the cache avoids repeated
  calculations) against memory consumption (when the cache grows very
*************** large from highly recursive evaluations)
*** 3187,3198 ****
  users are likely to want to adjust it, but if your code does heavy
  constexpr calculations you might want to experiment to find which
  value works best for you.
! .IP "\fB\-fconstexpr\-fp\-except\fR" 4
  .IX Item "-fconstexpr-fp-except"
! Annex F of the C standard specifies that \s-1IEC559\s0 floating point
  exceptions encountered at compile time should not stop compilation.
! \&\*(C+ compilers have historically not followed this guidance, instead
! treating floating point division by zero as non-constant even though
  it has a well defined value.  This flag tells the compiler to give
  Annex F priority over other rules saying that a particular operation
  is undefined.
--- 3120,3131 ----
  users are likely to want to adjust it, but if your code does heavy
  constexpr calculations you might want to experiment to find which
  value works best for you.
! .IP \fB\-fconstexpr\-fp\-except\fR 4
  .IX Item "-fconstexpr-fp-except"
! Annex F of the C standard specifies that IEC559 floating point
  exceptions encountered at compile time should not stop compilation.
! C++ compilers have historically not followed this guidance, instead
! treating floating point division by zero as non\-constant even though
  it has a well defined value.  This flag tells the compiler to give
  Annex F priority over other rules saying that a particular operation
  is undefined.
*************** is undefined.
*** 3200,3211 ****
  .Vb 1
  \&        constexpr float inf = 1./0.; // OK with \-fconstexpr\-fp\-except
  .Ve
! .IP "\fB\-fconstexpr\-loop\-limit=\fR\fIn\fR" 4
  .IX Item "-fconstexpr-loop-limit=n"
! Set the maximum number of iterations for a loop in \*(C+14 constexpr functions
  to \fIn\fR.  A limit is needed to detect infinite loops during
  constant expression evaluation.  The default is 262144 (1<<18).
! .IP "\fB\-fconstexpr\-ops\-limit=\fR\fIn\fR" 4
  .IX Item "-fconstexpr-ops-limit=n"
  Set the maximum number of operations during a single constexpr evaluation.
  Even when number of iterations of a single loop is limited with the above limit,
--- 3133,3144 ----
  .Vb 1
  \&        constexpr float inf = 1./0.; // OK with \-fconstexpr\-fp\-except
  .Ve
! .IP \fB\-fconstexpr\-loop\-limit=\fR\fIn\fR 4
  .IX Item "-fconstexpr-loop-limit=n"
! Set the maximum number of iterations for a loop in C++14 constexpr functions
  to \fIn\fR.  A limit is needed to detect infinite loops during
  constant expression evaluation.  The default is 262144 (1<<18).
! .IP \fB\-fconstexpr\-ops\-limit=\fR\fIn\fR 4
  .IX Item "-fconstexpr-ops-limit=n"
  Set the maximum number of operations during a single constexpr evaluation.
  Even when number of iterations of a single loop is limited with the above limit,
*************** smaller than the above limit, or if in a
*** 3214,3227 ****
  of a loop too many expressions need to be evaluated, the resulting constexpr
  evaluation might take too long.
  The default is 33554432 (1<<25).
! .IP "\fB\-fcontracts\fR" 4
  .IX Item "-fcontracts"
! Enable experimental support for the \*(C+ Contracts feature, as briefly
! added to and then removed from the \*(C+20 working paper (N4820).  The
  implementation also includes proposed enhancements from papers P1290,
  P1332, and P1429.  This functionality is intended mostly for those
  interested in experimentation towards refining the feature to get it
! into shape for a future \*(C+ standard.
  .Sp
  On violation of a checked contract, the violation handler is called.
  Users can replace the violation handler by defining
--- 3147,3160 ----
  of a loop too many expressions need to be evaluated, the resulting constexpr
  evaluation might take too long.
  The default is 33554432 (1<<25).
! .IP \fB\-fcontracts\fR 4
  .IX Item "-fcontracts"
! Enable experimental support for the C++ Contracts feature, as briefly
! added to and then removed from the C++20 working paper (N4820).  The
  implementation also includes proposed enhancements from papers P1290,
  P1332, and P1429.  This functionality is intended mostly for those
  interested in experimentation towards refining the feature to get it
! into shape for a future C++ standard.
  .Sp
  On violation of a checked contract, the violation handler is called.
  Users can replace the violation handler by defining
*************** to specify which contracts will be check
*** 3236,3267 ****
  contracts, P1332 contracts, or P1429 contracts; these sets cannot be
  used together.
  .RS 4
! .IP "\fB\-fcontract\-mode=[on|off]\fR" 4
  .IX Item "-fcontract-mode=[on|off]"
  Control whether any contracts have any semantics at all.  Defaults to on.
! .IP "\fB\-fcontract\-assumption\-mode=[on|off]\fR" 4
  .IX Item "-fcontract-assumption-mode=[on|off]"
  [N4820] Control whether contracts with level \fBaxiom\fR
  should have the assume semantic.  Defaults to on.
! .IP "\fB\-fcontract\-build\-level=[off|default|audit]\fR" 4
  .IX Item "-fcontract-build-level=[off|default|audit]"
  [N4820] Specify which level of contracts to generate checks
  for.  Defaults to \fBdefault\fR.
! .IP "\fB\-fcontract\-continuation\-mode=[on|off]\fR" 4
  .IX Item "-fcontract-continuation-mode=[on|off]"
  [N4820] Control whether to allow the program to continue executing
  after a contract violation.  That is, do checked contracts have the
  \&\fBmaybe\fR semantic described below rather than the \fBnever\fR
  semantic.  Defaults to off.
! .IP "\fB\-fcontract\-role=<name>:<default>,<audit>,<axiom>\fR" 4
  .IX Item "-fcontract-role=<name>:<default>,<audit>,<axiom>"
  [P1332] Specify the concrete semantics for each contract level
  of a particular contract role.
! .IP "\fB\-fcontract\-semantic=[default|audit|axiom]:<semantic>\fR" 4
  .IX Item "-fcontract-semantic=[default|audit|axiom]:<semantic>"
  [P1429] Specify the concrete semantic for a particular
  contract level.
! .IP "\fB\-fcontract\-strict\-declarations=[on|off]\fR" 4
  .IX Item "-fcontract-strict-declarations=[on|off]"
  Control whether to reject adding contracts to a function after its
  first declaration.  Defaults to off.
--- 3169,3200 ----
  contracts, P1332 contracts, or P1429 contracts; these sets cannot be
  used together.
  .RS 4
! .IP \fB\-fcontract\-mode=[on|off]\fR 4
  .IX Item "-fcontract-mode=[on|off]"
  Control whether any contracts have any semantics at all.  Defaults to on.
! .IP \fB\-fcontract\-assumption\-mode=[on|off]\fR 4
  .IX Item "-fcontract-assumption-mode=[on|off]"
  [N4820] Control whether contracts with level \fBaxiom\fR
  should have the assume semantic.  Defaults to on.
! .IP \fB\-fcontract\-build\-level=[off|default|audit]\fR 4
  .IX Item "-fcontract-build-level=[off|default|audit]"
  [N4820] Specify which level of contracts to generate checks
  for.  Defaults to \fBdefault\fR.
! .IP \fB\-fcontract\-continuation\-mode=[on|off]\fR 4
  .IX Item "-fcontract-continuation-mode=[on|off]"
  [N4820] Control whether to allow the program to continue executing
  after a contract violation.  That is, do checked contracts have the
  \&\fBmaybe\fR semantic described below rather than the \fBnever\fR
  semantic.  Defaults to off.
! .IP \fB\-fcontract\-role=<name>:<default>,<audit>,<axiom>\fR 4
  .IX Item "-fcontract-role=<name>:<default>,<audit>,<axiom>"
  [P1332] Specify the concrete semantics for each contract level
  of a particular contract role.
! .IP \fB\-fcontract\-semantic=[default|audit|axiom]:<semantic>\fR 4
  .IX Item "-fcontract-semantic=[default|audit|axiom]:<semantic>"
  [P1429] Specify the concrete semantic for a particular
  contract level.
! .IP \fB\-fcontract\-strict\-declarations=[on|off]\fR 4
  .IX Item "-fcontract-strict-declarations=[on|off]"
  Control whether to reject adding contracts to a function after its
  first declaration.  Defaults to off.
*************** first declaration.  Defaults to off.
*** 3271,3302 ****
  The possible concrete semantics for that can be specified with
  \&\fB\-fcontract\-role\fR or \fB\-fcontract\-semantic\fR are:
  .ie n .IP """ignore""" 4
! .el .IP "\f(CWignore\fR" 4
  .IX Item "ignore"
  This contract has no effect.
  .ie n .IP """assume""" 4
! .el .IP "\f(CWassume\fR" 4
  .IX Item "assume"
! This contract is treated like \*(C+23 \f(CW\*(C`[[assume]]\*(C'\fR.
  .ie n .IP """check_never_continue""" 4
! .el .IP "\f(CWcheck_never_continue\fR" 4
  .IX Item "check_never_continue"
  .PD 0
  .ie n .IP """never""" 4
! .el .IP "\f(CWnever\fR" 4
  .IX Item "never"
  .ie n .IP """abort""" 4
! .el .IP "\f(CWabort\fR" 4
  .IX Item "abort"
  .PD
  This contract is checked.  If it fails, the violation handler is
  called.  If the handler returns, \f(CW\*(C`std::terminate\*(C'\fR is called.
  .ie n .IP """check_maybe_continue""" 4
! .el .IP "\f(CWcheck_maybe_continue\fR" 4
  .IX Item "check_maybe_continue"
  .PD 0
  .ie n .IP """maybe""" 4
! .el .IP "\f(CWmaybe\fR" 4
  .IX Item "maybe"
  .PD
  This contract is checked.  If it fails, the violation handler is
--- 3204,3235 ----
  The possible concrete semantics for that can be specified with
  \&\fB\-fcontract\-role\fR or \fB\-fcontract\-semantic\fR are:
  .ie n .IP """ignore""" 4
! .el .IP \f(CWignore\fR 4
  .IX Item "ignore"
  This contract has no effect.
  .ie n .IP """assume""" 4
! .el .IP \f(CWassume\fR 4
  .IX Item "assume"
! This contract is treated like C++23 \f(CW\*(C`[[assume]]\*(C'\fR.
  .ie n .IP """check_never_continue""" 4
! .el .IP \f(CWcheck_never_continue\fR 4
  .IX Item "check_never_continue"
  .PD 0
  .ie n .IP """never""" 4
! .el .IP \f(CWnever\fR 4
  .IX Item "never"
  .ie n .IP """abort""" 4
! .el .IP \f(CWabort\fR 4
  .IX Item "abort"
  .PD
  This contract is checked.  If it fails, the violation handler is
  called.  If the handler returns, \f(CW\*(C`std::terminate\*(C'\fR is called.
  .ie n .IP """check_maybe_continue""" 4
! .el .IP \f(CWcheck_maybe_continue\fR 4
  .IX Item "check_maybe_continue"
  .PD 0
  .ie n .IP """maybe""" 4
! .el .IP \f(CWmaybe\fR 4
  .IX Item "maybe"
  .PD
  This contract is checked.  If it fails, the violation handler is
*************** called.  If the handler returns, executi
*** 3304,3377 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-fcoroutines\fR" 4
  .IX Item "-fcoroutines"
! Enable support for the \*(C+ coroutines extension (experimental).
! .IP "\fB\-fdiagnostics\-all\-candidates\fR" 4
  .IX Item "-fdiagnostics-all-candidates"
! Permit the \*(C+ front end to note all candidates during overload resolution
  failure, including when a deleted function is selected.
! .IP "\fB\-fno\-elide\-constructors\fR" 4
  .IX Item "-fno-elide-constructors"
! The \*(C+ standard allows an implementation to omit creating a temporary
  that is only used to initialize another object of the same type.
  Specifying this option disables that optimization, and forces G++ to
  call the copy constructor in all cases.  This option also causes G++
  to call trivial member functions which otherwise would be expanded inline.
  .Sp
! In \*(C+17, the compiler is required to omit these temporaries, but this
  option still affects trivial member functions.
! .IP "\fB\-fno\-enforce\-eh\-specs\fR" 4
  .IX Item "-fno-enforce-eh-specs"
! Don't generate code to check for violation of exception specifications
! at run time.  This option violates the \*(C+ standard, but may be useful
  for reducing code size in production builds, much like defining
  \&\f(CW\*(C`NDEBUG\*(C'\fR.  This does not give user code permission to throw
  exceptions in violation of the exception specifications; the compiler
  still optimizes based on the specifications, so throwing an
  unexpected exception results in undefined behavior at run time.
! .IP "\fB\-fextern\-tls\-init\fR" 4
  .IX Item "-fextern-tls-init"
  .PD 0
! .IP "\fB\-fno\-extern\-tls\-init\fR" 4
  .IX Item "-fno-extern-tls-init"
  .PD
! The \*(C+11 and OpenMP standards allow \f(CW\*(C`thread_local\*(C'\fR and
  \&\f(CW\*(C`threadprivate\*(C'\fR variables to have dynamic (runtime)
  initialization.  To support this, any use of such a variable goes
  through a wrapper function that performs any necessary initialization.
  When the use and definition of the variable are in the same
  translation unit, this overhead can be optimized away, but when the
  use is in a different translation unit there is significant overhead
! even if the variable doesn't actually need dynamic initialization.  If
  the programmer can be sure that no use of the variable in a
! non-defining \s-1TU\s0 needs to trigger dynamic initialization (either
  because the variable is statically initialized, or a use of the
! variable in the defining \s-1TU\s0 will be executed before any uses in
! another \s-1TU\s0), they can avoid this overhead with the
  \&\fB\-fno\-extern\-tls\-init\fR option.
  .Sp
  On targets that support symbol aliases, the default is
  \&\fB\-fextern\-tls\-init\fR.  On targets that do not support symbol
  aliases, the default is \fB\-fno\-extern\-tls\-init\fR.
! .IP "\fB\-ffold\-simple\-inlines\fR" 4
  .IX Item "-ffold-simple-inlines"
  .PD 0
! .IP "\fB\-fno\-fold\-simple\-inlines\fR" 4
  .IX Item "-fno-fold-simple-inlines"
  .PD
! Permit the \*(C+ frontend to fold calls to \f(CW\*(C`std::move\*(C'\fR, \f(CW\*(C`std::forward\*(C'\fR,
  \&\f(CW\*(C`std::addressof\*(C'\fR and \f(CW\*(C`std::as_const\*(C'\fR.  In contrast to inlining, this
  means no debug information will be generated for such calls.  Since these
  functions are rarely interesting to debug, this flag is enabled by default
  unless \fB\-fno\-inline\fR is active.
! .IP "\fB\-fno\-gnu\-keywords\fR" 4
  .IX Item "-fno-gnu-keywords"
  Do not recognize \f(CW\*(C`typeof\*(C'\fR as a keyword, so that code can use this
  word as an identifier.  You can use the keyword \f(CW\*(C`_\|_typeof_\|_\*(C'\fR instead.
! This option is implied by the strict \s-1ISO \*(C+\s0 dialects: \fB\-ansi\fR,
  \&\fB\-std=c++98\fR, \fB\-std=c++11\fR, etc.
! .IP "\fB\-fno\-immediate\-escalation\fR" 4
  .IX Item "-fno-immediate-escalation"
  Do not enable immediate function escalation whereby certain functions
  can be promoted to consteval, as specified in P2564R3.  For example:
--- 3237,3310 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-fcoroutines\fR 4
  .IX Item "-fcoroutines"
! Enable support for the C++ coroutines extension (experimental).
! .IP \fB\-fdiagnostics\-all\-candidates\fR 4
  .IX Item "-fdiagnostics-all-candidates"
! Permit the C++ front end to note all candidates during overload resolution
  failure, including when a deleted function is selected.
! .IP \fB\-fno\-elide\-constructors\fR 4
  .IX Item "-fno-elide-constructors"
! The C++ standard allows an implementation to omit creating a temporary
  that is only used to initialize another object of the same type.
  Specifying this option disables that optimization, and forces G++ to
  call the copy constructor in all cases.  This option also causes G++
  to call trivial member functions which otherwise would be expanded inline.
  .Sp
! In C++17, the compiler is required to omit these temporaries, but this
  option still affects trivial member functions.
! .IP \fB\-fno\-enforce\-eh\-specs\fR 4
  .IX Item "-fno-enforce-eh-specs"
! Don\*(Aqt generate code to check for violation of exception specifications
! at run time.  This option violates the C++ standard, but may be useful
  for reducing code size in production builds, much like defining
  \&\f(CW\*(C`NDEBUG\*(C'\fR.  This does not give user code permission to throw
  exceptions in violation of the exception specifications; the compiler
  still optimizes based on the specifications, so throwing an
  unexpected exception results in undefined behavior at run time.
! .IP \fB\-fextern\-tls\-init\fR 4
  .IX Item "-fextern-tls-init"
  .PD 0
! .IP \fB\-fno\-extern\-tls\-init\fR 4
  .IX Item "-fno-extern-tls-init"
  .PD
! The C++11 and OpenMP standards allow \f(CW\*(C`thread_local\*(C'\fR and
  \&\f(CW\*(C`threadprivate\*(C'\fR variables to have dynamic (runtime)
  initialization.  To support this, any use of such a variable goes
  through a wrapper function that performs any necessary initialization.
  When the use and definition of the variable are in the same
  translation unit, this overhead can be optimized away, but when the
  use is in a different translation unit there is significant overhead
! even if the variable doesn\*(Aqt actually need dynamic initialization.  If
  the programmer can be sure that no use of the variable in a
! non\-defining TU needs to trigger dynamic initialization (either
  because the variable is statically initialized, or a use of the
! variable in the defining TU will be executed before any uses in
! another TU), they can avoid this overhead with the
  \&\fB\-fno\-extern\-tls\-init\fR option.
  .Sp
  On targets that support symbol aliases, the default is
  \&\fB\-fextern\-tls\-init\fR.  On targets that do not support symbol
  aliases, the default is \fB\-fno\-extern\-tls\-init\fR.
! .IP \fB\-ffold\-simple\-inlines\fR 4
  .IX Item "-ffold-simple-inlines"
  .PD 0
! .IP \fB\-fno\-fold\-simple\-inlines\fR 4
  .IX Item "-fno-fold-simple-inlines"
  .PD
! Permit the C++ frontend to fold calls to \f(CW\*(C`std::move\*(C'\fR, \f(CW\*(C`std::forward\*(C'\fR,
  \&\f(CW\*(C`std::addressof\*(C'\fR and \f(CW\*(C`std::as_const\*(C'\fR.  In contrast to inlining, this
  means no debug information will be generated for such calls.  Since these
  functions are rarely interesting to debug, this flag is enabled by default
  unless \fB\-fno\-inline\fR is active.
! .IP \fB\-fno\-gnu\-keywords\fR 4
  .IX Item "-fno-gnu-keywords"
  Do not recognize \f(CW\*(C`typeof\*(C'\fR as a keyword, so that code can use this
  word as an identifier.  You can use the keyword \f(CW\*(C`_\|_typeof_\|_\*(C'\fR instead.
! This option is implied by the strict ISO C++ dialects: \fB\-ansi\fR,
  \&\fB\-std=c++98\fR, \fB\-std=c++11\fR, etc.
! .IP \fB\-fno\-immediate\-escalation\fR 4
  .IX Item "-fno-immediate-escalation"
  Do not enable immediate function escalation whereby certain functions
  can be promoted to consteval, as specified in P2564R3.  For example:
*************** can be promoted to consteval, as specifi
*** 3390,3641 ****
  \&        }
  .Ve
  .Sp
! compiles in \*(C+20: \f(CW\*(C`f\*(C'\fR is an immediate-escalating function (due to
  the \f(CW\*(C`auto\*(C'\fR it is a function template and is declared \f(CW\*(C`constexpr\*(C'\fR)
! and \f(CWid(t)\fR is an immediate-escalating expression, so \f(CW\*(C`f\*(C'\fR is
  promoted to \f(CW\*(C`consteval\*(C'\fR.  Consequently, the call to \f(CWid(t)\fR
! is in an immediate context, so doesn't have to produce a constant (that
  is the mechanism allowing consteval function composition).  However,
  with \fB\-fno\-immediate\-escalation\fR, \f(CW\*(C`f\*(C'\fR is not promoted to
  \&\f(CW\*(C`consteval\*(C'\fR, and since the call to consteval function \f(CWid(t)\fR
  is not a constant expression, the compiler rejects the code.
  .Sp
! This option is turned on by default; it is only effective in \*(C+20 mode
  or later.
! .IP "\fB\-fimplicit\-constexpr\fR" 4
  .IX Item "-fimplicit-constexpr"
  Make inline functions implicitly constexpr, if they satisfy the
  requirements for a constexpr function.  This option can be used in
! \&\*(C+14 mode or later.  This can result in initialization changing from
  dynamic to static and other optimizations.
! .IP "\fB\-fno\-implicit\-templates\fR" 4
  .IX Item "-fno-implicit-templates"
! Never emit code for non-inline templates that are instantiated
  implicitly (i.e. by use); only emit code for explicit instantiations.
  If you use this option, you must take care to structure your code to
  include all the necessary explicit instantiations to avoid getting
  undefined symbols at link time.
! .IP "\fB\-fno\-implicit\-inline\-templates\fR" 4
  .IX Item "-fno-implicit-inline-templates"
! Don't emit code for implicit instantiations of inline templates, either.
  The default is to handle inlines differently so that compiles with and
  without optimization need the same set of explicit instantiations.
! .IP "\fB\-fno\-implement\-inlines\fR" 4
  .IX Item "-fno-implement-inlines"
! To save space, do not emit out-of-line copies of inline functions
  controlled by \f(CW\*(C`#pragma implementation\*(C'\fR.  This causes linker
  errors if these functions are not inlined everywhere they are called.
! .IP "\fB\-fmodules\fR" 4
  .IX Item "-fmodules"
  .PD 0
! .IP "\fB\-fno\-modules\fR" 4
  .IX Item "-fno-modules"
  .PD
! Enable support for \*(C+20 modules.  The
  \&\fB\-fno\-modules\fR is usually not needed, as that is the
! default.  Even though this is a \*(C+20 feature, it is not currently
  implicitly enabled by selecting that standard version.
! .IP "\fB\-fmodule\-header\fR" 4
  .IX Item "-fmodule-header"
  .PD 0
! .IP "\fB\-fmodule\-header=user\fR" 4
  .IX Item "-fmodule-header=user"
! .IP "\fB\-fmodule\-header=system\fR" 4
  .IX Item "-fmodule-header=system"
  .PD
  Compile a header file to create an importable header unit.
! .IP "\fB\-fmodule\-implicit\-inline\fR" 4
  .IX Item "-fmodule-implicit-inline"
  Member functions defined in their class definitions are not implicitly
! inline for modular code.  This is different to traditional \*(C+
  behavior, for good reasons.  However, it may result in a difficulty
  during code porting.  This option makes such function definitions
! implicitly inline.  It does however generate an \s-1ABI\s0 incompatibility,
  so you must use it everywhere or nowhere.  (Such definitions outside
  of a named module remain implicitly inline, regardless.)
! .IP "\fB\-fno\-module\-lazy\fR" 4
  .IX Item "-fno-module-lazy"
  Disable lazy module importing and module mapper creation.
! .IP "\fB\-fmodule\-mapper=\fR[\fIhostname\fR]\fB:\fR\fIport\fR[\fB?\fR\fIident\fR]" 4
  .IX Item "-fmodule-mapper=[hostname]:port[?ident]"
  .PD 0
  .IP "\fB\-fmodule\-mapper=|\fR\fIprogram\fR[\fB?\fR\fIident\fR]\fB \fR\fIargs...\fR" 4
  .IX Item "-fmodule-mapper=|program[?ident] args..."
! .IP "\fB\-fmodule\-mapper==\fR\fIsocket\fR[\fB?\fR\fIident\fR]" 4
  .IX Item "-fmodule-mapper==socket[?ident]"
! .IP "\fB\-fmodule\-mapper=<>\fR[\fIinout\fR][\fB?\fR\fIident\fR]" 4
  .IX Item "-fmodule-mapper=<>[inout][?ident]"
! .IP "\fB\-fmodule\-mapper=<\fR\fIin\fR\fB>\fR\fIout\fR[\fB?\fR\fIident\fR]" 4
  .IX Item "-fmodule-mapper=<in>out[?ident]"
! .IP "\fB\-fmodule\-mapper=\fR\fIfile\fR[\fB?\fR\fIident\fR]" 4
  .IX Item "-fmodule-mapper=file[?ident]"
  .PD
  An oracle to query for module name to filename mappings.  If
! unspecified the \fB\s-1CXX_MODULE_MAPPER\s0\fR environment variable is used,
! and if that is unset, an in-process default is provided.
! .IP "\fB\-fmodule\-only\fR" 4
  .IX Item "-fmodule-only"
  Only emit the Compiled Module Interface, inhibiting any object file.
! .IP "\fB\-fms\-extensions\fR" 4
  .IX Item "-fms-extensions"
! Disable Wpedantic warnings about constructs used in \s-1MFC,\s0 such as implicit
! int and getting a pointer to member function via non-standard syntax.
! .IP "\fB\-fnew\-inheriting\-ctors\fR" 4
  .IX Item "-fnew-inheriting-ctors"
! Enable the P0136 adjustment to the semantics of \*(C+11 constructor
! inheritance.  This is part of \*(C+17 but also considered to be a Defect
! Report against \*(C+11 and \*(C+14.  This flag is enabled by default
  unless \fB\-fabi\-version=10\fR or lower is specified.
! .IP "\fB\-fnew\-ttp\-matching\fR" 4
  .IX Item "-fnew-ttp-matching"
  Enable the P0522 resolution to Core issue 150, template template
  parameters and default arguments: this allows a template with default
  template arguments as an argument for a template template parameter
  with fewer template parameters.  This flag is enabled by default for
  \&\fB\-std=c++17\fR.
! .IP "\fB\-fno\-nonansi\-builtins\fR" 4
  .IX Item "-fno-nonansi-builtins"
! Disable built-in declarations of functions that are not mandated by
! \&\s-1ANSI/ISO C.\s0  These include \f(CW\*(C`ffs\*(C'\fR, \f(CW\*(C`alloca\*(C'\fR, \f(CW\*(C`_exit\*(C'\fR,
  \&\f(CW\*(C`index\*(C'\fR, \f(CW\*(C`bzero\*(C'\fR, \f(CW\*(C`conjf\*(C'\fR, and other related functions.
! .IP "\fB\-fnothrow\-opt\fR" 4
  .IX Item "-fnothrow-opt"
! Treat a \f(CW\*(C`throw()\*(C'\fR exception specification as if it were a
  \&\f(CW\*(C`noexcept\*(C'\fR specification to reduce or eliminate the text size
  overhead relative to a function with no exception specification.  If
! the function has local variables of types with non-trivial
  destructors, the exception specification actually makes the
! function smaller because the \s-1EH\s0 cleanups for those variables can be
  optimized away.  The semantic effect is that an exception thrown out of
  a function with such an exception specification results in a call
  to \f(CW\*(C`terminate\*(C'\fR rather than \f(CW\*(C`unexpected\*(C'\fR.
! .IP "\fB\-fno\-operator\-names\fR" 4
  .IX Item "-fno-operator-names"
  Do not treat the operator name keywords \f(CW\*(C`and\*(C'\fR, \f(CW\*(C`bitand\*(C'\fR,
  \&\f(CW\*(C`bitor\*(C'\fR, \f(CW\*(C`compl\*(C'\fR, \f(CW\*(C`not\*(C'\fR, \f(CW\*(C`or\*(C'\fR and \f(CW\*(C`xor\*(C'\fR as
  synonyms as keywords.
! .IP "\fB\-fno\-optional\-diags\fR" 4
  .IX Item "-fno-optional-diags"
  Disable diagnostics that the standard says a compiler does not need to
  issue.  Currently, the only such diagnostic issued by G++ is the one for
  a name having multiple meanings within a class.
! .IP "\fB\-fno\-pretty\-templates\fR" 4
  .IX Item "-fno-pretty-templates"
  When an error message refers to a specialization of a function
  template, the compiler normally prints the signature of the
  template followed by the template arguments and any typedefs or
  typenames in the signature (e.g. \f(CW\*(C`void f(T) [with T = int]\*(C'\fR
! rather than \f(CW\*(C`void f(int)\*(C'\fR) so that it's clear which template is
  involved.  When an error message refers to a specialization of a class
  template, the compiler omits any template arguments that match
  the default template arguments for that template.  If either of these
  behaviors make it harder to understand the error message rather than
  easier, you can use \fB\-fno\-pretty\-templates\fR to disable them.
! .IP "\fB\-frange\-for\-ext\-temps\fR" 4
  .IX Item "-frange-for-ext-temps"
! Enable lifetime extension of \*(C+ range based for temporaries.
  With \fB\-std=c++23\fR and above this is part of the language standard,
  so lifetime of the temporaries is extended until the end of the loop
  by default.  This option allows enabling that behavior also
  in earlier versions of the standard.
! .IP "\fB\-fno\-rtti\fR" 4
  .IX Item "-fno-rtti"
  Disable generation of information about every class with virtual
! functions for use by the \*(C+ run-time type identification features
! (\f(CW\*(C`dynamic_cast\*(C'\fR and \f(CW\*(C`typeid\*(C'\fR).  If you don't use those parts
  of the language, you can save some space by using this flag.  Note that
  exception handling uses the same information, but G++ generates it as
  needed. The \f(CW\*(C`dynamic_cast\*(C'\fR operator can still be used for casts that
! do not require run-time type information, i.e. casts to \f(CW\*(C`void *\*(C'\fR or to
  unambiguous base classes.
  .Sp
  Mixing code compiled with \fB\-frtti\fR with that compiled with
  \&\fB\-fno\-rtti\fR may not work.  For example, programs may
  fail to link if a class compiled with \fB\-fno\-rtti\fR is used as a base
  for a class compiled with \fB\-frtti\fR.
! .IP "\fB\-fsized\-deallocation\fR" 4
  .IX Item "-fsized-deallocation"
! Enable the built-in global declarations
  .Sp
  .Vb 2
  \&        void operator delete (void *, std::size_t) noexcept;
  \&        void operator delete[] (void *, std::size_t) noexcept;
  .Ve
  .Sp
! as introduced in \*(C+14.  This is useful for user-defined replacement
  deallocation functions that, for example, use the size of the object
  to make deallocation faster.  Enabled by default under
  \&\fB\-std=c++14\fR and above.  The flag \fB\-Wsized\-deallocation\fR
  warns about places that might want to add a definition.
! .IP "\fB\-fstrict\-enums\fR" 4
  .IX Item "-fstrict-enums"
  Allow the compiler to optimize using the assumption that a value of
  enumerated type can only be one of the values of the enumeration (as
! defined in the \*(C+ standard; basically, a value that can be
  represented in the minimum number of bits needed to represent all the
  enumerators).  This assumption may not be valid if the program uses a
  cast to convert an arbitrary integer value to the enumerated type.
  This option has no effect for an enumeration type with a fixed underlying
  type.
! .IP "\fB\-fstrong\-eval\-order\fR" 4
  .IX Item "-fstrong-eval-order"
  .PD 0
! .IP "\fB\-fstrong\-eval\-order=\fR\fIkind\fR" 4
  .IX Item "-fstrong-eval-order=kind"
  .PD
  Evaluate member access, array subscripting, and shift expressions in
! left-to-right order, and evaluate assignment in right-to-left order,
! as adopted for \*(C+17.  \fB\-fstrong\-eval\-order\fR is equivalent to
  \&\fB\-fstrong\-eval\-order=all\fR,
  and is enabled by default with \fB\-std=c++17\fR or later.
  .Sp
  \&\fB\-fstrong\-eval\-order=some\fR enables just the ordering of member
! access and shift expressions, and is the default for \*(C+ dialects prior to
! \&\*(C+17.
  .Sp
  \&\fB\-fstrong\-eval\-order=none\fR is equivalent to
  \&\fB\-fno\-strong\-eval\-order\fR.
! .IP "\fB\-ftemplate\-backtrace\-limit=\fR\fIn\fR" 4
  .IX Item "-ftemplate-backtrace-limit=n"
  Set the maximum number of template instantiation notes for a single
  warning or error to \fIn\fR.  The default value is 10.
! .IP "\fB\-ftemplate\-depth=\fR\fIn\fR" 4
  .IX Item "-ftemplate-depth=n"
  Set the maximum instantiation depth for template classes to \fIn\fR.
  A limit on the template instantiation depth is needed to detect
! endless recursions during template class instantiation.  \s-1ANSI/ISO \*(C+\s0
  conforming programs must not rely on a maximum depth greater than 17
! (changed to 1024 in \*(C+11).  The default value is 900, as the compiler
  can run out of stack space before hitting 1024 in some situations.
! .IP "\fB\-fno\-threadsafe\-statics\fR" 4
  .IX Item "-fno-threadsafe-statics"
! Do not emit the extra code to use the routines specified in the \*(C+
! \&\s-1ABI\s0 for thread-safe initialization of local statics.  You can use this
! option to reduce code size slightly in code that doesn't need to be
! thread-safe.
! .IP "\fB\-fuse\-cxa\-atexit\fR" 4
  .IX Item "-fuse-cxa-atexit"
  Register destructors for objects with static storage duration with the
  \&\f(CW\*(C`_\|_cxa_atexit\*(C'\fR function rather than the \f(CW\*(C`atexit\*(C'\fR function.
! This option is required for fully standards-compliant handling of static
  destructors, but only works if your C library supports
  \&\f(CW\*(C`_\|_cxa_atexit\*(C'\fR.
! .IP "\fB\-fno\-use\-cxa\-get\-exception\-ptr\fR" 4
  .IX Item "-fno-use-cxa-get-exception-ptr"
! Don't use the \f(CW\*(C`_\|_cxa_get_exception_ptr\*(C'\fR runtime routine.  This
  causes \f(CW\*(C`std::uncaught_exception\*(C'\fR to be incorrect, but is necessary
  if the runtime routine is not available.
! .IP "\fB\-fvisibility\-inlines\-hidden\fR" 4
  .IX Item "-fvisibility-inlines-hidden"
  This switch declares that the user does not attempt to compare
  pointers to inline functions or methods where the addresses of the two functions
  are taken in different shared objects.
  .Sp
! The effect of this is that \s-1GCC\s0 may, effectively, mark inline methods with
  \&\f(CW\*(C`_\|_attribute_\|_ ((visibility ("hidden")))\*(C'\fR so that they do not
! appear in the export table of a \s-1DSO\s0 and do not require a \s-1PLT\s0 indirection
! when used within the \s-1DSO.\s0  Enabling this option can have a dramatic effect
! on load and link times of a \s-1DSO\s0 as it massively reduces the size of the
  dynamic export table when the library makes heavy use of templates.
  .Sp
  The behavior of this switch is not quite the same as marking the
--- 3323,3574 ----
  \&        }
  .Ve
  .Sp
! compiles in C++20: \f(CW\*(C`f\*(C'\fR is an immediate\-escalating function (due to
  the \f(CW\*(C`auto\*(C'\fR it is a function template and is declared \f(CW\*(C`constexpr\*(C'\fR)
! and \f(CWid(t)\fR is an immediate\-escalating expression, so \f(CW\*(C`f\*(C'\fR is
  promoted to \f(CW\*(C`consteval\*(C'\fR.  Consequently, the call to \f(CWid(t)\fR
! is in an immediate context, so doesn\*(Aqt have to produce a constant (that
  is the mechanism allowing consteval function composition).  However,
  with \fB\-fno\-immediate\-escalation\fR, \f(CW\*(C`f\*(C'\fR is not promoted to
  \&\f(CW\*(C`consteval\*(C'\fR, and since the call to consteval function \f(CWid(t)\fR
  is not a constant expression, the compiler rejects the code.
  .Sp
! This option is turned on by default; it is only effective in C++20 mode
  or later.
! .IP \fB\-fimplicit\-constexpr\fR 4
  .IX Item "-fimplicit-constexpr"
  Make inline functions implicitly constexpr, if they satisfy the
  requirements for a constexpr function.  This option can be used in
! C++14 mode or later.  This can result in initialization changing from
  dynamic to static and other optimizations.
! .IP \fB\-fno\-implicit\-templates\fR 4
  .IX Item "-fno-implicit-templates"
! Never emit code for non\-inline templates that are instantiated
  implicitly (i.e. by use); only emit code for explicit instantiations.
  If you use this option, you must take care to structure your code to
  include all the necessary explicit instantiations to avoid getting
  undefined symbols at link time.
! .IP \fB\-fno\-implicit\-inline\-templates\fR 4
  .IX Item "-fno-implicit-inline-templates"
! Don\*(Aqt emit code for implicit instantiations of inline templates, either.
  The default is to handle inlines differently so that compiles with and
  without optimization need the same set of explicit instantiations.
! .IP \fB\-fno\-implement\-inlines\fR 4
  .IX Item "-fno-implement-inlines"
! To save space, do not emit out\-of\-line copies of inline functions
  controlled by \f(CW\*(C`#pragma implementation\*(C'\fR.  This causes linker
  errors if these functions are not inlined everywhere they are called.
! .IP \fB\-fmodules\fR 4
  .IX Item "-fmodules"
  .PD 0
! .IP \fB\-fno\-modules\fR 4
  .IX Item "-fno-modules"
  .PD
! Enable support for C++20 modules.  The
  \&\fB\-fno\-modules\fR is usually not needed, as that is the
! default.  Even though this is a C++20 feature, it is not currently
  implicitly enabled by selecting that standard version.
! .IP \fB\-fmodule\-header\fR 4
  .IX Item "-fmodule-header"
  .PD 0
! .IP \fB\-fmodule\-header=user\fR 4
  .IX Item "-fmodule-header=user"
! .IP \fB\-fmodule\-header=system\fR 4
  .IX Item "-fmodule-header=system"
  .PD
  Compile a header file to create an importable header unit.
! .IP \fB\-fmodule\-implicit\-inline\fR 4
  .IX Item "-fmodule-implicit-inline"
  Member functions defined in their class definitions are not implicitly
! inline for modular code.  This is different to traditional C++
  behavior, for good reasons.  However, it may result in a difficulty
  during code porting.  This option makes such function definitions
! implicitly inline.  It does however generate an ABI incompatibility,
  so you must use it everywhere or nowhere.  (Such definitions outside
  of a named module remain implicitly inline, regardless.)
! .IP \fB\-fno\-module\-lazy\fR 4
  .IX Item "-fno-module-lazy"
  Disable lazy module importing and module mapper creation.
! .IP \fB\-fmodule\-mapper=\fR[\fIhostname\fR]\fB:\fR\fIport\fR[\fB?\fR\fIident\fR] 4
  .IX Item "-fmodule-mapper=[hostname]:port[?ident]"
  .PD 0
  .IP "\fB\-fmodule\-mapper=|\fR\fIprogram\fR[\fB?\fR\fIident\fR]\fB \fR\fIargs...\fR" 4
  .IX Item "-fmodule-mapper=|program[?ident] args..."
! .IP \fB\-fmodule\-mapper==\fR\fIsocket\fR[\fB?\fR\fIident\fR] 4
  .IX Item "-fmodule-mapper==socket[?ident]"
! .IP \fB\-fmodule\-mapper=<>\fR[\fIinout\fR][\fB?\fR\fIident\fR] 4
  .IX Item "-fmodule-mapper=<>[inout][?ident]"
! .IP \fB\-fmodule\-mapper=<\fR\fIin\fR\fB>\fR\fIout\fR[\fB?\fR\fIident\fR] 4
  .IX Item "-fmodule-mapper=<in>out[?ident]"
! .IP \fB\-fmodule\-mapper=\fR\fIfile\fR[\fB?\fR\fIident\fR] 4
  .IX Item "-fmodule-mapper=file[?ident]"
  .PD
  An oracle to query for module name to filename mappings.  If
! unspecified the \fBCXX_MODULE_MAPPER\fR environment variable is used,
! and if that is unset, an in\-process default is provided.
! .IP \fB\-fmodule\-only\fR 4
  .IX Item "-fmodule-only"
  Only emit the Compiled Module Interface, inhibiting any object file.
! .IP \fB\-fms\-extensions\fR 4
  .IX Item "-fms-extensions"
! Disable Wpedantic warnings about constructs used in MFC, such as implicit
! int and getting a pointer to member function via non\-standard syntax.
! .IP \fB\-fnew\-inheriting\-ctors\fR 4
  .IX Item "-fnew-inheriting-ctors"
! Enable the P0136 adjustment to the semantics of C++11 constructor
! inheritance.  This is part of C++17 but also considered to be a Defect
! Report against C++11 and C++14.  This flag is enabled by default
  unless \fB\-fabi\-version=10\fR or lower is specified.
! .IP \fB\-fnew\-ttp\-matching\fR 4
  .IX Item "-fnew-ttp-matching"
  Enable the P0522 resolution to Core issue 150, template template
  parameters and default arguments: this allows a template with default
  template arguments as an argument for a template template parameter
  with fewer template parameters.  This flag is enabled by default for
  \&\fB\-std=c++17\fR.
! .IP \fB\-fno\-nonansi\-builtins\fR 4
  .IX Item "-fno-nonansi-builtins"
! Disable built\-in declarations of functions that are not mandated by
! ANSI/ISO C.  These include \f(CW\*(C`ffs\*(C'\fR, \f(CW\*(C`alloca\*(C'\fR, \f(CW\*(C`_exit\*(C'\fR,
  \&\f(CW\*(C`index\*(C'\fR, \f(CW\*(C`bzero\*(C'\fR, \f(CW\*(C`conjf\*(C'\fR, and other related functions.
! .IP \fB\-fnothrow\-opt\fR 4
  .IX Item "-fnothrow-opt"
! Treat a \f(CWthrow()\fR exception specification as if it were a
  \&\f(CW\*(C`noexcept\*(C'\fR specification to reduce or eliminate the text size
  overhead relative to a function with no exception specification.  If
! the function has local variables of types with non\-trivial
  destructors, the exception specification actually makes the
! function smaller because the EH cleanups for those variables can be
  optimized away.  The semantic effect is that an exception thrown out of
  a function with such an exception specification results in a call
  to \f(CW\*(C`terminate\*(C'\fR rather than \f(CW\*(C`unexpected\*(C'\fR.
! .IP \fB\-fno\-operator\-names\fR 4
  .IX Item "-fno-operator-names"
  Do not treat the operator name keywords \f(CW\*(C`and\*(C'\fR, \f(CW\*(C`bitand\*(C'\fR,
  \&\f(CW\*(C`bitor\*(C'\fR, \f(CW\*(C`compl\*(C'\fR, \f(CW\*(C`not\*(C'\fR, \f(CW\*(C`or\*(C'\fR and \f(CW\*(C`xor\*(C'\fR as
  synonyms as keywords.
! .IP \fB\-fno\-optional\-diags\fR 4
  .IX Item "-fno-optional-diags"
  Disable diagnostics that the standard says a compiler does not need to
  issue.  Currently, the only such diagnostic issued by G++ is the one for
  a name having multiple meanings within a class.
! .IP \fB\-fno\-pretty\-templates\fR 4
  .IX Item "-fno-pretty-templates"
  When an error message refers to a specialization of a function
  template, the compiler normally prints the signature of the
  template followed by the template arguments and any typedefs or
  typenames in the signature (e.g. \f(CW\*(C`void f(T) [with T = int]\*(C'\fR
! rather than \f(CW\*(C`void f(int)\*(C'\fR) so that it\*(Aqs clear which template is
  involved.  When an error message refers to a specialization of a class
  template, the compiler omits any template arguments that match
  the default template arguments for that template.  If either of these
  behaviors make it harder to understand the error message rather than
  easier, you can use \fB\-fno\-pretty\-templates\fR to disable them.
! .IP \fB\-frange\-for\-ext\-temps\fR 4
  .IX Item "-frange-for-ext-temps"
! Enable lifetime extension of C++ range based for temporaries.
  With \fB\-std=c++23\fR and above this is part of the language standard,
  so lifetime of the temporaries is extended until the end of the loop
  by default.  This option allows enabling that behavior also
  in earlier versions of the standard.
! .IP \fB\-fno\-rtti\fR 4
  .IX Item "-fno-rtti"
  Disable generation of information about every class with virtual
! functions for use by the C++ run\-time type identification features
! (\f(CW\*(C`dynamic_cast\*(C'\fR and \f(CW\*(C`typeid\*(C'\fR).  If you don\*(Aqt use those parts
  of the language, you can save some space by using this flag.  Note that
  exception handling uses the same information, but G++ generates it as
  needed. The \f(CW\*(C`dynamic_cast\*(C'\fR operator can still be used for casts that
! do not require run\-time type information, i.e. casts to \f(CW\*(C`void *\*(C'\fR or to
  unambiguous base classes.
  .Sp
  Mixing code compiled with \fB\-frtti\fR with that compiled with
  \&\fB\-fno\-rtti\fR may not work.  For example, programs may
  fail to link if a class compiled with \fB\-fno\-rtti\fR is used as a base
  for a class compiled with \fB\-frtti\fR.
! .IP \fB\-fsized\-deallocation\fR 4
  .IX Item "-fsized-deallocation"
! Enable the built\-in global declarations
  .Sp
  .Vb 2
  \&        void operator delete (void *, std::size_t) noexcept;
  \&        void operator delete[] (void *, std::size_t) noexcept;
  .Ve
  .Sp
! as introduced in C++14.  This is useful for user\-defined replacement
  deallocation functions that, for example, use the size of the object
  to make deallocation faster.  Enabled by default under
  \&\fB\-std=c++14\fR and above.  The flag \fB\-Wsized\-deallocation\fR
  warns about places that might want to add a definition.
! .IP \fB\-fstrict\-enums\fR 4
  .IX Item "-fstrict-enums"
  Allow the compiler to optimize using the assumption that a value of
  enumerated type can only be one of the values of the enumeration (as
! defined in the C++ standard; basically, a value that can be
  represented in the minimum number of bits needed to represent all the
  enumerators).  This assumption may not be valid if the program uses a
  cast to convert an arbitrary integer value to the enumerated type.
  This option has no effect for an enumeration type with a fixed underlying
  type.
! .IP \fB\-fstrong\-eval\-order\fR 4
  .IX Item "-fstrong-eval-order"
  .PD 0
! .IP \fB\-fstrong\-eval\-order=\fR\fIkind\fR 4
  .IX Item "-fstrong-eval-order=kind"
  .PD
  Evaluate member access, array subscripting, and shift expressions in
! left\-to\-right order, and evaluate assignment in right\-to\-left order,
! as adopted for C++17.  \fB\-fstrong\-eval\-order\fR is equivalent to
  \&\fB\-fstrong\-eval\-order=all\fR,
  and is enabled by default with \fB\-std=c++17\fR or later.
  .Sp
  \&\fB\-fstrong\-eval\-order=some\fR enables just the ordering of member
! access and shift expressions, and is the default for C++ dialects prior to
! C++17.
  .Sp
  \&\fB\-fstrong\-eval\-order=none\fR is equivalent to
  \&\fB\-fno\-strong\-eval\-order\fR.
! .IP \fB\-ftemplate\-backtrace\-limit=\fR\fIn\fR 4
  .IX Item "-ftemplate-backtrace-limit=n"
  Set the maximum number of template instantiation notes for a single
  warning or error to \fIn\fR.  The default value is 10.
! .IP \fB\-ftemplate\-depth=\fR\fIn\fR 4
  .IX Item "-ftemplate-depth=n"
  Set the maximum instantiation depth for template classes to \fIn\fR.
  A limit on the template instantiation depth is needed to detect
! endless recursions during template class instantiation.  ANSI/ISO C++
  conforming programs must not rely on a maximum depth greater than 17
! (changed to 1024 in C++11).  The default value is 900, as the compiler
  can run out of stack space before hitting 1024 in some situations.
! .IP \fB\-fno\-threadsafe\-statics\fR 4
  .IX Item "-fno-threadsafe-statics"
! Do not emit the extra code to use the routines specified in the C++
! ABI for thread\-safe initialization of local statics.  You can use this
! option to reduce code size slightly in code that doesn\*(Aqt need to be
! thread\-safe.
! .IP \fB\-fuse\-cxa\-atexit\fR 4
  .IX Item "-fuse-cxa-atexit"
  Register destructors for objects with static storage duration with the
  \&\f(CW\*(C`_\|_cxa_atexit\*(C'\fR function rather than the \f(CW\*(C`atexit\*(C'\fR function.
! This option is required for fully standards\-compliant handling of static
  destructors, but only works if your C library supports
  \&\f(CW\*(C`_\|_cxa_atexit\*(C'\fR.
! .IP \fB\-fno\-use\-cxa\-get\-exception\-ptr\fR 4
  .IX Item "-fno-use-cxa-get-exception-ptr"
! Don\*(Aqt use the \f(CW\*(C`_\|_cxa_get_exception_ptr\*(C'\fR runtime routine.  This
  causes \f(CW\*(C`std::uncaught_exception\*(C'\fR to be incorrect, but is necessary
  if the runtime routine is not available.
! .IP \fB\-fvisibility\-inlines\-hidden\fR 4
  .IX Item "-fvisibility-inlines-hidden"
  This switch declares that the user does not attempt to compare
  pointers to inline functions or methods where the addresses of the two functions
  are taken in different shared objects.
  .Sp
! The effect of this is that GCC may, effectively, mark inline methods with
  \&\f(CW\*(C`_\|_attribute_\|_ ((visibility ("hidden")))\*(C'\fR so that they do not
! appear in the export table of a DSO and do not require a PLT indirection
! when used within the DSO.  Enabling this option can have a dramatic effect
! on load and link times of a DSO as it massively reduces the size of the
  dynamic export table when the library makes heavy use of templates.
  .Sp
  The behavior of this switch is not quite the same as marking the
*************** visibility has no effect.
*** 3651,3671 ****
  .Sp
  Explicitly instantiated inline methods are unaffected by this option
  as their linkage might otherwise cross a shared library boundary.
! .IP "\fB\-fvisibility\-ms\-compat\fR" 4
  .IX Item "-fvisibility-ms-compat"
! This flag attempts to use visibility settings to make \s-1GCC\s0's \*(C+
  linkage model compatible with that of Microsoft Visual Studio.
  .Sp
! The flag makes these changes to \s-1GCC\s0's linkage model:
  .RS 4
! .IP "1." 4
  .IX Item "1."
  It sets the default visibility to \f(CW\*(C`hidden\*(C'\fR, like
  \&\fB\-fvisibility=hidden\fR.
! .IP "2." 4
  .IX Item "2."
  Types, but not their members, are not hidden by default.
! .IP "3." 4
  .IX Item "3."
  The One Definition Rule is relaxed for types without explicit
  visibility specifications that are defined in more than one
--- 3584,3604 ----
  .Sp
  Explicitly instantiated inline methods are unaffected by this option
  as their linkage might otherwise cross a shared library boundary.
! .IP \fB\-fvisibility\-ms\-compat\fR 4
  .IX Item "-fvisibility-ms-compat"
! This flag attempts to use visibility settings to make GCC\*(Aqs C++
  linkage model compatible with that of Microsoft Visual Studio.
  .Sp
! The flag makes these changes to GCC\*(Aqs linkage model:
  .RS 4
! .IP 1. 4
  .IX Item "1."
  It sets the default visibility to \f(CW\*(C`hidden\*(C'\fR, like
  \&\fB\-fvisibility=hidden\fR.
! .IP 2. 4
  .IX Item "2."
  Types, but not their members, are not hidden by default.
! .IP 3. 4
  .IX Item "3."
  The One Definition Rule is relaxed for types without explicit
  visibility specifications that are defined in more than one
*************** of the same type with the same name but
*** 3684,3720 ****
  objects are different, so changing one does not change the other;
  and that pointers to function members defined in different shared
  objects may not compare equal.  When this flag is given, it is a
! violation of the \s-1ODR\s0 to define types with the same name differently.
  .RE
! .IP "\fB\-fno\-weak\fR" 4
  .IX Item "-fno-weak"
  Do not use weak symbol support, even if it is provided by the linker.
  By default, G++ uses weak symbols if they are available.  This
! option exists only for testing, and should not be used by end-users;
  it results in inferior code and has no benefits.  This option may
  be removed in a future release of G++.
! .IP "\fB\-fext\-numeric\-literals\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-fext-numeric-literals ( and Objective- only)"
! Accept imaginary, fixed-point, or machine-defined
! literal number suffixes as \s-1GNU\s0 extensions.
  When this option is turned off these suffixes are treated
! as \*(C+11 user-defined literal numeric suffixes.
! This is on by default for all pre\-\*(C+11 dialects and all \s-1GNU\s0 dialects:
  \&\fB\-std=c++98\fR, \fB\-std=gnu++98\fR, \fB\-std=gnu++11\fR,
  \&\fB\-std=gnu++14\fR.
  This option is off by default
! for \s-1ISO \*(C+11\s0 onwards (\fB\-std=c++11\fR, ...).
! .IP "\fB\-nostdinc++\fR" 4
  .IX Item "-nostdinc++"
  Do not search for header files in the standard directories specific to
! \&\*(C+, but do still search the other standard directories.  (This option
! is used when building the \*(C+ library.)
! .IP "\fB\-flang\-info\-include\-translate\fR" 4
  .IX Item "-flang-info-include-translate"
  .PD 0
! .IP "\fB\-flang\-info\-include\-translate\-not\fR" 4
  .IX Item "-flang-info-include-translate-not"
! .IP "\fB\-flang\-info\-include\-translate=\fR\fIheader\fR" 4
  .IX Item "-flang-info-include-translate=header"
  .PD
  Inform of include translation events.  The first will note accepted
--- 3617,3653 ----
  objects are different, so changing one does not change the other;
  and that pointers to function members defined in different shared
  objects may not compare equal.  When this flag is given, it is a
! violation of the ODR to define types with the same name differently.
  .RE
! .IP \fB\-fno\-weak\fR 4
  .IX Item "-fno-weak"
  Do not use weak symbol support, even if it is provided by the linker.
  By default, G++ uses weak symbols if they are available.  This
! option exists only for testing, and should not be used by end\-users;
  it results in inferior code and has no benefits.  This option may
  be removed in a future release of G++.
! .IP "\fB\-fext\-numeric\-literals\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-fext-numeric-literals (C++ and Objective-C++ only)"
! Accept imaginary, fixed\-point, or machine\-defined
! literal number suffixes as GNU extensions.
  When this option is turned off these suffixes are treated
! as C++11 user\-defined literal numeric suffixes.
! This is on by default for all pre\-C++11 dialects and all GNU dialects:
  \&\fB\-std=c++98\fR, \fB\-std=gnu++98\fR, \fB\-std=gnu++11\fR,
  \&\fB\-std=gnu++14\fR.
  This option is off by default
! for ISO C++11 onwards (\fB\-std=c++11\fR, ...).
! .IP \fB\-nostdinc++\fR 4
  .IX Item "-nostdinc++"
  Do not search for header files in the standard directories specific to
! C++, but do still search the other standard directories.  (This option
! is used when building the C++ library.)
! .IP \fB\-flang\-info\-include\-translate\fR 4
  .IX Item "-flang-info-include-translate"
  .PD 0
! .IP \fB\-flang\-info\-include\-translate\-not\fR 4
  .IX Item "-flang-info-include-translate-not"
! .IP \fB\-flang\-info\-include\-translate=\fR\fIheader\fR 4
  .IX Item "-flang-info-include-translate=header"
  .PD
  Inform of include translation events.  The first will note accepted
*************** translations.  The \fIheader\fR form wil
*** 3723,3759 ****
  translations relating to that specific header.  If \fIheader\fR is of
  the form \f(CW"user"\fR or \f(CW\*(C`<system>\*(C'\fR it will be resolved to a
  specific user or system header using the include path.
! .IP "\fB\-flang\-info\-module\-cmi\fR" 4
  .IX Item "-flang-info-module-cmi"
  .PD 0
! .IP "\fB\-flang\-info\-module\-cmi=\fR\fImodule\fR" 4
  .IX Item "-flang-info-module-cmi=module"
  .PD
  Inform of Compiled Module Interface pathnames.  The first will note
! all read \s-1CMI\s0 pathnames.  The \fImodule\fR form will not reading a
! specific module's \s-1CMI.\s0  \fImodule\fR may be a named module or a
! header-unit (the latter indicated by either being a pathname containing
  directory separators or enclosed in \f(CW\*(C`<>\*(C'\fR or \f(CW""\fR).
! .IP "\fB\-stdlib=\fR\fIlibstdc++,libc++\fR" 4
  .IX Item "-stdlib=libstdc++,libc++"
  When G++ is configured to support this option, it allows specification of
! alternate \*(C+ runtime libraries.  Two options are available: \fIlibstdc++\fR
! (the default, native \*(C+ runtime for G++) and \fIlibc++\fR which is the
! \&\*(C+ runtime installed on some operating systems (e.g. Darwin versions from
  Darwin11 onwards).  The option switches G++ to use the headers from the
  specified library and to emit \f(CW\*(C`\-lstdc++\*(C'\fR or \f(CW\*(C`\-lc++\*(C'\fR respectively,
! when a \*(C+ runtime is required for linking.
  .PP
! In addition, these warning options have meanings only for \*(C+ programs:
! .IP "\fB\-Wabi\-tag\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wabi-tag ( and Objective- only)"
! Warn when a type with an \s-1ABI\s0 tag is used in a context that does not
! have that \s-1ABI\s0 tag.  See \fB\*(C+ Attributes\fR for more information
! about \s-1ABI\s0 tags.
! .IP "\fB\-Wcomma\-subscript\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wcomma-subscript ( and Objective- only)"
  Warn about uses of a comma expression within a subscripting expression.
! This usage was deprecated in \*(C+20 and is going to be removed in \*(C+23.
  However, a comma expression wrapped in \f(CW\*(C`( )\*(C'\fR is not deprecated.  Example:
  .Sp
  .Vb 4
--- 3656,3692 ----
  translations relating to that specific header.  If \fIheader\fR is of
  the form \f(CW"user"\fR or \f(CW\*(C`<system>\*(C'\fR it will be resolved to a
  specific user or system header using the include path.
! .IP \fB\-flang\-info\-module\-cmi\fR 4
  .IX Item "-flang-info-module-cmi"
  .PD 0
! .IP \fB\-flang\-info\-module\-cmi=\fR\fImodule\fR 4
  .IX Item "-flang-info-module-cmi=module"
  .PD
  Inform of Compiled Module Interface pathnames.  The first will note
! all read CMI pathnames.  The \fImodule\fR form will not reading a
! specific module\*(Aqs CMI.  \fImodule\fR may be a named module or a
! header\-unit (the latter indicated by either being a pathname containing
  directory separators or enclosed in \f(CW\*(C`<>\*(C'\fR or \f(CW""\fR).
! .IP \fB\-stdlib=\fR\fIlibstdc++,libc++\fR 4
  .IX Item "-stdlib=libstdc++,libc++"
  When G++ is configured to support this option, it allows specification of
! alternate C++ runtime libraries.  Two options are available: \fIlibstdc++\fR
! (the default, native C++ runtime for G++) and \fIlibc++\fR which is the
! C++ runtime installed on some operating systems (e.g. Darwin versions from
  Darwin11 onwards).  The option switches G++ to use the headers from the
  specified library and to emit \f(CW\*(C`\-lstdc++\*(C'\fR or \f(CW\*(C`\-lc++\*(C'\fR respectively,
! when a C++ runtime is required for linking.
  .PP
! In addition, these warning options have meanings only for C++ programs:
! .IP "\fB\-Wabi\-tag\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wabi-tag (C++ and Objective-C++ only)"
! Warn when a type with an ABI tag is used in a context that does not
! have that ABI tag.  See \fBC++ Attributes\fR for more information
! about ABI tags.
! .IP "\fB\-Wcomma\-subscript\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wcomma-subscript (C++ and Objective-C++ only)"
  Warn about uses of a comma expression within a subscripting expression.
! This usage was deprecated in C++20 and is going to be removed in C++23.
  However, a comma expression wrapped in \f(CW\*(C`( )\*(C'\fR is not deprecated.  Example:
  .Sp
  .Vb 4
*************** However, a comma expression wrapped in \
*** 3763,3773 ****
  \&        }
  .Ve
  .Sp
! In \*(C+23 it is valid to have comma separated expressions in a subscript
  when an overloaded subscript operator is found and supports the right
  number and types of arguments.  G++ will accept the formerly valid syntax
! for code that is not valid in \*(C+23 but used to be valid but deprecated
! in \*(C+20 with a pedantic warning that can be disabled with
  \&\fB\-Wno\-comma\-subscript\fR.
  .Sp
  Enabled by default with \fB\-std=c++20\fR unless
--- 3696,3706 ----
  \&        }
  .Ve
  .Sp
! In C++23 it is valid to have comma separated expressions in a subscript
  when an overloaded subscript operator is found and supports the right
  number and types of arguments.  G++ will accept the formerly valid syntax
! for code that is not valid in C++23 but used to be valid but deprecated
! in C++20 with a pedantic warning that can be disabled with
  \&\fB\-Wno\-comma\-subscript\fR.
  .Sp
  Enabled by default with \fB\-std=c++20\fR unless
*************** Enabled by default with \fB\-std=c++20\f
*** 3776,3790 ****
  explicit \fB\-Wdeprecated\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR in
! \&\*(C+23 mode or later.
! .IP "\fB\-Wctad\-maybe\-unsupported\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wctad-maybe-unsupported ( and Objective- only)"
! Warn when performing class template argument deduction (\s-1CTAD\s0) on a type with
  no explicitly written deduction guides.  This warning will point out cases
! where \s-1CTAD\s0 succeeded only because the compiler synthesized the implicit
  deduction guides, which might not be what the programmer intended.  Certain
! style guides allow \s-1CTAD\s0 only on types that specifically \*(L"opt-in\*(R"; i.e., on
! types that are designed to support \s-1CTAD.\s0  This warning can be suppressed with
  the following pattern:
  .Sp
  .Vb 6
--- 3709,3723 ----
  explicit \fB\-Wdeprecated\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR in
! C++23 mode or later.
! .IP "\fB\-Wctad\-maybe\-unsupported\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wctad-maybe-unsupported (C++ and Objective-C++ only)"
! Warn when performing class template argument deduction (CTAD) on a type with
  no explicitly written deduction guides.  This warning will point out cases
! where CTAD succeeded only because the compiler synthesized the implicit
  deduction guides, which might not be what the programmer intended.  Certain
! style guides allow CTAD only on types that specifically "opt\-in"; i.e., on
! types that are designed to support CTAD.  This warning can be suppressed with
  the following pattern:
  .Sp
  .Vb 6
*************** the following pattern:
*** 3795,3809 ****
  \&        // Guide with incomplete parameter type will never be considered.
  \&        S(allow_ctad_t) \-> S<void>;
  .Ve
! .IP "\fB\-Wctor\-dtor\-privacy\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wctor-dtor-privacy ( and Objective- only)"
  Warn when a class seems unusable because all the constructors or
  destructors in that class are private, and it has neither friends nor
! public static member functions.  Also warn if there are no non-private
! methods, and there's at least one private member function that isn't
  a constructor or destructor.
! .IP "\fB\-Wdangling\-reference\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wdangling-reference ( and Objective- only)"
  Warn when a reference is bound to a temporary whose lifetime has ended.
  For example:
  .Sp
--- 3728,3742 ----
  \&        // Guide with incomplete parameter type will never be considered.
  \&        S(allow_ctad_t) \-> S<void>;
  .Ve
! .IP "\fB\-Wctor\-dtor\-privacy\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wctor-dtor-privacy (C++ and Objective-C++ only)"
  Warn when a class seems unusable because all the constructors or
  destructors in that class are private, and it has neither friends nor
! public static member functions.  Also warn if there are no non\-private
! methods, and there\*(Aqs at least one private member function that isn\*(Aqt
  a constructor or destructor.
! .IP "\fB\-Wdangling\-reference\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wdangling-reference (C++ and Objective-C++ only)"
  Warn when a reference is bound to a temporary whose lifetime has ended.
  For example:
  .Sp
*************** Member functions are checked as well, bu
*** 3836,3842 ****
  .Ve
  .Sp
  Certain functions are safe in this respect, for example \f(CW\*(C`std::use_facet\*(C'\fR:
! they take and return a reference, but they don't return one of its arguments,
  which can fool the warning.  Such functions can be excluded from the warning
  by wrapping them in a \f(CW\*(C`#pragma\*(C'\fR:
  .Sp
--- 3769,3775 ----
  .Ve
  .Sp
  Certain functions are safe in this respect, for example \f(CW\*(C`std::use_facet\*(C'\fR:
! they take and return a reference, but they don\*(Aqt return one of its arguments,
  which can fool the warning.  Such functions can be excluded from the warning
  by wrapping them in a \f(CW\*(C`#pragma\*(C'\fR:
  .Sp
*************** classes of the form:
*** 3871,3902 ****
  \&        };
  .Ve
  .Sp
! as \f(CW\*(C`std::span\*(C'\fR\-like; that is, the class is a non-union class
  that has a pointer data member and a trivial destructor.
  .Sp
  The warning can be disabled by using the \f(CW\*(C`gnu::no_dangling\*(C'\fR attribute.
  .Sp
  This warning is enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wdelete\-non\-virtual\-dtor\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wdelete-non-virtual-dtor ( and Objective- only)"
  Warn when \f(CW\*(C`delete\*(C'\fR is used to destroy an instance of a class that
! has virtual functions and non-virtual destructor. It is unsafe to delete
  an instance of a derived class through a pointer to a base class if the
  base class does not have a virtual destructor.  This warning is enabled
  by \fB\-Wall\fR.
! .IP "\fB\-Wdeprecated\-copy\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wdeprecated-copy ( and Objective- only)"
  Warn that the implicit declaration of a copy constructor or copy
! assignment operator is deprecated if the class has a user-provided
! copy constructor or copy assignment operator, in \*(C+11 and up.  This
  warning is enabled by \fB\-Wextra\fR.  With
  \&\fB\-Wdeprecated\-copy\-dtor\fR, also deprecate if the class has a
! user-provided destructor.
! .IP "\fB\-Wno\-deprecated\-enum\-enum\-conversion\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-deprecated-enum-enum-conversion ( and Objective- only)"
  Disable the warning about the case when the usual arithmetic conversions
  are applied on operands where one is of enumeration type and the other is
! of a different enumeration type.  This conversion was deprecated in \*(C+20.
  For example:
  .Sp
  .Vb 3
--- 3804,3835 ----
  \&        };
  .Ve
  .Sp
! as \f(CW\*(C`std::span\*(C'\fR\-like; that is, the class is a non\-union class
  that has a pointer data member and a trivial destructor.
  .Sp
  The warning can be disabled by using the \f(CW\*(C`gnu::no_dangling\*(C'\fR attribute.
  .Sp
  This warning is enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wdelete\-non\-virtual\-dtor\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wdelete-non-virtual-dtor (C++ and Objective-C++ only)"
  Warn when \f(CW\*(C`delete\*(C'\fR is used to destroy an instance of a class that
! has virtual functions and non\-virtual destructor. It is unsafe to delete
  an instance of a derived class through a pointer to a base class if the
  base class does not have a virtual destructor.  This warning is enabled
  by \fB\-Wall\fR.
! .IP "\fB\-Wdeprecated\-copy\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wdeprecated-copy (C++ and Objective-C++ only)"
  Warn that the implicit declaration of a copy constructor or copy
! assignment operator is deprecated if the class has a user\-provided
! copy constructor or copy assignment operator, in C++11 and up.  This
  warning is enabled by \fB\-Wextra\fR.  With
  \&\fB\-Wdeprecated\-copy\-dtor\fR, also deprecate if the class has a
! user\-provided destructor.
! .IP "\fB\-Wno\-deprecated\-enum\-enum\-conversion\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-deprecated-enum-enum-conversion (C++ and Objective-C++ only)"
  Disable the warning about the case when the usual arithmetic conversions
  are applied on operands where one is of enumeration type and the other is
! of a different enumeration type.  This conversion was deprecated in C++20.
  For example:
  .Sp
  .Vb 3
*************** For example:
*** 3906,3918 ****
  .Ve
  .Sp
  \&\fB\-Wdeprecated\-enum\-enum\-conversion\fR is enabled by default with
! \&\fB\-std=c++20\fR.  In pre\-\*(C+20 dialects, this warning can be enabled
  by \fB\-Wenum\-conversion\fR or \fB\-Wdeprecated\fR.
! .IP "\fB\-Wno\-deprecated\-enum\-float\-conversion\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-deprecated-enum-float-conversion ( and Objective- only)"
  Disable the warning about the case when the usual arithmetic conversions
  are applied on operands where one is of enumeration type and the other is
! of a floating-point type.  This conversion was deprecated in \*(C+20.  For
  example:
  .Sp
  .Vb 3
--- 3839,3851 ----
  .Ve
  .Sp
  \&\fB\-Wdeprecated\-enum\-enum\-conversion\fR is enabled by default with
! \&\fB\-std=c++20\fR.  In pre\-C++20 dialects, this warning can be enabled
  by \fB\-Wenum\-conversion\fR or \fB\-Wdeprecated\fR.
! .IP "\fB\-Wno\-deprecated\-enum\-float\-conversion\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-deprecated-enum-float-conversion (C++ and Objective-C++ only)"
  Disable the warning about the case when the usual arithmetic conversions
  are applied on operands where one is of enumeration type and the other is
! of a floating\-point type.  This conversion was deprecated in C++20.  For
  example:
  .Sp
  .Vb 3
*************** example:
*** 3922,3944 ****
  .Ve
  .Sp
  \&\fB\-Wdeprecated\-enum\-float\-conversion\fR is enabled by default with
! \&\fB\-std=c++20\fR.  In pre\-\*(C+20 dialects, this warning can be enabled
  by \fB\-Wenum\-conversion\fR or \fB\-Wdeprecated\fR.
! .IP "\fB\-Wdeprecated\-literal\-operator\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wdeprecated-literal-operator ( and Objective- only)"
! Warn that the declaration of a user-defined literal operator with a
  space before the suffix is deprecated.  This warning is enabled by
! default in \*(C+23, or with explicit \fB\-Wdeprecated\fR.
  .Sp
  .Vb 2
  \&        string operator "" _i18n(const char*, std::size_t); // deprecated
  \&        string operator ""_i18n(const char*, std::size_t); // preferred
  .Ve
! .IP "\fB\-Wdeprecated\-variadic\-comma\-omission\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wdeprecated-variadic-comma-omission ( and Objective- only)"
  Warn that omitting a comma before the varargs \f(CW\*(C`...\*(C'\fR at the end of
  a function parameter list is deprecated.  This warning is enabled by
! default in \*(C+26, or with explicit \fB\-Wdeprecated\fR.
  .Sp
  .Vb 6
  \&        void f1(int...); // deprecated
--- 3855,3877 ----
  .Ve
  .Sp
  \&\fB\-Wdeprecated\-enum\-float\-conversion\fR is enabled by default with
! \&\fB\-std=c++20\fR.  In pre\-C++20 dialects, this warning can be enabled
  by \fB\-Wenum\-conversion\fR or \fB\-Wdeprecated\fR.
! .IP "\fB\-Wdeprecated\-literal\-operator\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wdeprecated-literal-operator (C++ and Objective-C++ only)"
! Warn that the declaration of a user\-defined literal operator with a
  space before the suffix is deprecated.  This warning is enabled by
! default in C++23, or with explicit \fB\-Wdeprecated\fR.
  .Sp
  .Vb 2
  \&        string operator "" _i18n(const char*, std::size_t); // deprecated
  \&        string operator ""_i18n(const char*, std::size_t); // preferred
  .Ve
! .IP "\fB\-Wdeprecated\-variadic\-comma\-omission\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wdeprecated-variadic-comma-omission (C++ and Objective-C++ only)"
  Warn that omitting a comma before the varargs \f(CW\*(C`...\*(C'\fR at the end of
  a function parameter list is deprecated.  This warning is enabled by
! default in C++26, or with explicit \fB\-Wdeprecated\fR.
  .Sp
  .Vb 6
  \&        void f1(int...); // deprecated
*************** default in \*(C+26, or with explicit \fB
*** 3948,3981 ****
  \&        template <typename ...T>
  \&        void f3(T......); // deprecated
  .Ve
! .IP "\fB\-Wno\-elaborated\-enum\-base\fR" 4
  .IX Item "-Wno-elaborated-enum-base"
! For \*(C+11 and above, warn if an (invalid) additional enum-base is used
! in an elaborated-type-specifier.  That is, if an enum with given
  underlying type and no enumerator list is used in a declaration other
  than just a standalone declaration of the enum.  Enabled by default.  This
  warning is upgraded to an error with \-pedantic\-errors.
! .IP "\fB\-Wno\-init\-list\-lifetime\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-init-list-lifetime ( and Objective- only)"
  Do not warn about uses of \f(CW\*(C`std::initializer_list\*(C'\fR that are likely
  to result in dangling pointers.  Since the underlying array for an
! \&\f(CW\*(C`initializer_list\*(C'\fR is handled like a normal \*(C+ temporary object,
  it is easy to inadvertently keep a pointer to the array past the end
! of the array's lifetime.  For example:
  .RS 4
! .IP "*" 4
  If a function returns a temporary \f(CW\*(C`initializer_list\*(C'\fR, or a local
! \&\f(CW\*(C`initializer_list\*(C'\fR variable, the array's lifetime ends at the end
  of the return statement, so the value returned has a dangling pointer.
! .IP "*" 4
! If a new-expression creates an \f(CW\*(C`initializer_list\*(C'\fR, the array only
! lives until the end of the enclosing full-expression, so the
  \&\f(CW\*(C`initializer_list\*(C'\fR in the heap has a dangling pointer.
! .IP "*" 4
  When an \f(CW\*(C`initializer_list\*(C'\fR variable is assigned from a
! brace-enclosed initializer list, the temporary array created for the
  right side of the assignment only lives until the end of the
! full-expression, so at the next statement the \f(CW\*(C`initializer_list\*(C'\fR
  variable has a dangling pointer.
  .Sp
  .Vb 6
--- 3881,3914 ----
  \&        template <typename ...T>
  \&        void f3(T......); // deprecated
  .Ve
! .IP \fB\-Wno\-elaborated\-enum\-base\fR 4
  .IX Item "-Wno-elaborated-enum-base"
! For C++11 and above, warn if an (invalid) additional enum\-base is used
! in an elaborated\-type\-specifier.  That is, if an enum with given
  underlying type and no enumerator list is used in a declaration other
  than just a standalone declaration of the enum.  Enabled by default.  This
  warning is upgraded to an error with \-pedantic\-errors.
! .IP "\fB\-Wno\-init\-list\-lifetime\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-init-list-lifetime (C++ and Objective-C++ only)"
  Do not warn about uses of \f(CW\*(C`std::initializer_list\*(C'\fR that are likely
  to result in dangling pointers.  Since the underlying array for an
! \&\f(CW\*(C`initializer_list\*(C'\fR is handled like a normal C++ temporary object,
  it is easy to inadvertently keep a pointer to the array past the end
! of the array\*(Aqs lifetime.  For example:
  .RS 4
! .IP * 4
  If a function returns a temporary \f(CW\*(C`initializer_list\*(C'\fR, or a local
! \&\f(CW\*(C`initializer_list\*(C'\fR variable, the array\*(Aqs lifetime ends at the end
  of the return statement, so the value returned has a dangling pointer.
! .IP * 4
! If a new\-expression creates an \f(CW\*(C`initializer_list\*(C'\fR, the array only
! lives until the end of the enclosing full\-expression, so the
  \&\f(CW\*(C`initializer_list\*(C'\fR in the heap has a dangling pointer.
! .IP * 4
  When an \f(CW\*(C`initializer_list\*(C'\fR variable is assigned from a
! brace\-enclosed initializer list, the temporary array created for the
  right side of the assignment only lives until the end of the
! full\-expression, so at the next statement the \f(CW\*(C`initializer_list\*(C'\fR
  variable has a dangling pointer.
  .Sp
  .Vb 6
*************** variable has a dangling pointer.
*** 3986,4013 ****
  \&        // now the temporary is gone and li has a dangling pointer
  \&        int i = li.begin()[0] // undefined behavior
  .Ve
! .IP "*" 4
  When a list constructor stores the \f(CW\*(C`begin\*(C'\fR pointer from the
! \&\f(CW\*(C`initializer_list\*(C'\fR argument, this doesn't extend the lifetime of
  the array, so if a class variable is constructed from a temporary
  \&\f(CW\*(C`initializer_list\*(C'\fR, the pointer is left dangling by the end of
  the variable declaration statement.
  .RE
  .RS 4
  .RE
! .IP "\fB\-Winvalid\-constexpr\fR" 4
  .IX Item "-Winvalid-constexpr"
! Warn when a function never produces a constant expression.  In \*(C+20
  and earlier, for every \f(CW\*(C`constexpr\*(C'\fR function and function template,
  there must be at least one set of function arguments in at least one
  instantiation such that an invocation of the function or constructor
  could be an evaluated subexpression of a core constant expression.
! \&\*(C+23 removed this restriction, so it's possible to have a function
  or a function template marked \f(CW\*(C`constexpr\*(C'\fR for which no invocation
  satisfies the requirements of a core constant expression.
  .Sp
! This warning is enabled as a pedantic warning by default in \*(C+20 and
! earlier.  In \*(C+23, \fB\-Winvalid\-constexpr\fR can be turned on, in
  which case it will be an ordinary warning.  For example:
  .Sp
  .Vb 7
--- 3919,3946 ----
  \&        // now the temporary is gone and li has a dangling pointer
  \&        int i = li.begin()[0] // undefined behavior
  .Ve
! .IP * 4
  When a list constructor stores the \f(CW\*(C`begin\*(C'\fR pointer from the
! \&\f(CW\*(C`initializer_list\*(C'\fR argument, this doesn\*(Aqt extend the lifetime of
  the array, so if a class variable is constructed from a temporary
  \&\f(CW\*(C`initializer_list\*(C'\fR, the pointer is left dangling by the end of
  the variable declaration statement.
  .RE
  .RS 4
  .RE
! .IP \fB\-Winvalid\-constexpr\fR 4
  .IX Item "-Winvalid-constexpr"
! Warn when a function never produces a constant expression.  In C++20
  and earlier, for every \f(CW\*(C`constexpr\*(C'\fR function and function template,
  there must be at least one set of function arguments in at least one
  instantiation such that an invocation of the function or constructor
  could be an evaluated subexpression of a core constant expression.
! C++23 removed this restriction, so it\*(Aqs possible to have a function
  or a function template marked \f(CW\*(C`constexpr\*(C'\fR for which no invocation
  satisfies the requirements of a core constant expression.
  .Sp
! This warning is enabled as a pedantic warning by default in C++20 and
! earlier.  In C++23, \fB\-Winvalid\-constexpr\fR can be turned on, in
  which case it will be an ordinary warning.  For example:
  .Sp
  .Vb 7
*************** which case it will be an ordinary warnin
*** 4019,4035 ****
  \&          f(i);
  \&        }
  .Ve
! .IP "\fB\-Winvalid\-imported\-macros\fR" 4
  .IX Item "-Winvalid-imported-macros"
  Verify all imported macro definitions are valid at the end of
  compilation.  This is not enabled by default, as it requires
  additional processing to determine.  It may be useful when preparing
! sets of header-units to ensure consistent macros.
! .IP "\fB\-Wno\-literal\-suffix\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-literal-suffix ( and Objective- only)"
  Do not warn when a string or character literal is followed by a
! ud-suffix which does not begin with an underscore.  As a conforming
! extension, \s-1GCC\s0 treats such suffixes as separate preprocessing tokens
  in order to maintain backwards compatibility with code that uses
  formatting macros from \f(CW\*(C`<inttypes.h>\*(C'\fR.  For example:
  .Sp
--- 3952,3968 ----
  \&          f(i);
  \&        }
  .Ve
! .IP \fB\-Winvalid\-imported\-macros\fR 4
  .IX Item "-Winvalid-imported-macros"
  Verify all imported macro definitions are valid at the end of
  compilation.  This is not enabled by default, as it requires
  additional processing to determine.  It may be useful when preparing
! sets of header\-units to ensure consistent macros.
! .IP "\fB\-Wno\-literal\-suffix\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-literal-suffix (C++ and Objective-C++ only)"
  Do not warn when a string or character literal is followed by a
! ud\-suffix which does not begin with an underscore.  As a conforming
! extension, GCC treats such suffixes as separate preprocessing tokens
  in order to maintain backwards compatibility with code that uses
  formatting macros from \f(CW\*(C`<inttypes.h>\*(C'\fR.  For example:
  .Sp
*************** formatting macros from \f(CW\*(C`<inttyp
*** 4046,4068 ****
  .Sp
  In this case, \f(CW\*(C`PRId64\*(C'\fR is treated as a separate preprocessing token.
  .Sp
! This option also controls warnings when a user-defined literal
! operator is declared with a literal suffix identifier that doesn't
! begin with an underscore. Literal suffix identifiers that don't begin
  with an underscore are reserved for future standardization.
  .Sp
  These warnings are enabled by default.
! .IP "\fB\-Wno\-narrowing\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-narrowing ( and Objective- only)"
! For \*(C+11 and later standards, narrowing conversions are diagnosed by default,
  as required by the standard.  A narrowing conversion from a constant produces
! an error, and a narrowing conversion from a non-constant produces a warning,
  but \fB\-Wno\-narrowing\fR suppresses the diagnostic.
! Note that this does not affect the meaning of well-formed code;
! narrowing conversions are still considered ill-formed in \s-1SFINAE\s0 contexts.
  .Sp
! With \fB\-Wnarrowing\fR in \*(C+98, warn when a narrowing
! conversion prohibited by \*(C+11 occurs within
  \&\fB{ }\fR, e.g.
  .Sp
  .Vb 1
--- 3979,4001 ----
  .Sp
  In this case, \f(CW\*(C`PRId64\*(C'\fR is treated as a separate preprocessing token.
  .Sp
! This option also controls warnings when a user\-defined literal
! operator is declared with a literal suffix identifier that doesn\*(Aqt
! begin with an underscore. Literal suffix identifiers that don\*(Aqt begin
  with an underscore are reserved for future standardization.
  .Sp
  These warnings are enabled by default.
! .IP "\fB\-Wno\-narrowing\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-narrowing (C++ and Objective-C++ only)"
! For C++11 and later standards, narrowing conversions are diagnosed by default,
  as required by the standard.  A narrowing conversion from a constant produces
! an error, and a narrowing conversion from a non\-constant produces a warning,
  but \fB\-Wno\-narrowing\fR suppresses the diagnostic.
! Note that this does not affect the meaning of well\-formed code;
! narrowing conversions are still considered ill\-formed in SFINAE contexts.
  .Sp
! With \fB\-Wnarrowing\fR in C++98, warn when a narrowing
! conversion prohibited by C++11 occurs within
  \&\fB{ }\fR, e.g.
  .Sp
  .Vb 1
*************** conversion prohibited by \*(C+11 occurs
*** 4070,4085 ****
  .Ve
  .Sp
  This flag is included in \fB\-Wall\fR and \fB\-Wc++11\-compat\fR.
! .IP "\fB\-Wnoexcept\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wnoexcept ( and Objective- only)"
! Warn when a noexcept-expression evaluates to false because of a call
! to a function that does not have a non-throwing exception
! specification (i.e. \f(CW\*(C`throw()\*(C'\fR or \f(CW\*(C`noexcept\*(C'\fR) but is known by
  the compiler to never throw an exception.
! .IP "\fB\-Wnoexcept\-type\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wnoexcept-type ( and Objective- only)"
! Warn if the \*(C+17 feature making \f(CW\*(C`noexcept\*(C'\fR part of a function
! type changes the mangled name of a symbol relative to \*(C+14.  Enabled
  by \fB\-Wabi\fR and \fB\-Wc++17\-compat\fR.
  .Sp
  As an example:
--- 4003,4018 ----
  .Ve
  .Sp
  This flag is included in \fB\-Wall\fR and \fB\-Wc++11\-compat\fR.
! .IP "\fB\-Wnoexcept\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wnoexcept (C++ and Objective-C++ only)"
! Warn when a noexcept\-expression evaluates to false because of a call
! to a function that does not have a non\-throwing exception
! specification (i.e. \f(CWthrow()\fR or \f(CW\*(C`noexcept\*(C'\fR) but is known by
  the compiler to never throw an exception.
! .IP "\fB\-Wnoexcept\-type\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wnoexcept-type (C++ and Objective-C++ only)"
! Warn if the C++17 feature making \f(CW\*(C`noexcept\*(C'\fR part of a function
! type changes the mangled name of a symbol relative to C++14.  Enabled
  by \fB\-Wabi\fR and \fB\-Wc++17\-compat\fR.
  .Sp
  As an example:
*************** As an example:
*** 4090,4106 ****
  \&        void h() { f(g); }
  .Ve
  .Sp
! In \*(C+14, \f(CW\*(C`f\*(C'\fR calls \f(CW\*(C`f<void(*)()>\*(C'\fR, but in
! \&\*(C+17 it calls \f(CW\*(C`f<void(*)()noexcept>\*(C'\fR.
! .IP "\fB\-Wclass\-memaccess\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wclass-memaccess ( and Objective- only)"
  Warn when the destination of a call to a raw memory function such as
  \&\f(CW\*(C`memset\*(C'\fR or \f(CW\*(C`memcpy\*(C'\fR is an object of class type, and when writing
! into such an object might bypass the class non-trivial or deleted constructor
! or copy assignment, violate const-correctness or encapsulation, or corrupt
  virtual table pointers.  Modifying the representation of such objects may
  violate invariants maintained by member functions of the class.  For example,
! the call to \f(CW\*(C`memset\*(C'\fR below is undefined because it modifies a non-trivial
  class object and is, therefore, diagnosed.  The safe way to either initialize
  or clear the storage of objects of such types is by using the appropriate
  constructor or assignment operator, if one is available.
--- 4023,4039 ----
  \&        void h() { f(g); }
  .Ve
  .Sp
! In C++14, \f(CW\*(C`f\*(C'\fR calls \f(CW\*(C`f<void(*)()>\*(C'\fR, but in
! C++17 it calls \f(CW\*(C`f<void(*)()noexcept>\*(C'\fR.
! .IP "\fB\-Wclass\-memaccess\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wclass-memaccess (C++ and Objective-C++ only)"
  Warn when the destination of a call to a raw memory function such as
  \&\f(CW\*(C`memset\*(C'\fR or \f(CW\*(C`memcpy\*(C'\fR is an object of class type, and when writing
! into such an object might bypass the class non\-trivial or deleted constructor
! or copy assignment, violate const\-correctness or encapsulation, or corrupt
  virtual table pointers.  Modifying the representation of such objects may
  violate invariants maintained by member functions of the class.  For example,
! the call to \f(CW\*(C`memset\*(C'\fR below is undefined because it modifies a non\-trivial
  class object and is, therefore, diagnosed.  The safe way to either initialize
  or clear the storage of objects of such types is by using the appropriate
  constructor or assignment operator, if one is available.
*************** The \fB\-Wclass\-memaccess\fR option is
*** 4114,4122 ****
  Explicitly casting the pointer to the class object to \f(CW\*(C`void *\*(C'\fR or
  to a type that can be safely accessed by the raw memory function suppresses
  the warning.
! .IP "\fB\-Wnon\-virtual\-dtor\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wnon-virtual-dtor ( and Objective- only)"
! Warn when a class has virtual functions and an accessible non-virtual
  destructor itself or in an accessible polymorphic base class, in which
  case it is possible but unsafe to delete an instance of a derived
  class through a pointer to the class itself or base class.  This
--- 4047,4055 ----
  Explicitly casting the pointer to the class object to \f(CW\*(C`void *\*(C'\fR or
  to a type that can be safely accessed by the raw memory function suppresses
  the warning.
! .IP "\fB\-Wnon\-virtual\-dtor\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wnon-virtual-dtor (C++ and Objective-C++ only)"
! Warn when a class has virtual functions and an accessible non\-virtual
  destructor itself or in an accessible polymorphic base class, in which
  case it is possible but unsafe to delete an instance of a derived
  class through a pointer to the class itself or base class.  This
*************** warning is automatically enabled if \fB\
*** 4124,4138 ****
  The \fB\-Wdelete\-non\-virtual\-dtor\fR option (enabled by \fB\-Wall\fR)
  should be preferred because it warns about the unsafe cases without false
  positives.
! .IP "\fB\-Wregister\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wregister ( and Objective- only)"
  Warn on uses of the \f(CW\*(C`register\*(C'\fR storage class specifier, except
! when it is part of the \s-1GNU\s0 \fBExplicit Register Variables\fR extension.
  The use of the \f(CW\*(C`register\*(C'\fR keyword as storage class specifier has
! been deprecated in \*(C+11 and removed in \*(C+17.
  Enabled by default with \fB\-std=c++17\fR.
! .IP "\fB\-Wreorder\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wreorder ( and Objective- only)"
  Warn when the order of member initializers given in the code does not
  match the order in which they must be executed.  For instance:
  .Sp
--- 4057,4071 ----
  The \fB\-Wdelete\-non\-virtual\-dtor\fR option (enabled by \fB\-Wall\fR)
  should be preferred because it warns about the unsafe cases without false
  positives.
! .IP "\fB\-Wregister\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wregister (C++ and Objective-C++ only)"
  Warn on uses of the \f(CW\*(C`register\*(C'\fR storage class specifier, except
! when it is part of the GNU \fBExplicit Register Variables\fR extension.
  The use of the \f(CW\*(C`register\*(C'\fR keyword as storage class specifier has
! been deprecated in C++11 and removed in C++17.
  Enabled by default with \fB\-std=c++17\fR.
! .IP "\fB\-Wreorder\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wreorder (C++ and Objective-C++ only)"
  Warn when the order of member initializers given in the code does not
  match the order in which they must be executed.  For instance:
  .Sp
*************** match the order in which they must be ex
*** 4147,4158 ****
  The compiler rearranges the member initializers for \f(CW\*(C`i\*(C'\fR
  and \f(CW\*(C`j\*(C'\fR to match the declaration order of the members, emitting
  a warning to that effect.  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wno\-pessimizing\-move\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-pessimizing-move ( and Objective- only)"
  This warning warns when a call to \f(CW\*(C`std::move\*(C'\fR prevents copy
  elision.  A typical scenario when copy elision can occur is when returning in
  a function with a class return type, when the expression being returned is the
! name of a non-volatile automatic object, and is not a function parameter, and
  has the same type as the function return type.
  .Sp
  .Vb 9
--- 4080,4091 ----
  The compiler rearranges the member initializers for \f(CW\*(C`i\*(C'\fR
  and \f(CW\*(C`j\*(C'\fR to match the declaration order of the members, emitting
  a warning to that effect.  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wno\-pessimizing\-move\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-pessimizing-move (C++ and Objective-C++ only)"
  This warning warns when a call to \f(CW\*(C`std::move\*(C'\fR prevents copy
  elision.  A typical scenario when copy elision can occur is when returning in
  a function with a class return type, when the expression being returned is the
! name of a non\-volatile automatic object, and is not a function parameter, and
  has the same type as the function return type.
  .Sp
  .Vb 9
*************** has the same type as the function return
*** 4170,4182 ****
  But in this example, the \f(CW\*(C`std::move\*(C'\fR call prevents copy elision.
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wno\-redundant\-move\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-redundant-move ( and Objective- only)"
  This warning warns about redundant calls to \f(CW\*(C`std::move\*(C'\fR; that is, when
  a move operation would have been performed even without the \f(CW\*(C`std::move\*(C'\fR
  call.  This happens because the compiler is forced to treat the object as if
  it were an rvalue in certain situations such as returning a local variable,
! where copy elision isn't applicable.  Consider:
  .Sp
  .Vb 8
  \&        struct T {
--- 4103,4115 ----
  But in this example, the \f(CW\*(C`std::move\*(C'\fR call prevents copy elision.
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wno\-redundant\-move\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-redundant-move (C++ and Objective-C++ only)"
  This warning warns about redundant calls to \f(CW\*(C`std::move\*(C'\fR; that is, when
  a move operation would have been performed even without the \f(CW\*(C`std::move\*(C'\fR
  call.  This happens because the compiler is forced to treat the object as if
  it were an rvalue in certain situations such as returning a local variable,
! where copy elision isn\*(Aqt applicable.  Consider:
  .Sp
  .Vb 8
  \&        struct T {
*************** Issue 1579, another example is:
*** 4207,4220 ****
  \&        }
  .Ve
  .Sp
! In this example, copy elision isn't applicable because the type of the
  expression being returned and the function return type differ, yet G++
  treats the return value as if it were designated by an rvalue.
  .Sp
  This warning is enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wrange\-loop\-construct\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wrange-loop-construct ( and Objective- only)"
! This warning warns when a \*(C+ range-based for-loop is creating an unnecessary
  copy.  This can happen when the range declaration is not a reference, but
  probably should be.  For example:
  .Sp
--- 4140,4153 ----
  \&        }
  .Ve
  .Sp
! In this example, copy elision isn\*(Aqt applicable because the type of the
  expression being returned and the function return type differ, yet G++
  treats the return value as if it were designated by an rvalue.
  .Sp
  This warning is enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wrange\-loop\-construct\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wrange-loop-construct (C++ and Objective-C++ only)"
! This warning warns when a C++ range\-based for\-loop is creating an unnecessary
  copy.  This can happen when the range declaration is not a reference, but
  probably should be.  For example:
  .Sp
*************** probably should be.  For example:
*** 4226,4235 ****
  \&        }
  .Ve
  .Sp
! It does not warn when the type being copied is a trivially-copyable type whose
  size is less than 64 bytes.
  .Sp
! This warning also warns when a loop variable in a range-based for-loop is
  initialized with a value of a different type resulting in a copy.  For example:
  .Sp
  .Vb 4
--- 4159,4168 ----
  \&        }
  .Ve
  .Sp
! It does not warn when the type being copied is a trivially\-copyable type whose
  size is less than 64 bytes.
  .Sp
! This warning also warns when a loop variable in a range\-based for\-loop is
  initialized with a value of a different type resulting in a copy.  For example:
  .Sp
  .Vb 4
*************** type \f(CW\*(C`double\*(C'\fR is created
*** 4244,4252 ****
  \&\f(CW\*(C`const double &\*(C'\fR is bound.
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wredundant\-tags\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wredundant-tags ( and Objective- only)"
! Warn about redundant class-key and enum-key in references to class types
  and enumerated types in contexts where the key can be eliminated without
  causing an ambiguity.  For example:
  .Sp
--- 4177,4185 ----
  \&\f(CW\*(C`const double &\*(C'\fR is bound.
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wredundant\-tags\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wredundant-tags (C++ and Objective-C++ only)"
! Warn about redundant class\-key and enum\-key in references to class types
  and enumerated types in contexts where the key can be eliminated without
  causing an ambiguity.  For example:
  .Sp
*************** On the other hand, in this example there
*** 4262,4341 ****
  \&        void foo ();   // "hides" struct foo
  \&        void bar (struct foo&);  // no warning, keyword struct is necessary
  .Ve
! .IP "\fB\-Wno\-subobject\-linkage\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-subobject-linkage ( and Objective- only)"
  Do not warn
  if a class type has a base or a field whose type uses the anonymous
  namespace or depends on a type with no linkage.  If a type A depends on
  a type B with no or internal linkage, defining it in multiple
! translation units would be an \s-1ODR\s0 violation because the meaning of B
  is different in each translation unit.  If A only appears in a single
  translation unit, the best way to silence the warning is to give it
  internal linkage by putting it in an anonymous namespace as well.  The
! compiler doesn't give this warning for types defined in the main .C
  file, as those are unlikely to have multiple definitions.
  \&\fB\-Wsubobject\-linkage\fR is enabled by default.
! .IP "\fB\-Weffc++\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Weffc++ ( and Objective- only)"
! Warn about violations of the following style guidelines from Scott Meyers'
! \&\fIEffective \*(C+\fR series of books:
  .RS 4
! .IP "*" 4
  Define a copy constructor and an assignment operator for classes
! with dynamically-allocated memory.
! .IP "*" 4
  Prefer initialization to assignment in constructors.
! .IP "*" 4
  Have \f(CW\*(C`operator=\*(C'\fR return a reference to \f(CW*this\fR.
! .IP "*" 4
! Don't try to return a reference when you must return an object.
! .IP "*" 4
  Distinguish between prefix and postfix forms of increment and
  decrement operators.
! .IP "*" 4
  Never overload \f(CW\*(C`&&\*(C'\fR, \f(CW\*(C`||\*(C'\fR, or \f(CW\*(C`,\*(C'\fR.
  .RE
  .RS 4
  .Sp
  This option also enables \fB\-Wnon\-virtual\-dtor\fR, which is also
! one of the effective \*(C+ recommendations.  However, the check is
  extended to warn about the lack of virtual destructor in accessible
! non-polymorphic bases classes too.
  .Sp
  When selecting this option, be aware that the standard library
  headers do not obey all of these guidelines; use \fBgrep \-v\fR
  to filter out those warnings.
  .RE
! .IP "\fB\-Wno\-exceptions\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-exceptions ( and Objective- only)"
  Disable the warning about the case when an exception handler is shadowed by
  another handler, which can point out a wrong ordering of exception handlers.
! .IP "\fB\-Wstrict\-null\-sentinel\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wstrict-null-sentinel ( and Objective- only)"
  Warn about the use of an uncasted \f(CW\*(C`NULL\*(C'\fR as sentinel.  When
! compiling only with \s-1GCC\s0 this is a valid sentinel, as \f(CW\*(C`NULL\*(C'\fR is defined
  to \f(CW\*(C`_\|_null\*(C'\fR.  Although it is a null pointer constant rather than a
  null pointer, it is guaranteed to be of the same size as a pointer.
  But this use is not portable across different compilers.
! .IP "\fB\-Wno\-non\-template\-friend\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-non-template-friend ( and Objective- only)"
! Disable warnings when non-template friend functions are declared
! within a template.  In very old versions of \s-1GCC\s0 that predate implementation
! of the \s-1ISO\s0 standard, declarations such as
! \&\fBfriend int foo(int)\fR, where the name of the friend is an unqualified-id,
  could be interpreted as a particular specialization of a template
  function; the warning exists to diagnose compatibility problems,
  and is enabled by default.
! .IP "\fB\-Wold\-style\-cast\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wold-style-cast ( and Objective- only)"
! Warn if an old-style (C\-style) cast to a non-void type is used within
! a \*(C+ program.  The new-style casts (\f(CW\*(C`dynamic_cast\*(C'\fR,
  \&\f(CW\*(C`static_cast\*(C'\fR, \f(CW\*(C`reinterpret_cast\*(C'\fR, and \f(CW\*(C`const_cast\*(C'\fR) are
  less vulnerable to unintended effects and much easier to search for.
! .IP "\fB\-Woverloaded\-virtual\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Woverloaded-virtual ( and Objective- only)"
  .PD 0
! .IP "\fB\-Woverloaded\-virtual=\fR\fIn\fR" 4
  .IX Item "-Woverloaded-virtual=n"
  .PD
  Warn when a function declaration hides virtual functions from a
--- 4195,4274 ----
  \&        void foo ();   // "hides" struct foo
  \&        void bar (struct foo&);  // no warning, keyword struct is necessary
  .Ve
! .IP "\fB\-Wno\-subobject\-linkage\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-subobject-linkage (C++ and Objective-C++ only)"
  Do not warn
  if a class type has a base or a field whose type uses the anonymous
  namespace or depends on a type with no linkage.  If a type A depends on
  a type B with no or internal linkage, defining it in multiple
! translation units would be an ODR violation because the meaning of B
  is different in each translation unit.  If A only appears in a single
  translation unit, the best way to silence the warning is to give it
  internal linkage by putting it in an anonymous namespace as well.  The
! compiler doesn\*(Aqt give this warning for types defined in the main .C
  file, as those are unlikely to have multiple definitions.
  \&\fB\-Wsubobject\-linkage\fR is enabled by default.
! .IP "\fB\-Weffc++\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Weffc++ (C++ and Objective-C++ only)"
! Warn about violations of the following style guidelines from Scott Meyers\*(Aq
! \&\fIEffective C++\fR series of books:
  .RS 4
! .IP * 4
  Define a copy constructor and an assignment operator for classes
! with dynamically\-allocated memory.
! .IP * 4
  Prefer initialization to assignment in constructors.
! .IP * 4
  Have \f(CW\*(C`operator=\*(C'\fR return a reference to \f(CW*this\fR.
! .IP * 4
! Don\*(Aqt try to return a reference when you must return an object.
! .IP * 4
  Distinguish between prefix and postfix forms of increment and
  decrement operators.
! .IP * 4
  Never overload \f(CW\*(C`&&\*(C'\fR, \f(CW\*(C`||\*(C'\fR, or \f(CW\*(C`,\*(C'\fR.
  .RE
  .RS 4
  .Sp
  This option also enables \fB\-Wnon\-virtual\-dtor\fR, which is also
! one of the effective C++ recommendations.  However, the check is
  extended to warn about the lack of virtual destructor in accessible
! non\-polymorphic bases classes too.
  .Sp
  When selecting this option, be aware that the standard library
  headers do not obey all of these guidelines; use \fBgrep \-v\fR
  to filter out those warnings.
  .RE
! .IP "\fB\-Wno\-exceptions\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-exceptions (C++ and Objective-C++ only)"
  Disable the warning about the case when an exception handler is shadowed by
  another handler, which can point out a wrong ordering of exception handlers.
! .IP "\fB\-Wstrict\-null\-sentinel\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wstrict-null-sentinel (C++ and Objective-C++ only)"
  Warn about the use of an uncasted \f(CW\*(C`NULL\*(C'\fR as sentinel.  When
! compiling only with GCC this is a valid sentinel, as \f(CW\*(C`NULL\*(C'\fR is defined
  to \f(CW\*(C`_\|_null\*(C'\fR.  Although it is a null pointer constant rather than a
  null pointer, it is guaranteed to be of the same size as a pointer.
  But this use is not portable across different compilers.
! .IP "\fB\-Wno\-non\-template\-friend\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-non-template-friend (C++ and Objective-C++ only)"
! Disable warnings when non\-template friend functions are declared
! within a template.  In very old versions of GCC that predate implementation
! of the ISO standard, declarations such as
! \&\fBfriend int foo(int)\fR, where the name of the friend is an unqualified\-id,
  could be interpreted as a particular specialization of a template
  function; the warning exists to diagnose compatibility problems,
  and is enabled by default.
! .IP "\fB\-Wold\-style\-cast\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wold-style-cast (C++ and Objective-C++ only)"
! Warn if an old\-style (C\-style) cast to a non\-void type is used within
! a C++ program.  The new\-style casts (\f(CW\*(C`dynamic_cast\*(C'\fR,
  \&\f(CW\*(C`static_cast\*(C'\fR, \f(CW\*(C`reinterpret_cast\*(C'\fR, and \f(CW\*(C`const_cast\*(C'\fR) are
  less vulnerable to unintended effects and much easier to search for.
! .IP "\fB\-Woverloaded\-virtual\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Woverloaded-virtual (C++ and Objective-C++ only)"
  .PD 0
! .IP \fB\-Woverloaded\-virtual=\fR\fIn\fR 4
  .IX Item "-Woverloaded-virtual=n"
  .PD
  Warn when a function declaration hides virtual functions from a
*************** like:
*** 4362,4369 ****
  fails to compile.
  .Sp
  In cases where the different signatures are not an accident, the
! simplest solution is to add a using-declaration to the derived class
! to un-hide the base function, e.g. add \f(CW\*(C`using A::f;\*(C'\fR to \f(CW\*(C`B\*(C'\fR.
  .Sp
  The optional level suffix controls the behavior when all the
  declarations in the derived class override virtual functions in the
--- 4295,4302 ----
  fails to compile.
  .Sp
  In cases where the different signatures are not an accident, the
! simplest solution is to add a using\-declaration to the derived class
! to un\-hide the base function, e.g. add \f(CW\*(C`using A::f;\*(C'\fR to \f(CW\*(C`B\*(C'\fR.
  .Sp
  The optional level suffix controls the behavior when all the
  declarations in the derived class override virtual functions in the
*************** for some of the overloads are fine.
*** 4387,4422 ****
  At level 1, this case does not warn; at level 2, it does.
  \&\fB\-Woverloaded\-virtual\fR by itself selects level 2.  Level 1 is
  included in \fB\-Wall\fR.
! .IP "\fB\-Wno\-pmf\-conversions\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-pmf-conversions ( and Objective- only)"
  Disable the diagnostic for converting a bound pointer to member function
  to a plain pointer.
! .IP "\fB\-Wsign\-promo\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wsign-promo ( and Objective- only)"
  Warn when overload resolution chooses a promotion from unsigned or
  enumerated type to a signed type, over a conversion to an unsigned type of
  the same size.  Previous versions of G++ tried to preserve
  unsignedness, but the standard mandates the current behavior.
! .IP "\fB\-Wtemplates\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wtemplates ( and Objective- only)"
  Warn when a primary template declaration is encountered.  Some coding
  rules disallow templates, and this may be used to enforce that rule.
! The warning is inactive inside a system header file, such as the \s-1STL,\s0 so
! one can still use the \s-1STL.\s0  One may also instantiate or specialize
  templates.
! .IP "\fB\-Wmismatched\-new\-delete\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wmismatched-new-delete ( and Objective- only)"
  Warn for mismatches between calls to \f(CW\*(C`operator new\*(C'\fR or \f(CW\*(C`operator
  delete\*(C'\fR and the corresponding call to the allocation or deallocation function.
! This includes invocations of \*(C+ \f(CW\*(C`operator delete\*(C'\fR with pointers
  returned from either mismatched forms of \f(CW\*(C`operator new\*(C'\fR, or from other
! functions that allocate objects for which the \f(CW\*(C`operator delete\*(C'\fR isn't
  a suitable deallocator, as well as calls to other deallocation functions
  with pointers returned from \f(CW\*(C`operator new\*(C'\fR for which the deallocation
! function isn't suitable.
  .Sp
  For example, the \f(CW\*(C`delete\*(C'\fR expression in the function below is diagnosed
! because it doesn't match the array form of the \f(CW\*(C`new\*(C'\fR expression
  the pointer argument was returned from.  Similarly, the call to \f(CW\*(C`free\*(C'\fR
  is also diagnosed.
  .Sp
--- 4320,4355 ----
  At level 1, this case does not warn; at level 2, it does.
  \&\fB\-Woverloaded\-virtual\fR by itself selects level 2.  Level 1 is
  included in \fB\-Wall\fR.
! .IP "\fB\-Wno\-pmf\-conversions\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-pmf-conversions (C++ and Objective-C++ only)"
  Disable the diagnostic for converting a bound pointer to member function
  to a plain pointer.
! .IP "\fB\-Wsign\-promo\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wsign-promo (C++ and Objective-C++ only)"
  Warn when overload resolution chooses a promotion from unsigned or
  enumerated type to a signed type, over a conversion to an unsigned type of
  the same size.  Previous versions of G++ tried to preserve
  unsignedness, but the standard mandates the current behavior.
! .IP "\fB\-Wtemplates\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wtemplates (C++ and Objective-C++ only)"
  Warn when a primary template declaration is encountered.  Some coding
  rules disallow templates, and this may be used to enforce that rule.
! The warning is inactive inside a system header file, such as the STL, so
! one can still use the STL.  One may also instantiate or specialize
  templates.
! .IP "\fB\-Wmismatched\-new\-delete\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wmismatched-new-delete (C++ and Objective-C++ only)"
  Warn for mismatches between calls to \f(CW\*(C`operator new\*(C'\fR or \f(CW\*(C`operator
  delete\*(C'\fR and the corresponding call to the allocation or deallocation function.
! This includes invocations of C++ \f(CW\*(C`operator delete\*(C'\fR with pointers
  returned from either mismatched forms of \f(CW\*(C`operator new\*(C'\fR, or from other
! functions that allocate objects for which the \f(CW\*(C`operator delete\*(C'\fR isn\*(Aqt
  a suitable deallocator, as well as calls to other deallocation functions
  with pointers returned from \f(CW\*(C`operator new\*(C'\fR for which the deallocation
! function isn\*(Aqt suitable.
  .Sp
  For example, the \f(CW\*(C`delete\*(C'\fR expression in the function below is diagnosed
! because it doesn\*(Aqt match the array form of the \f(CW\*(C`new\*(C'\fR expression
  the pointer argument was returned from.  Similarly, the call to \f(CW\*(C`free\*(C'\fR
  is also diagnosed.
  .Sp
*************** involving allocation and deallocation fu
*** 4436,4450 ****
  new\*(C'\fR and \f(CW\*(C`operator delete\*(C'\fR.
  .Sp
  \&\fB\-Wmismatched\-new\-delete\fR is included in \fB\-Wall\fR.
! .IP "\fB\-Wmismatched\-tags\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wmismatched-tags ( and Objective- only)"
  Warn for declarations of structs, classes, and class templates and their
! specializations with a class-key that does not match either the definition
  or the first declaration if no definition is provided.
  .Sp
  For example, the declaration of \f(CW\*(C`struct Object\*(C'\fR in the argument list
  of \f(CW\*(C`draw\*(C'\fR triggers the warning.  To avoid it, either remove the redundant
! class-key \f(CW\*(C`struct\*(C'\fR or replace it with \f(CW\*(C`class\*(C'\fR to match its definition.
  .Sp
  .Vb 5
  \&        class Object {
--- 4369,4383 ----
  new\*(C'\fR and \f(CW\*(C`operator delete\*(C'\fR.
  .Sp
  \&\fB\-Wmismatched\-new\-delete\fR is included in \fB\-Wall\fR.
! .IP "\fB\-Wmismatched\-tags\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wmismatched-tags (C++ and Objective-C++ only)"
  Warn for declarations of structs, classes, and class templates and their
! specializations with a class\-key that does not match either the definition
  or the first declaration if no definition is provided.
  .Sp
  For example, the declaration of \f(CW\*(C`struct Object\*(C'\fR in the argument list
  of \f(CW\*(C`draw\*(C'\fR triggers the warning.  To avoid it, either remove the redundant
! class\-key \f(CW\*(C`struct\*(C'\fR or replace it with \f(CW\*(C`class\*(C'\fR to match its definition.
  .Sp
  .Vb 5
  \&        class Object {
*************** class-key \f(CW\*(C`struct\*(C'\fR or re
*** 4454,4504 ****
  \&        void draw (struct Object*);
  .Ve
  .Sp
! It is not wrong to declare a class with the class-key \f(CW\*(C`struct\*(C'\fR as
  the example above shows.  The \fB\-Wmismatched\-tags\fR option is intended
  to help achieve a consistent style of class declarations.  In code that is
! intended to be portable to Windows-based compilers the warning helps prevent
  unresolved references due to the difference in the mangling of symbols
! declared with different class-keys.  The option can be used either on its
  own or in conjunction with \fB\-Wredundant\-tags\fR.
! .IP "\fB\-Wmultiple\-inheritance\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wmultiple-inheritance ( and Objective- only)"
  Warn when a class is defined with multiple direct base classes.  Some
  coding rules disallow multiple inheritance, and this may be used to
  enforce that rule.  The warning is inactive inside a system header file,
! such as the \s-1STL,\s0 so one can still use the \s-1STL.\s0  One may also define
  classes that indirectly use multiple inheritance.
! .IP "\fB\-Wvirtual\-inheritance\fR" 4
  .IX Item "-Wvirtual-inheritance"
  Warn when a class is defined with a virtual direct base class.  Some
  coding rules disallow multiple inheritance, and this may be used to
  enforce that rule.  The warning is inactive inside a system header file,
! such as the \s-1STL,\s0 so one can still use the \s-1STL.\s0  One may also define
  classes that indirectly use virtual inheritance.
! .IP "\fB\-Wno\-virtual\-move\-assign\fR" 4
  .IX Item "-Wno-virtual-move-assign"
  Suppress warnings about inheriting from a virtual base with a
! non-trivial \*(C+11 move assignment operator.  This is dangerous because
  if the virtual base is reachable along more than one path, it is
  moved multiple times, which can mean both objects end up in the
! moved-from state.  If the move assignment operator is written to avoid
! moving from a moved-from object, this warning can be disabled.
! .IP "\fB\-Wnamespaces\fR" 4
  .IX Item "-Wnamespaces"
  Warn when a namespace definition is opened.  Some coding rules disallow
  namespaces, and this may be used to enforce that rule.  The warning is
! inactive inside a system header file, such as the \s-1STL,\s0 so one can still
! use the \s-1STL.\s0  One may also use using directives and qualified names.
! .IP "\fB\-Wno\-template\-body\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-template-body ( and Objective- only)"
  Disable diagnosing errors when parsing a template, and instead issue an
  error only upon instantiation of the template.  This flag can also be
  used to downgrade such errors into warnings with \fBWno\-error=\fR or
  \&\fB\-fpermissive\fR.
! .IP "\fB\-Wno\-template\-id\-cdtor\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-template-id-cdtor ( and Objective- only)"
! Disable the warning about the use of simple-template-id as the declarator-id
! of a constructor or destructor, which became invalid in \*(C+20 via \s-1DR 2237.\s0
  For example:
  .Sp
  .Vb 4
--- 4387,4437 ----
  \&        void draw (struct Object*);
  .Ve
  .Sp
! It is not wrong to declare a class with the class\-key \f(CW\*(C`struct\*(C'\fR as
  the example above shows.  The \fB\-Wmismatched\-tags\fR option is intended
  to help achieve a consistent style of class declarations.  In code that is
! intended to be portable to Windows\-based compilers the warning helps prevent
  unresolved references due to the difference in the mangling of symbols
! declared with different class\-keys.  The option can be used either on its
  own or in conjunction with \fB\-Wredundant\-tags\fR.
! .IP "\fB\-Wmultiple\-inheritance\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wmultiple-inheritance (C++ and Objective-C++ only)"
  Warn when a class is defined with multiple direct base classes.  Some
  coding rules disallow multiple inheritance, and this may be used to
  enforce that rule.  The warning is inactive inside a system header file,
! such as the STL, so one can still use the STL.  One may also define
  classes that indirectly use multiple inheritance.
! .IP \fB\-Wvirtual\-inheritance\fR 4
  .IX Item "-Wvirtual-inheritance"
  Warn when a class is defined with a virtual direct base class.  Some
  coding rules disallow multiple inheritance, and this may be used to
  enforce that rule.  The warning is inactive inside a system header file,
! such as the STL, so one can still use the STL.  One may also define
  classes that indirectly use virtual inheritance.
! .IP \fB\-Wno\-virtual\-move\-assign\fR 4
  .IX Item "-Wno-virtual-move-assign"
  Suppress warnings about inheriting from a virtual base with a
! non\-trivial C++11 move assignment operator.  This is dangerous because
  if the virtual base is reachable along more than one path, it is
  moved multiple times, which can mean both objects end up in the
! moved\-from state.  If the move assignment operator is written to avoid
! moving from a moved\-from object, this warning can be disabled.
! .IP \fB\-Wnamespaces\fR 4
  .IX Item "-Wnamespaces"
  Warn when a namespace definition is opened.  Some coding rules disallow
  namespaces, and this may be used to enforce that rule.  The warning is
! inactive inside a system header file, such as the STL, so one can still
! use the STL.  One may also use using directives and qualified names.
! .IP "\fB\-Wno\-template\-body\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-template-body (C++ and Objective-C++ only)"
  Disable diagnosing errors when parsing a template, and instead issue an
  error only upon instantiation of the template.  This flag can also be
  used to downgrade such errors into warnings with \fBWno\-error=\fR or
  \&\fB\-fpermissive\fR.
! .IP "\fB\-Wno\-template\-id\-cdtor\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-template-id-cdtor (C++ and Objective-C++ only)"
! Disable the warning about the use of simple\-template\-id as the declarator\-id
! of a constructor or destructor, which became invalid in C++20 via DR 2237.
  For example:
  .Sp
  .Vb 4
*************** For example:
*** 4510,4522 ****
  .Sp
  \&\fB\-Wtemplate\-id\-cdtor\fR is enabled by default with
  \&\fB\-std=c++20\fR; it is also enabled by \fB\-Wc++20\-compat\fR.
! .IP "\fB\-Wtemplate\-names\-tu\-local\fR" 4
  .IX Item "-Wtemplate-names-tu-local"
! Warn when a template body hides an exposure of a translation-unit-local
! entity.  In most cases, referring to a translation-unit-local entity
  (such as an internal linkage declaration) within an entity that is
! emitted into a module's \s-1CMI\s0 is an error.  However, within the
! initializer of a variable, or in the body of a non-inline function,
  this is not an exposure and no error is emitted.
  .Sp
  This can cause variable or function templates to accidentally become
--- 4443,4455 ----
  .Sp
  \&\fB\-Wtemplate\-id\-cdtor\fR is enabled by default with
  \&\fB\-std=c++20\fR; it is also enabled by \fB\-Wc++20\-compat\fR.
! .IP \fB\-Wtemplate\-names\-tu\-local\fR 4
  .IX Item "-Wtemplate-names-tu-local"
! Warn when a template body hides an exposure of a translation\-unit\-local
! entity.  In most cases, referring to a translation\-unit\-local entity
  (such as an internal linkage declaration) within an entity that is
! emitted into a module\*(Aqs CMI is an error.  However, within the
! initializer of a variable, or in the body of a non\-inline function,
  this is not an exposure and no error is emitted.
  .Sp
  This can cause variable or function templates to accidentally become
*************** This warning attempts to detect cases wh
*** 4526,4540 ****
  The presence of an explicit instantiation silences the warning.
  .Sp
  This flag is enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wno\-terminate\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-terminate ( and Objective- only)"
! Disable the warning about a throw-expression that will immediately
  result in a call to \f(CW\*(C`terminate\*(C'\fR.
! .IP "\fB\-Wno\-vexing\-parse\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-vexing-parse ( and Objective- only)"
  Warn about the most vexing parse syntactic ambiguity.  This warns about
  the cases when a declaration looks like a variable definition, but the
! \&\*(C+ language requires it to be interpreted as a function declaration.
  For instance:
  .Sp
  .Vb 4
--- 4459,4473 ----
  The presence of an explicit instantiation silences the warning.
  .Sp
  This flag is enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wno\-terminate\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-terminate (C++ and Objective-C++ only)"
! Disable the warning about a throw\-expression that will immediately
  result in a call to \f(CW\*(C`terminate\*(C'\fR.
! .IP "\fB\-Wno\-vexing\-parse\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-vexing-parse (C++ and Objective-C++ only)"
  Warn about the most vexing parse syntactic ambiguity.  This warns about
  the cases when a declaration looks like a variable definition, but the
! C++ language requires it to be interpreted as a function declaration.
  For instance:
  .Sp
  .Vb 4
*************** The warning will suggest options how to
*** 4559,4596 ****
  it can suggest removing the parentheses or using braces instead.
  .Sp
  This warning is enabled by default.
! .IP "\fB\-Wno\-class\-conversion\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-class-conversion ( and Objective- only)"
  Do not warn when a conversion function converts an
  object to the same type, to a base class of that type, or to void; such
  a conversion function will never be called.
! .IP "\fB\-Wvolatile\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wvolatile ( and Objective- only)"
  Warn about deprecated uses of the \f(CW\*(C`volatile\*(C'\fR qualifier.  This includes
  postfix and prefix \f(CW\*(C`++\*(C'\fR and \f(CW\*(C`\-\-\*(C'\fR expressions of
  \&\f(CW\*(C`volatile\*(C'\fR\-qualified types, using simple assignments where the left
! operand is a \f(CW\*(C`volatile\*(C'\fR\-qualified non-class type for their value,
  compound assignments where the left operand is a \f(CW\*(C`volatile\*(C'\fR\-qualified
! non-class type, \f(CW\*(C`volatile\*(C'\fR\-qualified function return type,
  \&\f(CW\*(C`volatile\*(C'\fR\-qualified parameter type, and structured bindings of a
! \&\f(CW\*(C`volatile\*(C'\fR\-qualified type.  This usage was deprecated in \*(C+20.
  .Sp
  Enabled by default with \fB\-std=c++20\fR.  Before
  \&\fB\-std=c++20\fR, enabled with explicit \fB\-Wdeprecated\fR.
! .IP "\fB\-Waligned\-new\fR" 4
  .IX Item "-Waligned-new"
! Warn about a new-expression of a type that requires greater alignment
! than the \f(CW\*(C`alignof(std::max_align_t)\*(C'\fR but uses an allocation
  function without an explicit alignment parameter. This option is
  enabled by \fB\-Wall\fR.
  .Sp
  Normally this only warns about global allocation functions, but
  \&\fB\-Waligned\-new=all\fR also warns about class member allocation
  functions.
! .IP "\fB\-Wno\-placement\-new\fR" 4
  .IX Item "-Wno-placement-new"
  .PD 0
! .IP "\fB\-Wplacement\-new=\fR\fIn\fR" 4
  .IX Item "-Wplacement-new=n"
  .PD
  Warn about placement new expressions with undefined behavior, such as
--- 4492,4529 ----
  it can suggest removing the parentheses or using braces instead.
  .Sp
  This warning is enabled by default.
! .IP "\fB\-Wno\-class\-conversion\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-class-conversion (C++ and Objective-C++ only)"
  Do not warn when a conversion function converts an
  object to the same type, to a base class of that type, or to void; such
  a conversion function will never be called.
! .IP "\fB\-Wvolatile\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wvolatile (C++ and Objective-C++ only)"
  Warn about deprecated uses of the \f(CW\*(C`volatile\*(C'\fR qualifier.  This includes
  postfix and prefix \f(CW\*(C`++\*(C'\fR and \f(CW\*(C`\-\-\*(C'\fR expressions of
  \&\f(CW\*(C`volatile\*(C'\fR\-qualified types, using simple assignments where the left
! operand is a \f(CW\*(C`volatile\*(C'\fR\-qualified non\-class type for their value,
  compound assignments where the left operand is a \f(CW\*(C`volatile\*(C'\fR\-qualified
! non\-class type, \f(CW\*(C`volatile\*(C'\fR\-qualified function return type,
  \&\f(CW\*(C`volatile\*(C'\fR\-qualified parameter type, and structured bindings of a
! \&\f(CW\*(C`volatile\*(C'\fR\-qualified type.  This usage was deprecated in C++20.
  .Sp
  Enabled by default with \fB\-std=c++20\fR.  Before
  \&\fB\-std=c++20\fR, enabled with explicit \fB\-Wdeprecated\fR.
! .IP \fB\-Waligned\-new\fR 4
  .IX Item "-Waligned-new"
! Warn about a new\-expression of a type that requires greater alignment
! than the \f(CWalignof(std::max_align_t)\fR but uses an allocation
  function without an explicit alignment parameter. This option is
  enabled by \fB\-Wall\fR.
  .Sp
  Normally this only warns about global allocation functions, but
  \&\fB\-Waligned\-new=all\fR also warns about class member allocation
  functions.
! .IP \fB\-Wno\-placement\-new\fR 4
  .IX Item "-Wno-placement-new"
  .PD 0
! .IP \fB\-Wplacement\-new=\fR\fIn\fR 4
  .IX Item "-Wplacement-new=n"
  .PD
  Warn about placement new expressions with undefined behavior, such as
*************** because it attempts to construct an arra
*** 4606,4626 ****
  .Sp
  This warning is enabled by default.
  .RS 4
! .IP "\fB\-Wplacement\-new=1\fR" 4
  .IX Item "-Wplacement-new=1"
  This is the default warning level of \fB\-Wplacement\-new\fR.  At this
  level the warning is not issued for some strictly undefined constructs that
! \&\s-1GCC\s0 allows as extensions for compatibility with legacy code.  For example,
  the following \f(CW\*(C`new\*(C'\fR expression is not diagnosed at this level even
! though it has undefined behavior according to the \*(C+ standard because
! it writes past the end of the one-element array.
  .Sp
  .Vb 3
  \&        struct S { int n, a[1]; };
  \&        S *s = (S *)malloc (sizeof *s + 31 * sizeof s\->a[0]);
  \&        new (s\->a)int [32]();
  .Ve
! .IP "\fB\-Wplacement\-new=2\fR" 4
  .IX Item "-Wplacement-new=2"
  At this level, in addition to diagnosing all the same constructs as at level
  1, a diagnostic is also issued for placement new expressions that construct
--- 4539,4559 ----
  .Sp
  This warning is enabled by default.
  .RS 4
! .IP \fB\-Wplacement\-new=1\fR 4
  .IX Item "-Wplacement-new=1"
  This is the default warning level of \fB\-Wplacement\-new\fR.  At this
  level the warning is not issued for some strictly undefined constructs that
! GCC allows as extensions for compatibility with legacy code.  For example,
  the following \f(CW\*(C`new\*(C'\fR expression is not diagnosed at this level even
! though it has undefined behavior according to the C++ standard because
! it writes past the end of the one\-element array.
  .Sp
  .Vb 3
  \&        struct S { int n, a[1]; };
  \&        S *s = (S *)malloc (sizeof *s + 31 * sizeof s\->a[0]);
  \&        new (s\->a)int [32]();
  .Ve
! .IP \fB\-Wplacement\-new=2\fR 4
  .IX Item "-Wplacement-new=2"
  At this level, in addition to diagnosing all the same constructs as at level
  1, a diagnostic is also issued for placement new expressions that construct
*************** use of the flexible member array extensi
*** 4637,4647 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wcatch\-value\fR" 4
  .IX Item "-Wcatch-value"
  .PD 0
! .IP "\fB\-Wcatch\-value=\fR\fIn\fR\fB \fR(\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wcatch-value=n ( and Objective- only)"
  .PD
  Warn about catch handlers that do not catch via reference.
  With \fB\-Wcatch\-value=1\fR (or \fB\-Wcatch\-value\fR for short)
--- 4570,4580 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-Wcatch\-value\fR 4
  .IX Item "-Wcatch-value"
  .PD 0
! .IP "\fB\-Wcatch\-value=\fR\fIn\fR\fB \fR(C++ and Objective\-C++ only)" 4
! .IX Item "-Wcatch-value=n (C++ and Objective-C++ only)"
  .PD
  Warn about catch handlers that do not catch via reference.
  With \fB\-Wcatch\-value=1\fR (or \fB\-Wcatch\-value\fR for short)
*************** warn about polymorphic class types that
*** 4649,4672 ****
  With \fB\-Wcatch\-value=2\fR warn about all class types that are caught
  by value. With \fB\-Wcatch\-value=3\fR warn about all types that are
  not caught by reference. \fB\-Wcatch\-value\fR is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wconditionally\-supported\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wconditionally-supported ( and Objective- only)"
! Warn for conditionally-supported (\*(C+11 [intro.defs]) constructs.
! .IP "\fB\-Wno\-defaulted\-function\-deleted\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-defaulted-function-deleted ( and Objective- only)"
  Warn when an explicitly defaulted function is deleted by the compiler.
! That can occur when the function's declared type does not match the type
  of the function that would have been implicitly declared.  This warning
  is enabled by default.
! .IP "\fB\-Wno\-delete\-incomplete\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-delete-incomplete ( and Objective- only)"
  Do not warn when deleting a pointer to incomplete type, which may cause
  undefined behavior at runtime.  This warning is enabled by default.
! .IP "\fB\-Wextra\-semi\fR (\*(C+, Objective\-\*(C+ only)" 4
! .IX Item "-Wextra-semi (, Objective- only)"
  Warn about redundant semicolons.  There are various contexts in which an extra
! semicolon can occur.  One is a semicolon after in-class function definitions,
! which is valid in all \*(C+ dialects (and is never a pedwarn):
  .Sp
  .Vb 3
  \&        struct S {
--- 4582,4605 ----
  With \fB\-Wcatch\-value=2\fR warn about all class types that are caught
  by value. With \fB\-Wcatch\-value=3\fR warn about all types that are
  not caught by reference. \fB\-Wcatch\-value\fR is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wconditionally\-supported\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wconditionally-supported (C++ and Objective-C++ only)"
! Warn for conditionally\-supported (C++11 [intro.defs]) constructs.
! .IP "\fB\-Wno\-defaulted\-function\-deleted\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-defaulted-function-deleted (C++ and Objective-C++ only)"
  Warn when an explicitly defaulted function is deleted by the compiler.
! That can occur when the function\*(Aqs declared type does not match the type
  of the function that would have been implicitly declared.  This warning
  is enabled by default.
! .IP "\fB\-Wno\-delete\-incomplete\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-delete-incomplete (C++ and Objective-C++ only)"
  Do not warn when deleting a pointer to incomplete type, which may cause
  undefined behavior at runtime.  This warning is enabled by default.
! .IP "\fB\-Wextra\-semi\fR (C++, Objective\-C++ only)" 4
! .IX Item "-Wextra-semi (C++, Objective-C++ only)"
  Warn about redundant semicolons.  There are various contexts in which an extra
! semicolon can occur.  One is a semicolon after in\-class function definitions,
! which is valid in all C++ dialects (and is never a pedwarn):
  .Sp
  .Vb 3
  \&        struct S {
*************** which is valid in all \*(C+ dialects (an
*** 4675,4681 ****
  .Ve
  .Sp
  Another is an extra semicolon at namespace scope, which has been allowed
! since \*(C+11 (therefore is a pedwarn in \*(C+98):
  .Sp
  .Vb 3
  \&        struct S {
--- 4608,4614 ----
  .Ve
  .Sp
  Another is an extra semicolon at namespace scope, which has been allowed
! since C++11 (therefore is a pedwarn in C++98):
  .Sp
  .Vb 3
  \&        struct S {
*************** since \*(C+11 (therefore is a pedwarn in
*** 4684,4690 ****
  .Ve
  .Sp
  And yet another is an extra semicolon in class definitions, which has been
! allowed since \*(C+11 (therefore is a pedwarn in \*(C+98):
  .Sp
  .Vb 4
  \&        struct S {
--- 4617,4623 ----
  .Ve
  .Sp
  And yet another is an extra semicolon in class definitions, which has been
! allowed since C++11 (therefore is a pedwarn in C++98):
  .Sp
  .Vb 4
  \&        struct S {
*************** allowed since \*(C+11 (therefore is a pe
*** 4692,4703 ****
  \&          ;
  \&        };
  .Ve
! .IP "\fB\-Wno\-global\-module\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-global-module ( and Objective- only)"
  Disable the diagnostic for when the global module fragment of a module
  unit does not consist only of preprocessor directives.
! .IP "\fB\-Wno\-inaccessible\-base\fR (\*(C+, Objective\-\*(C+ only)" 4
! .IX Item "-Wno-inaccessible-base (, Objective- only)"
  This option controls warnings
  when a base class is inaccessible in a class derived from it due to
  ambiguity.  The warning is enabled by default.
--- 4625,4636 ----
  \&          ;
  \&        };
  .Ve
! .IP "\fB\-Wno\-global\-module\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-global-module (C++ and Objective-C++ only)"
  Disable the diagnostic for when the global module fragment of a module
  unit does not consist only of preprocessor directives.
! .IP "\fB\-Wno\-inaccessible\-base\fR (C++, Objective\-C++ only)" 4
! .IX Item "-Wno-inaccessible-base (C++, Objective-C++ only)"
  This option controls warnings
  when a base class is inaccessible in a class derived from it due to
  ambiguity.  The warning is enabled by default.
*************** bases is enabled by the \fB\-Wextra\fR o
*** 4711,4735 ****
  \&        
  \&        struct C : B, A { };
  .Ve
! .IP "\fB\-Wno\-inherited\-variadic\-ctor\fR" 4
  .IX Item "-Wno-inherited-variadic-ctor"
! Suppress warnings about use of \*(C+11 inheriting constructors when the
  base class inherited from has a C variadic constructor; the warning is
  on by default because the ellipsis is not inherited.
! .IP "\fB\-Wno\-invalid\-offsetof\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-invalid-offsetof ( and Objective- only)"
! Suppress warnings from applying the \f(CW\*(C`offsetof\*(C'\fR macro to a non-POD
! type.  According to the 2014 \s-1ISO \*(C+\s0 standard, applying \f(CW\*(C`offsetof\*(C'\fR
! to a non-standard-layout type is undefined.  In existing \*(C+ implementations,
  however, \f(CW\*(C`offsetof\*(C'\fR typically gives meaningful results.
  This flag is for users who are aware that they are
  writing nonportable code and who have deliberately chosen to ignore the
  warning about it.
  .Sp
  The restrictions on \f(CW\*(C`offsetof\*(C'\fR may be relaxed in a future version
! of the \*(C+ standard.
! .IP "\fB\-Wsized\-deallocation\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wsized-deallocation ( and Objective- only)"
  Warn about a definition of an unsized deallocation function
  .Sp
  .Vb 2
--- 4644,4668 ----
  \&        
  \&        struct C : B, A { };
  .Ve
! .IP \fB\-Wno\-inherited\-variadic\-ctor\fR 4
  .IX Item "-Wno-inherited-variadic-ctor"
! Suppress warnings about use of C++11 inheriting constructors when the
  base class inherited from has a C variadic constructor; the warning is
  on by default because the ellipsis is not inherited.
! .IP "\fB\-Wno\-invalid\-offsetof\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-invalid-offsetof (C++ and Objective-C++ only)"
! Suppress warnings from applying the \f(CW\*(C`offsetof\*(C'\fR macro to a non\-POD
! type.  According to the 2014 ISO C++ standard, applying \f(CW\*(C`offsetof\*(C'\fR
! to a non\-standard\-layout type is undefined.  In existing C++ implementations,
  however, \f(CW\*(C`offsetof\*(C'\fR typically gives meaningful results.
  This flag is for users who are aware that they are
  writing nonportable code and who have deliberately chosen to ignore the
  warning about it.
  .Sp
  The restrictions on \f(CW\*(C`offsetof\*(C'\fR may be relaxed in a future version
! of the C++ standard.
! .IP "\fB\-Wsized\-deallocation\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wsized-deallocation (C++ and Objective-C++ only)"
  Warn about a definition of an unsized deallocation function
  .Sp
  .Vb 2
*************** without a definition of the correspondin
*** 4746,4788 ****
  .Sp
  or vice versa.  Enabled by \fB\-Wextra\fR along with
  \&\fB\-fsized\-deallocation\fR.
! .IP "\fB\-Wsuggest\-final\-types\fR" 4
  .IX Item "-Wsuggest-final-types"
  Warn about types with virtual methods where code quality would be improved
! if the type were declared with the \*(C+11 \f(CW\*(C`final\*(C'\fR specifier,
  or, if possible,
! declared in an anonymous namespace. This allows \s-1GCC\s0 to more aggressively
  devirtualize the polymorphic calls. This warning is more effective with
! link-time optimization,
  where the information about the class hierarchy graph is
  more complete.
! .IP "\fB\-Wsuggest\-final\-methods\fR" 4
  .IX Item "-Wsuggest-final-methods"
  Warn about virtual methods where code quality would be improved if the method
! were declared with the \*(C+11 \f(CW\*(C`final\*(C'\fR specifier,
  or, if possible, its type were
  declared in an anonymous namespace or with the \f(CW\*(C`final\*(C'\fR specifier.
  This warning is
! more effective with link-time optimization, where the information about the
  class hierarchy graph is more complete. It is recommended to first consider
  suggestions of \fB\-Wsuggest\-final\-types\fR and then rebuild with new
  annotations.
! .IP "\fB\-Wsuggest\-override\fR" 4
  .IX Item "-Wsuggest-override"
  Warn about overriding virtual functions that are not marked with the
  \&\f(CW\*(C`override\*(C'\fR keyword.
! .IP "\fB\-Wno\-conversion\-null\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-conversion-null ( and Objective- only)"
! Do not warn for conversions between \f(CW\*(C`NULL\*(C'\fR and non-pointer
  types. \fB\-Wconversion\-null\fR is enabled by default.
! .SS "Options Controlling Objective-C and Objective\-\*(C+ Dialects"
! .IX Subsection "Options Controlling Objective-C and Objective- Dialects"
! (\s-1NOTE:\s0 This manual does not describe the Objective-C and Objective\-\*(C+
  languages themselves.
  .PP
! This section describes the command-line options that are only meaningful
! for Objective-C and Objective\-\*(C+ programs.  You can also use most of
! the language-independent \s-1GNU\s0 compiler options.
  For example, you might compile a file \fIsome_class.m\fR like this:
  .PP
  .Vb 1
--- 4679,4721 ----
  .Sp
  or vice versa.  Enabled by \fB\-Wextra\fR along with
  \&\fB\-fsized\-deallocation\fR.
! .IP \fB\-Wsuggest\-final\-types\fR 4
  .IX Item "-Wsuggest-final-types"
  Warn about types with virtual methods where code quality would be improved
! if the type were declared with the C++11 \f(CW\*(C`final\*(C'\fR specifier,
  or, if possible,
! declared in an anonymous namespace. This allows GCC to more aggressively
  devirtualize the polymorphic calls. This warning is more effective with
! link\-time optimization,
  where the information about the class hierarchy graph is
  more complete.
! .IP \fB\-Wsuggest\-final\-methods\fR 4
  .IX Item "-Wsuggest-final-methods"
  Warn about virtual methods where code quality would be improved if the method
! were declared with the C++11 \f(CW\*(C`final\*(C'\fR specifier,
  or, if possible, its type were
  declared in an anonymous namespace or with the \f(CW\*(C`final\*(C'\fR specifier.
  This warning is
! more effective with link\-time optimization, where the information about the
  class hierarchy graph is more complete. It is recommended to first consider
  suggestions of \fB\-Wsuggest\-final\-types\fR and then rebuild with new
  annotations.
! .IP \fB\-Wsuggest\-override\fR 4
  .IX Item "-Wsuggest-override"
  Warn about overriding virtual functions that are not marked with the
  \&\f(CW\*(C`override\*(C'\fR keyword.
! .IP "\fB\-Wno\-conversion\-null\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-conversion-null (C++ and Objective-C++ only)"
! Do not warn for conversions between \f(CW\*(C`NULL\*(C'\fR and non\-pointer
  types. \fB\-Wconversion\-null\fR is enabled by default.
! .SS "Options Controlling Objective\-C and Objective\-C++ Dialects"
! .IX Subsection "Options Controlling Objective-C and Objective-C++ Dialects"
! (NOTE: This manual does not describe the Objective\-C and Objective\-C++
  languages themselves.
  .PP
! This section describes the command\-line options that are only meaningful
! for Objective\-C and Objective\-C++ programs.  You can also use most of
! the language\-independent GNU compiler options.
  For example, you might compile a file \fIsome_class.m\fR like this:
  .PP
  .Vb 1
*************** For example, you might compile a file \f
*** 4790,4953 ****
  .Ve
  .PP
  In this example, \fB\-fgnu\-runtime\fR is an option meant only for
! Objective-C and Objective\-\*(C+ programs; you can use the other options with
! any language supported by \s-1GCC.\s0
  .PP
! Note that since Objective-C is an extension of the C language, Objective-C
! compilations may also use options specific to the C front-end (e.g.,
! \&\fB\-Wtraditional\fR).  Similarly, Objective\-\*(C+ compilations may use
! \&\*(C+\-specific options (e.g., \fB\-Wabi\fR).
  .PP
! Here is a list of options that are \fIonly\fR for compiling Objective-C
! and Objective\-\*(C+ programs:
! .IP "\fB\-fconstant\-string\-class=\fR\fIclass-name\fR" 4
  .IX Item "-fconstant-string-class=class-name"
! Use \fIclass-name\fR as the name of the class to instantiate for each
  literal string specified with the syntax \f(CW\*(C`@"..."\*(C'\fR.  The default
! class name is \f(CW\*(C`NXConstantString\*(C'\fR if the \s-1GNU\s0 runtime is being used, and
  \&\f(CW\*(C`NSConstantString\*(C'\fR if the NeXT runtime is being used (see below).  On
  Darwin / macOS platforms, the \fB\-fconstant\-cfstrings\fR option, if
  also present, overrides the \fB\-fconstant\-string\-class\fR setting and cause
  \&\f(CW\*(C`@"..."\*(C'\fR literals to be laid out as constant CoreFoundation strings.
! Note that \fB\-fconstant\-cfstrings\fR is an alias for the target-specific
  \&\fB\-mconstant\-cfstrings\fR equivalent.
! .IP "\fB\-fgnu\-runtime\fR" 4
  .IX Item "-fgnu-runtime"
! Generate object code compatible with the standard \s-1GNU\s0 Objective-C
  runtime.  This is the default for most types of systems.
! .IP "\fB\-fnext\-runtime\fR" 4
  .IX Item "-fnext-runtime"
  Generate output compatible with the NeXT runtime.  This is the default
! for NeXT-based systems, including Darwin / macOS.  The macro
  \&\f(CW\*(C`_\|_NEXT_RUNTIME_\|_\*(C'\fR is predefined if (and only if) this option is
  used.
! .IP "\fB\-fno\-nil\-receivers\fR" 4
  .IX Item "-fno-nil-receivers"
! Assume that all Objective-C message dispatches (\f(CW\*(C`[receiver
  message:arg]\*(C'\fR) in this translation unit ensure that the receiver is
  not \f(CW\*(C`nil\*(C'\fR.  This allows for more efficient entry points in the
  runtime to be used.  This option is only available in conjunction with
! the NeXT runtime and \s-1ABI\s0 version 0 or 1.
! .IP "\fB\-fobjc\-abi\-version=\fR\fIn\fR" 4
  .IX Item "-fobjc-abi-version=n"
! Use version \fIn\fR of the Objective-C \s-1ABI\s0 for the selected runtime.
  This option is currently supported only for the NeXT runtime.  In that
! case, Version 0 is the traditional (32\-bit) \s-1ABI\s0 without support for
! properties and other Objective-C 2.0 additions.  Version 1 is the
! traditional (32\-bit) \s-1ABI\s0 with support for properties and other
! Objective-C 2.0 additions.  Version 2 is the modern (64\-bit) \s-1ABI.\s0  If
  nothing is specified, the default is Version 0 on 32\-bit target
  machines, and Version 2 on 64\-bit target machines.
! .IP "\fB\-fobjc\-call\-cxx\-cdtors\fR" 4
  .IX Item "-fobjc-call-cxx-cdtors"
! For each Objective-C class, check if any of its instance variables is a
! \&\*(C+ object with a non-trivial default constructor.  If so, synthesize a
  special \f(CW\*(C`\- (id) .cxx_construct\*(C'\fR instance method which runs
! non-trivial default constructors on any such instance variables, in order,
  and then return \f(CW\*(C`self\*(C'\fR.  Similarly, check if any instance variable
! is a \*(C+ object with a non-trivial destructor, and if so, synthesize a
  special \f(CW\*(C`\- (void) .cxx_destruct\*(C'\fR method which runs
  all such default destructors, in reverse order.
  .Sp
  The \f(CW\*(C`\- (id) .cxx_construct\*(C'\fR and \f(CW\*(C`\- (void) .cxx_destruct\*(C'\fR
  methods thusly generated only operate on instance variables
! declared in the current Objective-C class, and not those inherited
! from superclasses.  It is the responsibility of the Objective-C
! runtime to invoke all such methods in an object's inheritance
  hierarchy.  The \f(CW\*(C`\- (id) .cxx_construct\*(C'\fR methods are invoked
  by the runtime immediately after a new object instance is allocated;
  the \f(CW\*(C`\- (void) .cxx_destruct\*(C'\fR methods are invoked immediately
  before the runtime deallocates an object instance.
  .Sp
! As of this writing, only the NeXT runtime on Mac \s-1OS X 10.4\s0 and later has
  support for invoking the \f(CW\*(C`\- (id) .cxx_construct\*(C'\fR and
  \&\f(CW\*(C`\- (void) .cxx_destruct\*(C'\fR methods.
! .IP "\fB\-fobjc\-direct\-dispatch\fR" 4
  .IX Item "-fobjc-direct-dispatch"
  Allow fast jumps to the message dispatcher.  On Darwin this is
  accomplished via the comm page.
! .IP "\fB\-fobjc\-exceptions\fR" 4
  .IX Item "-fobjc-exceptions"
  Enable syntactic support for structured exception handling in
! Objective-C, similar to what is offered by \*(C+.  This option
! is required to use the Objective-C keywords \f(CW@try\fR,
  \&\f(CW@throw\fR, \f(CW@catch\fR, \f(CW@finally\fR and
! \&\f(CW@synchronized\fR.  This option is available with both the \s-1GNU\s0
  runtime and the NeXT runtime (but not available in conjunction with
! the NeXT runtime on Mac \s-1OS X 10.2\s0 and earlier).
! .IP "\fB\-fobjc\-gc\fR" 4
  .IX Item "-fobjc-gc"
! Enable garbage collection (\s-1GC\s0) in Objective-C and Objective\-\*(C+
  programs.  This option is only available with the NeXT runtime; the
! \&\s-1GNU\s0 runtime has a different garbage collection implementation that
  does not require special compiler flags.
! .IP "\fB\-fobjc\-nilcheck\fR" 4
  .IX Item "-fobjc-nilcheck"
! For the NeXT runtime with version 2 of the \s-1ABI,\s0 check for a nil
  receiver in method invocations before doing the actual method call.
  This is the default and can be disabled using
  \&\fB\-fno\-objc\-nilcheck\fR.  Class methods and super calls are never
  checked for nil in this way no matter what this flag is set to.
! Currently this flag does nothing when the \s-1GNU\s0 runtime, or an older
! version of the NeXT runtime \s-1ABI,\s0 is used.
! .IP "\fB\-fobjc\-std=objc1\fR" 4
  .IX Item "-fobjc-std=objc1"
! Conform to the language syntax of Objective-C 1.0, the language
! recognized by \s-1GCC 4.0.\s0  This only affects the Objective-C additions to
! the C/\*(C+ language; it does not affect conformance to C/\*(C+ standards,
! which is controlled by the separate C/\*(C+ dialect option flags.  When
! this option is used with the Objective-C or Objective\-\*(C+ compiler,
! any Objective-C syntax that is not recognized by \s-1GCC 4.0\s0 is rejected.
! This is useful if you need to make sure that your Objective-C code can
! be compiled with older versions of \s-1GCC.\s0
! .IP "\fB\-freplace\-objc\-classes\fR" 4
  .IX Item "-freplace-objc-classes"
! Emit a special marker instructing \fB\f(BIld\fB\|(1)\fR not to statically link in
! the resulting object file, and allow \fB\f(BIdyld\fB\|(1)\fR to load it in at
! run time instead.  This is used in conjunction with the Fix-and-Continue
  debugging mode, where the object file in question may be recompiled and
  dynamically reloaded in the course of program execution, without the need
! to restart the program itself.  Currently, Fix-and-Continue functionality
! is only available in conjunction with the NeXT runtime on Mac \s-1OS X 10.3\s0
  and later.
! .IP "\fB\-fzero\-link\fR" 4
  .IX Item "-fzero-link"
  When compiling for the NeXT runtime, the compiler ordinarily replaces calls
! to \f(CW\*(C`objc_getClass("...")\*(C'\fR (when the name of the class is known at
  compile time) with static class references that get initialized at load time,
! which improves run-time performance.  Specifying the \fB\-fzero\-link\fR flag
! suppresses this behavior and causes calls to \f(CW\*(C`objc_getClass("...")\*(C'\fR
! to be retained.  This is useful in Zero-Link debugging mode, since it allows
  for individual class implementations to be modified during program execution.
! The \s-1GNU\s0 runtime currently always retains calls to \f(CW\*(C`objc_get_class("...")\*(C'\fR
! regardless of command-line options.
! .IP "\fB\-fno\-local\-ivars\fR" 4
  .IX Item "-fno-local-ivars"
! By default instance variables in Objective-C can be accessed as if
! they were local variables from within the methods of the class they're
  declared in.  This can lead to shadowing between instance variables
  and other variables declared either locally inside a class method or
  globally with the same name.  Specifying the \fB\-fno\-local\-ivars\fR
  flag disables this behavior thus avoiding variable shadowing issues.
! .IP "\fB\-fivar\-visibility=\fR[\fBpublic\fR|\fBprotected\fR|\fBprivate\fR|\fBpackage\fR]" 4
  .IX Item "-fivar-visibility=[public|protected|private|package]"
  Set the default instance variable visibility to the specified option
  so that instance variables declared outside the scope of any access
  modifier directives default to the specified visibility.
! .IP "\fB\-gen\-decls\fR" 4
  .IX Item "-gen-decls"
  Dump interface declarations for all classes seen in the source file to a
! file named \fI\fIsourcename\fI.decl\fR.
! .IP "\fB\-Wassign\-intercept\fR (Objective-C and Objective\-\*(C+ only)" 4
! .IX Item "-Wassign-intercept (Objective-C and Objective- only)"
! Warn whenever an Objective-C assignment is being intercepted by the
  garbage collector.
! .IP "\fB\-Wno\-property\-assign\-default\fR (Objective-C and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-property-assign-default (Objective-C and Objective- only)"
! Do not warn if a property for an Objective-C object has no assign
  semantics specified.
! .IP "\fB\-Wno\-protocol\fR (Objective-C and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-protocol (Objective-C and Objective- only)"
  If a class is declared to implement a protocol, a warning is issued for
  every method in the protocol that is not implemented by the class.  The
  default behavior is to issue a warning for every method not explicitly
--- 4723,4886 ----
  .Ve
  .PP
  In this example, \fB\-fgnu\-runtime\fR is an option meant only for
! Objective\-C and Objective\-C++ programs; you can use the other options with
! any language supported by GCC.
  .PP
! Note that since Objective\-C is an extension of the C language, Objective\-C
! compilations may also use options specific to the C front\-end (e.g.,
! \&\fB\-Wtraditional\fR).  Similarly, Objective\-C++ compilations may use
! C++\-specific options (e.g., \fB\-Wabi\fR).
  .PP
! Here is a list of options that are \fIonly\fR for compiling Objective\-C
! and Objective\-C++ programs:
! .IP \fB\-fconstant\-string\-class=\fR\fIclass\-name\fR 4
  .IX Item "-fconstant-string-class=class-name"
! Use \fIclass\-name\fR as the name of the class to instantiate for each
  literal string specified with the syntax \f(CW\*(C`@"..."\*(C'\fR.  The default
! class name is \f(CW\*(C`NXConstantString\*(C'\fR if the GNU runtime is being used, and
  \&\f(CW\*(C`NSConstantString\*(C'\fR if the NeXT runtime is being used (see below).  On
  Darwin / macOS platforms, the \fB\-fconstant\-cfstrings\fR option, if
  also present, overrides the \fB\-fconstant\-string\-class\fR setting and cause
  \&\f(CW\*(C`@"..."\*(C'\fR literals to be laid out as constant CoreFoundation strings.
! Note that \fB\-fconstant\-cfstrings\fR is an alias for the target\-specific
  \&\fB\-mconstant\-cfstrings\fR equivalent.
! .IP \fB\-fgnu\-runtime\fR 4
  .IX Item "-fgnu-runtime"
! Generate object code compatible with the standard GNU Objective\-C
  runtime.  This is the default for most types of systems.
! .IP \fB\-fnext\-runtime\fR 4
  .IX Item "-fnext-runtime"
  Generate output compatible with the NeXT runtime.  This is the default
! for NeXT\-based systems, including Darwin / macOS.  The macro
  \&\f(CW\*(C`_\|_NEXT_RUNTIME_\|_\*(C'\fR is predefined if (and only if) this option is
  used.
! .IP \fB\-fno\-nil\-receivers\fR 4
  .IX Item "-fno-nil-receivers"
! Assume that all Objective\-C message dispatches (\f(CW\*(C`[receiver
  message:arg]\*(C'\fR) in this translation unit ensure that the receiver is
  not \f(CW\*(C`nil\*(C'\fR.  This allows for more efficient entry points in the
  runtime to be used.  This option is only available in conjunction with
! the NeXT runtime and ABI version 0 or 1.
! .IP \fB\-fobjc\-abi\-version=\fR\fIn\fR 4
  .IX Item "-fobjc-abi-version=n"
! Use version \fIn\fR of the Objective\-C ABI for the selected runtime.
  This option is currently supported only for the NeXT runtime.  In that
! case, Version 0 is the traditional (32\-bit) ABI without support for
! properties and other Objective\-C 2.0 additions.  Version 1 is the
! traditional (32\-bit) ABI with support for properties and other
! Objective\-C 2.0 additions.  Version 2 is the modern (64\-bit) ABI.  If
  nothing is specified, the default is Version 0 on 32\-bit target
  machines, and Version 2 on 64\-bit target machines.
! .IP \fB\-fobjc\-call\-cxx\-cdtors\fR 4
  .IX Item "-fobjc-call-cxx-cdtors"
! For each Objective\-C class, check if any of its instance variables is a
! C++ object with a non\-trivial default constructor.  If so, synthesize a
  special \f(CW\*(C`\- (id) .cxx_construct\*(C'\fR instance method which runs
! non\-trivial default constructors on any such instance variables, in order,
  and then return \f(CW\*(C`self\*(C'\fR.  Similarly, check if any instance variable
! is a C++ object with a non\-trivial destructor, and if so, synthesize a
  special \f(CW\*(C`\- (void) .cxx_destruct\*(C'\fR method which runs
  all such default destructors, in reverse order.
  .Sp
  The \f(CW\*(C`\- (id) .cxx_construct\*(C'\fR and \f(CW\*(C`\- (void) .cxx_destruct\*(C'\fR
  methods thusly generated only operate on instance variables
! declared in the current Objective\-C class, and not those inherited
! from superclasses.  It is the responsibility of the Objective\-C
! runtime to invoke all such methods in an object\*(Aqs inheritance
  hierarchy.  The \f(CW\*(C`\- (id) .cxx_construct\*(C'\fR methods are invoked
  by the runtime immediately after a new object instance is allocated;
  the \f(CW\*(C`\- (void) .cxx_destruct\*(C'\fR methods are invoked immediately
  before the runtime deallocates an object instance.
  .Sp
! As of this writing, only the NeXT runtime on Mac OS X 10.4 and later has
  support for invoking the \f(CW\*(C`\- (id) .cxx_construct\*(C'\fR and
  \&\f(CW\*(C`\- (void) .cxx_destruct\*(C'\fR methods.
! .IP \fB\-fobjc\-direct\-dispatch\fR 4
  .IX Item "-fobjc-direct-dispatch"
  Allow fast jumps to the message dispatcher.  On Darwin this is
  accomplished via the comm page.
! .IP \fB\-fobjc\-exceptions\fR 4
  .IX Item "-fobjc-exceptions"
  Enable syntactic support for structured exception handling in
! Objective\-C, similar to what is offered by C++.  This option
! is required to use the Objective\-C keywords \f(CW@try\fR,
  \&\f(CW@throw\fR, \f(CW@catch\fR, \f(CW@finally\fR and
! \&\f(CW@synchronized\fR.  This option is available with both the GNU
  runtime and the NeXT runtime (but not available in conjunction with
! the NeXT runtime on Mac OS X 10.2 and earlier).
! .IP \fB\-fobjc\-gc\fR 4
  .IX Item "-fobjc-gc"
! Enable garbage collection (GC) in Objective\-C and Objective\-C++
  programs.  This option is only available with the NeXT runtime; the
! GNU runtime has a different garbage collection implementation that
  does not require special compiler flags.
! .IP \fB\-fobjc\-nilcheck\fR 4
  .IX Item "-fobjc-nilcheck"
! For the NeXT runtime with version 2 of the ABI, check for a nil
  receiver in method invocations before doing the actual method call.
  This is the default and can be disabled using
  \&\fB\-fno\-objc\-nilcheck\fR.  Class methods and super calls are never
  checked for nil in this way no matter what this flag is set to.
! Currently this flag does nothing when the GNU runtime, or an older
! version of the NeXT runtime ABI, is used.
! .IP \fB\-fobjc\-std=objc1\fR 4
  .IX Item "-fobjc-std=objc1"
! Conform to the language syntax of Objective\-C 1.0, the language
! recognized by GCC 4.0.  This only affects the Objective\-C additions to
! the C/C++ language; it does not affect conformance to C/C++ standards,
! which is controlled by the separate C/C++ dialect option flags.  When
! this option is used with the Objective\-C or Objective\-C++ compiler,
! any Objective\-C syntax that is not recognized by GCC 4.0 is rejected.
! This is useful if you need to make sure that your Objective\-C code can
! be compiled with older versions of GCC.
! .IP \fB\-freplace\-objc\-classes\fR 4
  .IX Item "-freplace-objc-classes"
! Emit a special marker instructing \fBld\|(1)\fR not to statically link in
! the resulting object file, and allow \fBdyld\|(1)\fR to load it in at
! run time instead.  This is used in conjunction with the Fix\-and\-Continue
  debugging mode, where the object file in question may be recompiled and
  dynamically reloaded in the course of program execution, without the need
! to restart the program itself.  Currently, Fix\-and\-Continue functionality
! is only available in conjunction with the NeXT runtime on Mac OS X 10.3
  and later.
! .IP \fB\-fzero\-link\fR 4
  .IX Item "-fzero-link"
  When compiling for the NeXT runtime, the compiler ordinarily replaces calls
! to \f(CWobjc_getClass("...")\fR (when the name of the class is known at
  compile time) with static class references that get initialized at load time,
! which improves run\-time performance.  Specifying the \fB\-fzero\-link\fR flag
! suppresses this behavior and causes calls to \f(CWobjc_getClass("...")\fR
! to be retained.  This is useful in Zero\-Link debugging mode, since it allows
  for individual class implementations to be modified during program execution.
! The GNU runtime currently always retains calls to \f(CWobjc_get_class("...")\fR
! regardless of command\-line options.
! .IP \fB\-fno\-local\-ivars\fR 4
  .IX Item "-fno-local-ivars"
! By default instance variables in Objective\-C can be accessed as if
! they were local variables from within the methods of the class they\*(Aqre
  declared in.  This can lead to shadowing between instance variables
  and other variables declared either locally inside a class method or
  globally with the same name.  Specifying the \fB\-fno\-local\-ivars\fR
  flag disables this behavior thus avoiding variable shadowing issues.
! .IP \fB\-fivar\-visibility=\fR[\fBpublic\fR|\fBprotected\fR|\fBprivate\fR|\fBpackage\fR] 4
  .IX Item "-fivar-visibility=[public|protected|private|package]"
  Set the default instance variable visibility to the specified option
  so that instance variables declared outside the scope of any access
  modifier directives default to the specified visibility.
! .IP \fB\-gen\-decls\fR 4
  .IX Item "-gen-decls"
  Dump interface declarations for all classes seen in the source file to a
! file named \fIsourcename.decl\fR.
! .IP "\fB\-Wassign\-intercept\fR (Objective\-C and Objective\-C++ only)" 4
! .IX Item "-Wassign-intercept (Objective-C and Objective-C++ only)"
! Warn whenever an Objective\-C assignment is being intercepted by the
  garbage collector.
! .IP "\fB\-Wno\-property\-assign\-default\fR (Objective\-C and Objective\-C++ only)" 4
! .IX Item "-Wno-property-assign-default (Objective-C and Objective-C++ only)"
! Do not warn if a property for an Objective\-C object has no assign
  semantics specified.
! .IP "\fB\-Wno\-protocol\fR (Objective\-C and Objective\-C++ only)" 4
! .IX Item "-Wno-protocol (Objective-C and Objective-C++ only)"
  If a class is declared to implement a protocol, a warning is issued for
  every method in the protocol that is not implemented by the class.  The
  default behavior is to issue a warning for every method not explicitly
*************** implemented in the class, even if a meth
*** 4955,5036 ****
  from the superclass.  If you use the \fB\-Wno\-protocol\fR option, then
  methods inherited from the superclass are considered to be implemented,
  and no warning is issued for them.
! .IP "\fB\-Wobjc\-root\-class\fR (Objective-C and Objective\-\*(C+ only)" 4
! .IX Item "-Wobjc-root-class (Objective-C and Objective- only)"
  Warn if a class interface lacks a superclass. Most classes will inherit
  from \f(CW\*(C`NSObject\*(C'\fR (or \f(CW\*(C`Object\*(C'\fR) for example.  When declaring
  classes intended to be root classes, the warning can be suppressed by
  marking their interfaces with \f(CW\*(C`_\|_attribute_\|_((objc_root_class))\*(C'\fR.
! .IP "\fB\-Wselector\fR (Objective-C and Objective\-\*(C+ only)" 4
! .IX Item "-Wselector (Objective-C and Objective- only)"
  Warn if multiple methods of different types for the same selector are
  found during compilation.  The check is performed on the list of methods
  in the final stage of compilation.  Additionally, a check is performed
! for each selector appearing in a \f(CW\*(C`@selector(...)\*(C'\fR
  expression, and a corresponding method for that selector has been found
  during compilation.  Because these checks scan the method table only at
  the end of compilation, these warnings are not produced if the final
  stage of compilation is not reached, for example because an error is
  found during compilation, or because the \fB\-fsyntax\-only\fR option is
  being used.
! .IP "\fB\-Wstrict\-selector\-match\fR (Objective-C and Objective\-\*(C+ only)" 4
! .IX Item "-Wstrict-selector-match (Objective-C and Objective- only)"
  Warn if multiple methods with differing argument and/or return types are
  found for a given selector when attempting to send a message using this
  selector to a receiver of type \f(CW\*(C`id\*(C'\fR or \f(CW\*(C`Class\*(C'\fR.  When this flag
  is off (which is the default behavior), the compiler omits such warnings
  if any differences found are confined to types that share the same size
  and alignment.
! .IP "\fB\-Wundeclared\-selector\fR (Objective-C and Objective\-\*(C+ only)" 4
! .IX Item "-Wundeclared-selector (Objective-C and Objective- only)"
! Warn if a \f(CW\*(C`@selector(...)\*(C'\fR expression referring to an
  undeclared selector is found.  A selector is considered undeclared if no
  method with that name has been declared before the
! \&\f(CW\*(C`@selector(...)\*(C'\fR expression, either explicitly in an
  \&\f(CW@interface\fR or \f(CW@protocol\fR declaration, or implicitly in
  an \f(CW@implementation\fR section.  This option always performs its
! checks as soon as a \f(CW\*(C`@selector(...)\*(C'\fR expression is found,
  while \fB\-Wselector\fR only performs its checks in the final stage of
  compilation.  This also enforces the coding style convention
  that methods and selectors must be declared before being used.
! .IP "\fB\-print\-objc\-runtime\-info\fR" 4
  .IX Item "-print-objc-runtime-info"
  Generate C header describing the largest structure that is passed by
  value, if any.
  .SS "Options Controlling OpenMP and OpenACC"
  .IX Subsection "Options Controlling OpenMP and OpenACC"
! \&\s-1GCC\s0 supports OpenMP extensions to the C, \*(C+, and Fortran languages
  with the \fB\-fopenmp\fR option.  Similarly, OpenACC extensions are
  supported in all three languages with \fB\-fopenacc\fR.
! .IP "\fB\-foffload=disable\fR" 4
  .IX Item "-foffload=disable"
  .PD 0
! .IP "\fB\-foffload=default\fR" 4
  .IX Item "-foffload=default"
! .IP "\fB\-foffload=\fR\fItarget-list\fR" 4
  .IX Item "-foffload=target-list"
  .PD
  Specify for which OpenMP and OpenACC offload targets code should be generated.
  The default behavior, equivalent to \fB\-foffload=default\fR, is to generate
  code for all supported offload targets.  The \fB\-foffload=disable\fR form
  generates code only for the host fallback, while
! \&\fB\-foffload=\fR\fItarget-list\fR generates code only for the specified
! comma-separated list of offload targets.
  .Sp
! Offload targets are specified in \s-1GCC\s0's internal target-triplet format. You can
  run the compiler with \fB\-v\fR to show the list of configured offload targets
  under \f(CW\*(C`OFFLOAD_TARGET_NAMES\*(C'\fR.
! .IP "\fB\-foffload\-options=\fR\fIoptions\fR" 4
  .IX Item "-foffload-options=options"
  .PD 0
! .IP "\fB\-foffload\-options=\fR\fItarget-triplet-list\fR\fB=\fR\fIoptions\fR" 4
  .IX Item "-foffload-options=target-triplet-list=options"
  .PD
! With \fB\-foffload\-options=\fR\fIoptions\fR, \s-1GCC\s0 passes the specified
  \&\fIoptions\fR to the compilers for all enabled offloading targets.  You can
  specify options that apply only to a specific target or targets by using
! the \fB\-foffload\-options=\fR\fItarget-list\fR\fB=\fR\fIoptions\fR form.  The
! \&\fItarget-list\fR is a comma-separated list in the same format as for the
  \&\fB\-foffload=\fR option.
  .Sp
  Typical command lines are
--- 4888,4969 ----
  from the superclass.  If you use the \fB\-Wno\-protocol\fR option, then
  methods inherited from the superclass are considered to be implemented,
  and no warning is issued for them.
! .IP "\fB\-Wobjc\-root\-class\fR (Objective\-C and Objective\-C++ only)" 4
! .IX Item "-Wobjc-root-class (Objective-C and Objective-C++ only)"
  Warn if a class interface lacks a superclass. Most classes will inherit
  from \f(CW\*(C`NSObject\*(C'\fR (or \f(CW\*(C`Object\*(C'\fR) for example.  When declaring
  classes intended to be root classes, the warning can be suppressed by
  marking their interfaces with \f(CW\*(C`_\|_attribute_\|_((objc_root_class))\*(C'\fR.
! .IP "\fB\-Wselector\fR (Objective\-C and Objective\-C++ only)" 4
! .IX Item "-Wselector (Objective-C and Objective-C++ only)"
  Warn if multiple methods of different types for the same selector are
  found during compilation.  The check is performed on the list of methods
  in the final stage of compilation.  Additionally, a check is performed
! for each selector appearing in a \f(CW@selector(...)\fR
  expression, and a corresponding method for that selector has been found
  during compilation.  Because these checks scan the method table only at
  the end of compilation, these warnings are not produced if the final
  stage of compilation is not reached, for example because an error is
  found during compilation, or because the \fB\-fsyntax\-only\fR option is
  being used.
! .IP "\fB\-Wstrict\-selector\-match\fR (Objective\-C and Objective\-C++ only)" 4
! .IX Item "-Wstrict-selector-match (Objective-C and Objective-C++ only)"
  Warn if multiple methods with differing argument and/or return types are
  found for a given selector when attempting to send a message using this
  selector to a receiver of type \f(CW\*(C`id\*(C'\fR or \f(CW\*(C`Class\*(C'\fR.  When this flag
  is off (which is the default behavior), the compiler omits such warnings
  if any differences found are confined to types that share the same size
  and alignment.
! .IP "\fB\-Wundeclared\-selector\fR (Objective\-C and Objective\-C++ only)" 4
! .IX Item "-Wundeclared-selector (Objective-C and Objective-C++ only)"
! Warn if a \f(CW@selector(...)\fR expression referring to an
  undeclared selector is found.  A selector is considered undeclared if no
  method with that name has been declared before the
! \&\f(CW@selector(...)\fR expression, either explicitly in an
  \&\f(CW@interface\fR or \f(CW@protocol\fR declaration, or implicitly in
  an \f(CW@implementation\fR section.  This option always performs its
! checks as soon as a \f(CW@selector(...)\fR expression is found,
  while \fB\-Wselector\fR only performs its checks in the final stage of
  compilation.  This also enforces the coding style convention
  that methods and selectors must be declared before being used.
! .IP \fB\-print\-objc\-runtime\-info\fR 4
  .IX Item "-print-objc-runtime-info"
  Generate C header describing the largest structure that is passed by
  value, if any.
  .SS "Options Controlling OpenMP and OpenACC"
  .IX Subsection "Options Controlling OpenMP and OpenACC"
! GCC supports OpenMP extensions to the C, C++, and Fortran languages
  with the \fB\-fopenmp\fR option.  Similarly, OpenACC extensions are
  supported in all three languages with \fB\-fopenacc\fR.
! .IP \fB\-foffload=disable\fR 4
  .IX Item "-foffload=disable"
  .PD 0
! .IP \fB\-foffload=default\fR 4
  .IX Item "-foffload=default"
! .IP \fB\-foffload=\fR\fItarget\-list\fR 4
  .IX Item "-foffload=target-list"
  .PD
  Specify for which OpenMP and OpenACC offload targets code should be generated.
  The default behavior, equivalent to \fB\-foffload=default\fR, is to generate
  code for all supported offload targets.  The \fB\-foffload=disable\fR form
  generates code only for the host fallback, while
! \&\fB\-foffload=\fR\fItarget\-list\fR generates code only for the specified
! comma\-separated list of offload targets.
  .Sp
! Offload targets are specified in GCC\*(Aqs internal target\-triplet format. You can
  run the compiler with \fB\-v\fR to show the list of configured offload targets
  under \f(CW\*(C`OFFLOAD_TARGET_NAMES\*(C'\fR.
! .IP \fB\-foffload\-options=\fR\fIoptions\fR 4
  .IX Item "-foffload-options=options"
  .PD 0
! .IP \fB\-foffload\-options=\fR\fItarget\-triplet\-list\fR\fB=\fR\fIoptions\fR 4
  .IX Item "-foffload-options=target-triplet-list=options"
  .PD
! With \fB\-foffload\-options=\fR\fIoptions\fR, GCC passes the specified
  \&\fIoptions\fR to the compilers for all enabled offloading targets.  You can
  specify options that apply only to a specific target or targets by using
! the \fB\-foffload\-options=\fR\fItarget\-list\fR\fB=\fR\fIoptions\fR form.  The
! \&\fItarget\-list\fR is a comma\-separated list in the same format as for the
  \&\fB\-foffload=\fR option.
  .Sp
  Typical command lines are
*************** Typical command lines are
*** 5040,5063 ****
  \&                \-foffload\-options=nvptx\-none=\-latomic
  \&        \-foffload\-options=amdgcn\-amdhsa=\-march=gfx906
  .Ve
! .IP "\fB\-fopenacc\fR" 4
  .IX Item "-fopenacc"
! Enable handling of OpenACC directives \fB#pragma acc\fR in C/\*(C+ and
! \&\fB!$acc\fR in free-form Fortran and \fB!$acc\fR, \fBc$acc\fR and
! \&\fB*$acc\fR in fixed-form Fortran.  This option
  implies \fB\-pthread\fR, and thus is only supported on targets that
  have support for \fB\-pthread\fR.
! .IP "\fB\-fopenacc\-dim=\fR\fIgeom\fR" 4
  .IX Item "-fopenacc-dim=geom"
  Specify default compute dimensions for parallel offload regions that do
  not explicitly specify them.  The \fIgeom\fR value is a triple of
  \&\fB:\fR\-separated sizes, in order \fIgang\fR, \fIworker\fR, and \fIvector\fR.
! A size can be omitted, to use a target-specific default value.
! .IP "\fB\-fopenmp\fR" 4
  .IX Item "-fopenmp"
  Enable handling of OpenMP directives \fB#pragma omp\fR,
  \&\fB[[omp::directive(...)]]\fR, \fB[[omp::decl(...)]]\fR,
! and \fB[[omp::sequence(...)]]\fR in C/\*(C+.  In Fortran, it enables
  \&\fB!$omp\fR and the conditional compilation sentinel \fB!$\fR.
  In fixed source form Fortran, the sentinels can also start with
  \&\fBc\fR or \fB*\fR.
--- 4973,4996 ----
  \&                \-foffload\-options=nvptx\-none=\-latomic
  \&        \-foffload\-options=amdgcn\-amdhsa=\-march=gfx906
  .Ve
! .IP \fB\-fopenacc\fR 4
  .IX Item "-fopenacc"
! Enable handling of OpenACC directives \fB#pragma acc\fR in C/C++ and
! \&\fB!$acc\fR in free\-form Fortran and \fB!$acc\fR, \fBc$acc\fR and
! \&\fB*$acc\fR in fixed\-form Fortran.  This option
  implies \fB\-pthread\fR, and thus is only supported on targets that
  have support for \fB\-pthread\fR.
! .IP \fB\-fopenacc\-dim=\fR\fIgeom\fR 4
  .IX Item "-fopenacc-dim=geom"
  Specify default compute dimensions for parallel offload regions that do
  not explicitly specify them.  The \fIgeom\fR value is a triple of
  \&\fB:\fR\-separated sizes, in order \fIgang\fR, \fIworker\fR, and \fIvector\fR.
! A size can be omitted, to use a target\-specific default value.
! .IP \fB\-fopenmp\fR 4
  .IX Item "-fopenmp"
  Enable handling of OpenMP directives \fB#pragma omp\fR,
  \&\fB[[omp::directive(...)]]\fR, \fB[[omp::decl(...)]]\fR,
! and \fB[[omp::sequence(...)]]\fR in C/C++.  In Fortran, it enables
  \&\fB!$omp\fR and the conditional compilation sentinel \fB!$\fR.
  In fixed source form Fortran, the sentinels can also start with
  \&\fBc\fR or \fB*\fR.
*************** In fixed source form Fortran, the sentin
*** 5065,5094 ****
  This option implies \fB\-pthread\fR, and thus is only supported on
  targets that have support for \fB\-pthread\fR. \fB\-fopenmp\fR
  implies \fB\-fopenmp\-simd\fR.
! .IP "\fB\-fopenmp\-simd\fR" 4
  .IX Item "-fopenmp-simd"
! Enable handling of OpenMP's \f(CW\*(C`simd\*(C'\fR, \f(CW\*(C`declare simd\*(C'\fR,
  \&\f(CW\*(C`declare reduction\*(C'\fR, \f(CW\*(C`assume\*(C'\fR, \f(CW\*(C`ordered\*(C'\fR, \f(CW\*(C`scan\*(C'\fR
  and \f(CW\*(C`loop\*(C'\fR directive, and of combined or composite directives with
  \&\f(CW\*(C`simd\*(C'\fR as constituent with \f(CW\*(C`#pragma omp\*(C'\fR,
  \&\f(CW\*(C`[[omp::directive(...)]]\*(C'\fR, \f(CW\*(C`[[omp::sequence(...)]]\*(C'\fR and
! \&\f(CW\*(C`[[omp::decl(...)]]\*(C'\fR in C/\*(C+ and \f(CW\*(C`!$omp\*(C'\fR in Fortran.  It
  additionally enables the conditional compilation sentinel \fB!$\fR in
  Fortran.  In fixed source form Fortran, the sentinels can also start with
  \&\fBc\fR or \fB*\fR.  Other OpenMP directives are ignored.  Unless
  \&\fB\-fopenmp\fR is additionally specified, the \f(CW\*(C`loop\*(C'\fR region binds
  to the current task region, independent of the specified \f(CW\*(C`bind\*(C'\fR clause.
! .IP "\fB\-fopenmp\-target\-simd\-clone\fR" 4
  .IX Item "-fopenmp-target-simd-clone"
  .PD 0
! .IP "\fB\-fopenmp\-target\-simd\-clone=\fR\fIdevice-type\fR" 4
  .IX Item "-fopenmp-target-simd-clone=device-type"
  .PD
! In addition to generating \s-1SIMD\s0 clones for functions marked with the
! \&\f(CW\*(C`declare simd\*(C'\fR directive, \s-1GCC\s0 also generates clones
  for functions marked with the OpenMP \f(CW\*(C`declare target\*(C'\fR directive
  that are suitable for vectorization when this option is in effect.  The
! \&\fIdevice-type\fR may be one of \f(CW\*(C`none\*(C'\fR, \f(CW\*(C`host\*(C'\fR, \f(CW\*(C`nohost\*(C'\fR,
  and \f(CW\*(C`any\*(C'\fR, which correspond to keywords for the \f(CW\*(C`device_type\*(C'\fR
  clause of the \f(CW\*(C`declare target\*(C'\fR directive; clones are generated for
  the intersection of devices specified.
--- 4998,5027 ----
  This option implies \fB\-pthread\fR, and thus is only supported on
  targets that have support for \fB\-pthread\fR. \fB\-fopenmp\fR
  implies \fB\-fopenmp\-simd\fR.
! .IP \fB\-fopenmp\-simd\fR 4
  .IX Item "-fopenmp-simd"
! Enable handling of OpenMP\*(Aqs \f(CW\*(C`simd\*(C'\fR, \f(CW\*(C`declare simd\*(C'\fR,
  \&\f(CW\*(C`declare reduction\*(C'\fR, \f(CW\*(C`assume\*(C'\fR, \f(CW\*(C`ordered\*(C'\fR, \f(CW\*(C`scan\*(C'\fR
  and \f(CW\*(C`loop\*(C'\fR directive, and of combined or composite directives with
  \&\f(CW\*(C`simd\*(C'\fR as constituent with \f(CW\*(C`#pragma omp\*(C'\fR,
  \&\f(CW\*(C`[[omp::directive(...)]]\*(C'\fR, \f(CW\*(C`[[omp::sequence(...)]]\*(C'\fR and
! \&\f(CW\*(C`[[omp::decl(...)]]\*(C'\fR in C/C++ and \f(CW\*(C`!$omp\*(C'\fR in Fortran.  It
  additionally enables the conditional compilation sentinel \fB!$\fR in
  Fortran.  In fixed source form Fortran, the sentinels can also start with
  \&\fBc\fR or \fB*\fR.  Other OpenMP directives are ignored.  Unless
  \&\fB\-fopenmp\fR is additionally specified, the \f(CW\*(C`loop\*(C'\fR region binds
  to the current task region, independent of the specified \f(CW\*(C`bind\*(C'\fR clause.
! .IP \fB\-fopenmp\-target\-simd\-clone\fR 4
  .IX Item "-fopenmp-target-simd-clone"
  .PD 0
! .IP \fB\-fopenmp\-target\-simd\-clone=\fR\fIdevice\-type\fR 4
  .IX Item "-fopenmp-target-simd-clone=device-type"
  .PD
! In addition to generating SIMD clones for functions marked with the
! \&\f(CW\*(C`declare simd\*(C'\fR directive, GCC also generates clones
  for functions marked with the OpenMP \f(CW\*(C`declare target\*(C'\fR directive
  that are suitable for vectorization when this option is in effect.  The
! \&\fIdevice\-type\fR may be one of \f(CW\*(C`none\*(C'\fR, \f(CW\*(C`host\*(C'\fR, \f(CW\*(C`nohost\*(C'\fR,
  and \f(CW\*(C`any\*(C'\fR, which correspond to keywords for the \f(CW\*(C`device_type\*(C'\fR
  clause of the \f(CW\*(C`declare target\*(C'\fR directive; clones are generated for
  the intersection of devices specified.
*************** it is disabled by default.
*** 5103,5126 ****
  .SS "Options to Control Diagnostic Messages Formatting"
  .IX Subsection "Options to Control Diagnostic Messages Formatting"
  Traditionally, diagnostic messages have been formatted irrespective of
! the output device's aspect (e.g. its width, ...).  You can use the
  options described below
  to control the formatting algorithm for diagnostic messages,
  e.g. how many characters per line, how often source location
  information should be reported.  Note that some language front ends may not
  honor these options.
! .IP "\fB\-fmessage\-length=\fR\fIn\fR" 4
  .IX Item "-fmessage-length=n"
  Try to format error messages so that they fit on lines of about
! \&\fIn\fR characters.  If \fIn\fR is zero, then no line-wrapping is
  done; each error message appears on a single line.  This is the
  default for all front ends.
  .Sp
  Note \- this option also affects the display of the \fB#error\fR and
! \&\fB#warning\fR pre-processor directives, and the \fBdeprecated\fR
  function/type/variable attribute.  It does not however affect the
! \&\fBpragma \s-1GCC\s0 warning\fR and \fBpragma \s-1GCC\s0 error\fR pragmas.
! .IP "\fB\-fdiagnostics\-plain\-output\fR" 4
  .IX Item "-fdiagnostics-plain-output"
  This option requests that diagnostic output look as plain as possible, which
  may be useful when running \fBdejagnu\fR or other utilities that need to
--- 5036,5059 ----
  .SS "Options to Control Diagnostic Messages Formatting"
  .IX Subsection "Options to Control Diagnostic Messages Formatting"
  Traditionally, diagnostic messages have been formatted irrespective of
! the output device\*(Aqs aspect (e.g. its width, ...).  You can use the
  options described below
  to control the formatting algorithm for diagnostic messages,
  e.g. how many characters per line, how often source location
  information should be reported.  Note that some language front ends may not
  honor these options.
! .IP \fB\-fmessage\-length=\fR\fIn\fR 4
  .IX Item "-fmessage-length=n"
  Try to format error messages so that they fit on lines of about
! \&\fIn\fR characters.  If \fIn\fR is zero, then no line\-wrapping is
  done; each error message appears on a single line.  This is the
  default for all front ends.
  .Sp
  Note \- this option also affects the display of the \fB#error\fR and
! \&\fB#warning\fR pre\-processor directives, and the \fBdeprecated\fR
  function/type/variable attribute.  It does not however affect the
! \&\fBpragma GCC warning\fR and \fBpragma GCC error\fR pragmas.
! .IP \fB\-fdiagnostics\-plain\-output\fR 4
  .IX Item "-fdiagnostics-plain-output"
  This option requests that diagnostic output look as plain as possible, which
  may be useful when running \fBdejagnu\fR or other utilities that need to
*************** options:
*** 5134,5175 ****
  \&\-fdiagnostics\-path\-format=separate\-events
  \&\-fdiagnostics\-text\-art\-charset=none
  \&\-fno\-diagnostics\-show\-event\-links\fR
! In the future, if \s-1GCC\s0 changes the default appearance of its diagnostics, the
  corresponding option to disable the new behavior will be added to this list.
! .IP "\fB\-fdiagnostics\-show\-location=once\fR" 4
  .IX Item "-fdiagnostics-show-location=once"
! Only meaningful in line-wrapping mode.  Instructs the diagnostic messages
  reporter to emit source location information \fIonce\fR; that is, in
  case the message is too long to fit on a single physical line and has to
! be wrapped, the source location won't be emitted (as prefix) again,
  over and over, in subsequent continuation lines.  This is the default
  behavior.
! .IP "\fB\-fdiagnostics\-show\-location=every\-line\fR" 4
  .IX Item "-fdiagnostics-show-location=every-line"
! Only meaningful in line-wrapping mode.  Instructs the diagnostic
  messages reporter to emit the same source location information (as
  prefix) for physical lines that result from the process of breaking
  a message which is too long to fit on a single line.
! .IP "\fB\-fdiagnostics\-color[=\fR\fI\s-1WHEN\s0\fR\fB]\fR" 4
  .IX Item "-fdiagnostics-color[=WHEN]"
  .PD 0
! .IP "\fB\-fno\-diagnostics\-color\fR" 4
  .IX Item "-fno-diagnostics-color"
  .PD
! Use color in diagnostics.  \fI\s-1WHEN\s0\fR is \fBnever\fR, \fBalways\fR,
  or \fBauto\fR.  The default depends on how the compiler has been configured,
! it can be any of the above \fI\s-1WHEN\s0\fR options or also \fBnever\fR
! if \fB\s-1GCC_COLORS\s0\fR environment variable isn't present in the environment,
  and \fBauto\fR otherwise.
! \&\fBauto\fR makes \s-1GCC\s0 use color only when the standard error is a terminal,
  and when not executing in an emacs shell.
  The forms \fB\-fdiagnostics\-color\fR and \fB\-fno\-diagnostics\-color\fR are
  aliases for \fB\-fdiagnostics\-color=always\fR and
  \&\fB\-fdiagnostics\-color=never\fR, respectively.
  .Sp
! The colors are defined by the environment variable \fB\s-1GCC_COLORS\s0\fR.
! Its value is a colon-separated list of capabilities and Select Graphic
! Rendition (\s-1SGR\s0) substrings. \s-1SGR\s0 commands are interpreted by the
  terminal or terminal emulator.  (See the section in the documentation
  of your text terminal for permitted values and their meanings as
  character attributes.)  These substring values are integers in decimal
--- 5067,5108 ----
  \&\-fdiagnostics\-path\-format=separate\-events
  \&\-fdiagnostics\-text\-art\-charset=none
  \&\-fno\-diagnostics\-show\-event\-links\fR
! In the future, if GCC changes the default appearance of its diagnostics, the
  corresponding option to disable the new behavior will be added to this list.
! .IP \fB\-fdiagnostics\-show\-location=once\fR 4
  .IX Item "-fdiagnostics-show-location=once"
! Only meaningful in line\-wrapping mode.  Instructs the diagnostic messages
  reporter to emit source location information \fIonce\fR; that is, in
  case the message is too long to fit on a single physical line and has to
! be wrapped, the source location won\*(Aqt be emitted (as prefix) again,
  over and over, in subsequent continuation lines.  This is the default
  behavior.
! .IP \fB\-fdiagnostics\-show\-location=every\-line\fR 4
  .IX Item "-fdiagnostics-show-location=every-line"
! Only meaningful in line\-wrapping mode.  Instructs the diagnostic
  messages reporter to emit the same source location information (as
  prefix) for physical lines that result from the process of breaking
  a message which is too long to fit on a single line.
! .IP \fB\-fdiagnostics\-color[=\fR\fIWHEN\fR\fB]\fR 4
  .IX Item "-fdiagnostics-color[=WHEN]"
  .PD 0
! .IP \fB\-fno\-diagnostics\-color\fR 4
  .IX Item "-fno-diagnostics-color"
  .PD
! Use color in diagnostics.  \fIWHEN\fR is \fBnever\fR, \fBalways\fR,
  or \fBauto\fR.  The default depends on how the compiler has been configured,
! it can be any of the above \fIWHEN\fR options or also \fBnever\fR
! if \fBGCC_COLORS\fR environment variable isn\*(Aqt present in the environment,
  and \fBauto\fR otherwise.
! \&\fBauto\fR makes GCC use color only when the standard error is a terminal,
  and when not executing in an emacs shell.
  The forms \fB\-fdiagnostics\-color\fR and \fB\-fno\-diagnostics\-color\fR are
  aliases for \fB\-fdiagnostics\-color=always\fR and
  \&\fB\-fdiagnostics\-color=never\fR, respectively.
  .Sp
! The colors are defined by the environment variable \fBGCC_COLORS\fR.
! Its value is a colon\-separated list of capabilities and Select Graphic
! Rendition (SGR) substrings. SGR commands are interpreted by the
  terminal or terminal emulator.  (See the section in the documentation
  of your text terminal for permitted values and their meanings as
  character attributes.)  These substring values are integers in decimal
*************** for 88\-color and 256\-color modes foreg
*** 5190,5196 ****
  and \fB48;5;0\fR to \fB48;5;255\fR
  for 88\-color and 256\-color modes background colors.
  .Sp
! The default \fB\s-1GCC_COLORS\s0\fR is
  .Sp
  .Vb 5
  \&        error=01;31:warning=01;35:note=01;36:range1=32:range2=34:locus=01:\e
--- 5123,5129 ----
  and \fB48;5;0\fR to \fB48;5;255\fR
  for 88\-color and 256\-color modes background colors.
  .Sp
! The default \fBGCC_COLORS\fR is
  .Sp
  .Vb 5
  \&        error=01;31:warning=01;35:note=01;36:range1=32:range2=34:locus=01:\e
*************** The default \fB\s-1GCC_COLORS\s0\fR is
*** 5203,5362 ****
  where \fB01;31\fR is bold red, \fB01;35\fR is bold magenta,
  \&\fB01;36\fR is bold cyan, \fB32\fR is green, \fB34\fR is blue,
  \&\fB01\fR is bold, and \fB31\fR is red.
! Setting \fB\s-1GCC_COLORS\s0\fR to the empty string disables colors.
  Supported capabilities are as follows.
  .RS 4
  .ie n .IP """error=""" 4
! .el .IP "\f(CWerror=\fR" 4
  .IX Item "error="
! \&\s-1SGR\s0 substring for error: markers.
  .ie n .IP """warning=""" 4
! .el .IP "\f(CWwarning=\fR" 4
  .IX Item "warning="
! \&\s-1SGR\s0 substring for warning: markers.
  .ie n .IP """note=""" 4
! .el .IP "\f(CWnote=\fR" 4
  .IX Item "note="
! \&\s-1SGR\s0 substring for note: markers.
  .ie n .IP """path=""" 4
! .el .IP "\f(CWpath=\fR" 4
  .IX Item "path="
! \&\s-1SGR\s0 substring for colorizing paths of control-flow events as printed
  via \fB\-fdiagnostics\-path\-format=\fR, such as the identifiers of
  individual events and lines indicating interprocedural calls and returns.
  .ie n .IP """range1=""" 4
! .el .IP "\f(CWrange1=\fR" 4
  .IX Item "range1="
! \&\s-1SGR\s0 substring for first additional range.
  .ie n .IP """range2=""" 4
! .el .IP "\f(CWrange2=\fR" 4
  .IX Item "range2="
! \&\s-1SGR\s0 substring for second additional range.
  .ie n .IP """locus=""" 4
! .el .IP "\f(CWlocus=\fR" 4
  .IX Item "locus="
! \&\s-1SGR\s0 substring for location information, \fBfile:line\fR or
  \&\fBfile:line:column\fR etc.
  .ie n .IP """quote=""" 4
! .el .IP "\f(CWquote=\fR" 4
  .IX Item "quote="
! \&\s-1SGR\s0 substring for information printed within quotes.
  .ie n .IP """fnname=""" 4
! .el .IP "\f(CWfnname=\fR" 4
  .IX Item "fnname="
! \&\s-1SGR\s0 substring for names of \*(C+ functions.
  .ie n .IP """targs=""" 4
! .el .IP "\f(CWtargs=\fR" 4
  .IX Item "targs="
! \&\s-1SGR\s0 substring for \*(C+ function template parameter bindings.
  .ie n .IP """fixit\-insert=""" 4
! .el .IP "\f(CWfixit\-insert=\fR" 4
  .IX Item "fixit-insert="
! \&\s-1SGR\s0 substring for fix-it hints suggesting text to
  be inserted or replaced.
  .ie n .IP """fixit\-delete=""" 4
! .el .IP "\f(CWfixit\-delete=\fR" 4
  .IX Item "fixit-delete="
! \&\s-1SGR\s0 substring for fix-it hints suggesting text to
  be deleted.
  .ie n .IP """diff\-filename=""" 4
! .el .IP "\f(CWdiff\-filename=\fR" 4
  .IX Item "diff-filename="
! \&\s-1SGR\s0 substring for filename headers within generated patches.
  .ie n .IP """diff\-hunk=""" 4
! .el .IP "\f(CWdiff\-hunk=\fR" 4
  .IX Item "diff-hunk="
! \&\s-1SGR\s0 substring for the starts of hunks within generated patches.
  .ie n .IP """diff\-delete=""" 4
! .el .IP "\f(CWdiff\-delete=\fR" 4
  .IX Item "diff-delete="
! \&\s-1SGR\s0 substring for deleted lines within generated patches.
  .ie n .IP """diff\-insert=""" 4
! .el .IP "\f(CWdiff\-insert=\fR" 4
  .IX Item "diff-insert="
! \&\s-1SGR\s0 substring for inserted lines within generated patches.
  .ie n .IP """type\-diff=""" 4
! .el .IP "\f(CWtype\-diff=\fR" 4
  .IX Item "type-diff="
! \&\s-1SGR\s0 substring for highlighting mismatching types within template
! arguments in the \*(C+ frontend.
  .ie n .IP """valid=""" 4
! .el .IP "\f(CWvalid=\fR" 4
  .IX Item "valid="
! \&\s-1SGR\s0 substring for highlighting valid elements within text art diagrams.
  .ie n .IP """invalid=""" 4
! .el .IP "\f(CWinvalid=\fR" 4
  .IX Item "invalid="
! \&\s-1SGR\s0 substring for highlighting invalid elements within text art diagrams.
  .ie n .IP """highlight\-a=""" 4
! .el .IP "\f(CWhighlight\-a=\fR" 4
  .IX Item "highlight-a="
  .PD 0
  .ie n .IP """highlight\-b=""" 4
! .el .IP "\f(CWhighlight\-b=\fR" 4
  .IX Item "highlight-b="
  .PD
! \&\s-1SGR\s0 substrings for contrasting two different things within diagnostics,
  such as a pair of mismatching types.
  See \fB\-fdiagnostics\-show\-highlight\-colors\fR.
  .RE
  .RS 4
  .RE
! .IP "\fB\-fdiagnostics\-urls[=\fR\fI\s-1WHEN\s0\fR\fB]\fR" 4
  .IX Item "-fdiagnostics-urls[=WHEN]"
  Use escape sequences to embed URLs in diagnostics.  For example, when
! \&\fB\-fdiagnostics\-show\-option\fR emits text showing the command-line
! option controlling a diagnostic, embed a \s-1URL\s0 for documentation of that
  option.
  .Sp
! \&\fI\s-1WHEN\s0\fR is \fBnever\fR, \fBalways\fR, or \fBauto\fR.
! \&\fBauto\fR makes \s-1GCC\s0 use \s-1URL\s0 escape sequences only when the standard error
  is a terminal, and when not executing in an emacs shell or any graphical
  terminal which is known to be incompatible with this feature, see below.
  .Sp
  The default depends on how the compiler has been configured.
! It can be any of the above \fI\s-1WHEN\s0\fR options.
  .Sp
! \&\s-1GCC\s0 can also be configured (via the
! \&\fB\-\-with\-diagnostics\-urls=auto\-if\-env\fR configure-time option)
  so that the default is affected by environment variables.
! Under such a configuration, \s-1GCC\s0 defaults to using \fBauto\fR
! if either \fB\s-1GCC_URLS\s0\fR or \fB\s-1TERM_URLS\s0\fR environment variables are
! present and non-empty in the environment of the compiler, or \fBnever\fR
  if neither are.
  .Sp
  However, even with \fB\-fdiagnostics\-urls=always\fR the behavior is
  dependent on those environment variables:
! If \fB\s-1GCC_URLS\s0\fR is set to empty or \fBno\fR, do not embed URLs in
! diagnostics.  If set to \fBst\fR, URLs use \s-1ST\s0 escape sequences.
! If set to \fBbel\fR, the default, URLs use \s-1BEL\s0 escape sequences.
! Any other non-empty value enables the feature.
! If \fB\s-1GCC_URLS\s0\fR is not set, use \fB\s-1TERM_URLS\s0\fR as a fallback.
! Note: \s-1ST\s0 is an \s-1ANSI\s0 escape sequence, string terminator \fB\s-1ESC\s0 \e\fR,
! \&\s-1BEL\s0 is an \s-1ASCII\s0 character, CTRL-G that usually sounds like a beep.
  .Sp
! At this time \s-1GCC\s0 tries to detect also a few terminals that are known to
! not implement the \s-1URL\s0 feature, and have bugs or at least had bugs in
! some versions that are still in use, where the \s-1URL\s0 escapes are likely
  to misbehave, i.e. print garbage on the screen.
  That list is currently xfce4\-terminal, certain known to be buggy
! gnome-terminal versions, the linux console, and mingw.
  This check can be skipped with the \fB\-fdiagnostics\-urls=always\fR.
! .IP "\fB\-fno\-diagnostics\-show\-option\fR" 4
  .IX Item "-fno-diagnostics-show-option"
  By default, each diagnostic emitted includes text indicating the
! command-line option that directly controls the diagnostic (if such an
  option is known to the diagnostic machinery).  Specifying the
  \&\fB\-fno\-diagnostics\-show\-option\fR flag suppresses that behavior.
! .IP "\fB\-fno\-diagnostics\-show\-caret\fR" 4
  .IX Item "-fno-diagnostics-show-caret"
  By default, each diagnostic emitted includes the original source line
  and a caret \fB^\fR indicating the column.  This option suppresses this
  information.  The source line is truncated to \fIn\fR characters, if
  the \fB\-fmessage\-length=n\fR option is given.  When the output is done
  to the terminal, the width is limited to the width given by the
! \&\fB\s-1COLUMNS\s0\fR environment variable or, if not set, to the terminal width.
! .IP "\fB\-fno\-diagnostics\-show\-labels\fR" 4
  .IX Item "-fno-diagnostics-show-labels"
  By default, when printing source code (via \fB\-fdiagnostics\-show\-caret\fR),
  diagnostics can label ranges of source code with pertinent information, such
--- 5136,5295 ----
  where \fB01;31\fR is bold red, \fB01;35\fR is bold magenta,
  \&\fB01;36\fR is bold cyan, \fB32\fR is green, \fB34\fR is blue,
  \&\fB01\fR is bold, and \fB31\fR is red.
! Setting \fBGCC_COLORS\fR to the empty string disables colors.
  Supported capabilities are as follows.
  .RS 4
  .ie n .IP """error=""" 4
! .el .IP \f(CWerror=\fR 4
  .IX Item "error="
! SGR substring for error: markers.
  .ie n .IP """warning=""" 4
! .el .IP \f(CWwarning=\fR 4
  .IX Item "warning="
! SGR substring for warning: markers.
  .ie n .IP """note=""" 4
! .el .IP \f(CWnote=\fR 4
  .IX Item "note="
! SGR substring for note: markers.
  .ie n .IP """path=""" 4
! .el .IP \f(CWpath=\fR 4
  .IX Item "path="
! SGR substring for colorizing paths of control\-flow events as printed
  via \fB\-fdiagnostics\-path\-format=\fR, such as the identifiers of
  individual events and lines indicating interprocedural calls and returns.
  .ie n .IP """range1=""" 4
! .el .IP \f(CWrange1=\fR 4
  .IX Item "range1="
! SGR substring for first additional range.
  .ie n .IP """range2=""" 4
! .el .IP \f(CWrange2=\fR 4
  .IX Item "range2="
! SGR substring for second additional range.
  .ie n .IP """locus=""" 4
! .el .IP \f(CWlocus=\fR 4
  .IX Item "locus="
! SGR substring for location information, \fBfile:line\fR or
  \&\fBfile:line:column\fR etc.
  .ie n .IP """quote=""" 4
! .el .IP \f(CWquote=\fR 4
  .IX Item "quote="
! SGR substring for information printed within quotes.
  .ie n .IP """fnname=""" 4
! .el .IP \f(CWfnname=\fR 4
  .IX Item "fnname="
! SGR substring for names of C++ functions.
  .ie n .IP """targs=""" 4
! .el .IP \f(CWtargs=\fR 4
  .IX Item "targs="
! SGR substring for C++ function template parameter bindings.
  .ie n .IP """fixit\-insert=""" 4
! .el .IP \f(CWfixit\-insert=\fR 4
  .IX Item "fixit-insert="
! SGR substring for fix\-it hints suggesting text to
  be inserted or replaced.
  .ie n .IP """fixit\-delete=""" 4
! .el .IP \f(CWfixit\-delete=\fR 4
  .IX Item "fixit-delete="
! SGR substring for fix\-it hints suggesting text to
  be deleted.
  .ie n .IP """diff\-filename=""" 4
! .el .IP \f(CWdiff\-filename=\fR 4
  .IX Item "diff-filename="
! SGR substring for filename headers within generated patches.
  .ie n .IP """diff\-hunk=""" 4
! .el .IP \f(CWdiff\-hunk=\fR 4
  .IX Item "diff-hunk="
! SGR substring for the starts of hunks within generated patches.
  .ie n .IP """diff\-delete=""" 4
! .el .IP \f(CWdiff\-delete=\fR 4
  .IX Item "diff-delete="
! SGR substring for deleted lines within generated patches.
  .ie n .IP """diff\-insert=""" 4
! .el .IP \f(CWdiff\-insert=\fR 4
  .IX Item "diff-insert="
! SGR substring for inserted lines within generated patches.
  .ie n .IP """type\-diff=""" 4
! .el .IP \f(CWtype\-diff=\fR 4
  .IX Item "type-diff="
! SGR substring for highlighting mismatching types within template
! arguments in the C++ frontend.
  .ie n .IP """valid=""" 4
! .el .IP \f(CWvalid=\fR 4
  .IX Item "valid="
! SGR substring for highlighting valid elements within text art diagrams.
  .ie n .IP """invalid=""" 4
! .el .IP \f(CWinvalid=\fR 4
  .IX Item "invalid="
! SGR substring for highlighting invalid elements within text art diagrams.
  .ie n .IP """highlight\-a=""" 4
! .el .IP \f(CWhighlight\-a=\fR 4
  .IX Item "highlight-a="
  .PD 0
  .ie n .IP """highlight\-b=""" 4
! .el .IP \f(CWhighlight\-b=\fR 4
  .IX Item "highlight-b="
  .PD
! SGR substrings for contrasting two different things within diagnostics,
  such as a pair of mismatching types.
  See \fB\-fdiagnostics\-show\-highlight\-colors\fR.
  .RE
  .RS 4
  .RE
! .IP \fB\-fdiagnostics\-urls[=\fR\fIWHEN\fR\fB]\fR 4
  .IX Item "-fdiagnostics-urls[=WHEN]"
  Use escape sequences to embed URLs in diagnostics.  For example, when
! \&\fB\-fdiagnostics\-show\-option\fR emits text showing the command\-line
! option controlling a diagnostic, embed a URL for documentation of that
  option.
  .Sp
! \&\fIWHEN\fR is \fBnever\fR, \fBalways\fR, or \fBauto\fR.
! \&\fBauto\fR makes GCC use URL escape sequences only when the standard error
  is a terminal, and when not executing in an emacs shell or any graphical
  terminal which is known to be incompatible with this feature, see below.
  .Sp
  The default depends on how the compiler has been configured.
! It can be any of the above \fIWHEN\fR options.
  .Sp
! GCC can also be configured (via the
! \&\fB\-\-with\-diagnostics\-urls=auto\-if\-env\fR configure\-time option)
  so that the default is affected by environment variables.
! Under such a configuration, GCC defaults to using \fBauto\fR
! if either \fBGCC_URLS\fR or \fBTERM_URLS\fR environment variables are
! present and non\-empty in the environment of the compiler, or \fBnever\fR
  if neither are.
  .Sp
  However, even with \fB\-fdiagnostics\-urls=always\fR the behavior is
  dependent on those environment variables:
! If \fBGCC_URLS\fR is set to empty or \fBno\fR, do not embed URLs in
! diagnostics.  If set to \fBst\fR, URLs use ST escape sequences.
! If set to \fBbel\fR, the default, URLs use BEL escape sequences.
! Any other non\-empty value enables the feature.
! If \fBGCC_URLS\fR is not set, use \fBTERM_URLS\fR as a fallback.
! Note: ST is an ANSI escape sequence, string terminator \fBESC \e\fR,
! BEL is an ASCII character, CTRL\-G that usually sounds like a beep.
  .Sp
! At this time GCC tries to detect also a few terminals that are known to
! not implement the URL feature, and have bugs or at least had bugs in
! some versions that are still in use, where the URL escapes are likely
  to misbehave, i.e. print garbage on the screen.
  That list is currently xfce4\-terminal, certain known to be buggy
! gnome\-terminal versions, the linux console, and mingw.
  This check can be skipped with the \fB\-fdiagnostics\-urls=always\fR.
! .IP \fB\-fno\-diagnostics\-show\-option\fR 4
  .IX Item "-fno-diagnostics-show-option"
  By default, each diagnostic emitted includes text indicating the
! command\-line option that directly controls the diagnostic (if such an
  option is known to the diagnostic machinery).  Specifying the
  \&\fB\-fno\-diagnostics\-show\-option\fR flag suppresses that behavior.
! .IP \fB\-fno\-diagnostics\-show\-caret\fR 4
  .IX Item "-fno-diagnostics-show-caret"
  By default, each diagnostic emitted includes the original source line
  and a caret \fB^\fR indicating the column.  This option suppresses this
  information.  The source line is truncated to \fIn\fR characters, if
  the \fB\-fmessage\-length=n\fR option is given.  When the output is done
  to the terminal, the width is limited to the width given by the
! \&\fBCOLUMNS\fR environment variable or, if not set, to the terminal width.
! .IP \fB\-fno\-diagnostics\-show\-labels\fR 4
  .IX Item "-fno-diagnostics-show-labels"
  By default, when printing source code (via \fB\-fdiagnostics\-show\-caret\fR),
  diagnostics can label ranges of source code with pertinent information, such
*************** as the types of expressions:
*** 5370,5380 ****
  .Ve
  .Sp
  This option suppresses the printing of these labels (in the example above,
! the vertical bars and the \*(L"char *\*(R" and \*(L"long int\*(R" text).
! .IP "\fB\-fno\-diagnostics\-show\-event\-links\fR" 4
  .IX Item "-fno-diagnostics-show-event-links"
  By default, when printing execution paths (via
! \&\fB\-fdiagnostics\-path\-format=inline\-events\fR), \s-1GCC\s0 will print lines
  connecting related events, such as the line connecting events 1 and 2 in:
  .Sp
  .Vb 10
--- 5303,5313 ----
  .Ve
  .Sp
  This option suppresses the printing of these labels (in the example above,
! the vertical bars and the "char *" and "long int" text).
! .IP \fB\-fno\-diagnostics\-show\-event\-links\fR 4
  .IX Item "-fno-diagnostics-show-event-links"
  By default, when printing execution paths (via
! \&\fB\-fdiagnostics\-path\-format=inline\-events\fR), GCC will print lines
  connecting related events, such as the line connecting events 1 and 2 in:
  .Sp
  .Vb 10
*************** connecting related events, such as the l
*** 5394,5418 ****
  .Ve
  .Sp
  This option suppresses the printing of such connector lines.
! .IP "\fB\-fno\-diagnostics\-show\-cwe\fR" 4
  .IX Item "-fno-diagnostics-show-cwe"
  Diagnostic messages can optionally have an associated
!  \s-1CWE\s0 (\f(CW\*(C`https://cwe.mitre.org/index.html\*(C'\fR) identifier.
! \&\s-1GCC\s0 itself only provides such metadata for some of the \fB\-fanalyzer\fR
! diagnostics.  \s-1GCC\s0 plugins may also provide diagnostics with such metadata.
  By default, if this information is present, it will be printed with
  the diagnostic.  This option suppresses the printing of this metadata.
! .IP "\fB\-fno\-diagnostics\-show\-rules\fR" 4
  .IX Item "-fno-diagnostics-show-rules"
  Diagnostic messages can optionally have rules associated with them, such
  as from a coding standard, or a specification.
! \&\s-1GCC\s0 itself does not do this for any of its diagnostics, but plugins may do so.
  By default, if this information is present, it will be printed with
  the diagnostic.  This option suppresses the printing of this metadata.
! .IP "\fB\-fno\-diagnostics\-show\-highlight\-colors\fR" 4
  .IX Item "-fno-diagnostics-show-highlight-colors"
! \&\s-1GCC\s0 can use color for emphasis and contrast when printing diagnostic
! messages and quoting the user's source.
  .Sp
  For example, in
  .Sp
--- 5327,5351 ----
  .Ve
  .Sp
  This option suppresses the printing of such connector lines.
! .IP \fB\-fno\-diagnostics\-show\-cwe\fR 4
  .IX Item "-fno-diagnostics-show-cwe"
  Diagnostic messages can optionally have an associated
!  CWE (\f(CW\*(C`https://cwe.mitre.org/index.html\*(C'\fR) identifier.
! GCC itself only provides such metadata for some of the \fB\-fanalyzer\fR
! diagnostics.  GCC plugins may also provide diagnostics with such metadata.
  By default, if this information is present, it will be printed with
  the diagnostic.  This option suppresses the printing of this metadata.
! .IP \fB\-fno\-diagnostics\-show\-rules\fR 4
  .IX Item "-fno-diagnostics-show-rules"
  Diagnostic messages can optionally have rules associated with them, such
  as from a coding standard, or a specification.
! GCC itself does not do this for any of its diagnostics, but plugins may do so.
  By default, if this information is present, it will be printed with
  the diagnostic.  This option suppresses the printing of this metadata.
! .IP \fB\-fno\-diagnostics\-show\-highlight\-colors\fR 4
  .IX Item "-fno-diagnostics-show-highlight-colors"
! GCC can use color for emphasis and contrast when printing diagnostic
! messages and quoting the user\*(Aqs source.
  .Sp
  For example, in
  .Sp
*************** For example, in
*** 5426,5442 ****
  \&              |                 %s
  .Ve
  .RS 4
! .IP "*" 4
  the \f(CW%i\fR and \f(CW\*(C`int\*(C'\fR in the message and the \f(CW\*(C`int\*(C'\fR in the
  quoted source are colored using \f(CW\*(C`highlight\-a\*(C'\fR (bold green by default),
  and
! .IP "*" 4
  the \f(CW\*(C`const char *\*(C'\fR in the message and in the quoted source are both
  colored using \f(CW\*(C`highlight\-b\*(C'\fR (bold blue by default).
  .RE
  .RS 4
  .Sp
! The intent is to draw the reader's eyes to the relationships between the
  various aspects of the diagnostic message and the source, using color
  to group related elements and distinguish between mismatching ones.
  .Sp
--- 5359,5375 ----
  \&              |                 %s
  .Ve
  .RS 4
! .IP * 4
  the \f(CW%i\fR and \f(CW\*(C`int\*(C'\fR in the message and the \f(CW\*(C`int\*(C'\fR in the
  quoted source are colored using \f(CW\*(C`highlight\-a\*(C'\fR (bold green by default),
  and
! .IP * 4
  the \f(CW\*(C`const char *\*(C'\fR in the message and in the quoted source are both
  colored using \f(CW\*(C`highlight\-b\*(C'\fR (bold blue by default).
  .RE
  .RS 4
  .Sp
! The intent is to draw the reader\*(Aqs eyes to the relationships between the
  various aspects of the diagnostic message and the source, using color
  to group related elements and distinguish between mismatching ones.
  .Sp
*************** This additional colorization is enabled
*** 5444,5471 ****
  is enabled (as per \fB\-fdiagnostics\-color=\fR), but it can be separately
  disabled via \fB\-fno\-diagnostics\-show\-highlight\-colors\fR.
  .RE
! .IP "\fB\-fno\-diagnostics\-show\-line\-numbers\fR" 4
  .IX Item "-fno-diagnostics-show-line-numbers"
  By default, when printing source code (via \fB\-fdiagnostics\-show\-caret\fR),
  a left margin is printed, showing line numbers.  This option suppresses this
  left margin.
! .IP "\fB\-fdiagnostics\-minimum\-margin\-width=\fR\fIwidth\fR" 4
  .IX Item "-fdiagnostics-minimum-margin-width=width"
  This option controls the minimum width of the left margin printed by
  \&\fB\-fdiagnostics\-show\-line\-numbers\fR.  It defaults to 6.
! .IP "\fB\-fdiagnostics\-parseable\-fixits\fR" 4
  .IX Item "-fdiagnostics-parseable-fixits"
! Emit fix-it hints in a machine-parseable format, suitable for consumption
! by IDEs.  For each fix-it, a line will be printed after the relevant
! diagnostic, starting with the string \*(L"fix-it:\*(R".  For example:
  .Sp
  .Vb 1
  \&        fix\-it:"test.c":{45:3\-45:21}:"gtk_widget_show_all"
  .Ve
  .Sp
! The location is expressed as a half-open range, expressed as a count of
  bytes, starting at byte 1 for the initial column.  In the above example,
! bytes 3 through 20 of line 45 of \*(L"test.c\*(R" are to be replaced with the
  given string:
  .Sp
  .Vb 5
--- 5377,5404 ----
  is enabled (as per \fB\-fdiagnostics\-color=\fR), but it can be separately
  disabled via \fB\-fno\-diagnostics\-show\-highlight\-colors\fR.
  .RE
! .IP \fB\-fno\-diagnostics\-show\-line\-numbers\fR 4
  .IX Item "-fno-diagnostics-show-line-numbers"
  By default, when printing source code (via \fB\-fdiagnostics\-show\-caret\fR),
  a left margin is printed, showing line numbers.  This option suppresses this
  left margin.
! .IP \fB\-fdiagnostics\-minimum\-margin\-width=\fR\fIwidth\fR 4
  .IX Item "-fdiagnostics-minimum-margin-width=width"
  This option controls the minimum width of the left margin printed by
  \&\fB\-fdiagnostics\-show\-line\-numbers\fR.  It defaults to 6.
! .IP \fB\-fdiagnostics\-parseable\-fixits\fR 4
  .IX Item "-fdiagnostics-parseable-fixits"
! Emit fix\-it hints in a machine\-parseable format, suitable for consumption
! by IDEs.  For each fix\-it, a line will be printed after the relevant
! diagnostic, starting with the string "fix\-it:".  For example:
  .Sp
  .Vb 1
  \&        fix\-it:"test.c":{45:3\-45:21}:"gtk_widget_show_all"
  .Ve
  .Sp
! The location is expressed as a half\-open range, expressed as a count of
  bytes, starting at byte 1 for the initial column.  In the above example,
! bytes 3 through 20 of line 45 of "test.c" are to be replaced with the
  given string:
  .Sp
  .Vb 5
*************** given string:
*** 5476,5491 ****
  \&          gtk_widget_show_all
  .Ve
  .Sp
! The filename and replacement string escape backslash as \*(L"\e\e\*(R", tab as \*(L"\et\*(R",
! newline as \*(L"\en\*(R", double quotes as \*(L"\e\*(R"\*(L", non-printable characters as octal
! (e.g. vertical tab as \*(R"\e013").
  .Sp
  An empty replacement string indicates that the given range is to be removed.
! An empty range (e.g. \*(L"45:3\-45:3\*(R") indicates that the string is to
  be inserted at the given position.
! .IP "\fB\-fdiagnostics\-generate\-patch\fR" 4
  .IX Item "-fdiagnostics-generate-patch"
! Print fix-it hints to stderr in unified diff format, after any diagnostics
  are printed.  For example:
  .Sp
  .Vb 3
--- 5409,5424 ----
  \&          gtk_widget_show_all
  .Ve
  .Sp
! The filename and replacement string escape backslash as "\e\e", tab as "\et",
! newline as "\en", double quotes as "\e"", non\-printable characters as octal
! (e.g. vertical tab as "\e013").
  .Sp
  An empty replacement string indicates that the given range is to be removed.
! An empty range (e.g. "45:3\-45:3") indicates that the string is to
  be inserted at the given position.
! .IP \fB\-fdiagnostics\-generate\-patch\fR 4
  .IX Item "-fdiagnostics-generate-patch"
! Print fix\-it hints to stderr in unified diff format, after any diagnostics
  are printed.  For example:
  .Sp
  .Vb 3
*************** are printed.  For example:
*** 5502,5510 ****
  .Sp
  The diff may or may not be colorized, following the same rules
  as for diagnostics (see \fB\-fdiagnostics\-color\fR).
! .IP "\fB\-fdiagnostics\-show\-template\-tree\fR" 4
  .IX Item "-fdiagnostics-show-template-tree"
! In the \*(C+ frontend, when printing diagnostics showing mismatching
  template types, such as:
  .Sp
  .Vb 2
--- 5435,5443 ----
  .Sp
  The diff may or may not be colorized, following the same rules
  as for diagnostics (see \fB\-fdiagnostics\-color\fR).
! .IP \fB\-fdiagnostics\-show\-template\-tree\fR 4
  .IX Item "-fdiagnostics-show-template-tree"
! In the C++ frontend, when printing diagnostics showing mismatching
  template types, such as:
  .Sp
  .Vb 2
*************** template types, such as:
*** 5513,5519 ****
  .Ve
  .Sp
  the \fB\-fdiagnostics\-show\-template\-tree\fR flag enables printing a
! tree-like structure showing the common and differing parts of the types,
  such as:
  .Sp
  .Vb 4
--- 5446,5452 ----
  .Ve
  .Sp
  the \fB\-fdiagnostics\-show\-template\-tree\fR flag enables printing a
! tree\-like structure showing the common and differing parts of the types,
  such as:
  .Sp
  .Vb 4
*************** such as:
*** 5523,5534 ****
  \&              [double != float]>>
  .Ve
  .Sp
! The parts that differ are highlighted with color (\*(L"double\*(R" and
! \&\*(L"float\*(R" in this case).
! .IP "\fB\-fno\-elide\-type\fR" 4
  .IX Item "-fno-elide-type"
! By default when the \*(C+ frontend prints diagnostics showing mismatching
! template types, common parts of the types are printed as \*(L"[...]\*(R" to
  simplify the error message.  For example:
  .Sp
  .Vb 2
--- 5456,5467 ----
  \&              [double != float]>>
  .Ve
  .Sp
! The parts that differ are highlighted with color ("double" and
! "float" in this case).
! .IP \fB\-fno\-elide\-type\fR 4
  .IX Item "-fno-elide-type"
! By default when the C++ frontend prints diagnostics showing mismatching
! template types, common parts of the types are printed as "[...]" to
  simplify the error message.  For example:
  .Sp
  .Vb 2
*************** simplify the error message.  For example
*** 5539,5555 ****
  Specifying the \fB\-fno\-elide\-type\fR flag suppresses that behavior.
  This flag also affects the output of the
  \&\fB\-fdiagnostics\-show\-template\-tree\fR flag.
! .IP "\fB\-fdiagnostics\-path\-format=\fR\fI\s-1KIND\s0\fR" 4
  .IX Item "-fdiagnostics-path-format=KIND"
! Specify how to print paths of control-flow events for diagnostics that
  have such a path associated with them.
  .Sp
! \&\fI\s-1KIND\s0\fR is \fBnone\fR, \fBseparate-events\fR, or \fBinline-events\fR,
  the default.
  .Sp
  \&\fBnone\fR means to not print diagnostic paths.
  .Sp
! \&\fBseparate-events\fR means to print a separate \*(L"note\*(R" diagnostic for
  each event within the diagnostic.  For example:
  .Sp
  .Vb 4
--- 5472,5488 ----
  Specifying the \fB\-fno\-elide\-type\fR flag suppresses that behavior.
  This flag also affects the output of the
  \&\fB\-fdiagnostics\-show\-template\-tree\fR flag.
! .IP \fB\-fdiagnostics\-path\-format=\fR\fIKIND\fR 4
  .IX Item "-fdiagnostics-path-format=KIND"
! Specify how to print paths of control\-flow events for diagnostics that
  have such a path associated with them.
  .Sp
! \&\fIKIND\fR is \fBnone\fR, \fBseparate\-events\fR, or \fBinline\-events\fR,
  the default.
  .Sp
  \&\fBnone\fR means to not print diagnostic paths.
  .Sp
! \&\fBseparate\-events\fR means to print a separate "note" diagnostic for
  each event within the diagnostic.  For example:
  .Sp
  .Vb 4
*************** each event within the diagnostic.  For e
*** 5559,5567 ****
  \&        test.c:29:5: note: (3) when calling \*(AqPyList_Append\*(Aq, passing NULL from (1) as argument 1
  .Ve
  .Sp
! \&\fBinline-events\fR means to print the events \*(L"inline\*(R" within the source
  code.  This view attempts to consolidate the events into runs of
! sufficiently-close events, printing them as labelled ranges within the source.
  .Sp
  For example, the same events as above might be printed as:
  .Sp
--- 5492,5500 ----
  \&        test.c:29:5: note: (3) when calling \*(AqPyList_Append\*(Aq, passing NULL from (1) as argument 1
  .Ve
  .Sp
! \&\fBinline\-events\fR means to print the events "inline" within the source
  code.  This view attempts to consolidate the events into runs of
! sufficiently\-close events, printing them as labelled ranges within the source.
  .Sp
  For example, the same events as above might be printed as:
  .Sp
*************** For example:
*** 5633,5641 ****
  \&            |
  \&        (etc)
  .Ve
! .IP "\fB\-fdiagnostics\-show\-path\-depths\fR" 4
  .IX Item "-fdiagnostics-show-path-depths"
! This option provides additional information when printing control-flow paths
  associated with a diagnostic.
  .Sp
  If this is option is provided then the stack depth will be printed for
--- 5566,5574 ----
  \&            |
  \&        (etc)
  .Ve
! .IP \fB\-fdiagnostics\-show\-path\-depths\fR 4
  .IX Item "-fdiagnostics-show-path-depths"
! This option provides additional information when printing control\-flow paths
  associated with a diagnostic.
  .Sp
  If this is option is provided then the stack depth will be printed for
*************** If provided with \fB\-fdiagnostics\-path
*** 5644,5758 ****
  the stack depth and function declaration will be appended when printing
  each event.
  .Sp
! This is intended for use by \s-1GCC\s0 developers and plugin developers when
  debugging diagnostics that report interprocedural control flow.
! .IP "\fB\-fno\-show\-column\fR" 4
  .IX Item "-fno-show-column"
  Do not print column numbers in diagnostics.  This may be necessary if
  diagnostics are being scanned by a program that does not understand the
  column numbers, such as \fBdejagnu\fR.
! .IP "\fB\-fdiagnostics\-column\-unit=\fR\fI\s-1UNIT\s0\fR" 4
  .IX Item "-fdiagnostics-column-unit=UNIT"
  Select the units for the column number.  This affects traditional diagnostics
! (in the absence of \fB\-fno\-show\-column\fR), as well as \s-1JSON\s0 format
  diagnostics if requested.
  .Sp
! The default \fI\s-1UNIT\s0\fR, \fBdisplay\fR, considers the number of display
  columns occupied by each character.  This may be larger than the number
  of bytes required to encode the character, in the case of tab
  characters, or it may be smaller, in the case of multibyte characters.
! For example, the character \*(L"\s-1GREEK SMALL LETTER PI\s0 (U+03C0)\*(R" occupies one
! display column, and its \s-1UTF\-8\s0 encoding requires two bytes; the character
! \&\*(L"\s-1SLIGHTLY SMILING FACE\s0 (U+1F642)\*(R" occupies two display columns, and
! its \s-1UTF\-8\s0 encoding requires four bytes.
  .Sp
! Setting \fI\s-1UNIT\s0\fR to \fBbyte\fR changes the column number to the raw byte
! count in all cases, as was traditionally output by \s-1GCC\s0 prior to version 11.1.0.
! .IP "\fB\-fdiagnostics\-column\-origin=\fR\fI\s-1ORIGIN\s0\fR" 4
  .IX Item "-fdiagnostics-column-origin=ORIGIN"
  Select the origin for column numbers, i.e. the column number assigned to the
! first column.  The default value of 1 corresponds to traditional \s-1GCC\s0
! behavior and to the \s-1GNU\s0 style guide.  Some utilities may perform better with an
! origin of 0; any non-negative value may be specified.
! .IP "\fB\-fdiagnostics\-escape\-format=\fR\fI\s-1FORMAT\s0\fR" 4
  .IX Item "-fdiagnostics-escape-format=FORMAT"
! When \s-1GCC\s0 prints pertinent source lines for a diagnostic it normally attempts
  to print the source bytes directly.  However, some diagnostics relate to encoding
! issues in the source file, such as malformed \s-1UTF\-8,\s0 or issues with Unicode
! normalization.  These diagnostics are flagged so that \s-1GCC\s0 will escape bytes
! that are not printable \s-1ASCII\s0 when printing their pertinent source lines.
  .Sp
  This option controls how such bytes should be escaped.
  .Sp
! The default \fI\s-1FORMAT\s0\fR, \fBunicode\fR displays Unicode characters that
! are not printable \s-1ASCII\s0 in the form \fB<U+XXXX>\fR, and bytes that do not
! correspond to a Unicode character validly-encoded in UTF\-8\-encoded will be
! displayed as hexadecimal in the form \fB<\s-1XX\s0>\fR.
  .Sp
  For example, a source line containing the string \fBbefore\fR followed by the
! Unicode character U+03C0 (\*(L"\s-1GREEK SMALL LETTER PI\*(R",\s0 with \s-1UTF\-8\s0 encoding
! 0xCF 0x80) followed by the byte 0xBF (a stray \s-1UTF\-8\s0 trailing byte), followed by
  the string \fBafter\fR will be printed for such a diagnostic as:
  .Sp
  .Vb 1
  \&         before<U+03C0><BF>after
  .Ve
  .Sp
! Setting \fI\s-1FORMAT\s0\fR to \fBbytes\fR will display all non-printable-ASCII bytes
! in the form \fB<\s-1XX\s0>\fR, thus showing the underlying encoding of non-ASCII
  Unicode characters.  For the example above, the following will be printed:
  .Sp
  .Vb 1
  \&         before<CF><80><BF>after
  .Ve
! .IP "\fB\-fdiagnostics\-text\-art\-charset=\fR\fI\s-1CHARSET\s0\fR" 4
  .IX Item "-fdiagnostics-text-art-charset=CHARSET"
! Some diagnostics can contain \*(L"text art\*(R" diagrams: visualizations created
  from text, intended to be viewed in a monospaced font.
  .Sp
  This option selects which characters should be used for printing such
! diagrams, if any.  \fI\s-1CHARSET\s0\fR is \fBnone\fR, \fBascii\fR, \fBunicode\fR,
  or \fBemoji\fR.
  .Sp
  The \fBnone\fR value suppresses the printing of such diagrams.
! The \fBascii\fR value will ensure that such diagrams are pure \s-1ASCII\s0
! (\*(L"\s-1ASCII\s0 art\*(R").  The \fBunicode\fR value will allow for conservative use of
! unicode drawing characters (such as box-drawing characters).  The \fBemoji\fR
  value further adds the possibility of emoji in the output (such as emitting
! U+26A0 \s-1WARNING SIGN\s0 followed by U+FE0F \s-1VARIATION SELECTOR\-16\s0 to select the
  emoji variant of the character).
  .Sp
! The default is \fBemoji\fR, except when the environment variable \fB\s-1LANG\s0\fR
  is set to \fBC\fR, in which case the default is \fBascii\fR.
! .IP "\fB\-fdiagnostics\-format=\fR\fI\s-1FORMAT\s0\fR" 4
  .IX Item "-fdiagnostics-format=FORMAT"
  Select a different format for printing diagnostics.
! \&\fI\s-1FORMAT\s0\fR is \fBtext\fR, \fBsarif-stderr\fR, \fBsarif-file\fR,
! \&\fBjson\fR, \fBjson-stderr\fR, or \fBjson-file\fR.
  .Sp
! Using this option replaces any additional \*(L"output sinks\*(R" added by
  \&\fB\-fdiagnostics\-add\-output=\fR, or that set by
  \&\fB\-fdiagnostics\-set\-output=\fR.
  .Sp
  The default is \fBtext\fR.
  .Sp
! The \fBsarif-stderr\fR and \fBsarif-file\fR formats both emit
! diagnostics in \s-1SARIF\s0 Version 2.1.0 format, either to stderr, or to a file
! named \fI\fIsource\fI.sarif\fR, respectively.
  .Sp
! The various \fBjson\fR, \fBjson-stderr\fR, and \fBjson-file\fR values
! are deprecated and refer to a legacy JSON-based output format.
! The \fBjson\fR format is a synonym for \fBjson-stderr\fR.
! The \fBjson-stderr\fR and \fBjson-file\fR formats are identical, apart from
! where the \s-1JSON\s0 is emitted to.  With \fBjson-stderr\fR, the \s-1JSON\s0 is emitted
! to stderr, whereas with \fBjson-file\fR it is written to
! \&\fI\fIsource\fI.gcc.json\fR.
! .IP "\fB\-fdiagnostics\-add\-output=\fR\fIDIAGNOSTICS-OUTPUT-SPEC\fR" 4
  .IX Item "-fdiagnostics-add-output=DIAGNOSTICS-OUTPUT-SPEC"
! Add an additional \*(L"output sink\*(R" for emitting diagnostics.
  .Sp
! \&\fIDIAGNOSTICS-OUTPUT-SPEC\fR should specify a scheme, optionally followed
! by \f(CW\*(C`:\*(C'\fR and one or more \fI\s-1KEY\s0\fR=\fI\s-1VALUE\s0\fR pairs, in this form:
  .Sp
  .Vb 3
  \&        <SCHEME>
--- 5577,5691 ----
  the stack depth and function declaration will be appended when printing
  each event.
  .Sp
! This is intended for use by GCC developers and plugin developers when
  debugging diagnostics that report interprocedural control flow.
! .IP \fB\-fno\-show\-column\fR 4
  .IX Item "-fno-show-column"
  Do not print column numbers in diagnostics.  This may be necessary if
  diagnostics are being scanned by a program that does not understand the
  column numbers, such as \fBdejagnu\fR.
! .IP \fB\-fdiagnostics\-column\-unit=\fR\fIUNIT\fR 4
  .IX Item "-fdiagnostics-column-unit=UNIT"
  Select the units for the column number.  This affects traditional diagnostics
! (in the absence of \fB\-fno\-show\-column\fR), as well as JSON format
  diagnostics if requested.
  .Sp
! The default \fIUNIT\fR, \fBdisplay\fR, considers the number of display
  columns occupied by each character.  This may be larger than the number
  of bytes required to encode the character, in the case of tab
  characters, or it may be smaller, in the case of multibyte characters.
! For example, the character "GREEK SMALL LETTER PI (U+03C0)" occupies one
! display column, and its UTF\-8 encoding requires two bytes; the character
! "SLIGHTLY SMILING FACE (U+1F642)" occupies two display columns, and
! its UTF\-8 encoding requires four bytes.
  .Sp
! Setting \fIUNIT\fR to \fBbyte\fR changes the column number to the raw byte
! count in all cases, as was traditionally output by GCC prior to version 11.1.0.
! .IP \fB\-fdiagnostics\-column\-origin=\fR\fIORIGIN\fR 4
  .IX Item "-fdiagnostics-column-origin=ORIGIN"
  Select the origin for column numbers, i.e. the column number assigned to the
! first column.  The default value of 1 corresponds to traditional GCC
! behavior and to the GNU style guide.  Some utilities may perform better with an
! origin of 0; any non\-negative value may be specified.
! .IP \fB\-fdiagnostics\-escape\-format=\fR\fIFORMAT\fR 4
  .IX Item "-fdiagnostics-escape-format=FORMAT"
! When GCC prints pertinent source lines for a diagnostic it normally attempts
  to print the source bytes directly.  However, some diagnostics relate to encoding
! issues in the source file, such as malformed UTF\-8, or issues with Unicode
! normalization.  These diagnostics are flagged so that GCC will escape bytes
! that are not printable ASCII when printing their pertinent source lines.
  .Sp
  This option controls how such bytes should be escaped.
  .Sp
! The default \fIFORMAT\fR, \fBunicode\fR displays Unicode characters that
! are not printable ASCII in the form \fB<U+XXXX>\fR, and bytes that do not
! correspond to a Unicode character validly\-encoded in UTF\-8\-encoded will be
! displayed as hexadecimal in the form \fB<XX>\fR.
  .Sp
  For example, a source line containing the string \fBbefore\fR followed by the
! Unicode character U+03C0 ("GREEK SMALL LETTER PI", with UTF\-8 encoding
! 0xCF 0x80) followed by the byte 0xBF (a stray UTF\-8 trailing byte), followed by
  the string \fBafter\fR will be printed for such a diagnostic as:
  .Sp
  .Vb 1
  \&         before<U+03C0><BF>after
  .Ve
  .Sp
! Setting \fIFORMAT\fR to \fBbytes\fR will display all non\-printable\-ASCII bytes
! in the form \fB<XX>\fR, thus showing the underlying encoding of non\-ASCII
  Unicode characters.  For the example above, the following will be printed:
  .Sp
  .Vb 1
  \&         before<CF><80><BF>after
  .Ve
! .IP \fB\-fdiagnostics\-text\-art\-charset=\fR\fICHARSET\fR 4
  .IX Item "-fdiagnostics-text-art-charset=CHARSET"
! Some diagnostics can contain "text art" diagrams: visualizations created
  from text, intended to be viewed in a monospaced font.
  .Sp
  This option selects which characters should be used for printing such
! diagrams, if any.  \fICHARSET\fR is \fBnone\fR, \fBascii\fR, \fBunicode\fR,
  or \fBemoji\fR.
  .Sp
  The \fBnone\fR value suppresses the printing of such diagrams.
! The \fBascii\fR value will ensure that such diagrams are pure ASCII
! ("ASCII art").  The \fBunicode\fR value will allow for conservative use of
! unicode drawing characters (such as box\-drawing characters).  The \fBemoji\fR
  value further adds the possibility of emoji in the output (such as emitting
! U+26A0 WARNING SIGN followed by U+FE0F VARIATION SELECTOR\-16 to select the
  emoji variant of the character).
  .Sp
! The default is \fBemoji\fR, except when the environment variable \fBLANG\fR
  is set to \fBC\fR, in which case the default is \fBascii\fR.
! .IP \fB\-fdiagnostics\-format=\fR\fIFORMAT\fR 4
  .IX Item "-fdiagnostics-format=FORMAT"
  Select a different format for printing diagnostics.
! \&\fIFORMAT\fR is \fBtext\fR, \fBsarif\-stderr\fR, \fBsarif\-file\fR,
! \&\fBjson\fR, \fBjson\-stderr\fR, or \fBjson\-file\fR.
  .Sp
! Using this option replaces any additional "output sinks" added by
  \&\fB\-fdiagnostics\-add\-output=\fR, or that set by
  \&\fB\-fdiagnostics\-set\-output=\fR.
  .Sp
  The default is \fBtext\fR.
  .Sp
! The \fBsarif\-stderr\fR and \fBsarif\-file\fR formats both emit
! diagnostics in SARIF Version 2.1.0 format, either to stderr, or to a file
! named \fIsource.sarif\fR, respectively.
  .Sp
! The various \fBjson\fR, \fBjson\-stderr\fR, and \fBjson\-file\fR values
! are deprecated and refer to a legacy JSON\-based output format.
! The \fBjson\fR format is a synonym for \fBjson\-stderr\fR.
! The \fBjson\-stderr\fR and \fBjson\-file\fR formats are identical, apart from
! where the JSON is emitted to.  With \fBjson\-stderr\fR, the JSON is emitted
! to stderr, whereas with \fBjson\-file\fR it is written to
! \&\fIsource.gcc.json\fR.
! .IP \fB\-fdiagnostics\-add\-output=\fR\fIDIAGNOSTICS\-OUTPUT\-SPEC\fR 4
  .IX Item "-fdiagnostics-add-output=DIAGNOSTICS-OUTPUT-SPEC"
! Add an additional "output sink" for emitting diagnostics.
  .Sp
! \&\fIDIAGNOSTICS\-OUTPUT\-SPEC\fR should specify a scheme, optionally followed
! by \f(CW\*(C`:\*(C'\fR and one or more \fIKEY\fR=\fIVALUE\fR pairs, in this form:
  .Sp
  .Vb 3
  \&        <SCHEME>
*************** by \f(CW\*(C`:\*(C'\fR and one or more \
*** 5762,5816 ****
  .Sp
  etc.
  .Sp
! Schemes, keys, or values with a name prefixed \*(L"experimental\*(R" may change
  or be removed without notice.
  .Sp
! \&\fI\s-1SCHEME\s0\fR can be
  .RS 4
! .IP "\fBtext\fR" 4
  .IX Item "text"
! Emit diagnostics to stderr using \s-1GCC\s0's classic text output format.
  .Sp
  Supported keys are:
  .RS 4
! .IP "\fBcolor=\fR[\fByes\fR|\fBno\fR]" 4
  .IX Item "color=[yes|no]"
  Override colorization settings from \fB\-fdiagnostics\-color\fR for this
  text output.
! .IP "\fBexperimental\-nesting=\fR[\fByes\fR|\fBno\fR]" 4
  .IX Item "experimental-nesting=[yes|no]"
  Enable an experimental mode that emphasizes hierarchical relationships
  within diagnostics messages, displaying location information on separate
  lines.
! .IP "\fBexperimental\-nesting\-show\-locations=\fR[\fByes\fR|\fBno\fR]" 4
  .IX Item "experimental-nesting-show-locations=[yes|no]"
  If \f(CW\*(C`experimental\-nesting=yes\*(C'\fR, then by default locations are
  shown; set this key to \f(CW\*(C`no\*(C'\fR to disable printing such locations.
! This exists for use by \s-1GCC\s0 developers, for writing DejaGnu test cases.
! .IP "\fBexperimental\-nesting\-show\-levels=\fR[\fByes\fR|\fBno\fR]" 4
  .IX Item "experimental-nesting-show-levels=[yes|no]"
  This is a debugging option for use with \f(CW\*(C`experimental\-nesting=yes\*(C'\fR.
  Set this key to \f(CW\*(C`yes\*(C'\fR to print explicit nesting levels in the output.
! This exists for use by \s-1GCC\s0 developers.
  .RE
  .RS 4
  .RE
! .IP "\fBsarif\fR" 4
  .IX Item "sarif"
! Emit diagnostics to a file in \s-1SARIF\s0 format.
  .Sp
  Supported keys are:
  .RS 4
! .IP "\fBfile=\fR\fI\s-1FILENAME\s0\fR" 4
  .IX Item "file=FILENAME"
! Specify the filename to write the \s-1SARIF\s0 output to, potentially with a
  leading absolute or relative path.  If not specified, it defaults to
! \&\fI\fIsource\fI.sarif\fR.
! .IP "\fBversion=\fR[\fB2.1\fR|\fB2.2\-prerelease\fR]" 4
  .IX Item "version=[2.1|2.2-prerelease]"
! Specify the version of \s-1SARIF\s0 to use for the output.  If not specified,
  defaults to 2.1.  \f(CW\*(C`2.2\-prerelease\*(C'\fR uses an unofficial draft of the
! future \s-1SARIF 2.2\s0 specification and should only be used for experimentation
  in this release.
  .RE
  .RS 4
--- 5695,5749 ----
  .Sp
  etc.
  .Sp
! Schemes, keys, or values with a name prefixed "experimental" may change
  or be removed without notice.
  .Sp
! \&\fISCHEME\fR can be
  .RS 4
! .IP \fBtext\fR 4
  .IX Item "text"
! Emit diagnostics to stderr using GCC\*(Aqs classic text output format.
  .Sp
  Supported keys are:
  .RS 4
! .IP \fBcolor=\fR[\fByes\fR|\fBno\fR] 4
  .IX Item "color=[yes|no]"
  Override colorization settings from \fB\-fdiagnostics\-color\fR for this
  text output.
! .IP \fBexperimental\-nesting=\fR[\fByes\fR|\fBno\fR] 4
  .IX Item "experimental-nesting=[yes|no]"
  Enable an experimental mode that emphasizes hierarchical relationships
  within diagnostics messages, displaying location information on separate
  lines.
! .IP \fBexperimental\-nesting\-show\-locations=\fR[\fByes\fR|\fBno\fR] 4
  .IX Item "experimental-nesting-show-locations=[yes|no]"
  If \f(CW\*(C`experimental\-nesting=yes\*(C'\fR, then by default locations are
  shown; set this key to \f(CW\*(C`no\*(C'\fR to disable printing such locations.
! This exists for use by GCC developers, for writing DejaGnu test cases.
! .IP \fBexperimental\-nesting\-show\-levels=\fR[\fByes\fR|\fBno\fR] 4
  .IX Item "experimental-nesting-show-levels=[yes|no]"
  This is a debugging option for use with \f(CW\*(C`experimental\-nesting=yes\*(C'\fR.
  Set this key to \f(CW\*(C`yes\*(C'\fR to print explicit nesting levels in the output.
! This exists for use by GCC developers.
  .RE
  .RS 4
  .RE
! .IP \fBsarif\fR 4
  .IX Item "sarif"
! Emit diagnostics to a file in SARIF format.
  .Sp
  Supported keys are:
  .RS 4
! .IP \fBfile=\fR\fIFILENAME\fR 4
  .IX Item "file=FILENAME"
! Specify the filename to write the SARIF output to, potentially with a
  leading absolute or relative path.  If not specified, it defaults to
! \&\fIsource.sarif\fR.
! .IP \fBversion=\fR[\fB2.1\fR|\fB2.2\-prerelease\fR] 4
  .IX Item "version=[2.1|2.2-prerelease]"
! Specify the version of SARIF to use for the output.  If not specified,
  defaults to 2.1.  \f(CW\*(C`2.2\-prerelease\*(C'\fR uses an unofficial draft of the
! future SARIF 2.2 specification and should only be used for experimentation
  in this release.
  .RE
  .RS 4
*************** For example,
*** 5826,5834 ****
  .Ve
  .Sp
  would add a pair of outputs, each writing to a different file, using
! versions 2.1 and 2.2 of the \s-1SARIF\s0 standard respectively.
  .Sp
! In \s-1EBNF:\s0
  .Sp
  .Vb 2
  \&        <diagnostics\-output\-specifier> = <diagnostics\-output\-name>
--- 5759,5767 ----
  .Ve
  .Sp
  would add a pair of outputs, each writing to a different file, using
! versions 2.1 and 2.2 of the SARIF standard respectively.
  .Sp
! In EBNF:
  .Sp
  .Vb 2
  \&        <diagnostics\-output\-specifier> = <diagnostics\-output\-name>
*************** In \s-1EBNF:\s0
*** 5845,5899 ****
  \&        <value> = ? string without a \*(Aq,\*(Aq ? ;
  .Ve
  .RE
! .IP "\fB\-fdiagnostics\-set\-output=\fR\fIDIAGNOSTICS-OUTPUT-SPEC\fR" 4
  .IX Item "-fdiagnostics-set-output=DIAGNOSTICS-OUTPUT-SPEC"
  This works in a similar way to \fB\-fdiagnostics\-add\-output=\fR except
! that instead of adding an additional \*(L"output sink\*(R" for diagnostics, it
  replaces all existing output sinks, such as from \fB\-fdiagnostics\-format=\fR,
  \&\fB\-fdiagnostics\-add\-output=\fR, or a prior call to
  \&\fB\-fdiagnostics\-set\-output=\fR.
! .IP "\fB\-fno\-diagnostics\-json\-formatting\fR" 4
  .IX Item "-fno-diagnostics-json-formatting"
! By default, when \s-1JSON\s0 is emitted for diagnostics (via
  \&\fB\-fdiagnostics\-format=sarif\-stderr\fR,
  \&\fB\-fdiagnostics\-format=sarif\-file\fR,
  \&\fB\-fdiagnostics\-format=json\fR,
  \&\fB\-fdiagnostics\-format=json\-stderr\fR,
  \&\fB\-fdiagnostics\-format=json\-file\fR),
! \&\s-1GCC\s0 will add newlines and indentation to visually emphasize the
! hierarchical structure of the \s-1JSON.\s0
  .Sp
  Use \fB\-fno\-diagnostics\-json\-formatting\fR to suppress this whitespace.
  It must be passed before the option it is to affect.
  .Sp
  This is intended for compatibility with tools that do not expect the output
! to contain newlines, such as that emitted by older \s-1GCC\s0 releases.
  .SS "Options to Request or Suppress Warnings"
  .IX Subsection "Options to Request or Suppress Warnings"
  Warnings are diagnostic messages that report constructions that
  are not inherently erroneous but that are risky or suggest there
  may have been an error.
  .PP
! The following language-independent options do not enable specific
! warnings but control the kinds of diagnostics produced by \s-1GCC.\s0
! .IP "\fB\-fsyntax\-only\fR" 4
  .IX Item "-fsyntax-only"
! Check the code for syntax errors, but don't do anything beyond that.
! .IP "\fB\-fmax\-errors=\fR\fIn\fR" 4
  .IX Item "-fmax-errors=n"
  Limits the maximum number of error messages to \fIn\fR, at which point
! \&\s-1GCC\s0 bails out rather than attempting to continue processing the source
  code.  If \fIn\fR is 0 (the default), there is no limit on the number
  of error messages produced.  If \fB\-Wfatal\-errors\fR is also
  specified, then \fB\-Wfatal\-errors\fR takes precedence over this
  option.
! .IP "\fB\-w\fR" 4
  .IX Item "-w"
  Inhibit all warning messages.
! .IP "\fB\-Werror\fR" 4
  .IX Item "-Werror"
  Turn all warnings into errors.
! .IP "\fB\-Werror=\fR" 4
  .IX Item "-Werror="
  Turn the specified warning into an error.  The specifier for a warning
  is appended; for example \fB\-Werror=switch\fR turns the warnings
--- 5778,5832 ----
  \&        <value> = ? string without a \*(Aq,\*(Aq ? ;
  .Ve
  .RE
! .IP \fB\-fdiagnostics\-set\-output=\fR\fIDIAGNOSTICS\-OUTPUT\-SPEC\fR 4
  .IX Item "-fdiagnostics-set-output=DIAGNOSTICS-OUTPUT-SPEC"
  This works in a similar way to \fB\-fdiagnostics\-add\-output=\fR except
! that instead of adding an additional "output sink" for diagnostics, it
  replaces all existing output sinks, such as from \fB\-fdiagnostics\-format=\fR,
  \&\fB\-fdiagnostics\-add\-output=\fR, or a prior call to
  \&\fB\-fdiagnostics\-set\-output=\fR.
! .IP \fB\-fno\-diagnostics\-json\-formatting\fR 4
  .IX Item "-fno-diagnostics-json-formatting"
! By default, when JSON is emitted for diagnostics (via
  \&\fB\-fdiagnostics\-format=sarif\-stderr\fR,
  \&\fB\-fdiagnostics\-format=sarif\-file\fR,
  \&\fB\-fdiagnostics\-format=json\fR,
  \&\fB\-fdiagnostics\-format=json\-stderr\fR,
  \&\fB\-fdiagnostics\-format=json\-file\fR),
! GCC will add newlines and indentation to visually emphasize the
! hierarchical structure of the JSON.
  .Sp
  Use \fB\-fno\-diagnostics\-json\-formatting\fR to suppress this whitespace.
  It must be passed before the option it is to affect.
  .Sp
  This is intended for compatibility with tools that do not expect the output
! to contain newlines, such as that emitted by older GCC releases.
  .SS "Options to Request or Suppress Warnings"
  .IX Subsection "Options to Request or Suppress Warnings"
  Warnings are diagnostic messages that report constructions that
  are not inherently erroneous but that are risky or suggest there
  may have been an error.
  .PP
! The following language\-independent options do not enable specific
! warnings but control the kinds of diagnostics produced by GCC.
! .IP \fB\-fsyntax\-only\fR 4
  .IX Item "-fsyntax-only"
! Check the code for syntax errors, but don\*(Aqt do anything beyond that.
! .IP \fB\-fmax\-errors=\fR\fIn\fR 4
  .IX Item "-fmax-errors=n"
  Limits the maximum number of error messages to \fIn\fR, at which point
! GCC bails out rather than attempting to continue processing the source
  code.  If \fIn\fR is 0 (the default), there is no limit on the number
  of error messages produced.  If \fB\-Wfatal\-errors\fR is also
  specified, then \fB\-Wfatal\-errors\fR takes precedence over this
  option.
! .IP \fB\-w\fR 4
  .IX Item "-w"
  Inhibit all warning messages.
! .IP \fB\-Werror\fR 4
  .IX Item "-Werror"
  Turn all warnings into errors.
! .IP \fB\-Werror=\fR 4
  .IX Item "-Werror="
  Turn the specified warning into an error.  The specifier for a warning
  is appended; for example \fB\-Werror=switch\fR turns the warnings
*************** option that controls the warning.  That
*** 5912,5918 ****
  Note that specifying \fB\-Werror=\fR\fIfoo\fR automatically implies
  \&\fB\-W\fR\fIfoo\fR.  However, \fB\-Wno\-error=\fR\fIfoo\fR does not
  imply anything.
! .IP "\fB\-Wfatal\-errors\fR" 4
  .IX Item "-Wfatal-errors"
  This option causes the compiler to abort compilation on the first error
  occurred rather than trying to keep going and printing further error
--- 5845,5851 ----
  Note that specifying \fB\-Werror=\fR\fIfoo\fR automatically implies
  \&\fB\-W\fR\fIfoo\fR.  However, \fB\-Wno\-error=\fR\fIfoo\fR does not
  imply anything.
! .IP \fB\-Wfatal\-errors\fR 4
  .IX Item "-Wfatal-errors"
  This option causes the compiler to abort compilation on the first error
  occurred rather than trying to keep going and printing further error
*************** Each of these specific warning options a
*** 5925,5932 ****
  has a negative form beginning with \fB\-Wno\-\fR to turn off warnings; for
  example, \fB\-Wno\-unused\-variable\fR.  This manual lists only one of the
  two forms, whichever is not the default.  For further
! language-specific options also refer to \fB\*(C+ Dialect Options\fR and
! \&\fBObjective-C and Objective\-\*(C+ Dialect Options\fR.
  Additional warnings can be produced by enabling the static analyzer;
  .PP
  Some options, such as \fB\-Wall\fR and \fB\-Wextra\fR, turn on other
--- 5858,5865 ----
  has a negative form beginning with \fB\-Wno\-\fR to turn off warnings; for
  example, \fB\-Wno\-unused\-variable\fR.  This manual lists only one of the
  two forms, whichever is not the default.  For further
! language\-specific options also refer to \fBC++ Dialect Options\fR and
! \&\fBObjective\-C and Objective\-C++ Dialect Options\fR.
  Additional warnings can be produced by enabling the static analyzer;
  .PP
  Some options, such as \fB\-Wall\fR and \fB\-Wextra\fR, turn on other
*************** enabled or disabled via pragmas take eff
*** 5939,5945 ****
  as if they appeared at the end of the command line.
  .PP
  When an unrecognized warning option is requested (e.g.,
! \&\fB\-Wunknown\-warning\fR), \s-1GCC\s0 gives an error stating
  that the option is not recognized.  However, if the \fB\-Wno\-\fR form
  is used, the behavior is slightly different: no diagnostic is
  produced for \fB\-Wno\-unknown\-warning\fR unless other diagnostics
--- 5872,5878 ----
  as if they appeared at the end of the command line.
  .PP
  When an unrecognized warning option is requested (e.g.,
! \&\fB\-Wunknown\-warning\fR), GCC gives an error stating
  that the option is not recognized.  However, if the \fB\-Wno\-\fR form
  is used, the behavior is slightly different: no diagnostic is
  produced for \fB\-Wno\-unknown\-warning\fR unless other diagnostics
*************** warns that an unrecognized option is pre
*** 5949,6003 ****
  .PP
  The effectiveness of some warnings depends on optimizations also being
  enabled. For example, \fB\-Wsuggest\-final\-types\fR is more effective
! with link-time optimization.  Some other warnings may
  not be issued at all unless optimization is enabled.  While optimization
! in general improves the efficacy of warnings about control and data-flow
  problems, in some cases it may also cause false positives.
! .IP "\fB\-Wpedantic\fR" 4
  .IX Item "-Wpedantic"
  .PD 0
! .IP "\fB\-pedantic\fR" 4
  .IX Item "-pedantic"
  .PD
! Issue all the warnings demanded by strict \s-1ISO C\s0 and \s-1ISO \*(C+\s0;
  diagnose all programs that use forbidden extensions, and some other
! programs that do not follow \s-1ISO C\s0 and \s-1ISO \*(C+.\s0  This follows the version
! of the \s-1ISO C\s0 or \*(C+ standard specified by any \fB\-std\fR option used.
  .Sp
! Valid \s-1ISO C\s0 and \s-1ISO \*(C+\s0 programs should compile properly with or without
  this option (though a rare few require \fB\-ansi\fR or a
  \&\fB\-std\fR option specifying the version of the standard).  However,
! without this option, certain \s-1GNU\s0 extensions and traditional C and \*(C+
  features are supported as well.  With this option, they are diagnosed
  (or rejected with \fB\-pedantic\-errors\fR).
  .Sp
  \&\fB\-Wpedantic\fR does not cause warning messages for use of the
  alternate keywords whose names begin and end with \fB_\|_\fR.  This alternate
! format can also be used to disable warnings for non-ISO \fB_\|_intN\fR types,
  i.e. \fB_\|_intN_\|_\fR.
  Pedantic warnings are also disabled in the expression that follows
  \&\f(CW\*(C`_\|_extension_\|_\*(C'\fR.  However, only system header files should use
  these escape routes; application programs should avoid them.
  .Sp
! Some warnings about non-conforming programs are controlled by options
  other than \fB\-Wpedantic\fR; in many cases they are implied by
  \&\fB\-Wpedantic\fR but can be disabled separately by their specific
  option, e.g. \fB\-Wpedantic \-Wno\-pointer\-sign\fR.
  .Sp
! Where the standard specified with \fB\-std\fR represents a \s-1GNU\s0
  extended dialect of C, such as \fBgnu90\fR or \fBgnu99\fR, there is a
! corresponding \fIbase standard\fR, the version of \s-1ISO C\s0 on which the \s-1GNU\s0
  extended dialect is based.  Warnings from \fB\-Wpedantic\fR are given
  where they are required by the base standard.  (It does not make sense
! for such warnings to be given only for features not in the specified \s-1GNU
! C\s0 dialect, since by definition the \s-1GNU\s0 dialects of C include all
  features the compiler supports with the given option, and there would be
  nothing to warn about.)
! .IP "\fB\-pedantic\-errors\fR" 4
  .IX Item "-pedantic-errors"
  Give an error whenever the \fIbase standard\fR (see \fB\-Wpedantic\fR)
  requires a diagnostic, in some cases where there is undefined behavior
! at compile-time and in some other cases that do not prevent compilation
  of programs that are valid according to the standard. This is not
  equivalent to \fB\-Werror=pedantic\fR: the latter option is unlikely to be
  useful, as it only makes errors of the diagnostics that are controlled by
--- 5882,5936 ----
  .PP
  The effectiveness of some warnings depends on optimizations also being
  enabled. For example, \fB\-Wsuggest\-final\-types\fR is more effective
! with link\-time optimization.  Some other warnings may
  not be issued at all unless optimization is enabled.  While optimization
! in general improves the efficacy of warnings about control and data\-flow
  problems, in some cases it may also cause false positives.
! .IP \fB\-Wpedantic\fR 4
  .IX Item "-Wpedantic"
  .PD 0
! .IP \fB\-pedantic\fR 4
  .IX Item "-pedantic"
  .PD
! Issue all the warnings demanded by strict ISO C and ISO C++;
  diagnose all programs that use forbidden extensions, and some other
! programs that do not follow ISO C and ISO C++.  This follows the version
! of the ISO C or C++ standard specified by any \fB\-std\fR option used.
  .Sp
! Valid ISO C and ISO C++ programs should compile properly with or without
  this option (though a rare few require \fB\-ansi\fR or a
  \&\fB\-std\fR option specifying the version of the standard).  However,
! without this option, certain GNU extensions and traditional C and C++
  features are supported as well.  With this option, they are diagnosed
  (or rejected with \fB\-pedantic\-errors\fR).
  .Sp
  \&\fB\-Wpedantic\fR does not cause warning messages for use of the
  alternate keywords whose names begin and end with \fB_\|_\fR.  This alternate
! format can also be used to disable warnings for non\-ISO \fB_\|_intN\fR types,
  i.e. \fB_\|_intN_\|_\fR.
  Pedantic warnings are also disabled in the expression that follows
  \&\f(CW\*(C`_\|_extension_\|_\*(C'\fR.  However, only system header files should use
  these escape routes; application programs should avoid them.
  .Sp
! Some warnings about non\-conforming programs are controlled by options
  other than \fB\-Wpedantic\fR; in many cases they are implied by
  \&\fB\-Wpedantic\fR but can be disabled separately by their specific
  option, e.g. \fB\-Wpedantic \-Wno\-pointer\-sign\fR.
  .Sp
! Where the standard specified with \fB\-std\fR represents a GNU
  extended dialect of C, such as \fBgnu90\fR or \fBgnu99\fR, there is a
! corresponding \fIbase standard\fR, the version of ISO C on which the GNU
  extended dialect is based.  Warnings from \fB\-Wpedantic\fR are given
  where they are required by the base standard.  (It does not make sense
! for such warnings to be given only for features not in the specified GNU
! C dialect, since by definition the GNU dialects of C include all
  features the compiler supports with the given option, and there would be
  nothing to warn about.)
! .IP \fB\-pedantic\-errors\fR 4
  .IX Item "-pedantic-errors"
  Give an error whenever the \fIbase standard\fR (see \fB\-Wpedantic\fR)
  requires a diagnostic, in some cases where there is undefined behavior
! at compile\-time and in some other cases that do not prevent compilation
  of programs that are valid according to the standard. This is not
  equivalent to \fB\-Werror=pedantic\fR: the latter option is unlikely to be
  useful, as it only makes errors of the diagnostics that are controlled by
*************** useful, as it only makes errors of the d
*** 6005,6011 ****
  are always enabled or controlled by options other than \fB\-Wpedantic\fR.
  .Sp
  If you want the required diagnostics that are warnings by default to
! be errors instead, but don't also want to enable the \fB\-Wpedantic\fR
  diagnostics, you can specify \fB\-pedantic\-errors \-Wno\-pedantic\fR
  (or \fB\-pedantic\-errors \-Wno\-error=pedantic\fR to enable them but
  only as warnings).
--- 5938,5944 ----
  are always enabled or controlled by options other than \fB\-Wpedantic\fR.
  .Sp
  If you want the required diagnostics that are warnings by default to
! be errors instead, but don\*(Aqt also want to enable the \fB\-Wpedantic\fR
  diagnostics, you can specify \fB\-pedantic\-errors \-Wno\-pedantic\fR
  (or \fB\-pedantic\-errors \-Wno\-error=pedantic\fR to enable them but
  only as warnings).
*************** Some required diagnostics are errors by
*** 6014,6089 ****
  warnings using \fB\-fpermissive\fR or their specific warning option,
  e.g. \fB\-Wno\-error=narrowing\fR.
  .Sp
! Some diagnostics for non-ISO practices are controlled by specific
  warning options other than \fB\-Wpedantic\fR, but are also made
  errors by \fB\-pedantic\-errors\fR.  For instance:
  .Sp
  \&\fB\-Wattributes\fR (for standard attributes)
! \&\fB\-Wchanges\-meaning\fR (\*(C+)
! \&\fB\-Wcomma\-subscript\fR (\*(C+23 or later)
  \&\fB\-Wdeclaration\-after\-statement\fR (C90 or earlier)
! \&\fB\-Welaborated\-enum\-base\fR (\*(C+11 or later)
  \&\fB\-Wimplicit\-int\fR (C99 or later)
  \&\fB\-Wimplicit\-function\-declaration\fR (C99 or later)
  \&\fB\-Wincompatible\-pointer\-types
  \&\-Wint\-conversion
  \&\-Wlong\-long\fR (C90 or earlier)
  \&\fB\-Wmain
! \&\-Wnarrowing\fR (\*(C+11 or later)
  \&\fB\-Wpointer\-arith
  \&\-Wpointer\-sign
  \&\-Wincompatible\-pointer\-types
! \&\-Wregister\fR (\*(C+17 or later)
  \&\fB\-Wvla\fR (C90 or earlier)
! \&\fB\-Wwrite\-strings\fR (\*(C+11 or later)\fB \fR
! .IP "\fB\-fpermissive\fR" 4
  .IX Item "-fpermissive"
  Downgrade some required diagnostics about nonconformant code from
  errors to warnings.  Thus, using \fB\-fpermissive\fR allows some
! nonconforming code to compile.  Some \*(C+ diagnostics are controlled
! only by this flag, but it also downgrades some C and \*(C+ diagnostics
  that have their own flag:
  .Sp
! \&\fB\-Wdeclaration\-missing\-parameter\-type\fR (C and Objective-C only)
! \&\fB\-Wimplicit\-function\-declaration\fR (C and Objective-C only)
! \&\fB\-Wimplicit\-int\fR (C and Objective-C only)
! \&\fB\-Wincompatible\-pointer\-types\fR (C and Objective-C only)
! \&\fB\-Wint\-conversion\fR (C and Objective-C only)
! \&\fB\-Wnarrowing\fR (\*(C+ and Objective\-\*(C+ only)
! \&\fB\-Wreturn\-mismatch\fR (C and Objective-C only)
! \&\fB\-Wtemplate\-body\fR (\*(C+ and Objective\-\*(C+ only)\fB \fR
  .Sp
  The \fB\-fpermissive\fR option is the default for historic C language
  modes (\fB\-std=c89\fR, \fB\-std=gnu89\fR, \fB\-std=c90\fR,
  \&\fB\-std=gnu90\fR).
! .IP "\fB\-Wall\fR" 4
  .IX Item "-Wall"
  This enables all the warnings about constructions that some users
  consider questionable, and that are easy to avoid (or modify to
  prevent the warning), even in conjunction with macros.  This also
! enables some language-specific warnings described in \fB\*(C+ Dialect
! Options\fR and \fBObjective-C and Objective\-\*(C+ Dialect Options\fR.
  .Sp
  \&\fB\-Wall\fR turns on the following warning flags:
  .Sp
  \&\fB\-Waddress
! \&\-Waligned\-new\fR (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Warray\-bounds=1\fR (only with\fB \fR\fB\-O2\fR)
  \&\fB\-Warray\-compare
  \&\-Warray\-parameter=2
  \&\-Wbool\-compare
  \&\-Wbool\-operation
  \&\-Wc++11\-compat  \-Wc++14\-compat  \-Wc++17compat  \-Wc++20compat
! \&\-Wcatch\-value\fR (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Wchar\-subscripts
! \&\-Wclass\-memaccess\fR (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Wcomment
  \&\-Wdangling\-else
  \&\-Wdangling\-pointer=2
! \&\-Wdelete\-non\-virtual\-dtor\fR (\*(C+ and Objective\-\*(C+ only)
! \&\fB\-Wduplicate\-decl\-specifier\fR (C and Objective-C only)
! \&\fB\-Wenum\-compare\fR (in C/ObjC; this is on by default in \*(C+)
! \&\fB\-Wenum\-int\-mismatch\fR (C and Objective-C only)
  \&\fB\-Wformat=1
  \&\-Wformat\-contains\-nul
  \&\-Wformat\-diag
--- 5947,6022 ----
  warnings using \fB\-fpermissive\fR or their specific warning option,
  e.g. \fB\-Wno\-error=narrowing\fR.
  .Sp
! Some diagnostics for non\-ISO practices are controlled by specific
  warning options other than \fB\-Wpedantic\fR, but are also made
  errors by \fB\-pedantic\-errors\fR.  For instance:
  .Sp
  \&\fB\-Wattributes\fR (for standard attributes)
! \&\fB\-Wchanges\-meaning\fR (C++)
! \&\fB\-Wcomma\-subscript\fR (C++23 or later)
  \&\fB\-Wdeclaration\-after\-statement\fR (C90 or earlier)
! \&\fB\-Welaborated\-enum\-base\fR (C++11 or later)
  \&\fB\-Wimplicit\-int\fR (C99 or later)
  \&\fB\-Wimplicit\-function\-declaration\fR (C99 or later)
  \&\fB\-Wincompatible\-pointer\-types
  \&\-Wint\-conversion
  \&\-Wlong\-long\fR (C90 or earlier)
  \&\fB\-Wmain
! \&\-Wnarrowing\fR (C++11 or later)
  \&\fB\-Wpointer\-arith
  \&\-Wpointer\-sign
  \&\-Wincompatible\-pointer\-types
! \&\-Wregister\fR (C++17 or later)
  \&\fB\-Wvla\fR (C90 or earlier)
! \&\fB\-Wwrite\-strings\fR (C++11 or later)\fB \fR
! .IP \fB\-fpermissive\fR 4
  .IX Item "-fpermissive"
  Downgrade some required diagnostics about nonconformant code from
  errors to warnings.  Thus, using \fB\-fpermissive\fR allows some
! nonconforming code to compile.  Some C++ diagnostics are controlled
! only by this flag, but it also downgrades some C and C++ diagnostics
  that have their own flag:
  .Sp
! \&\fB\-Wdeclaration\-missing\-parameter\-type\fR (C and Objective\-C only)
! \&\fB\-Wimplicit\-function\-declaration\fR (C and Objective\-C only)
! \&\fB\-Wimplicit\-int\fR (C and Objective\-C only)
! \&\fB\-Wincompatible\-pointer\-types\fR (C and Objective\-C only)
! \&\fB\-Wint\-conversion\fR (C and Objective\-C only)
! \&\fB\-Wnarrowing\fR (C++ and Objective\-C++ only)
! \&\fB\-Wreturn\-mismatch\fR (C and Objective\-C only)
! \&\fB\-Wtemplate\-body\fR (C++ and Objective\-C++ only)\fB \fR
  .Sp
  The \fB\-fpermissive\fR option is the default for historic C language
  modes (\fB\-std=c89\fR, \fB\-std=gnu89\fR, \fB\-std=c90\fR,
  \&\fB\-std=gnu90\fR).
! .IP \fB\-Wall\fR 4
  .IX Item "-Wall"
  This enables all the warnings about constructions that some users
  consider questionable, and that are easy to avoid (or modify to
  prevent the warning), even in conjunction with macros.  This also
! enables some language\-specific warnings described in \fBC++ Dialect
! Options\fR and \fBObjective\-C and Objective\-C++ Dialect Options\fR.
  .Sp
  \&\fB\-Wall\fR turns on the following warning flags:
  .Sp
  \&\fB\-Waddress
! \&\-Waligned\-new\fR (C++ and Objective\-C++ only)
  \&\fB\-Warray\-bounds=1\fR (only with\fB \fR\fB\-O2\fR)
  \&\fB\-Warray\-compare
  \&\-Warray\-parameter=2
  \&\-Wbool\-compare
  \&\-Wbool\-operation
  \&\-Wc++11\-compat  \-Wc++14\-compat  \-Wc++17compat  \-Wc++20compat
! \&\-Wcatch\-value\fR (C++ and Objective\-C++ only)
  \&\fB\-Wchar\-subscripts
! \&\-Wclass\-memaccess\fR (C++ and Objective\-C++ only)
  \&\fB\-Wcomment
  \&\-Wdangling\-else
  \&\-Wdangling\-pointer=2
! \&\-Wdelete\-non\-virtual\-dtor\fR (C++ and Objective\-C++ only)
! \&\fB\-Wduplicate\-decl\-specifier\fR (C and Objective\-C only)
! \&\fB\-Wenum\-compare\fR (in C/ObjC; this is on by default in C++)
! \&\fB\-Wenum\-int\-mismatch\fR (C and Objective\-C only)
  \&\fB\-Wformat=1
  \&\-Wformat\-contains\-nul
  \&\-Wformat\-diag
*************** Options\fR and \fBObjective-C and Object
*** 6092,6130 ****
  \&\-Wformat\-truncation=1
  \&\-Wformat\-zero\-length
  \&\-Wframe\-address
! \&\-Wimplicit\fR (C and Objective-C only)
! \&\fB\-Wimplicit\-function\-declaration\fR (C and Objective-C only)
! \&\fB\-Wimplicit\-int\fR (C and Objective-C only)
  \&\fB\-Winfinite\-recursion
! \&\-Winit\-self\fR (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Wint\-in\-bool\-context
  \&\-Wlogical\-not\-parentheses
  \&\-Wmain\fR (only for C/ObjC and unless\fB \fR\fB\-ffreestanding\fR)
  \&\fB\-Wmaybe\-uninitialized
  \&\-Wmemset\-elt\-size
  \&\-Wmemset\-transposed\-args
! \&\-Wmisleading\-indentation\fR (only for C/\*(C+)
  \&\fB\-Wmismatched\-dealloc
! \&\-Wmismatched\-new\-delete\fR (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Wmissing\-attributes
  \&\-Wmissing\-braces\fR (only for C/ObjC)
  \&\fB\-Wmultistatement\-macros
! \&\-Wnarrowing\fR  (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Wnonnull
  \&\-Wnonnull\-compare
! \&\-Wopenmp\-simd\fR (C and \*(C+ only)
! \&\fB\-Woverloaded\-virtual=1\fR (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Wpacked\-not\-aligned
  \&\-Wparentheses
! \&\-Wpessimizing\-move\fR (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Wpointer\-sign\fR (only for C/ObjC)
! \&\fB\-Wrange\-loop\-construct\fR (\*(C+ and Objective\-\*(C+ only)
! \&\fB\-Wreorder\fR (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Wrestrict
  \&\-Wreturn\-type
! \&\-Wself\-move\fR (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Wsequence\-point
! \&\-Wsign\-compare\fR (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Wsizeof\-array\-div
  \&\-Wsizeof\-pointer\-div
  \&\-Wsizeof\-pointer\-memaccess
--- 6025,6063 ----
  \&\-Wformat\-truncation=1
  \&\-Wformat\-zero\-length
  \&\-Wframe\-address
! \&\-Wimplicit\fR (C and Objective\-C only)
! \&\fB\-Wimplicit\-function\-declaration\fR (C and Objective\-C only)
! \&\fB\-Wimplicit\-int\fR (C and Objective\-C only)
  \&\fB\-Winfinite\-recursion
! \&\-Winit\-self\fR (C++ and Objective\-C++ only)
  \&\fB\-Wint\-in\-bool\-context
  \&\-Wlogical\-not\-parentheses
  \&\-Wmain\fR (only for C/ObjC and unless\fB \fR\fB\-ffreestanding\fR)
  \&\fB\-Wmaybe\-uninitialized
  \&\-Wmemset\-elt\-size
  \&\-Wmemset\-transposed\-args
! \&\-Wmisleading\-indentation\fR (only for C/C++)
  \&\fB\-Wmismatched\-dealloc
! \&\-Wmismatched\-new\-delete\fR (C++ and Objective\-C++ only)
  \&\fB\-Wmissing\-attributes
  \&\-Wmissing\-braces\fR (only for C/ObjC)
  \&\fB\-Wmultistatement\-macros
! \&\-Wnarrowing\fR  (C++ and Objective\-C++ only)
  \&\fB\-Wnonnull
  \&\-Wnonnull\-compare
! \&\-Wopenmp\-simd\fR (C and C++ only)
! \&\fB\-Woverloaded\-virtual=1\fR (C++ and Objective\-C++ only)
  \&\fB\-Wpacked\-not\-aligned
  \&\-Wparentheses
! \&\-Wpessimizing\-move\fR (C++ and Objective\-C++ only)
  \&\fB\-Wpointer\-sign\fR (only for C/ObjC)
! \&\fB\-Wrange\-loop\-construct\fR (C++ and Objective\-C++ only)
! \&\fB\-Wreorder\fR (C++ and Objective\-C++ only)
  \&\fB\-Wrestrict
  \&\-Wreturn\-type
! \&\-Wself\-move\fR (C++ and Objective\-C++ only)
  \&\fB\-Wsequence\-point
! \&\-Wsign\-compare\fR (C++ and Objective\-C++ only)
  \&\fB\-Wsizeof\-array\-div
  \&\-Wsizeof\-pointer\-div
  \&\-Wsizeof\-pointer\-memaccess
*************** others warn about constructions that are
*** 6155,6161 ****
  some cases, and there is no simple way to modify the code to suppress
  the warning. Some of them are enabled by \fB\-Wextra\fR but many of
  them must be enabled individually.
! .IP "\fB\-Wextra\fR" 4
  .IX Item "-Wextra"
  This enables some extra warning flags that are not enabled by
  \&\fB\-Wall\fR. (This option used to be called \fB\-W\fR.  The older
--- 6088,6094 ----
  some cases, and there is no simple way to modify the code to suppress
  the warning. Some of them are enabled by \fB\-Wextra\fR but many of
  them must be enabled individually.
! .IP \fB\-Wextra\fR 4
  .IX Item "-Wextra"
  This enables some extra warning flags that are not enabled by
  \&\fB\-Wall\fR. (This option used to be called \fB\-W\fR.  The older
*************** name is still supported, but the newer n
*** 6166,6177 ****
  \&\-Wcalloc\-transposed\-args
  \&\-Wcast\-function\-type
  \&\-Wclobbered
! \&\-Wdangling\-reference\fR (\*(C+ only)
! \&\fB\-Wdeprecated\-copy\fR (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Wempty\-body
  \&\-Wenum\-conversion\fR (only for C/ObjC)
  \&\fB\-Wexpansion\-to\-defined
! \&\-Wignored\-qualifiers\fR  (only for C/\*(C+)
  \&\fB\-Wimplicit\-fallthrough=3
  \&\-Wmaybe\-uninitialized
  \&\-Wmissing\-field\-initializers
--- 6099,6110 ----
  \&\-Wcalloc\-transposed\-args
  \&\-Wcast\-function\-type
  \&\-Wclobbered
! \&\-Wdangling\-reference\fR (C++ only)
! \&\fB\-Wdeprecated\-copy\fR (C++ and Objective\-C++ only)
  \&\fB\-Wempty\-body
  \&\-Wenum\-conversion\fR (only for C/ObjC)
  \&\fB\-Wexpansion\-to\-defined
! \&\-Wignored\-qualifiers\fR  (only for C/C++)
  \&\fB\-Wimplicit\-fallthrough=3
  \&\-Wmaybe\-uninitialized
  \&\-Wmissing\-field\-initializers
*************** name is still supported, but the newer n
*** 6179,6188 ****
  \&\fB\-Wmissing\-parameter\-type\fR (C/ObjC only)
  \&\fB\-Wold\-style\-declaration\fR (C/ObjC only)
  \&\fB\-Woverride\-init\fR (C/ObjC only)
! \&\fB\-Wredundant\-move\fR (\*(C+ and Objective\-\*(C+ only)
! \&\fB\-Wshift\-negative\-value\fR (in \*(C+11 to \*(C+17 and in C99 and newer)
! \&\fB\-Wsign\-compare\fR (\*(C+ and Objective\-\*(C+ only)
! \&\fB\-Wsized\-deallocation\fR (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Wstring\-compare
  \&\-Wtype\-limits
  \&\-Wuninitialized
--- 6112,6121 ----
  \&\fB\-Wmissing\-parameter\-type\fR (C/ObjC only)
  \&\fB\-Wold\-style\-declaration\fR (C/ObjC only)
  \&\fB\-Woverride\-init\fR (C/ObjC only)
! \&\fB\-Wredundant\-move\fR (C++ and Objective\-C++ only)
! \&\fB\-Wshift\-negative\-value\fR (in C++11 to C++17 and in C99 and newer)
! \&\fB\-Wsign\-compare\fR (C++ and Objective\-C++ only)
! \&\fB\-Wsized\-deallocation\fR (C++ and Objective\-C++ only)
  \&\fB\-Wstring\-compare
  \&\-Wtype\-limits
  \&\-Wuninitialized
*************** name is still supported, but the newer n
*** 6193,6233 ****
  The option \fB\-Wextra\fR also prints warning messages for the
  following cases:
  .RS 4
! .IP "*" 4
  A pointer is compared against integer zero with \f(CW\*(C`<\*(C'\fR, \f(CW\*(C`<=\*(C'\fR,
  \&\f(CW\*(C`>\*(C'\fR, or \f(CW\*(C`>=\*(C'\fR.
! .IP "*" 4
! (\*(C+ only) An enumerator and a non-enumerator both appear in a
  conditional expression.
! .IP "*" 4
! (\*(C+ only) Ambiguous virtual bases.
! .IP "*" 4
! (\*(C+ only) Subscripting an array that has been declared \f(CW\*(C`register\*(C'\fR.
! .IP "*" 4
! (\*(C+ only) Taking the address of a variable that has been declared
  \&\f(CW\*(C`register\*(C'\fR.
! .IP "*" 4
! (\*(C+ only) A base class is not initialized in the copy constructor
  of a derived class.
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wabi\fR (C, Objective-C, \*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wabi (C, Objective-C, and Objective- only)"
! Warn about code affected by \s-1ABI\s0 changes.  This includes code that may
! not be compatible with the vendor-neutral \*(C+ \s-1ABI\s0 as well as the psABI
  for the particular target.  The latter warnings are also controlled
  separately by \fB\-Wpsabi\fR, which is implied by \fB\-Wabi\fR.
  .Sp
! Since G++ now defaults to updating the \s-1ABI\s0 with each major release,
! normally \fB\-Wabi\fR warns only about \*(C+ \s-1ABI\s0 compatibility
  problems if there is a check added later in a release series for an
! \&\s-1ABI\s0 issue discovered since the initial release.  \fB\-Wabi\fR warns
! about more things if an older \s-1ABI\s0 version is selected (with
  \&\fB\-fabi\-version=\fR\fIn\fR).
  .Sp
  \&\fB\-Wabi\fR can also be used with an explicit version number to
! warn about \*(C+ \s-1ABI\s0 compatibility with a particular \fB\-fabi\-version\fR
  level, e.g. \fB\-Wabi=2\fR to warn about changes relative to
  \&\fB\-fabi\-version=2\fR.
  .Sp
--- 6126,6166 ----
  The option \fB\-Wextra\fR also prints warning messages for the
  following cases:
  .RS 4
! .IP * 4
  A pointer is compared against integer zero with \f(CW\*(C`<\*(C'\fR, \f(CW\*(C`<=\*(C'\fR,
  \&\f(CW\*(C`>\*(C'\fR, or \f(CW\*(C`>=\*(C'\fR.
! .IP * 4
! (C++ only) An enumerator and a non\-enumerator both appear in a
  conditional expression.
! .IP * 4
! (C++ only) Ambiguous virtual bases.
! .IP * 4
! (C++ only) Subscripting an array that has been declared \f(CW\*(C`register\*(C'\fR.
! .IP * 4
! (C++ only) Taking the address of a variable that has been declared
  \&\f(CW\*(C`register\*(C'\fR.
! .IP * 4
! (C++ only) A base class is not initialized in the copy constructor
  of a derived class.
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wabi\fR (C, Objective\-C, C++ and Objective\-C++ only)" 4
! .IX Item "-Wabi (C, Objective-C, C++ and Objective-C++ only)"
! Warn about code affected by ABI changes.  This includes code that may
! not be compatible with the vendor\-neutral C++ ABI as well as the psABI
  for the particular target.  The latter warnings are also controlled
  separately by \fB\-Wpsabi\fR, which is implied by \fB\-Wabi\fR.
  .Sp
! Since G++ now defaults to updating the ABI with each major release,
! normally \fB\-Wabi\fR warns only about C++ ABI compatibility
  problems if there is a check added later in a release series for an
! ABI issue discovered since the initial release.  \fB\-Wabi\fR warns
! about more things if an older ABI version is selected (with
  \&\fB\-fabi\-version=\fR\fIn\fR).
  .Sp
  \&\fB\-Wabi\fR can also be used with an explicit version number to
! warn about C++ ABI compatibility with a particular \fB\-fabi\-version\fR
  level, e.g. \fB\-Wabi=2\fR to warn about changes relative to
  \&\fB\-fabi\-version=2\fR.
  .Sp
*************** If an explicit version number is provide
*** 6236,6242 ****
  from this option is used for compatibility aliases.  If no explicit
  version number is provided with this option, but
  \&\fB\-fabi\-compat\-version\fR is specified, that version number is
! used for \*(C+ \s-1ABI\s0 warnings.
  .Sp
  Although an effort has been made to warn about
  all such cases, there are probably some cases that are not warned about,
--- 6169,6175 ----
  from this option is used for compatibility aliases.  If no explicit
  version number is provided with this option, but
  \&\fB\-fabi\-compat\-version\fR is specified, that version number is
! used for C++ ABI warnings.
  .Sp
  Although an effort has been made to warn about
  all such cases, there are probably some cases that are not warned about,
*************** concerned about the fact that code gener
*** 6249,6258 ****
  compatible with code generated by other compilers.
  .Sp
  Known incompatibilities in \fB\-fabi\-version=2\fR (which was the
! default from \s-1GCC 3.4\s0 to 4.9) include:
  .RS 4
! .IP "*" 4
! A template with a non-type template parameter of reference type was
  mangled incorrectly:
  .Sp
  .Vb 3
--- 6182,6191 ----
  compatible with code generated by other compilers.
  .Sp
  Known incompatibilities in \fB\-fabi\-version=2\fR (which was the
! default from GCC 3.4 to 4.9) include:
  .RS 4
! .IP * 4
! A template with a non\-type template parameter of reference type was
  mangled incorrectly:
  .Sp
  .Vb 3
*************** mangled incorrectly:
*** 6262,6335 ****
  .Ve
  .Sp
  This was fixed in \fB\-fabi\-version=3\fR.
! .IP "*" 4
! \&\s-1SIMD\s0 vector types declared using \f(CW\*(C`_\|_attribute ((vector_size))\*(C'\fR were
! mangled in a non-standard way that does not allow for overloading of
  functions taking vectors of different sizes.
  .Sp
  The mangling was changed in \fB\-fabi\-version=4\fR.
! .IP "*" 4
  \&\f(CW\*(C`_\|_attribute ((const))\*(C'\fR and \f(CW\*(C`noreturn\*(C'\fR were mangled as type
  qualifiers, and \f(CW\*(C`decltype\*(C'\fR of a plain declaration was folded away.
  .Sp
  These mangling issues were fixed in \fB\-fabi\-version=5\fR.
! .IP "*" 4
  Scoped enumerators passed as arguments to a variadic function are
  promoted like unscoped enumerators, causing \f(CW\*(C`va_arg\*(C'\fR to complain.
  On most targets this does not actually affect the parameter passing
! \&\s-1ABI,\s0 as there is no way to pass an argument smaller than \f(CW\*(C`int\*(C'\fR.
  .Sp
! Also, the \s-1ABI\s0 changed the mangling of template argument packs,
  \&\f(CW\*(C`const_cast\*(C'\fR, \f(CW\*(C`static_cast\*(C'\fR, prefix increment/decrement, and
  a class scope function used as a template argument.
  .Sp
  These issues were corrected in \fB\-fabi\-version=6\fR.
! .IP "*" 4
  Lambdas in default argument scope were mangled incorrectly, and the
! \&\s-1ABI\s0 changed the mangling of \f(CW\*(C`nullptr_t\*(C'\fR.
  .Sp
  These issues were corrected in \fB\-fabi\-version=7\fR.
! .IP "*" 4
! When mangling a function type with function-cv-qualifiers, the
! un-qualified function type was incorrectly treated as a substitution
  candidate.
  .Sp
! This was fixed in \fB\-fabi\-version=8\fR, the default for \s-1GCC 5.1.\s0
! .IP "*" 4
! \&\f(CW\*(C`decltype(nullptr)\*(C'\fR incorrectly had an alignment of 1, leading to
! unaligned accesses.  Note that this did not affect the \s-1ABI\s0 of a
  function with a \f(CW\*(C`nullptr_t\*(C'\fR parameter, as parameters have a
  minimum alignment.
  .Sp
! This was fixed in \fB\-fabi\-version=9\fR, the default for \s-1GCC 5.2.\s0
! .IP "*" 4
! Target-specific attributes that affect the identity of a type, such as
  ia32 calling conventions on a function type (stdcall, regparm, etc.),
  did not affect the mangled name, leading to name collisions when
  function pointers were used as template arguments.
  .Sp
! This was fixed in \fB\-fabi\-version=10\fR, the default for \s-1GCC 6.1.\s0
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wpsabi\fR (C, Objective-C, \*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wpsabi (C, Objective-C, and Objective- only)"
! \&\fB\-Wpsabi\fR enables warnings about processor-specific \s-1ABI\s0
  changes, such as changes in alignment requirements or how function
! arguments are passed.  On several targets, including AArch64, \s-1ARM,\s0
! x86, \s-1MIPS,\s0 RS6000/PowerPC, and S/390, these details have changed
! between different versions of \s-1GCC\s0 and/or different versions of the C
! or \*(C+ language standards in ways that affect binary compatibility of
! compiled code.  With \fB\-Wpsabi\fR, \s-1GCC\s0 can detect potentially
  incompatible usages and warn you about them.
  .Sp
  \&\fB\-Wpsabi\fR is enabled by default, and is also implied by
  \&\fB\-Wabi\fR.
! .IP "\fB\-Wno\-changes\-meaning\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-changes-meaning ( and Objective- only)"
! \&\*(C+ requires that unqualified uses of a name within a class have the
  same meaning in the complete scope of the class, so declaring the name
! after using it is ill-formed:
  .Sp
  .Vb 3
  \&        struct A;
--- 6195,6268 ----
  .Ve
  .Sp
  This was fixed in \fB\-fabi\-version=3\fR.
! .IP * 4
! SIMD vector types declared using \f(CW\*(C`_\|_attribute ((vector_size))\*(C'\fR were
! mangled in a non\-standard way that does not allow for overloading of
  functions taking vectors of different sizes.
  .Sp
  The mangling was changed in \fB\-fabi\-version=4\fR.
! .IP * 4
  \&\f(CW\*(C`_\|_attribute ((const))\*(C'\fR and \f(CW\*(C`noreturn\*(C'\fR were mangled as type
  qualifiers, and \f(CW\*(C`decltype\*(C'\fR of a plain declaration was folded away.
  .Sp
  These mangling issues were fixed in \fB\-fabi\-version=5\fR.
! .IP * 4
  Scoped enumerators passed as arguments to a variadic function are
  promoted like unscoped enumerators, causing \f(CW\*(C`va_arg\*(C'\fR to complain.
  On most targets this does not actually affect the parameter passing
! ABI, as there is no way to pass an argument smaller than \f(CW\*(C`int\*(C'\fR.
  .Sp
! Also, the ABI changed the mangling of template argument packs,
  \&\f(CW\*(C`const_cast\*(C'\fR, \f(CW\*(C`static_cast\*(C'\fR, prefix increment/decrement, and
  a class scope function used as a template argument.
  .Sp
  These issues were corrected in \fB\-fabi\-version=6\fR.
! .IP * 4
  Lambdas in default argument scope were mangled incorrectly, and the
! ABI changed the mangling of \f(CW\*(C`nullptr_t\*(C'\fR.
  .Sp
  These issues were corrected in \fB\-fabi\-version=7\fR.
! .IP * 4
! When mangling a function type with function\-cv\-qualifiers, the
! un\-qualified function type was incorrectly treated as a substitution
  candidate.
  .Sp
! This was fixed in \fB\-fabi\-version=8\fR, the default for GCC 5.1.
! .IP * 4
! \&\f(CWdecltype(nullptr)\fR incorrectly had an alignment of 1, leading to
! unaligned accesses.  Note that this did not affect the ABI of a
  function with a \f(CW\*(C`nullptr_t\*(C'\fR parameter, as parameters have a
  minimum alignment.
  .Sp
! This was fixed in \fB\-fabi\-version=9\fR, the default for GCC 5.2.
! .IP * 4
! Target\-specific attributes that affect the identity of a type, such as
  ia32 calling conventions on a function type (stdcall, regparm, etc.),
  did not affect the mangled name, leading to name collisions when
  function pointers were used as template arguments.
  .Sp
! This was fixed in \fB\-fabi\-version=10\fR, the default for GCC 6.1.
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wpsabi\fR (C, Objective\-C, C++ and Objective\-C++ only)" 4
! .IX Item "-Wpsabi (C, Objective-C, C++ and Objective-C++ only)"
! \&\fB\-Wpsabi\fR enables warnings about processor\-specific ABI
  changes, such as changes in alignment requirements or how function
! arguments are passed.  On several targets, including AArch64, ARM,
! x86, MIPS, RS6000/PowerPC, and S/390, these details have changed
! between different versions of GCC and/or different versions of the C
! or C++ language standards in ways that affect binary compatibility of
! compiled code.  With \fB\-Wpsabi\fR, GCC can detect potentially
  incompatible usages and warn you about them.
  .Sp
  \&\fB\-Wpsabi\fR is enabled by default, and is also implied by
  \&\fB\-Wabi\fR.
! .IP "\fB\-Wno\-changes\-meaning\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-changes-meaning (C++ and Objective-C++ only)"
! C++ requires that unqualified uses of a name within a class have the
  same meaning in the complete scope of the class, so declaring the name
! after using it is ill\-formed:
  .Sp
  .Vb 3
  \&        struct A;
*************** error case can be reduced to a warning w
*** 6344,6381 ****
  \&\fB\-Wno\-error=changes\-meaning\fR or \fB\-fpermissive\fR.
  .Sp
  Both diagnostics are also suppressed by \fB\-fms\-extensions\fR.
! .IP "\fB\-Wchar\-subscripts\fR" 4
  .IX Item "-Wchar-subscripts"
  Warn if an array subscript has type \f(CW\*(C`char\*(C'\fR.  This is a common cause
  of error, as programmers often forget that this type is signed on some
  machines.
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wno\-coverage\-mismatch\fR" 4
  .IX Item "-Wno-coverage-mismatch"
  Warn if feedback profiles do not match when using the
  \&\fB\-fprofile\-use\fR option.
  If a source file is changed between compiling with \fB\-fprofile\-generate\fR
  and with \fB\-fprofile\-use\fR, the files with the profile feedback can fail
! to match the source file and \s-1GCC\s0 cannot use the profile feedback
  information.  By default, this warning is enabled and is treated as an
  error.  \fB\-Wno\-coverage\-mismatch\fR can be used to disable the
  warning or \fB\-Wno\-error=coverage\-mismatch\fR can be used to
  disable the error.  Disabling the error for this warning can result in
  poorly optimized code and is useful only in the
! case of very minor changes such as bug fixes to an existing code-base.
  Completely disabling the warning is not recommended.
! .IP "\fB\-Wno\-coverage\-too\-many\-conditions\fR" 4
  .IX Item "-Wno-coverage-too-many-conditions"
  Warn if \fB\-fcondition\-coverage\fR is used and an expression have too many
! terms and \s-1GCC\s0 gives up coverage.  Coverage is given up when there are more
  terms in the conditional than there are bits in a \f(CW\*(C`gcov_type_unsigned\*(C'\fR.
  This warning is enabled by default.
! .IP "\fB\-Wno\-coverage\-too\-many\-paths\fR" 4
  .IX Item "-Wno-coverage-too-many-paths"
  Warn if \fB\-fpath\-coverage\fR is used and a function has too many
! paths and \s-1GCC\s0 gives up coverage.  Giving up is controlled by
  \&\fB\-fpath\-coverage\-limit\fR.  This warning is enabled by default.
! .IP "\fB\-Wno\-coverage\-invalid\-line\-number\fR" 4
  .IX Item "-Wno-coverage-invalid-line-number"
  Warn in case a function ends earlier than it begins due
  to an invalid linenum macros.  The warning is emitted only
--- 6277,6314 ----
  \&\fB\-Wno\-error=changes\-meaning\fR or \fB\-fpermissive\fR.
  .Sp
  Both diagnostics are also suppressed by \fB\-fms\-extensions\fR.
! .IP \fB\-Wchar\-subscripts\fR 4
  .IX Item "-Wchar-subscripts"
  Warn if an array subscript has type \f(CW\*(C`char\*(C'\fR.  This is a common cause
  of error, as programmers often forget that this type is signed on some
  machines.
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wno\-coverage\-mismatch\fR 4
  .IX Item "-Wno-coverage-mismatch"
  Warn if feedback profiles do not match when using the
  \&\fB\-fprofile\-use\fR option.
  If a source file is changed between compiling with \fB\-fprofile\-generate\fR
  and with \fB\-fprofile\-use\fR, the files with the profile feedback can fail
! to match the source file and GCC cannot use the profile feedback
  information.  By default, this warning is enabled and is treated as an
  error.  \fB\-Wno\-coverage\-mismatch\fR can be used to disable the
  warning or \fB\-Wno\-error=coverage\-mismatch\fR can be used to
  disable the error.  Disabling the error for this warning can result in
  poorly optimized code and is useful only in the
! case of very minor changes such as bug fixes to an existing code\-base.
  Completely disabling the warning is not recommended.
! .IP \fB\-Wno\-coverage\-too\-many\-conditions\fR 4
  .IX Item "-Wno-coverage-too-many-conditions"
  Warn if \fB\-fcondition\-coverage\fR is used and an expression have too many
! terms and GCC gives up coverage.  Coverage is given up when there are more
  terms in the conditional than there are bits in a \f(CW\*(C`gcov_type_unsigned\*(C'\fR.
  This warning is enabled by default.
! .IP \fB\-Wno\-coverage\-too\-many\-paths\fR 4
  .IX Item "-Wno-coverage-too-many-paths"
  Warn if \fB\-fpath\-coverage\fR is used and a function has too many
! paths and GCC gives up coverage.  Giving up is controlled by
  \&\fB\-fpath\-coverage\-limit\fR.  This warning is enabled by default.
! .IP \fB\-Wno\-coverage\-invalid\-line\-number\fR 4
  .IX Item "-Wno-coverage-invalid-line-number"
  Warn in case a function ends earlier than it begins due
  to an invalid linenum macros.  The warning is emitted only
*************** By default, this warning is enabled and
*** 6385,6404 ****
  error.  \fB\-Wno\-coverage\-invalid\-line\-number\fR can be used to disable the
  warning or \fB\-Wno\-error=coverage\-invalid\-line\-number\fR can be used to
  disable the error.
! .IP "\fB\-Wno\-cpp\fR (C, Objective-C, \*(C+, Objective\-\*(C+ and Fortran only)" 4
! .IX Item "-Wno-cpp (C, Objective-C, , Objective- and Fortran only)"
  Suppress warning messages emitted by \f(CW\*(C`#warning\*(C'\fR directives.
! .IP "\fB\-Wdouble\-promotion\fR (C, \*(C+, Objective-C and Objective\-\*(C+ only)" 4
! .IX Item "-Wdouble-promotion (C, , Objective-C and Objective- only)"
  Give a warning when a value of type \f(CW\*(C`float\*(C'\fR is implicitly
! promoted to \f(CW\*(C`double\*(C'\fR.  CPUs with a 32\-bit \*(L"single-precision\*(R"
! floating-point unit implement \f(CW\*(C`float\*(C'\fR in hardware, but emulate
  \&\f(CW\*(C`double\*(C'\fR in software.  On such a machine, doing computations
  using \f(CW\*(C`double\*(C'\fR values is much more expensive because of the
  overhead required for software emulation.
  .Sp
  It is easy to accidentally do computations with \f(CW\*(C`double\*(C'\fR because
! floating-point literals are implicitly of type \f(CW\*(C`double\*(C'\fR.  For
  example, in:
  .Sp
  .Vb 4
--- 6318,6337 ----
  error.  \fB\-Wno\-coverage\-invalid\-line\-number\fR can be used to disable the
  warning or \fB\-Wno\-error=coverage\-invalid\-line\-number\fR can be used to
  disable the error.
! .IP "\fB\-Wno\-cpp\fR (C, Objective\-C, C++, Objective\-C++ and Fortran only)" 4
! .IX Item "-Wno-cpp (C, Objective-C, C++, Objective-C++ and Fortran only)"
  Suppress warning messages emitted by \f(CW\*(C`#warning\*(C'\fR directives.
! .IP "\fB\-Wdouble\-promotion\fR (C, C++, Objective\-C and Objective\-C++ only)" 4
! .IX Item "-Wdouble-promotion (C, C++, Objective-C and Objective-C++ only)"
  Give a warning when a value of type \f(CW\*(C`float\*(C'\fR is implicitly
! promoted to \f(CW\*(C`double\*(C'\fR.  CPUs with a 32\-bit "single\-precision"
! floating\-point unit implement \f(CW\*(C`float\*(C'\fR in hardware, but emulate
  \&\f(CW\*(C`double\*(C'\fR in software.  On such a machine, doing computations
  using \f(CW\*(C`double\*(C'\fR values is much more expensive because of the
  overhead required for software emulation.
  .Sp
  It is easy to accidentally do computations with \f(CW\*(C`double\*(C'\fR because
! floating\-point literals are implicitly of type \f(CW\*(C`double\*(C'\fR.  For
  example, in:
  .Sp
  .Vb 4
*************** example, in:
*** 6409,6424 ****
  .Ve
  .Sp
  the compiler performs the entire computation with \f(CW\*(C`double\*(C'\fR
! because the floating-point literal is a \f(CW\*(C`double\*(C'\fR.
! .IP "\fB\-Wduplicate\-decl\-specifier\fR (C and Objective-C only)" 4
  .IX Item "-Wduplicate-decl-specifier (C and Objective-C only)"
  Warn if a declaration has duplicate \f(CW\*(C`const\*(C'\fR, \f(CW\*(C`volatile\*(C'\fR,
  \&\f(CW\*(C`restrict\*(C'\fR or \f(CW\*(C`_Atomic\*(C'\fR specifier.  This warning is enabled by
  \&\fB\-Wall\fR.
! .IP "\fB\-Wformat\fR" 4
  .IX Item "-Wformat"
  .PD 0
! .IP "\fB\-Wformat=\fR\fIn\fR" 4
  .IX Item "-Wformat=n"
  .PD
  Check calls to \f(CW\*(C`printf\*(C'\fR and \f(CW\*(C`scanf\*(C'\fR, etc., to make sure that
--- 6342,6357 ----
  .Ve
  .Sp
  the compiler performs the entire computation with \f(CW\*(C`double\*(C'\fR
! because the floating\-point literal is a \f(CW\*(C`double\*(C'\fR.
! .IP "\fB\-Wduplicate\-decl\-specifier\fR (C and Objective\-C only)" 4
  .IX Item "-Wduplicate-decl-specifier (C and Objective-C only)"
  Warn if a declaration has duplicate \f(CW\*(C`const\*(C'\fR, \f(CW\*(C`volatile\*(C'\fR,
  \&\f(CW\*(C`restrict\*(C'\fR or \f(CW\*(C`_Atomic\*(C'\fR specifier.  This warning is enabled by
  \&\fB\-Wall\fR.
! .IP \fB\-Wformat\fR 4
  .IX Item "-Wformat"
  .PD 0
! .IP \fB\-Wformat=\fR\fIn\fR 4
  .IX Item "-Wformat=n"
  .PD
  Check calls to \f(CW\*(C`printf\*(C'\fR and \f(CW\*(C`scanf\*(C'\fR, etc., to make sure that
*************** specified, and that the conversions spec
*** 6427,6452 ****
  sense.  This includes standard functions, and others specified by format
  attributes, in the \f(CW\*(C`printf\*(C'\fR,
  \&\f(CW\*(C`scanf\*(C'\fR, \f(CW\*(C`strftime\*(C'\fR and \f(CW\*(C`strfmon\*(C'\fR (an X/Open extension,
! not in the C standard) families (or other target-specific families).
  Which functions are checked without format attributes having been
  specified depends on the standard version selected, and such checks of
  functions without the attribute specified are disabled by
  \&\fB\-ffreestanding\fR or \fB\-fno\-builtin\fR.
  .Sp
! The formats are checked against the format features supported by \s-1GNU\s0
! libc version 2.2.  These include all \s-1ISO C90\s0 and C99 features, as well
! as features from the Single Unix Specification and some \s-1BSD\s0 and \s-1GNU\s0
  extensions.  Other library implementations may not support all these
! features; \s-1GCC\s0 does not support warning about features that go beyond a
! particular library's limitations.  However, if \fB\-Wpedantic\fR is used
  with \fB\-Wformat\fR, warnings are given about format features not
  in the selected standard version (but not for \f(CW\*(C`strfmon\*(C'\fR formats,
  since those are not in any version of the C standard).
  .RS 4
! .IP "\fB\-Wformat=1\fR" 4
  .IX Item "-Wformat=1"
  .PD 0
! .IP "\fB\-Wformat\fR" 4
  .IX Item "-Wformat"
  .PD
  Option \fB\-Wformat\fR is equivalent to \fB\-Wformat=1\fR, and
--- 6360,6385 ----
  sense.  This includes standard functions, and others specified by format
  attributes, in the \f(CW\*(C`printf\*(C'\fR,
  \&\f(CW\*(C`scanf\*(C'\fR, \f(CW\*(C`strftime\*(C'\fR and \f(CW\*(C`strfmon\*(C'\fR (an X/Open extension,
! not in the C standard) families (or other target\-specific families).
  Which functions are checked without format attributes having been
  specified depends on the standard version selected, and such checks of
  functions without the attribute specified are disabled by
  \&\fB\-ffreestanding\fR or \fB\-fno\-builtin\fR.
  .Sp
! The formats are checked against the format features supported by GNU
! libc version 2.2.  These include all ISO C90 and C99 features, as well
! as features from the Single Unix Specification and some BSD and GNU
  extensions.  Other library implementations may not support all these
! features; GCC does not support warning about features that go beyond a
! particular library\*(Aqs limitations.  However, if \fB\-Wpedantic\fR is used
  with \fB\-Wformat\fR, warnings are given about format features not
  in the selected standard version (but not for \f(CW\*(C`strfmon\*(C'\fR formats,
  since those are not in any version of the C standard).
  .RS 4
! .IP \fB\-Wformat=1\fR 4
  .IX Item "-Wformat=1"
  .PD 0
! .IP \fB\-Wformat\fR 4
  .IX Item "-Wformat"
  .PD
  Option \fB\-Wformat\fR is equivalent to \fB\-Wformat=1\fR, and
*************** aspects of this level of format checking
*** 6457,6463 ****
  options: \fB\-Wno\-format\-contains\-nul\fR,
  \&\fB\-Wno\-format\-extra\-args\fR, and \fB\-Wno\-format\-zero\-length\fR.
  \&\fB\-Wformat\fR is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wformat=2\fR" 4
  .IX Item "-Wformat=2"
  Enable \fB\-Wformat\fR plus additional format checks.  Currently
  equivalent to \fB\-Wformat \-Wformat\-nonliteral \-Wformat\-security
--- 6390,6396 ----
  options: \fB\-Wno\-format\-contains\-nul\fR,
  \&\fB\-Wno\-format\-extra\-args\fR, and \fB\-Wno\-format\-zero\-length\fR.
  \&\fB\-Wformat\fR is enabled by \fB\-Wall\fR.
! .IP \fB\-Wformat=2\fR 4
  .IX Item "-Wformat=2"
  Enable \fB\-Wformat\fR plus additional format checks.  Currently
  equivalent to \fB\-Wformat \-Wformat\-nonliteral \-Wformat\-security
*************** equivalent to \fB\-Wformat \-Wformat\-no
*** 6465,6475 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wno\-format\-contains\-nul\fR" 4
  .IX Item "-Wno-format-contains-nul"
  If \fB\-Wformat\fR is specified, do not warn about format strings that
! contain \s-1NUL\s0 bytes.
! .IP "\fB\-Wno\-format\-extra\-args\fR" 4
  .IX Item "-Wno-format-extra-args"
  If \fB\-Wformat\fR is specified, do not warn about excess arguments to a
  \&\f(CW\*(C`printf\*(C'\fR or \f(CW\*(C`scanf\*(C'\fR format function.  The C standard specifies
--- 6398,6408 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-Wno\-format\-contains\-nul\fR 4
  .IX Item "-Wno-format-contains-nul"
  If \fB\-Wformat\fR is specified, do not warn about format strings that
! contain NUL bytes.
! .IP \fB\-Wno\-format\-extra\-args\fR 4
  .IX Item "-Wno-format-extra-args"
  If \fB\-Wformat\fR is specified, do not warn about excess arguments to a
  \&\f(CW\*(C`printf\*(C'\fR or \f(CW\*(C`scanf\*(C'\fR format function.  The C standard specifies
*************** type to pass to \f(CW\*(C`va_arg\*(C'\fR
*** 6482,6505 ****
  in the case of \f(CW\*(C`scanf\*(C'\fR formats, this option suppresses the
  warning if the unused arguments are all pointers, since the Single
  Unix Specification says that such unused arguments are allowed.
! .IP "\fB\-Wformat\-overflow\fR" 4
  .IX Item "-Wformat-overflow"
  .PD 0
! .IP "\fB\-Wformat\-overflow=\fR\fIlevel\fR" 4
  .IX Item "-Wformat-overflow=level"
  .PD
  Warn about calls to formatted input/output functions such as \f(CW\*(C`sprintf\*(C'\fR
  and \f(CW\*(C`vsprintf\*(C'\fR that might overflow the destination buffer.  When the
  exact number of bytes written by a format directive cannot be determined
! at compile-time it is estimated based on heuristics that depend on the
  \&\fIlevel\fR argument and on optimization.  While enabling optimization
  will in most cases improve the accuracy of the warning, it may also
  result in false positives.
  .RS 4
! .IP "\fB\-Wformat\-overflow\fR" 4
  .IX Item "-Wformat-overflow"
  .PD 0
! .IP "\fB\-Wformat\-overflow=1\fR" 4
  .IX Item "-Wformat-overflow=1"
  .PD
  Level \fI1\fR of \fB\-Wformat\-overflow\fR enabled by \fB\-Wformat\fR
--- 6415,6438 ----
  in the case of \f(CW\*(C`scanf\*(C'\fR formats, this option suppresses the
  warning if the unused arguments are all pointers, since the Single
  Unix Specification says that such unused arguments are allowed.
! .IP \fB\-Wformat\-overflow\fR 4
  .IX Item "-Wformat-overflow"
  .PD 0
! .IP \fB\-Wformat\-overflow=\fR\fIlevel\fR 4
  .IX Item "-Wformat-overflow=level"
  .PD
  Warn about calls to formatted input/output functions such as \f(CW\*(C`sprintf\*(C'\fR
  and \f(CW\*(C`vsprintf\*(C'\fR that might overflow the destination buffer.  When the
  exact number of bytes written by a format directive cannot be determined
! at compile\-time it is estimated based on heuristics that depend on the
  \&\fIlevel\fR argument and on optimization.  While enabling optimization
  will in most cases improve the accuracy of the warning, it may also
  result in false positives.
  .RS 4
! .IP \fB\-Wformat\-overflow\fR 4
  .IX Item "-Wformat-overflow"
  .PD 0
! .IP \fB\-Wformat\-overflow=1\fR 4
  .IX Item "-Wformat-overflow=1"
  .PD
  Level \fI1\fR of \fB\-Wformat\-overflow\fR enabled by \fB\-Wformat\fR
*************** likely overflow the buffer.  At this lev
*** 6508,6518 ****
  directives with unknown values are assumed to have the value of one, and
  strings of unknown length to be empty.  Numeric arguments that are known
  to be bounded to a subrange of their type, or string arguments whose output
! is bounded either by their directive's precision or by a finite set of
  string literals, are assumed to take on the value within the range that
  results in the most bytes on output.  For example, the call to \f(CW\*(C`sprintf\*(C'\fR
  below is diagnosed because even with both \fIa\fR and \fIb\fR equal to zero,
! the terminating \s-1NUL\s0 character (\f(CW\*(Aq\e0\*(Aq\fR) appended by the function
  to the destination buffer will be written past its end.  Increasing
  the size of the buffer by a single byte is sufficient to avoid the
  warning, though it may not be sufficient to avoid the overflow.
--- 6441,6451 ----
  directives with unknown values are assumed to have the value of one, and
  strings of unknown length to be empty.  Numeric arguments that are known
  to be bounded to a subrange of their type, or string arguments whose output
! is bounded either by their directive\*(Aqs precision or by a finite set of
  string literals, are assumed to take on the value within the range that
  results in the most bytes on output.  For example, the call to \f(CW\*(C`sprintf\*(C'\fR
  below is diagnosed because even with both \fIa\fR and \fIb\fR equal to zero,
! the terminating NUL character (\f(CW\*(Aq\e0\*(Aq\fR) appended by the function
  to the destination buffer will be written past its end.  Increasing
  the size of the buffer by a single byte is sufficient to avoid the
  warning, though it may not be sufficient to avoid the overflow.
*************** warning, though it may not be sufficient
*** 6524,6537 ****
  \&          sprintf (buf, "a = %i, b = %i\en", a, b);
  \&        }
  .Ve
! .IP "\fB\-Wformat\-overflow=2\fR" 4
  .IX Item "-Wformat-overflow=2"
  Level \fI2\fR warns also about calls that might overflow the destination
  buffer given an argument of sufficient length or magnitude.  At level
  \&\fI2\fR, unknown numeric arguments are assumed to have the minimum
  representable value for signed types with a precision greater than 1, and
  the maximum representable value otherwise.  Unknown string arguments whose
! length cannot be assumed to be bounded either by the directive's precision,
  or by a finite set of string literals they may evaluate to, or the character
  array they may point to, are assumed to be 1 character long.
  .Sp
--- 6457,6470 ----
  \&          sprintf (buf, "a = %i, b = %i\en", a, b);
  \&        }
  .Ve
! .IP \fB\-Wformat\-overflow=2\fR 4
  .IX Item "-Wformat-overflow=2"
  Level \fI2\fR warns also about calls that might overflow the destination
  buffer given an argument of sufficient length or magnitude.  At level
  \&\fI2\fR, unknown numeric arguments are assumed to have the minimum
  representable value for signed types with a precision greater than 1, and
  the maximum representable value otherwise.  Unknown string arguments whose
! length cannot be assumed to be bounded either by the directive\*(Aqs precision,
  or by a finite set of string literals they may evaluate to, or the character
  array they may point to, are assumed to be 1 character long.
  .Sp
*************** this time because with \fIa\fR equal to
*** 6540,6546 ****
  \&\f(CW%i\fR directive will write some of its digits beyond the end of
  the destination buffer.  To make the call safe regardless of the values
  of the two variables, the size of the destination buffer must be increased
! to at least 34 bytes.  \s-1GCC\s0 includes the minimum size of the buffer in
  an informational note following the warning.
  .Sp
  An alternative to increasing the size of the destination buffer is to
--- 6473,6479 ----
  \&\f(CW%i\fR directive will write some of its digits beyond the end of
  the destination buffer.  To make the call safe regardless of the values
  of the two variables, the size of the destination buffer must be increased
! to at least 34 bytes.  GCC includes the minimum size of the buffer in
  an informational note following the warning.
  .Sp
  An alternative to increasing the size of the destination buffer is to
*************** required size of the buffer to 24 bytes.
*** 6565,6620 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wno\-format\-zero\-length\fR" 4
  .IX Item "-Wno-format-zero-length"
! If \fB\-Wformat\fR is specified, do not warn about zero-length formats.
! The C standard specifies that zero-length formats are allowed.
! .IP "\fB\-Wformat\-nonliteral\fR" 4
  .IX Item "-Wformat-nonliteral"
  If \fB\-Wformat\fR is specified, also warn if the format string is not a
  string literal and so cannot be checked, unless the format function
  takes its format arguments as a \f(CW\*(C`va_list\*(C'\fR.
! .IP "\fB\-Wformat\-security\fR" 4
  .IX Item "-Wformat-security"
  If \fB\-Wformat\fR is specified, also warn about uses of format
  functions that represent possible security problems.  At present, this
  warns about calls to \f(CW\*(C`printf\*(C'\fR and \f(CW\*(C`scanf\*(C'\fR functions where the
  format string is not a string literal and there are no format arguments,
  as in \f(CW\*(C`printf (foo);\*(C'\fR.  This may be a security hole if the format
! string came from untrusted input and contains \fB\f(CB%n\fB\fR.  (This is
  currently a subset of what \fB\-Wformat\-nonliteral\fR warns about, but
  in future warnings may be added to \fB\-Wformat\-security\fR that are not
  included in \fB\-Wformat\-nonliteral\fR.)
! .IP "\fB\-Wformat\-signedness\fR" 4
  .IX Item "-Wformat-signedness"
  If \fB\-Wformat\fR is specified, also warn if the format string
  requires an unsigned argument and the argument is signed and vice versa.
! .IP "\fB\-Wformat\-truncation\fR" 4
  .IX Item "-Wformat-truncation"
  .PD 0
! .IP "\fB\-Wformat\-truncation=\fR\fIlevel\fR" 4
  .IX Item "-Wformat-truncation=level"
  .PD
  Warn about calls to formatted input/output functions such as \f(CW\*(C`snprintf\*(C'\fR
  and \f(CW\*(C`vsnprintf\*(C'\fR that might result in output truncation.  When the exact
  number of bytes written by a format directive cannot be determined at
! compile-time it is estimated based on heuristics that depend on
  the \fIlevel\fR argument and on optimization.  While enabling optimization
  will in most cases improve the accuracy of the warning, it may also result
  in false positives.  Except as noted otherwise, the option uses the same
  logic \fB\-Wformat\-overflow\fR.
  .RS 4
! .IP "\fB\-Wformat\-truncation\fR" 4
  .IX Item "-Wformat-truncation"
  .PD 0
! .IP "\fB\-Wformat\-truncation=1\fR" 4
  .IX Item "-Wformat-truncation=1"
  .PD
  Level \fI1\fR of \fB\-Wformat\-truncation\fR enabled by \fB\-Wformat\fR
  employs a conservative approach that warns only about calls to bounded
  functions whose return value is unused and that will most likely result
  in output truncation.
! .IP "\fB\-Wformat\-truncation=2\fR" 4
  .IX Item "-Wformat-truncation=2"
  Level \fI2\fR warns also about calls to bounded functions whose return
  value is used and that might result in truncation given an argument of
--- 6498,6553 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-Wno\-format\-zero\-length\fR 4
  .IX Item "-Wno-format-zero-length"
! If \fB\-Wformat\fR is specified, do not warn about zero\-length formats.
! The C standard specifies that zero\-length formats are allowed.
! .IP \fB\-Wformat\-nonliteral\fR 4
  .IX Item "-Wformat-nonliteral"
  If \fB\-Wformat\fR is specified, also warn if the format string is not a
  string literal and so cannot be checked, unless the format function
  takes its format arguments as a \f(CW\*(C`va_list\*(C'\fR.
! .IP \fB\-Wformat\-security\fR 4
  .IX Item "-Wformat-security"
  If \fB\-Wformat\fR is specified, also warn about uses of format
  functions that represent possible security problems.  At present, this
  warns about calls to \f(CW\*(C`printf\*(C'\fR and \f(CW\*(C`scanf\*(C'\fR functions where the
  format string is not a string literal and there are no format arguments,
  as in \f(CW\*(C`printf (foo);\*(C'\fR.  This may be a security hole if the format
! string came from untrusted input and contains \fR\f(CB%n\fR\fB\fR.  (This is
  currently a subset of what \fB\-Wformat\-nonliteral\fR warns about, but
  in future warnings may be added to \fB\-Wformat\-security\fR that are not
  included in \fB\-Wformat\-nonliteral\fR.)
! .IP \fB\-Wformat\-signedness\fR 4
  .IX Item "-Wformat-signedness"
  If \fB\-Wformat\fR is specified, also warn if the format string
  requires an unsigned argument and the argument is signed and vice versa.
! .IP \fB\-Wformat\-truncation\fR 4
  .IX Item "-Wformat-truncation"
  .PD 0
! .IP \fB\-Wformat\-truncation=\fR\fIlevel\fR 4
  .IX Item "-Wformat-truncation=level"
  .PD
  Warn about calls to formatted input/output functions such as \f(CW\*(C`snprintf\*(C'\fR
  and \f(CW\*(C`vsnprintf\*(C'\fR that might result in output truncation.  When the exact
  number of bytes written by a format directive cannot be determined at
! compile\-time it is estimated based on heuristics that depend on
  the \fIlevel\fR argument and on optimization.  While enabling optimization
  will in most cases improve the accuracy of the warning, it may also result
  in false positives.  Except as noted otherwise, the option uses the same
  logic \fB\-Wformat\-overflow\fR.
  .RS 4
! .IP \fB\-Wformat\-truncation\fR 4
  .IX Item "-Wformat-truncation"
  .PD 0
! .IP \fB\-Wformat\-truncation=1\fR 4
  .IX Item "-Wformat-truncation=1"
  .PD
  Level \fI1\fR of \fB\-Wformat\-truncation\fR enabled by \fB\-Wformat\fR
  employs a conservative approach that warns only about calls to bounded
  functions whose return value is unused and that will most likely result
  in output truncation.
! .IP \fB\-Wformat\-truncation=2\fR 4
  .IX Item "-Wformat-truncation=2"
  Level \fI2\fR warns also about calls to bounded functions whose return
  value is used and that might result in truncation given an argument of
*************** sufficient length or magnitude.
*** 6622,6658 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wformat\-y2k\fR" 4
  .IX Item "-Wformat-y2k"
  If \fB\-Wformat\fR is specified, also warn about \f(CW\*(C`strftime\*(C'\fR
! formats that may yield only a two-digit year.
! .IP "\fB\-Wnonnull\fR" 4
  .IX Item "-Wnonnull"
  Warn about passing a null pointer for arguments marked as
! requiring a non-null value by the \f(CW\*(C`nonnull\*(C'\fR function attribute.
  .Sp
  \&\fB\-Wnonnull\fR is included in \fB\-Wall\fR and \fB\-Wformat\fR.  It
  can be disabled with the \fB\-Wno\-nonnull\fR option.
! .IP "\fB\-Wnonnull\-compare\fR" 4
  .IX Item "-Wnonnull-compare"
  Warn when comparing an argument marked with the \f(CW\*(C`nonnull\*(C'\fR
  function attribute against null inside the function.
  .Sp
  \&\fB\-Wnonnull\-compare\fR is included in \fB\-Wall\fR.  It
  can be disabled with the \fB\-Wno\-nonnull\-compare\fR option.
! .IP "\fB\-Wnull\-dereference\fR" 4
  .IX Item "-Wnull-dereference"
  Warn if the compiler detects paths that trigger erroneous or
  undefined behavior due to dereferencing a null pointer.  This option
  is only active when \fB\-fdelete\-null\-pointer\-checks\fR is active,
  which is enabled by optimizations in most targets.  The precision of
  the warnings depends on the optimization options used.
! .IP "\fB\-Wno\-musttail\-local\-addr\fR" 4
  .IX Item "-Wno-musttail-local-addr"
! Do not warn about passing a pointer (or in \*(C+, a reference) to a
  local variable or label to argument of a \f(CW\*(C`musttail\*(C'\fR call.  Those
  variables go out of scope before the tail call instruction.
! .IP "\fB\-Wmaybe\-musttail\-local\-addr\fR" 4
  .IX Item "-Wmaybe-musttail-local-addr"
  Warn when address of a local variable can escape to a \f(CW\*(C`musttail\*(C'\fR
  call, unless it goes out of scope already before the \f(CW\*(C`musttail\*(C'\fR
--- 6555,6591 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-Wformat\-y2k\fR 4
  .IX Item "-Wformat-y2k"
  If \fB\-Wformat\fR is specified, also warn about \f(CW\*(C`strftime\*(C'\fR
! formats that may yield only a two\-digit year.
! .IP \fB\-Wnonnull\fR 4
  .IX Item "-Wnonnull"
  Warn about passing a null pointer for arguments marked as
! requiring a non\-null value by the \f(CW\*(C`nonnull\*(C'\fR function attribute.
  .Sp
  \&\fB\-Wnonnull\fR is included in \fB\-Wall\fR and \fB\-Wformat\fR.  It
  can be disabled with the \fB\-Wno\-nonnull\fR option.
! .IP \fB\-Wnonnull\-compare\fR 4
  .IX Item "-Wnonnull-compare"
  Warn when comparing an argument marked with the \f(CW\*(C`nonnull\*(C'\fR
  function attribute against null inside the function.
  .Sp
  \&\fB\-Wnonnull\-compare\fR is included in \fB\-Wall\fR.  It
  can be disabled with the \fB\-Wno\-nonnull\-compare\fR option.
! .IP \fB\-Wnull\-dereference\fR 4
  .IX Item "-Wnull-dereference"
  Warn if the compiler detects paths that trigger erroneous or
  undefined behavior due to dereferencing a null pointer.  This option
  is only active when \fB\-fdelete\-null\-pointer\-checks\fR is active,
  which is enabled by optimizations in most targets.  The precision of
  the warnings depends on the optimization options used.
! .IP \fB\-Wno\-musttail\-local\-addr\fR 4
  .IX Item "-Wno-musttail-local-addr"
! Do not warn about passing a pointer (or in C++, a reference) to a
  local variable or label to argument of a \f(CW\*(C`musttail\*(C'\fR call.  Those
  variables go out of scope before the tail call instruction.
! .IP \fB\-Wmaybe\-musttail\-local\-addr\fR 4
  .IX Item "-Wmaybe-musttail-local-addr"
  Warn when address of a local variable can escape to a \f(CW\*(C`musttail\*(C'\fR
  call, unless it goes out of scope already before the \f(CW\*(C`musttail\*(C'\fR
*************** call.
*** 6692,6699 ****
  .Ve
  .Sp
  This warning is enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wnrvo\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wnrvo ( and Objective- only)"
  Warn if the compiler does not elide the copy from a local variable to
  the return value of a function in a context where it is allowed by
  [class.copy.elision].  This elision is commonly known as the Named
--- 6625,6632 ----
  .Ve
  .Sp
  This warning is enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wnrvo\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wnrvo (C++ and Objective-C++ only)"
  Warn if the compiler does not elide the copy from a local variable to
  the return value of a function in a context where it is allowed by
  [class.copy.elision].  This elision is commonly known as the Named
*************** compiler cannot elide copies from both v
*** 6709,6715 ****
  \&          else return v2; // warning: not eliding copy
  \&        }
  .Ve
! .IP "\fB\-Winfinite\-recursion\fR" 4
  .IX Item "-Winfinite-recursion"
  Warn about infinitely recursive calls.  The warning is effective at all
  optimization levels but requires optimization in order to detect infinite
--- 6642,6648 ----
  \&          else return v2; // warning: not eliding copy
  \&        }
  .Ve
! .IP \fB\-Winfinite\-recursion\fR 4
  .IX Item "-Winfinite-recursion"
  Warn about infinitely recursive calls.  The warning is effective at all
  optimization levels but requires optimization in order to detect infinite
*************** recursion in calls between two or more f
*** 6719,6730 ****
  Compare with \fB\-Wanalyzer\-infinite\-recursion\fR which provides a
  similar diagnostic, but is implemented in a different way (as part of
  \&\fB\-fanalyzer\fR).
! .IP "\fB\-Winit\-self\fR (C, \*(C+, Objective-C and Objective\-\*(C+ only)" 4
! .IX Item "-Winit-self (C, , Objective-C and Objective- only)"
  Warn about uninitialized variables that are initialized with themselves.
  Note this option can only be used with the \fB\-Wuninitialized\fR option.
  .Sp
! For example, \s-1GCC\s0 warns about \f(CW\*(C`i\*(C'\fR being uninitialized in the
  following snippet only when \fB\-Winit\-self\fR has been specified:
  .Sp
  .Vb 5
--- 6652,6663 ----
  Compare with \fB\-Wanalyzer\-infinite\-recursion\fR which provides a
  similar diagnostic, but is implemented in a different way (as part of
  \&\fB\-fanalyzer\fR).
! .IP "\fB\-Winit\-self\fR (C, C++, Objective\-C and Objective\-C++ only)" 4
! .IX Item "-Winit-self (C, C++, Objective-C and Objective-C++ only)"
  Warn about uninitialized variables that are initialized with themselves.
  Note this option can only be used with the \fB\-Wuninitialized\fR option.
  .Sp
! For example, GCC warns about \f(CW\*(C`i\*(C'\fR being uninitialized in the
  following snippet only when \fB\-Winit\-self\fR has been specified:
  .Sp
  .Vb 5
*************** following snippet only when \fB\-Winit\-
*** 6735,6742 ****
  \&        }
  .Ve
  .Sp
! This warning is enabled by \fB\-Wall\fR in \*(C+.
! .IP "\fB\-Wno\-implicit\-int\fR (C and Objective-C only)" 4
  .IX Item "-Wno-implicit-int (C and Objective-C only)"
  This option controls warnings when a declaration does not specify a type.
  This warning is enabled by default, as an error, in C99 and later
--- 6668,6675 ----
  \&        }
  .Ve
  .Sp
! This warning is enabled by \fB\-Wall\fR in C++.
! .IP "\fB\-Wno\-implicit\-int\fR (C and Objective\-C only)" 4
  .IX Item "-Wno-implicit-int (C and Objective-C only)"
  This option controls warnings when a declaration does not specify a type.
  This warning is enabled by default, as an error, in C99 and later
*************** to a warning using \fB\-fpermissive\fR (
*** 6745,6751 ****
  errors), or for this error alone, with \fB\-Wno\-error=implicit\-int\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wno\-implicit\-function\-declaration\fR (C and Objective-C only)" 4
  .IX Item "-Wno-implicit-function-declaration (C and Objective-C only)"
  This option controls warnings when a function is used before being declared.
  This warning is enabled by default, as an error, in C99 and later
--- 6678,6684 ----
  errors), or for this error alone, with \fB\-Wno\-error=implicit\-int\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wno\-implicit\-function\-declaration\fR (C and Objective\-C only)" 4
  .IX Item "-Wno-implicit-function-declaration (C and Objective-C only)"
  This option controls warnings when a function is used before being declared.
  This warning is enabled by default, as an error, in C99 and later
*************** errors), or for this error alone, with
*** 6755,6765 ****
  \&\fB\-Wno\-error=implicit\-function\-declaration\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wimplicit\fR (C and Objective-C only)" 4
  .IX Item "-Wimplicit (C and Objective-C only)"
  Same as \fB\-Wimplicit\-int\fR and \fB\-Wimplicit\-function\-declaration\fR.
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Whardened\fR" 4
  .IX Item "-Whardened"
  Warn when \fB\-fhardened\fR did not enable an option from its set (for
  which see \fB\-fhardened\fR).  For instance, using \fB\-fhardened\fR
--- 6688,6698 ----
  \&\fB\-Wno\-error=implicit\-function\-declaration\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wimplicit\fR (C and Objective\-C only)" 4
  .IX Item "-Wimplicit (C and Objective-C only)"
  Same as \fB\-Wimplicit\-int\fR and \fB\-Wimplicit\-function\-declaration\fR.
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Whardened\fR 4
  .IX Item "-Whardened"
  Warn when \fB\-fhardened\fR did not enable an option from its set (for
  which see \fB\-fhardened\fR).  For instance, using \fB\-fhardened\fR
*************** not be enabled by \fB\-fhardened\fR.
*** 6769,6780 ****
  .Sp
  This warning is enabled by default and has effect only when \fB\-fhardened\fR
  is enabled.
! .IP "\fB\-Wimplicit\-fallthrough\fR" 4
  .IX Item "-Wimplicit-fallthrough"
  \&\fB\-Wimplicit\-fallthrough\fR is the same as \fB\-Wimplicit\-fallthrough=3\fR
  and \fB\-Wno\-implicit\-fallthrough\fR is the same as
  \&\fB\-Wimplicit\-fallthrough=0\fR.
! .IP "\fB\-Wimplicit\-fallthrough=\fR\fIn\fR" 4
  .IX Item "-Wimplicit-fallthrough=n"
  Warn when a switch case falls through.  For example:
  .Sp
--- 6702,6713 ----
  .Sp
  This warning is enabled by default and has effect only when \fB\-fhardened\fR
  is enabled.
! .IP \fB\-Wimplicit\-fallthrough\fR 4
  .IX Item "-Wimplicit-fallthrough"
  \&\fB\-Wimplicit\-fallthrough\fR is the same as \fB\-Wimplicit\-fallthrough=3\fR
  and \fB\-Wno\-implicit\-fallthrough\fR is the same as
  \&\fB\-Wimplicit\-fallthrough=0\fR.
! .IP \fB\-Wimplicit\-fallthrough=\fR\fIn\fR 4
  .IX Item "-Wimplicit-fallthrough=n"
  Warn when a switch case falls through.  For example:
  .Sp
*************** warns when appropriate.  E.g.
*** 6815,6821 ****
  .Ve
  .Sp
  Since there are occasions where a switch case fall through is desirable,
! \&\s-1GCC\s0 provides an attribute, \f(CW\*(C`_\|_attribute_\|_ ((fallthrough))\*(C'\fR, that is
  to be used along with a null statement to suppress this warning that
  would normally occur:
  .Sp
--- 6748,6754 ----
  .Ve
  .Sp
  Since there are occasions where a switch case fall through is desirable,
! GCC provides an attribute, \f(CW\*(C`_\|_attribute_\|_ ((fallthrough))\*(C'\fR, that is
  to be used along with a null statement to suppress this warning that
  would normally occur:
  .Sp
*************** would normally occur:
*** 6830,6840 ****
  \&          }
  .Ve
  .Sp
! \&\*(C+17 provides a standard way to suppress the \fB\-Wimplicit\-fallthrough\fR
! warning using \f(CW\*(C`[[fallthrough]];\*(C'\fR instead of the \s-1GNU\s0 attribute.  In \*(C+11
! or \*(C+14 users can use \f(CW\*(C`[[gnu::fallthrough]];\*(C'\fR, which is a \s-1GNU\s0 extension.
  Instead of these attributes, it is also possible to add a fallthrough comment
! to silence the warning.  The whole body of the C or \*(C+ style comment should
  match the given regular expressions listed below.  The option argument \fIn\fR
  specifies what kind of comments are accepted:
  .RS 4
--- 6763,6773 ----
  \&          }
  .Ve
  .Sp
! C++17 and C23 provide a standard way to suppress the \fB\-Wimplicit\-fallthrough\fR
! warning using \f(CW\*(C`[[fallthrough]];\*(C'\fR instead of the GNU attribute.  In C++11
! or C++14 users can use \f(CW\*(C`[[gnu::fallthrough]];\*(C'\fR, which is a GNU extension.
  Instead of these attributes, it is also possible to add a fallthrough comment
! to silence the warning.  The whole body of the C or C++ style comment should
  match the given regular expressions listed below.  The option argument \fIn\fR
  specifies what kind of comments are accepted:
  .RS 4
*************** expression, any comment is used as fallt
*** 6854,6864 ****
  following regular expressions:
  .RS 4
  .ie n .IP "*<""\-fallthrough"">" 4
! .el .IP "*<\f(CW\-fallthrough\fR>" 4
  .IX Item "*<-fallthrough>"
  .PD 0
  .ie n .IP "*<""@fallthrough@"">" 4
! .el .IP "*<\f(CW@fallthrough@\fR>" 4
  .IX Item "*<@fallthrough@>"
  .ie n .IP "*<""lint \-fallthrough[ \et]*"">" 4
  .el .IP "*<\f(CWlint \-fallthrough[ \et]*\fR>" 4
--- 6787,6797 ----
  following regular expressions:
  .RS 4
  .ie n .IP "*<""\-fallthrough"">" 4
! .el .IP *<\f(CW\-fallthrough\fR> 4
  .IX Item "*<-fallthrough>"
  .PD 0
  .ie n .IP "*<""@fallthrough@"">" 4
! .el .IP *<\f(CW@fallthrough@\fR> 4
  .IX Item "*<@fallthrough@>"
  .ie n .IP "*<""lint \-fallthrough[ \et]*"">" 4
  .el .IP "*<\f(CWlint \-fallthrough[ \et]*\fR>" 4
*************** following regular expressions:
*** 6872,6891 ****
  .ie n .IP "*<""[ \et.!]*([Ee]lse,? |[Ii]ntentional(ly)? )?fall(s | |\-)?thr(ough|u)[ \et.!]*(\-[^\en\er]*)?"">" 4
  .el .IP "*<\f(CW[ \et.!]*([Ee]lse,? |[Ii]ntentional(ly)? )?fall(s | |\-)?thr(ough|u)[ \et.!]*(\-[^\en\er]*)?\fR>" 4
  .IX Item "*<[ t.!]*([Ee]lse,? |[Ii]ntentional(ly)? )?fall(s | |-)?thr(ough|u)[ t.!]*(-[^nr]*)?>"
  .RE
  .RS 4
  .RE
  .IP "*<\fB\-Wimplicit\-fallthrough=4\fR case sensitively matches one of the>" 4
  .IX Item "*<-Wimplicit-fallthrough=4 case sensitively matches one of the>"
- .PD
  following regular expressions:
  .RS 4
  .ie n .IP "*<""\-fallthrough"">" 4
! .el .IP "*<\f(CW\-fallthrough\fR>" 4
  .IX Item "*<-fallthrough>"
  .PD 0
  .ie n .IP "*<""@fallthrough@"">" 4
! .el .IP "*<\f(CW@fallthrough@\fR>" 4
  .IX Item "*<@fallthrough@>"
  .ie n .IP "*<""lint \-fallthrough[ \et]*"">" 4
  .el .IP "*<\f(CWlint \-fallthrough[ \et]*\fR>" 4
--- 6805,6824 ----
  .ie n .IP "*<""[ \et.!]*([Ee]lse,? |[Ii]ntentional(ly)? )?fall(s | |\-)?thr(ough|u)[ \et.!]*(\-[^\en\er]*)?"">" 4
  .el .IP "*<\f(CW[ \et.!]*([Ee]lse,? |[Ii]ntentional(ly)? )?fall(s | |\-)?thr(ough|u)[ \et.!]*(\-[^\en\er]*)?\fR>" 4
  .IX Item "*<[ t.!]*([Ee]lse,? |[Ii]ntentional(ly)? )?fall(s | |-)?thr(ough|u)[ t.!]*(-[^nr]*)?>"
+ .PD
  .RE
  .RS 4
  .RE
  .IP "*<\fB\-Wimplicit\-fallthrough=4\fR case sensitively matches one of the>" 4
  .IX Item "*<-Wimplicit-fallthrough=4 case sensitively matches one of the>"
  following regular expressions:
  .RS 4
  .ie n .IP "*<""\-fallthrough"">" 4
! .el .IP *<\f(CW\-fallthrough\fR> 4
  .IX Item "*<-fallthrough>"
  .PD 0
  .ie n .IP "*<""@fallthrough@"">" 4
! .el .IP *<\f(CW@fallthrough@\fR> 4
  .IX Item "*<@fallthrough@>"
  .ie n .IP "*<""lint \-fallthrough[ \et]*"">" 4
  .el .IP "*<\f(CWlint \-fallthrough[ \et]*\fR>" 4
*************** following regular expressions:
*** 6893,6904 ****
  .ie n .IP "*<""[ \et]*FALLTHR(OUGH|U)[ \et]*"">" 4
  .el .IP "*<\f(CW[ \et]*FALLTHR(OUGH|U)[ \et]*\fR>" 4
  .IX Item "*<[ t]*FALLTHR(OUGH|U)[ t]*>"
  .RE
  .RS 4
  .RE
! .IP "*<\fB\-Wimplicit\-fallthrough=5\fR doesn't recognize any comments as>" 4
  .IX Item "*<-Wimplicit-fallthrough=5 doesn't recognize any comments as>"
- .PD
  fallthrough comments, only attributes disable the warning.
  .RE
  .RS 4
--- 6826,6837 ----
  .ie n .IP "*<""[ \et]*FALLTHR(OUGH|U)[ \et]*"">" 4
  .el .IP "*<\f(CW[ \et]*FALLTHR(OUGH|U)[ \et]*\fR>" 4
  .IX Item "*<[ t]*FALLTHR(OUGH|U)[ t]*>"
+ .PD
  .RE
  .RS 4
  .RE
! .IP "*<\fB\-Wimplicit\-fallthrough=5\fR doesn\*(Aqt recognize any comments as>" 4
  .IX Item "*<-Wimplicit-fallthrough=5 doesn't recognize any comments as>"
  fallthrough comments, only attributes disable the warning.
  .RE
  .RS 4
*************** by \f(CW\*(C`case\*(C'\fR or \f(CW\*(C`d
*** 6920,6965 ****
  .Sp
  The \fB\-Wimplicit\-fallthrough=3\fR warning is enabled by \fB\-Wextra\fR.
  .RE
! .IP "\fB\-Wno\-if\-not\-aligned\fR (C, \*(C+, Objective-C and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-if-not-aligned (C, , Objective-C and Objective- only)"
  Control if warnings triggered by the \f(CW\*(C`warn_if_not_aligned\*(C'\fR attribute
  should be issued.  These warnings are enabled by default.
! .IP "\fB\-Wignored\-qualifiers\fR (C and \*(C+ only)" 4
! .IX Item "-Wignored-qualifiers (C and only)"
  Warn if the return type of a function has a type qualifier
! such as \f(CW\*(C`const\*(C'\fR.  For \s-1ISO C\s0 such a type qualifier has no effect,
  since the value returned by a function is not an lvalue.
! For \*(C+, the warning is only emitted for scalar types or \f(CW\*(C`void\*(C'\fR.
! \&\s-1ISO C\s0 prohibits qualified \f(CW\*(C`void\*(C'\fR return types on function
  definitions, so such return types always receive a warning
  even without this option.
  .Sp
  This warning is also enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wno\-ignored\-attributes\fR (C and \*(C+ only)" 4
! .IX Item "-Wno-ignored-attributes (C and only)"
  This option controls warnings when an attribute is ignored.
  This is different from the
  \&\fB\-Wattributes\fR option in that it warns whenever the compiler decides
  to drop an attribute, not that the attribute is either unknown, used in a
  wrong place, etc.  This warning is enabled by default.
! .IP "\fB\-Wmain\fR" 4
  .IX Item "-Wmain"
  Warn if the type of \f(CW\*(C`main\*(C'\fR is suspicious.  \f(CW\*(C`main\*(C'\fR should be
  a function with external linkage, returning int, taking either zero
  arguments, two, or three arguments of appropriate types.  This warning
! is enabled by default in \*(C+ and is enabled by either \fB\-Wall\fR
  or \fB\-Wpedantic\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wmisleading\-indentation\fR (C and \*(C+ only)" 4
! .IX Item "-Wmisleading-indentation (C and only)"
  Warn when the indentation of the code does not reflect the block structure.
  Specifically, a warning is issued for \f(CW\*(C`if\*(C'\fR, \f(CW\*(C`else\*(C'\fR, \f(CW\*(C`while\*(C'\fR, and
  \&\f(CW\*(C`for\*(C'\fR clauses with a guarded statement that does not use braces,
  followed by an unguarded statement with the same indentation.
  .Sp
! In the following example, the call to \*(L"bar\*(R" is misleadingly indented as
! if it were guarded by the \*(L"if\*(R" conditional.
  .Sp
  .Vb 3
  \&          if (some_condition ())
--- 6853,6898 ----
  .Sp
  The \fB\-Wimplicit\-fallthrough=3\fR warning is enabled by \fB\-Wextra\fR.
  .RE
! .IP "\fB\-Wno\-if\-not\-aligned\fR (C, C++, Objective\-C and Objective\-C++ only)" 4
! .IX Item "-Wno-if-not-aligned (C, C++, Objective-C and Objective-C++ only)"
  Control if warnings triggered by the \f(CW\*(C`warn_if_not_aligned\*(C'\fR attribute
  should be issued.  These warnings are enabled by default.
! .IP "\fB\-Wignored\-qualifiers\fR (C and C++ only)" 4
! .IX Item "-Wignored-qualifiers (C and C++ only)"
  Warn if the return type of a function has a type qualifier
! such as \f(CW\*(C`const\*(C'\fR.  For ISO C such a type qualifier has no effect,
  since the value returned by a function is not an lvalue.
! For C++, the warning is only emitted for scalar types or \f(CW\*(C`void\*(C'\fR.
! ISO C prohibits qualified \f(CW\*(C`void\*(C'\fR return types on function
  definitions, so such return types always receive a warning
  even without this option.
  .Sp
  This warning is also enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wno\-ignored\-attributes\fR (C and C++ only)" 4
! .IX Item "-Wno-ignored-attributes (C and C++ only)"
  This option controls warnings when an attribute is ignored.
  This is different from the
  \&\fB\-Wattributes\fR option in that it warns whenever the compiler decides
  to drop an attribute, not that the attribute is either unknown, used in a
  wrong place, etc.  This warning is enabled by default.
! .IP \fB\-Wmain\fR 4
  .IX Item "-Wmain"
  Warn if the type of \f(CW\*(C`main\*(C'\fR is suspicious.  \f(CW\*(C`main\*(C'\fR should be
  a function with external linkage, returning int, taking either zero
  arguments, two, or three arguments of appropriate types.  This warning
! is enabled by default in C++ and is enabled by either \fB\-Wall\fR
  or \fB\-Wpedantic\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wmisleading\-indentation\fR (C and C++ only)" 4
! .IX Item "-Wmisleading-indentation (C and C++ only)"
  Warn when the indentation of the code does not reflect the block structure.
  Specifically, a warning is issued for \f(CW\*(C`if\*(C'\fR, \f(CW\*(C`else\*(C'\fR, \f(CW\*(C`while\*(C'\fR, and
  \&\f(CW\*(C`for\*(C'\fR clauses with a guarded statement that does not use braces,
  followed by an unguarded statement with the same indentation.
  .Sp
! In the following example, the call to "bar" is misleadingly indented as
! if it were guarded by the "if" conditional.
  .Sp
  .Vb 3
  \&          if (some_condition ())
*************** The warning is not issued after a \f(CW\
*** 6987,6994 ****
  typically indicates autogenerated code, and no assumptions can be made
  about the layout of the file that the directive references.
  .Sp
! This warning is enabled by \fB\-Wall\fR in C and \*(C+.
! .IP "\fB\-Wmissing\-attributes\fR" 4
  .IX Item "-Wmissing-attributes"
  Warn when a declaration of a function is missing one or more attributes
  that a related function is declared with and whose absence may adversely
--- 6920,6927 ----
  typically indicates autogenerated code, and no assumptions can be made
  about the layout of the file that the directive references.
  .Sp
! This warning is enabled by \fB\-Wall\fR in C and C++.
! .IP \fB\-Wmissing\-attributes\fR 4
  .IX Item "-Wmissing-attributes"
  Warn when a declaration of a function is missing one or more attributes
  that a related function is declared with and whose absence may adversely
*************** Attributes considered include \f(CW\*(C`
*** 7004,7010 ****
  \&\f(CW\*(C`nonnull\*(C'\fR, \f(CW\*(C`noreturn\*(C'\fR, \f(CW\*(C`nothrow\*(C'\fR, \f(CW\*(C`pure\*(C'\fR,
  \&\f(CW\*(C`returns_nonnull\*(C'\fR, and \f(CW\*(C`returns_twice\*(C'\fR.
  .Sp
! In \*(C+, the warning is issued when an explicit specialization of a primary
  template declared with attribute \f(CW\*(C`alloc_align\*(C'\fR, \f(CW\*(C`alloc_size\*(C'\fR,
  \&\f(CW\*(C`assume_aligned\*(C'\fR, \f(CW\*(C`format\*(C'\fR, \f(CW\*(C`format_arg\*(C'\fR, \f(CW\*(C`malloc\*(C'\fR,
  or \f(CW\*(C`nonnull\*(C'\fR is declared without it.  Attributes \f(CW\*(C`deprecated\*(C'\fR,
--- 6937,6943 ----
  \&\f(CW\*(C`nonnull\*(C'\fR, \f(CW\*(C`noreturn\*(C'\fR, \f(CW\*(C`nothrow\*(C'\fR, \f(CW\*(C`pure\*(C'\fR,
  \&\f(CW\*(C`returns_nonnull\*(C'\fR, and \f(CW\*(C`returns_twice\*(C'\fR.
  .Sp
! In C++, the warning is issued when an explicit specialization of a primary
  template declared with attribute \f(CW\*(C`alloc_align\*(C'\fR, \f(CW\*(C`alloc_size\*(C'\fR,
  \&\f(CW\*(C`assume_aligned\*(C'\fR, \f(CW\*(C`format\*(C'\fR, \f(CW\*(C`format_arg\*(C'\fR, \f(CW\*(C`malloc\*(C'\fR,
  or \f(CW\*(C`nonnull\*(C'\fR is declared without it.  Attributes \f(CW\*(C`deprecated\*(C'\fR,
*************** diagnosed because it is missing one of t
*** 7032,7038 ****
  \&        void* _\|_attribute_\|_ ((malloc))   // missing alloc_size
  \&        allocate<void> (size_t);
  .Ve
! .IP "\fB\-Wmissing\-braces\fR" 4
  .IX Item "-Wmissing-braces"
  Warn if an aggregate or union initializer is not fully bracketed.  In
  the following example, the initializer for \f(CW\*(C`a\*(C'\fR is not fully
--- 6965,6971 ----
  \&        void* _\|_attribute_\|_ ((malloc))   // missing alloc_size
  \&        allocate<void> (size_t);
  .Ve
! .IP \fB\-Wmissing\-braces\fR 4
  .IX Item "-Wmissing-braces"
  Warn if an aggregate or union initializer is not fully bracketed.  In
  the following example, the initializer for \f(CW\*(C`a\*(C'\fR is not fully
*************** bracketed, but that for \f(CW\*(C`b\*(C'
*** 7044,7055 ****
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wmissing\-include\-dirs\fR (C, \*(C+, Objective-C, Objective\-\*(C+ and Fortran only)" 4
! .IX Item "-Wmissing-include-dirs (C, , Objective-C, Objective- and Fortran only)"
! Warn if a user-supplied include directory does not exist. This option is disabled
! by default for C, \*(C+, Objective-C and Objective\-\*(C+. For Fortran, it is partially
  enabled by default by warning for \-I and \-J, only.
! .IP "\fB\-Wno\-missing\-profile\fR" 4
  .IX Item "-Wno-missing-profile"
  This option controls warnings if feedback profiles are missing when using the
  \&\fB\-fprofile\-use\fR option.
--- 6977,6988 ----
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wmissing\-include\-dirs\fR (C, C++, Objective\-C, Objective\-C++ and Fortran only)" 4
! .IX Item "-Wmissing-include-dirs (C, C++, Objective-C, Objective-C++ and Fortran only)"
! Warn if a user\-supplied include directory does not exist. This option is disabled
! by default for C, C++, Objective\-C and Objective\-C++. For Fortran, it is partially
  enabled by default by warning for \-I and \-J, only.
! .IP \fB\-Wno\-missing\-profile\fR 4
  .IX Item "-Wno-missing-profile"
  This option controls warnings if feedback profiles are missing when using the
  \&\fB\-fprofile\-use\fR option.
*************** between compiling with \fB\-fprofile\-ge
*** 7059,7080 ****
  In these cases, the profile feedback data files do not contain any
  profile feedback information for
  the newly added function or file respectively.  Also, in the case when profile
! count data (.gcda) files are removed, \s-1GCC\s0 cannot use any profile feedback
  information.  In all these cases, warnings are issued to inform you that a
  profile generation step is due.
  Ignoring the warning can result in poorly optimized code.
  \&\fB\-Wno\-missing\-profile\fR can be used to
  disable the warning, but this is not recommended and should be done only
! when non-existent profile data is justified.
! .IP "\fB\-Wmismatched\-dealloc\fR" 4
  .IX Item "-Wmismatched-dealloc"
  Warn for calls to deallocation functions with pointer arguments returned
! from allocation functions for which the former isn't a suitable
  deallocator.  A pair of functions can be associated as matching allocators
  and deallocators by use of attribute \f(CW\*(C`malloc\*(C'\fR.  Unless disabled by
  the \fB\-fno\-builtin\fR option the standard functions \f(CW\*(C`calloc\*(C'\fR,
  \&\f(CW\*(C`malloc\*(C'\fR, \f(CW\*(C`realloc\*(C'\fR, and \f(CW\*(C`free\*(C'\fR, as well as the corresponding
! forms of \*(C+ \f(CW\*(C`operator new\*(C'\fR and \f(CW\*(C`operator delete\*(C'\fR are implicitly
  associated as matching allocators and deallocators.  In the following
  example \f(CW\*(C`mydealloc\*(C'\fR is the deallocator for pointers returned from
  \&\f(CW\*(C`myalloc\*(C'\fR.
--- 6992,7013 ----
  In these cases, the profile feedback data files do not contain any
  profile feedback information for
  the newly added function or file respectively.  Also, in the case when profile
! count data (.gcda) files are removed, GCC cannot use any profile feedback
  information.  In all these cases, warnings are issued to inform you that a
  profile generation step is due.
  Ignoring the warning can result in poorly optimized code.
  \&\fB\-Wno\-missing\-profile\fR can be used to
  disable the warning, but this is not recommended and should be done only
! when non\-existent profile data is justified.
! .IP \fB\-Wmismatched\-dealloc\fR 4
  .IX Item "-Wmismatched-dealloc"
  Warn for calls to deallocation functions with pointer arguments returned
! from allocation functions for which the former isn\*(Aqt a suitable
  deallocator.  A pair of functions can be associated as matching allocators
  and deallocators by use of attribute \f(CW\*(C`malloc\*(C'\fR.  Unless disabled by
  the \fB\-fno\-builtin\fR option the standard functions \f(CW\*(C`calloc\*(C'\fR,
  \&\f(CW\*(C`malloc\*(C'\fR, \f(CW\*(C`realloc\*(C'\fR, and \f(CW\*(C`free\*(C'\fR, as well as the corresponding
! forms of C++ \f(CW\*(C`operator new\*(C'\fR and \f(CW\*(C`operator delete\*(C'\fR are implicitly
  associated as matching allocators and deallocators.  In the following
  example \f(CW\*(C`mydealloc\*(C'\fR is the deallocator for pointers returned from
  \&\f(CW\*(C`myalloc\*(C'\fR.
*************** example \f(CW\*(C`mydealloc\*(C'\fR is t
*** 7094,7104 ****
  \&        }
  .Ve
  .Sp
! In \*(C+, the related option \fB\-Wmismatched\-new\-delete\fR diagnoses
  mismatches involving either \f(CW\*(C`operator new\*(C'\fR or \f(CW\*(C`operator delete\*(C'\fR.
  .Sp
  Option \fB\-Wmismatched\-dealloc\fR is included in \fB\-Wall\fR.
! .IP "\fB\-Wmultistatement\-macros\fR" 4
  .IX Item "-Wmultistatement-macros"
  Warn about unsafe multiple statement macros that appear to be guarded
  by a clause such as \f(CW\*(C`if\*(C'\fR, \f(CW\*(C`else\*(C'\fR, \f(CW\*(C`for\*(C'\fR, \f(CW\*(C`switch\*(C'\fR, or
--- 7027,7037 ----
  \&        }
  .Ve
  .Sp
! In C++, the related option \fB\-Wmismatched\-new\-delete\fR diagnoses
  mismatches involving either \f(CW\*(C`operator new\*(C'\fR or \f(CW\*(C`operator delete\*(C'\fR.
  .Sp
  Option \fB\-Wmismatched\-dealloc\fR is included in \fB\-Wall\fR.
! .IP \fB\-Wmultistatement\-macros\fR 4
  .IX Item "-Wmultistatement-macros"
  Warn about unsafe multiple statement macros that appear to be guarded
  by a clause such as \f(CW\*(C`if\*(C'\fR, \f(CW\*(C`else\*(C'\fR, \f(CW\*(C`for\*(C'\fR, \f(CW\*(C`switch\*(C'\fR, or
*************** For example:
*** 7114,7120 ****
  .Ve
  .Sp
  will increment \f(CW\*(C`y\*(C'\fR unconditionally, not just when \f(CW\*(C`c\*(C'\fR holds.
! The can usually be fixed by wrapping the macro in a do-while loop:
  .Sp
  .Vb 3
  \&        #define DOIT do { x++; y++; } while (0)
--- 7047,7053 ----
  .Ve
  .Sp
  will increment \f(CW\*(C`y\*(C'\fR unconditionally, not just when \f(CW\*(C`c\*(C'\fR holds.
! The can usually be fixed by wrapping the macro in a do\-while loop:
  .Sp
  .Vb 3
  \&        #define DOIT do { x++; y++; } while (0)
*************** The can usually be fixed by wrapping the
*** 7122,7129 ****
  \&          DOIT;
  .Ve
  .Sp
! This warning is enabled by \fB\-Wall\fR in C and \*(C+.
! .IP "\fB\-Wparentheses\fR" 4
  .IX Item "-Wparentheses"
  Warn if parentheses are omitted in certain contexts, such
  as when there is an assignment in a context where a truth value
--- 7055,7062 ----
  \&          DOIT;
  .Ve
  .Sp
! This warning is enabled by \fB\-Wall\fR in C and C++.
! .IP \fB\-Wparentheses\fR 4
  .IX Item "-Wparentheses"
  Warn if parentheses are omitted in certain contexts, such
  as when there is an assignment in a context where a truth value
*************** Also warn if a comparison like \f(CW\*(C
*** 7134,7146 ****
  equivalent to \f(CW\*(C`(x<=y ? 1 : 0) <= z\*(C'\fR, which is a different
  interpretation from that of ordinary mathematical notation.
  .Sp
! Also warn for dangerous uses of the \s-1GNU\s0 extension to
  \&\f(CW\*(C`?:\*(C'\fR with omitted middle operand. When the condition
  in the \f(CW\*(C`?\*(C'\fR: operator is a boolean expression, the omitted value is
  always 1.  Often programmers expect it to be a value computed
  inside the conditional expression instead.
  .Sp
! For \*(C+ this also warns for some cases of unnecessary parentheses in
  declarations, which can indicate an attempt at a function call instead
  of a declaration:
  .Sp
--- 7067,7079 ----
  equivalent to \f(CW\*(C`(x<=y ? 1 : 0) <= z\*(C'\fR, which is a different
  interpretation from that of ordinary mathematical notation.
  .Sp
! Also warn for dangerous uses of the GNU extension to
  \&\f(CW\*(C`?:\*(C'\fR with omitted middle operand. When the condition
  in the \f(CW\*(C`?\*(C'\fR: operator is a boolean expression, the omitted value is
  always 1.  Often programmers expect it to be a value computed
  inside the conditional expression instead.
  .Sp
! For C++ this also warns for some cases of unnecessary parentheses in
  declarations, which can indicate an attempt at a function call instead
  of a declaration:
  .Sp
*************** of a declaration:
*** 7153,7160 ****
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wno\-self\-move\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-self-move ( and Objective- only)"
  This warning warns when a value is moved to itself with \f(CW\*(C`std::move\*(C'\fR.
  Such a \f(CW\*(C`std::move\*(C'\fR typically has no effect.
  .Sp
--- 7086,7093 ----
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wno\-self\-move\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-self-move (C++ and Objective-C++ only)"
  This warning warns when a value is moved to itself with \f(CW\*(C`std::move\*(C'\fR.
  Such a \f(CW\*(C`std::move\*(C'\fR typically has no effect.
  .Sp
*************** Such a \f(CW\*(C`std::move\*(C'\fR typic
*** 7171,7182 ****
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wsequence\-point\fR" 4
  .IX Item "-Wsequence-point"
  Warn about code that may have undefined semantics because of violations
! of sequence point rules in the C and \*(C+ standards.
  .Sp
! The C and \*(C+ standards define the order in which expressions in a C/\*(C+
  program are evaluated in terms of \fIsequence points\fR, which represent
  a partial ordering between the execution of parts of the program: those
  executed before the sequence point, and those executed after it.  These
--- 7104,7115 ----
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wsequence\-point\fR 4
  .IX Item "-Wsequence-point"
  Warn about code that may have undefined semantics because of violations
! of sequence point rules in the C and C++ standards.
  .Sp
! The C and C++ standards define the order in which expressions in a C/C++
  program are evaluated in terms of \fIsequence points\fR, which represent
  a partial ordering between the execution of parts of the program: those
  executed before the sequence point, and those executed after it.  These
*************** ruled that function calls do not overlap
*** 7195,7205 ****
  .Sp
  It is not specified when between sequence points modifications to the
  values of objects take effect.  Programs whose behavior depends on this
! have undefined behavior; the C and \*(C+ standards specify that \*(L"Between
  the previous and next sequence point an object shall have its stored
  value modified at most once by the evaluation of an expression.
  Furthermore, the prior value shall be read only to determine the value
! to be stored.\*(R".  If a program breaks these rules, the results on any
  particular implementation are entirely unpredictable.
  .Sp
  Examples of code with undefined behavior are \f(CW\*(C`a = a++;\*(C'\fR, \f(CW\*(C`a[n]
--- 7128,7138 ----
  .Sp
  It is not specified when between sequence points modifications to the
  values of objects take effect.  Programs whose behavior depends on this
! have undefined behavior; the C and C++ standards specify that "Between
  the previous and next sequence point an object shall have its stored
  value modified at most once by the evaluation of an expression.
  Furthermore, the prior value shall be read only to determine the value
! to be stored.".  If a program breaks these rules, the results on any
  particular implementation are entirely unpredictable.
  .Sp
  Examples of code with undefined behavior are \f(CW\*(C`a = a++;\*(C'\fR, \f(CW\*(C`a[n]
*************** diagnosed by this option, and it may giv
*** 7208,7237 ****
  result, but in general it has been found fairly effective at detecting
  this sort of problem in programs.
  .Sp
! The \*(C+17 standard will define the order of evaluation of operands in
! more cases: in particular it requires that the right-hand side of an
! assignment be evaluated before the left-hand side, so the above
  examples are no longer undefined.  But this option will still warn
  about them, to help people avoid writing code that is undefined in C
! and earlier revisions of \*(C+.
  .Sp
  The standard is worded confusingly, therefore there is some debate
  over the precise meaning of the sequence point rules in subtle cases.
  Links to discussions of the problem, including proposed formal
! definitions, may be found on the \s-1GCC\s0 readings page, at
  <\fBhttps://gcc.gnu.org/readings.html\fR>.
  .Sp
! This warning is enabled by \fB\-Wall\fR for C and \*(C+.
! .IP "\fB\-Wno\-return\-local\-addr\fR" 4
  .IX Item "-Wno-return-local-addr"
! Do not warn about returning a pointer (or in \*(C+, a reference) to a
  variable that goes out of scope after the function returns.
! .IP "\fB\-Wreturn\-mismatch\fR" 4
  .IX Item "-Wreturn-mismatch"
  Warn about return statements without an expressions in functions which
  do not return \f(CW\*(C`void\*(C'\fR.  Also warn about a \f(CW\*(C`return\*(C'\fR statement
  with an expression in a function whose return type is \f(CW\*(C`void\*(C'\fR,
! unless the expression type is also \f(CW\*(C`void\*(C'\fR.  As a \s-1GNU\s0 extension, the
  latter case is accepted without a warning unless \fB\-Wpedantic\fR is
  used.
  .Sp
--- 7141,7170 ----
  result, but in general it has been found fairly effective at detecting
  this sort of problem in programs.
  .Sp
! The C++17 standard will define the order of evaluation of operands in
! more cases: in particular it requires that the right\-hand side of an
! assignment be evaluated before the left\-hand side, so the above
  examples are no longer undefined.  But this option will still warn
  about them, to help people avoid writing code that is undefined in C
! and earlier revisions of C++.
  .Sp
  The standard is worded confusingly, therefore there is some debate
  over the precise meaning of the sequence point rules in subtle cases.
  Links to discussions of the problem, including proposed formal
! definitions, may be found on the GCC readings page, at
  <\fBhttps://gcc.gnu.org/readings.html\fR>.
  .Sp
! This warning is enabled by \fB\-Wall\fR for C and C++.
! .IP \fB\-Wno\-return\-local\-addr\fR 4
  .IX Item "-Wno-return-local-addr"
! Do not warn about returning a pointer (or in C++, a reference) to a
  variable that goes out of scope after the function returns.
! .IP \fB\-Wreturn\-mismatch\fR 4
  .IX Item "-Wreturn-mismatch"
  Warn about return statements without an expressions in functions which
  do not return \f(CW\*(C`void\*(C'\fR.  Also warn about a \f(CW\*(C`return\*(C'\fR statement
  with an expression in a function whose return type is \f(CW\*(C`void\*(C'\fR,
! unless the expression type is also \f(CW\*(C`void\*(C'\fR.  As a GNU extension, the
  latter case is accepted without a warning unless \fB\-Wpedantic\fR is
  used.
  .Sp
*************** This warning is specific to C and enable
*** 7243,7249 ****
  language dialects, it is treated as an error.  It can be downgraded
  to a warning using \fB\-fpermissive\fR (along with other warnings),
  or for just this warning, with \fB\-Wno\-error=return\-mismatch\fR.
! .IP "\fB\-Wreturn\-type\fR" 4
  .IX Item "-Wreturn-type"
  Warn whenever a function is defined with a return type that defaults to
  \&\f(CW\*(C`int\*(C'\fR (unless \fB\-Wimplicit\-int\fR is active, which takes
--- 7176,7182 ----
  language dialects, it is treated as an error.  It can be downgraded
  to a warning using \fB\-fpermissive\fR (along with other warnings),
  or for just this warning, with \fB\-Wno\-error=return\-mismatch\fR.
! .IP \fB\-Wreturn\-type\fR 4
  .IX Item "-Wreturn-type"
  Warn whenever a function is defined with a return type that defaults to
  \&\f(CW\*(C`int\*(C'\fR (unless \fB\-Wimplicit\-int\fR is active, which takes
*************** Attempting to use the return value of a
*** 7254,7300 ****
  than \f(CW\*(C`main\*(C'\fR that flows off the end by reaching the closing curly
  brace that terminates the function is undefined.
  .Sp
! Unlike in C, in \*(C+, flowing off the end of a non\-\f(CW\*(C`void\*(C'\fR function other
  than \f(CW\*(C`main\*(C'\fR results in undefined behavior even when the value of
  the function is not used.
  .Sp
! This warning is enabled by default in \*(C+ and by \fB\-Wall\fR otherwise.
! .IP "\fB\-Wno\-shift\-count\-negative\fR" 4
  .IX Item "-Wno-shift-count-negative"
  Controls warnings if a shift count is negative.
  This warning is enabled by default.
! .IP "\fB\-Wno\-shift\-count\-overflow\fR" 4
  .IX Item "-Wno-shift-count-overflow"
  Controls warnings if a shift count is greater than or equal to the bit width
  of the type.  This warning is enabled by default.
! .IP "\fB\-Wshift\-negative\-value\fR" 4
  .IX Item "-Wshift-negative-value"
  Warn if left shifting a negative value.  This warning is enabled by
! \&\fB\-Wextra\fR in C99 (and newer) and \*(C+11 to \*(C+17 modes.
! .IP "\fB\-Wno\-shift\-overflow\fR" 4
  .IX Item "-Wno-shift-overflow"
  .PD 0
! .IP "\fB\-Wshift\-overflow=\fR\fIn\fR" 4
  .IX Item "-Wshift-overflow=n"
  .PD
  These options control warnings about left shift overflows.
  .RS 4
! .IP "\fB\-Wshift\-overflow=1\fR" 4
  .IX Item "-Wshift-overflow=1"
  This is the warning level of \fB\-Wshift\-overflow\fR and is enabled
! by default in C99 and \*(C+11 modes (and newer).  This warning level does
! not warn about left-shifting 1 into the sign bit.  (However, in C, such
  an overflow is still rejected in contexts where an integer constant expression
! is required.)  No warning is emitted in \*(C+20 mode (and newer), as signed left
  shifts always wrap.
! .IP "\fB\-Wshift\-overflow=2\fR" 4
  .IX Item "-Wshift-overflow=2"
! This warning level also warns about left-shifting 1 into the sign bit,
! unless \*(C+14 mode (or newer) is active.
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wswitch\fR" 4
  .IX Item "-Wswitch"
  Warn whenever a \f(CW\*(C`switch\*(C'\fR statement has an index of enumerated type
  and lacks a \f(CW\*(C`case\*(C'\fR for one or more of the named codes of that
--- 7187,7233 ----
  than \f(CW\*(C`main\*(C'\fR that flows off the end by reaching the closing curly
  brace that terminates the function is undefined.
  .Sp
! Unlike in C, in C++, flowing off the end of a non\-\f(CW\*(C`void\*(C'\fR function other
  than \f(CW\*(C`main\*(C'\fR results in undefined behavior even when the value of
  the function is not used.
  .Sp
! This warning is enabled by default in C++ and by \fB\-Wall\fR otherwise.
! .IP \fB\-Wno\-shift\-count\-negative\fR 4
  .IX Item "-Wno-shift-count-negative"
  Controls warnings if a shift count is negative.
  This warning is enabled by default.
! .IP \fB\-Wno\-shift\-count\-overflow\fR 4
  .IX Item "-Wno-shift-count-overflow"
  Controls warnings if a shift count is greater than or equal to the bit width
  of the type.  This warning is enabled by default.
! .IP \fB\-Wshift\-negative\-value\fR 4
  .IX Item "-Wshift-negative-value"
  Warn if left shifting a negative value.  This warning is enabled by
! \&\fB\-Wextra\fR in C99 (and newer) and C++11 to C++17 modes.
! .IP \fB\-Wno\-shift\-overflow\fR 4
  .IX Item "-Wno-shift-overflow"
  .PD 0
! .IP \fB\-Wshift\-overflow=\fR\fIn\fR 4
  .IX Item "-Wshift-overflow=n"
  .PD
  These options control warnings about left shift overflows.
  .RS 4
! .IP \fB\-Wshift\-overflow=1\fR 4
  .IX Item "-Wshift-overflow=1"
  This is the warning level of \fB\-Wshift\-overflow\fR and is enabled
! by default in C99 and C++11 modes (and newer).  This warning level does
! not warn about left\-shifting 1 into the sign bit.  (However, in C, such
  an overflow is still rejected in contexts where an integer constant expression
! is required.)  No warning is emitted in C++20 mode (and newer), as signed left
  shifts always wrap.
! .IP \fB\-Wshift\-overflow=2\fR 4
  .IX Item "-Wshift-overflow=2"
! This warning level also warns about left\-shifting 1 into the sign bit,
! unless C++14 mode (or newer) is active.
  .RE
  .RS 4
  .RE
! .IP \fB\-Wswitch\fR 4
  .IX Item "-Wswitch"
  Warn whenever a \f(CW\*(C`switch\*(C'\fR statement has an index of enumerated type
  and lacks a \f(CW\*(C`case\*(C'\fR for one or more of the named codes of that
*************** warning.)  \f(CW\*(C`case\*(C'\fR labels
*** 7303,7313 ****
  provoke warnings when this option is used, unless the enumeration is marked
  with the \f(CW\*(C`flag_enum\*(C'\fR attribute.
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wswitch\-default\fR" 4
  .IX Item "-Wswitch-default"
  Warn whenever a \f(CW\*(C`switch\*(C'\fR statement does not have a \f(CW\*(C`default\*(C'\fR
  case.
! .IP "\fB\-Wswitch\-enum\fR" 4
  .IX Item "-Wswitch-enum"
  Warn whenever a \f(CW\*(C`switch\*(C'\fR statement has an index of enumerated type
  and lacks a \f(CW\*(C`case\*(C'\fR for one or more of the named codes of that
--- 7236,7246 ----
  provoke warnings when this option is used, unless the enumeration is marked
  with the \f(CW\*(C`flag_enum\*(C'\fR attribute.
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wswitch\-default\fR 4
  .IX Item "-Wswitch-default"
  Warn whenever a \f(CW\*(C`switch\*(C'\fR statement does not have a \f(CW\*(C`default\*(C'\fR
  case.
! .IP \fB\-Wswitch\-enum\fR 4
  .IX Item "-Wswitch-enum"
  Warn whenever a \f(CW\*(C`switch\*(C'\fR statement has an index of enumerated type
  and lacks a \f(CW\*(C`case\*(C'\fR for one or more of the named codes of that
*************** with the \f(CW\*(C`flag_enum\*(C'\fR att
*** 7317,7323 ****
  between \fB\-Wswitch\fR and this option is that this option gives a
  warning about an omitted enumeration code even if there is a
  \&\f(CW\*(C`default\*(C'\fR label.
! .IP "\fB\-Wno\-switch\-bool\fR" 4
  .IX Item "-Wno-switch-bool"
  Do not warn when a \f(CW\*(C`switch\*(C'\fR statement has an index of boolean type
  and the case values are outside the range of a boolean type.
--- 7250,7256 ----
  between \fB\-Wswitch\fR and this option is that this option gives a
  warning about an omitted enumeration code even if there is a
  \&\f(CW\*(C`default\*(C'\fR label.
! .IP \fB\-Wno\-switch\-bool\fR 4
  .IX Item "-Wno-switch-bool"
  Do not warn when a \f(CW\*(C`switch\*(C'\fR statement has an index of boolean type
  and the case values are outside the range of a boolean type.
*************** expression to a type other than \f(CW\*(
*** 7331,7344 ****
  \&          }
  .Ve
  .Sp
! This warning is enabled by default for C and \*(C+ programs.
! .IP "\fB\-Wno\-switch\-outside\-range\fR" 4
  .IX Item "-Wno-switch-outside-range"
  This option controls warnings when a \f(CW\*(C`switch\*(C'\fR case has a value
  that is outside of its
  respective type range.  This warning is enabled by default for
! C and \*(C+ programs.
! .IP "\fB\-Wno\-switch\-unreachable\fR" 4
  .IX Item "-Wno-switch-unreachable"
  Do not warn when a \f(CW\*(C`switch\*(C'\fR statement contains statements between the
  controlling expression and the first case label, which will never be
--- 7264,7277 ----
  \&          }
  .Ve
  .Sp
! This warning is enabled by default for C and C++ programs.
! .IP \fB\-Wno\-switch\-outside\-range\fR 4
  .IX Item "-Wno-switch-outside-range"
  This option controls warnings when a \f(CW\*(C`switch\*(C'\fR case has a value
  that is outside of its
  respective type range.  This warning is enabled by default for
! C and C++ programs.
! .IP \fB\-Wno\-switch\-unreachable\fR 4
  .IX Item "-Wno-switch-unreachable"
  Do not warn when a \f(CW\*(C`switch\*(C'\fR statement contains statements between the
  controlling expression and the first case label, which will never be
*************** controlling expression and the first cas
*** 7368,7385 ****
  \&          }
  .Ve
  .Sp
! This warning is enabled by default for C and \*(C+ programs.
! .IP "\fB\-Wsync\-nand\fR (C and \*(C+ only)" 4
! .IX Item "-Wsync-nand (C and only)"
  Warn when \f(CW\*(C`_\|_sync_fetch_and_nand\*(C'\fR and \f(CW\*(C`_\|_sync_nand_and_fetch\*(C'\fR
! built-in functions are used.  These functions changed semantics in \s-1GCC 4.4.\s0
! .IP "\fB\-Wtrivial\-auto\-var\-init\fR" 4
  .IX Item "-Wtrivial-auto-var-init"
  Warn when \f(CW\*(C`\-ftrivial\-auto\-var\-init\*(C'\fR cannot initialize the automatic
  variable.  A common situation is an automatic variable that is declared
  between the controlling expression and the first case label of a \f(CW\*(C`switch\*(C'\fR
  statement.
! .IP "\fB\-Wunused\-but\-set\-parameter\fR" 4
  .IX Item "-Wunused-but-set-parameter"
  Warn whenever a function parameter is assigned to, but otherwise unused
  (aside from its declaration).
--- 7301,7318 ----
  \&          }
  .Ve
  .Sp
! This warning is enabled by default for C and C++ programs.
! .IP "\fB\-Wsync\-nand\fR (C and C++ only)" 4
! .IX Item "-Wsync-nand (C and C++ only)"
  Warn when \f(CW\*(C`_\|_sync_fetch_and_nand\*(C'\fR and \f(CW\*(C`_\|_sync_nand_and_fetch\*(C'\fR
! built\-in functions are used.  These functions changed semantics in GCC 4.4.
! .IP \fB\-Wtrivial\-auto\-var\-init\fR 4
  .IX Item "-Wtrivial-auto-var-init"
  Warn when \f(CW\*(C`\-ftrivial\-auto\-var\-init\*(C'\fR cannot initialize the automatic
  variable.  A common situation is an automatic variable that is declared
  between the controlling expression and the first case label of a \f(CW\*(C`switch\*(C'\fR
  statement.
! .IP \fB\-Wunused\-but\-set\-parameter\fR 4
  .IX Item "-Wunused-but-set-parameter"
  Warn whenever a function parameter is assigned to, but otherwise unused
  (aside from its declaration).
*************** To suppress this warning use the \f(CW\*
*** 7388,7394 ****
  .Sp
  This warning is also enabled by \fB\-Wunused\fR together with
  \&\fB\-Wextra\fR.
! .IP "\fB\-Wunused\-but\-set\-variable\fR" 4
  .IX Item "-Wunused-but-set-variable"
  Warn whenever a local variable is assigned to, but otherwise unused
  (aside from its declaration).
--- 7321,7327 ----
  .Sp
  This warning is also enabled by \fB\-Wunused\fR together with
  \&\fB\-Wextra\fR.
! .IP \fB\-Wunused\-but\-set\-variable\fR 4
  .IX Item "-Wunused-but-set-variable"
  Warn whenever a local variable is assigned to, but otherwise unused
  (aside from its declaration).
*************** To suppress this warning use the \f(CW\*
*** 7398,7448 ****
  .Sp
  This warning is also enabled by \fB\-Wunused\fR, which is enabled
  by \fB\-Wall\fR.
! .IP "\fB\-Wunused\-function\fR" 4
  .IX Item "-Wunused-function"
  Warn whenever a static function is declared but not defined or a
! non-inline static function is unused.
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wunused\-label\fR" 4
  .IX Item "-Wunused-label"
  Warn whenever a label is declared but not used.
  This warning is enabled by \fB\-Wall\fR.
  .Sp
  To suppress this warning use the \f(CW\*(C`unused\*(C'\fR attribute.
! .IP "\fB\-Wunused\-local\-typedefs\fR (C, Objective-C, \*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wunused-local-typedefs (C, Objective-C, and Objective- only)"
  Warn when a typedef locally defined in a function is not used.
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wunused\-parameter\fR" 4
  .IX Item "-Wunused-parameter"
  Warn whenever a function parameter is unused aside from its declaration.
  This option is not enabled by \f(CW\*(C`\-Wunused\*(C'\fR unless \f(CW\*(C`\-Wextra\*(C'\fR is also
  specified.
  .Sp
  To suppress this warning use the \f(CW\*(C`unused\*(C'\fR attribute.
! .IP "\fB\-Wno\-unused\-result\fR" 4
  .IX Item "-Wno-unused-result"
  Do not warn if a caller of a function marked with attribute
  \&\f(CW\*(C`warn_unused_result\*(C'\fR does not use
  its return value. The default is \fB\-Wunused\-result\fR.
! .IP "\fB\-Wunused\-variable\fR" 4
  .IX Item "-Wunused-variable"
  Warn whenever a local or static variable is unused aside from its
  declaration. This option implies \fB\-Wunused\-const\-variable=1\fR for C,
! but not for \*(C+. This warning is enabled by \fB\-Wall\fR.
  .Sp
  To suppress this warning use the \f(CW\*(C`unused\*(C'\fR attribute.
! .IP "\fB\-Wunused\-const\-variable\fR" 4
  .IX Item "-Wunused-const-variable"
  .PD 0
! .IP "\fB\-Wunused\-const\-variable=\fR\fIn\fR" 4
  .IX Item "-Wunused-const-variable=n"
  .PD
  Warn whenever a constant static variable is unused aside from its declaration.
  .Sp
  To suppress this warning use the \f(CW\*(C`unused\*(C'\fR attribute.
  .RS 4
! .IP "\fB\-Wunused\-const\-variable=1\fR" 4
  .IX Item "-Wunused-const-variable=1"
  Warn about unused static const variables defined in the main
  compilation unit, but not about static const variables declared in any
--- 7331,7381 ----
  .Sp
  This warning is also enabled by \fB\-Wunused\fR, which is enabled
  by \fB\-Wall\fR.
! .IP \fB\-Wunused\-function\fR 4
  .IX Item "-Wunused-function"
  Warn whenever a static function is declared but not defined or a
! non\-inline static function is unused.
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wunused\-label\fR 4
  .IX Item "-Wunused-label"
  Warn whenever a label is declared but not used.
  This warning is enabled by \fB\-Wall\fR.
  .Sp
  To suppress this warning use the \f(CW\*(C`unused\*(C'\fR attribute.
! .IP "\fB\-Wunused\-local\-typedefs\fR (C, Objective\-C, C++ and Objective\-C++ only)" 4
! .IX Item "-Wunused-local-typedefs (C, Objective-C, C++ and Objective-C++ only)"
  Warn when a typedef locally defined in a function is not used.
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wunused\-parameter\fR 4
  .IX Item "-Wunused-parameter"
  Warn whenever a function parameter is unused aside from its declaration.
  This option is not enabled by \f(CW\*(C`\-Wunused\*(C'\fR unless \f(CW\*(C`\-Wextra\*(C'\fR is also
  specified.
  .Sp
  To suppress this warning use the \f(CW\*(C`unused\*(C'\fR attribute.
! .IP \fB\-Wno\-unused\-result\fR 4
  .IX Item "-Wno-unused-result"
  Do not warn if a caller of a function marked with attribute
  \&\f(CW\*(C`warn_unused_result\*(C'\fR does not use
  its return value. The default is \fB\-Wunused\-result\fR.
! .IP \fB\-Wunused\-variable\fR 4
  .IX Item "-Wunused-variable"
  Warn whenever a local or static variable is unused aside from its
  declaration. This option implies \fB\-Wunused\-const\-variable=1\fR for C,
! but not for C++. This warning is enabled by \fB\-Wall\fR.
  .Sp
  To suppress this warning use the \f(CW\*(C`unused\*(C'\fR attribute.
! .IP \fB\-Wunused\-const\-variable\fR 4
  .IX Item "-Wunused-const-variable"
  .PD 0
! .IP \fB\-Wunused\-const\-variable=\fR\fIn\fR 4
  .IX Item "-Wunused-const-variable=n"
  .PD
  Warn whenever a constant static variable is unused aside from its declaration.
  .Sp
  To suppress this warning use the \f(CW\*(C`unused\*(C'\fR attribute.
  .RS 4
! .IP \fB\-Wunused\-const\-variable=1\fR 4
  .IX Item "-Wunused-const-variable=1"
  Warn about unused static const variables defined in the main
  compilation unit, but not about static const variables declared in any
*************** header included.
*** 7450,7478 ****
  .Sp
  \&\fB\-Wunused\-const\-variable=1\fR is enabled by either
  \&\fB\-Wunused\-variable\fR or \fB\-Wunused\fR for C, but not for
! \&\*(C+. In C this declares variable storage, but in \*(C+ this is not an
  error since const variables take the place of \f(CW\*(C`#define\*(C'\fRs.
! .IP "\fB\-Wunused\-const\-variable=2\fR" 4
  .IX Item "-Wunused-const-variable=2"
  This warning level also warns for unused constant static variables in
  headers (excluding system headers).  It is equivalent to the short form
  \&\fB\-Wunused\-const\-variable\fR.  This level must be explicitly
! requested in both C and \*(C+ because it might be hard to clean up all
  headers included.
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wunused\-value\fR" 4
  .IX Item "-Wunused-value"
  Warn whenever a statement computes a result that is explicitly not
  used. To suppress this warning cast the unused expression to
! \&\f(CW\*(C`void\*(C'\fR. This includes an expression-statement or the left-hand
  side of a comma expression that contains no side effects. For example,
  an expression such as \f(CW\*(C`x[i,j]\*(C'\fR causes a warning, while
  \&\f(CW\*(C`x[(void)i,j]\*(C'\fR does not.
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wunused\fR" 4
  .IX Item "-Wunused"
  All the above \fB\-Wunused\fR options combined, except those documented
  as needing to be specified explicitly.
--- 7383,7411 ----
  .Sp
  \&\fB\-Wunused\-const\-variable=1\fR is enabled by either
  \&\fB\-Wunused\-variable\fR or \fB\-Wunused\fR for C, but not for
! C++. In C this declares variable storage, but in C++ this is not an
  error since const variables take the place of \f(CW\*(C`#define\*(C'\fRs.
! .IP \fB\-Wunused\-const\-variable=2\fR 4
  .IX Item "-Wunused-const-variable=2"
  This warning level also warns for unused constant static variables in
  headers (excluding system headers).  It is equivalent to the short form
  \&\fB\-Wunused\-const\-variable\fR.  This level must be explicitly
! requested in both C and C++ because it might be hard to clean up all
  headers included.
  .RE
  .RS 4
  .RE
! .IP \fB\-Wunused\-value\fR 4
  .IX Item "-Wunused-value"
  Warn whenever a statement computes a result that is explicitly not
  used. To suppress this warning cast the unused expression to
! \&\f(CW\*(C`void\*(C'\fR. This includes an expression\-statement or the left\-hand
  side of a comma expression that contains no side effects. For example,
  an expression such as \f(CW\*(C`x[i,j]\*(C'\fR causes a warning, while
  \&\f(CW\*(C`x[(void)i,j]\*(C'\fR does not.
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wunused\fR 4
  .IX Item "-Wunused"
  All the above \fB\-Wunused\fR options combined, except those documented
  as needing to be specified explicitly.
*************** either specify \fB\-Wextra \-Wunused\fR
*** 7483,7493 ****
  \&\fB\-Wunused\-but\-set\-parameter\fR.
  .Sp
  \&\fB\-Wunused\fR enables only \fB\-Wunused\-const\-variable=1\fR rather than
! \&\fB\-Wunused\-const\-variable\fR, and only for C, not \*(C+.
! .IP "\fB\-Wuse\-after\-free\fR (C, Objective-C, \*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wuse-after-free (C, Objective-C, and Objective- only)"
  .PD 0
! .IP "\fB\-Wuse\-after\-free=\fR\fIn\fR" 4
  .IX Item "-Wuse-after-free=n"
  .PD
  Warn about uses of pointers to dynamically allocated objects that have
--- 7416,7426 ----
  \&\fB\-Wunused\-but\-set\-parameter\fR.
  .Sp
  \&\fB\-Wunused\fR enables only \fB\-Wunused\-const\-variable=1\fR rather than
! \&\fB\-Wunused\-const\-variable\fR, and only for C, not C++.
! .IP "\fB\-Wuse\-after\-free\fR (C, Objective\-C, C++ and Objective\-C++ only)" 4
! .IX Item "-Wuse-after-free (C, Objective-C, C++ and Objective-C++ only)"
  .PD 0
! .IP \fB\-Wuse\-after\-free=\fR\fIn\fR 4
  .IX Item "-Wuse-after-free=n"
  .PD
  Warn about uses of pointers to dynamically allocated objects that have
*************** been rendered indeterminate by a call to
*** 7495,7501 ****
  The warning is enabled at all optimization levels but may yield different
  results with optimization than without.
  .RS 4
! .IP "\fB\-Wuse\-after\-free=1\fR" 4
  .IX Item "-Wuse-after-free=1"
  At level 1 the warning attempts to diagnose only unconditional uses
  of pointers made indeterminate by a deallocation call or a successful
--- 7428,7434 ----
  The warning is enabled at all optimization levels but may yield different
  results with optimization than without.
  .RS 4
! .IP \fB\-Wuse\-after\-free=1\fR 4
  .IX Item "-Wuse-after-free=1"
  At level 1 the warning attempts to diagnose only unconditional uses
  of pointers made indeterminate by a deallocation call or a successful
*************** in an actual reallocation of memory.  Th
*** 7504,7510 ****
  calls as well as uses in arithmetic and relational expressions.  Although
  undefined, uses of indeterminate pointers in equality (or inequality)
  expressions are not diagnosed at this level.
! .IP "\fB\-Wuse\-after\-free=2\fR" 4
  .IX Item "-Wuse-after-free=2"
  At level 2, in addition to unconditional uses, the warning also diagnoses
  conditional uses of pointers made indeterminate by a deallocation call.
--- 7437,7443 ----
  calls as well as uses in arithmetic and relational expressions.  Although
  undefined, uses of indeterminate pointers in equality (or inequality)
  expressions are not diagnosed at this level.
! .IP \fB\-Wuse\-after\-free=2\fR 4
  .IX Item "-Wuse-after-free=2"
  At level 2, in addition to unconditional uses, the warning also diagnoses
  conditional uses of pointers made indeterminate by a deallocation call.
*************** function is diagnosed at this level:
*** 7523,7529 ****
  \&            free (p\->data);   // warning: p may be used after free
  \&        }
  .Ve
! .IP "\fB\-Wuse\-after\-free=3\fR" 4
  .IX Item "-Wuse-after-free=3"
  At level 3, the warning also diagnoses uses of indeterminate pointers in
  equality expressions.  All uses of indeterminate pointers are undefined
--- 7456,7462 ----
  \&            free (p\->data);   // warning: p may be used after free
  \&        }
  .Ve
! .IP \fB\-Wuse\-after\-free=3\fR 4
  .IX Item "-Wuse-after-free=3"
  At level 3, the warning also diagnoses uses of indeterminate pointers in
  equality expressions.  All uses of indeterminate pointers are undefined
*************** pointers after reallocation.
*** 7553,7562 ****
  .Sp
  \&\fB\-Wuse\-after\-free=2\fR is included in \fB\-Wall\fR.
  .RE
! .IP "\fB\-Wuseless\-cast\fR (C, Objective-C, \*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wuseless-cast (C, Objective-C, and Objective- only)"
  Warn when an expression is cast to its own type.  This warning does not
! occur when a class object is converted to a non-reference type as that
  is a way to create a temporary:
  .Sp
  .Vb 6
--- 7486,7495 ----
  .Sp
  \&\fB\-Wuse\-after\-free=2\fR is included in \fB\-Wall\fR.
  .RE
! .IP "\fB\-Wuseless\-cast\fR (C, Objective\-C, C++ and Objective\-C++ only)" 4
! .IX Item "-Wuseless-cast (C, Objective-C, C++ and Objective-C++ only)"
  Warn when an expression is cast to its own type.  This warning does not
! occur when a class object is converted to a non\-reference type as that
  is a way to create a temporary:
  .Sp
  .Vb 6
*************** is a way to create a temporary:
*** 7567,7581 ****
  \&          g (S(arg)); // make arg prvalue so that it can bind to S&&
  \&        }
  .Ve
! .IP "\fB\-Wuninitialized\fR" 4
  .IX Item "-Wuninitialized"
  Warn if an object with automatic or allocated storage duration is used
! without having been initialized.  In \*(C+, also warn if a non-static
! reference or non-static \f(CW\*(C`const\*(C'\fR member appears in a class without
  constructors.
  .Sp
! In addition, passing a pointer (or in \*(C+, a reference) to an uninitialized
! object to a \f(CW\*(C`const\*(C'\fR\-qualified argument of a built-in function known to
  read the object is also diagnosed by this warning.
  (\fB\-Wmaybe\-uninitialized\fR is issued for ordinary functions.)
  .Sp
--- 7500,7514 ----
  \&          g (S(arg)); // make arg prvalue so that it can bind to S&&
  \&        }
  .Ve
! .IP \fB\-Wuninitialized\fR 4
  .IX Item "-Wuninitialized"
  Warn if an object with automatic or allocated storage duration is used
! without having been initialized.  In C++, also warn if a non\-static
! reference or non\-static \f(CW\*(C`const\*(C'\fR member appears in a class without
  constructors.
  .Sp
! In addition, passing a pointer (or in C++, a reference) to an uninitialized
! object to a \f(CW\*(C`const\*(C'\fR\-qualified argument of a built\-in function known to
  read the object is also diagnosed by this warning.
  (\fB\-Wmaybe\-uninitialized\fR is issued for ordinary functions.)
  .Sp
*************** structure, union or array variables as w
*** 7587,7593 ****
  uninitialized as a whole.  They do not occur for variables or elements
  declared \f(CW\*(C`volatile\*(C'\fR.  Because these warnings depend on
  optimization, the exact variables or elements for which there are
! warnings depend on the precise optimization options and version of \s-1GCC\s0
  used.
  .Sp
  Note that there may be no warning about a variable that is used only
--- 7520,7526 ----
  uninitialized as a whole.  They do not occur for variables or elements
  declared \f(CW\*(C`volatile\*(C'\fR.  Because these warnings depend on
  optimization, the exact variables or elements for which there are
! warnings depend on the precise optimization options and version of GCC
  used.
  .Sp
  Note that there may be no warning about a variable that is used only
*************** to compute a value that itself is never
*** 7595,7602 ****
  computations may be deleted by data flow analysis before the warnings
  are printed.
  .Sp
! In \*(C+, this warning also warns about using uninitialized objects in
! member-initializer-lists.  For example, \s-1GCC\s0 warns about \f(CW\*(C`b\*(C'\fR being
  uninitialized in the following snippet:
  .Sp
  .Vb 5
--- 7528,7535 ----
  computations may be deleted by data flow analysis before the warnings
  are printed.
  .Sp
! In C++, this warning also warns about using uninitialized objects in
! member\-initializer\-lists.  For example, GCC warns about \f(CW\*(C`b\*(C'\fR being
  uninitialized in the following snippet:
  .Sp
  .Vb 5
*************** uninitialized in the following snippet:
*** 7606,7619 ****
  \&          A() : a(b) { }
  \&        };
  .Ve
! .IP "\fB\-Wno\-invalid\-memory\-model\fR" 4
  .IX Item "-Wno-invalid-memory-model"
  This option controls warnings
  for invocations of \fB_\|_atomic Builtins\fR, \fB_\|_sync Builtins\fR,
  and the C11 atomic generic functions with a memory consistency argument
  that is either invalid for the operation or outside the range of values
  of the \f(CW\*(C`memory_order\*(C'\fR enumeration.  For example, since the
! \&\f(CW\*(C`_\|_atomic_store\*(C'\fR and \f(CW\*(C`_\|_atomic_store_n\*(C'\fR built-ins are only
  defined for the relaxed, release, and sequentially consistent memory
  orders the following code is diagnosed:
  .Sp
--- 7539,7552 ----
  \&          A() : a(b) { }
  \&        };
  .Ve
! .IP \fB\-Wno\-invalid\-memory\-model\fR 4
  .IX Item "-Wno-invalid-memory-model"
  This option controls warnings
  for invocations of \fB_\|_atomic Builtins\fR, \fB_\|_sync Builtins\fR,
  and the C11 atomic generic functions with a memory consistency argument
  that is either invalid for the operation or outside the range of values
  of the \f(CW\*(C`memory_order\*(C'\fR enumeration.  For example, since the
! \&\f(CW\*(C`_\|_atomic_store\*(C'\fR and \f(CW\*(C`_\|_atomic_store_n\*(C'\fR built\-ins are only
  defined for the relaxed, release, and sequentially consistent memory
  orders the following code is diagnosed:
  .Sp
*************** orders the following code is diagnosed:
*** 7625,7631 ****
  .Ve
  .Sp
  \&\fB\-Winvalid\-memory\-model\fR is enabled by default.
! .IP "\fB\-Wmaybe\-uninitialized\fR" 4
  .IX Item "-Wmaybe-uninitialized"
  For an object with automatic or allocated storage duration, if there exists
  a path from the function entry to a use of the object that is initialized,
--- 7558,7564 ----
  .Ve
  .Sp
  \&\fB\-Winvalid\-memory\-model\fR is enabled by default.
! .IP \fB\-Wmaybe\-uninitialized\fR 4
  .IX Item "-Wmaybe-uninitialized"
  For an object with automatic or allocated storage duration, if there exists
  a path from the function entry to a use of the object that is initialized,
*************** but there exist some other paths for whi
*** 7633,7649 ****
  the compiler emits a warning if it cannot prove the uninitialized paths
  are not executed at run time.
  .Sp
! In addition, passing a pointer (or in \*(C+, a reference) to an uninitialized
  object to a \f(CW\*(C`const\*(C'\fR\-qualified function argument is also diagnosed by
! this warning.  (\fB\-Wuninitialized\fR is issued for built-in functions
  known to read the object.)  Annotating the function with attribute
! \&\f(CW\*(C`access (none)\*(C'\fR indicates that the argument isn't used to access
  the object and avoids the warning.
  .Sp
  These warnings are only possible in optimizing compilation, because otherwise
! \&\s-1GCC\s0 does not keep track of the state of variables.
  .Sp
! These warnings are made optional because \s-1GCC\s0 may not be able to determine when
  the code is correct in spite of appearing to have an error.  Here is one
  example of how this can happen:
  .Sp
--- 7566,7582 ----
  the compiler emits a warning if it cannot prove the uninitialized paths
  are not executed at run time.
  .Sp
! In addition, passing a pointer (or in C++, a reference) to an uninitialized
  object to a \f(CW\*(C`const\*(C'\fR\-qualified function argument is also diagnosed by
! this warning.  (\fB\-Wuninitialized\fR is issued for built\-in functions
  known to read the object.)  Annotating the function with attribute
! \&\f(CW\*(C`access (none)\*(C'\fR indicates that the argument isn\*(Aqt used to access
  the object and avoids the warning.
  .Sp
  These warnings are only possible in optimizing compilation, because otherwise
! GCC does not keep track of the state of variables.
  .Sp
! These warnings are made optional because GCC may not be able to determine when
  the code is correct in spite of appearing to have an error.  Here is one
  example of how this can happen:
  .Sp
*************** example of how this can happen:
*** 7663,7673 ****
  .Ve
  .Sp
  If the value of \f(CW\*(C`y\*(C'\fR is always 1, 2 or 3, then \f(CW\*(C`x\*(C'\fR is
! always initialized, but \s-1GCC\s0 doesn't know this. To suppress the
! warning, you need to provide a default case with \fIassert\fR\|(0) or
  similar code.
  .Sp
! This option also warns when a non-volatile automatic variable might be
  changed by a call to \f(CW\*(C`longjmp\*(C'\fR.
  The compiler sees only the calls to \f(CW\*(C`setjmp\*(C'\fR.  It cannot know
  where \f(CW\*(C`longjmp\*(C'\fR will be called; in fact, a signal handler could
--- 7596,7606 ----
  .Ve
  .Sp
  If the value of \f(CW\*(C`y\*(C'\fR is always 1, 2 or 3, then \f(CW\*(C`x\*(C'\fR is
! always initialized, but GCC doesn\*(Aqt know this. To suppress the
! warning, you need to provide a default case with \fBassert\fR\|(0) or
  similar code.
  .Sp
! This option also warns when a non\-volatile automatic variable might be
  changed by a call to \f(CW\*(C`longjmp\*(C'\fR.
  The compiler sees only the calls to \f(CW\*(C`setjmp\*(C'\fR.  It cannot know
  where \f(CW\*(C`longjmp\*(C'\fR will be called; in fact, a signal handler could
*************** Some spurious warnings can be avoided if
*** 7679,7700 ****
  you use that never return as \f(CW\*(C`noreturn\*(C'\fR.
  .Sp
  This warning is enabled by \fB\-Wall\fR or \fB\-Wextra\fR.
! .IP "\fB\-Wunknown\-pragmas\fR" 4
  .IX Item "-Wunknown-pragmas"
  Warn when a \f(CW\*(C`#pragma\*(C'\fR directive is encountered that is not understood by
! \&\s-1GCC.\s0  If this command-line option is used, warnings are even issued
  for unknown pragmas in system header files.  This is not the case if
! the warnings are only enabled by the \fB\-Wall\fR command-line option.
! .IP "\fB\-Wno\-pragmas\fR" 4
  .IX Item "-Wno-pragmas"
  Do not warn about misuses of pragmas, such as incorrect parameters,
  invalid syntax, or conflicts between pragmas.  See also
  \&\fB\-Wunknown\-pragmas\fR.
! .IP "\fB\-Wno\-pragma\-once\-outside\-header\fR" 4
  .IX Item "-Wno-pragma-once-outside-header"
  Do not warn when \f(CW\*(C`#pragma once\*(C'\fR is used in a file that is not a header
  file, such as a main file.
! .IP "\fB\-Wno\-prio\-ctor\-dtor\fR" 4
  .IX Item "-Wno-prio-ctor-dtor"
  Do not warn if a priority from 0 to 100 is used for constructor or destructor.
  The use of constructor and destructor attributes allow you to assign a
--- 7612,7633 ----
  you use that never return as \f(CW\*(C`noreturn\*(C'\fR.
  .Sp
  This warning is enabled by \fB\-Wall\fR or \fB\-Wextra\fR.
! .IP \fB\-Wunknown\-pragmas\fR 4
  .IX Item "-Wunknown-pragmas"
  Warn when a \f(CW\*(C`#pragma\*(C'\fR directive is encountered that is not understood by
! GCC.  If this command\-line option is used, warnings are even issued
  for unknown pragmas in system header files.  This is not the case if
! the warnings are only enabled by the \fB\-Wall\fR command\-line option.
! .IP \fB\-Wno\-pragmas\fR 4
  .IX Item "-Wno-pragmas"
  Do not warn about misuses of pragmas, such as incorrect parameters,
  invalid syntax, or conflicts between pragmas.  See also
  \&\fB\-Wunknown\-pragmas\fR.
! .IP \fB\-Wno\-pragma\-once\-outside\-header\fR 4
  .IX Item "-Wno-pragma-once-outside-header"
  Do not warn when \f(CW\*(C`#pragma once\*(C'\fR is used in a file that is not a header
  file, such as a main file.
! .IP \fB\-Wno\-prio\-ctor\-dtor\fR 4
  .IX Item "-Wno-prio-ctor-dtor"
  Do not warn if a priority from 0 to 100 is used for constructor or destructor.
  The use of constructor and destructor attributes allow you to assign a
*************** priority to the constructor/destructor t
*** 7702,7708 ****
  before \f(CW\*(C`main\*(C'\fR is called or after it returns.  The priority values must be
  greater than 100 as the compiler reserves priority values between 0\-\-100 for
  the implementation.
! .IP "\fB\-Wstrict\-aliasing\fR" 4
  .IX Item "-Wstrict-aliasing"
  This option is only active when \fB\-fstrict\-aliasing\fR is active.
  It warns about code that might break the strict aliasing rules that the
--- 7635,7641 ----
  before \f(CW\*(C`main\*(C'\fR is called or after it returns.  The priority values must be
  greater than 100 as the compiler reserves priority values between 0\-\-100 for
  the implementation.
! .IP \fB\-Wstrict\-aliasing\fR 4
  .IX Item "-Wstrict-aliasing"
  This option is only active when \fB\-fstrict\-aliasing\fR is active.
  It warns about code that might break the strict aliasing rules that the
*************** compiler is using for optimization.  The
*** 7710,7716 ****
  cases, but does attempt to catch the more common pitfalls.  It is
  included in \fB\-Wall\fR.
  It is equivalent to \fB\-Wstrict\-aliasing=3\fR
! .IP "\fB\-Wstrict\-aliasing=n\fR" 4
  .IX Item "-Wstrict-aliasing=n"
  This option is only active when \fB\-fstrict\-aliasing\fR is active.
  It warns about code that might break the strict aliasing rules that the
--- 7643,7649 ----
  cases, but does attempt to catch the more common pitfalls.  It is
  included in \fB\-Wall\fR.
  It is equivalent to \fB\-Wstrict\-aliasing=3\fR
! .IP \fB\-Wstrict\-aliasing=n\fR 4
  .IX Item "-Wstrict-aliasing=n"
  This option is only active when \fB\-fstrict\-aliasing\fR is active.
  It warns about code that might break the strict aliasing rules that the
*************** negatives.  Slightly slower than levels
*** 7739,7751 ****
  Takes care of the common pun+dereference pattern in the front end:
  \&\f(CW\*(C`*(int*)&some_float\*(C'\fR.
  If optimization is enabled, it also runs in the back end, where it deals
! with multiple statement cases using flow-sensitive points-to information.
  Only warns when the converted pointer is dereferenced.
  Does not warn about incomplete types.
! .IP "\fB\-Wstrict\-overflow\fR" 4
  .IX Item "-Wstrict-overflow"
  .PD 0
! .IP "\fB\-Wstrict\-overflow=\fR\fIn\fR" 4
  .IX Item "-Wstrict-overflow=n"
  .PD
  This option is only active when signed overflow is undefined.
--- 7672,7684 ----
  Takes care of the common pun+dereference pattern in the front end:
  \&\f(CW\*(C`*(int*)&some_float\*(C'\fR.
  If optimization is enabled, it also runs in the back end, where it deals
! with multiple statement cases using flow\-sensitive points\-to information.
  Only warns when the converted pointer is dereferenced.
  Does not warn about incomplete types.
! .IP \fB\-Wstrict\-overflow\fR 4
  .IX Item "-Wstrict-overflow"
  .PD 0
! .IP \fB\-Wstrict\-overflow=\fR\fIn\fR 4
  .IX Item "-Wstrict-overflow=n"
  .PD
  This option is only active when signed overflow is undefined.
*************** undefined signed overflow when estimatin
*** 7765,7778 ****
  requires, in particular when determining whether a loop will be
  executed at all.
  .RS 4
! .IP "\fB\-Wstrict\-overflow=1\fR" 4
  .IX Item "-Wstrict-overflow=1"
  Warn about cases that are both questionable and easy to avoid.  For
  example the compiler simplifies
  \&\f(CW\*(C`x + 1 > x\*(C'\fR to \f(CW1\fR.  This level of
  \&\fB\-Wstrict\-overflow\fR is enabled by \fB\-Wall\fR; higher levels
  are not, and must be explicitly requested.
! .IP "\fB\-Wstrict\-overflow=2\fR" 4
  .IX Item "-Wstrict-overflow=2"
  Also warn about other cases where a comparison is simplified to a
  constant.  For example: \f(CW\*(C`abs (x) >= 0\*(C'\fR.  This can only be
--- 7698,7711 ----
  requires, in particular when determining whether a loop will be
  executed at all.
  .RS 4
! .IP \fB\-Wstrict\-overflow=1\fR 4
  .IX Item "-Wstrict-overflow=1"
  Warn about cases that are both questionable and easy to avoid.  For
  example the compiler simplifies
  \&\f(CW\*(C`x + 1 > x\*(C'\fR to \f(CW1\fR.  This level of
  \&\fB\-Wstrict\-overflow\fR is enabled by \fB\-Wall\fR; higher levels
  are not, and must be explicitly requested.
! .IP \fB\-Wstrict\-overflow=2\fR 4
  .IX Item "-Wstrict-overflow=2"
  Also warn about other cases where a comparison is simplified to a
  constant.  For example: \f(CW\*(C`abs (x) >= 0\*(C'\fR.  This can only be
*************** simplified when signed integer overflow
*** 7780,7794 ****
  \&\f(CW\*(C`abs (INT_MIN)\*(C'\fR overflows to \f(CW\*(C`INT_MIN\*(C'\fR, which is less than
  zero.  \fB\-Wstrict\-overflow\fR (with no level) is the same as
  \&\fB\-Wstrict\-overflow=2\fR.
! .IP "\fB\-Wstrict\-overflow=3\fR" 4
  .IX Item "-Wstrict-overflow=3"
  Also warn about other cases where a comparison is simplified.  For
  example: \f(CW\*(C`x + 1 > 1\*(C'\fR is simplified to \f(CW\*(C`x > 0\*(C'\fR.
! .IP "\fB\-Wstrict\-overflow=4\fR" 4
  .IX Item "-Wstrict-overflow=4"
  Also warn about other simplifications not covered by the above cases.
  For example: \f(CW\*(C`(x * 10) / 5\*(C'\fR is simplified to \f(CW\*(C`x * 2\*(C'\fR.
! .IP "\fB\-Wstrict\-overflow=5\fR" 4
  .IX Item "-Wstrict-overflow=5"
  Also warn about cases where the compiler reduces the magnitude of a
  constant involved in a comparison.  For example: \f(CW\*(C`x + 2 > y\*(C'\fR is
--- 7713,7727 ----
  \&\f(CW\*(C`abs (INT_MIN)\*(C'\fR overflows to \f(CW\*(C`INT_MIN\*(C'\fR, which is less than
  zero.  \fB\-Wstrict\-overflow\fR (with no level) is the same as
  \&\fB\-Wstrict\-overflow=2\fR.
! .IP \fB\-Wstrict\-overflow=3\fR 4
  .IX Item "-Wstrict-overflow=3"
  Also warn about other cases where a comparison is simplified.  For
  example: \f(CW\*(C`x + 1 > 1\*(C'\fR is simplified to \f(CW\*(C`x > 0\*(C'\fR.
! .IP \fB\-Wstrict\-overflow=4\fR 4
  .IX Item "-Wstrict-overflow=4"
  Also warn about other simplifications not covered by the above cases.
  For example: \f(CW\*(C`(x * 10) / 5\*(C'\fR is simplified to \f(CW\*(C`x * 2\*(C'\fR.
! .IP \fB\-Wstrict\-overflow=5\fR 4
  .IX Item "-Wstrict-overflow=5"
  Also warn about cases where the compiler reduces the magnitude of a
  constant involved in a comparison.  For example: \f(CW\*(C`x + 2 > y\*(C'\fR is
*************** false positives.
*** 7799,7813 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wstring\-compare\fR" 4
  .IX Item "-Wstring-compare"
  Warn for calls to \f(CW\*(C`strcmp\*(C'\fR and \f(CW\*(C`strncmp\*(C'\fR whose result is
! determined to be either zero or non-zero in tests for such equality
  owing to the length of one argument being greater than the size of
  the array the other argument is stored in (or the bound in the case
  of \f(CW\*(C`strncmp\*(C'\fR).  Such calls could be mistakes.  For example,
  the call to \f(CW\*(C`strcmp\*(C'\fR below is diagnosed because its result is
! necessarily non-zero irrespective of the contents of the array \f(CW\*(C`a\*(C'\fR.
  .Sp
  .Vb 8
  \&        extern char a[4];
--- 7732,7746 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-Wstring\-compare\fR 4
  .IX Item "-Wstring-compare"
  Warn for calls to \f(CW\*(C`strcmp\*(C'\fR and \f(CW\*(C`strncmp\*(C'\fR whose result is
! determined to be either zero or non\-zero in tests for such equality
  owing to the length of one argument being greater than the size of
  the array the other argument is stored in (or the bound in the case
  of \f(CW\*(C`strncmp\*(C'\fR).  Such calls could be mistakes.  For example,
  the call to \f(CW\*(C`strcmp\*(C'\fR below is diagnosed because its result is
! necessarily non\-zero irrespective of the contents of the array \f(CW\*(C`a\*(C'\fR.
  .Sp
  .Vb 8
  \&        extern char a[4];
*************** necessarily non-zero irrespective of the
*** 7821,7832 ****
  .Ve
  .Sp
  \&\fB\-Wstring\-compare\fR is enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wno\-stringop\-overflow\fR" 4
  .IX Item "-Wno-stringop-overflow"
  .PD 0
! .IP "\fB\-Wstringop\-overflow\fR" 4
  .IX Item "-Wstringop-overflow"
! .IP "\fB\-Wstringop\-overflow=\fR\fItype\fR" 4
  .IX Item "-Wstringop-overflow=type"
  .PD
  Warn for code that can be statically determined to cause buffer overflows or
--- 7754,7765 ----
  .Ve
  .Sp
  \&\fB\-Wstring\-compare\fR is enabled by \fB\-Wextra\fR.
! .IP \fB\-Wno\-stringop\-overflow\fR 4
  .IX Item "-Wno-stringop-overflow"
  .PD 0
! .IP \fB\-Wstringop\-overflow\fR 4
  .IX Item "-Wstringop-overflow"
! .IP \fB\-Wstringop\-overflow=\fR\fItype\fR 4
  .IX Item "-Wstringop-overflow=type"
  .PD
  Warn for code that can be statically determined to cause buffer overflows or
*************** optional argument is one greater than th
*** 7836,7858 ****
  perform to determine the size of the destination.  
  The argument is meaningful only for string functions
  that operate on character arrays; raw memory functions like \f(CW\*(C`memcpy\*(C'\fR
! always use type-zero Object Size Checking.
  .Sp
  The option also warns for calls that specify a size
  in excess of the largest possible object or at most \f(CW\*(C`SIZE_MAX / 2\*(C'\fR bytes.
  .Sp
  The option produces the best results with optimization enabled but can detect
  a small subset of simple buffer overflows even without optimization in
! calls to the \s-1GCC\s0 built-in functions like \f(CW\*(C`_\|_builtin_memcpy\*(C'\fR that
  correspond to the standard functions.  In any case, the option warns about
  just a subset of buffer overflows detected by the corresponding overflow
! checking built-ins, such as \f(CW\*(C`_\|_builtin_\|_\|_memcpy_chk\*(C'\fR, which can perform
! run-time checking if the access cannot be identified as safe
  at compile time.
  .Sp
  For example, the option issues a warning for
  the \f(CW\*(C`strcpy\*(C'\fR call below because it copies at least 5 characters
! (the string \f(CW"blue"\fR including the terminating \s-1NUL\s0) into the buffer
  of size 4.
  .Sp
  .Vb 11
--- 7769,7791 ----
  perform to determine the size of the destination.  
  The argument is meaningful only for string functions
  that operate on character arrays; raw memory functions like \f(CW\*(C`memcpy\*(C'\fR
! always use type\-zero Object Size Checking.
  .Sp
  The option also warns for calls that specify a size
  in excess of the largest possible object or at most \f(CW\*(C`SIZE_MAX / 2\*(C'\fR bytes.
  .Sp
  The option produces the best results with optimization enabled but can detect
  a small subset of simple buffer overflows even without optimization in
! calls to the GCC built\-in functions like \f(CW\*(C`_\|_builtin_memcpy\*(C'\fR that
  correspond to the standard functions.  In any case, the option warns about
  just a subset of buffer overflows detected by the corresponding overflow
! checking built\-ins, such as \f(CW\*(C`_\|_builtin_\|_\|_memcpy_chk\*(C'\fR, which can perform
! run\-time checking if the access cannot be identified as safe
  at compile time.
  .Sp
  For example, the option issues a warning for
  the \f(CW\*(C`strcpy\*(C'\fR call below because it copies at least 5 characters
! (the string \f(CW"blue"\fR including the terminating NUL) into the buffer
  of size 4.
  .Sp
  .Vb 11
*************** because a 1\-element array is passed to
*** 7889,7927 ****
  .Sp
  Option \fB\-Wstringop\-overflow=2\fR is enabled by default.
  .RS 4
! .IP "\fB\-Wstringop\-overflow\fR" 4
  .IX Item "-Wstringop-overflow"
  .PD 0
! .IP "\fB\-Wstringop\-overflow=1\fR" 4
  .IX Item "-Wstringop-overflow=1"
  .PD
! The \fB\-Wstringop\-overflow=1\fR option uses type-zero Object Size Checking
  to determine the sizes of destination objects.  At this setting the option
  does not warn for writes past the end of subobjects of larger objects accessed
  by pointers unless the size of the largest surrounding object is known.  When
  the destination may be one of several objects it is assumed to be the largest
  one of them.  On Linux systems, when optimization is enabled at this setting
  the option warns for the same code as when the \f(CW\*(C`_FORTIFY_SOURCE\*(C'\fR macro
! is defined to a non-zero value.
! .IP "\fB\-Wstringop\-overflow=2\fR" 4
  .IX Item "-Wstringop-overflow=2"
! The \fB\-Wstringop\-overflow=2\fR option uses type-one Object Size Checking
  to determine the sizes of destination objects.  At this setting the option
  warns about overflows when writing to members of the largest complete
  objects whose exact size is known.  However, it does not warn for excessive
  writes to the same members of unknown objects referenced by pointers since
  they may point to arrays containing unknown numbers of elements.  This is
  the default setting of the option.
! .IP "\fB\-Wstringop\-overflow=3\fR" 4
  .IX Item "-Wstringop-overflow=3"
! The \fB\-Wstringop\-overflow=3\fR option uses type-two Object Size Checking
  to determine the sizes of destination objects.  At this setting the option
  warns about overflowing the smallest object or data member.  This is the
  most restrictive setting of the option that may result in warnings for safe
  code.
! .IP "\fB\-Wstringop\-overflow=4\fR" 4
  .IX Item "-Wstringop-overflow=4"
! The \fB\-Wstringop\-overflow=4\fR option uses type-three Object Size Checking
  to determine the sizes of destination objects.  At this setting the option
  warns about overflowing any data members, and when the destination is
  one of several objects it uses the size of the largest of them to decide
--- 7822,7860 ----
  .Sp
  Option \fB\-Wstringop\-overflow=2\fR is enabled by default.
  .RS 4
! .IP \fB\-Wstringop\-overflow\fR 4
  .IX Item "-Wstringop-overflow"
  .PD 0
! .IP \fB\-Wstringop\-overflow=1\fR 4
  .IX Item "-Wstringop-overflow=1"
  .PD
! The \fB\-Wstringop\-overflow=1\fR option uses type\-zero Object Size Checking
  to determine the sizes of destination objects.  At this setting the option
  does not warn for writes past the end of subobjects of larger objects accessed
  by pointers unless the size of the largest surrounding object is known.  When
  the destination may be one of several objects it is assumed to be the largest
  one of them.  On Linux systems, when optimization is enabled at this setting
  the option warns for the same code as when the \f(CW\*(C`_FORTIFY_SOURCE\*(C'\fR macro
! is defined to a non\-zero value.
! .IP \fB\-Wstringop\-overflow=2\fR 4
  .IX Item "-Wstringop-overflow=2"
! The \fB\-Wstringop\-overflow=2\fR option uses type\-one Object Size Checking
  to determine the sizes of destination objects.  At this setting the option
  warns about overflows when writing to members of the largest complete
  objects whose exact size is known.  However, it does not warn for excessive
  writes to the same members of unknown objects referenced by pointers since
  they may point to arrays containing unknown numbers of elements.  This is
  the default setting of the option.
! .IP \fB\-Wstringop\-overflow=3\fR 4
  .IX Item "-Wstringop-overflow=3"
! The \fB\-Wstringop\-overflow=3\fR option uses type\-two Object Size Checking
  to determine the sizes of destination objects.  At this setting the option
  warns about overflowing the smallest object or data member.  This is the
  most restrictive setting of the option that may result in warnings for safe
  code.
! .IP \fB\-Wstringop\-overflow=4\fR 4
  .IX Item "-Wstringop-overflow=4"
! The \fB\-Wstringop\-overflow=4\fR option uses type\-three Object Size Checking
  to determine the sizes of destination objects.  At this setting the option
  warns about overflowing any data members, and when the destination is
  one of several objects it uses the size of the largest of them to decide
*************** setting of the option may result in warn
*** 7930,7943 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wno\-stringop\-overread\fR" 4
  .IX Item "-Wno-stringop-overread"
  Warn for calls to string manipulation functions such as \f(CW\*(C`memchr\*(C'\fR, or
  \&\f(CW\*(C`strcpy\*(C'\fR that are determined to read past the end of the source
  sequence.
  .Sp
  Option \fB\-Wstringop\-overread\fR is enabled by default.
! .IP "\fB\-Wno\-stringop\-truncation\fR" 4
  .IX Item "-Wno-stringop-truncation"
  Do not warn for calls to bounded string manipulation functions
  such as \f(CW\*(C`strncat\*(C'\fR,
--- 7863,7876 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-Wno\-stringop\-overread\fR 4
  .IX Item "-Wno-stringop-overread"
  Warn for calls to string manipulation functions such as \f(CW\*(C`memchr\*(C'\fR, or
  \&\f(CW\*(C`strcpy\*(C'\fR that are determined to read past the end of the source
  sequence.
  .Sp
  Option \fB\-Wstringop\-overread\fR is enabled by default.
! .IP \fB\-Wno\-stringop\-truncation\fR 4
  .IX Item "-Wno-stringop-truncation"
  Do not warn for calls to bounded string manipulation functions
  such as \f(CW\*(C`strncat\*(C'\fR,
*************** warning use \f(CW\*(C`bufsize \- strlen
*** 7957,7967 ****
  .Ve
  .Sp
  As another example, the following call to \f(CW\*(C`strncpy\*(C'\fR results in copying
! to \f(CW\*(C`d\*(C'\fR just the characters preceding the terminating \s-1NUL,\s0 without
! appending the \s-1NUL\s0 to the end.  Assuming the result of \f(CW\*(C`strncpy\*(C'\fR is
! necessarily a NUL-terminated string is a common mistake, and so the call
  is diagnosed.  To avoid the warning when the result is not expected to be
! NUL-terminated, call \f(CW\*(C`memcpy\*(C'\fR instead.
  .Sp
  .Vb 4
  \&        void copy (char *d, const char *s)
--- 7890,7900 ----
  .Ve
  .Sp
  As another example, the following call to \f(CW\*(C`strncpy\*(C'\fR results in copying
! to \f(CW\*(C`d\*(C'\fR just the characters preceding the terminating NUL, without
! appending the NUL to the end.  Assuming the result of \f(CW\*(C`strncpy\*(C'\fR is
! necessarily a NUL\-terminated string is a common mistake, and so the call
  is diagnosed.  To avoid the warning when the result is not expected to be
! NUL\-terminated, call \f(CW\*(C`memcpy\*(C'\fR instead.
  .Sp
  .Vb 4
  \&        void copy (char *d, const char *s)
*************** NUL-terminated, call \f(CW\*(C`memcpy\*(
*** 7973,7979 ****
  In the following example, the call to \f(CW\*(C`strncpy\*(C'\fR specifies the size
  of the destination buffer as the bound.  If the length of the source
  string is equal to or greater than this size the result of the copy will
! not be NUL-terminated.  Therefore, the call is also diagnosed.  To avoid
  the warning, specify \f(CW\*(C`sizeof buf \- 1\*(C'\fR as the bound and set the last
  element of the buffer to \f(CW\*(C`NUL\*(C'\fR.
  .Sp
--- 7906,7912 ----
  In the following example, the call to \f(CW\*(C`strncpy\*(C'\fR specifies the size
  of the destination buffer as the bound.  If the length of the source
  string is equal to or greater than this size the result of the copy will
! not be NUL\-terminated.  Therefore, the call is also diagnosed.  To avoid
  the warning, specify \f(CW\*(C`sizeof buf \- 1\*(C'\fR as the bound and set the last
  element of the buffer to \f(CW\*(C`NUL\*(C'\fR.
  .Sp
*************** of bytes with no terminating \f(CW\*(C`N
*** 7991,8003 ****
  with attribute \f(CW\*(C`nonstring\*(C'\fR to avoid this warning.  Such arrays,
  however, are not suitable arguments to functions that expect
  \&\f(CW\*(C`NUL\*(C'\fR\-terminated strings.  To help detect accidental misuses of
! such arrays \s-1GCC\s0 issues warnings unless it can prove that the use is
  safe.
! .IP "\fB\-Wstrict\-flex\-arrays\fR (C and \*(C+ only)" 4
! .IX Item "-Wstrict-flex-arrays (C and only)"
  Warn about improper usages of flexible array members
! according to the \fIlevel\fR of the \f(CW\*(C`strict_flex_array (\f(CIlevel\f(CW)\*(C'\fR
! attribute attached to the trailing array field of a structure if it's
  available, otherwise according to the \fIlevel\fR of the option
  \&\fB\-fstrict\-flex\-arrays=\fR\fIlevel\fR.    \f(CW\*(C`\-Wstrict\-flex\-arrays\*(C'\fR
  is effective only when \fIlevel\fR is greater than 0.
--- 7924,7936 ----
  with attribute \f(CW\*(C`nonstring\*(C'\fR to avoid this warning.  Such arrays,
  however, are not suitable arguments to functions that expect
  \&\f(CW\*(C`NUL\*(C'\fR\-terminated strings.  To help detect accidental misuses of
! such arrays GCC issues warnings unless it can prove that the use is
  safe.
! .IP "\fB\-Wstrict\-flex\-arrays\fR (C and C++ only)" 4
! .IX Item "-Wstrict-flex-arrays (C and C++ only)"
  Warn about improper usages of flexible array members
! according to the \fIlevel\fR of the \f(CW\*(C`strict_flex_array (\fR\f(CIlevel\fR\f(CW)\*(C'\fR
! attribute attached to the trailing array field of a structure if it\*(Aqs
  available, otherwise according to the \fIlevel\fR of the option
  \&\fB\-fstrict\-flex\-arrays=\fR\fIlevel\fR.    \f(CW\*(C`\-Wstrict\-flex\-arrays\*(C'\fR
  is effective only when \fIlevel\fR is greater than 0.
*************** of a structure that have 2 or more eleme
*** 8007,8039 ****
  as a flexible array member.
  .Sp
  When \fIlevel\fR=2, in addition to \fIlevel\fR=1, additional warnings are
! issued for a trailing one-element array reference of a structure
  if the array is referenced as a flexible array member.
  .Sp
  When \fIlevel\fR=3, in addition to \fIlevel\fR=2, additional warnings are
! issued for a trailing zero-length array reference of a structure
  if the array is referenced as a flexible array member.
  .Sp
  This option is more effective when \fB\-ftree\-vrp\fR is active (the
  default for \fB\-O2\fR and above) but some warnings may be diagnosed
  even without optimization.
! .IP "\fB\-Wsuggest\-attribute=\fR\fIattribute-name\fR" 4
  .IX Item "-Wsuggest-attribute=attribute-name"
  Warn for cases where adding an attribute may be beneficial. The
! \&\fIattribute-name\fRs currently supported are listed below.
  .RS 4
! .IP "\fB\-Wsuggest\-attribute=pure\fR" 4
  .IX Item "-Wsuggest-attribute=pure"
  .PD 0
! .IP "\fB\-Wsuggest\-attribute=const\fR" 4
  .IX Item "-Wsuggest-attribute=const"
! .IP "\fB\-Wsuggest\-attribute=noreturn\fR" 4
  .IX Item "-Wsuggest-attribute=noreturn"
! .IP "\fB\-Wmissing\-noreturn\fR" 4
  .IX Item "-Wmissing-noreturn"
! .IP "\fB\-Wsuggest\-attribute=malloc\fR" 4
  .IX Item "-Wsuggest-attribute=malloc"
! .IP "\fB\-Wsuggest\-attribute=returns_nonnull\fR" 4
  .IX Item "-Wsuggest-attribute=returns_nonnull"
  .PD
  Warn about functions that might be candidates for attributes
--- 7940,7972 ----
  as a flexible array member.
  .Sp
  When \fIlevel\fR=2, in addition to \fIlevel\fR=1, additional warnings are
! issued for a trailing one\-element array reference of a structure
  if the array is referenced as a flexible array member.
  .Sp
  When \fIlevel\fR=3, in addition to \fIlevel\fR=2, additional warnings are
! issued for a trailing zero\-length array reference of a structure
  if the array is referenced as a flexible array member.
  .Sp
  This option is more effective when \fB\-ftree\-vrp\fR is active (the
  default for \fB\-O2\fR and above) but some warnings may be diagnosed
  even without optimization.
! .IP \fB\-Wsuggest\-attribute=\fR\fIattribute\-name\fR 4
  .IX Item "-Wsuggest-attribute=attribute-name"
  Warn for cases where adding an attribute may be beneficial. The
! \&\fIattribute\-name\fRs currently supported are listed below.
  .RS 4
! .IP \fB\-Wsuggest\-attribute=pure\fR 4
  .IX Item "-Wsuggest-attribute=pure"
  .PD 0
! .IP \fB\-Wsuggest\-attribute=const\fR 4
  .IX Item "-Wsuggest-attribute=const"
! .IP \fB\-Wsuggest\-attribute=noreturn\fR 4
  .IX Item "-Wsuggest-attribute=noreturn"
! .IP \fB\-Wmissing\-noreturn\fR 4
  .IX Item "-Wmissing-noreturn"
! .IP \fB\-Wsuggest\-attribute=malloc\fR 4
  .IX Item "-Wsuggest-attribute=malloc"
! .IP \fB\-Wsuggest\-attribute=returns_nonnull\fR 4
  .IX Item "-Wsuggest-attribute=returns_nonnull"
  .PD
  Warn about functions that might be candidates for attributes
*************** Warn about functions that might be candi
*** 8041,8136 ****
  \&\f(CW\*(C`returns_nonnull\*(C'\fR.  The compiler
  only warns for functions visible in other compilation units or (in the case of
  \&\f(CW\*(C`pure\*(C'\fR and \f(CW\*(C`const\*(C'\fR) if it cannot prove that the function returns
! normally. A function returns normally if it doesn't contain an infinite loop or
  return abnormally by throwing, calling \f(CW\*(C`abort\*(C'\fR or trapping.  This analysis
  requires option \fB\-fipa\-pure\-const\fR, which is enabled by default at
  \&\fB\-O\fR and higher.  Higher optimization levels improve the accuracy
  of the analysis.
! .IP "\fB\-Wsuggest\-attribute=format\fR" 4
  .IX Item "-Wsuggest-attribute=format"
  .PD 0
! .IP "\fB\-Wmissing\-format\-attribute\fR" 4
  .IX Item "-Wmissing-format-attribute"
  .PD
  Warn about function pointers that might be candidates for \f(CW\*(C`format\*(C'\fR
  attributes.  Note these are only possible candidates, not absolute ones.
! \&\s-1GCC\s0 guesses that function pointers with \f(CW\*(C`format\*(C'\fR attributes that
  are used in assignment, initialization, parameter passing or return
  statements should have a corresponding \f(CW\*(C`format\*(C'\fR attribute in the
! resulting type.  I.e. the left-hand side of the assignment or
  initialization, the type of the parameter variable, or the return type
  of the containing function respectively should also have a \f(CW\*(C`format\*(C'\fR
  attribute to avoid the warning.
  .Sp
! \&\s-1GCC\s0 also warns about function definitions that might be
  candidates for \f(CW\*(C`format\*(C'\fR attributes.  Again, these are only
! possible candidates.  \s-1GCC\s0 guesses that \f(CW\*(C`format\*(C'\fR attributes
  might be appropriate for any function that calls a function like
  \&\f(CW\*(C`vprintf\*(C'\fR or \f(CW\*(C`vscanf\*(C'\fR, but this might not always be the
  case, and some functions for which \f(CW\*(C`format\*(C'\fR attributes are
  appropriate may not be detected.
! .IP "\fB\-Wsuggest\-attribute=cold\fR" 4
  .IX Item "-Wsuggest-attribute=cold"
  Warn about functions that might be candidates for \f(CW\*(C`cold\*(C'\fR attribute.  This
  is based on static detection and generally only warns about functions which
  always leads to a call to another \f(CW\*(C`cold\*(C'\fR function such as wrappers of
! \&\*(C+ \f(CW\*(C`throw\*(C'\fR or fatal error reporting functions leading to \f(CW\*(C`abort\*(C'\fR.
  .RE
  .RS 4
  .RE
! .IP "\fB\-Walloc\-size\fR" 4
  .IX Item "-Walloc-size"
  Warn about calls to allocation functions decorated with attribute
  \&\f(CW\*(C`alloc_size\*(C'\fR that specify insufficient size for the target type of
! the pointer the result is assigned to, including those to the built-in
  forms of the functions \f(CW\*(C`aligned_alloc\*(C'\fR, \f(CW\*(C`alloca\*(C'\fR,
  \&\f(CW\*(C`calloc\*(C'\fR, \f(CW\*(C`malloc\*(C'\fR, and \f(CW\*(C`realloc\*(C'\fR.
! .IP "\fB\-Walloc\-zero\fR" 4
  .IX Item "-Walloc-zero"
  Warn about calls to allocation functions decorated with attribute
! \&\f(CW\*(C`alloc_size\*(C'\fR that specify zero bytes, including those to the built-in
  forms of the functions \f(CW\*(C`aligned_alloc\*(C'\fR, \f(CW\*(C`alloca\*(C'\fR, \f(CW\*(C`calloc\*(C'\fR,
  \&\f(CW\*(C`malloc\*(C'\fR, and \f(CW\*(C`realloc\*(C'\fR.  Because the behavior of these functions
  when called with a zero size differs among implementations (and in the case
  of \f(CW\*(C`realloc\*(C'\fR has been deprecated) relying on it may result in subtle
  portability bugs and should be avoided.
! .IP "\fB\-Wcalloc\-transposed\-args\fR" 4
  .IX Item "-Wcalloc-transposed-args"
  Warn about calls to allocation functions decorated with attribute
  \&\f(CW\*(C`alloc_size\*(C'\fR with two arguments, which use \f(CW\*(C`sizeof\*(C'\fR operator
! as the earlier size argument and don't use it as the later size argument.
  This is a coding style warning.  The first argument to \f(CW\*(C`calloc\*(C'\fR is
  documented to be number of elements in array, while the second argument
! is size of each element, so \f(CW\*(C`calloc (\f(CIn\f(CW, sizeof (int))\*(C'\fR is preferred
! over \f(CW\*(C`calloc (sizeof (int), \f(CIn\f(CW)\*(C'\fR.  If \f(CW\*(C`sizeof\*(C'\fR in the earlier
  argument and not the latter is intentional, the warning can be suppressed
! by using \f(CW\*(C`calloc (sizeof (struct \f(CIS\f(CW) + 0, n)\*(C'\fR or
! \&\f(CW\*(C`calloc (1 * sizeof (struct \f(CIS\f(CW), 4)\*(C'\fR or using \f(CW\*(C`sizeof\*(C'\fR in the
  later argument as well.
! .IP "\fB\-Walloc\-size\-larger\-than=\fR\fIbyte-size\fR" 4
  .IX Item "-Walloc-size-larger-than=byte-size"
  Warn about calls to functions decorated with attribute \f(CW\*(C`alloc_size\*(C'\fR
  that attempt to allocate objects larger than the specified number of bytes,
  or where the result of the size computation in an integer type with infinite
! precision would exceed the value of \fB\s-1PTRDIFF_MAX\s0\fR on the target.
! \&\fB\-Walloc\-size\-larger\-than=\fR\fB\s-1PTRDIFF_MAX\s0\fR is enabled by default.
  Warnings controlled by the option can be disabled either by specifying
! \&\fIbyte-size\fR of \fB\s-1SIZE_MAX\s0\fR or more or by
  \&\fB\-Wno\-alloc\-size\-larger\-than\fR.
! .IP "\fB\-Wno\-alloc\-size\-larger\-than\fR" 4
  .IX Item "-Wno-alloc-size-larger-than"
  Disable \fB\-Walloc\-size\-larger\-than=\fR warnings.  The option is
! equivalent to \fB\-Walloc\-size\-larger\-than=\fR\fB\s-1SIZE_MAX\s0\fR or
  larger.
! .IP "\fB\-Walloca\fR" 4
  .IX Item "-Walloca"
  This option warns on all uses of \f(CW\*(C`alloca\*(C'\fR in the source.
! .IP "\fB\-Walloca\-larger\-than=\fR\fIbyte-size\fR" 4
  .IX Item "-Walloca-larger-than=byte-size"
  This option warns on calls to \f(CW\*(C`alloca\*(C'\fR with an integer argument whose
  value is either zero, or that is not bounded by a controlling predicate
! that limits its value to at most \fIbyte-size\fR.  It also warns for calls
! to \f(CW\*(C`alloca\*(C'\fR where the bound value is unknown.  Arguments of non-integer
  types are considered unbounded even if they appear to be constrained to
  the expected range.
  .Sp
--- 7974,8069 ----
  \&\f(CW\*(C`returns_nonnull\*(C'\fR.  The compiler
  only warns for functions visible in other compilation units or (in the case of
  \&\f(CW\*(C`pure\*(C'\fR and \f(CW\*(C`const\*(C'\fR) if it cannot prove that the function returns
! normally. A function returns normally if it doesn\*(Aqt contain an infinite loop or
  return abnormally by throwing, calling \f(CW\*(C`abort\*(C'\fR or trapping.  This analysis
  requires option \fB\-fipa\-pure\-const\fR, which is enabled by default at
  \&\fB\-O\fR and higher.  Higher optimization levels improve the accuracy
  of the analysis.
! .IP \fB\-Wsuggest\-attribute=format\fR 4
  .IX Item "-Wsuggest-attribute=format"
  .PD 0
! .IP \fB\-Wmissing\-format\-attribute\fR 4
  .IX Item "-Wmissing-format-attribute"
  .PD
  Warn about function pointers that might be candidates for \f(CW\*(C`format\*(C'\fR
  attributes.  Note these are only possible candidates, not absolute ones.
! GCC guesses that function pointers with \f(CW\*(C`format\*(C'\fR attributes that
  are used in assignment, initialization, parameter passing or return
  statements should have a corresponding \f(CW\*(C`format\*(C'\fR attribute in the
! resulting type.  I.e. the left\-hand side of the assignment or
  initialization, the type of the parameter variable, or the return type
  of the containing function respectively should also have a \f(CW\*(C`format\*(C'\fR
  attribute to avoid the warning.
  .Sp
! GCC also warns about function definitions that might be
  candidates for \f(CW\*(C`format\*(C'\fR attributes.  Again, these are only
! possible candidates.  GCC guesses that \f(CW\*(C`format\*(C'\fR attributes
  might be appropriate for any function that calls a function like
  \&\f(CW\*(C`vprintf\*(C'\fR or \f(CW\*(C`vscanf\*(C'\fR, but this might not always be the
  case, and some functions for which \f(CW\*(C`format\*(C'\fR attributes are
  appropriate may not be detected.
! .IP \fB\-Wsuggest\-attribute=cold\fR 4
  .IX Item "-Wsuggest-attribute=cold"
  Warn about functions that might be candidates for \f(CW\*(C`cold\*(C'\fR attribute.  This
  is based on static detection and generally only warns about functions which
  always leads to a call to another \f(CW\*(C`cold\*(C'\fR function such as wrappers of
! C++ \f(CW\*(C`throw\*(C'\fR or fatal error reporting functions leading to \f(CW\*(C`abort\*(C'\fR.
  .RE
  .RS 4
  .RE
! .IP \fB\-Walloc\-size\fR 4
  .IX Item "-Walloc-size"
  Warn about calls to allocation functions decorated with attribute
  \&\f(CW\*(C`alloc_size\*(C'\fR that specify insufficient size for the target type of
! the pointer the result is assigned to, including those to the built\-in
  forms of the functions \f(CW\*(C`aligned_alloc\*(C'\fR, \f(CW\*(C`alloca\*(C'\fR,
  \&\f(CW\*(C`calloc\*(C'\fR, \f(CW\*(C`malloc\*(C'\fR, and \f(CW\*(C`realloc\*(C'\fR.
! .IP \fB\-Walloc\-zero\fR 4
  .IX Item "-Walloc-zero"
  Warn about calls to allocation functions decorated with attribute
! \&\f(CW\*(C`alloc_size\*(C'\fR that specify zero bytes, including those to the built\-in
  forms of the functions \f(CW\*(C`aligned_alloc\*(C'\fR, \f(CW\*(C`alloca\*(C'\fR, \f(CW\*(C`calloc\*(C'\fR,
  \&\f(CW\*(C`malloc\*(C'\fR, and \f(CW\*(C`realloc\*(C'\fR.  Because the behavior of these functions
  when called with a zero size differs among implementations (and in the case
  of \f(CW\*(C`realloc\*(C'\fR has been deprecated) relying on it may result in subtle
  portability bugs and should be avoided.
! .IP \fB\-Wcalloc\-transposed\-args\fR 4
  .IX Item "-Wcalloc-transposed-args"
  Warn about calls to allocation functions decorated with attribute
  \&\f(CW\*(C`alloc_size\*(C'\fR with two arguments, which use \f(CW\*(C`sizeof\*(C'\fR operator
! as the earlier size argument and don\*(Aqt use it as the later size argument.
  This is a coding style warning.  The first argument to \f(CW\*(C`calloc\*(C'\fR is
  documented to be number of elements in array, while the second argument
! is size of each element, so \f(CW\*(C`calloc (\fR\f(CIn\fR\f(CW, sizeof (int))\*(C'\fR is preferred
! over \f(CW\*(C`calloc (sizeof (int), \fR\f(CIn\fR\f(CW)\*(C'\fR.  If \f(CW\*(C`sizeof\*(C'\fR in the earlier
  argument and not the latter is intentional, the warning can be suppressed
! by using \f(CW\*(C`calloc (sizeof (struct \fR\f(CIS\fR\f(CW) + 0, n)\*(C'\fR or
! \&\f(CW\*(C`calloc (1 * sizeof (struct \fR\f(CIS\fR\f(CW), 4)\*(C'\fR or using \f(CW\*(C`sizeof\*(C'\fR in the
  later argument as well.
! .IP \fB\-Walloc\-size\-larger\-than=\fR\fIbyte\-size\fR 4
  .IX Item "-Walloc-size-larger-than=byte-size"
  Warn about calls to functions decorated with attribute \f(CW\*(C`alloc_size\*(C'\fR
  that attempt to allocate objects larger than the specified number of bytes,
  or where the result of the size computation in an integer type with infinite
! precision would exceed the value of \fBPTRDIFF_MAX\fR on the target.
! \&\fB\-Walloc\-size\-larger\-than=\fR\fBPTRDIFF_MAX\fR is enabled by default.
  Warnings controlled by the option can be disabled either by specifying
! \&\fIbyte\-size\fR of \fBSIZE_MAX\fR or more or by
  \&\fB\-Wno\-alloc\-size\-larger\-than\fR.
! .IP \fB\-Wno\-alloc\-size\-larger\-than\fR 4
  .IX Item "-Wno-alloc-size-larger-than"
  Disable \fB\-Walloc\-size\-larger\-than=\fR warnings.  The option is
! equivalent to \fB\-Walloc\-size\-larger\-than=\fR\fBSIZE_MAX\fR or
  larger.
! .IP \fB\-Walloca\fR 4
  .IX Item "-Walloca"
  This option warns on all uses of \f(CW\*(C`alloca\*(C'\fR in the source.
! .IP \fB\-Walloca\-larger\-than=\fR\fIbyte\-size\fR 4
  .IX Item "-Walloca-larger-than=byte-size"
  This option warns on calls to \f(CW\*(C`alloca\*(C'\fR with an integer argument whose
  value is either zero, or that is not bounded by a controlling predicate
! that limits its value to at most \fIbyte\-size\fR.  It also warns for calls
! to \f(CW\*(C`alloca\*(C'\fR where the bound value is unknown.  Arguments of non\-integer
  types are considered unbounded even if they appear to be constrained to
  the expected range.
  .Sp
*************** expected argument to be implicitly cast
*** 8186,8201 ****
  .Sp
  This option also warns when \f(CW\*(C`alloca\*(C'\fR is used in a loop.
  .Sp
! \&\fB\-Walloca\-larger\-than=\fR\fB\s-1PTRDIFF_MAX\s0\fR is enabled by default
  but is usually only effective  when \fB\-ftree\-vrp\fR is active (default
  for \fB\-O2\fR and above).
  .Sp
! See also \fB\-Wvla\-larger\-than=\fR\fBbyte-size\fR.
! .IP "\fB\-Wno\-alloca\-larger\-than\fR" 4
  .IX Item "-Wno-alloca-larger-than"
  Disable \fB\-Walloca\-larger\-than=\fR warnings.  The option is
! equivalent to \fB\-Walloca\-larger\-than=\fR\fB\s-1SIZE_MAX\s0\fR or larger.
! .IP "\fB\-Warith\-conversion\fR" 4
  .IX Item "-Warith-conversion"
  Do warn about implicit conversions from arithmetic operations even
  when conversion of the operands to the same type cannot change their
--- 8119,8134 ----
  .Sp
  This option also warns when \f(CW\*(C`alloca\*(C'\fR is used in a loop.
  .Sp
! \&\fB\-Walloca\-larger\-than=\fR\fBPTRDIFF_MAX\fR is enabled by default
  but is usually only effective  when \fB\-ftree\-vrp\fR is active (default
  for \fB\-O2\fR and above).
  .Sp
! See also \fB\-Wvla\-larger\-than=\fR\fBbyte\-size\fR.
! .IP \fB\-Wno\-alloca\-larger\-than\fR 4
  .IX Item "-Wno-alloca-larger-than"
  Disable \fB\-Walloca\-larger\-than=\fR warnings.  The option is
! equivalent to \fB\-Walloca\-larger\-than=\fR\fBSIZE_MAX\fR or larger.
! .IP \fB\-Warith\-conversion\fR 4
  .IX Item "-Warith-conversion"
  Do warn about implicit conversions from arithmetic operations even
  when conversion of the operands to the same type cannot change their
*************** values.  This affects warnings from \fB\
*** 8209,8218 ****
  \&          c = c + 1; // only warns with B<\-Warith\-conversion>
  \&        }
  .Ve
! .IP "\fB\-Warray\-bounds\fR" 4
  .IX Item "-Warray-bounds"
  .PD 0
! .IP "\fB\-Warray\-bounds=\fR\fIn\fR" 4
  .IX Item "-Warray-bounds=n"
  .PD
  Warn about out of bounds subscripts or offsets into arrays.  This warning
--- 8142,8151 ----
  \&          c = c + 1; // only warns with B<\-Warith\-conversion>
  \&        }
  .Ve
! .IP \fB\-Warray\-bounds\fR 4
  .IX Item "-Warray-bounds"
  .PD 0
! .IP \fB\-Warray\-bounds=\fR\fIn\fR 4
  .IX Item "-Warray-bounds=n"
  .PD
  Warn about out of bounds subscripts or offsets into arrays.  This warning
*************** are issued even without optimization.
*** 8223,8231 ****
  By default, the trailing array of a structure will be treated as a flexible
  array member by \fB\-Warray\-bounds\fR or \fB\-Warray\-bounds=\fR\fIn\fR
  if it is declared as either a flexible array member per C99 standard onwards
! (\fB[]\fR), a \s-1GCC\s0 zero-length array extension (\fB[0]\fR), or an one-element
  array (\fB[1]\fR). As a result, out of bounds subscripts or offsets into
! zero-length arrays or one-element arrays are not warned by default.
  .Sp
  You can add the option \fB\-fstrict\-flex\-arrays\fR or
  \&\fB\-fstrict\-flex\-arrays=\fR\fIlevel\fR to control how this
--- 8156,8164 ----
  By default, the trailing array of a structure will be treated as a flexible
  array member by \fB\-Warray\-bounds\fR or \fB\-Warray\-bounds=\fR\fIn\fR
  if it is declared as either a flexible array member per C99 standard onwards
! (\fB[]\fR), a GCC zero\-length array extension (\fB[0]\fR), or an one\-element
  array (\fB[1]\fR). As a result, out of bounds subscripts or offsets into
! zero\-length arrays or one\-element arrays are not warned by default.
  .Sp
  You can add the option \fB\-fstrict\-flex\-arrays\fR or
  \&\fB\-fstrict\-flex\-arrays=\fR\fIlevel\fR to control how this
*************** option treat trailing array of a structu
*** 8234,8249 ****
  when \fIlevel\fR<=1, no change to the default behavior.
  .Sp
  when \fIlevel\fR=2, additional warnings will be issued for out of bounds
! subscripts or offsets into one-element arrays;
  .Sp
  when \fIlevel\fR=3, in addition to \fIlevel\fR=2, additional warnings will be
! issued for out of bounds subscripts or offsets into zero-length arrays.
  .RS 4
! .IP "\fB\-Warray\-bounds=1\fR" 4
  .IX Item "-Warray-bounds=1"
  This is the default warning level of \fB\-Warray\-bounds\fR and is enabled
  by \fB\-Wall\fR; higher levels are not, and must be explicitly requested.
! .IP "\fB\-Warray\-bounds=2\fR" 4
  .IX Item "-Warray-bounds=2"
  This warning level also warns about the intermediate results of pointer
  arithmetic that may yield out of bounds values. This warning level may
--- 8167,8182 ----
  when \fIlevel\fR<=1, no change to the default behavior.
  .Sp
  when \fIlevel\fR=2, additional warnings will be issued for out of bounds
! subscripts or offsets into one\-element arrays;
  .Sp
  when \fIlevel\fR=3, in addition to \fIlevel\fR=2, additional warnings will be
! issued for out of bounds subscripts or offsets into zero\-length arrays.
  .RS 4
! .IP \fB\-Warray\-bounds=1\fR 4
  .IX Item "-Warray-bounds=1"
  This is the default warning level of \fB\-Warray\-bounds\fR and is enabled
  by \fB\-Wall\fR; higher levels are not, and must be explicitly requested.
! .IP \fB\-Warray\-bounds=2\fR 4
  .IX Item "-Warray-bounds=2"
  This warning level also warns about the intermediate results of pointer
  arithmetic that may yield out of bounds values. This warning level may
*************** give a larger number of false positives
*** 8251,8257 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wunterminated\-string\-initialization\fR (C and Objective-C only)" 4
  .IX Item "-Wunterminated-string-initialization (C and Objective-C only)"
  Warn about character arrays initialized as unterminated character sequences
  with a string literal, unless the declaration being initialized has
--- 8184,8190 ----
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wunterminated\-string\-initialization\fR (C and Objective\-C only)" 4
  .IX Item "-Wunterminated-string-initialization (C and Objective-C only)"
  Warn about character arrays initialized as unterminated character sequences
  with a string literal, unless the declaration being initialized has
*************** For example:
*** 8266,8276 ****
  This warning is enabled by \fB\-Wextra\fR.  If \fB\-Wc++\-compat\fR
  is enabled, the warning has slightly different wording and warns even
  if the declaration being initialized has the \f(CW\*(C`nonstring\*(C'\fR warning,
! as in \*(C+ such initializations are an error.
! .IP "\fB\-Warray\-compare\fR" 4
  .IX Item "-Warray-compare"
  Warn about equality and relational comparisons between two operands of array
! type.  This comparison was deprecated in \*(C+20.  For example:
  .Sp
  .Vb 3
  \&        int arr1[5];
--- 8199,8209 ----
  This warning is enabled by \fB\-Wextra\fR.  If \fB\-Wc++\-compat\fR
  is enabled, the warning has slightly different wording and warns even
  if the declaration being initialized has the \f(CW\*(C`nonstring\*(C'\fR warning,
! as in C++ such initializations are an error.
! .IP \fB\-Warray\-compare\fR 4
  .IX Item "-Warray-compare"
  Warn about equality and relational comparisons between two operands of array
! type.  This comparison was deprecated in C++20.  For example:
  .Sp
  .Vb 3
  \&        int arr1[5];
*************** type.  This comparison was deprecated in
*** 8279,8293 ****
  .Ve
  .Sp
  \&\fB\-Warray\-compare\fR is enabled by \fB\-Wall\fR.
! .IP "\fB\-Warray\-parameter\fR" 4
  .IX Item "-Warray-parameter"
  .PD 0
! .IP "\fB\-Warray\-parameter=\fR\fIn\fR" 4
  .IX Item "-Warray-parameter=n"
  .PD
  Warn about redeclarations of functions involving parameters of array or
  pointer types of inconsistent kinds or forms, and enable the detection
! of out-of-bounds accesses to such parameters by warnings such as
  \&\fB\-Warray\-bounds\fR.
  .Sp
  If the first function declaration uses the array form for a parameter
--- 8212,8226 ----
  .Ve
  .Sp
  \&\fB\-Warray\-compare\fR is enabled by \fB\-Wall\fR.
! .IP \fB\-Warray\-parameter\fR 4
  .IX Item "-Warray-parameter"
  .PD 0
! .IP \fB\-Warray\-parameter=\fR\fIn\fR 4
  .IX Item "-Warray-parameter=n"
  .PD
  Warn about redeclarations of functions involving parameters of array or
  pointer types of inconsistent kinds or forms, and enable the detection
! of out\-of\-bounds accesses to such parameters by warnings such as
  \&\fB\-Warray\-bounds\fR.
  .Sp
  If the first function declaration uses the array form for a parameter
*************** involving Variable Length Array argument
*** 8335,8355 ****
  The short form of the option \fB\-Warray\-parameter\fR is equivalent to
  \&\fB\-Warray\-parameter=2\fR.  The negative form \fB\-Wno\-array\-parameter\fR
  is equivalent to \fB\-Warray\-parameter=0\fR.
! .IP "\fB\-Wattribute\-alias=\fR\fIn\fR" 4
  .IX Item "-Wattribute-alias=n"
  .PD 0
! .IP "\fB\-Wno\-attribute\-alias\fR" 4
  .IX Item "-Wno-attribute-alias"
  .PD
  Warn about declarations using the \f(CW\*(C`alias\*(C'\fR and similar attributes whose
  target is incompatible with the type of the alias.
  .RS 4
! .IP "\fB\-Wattribute\-alias=1\fR" 4
  .IX Item "-Wattribute-alias=1"
  The default warning level of the \fB\-Wattribute\-alias\fR option diagnoses
  incompatibilities between the type of the alias declaration and that of its
  target.  Such incompatibilities are typically indicative of bugs.
! .IP "\fB\-Wattribute\-alias=2\fR" 4
  .IX Item "-Wattribute-alias=2"
  At this level \fB\-Wattribute\-alias\fR also diagnoses cases where
  the attributes of the alias declaration are more restrictive than the
--- 8268,8288 ----
  The short form of the option \fB\-Warray\-parameter\fR is equivalent to
  \&\fB\-Warray\-parameter=2\fR.  The negative form \fB\-Wno\-array\-parameter\fR
  is equivalent to \fB\-Warray\-parameter=0\fR.
! .IP \fB\-Wattribute\-alias=\fR\fIn\fR 4
  .IX Item "-Wattribute-alias=n"
  .PD 0
! .IP \fB\-Wno\-attribute\-alias\fR 4
  .IX Item "-Wno-attribute-alias"
  .PD
  Warn about declarations using the \f(CW\*(C`alias\*(C'\fR and similar attributes whose
  target is incompatible with the type of the alias.
  .RS 4
! .IP \fB\-Wattribute\-alias=1\fR 4
  .IX Item "-Wattribute-alias=1"
  The default warning level of the \fB\-Wattribute\-alias\fR option diagnoses
  incompatibilities between the type of the alias declaration and that of its
  target.  Such incompatibilities are typically indicative of bugs.
! .IP \fB\-Wattribute\-alias=2\fR 4
  .IX Item "-Wattribute-alias=2"
  At this level \fB\-Wattribute\-alias\fR also diagnoses cases where
  the attributes of the alias declaration are more restrictive than the
*************** Attributes considered include \f(CW\*(C`
*** 8371,8386 ****
  This is the default.  You can disable these warnings with either
  \&\fB\-Wno\-attribute\-alias\fR or \fB\-Wattribute\-alias=0\fR.
  .RE
! .IP "\fB\-Wbidi\-chars=\fR[\fBnone\fR|\fBunpaired\fR|\fBany\fR|\fBucn\fR]" 4
  .IX Item "-Wbidi-chars=[none|unpaired|any|ucn]"
! Warn about possibly misleading \s-1UTF\-8\s0 bidirectional control characters in
  comments, string literals, character constants, and identifiers.  Such
! characters can change left-to-right writing direction into right-to-left
  (and vice versa), which can cause confusion between the logical order and
  visual order.  This may be dangerous; for instance, it may seem that a piece
  of code is not commented out, whereas it in fact is.
  .Sp
! There are three levels of warning supported by \s-1GCC.\s0  The default is
  \&\fB\-Wbidi\-chars=unpaired\fR, which warns about improperly terminated
  bidi contexts.  \fB\-Wbidi\-chars=none\fR turns the warning off.
  \&\fB\-Wbidi\-chars=any\fR warns about any use of bidirectional control
--- 8304,8319 ----
  This is the default.  You can disable these warnings with either
  \&\fB\-Wno\-attribute\-alias\fR or \fB\-Wattribute\-alias=0\fR.
  .RE
! .IP \fB\-Wbidi\-chars=\fR[\fBnone\fR|\fBunpaired\fR|\fBany\fR|\fBucn\fR] 4
  .IX Item "-Wbidi-chars=[none|unpaired|any|ucn]"
! Warn about possibly misleading UTF\-8 bidirectional control characters in
  comments, string literals, character constants, and identifiers.  Such
! characters can change left\-to\-right writing direction into right\-to\-left
  (and vice versa), which can cause confusion between the logical order and
  visual order.  This may be dangerous; for instance, it may seem that a piece
  of code is not commented out, whereas it in fact is.
  .Sp
! There are three levels of warning supported by GCC.  The default is
  \&\fB\-Wbidi\-chars=unpaired\fR, which warns about improperly terminated
  bidi contexts.  \fB\-Wbidi\-chars=none\fR turns the warning off.
  \&\fB\-Wbidi\-chars=any\fR warns about any use of bidirectional control
*************** to turn on such checking by using \fB\-W
*** 8391,8397 ****
  \&\fB\-Wbidi\-chars=any,ucn\fR.  Using \fB\-Wbidi\-chars=ucn\fR is valid,
  and is equivalent to \fB\-Wbidi\-chars=unpaired,ucn\fR, if no previous
  \&\fB\-Wbidi\-chars=any\fR was specified.
! .IP "\fB\-Wbool\-compare\fR" 4
  .IX Item "-Wbool-compare"
  Warn about boolean expression compared with an integer value different from
  \&\f(CW\*(C`true\*(C'\fR/\f(CW\*(C`false\*(C'\fR.  For instance, the following comparison is
--- 8324,8330 ----
  \&\fB\-Wbidi\-chars=any,ucn\fR.  Using \fB\-Wbidi\-chars=ucn\fR is valid,
  and is equivalent to \fB\-Wbidi\-chars=unpaired,ucn\fR, if no previous
  \&\fB\-Wbidi\-chars=any\fR was specified.
! .IP \fB\-Wbool\-compare\fR 4
  .IX Item "-Wbool-compare"
  Warn about boolean expression compared with an integer value different from
  \&\f(CW\*(C`true\*(C'\fR/\f(CW\*(C`false\*(C'\fR.  For instance, the following comparison is
*************** always false:
*** 8404,8421 ****
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wbool\-operation\fR" 4
  .IX Item "-Wbool-operation"
  Warn about suspicious operations on expressions of a boolean type.  For
  instance, bitwise negation of a boolean is very likely a bug in the program.
  For C, this warning also warns about incrementing or decrementing a boolean,
! which rarely makes sense.  (In \*(C+, decrementing a boolean is always invalid.
! Incrementing a boolean is invalid in \*(C+17, and deprecated otherwise.)
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wduplicated\-branches\fR" 4
  .IX Item "-Wduplicated-branches"
! Warn when an if-else has identical branches.  This warning detects cases like
  .Sp
  .Vb 4
  \&        if (p != NULL)
--- 8337,8354 ----
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wbool\-operation\fR 4
  .IX Item "-Wbool-operation"
  Warn about suspicious operations on expressions of a boolean type.  For
  instance, bitwise negation of a boolean is very likely a bug in the program.
  For C, this warning also warns about incrementing or decrementing a boolean,
! which rarely makes sense.  (In C++, decrementing a boolean is always invalid.
! Incrementing a boolean is invalid in C++17, and deprecated otherwise.)
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wduplicated\-branches\fR 4
  .IX Item "-Wduplicated-branches"
! Warn when an if\-else has identical branches.  This warning detects cases like
  .Sp
  .Vb 4
  \&        if (p != NULL)
*************** Warn when an if-else has identical branc
*** 8424,8495 ****
  \&          return 0;
  .Ve
  .Sp
! It doesn't warn when both branches contain just a null statement.  This warning
  also warn for conditional operators:
  .Sp
  .Vb 1
  \&          int i = x ? *p : *p;
  .Ve
! .IP "\fB\-Wduplicated\-cond\fR" 4
  .IX Item "-Wduplicated-cond"
! Warn about duplicated conditions in an if-else-if chain.  For instance,
  warn for the following code:
  .Sp
  .Vb 2
  \&        if (p\->q != NULL) { ... }
  \&        else if (p\->q != NULL) { ... }
  .Ve
! .IP "\fB\-Wframe\-address\fR" 4
  .IX Item "-Wframe-address"
  Warn when the \fB_\|_builtin_frame_address\fR or \fB_\|_builtin_return_address\fR
  is called with an argument greater than 0.  Such calls may return indeterminate
  values or crash the program.  The warning is included in \fB\-Wall\fR.
! .IP "\fB\-Wno\-discarded\-qualifiers\fR (C and Objective-C only)" 4
  .IX Item "-Wno-discarded-qualifiers (C and Objective-C only)"
  Do not warn if type qualifiers on pointers are being discarded.
  Typically, the compiler warns if a \f(CW\*(C`const char *\*(C'\fR variable is
  passed to a function that takes a \f(CW\*(C`char *\*(C'\fR parameter.  This option
  can be used to suppress such a warning.
! .IP "\fB\-Wno\-discarded\-array\-qualifiers\fR (C and Objective-C only)" 4
  .IX Item "-Wno-discarded-array-qualifiers (C and Objective-C only)"
  Do not warn if type qualifiers on arrays which are pointer targets
  are being discarded.  Typically, the compiler warns if a
  \&\f(CW\*(C`const int (*)[]\*(C'\fR variable is passed to a function that
  takes a \f(CW\*(C`int (*)[]\*(C'\fR parameter.  This option can be used to
  suppress such a warning.
! .IP "\fB\-Wno\-incompatible\-pointer\-types\fR (C and Objective-C only)" 4
  .IX Item "-Wno-incompatible-pointer-types (C and Objective-C only)"
  Do not warn when there is a conversion between pointers that have incompatible
  types.  This warning is for cases not covered by \fB\-Wno\-pointer\-sign\fR,
  which warns for pointer argument passing or assignment with different
  signedness.
  .Sp
! By default, in C99 and later dialects of C, \s-1GCC\s0 treats this issue as an
  error.  The error can be downgraded to a warning using
  \&\fB\-fpermissive\fR (along with certain other errors), or for this
  error alone, with \fB\-Wno\-error=incompatible\-pointer\-types\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wno\-int\-conversion\fR (C and Objective-C only)" 4
  .IX Item "-Wno-int-conversion (C and Objective-C only)"
  Do not warn about incompatible integer to pointer and pointer to integer
  conversions.  This warning is about implicit conversions; for explicit
  conversions the warnings \fB\-Wno\-int\-to\-pointer\-cast\fR and
  \&\fB\-Wno\-pointer\-to\-int\-cast\fR may be used.
  .Sp
! By default, in C99 and later dialects of C, \s-1GCC\s0 treats this issue as an
  error.  The error can be downgraded to a warning using
  \&\fB\-fpermissive\fR (along with certain other errors), or for this
  error alone, with \fB\-Wno\-error=int\-conversion\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wzero\-as\-null\-pointer\-constant\fR" 4
  .IX Item "-Wzero-as-null-pointer-constant"
  Warn when a literal \fB0\fR is used as null pointer constant.
! .IP "\fB\-Wzero\-length\-bounds\fR" 4
  .IX Item "-Wzero-length-bounds"
! Warn about accesses to elements of zero-length array members that might
! overlap other members of the same object.  Declaring interior zero-length
  arrays is discouraged because accesses to them are undefined.
  .Sp
  For example, the first two stores in function \f(CW\*(C`bad\*(C'\fR are diagnosed
--- 8357,8428 ----
  \&          return 0;
  .Ve
  .Sp
! It doesn\*(Aqt warn when both branches contain just a null statement.  This warning
  also warn for conditional operators:
  .Sp
  .Vb 1
  \&          int i = x ? *p : *p;
  .Ve
! .IP \fB\-Wduplicated\-cond\fR 4
  .IX Item "-Wduplicated-cond"
! Warn about duplicated conditions in an if\-else\-if chain.  For instance,
  warn for the following code:
  .Sp
  .Vb 2
  \&        if (p\->q != NULL) { ... }
  \&        else if (p\->q != NULL) { ... }
  .Ve
! .IP \fB\-Wframe\-address\fR 4
  .IX Item "-Wframe-address"
  Warn when the \fB_\|_builtin_frame_address\fR or \fB_\|_builtin_return_address\fR
  is called with an argument greater than 0.  Such calls may return indeterminate
  values or crash the program.  The warning is included in \fB\-Wall\fR.
! .IP "\fB\-Wno\-discarded\-qualifiers\fR (C and Objective\-C only)" 4
  .IX Item "-Wno-discarded-qualifiers (C and Objective-C only)"
  Do not warn if type qualifiers on pointers are being discarded.
  Typically, the compiler warns if a \f(CW\*(C`const char *\*(C'\fR variable is
  passed to a function that takes a \f(CW\*(C`char *\*(C'\fR parameter.  This option
  can be used to suppress such a warning.
! .IP "\fB\-Wno\-discarded\-array\-qualifiers\fR (C and Objective\-C only)" 4
  .IX Item "-Wno-discarded-array-qualifiers (C and Objective-C only)"
  Do not warn if type qualifiers on arrays which are pointer targets
  are being discarded.  Typically, the compiler warns if a
  \&\f(CW\*(C`const int (*)[]\*(C'\fR variable is passed to a function that
  takes a \f(CW\*(C`int (*)[]\*(C'\fR parameter.  This option can be used to
  suppress such a warning.
! .IP "\fB\-Wno\-incompatible\-pointer\-types\fR (C and Objective\-C only)" 4
  .IX Item "-Wno-incompatible-pointer-types (C and Objective-C only)"
  Do not warn when there is a conversion between pointers that have incompatible
  types.  This warning is for cases not covered by \fB\-Wno\-pointer\-sign\fR,
  which warns for pointer argument passing or assignment with different
  signedness.
  .Sp
! By default, in C99 and later dialects of C, GCC treats this issue as an
  error.  The error can be downgraded to a warning using
  \&\fB\-fpermissive\fR (along with certain other errors), or for this
  error alone, with \fB\-Wno\-error=incompatible\-pointer\-types\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wno\-int\-conversion\fR (C and Objective\-C only)" 4
  .IX Item "-Wno-int-conversion (C and Objective-C only)"
  Do not warn about incompatible integer to pointer and pointer to integer
  conversions.  This warning is about implicit conversions; for explicit
  conversions the warnings \fB\-Wno\-int\-to\-pointer\-cast\fR and
  \&\fB\-Wno\-pointer\-to\-int\-cast\fR may be used.
  .Sp
! By default, in C99 and later dialects of C, GCC treats this issue as an
  error.  The error can be downgraded to a warning using
  \&\fB\-fpermissive\fR (along with certain other errors), or for this
  error alone, with \fB\-Wno\-error=int\-conversion\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP \fB\-Wzero\-as\-null\-pointer\-constant\fR 4
  .IX Item "-Wzero-as-null-pointer-constant"
  Warn when a literal \fB0\fR is used as null pointer constant.
! .IP \fB\-Wzero\-length\-bounds\fR 4
  .IX Item "-Wzero-length-bounds"
! Warn about accesses to elements of zero\-length array members that might
! overlap other members of the same object.  Declaring interior zero\-length
  arrays is discouraged because accesses to them are undefined.
  .Sp
  For example, the first two stores in function \f(CW\*(C`bad\*(C'\fR are diagnosed
*************** because it is beyond the bounds of the e
*** 8510,8533 ****
  .Ve
  .Sp
  Option \fB\-Wzero\-length\-bounds\fR is enabled by \fB\-Warray\-bounds\fR.
! .IP "\fB\-Wno\-div\-by\-zero\fR" 4
  .IX Item "-Wno-div-by-zero"
! Do not warn about compile-time integer division by zero.  Floating-point
  division by zero is not warned about, as it can be a legitimate way of
  obtaining infinities and NaNs.
! .IP "\fB\-Wsystem\-headers\fR" 4
  .IX Item "-Wsystem-headers"
  Print warning messages for constructs found in system header files.
  Warnings from system headers are normally suppressed, on the assumption
  that they usually do not indicate real problems and would only make the
! compiler output harder to read.  Using this command-line option tells
! \&\s-1GCC\s0 to emit warnings from system headers as if they occurred in user
  code.  However, note that using \fB\-Wall\fR in conjunction with this
  option does \fInot\fR warn about unknown pragmas in system
  headers\-\-\-for that, \fB\-Wunknown\-pragmas\fR must also be used.
! .IP "\fB\-Wtautological\-compare\fR" 4
  .IX Item "-Wtautological-compare"
! Warn if a self-comparison always evaluates to true or false.  This
  warning detects various mistakes such as:
  .Sp
  .Vb 3
--- 8443,8466 ----
  .Ve
  .Sp
  Option \fB\-Wzero\-length\-bounds\fR is enabled by \fB\-Warray\-bounds\fR.
! .IP \fB\-Wno\-div\-by\-zero\fR 4
  .IX Item "-Wno-div-by-zero"
! Do not warn about compile\-time integer division by zero.  Floating\-point
  division by zero is not warned about, as it can be a legitimate way of
  obtaining infinities and NaNs.
! .IP \fB\-Wsystem\-headers\fR 4
  .IX Item "-Wsystem-headers"
  Print warning messages for constructs found in system header files.
  Warnings from system headers are normally suppressed, on the assumption
  that they usually do not indicate real problems and would only make the
! compiler output harder to read.  Using this command\-line option tells
! GCC to emit warnings from system headers as if they occurred in user
  code.  However, note that using \fB\-Wall\fR in conjunction with this
  option does \fInot\fR warn about unknown pragmas in system
  headers\-\-\-for that, \fB\-Wunknown\-pragmas\fR must also be used.
! .IP \fB\-Wtautological\-compare\fR 4
  .IX Item "-Wtautological-compare"
! Warn if a self\-comparison always evaluates to true or false.  This
  warning detects various mistakes such as:
  .Sp
  .Vb 3
*************** to true or false, for instance:
*** 8546,8555 ****
  will always be false.
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wtrailing\-whitespace\fR" 4
  .IX Item "-Wtrailing-whitespace"
  .PD 0
! .IP "\fB\-Wtrailing\-whitespace=\fR\fIkind\fR" 4
  .IX Item "-Wtrailing-whitespace=kind"
  .PD
  Warn about trailing whitespace at the end of lines, including inside of
--- 8479,8488 ----
  will always be false.
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wtrailing\-whitespace\fR 4
  .IX Item "-Wtrailing-whitespace"
  .PD 0
! .IP \fB\-Wtrailing\-whitespace=\fR\fIkind\fR 4
  .IX Item "-Wtrailing-whitespace=kind"
  .PD
  Warn about trailing whitespace at the end of lines, including inside of
*************** those or trailing form feed or vertical
*** 8561,8576 ****
  \&\f(CW\*(C`\-Wno\-trailing\-whitespace\*(C'\fR or \f(CW\*(C`\-Wtrailing\-whitespace=none\*(C'\fR
  disables the warning, which is the default.
  This is a coding style warning.
! .IP "\fB\-Wleading\-whitespace=\fR\fIkind\fR" 4
  .IX Item "-Wleading-whitespace=kind"
  Warn about style issues in leading whitespace, but not about the amount of
  indentation.  Some projects use coding styles where only spaces are used
  for indentation, others use only tabs, others use zero or more tabs (for
! multiples of \f(CW\*(C`\-ftabstop=\f(CIn\f(CW\*(C'\fR) followed by zero or fewer than \fIn\fR
  spaces.  No warning is emitted on lines which contain solely whitespace
  (although \f(CW\*(C`\-Wtrailing\-whitespace=\*(C'\fR warning might be emitted), no
  warnings are emitted inside of raw string literals.  Warnings are also emitted
! for leading whitespace inside of multi-line comments.
  \&\f(CW\*(C`\-Wleading\-whitespace=spaces\*(C'\fR warns about leading whitespace other than
  spaces for projects which want to indent just by spaces.
  \&\f(CW\*(C`\-Wleading\-whitespace=tabs\*(C'\fR warns about leading whitespace other than
--- 8494,8509 ----
  \&\f(CW\*(C`\-Wno\-trailing\-whitespace\*(C'\fR or \f(CW\*(C`\-Wtrailing\-whitespace=none\*(C'\fR
  disables the warning, which is the default.
  This is a coding style warning.
! .IP \fB\-Wleading\-whitespace=\fR\fIkind\fR 4
  .IX Item "-Wleading-whitespace=kind"
  Warn about style issues in leading whitespace, but not about the amount of
  indentation.  Some projects use coding styles where only spaces are used
  for indentation, others use only tabs, others use zero or more tabs (for
! multiples of \f(CW\*(C`\-ftabstop=\fR\f(CIn\fR\f(CW\*(C'\fR) followed by zero or fewer than \fIn\fR
  spaces.  No warning is emitted on lines which contain solely whitespace
  (although \f(CW\*(C`\-Wtrailing\-whitespace=\*(C'\fR warning might be emitted), no
  warnings are emitted inside of raw string literals.  Warnings are also emitted
! for leading whitespace inside of multi\-line comments.
  \&\f(CW\*(C`\-Wleading\-whitespace=spaces\*(C'\fR warns about leading whitespace other than
  spaces for projects which want to indent just by spaces.
  \&\f(CW\*(C`\-Wleading\-whitespace=tabs\*(C'\fR warns about leading whitespace other than
*************** horizontal tabs for projects which want
*** 8578,8588 ****
  \&\f(CW\*(C`\-Wleading\-whitespace=blanks\*(C'\fR warns about leading whitespace other than
  spaces and horizontal tabs, or about horizontal tab after a space in the
  leading whitespace, or about \fIn\fR or more consecutive spaces in leading
! whitespace (where \fIn\fR is argument of \f(CW\*(C`\-ftabstop=\f(CIn\f(CW\*(C'\fR, 8 by
  default).
  \&\f(CW\*(C`\-Wleading\-whitespace=none\*(C'\fR disables the warning, which is the default.
  This is a coding style warning.
! .IP "\fB\-Wtrampolines\fR" 4
  .IX Item "-Wtrampolines"
  Warn about trampolines generated for pointers to nested functions.
  A trampoline is a small piece of data or code that is created at run
--- 8511,8521 ----
  \&\f(CW\*(C`\-Wleading\-whitespace=blanks\*(C'\fR warns about leading whitespace other than
  spaces and horizontal tabs, or about horizontal tab after a space in the
  leading whitespace, or about \fIn\fR or more consecutive spaces in leading
! whitespace (where \fIn\fR is argument of \f(CW\*(C`\-ftabstop=\fR\f(CIn\fR\f(CW\*(C'\fR, 8 by
  default).
  \&\f(CW\*(C`\-Wleading\-whitespace=none\*(C'\fR disables the warning, which is the default.
  This is a coding style warning.
! .IP \fB\-Wtrampolines\fR 4
  .IX Item "-Wtrampolines"
  Warn about trampolines generated for pointers to nested functions.
  A trampoline is a small piece of data or code that is created at run
*************** used to call the nested function indirec
*** 8591,8621 ****
  made up of data only and thus requires no special treatment.  But, for
  most targets, it is made up of code and thus requires the stack to be
  made executable in order for the program to work properly.
! .IP "\fB\-Wfloat\-equal\fR" 4
  .IX Item "-Wfloat-equal"
! Warn if floating-point values are used in equality comparisons.
  .Sp
  The idea behind this is that sometimes it is convenient (for the
! programmer) to consider floating-point values as approximations to
  infinitely precise real numbers.  If you are doing this, then you need
  to compute (by analyzing the code, or in some other way) the maximum or
  likely maximum error that the computation introduces, and allow for it
! when performing comparisons (and when producing output, but that's a
  different problem).  In particular, instead of testing for equality, you
  should check to see whether the two values have ranges that overlap; and
  this is done with the relational operators, so equality comparisons are
  probably mistaken.
! .IP "\fB\-Wtraditional\fR (C and Objective-C only)" 4
  .IX Item "-Wtraditional (C and Objective-C only)"
  Warn about certain constructs that behave differently in traditional and
! \&\s-1ISO C.\s0  Also warn about \s-1ISO C\s0 constructs that have no traditional C
  equivalent, and/or problematic constructs that should be avoided.
  .RS 4
! .IP "*" 4
  Macro parameters that appear within string literals in the macro body.
  In traditional C macro replacement takes place within string literals,
! but in \s-1ISO C\s0 it does not.
! .IP "*" 4
  In traditional C, some preprocessor directives did not exist.
  Traditional preprocessors only considered a line to be a directive
  if the \fB#\fR appeared in column 1 on the line.  Therefore
--- 8524,8554 ----
  made up of data only and thus requires no special treatment.  But, for
  most targets, it is made up of code and thus requires the stack to be
  made executable in order for the program to work properly.
! .IP \fB\-Wfloat\-equal\fR 4
  .IX Item "-Wfloat-equal"
! Warn if floating\-point values are used in equality comparisons.
  .Sp
  The idea behind this is that sometimes it is convenient (for the
! programmer) to consider floating\-point values as approximations to
  infinitely precise real numbers.  If you are doing this, then you need
  to compute (by analyzing the code, or in some other way) the maximum or
  likely maximum error that the computation introduces, and allow for it
! when performing comparisons (and when producing output, but that\*(Aqs a
  different problem).  In particular, instead of testing for equality, you
  should check to see whether the two values have ranges that overlap; and
  this is done with the relational operators, so equality comparisons are
  probably mistaken.
! .IP "\fB\-Wtraditional\fR (C and Objective\-C only)" 4
  .IX Item "-Wtraditional (C and Objective-C only)"
  Warn about certain constructs that behave differently in traditional and
! ISO C.  Also warn about ISO C constructs that have no traditional C
  equivalent, and/or problematic constructs that should be avoided.
  .RS 4
! .IP * 4
  Macro parameters that appear within string literals in the macro body.
  In traditional C macro replacement takes place within string literals,
! but in ISO C it does not.
! .IP * 4
  In traditional C, some preprocessor directives did not exist.
  Traditional preprocessors only considered a line to be a directive
  if the \fB#\fR appeared in column 1 on the line.  Therefore
*************** first character on the line.  It also su
*** 8625,8725 ****
  \&\f(CW\*(C`#pragma\*(C'\fR not understood by traditional C by indenting them.  Some
  traditional implementations do not recognize \f(CW\*(C`#elif\*(C'\fR, so this option
  suggests avoiding it altogether.
! .IP "*" 4
! A function-like macro that appears without arguments.
! .IP "*" 4
  The unary plus operator.
! .IP "*" 4
! The \fBU\fR integer constant suffix, or the \fBF\fR or \fBL\fR floating-point
  constant suffixes.  (Traditional C does support the \fBL\fR suffix on integer
  constants.)  Note, these suffixes appear in macros defined in the system
  headers of most modern systems, e.g. the \fB_MIN\fR/\fB_MAX\fR macros in \f(CW\*(C`<limits.h>\*(C'\fR.
  Use of these macros in user code might normally lead to spurious
! warnings, however \s-1GCC\s0's integrated preprocessor has enough context to
  avoid warning in these cases.
! .IP "*" 4
  A function declared external in one block and then used after the end of
  the block.
! .IP "*" 4
  A \f(CW\*(C`switch\*(C'\fR statement has an operand of type \f(CW\*(C`long\*(C'\fR.
! .IP "*" 4
  A non\-\f(CW\*(C`static\*(C'\fR function declaration follows a \f(CW\*(C`static\*(C'\fR one.
  This construct is not accepted by some traditional C compilers.
! .IP "*" 4
! The \s-1ISO\s0 type of an integer constant has a different width or
  signedness from its traditional type.  This warning is only issued if
  the base of the constant is ten.  I.e. hexadecimal or octal values, which
  typically represent bit patterns, are not warned about.
! .IP "*" 4
! Usage of \s-1ISO\s0 string concatenation is detected.
! .IP "*" 4
  Initialization of automatic aggregates.
! .IP "*" 4
  Identifier conflicts with labels.  Traditional C lacks a separate
  namespace for labels.
! .IP "*" 4
  Initialization of unions.  If the initializer is zero, the warning is
  omitted.  This is done under the assumption that the zero initializer in
  user code appears conditioned on e.g. \f(CW\*(C`_\|_STDC_\|_\*(C'\fR to avoid missing
  initializer warnings and relies on default initialization to zero in the
  traditional C case.
! .IP "*" 4
  Conversions by prototypes between fixed/floating\-point values and vice
  versa.  The absence of these prototypes when compiling with traditional
  C causes serious problems.  This is a subset of the possible
  conversion warnings; for the full set use \fB\-Wtraditional\-conversion\fR.
! .IP "*" 4
! Use of \s-1ISO C\s0 style function definitions.  This warning intentionally is
  \&\fInot\fR issued for prototype declarations or variadic functions
! because these \s-1ISO C\s0 features appear in your code when using
! libiberty's traditional C compatibility macros, \f(CW\*(C`PARAMS\*(C'\fR and
  \&\f(CW\*(C`VPARAMS\*(C'\fR.  This warning is also bypassed for nested functions
! because that feature is already a \s-1GCC\s0 extension and thus not relevant to
  traditional C compatibility.
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wtraditional\-conversion\fR (C and Objective-C only)" 4
  .IX Item "-Wtraditional-conversion (C and Objective-C only)"
  Warn if a prototype causes a type conversion that is different from what
  would happen to the same argument in the absence of a prototype.  This
  includes conversions of fixed point to floating and vice versa, and
! conversions changing the width or signedness of a fixed-point argument
  except when the same as the default promotion.
! .IP "\fB\-Wdeclaration\-after\-statement\fR (C and Objective-C only)" 4
  .IX Item "-Wdeclaration-after-statement (C and Objective-C only)"
  Warn when a declaration is found after a statement in a block.  This
! construct, known from \*(C+, was introduced with \s-1ISO C99\s0 and is by default
! allowed in \s-1GCC.\s0  It is not supported by \s-1ISO C90.\s0
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wshadow\fR" 4
  .IX Item "-Wshadow"
  Warn whenever a local variable or type declaration shadows another
! variable, parameter, type, class member (in \*(C+), or instance variable
! (in Objective-C) or whenever a built-in function is shadowed.  Note
! that in \*(C+, the compiler warns if a local variable shadows an
  explicit typedef, but not if it shadows a struct/class/enum.
  If this warning is enabled, it includes also all instances of
  local shadowing.  This means that \fB\-Wno\-shadow=local\fR
  and \fB\-Wno\-shadow=compatible\-local\fR are ignored when
  \&\fB\-Wshadow\fR is used.
  Same as \fB\-Wshadow=global\fR.
! .IP "\fB\-Wno\-shadow\-ivar\fR (Objective-C only)" 4
  .IX Item "-Wno-shadow-ivar (Objective-C only)"
  Do not warn whenever a local variable shadows an instance variable in an
! Objective-C method.
! .IP "\fB\-Wshadow=global\fR" 4
  .IX Item "-Wshadow=global"
  Warn for any shadowing.
  Same as \fB\-Wshadow\fR.
! .IP "\fB\-Wshadow=local\fR" 4
  .IX Item "-Wshadow=local"
  Warn when a local variable shadows another local variable or parameter.
! .IP "\fB\-Wshadow=compatible\-local\fR" 4
  .IX Item "-Wshadow=compatible-local"
  Warn when a local variable shadows another local variable or parameter
! whose type is compatible with that of the shadowing variable.  In \*(C+,
  type compatibility here means the type of the shadowing variable can be
  converted to that of the shadowed variable.  The creation of this flag
  (in addition to \fB\-Wshadow=local\fR) is based on the idea that when
--- 8558,8658 ----
  \&\f(CW\*(C`#pragma\*(C'\fR not understood by traditional C by indenting them.  Some
  traditional implementations do not recognize \f(CW\*(C`#elif\*(C'\fR, so this option
  suggests avoiding it altogether.
! .IP * 4
! A function\-like macro that appears without arguments.
! .IP * 4
  The unary plus operator.
! .IP * 4
! The \fBU\fR integer constant suffix, or the \fBF\fR or \fBL\fR floating\-point
  constant suffixes.  (Traditional C does support the \fBL\fR suffix on integer
  constants.)  Note, these suffixes appear in macros defined in the system
  headers of most modern systems, e.g. the \fB_MIN\fR/\fB_MAX\fR macros in \f(CW\*(C`<limits.h>\*(C'\fR.
  Use of these macros in user code might normally lead to spurious
! warnings, however GCC\*(Aqs integrated preprocessor has enough context to
  avoid warning in these cases.
! .IP * 4
  A function declared external in one block and then used after the end of
  the block.
! .IP * 4
  A \f(CW\*(C`switch\*(C'\fR statement has an operand of type \f(CW\*(C`long\*(C'\fR.
! .IP * 4
  A non\-\f(CW\*(C`static\*(C'\fR function declaration follows a \f(CW\*(C`static\*(C'\fR one.
  This construct is not accepted by some traditional C compilers.
! .IP * 4
! The ISO type of an integer constant has a different width or
  signedness from its traditional type.  This warning is only issued if
  the base of the constant is ten.  I.e. hexadecimal or octal values, which
  typically represent bit patterns, are not warned about.
! .IP * 4
! Usage of ISO string concatenation is detected.
! .IP * 4
  Initialization of automatic aggregates.
! .IP * 4
  Identifier conflicts with labels.  Traditional C lacks a separate
  namespace for labels.
! .IP * 4
  Initialization of unions.  If the initializer is zero, the warning is
  omitted.  This is done under the assumption that the zero initializer in
  user code appears conditioned on e.g. \f(CW\*(C`_\|_STDC_\|_\*(C'\fR to avoid missing
  initializer warnings and relies on default initialization to zero in the
  traditional C case.
! .IP * 4
  Conversions by prototypes between fixed/floating\-point values and vice
  versa.  The absence of these prototypes when compiling with traditional
  C causes serious problems.  This is a subset of the possible
  conversion warnings; for the full set use \fB\-Wtraditional\-conversion\fR.
! .IP * 4
! Use of ISO C style function definitions.  This warning intentionally is
  \&\fInot\fR issued for prototype declarations or variadic functions
! because these ISO C features appear in your code when using
! libiberty\*(Aqs traditional C compatibility macros, \f(CW\*(C`PARAMS\*(C'\fR and
  \&\f(CW\*(C`VPARAMS\*(C'\fR.  This warning is also bypassed for nested functions
! because that feature is already a GCC extension and thus not relevant to
  traditional C compatibility.
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wtraditional\-conversion\fR (C and Objective\-C only)" 4
  .IX Item "-Wtraditional-conversion (C and Objective-C only)"
  Warn if a prototype causes a type conversion that is different from what
  would happen to the same argument in the absence of a prototype.  This
  includes conversions of fixed point to floating and vice versa, and
! conversions changing the width or signedness of a fixed\-point argument
  except when the same as the default promotion.
! .IP "\fB\-Wdeclaration\-after\-statement\fR (C and Objective\-C only)" 4
  .IX Item "-Wdeclaration-after-statement (C and Objective-C only)"
  Warn when a declaration is found after a statement in a block.  This
! construct, known from C++, was introduced with ISO C99 and is by default
! allowed in GCC.  It is not supported by ISO C90.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP \fB\-Wshadow\fR 4
  .IX Item "-Wshadow"
  Warn whenever a local variable or type declaration shadows another
! variable, parameter, type, class member (in C++), or instance variable
! (in Objective\-C) or whenever a built\-in function is shadowed.  Note
! that in C++, the compiler warns if a local variable shadows an
  explicit typedef, but not if it shadows a struct/class/enum.
  If this warning is enabled, it includes also all instances of
  local shadowing.  This means that \fB\-Wno\-shadow=local\fR
  and \fB\-Wno\-shadow=compatible\-local\fR are ignored when
  \&\fB\-Wshadow\fR is used.
  Same as \fB\-Wshadow=global\fR.
! .IP "\fB\-Wno\-shadow\-ivar\fR (Objective\-C only)" 4
  .IX Item "-Wno-shadow-ivar (Objective-C only)"
  Do not warn whenever a local variable shadows an instance variable in an
! Objective\-C method.
! .IP \fB\-Wshadow=global\fR 4
  .IX Item "-Wshadow=global"
  Warn for any shadowing.
  Same as \fB\-Wshadow\fR.
! .IP \fB\-Wshadow=local\fR 4
  .IX Item "-Wshadow=local"
  Warn when a local variable shadows another local variable or parameter.
! .IP \fB\-Wshadow=compatible\-local\fR 4
  .IX Item "-Wshadow=compatible-local"
  Warn when a local variable shadows another local variable or parameter
! whose type is compatible with that of the shadowing variable.  In C++,
  type compatibility here means the type of the shadowing variable can be
  converted to that of the shadowed variable.  The creation of this flag
  (in addition to \fB\-Wshadow=local\fR) is based on the idea that when
*************** Note that this also means that shadowing
*** 8747,8786 ****
  \&\f(CW\*(C`char *i\*(C'\fR does not emit a warning.
  .Sp
  This warning is also enabled by \fB\-Wshadow=local\fR.
! .IP "\fB\-Wlarger\-than=\fR\fIbyte-size\fR" 4
  .IX Item "-Wlarger-than=byte-size"
! Warn whenever an object is defined whose size exceeds \fIbyte-size\fR.
! \&\fB\-Wlarger\-than=\fR\fB\s-1PTRDIFF_MAX\s0\fR is enabled by default.
  Warnings controlled by the option can be disabled either by specifying
! \&\fIbyte-size\fR of \fB\s-1SIZE_MAX\s0\fR or more or by \fB\-Wno\-larger\-than\fR.
  .Sp
  Also warn for calls to bounded functions such as \f(CW\*(C`memchr\*(C'\fR or
  \&\f(CW\*(C`strnlen\*(C'\fR that specify a bound greater than the largest possible
! object, which is \fB\s-1PTRDIFF_MAX\s0\fR bytes by default.  These warnings
  can only be disabled by \fB\-Wno\-larger\-than\fR.
! .IP "\fB\-Wno\-larger\-than\fR" 4
  .IX Item "-Wno-larger-than"
  Disable \fB\-Wlarger\-than=\fR warnings.  The option is equivalent
! to \fB\-Wlarger\-than=\fR\fB\s-1SIZE_MAX\s0\fR or larger.
! .IP "\fB\-Wframe\-larger\-than=\fR\fIbyte-size\fR" 4
  .IX Item "-Wframe-larger-than=byte-size"
! Warn if the size of a function frame exceeds \fIbyte-size\fR.
  The computation done to determine the stack frame size is approximate
  and not conservative.
! The actual requirements may be somewhat greater than \fIbyte-size\fR
  even if you do not get a warning.  In addition, any space allocated
! via \f(CW\*(C`alloca\*(C'\fR, variable-length arrays, or related constructs
  is not included by the compiler when determining
  whether or not to issue a warning.
! \&\fB\-Wframe\-larger\-than=\fR\fB\s-1PTRDIFF_MAX\s0\fR is enabled by default.
  Warnings controlled by the option can be disabled either by specifying
! \&\fIbyte-size\fR of \fB\s-1SIZE_MAX\s0\fR or more or by
  \&\fB\-Wno\-frame\-larger\-than\fR.
! .IP "\fB\-Wno\-frame\-larger\-than\fR" 4
  .IX Item "-Wno-frame-larger-than"
  Disable \fB\-Wframe\-larger\-than=\fR warnings.  The option is equivalent
! to \fB\-Wframe\-larger\-than=\fR\fB\s-1SIZE_MAX\s0\fR or larger.
! .IP "\fB\-Wfree\-nonheap\-object\fR" 4
  .IX Item "-Wfree-nonheap-object"
  Warn when attempting to deallocate an object that was either not allocated
  on the heap, or by using a pointer that was not returned from a prior call
--- 8680,8719 ----
  \&\f(CW\*(C`char *i\*(C'\fR does not emit a warning.
  .Sp
  This warning is also enabled by \fB\-Wshadow=local\fR.
! .IP \fB\-Wlarger\-than=\fR\fIbyte\-size\fR 4
  .IX Item "-Wlarger-than=byte-size"
! Warn whenever an object is defined whose size exceeds \fIbyte\-size\fR.
! \&\fB\-Wlarger\-than=\fR\fBPTRDIFF_MAX\fR is enabled by default.
  Warnings controlled by the option can be disabled either by specifying
! \&\fIbyte\-size\fR of \fBSIZE_MAX\fR or more or by \fB\-Wno\-larger\-than\fR.
  .Sp
  Also warn for calls to bounded functions such as \f(CW\*(C`memchr\*(C'\fR or
  \&\f(CW\*(C`strnlen\*(C'\fR that specify a bound greater than the largest possible
! object, which is \fBPTRDIFF_MAX\fR bytes by default.  These warnings
  can only be disabled by \fB\-Wno\-larger\-than\fR.
! .IP \fB\-Wno\-larger\-than\fR 4
  .IX Item "-Wno-larger-than"
  Disable \fB\-Wlarger\-than=\fR warnings.  The option is equivalent
! to \fB\-Wlarger\-than=\fR\fBSIZE_MAX\fR or larger.
! .IP \fB\-Wframe\-larger\-than=\fR\fIbyte\-size\fR 4
  .IX Item "-Wframe-larger-than=byte-size"
! Warn if the size of a function frame exceeds \fIbyte\-size\fR.
  The computation done to determine the stack frame size is approximate
  and not conservative.
! The actual requirements may be somewhat greater than \fIbyte\-size\fR
  even if you do not get a warning.  In addition, any space allocated
! via \f(CW\*(C`alloca\*(C'\fR, variable\-length arrays, or related constructs
  is not included by the compiler when determining
  whether or not to issue a warning.
! \&\fB\-Wframe\-larger\-than=\fR\fBPTRDIFF_MAX\fR is enabled by default.
  Warnings controlled by the option can be disabled either by specifying
! \&\fIbyte\-size\fR of \fBSIZE_MAX\fR or more or by
  \&\fB\-Wno\-frame\-larger\-than\fR.
! .IP \fB\-Wno\-frame\-larger\-than\fR 4
  .IX Item "-Wno-frame-larger-than"
  Disable \fB\-Wframe\-larger\-than=\fR warnings.  The option is equivalent
! to \fB\-Wframe\-larger\-than=\fR\fBSIZE_MAX\fR or larger.
! .IP \fB\-Wfree\-nonheap\-object\fR 4
  .IX Item "-Wfree-nonheap-object"
  Warn when attempting to deallocate an object that was either not allocated
  on the heap, or by using a pointer that was not returned from a prior call
*************** diagnosed.
*** 8799,8828 ****
  .Ve
  .Sp
  \&\fB\-Wfree\-nonheap\-object\fR is included in \fB\-Wall\fR.
! .IP "\fB\-Wstack\-usage=\fR\fIbyte-size\fR" 4
  .IX Item "-Wstack-usage=byte-size"
! Warn if the stack usage of a function might exceed \fIbyte-size\fR.
  The computation done to determine the stack usage is conservative.
! Any space allocated via \f(CW\*(C`alloca\*(C'\fR, variable-length arrays, or related
  constructs is included by the compiler when determining whether or not to
  issue a warning.
  .Sp
  The message is in keeping with the output of \fB\-fstack\-usage\fR.
  .RS 4
! .IP "*" 4
! If the stack usage is fully static but exceeds the specified amount, it's:
  .Sp
  .Vb 1
  \&          warning: stack usage is 1120 bytes
  .Ve
! .IP "*" 4
! If the stack usage is (partly) dynamic but bounded, it's:
  .Sp
  .Vb 1
  \&          warning: stack usage might be 1648 bytes
  .Ve
! .IP "*" 4
! If the stack usage is (partly) dynamic and not bounded, it's:
  .Sp
  .Vb 1
  \&          warning: stack usage might be unbounded
--- 8732,8761 ----
  .Ve
  .Sp
  \&\fB\-Wfree\-nonheap\-object\fR is included in \fB\-Wall\fR.
! .IP \fB\-Wstack\-usage=\fR\fIbyte\-size\fR 4
  .IX Item "-Wstack-usage=byte-size"
! Warn if the stack usage of a function might exceed \fIbyte\-size\fR.
  The computation done to determine the stack usage is conservative.
! Any space allocated via \f(CW\*(C`alloca\*(C'\fR, variable\-length arrays, or related
  constructs is included by the compiler when determining whether or not to
  issue a warning.
  .Sp
  The message is in keeping with the output of \fB\-fstack\-usage\fR.
  .RS 4
! .IP * 4
! If the stack usage is fully static but exceeds the specified amount, it\*(Aqs:
  .Sp
  .Vb 1
  \&          warning: stack usage is 1120 bytes
  .Ve
! .IP * 4
! If the stack usage is (partly) dynamic but bounded, it\*(Aqs:
  .Sp
  .Vb 1
  \&          warning: stack usage might be 1648 bytes
  .Ve
! .IP * 4
! If the stack usage is (partly) dynamic and not bounded, it\*(Aqs:
  .Sp
  .Vb 1
  \&          warning: stack usage might be unbounded
*************** If the stack usage is (partly) dynamic a
*** 8830,8845 ****
  .RE
  .RS 4
  .Sp
! \&\fB\-Wstack\-usage=\fR\fB\s-1PTRDIFF_MAX\s0\fR is enabled by default.
  Warnings controlled by the option can be disabled either by specifying
! \&\fIbyte-size\fR of \fB\s-1SIZE_MAX\s0\fR or more or by
  \&\fB\-Wno\-stack\-usage\fR.
  .RE
! .IP "\fB\-Wno\-stack\-usage\fR" 4
  .IX Item "-Wno-stack-usage"
  Disable \fB\-Wstack\-usage=\fR warnings.  The option is equivalent
! to \fB\-Wstack\-usage=\fR\fB\s-1SIZE_MAX\s0\fR or larger.
! .IP "\fB\-Wunsafe\-loop\-optimizations\fR" 4
  .IX Item "-Wunsafe-loop-optimizations"
  Warn if the loop cannot be optimized because the compiler cannot
  assume anything on the bounds of the loop indices.  With
--- 8763,8778 ----
  .RE
  .RS 4
  .Sp
! \&\fB\-Wstack\-usage=\fR\fBPTRDIFF_MAX\fR is enabled by default.
  Warnings controlled by the option can be disabled either by specifying
! \&\fIbyte\-size\fR of \fBSIZE_MAX\fR or more or by
  \&\fB\-Wno\-stack\-usage\fR.
  .RE
! .IP \fB\-Wno\-stack\-usage\fR 4
  .IX Item "-Wno-stack-usage"
  Disable \fB\-Wstack\-usage=\fR warnings.  The option is equivalent
! to \fB\-Wstack\-usage=\fR\fBSIZE_MAX\fR or larger.
! .IP \fB\-Wunsafe\-loop\-optimizations\fR 4
  .IX Item "-Wunsafe-loop-optimizations"
  Warn if the loop cannot be optimized because the compiler cannot
  assume anything on the bounds of the loop indices.  With
*************** such assumptions.
*** 8848,8867 ****
  .IP "\fB\-Wno\-pedantic\-ms\-format\fR (MinGW targets only)" 4
  .IX Item "-Wno-pedantic-ms-format (MinGW targets only)"
  When used in combination with \fB\-Wformat\fR
! and \fB\-pedantic\fR without \s-1GNU\s0 extensions, this option
! disables the warnings about non-ISO \f(CW\*(C`printf\*(C'\fR / \f(CW\*(C`scanf\*(C'\fR format
  width specifiers \f(CW\*(C`I32\*(C'\fR, \f(CW\*(C`I64\*(C'\fR, and \f(CW\*(C`I\*(C'\fR used on Windows targets,
! which depend on the \s-1MS\s0 runtime.
! .IP "\fB\-Wpointer\-arith\fR" 4
  .IX Item "-Wpointer-arith"
! Warn about anything that depends on the \*(L"size of\*(R" a function type or
! of \f(CW\*(C`void\*(C'\fR.  \s-1GNU C\s0 assigns these types a size of 1, for
  convenience in calculations with \f(CW\*(C`void *\*(C'\fR pointers and pointers
! to functions.  In \*(C+, warn also when an arithmetic operation involves
  \&\f(CW\*(C`NULL\*(C'\fR.  This warning is also enabled by \fB\-Wpedantic\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wno\-pointer\-compare\fR" 4
  .IX Item "-Wno-pointer-compare"
  Do not warn if a pointer is compared with a zero character constant.
  This usually
--- 8781,8800 ----
  .IP "\fB\-Wno\-pedantic\-ms\-format\fR (MinGW targets only)" 4
  .IX Item "-Wno-pedantic-ms-format (MinGW targets only)"
  When used in combination with \fB\-Wformat\fR
! and \fB\-pedantic\fR without GNU extensions, this option
! disables the warnings about non\-ISO \f(CW\*(C`printf\*(C'\fR / \f(CW\*(C`scanf\*(C'\fR format
  width specifiers \f(CW\*(C`I32\*(C'\fR, \f(CW\*(C`I64\*(C'\fR, and \f(CW\*(C`I\*(C'\fR used on Windows targets,
! which depend on the MS runtime.
! .IP \fB\-Wpointer\-arith\fR 4
  .IX Item "-Wpointer-arith"
! Warn about anything that depends on the "size of" a function type or
! of \f(CW\*(C`void\*(C'\fR.  GNU C assigns these types a size of 1, for
  convenience in calculations with \f(CW\*(C`void *\*(C'\fR pointers and pointers
! to functions.  In C++, warn also when an arithmetic operation involves
  \&\f(CW\*(C`NULL\*(C'\fR.  This warning is also enabled by \fB\-Wpedantic\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP \fB\-Wno\-pointer\-compare\fR 4
  .IX Item "-Wno-pointer-compare"
  Do not warn if a pointer is compared with a zero character constant.
  This usually
*************** means that the pointer was meant to be d
*** 8873,8914 ****
  \&          return 42;
  .Ve
  .Sp
! Note that the code above is invalid in \*(C+11.
  .Sp
  This warning is enabled by default.
! .IP "\fB\-Wno\-tsan\fR" 4
  .IX Item "-Wno-tsan"
  Disable warnings about unsupported features in ThreadSanitizer.
  .Sp
  ThreadSanitizer does not support \f(CW\*(C`std::atomic_thread_fence\*(C'\fR and
  can report false positives.
! .IP "\fB\-Wtype\-limits\fR" 4
  .IX Item "-Wtype-limits"
  Warn if a comparison is always true or always false due to the limited
  range of the data type, but do not warn for constant expressions.  For
  example, warn if an unsigned variable is compared against zero with
  \&\f(CW\*(C`<\*(C'\fR or \f(CW\*(C`>=\*(C'\fR.  This warning is also enabled by
  \&\fB\-Wextra\fR.
! .IP "\fB\-Wabsolute\-value\fR (C and Objective-C only)" 4
  .IX Item "-Wabsolute-value (C and Objective-C only)"
  Warn for calls to standard functions that compute the absolute value
  of an argument when a more appropriate standard function is available.
! For example, calling \f(CW\*(C`abs(3.14)\*(C'\fR triggers the warning because the
  appropriate function to call to compute the absolute value of a double
  argument is \f(CW\*(C`fabs\*(C'\fR.  The option also triggers warnings when the
  argument in a call to such a function has an unsigned type.  This
  warning can be suppressed with an explicit type cast and it is also
  enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wcomment\fR" 4
  .IX Item "-Wcomment"
  .PD 0
! .IP "\fB\-Wcomments\fR" 4
  .IX Item "-Wcomments"
  .PD
! Warn whenever a comment-start sequence \fB/*\fR appears in a \fB/*\fR
! comment, or whenever a backslash-newline appears in a \fB//\fR comment.
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wtrigraphs\fR" 4
  .IX Item "-Wtrigraphs"
  Warn if any trigraphs are encountered that might change the meaning of
  the program.  Trigraphs within comments are not warned about,
--- 8806,8847 ----
  \&          return 42;
  .Ve
  .Sp
! Note that the code above is invalid in C++11.
  .Sp
  This warning is enabled by default.
! .IP \fB\-Wno\-tsan\fR 4
  .IX Item "-Wno-tsan"
  Disable warnings about unsupported features in ThreadSanitizer.
  .Sp
  ThreadSanitizer does not support \f(CW\*(C`std::atomic_thread_fence\*(C'\fR and
  can report false positives.
! .IP \fB\-Wtype\-limits\fR 4
  .IX Item "-Wtype-limits"
  Warn if a comparison is always true or always false due to the limited
  range of the data type, but do not warn for constant expressions.  For
  example, warn if an unsigned variable is compared against zero with
  \&\f(CW\*(C`<\*(C'\fR or \f(CW\*(C`>=\*(C'\fR.  This warning is also enabled by
  \&\fB\-Wextra\fR.
! .IP "\fB\-Wabsolute\-value\fR (C and Objective\-C only)" 4
  .IX Item "-Wabsolute-value (C and Objective-C only)"
  Warn for calls to standard functions that compute the absolute value
  of an argument when a more appropriate standard function is available.
! For example, calling \f(CWabs(3.14)\fR triggers the warning because the
  appropriate function to call to compute the absolute value of a double
  argument is \f(CW\*(C`fabs\*(C'\fR.  The option also triggers warnings when the
  argument in a call to such a function has an unsigned type.  This
  warning can be suppressed with an explicit type cast and it is also
  enabled by \fB\-Wextra\fR.
! .IP \fB\-Wcomment\fR 4
  .IX Item "-Wcomment"
  .PD 0
! .IP \fB\-Wcomments\fR 4
  .IX Item "-Wcomments"
  .PD
! Warn whenever a comment\-start sequence \fB/*\fR appears in a \fB/*\fR
! comment, or whenever a backslash\-newline appears in a \fB//\fR comment.
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wtrigraphs\fR 4
  .IX Item "-Wtrigraphs"
  Warn if any trigraphs are encountered that might change the meaning of
  the program.  Trigraphs within comments are not warned about,
*************** This option is implied by \fB\-Wall\fR.
*** 8918,8946 ****
  given, this option is still enabled unless trigraphs are enabled.  To
  get trigraph conversion without warnings, but get the other
  \&\fB\-Wall\fR warnings, use \fB\-trigraphs \-Wall \-Wno\-trigraphs\fR.
! .IP "\fB\-Wundef\fR" 4
  .IX Item "-Wundef"
  Warn if an undefined identifier is evaluated in an \f(CW\*(C`#if\*(C'\fR directive.
  Such identifiers are replaced with zero.
! .IP "\fB\-Wexpansion\-to\-defined\fR" 4
  .IX Item "-Wexpansion-to-defined"
  Warn whenever \fBdefined\fR is encountered in the expansion of a macro
  (including the case where the macro is expanded by an \fB#if\fR directive).
  Such usage is not portable.
  This warning is also enabled by \fB\-Wpedantic\fR and \fB\-Wextra\fR.
! .IP "\fB\-Wunused\-macros\fR" 4
  .IX Item "-Wunused-macros"
  Warn about macros defined in the main file that are unused.  A macro
  is \fIused\fR if it is expanded or tested for existence at least once.
  The preprocessor also warns if the macro has not been used at the
  time it is redefined or undefined.
  .Sp
! Built-in macros, macros defined on the command line, and macros
  defined in include files are not warned about.
  .Sp
  \&\fINote:\fR If a macro is actually used, but only used in skipped
  conditional blocks, then the preprocessor reports it as unused.  To avoid the
! warning in such a case, you might improve the scope of the macro's
  definition by, for example, moving it into the first skipped block.
  Alternatively, you could provide a dummy use with something like:
  .Sp
--- 8851,8879 ----
  given, this option is still enabled unless trigraphs are enabled.  To
  get trigraph conversion without warnings, but get the other
  \&\fB\-Wall\fR warnings, use \fB\-trigraphs \-Wall \-Wno\-trigraphs\fR.
! .IP \fB\-Wundef\fR 4
  .IX Item "-Wundef"
  Warn if an undefined identifier is evaluated in an \f(CW\*(C`#if\*(C'\fR directive.
  Such identifiers are replaced with zero.
! .IP \fB\-Wexpansion\-to\-defined\fR 4
  .IX Item "-Wexpansion-to-defined"
  Warn whenever \fBdefined\fR is encountered in the expansion of a macro
  (including the case where the macro is expanded by an \fB#if\fR directive).
  Such usage is not portable.
  This warning is also enabled by \fB\-Wpedantic\fR and \fB\-Wextra\fR.
! .IP \fB\-Wunused\-macros\fR 4
  .IX Item "-Wunused-macros"
  Warn about macros defined in the main file that are unused.  A macro
  is \fIused\fR if it is expanded or tested for existence at least once.
  The preprocessor also warns if the macro has not been used at the
  time it is redefined or undefined.
  .Sp
! Built\-in macros, macros defined on the command line, and macros
  defined in include files are not warned about.
  .Sp
  \&\fINote:\fR If a macro is actually used, but only used in skipped
  conditional blocks, then the preprocessor reports it as unused.  To avoid the
! warning in such a case, you might improve the scope of the macro\*(Aqs
  definition by, for example, moving it into the first skipped block.
  Alternatively, you could provide a dummy use with something like:
  .Sp
*************** Alternatively, you could provide a dummy
*** 8948,8954 ****
  \&        #if defined the_macro_causing_the_warning
  \&        #endif
  .Ve
! .IP "\fB\-Wno\-endif\-labels\fR" 4
  .IX Item "-Wno-endif-labels"
  Do not warn whenever an \f(CW\*(C`#else\*(C'\fR or an \f(CW\*(C`#endif\*(C'\fR are followed by text.
  This sometimes happens in older programs with code of the form
--- 8881,8887 ----
  \&        #if defined the_macro_causing_the_warning
  \&        #endif
  .Ve
! .IP \fB\-Wno\-endif\-labels\fR 4
  .IX Item "-Wno-endif-labels"
  Do not warn whenever an \f(CW\*(C`#else\*(C'\fR or an \f(CW\*(C`#endif\*(C'\fR are followed by text.
  This sometimes happens in older programs with code of the form
*************** This sometimes happens in older programs
*** 8963,9011 ****
  .Sp
  The second and third \f(CW\*(C`FOO\*(C'\fR should be in comments.
  This warning is on by default.
! .IP "\fB\-Wbad\-function\-cast\fR (C and Objective-C only)" 4
  .IX Item "-Wbad-function-cast (C and Objective-C only)"
! Warn when a function call is cast to a non-matching type.
  For example, warn if a call to a function returning an integer type
  is cast to a pointer type.
! .IP "\fB\-Wc90\-c99\-compat\fR (C and Objective-C only)" 4
  .IX Item "-Wc90-c99-compat (C and Objective-C only)"
! Warn about features not present in \s-1ISO C90,\s0 but present in \s-1ISO C99.\s0
  For instance, warn about use of variable length arrays, \f(CW\*(C`long long\*(C'\fR
  type, \f(CW\*(C`bool\*(C'\fR type, compound literals, designated initializers, and so
  on.  This option is independent of the standards mode.  Warnings are disabled
  in the expression that follows \f(CW\*(C`_\|_extension_\|_\*(C'\fR.
! .IP "\fB\-Wc99\-c11\-compat\fR (C and Objective-C only)" 4
  .IX Item "-Wc99-c11-compat (C and Objective-C only)"
! Warn about features not present in \s-1ISO C99,\s0 but present in \s-1ISO C11.\s0
  For instance, warn about use of anonymous structures and unions,
! \&\f(CW\*(C`_Atomic\*(C'\fR type qualifier, \f(CW\*(C`_Thread_local\*(C'\fR storage-class specifier,
  \&\f(CW\*(C`_Alignas\*(C'\fR specifier, \f(CW\*(C`Alignof\*(C'\fR operator, \f(CW\*(C`_Generic\*(C'\fR keyword,
  and so on.  This option is independent of the standards mode.  Warnings are
  disabled in the expression that follows \f(CW\*(C`_\|_extension_\|_\*(C'\fR.
! .IP "\fB\-Wc11\-c23\-compat\fR (C and Objective-C only)" 4
  .IX Item "-Wc11-c23-compat (C and Objective-C only)"
  .PD 0
! .IP "\fB\-Wc11\-c2x\-compat\fR (C and Objective-C only)" 4
  .IX Item "-Wc11-c2x-compat (C and Objective-C only)"
  .PD
! Warn about features not present in \s-1ISO C11,\s0 but present in \s-1ISO C23.\s0
  For instance, warn about omitting the string in \f(CW\*(C`_Static_assert\*(C'\fR,
  use of \fB[[]]\fR syntax for attributes, use of decimal
! floating-point types, and so on.  This option is independent of the
  standards mode.  Warnings are disabled in the expression that follows
  \&\f(CW\*(C`_\|_extension_\|_\*(C'\fR.  The name \fB\-Wc11\-c2x\-compat\fR is
  deprecated.
  .Sp
  When not compiling in C23 mode, these warnings are upgraded to errors
  by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wc23\-c2y\-compat\fR (C and Objective-C only)" 4
  .IX Item "-Wc23-c2y-compat (C and Objective-C only)"
  .PD 0
! .IP "\fB\-Wc23\-c2y\-compat\fR (C and Objective-C only)" 4
  .IX Item "-Wc23-c2y-compat (C and Objective-C only)"
  .PD
! Warn about features not present in \s-1ISO C23,\s0 but present in \s-1ISO C2Y.\s0
  For instance, warn about \f(CW\*(C`_Generic\*(C'\fR selecting with a type name
  instead of an expression.  This option is independent of the standards
  mode.  Warnings are disabled in the expression that follows
--- 8896,8944 ----
  .Sp
  The second and third \f(CW\*(C`FOO\*(C'\fR should be in comments.
  This warning is on by default.
! .IP "\fB\-Wbad\-function\-cast\fR (C and Objective\-C only)" 4
  .IX Item "-Wbad-function-cast (C and Objective-C only)"
! Warn when a function call is cast to a non\-matching type.
  For example, warn if a call to a function returning an integer type
  is cast to a pointer type.
! .IP "\fB\-Wc90\-c99\-compat\fR (C and Objective\-C only)" 4
  .IX Item "-Wc90-c99-compat (C and Objective-C only)"
! Warn about features not present in ISO C90, but present in ISO C99.
  For instance, warn about use of variable length arrays, \f(CW\*(C`long long\*(C'\fR
  type, \f(CW\*(C`bool\*(C'\fR type, compound literals, designated initializers, and so
  on.  This option is independent of the standards mode.  Warnings are disabled
  in the expression that follows \f(CW\*(C`_\|_extension_\|_\*(C'\fR.
! .IP "\fB\-Wc99\-c11\-compat\fR (C and Objective\-C only)" 4
  .IX Item "-Wc99-c11-compat (C and Objective-C only)"
! Warn about features not present in ISO C99, but present in ISO C11.
  For instance, warn about use of anonymous structures and unions,
! \&\f(CW\*(C`_Atomic\*(C'\fR type qualifier, \f(CW\*(C`_Thread_local\*(C'\fR storage\-class specifier,
  \&\f(CW\*(C`_Alignas\*(C'\fR specifier, \f(CW\*(C`Alignof\*(C'\fR operator, \f(CW\*(C`_Generic\*(C'\fR keyword,
  and so on.  This option is independent of the standards mode.  Warnings are
  disabled in the expression that follows \f(CW\*(C`_\|_extension_\|_\*(C'\fR.
! .IP "\fB\-Wc11\-c23\-compat\fR (C and Objective\-C only)" 4
  .IX Item "-Wc11-c23-compat (C and Objective-C only)"
  .PD 0
! .IP "\fB\-Wc11\-c2x\-compat\fR (C and Objective\-C only)" 4
  .IX Item "-Wc11-c2x-compat (C and Objective-C only)"
  .PD
! Warn about features not present in ISO C11, but present in ISO C23.
  For instance, warn about omitting the string in \f(CW\*(C`_Static_assert\*(C'\fR,
  use of \fB[[]]\fR syntax for attributes, use of decimal
! floating\-point types, and so on.  This option is independent of the
  standards mode.  Warnings are disabled in the expression that follows
  \&\f(CW\*(C`_\|_extension_\|_\*(C'\fR.  The name \fB\-Wc11\-c2x\-compat\fR is
  deprecated.
  .Sp
  When not compiling in C23 mode, these warnings are upgraded to errors
  by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wc23\-c2y\-compat\fR (C and Objective\-C only)" 4
  .IX Item "-Wc23-c2y-compat (C and Objective-C only)"
  .PD 0
! .IP "\fB\-Wc23\-c2y\-compat\fR (C and Objective\-C only)" 4
  .IX Item "-Wc23-c2y-compat (C and Objective-C only)"
  .PD
! Warn about features not present in ISO C23, but present in ISO C2Y.
  For instance, warn about \f(CW\*(C`_Generic\*(C'\fR selecting with a type name
  instead of an expression.  This option is independent of the standards
  mode.  Warnings are disabled in the expression that follows
*************** mode.  Warnings are disabled in the expr
*** 9013,9072 ****
  .Sp
  When not compiling in C2Y mode, these warnings are upgraded to errors
  by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wc++\-compat\fR (C and Objective-C only)" 4
  .IX Item "-Wc++-compat (C and Objective-C only)"
! Warn about \s-1ISO C\s0 constructs that are outside of the common subset of
! \&\s-1ISO C\s0 and \s-1ISO \*(C+,\s0 e.g. request for implicit conversion from
  \&\f(CW\*(C`void *\*(C'\fR to a pointer to non\-\f(CW\*(C`void\*(C'\fR type.
! .IP "\fB\-Wc++11\-compat\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wc++11-compat ( and Objective- only)"
! Warn about \*(C+ constructs whose meaning differs between \s-1ISO \*(C+ 1998\s0
! and \s-1ISO \*(C+ 2011,\s0 e.g., identifiers in \s-1ISO \*(C+ 1998\s0 that are keywords
! in \s-1ISO \*(C+ 2011.\s0  This warning turns on \fB\-Wnarrowing\fR and is
  enabled by \fB\-Wall\fR.
! .IP "\fB\-Wc++14\-compat\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wc++14-compat ( and Objective- only)"
! Warn about \*(C+ constructs whose meaning differs between \s-1ISO \*(C+ 2011\s0
! and \s-1ISO \*(C+ 2014.\s0  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wc++17\-compat\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wc++17-compat ( and Objective- only)"
! Warn about \*(C+ constructs whose meaning differs between \s-1ISO \*(C+ 2014\s0
! and \s-1ISO \*(C+ 2017.\s0  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wc++20\-compat\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wc++20-compat ( and Objective- only)"
! Warn about \*(C+ constructs whose meaning differs between \s-1ISO \*(C+ 2017\s0
! and \s-1ISO \*(C+ 2020.\s0  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wno\-c++11\-extensions\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-c++11-extensions ( and Objective- only)"
! Do not warn about \*(C+11 constructs in code being compiled using
! an older \*(C+ standard.  Even without this option, some \*(C+11 constructs
  will only be diagnosed if \fB\-Wpedantic\fR is used.
! .IP "\fB\-Wno\-c++14\-extensions\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-c++14-extensions ( and Objective- only)"
! Do not warn about \*(C+14 constructs in code being compiled using
! an older \*(C+ standard.  Even without this option, some \*(C+14 constructs
  will only be diagnosed if \fB\-Wpedantic\fR is used.
! .IP "\fB\-Wno\-c++17\-extensions\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-c++17-extensions ( and Objective- only)"
! Do not warn about \*(C+17 constructs in code being compiled using
! an older \*(C+ standard.  Even without this option, some \*(C+17 constructs
  will only be diagnosed if \fB\-Wpedantic\fR is used.
! .IP "\fB\-Wno\-c++20\-extensions\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-c++20-extensions ( and Objective- only)"
! Do not warn about \*(C+20 constructs in code being compiled using
! an older \*(C+ standard.  Even without this option, some \*(C+20 constructs
  will only be diagnosed if \fB\-Wpedantic\fR is used.
! .IP "\fB\-Wno\-c++23\-extensions\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-c++23-extensions ( and Objective- only)"
! Do not warn about \*(C+23 constructs in code being compiled using
! an older \*(C+ standard.  Even without this option, some \*(C+23 constructs
  will only be diagnosed if \fB\-Wpedantic\fR is used.
! .IP "\fB\-Wno\-c++26\-extensions\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-c++26-extensions ( and Objective- only)"
! Do not warn about \*(C+26 constructs in code being compiled using
! an older \*(C+ standard.  Even without this option, some \*(C+26 constructs
  will only be diagnosed if \fB\-Wpedantic\fR is used.
! .IP "\fB\-Wcast\-qual\fR" 4
  .IX Item "-Wcast-qual"
  Warn whenever a pointer is cast so as to remove a type qualifier from
  the target type.  For example, warn if a \f(CW\*(C`const char *\*(C'\fR is cast
--- 8946,9005 ----
  .Sp
  When not compiling in C2Y mode, these warnings are upgraded to errors
  by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wc++\-compat\fR (C and Objective\-C only)" 4
  .IX Item "-Wc++-compat (C and Objective-C only)"
! Warn about ISO C constructs that are outside of the common subset of
! ISO C and ISO C++, e.g. request for implicit conversion from
  \&\f(CW\*(C`void *\*(C'\fR to a pointer to non\-\f(CW\*(C`void\*(C'\fR type.
! .IP "\fB\-Wc++11\-compat\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wc++11-compat (C++ and Objective-C++ only)"
! Warn about C++ constructs whose meaning differs between ISO C++ 1998
! and ISO C++ 2011, e.g., identifiers in ISO C++ 1998 that are keywords
! in ISO C++ 2011.  This warning turns on \fB\-Wnarrowing\fR and is
  enabled by \fB\-Wall\fR.
! .IP "\fB\-Wc++14\-compat\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wc++14-compat (C++ and Objective-C++ only)"
! Warn about C++ constructs whose meaning differs between ISO C++ 2011
! and ISO C++ 2014.  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wc++17\-compat\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wc++17-compat (C++ and Objective-C++ only)"
! Warn about C++ constructs whose meaning differs between ISO C++ 2014
! and ISO C++ 2017.  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wc++20\-compat\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wc++20-compat (C++ and Objective-C++ only)"
! Warn about C++ constructs whose meaning differs between ISO C++ 2017
! and ISO C++ 2020.  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wno\-c++11\-extensions\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-c++11-extensions (C++ and Objective-C++ only)"
! Do not warn about C++11 constructs in code being compiled using
! an older C++ standard.  Even without this option, some C++11 constructs
  will only be diagnosed if \fB\-Wpedantic\fR is used.
! .IP "\fB\-Wno\-c++14\-extensions\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-c++14-extensions (C++ and Objective-C++ only)"
! Do not warn about C++14 constructs in code being compiled using
! an older C++ standard.  Even without this option, some C++14 constructs
  will only be diagnosed if \fB\-Wpedantic\fR is used.
! .IP "\fB\-Wno\-c++17\-extensions\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-c++17-extensions (C++ and Objective-C++ only)"
! Do not warn about C++17 constructs in code being compiled using
! an older C++ standard.  Even without this option, some C++17 constructs
  will only be diagnosed if \fB\-Wpedantic\fR is used.
! .IP "\fB\-Wno\-c++20\-extensions\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-c++20-extensions (C++ and Objective-C++ only)"
! Do not warn about C++20 constructs in code being compiled using
! an older C++ standard.  Even without this option, some C++20 constructs
  will only be diagnosed if \fB\-Wpedantic\fR is used.
! .IP "\fB\-Wno\-c++23\-extensions\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-c++23-extensions (C++ and Objective-C++ only)"
! Do not warn about C++23 constructs in code being compiled using
! an older C++ standard.  Even without this option, some C++23 constructs
  will only be diagnosed if \fB\-Wpedantic\fR is used.
! .IP "\fB\-Wno\-c++26\-extensions\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-c++26-extensions (C++ and Objective-C++ only)"
! Do not warn about C++26 constructs in code being compiled using
! an older C++ standard.  Even without this option, some C++26 constructs
  will only be diagnosed if \fB\-Wpedantic\fR is used.
! .IP \fB\-Wcast\-qual\fR 4
  .IX Item "-Wcast-qual"
  Warn whenever a pointer is cast so as to remove a type qualifier from
  the target type.  For example, warn if a \f(CW\*(C`const char *\*(C'\fR is cast
*************** is unsafe, as in this example:
*** 9084,9116 ****
  \&          /* Now char** pointer points to read\-only memory.  */
  \&          **p = \*(Aqb\*(Aq;
  .Ve
! .IP "\fB\-Wcast\-align\fR" 4
  .IX Item "-Wcast-align"
  Warn whenever a pointer is cast such that the required alignment of the
  target is increased.  For example, warn if a \f(CW\*(C`char *\*(C'\fR is cast to
  an \f(CW\*(C`int *\*(C'\fR on machines where integers can only be accessed at
! two\- or four-byte boundaries.
! .IP "\fB\-Wcast\-align=strict\fR" 4
  .IX Item "-Wcast-align=strict"
  Warn whenever a pointer is cast such that the required alignment of the
  target is increased.  For example, warn if a \f(CW\*(C`char *\*(C'\fR is cast to
  an \f(CW\*(C`int *\*(C'\fR regardless of the target machine.
! .IP "\fB\-Wcast\-function\-type\fR" 4
  .IX Item "-Wcast-function-type"
  Warn when a function pointer is cast to an incompatible function pointer.
  In a cast involving function types with a variable argument list only
  the types of initial arguments that are provided are considered.
! Any parameter of pointer-type matches any other pointer-type.  Any benign
  differences in integral types are ignored, like \f(CW\*(C`int\*(C'\fR vs. \f(CW\*(C`long\*(C'\fR
! on \s-1ILP32\s0 targets.  Likewise type qualifiers are ignored.  The function
  type \f(CW\*(C`void (*) (void)\*(C'\fR is special and matches everything, which can
  be used to suppress this warning.
  In a cast involving pointer to member types this warning warns whenever
  the type cast is changing the pointer to member type.
  This warning is enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wcast\-user\-defined\fR" 4
  .IX Item "-Wcast-user-defined"
! Warn when a cast to reference type does not involve a user-defined
  conversion that the programmer might expect to be called.
  .Sp
  .Vb 2
--- 9017,9049 ----
  \&          /* Now char** pointer points to read\-only memory.  */
  \&          **p = \*(Aqb\*(Aq;
  .Ve
! .IP \fB\-Wcast\-align\fR 4
  .IX Item "-Wcast-align"
  Warn whenever a pointer is cast such that the required alignment of the
  target is increased.  For example, warn if a \f(CW\*(C`char *\*(C'\fR is cast to
  an \f(CW\*(C`int *\*(C'\fR on machines where integers can only be accessed at
! two\- or four\-byte boundaries.
! .IP \fB\-Wcast\-align=strict\fR 4
  .IX Item "-Wcast-align=strict"
  Warn whenever a pointer is cast such that the required alignment of the
  target is increased.  For example, warn if a \f(CW\*(C`char *\*(C'\fR is cast to
  an \f(CW\*(C`int *\*(C'\fR regardless of the target machine.
! .IP \fB\-Wcast\-function\-type\fR 4
  .IX Item "-Wcast-function-type"
  Warn when a function pointer is cast to an incompatible function pointer.
  In a cast involving function types with a variable argument list only
  the types of initial arguments that are provided are considered.
! Any parameter of pointer\-type matches any other pointer\-type.  Any benign
  differences in integral types are ignored, like \f(CW\*(C`int\*(C'\fR vs. \f(CW\*(C`long\*(C'\fR
! on ILP32 targets.  Likewise type qualifiers are ignored.  The function
  type \f(CW\*(C`void (*) (void)\*(C'\fR is special and matches everything, which can
  be used to suppress this warning.
  In a cast involving pointer to member types this warning warns whenever
  the type cast is changing the pointer to member type.
  This warning is enabled by \fB\-Wextra\fR.
! .IP \fB\-Wcast\-user\-defined\fR 4
  .IX Item "-Wcast-user-defined"
! Warn when a cast to reference type does not involve a user\-defined
  conversion that the programmer might expect to be called.
  .Sp
  .Vb 2
*************** conversion that the programmer might exp
*** 9119,9128 ****
  .Ve
  .Sp
  This warning is enabled by default.
! .IP "\fB\-Wwrite\-strings\fR" 4
  .IX Item "-Wwrite-strings"
  When compiling C, give string constants the type \f(CW\*(C`const
! char[\f(CIlength\f(CW]\*(C'\fR so that copying the address of one into a
  non\-\f(CW\*(C`const\*(C'\fR \f(CW\*(C`char *\*(C'\fR pointer produces a warning.  These
  warnings help you find at compile time code that can try to write
  into a string constant, but only if you have been very careful about
--- 9052,9061 ----
  .Ve
  .Sp
  This warning is enabled by default.
! .IP \fB\-Wwrite\-strings\fR 4
  .IX Item "-Wwrite-strings"
  When compiling C, give string constants the type \f(CW\*(C`const
! char[\fR\f(CIlength\fR\f(CW]\*(C'\fR so that copying the address of one into a
  non\-\f(CW\*(C`const\*(C'\fR \f(CW\*(C`char *\*(C'\fR pointer produces a warning.  These
  warnings help you find at compile time code that can try to write
  into a string constant, but only if you have been very careful about
*************** using \f(CW\*(C`const\*(C'\fR in declara
*** 9130,9148 ****
  just a nuisance. This is why we did not make \fB\-Wall\fR request
  these warnings.
  .Sp
! When compiling \*(C+, warn about the deprecated conversion from string
! literals to \f(CW\*(C`char *\*(C'\fR.  This warning is enabled by default for \*(C+
  programs.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR in
! \&\*(C+11 mode or later.
! .IP "\fB\-Wclobbered\fR" 4
  .IX Item "-Wclobbered"
  Warn for variables that might be changed by \f(CW\*(C`longjmp\*(C'\fR or
  \&\f(CW\*(C`vfork\*(C'\fR.  This warning is also enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wno\-complain\-wrong\-lang\fR" 4
  .IX Item "-Wno-complain-wrong-lang"
! By default, language front ends complain when a command-line option is
  valid, but not applicable to that front end.
  This may be disabled with \fB\-Wno\-complain\-wrong\-lang\fR,
  which is mostly useful when invoking a single compiler driver for
--- 9063,9081 ----
  just a nuisance. This is why we did not make \fB\-Wall\fR request
  these warnings.
  .Sp
! When compiling C++, warn about the deprecated conversion from string
! literals to \f(CW\*(C`char *\*(C'\fR.  This warning is enabled by default for C++
  programs.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR in
! C++11 mode or later.
! .IP \fB\-Wclobbered\fR 4
  .IX Item "-Wclobbered"
  Warn for variables that might be changed by \f(CW\*(C`longjmp\*(C'\fR or
  \&\f(CW\*(C`vfork\*(C'\fR.  This warning is also enabled by \fB\-Wextra\fR.
! .IP \fB\-Wno\-complain\-wrong\-lang\fR 4
  .IX Item "-Wno-complain-wrong-lang"
! By default, language front ends complain when a command\-line option is
  valid, but not applicable to that front end.
  This may be disabled with \fB\-Wno\-complain\-wrong\-lang\fR,
  which is mostly useful when invoking a single compiler driver for
*************** multiple source files written in differe
*** 9152,9167 ****
  \&        $ g++ \-fno\-rtti a.cc b.f90
  .Ve
  .Sp
! The driver \fIg++\fR invokes the \*(C+ front end to compile \fIa.cc\fR
  and the Fortran front end to compile \fIb.f90\fR.
  The latter front end diagnoses
! \&\fBf951: Warning: command-line option '\-fno\-rtti' is valid for \*(C+/D/ObjC++ but not for Fortran\fR,
  which may be disabled with \fB\-Wno\-complain\-wrong\-lang\fR.
! .IP "\fB\-Wcompare\-distinct\-pointer\-types\fR (C and Objective-C only)" 4
  .IX Item "-Wcompare-distinct-pointer-types (C and Objective-C only)"
  Warn if pointers of distinct types are compared without a cast.  This
  warning is enabled by default.
! .IP "\fB\-Wconversion\fR" 4
  .IX Item "-Wconversion"
  Warn for implicit conversions that may alter a value. This includes
  conversions between real and integer, like \f(CW\*(C`abs (x)\*(C'\fR when
--- 9085,9100 ----
  \&        $ g++ \-fno\-rtti a.cc b.f90
  .Ve
  .Sp
! The driver \fIg++\fR invokes the C++ front end to compile \fIa.cc\fR
  and the Fortran front end to compile \fIb.f90\fR.
  The latter front end diagnoses
! \&\fBf951: Warning: command\-line option \*(Aq\-fno\-rtti\*(Aq is valid for C++/D/ObjC++ but not for Fortran\fR,
  which may be disabled with \fB\-Wno\-complain\-wrong\-lang\fR.
! .IP "\fB\-Wcompare\-distinct\-pointer\-types\fR (C and Objective\-C only)" 4
  .IX Item "-Wcompare-distinct-pointer-types (C and Objective-C only)"
  Warn if pointers of distinct types are compared without a cast.  This
  warning is enabled by default.
! .IP \fB\-Wconversion\fR 4
  .IX Item "-Wconversion"
  Warn for implicit conversions that may alter a value. This includes
  conversions between real and integer, like \f(CW\*(C`abs (x)\*(C'\fR when
*************** changed by the conversion like in \f(CW\
*** 9173,9188 ****
  conversions between signed and unsigned integers can be disabled by
  using \fB\-Wno\-sign\-conversion\fR.
  .Sp
! For \*(C+, also warn for confusing overload resolution for user-defined
  conversions; and conversions that never use a type conversion
  operator: conversions to \f(CW\*(C`void\*(C'\fR, the same type, a base class or a
  reference to them. Warnings about conversions between signed and
! unsigned integers are disabled by default in \*(C+ unless
  \&\fB\-Wsign\-conversion\fR is explicitly enabled.
  .Sp
  Warnings about conversion from arithmetic on a small type back to that
  type are only given with \fB\-Warith\-conversion\fR.
! .IP "\fB\-Wdangling\-else\fR" 4
  .IX Item "-Wdangling-else"
  Warn about constructions where there may be confusion to which
  \&\f(CW\*(C`if\*(C'\fR statement an \f(CW\*(C`else\*(C'\fR branch belongs.  Here is an example of
--- 9106,9121 ----
  conversions between signed and unsigned integers can be disabled by
  using \fB\-Wno\-sign\-conversion\fR.
  .Sp
! For C++, also warn for confusing overload resolution for user\-defined
  conversions; and conversions that never use a type conversion
  operator: conversions to \f(CW\*(C`void\*(C'\fR, the same type, a base class or a
  reference to them. Warnings about conversions between signed and
! unsigned integers are disabled by default in C++ unless
  \&\fB\-Wsign\-conversion\fR is explicitly enabled.
  .Sp
  Warnings about conversion from arithmetic on a small type back to that
  type are only given with \fB\-Warith\-conversion\fR.
! .IP \fB\-Wdangling\-else\fR 4
  .IX Item "-Wdangling-else"
  Warn about constructions where there may be confusion to which
  \&\f(CW\*(C`if\*(C'\fR statement an \f(CW\*(C`else\*(C'\fR branch belongs.  Here is an example of
*************** such a case:
*** 9198,9208 ****
  \&        }
  .Ve
  .Sp
! In C/\*(C+, every \f(CW\*(C`else\*(C'\fR branch belongs to the innermost possible
  \&\f(CW\*(C`if\*(C'\fR statement, which in this example is \f(CW\*(C`if (b)\*(C'\fR.  This is
  often not what the programmer expected, as illustrated in the above
  example by indentation the programmer chose.  When there is the
! potential for this confusion, \s-1GCC\s0 issues a warning when this flag
  is specified.  To eliminate the warning, add explicit braces around
  the innermost \f(CW\*(C`if\*(C'\fR statement so there is no way the \f(CW\*(C`else\*(C'\fR
  can belong to the enclosing \f(CW\*(C`if\*(C'\fR.  The resulting code
--- 9131,9141 ----
  \&        }
  .Ve
  .Sp
! In C/C++, every \f(CW\*(C`else\*(C'\fR branch belongs to the innermost possible
  \&\f(CW\*(C`if\*(C'\fR statement, which in this example is \f(CW\*(C`if (b)\*(C'\fR.  This is
  often not what the programmer expected, as illustrated in the above
  example by indentation the programmer chose.  When there is the
! potential for this confusion, GCC issues a warning when this flag
  is specified.  To eliminate the warning, add explicit braces around
  the innermost \f(CW\*(C`if\*(C'\fR statement so there is no way the \f(CW\*(C`else\*(C'\fR
  can belong to the enclosing \f(CW\*(C`if\*(C'\fR.  The resulting code
*************** looks like this:
*** 9221,9243 ****
  .Ve
  .Sp
  This warning is enabled by \fB\-Wparentheses\fR.
! .IP "\fB\-Wdangling\-pointer\fR" 4
  .IX Item "-Wdangling-pointer"
  .PD 0
! .IP "\fB\-Wdangling\-pointer=\fR\fIn\fR" 4
  .IX Item "-Wdangling-pointer=n"
  .PD
! Warn about uses of pointers (or \*(C+ references) to objects with automatic
  storage duration after their lifetime has ended.  This includes local
  variables declared in nested blocks, compound literals and other unnamed
  temporary objects.  In addition, warn about storing the address of such
  objects in escaped pointers.  The warning is enabled at all optimization
  levels but may yield different results with optimization than without.
  .RS 4
! .IP "\fB\-Wdangling\-pointer=1\fR" 4
  .IX Item "-Wdangling-pointer=1"
  At level 1, the warning diagnoses only unconditional uses of dangling pointers.
! .IP "\fB\-Wdangling\-pointer=2\fR" 4
  .IX Item "-Wdangling-pointer=2"
  At level 2, in addition to unconditional uses the warning also diagnoses
  conditional uses of dangling pointers.
--- 9154,9176 ----
  .Ve
  .Sp
  This warning is enabled by \fB\-Wparentheses\fR.
! .IP \fB\-Wdangling\-pointer\fR 4
  .IX Item "-Wdangling-pointer"
  .PD 0
! .IP \fB\-Wdangling\-pointer=\fR\fIn\fR 4
  .IX Item "-Wdangling-pointer=n"
  .PD
! Warn about uses of pointers (or C++ references) to objects with automatic
  storage duration after their lifetime has ended.  This includes local
  variables declared in nested blocks, compound literals and other unnamed
  temporary objects.  In addition, warn about storing the address of such
  objects in escaped pointers.  The warning is enabled at all optimization
  levels but may yield different results with optimization than without.
  .RS 4
! .IP \fB\-Wdangling\-pointer=1\fR 4
  .IX Item "-Wdangling-pointer=1"
  At level 1, the warning diagnoses only unconditional uses of dangling pointers.
! .IP \fB\-Wdangling\-pointer=2\fR 4
  .IX Item "-Wdangling-pointer=2"
  At level 2, in addition to unconditional uses the warning also diagnoses
  conditional uses of dangling pointers.
*************** is conditional, the warning triggers at
*** 9295,9324 ****
  \&        }
  .Ve
  .RE
! .IP "\fB\-Wdate\-time\fR" 4
  .IX Item "-Wdate-time"
  Warn when macros \f(CW\*(C`_\|_TIME_\|_\*(C'\fR, \f(CW\*(C`_\|_DATE_\|_\*(C'\fR or \f(CW\*(C`_\|_TIMESTAMP_\|_\*(C'\fR
! are encountered as they might prevent bit-wise-identical reproducible
  compilations.
! .IP "\fB\-Wempty\-body\fR" 4
  .IX Item "-Wempty-body"
  Warn if an empty body occurs in an \f(CW\*(C`if\*(C'\fR, \f(CW\*(C`else\*(C'\fR or \f(CW\*(C`do
  while\*(C'\fR statement.  This warning is also enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wno\-endif\-labels\fR" 4
  .IX Item "-Wno-endif-labels"
  Do not warn about stray tokens after \f(CW\*(C`#else\*(C'\fR and \f(CW\*(C`#endif\*(C'\fR.
! .IP "\fB\-Wenum\-compare\fR" 4
  .IX Item "-Wenum-compare"
  Warn about a comparison between values of different enumerated types.
! In \*(C+ enumerated type mismatches in conditional expressions are also
  diagnosed and the warning is enabled by default.  In C this warning is
  enabled by \fB\-Wall\fR.
! .IP "\fB\-Wenum\-conversion\fR" 4
  .IX Item "-Wenum-conversion"
  Warn when a value of enumerated type is implicitly converted to a
  different enumerated type.  This warning is enabled by \fB\-Wextra\fR
  in C.
! .IP "\fB\-Wenum\-int\-mismatch\fR (C and Objective-C only)" 4
  .IX Item "-Wenum-int-mismatch (C and Objective-C only)"
  Warn about mismatches between an enumerated type and an integer type in
  declarations.  For example:
--- 9228,9257 ----
  \&        }
  .Ve
  .RE
! .IP \fB\-Wdate\-time\fR 4
  .IX Item "-Wdate-time"
  Warn when macros \f(CW\*(C`_\|_TIME_\|_\*(C'\fR, \f(CW\*(C`_\|_DATE_\|_\*(C'\fR or \f(CW\*(C`_\|_TIMESTAMP_\|_\*(C'\fR
! are encountered as they might prevent bit\-wise\-identical reproducible
  compilations.
! .IP \fB\-Wempty\-body\fR 4
  .IX Item "-Wempty-body"
  Warn if an empty body occurs in an \f(CW\*(C`if\*(C'\fR, \f(CW\*(C`else\*(C'\fR or \f(CW\*(C`do
  while\*(C'\fR statement.  This warning is also enabled by \fB\-Wextra\fR.
! .IP \fB\-Wno\-endif\-labels\fR 4
  .IX Item "-Wno-endif-labels"
  Do not warn about stray tokens after \f(CW\*(C`#else\*(C'\fR and \f(CW\*(C`#endif\*(C'\fR.
! .IP \fB\-Wenum\-compare\fR 4
  .IX Item "-Wenum-compare"
  Warn about a comparison between values of different enumerated types.
! In C++ enumerated type mismatches in conditional expressions are also
  diagnosed and the warning is enabled by default.  In C this warning is
  enabled by \fB\-Wall\fR.
! .IP \fB\-Wenum\-conversion\fR 4
  .IX Item "-Wenum-conversion"
  Warn when a value of enumerated type is implicitly converted to a
  different enumerated type.  This warning is enabled by \fB\-Wextra\fR
  in C.
! .IP "\fB\-Wenum\-int\-mismatch\fR (C and Objective\-C only)" 4
  .IX Item "-Wenum-int-mismatch (C and Objective-C only)"
  Warn about mismatches between an enumerated type and an integer type in
  declarations.  For example:
*************** declarations.  For example:
*** 9331,9365 ****
  .Sp
  In C, an enumerated type is compatible with \f(CW\*(C`char\*(C'\fR, a signed
  integer type, or an unsigned integer type.  However, since the choice
! of the underlying type of an enumerated type is implementation-defined,
! such mismatches may cause portability issues.  In \*(C+, such mismatches
  are an error.  In C, this warning is enabled by \fB\-Wall\fR and
  \&\fB\-Wc++\-compat\fR.
! .IP "\fB\-Wjump\-misses\-init\fR (C, Objective-C only)" 4
  .IX Item "-Wjump-misses-init (C, Objective-C only)"
  Warn if a \f(CW\*(C`goto\*(C'\fR statement or a \f(CW\*(C`switch\*(C'\fR statement jumps
  forward across the initialization of a variable, or jumps backward to a
  label after the variable has been initialized.  This only warns about
  variables that are initialized when they are declared.  This warning is
! only supported for C and Objective-C; in \*(C+ this sort of branch is an
  error in any case.
  .Sp
  \&\fB\-Wjump\-misses\-init\fR is included in \fB\-Wc++\-compat\fR.  It
  can be disabled with the \fB\-Wno\-jump\-misses\-init\fR option.
! .IP "\fB\-Wsign\-compare\fR" 4
  .IX Item "-Wsign-compare"
  Warn when a comparison between signed and unsigned values could produce
  an incorrect result when the signed value is converted to unsigned.
! In \*(C+, this warning is also enabled by \fB\-Wall\fR.  In C, it is
  also enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wsign\-conversion\fR" 4
  .IX Item "-Wsign-conversion"
  Warn for implicit conversions that may change the sign of an integer
  value, like assigning a signed integer expression to an unsigned
  integer variable. An explicit cast silences the warning. In C, this
  option is enabled also by \fB\-Wconversion\fR.
! .IP "\fB\-Wflex\-array\-member\-not\-at\-end\fR (C and \*(C+ only)" 4
! .IX Item "-Wflex-array-member-not-at-end (C and only)"
  Warn when a structure containing a C99 flexible array member as the last
  field is not at the end of another structure.
  This warning warns e.g. about
--- 9264,9298 ----
  .Sp
  In C, an enumerated type is compatible with \f(CW\*(C`char\*(C'\fR, a signed
  integer type, or an unsigned integer type.  However, since the choice
! of the underlying type of an enumerated type is implementation\-defined,
! such mismatches may cause portability issues.  In C++, such mismatches
  are an error.  In C, this warning is enabled by \fB\-Wall\fR and
  \&\fB\-Wc++\-compat\fR.
! .IP "\fB\-Wjump\-misses\-init\fR (C, Objective\-C only)" 4
  .IX Item "-Wjump-misses-init (C, Objective-C only)"
  Warn if a \f(CW\*(C`goto\*(C'\fR statement or a \f(CW\*(C`switch\*(C'\fR statement jumps
  forward across the initialization of a variable, or jumps backward to a
  label after the variable has been initialized.  This only warns about
  variables that are initialized when they are declared.  This warning is
! only supported for C and Objective\-C; in C++ this sort of branch is an
  error in any case.
  .Sp
  \&\fB\-Wjump\-misses\-init\fR is included in \fB\-Wc++\-compat\fR.  It
  can be disabled with the \fB\-Wno\-jump\-misses\-init\fR option.
! .IP \fB\-Wsign\-compare\fR 4
  .IX Item "-Wsign-compare"
  Warn when a comparison between signed and unsigned values could produce
  an incorrect result when the signed value is converted to unsigned.
! In C++, this warning is also enabled by \fB\-Wall\fR.  In C, it is
  also enabled by \fB\-Wextra\fR.
! .IP \fB\-Wsign\-conversion\fR 4
  .IX Item "-Wsign-conversion"
  Warn for implicit conversions that may change the sign of an integer
  value, like assigning a signed integer expression to an unsigned
  integer variable. An explicit cast silences the warning. In C, this
  option is enabled also by \fB\-Wconversion\fR.
! .IP "\fB\-Wflex\-array\-member\-not\-at\-end\fR (C and C++ only)" 4
! .IX Item "-Wflex-array-member-not-at-end (C and C++ only)"
  Warn when a structure containing a C99 flexible array member as the last
  field is not at the end of another structure.
  This warning warns e.g. about
*************** This warning warns e.g. about
*** 9368,9383 ****
  \&        struct flex  { int length; char data[]; };
  \&        struct mid_flex { int m; struct flex flex_data; int n; };
  .Ve
! .IP "\fB\-Wfloat\-conversion\fR" 4
  .IX Item "-Wfloat-conversion"
  Warn for implicit conversions that reduce the precision of a real value.
  This includes conversions from real to integer, and from higher precision
  real to lower precision real values.  This option is also enabled by
  \&\fB\-Wconversion\fR.
! .IP "\fB\-Wno\-scalar\-storage\-order\fR" 4
  .IX Item "-Wno-scalar-storage-order"
  Do not warn on suspicious constructs involving reverse scalar storage order.
! .IP "\fB\-Wsizeof\-array\-div\fR" 4
  .IX Item "-Wsizeof-array-div"
  Warn about divisions of two sizeof operators when the first one is applied
  to an array and the divisor does not equal the size of the array element.
--- 9301,9316 ----
  \&        struct flex  { int length; char data[]; };
  \&        struct mid_flex { int m; struct flex flex_data; int n; };
  .Ve
! .IP \fB\-Wfloat\-conversion\fR 4
  .IX Item "-Wfloat-conversion"
  Warn for implicit conversions that reduce the precision of a real value.
  This includes conversions from real to integer, and from higher precision
  real to lower precision real values.  This option is also enabled by
  \&\fB\-Wconversion\fR.
! .IP \fB\-Wno\-scalar\-storage\-order\fR 4
  .IX Item "-Wno-scalar-storage-order"
  Do not warn on suspicious constructs involving reverse scalar storage order.
! .IP \fB\-Wsizeof\-array\-div\fR 4
  .IX Item "-Wsizeof-array-div"
  Warn about divisions of two sizeof operators when the first one is applied
  to an array and the divisor does not equal the size of the array element.
*************** array, which is likely what the user int
*** 9393,9408 ****
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wsizeof\-pointer\-div\fR" 4
  .IX Item "-Wsizeof-pointer-div"
  Warn for suspicious divisions of two sizeof expressions that divide
  the pointer size by the element size, which is the usual way to compute
! the array size but won't work out correctly with pointers.  This warning
  warns e.g. about \f(CW\*(C`sizeof (ptr) / sizeof (ptr[0])\*(C'\fR if \f(CW\*(C`ptr\*(C'\fR is
  not an array, but a pointer.  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wsizeof\-pointer\-memaccess\fR" 4
  .IX Item "-Wsizeof-pointer-memaccess"
! Warn for suspicious length parameters to certain string and memory built-in
  functions if the argument uses \f(CW\*(C`sizeof\*(C'\fR.  This warning triggers for
  example for \f(CW\*(C`memset (ptr, 0, sizeof (ptr));\*(C'\fR if \f(CW\*(C`ptr\*(C'\fR is not
  an array, but a pointer, and suggests a possible fix, or about
--- 9326,9341 ----
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wsizeof\-pointer\-div\fR 4
  .IX Item "-Wsizeof-pointer-div"
  Warn for suspicious divisions of two sizeof expressions that divide
  the pointer size by the element size, which is the usual way to compute
! the array size but won\*(Aqt work out correctly with pointers.  This warning
  warns e.g. about \f(CW\*(C`sizeof (ptr) / sizeof (ptr[0])\*(C'\fR if \f(CW\*(C`ptr\*(C'\fR is
  not an array, but a pointer.  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wsizeof\-pointer\-memaccess\fR 4
  .IX Item "-Wsizeof-pointer-memaccess"
! Warn for suspicious length parameters to certain string and memory built\-in
  functions if the argument uses \f(CW\*(C`sizeof\*(C'\fR.  This warning triggers for
  example for \f(CW\*(C`memset (ptr, 0, sizeof (ptr));\*(C'\fR if \f(CW\*(C`ptr\*(C'\fR is not
  an array, but a pointer, and suggests a possible fix, or about
*************** is almost certainly a mistake and so the
*** 9424,9444 ****
  .Ve
  .Sp
  The \fB\-Wsizeof\-pointer\-memaccess\fR option is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wno\-sizeof\-array\-argument\fR" 4
  .IX Item "-Wno-sizeof-array-argument"
  Do not warn when the \f(CW\*(C`sizeof\*(C'\fR operator is applied to a parameter that is
  declared as an array in a function definition.  This warning is enabled by
! default for C and \*(C+ programs.
! .IP "\fB\-Wmemset\-elt\-size\fR" 4
  .IX Item "-Wmemset-elt-size"
! Warn for suspicious calls to the \f(CW\*(C`memset\*(C'\fR built-in function, if the
  first argument references an array, and the third argument is a number
  equal to the number of elements, but not equal to the size of the array
  in memory.  This indicates that the user has omitted a multiplication by
  the element size.  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wmemset\-transposed\-args\fR" 4
  .IX Item "-Wmemset-transposed-args"
! Warn for suspicious calls to the \f(CW\*(C`memset\*(C'\fR built-in function where
  the second argument is not zero and the third argument is zero.  For
  example, the call \f(CW\*(C`memset (buf, sizeof buf, 0)\*(C'\fR is diagnosed because
  \&\f(CW\*(C`memset (buf, 0, sizeof buf)\*(C'\fR was meant instead.  The diagnostic
--- 9357,9377 ----
  .Ve
  .Sp
  The \fB\-Wsizeof\-pointer\-memaccess\fR option is enabled by \fB\-Wall\fR.
! .IP \fB\-Wno\-sizeof\-array\-argument\fR 4
  .IX Item "-Wno-sizeof-array-argument"
  Do not warn when the \f(CW\*(C`sizeof\*(C'\fR operator is applied to a parameter that is
  declared as an array in a function definition.  This warning is enabled by
! default for C and C++ programs.
! .IP \fB\-Wmemset\-elt\-size\fR 4
  .IX Item "-Wmemset-elt-size"
! Warn for suspicious calls to the \f(CW\*(C`memset\*(C'\fR built\-in function, if the
  first argument references an array, and the third argument is a number
  equal to the number of elements, but not equal to the size of the array
  in memory.  This indicates that the user has omitted a multiplication by
  the element size.  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wmemset\-transposed\-args\fR 4
  .IX Item "-Wmemset-transposed-args"
! Warn for suspicious calls to the \f(CW\*(C`memset\*(C'\fR built\-in function where
  the second argument is not zero and the third argument is zero.  For
  example, the call \f(CW\*(C`memset (buf, sizeof buf, 0)\*(C'\fR is diagnosed because
  \&\f(CW\*(C`memset (buf, 0, sizeof buf)\*(C'\fR was meant instead.  The diagnostic
*************** it is an expression that is folded to ze
*** 9447,9453 ****
  type, it is far less likely that the arguments have been mistakenly
  transposed and no warning is emitted.  This warning is enabled
  by \fB\-Wall\fR.
! .IP "\fB\-Waddress\fR" 4
  .IX Item "-Waddress"
  Warn about suspicious uses of address expressions. These include comparing
  the address of a function or a declared object to the null pointer constant
--- 9380,9386 ----
  type, it is far less likely that the arguments have been mistakenly
  transposed and no warning is emitted.  This warning is enabled
  by \fB\-Wall\fR.
! .IP \fB\-Waddress\fR 4
  .IX Item "-Waddress"
  Warn about suspicious uses of address expressions. These include comparing
  the address of a function or a declared object to the null pointer constant
*************** and are not portable, and suggest the in
*** 9494,9516 ****
  The warning is suppressed if the suspicious expression is the result
  of macro expansion.
  \&\fB\-Waddress\fR warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wno\-address\-of\-packed\-member\fR" 4
  .IX Item "-Wno-address-of-packed-member"
  Do not warn when the address of packed member of struct or union is taken,
  which usually results in an unaligned pointer value.  This is
  enabled by default.
! .IP "\fB\-Wlogical\-op\fR" 4
  .IX Item "-Wlogical-op"
  Warn about suspicious uses of logical operators in expressions.
  This includes using logical operators in contexts where a
! bit-wise operator is likely to be expected.  Also warns when
  the operands of a logical operator are the same:
  .Sp
  .Vb 2
  \&        extern int a;
  \&        if (a < 0 && a < 0) { ... }
  .Ve
! .IP "\fB\-Wlogical\-not\-parentheses\fR" 4
  .IX Item "-Wlogical-not-parentheses"
  Warn about logical not used on the left hand side operand of a comparison.
  This option does not warn if the right operand is considered to be a boolean
--- 9427,9449 ----
  The warning is suppressed if the suspicious expression is the result
  of macro expansion.
  \&\fB\-Waddress\fR warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wno\-address\-of\-packed\-member\fR 4
  .IX Item "-Wno-address-of-packed-member"
  Do not warn when the address of packed member of struct or union is taken,
  which usually results in an unaligned pointer value.  This is
  enabled by default.
! .IP \fB\-Wlogical\-op\fR 4
  .IX Item "-Wlogical-op"
  Warn about suspicious uses of logical operators in expressions.
  This includes using logical operators in contexts where a
! bit\-wise operator is likely to be expected.  Also warns when
  the operands of a logical operator are the same:
  .Sp
  .Vb 2
  \&        extern int a;
  \&        if (a < 0 && a < 0) { ... }
  .Ve
! .IP \fB\-Wlogical\-not\-parentheses\fR 4
  .IX Item "-Wlogical-not-parentheses"
  Warn about logical not used on the left hand side operand of a comparison.
  This option does not warn if the right operand is considered to be a boolean
*************** expression.  Its purpose is to detect su
*** 9522,9528 ****
  \&        if (!a > 1) { ... }
  .Ve
  .Sp
! It is possible to suppress the warning by wrapping the \s-1LHS\s0 into
  parentheses:
  .Sp
  .Vb 1
--- 9455,9461 ----
  \&        if (!a > 1) { ... }
  .Ve
  .Sp
! It is possible to suppress the warning by wrapping the LHS into
  parentheses:
  .Sp
  .Vb 1
*************** parentheses:
*** 9530,9557 ****
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Waggregate\-return\fR" 4
  .IX Item "-Waggregate-return"
  Warn if any functions that return structures or unions are defined or
  called.  (In languages where you can return an array, this also elicits
  a warning.)
! .IP "\fB\-Wno\-aggressive\-loop\-optimizations\fR" 4
  .IX Item "-Wno-aggressive-loop-optimizations"
  Do not warn if the compiler detects undefined behavior in a loop with
  a constant number of iterations.  \fB\-Waggressive\-loop\-optimizations\fR
  is enabled by default.
! .IP "\fB\-Wno\-attributes\fR" 4
  .IX Item "-Wno-attributes"
  Do not warn if an unexpected \f(CW\*(C`_\|_attribute_\|_\*(C'\fR is used, such as
  unrecognized attributes, function attributes applied to variables,
  etc.  This does not stop errors for incorrect use of supported
  attributes.
  .Sp
! Warnings about ill-formed uses of standard attributes are upgraded to
  errors by \fB\-pedantic\-errors\fR.
  .Sp
  Additionally, using \fB\-Wno\-attributes=\fR, it is possible to suppress
! warnings about unknown scoped attributes (in \*(C+11 and C23).  For example,
  \&\fB\-Wno\-attributes=vendor::attr\fR disables warning about the following
  declaration:
  .Sp
--- 9463,9490 ----
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Waggregate\-return\fR 4
  .IX Item "-Waggregate-return"
  Warn if any functions that return structures or unions are defined or
  called.  (In languages where you can return an array, this also elicits
  a warning.)
! .IP \fB\-Wno\-aggressive\-loop\-optimizations\fR 4
  .IX Item "-Wno-aggressive-loop-optimizations"
  Do not warn if the compiler detects undefined behavior in a loop with
  a constant number of iterations.  \fB\-Waggressive\-loop\-optimizations\fR
  is enabled by default.
! .IP \fB\-Wno\-attributes\fR 4
  .IX Item "-Wno-attributes"
  Do not warn if an unexpected \f(CW\*(C`_\|_attribute_\|_\*(C'\fR is used, such as
  unrecognized attributes, function attributes applied to variables,
  etc.  This does not stop errors for incorrect use of supported
  attributes.
  .Sp
! Warnings about ill\-formed uses of standard attributes are upgraded to
  errors by \fB\-pedantic\-errors\fR.
  .Sp
  Additionally, using \fB\-Wno\-attributes=\fR, it is possible to suppress
! warnings about unknown scoped attributes (in C++11 and C23).  For example,
  \&\fB\-Wno\-attributes=vendor::attr\fR disables warning about the following
  declaration:
  .Sp
*************** of these declarations:
*** 9569,9584 ****
  .Ve
  .Sp
  Note that \fB\-Wno\-attributes=\fR does not imply \fB\-Wno\-attributes\fR.
! .IP "\fB\-Wno\-builtin\-declaration\-mismatch\fR" 4
  .IX Item "-Wno-builtin-declaration-mismatch"
! Warn if a built-in function is declared with an incompatible signature
! or as a non-function, or when a built-in function declared with a type
  that does not include a prototype is called with arguments whose promoted
  types do not match those expected by the function.  When \fB\-Wextra\fR
! is specified, also warn when a built-in function that takes arguments is
  declared without a prototype.  The \fB\-Wbuiltin\-declaration\-mismatch\fR
  warning is enabled by default.  To avoid the warning include the appropriate
! header to bring the prototypes of built-in functions into scope.
  .Sp
  For example, the call to \f(CW\*(C`memset\*(C'\fR below is diagnosed by the warning
  because the function expects a value of type \f(CW\*(C`size_t\*(C'\fR as its argument
--- 9502,9517 ----
  .Ve
  .Sp
  Note that \fB\-Wno\-attributes=\fR does not imply \fB\-Wno\-attributes\fR.
! .IP \fB\-Wno\-builtin\-declaration\-mismatch\fR 4
  .IX Item "-Wno-builtin-declaration-mismatch"
! Warn if a built\-in function is declared with an incompatible signature
! or as a non\-function, or when a built\-in function declared with a type
  that does not include a prototype is called with arguments whose promoted
  types do not match those expected by the function.  When \fB\-Wextra\fR
! is specified, also warn when a built\-in function that takes arguments is
  declared without a prototype.  The \fB\-Wbuiltin\-declaration\-mismatch\fR
  warning is enabled by default.  To avoid the warning include the appropriate
! header to bring the prototypes of built\-in functions into scope.
  .Sp
  For example, the call to \f(CW\*(C`memset\*(C'\fR below is diagnosed by the warning
  because the function expects a value of type \f(CW\*(C`size_t\*(C'\fR as its argument
*************** the declaration of the function is diagn
*** 9592,9643 ****
  \&          memset (d, \*(Aq\e0\*(Aq, 32);
  \&        }
  .Ve
! .IP "\fB\-Wno\-builtin\-macro\-redefined\fR" 4
  .IX Item "-Wno-builtin-macro-redefined"
! Do not warn if certain built-in macros are redefined.  This suppresses
  warnings for redefinition of \f(CW\*(C`_\|_TIMESTAMP_\|_\*(C'\fR, \f(CW\*(C`_\|_TIME_\|_\*(C'\fR,
  \&\f(CW\*(C`_\|_DATE_\|_\*(C'\fR, \f(CW\*(C`_\|_FILE_\|_\*(C'\fR, and \f(CW\*(C`_\|_BASE_FILE_\|_\*(C'\fR.
! .IP "\fB\-Wfree\-labels\fR (C and Objective-C only)" 4
  .IX Item "-Wfree-labels (C and Objective-C only)"
! Warn if a label is applied to a non-statement, or occurs at the end of a
  compound statement.  Such labels are allowed by C23 and later dialects
! of C, and are available as a \s-1GCC\s0 extension in all other dialects.
  .Sp
  This warning is also enabled by \fB\-Wc11\-c23\-compat\fR.  It is turned
  into an error if building for a C version before C23 by
  \&\fB\-pedantic\-errors\fR.
! .IP "\fB\-Wheader\-guard\fR" 4
  .IX Item "-Wheader-guard"
  Warn if a valid preprocessor header multiple inclusion guard has
  a \f(CW\*(C`#define\*(C'\fR directive right after \f(CW\*(C`#ifndef\*(C'\fR or \f(CW\*(C`#if !defined\*(C'\fR
  directive for the multiple inclusion guard, which defines a different macro
  from the guard macro with a similar name, the actual multiple inclusion guard
! macro isn't defined at the corresponding \f(CW\*(C`#ifndef\*(C'\fR directive at the end
! of the header, and the \f(CW\*(C`#define\*(C'\fR directive defines an object-like macro
  with empty definition.  In such case, it often is just a misspelled guard
  name, either in the \f(CW\*(C`#ifndef\*(C'\fR or \f(CW\*(C`#if !defined\*(C'\fR directive or in the
  subsequent \f(CW\*(C`#define\*(C'\fR directive.  This warning is enabled
  by \fB\-Wall\fR.
! .IP "\fB\-Wstrict\-prototypes\fR (C and Objective-C only)" 4
  .IX Item "-Wstrict-prototypes (C and Objective-C only)"
  Warn if a function is declared or defined without specifying the
! argument types.  (An old-style function definition is permitted without
  a warning if preceded by a declaration that specifies the argument
  types.)
! .IP "\fB\-Wold\-style\-declaration\fR (C and Objective-C only)" 4
  .IX Item "-Wold-style-declaration (C and Objective-C only)"
  Warn for obsolescent usages, according to the C Standard, in a
! declaration. For example, warn if storage-class specifiers like
  \&\f(CW\*(C`static\*(C'\fR are not the first things in a declaration.  This warning
  is also enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wold\-style\-definition\fR (C and Objective-C only)" 4
  .IX Item "-Wold-style-definition (C and Objective-C only)"
! Warn if an old-style function definition is used.  A warning is given
  even if there is a previous prototype.  A definition using \fB()\fR
! is not considered an old-style definition in C23 mode, because it is
  equivalent to \fB(void)\fR in that case, but is considered an
! old-style definition for older standards.
! .IP "\fB\-Wdeprecated\-non\-prototype\fR (C and Objective-C only)" 4
  .IX Item "-Wdeprecated-non-prototype (C and Objective-C only)"
  Warn if a function declared with an empty parameter list \fB()\fR is
  called with one or more arguments, or if a function definition with one
--- 9525,9576 ----
  \&          memset (d, \*(Aq\e0\*(Aq, 32);
  \&        }
  .Ve
! .IP \fB\-Wno\-builtin\-macro\-redefined\fR 4
  .IX Item "-Wno-builtin-macro-redefined"
! Do not warn if certain built\-in macros are redefined.  This suppresses
  warnings for redefinition of \f(CW\*(C`_\|_TIMESTAMP_\|_\*(C'\fR, \f(CW\*(C`_\|_TIME_\|_\*(C'\fR,
  \&\f(CW\*(C`_\|_DATE_\|_\*(C'\fR, \f(CW\*(C`_\|_FILE_\|_\*(C'\fR, and \f(CW\*(C`_\|_BASE_FILE_\|_\*(C'\fR.
! .IP "\fB\-Wfree\-labels\fR (C and Objective\-C only)" 4
  .IX Item "-Wfree-labels (C and Objective-C only)"
! Warn if a label is applied to a non\-statement, or occurs at the end of a
  compound statement.  Such labels are allowed by C23 and later dialects
! of C, and are available as a GCC extension in all other dialects.
  .Sp
  This warning is also enabled by \fB\-Wc11\-c23\-compat\fR.  It is turned
  into an error if building for a C version before C23 by
  \&\fB\-pedantic\-errors\fR.
! .IP \fB\-Wheader\-guard\fR 4
  .IX Item "-Wheader-guard"
  Warn if a valid preprocessor header multiple inclusion guard has
  a \f(CW\*(C`#define\*(C'\fR directive right after \f(CW\*(C`#ifndef\*(C'\fR or \f(CW\*(C`#if !defined\*(C'\fR
  directive for the multiple inclusion guard, which defines a different macro
  from the guard macro with a similar name, the actual multiple inclusion guard
! macro isn\*(Aqt defined at the corresponding \f(CW\*(C`#ifndef\*(C'\fR directive at the end
! of the header, and the \f(CW\*(C`#define\*(C'\fR directive defines an object\-like macro
  with empty definition.  In such case, it often is just a misspelled guard
  name, either in the \f(CW\*(C`#ifndef\*(C'\fR or \f(CW\*(C`#if !defined\*(C'\fR directive or in the
  subsequent \f(CW\*(C`#define\*(C'\fR directive.  This warning is enabled
  by \fB\-Wall\fR.
! .IP "\fB\-Wstrict\-prototypes\fR (C and Objective\-C only)" 4
  .IX Item "-Wstrict-prototypes (C and Objective-C only)"
  Warn if a function is declared or defined without specifying the
! argument types.  (An old\-style function definition is permitted without
  a warning if preceded by a declaration that specifies the argument
  types.)
! .IP "\fB\-Wold\-style\-declaration\fR (C and Objective\-C only)" 4
  .IX Item "-Wold-style-declaration (C and Objective-C only)"
  Warn for obsolescent usages, according to the C Standard, in a
! declaration. For example, warn if storage\-class specifiers like
  \&\f(CW\*(C`static\*(C'\fR are not the first things in a declaration.  This warning
  is also enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wold\-style\-definition\fR (C and Objective\-C only)" 4
  .IX Item "-Wold-style-definition (C and Objective-C only)"
! Warn if an old\-style function definition is used.  A warning is given
  even if there is a previous prototype.  A definition using \fB()\fR
! is not considered an old\-style definition in C23 mode, because it is
  equivalent to \fB(void)\fR in that case, but is considered an
! old\-style definition for older standards.
! .IP "\fB\-Wdeprecated\-non\-prototype\fR (C and Objective\-C only)" 4
  .IX Item "-Wdeprecated-non-prototype (C and Objective-C only)"
  Warn if a function declared with an empty parameter list \fB()\fR is
  called with one or more arguments, or if a function definition with one
*************** or more parameters is encountered after
*** 9645,9661 ****
  are errors in C23 and later dialects  of C.
  .Sp
  This warning is also enabled by \fB\-Wc11\-c23\-compat\fR.
! .IP "\fB\-Wmissing\-parameter\-name\fR (C and Objective-C only)" 4
  .IX Item "-Wmissing-parameter-name (C and Objective-C only)"
  Warn if a function definition omits a parameter name, specifying only
  its type.  This can be used to document that a parameter is unused
  in the definition.  It is part of C23 and later dialects of C,
! and available as a \s-1GCC\s0 extension in all other dialects.
  .Sp
  This warning is also enabled by \fB\-Wc11\-c23\-compat\fR.  It is turned
  into an error if building for a C version before C23 by
  \&\fB\-pedantic\-errors\fR.
! .IP "\fB\-Wmissing\-parameter\-type\fR (C and Objective-C only)" 4
  .IX Item "-Wmissing-parameter-type (C and Objective-C only)"
  A function parameter is declared without a type specifier in K&R\-style
  functions:
--- 9578,9594 ----
  are errors in C23 and later dialects  of C.
  .Sp
  This warning is also enabled by \fB\-Wc11\-c23\-compat\fR.
! .IP "\fB\-Wmissing\-parameter\-name\fR (C and Objective\-C only)" 4
  .IX Item "-Wmissing-parameter-name (C and Objective-C only)"
  Warn if a function definition omits a parameter name, specifying only
  its type.  This can be used to document that a parameter is unused
  in the definition.  It is part of C23 and later dialects of C,
! and available as a GCC extension in all other dialects.
  .Sp
  This warning is also enabled by \fB\-Wc11\-c23\-compat\fR.  It is turned
  into an error if building for a C version before C23 by
  \&\fB\-pedantic\-errors\fR.
! .IP "\fB\-Wmissing\-parameter\-type\fR (C and Objective\-C only)" 4
  .IX Item "-Wmissing-parameter-type (C and Objective-C only)"
  A function parameter is declared without a type specifier in K&R\-style
  functions:
*************** functions:
*** 9665,9671 ****
  .Ve
  .Sp
  This warning is also enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wno\-declaration\-missing\-parameter\-type\fR (C and Objective-C only)" 4
  .IX Item "-Wno-declaration-missing-parameter-type (C and Objective-C only)"
  Do not warn if a function declaration contains a parameter name without
  a type.  Such function declarations do not provide a function prototype
--- 9598,9604 ----
  .Ve
  .Sp
  This warning is also enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wno\-declaration\-missing\-parameter\-type\fR (C and Objective\-C only)" 4
  .IX Item "-Wno-declaration-missing-parameter-type (C and Objective-C only)"
  Do not warn if a function declaration contains a parameter name without
  a type.  Such function declarations do not provide a function prototype
*************** is treated as an error.  The error can b
*** 9677,9709 ****
  error alone, with \fB\-Wno\-error=declaration\-missing\-parameter\-type\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wmissing\-prototypes\fR (C and Objective-C only)" 4
  .IX Item "-Wmissing-prototypes (C and Objective-C only)"
  Warn if a global function is defined without a previous prototype
  declaration.  This warning is issued even if the definition itself
  provides a prototype.  Use this option to detect global functions
  that do not have a matching prototype declaration in a header file.
! This option is not valid for \*(C+ because all function declarations
! provide prototypes and a non-matching declaration declares an
  overload rather than conflict with an earlier declaration.
! Use \fB\-Wmissing\-declarations\fR to detect missing declarations in \*(C+.
! .IP "\fB\-Wmissing\-variable\-declarations\fR (C and Objective-C only)" 4
  .IX Item "-Wmissing-variable-declarations (C and Objective-C only)"
  Warn if a global variable is defined without a previous declaration.
  Use this option to detect global variables that do not have a matching
  extern declaration in a header file.
! .IP "\fB\-Wmissing\-declarations\fR" 4
  .IX Item "-Wmissing-declarations"
  Warn if a global function is defined without a previous declaration.
  Do so even if the definition itself provides a prototype.
  Use this option to detect global functions that are not declared in
  header files.  In C, no warnings are issued for functions with previous
! non-prototype declarations; use \fB\-Wmissing\-prototypes\fR to detect
! missing prototypes.  In \*(C+, no warnings are issued for function templates,
  or for inline functions, or for functions in anonymous namespaces.
! .IP "\fB\-Wmissing\-field\-initializers\fR" 4
  .IX Item "-Wmissing-field-initializers"
! Warn if a structure's initializer has some fields missing.  For
  example, the following code causes such a warning, because
  \&\f(CW\*(C`x.h\*(C'\fR is implicitly zero:
  .Sp
--- 9610,9642 ----
  error alone, with \fB\-Wno\-error=declaration\-missing\-parameter\-type\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wmissing\-prototypes\fR (C and Objective\-C only)" 4
  .IX Item "-Wmissing-prototypes (C and Objective-C only)"
  Warn if a global function is defined without a previous prototype
  declaration.  This warning is issued even if the definition itself
  provides a prototype.  Use this option to detect global functions
  that do not have a matching prototype declaration in a header file.
! This option is not valid for C++ because all function declarations
! provide prototypes and a non\-matching declaration declares an
  overload rather than conflict with an earlier declaration.
! Use \fB\-Wmissing\-declarations\fR to detect missing declarations in C++.
! .IP "\fB\-Wmissing\-variable\-declarations\fR (C and Objective\-C only)" 4
  .IX Item "-Wmissing-variable-declarations (C and Objective-C only)"
  Warn if a global variable is defined without a previous declaration.
  Use this option to detect global variables that do not have a matching
  extern declaration in a header file.
! .IP \fB\-Wmissing\-declarations\fR 4
  .IX Item "-Wmissing-declarations"
  Warn if a global function is defined without a previous declaration.
  Do so even if the definition itself provides a prototype.
  Use this option to detect global functions that are not declared in
  header files.  In C, no warnings are issued for functions with previous
! non\-prototype declarations; use \fB\-Wmissing\-prototypes\fR to detect
! missing prototypes.  In C++, no warnings are issued for function templates,
  or for inline functions, or for functions in anonymous namespaces.
! .IP \fB\-Wmissing\-field\-initializers\fR 4
  .IX Item "-Wmissing-field-initializers"
! Warn if a structure\*(Aqs initializer has some fields missing.  For
  example, the following code causes such a warning, because
  \&\f(CW\*(C`x.h\*(C'\fR is implicitly zero:
  .Sp
*************** In C this option does not warn about the
*** 9728,9734 ****
  \&        struct s x = { 0 };
  .Ve
  .Sp
! Likewise, in \*(C+ this option does not warn about the empty { }
  initializer, for example:
  .Sp
  .Vb 2
--- 9661,9667 ----
  \&        struct s x = { 0 };
  .Ve
  .Sp
! Likewise, in C++ this option does not warn about the empty { }
  initializer, for example:
  .Sp
  .Vb 2
*************** initializer, for example:
*** 9738,9746 ****
  .Sp
  This warning is included in \fB\-Wextra\fR.  To get other \fB\-Wextra\fR
  warnings without this one, use \fB\-Wextra \-Wno\-missing\-field\-initializers\fR.
! .IP "\fB\-Wno\-missing\-requires\fR" 4
  .IX Item "-Wno-missing-requires"
! By default, the compiler warns about a concept-id appearing as a \*(C+20 simple-requirement:
  .Sp
  .Vb 1
  \&        bool satisfied = requires { C<T> };
--- 9671,9679 ----
  .Sp
  This warning is included in \fB\-Wextra\fR.  To get other \fB\-Wextra\fR
  warnings without this one, use \fB\-Wextra \-Wno\-missing\-field\-initializers\fR.
! .IP \fB\-Wno\-missing\-requires\fR 4
  .IX Item "-Wno-missing-requires"
! By default, the compiler warns about a concept\-id appearing as a C++20 simple\-requirement:
  .Sp
  .Vb 1
  \&        bool satisfied = requires { C<T> };
*************** so \fBsatisfied\fR is only true if conce
*** 9757,9763 ****
  type \fBT\fR.
  .Sp
  This warning can be disabled with \fB\-Wno\-missing\-requires\fR.
! .IP "\fB\-Wno\-missing\-template\-keyword\fR" 4
  .IX Item "-Wno-missing-template-keyword"
  The member access tokens ., \-> and :: must be followed by the \f(CW\*(C`template\*(C'\fR
  keyword if the parent object is dependent and the member being named is a
--- 9690,9696 ----
  type \fBT\fR.
  .Sp
  This warning can be disabled with \fB\-Wno\-missing\-requires\fR.
! .IP \fB\-Wno\-missing\-template\-keyword\fR 4
  .IX Item "-Wno-missing-template-keyword"
  The member access tokens ., \-> and :: must be followed by the \f(CW\*(C`template\*(C'\fR
  keyword if the parent object is dependent and the member being named is a
*************** template, even where m and N are integer
*** 9787,9818 ****
  .Ve
  .Sp
  This warning can be disabled with \fB\-Wno\-missing\-template\-keyword\fR.
! .IP "\fB\-Wno\-multichar\fR" 4
  .IX Item "-Wno-multichar"
! Do not warn if a multicharacter constant (\fB'\s-1FOOF\s0'\fR) is used.
! Usually they indicate a typo in the user's code, as they have
! implementation-defined values, and should not be used in portable code.
! .IP "\fB\-Wnormalized=\fR[\fBnone\fR|\fBid\fR|\fBnfc\fR|\fBnfkc\fR]" 4
  .IX Item "-Wnormalized=[none|id|nfc|nfkc]"
! In \s-1ISO C\s0 and \s-1ISO \*(C+,\s0 two identifiers are different if they are
  different sequences of characters.  However, sometimes when characters
! outside the basic \s-1ASCII\s0 character set are used, you can have two
  different character sequences that look the same.  To avoid confusion,
! the \s-1ISO 10646\s0 standard sets out some \fInormalization rules\fR which
  when applied ensure that two sequences that look the same are turned into
! the same sequence.  \s-1GCC\s0 can warn you if you are using identifiers that
  have not been normalized; this option controls that warning.
  .Sp
! There are four levels of warning supported by \s-1GCC.\s0  The default is
  \&\fB\-Wnormalized=nfc\fR, which warns about any identifier that is
! not in the \s-1ISO 10646 \*(L"C\*(R"\s0 normalized form, \fI\s-1NFC\s0\fR.  \s-1NFC\s0 is the
  recommended form for most uses.  It is equivalent to
  \&\fB\-Wnormalized\fR.
  .Sp
  Unfortunately, there are some characters allowed in identifiers by
! \&\s-1ISO C\s0 and \s-1ISO \*(C+\s0 that, when turned into \s-1NFC,\s0 are not allowed in
! identifiers.  That is, there's no way to use these symbols in portable
! \&\s-1ISO C\s0 or \*(C+ and have all your identifiers in \s-1NFC.\s0
  \&\fB\-Wnormalized=id\fR suppresses the warning for these characters.
  It is hoped that future versions of the standards involved will correct
  this, which is why this option is not the default.
--- 9720,9751 ----
  .Ve
  .Sp
  This warning can be disabled with \fB\-Wno\-missing\-template\-keyword\fR.
! .IP \fB\-Wno\-multichar\fR 4
  .IX Item "-Wno-multichar"
! Do not warn if a multicharacter constant (\fB\*(AqFOOF\*(Aq\fR) is used.
! Usually they indicate a typo in the user\*(Aqs code, as they have
! implementation\-defined values, and should not be used in portable code.
! .IP \fB\-Wnormalized=\fR[\fBnone\fR|\fBid\fR|\fBnfc\fR|\fBnfkc\fR] 4
  .IX Item "-Wnormalized=[none|id|nfc|nfkc]"
! In ISO C and ISO C++, two identifiers are different if they are
  different sequences of characters.  However, sometimes when characters
! outside the basic ASCII character set are used, you can have two
  different character sequences that look the same.  To avoid confusion,
! the ISO 10646 standard sets out some \fInormalization rules\fR which
  when applied ensure that two sequences that look the same are turned into
! the same sequence.  GCC can warn you if you are using identifiers that
  have not been normalized; this option controls that warning.
  .Sp
! There are four levels of warning supported by GCC.  The default is
  \&\fB\-Wnormalized=nfc\fR, which warns about any identifier that is
! not in the ISO 10646 "C" normalized form, \fINFC\fR.  NFC is the
  recommended form for most uses.  It is equivalent to
  \&\fB\-Wnormalized\fR.
  .Sp
  Unfortunately, there are some characters allowed in identifiers by
! ISO C and ISO C++ that, when turned into NFC, are not allowed in
! identifiers.  That is, there\*(Aqs no way to use these symbols in portable
! ISO C or C++ and have all your identifiers in NFC.
  \&\fB\-Wnormalized=id\fR suppresses the warning for these characters.
  It is hoped that future versions of the standards involved will correct
  this, which is why this option is not the default.
*************** this, which is why this option is not th
*** 9820,9882 ****
  You can switch the warning off for all characters by writing
  \&\fB\-Wnormalized=none\fR or \fB\-Wno\-normalized\fR.  You should
  only do this if you are using some other normalization scheme (like
! \&\*(L"D\*(R"), because otherwise you can easily create bugs that are
  literally impossible to see.
  .Sp
! Some characters in \s-1ISO 10646\s0 have distinct meanings but look identical
  in some fonts or display methodologies, especially once formatting has
! been applied.  For instance \f(CW\*(C`\eu207F\*(C'\fR, \*(L"\s-1SUPERSCRIPT LATIN SMALL
! LETTER N\*(R",\s0 displays just like a regular \f(CW\*(C`n\*(C'\fR that has been
! placed in a superscript.  \s-1ISO 10646\s0 defines the \fI\s-1NFKC\s0\fR
  normalization scheme to convert all these into a standard form as
! well, and \s-1GCC\s0 warns if your code is not in \s-1NFKC\s0 if you use
  \&\fB\-Wnormalized=nfkc\fR.  This warning is comparable to warning
  about every identifier that contains the letter O because it might be
  confused with the digit 0, and so is not the default, but may be
  useful as a local coding convention if the programming environment
  cannot be fixed to display these characters distinctly.
! .IP "\fB\-Wno\-attribute\-warning\fR" 4
  .IX Item "-Wno-attribute-warning"
  Do not warn about usage of functions
  declared with \f(CW\*(C`warning\*(C'\fR attribute.  By default, this warning is
  enabled.  \fB\-Wno\-attribute\-warning\fR can be used to disable the
  warning or \fB\-Wno\-error=attribute\-warning\fR can be used to
  disable the error when compiled with \fB\-Werror\fR flag.
! .IP "\fB\-Wno\-deprecated\fR" 4
  .IX Item "-Wno-deprecated"
  Do not warn about usage of deprecated features.
  .Sp
! In \*(C+, explicitly specifying \fB\-Wdeprecated\fR also enables
  warnings about some features that are deprecated in later language
  standards, specifically \fB\-Wcomma\-subscript\fR,
  \&\fB\-Wvolatile\fR, \fB\-Wdeprecated\-enum\-float\-conversion\fR,
  \&\fB\-Wdeprecated\-enum\-enum\-conversion\fR,
  \&\fB\-Wdeprecated\-literal\-operator\fR, and
  \&\fB\-Wdeprecated\-variadic\-comma\-omission\fR.
! .IP "\fB\-Wno\-deprecated\-declarations\fR" 4
  .IX Item "-Wno-deprecated-declarations"
  Do not warn about uses of functions,
  variables, and types marked as deprecated by using the \f(CW\*(C`deprecated\*(C'\fR
  attribute.
! .IP "\fB\-Wno\-overflow\fR" 4
  .IX Item "-Wno-overflow"
! Do not warn about compile-time overflow in constant expressions.
! .IP "\fB\-Wno\-odr\fR" 4
  .IX Item "-Wno-odr"
! Warn about One Definition Rule violations during link-time optimization.
  Enabled by default.
! .IP "\fB\-Wopenacc\-parallelism\fR" 4
  .IX Item "-Wopenacc-parallelism"
  Warn about potentially suboptimal choices related to OpenACC parallelism.
! .IP "\fB\-Wno\-openmp\fR" 4
  .IX Item "-Wno-openmp"
  Warn about suspicious OpenMP code.
! .IP "\fB\-Wopenmp\-simd\fR" 4
  .IX Item "-Wopenmp-simd"
  Warn if the vectorizer cost model overrides the OpenMP
  simd directive set by user.  The \fB\-fsimd\-cost\-model=unlimited\fR
  option can be used to relax the cost model.
! .IP "\fB\-Woverride\-init\fR (C and Objective-C only)" 4
  .IX Item "-Woverride-init (C and Objective-C only)"
  Warn if an initialized field without side effects is overridden when
  using designated initializers.
--- 9753,9815 ----
  You can switch the warning off for all characters by writing
  \&\fB\-Wnormalized=none\fR or \fB\-Wno\-normalized\fR.  You should
  only do this if you are using some other normalization scheme (like
! "D"), because otherwise you can easily create bugs that are
  literally impossible to see.
  .Sp
! Some characters in ISO 10646 have distinct meanings but look identical
  in some fonts or display methodologies, especially once formatting has
! been applied.  For instance \f(CW\*(C`\eu207F\*(C'\fR, "SUPERSCRIPT LATIN SMALL
! LETTER N", displays just like a regular \f(CW\*(C`n\*(C'\fR that has been
! placed in a superscript.  ISO 10646 defines the \fINFKC\fR
  normalization scheme to convert all these into a standard form as
! well, and GCC warns if your code is not in NFKC if you use
  \&\fB\-Wnormalized=nfkc\fR.  This warning is comparable to warning
  about every identifier that contains the letter O because it might be
  confused with the digit 0, and so is not the default, but may be
  useful as a local coding convention if the programming environment
  cannot be fixed to display these characters distinctly.
! .IP \fB\-Wno\-attribute\-warning\fR 4
  .IX Item "-Wno-attribute-warning"
  Do not warn about usage of functions
  declared with \f(CW\*(C`warning\*(C'\fR attribute.  By default, this warning is
  enabled.  \fB\-Wno\-attribute\-warning\fR can be used to disable the
  warning or \fB\-Wno\-error=attribute\-warning\fR can be used to
  disable the error when compiled with \fB\-Werror\fR flag.
! .IP \fB\-Wno\-deprecated\fR 4
  .IX Item "-Wno-deprecated"
  Do not warn about usage of deprecated features.
  .Sp
! In C++, explicitly specifying \fB\-Wdeprecated\fR also enables
  warnings about some features that are deprecated in later language
  standards, specifically \fB\-Wcomma\-subscript\fR,
  \&\fB\-Wvolatile\fR, \fB\-Wdeprecated\-enum\-float\-conversion\fR,
  \&\fB\-Wdeprecated\-enum\-enum\-conversion\fR,
  \&\fB\-Wdeprecated\-literal\-operator\fR, and
  \&\fB\-Wdeprecated\-variadic\-comma\-omission\fR.
! .IP \fB\-Wno\-deprecated\-declarations\fR 4
  .IX Item "-Wno-deprecated-declarations"
  Do not warn about uses of functions,
  variables, and types marked as deprecated by using the \f(CW\*(C`deprecated\*(C'\fR
  attribute.
! .IP \fB\-Wno\-overflow\fR 4
  .IX Item "-Wno-overflow"
! Do not warn about compile\-time overflow in constant expressions.
! .IP \fB\-Wno\-odr\fR 4
  .IX Item "-Wno-odr"
! Warn about One Definition Rule violations during link\-time optimization.
  Enabled by default.
! .IP \fB\-Wopenacc\-parallelism\fR 4
  .IX Item "-Wopenacc-parallelism"
  Warn about potentially suboptimal choices related to OpenACC parallelism.
! .IP \fB\-Wno\-openmp\fR 4
  .IX Item "-Wno-openmp"
  Warn about suspicious OpenMP code.
! .IP \fB\-Wopenmp\-simd\fR 4
  .IX Item "-Wopenmp-simd"
  Warn if the vectorizer cost model overrides the OpenMP
  simd directive set by user.  The \fB\-fsimd\-cost\-model=unlimited\fR
  option can be used to relax the cost model.
! .IP "\fB\-Woverride\-init\fR (C and Objective\-C only)" 4
  .IX Item "-Woverride-init (C and Objective-C only)"
  Warn if an initialized field without side effects is overridden when
  using designated initializers.
*************** using designated initializers.
*** 9884,9898 ****
  This warning is included in \fB\-Wextra\fR.  To get other
  \&\fB\-Wextra\fR warnings without this one, use \fB\-Wextra
  \&\-Wno\-override\-init\fR.
! .IP "\fB\-Wno\-override\-init\-side\-effects\fR (C and Objective-C only)" 4
  .IX Item "-Wno-override-init-side-effects (C and Objective-C only)"
  Do not warn if an initialized field with side effects is overridden when
  using designated initializers.  This warning is enabled by default.
! .IP "\fB\-Wpacked\fR" 4
  .IX Item "-Wpacked"
  Warn if a structure is given the packed attribute, but the packed
  attribute has no effect on the layout or size of the structure.
! Such structures may be mis-aligned for little benefit.  For
  instance, in this code, the variable \f(CW\*(C`f.x\*(C'\fR in \f(CW\*(C`struct bar\*(C'\fR
  is misaligned even though \f(CW\*(C`struct bar\*(C'\fR does not itself
  have the packed attribute:
--- 9817,9831 ----
  This warning is included in \fB\-Wextra\fR.  To get other
  \&\fB\-Wextra\fR warnings without this one, use \fB\-Wextra
  \&\-Wno\-override\-init\fR.
! .IP "\fB\-Wno\-override\-init\-side\-effects\fR (C and Objective\-C only)" 4
  .IX Item "-Wno-override-init-side-effects (C and Objective-C only)"
  Do not warn if an initialized field with side effects is overridden when
  using designated initializers.  This warning is enabled by default.
! .IP \fB\-Wpacked\fR 4
  .IX Item "-Wpacked"
  Warn if a structure is given the packed attribute, but the packed
  attribute has no effect on the layout or size of the structure.
! Such structures may be mis\-aligned for little benefit.  For
  instance, in this code, the variable \f(CW\*(C`f.x\*(C'\fR in \f(CW\*(C`struct bar\*(C'\fR
  is misaligned even though \f(CW\*(C`struct bar\*(C'\fR does not itself
  have the packed attribute:
*************** have the packed attribute:
*** 9907,9918 ****
  \&          struct foo f;
  \&        };
  .Ve
! .IP "\fB\-Wnopacked\-bitfield\-compat\fR" 4
  .IX Item "-Wnopacked-bitfield-compat"
! The 4.1, 4.2 and 4.3 series of \s-1GCC\s0 ignore the \f(CW\*(C`packed\*(C'\fR attribute
! on bit-fields of type \f(CW\*(C`char\*(C'\fR.  This was fixed in \s-1GCC 4.4\s0 but
! the change can lead to differences in the structure layout.  \s-1GCC\s0
! informs you when the offset of such a field has changed in \s-1GCC 4.4.\s0
  For example there is no longer a 4\-bit padding between field \f(CW\*(C`a\*(C'\fR
  and \f(CW\*(C`b\*(C'\fR in this structure:
  .Sp
--- 9840,9851 ----
  \&          struct foo f;
  \&        };
  .Ve
! .IP \fB\-Wnopacked\-bitfield\-compat\fR 4
  .IX Item "-Wnopacked-bitfield-compat"
! The 4.1, 4.2 and 4.3 series of GCC ignore the \f(CW\*(C`packed\*(C'\fR attribute
! on bit\-fields of type \f(CW\*(C`char\*(C'\fR.  This was fixed in GCC 4.4 but
! the change can lead to differences in the structure layout.  GCC
! informs you when the offset of such a field has changed in GCC 4.4.
  For example there is no longer a 4\-bit padding between field \f(CW\*(C`a\*(C'\fR
  and \f(CW\*(C`b\*(C'\fR in this structure:
  .Sp
*************** and \f(CW\*(C`b\*(C'\fR in this structur
*** 9926,9933 ****
  .Sp
  This warning is enabled by default.  Use
  \&\fB\-Wno\-packed\-bitfield\-compat\fR to disable this warning.
! .IP "\fB\-Wpacked\-not\-aligned\fR (C, \*(C+, Objective-C and Objective\-\*(C+ only)" 4
! .IX Item "-Wpacked-not-aligned (C, , Objective-C and Objective- only)"
  Warn if a structure field with explicitly specified alignment in a
  packed struct or union is misaligned.  For example, a warning will
  be issued on \f(CW\*(C`struct S\*(C'\fR, like, \f(CW\*(C`warning: alignment 1 of
--- 9859,9866 ----
  .Sp
  This warning is enabled by default.  Use
  \&\fB\-Wno\-packed\-bitfield\-compat\fR to disable this warning.
! .IP "\fB\-Wpacked\-not\-aligned\fR (C, C++, Objective\-C and Objective\-C++ only)" 4
! .IX Item "-Wpacked-not-aligned (C, C++, Objective-C and Objective-C++ only)"
  Warn if a structure field with explicitly specified alignment in a
  packed struct or union is misaligned.  For example, a warning will
  be issued on \f(CW\*(C`struct S\*(C'\fR, like, \f(CW\*(C`warning: alignment 1 of
*************** be issued on \f(CW\*(C`struct S\*(C'\fR,
*** 9941,9964 ****
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wpadded\fR" 4
  .IX Item "-Wpadded"
  Warn if padding is included in a structure, either to align an element
  of the structure or to align the whole structure.  Sometimes when this
  happens it is possible to rearrange the fields of the structure to
  reduce the padding and so make the structure smaller.
! .IP "\fB\-Wredundant\-decls\fR" 4
  .IX Item "-Wredundant-decls"
  Warn if anything is declared more than once in the same scope, even in
  cases where multiple declaration is valid and changes nothing.
! .IP "\fB\-Wrestrict\fR" 4
  .IX Item "-Wrestrict"
  Warn when an object referenced by a \f(CW\*(C`restrict\*(C'\fR\-qualified parameter
! (or, in \*(C+, a \f(CW\*(C`_\|_restrict\*(C'\fR\-qualified parameter) is aliased by another
  argument, or when copies between such objects overlap.  For example,
  the call to the \f(CW\*(C`strcpy\*(C'\fR function below attempts to truncate the string
  by replacing its initial characters with the last four.  However, because
! the call writes the terminating \s-1NUL\s0 into \f(CW\*(C`a[4]\*(C'\fR, the copies overlap and
  the call is diagnosed.
  .Sp
  .Vb 6
--- 9874,9897 ----
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wpadded\fR 4
  .IX Item "-Wpadded"
  Warn if padding is included in a structure, either to align an element
  of the structure or to align the whole structure.  Sometimes when this
  happens it is possible to rearrange the fields of the structure to
  reduce the padding and so make the structure smaller.
! .IP \fB\-Wredundant\-decls\fR 4
  .IX Item "-Wredundant-decls"
  Warn if anything is declared more than once in the same scope, even in
  cases where multiple declaration is valid and changes nothing.
! .IP \fB\-Wrestrict\fR 4
  .IX Item "-Wrestrict"
  Warn when an object referenced by a \f(CW\*(C`restrict\*(C'\fR\-qualified parameter
! (or, in C++, a \f(CW\*(C`_\|_restrict\*(C'\fR\-qualified parameter) is aliased by another
  argument, or when copies between such objects overlap.  For example,
  the call to the \f(CW\*(C`strcpy\*(C'\fR function below attempts to truncate the string
  by replacing its initial characters with the last four.  However, because
! the call writes the terminating NUL into \f(CW\*(C`a[4]\*(C'\fR, the copies overlap and
  the call is diagnosed.
  .Sp
  .Vb 6
*************** the call is diagnosed.
*** 9973,9982 ****
  The \fB\-Wrestrict\fR option detects some instances of simple overlap
  even without optimization but works best at \fB\-O2\fR and above.  It
  is included in \fB\-Wall\fR.
! .IP "\fB\-Wnested\-externs\fR (C and Objective-C only)" 4
  .IX Item "-Wnested-externs (C and Objective-C only)"
  Warn if an \f(CW\*(C`extern\*(C'\fR declaration is encountered within a function.
! .IP "\fB\-Winline\fR" 4
  .IX Item "-Winline"
  Warn if a function that is declared as inline cannot be inlined.
  Even with this option, the compiler does not warn about failures to
--- 9906,9915 ----
  The \fB\-Wrestrict\fR option detects some instances of simple overlap
  even without optimization but works best at \fB\-O2\fR and above.  It
  is included in \fB\-Wall\fR.
! .IP "\fB\-Wnested\-externs\fR (C and Objective\-C only)" 4
  .IX Item "-Wnested-externs (C and Objective-C only)"
  Warn if an \f(CW\*(C`extern\*(C'\fR declaration is encountered within a function.
! .IP \fB\-Winline\fR 4
  .IX Item "-Winline"
  Warn if a function that is declared as inline cannot be inlined.
  Even with this option, the compiler does not warn about failures to
*************** the size of the function being inlined a
*** 9988,9997 ****
  that has already been done in the current function.  Therefore,
  seemingly insignificant changes in the source program can cause the
  warnings produced by \fB\-Winline\fR to appear or disappear.
! .IP "\fB\-Winterference\-size\fR" 4
  .IX Item "-Winterference-size"
! Warn about use of \*(C+17 \f(CW\*(C`std::hardware_destructive_interference_size\*(C'\fR
! without specifying its value with \fB\-\-param destructive-interference-size\fR.
  Also warn about questionable values for that option.
  .Sp
  This variable is intended to be used for controlling class layout, to
--- 9921,9930 ----
  that has already been done in the current function.  Therefore,
  seemingly insignificant changes in the source program can cause the
  warnings produced by \fB\-Winline\fR to appear or disappear.
! .IP \fB\-Winterference\-size\fR 4
  .IX Item "-Winterference-size"
! Warn about use of C++17 \f(CW\*(C`std::hardware_destructive_interference_size\*(C'\fR
! without specifying its value with \fB\-\-param destructive\-interference\-size\fR.
  Also warn about questionable values for that option.
  .Sp
  This variable is intended to be used for controlling class layout, to
*************** avoid false sharing in concurrent code:
*** 10007,10081 ****
  .Ve
  .Sp
  Here \fBone\fR and \fBtwo\fR are intended to be far enough apart
! that stores to one won't require accesses to the other to reload the
  cache line.
  .Sp
! By default, \fB\-\-param destructive-interference-size\fR and
! \&\fB\-\-param constructive-interference-size\fR are set based on the
  current \fB\-mtune\fR option, typically to the L1 cache line size
! for the particular target \s-1CPU,\s0 sometimes to a range if tuning for a
! generic target.  So all translation units that depend on \s-1ABI\s0
  compatibility for the use of these variables must be compiled with
  the same \fB\-mtune\fR (or \fB\-mcpu\fR).
  .Sp
! If \s-1ABI\s0 stability is important, such as if the use is in a header for a
  library, you should probably not use the hardware interference size
  variables at all.  Alternatively, you can force a particular value
  with \fB\-\-param\fR.
  .Sp
! If you are confident that your use of the variable does not affect \s-1ABI\s0
  outside a single build of your project, you can turn off the warning
  with \fB\-Wno\-interference\-size\fR.
! .IP "\fB\-Wint\-in\-bool\-context\fR" 4
  .IX Item "-Wint-in-bool-context"
  Warn for suspicious use of integer values where boolean values are expected,
! such as conditional expressions (?:) using non-boolean integer constants in
  boolean context, like \f(CW\*(C`if (a <= b ? 2 : 3)\*(C'\fR.  Or left shifting of signed
  integers in boolean context, like \f(CW\*(C`for (a = 0; 1 << a; a++);\*(C'\fR.  Likewise
  for all kinds of multiplications regardless of the data type.
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wno\-int\-to\-pointer\-cast\fR" 4
  .IX Item "-Wno-int-to-pointer-cast"
  Suppress warnings from casts to pointer type of an integer of a
! different size. In \*(C+, casting to a pointer type of smaller size is
! an error. \fBWint-to-pointer-cast\fR is enabled by default.
! .IP "\fB\-Wno\-pointer\-to\-int\-cast\fR (C and Objective-C only)" 4
  .IX Item "-Wno-pointer-to-int-cast (C and Objective-C only)"
  Suppress warnings from casts from a pointer to an integer type of a
  different size.
! .IP "\fB\-Winvalid\-pch\fR" 4
  .IX Item "-Winvalid-pch"
  Warn if a precompiled header is found in
  the search path but cannot be used.
! .IP "\fB\-Winvalid\-utf8\fR" 4
  .IX Item "-Winvalid-utf8"
! Warn if an invalid \s-1UTF\-8\s0 character is found.
! This warning is on by default for \*(C+23 if \fB\-finput\-charset=UTF\-8\fR
  is used and turned into error with \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wno\-unicode\fR" 4
  .IX Item "-Wno-unicode"
! Don't diagnose invalid forms of delimited or named escape sequences which are
  treated as separate tokens.  \fBWunicode\fR is enabled by default.
! .IP "\fB\-Wlong\-long\fR" 4
  .IX Item "-Wlong-long"
  Warn if \f(CW\*(C`long long\*(C'\fR type is used.  This is enabled by either
! \&\fB\-Wpedantic\fR or \fB\-Wtraditional\fR in \s-1ISO C90\s0 and \*(C+98
  modes.  To inhibit the warning messages, use \fB\-Wno\-long\-long\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wvariadic\-macros\fR" 4
  .IX Item "-Wvariadic-macros"
! Warn if variadic macros are used in \s-1ISO C90\s0 mode, or if the \s-1GNU\s0
! alternate syntax is used in \s-1ISO C99\s0 mode.  This is enabled by either
  \&\fB\-Wpedantic\fR or \fB\-Wtraditional\fR.  To inhibit the warning
  messages, use \fB\-Wno\-variadic\-macros\fR.
! .IP "\fB\-Wno\-varargs\fR" 4
  .IX Item "-Wno-varargs"
  Do not warn upon questionable usage of the macros used to handle variable
  arguments like \f(CW\*(C`va_start\*(C'\fR.  These warnings are enabled by default.
! .IP "\fB\-Wvector\-operation\-performance\fR" 4
  .IX Item "-Wvector-operation-performance"
! Warn if vector operation is not implemented via \s-1SIMD\s0 capabilities of the
  architecture.  Mainly useful for the performance tuning.
  Vector operation can be implemented \f(CW\*(C`piecewise\*(C'\fR, which means that the
  scalar operation is performed on every vector element;
--- 9940,10014 ----
  .Ve
  .Sp
  Here \fBone\fR and \fBtwo\fR are intended to be far enough apart
! that stores to one won\*(Aqt require accesses to the other to reload the
  cache line.
  .Sp
! By default, \fB\-\-param destructive\-interference\-size\fR and
! \&\fB\-\-param constructive\-interference\-size\fR are set based on the
  current \fB\-mtune\fR option, typically to the L1 cache line size
! for the particular target CPU, sometimes to a range if tuning for a
! generic target.  So all translation units that depend on ABI
  compatibility for the use of these variables must be compiled with
  the same \fB\-mtune\fR (or \fB\-mcpu\fR).
  .Sp
! If ABI stability is important, such as if the use is in a header for a
  library, you should probably not use the hardware interference size
  variables at all.  Alternatively, you can force a particular value
  with \fB\-\-param\fR.
  .Sp
! If you are confident that your use of the variable does not affect ABI
  outside a single build of your project, you can turn off the warning
  with \fB\-Wno\-interference\-size\fR.
! .IP \fB\-Wint\-in\-bool\-context\fR 4
  .IX Item "-Wint-in-bool-context"
  Warn for suspicious use of integer values where boolean values are expected,
! such as conditional expressions (?:) using non\-boolean integer constants in
  boolean context, like \f(CW\*(C`if (a <= b ? 2 : 3)\*(C'\fR.  Or left shifting of signed
  integers in boolean context, like \f(CW\*(C`for (a = 0; 1 << a; a++);\*(C'\fR.  Likewise
  for all kinds of multiplications regardless of the data type.
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wno\-int\-to\-pointer\-cast\fR 4
  .IX Item "-Wno-int-to-pointer-cast"
  Suppress warnings from casts to pointer type of an integer of a
! different size. In C++, casting to a pointer type of smaller size is
! an error. \fBWint\-to\-pointer\-cast\fR is enabled by default.
! .IP "\fB\-Wno\-pointer\-to\-int\-cast\fR (C and Objective\-C only)" 4
  .IX Item "-Wno-pointer-to-int-cast (C and Objective-C only)"
  Suppress warnings from casts from a pointer to an integer type of a
  different size.
! .IP \fB\-Winvalid\-pch\fR 4
  .IX Item "-Winvalid-pch"
  Warn if a precompiled header is found in
  the search path but cannot be used.
! .IP \fB\-Winvalid\-utf8\fR 4
  .IX Item "-Winvalid-utf8"
! Warn if an invalid UTF\-8 character is found.
! This warning is on by default for C++23 if \fB\-finput\-charset=UTF\-8\fR
  is used and turned into error with \fB\-pedantic\-errors\fR.
! .IP \fB\-Wno\-unicode\fR 4
  .IX Item "-Wno-unicode"
! Don\*(Aqt diagnose invalid forms of delimited or named escape sequences which are
  treated as separate tokens.  \fBWunicode\fR is enabled by default.
! .IP \fB\-Wlong\-long\fR 4
  .IX Item "-Wlong-long"
  Warn if \f(CW\*(C`long long\*(C'\fR type is used.  This is enabled by either
! \&\fB\-Wpedantic\fR or \fB\-Wtraditional\fR in ISO C90 and C++98
  modes.  To inhibit the warning messages, use \fB\-Wno\-long\-long\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP \fB\-Wvariadic\-macros\fR 4
  .IX Item "-Wvariadic-macros"
! Warn if variadic macros are used in ISO C90 mode, or if the GNU
! alternate syntax is used in ISO C99 mode.  This is enabled by either
  \&\fB\-Wpedantic\fR or \fB\-Wtraditional\fR.  To inhibit the warning
  messages, use \fB\-Wno\-variadic\-macros\fR.
! .IP \fB\-Wno\-varargs\fR 4
  .IX Item "-Wno-varargs"
  Do not warn upon questionable usage of the macros used to handle variable
  arguments like \f(CW\*(C`va_start\*(C'\fR.  These warnings are enabled by default.
! .IP \fB\-Wvector\-operation\-performance\fR 4
  .IX Item "-Wvector-operation-performance"
! Warn if vector operation is not implemented via SIMD capabilities of the
  architecture.  Mainly useful for the performance tuning.
  Vector operation can be implemented \f(CW\*(C`piecewise\*(C'\fR, which means that the
  scalar operation is performed on every vector element;
*************** scalar operation is performed on every v
*** 10083,10124 ****
  using scalars of wider type, which normally is more performance efficient;
  and \f(CW\*(C`as a single scalar\*(C'\fR, which means that vector fits into a
  scalar type.
! .IP "\fB\-Wvla\fR" 4
  .IX Item "-Wvla"
! Warn if a variable-length array is used in the code.
  \&\fB\-Wno\-vla\fR prevents the \fB\-Wpedantic\fR warning of
! the variable-length array.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wvla\-larger\-than=\fR\fIbyte-size\fR" 4
  .IX Item "-Wvla-larger-than=byte-size"
  If this option is used, the compiler warns for declarations of
! variable-length arrays whose size is either unbounded, or bounded
! by an argument that allows the array size to exceed \fIbyte-size\fR
! bytes.  This is similar to how \fB\-Walloca\-larger\-than=\fR\fIbyte-size\fR
! works, but with variable-length arrays.
  .Sp
! Note that \s-1GCC\s0 may optimize small variable-length arrays of a known
  value into plain arrays, so this warning may not get triggered for
  such arrays.
  .Sp
! \&\fB\-Wvla\-larger\-than=\fR\fB\s-1PTRDIFF_MAX\s0\fR is enabled by default but
  is typically only effective when \fB\-ftree\-vrp\fR is active (default
  for \fB\-O2\fR and above).
  .Sp
! See also \fB\-Walloca\-larger\-than=\fR\fIbyte-size\fR.
! .IP "\fB\-Wno\-vla\-larger\-than\fR" 4
  .IX Item "-Wno-vla-larger-than"
  Disable \fB\-Wvla\-larger\-than=\fR warnings.  The option is equivalent
! to \fB\-Wvla\-larger\-than=\fR\fB\s-1SIZE_MAX\s0\fR or larger.
! .IP "\fB\-Wvla\-parameter\fR" 4
  .IX Item "-Wvla-parameter"
  Warn about redeclarations of functions involving arguments of Variable
  Length Array types of inconsistent kinds or forms, and enable the detection
! of out-of-bounds accesses to such parameters by warnings such as
  \&\fB\-Warray\-bounds\fR.
  .Sp
! If the first function declaration uses the \s-1VLA\s0 form the bound specified
  in the array is assumed to be the minimum number of elements expected to
  be provided in calls to the function and the maximum number of elements
  accessed by it.  Failing to provide arguments of sufficient size or
--- 10016,10057 ----
  using scalars of wider type, which normally is more performance efficient;
  and \f(CW\*(C`as a single scalar\*(C'\fR, which means that vector fits into a
  scalar type.
! .IP \fB\-Wvla\fR 4
  .IX Item "-Wvla"
! Warn if a variable\-length array is used in the code.
  \&\fB\-Wno\-vla\fR prevents the \fB\-Wpedantic\fR warning of
! the variable\-length array.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP \fB\-Wvla\-larger\-than=\fR\fIbyte\-size\fR 4
  .IX Item "-Wvla-larger-than=byte-size"
  If this option is used, the compiler warns for declarations of
! variable\-length arrays whose size is either unbounded, or bounded
! by an argument that allows the array size to exceed \fIbyte\-size\fR
! bytes.  This is similar to how \fB\-Walloca\-larger\-than=\fR\fIbyte\-size\fR
! works, but with variable\-length arrays.
  .Sp
! Note that GCC may optimize small variable\-length arrays of a known
  value into plain arrays, so this warning may not get triggered for
  such arrays.
  .Sp
! \&\fB\-Wvla\-larger\-than=\fR\fBPTRDIFF_MAX\fR is enabled by default but
  is typically only effective when \fB\-ftree\-vrp\fR is active (default
  for \fB\-O2\fR and above).
  .Sp
! See also \fB\-Walloca\-larger\-than=\fR\fIbyte\-size\fR.
! .IP \fB\-Wno\-vla\-larger\-than\fR 4
  .IX Item "-Wno-vla-larger-than"
  Disable \fB\-Wvla\-larger\-than=\fR warnings.  The option is equivalent
! to \fB\-Wvla\-larger\-than=\fR\fBSIZE_MAX\fR or larger.
! .IP \fB\-Wvla\-parameter\fR 4
  .IX Item "-Wvla-parameter"
  Warn about redeclarations of functions involving arguments of Variable
  Length Array types of inconsistent kinds or forms, and enable the detection
! of out\-of\-bounds accesses to such parameters by warnings such as
  \&\fB\-Warray\-bounds\fR.
  .Sp
! If the first function declaration uses the VLA form the bound specified
  in the array is assumed to be the minimum number of elements expected to
  be provided in calls to the function and the maximum number of elements
  accessed by it.  Failing to provide arguments of sufficient size or
*************** accessing more than the maximum number o
*** 10127,10134 ****
  For example, the warning triggers for the following redeclarations because
  the first one allows an array of any size to be passed to \f(CW\*(C`f\*(C'\fR while
  the second one specifies that the array argument must have at least \f(CW\*(C`n\*(C'\fR
! elements.  In addition, calling \f(CW\*(C`f\*(C'\fR with the associated \s-1VLA\s0 bound
! parameter in excess of the actual \s-1VLA\s0 bound triggers a warning as well.
  .Sp
  .Vb 3
  \&        void f (int n, int[n]);
--- 10060,10067 ----
  For example, the warning triggers for the following redeclarations because
  the first one allows an array of any size to be passed to \f(CW\*(C`f\*(C'\fR while
  the second one specifies that the array argument must have at least \f(CW\*(C`n\*(C'\fR
! elements.  In addition, calling \f(CW\*(C`f\*(C'\fR with the associated VLA bound
! parameter in excess of the actual VLA bound triggers a warning as well.
  .Sp
  .Vb 3
  \&        void f (int n, int[n]);
*************** parameter in excess of the actual \s-1VL
*** 10149,10238 ****
  \&\fB\-Wvla\-parameter\fR is included in \fB\-Wall\fR.  The
  \&\fB\-Warray\-parameter\fR option triggers warnings for similar problems
  involving ordinary array arguments.
! .IP "\fB\-Wvolatile\-register\-var\fR" 4
  .IX Item "-Wvolatile-register-var"
  Warn if a register variable is declared volatile.  The volatile
  modifier does not inhibit all optimizations that may eliminate reads
  and/or writes to register variables.  This warning is enabled by
  \&\fB\-Wall\fR.
! .IP "\fB\-Wno\-xor\-used\-as\-pow\fR (C, \*(C+, Objective-C and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-xor-used-as-pow (C, , Objective-C and Objective- only)"
  Disable warnings about uses of \f(CW\*(C`^\*(C'\fR, the exclusive or operator,
  where it appears the code meant exponentiation.
  Specifically, the warning occurs when the
! left-hand side is the decimal constant 2 or 10 and the right-hand side
  is also a decimal constant.
  .Sp
! In C and \*(C+, \f(CW\*(C`^\*(C'\fR means exclusive or, whereas in some other languages
! (e.g. TeX and some versions of \s-1BASIC\s0) it means exponentiation.
  .Sp
  This warning can be silenced by converting one of the operands to
  hexadecimal as well as by compiling with \fB\-Wno\-xor\-used\-as\-pow\fR.
! .IP "\fB\-Wdisabled\-optimization\fR" 4
  .IX Item "-Wdisabled-optimization"
  Warn if a requested optimization pass is disabled.  This warning does
  not generally indicate that there is anything wrong with your code; it
! merely indicates that \s-1GCC\s0's optimizers are unable to handle the code
  effectively.  Often, the problem is that your code is too big or too
! complex; \s-1GCC\s0 refuses to optimize programs when the optimization
  itself is likely to take inordinate amounts of time.
! .IP "\fB\-Wpointer\-sign\fR (C and Objective-C only)" 4
  .IX Item "-Wpointer-sign (C and Objective-C only)"
  Warn for pointer argument passing or assignment with different signedness.
! This option is only supported for C and Objective-C.  It is implied by
  \&\fB\-Wall\fR and by \fB\-Wpedantic\fR, which can be disabled with
  \&\fB\-Wno\-pointer\-sign\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wstack\-protector\fR" 4
  .IX Item "-Wstack-protector"
  This option is only active when \fB\-fstack\-protector\fR is active.  It
  warns about functions that are not protected against stack smashing.
! .IP "\fB\-Woverlength\-strings\fR" 4
  .IX Item "-Woverlength-strings"
! Warn about string constants that are longer than the \*(L"minimum
! maximum\*(R" length specified in the C standard.  Modern compilers
  generally allow string constants that are much longer than the
! standard's minimum limit, but very portable programs should avoid
  using longer strings.
  .Sp
  The limit applies \fIafter\fR string constant concatenation, and does
! not count the trailing \s-1NUL.\s0  In C90, the limit was 509 characters; in
! C99, it was raised to 4095.  \*(C+98 does not specify a normative
! minimum maximum, so we do not diagnose overlength strings in \*(C+.
  .Sp
  This option is implied by \fB\-Wpedantic\fR, and can be disabled with
  \&\fB\-Wno\-overlength\-strings\fR.
! .IP "\fB\-Wunsuffixed\-float\-constants\fR (C and Objective-C only)" 4
  .IX Item "-Wunsuffixed-float-constants (C and Objective-C only)"
  Issue a warning for any floating constant that does not have
  a suffix.  When used together with \fB\-Wsystem\-headers\fR it
  warns about such constants in system header files.  This can be useful
  when preparing code to use with the \f(CW\*(C`FLOAT_CONST_DECIMAL64\*(C'\fR pragma
! from the decimal floating-point extension to C99.
! .IP "\fB\-Wno\-lto\-type\-mismatch\fR" 4
  .IX Item "-Wno-lto-type-mismatch"
! During the link-time optimization, do not warn about type mismatches in
  global declarations from different compilation units.
  Requires \fB\-flto\fR to be enabled.  Enabled by default.
! .IP "\fB\-Wno\-designated\-init\fR (C and Objective-C only)" 4
  .IX Item "-Wno-designated-init (C and Objective-C only)"
  Suppress warnings when a positional initializer is used to initialize
  a structure that has been marked with the \f(CW\*(C`designated_init\*(C'\fR
  attribute.
  .SS "Options That Control Static Analysis"
  .IX Subsection "Options That Control Static Analysis"
! .IP "\fB\-fanalyzer\fR" 4
  .IX Item "-fanalyzer"
  This option enables an static analysis of program flow which looks
! for \*(L"interesting\*(R" interprocedural paths through the
  code, and issues warnings for problems found on them.
  .Sp
! This analysis is much more expensive than other \s-1GCC\s0 warnings.
  .Sp
! In technical terms, it performs coverage-guided symbolic execution of
  the code being compiled.  It is neither sound nor complete: it can
! have false positives and false negatives.  It is a bug-finding tool,
  rather than a tool for proving program correctness.
  .Sp
  The analyzer is only suitable for use on C code in this release.
--- 10082,10171 ----
  \&\fB\-Wvla\-parameter\fR is included in \fB\-Wall\fR.  The
  \&\fB\-Warray\-parameter\fR option triggers warnings for similar problems
  involving ordinary array arguments.
! .IP \fB\-Wvolatile\-register\-var\fR 4
  .IX Item "-Wvolatile-register-var"
  Warn if a register variable is declared volatile.  The volatile
  modifier does not inhibit all optimizations that may eliminate reads
  and/or writes to register variables.  This warning is enabled by
  \&\fB\-Wall\fR.
! .IP "\fB\-Wno\-xor\-used\-as\-pow\fR (C, C++, Objective\-C and Objective\-C++ only)" 4
! .IX Item "-Wno-xor-used-as-pow (C, C++, Objective-C and Objective-C++ only)"
  Disable warnings about uses of \f(CW\*(C`^\*(C'\fR, the exclusive or operator,
  where it appears the code meant exponentiation.
  Specifically, the warning occurs when the
! left\-hand side is the decimal constant 2 or 10 and the right\-hand side
  is also a decimal constant.
  .Sp
! In C and C++, \f(CW\*(C`^\*(C'\fR means exclusive or, whereas in some other languages
! (e.g. TeX and some versions of BASIC) it means exponentiation.
  .Sp
  This warning can be silenced by converting one of the operands to
  hexadecimal as well as by compiling with \fB\-Wno\-xor\-used\-as\-pow\fR.
! .IP \fB\-Wdisabled\-optimization\fR 4
  .IX Item "-Wdisabled-optimization"
  Warn if a requested optimization pass is disabled.  This warning does
  not generally indicate that there is anything wrong with your code; it
! merely indicates that GCC\*(Aqs optimizers are unable to handle the code
  effectively.  Often, the problem is that your code is too big or too
! complex; GCC refuses to optimize programs when the optimization
  itself is likely to take inordinate amounts of time.
! .IP "\fB\-Wpointer\-sign\fR (C and Objective\-C only)" 4
  .IX Item "-Wpointer-sign (C and Objective-C only)"
  Warn for pointer argument passing or assignment with different signedness.
! This option is only supported for C and Objective\-C.  It is implied by
  \&\fB\-Wall\fR and by \fB\-Wpedantic\fR, which can be disabled with
  \&\fB\-Wno\-pointer\-sign\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP \fB\-Wstack\-protector\fR 4
  .IX Item "-Wstack-protector"
  This option is only active when \fB\-fstack\-protector\fR is active.  It
  warns about functions that are not protected against stack smashing.
! .IP \fB\-Woverlength\-strings\fR 4
  .IX Item "-Woverlength-strings"
! Warn about string constants that are longer than the "minimum
! maximum" length specified in the C standard.  Modern compilers
  generally allow string constants that are much longer than the
! standard\*(Aqs minimum limit, but very portable programs should avoid
  using longer strings.
  .Sp
  The limit applies \fIafter\fR string constant concatenation, and does
! not count the trailing NUL.  In C90, the limit was 509 characters; in
! C99, it was raised to 4095.  C++98 does not specify a normative
! minimum maximum, so we do not diagnose overlength strings in C++.
  .Sp
  This option is implied by \fB\-Wpedantic\fR, and can be disabled with
  \&\fB\-Wno\-overlength\-strings\fR.
! .IP "\fB\-Wunsuffixed\-float\-constants\fR (C and Objective\-C only)" 4
  .IX Item "-Wunsuffixed-float-constants (C and Objective-C only)"
  Issue a warning for any floating constant that does not have
  a suffix.  When used together with \fB\-Wsystem\-headers\fR it
  warns about such constants in system header files.  This can be useful
  when preparing code to use with the \f(CW\*(C`FLOAT_CONST_DECIMAL64\*(C'\fR pragma
! from the decimal floating\-point extension to C99.
! .IP \fB\-Wno\-lto\-type\-mismatch\fR 4
  .IX Item "-Wno-lto-type-mismatch"
! During the link\-time optimization, do not warn about type mismatches in
  global declarations from different compilation units.
  Requires \fB\-flto\fR to be enabled.  Enabled by default.
! .IP "\fB\-Wno\-designated\-init\fR (C and Objective\-C only)" 4
  .IX Item "-Wno-designated-init (C and Objective-C only)"
  Suppress warnings when a positional initializer is used to initialize
  a structure that has been marked with the \f(CW\*(C`designated_init\*(C'\fR
  attribute.
  .SS "Options That Control Static Analysis"
  .IX Subsection "Options That Control Static Analysis"
! .IP \fB\-fanalyzer\fR 4
  .IX Item "-fanalyzer"
  This option enables an static analysis of program flow which looks
! for "interesting" interprocedural paths through the
  code, and issues warnings for problems found on them.
  .Sp
! This analysis is much more expensive than other GCC warnings.
  .Sp
! In technical terms, it performs coverage\-guided symbolic execution of
  the code being compiled.  It is neither sound nor complete: it can
! have false positives and false negatives.  It is a bug\-finding tool,
  rather than a tool for proving program correctness.
  .Sp
  The analyzer is only suitable for use on C code in this release.
*************** Enabling this option effectively enables
*** 10289,10297 ****
  \&\-Wanalyzer\-write\-to\-const
  \&\-Wanalyzer\-write\-to\-string\-literal\fR
  .Sp
! This option is only available if \s-1GCC\s0 was configured with analyzer
  support enabled.
! .IP "\fB\-Wanalyzer\-symbol\-too\-complex\fR" 4
  .IX Item "-Wanalyzer-symbol-too-complex"
  If \fB\-fanalyzer\fR is enabled, the analyzer uses various heuristics
  to attempt to track the state of memory, but these can be defeated by
--- 10222,10230 ----
  \&\-Wanalyzer\-write\-to\-const
  \&\-Wanalyzer\-write\-to\-string\-literal\fR
  .Sp
! This option is only available if GCC was configured with analyzer
  support enabled.
! .IP \fB\-Wanalyzer\-symbol\-too\-complex\fR 4
  .IX Item "-Wanalyzer-symbol-too-complex"
  If \fB\-fanalyzer\fR is enabled, the analyzer uses various heuristics
  to attempt to track the state of memory, but these can be defeated by
*************** if they exceed the threshold defined by
*** 10302,10308 ****
  \&\fB\-\-param analyzer\-max\-svalue\-depth=\fR\fIvalue\fR, and falls back
  to an imprecise representation for such expressions.
  The \fB\-Wanalyzer\-symbol\-too\-complex\fR option warns if this occurs.
! .IP "\fB\-Wanalyzer\-too\-complex\fR" 4
  .IX Item "-Wanalyzer-too-complex"
  If \fB\-fanalyzer\fR is enabled, the analyzer uses various heuristics
  to attempt to explore the control flow and data flow in the program,
--- 10235,10241 ----
  \&\fB\-\-param analyzer\-max\-svalue\-depth=\fR\fIvalue\fR, and falls back
  to an imprecise representation for such expressions.
  The \fB\-Wanalyzer\-symbol\-too\-complex\fR option warns if this occurs.
! .IP \fB\-Wanalyzer\-too\-complex\fR 4
  .IX Item "-Wanalyzer-too-complex"
  If \fB\-fanalyzer\fR is enabled, the analyzer uses various heuristics
  to attempt to explore the control flow and data flow in the program,
*************** but these can be defeated by sufficientl
*** 10311,10317 ****
  By default, the analysis silently stops if the code is too
  complicated for the analyzer to fully explore and it reaches an internal
  limit.  The \fB\-Wanalyzer\-too\-complex\fR option warns if this occurs.
! .IP "\fB\-Wno\-analyzer\-allocation\-size\fR" 4
  .IX Item "-Wno-analyzer-allocation-size"
  This warning requires \fB\-fanalyzer\fR, which enables it;
  to disable it, use \fB\-Wno\-analyzer\-allocation\-size\fR.
--- 10244,10250 ----
  By default, the analysis silently stops if the code is too
  complicated for the analyzer to fully explore and it reaches an internal
  limit.  The \fB\-Wanalyzer\-too\-complex\fR option warns if this occurs.
! .IP \fB\-Wno\-analyzer\-allocation\-size\fR 4
  .IX Item "-Wno-analyzer-allocation-size"
  This warning requires \fB\-fanalyzer\fR, which enables it;
  to disable it, use \fB\-Wno\-analyzer\-allocation\-size\fR.
*************** This diagnostic warns for paths through
*** 10320,10327 ****
  a buffer is assigned to point at a buffer with a size that is not a
  multiple of \f(CW\*(C`sizeof (*pointer)\*(C'\fR.
  .Sp
! See  \s-1CWE\-131:\s0 Incorrect Calculation of Buffer Size (\f(CW\*(C`https://cwe.mitre.org/data/definitions/131.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-deref\-before\-check\fR" 4
  .IX Item "-Wno-analyzer-deref-before-check"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-deref\-before\-check\fR
--- 10253,10260 ----
  a buffer is assigned to point at a buffer with a size that is not a
  multiple of \f(CW\*(C`sizeof (*pointer)\*(C'\fR.
  .Sp
! See  CWE\-131: Incorrect Calculation of Buffer Size (\f(CW\*(C`https://cwe.mitre.org/data/definitions/131.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-deref\-before\-check\fR 4
  .IX Item "-Wno-analyzer-deref-before-check"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-deref\-before\-check\fR
*************** to disable it.
*** 10329,10349 ****
  .Sp
  This diagnostic warns for paths through the code in which a pointer
  is checked for \f(CW\*(C`NULL\*(C'\fR *after* it has already been
! dereferenced, suggesting that the pointer could have been \s-1NULL.\s0
! Such cases suggest that the check for \s-1NULL\s0 is either redundant,
  or that it needs to be moved to before the pointer is dereferenced.
  .Sp
  This diagnostic also considers values passed to a function argument
! marked with \f(CW\*(C`_\|_attribute_\|_((nonnull))\*(C'\fR as requiring a non-NULL
  value, and thus will complain if such values are checked for \f(CW\*(C`NULL\*(C'\fR
  after returning from such a function call.
  .Sp
  This diagnostic is unlikely to be reported when any level of optimization
! is enabled, as \s-1GCC\s0's optimization logic will typically consider such
! checks for \s-1NULL\s0 as being redundant, and optimize them away before the
! analyzer \*(L"sees\*(R" them.  Hence optimization should be disabled when
  attempting to trigger this diagnostic.
! .IP "\fB\-Wno\-analyzer\-double\-fclose\fR" 4
  .IX Item "-Wno-analyzer-double-fclose"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-double\-fclose\fR to disable it.
--- 10262,10282 ----
  .Sp
  This diagnostic warns for paths through the code in which a pointer
  is checked for \f(CW\*(C`NULL\*(C'\fR *after* it has already been
! dereferenced, suggesting that the pointer could have been NULL.
! Such cases suggest that the check for NULL is either redundant,
  or that it needs to be moved to before the pointer is dereferenced.
  .Sp
  This diagnostic also considers values passed to a function argument
! marked with \f(CW\*(C`_\|_attribute_\|_((nonnull))\*(C'\fR as requiring a non\-NULL
  value, and thus will complain if such values are checked for \f(CW\*(C`NULL\*(C'\fR
  after returning from such a function call.
  .Sp
  This diagnostic is unlikely to be reported when any level of optimization
! is enabled, as GCC\*(Aqs optimization logic will typically consider such
! checks for NULL as being redundant, and optimize them away before the
! analyzer "sees" them.  Hence optimization should be disabled when
  attempting to trigger this diagnostic.
! .IP \fB\-Wno\-analyzer\-double\-fclose\fR 4
  .IX Item "-Wno-analyzer-double-fclose"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-double\-fclose\fR to disable it.
*************** This warning requires \fB\-fanalyzer\fR,
*** 10351,10358 ****
  This diagnostic warns for paths through the code in which a \f(CW\*(C`FILE *\*(C'\fR
  can have \f(CW\*(C`fclose\*(C'\fR called on it more than once.
  .Sp
! See  \s-1CWE\-1341:\s0 Multiple Releases of Same Resource or Handle (\f(CW\*(C`https://cwe.mitre.org/data/definitions/1341.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-double\-free\fR" 4
  .IX Item "-Wno-analyzer-double-free"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-double\-free\fR to disable it.
--- 10284,10291 ----
  This diagnostic warns for paths through the code in which a \f(CW\*(C`FILE *\*(C'\fR
  can have \f(CW\*(C`fclose\*(C'\fR called on it more than once.
  .Sp
! See  CWE\-1341: Multiple Releases of Same Resource or Handle (\f(CW\*(C`https://cwe.mitre.org/data/definitions/1341.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-double\-free\fR 4
  .IX Item "-Wno-analyzer-double-free"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-double\-free\fR to disable it.
*************** This diagnostic warns for paths through
*** 10361,10405 ****
  can have a deallocator called on it more than once, either \f(CW\*(C`free\*(C'\fR,
  or a deallocator referenced by attribute \f(CW\*(C`malloc\*(C'\fR.
  .Sp
! See  \s-1CWE\-415:\s0 Double Free (\f(CW\*(C`https://cwe.mitre.org/data/definitions/415.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-exposure\-through\-output\-file\fR" 4
  .IX Item "-Wno-analyzer-exposure-through-output-file"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-exposure\-through\-output\-file\fR
  to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
! security-sensitive value is written to an output file
  (such as writing a password to a log file).
  .Sp
! See  \s-1CWE\-532:\s0 Information Exposure Through Log Files (\f(CW\*(C`https://cwe.mitre.org/data/definitions/532.html\*(C'\fR).
! .IP "\fB\-Wanalyzer\-exposure\-through\-uninit\-copy\fR" 4
  .IX Item "-Wanalyzer-exposure-through-uninit-copy"
  This warning requires both \fB\-fanalyzer\fR and the use of a plugin
! to specify a function that copies across a \*(L"trust boundary\*(R".  Use
  \&\fB\-Wno\-analyzer\-exposure\-through\-uninit\-copy\fR to disable it.
  .Sp
! This diagnostic warns for \*(L"infoleaks\*(R" \- paths through the code in which
  uninitialized values are copied across a security boundary
! (such as code within an \s-1OS\s0 kernel that copies a partially-initialized
  struct on the stack to user space).
  .Sp
! See  \s-1CWE\-200:\s0 Exposure of Sensitive Information to an Unauthorized Actor (\f(CW\*(C`https://cwe.mitre.org/data/definitions/200.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-fd\-access\-mode\-mismatch\fR" 4
  .IX Item "-Wno-analyzer-fd-access-mode-mismatch"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-access\-mode\-mismatch\fR
  to disable it.
  .Sp
  This diagnostic warns for paths through code in which a
! \&\f(CW\*(C`read\*(C'\fR on a write-only file descriptor is attempted, or vice versa.
  .Sp
  This diagnostic also warns for code paths in a which a function with attribute
  \&\f(CW\*(C`fd_arg_read (N)\*(C'\fR is called with a file descriptor opened with
  \&\f(CW\*(C`O_WRONLY\*(C'\fR at referenced argument \f(CW\*(C`N\*(C'\fR or a function with attribute
  \&\f(CW\*(C`fd_arg_write (N)\*(C'\fR is called with a file descriptor opened with
  \&\f(CW\*(C`O_RDONLY\*(C'\fR at referenced argument \fIN\fR.
! .IP "\fB\-Wno\-analyzer\-fd\-double\-close\fR" 4
  .IX Item "-Wno-analyzer-fd-double-close"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-double\-close\fR
--- 10294,10338 ----
  can have a deallocator called on it more than once, either \f(CW\*(C`free\*(C'\fR,
  or a deallocator referenced by attribute \f(CW\*(C`malloc\*(C'\fR.
  .Sp
! See  CWE\-415: Double Free (\f(CW\*(C`https://cwe.mitre.org/data/definitions/415.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-exposure\-through\-output\-file\fR 4
  .IX Item "-Wno-analyzer-exposure-through-output-file"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-exposure\-through\-output\-file\fR
  to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
! security\-sensitive value is written to an output file
  (such as writing a password to a log file).
  .Sp
! See  CWE\-532: Information Exposure Through Log Files (\f(CW\*(C`https://cwe.mitre.org/data/definitions/532.html\*(C'\fR).
! .IP \fB\-Wanalyzer\-exposure\-through\-uninit\-copy\fR 4
  .IX Item "-Wanalyzer-exposure-through-uninit-copy"
  This warning requires both \fB\-fanalyzer\fR and the use of a plugin
! to specify a function that copies across a "trust boundary".  Use
  \&\fB\-Wno\-analyzer\-exposure\-through\-uninit\-copy\fR to disable it.
  .Sp
! This diagnostic warns for "infoleaks" \- paths through the code in which
  uninitialized values are copied across a security boundary
! (such as code within an OS kernel that copies a partially\-initialized
  struct on the stack to user space).
  .Sp
! See  CWE\-200: Exposure of Sensitive Information to an Unauthorized Actor (\f(CW\*(C`https://cwe.mitre.org/data/definitions/200.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-fd\-access\-mode\-mismatch\fR 4
  .IX Item "-Wno-analyzer-fd-access-mode-mismatch"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-access\-mode\-mismatch\fR
  to disable it.
  .Sp
  This diagnostic warns for paths through code in which a
! \&\f(CW\*(C`read\*(C'\fR on a write\-only file descriptor is attempted, or vice versa.
  .Sp
  This diagnostic also warns for code paths in a which a function with attribute
  \&\f(CW\*(C`fd_arg_read (N)\*(C'\fR is called with a file descriptor opened with
  \&\f(CW\*(C`O_WRONLY\*(C'\fR at referenced argument \f(CW\*(C`N\*(C'\fR or a function with attribute
  \&\f(CW\*(C`fd_arg_write (N)\*(C'\fR is called with a file descriptor opened with
  \&\f(CW\*(C`O_RDONLY\*(C'\fR at referenced argument \fIN\fR.
! .IP \fB\-Wno\-analyzer\-fd\-double\-close\fR 4
  .IX Item "-Wno-analyzer-fd-double-close"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-double\-close\fR
*************** to disable it.
*** 10408,10415 ****
  This diagnostic warns for paths through code in which a
  file descriptor can be closed more than once.
  .Sp
! See  \s-1CWE\-1341:\s0 Multiple Releases of Same Resource or Handle (\f(CW\*(C`https://cwe.mitre.org/data/definitions/1341.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-fd\-leak\fR" 4
  .IX Item "-Wno-analyzer-fd-leak"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-leak\fR
--- 10341,10348 ----
  This diagnostic warns for paths through code in which a
  file descriptor can be closed more than once.
  .Sp
! See  CWE\-1341: Multiple Releases of Same Resource or Handle (\f(CW\*(C`https://cwe.mitre.org/data/definitions/1341.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-fd\-leak\fR 4
  .IX Item "-Wno-analyzer-fd-leak"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-leak\fR
*************** to disable it.
*** 10418,10437 ****
  This diagnostic warns for paths through code in which an
  open file descriptor is leaked.
  .Sp
! See  \s-1CWE\-775:\s0 Missing Release of File Descriptor or Handle after Effective Lifetime (\f(CW\*(C`https://cwe.mitre.org/data/definitions/775.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-fd\-phase\-mismatch\fR" 4
  .IX Item "-Wno-analyzer-fd-phase-mismatch"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-phase\-mismatch\fR
  to disable it.
  .Sp
  This diagnostic warns for paths through code in which an operation is
! attempted in the wrong phase of a file descriptor's lifetime.
  For example, it will warn on attempts to call \f(CW\*(C`accept\*(C'\fR on a stream
  socket that has not yet had \f(CW\*(C`listen\*(C'\fR successfully called on it.
  .Sp
! See  \s-1CWE\-666:\s0 Operation on Resource in Wrong Phase of Lifetime (\f(CW\*(C`https://cwe.mitre.org/data/definitions/666.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-fd\-type\-mismatch\fR" 4
  .IX Item "-Wno-analyzer-fd-type-mismatch"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-type\-mismatch\fR
--- 10351,10370 ----
  This diagnostic warns for paths through code in which an
  open file descriptor is leaked.
  .Sp
! See  CWE\-775: Missing Release of File Descriptor or Handle after Effective Lifetime (\f(CW\*(C`https://cwe.mitre.org/data/definitions/775.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-fd\-phase\-mismatch\fR 4
  .IX Item "-Wno-analyzer-fd-phase-mismatch"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-phase\-mismatch\fR
  to disable it.
  .Sp
  This diagnostic warns for paths through code in which an operation is
! attempted in the wrong phase of a file descriptor\*(Aqs lifetime.
  For example, it will warn on attempts to call \f(CW\*(C`accept\*(C'\fR on a stream
  socket that has not yet had \f(CW\*(C`listen\*(C'\fR successfully called on it.
  .Sp
! See  CWE\-666: Operation on Resource in Wrong Phase of Lifetime (\f(CW\*(C`https://cwe.mitre.org/data/definitions/666.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-fd\-type\-mismatch\fR 4
  .IX Item "-Wno-analyzer-fd-type-mismatch"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-type\-mismatch\fR
*************** operation is attempted on the wrong type
*** 10442,10448 ****
  For example, it will warn on attempts to use socket operations
  on a file descriptor obtained via \f(CW\*(C`open\*(C'\fR, or when attempting
  to use a stream socket operation on a datagram socket.
! .IP "\fB\-Wno\-analyzer\-fd\-use\-after\-close\fR" 4
  .IX Item "-Wno-analyzer-fd-use-after-close"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-use\-after\-close\fR
--- 10375,10381 ----
  For example, it will warn on attempts to use socket operations
  on a file descriptor obtained via \f(CW\*(C`open\*(C'\fR, or when attempting
  to use a stream socket operation on a datagram socket.
! .IP \fB\-Wno\-analyzer\-fd\-use\-after\-close\fR 4
  .IX Item "-Wno-analyzer-fd-use-after-close"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-use\-after\-close\fR
*************** This diagnostic also warns for paths thr
*** 10455,10461 ****
  a function with attribute \f(CW\*(C`fd_arg (N)\*(C'\fR or \f(CW\*(C`fd_arg_read (N)\*(C'\fR
  or \f(CW\*(C`fd_arg_write (N)\*(C'\fR is called with a closed file descriptor at
  referenced argument \f(CW\*(C`N\*(C'\fR.
! .IP "\fB\-Wno\-analyzer\-fd\-use\-without\-check\fR" 4
  .IX Item "-Wno-analyzer-fd-use-without-check"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-use\-without\-check\fR
--- 10388,10394 ----
  a function with attribute \f(CW\*(C`fd_arg (N)\*(C'\fR or \f(CW\*(C`fd_arg_read (N)\*(C'\fR
  or \f(CW\*(C`fd_arg_write (N)\*(C'\fR is called with a closed file descriptor at
  referenced argument \f(CW\*(C`N\*(C'\fR.
! .IP \fB\-Wno\-analyzer\-fd\-use\-without\-check\fR 4
  .IX Item "-Wno-analyzer-fd-use-without-check"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-use\-without\-check\fR
*************** This diagnostic also warns for paths thr
*** 10468,10474 ****
  a function with attribute \f(CW\*(C`fd_arg (N)\*(C'\fR or \f(CW\*(C`fd_arg_read (N)\*(C'\fR
  or \f(CW\*(C`fd_arg_write (N)\*(C'\fR is called with a file descriptor, at referenced
  argument \f(CW\*(C`N\*(C'\fR, without being checked for validity.
! .IP "\fB\-Wno\-analyzer\-file\-leak\fR" 4
  .IX Item "-Wno-analyzer-file-leak"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-file\-leak\fR
--- 10401,10407 ----
  a function with attribute \f(CW\*(C`fd_arg (N)\*(C'\fR or \f(CW\*(C`fd_arg_read (N)\*(C'\fR
  or \f(CW\*(C`fd_arg_write (N)\*(C'\fR is called with a file descriptor, at referenced
  argument \f(CW\*(C`N\*(C'\fR, without being checked for validity.
! .IP \fB\-Wno\-analyzer\-file\-leak\fR 4
  .IX Item "-Wno-analyzer-file-leak"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-file\-leak\fR
*************** to disable it.
*** 10477,10504 ****
  This diagnostic warns for paths through the code in which a
  \&\f(CW\*(C`<stdio.h>\*(C'\fR \f(CW\*(C`FILE *\*(C'\fR stream object is leaked.
  .Sp
! See  \s-1CWE\-775:\s0 Missing Release of File Descriptor or Handle after Effective Lifetime (\f(CW\*(C`https://cwe.mitre.org/data/definitions/775.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-free\-of\-non\-heap\fR" 4
  .IX Item "-Wno-analyzer-free-of-non-heap"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-free\-of\-non\-heap\fR
  to disable it.
  .Sp
  This diagnostic warns for paths through the code in which \f(CW\*(C`free\*(C'\fR
! is called on a non-heap pointer (e.g. an on-stack buffer, or a global).
  .Sp
! See  \s-1CWE\-590:\s0 Free of Memory not on the Heap (\f(CW\*(C`https://cwe.mitre.org/data/definitions/590.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-imprecise\-fp\-arithmetic\fR" 4
  .IX Item "-Wno-analyzer-imprecise-fp-arithmetic"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-imprecise\-fp\-arithmetic\fR
  to disable it.
  .Sp
! This diagnostic warns for paths through the code in which floating-point
  arithmetic is used in locations where precise computation is needed.  This
! diagnostic only warns on use of floating-point operands inside the
  calculation of an allocation size at the moment.
! .IP "\fB\-Wno\-analyzer\-infinite\-loop\fR" 4
  .IX Item "-Wno-analyzer-infinite-loop"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-infinite\-loop\fR to disable it.
--- 10410,10437 ----
  This diagnostic warns for paths through the code in which a
  \&\f(CW\*(C`<stdio.h>\*(C'\fR \f(CW\*(C`FILE *\*(C'\fR stream object is leaked.
  .Sp
! See  CWE\-775: Missing Release of File Descriptor or Handle after Effective Lifetime (\f(CW\*(C`https://cwe.mitre.org/data/definitions/775.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-free\-of\-non\-heap\fR 4
  .IX Item "-Wno-analyzer-free-of-non-heap"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-free\-of\-non\-heap\fR
  to disable it.
  .Sp
  This diagnostic warns for paths through the code in which \f(CW\*(C`free\*(C'\fR
! is called on a non\-heap pointer (e.g. an on\-stack buffer, or a global).
  .Sp
! See  CWE\-590: Free of Memory not on the Heap (\f(CW\*(C`https://cwe.mitre.org/data/definitions/590.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-imprecise\-fp\-arithmetic\fR 4
  .IX Item "-Wno-analyzer-imprecise-fp-arithmetic"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-imprecise\-fp\-arithmetic\fR
  to disable it.
  .Sp
! This diagnostic warns for paths through the code in which floating\-point
  arithmetic is used in locations where precise computation is needed.  This
! diagnostic only warns on use of floating\-point operands inside the
  calculation of an allocation size at the moment.
! .IP \fB\-Wno\-analyzer\-infinite\-loop\fR 4
  .IX Item "-Wno-analyzer-infinite-loop"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-infinite\-loop\fR to disable it.
*************** This warning requires \fB\-fanalyzer\fR,
*** 10506,10519 ****
  This diagnostics warns for paths through the code which appear to
  lead to an infinite loop.
  .Sp
! Specifically, the analyzer will issue this warning when it \*(L"sees\*(R" a loop
  in which:
  .RS 4
! .IP "*" 4
! no externally-visible work could be being done within the loop
! .IP "*" 4
  there is no way to escape from the loop
! .IP "*" 4
  the analyzer is sufficiently confident about the program state
  throughout the loop to know that the above are true
  .RE
--- 10439,10452 ----
  This diagnostics warns for paths through the code which appear to
  lead to an infinite loop.
  .Sp
! Specifically, the analyzer will issue this warning when it "sees" a loop
  in which:
  .RS 4
! .IP * 4
! no externally\-visible work could be being done within the loop
! .IP * 4
  there is no way to escape from the loop
! .IP * 4
  the analyzer is sufficiently confident about the program state
  throughout the loop to know that the above are true
  .RE
*************** For example, consider:
*** 10543,10555 ****
  .Sp
  The analyzer will complain for the above case because if \f(CW\*(C`opcode\*(C'\fR
  ever matches none of the cases, the \f(CW\*(C`switch\*(C'\fR will follow the
! implicit \f(CW\*(C`default\*(C'\fR case, making the body of the loop be a \*(L"no-op\*(R"
  with \f(CW\*(C`cpu_state.pc\*(C'\fR unchanged, and thus using the same value of
  \&\f(CW\*(C`opcode\*(C'\fR on all subseqent iterations, leading to an infinite loop.
  .Sp
! See  \s-1CWE\-835:\s0 Loop with Unreachable Exit Condition ('Infinite Loop') (\f(CW\*(C`https://cwe.mitre.org/data/definitions/835.html\*(C'\fR).
  .RE
! .IP "\fB\-Wno\-analyzer\-infinite\-recursion\fR" 4
  .IX Item "-Wno-analyzer-infinite-recursion"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-infinite\-recursion\fR to disable it.
--- 10476,10488 ----
  .Sp
  The analyzer will complain for the above case because if \f(CW\*(C`opcode\*(C'\fR
  ever matches none of the cases, the \f(CW\*(C`switch\*(C'\fR will follow the
! implicit \f(CW\*(C`default\*(C'\fR case, making the body of the loop be a "no\-op"
  with \f(CW\*(C`cpu_state.pc\*(C'\fR unchanged, and thus using the same value of
  \&\f(CW\*(C`opcode\*(C'\fR on all subseqent iterations, leading to an infinite loop.
  .Sp
! See  CWE\-835: Loop with Unreachable Exit Condition (\*(AqInfinite Loop\*(Aq) (\f(CW\*(C`https://cwe.mitre.org/data/definitions/835.html\*(C'\fR).
  .RE
! .IP \fB\-Wno\-analyzer\-infinite\-recursion\fR 4
  .IX Item "-Wno-analyzer-infinite-recursion"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-infinite\-recursion\fR to disable it.
*************** This warning requires \fB\-fanalyzer\fR,
*** 10557,10563 ****
  This diagnostics warns for paths through the code which appear to
  lead to infinite recursion.
  .Sp
! Specifically, when the analyzer \*(L"sees\*(R" a recursive call, it will compare
  the state of memory at the entry to the new frame with that at the entry
  to the previous frame of that function on the stack.  The warning is
  issued if nothing in memory appears to be changing; any changes observed
--- 10490,10496 ----
  This diagnostics warns for paths through the code which appear to
  lead to infinite recursion.
  .Sp
! Specifically, when the analyzer "sees" a recursive call, it will compare
  the state of memory at the entry to the new frame with that at the entry
  to the previous frame of that function on the stack.  The warning is
  issued if nothing in memory appears to be changing; any changes observed
*************** to parameters or globals are assumed to
*** 10565,10579 ****
  recursion and thus suppress the warning.
  .Sp
  This diagnostic is likely to miss cases of infinite recursion that
! are convered to iteration by the optimizer before the analyzer \*(L"sees\*(R"
  them.  Hence optimization should be disabled when attempting to trigger
  this diagnostic.
  .Sp
  Compare with \fB\-Winfinite\-recursion\fR, which provides a similar
  diagnostic, but is implemented in a different way.
  .Sp
! See  \s-1CWE\-674:\s0 Uncontrolled Recursion (\f(CW\*(C`https://cwe.mitre.org/data/definitions/674.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-jump\-through\-null\fR" 4
  .IX Item "-Wno-analyzer-jump-through-null"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-jump\-through\-null\fR
--- 10498,10512 ----
  recursion and thus suppress the warning.
  .Sp
  This diagnostic is likely to miss cases of infinite recursion that
! are convered to iteration by the optimizer before the analyzer "sees"
  them.  Hence optimization should be disabled when attempting to trigger
  this diagnostic.
  .Sp
  Compare with \fB\-Winfinite\-recursion\fR, which provides a similar
  diagnostic, but is implemented in a different way.
  .Sp
! See  CWE\-674: Uncontrolled Recursion (\f(CW\*(C`https://cwe.mitre.org/data/definitions/674.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-jump\-through\-null\fR 4
  .IX Item "-Wno-analyzer-jump-through-null"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-jump\-through\-null\fR
*************** to disable it.
*** 10581,10587 ****
  .Sp
  This diagnostic warns for paths through the code in which a \f(CW\*(C`NULL\*(C'\fR
  function pointer is called.
! .IP "\fB\-Wno\-analyzer\-malloc\-leak\fR" 4
  .IX Item "-Wno-analyzer-malloc-leak"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-malloc\-leak\fR
--- 10514,10520 ----
  .Sp
  This diagnostic warns for paths through the code in which a \f(CW\*(C`NULL\*(C'\fR
  function pointer is called.
! .IP \fB\-Wno\-analyzer\-malloc\-leak\fR 4
  .IX Item "-Wno-analyzer-malloc-leak"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-malloc\-leak\fR
*************** This diagnostic warns for paths through
*** 10591,10598 ****
  pointer allocated via an allocator is leaked: either \f(CW\*(C`malloc\*(C'\fR,
  or a function marked with attribute \f(CW\*(C`malloc\*(C'\fR.
  .Sp
! See  \s-1CWE\-401:\s0 Missing Release of Memory after Effective Lifetime (\f(CW\*(C`https://cwe.mitre.org/data/definitions/401.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-mismatching\-deallocation\fR" 4
  .IX Item "-Wno-analyzer-mismatching-deallocation"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-mismatching\-deallocation\fR
--- 10524,10531 ----
  pointer allocated via an allocator is leaked: either \f(CW\*(C`malloc\*(C'\fR,
  or a function marked with attribute \f(CW\*(C`malloc\*(C'\fR.
  .Sp
! See  CWE\-401: Missing Release of Memory after Effective Lifetime (\f(CW\*(C`https://cwe.mitre.org/data/definitions/401.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-mismatching\-deallocation\fR 4
  .IX Item "-Wno-analyzer-mismatching-deallocation"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-mismatching\-deallocation\fR
*************** will warn about mismatches between \f(CW
*** 10605,10624 ****
  and vector \f(CW\*(C`delete[]\*(C'\fR, and those marked as allocator/deallocator
  pairs using attribute \f(CW\*(C`malloc\*(C'\fR.
  .Sp
! See  \s-1CWE\-762:\s0 Mismatched Memory Management Routines (\f(CW\*(C`https://cwe.mitre.org/data/definitions/762.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-out\-of\-bounds\fR" 4
  .IX Item "-Wno-analyzer-out-of-bounds"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-out\-of\-bounds\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a buffer is
! definitely read or written out-of-bounds.  The diagnostic applies for
  cases where the analyzer is able to determine a constant offset and for
  accesses past the end of a buffer, also a constant capacity.  Further,
  the diagnostic does limited checking for accesses past the end when the
  offset as well as the capacity is symbolic.
  .Sp
! See  \s-1CWE\-119:\s0 Improper Restriction of Operations within the Bounds of a Memory Buffer (\f(CW\*(C`https://cwe.mitre.org/data/definitions/119.html\*(C'\fR).
  .Sp
  For cases where the analyzer is able, it will emit a text art diagram
  visualizing the spatial relationship between the memory region that the
--- 10538,10557 ----
  and vector \f(CW\*(C`delete[]\*(C'\fR, and those marked as allocator/deallocator
  pairs using attribute \f(CW\*(C`malloc\*(C'\fR.
  .Sp
! See  CWE\-762: Mismatched Memory Management Routines (\f(CW\*(C`https://cwe.mitre.org/data/definitions/762.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-out\-of\-bounds\fR 4
  .IX Item "-Wno-analyzer-out-of-bounds"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-out\-of\-bounds\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a buffer is
! definitely read or written out\-of\-bounds.  The diagnostic applies for
  cases where the analyzer is able to determine a constant offset and for
  accesses past the end of a buffer, also a constant capacity.  Further,
  the diagnostic does limited checking for accesses past the end when the
  offset as well as the capacity is symbolic.
  .Sp
! See  CWE\-119: Improper Restriction of Operations within the Bounds of a Memory Buffer (\f(CW\*(C`https://cwe.mitre.org/data/definitions/119.html\*(C'\fR).
  .Sp
  For cases where the analyzer is able, it will emit a text art diagram
  visualizing the spatial relationship between the memory region that the
*************** apart; which one is before or after in m
*** 10628,10711 ****
  involved, the direction of the access (read vs write), and, in some
  cases, the values of data involved.  This diagram can be suppressed
  using \fB\-fdiagnostics\-text\-art\-charset=none\fR.
! .IP "\fB\-Wno\-analyzer\-overlapping\-buffers\fR" 4
  .IX Item "-Wno-analyzer-overlapping-buffers"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-overlapping\-buffers\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which overlapping
! buffers are passed to an \s-1API\s0 for which the behavior on such buffers
  is undefined.
  .Sp
  Specifically, the diagnostic occurs on calls to the following functions
  .RS 4
  .ie n .IP "*<""memcpy"">" 4
! .el .IP "*<\f(CWmemcpy\fR>" 4
  .IX Item "*<memcpy>"
  .PD 0
  .ie n .IP "*<""strcat"">" 4
! .el .IP "*<\f(CWstrcat\fR>" 4
  .IX Item "*<strcat>"
  .ie n .IP "*<""strcpy"">" 4
! .el .IP "*<\f(CWstrcpy\fR>" 4
  .IX Item "*<strcpy>"
  .RE
  .RS 4
- .PD
  .Sp
  for cases where the buffers are known to overlap.
  .RE
! .IP "\fB\-Wno\-analyzer\-possible\-null\-argument\fR" 4
  .IX Item "-Wno-analyzer-possible-null-argument"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-possible\-null\-argument\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
! possibly-NULL value is passed to a function argument marked
! with \f(CW\*(C`_\|_attribute_\|_((nonnull))\*(C'\fR as requiring a non-NULL
  value.
  .Sp
! See  \s-1CWE\-690:\s0 Unchecked Return Value to \s-1NULL\s0 Pointer Dereference (\f(CW\*(C`https://cwe.mitre.org/data/definitions/690.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-possible\-null\-dereference\fR" 4
  .IX Item "-Wno-analyzer-possible-null-dereference"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-possible\-null\-dereference\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
! possibly-NULL value is dereferenced.
  .Sp
! See  \s-1CWE\-690:\s0 Unchecked Return Value to \s-1NULL\s0 Pointer Dereference (\f(CW\*(C`https://cwe.mitre.org/data/definitions/690.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-null\-argument\fR" 4
  .IX Item "-Wno-analyzer-null-argument"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-null\-argument\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
! value known to be \s-1NULL\s0 is passed to a function argument marked
! with \f(CW\*(C`_\|_attribute_\|_((nonnull))\*(C'\fR as requiring a non-NULL
  value.
  .Sp
! See  \s-1CWE\-476: NULL\s0 Pointer Dereference (\f(CW\*(C`https://cwe.mitre.org/data/definitions/476.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-null\-dereference\fR" 4
  .IX Item "-Wno-analyzer-null-dereference"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-null\-dereference\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
! value known to be \s-1NULL\s0 is dereferenced.
  .Sp
! See  \s-1CWE\-476: NULL\s0 Pointer Dereference (\f(CW\*(C`https://cwe.mitre.org/data/definitions/476.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-putenv\-of\-auto\-var\fR" 4
  .IX Item "-Wno-analyzer-putenv-of-auto-var"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-putenv\-of\-auto\-var\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
  call to \f(CW\*(C`putenv\*(C'\fR is passed a pointer to an automatic variable
! or an on-stack buffer.
  .Sp
! See  \s-1POS34\-C.\s0 Do not call \fIputenv()\fR with a pointer to an automatic variable as the argument (\f(CW\*(C`https://wiki.sei.cmu.edu/confluence/x/6NYxBQ\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-shift\-count\-negative\fR" 4
  .IX Item "-Wno-analyzer-shift-count-negative"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-shift\-count\-negative\fR to disable it.
--- 10561,10644 ----
  involved, the direction of the access (read vs write), and, in some
  cases, the values of data involved.  This diagram can be suppressed
  using \fB\-fdiagnostics\-text\-art\-charset=none\fR.
! .IP \fB\-Wno\-analyzer\-overlapping\-buffers\fR 4
  .IX Item "-Wno-analyzer-overlapping-buffers"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-overlapping\-buffers\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which overlapping
! buffers are passed to an API for which the behavior on such buffers
  is undefined.
  .Sp
  Specifically, the diagnostic occurs on calls to the following functions
  .RS 4
  .ie n .IP "*<""memcpy"">" 4
! .el .IP *<\f(CWmemcpy\fR> 4
  .IX Item "*<memcpy>"
  .PD 0
  .ie n .IP "*<""strcat"">" 4
! .el .IP *<\f(CWstrcat\fR> 4
  .IX Item "*<strcat>"
  .ie n .IP "*<""strcpy"">" 4
! .el .IP *<\f(CWstrcpy\fR> 4
  .IX Item "*<strcpy>"
+ .PD
  .RE
  .RS 4
  .Sp
  for cases where the buffers are known to overlap.
  .RE
! .IP \fB\-Wno\-analyzer\-possible\-null\-argument\fR 4
  .IX Item "-Wno-analyzer-possible-null-argument"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-possible\-null\-argument\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
! possibly\-NULL value is passed to a function argument marked
! with \f(CW\*(C`_\|_attribute_\|_((nonnull))\*(C'\fR as requiring a non\-NULL
  value.
  .Sp
! See  CWE\-690: Unchecked Return Value to NULL Pointer Dereference (\f(CW\*(C`https://cwe.mitre.org/data/definitions/690.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-possible\-null\-dereference\fR 4
  .IX Item "-Wno-analyzer-possible-null-dereference"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-possible\-null\-dereference\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
! possibly\-NULL value is dereferenced.
  .Sp
! See  CWE\-690: Unchecked Return Value to NULL Pointer Dereference (\f(CW\*(C`https://cwe.mitre.org/data/definitions/690.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-null\-argument\fR 4
  .IX Item "-Wno-analyzer-null-argument"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-null\-argument\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
! value known to be NULL is passed to a function argument marked
! with \f(CW\*(C`_\|_attribute_\|_((nonnull))\*(C'\fR as requiring a non\-NULL
  value.
  .Sp
! See  CWE\-476: NULL Pointer Dereference (\f(CW\*(C`https://cwe.mitre.org/data/definitions/476.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-null\-dereference\fR 4
  .IX Item "-Wno-analyzer-null-dereference"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-null\-dereference\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
! value known to be NULL is dereferenced.
  .Sp
! See  CWE\-476: NULL Pointer Dereference (\f(CW\*(C`https://cwe.mitre.org/data/definitions/476.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-putenv\-of\-auto\-var\fR 4
  .IX Item "-Wno-analyzer-putenv-of-auto-var"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-putenv\-of\-auto\-var\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
  call to \f(CW\*(C`putenv\*(C'\fR is passed a pointer to an automatic variable
! or an on\-stack buffer.
  .Sp
! See  POS34\-C. Do not call \fBputenv()\fR with a pointer to an automatic variable as the argument (\f(CW\*(C`https://wiki.sei.cmu.edu/confluence/x/6NYxBQ\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-shift\-count\-negative\fR 4
  .IX Item "-Wno-analyzer-shift-count-negative"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-shift\-count\-negative\fR to disable it.
*************** This warning requires \fB\-fanalyzer\fR,
*** 10713,10736 ****
  This diagnostic warns for paths through the code in which a
  shift is attempted with a negative count.  It is analogous to
  the \fB\-Wshift\-count\-negative\fR diagnostic implemented in
! the C/\*(C+ front ends, but is implemented based on analyzing
  interprocedural paths, rather than merely parsing the syntax tree.
  However, the analyzer does not prioritize detection of such paths, so
  false negatives are more likely relative to other warnings.
! .IP "\fB\-Wno\-analyzer\-shift\-count\-overflow\fR" 4
  .IX Item "-Wno-analyzer-shift-count-overflow"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-shift\-count\-overflow\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
  shift is attempted with a count greater than or equal to the
! precision of the operand's type.  It is analogous to
  the \fB\-Wshift\-count\-overflow\fR diagnostic implemented in
! the C/\*(C+ front ends, but is implemented based on analyzing
  interprocedural paths, rather than merely parsing the syntax tree.
  However, the analyzer does not prioritize detection of such paths, so
  false negatives are more likely relative to other warnings.
! .IP "\fB\-Wno\-analyzer\-stale\-setjmp\-buffer\fR" 4
  .IX Item "-Wno-analyzer-stale-setjmp-buffer"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-stale\-setjmp\-buffer\fR to disable it.
--- 10646,10669 ----
  This diagnostic warns for paths through the code in which a
  shift is attempted with a negative count.  It is analogous to
  the \fB\-Wshift\-count\-negative\fR diagnostic implemented in
! the C/C++ front ends, but is implemented based on analyzing
  interprocedural paths, rather than merely parsing the syntax tree.
  However, the analyzer does not prioritize detection of such paths, so
  false negatives are more likely relative to other warnings.
! .IP \fB\-Wno\-analyzer\-shift\-count\-overflow\fR 4
  .IX Item "-Wno-analyzer-shift-count-overflow"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-shift\-count\-overflow\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
  shift is attempted with a count greater than or equal to the
! precision of the operand\*(Aqs type.  It is analogous to
  the \fB\-Wshift\-count\-overflow\fR diagnostic implemented in
! the C/C++ front ends, but is implemented based on analyzing
  interprocedural paths, rather than merely parsing the syntax tree.
  However, the analyzer does not prioritize detection of such paths, so
  false negatives are more likely relative to other warnings.
! .IP \fB\-Wno\-analyzer\-stale\-setjmp\-buffer\fR 4
  .IX Item "-Wno-analyzer-stale-setjmp-buffer"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-stale\-setjmp\-buffer\fR to disable it.
*************** location, it records the stack frame.  T
*** 10744,10768 ****
  when the function containing the \f(CW\*(C`setjmp\*(C'\fR call returns.  Attempting
  to rewind to it via \f(CW\*(C`longjmp\*(C'\fR would reference a stack frame that
  no longer exists, and likely lead to a crash (or worse).
! .IP "\fB\-Wno\-analyzer\-tainted\-allocation\-size\fR" 4
  .IX Item "-Wno-analyzer-tainted-allocation-size"
  This warning requires \fB\-fanalyzer\fR which enables it;
  use \fB\-Wno\-analyzer\-tainted\-allocation\-size\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a value
! that could be under an attacker's control is used as the size
  of an allocation without being sanitized, so that an attacker could
  inject an excessively large allocation and potentially cause a denial
  of service attack.
  .Sp
! See  \s-1CWE\-789:\s0 Memory Allocation with Excessive Size Value (\f(CW\*(C`https://cwe.mitre.org/data/definitions/789.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-tainted\-assertion\fR" 4
  .IX Item "-Wno-analyzer-tainted-assertion"
  This warning requires \fB\-fanalyzer\fR which enables it;
  use \fB\-Wno\-analyzer\-tainted\-assertion\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a value
! that could be under an attacker's control is used as part of a
  condition without being first sanitized, and that condition guards a
  call to a function marked with attribute \f(CW\*(C`noreturn\*(C'\fR
  (such as the function \f(CW\*(C`_\|_builtin_unreachable\*(C'\fR).  Such functions
--- 10677,10701 ----
  when the function containing the \f(CW\*(C`setjmp\*(C'\fR call returns.  Attempting
  to rewind to it via \f(CW\*(C`longjmp\*(C'\fR would reference a stack frame that
  no longer exists, and likely lead to a crash (or worse).
! .IP \fB\-Wno\-analyzer\-tainted\-allocation\-size\fR 4
  .IX Item "-Wno-analyzer-tainted-allocation-size"
  This warning requires \fB\-fanalyzer\fR which enables it;
  use \fB\-Wno\-analyzer\-tainted\-allocation\-size\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a value
! that could be under an attacker\*(Aqs control is used as the size
  of an allocation without being sanitized, so that an attacker could
  inject an excessively large allocation and potentially cause a denial
  of service attack.
  .Sp
! See  CWE\-789: Memory Allocation with Excessive Size Value (\f(CW\*(C`https://cwe.mitre.org/data/definitions/789.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-tainted\-assertion\fR 4
  .IX Item "-Wno-analyzer-tainted-assertion"
  This warning requires \fB\-fanalyzer\fR which enables it;
  use \fB\-Wno\-analyzer\-tainted\-assertion\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a value
! that could be under an attacker\*(Aqs control is used as part of a
  condition without being first sanitized, and that condition guards a
  call to a function marked with attribute \f(CW\*(C`noreturn\*(C'\fR
  (such as the function \f(CW\*(C`_\|_builtin_unreachable\*(C'\fR).  Such functions
*************** assertion failure handlers.  For example
*** 10775,10803 ****
  .Sp
  In such cases:
  .RS 4
! .IP "*" 4
! when assertion-checking is enabled: an attacker could trigger
  a denial of service by injecting an assertion failure
! .IP "*" 4
! when assertion-checking is disabled, such as by defining \f(CW\*(C`NDEBUG\*(C'\fR,
  an attacker could inject data that subverts the process, since it
  presumably violates a precondition that is being assumed by the code.
  .RE
  .RS 4
  .Sp
! Note that when assertion-checking is disabled, the assertions are
  typically removed by the preprocessor before the analyzer has a chance
! to \*(L"see\*(R" them, so this diagnostic can only generate warnings on builds
! in which assertion-checking is enabled.
  .Sp
  For the purpose of this warning, any function marked with attribute
  \&\f(CW\*(C`noreturn\*(C'\fR is considered as a possible assertion failure
  handler, including \f(CW\*(C`_\|_builtin_unreachable\*(C'\fR.  Note that these functions
! are sometimes removed by the optimizer before the analyzer \*(L"sees\*(R" them.
  Hence optimization should be disabled when attempting to trigger this
  diagnostic.
  .Sp
! See  \s-1CWE\-617:\s0 Reachable Assertion (\f(CW\*(C`https://cwe.mitre.org/data/definitions/617.html\*(C'\fR).
  .Sp
  The warning can also report problematic constructions such as
  .Sp
--- 10708,10736 ----
  .Sp
  In such cases:
  .RS 4
! .IP * 4
! when assertion\-checking is enabled: an attacker could trigger
  a denial of service by injecting an assertion failure
! .IP * 4
! when assertion\-checking is disabled, such as by defining \f(CW\*(C`NDEBUG\*(C'\fR,
  an attacker could inject data that subverts the process, since it
  presumably violates a precondition that is being assumed by the code.
  .RE
  .RS 4
  .Sp
! Note that when assertion\-checking is disabled, the assertions are
  typically removed by the preprocessor before the analyzer has a chance
! to "see" them, so this diagnostic can only generate warnings on builds
! in which assertion\-checking is enabled.
  .Sp
  For the purpose of this warning, any function marked with attribute
  \&\f(CW\*(C`noreturn\*(C'\fR is considered as a possible assertion failure
  handler, including \f(CW\*(C`_\|_builtin_unreachable\*(C'\fR.  Note that these functions
! are sometimes removed by the optimizer before the analyzer "sees" them.
  Hence optimization should be disabled when attempting to trigger this
  diagnostic.
  .Sp
! See  CWE\-617: Reachable Assertion (\f(CW\*(C`https://cwe.mitre.org/data/definitions/617.html\*(C'\fR).
  .Sp
  The warning can also report problematic constructions such as
  .Sp
*************** The warning can also report problematic
*** 10814,10864 ****
  .Sp
  despite the above not being an assertion failure, strictly speaking.
  .RE
! .IP "\fB\-Wno\-analyzer\-tainted\-array\-index\fR" 4
  .IX Item "-Wno-analyzer-tainted-array-index"
  This warning requires \fB\-fanalyzer\fR which enables it;
  use \fB\-Wno\-analyzer\-tainted\-array\-index\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a value
! that could be under an attacker's control is used as the index
  of an array access without being sanitized, so that an attacker
! could inject an out-of-bounds access.
  .Sp
! See  \s-1CWE\-129:\s0 Improper Validation of Array Index (\f(CW\*(C`https://cwe.mitre.org/data/definitions/129.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-tainted\-divisor\fR" 4
  .IX Item "-Wno-analyzer-tainted-divisor"
  This warning requires \fB\-fanalyzer\fR which enables it;
  use \fB\-Wno\-analyzer\-tainted\-divisor\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a value
! that could be under an attacker's control is used as the divisor
  in a division or modulus operation without being sanitized, so that
! an attacker could inject a division-by-zero.
  .Sp
! See  \s-1CWE\-369:\s0 Divide By Zero (\f(CW\*(C`https://cwe.mitre.org/data/definitions/369.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-tainted\-offset\fR" 4
  .IX Item "-Wno-analyzer-tainted-offset"
  This warning requires \fB\-fanalyzer\fR which enables it;
  use \fB\-Wno\-analyzer\-tainted\-offset\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a value
! that could be under an attacker's control is used as a pointer offset
! without being sanitized, so that an attacker could inject an out-of-bounds
  access.
  .Sp
! See  \s-1CWE\-823:\s0 Use of Out-of-range Pointer Offset (\f(CW\*(C`https://cwe.mitre.org/data/definitions/823.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-tainted\-size\fR" 4
  .IX Item "-Wno-analyzer-tainted-size"
  This warning requires \fB\-fanalyzer\fR which enables it;
  use \fB\-Wno\-analyzer\-tainted\-size\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a value
! that could be under an attacker's control is used as the size of
  an operation such as \f(CW\*(C`memset\*(C'\fR without being sanitized, so that an
! attacker could inject an out-of-bounds access.
  .Sp
! See  \s-1CWE\-129:\s0 Improper Validation of Array Index (\f(CW\*(C`https://cwe.mitre.org/data/definitions/129.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-undefined\-behavior\-ptrdiff\fR" 4
  .IX Item "-Wno-analyzer-undefined-behavior-ptrdiff"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-undefined\-behavior\-ptrdiff\fR to disable it.
--- 10747,10797 ----
  .Sp
  despite the above not being an assertion failure, strictly speaking.
  .RE
! .IP \fB\-Wno\-analyzer\-tainted\-array\-index\fR 4
  .IX Item "-Wno-analyzer-tainted-array-index"
  This warning requires \fB\-fanalyzer\fR which enables it;
  use \fB\-Wno\-analyzer\-tainted\-array\-index\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a value
! that could be under an attacker\*(Aqs control is used as the index
  of an array access without being sanitized, so that an attacker
! could inject an out\-of\-bounds access.
  .Sp
! See  CWE\-129: Improper Validation of Array Index (\f(CW\*(C`https://cwe.mitre.org/data/definitions/129.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-tainted\-divisor\fR 4
  .IX Item "-Wno-analyzer-tainted-divisor"
  This warning requires \fB\-fanalyzer\fR which enables it;
  use \fB\-Wno\-analyzer\-tainted\-divisor\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a value
! that could be under an attacker\*(Aqs control is used as the divisor
  in a division or modulus operation without being sanitized, so that
! an attacker could inject a division\-by\-zero.
  .Sp
! See  CWE\-369: Divide By Zero (\f(CW\*(C`https://cwe.mitre.org/data/definitions/369.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-tainted\-offset\fR 4
  .IX Item "-Wno-analyzer-tainted-offset"
  This warning requires \fB\-fanalyzer\fR which enables it;
  use \fB\-Wno\-analyzer\-tainted\-offset\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a value
! that could be under an attacker\*(Aqs control is used as a pointer offset
! without being sanitized, so that an attacker could inject an out\-of\-bounds
  access.
  .Sp
! See  CWE\-823: Use of Out\-of\-range Pointer Offset (\f(CW\*(C`https://cwe.mitre.org/data/definitions/823.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-tainted\-size\fR 4
  .IX Item "-Wno-analyzer-tainted-size"
  This warning requires \fB\-fanalyzer\fR which enables it;
  use \fB\-Wno\-analyzer\-tainted\-size\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a value
! that could be under an attacker\*(Aqs control is used as the size of
  an operation such as \f(CW\*(C`memset\*(C'\fR without being sanitized, so that an
! attacker could inject an out\-of\-bounds access.
  .Sp
! See  CWE\-129: Improper Validation of Array Index (\f(CW\*(C`https://cwe.mitre.org/data/definitions/129.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-undefined\-behavior\-ptrdiff\fR 4
  .IX Item "-Wno-analyzer-undefined-behavior-ptrdiff"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-undefined\-behavior\-ptrdiff\fR to disable it.
*************** memory.  Such code relies on undefined b
*** 10869,10876 ****
  is only defined for cases where both pointers point to within (or just
  after) the same array.
  .Sp
! See  \s-1CWE\-469:\s0 Use of Pointer Subtraction to Determine Size (\f(CW\*(C`https://cwe.mitre.org/data/definitions/469.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-undefined\-behavior\-strtok\fR" 4
  .IX Item "-Wno-analyzer-undefined-behavior-strtok"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-undefined\-behavior\-strtok\fR to disable it.
--- 10802,10809 ----
  is only defined for cases where both pointers point to within (or just
  after) the same array.
  .Sp
! See  CWE\-469: Use of Pointer Subtraction to Determine Size (\f(CW\*(C`https://cwe.mitre.org/data/definitions/469.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-undefined\-behavior\-strtok\fR 4
  .IX Item "-Wno-analyzer-undefined-behavior-strtok"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-undefined\-behavior\-strtok\fR to disable it.
*************** This warning requires \fB\-fanalyzer\fR,
*** 10878,10896 ****
  This diagnostic warns for paths through the code in which a
  call is made to \f(CW\*(C`strtok\*(C'\fR with undefined behavior.
  .Sp
! Specifically, passing \s-1NULL\s0 as the first parameter for the initial
  call to \f(CW\*(C`strtok\*(C'\fR within a process has undefined behavior.
! .IP "\fB\-Wno\-analyzer\-unsafe\-call\-within\-signal\-handler\fR" 4
  .IX Item "-Wno-analyzer-unsafe-call-within-signal-handler"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-unsafe\-call\-within\-signal\-handler\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
! function known to be async-signal-unsafe (such as \f(CW\*(C`fprintf\*(C'\fR) is
  called from a signal handler.
  .Sp
! See  \s-1CWE\-479:\s0 Signal Handler Use of a Non-reentrant Function (\f(CW\*(C`https://cwe.mitre.org/data/definitions/479.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-use\-after\-free\fR" 4
  .IX Item "-Wno-analyzer-use-after-free"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-use\-after\-free\fR to disable it.
--- 10811,10829 ----
  This diagnostic warns for paths through the code in which a
  call is made to \f(CW\*(C`strtok\*(C'\fR with undefined behavior.
  .Sp
! Specifically, passing NULL as the first parameter for the initial
  call to \f(CW\*(C`strtok\*(C'\fR within a process has undefined behavior.
! .IP \fB\-Wno\-analyzer\-unsafe\-call\-within\-signal\-handler\fR 4
  .IX Item "-Wno-analyzer-unsafe-call-within-signal-handler"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-unsafe\-call\-within\-signal\-handler\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
! function known to be async\-signal\-unsafe (such as \f(CW\*(C`fprintf\*(C'\fR) is
  called from a signal handler.
  .Sp
! See  CWE\-479: Signal Handler Use of a Non\-reentrant Function (\f(CW\*(C`https://cwe.mitre.org/data/definitions/479.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-use\-after\-free\fR 4
  .IX Item "-Wno-analyzer-use-after-free"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-use\-after\-free\fR to disable it.
*************** This diagnostic warns for paths through
*** 10899,10906 ****
  pointer is used after a deallocator is called on it: either \f(CW\*(C`free\*(C'\fR,
  or a deallocator referenced by attribute \f(CW\*(C`malloc\*(C'\fR.
  .Sp
! See  \s-1CWE\-416:\s0 Use After Free (\f(CW\*(C`https://cwe.mitre.org/data/definitions/416.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-use\-of\-pointer\-in\-stale\-stack\-frame\fR" 4
  .IX Item "-Wno-analyzer-use-of-pointer-in-stale-stack-frame"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-use\-of\-pointer\-in\-stale\-stack\-frame\fR
--- 10832,10839 ----
  pointer is used after a deallocator is called on it: either \f(CW\*(C`free\*(C'\fR,
  or a deallocator referenced by attribute \f(CW\*(C`malloc\*(C'\fR.
  .Sp
! See  CWE\-416: Use After Free (\f(CW\*(C`https://cwe.mitre.org/data/definitions/416.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-use\-of\-pointer\-in\-stale\-stack\-frame\fR 4
  .IX Item "-Wno-analyzer-use-of-pointer-in-stale-stack-frame"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-use\-of\-pointer\-in\-stale\-stack\-frame\fR
*************** to disable it.
*** 10908,10914 ****
  .Sp
  This diagnostic warns for paths through the code in which a pointer
  is dereferenced that points to a variable in a stale stack frame.
! .IP "\fB\-Wno\-analyzer\-va\-arg\-type\-mismatch\fR" 4
  .IX Item "-Wno-analyzer-va-arg-type-mismatch"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-va\-arg\-type\-mismatch\fR
--- 10841,10847 ----
  .Sp
  This diagnostic warns for paths through the code in which a pointer
  is dereferenced that points to a variable in a stale stack frame.
! .IP \fB\-Wno\-analyzer\-va\-arg\-type\-mismatch\fR 4
  .IX Item "-Wno-analyzer-va-arg-type-mismatch"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-va\-arg\-type\-mismatch\fR
*************** the analyzer detects an attempt to use \
*** 10919,10926 ****
  passed to a variadic call, but uses a type that does not match that of
  the expression passed to the call.
  .Sp
! See  \s-1CWE\-686:\s0 Function Call With Incorrect Argument Type (\f(CW\*(C`https://cwe.mitre.org/data/definitions/686.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-va\-list\-exhausted\fR" 4
  .IX Item "-Wno-analyzer-va-list-exhausted"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-va\-list\-exhausted\fR
--- 10852,10859 ----
  passed to a variadic call, but uses a type that does not match that of
  the expression passed to the call.
  .Sp
! See  CWE\-686: Function Call With Incorrect Argument Type (\f(CW\*(C`https://cwe.mitre.org/data/definitions/686.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-va\-list\-exhausted\fR 4
  .IX Item "-Wno-analyzer-va-list-exhausted"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-va\-list\-exhausted\fR
*************** the analyzer detects an attempt to use \
*** 10931,10938 ****
  value passed to a variadic call, but all of the values in the
  \&\f(CW\*(C`va_list\*(C'\fR have already been consumed.
  .Sp
! See  \s-1CWE\-685:\s0 Function Call With Incorrect Number of Arguments (\f(CW\*(C`https://cwe.mitre.org/data/definitions/685.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-va\-list\-leak\fR" 4
  .IX Item "-Wno-analyzer-va-list-leak"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-va\-list\-leak\fR
--- 10864,10871 ----
  value passed to a variadic call, but all of the values in the
  \&\f(CW\*(C`va_list\*(C'\fR have already been consumed.
  .Sp
! See  CWE\-685: Function Call With Incorrect Number of Arguments (\f(CW\*(C`https://cwe.mitre.org/data/definitions/685.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-va\-list\-leak\fR 4
  .IX Item "-Wno-analyzer-va-list-leak"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-va\-list\-leak\fR
*************** to disable it.
*** 10941,10947 ****
  This diagnostic warns for interprocedural paths through the code for which
  the analyzer detects that \f(CW\*(C`va_start\*(C'\fR or \f(CW\*(C`va_copy\*(C'\fR has been called
  on a \f(CW\*(C`va_list\*(C'\fR without a corresponding call to \f(CW\*(C`va_end\*(C'\fR.
! .IP "\fB\-Wno\-analyzer\-va\-list\-use\-after\-va\-end\fR" 4
  .IX Item "-Wno-analyzer-va-list-use-after-va-end"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-va\-list\-use\-after\-va\-end\fR
--- 10874,10880 ----
  This diagnostic warns for interprocedural paths through the code for which
  the analyzer detects that \f(CW\*(C`va_start\*(C'\fR or \f(CW\*(C`va_copy\*(C'\fR has been called
  on a \f(CW\*(C`va_list\*(C'\fR without a corresponding call to \f(CW\*(C`va_end\*(C'\fR.
! .IP \fB\-Wno\-analyzer\-va\-list\-use\-after\-va\-end\fR 4
  .IX Item "-Wno-analyzer-va-list-use-after-va-end"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-va\-list\-use\-after\-va\-end\fR
*************** This diagnostic warns for interprocedura
*** 10951,10957 ****
  the analyzer detects an attempt to use a \f(CW\*(C`va_list\*(C'\fR  after
  \&\f(CW\*(C`va_end\*(C'\fR has been called on it.
  \&\f(CW\*(C`va_list\*(C'\fR.
! .IP "\fB\-Wno\-analyzer\-write\-to\-const\fR" 4
  .IX Item "-Wno-analyzer-write-to-const"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-write\-to\-const\fR
--- 10884,10890 ----
  the analyzer detects an attempt to use a \f(CW\*(C`va_list\*(C'\fR  after
  \&\f(CW\*(C`va_end\*(C'\fR has been called on it.
  \&\f(CW\*(C`va_list\*(C'\fR.
! .IP \fB\-Wno\-analyzer\-write\-to\-const\fR 4
  .IX Item "-Wno-analyzer-write-to-const"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-write\-to\-const\fR
*************** This diagnostic warns for paths through
*** 10961,10967 ****
  detects an attempt to write through a pointer to a \f(CW\*(C`const\*(C'\fR object.
  However, the analyzer does not prioritize detection of such paths, so
  false negatives are more likely relative to other warnings.
! .IP "\fB\-Wno\-analyzer\-write\-to\-string\-literal\fR" 4
  .IX Item "-Wno-analyzer-write-to-string-literal"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-write\-to\-string\-literal\fR
--- 10894,10900 ----
  detects an attempt to write through a pointer to a \f(CW\*(C`const\*(C'\fR object.
  However, the analyzer does not prioritize detection of such paths, so
  false negatives are more likely relative to other warnings.
! .IP \fB\-Wno\-analyzer\-write\-to\-string\-literal\fR 4
  .IX Item "-Wno-analyzer-write-to-string-literal"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-write\-to\-string\-literal\fR
*************** This diagnostic warns for paths through
*** 10971,10977 ****
  detects an attempt to write through a pointer to a string literal.
  However, the analyzer does not prioritize detection of such paths, so
  false negatives are more likely relative to other warnings.
! .IP "\fB\-Wno\-analyzer\-use\-of\-uninitialized\-value\fR" 4
  .IX Item "-Wno-analyzer-use-of-uninitialized-value"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-use\-of\-uninitialized\-value\fR to disable it.
--- 10904,10910 ----
  detects an attempt to write through a pointer to a string literal.
  However, the analyzer does not prioritize detection of such paths, so
  false negatives are more likely relative to other warnings.
! .IP \fB\-Wno\-analyzer\-use\-of\-uninitialized\-value\fR 4
  .IX Item "-Wno-analyzer-use-of-uninitialized-value"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-use\-of\-uninitialized\-value\fR to disable it.
*************** This warning requires \fB\-fanalyzer\fR,
*** 10979,10994 ****
  This diagnostic warns for paths through the code in which an uninitialized
  value is used.
  .Sp
! See  \s-1CWE\-457:\s0 Use of Uninitialized Variable (\f(CW\*(C`https://cwe.mitre.org/data/definitions/457.html\*(C'\fR).
  .PP
  The analyzer has hardcoded knowledge about the behavior of the following
! memory-management functions:
  .ie n .IP "*<""alloca"">" 4
! .el .IP "*<\f(CWalloca\fR>" 4
  .IX Item "*<alloca>"
  .PD 0
! .ie n .IP "*<The built-in functions ""_\|_builtin_alloc"",>" 4
! .el .IP "*<The built-in functions \f(CW_\|_builtin_alloc\fR,>" 4
  .IX Item "*<The built-in functions __builtin_alloc,>"
  .PD
  \&\f(CW\*(C`_\|_builtin_alloc_with_align\*(C'\fR, \f(CW@item\fR \f(CW\*(C`_\|_builtin_calloc\*(C'\fR,
--- 10912,10927 ----
  This diagnostic warns for paths through the code in which an uninitialized
  value is used.
  .Sp
! See  CWE\-457: Use of Uninitialized Variable (\f(CW\*(C`https://cwe.mitre.org/data/definitions/457.html\*(C'\fR).
  .PP
  The analyzer has hardcoded knowledge about the behavior of the following
! memory\-management functions:
  .ie n .IP "*<""alloca"">" 4
! .el .IP *<\f(CWalloca\fR> 4
  .IX Item "*<alloca>"
  .PD 0
! .ie n .IP "*<The built\-in functions ""_\|_builtin_alloc"",>" 4
! .el .IP "*<The built\-in functions \f(CW_\|_builtin_alloc\fR,>" 4
  .IX Item "*<The built-in functions __builtin_alloc,>"
  .PD
  \&\f(CW\*(C`_\|_builtin_alloc_with_align\*(C'\fR, \f(CW@item\fR \f(CW\*(C`_\|_builtin_calloc\*(C'\fR,
*************** memory-management functions:
*** 10997,11013 ****
  \&\f(CW\*(C`_\|_builtin_memset_chk\*(C'\fR, \f(CW\*(C`_\|_builtin_realloc\*(C'\fR,
  \&\f(CW\*(C`_\|_builtin_stack_restore\*(C'\fR, and \f(CW\*(C`_\|_builtin_stack_save\*(C'\fR
  .ie n .IP "*<""calloc"">" 4
! .el .IP "*<\f(CWcalloc\fR>" 4
  .IX Item "*<calloc>"
  .PD 0
  .ie n .IP "*<""free"">" 4
! .el .IP "*<\f(CWfree\fR>" 4
  .IX Item "*<free>"
  .ie n .IP "*<""malloc"">" 4
! .el .IP "*<\f(CWmalloc\fR>" 4
  .IX Item "*<malloc>"
  .ie n .IP "*<""memset"">" 4
! .el .IP "*<\f(CWmemset\fR>" 4
  .IX Item "*<memset>"
  .ie n .IP "*<""operator delete"">" 4
  .el .IP "*<\f(CWoperator delete\fR>" 4
--- 10930,10946 ----
  \&\f(CW\*(C`_\|_builtin_memset_chk\*(C'\fR, \f(CW\*(C`_\|_builtin_realloc\*(C'\fR,
  \&\f(CW\*(C`_\|_builtin_stack_restore\*(C'\fR, and \f(CW\*(C`_\|_builtin_stack_save\*(C'\fR
  .ie n .IP "*<""calloc"">" 4
! .el .IP *<\f(CWcalloc\fR> 4
  .IX Item "*<calloc>"
  .PD 0
  .ie n .IP "*<""free"">" 4
! .el .IP *<\f(CWfree\fR> 4
  .IX Item "*<free>"
  .ie n .IP "*<""malloc"">" 4
! .el .IP *<\f(CWmalloc\fR> 4
  .IX Item "*<malloc>"
  .ie n .IP "*<""memset"">" 4
! .el .IP *<\f(CWmemset\fR> 4
  .IX Item "*<memset>"
  .ie n .IP "*<""operator delete"">" 4
  .el .IP "*<\f(CWoperator delete\fR>" 4
*************** memory-management functions:
*** 11022,11062 ****
  .el .IP "*<\f(CWoperator new []\fR>" 4
  .IX Item "*<operator new []>"
  .ie n .IP "*<""realloc"">" 4
! .el .IP "*<\f(CWrealloc\fR>" 4
  .IX Item "*<realloc>"
  .ie n .IP "*<""strdup"">" 4
! .el .IP "*<\f(CWstrdup\fR>" 4
  .IX Item "*<strdup>"
  .ie n .IP "*<""strndup"">" 4
! .el .IP "*<\f(CWstrndup\fR>" 4
  .IX Item "*<strndup>"
  .PD
  .PP
  of the following functions for working with file descriptors:
  .ie n .IP "*<""open"">" 4
! .el .IP "*<\f(CWopen\fR>" 4
  .IX Item "*<open>"
  .PD 0
  .ie n .IP "*<""close"">" 4
! .el .IP "*<\f(CWclose\fR>" 4
  .IX Item "*<close>"
  .ie n .IP "*<""creat"">" 4
! .el .IP "*<\f(CWcreat\fR>" 4
  .IX Item "*<creat>"
  .ie n .IP "*<""dup"", ""dup2"" and ""dup3"">" 4
  .el .IP "*<\f(CWdup\fR, \f(CWdup2\fR and \f(CWdup3\fR>" 4
  .IX Item "*<dup, dup2 and dup3>"
  .ie n .IP "*<""isatty"">" 4
! .el .IP "*<\f(CWisatty\fR>" 4
  .IX Item "*<isatty>"
  .ie n .IP "*<""pipe"", and ""pipe2"">" 4
  .el .IP "*<\f(CWpipe\fR, and \f(CWpipe2\fR>" 4
  .IX Item "*<pipe, and pipe2>"
  .ie n .IP "*<""read"">" 4
! .el .IP "*<\f(CWread\fR>" 4
  .IX Item "*<read>"
  .ie n .IP "*<""write"">" 4
! .el .IP "*<\f(CWwrite\fR>" 4
  .IX Item "*<write>"
  .ie n .IP "*<""socket"", ""bind"", ""listen"", ""accept"", and ""connect"">" 4
  .el .IP "*<\f(CWsocket\fR, \f(CWbind\fR, \f(CWlisten\fR, \f(CWaccept\fR, and \f(CWconnect\fR>" 4
--- 10955,10995 ----
  .el .IP "*<\f(CWoperator new []\fR>" 4
  .IX Item "*<operator new []>"
  .ie n .IP "*<""realloc"">" 4
! .el .IP *<\f(CWrealloc\fR> 4
  .IX Item "*<realloc>"
  .ie n .IP "*<""strdup"">" 4
! .el .IP *<\f(CWstrdup\fR> 4
  .IX Item "*<strdup>"
  .ie n .IP "*<""strndup"">" 4
! .el .IP *<\f(CWstrndup\fR> 4
  .IX Item "*<strndup>"
  .PD
  .PP
  of the following functions for working with file descriptors:
  .ie n .IP "*<""open"">" 4
! .el .IP *<\f(CWopen\fR> 4
  .IX Item "*<open>"
  .PD 0
  .ie n .IP "*<""close"">" 4
! .el .IP *<\f(CWclose\fR> 4
  .IX Item "*<close>"
  .ie n .IP "*<""creat"">" 4
! .el .IP *<\f(CWcreat\fR> 4
  .IX Item "*<creat>"
  .ie n .IP "*<""dup"", ""dup2"" and ""dup3"">" 4
  .el .IP "*<\f(CWdup\fR, \f(CWdup2\fR and \f(CWdup3\fR>" 4
  .IX Item "*<dup, dup2 and dup3>"
  .ie n .IP "*<""isatty"">" 4
! .el .IP *<\f(CWisatty\fR> 4
  .IX Item "*<isatty>"
  .ie n .IP "*<""pipe"", and ""pipe2"">" 4
  .el .IP "*<\f(CWpipe\fR, and \f(CWpipe2\fR>" 4
  .IX Item "*<pipe, and pipe2>"
  .ie n .IP "*<""read"">" 4
! .el .IP *<\f(CWread\fR> 4
  .IX Item "*<read>"
  .ie n .IP "*<""write"">" 4
! .el .IP *<\f(CWwrite\fR> 4
  .IX Item "*<write>"
  .ie n .IP "*<""socket"", ""bind"", ""listen"", ""accept"", and ""connect"">" 4
  .el .IP "*<\f(CWsocket\fR, \f(CWbind\fR, \f(CWlisten\fR, \f(CWaccept\fR, and \f(CWconnect\fR>" 4
*************** of the following functions for working w
*** 11064,11071 ****
  .PD
  .PP
  of the following functions for working with \f(CW\*(C`<stdio.h>\*(C'\fR streams:
! .ie n .IP "*<The built-in functions ""_\|_builtin_fprintf"",>" 4
! .el .IP "*<The built-in functions \f(CW_\|_builtin_fprintf\fR,>" 4
  .IX Item "*<The built-in functions __builtin_fprintf,>"
  \&\f(CW\*(C`_\|_builtin_fprintf_unlocked\*(C'\fR, \f(CW\*(C`_\|_builtin_fputc\*(C'\fR,
  \&\f(CW\*(C`_\|_builtin_fputc_unlocked\*(C'\fR, \f(CW\*(C`_\|_builtin_fputs\*(C'\fR,
--- 10997,11004 ----
  .PD
  .PP
  of the following functions for working with \f(CW\*(C`<stdio.h>\*(C'\fR streams:
! .ie n .IP "*<The built\-in functions ""_\|_builtin_fprintf"",>" 4
! .el .IP "*<The built\-in functions \f(CW_\|_builtin_fprintf\fR,>" 4
  .IX Item "*<The built-in functions __builtin_fprintf,>"
  \&\f(CW\*(C`_\|_builtin_fprintf_unlocked\*(C'\fR, \f(CW\*(C`_\|_builtin_fputc\*(C'\fR,
  \&\f(CW\*(C`_\|_builtin_fputc_unlocked\*(C'\fR, \f(CW\*(C`_\|_builtin_fputs\*(C'\fR,
*************** of the following functions for working w
*** 11077,11166 ****
  \&\f(CW\*(C`_\|_builtin_puts_unlocked\*(C'\fR, \f(CW\*(C`_\|_builtin_vfprintf\*(C'\fR, and
  \&\f(CW\*(C`_\|_builtin_vprintf\*(C'\fR
  .ie n .IP "*<""fopen"">" 4
! .el .IP "*<\f(CWfopen\fR>" 4
  .IX Item "*<fopen>"
  .PD 0
  .ie n .IP "*<""fclose"">" 4
! .el .IP "*<\f(CWfclose\fR>" 4
  .IX Item "*<fclose>"
  .ie n .IP "*<""ferror"">" 4
! .el .IP "*<\f(CWferror\fR>" 4
  .IX Item "*<ferror>"
  .ie n .IP "*<""fgets"">" 4
! .el .IP "*<\f(CWfgets\fR>" 4
  .IX Item "*<fgets>"
  .ie n .IP "*<""fgets_unlocked"">" 4
! .el .IP "*<\f(CWfgets_unlocked\fR>" 4
  .IX Item "*<fgets_unlocked>"
  .ie n .IP "*<""fileno"">" 4
! .el .IP "*<\f(CWfileno\fR>" 4
  .IX Item "*<fileno>"
  .ie n .IP "*<""fread"">" 4
! .el .IP "*<\f(CWfread\fR>" 4
  .IX Item "*<fread>"
  .ie n .IP "*<""getc"">" 4
! .el .IP "*<\f(CWgetc\fR>" 4
  .IX Item "*<getc>"
  .ie n .IP "*<""getchar"">" 4
! .el .IP "*<\f(CWgetchar\fR>" 4
  .IX Item "*<getchar>"
  .ie n .IP "*<""fprintf"">" 4
! .el .IP "*<\f(CWfprintf\fR>" 4
  .IX Item "*<fprintf>"
  .ie n .IP "*<""printf"">" 4
! .el .IP "*<\f(CWprintf\fR>" 4
  .IX Item "*<printf>"
  .ie n .IP "*<""fwrite"">" 4
! .el .IP "*<\f(CWfwrite\fR>" 4
  .IX Item "*<fwrite>"
  .PD
  .PP
  and of the following functions:
! .ie n .IP "*<The built-in functions ""_\|_builtin_expect"",>" 4
! .el .IP "*<The built-in functions \f(CW_\|_builtin_expect\fR,>" 4
  .IX Item "*<The built-in functions __builtin_expect,>"
  \&\f(CW\*(C`_\|_builtin_expect_with_probability\*(C'\fR, \f(CW\*(C`_\|_builtin_strchr\*(C'\fR,
  \&\f(CW\*(C`_\|_builtin_strcpy\*(C'\fR, \f(CW\*(C`_\|_builtin_strcpy_chk\*(C'\fR,
  \&\f(CW\*(C`_\|_builtin_strlen\*(C'\fR, \f(CW\*(C`_\|_builtin_va_copy\*(C'\fR, and
  \&\f(CW\*(C`_\|_builtin_va_start\*(C'\fR
! .ie n .IP "*<The \s-1GNU\s0 extensions ""error"" and ""error_at_line"">" 4
! .el .IP "*<The \s-1GNU\s0 extensions \f(CWerror\fR and \f(CWerror_at_line\fR>" 4
  .IX Item "*<The GNU extensions error and error_at_line>"
  .PD 0
  .ie n .IP "*<""getpass"">" 4
! .el .IP "*<\f(CWgetpass\fR>" 4
  .IX Item "*<getpass>"
  .ie n .IP "*<""longjmp"">" 4
! .el .IP "*<\f(CWlongjmp\fR>" 4
  .IX Item "*<longjmp>"
  .ie n .IP "*<""putenv"">" 4
! .el .IP "*<\f(CWputenv\fR>" 4
  .IX Item "*<putenv>"
  .ie n .IP "*<""setjmp"">" 4
! .el .IP "*<\f(CWsetjmp\fR>" 4
  .IX Item "*<setjmp>"
  .ie n .IP "*<""siglongjmp"">" 4
! .el .IP "*<\f(CWsiglongjmp\fR>" 4
  .IX Item "*<siglongjmp>"
  .ie n .IP "*<""signal"">" 4
! .el .IP "*<\f(CWsignal\fR>" 4
  .IX Item "*<signal>"
  .ie n .IP "*<""sigsetjmp"">" 4
! .el .IP "*<\f(CWsigsetjmp\fR>" 4
  .IX Item "*<sigsetjmp>"
  .ie n .IP "*<""strcat"">" 4
! .el .IP "*<\f(CWstrcat\fR>" 4
  .IX Item "*<strcat>"
  .ie n .IP "*<""strchr"">" 4
! .el .IP "*<\f(CWstrchr\fR>" 4
  .IX Item "*<strchr>"
  .ie n .IP "*<""strlen"">" 4
! .el .IP "*<\f(CWstrlen\fR>" 4
  .IX Item "*<strlen>"
  .PD
  .PP
  In addition, various functions with an \f(CW\*(C`_\|_analyzer_\*(C'\fR prefix have
! special meaning to the analyzer, described in the \s-1GCC\s0 Internals manual.
  .PP
  Pertinent parameters for controlling the exploration are:
  .IP "*<\fB\-\-param analyzer\-bb\-explosion\-factor=\fR\fIvalue\fR>" 4
--- 11010,11099 ----
  \&\f(CW\*(C`_\|_builtin_puts_unlocked\*(C'\fR, \f(CW\*(C`_\|_builtin_vfprintf\*(C'\fR, and
  \&\f(CW\*(C`_\|_builtin_vprintf\*(C'\fR
  .ie n .IP "*<""fopen"">" 4
! .el .IP *<\f(CWfopen\fR> 4
  .IX Item "*<fopen>"
  .PD 0
  .ie n .IP "*<""fclose"">" 4
! .el .IP *<\f(CWfclose\fR> 4
  .IX Item "*<fclose>"
  .ie n .IP "*<""ferror"">" 4
! .el .IP *<\f(CWferror\fR> 4
  .IX Item "*<ferror>"
  .ie n .IP "*<""fgets"">" 4
! .el .IP *<\f(CWfgets\fR> 4
  .IX Item "*<fgets>"
  .ie n .IP "*<""fgets_unlocked"">" 4
! .el .IP *<\f(CWfgets_unlocked\fR> 4
  .IX Item "*<fgets_unlocked>"
  .ie n .IP "*<""fileno"">" 4
! .el .IP *<\f(CWfileno\fR> 4
  .IX Item "*<fileno>"
  .ie n .IP "*<""fread"">" 4
! .el .IP *<\f(CWfread\fR> 4
  .IX Item "*<fread>"
  .ie n .IP "*<""getc"">" 4
! .el .IP *<\f(CWgetc\fR> 4
  .IX Item "*<getc>"
  .ie n .IP "*<""getchar"">" 4
! .el .IP *<\f(CWgetchar\fR> 4
  .IX Item "*<getchar>"
  .ie n .IP "*<""fprintf"">" 4
! .el .IP *<\f(CWfprintf\fR> 4
  .IX Item "*<fprintf>"
  .ie n .IP "*<""printf"">" 4
! .el .IP *<\f(CWprintf\fR> 4
  .IX Item "*<printf>"
  .ie n .IP "*<""fwrite"">" 4
! .el .IP *<\f(CWfwrite\fR> 4
  .IX Item "*<fwrite>"
  .PD
  .PP
  and of the following functions:
! .ie n .IP "*<The built\-in functions ""_\|_builtin_expect"",>" 4
! .el .IP "*<The built\-in functions \f(CW_\|_builtin_expect\fR,>" 4
  .IX Item "*<The built-in functions __builtin_expect,>"
  \&\f(CW\*(C`_\|_builtin_expect_with_probability\*(C'\fR, \f(CW\*(C`_\|_builtin_strchr\*(C'\fR,
  \&\f(CW\*(C`_\|_builtin_strcpy\*(C'\fR, \f(CW\*(C`_\|_builtin_strcpy_chk\*(C'\fR,
  \&\f(CW\*(C`_\|_builtin_strlen\*(C'\fR, \f(CW\*(C`_\|_builtin_va_copy\*(C'\fR, and
  \&\f(CW\*(C`_\|_builtin_va_start\*(C'\fR
! .ie n .IP "*<The GNU extensions ""error"" and ""error_at_line"">" 4
! .el .IP "*<The GNU extensions \f(CWerror\fR and \f(CWerror_at_line\fR>" 4
  .IX Item "*<The GNU extensions error and error_at_line>"
  .PD 0
  .ie n .IP "*<""getpass"">" 4
! .el .IP *<\f(CWgetpass\fR> 4
  .IX Item "*<getpass>"
  .ie n .IP "*<""longjmp"">" 4
! .el .IP *<\f(CWlongjmp\fR> 4
  .IX Item "*<longjmp>"
  .ie n .IP "*<""putenv"">" 4
! .el .IP *<\f(CWputenv\fR> 4
  .IX Item "*<putenv>"
  .ie n .IP "*<""setjmp"">" 4
! .el .IP *<\f(CWsetjmp\fR> 4
  .IX Item "*<setjmp>"
  .ie n .IP "*<""siglongjmp"">" 4
! .el .IP *<\f(CWsiglongjmp\fR> 4
  .IX Item "*<siglongjmp>"
  .ie n .IP "*<""signal"">" 4
! .el .IP *<\f(CWsignal\fR> 4
  .IX Item "*<signal>"
  .ie n .IP "*<""sigsetjmp"">" 4
! .el .IP *<\f(CWsigsetjmp\fR> 4
  .IX Item "*<sigsetjmp>"
  .ie n .IP "*<""strcat"">" 4
! .el .IP *<\f(CWstrcat\fR> 4
  .IX Item "*<strcat>"
  .ie n .IP "*<""strchr"">" 4
! .el .IP *<\f(CWstrchr\fR> 4
  .IX Item "*<strchr>"
  .ie n .IP "*<""strlen"">" 4
! .el .IP *<\f(CWstrlen\fR> 4
  .IX Item "*<strlen>"
  .PD
  .PP
  In addition, various functions with an \f(CW\*(C`_\|_analyzer_\*(C'\fR prefix have
! special meaning to the analyzer, described in the GCC Internals manual.
  .PP
  Pertinent parameters for controlling the exploration are:
  .IP "*<\fB\-\-param analyzer\-bb\-explosion\-factor=\fR\fIvalue\fR>" 4
*************** Pertinent parameters for controlling the
*** 11175,11181 ****
  .PD
  .PP
  The following options control the analyzer.
! .IP "\fB\-fanalyzer\-call\-summaries\fR" 4
  .IX Item "-fanalyzer-call-summaries"
  Simplify interprocedural analysis by computing the effect of certain calls,
  rather than exploring all paths through the function from callsite to each
--- 11108,11114 ----
  .PD
  .PP
  The following options control the analyzer.
! .IP \fB\-fanalyzer\-call\-summaries\fR 4
  .IX Item "-fanalyzer-call-summaries"
  Simplify interprocedural analysis by computing the effect of certain calls,
  rather than exploring all paths through the function from callsite to each
*************** possible return.
*** 11184,11197 ****
  If enabled, call summaries are only used for functions with more than one
  call site, and that are sufficiently complicated (as per
  \&\fB\-\-param analyzer\-min\-snodes\-for\-call\-summary=\fR\fIvalue\fR).
! .IP "\fB\-fanalyzer\-checker=\fR\fIname\fR" 4
  .IX Item "-fanalyzer-checker=name"
  Restrict the analyzer to run just the named checker, and enable it.
! .IP "\fB\-fanalyzer\-debug\-text\-art\-headings\fR" 4
  .IX Item "-fanalyzer-debug-text-art-headings"
  This option is intended for analyzer developers.  If enabled,
  the analyzer will add extra annotations to any diagrams it generates.
! .IP "\fB\-fno\-analyzer\-feasibility\fR" 4
  .IX Item "-fno-analyzer-feasibility"
  This option is intended for analyzer developers.
  .Sp
--- 11117,11130 ----
  If enabled, call summaries are only used for functions with more than one
  call site, and that are sufficiently complicated (as per
  \&\fB\-\-param analyzer\-min\-snodes\-for\-call\-summary=\fR\fIvalue\fR).
! .IP \fB\-fanalyzer\-checker=\fR\fIname\fR 4
  .IX Item "-fanalyzer-checker=name"
  Restrict the analyzer to run just the named checker, and enable it.
! .IP \fB\-fanalyzer\-debug\-text\-art\-headings\fR 4
  .IX Item "-fanalyzer-debug-text-art-headings"
  This option is intended for analyzer developers.  If enabled,
  the analyzer will add extra annotations to any diagrams it generates.
! .IP \fB\-fno\-analyzer\-feasibility\fR 4
  .IX Item "-fno-analyzer-feasibility"
  This option is intended for analyzer developers.
  .Sp
*************** for each diagnostic it emits: that the c
*** 11200,11280 ****
  exclusive.  Diagnostics for which no feasible path can be found are rejected.
  This filtering can be suppressed with \fB\-fno\-analyzer\-feasibility\fR, for
  debugging issues in this code.
! .IP "\fB\-fanalyzer\-fine\-grained\fR" 4
  .IX Item "-fanalyzer-fine-grained"
  This option is intended for analyzer developers.
  .Sp
! Internally the analyzer builds an \*(L"exploded graph\*(R" that combines
  control flow graphs with data flow information.
  .Sp
  By default, an edge in this graph can contain the effects of a run
  of multiple statements within a basic block.  With
  \&\fB\-fanalyzer\-fine\-grained\fR, each statement gets its own edge.
! .IP "\fB\-fanalyzer\-show\-duplicate\-count\fR" 4
  .IX Item "-fanalyzer-show-duplicate-count"
  This option is intended for analyzer developers: if multiple diagnostics
  have been detected as being duplicates of each other, it emits a note when
  reporting the best diagnostic, giving the number of additional diagnostics
  that were suppressed by the deduplication logic.
! .IP "\fB\-fanalyzer\-show\-events\-in\-system\-headers\fR" 4
  .IX Item "-fanalyzer-show-events-in-system-headers"
  By default the analyzer emits simplified diagnostics paths by hiding
  events fully located within a system header.
  With \fB\-fanalyzer\-show\-events\-in\-system\-headers\fR such
  events are no longer suppressed.
! .IP "\fB\-fno\-analyzer\-state\-merge\fR" 4
  .IX Item "-fno-analyzer-state-merge"
  This option is intended for analyzer developers.
  .Sp
  By default the analyzer attempts to simplify analysis by merging
  sufficiently similar states at each program point as it builds its
! \&\*(L"exploded graph\*(R".  With \fB\-fno\-analyzer\-state\-merge\fR this
! merging can be suppressed, for debugging state-handling issues.
! .IP "\fB\-fno\-analyzer\-state\-purge\fR" 4
  .IX Item "-fno-analyzer-state-purge"
  This option is intended for analyzer developers.
  .Sp
  By default the analyzer attempts to simplify analysis by purging
  aspects of state at a program point that appear to no longer be relevant
! e.g. the values of locals that aren't accessed later in the function
! and which aren't relevant to leak analysis.
  .Sp
  With \fB\-fno\-analyzer\-state\-purge\fR this purging of state can
! be suppressed, for debugging state-handling issues.
! .IP "\fB\-fno\-analyzer\-suppress\-followups\fR" 4
  .IX Item "-fno-analyzer-suppress-followups"
  This option is intended for analyzer developers.
  .Sp
  By default the analyzer will stop exploring an execution path after
  encountering certain diagnostics, in order to avoid potentially issuing a
! cascade of follow-up diagnostics.
  .Sp
  The diagnostics that terminate analysis along a path are:
  .RS 4
! .IP "*<\fB\-Wanalyzer\-null\-argument\fR>" 4
  .IX Item "*<-Wanalyzer-null-argument>"
  .PD 0
! .IP "*<\fB\-Wanalyzer\-null\-dereference\fR>" 4
  .IX Item "*<-Wanalyzer-null-dereference>"
! .IP "*<\fB\-Wanalyzer\-use\-after\-free\fR>" 4
  .IX Item "*<-Wanalyzer-use-after-free>"
! .IP "*<\fB\-Wanalyzer\-use\-of\-pointer\-in\-stale\-stack\-frame\fR>" 4
  .IX Item "*<-Wanalyzer-use-of-pointer-in-stale-stack-frame>"
! .IP "*<\fB\-Wanalyzer\-use\-of\-uninitialized\-value\fR>" 4
  .IX Item "*<-Wanalyzer-use-of-uninitialized-value>"
  .RE
  .RS 4
- .PD
  .Sp
  With \fB\-fno\-analyzer\-suppress\-followups\fR the analyzer will
  continue to explore such paths even after such diagnostics, which may
  be helpful for debugging issues in the analyzer, or for microbenchmarks
  for detecting undefined behavior.
  .RE
! .IP "\fB\-fanalyzer\-transitivity\fR" 4
  .IX Item "-fanalyzer-transitivity"
  This option enables transitivity of constraints within the analyzer.
! .IP "\fB\-fno\-analyzer\-undo\-inlining\fR" 4
  .IX Item "-fno-analyzer-undo-inlining"
  This option is intended for analyzer developers.
  .Sp
--- 11133,11213 ----
  exclusive.  Diagnostics for which no feasible path can be found are rejected.
  This filtering can be suppressed with \fB\-fno\-analyzer\-feasibility\fR, for
  debugging issues in this code.
! .IP \fB\-fanalyzer\-fine\-grained\fR 4
  .IX Item "-fanalyzer-fine-grained"
  This option is intended for analyzer developers.
  .Sp
! Internally the analyzer builds an "exploded graph" that combines
  control flow graphs with data flow information.
  .Sp
  By default, an edge in this graph can contain the effects of a run
  of multiple statements within a basic block.  With
  \&\fB\-fanalyzer\-fine\-grained\fR, each statement gets its own edge.
! .IP \fB\-fanalyzer\-show\-duplicate\-count\fR 4
  .IX Item "-fanalyzer-show-duplicate-count"
  This option is intended for analyzer developers: if multiple diagnostics
  have been detected as being duplicates of each other, it emits a note when
  reporting the best diagnostic, giving the number of additional diagnostics
  that were suppressed by the deduplication logic.
! .IP \fB\-fanalyzer\-show\-events\-in\-system\-headers\fR 4
  .IX Item "-fanalyzer-show-events-in-system-headers"
  By default the analyzer emits simplified diagnostics paths by hiding
  events fully located within a system header.
  With \fB\-fanalyzer\-show\-events\-in\-system\-headers\fR such
  events are no longer suppressed.
! .IP \fB\-fno\-analyzer\-state\-merge\fR 4
  .IX Item "-fno-analyzer-state-merge"
  This option is intended for analyzer developers.
  .Sp
  By default the analyzer attempts to simplify analysis by merging
  sufficiently similar states at each program point as it builds its
! "exploded graph".  With \fB\-fno\-analyzer\-state\-merge\fR this
! merging can be suppressed, for debugging state\-handling issues.
! .IP \fB\-fno\-analyzer\-state\-purge\fR 4
  .IX Item "-fno-analyzer-state-purge"
  This option is intended for analyzer developers.
  .Sp
  By default the analyzer attempts to simplify analysis by purging
  aspects of state at a program point that appear to no longer be relevant
! e.g. the values of locals that aren\*(Aqt accessed later in the function
! and which aren\*(Aqt relevant to leak analysis.
  .Sp
  With \fB\-fno\-analyzer\-state\-purge\fR this purging of state can
! be suppressed, for debugging state\-handling issues.
! .IP \fB\-fno\-analyzer\-suppress\-followups\fR 4
  .IX Item "-fno-analyzer-suppress-followups"
  This option is intended for analyzer developers.
  .Sp
  By default the analyzer will stop exploring an execution path after
  encountering certain diagnostics, in order to avoid potentially issuing a
! cascade of follow\-up diagnostics.
  .Sp
  The diagnostics that terminate analysis along a path are:
  .RS 4
! .IP *<\fB\-Wanalyzer\-null\-argument\fR> 4
  .IX Item "*<-Wanalyzer-null-argument>"
  .PD 0
! .IP *<\fB\-Wanalyzer\-null\-dereference\fR> 4
  .IX Item "*<-Wanalyzer-null-dereference>"
! .IP *<\fB\-Wanalyzer\-use\-after\-free\fR> 4
  .IX Item "*<-Wanalyzer-use-after-free>"
! .IP *<\fB\-Wanalyzer\-use\-of\-pointer\-in\-stale\-stack\-frame\fR> 4
  .IX Item "*<-Wanalyzer-use-of-pointer-in-stale-stack-frame>"
! .IP *<\fB\-Wanalyzer\-use\-of\-uninitialized\-value\fR> 4
  .IX Item "*<-Wanalyzer-use-of-uninitialized-value>"
+ .PD
  .RE
  .RS 4
  .Sp
  With \fB\-fno\-analyzer\-suppress\-followups\fR the analyzer will
  continue to explore such paths even after such diagnostics, which may
  be helpful for debugging issues in the analyzer, or for microbenchmarks
  for detecting undefined behavior.
  .RE
! .IP \fB\-fanalyzer\-transitivity\fR 4
  .IX Item "-fanalyzer-transitivity"
  This option enables transitivity of constraints within the analyzer.
! .IP \fB\-fno\-analyzer\-undo\-inlining\fR 4
  .IX Item "-fno-analyzer-undo-inlining"
  This option is intended for analyzer developers.
  .Sp
*************** This option is intended for analyzer dev
*** 11282,11288 ****
  tools, and some optimizations have already been applied to the code.  In
  particular function inlining may have occurred, leading to the
  interprocedural execution paths emitted by the analyzer containing
! function frames that don't correspond to those in the original source
  code.
  .Sp
  By default the analyzer attempts to reconstruct the original function
--- 11215,11221 ----
  tools, and some optimizations have already been applied to the code.  In
  particular function inlining may have occurred, leading to the
  interprocedural execution paths emitted by the analyzer containing
! function frames that don\*(Aqt correspond to those in the original source
  code.
  .Sp
  By default the analyzer attempts to reconstruct the original function
*************** frames, and to emit events showing the i
*** 11291,11418 ****
  With \fB\-fno\-analyzer\-undo\-inlining\fR this attempt to reconstruct
  the original frame information can be disabled, which may be of help
  when debugging issues in the analyzer.
! .IP "\fB\-fanalyzer\-verbose\-edges\fR" 4
  .IX Item "-fanalyzer-verbose-edges"
  This option is intended for analyzer developers.  It enables more
! verbose, lower-level detail in the descriptions of control flow
  within diagnostic paths.
! .IP "\fB\-fanalyzer\-verbose\-state\-changes\fR" 4
  .IX Item "-fanalyzer-verbose-state-changes"
  This option is intended for analyzer developers.  It enables more
! verbose, lower-level detail in the descriptions of events relating
  to state machines within diagnostic paths.
! .IP "\fB\-fanalyzer\-verbosity=\fR\fIlevel\fR" 4
  .IX Item "-fanalyzer-verbosity=level"
  This option controls the complexity of the control flow paths that are
  emitted for analyzer diagnostics.
  .Sp
  The \fIlevel\fR can be one of:
  .RS 4
! .IP "\fB0\fR" 4
  .IX Item "0"
  At this level, interprocedural call and return events are displayed,
! along with the most pertinent state-change events relating to
  a diagnostic.  For example, for a double\-\f(CW\*(C`free\*(C'\fR diagnostic,
  both calls to \f(CW\*(C`free\*(C'\fR will be shown.
! .IP "\fB1\fR" 4
  .IX Item "1"
  As per the previous level, but also show events for the entry
  to each function.
! .IP "\fB2\fR" 4
  .IX Item "2"
  As per the previous level, but also show events relating to
  control flow that are significant to triggering the issue
! (e.g. \*(L"true path taken\*(R" at a conditional).
  .Sp
  This level is the default.
! .IP "\fB3\fR" 4
  .IX Item "3"
  As per the previous level, but show all control flow events, not
  just significant ones.
! .IP "\fB4\fR" 4
  .IX Item "4"
  This level is intended for analyzer developers; it adds various
  other events intended for debugging the analyzer.
  .RE
  .RS 4
  .RE
! .IP "\fB\-fdump\-analyzer\fR" 4
  .IX Item "-fdump-analyzer"
  Dump internal details about what the analyzer is doing to
! \&\fI\fIfile\fI.analyzer.txt\fR.
  \&\fB\-fdump\-analyzer\-stderr\fR overrides this option.
! .IP "\fB\-fdump\-analyzer\-stderr\fR" 4
  .IX Item "-fdump-analyzer-stderr"
  Dump internal details about what the analyzer is doing to stderr.
  This option overrides \fB\-fdump\-analyzer\fR.
! .IP "\fB\-fdump\-analyzer\-callgraph\fR" 4
  .IX Item "-fdump-analyzer-callgraph"
  Dump a representation of the call graph suitable for viewing with
! GraphViz to \fI\fIfile\fI.callgraph.dot\fR.
! .IP "\fB\-fdump\-analyzer\-exploded\-graph\fR" 4
  .IX Item "-fdump-analyzer-exploded-graph"
! Dump a representation of the \*(L"exploded graph\*(R" suitable for viewing with
! GraphViz to \fI\fIfile\fI.eg.dot\fR.
! Nodes are color-coded based on state-machine states to emphasize
  state changes.
! .IP "\fB\-fdump\-analyzer\-exploded\-nodes\fR" 4
  .IX Item "-fdump-analyzer-exploded-nodes"
! Emit diagnostics showing where nodes in the \*(L"exploded graph\*(R" are
  in relation to the program source.
! .IP "\fB\-fdump\-analyzer\-exploded\-nodes\-2\fR" 4
  .IX Item "-fdump-analyzer-exploded-nodes-2"
! Dump a textual representation of the \*(L"exploded graph\*(R" to
! \&\fI\fIfile\fI.eg.txt\fR.
! .IP "\fB\-fdump\-analyzer\-exploded\-nodes\-3\fR" 4
  .IX Item "-fdump-analyzer-exploded-nodes-3"
! Dump a textual representation of the \*(L"exploded graph\*(R" to
! one dump file per node, to \fI\fIfile\fI.eg\-\fIid\fI.txt\fR.
  This is typically a large number of dump files.
! .IP "\fB\-fdump\-analyzer\-exploded\-paths\fR" 4
  .IX Item "-fdump-analyzer-exploded-paths"
! Dump a textual representation of the \*(L"exploded path\*(R" for each
! diagnostic to \fI\fIfile\fI.\fIidx\fI.\fIkind\fI.epath.txt\fR.
! .IP "\fB\-fdump\-analyzer\-feasibility\fR" 4
  .IX Item "-fdump-analyzer-feasibility"
! Dump internal details about the analyzer's search for feasible paths.
  The details are written in a form suitable for viewing with GraphViz
! to filenames of the form \fI\fIfile\fI.*.fg.dot\fR,
! \&\fI\fIfile\fI.*.tg.dot\fR, and \fI\fIfile\fI.*.fpath.txt\fR.
! .IP "\fB\-fdump\-analyzer\-infinite\-loop\fR" 4
  .IX Item "-fdump-analyzer-infinite-loop"
! Dump internal details about the analyzer's search for infinite loops.
  The details are written in a form suitable for viewing with GraphViz
! to filenames of the form \fI\fIfile\fI.*.infinite\-loop.dot\fR.
! .IP "\fB\-fdump\-analyzer\-json\fR" 4
  .IX Item "-fdump-analyzer-json"
! Dump a compressed \s-1JSON\s0 representation of analyzer internals to
! \&\fI\fIfile\fI.analyzer.json.gz\fR.  The precise format is subject
  to change.
! .IP "\fB\-fdump\-analyzer\-state\-purge\fR" 4
  .IX Item "-fdump-analyzer-state-purge"
  As per \fB\-fdump\-analyzer\-supergraph\fR, dump a representation of the
! \&\*(L"supergraph\*(R" suitable for viewing with GraphViz, but annotate the
  graph with information on what state will be purged at each node.
! The graph is written to \fI\fIfile\fI.state\-purge.dot\fR.
! .IP "\fB\-fdump\-analyzer\-supergraph\fR" 4
  .IX Item "-fdump-analyzer-supergraph"
! Dump representations of the \*(L"supergraph\*(R" suitable for viewing with
! GraphViz to \fI\fIfile\fI.supergraph.dot\fR and to
! \&\fI\fIfile\fI.supergraph\-eg.dot\fR.  These show all of the
  control flow graphs in the program, with interprocedural edges for
  calls and returns.  The second dump contains annotations showing nodes
! in the \*(L"exploded graph\*(R" and diagnostics associated with them.
! .IP "\fB\-fdump\-analyzer\-untracked\fR" 4
  .IX Item "-fdump-analyzer-untracked"
  Emit custom warnings with internal details intended for analyzer developers.
  .SS "Options for Debugging Your Program"
  .IX Subsection "Options for Debugging Your Program"
! To tell \s-1GCC\s0 to emit extra information for use by a debugger, in almost
  all cases you need only to add \fB\-g\fR to your other options.  Some debug
! formats can co-exist (like \s-1DWARF\s0 with \s-1CTF\s0) when each of them is enabled
  explicitly by adding the respective command line option to your other options.
  .PP
! \&\s-1GCC\s0 allows you to use \fB\-g\fR with
  \&\fB\-O\fR.  The shortcuts taken by optimized code may occasionally
  be surprising: some variables you declared may not exist
  at all; flow of control may briefly move where you did not expect it;
--- 11224,11351 ----
  With \fB\-fno\-analyzer\-undo\-inlining\fR this attempt to reconstruct
  the original frame information can be disabled, which may be of help
  when debugging issues in the analyzer.
! .IP \fB\-fanalyzer\-verbose\-edges\fR 4
  .IX Item "-fanalyzer-verbose-edges"
  This option is intended for analyzer developers.  It enables more
! verbose, lower\-level detail in the descriptions of control flow
  within diagnostic paths.
! .IP \fB\-fanalyzer\-verbose\-state\-changes\fR 4
  .IX Item "-fanalyzer-verbose-state-changes"
  This option is intended for analyzer developers.  It enables more
! verbose, lower\-level detail in the descriptions of events relating
  to state machines within diagnostic paths.
! .IP \fB\-fanalyzer\-verbosity=\fR\fIlevel\fR 4
  .IX Item "-fanalyzer-verbosity=level"
  This option controls the complexity of the control flow paths that are
  emitted for analyzer diagnostics.
  .Sp
  The \fIlevel\fR can be one of:
  .RS 4
! .IP \fB0\fR 4
  .IX Item "0"
  At this level, interprocedural call and return events are displayed,
! along with the most pertinent state\-change events relating to
  a diagnostic.  For example, for a double\-\f(CW\*(C`free\*(C'\fR diagnostic,
  both calls to \f(CW\*(C`free\*(C'\fR will be shown.
! .IP \fB1\fR 4
  .IX Item "1"
  As per the previous level, but also show events for the entry
  to each function.
! .IP \fB2\fR 4
  .IX Item "2"
  As per the previous level, but also show events relating to
  control flow that are significant to triggering the issue
! (e.g. "true path taken" at a conditional).
  .Sp
  This level is the default.
! .IP \fB3\fR 4
  .IX Item "3"
  As per the previous level, but show all control flow events, not
  just significant ones.
! .IP \fB4\fR 4
  .IX Item "4"
  This level is intended for analyzer developers; it adds various
  other events intended for debugging the analyzer.
  .RE
  .RS 4
  .RE
! .IP \fB\-fdump\-analyzer\fR 4
  .IX Item "-fdump-analyzer"
  Dump internal details about what the analyzer is doing to
! \&\fIfile.analyzer.txt\fR.
  \&\fB\-fdump\-analyzer\-stderr\fR overrides this option.
! .IP \fB\-fdump\-analyzer\-stderr\fR 4
  .IX Item "-fdump-analyzer-stderr"
  Dump internal details about what the analyzer is doing to stderr.
  This option overrides \fB\-fdump\-analyzer\fR.
! .IP \fB\-fdump\-analyzer\-callgraph\fR 4
  .IX Item "-fdump-analyzer-callgraph"
  Dump a representation of the call graph suitable for viewing with
! GraphViz to \fIfile.callgraph.dot\fR.
! .IP \fB\-fdump\-analyzer\-exploded\-graph\fR 4
  .IX Item "-fdump-analyzer-exploded-graph"
! Dump a representation of the "exploded graph" suitable for viewing with
! GraphViz to \fIfile.eg.dot\fR.
! Nodes are color\-coded based on state\-machine states to emphasize
  state changes.
! .IP \fB\-fdump\-analyzer\-exploded\-nodes\fR 4
  .IX Item "-fdump-analyzer-exploded-nodes"
! Emit diagnostics showing where nodes in the "exploded graph" are
  in relation to the program source.
! .IP \fB\-fdump\-analyzer\-exploded\-nodes\-2\fR 4
  .IX Item "-fdump-analyzer-exploded-nodes-2"
! Dump a textual representation of the "exploded graph" to
! \&\fIfile.eg.txt\fR.
! .IP \fB\-fdump\-analyzer\-exploded\-nodes\-3\fR 4
  .IX Item "-fdump-analyzer-exploded-nodes-3"
! Dump a textual representation of the "exploded graph" to
! one dump file per node, to \fIfile.eg\-id.txt\fR.
  This is typically a large number of dump files.
! .IP \fB\-fdump\-analyzer\-exploded\-paths\fR 4
  .IX Item "-fdump-analyzer-exploded-paths"
! Dump a textual representation of the "exploded path" for each
! diagnostic to \fIfile.idx.kind.epath.txt\fR.
! .IP \fB\-fdump\-analyzer\-feasibility\fR 4
  .IX Item "-fdump-analyzer-feasibility"
! Dump internal details about the analyzer\*(Aqs search for feasible paths.
  The details are written in a form suitable for viewing with GraphViz
! to filenames of the form \fIfile.*.fg.dot\fR,
! \&\fIfile.*.tg.dot\fR, and \fIfile.*.fpath.txt\fR.
! .IP \fB\-fdump\-analyzer\-infinite\-loop\fR 4
  .IX Item "-fdump-analyzer-infinite-loop"
! Dump internal details about the analyzer\*(Aqs search for infinite loops.
  The details are written in a form suitable for viewing with GraphViz
! to filenames of the form \fIfile.*.infinite\-loop.dot\fR.
! .IP \fB\-fdump\-analyzer\-json\fR 4
  .IX Item "-fdump-analyzer-json"
! Dump a compressed JSON representation of analyzer internals to
! \&\fIfile.analyzer.json.gz\fR.  The precise format is subject
  to change.
! .IP \fB\-fdump\-analyzer\-state\-purge\fR 4
  .IX Item "-fdump-analyzer-state-purge"
  As per \fB\-fdump\-analyzer\-supergraph\fR, dump a representation of the
! "supergraph" suitable for viewing with GraphViz, but annotate the
  graph with information on what state will be purged at each node.
! The graph is written to \fIfile.state\-purge.dot\fR.
! .IP \fB\-fdump\-analyzer\-supergraph\fR 4
  .IX Item "-fdump-analyzer-supergraph"
! Dump representations of the "supergraph" suitable for viewing with
! GraphViz to \fIfile.supergraph.dot\fR and to
! \&\fIfile.supergraph\-eg.dot\fR.  These show all of the
  control flow graphs in the program, with interprocedural edges for
  calls and returns.  The second dump contains annotations showing nodes
! in the "exploded graph" and diagnostics associated with them.
! .IP \fB\-fdump\-analyzer\-untracked\fR 4
  .IX Item "-fdump-analyzer-untracked"
  Emit custom warnings with internal details intended for analyzer developers.
  .SS "Options for Debugging Your Program"
  .IX Subsection "Options for Debugging Your Program"
! To tell GCC to emit extra information for use by a debugger, in almost
  all cases you need only to add \fB\-g\fR to your other options.  Some debug
! formats can co\-exist (like DWARF with CTF) when each of them is enabled
  explicitly by adding the respective command line option to your other options.
  .PP
! GCC allows you to use \fB\-g\fR with
  \&\fB\-O\fR.  The shortcuts taken by optimized code may occasionally
  be surprising: some variables you declared may not exist
  at all; flow of control may briefly move where you did not expect it;
*************** using \fB\-Og\fR with \fB\-g\fR.
*** 11427,11538 ****
  With no \fB\-O\fR option at all, some compiler passes that collect
  information useful for debugging do not run at all, so that
  \&\fB\-Og\fR may result in a better debugging experience.
! .IP "\fB\-g\fR" 4
  .IX Item "-g"
! Produce debugging information in the operating system's native format
! (stabs, \s-1COFF, XCOFF,\s0 or \s-1DWARF\s0).  \s-1GDB\s0 can work with this debugging
  information.
  .Sp
  On most systems that use stabs format, \fB\-g\fR enables use of extra
! debugging information that only \s-1GDB\s0 can use; this extra information
! makes debugging work better in \s-1GDB\s0 but probably makes other debuggers
  crash or refuse to read the program.  If you want to control for certain whether
  to generate the extra information, use \fB\-gvms\fR (see below).
! .IP "\fB\-ggdb\fR" 4
  .IX Item "-ggdb"
! Produce debugging information for use by \s-1GDB.\s0  This means to use the
! most expressive format available (\s-1DWARF,\s0 stabs, or the native format
! if neither of those are supported), including \s-1GDB\s0 extensions if at all
  possible.
! .IP "\fB\-gdwarf\fR" 4
  .IX Item "-gdwarf"
  .PD 0
! .IP "\fB\-gdwarf\-\fR\fIversion\fR" 4
  .IX Item "-gdwarf-version"
  .PD
! Produce debugging information in \s-1DWARF\s0 format (if that is supported).
  The value of \fIversion\fR may be either 2, 3, 4 or 5; the default
! version for most targets is 5 (with the exception of VxWorks, \s-1TPF\s0 and
! Darwin / macOS, which default to version 2, and \s-1AIX,\s0 which defaults
  to version 4).
  .Sp
! Note that with \s-1DWARF\s0 Version 2, some ports require and always
! use some non-conflicting \s-1DWARF 3\s0 extensions in the unwind tables.
  .Sp
! Version 4 may require \s-1GDB 7.0\s0 and \fB\-fvar\-tracking\-assignments\fR
! for maximum benefit. Version 5 requires \s-1GDB 8.0\s0 or higher.
  .Sp
! \&\s-1GCC\s0 no longer supports \s-1DWARF\s0 Version 1, which is substantially
  different than Version 2 and later.  For historical reasons, some
! other DWARF-related options such as
! \&\fB\-fno\-dwarf2\-cfi\-asm\fR) retain a reference to \s-1DWARF\s0 Version 2
! in their names, but apply to all currently-supported versions of \s-1DWARF.\s0
! .IP "\fB\-gbtf\fR" 4
  .IX Item "-gbtf"
! Request \s-1BTF\s0 debug information.  \s-1BTF\s0 is the default debugging format for the
! eBPF target.  On other targets, like x86, \s-1BTF\s0 debug information can be
! generated along with \s-1DWARF\s0 debug information when both of the debug formats are
  enabled explicitly via their respective command line options.
! .IP "\fB\-gprune\-btf\fR" 4
  .IX Item "-gprune-btf"
  .PD 0
! .IP "\fB\-gno\-prune\-btf\fR" 4
  .IX Item "-gno-prune-btf"
  .PD
! Prune \s-1BTF\s0 information before emission.  When pruning, only type
! information for types used by global variables and file-scope functions
! will be emitted.  If compiling for the \s-1BPF\s0 target with \s-1BPF\s0 CO-RE
! enabled, type information will also be emitted for types used in \s-1BPF\s0
! CO-RE relocations.  In addition, struct and union types which are only
  referred to via pointers from members of other struct or union types
! shall be pruned and replaced with \s-1BTF_KIND_FWD,\s0 as though those types
  were only present in the input as forward declarations.
  .Sp
! This option substantially reduces the size of produced \s-1BTF\s0 information,
  but at significant loss in the amount of detailed type information.
! It is primarily useful when compiling for the \s-1BPF\s0 target, to minimize
! the size of the resulting object, and to eliminate \s-1BTF\s0 information
! which is not immediately relevant to the \s-1BPF\s0 program loading process.
  .Sp
! This option is enabled by default for the \s-1BPF\s0 target when generating
! \&\s-1BTF\s0 information.
! .IP "\fB\-gctf\fR" 4
  .IX Item "-gctf"
  .PD 0
! .IP "\fB\-gctf\fR\fIlevel\fR" 4
  .IX Item "-gctflevel"
  .PD
! Request \s-1CTF\s0 debug information and use level to specify how much \s-1CTF\s0 debug
  information should be produced.  If \fB\-gctf\fR is specified
! without a value for level, the default level of \s-1CTF\s0 debug information is 2.
  .Sp
! \&\s-1CTF\s0 debug information can be generated along with \s-1DWARF\s0 debug information when
  both of the debug formats are enabled explicitly via their respective command
  line options.
  .Sp
! Level 0 produces no \s-1CTF\s0 debug information at all.  Thus, \fB\-gctf0\fR
  negates \fB\-gctf\fR.
  .Sp
! Level 1 produces \s-1CTF\s0 information for tracebacks only.  This includes callsite
  information, but does not include type information.
  .Sp
  Level 2 produces type information for entities (functions, data objects etc.)
! at file-scope or global-scope only.
! .IP "\fB\-gvms\fR" 4
  .IX Item "-gvms"
  Produce debugging information in Alpha/VMS debug format (if that is
! supported).  This is the format used by \s-1DEBUG\s0 on Alpha/VMS systems.
! .IP "\fB\-gcodeview\fR" 4
  .IX Item "-gcodeview"
  Produce debugging information in CodeView debug format (if that is
! supported).  This is the format used by Microsoft Visual \*(C+ on
  Windows.
! .IP "\fB\-g\fR\fIlevel\fR" 4
  .IX Item "-glevel"
  .PD 0
! .IP "\fB\-ggdb\fR\fIlevel\fR" 4
  .IX Item "-ggdblevel"
! .IP "\fB\-gvms\fR\fIlevel\fR" 4
  .IX Item "-gvmslevel"
  .PD
  Request debugging information and also use \fIlevel\fR to specify how
--- 11360,11471 ----
  With no \fB\-O\fR option at all, some compiler passes that collect
  information useful for debugging do not run at all, so that
  \&\fB\-Og\fR may result in a better debugging experience.
! .IP \fB\-g\fR 4
  .IX Item "-g"
! Produce debugging information in the operating system\*(Aqs native format
! (stabs, COFF, XCOFF, or DWARF).  GDB can work with this debugging
  information.
  .Sp
  On most systems that use stabs format, \fB\-g\fR enables use of extra
! debugging information that only GDB can use; this extra information
! makes debugging work better in GDB but probably makes other debuggers
  crash or refuse to read the program.  If you want to control for certain whether
  to generate the extra information, use \fB\-gvms\fR (see below).
! .IP \fB\-ggdb\fR 4
  .IX Item "-ggdb"
! Produce debugging information for use by GDB.  This means to use the
! most expressive format available (DWARF, stabs, or the native format
! if neither of those are supported), including GDB extensions if at all
  possible.
! .IP \fB\-gdwarf\fR 4
  .IX Item "-gdwarf"
  .PD 0
! .IP \fB\-gdwarf\-\fR\fIversion\fR 4
  .IX Item "-gdwarf-version"
  .PD
! Produce debugging information in DWARF format (if that is supported).
  The value of \fIversion\fR may be either 2, 3, 4 or 5; the default
! version for most targets is 5 (with the exception of VxWorks, TPF and
! Darwin / macOS, which default to version 2, and AIX, which defaults
  to version 4).
  .Sp
! Note that with DWARF Version 2, some ports require and always
! use some non\-conflicting DWARF 3 extensions in the unwind tables.
  .Sp
! Version 4 may require GDB 7.0 and \fB\-fvar\-tracking\-assignments\fR
! for maximum benefit. Version 5 requires GDB 8.0 or higher.
  .Sp
! GCC no longer supports DWARF Version 1, which is substantially
  different than Version 2 and later.  For historical reasons, some
! other DWARF\-related options such as
! \&\fB\-fno\-dwarf2\-cfi\-asm\fR) retain a reference to DWARF Version 2
! in their names, but apply to all currently\-supported versions of DWARF.
! .IP \fB\-gbtf\fR 4
  .IX Item "-gbtf"
! Request BTF debug information.  BTF is the default debugging format for the
! eBPF target.  On other targets, like x86, BTF debug information can be
! generated along with DWARF debug information when both of the debug formats are
  enabled explicitly via their respective command line options.
! .IP \fB\-gprune\-btf\fR 4
  .IX Item "-gprune-btf"
  .PD 0
! .IP \fB\-gno\-prune\-btf\fR 4
  .IX Item "-gno-prune-btf"
  .PD
! Prune BTF information before emission.  When pruning, only type
! information for types used by global variables and file\-scope functions
! will be emitted.  If compiling for the BPF target with BPF CO\-RE
! enabled, type information will also be emitted for types used in BPF
! CO\-RE relocations.  In addition, struct and union types which are only
  referred to via pointers from members of other struct or union types
! shall be pruned and replaced with BTF_KIND_FWD, as though those types
  were only present in the input as forward declarations.
  .Sp
! This option substantially reduces the size of produced BTF information,
  but at significant loss in the amount of detailed type information.
! It is primarily useful when compiling for the BPF target, to minimize
! the size of the resulting object, and to eliminate BTF information
! which is not immediately relevant to the BPF program loading process.
  .Sp
! This option is enabled by default for the BPF target when generating
! BTF information.
! .IP \fB\-gctf\fR 4
  .IX Item "-gctf"
  .PD 0
! .IP \fB\-gctf\fR\fIlevel\fR 4
  .IX Item "-gctflevel"
  .PD
! Request CTF debug information and use level to specify how much CTF debug
  information should be produced.  If \fB\-gctf\fR is specified
! without a value for level, the default level of CTF debug information is 2.
  .Sp
! CTF debug information can be generated along with DWARF debug information when
  both of the debug formats are enabled explicitly via their respective command
  line options.
  .Sp
! Level 0 produces no CTF debug information at all.  Thus, \fB\-gctf0\fR
  negates \fB\-gctf\fR.
  .Sp
! Level 1 produces CTF information for tracebacks only.  This includes callsite
  information, but does not include type information.
  .Sp
  Level 2 produces type information for entities (functions, data objects etc.)
! at file\-scope or global\-scope only.
! .IP \fB\-gvms\fR 4
  .IX Item "-gvms"
  Produce debugging information in Alpha/VMS debug format (if that is
! supported).  This is the format used by DEBUG on Alpha/VMS systems.
! .IP \fB\-gcodeview\fR 4
  .IX Item "-gcodeview"
  Produce debugging information in CodeView debug format (if that is
! supported).  This is the format used by Microsoft Visual C++ on
  Windows.
! .IP \fB\-g\fR\fIlevel\fR 4
  .IX Item "-glevel"
  .PD 0
! .IP \fB\-ggdb\fR\fIlevel\fR 4
  .IX Item "-ggdblevel"
! .IP \fB\-gvms\fR\fIlevel\fR 4
  .IX Item "-gvmslevel"
  .PD
  Request debugging information and also use \fIlevel\fR to specify how
*************** Level 0 produces no debug information at
*** 11542,11548 ****
  \&\fB\-g\fR.
  .Sp
  Level 1 produces minimal information, enough for making backtraces in
! parts of the program that you don't plan to debug.  This includes
  descriptions of functions and external variables, and line number
  tables, but no information about local variables.
  .Sp
--- 11475,11481 ----
  \&\fB\-g\fR.
  .Sp
  Level 1 produces minimal information, enough for making backtraces in
! parts of the program that you don\*(Aqt plan to debug.  This includes
  descriptions of functions and external variables, and line number
  tables, but no information about local variables.
  .Sp
*************** the last such option is the one that is
*** 11556,11593 ****
  \&\fB\-gdwarf\fR does not accept a concatenated debug level, to avoid
  confusion with \fB\-gdwarf\-\fR\fIlevel\fR.
  Instead use an additional \fB\-g\fR\fIlevel\fR option to change the
! debug level for \s-1DWARF.\s0
! .IP "\fB\-fno\-eliminate\-unused\-debug\-symbols\fR" 4
  .IX Item "-fno-eliminate-unused-debug-symbols"
  By default, no debug information is produced for symbols that are not actually
  used. Use this option if you want debug information for all symbols.
! .IP "\fB\-femit\-class\-debug\-always\fR" 4
  .IX Item "-femit-class-debug-always"
! Instead of emitting debugging information for a \*(C+ class in only one
  object file, emit it in all object files using the class.  This option
! should be used only with debuggers that are unable to handle the way \s-1GCC\s0
  normally emits debugging information for classes because using this
  option increases the size of debugging information by as much as a
  factor of two.
! .IP "\fB\-fno\-merge\-debug\-strings\fR" 4
  .IX Item "-fno-merge-debug-strings"
  Direct the linker to not merge together strings in the debugging
  information that are identical in different object files.  Merging is
  not supported by all assemblers or linkers.  Merging decreases the size
  of the debug information in the output file at the cost of increasing
  link processing time.  Merging is enabled by default.
! .IP "\fB\-fdebug\-prefix\-map=\fR\fIold\fR\fB=\fR\fInew\fR" 4
  .IX Item "-fdebug-prefix-map=old=new"
! When compiling files residing in directory \fI\fIold\fI\fR, record
  debugging information describing them as if the files resided in
! directory \fI\fInew\fI\fR instead.  This can be used to replace a
! build-time path with an install-time path in the debug info.  It can
  also be used to change an absolute path to a relative path by using
  \&\fI.\fR for \fInew\fR.  This can give more reproducible builds, which
! are location independent, but may require an extra command to tell \s-1GDB\s0
  where to find the source files. See also \fB\-ffile\-prefix\-map\fR
  and \fB\-fcanon\-prefix\-map\fR.
! .IP "\fB\-fvar\-tracking\fR" 4
  .IX Item "-fvar-tracking"
  Run variable tracking pass.  It computes where variables are stored at each
  position in code.  Better debugging information is then generated
--- 11489,11526 ----
  \&\fB\-gdwarf\fR does not accept a concatenated debug level, to avoid
  confusion with \fB\-gdwarf\-\fR\fIlevel\fR.
  Instead use an additional \fB\-g\fR\fIlevel\fR option to change the
! debug level for DWARF.
! .IP \fB\-fno\-eliminate\-unused\-debug\-symbols\fR 4
  .IX Item "-fno-eliminate-unused-debug-symbols"
  By default, no debug information is produced for symbols that are not actually
  used. Use this option if you want debug information for all symbols.
! .IP \fB\-femit\-class\-debug\-always\fR 4
  .IX Item "-femit-class-debug-always"
! Instead of emitting debugging information for a C++ class in only one
  object file, emit it in all object files using the class.  This option
! should be used only with debuggers that are unable to handle the way GCC
  normally emits debugging information for classes because using this
  option increases the size of debugging information by as much as a
  factor of two.
! .IP \fB\-fno\-merge\-debug\-strings\fR 4
  .IX Item "-fno-merge-debug-strings"
  Direct the linker to not merge together strings in the debugging
  information that are identical in different object files.  Merging is
  not supported by all assemblers or linkers.  Merging decreases the size
  of the debug information in the output file at the cost of increasing
  link processing time.  Merging is enabled by default.
! .IP \fB\-fdebug\-prefix\-map=\fR\fIold\fR\fB=\fR\fInew\fR 4
  .IX Item "-fdebug-prefix-map=old=new"
! When compiling files residing in directory \fIold\fR, record
  debugging information describing them as if the files resided in
! directory \fInew\fR instead.  This can be used to replace a
! build\-time path with an install\-time path in the debug info.  It can
  also be used to change an absolute path to a relative path by using
  \&\fI.\fR for \fInew\fR.  This can give more reproducible builds, which
! are location independent, but may require an extra command to tell GDB
  where to find the source files. See also \fB\-ffile\-prefix\-map\fR
  and \fB\-fcanon\-prefix\-map\fR.
! .IP \fB\-fvar\-tracking\fR 4
  .IX Item "-fvar-tracking"
  Run variable tracking pass.  It computes where variables are stored at each
  position in code.  Better debugging information is then generated
*************** position in code.  Better debugging info
*** 11596,11731 ****
  It is enabled by default when compiling with optimization (\fB\-Os\fR,
  \&\fB\-O\fR, \fB\-O2\fR, ...), debugging information (\fB\-g\fR) and
  the debug info format supports it.
! .IP "\fB\-fvar\-tracking\-assignments\fR" 4
  .IX Item "-fvar-tracking-assignments"
  Annotate assignments to user variables early in the compilation and
  attempt to carry the annotations over throughout the compilation all the
  way to the end, in an attempt to improve debug information while
  optimizing.  Use of \fB\-gdwarf\-4\fR is recommended along with it.
  .Sp
! It can be enabled even if var-tracking is disabled, in which case
  annotations are created and maintained, but discarded at the end.
  By default, this flag is enabled together with \fB\-fvar\-tracking\fR,
  except when selective scheduling is enabled.
! .IP "\fB\-gsplit\-dwarf\fR" 4
  .IX Item "-gsplit-dwarf"
! If \s-1DWARF\s0 debugging information is enabled, separate as much debugging
  information as possible into a separate output file with the extension
  \&\fI.dwo\fR.  This option allows the build system to avoid linking files with
  debug information.  To be useful, this option requires a debugger capable of
  reading \fI.dwo\fR files.
! .IP "\fB\-gdwarf32\fR" 4
  .IX Item "-gdwarf32"
  .PD 0
! .IP "\fB\-gdwarf64\fR" 4
  .IX Item "-gdwarf64"
  .PD
! If \s-1DWARF\s0 debugging information is enabled, the \fB\-gdwarf32\fR selects
! the 32\-bit \s-1DWARF\s0 format and the \fB\-gdwarf64\fR selects the 64\-bit
! \&\s-1DWARF\s0 format.  The default is target specific, on most targets it is
! \&\fB\-gdwarf32\fR though.  The 32\-bit \s-1DWARF\s0 format is smaller, but
! can't support more than 2GiB of debug information in any of the \s-1DWARF\s0
! debug information sections.  The 64\-bit \s-1DWARF\s0 format allows larger debug
  information and might not be well supported by all consumers yet.
! .IP "\fB\-gdescribe\-dies\fR" 4
  .IX Item "-gdescribe-dies"
! Add description attributes to some \s-1DWARF\s0 DIEs that have no name attribute,
  such as artificial variables, external references and call site
  parameter DIEs.
! .IP "\fB\-gpubnames\fR" 4
  .IX Item "-gpubnames"
! Generate \s-1DWARF\s0 \f(CW\*(C`.debug_pubnames\*(C'\fR and \f(CW\*(C`.debug_pubtypes\*(C'\fR sections.
! .IP "\fB\-ggnu\-pubnames\fR" 4
  .IX Item "-ggnu-pubnames"
  Generate \f(CW\*(C`.debug_pubnames\*(C'\fR and \f(CW\*(C`.debug_pubtypes\*(C'\fR sections in a format
! suitable for conversion into a \s-1GDB\s0 index.  This option is only useful
! with a linker that can produce \s-1GDB\s0 index version 7.
! .IP "\fB\-fdebug\-types\-section\fR" 4
  .IX Item "-fdebug-types-section"
! When using \s-1DWARF\s0 Version 4 or higher, type DIEs can be put into
  their own \f(CW\*(C`.debug_types\*(C'\fR section instead of making them part of the
  \&\f(CW\*(C`.debug_info\*(C'\fR section.  It is more efficient to put them in a separate
  comdat section since the linker can then remove duplicates.
! But not all \s-1DWARF\s0 consumers support \f(CW\*(C`.debug_types\*(C'\fR sections yet
  and on some objects \f(CW\*(C`.debug_types\*(C'\fR produces larger instead of smaller
  debugging information.
! .IP "\fB\-grecord\-gcc\-switches\fR" 4
  .IX Item "-grecord-gcc-switches"
  .PD 0
! .IP "\fB\-gno\-record\-gcc\-switches\fR" 4
  .IX Item "-gno-record-gcc-switches"
  .PD
! This switch causes the command-line options used to invoke the
  compiler that may affect code generation to be appended to the
! DW_AT_producer attribute in \s-1DWARF\s0 debugging information.  The options
  are concatenated with spaces separating them from each other and from
  the compiler version.
  It is enabled by default.
  See also \fB\-frecord\-gcc\-switches\fR for another
  way of storing compiler options into the object file.
! .IP "\fB\-gstrict\-dwarf\fR" 4
  .IX Item "-gstrict-dwarf"
! Disallow using extensions of later \s-1DWARF\s0 standard version than selected
! with \fB\-gdwarf\-\fR\fIversion\fR.  On most targets using non-conflicting
! \&\s-1DWARF\s0 extensions from later standard versions is allowed.
! .IP "\fB\-gno\-strict\-dwarf\fR" 4
  .IX Item "-gno-strict-dwarf"
! Allow using extensions of later \s-1DWARF\s0 standard version than selected with
  \&\fB\-gdwarf\-\fR\fIversion\fR.
! .IP "\fB\-gas\-loc\-support\fR" 4
  .IX Item "-gas-loc-support"
  Inform the compiler that the assembler supports \f(CW\*(C`.loc\*(C'\fR directives.
! It may then use them for the assembler to generate \s-1DWARF2+\s0 line number
  tables.
  .Sp
! This is generally desirable, because assembler-generated line-number
  tables are a lot more compact than those the compiler can generate
  itself.
  .Sp
! This option will be enabled by default if, at \s-1GCC\s0 configure time, the
  assembler was found to support such directives.
! .IP "\fB\-gno\-as\-loc\-support\fR" 4
  .IX Item "-gno-as-loc-support"
! Force \s-1GCC\s0 to generate \s-1DWARF2+\s0 line number tables internally, if \s-1DWARF2+\s0
  line number tables are to be generated.
! .IP "\fB\-gas\-locview\-support\fR" 4
  .IX Item "-gas-locview-support"
  Inform the compiler that the assembler supports \f(CW\*(C`view\*(C'\fR assignment
  and reset assertion checking in \f(CW\*(C`.loc\*(C'\fR directives.
  .Sp
! This option will be enabled by default if, at \s-1GCC\s0 configure time, the
  assembler was found to support them.
! .IP "\fB\-gno\-as\-locview\-support\fR" 4
  .IX Item "-gno-as-locview-support"
! Force \s-1GCC\s0 to assign view numbers internally, if
  \&\fB\-gvariable\-location\-views\fR are explicitly requested.
! .IP "\fB\-gcolumn\-info\fR" 4
  .IX Item "-gcolumn-info"
  .PD 0
! .IP "\fB\-gno\-column\-info\fR" 4
  .IX Item "-gno-column-info"
  .PD
! Emit location column information into \s-1DWARF\s0 debugging information, rather
  than just file and line.
  This option is enabled by default.
! .IP "\fB\-gstatement\-frontiers\fR" 4
  .IX Item "-gstatement-frontiers"
  .PD 0
! .IP "\fB\-gno\-statement\-frontiers\fR" 4
  .IX Item "-gno-statement-frontiers"
  .PD
! This option causes \s-1GCC\s0 to create markers in the internal representation
  at the beginning of statements, and to keep them roughly in place
  throughout compilation, using them to guide the output of \f(CW\*(C`is_stmt\*(C'\fR
  markers in the line number table.  This is enabled by default when
  compiling with optimization (\fB\-Os\fR, \fB\-O1\fR, \fB\-O2\fR,
! \&...), and outputting \s-1DWARF 2\s0 debug information at the normal level.
! .IP "\fB\-gvariable\-location\-views\fR" 4
  .IX Item "-gvariable-location-views"
  .PD 0
! .IP "\fB\-gvariable\-location\-views=incompat5\fR" 4
  .IX Item "-gvariable-location-views=incompat5"
! .IP "\fB\-gno\-variable\-location\-views\fR" 4
  .IX Item "-gno-variable-location-views"
  .PD
  Augment variable location lists with progressive view numbers implied
--- 11529,11664 ----
  It is enabled by default when compiling with optimization (\fB\-Os\fR,
  \&\fB\-O\fR, \fB\-O2\fR, ...), debugging information (\fB\-g\fR) and
  the debug info format supports it.
! .IP \fB\-fvar\-tracking\-assignments\fR 4
  .IX Item "-fvar-tracking-assignments"
  Annotate assignments to user variables early in the compilation and
  attempt to carry the annotations over throughout the compilation all the
  way to the end, in an attempt to improve debug information while
  optimizing.  Use of \fB\-gdwarf\-4\fR is recommended along with it.
  .Sp
! It can be enabled even if var\-tracking is disabled, in which case
  annotations are created and maintained, but discarded at the end.
  By default, this flag is enabled together with \fB\-fvar\-tracking\fR,
  except when selective scheduling is enabled.
! .IP \fB\-gsplit\-dwarf\fR 4
  .IX Item "-gsplit-dwarf"
! If DWARF debugging information is enabled, separate as much debugging
  information as possible into a separate output file with the extension
  \&\fI.dwo\fR.  This option allows the build system to avoid linking files with
  debug information.  To be useful, this option requires a debugger capable of
  reading \fI.dwo\fR files.
! .IP \fB\-gdwarf32\fR 4
  .IX Item "-gdwarf32"
  .PD 0
! .IP \fB\-gdwarf64\fR 4
  .IX Item "-gdwarf64"
  .PD
! If DWARF debugging information is enabled, the \fB\-gdwarf32\fR selects
! the 32\-bit DWARF format and the \fB\-gdwarf64\fR selects the 64\-bit
! DWARF format.  The default is target specific, on most targets it is
! \&\fB\-gdwarf32\fR though.  The 32\-bit DWARF format is smaller, but
! can\*(Aqt support more than 2GiB of debug information in any of the DWARF
! debug information sections.  The 64\-bit DWARF format allows larger debug
  information and might not be well supported by all consumers yet.
! .IP \fB\-gdescribe\-dies\fR 4
  .IX Item "-gdescribe-dies"
! Add description attributes to some DWARF DIEs that have no name attribute,
  such as artificial variables, external references and call site
  parameter DIEs.
! .IP \fB\-gpubnames\fR 4
  .IX Item "-gpubnames"
! Generate DWARF \f(CW\*(C`.debug_pubnames\*(C'\fR and \f(CW\*(C`.debug_pubtypes\*(C'\fR sections.
! .IP \fB\-ggnu\-pubnames\fR 4
  .IX Item "-ggnu-pubnames"
  Generate \f(CW\*(C`.debug_pubnames\*(C'\fR and \f(CW\*(C`.debug_pubtypes\*(C'\fR sections in a format
! suitable for conversion into a GDB index.  This option is only useful
! with a linker that can produce GDB index version 7.
! .IP \fB\-fdebug\-types\-section\fR 4
  .IX Item "-fdebug-types-section"
! When using DWARF Version 4 or higher, type DIEs can be put into
  their own \f(CW\*(C`.debug_types\*(C'\fR section instead of making them part of the
  \&\f(CW\*(C`.debug_info\*(C'\fR section.  It is more efficient to put them in a separate
  comdat section since the linker can then remove duplicates.
! But not all DWARF consumers support \f(CW\*(C`.debug_types\*(C'\fR sections yet
  and on some objects \f(CW\*(C`.debug_types\*(C'\fR produces larger instead of smaller
  debugging information.
! .IP \fB\-grecord\-gcc\-switches\fR 4
  .IX Item "-grecord-gcc-switches"
  .PD 0
! .IP \fB\-gno\-record\-gcc\-switches\fR 4
  .IX Item "-gno-record-gcc-switches"
  .PD
! This switch causes the command\-line options used to invoke the
  compiler that may affect code generation to be appended to the
! DW_AT_producer attribute in DWARF debugging information.  The options
  are concatenated with spaces separating them from each other and from
  the compiler version.
  It is enabled by default.
  See also \fB\-frecord\-gcc\-switches\fR for another
  way of storing compiler options into the object file.
! .IP \fB\-gstrict\-dwarf\fR 4
  .IX Item "-gstrict-dwarf"
! Disallow using extensions of later DWARF standard version than selected
! with \fB\-gdwarf\-\fR\fIversion\fR.  On most targets using non\-conflicting
! DWARF extensions from later standard versions is allowed.
! .IP \fB\-gno\-strict\-dwarf\fR 4
  .IX Item "-gno-strict-dwarf"
! Allow using extensions of later DWARF standard version than selected with
  \&\fB\-gdwarf\-\fR\fIversion\fR.
! .IP \fB\-gas\-loc\-support\fR 4
  .IX Item "-gas-loc-support"
  Inform the compiler that the assembler supports \f(CW\*(C`.loc\*(C'\fR directives.
! It may then use them for the assembler to generate DWARF2+ line number
  tables.
  .Sp
! This is generally desirable, because assembler\-generated line\-number
  tables are a lot more compact than those the compiler can generate
  itself.
  .Sp
! This option will be enabled by default if, at GCC configure time, the
  assembler was found to support such directives.
! .IP \fB\-gno\-as\-loc\-support\fR 4
  .IX Item "-gno-as-loc-support"
! Force GCC to generate DWARF2+ line number tables internally, if DWARF2+
  line number tables are to be generated.
! .IP \fB\-gas\-locview\-support\fR 4
  .IX Item "-gas-locview-support"
  Inform the compiler that the assembler supports \f(CW\*(C`view\*(C'\fR assignment
  and reset assertion checking in \f(CW\*(C`.loc\*(C'\fR directives.
  .Sp
! This option will be enabled by default if, at GCC configure time, the
  assembler was found to support them.
! .IP \fB\-gno\-as\-locview\-support\fR 4
  .IX Item "-gno-as-locview-support"
! Force GCC to assign view numbers internally, if
  \&\fB\-gvariable\-location\-views\fR are explicitly requested.
! .IP \fB\-gcolumn\-info\fR 4
  .IX Item "-gcolumn-info"
  .PD 0
! .IP \fB\-gno\-column\-info\fR 4
  .IX Item "-gno-column-info"
  .PD
! Emit location column information into DWARF debugging information, rather
  than just file and line.
  This option is enabled by default.
! .IP \fB\-gstatement\-frontiers\fR 4
  .IX Item "-gstatement-frontiers"
  .PD 0
! .IP \fB\-gno\-statement\-frontiers\fR 4
  .IX Item "-gno-statement-frontiers"
  .PD
! This option causes GCC to create markers in the internal representation
  at the beginning of statements, and to keep them roughly in place
  throughout compilation, using them to guide the output of \f(CW\*(C`is_stmt\*(C'\fR
  markers in the line number table.  This is enabled by default when
  compiling with optimization (\fB\-Os\fR, \fB\-O1\fR, \fB\-O2\fR,
! \&...), and outputting DWARF 2 debug information at the normal level.
! .IP \fB\-gvariable\-location\-views\fR 4
  .IX Item "-gvariable-location-views"
  .PD 0
! .IP \fB\-gvariable\-location\-views=incompat5\fR 4
  .IX Item "-gvariable-location-views=incompat5"
! .IP \fB\-gno\-variable\-location\-views\fR 4
  .IX Item "-gno-variable-location-views"
  .PD
  Augment variable location lists with progressive view numbers implied
*************** associated with the corresponding source
*** 11735,11799 ****
  point.  If the assembler lacks support for view numbers in line number
  tables, this will cause the compiler to emit the line number table,
  which generally makes them somewhat less compact.  The augmented line
! number tables and location lists are fully backward-compatible, so they
  can be consumed by debug information consumers that are not aware of
! these augmentations, but they won't derive any benefit from them either.
  .Sp
! This is enabled by default when outputting \s-1DWARF 2\s0 debug information at
  the normal level, as long as there is assembler support,
  \&\fB\-fvar\-tracking\-assignments\fR is enabled and
  \&\fB\-gstrict\-dwarf\fR is not.  When assembler support is not
! available, this may still be enabled, but it will force \s-1GCC\s0 to output
  internal line number tables, and if
  \&\fB\-ginternal\-reset\-location\-views\fR is not enabled, that will most
  certainly lead to silently mismatching location views.
  .Sp
  There is a proposed representation for view numbers that is not backward
! compatible with the location list format introduced in \s-1DWARF 5,\s0 that can
  be enabled with \fB\-gvariable\-location\-views=incompat5\fR.  This
  option may be removed in the future, is only provided as a reference
  implementation of the proposed representation.  Debug information
  consumers are not expected to support this extended format, and they
  would be rendered unable to decode location lists using it.
! .IP "\fB\-ginternal\-reset\-location\-views\fR" 4
  .IX Item "-ginternal-reset-location-views"
  .PD 0
! .IP "\fB\-gno\-internal\-reset\-location\-views\fR" 4
  .IX Item "-gno-internal-reset-location-views"
  .PD
  Attempt to determine location views that can be omitted from location
  view lists.  This requires the compiler to have very accurate insn
! length estimates, which isn't always the case, and it may cause
  incorrect view lists to be generated silently when using an assembler
! that does not support location view lists.  The \s-1GNU\s0 assembler will flag
  any such error as a \f(CW\*(C`view number mismatch\*(C'\fR.  This is only enabled
  on ports that define a reliable estimation function.
! .IP "\fB\-ginline\-points\fR" 4
  .IX Item "-ginline-points"
  .PD 0
! .IP "\fB\-gno\-inline\-points\fR" 4
  .IX Item "-gno-inline-points"
  .PD
  Generate extended debug information for inlined functions.  Location
  view tracking markers are inserted at inlined entry points, so that
  address and view numbers can be computed and output in debug
  information.  This can be enabled independently of location views, in
! which case the view numbers won't be output, but it can only be enabled
  along with statement frontiers, and it is only enabled by default if
  location views are enabled.
! .IP "\fB\-gz\fR[\fB=\fR\fItype\fR]" 4
  .IX Item "-gz[=type]"
! Produce compressed debug sections in \s-1DWARF\s0 format, if that is supported.
  If \fItype\fR is not given, the default type depends on the capabilities
  of the assembler and linker used.  \fItype\fR may be one of
! \&\fBnone\fR (don't compress debug sections), or \fBzlib\fR (use zlib
! compression in \s-1ELF\s0 gABI format).  If the linker doesn't support writing
  compressed debug sections, the option is rejected.  Otherwise, if the
  assembler does not support them, \fB\-gz\fR is silently ignored when
  producing object files.
! .IP "\fB\-femit\-struct\-debug\-baseonly\fR" 4
  .IX Item "-femit-struct-debug-baseonly"
! Emit debug information for struct-like types
  only when the base name of the compilation source file
  matches the base name of file in which the struct is defined.
  .Sp
--- 11668,11732 ----
  point.  If the assembler lacks support for view numbers in line number
  tables, this will cause the compiler to emit the line number table,
  which generally makes them somewhat less compact.  The augmented line
! number tables and location lists are fully backward\-compatible, so they
  can be consumed by debug information consumers that are not aware of
! these augmentations, but they won\*(Aqt derive any benefit from them either.
  .Sp
! This is enabled by default when outputting DWARF 2 debug information at
  the normal level, as long as there is assembler support,
  \&\fB\-fvar\-tracking\-assignments\fR is enabled and
  \&\fB\-gstrict\-dwarf\fR is not.  When assembler support is not
! available, this may still be enabled, but it will force GCC to output
  internal line number tables, and if
  \&\fB\-ginternal\-reset\-location\-views\fR is not enabled, that will most
  certainly lead to silently mismatching location views.
  .Sp
  There is a proposed representation for view numbers that is not backward
! compatible with the location list format introduced in DWARF 5, that can
  be enabled with \fB\-gvariable\-location\-views=incompat5\fR.  This
  option may be removed in the future, is only provided as a reference
  implementation of the proposed representation.  Debug information
  consumers are not expected to support this extended format, and they
  would be rendered unable to decode location lists using it.
! .IP \fB\-ginternal\-reset\-location\-views\fR 4
  .IX Item "-ginternal-reset-location-views"
  .PD 0
! .IP \fB\-gno\-internal\-reset\-location\-views\fR 4
  .IX Item "-gno-internal-reset-location-views"
  .PD
  Attempt to determine location views that can be omitted from location
  view lists.  This requires the compiler to have very accurate insn
! length estimates, which isn\*(Aqt always the case, and it may cause
  incorrect view lists to be generated silently when using an assembler
! that does not support location view lists.  The GNU assembler will flag
  any such error as a \f(CW\*(C`view number mismatch\*(C'\fR.  This is only enabled
  on ports that define a reliable estimation function.
! .IP \fB\-ginline\-points\fR 4
  .IX Item "-ginline-points"
  .PD 0
! .IP \fB\-gno\-inline\-points\fR 4
  .IX Item "-gno-inline-points"
  .PD
  Generate extended debug information for inlined functions.  Location
  view tracking markers are inserted at inlined entry points, so that
  address and view numbers can be computed and output in debug
  information.  This can be enabled independently of location views, in
! which case the view numbers won\*(Aqt be output, but it can only be enabled
  along with statement frontiers, and it is only enabled by default if
  location views are enabled.
! .IP \fB\-gz\fR[\fB=\fR\fItype\fR] 4
  .IX Item "-gz[=type]"
! Produce compressed debug sections in DWARF format, if that is supported.
  If \fItype\fR is not given, the default type depends on the capabilities
  of the assembler and linker used.  \fItype\fR may be one of
! \&\fBnone\fR (don\*(Aqt compress debug sections), or \fBzlib\fR (use zlib
! compression in ELF gABI format).  If the linker doesn\*(Aqt support writing
  compressed debug sections, the option is rejected.  Otherwise, if the
  assembler does not support them, \fB\-gz\fR is silently ignored when
  producing object files.
! .IP \fB\-femit\-struct\-debug\-baseonly\fR 4
  .IX Item "-femit-struct-debug-baseonly"
! Emit debug information for struct\-like types
  only when the base name of the compilation source file
  matches the base name of file in which the struct is defined.
  .Sp
*************** but at significant potential loss in typ
*** 11802,11811 ****
  See \fB\-femit\-struct\-debug\-reduced\fR for a less aggressive option.
  See \fB\-femit\-struct\-debug\-detailed\fR for more detailed control.
  .Sp
! This option works only with \s-1DWARF\s0 debug output.
! .IP "\fB\-femit\-struct\-debug\-reduced\fR" 4
  .IX Item "-femit-struct-debug-reduced"
! Emit debug information for struct-like types
  only when the base name of the compilation source file
  matches the base name of file in which the type is defined,
  unless the struct is a template or defined in a system header.
--- 11735,11744 ----
  See \fB\-femit\-struct\-debug\-reduced\fR for a less aggressive option.
  See \fB\-femit\-struct\-debug\-detailed\fR for more detailed control.
  .Sp
! This option works only with DWARF debug output.
! .IP \fB\-femit\-struct\-debug\-reduced\fR 4
  .IX Item "-femit-struct-debug-reduced"
! Emit debug information for struct\-like types
  only when the base name of the compilation source file
  matches the base name of file in which the type is defined,
  unless the struct is a template or defined in a system header.
*************** with some potential loss in type informa
*** 11815,11824 ****
  See \fB\-femit\-struct\-debug\-baseonly\fR for a more aggressive option.
  See \fB\-femit\-struct\-debug\-detailed\fR for more detailed control.
  .Sp
! This option works only with \s-1DWARF\s0 debug output.
! .IP "\fB\-femit\-struct\-debug\-detailed\fR[\fB=\fR\fIspec-list\fR]" 4
  .IX Item "-femit-struct-debug-detailed[=spec-list]"
! Specify the struct-like types
  for which the compiler generates debug information.
  The intent is to reduce duplicate struct debug information
  between different object files within the same program.
--- 11748,11757 ----
  See \fB\-femit\-struct\-debug\-baseonly\fR for a more aggressive option.
  See \fB\-femit\-struct\-debug\-detailed\fR for more detailed control.
  .Sp
! This option works only with DWARF debug output.
! .IP \fB\-femit\-struct\-debug\-detailed\fR[\fB=\fR\fIspec\-list\fR] 4
  .IX Item "-femit-struct-debug-detailed[=spec-list]"
! Specify the struct\-like types
  for which the compiler generates debug information.
  The intent is to reduce duplicate struct debug information
  between different object files within the same program.
*************** An example is
*** 11840,11847 ****
  The optional second word limits the specification to
  ordinary structs (\fBord:\fR) or generic structs (\fBgen:\fR).
  Generic structs are a bit complicated to explain.
! For \*(C+, these are non-explicit specializations of template classes,
! or non-template classes within the above.
  Other programming languages have generics,
  but \fB\-femit\-struct\-debug\-detailed\fR does not yet implement them.
  .Sp
--- 11773,11780 ----
  The optional second word limits the specification to
  ordinary structs (\fBord:\fR) or generic structs (\fBgen:\fR).
  Generic structs are a bit complicated to explain.
! For C++, these are non\-explicit specializations of template classes,
! or non\-template classes within the above.
  Other programming languages have generics,
  but \fB\-femit\-struct\-debug\-detailed\fR does not yet implement them.
  .Sp
*************** You may need to experiment to determine
*** 11861,11876 ****
  .Sp
  The default is \fB\-femit\-struct\-debug\-detailed=all\fR.
  .Sp
! This option works only with \s-1DWARF\s0 debug output.
! .IP "\fB\-fno\-dwarf2\-cfi\-asm\fR" 4
  .IX Item "-fno-dwarf2-cfi-asm"
! Emit \s-1DWARF\s0 unwind info as compiler generated \f(CW\*(C`.eh_frame\*(C'\fR section
! instead of using \s-1GAS\s0 \f(CW\*(C`.cfi_*\*(C'\fR directives.
! .IP "\fB\-fno\-eliminate\-unused\-debug\-types\fR" 4
  .IX Item "-fno-eliminate-unused-debug-types"
! Normally, when producing \s-1DWARF\s0 output, \s-1GCC\s0 avoids producing debug symbol
  output for types that are nowhere used in the source file being compiled.
! Sometimes it is useful to have \s-1GCC\s0 emit debugging
  information for all types declared in a compilation
  unit, regardless of whether or not they are actually used
  in that compilation unit, for example
--- 11794,11809 ----
  .Sp
  The default is \fB\-femit\-struct\-debug\-detailed=all\fR.
  .Sp
! This option works only with DWARF debug output.
! .IP \fB\-fno\-dwarf2\-cfi\-asm\fR 4
  .IX Item "-fno-dwarf2-cfi-asm"
! Emit DWARF unwind info as compiler generated \f(CW\*(C`.eh_frame\*(C'\fR section
! instead of using GAS \f(CW\*(C`.cfi_*\*(C'\fR directives.
! .IP \fB\-fno\-eliminate\-unused\-debug\-types\fR 4
  .IX Item "-fno-eliminate-unused-debug-types"
! Normally, when producing DWARF output, GCC avoids producing debug symbol
  output for types that are nowhere used in the source file being compiled.
! Sometimes it is useful to have GCC emit debugging
  information for all types declared in a compilation
  unit, regardless of whether or not they are actually used
  in that compilation unit, for example
*************** however, this results in a significant a
*** 11881,11887 ****
  .IX Subsection "Options That Control Optimization"
  These options control various sorts of optimizations.
  .PP
! Without any optimization option, the compiler's goal is to reduce the
  cost of compilation and to make debugging produce the expected
  results.  Statements are independent: if you stop the program with a
  breakpoint between statements, you can then assign a new value to any
--- 11814,11820 ----
  .IX Subsection "Options That Control Optimization"
  These options control various sorts of optimizations.
  .PP
! Without any optimization option, the compiler\*(Aqs goal is to reduce the
  cost of compilation and to make debugging produce the expected
  results.  Statements are independent: if you stop the program with a
  breakpoint between statements, you can then assign a new value to any
*************** Most optimizations are completely disabl
*** 11906,11919 ****
  optimization flags are specified.  Similarly, \fB\-Og\fR suppresses
  many optimization passes.
  .PP
! Depending on the target and how \s-1GCC\s0 was configured, a slightly different
  set of optimizations may be enabled at each \fB\-O\fR level than
! those listed here.  You can invoke \s-1GCC\s0 with \fB\-Q \-\-help=optimizers\fR
  to find out the exact set of optimizations that are enabled at each level.
! .IP "\fB\-O\fR" 4
  .IX Item "-O"
  .PD 0
! .IP "\fB\-O1\fR" 4
  .IX Item "-O1"
  .PD
  Optimize.  Optimizing compilation takes somewhat more time, and a lot
--- 11839,11852 ----
  optimization flags are specified.  Similarly, \fB\-Og\fR suppresses
  many optimization passes.
  .PP
! Depending on the target and how GCC was configured, a slightly different
  set of optimizations may be enabled at each \fB\-O\fR level than
! those listed here.  You can invoke GCC with \fB\-Q \-\-help=optimizers\fR
  to find out the exact set of optimizations that are enabled at each level.
! .IP \fB\-O\fR 4
  .IX Item "-O"
  .PD 0
! .IP \fB\-O1\fR 4
  .IX Item "-O1"
  .PD
  Optimize.  Optimizing compilation takes somewhat more time, and a lot
*************** With \fB\-O\fR, the compiler tries to re
*** 11923,11929 ****
  time, without performing any optimizations that take a great deal of
  compilation time.
  .Sp
! \&\fB\-O\fR is the recommended optimization level for large machine-generated
  code as a sensible balance between time taken to compile and memory use:
  higher optimization levels perform optimizations with greater algorithmic
  complexity than at \fB\-O\fR.
--- 11856,11862 ----
  time, without performing any optimizations that take a great deal of
  compilation time.
  .Sp
! \&\fB\-O\fR is the recommended optimization level for large machine\-generated
  code as a sensible balance between time taken to compile and memory use:
  higher optimization levels perform optimizations with greater algorithmic
  complexity than at \fB\-O\fR.
*************** complexity than at \fB\-O\fR.
*** 11978,11987 ****
  \&\-ftree\-sra
  \&\-ftree\-ter
  \&\-funit\-at\-a\-time\fR
! .IP "\fB\-O2\fR" 4
  .IX Item "-O2"
! Optimize even more.  \s-1GCC\s0 performs nearly all supported optimizations
! that do not involve a space-speed tradeoff.
  As compared to \fB\-O\fR, this option increases both compilation time
  and the performance of the generated code.
  .Sp
--- 11911,11920 ----
  \&\-ftree\-sra
  \&\-ftree\-ter
  \&\-funit\-at\-a\-time\fR
! .IP \fB\-O2\fR 4
  .IX Item "-O2"
! Optimize even more.  GCC performs nearly all supported optimizations
! that do not involve a space\-speed tradeoff.
  As compared to \fB\-O\fR, this option increases both compilation time
  and the performance of the generated code.
  .Sp
*************** also turns on the following optimization
*** 12030,12036 ****
  .Sp
  Please note the warning under \fB\-fgcse\fR about
  invoking \fB\-O2\fR on programs that use computed gotos.
! .IP "\fB\-O3\fR" 4
  .IX Item "-O3"
  Optimize yet more.  \fB\-O3\fR turns on all optimizations specified
  by \fB\-O2\fR and also turns on the following optimization flags:
--- 11963,11969 ----
  .Sp
  Please note the warning under \fB\-fgcse\fR about
  invoking \fB\-O2\fR on programs that use computed gotos.
! .IP \fB\-O3\fR 4
  .IX Item "-O3"
  Optimize yet more.  \fB\-O3\fR turns on all optimizations specified
  by \fB\-O2\fR and also turns on the following optimization flags:
*************** by \fB\-O2\fR and also turns on the foll
*** 12048,12065 ****
  \&\-funswitch\-loops
  \&\-fvect\-cost\-model=dynamic
  \&\-fversion\-loops\-for\-strides\fR
! .IP "\fB\-O0\fR" 4
  .IX Item "-O0"
  Reduce compilation time and make debugging produce the expected
  results.  This is the default.
  .Sp
! At \fB\-O0\fR, \s-1GCC\s0 completely disables most optimization passes;
  they are not run even if you explicitly enable them on the command
  line, or are listed by \fB\-Q \-\-help=optimizers\fR as being enabled by
! default.  Many optimizations performed by \s-1GCC\s0 depend on code analysis
  or canonicalization passes that are enabled by \fB\-O\fR, and it would
  not be useful to run individual optimization passes in isolation.
! .IP "\fB\-Os\fR" 4
  .IX Item "-Os"
  Optimize for size.  \fB\-Os\fR enables all \fB\-O2\fR optimizations
  except those that often increase code size:
--- 11981,11998 ----
  \&\-funswitch\-loops
  \&\-fvect\-cost\-model=dynamic
  \&\-fversion\-loops\-for\-strides\fR
! .IP \fB\-O0\fR 4
  .IX Item "-O0"
  Reduce compilation time and make debugging produce the expected
  results.  This is the default.
  .Sp
! At \fB\-O0\fR, GCC completely disables most optimization passes;
  they are not run even if you explicitly enable them on the command
  line, or are listed by \fB\-Q \-\-help=optimizers\fR as being enabled by
! default.  Many optimizations performed by GCC depend on code analysis
  or canonicalization passes that are enabled by \fB\-O\fR, and it would
  not be useful to run individual optimization passes in isolation.
! .IP \fB\-Os\fR 4
  .IX Item "-Os"
  Optimize for size.  \fB\-Os\fR enables all \fB\-O2\fR optimizations
  except those that often increase code size:
*************** except those that often increase code si
*** 12071,12089 ****
  It also enables \fB\-finline\-functions\fR, causes the compiler to tune for
  code size rather than execution speed, and performs further optimizations
  designed to reduce code size.
! .IP "\fB\-Ofast\fR" 4
  .IX Item "-Ofast"
  Disregard strict standards compliance.  \fB\-Ofast\fR enables all
  \&\fB\-O3\fR optimizations.  It also enables optimizations that are not
! valid for all standard-compliant programs.
  It turns on \fB\-ffast\-math\fR, \fB\-fallow\-store\-data\-races\fR
! and the Fortran-specific \fB\-fstack\-arrays\fR, unless
  \&\fB\-fmax\-stack\-var\-size\fR is specified, and \fB\-fno\-protect\-parens\fR.
  It turns off \fB\-fsemantic\-interposition\fR.
! .IP "\fB\-Og\fR" 4
  .IX Item "-Og"
  Optimize debugging experience.  \fB\-Og\fR should be the optimization
! level of choice for the standard edit-compile-debug cycle, offering
  a reasonable level of optimization while maintaining fast compilation
  and a good debugging experience.  It is a better choice than \fB\-O0\fR
  for producing debuggable code because some compiler passes
--- 12004,12022 ----
  It also enables \fB\-finline\-functions\fR, causes the compiler to tune for
  code size rather than execution speed, and performs further optimizations
  designed to reduce code size.
! .IP \fB\-Ofast\fR 4
  .IX Item "-Ofast"
  Disregard strict standards compliance.  \fB\-Ofast\fR enables all
  \&\fB\-O3\fR optimizations.  It also enables optimizations that are not
! valid for all standard\-compliant programs.
  It turns on \fB\-ffast\-math\fR, \fB\-fallow\-store\-data\-races\fR
! and the Fortran\-specific \fB\-fstack\-arrays\fR, unless
  \&\fB\-fmax\-stack\-var\-size\fR is specified, and \fB\-fno\-protect\-parens\fR.
  It turns off \fB\-fsemantic\-interposition\fR.
! .IP \fB\-Og\fR 4
  .IX Item "-Og"
  Optimize debugging experience.  \fB\-Og\fR should be the optimization
! level of choice for the standard edit\-compile\-debug cycle, offering
  a reasonable level of optimization while maintaining fast compilation
  and a good debugging experience.  It is a better choice than \fB\-O0\fR
  for producing debuggable code because some compiler passes
*************** optimization flags except for those that
*** 12099,12105 ****
  \&\-finline\-functions\-called\-once
  \&\-fmove\-loop\-invariants  \-fmove\-loop\-stores  \-fssa\-phiopt
  \&\-ftree\-bit\-ccp  \-ftree\-dse  \-ftree\-pta  \-ftree\-sra\fR
! .IP "\fB\-Oz\fR" 4
  .IX Item "-Oz"
  Optimize aggressively for size rather than speed.  This may increase
  the number of instructions executed if those instructions require
--- 12032,12038 ----
  \&\-finline\-functions\-called\-once
  \&\-fmove\-loop\-invariants  \-fmove\-loop\-stores  \-fssa\-phiopt
  \&\-ftree\-bit\-ccp  \-ftree\-dse  \-ftree\-pta  \-ftree\-sra\fR
! .IP \fB\-Oz\fR 4
  .IX Item "-Oz"
  Optimize aggressively for size rather than speed.  This may increase
  the number of instructions executed if those instructions require
*************** including enabling most \fB\-O2\fR optim
*** 12109,12115 ****
  If you use multiple \fB\-O\fR options, with or without level numbers,
  the last such option is the one that is effective.
  .PP
! Options of the form \fB\-f\fR\fIflag\fR specify machine-independent
  flags.  Most flags have both positive and negative forms; the negative
  form of \fB\-ffoo\fR is \fB\-fno\-foo\fR.  In the table
  below, only one of the forms is listed\-\-\-the one you typically
--- 12042,12048 ----
  If you use multiple \fB\-O\fR options, with or without level numbers,
  the last such option is the one that is effective.
  .PP
! Options of the form \fB\-f\fR\fIflag\fR specify machine\-independent
  flags.  Most flags have both positive and negative forms; the negative
  form of \fB\-ffoo\fR is \fB\-fno\-foo\fR.  In the table
  below, only one of the forms is listed\-\-\-the one you typically
*************** or adding it.
*** 12118,12145 ****
  .PP
  The following options control specific optimizations.  They are either
  activated by \fB\-O\fR options or are related to ones that are.  You
! can use the following flags in the rare cases when \*(L"fine-tuning\*(R" of
  optimizations to be performed is desired.
! .IP "\fB\-fno\-defer\-pop\fR" 4
  .IX Item "-fno-defer-pop"
  For machines that must pop arguments after a function call, always pop
  the arguments as soon as each function returns.
  At levels \fB\-O1\fR and higher, \fB\-fdefer\-pop\fR is the default;
  this allows the compiler to let arguments accumulate on the stack for several
  function calls and pop them all at once.
! .IP "\fB\-fforward\-propagate\fR" 4
  .IX Item "-fforward-propagate"
! Perform a forward propagation pass on \s-1RTL.\s0  The pass tries to combine two
  instructions and checks if the result can be simplified.  If loop unrolling
  is active, two passes are performed and the second is scheduled after
  loop unrolling.
  .Sp
  This option is enabled by default at optimization levels \fB\-O1\fR,
  \&\fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-favoid\-store\-forwarding\fR" 4
  .IX Item "-favoid-store-forwarding"
  .PD 0
! .IP "\fB\-fno\-avoid\-store\-forwarding\fR" 4
  .IX Item "-fno-avoid-store-forwarding"
  .PD
  Many CPUs will stall for many cycles when a load partially depends on previous
--- 12051,12078 ----
  .PP
  The following options control specific optimizations.  They are either
  activated by \fB\-O\fR options or are related to ones that are.  You
! can use the following flags in the rare cases when "fine\-tuning" of
  optimizations to be performed is desired.
! .IP \fB\-fno\-defer\-pop\fR 4
  .IX Item "-fno-defer-pop"
  For machines that must pop arguments after a function call, always pop
  the arguments as soon as each function returns.
  At levels \fB\-O1\fR and higher, \fB\-fdefer\-pop\fR is the default;
  this allows the compiler to let arguments accumulate on the stack for several
  function calls and pop them all at once.
! .IP \fB\-fforward\-propagate\fR 4
  .IX Item "-fforward-propagate"
! Perform a forward propagation pass on RTL.  The pass tries to combine two
  instructions and checks if the result can be simplified.  If loop unrolling
  is active, two passes are performed and the second is scheduled after
  loop unrolling.
  .Sp
  This option is enabled by default at optimization levels \fB\-O1\fR,
  \&\fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-favoid\-store\-forwarding\fR 4
  .IX Item "-favoid-store-forwarding"
  .PD 0
! .IP \fB\-fno\-avoid\-store\-forwarding\fR 4
  .IX Item "-fno-avoid-store-forwarding"
  .PD
  Many CPUs will stall for many cycles when a load partially depends on previous
*************** smaller stores.  This pass tries to dete
*** 12147,12204 ****
  changing the order of the load and store and then fixing up the loaded value.
  .Sp
  Disabled by default.
! .IP "\fB\-ffp\-contract=\fR\fIstyle\fR" 4
  .IX Item "-ffp-contract=style"
! \&\fB\-ffp\-contract=off\fR disables floating-point expression contraction.
! \&\fB\-ffp\-contract=fast\fR enables floating-point expression contraction
! such as forming of fused multiply-add operations if the target has
  native support for them.
! \&\fB\-ffp\-contract=on\fR enables floating-point expression contraction
! if allowed by the language standard.  This is implemented for C and \*(C+,
  where it enables contraction within one expression, but not across
  different statements.
  .Sp
  The default is \fB\-ffp\-contract=off\fR for C in a standards compliant mode
  (\fB\-std=c11\fR or similar), \fB\-ffp\-contract=fast\fR otherwise.
! .IP "\fB\-fomit\-frame\-pointer\fR" 4
  .IX Item "-fomit-frame-pointer"
! Omit the frame pointer in functions that don't need one.  This avoids the
  instructions to save, set up and restore the frame pointer; on many targets
  it also makes an extra register available.
  .Sp
  On some targets this flag has no effect because the standard calling sequence
  always uses a frame pointer, so it cannot be omitted.
  .Sp
! Note that \fB\-fno\-omit\-frame\-pointer\fR doesn't guarantee the frame pointer
  is used in all functions.  Several targets always omit the frame pointer in
  leaf functions.
  .Sp
  Enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-foptimize\-crc\fR" 4
  .IX Item "-foptimize-crc"
! Detect loops calculating \s-1CRC\s0 (performing polynomial long division) and
! replace them with a faster implementation.  Detect 8, 16, 32, and 64 bit \s-1CRC,\s0
  with a constant polynomial without the leading 1 bit,
! for both bit-forward and bit-reversed cases.
! If the target supports a \s-1CRC\s0 instruction and the polynomial used in the source
! code matches the polynomial used in the \s-1CRC\s0 instruction, generate that \s-1CRC\s0
! instruction.  Otherwise, if the target supports a carry-less-multiplication
! instruction, generate \s-1CRC\s0 using it; otherwise generate table-based \s-1CRC.\s0
  .Sp
  Enabled by default at \fB\-O2\fR and higher.
! .IP "\fB\-foptimize\-sibling\-calls\fR" 4
  .IX Item "-foptimize-sibling-calls"
  Optimize sibling and tail recursive calls.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-foptimize\-strlen\fR" 4
  .IX Item "-foptimize-strlen"
  Optimize various standard C string functions (e.g. \f(CW\*(C`strlen\*(C'\fR,
  \&\f(CW\*(C`strchr\*(C'\fR or \f(CW\*(C`strcpy\*(C'\fR) and
  their \f(CW\*(C`_FORTIFY_SOURCE\*(C'\fR counterparts into faster alternatives.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP "\fB\-finline\-stringops[=\fR\fIfn\fR\fB]\fR" 4
  .IX Item "-finline-stringops[=fn]"
  Expand memory and string operations (for now, only \f(CW\*(C`memset\*(C'\fR)
  inline, even when the length is variable or big enough as to require
--- 12080,12137 ----
  changing the order of the load and store and then fixing up the loaded value.
  .Sp
  Disabled by default.
! .IP \fB\-ffp\-contract=\fR\fIstyle\fR 4
  .IX Item "-ffp-contract=style"
! \&\fB\-ffp\-contract=off\fR disables floating\-point expression contraction.
! \&\fB\-ffp\-contract=fast\fR enables floating\-point expression contraction
! such as forming of fused multiply\-add operations if the target has
  native support for them.
! \&\fB\-ffp\-contract=on\fR enables floating\-point expression contraction
! if allowed by the language standard.  This is implemented for C and C++,
  where it enables contraction within one expression, but not across
  different statements.
  .Sp
  The default is \fB\-ffp\-contract=off\fR for C in a standards compliant mode
  (\fB\-std=c11\fR or similar), \fB\-ffp\-contract=fast\fR otherwise.
! .IP \fB\-fomit\-frame\-pointer\fR 4
  .IX Item "-fomit-frame-pointer"
! Omit the frame pointer in functions that don\*(Aqt need one.  This avoids the
  instructions to save, set up and restore the frame pointer; on many targets
  it also makes an extra register available.
  .Sp
  On some targets this flag has no effect because the standard calling sequence
  always uses a frame pointer, so it cannot be omitted.
  .Sp
! Note that \fB\-fno\-omit\-frame\-pointer\fR doesn\*(Aqt guarantee the frame pointer
  is used in all functions.  Several targets always omit the frame pointer in
  leaf functions.
  .Sp
  Enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-foptimize\-crc\fR 4
  .IX Item "-foptimize-crc"
! Detect loops calculating CRC (performing polynomial long division) and
! replace them with a faster implementation.  Detect 8, 16, 32, and 64 bit CRC,
  with a constant polynomial without the leading 1 bit,
! for both bit\-forward and bit\-reversed cases.
! If the target supports a CRC instruction and the polynomial used in the source
! code matches the polynomial used in the CRC instruction, generate that CRC
! instruction.  Otherwise, if the target supports a carry\-less\-multiplication
! instruction, generate CRC using it; otherwise generate table\-based CRC.
  .Sp
  Enabled by default at \fB\-O2\fR and higher.
! .IP \fB\-foptimize\-sibling\-calls\fR 4
  .IX Item "-foptimize-sibling-calls"
  Optimize sibling and tail recursive calls.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-foptimize\-strlen\fR 4
  .IX Item "-foptimize-strlen"
  Optimize various standard C string functions (e.g. \f(CW\*(C`strlen\*(C'\fR,
  \&\f(CW\*(C`strchr\*(C'\fR or \f(CW\*(C`strcpy\*(C'\fR) and
  their \f(CW\*(C`_FORTIFY_SOURCE\*(C'\fR counterparts into faster alternatives.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP \fB\-finline\-stringops[=\fR\fIfn\fR\fB]\fR 4
  .IX Item "-finline-stringops[=fn]"
  Expand memory and string operations (for now, only \f(CW\*(C`memset\*(C'\fR)
  inline, even when the length is variable or big enough as to require
*************** it may be less efficient than optimized
*** 12211,12217 ****
  grow code size so much that even a less performant but shared
  implementation runs faster due to better use of code caches.  This
  option is disabled by default.
! .IP "\fB\-fno\-inline\fR" 4
  .IX Item "-fno-inline"
  Do not expand any functions inline apart from those marked with
  the \f(CW\*(C`always_inline\*(C'\fR attribute.  This is the default when not
--- 12144,12150 ----
  grow code size so much that even a less performant but shared
  implementation runs faster due to better use of code caches.  This
  option is disabled by default.
! .IP \fB\-fno\-inline\fR 4
  .IX Item "-fno-inline"
  Do not expand any functions inline apart from those marked with
  the \f(CW\*(C`always_inline\*(C'\fR attribute.  This is the default when not
*************** optimizing.
*** 12219,12225 ****
  .Sp
  Single functions can be exempted from inlining by marking them
  with the \f(CW\*(C`noinline\*(C'\fR attribute.
! .IP "\fB\-finline\-small\-functions\fR" 4
  .IX Item "-finline-small-functions"
  Integrate functions into their callers when their body is smaller than expected
  function call code (so overall size of program gets smaller).  The compiler
--- 12152,12158 ----
  .Sp
  Single functions can be exempted from inlining by marking them
  with the \f(CW\*(C`noinline\*(C'\fR attribute.
! .IP \fB\-finline\-small\-functions\fR 4
  .IX Item "-finline-small-functions"
  Integrate functions into their callers when their body is smaller than expected
  function call code (so overall size of program gets smaller).  The compiler
*************** in this way.  This inlining applies to a
*** 12228,12234 ****
  inline.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-findirect\-inlining\fR" 4
  .IX Item "-findirect-inlining"
  Inline also indirect calls that are discovered to be known at compile
  time thanks to previous inlining.  This option has any effect only
--- 12161,12167 ----
  inline.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-findirect\-inlining\fR 4
  .IX Item "-findirect-inlining"
  Inline also indirect calls that are discovered to be known at compile
  time thanks to previous inlining.  This option has any effect only
*************** when inlining itself is turned on by the
*** 12236,12242 ****
  or \fB\-finline\-small\-functions\fR options.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-finline\-functions\fR" 4
  .IX Item "-finline-functions"
  Consider all functions for inlining, even if they are not declared inline.
  The compiler heuristically decides which functions are worth integrating
--- 12169,12175 ----
  or \fB\-finline\-small\-functions\fR options.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-finline\-functions\fR 4
  .IX Item "-finline-functions"
  Consider all functions for inlining, even if they are not declared inline.
  The compiler heuristically decides which functions are worth integrating
*************** assembler code in its own right.
*** 12248,12254 ****
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.  Also enabled
  by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-finline\-functions\-called\-once\fR" 4
  .IX Item "-finline-functions-called-once"
  Consider all \f(CW\*(C`static\*(C'\fR functions called once for inlining into their
  caller even if they are not marked \f(CW\*(C`inline\*(C'\fR.  If a call to a given
--- 12181,12187 ----
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.  Also enabled
  by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-finline\-functions\-called\-once\fR 4
  .IX Item "-finline-functions-called-once"
  Consider all \f(CW\*(C`static\*(C'\fR functions called once for inlining into their
  caller even if they are not marked \f(CW\*(C`inline\*(C'\fR.  If a call to a given
*************** in its own right.
*** 12257,12263 ****
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR and \fB\-Os\fR,
  but not \fB\-Og\fR.
! .IP "\fB\-fearly\-inlining\fR" 4
  .IX Item "-fearly-inlining"
  Inline functions marked by \f(CW\*(C`always_inline\*(C'\fR and functions whose body seems
  smaller than the function call overhead early before doing
--- 12190,12196 ----
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR and \fB\-Os\fR,
  but not \fB\-Og\fR.
! .IP \fB\-fearly\-inlining\fR 4
  .IX Item "-fearly-inlining"
  Inline functions marked by \f(CW\*(C`always_inline\*(C'\fR and functions whose body seems
  smaller than the function call overhead early before doing
*************** makes profiling significantly cheaper an
*** 12266,12281 ****
  having large chains of nested wrapper functions.
  .Sp
  Enabled by default.
! .IP "\fB\-fipa\-sra\fR" 4
  .IX Item "-fipa-sra"
  Perform interprocedural scalar replacement of aggregates, removal of
  unused parameters and replacement of parameters passed by reference
  by parameters passed by value.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR and \fB\-Os\fR.
! .IP "\fB\-finline\-limit=\fR\fIn\fR" 4
  .IX Item "-finline-limit=n"
! By default, \s-1GCC\s0 limits the size of functions that can be inlined.  This flag
  allows coarse control of this limit.  \fIn\fR is the size of functions that
  can be inlined in number of pseudo instructions.
  .Sp
--- 12199,12214 ----
  having large chains of nested wrapper functions.
  .Sp
  Enabled by default.
! .IP \fB\-fipa\-sra\fR 4
  .IX Item "-fipa-sra"
  Perform interprocedural scalar replacement of aggregates, removal of
  unused parameters and replacement of parameters passed by reference
  by parameters passed by value.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR and \fB\-Os\fR.
! .IP \fB\-finline\-limit=\fR\fIn\fR 4
  .IX Item "-finline-limit=n"
! By default, GCC limits the size of functions that can be inlined.  This flag
  allows coarse control of this limit.  \fIn\fR is the size of functions that
  can be inlined in number of pseudo instructions.
  .Sp
*************** specified individually by using \fB\-\-p
*** 12284,12293 ****
  The \fB\-finline\-limit=\fR\fIn\fR option sets some of these parameters
  as follows:
  .RS 4
! .IP "\fBmax-inline-insns-single\fR" 4
  .IX Item "max-inline-insns-single"
  is set to \fIn\fR/2.
! .IP "\fBmax-inline-insns-auto\fR" 4
  .IX Item "max-inline-insns-auto"
  is set to \fIn\fR/2.
  .RE
--- 12217,12226 ----
  The \fB\-finline\-limit=\fR\fIn\fR option sets some of these parameters
  as follows:
  .RS 4
! .IP \fBmax\-inline\-insns\-single\fR 4
  .IX Item "max-inline-insns-single"
  is set to \fIn\fR/2.
! .IP \fBmax\-inline\-insns\-auto\fR 4
  .IX Item "max-inline-insns-auto"
  is set to \fIn\fR/2.
  .RE
*************** parameters controlling inlining and for
*** 12300,12336 ****
  in default behavior.
  .Sp
  \&\fINote:\fR pseudo instruction represents, in this particular context, an
! abstract measurement of function's size.  In no way does it represent a count
  of assembly instructions and as such its exact meaning might change from one
  release to an another.
  .RE
! .IP "\fB\-fno\-keep\-inline\-dllexport\fR" 4
  .IX Item "-fno-keep-inline-dllexport"
! This is a more fine-grained version of \fB\-fkeep\-inline\-functions\fR,
  which applies only to functions that are declared using the \f(CW\*(C`dllexport\*(C'\fR
  attribute or declspec.
! .IP "\fB\-fkeep\-inline\-functions\fR" 4
  .IX Item "-fkeep-inline-functions"
  In C, emit \f(CW\*(C`static\*(C'\fR functions that are declared \f(CW\*(C`inline\*(C'\fR
  into the object file, even if the function has been inlined into all
  of its callers.  This switch does not affect functions using the
! \&\f(CW\*(C`extern inline\*(C'\fR extension in \s-1GNU C90.\s0  In \*(C+, emit any and all
  inline functions into the object file.
! .IP "\fB\-fkeep\-static\-functions\fR" 4
  .IX Item "-fkeep-static-functions"
  Emit \f(CW\*(C`static\*(C'\fR functions into the object file, even if the function
  is never used.
! .IP "\fB\-fkeep\-static\-consts\fR" 4
  .IX Item "-fkeep-static-consts"
! Emit variables declared \f(CW\*(C`static const\*(C'\fR when optimization isn't turned
! on, even if the variables aren't referenced.
  .Sp
! \&\s-1GCC\s0 enables this option by default.  If you want to force the compiler to
  check if a variable is referenced, regardless of whether or not
  optimization is turned on, use the \fB\-fno\-keep\-static\-consts\fR option.
! .IP "\fB\-fmerge\-constants\fR" 4
  .IX Item "-fmerge-constants"
! Attempt to merge identical constants (string constants and floating-point
  constants) across compilation units.
  .Sp
  This option is the default for optimized compilation if the assembler and
--- 12233,12269 ----
  in default behavior.
  .Sp
  \&\fINote:\fR pseudo instruction represents, in this particular context, an
! abstract measurement of function\*(Aqs size.  In no way does it represent a count
  of assembly instructions and as such its exact meaning might change from one
  release to an another.
  .RE
! .IP \fB\-fno\-keep\-inline\-dllexport\fR 4
  .IX Item "-fno-keep-inline-dllexport"
! This is a more fine\-grained version of \fB\-fkeep\-inline\-functions\fR,
  which applies only to functions that are declared using the \f(CW\*(C`dllexport\*(C'\fR
  attribute or declspec.
! .IP \fB\-fkeep\-inline\-functions\fR 4
  .IX Item "-fkeep-inline-functions"
  In C, emit \f(CW\*(C`static\*(C'\fR functions that are declared \f(CW\*(C`inline\*(C'\fR
  into the object file, even if the function has been inlined into all
  of its callers.  This switch does not affect functions using the
! \&\f(CW\*(C`extern inline\*(C'\fR extension in GNU C90.  In C++, emit any and all
  inline functions into the object file.
! .IP \fB\-fkeep\-static\-functions\fR 4
  .IX Item "-fkeep-static-functions"
  Emit \f(CW\*(C`static\*(C'\fR functions into the object file, even if the function
  is never used.
! .IP \fB\-fkeep\-static\-consts\fR 4
  .IX Item "-fkeep-static-consts"
! Emit variables declared \f(CW\*(C`static const\*(C'\fR when optimization isn\*(Aqt turned
! on, even if the variables aren\*(Aqt referenced.
  .Sp
! GCC enables this option by default.  If you want to force the compiler to
  check if a variable is referenced, regardless of whether or not
  optimization is turned on, use the \fB\-fno\-keep\-static\-consts\fR option.
! .IP \fB\-fmerge\-constants\fR 4
  .IX Item "-fmerge-constants"
! Attempt to merge identical constants (string constants and floating\-point
  constants) across compilation units.
  .Sp
  This option is the default for optimized compilation if the assembler and
*************** linker support it.  Use \fB\-fno\-merge\
*** 12338,12393 ****
  behavior.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fmerge\-all\-constants\fR" 4
  .IX Item "-fmerge-all-constants"
  Attempt to merge identical constants and identical variables.
  .Sp
  This option implies \fB\-fmerge\-constants\fR.  In addition to
  \&\fB\-fmerge\-constants\fR this considers e.g. even constant initialized
! arrays or initialized constant variables with integral or floating-point
! types.  Languages like C or \*(C+ require each variable, including multiple
  instances of the same variable in recursive calls, to have distinct locations,
! so using this option results in non-conforming
  behavior.
! .IP "\fB\-fmodulo\-sched\fR" 4
  .IX Item "-fmodulo-sched"
  Perform swing modulo scheduling immediately before the first scheduling
  pass.  This pass looks at innermost loops and reorders their
  instructions by overlapping different iterations.
! .IP "\fB\-fmodulo\-sched\-allow\-regmoves\fR" 4
  .IX Item "-fmodulo-sched-allow-regmoves"
! Perform more aggressive SMS-based modulo scheduling with register moves
! allowed.  By setting this flag certain anti-dependences edges are
! deleted, which triggers the generation of reg-moves based on the
! life-range analysis.  This option is effective only with
  \&\fB\-fmodulo\-sched\fR enabled.
! .IP "\fB\-fno\-branch\-count\-reg\fR" 4
  .IX Item "-fno-branch-count-reg"
  Disable the optimization pass that scans for opportunities to use
! \&\*(L"decrement and branch\*(R" instructions on a count register instead of
  instruction sequences that decrement a register, compare it against zero, and
  then branch based upon the result.  This option is only meaningful on
  architectures that support such instructions, which include x86, PowerPC,
! \&\s-1IA\-64\s0 and S/390.  Note that the \fB\-fno\-branch\-count\-reg\fR option
! doesn't remove the decrement and branch instructions from the generated
  instruction stream introduced by other optimization passes.
  .Sp
  The default is \fB\-fbranch\-count\-reg\fR at \fB\-O1\fR and higher,
  except for \fB\-Og\fR.
! .IP "\fB\-fno\-function\-cse\fR" 4
  .IX Item "-fno-function-cse"
  Do not put function addresses in registers; make each instruction that
! calls a constant function contain the function's address explicitly.
  .Sp
  This option results in less efficient code, but some strange hacks
  that alter the assembler output may be confused by the optimizations
  performed when this option is not used.
  .Sp
  The default is \fB\-ffunction\-cse\fR
! .IP "\fB\-fno\-zero\-initialized\-in\-bss\fR" 4
  .IX Item "-fno-zero-initialized-in-bss"
! If the target supports a \s-1BSS\s0 section, \s-1GCC\s0 by default puts variables that
! are initialized to zero into \s-1BSS.\s0  This can save space in the resulting
  code.
  .Sp
  This option turns off this behavior because some programs explicitly
--- 12271,12326 ----
  behavior.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fmerge\-all\-constants\fR 4
  .IX Item "-fmerge-all-constants"
  Attempt to merge identical constants and identical variables.
  .Sp
  This option implies \fB\-fmerge\-constants\fR.  In addition to
  \&\fB\-fmerge\-constants\fR this considers e.g. even constant initialized
! arrays or initialized constant variables with integral or floating\-point
! types.  Languages like C or C++ require each variable, including multiple
  instances of the same variable in recursive calls, to have distinct locations,
! so using this option results in non\-conforming
  behavior.
! .IP \fB\-fmodulo\-sched\fR 4
  .IX Item "-fmodulo-sched"
  Perform swing modulo scheduling immediately before the first scheduling
  pass.  This pass looks at innermost loops and reorders their
  instructions by overlapping different iterations.
! .IP \fB\-fmodulo\-sched\-allow\-regmoves\fR 4
  .IX Item "-fmodulo-sched-allow-regmoves"
! Perform more aggressive SMS\-based modulo scheduling with register moves
! allowed.  By setting this flag certain anti\-dependences edges are
! deleted, which triggers the generation of reg\-moves based on the
! life\-range analysis.  This option is effective only with
  \&\fB\-fmodulo\-sched\fR enabled.
! .IP \fB\-fno\-branch\-count\-reg\fR 4
  .IX Item "-fno-branch-count-reg"
  Disable the optimization pass that scans for opportunities to use
! "decrement and branch" instructions on a count register instead of
  instruction sequences that decrement a register, compare it against zero, and
  then branch based upon the result.  This option is only meaningful on
  architectures that support such instructions, which include x86, PowerPC,
! IA\-64 and S/390.  Note that the \fB\-fno\-branch\-count\-reg\fR option
! doesn\*(Aqt remove the decrement and branch instructions from the generated
  instruction stream introduced by other optimization passes.
  .Sp
  The default is \fB\-fbranch\-count\-reg\fR at \fB\-O1\fR and higher,
  except for \fB\-Og\fR.
! .IP \fB\-fno\-function\-cse\fR 4
  .IX Item "-fno-function-cse"
  Do not put function addresses in registers; make each instruction that
! calls a constant function contain the function\*(Aqs address explicitly.
  .Sp
  This option results in less efficient code, but some strange hacks
  that alter the assembler output may be confused by the optimizations
  performed when this option is not used.
  .Sp
  The default is \fB\-ffunction\-cse\fR
! .IP \fB\-fno\-zero\-initialized\-in\-bss\fR 4
  .IX Item "-fno-zero-initialized-in-bss"
! If the target supports a BSS section, GCC by default puts variables that
! are initialized to zero into BSS.  This can save space in the resulting
  code.
  .Sp
  This option turns off this behavior because some programs explicitly
*************** resulting executable can find the beginn
*** 12396,12402 ****
  assumptions based on that.
  .Sp
  The default is \fB\-fzero\-initialized\-in\-bss\fR except in Ada.
! .IP "\fB\-fthread\-jumps\fR" 4
  .IX Item "-fthread-jumps"
  Perform optimizations that check to see if a jump branches to a
  location where another comparison subsumed by the first is found.  If
--- 12329,12335 ----
  assumptions based on that.
  .Sp
  The default is \fB\-fzero\-initialized\-in\-bss\fR except in Ada.
! .IP \fB\-fthread\-jumps\fR 4
  .IX Item "-fthread-jumps"
  Perform optimizations that check to see if a jump branches to a
  location where another comparison subsumed by the first is found.  If
*************** second branch or a point immediately fol
*** 12405,12411 ****
  the condition is known to be true or false.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fsplit\-wide\-types\fR" 4
  .IX Item "-fsplit-wide-types"
  When using a type that occupies multiple registers, such as \f(CW\*(C`long
  long\*(C'\fR on a 32\-bit system, split the registers apart and allocate them
--- 12338,12344 ----
  the condition is known to be true or false.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fsplit\-wide\-types\fR 4
  .IX Item "-fsplit-wide-types"
  When using a type that occupies multiple registers, such as \f(CW\*(C`long
  long\*(C'\fR on a 32\-bit system, split the registers apart and allocate them
*************** but may make debugging more difficult.
*** 12414,12461 ****
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR,
  \&\fB\-Os\fR.
! .IP "\fB\-fsplit\-wide\-types\-early\fR" 4
  .IX Item "-fsplit-wide-types-early"
  Fully split wide types early, instead of very late.
  This option has no effect unless \fB\-fsplit\-wide\-types\fR is turned on.
  .Sp
  This is the default on some targets.
! .IP "\fB\-fcse\-follow\-jumps\fR" 4
  .IX Item "-fcse-follow-jumps"
! In common subexpression elimination (\s-1CSE\s0), scan through jump instructions
  when the target of the jump is not reached by any other path.  For
! example, when \s-1CSE\s0 encounters an \f(CW\*(C`if\*(C'\fR statement with an
! \&\f(CW\*(C`else\*(C'\fR clause, \s-1CSE\s0 follows the jump when the condition
  tested is false.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fcse\-skip\-blocks\fR" 4
  .IX Item "-fcse-skip-blocks"
! This is similar to \fB\-fcse\-follow\-jumps\fR, but causes \s-1CSE\s0 to
! follow jumps that conditionally skip over blocks.  When \s-1CSE\s0
  encounters a simple \f(CW\*(C`if\*(C'\fR statement with no else clause,
! \&\fB\-fcse\-skip\-blocks\fR causes \s-1CSE\s0 to follow the jump around the
  body of the \f(CW\*(C`if\*(C'\fR.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-frerun\-cse\-after\-loop\fR" 4
  .IX Item "-frerun-cse-after-loop"
! Re-run common subexpression elimination after loop optimizations are
  performed.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fgcse\fR" 4
  .IX Item "-fgcse"
  Perform a global common subexpression elimination pass.
  This pass also performs global constant and copy propagation.
  .Sp
! \&\fINote:\fR When compiling a program using computed gotos, a \s-1GCC\s0
! extension, you may get better run-time performance if you disable
  the global common subexpression elimination pass by adding
  \&\fB\-fno\-gcse\fR to the command line.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fgcse\-lm\fR" 4
  .IX Item "-fgcse-lm"
  When \fB\-fgcse\-lm\fR is enabled, global common subexpression elimination
  attempts to move loads that are only killed by stores into themselves.  This
--- 12347,12394 ----
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR,
  \&\fB\-Os\fR.
! .IP \fB\-fsplit\-wide\-types\-early\fR 4
  .IX Item "-fsplit-wide-types-early"
  Fully split wide types early, instead of very late.
  This option has no effect unless \fB\-fsplit\-wide\-types\fR is turned on.
  .Sp
  This is the default on some targets.
! .IP \fB\-fcse\-follow\-jumps\fR 4
  .IX Item "-fcse-follow-jumps"
! In common subexpression elimination (CSE), scan through jump instructions
  when the target of the jump is not reached by any other path.  For
! example, when CSE encounters an \f(CW\*(C`if\*(C'\fR statement with an
! \&\f(CW\*(C`else\*(C'\fR clause, CSE follows the jump when the condition
  tested is false.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fcse\-skip\-blocks\fR 4
  .IX Item "-fcse-skip-blocks"
! This is similar to \fB\-fcse\-follow\-jumps\fR, but causes CSE to
! follow jumps that conditionally skip over blocks.  When CSE
  encounters a simple \f(CW\*(C`if\*(C'\fR statement with no else clause,
! \&\fB\-fcse\-skip\-blocks\fR causes CSE to follow the jump around the
  body of the \f(CW\*(C`if\*(C'\fR.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-frerun\-cse\-after\-loop\fR 4
  .IX Item "-frerun-cse-after-loop"
! Re\-run common subexpression elimination after loop optimizations are
  performed.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fgcse\fR 4
  .IX Item "-fgcse"
  Perform a global common subexpression elimination pass.
  This pass also performs global constant and copy propagation.
  .Sp
! \&\fINote:\fR When compiling a program using computed gotos, a GCC
! extension, you may get better run\-time performance if you disable
  the global common subexpression elimination pass by adding
  \&\fB\-fno\-gcse\fR to the command line.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fgcse\-lm\fR 4
  .IX Item "-fgcse-lm"
  When \fB\-fgcse\-lm\fR is enabled, global common subexpression elimination
  attempts to move loads that are only killed by stores into themselves.  This
*************** allows a loop containing a load/store se
*** 12463,12469 ****
  the loop, and a copy/store within the loop.
  .Sp
  Enabled by default when \fB\-fgcse\fR is enabled.
! .IP "\fB\-fgcse\-sm\fR" 4
  .IX Item "-fgcse-sm"
  When \fB\-fgcse\-sm\fR is enabled, a store motion pass is run after
  global common subexpression elimination.  This pass attempts to move
--- 12396,12402 ----
  the loop, and a copy/store within the loop.
  .Sp
  Enabled by default when \fB\-fgcse\fR is enabled.
! .IP \fB\-fgcse\-sm\fR 4
  .IX Item "-fgcse-sm"
  When \fB\-fgcse\-sm\fR is enabled, a store motion pass is run after
  global common subexpression elimination.  This pass attempts to move
*************** loops containing a load/store sequence c
*** 12472,12545 ****
  the loop and a store after the loop.
  .Sp
  Not enabled at any optimization level.
! .IP "\fB\-fgcse\-las\fR" 4
  .IX Item "-fgcse-las"
  When \fB\-fgcse\-las\fR is enabled, the global common subexpression
  elimination pass eliminates redundant loads that come after stores to the
  same memory location (both partial and full redundancies).
  .Sp
  Not enabled at any optimization level.
! .IP "\fB\-fgcse\-after\-reload\fR" 4
  .IX Item "-fgcse-after-reload"
  When \fB\-fgcse\-after\-reload\fR is enabled, a redundant load elimination
  pass is performed after reload.  The purpose of this pass is to clean up
  redundant spilling.
  .Sp
  Enabled by \fB\-O3\fR, \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-faggressive\-loop\-optimizations\fR" 4
  .IX Item "-faggressive-loop-optimizations"
  This option tells the loop optimizer to use language constraints to
  derive bounds for the number of iterations of a loop.  This assumes that
  loop code does not invoke undefined behavior by for example causing signed
! integer overflows or out-of-bound array accesses.  The bounds for the
  number of iterations of a loop are used to guide loop unrolling and peeling
  and loop exit test optimizations.
  This option is enabled by default.
! .IP "\fB\-funconstrained\-commons\fR" 4
  .IX Item "-funconstrained-commons"
  This option tells the compiler that variables declared in common blocks
  (e.g. Fortran) may later be overridden with longer trailing arrays. This
  prevents certain optimizations that depend on knowing the array bounds.
! .IP "\fB\-fcrossjumping\fR" 4
  .IX Item "-fcrossjumping"
! Perform cross-jumping transformation.
  This transformation unifies equivalent code and saves code size.  The
! resulting code may or may not perform better than without cross-jumping.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fauto\-inc\-dec\fR" 4
  .IX Item "-fauto-inc-dec"
  Combine increments or decrements of addresses with memory accesses.
  This pass is always skipped on architectures that do not have
  instructions to support this.  Enabled by default at \fB\-O1\fR and
  higher on architectures that support this.
! .IP "\fB\-fdce\fR" 4
  .IX Item "-fdce"
! Perform dead code elimination (\s-1DCE\s0) on \s-1RTL.\s0
  Enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-fdse\fR" 4
  .IX Item "-fdse"
! Perform dead store elimination (\s-1DSE\s0) on \s-1RTL.\s0
  Enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-fif\-conversion\fR" 4
  .IX Item "-fif-conversion"
! Attempt to transform conditional jumps into branch-less equivalents.  This
  includes use of conditional moves, min, max, set flags and abs instructions, and
  some tricks doable by standard arithmetics.  The use of conditional execution
  on chips where it is available is controlled by \fB\-fif\-conversion2\fR.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR, but
  not with \fB\-Og\fR.
! .IP "\fB\-fif\-conversion2\fR" 4
  .IX Item "-fif-conversion2"
  Use conditional execution (where available) to transform conditional jumps into
! branch-less equivalents.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR, but
  not with \fB\-Og\fR.
! .IP "\fB\-fdeclone\-ctor\-dtor\fR" 4
  .IX Item "-fdeclone-ctor-dtor"
! The \*(C+ \s-1ABI\s0 requires multiple entry points for constructors and
  destructors: one for a base subobject, one for a complete object, and
  one for a virtual destructor that calls operator delete afterwards.
  For a hierarchy with virtual bases, the base and complete variants are
--- 12405,12478 ----
  the loop and a store after the loop.
  .Sp
  Not enabled at any optimization level.
! .IP \fB\-fgcse\-las\fR 4
  .IX Item "-fgcse-las"
  When \fB\-fgcse\-las\fR is enabled, the global common subexpression
  elimination pass eliminates redundant loads that come after stores to the
  same memory location (both partial and full redundancies).
  .Sp
  Not enabled at any optimization level.
! .IP \fB\-fgcse\-after\-reload\fR 4
  .IX Item "-fgcse-after-reload"
  When \fB\-fgcse\-after\-reload\fR is enabled, a redundant load elimination
  pass is performed after reload.  The purpose of this pass is to clean up
  redundant spilling.
  .Sp
  Enabled by \fB\-O3\fR, \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-faggressive\-loop\-optimizations\fR 4
  .IX Item "-faggressive-loop-optimizations"
  This option tells the loop optimizer to use language constraints to
  derive bounds for the number of iterations of a loop.  This assumes that
  loop code does not invoke undefined behavior by for example causing signed
! integer overflows or out\-of\-bound array accesses.  The bounds for the
  number of iterations of a loop are used to guide loop unrolling and peeling
  and loop exit test optimizations.
  This option is enabled by default.
! .IP \fB\-funconstrained\-commons\fR 4
  .IX Item "-funconstrained-commons"
  This option tells the compiler that variables declared in common blocks
  (e.g. Fortran) may later be overridden with longer trailing arrays. This
  prevents certain optimizations that depend on knowing the array bounds.
! .IP \fB\-fcrossjumping\fR 4
  .IX Item "-fcrossjumping"
! Perform cross\-jumping transformation.
  This transformation unifies equivalent code and saves code size.  The
! resulting code may or may not perform better than without cross\-jumping.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fauto\-inc\-dec\fR 4
  .IX Item "-fauto-inc-dec"
  Combine increments or decrements of addresses with memory accesses.
  This pass is always skipped on architectures that do not have
  instructions to support this.  Enabled by default at \fB\-O1\fR and
  higher on architectures that support this.
! .IP \fB\-fdce\fR 4
  .IX Item "-fdce"
! Perform dead code elimination (DCE) on RTL.
  Enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-fdse\fR 4
  .IX Item "-fdse"
! Perform dead store elimination (DSE) on RTL.
  Enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-fif\-conversion\fR 4
  .IX Item "-fif-conversion"
! Attempt to transform conditional jumps into branch\-less equivalents.  This
  includes use of conditional moves, min, max, set flags and abs instructions, and
  some tricks doable by standard arithmetics.  The use of conditional execution
  on chips where it is available is controlled by \fB\-fif\-conversion2\fR.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR, but
  not with \fB\-Og\fR.
! .IP \fB\-fif\-conversion2\fR 4
  .IX Item "-fif-conversion2"
  Use conditional execution (where available) to transform conditional jumps into
! branch\-less equivalents.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR, but
  not with \fB\-Og\fR.
! .IP \fB\-fdeclone\-ctor\-dtor\fR 4
  .IX Item "-fdeclone-ctor-dtor"
! The C++ ABI requires multiple entry points for constructors and
  destructors: one for a base subobject, one for a complete object, and
  one for a virtual destructor that calls operator delete afterwards.
  For a hierarchy with virtual bases, the base and complete variants are
*************** base and complete variants are changed t
*** 12548,12560 ****
  implementation.
  .Sp
  Enabled by \fB\-Os\fR.
! .IP "\fB\-fdelete\-null\-pointer\-checks\fR" 4
  .IX Item "-fdelete-null-pointer-checks"
  Assume that programs cannot safely dereference null pointers, and that
  no code or data element resides at address zero.
  This option enables simple constant
  folding optimizations at all optimization levels.  In addition, other
! optimization passes in \s-1GCC\s0 use this flag to control global dataflow
  analyses that eliminate useless checks for null pointers; these assume
  that a memory access to address zero always results in a trap, so
  that if a pointer is checked after it has already been dereferenced,
--- 12481,12493 ----
  implementation.
  .Sp
  Enabled by \fB\-Os\fR.
! .IP \fB\-fdelete\-null\-pointer\-checks\fR 4
  .IX Item "-fdelete-null-pointer-checks"
  Assume that programs cannot safely dereference null pointers, and that
  no code or data element resides at address zero.
  This option enables simple constant
  folding optimizations at all optimization levels.  In addition, other
! optimization passes in GCC use this flag to control global dataflow
  analyses that eliminate useless checks for null pointers; these assume
  that a memory access to address zero always results in a trap, so
  that if a pointer is checked after it has already been dereferenced,
*************** Use \fB\-fno\-delete\-null\-pointer\-che
*** 12565,12582 ****
  for programs that depend on that behavior.
  .Sp
  This option is enabled by default on most targets.
! On \s-1AVR\s0 and \s-1MSP430,\s0 this option is completely disabled.
  .Sp
  Passes that use the dataflow information
  are enabled independently at different optimization levels.
! .IP "\fB\-fdevirtualize\fR" 4
  .IX Item "-fdevirtualize"
  Attempt to convert calls to virtual functions to direct calls.  This
  is done both within a procedure and interprocedurally as part of
  indirect inlining (\fB\-findirect\-inlining\fR) and interprocedural constant
  propagation (\fB\-fipa\-cp\fR).
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fdevirtualize\-speculatively\fR" 4
  .IX Item "-fdevirtualize-speculatively"
  Attempt to convert calls to virtual functions to speculative direct calls.
  Based on the analysis of the type inheritance graph, determine for a given call
--- 12498,12515 ----
  for programs that depend on that behavior.
  .Sp
  This option is enabled by default on most targets.
! On AVR and MSP430, this option is completely disabled.
  .Sp
  Passes that use the dataflow information
  are enabled independently at different optimization levels.
! .IP \fB\-fdevirtualize\fR 4
  .IX Item "-fdevirtualize"
  Attempt to convert calls to virtual functions to direct calls.  This
  is done both within a procedure and interprocedurally as part of
  indirect inlining (\fB\-findirect\-inlining\fR) and interprocedural constant
  propagation (\fB\-fipa\-cp\fR).
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fdevirtualize\-speculatively\fR 4
  .IX Item "-fdevirtualize-speculatively"
  Attempt to convert calls to virtual functions to speculative direct calls.
  Based on the analysis of the type inheritance graph, determine for a given call
*************** the set of likely targets. If the set is
*** 12584,12612 ****
  the call into a conditional deciding between direct and indirect calls.  The
  speculative calls enable more optimizations, such as inlining.  When they seem
  useless after further optimization, they are converted back into original form.
! .IP "\fB\-fdevirtualize\-at\-ltrans\fR" 4
  .IX Item "-fdevirtualize-at-ltrans"
  Stream extra information needed for aggressive devirtualization when running
! the link-time optimizer in local transformation mode.
  This option enables more devirtualization but
  significantly increases the size of streamed data. For this reason it is
  disabled by default.
! .IP "\fB\-fexpensive\-optimizations\fR" 4
  .IX Item "-fexpensive-optimizations"
  Perform a number of minor optimizations that are relatively expensive.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-free\fR" 4
  .IX Item "-free"
  Attempt to remove redundant extension instructions.  This is especially
! helpful for the x86\-64 architecture, which implicitly zero-extends in 64\-bit
  registers after writing to their lower 32\-bit half.
  .Sp
! Enabled for Alpha, AArch64, LoongArch, PowerPC, RISC-V, \s-1SPARC,\s0 h83000 and x86 at
  levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fno\-lifetime\-dse\fR" 4
  .IX Item "-fno-lifetime-dse"
! In \*(C+ the value of an object is only affected by changes within its
  lifetime: when the constructor begins, the object has an indeterminate
  value, and any changes during the lifetime of the object are dead when
  the object is destroyed.  Normally dead store elimination will take
--- 12517,12545 ----
  the call into a conditional deciding between direct and indirect calls.  The
  speculative calls enable more optimizations, such as inlining.  When they seem
  useless after further optimization, they are converted back into original form.
! .IP \fB\-fdevirtualize\-at\-ltrans\fR 4
  .IX Item "-fdevirtualize-at-ltrans"
  Stream extra information needed for aggressive devirtualization when running
! the link\-time optimizer in local transformation mode.
  This option enables more devirtualization but
  significantly increases the size of streamed data. For this reason it is
  disabled by default.
! .IP \fB\-fexpensive\-optimizations\fR 4
  .IX Item "-fexpensive-optimizations"
  Perform a number of minor optimizations that are relatively expensive.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-free\fR 4
  .IX Item "-free"
  Attempt to remove redundant extension instructions.  This is especially
! helpful for the x86\-64 architecture, which implicitly zero\-extends in 64\-bit
  registers after writing to their lower 32\-bit half.
  .Sp
! Enabled for Alpha, AArch64, LoongArch, PowerPC, RISC\-V, SPARC, h83000 and x86 at
  levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fno\-lifetime\-dse\fR 4
  .IX Item "-fno-lifetime-dse"
! In C++ the value of an object is only affected by changes within its
  lifetime: when the constructor begins, the object has an indeterminate
  value, and any changes during the lifetime of the object are dead when
  the object is destroyed.  Normally dead store elimination will take
*************** storage) but still treat the object as d
*** 12618,12654 ****
  can use \fB\-flifetime\-dse=1\fR.  The default behavior can be
  explicitly selected with \fB\-flifetime\-dse=2\fR.
  \&\fB\-flifetime\-dse=0\fR is equivalent to \fB\-fno\-lifetime\-dse\fR.
! .IP "\fB\-flive\-range\-shrinkage\fR" 4
  .IX Item "-flive-range-shrinkage"
  Attempt to decrease register pressure through register live range
  shrinkage.  This is helpful for fast processors with small or moderate
  size register sets.
! .IP "\fB\-fira\-algorithm=\fR\fIalgorithm\fR" 4
  .IX Item "-fira-algorithm=algorithm"
  Use the specified coloring algorithm for the integrated register
  allocator.  The \fIalgorithm\fR argument can be \fBpriority\fR, which
! specifies Chow's priority coloring, or \fB\s-1CB\s0\fR, which specifies
! Chaitin-Briggs coloring.  Chaitin-Briggs coloring is not implemented
  for all architectures, but for those targets that do support it, it is
  the default because it generates better code.
! .IP "\fB\-fira\-region=\fR\fIregion\fR" 4
  .IX Item "-fira-region=region"
  Use specified regions for the integrated register allocator.  The
  \&\fIregion\fR argument should be one of the following:
  .RS 4
! .IP "\fBall\fR" 4
  .IX Item "all"
  Use all loops as register allocation regions.
  This can give the best results for machines with a small and/or
  irregular register set.
! .IP "\fBmixed\fR" 4
  .IX Item "mixed"
  Use all loops except for loops with small register pressure
  as the regions.  This value usually gives
  the best results in most cases and for most architectures,
  and is enabled by default when compiling with optimization for speed
  (\fB\-O\fR, \fB\-O2\fR, ...).
! .IP "\fBone\fR" 4
  .IX Item "one"
  Use all functions as a single region.
  This typically results in the smallest code size, and is enabled by default for
--- 12551,12587 ----
  can use \fB\-flifetime\-dse=1\fR.  The default behavior can be
  explicitly selected with \fB\-flifetime\-dse=2\fR.
  \&\fB\-flifetime\-dse=0\fR is equivalent to \fB\-fno\-lifetime\-dse\fR.
! .IP \fB\-flive\-range\-shrinkage\fR 4
  .IX Item "-flive-range-shrinkage"
  Attempt to decrease register pressure through register live range
  shrinkage.  This is helpful for fast processors with small or moderate
  size register sets.
! .IP \fB\-fira\-algorithm=\fR\fIalgorithm\fR 4
  .IX Item "-fira-algorithm=algorithm"
  Use the specified coloring algorithm for the integrated register
  allocator.  The \fIalgorithm\fR argument can be \fBpriority\fR, which
! specifies Chow\*(Aqs priority coloring, or \fBCB\fR, which specifies
! Chaitin\-Briggs coloring.  Chaitin\-Briggs coloring is not implemented
  for all architectures, but for those targets that do support it, it is
  the default because it generates better code.
! .IP \fB\-fira\-region=\fR\fIregion\fR 4
  .IX Item "-fira-region=region"
  Use specified regions for the integrated register allocator.  The
  \&\fIregion\fR argument should be one of the following:
  .RS 4
! .IP \fBall\fR 4
  .IX Item "all"
  Use all loops as register allocation regions.
  This can give the best results for machines with a small and/or
  irregular register set.
! .IP \fBmixed\fR 4
  .IX Item "mixed"
  Use all loops except for loops with small register pressure
  as the regions.  This value usually gives
  the best results in most cases and for most architectures,
  and is enabled by default when compiling with optimization for speed
  (\fB\-O\fR, \fB\-O2\fR, ...).
! .IP \fBone\fR 4
  .IX Item "one"
  Use all functions as a single region.
  This typically results in the smallest code size, and is enabled by default for
*************** This typically results in the smallest c
*** 12656,12695 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-fira\-hoist\-pressure\fR" 4
  .IX Item "-fira-hoist-pressure"
! Use \s-1IRA\s0 to evaluate register pressure in the code hoisting pass for
  decisions to hoist expressions.  This option usually results in smaller
  code, but it can slow the compiler down.
  .Sp
  This option is enabled at level \fB\-Os\fR for all targets.
! .IP "\fB\-fira\-loop\-pressure\fR" 4
  .IX Item "-fira-loop-pressure"
! Use \s-1IRA\s0 to evaluate register pressure in loops for decisions to move
  loop invariants.  This option usually results in generation
  of faster and smaller code on machines with large register files (>= 32
  registers), but it can slow the compiler down.
  .Sp
  This option is enabled at level \fB\-O3\fR for some targets.
! .IP "\fB\-fno\-ira\-share\-save\-slots\fR" 4
  .IX Item "-fno-ira-share-save-slots"
! Disable sharing of stack slots used for saving call-used hard
  registers living through a call.  Each hard register gets a
  separate stack slot, and as a result function stack frames are
  larger.
! .IP "\fB\-fno\-ira\-share\-spill\-slots\fR" 4
  .IX Item "-fno-ira-share-spill-slots"
! Disable sharing of stack slots allocated for pseudo-registers.  Each
! pseudo-register that does not get a hard register gets a separate
  stack slot, and as a result function stack frames are larger.
! .IP "\fB\-flra\-remat\fR" 4
  .IX Item "-flra-remat"
! Enable CFG-sensitive rematerialization in \s-1LRA.\s0  Instead of loading
! values of spilled pseudos, \s-1LRA\s0 tries to rematerialize (recalculate)
  values if it is profitable.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fdelayed\-branch\fR" 4
  .IX Item "-fdelayed-branch"
  If supported for the target machine, attempt to reorder instructions
  to exploit instruction slots available after delayed branch
--- 12589,12628 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-fira\-hoist\-pressure\fR 4
  .IX Item "-fira-hoist-pressure"
! Use IRA to evaluate register pressure in the code hoisting pass for
  decisions to hoist expressions.  This option usually results in smaller
  code, but it can slow the compiler down.
  .Sp
  This option is enabled at level \fB\-Os\fR for all targets.
! .IP \fB\-fira\-loop\-pressure\fR 4
  .IX Item "-fira-loop-pressure"
! Use IRA to evaluate register pressure in loops for decisions to move
  loop invariants.  This option usually results in generation
  of faster and smaller code on machines with large register files (>= 32
  registers), but it can slow the compiler down.
  .Sp
  This option is enabled at level \fB\-O3\fR for some targets.
! .IP \fB\-fno\-ira\-share\-save\-slots\fR 4
  .IX Item "-fno-ira-share-save-slots"
! Disable sharing of stack slots used for saving call\-used hard
  registers living through a call.  Each hard register gets a
  separate stack slot, and as a result function stack frames are
  larger.
! .IP \fB\-fno\-ira\-share\-spill\-slots\fR 4
  .IX Item "-fno-ira-share-spill-slots"
! Disable sharing of stack slots allocated for pseudo\-registers.  Each
! pseudo\-register that does not get a hard register gets a separate
  stack slot, and as a result function stack frames are larger.
! .IP \fB\-flra\-remat\fR 4
  .IX Item "-flra-remat"
! Enable CFG\-sensitive rematerialization in LRA.  Instead of loading
! values of spilled pseudos, LRA tries to rematerialize (recalculate)
  values if it is profitable.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fdelayed\-branch\fR 4
  .IX Item "-fdelayed-branch"
  If supported for the target machine, attempt to reorder instructions
  to exploit instruction slots available after delayed branch
*************** instructions.
*** 12697,12714 ****
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR,
  but not at \fB\-Og\fR.
! .IP "\fB\-fschedule\-insns\fR" 4
  .IX Item "-fschedule-insns"
  If supported for the target machine, attempt to reorder instructions to
  eliminate execution stalls due to required data being unavailable.  This
  helps machines that have slow floating point or memory load instructions
  by allowing other instructions to be issued until the result of the load
! or floating-point instruction is required.
  .Sp
  Conventionally enabled at optimization levels \fB\-O2\fR and \fB\-O3\fR.
  However, many targets override this behavior.  For example, on x86, it is
  disabled at all levels, while on AArch64, it is enabled only at \fB\-O3\fR.
! .IP "\fB\-fschedule\-insns2\fR" 4
  .IX Item "-fschedule-insns2"
  Similar to \fB\-fschedule\-insns\fR, but requests an additional pass of
  instruction scheduling after register allocation has been done.  This is
--- 12630,12647 ----
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR,
  but not at \fB\-Og\fR.
! .IP \fB\-fschedule\-insns\fR 4
  .IX Item "-fschedule-insns"
  If supported for the target machine, attempt to reorder instructions to
  eliminate execution stalls due to required data being unavailable.  This
  helps machines that have slow floating point or memory load instructions
  by allowing other instructions to be issued until the result of the load
! or floating\-point instruction is required.
  .Sp
  Conventionally enabled at optimization levels \fB\-O2\fR and \fB\-O3\fR.
  However, many targets override this behavior.  For example, on x86, it is
  disabled at all levels, while on AArch64, it is enabled only at \fB\-O3\fR.
! .IP \fB\-fschedule\-insns2\fR 4
  .IX Item "-fschedule-insns2"
  Similar to \fB\-fschedule\-insns\fR, but requests an additional pass of
  instruction scheduling after register allocation has been done.  This is
*************** especially useful on machines with a rel
*** 12716,12732 ****
  registers and where memory load instructions take more than one cycle.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fno\-sched\-interblock\fR" 4
  .IX Item "-fno-sched-interblock"
  Disable instruction scheduling across basic blocks, which
  is normally enabled when scheduling before register allocation, i.e.
  with \fB\-fschedule\-insns\fR or at \fB\-O2\fR or higher.
! .IP "\fB\-fno\-sched\-spec\fR" 4
  .IX Item "-fno-sched-spec"
! Disable speculative motion of non-load instructions, which
  is normally enabled when scheduling before register allocation, i.e.
  with \fB\-fschedule\-insns\fR or at \fB\-O2\fR or higher.
! .IP "\fB\-fsched\-pressure\fR" 4
  .IX Item "-fsched-pressure"
  Enable register pressure sensitive insn scheduling before register
  allocation.  This only makes sense when scheduling before register
--- 12649,12665 ----
  registers and where memory load instructions take more than one cycle.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fno\-sched\-interblock\fR 4
  .IX Item "-fno-sched-interblock"
  Disable instruction scheduling across basic blocks, which
  is normally enabled when scheduling before register allocation, i.e.
  with \fB\-fschedule\-insns\fR or at \fB\-O2\fR or higher.
! .IP \fB\-fno\-sched\-spec\fR 4
  .IX Item "-fno-sched-spec"
! Disable speculative motion of non\-load instructions, which
  is normally enabled when scheduling before register allocation, i.e.
  with \fB\-fschedule\-insns\fR or at \fB\-O2\fR or higher.
! .IP \fB\-fsched\-pressure\fR 4
  .IX Item "-fsched-pressure"
  Enable register pressure sensitive insn scheduling before register
  allocation.  This only makes sense when scheduling before register
*************** allocation is enabled, i.e. with \fB\-fs
*** 12735,12754 ****
  generated code and decrease its size by preventing register pressure
  increase above the number of available hard registers and subsequent
  spills in register allocation.
! .IP "\fB\-fsched\-spec\-load\fR" 4
  .IX Item "-fsched-spec-load"
  Allow speculative motion of some load instructions.  This only makes
  sense when scheduling before register allocation, i.e. with
  \&\fB\-fschedule\-insns\fR or at \fB\-O2\fR or higher.
! .IP "\fB\-fsched\-spec\-load\-dangerous\fR" 4
  .IX Item "-fsched-spec-load-dangerous"
  Allow speculative motion of more load instructions.  This only makes
  sense when scheduling before register allocation, i.e. with
  \&\fB\-fschedule\-insns\fR or at \fB\-O2\fR or higher.
! .IP "\fB\-fsched\-stalled\-insns\fR" 4
  .IX Item "-fsched-stalled-insns"
  .PD 0
! .IP "\fB\-fsched\-stalled\-insns=\fR\fIn\fR" 4
  .IX Item "-fsched-stalled-insns=n"
  .PD
  Define how many insns (if any) can be moved prematurely from the queue
--- 12668,12687 ----
  generated code and decrease its size by preventing register pressure
  increase above the number of available hard registers and subsequent
  spills in register allocation.
! .IP \fB\-fsched\-spec\-load\fR 4
  .IX Item "-fsched-spec-load"
  Allow speculative motion of some load instructions.  This only makes
  sense when scheduling before register allocation, i.e. with
  \&\fB\-fschedule\-insns\fR or at \fB\-O2\fR or higher.
! .IP \fB\-fsched\-spec\-load\-dangerous\fR 4
  .IX Item "-fsched-spec-load-dangerous"
  Allow speculative motion of more load instructions.  This only makes
  sense when scheduling before register allocation, i.e. with
  \&\fB\-fschedule\-insns\fR or at \fB\-O2\fR or higher.
! .IP \fB\-fsched\-stalled\-insns\fR 4
  .IX Item "-fsched-stalled-insns"
  .PD 0
! .IP \fB\-fsched\-stalled\-insns=\fR\fIn\fR 4
  .IX Item "-fsched-stalled-insns=n"
  .PD
  Define how many insns (if any) can be moved prematurely from the queue
*************** prematurely, \fB\-fsched\-stalled\-insns
*** 12758,12767 ****
  on how many queued insns can be moved prematurely.
  \&\fB\-fsched\-stalled\-insns\fR without a value is equivalent to
  \&\fB\-fsched\-stalled\-insns=1\fR.
! .IP "\fB\-fsched\-stalled\-insns\-dep\fR" 4
  .IX Item "-fsched-stalled-insns-dep"
  .PD 0
! .IP "\fB\-fsched\-stalled\-insns\-dep=\fR\fIn\fR" 4
  .IX Item "-fsched-stalled-insns-dep=n"
  .PD
  Define how many insn groups (cycles) are examined for a dependency
--- 12691,12700 ----
  on how many queued insns can be moved prematurely.
  \&\fB\-fsched\-stalled\-insns\fR without a value is equivalent to
  \&\fB\-fsched\-stalled\-insns=1\fR.
! .IP \fB\-fsched\-stalled\-insns\-dep\fR 4
  .IX Item "-fsched-stalled-insns-dep"
  .PD 0
! .IP \fB\-fsched\-stalled\-insns\-dep=\fR\fIn\fR 4
  .IX Item "-fsched-stalled-insns-dep=n"
  .PD
  Define how many insn groups (cycles) are examined for a dependency
*************** and only if \fB\-fsched\-stalled\-insns\
*** 12772,12854 ****
  \&\fB\-fsched\-stalled\-insns\-dep=0\fR.
  \&\fB\-fsched\-stalled\-insns\-dep\fR without a value is equivalent to
  \&\fB\-fsched\-stalled\-insns\-dep=1\fR.
! .IP "\fB\-fsched2\-use\-superblocks\fR" 4
  .IX Item "-fsched2-use-superblocks"
  When scheduling after register allocation, use superblock scheduling.
  This allows motion across basic block boundaries,
  resulting in faster schedules.  This option is experimental, as not all machine
! descriptions used by \s-1GCC\s0 model the \s-1CPU\s0 closely enough to avoid unreliable
  results from the algorithm.
  .Sp
  This only makes sense when scheduling after register allocation, i.e. with
  \&\fB\-fschedule\-insns2\fR or at \fB\-O2\fR or higher.
! .IP "\fB\-fsched\-group\-heuristic\fR" 4
  .IX Item "-fsched-group-heuristic"
  Enable the group heuristic in the scheduler.  This heuristic favors
  the instruction that belongs to a schedule group.  This is enabled
  by default when scheduling is enabled, i.e. with \fB\-fschedule\-insns\fR
  or \fB\-fschedule\-insns2\fR or at \fB\-O2\fR or higher.
! .IP "\fB\-fsched\-critical\-path\-heuristic\fR" 4
  .IX Item "-fsched-critical-path-heuristic"
! Enable the critical-path heuristic in the scheduler.  This heuristic favors
  instructions on the critical path.  This is enabled by default when
  scheduling is enabled, i.e. with \fB\-fschedule\-insns\fR
  or \fB\-fschedule\-insns2\fR or at \fB\-O2\fR or higher.
! .IP "\fB\-fsched\-spec\-insn\-heuristic\fR" 4
  .IX Item "-fsched-spec-insn-heuristic"
  Enable the speculative instruction heuristic in the scheduler.  This
  heuristic favors speculative instructions with greater dependency weakness.
  This is enabled by default when scheduling is enabled, i.e.
  with \fB\-fschedule\-insns\fR or \fB\-fschedule\-insns2\fR
  or at \fB\-O2\fR or higher.
! .IP "\fB\-fsched\-rank\-heuristic\fR" 4
  .IX Item "-fsched-rank-heuristic"
  Enable the rank heuristic in the scheduler.  This heuristic favors
  the instruction belonging to a basic block with greater size or frequency.
  This is enabled by default when scheduling is enabled, i.e.
  with \fB\-fschedule\-insns\fR or \fB\-fschedule\-insns2\fR or
  at \fB\-O2\fR or higher.
! .IP "\fB\-fsched\-last\-insn\-heuristic\fR" 4
  .IX Item "-fsched-last-insn-heuristic"
! Enable the last-instruction heuristic in the scheduler.  This heuristic
  favors the instruction that is less dependent on the last instruction
  scheduled.  This is enabled by default when scheduling is enabled,
  i.e. with \fB\-fschedule\-insns\fR or \fB\-fschedule\-insns2\fR or
  at \fB\-O2\fR or higher.
! .IP "\fB\-fsched\-dep\-count\-heuristic\fR" 4
  .IX Item "-fsched-dep-count-heuristic"
! Enable the dependent-count heuristic in the scheduler.  This heuristic
  favors the instruction that has more instructions depending on it.
  This is enabled by default when scheduling is enabled, i.e.
  with \fB\-fschedule\-insns\fR or \fB\-fschedule\-insns2\fR or
  at \fB\-O2\fR or higher.
! .IP "\fB\-freschedule\-modulo\-scheduled\-loops\fR" 4
  .IX Item "-freschedule-modulo-scheduled-loops"
  Modulo scheduling is performed before traditional scheduling.  If a loop
  is modulo scheduled, later scheduling passes may change its schedule.
  Use this option to control that behavior.
! .IP "\fB\-fselective\-scheduling\fR" 4
  .IX Item "-fselective-scheduling"
  Schedule instructions using selective scheduling algorithm.  Selective
  scheduling runs instead of the first scheduler pass.
! .IP "\fB\-fselective\-scheduling2\fR" 4
  .IX Item "-fselective-scheduling2"
  Schedule instructions using selective scheduling algorithm.  Selective
  scheduling runs instead of the second scheduler pass.
! .IP "\fB\-fsel\-sched\-pipelining\fR" 4
  .IX Item "-fsel-sched-pipelining"
  Enable software pipelining of innermost loops during selective scheduling.
  This option has no effect unless one of \fB\-fselective\-scheduling\fR or
  \&\fB\-fselective\-scheduling2\fR is turned on.
! .IP "\fB\-fsel\-sched\-pipelining\-outer\-loops\fR" 4
  .IX Item "-fsel-sched-pipelining-outer-loops"
  When pipelining loops during selective scheduling, also pipeline outer loops.
  This option has no effect unless \fB\-fsel\-sched\-pipelining\fR is turned on.
! .IP "\fB\-fsemantic\-interposition\fR" 4
  .IX Item "-fsemantic-interposition"
! Some object formats, like \s-1ELF,\s0 allow interposing of symbols by the
  dynamic linker.
! This means that for symbols exported from the \s-1DSO,\s0 the compiler cannot perform
  interprocedural propagation, inlining and other optimizations in anticipation
  that the function or variable in question may change. While this feature is
  useful, for example, to rewrite memory allocation functions by a debugging
--- 12705,12787 ----
  \&\fB\-fsched\-stalled\-insns\-dep=0\fR.
  \&\fB\-fsched\-stalled\-insns\-dep\fR without a value is equivalent to
  \&\fB\-fsched\-stalled\-insns\-dep=1\fR.
! .IP \fB\-fsched2\-use\-superblocks\fR 4
  .IX Item "-fsched2-use-superblocks"
  When scheduling after register allocation, use superblock scheduling.
  This allows motion across basic block boundaries,
  resulting in faster schedules.  This option is experimental, as not all machine
! descriptions used by GCC model the CPU closely enough to avoid unreliable
  results from the algorithm.
  .Sp
  This only makes sense when scheduling after register allocation, i.e. with
  \&\fB\-fschedule\-insns2\fR or at \fB\-O2\fR or higher.
! .IP \fB\-fsched\-group\-heuristic\fR 4
  .IX Item "-fsched-group-heuristic"
  Enable the group heuristic in the scheduler.  This heuristic favors
  the instruction that belongs to a schedule group.  This is enabled
  by default when scheduling is enabled, i.e. with \fB\-fschedule\-insns\fR
  or \fB\-fschedule\-insns2\fR or at \fB\-O2\fR or higher.
! .IP \fB\-fsched\-critical\-path\-heuristic\fR 4
  .IX Item "-fsched-critical-path-heuristic"
! Enable the critical\-path heuristic in the scheduler.  This heuristic favors
  instructions on the critical path.  This is enabled by default when
  scheduling is enabled, i.e. with \fB\-fschedule\-insns\fR
  or \fB\-fschedule\-insns2\fR or at \fB\-O2\fR or higher.
! .IP \fB\-fsched\-spec\-insn\-heuristic\fR 4
  .IX Item "-fsched-spec-insn-heuristic"
  Enable the speculative instruction heuristic in the scheduler.  This
  heuristic favors speculative instructions with greater dependency weakness.
  This is enabled by default when scheduling is enabled, i.e.
  with \fB\-fschedule\-insns\fR or \fB\-fschedule\-insns2\fR
  or at \fB\-O2\fR or higher.
! .IP \fB\-fsched\-rank\-heuristic\fR 4
  .IX Item "-fsched-rank-heuristic"
  Enable the rank heuristic in the scheduler.  This heuristic favors
  the instruction belonging to a basic block with greater size or frequency.
  This is enabled by default when scheduling is enabled, i.e.
  with \fB\-fschedule\-insns\fR or \fB\-fschedule\-insns2\fR or
  at \fB\-O2\fR or higher.
! .IP \fB\-fsched\-last\-insn\-heuristic\fR 4
  .IX Item "-fsched-last-insn-heuristic"
! Enable the last\-instruction heuristic in the scheduler.  This heuristic
  favors the instruction that is less dependent on the last instruction
  scheduled.  This is enabled by default when scheduling is enabled,
  i.e. with \fB\-fschedule\-insns\fR or \fB\-fschedule\-insns2\fR or
  at \fB\-O2\fR or higher.
! .IP \fB\-fsched\-dep\-count\-heuristic\fR 4
  .IX Item "-fsched-dep-count-heuristic"
! Enable the dependent\-count heuristic in the scheduler.  This heuristic
  favors the instruction that has more instructions depending on it.
  This is enabled by default when scheduling is enabled, i.e.
  with \fB\-fschedule\-insns\fR or \fB\-fschedule\-insns2\fR or
  at \fB\-O2\fR or higher.
! .IP \fB\-freschedule\-modulo\-scheduled\-loops\fR 4
  .IX Item "-freschedule-modulo-scheduled-loops"
  Modulo scheduling is performed before traditional scheduling.  If a loop
  is modulo scheduled, later scheduling passes may change its schedule.
  Use this option to control that behavior.
! .IP \fB\-fselective\-scheduling\fR 4
  .IX Item "-fselective-scheduling"
  Schedule instructions using selective scheduling algorithm.  Selective
  scheduling runs instead of the first scheduler pass.
! .IP \fB\-fselective\-scheduling2\fR 4
  .IX Item "-fselective-scheduling2"
  Schedule instructions using selective scheduling algorithm.  Selective
  scheduling runs instead of the second scheduler pass.
! .IP \fB\-fsel\-sched\-pipelining\fR 4
  .IX Item "-fsel-sched-pipelining"
  Enable software pipelining of innermost loops during selective scheduling.
  This option has no effect unless one of \fB\-fselective\-scheduling\fR or
  \&\fB\-fselective\-scheduling2\fR is turned on.
! .IP \fB\-fsel\-sched\-pipelining\-outer\-loops\fR 4
  .IX Item "-fsel-sched-pipelining-outer-loops"
  When pipelining loops during selective scheduling, also pipeline outer loops.
  This option has no effect unless \fB\-fsel\-sched\-pipelining\fR is turned on.
! .IP \fB\-fsemantic\-interposition\fR 4
  .IX Item "-fsemantic-interposition"
! Some object formats, like ELF, allow interposing of symbols by the
  dynamic linker.
! This means that for symbols exported from the DSO, the compiler cannot perform
  interprocedural propagation, inlining and other optimizations in anticipation
  that the function or variable in question may change. While this feature is
  useful, for example, to rewrite memory allocation functions by a debugging
*************** for variables, the constructor of the va
*** 12861,12878 ****
  has no effect for functions explicitly declared inline
  (where it is never allowed for interposition to change semantics)
  and for symbols explicitly declared weak.
! .IP "\fB\-fshrink\-wrap\fR" 4
  .IX Item "-fshrink-wrap"
  Emit function prologues only before parts of the function that need it,
  rather than at the top of the function.  This flag is enabled by default at
  \&\fB\-O\fR and higher.
! .IP "\fB\-fshrink\-wrap\-separate\fR" 4
  .IX Item "-fshrink-wrap-separate"
! Shrink-wrap separate parts of the prologue and epilogue separately, so that
  those parts are only executed when needed.
  This option is on by default, but has no effect unless \fB\-fshrink\-wrap\fR
  is also turned on and the target supports this.
! .IP "\fB\-fcaller\-saves\fR" 4
  .IX Item "-fcaller-saves"
  Enable allocation of values to registers that are clobbered by
  function calls, by emitting extra instructions to save and restore the
--- 12794,12811 ----
  has no effect for functions explicitly declared inline
  (where it is never allowed for interposition to change semantics)
  and for symbols explicitly declared weak.
! .IP \fB\-fshrink\-wrap\fR 4
  .IX Item "-fshrink-wrap"
  Emit function prologues only before parts of the function that need it,
  rather than at the top of the function.  This flag is enabled by default at
  \&\fB\-O\fR and higher.
! .IP \fB\-fshrink\-wrap\-separate\fR 4
  .IX Item "-fshrink-wrap-separate"
! Shrink\-wrap separate parts of the prologue and epilogue separately, so that
  those parts are only executed when needed.
  This option is on by default, but has no effect unless \fB\-fshrink\-wrap\fR
  is also turned on and the target supports this.
! .IP \fB\-fcaller\-saves\fR 4
  .IX Item "-fcaller-saves"
  Enable allocation of values to registers that are clobbered by
  function calls, by emitting extra instructions to save and restore the
*************** registers around such calls.  Such alloc
*** 12880,12895 ****
  seems to result in better code.
  .Sp
  This option is always enabled by default on certain machines, usually
! those which have no call-preserved registers to use instead.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fcombine\-stack\-adjustments\fR" 4
  .IX Item "-fcombine-stack-adjustments"
  Tracks stack adjustments (pushes and pops) and stack memory references
  and then tries to find ways to combine them.
  .Sp
  Enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-fipa\-ra\fR" 4
  .IX Item "-fipa-ra"
  Use caller save registers for allocation if those registers are not used by
  any called function.  In that case it is not necessary to save and restore
--- 12813,12828 ----
  seems to result in better code.
  .Sp
  This option is always enabled by default on certain machines, usually
! those which have no call\-preserved registers to use instead.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fcombine\-stack\-adjustments\fR 4
  .IX Item "-fcombine-stack-adjustments"
  Tracks stack adjustments (pushes and pops) and stack memory references
  and then tries to find ways to combine them.
  .Sp
  Enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-fipa\-ra\fR 4
  .IX Item "-fipa-ra"
  Use caller save registers for allocation if those registers are not used by
  any called function.  In that case it is not necessary to save and restore
*************** same compilation unit as current functio
*** 12898,12971 ****
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR, however the option
  is disabled if generated code will be instrumented for profiling
! (\fB\-p\fR, or \fB\-pg\fR) or if callee's register usage cannot be known
  exactly (this happens on targets that do not expose prologues
! and epilogues in \s-1RTL\s0).
! .IP "\fB\-fconserve\-stack\fR" 4
  .IX Item "-fconserve-stack"
  Attempt to minimize stack usage.  The compiler attempts to use less
  stack space, even if that makes the program slower.  This option
! implies setting the \fBlarge-stack-frame\fR parameter to 100
! and the \fBlarge-stack-frame-growth\fR parameter to 400.
! .IP "\fB\-ftree\-reassoc\fR" 4
  .IX Item "-ftree-reassoc"
  Perform reassociation on trees.  This flag is enabled by default
  at \fB\-O1\fR and higher.
! .IP "\fB\-fcode\-hoisting\fR" 4
  .IX Item "-fcode-hoisting"
  Perform code hoisting.  Code hoisting tries to move the
  evaluation of expressions executed on all paths to the function exit
  as early as possible.  This is especially useful as a code size
  optimization, but it often helps for code speed as well.
  This flag is enabled by default at \fB\-O2\fR and higher.
! .IP "\fB\-ftree\-pre\fR" 4
  .IX Item "-ftree-pre"
! Perform partial redundancy elimination (\s-1PRE\s0) on trees.  This flag is
  enabled by default at \fB\-O2\fR and \fB\-O3\fR.
! .IP "\fB\-ftree\-partial\-pre\fR" 4
  .IX Item "-ftree-partial-pre"
! Make partial redundancy elimination (\s-1PRE\s0) more aggressive.  This flag is
  enabled by default at \fB\-O3\fR.
! .IP "\fB\-ftree\-forwprop\fR" 4
  .IX Item "-ftree-forwprop"
  Perform forward propagation on trees.  This flag is enabled by default
  at \fB\-O1\fR and higher.
! .IP "\fB\-ftree\-fre\fR" 4
  .IX Item "-ftree-fre"
! Perform full redundancy elimination (\s-1FRE\s0) on trees.  The difference
! between \s-1FRE\s0 and \s-1PRE\s0 is that \s-1FRE\s0 only considers expressions
  that are computed on all paths leading to the redundant computation.
! This analysis is faster than \s-1PRE,\s0 though it exposes fewer redundancies.
  This flag is enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-ftree\-phiprop\fR" 4
  .IX Item "-ftree-phiprop"
  Perform hoisting of loads from conditional pointers on trees.  This
  pass is enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-fhoist\-adjacent\-loads\fR" 4
  .IX Item "-fhoist-adjacent-loads"
! Speculatively hoist loads from both branches of an if-then-else if the
  loads are from adjacent locations in the same structure and the target
  architecture has a conditional move instruction.  This flag is enabled
  by default at \fB\-O2\fR and higher.
! .IP "\fB\-ftree\-copy\-prop\fR" 4
  .IX Item "-ftree-copy-prop"
  Perform copy propagation on trees.  This pass eliminates unnecessary
  copy operations.  This flag is enabled by default at \fB\-O1\fR and
  higher.
! .IP "\fB\-fipa\-pure\-const\fR" 4
  .IX Item "-fipa-pure-const"
  Discover which functions are pure or constant.
  Enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-fipa\-reference\fR" 4
  .IX Item "-fipa-reference"
  Discover which static variables do not escape the
  compilation unit.
  Enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-fipa\-reference\-addressable\fR" 4
  .IX Item "-fipa-reference-addressable"
! Discover read-only, write-only and non-addressable static variables.
  Enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-fipa\-reorder\-for\-locality\fR" 4
  .IX Item "-fipa-reorder-for-locality"
  Group call chains close together in the binary layout to improve code
  locality and minimize jump distances between frequently called functions.
--- 12831,12904 ----
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR, however the option
  is disabled if generated code will be instrumented for profiling
! (\fB\-p\fR, or \fB\-pg\fR) or if callee\*(Aqs register usage cannot be known
  exactly (this happens on targets that do not expose prologues
! and epilogues in RTL).
! .IP \fB\-fconserve\-stack\fR 4
  .IX Item "-fconserve-stack"
  Attempt to minimize stack usage.  The compiler attempts to use less
  stack space, even if that makes the program slower.  This option
! implies setting the \fBlarge\-stack\-frame\fR parameter to 100
! and the \fBlarge\-stack\-frame\-growth\fR parameter to 400.
! .IP \fB\-ftree\-reassoc\fR 4
  .IX Item "-ftree-reassoc"
  Perform reassociation on trees.  This flag is enabled by default
  at \fB\-O1\fR and higher.
! .IP \fB\-fcode\-hoisting\fR 4
  .IX Item "-fcode-hoisting"
  Perform code hoisting.  Code hoisting tries to move the
  evaluation of expressions executed on all paths to the function exit
  as early as possible.  This is especially useful as a code size
  optimization, but it often helps for code speed as well.
  This flag is enabled by default at \fB\-O2\fR and higher.
! .IP \fB\-ftree\-pre\fR 4
  .IX Item "-ftree-pre"
! Perform partial redundancy elimination (PRE) on trees.  This flag is
  enabled by default at \fB\-O2\fR and \fB\-O3\fR.
! .IP \fB\-ftree\-partial\-pre\fR 4
  .IX Item "-ftree-partial-pre"
! Make partial redundancy elimination (PRE) more aggressive.  This flag is
  enabled by default at \fB\-O3\fR.
! .IP \fB\-ftree\-forwprop\fR 4
  .IX Item "-ftree-forwprop"
  Perform forward propagation on trees.  This flag is enabled by default
  at \fB\-O1\fR and higher.
! .IP \fB\-ftree\-fre\fR 4
  .IX Item "-ftree-fre"
! Perform full redundancy elimination (FRE) on trees.  The difference
! between FRE and PRE is that FRE only considers expressions
  that are computed on all paths leading to the redundant computation.
! This analysis is faster than PRE, though it exposes fewer redundancies.
  This flag is enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-ftree\-phiprop\fR 4
  .IX Item "-ftree-phiprop"
  Perform hoisting of loads from conditional pointers on trees.  This
  pass is enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-fhoist\-adjacent\-loads\fR 4
  .IX Item "-fhoist-adjacent-loads"
! Speculatively hoist loads from both branches of an if\-then\-else if the
  loads are from adjacent locations in the same structure and the target
  architecture has a conditional move instruction.  This flag is enabled
  by default at \fB\-O2\fR and higher.
! .IP \fB\-ftree\-copy\-prop\fR 4
  .IX Item "-ftree-copy-prop"
  Perform copy propagation on trees.  This pass eliminates unnecessary
  copy operations.  This flag is enabled by default at \fB\-O1\fR and
  higher.
! .IP \fB\-fipa\-pure\-const\fR 4
  .IX Item "-fipa-pure-const"
  Discover which functions are pure or constant.
  Enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-fipa\-reference\fR 4
  .IX Item "-fipa-reference"
  Discover which static variables do not escape the
  compilation unit.
  Enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-fipa\-reference\-addressable\fR 4
  .IX Item "-fipa-reference-addressable"
! Discover read\-only, write\-only and non\-addressable static variables.
  Enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-fipa\-reorder\-for\-locality\fR 4
  .IX Item "-fipa-reorder-for-locality"
  Group call chains close together in the binary layout to improve code
  locality and minimize jump distances between frequently called functions.
*************** This option is incompatible with an expl
*** 12979,12995 ****
  scheme.
  If using this option it is recommended to also use profile feedback, but this
  option is not enabled by default otherwise.
! .IP "\fB\-fipa\-stack\-alignment\fR" 4
  .IX Item "-fipa-stack-alignment"
  Reduce stack alignment on call sites if possible.
  Enabled by default.
! .IP "\fB\-fipa\-pta\fR" 4
  .IX Item "-fipa-pta"
  Perform interprocedural pointer analysis and interprocedural modification
  and reference analysis.  This option can cause excessive memory and
! compile-time usage on large compilation units.  It is not enabled by
  default at any optimization level.
! .IP "\fB\-fipa\-profile\fR" 4
  .IX Item "-fipa-profile"
  Perform interprocedural profile propagation.  The functions called only from
  cold functions are marked as cold. Also functions executed once (such as
--- 12912,12928 ----
  scheme.
  If using this option it is recommended to also use profile feedback, but this
  option is not enabled by default otherwise.
! .IP \fB\-fipa\-stack\-alignment\fR 4
  .IX Item "-fipa-stack-alignment"
  Reduce stack alignment on call sites if possible.
  Enabled by default.
! .IP \fB\-fipa\-pta\fR 4
  .IX Item "-fipa-pta"
  Perform interprocedural pointer analysis and interprocedural modification
  and reference analysis.  This option can cause excessive memory and
! compile\-time usage on large compilation units.  It is not enabled by
  default at any optimization level.
! .IP \fB\-fipa\-profile\fR 4
  .IX Item "-fipa-profile"
  Perform interprocedural profile propagation.  The functions called only from
  cold functions are marked as cold. Also functions executed once (such as
*************** cold functions are marked as cold. Also
*** 12997,13009 ****
  identified. Cold functions and loop less parts of functions executed once are
  then optimized for size.
  Enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-fipa\-modref\fR" 4
  .IX Item "-fipa-modref"
  Perform interprocedural mod/ref analysis.  This optimization analyzes the side
  effects of functions (memory locations that are modified or referenced) and
  enables better optimization across the function call boundary.  This flag is
  enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-fipa\-cp\fR" 4
  .IX Item "-fipa-cp"
  Perform interprocedural constant propagation.
  This optimization analyzes the program to determine when values passed
--- 12930,12942 ----
  identified. Cold functions and loop less parts of functions executed once are
  then optimized for size.
  Enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-fipa\-modref\fR 4
  .IX Item "-fipa-modref"
  Perform interprocedural mod/ref analysis.  This optimization analyzes the side
  effects of functions (memory locations that are modified or referenced) and
  enables better optimization across the function call boundary.  This flag is
  enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-fipa\-cp\fR 4
  .IX Item "-fipa-cp"
  Perform interprocedural constant propagation.
  This optimization analyzes the program to determine when values passed
*************** This optimization can substantially incr
*** 13012,13018 ****
  if the application has constants passed to functions.
  This flag is enabled by default at \fB\-O2\fR, \fB\-Os\fR and \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-fipa\-cp\-clone\fR" 4
  .IX Item "-fipa-cp-clone"
  Perform function cloning to make interprocedural constant propagation stronger.
  When enabled, interprocedural constant propagation performs function cloning
--- 12945,12951 ----
  if the application has constants passed to functions.
  This flag is enabled by default at \fB\-O2\fR, \fB\-Os\fR and \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-fipa\-cp\-clone\fR 4
  .IX Item "-fipa-cp-clone"
  Perform function cloning to make interprocedural constant propagation stronger.
  When enabled, interprocedural constant propagation performs function cloning
*************** it may significantly increase code size
*** 13022,13051 ****
  (see \fB\-\-param ipa\-cp\-unit\-growth=\fR\fIvalue\fR).
  This flag is enabled by default at \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-fipa\-bit\-cp\fR" 4
  .IX Item "-fipa-bit-cp"
  When enabled, perform interprocedural bitwise constant
  propagation. This flag is enabled by default at \fB\-O2\fR and
  by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
  It requires that \fB\-fipa\-cp\fR is enabled.
! .IP "\fB\-fipa\-vrp\fR" 4
  .IX Item "-fipa-vrp"
  When enabled, perform interprocedural propagation of value
  ranges. This flag is enabled by default at \fB\-O2\fR. It requires
  that \fB\-fipa\-cp\fR is enabled.
! .IP "\fB\-fipa\-icf\fR" 4
  .IX Item "-fipa-icf"
! Perform Identical Code Folding for functions and read-only variables.
  The optimization reduces code size and may disturb unwind stacks by replacing
  a function by equivalent one with a different name. The optimization works
! more effectively with link-time optimization enabled.
  .Sp
! Although the behavior is similar to the Gold Linker's \s-1ICF\s0 optimization, \s-1GCC ICF\s0
  works on different levels and thus the optimizations are not same \- there are
! equivalences that are found only by \s-1GCC\s0 and equivalences found only by Gold.
  .Sp
  This flag is enabled by default at \fB\-O2\fR and \fB\-Os\fR.
! .IP "\fB\-flate\-combine\-instructions\fR" 4
  .IX Item "-flate-combine-instructions"
  Enable two instruction combination passes that run relatively late in the
  compilation process.  One of the passes runs before register allocation and
--- 12955,12984 ----
  (see \fB\-\-param ipa\-cp\-unit\-growth=\fR\fIvalue\fR).
  This flag is enabled by default at \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-fipa\-bit\-cp\fR 4
  .IX Item "-fipa-bit-cp"
  When enabled, perform interprocedural bitwise constant
  propagation. This flag is enabled by default at \fB\-O2\fR and
  by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
  It requires that \fB\-fipa\-cp\fR is enabled.
! .IP \fB\-fipa\-vrp\fR 4
  .IX Item "-fipa-vrp"
  When enabled, perform interprocedural propagation of value
  ranges. This flag is enabled by default at \fB\-O2\fR. It requires
  that \fB\-fipa\-cp\fR is enabled.
! .IP \fB\-fipa\-icf\fR 4
  .IX Item "-fipa-icf"
! Perform Identical Code Folding for functions and read\-only variables.
  The optimization reduces code size and may disturb unwind stacks by replacing
  a function by equivalent one with a different name. The optimization works
! more effectively with link\-time optimization enabled.
  .Sp
! Although the behavior is similar to the Gold Linker\*(Aqs ICF optimization, GCC ICF
  works on different levels and thus the optimizations are not same \- there are
! equivalences that are found only by GCC and equivalences found only by Gold.
  .Sp
  This flag is enabled by default at \fB\-O2\fR and \fB\-Os\fR.
! .IP \fB\-flate\-combine\-instructions\fR 4
  .IX Item "-flate-combine-instructions"
  Enable two instruction combination passes that run relatively late in the
  compilation process.  One of the passes runs before register allocation and
*************** the other after register allocation.  Th
*** 13053,13086 ****
  substitute definitions into all uses.
  .Sp
  Most targets enable this flag by default at \fB\-O2\fR and \fB\-Os\fR.
! .IP "\fB\-flive\-patching=\fR\fIlevel\fR" 4
  .IX Item "-flive-patching=level"
! Control \s-1GCC\s0's optimizations to produce output suitable for live-patching.
  .Sp
! If the compiler's optimization uses a function's body or information extracted
  from its body to optimize/change another function, the latter is called an
  impacted function of the former.  If a function is patched, its impacted
  functions should be patched too.
  .Sp
! The impacted functions are determined by the compiler's interprocedural
  optimizations.  For example, a caller is impacted when inlining a function
  into its caller,
  cloning a function and changing its caller to call this new clone,
! or extracting a function's pureness/constness information to optimize
  its direct or indirect callers, etc.
  .Sp
! Usually, the more \s-1IPA\s0 optimizations enabled, the larger the number of
  impacted functions for each function.  In order to control the number of
  impacted functions and more easily compute the list of impacted function,
! \&\s-1IPA\s0 optimizations can be partially enabled at two different levels.
  .Sp
  The \fIlevel\fR argument should be one of the following:
  .RS 4
! .IP "\fBinline-clone\fR" 4
  .IX Item "inline-clone"
  Only enable inlining and cloning optimizations, which includes inlining,
  cloning, interprocedural scalar replacement of aggregates and partial inlining.
! As a result, when patching a function, all its callers and its clones'
  callers are impacted, therefore need to be patched as well.
  .Sp
  \&\fB\-flive\-patching=inline\-clone\fR disables the following optimization flags:
--- 12986,13019 ----
  substitute definitions into all uses.
  .Sp
  Most targets enable this flag by default at \fB\-O2\fR and \fB\-Os\fR.
! .IP \fB\-flive\-patching=\fR\fIlevel\fR 4
  .IX Item "-flive-patching=level"
! Control GCC\*(Aqs optimizations to produce output suitable for live\-patching.
  .Sp
! If the compiler\*(Aqs optimization uses a function\*(Aqs body or information extracted
  from its body to optimize/change another function, the latter is called an
  impacted function of the former.  If a function is patched, its impacted
  functions should be patched too.
  .Sp
! The impacted functions are determined by the compiler\*(Aqs interprocedural
  optimizations.  For example, a caller is impacted when inlining a function
  into its caller,
  cloning a function and changing its caller to call this new clone,
! or extracting a function\*(Aqs pureness/constness information to optimize
  its direct or indirect callers, etc.
  .Sp
! Usually, the more IPA optimizations enabled, the larger the number of
  impacted functions for each function.  In order to control the number of
  impacted functions and more easily compute the list of impacted function,
! IPA optimizations can be partially enabled at two different levels.
  .Sp
  The \fIlevel\fR argument should be one of the following:
  .RS 4
! .IP \fBinline\-clone\fR 4
  .IX Item "inline-clone"
  Only enable inlining and cloning optimizations, which includes inlining,
  cloning, interprocedural scalar replacement of aggregates and partial inlining.
! As a result, when patching a function, all its callers and its clones\*(Aq
  callers are impacted, therefore need to be patched as well.
  .Sp
  \&\fB\-flive\-patching=inline\-clone\fR disables the following optimization flags:
*************** callers are impacted, therefore need to
*** 13089,13095 ****
  \&\-fipa\-bit\-cp  \-fipa\-vrp  \-fipa\-pure\-const
  \&\-fipa\-reference\-addressable
  \&\-fipa\-stack\-alignment \-fipa\-modref\fR
! .IP "\fBinline-only-static\fR" 4
  .IX Item "inline-only-static"
  Only enable inlining of static functions.
  As a result, when patching a static function, all its callers are impacted
--- 13022,13028 ----
  \&\-fipa\-bit\-cp  \-fipa\-vrp  \-fipa\-pure\-const
  \&\-fipa\-reference\-addressable
  \&\-fipa\-stack\-alignment \-fipa\-modref\fR
! .IP \fBinline\-only\-static\fR 4
  .IX Item "inline-only-static"
  Only enable inlining of static functions.
  As a result, when patching a static function, all its callers are impacted
*************** optimization flags:
*** 13104,13265 ****
  .RS 4
  .Sp
  When \fB\-flive\-patching\fR is specified without any value, the default value
! is \fIinline-clone\fR.
  .Sp
  This flag is disabled by default.
  .Sp
! Note that \fB\-flive\-patching\fR is not supported with link-time optimization
  (\fB\-flto\fR).
  .RE
! .IP "\fB\-fisolate\-erroneous\-paths\-dereference\fR" 4
  .IX Item "-fisolate-erroneous-paths-dereference"
  Detect paths that trigger erroneous or undefined behavior due to
  dereferencing a null pointer.  Isolate those paths from the main control
  flow and turn the statement with erroneous or undefined behavior into a trap.
  This flag is enabled by default at \fB\-O2\fR and higher and depends on
  \&\fB\-fdelete\-null\-pointer\-checks\fR also being enabled.
! .IP "\fB\-fisolate\-erroneous\-paths\-attribute\fR" 4
  .IX Item "-fisolate-erroneous-paths-attribute"
  Detect paths that trigger erroneous or undefined behavior due to a null value
  being used in a way forbidden by a \f(CW\*(C`returns_nonnull\*(C'\fR or \f(CW\*(C`nonnull\*(C'\fR
  attribute.  Isolate those paths from the main control flow and turn the
  statement with erroneous or undefined behavior into a trap.  This is not
  currently enabled, but may be enabled by \fB\-O2\fR in the future.
! .IP "\fB\-ftree\-sink\fR" 4
  .IX Item "-ftree-sink"
  Perform forward store motion on trees.  This flag is
  enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-ftree\-bit\-ccp\fR" 4
  .IX Item "-ftree-bit-ccp"
  Perform sparse conditional bit constant propagation on trees and propagate
  pointer alignment information.
  This pass only operates on local scalar variables and is enabled by default
  at \fB\-O1\fR and higher, except for \fB\-Og\fR.
  It requires that \fB\-ftree\-ccp\fR is enabled.
! .IP "\fB\-ftree\-ccp\fR" 4
  .IX Item "-ftree-ccp"
! Perform sparse conditional constant propagation (\s-1CCP\s0) on trees.  This
  pass only operates on local scalar variables and is enabled by default
  at \fB\-O1\fR and higher.
! .IP "\fB\-fssa\-backprop\fR" 4
  .IX Item "-fssa-backprop"
  Propagate information about uses of a value up the definition chain
  in order to simplify the definitions.  For example, this pass strips
  sign operations if the sign of a value never matters.  The flag is
  enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-fssa\-phiopt\fR" 4
  .IX Item "-fssa-phiopt"
! Perform pattern matching on \s-1SSA PHI\s0 nodes to optimize conditional
  code.  This pass is enabled by default at \fB\-O1\fR and higher,
  except for \fB\-Og\fR.
! .IP "\fB\-ftree\-switch\-conversion\fR" 4
  .IX Item "-ftree-switch-conversion"
  Perform conversion of simple initializations in a switch to
  initializations from a scalar array.  This flag is enabled by default
  at \fB\-O2\fR and higher.
! .IP "\fB\-ftree\-tail\-merge\fR" 4
  .IX Item "-ftree-tail-merge"
  Look for identical code sequences.  When found, replace one with a jump to the
  other.  This optimization is known as tail merging or cross jumping.  This flag
  is enabled by default at \fB\-O2\fR and higher.  The compilation time
  in this pass can
! be limited using \fBmax-tail-merge-comparisons\fR parameter and
! \&\fBmax-tail-merge-iterations\fR parameter.
! .IP "\fB\-ftree\-cselim\fR" 4
  .IX Item "-ftree-cselim"
  Perform conditional store elimination on trees.  This flag is enabled by
  default at \fB\-O1\fR and higher on targets that have conditional
  move instructions.
! .IP "\fB\-ftree\-dce\fR" 4
  .IX Item "-ftree-dce"
! Perform dead code elimination (\s-1DCE\s0) on trees.  This flag is enabled by
  default at \fB\-O1\fR and higher.
! .IP "\fB\-ftree\-builtin\-call\-dce\fR" 4
  .IX Item "-ftree-builtin-call-dce"
! Perform conditional dead code elimination (\s-1DCE\s0) for calls to built-in functions
  that may set \f(CW\*(C`errno\*(C'\fR but are otherwise free of side effects.  This flag is
  enabled by default at \fB\-O2\fR and higher if \fB\-Os\fR is not also
  specified.
! .IP "\fB\-ffinite\-loops\fR" 4
  .IX Item "-ffinite-loops"
  Assume that a loop with an exit will eventually take the exit and not loop
  indefinitely.  This allows the compiler to remove loops that otherwise have
! no side-effects, not considering eventual endless looping as such.
  .Sp
! This option is enabled by default at \fB\-O2\fR for \*(C+ with \-std=c++11
  or higher.
! .IP "\fB\-ftree\-dominator\-opts\fR" 4
  .IX Item "-ftree-dominator-opts"
  Perform a variety of simple scalar cleanups (constant/copy
  propagation, redundancy elimination, range propagation and expression
  simplification) based on a dominator tree traversal.  This also
  performs jump threading (to reduce jumps to jumps). This flag is
  enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-ftree\-dse\fR" 4
  .IX Item "-ftree-dse"
! Perform dead store elimination (\s-1DSE\s0) on trees.  A dead store is a store into
  a memory location that is later overwritten by another store without
  any intervening loads.  In this case the earlier store can be deleted.  This
  flag is enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-ftree\-ch\fR" 4
  .IX Item "-ftree-ch"
  Perform loop header copying on trees.  This is beneficial since it increases
  effectiveness of code motion optimizations.  It also saves one jump.  This flag
  is enabled by default at \fB\-O1\fR and higher.  It is not enabled
  for \fB\-Os\fR, since it usually increases code size.
! .IP "\fB\-ftree\-loop\-optimize\fR" 4
  .IX Item "-ftree-loop-optimize"
  Perform loop optimizations on trees.  This flag is enabled by default
  at \fB\-O1\fR and higher.
! .IP "\fB\-ftree\-loop\-linear\fR" 4
  .IX Item "-ftree-loop-linear"
  .PD 0
! .IP "\fB\-floop\-strip\-mine\fR" 4
  .IX Item "-floop-strip-mine"
! .IP "\fB\-floop\-block\fR" 4
  .IX Item "-floop-block"
  .PD
  Perform loop nest optimizations.  Same as
! \&\fB\-floop\-nest\-optimize\fR.  To use this code transformation, \s-1GCC\s0 has
  to be configured with \fB\-\-with\-isl\fR to enable the Graphite loop
  transformation infrastructure.
! .IP "\fB\-fgraphite\-identity\fR" 4
  .IX Item "-fgraphite-identity"
  Enable the identity transformation for graphite.  For every SCoP we generate
  the polyhedral representation and transform it back to gimple.  Using
  \&\fB\-fgraphite\-identity\fR we can check the costs or benefits of the
! \&\s-1GIMPLE\s0 \-> \s-1GRAPHITE\s0 \-> \s-1GIMPLE\s0 transformation.  Some minimal optimizations
  are also performed by the code generator isl, like index splitting and
  dead code elimination in loops.
! .IP "\fB\-floop\-nest\-optimize\fR" 4
  .IX Item "-floop-nest-optimize"
  Enable the isl based loop nest optimizer.  This is a generic loop nest
  optimizer based on the Pluto optimization algorithms.  It calculates a loop
! structure optimized for data-locality and parallelism.  This option
  is experimental.
! .IP "\fB\-floop\-parallelize\-all\fR" 4
  .IX Item "-floop-parallelize-all"
  Use the Graphite data dependence analysis to identify loops that can
  be parallelized.  Parallelize all the loops that can be analyzed to
  not contain loop carried dependences without checking that it is
  profitable to parallelize the loops.
! .IP "\fB\-ftree\-coalesce\-vars\fR" 4
  .IX Item "-ftree-coalesce-vars"
! While transforming the program out of the \s-1SSA\s0 representation, attempt to
! reduce copying by coalescing versions of different user-defined
  variables, instead of just compiler temporaries.  This may severely
  limit the ability to debug an optimized program compiled with
  \&\fB\-fno\-var\-tracking\-assignments\fR.  In the negated form, this flag
! prevents \s-1SSA\s0 coalescing of user variables.  This option is enabled by
  default if optimization is enabled, and it does very little otherwise.
! .IP "\fB\-ftree\-loop\-if\-convert\fR" 4
  .IX Item "-ftree-loop-if-convert"
  Attempt to transform conditional jumps in the innermost loops to
! branch-less equivalents.  The intent is to remove control-flow from
  the innermost loops in order to improve the ability of the
  vectorization pass to handle these loops.  This is enabled by default
  if vectorization is enabled.
! .IP "\fB\-ftree\-loop\-distribution\fR" 4
  .IX Item "-ftree-loop-distribution"
  Perform loop distribution.  This flag can improve cache performance on
  big loop bodies and allow further loop optimizations, like
--- 13037,13198 ----
  .RS 4
  .Sp
  When \fB\-flive\-patching\fR is specified without any value, the default value
! is \fIinline\-clone\fR.
  .Sp
  This flag is disabled by default.
  .Sp
! Note that \fB\-flive\-patching\fR is not supported with link\-time optimization
  (\fB\-flto\fR).
  .RE
! .IP \fB\-fisolate\-erroneous\-paths\-dereference\fR 4
  .IX Item "-fisolate-erroneous-paths-dereference"
  Detect paths that trigger erroneous or undefined behavior due to
  dereferencing a null pointer.  Isolate those paths from the main control
  flow and turn the statement with erroneous or undefined behavior into a trap.
  This flag is enabled by default at \fB\-O2\fR and higher and depends on
  \&\fB\-fdelete\-null\-pointer\-checks\fR also being enabled.
! .IP \fB\-fisolate\-erroneous\-paths\-attribute\fR 4
  .IX Item "-fisolate-erroneous-paths-attribute"
  Detect paths that trigger erroneous or undefined behavior due to a null value
  being used in a way forbidden by a \f(CW\*(C`returns_nonnull\*(C'\fR or \f(CW\*(C`nonnull\*(C'\fR
  attribute.  Isolate those paths from the main control flow and turn the
  statement with erroneous or undefined behavior into a trap.  This is not
  currently enabled, but may be enabled by \fB\-O2\fR in the future.
! .IP \fB\-ftree\-sink\fR 4
  .IX Item "-ftree-sink"
  Perform forward store motion on trees.  This flag is
  enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-ftree\-bit\-ccp\fR 4
  .IX Item "-ftree-bit-ccp"
  Perform sparse conditional bit constant propagation on trees and propagate
  pointer alignment information.
  This pass only operates on local scalar variables and is enabled by default
  at \fB\-O1\fR and higher, except for \fB\-Og\fR.
  It requires that \fB\-ftree\-ccp\fR is enabled.
! .IP \fB\-ftree\-ccp\fR 4
  .IX Item "-ftree-ccp"
! Perform sparse conditional constant propagation (CCP) on trees.  This
  pass only operates on local scalar variables and is enabled by default
  at \fB\-O1\fR and higher.
! .IP \fB\-fssa\-backprop\fR 4
  .IX Item "-fssa-backprop"
  Propagate information about uses of a value up the definition chain
  in order to simplify the definitions.  For example, this pass strips
  sign operations if the sign of a value never matters.  The flag is
  enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-fssa\-phiopt\fR 4
  .IX Item "-fssa-phiopt"
! Perform pattern matching on SSA PHI nodes to optimize conditional
  code.  This pass is enabled by default at \fB\-O1\fR and higher,
  except for \fB\-Og\fR.
! .IP \fB\-ftree\-switch\-conversion\fR 4
  .IX Item "-ftree-switch-conversion"
  Perform conversion of simple initializations in a switch to
  initializations from a scalar array.  This flag is enabled by default
  at \fB\-O2\fR and higher.
! .IP \fB\-ftree\-tail\-merge\fR 4
  .IX Item "-ftree-tail-merge"
  Look for identical code sequences.  When found, replace one with a jump to the
  other.  This optimization is known as tail merging or cross jumping.  This flag
  is enabled by default at \fB\-O2\fR and higher.  The compilation time
  in this pass can
! be limited using \fBmax\-tail\-merge\-comparisons\fR parameter and
! \&\fBmax\-tail\-merge\-iterations\fR parameter.
! .IP \fB\-ftree\-cselim\fR 4
  .IX Item "-ftree-cselim"
  Perform conditional store elimination on trees.  This flag is enabled by
  default at \fB\-O1\fR and higher on targets that have conditional
  move instructions.
! .IP \fB\-ftree\-dce\fR 4
  .IX Item "-ftree-dce"
! Perform dead code elimination (DCE) on trees.  This flag is enabled by
  default at \fB\-O1\fR and higher.
! .IP \fB\-ftree\-builtin\-call\-dce\fR 4
  .IX Item "-ftree-builtin-call-dce"
! Perform conditional dead code elimination (DCE) for calls to built\-in functions
  that may set \f(CW\*(C`errno\*(C'\fR but are otherwise free of side effects.  This flag is
  enabled by default at \fB\-O2\fR and higher if \fB\-Os\fR is not also
  specified.
! .IP \fB\-ffinite\-loops\fR 4
  .IX Item "-ffinite-loops"
  Assume that a loop with an exit will eventually take the exit and not loop
  indefinitely.  This allows the compiler to remove loops that otherwise have
! no side\-effects, not considering eventual endless looping as such.
  .Sp
! This option is enabled by default at \fB\-O2\fR for C++ with \-std=c++11
  or higher.
! .IP \fB\-ftree\-dominator\-opts\fR 4
  .IX Item "-ftree-dominator-opts"
  Perform a variety of simple scalar cleanups (constant/copy
  propagation, redundancy elimination, range propagation and expression
  simplification) based on a dominator tree traversal.  This also
  performs jump threading (to reduce jumps to jumps). This flag is
  enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-ftree\-dse\fR 4
  .IX Item "-ftree-dse"
! Perform dead store elimination (DSE) on trees.  A dead store is a store into
  a memory location that is later overwritten by another store without
  any intervening loads.  In this case the earlier store can be deleted.  This
  flag is enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-ftree\-ch\fR 4
  .IX Item "-ftree-ch"
  Perform loop header copying on trees.  This is beneficial since it increases
  effectiveness of code motion optimizations.  It also saves one jump.  This flag
  is enabled by default at \fB\-O1\fR and higher.  It is not enabled
  for \fB\-Os\fR, since it usually increases code size.
! .IP \fB\-ftree\-loop\-optimize\fR 4
  .IX Item "-ftree-loop-optimize"
  Perform loop optimizations on trees.  This flag is enabled by default
  at \fB\-O1\fR and higher.
! .IP \fB\-ftree\-loop\-linear\fR 4
  .IX Item "-ftree-loop-linear"
  .PD 0
! .IP \fB\-floop\-strip\-mine\fR 4
  .IX Item "-floop-strip-mine"
! .IP \fB\-floop\-block\fR 4
  .IX Item "-floop-block"
  .PD
  Perform loop nest optimizations.  Same as
! \&\fB\-floop\-nest\-optimize\fR.  To use this code transformation, GCC has
  to be configured with \fB\-\-with\-isl\fR to enable the Graphite loop
  transformation infrastructure.
! .IP \fB\-fgraphite\-identity\fR 4
  .IX Item "-fgraphite-identity"
  Enable the identity transformation for graphite.  For every SCoP we generate
  the polyhedral representation and transform it back to gimple.  Using
  \&\fB\-fgraphite\-identity\fR we can check the costs or benefits of the
! GIMPLE \-> GRAPHITE \-> GIMPLE transformation.  Some minimal optimizations
  are also performed by the code generator isl, like index splitting and
  dead code elimination in loops.
! .IP \fB\-floop\-nest\-optimize\fR 4
  .IX Item "-floop-nest-optimize"
  Enable the isl based loop nest optimizer.  This is a generic loop nest
  optimizer based on the Pluto optimization algorithms.  It calculates a loop
! structure optimized for data\-locality and parallelism.  This option
  is experimental.
! .IP \fB\-floop\-parallelize\-all\fR 4
  .IX Item "-floop-parallelize-all"
  Use the Graphite data dependence analysis to identify loops that can
  be parallelized.  Parallelize all the loops that can be analyzed to
  not contain loop carried dependences without checking that it is
  profitable to parallelize the loops.
! .IP \fB\-ftree\-coalesce\-vars\fR 4
  .IX Item "-ftree-coalesce-vars"
! While transforming the program out of the SSA representation, attempt to
! reduce copying by coalescing versions of different user\-defined
  variables, instead of just compiler temporaries.  This may severely
  limit the ability to debug an optimized program compiled with
  \&\fB\-fno\-var\-tracking\-assignments\fR.  In the negated form, this flag
! prevents SSA coalescing of user variables.  This option is enabled by
  default if optimization is enabled, and it does very little otherwise.
! .IP \fB\-ftree\-loop\-if\-convert\fR 4
  .IX Item "-ftree-loop-if-convert"
  Attempt to transform conditional jumps in the innermost loops to
! branch\-less equivalents.  The intent is to remove control\-flow from
  the innermost loops in order to improve the ability of the
  vectorization pass to handle these loops.  This is enabled by default
  if vectorization is enabled.
! .IP \fB\-ftree\-loop\-distribution\fR 4
  .IX Item "-ftree-loop-distribution"
  Perform loop distribution.  This flag can improve cache performance on
  big loop bodies and allow further loop optimizations, like
*************** is transformed to
*** 13285,13291 ****
  .Sp
  This flag is enabled by default at \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-ftree\-loop\-distribute\-patterns\fR" 4
  .IX Item "-ftree-loop-distribute-patterns"
  Perform loop distribution of patterns that can be code generated with
  calls to a library.  This flag is enabled by default at \fB\-O2\fR and
--- 13218,13224 ----
  .Sp
  This flag is enabled by default at \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-ftree\-loop\-distribute\-patterns\fR 4
  .IX Item "-ftree-loop-distribute-patterns"
  Perform loop distribution of patterns that can be code generated with
  calls to a library.  This flag is enabled by default at \fB\-O2\fR and
*************** is transformed to
*** 13313,13319 ****
  .Ve
  .Sp
  and the initialization loop is transformed into a call to memset zero.
! .IP "\fB\-floop\-interchange\fR" 4
  .IX Item "-floop-interchange"
  Perform loop interchange outside of graphite.  This flag can improve cache
  performance on loop nest and allow further loop optimizations, like
--- 13246,13252 ----
  .Ve
  .Sp
  and the initialization loop is transformed into a call to memset zero.
! .IP \fB\-floop\-interchange\fR 4
  .IX Item "-floop-interchange"
  Perform loop interchange outside of graphite.  This flag can improve cache
  performance on loop nest and allow further loop optimizations, like
*************** is transformed to
*** 13337,13363 ****
  .Sp
  This flag is enabled by default at \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-floop\-unroll\-and\-jam\fR" 4
  .IX Item "-floop-unroll-and-jam"
  Apply unroll and jam transformations on feasible loops.  In a loop
  nest this unrolls the outer loop by some factor and fuses the resulting
  multiple inner loops.  This flag is enabled by default at \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-ftree\-loop\-im\fR" 4
  .IX Item "-ftree-loop-im"
  Perform loop invariant motion on trees.  This pass moves only invariants that
! are hard to handle at \s-1RTL\s0 level (function calls, operations that expand to
  nontrivial sequences of insns).  With \fB\-funswitch\-loops\fR it also moves
  operands of conditions that are invariant out of the loop, so that we can use
  just trivial invariantness analysis in loop unswitching.  The pass also includes
  store motion.
! .IP "\fB\-ftree\-loop\-ivcanon\fR" 4
  .IX Item "-ftree-loop-ivcanon"
  Create a canonical counter for number of iterations in loops for which
  determining number of iterations requires complicated analysis.  Later
  optimizations then may determine the number easily.  Useful especially
  in connection with unrolling.
! .IP "\fB\-ftree\-scev\-cprop\fR" 4
  .IX Item "-ftree-scev-cprop"
  Perform final value replacement.  If a variable is modified in a loop
  in such a way that its value when exiting the loop can be determined using
--- 13270,13296 ----
  .Sp
  This flag is enabled by default at \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-floop\-unroll\-and\-jam\fR 4
  .IX Item "-floop-unroll-and-jam"
  Apply unroll and jam transformations on feasible loops.  In a loop
  nest this unrolls the outer loop by some factor and fuses the resulting
  multiple inner loops.  This flag is enabled by default at \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-ftree\-loop\-im\fR 4
  .IX Item "-ftree-loop-im"
  Perform loop invariant motion on trees.  This pass moves only invariants that
! are hard to handle at RTL level (function calls, operations that expand to
  nontrivial sequences of insns).  With \fB\-funswitch\-loops\fR it also moves
  operands of conditions that are invariant out of the loop, so that we can use
  just trivial invariantness analysis in loop unswitching.  The pass also includes
  store motion.
! .IP \fB\-ftree\-loop\-ivcanon\fR 4
  .IX Item "-ftree-loop-ivcanon"
  Create a canonical counter for number of iterations in loops for which
  determining number of iterations requires complicated analysis.  Later
  optimizations then may determine the number easily.  Useful especially
  in connection with unrolling.
! .IP \fB\-ftree\-scev\-cprop\fR 4
  .IX Item "-ftree-scev-cprop"
  Perform final value replacement.  If a variable is modified in a loop
  in such a way that its value when exiting the loop can be determined using
*************** only its initial value and the number of
*** 13365,13438 ****
  the final value by such a computation, provided it is sufficiently cheap.
  This reduces data dependencies and may allow further simplifications.
  Enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-fivopts\fR" 4
  .IX Item "-fivopts"
  Perform induction variable optimizations (strength reduction, induction
  variable merging and induction variable elimination) on trees.
  Enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-ftree\-parallelize\-loops=n\fR" 4
  .IX Item "-ftree-parallelize-loops=n"
  Parallelize loops, i.e., split their iteration space to run in n threads.
  This is only possible for loops whose iterations are independent
  and can be arbitrarily reordered.  The optimization is only
! profitable on multiprocessor machines, for loops that are CPU-intensive,
  rather than constrained e.g. by memory bandwidth.  This option
  implies \fB\-pthread\fR, and thus is only supported on targets
  that have support for \fB\-pthread\fR.
! .IP "\fB\-ftree\-pta\fR" 4
  .IX Item "-ftree-pta"
! Perform function-local points-to analysis on trees.  This flag is
  enabled by default at \fB\-O1\fR and higher, except for \fB\-Og\fR.
! .IP "\fB\-ftree\-sra\fR" 4
  .IX Item "-ftree-sra"
  Perform scalar replacement of aggregates.  This pass replaces structure
  references with scalars to prevent committing structures to memory too
  early.  This flag is enabled by default at \fB\-O1\fR and higher,
  except for \fB\-Og\fR.
! .IP "\fB\-fstore\-merging\fR" 4
  .IX Item "-fstore-merging"
  Perform merging of narrow stores to consecutive memory addresses.  This pass
  merges contiguous stores of immediate values narrower than a word into fewer
  wider stores to reduce the number of instructions.  This is enabled by default
  at \fB\-O2\fR and higher as well as \fB\-Os\fR.
! .IP "\fB\-ftree\-ter\fR" 4
  .IX Item "-ftree-ter"
! Perform temporary expression replacement during the \s-1SSA\-\s0>normal phase.  Single
  use/single def temporaries are replaced at their use location with their
! defining expression.  This results in non-GIMPLE code, but gives the expanders
! much more complex trees to work on resulting in better \s-1RTL\s0 generation.  This is
  enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-ftree\-slsr\fR" 4
  .IX Item "-ftree-slsr"
! Perform straight-line strength reduction on trees.  This recognizes related
  expressions involving multiplications and replaces them by less expensive
  calculations when possible.  This is enabled by default at \fB\-O1\fR and
  higher.
! .IP "\fB\-ftree\-vectorize\fR" 4
  .IX Item "-ftree-vectorize"
  Perform vectorization on trees. This flag enables \fB\-ftree\-loop\-vectorize\fR
  and \fB\-ftree\-slp\-vectorize\fR if not explicitly specified.
! .IP "\fB\-ftree\-loop\-vectorize\fR" 4
  .IX Item "-ftree-loop-vectorize"
  Perform loop vectorization on trees. This flag is enabled by default at
  \&\fB\-O2\fR and by \fB\-ftree\-vectorize\fR, \fB\-fprofile\-use\fR,
  and \fB\-fauto\-profile\fR.
! .IP "\fB\-ftree\-slp\-vectorize\fR" 4
  .IX Item "-ftree-slp-vectorize"
  Perform basic block vectorization on trees. This flag is enabled by default at
  \&\fB\-O2\fR and by \fB\-ftree\-vectorize\fR, \fB\-fprofile\-use\fR,
  and \fB\-fauto\-profile\fR.
! .IP "\fB\-ftrivial\-auto\-var\-init=\fR\fIchoice\fR" 4
  .IX Item "-ftrivial-auto-var-init=choice"
  Initialize automatic variables with either a pattern or with zeroes to increase
  the security and predictability of a program by preventing uninitialized memory
  disclosure and use.
! \&\s-1GCC\s0 still considers an automatic variable that doesn't have an explicit
  initializer as uninitialized, \fB\-Wuninitialized\fR and
  \&\fB\-Wanalyzer\-use\-of\-uninitialized\-value\fR will still report
  warning messages on such automatic variables and the compiler will
  perform optimization as if the variable were uninitialized.
! With this option, \s-1GCC\s0 will also initialize any padding of automatic variables
  that have structure or union types to zeroes.
  However, the current implementation cannot initialize automatic variables that
  are declared between the controlling expression and the first case of a
--- 13298,13371 ----
  the final value by such a computation, provided it is sufficiently cheap.
  This reduces data dependencies and may allow further simplifications.
  Enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-fivopts\fR 4
  .IX Item "-fivopts"
  Perform induction variable optimizations (strength reduction, induction
  variable merging and induction variable elimination) on trees.
  Enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-ftree\-parallelize\-loops=n\fR 4
  .IX Item "-ftree-parallelize-loops=n"
  Parallelize loops, i.e., split their iteration space to run in n threads.
  This is only possible for loops whose iterations are independent
  and can be arbitrarily reordered.  The optimization is only
! profitable on multiprocessor machines, for loops that are CPU\-intensive,
  rather than constrained e.g. by memory bandwidth.  This option
  implies \fB\-pthread\fR, and thus is only supported on targets
  that have support for \fB\-pthread\fR.
! .IP \fB\-ftree\-pta\fR 4
  .IX Item "-ftree-pta"
! Perform function\-local points\-to analysis on trees.  This flag is
  enabled by default at \fB\-O1\fR and higher, except for \fB\-Og\fR.
! .IP \fB\-ftree\-sra\fR 4
  .IX Item "-ftree-sra"
  Perform scalar replacement of aggregates.  This pass replaces structure
  references with scalars to prevent committing structures to memory too
  early.  This flag is enabled by default at \fB\-O1\fR and higher,
  except for \fB\-Og\fR.
! .IP \fB\-fstore\-merging\fR 4
  .IX Item "-fstore-merging"
  Perform merging of narrow stores to consecutive memory addresses.  This pass
  merges contiguous stores of immediate values narrower than a word into fewer
  wider stores to reduce the number of instructions.  This is enabled by default
  at \fB\-O2\fR and higher as well as \fB\-Os\fR.
! .IP \fB\-ftree\-ter\fR 4
  .IX Item "-ftree-ter"
! Perform temporary expression replacement during the SSA\->normal phase.  Single
  use/single def temporaries are replaced at their use location with their
! defining expression.  This results in non\-GIMPLE code, but gives the expanders
! much more complex trees to work on resulting in better RTL generation.  This is
  enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-ftree\-slsr\fR 4
  .IX Item "-ftree-slsr"
! Perform straight\-line strength reduction on trees.  This recognizes related
  expressions involving multiplications and replaces them by less expensive
  calculations when possible.  This is enabled by default at \fB\-O1\fR and
  higher.
! .IP \fB\-ftree\-vectorize\fR 4
  .IX Item "-ftree-vectorize"
  Perform vectorization on trees. This flag enables \fB\-ftree\-loop\-vectorize\fR
  and \fB\-ftree\-slp\-vectorize\fR if not explicitly specified.
! .IP \fB\-ftree\-loop\-vectorize\fR 4
  .IX Item "-ftree-loop-vectorize"
  Perform loop vectorization on trees. This flag is enabled by default at
  \&\fB\-O2\fR and by \fB\-ftree\-vectorize\fR, \fB\-fprofile\-use\fR,
  and \fB\-fauto\-profile\fR.
! .IP \fB\-ftree\-slp\-vectorize\fR 4
  .IX Item "-ftree-slp-vectorize"
  Perform basic block vectorization on trees. This flag is enabled by default at
  \&\fB\-O2\fR and by \fB\-ftree\-vectorize\fR, \fB\-fprofile\-use\fR,
  and \fB\-fauto\-profile\fR.
! .IP \fB\-ftrivial\-auto\-var\-init=\fR\fIchoice\fR 4
  .IX Item "-ftrivial-auto-var-init=choice"
  Initialize automatic variables with either a pattern or with zeroes to increase
  the security and predictability of a program by preventing uninitialized memory
  disclosure and use.
! GCC still considers an automatic variable that doesn\*(Aqt have an explicit
  initializer as uninitialized, \fB\-Wuninitialized\fR and
  \&\fB\-Wanalyzer\-use\-of\-uninitialized\-value\fR will still report
  warning messages on such automatic variables and the compiler will
  perform optimization as if the variable were uninitialized.
! With this option, GCC will also initialize any padding of automatic variables
  that have structure or union types to zeroes.
  However, the current implementation cannot initialize automatic variables that
  are declared between the controlling expression and the first case of a
*************** such cases.
*** 13441,13457 ****
  .Sp
  The three values of \fIchoice\fR are:
  .RS 4
! .IP "*" 4
! \&\fBuninitialized\fR doesn't initialize any automatic variables.
! This is C and \*(C+'s default.
! .IP "*" 4
  \&\fBpattern\fR Initialize automatic variables with values which will likely
  transform logic bugs into crashes down the line, are easily recognized in a
  crash dump and without being values that programmers can rely on for useful
  program semantics.
! The current value is byte-repeatable pattern with byte \*(L"0xFE\*(R".
  The values used for pattern initialization might be changed in the future.
! .IP "*" 4
  \&\fBzero\fR Initialize automatic variables with zeroes.
  .RE
  .RS 4
--- 13374,13390 ----
  .Sp
  The three values of \fIchoice\fR are:
  .RS 4
! .IP * 4
! \&\fBuninitialized\fR doesn\*(Aqt initialize any automatic variables.
! This is C and C++\*(Aqs default.
! .IP * 4
  \&\fBpattern\fR Initialize automatic variables with values which will likely
  transform logic bugs into crashes down the line, are easily recognized in a
  crash dump and without being values that programmers can rely on for useful
  program semantics.
! The current value is byte\-repeatable pattern with byte "0xFE".
  The values used for pattern initialization might be changed in the future.
! .IP * 4
  \&\fBzero\fR Initialize automatic variables with zeroes.
  .RE
  .RS 4
*************** uses say \f(CW\*(C`0X5A\*(C'\fR and \f(C
*** 13472,13513 ****
  respectively, will trap with either \fBchoice\fR of trivial
  initializer, i.e., \fBzero\fR initialization will not convert to the
  representation for \f(CW\*(C`false\*(C'\fR, even if it would for a \f(CW\*(C`static\*(C'\fR
! variable of the same type.  This means the initializer pattern doesn't
  generally depend on the type of the initialized variable.  One notable
! exception is that (non-hardened) boolean variables that fit in registers
  are initialized with \f(CW\*(C`false\*(C'\fR (zero), even when \fBpattern\fR is
  requested.
  .Sp
  You can control this behavior for a specific variable by using the variable
  attribute \f(CW\*(C`uninitialized\*(C'\fR.
  .RE
! .IP "\fB\-fvect\-cost\-model=\fR\fImodel\fR" 4
  .IX Item "-fvect-cost-model=model"
  Alter the cost model used for vectorization.  The \fImodel\fR argument
  should be one of \fBunlimited\fR, \fBdynamic\fR, \fBcheap\fR or
! \&\fBvery-cheap\fR.
! With the \fBunlimited\fR model the vectorized code-path is assumed
  to be profitable while with the \fBdynamic\fR model a runtime check
! guards the vectorized code-path to enable it only for iteration
  counts that will likely execute faster than when executing the original
  scalar loop.  The \fBcheap\fR model disables vectorization of
  loops where doing so would be cost prohibitive for example due to
  required runtime checks for data dependence or alignment but otherwise
! is equal to the \fBdynamic\fR model.  The \fBvery-cheap\fR model disables
  vectorization of loops when any runtime check for data dependence or alignment
  is required, it also disables vectorization of epilogue loops but otherwise is
  equal to the \fBcheap\fR model.
  .Sp
  The default cost model depends on other optimization flags and is
  either \fBdynamic\fR or \fBcheap\fR.
! .IP "\fB\-fsimd\-cost\-model=\fR\fImodel\fR" 4
  .IX Item "-fsimd-cost-model=model"
  Alter the cost model used for vectorization of loops marked with the OpenMP
  simd directive.  The \fImodel\fR argument should be one of
  \&\fBunlimited\fR, \fBdynamic\fR, \fBcheap\fR.  All values of \fImodel\fR
  have the same meaning as described in \fB\-fvect\-cost\-model\fR and by
  default a cost model defined with \fB\-fvect\-cost\-model\fR is used.
! .IP "\fB\-ftree\-vrp\fR" 4
  .IX Item "-ftree-vrp"
  Perform Value Range Propagation on trees.  This is similar to the
  constant propagation pass, but instead of values, ranges of values are
--- 13405,13446 ----
  respectively, will trap with either \fBchoice\fR of trivial
  initializer, i.e., \fBzero\fR initialization will not convert to the
  representation for \f(CW\*(C`false\*(C'\fR, even if it would for a \f(CW\*(C`static\*(C'\fR
! variable of the same type.  This means the initializer pattern doesn\*(Aqt
  generally depend on the type of the initialized variable.  One notable
! exception is that (non\-hardened) boolean variables that fit in registers
  are initialized with \f(CW\*(C`false\*(C'\fR (zero), even when \fBpattern\fR is
  requested.
  .Sp
  You can control this behavior for a specific variable by using the variable
  attribute \f(CW\*(C`uninitialized\*(C'\fR.
  .RE
! .IP \fB\-fvect\-cost\-model=\fR\fImodel\fR 4
  .IX Item "-fvect-cost-model=model"
  Alter the cost model used for vectorization.  The \fImodel\fR argument
  should be one of \fBunlimited\fR, \fBdynamic\fR, \fBcheap\fR or
! \&\fBvery\-cheap\fR.
! With the \fBunlimited\fR model the vectorized code\-path is assumed
  to be profitable while with the \fBdynamic\fR model a runtime check
! guards the vectorized code\-path to enable it only for iteration
  counts that will likely execute faster than when executing the original
  scalar loop.  The \fBcheap\fR model disables vectorization of
  loops where doing so would be cost prohibitive for example due to
  required runtime checks for data dependence or alignment but otherwise
! is equal to the \fBdynamic\fR model.  The \fBvery\-cheap\fR model disables
  vectorization of loops when any runtime check for data dependence or alignment
  is required, it also disables vectorization of epilogue loops but otherwise is
  equal to the \fBcheap\fR model.
  .Sp
  The default cost model depends on other optimization flags and is
  either \fBdynamic\fR or \fBcheap\fR.
! .IP \fB\-fsimd\-cost\-model=\fR\fImodel\fR 4
  .IX Item "-fsimd-cost-model=model"
  Alter the cost model used for vectorization of loops marked with the OpenMP
  simd directive.  The \fImodel\fR argument should be one of
  \&\fBunlimited\fR, \fBdynamic\fR, \fBcheap\fR.  All values of \fImodel\fR
  have the same meaning as described in \fB\-fvect\-cost\-model\fR and by
  default a cost model defined with \fB\-fvect\-cost\-model\fR is used.
! .IP \fB\-ftree\-vrp\fR 4
  .IX Item "-ftree-vrp"
  Perform Value Range Propagation on trees.  This is similar to the
  constant propagation pass, but instead of values, ranges of values are
*************** checks like array bound checks and null
*** 13516,13553 ****
  enabled by default at \fB\-O2\fR and higher.  Null pointer check
  elimination is only done if \fB\-fdelete\-null\-pointer\-checks\fR is
  enabled.
! .IP "\fB\-fsplit\-paths\fR" 4
  .IX Item "-fsplit-paths"
  Split paths leading to loop backedges.  This can improve dead code
  elimination and common subexpression elimination.  This is enabled by
  default at \fB\-O3\fR and above.
! .IP "\fB\-fsplit\-ivs\-in\-unroller\fR" 4
  .IX Item "-fsplit-ivs-in-unroller"
  Enables expression of values of induction variables in later iterations
  of the unrolled loop using the value in the first iteration.  This breaks
  long dependency chains, thus improving efficiency of the scheduling passes.
  .Sp
! A combination of \fB\-fweb\fR and \s-1CSE\s0 is often sufficient to obtain the
  same effect.  However, that is not reliable in cases where the loop body
  is more complicated than a single basic block.  It also does not work at all
! on some architectures due to restrictions in the \s-1CSE\s0 pass.
  .Sp
  This optimization is enabled by default.
! .IP "\fB\-fvariable\-expansion\-in\-unroller\fR" 4
  .IX Item "-fvariable-expansion-in-unroller"
  With this option, the compiler creates multiple copies of some
  local variables when unrolling a loop, which can result in superior code.
  .Sp
  This optimization is enabled by default for PowerPC targets, but disabled
  by default otherwise.
! .IP "\fB\-fpartial\-inlining\fR" 4
  .IX Item "-fpartial-inlining"
  Inline parts of functions.  This option has any effect only
  when inlining itself is turned on by the \fB\-finline\-functions\fR
  or \fB\-finline\-small\-functions\fR options.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fpredictive\-commoning\fR" 4
  .IX Item "-fpredictive-commoning"
  Perform predictive commoning optimization, i.e., reusing computations
  (especially memory loads and stores) performed in previous
--- 13449,13486 ----
  enabled by default at \fB\-O2\fR and higher.  Null pointer check
  elimination is only done if \fB\-fdelete\-null\-pointer\-checks\fR is
  enabled.
! .IP \fB\-fsplit\-paths\fR 4
  .IX Item "-fsplit-paths"
  Split paths leading to loop backedges.  This can improve dead code
  elimination and common subexpression elimination.  This is enabled by
  default at \fB\-O3\fR and above.
! .IP \fB\-fsplit\-ivs\-in\-unroller\fR 4
  .IX Item "-fsplit-ivs-in-unroller"
  Enables expression of values of induction variables in later iterations
  of the unrolled loop using the value in the first iteration.  This breaks
  long dependency chains, thus improving efficiency of the scheduling passes.
  .Sp
! A combination of \fB\-fweb\fR and CSE is often sufficient to obtain the
  same effect.  However, that is not reliable in cases where the loop body
  is more complicated than a single basic block.  It also does not work at all
! on some architectures due to restrictions in the CSE pass.
  .Sp
  This optimization is enabled by default.
! .IP \fB\-fvariable\-expansion\-in\-unroller\fR 4
  .IX Item "-fvariable-expansion-in-unroller"
  With this option, the compiler creates multiple copies of some
  local variables when unrolling a loop, which can result in superior code.
  .Sp
  This optimization is enabled by default for PowerPC targets, but disabled
  by default otherwise.
! .IP \fB\-fpartial\-inlining\fR 4
  .IX Item "-fpartial-inlining"
  Inline parts of functions.  This option has any effect only
  when inlining itself is turned on by the \fB\-finline\-functions\fR
  or \fB\-finline\-small\-functions\fR options.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fpredictive\-commoning\fR 4
  .IX Item "-fpredictive-commoning"
  Perform predictive commoning optimization, i.e., reusing computations
  (especially memory loads and stores) performed in previous
*************** iterations of loops.
*** 13555,13561 ****
  .Sp
  This option is enabled at level \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-fprefetch\-loop\-arrays\fR" 4
  .IX Item "-fprefetch-loop-arrays"
  If supported by the target machine, generate instructions to prefetch
  memory to improve the performance of loops that access large arrays.
--- 13488,13494 ----
  .Sp
  This option is enabled at level \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-fprefetch\-loop\-arrays\fR 4
  .IX Item "-fprefetch-loop-arrays"
  If supported by the target machine, generate instructions to prefetch
  memory to improve the performance of loops that access large arrays.
*************** This option may generate better or worse
*** 13564,13575 ****
  dependent on the structure of loops within the source code.
  .Sp
  Disabled at level \fB\-Os\fR.
! .IP "\fB\-fno\-printf\-return\-value\fR" 4
  .IX Item "-fno-printf-return-value"
  Do not substitute constants for known return value of formatted output
  functions such as \f(CW\*(C`sprintf\*(C'\fR, \f(CW\*(C`snprintf\*(C'\fR, \f(CW\*(C`vsprintf\*(C'\fR, and
  \&\f(CW\*(C`vsnprintf\*(C'\fR (but not \f(CW\*(C`printf\*(C'\fR of \f(CW\*(C`fprintf\*(C'\fR).  This
! transformation allows \s-1GCC\s0 to optimize or even eliminate branches based
  on the known return value of these functions called with arguments that
  are either constant, or whose values are known to be in a range that
  makes determining the exact return value possible.  For example, when
--- 13497,13508 ----
  dependent on the structure of loops within the source code.
  .Sp
  Disabled at level \fB\-Os\fR.
! .IP \fB\-fno\-printf\-return\-value\fR 4
  .IX Item "-fno-printf-return-value"
  Do not substitute constants for known return value of formatted output
  functions such as \f(CW\*(C`sprintf\*(C'\fR, \f(CW\*(C`snprintf\*(C'\fR, \f(CW\*(C`vsprintf\*(C'\fR, and
  \&\f(CW\*(C`vsnprintf\*(C'\fR (but not \f(CW\*(C`printf\*(C'\fR of \f(CW\*(C`fprintf\*(C'\fR).  This
! transformation allows GCC to optimize or even eliminate branches based
  on the known return value of these functions called with arguments that
  are either constant, or whose values are known to be in a range that
  makes determining the exact return value possible.  For example, when
*************** The \fB\-fprintf\-return\-value\fR optio
*** 13588,13611 ****
  and yields best results with \fB\-O2\fR and above.  It works in tandem
  with the \fB\-Wformat\-overflow\fR and \fB\-Wformat\-truncation\fR
  options.  The \fB\-fprintf\-return\-value\fR option is enabled by default.
! .IP "\fB\-fno\-peephole\fR" 4
  .IX Item "-fno-peephole"
  .PD 0
! .IP "\fB\-fno\-peephole2\fR" 4
  .IX Item "-fno-peephole2"
  .PD
! Disable any machine-specific peephole optimizations.  The difference
  between \fB\-fno\-peephole\fR and \fB\-fno\-peephole2\fR is in how they
  are implemented in the compiler; some targets use one, some use the
  other, a few use both.
  .Sp
  \&\fB\-fpeephole\fR is enabled by default.
  \&\fB\-fpeephole2\fR enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fno\-guess\-branch\-probability\fR" 4
  .IX Item "-fno-guess-branch-probability"
  Do not guess branch probabilities using heuristics.
  .Sp
! \&\s-1GCC\s0 uses heuristics to guess branch probabilities if they are
  not provided by profiling feedback (\fB\-fprofile\-arcs\fR).  These
  heuristics are based on the control flow graph.  If some branch probabilities
  are specified by \f(CW\*(C`_\|_builtin_expect\*(C'\fR, then the heuristics are
--- 13521,13544 ----
  and yields best results with \fB\-O2\fR and above.  It works in tandem
  with the \fB\-Wformat\-overflow\fR and \fB\-Wformat\-truncation\fR
  options.  The \fB\-fprintf\-return\-value\fR option is enabled by default.
! .IP \fB\-fno\-peephole\fR 4
  .IX Item "-fno-peephole"
  .PD 0
! .IP \fB\-fno\-peephole2\fR 4
  .IX Item "-fno-peephole2"
  .PD
! Disable any machine\-specific peephole optimizations.  The difference
  between \fB\-fno\-peephole\fR and \fB\-fno\-peephole2\fR is in how they
  are implemented in the compiler; some targets use one, some use the
  other, a few use both.
  .Sp
  \&\fB\-fpeephole\fR is enabled by default.
  \&\fB\-fpeephole2\fR enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fno\-guess\-branch\-probability\fR 4
  .IX Item "-fno-guess-branch-probability"
  Do not guess branch probabilities using heuristics.
  .Sp
! GCC uses heuristics to guess branch probabilities if they are
  not provided by profiling feedback (\fB\-fprofile\-arcs\fR).  These
  heuristics are based on the control flow graph.  If some branch probabilities
  are specified by \f(CW\*(C`_\|_builtin_expect\*(C'\fR, then the heuristics are
*************** some cases, it may be useful to disable
*** 13616,13643 ****
  of \f(CW\*(C`_\|_builtin_expect\*(C'\fR are easier to understand.
  .Sp
  It is also possible to specify expected probability of the expression
! with \f(CW\*(C`_\|_builtin_expect_with_probability\*(C'\fR built-in function.
  .Sp
  The default is \fB\-fguess\-branch\-probability\fR at levels
  \&\fB\-O\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-freorder\-blocks\fR" 4
  .IX Item "-freorder-blocks"
  Reorder basic blocks in the compiled function in order to reduce number of
  taken branches and improve code locality.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-freorder\-blocks\-algorithm=\fR\fIalgorithm\fR" 4
  .IX Item "-freorder-blocks-algorithm=algorithm"
  Use the specified algorithm for basic block reordering.  The
  \&\fIalgorithm\fR argument can be \fBsimple\fR, which does not increase
  code size (except sometimes due to secondary effects like alignment),
! or \fBstc\fR, the \*(L"software trace cache\*(R" algorithm, which tries to
  put all often executed code together, minimizing the number of branches
  executed by making extra copies of code.
  .Sp
  The default is \fBsimple\fR at levels \fB\-O1\fR, \fB\-Os\fR, and
  \&\fBstc\fR at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP "\fB\-freorder\-blocks\-and\-partition\fR" 4
  .IX Item "-freorder-blocks-and-partition"
  In addition to reordering basic blocks in the compiled function, in order
  to reduce number of taken branches, partitions hot and cold basic blocks
--- 13549,13576 ----
  of \f(CW\*(C`_\|_builtin_expect\*(C'\fR are easier to understand.
  .Sp
  It is also possible to specify expected probability of the expression
! with \f(CW\*(C`_\|_builtin_expect_with_probability\*(C'\fR built\-in function.
  .Sp
  The default is \fB\-fguess\-branch\-probability\fR at levels
  \&\fB\-O\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-freorder\-blocks\fR 4
  .IX Item "-freorder-blocks"
  Reorder basic blocks in the compiled function in order to reduce number of
  taken branches and improve code locality.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-freorder\-blocks\-algorithm=\fR\fIalgorithm\fR 4
  .IX Item "-freorder-blocks-algorithm=algorithm"
  Use the specified algorithm for basic block reordering.  The
  \&\fIalgorithm\fR argument can be \fBsimple\fR, which does not increase
  code size (except sometimes due to secondary effects like alignment),
! or \fBstc\fR, the "software trace cache" algorithm, which tries to
  put all often executed code together, minimizing the number of branches
  executed by making extra copies of code.
  .Sp
  The default is \fBsimple\fR at levels \fB\-O1\fR, \fB\-Os\fR, and
  \&\fBstc\fR at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP \fB\-freorder\-blocks\-and\-partition\fR 4
  .IX Item "-freorder-blocks-and-partition"
  In addition to reordering basic blocks in the compiled function, in order
  to reduce number of taken branches, partitions hot and cold basic blocks
*************** into separate sections of the assembly a
*** 13645,13658 ****
  paging and cache locality performance.
  .Sp
  This optimization is automatically turned off in the presence of
! exception handling or unwind tables (on targets using setjump/longjump or target specific scheme), for linkonce sections, for functions with a user-defined
  section attribute and on any architecture that does not support named
  sections.  When \fB\-fsplit\-stack\fR is used this option is not
  enabled by default (to avoid linker errors), but may be enabled
  explicitly (if using a working linker).
  .Sp
  Enabled for x86 at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-freorder\-functions\fR" 4
  .IX Item "-freorder-functions"
  Reorder functions in the object file in order to
  improve code locality.  Unlike \fB\-fipa\-reorder\-for\-locality\fR this option
--- 13578,13591 ----
  paging and cache locality performance.
  .Sp
  This optimization is automatically turned off in the presence of
! exception handling or unwind tables (on targets using setjump/longjump or target specific scheme), for linkonce sections, for functions with a user\-defined
  section attribute and on any architecture that does not support named
  sections.  When \fB\-fsplit\-stack\fR is used this option is not
  enabled by default (to avoid linker errors), but may be enabled
  explicitly (if using a working linker).
  .Sp
  Enabled for x86 at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-freorder\-functions\fR 4
  .IX Item "-freorder-functions"
  Reorder functions in the object file in order to
  improve code locality.  Unlike \fB\-fipa\-reorder\-for\-locality\fR this option
*************** frequently executed functions and \f(CW\
*** 13663,13677 ****
  functions.  Reordering is done by the linker so object file format must support
  named sections and linker must place them in a reasonable way.
  .Sp
! This option isn't effective unless you either provide profile feedback
  (see \fB\-fprofile\-arcs\fR for details) or manually annotate functions with
  \&\f(CW\*(C`hot\*(C'\fR or \f(CW\*(C`cold\*(C'\fR attributes.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fstrict\-aliasing\fR" 4
  .IX Item "-fstrict-aliasing"
  Allow the compiler to assume the strictest aliasing rules applicable to
! the language being compiled.  For C (and \*(C+), this activates
  optimizations based on the type of expressions.  In particular, an
  object of one type is assumed never to reside at the same address as an
  object of a different type, unless the types are almost the same.  For
--- 13596,13610 ----
  functions.  Reordering is done by the linker so object file format must support
  named sections and linker must place them in a reasonable way.
  .Sp
! This option isn\*(Aqt effective unless you either provide profile feedback
  (see \fB\-fprofile\-arcs\fR for details) or manually annotate functions with
  \&\f(CW\*(C`hot\*(C'\fR or \f(CW\*(C`cold\*(C'\fR attributes.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fstrict\-aliasing\fR 4
  .IX Item "-fstrict-aliasing"
  Allow the compiler to assume the strictest aliasing rules applicable to
! the language being compiled.  For C (and C++), this activates
  optimizations based on the type of expressions.  In particular, an
  object of one type is assumed never to reside at the same address as an
  object of a different type, unless the types are almost the same.  For
*************** Pay special attention to code like this:
*** 13695,13702 ****
  .Ve
  .Sp
  The practice of reading from a different union member than the one most
! recently written to (called \*(L"type-punning\*(R") is common.  Even with
! \&\fB\-fstrict\-aliasing\fR, type-punning is allowed, provided the memory
  is accessed through the union type.  So, the code above works as
  expected.    However, this code might not:
  .Sp
--- 13628,13635 ----
  .Ve
  .Sp
  The practice of reading from a different union member than the one most
! recently written to (called "type\-punning") is common.  Even with
! \&\fB\-fstrict\-aliasing\fR, type\-punning is allowed, provided the memory
  is accessed through the union type.  So, the code above works as
  expected.    However, this code might not:
  .Sp
*************** uses a union type, e.g.:
*** 13723,13729 ****
  .Sp
  The \fB\-fstrict\-aliasing\fR option is enabled at levels
  \&\fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fipa\-strict\-aliasing\fR" 4
  .IX Item "-fipa-strict-aliasing"
  Controls whether rules of \fB\-fstrict\-aliasing\fR are applied across
  function boundaries.  Note that if multiple functions gets inlined into a
--- 13656,13662 ----
  .Sp
  The \fB\-fstrict\-aliasing\fR option is enabled at levels
  \&\fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fipa\-strict\-aliasing\fR 4
  .IX Item "-fipa-strict-aliasing"
  Controls whether rules of \fB\-fstrict\-aliasing\fR are applied across
  function boundaries.  Note that if multiple functions gets inlined into a
*************** function boundary.
*** 13732,13752 ****
  .Sp
  The \fB\-fipa\-strict\-aliasing\fR option is enabled by default and is
  effective only in combination with \fB\-fstrict\-aliasing\fR.
! .IP "\fB\-falign\-functions\fR" 4
  .IX Item "-falign-functions"
  .PD 0
! .IP "\fB\-falign\-functions=\fR\fIn\fR" 4
  .IX Item "-falign-functions=n"
! .IP "\fB\-falign\-functions=\fR\fIn\fR\fB:\fR\fIm\fR" 4
  .IX Item "-falign-functions=n:m"
! .IP "\fB\-falign\-functions=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR" 4
  .IX Item "-falign-functions=n:m:n2"
! .IP "\fB\-falign\-functions=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR\fB:\fR\fIm2\fR" 4
  .IX Item "-falign-functions=n:m:n2:m2"
  .PD
! Align the start of functions to the next power-of-two greater than or
  equal to \fIn\fR, skipping up to \fIm\fR\-1 bytes.  This ensures that at
! least the first \fIm\fR bytes of the function can be fetched by the \s-1CPU\s0
  without crossing an \fIn\fR\-byte alignment boundary.
  This is an optimization of code performance and alignment is ignored for
  functions considered cold.  If alignment is required for all functions,
--- 13665,13685 ----
  .Sp
  The \fB\-fipa\-strict\-aliasing\fR option is enabled by default and is
  effective only in combination with \fB\-fstrict\-aliasing\fR.
! .IP \fB\-falign\-functions\fR 4
  .IX Item "-falign-functions"
  .PD 0
! .IP \fB\-falign\-functions=\fR\fIn\fR 4
  .IX Item "-falign-functions=n"
! .IP \fB\-falign\-functions=\fR\fIn\fR\fB:\fR\fIm\fR 4
  .IX Item "-falign-functions=n:m"
! .IP \fB\-falign\-functions=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR 4
  .IX Item "-falign-functions=n:m:n2"
! .IP \fB\-falign\-functions=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR\fB:\fR\fIm2\fR 4
  .IX Item "-falign-functions=n:m:n2:m2"
  .PD
! Align the start of functions to the next power\-of\-two greater than or
  equal to \fIn\fR, skipping up to \fIm\fR\-1 bytes.  This ensures that at
! least the first \fIm\fR bytes of the function can be fetched by the CPU
  without crossing an \fIn\fR\-byte alignment boundary.
  This is an optimization of code performance and alignment is ignored for
  functions considered cold.  If alignment is required for all functions,
*************** in that case, it is rounded up.
*** 13773,13801 ****
  \&\fB\-fno\-align\-functions\fR and \fB\-falign\-functions=1\fR are
  equivalent and mean that functions are not aligned.
  .Sp
! If \fIn\fR is not specified or is zero, use a machine-dependent default.
  The maximum allowed \fIn\fR option value is 65536.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP "\fB\-flimit\-function\-alignment\fR" 4
  .IX Item "-flimit-function-alignment"
  If this option is enabled, the compiler tries to avoid unnecessarily
  overaligning functions. It attempts to instruct the assembler to align
  by the amount specified by \fB\-falign\-functions\fR, but not to
  skip more bytes than the size of the function.
! .IP "\fB\-falign\-labels\fR" 4
  .IX Item "-falign-labels"
  .PD 0
! .IP "\fB\-falign\-labels=\fR\fIn\fR" 4
  .IX Item "-falign-labels=n"
! .IP "\fB\-falign\-labels=\fR\fIn\fR\fB:\fR\fIm\fR" 4
  .IX Item "-falign-labels=n:m"
! .IP "\fB\-falign\-labels=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR" 4
  .IX Item "-falign-labels=n:m:n2"
! .IP "\fB\-falign\-labels=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR\fB:\fR\fIm2\fR" 4
  .IX Item "-falign-labels=n:m:n2:m2"
  .PD
! Align all branch targets to a power-of-two boundary.
  .Sp
  Parameters of this option are analogous to the \fB\-falign\-functions\fR option.
  \&\fB\-fno\-align\-labels\fR and \fB\-falign\-labels=1\fR are
--- 13706,13734 ----
  \&\fB\-fno\-align\-functions\fR and \fB\-falign\-functions=1\fR are
  equivalent and mean that functions are not aligned.
  .Sp
! If \fIn\fR is not specified or is zero, use a machine\-dependent default.
  The maximum allowed \fIn\fR option value is 65536.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP \fB\-flimit\-function\-alignment\fR 4
  .IX Item "-flimit-function-alignment"
  If this option is enabled, the compiler tries to avoid unnecessarily
  overaligning functions. It attempts to instruct the assembler to align
  by the amount specified by \fB\-falign\-functions\fR, but not to
  skip more bytes than the size of the function.
! .IP \fB\-falign\-labels\fR 4
  .IX Item "-falign-labels"
  .PD 0
! .IP \fB\-falign\-labels=\fR\fIn\fR 4
  .IX Item "-falign-labels=n"
! .IP \fB\-falign\-labels=\fR\fIn\fR\fB:\fR\fIm\fR 4
  .IX Item "-falign-labels=n:m"
! .IP \fB\-falign\-labels=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR 4
  .IX Item "-falign-labels=n:m:n2"
! .IP \fB\-falign\-labels=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR\fB:\fR\fIm2\fR 4
  .IX Item "-falign-labels=n:m:n2:m2"
  .PD
! Align all branch targets to a power\-of\-two boundary.
  .Sp
  Parameters of this option are analogous to the \fB\-falign\-functions\fR option.
  \&\fB\-fno\-align\-labels\fR and \fB\-falign\-labels=1\fR are
*************** equivalent and mean that labels are not
*** 13804,13827 ****
  If \fB\-falign\-loops\fR or \fB\-falign\-jumps\fR are applicable and
  are greater than this value, then their values are used instead.
  .Sp
! If \fIn\fR is not specified or is zero, use a machine-dependent default
  which is very likely to be \fB1\fR, meaning no alignment.
  The maximum allowed \fIn\fR option value is 65536.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP "\fB\-falign\-loops\fR" 4
  .IX Item "-falign-loops"
  .PD 0
! .IP "\fB\-falign\-loops=\fR\fIn\fR" 4
  .IX Item "-falign-loops=n"
! .IP "\fB\-falign\-loops=\fR\fIn\fR\fB:\fR\fIm\fR" 4
  .IX Item "-falign-loops=n:m"
! .IP "\fB\-falign\-loops=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR" 4
  .IX Item "-falign-loops=n:m:n2"
! .IP "\fB\-falign\-loops=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR\fB:\fR\fIm2\fR" 4
  .IX Item "-falign-loops=n:m:n2:m2"
  .PD
! Align loops to a power-of-two boundary.  If the loops are executed
  many times, this makes up for any execution of the dummy padding
  instructions.
  This is an optimization of code performance and alignment is ignored for
--- 13737,13760 ----
  If \fB\-falign\-loops\fR or \fB\-falign\-jumps\fR are applicable and
  are greater than this value, then their values are used instead.
  .Sp
! If \fIn\fR is not specified or is zero, use a machine\-dependent default
  which is very likely to be \fB1\fR, meaning no alignment.
  The maximum allowed \fIn\fR option value is 65536.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP \fB\-falign\-loops\fR 4
  .IX Item "-falign-loops"
  .PD 0
! .IP \fB\-falign\-loops=\fR\fIn\fR 4
  .IX Item "-falign-loops=n"
! .IP \fB\-falign\-loops=\fR\fIn\fR\fB:\fR\fIm\fR 4
  .IX Item "-falign-loops=n:m"
! .IP \fB\-falign\-loops=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR 4
  .IX Item "-falign-loops=n:m:n2"
! .IP \fB\-falign\-loops=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR\fB:\fR\fIm2\fR 4
  .IX Item "-falign-loops=n:m:n2:m2"
  .PD
! Align loops to a power\-of\-two boundary.  If the loops are executed
  many times, this makes up for any execution of the dummy padding
  instructions.
  This is an optimization of code performance and alignment is ignored for
*************** Parameters of this option are analogous
*** 13835,13856 ****
  equivalent and mean that loops are not aligned.
  The maximum allowed \fIn\fR option value is 65536.
  .Sp
! If \fIn\fR is not specified or is zero, use a machine-dependent default.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP "\fB\-falign\-jumps\fR" 4
  .IX Item "-falign-jumps"
  .PD 0
! .IP "\fB\-falign\-jumps=\fR\fIn\fR" 4
  .IX Item "-falign-jumps=n"
! .IP "\fB\-falign\-jumps=\fR\fIn\fR\fB:\fR\fIm\fR" 4
  .IX Item "-falign-jumps=n:m"
! .IP "\fB\-falign\-jumps=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR" 4
  .IX Item "-falign-jumps=n:m:n2"
! .IP "\fB\-falign\-jumps=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR\fB:\fR\fIm2\fR" 4
  .IX Item "-falign-jumps=n:m:n2:m2"
  .PD
! Align branch targets to a power-of-two boundary, for branch targets
  where the targets can only be reached by jumping.  In this case,
  no dummy operations need be executed.
  This is an optimization of code performance and alignment is ignored for
--- 13768,13789 ----
  equivalent and mean that loops are not aligned.
  The maximum allowed \fIn\fR option value is 65536.
  .Sp
! If \fIn\fR is not specified or is zero, use a machine\-dependent default.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP \fB\-falign\-jumps\fR 4
  .IX Item "-falign-jumps"
  .PD 0
! .IP \fB\-falign\-jumps=\fR\fIn\fR 4
  .IX Item "-falign-jumps=n"
! .IP \fB\-falign\-jumps=\fR\fIn\fR\fB:\fR\fIm\fR 4
  .IX Item "-falign-jumps=n:m"
! .IP \fB\-falign\-jumps=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR 4
  .IX Item "-falign-jumps=n:m:n2"
! .IP \fB\-falign\-jumps=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR\fB:\fR\fIm2\fR 4
  .IX Item "-falign-jumps=n:m:n2:m2"
  .PD
! Align branch targets to a power\-of\-two boundary, for branch targets
  where the targets can only be reached by jumping.  In this case,
  no dummy operations need be executed.
  This is an optimization of code performance and alignment is ignored for
*************** Parameters of this option are analogous
*** 13863,13885 ****
  \&\fB\-fno\-align\-jumps\fR and \fB\-falign\-jumps=1\fR are
  equivalent and mean that loops are not aligned.
  .Sp
! If \fIn\fR is not specified or is zero, use a machine-dependent default.
  The maximum allowed \fIn\fR option value is 65536.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP "\fB\-fmin\-function\-alignment\fR" 4
  .IX Item "-fmin-function-alignment"
! Specify minimal alignment of functions to the next power-of-two greater than or
  equal to \fIn\fR. Unlike \fB\-falign\-functions\fR this alignment is applied
  also to all functions (even those considered cold).  The alignment is also not
  affected by \fB\-flimit\-function\-alignment\fR
! .IP "\fB\-fno\-allocation\-dce\fR" 4
  .IX Item "-fno-allocation-dce"
! Do not remove unused \*(C+ allocations (using operator \f(CW\*(C`new\*(C'\fR and operator \f(CW\*(C`delete\*(C'\fR)
  in dead code elimination.
  .Sp
  See also \fB\-fmalloc\-dce\fR.
! .IP "\fB\-fallow\-store\-data\-races\fR" 4
  .IX Item "-fallow-store-data-races"
  Allow the compiler to perform optimizations that may introduce new data races
  on stores, without proving that the variable cannot be concurrently accessed
--- 13796,13818 ----
  \&\fB\-fno\-align\-jumps\fR and \fB\-falign\-jumps=1\fR are
  equivalent and mean that loops are not aligned.
  .Sp
! If \fIn\fR is not specified or is zero, use a machine\-dependent default.
  The maximum allowed \fIn\fR option value is 65536.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP \fB\-fmin\-function\-alignment\fR 4
  .IX Item "-fmin-function-alignment"
! Specify minimal alignment of functions to the next power\-of\-two greater than or
  equal to \fIn\fR. Unlike \fB\-falign\-functions\fR this alignment is applied
  also to all functions (even those considered cold).  The alignment is also not
  affected by \fB\-flimit\-function\-alignment\fR
! .IP \fB\-fno\-allocation\-dce\fR 4
  .IX Item "-fno-allocation-dce"
! Do not remove unused C++ allocations (using operator \f(CW\*(C`new\*(C'\fR and operator \f(CW\*(C`delete\*(C'\fR)
  in dead code elimination.
  .Sp
  See also \fB\-fmalloc\-dce\fR.
! .IP \fB\-fallow\-store\-data\-races\fR 4
  .IX Item "-fallow-store-data-races"
  Allow the compiler to perform optimizations that may introduce new data races
  on stores, without proving that the variable cannot be concurrently accessed
*************** use this option if it is known that glob
*** 13888,13910 ****
  multiple threads.
  .Sp
  Examples of optimizations enabled by \fB\-fallow\-store\-data\-races\fR include
! hoisting or if-conversions that may cause a value that was already in memory
! to be re-written with that same value.  Such re-writing is safe in a single
! threaded context but may be unsafe in a multi-threaded context.  Note that on
! some processors, if-conversions may be required in order to enable
  vectorization.
  .Sp
  Enabled at level \fB\-Ofast\fR.
! .IP "\fB\-funit\-at\-a\-time\fR" 4
  .IX Item "-funit-at-a-time"
  This option is left for compatibility reasons. \fB\-funit\-at\-a\-time\fR
  has no effect, while \fB\-fno\-unit\-at\-a\-time\fR implies
  \&\fB\-fno\-toplevel\-reorder\fR and \fB\-fno\-section\-anchors\fR.
  .Sp
  Enabled by default.
! .IP "\fB\-fno\-toplevel\-reorder\fR" 4
  .IX Item "-fno-toplevel-reorder"
! Do not reorder top-level functions, variables, and \f(CW\*(C`asm\*(C'\fR
  statements.  Output them in the same order that they appear in the
  input file.  When this option is used, unreferenced static variables
  are not removed.  This option is intended to support existing code
--- 13821,13843 ----
  multiple threads.
  .Sp
  Examples of optimizations enabled by \fB\-fallow\-store\-data\-races\fR include
! hoisting or if\-conversions that may cause a value that was already in memory
! to be re\-written with that same value.  Such re\-writing is safe in a single
! threaded context but may be unsafe in a multi\-threaded context.  Note that on
! some processors, if\-conversions may be required in order to enable
  vectorization.
  .Sp
  Enabled at level \fB\-Ofast\fR.
! .IP \fB\-funit\-at\-a\-time\fR 4
  .IX Item "-funit-at-a-time"
  This option is left for compatibility reasons. \fB\-funit\-at\-a\-time\fR
  has no effect, while \fB\-fno\-unit\-at\-a\-time\fR implies
  \&\fB\-fno\-toplevel\-reorder\fR and \fB\-fno\-section\-anchors\fR.
  .Sp
  Enabled by default.
! .IP \fB\-fno\-toplevel\-reorder\fR 4
  .IX Item "-fno-toplevel-reorder"
! Do not reorder top\-level functions, variables, and \f(CW\*(C`asm\*(C'\fR
  statements.  Output them in the same order that they appear in the
  input file.  When this option is used, unreferenced static variables
  are not removed.  This option is intended to support existing code
*************** use attributes when possible.
*** 13915,13921 ****
  also at \fB\-O0\fR if \fB\-fsection\-anchors\fR is explicitly requested.
  Additionally \fB\-fno\-toplevel\-reorder\fR implies
  \&\fB\-fno\-section\-anchors\fR.
! .IP "\fB\-funreachable\-traps\fR" 4
  .IX Item "-funreachable-traps"
  With this option, the compiler turns calls to
  \&\f(CW\*(C`_\|_builtin_unreachable\*(C'\fR into traps, instead of using them for
--- 13848,13854 ----
  also at \fB\-O0\fR if \fB\-fsection\-anchors\fR is explicitly requested.
  Additionally \fB\-fno\-toplevel\-reorder\fR implies
  \&\fB\-fno\-section\-anchors\fR.
! .IP \fB\-funreachable\-traps\fR 4
  .IX Item "-funreachable-traps"
  With this option, the compiler turns calls to
  \&\f(CW\*(C`_\|_builtin_unreachable\*(C'\fR into traps, instead of using them for
*************** options.  If \fB\-fsanitize=unreachable\
*** 13928,13944 ****
  takes priority over this one.
  .Sp
  This option is enabled by default at \fB\-O0\fR and \fB\-Og\fR.
! .IP "\fB\-fweb\fR" 4
  .IX Item "-fweb"
  Constructs webs as commonly used for register allocation purposes and assign
  each web individual pseudo register.  This allows the register allocation pass
  to operate on pseudos directly, but also strengthens several other optimization
! passes, such as \s-1CSE,\s0 loop optimizer and trivial dead code remover.  It can,
  however, make debugging impossible, since variables no longer stay in a
! \&\*(L"home register\*(R".
  .Sp
  Enabled by default with \fB\-funroll\-loops\fR.
! .IP "\fB\-fwhole\-program\fR" 4
  .IX Item "-fwhole-program"
  Assume that the current compilation unit represents the whole program being
  compiled.  All public functions and variables with the exception of \f(CW\*(C`main\*(C'\fR
--- 13861,13877 ----
  takes priority over this one.
  .Sp
  This option is enabled by default at \fB\-O0\fR and \fB\-Og\fR.
! .IP \fB\-fweb\fR 4
  .IX Item "-fweb"
  Constructs webs as commonly used for register allocation purposes and assign
  each web individual pseudo register.  This allows the register allocation pass
  to operate on pseudos directly, but also strengthens several other optimization
! passes, such as CSE, loop optimizer and trivial dead code remover.  It can,
  however, make debugging impossible, since variables no longer stay in a
! "home register".
  .Sp
  Enabled by default with \fB\-funroll\-loops\fR.
! .IP \fB\-fwhole\-program\fR 4
  .IX Item "-fwhole-program"
  Assume that the current compilation unit represents the whole program being
  compiled.  All public functions and variables with the exception of \f(CW\*(C`main\*(C'\fR
*************** and in effect are optimized more aggress
*** 13947,13966 ****
  .Sp
  With \fB\-flto\fR this option has a limited use.  In most cases the
  precise list of symbols used or exported from the binary is known the
! resolution info passed to the link-time optimizer by the linker plugin.  It is
  still useful if no linker plugin is used or during incremental link step when
  final code is produced (with \fB\-flto\fR
  \&\fB\-flinker\-output=nolto\-rel\fR).
! .IP "\fB\-flto[=\fR\fIn\fR\fB]\fR" 4
  .IX Item "-flto[=n]"
! This option runs the standard link-time optimizer.  When invoked
! with source code, it generates \s-1GIMPLE\s0 (one of \s-1GCC\s0's internal
! representations) and writes it to special \s-1ELF\s0 sections in the object
  file.  When the object files are linked together, all the function
! bodies are read from these \s-1ELF\s0 sections and instantiated as if they
  had been part of the same translation unit.
  .Sp
! To use the link-time optimizer, \fB\-flto\fR and optimization
  options should be specified at compile time and during the final link.
  It is recommended that you compile all the files participating in the
  same link with the same options and also specify those options at
--- 13880,13899 ----
  .Sp
  With \fB\-flto\fR this option has a limited use.  In most cases the
  precise list of symbols used or exported from the binary is known the
! resolution info passed to the link\-time optimizer by the linker plugin.  It is
  still useful if no linker plugin is used or during incremental link step when
  final code is produced (with \fB\-flto\fR
  \&\fB\-flinker\-output=nolto\-rel\fR).
! .IP \fB\-flto[=\fR\fIn\fR\fB]\fR 4
  .IX Item "-flto[=n]"
! This option runs the standard link\-time optimizer.  When invoked
! with source code, it generates GIMPLE (one of GCC\*(Aqs internal
! representations) and writes it to special ELF sections in the object
  file.  When the object files are linked together, all the function
! bodies are read from these ELF sections and instantiated as if they
  had been part of the same translation unit.
  .Sp
! To use the link\-time optimizer, \fB\-flto\fR and optimization
  options should be specified at compile time and during the final link.
  It is recommended that you compile all the files participating in the
  same link with the same options and also specify those options at
*************** For example:
*** 13973,14011 ****
  \&        gcc \-o myprog \-flto \-O2 foo.o bar.o
  .Ve
  .Sp
! The first two invocations to \s-1GCC\s0 save a bytecode representation
! of \s-1GIMPLE\s0 into special \s-1ELF\s0 sections inside \fIfoo.o\fR and
! \&\fIbar.o\fR.  The final invocation reads the \s-1GIMPLE\s0 bytecode from
  \&\fIfoo.o\fR and \fIbar.o\fR, merges the two files into a single
  internal image, and compiles the result as usual.  Since both
  \&\fIfoo.o\fR and \fIbar.o\fR are merged into a single image, this
! causes all the interprocedural analyses and optimizations in \s-1GCC\s0 to
  work across the two files as if they were a single one.  This means,
  for example, that the inliner is able to inline functions in
! \&\fIbar.o\fR into functions in \fIfoo.o\fR and vice-versa.
  .Sp
! Another (simpler) way to enable link-time optimization is:
  .Sp
  .Vb 1
  \&        gcc \-o myprog \-flto \-O2 foo.c bar.c
  .Ve
  .Sp
  The above generates bytecode for \fIfoo.c\fR and \fIbar.c\fR,
! merges them together into a single \s-1GIMPLE\s0 representation and optimizes
  them as usual to produce \fImyprog\fR.
  .Sp
! The important thing to keep in mind is that to enable link-time
! optimizations you need to use the \s-1GCC\s0 driver to perform the link step.
! \&\s-1GCC\s0 automatically performs link-time optimization if any of the
! objects involved were compiled with the \fB\-flto\fR command-line option.
  You can always override
! the automatic decision to do link-time optimization
  by passing \fB\-fno\-lto\fR to the link command.
  .Sp
  To make whole program optimization effective, it is necessary to make
  certain whole program assumptions.  The compiler needs to know
  what functions and variables can be accessed by libraries and runtime
! outside of the link-time optimized unit.  When supported by the linker,
  the linker plugin (see \fB\-fuse\-linker\-plugin\fR) passes information
  to the compiler about used and externally visible symbols.  When
  the linker plugin is not available, \fB\-fwhole\-program\fR should be
--- 13906,13944 ----
  \&        gcc \-o myprog \-flto \-O2 foo.o bar.o
  .Ve
  .Sp
! The first two invocations to GCC save a bytecode representation
! of GIMPLE into special ELF sections inside \fIfoo.o\fR and
! \&\fIbar.o\fR.  The final invocation reads the GIMPLE bytecode from
  \&\fIfoo.o\fR and \fIbar.o\fR, merges the two files into a single
  internal image, and compiles the result as usual.  Since both
  \&\fIfoo.o\fR and \fIbar.o\fR are merged into a single image, this
! causes all the interprocedural analyses and optimizations in GCC to
  work across the two files as if they were a single one.  This means,
  for example, that the inliner is able to inline functions in
! \&\fIbar.o\fR into functions in \fIfoo.o\fR and vice\-versa.
  .Sp
! Another (simpler) way to enable link\-time optimization is:
  .Sp
  .Vb 1
  \&        gcc \-o myprog \-flto \-O2 foo.c bar.c
  .Ve
  .Sp
  The above generates bytecode for \fIfoo.c\fR and \fIbar.c\fR,
! merges them together into a single GIMPLE representation and optimizes
  them as usual to produce \fImyprog\fR.
  .Sp
! The important thing to keep in mind is that to enable link\-time
! optimizations you need to use the GCC driver to perform the link step.
! GCC automatically performs link\-time optimization if any of the
! objects involved were compiled with the \fB\-flto\fR command\-line option.
  You can always override
! the automatic decision to do link\-time optimization
  by passing \fB\-fno\-lto\fR to the link command.
  .Sp
  To make whole program optimization effective, it is necessary to make
  certain whole program assumptions.  The compiler needs to know
  what functions and variables can be accessed by libraries and runtime
! outside of the link\-time optimized unit.  When supported by the linker,
  the linker plugin (see \fB\-fuse\-linker\-plugin\fR) passes information
  to the compiler about used and externally visible symbols.  When
  the linker plugin is not available, \fB\-fwhole\-program\fR should be
*************** to more aggressive optimization decision
*** 14014,14040 ****
  .Sp
  When a file is compiled with \fB\-flto\fR without
  \&\fB\-fuse\-linker\-plugin\fR, the generated object file is larger than
! a regular object file because it contains \s-1GIMPLE\s0 bytecodes and the usual
  final code (see \fB\-ffat\-lto\-objects\fR).  This means that
! object files with \s-1LTO\s0 information can be linked as normal object
  files; if \fB\-fno\-lto\fR is passed to the linker, no
  interprocedural optimizations are applied.  Note that when
  \&\fB\-fno\-fat\-lto\-objects\fR is enabled the compile stage is faster
! but you cannot perform a regular, non-LTO link on them.
  .Sp
! When producing the final binary, \s-1GCC\s0 only
! applies link-time optimizations to those files that contain bytecode.
  Therefore, you can mix and match object files and libraries with
! \&\s-1GIMPLE\s0 bytecodes and final object code.  \s-1GCC\s0 automatically selects
! which files to optimize in \s-1LTO\s0 mode and which files to link without
  further processing.
  .Sp
  Generally, options specified at link time override those
! specified at compile time, although in some cases \s-1GCC\s0 attempts to infer
! link-time options from the settings used to compile the input files.
  .Sp
  If you do not specify an optimization level option \fB\-O\fR at
! link time, then \s-1GCC\s0 uses the highest optimization level
  used when compiling the object files.  Note that it is generally
  ineffective to specify an optimization level option only at link time and
  not at compile time, for two reasons.  First, compiling without
--- 13947,13973 ----
  .Sp
  When a file is compiled with \fB\-flto\fR without
  \&\fB\-fuse\-linker\-plugin\fR, the generated object file is larger than
! a regular object file because it contains GIMPLE bytecodes and the usual
  final code (see \fB\-ffat\-lto\-objects\fR).  This means that
! object files with LTO information can be linked as normal object
  files; if \fB\-fno\-lto\fR is passed to the linker, no
  interprocedural optimizations are applied.  Note that when
  \&\fB\-fno\-fat\-lto\-objects\fR is enabled the compile stage is faster
! but you cannot perform a regular, non\-LTO link on them.
  .Sp
! When producing the final binary, GCC only
! applies link\-time optimizations to those files that contain bytecode.
  Therefore, you can mix and match object files and libraries with
! GIMPLE bytecodes and final object code.  GCC automatically selects
! which files to optimize in LTO mode and which files to link without
  further processing.
  .Sp
  Generally, options specified at link time override those
! specified at compile time, although in some cases GCC attempts to infer
! link\-time options from the settings used to compile the input files.
  .Sp
  If you do not specify an optimization level option \fB\-O\fR at
! link time, then GCC uses the highest optimization level
  used when compiling the object files.  Note that it is generally
  ineffective to specify an optimization level option only at link time and
  not at compile time, for two reasons.  First, compiling without
*************** needed for effective optimization at lin
*** 14043,14049 ****
  optimization passes can be performed only at compile time and
  not at link time.
  .Sp
! There are some code generation flags preserved by \s-1GCC\s0 when
  generating bytecodes, as they need to be used during the final link.
  Currently, the following options and their settings are taken from
  the first object file that explicitly specifies them:
--- 13976,13982 ----
  optimization passes can be performed only at compile time and
  not at link time.
  .Sp
! There are some code generation flags preserved by GCC when
  generating bytecodes, as they need to be used during the final link.
  Currently, the following options and their settings are taken from
  the first object file that explicitly specifies them:
*************** The following options \fB\-fPIC\fR, \fB\
*** 14062,14068 ****
  \&        B<\-fPIC/\-fpic> + B<\-fpie> = B<\-fpie>
  .Ve
  .Sp
! Certain ABI-changing flags are required to match in all compilation units,
  and trying to override this at link time with a conflicting value
  is ignored.  This includes options such as \fB\-freg\-struct\-return\fR
  and \fB\-fpcc\-struct\-return\fR.
--- 13995,14001 ----
  \&        B<\-fPIC/\-fpic> + B<\-fpie> = B<\-fpie>
  .Ve
  .Sp
! Certain ABI\-changing flags are required to match in all compilation units,
  and trying to override this at link time with a conflicting value
  is ignored.  This includes options such as \fB\-freg\-struct\-return\fR
  and \fB\-fpcc\-struct\-return\fR.
*************** over \fB\-ffp\-contract=fast\fR.  You ca
*** 14077,14083 ****
  .Sp
  Diagnostic options such as \fB\-Wstringop\-overflow\fR are passed
  through to the link stage and their setting matches that of the
! compile-step at function granularity.  Note that this matters only
  for diagnostics emitted during optimization.  Note that code
  transforms such as inlining can lead to warnings being enabled
  or disabled for regions if code not consistent with the setting
--- 14010,14016 ----
  .Sp
  Diagnostic options such as \fB\-Wstringop\-overflow\fR are passed
  through to the link stage and their setting matches that of the
! compile\-step at function granularity.  Note that this matters only
  for diagnostics emitted during optimization.  Note that code
  transforms such as inlining can lead to warnings being enabled
  or disabled for regions if code not consistent with the setting
*************** When you need to pass options to the ass
*** 14087,14093 ****
  \&\fB\-Xassembler\fR make sure to either compile such translation
  units with \fB\-fno\-lto\fR or consistently use the same assembler
  options on all translation units.  You can alternatively also
! specify assembler options at \s-1LTO\s0 link time.
  .Sp
  To enable debug info generation you need to supply \fB\-g\fR at
  compile time.  If any of the input files at link time were built
--- 14020,14026 ----
  \&\fB\-Xassembler\fR make sure to either compile such translation
  units with \fB\-fno\-lto\fR or consistently use the same assembler
  options on all translation units.  You can alternatively also
! specify assembler options at LTO link time.
  .Sp
  To enable debug info generation you need to supply \fB\-g\fR at
  compile time.  If any of the input files at link time were built
*************** like the dwarf level \fB\-gdwarf\-5\fR n
*** 14097,14109 ****
  at the linker command line and mixing different settings in different
  translation units is discouraged.
  .Sp
! If \s-1LTO\s0 encounters objects with C linkage declared with incompatible
  types in separate translation units to be linked together (undefined
! behavior according to \s-1ISO C99 6.2.7\s0), a non-fatal diagnostic may be
  issued.  The behavior is still undefined at run time.  Similar
  diagnostics may be raised for other languages.
  .Sp
! Another feature of \s-1LTO\s0 is that it is possible to apply interprocedural
  optimizations on files written in different languages:
  .Sp
  .Vb 4
--- 14030,14042 ----
  at the linker command line and mixing different settings in different
  translation units is discouraged.
  .Sp
! If LTO encounters objects with C linkage declared with incompatible
  types in separate translation units to be linked together (undefined
! behavior according to ISO C99 6.2.7), a non\-fatal diagnostic may be
  issued.  The behavior is still undefined at run time.  Similar
  diagnostics may be raised for other languages.
  .Sp
! Another feature of LTO is that it is possible to apply interprocedural
  optimizations on files written in different languages:
  .Sp
  .Vb 4
*************** optimizations on files written in differ
*** 14113,14151 ****
  \&        g++ \-o myprog \-flto \-O3 foo.o bar.o baz.o \-lgfortran
  .Ve
  .Sp
! Notice that the final link is done with \fBg++\fR to get the \*(C+
  runtime libraries and \fB\-lgfortran\fR is added to get the Fortran
! runtime libraries.  In general, when mixing languages in \s-1LTO\s0 mode, you
  should use the same link command options as when mixing languages in a
! regular (non-LTO) compilation.
  .Sp
! If object files containing \s-1GIMPLE\s0 bytecode are stored in a library archive, say
! \&\fIlibfoo.a\fR, it is possible to extract and use them in an \s-1LTO\s0 link if you
  are using a linker with plugin support.  To create static libraries suitable
! for \s-1LTO,\s0 use \fBgcc-ar\fR and \fBgcc-ranlib\fR instead of \fBar\fR
  and \fBranlib\fR;
! to show the symbols of object files with \s-1GIMPLE\s0 bytecode, use
! \&\fBgcc-nm\fR.  Those commands require that \fBar\fR, \fBranlib\fR
  and \fBnm\fR have been compiled with plugin support.  At link time, use the
  flag \fB\-fuse\-linker\-plugin\fR to ensure that the library participates in
! the \s-1LTO\s0 optimization process:
  .Sp
  .Vb 1
  \&        gcc \-o myprog \-O2 \-flto \-fuse\-linker\-plugin a.o b.o \-lfoo
  .Ve
  .Sp
  With the linker plugin enabled, the linker extracts the needed
! \&\s-1GIMPLE\s0 files from \fIlibfoo.a\fR and passes them on to the running \s-1GCC\s0
! to make them part of the aggregated \s-1GIMPLE\s0 image to be optimized.
  .Sp
  If you are not using a linker with plugin support and/or do not
  enable the linker plugin, then the objects inside \fIlibfoo.a\fR
  are extracted and linked as usual, but they do not participate
! in the \s-1LTO\s0 optimization process.  In order to make a static library suitable
! for both \s-1LTO\s0 optimization and usual linkage, compile its object files with
  \&\fB\-flto\fR \fB\-ffat\-lto\-objects\fR.
  .Sp
! Link-time optimizations do not require the presence of the whole program to
  operate.  If the program does not require any symbols to be exported, it is
  possible to combine \fB\-flto\fR and \fB\-fwhole\-program\fR to allow
  the interprocedural optimizers to use more aggressive assumptions which may
--- 14046,14084 ----
  \&        g++ \-o myprog \-flto \-O3 foo.o bar.o baz.o \-lgfortran
  .Ve
  .Sp
! Notice that the final link is done with \fBg++\fR to get the C++
  runtime libraries and \fB\-lgfortran\fR is added to get the Fortran
! runtime libraries.  In general, when mixing languages in LTO mode, you
  should use the same link command options as when mixing languages in a
! regular (non\-LTO) compilation.
  .Sp
! If object files containing GIMPLE bytecode are stored in a library archive, say
! \&\fIlibfoo.a\fR, it is possible to extract and use them in an LTO link if you
  are using a linker with plugin support.  To create static libraries suitable
! for LTO, use \fBgcc\-ar\fR and \fBgcc\-ranlib\fR instead of \fBar\fR
  and \fBranlib\fR;
! to show the symbols of object files with GIMPLE bytecode, use
! \&\fBgcc\-nm\fR.  Those commands require that \fBar\fR, \fBranlib\fR
  and \fBnm\fR have been compiled with plugin support.  At link time, use the
  flag \fB\-fuse\-linker\-plugin\fR to ensure that the library participates in
! the LTO optimization process:
  .Sp
  .Vb 1
  \&        gcc \-o myprog \-O2 \-flto \-fuse\-linker\-plugin a.o b.o \-lfoo
  .Ve
  .Sp
  With the linker plugin enabled, the linker extracts the needed
! GIMPLE files from \fIlibfoo.a\fR and passes them on to the running GCC
! to make them part of the aggregated GIMPLE image to be optimized.
  .Sp
  If you are not using a linker with plugin support and/or do not
  enable the linker plugin, then the objects inside \fIlibfoo.a\fR
  are extracted and linked as usual, but they do not participate
! in the LTO optimization process.  In order to make a static library suitable
! for both LTO optimization and usual linkage, compile its object files with
  \&\fB\-flto\fR \fB\-ffat\-lto\-objects\fR.
  .Sp
! Link\-time optimizations do not require the presence of the whole program to
  operate.  If the program does not require any symbols to be exported, it is
  possible to combine \fB\-flto\fR and \fB\-fwhole\-program\fR to allow
  the interprocedural optimizers to use more aggressive assumptions which may
*************** lead to improved optimization opportunit
*** 14153,14270 ****
  Use of \fB\-fwhole\-program\fR is not needed when linker plugin is
  active (see \fB\-fuse\-linker\-plugin\fR).
  .Sp
! The current implementation of \s-1LTO\s0 makes no
  attempt to generate bytecode that is portable between different
  types of hosts.  The bytecode files are versioned and there is a
  strict version check, so bytecode files generated in one version of
! \&\s-1GCC\s0 do not work with an older or newer version of \s-1GCC.\s0
  .Sp
! Link-time optimization does not work well with generation of debugging
! information on systems other than those using a combination of \s-1ELF\s0 and
! \&\s-1DWARF.\s0
  .Sp
  If you specify the optional \fIn\fR, the optimization and code
  generation done at link time is executed in parallel using \fIn\fR
  parallel jobs by utilizing an installed \fBmake\fR program.  The
! environment variable \fB\s-1MAKE\s0\fR may be used to override the program
  used.
  .Sp
! You can also specify \fB\-flto=jobserver\fR to use \s-1GNU\s0 make's
  job server mode to determine the number of parallel jobs. This
! is useful when the Makefile calling \s-1GCC\s0 is already executing in parallel.
  You must prepend a \fB+\fR to the command recipe in the parent Makefile
! for this to work.  This option likely only works if \fB\s-1MAKE\s0\fR is
! \&\s-1GNU\s0 make.  Even without the option value, \s-1GCC\s0 tries to automatically
! detect a running \s-1GNU\s0 make's job server.
  .Sp
! Use \fB\-flto=auto\fR to use \s-1GNU\s0 make's job server, if available,
! or otherwise fall back to autodetection of the number of \s-1CPU\s0 threads
  present in your system.
! .IP "\fB\-flto\-partition=\fR\fIalg\fR" 4
  .IX Item "-flto-partition=alg"
! Specify the partitioning algorithm used by the link-time optimizer.
  The value is either \fB1to1\fR to specify a partitioning mirroring
  the original source files or \fBbalanced\fR to specify partitioning
  into equally sized chunks (whenever possible) or \fBmax\fR to create
  new partition for every symbol where possible or \fBcache\fR to
  balance chunk sizes while keeping related symbols together for better
! caching in incremental \s-1LTO.\s0  Specifying \fBnone\fR as an algorithm
  disables partitioning and streaming completely.
  The default value is \fBbalanced\fR. While \fB1to1\fR can be used
  as an workaround for various code ordering issues, the \fBmax\fR
  partitioning is intended for internal testing only.
  The value \fBone\fR specifies that exactly one partition should be
  used while the value \fBnone\fR bypasses partitioning and executes
! the link-time optimization step directly from the \s-1WPA\s0 phase.
! .IP "\fB\-flto\-incremental=\fR\fIpath\fR" 4
  .IX Item "-flto-incremental=path"
! Enable incremental \s-1LTO,\s0 with its cache in given existing directory.
! Can significantly shorten edit-compile cycles with \s-1LTO.\s0
  .Sp
! When used with \s-1LTO\s0 (\fB\-flto\fR), the output of translation units
! inside \s-1LTO\s0 is cached. Cached translation units are likely to be
  encountered again when recompiling with small code changes, leading to
  recompile time reduction.
  .Sp
! Multiple \s-1GCC\s0 instances can use the same cache in parallel.
! .IP "\fB\-flto\-incremental\-cache\-size=\fR\fIn\fR" 4
  .IX Item "-flto-incremental-cache-size=n"
! Specifies number of cache entries in incremental \s-1LTO\s0 after which to prune
  old entries. This is a soft limit, temporarily there may be more entries.
! .IP "\fB\-flto\-compression\-level=\fR\fIn\fR" 4
  .IX Item "-flto-compression-level=n"
  This option specifies the level of compression used for intermediate
! language written to \s-1LTO\s0 object files, and is only meaningful in
! conjunction with \s-1LTO\s0 mode (\fB\-flto\fR).  \s-1GCC\s0 currently supports two
! \&\s-1LTO\s0 compression algorithms. For zstd, valid values are 0 (no compression)
  to 19 (maximum compression), while zlib supports values from 0 to 9.
  Values outside this range are clamped to either minimum or maximum
  of the supported values.  If the option is not given,
  a default balanced compression setting is used.
! .IP "\fB\-fuse\-linker\-plugin\fR" 4
  .IX Item "-fuse-linker-plugin"
! Enables the use of a linker plugin during link-time optimization.  This
  option relies on plugin support in the linker, which is available in gold
! or in \s-1GNU\s0 ld 2.21 or newer.
  .Sp
! This option enables the extraction of object files with \s-1GIMPLE\s0 bytecode out
  of library archives. This improves the quality of optimization by exposing
! more code to the link-time optimizer.  This information specifies what
! symbols can be accessed externally (by non-LTO object or during dynamic
  linking).  Resulting code quality improvements on binaries (and shared
  libraries that use hidden visibility) are similar to \fB\-fwhole\-program\fR.
  See \fB\-flto\fR for a description of the effect of this flag and how to
  use it.
  .Sp
! This option is enabled by default when \s-1LTO\s0 support in \s-1GCC\s0 is enabled
! and \s-1GCC\s0 was configured for use with
! a linker supporting plugins (\s-1GNU\s0 ld 2.21 or newer or gold).
! .IP "\fB\-ffat\-lto\-objects\fR" 4
  .IX Item "-ffat-lto-objects"
! Fat \s-1LTO\s0 objects are object files that contain both the intermediate language
! and the object code. This makes them usable for both \s-1LTO\s0 linking and normal
  linking. This option is effective only when compiling with \fB\-flto\fR
  and is ignored at link time.
  .Sp
! \&\fB\-fno\-fat\-lto\-objects\fR improves compilation time over plain \s-1LTO,\s0 but
! requires the complete toolchain to be aware of \s-1LTO.\s0 It requires a linker with
  linker plugin support for basic functionality.  Additionally,
  \&\fBnm\fR, \fBar\fR and \fBranlib\fR
! need to support linker plugins to allow a full-featured build environment
! (capable of building static libraries etc).  \s-1GCC\s0 provides the \fBgcc-ar\fR,
! \&\fBgcc-nm\fR, \fBgcc-ranlib\fR wrappers to pass the right options
! to these tools. With non fat \s-1LTO\s0 makefiles need to be modified to use them.
  .Sp
! Note that modern binutils provide plugin auto-load mechanism.
! Installing the linker plugin into \fI\f(CI$libdir\fI/bfd\-plugins\fR has the same
! effect as usage of the command wrappers (\fBgcc-ar\fR, \fBgcc-nm\fR and
! \&\fBgcc-ranlib\fR).
  .Sp
  The default is \fB\-fno\-fat\-lto\-objects\fR on targets with linker plugin
  support.
! .IP "\fB\-fcompare\-elim\fR" 4
  .IX Item "-fcompare-elim"
! After register allocation and post-register allocation instruction splitting,
  identify arithmetic instructions that compute processor flags similar to a
  comparison operation based on that arithmetic.  If possible, eliminate the
  explicit comparison operation.
--- 14086,14203 ----
  Use of \fB\-fwhole\-program\fR is not needed when linker plugin is
  active (see \fB\-fuse\-linker\-plugin\fR).
  .Sp
! The current implementation of LTO makes no
  attempt to generate bytecode that is portable between different
  types of hosts.  The bytecode files are versioned and there is a
  strict version check, so bytecode files generated in one version of
! GCC do not work with an older or newer version of GCC.
  .Sp
! Link\-time optimization does not work well with generation of debugging
! information on systems other than those using a combination of ELF and
! DWARF.
  .Sp
  If you specify the optional \fIn\fR, the optimization and code
  generation done at link time is executed in parallel using \fIn\fR
  parallel jobs by utilizing an installed \fBmake\fR program.  The
! environment variable \fBMAKE\fR may be used to override the program
  used.
  .Sp
! You can also specify \fB\-flto=jobserver\fR to use GNU make\*(Aqs
  job server mode to determine the number of parallel jobs. This
! is useful when the Makefile calling GCC is already executing in parallel.
  You must prepend a \fB+\fR to the command recipe in the parent Makefile
! for this to work.  This option likely only works if \fBMAKE\fR is
! GNU make.  Even without the option value, GCC tries to automatically
! detect a running GNU make\*(Aqs job server.
  .Sp
! Use \fB\-flto=auto\fR to use GNU make\*(Aqs job server, if available,
! or otherwise fall back to autodetection of the number of CPU threads
  present in your system.
! .IP \fB\-flto\-partition=\fR\fIalg\fR 4
  .IX Item "-flto-partition=alg"
! Specify the partitioning algorithm used by the link\-time optimizer.
  The value is either \fB1to1\fR to specify a partitioning mirroring
  the original source files or \fBbalanced\fR to specify partitioning
  into equally sized chunks (whenever possible) or \fBmax\fR to create
  new partition for every symbol where possible or \fBcache\fR to
  balance chunk sizes while keeping related symbols together for better
! caching in incremental LTO.  Specifying \fBnone\fR as an algorithm
  disables partitioning and streaming completely.
  The default value is \fBbalanced\fR. While \fB1to1\fR can be used
  as an workaround for various code ordering issues, the \fBmax\fR
  partitioning is intended for internal testing only.
  The value \fBone\fR specifies that exactly one partition should be
  used while the value \fBnone\fR bypasses partitioning and executes
! the link\-time optimization step directly from the WPA phase.
! .IP \fB\-flto\-incremental=\fR\fIpath\fR 4
  .IX Item "-flto-incremental=path"
! Enable incremental LTO, with its cache in given existing directory.
! Can significantly shorten edit\-compile cycles with LTO.
  .Sp
! When used with LTO (\fB\-flto\fR), the output of translation units
! inside LTO is cached. Cached translation units are likely to be
  encountered again when recompiling with small code changes, leading to
  recompile time reduction.
  .Sp
! Multiple GCC instances can use the same cache in parallel.
! .IP \fB\-flto\-incremental\-cache\-size=\fR\fIn\fR 4
  .IX Item "-flto-incremental-cache-size=n"
! Specifies number of cache entries in incremental LTO after which to prune
  old entries. This is a soft limit, temporarily there may be more entries.
! .IP \fB\-flto\-compression\-level=\fR\fIn\fR 4
  .IX Item "-flto-compression-level=n"
  This option specifies the level of compression used for intermediate
! language written to LTO object files, and is only meaningful in
! conjunction with LTO mode (\fB\-flto\fR).  GCC currently supports two
! LTO compression algorithms. For zstd, valid values are 0 (no compression)
  to 19 (maximum compression), while zlib supports values from 0 to 9.
  Values outside this range are clamped to either minimum or maximum
  of the supported values.  If the option is not given,
  a default balanced compression setting is used.
! .IP \fB\-fuse\-linker\-plugin\fR 4
  .IX Item "-fuse-linker-plugin"
! Enables the use of a linker plugin during link\-time optimization.  This
  option relies on plugin support in the linker, which is available in gold
! or in GNU ld 2.21 or newer.
  .Sp
! This option enables the extraction of object files with GIMPLE bytecode out
  of library archives. This improves the quality of optimization by exposing
! more code to the link\-time optimizer.  This information specifies what
! symbols can be accessed externally (by non\-LTO object or during dynamic
  linking).  Resulting code quality improvements on binaries (and shared
  libraries that use hidden visibility) are similar to \fB\-fwhole\-program\fR.
  See \fB\-flto\fR for a description of the effect of this flag and how to
  use it.
  .Sp
! This option is enabled by default when LTO support in GCC is enabled
! and GCC was configured for use with
! a linker supporting plugins (GNU ld 2.21 or newer or gold).
! .IP \fB\-ffat\-lto\-objects\fR 4
  .IX Item "-ffat-lto-objects"
! Fat LTO objects are object files that contain both the intermediate language
! and the object code. This makes them usable for both LTO linking and normal
  linking. This option is effective only when compiling with \fB\-flto\fR
  and is ignored at link time.
  .Sp
! \&\fB\-fno\-fat\-lto\-objects\fR improves compilation time over plain LTO, but
! requires the complete toolchain to be aware of LTO. It requires a linker with
  linker plugin support for basic functionality.  Additionally,
  \&\fBnm\fR, \fBar\fR and \fBranlib\fR
! need to support linker plugins to allow a full\-featured build environment
! (capable of building static libraries etc).  GCC provides the \fBgcc\-ar\fR,
! \&\fBgcc\-nm\fR, \fBgcc\-ranlib\fR wrappers to pass the right options
! to these tools. With non fat LTO makefiles need to be modified to use them.
  .Sp
! Note that modern binutils provide plugin auto\-load mechanism.
! Installing the linker plugin into \fR\f(CI$libdir\fR\fI/bfd\-plugins\fR has the same
! effect as usage of the command wrappers (\fBgcc\-ar\fR, \fBgcc\-nm\fR and
! \&\fBgcc\-ranlib\fR).
  .Sp
  The default is \fB\-fno\-fat\-lto\-objects\fR on targets with linker plugin
  support.
! .IP \fB\-fcompare\-elim\fR 4
  .IX Item "-fcompare-elim"
! After register allocation and post\-register allocation instruction splitting,
  identify arithmetic instructions that compute processor flags similar to a
  comparison operation based on that arithmetic.  If possible, eliminate the
  explicit comparison operation.
*************** This pass only applies to certain target
*** 14273,14303 ****
  the comparison operation before register allocation is complete.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-ffold\-mem\-offsets\fR" 4
  .IX Item "-ffold-mem-offsets"
  .PD 0
! .IP "\fB\-fno\-fold\-mem\-offsets\fR" 4
  .IX Item "-fno-fold-mem-offsets"
  .PD
  Try to eliminate add instructions by folding them in memory loads/stores.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP "\fB\-fcprop\-registers\fR" 4
  .IX Item "-fcprop-registers"
! After register allocation and post-register allocation instruction splitting,
! perform a copy-propagation pass to try to reduce scheduling dependencies
  and occasionally eliminate the copy.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fprofile\-correction\fR" 4
  .IX Item "-fprofile-correction"
! Profiles collected using an instrumented binary for multi-threaded programs may
  be inconsistent due to missed counter updates. When this option is specified,
! \&\s-1GCC\s0 uses heuristics to correct or smooth out such inconsistencies. By
! default, \s-1GCC\s0 emits an error message when an inconsistent profile is detected.
  .Sp
  This option is enabled by \fB\-fauto\-profile\fR.
! .IP "\fB\-fprofile\-partial\-training\fR" 4
  .IX Item "-fprofile-partial-training"
  With \f(CW\*(C`\-fprofile\-use\*(C'\fR all portions of programs not executed during train
  run are optimized aggressively for size rather than speed.  In some cases it is
--- 14206,14236 ----
  the comparison operation before register allocation is complete.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-ffold\-mem\-offsets\fR 4
  .IX Item "-ffold-mem-offsets"
  .PD 0
! .IP \fB\-fno\-fold\-mem\-offsets\fR 4
  .IX Item "-fno-fold-mem-offsets"
  .PD
  Try to eliminate add instructions by folding them in memory loads/stores.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP \fB\-fcprop\-registers\fR 4
  .IX Item "-fcprop-registers"
! After register allocation and post\-register allocation instruction splitting,
! perform a copy\-propagation pass to try to reduce scheduling dependencies
  and occasionally eliminate the copy.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fprofile\-correction\fR 4
  .IX Item "-fprofile-correction"
! Profiles collected using an instrumented binary for multi\-threaded programs may
  be inconsistent due to missed counter updates. When this option is specified,
! GCC uses heuristics to correct or smooth out such inconsistencies. By
! default, GCC emits an error message when an inconsistent profile is detected.
  .Sp
  This option is enabled by \fB\-fauto\-profile\fR.
! .IP \fB\-fprofile\-partial\-training\fR 4
  .IX Item "-fprofile-partial-training"
  With \f(CW\*(C`\-fprofile\-use\*(C'\fR all portions of programs not executed during train
  run are optimized aggressively for size rather than speed.  In some cases it is
*************** functions not executed during the train
*** 14309,14321 ****
  they were compiled without profile feedback. This leads to better performance
  when train run is not representative but also leads to significantly bigger
  code.
! .IP "\fB\-fprofile\-use\fR" 4
  .IX Item "-fprofile-use"
  .PD 0
! .IP "\fB\-fprofile\-use=\fR\fIpath\fR" 4
  .IX Item "-fprofile-use=path"
  .PD
! Enable profile feedback-directed optimizations,
  and the following optimizations, many of which
  are generally profitable only with profile feedback available:
  .Sp
--- 14242,14254 ----
  they were compiled without profile feedback. This leads to better performance
  when train run is not representative but also leads to significantly bigger
  code.
! .IP \fB\-fprofile\-use\fR 4
  .IX Item "-fprofile-use"
  .PD 0
! .IP \fB\-fprofile\-use=\fR\fIpath\fR 4
  .IX Item "-fprofile-use=path"
  .PD
! Enable profile feedback\-directed optimizations,
  and the following optimizations, many of which
  are generally profitable only with profile feedback available:
  .Sp
*************** are generally profitable only with profi
*** 14329,14349 ****
  .Sp
  Before you can use this option, you must first generate profiling information.
  .Sp
! By default, \s-1GCC\s0 emits an error message if the feedback profiles do not
  match the source code.  This error can be turned into a warning by using
  \&\fB\-Wno\-error=coverage\-mismatch\fR.  Note this may result in poorly
! optimized code.  Additionally, by default, \s-1GCC\s0 also emits a warning message if
  the feedback profiles do not exist (see \fB\-Wmissing\-profile\fR).
  .Sp
! If \fIpath\fR is specified, \s-1GCC\s0 looks at the \fIpath\fR to find
  the profile feedback data files. See \fB\-fprofile\-dir\fR.
! .IP "\fB\-fauto\-profile\fR" 4
  .IX Item "-fauto-profile"
  .PD 0
! .IP "\fB\-fauto\-profile=\fR\fIpath\fR" 4
  .IX Item "-fauto-profile=path"
  .PD
! Enable sampling-based feedback-directed optimizations,
  and the following optimizations,
  many of which are generally profitable only with profile feedback available:
  .Sp
--- 14262,14282 ----
  .Sp
  Before you can use this option, you must first generate profiling information.
  .Sp
! By default, GCC emits an error message if the feedback profiles do not
  match the source code.  This error can be turned into a warning by using
  \&\fB\-Wno\-error=coverage\-mismatch\fR.  Note this may result in poorly
! optimized code.  Additionally, by default, GCC also emits a warning message if
  the feedback profiles do not exist (see \fB\-Wmissing\-profile\fR).
  .Sp
! If \fIpath\fR is specified, GCC looks at the \fIpath\fR to find
  the profile feedback data files. See \fB\-fprofile\-dir\fR.
! .IP \fB\-fauto\-profile\fR 4
  .IX Item "-fauto-profile"
  .PD 0
! .IP \fB\-fauto\-profile=\fR\fIpath\fR 4
  .IX Item "-fauto-profile=path"
  .PD
! Enable sampling\-based feedback\-directed optimizations,
  and the following optimizations,
  many of which are generally profitable only with profile feedback available:
  .Sp
*************** E.g.
*** 14370,14376 ****
  .Ve
  .Sp
  Then use the \fBcreate_gcov\fR tool to convert the raw profile data
! to a format that can be used by \s-1GCC.\s0  You must also supply the
  unstripped binary for your program to this tool.
  See <\fBhttps://github.com/google/autofdo\fR>.
  .Sp
--- 14303,14309 ----
  .Ve
  .Sp
  Then use the \fBcreate_gcov\fR tool to convert the raw profile data
! to a format that can be used by GCC.  You must also supply the
  unstripped binary for your program to this tool.
  See <\fBhttps://github.com/google/autofdo\fR>.
  .Sp
*************** E.g.
*** 14381,14410 ****
  \&            \-\-gcov=profile.afdo
  .Ve
  .PP
! The following options control compiler behavior regarding floating-point
  arithmetic.  These options trade off between speed and
  correctness.  All must be specifically enabled.
! .IP "\fB\-fexcess\-precision=\fR\fIstyle\fR" 4
  .IX Item "-fexcess-precision=style"
  This option allows control over excess precision on machines
! where floating-point operations occur in a format with more precision or
! range than the \s-1IEEE\s0 standard and interchange floating-point types.
  An example of such a target is x87 floating point on x86 processors,
  which uses an 80\-bit representation internally instead of the 64\-bit
! \&\s-1IEEE\s0 format.  For most programs, the excess precision is harmless,
  but some programs may rely on the
! requirements of the C or \*(C+ language standards for handling \s-1IEEE\s0 values.
  .Sp
  By default, \fB\-fexcess\-precision=fast\fR is in effect; this means that
  operations may be carried out in a wider precision than the types specified
  in the source if that would result in faster code, and it is unpredictable
  when rounding to the types specified in the source code takes place.
! When compiling C or \*(C+, if \fB\-fexcess\-precision=standard\fR is specified
! then excess precision follows the rules specified in \s-1ISO C99\s0 or \*(C+;
  in particular,
  both casts and assignments cause values to be rounded to their
  semantic types (whereas \fB\-ffloat\-store\fR only affects
! assignments).  This option is enabled by default for C or \*(C+ if a strict
  conformance option such as \fB\-std=c99\fR or \fB\-std=c++17\fR is used.
  \&\fB\-ffast\-math\fR enables \fB\-fexcess\-precision=fast\fR by default
  regardless of whether a strict conformance option is used.
--- 14314,14343 ----
  \&            \-\-gcov=profile.afdo
  .Ve
  .PP
! The following options control compiler behavior regarding floating\-point
  arithmetic.  These options trade off between speed and
  correctness.  All must be specifically enabled.
! .IP \fB\-fexcess\-precision=\fR\fIstyle\fR 4
  .IX Item "-fexcess-precision=style"
  This option allows control over excess precision on machines
! where floating\-point operations occur in a format with more precision or
! range than the IEEE standard and interchange floating\-point types.
  An example of such a target is x87 floating point on x86 processors,
  which uses an 80\-bit representation internally instead of the 64\-bit
! IEEE format.  For most programs, the excess precision is harmless,
  but some programs may rely on the
! requirements of the C or C++ language standards for handling IEEE values.
  .Sp
  By default, \fB\-fexcess\-precision=fast\fR is in effect; this means that
  operations may be carried out in a wider precision than the types specified
  in the source if that would result in faster code, and it is unpredictable
  when rounding to the types specified in the source code takes place.
! When compiling C or C++, if \fB\-fexcess\-precision=standard\fR is specified
! then excess precision follows the rules specified in ISO C99 or C++;
  in particular,
  both casts and assignments cause values to be rounded to their
  semantic types (whereas \fB\-ffloat\-store\fR only affects
! assignments).  This option is enabled by default for C or C++ if a strict
  conformance option such as \fB\-std=c99\fR or \fB\-std=c++17\fR is used.
  \&\fB\-ffast\-math\fR enables \fB\-fexcess\-precision=fast\fR by default
  regardless of whether a strict conformance option is used.
*************** results of expressions with types \f(CW\
*** 14413,14434 ****
  are computed without excess precision.
  .Sp
  \&\fB\-fexcess\-precision=standard\fR is not implemented for languages
! other than C or \*(C+.  On the x86, it has no effect if \fB\-mfpmath=sse\fR
! or \fB\-mfpmath=sse+387\fR is specified; in the former case, \s-1IEEE\s0
  semantics apply without excess precision, and in the latter, rounding
  is unpredictable.
! .IP "\fB\-ffloat\-store\fR" 4
  .IX Item "-ffloat-store"
! Do not store floating-point variables in registers, and inhibit other
! options that might change whether a floating-point value is taken from a
  register or memory.  This option has generally been subsumed by
  \&\fB\-fexcess\-precision=standard\fR, which is more general.  If you do use
  \&\fB\-ffloat\-store\fR, you may need to modify your program to explicitly
  store intermediate computations in temporary variables since
! \&\fB\-ffloat\-store\fR handles rounding to \s-1IEEE\s0 format
  only on assignments and not casts as \fB\-fexcess\-precision=standard\fR
  does.
! .IP "\fB\-ffast\-math\fR" 4
  .IX Item "-ffast-math"
  Sets the options \fB\-fno\-math\-errno\fR, \fB\-funsafe\-math\-optimizations\fR,
  \&\fB\-ffinite\-math\-only\fR, \fB\-fno\-rounding\-math\fR,
--- 14346,14367 ----
  are computed without excess precision.
  .Sp
  \&\fB\-fexcess\-precision=standard\fR is not implemented for languages
! other than C or C++.  On the x86, it has no effect if \fB\-mfpmath=sse\fR
! or \fB\-mfpmath=sse+387\fR is specified; in the former case, IEEE
  semantics apply without excess precision, and in the latter, rounding
  is unpredictable.
! .IP \fB\-ffloat\-store\fR 4
  .IX Item "-ffloat-store"
! Do not store floating\-point variables in registers, and inhibit other
! options that might change whether a floating\-point value is taken from a
  register or memory.  This option has generally been subsumed by
  \&\fB\-fexcess\-precision=standard\fR, which is more general.  If you do use
  \&\fB\-ffloat\-store\fR, you may need to modify your program to explicitly
  store intermediate computations in temporary variables since
! \&\fB\-ffloat\-store\fR handles rounding to IEEE format
  only on assignments and not casts as \fB\-fexcess\-precision=standard\fR
  does.
! .IP \fB\-ffast\-math\fR 4
  .IX Item "-ffast-math"
  Sets the options \fB\-fno\-math\-errno\fR, \fB\-funsafe\-math\-optimizations\fR,
  \&\fB\-ffinite\-math\-only\fR, \fB\-fno\-rounding\-math\fR,
*************** This option causes the preprocessor macr
*** 14439,14458 ****
  .Sp
  This option is not turned on by any \fB\-O\fR option besides
  \&\fB\-Ofast\fR since it can result in incorrect output for programs
! that depend on an exact implementation of \s-1IEEE\s0 or \s-1ISO\s0 rules/specifications
  for math functions. It may, however, yield faster code for programs
  that do not require the guarantees of these specifications.
! .IP "\fB\-fno\-math\-errno\fR" 4
  .IX Item "-fno-math-errno"
  Do not set \f(CW\*(C`errno\*(C'\fR after calling math functions that are executed
  with a single instruction, e.g., \f(CW\*(C`sqrt\*(C'\fR.  A program that relies on
! \&\s-1IEEE\s0 exceptions for math error handling may want to use this flag
! for speed while maintaining \s-1IEEE\s0 arithmetic compatibility.
  .Sp
  This option is not turned on by any \fB\-O\fR option  besides
  \&\fB\-Ofast\fR since it can result in incorrect output for
! programs that depend on an exact implementation of \s-1IEEE\s0 or
! \&\s-1ISO\s0 rules/specifications for math functions. It may, however,
  yield faster code for programs that do not require the guarantees
  of these specifications.
  .Sp
--- 14372,14391 ----
  .Sp
  This option is not turned on by any \fB\-O\fR option besides
  \&\fB\-Ofast\fR since it can result in incorrect output for programs
! that depend on an exact implementation of IEEE or ISO rules/specifications
  for math functions. It may, however, yield faster code for programs
  that do not require the guarantees of these specifications.
! .IP \fB\-fno\-math\-errno\fR 4
  .IX Item "-fno-math-errno"
  Do not set \f(CW\*(C`errno\*(C'\fR after calling math functions that are executed
  with a single instruction, e.g., \f(CW\*(C`sqrt\*(C'\fR.  A program that relies on
! IEEE exceptions for math error handling may want to use this flag
! for speed while maintaining IEEE arithmetic compatibility.
  .Sp
  This option is not turned on by any \fB\-O\fR option  besides
  \&\fB\-Ofast\fR since it can result in incorrect output for
! programs that depend on an exact implementation of IEEE or
! ISO rules/specifications for math functions. It may, however,
  yield faster code for programs that do not require the guarantees
  of these specifications.
  .Sp
*************** The default is \fB\-fmath\-errno\fR.
*** 14461,14501 ****
  On Darwin systems, the math library never sets \f(CW\*(C`errno\*(C'\fR.  There is
  therefore no reason for the compiler to consider the possibility that
  it might, and \fB\-fno\-math\-errno\fR is the default.
! .IP "\fB\-funsafe\-math\-optimizations\fR" 4
  .IX Item "-funsafe-math-optimizations"
! Allow optimizations for floating-point arithmetic that (a) assume
! that arguments and results are valid and (b) may violate \s-1IEEE\s0 or
! \&\s-1ANSI\s0 standards.  When used at link time, it may include libraries
! or startup files that change the default \s-1FPU\s0 control word or other
  similar optimizations.
  .Sp
  This option is not turned on by any \fB\-O\fR option besides
  \&\fB\-Ofast\fR since it can result in incorrect output
! for programs that depend on an exact implementation of \s-1IEEE\s0
! or \s-1ISO\s0 rules/specifications for math functions. It may, however,
  yield faster code for programs that do not require the guarantees
  of these specifications.
  Enables \fB\-fno\-signed\-zeros\fR, \fB\-fno\-trapping\-math\fR,
  \&\fB\-fassociative\-math\fR and \fB\-freciprocal\-math\fR.
  .Sp
  The default is \fB\-fno\-unsafe\-math\-optimizations\fR.
! .IP "\fB\-fassociative\-math\fR" 4
  .IX Item "-fassociative-math"
! Allow re-association of operands in series of floating-point operations.
! This violates the \s-1ISO C\s0 and \*(C+ language standard by possibly changing
! computation result.  \s-1NOTE:\s0 re-ordering may change the sign of zero as
  well as ignore NaNs and inhibit or create underflow or overflow (and
  thus cannot be used on code that relies on rounding behavior like
! \&\f(CW\*(C`(x + 2**52) \- 2**52\*(C'\fR.  May also reorder floating-point comparisons
  and thus may not be used when ordered comparisons are required.
  This option requires that both \fB\-fno\-signed\-zeros\fR and
! \&\fB\-fno\-trapping\-math\fR be in effect.  Moreover, it doesn't make
  much sense with \fB\-frounding\-math\fR. For Fortran the option
  is automatically enabled when both \fB\-fno\-signed\-zeros\fR and
  \&\fB\-fno\-trapping\-math\fR are in effect.
  .Sp
  The default is \fB\-fno\-associative\-math\fR.
! .IP "\fB\-freciprocal\-math\fR" 4
  .IX Item "-freciprocal-math"
  Allow the reciprocal of a value to be used instead of dividing by
  the value if this enables optimizations.  For example \f(CW\*(C`x / y\*(C'\fR
--- 14394,14434 ----
  On Darwin systems, the math library never sets \f(CW\*(C`errno\*(C'\fR.  There is
  therefore no reason for the compiler to consider the possibility that
  it might, and \fB\-fno\-math\-errno\fR is the default.
! .IP \fB\-funsafe\-math\-optimizations\fR 4
  .IX Item "-funsafe-math-optimizations"
! Allow optimizations for floating\-point arithmetic that (a) assume
! that arguments and results are valid and (b) may violate IEEE or
! ANSI standards.  When used at link time, it may include libraries
! or startup files that change the default FPU control word or other
  similar optimizations.
  .Sp
  This option is not turned on by any \fB\-O\fR option besides
  \&\fB\-Ofast\fR since it can result in incorrect output
! for programs that depend on an exact implementation of IEEE
! or ISO rules/specifications for math functions. It may, however,
  yield faster code for programs that do not require the guarantees
  of these specifications.
  Enables \fB\-fno\-signed\-zeros\fR, \fB\-fno\-trapping\-math\fR,
  \&\fB\-fassociative\-math\fR and \fB\-freciprocal\-math\fR.
  .Sp
  The default is \fB\-fno\-unsafe\-math\-optimizations\fR.
! .IP \fB\-fassociative\-math\fR 4
  .IX Item "-fassociative-math"
! Allow re\-association of operands in series of floating\-point operations.
! This violates the ISO C and C++ language standard by possibly changing
! computation result.  NOTE: re\-ordering may change the sign of zero as
  well as ignore NaNs and inhibit or create underflow or overflow (and
  thus cannot be used on code that relies on rounding behavior like
! \&\f(CW\*(C`(x + 2**52) \- 2**52\*(C'\fR.  May also reorder floating\-point comparisons
  and thus may not be used when ordered comparisons are required.
  This option requires that both \fB\-fno\-signed\-zeros\fR and
! \&\fB\-fno\-trapping\-math\fR be in effect.  Moreover, it doesn\*(Aqt make
  much sense with \fB\-frounding\-math\fR. For Fortran the option
  is automatically enabled when both \fB\-fno\-signed\-zeros\fR and
  \&\fB\-fno\-trapping\-math\fR are in effect.
  .Sp
  The default is \fB\-fno\-associative\-math\fR.
! .IP \fB\-freciprocal\-math\fR 4
  .IX Item "-freciprocal-math"
  Allow the reciprocal of a value to be used instead of dividing by
  the value if this enables optimizations.  For example \f(CW\*(C`x / y\*(C'\fR
*************** is subject to common subexpression elimi
*** 14504,14573 ****
  precision and increases the number of flops operating on the value.
  .Sp
  The default is \fB\-fno\-reciprocal\-math\fR.
! .IP "\fB\-ffinite\-math\-only\fR" 4
  .IX Item "-ffinite-math-only"
! Allow optimizations for floating-point arithmetic that assume
  that arguments and results are not NaNs or +\-Infs.
  .Sp
  This option is not turned on by any \fB\-O\fR option besides
  \&\fB\-Ofast\fR since it can result in incorrect output
! for programs that depend on an exact implementation of \s-1IEEE\s0 or
! \&\s-1ISO\s0 rules/specifications for math functions. It may, however,
  yield faster code for programs that do not require the guarantees
  of these specifications.
  .Sp
  The default is \fB\-fno\-finite\-math\-only\fR.
! .IP "\fB\-fno\-signed\-zeros\fR" 4
  .IX Item "-fno-signed-zeros"
! Allow optimizations for floating-point arithmetic that ignore the
! signedness of zero.  \s-1IEEE\s0 arithmetic specifies the behavior of
  distinct +0.0 and \-0.0 values, which then prohibits simplification
  of expressions such as x+0.0 or 0.0*x (even with \fB\-ffinite\-math\-only\fR).
! This option implies that the sign of a zero result isn't significant.
  .Sp
  The default is \fB\-fsigned\-zeros\fR.
! .IP "\fB\-fno\-trapping\-math\fR" 4
  .IX Item "-fno-trapping-math"
! Compile code assuming that floating-point operations cannot generate
! user-visible traps.  These traps include division by zero, overflow,
  underflow, inexact result and invalid operation.  This option requires
  that \fB\-fno\-signaling\-nans\fR be in effect.  Setting this option may
! allow faster code if one relies on \*(L"non-stop\*(R" \s-1IEEE\s0 arithmetic, for example.
  .Sp
  This option is not turned on by any \fB\-O\fR option besides
  \&\fB\-Ofast\fR since it can result in incorrect output for programs
! that depend on an exact implementation of \s-1IEEE\s0 or \s-1ISO\s0 rules/specifications
  for math functions.
  .Sp
  The default is \fB\-ftrapping\-math\fR.
  .Sp
! Future versions of \s-1GCC\s0 may provide finer control of this setting
! using C99's \f(CW\*(C`FENV_ACCESS\*(C'\fR pragma.  This command-line option
  will be used along with \fB\-frounding\-math\fR to specify the
  default state for \f(CW\*(C`FENV_ACCESS\*(C'\fR.
! .IP "\fB\-frounding\-math\fR" 4
  .IX Item "-frounding-math"
! Disable transformations and optimizations that assume default floating-point
! rounding behavior (round-to-nearest).
  This option should be specified for programs that change
! the \s-1FP\s0 rounding mode dynamically, or that may be executed with a
! non-default rounding mode.  This option disables constant folding of
! floating-point expressions at compile time (which may be affected by
  rounding mode) and arithmetic transformations that are unsafe in the
! presence of sign-dependent rounding modes.
  .Sp
  The default is \fB\-fno\-rounding\-math\fR.
  .Sp
  This option is experimental and does not currently guarantee to
! disable all \s-1GCC\s0 optimizations that are affected by rounding mode.
! Future versions of \s-1GCC\s0 may provide finer control of this setting
! using C99's \f(CW\*(C`FENV_ACCESS\*(C'\fR pragma.  This command-line option
  will be used along with \fB\-ftrapping\-math\fR to specify the
  default state for \f(CW\*(C`FENV_ACCESS\*(C'\fR.
! .IP "\fB\-fsignaling\-nans\fR" 4
  .IX Item "-fsignaling-nans"
! Compile code assuming that \s-1IEEE\s0 signaling NaNs may generate user-visible
! traps during floating-point operations.  Setting this option disables
  optimizations that may change the number of exceptions visible with
  signaling NaNs.  This option implies \fB\-ftrapping\-math\fR.
  .Sp
--- 14437,14506 ----
  precision and increases the number of flops operating on the value.
  .Sp
  The default is \fB\-fno\-reciprocal\-math\fR.
! .IP \fB\-ffinite\-math\-only\fR 4
  .IX Item "-ffinite-math-only"
! Allow optimizations for floating\-point arithmetic that assume
  that arguments and results are not NaNs or +\-Infs.
  .Sp
  This option is not turned on by any \fB\-O\fR option besides
  \&\fB\-Ofast\fR since it can result in incorrect output
! for programs that depend on an exact implementation of IEEE or
! ISO rules/specifications for math functions. It may, however,
  yield faster code for programs that do not require the guarantees
  of these specifications.
  .Sp
  The default is \fB\-fno\-finite\-math\-only\fR.
! .IP \fB\-fno\-signed\-zeros\fR 4
  .IX Item "-fno-signed-zeros"
! Allow optimizations for floating\-point arithmetic that ignore the
! signedness of zero.  IEEE arithmetic specifies the behavior of
  distinct +0.0 and \-0.0 values, which then prohibits simplification
  of expressions such as x+0.0 or 0.0*x (even with \fB\-ffinite\-math\-only\fR).
! This option implies that the sign of a zero result isn\*(Aqt significant.
  .Sp
  The default is \fB\-fsigned\-zeros\fR.
! .IP \fB\-fno\-trapping\-math\fR 4
  .IX Item "-fno-trapping-math"
! Compile code assuming that floating\-point operations cannot generate
! user\-visible traps.  These traps include division by zero, overflow,
  underflow, inexact result and invalid operation.  This option requires
  that \fB\-fno\-signaling\-nans\fR be in effect.  Setting this option may
! allow faster code if one relies on "non\-stop" IEEE arithmetic, for example.
  .Sp
  This option is not turned on by any \fB\-O\fR option besides
  \&\fB\-Ofast\fR since it can result in incorrect output for programs
! that depend on an exact implementation of IEEE or ISO rules/specifications
  for math functions.
  .Sp
  The default is \fB\-ftrapping\-math\fR.
  .Sp
! Future versions of GCC may provide finer control of this setting
! using C99\*(Aqs \f(CW\*(C`FENV_ACCESS\*(C'\fR pragma.  This command\-line option
  will be used along with \fB\-frounding\-math\fR to specify the
  default state for \f(CW\*(C`FENV_ACCESS\*(C'\fR.
! .IP \fB\-frounding\-math\fR 4
  .IX Item "-frounding-math"
! Disable transformations and optimizations that assume default floating\-point
! rounding behavior (round\-to\-nearest).
  This option should be specified for programs that change
! the FP rounding mode dynamically, or that may be executed with a
! non\-default rounding mode.  This option disables constant folding of
! floating\-point expressions at compile time (which may be affected by
  rounding mode) and arithmetic transformations that are unsafe in the
! presence of sign\-dependent rounding modes.
  .Sp
  The default is \fB\-fno\-rounding\-math\fR.
  .Sp
  This option is experimental and does not currently guarantee to
! disable all GCC optimizations that are affected by rounding mode.
! Future versions of GCC may provide finer control of this setting
! using C99\*(Aqs \f(CW\*(C`FENV_ACCESS\*(C'\fR pragma.  This command\-line option
  will be used along with \fB\-ftrapping\-math\fR to specify the
  default state for \f(CW\*(C`FENV_ACCESS\*(C'\fR.
! .IP \fB\-fsignaling\-nans\fR 4
  .IX Item "-fsignaling-nans"
! Compile code assuming that IEEE signaling NaNs may generate user\-visible
! traps during floating\-point operations.  Setting this option disables
  optimizations that may change the number of exceptions visible with
  signaling NaNs.  This option implies \fB\-ftrapping\-math\fR.
  .Sp
*************** be defined.
*** 14577,14605 ****
  The default is \fB\-fno\-signaling\-nans\fR.
  .Sp
  This option is experimental and does not currently guarantee to
! disable all \s-1GCC\s0 optimizations that affect signaling NaN behavior.
! .IP "\fB\-fno\-fp\-int\-builtin\-inexact\fR" 4
  .IX Item "-fno-fp-int-builtin-inexact"
! Do not allow the built-in functions \f(CW\*(C`ceil\*(C'\fR, \f(CW\*(C`floor\*(C'\fR,
  \&\f(CW\*(C`round\*(C'\fR and \f(CW\*(C`trunc\*(C'\fR, and their \f(CW\*(C`float\*(C'\fR and \f(CW\*(C`long
! double\*(C'\fR variants, to generate code that raises the \*(L"inexact\*(R"
! floating-point exception for noninteger arguments.  \s-1ISO C99\s0 and C11
! allow these functions to raise the \*(L"inexact\*(R" exception, but \s-1ISO/IEC
! TS 18661\-1:2014,\s0 the C bindings to \s-1IEEE 754\-2008,\s0 as integrated into
! \&\s-1ISO C23,\s0 does not allow these functions to do so.
  .Sp
  The default is \fB\-ffp\-int\-builtin\-inexact\fR, allowing the
  exception to be raised, unless C23 or a later C standard is selected.
  This option does nothing unless \fB\-ftrapping\-math\fR is in effect.
  .Sp
  Even if \fB\-fno\-fp\-int\-builtin\-inexact\fR is used, if the functions
! generate a call to a library function then the \*(L"inexact\*(R" exception
! may be raised if the library implementation does not follow \s-1TS 18661.\s0
! .IP "\fB\-fsingle\-precision\-constant\fR" 4
  .IX Item "-fsingle-precision-constant"
! Treat floating-point constants as single precision instead of
! implicitly converting them to double-precision constants.
! .IP "\fB\-fcx\-limited\-range\fR" 4
  .IX Item "-fcx-limited-range"
  When enabled, this option states that a range reduction step is not
  needed when performing complex division.  Also, there is no checking
--- 14510,14538 ----
  The default is \fB\-fno\-signaling\-nans\fR.
  .Sp
  This option is experimental and does not currently guarantee to
! disable all GCC optimizations that affect signaling NaN behavior.
! .IP \fB\-fno\-fp\-int\-builtin\-inexact\fR 4
  .IX Item "-fno-fp-int-builtin-inexact"
! Do not allow the built\-in functions \f(CW\*(C`ceil\*(C'\fR, \f(CW\*(C`floor\*(C'\fR,
  \&\f(CW\*(C`round\*(C'\fR and \f(CW\*(C`trunc\*(C'\fR, and their \f(CW\*(C`float\*(C'\fR and \f(CW\*(C`long
! double\*(C'\fR variants, to generate code that raises the "inexact"
! floating\-point exception for noninteger arguments.  ISO C99 and C11
! allow these functions to raise the "inexact" exception, but ISO/IEC
! TS 18661\-1:2014, the C bindings to IEEE 754\-2008, as integrated into
! ISO C23, does not allow these functions to do so.
  .Sp
  The default is \fB\-ffp\-int\-builtin\-inexact\fR, allowing the
  exception to be raised, unless C23 or a later C standard is selected.
  This option does nothing unless \fB\-ftrapping\-math\fR is in effect.
  .Sp
  Even if \fB\-fno\-fp\-int\-builtin\-inexact\fR is used, if the functions
! generate a call to a library function then the "inexact" exception
! may be raised if the library implementation does not follow TS 18661.
! .IP \fB\-fsingle\-precision\-constant\fR 4
  .IX Item "-fsingle-precision-constant"
! Treat floating\-point constants as single precision instead of
! implicitly converting them to double\-precision constants.
! .IP \fB\-fcx\-limited\-range\fR 4
  .IX Item "-fcx-limited-range"
  When enabled, this option states that a range reduction step is not
  needed when performing complex division.  Also, there is no checking
*************** whether the result of a complex multipli
*** 14608,14617 ****
  default is \fB\-fno\-cx\-limited\-range\fR, but is enabled by
  \&\fB\-ffast\-math\fR.
  .Sp
! This option controls the default setting of the \s-1ISO C99\s0
  \&\f(CW\*(C`CX_LIMITED_RANGE\*(C'\fR pragma.  Nevertheless, the option applies to
  all languages.
! .IP "\fB\-fcx\-fortran\-rules\fR" 4
  .IX Item "-fcx-fortran-rules"
  Complex multiplication and division follow Fortran rules.  Range
  reduction is done as part of complex division, but there is no checking
--- 14541,14550 ----
  default is \fB\-fno\-cx\-limited\-range\fR, but is enabled by
  \&\fB\-ffast\-math\fR.
  .Sp
! This option controls the default setting of the ISO C99
  \&\f(CW\*(C`CX_LIMITED_RANGE\*(C'\fR pragma.  Nevertheless, the option applies to
  all languages.
! .IP \fB\-fcx\-fortran\-rules\fR 4
  .IX Item "-fcx-fortran-rules"
  Complex multiplication and division follow Fortran rules.  Range
  reduction is done as part of complex division, but there is no checking
*************** The default is \fB\-fno\-cx\-fortran\-ru
*** 14623,14650 ****
  The following options control optimizations that may improve
  performance, but are not enabled by any \fB\-O\fR options.  This
  section includes experimental options that may produce broken code.
! .IP "\fB\-fbranch\-probabilities\fR" 4
  .IX Item "-fbranch-probabilities"
  After running a program compiled with \fB\-fprofile\-arcs\fR,
  you can compile it a second time using
  \&\fB\-fbranch\-probabilities\fR, to improve optimizations based on
  the number of times each branch was taken.  When a program
  compiled with \fB\-fprofile\-arcs\fR exits, it saves arc execution
! counts to a file called \fI\fIsourcename\fI.gcda\fR for each source
  file.  The information in this data file is very dependent on the
  structure of the generated code, so you must use the same source code
  and the same optimization options for both compilations.
  See details about the file naming in \fB\-fprofile\-arcs\fR.
  .Sp
! With \fB\-fbranch\-probabilities\fR, \s-1GCC\s0 puts a
! \&\fB\s-1REG_BR_PROB\s0\fR note on each \fB\s-1JUMP_INSN\s0\fR and \fB\s-1CALL_INSN\s0\fR.
  These can be used to improve optimization.  Currently, they are only
  used in one place: in \fIreorg.cc\fR, instead of guessing which path a
! branch is most likely to take, the \fB\s-1REG_BR_PROB\s0\fR values are used to
  exactly determine which path is taken more often.
  .Sp
  Enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-fprofile\-values\fR" 4
  .IX Item "-fprofile-values"
  If combined with \fB\-fprofile\-arcs\fR, it adds code so that some
  data about values of expressions in the program is gathered.
--- 14556,14583 ----
  The following options control optimizations that may improve
  performance, but are not enabled by any \fB\-O\fR options.  This
  section includes experimental options that may produce broken code.
! .IP \fB\-fbranch\-probabilities\fR 4
  .IX Item "-fbranch-probabilities"
  After running a program compiled with \fB\-fprofile\-arcs\fR,
  you can compile it a second time using
  \&\fB\-fbranch\-probabilities\fR, to improve optimizations based on
  the number of times each branch was taken.  When a program
  compiled with \fB\-fprofile\-arcs\fR exits, it saves arc execution
! counts to a file called \fIsourcename.gcda\fR for each source
  file.  The information in this data file is very dependent on the
  structure of the generated code, so you must use the same source code
  and the same optimization options for both compilations.
  See details about the file naming in \fB\-fprofile\-arcs\fR.
  .Sp
! With \fB\-fbranch\-probabilities\fR, GCC puts a
! \&\fBREG_BR_PROB\fR note on each \fBJUMP_INSN\fR and \fBCALL_INSN\fR.
  These can be used to improve optimization.  Currently, they are only
  used in one place: in \fIreorg.cc\fR, instead of guessing which path a
! branch is most likely to take, the \fBREG_BR_PROB\fR values are used to
  exactly determine which path is taken more often.
  .Sp
  Enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-fprofile\-values\fR 4
  .IX Item "-fprofile-values"
  If combined with \fB\-fprofile\-arcs\fR, it adds code so that some
  data about values of expressions in the program is gathered.
*************** from profiling values of expressions for
*** 14654,14660 ****
  .Sp
  Enabled by \fB\-fprofile\-generate\fR, \fB\-fprofile\-use\fR, and
  \&\fB\-fauto\-profile\fR.
! .IP "\fB\-fprofile\-reorder\-functions\fR" 4
  .IX Item "-fprofile-reorder-functions"
  Function reordering based on profile instrumentation collects
  first time of execution of a function and orders these functions
--- 14587,14593 ----
  .Sp
  Enabled by \fB\-fprofile\-generate\fR, \fB\-fprofile\-use\fR, and
  \&\fB\-fauto\-profile\fR.
! .IP \fB\-fprofile\-reorder\-functions\fR 4
  .IX Item "-fprofile-reorder-functions"
  Function reordering based on profile instrumentation collects
  first time of execution of a function and orders these functions
*************** in ascending order, aiming to optimize p
*** 14662,14668 ****
  efficient loading of text segments.
  .Sp
  Enabled with \fB\-fprofile\-use\fR.
! .IP "\fB\-fvpt\fR" 4
  .IX Item "-fvpt"
  If combined with \fB\-fprofile\-arcs\fR, this option instructs the compiler
  to add code to gather information about values of expressions.
--- 14595,14601 ----
  efficient loading of text segments.
  .Sp
  Enabled with \fB\-fprofile\-use\fR.
! .IP \fB\-fvpt\fR 4
  .IX Item "-fvpt"
  If combined with \fB\-fprofile\-arcs\fR, this option instructs the compiler
  to add code to gather information about values of expressions.
*************** Currently the optimizations include spec
*** 14673,14703 ****
  using the knowledge about the value of the denominator.
  .Sp
  Enabled with \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-frename\-registers\fR" 4
  .IX Item "-frename-registers"
  Attempt to avoid false dependencies in scheduled code by making use
  of registers left over after register allocation.  This optimization
  most benefits processors with lots of registers.  Depending on the
  debug information format adopted by the target, however, it can
  make debugging impossible, since variables no longer stay in
! a \*(L"home register\*(R".
  .Sp
  Enabled by default with \fB\-funroll\-loops\fR.
! .IP "\fB\-fschedule\-fusion\fR" 4
  .IX Item "-fschedule-fusion"
  Performs a target dependent pass over the instruction stream to schedule
  instructions of same type together because target machine can execute them
  more efficiently if they are adjacent to each other in the instruction flow.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-ftracer\fR" 4
  .IX Item "-ftracer"
  Perform tail duplication to enlarge superblock size.  This transformation
  simplifies the control flow of the function allowing other optimizations to do
  a better job.
  .Sp
  Enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-funroll\-loops\fR" 4
  .IX Item "-funroll-loops"
  Unroll loops whose number of iterations can be determined at compile time or
  upon entry to the loop.  \fB\-funroll\-loops\fR implies
--- 14606,14636 ----
  using the knowledge about the value of the denominator.
  .Sp
  Enabled with \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-frename\-registers\fR 4
  .IX Item "-frename-registers"
  Attempt to avoid false dependencies in scheduled code by making use
  of registers left over after register allocation.  This optimization
  most benefits processors with lots of registers.  Depending on the
  debug information format adopted by the target, however, it can
  make debugging impossible, since variables no longer stay in
! a "home register".
  .Sp
  Enabled by default with \fB\-funroll\-loops\fR.
! .IP \fB\-fschedule\-fusion\fR 4
  .IX Item "-fschedule-fusion"
  Performs a target dependent pass over the instruction stream to schedule
  instructions of same type together because target machine can execute them
  more efficiently if they are adjacent to each other in the instruction flow.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-ftracer\fR 4
  .IX Item "-ftracer"
  Perform tail duplication to enlarge superblock size.  This transformation
  simplifies the control flow of the function allowing other optimizations to do
  a better job.
  .Sp
  Enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-funroll\-loops\fR 4
  .IX Item "-funroll-loops"
  Unroll loops whose number of iterations can be determined at compile time or
  upon entry to the loop.  \fB\-funroll\-loops\fR implies
*************** a small constant number of iterations).
*** 14707,14719 ****
  or may not make it run faster.
  .Sp
  Enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-funroll\-all\-loops\fR" 4
  .IX Item "-funroll-all-loops"
  Unroll all loops, even if their number of iterations is uncertain when
  the loop is entered.  This usually makes programs run more slowly.
  \&\fB\-funroll\-all\-loops\fR implies the same options as
  \&\fB\-funroll\-loops\fR.
! .IP "\fB\-fpeel\-loops\fR" 4
  .IX Item "-fpeel-loops"
  Peels loops for which there is enough information that they do not
  roll much (from profile feedback or static analysis).  It also turns on
--- 14640,14652 ----
  or may not make it run faster.
  .Sp
  Enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-funroll\-all\-loops\fR 4
  .IX Item "-funroll-all-loops"
  Unroll all loops, even if their number of iterations is uncertain when
  the loop is entered.  This usually makes programs run more slowly.
  \&\fB\-funroll\-all\-loops\fR implies the same options as
  \&\fB\-funroll\-loops\fR.
! .IP \fB\-fpeel\-loops\fR 4
  .IX Item "-fpeel-loops"
  Peels loops for which there is enough information that they do not
  roll much (from profile feedback or static analysis).  It also turns on
*************** complete loop peeling (i.e. complete rem
*** 14721,14727 ****
  number of iterations).
  .Sp
  Enabled by \fB\-O3\fR, \fB\-fprofile\-use\fR, and \fB\-fauto\-profile\fR.
! .IP "\fB\-fmalloc\-dce\fR" 4
  .IX Item "-fmalloc-dce"
  Control whether \f(CW\*(C`malloc\*(C'\fR (and its variants such as \f(CW\*(C`calloc\*(C'\fR or
  \&\f(CW\*(C`strdup\*(C'\fR),  can be optimized away provided its return value is only used
--- 14654,14660 ----
  number of iterations).
  .Sp
  Enabled by \fB\-O3\fR, \fB\-fprofile\-use\fR, and \fB\-fauto\-profile\fR.
! .IP \fB\-fmalloc\-dce\fR 4
  .IX Item "-fmalloc-dce"
  Control whether \f(CW\*(C`malloc\*(C'\fR (and its variants such as \f(CW\*(C`calloc\*(C'\fR or
  \&\f(CW\*(C`strdup\*(C'\fR),  can be optimized away provided its return value is only used
*************** with \fB\-fmalloc\-dce=2\fR also compari
*** 14731,14761 ****
  considered safe to remove.
  .Sp
  The default is \fB\-fmalloc\-dce=2\fR.  See also \fB\-fallocation\-dce\fR.
! .IP "\fB\-fmove\-loop\-invariants\fR" 4
  .IX Item "-fmove-loop-invariants"
! Enables the loop invariant motion pass in the \s-1RTL\s0 loop optimizer.  Enabled
  at level \fB\-O1\fR and higher, except for \fB\-Og\fR.
! .IP "\fB\-fmove\-loop\-stores\fR" 4
  .IX Item "-fmove-loop-stores"
! Enables the loop store motion pass in the \s-1GIMPLE\s0 loop optimizer.  This
  moves invariant stores to after the end of the loop in exchange for
  carrying the stored value in a register across the iteration.
  Note for this option to have an effect \fB\-ftree\-loop\-im\fR has to
  be enabled as well.  Enabled at level \fB\-O1\fR and higher, except
  for \fB\-Og\fR.
! .IP "\fB\-fsplit\-loops\fR" 4
  .IX Item "-fsplit-loops"
! Split a loop into two if it contains a condition that's always true
  for one side of the iteration space and false for the other.
  .Sp
  Enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-funswitch\-loops\fR" 4
  .IX Item "-funswitch-loops"
  Move branches with loop invariant conditions out of the loop, with duplicates
  of the loop on both branches (modified according to result of the condition).
  .Sp
  Enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-fversion\-loops\-for\-strides\fR" 4
  .IX Item "-fversion-loops-for-strides"
  If a loop iterates over an array with a variable stride, create another
  version of the loop that assumes the stride is always one.  For example:
--- 14664,14694 ----
  considered safe to remove.
  .Sp
  The default is \fB\-fmalloc\-dce=2\fR.  See also \fB\-fallocation\-dce\fR.
! .IP \fB\-fmove\-loop\-invariants\fR 4
  .IX Item "-fmove-loop-invariants"
! Enables the loop invariant motion pass in the RTL loop optimizer.  Enabled
  at level \fB\-O1\fR and higher, except for \fB\-Og\fR.
! .IP \fB\-fmove\-loop\-stores\fR 4
  .IX Item "-fmove-loop-stores"
! Enables the loop store motion pass in the GIMPLE loop optimizer.  This
  moves invariant stores to after the end of the loop in exchange for
  carrying the stored value in a register across the iteration.
  Note for this option to have an effect \fB\-ftree\-loop\-im\fR has to
  be enabled as well.  Enabled at level \fB\-O1\fR and higher, except
  for \fB\-Og\fR.
! .IP \fB\-fsplit\-loops\fR 4
  .IX Item "-fsplit-loops"
! Split a loop into two if it contains a condition that\*(Aqs always true
  for one side of the iteration space and false for the other.
  .Sp
  Enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-funswitch\-loops\fR 4
  .IX Item "-funswitch-loops"
  Move branches with loop invariant conditions out of the loop, with duplicates
  of the loop on both branches (modified according to result of the condition).
  .Sp
  Enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-fversion\-loops\-for\-strides\fR 4
  .IX Item "-fversion-loops-for-strides"
  If a loop iterates over an array with a variable stride, create another
  version of the loop that assumes the stride is always one.  For example:
*************** becomes:
*** 14776,14807 ****
  \&            x[i * stride] = ...;
  .Ve
  .Sp
! This is particularly useful for assumed-shape arrays in Fortran where
  (for example) it allows better vectorization assuming contiguous accesses.
  This flag is enabled by default at \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-ffunction\-sections\fR" 4
  .IX Item "-ffunction-sections"
  .PD 0
! .IP "\fB\-fdata\-sections\fR" 4
  .IX Item "-fdata-sections"
  .PD
  Place each function or data item into its own section in the output
  file if the target supports arbitrary sections.  The name of the
! function or the name of the data item determines the section's name
  in the output file.
  .Sp
  Use these options on systems where the linker can perform optimizations to
  improve locality of reference in the instruction space.  Most systems using the
! \&\s-1ELF\s0 object format have linkers with such optimizations.  On \s-1AIX,\s0 the linker
  rearranges sections (CSECTs) based on the call graph.  The performance impact
  varies.
  .Sp
  Together with a linker garbage collection (linker \fB\-\-gc\-sections\fR
! option) these options may lead to smaller statically-linked executables (after
  stripping).
  .Sp
! On \s-1ELF/DWARF\s0 systems these options do not degenerate the quality of the debug
  information.  There could be issues with other object files/debug info formats.
  .Sp
  Only use these options when there are significant benefits from doing so.  When
--- 14709,14740 ----
  \&            x[i * stride] = ...;
  .Ve
  .Sp
! This is particularly useful for assumed\-shape arrays in Fortran where
  (for example) it allows better vectorization assuming contiguous accesses.
  This flag is enabled by default at \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-ffunction\-sections\fR 4
  .IX Item "-ffunction-sections"
  .PD 0
! .IP \fB\-fdata\-sections\fR 4
  .IX Item "-fdata-sections"
  .PD
  Place each function or data item into its own section in the output
  file if the target supports arbitrary sections.  The name of the
! function or the name of the data item determines the section\*(Aqs name
  in the output file.
  .Sp
  Use these options on systems where the linker can perform optimizations to
  improve locality of reference in the instruction space.  Most systems using the
! ELF object format have linkers with such optimizations.  On AIX, the linker
  rearranges sections (CSECTs) based on the call graph.  The performance impact
  varies.
  .Sp
  Together with a linker garbage collection (linker \fB\-\-gc\-sections\fR
! option) these options may lead to smaller statically\-linked executables (after
  stripping).
  .Sp
! On ELF/DWARF systems these options do not degenerate the quality of the debug
  information.  There could be issues with other object files/debug info formats.
  .Sp
  Only use these options when there are significant benefits from doing so.  When
*************** They prevent optimizations by the compil
*** 14811,14825 ****
  locations inside a translation unit since the locations are unknown until
  link time.  An example of such an optimization is relaxing calls to short call
  instructions.
! .IP "\fB\-fstdarg\-opt\fR" 4
  .IX Item "-fstdarg-opt"
  Optimize the prologue of variadic argument functions with respect to usage of
  those arguments.
! .IP "\fB\-fsection\-anchors\fR" 4
  .IX Item "-fsection-anchors"
  Try to reduce the number of symbolic address calculations by using
! shared \*(L"anchor\*(R" symbols to address nearby objects.  This transformation
! can help to reduce the number of \s-1GOT\s0 entries and \s-1GOT\s0 accesses on some
  targets.
  .Sp
  For example, the implementation of the following function \f(CW\*(C`foo\*(C'\fR:
--- 14744,14758 ----
  locations inside a translation unit since the locations are unknown until
  link time.  An example of such an optimization is relaxing calls to short call
  instructions.
! .IP \fB\-fstdarg\-opt\fR 4
  .IX Item "-fstdarg-opt"
  Optimize the prologue of variadic argument functions with respect to usage of
  those arguments.
! .IP \fB\-fsection\-anchors\fR 4
  .IX Item "-fsection-anchors"
  Try to reduce the number of symbolic address calculations by using
! shared "anchor" symbols to address nearby objects.  This transformation
! can help to reduce the number of GOT entries and GOT accesses on some
  targets.
  .Sp
  For example, the implementation of the following function \f(CW\*(C`foo\*(C'\fR:
*************** For example, the implementation of the f
*** 14832,14838 ****
  usually calculates the addresses of all three variables, but if you
  compile it with \fB\-fsection\-anchors\fR, it accesses the variables
  from a common anchor point instead.  The effect is similar to the
! following pseudocode (which isn't valid C):
  .Sp
  .Vb 5
  \&        int foo (void)
--- 14765,14771 ----
  usually calculates the addresses of all three variables, but if you
  compile it with \fB\-fsection\-anchors\fR, it accesses the variables
  from a common anchor point instead.  The effect is similar to the
! following pseudocode (which isn\*(Aqt valid C):
  .Sp
  .Vb 5
  \&        int foo (void)
*************** following pseudocode (which isn't valid
*** 14843,14852 ****
  .Ve
  .Sp
  Not all targets support this option.
! .IP "\fB\-fzero\-call\-used\-regs=\fR\fIchoice\fR" 4
  .IX Item "-fzero-call-used-regs=choice"
! Zero call-used registers at function return to increase program
! security by either mitigating Return-Oriented Programming (\s-1ROP\s0)
  attacks or preventing information leakage through registers.
  .Sp
  The possible values of \fIchoice\fR are the same as for the
--- 14776,14785 ----
  .Ve
  .Sp
  Not all targets support this option.
! .IP \fB\-fzero\-call\-used\-regs=\fR\fIchoice\fR 4
  .IX Item "-fzero-call-used-regs=choice"
! Zero call\-used registers at function return to increase program
! security by either mitigating Return\-Oriented Programming (ROP)
  attacks or preventing information leakage through registers.
  .Sp
  The possible values of \fIchoice\fR are the same as for the
*************** You can control this behavior for a spec
*** 14857,14864 ****
  attribute \f(CW\*(C`zero_call_used_regs\*(C'\fR.
  .IP "\fB\-\-param\fR \fIname\fR\fB=\fR\fIvalue\fR" 4
  .IX Item "--param name=value"
! In some places, \s-1GCC\s0 uses various constants to control the amount of
! optimization that is done.  For example, \s-1GCC\s0 does not inline functions
  that contain more than a certain number of instructions.  You can
  control some of these constants on the command line using the
  \&\fB\-\-param\fR option.
--- 14790,14797 ----
  attribute \f(CW\*(C`zero_call_used_regs\*(C'\fR.
  .IP "\fB\-\-param\fR \fIname\fR\fB=\fR\fIvalue\fR" 4
  .IX Item "--param name=value"
! In some places, GCC uses various constants to control the amount of
! optimization that is done.  For example, GCC does not inline functions
  that contain more than a certain number of instructions.  You can
  control some of these constants on the command line using the
  \&\fB\-\-param\fR option.
*************** use the \fB\-\-help=param \-Q\fR options
*** 14873,14940 ****
  In each case, the \fIvalue\fR is an integer.  The following choices
  of \fIname\fR are recognized for all targets:
  .RS 4
! .IP "\fBphiopt-factor-max-stmts-live\fR" 4
  .IX Item "phiopt-factor-max-stmts-live"
  When factoring statements out of if/then/else, this is the max # of statements
  after the defining statement to be allow to extend the lifetime of a name
! .IP "\fBpredictable-branch-outcome\fR" 4
  .IX Item "predictable-branch-outcome"
  When branch is predicted to be taken with probability lower than this threshold
  (in percent), then it is considered well predictable.
! .IP "\fBmax-rtl-if-conversion-insns\fR" 4
  .IX Item "max-rtl-if-conversion-insns"
! \&\s-1RTL\s0 if-conversion tries to remove conditional branches around a block and
  replace them with conditionally executed instructions.  This parameter
  gives the maximum number of instructions in a block which should be
! considered for if-conversion.  The compiler will
! also use other heuristics to decide whether if-conversion is likely to be
  profitable.
! .IP "\fBfile-cache-files\fR" 4
  .IX Item "file-cache-files"
  Max number of files in the file cache.
  The file cache is used to print source lines in diagnostics and do some
  source checks like \fB\-Wmisleading\-indentation\fR.
! .IP "\fBfile-cache-lines\fR" 4
  .IX Item "file-cache-lines"
  Max number of lines to index into file cache. When 0 this is automatically sized.
  The file cache is used to print source lines in diagnostics and do some
  source checks like \fB\-Wmisleading\-indentation\fR.
! .IP "\fBmax-rtl-if-conversion-predictable-cost\fR" 4
  .IX Item "max-rtl-if-conversion-predictable-cost"
! \&\s-1RTL\s0 if-conversion will try to remove conditional branches around a block
  and replace them with conditionally executed instructions.  These parameters
  give the maximum permissible cost for the sequence that would be generated
! by if-conversion depending on whether the branch is statically determined
  to be predictable or not.  The units for this parameter are the same as
! those for the \s-1GCC\s0 internal seq_cost metric.  The compiler will try to
! provide a reasonable default for this parameter using the \s-1BRANCH_COST\s0
  target macro.
! .IP "\fBmax-crossjump-edges\fR" 4
  .IX Item "max-crossjump-edges"
! The maximum number of incoming edges to consider for cross-jumping.
  The algorithm used by \fB\-fcrossjumping\fR is O(N^2) in
  the number of edges incoming to each block.  Increasing values mean
  more aggressive optimization, making the compilation time increase with
  probably small improvement in executable size.
! .IP "\fBmin-crossjump-insns\fR" 4
  .IX Item "min-crossjump-insns"
  The minimum number of instructions that must be matched at the end
! of two blocks before cross-jumping is performed on them.  This
  value is ignored in the case where all instructions in the block being
! cross-jumped from are matched.
! .IP "\fBmax-grow-copy-bb-insns\fR" 4
  .IX Item "max-grow-copy-bb-insns"
  The maximum code size expansion factor when copying basic blocks
  instead of jumping.  The expansion is relative to a jump instruction.
! .IP "\fBmax-goto-duplication-insns\fR" 4
  .IX Item "max-goto-duplication-insns"
  The maximum number of instructions to duplicate to a block that jumps
  to a computed goto.  To avoid O(N^2) behavior in a number of
! passes, \s-1GCC\s0 factors computed gotos early in the compilation process,
  and unfactors them as late as possible.  Only computed jumps at the
! end of a basic blocks with no more than max-goto-duplication-insns are
  unfactored.
! .IP "\fBmax-delay-slot-insn-search\fR" 4
  .IX Item "max-delay-slot-insn-search"
  The maximum number of instructions to consider when looking for an
  instruction to fill a delay slot.  If more than this arbitrary number of
--- 14806,14873 ----
  In each case, the \fIvalue\fR is an integer.  The following choices
  of \fIname\fR are recognized for all targets:
  .RS 4
! .IP \fBphiopt\-factor\-max\-stmts\-live\fR 4
  .IX Item "phiopt-factor-max-stmts-live"
  When factoring statements out of if/then/else, this is the max # of statements
  after the defining statement to be allow to extend the lifetime of a name
! .IP \fBpredictable\-branch\-outcome\fR 4
  .IX Item "predictable-branch-outcome"
  When branch is predicted to be taken with probability lower than this threshold
  (in percent), then it is considered well predictable.
! .IP \fBmax\-rtl\-if\-conversion\-insns\fR 4
  .IX Item "max-rtl-if-conversion-insns"
! RTL if\-conversion tries to remove conditional branches around a block and
  replace them with conditionally executed instructions.  This parameter
  gives the maximum number of instructions in a block which should be
! considered for if\-conversion.  The compiler will
! also use other heuristics to decide whether if\-conversion is likely to be
  profitable.
! .IP \fBfile\-cache\-files\fR 4
  .IX Item "file-cache-files"
  Max number of files in the file cache.
  The file cache is used to print source lines in diagnostics and do some
  source checks like \fB\-Wmisleading\-indentation\fR.
! .IP \fBfile\-cache\-lines\fR 4
  .IX Item "file-cache-lines"
  Max number of lines to index into file cache. When 0 this is automatically sized.
  The file cache is used to print source lines in diagnostics and do some
  source checks like \fB\-Wmisleading\-indentation\fR.
! .IP \fBmax\-rtl\-if\-conversion\-predictable\-cost\fR 4
  .IX Item "max-rtl-if-conversion-predictable-cost"
! RTL if\-conversion will try to remove conditional branches around a block
  and replace them with conditionally executed instructions.  These parameters
  give the maximum permissible cost for the sequence that would be generated
! by if\-conversion depending on whether the branch is statically determined
  to be predictable or not.  The units for this parameter are the same as
! those for the GCC internal seq_cost metric.  The compiler will try to
! provide a reasonable default for this parameter using the BRANCH_COST
  target macro.
! .IP \fBmax\-crossjump\-edges\fR 4
  .IX Item "max-crossjump-edges"
! The maximum number of incoming edges to consider for cross\-jumping.
  The algorithm used by \fB\-fcrossjumping\fR is O(N^2) in
  the number of edges incoming to each block.  Increasing values mean
  more aggressive optimization, making the compilation time increase with
  probably small improvement in executable size.
! .IP \fBmin\-crossjump\-insns\fR 4
  .IX Item "min-crossjump-insns"
  The minimum number of instructions that must be matched at the end
! of two blocks before cross\-jumping is performed on them.  This
  value is ignored in the case where all instructions in the block being
! cross\-jumped from are matched.
! .IP \fBmax\-grow\-copy\-bb\-insns\fR 4
  .IX Item "max-grow-copy-bb-insns"
  The maximum code size expansion factor when copying basic blocks
  instead of jumping.  The expansion is relative to a jump instruction.
! .IP \fBmax\-goto\-duplication\-insns\fR 4
  .IX Item "max-goto-duplication-insns"
  The maximum number of instructions to duplicate to a block that jumps
  to a computed goto.  To avoid O(N^2) behavior in a number of
! passes, GCC factors computed gotos early in the compilation process,
  and unfactors them as late as possible.  Only computed jumps at the
! end of a basic blocks with no more than max\-goto\-duplication\-insns are
  unfactored.
! .IP \fBmax\-delay\-slot\-insn\-search\fR 4
  .IX Item "max-delay-slot-insn-search"
  The maximum number of instructions to consider when looking for an
  instruction to fill a delay slot.  If more than this arbitrary number of
*************** instructions are searched, the time savi
*** 14942,15113 ****
  are minimal, so stop searching.  Increasing values mean more
  aggressive optimization, making the compilation time increase with probably
  small improvement in execution time.
! .IP "\fBmax-delay-slot-live-search\fR" 4
  .IX Item "max-delay-slot-live-search"
  When trying to fill delay slots, the maximum number of instructions to
  consider when searching for a block with valid live register
  information.  Increasing this arbitrarily chosen value means more
  aggressive optimization, increasing the compilation time.  This parameter
  should be removed when the delay slot code is rewritten to maintain the
! control-flow graph.
! .IP "\fBmax-gcse-memory\fR" 4
  .IX Item "max-gcse-memory"
  The approximate maximum amount of memory in \f(CW\*(C`kB\*(C'\fR that can be allocated in
  order to perform the global common subexpression elimination
  optimization.  If more memory than specified is required, the
  optimization is not done.
! .IP "\fBmax-gcse-insertion-ratio\fR" 4
  .IX Item "max-gcse-insertion-ratio"
  If the ratio of expression insertions to deletions is larger than this value
! for any expression, then \s-1RTL PRE\s0 inserts or removes the expression and thus
  leaves partially redundant computations in the instruction stream.
! .IP "\fBmax-pending-list-length\fR" 4
  .IX Item "max-pending-list-length"
  The maximum number of pending dependencies scheduling allows
  before flushing the current state and starting over.  Large functions
  with few branches or calls can create excessively large lists which
  needlessly consume memory and resources.
! .IP "\fBmax-modulo-backtrack-attempts\fR" 4
  .IX Item "max-modulo-backtrack-attempts"
  The maximum number of backtrack attempts the scheduler should make
  when modulo scheduling a loop.  Larger values can exponentially increase
  compilation time.
! .IP "\fBmax-inline-functions-called-once-loop-depth\fR" 4
  .IX Item "max-inline-functions-called-once-loop-depth"
  Maximal loop depth of a call considered by inline heuristics that tries to
  inline all functions called once.
! .IP "\fBmax-inline-functions-called-once-insns\fR" 4
  .IX Item "max-inline-functions-called-once-insns"
  Maximal estimated size of functions produced while inlining functions called
  once.
! .IP "\fBmax-inline-insns-single\fR" 4
  .IX Item "max-inline-insns-single"
! Several parameters control the tree inliner used in \s-1GCC.\s0  This number sets the
! maximum number of instructions (counted in \s-1GCC\s0's internal representation) in a
  single function that the tree inliner considers for inlining.  This only
  affects functions declared inline and methods implemented in a class
! declaration (\*(C+).
! .IP "\fBmax-inline-insns-auto\fR" 4
  .IX Item "max-inline-insns-auto"
  When you use \fB\-finline\-functions\fR (included in \fB\-O3\fR),
  a lot of functions that would otherwise not be considered for inlining
  by the compiler are investigated.  To those functions, a different
  (more restrictive) limit compared to functions declared inline can
! be applied (\fB\-\-param max-inline-insns-auto\fR).
! .IP "\fBmax-inline-insns-small\fR" 4
  .IX Item "max-inline-insns-small"
  This is the bound applied to calls that are considered relevant with
  \&\fB\-finline\-small\-functions\fR.
! .IP "\fBmax-inline-insns-size\fR" 4
  .IX Item "max-inline-insns-size"
  This is the bound applied to calls that are optimized for size. Small growth
  may be desirable to anticipate optimization opportunities exposed by inlining.
! .IP "\fBuninlined-function-insns\fR" 4
  .IX Item "uninlined-function-insns"
  Number of instructions accounted by inliner for function overhead such as
  function prologue and epilogue.
! .IP "\fBuninlined-function-time\fR" 4
  .IX Item "uninlined-function-time"
  Extra time accounted by inliner for function overhead such as time needed to
  execute function prologue and epilogue.
! .IP "\fBinline-heuristics-hint-percent\fR" 4
  .IX Item "inline-heuristics-hint-percent"
! The scale (in percents) applied to \fBinline-insns-single\fR,
! \&\fBinline\-insns\-single\-O2\fR, \fBinline-insns-auto\fR
  when inline heuristics hints that inlining is
  very profitable (will enable later optimizations).
! .IP "\fBuninlined-thunk-insns\fR" 4
  .IX Item "uninlined-thunk-insns"
  .PD 0
! .IP "\fBuninlined-thunk-time\fR" 4
  .IX Item "uninlined-thunk-time"
  .PD
! Same as \fB\-\-param uninlined-function-insns\fR and
! \&\fB\-\-param uninlined-function-time\fR but applied to function thunks.
! .IP "\fBinline-min-speedup\fR" 4
  .IX Item "inline-min-speedup"
  When estimated performance improvement of caller + callee runtime exceeds this
  threshold (in percent), the function can be inlined regardless of the limit on
! \&\fB\-\-param max-inline-insns-single\fR and \fB\-\-param
! max-inline-insns-auto\fR.
! .IP "\fBlarge-function-insns\fR" 4
  .IX Item "large-function-insns"
  The limit specifying really large functions.  For functions larger than this
  limit after inlining, inlining is constrained by
! \&\fB\-\-param large-function-growth\fR.  This parameter is useful primarily
! to avoid extreme compilation time caused by non-linear algorithms used by the
  back end.
! .IP "\fBlarge-function-growth\fR" 4
  .IX Item "large-function-growth"
  Specifies maximal growth of large functions caused by inlining in percents.
  For example, parameter value 100 limits large function growth to 2.0 times
  the original size.
! .IP "\fBlarge-unit-insns\fR" 4
  .IX Item "large-unit-insns"
  The limit specifying large translation unit.  Growth caused by inlining of
! units larger than this limit is limited by \fB\-\-param inline-unit-growth\fR.
  For small units this might be too tight.
  For example, consider a unit consisting of function A
  that is inline and B that just calls A three times.  If B is small relative to
  A, the growth of unit is 300\e% and yet such inlining is very sane.  For very
  large units consisting of small inlineable functions, however, the overall unit
  growth limit is needed to avoid exponential explosion of code size.  Thus for
! smaller units, the size is increased to \fB\-\-param large-unit-insns\fR
! before applying \fB\-\-param inline-unit-growth\fR.
! .IP "\fBlazy-modules\fR" 4
  .IX Item "lazy-modules"
! Maximum number of concurrently open \*(C+ module files when lazy loading.
! .IP "\fBinline-unit-growth\fR" 4
  .IX Item "inline-unit-growth"
  Specifies maximal overall growth of the compilation unit caused by inlining.
  For example, parameter value 20 limits unit growth to 1.2 times the original
  size. Cold functions (either marked cold via an attribute or by profile
  feedback) are not accounted into the unit size.
! .IP "\fBipa-cp-unit-growth\fR" 4
  .IX Item "ipa-cp-unit-growth"
  Specifies maximal overall growth of the compilation unit caused by
  interprocedural constant propagation.  For example, parameter value 10 limits
  unit growth to 1.1 times the original size.
! .IP "\fBipa-cp-large-unit-insns\fR" 4
  .IX Item "ipa-cp-large-unit-insns"
! The size of translation unit that IPA-CP pass considers large.
! .IP "\fBlarge-stack-frame\fR" 4
  .IX Item "large-stack-frame"
  The limit specifying large stack frames.  While inlining the algorithm is trying
  to not grow past this limit too much.
! .IP "\fBlarge-stack-frame-growth\fR" 4
  .IX Item "large-stack-frame-growth"
  Specifies maximal growth of large stack frames caused by inlining in percents.
  For example, parameter value 1000 limits large stack frame growth to 11 times
  the original size.
! .IP "\fBmax-inline-insns-recursive\fR" 4
  .IX Item "max-inline-insns-recursive"
  .PD 0
! .IP "\fBmax-inline-insns-recursive-auto\fR" 4
  .IX Item "max-inline-insns-recursive-auto"
  .PD
! Specifies the maximum number of instructions an out-of-line copy of a
! self-recursive inline
  function can grow into by performing recursive inlining.
  .Sp
! \&\fB\-\-param max-inline-insns-recursive\fR applies to functions
  declared inline.
  For functions not declared inline, recursive inlining
  happens only when \fB\-finline\-functions\fR (included in \fB\-O3\fR) is
! enabled; \fB\-\-param max-inline-insns-recursive-auto\fR applies instead.
! .IP "\fBmax-inline-recursive-depth\fR" 4
  .IX Item "max-inline-recursive-depth"
  .PD 0
! .IP "\fBmax-inline-recursive-depth-auto\fR" 4
  .IX Item "max-inline-recursive-depth-auto"
  .PD
  Specifies the maximum recursion depth used for recursive inlining.
  .Sp
! \&\fB\-\-param max-inline-recursive-depth\fR applies to functions
  declared inline.  For functions not declared inline, recursive inlining
  happens only when \fB\-finline\-functions\fR (included in \fB\-O3\fR) is
! enabled; \fB\-\-param max-inline-recursive-depth-auto\fR applies instead.
! .IP "\fBmin-inline-recursive-probability\fR" 4
  .IX Item "min-inline-recursive-probability"
  Recursive inlining is profitable only for function having deep recursion
  in average and can hurt for function having little recursion depth by
--- 14875,15046 ----
  are minimal, so stop searching.  Increasing values mean more
  aggressive optimization, making the compilation time increase with probably
  small improvement in execution time.
! .IP \fBmax\-delay\-slot\-live\-search\fR 4
  .IX Item "max-delay-slot-live-search"
  When trying to fill delay slots, the maximum number of instructions to
  consider when searching for a block with valid live register
  information.  Increasing this arbitrarily chosen value means more
  aggressive optimization, increasing the compilation time.  This parameter
  should be removed when the delay slot code is rewritten to maintain the
! control\-flow graph.
! .IP \fBmax\-gcse\-memory\fR 4
  .IX Item "max-gcse-memory"
  The approximate maximum amount of memory in \f(CW\*(C`kB\*(C'\fR that can be allocated in
  order to perform the global common subexpression elimination
  optimization.  If more memory than specified is required, the
  optimization is not done.
! .IP \fBmax\-gcse\-insertion\-ratio\fR 4
  .IX Item "max-gcse-insertion-ratio"
  If the ratio of expression insertions to deletions is larger than this value
! for any expression, then RTL PRE inserts or removes the expression and thus
  leaves partially redundant computations in the instruction stream.
! .IP \fBmax\-pending\-list\-length\fR 4
  .IX Item "max-pending-list-length"
  The maximum number of pending dependencies scheduling allows
  before flushing the current state and starting over.  Large functions
  with few branches or calls can create excessively large lists which
  needlessly consume memory and resources.
! .IP \fBmax\-modulo\-backtrack\-attempts\fR 4
  .IX Item "max-modulo-backtrack-attempts"
  The maximum number of backtrack attempts the scheduler should make
  when modulo scheduling a loop.  Larger values can exponentially increase
  compilation time.
! .IP \fBmax\-inline\-functions\-called\-once\-loop\-depth\fR 4
  .IX Item "max-inline-functions-called-once-loop-depth"
  Maximal loop depth of a call considered by inline heuristics that tries to
  inline all functions called once.
! .IP \fBmax\-inline\-functions\-called\-once\-insns\fR 4
  .IX Item "max-inline-functions-called-once-insns"
  Maximal estimated size of functions produced while inlining functions called
  once.
! .IP \fBmax\-inline\-insns\-single\fR 4
  .IX Item "max-inline-insns-single"
! Several parameters control the tree inliner used in GCC.  This number sets the
! maximum number of instructions (counted in GCC\*(Aqs internal representation) in a
  single function that the tree inliner considers for inlining.  This only
  affects functions declared inline and methods implemented in a class
! declaration (C++).
! .IP \fBmax\-inline\-insns\-auto\fR 4
  .IX Item "max-inline-insns-auto"
  When you use \fB\-finline\-functions\fR (included in \fB\-O3\fR),
  a lot of functions that would otherwise not be considered for inlining
  by the compiler are investigated.  To those functions, a different
  (more restrictive) limit compared to functions declared inline can
! be applied (\fB\-\-param max\-inline\-insns\-auto\fR).
! .IP \fBmax\-inline\-insns\-small\fR 4
  .IX Item "max-inline-insns-small"
  This is the bound applied to calls that are considered relevant with
  \&\fB\-finline\-small\-functions\fR.
! .IP \fBmax\-inline\-insns\-size\fR 4
  .IX Item "max-inline-insns-size"
  This is the bound applied to calls that are optimized for size. Small growth
  may be desirable to anticipate optimization opportunities exposed by inlining.
! .IP \fBuninlined\-function\-insns\fR 4
  .IX Item "uninlined-function-insns"
  Number of instructions accounted by inliner for function overhead such as
  function prologue and epilogue.
! .IP \fBuninlined\-function\-time\fR 4
  .IX Item "uninlined-function-time"
  Extra time accounted by inliner for function overhead such as time needed to
  execute function prologue and epilogue.
! .IP \fBinline\-heuristics\-hint\-percent\fR 4
  .IX Item "inline-heuristics-hint-percent"
! The scale (in percents) applied to \fBinline\-insns\-single\fR,
! \&\fBinline\-insns\-single\-O2\fR, \fBinline\-insns\-auto\fR
  when inline heuristics hints that inlining is
  very profitable (will enable later optimizations).
! .IP \fBuninlined\-thunk\-insns\fR 4
  .IX Item "uninlined-thunk-insns"
  .PD 0
! .IP \fBuninlined\-thunk\-time\fR 4
  .IX Item "uninlined-thunk-time"
  .PD
! Same as \fB\-\-param uninlined\-function\-insns\fR and
! \&\fB\-\-param uninlined\-function\-time\fR but applied to function thunks.
! .IP \fBinline\-min\-speedup\fR 4
  .IX Item "inline-min-speedup"
  When estimated performance improvement of caller + callee runtime exceeds this
  threshold (in percent), the function can be inlined regardless of the limit on
! \&\fB\-\-param max\-inline\-insns\-single\fR and \fB\-\-param
! max\-inline\-insns\-auto\fR.
! .IP \fBlarge\-function\-insns\fR 4
  .IX Item "large-function-insns"
  The limit specifying really large functions.  For functions larger than this
  limit after inlining, inlining is constrained by
! \&\fB\-\-param large\-function\-growth\fR.  This parameter is useful primarily
! to avoid extreme compilation time caused by non\-linear algorithms used by the
  back end.
! .IP \fBlarge\-function\-growth\fR 4
  .IX Item "large-function-growth"
  Specifies maximal growth of large functions caused by inlining in percents.
  For example, parameter value 100 limits large function growth to 2.0 times
  the original size.
! .IP \fBlarge\-unit\-insns\fR 4
  .IX Item "large-unit-insns"
  The limit specifying large translation unit.  Growth caused by inlining of
! units larger than this limit is limited by \fB\-\-param inline\-unit\-growth\fR.
  For small units this might be too tight.
  For example, consider a unit consisting of function A
  that is inline and B that just calls A three times.  If B is small relative to
  A, the growth of unit is 300\e% and yet such inlining is very sane.  For very
  large units consisting of small inlineable functions, however, the overall unit
  growth limit is needed to avoid exponential explosion of code size.  Thus for
! smaller units, the size is increased to \fB\-\-param large\-unit\-insns\fR
! before applying \fB\-\-param inline\-unit\-growth\fR.
! .IP \fBlazy\-modules\fR 4
  .IX Item "lazy-modules"
! Maximum number of concurrently open C++ module files when lazy loading.
! .IP \fBinline\-unit\-growth\fR 4
  .IX Item "inline-unit-growth"
  Specifies maximal overall growth of the compilation unit caused by inlining.
  For example, parameter value 20 limits unit growth to 1.2 times the original
  size. Cold functions (either marked cold via an attribute or by profile
  feedback) are not accounted into the unit size.
! .IP \fBipa\-cp\-unit\-growth\fR 4
  .IX Item "ipa-cp-unit-growth"
  Specifies maximal overall growth of the compilation unit caused by
  interprocedural constant propagation.  For example, parameter value 10 limits
  unit growth to 1.1 times the original size.
! .IP \fBipa\-cp\-large\-unit\-insns\fR 4
  .IX Item "ipa-cp-large-unit-insns"
! The size of translation unit that IPA\-CP pass considers large.
! .IP \fBlarge\-stack\-frame\fR 4
  .IX Item "large-stack-frame"
  The limit specifying large stack frames.  While inlining the algorithm is trying
  to not grow past this limit too much.
! .IP \fBlarge\-stack\-frame\-growth\fR 4
  .IX Item "large-stack-frame-growth"
  Specifies maximal growth of large stack frames caused by inlining in percents.
  For example, parameter value 1000 limits large stack frame growth to 11 times
  the original size.
! .IP \fBmax\-inline\-insns\-recursive\fR 4
  .IX Item "max-inline-insns-recursive"
  .PD 0
! .IP \fBmax\-inline\-insns\-recursive\-auto\fR 4
  .IX Item "max-inline-insns-recursive-auto"
  .PD
! Specifies the maximum number of instructions an out\-of\-line copy of a
! self\-recursive inline
  function can grow into by performing recursive inlining.
  .Sp
! \&\fB\-\-param max\-inline\-insns\-recursive\fR applies to functions
  declared inline.
  For functions not declared inline, recursive inlining
  happens only when \fB\-finline\-functions\fR (included in \fB\-O3\fR) is
! enabled; \fB\-\-param max\-inline\-insns\-recursive\-auto\fR applies instead.
! .IP \fBmax\-inline\-recursive\-depth\fR 4
  .IX Item "max-inline-recursive-depth"
  .PD 0
! .IP \fBmax\-inline\-recursive\-depth\-auto\fR 4
  .IX Item "max-inline-recursive-depth-auto"
  .PD
  Specifies the maximum recursion depth used for recursive inlining.
  .Sp
! \&\fB\-\-param max\-inline\-recursive\-depth\fR applies to functions
  declared inline.  For functions not declared inline, recursive inlining
  happens only when \fB\-finline\-functions\fR (included in \fB\-O3\fR) is
! enabled; \fB\-\-param max\-inline\-recursive\-depth\-auto\fR applies instead.
! .IP \fBmin\-inline\-recursive\-probability\fR 4
  .IX Item "min-inline-recursive-probability"
  Recursive inlining is profitable only for function having deep recursion
  in average and can hurt for function having little recursion depth by
*************** When profile feedback is available (see
*** 15118,15336 ****
  recursion depth can be guessed from the probability that function recurses
  via a given call expression.  This parameter limits inlining only to call
  expressions whose probability exceeds the given threshold (in percents).
! .IP "\fBearly-inlining-insns\fR" 4
  .IX Item "early-inlining-insns"
  Specify growth that the early inliner can make.  In effect it increases
  the amount of inlining for code having a large abstraction penalty.
! .IP "\fBmax-early-inliner-iterations\fR" 4
  .IX Item "max-early-inliner-iterations"
  Limit of iterations of the early inliner.  This basically bounds
  the number of nested indirect calls the early inliner can resolve.
  Deeper chains are still handled by late inlining.
! .IP "\fBcomdat-sharing-probability\fR" 4
  .IX Item "comdat-sharing-probability"
! Probability (in percent) that \*(C+ inline function with comdat visibility
  are shared across multiple compilation units.
! .IP "\fBmodref-max-bases\fR" 4
  .IX Item "modref-max-bases"
  .PD 0
! .IP "\fBmodref-max-refs\fR" 4
  .IX Item "modref-max-refs"
! .IP "\fBmodref-max-accesses\fR" 4
  .IX Item "modref-max-accesses"
  .PD
  Specifies the maximal number of base pointers, references and accesses stored
  for a single function by mod/ref analysis.
! .IP "\fBmodref-max-tests\fR" 4
  .IX Item "modref-max-tests"
  Specifies the maxmal number of tests alias oracle can perform to disambiguate
  memory locations using the mod/ref information.  This parameter ought to be
! bigger than \fB\-\-param modref-max-bases\fR and \fB\-\-param
! modref-max-refs\fR.
! .IP "\fBmodref-max-depth\fR" 4
  .IX Item "modref-max-depth"
! Specifies the maximum depth of \s-1DFS\s0 walk used by modref escape analysis.
  Setting to 0 disables the analysis completely.
! .IP "\fBmodref-max-escape-points\fR" 4
  .IX Item "modref-max-escape-points"
! Specifies the maximum number of escape points tracked by modref per SSA-name.
! .IP "\fBmodref-max-adjustments\fR" 4
  .IX Item "modref-max-adjustments"
  Specifies the maximum number the access range is enlarged during modref dataflow
  analysis.
! .IP "\fBprofile-func-internal-id\fR" 4
  .IX Item "profile-func-internal-id"
  A parameter to control whether to use function internal id in profile
  database lookup. If the value is 0, the compiler uses an id that
  is based on function assembler name and filename, which makes old profile
  data more tolerant to source changes such as function reordering etc.
! .IP "\fBmin-vect-loop-bound\fR" 4
  .IX Item "min-vect-loop-bound"
  The minimum number of iterations under which loops are not vectorized
  when \fB\-ftree\-vectorize\fR is used.  The number of iterations after
  vectorization needs to be greater than the value specified by this option
  to allow vectorization.
! .IP "\fBgcse-cost-distance-ratio\fR" 4
  .IX Item "gcse-cost-distance-ratio"
  Scaling factor in calculation of maximum distance an expression
! can be moved by \s-1GCSE\s0 optimizations.  This is currently supported only in the
  code hoisting pass.  The bigger the ratio, the more aggressive code hoisting
  is with simple expressions, i.e., the expressions that have cost
! less than \fBgcse-unrestricted-cost\fR.  Specifying 0 disables
  hoisting of simple expressions.
! .IP "\fBgcse-unrestricted-cost\fR" 4
  .IX Item "gcse-unrestricted-cost"
  Cost, roughly measured as the cost of a single typical machine
! instruction, at which \s-1GCSE\s0 optimizations do not constrain
  the distance an expression can travel.  This is currently
  supported only in the code hoisting pass.  The lesser the cost,
  the more aggressive code hoisting is.  Specifying 0
  allows all expressions to travel unrestricted distances.
! .IP "\fBmax-hoist-depth\fR" 4
  .IX Item "max-hoist-depth"
  The depth of search in the dominator tree for expressions to hoist.
  This is used to avoid quadratic behavior in hoisting algorithm.
  The value of 0 does not limit on the search, but may slow down compilation
  of huge functions.
! .IP "\fBmax-tail-merge-comparisons\fR" 4
  .IX Item "max-tail-merge-comparisons"
  The maximum amount of similar bbs to compare a bb with.  This is used to
  avoid quadratic behavior in tree tail merging.
! .IP "\fBmax-tail-merge-iterations\fR" 4
  .IX Item "max-tail-merge-iterations"
  The maximum amount of iterations of the pass over the function.  This is used to
  limit compilation time in tree tail merging.
! .IP "\fBstore-merging-allow-unaligned\fR" 4
  .IX Item "store-merging-allow-unaligned"
  Allow the store merging pass to introduce unaligned stores if it is legal to
  do so.
! .IP "\fBmax-stores-to-merge\fR" 4
  .IX Item "max-stores-to-merge"
  The maximum number of stores to attempt to merge into wider stores in the store
  merging pass.
! .IP "\fBmax-store-chains-to-track\fR" 4
  .IX Item "max-store-chains-to-track"
  The maximum number of store chains to track at the same time in the attempt
  to merge them into wider stores in the store merging pass.
! .IP "\fBmax-stores-to-track\fR" 4
  .IX Item "max-stores-to-track"
  The maximum number of stores to track at the same time in the attemt to
  to merge them into wider stores in the store merging pass.
! .IP "\fBmax-unrolled-insns\fR" 4
  .IX Item "max-unrolled-insns"
  The maximum number of instructions that a loop may have to be unrolled.
  If a loop is unrolled, this parameter also determines how many times
  the loop code is unrolled.
! .IP "\fBmax-average-unrolled-insns\fR" 4
  .IX Item "max-average-unrolled-insns"
  The maximum number of instructions biased by probabilities of their execution
  that a loop may have to be unrolled.  If a loop is unrolled,
  this parameter also determines how many times the loop code is unrolled.
! .IP "\fBmax-unroll-times\fR" 4
  .IX Item "max-unroll-times"
  The maximum number of unrollings of a single loop.
! .IP "\fBmax-peeled-insns\fR" 4
  .IX Item "max-peeled-insns"
  The maximum number of instructions that a loop may have to be peeled.
  If a loop is peeled, this parameter also determines how many times
  the loop code is peeled.
! .IP "\fBmax-peel-times\fR" 4
  .IX Item "max-peel-times"
  The maximum number of peelings of a single loop.
! .IP "\fBmax-peel-branches\fR" 4
  .IX Item "max-peel-branches"
  The maximum number of branches on the hot path through the peeled sequence.
! .IP "\fBmax-completely-peeled-insns\fR" 4
  .IX Item "max-completely-peeled-insns"
  The maximum number of insns of a completely peeled loop.
! .IP "\fBmax-completely-peel-times\fR" 4
  .IX Item "max-completely-peel-times"
  The maximum number of iterations of a loop to be suitable for complete peeling.
! .IP "\fBmax-completely-peel-loop-nest-depth\fR" 4
  .IX Item "max-completely-peel-loop-nest-depth"
  The maximum depth of a loop nest suitable for complete peeling.
! .IP "\fBmax-unswitch-insns\fR" 4
  .IX Item "max-unswitch-insns"
  The maximum number of insns of an unswitched loop.
! .IP "\fBmax-unswitch-depth\fR" 4
  .IX Item "max-unswitch-depth"
  The maximum depth of a loop nest to be unswitched.
! .IP "\fBlim-expensive\fR" 4
  .IX Item "lim-expensive"
  The minimum cost of an expensive expression in the loop invariant motion.
! .IP "\fBmin-loop-cond-split-prob\fR" 4
  .IX Item "min-loop-cond-split-prob"
! When \s-1FDO\s0 profile information is available, \fBmin-loop-cond-split-prob\fR
! specifies minimum threshold for probability of semi-invariant condition
  statement to trigger loop split.
! .IP "\fBiv-consider-all-candidates-bound\fR" 4
  .IX Item "iv-consider-all-candidates-bound"
  Bound on number of candidates for induction variables, below which
  all candidates are considered for each use in induction variable
  optimizations.  If there are more candidates than this,
  only the most relevant ones are considered to avoid quadratic time complexity.
! .IP "\fBiv-max-considered-uses\fR" 4
  .IX Item "iv-max-considered-uses"
  The induction variable optimizations give up on loops that contain more
  induction variable uses.
! .IP "\fBiv-always-prune-cand-set-bound\fR" 4
  .IX Item "iv-always-prune-cand-set-bound"
  If the number of candidates in the set is smaller than this value,
  always try to remove unnecessary ivs from the set
  when adding a new one.
! .IP "\fBavg-loop-niter\fR" 4
  .IX Item "avg-loop-niter"
  Average number of iterations of a loop.
! .IP "\fBdse-max-object-size\fR" 4
  .IX Item "dse-max-object-size"
  Maximum size (in bytes) of objects tracked bytewise by dead store elimination.
  Larger values may result in larger compilation times.
! .IP "\fBdse-max-alias-queries-per-store\fR" 4
  .IX Item "dse-max-alias-queries-per-store"
  Maximum number of queries into the alias oracle per store.
  Larger values result in larger compilation times and may result in more
  removed dead stores.
! .IP "\fBscev-max-expr-size\fR" 4
  .IX Item "scev-max-expr-size"
  Bound on size of expressions used in the scalar evolutions analyzer.
  Large expressions slow the analyzer.
! .IP "\fBscev-max-expr-complexity\fR" 4
  .IX Item "scev-max-expr-complexity"
  Bound on the complexity of the expressions in the scalar evolutions analyzer.
  Complex expressions slow the analyzer.
! .IP "\fBmax-tree-if-conversion-phi-args\fR" 4
  .IX Item "max-tree-if-conversion-phi-args"
! Maximum number of arguments in a \s-1PHI\s0 supported by \s-1TREE\s0 if conversion
  unless the loop is marked with simd pragma.
! .IP "\fBvect-max-layout-candidates\fR" 4
  .IX Item "vect-max-layout-candidates"
  The maximum number of possible vector layouts (such as permutations)
! to consider when optimizing to-be-vectorized code.
! .IP "\fBvect-max-version-for-alignment-checks\fR" 4
  .IX Item "vect-max-version-for-alignment-checks"
! The maximum number of run-time checks that can be performed when
  doing loop versioning for alignment in the vectorizer.
! .IP "\fBvect-max-version-for-alias-checks\fR" 4
  .IX Item "vect-max-version-for-alias-checks"
! The maximum number of run-time checks that can be performed when
  doing loop versioning for alias in the vectorizer.
! .IP "\fBvect-max-peeling-for-alignment\fR" 4
  .IX Item "vect-max-peeling-for-alignment"
  The maximum number of loop peels to enhance access alignment
  for vectorizer. Value \-1 means no limit.
! .IP "\fBmax-iterations-to-track\fR" 4
  .IX Item "max-iterations-to-track"
! The maximum number of iterations of a loop the brute-force algorithm
  for analysis of the number of iterations of the loop tries to evaluate.
! .IP "\fBhot-bb-count-fraction\fR" 4
  .IX Item "hot-bb-count-fraction"
  The denominator n of fraction 1/n of the maximal execution count of a
  basic block in the entire program that a basic block needs to at least
  have in order to be considered hot.  The default is 10000, which means
  that a basic block is considered hot if its execution count is greater
  than 1/10000 of the maximal execution count.  0 means that it is never
! considered hot.  Used in non-LTO mode.
! .IP "\fBhot-bb-count-ws-permille\fR" 4
  .IX Item "hot-bb-count-ws-permille"
  The number of most executed permilles, ranging from 0 to 1000, of the
  profiled execution of the entire program to which the execution count
--- 15051,15269 ----
  recursion depth can be guessed from the probability that function recurses
  via a given call expression.  This parameter limits inlining only to call
  expressions whose probability exceeds the given threshold (in percents).
! .IP \fBearly\-inlining\-insns\fR 4
  .IX Item "early-inlining-insns"
  Specify growth that the early inliner can make.  In effect it increases
  the amount of inlining for code having a large abstraction penalty.
! .IP \fBmax\-early\-inliner\-iterations\fR 4
  .IX Item "max-early-inliner-iterations"
  Limit of iterations of the early inliner.  This basically bounds
  the number of nested indirect calls the early inliner can resolve.
  Deeper chains are still handled by late inlining.
! .IP \fBcomdat\-sharing\-probability\fR 4
  .IX Item "comdat-sharing-probability"
! Probability (in percent) that C++ inline function with comdat visibility
  are shared across multiple compilation units.
! .IP \fBmodref\-max\-bases\fR 4
  .IX Item "modref-max-bases"
  .PD 0
! .IP \fBmodref\-max\-refs\fR 4
  .IX Item "modref-max-refs"
! .IP \fBmodref\-max\-accesses\fR 4
  .IX Item "modref-max-accesses"
  .PD
  Specifies the maximal number of base pointers, references and accesses stored
  for a single function by mod/ref analysis.
! .IP \fBmodref\-max\-tests\fR 4
  .IX Item "modref-max-tests"
  Specifies the maxmal number of tests alias oracle can perform to disambiguate
  memory locations using the mod/ref information.  This parameter ought to be
! bigger than \fB\-\-param modref\-max\-bases\fR and \fB\-\-param
! modref\-max\-refs\fR.
! .IP \fBmodref\-max\-depth\fR 4
  .IX Item "modref-max-depth"
! Specifies the maximum depth of DFS walk used by modref escape analysis.
  Setting to 0 disables the analysis completely.
! .IP \fBmodref\-max\-escape\-points\fR 4
  .IX Item "modref-max-escape-points"
! Specifies the maximum number of escape points tracked by modref per SSA\-name.
! .IP \fBmodref\-max\-adjustments\fR 4
  .IX Item "modref-max-adjustments"
  Specifies the maximum number the access range is enlarged during modref dataflow
  analysis.
! .IP \fBprofile\-func\-internal\-id\fR 4
  .IX Item "profile-func-internal-id"
  A parameter to control whether to use function internal id in profile
  database lookup. If the value is 0, the compiler uses an id that
  is based on function assembler name and filename, which makes old profile
  data more tolerant to source changes such as function reordering etc.
! .IP \fBmin\-vect\-loop\-bound\fR 4
  .IX Item "min-vect-loop-bound"
  The minimum number of iterations under which loops are not vectorized
  when \fB\-ftree\-vectorize\fR is used.  The number of iterations after
  vectorization needs to be greater than the value specified by this option
  to allow vectorization.
! .IP \fBgcse\-cost\-distance\-ratio\fR 4
  .IX Item "gcse-cost-distance-ratio"
  Scaling factor in calculation of maximum distance an expression
! can be moved by GCSE optimizations.  This is currently supported only in the
  code hoisting pass.  The bigger the ratio, the more aggressive code hoisting
  is with simple expressions, i.e., the expressions that have cost
! less than \fBgcse\-unrestricted\-cost\fR.  Specifying 0 disables
  hoisting of simple expressions.
! .IP \fBgcse\-unrestricted\-cost\fR 4
  .IX Item "gcse-unrestricted-cost"
  Cost, roughly measured as the cost of a single typical machine
! instruction, at which GCSE optimizations do not constrain
  the distance an expression can travel.  This is currently
  supported only in the code hoisting pass.  The lesser the cost,
  the more aggressive code hoisting is.  Specifying 0
  allows all expressions to travel unrestricted distances.
! .IP \fBmax\-hoist\-depth\fR 4
  .IX Item "max-hoist-depth"
  The depth of search in the dominator tree for expressions to hoist.
  This is used to avoid quadratic behavior in hoisting algorithm.
  The value of 0 does not limit on the search, but may slow down compilation
  of huge functions.
! .IP \fBmax\-tail\-merge\-comparisons\fR 4
  .IX Item "max-tail-merge-comparisons"
  The maximum amount of similar bbs to compare a bb with.  This is used to
  avoid quadratic behavior in tree tail merging.
! .IP \fBmax\-tail\-merge\-iterations\fR 4
  .IX Item "max-tail-merge-iterations"
  The maximum amount of iterations of the pass over the function.  This is used to
  limit compilation time in tree tail merging.
! .IP \fBstore\-merging\-allow\-unaligned\fR 4
  .IX Item "store-merging-allow-unaligned"
  Allow the store merging pass to introduce unaligned stores if it is legal to
  do so.
! .IP \fBmax\-stores\-to\-merge\fR 4
  .IX Item "max-stores-to-merge"
  The maximum number of stores to attempt to merge into wider stores in the store
  merging pass.
! .IP \fBmax\-store\-chains\-to\-track\fR 4
  .IX Item "max-store-chains-to-track"
  The maximum number of store chains to track at the same time in the attempt
  to merge them into wider stores in the store merging pass.
! .IP \fBmax\-stores\-to\-track\fR 4
  .IX Item "max-stores-to-track"
  The maximum number of stores to track at the same time in the attemt to
  to merge them into wider stores in the store merging pass.
! .IP \fBmax\-unrolled\-insns\fR 4
  .IX Item "max-unrolled-insns"
  The maximum number of instructions that a loop may have to be unrolled.
  If a loop is unrolled, this parameter also determines how many times
  the loop code is unrolled.
! .IP \fBmax\-average\-unrolled\-insns\fR 4
  .IX Item "max-average-unrolled-insns"
  The maximum number of instructions biased by probabilities of their execution
  that a loop may have to be unrolled.  If a loop is unrolled,
  this parameter also determines how many times the loop code is unrolled.
! .IP \fBmax\-unroll\-times\fR 4
  .IX Item "max-unroll-times"
  The maximum number of unrollings of a single loop.
! .IP \fBmax\-peeled\-insns\fR 4
  .IX Item "max-peeled-insns"
  The maximum number of instructions that a loop may have to be peeled.
  If a loop is peeled, this parameter also determines how many times
  the loop code is peeled.
! .IP \fBmax\-peel\-times\fR 4
  .IX Item "max-peel-times"
  The maximum number of peelings of a single loop.
! .IP \fBmax\-peel\-branches\fR 4
  .IX Item "max-peel-branches"
  The maximum number of branches on the hot path through the peeled sequence.
! .IP \fBmax\-completely\-peeled\-insns\fR 4
  .IX Item "max-completely-peeled-insns"
  The maximum number of insns of a completely peeled loop.
! .IP \fBmax\-completely\-peel\-times\fR 4
  .IX Item "max-completely-peel-times"
  The maximum number of iterations of a loop to be suitable for complete peeling.
! .IP \fBmax\-completely\-peel\-loop\-nest\-depth\fR 4
  .IX Item "max-completely-peel-loop-nest-depth"
  The maximum depth of a loop nest suitable for complete peeling.
! .IP \fBmax\-unswitch\-insns\fR 4
  .IX Item "max-unswitch-insns"
  The maximum number of insns of an unswitched loop.
! .IP \fBmax\-unswitch\-depth\fR 4
  .IX Item "max-unswitch-depth"
  The maximum depth of a loop nest to be unswitched.
! .IP \fBlim\-expensive\fR 4
  .IX Item "lim-expensive"
  The minimum cost of an expensive expression in the loop invariant motion.
! .IP \fBmin\-loop\-cond\-split\-prob\fR 4
  .IX Item "min-loop-cond-split-prob"
! When FDO profile information is available, \fBmin\-loop\-cond\-split\-prob\fR
! specifies minimum threshold for probability of semi\-invariant condition
  statement to trigger loop split.
! .IP \fBiv\-consider\-all\-candidates\-bound\fR 4
  .IX Item "iv-consider-all-candidates-bound"
  Bound on number of candidates for induction variables, below which
  all candidates are considered for each use in induction variable
  optimizations.  If there are more candidates than this,
  only the most relevant ones are considered to avoid quadratic time complexity.
! .IP \fBiv\-max\-considered\-uses\fR 4
  .IX Item "iv-max-considered-uses"
  The induction variable optimizations give up on loops that contain more
  induction variable uses.
! .IP \fBiv\-always\-prune\-cand\-set\-bound\fR 4
  .IX Item "iv-always-prune-cand-set-bound"
  If the number of candidates in the set is smaller than this value,
  always try to remove unnecessary ivs from the set
  when adding a new one.
! .IP \fBavg\-loop\-niter\fR 4
  .IX Item "avg-loop-niter"
  Average number of iterations of a loop.
! .IP \fBdse\-max\-object\-size\fR 4
  .IX Item "dse-max-object-size"
  Maximum size (in bytes) of objects tracked bytewise by dead store elimination.
  Larger values may result in larger compilation times.
! .IP \fBdse\-max\-alias\-queries\-per\-store\fR 4
  .IX Item "dse-max-alias-queries-per-store"
  Maximum number of queries into the alias oracle per store.
  Larger values result in larger compilation times and may result in more
  removed dead stores.
! .IP \fBscev\-max\-expr\-size\fR 4
  .IX Item "scev-max-expr-size"
  Bound on size of expressions used in the scalar evolutions analyzer.
  Large expressions slow the analyzer.
! .IP \fBscev\-max\-expr\-complexity\fR 4
  .IX Item "scev-max-expr-complexity"
  Bound on the complexity of the expressions in the scalar evolutions analyzer.
  Complex expressions slow the analyzer.
! .IP \fBmax\-tree\-if\-conversion\-phi\-args\fR 4
  .IX Item "max-tree-if-conversion-phi-args"
! Maximum number of arguments in a PHI supported by TREE if conversion
  unless the loop is marked with simd pragma.
! .IP \fBvect\-max\-layout\-candidates\fR 4
  .IX Item "vect-max-layout-candidates"
  The maximum number of possible vector layouts (such as permutations)
! to consider when optimizing to\-be\-vectorized code.
! .IP \fBvect\-max\-version\-for\-alignment\-checks\fR 4
  .IX Item "vect-max-version-for-alignment-checks"
! The maximum number of run\-time checks that can be performed when
  doing loop versioning for alignment in the vectorizer.
! .IP \fBvect\-max\-version\-for\-alias\-checks\fR 4
  .IX Item "vect-max-version-for-alias-checks"
! The maximum number of run\-time checks that can be performed when
  doing loop versioning for alias in the vectorizer.
! .IP \fBvect\-max\-peeling\-for\-alignment\fR 4
  .IX Item "vect-max-peeling-for-alignment"
  The maximum number of loop peels to enhance access alignment
  for vectorizer. Value \-1 means no limit.
! .IP \fBmax\-iterations\-to\-track\fR 4
  .IX Item "max-iterations-to-track"
! The maximum number of iterations of a loop the brute\-force algorithm
  for analysis of the number of iterations of the loop tries to evaluate.
! .IP \fBhot\-bb\-count\-fraction\fR 4
  .IX Item "hot-bb-count-fraction"
  The denominator n of fraction 1/n of the maximal execution count of a
  basic block in the entire program that a basic block needs to at least
  have in order to be considered hot.  The default is 10000, which means
  that a basic block is considered hot if its execution count is greater
  than 1/10000 of the maximal execution count.  0 means that it is never
! considered hot.  Used in non\-LTO mode.
! .IP \fBhot\-bb\-count\-ws\-permille\fR 4
  .IX Item "hot-bb-count-ws-permille"
  The number of most executed permilles, ranging from 0 to 1000, of the
  profiled execution of the entire program to which the execution count
*************** of a basic block must be part of in orde
*** 15338,15345 ****
  default is 990, which means that a basic block is considered hot if
  its execution count contributes to the upper 990 permilles, or 99.0%,
  of the profiled execution of the entire program.  0 means that it is
! never considered hot.  Used in \s-1LTO\s0 mode.
! .IP "\fBhot-bb-frequency-fraction\fR" 4
  .IX Item "hot-bb-frequency-fraction"
  The denominator n of fraction 1/n of the execution frequency of the
  entry block of a function that a basic block of this function needs
--- 15271,15278 ----
  default is 990, which means that a basic block is considered hot if
  its execution count contributes to the upper 990 permilles, or 99.0%,
  of the profiled execution of the entire program.  0 means that it is
! never considered hot.  Used in LTO mode.
! .IP \fBhot\-bb\-frequency\-fraction\fR 4
  .IX Item "hot-bb-frequency-fraction"
  The denominator n of fraction 1/n of the execution frequency of the
  entry block of a function that a basic block of this function needs
*************** to at least have in order to be consider
*** 15347,15353 ****
  which means that a basic block is considered hot in a function if it
  is executed more frequently than 1/1000 of the frequency of the entry
  block of the function.  0 means that it is never considered hot.
! .IP "\fBunlikely-bb-count-fraction\fR" 4
  .IX Item "unlikely-bb-count-fraction"
  The denominator n of fraction 1/n of the number of profiled runs of
  the entire program below which the execution count of a basic block
--- 15280,15286 ----
  which means that a basic block is considered hot in a function if it
  is executed more frequently than 1/1000 of the frequency of the entry
  block of the function.  0 means that it is never considered hot.
! .IP \fBunlikely\-bb\-count\-fraction\fR 4
  .IX Item "unlikely-bb-count-fraction"
  The denominator n of fraction 1/n of the number of profiled runs of
  the entire program below which the execution count of a basic block
*************** must be in order for the basic block to
*** 15355,15361 ****
  The default is 20, which means that a basic block is considered unlikely
  executed if it is executed in fewer than 1/20, or 5%, of the runs of
  the program.  0 means that it is always considered unlikely executed.
! .IP "\fBmax-predicted-iterations\fR" 4
  .IX Item "max-predicted-iterations"
  The maximum number of loop iterations we predict statically.  This is useful
  in cases where a function contains a single loop with known bound and
--- 15288,15294 ----
  The default is 20, which means that a basic block is considered unlikely
  executed if it is executed in fewer than 1/20, or 5%, of the runs of
  the program.  0 means that it is always considered unlikely executed.
! .IP \fBmax\-predicted\-iterations\fR 4
  .IX Item "max-predicted-iterations"
  The maximum number of loop iterations we predict statically.  This is useful
  in cases where a function contains a single loop with known bound and
*************** another loop with unknown bound.
*** 15363,15619 ****
  The known number of iterations is predicted correctly, while
  the unknown number of iterations average to roughly 10.  This means that the
  loop without bounds appears artificially cold relative to the other one.
! .IP "\fBbuiltin-expect-probability\fR" 4
  .IX Item "builtin-expect-probability"
  Control the probability of the expression having the specified value. This
  parameter takes a percentage (i.e. 0 ... 100) as input.
! .IP "\fBbuiltin-string-cmp-inline-length\fR" 4
  .IX Item "builtin-string-cmp-inline-length"
  The maximum length of a constant string for a builtin string cmp call
  eligible for inlining.
! .IP "\fBalign-threshold\fR" 4
  .IX Item "align-threshold"
  Select fraction of the maximal frequency of executions of a basic block in
  a function to align the basic block.
! .IP "\fBalign-loop-iterations\fR" 4
  .IX Item "align-loop-iterations"
  A loop expected to iterate at least the selected number of iterations is
  aligned.
! .IP "\fBtracer-dynamic-coverage\fR" 4
  .IX Item "tracer-dynamic-coverage"
  .PD 0
! .IP "\fBtracer-dynamic-coverage-feedback\fR" 4
  .IX Item "tracer-dynamic-coverage-feedback"
  .PD
  This value is used to limit superblock formation once the given percentage of
  executed instructions is covered.  This limits unnecessary code size
  expansion.
  .Sp
! The \fBtracer-dynamic-coverage-feedback\fR parameter
  is used only when profile
  feedback is available.  The real profiles (as opposed to statically estimated
  ones) are much less balanced allowing the threshold to be larger value.
! .IP "\fBtracer-max-code-growth\fR" 4
  .IX Item "tracer-max-code-growth"
  Stop tail duplication once code growth has reached given percentage.  This is
  a rather artificial limit, as most of the duplicates are eliminated later in
  cross jumping, so it may be set to much higher values than is the desired code
  growth.
! .IP "\fBtracer-min-branch-ratio\fR" 4
  .IX Item "tracer-min-branch-ratio"
  Stop reverse growth when the reverse probability of best edge is less than this
  threshold (in percent).
! .IP "\fBtracer-min-branch-probability\fR" 4
  .IX Item "tracer-min-branch-probability"
  .PD 0
! .IP "\fBtracer-min-branch-probability-feedback\fR" 4
  .IX Item "tracer-min-branch-probability-feedback"
  .PD
  Stop forward growth if the best edge has probability lower than this
  threshold.
  .Sp
! Similarly to \fBtracer-dynamic-coverage\fR two parameters are
! provided.  \fBtracer-min-branch-probability-feedback\fR is used for
! compilation with profile feedback and \fBtracer-min-branch-probability\fR
  compilation without.  The value for compilation with profile feedback
  needs to be more conservative (higher) in order to make tracer
  effective.
! .IP "\fBstack-clash-protection-guard-size\fR" 4
  .IX Item "stack-clash-protection-guard-size"
  Specify the size of the operating system provided stack guard as
  2 raised to \fInum\fR bytes.  Higher values may reduce the
  number of explicit probes, but a value larger than the operating system
  provided guard will leave code vulnerable to stack clash style attacks.
! .IP "\fBstack-clash-protection-probe-interval\fR" 4
  .IX Item "stack-clash-protection-probe-interval"
  Stack clash protection involves probing stack space as it is allocated.  This
  param controls the maximum distance between probes into the stack as 2 raised
  to \fInum\fR bytes.  Higher values may reduce the number of explicit probes, but a value
  larger than the operating system provided guard will leave code vulnerable to
  stack clash style attacks.
! .IP "\fBmax-cse-path-length\fR" 4
  .IX Item "max-cse-path-length"
! The maximum number of basic blocks on path that \s-1CSE\s0 considers.
! .IP "\fBmax-cse-insns\fR" 4
  .IX Item "max-cse-insns"
! The maximum number of instructions \s-1CSE\s0 processes before flushing.
! .IP "\fBggc-min-expand\fR" 4
  .IX Item "ggc-min-expand"
! \&\s-1GCC\s0 uses a garbage collector to manage its own memory allocation.  This
  parameter specifies the minimum percentage by which the garbage
! collector's heap should be allowed to expand between collections.
  Tuning this may improve compilation speed; it has no effect on code
  generation.
  .Sp
! The default is 30% + 70% * (\s-1RAM/1GB\s0) with an upper bound of 100% when
! \&\s-1RAM\s0 >= 1GB.  If \f(CW\*(C`getrlimit\*(C'\fR is available, the notion of \*(L"\s-1RAM\*(R"\s0 is
! the smallest of actual \s-1RAM\s0 and \f(CW\*(C`RLIMIT_DATA\*(C'\fR or \f(CW\*(C`RLIMIT_AS\*(C'\fR.  If
! \&\s-1GCC\s0 is not able to calculate \s-1RAM\s0 on a particular platform, the lower
  bound of 30% is used.  Setting this parameter and
! \&\fBggc-min-heapsize\fR to zero causes a full collection to occur at
  every opportunity.  This is extremely slow, but can be useful for
  debugging.
! .IP "\fBggc-min-heapsize\fR" 4
  .IX Item "ggc-min-heapsize"
! Minimum size of the garbage collector's heap before it begins bothering
  to collect garbage.  The first collection occurs after the heap expands
! by \fBggc-min-expand\fR% beyond \fBggc-min-heapsize\fR.  Again,
  tuning this may improve compilation speed, and has no effect on code
  generation.
  .Sp
! The default is the smaller of \s-1RAM/8, RLIMIT_RSS,\s0 or a limit that
! tries to ensure that \s-1RLIMIT_DATA\s0 or \s-1RLIMIT_AS\s0 are not exceeded, but
  with a lower bound of 4096 (four megabytes) and an upper bound of
! 131072 (128 megabytes).  If \s-1GCC\s0 is not able to calculate \s-1RAM\s0 on a
  particular platform, the lower bound is used.  Setting this parameter
  very large effectively disables garbage collection.  Setting this
! parameter and \fBggc-min-expand\fR to zero causes a full collection
  to occur at every opportunity.
! .IP "\fBmax-reload-search-insns\fR" 4
  .IX Item "max-reload-search-insns"
  The maximum number of instruction reload should look backward for equivalent
  register.  Increasing values mean more aggressive optimization, making the
  compilation time increase with probably slightly better performance.
! .IP "\fBmax-cselib-memory-locations\fR" 4
  .IX Item "max-cselib-memory-locations"
  The maximum number of memory locations cselib should take into account.
  Increasing values mean more aggressive optimization, making the compilation time
  increase with probably slightly better performance.
! .IP "\fBmax-sched-ready-insns\fR" 4
  .IX Item "max-sched-ready-insns"
  The maximum number of instructions ready to be issued the scheduler should
  consider at any given time during the first scheduling pass.  Increasing
  values mean more thorough searches, making the compilation time increase
  with probably little benefit.
! .IP "\fBmax-sched-region-blocks\fR" 4
  .IX Item "max-sched-region-blocks"
  The maximum number of blocks in a region to be considered for
  interblock scheduling.
! .IP "\fBmax-pipeline-region-blocks\fR" 4
  .IX Item "max-pipeline-region-blocks"
  The maximum number of blocks in a region to be considered for
  pipelining in the selective scheduler.
! .IP "\fBmax-sched-region-insns\fR" 4
  .IX Item "max-sched-region-insns"
  The maximum number of insns in a region to be considered for
  interblock scheduling.
! .IP "\fBmax-pipeline-region-insns\fR" 4
  .IX Item "max-pipeline-region-insns"
  The maximum number of insns in a region to be considered for
  pipelining in the selective scheduler.
! .IP "\fBmin-spec-prob\fR" 4
  .IX Item "min-spec-prob"
  The minimum probability (in percents) of reaching a source block
  for interblock speculative scheduling.
! .IP "\fBmax-sched-extend-regions-iters\fR" 4
  .IX Item "max-sched-extend-regions-iters"
! The maximum number of iterations through \s-1CFG\s0 to extend regions.
  A value of 0 disables region extensions.
! .IP "\fBmax-sched-insn-conflict-delay\fR" 4
  .IX Item "max-sched-insn-conflict-delay"
  The maximum conflict delay for an insn to be considered for speculative motion.
! .IP "\fBsched-spec-prob-cutoff\fR" 4
  .IX Item "sched-spec-prob-cutoff"
  The minimal probability of speculation success (in percents), so that
  speculative insns are scheduled.
! .IP "\fBsched-state-edge-prob-cutoff\fR" 4
  .IX Item "sched-state-edge-prob-cutoff"
  The minimum probability an edge must have for the scheduler to save its
  state across it.
! .IP "\fBsched-mem-true-dep-cost\fR" 4
  .IX Item "sched-mem-true-dep-cost"
! Minimal distance (in \s-1CPU\s0 cycles) between store and load targeting same
  memory locations.
! .IP "\fBselsched-max-lookahead\fR" 4
  .IX Item "selsched-max-lookahead"
  The maximum size of the lookahead window of selective scheduling.  It is a
  depth of search for available instructions.
! .IP "\fBselsched-max-sched-times\fR" 4
  .IX Item "selsched-max-sched-times"
  The maximum number of times that an instruction is scheduled during
  selective scheduling.  This is the limit on the number of iterations
  through which the instruction may be pipelined.
! .IP "\fBselsched-insns-to-rename\fR" 4
  .IX Item "selsched-insns-to-rename"
  The maximum number of best instructions in the ready list that are considered
  for renaming in the selective scheduler.
! .IP "\fBsms-min-sc\fR" 4
  .IX Item "sms-min-sc"
  The minimum value of stage count that swing modulo scheduler
  generates.
! .IP "\fBmax-last-value-rtl\fR" 4
  .IX Item "max-last-value-rtl"
  The maximum size measured as number of RTLs that can be recorded in an expression
  in combiner for a pseudo register as last known value of that register.
! .IP "\fBmax-combine-insns\fR" 4
  .IX Item "max-combine-insns"
! The maximum number of instructions the \s-1RTL\s0 combiner tries to combine.
! .IP "\fBmax-combine-search-insns\fR" 4
  .IX Item "max-combine-search-insns"
! The maximum number of instructions that the \s-1RTL\s0 combiner searches in order
  to find the next use of a given register definition.  If this limit is reached
  without finding such a use, the combiner will stop trying to optimize the
  definition.
  .Sp
  Currently this limit only applies after certain successful combination
  attempts, but it could be extended to other cases in future.
! .IP "\fBinteger-share-limit\fR" 4
  .IX Item "integer-share-limit"
  Small integer constants can use a shared data structure, reducing the
! compiler's memory usage and increasing its speed.  This sets the maximum
  value of a shared integer constant.
! .IP "\fBssp-buffer-size\fR" 4
  .IX Item "ssp-buffer-size"
  The minimum size of buffers (i.e. arrays) that receive stack smashing
  protection when \fB\-fstack\-protector\fR is used.
! .IP "\fBmin-size-for-stack-sharing\fR" 4
  .IX Item "min-size-for-stack-sharing"
  The minimum size of variables taking part in stack slot sharing when not
  optimizing.
! .IP "\fBmax-jump-thread-duplication-stmts\fR" 4
  .IX Item "max-jump-thread-duplication-stmts"
  Maximum number of statements allowed in a block that needs to be
  duplicated when threading jumps.
! .IP "\fBmax-jump-thread-paths\fR" 4
  .IX Item "max-jump-thread-paths"
  The maximum number of paths to consider when searching for jump threading
  opportunities.  When arriving at a block, incoming edges are only considered
  if the number of paths to be searched so far multiplied by the number of
  incoming edges does not exhaust the specified maximum number of paths to
  consider.
! .IP "\fBmax-fields-for-field-sensitive\fR" 4
  .IX Item "max-fields-for-field-sensitive"
  Maximum number of fields in a structure treated in
  a field sensitive manner during pointer analysis.
! .IP "\fBprefetch-latency\fR" 4
  .IX Item "prefetch-latency"
  Estimate on average number of instructions that are executed before
  prefetch finishes.  The distance prefetched ahead is proportional
  to this constant.  Increasing this number may also lead to less
! streams being prefetched (see \fBsimultaneous-prefetches\fR).
! .IP "\fBsimultaneous-prefetches\fR" 4
  .IX Item "simultaneous-prefetches"
  Maximum number of prefetches that can run at the same time.
! .IP "\fBl1\-cache\-line\-size\fR" 4
  .IX Item "l1-cache-line-size"
  The size of cache line in L1 data cache, in bytes.
! .IP "\fBl1\-cache\-size\fR" 4
  .IX Item "l1-cache-size"
  The size of L1 data cache, in kilobytes.
! .IP "\fBl2\-cache\-size\fR" 4
  .IX Item "l2-cache-size"
  The size of L2 data cache, in kilobytes.
! .IP "\fBprefetch-dynamic-strides\fR" 4
  .IX Item "prefetch-dynamic-strides"
  Whether the loop array prefetch pass should issue software prefetch hints
! for strides that are non-constant.  In some cases this may be
! beneficial, though the fact the stride is non-constant may make it
  hard to predict when there is clear benefit to issuing these hints.
  .Sp
! Set to 1 if the prefetch hints should be issued for non-constant
  strides.  Set to 0 if prefetch hints should be issued only for strides that
! are known to be constant and below \fBprefetch-minimum-stride\fR.
! .IP "\fBprefetch-minimum-stride\fR" 4
  .IX Item "prefetch-minimum-stride"
  Minimum constant stride, in bytes, to start using prefetch hints for.  If
  the stride is less than this threshold, prefetch hints will not be issued.
--- 15296,15552 ----
  The known number of iterations is predicted correctly, while
  the unknown number of iterations average to roughly 10.  This means that the
  loop without bounds appears artificially cold relative to the other one.
! .IP \fBbuiltin\-expect\-probability\fR 4
  .IX Item "builtin-expect-probability"
  Control the probability of the expression having the specified value. This
  parameter takes a percentage (i.e. 0 ... 100) as input.
! .IP \fBbuiltin\-string\-cmp\-inline\-length\fR 4
  .IX Item "builtin-string-cmp-inline-length"
  The maximum length of a constant string for a builtin string cmp call
  eligible for inlining.
! .IP \fBalign\-threshold\fR 4
  .IX Item "align-threshold"
  Select fraction of the maximal frequency of executions of a basic block in
  a function to align the basic block.
! .IP \fBalign\-loop\-iterations\fR 4
  .IX Item "align-loop-iterations"
  A loop expected to iterate at least the selected number of iterations is
  aligned.
! .IP \fBtracer\-dynamic\-coverage\fR 4
  .IX Item "tracer-dynamic-coverage"
  .PD 0
! .IP \fBtracer\-dynamic\-coverage\-feedback\fR 4
  .IX Item "tracer-dynamic-coverage-feedback"
  .PD
  This value is used to limit superblock formation once the given percentage of
  executed instructions is covered.  This limits unnecessary code size
  expansion.
  .Sp
! The \fBtracer\-dynamic\-coverage\-feedback\fR parameter
  is used only when profile
  feedback is available.  The real profiles (as opposed to statically estimated
  ones) are much less balanced allowing the threshold to be larger value.
! .IP \fBtracer\-max\-code\-growth\fR 4
  .IX Item "tracer-max-code-growth"
  Stop tail duplication once code growth has reached given percentage.  This is
  a rather artificial limit, as most of the duplicates are eliminated later in
  cross jumping, so it may be set to much higher values than is the desired code
  growth.
! .IP \fBtracer\-min\-branch\-ratio\fR 4
  .IX Item "tracer-min-branch-ratio"
  Stop reverse growth when the reverse probability of best edge is less than this
  threshold (in percent).
! .IP \fBtracer\-min\-branch\-probability\fR 4
  .IX Item "tracer-min-branch-probability"
  .PD 0
! .IP \fBtracer\-min\-branch\-probability\-feedback\fR 4
  .IX Item "tracer-min-branch-probability-feedback"
  .PD
  Stop forward growth if the best edge has probability lower than this
  threshold.
  .Sp
! Similarly to \fBtracer\-dynamic\-coverage\fR two parameters are
! provided.  \fBtracer\-min\-branch\-probability\-feedback\fR is used for
! compilation with profile feedback and \fBtracer\-min\-branch\-probability\fR
  compilation without.  The value for compilation with profile feedback
  needs to be more conservative (higher) in order to make tracer
  effective.
! .IP \fBstack\-clash\-protection\-guard\-size\fR 4
  .IX Item "stack-clash-protection-guard-size"
  Specify the size of the operating system provided stack guard as
  2 raised to \fInum\fR bytes.  Higher values may reduce the
  number of explicit probes, but a value larger than the operating system
  provided guard will leave code vulnerable to stack clash style attacks.
! .IP \fBstack\-clash\-protection\-probe\-interval\fR 4
  .IX Item "stack-clash-protection-probe-interval"
  Stack clash protection involves probing stack space as it is allocated.  This
  param controls the maximum distance between probes into the stack as 2 raised
  to \fInum\fR bytes.  Higher values may reduce the number of explicit probes, but a value
  larger than the operating system provided guard will leave code vulnerable to
  stack clash style attacks.
! .IP \fBmax\-cse\-path\-length\fR 4
  .IX Item "max-cse-path-length"
! The maximum number of basic blocks on path that CSE considers.
! .IP \fBmax\-cse\-insns\fR 4
  .IX Item "max-cse-insns"
! The maximum number of instructions CSE processes before flushing.
! .IP \fBggc\-min\-expand\fR 4
  .IX Item "ggc-min-expand"
! GCC uses a garbage collector to manage its own memory allocation.  This
  parameter specifies the minimum percentage by which the garbage
! collector\*(Aqs heap should be allowed to expand between collections.
  Tuning this may improve compilation speed; it has no effect on code
  generation.
  .Sp
! The default is 30% + 70% * (RAM/1GB) with an upper bound of 100% when
! RAM >= 1GB.  If \f(CW\*(C`getrlimit\*(C'\fR is available, the notion of "RAM" is
! the smallest of actual RAM and \f(CW\*(C`RLIMIT_DATA\*(C'\fR or \f(CW\*(C`RLIMIT_AS\*(C'\fR.  If
! GCC is not able to calculate RAM on a particular platform, the lower
  bound of 30% is used.  Setting this parameter and
! \&\fBggc\-min\-heapsize\fR to zero causes a full collection to occur at
  every opportunity.  This is extremely slow, but can be useful for
  debugging.
! .IP \fBggc\-min\-heapsize\fR 4
  .IX Item "ggc-min-heapsize"
! Minimum size of the garbage collector\*(Aqs heap before it begins bothering
  to collect garbage.  The first collection occurs after the heap expands
! by \fBggc\-min\-expand\fR% beyond \fBggc\-min\-heapsize\fR.  Again,
  tuning this may improve compilation speed, and has no effect on code
  generation.
  .Sp
! The default is the smaller of RAM/8, RLIMIT_RSS, or a limit that
! tries to ensure that RLIMIT_DATA or RLIMIT_AS are not exceeded, but
  with a lower bound of 4096 (four megabytes) and an upper bound of
! 131072 (128 megabytes).  If GCC is not able to calculate RAM on a
  particular platform, the lower bound is used.  Setting this parameter
  very large effectively disables garbage collection.  Setting this
! parameter and \fBggc\-min\-expand\fR to zero causes a full collection
  to occur at every opportunity.
! .IP \fBmax\-reload\-search\-insns\fR 4
  .IX Item "max-reload-search-insns"
  The maximum number of instruction reload should look backward for equivalent
  register.  Increasing values mean more aggressive optimization, making the
  compilation time increase with probably slightly better performance.
! .IP \fBmax\-cselib\-memory\-locations\fR 4
  .IX Item "max-cselib-memory-locations"
  The maximum number of memory locations cselib should take into account.
  Increasing values mean more aggressive optimization, making the compilation time
  increase with probably slightly better performance.
! .IP \fBmax\-sched\-ready\-insns\fR 4
  .IX Item "max-sched-ready-insns"
  The maximum number of instructions ready to be issued the scheduler should
  consider at any given time during the first scheduling pass.  Increasing
  values mean more thorough searches, making the compilation time increase
  with probably little benefit.
! .IP \fBmax\-sched\-region\-blocks\fR 4
  .IX Item "max-sched-region-blocks"
  The maximum number of blocks in a region to be considered for
  interblock scheduling.
! .IP \fBmax\-pipeline\-region\-blocks\fR 4
  .IX Item "max-pipeline-region-blocks"
  The maximum number of blocks in a region to be considered for
  pipelining in the selective scheduler.
! .IP \fBmax\-sched\-region\-insns\fR 4
  .IX Item "max-sched-region-insns"
  The maximum number of insns in a region to be considered for
  interblock scheduling.
! .IP \fBmax\-pipeline\-region\-insns\fR 4
  .IX Item "max-pipeline-region-insns"
  The maximum number of insns in a region to be considered for
  pipelining in the selective scheduler.
! .IP \fBmin\-spec\-prob\fR 4
  .IX Item "min-spec-prob"
  The minimum probability (in percents) of reaching a source block
  for interblock speculative scheduling.
! .IP \fBmax\-sched\-extend\-regions\-iters\fR 4
  .IX Item "max-sched-extend-regions-iters"
! The maximum number of iterations through CFG to extend regions.
  A value of 0 disables region extensions.
! .IP \fBmax\-sched\-insn\-conflict\-delay\fR 4
  .IX Item "max-sched-insn-conflict-delay"
  The maximum conflict delay for an insn to be considered for speculative motion.
! .IP \fBsched\-spec\-prob\-cutoff\fR 4
  .IX Item "sched-spec-prob-cutoff"
  The minimal probability of speculation success (in percents), so that
  speculative insns are scheduled.
! .IP \fBsched\-state\-edge\-prob\-cutoff\fR 4
  .IX Item "sched-state-edge-prob-cutoff"
  The minimum probability an edge must have for the scheduler to save its
  state across it.
! .IP \fBsched\-mem\-true\-dep\-cost\fR 4
  .IX Item "sched-mem-true-dep-cost"
! Minimal distance (in CPU cycles) between store and load targeting same
  memory locations.
! .IP \fBselsched\-max\-lookahead\fR 4
  .IX Item "selsched-max-lookahead"
  The maximum size of the lookahead window of selective scheduling.  It is a
  depth of search for available instructions.
! .IP \fBselsched\-max\-sched\-times\fR 4
  .IX Item "selsched-max-sched-times"
  The maximum number of times that an instruction is scheduled during
  selective scheduling.  This is the limit on the number of iterations
  through which the instruction may be pipelined.
! .IP \fBselsched\-insns\-to\-rename\fR 4
  .IX Item "selsched-insns-to-rename"
  The maximum number of best instructions in the ready list that are considered
  for renaming in the selective scheduler.
! .IP \fBsms\-min\-sc\fR 4
  .IX Item "sms-min-sc"
  The minimum value of stage count that swing modulo scheduler
  generates.
! .IP \fBmax\-last\-value\-rtl\fR 4
  .IX Item "max-last-value-rtl"
  The maximum size measured as number of RTLs that can be recorded in an expression
  in combiner for a pseudo register as last known value of that register.
! .IP \fBmax\-combine\-insns\fR 4
  .IX Item "max-combine-insns"
! The maximum number of instructions the RTL combiner tries to combine.
! .IP \fBmax\-combine\-search\-insns\fR 4
  .IX Item "max-combine-search-insns"
! The maximum number of instructions that the RTL combiner searches in order
  to find the next use of a given register definition.  If this limit is reached
  without finding such a use, the combiner will stop trying to optimize the
  definition.
  .Sp
  Currently this limit only applies after certain successful combination
  attempts, but it could be extended to other cases in future.
! .IP \fBinteger\-share\-limit\fR 4
  .IX Item "integer-share-limit"
  Small integer constants can use a shared data structure, reducing the
! compiler\*(Aqs memory usage and increasing its speed.  This sets the maximum
  value of a shared integer constant.
! .IP \fBssp\-buffer\-size\fR 4
  .IX Item "ssp-buffer-size"
  The minimum size of buffers (i.e. arrays) that receive stack smashing
  protection when \fB\-fstack\-protector\fR is used.
! .IP \fBmin\-size\-for\-stack\-sharing\fR 4
  .IX Item "min-size-for-stack-sharing"
  The minimum size of variables taking part in stack slot sharing when not
  optimizing.
! .IP \fBmax\-jump\-thread\-duplication\-stmts\fR 4
  .IX Item "max-jump-thread-duplication-stmts"
  Maximum number of statements allowed in a block that needs to be
  duplicated when threading jumps.
! .IP \fBmax\-jump\-thread\-paths\fR 4
  .IX Item "max-jump-thread-paths"
  The maximum number of paths to consider when searching for jump threading
  opportunities.  When arriving at a block, incoming edges are only considered
  if the number of paths to be searched so far multiplied by the number of
  incoming edges does not exhaust the specified maximum number of paths to
  consider.
! .IP \fBmax\-fields\-for\-field\-sensitive\fR 4
  .IX Item "max-fields-for-field-sensitive"
  Maximum number of fields in a structure treated in
  a field sensitive manner during pointer analysis.
! .IP \fBprefetch\-latency\fR 4
  .IX Item "prefetch-latency"
  Estimate on average number of instructions that are executed before
  prefetch finishes.  The distance prefetched ahead is proportional
  to this constant.  Increasing this number may also lead to less
! streams being prefetched (see \fBsimultaneous\-prefetches\fR).
! .IP \fBsimultaneous\-prefetches\fR 4
  .IX Item "simultaneous-prefetches"
  Maximum number of prefetches that can run at the same time.
! .IP \fBl1\-cache\-line\-size\fR 4
  .IX Item "l1-cache-line-size"
  The size of cache line in L1 data cache, in bytes.
! .IP \fBl1\-cache\-size\fR 4
  .IX Item "l1-cache-size"
  The size of L1 data cache, in kilobytes.
! .IP \fBl2\-cache\-size\fR 4
  .IX Item "l2-cache-size"
  The size of L2 data cache, in kilobytes.
! .IP \fBprefetch\-dynamic\-strides\fR 4
  .IX Item "prefetch-dynamic-strides"
  Whether the loop array prefetch pass should issue software prefetch hints
! for strides that are non\-constant.  In some cases this may be
! beneficial, though the fact the stride is non\-constant may make it
  hard to predict when there is clear benefit to issuing these hints.
  .Sp
! Set to 1 if the prefetch hints should be issued for non\-constant
  strides.  Set to 0 if prefetch hints should be issued only for strides that
! are known to be constant and below \fBprefetch\-minimum\-stride\fR.
! .IP \fBprefetch\-minimum\-stride\fR 4
  .IX Item "prefetch-minimum-stride"
  Minimum constant stride, in bytes, to start using prefetch hints for.  If
  the stride is less than this threshold, prefetch hints will not be issued.
*************** the software prefetchers.  If the hardwa
*** 15624,15644 ****
  stride they can handle, it should be used here to improve the use of
  software prefetchers.
  .Sp
! A value of \-1 means we don't have a threshold and therefore
  prefetch hints can be issued for any constant stride.
  .Sp
  This setting is only useful for strides that are known and constant.
! .IP "\fBdestructive-interference-size\fR" 4
  .IX Item "destructive-interference-size"
  .PD 0
! .IP "\fBconstructive-interference-size\fR" 4
  .IX Item "constructive-interference-size"
  .PD
! The values for the \*(C+17 variables
  \&\f(CW\*(C`std::hardware_destructive_interference_size\*(C'\fR and
  \&\f(CW\*(C`std::hardware_constructive_interference_size\*(C'\fR.  The destructive
  interference size is the minimum recommended offset between two
! independent concurrently-accessed objects; the constructive
  interference size is the maximum recommended size of contiguous memory
  accessed together.  Typically both will be the size of an L1 cache
  line for the target, in bytes.  For a generic target covering a range of L1
--- 15557,15577 ----
  stride they can handle, it should be used here to improve the use of
  software prefetchers.
  .Sp
! A value of \-1 means we don\*(Aqt have a threshold and therefore
  prefetch hints can be issued for any constant stride.
  .Sp
  This setting is only useful for strides that are known and constant.
! .IP \fBdestructive\-interference\-size\fR 4
  .IX Item "destructive-interference-size"
  .PD 0
! .IP \fBconstructive\-interference\-size\fR 4
  .IX Item "constructive-interference-size"
  .PD
! The values for the C++17 variables
  \&\f(CW\*(C`std::hardware_destructive_interference_size\*(C'\fR and
  \&\f(CW\*(C`std::hardware_constructive_interference_size\*(C'\fR.  The destructive
  interference size is the minimum recommended offset between two
! independent concurrently\-accessed objects; the constructive
  interference size is the maximum recommended size of contiguous memory
  accessed together.  Typically both will be the size of an L1 cache
  line for the target, in bytes.  For a generic target covering a range of L1
*************** the small end of the range and the destr
*** 15647,15655 ****
  end.
  .Sp
  The destructive interference size is intended to be used for layout,
! and thus has \s-1ABI\s0 impact.  The default value is not expected to be
  stable, and on some targets varies with \fB\-mtune\fR, so use of
! this variable in a context where \s-1ABI\s0 stability is important, such as
  the public interface of a library, is strongly discouraged; if it is
  used in that context, users can stabilize the value using this
  option.
--- 15580,15588 ----
  end.
  .Sp
  The destructive interference size is intended to be used for layout,
! and thus has ABI impact.  The default value is not expected to be
  stable, and on some targets varies with \fB\-mtune\fR, so use of
! this variable in a context where ABI stability is important, such as
  the public interface of a library, is strongly discouraged; if it is
  used in that context, users can stabilize the value using this
  option.
*************** typically only used in a \fBstatic_asser
*** 15659,15694 ****
  fits within a cache line.
  .Sp
  See also \fB\-Winterference\-size\fR.
! .IP "\fBloop-interchange-max-num-stmts\fR" 4
  .IX Item "loop-interchange-max-num-stmts"
  The maximum number of stmts in a loop to be interchanged.
! .IP "\fBloop-interchange-stride-ratio\fR" 4
  .IX Item "loop-interchange-stride-ratio"
  The minimum ratio between stride of two loops for interchange to be profitable.
! .IP "\fBmin-insn-to-prefetch-ratio\fR" 4
  .IX Item "min-insn-to-prefetch-ratio"
  The minimum ratio between the number of instructions and the
  number of prefetches to enable prefetching in a loop.
! .IP "\fBprefetch-min-insn-to-mem-ratio\fR" 4
  .IX Item "prefetch-min-insn-to-mem-ratio"
  The minimum ratio between the number of instructions and the
  number of memory references to enable prefetching in a loop.
! .IP "\fBuse-canonical-types\fR" 4
  .IX Item "use-canonical-types"
! Whether the compiler should use the \*(L"canonical\*(R" type system.
  Should always be 1, which uses a more efficient internal
! mechanism for comparing types in \*(C+ and Objective\-\*(C+.  However, if
  bugs in the canonical type system are causing compilation failures,
  set this value to 0 to disable canonical types.
! .IP "\fBswitch-conversion-max-branch-ratio\fR" 4
  .IX Item "switch-conversion-max-branch-ratio"
  Switch initialization conversion refuses to create arrays that are
! bigger than \fBswitch-conversion-max-branch-ratio\fR times the number of
  branches in the switch.
! .IP "\fBswitch-lower-slow-alg-max-cases\fR" 4
  .IX Item "switch-lower-slow-alg-max-cases"
  Maximum number of cases for slow switch lowering algorithms to be used.
! .IP "\fBmax-partial-antic-length\fR" 4
  .IX Item "max-partial-antic-length"
  Maximum length of the partial antic set computed during the tree
  partial redundancy elimination optimization (\fB\-ftree\-pre\fR) when
--- 15592,15627 ----
  fits within a cache line.
  .Sp
  See also \fB\-Winterference\-size\fR.
! .IP \fBloop\-interchange\-max\-num\-stmts\fR 4
  .IX Item "loop-interchange-max-num-stmts"
  The maximum number of stmts in a loop to be interchanged.
! .IP \fBloop\-interchange\-stride\-ratio\fR 4
  .IX Item "loop-interchange-stride-ratio"
  The minimum ratio between stride of two loops for interchange to be profitable.
! .IP \fBmin\-insn\-to\-prefetch\-ratio\fR 4
  .IX Item "min-insn-to-prefetch-ratio"
  The minimum ratio between the number of instructions and the
  number of prefetches to enable prefetching in a loop.
! .IP \fBprefetch\-min\-insn\-to\-mem\-ratio\fR 4
  .IX Item "prefetch-min-insn-to-mem-ratio"
  The minimum ratio between the number of instructions and the
  number of memory references to enable prefetching in a loop.
! .IP \fBuse\-canonical\-types\fR 4
  .IX Item "use-canonical-types"
! Whether the compiler should use the "canonical" type system.
  Should always be 1, which uses a more efficient internal
! mechanism for comparing types in C++ and Objective\-C++.  However, if
  bugs in the canonical type system are causing compilation failures,
  set this value to 0 to disable canonical types.
! .IP \fBswitch\-conversion\-max\-branch\-ratio\fR 4
  .IX Item "switch-conversion-max-branch-ratio"
  Switch initialization conversion refuses to create arrays that are
! bigger than \fBswitch\-conversion\-max\-branch\-ratio\fR times the number of
  branches in the switch.
! .IP \fBswitch\-lower\-slow\-alg\-max\-cases\fR 4
  .IX Item "switch-lower-slow-alg-max-cases"
  Maximum number of cases for slow switch lowering algorithms to be used.
! .IP \fBmax\-partial\-antic\-length\fR 4
  .IX Item "max-partial-antic-length"
  Maximum length of the partial antic set computed during the tree
  partial redundancy elimination optimization (\fB\-ftree\-pre\fR) when
*************** consuming all of the memory available on
*** 15698,15771 ****
  parameter sets a limit on the length of the sets that are computed,
  which prevents the runaway behavior.  Setting a value of 0 for
  this parameter allows an unlimited set length.
! .IP "\fBrpo-vn-max-loop-depth\fR" 4
  .IX Item "rpo-vn-max-loop-depth"
! Maximum loop depth that is value-numbered optimistically.
  When the limit hits the innermost
! \&\fIrpo-vn-max-loop-depth\fR loops and the outermost loop in the
! loop nest are value-numbered optimistically and the remaining ones not.
! .IP "\fBsccvn-max-alias-queries-per-access\fR" 4
  .IX Item "sccvn-max-alias-queries-per-access"
! Maximum number of alias-oracle queries we perform when looking for
  redundancies for loads and stores.  If this limit is hit the search
  is aborted and the load or store is not considered redundant.  The
  number of queries is algorithmically limited to the number of
  stores on all paths from the load to the function entry.
! .IP "\fBira-max-loops-num\fR" 4
  .IX Item "ira-max-loops-num"
! \&\s-1IRA\s0 uses regional register allocation by default.  If a function
  contains more loops than the number given by this parameter, only at most
! the given number of the most frequently-executed loops form regions
  for regional register allocation.
! .IP "\fBira-max-conflict-table-size\fR" 4
  .IX Item "ira-max-conflict-table-size"
! Although \s-1IRA\s0 uses a sophisticated algorithm to compress the conflict
  table, the table can still require excessive amounts of memory for
  huge functions.  If the conflict table for a function could be more
! than the size in \s-1MB\s0 given by this parameter, the register allocator
! instead uses a faster, simpler, and lower-quality
! algorithm that does not require building a pseudo-register conflict table.
! .IP "\fBira-loop-reserved-regs\fR" 4
  .IX Item "ira-loop-reserved-regs"
! \&\s-1IRA\s0 can be used to evaluate more accurate register pressure in loops
  for decisions to move loop invariants (see \fB\-O3\fR).  The number
  of available registers reserved for some other purposes is given
  by this parameter.  Default of the parameter
  is the best found from numerous experiments.
! .IP "\fBira-consider-dup-in-all-alts\fR" 4
  .IX Item "ira-consider-dup-in-all-alts"
! Make \s-1IRA\s0 to consider matching constraint (duplicated operand number)
  heavily in all available alternatives for preferred register class.
! If it is set as zero, it means \s-1IRA\s0 only respects the matching
! constraint when it's in the only available alternative with an
! appropriate register class.  Otherwise, it means \s-1IRA\s0 will check all
  available alternatives for preferred register class even if it has
  found some choice with an appropriate register class and respect the
  found qualified matching constraint.
! .IP "\fBira-simple-lra-insn-threshold\fR" 4
  .IX Item "ira-simple-lra-insn-threshold"
! Approximate function insn number in 1K units triggering simple local \s-1RA.\s0
! .IP "\fBlra-inheritance-ebb-probability-cutoff\fR" 4
  .IX Item "lra-inheritance-ebb-probability-cutoff"
! \&\s-1LRA\s0 tries to reuse values reloaded in registers in subsequent insns.
! This optimization is called inheritance.  \s-1EBB\s0 is used as a region to
! do this optimization.  The parameter defines a minimal fall-through
! edge probability in percentage used to add \s-1BB\s0 to inheritance \s-1EBB\s0 in
! \&\s-1LRA.\s0  The default value was chosen
! from numerous runs of \s-1SPEC2000\s0 on x86\-64.
! .IP "\fBloop-invariant-max-bbs-in-loop\fR" 4
  .IX Item "loop-invariant-max-bbs-in-loop"
  Loop invariant motion can be very expensive, both in compilation time and
! in amount of needed compile-time memory, with very large loops.  Loops
! with more basic blocks than this parameter won't have loop invariant
  motion optimization performed on them.
! .IP "\fBloop-max-datarefs-for-datadeps\fR" 4
  .IX Item "loop-max-datarefs-for-datadeps"
  Building data dependencies is expensive for very large loops.  This
  parameter limits the number of data references in loops that are
  considered for data dependence analysis.  These large loops are no
  handled by the optimizations using loop data dependencies.
! .IP "\fBmax-vartrack-size\fR" 4
  .IX Item "max-vartrack-size"
  Sets a maximum number of hash table slots to use during variable
  tracking dataflow analysis of any function.  If this limit is exceeded
--- 15631,15704 ----
  parameter sets a limit on the length of the sets that are computed,
  which prevents the runaway behavior.  Setting a value of 0 for
  this parameter allows an unlimited set length.
! .IP \fBrpo\-vn\-max\-loop\-depth\fR 4
  .IX Item "rpo-vn-max-loop-depth"
! Maximum loop depth that is value\-numbered optimistically.
  When the limit hits the innermost
! \&\fIrpo\-vn\-max\-loop\-depth\fR loops and the outermost loop in the
! loop nest are value\-numbered optimistically and the remaining ones not.
! .IP \fBsccvn\-max\-alias\-queries\-per\-access\fR 4
  .IX Item "sccvn-max-alias-queries-per-access"
! Maximum number of alias\-oracle queries we perform when looking for
  redundancies for loads and stores.  If this limit is hit the search
  is aborted and the load or store is not considered redundant.  The
  number of queries is algorithmically limited to the number of
  stores on all paths from the load to the function entry.
! .IP \fBira\-max\-loops\-num\fR 4
  .IX Item "ira-max-loops-num"
! IRA uses regional register allocation by default.  If a function
  contains more loops than the number given by this parameter, only at most
! the given number of the most frequently\-executed loops form regions
  for regional register allocation.
! .IP \fBira\-max\-conflict\-table\-size\fR 4
  .IX Item "ira-max-conflict-table-size"
! Although IRA uses a sophisticated algorithm to compress the conflict
  table, the table can still require excessive amounts of memory for
  huge functions.  If the conflict table for a function could be more
! than the size in MB given by this parameter, the register allocator
! instead uses a faster, simpler, and lower\-quality
! algorithm that does not require building a pseudo\-register conflict table.
! .IP \fBira\-loop\-reserved\-regs\fR 4
  .IX Item "ira-loop-reserved-regs"
! IRA can be used to evaluate more accurate register pressure in loops
  for decisions to move loop invariants (see \fB\-O3\fR).  The number
  of available registers reserved for some other purposes is given
  by this parameter.  Default of the parameter
  is the best found from numerous experiments.
! .IP \fBira\-consider\-dup\-in\-all\-alts\fR 4
  .IX Item "ira-consider-dup-in-all-alts"
! Make IRA to consider matching constraint (duplicated operand number)
  heavily in all available alternatives for preferred register class.
! If it is set as zero, it means IRA only respects the matching
! constraint when it\*(Aqs in the only available alternative with an
! appropriate register class.  Otherwise, it means IRA will check all
  available alternatives for preferred register class even if it has
  found some choice with an appropriate register class and respect the
  found qualified matching constraint.
! .IP \fBira\-simple\-lra\-insn\-threshold\fR 4
  .IX Item "ira-simple-lra-insn-threshold"
! Approximate function insn number in 1K units triggering simple local RA.
! .IP \fBlra\-inheritance\-ebb\-probability\-cutoff\fR 4
  .IX Item "lra-inheritance-ebb-probability-cutoff"
! LRA tries to reuse values reloaded in registers in subsequent insns.
! This optimization is called inheritance.  EBB is used as a region to
! do this optimization.  The parameter defines a minimal fall\-through
! edge probability in percentage used to add BB to inheritance EBB in
! LRA.  The default value was chosen
! from numerous runs of SPEC2000 on x86\-64.
! .IP \fBloop\-invariant\-max\-bbs\-in\-loop\fR 4
  .IX Item "loop-invariant-max-bbs-in-loop"
  Loop invariant motion can be very expensive, both in compilation time and
! in amount of needed compile\-time memory, with very large loops.  Loops
! with more basic blocks than this parameter won\*(Aqt have loop invariant
  motion optimization performed on them.
! .IP \fBloop\-max\-datarefs\-for\-datadeps\fR 4
  .IX Item "loop-max-datarefs-for-datadeps"
  Building data dependencies is expensive for very large loops.  This
  parameter limits the number of data references in loops that are
  considered for data dependence analysis.  These large loops are no
  handled by the optimizations using loop data dependencies.
! .IP \fBmax\-vartrack\-size\fR 4
  .IX Item "max-vartrack-size"
  Sets a maximum number of hash table slots to use during variable
  tracking dataflow analysis of any function.  If this limit is exceeded
*************** function is retried without it, after re
*** 15774,15780 ****
  the function.  If the limit is exceeded even without debug insns, var
  tracking analysis is completely disabled for the function.  Setting
  the parameter to zero makes it unlimited.
! .IP "\fBmax-vartrack-expr-depth\fR" 4
  .IX Item "max-vartrack-expr-depth"
  Sets a maximum number of recursion levels when attempting to map
  variable names or debug temporaries to value expressions.  This trades
--- 15707,15713 ----
  the function.  If the limit is exceeded even without debug insns, var
  tracking analysis is completely disabled for the function.  Setting
  the parameter to zero makes it unlimited.
! .IP \fBmax\-vartrack\-expr\-depth\fR 4
  .IX Item "max-vartrack-expr-depth"
  Sets a maximum number of recursion levels when attempting to map
  variable names or debug temporaries to value expressions.  This trades
*************** low, value expressions that are availabl
*** 15783,16012 ****
  debug information may end up not being used; setting this higher may
  enable the compiler to find more complex debug expressions, but compile
  time and memory use may grow.
! .IP "\fBmax-debug-marker-count\fR" 4
  .IX Item "max-debug-marker-count"
  Sets a threshold on the number of debug markers (e.g. begin stmt
! markers) to avoid complexity explosion at inlining or expanding to \s-1RTL.\s0
  If a function has more such gimple stmts than the set limit, such stmts
! will be dropped from the inlined copy of a function, and from its \s-1RTL\s0
  expansion.
! .IP "\fBmin-nondebug-insn-uid\fR" 4
  .IX Item "min-nondebug-insn-uid"
  Use uids starting at this parameter for nondebug insns.  The range below
  the parameter is reserved exclusively for debug insns created by
  \&\fB\-fvar\-tracking\-assignments\fR, but debug insns may get
! (non-overlapping) uids above it if the reserved range is exhausted.
! .IP "\fBipa-sra-deref-prob-threshold\fR" 4
  .IX Item "ipa-sra-deref-prob-threshold"
! IPA-SRA replaces a pointer which is known not be \s-1NULL\s0 with one or more
  new parameters only when the probability (in percent, relative to
  function entry) of it being dereferenced is higher than this parameter.
! .IP "\fBipa-sra-ptr-growth-factor\fR" 4
  .IX Item "ipa-sra-ptr-growth-factor"
! IPA-SRA replaces a pointer to an aggregate with one or more new
  parameters only when their cumulative size is less or equal to
! \&\fBipa-sra-ptr-growth-factor\fR times the size of the original
  pointer parameter.
! .IP "\fBipa-sra-ptrwrap-growth-factor\fR" 4
  .IX Item "ipa-sra-ptrwrap-growth-factor"
  Additional maximum allowed growth of total size of new parameters
! that ipa-sra replaces a pointer to an aggregate with,
  if it points to a local variable that the caller only writes to and
  passes it as an argument to other functions.
! .IP "\fBipa-sra-max-replacements\fR" 4
  .IX Item "ipa-sra-max-replacements"
! Maximum pieces of an aggregate that IPA-SRA tracks.  As a
  consequence, it is also the maximum number of replacements of a formal
  parameter.
! .IP "\fBsra-max-scalarization-size-Ospeed\fR" 4
  .IX Item "sra-max-scalarization-size-Ospeed"
  .PD 0
! .IP "\fBsra-max-scalarization-size-Osize\fR" 4
  .IX Item "sra-max-scalarization-size-Osize"
  .PD
! The two Scalar Reduction of Aggregates passes (\s-1SRA\s0 and IPA-SRA) aim to
  replace scalar parts of aggregates with uses of independent scalar
  variables.  These parameters control the maximum size, in storage units,
  of aggregate which is considered for replacement when compiling for
  speed
! (\fBsra-max-scalarization-size-Ospeed\fR) or size
! (\fBsra-max-scalarization-size-Osize\fR) respectively.
! .IP "\fBsra-max-propagations\fR" 4
  .IX Item "sra-max-propagations"
  The maximum number of artificial accesses that Scalar Replacement of
! Aggregates (\s-1SRA\s0) will track, per one local variable, in order to
  facilitate copy propagation.
! .IP "\fBtm-max-aggregate-size\fR" 4
  .IX Item "tm-max-aggregate-size"
! When making copies of thread-local variables in a transaction, this
  parameter specifies the size in bytes after which variables are
  saved with the logging functions as opposed to save/restore code
  sequence pairs.  This option only applies when using
  \&\fB\-fgnu\-tm\fR.
! .IP "\fBgraphite-max-nb-scop-params\fR" 4
  .IX Item "graphite-max-nb-scop-params"
  To avoid exponential effects in the Graphite loop transforms, the
  number of parameters in a Static Control Part (SCoP) is bounded.
  A value of zero can be used to lift
  the bound.  A variable whose value is unknown at compilation time and
  defined outside a SCoP is a parameter of the SCoP.
! .IP "\fBhardcfr-max-blocks\fR" 4
  .IX Item "hardcfr-max-blocks"
  Disable \fB\-fharden\-control\-flow\-redundancy\fR for functions with a
  larger number of blocks than the specified value.  Zero removes any
  limit.
! .IP "\fBhardcfr-max-inline-blocks\fR" 4
  .IX Item "hardcfr-max-inline-blocks"
! Force \fB\-fharden\-control\-flow\-redundancy\fR to use out-of-line
  checking for functions with a larger number of basic blocks than the
  specified value.
! .IP "\fBloop-block-tile-size\fR" 4
  .IX Item "loop-block-tile-size"
  Loop blocking or strip mining transforms, enabled with
  \&\fB\-floop\-block\fR or \fB\-floop\-strip\-mine\fR, strip mine each
  loop in the loop nest by a given number of iterations.  The strip
! length can be changed using the \fBloop-block-tile-size\fR
  parameter.
! .IP "\fBipa-jump-function-lookups\fR" 4
  .IX Item "ipa-jump-function-lookups"
  Specifies number of statements visited during jump function offset discovery.
! .IP "\fBipa-cp-value-list-size\fR" 4
  .IX Item "ipa-cp-value-list-size"
! IPA-CP attempts to track all possible values and types passed to a function's
  parameter in order to propagate them and perform devirtualization.
! \&\fBipa-cp-value-list-size\fR is the maximum number of values and types it
  stores per one formal parameter of a function.
! .IP "\fBipa-cp-eval-threshold\fR" 4
  .IX Item "ipa-cp-eval-threshold"
! IPA-CP calculates its own score of cloning profitability heuristics
  and performs those cloning opportunities with scores that exceed
! \&\fBipa-cp-eval-threshold\fR.
! .IP "\fBipa-cp-max-recursive-depth\fR" 4
  .IX Item "ipa-cp-max-recursive-depth"
! Maximum depth of recursive cloning for self-recursive function.
! .IP "\fBipa-cp-min-recursive-probability\fR" 4
  .IX Item "ipa-cp-min-recursive-probability"
  Recursive cloning only when the probability of call being executed exceeds
  the parameter.
! .IP "\fBipa-cp-profile-count-base\fR" 4
  .IX Item "ipa-cp-profile-count-base"
! When using \fB\-fprofile\-use\fR option, IPA-CP will consider the measured
  execution count of a call graph edge at this percentage position in their
  histogram as the basis for its heuristics calculation.
! .IP "\fBipa-cp-recursive-freq-factor\fR" 4
  .IX Item "ipa-cp-recursive-freq-factor"
  The number of times interprocedural copy propagation expects recursive
  functions to call themselves.
! .IP "\fBipa-cp-recursion-penalty\fR" 4
  .IX Item "ipa-cp-recursion-penalty"
  Percentage penalty the recursive functions will receive when they
  are evaluated for cloning.
! .IP "\fBipa-cp-single-call-penalty\fR" 4
  .IX Item "ipa-cp-single-call-penalty"
  Percentage penalty functions containing a single call to another
  function will receive when they are evaluated for cloning.
! .IP "\fBipa-max-agg-items\fR" 4
  .IX Item "ipa-max-agg-items"
! IPA-CP is also capable to propagate a number of scalar values passed
! in an aggregate. \fBipa-max-agg-items\fR controls the maximum
  number of such values per one parameter.
! .IP "\fBipa-cp-loop-hint-bonus\fR" 4
  .IX Item "ipa-cp-loop-hint-bonus"
! When IPA-CP determines that a cloning candidate would make the number
  of iterations of a loop known, it adds a bonus of
! \&\fBipa-cp-loop-hint-bonus\fR to the profitability score of
  the candidate.
! .IP "\fBipa-max-loop-predicates\fR" 4
  .IX Item "ipa-max-loop-predicates"
! The maximum number of different predicates \s-1IPA\s0 will use to describe when
  loops in a function have known properties.
! .IP "\fBipa-max-aa-steps\fR" 4
  .IX Item "ipa-max-aa-steps"
! During its analysis of function bodies, IPA-CP employs alias analysis
  in order to track values pointed to by function parameters.  In order
  not spend too much time analyzing huge functions, it gives up and
  consider all memory clobbered after examining
! \&\fBipa-max-aa-steps\fR statements modifying memory.
! .IP "\fBipa-max-switch-predicate-bounds\fR" 4
  .IX Item "ipa-max-switch-predicate-bounds"
  Maximal number of boundary endpoints of case ranges of switch statement.
! For switch exceeding this limit, IPA-CP will not construct cloning cost
  predicate, which is used to estimate cloning benefit, for default case
  of the switch statement.
! .IP "\fBipa-max-param-expr-ops\fR" 4
  .IX Item "ipa-max-param-expr-ops"
! IPA-CP will analyze conditional statement that references some function
  parameter to estimate benefit for cloning upon certain constant value.
  But if number of operations in a parameter expression exceeds
! \&\fBipa-max-param-expr-ops\fR, the expression is treated as complicated
! one, and is not handled by \s-1IPA\s0 analysis.
! .IP "\fBlto-partitions\fR" 4
  .IX Item "lto-partitions"
! Specify desired number of partitions produced during \s-1WHOPR\s0 compilation.
  The number of partitions should exceed the number of CPUs used for compilation.
! .IP "\fBlto-min-partition\fR" 4
  .IX Item "lto-min-partition"
! Size of minimal partition for \s-1WHOPR\s0 (in estimated instructions).
  This prevents expenses of splitting very small programs into too many
  partitions.
! .IP "\fBlto-max-partition\fR" 4
  .IX Item "lto-max-partition"
! Size of max partition for \s-1WHOPR\s0 (in estimated instructions).
  to provide an upper bound for individual size of partition.
  Meant to be used only with balanced partitioning.
! .IP "\fBlto-partition-locality-frequency-cutoff\fR" 4
  .IX Item "lto-partition-locality-frequency-cutoff"
  The denominator n of fraction 1/n of the execution frequency of callee to be
  cloned for a particular caller. Special value of 0 dictates to always clone
! without a cut-off.
! .IP "\fBlto-partition-locality-size-cutoff\fR" 4
  .IX Item "lto-partition-locality-size-cutoff"
! Size cut-off for callee including inlined calls to be cloned for a particular
  caller.
! .IP "\fBlto-max-locality-partition\fR" 4
  .IX Item "lto-max-locality-partition"
! Maximal size of a locality partition for \s-1LTO\s0 (in estimated instructions).
  Value of 0 results in default value being used.
! .IP "\fBlto-max-streaming-parallelism\fR" 4
  .IX Item "lto-max-streaming-parallelism"
! Maximal number of parallel processes used for \s-1LTO\s0 streaming.
! .IP "\fBcxx-max-namespaces-for-diagnostic-help\fR" 4
  .IX Item "cxx-max-namespaces-for-diagnostic-help"
! The maximum number of namespaces to consult for suggestions when \*(C+
  name lookup fails for an identifier.
! .IP "\fBsink-frequency-threshold\fR" 4
  .IX Item "sink-frequency-threshold"
  The maximum relative execution frequency (in percents) of the target block
! relative to a statement's original block to allow statement sinking of a
  statement.  Larger numbers result in more aggressive statement sinking.
  A small positive adjustment is applied for
  statements with memory operands as those are even more profitable so sink.
! .IP "\fBmax-stores-to-sink\fR" 4
  .IX Item "max-stores-to-sink"
  The maximum number of conditional store pairs that can be sunk.  Set to 0
! if either vectorization (\fB\-ftree\-vectorize\fR) or if-conversion
  (\fB\-ftree\-loop\-if\-convert\fR) is disabled.
! .IP "\fBcase-values-threshold\fR" 4
  .IX Item "case-values-threshold"
  The smallest number of different values for which it is best to use a
! jump-table instead of a tree of conditional branches.  If the value is
  0, use the default for the machine.
! .IP "\fBjump-table-max-growth-ratio-for-size\fR" 4
  .IX Item "jump-table-max-growth-ratio-for-size"
  The maximum code size growth ratio when expanding
  into a jump table (in percent).  The parameter is used when
  optimizing for size.
! .IP "\fBjump-table-max-growth-ratio-for-speed\fR" 4
  .IX Item "jump-table-max-growth-ratio-for-speed"
  The maximum code size growth ratio when expanding
  into a jump table (in percent).  The parameter is used when
  optimizing for speed.
! .IP "\fBtree-reassoc-width\fR" 4
  .IX Item "tree-reassoc-width"
  Set the maximum number of instructions executed in parallel in
  reassociated tree. This parameter overrides target dependent
  heuristics used by default if has non zero value.
! .IP "\fBsched-pressure-algorithm\fR" 4
  .IX Item "sched-pressure-algorithm"
  Choose between the two available implementations of
  \&\fB\-fsched\-pressure\fR.  Algorithm 1 is the original implementation
--- 15716,15945 ----
  debug information may end up not being used; setting this higher may
  enable the compiler to find more complex debug expressions, but compile
  time and memory use may grow.
! .IP \fBmax\-debug\-marker\-count\fR 4
  .IX Item "max-debug-marker-count"
  Sets a threshold on the number of debug markers (e.g. begin stmt
! markers) to avoid complexity explosion at inlining or expanding to RTL.
  If a function has more such gimple stmts than the set limit, such stmts
! will be dropped from the inlined copy of a function, and from its RTL
  expansion.
! .IP \fBmin\-nondebug\-insn\-uid\fR 4
  .IX Item "min-nondebug-insn-uid"
  Use uids starting at this parameter for nondebug insns.  The range below
  the parameter is reserved exclusively for debug insns created by
  \&\fB\-fvar\-tracking\-assignments\fR, but debug insns may get
! (non\-overlapping) uids above it if the reserved range is exhausted.
! .IP \fBipa\-sra\-deref\-prob\-threshold\fR 4
  .IX Item "ipa-sra-deref-prob-threshold"
! IPA\-SRA replaces a pointer which is known not be NULL with one or more
  new parameters only when the probability (in percent, relative to
  function entry) of it being dereferenced is higher than this parameter.
! .IP \fBipa\-sra\-ptr\-growth\-factor\fR 4
  .IX Item "ipa-sra-ptr-growth-factor"
! IPA\-SRA replaces a pointer to an aggregate with one or more new
  parameters only when their cumulative size is less or equal to
! \&\fBipa\-sra\-ptr\-growth\-factor\fR times the size of the original
  pointer parameter.
! .IP \fBipa\-sra\-ptrwrap\-growth\-factor\fR 4
  .IX Item "ipa-sra-ptrwrap-growth-factor"
  Additional maximum allowed growth of total size of new parameters
! that ipa\-sra replaces a pointer to an aggregate with,
  if it points to a local variable that the caller only writes to and
  passes it as an argument to other functions.
! .IP \fBipa\-sra\-max\-replacements\fR 4
  .IX Item "ipa-sra-max-replacements"
! Maximum pieces of an aggregate that IPA\-SRA tracks.  As a
  consequence, it is also the maximum number of replacements of a formal
  parameter.
! .IP \fBsra\-max\-scalarization\-size\-Ospeed\fR 4
  .IX Item "sra-max-scalarization-size-Ospeed"
  .PD 0
! .IP \fBsra\-max\-scalarization\-size\-Osize\fR 4
  .IX Item "sra-max-scalarization-size-Osize"
  .PD
! The two Scalar Reduction of Aggregates passes (SRA and IPA\-SRA) aim to
  replace scalar parts of aggregates with uses of independent scalar
  variables.  These parameters control the maximum size, in storage units,
  of aggregate which is considered for replacement when compiling for
  speed
! (\fBsra\-max\-scalarization\-size\-Ospeed\fR) or size
! (\fBsra\-max\-scalarization\-size\-Osize\fR) respectively.
! .IP \fBsra\-max\-propagations\fR 4
  .IX Item "sra-max-propagations"
  The maximum number of artificial accesses that Scalar Replacement of
! Aggregates (SRA) will track, per one local variable, in order to
  facilitate copy propagation.
! .IP \fBtm\-max\-aggregate\-size\fR 4
  .IX Item "tm-max-aggregate-size"
! When making copies of thread\-local variables in a transaction, this
  parameter specifies the size in bytes after which variables are
  saved with the logging functions as opposed to save/restore code
  sequence pairs.  This option only applies when using
  \&\fB\-fgnu\-tm\fR.
! .IP \fBgraphite\-max\-nb\-scop\-params\fR 4
  .IX Item "graphite-max-nb-scop-params"
  To avoid exponential effects in the Graphite loop transforms, the
  number of parameters in a Static Control Part (SCoP) is bounded.
  A value of zero can be used to lift
  the bound.  A variable whose value is unknown at compilation time and
  defined outside a SCoP is a parameter of the SCoP.
! .IP \fBhardcfr\-max\-blocks\fR 4
  .IX Item "hardcfr-max-blocks"
  Disable \fB\-fharden\-control\-flow\-redundancy\fR for functions with a
  larger number of blocks than the specified value.  Zero removes any
  limit.
! .IP \fBhardcfr\-max\-inline\-blocks\fR 4
  .IX Item "hardcfr-max-inline-blocks"
! Force \fB\-fharden\-control\-flow\-redundancy\fR to use out\-of\-line
  checking for functions with a larger number of basic blocks than the
  specified value.
! .IP \fBloop\-block\-tile\-size\fR 4
  .IX Item "loop-block-tile-size"
  Loop blocking or strip mining transforms, enabled with
  \&\fB\-floop\-block\fR or \fB\-floop\-strip\-mine\fR, strip mine each
  loop in the loop nest by a given number of iterations.  The strip
! length can be changed using the \fBloop\-block\-tile\-size\fR
  parameter.
! .IP \fBipa\-jump\-function\-lookups\fR 4
  .IX Item "ipa-jump-function-lookups"
  Specifies number of statements visited during jump function offset discovery.
! .IP \fBipa\-cp\-value\-list\-size\fR 4
  .IX Item "ipa-cp-value-list-size"
! IPA\-CP attempts to track all possible values and types passed to a function\*(Aqs
  parameter in order to propagate them and perform devirtualization.
! \&\fBipa\-cp\-value\-list\-size\fR is the maximum number of values and types it
  stores per one formal parameter of a function.
! .IP \fBipa\-cp\-eval\-threshold\fR 4
  .IX Item "ipa-cp-eval-threshold"
! IPA\-CP calculates its own score of cloning profitability heuristics
  and performs those cloning opportunities with scores that exceed
! \&\fBipa\-cp\-eval\-threshold\fR.
! .IP \fBipa\-cp\-max\-recursive\-depth\fR 4
  .IX Item "ipa-cp-max-recursive-depth"
! Maximum depth of recursive cloning for self\-recursive function.
! .IP \fBipa\-cp\-min\-recursive\-probability\fR 4
  .IX Item "ipa-cp-min-recursive-probability"
  Recursive cloning only when the probability of call being executed exceeds
  the parameter.
! .IP \fBipa\-cp\-profile\-count\-base\fR 4
  .IX Item "ipa-cp-profile-count-base"
! When using \fB\-fprofile\-use\fR option, IPA\-CP will consider the measured
  execution count of a call graph edge at this percentage position in their
  histogram as the basis for its heuristics calculation.
! .IP \fBipa\-cp\-recursive\-freq\-factor\fR 4
  .IX Item "ipa-cp-recursive-freq-factor"
  The number of times interprocedural copy propagation expects recursive
  functions to call themselves.
! .IP \fBipa\-cp\-recursion\-penalty\fR 4
  .IX Item "ipa-cp-recursion-penalty"
  Percentage penalty the recursive functions will receive when they
  are evaluated for cloning.
! .IP \fBipa\-cp\-single\-call\-penalty\fR 4
  .IX Item "ipa-cp-single-call-penalty"
  Percentage penalty functions containing a single call to another
  function will receive when they are evaluated for cloning.
! .IP \fBipa\-max\-agg\-items\fR 4
  .IX Item "ipa-max-agg-items"
! IPA\-CP is also capable to propagate a number of scalar values passed
! in an aggregate. \fBipa\-max\-agg\-items\fR controls the maximum
  number of such values per one parameter.
! .IP \fBipa\-cp\-loop\-hint\-bonus\fR 4
  .IX Item "ipa-cp-loop-hint-bonus"
! When IPA\-CP determines that a cloning candidate would make the number
  of iterations of a loop known, it adds a bonus of
! \&\fBipa\-cp\-loop\-hint\-bonus\fR to the profitability score of
  the candidate.
! .IP \fBipa\-max\-loop\-predicates\fR 4
  .IX Item "ipa-max-loop-predicates"
! The maximum number of different predicates IPA will use to describe when
  loops in a function have known properties.
! .IP \fBipa\-max\-aa\-steps\fR 4
  .IX Item "ipa-max-aa-steps"
! During its analysis of function bodies, IPA\-CP employs alias analysis
  in order to track values pointed to by function parameters.  In order
  not spend too much time analyzing huge functions, it gives up and
  consider all memory clobbered after examining
! \&\fBipa\-max\-aa\-steps\fR statements modifying memory.
! .IP \fBipa\-max\-switch\-predicate\-bounds\fR 4
  .IX Item "ipa-max-switch-predicate-bounds"
  Maximal number of boundary endpoints of case ranges of switch statement.
! For switch exceeding this limit, IPA\-CP will not construct cloning cost
  predicate, which is used to estimate cloning benefit, for default case
  of the switch statement.
! .IP \fBipa\-max\-param\-expr\-ops\fR 4
  .IX Item "ipa-max-param-expr-ops"
! IPA\-CP will analyze conditional statement that references some function
  parameter to estimate benefit for cloning upon certain constant value.
  But if number of operations in a parameter expression exceeds
! \&\fBipa\-max\-param\-expr\-ops\fR, the expression is treated as complicated
! one, and is not handled by IPA analysis.
! .IP \fBlto\-partitions\fR 4
  .IX Item "lto-partitions"
! Specify desired number of partitions produced during WHOPR compilation.
  The number of partitions should exceed the number of CPUs used for compilation.
! .IP \fBlto\-min\-partition\fR 4
  .IX Item "lto-min-partition"
! Size of minimal partition for WHOPR (in estimated instructions).
  This prevents expenses of splitting very small programs into too many
  partitions.
! .IP \fBlto\-max\-partition\fR 4
  .IX Item "lto-max-partition"
! Size of max partition for WHOPR (in estimated instructions).
  to provide an upper bound for individual size of partition.
  Meant to be used only with balanced partitioning.
! .IP \fBlto\-partition\-locality\-frequency\-cutoff\fR 4
  .IX Item "lto-partition-locality-frequency-cutoff"
  The denominator n of fraction 1/n of the execution frequency of callee to be
  cloned for a particular caller. Special value of 0 dictates to always clone
! without a cut\-off.
! .IP \fBlto\-partition\-locality\-size\-cutoff\fR 4
  .IX Item "lto-partition-locality-size-cutoff"
! Size cut\-off for callee including inlined calls to be cloned for a particular
  caller.
! .IP \fBlto\-max\-locality\-partition\fR 4
  .IX Item "lto-max-locality-partition"
! Maximal size of a locality partition for LTO (in estimated instructions).
  Value of 0 results in default value being used.
! .IP \fBlto\-max\-streaming\-parallelism\fR 4
  .IX Item "lto-max-streaming-parallelism"
! Maximal number of parallel processes used for LTO streaming.
! .IP \fBcxx\-max\-namespaces\-for\-diagnostic\-help\fR 4
  .IX Item "cxx-max-namespaces-for-diagnostic-help"
! The maximum number of namespaces to consult for suggestions when C++
  name lookup fails for an identifier.
! .IP \fBsink\-frequency\-threshold\fR 4
  .IX Item "sink-frequency-threshold"
  The maximum relative execution frequency (in percents) of the target block
! relative to a statement\*(Aqs original block to allow statement sinking of a
  statement.  Larger numbers result in more aggressive statement sinking.
  A small positive adjustment is applied for
  statements with memory operands as those are even more profitable so sink.
! .IP \fBmax\-stores\-to\-sink\fR 4
  .IX Item "max-stores-to-sink"
  The maximum number of conditional store pairs that can be sunk.  Set to 0
! if either vectorization (\fB\-ftree\-vectorize\fR) or if\-conversion
  (\fB\-ftree\-loop\-if\-convert\fR) is disabled.
! .IP \fBcase\-values\-threshold\fR 4
  .IX Item "case-values-threshold"
  The smallest number of different values for which it is best to use a
! jump\-table instead of a tree of conditional branches.  If the value is
  0, use the default for the machine.
! .IP \fBjump\-table\-max\-growth\-ratio\-for\-size\fR 4
  .IX Item "jump-table-max-growth-ratio-for-size"
  The maximum code size growth ratio when expanding
  into a jump table (in percent).  The parameter is used when
  optimizing for size.
! .IP \fBjump\-table\-max\-growth\-ratio\-for\-speed\fR 4
  .IX Item "jump-table-max-growth-ratio-for-speed"
  The maximum code size growth ratio when expanding
  into a jump table (in percent).  The parameter is used when
  optimizing for speed.
! .IP \fBtree\-reassoc\-width\fR 4
  .IX Item "tree-reassoc-width"
  Set the maximum number of instructions executed in parallel in
  reassociated tree. This parameter overrides target dependent
  heuristics used by default if has non zero value.
! .IP \fBsched\-pressure\-algorithm\fR 4
  .IX Item "sched-pressure-algorithm"
  Choose between the two available implementations of
  \&\fB\-fsched\-pressure\fR.  Algorithm 1 is the original implementation
*************** Algorithm 2 was designed to be a comprom
*** 16015,16087 ****
  conservative approach taken by algorithm 1 and the rather aggressive
  approach taken by the default scheduler.  It relies more heavily on
  having a regular register file and accurate register pressure classes.
! See \fIhaifa\-sched.cc\fR in the \s-1GCC\s0 sources for more details.
  .Sp
  The default choice depends on the target.
! .IP "\fBmax-slsr-cand-scan\fR" 4
  .IX Item "max-slsr-cand-scan"
  Set the maximum number of existing candidates that are considered when
! seeking a basis for a new straight-line strength reduction candidate.
! .IP "\fBasan-globals\fR" 4
  .IX Item "asan-globals"
  Enable buffer overflow detection for global objects.  This kind
  of protection is enabled by default if you are using
  \&\fB\-fsanitize=address\fR option.
  To disable global objects protection use \fB\-\-param asan\-globals=0\fR.
! .IP "\fBasan-stack\fR" 4
  .IX Item "asan-stack"
  Enable buffer overflow detection for stack objects.  This kind of
  protection is enabled by default when using \fB\-fsanitize=address\fR.
  To disable stack protection use \fB\-\-param asan\-stack=0\fR option.
! .IP "\fBasan-instrument-reads\fR" 4
  .IX Item "asan-instrument-reads"
  Enable buffer overflow detection for memory reads.  This kind of
  protection is enabled by default when using \fB\-fsanitize=address\fR.
  To disable memory reads protection use
  \&\fB\-\-param asan\-instrument\-reads=0\fR.
! .IP "\fBasan-instrument-writes\fR" 4
  .IX Item "asan-instrument-writes"
  Enable buffer overflow detection for memory writes.  This kind of
  protection is enabled by default when using \fB\-fsanitize=address\fR.
  To disable memory writes protection use
  \&\fB\-\-param asan\-instrument\-writes=0\fR option.
! .IP "\fBasan-memintrin\fR" 4
  .IX Item "asan-memintrin"
! Enable detection for built-in functions.  This kind of protection
  is enabled by default when using \fB\-fsanitize=address\fR.
! To disable built-in functions protection use
  \&\fB\-\-param asan\-memintrin=0\fR.
! .IP "\fBasan-use-after-return\fR" 4
  .IX Item "asan-use-after-return"
! Enable detection of use-after-return.  This kind of protection
  is enabled by default when using the \fB\-fsanitize=address\fR option.
  To disable it use \fB\-\-param asan\-use\-after\-return=0\fR.
  .Sp
  Note: By default the check is disabled at run time.  To enable it,
  add \f(CW\*(C`detect_stack_use_after_return=1\*(C'\fR to the environment variable
! \&\fB\s-1ASAN_OPTIONS\s0\fR.
! .IP "\fBasan-instrumentation-with-call-threshold\fR" 4
  .IX Item "asan-instrumentation-with-call-threshold"
  If number of memory accesses in function being instrumented
  is greater or equal to this number, use callbacks instead of inline checks.
  E.g. to disable inline code use
  \&\fB\-\-param asan\-instrumentation\-with\-call\-threshold=0\fR.
! .IP "\fBasan-kernel-mem-intrinsic-prefix\fR" 4
  .IX Item "asan-kernel-mem-intrinsic-prefix"
  If nonzero, prefix calls to \f(CW\*(C`memcpy\*(C'\fR, \f(CW\*(C`memset\*(C'\fR and \f(CW\*(C`memmove\*(C'\fR
  with \fB_\|_asan_\fR or \fB_\|_hwasan_\fR
  for \fB\-fsanitize=kernel\-address\fR or \fB\-fsanitize=kernel\-hwaddress\fR,
  respectively.
! .IP "\fBhwasan-instrument-stack\fR" 4
  .IX Item "hwasan-instrument-stack"
! Enable hwasan instrumentation of statically sized stack-allocated variables.
  This kind of instrumentation is enabled by default when using
  \&\fB\-fsanitize=hwaddress\fR and disabled by default when using
  \&\fB\-fsanitize=kernel\-hwaddress\fR.
  To disable stack instrumentation use
  \&\fB\-\-param hwasan\-instrument\-stack=0\fR, and to enable it use
  \&\fB\-\-param hwasan\-instrument\-stack=1\fR.
! .IP "\fBhwasan-random-frame-tag\fR" 4
  .IX Item "hwasan-random-frame-tag"
  When using stack instrumentation, decide tags for stack variables using a
  deterministic sequence beginning at a random tag for each frame.  With this
--- 15948,16020 ----
  conservative approach taken by algorithm 1 and the rather aggressive
  approach taken by the default scheduler.  It relies more heavily on
  having a regular register file and accurate register pressure classes.
! See \fIhaifa\-sched.cc\fR in the GCC sources for more details.
  .Sp
  The default choice depends on the target.
! .IP \fBmax\-slsr\-cand\-scan\fR 4
  .IX Item "max-slsr-cand-scan"
  Set the maximum number of existing candidates that are considered when
! seeking a basis for a new straight\-line strength reduction candidate.
! .IP \fBasan\-globals\fR 4
  .IX Item "asan-globals"
  Enable buffer overflow detection for global objects.  This kind
  of protection is enabled by default if you are using
  \&\fB\-fsanitize=address\fR option.
  To disable global objects protection use \fB\-\-param asan\-globals=0\fR.
! .IP \fBasan\-stack\fR 4
  .IX Item "asan-stack"
  Enable buffer overflow detection for stack objects.  This kind of
  protection is enabled by default when using \fB\-fsanitize=address\fR.
  To disable stack protection use \fB\-\-param asan\-stack=0\fR option.
! .IP \fBasan\-instrument\-reads\fR 4
  .IX Item "asan-instrument-reads"
  Enable buffer overflow detection for memory reads.  This kind of
  protection is enabled by default when using \fB\-fsanitize=address\fR.
  To disable memory reads protection use
  \&\fB\-\-param asan\-instrument\-reads=0\fR.
! .IP \fBasan\-instrument\-writes\fR 4
  .IX Item "asan-instrument-writes"
  Enable buffer overflow detection for memory writes.  This kind of
  protection is enabled by default when using \fB\-fsanitize=address\fR.
  To disable memory writes protection use
  \&\fB\-\-param asan\-instrument\-writes=0\fR option.
! .IP \fBasan\-memintrin\fR 4
  .IX Item "asan-memintrin"
! Enable detection for built\-in functions.  This kind of protection
  is enabled by default when using \fB\-fsanitize=address\fR.
! To disable built\-in functions protection use
  \&\fB\-\-param asan\-memintrin=0\fR.
! .IP \fBasan\-use\-after\-return\fR 4
  .IX Item "asan-use-after-return"
! Enable detection of use\-after\-return.  This kind of protection
  is enabled by default when using the \fB\-fsanitize=address\fR option.
  To disable it use \fB\-\-param asan\-use\-after\-return=0\fR.
  .Sp
  Note: By default the check is disabled at run time.  To enable it,
  add \f(CW\*(C`detect_stack_use_after_return=1\*(C'\fR to the environment variable
! \&\fBASAN_OPTIONS\fR.
! .IP \fBasan\-instrumentation\-with\-call\-threshold\fR 4
  .IX Item "asan-instrumentation-with-call-threshold"
  If number of memory accesses in function being instrumented
  is greater or equal to this number, use callbacks instead of inline checks.
  E.g. to disable inline code use
  \&\fB\-\-param asan\-instrumentation\-with\-call\-threshold=0\fR.
! .IP \fBasan\-kernel\-mem\-intrinsic\-prefix\fR 4
  .IX Item "asan-kernel-mem-intrinsic-prefix"
  If nonzero, prefix calls to \f(CW\*(C`memcpy\*(C'\fR, \f(CW\*(C`memset\*(C'\fR and \f(CW\*(C`memmove\*(C'\fR
  with \fB_\|_asan_\fR or \fB_\|_hwasan_\fR
  for \fB\-fsanitize=kernel\-address\fR or \fB\-fsanitize=kernel\-hwaddress\fR,
  respectively.
! .IP \fBhwasan\-instrument\-stack\fR 4
  .IX Item "hwasan-instrument-stack"
! Enable hwasan instrumentation of statically sized stack\-allocated variables.
  This kind of instrumentation is enabled by default when using
  \&\fB\-fsanitize=hwaddress\fR and disabled by default when using
  \&\fB\-fsanitize=kernel\-hwaddress\fR.
  To disable stack instrumentation use
  \&\fB\-\-param hwasan\-instrument\-stack=0\fR, and to enable it use
  \&\fB\-\-param hwasan\-instrument\-stack=1\fR.
! .IP \fBhwasan\-random\-frame\-tag\fR 4
  .IX Item "hwasan-random-frame-tag"
  When using stack instrumentation, decide tags for stack variables using a
  deterministic sequence beginning at a random tag for each frame.  With this
*************** parameter unset tags are chosen using th
*** 16089,16209 ****
  This is enabled by default for \fB\-fsanitize=hwaddress\fR and unavailable
  for \fB\-fsanitize=kernel\-hwaddress\fR.
  To disable it use \fB\-\-param hwasan\-random\-frame\-tag=0\fR.
! .IP "\fBhwasan-instrument-allocas\fR" 4
  .IX Item "hwasan-instrument-allocas"
! Enable hwasan instrumentation of dynamically sized stack-allocated variables.
  This kind of instrumentation is enabled by default when using
  \&\fB\-fsanitize=hwaddress\fR and disabled by default when using
  \&\fB\-fsanitize=kernel\-hwaddress\fR.
  To disable instrumentation of such variables use
  \&\fB\-\-param hwasan\-instrument\-allocas=0\fR, and to enable it use
  \&\fB\-\-param hwasan\-instrument\-allocas=1\fR.
! .IP "\fBhwasan-instrument-reads\fR" 4
  .IX Item "hwasan-instrument-reads"
  Enable hwasan checks on memory reads.  Instrumentation of reads is enabled by
  default for both \fB\-fsanitize=hwaddress\fR and
  \&\fB\-fsanitize=kernel\-hwaddress\fR.
  To disable checking memory reads use
  \&\fB\-\-param hwasan\-instrument\-reads=0\fR.
! .IP "\fBhwasan-instrument-writes\fR" 4
  .IX Item "hwasan-instrument-writes"
  Enable hwasan checks on memory writes.  Instrumentation of writes is enabled by
  default for both \fB\-fsanitize=hwaddress\fR and
  \&\fB\-fsanitize=kernel\-hwaddress\fR.
  To disable checking memory writes use
  \&\fB\-\-param hwasan\-instrument\-writes=0\fR.
! .IP "\fBhwasan-instrument-mem-intrinsics\fR" 4
  .IX Item "hwasan-instrument-mem-intrinsics"
  Enable hwasan instrumentation of builtin functions.  Instrumentation of these
  builtin functions is enabled by default for both \fB\-fsanitize=hwaddress\fR
  and \fB\-fsanitize=kernel\-hwaddress\fR.
  To disable instrumentation of builtin functions use
  \&\fB\-\-param hwasan\-instrument\-mem\-intrinsics=0\fR.
! .IP "\fBuse-after-scope-direct-emission-threshold\fR" 4
  .IX Item "use-after-scope-direct-emission-threshold"
  If the size of a local variable in bytes is smaller or equal to this
  number, directly poison (or unpoison) shadow memory instead of using
! run-time callbacks.
! .IP "\fBtsan-distinguish-volatile\fR" 4
  .IX Item "tsan-distinguish-volatile"
  Emit special instrumentation for accesses to volatiles.
! .IP "\fBtsan-instrument-func-entry-exit\fR" 4
  .IX Item "tsan-instrument-func-entry-exit"
! Emit instrumentation calls to _\|\fI_tsan_func_entry()\fR and _\|\fI_tsan_func_exit()\fR.
! .IP "\fBmax-fsm-thread-path-insns\fR" 4
  .IX Item "max-fsm-thread-path-insns"
  Maximum number of instructions to copy when duplicating blocks on a
  finite state automaton jump thread path.
! .IP "\fBthreader-debug\fR" 4
  .IX Item "threader-debug"
  threader\-debug=[none|all] Enables verbose dumping of the threader solver.
! .IP "\fBparloops-chunk-size\fR" 4
  .IX Item "parloops-chunk-size"
  Chunk size of omp schedule for loops parallelized by parloops.
! .IP "\fBparloops-schedule\fR" 4
  .IX Item "parloops-schedule"
  Schedule type of omp schedule for loops parallelized by parloops (static,
  dynamic, guided, auto, runtime).
! .IP "\fBparloops-min-per-thread\fR" 4
  .IX Item "parloops-min-per-thread"
  The minimum number of iterations per thread of an innermost parallelized
  loop for which the parallelized variant is preferred over the single threaded
  one.  Note that for a parallelized loop nest the
  minimum number of iterations of the outermost loop per thread is two.
! .IP "\fBmax-ssa-name-query-depth\fR" 4
  .IX Item "max-ssa-name-query-depth"
! Maximum depth of recursion when querying properties of \s-1SSA\s0 names in things
  like fold routines.  One level of recursion corresponds to following a
! use-def chain.
! .IP "\fBmax-speculative-devirt-maydefs\fR" 4
  .IX Item "max-speculative-devirt-maydefs"
! The maximum number of may-defs we analyze when looking for a must-def
  specifying the dynamic type of an object that invokes a virtual call
  we may be able to devirtualize speculatively.
! .IP "\fBranger-debug\fR" 4
  .IX Item "ranger-debug"
  Specifies the type of debug output to be issued for ranges.
! .IP "\fBunroll-jam-min-percent\fR" 4
  .IX Item "unroll-jam-min-percent"
  The minimum percentage of memory references that must be optimized
! away for the unroll-and-jam transformation to be considered profitable.
! .IP "\fBunroll-jam-max-unroll\fR" 4
  .IX Item "unroll-jam-max-unroll"
  The maximum number of times the outer loop should be unrolled by
! the unroll-and-jam transformation.
! .IP "\fBmax-rtl-if-conversion-unpredictable-cost\fR" 4
  .IX Item "max-rtl-if-conversion-unpredictable-cost"
  Maximum permissible cost for the sequence that would be generated
! by the \s-1RTL\s0 if-conversion pass for a branch that is considered unpredictable.
! .IP "\fBmax-variable-expansions-in-unroller\fR" 4
  .IX Item "max-variable-expansions-in-unroller"
  If \fB\-fvariable\-expansion\-in\-unroller\fR is used, the maximum number
  of times that an individual variable will be expanded during loop unrolling.
! .IP "\fBpartial-inlining-entry-probability\fR" 4
  .IX Item "partial-inlining-entry-probability"
! Maximum probability of the entry \s-1BB\s0 of split region
! (in percent relative to entry \s-1BB\s0 of the function)
  to make partial inlining happen.
! .IP "\fBmax-tracked-strlens\fR" 4
  .IX Item "max-tracked-strlens"
  Maximum number of strings for which strlen optimization pass will
  track string lengths.
! .IP "\fBgcse-after-reload-partial-fraction\fR" 4
  .IX Item "gcse-after-reload-partial-fraction"
  The threshold ratio for performing partial redundancy
  elimination after reload.
! .IP "\fBgcse-after-reload-critical-fraction\fR" 4
  .IX Item "gcse-after-reload-critical-fraction"
  The threshold ratio of critical edges execution count that
  permit performing redundancy elimination after reload.
! .IP "\fBmax-loop-header-insns\fR" 4
  .IX Item "max-loop-header-insns"
  The maximum number of insns in loop header duplicated
  by the copy loop headers pass.
! .IP "\fBvect-epilogues-nomask\fR" 4
  .IX Item "vect-epilogues-nomask"
  Enable loop epilogue vectorization using smaller vector size.
! .IP "\fBvect-partial-vector-usage\fR" 4
  .IX Item "vect-partial-vector-usage"
  Controls when the loop vectorizer considers using partial vector loads
  and stores as an alternative to falling back to scalar code.  0 stops
--- 16022,16142 ----
  This is enabled by default for \fB\-fsanitize=hwaddress\fR and unavailable
  for \fB\-fsanitize=kernel\-hwaddress\fR.
  To disable it use \fB\-\-param hwasan\-random\-frame\-tag=0\fR.
! .IP \fBhwasan\-instrument\-allocas\fR 4
  .IX Item "hwasan-instrument-allocas"
! Enable hwasan instrumentation of dynamically sized stack\-allocated variables.
  This kind of instrumentation is enabled by default when using
  \&\fB\-fsanitize=hwaddress\fR and disabled by default when using
  \&\fB\-fsanitize=kernel\-hwaddress\fR.
  To disable instrumentation of such variables use
  \&\fB\-\-param hwasan\-instrument\-allocas=0\fR, and to enable it use
  \&\fB\-\-param hwasan\-instrument\-allocas=1\fR.
! .IP \fBhwasan\-instrument\-reads\fR 4
  .IX Item "hwasan-instrument-reads"
  Enable hwasan checks on memory reads.  Instrumentation of reads is enabled by
  default for both \fB\-fsanitize=hwaddress\fR and
  \&\fB\-fsanitize=kernel\-hwaddress\fR.
  To disable checking memory reads use
  \&\fB\-\-param hwasan\-instrument\-reads=0\fR.
! .IP \fBhwasan\-instrument\-writes\fR 4
  .IX Item "hwasan-instrument-writes"
  Enable hwasan checks on memory writes.  Instrumentation of writes is enabled by
  default for both \fB\-fsanitize=hwaddress\fR and
  \&\fB\-fsanitize=kernel\-hwaddress\fR.
  To disable checking memory writes use
  \&\fB\-\-param hwasan\-instrument\-writes=0\fR.
! .IP \fBhwasan\-instrument\-mem\-intrinsics\fR 4
  .IX Item "hwasan-instrument-mem-intrinsics"
  Enable hwasan instrumentation of builtin functions.  Instrumentation of these
  builtin functions is enabled by default for both \fB\-fsanitize=hwaddress\fR
  and \fB\-fsanitize=kernel\-hwaddress\fR.
  To disable instrumentation of builtin functions use
  \&\fB\-\-param hwasan\-instrument\-mem\-intrinsics=0\fR.
! .IP \fBuse\-after\-scope\-direct\-emission\-threshold\fR 4
  .IX Item "use-after-scope-direct-emission-threshold"
  If the size of a local variable in bytes is smaller or equal to this
  number, directly poison (or unpoison) shadow memory instead of using
! run\-time callbacks.
! .IP \fBtsan\-distinguish\-volatile\fR 4
  .IX Item "tsan-distinguish-volatile"
  Emit special instrumentation for accesses to volatiles.
! .IP \fBtsan\-instrument\-func\-entry\-exit\fR 4
  .IX Item "tsan-instrument-func-entry-exit"
! Emit instrumentation calls to _\|\fB_tsan_func_entry()\fR and _\|\fB_tsan_func_exit()\fR.
! .IP \fBmax\-fsm\-thread\-path\-insns\fR 4
  .IX Item "max-fsm-thread-path-insns"
  Maximum number of instructions to copy when duplicating blocks on a
  finite state automaton jump thread path.
! .IP \fBthreader\-debug\fR 4
  .IX Item "threader-debug"
  threader\-debug=[none|all] Enables verbose dumping of the threader solver.
! .IP \fBparloops\-chunk\-size\fR 4
  .IX Item "parloops-chunk-size"
  Chunk size of omp schedule for loops parallelized by parloops.
! .IP \fBparloops\-schedule\fR 4
  .IX Item "parloops-schedule"
  Schedule type of omp schedule for loops parallelized by parloops (static,
  dynamic, guided, auto, runtime).
! .IP \fBparloops\-min\-per\-thread\fR 4
  .IX Item "parloops-min-per-thread"
  The minimum number of iterations per thread of an innermost parallelized
  loop for which the parallelized variant is preferred over the single threaded
  one.  Note that for a parallelized loop nest the
  minimum number of iterations of the outermost loop per thread is two.
! .IP \fBmax\-ssa\-name\-query\-depth\fR 4
  .IX Item "max-ssa-name-query-depth"
! Maximum depth of recursion when querying properties of SSA names in things
  like fold routines.  One level of recursion corresponds to following a
! use\-def chain.
! .IP \fBmax\-speculative\-devirt\-maydefs\fR 4
  .IX Item "max-speculative-devirt-maydefs"
! The maximum number of may\-defs we analyze when looking for a must\-def
  specifying the dynamic type of an object that invokes a virtual call
  we may be able to devirtualize speculatively.
! .IP \fBranger\-debug\fR 4
  .IX Item "ranger-debug"
  Specifies the type of debug output to be issued for ranges.
! .IP \fBunroll\-jam\-min\-percent\fR 4
  .IX Item "unroll-jam-min-percent"
  The minimum percentage of memory references that must be optimized
! away for the unroll\-and\-jam transformation to be considered profitable.
! .IP \fBunroll\-jam\-max\-unroll\fR 4
  .IX Item "unroll-jam-max-unroll"
  The maximum number of times the outer loop should be unrolled by
! the unroll\-and\-jam transformation.
! .IP \fBmax\-rtl\-if\-conversion\-unpredictable\-cost\fR 4
  .IX Item "max-rtl-if-conversion-unpredictable-cost"
  Maximum permissible cost for the sequence that would be generated
! by the RTL if\-conversion pass for a branch that is considered unpredictable.
! .IP \fBmax\-variable\-expansions\-in\-unroller\fR 4
  .IX Item "max-variable-expansions-in-unroller"
  If \fB\-fvariable\-expansion\-in\-unroller\fR is used, the maximum number
  of times that an individual variable will be expanded during loop unrolling.
! .IP \fBpartial\-inlining\-entry\-probability\fR 4
  .IX Item "partial-inlining-entry-probability"
! Maximum probability of the entry BB of split region
! (in percent relative to entry BB of the function)
  to make partial inlining happen.
! .IP \fBmax\-tracked\-strlens\fR 4
  .IX Item "max-tracked-strlens"
  Maximum number of strings for which strlen optimization pass will
  track string lengths.
! .IP \fBgcse\-after\-reload\-partial\-fraction\fR 4
  .IX Item "gcse-after-reload-partial-fraction"
  The threshold ratio for performing partial redundancy
  elimination after reload.
! .IP \fBgcse\-after\-reload\-critical\-fraction\fR 4
  .IX Item "gcse-after-reload-critical-fraction"
  The threshold ratio of critical edges execution count that
  permit performing redundancy elimination after reload.
! .IP \fBmax\-loop\-header\-insns\fR 4
  .IX Item "max-loop-header-insns"
  The maximum number of insns in loop header duplicated
  by the copy loop headers pass.
! .IP \fBvect\-epilogues\-nomask\fR 4
  .IX Item "vect-epilogues-nomask"
  Enable loop epilogue vectorization using smaller vector size.
! .IP \fBvect\-partial\-vector\-usage\fR 4
  .IX Item "vect-partial-vector-usage"
  Controls when the loop vectorizer considers using partial vector loads
  and stores as an alternative to falling back to scalar code.  0 stops
*************** partial vector loads and stores if vecto
*** 16212,16495 ****
  code to iterate.  2 allows partial vector loads and stores in all loops.
  The parameter only has an effect on targets that support partial
  vector loads and stores.
! .IP "\fBvect-inner-loop-cost-factor\fR" 4
  .IX Item "vect-inner-loop-cost-factor"
  The maximum factor which the loop vectorizer applies to the cost of statements
  in an inner loop relative to the loop being vectorized.  The factor applied
  is the maximum of the estimated number of iterations of the inner loop and
  this parameter.  The default value of this parameter is 50.
! .IP "\fBvect-induction-float\fR" 4
  .IX Item "vect-induction-float"
  Enable loop vectorization of floating point inductions.
! .IP "\fBvect-force-slp\fR" 4
  .IX Item "vect-force-slp"
! Force the use of \s-1SLP\s0 when vectorizing, fail if not possible.
! .IP "\fBvrp-block-limit\fR" 4
  .IX Item "vrp-block-limit"
! Maximum number of basic blocks before \s-1VRP\s0 switches to a lower memory algorithm.
! .IP "\fBvrp-sparse-threshold\fR" 4
  .IX Item "vrp-sparse-threshold"
! Maximum number of basic blocks before \s-1VRP\s0 uses a sparse bitmap cache.
! .IP "\fBvrp-switch-limit\fR" 4
  .IX Item "vrp-switch-limit"
! Maximum number of outgoing edges in a switch before \s-1VRP\s0 will not process it.
! .IP "\fBvrp-vector-threshold\fR" 4
  .IX Item "vrp-vector-threshold"
! Maximum number of basic blocks for \s-1VRP\s0 to use a basic cache vector.
! .IP "\fBavoid-fma-max-bits\fR" 4
  .IX Item "avoid-fma-max-bits"
  Maximum number of bits for which we avoid creating FMAs.
! .IP "\fBfully-pipelined-fma\fR" 4
  .IX Item "fully-pipelined-fma"
! Whether the target fully pipelines \s-1FMA\s0 instructions.  If non-zero,
! reassociation considers the benefit of parallelizing \s-1FMA\s0's multiplication
! part and addition part, assuming \s-1FMUL\s0 and \s-1FMA\s0 use the same units that can
! also do \s-1FADD.\s0
! .IP "\fBsms-loop-average-count-threshold\fR" 4
  .IX Item "sms-loop-average-count-threshold"
  A threshold on the average loop count considered by the swing modulo scheduler.
! .IP "\fBsms-dfa-history\fR" 4
  .IX Item "sms-dfa-history"
  The number of cycles the swing modulo scheduler considers when checking
! conflicts using \s-1DFA.\s0
! .IP "\fBgraphite-allow-codegen-errors\fR" 4
  .IX Item "graphite-allow-codegen-errors"
  Whether codegen errors should be ICEs when \fB\-fchecking\fR.
! .IP "\fBsms-max-ii-factor\fR" 4
  .IX Item "sms-max-ii-factor"
  A factor for tuning the upper bound that swing modulo scheduler
  uses for scheduling a loop.
! .IP "\fBlra-max-considered-reload-pseudos\fR" 4
  .IX Item "lra-max-considered-reload-pseudos"
  The max number of reload pseudos which are considered during
! spilling a non-reload pseudo.
! .IP "\fBmax-pow-sqrt-depth\fR" 4
  .IX Item "max-pow-sqrt-depth"
  Maximum depth of sqrt chains to use when synthesizing exponentiation
  by a real constant.
! .IP "\fBmax-dse-active-local-stores\fR" 4
  .IX Item "max-dse-active-local-stores"
! Maximum number of active local stores in \s-1RTL\s0 dead store elimination.
! .IP "\fBasan-instrument-allocas\fR" 4
  .IX Item "asan-instrument-allocas"
  Enable asan allocas/VLAs protection.
! .IP "\fBmax-iterations-computation-cost\fR" 4
  .IX Item "max-iterations-computation-cost"
  Bound on the cost of an expression to compute the number of iterations.
! .IP "\fBmax-isl-operations\fR" 4
  .IX Item "max-isl-operations"
  Maximum number of isl operations, 0 means unlimited.
! .IP "\fBgraphite-max-arrays-per-scop\fR" 4
  .IX Item "graphite-max-arrays-per-scop"
  Maximum number of arrays per scop.
! .IP "\fBmax-vartrack-reverse-op-size\fR" 4
  .IX Item "max-vartrack-reverse-op-size"
  Max. size of loc list for which reverse ops should be added.
! .IP "\fBfsm-scale-path-stmts\fR" 4
  .IX Item "fsm-scale-path-stmts"
  Scale factor to apply to the number of statements in a threading path
  crossing a loop backedge when comparing to
  \&\fB\-\-param=max\-jump\-thread\-duplication\-stmts\fR.
! .IP "\fBuninit-control-dep-attempts\fR" 4
  .IX Item "uninit-control-dep-attempts"
  Maximum number of nested calls to search for control dependencies
  during uninitialized variable analysis.
! .IP "\fBuninit-max-chain-len\fR" 4
  .IX Item "uninit-max-chain-len"
  Maximum number of predicates anded for each predicate ored in the normalized
  predicate chain.
! .IP "\fBuninit-max-num-chains\fR" 4
  .IX Item "uninit-max-num-chains"
  Maximum number of predicates ored in the normalized predicate chain.
! .IP "\fBuninit-max-prune-work\fR" 4
  .IX Item "uninit-max-prune-work"
  Maximum amount of work done to prune paths where the variable is always initialized.
! .IP "\fBsched-autopref-queue-depth\fR" 4
  .IX Item "sched-autopref-queue-depth"
  Hardware autoprefetcher scheduler model control flag.
! Number of lookahead cycles the model looks into; at '
! \&' only enable instruction sorting heuristic.
! .IP "\fBloop-versioning-max-inner-insns\fR" 4
  .IX Item "loop-versioning-max-inner-insns"
  The maximum number of instructions that an inner loop can have
  before the loop versioning pass considers it too big to copy.
! .IP "\fBloop-versioning-max-outer-insns\fR" 4
  .IX Item "loop-versioning-max-outer-insns"
  The maximum number of instructions that an outer loop can have
  before the loop versioning pass considers it too big to copy,
  discounting any instructions in inner loops that directly benefit
  from versioning.
! .IP "\fBssa-name-def-chain-limit\fR" 4
  .IX Item "ssa-name-def-chain-limit"
! The maximum number of \s-1SSA_NAME\s0 assignments to follow in determining
  a property of a variable such as its value.  This limits the number
! of iterations or recursive calls \s-1GCC\s0 performs when optimizing certain
  statements or when determining their validity prior to issuing
  diagnostics.
! .IP "\fBstore-merging-max-size\fR" 4
  .IX Item "store-merging-max-size"
  Maximum size of a single store merging region in bytes.
! .IP "\fBstore-forwarding-max-distance\fR" 4
  .IX Item "store-forwarding-max-distance"
  Maximum number of instruction distance that a small store forwarded to a larger
! load may stall. Value '0' disables the cost checks for the
! avoid-store-forwarding pass.
! .IP "\fBhash-table-verification-limit\fR" 4
  .IX Item "hash-table-verification-limit"
  The number of elements for which hash table verification is done
  for each searched element.
! .IP "\fBmax-find-base-term-values\fR" 4
  .IX Item "max-find-base-term-values"
  Maximum number of VALUEs handled during a single find_base_term call.
! .IP "\fBanalyzer-max-enodes-per-program-point\fR" 4
  .IX Item "analyzer-max-enodes-per-program-point"
  The maximum number of exploded nodes per program point within
  the analyzer, before terminating analysis of that point.
! .IP "\fBanalyzer-max-constraints\fR" 4
  .IX Item "analyzer-max-constraints"
  The maximum number of constraints per state.
! .IP "\fBanalyzer-min-snodes-for-call-summary\fR" 4
  .IX Item "analyzer-min-snodes-for-call-summary"
  The minimum number of supernodes within a function for the
  analyzer to consider summarizing its effects at call sites.
! .IP "\fBanalyzer-max-enodes-for-full-dump\fR" 4
  .IX Item "analyzer-max-enodes-for-full-dump"
  The maximum depth of exploded nodes that should appear in a dot dump
  before switching to a less verbose format.
! .IP "\fBanalyzer-max-recursion-depth\fR" 4
  .IX Item "analyzer-max-recursion-depth"
  The maximum number of times a callsite can appear in a call stack
  within the analyzer, before terminating analysis of a call that would
  recurse deeper.
! .IP "\fBanalyzer-max-svalue-depth\fR" 4
  .IX Item "analyzer-max-svalue-depth"
  The maximum depth of a symbolic value, before approximating
  the value as unknown.
! .IP "\fBanalyzer-max-infeasible-edges\fR" 4
  .IX Item "analyzer-max-infeasible-edges"
  The maximum number of infeasible edges to reject before declaring
  a diagnostic as infeasible.
! .IP "\fBgimple-fe-computed-hot-bb-threshold\fR" 4
  .IX Item "gimple-fe-computed-hot-bb-threshold"
  The number of executions of a basic block which is considered hot.
! The parameter is used only in \s-1GIMPLE FE.\s0
! .IP "\fBanalyzer-bb-explosion-factor\fR" 4
  .IX Item "analyzer-bb-explosion-factor"
! The maximum number of 'after supernode' exploded nodes within the analyzer
  per supernode, before terminating analysis.
! .IP "\fBanalyzer-text-art-string-ellipsis-threshold\fR" 4
  .IX Item "analyzer-text-art-string-ellipsis-threshold"
  The number of bytes at which to ellipsize string literals in analyzer text art diagrams.
! .IP "\fBanalyzer-text-art-ideal-canvas-width\fR" 4
  .IX Item "analyzer-text-art-ideal-canvas-width"
  The ideal width in characters of text art diagrams generated by the analyzer.
! .IP "\fBanalyzer-text-art-string-ellipsis-head-len\fR" 4
  .IX Item "analyzer-text-art-string-ellipsis-head-len"
  The number of literal bytes to show at the head of a string literal in text art when ellipsizing it.
! .IP "\fBanalyzer-text-art-string-ellipsis-tail-len\fR" 4
  .IX Item "analyzer-text-art-string-ellipsis-tail-len"
  The number of literal bytes to show at the tail of a string literal in text art when ellipsizing it.
! .IP "\fBranger-logical-depth\fR" 4
  .IX Item "ranger-logical-depth"
  Maximum depth of logical expression evaluation ranger will look through
  when evaluating outgoing edge ranges.
! .IP "\fBranger-recompute-depth\fR" 4
  .IX Item "ranger-recompute-depth"
  Maximum depth of instruction chains to consider for recomputation
  in the outgoing range calculator.
! .IP "\fBrelation-block-limit\fR" 4
  .IX Item "relation-block-limit"
  Maximum number of relations the oracle will register in a basic block.
! .IP "\fBtransitive-relations-work-bound\fR" 4
  .IX Item "transitive-relations-work-bound"
  Work bound when discovering transitive relations from existing relations.
! .IP "\fBmin-pagesize\fR" 4
  .IX Item "min-pagesize"
  Minimum page size for warning and early break vectorization purposes.
! .IP "\fBopenacc-kernels\fR" 4
  .IX Item "openacc-kernels"
! Specify mode of OpenACC `kernels' constructs handling.
! With \fB\-\-param=openacc\-kernels=decompose\fR, OpenACC `kernels'
  constructs are decomposed into parts, a sequence of compute
  constructs, each then handled individually.
  This is work in progress.
! With \fB\-\-param=openacc\-kernels=parloops\fR, OpenACC `kernels'
  constructs are handled by the \fBparloops\fR pass, en bloc.
  This is the current default.
! .IP "\fBopenacc-privatization\fR" 4
  .IX Item "openacc-privatization"
  Control whether the \fB\-fopt\-info\-omp\-note\fR and applicable
  \&\fB\-fdump\-tree\-*\-details\fR options emit OpenACC privatization diagnostics.
! With \fB\-\-param=openacc\-privatization=quiet\fR, don't diagnose.
  This is the current default.
  With \fB\-\-param=openacc\-privatization=noisy\fR, do diagnose.
! .IP "\fBcycle-accurate-model\fR" 4
  .IX Item "cycle-accurate-model"
! Specifies whether \s-1GCC\s0 should assume that the scheduling description is mostly
! a cycle-accurate model of the target processor the code is intended to
  run on, in the absence of cache misses.  Nonzero means that the selected
! scheduling model is accurate and likely describes an in-order processor,
  and that scheduling should aggressively spill to try and fill any pipeline
  bubbles.  This is the current default.  Zero means the scheduling description
  might not be available/accurate or perhaps not applicable at all, such as for
! modern out-of-order processors.
  .RE
  .RS 4
  .Sp
  The following choices of \fIname\fR are available on AArch64 targets:
! .IP "\fBaarch64\-vect\-compare\-costs\fR" 4
  .IX Item "aarch64-vect-compare-costs"
  When vectorizing, consider using multiple different approaches and use
  the cost model to choose the cheapest one.  This includes:
  .RS 4
! .IP "*" 4
! Trying both \s-1SVE\s0 and Advanced \s-1SIMD,\s0 when \s-1SVE\s0 is available.
! .IP "*" 4
! Trying to use 64\-bit Advanced \s-1SIMD\s0 vectors for the smallest data elements,
  rather than using 128\-bit vectors for everything.
! .IP "*" 4
! Trying to use \*(L"unpacked\*(R" \s-1SVE\s0 vectors for smaller elements.  This includes
  storing smaller elements in larger containers and accessing elements with
  extending loads and truncating stores.
  .RE
  .RS 4
  .RE
! .IP "\fBaarch64\-float\-recp\-precision\fR" 4
  .IX Item "aarch64-float-recp-precision"
  The number of Newton iterations for calculating the reciprocal for float type.
  The precision of division is proportional to this param when division
  approximation is enabled.  The default value is 1.
! .IP "\fBaarch64\-double\-recp\-precision\fR" 4
  .IX Item "aarch64-double-recp-precision"
  The number of Newton iterations for calculating the reciprocal for double type.
  The precision of division is proportional to this param when division
  approximation is enabled.  The default value is 2.
! .IP "\fBaarch64\-autovec\-preference\fR" 4
  .IX Item "aarch64-autovec-preference"
! Force an \s-1ISA\s0 selection strategy for auto-vectorization.
  .RS 4
! .IP "\fBdefault\fR" 4
  .IX Item "default"
  Use the default heuristics.
! .IP "\fBasimd-only\fR" 4
  .IX Item "asimd-only"
! Use only Advanced \s-1SIMD\s0 for auto-vectorization.
! .IP "\fBsve-only\fR" 4
  .IX Item "sve-only"
! Use only \s-1SVE\s0 for auto-vectorization.
! .IP "\fBprefer-asimd\fR" 4
  .IX Item "prefer-asimd"
! Use both Advanced \s-1SIMD\s0 and \s-1SVE.\s0  Prefer Advanced \s-1SIMD\s0 when the costs are
  deemed equal.
! .IP "\fBprefer-sve\fR" 4
  .IX Item "prefer-sve"
! Use both Advanced \s-1SIMD\s0 and \s-1SVE.\s0  Prefer \s-1SVE\s0 when the costs are deemed equal.
  .RE
  .RS 4
  .RE
! .IP "\fBaarch64\-ldp\-policy\fR" 4
  .IX Item "aarch64-ldp-policy"
! Fine-grained policy for load pairs.
  With \fB\-\-param=aarch64\-ldp\-policy=default\fR, use the policy of the
  tuning structure.  This is the current default.
  With \fB\-\-param=aarch64\-ldp\-policy=always\fR, emit ldp regardless
--- 16145,16428 ----
  code to iterate.  2 allows partial vector loads and stores in all loops.
  The parameter only has an effect on targets that support partial
  vector loads and stores.
! .IP \fBvect\-inner\-loop\-cost\-factor\fR 4
  .IX Item "vect-inner-loop-cost-factor"
  The maximum factor which the loop vectorizer applies to the cost of statements
  in an inner loop relative to the loop being vectorized.  The factor applied
  is the maximum of the estimated number of iterations of the inner loop and
  this parameter.  The default value of this parameter is 50.
! .IP \fBvect\-induction\-float\fR 4
  .IX Item "vect-induction-float"
  Enable loop vectorization of floating point inductions.
! .IP \fBvect\-force\-slp\fR 4
  .IX Item "vect-force-slp"
! Force the use of SLP when vectorizing, fail if not possible.
! .IP \fBvrp\-block\-limit\fR 4
  .IX Item "vrp-block-limit"
! Maximum number of basic blocks before VRP switches to a lower memory algorithm.
! .IP \fBvrp\-sparse\-threshold\fR 4
  .IX Item "vrp-sparse-threshold"
! Maximum number of basic blocks before VRP uses a sparse bitmap cache.
! .IP \fBvrp\-switch\-limit\fR 4
  .IX Item "vrp-switch-limit"
! Maximum number of outgoing edges in a switch before VRP will not process it.
! .IP \fBvrp\-vector\-threshold\fR 4
  .IX Item "vrp-vector-threshold"
! Maximum number of basic blocks for VRP to use a basic cache vector.
! .IP \fBavoid\-fma\-max\-bits\fR 4
  .IX Item "avoid-fma-max-bits"
  Maximum number of bits for which we avoid creating FMAs.
! .IP \fBfully\-pipelined\-fma\fR 4
  .IX Item "fully-pipelined-fma"
! Whether the target fully pipelines FMA instructions.  If non\-zero,
! reassociation considers the benefit of parallelizing FMA\*(Aqs multiplication
! part and addition part, assuming FMUL and FMA use the same units that can
! also do FADD.
! .IP \fBsms\-loop\-average\-count\-threshold\fR 4
  .IX Item "sms-loop-average-count-threshold"
  A threshold on the average loop count considered by the swing modulo scheduler.
! .IP \fBsms\-dfa\-history\fR 4
  .IX Item "sms-dfa-history"
  The number of cycles the swing modulo scheduler considers when checking
! conflicts using DFA.
! .IP \fBgraphite\-allow\-codegen\-errors\fR 4
  .IX Item "graphite-allow-codegen-errors"
  Whether codegen errors should be ICEs when \fB\-fchecking\fR.
! .IP \fBsms\-max\-ii\-factor\fR 4
  .IX Item "sms-max-ii-factor"
  A factor for tuning the upper bound that swing modulo scheduler
  uses for scheduling a loop.
! .IP \fBlra\-max\-considered\-reload\-pseudos\fR 4
  .IX Item "lra-max-considered-reload-pseudos"
  The max number of reload pseudos which are considered during
! spilling a non\-reload pseudo.
! .IP \fBmax\-pow\-sqrt\-depth\fR 4
  .IX Item "max-pow-sqrt-depth"
  Maximum depth of sqrt chains to use when synthesizing exponentiation
  by a real constant.
! .IP \fBmax\-dse\-active\-local\-stores\fR 4
  .IX Item "max-dse-active-local-stores"
! Maximum number of active local stores in RTL dead store elimination.
! .IP \fBasan\-instrument\-allocas\fR 4
  .IX Item "asan-instrument-allocas"
  Enable asan allocas/VLAs protection.
! .IP \fBmax\-iterations\-computation\-cost\fR 4
  .IX Item "max-iterations-computation-cost"
  Bound on the cost of an expression to compute the number of iterations.
! .IP \fBmax\-isl\-operations\fR 4
  .IX Item "max-isl-operations"
  Maximum number of isl operations, 0 means unlimited.
! .IP \fBgraphite\-max\-arrays\-per\-scop\fR 4
  .IX Item "graphite-max-arrays-per-scop"
  Maximum number of arrays per scop.
! .IP \fBmax\-vartrack\-reverse\-op\-size\fR 4
  .IX Item "max-vartrack-reverse-op-size"
  Max. size of loc list for which reverse ops should be added.
! .IP \fBfsm\-scale\-path\-stmts\fR 4
  .IX Item "fsm-scale-path-stmts"
  Scale factor to apply to the number of statements in a threading path
  crossing a loop backedge when comparing to
  \&\fB\-\-param=max\-jump\-thread\-duplication\-stmts\fR.
! .IP \fBuninit\-control\-dep\-attempts\fR 4
  .IX Item "uninit-control-dep-attempts"
  Maximum number of nested calls to search for control dependencies
  during uninitialized variable analysis.
! .IP \fBuninit\-max\-chain\-len\fR 4
  .IX Item "uninit-max-chain-len"
  Maximum number of predicates anded for each predicate ored in the normalized
  predicate chain.
! .IP \fBuninit\-max\-num\-chains\fR 4
  .IX Item "uninit-max-num-chains"
  Maximum number of predicates ored in the normalized predicate chain.
! .IP \fBuninit\-max\-prune\-work\fR 4
  .IX Item "uninit-max-prune-work"
  Maximum amount of work done to prune paths where the variable is always initialized.
! .IP \fBsched\-autopref\-queue\-depth\fR 4
  .IX Item "sched-autopref-queue-depth"
  Hardware autoprefetcher scheduler model control flag.
! Number of lookahead cycles the model looks into; at \*(Aq
! \&\*(Aq only enable instruction sorting heuristic.
! .IP \fBloop\-versioning\-max\-inner\-insns\fR 4
  .IX Item "loop-versioning-max-inner-insns"
  The maximum number of instructions that an inner loop can have
  before the loop versioning pass considers it too big to copy.
! .IP \fBloop\-versioning\-max\-outer\-insns\fR 4
  .IX Item "loop-versioning-max-outer-insns"
  The maximum number of instructions that an outer loop can have
  before the loop versioning pass considers it too big to copy,
  discounting any instructions in inner loops that directly benefit
  from versioning.
! .IP \fBssa\-name\-def\-chain\-limit\fR 4
  .IX Item "ssa-name-def-chain-limit"
! The maximum number of SSA_NAME assignments to follow in determining
  a property of a variable such as its value.  This limits the number
! of iterations or recursive calls GCC performs when optimizing certain
  statements or when determining their validity prior to issuing
  diagnostics.
! .IP \fBstore\-merging\-max\-size\fR 4
  .IX Item "store-merging-max-size"
  Maximum size of a single store merging region in bytes.
! .IP \fBstore\-forwarding\-max\-distance\fR 4
  .IX Item "store-forwarding-max-distance"
  Maximum number of instruction distance that a small store forwarded to a larger
! load may stall. Value \*(Aq0\*(Aq disables the cost checks for the
! avoid\-store\-forwarding pass.
! .IP \fBhash\-table\-verification\-limit\fR 4
  .IX Item "hash-table-verification-limit"
  The number of elements for which hash table verification is done
  for each searched element.
! .IP \fBmax\-find\-base\-term\-values\fR 4
  .IX Item "max-find-base-term-values"
  Maximum number of VALUEs handled during a single find_base_term call.
! .IP \fBanalyzer\-max\-enodes\-per\-program\-point\fR 4
  .IX Item "analyzer-max-enodes-per-program-point"
  The maximum number of exploded nodes per program point within
  the analyzer, before terminating analysis of that point.
! .IP \fBanalyzer\-max\-constraints\fR 4
  .IX Item "analyzer-max-constraints"
  The maximum number of constraints per state.
! .IP \fBanalyzer\-min\-snodes\-for\-call\-summary\fR 4
  .IX Item "analyzer-min-snodes-for-call-summary"
  The minimum number of supernodes within a function for the
  analyzer to consider summarizing its effects at call sites.
! .IP \fBanalyzer\-max\-enodes\-for\-full\-dump\fR 4
  .IX Item "analyzer-max-enodes-for-full-dump"
  The maximum depth of exploded nodes that should appear in a dot dump
  before switching to a less verbose format.
! .IP \fBanalyzer\-max\-recursion\-depth\fR 4
  .IX Item "analyzer-max-recursion-depth"
  The maximum number of times a callsite can appear in a call stack
  within the analyzer, before terminating analysis of a call that would
  recurse deeper.
! .IP \fBanalyzer\-max\-svalue\-depth\fR 4
  .IX Item "analyzer-max-svalue-depth"
  The maximum depth of a symbolic value, before approximating
  the value as unknown.
! .IP \fBanalyzer\-max\-infeasible\-edges\fR 4
  .IX Item "analyzer-max-infeasible-edges"
  The maximum number of infeasible edges to reject before declaring
  a diagnostic as infeasible.
! .IP \fBgimple\-fe\-computed\-hot\-bb\-threshold\fR 4
  .IX Item "gimple-fe-computed-hot-bb-threshold"
  The number of executions of a basic block which is considered hot.
! The parameter is used only in GIMPLE FE.
! .IP \fBanalyzer\-bb\-explosion\-factor\fR 4
  .IX Item "analyzer-bb-explosion-factor"
! The maximum number of \*(Aqafter supernode\*(Aq exploded nodes within the analyzer
  per supernode, before terminating analysis.
! .IP \fBanalyzer\-text\-art\-string\-ellipsis\-threshold\fR 4
  .IX Item "analyzer-text-art-string-ellipsis-threshold"
  The number of bytes at which to ellipsize string literals in analyzer text art diagrams.
! .IP \fBanalyzer\-text\-art\-ideal\-canvas\-width\fR 4
  .IX Item "analyzer-text-art-ideal-canvas-width"
  The ideal width in characters of text art diagrams generated by the analyzer.
! .IP \fBanalyzer\-text\-art\-string\-ellipsis\-head\-len\fR 4
  .IX Item "analyzer-text-art-string-ellipsis-head-len"
  The number of literal bytes to show at the head of a string literal in text art when ellipsizing it.
! .IP \fBanalyzer\-text\-art\-string\-ellipsis\-tail\-len\fR 4
  .IX Item "analyzer-text-art-string-ellipsis-tail-len"
  The number of literal bytes to show at the tail of a string literal in text art when ellipsizing it.
! .IP \fBranger\-logical\-depth\fR 4
  .IX Item "ranger-logical-depth"
  Maximum depth of logical expression evaluation ranger will look through
  when evaluating outgoing edge ranges.
! .IP \fBranger\-recompute\-depth\fR 4
  .IX Item "ranger-recompute-depth"
  Maximum depth of instruction chains to consider for recomputation
  in the outgoing range calculator.
! .IP \fBrelation\-block\-limit\fR 4
  .IX Item "relation-block-limit"
  Maximum number of relations the oracle will register in a basic block.
! .IP \fBtransitive\-relations\-work\-bound\fR 4
  .IX Item "transitive-relations-work-bound"
  Work bound when discovering transitive relations from existing relations.
! .IP \fBmin\-pagesize\fR 4
  .IX Item "min-pagesize"
  Minimum page size for warning and early break vectorization purposes.
! .IP \fBopenacc\-kernels\fR 4
  .IX Item "openacc-kernels"
! Specify mode of OpenACC \`kernels\*(Aq constructs handling.
! With \fB\-\-param=openacc\-kernels=decompose\fR, OpenACC \`kernels\*(Aq
  constructs are decomposed into parts, a sequence of compute
  constructs, each then handled individually.
  This is work in progress.
! With \fB\-\-param=openacc\-kernels=parloops\fR, OpenACC \`kernels\*(Aq
  constructs are handled by the \fBparloops\fR pass, en bloc.
  This is the current default.
! .IP \fBopenacc\-privatization\fR 4
  .IX Item "openacc-privatization"
  Control whether the \fB\-fopt\-info\-omp\-note\fR and applicable
  \&\fB\-fdump\-tree\-*\-details\fR options emit OpenACC privatization diagnostics.
! With \fB\-\-param=openacc\-privatization=quiet\fR, don\*(Aqt diagnose.
  This is the current default.
  With \fB\-\-param=openacc\-privatization=noisy\fR, do diagnose.
! .IP \fBcycle\-accurate\-model\fR 4
  .IX Item "cycle-accurate-model"
! Specifies whether GCC should assume that the scheduling description is mostly
! a cycle\-accurate model of the target processor the code is intended to
  run on, in the absence of cache misses.  Nonzero means that the selected
! scheduling model is accurate and likely describes an in\-order processor,
  and that scheduling should aggressively spill to try and fill any pipeline
  bubbles.  This is the current default.  Zero means the scheduling description
  might not be available/accurate or perhaps not applicable at all, such as for
! modern out\-of\-order processors.
  .RE
  .RS 4
  .Sp
  The following choices of \fIname\fR are available on AArch64 targets:
! .IP \fBaarch64\-vect\-compare\-costs\fR 4
  .IX Item "aarch64-vect-compare-costs"
  When vectorizing, consider using multiple different approaches and use
  the cost model to choose the cheapest one.  This includes:
  .RS 4
! .IP * 4
! Trying both SVE and Advanced SIMD, when SVE is available.
! .IP * 4
! Trying to use 64\-bit Advanced SIMD vectors for the smallest data elements,
  rather than using 128\-bit vectors for everything.
! .IP * 4
! Trying to use "unpacked" SVE vectors for smaller elements.  This includes
  storing smaller elements in larger containers and accessing elements with
  extending loads and truncating stores.
  .RE
  .RS 4
  .RE
! .IP \fBaarch64\-float\-recp\-precision\fR 4
  .IX Item "aarch64-float-recp-precision"
  The number of Newton iterations for calculating the reciprocal for float type.
  The precision of division is proportional to this param when division
  approximation is enabled.  The default value is 1.
! .IP \fBaarch64\-double\-recp\-precision\fR 4
  .IX Item "aarch64-double-recp-precision"
  The number of Newton iterations for calculating the reciprocal for double type.
  The precision of division is proportional to this param when division
  approximation is enabled.  The default value is 2.
! .IP \fBaarch64\-autovec\-preference\fR 4
  .IX Item "aarch64-autovec-preference"
! Force an ISA selection strategy for auto\-vectorization.
  .RS 4
! .IP \fBdefault\fR 4
  .IX Item "default"
  Use the default heuristics.
! .IP \fBasimd\-only\fR 4
  .IX Item "asimd-only"
! Use only Advanced SIMD for auto\-vectorization.
! .IP \fBsve\-only\fR 4
  .IX Item "sve-only"
! Use only SVE for auto\-vectorization.
! .IP \fBprefer\-asimd\fR 4
  .IX Item "prefer-asimd"
! Use both Advanced SIMD and SVE.  Prefer Advanced SIMD when the costs are
  deemed equal.
! .IP \fBprefer\-sve\fR 4
  .IX Item "prefer-sve"
! Use both Advanced SIMD and SVE.  Prefer SVE when the costs are deemed equal.
  .RE
  .RS 4
  .RE
! .IP \fBaarch64\-ldp\-policy\fR 4
  .IX Item "aarch64-ldp-policy"
! Fine\-grained policy for load pairs.
  With \fB\-\-param=aarch64\-ldp\-policy=default\fR, use the policy of the
  tuning structure.  This is the current default.
  With \fB\-\-param=aarch64\-ldp\-policy=always\fR, emit ldp regardless
*************** of alignment.
*** 16497,16505 ****
  With \fB\-\-param=aarch64\-ldp\-policy=never\fR, do not emit ldp.
  With \fB\-\-param=aarch64\-ldp\-policy=aligned\fR, emit ldp only if the
  source pointer is aligned to at least double the alignment of the type.
! .IP "\fBaarch64\-stp\-policy\fR" 4
  .IX Item "aarch64-stp-policy"
! Fine-grained policy for store pairs.
  With \fB\-\-param=aarch64\-stp\-policy=default\fR, use the policy of the
  tuning structure.  This is the current default.
  With \fB\-\-param=aarch64\-stp\-policy=always\fR, emit stp regardless
--- 16430,16438 ----
  With \fB\-\-param=aarch64\-ldp\-policy=never\fR, do not emit ldp.
  With \fB\-\-param=aarch64\-ldp\-policy=aligned\fR, emit ldp only if the
  source pointer is aligned to at least double the alignment of the type.
! .IP \fBaarch64\-stp\-policy\fR 4
  .IX Item "aarch64-stp-policy"
! Fine\-grained policy for store pairs.
  With \fB\-\-param=aarch64\-stp\-policy=default\fR, use the policy of the
  tuning structure.  This is the current default.
  With \fB\-\-param=aarch64\-stp\-policy=always\fR, emit stp regardless
*************** of alignment.
*** 16507,16519 ****
  With \fB\-\-param=aarch64\-stp\-policy=never\fR, do not emit stp.
  With \fB\-\-param=aarch64\-stp\-policy=aligned\fR, emit stp only if the
  source pointer is aligned to at least double the alignment of the type.
! .IP "\fBaarch64\-ldp\-alias\-check\-limit\fR" 4
  .IX Item "aarch64-ldp-alias-check-limit"
  Limit on the number of alias checks performed by the AArch64 load/store pair
  fusion pass when attempting to form an ldp/stp.  Higher values make the pass
! more aggressive at re-ordering loads over stores, at the expense of increased
  compile time.
! .IP "\fBaarch64\-ldp\-writeback\fR" 4
  .IX Item "aarch64-ldp-writeback"
  Param to control which writeback opportunities we try to handle in the AArch64
  load/store pair fusion pass.  A value of zero disables writeback handling.  One
--- 16440,16452 ----
  With \fB\-\-param=aarch64\-stp\-policy=never\fR, do not emit stp.
  With \fB\-\-param=aarch64\-stp\-policy=aligned\fR, emit stp only if the
  source pointer is aligned to at least double the alignment of the type.
! .IP \fBaarch64\-ldp\-alias\-check\-limit\fR 4
  .IX Item "aarch64-ldp-alias-check-limit"
  Limit on the number of alias checks performed by the AArch64 load/store pair
  fusion pass when attempting to form an ldp/stp.  Higher values make the pass
! more aggressive at re\-ordering loads over stores, at the expense of increased
  compile time.
! .IP \fBaarch64\-ldp\-writeback\fR 4
  .IX Item "aarch64-ldp-writeback"
  Param to control which writeback opportunities we try to handle in the AArch64
  load/store pair fusion pass.  A value of zero disables writeback handling.  One
*************** means we try to form pairs involving one
*** 16521,16579 ****
  accesses where possible.  A value of two means we also try to opportunistically
  form writeback opportunities by folding in trailing destructive updates of the
  base register used by a pair.
! .IP "\fBaarch64\-loop\-vect\-issue\-rate\-niters\fR" 4
  .IX Item "aarch64-loop-vect-issue-rate-niters"
  The tuning for some AArch64 CPUs tries to take both latencies and issue
  rates into account when deciding whether a loop should be vectorized
! using \s-1SVE,\s0 vectorized using Advanced \s-1SIMD,\s0 or not vectorized at all.
! If this parameter is set to \fIn\fR, \s-1GCC\s0 will not use this heuristic
  for loops that are known to execute in fewer than \fIn\fR Advanced
! \&\s-1SIMD\s0 iterations.
! .IP "\fBaarch64\-vect\-unroll\-limit\fR" 4
  .IX Item "aarch64-vect-unroll-limit"
  The vectorizer will use available tuning information to determine whether it
  would be beneficial to unroll the main vectorized loop and by how much.  This
! parameter set's the upper bound of how much the vectorizer will unroll the main
  loop.  The default value is four.
  .RE
  .RS 4
  .Sp
! The following choices of \fIname\fR are available on \s-1GCN\s0 targets:
! .IP "\fBgcn-preferred-vectorization-factor\fR" 4
  .IX Item "gcn-preferred-vectorization-factor"
  Preferred vectorization factor: \fBdefault\fR, \fB32\fR, \fB64\fR.
  .RE
  .RS 4
  .Sp
  The following choices of \fIname\fR are available on i386 and x86_64 targets:
! .IP "\fBx86\-stlf\-window\-ninsns\fR" 4
  .IX Item "x86-stlf-window-ninsns"
! Instructions number above which \s-1STFL\s0 stall penalty can be compensated.
! .IP "\fBx86\-stv\-max\-visits\fR" 4
  .IX Item "x86-stv-max-visits"
! The maximum number of use and def visits when discovering a \s-1STV\s0 chain before
  the discovery is aborted.
  .RE
  .RS 4
  .RE
  .SS "Program Instrumentation Options"
  .IX Subsection "Program Instrumentation Options"
! \&\s-1GCC\s0 supports a number of command-line options that control adding
! run-time instrumentation to the code it normally generates.
  For example, one purpose of instrumentation is collect profiling
  statistics for use in finding program hot spots, code coverage
! analysis, or profile-guided optimizations.
! Another class of program instrumentation is adding run-time checking
  to detect programming errors like invalid pointer
! dereferences or out-of-bounds array accesses, as well as deliberately
! hostile attacks such as stack smashing or \*(C+ vtable hijacking.
  There is also a general hook which can be used to implement other
! forms of tracing or function-level instrumentation for debug or
  program analysis purposes.
! .IP "\fB\-p\fR" 4
  .IX Item "-p"
  .PD 0
! .IP "\fB\-pg\fR" 4
  .IX Item "-pg"
  .PD
  Generate extra code to write profile information suitable for the
--- 16454,16512 ----
  accesses where possible.  A value of two means we also try to opportunistically
  form writeback opportunities by folding in trailing destructive updates of the
  base register used by a pair.
! .IP \fBaarch64\-loop\-vect\-issue\-rate\-niters\fR 4
  .IX Item "aarch64-loop-vect-issue-rate-niters"
  The tuning for some AArch64 CPUs tries to take both latencies and issue
  rates into account when deciding whether a loop should be vectorized
! using SVE, vectorized using Advanced SIMD, or not vectorized at all.
! If this parameter is set to \fIn\fR, GCC will not use this heuristic
  for loops that are known to execute in fewer than \fIn\fR Advanced
! SIMD iterations.
! .IP \fBaarch64\-vect\-unroll\-limit\fR 4
  .IX Item "aarch64-vect-unroll-limit"
  The vectorizer will use available tuning information to determine whether it
  would be beneficial to unroll the main vectorized loop and by how much.  This
! parameter set\*(Aqs the upper bound of how much the vectorizer will unroll the main
  loop.  The default value is four.
  .RE
  .RS 4
  .Sp
! The following choices of \fIname\fR are available on GCN targets:
! .IP \fBgcn\-preferred\-vectorization\-factor\fR 4
  .IX Item "gcn-preferred-vectorization-factor"
  Preferred vectorization factor: \fBdefault\fR, \fB32\fR, \fB64\fR.
  .RE
  .RS 4
  .Sp
  The following choices of \fIname\fR are available on i386 and x86_64 targets:
! .IP \fBx86\-stlf\-window\-ninsns\fR 4
  .IX Item "x86-stlf-window-ninsns"
! Instructions number above which STFL stall penalty can be compensated.
! .IP \fBx86\-stv\-max\-visits\fR 4
  .IX Item "x86-stv-max-visits"
! The maximum number of use and def visits when discovering a STV chain before
  the discovery is aborted.
  .RE
  .RS 4
  .RE
  .SS "Program Instrumentation Options"
  .IX Subsection "Program Instrumentation Options"
! GCC supports a number of command\-line options that control adding
! run\-time instrumentation to the code it normally generates.
  For example, one purpose of instrumentation is collect profiling
  statistics for use in finding program hot spots, code coverage
! analysis, or profile\-guided optimizations.
! Another class of program instrumentation is adding run\-time checking
  to detect programming errors like invalid pointer
! dereferences or out\-of\-bounds array accesses, as well as deliberately
! hostile attacks such as stack smashing or C++ vtable hijacking.
  There is also a general hook which can be used to implement other
! forms of tracing or function\-level instrumentation for debug or
  program analysis purposes.
! .IP \fB\-p\fR 4
  .IX Item "-p"
  .PD 0
! .IP \fB\-pg\fR 4
  .IX Item "-pg"
  .PD
  Generate extra code to write profile information suitable for the
*************** linking.
*** 16584,16603 ****
  .Sp
  You can use the function attribute \f(CW\*(C`no_instrument_function\*(C'\fR to
  suppress profiling of individual functions when compiling with these options.
! .IP "\fB\-fprofile\-arcs\fR" 4
  .IX Item "-fprofile-arcs"
  Add code so that program flow \fIarcs\fR are instrumented.  During
  execution the program records how many times each branch and call is
  executed and how many times it is taken or returns.  On targets that support
  constructors with priority support, profiling properly handles constructors,
! destructors and \*(C+ constructors (and destructors) of classes which are used
  as a type of a global variable.
  .Sp
  When the compiled
  program exits it saves this data to a file called
! \&\fI\fIauxname\fI.gcda\fR for each source file.  The data may be used for
! profile-directed optimizations (\fB\-fbranch\-probabilities\fR), or for
! test coverage analysis (\fB\-ftest\-coverage\fR).  Each object file's
  \&\fIauxname\fR is generated from the name of the output file, if
  explicitly specified and it is not the final executable, otherwise it is
  the basename of the source file.  In both cases any suffix is removed
--- 16517,16536 ----
  .Sp
  You can use the function attribute \f(CW\*(C`no_instrument_function\*(C'\fR to
  suppress profiling of individual functions when compiling with these options.
! .IP \fB\-fprofile\-arcs\fR 4
  .IX Item "-fprofile-arcs"
  Add code so that program flow \fIarcs\fR are instrumented.  During
  execution the program records how many times each branch and call is
  executed and how many times it is taken or returns.  On targets that support
  constructors with priority support, profiling properly handles constructors,
! destructors and C++ constructors (and destructors) of classes which are used
  as a type of a global variable.
  .Sp
  When the compiled
  program exits it saves this data to a file called
! \&\fIauxname.gcda\fR for each source file.  The data may be used for
! profile\-directed optimizations (\fB\-fbranch\-probabilities\fR), or for
! test coverage analysis (\fB\-ftest\-coverage\fR).  Each object file\*(Aqs
  \&\fIauxname\fR is generated from the name of the output file, if
  explicitly specified and it is not the final executable, otherwise it is
  the basename of the source file.  In both cases any suffix is removed
*************** Note that if a command line directly lin
*** 16608,16681 ****
  \&\fI.gcda\fR files will be prefixed with the unsuffixed name of the output file.
  E.g. \f(CW\*(C`gcc a.c b.c \-o binary\*(C'\fR would generate \fIbinary\-a.gcda\fR and
  \&\fIbinary\-b.gcda\fR files.
! .IP "\fB\-fcondition\-coverage\fR" 4
  .IX Item "-fcondition-coverage"
  Add code so that program conditions are instrumented.  During execution the
  program records what terms in a conditional contributes to a decision, which
  can be used to verify that all terms in a Boolean function are tested and have
  an independent effect on the outcome of a decision.  The result can be read
  with \f(CW\*(C`gcov \-\-conditions\*(C'\fR.
! .IP "\fB\-fpath\-coverage\fR" 4
  .IX Item "-fpath-coverage"
  Add code so that the paths taken are tracked.  During execution the
  program records the prime paths taken.  The number of paths grows very
! fast with complexity, and to avoid exploding compile times \s-1GCC\s0 will give
  up instrumentation if the approximate number of paths exceeds the limit
  controlled by \fB\-fpath\-coverage\-limit\fR.  The result can be read
  with \f(CW\*(C`gcov \-\-prime\-paths \-\-prime\-paths\-lines \-\-prime\-paths\-source\*(C'\fR,
! .IP "\fB\-fpath\-coverage\-limit=\fR\fIlimit\fR" 4
  .IX Item "-fpath-coverage-limit=limit"
  The threshold at which point \fB\-fpath\-coverage\fR gives up on
  instrumenting a function.  This limit is approximate and conservative,
! as \s-1GCC\s0 uses a pessimistic heuristic which slightly overcounts the
  running number of paths, and gives up if the threshold is reached before
  finding all the paths.  This option is not for fine grained control over
  which functions to instrument \- rather it is intended to limit the
  effect of path explosion and keep compile times reasonable.  The default
  is \fI250000\fR.
! .IP "\fB\-\-coverage\fR" 4
  .IX Item "--coverage"
  This option is used to compile and link code instrumented for coverage
  analysis.  The option is a synonym for \fB\-fprofile\-arcs\fR
  \&\fB\-ftest\-coverage\fR (when compiling) and \fB\-lgcov\fR (when
  linking).  See the documentation for those options for more details.
  .RS 4
! .IP "*" 4
  Compile the source files with \fB\-fprofile\-arcs\fR plus optimization
  and code generation options.  For test coverage analysis, use the
  additional \fB\-ftest\-coverage\fR option.  You do not need to profile
  every source file in a program.
! .IP "*" 4
  Compile the source files additionally with \fB\-fprofile\-abs\-path\fR
  to create absolute path names in the \fI.gcno\fR files.  This allows
  \&\fBgcov\fR to find the correct sources in projects where compilations
  occur with different working directories.
! .IP "*" 4
  Link your object files with \fB\-lgcov\fR or \fB\-fprofile\-arcs\fR
  (the latter implies the former).
! .IP "*" 4
  Run the program on a representative workload to generate the arc profile
  information.  This may be repeated any number of times.  You can run
  concurrent instances of your program, and provided that the file system
  supports locking, the data files will be correctly updated.  Unless
! a strict \s-1ISO C\s0 dialect option is in effect, \f(CW\*(C`fork\*(C'\fR calls are
  detected and correctly handled without double counting.
  .Sp
  Moreover, an object file can be recompiled multiple times
  and the corresponding \fI.gcda\fR file merges as long as
  the source file and the compiler options are unchanged.
! .IP "*" 4
! For profile-directed optimizations, compile the source files again with
  the same optimization and code generation options plus
  \&\fB\-fbranch\-probabilities\fR.
! .IP "*" 4
  For test coverage analysis, use \fBgcov\fR to produce human readable
  information from the \fI.gcno\fR and \fI.gcda\fR files.  Refer to the
  \&\fBgcov\fR documentation for further information.
  .RE
  .RS 4
  .Sp
! With \fB\-fprofile\-arcs\fR, for each function of your program \s-1GCC\s0
  creates a program flow graph, then finds a spanning tree for the graph.
  Only arcs that are not on the spanning tree have to be instrumented: the
  compiler adds code to count the number of times that these arcs are
--- 16541,16614 ----
  \&\fI.gcda\fR files will be prefixed with the unsuffixed name of the output file.
  E.g. \f(CW\*(C`gcc a.c b.c \-o binary\*(C'\fR would generate \fIbinary\-a.gcda\fR and
  \&\fIbinary\-b.gcda\fR files.
! .IP \fB\-fcondition\-coverage\fR 4
  .IX Item "-fcondition-coverage"
  Add code so that program conditions are instrumented.  During execution the
  program records what terms in a conditional contributes to a decision, which
  can be used to verify that all terms in a Boolean function are tested and have
  an independent effect on the outcome of a decision.  The result can be read
  with \f(CW\*(C`gcov \-\-conditions\*(C'\fR.
! .IP \fB\-fpath\-coverage\fR 4
  .IX Item "-fpath-coverage"
  Add code so that the paths taken are tracked.  During execution the
  program records the prime paths taken.  The number of paths grows very
! fast with complexity, and to avoid exploding compile times GCC will give
  up instrumentation if the approximate number of paths exceeds the limit
  controlled by \fB\-fpath\-coverage\-limit\fR.  The result can be read
  with \f(CW\*(C`gcov \-\-prime\-paths \-\-prime\-paths\-lines \-\-prime\-paths\-source\*(C'\fR,
! .IP \fB\-fpath\-coverage\-limit=\fR\fIlimit\fR 4
  .IX Item "-fpath-coverage-limit=limit"
  The threshold at which point \fB\-fpath\-coverage\fR gives up on
  instrumenting a function.  This limit is approximate and conservative,
! as GCC uses a pessimistic heuristic which slightly overcounts the
  running number of paths, and gives up if the threshold is reached before
  finding all the paths.  This option is not for fine grained control over
  which functions to instrument \- rather it is intended to limit the
  effect of path explosion and keep compile times reasonable.  The default
  is \fI250000\fR.
! .IP \fB\-\-coverage\fR 4
  .IX Item "--coverage"
  This option is used to compile and link code instrumented for coverage
  analysis.  The option is a synonym for \fB\-fprofile\-arcs\fR
  \&\fB\-ftest\-coverage\fR (when compiling) and \fB\-lgcov\fR (when
  linking).  See the documentation for those options for more details.
  .RS 4
! .IP * 4
  Compile the source files with \fB\-fprofile\-arcs\fR plus optimization
  and code generation options.  For test coverage analysis, use the
  additional \fB\-ftest\-coverage\fR option.  You do not need to profile
  every source file in a program.
! .IP * 4
  Compile the source files additionally with \fB\-fprofile\-abs\-path\fR
  to create absolute path names in the \fI.gcno\fR files.  This allows
  \&\fBgcov\fR to find the correct sources in projects where compilations
  occur with different working directories.
! .IP * 4
  Link your object files with \fB\-lgcov\fR or \fB\-fprofile\-arcs\fR
  (the latter implies the former).
! .IP * 4
  Run the program on a representative workload to generate the arc profile
  information.  This may be repeated any number of times.  You can run
  concurrent instances of your program, and provided that the file system
  supports locking, the data files will be correctly updated.  Unless
! a strict ISO C dialect option is in effect, \f(CW\*(C`fork\*(C'\fR calls are
  detected and correctly handled without double counting.
  .Sp
  Moreover, an object file can be recompiled multiple times
  and the corresponding \fI.gcda\fR file merges as long as
  the source file and the compiler options are unchanged.
! .IP * 4
! For profile\-directed optimizations, compile the source files again with
  the same optimization and code generation options plus
  \&\fB\-fbranch\-probabilities\fR.
! .IP * 4
  For test coverage analysis, use \fBgcov\fR to produce human readable
  information from the \fI.gcno\fR and \fI.gcda\fR files.  Refer to the
  \&\fBgcov\fR documentation for further information.
  .RE
  .RS 4
  .Sp
! With \fB\-fprofile\-arcs\fR, for each function of your program GCC
  creates a program flow graph, then finds a spanning tree for the graph.
  Only arcs that are not on the spanning tree have to be instrumented: the
  compiler adds code to count the number of times that these arcs are
*************** executed.  When an arc is the only exit
*** 16683,16693 ****
  instrumentation code can be added to the block; otherwise, a new basic
  block must be created to hold the instrumentation code.
  .Sp
! With \fB\-fcondition\-coverage\fR, for each conditional in your program \s-1GCC\s0
  creates a bitset and records the exercised boolean values that have an
  independent effect on the outcome of that expression.
  .Sp
! With \fB\-fpath\-coverage\fR, \s-1GCC\s0 finds and enumerates and records the
  taken prime paths of each function, unless the number of paths would
  exceed the limit controlled by \fB\-fpath\-coverage\-limit\fR.  If the
  limit is exceeded the function is not instrumented as if
--- 16616,16626 ----
  instrumentation code can be added to the block; otherwise, a new basic
  block must be created to hold the instrumentation code.
  .Sp
! With \fB\-fcondition\-coverage\fR, for each conditional in your program GCC
  creates a bitset and records the exercised boolean values that have an
  independent effect on the outcome of that expression.
  .Sp
! With \fB\-fpath\-coverage\fR, GCC finds and enumerates and records the
  taken prime paths of each function, unless the number of paths would
  exceed the limit controlled by \fB\-fpath\-coverage\-limit\fR.  If the
  limit is exceeded the function is not instrumented as if
*************** limit is exceeded the function is not in
*** 16695,16746 ****
  sequence of unique blocks, except possibly the first and last, which is
  not a subpath of any other path.
  .RE
! .IP "\fB\-ftest\-coverage\fR" 4
  .IX Item "-ftest-coverage"
! Produce a notes file that the \fBgcov\fR code-coverage utility can use to
! show program coverage.  Each source file's note file is called
! \&\fI\fIauxname\fI.gcno\fR.  Refer to the \fB\-fprofile\-arcs\fR option
  above for a description of \fIauxname\fR and instructions on how to
  generate test coverage data.  Coverage data matches the source files
  more closely if you do not optimize.
! .IP "\fB\-fprofile\-abs\-path\fR" 4
  .IX Item "-fprofile-abs-path"
  Automatically convert relative source file names to absolute path names
  in the \fI.gcno\fR files.  This allows \fBgcov\fR to find the correct
  sources in projects where compilations occur with different working
  directories.
! .IP "\fB\-fprofile\-dir=\fR\fIpath\fR" 4
  .IX Item "-fprofile-dir=path"
  Set the directory to search for the profile data files in to \fIpath\fR.
  This option affects only the profile data generated by
  \&\fB\-fprofile\-generate\fR, \fB\-ftest\-coverage\fR, \fB\-fprofile\-arcs\fR
  and used by \fB\-fprofile\-use\fR and \fB\-fbranch\-probabilities\fR
  and its related options.  Both absolute and relative paths can be used.
! By default, \s-1GCC\s0 uses the current directory as \fIpath\fR, thus the
  profile data file appears in the same directory as the object file.
  In order to prevent the file name clashing, if the object file name is
  not an absolute path, we mangle the absolute path of the
! \&\fI\fIsourcename\fI.gcda\fR file and use it as the file name of a
  \&\fI.gcda\fR file.  See details about the file naming in \fB\-fprofile\-arcs\fR.
  See similar option \fB\-fprofile\-note\fR.
  .Sp
  When an executable is run in a massive parallel environment, it is recommended
  to save profile to different folders.  That can be done with variables
! in \fIpath\fR that are exported during run-time:
  .RS 4
! .IP "\fB\f(CB%p\fB\fR" 4
  .IX Item "%p"
! process \s-1ID.\s0
! .IP "\fB\f(CB%q\fB{\s-1VAR\s0}\fR" 4
  .IX Item "%q{VAR}"
! value of environment variable \fI\s-1VAR\s0\fR
  .RE
  .RS 4
  .RE
! .IP "\fB\-fprofile\-generate\fR" 4
  .IX Item "-fprofile-generate"
  .PD 0
! .IP "\fB\-fprofile\-generate=\fR\fIpath\fR" 4
  .IX Item "-fprofile-generate=path"
  .PD
  Enable options usually used for instrumenting application to produce
--- 16628,16681 ----
  sequence of unique blocks, except possibly the first and last, which is
  not a subpath of any other path.
  .RE
! .IP \fB\-ftest\-coverage\fR 4
  .IX Item "-ftest-coverage"
! Produce a notes file that the \fBgcov\fR code\-coverage utility can use to
! show program coverage.  Each source file\*(Aqs note file is called
! \&\fIauxname.gcno\fR.  Refer to the \fB\-fprofile\-arcs\fR option
  above for a description of \fIauxname\fR and instructions on how to
  generate test coverage data.  Coverage data matches the source files
  more closely if you do not optimize.
! .IP \fB\-fprofile\-abs\-path\fR 4
  .IX Item "-fprofile-abs-path"
  Automatically convert relative source file names to absolute path names
  in the \fI.gcno\fR files.  This allows \fBgcov\fR to find the correct
  sources in projects where compilations occur with different working
  directories.
! .IP \fB\-fprofile\-dir=\fR\fIpath\fR 4
  .IX Item "-fprofile-dir=path"
  Set the directory to search for the profile data files in to \fIpath\fR.
  This option affects only the profile data generated by
  \&\fB\-fprofile\-generate\fR, \fB\-ftest\-coverage\fR, \fB\-fprofile\-arcs\fR
  and used by \fB\-fprofile\-use\fR and \fB\-fbranch\-probabilities\fR
  and its related options.  Both absolute and relative paths can be used.
! By default, GCC uses the current directory as \fIpath\fR, thus the
  profile data file appears in the same directory as the object file.
  In order to prevent the file name clashing, if the object file name is
  not an absolute path, we mangle the absolute path of the
! \&\fIsourcename.gcda\fR file and use it as the file name of a
  \&\fI.gcda\fR file.  See details about the file naming in \fB\-fprofile\-arcs\fR.
  See similar option \fB\-fprofile\-note\fR.
  .Sp
  When an executable is run in a massive parallel environment, it is recommended
  to save profile to different folders.  That can be done with variables
! in \fIpath\fR that are exported during run\-time:
  .RS 4
! .ie n .IP \fR\fB%p\fR\fB\fR 4
! .el .IP \fR\f(CB%p\fR\fB\fR 4
  .IX Item "%p"
! process ID.
! .ie n .IP \fR\fB%q\fR\fB{VAR}\fR 4
! .el .IP \fR\f(CB%q\fR\fB{VAR}\fR 4
  .IX Item "%q{VAR}"
! value of environment variable \fIVAR\fR
  .RE
  .RS 4
  .RE
! .IP \fB\-fprofile\-generate\fR 4
  .IX Item "-fprofile-generate"
  .PD 0
! .IP \fB\-fprofile\-generate=\fR\fIpath\fR 4
  .IX Item "-fprofile-generate=path"
  .PD
  Enable options usually used for instrumenting application to produce
*************** The following options are enabled:
*** 16752,16766 ****
  \&\fB\-fprofile\-arcs\fR, \fB\-fprofile\-values\fR,
  \&\fB\-finline\-functions\fR, and \fB\-fipa\-bit\-cp\fR.
  .Sp
! If \fIpath\fR is specified, \s-1GCC\s0 looks at the \fIpath\fR to find
  the profile feedback data files. See \fB\-fprofile\-dir\fR.
  .Sp
  To optimize the program based on the collected profile information, use
  \&\fB\-fprofile\-use\fR.
! .IP "\fB\-fprofile\-info\-section\fR" 4
  .IX Item "-fprofile-info-section"
  .PD 0
! .IP "\fB\-fprofile\-info\-section=\fR\fIname\fR" 4
  .IX Item "-fprofile-info-section=name"
  .PD
  Register the profile information in the specified section instead of using a
--- 16687,16701 ----
  \&\fB\-fprofile\-arcs\fR, \fB\-fprofile\-values\fR,
  \&\fB\-finline\-functions\fR, and \fB\-fipa\-bit\-cp\fR.
  .Sp
! If \fIpath\fR is specified, GCC looks at the \fIpath\fR to find
  the profile feedback data files. See \fB\-fprofile\-dir\fR.
  .Sp
  To optimize the program based on the collected profile information, use
  \&\fB\-fprofile\-use\fR.
! .IP \fB\-fprofile\-info\-section\fR 4
  .IX Item "-fprofile-info-section"
  .PD 0
! .IP \fB\-fprofile\-info\-section=\fR\fIname\fR 4
  .IX Item "-fprofile-info-section=name"
  .PD
  Register the profile information in the specified section instead of using a
*************** environments (for example embedded syste
*** 16775,16781 ****
  support constructors/destructors or the C library file I/O.
  .Sp
  The linker could collect the input sections in a continuous memory block and
! define start and end symbols.  A \s-1GNU\s0 linker script example which defines a
  linker output section follows:
  .Sp
  .Vb 6
--- 16710,16716 ----
  support constructors/destructors or the C library file I/O.
  .Sp
  The linker could collect the input sections in a continuous memory block and
! define start and end symbols.  A GNU linker script example which defines a
  linker output section follows:
  .Sp
  .Vb 6
*************** for example like this:
*** 16845,16864 ****
  \&        }
  .Ve
  .Sp
! The \fBmerge-stream\fR subcommand of \fBgcov-tool\fR may be used to
  deserialize the data stream generated by the \f(CW\*(C`_\|_gcov_filename_to_gcfn\*(C'\fR and
  \&\f(CW\*(C`_\|_gcov_info_to_gcda\*(C'\fR functions and merge the profile information into
  \&\fI.gcda\fR files on the host filesystem.
! .IP "\fB\-fprofile\-note=\fR\fIpath\fR" 4
  .IX Item "-fprofile-note=path"
! If \fIpath\fR is specified, \s-1GCC\s0 saves \fI.gcno\fR file into \fIpath\fR
  location.  If you combine the option with multiple source files,
  the \fI.gcno\fR file will be overwritten.
! .IP "\fB\-fprofile\-prefix\-path=\fR\fIpath\fR" 4
  .IX Item "-fprofile-prefix-path=path"
  This option can be used in combination with
  \&\fBprofile\-generate=\fR\fIprofile_dir\fR and
! \&\fBprofile\-use=\fR\fIprofile_dir\fR to inform \s-1GCC\s0 where is the base
  directory of built source tree.  By default \fIprofile_dir\fR will contain
  files with mangled absolute paths of all object files in the built project.
  This is not desirable when directory used to build the instrumented binary
--- 16780,16799 ----
  \&        }
  .Ve
  .Sp
! The \fBmerge\-stream\fR subcommand of \fBgcov\-tool\fR may be used to
  deserialize the data stream generated by the \f(CW\*(C`_\|_gcov_filename_to_gcfn\*(C'\fR and
  \&\f(CW\*(C`_\|_gcov_info_to_gcda\*(C'\fR functions and merge the profile information into
  \&\fI.gcda\fR files on the host filesystem.
! .IP \fB\-fprofile\-note=\fR\fIpath\fR 4
  .IX Item "-fprofile-note=path"
! If \fIpath\fR is specified, GCC saves \fI.gcno\fR file into \fIpath\fR
  location.  If you combine the option with multiple source files,
  the \fI.gcno\fR file will be overwritten.
! .IP \fB\-fprofile\-prefix\-path=\fR\fIpath\fR 4
  .IX Item "-fprofile-prefix-path=path"
  This option can be used in combination with
  \&\fBprofile\-generate=\fR\fIprofile_dir\fR and
! \&\fBprofile\-use=\fR\fIprofile_dir\fR to inform GCC where is the base
  directory of built source tree.  By default \fIprofile_dir\fR will contain
  files with mangled absolute paths of all object files in the built project.
  This is not desirable when directory used to build the instrumented binary
*************** feedback because the profile data will n
*** 16867,16904 ****
  In such setups \fB\-fprofile\-prefix\-path=\fR\fIpath\fR with \fIpath\fR
  pointing to the base directory of the build can be used to strip the irrelevant
  part of the path and keep all file names relative to the main build directory.
! .IP "\fB\-fprofile\-prefix\-map=\fR\fIold\fR\fB=\fR\fInew\fR" 4
  .IX Item "-fprofile-prefix-map=old=new"
! When compiling files residing in directory \fI\fIold\fI\fR, record
  profiling information (with \fB\-\-coverage\fR)
  describing them as if the files resided in
! directory \fI\fInew\fI\fR instead.
  See also \fB\-ffile\-prefix\-map\fR and \fB\-fcanon\-prefix\-map\fR.
! .IP "\fB\-fprofile\-update=\fR\fImethod\fR" 4
  .IX Item "-fprofile-update=method"
  Alter the update method for an application instrumented for profile
  feedback based optimization.  The \fImethod\fR argument should be one of
! \&\fBsingle\fR, \fBatomic\fR or \fBprefer-atomic\fR.
! The first one is useful for single-threaded applications,
! while the second one prevents profile corruption by emitting thread-safe code.
  .Sp
  \&\fBWarning:\fR When an application does not properly join all threads
  (or creates an detached thread), a profile file can be still corrupted.
  .Sp
! Using \fBprefer-atomic\fR would be transformed either to \fBatomic\fR,
! when supported by a target, or to \fBsingle\fR otherwise.  The \s-1GCC\s0 driver
! automatically selects \fBprefer-atomic\fR when \fB\-pthread\fR
  is present in the command line, otherwise the default method is \fBsingle\fR.
  .Sp
  If \fBatomic\fR is selected, then the profile information is updated using
! atomic operations on a best-effort basis.  Ideally, the profile information is
  updated through atomic operations in hardware.  If the target platform does not
  support the required atomic operations in hardware, however, \fIlibatomic\fR
  is available, then the profile information is updated through calls to
  \&\fIlibatomic\fR.  If the target platform neither supports the required atomic
  operations in hardware nor \fIlibatomic\fR, then the profile information is
  not atomically updated and a warning is issued.  In this case, the obtained
! profiling information may be corrupt for multi-threaded applications.
  .Sp
  For performance reasons, if 64\-bit counters are used for the profiling
  information and the target platform only supports 32\-bit atomic operations in
--- 16802,16839 ----
  In such setups \fB\-fprofile\-prefix\-path=\fR\fIpath\fR with \fIpath\fR
  pointing to the base directory of the build can be used to strip the irrelevant
  part of the path and keep all file names relative to the main build directory.
! .IP \fB\-fprofile\-prefix\-map=\fR\fIold\fR\fB=\fR\fInew\fR 4
  .IX Item "-fprofile-prefix-map=old=new"
! When compiling files residing in directory \fIold\fR, record
  profiling information (with \fB\-\-coverage\fR)
  describing them as if the files resided in
! directory \fInew\fR instead.
  See also \fB\-ffile\-prefix\-map\fR and \fB\-fcanon\-prefix\-map\fR.
! .IP \fB\-fprofile\-update=\fR\fImethod\fR 4
  .IX Item "-fprofile-update=method"
  Alter the update method for an application instrumented for profile
  feedback based optimization.  The \fImethod\fR argument should be one of
! \&\fBsingle\fR, \fBatomic\fR or \fBprefer\-atomic\fR.
! The first one is useful for single\-threaded applications,
! while the second one prevents profile corruption by emitting thread\-safe code.
  .Sp
  \&\fBWarning:\fR When an application does not properly join all threads
  (or creates an detached thread), a profile file can be still corrupted.
  .Sp
! Using \fBprefer\-atomic\fR would be transformed either to \fBatomic\fR,
! when supported by a target, or to \fBsingle\fR otherwise.  The GCC driver
! automatically selects \fBprefer\-atomic\fR when \fB\-pthread\fR
  is present in the command line, otherwise the default method is \fBsingle\fR.
  .Sp
  If \fBatomic\fR is selected, then the profile information is updated using
! atomic operations on a best\-effort basis.  Ideally, the profile information is
  updated through atomic operations in hardware.  If the target platform does not
  support the required atomic operations in hardware, however, \fIlibatomic\fR
  is available, then the profile information is updated through calls to
  \&\fIlibatomic\fR.  If the target platform neither supports the required atomic
  operations in hardware nor \fIlibatomic\fR, then the profile information is
  not atomically updated and a warning is issued.  In this case, the obtained
! profiling information may be corrupt for multi\-threaded applications.
  .Sp
  For performance reasons, if 64\-bit counters are used for the profiling
  information and the target platform only supports 32\-bit atomic operations in
*************** hardware, then the performance critical
*** 16906,16926 ****
  32\-bit atomic operations for each counter update.  If a signal interrupts these
  two operations updating a counter, then the profiling information may be in an
  inconsistent state.
! .IP "\fB\-fprofile\-filter\-files=\fR\fIregex\fR" 4
  .IX Item "-fprofile-filter-files=regex"
  Instrument only functions from files whose name matches
! any of the regular expressions (separated by semi-colons).
  .Sp
  For example, \fB\-fprofile\-filter\-files=main\e.c;module.*\e.c\fR will instrument
! only \fImain.c\fR and all C files starting with 'module'.
! .IP "\fB\-fprofile\-exclude\-files=\fR\fIregex\fR" 4
  .IX Item "-fprofile-exclude-files=regex"
  Instrument only functions from files whose name does not match
! any of the regular expressions (separated by semi-colons).
  .Sp
  For example, \fB\-fprofile\-exclude\-files=/usr/.*\fR will prevent instrumentation
  of all files that are located in the \fI/usr/\fR folder.
! .IP "\fB\-fprofile\-reproducible=\fR[\fBmultithreaded\fR|\fBparallel-runs\fR|\fBserial\fR]" 4
  .IX Item "-fprofile-reproducible=[multithreaded|parallel-runs|serial]"
  Control level of reproducibility of profile gathered by
  \&\f(CW\*(C`\-fprofile\-generate\*(C'\fR.  This makes it possible to rebuild program
--- 16841,16861 ----
  32\-bit atomic operations for each counter update.  If a signal interrupts these
  two operations updating a counter, then the profiling information may be in an
  inconsistent state.
! .IP \fB\-fprofile\-filter\-files=\fR\fIregex\fR 4
  .IX Item "-fprofile-filter-files=regex"
  Instrument only functions from files whose name matches
! any of the regular expressions (separated by semi\-colons).
  .Sp
  For example, \fB\-fprofile\-filter\-files=main\e.c;module.*\e.c\fR will instrument
! only \fImain.c\fR and all C files starting with \*(Aqmodule\*(Aq.
! .IP \fB\-fprofile\-exclude\-files=\fR\fIregex\fR 4
  .IX Item "-fprofile-exclude-files=regex"
  Instrument only functions from files whose name does not match
! any of the regular expressions (separated by semi\-colons).
  .Sp
  For example, \fB\-fprofile\-exclude\-files=/usr/.*\fR will prevent instrumentation
  of all files that are located in the \fI/usr/\fR folder.
! .IP \fB\-fprofile\-reproducible=\fR[\fBmultithreaded\fR|\fBparallel\-runs\fR|\fBserial\fR] 4
  .IX Item "-fprofile-reproducible=[multithreaded|parallel-runs|serial]"
  Control level of reproducibility of profile gathered by
  \&\f(CW\*(C`\-fprofile\-generate\*(C'\fR.  This makes it possible to rebuild program
*************** packages.
*** 16930,16944 ****
  With \fB\-fprofile\-reproducible=serial\fR the profile gathered by
  \&\fB\-fprofile\-generate\fR is reproducible provided the trained program
  behaves the same at each invocation of the train run, it is not
! multi-threaded and profile data streaming is always done in the same
  order.  Note that profile streaming happens at the end of program run but
  also before \f(CW\*(C`fork\*(C'\fR function is invoked.
  .Sp
  Note that it is quite common that execution counts of some part of
  programs depends, for example, on length of temporary file names or
! memory space randomization (that may affect hash-table collision rate).
! Such non-reproducible part of programs may be annotated by
! \&\f(CW\*(C`no_instrument_function\*(C'\fR function attribute. \fBgcov-dump\fR with
  \&\fB\-l\fR can be used to dump gathered data and verify that they are
  indeed reproducible.
  .Sp
--- 16865,16879 ----
  With \fB\-fprofile\-reproducible=serial\fR the profile gathered by
  \&\fB\-fprofile\-generate\fR is reproducible provided the trained program
  behaves the same at each invocation of the train run, it is not
! multi\-threaded and profile data streaming is always done in the same
  order.  Note that profile streaming happens at the end of program run but
  also before \f(CW\*(C`fork\*(C'\fR function is invoked.
  .Sp
  Note that it is quite common that execution counts of some part of
  programs depends, for example, on length of temporary file names or
! memory space randomization (that may affect hash\-table collision rate).
! Such non\-reproducible part of programs may be annotated by
! \&\f(CW\*(C`no_instrument_function\*(C'\fR function attribute. \fBgcov\-dump\fR with
  \&\fB\-l\fR can be used to dump gathered data and verify that they are
  indeed reproducible.
  .Sp
*************** gcda files.  This setting makes it possi
*** 16948,16962 ****
  instrumented program in parallel (such as with \f(CW\*(C`make \-j\*(C'\fR). This
  reduces quality of gathered data, in particular of indirect call
  profiling.
! .IP "\fB\-fsanitize=address\fR" 4
  .IX Item "-fsanitize=address"
  Enable AddressSanitizer, a fast memory error detector.
  Memory access instructions are instrumented to detect
! out-of-bounds and use-after-free bugs.
  The option enables \fB\-fsanitize\-address\-use\-after\-scope\fR.
  See <\fBhttps://github.com/google/sanitizers/wiki/AddressSanitizer\fR> for
! more details.  The run-time behavior can be influenced using the
! \&\fB\s-1ASAN_OPTIONS\s0\fR environment variable.  When set to \f(CW\*(C`help=1\*(C'\fR,
  the available options are shown at startup of the instrumented program.  See
  <\fBhttps://github.com/google/sanitizers/wiki/AddressSanitizerFlags#run\-time\-flags\fR>
  for a list of supported options.
--- 16883,16897 ----
  instrumented program in parallel (such as with \f(CW\*(C`make \-j\*(C'\fR). This
  reduces quality of gathered data, in particular of indirect call
  profiling.
! .IP \fB\-fsanitize=address\fR 4
  .IX Item "-fsanitize=address"
  Enable AddressSanitizer, a fast memory error detector.
  Memory access instructions are instrumented to detect
! out\-of\-bounds and use\-after\-free bugs.
  The option enables \fB\-fsanitize\-address\-use\-after\-scope\fR.
  See <\fBhttps://github.com/google/sanitizers/wiki/AddressSanitizer\fR> for
! more details.  The run\-time behavior can be influenced using the
! \&\fBASAN_OPTIONS\fR environment variable.  When set to \f(CW\*(C`help=1\*(C'\fR,
  the available options are shown at startup of the instrumented program.  See
  <\fBhttps://github.com/google/sanitizers/wiki/AddressSanitizerFlags#run\-time\-flags\fR>
  for a list of supported options.
*************** optimizing sibling and tail recursive ca
*** 16976,17006 ****
  disables Identical Code Folding for functions).
  Using \fB\-fno\-omit\-frame\-pointer\fR also improves stack traces.
  Since multiple runs of the
! program may yield backtraces with different addresses due to \s-1ASLR\s0 (Address
! Space Layout Randomization), it may be desirable to turn \s-1ASLR\s0 off.  On Linux,
! this can be achieved with \fBsetarch `uname \-m` \-R ./prog\fR.
! .IP "\fB\-fsanitize=kernel\-address\fR" 4
  .IX Item "-fsanitize=kernel-address"
  Enable AddressSanitizer for Linux kernel.
  See <\fBhttps://github.com/google/kernel\-sanitizers\fR> for more details.
! .IP "\fB\-fsanitize=hwaddress\fR" 4
  .IX Item "-fsanitize=hwaddress"
! Enable Hardware-assisted AddressSanitizer, which uses a hardware ability to
  ignore the top byte of a pointer to allow the detection of memory errors with
  a low memory overhead.
! Memory access instructions are instrumented to detect out-of-bounds and
! use-after-free bugs.
  The option enables \fB\-fsanitize\-address\-use\-after\-scope\fR.
  See
  <\fBhttps://clang.llvm.org/docs/HardwareAssistedAddressSanitizerDesign.html\fR>
! for more details.  The run-time behavior can be influenced using the
! \&\fB\s-1HWASAN_OPTIONS\s0\fR environment variable.  When set to \f(CW\*(C`help=1\*(C'\fR,
  the available options are shown at startup of the instrumented program.
  The option cannot be combined with \fB\-fsanitize=thread\fR or
  \&\fB\-fsanitize=address\fR, and is currently only available on AArch64.
! .IP "\fB\-fsanitize=kernel\-hwaddress\fR" 4
  .IX Item "-fsanitize=kernel-hwaddress"
! Enable Hardware-assisted AddressSanitizer for compilation of the Linux kernel.
  Similar to \fB\-fsanitize=kernel\-address\fR but using an alternate
  instrumentation method, and similar to \fB\-fsanitize=hwaddress\fR but with
  instrumentation differences necessary for compiling the Linux kernel.
--- 16911,16941 ----
  disables Identical Code Folding for functions).
  Using \fB\-fno\-omit\-frame\-pointer\fR also improves stack traces.
  Since multiple runs of the
! program may yield backtraces with different addresses due to ASLR (Address
! Space Layout Randomization), it may be desirable to turn ASLR off.  On Linux,
! this can be achieved with \fBsetarch \`uname \-m\` \-R ./prog\fR.
! .IP \fB\-fsanitize=kernel\-address\fR 4
  .IX Item "-fsanitize=kernel-address"
  Enable AddressSanitizer for Linux kernel.
  See <\fBhttps://github.com/google/kernel\-sanitizers\fR> for more details.
! .IP \fB\-fsanitize=hwaddress\fR 4
  .IX Item "-fsanitize=hwaddress"
! Enable Hardware\-assisted AddressSanitizer, which uses a hardware ability to
  ignore the top byte of a pointer to allow the detection of memory errors with
  a low memory overhead.
! Memory access instructions are instrumented to detect out\-of\-bounds and
! use\-after\-free bugs.
  The option enables \fB\-fsanitize\-address\-use\-after\-scope\fR.
  See
  <\fBhttps://clang.llvm.org/docs/HardwareAssistedAddressSanitizerDesign.html\fR>
! for more details.  The run\-time behavior can be influenced using the
! \&\fBHWASAN_OPTIONS\fR environment variable.  When set to \f(CW\*(C`help=1\*(C'\fR,
  the available options are shown at startup of the instrumented program.
  The option cannot be combined with \fB\-fsanitize=thread\fR or
  \&\fB\-fsanitize=address\fR, and is currently only available on AArch64.
! .IP \fB\-fsanitize=kernel\-hwaddress\fR 4
  .IX Item "-fsanitize=kernel-hwaddress"
! Enable Hardware\-assisted AddressSanitizer for compilation of the Linux kernel.
  Similar to \fB\-fsanitize=kernel\-address\fR but using an alternate
  instrumentation method, and similar to \fB\-fsanitize=hwaddress\fR but with
  instrumentation differences necessary for compiling the Linux kernel.
*************** account for the stack pointer having a d
*** 17009,17019 ****
  .Sp
  \&\fINote:\fR This option has different defaults to the \fB\-fsanitize=hwaddress\fR.
  Instrumenting the stack and alloca calls are not on by default but are still
! possible by specifying the command-line options
  \&\fB\-\-param hwasan\-instrument\-stack=1\fR and
  \&\fB\-\-param hwasan\-instrument\-allocas=1\fR respectively. Using a random frame
  tag is not implemented for kernel instrumentation.
! .IP "\fB\-fsanitize=pointer\-compare\fR" 4
  .IX Item "-fsanitize=pointer-compare"
  Instrument comparison operation (<, <=, >, >=) with pointer operands.
  The option must be combined with either \fB\-fsanitize=kernel\-address\fR or
--- 16944,16954 ----
  .Sp
  \&\fINote:\fR This option has different defaults to the \fB\-fsanitize=hwaddress\fR.
  Instrumenting the stack and alloca calls are not on by default but are still
! possible by specifying the command\-line options
  \&\fB\-\-param hwasan\-instrument\-stack=1\fR and
  \&\fB\-\-param hwasan\-instrument\-allocas=1\fR respectively. Using a random frame
  tag is not implemented for kernel instrumentation.
! .IP \fB\-fsanitize=pointer\-compare\fR 4
  .IX Item "-fsanitize=pointer-compare"
  Instrument comparison operation (<, <=, >, >=) with pointer operands.
  The option must be combined with either \fB\-fsanitize=kernel\-address\fR or
*************** The option must be combined with either
*** 17021,17029 ****
  The option cannot be combined with \fB\-fsanitize=thread\fR.
  Note: By default the check is disabled at run time.  To enable it,
  add \f(CW\*(C`detect_invalid_pointer_pairs=2\*(C'\fR to the environment variable
! \&\fB\s-1ASAN_OPTIONS\s0\fR. Using \f(CW\*(C`detect_invalid_pointer_pairs=1\*(C'\fR detects
! invalid operation only when both pointers are non-null.
! .IP "\fB\-fsanitize=pointer\-subtract\fR" 4
  .IX Item "-fsanitize=pointer-subtract"
  Instrument subtraction with pointer operands.
  The option must be combined with either \fB\-fsanitize=kernel\-address\fR or
--- 16956,16964 ----
  The option cannot be combined with \fB\-fsanitize=thread\fR.
  Note: By default the check is disabled at run time.  To enable it,
  add \f(CW\*(C`detect_invalid_pointer_pairs=2\*(C'\fR to the environment variable
! \&\fBASAN_OPTIONS\fR. Using \f(CW\*(C`detect_invalid_pointer_pairs=1\*(C'\fR detects
! invalid operation only when both pointers are non\-null.
! .IP \fB\-fsanitize=pointer\-subtract\fR 4
  .IX Item "-fsanitize=pointer-subtract"
  Instrument subtraction with pointer operands.
  The option must be combined with either \fB\-fsanitize=kernel\-address\fR or
*************** The option must be combined with either
*** 17031,17053 ****
  The option cannot be combined with \fB\-fsanitize=thread\fR.
  Note: By default the check is disabled at run time.  To enable it,
  add \f(CW\*(C`detect_invalid_pointer_pairs=2\*(C'\fR to the environment variable
! \&\fB\s-1ASAN_OPTIONS\s0\fR. Using \f(CW\*(C`detect_invalid_pointer_pairs=1\*(C'\fR detects
! invalid operation only when both pointers are non-null.
! .IP "\fB\-fsanitize=shadow\-call\-stack\fR" 4
  .IX Item "-fsanitize=shadow-call-stack"
  Enable ShadowCallStack, a security enhancement mechanism used to protect
  programs against return address overwrites (e.g. stack buffer overflows.)
! It works by saving a function's return address to a separately allocated
  shadow call stack in the function prologue and restoring the return address
  from the shadow call stack in the function epilogue.  Instrumentation only
  occurs in functions that need to save the return address to the stack.
  .Sp
  Currently it only supports the aarch64 platform.  It is specifically
! designed for linux kernels that enable the \s-1CONFIG_SHADOW_CALL_STACK\s0 option.
  For the user space programs, runtime support is not currently provided
  in libc and libgcc.  Users who want to use this feature in user space need
  to provide their own support for the runtime.  It should be noted that
! this may cause the \s-1ABI\s0 rules to be broken.
  .Sp
  On aarch64, the instrumentation makes use of the platform register \f(CW\*(C`x18\*(C'\fR.
  This generally means that any code that may run on the same thread as code
--- 16966,16988 ----
  The option cannot be combined with \fB\-fsanitize=thread\fR.
  Note: By default the check is disabled at run time.  To enable it,
  add \f(CW\*(C`detect_invalid_pointer_pairs=2\*(C'\fR to the environment variable
! \&\fBASAN_OPTIONS\fR. Using \f(CW\*(C`detect_invalid_pointer_pairs=1\*(C'\fR detects
! invalid operation only when both pointers are non\-null.
! .IP \fB\-fsanitize=shadow\-call\-stack\fR 4
  .IX Item "-fsanitize=shadow-call-stack"
  Enable ShadowCallStack, a security enhancement mechanism used to protect
  programs against return address overwrites (e.g. stack buffer overflows.)
! It works by saving a function\*(Aqs return address to a separately allocated
  shadow call stack in the function prologue and restoring the return address
  from the shadow call stack in the function epilogue.  Instrumentation only
  occurs in functions that need to save the return address to the stack.
  .Sp
  Currently it only supports the aarch64 platform.  It is specifically
! designed for linux kernels that enable the CONFIG_SHADOW_CALL_STACK option.
  For the user space programs, runtime support is not currently provided
  in libc and libgcc.  Users who want to use this feature in user space need
  to provide their own support for the runtime.  It should be noted that
! this may cause the ABI rules to be broken.
  .Sp
  On aarch64, the instrumentation makes use of the platform register \f(CW\*(C`x18\*(C'\fR.
  This generally means that any code that may run on the same thread as code
*************** to turn off exceptions.
*** 17062,17073 ****
  .Sp
  See <\fBhttps://clang.llvm.org/docs/ShadowCallStack.html\fR> for more
  details.
! .IP "\fB\-fsanitize=thread\fR" 4
  .IX Item "-fsanitize=thread"
  Enable ThreadSanitizer, a fast data race detector.
  Memory access instructions are instrumented to detect
  data race bugs.  See <\fBhttps://github.com/google/sanitizers/wiki#threadsanitizer\fR> for more
! details. The run-time behavior can be influenced using the \fB\s-1TSAN_OPTIONS\s0\fR
  environment variable; see
  <\fBhttps://github.com/google/sanitizers/wiki/ThreadSanitizerFlags\fR> for a list of
  supported options.
--- 16997,17008 ----
  .Sp
  See <\fBhttps://clang.llvm.org/docs/ShadowCallStack.html\fR> for more
  details.
! .IP \fB\-fsanitize=thread\fR 4
  .IX Item "-fsanitize=thread"
  Enable ThreadSanitizer, a fast data race detector.
  Memory access instructions are instrumented to detect
  data race bugs.  See <\fBhttps://github.com/google/sanitizers/wiki#threadsanitizer\fR> for more
! details. The run\-time behavior can be influenced using the \fBTSAN_OPTIONS\fR
  environment variable; see
  <\fBhttps://github.com/google/sanitizers/wiki/ThreadSanitizerFlags\fR> for a list of
  supported options.
*************** When compiling with \fB\-fsanitize=threa
*** 17078,17146 ****
  \&\fB\-g\fR to produce more meaningful output.
  .Sp
  Note that sanitized atomic builtins cannot throw exceptions when
! operating on invalid memory addresses with non-call exceptions
  (\fB\-fnon\-call\-exceptions\fR).
! .IP "\fB\-fsanitize=leak\fR" 4
  .IX Item "-fsanitize=leak"
  Enable LeakSanitizer, a memory leak detector.
  This option only matters for linking of executables.
  The executable is linked against a library that overrides \f(CW\*(C`malloc\*(C'\fR
  and other allocator functions.  See
  <\fBhttps://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer\fR> for more
! details.  The run-time behavior can be influenced using the
! \&\fB\s-1LSAN_OPTIONS\s0\fR environment variable.
  The option cannot be combined with \fB\-fsanitize=thread\fR.
! .IP "\fB\-fsanitize=undefined\fR" 4
  .IX Item "-fsanitize=undefined"
  Enable UndefinedBehaviorSanitizer, a fast undefined behavior detector.
  Various computations are instrumented to detect undefined behavior
! at runtime.  See <\fBhttps://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html\fR> for more details.   The run-time behavior can be influenced using the
! \&\fB\s-1UBSAN_OPTIONS\s0\fR environment variable.  Current suboptions are:
  .RS 4
! .IP "\fB\-fsanitize=shift\fR" 4
  .IX Item "-fsanitize=shift"
  This option enables checking that the result of a shift operation is
  not undefined.  Note that what exactly is considered undefined differs
! slightly between C and \*(C+, as well as between \s-1ISO C90\s0 and C99, etc.
  This option has two suboptions, \fB\-fsanitize=shift\-base\fR and
  \&\fB\-fsanitize=shift\-exponent\fR.
! .IP "\fB\-fsanitize=shift\-exponent\fR" 4
  .IX Item "-fsanitize=shift-exponent"
  This option enables checking that the second argument of a shift operation
  is not negative and is smaller than the precision of the promoted first
  argument.
! .IP "\fB\-fsanitize=shift\-base\fR" 4
  .IX Item "-fsanitize=shift-base"
  If the second argument of a shift operation is within range, check that the
  result of a shift operation is not undefined.  Note that what exactly is
! considered undefined differs slightly between C and \*(C+, as well as between
! \&\s-1ISO C90\s0 and C99, etc.
! .IP "\fB\-fsanitize=integer\-divide\-by\-zero\fR" 4
  .IX Item "-fsanitize=integer-divide-by-zero"
  Detect integer division by zero.
! .IP "\fB\-fsanitize=unreachable\fR" 4
  .IX Item "-fsanitize=unreachable"
  With this option, the compiler turns the \f(CW\*(C`_\|_builtin_unreachable\*(C'\fR
  call into a diagnostics message call instead.  When reaching the
  \&\f(CW\*(C`_\|_builtin_unreachable\*(C'\fR call, the behavior is undefined.
! .IP "\fB\-fsanitize=vla\-bound\fR" 4
  .IX Item "-fsanitize=vla-bound"
  This option instructs the compiler to check that the size of a variable
  length array is positive.
! .IP "\fB\-fsanitize=null\fR" 4
  .IX Item "-fsanitize=null"
  This option enables pointer checking.  Particularly, the application
  built with this option turned on will issue an error message when it
! tries to dereference a \s-1NULL\s0 pointer, or if a reference (possibly an
! rvalue reference) is bound to a \s-1NULL\s0 pointer, or if a method is invoked
! on an object pointed by a \s-1NULL\s0 pointer.
! .IP "\fB\-fsanitize=return\fR" 4
  .IX Item "-fsanitize=return"
  This option enables return statement checking.  Programs
  built with this option turned on will issue an error message
! when the end of a non-void function is reached without actually
! returning a value.  This option works in \*(C+ only.
! .IP "\fB\-fsanitize=signed\-integer\-overflow\fR" 4
  .IX Item "-fsanitize=signed-integer-overflow"
  This option enables signed integer overflow checking.  We check that
  the result of \f(CW\*(C`+\*(C'\fR, \f(CW\*(C`*\*(C'\fR, and both unary and binary \f(CW\*(C`\-\*(C'\fR
--- 17013,17081 ----
  \&\fB\-g\fR to produce more meaningful output.
  .Sp
  Note that sanitized atomic builtins cannot throw exceptions when
! operating on invalid memory addresses with non\-call exceptions
  (\fB\-fnon\-call\-exceptions\fR).
! .IP \fB\-fsanitize=leak\fR 4
  .IX Item "-fsanitize=leak"
  Enable LeakSanitizer, a memory leak detector.
  This option only matters for linking of executables.
  The executable is linked against a library that overrides \f(CW\*(C`malloc\*(C'\fR
  and other allocator functions.  See
  <\fBhttps://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer\fR> for more
! details.  The run\-time behavior can be influenced using the
! \&\fBLSAN_OPTIONS\fR environment variable.
  The option cannot be combined with \fB\-fsanitize=thread\fR.
! .IP \fB\-fsanitize=undefined\fR 4
  .IX Item "-fsanitize=undefined"
  Enable UndefinedBehaviorSanitizer, a fast undefined behavior detector.
  Various computations are instrumented to detect undefined behavior
! at runtime.  See <\fBhttps://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html\fR> for more details.   The run\-time behavior can be influenced using the
! \&\fBUBSAN_OPTIONS\fR environment variable.  Current suboptions are:
  .RS 4
! .IP \fB\-fsanitize=shift\fR 4
  .IX Item "-fsanitize=shift"
  This option enables checking that the result of a shift operation is
  not undefined.  Note that what exactly is considered undefined differs
! slightly between C and C++, as well as between ISO C90 and C99, etc.
  This option has two suboptions, \fB\-fsanitize=shift\-base\fR and
  \&\fB\-fsanitize=shift\-exponent\fR.
! .IP \fB\-fsanitize=shift\-exponent\fR 4
  .IX Item "-fsanitize=shift-exponent"
  This option enables checking that the second argument of a shift operation
  is not negative and is smaller than the precision of the promoted first
  argument.
! .IP \fB\-fsanitize=shift\-base\fR 4
  .IX Item "-fsanitize=shift-base"
  If the second argument of a shift operation is within range, check that the
  result of a shift operation is not undefined.  Note that what exactly is
! considered undefined differs slightly between C and C++, as well as between
! ISO C90 and C99, etc.
! .IP \fB\-fsanitize=integer\-divide\-by\-zero\fR 4
  .IX Item "-fsanitize=integer-divide-by-zero"
  Detect integer division by zero.
! .IP \fB\-fsanitize=unreachable\fR 4
  .IX Item "-fsanitize=unreachable"
  With this option, the compiler turns the \f(CW\*(C`_\|_builtin_unreachable\*(C'\fR
  call into a diagnostics message call instead.  When reaching the
  \&\f(CW\*(C`_\|_builtin_unreachable\*(C'\fR call, the behavior is undefined.
! .IP \fB\-fsanitize=vla\-bound\fR 4
  .IX Item "-fsanitize=vla-bound"
  This option instructs the compiler to check that the size of a variable
  length array is positive.
! .IP \fB\-fsanitize=null\fR 4
  .IX Item "-fsanitize=null"
  This option enables pointer checking.  Particularly, the application
  built with this option turned on will issue an error message when it
! tries to dereference a NULL pointer, or if a reference (possibly an
! rvalue reference) is bound to a NULL pointer, or if a method is invoked
! on an object pointed by a NULL pointer.
! .IP \fB\-fsanitize=return\fR 4
  .IX Item "-fsanitize=return"
  This option enables return statement checking.  Programs
  built with this option turned on will issue an error message
! when the end of a non\-void function is reached without actually
! returning a value.  This option works in C++ only.
! .IP \fB\-fsanitize=signed\-integer\-overflow\fR 4
  .IX Item "-fsanitize=signed-integer-overflow"
  This option enables signed integer overflow checking.  We check that
  the result of \f(CW\*(C`+\*(C'\fR, \f(CW\*(C`*\*(C'\fR, and both unary and binary \f(CW\*(C`\-\*(C'\fR
*************** overflow:
*** 17153,17227 ****
  \&        signed char a = SCHAR_MAX;
  \&        a++;
  .Ve
! .IP "\fB\-fsanitize=bounds\fR" 4
  .IX Item "-fsanitize=bounds"
  This option enables instrumentation of array bounds.  Various out of bounds
! accesses are detected.  Flexible array members, flexible array member-like
  arrays, and initializers of variables with static storage are not
! instrumented, with the exception of flexible array member-like arrays
  for which \f(CW\*(C`\-fstrict\-flex\-arrays\*(C'\fR or \f(CW\*(C`\-fstrict\-flex\-arrays=\*(C'\fR
! options or \f(CW\*(C`strict_flex_array\*(C'\fR attributes say they shouldn't be treated
! like flexible array member-like arrays.
! .IP "\fB\-fsanitize=bounds\-strict\fR" 4
  .IX Item "-fsanitize=bounds-strict"
  This option enables strict instrumentation of array bounds.  Most out of bounds
! accesses are detected, including flexible array member-like arrays.
  Initializers of variables with static storage are not instrumented.
! .IP "\fB\-fsanitize=alignment\fR" 4
  .IX Item "-fsanitize=alignment"
  This option enables checking of alignment of pointers when they are
  dereferenced, or when a reference is bound to insufficiently aligned target,
  or when a method or constructor is invoked on insufficiently aligned object.
! .IP "\fB\-fsanitize=object\-size\fR" 4
  .IX Item "-fsanitize=object-size"
  This option enables instrumentation of memory references using the
  \&\f(CW\*(C`_\|_builtin_dynamic_object_size\*(C'\fR function.  Various out of bounds
  pointer accesses are detected.
! .IP "\fB\-fsanitize=float\-divide\-by\-zero\fR" 4
  .IX Item "-fsanitize=float-divide-by-zero"
! Detect floating-point division by zero.  Unlike other similar options,
  \&\fB\-fsanitize=float\-divide\-by\-zero\fR is not enabled by
! \&\fB\-fsanitize=undefined\fR, since floating-point division by zero can
  be a legitimate way of obtaining infinities and NaNs.
! .IP "\fB\-fsanitize=float\-cast\-overflow\fR" 4
  .IX Item "-fsanitize=float-cast-overflow"
! This option enables floating-point type to integer conversion checking.
  We check that the result of the conversion does not overflow.
  Unlike other similar options, \fB\-fsanitize=float\-cast\-overflow\fR is
  not enabled by \fB\-fsanitize=undefined\fR.
  This option does not work well with \f(CW\*(C`FE_INVALID\*(C'\fR exceptions enabled.
! .IP "\fB\-fsanitize=nonnull\-attribute\fR" 4
  .IX Item "-fsanitize=nonnull-attribute"
  This option enables instrumentation of calls, checking whether null values
! are not passed to arguments marked as requiring a non-null value by the
  \&\f(CW\*(C`nonnull\*(C'\fR function attribute.
! .IP "\fB\-fsanitize=returns\-nonnull\-attribute\fR" 4
  .IX Item "-fsanitize=returns-nonnull-attribute"
  This option enables instrumentation of return statements in functions
  marked with \f(CW\*(C`returns_nonnull\*(C'\fR function attribute, to detect returning
  of null values from such functions.
! .IP "\fB\-fsanitize=bool\fR" 4
  .IX Item "-fsanitize=bool"
  This option enables instrumentation of loads from bool.  If a value other
! than 0/1 is loaded, a run-time error is issued.
! .IP "\fB\-fsanitize=enum\fR" 4
  .IX Item "-fsanitize=enum"
  This option enables instrumentation of loads from an enum type.  If
  a value outside the range of values for the enum type is loaded,
! a run-time error is issued.
! .IP "\fB\-fsanitize=vptr\fR" 4
  .IX Item "-fsanitize=vptr"
! This option enables instrumentation of \*(C+ member function calls, member
  accesses and some conversions between pointers to base and derived classes,
  to verify the referenced object has the correct dynamic type.
! .IP "\fB\-fsanitize=pointer\-overflow\fR" 4
  .IX Item "-fsanitize=pointer-overflow"
  This option enables instrumentation of pointer arithmetics.  If the pointer
! arithmetics overflows, a run-time error is issued.
! .IP "\fB\-fsanitize=builtin\fR" 4
  .IX Item "-fsanitize=builtin"
  This option enables instrumentation of arguments to selected builtin
! functions.  If an invalid value is passed to such arguments, a run-time
  error is issued.  E.g. passing 0 as the argument to \f(CW\*(C`_\|_builtin_ctz\*(C'\fR
  or \f(CW\*(C`_\|_builtin_clz\*(C'\fR invokes undefined behavior and is diagnosed
  by this option.
--- 17088,17162 ----
  \&        signed char a = SCHAR_MAX;
  \&        a++;
  .Ve
! .IP \fB\-fsanitize=bounds\fR 4
  .IX Item "-fsanitize=bounds"
  This option enables instrumentation of array bounds.  Various out of bounds
! accesses are detected.  Flexible array members, flexible array member\-like
  arrays, and initializers of variables with static storage are not
! instrumented, with the exception of flexible array member\-like arrays
  for which \f(CW\*(C`\-fstrict\-flex\-arrays\*(C'\fR or \f(CW\*(C`\-fstrict\-flex\-arrays=\*(C'\fR
! options or \f(CW\*(C`strict_flex_array\*(C'\fR attributes say they shouldn\*(Aqt be treated
! like flexible array member\-like arrays.
! .IP \fB\-fsanitize=bounds\-strict\fR 4
  .IX Item "-fsanitize=bounds-strict"
  This option enables strict instrumentation of array bounds.  Most out of bounds
! accesses are detected, including flexible array member\-like arrays.
  Initializers of variables with static storage are not instrumented.
! .IP \fB\-fsanitize=alignment\fR 4
  .IX Item "-fsanitize=alignment"
  This option enables checking of alignment of pointers when they are
  dereferenced, or when a reference is bound to insufficiently aligned target,
  or when a method or constructor is invoked on insufficiently aligned object.
! .IP \fB\-fsanitize=object\-size\fR 4
  .IX Item "-fsanitize=object-size"
  This option enables instrumentation of memory references using the
  \&\f(CW\*(C`_\|_builtin_dynamic_object_size\*(C'\fR function.  Various out of bounds
  pointer accesses are detected.
! .IP \fB\-fsanitize=float\-divide\-by\-zero\fR 4
  .IX Item "-fsanitize=float-divide-by-zero"
! Detect floating\-point division by zero.  Unlike other similar options,
  \&\fB\-fsanitize=float\-divide\-by\-zero\fR is not enabled by
! \&\fB\-fsanitize=undefined\fR, since floating\-point division by zero can
  be a legitimate way of obtaining infinities and NaNs.
! .IP \fB\-fsanitize=float\-cast\-overflow\fR 4
  .IX Item "-fsanitize=float-cast-overflow"
! This option enables floating\-point type to integer conversion checking.
  We check that the result of the conversion does not overflow.
  Unlike other similar options, \fB\-fsanitize=float\-cast\-overflow\fR is
  not enabled by \fB\-fsanitize=undefined\fR.
  This option does not work well with \f(CW\*(C`FE_INVALID\*(C'\fR exceptions enabled.
! .IP \fB\-fsanitize=nonnull\-attribute\fR 4
  .IX Item "-fsanitize=nonnull-attribute"
  This option enables instrumentation of calls, checking whether null values
! are not passed to arguments marked as requiring a non\-null value by the
  \&\f(CW\*(C`nonnull\*(C'\fR function attribute.
! .IP \fB\-fsanitize=returns\-nonnull\-attribute\fR 4
  .IX Item "-fsanitize=returns-nonnull-attribute"
  This option enables instrumentation of return statements in functions
  marked with \f(CW\*(C`returns_nonnull\*(C'\fR function attribute, to detect returning
  of null values from such functions.
! .IP \fB\-fsanitize=bool\fR 4
  .IX Item "-fsanitize=bool"
  This option enables instrumentation of loads from bool.  If a value other
! than 0/1 is loaded, a run\-time error is issued.
! .IP \fB\-fsanitize=enum\fR 4
  .IX Item "-fsanitize=enum"
  This option enables instrumentation of loads from an enum type.  If
  a value outside the range of values for the enum type is loaded,
! a run\-time error is issued.
! .IP \fB\-fsanitize=vptr\fR 4
  .IX Item "-fsanitize=vptr"
! This option enables instrumentation of C++ member function calls, member
  accesses and some conversions between pointers to base and derived classes,
  to verify the referenced object has the correct dynamic type.
! .IP \fB\-fsanitize=pointer\-overflow\fR 4
  .IX Item "-fsanitize=pointer-overflow"
  This option enables instrumentation of pointer arithmetics.  If the pointer
! arithmetics overflows, a run\-time error is issued.
! .IP \fB\-fsanitize=builtin\fR 4
  .IX Item "-fsanitize=builtin"
  This option enables instrumentation of arguments to selected builtin
! functions.  If an invalid value is passed to such arguments, a run\-time
  error is issued.  E.g. passing 0 as the argument to \f(CW\*(C`_\|_builtin_ctz\*(C'\fR
  or \f(CW\*(C`_\|_builtin_clz\*(C'\fR invokes undefined behavior and is diagnosed
  by this option.
*************** While \fB\-ftrapv\fR causes traps for si
*** 17237,17260 ****
  \&\fB\-fsanitize=undefined\fR gives a diagnostic message.
  This currently works only for the C family of languages.
  .RE
! .IP "\fB\-fno\-sanitize=all\fR" 4
  .IX Item "-fno-sanitize=all"
  This option disables all previously enabled sanitizers.
  \&\fB\-fsanitize=all\fR is not allowed, as some sanitizers cannot be used
  together.
! .IP "\fB\-fasan\-shadow\-offset=\fR\fInumber\fR" 4
  .IX Item "-fasan-shadow-offset=number"
! This option forces \s-1GCC\s0 to use custom shadow offset in AddressSanitizer checks.
  It is useful for experimenting with different shadow memory layouts in
  Kernel AddressSanitizer.
! .IP "\fB\-fsanitize\-sections=\fR\fIs1\fR\fB,\fR\fIs2\fR\fB,...\fR" 4
  .IX Item "-fsanitize-sections=s1,s2,..."
! Sanitize global variables in selected user-defined sections.  \fIsi\fR may
  contain wildcards.
! .IP "\fB\-fsanitize\-recover\fR[\fB=\fR\fIopts\fR]" 4
  .IX Item "-fsanitize-recover[=opts]"
  \&\fB\-fsanitize\-recover=\fR controls error recovery mode for sanitizers
! mentioned in comma-separated list of \fIopts\fR.  Enabling this option
  for a sanitizer component causes it to attempt to continue
  running the program as if no error happened.  This means multiple
  runtime errors can be reported in a single program run, and the exit
--- 17172,17195 ----
  \&\fB\-fsanitize=undefined\fR gives a diagnostic message.
  This currently works only for the C family of languages.
  .RE
! .IP \fB\-fno\-sanitize=all\fR 4
  .IX Item "-fno-sanitize=all"
  This option disables all previously enabled sanitizers.
  \&\fB\-fsanitize=all\fR is not allowed, as some sanitizers cannot be used
  together.
! .IP \fB\-fasan\-shadow\-offset=\fR\fInumber\fR 4
  .IX Item "-fasan-shadow-offset=number"
! This option forces GCC to use custom shadow offset in AddressSanitizer checks.
  It is useful for experimenting with different shadow memory layouts in
  Kernel AddressSanitizer.
! .IP \fB\-fsanitize\-sections=\fR\fIs1\fR\fB,\fR\fIs2\fR\fB,...\fR 4
  .IX Item "-fsanitize-sections=s1,s2,..."
! Sanitize global variables in selected user\-defined sections.  \fIsi\fR may
  contain wildcards.
! .IP \fB\-fsanitize\-recover\fR[\fB=\fR\fIopts\fR] 4
  .IX Item "-fsanitize-recover[=opts]"
  \&\fB\-fsanitize\-recover=\fR controls error recovery mode for sanitizers
! mentioned in comma\-separated list of \fIopts\fR.  Enabling this option
  for a sanitizer component causes it to attempt to continue
  running the program as if no error happened.  This means multiple
  runtime errors can be reported in a single program run, and the exit
*************** code of the program may indicate success
*** 17262,17268 ****
  have been reported.  The \fB\-fno\-sanitize\-recover=\fR option
  can be used to alter
  this behavior: only the first detected error is reported
! and program then exits with a non-zero exit code.
  .Sp
  Currently this feature only works for \fB\-fsanitize=undefined\fR (and its suboptions
  except for \fB\-fsanitize=unreachable\fR and \fB\-fsanitize=return\fR),
--- 17197,17203 ----
  have been reported.  The \fB\-fno\-sanitize\-recover=\fR option
  can be used to alter
  this behavior: only the first detected error is reported
! and program then exits with a non\-zero exit code.
  .Sp
  Currently this feature only works for \fB\-fsanitize=undefined\fR (and its suboptions
  except for \fB\-fsanitize=unreachable\fR and \fB\-fsanitize=return\fR),
*************** equivalent to specifying an \fIopts\fR l
*** 17288,17301 ****
  .Vb 1
  \&        undefined,float\-cast\-overflow,float\-divide\-by\-zero,bounds\-strict
  .Ve
! .IP "\fB\-fsanitize\-address\-use\-after\-scope\fR" 4
  .IX Item "-fsanitize-address-use-after-scope"
! Enable sanitization of local variables to detect use-after-scope bugs.
  The option sets \fB\-fstack\-reuse\fR to \fBnone\fR.
! .IP "\fB\-fsanitize\-trap\fR[\fB=\fR\fIopts\fR]" 4
  .IX Item "-fsanitize-trap[=opts]"
  The \fB\-fsanitize\-trap=\fR option instructs the compiler to
! report for sanitizers mentioned in comma-separated list of \fIopts\fR
  undefined behavior using \f(CW\*(C`_\|_builtin_trap\*(C'\fR rather than a \f(CW\*(C`libubsan\*(C'\fR
  library routine.  If this option is enabled for certain sanitizer,
  it takes precedence over the \fB\-fsanitizer\-recover=\fR for that
--- 17223,17236 ----
  .Vb 1
  \&        undefined,float\-cast\-overflow,float\-divide\-by\-zero,bounds\-strict
  .Ve
! .IP \fB\-fsanitize\-address\-use\-after\-scope\fR 4
  .IX Item "-fsanitize-address-use-after-scope"
! Enable sanitization of local variables to detect use\-after\-scope bugs.
  The option sets \fB\-fstack\-reuse\fR to \fBnone\fR.
! .IP \fB\-fsanitize\-trap\fR[\fB=\fR\fIopts\fR] 4
  .IX Item "-fsanitize-trap[=opts]"
  The \fB\-fsanitize\-trap=\fR option instructs the compiler to
! report for sanitizers mentioned in comma\-separated list of \fIopts\fR
  undefined behavior using \f(CW\*(C`_\|_builtin_trap\*(C'\fR rather than a \f(CW\*(C`libubsan\*(C'\fR
  library routine.  If this option is enabled for certain sanitizer,
  it takes precedence over the \fB\-fsanitizer\-recover=\fR for that
*************** If \f(CW\*(C`\-fsanitize\-trap=undefined
*** 17317,17331 ****
  and \f(CW\*(C`\-fsanitize=vptr\*(C'\fR is enabled on the command line, the
  instrumentation is silently ignored as the instrumentation always needs
  \&\f(CW\*(C`libubsan\*(C'\fR support, \fB\-fsanitize\-trap=vptr\fR is not allowed.
! .IP "\fB\-fsanitize\-undefined\-trap\-on\-error\fR" 4
  .IX Item "-fsanitize-undefined-trap-on-error"
  The \fB\-fsanitize\-undefined\-trap\-on\-error\fR option is deprecated
  equivalent of \fB\-fsanitize\-trap=all\fR.
! .IP "\fB\-fsanitize\-coverage=trace\-pc\fR" 4
  .IX Item "-fsanitize-coverage=trace-pc"
! Enable coverage-guided fuzzing code instrumentation.
  Inserts a call to \f(CW\*(C`_\|_sanitizer_cov_trace_pc\*(C'\fR into every basic block.
! .IP "\fB\-fsanitize\-coverage=trace\-cmp\fR" 4
  .IX Item "-fsanitize-coverage=trace-cmp"
  Enable dataflow guided fuzzing code instrumentation.
  Inserts a call to \f(CW\*(C`_\|_sanitizer_cov_trace_cmp1\*(C'\fR,
--- 17252,17266 ----
  and \f(CW\*(C`\-fsanitize=vptr\*(C'\fR is enabled on the command line, the
  instrumentation is silently ignored as the instrumentation always needs
  \&\f(CW\*(C`libubsan\*(C'\fR support, \fB\-fsanitize\-trap=vptr\fR is not allowed.
! .IP \fB\-fsanitize\-undefined\-trap\-on\-error\fR 4
  .IX Item "-fsanitize-undefined-trap-on-error"
  The \fB\-fsanitize\-undefined\-trap\-on\-error\fR option is deprecated
  equivalent of \fB\-fsanitize\-trap=all\fR.
! .IP \fB\-fsanitize\-coverage=trace\-pc\fR 4
  .IX Item "-fsanitize-coverage=trace-pc"
! Enable coverage\-guided fuzzing code instrumentation.
  Inserts a call to \f(CW\*(C`_\|_sanitizer_cov_trace_pc\*(C'\fR into every basic block.
! .IP \fB\-fsanitize\-coverage=trace\-cmp\fR 4
  .IX Item "-fsanitize-coverage=trace-cmp"
  Enable dataflow guided fuzzing code instrumentation.
  Inserts a call to \f(CW\*(C`_\|_sanitizer_cov_trace_cmp1\*(C'\fR,
*************** variable or \f(CW\*(C`_\|_sanitizer_cov_
*** 17338,17361 ****
  operand constant, \f(CW\*(C`_\|_sanitizer_cov_trace_cmpf\*(C'\fR or
  \&\f(CW\*(C`_\|_sanitizer_cov_trace_cmpd\*(C'\fR for float or double comparisons and
  \&\f(CW\*(C`_\|_sanitizer_cov_trace_switch\*(C'\fR for switch statements.
! .IP "\fB\-fcf\-protection=\fR[\fBfull\fR|\fBbranch\fR|\fBreturn\fR|\fBnone\fR|\fBcheck\fR]" 4
  .IX Item "-fcf-protection=[full|branch|return|none|check]"
  .PD 0
! .IP "\fB\-fcf\-protection\fR" 4
  .IX Item "-fcf-protection"
  .PD
  Enable code instrumentation to increase
! program security by checking that target addresses of control-flow
  transfer instructions (such as indirect function call, function return,
  indirect jump) are valid.  This prevents diverting the flow of control
  to an unexpected target.  This is intended to protect against such
! threats as Return-oriented Programming (\s-1ROP\s0), and similarly
! call/jmp\-oriented programming (\s-1COP/JOP\s0).
  .Sp
  The \fB\-fcf\-protection=\fR keywords are interpreted as follows.
  .Sp
  The value \f(CW\*(C`branch\*(C'\fR tells the compiler to implement checking of
! validity of control-flow transfer at the point of indirect branch
  instructions, i.e. call/jmp instructions.
  .Sp
  The value \f(CW\*(C`return\*(C'\fR implements checking of validity at the point of
--- 17273,17296 ----
  operand constant, \f(CW\*(C`_\|_sanitizer_cov_trace_cmpf\*(C'\fR or
  \&\f(CW\*(C`_\|_sanitizer_cov_trace_cmpd\*(C'\fR for float or double comparisons and
  \&\f(CW\*(C`_\|_sanitizer_cov_trace_switch\*(C'\fR for switch statements.
! .IP \fB\-fcf\-protection=\fR[\fBfull\fR|\fBbranch\fR|\fBreturn\fR|\fBnone\fR|\fBcheck\fR] 4
  .IX Item "-fcf-protection=[full|branch|return|none|check]"
  .PD 0
! .IP \fB\-fcf\-protection\fR 4
  .IX Item "-fcf-protection"
  .PD
  Enable code instrumentation to increase
! program security by checking that target addresses of control\-flow
  transfer instructions (such as indirect function call, function return,
  indirect jump) are valid.  This prevents diverting the flow of control
  to an unexpected target.  This is intended to protect against such
! threats as Return\-oriented Programming (ROP), and similarly
! call/jmp\-oriented programming (COP/JOP).
  .Sp
  The \fB\-fcf\-protection=\fR keywords are interpreted as follows.
  .Sp
  The value \f(CW\*(C`branch\*(C'\fR tells the compiler to implement checking of
! validity of control\-flow transfer at the point of indirect branch
  instructions, i.e. call/jmp instructions.
  .Sp
  The value \f(CW\*(C`return\*(C'\fR implements checking of validity at the point of
*************** returning from a function.
*** 17364,17371 ****
  The value \f(CW\*(C`full\*(C'\fR is an alias for specifying both
  \&\f(CW\*(C`branch\*(C'\fR and \f(CW\*(C`return\*(C'\fR.
  .Sp
! The value \f(CW\*(C`check\*(C'\fR is used for the final link with link-time
! optimization (\s-1LTO\s0).  An error is issued if \s-1LTO\s0 object files are
  compiled with different \fB\-fcf\-protection\fR values.  The
  value \f(CW\*(C`check\*(C'\fR is ignored at the compile time.
  .Sp
--- 17299,17306 ----
  The value \f(CW\*(C`full\*(C'\fR is an alias for specifying both
  \&\f(CW\*(C`branch\*(C'\fR and \f(CW\*(C`return\*(C'\fR.
  .Sp
! The value \f(CW\*(C`check\*(C'\fR is used for the final link with link\-time
! optimization (LTO).  An error is issued if LTO object files are
  compiled with different \fB\-fcf\-protection\fR values.  The
  value \f(CW\*(C`check\*(C'\fR is ignored at the compile time.
  .Sp
*************** You can also use the \f(CW\*(C`nocf_chec
*** 17385,17393 ****
  which functions and calls should be skipped from instrumentation.
  .Sp
  Currently the x86 GNU/Linux target provides an implementation based
! on Intel Control-flow Enforcement Technology (\s-1CET\s0) which works for
  i686 processor or newer.
! .IP "\fB\-fharden\-compares\fR" 4
  .IX Item "-fharden-compares"
  For every logical test that survives gimple optimizations and is
  \&\fInot\fR the condition in a conditional branch (for example,
--- 17320,17328 ----
  which functions and calls should be skipped from instrumentation.
  .Sp
  Currently the x86 GNU/Linux target provides an implementation based
! on Intel Control\-flow Enforcement Technology (CET) which works for
  i686 processor or newer.
! .IP \fB\-fharden\-compares\fR 4
  .IX Item "-fharden-compares"
  For every logical test that survives gimple optimizations and is
  \&\fInot\fR the condition in a conditional branch (for example,
*************** variables), emit extra code to compute a
*** 17396,17409 ****
  condition, and to call \f(CW\*(C`_\|_builtin_trap\*(C'\fR if the results do not
  match.  Use with \fB\-fharden\-conditional\-branches\fR to cover all
  conditionals.
! .IP "\fB\-fharden\-conditional\-branches\fR" 4
  .IX Item "-fharden-conditional-branches"
! For every non-vectorized conditional branch that survives gimple
  optimizations, emit extra code to compute and verify the reversed
  condition, and to call \f(CW\*(C`_\|_builtin_trap\*(C'\fR if the result is
  unexpected.  Use with \fB\-fharden\-compares\fR to cover all
  conditionals.
! .IP "\fB\-fharden\-control\-flow\-redundancy\fR" 4
  .IX Item "-fharden-control-flow-redundancy"
  Emit extra code to set booleans when entering basic blocks, and to
  verify and trap, at function exits, when the booleans do not form an
--- 17331,17344 ----
  condition, and to call \f(CW\*(C`_\|_builtin_trap\*(C'\fR if the results do not
  match.  Use with \fB\-fharden\-conditional\-branches\fR to cover all
  conditionals.
! .IP \fB\-fharden\-conditional\-branches\fR 4
  .IX Item "-fharden-conditional-branches"
! For every non\-vectorized conditional branch that survives gimple
  optimizations, emit extra code to compute and verify the reversed
  condition, and to call \f(CW\*(C`_\|_builtin_trap\*(C'\fR if the result is
  unexpected.  Use with \fB\-fharden\-compares\fR to cover all
  conditionals.
! .IP \fB\-fharden\-control\-flow\-redundancy\fR 4
  .IX Item "-fharden-control-flow-redundancy"
  Emit extra code to set booleans when entering basic blocks, and to
  verify and trap, at function exits, when the booleans do not form an
*************** Verification takes place before returns,
*** 17414,17457 ****
  \&\fB\-fhardcfr\-check\-exceptions\fR, before returning calls with
  \&\fB\-fhardcfr\-check\-returning\-calls\fR, and before noreturn calls with
  \&\fB\-fhardcfr\-check\-noreturn\-calls\fR).  Tuning options
! \&\fB\-\-param hardcfr-max-blocks\fR and \fB\-\-param
! hardcfr-max-inline-blocks\fR are available.
  .Sp
  Tail call optimization takes place too late to affect control flow
  redundancy, but calls annotated as mandatory tail calls by language
! front-ends, and any calls marked early enough as potential tail calls
  would also have verification issued before the call, but these
  possibilities are merely theoretical, as these conditions can only be
  met when using custom compiler plugins.
! .IP "\fB\-fhardcfr\-skip\-leaf\fR" 4
  .IX Item "-fhardcfr-skip-leaf"
  Disable \fB\-fharden\-control\-flow\-redundancy\fR in leaf functions.
! .IP "\fB\-fhardcfr\-check\-exceptions\fR" 4
  .IX Item "-fhardcfr-check-exceptions"
  When \fB\-fharden\-control\-flow\-redundancy\fR is active, check the
  recorded execution path against the control flow graph at exception
  escape points, as if the function body was wrapped with a cleanup
  handler that performed the check and reraised.  This option is enabled
  by default; use \fB\-fno\-hardcfr\-check\-exceptions\fR to disable it.
! .IP "\fB\-fhardcfr\-check\-returning\-calls\fR" 4
  .IX Item "-fhardcfr-check-returning-calls"
  When \fB\-fharden\-control\-flow\-redundancy\fR is active, check the
  recorded execution path against the control flow graph before any
  function call immediately followed by a return of its result, if any, so
! as to not prevent tail-call optimization, whether or not it is
  ultimately optimized to a tail call.
  .Sp
  This option is enabled by default whenever sibling call optimizations
  are enabled (see \fB\-foptimize\-sibling\-calls\fR), but it can be
  enabled (or disabled, using its negated form) explicitly, regardless of
  the optimizations.
! .IP "\fB\-fhardcfr\-check\-noreturn\-calls=\fR[\fBalways\fR|\fBno-xthrow\fR|\fBnothrow\fR|\fBnever\fR]" 4
  .IX Item "-fhardcfr-check-noreturn-calls=[always|no-xthrow|nothrow|never]"
  When \fB\-fharden\-control\-flow\-redundancy\fR is active, check the
  recorded execution path against the control flow graph before
  \&\f(CW\*(C`noreturn\*(C'\fR calls, either all of them (\fBalways\fR), those that
! aren't expected to return control to the caller through an exception
! (\fBno-xthrow\fR, the default), those that may not return control to
  the caller through an exception either (\fBnothrow\fR), or none of
  them (\fBnever\fR).
  .Sp
--- 17349,17392 ----
  \&\fB\-fhardcfr\-check\-exceptions\fR, before returning calls with
  \&\fB\-fhardcfr\-check\-returning\-calls\fR, and before noreturn calls with
  \&\fB\-fhardcfr\-check\-noreturn\-calls\fR).  Tuning options
! \&\fB\-\-param hardcfr\-max\-blocks\fR and \fB\-\-param
! hardcfr\-max\-inline\-blocks\fR are available.
  .Sp
  Tail call optimization takes place too late to affect control flow
  redundancy, but calls annotated as mandatory tail calls by language
! front\-ends, and any calls marked early enough as potential tail calls
  would also have verification issued before the call, but these
  possibilities are merely theoretical, as these conditions can only be
  met when using custom compiler plugins.
! .IP \fB\-fhardcfr\-skip\-leaf\fR 4
  .IX Item "-fhardcfr-skip-leaf"
  Disable \fB\-fharden\-control\-flow\-redundancy\fR in leaf functions.
! .IP \fB\-fhardcfr\-check\-exceptions\fR 4
  .IX Item "-fhardcfr-check-exceptions"
  When \fB\-fharden\-control\-flow\-redundancy\fR is active, check the
  recorded execution path against the control flow graph at exception
  escape points, as if the function body was wrapped with a cleanup
  handler that performed the check and reraised.  This option is enabled
  by default; use \fB\-fno\-hardcfr\-check\-exceptions\fR to disable it.
! .IP \fB\-fhardcfr\-check\-returning\-calls\fR 4
  .IX Item "-fhardcfr-check-returning-calls"
  When \fB\-fharden\-control\-flow\-redundancy\fR is active, check the
  recorded execution path against the control flow graph before any
  function call immediately followed by a return of its result, if any, so
! as to not prevent tail\-call optimization, whether or not it is
  ultimately optimized to a tail call.
  .Sp
  This option is enabled by default whenever sibling call optimizations
  are enabled (see \fB\-foptimize\-sibling\-calls\fR), but it can be
  enabled (or disabled, using its negated form) explicitly, regardless of
  the optimizations.
! .IP \fB\-fhardcfr\-check\-noreturn\-calls=\fR[\fBalways\fR|\fBno\-xthrow\fR|\fBnothrow\fR|\fBnever\fR] 4
  .IX Item "-fhardcfr-check-noreturn-calls=[always|no-xthrow|nothrow|never]"
  When \fB\-fharden\-control\-flow\-redundancy\fR is active, check the
  recorded execution path against the control flow graph before
  \&\f(CW\*(C`noreturn\*(C'\fR calls, either all of them (\fBalways\fR), those that
! aren\*(Aqt expected to return control to the caller through an exception
! (\fBno\-xthrow\fR, the default), those that may not return control to
  the caller through an exception either (\fBnothrow\fR), or none of
  them (\fBnever\fR).
  .Sp
*************** the caller through an exception may caus
*** 17460,17466 ****
  than once, if the exception is caught in the caller, whether by a
  handler or a cleanup.  When \fB\-fhardcfr\-check\-exceptions\fR is also
  enabled, the compiler will avoid associating a \f(CW\*(C`noreturn\*(C'\fR call with
! the implicitly-added cleanup handler, since it would be redundant with
  the check performed before the call, but other handlers or cleanups in
  the function, if activated, will modify the recorded execution path and
  check it again when another checkpoint is hit.  The checkpoint may even
--- 17395,17401 ----
  than once, if the exception is caught in the caller, whether by a
  handler or a cleanup.  When \fB\-fhardcfr\-check\-exceptions\fR is also
  enabled, the compiler will avoid associating a \f(CW\*(C`noreturn\*(C'\fR call with
! the implicitly\-added cleanup handler, since it would be redundant with
  the check performed before the call, but other handlers or cleanups in
  the function, if activated, will modify the recorded execution path and
  check it again when another checkpoint is hit.  The checkpoint may even
*************** attributes, which may affect the placeme
*** 17473,17486 ****
  well as the addition of implicit cleanup handlers for them.  This
  unpredictability, and the fact that raising and reraising exceptions
  frequently amounts to implicitly calling \f(CW\*(C`noreturn\*(C'\fR functions, have
! made \fBno-xthrow\fR the default setting for this option: it excludes
  from the \f(CW\*(C`noreturn\*(C'\fR treatment only internal functions used to
  (re)raise exceptions, that are not affected by these optimizations.
! .IP "\fB\-fhardened\fR" 4
  .IX Item "-fhardened"
! Enable a set of flags for C and \*(C+ that improve the security of the
! generated code without affecting its \s-1ABI.\s0  The precise flags enabled
! may change between major releases of \s-1GCC,\s0 but are currently:
  .Sp
  \&\fB\-D_FORTIFY_SOURCE=3
  \&\-D_GLIBCXX_ASSERTIONS
--- 17408,17421 ----
  well as the addition of implicit cleanup handlers for them.  This
  unpredictability, and the fact that raising and reraising exceptions
  frequently amounts to implicitly calling \f(CW\*(C`noreturn\*(C'\fR functions, have
! made \fBno\-xthrow\fR the default setting for this option: it excludes
  from the \f(CW\*(C`noreturn\*(C'\fR treatment only internal functions used to
  (re)raise exceptions, that are not affected by these optimizations.
! .IP \fB\-fhardened\fR 4
  .IX Item "-fhardened"
! Enable a set of flags for C and C++ that improve the security of the
! generated code without affecting its ABI.  The precise flags enabled
! may change between major releases of GCC, but are currently:
  .Sp
  \&\fB\-D_FORTIFY_SOURCE=3
  \&\-D_GLIBCXX_ASSERTIONS
*************** in debug builds.
*** 17501,17511 ****
  .Sp
  Currently, \fB\-fhardened\fR is only supported on GNU/Linux targets.
  .Sp
! \&\fB\-fhardened\fR only enables a particular option if it wasn't
  already specified anywhere on the command line.  For instance,
  \&\fB\-fhardened\fR \fB\-fstack\-protector\fR will only enable
  \&\fB\-fstack\-protector\fR, but not \fB\-fstack\-protector\-strong\fR.
! .IP "\fB\-fstack\-protector\fR" 4
  .IX Item "-fstack-protector"
  Emit extra code to check for buffer overflows, such as stack smashing
  attacks.  This is done by adding a guard variable to functions with
--- 17436,17446 ----
  .Sp
  Currently, \fB\-fhardened\fR is only supported on GNU/Linux targets.
  .Sp
! \&\fB\-fhardened\fR only enables a particular option if it wasn\*(Aqt
  already specified anywhere on the command line.  For instance,
  \&\fB\-fhardened\fR \fB\-fstack\-protector\fR will only enable
  \&\fB\-fstack\-protector\fR, but not \fB\-fstack\-protector\-strong\fR.
! .IP \fB\-fstack\-protector\fR 4
  .IX Item "-fstack-protector"
  Emit extra code to check for buffer overflows, such as stack smashing
  attacks.  This is done by adding a guard variable to functions with
*************** initialized when a function is entered a
*** 17515,17541 ****
  exits.  If a guard check fails, an error message is printed and the program
  exits.  Only variables that are actually allocated on the stack are
  considered, optimized away variables or variables allocated in registers
! don't count.
! .IP "\fB\-fstack\-protector\-all\fR" 4
  .IX Item "-fstack-protector-all"
  Like \fB\-fstack\-protector\fR except that all functions are protected.
! .IP "\fB\-fstack\-protector\-strong\fR" 4
  .IX Item "-fstack-protector-strong"
  Like \fB\-fstack\-protector\fR but includes additional functions to
  be protected \-\-\- those that have local array definitions, or have
  references to local frame addresses.  Only variables that are actually
  allocated on the stack are considered, optimized away variables or variables
! allocated in registers don't count.
! .IP "\fB\-fstack\-protector\-explicit\fR" 4
  .IX Item "-fstack-protector-explicit"
  Like \fB\-fstack\-protector\fR but only protects those functions which
  have the \f(CW\*(C`stack_protect\*(C'\fR attribute.
! .IP "\fB\-fstack\-check\fR" 4
  .IX Item "-fstack-check"
  Generate code to verify that you do not go beyond the boundary of the
  stack.  You should specify this flag if you are running in an
  environment with multiple threads, but you only rarely need to specify it in
! a single-threaded environment since stack overflow is automatically
  detected on nearly all systems if there is only one stack.
  .Sp
  Note that this switch does not actually cause checking to be done; the
--- 17450,17476 ----
  exits.  If a guard check fails, an error message is printed and the program
  exits.  Only variables that are actually allocated on the stack are
  considered, optimized away variables or variables allocated in registers
! don\*(Aqt count.
! .IP \fB\-fstack\-protector\-all\fR 4
  .IX Item "-fstack-protector-all"
  Like \fB\-fstack\-protector\fR except that all functions are protected.
! .IP \fB\-fstack\-protector\-strong\fR 4
  .IX Item "-fstack-protector-strong"
  Like \fB\-fstack\-protector\fR but includes additional functions to
  be protected \-\-\- those that have local array definitions, or have
  references to local frame addresses.  Only variables that are actually
  allocated on the stack are considered, optimized away variables or variables
! allocated in registers don\*(Aqt count.
! .IP \fB\-fstack\-protector\-explicit\fR 4
  .IX Item "-fstack-protector-explicit"
  Like \fB\-fstack\-protector\fR but only protects those functions which
  have the \f(CW\*(C`stack_protect\*(C'\fR attribute.
! .IP \fB\-fstack\-check\fR 4
  .IX Item "-fstack-check"
  Generate code to verify that you do not go beyond the boundary of the
  stack.  You should specify this flag if you are running in an
  environment with multiple threads, but you only rarely need to specify it in
! a single\-threaded environment since stack overflow is automatically
  detected on nearly all systems if there is only one stack.
  .Sp
  Note that this switch does not actually cause checking to be done; the
*************** operating system or the language runtime
*** 17543,17581 ****
  generation of code to ensure that they see the stack being extended.
  .Sp
  You can additionally specify a string parameter: \fBno\fR means no
! checking, \fBgeneric\fR means force the use of old-style checking,
  \&\fBspecific\fR means use the best checking method and is equivalent
  to bare \fB\-fstack\-check\fR.
  .Sp
! Old-style checking is a generic mechanism that requires no specific
  target support in the compiler but comes with the following drawbacks:
  .RS 4
! .IP "1." 4
  .IX Item "1."
  Modified allocation strategy for large objects: they are always
  allocated dynamically if their size exceeds a fixed threshold.  Note this
  may change the semantics of some code.
! .IP "2." 4
  .IX Item "2."
  Fixed limit on the size of the static frame of functions: when it is
  topped by a particular function, stack checking is not reliable and
  a warning is issued by the compiler.
! .IP "3." 4
  .IX Item "3."
  Inefficiency: because of both the modified allocation strategy and the
  generic implementation, code performance is hampered.
  .RE
  .RS 4
  .Sp
! Note that old-style stack checking is also the fallback method for
  \&\fBspecific\fR if no target support has been added in the compiler.
  .Sp
! \&\fB\-fstack\-check=\fR is designed for Ada's needs to detect infinite recursion
  and stack overflows.  \fBspecific\fR is an excellent choice when compiling
! Ada code.  It is not generally sufficient to protect against stack-clash
  attacks.  To protect against those you want \fB\-fstack\-clash\-protection\fR.
  .RE
! .IP "\fB\-fstack\-clash\-protection\fR" 4
  .IX Item "-fstack-clash-protection"
  Generate code to prevent stack clash style attacks.  When this option is
  enabled, the compiler will only allocate one page of stack space at a time
--- 17478,17516 ----
  generation of code to ensure that they see the stack being extended.
  .Sp
  You can additionally specify a string parameter: \fBno\fR means no
! checking, \fBgeneric\fR means force the use of old\-style checking,
  \&\fBspecific\fR means use the best checking method and is equivalent
  to bare \fB\-fstack\-check\fR.
  .Sp
! Old\-style checking is a generic mechanism that requires no specific
  target support in the compiler but comes with the following drawbacks:
  .RS 4
! .IP 1. 4
  .IX Item "1."
  Modified allocation strategy for large objects: they are always
  allocated dynamically if their size exceeds a fixed threshold.  Note this
  may change the semantics of some code.
! .IP 2. 4
  .IX Item "2."
  Fixed limit on the size of the static frame of functions: when it is
  topped by a particular function, stack checking is not reliable and
  a warning is issued by the compiler.
! .IP 3. 4
  .IX Item "3."
  Inefficiency: because of both the modified allocation strategy and the
  generic implementation, code performance is hampered.
  .RE
  .RS 4
  .Sp
! Note that old\-style stack checking is also the fallback method for
  \&\fBspecific\fR if no target support has been added in the compiler.
  .Sp
! \&\fB\-fstack\-check=\fR is designed for Ada\*(Aqs needs to detect infinite recursion
  and stack overflows.  \fBspecific\fR is an excellent choice when compiling
! Ada code.  It is not generally sufficient to protect against stack\-clash
  attacks.  To protect against those you want \fB\-fstack\-clash\-protection\fR.
  .RE
! .IP \fB\-fstack\-clash\-protection\fR 4
  .IX Item "-fstack-clash-protection"
  Generate code to prevent stack clash style attacks.  When this option is
  enabled, the compiler will only allocate one page of stack space at a time
*************** those targets \fB\-fstack\-clash\-protec
*** 17588,17599 ****
  allocations.  \fB\-fstack\-clash\-protection\fR may also provide limited
  protection for static stack allocations if the target supports
  \&\fB\-fstack\-check=specific\fR.
! .IP "\fB\-fstack\-limit\-register=\fR\fIreg\fR" 4
  .IX Item "-fstack-limit-register=reg"
  .PD 0
! .IP "\fB\-fstack\-limit\-symbol=\fR\fIsym\fR" 4
  .IX Item "-fstack-limit-symbol=sym"
! .IP "\fB\-fno\-stack\-limit\fR" 4
  .IX Item "-fno-stack-limit"
  .PD
  Generate code to ensure that the stack does not grow beyond a certain value,
--- 17523,17534 ----
  allocations.  \fB\-fstack\-clash\-protection\fR may also provide limited
  protection for static stack allocations if the target supports
  \&\fB\-fstack\-check=specific\fR.
! .IP \fB\-fstack\-limit\-register=\fR\fIreg\fR 4
  .IX Item "-fstack-limit-register=reg"
  .PD 0
! .IP \fB\-fstack\-limit\-symbol=\fR\fIsym\fR 4
  .IX Item "-fstack-limit-symbol=sym"
! .IP \fB\-fno\-stack\-limit\fR 4
  .IX Item "-fno-stack-limit"
  .PD
  Generate code to ensure that the stack does not grow beyond a certain value,
*************** For instance, if the stack starts at abs
*** 17606,17616 ****
  and grows downwards, you can use the flags
  \&\fB\-fstack\-limit\-symbol=_\|_stack_limit\fR and
  \&\fB\-Wl,\-\-defsym,_\|_stack_limit=0x7ffe0000\fR to enforce a stack limit
! of 128KB.  Note that this may only work with the \s-1GNU\s0 linker.
  .Sp
  You can locally override stack limit checking by using the
  \&\f(CW\*(C`no_stack_limit\*(C'\fR function attribute.
! .IP "\fB\-fsplit\-stack\fR" 4
  .IX Item "-fsplit-stack"
  Generate code to automatically split the stack before it overflows.
  The resulting program has a discontiguous stack which can only
--- 17541,17551 ----
  and grows downwards, you can use the flags
  \&\fB\-fstack\-limit\-symbol=_\|_stack_limit\fR and
  \&\fB\-Wl,\-\-defsym,_\|_stack_limit=0x7ffe0000\fR to enforce a stack limit
! of 128KB.  Note that this may only work with the GNU linker.
  .Sp
  You can locally override stack limit checking by using the
  \&\f(CW\*(C`no_stack_limit\*(C'\fR function attribute.
! .IP \fB\-fsplit\-stack\fR 4
  .IX Item "-fsplit-stack"
  Generate code to automatically split the stack before it overflows.
  The resulting program has a discontiguous stack which can only
*************** available for the latter code to run.  I
*** 17626,17645 ****
  including library code, with \fB\-fsplit\-stack\fR is not an option,
  then the linker can fix up these calls so that the code compiled
  without \fB\-fsplit\-stack\fR always has a large stack.  Support for
! this is implemented in the gold linker in \s-1GNU\s0 binutils release 2.21
  and later.
! .IP "\fB\-fstrub=disable\fR" 4
  .IX Item "-fstrub=disable"
  Disable stack scrubbing entirely, ignoring any \f(CW\*(C`strub\*(C'\fR attributes.
  See
! .IP "\fB\-fstrub=strict\fR" 4
  .IX Item "-fstrub=strict"
  Functions default to \f(CW\*(C`strub\*(C'\fR mode \f(CW\*(C`disabled\*(C'\fR, and apply
  \&\fBstrict\fRly the restriction that only functions associated with
  \&\f(CW\*(C`strub\*(C'\fR\-\f(CW\*(C`callable\*(C'\fR modes (\f(CW\*(C`at\-calls\*(C'\fR, \f(CW\*(C`callable\*(C'\fR and
  \&\f(CW\*(C`always_inline\*(C'\fR \f(CW\*(C`internal\*(C'\fR) are \f(CW\*(C`callable\*(C'\fR by functions
  with \f(CW\*(C`strub\*(C'\fR\-enabled modes (\f(CW\*(C`at\-calls\*(C'\fR and \f(CW\*(C`internal\*(C'\fR).
! .IP "\fB\-fstrub=relaxed\fR" 4
  .IX Item "-fstrub=relaxed"
  Restore the default stack scrub (\f(CW\*(C`strub\*(C'\fR) setting, namely,
  \&\f(CW\*(C`strub\*(C'\fR is only enabled as required by \f(CW\*(C`strub\*(C'\fR attributes
--- 17561,17580 ----
  including library code, with \fB\-fsplit\-stack\fR is not an option,
  then the linker can fix up these calls so that the code compiled
  without \fB\-fsplit\-stack\fR always has a large stack.  Support for
! this is implemented in the gold linker in GNU binutils release 2.21
  and later.
! .IP \fB\-fstrub=disable\fR 4
  .IX Item "-fstrub=disable"
  Disable stack scrubbing entirely, ignoring any \f(CW\*(C`strub\*(C'\fR attributes.
  See
! .IP \fB\-fstrub=strict\fR 4
  .IX Item "-fstrub=strict"
  Functions default to \f(CW\*(C`strub\*(C'\fR mode \f(CW\*(C`disabled\*(C'\fR, and apply
  \&\fBstrict\fRly the restriction that only functions associated with
  \&\f(CW\*(C`strub\*(C'\fR\-\f(CW\*(C`callable\*(C'\fR modes (\f(CW\*(C`at\-calls\*(C'\fR, \f(CW\*(C`callable\*(C'\fR and
  \&\f(CW\*(C`always_inline\*(C'\fR \f(CW\*(C`internal\*(C'\fR) are \f(CW\*(C`callable\*(C'\fR by functions
  with \f(CW\*(C`strub\*(C'\fR\-enabled modes (\f(CW\*(C`at\-calls\*(C'\fR and \f(CW\*(C`internal\*(C'\fR).
! .IP \fB\-fstrub=relaxed\fR 4
  .IX Item "-fstrub=relaxed"
  Restore the default stack scrub (\f(CW\*(C`strub\*(C'\fR) setting, namely,
  \&\f(CW\*(C`strub\*(C'\fR is only enabled as required by \f(CW\*(C`strub\*(C'\fR attributes
*************** strub contexts are only prevented from c
*** 17648,17654 ****
  associated with \f(CW\*(C`strub\*(C'\fR mode \f(CW\*(C`disabled\*(C'\fR.  This option is only
  useful to override other \fB\-fstrub=*\fR options that precede it in
  the command line.
! .IP "\fB\-fstrub=at\-calls\fR" 4
  .IX Item "-fstrub=at-calls"
  Enable \f(CW\*(C`at\-calls\*(C'\fR \f(CW\*(C`strub\*(C'\fR mode where viable.  The primary use
  of this option is for testing.  It exercises the \f(CW\*(C`strub\*(C'\fR machinery
--- 17583,17589 ----
  associated with \f(CW\*(C`strub\*(C'\fR mode \f(CW\*(C`disabled\*(C'\fR.  This option is only
  useful to override other \fB\-fstrub=*\fR options that precede it in
  the command line.
! .IP \fB\-fstrub=at\-calls\fR 4
  .IX Item "-fstrub=at-calls"
  Enable \f(CW\*(C`at\-calls\*(C'\fR \f(CW\*(C`strub\*(C'\fR mode where viable.  The primary use
  of this option is for testing.  It exercises the \f(CW\*(C`strub\*(C'\fR machinery
*************** other translation units, or that has its
*** 17658,17680 ****
  be affected by this option.  Optimization options may also affect
  viability.  See the \f(CW\*(C`strub\*(C'\fR attribute documentation for details on
  viability and eligibility requirements.
! .IP "\fB\-fstrub=internal\fR" 4
  .IX Item "-fstrub=internal"
  Enable \f(CW\*(C`internal\*(C'\fR \f(CW\*(C`strub\*(C'\fR mode where viable.  The primary use
  of this option is for testing.  This option is intended to exercise
  thoroughly parts of the \f(CW\*(C`strub\*(C'\fR machinery that implement the less
! efficient, but interface-preserving \f(CW\*(C`strub\*(C'\fR mode.  Functions that
  would not be affected by this option are quite uncommon.
! .IP "\fB\-fstrub=all\fR" 4
  .IX Item "-fstrub=all"
  Enable some \f(CW\*(C`strub\*(C'\fR mode where viable.  When both strub modes are
  viable, \f(CW\*(C`at\-calls\*(C'\fR is preferred.  \fB\-fdump\-ipa\-strubm\fR adds
  function attributes that tell which mode was selected for each function.
  The primary use of this option is for testing, to exercise thoroughly
  the \f(CW\*(C`strub\*(C'\fR machinery.
! .IP "\fB\-fvtable\-verify=\fR[\fBstd\fR|\fBpreinit\fR|\fBnone\fR]" 4
  .IX Item "-fvtable-verify=[std|preinit|none]"
! This option is only available when compiling \*(C+ code.
  It turns on (or off, if using \fB\-fvtable\-verify=none\fR) the security
  feature that verifies at run time, for every virtual call, that
  the vtable pointer through which the call is made is valid for the type of
--- 17593,17615 ----
  be affected by this option.  Optimization options may also affect
  viability.  See the \f(CW\*(C`strub\*(C'\fR attribute documentation for details on
  viability and eligibility requirements.
! .IP \fB\-fstrub=internal\fR 4
  .IX Item "-fstrub=internal"
  Enable \f(CW\*(C`internal\*(C'\fR \f(CW\*(C`strub\*(C'\fR mode where viable.  The primary use
  of this option is for testing.  This option is intended to exercise
  thoroughly parts of the \f(CW\*(C`strub\*(C'\fR machinery that implement the less
! efficient, but interface\-preserving \f(CW\*(C`strub\*(C'\fR mode.  Functions that
  would not be affected by this option are quite uncommon.
! .IP \fB\-fstrub=all\fR 4
  .IX Item "-fstrub=all"
  Enable some \f(CW\*(C`strub\*(C'\fR mode where viable.  When both strub modes are
  viable, \f(CW\*(C`at\-calls\*(C'\fR is preferred.  \fB\-fdump\-ipa\-strubm\fR adds
  function attributes that tell which mode was selected for each function.
  The primary use of this option is for testing, to exercise thoroughly
  the \f(CW\*(C`strub\*(C'\fR machinery.
! .IP \fB\-fvtable\-verify=\fR[\fBstd\fR|\fBpreinit\fR|\fBnone\fR] 4
  .IX Item "-fvtable-verify=[std|preinit|none]"
! This option is only available when compiling C++ code.
  It turns on (or off, if using \fB\-fvtable\-verify=none\fR) the security
  feature that verifies at run time, for every virtual call, that
  the vtable pointer through which the call is made is valid for the type of
*************** the object, and has not been corrupted o
*** 17682,17688 ****
  pointer is detected at run time, an error is reported and execution of the
  program is immediately halted.
  .Sp
! This option causes run-time data structures to be built at program startup,
  which are used for verifying the vtable pointers.
  The options \fBstd\fR and \fBpreinit\fR
  control the timing of when these data structures are built.  In both cases the
--- 17617,17623 ----
  pointer is detected at run time, an error is reported and execution of the
  program is immediately halted.
  .Sp
! This option causes run\-time data structures to be built at program startup,
  which are used for verifying the vtable pointers.
  The options \fBstd\fR and \fBpreinit\fR
  control the timing of when these data structures are built.  In both cases the
*************** libraries have been loaded and initializ
*** 17695,17701 ****
  If this option appears multiple times in the command line with different
  values specified, \fBnone\fR takes highest priority over both \fBstd\fR and
  \&\fBpreinit\fR; \fBpreinit\fR takes priority over \fBstd\fR.
! .IP "\fB\-fvtv\-debug\fR" 4
  .IX Item "-fvtv-debug"
  When used in conjunction with \fB\-fvtable\-verify=std\fR or
  \&\fB\-fvtable\-verify=preinit\fR, causes debug versions of the
--- 17630,17636 ----
  If this option appears multiple times in the command line with different
  values specified, \fBnone\fR takes highest priority over both \fBstd\fR and
  \&\fBpreinit\fR; \fBpreinit\fR takes priority over \fBstd\fR.
! .IP \fB\-fvtv\-debug\fR 4
  .IX Item "-fvtv-debug"
  When used in conjunction with \fB\-fvtable\-verify=std\fR or
  \&\fB\-fvtable\-verify=preinit\fR, causes debug versions of the
*************** runtime functions for the vtable verific
*** 17703,17731 ****
  This flag also causes the compiler to log information about which
  vtable pointers it finds for each class.
  This information is written to a file named \fIvtv_set_ptr_data.log\fR
! in the directory named by the environment variable \fB\s-1VTV_LOGS_DIR\s0\fR
  if that is defined or the current working directory otherwise.
  .Sp
  Note:  This feature \fIappends\fR data to the log file. If you want a fresh log
  file, be sure to delete any existing one.
! .IP "\fB\-fvtv\-counts\fR" 4
  .IX Item "-fvtv-counts"
  This is a debugging flag.  When used in conjunction with
  \&\fB\-fvtable\-verify=std\fR or \fB\-fvtable\-verify=preinit\fR, this
  causes the compiler to keep track of the total number of virtual calls
  it encounters and the number of verifications it inserts.  It also
! counts the number of calls to certain run-time library functions
  that it inserts and logs this information for each compilation unit.
  The compiler writes this information to a file named
  \&\fIvtv_count_data.log\fR in the directory named by the environment
! variable \fB\s-1VTV_LOGS_DIR\s0\fR if that is defined or the current working
  directory otherwise.  It also counts the size of the vtable pointer sets
  for each class, and writes this information to \fIvtv_class_set_sizes.log\fR
  in the same directory.
  .Sp
  Note:  This feature \fIappends\fR data to the log files.  To get fresh log
  files, be sure to delete any existing ones.
! .IP "\fB\-finstrument\-functions\fR" 4
  .IX Item "-finstrument-functions"
  Generate instrumentation calls for entry and exit to functions.  Just
  after function entry and just before function exit, the following
--- 17638,17666 ----
  This flag also causes the compiler to log information about which
  vtable pointers it finds for each class.
  This information is written to a file named \fIvtv_set_ptr_data.log\fR
! in the directory named by the environment variable \fBVTV_LOGS_DIR\fR
  if that is defined or the current working directory otherwise.
  .Sp
  Note:  This feature \fIappends\fR data to the log file. If you want a fresh log
  file, be sure to delete any existing one.
! .IP \fB\-fvtv\-counts\fR 4
  .IX Item "-fvtv-counts"
  This is a debugging flag.  When used in conjunction with
  \&\fB\-fvtable\-verify=std\fR or \fB\-fvtable\-verify=preinit\fR, this
  causes the compiler to keep track of the total number of virtual calls
  it encounters and the number of verifications it inserts.  It also
! counts the number of calls to certain run\-time library functions
  that it inserts and logs this information for each compilation unit.
  The compiler writes this information to a file named
  \&\fIvtv_count_data.log\fR in the directory named by the environment
! variable \fBVTV_LOGS_DIR\fR if that is defined or the current working
  directory otherwise.  It also counts the size of the vtable pointer sets
  for each class, and writes this information to \fIvtv_class_set_sizes.log\fR
  in the same directory.
  .Sp
  Note:  This feature \fIappends\fR data to the log files.  To get fresh log
  files, be sure to delete any existing ones.
! .IP \fB\-finstrument\-functions\fR 4
  .IX Item "-finstrument-functions"
  Generate instrumentation calls for entry and exit to functions.  Just
  after function entry and just before function exit, the following
*************** providing static copies.)
*** 17758,17768 ****
  .Sp
  A function may be given the attribute \f(CW\*(C`no_instrument_function\*(C'\fR, in
  which case this instrumentation is not done.  This can be used, for
! example, for the profiling functions listed above, high-priority
  interrupt routines, and any functions from which the profiling functions
  cannot safely be called (perhaps signal handlers, if the profiling
  routines generate output or allocate memory).
! .IP "\fB\-finstrument\-functions\-once\fR" 4
  .IX Item "-finstrument-functions-once"
  This is similar to \fB\-finstrument\-functions\fR, but the profiling
  functions are called only once per instrumented function, i.e. the first
--- 17693,17703 ----
  .Sp
  A function may be given the attribute \f(CW\*(C`no_instrument_function\*(C'\fR, in
  which case this instrumentation is not done.  This can be used, for
! example, for the profiling functions listed above, high\-priority
  interrupt routines, and any functions from which the profiling functions
  cannot safely be called (perhaps signal handlers, if the profiling
  routines generate output or allocate memory).
! .IP \fB\-finstrument\-functions\-once\fR 4
  .IX Item "-finstrument-functions-once"
  This is similar to \fB\-finstrument\-functions\fR, but the profiling
  functions are called only once per instrumented function, i.e. the first
*************** functions are called at \fIleast\fR once
*** 17777,17783 ****
  once per thread, but the calls are always paired, that is to say, if a
  thread calls the first function, then it will call the second function,
  unless it never reaches the exit of the instrumented function.
! .IP "\fB\-finstrument\-functions\-exclude\-file\-list=\fR\fIfile\fR\fB,\fR\fIfile\fR\fB,...\fR" 4
  .IX Item "-finstrument-functions-exclude-file-list=file,file,..."
  Set the list of functions that are excluded from instrumentation (see
  the description of \fB\-finstrument\-functions\fR).  If the file that
--- 17712,17718 ----
  once per thread, but the calls are always paired, that is to say, if a
  thread calls the first function, then it will call the second function,
  unless it never reaches the exit of the instrumented function.
! .IP \fB\-finstrument\-functions\-exclude\-file\-list=\fR\fIfile\fR\fB,\fR\fIfile\fR\fB,...\fR 4
  .IX Item "-finstrument-functions-exclude-file-list=file,file,..."
  Set the list of functions that are excluded from instrumentation (see
  the description of \fB\-finstrument\-functions\fR).  If the file that
*************** contain \fI/bits/stl\fR or \fIinclude/sy
*** 17797,17848 ****
  .Sp
  If, for some reason, you want to include letter \fB,\fR in one of
  \&\fIsym\fR, write \fB,\fR. For example,
! \&\fB\-finstrument\-functions\-exclude\-file\-list=',,tmp'\fR
  (note the single quote surrounding the option).
! .IP "\fB\-finstrument\-functions\-exclude\-function\-list=\fR\fIsym\fR\fB,\fR\fIsym\fR\fB,...\fR" 4
  .IX Item "-finstrument-functions-exclude-function-list=sym,sym,..."
  This is similar to \fB\-finstrument\-functions\-exclude\-file\-list\fR,
  but this option sets the list of function names to be excluded from
! instrumentation.  The function name to be matched is its user-visible
  name, such as \f(CW\*(C`vector<int> blah(const vector<int> &)\*(C'\fR, not the
  internal mangled name (e.g., \f(CW\*(C`_Z4blahRSt6vectorIiSaIiEE\*(C'\fR).  The
  match is done on substrings: if the \fIsym\fR parameter is a substring
! of the function name, it is considered to be a match.  For C99 and \*(C+
! extended identifiers, the function name must be given in \s-1UTF\-8,\s0 not
  using universal character names.
! .IP "\fB\-fpatchable\-function\-entry=\fR\fIN\fR\fB[,\fR\fIM\fR\fB]\fR" 4
  .IX Item "-fpatchable-function-entry=N[,M]"
  Generate \fIN\fR NOPs right at the beginning
! of each function, with the function entry point before the \fIM\fRth \s-1NOP.\s0
  If \fIM\fR is omitted, it defaults to \f(CW0\fR so the
! function entry points to the address just at the first \s-1NOP.\s0
! The \s-1NOP\s0 instructions reserve extra space which can be used to patch in
  any desired instrumentation at run time, provided that the code segment
  is writable.  The amount of space is controllable indirectly via
! the number of NOPs; the \s-1NOP\s0 instruction used corresponds to the instruction
! emitted by the internal \s-1GCC\s0 back-end interface \f(CW\*(C`gen_nop\*(C'\fR.  This behavior
! is target-specific and may also depend on the architecture variant and/or
  other compilation options.
  .Sp
! For run-time identification, the starting addresses of these areas,
  which correspond to their respective function entries minus \fIM\fR,
  are additionally collected in the \f(CW\*(C`_\|_patchable_function_entries\*(C'\fR
  section of the resulting binary.
  .Sp
  Note that the value of \f(CW\*(C`_\|_attribute_\|_ ((patchable_function_entry
! (N,M)))\*(C'\fR takes precedence over command-line option
  \&\fB\-fpatchable\-function\-entry=N,M\fR.  This can be used to increase
  the area size or to remove it completely on a single function.
  If \f(CW\*(C`N=0\*(C'\fR, no pad location is recorded.
  .Sp
! The \s-1NOP\s0 instructions are inserted at\-\-\-and maybe before, depending on
  \&\fIM\fR\-\-\-the function entry address, even before the prologue.  On
! PowerPC with the ELFv2 \s-1ABI,\s0 for a function with dual entry points,
  the local entry point is this function entry address by default.  See
  the \fB\-msplit\-patch\-nops\fR option to change this.
  .Sp
  The maximum value of \fIN\fR and \fIM\fR is 65535.  On PowerPC with the
! ELFv2 \s-1ABI,\s0 for a function with dual entry points, the supported values
  for \fIM\fR are 0, 2, 6 and 14 when not using \fB\-msplit\-patch\-nops\fR.
  .SS "Options Controlling the Preprocessor"
  .IX Subsection "Options Controlling the Preprocessor"
--- 17732,17783 ----
  .Sp
  If, for some reason, you want to include letter \fB,\fR in one of
  \&\fIsym\fR, write \fB,\fR. For example,
! \&\fB\-finstrument\-functions\-exclude\-file\-list=\*(Aq,,tmp\*(Aq\fR
  (note the single quote surrounding the option).
! .IP \fB\-finstrument\-functions\-exclude\-function\-list=\fR\fIsym\fR\fB,\fR\fIsym\fR\fB,...\fR 4
  .IX Item "-finstrument-functions-exclude-function-list=sym,sym,..."
  This is similar to \fB\-finstrument\-functions\-exclude\-file\-list\fR,
  but this option sets the list of function names to be excluded from
! instrumentation.  The function name to be matched is its user\-visible
  name, such as \f(CW\*(C`vector<int> blah(const vector<int> &)\*(C'\fR, not the
  internal mangled name (e.g., \f(CW\*(C`_Z4blahRSt6vectorIiSaIiEE\*(C'\fR).  The
  match is done on substrings: if the \fIsym\fR parameter is a substring
! of the function name, it is considered to be a match.  For C99 and C++
! extended identifiers, the function name must be given in UTF\-8, not
  using universal character names.
! .IP \fB\-fpatchable\-function\-entry=\fR\fIN\fR\fB[,\fR\fIM\fR\fB]\fR 4
  .IX Item "-fpatchable-function-entry=N[,M]"
  Generate \fIN\fR NOPs right at the beginning
! of each function, with the function entry point before the \fIM\fRth NOP.
  If \fIM\fR is omitted, it defaults to \f(CW0\fR so the
! function entry points to the address just at the first NOP.
! The NOP instructions reserve extra space which can be used to patch in
  any desired instrumentation at run time, provided that the code segment
  is writable.  The amount of space is controllable indirectly via
! the number of NOPs; the NOP instruction used corresponds to the instruction
! emitted by the internal GCC back\-end interface \f(CW\*(C`gen_nop\*(C'\fR.  This behavior
! is target\-specific and may also depend on the architecture variant and/or
  other compilation options.
  .Sp
! For run\-time identification, the starting addresses of these areas,
  which correspond to their respective function entries minus \fIM\fR,
  are additionally collected in the \f(CW\*(C`_\|_patchable_function_entries\*(C'\fR
  section of the resulting binary.
  .Sp
  Note that the value of \f(CW\*(C`_\|_attribute_\|_ ((patchable_function_entry
! (N,M)))\*(C'\fR takes precedence over command\-line option
  \&\fB\-fpatchable\-function\-entry=N,M\fR.  This can be used to increase
  the area size or to remove it completely on a single function.
  If \f(CW\*(C`N=0\*(C'\fR, no pad location is recorded.
  .Sp
! The NOP instructions are inserted at\-\-\-and maybe before, depending on
  \&\fIM\fR\-\-\-the function entry address, even before the prologue.  On
! PowerPC with the ELFv2 ABI, for a function with dual entry points,
  the local entry point is this function entry address by default.  See
  the \fB\-msplit\-patch\-nops\fR option to change this.
  .Sp
  The maximum value of \fIN\fR and \fIM\fR is 65535.  On PowerPC with the
! ELFv2 ABI, for a function with dual entry points, the supported values
  for \fIM\fR are 0, 2, 6 and 14 when not using \fB\-msplit\-patch\-nops\fR.
  .SS "Options Controlling the Preprocessor"
  .IX Subsection "Options Controlling the Preprocessor"
*************** they appeared during translation phase t
*** 17869,17883 ****
  directive.  In particular, the definition is truncated by
  embedded newline characters.
  .Sp
! If you are invoking the preprocessor from a shell or shell-like
! program you may need to use the shell's quoting syntax to protect
  characters such as spaces that have a meaning in the shell syntax.
  .Sp
! If you wish to define a function-like macro on the command line, write
  its argument list with surrounding parentheses before the equals sign
  (if any).  Parentheses are meaningful to most shells, so you should
  quote the option.  With \fBsh\fR and \fBcsh\fR,
! \&\fB\-D'\fR\fIname\fR\fB(\fR\fIargs...\fR\fB)=\fR\fIdefinition\fR\fB'\fR works.
  .Sp
  \&\fB\-D\fR and \fB\-U\fR options are processed in the order they
  are given on the command line.  All \fB\-imacros\fR \fIfile\fR and
--- 17804,17818 ----
  directive.  In particular, the definition is truncated by
  embedded newline characters.
  .Sp
! If you are invoking the preprocessor from a shell or shell\-like
! program you may need to use the shell\*(Aqs quoting syntax to protect
  characters such as spaces that have a meaning in the shell syntax.
  .Sp
! If you wish to define a function\-like macro on the command line, write
  its argument list with surrounding parentheses before the equals sign
  (if any).  Parentheses are meaningful to most shells, so you should
  quote the option.  With \fBsh\fR and \fBcsh\fR,
! \&\fB\-D\*(Aq\fR\fIname\fR\fB(\fR\fIargs...\fR\fB)=\fR\fIdefinition\fR\fB\*(Aq\fR works.
  .Sp
  \&\fB\-D\fR and \fB\-U\fR options are processed in the order they
  are given on the command line.  All \fB\-imacros\fR \fIfile\fR and
*************** provided with a \fB\-D\fR option.
*** 17891,17897 ****
  .IX Item "-include file"
  Process \fIfile\fR as if \f(CW\*(C`#include "file"\*(C'\fR appeared as the first
  line of the primary source file.  However, the first directory searched
! for \fIfile\fR is the preprocessor's working directory \fIinstead of\fR
  the directory containing the main source file.  If not found there, it
  is searched for in the remainder of the \f(CW\*(C`#include "..."\*(C'\fR search
  chain as normal.
--- 17826,17832 ----
  .IX Item "-include file"
  Process \fIfile\fR as if \f(CW\*(C`#include "file"\*(C'\fR appeared as the first
  line of the primary source file.  However, the first directory searched
! for \fIfile\fR is the preprocessor\*(Aqs working directory \fIinstead of\fR
  the directory containing the main source file.  If not found there, it
  is searched for in the remainder of the \f(CW\*(C`#include "..."\*(C'\fR search
  chain as normal.
*************** processing its declarations.
*** 17907,17930 ****
  .Sp
  All files specified by \fB\-imacros\fR are processed before all files
  specified by \fB\-include\fR.
! .IP "\fB\-undef\fR" 4
  .IX Item "-undef"
! Do not predefine any system-specific or GCC-specific macros.  The
  standard predefined macros remain defined.
! .IP "\fB\-pthread\fR" 4
  .IX Item "-pthread"
! Define additional macros required for using the \s-1POSIX\s0 threads library.
  You should use this option consistently for both compilation and linking.
  This option is supported on GNU/Linux targets, most other Unix derivatives,
  and also on x86 Cygwin and MinGW targets.
! .IP "\fB\-M\fR" 4
  .IX Item "-M"
  Instead of outputting the result of preprocessing, output a rule
  suitable for \fBmake\fR describing the dependencies of the main
  source file.  The preprocessor outputs one \fBmake\fR rule containing
  the object file name for that source file, a colon, and the names of all
  the included files, including those coming from \fB\-include\fR or
! \&\fB\-imacros\fR command-line options.
  .Sp
  Unless specified explicitly (with \fB\-MT\fR or \fB\-MQ\fR), the
  object file name consists of the name of the source file with any
--- 17842,17865 ----
  .Sp
  All files specified by \fB\-imacros\fR are processed before all files
  specified by \fB\-include\fR.
! .IP \fB\-undef\fR 4
  .IX Item "-undef"
! Do not predefine any system\-specific or GCC\-specific macros.  The
  standard predefined macros remain defined.
! .IP \fB\-pthread\fR 4
  .IX Item "-pthread"
! Define additional macros required for using the POSIX threads library.
  You should use this option consistently for both compilation and linking.
  This option is supported on GNU/Linux targets, most other Unix derivatives,
  and also on x86 Cygwin and MinGW targets.
! .IP \fB\-M\fR 4
  .IX Item "-M"
  Instead of outputting the result of preprocessing, output a rule
  suitable for \fBmake\fR describing the dependencies of the main
  source file.  The preprocessor outputs one \fBmake\fR rule containing
  the object file name for that source file, a colon, and the names of all
  the included files, including those coming from \fB\-include\fR or
! \&\fB\-imacros\fR command\-line options.
  .Sp
  Unless specified explicitly (with \fB\-MT\fR or \fB\-MQ\fR), the
  object file name consists of the name of the source file with any
*************** parts removed.  If there are many includ
*** 17933,17948 ****
  split into several lines using \fB\e\fR\-newline.  The rule has no
  commands.
  .Sp
! This option does not suppress the preprocessor's debug output, such as
  \&\fB\-dM\fR.  To avoid mixing such debug output with the dependency
  rules you should explicitly specify the dependency output file with
  \&\fB\-MF\fR, or use an environment variable like
! \&\fB\s-1DEPENDENCIES_OUTPUT\s0\fR.  Debug output
  is still sent to the regular output stream as normal.
  .Sp
  Passing \fB\-M\fR to the driver implies \fB\-E\fR, and suppresses
  warnings with an implicit \fB\-w\fR.
! .IP "\fB\-MM\fR" 4
  .IX Item "-MM"
  Like \fB\-M\fR but do not mention header files that are found in
  system header directories, nor header files that are included,
--- 17868,17883 ----
  split into several lines using \fB\e\fR\-newline.  The rule has no
  commands.
  .Sp
! This option does not suppress the preprocessor\*(Aqs debug output, such as
  \&\fB\-dM\fR.  To avoid mixing such debug output with the dependency
  rules you should explicitly specify the dependency output file with
  \&\fB\-MF\fR, or use an environment variable like
! \&\fBDEPENDENCIES_OUTPUT\fR.  Debug output
  is still sent to the regular output stream as normal.
  .Sp
  Passing \fB\-M\fR to the driver implies \fB\-E\fR, and suppresses
  warnings with an implicit \fB\-w\fR.
! .IP \fB\-MM\fR 4
  .IX Item "-MM"
  Like \fB\-M\fR but do not mention header files that are found in
  system header directories, nor header files that are included,
*************** When used with the driver options \fB\-M
*** 17962,17968 ****
  \&\fB\-MF\fR overrides the default dependency output file.
  .Sp
  If \fIfile\fR is \fI\-\fR, then the dependencies are written to \fIstdout\fR.
! .IP "\fB\-MG\fR" 4
  .IX Item "-MG"
  In conjunction with an option such as \fB\-M\fR requesting
  dependency generation, \fB\-MG\fR assumes missing header files are
--- 17897,17903 ----
  \&\fB\-MF\fR overrides the default dependency output file.
  .Sp
  If \fIfile\fR is \fI\-\fR, then the dependencies are written to \fIstdout\fR.
! .IP \fB\-MG\fR 4
  .IX Item "-MG"
  In conjunction with an option such as \fB\-M\fR requesting
  dependency generation, \fB\-MG\fR assumes missing header files are
*************** also suppresses preprocessed output, as
*** 17973,17984 ****
  this useless.
  .Sp
  This feature is used in automatic updating of makefiles.
! .IP "\fB\-Mno\-modules\fR" 4
  .IX Item "-Mno-modules"
  Disable dependency generation for compiled module interfaces.
! .IP "\fB\-MP\fR" 4
  .IX Item "-MP"
! This option instructs \s-1CPP\s0 to add a phony target for each dependency
  other than the main file, causing each to depend on nothing.  These
  dummy rules work around errors \fBmake\fR gives if you remove header
  files without updating the \fIMakefile\fR to match.
--- 17908,17919 ----
  this useless.
  .Sp
  This feature is used in automatic updating of makefiles.
! .IP \fB\-Mno\-modules\fR 4
  .IX Item "-Mno-modules"
  Disable dependency generation for compiled module interfaces.
! .IP \fB\-MP\fR 4
  .IX Item "-MP"
! This option instructs CPP to add a phony target for each dependency
  other than the main file, causing each to depend on nothing.  These
  dummy rules work around errors \fBmake\fR gives if you remove header
  files without updating the \fIMakefile\fR to match.
*************** This is typical output:
*** 17993,18007 ****
  .IP "\fB\-MT\fR \fItarget\fR" 4
  .IX Item "-MT target"
  Change the target of the rule emitted by dependency generation.  By
! default \s-1CPP\s0 takes the name of the main input file, deletes any
  directory components and any file suffix such as \fB.c\fR, and
! appends the platform's usual object suffix.  The result is the target.
  .Sp
  An \fB\-MT\fR option sets the target to be exactly the string you
  specify.  If you want multiple targets, you can specify them as a single
  argument to \fB\-MT\fR, or use multiple \fB\-MT\fR options.
  .Sp
! For example, \fB\-MT\ '$(objpfx)foo.o'\fR might give
  .Sp
  .Vb 1
  \&        $(objpfx)foo.o: foo.c
--- 17928,17942 ----
  .IP "\fB\-MT\fR \fItarget\fR" 4
  .IX Item "-MT target"
  Change the target of the rule emitted by dependency generation.  By
! default CPP takes the name of the main input file, deletes any
  directory components and any file suffix such as \fB.c\fR, and
! appends the platform\*(Aqs usual object suffix.  The result is the target.
  .Sp
  An \fB\-MT\fR option sets the target to be exactly the string you
  specify.  If you want multiple targets, you can specify them as a single
  argument to \fB\-MT\fR, or use multiple \fB\-MT\fR options.
  .Sp
! For example, \fB\-MT\ \*(Aq$(objpfx)foo.o\*(Aq\fR might give
  .Sp
  .Vb 1
  \&        $(objpfx)foo.o: foo.c
*************** For example, \fB\-MT\ '$(objpfx)foo.o'\f
*** 18009,18015 ****
  .IP "\fB\-MQ\fR \fItarget\fR" 4
  .IX Item "-MQ target"
  Same as \fB\-MT\fR, but it quotes any characters which are special to
! Make.  \fB\-MQ\ '$(objpfx)foo.o'\fR gives
  .Sp
  .Vb 1
  \&        $$(objpfx)foo.o: foo.c
--- 17944,17950 ----
  .IP "\fB\-MQ\fR \fItarget\fR" 4
  .IX Item "-MQ target"
  Same as \fB\-MT\fR, but it quotes any characters which are special to
! Make.  \fB\-MQ\ \*(Aq$(objpfx)foo.o\*(Aq\fR gives
  .Sp
  .Vb 1
  \&        $$(objpfx)foo.o: foo.c
*************** Make.  \fB\-MQ\ '$(objpfx)foo.o'\fR give
*** 18017,18023 ****
  .Sp
  The default target is automatically quoted, as if it were given with
  \&\fB\-MQ\fR.
! .IP "\fB\-MD\fR" 4
  .IX Item "-MD"
  \&\fB\-MD\fR is equivalent to \fB\-M \-MF\fR \fIfile\fR, except that
  \&\fB\-E\fR is not implied.  The driver determines \fIfile\fR based on
--- 17952,17958 ----
  .Sp
  The default target is automatically quoted, as if it were given with
  \&\fB\-MQ\fR.
! .IP \fB\-MD\fR 4
  .IX Item "-MD"
  \&\fB\-MD\fR is equivalent to \fB\-M \-MF\fR \fIfile\fR, except that
  \&\fB\-E\fR is not implied.  The driver determines \fIfile\fR based on
*************** is understood to specify a target object
*** 18032,18042 ****
  .Sp
  Since \fB\-E\fR is not implied, \fB\-MD\fR can be used to generate
  a dependency output file as a side effect of the compilation process.
! .IP "\fB\-MMD\fR" 4
  .IX Item "-MMD"
  Like \fB\-MD\fR except mention only user header files, not system
  header files.
! .IP "\fB\-fpreprocessed\fR" 4
  .IX Item "-fpreprocessed"
  Indicate to the preprocessor that the input file has already been
  preprocessed.  This suppresses things like macro expansion, trigraph
--- 17967,17977 ----
  .Sp
  Since \fB\-E\fR is not implied, \fB\-MD\fR can be used to generate
  a dependency output file as a side effect of the compilation process.
! .IP \fB\-MMD\fR 4
  .IX Item "-MMD"
  Like \fB\-MD\fR except mention only user header files, not system
  header files.
! .IP \fB\-fpreprocessed\fR 4
  .IX Item "-fpreprocessed"
  Indicate to the preprocessor that the input file has already been
  preprocessed.  This suppresses things like macro expansion, trigraph
*************** a tokenizer for the front ends.
*** 18048,18060 ****
  .Sp
  \&\fB\-fpreprocessed\fR is implicit if the input file has one of the
  extensions \fB.i\fR, \fB.ii\fR or \fB.mi\fR.  These are the
! extensions that \s-1GCC\s0 uses for preprocessed files created by
  \&\fB\-save\-temps\fR.
! .IP "\fB\-fdirectives\-only\fR" 4
  .IX Item "-fdirectives-only"
  When preprocessing, handle directives, but do not expand macros.
  .Sp
! The option's behavior depends on the \fB\-E\fR and \fB\-fpreprocessed\fR
  options.
  .Sp
  With \fB\-E\fR, preprocessing is limited to the handling of directives
--- 17983,17995 ----
  .Sp
  \&\fB\-fpreprocessed\fR is implicit if the input file has one of the
  extensions \fB.i\fR, \fB.ii\fR or \fB.mi\fR.  These are the
! extensions that GCC uses for preprocessed files created by
  \&\fB\-save\-temps\fR.
! .IP \fB\-fdirectives\-only\fR 4
  .IX Item "-fdirectives-only"
  When preprocessing, handle directives, but do not expand macros.
  .Sp
! The option\*(Aqs behavior depends on the \fB\-E\fR and \fB\-fpreprocessed\fR
  options.
  .Sp
  With \fB\-E\fR, preprocessing is limited to the handling of directives
*************** files previously preprocessed with \f(CW
*** 18071,18094 ****
  With both \fB\-E\fR and \fB\-fpreprocessed\fR, the rules for
  \&\fB\-fpreprocessed\fR take precedence.  This enables full preprocessing of
  files previously preprocessed with \f(CW\*(C`\-E \-fdirectives\-only\*(C'\fR.
! .IP "\fB\-fdollars\-in\-identifiers\fR" 4
  .IX Item "-fdollars-in-identifiers"
  Accept \fB$\fR in identifiers.
! .IP "\fB\-fextended\-identifiers\fR" 4
  .IX Item "-fextended-identifiers"
  Accept universal character names and extended characters in
  identifiers.  This option is enabled by default for C99 (and later C
! standard versions) and \*(C+.
! .IP "\fB\-fno\-canonical\-system\-headers\fR" 4
  .IX Item "-fno-canonical-system-headers"
  When preprocessing, do not shorten system header paths with canonicalization.
! .IP "\fB\-fmax\-include\-depth=\fR\fIdepth\fR" 4
  .IX Item "-fmax-include-depth=depth"
  Set the maximum depth of the nested #include. The default is 200.
! .IP "\fB\-fsearch\-include\-path\fR[\fB=\fR\fIkind\fR]" 4
  .IX Item "-fsearch-include-path[=kind]"
  Look for input files on the #include path, not just the current
! directory.  This is particularly useful with \*(C+20 modules, for which
  both header units and module interface units need to be compiled
  directly:
  .Sp
--- 18006,18029 ----
  With both \fB\-E\fR and \fB\-fpreprocessed\fR, the rules for
  \&\fB\-fpreprocessed\fR take precedence.  This enables full preprocessing of
  files previously preprocessed with \f(CW\*(C`\-E \-fdirectives\-only\*(C'\fR.
! .IP \fB\-fdollars\-in\-identifiers\fR 4
  .IX Item "-fdollars-in-identifiers"
  Accept \fB$\fR in identifiers.
! .IP \fB\-fextended\-identifiers\fR 4
  .IX Item "-fextended-identifiers"
  Accept universal character names and extended characters in
  identifiers.  This option is enabled by default for C99 (and later C
! standard versions) and C++.
! .IP \fB\-fno\-canonical\-system\-headers\fR 4
  .IX Item "-fno-canonical-system-headers"
  When preprocessing, do not shorten system header paths with canonicalization.
! .IP \fB\-fmax\-include\-depth=\fR\fIdepth\fR 4
  .IX Item "-fmax-include-depth=depth"
  Set the maximum depth of the nested #include. The default is 200.
! .IP \fB\-fsearch\-include\-path\fR[\fB=\fR\fIkind\fR] 4
  .IX Item "-fsearch-include-path[=kind]"
  Look for input files on the #include path, not just the current
! directory.  This is particularly useful with C++20 modules, for which
  both header units and module interface units need to be compiled
  directly:
  .Sp
*************** directly:
*** 18096,18111 ****
  \&        g++ \-c \-std=c++20 \-fmodules \-fsearch\-include\-path bits/stdc++.h bits/std.cc
  .Ve
  .Sp
! \&\fIkind\fR defaults to \fBuser\fR, which looks on the \f(CW\*(C`#include
! "..."\*(C'\fR search path; you can also explicitly specify \fBsystem\fR
  for the \f(CW\*(C`#include <...>\*(C'\fR search path.
! .IP "\fB\-ftabstop=\fR\fIwidth\fR" 4
  .IX Item "-ftabstop=width"
  Set the distance between tab stops.  This helps the preprocessor report
  correct column numbers in warnings or errors, even if tabs appear on the
  line.  If the value is less than 1 or greater than 100, the option is
  ignored.  The default is 8.
! .IP "\fB\-ftrack\-macro\-expansion\fR[\fB=\fR\fIlevel\fR]" 4
  .IX Item "-ftrack-macro-expansion[=level]"
  Track locations of tokens across macro expansions. This allows the
  compiler to emit diagnostic about the current macro expansion stack
--- 18031,18046 ----
  \&        g++ \-c \-std=c++20 \-fmodules \-fsearch\-include\-path bits/stdc++.h bits/std.cc
  .Ve
  .Sp
! \&\fIkind\fR defaults to \fBuser\fR, which looks on the \f(CW#include
! "..."\fR search path; you can also explicitly specify \fBsystem\fR
  for the \f(CW\*(C`#include <...>\*(C'\fR search path.
! .IP \fB\-ftabstop=\fR\fIwidth\fR 4
  .IX Item "-ftabstop=width"
  Set the distance between tab stops.  This helps the preprocessor report
  correct column numbers in warnings or errors, even if tabs appear on the
  line.  If the value is less than 1 or greater than 100, the option is
  ignored.  The default is 8.
! .IP \fB\-ftrack\-macro\-expansion\fR[\fB=\fR\fIlevel\fR] 4
  .IX Item "-ftrack-macro-expansion[=level]"
  Track locations of tokens across macro expansions. This allows the
  compiler to emit diagnostic about the current macro expansion stack
*************** when a compilation error occurs in a mac
*** 18113,18193 ****
  option makes the preprocessor and the compiler consume more
  memory. The \fIlevel\fR parameter can be used to choose the level of
  precision of token location tracking thus decreasing the memory
! consumption if necessary. Value \fB0\fR of \fIlevel\fR de-activates
  this option. Value \fB1\fR tracks tokens locations in a
  degraded mode for the sake of minimal memory overhead. In this mode
  all tokens resulting from the expansion of an argument of a
! function-like macro have the same location. Value \fB2\fR tracks
  tokens locations completely. This value is the most memory hungry.
  When this option is given no argument, the default parameter value is
  \&\fB2\fR.
  .Sp
  Note that \f(CW\*(C`\-ftrack\-macro\-expansion=2\*(C'\fR is activated by default.
! .IP "\fB\-fmacro\-prefix\-map=\fR\fIold\fR\fB=\fR\fInew\fR" 4
  .IX Item "-fmacro-prefix-map=old=new"
! When preprocessing files residing in directory \fI\fIold\fI\fR,
  expand the \f(CW\*(C`_\|_FILE_\|_\*(C'\fR and \f(CW\*(C`_\|_BASE_FILE_\|_\*(C'\fR macros as if the
! files resided in directory \fI\fInew\fI\fR instead.  This can be used
  to change an absolute path to a relative path by using \fI.\fR for
  \&\fInew\fR which can result in more reproducible builds that are
  location independent.  This option also affects
  \&\f(CW\*(C`_\|_builtin_FILE()\*(C'\fR during compilation.  See also
  \&\fB\-ffile\-prefix\-map\fR and \fB\-fcanon\-prefix\-map\fR.
! .IP "\fB\-fexec\-charset=\fR\fIcharset\fR" 4
  .IX Item "-fexec-charset=charset"
  Set the execution character set, used for string and character
! constants.  The default is \s-1UTF\-8.\s0  \fIcharset\fR can be any encoding
! supported by the system's \f(CW\*(C`iconv\*(C'\fR library routine.
! .IP "\fB\-fwide\-exec\-charset=\fR\fIcharset\fR" 4
  .IX Item "-fwide-exec-charset=charset"
  Set the wide execution character set, used for wide string and
! character constants.  The default is one of \s-1UTF\-32BE, UTF\-32LE, UTF\-16BE,\s0
! or \s-1UTF\-16LE,\s0 whichever corresponds to the width of \f(CW\*(C`wchar_t\*(C'\fR and the
! big-endian or little-endian byte order being used for code generation.  As
  with \fB\-fexec\-charset\fR, \fIcharset\fR can be any encoding supported
! by the system's \f(CW\*(C`iconv\*(C'\fR library routine; however, you will have
  problems with encodings that do not fit exactly in \f(CW\*(C`wchar_t\*(C'\fR.
! .IP "\fB\-finput\-charset=\fR\fIcharset\fR" 4
  .IX Item "-finput-charset=charset"
  Set the input character set, used for translation from the character
! set of the input file to the source character set used by \s-1GCC.\s0  If the
! locale does not specify, or \s-1GCC\s0 cannot get this information from the
! locale, the default is \s-1UTF\-8.\s0  This can be overridden by either the locale
! or this command-line option.  Currently the command-line option takes
! precedence if there's a conflict.  \fIcharset\fR can be any encoding
! supported by the system's \f(CW\*(C`iconv\*(C'\fR library routine.
! .IP "\fB\-fpch\-deps\fR" 4
  .IX Item "-fpch-deps"
  When using precompiled headers, this flag
! causes the dependency-output flags to also list the files from the
! precompiled header's dependencies.  If not specified, only the
  precompiled header are listed and not the files that were used to
  create it, because those files are not consulted when a precompiled
  header is used.
! .IP "\fB\-fpch\-preprocess\fR" 4
  .IX Item "-fpch-preprocess"
  This option allows use of a precompiled header together with \fB\-E\fR.  It inserts a special \f(CW\*(C`#pragma\*(C'\fR,
! \&\f(CW\*(C`#pragma GCC pch_preprocess "\f(CIfilename\f(CW"\*(C'\fR in the output to mark
  the place where the precompiled header was found, and its \fIfilename\fR.
! When \fB\-fpreprocessed\fR is in use, \s-1GCC\s0 recognizes this \f(CW\*(C`#pragma\*(C'\fR
! and loads the \s-1PCH.\s0
  .Sp
  This option is off by default, because the resulting preprocessed output
! is only really suitable as input to \s-1GCC.\s0  It is switched on by
  \&\fB\-save\-temps\fR.
  .Sp
  You should not write this \f(CW\*(C`#pragma\*(C'\fR in your own code, but it is
! safe to edit the filename if the \s-1PCH\s0 file is available in a different
! location.  The filename may be absolute or it may be relative to \s-1GCC\s0's
  current directory.
! .IP "\fB\-fworking\-directory\fR" 4
  .IX Item "-fworking-directory"
  Enable generation of linemarkers in the preprocessor output that
  let the compiler know the current working directory at the time of
  preprocessing.  When this option is enabled, the preprocessor
  emits, after the initial linemarker, a second linemarker with the
! current working directory followed by two slashes.  \s-1GCC\s0 uses this
! directory, when it's present in the preprocessed input, as the
  directory emitted as the current working directory in some debugging
  information formats.  This option is implicitly enabled if debugging
  information is enabled, but this can be inhibited with the negated
--- 18048,18128 ----
  option makes the preprocessor and the compiler consume more
  memory. The \fIlevel\fR parameter can be used to choose the level of
  precision of token location tracking thus decreasing the memory
! consumption if necessary. Value \fB0\fR of \fIlevel\fR de\-activates
  this option. Value \fB1\fR tracks tokens locations in a
  degraded mode for the sake of minimal memory overhead. In this mode
  all tokens resulting from the expansion of an argument of a
! function\-like macro have the same location. Value \fB2\fR tracks
  tokens locations completely. This value is the most memory hungry.
  When this option is given no argument, the default parameter value is
  \&\fB2\fR.
  .Sp
  Note that \f(CW\*(C`\-ftrack\-macro\-expansion=2\*(C'\fR is activated by default.
! .IP \fB\-fmacro\-prefix\-map=\fR\fIold\fR\fB=\fR\fInew\fR 4
  .IX Item "-fmacro-prefix-map=old=new"
! When preprocessing files residing in directory \fIold\fR,
  expand the \f(CW\*(C`_\|_FILE_\|_\*(C'\fR and \f(CW\*(C`_\|_BASE_FILE_\|_\*(C'\fR macros as if the
! files resided in directory \fInew\fR instead.  This can be used
  to change an absolute path to a relative path by using \fI.\fR for
  \&\fInew\fR which can result in more reproducible builds that are
  location independent.  This option also affects
  \&\f(CW\*(C`_\|_builtin_FILE()\*(C'\fR during compilation.  See also
  \&\fB\-ffile\-prefix\-map\fR and \fB\-fcanon\-prefix\-map\fR.
! .IP \fB\-fexec\-charset=\fR\fIcharset\fR 4
  .IX Item "-fexec-charset=charset"
  Set the execution character set, used for string and character
! constants.  The default is UTF\-8.  \fIcharset\fR can be any encoding
! supported by the system\*(Aqs \f(CW\*(C`iconv\*(C'\fR library routine.
! .IP \fB\-fwide\-exec\-charset=\fR\fIcharset\fR 4
  .IX Item "-fwide-exec-charset=charset"
  Set the wide execution character set, used for wide string and
! character constants.  The default is one of UTF\-32BE, UTF\-32LE, UTF\-16BE,
! or UTF\-16LE, whichever corresponds to the width of \f(CW\*(C`wchar_t\*(C'\fR and the
! big\-endian or little\-endian byte order being used for code generation.  As
  with \fB\-fexec\-charset\fR, \fIcharset\fR can be any encoding supported
! by the system\*(Aqs \f(CW\*(C`iconv\*(C'\fR library routine; however, you will have
  problems with encodings that do not fit exactly in \f(CW\*(C`wchar_t\*(C'\fR.
! .IP \fB\-finput\-charset=\fR\fIcharset\fR 4
  .IX Item "-finput-charset=charset"
  Set the input character set, used for translation from the character
! set of the input file to the source character set used by GCC.  If the
! locale does not specify, or GCC cannot get this information from the
! locale, the default is UTF\-8.  This can be overridden by either the locale
! or this command\-line option.  Currently the command\-line option takes
! precedence if there\*(Aqs a conflict.  \fIcharset\fR can be any encoding
! supported by the system\*(Aqs \f(CW\*(C`iconv\*(C'\fR library routine.
! .IP \fB\-fpch\-deps\fR 4
  .IX Item "-fpch-deps"
  When using precompiled headers, this flag
! causes the dependency\-output flags to also list the files from the
! precompiled header\*(Aqs dependencies.  If not specified, only the
  precompiled header are listed and not the files that were used to
  create it, because those files are not consulted when a precompiled
  header is used.
! .IP \fB\-fpch\-preprocess\fR 4
  .IX Item "-fpch-preprocess"
  This option allows use of a precompiled header together with \fB\-E\fR.  It inserts a special \f(CW\*(C`#pragma\*(C'\fR,
! \&\f(CW\*(C`#pragma GCC pch_preprocess "\fR\f(CIfilename\fR\f(CW"\*(C'\fR in the output to mark
  the place where the precompiled header was found, and its \fIfilename\fR.
! When \fB\-fpreprocessed\fR is in use, GCC recognizes this \f(CW\*(C`#pragma\*(C'\fR
! and loads the PCH.
  .Sp
  This option is off by default, because the resulting preprocessed output
! is only really suitable as input to GCC.  It is switched on by
  \&\fB\-save\-temps\fR.
  .Sp
  You should not write this \f(CW\*(C`#pragma\*(C'\fR in your own code, but it is
! safe to edit the filename if the PCH file is available in a different
! location.  The filename may be absolute or it may be relative to GCC\*(Aqs
  current directory.
! .IP \fB\-fworking\-directory\fR 4
  .IX Item "-fworking-directory"
  Enable generation of linemarkers in the preprocessor output that
  let the compiler know the current working directory at the time of
  preprocessing.  When this option is enabled, the preprocessor
  emits, after the initial linemarker, a second linemarker with the
! current working directory followed by two slashes.  GCC uses this
! directory, when it\*(Aqs present in the preprocessed input, as the
  directory emitted as the current working directory in some debugging
  information formats.  This option is implicitly enabled if debugging
  information is enabled, but this can be inhibited with the negated
*************** it does not use shell special characters
*** 18204,18210 ****
  .IX Item "-A -predicate=answer"
  Cancel an assertion with the predicate \fIpredicate\fR and answer
  \&\fIanswer\fR.
! .IP "\fB\-C\fR" 4
  .IX Item "-C"
  Do not discard comments.  All comments are passed through to the output
  file, except for comments in processed directives, which are deleted
--- 18139,18145 ----
  .IX Item "-A -predicate=answer"
  Cancel an assertion with the predicate \fIpredicate\fR and answer
  \&\fIanswer\fR.
! .IP \fB\-C\fR 4
  .IX Item "-C"
  Do not discard comments.  All comments are passed through to the output
  file, except for comments in processed directives, which are deleted
*************** causes the preprocessor to treat comment
*** 18215,18258 ****
  For example, comments appearing at the start of what would be a
  directive line have the effect of turning that line into an ordinary
  source line, since the first token on the line is no longer a \fB#\fR.
! .IP "\fB\-CC\fR" 4
  .IX Item "-CC"
  Do not discard comments, including during macro expansion.  This is
  like \fB\-C\fR, except that comments contained within macros are
  also passed through to the output file where the macro is expanded.
  .Sp
  In addition to the side effects of the \fB\-C\fR option, the
! \&\fB\-CC\fR option causes all \*(C+\-style comments inside a macro
  to be converted to C\-style comments.  This is to prevent later use
  of that macro from inadvertently commenting out the remainder of
  the source line.
  .Sp
  The \fB\-CC\fR option is generally used to support lint comments.
! .IP "\fB\-P\fR" 4
  .IX Item "-P"
  Inhibit generation of linemarkers in the output from the preprocessor.
  This might be useful when running the preprocessor on something that is
  not C code, and will be sent to a program which might be confused by the
  linemarkers.
! .IP "\fB\-traditional\fR" 4
  .IX Item "-traditional"
  .PD 0
! .IP "\fB\-traditional\-cpp\fR" 4
  .IX Item "-traditional-cpp"
  .PD
! Try to imitate the behavior of pre-standard C preprocessors, as
! opposed to \s-1ISO C\s0 preprocessors.
! See the \s-1GNU CPP\s0 manual for details.
  .Sp
! Note that \s-1GCC\s0 does not otherwise attempt to emulate a pre-standard 
  C compiler, and these options are only supported with the \fB\-E\fR 
! switch, or when invoking \s-1CPP\s0 explicitly.
! .IP "\fB\-trigraphs\fR" 4
  .IX Item "-trigraphs"
! Support \s-1ISO C\s0 trigraphs.
! These are three-character sequences, all starting with \fB??\fR, that
! are defined by \s-1ISO C\s0 to stand for single characters.  For example,
! \&\fB??/\fR stands for \fB\e\fR, so \fB'??/n'\fR is a character
  constant for a newline.
  .Sp
  The nine trigraphs and their replacements are
--- 18150,18193 ----
  For example, comments appearing at the start of what would be a
  directive line have the effect of turning that line into an ordinary
  source line, since the first token on the line is no longer a \fB#\fR.
! .IP \fB\-CC\fR 4
  .IX Item "-CC"
  Do not discard comments, including during macro expansion.  This is
  like \fB\-C\fR, except that comments contained within macros are
  also passed through to the output file where the macro is expanded.
  .Sp
  In addition to the side effects of the \fB\-C\fR option, the
! \&\fB\-CC\fR option causes all C++\-style comments inside a macro
  to be converted to C\-style comments.  This is to prevent later use
  of that macro from inadvertently commenting out the remainder of
  the source line.
  .Sp
  The \fB\-CC\fR option is generally used to support lint comments.
! .IP \fB\-P\fR 4
  .IX Item "-P"
  Inhibit generation of linemarkers in the output from the preprocessor.
  This might be useful when running the preprocessor on something that is
  not C code, and will be sent to a program which might be confused by the
  linemarkers.
! .IP \fB\-traditional\fR 4
  .IX Item "-traditional"
  .PD 0
! .IP \fB\-traditional\-cpp\fR 4
  .IX Item "-traditional-cpp"
  .PD
! Try to imitate the behavior of pre\-standard C preprocessors, as
! opposed to ISO C preprocessors.
! See the GNU CPP manual for details.
  .Sp
! Note that GCC does not otherwise attempt to emulate a pre\-standard 
  C compiler, and these options are only supported with the \fB\-E\fR 
! switch, or when invoking CPP explicitly.
! .IP \fB\-trigraphs\fR 4
  .IX Item "-trigraphs"
! Support ISO C trigraphs.
! These are three\-character sequences, all starting with \fB??\fR, that
! are defined by ISO C to stand for single characters.  For example,
! \&\fB??/\fR stands for \fB\e\fR, so \fB\*(Aq??/n\*(Aq\fR is a character
  constant for a newline.
  .Sp
  The nine trigraphs and their replacements are
*************** The nine trigraphs and their replacement
*** 18262,18291 ****
  \&        Replacement:      [    ]    {    }    #    \e    ^    |    ~
  .Ve
  .Sp
! By default, \s-1GCC\s0 ignores trigraphs, but in
! standard-conforming modes it converts them.  See the \fB\-std\fR and
  \&\fB\-ansi\fR options.
! .IP "\fB\-remap\fR" 4
  .IX Item "-remap"
  Enable special code to work around file systems which only permit very
! short file names, such as MS-DOS.
! .IP "\fB\-H\fR" 4
  .IX Item "-H"
  Print the name of each header file used, in addition to other normal
  activities.  Each name is indented to show how deep in the
  \&\fB#include\fR stack it is.  Precompiled header files are also
  printed, even if they are found to be invalid; an invalid precompiled
  header file is printed with \fB...x\fR and a valid one with \fB...!\fR .
! .IP "\fB\-d\fR\fIletters\fR" 4
  .IX Item "-dletters"
  Says to make debugging dumps during compilation as specified by
  \&\fIletters\fR.  The flags documented here are those relevant to the
  preprocessor.  Other \fIletters\fR are interpreted
! by the compiler proper, or reserved for future versions of \s-1GCC,\s0 and so
  are silently ignored.  If you specify \fIletters\fR whose behavior
  conflicts, the result is undefined.
  .RS 4
! .IP "\fB\-dM\fR" 4
  .IX Item "-dM"
  Instead of the normal output, generate a list of \fB#define\fR
  directives for all the macros defined during the execution of the
--- 18197,18226 ----
  \&        Replacement:      [    ]    {    }    #    \e    ^    |    ~
  .Ve
  .Sp
! By default, GCC ignores trigraphs, but in
! standard\-conforming modes it converts them.  See the \fB\-std\fR and
  \&\fB\-ansi\fR options.
! .IP \fB\-remap\fR 4
  .IX Item "-remap"
  Enable special code to work around file systems which only permit very
! short file names, such as MS\-DOS.
! .IP \fB\-H\fR 4
  .IX Item "-H"
  Print the name of each header file used, in addition to other normal
  activities.  Each name is indented to show how deep in the
  \&\fB#include\fR stack it is.  Precompiled header files are also
  printed, even if they are found to be invalid; an invalid precompiled
  header file is printed with \fB...x\fR and a valid one with \fB...!\fR .
! .IP \fB\-d\fR\fIletters\fR 4
  .IX Item "-dletters"
  Says to make debugging dumps during compilation as specified by
  \&\fIletters\fR.  The flags documented here are those relevant to the
  preprocessor.  Other \fIletters\fR are interpreted
! by the compiler proper, or reserved for future versions of GCC, and so
  are silently ignored.  If you specify \fIletters\fR whose behavior
  conflicts, the result is undefined.
  .RS 4
! .IP \fB\-dM\fR 4
  .IX Item "-dM"
  Instead of the normal output, generate a list of \fB#define\fR
  directives for all the macros defined during the execution of the
*************** shows all the predefined macros.
*** 18301,18319 ****
  .Sp
  If you use \fB\-dM\fR without the \fB\-E\fR option, \fB\-dM\fR is
  interpreted as a synonym for \fB\-fdump\-rtl\-mach\fR.
! .IP "\fB\-dD\fR" 4
  .IX Item "-dD"
  Like \fB\-dM\fR except that it outputs \fIboth\fR the \fB#define\fR
  directives and the result of preprocessing.  Both kinds of output go to
  the standard output file.
! .IP "\fB\-dN\fR" 4
  .IX Item "-dN"
  Like \fB\-dD\fR, but emit only the macro names, not their expansions.
! .IP "\fB\-dI\fR" 4
  .IX Item "-dI"
  Output \fB#include\fR directives in addition to the result of
  preprocessing.
! .IP "\fB\-dU\fR" 4
  .IX Item "-dU"
  Like \fB\-dD\fR except that only macros that are expanded, or whose
  definedness is tested in preprocessor directives, are output; the
--- 18236,18254 ----
  .Sp
  If you use \fB\-dM\fR without the \fB\-E\fR option, \fB\-dM\fR is
  interpreted as a synonym for \fB\-fdump\-rtl\-mach\fR.
! .IP \fB\-dD\fR 4
  .IX Item "-dD"
  Like \fB\-dM\fR except that it outputs \fIboth\fR the \fB#define\fR
  directives and the result of preprocessing.  Both kinds of output go to
  the standard output file.
! .IP \fB\-dN\fR 4
  .IX Item "-dN"
  Like \fB\-dD\fR, but emit only the macro names, not their expansions.
! .IP \fB\-dI\fR 4
  .IX Item "-dI"
  Output \fB#include\fR directives in addition to the result of
  preprocessing.
! .IP \fB\-dU\fR 4
  .IX Item "-dU"
  Like \fB\-dD\fR except that only macros that are expanded, or whose
  definedness is tested in preprocessor directives, are output; the
*************** undefined at the time.
*** 18323,18363 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-fdebug\-cpp\fR" 4
  .IX Item "-fdebug-cpp"
! This option is only useful for debugging \s-1GCC.\s0  When used from \s-1CPP\s0 or with
  \&\fB\-E\fR, it dumps debugging information about location maps.  Every
  token in the output is preceded by the dump of the map its location
  belongs to.
  .Sp
! When used from \s-1GCC\s0 without \fB\-E\fR, this option has no effect.
! .IP "\fB\-Wp,\fR\fIoption\fR" 4
  .IX Item "-Wp,option"
  You can use \fB\-Wp,\fR\fIoption\fR to bypass the compiler driver
  and pass \fIoption\fR directly through to the preprocessor.  If
  \&\fIoption\fR contains commas, it is split into multiple options at the
  commas.  However, many options are modified, translated or interpreted
  by the compiler driver before being passed to the preprocessor, and
! \&\fB\-Wp\fR forcibly bypasses this phase.  The preprocessor's direct
  interface is undocumented and subject to change, so whenever possible
  you should avoid using \fB\-Wp\fR and let the driver handle the
  options instead.
  .IP "\fB\-Xpreprocessor\fR \fIoption\fR" 4
  .IX Item "-Xpreprocessor option"
  Pass \fIoption\fR as an option to the preprocessor.  You can use this to
! supply system-specific preprocessor options that \s-1GCC\s0 does not
  recognize.
  .Sp
  If you want to pass an option that takes an argument, you must use
  \&\fB\-Xpreprocessor\fR twice, once for the option and once for the argument.
! .IP "\fB\-no\-integrated\-cpp\fR" 4
  .IX Item "-no-integrated-cpp"
  Perform preprocessing as a separate pass before compilation.
! By default, \s-1GCC\s0 performs preprocessing as an integrated part of
  input tokenization and parsing.
  If this option is provided, the appropriate language front end
! (\fBcc1\fR, \fBcc1plus\fR, or \fBcc1obj\fR for C, \*(C+,
! and Objective-C, respectively) is instead invoked twice,
  once for preprocessing only and once for actual compilation
  of the preprocessed input.
  This option may be useful in conjunction with the \fB\-B\fR or
--- 18258,18298 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-fdebug\-cpp\fR 4
  .IX Item "-fdebug-cpp"
! This option is only useful for debugging GCC.  When used from CPP or with
  \&\fB\-E\fR, it dumps debugging information about location maps.  Every
  token in the output is preceded by the dump of the map its location
  belongs to.
  .Sp
! When used from GCC without \fB\-E\fR, this option has no effect.
! .IP \fB\-Wp,\fR\fIoption\fR 4
  .IX Item "-Wp,option"
  You can use \fB\-Wp,\fR\fIoption\fR to bypass the compiler driver
  and pass \fIoption\fR directly through to the preprocessor.  If
  \&\fIoption\fR contains commas, it is split into multiple options at the
  commas.  However, many options are modified, translated or interpreted
  by the compiler driver before being passed to the preprocessor, and
! \&\fB\-Wp\fR forcibly bypasses this phase.  The preprocessor\*(Aqs direct
  interface is undocumented and subject to change, so whenever possible
  you should avoid using \fB\-Wp\fR and let the driver handle the
  options instead.
  .IP "\fB\-Xpreprocessor\fR \fIoption\fR" 4
  .IX Item "-Xpreprocessor option"
  Pass \fIoption\fR as an option to the preprocessor.  You can use this to
! supply system\-specific preprocessor options that GCC does not
  recognize.
  .Sp
  If you want to pass an option that takes an argument, you must use
  \&\fB\-Xpreprocessor\fR twice, once for the option and once for the argument.
! .IP \fB\-no\-integrated\-cpp\fR 4
  .IX Item "-no-integrated-cpp"
  Perform preprocessing as a separate pass before compilation.
! By default, GCC performs preprocessing as an integrated part of
  input tokenization and parsing.
  If this option is provided, the appropriate language front end
! (\fBcc1\fR, \fBcc1plus\fR, or \fBcc1obj\fR for C, C++,
! and Objective\-C, respectively) is instead invoked twice,
  once for preprocessing only and once for actual compilation
  of the preprocessed input.
  This option may be useful in conjunction with the \fB\-B\fR or
*************** normal preprocessing and compilation.
*** 18367,18380 ****
  .SS "Passing Options to the Assembler"
  .IX Subsection "Passing Options to the Assembler"
  You can pass options to the assembler.
! .IP "\fB\-Wa,\fR\fIoption\fR" 4
  .IX Item "-Wa,option"
  Pass \fIoption\fR as an option to the assembler.  If \fIoption\fR
  contains commas, it is split into multiple options at the commas.
  .IP "\fB\-Xassembler\fR \fIoption\fR" 4
  .IX Item "-Xassembler option"
  Pass \fIoption\fR as an option to the assembler.  You can use this to
! supply system-specific assembler options that \s-1GCC\s0 does not
  recognize.
  .Sp
  If you want to pass an option that takes an argument, you must use
--- 18302,18315 ----
  .SS "Passing Options to the Assembler"
  .IX Subsection "Passing Options to the Assembler"
  You can pass options to the assembler.
! .IP \fB\-Wa,\fR\fIoption\fR 4
  .IX Item "-Wa,option"
  Pass \fIoption\fR as an option to the assembler.  If \fIoption\fR
  contains commas, it is split into multiple options at the commas.
  .IP "\fB\-Xassembler\fR \fIoption\fR" 4
  .IX Item "-Xassembler option"
  Pass \fIoption\fR as an option to the assembler.  You can use this to
! supply system\-specific assembler options that GCC does not
  recognize.
  .Sp
  If you want to pass an option that takes an argument, you must use
*************** If you want to pass an option that takes
*** 18384,18412 ****
  These options come into play when the compiler links object files into
  an executable output file.  They are meaningless if the compiler is
  not doing a link step.
! .IP "\fIobject-file-name\fR" 4
  .IX Item "object-file-name"
  A file name that does not end in a special recognized suffix is
  considered to name an object file or library.  (Object files are
  distinguished from libraries by the linker according to the file
  contents.)  If linking is done, these object files are used as input
  to the linker.
! .IP "\fB\-c\fR" 4
  .IX Item "-c"
  .PD 0
! .IP "\fB\-S\fR" 4
  .IX Item "-S"
! .IP "\fB\-E\fR" 4
  .IX Item "-E"
  .PD
  If any of these options is used, then the linker is not run, and
  object file names should not be used as arguments.
! .IP "\fB\-flinker\-output=\fR\fItype\fR" 4
  .IX Item "-flinker-output=type"
! This option controls code generation of the link-time optimizer.  By
  default the linker output is automatically determined by the linker
  plugin.  For debugging the compiler and if incremental linking with a
! non-LTO object file is desired, it may be useful to control the type
  manually.
  .Sp
  If \fItype\fR is \fBexec\fR, code generation produces a static
--- 18319,18347 ----
  These options come into play when the compiler links object files into
  an executable output file.  They are meaningless if the compiler is
  not doing a link step.
! .IP \fIobject\-file\-name\fR 4
  .IX Item "object-file-name"
  A file name that does not end in a special recognized suffix is
  considered to name an object file or library.  (Object files are
  distinguished from libraries by the linker according to the file
  contents.)  If linking is done, these object files are used as input
  to the linker.
! .IP \fB\-c\fR 4
  .IX Item "-c"
  .PD 0
! .IP \fB\-S\fR 4
  .IX Item "-S"
! .IP \fB\-E\fR 4
  .IX Item "-E"
  .PD
  If any of these options is used, then the linker is not run, and
  object file names should not be used as arguments.
! .IP \fB\-flinker\-output=\fR\fItype\fR 4
  .IX Item "-flinker-output=type"
! This option controls code generation of the link\-time optimizer.  By
  default the linker output is automatically determined by the linker
  plugin.  For debugging the compiler and if incremental linking with a
! non\-LTO object file is desired, it may be useful to control the type
  manually.
  .Sp
  If \fItype\fR is \fBexec\fR, code generation produces a static
*************** disabled.
*** 18416,18422 ****
  If \fItype\fR is \fBdyn\fR, code generation produces a shared
  library.  In this case \fB\-fpic\fR or \fB\-fPIC\fR is preserved,
  but not enabled automatically.  This allows to build shared libraries
! without position-independent code on architectures where this is
  possible, i.e. on x86.
  .Sp
  If \fItype\fR is \fBpie\fR, code generation produces an \fB\-fpie\fR
--- 18351,18357 ----
  If \fItype\fR is \fBdyn\fR, code generation produces a shared
  library.  In this case \fB\-fpic\fR or \fB\-fPIC\fR is preserved,
  but not enabled automatically.  This allows to build shared libraries
! without position\-independent code on architectures where this is
  possible, i.e. on x86.
  .Sp
  If \fItype\fR is \fBpie\fR, code generation produces an \fB\-fpie\fR
*************** except that \fB\-fpie\fR is not disabled
*** 18425,18466 ****
  time.
  .Sp
  If \fItype\fR is \fBrel\fR, the compiler assumes that incremental linking is
! done.  The sections containing intermediate code for link-time optimization are
! merged, pre-optimized, and output to the resulting object file. In addition, if
  \&\fB\-ffat\-lto\-objects\fR is specified, binary code is produced for future
! non-LTO linking. The object file produced by incremental linking is smaller
  than a static library produced from the same object files.  At link time the
  result of incremental linking also loads faster than a static
  library assuming that the majority of objects in the library are used.
  .Sp
! Finally \fBnolto-rel\fR configures the compiler for incremental linking where
  code generation is forced, a final binary is produced, and the intermediate
! code for later link-time optimization is stripped. When multiple object files
  are linked together the resulting code is better optimized than with
! link-time optimizations disabled (for example, cross-module inlining
  happens), but most of benefits of whole program optimizations are lost.
  .Sp
  During the incremental link (by \fB\-r\fR) the linker plugin defaults to
! \&\fBrel\fR. With current interfaces to \s-1GNU\s0 Binutils it is however not
! possible to incrementally link \s-1LTO\s0 objects and non-LTO objects into a single
  mixed object file.  If any of object files in incremental link cannot
! be used for link-time optimization, the linker plugin issues a warning and
! uses \fBnolto-rel\fR. To maintain whole program optimization, it is
  recommended to link such objects into static library instead. Alternatively it
! is possible to use H.J. Lu's binutils with support for mixed objects.
! .IP "\fB\-fuse\-ld=bfd\fR" 4
  .IX Item "-fuse-ld=bfd"
  Use the \fBbfd\fR linker instead of the default linker.
! .IP "\fB\-fuse\-ld=gold\fR" 4
  .IX Item "-fuse-ld=gold"
  Use the \fBgold\fR linker instead of the default linker.
! .IP "\fB\-fuse\-ld=lld\fR" 4
  .IX Item "-fuse-ld=lld"
! Use the \s-1LLVM\s0 \fBlld\fR linker instead of the default linker.
! .IP "\fB\-fuse\-ld=mold\fR" 4
  .IX Item "-fuse-ld=mold"
  Use the Modern Linker (\fBmold\fR) instead of the default linker.
! .IP "\fB\-l\fR\fIlibrary\fR" 4
  .IX Item "-llibrary"
  .PD 0
  .IP "\fB\-l\fR \fIlibrary\fR" 4
--- 18360,18401 ----
  time.
  .Sp
  If \fItype\fR is \fBrel\fR, the compiler assumes that incremental linking is
! done.  The sections containing intermediate code for link\-time optimization are
! merged, pre\-optimized, and output to the resulting object file. In addition, if
  \&\fB\-ffat\-lto\-objects\fR is specified, binary code is produced for future
! non\-LTO linking. The object file produced by incremental linking is smaller
  than a static library produced from the same object files.  At link time the
  result of incremental linking also loads faster than a static
  library assuming that the majority of objects in the library are used.
  .Sp
! Finally \fBnolto\-rel\fR configures the compiler for incremental linking where
  code generation is forced, a final binary is produced, and the intermediate
! code for later link\-time optimization is stripped. When multiple object files
  are linked together the resulting code is better optimized than with
! link\-time optimizations disabled (for example, cross\-module inlining
  happens), but most of benefits of whole program optimizations are lost.
  .Sp
  During the incremental link (by \fB\-r\fR) the linker plugin defaults to
! \&\fBrel\fR. With current interfaces to GNU Binutils it is however not
! possible to incrementally link LTO objects and non\-LTO objects into a single
  mixed object file.  If any of object files in incremental link cannot
! be used for link\-time optimization, the linker plugin issues a warning and
! uses \fBnolto\-rel\fR. To maintain whole program optimization, it is
  recommended to link such objects into static library instead. Alternatively it
! is possible to use H.J. Lu\*(Aqs binutils with support for mixed objects.
! .IP \fB\-fuse\-ld=bfd\fR 4
  .IX Item "-fuse-ld=bfd"
  Use the \fBbfd\fR linker instead of the default linker.
! .IP \fB\-fuse\-ld=gold\fR 4
  .IX Item "-fuse-ld=gold"
  Use the \fBgold\fR linker instead of the default linker.
! .IP \fB\-fuse\-ld=lld\fR 4
  .IX Item "-fuse-ld=lld"
! Use the LLVM \fBlld\fR linker instead of the default linker.
! .IP \fB\-fuse\-ld=mold\fR 4
  .IX Item "-fuse-ld=mold"
  Use the Modern Linker (\fBmold\fR) instead of the default linker.
! .IP \fB\-l\fR\fIlibrary\fR 4
  .IX Item "-llibrary"
  .PD 0
  .IP "\fB\-l\fR \fIlibrary\fR" 4
*************** Use the Modern Linker (\fBmold\fR) inste
*** 18468,18486 ****
  .PD
  Search the library named \fIlibrary\fR when linking.  (The second
  alternative with the library as a separate argument is only for
! \&\s-1POSIX\s0 compliance and is not recommended.)
  .Sp
! The \fB\-l\fR option is passed directly to the linker by \s-1GCC.\s0  Refer
  to your linker documentation for exact details.  The general
! description below applies to the \s-1GNU\s0 linker.
  .Sp
  The linker searches a standard list of directories for the library.
  The directories searched include several standard system directories
  plus any that you specify with \fB\-L\fR.
  .Sp
  Static libraries are archives of object files, and have file names
! like \fIlib\fIlibrary\fI.a\fR.  Some targets also support shared
! libraries, which typically have names like \fIlib\fIlibrary\fI.so\fR.
  If both static and shared libraries are found, the linker gives
  preference to linking with the shared library unless the
  \&\fB\-static\fR option is used.
--- 18403,18421 ----
  .PD
  Search the library named \fIlibrary\fR when linking.  (The second
  alternative with the library as a separate argument is only for
! POSIX compliance and is not recommended.)
  .Sp
! The \fB\-l\fR option is passed directly to the linker by GCC.  Refer
  to your linker documentation for exact details.  The general
! description below applies to the GNU linker.
  .Sp
  The linker searches a standard list of directories for the library.
  The directories searched include several standard system directories
  plus any that you specify with \fB\-L\fR.
  .Sp
  Static libraries are archives of object files, and have file names
! like \fIliblibrary.a\fR.  Some targets also support shared
! libraries, which typically have names like \fIliblibrary.so\fR.
  If both static and shared libraries are found, the linker gives
  preference to linking with the shared library unless the
  \&\fB\-static\fR option is used.
*************** linker searches and processes libraries
*** 18490,18505 ****
  are specified.  Thus, \fBfoo.o \-lz bar.o\fR searches library \fBz\fR
  after file \fIfoo.o\fR but before \fIbar.o\fR.  If \fIbar.o\fR refers
  to functions in \fBz\fR, those functions may not be loaded.
! .IP "\fB\-lobjc\fR" 4
  .IX Item "-lobjc"
  You need this special case of the \fB\-l\fR option in order to
! link an Objective-C or Objective\-\*(C+ program.
! .IP "\fB\-nostartfiles\fR" 4
  .IX Item "-nostartfiles"
  Do not use the standard system startup files when linking.
  The standard system libraries are used normally, unless \fB\-nostdlib\fR,
  \&\fB\-nolibc\fR, or \fB\-nodefaultlibs\fR is used.
! .IP "\fB\-nodefaultlibs\fR" 4
  .IX Item "-nodefaultlibs"
  Do not use the standard system libraries when linking.
  Only the libraries you specify are passed to the linker, and options
--- 18425,18440 ----
  are specified.  Thus, \fBfoo.o \-lz bar.o\fR searches library \fBz\fR
  after file \fIfoo.o\fR but before \fIbar.o\fR.  If \fIbar.o\fR refers
  to functions in \fBz\fR, those functions may not be loaded.
! .IP \fB\-lobjc\fR 4
  .IX Item "-lobjc"
  You need this special case of the \fB\-l\fR option in order to
! link an Objective\-C or Objective\-C++ program.
! .IP \fB\-nostartfiles\fR 4
  .IX Item "-nostartfiles"
  Do not use the standard system startup files when linking.
  The standard system libraries are used normally, unless \fB\-nostdlib\fR,
  \&\fB\-nolibc\fR, or \fB\-nodefaultlibs\fR is used.
! .IP \fB\-nodefaultlibs\fR 4
  .IX Item "-nodefaultlibs"
  Do not use the standard system libraries when linking.
  Only the libraries you specify are passed to the linker, and options
*************** The compiler may generate calls to \f(CW
*** 18513,18519 ****
  These entries are usually resolved by entries in
  libc.  These entry points should be supplied through some other
  mechanism when this option is specified.
! .IP "\fB\-nolibc\fR" 4
  .IX Item "-nolibc"
  Do not use the C library or system libraries tightly coupled with it when
  linking.  Still link with the startup files, \fIlibgcc\fR or toolchain
--- 18448,18454 ----
  These entries are usually resolved by entries in
  libc.  These entry points should be supplied through some other
  mechanism when this option is specified.
! .IP \fB\-nolibc\fR 4
  .IX Item "-nolibc"
  Do not use the C library or system libraries tightly coupled with it when
  linking.  Still link with the startup files, \fIlibgcc\fR or toolchain
*************** or \fIlibstdc++\fR unless options preven
*** 18522,18530 ****
  well.  This typically removes \fB\-lc\fR from the link command line, as well
  as system libraries that normally go with it and become meaningless when
  absence of a C library is assumed, for example \fB\-lpthread\fR or
! \&\fB\-lm\fR in some configurations.  This is intended for bare-board
  targets when there is indeed no C library available.
! .IP "\fB\-nostdlib\fR" 4
  .IX Item "-nostdlib"
  Do not use the standard system startup files or libraries when linking.
  No startup files and only the libraries you specify are passed to
--- 18457,18465 ----
  well.  This typically removes \fB\-lc\fR from the link command line, as well
  as system libraries that normally go with it and become meaningless when
  absence of a C library is assumed, for example \fB\-lpthread\fR or
! \&\fB\-lm\fR in some configurations.  This is intended for bare\-board
  targets when there is indeed no C library available.
! .IP \fB\-nostdlib\fR 4
  .IX Item "-nostdlib"
  Do not use the standard system startup files or libraries when linking.
  No startup files and only the libraries you specify are passed to
*************** mechanism when this option is specified.
*** 18539,18576 ****
  .Sp
  One of the standard libraries bypassed by \fB\-nostdlib\fR and
  \&\fB\-nodefaultlibs\fR is \fIlibgcc.a\fR, a library of internal subroutines
! which \s-1GCC\s0 uses to overcome shortcomings of particular machines, or special
  needs for some languages.
  .Sp
  In most cases, you need \fIlibgcc.a\fR even when you want to avoid
  other standard libraries.  In other words, when you specify \fB\-nostdlib\fR
  or \fB\-nodefaultlibs\fR you should usually specify \fB\-lgcc\fR as well.
! This ensures that you have no unresolved references to internal \s-1GCC\s0
  library subroutines.
! (An example of such an internal subroutine is \f(CW\*(C`_\|_main\*(C'\fR, used to ensure \*(C+
  constructors are called.)
! .IP "\fB\-nostdlib++\fR" 4
  .IX Item "-nostdlib++"
! Do not implicitly link with standard \*(C+ libraries.
  .IP "\fB\-e\fR \fIentry\fR" 4
  .IX Item "-e entry"
  .PD 0
! .IP "\fB\-\-entry=\fR\fIentry\fR" 4
  .IX Item "--entry=entry"
  .PD
  Specify that the program entry point is \fIentry\fR.  The argument is
! interpreted by the linker; the \s-1GNU\s0 linker accepts either a symbol name
  or an address.
! .IP "\fB\-pie\fR" 4
  .IX Item "-pie"
  Produce a dynamically linked position independent executable on targets
  that support it.  For predictable results, you must also specify the same
  set of options used for compilation (\fB\-fpie\fR, \fB\-fPIE\fR,
  or model suboptions) when you specify this linker option.
! .IP "\fB\-no\-pie\fR" 4
  .IX Item "-no-pie"
! Don't produce a dynamically linked position independent executable.
! .IP "\fB\-static\-pie\fR" 4
  .IX Item "-static-pie"
  Produce a static position independent executable on targets that support
  it.  A static position independent executable is similar to a static
--- 18474,18511 ----
  .Sp
  One of the standard libraries bypassed by \fB\-nostdlib\fR and
  \&\fB\-nodefaultlibs\fR is \fIlibgcc.a\fR, a library of internal subroutines
! which GCC uses to overcome shortcomings of particular machines, or special
  needs for some languages.
  .Sp
  In most cases, you need \fIlibgcc.a\fR even when you want to avoid
  other standard libraries.  In other words, when you specify \fB\-nostdlib\fR
  or \fB\-nodefaultlibs\fR you should usually specify \fB\-lgcc\fR as well.
! This ensures that you have no unresolved references to internal GCC
  library subroutines.
! (An example of such an internal subroutine is \f(CW\*(C`_\|_main\*(C'\fR, used to ensure C++
  constructors are called.)
! .IP \fB\-nostdlib++\fR 4
  .IX Item "-nostdlib++"
! Do not implicitly link with standard C++ libraries.
  .IP "\fB\-e\fR \fIentry\fR" 4
  .IX Item "-e entry"
  .PD 0
! .IP \fB\-\-entry=\fR\fIentry\fR 4
  .IX Item "--entry=entry"
  .PD
  Specify that the program entry point is \fIentry\fR.  The argument is
! interpreted by the linker; the GNU linker accepts either a symbol name
  or an address.
! .IP \fB\-pie\fR 4
  .IX Item "-pie"
  Produce a dynamically linked position independent executable on targets
  that support it.  For predictable results, you must also specify the same
  set of options used for compilation (\fB\-fpie\fR, \fB\-fPIE\fR,
  or model suboptions) when you specify this linker option.
! .IP \fB\-no\-pie\fR 4
  .IX Item "-no-pie"
! Don\*(Aqt produce a dynamically linked position independent executable.
! .IP \fB\-static\-pie\fR 4
  .IX Item "-static-pie"
  Produce a static position independent executable on targets that support
  it.  A static position independent executable is similar to a static
*************** executable, but can be loaded at any add
*** 18578,18620 ****
  For predictable results, you must also specify the same set of options
  used for compilation (\fB\-fpie\fR, \fB\-fPIE\fR, or model
  suboptions) when you specify this linker option.
! .IP "\fB\-pthread\fR" 4
  .IX Item "-pthread"
! Link with the \s-1POSIX\s0 threads library.  This option is supported on
  GNU/Linux targets, most other Unix derivatives, and also on
  x86 Cygwin and MinGW targets.  On some targets this option also sets
  flags for the preprocessor, so it should be used consistently for both
  compilation and linking.
! .IP "\fB\-r\fR" 4
  .IX Item "-r"
  Produce a relocatable object as output.  This is also known as partial
  linking.
! .IP "\fB\-rdynamic\fR" 4
  .IX Item "-rdynamic"
! Pass the flag \fB\-export\-dynamic\fR to the \s-1ELF\s0 linker, on targets
  that support it. This instructs the linker to add all symbols, not
  only used ones, to the dynamic symbol table. This option is needed
  for some uses of \f(CW\*(C`dlopen\*(C'\fR or to allow obtaining backtraces
  from within a program.
! .IP "\fB\-s\fR" 4
  .IX Item "-s"
  Remove all symbol table and relocation information from the executable.
! .IP "\fB\-static\fR" 4
  .IX Item "-static"
  On systems that support dynamic linking, this overrides \fB\-pie\fR
  and prevents linking with the shared libraries.  On other systems, this
  option has no effect.
! .IP "\fB\-shared\fR" 4
  .IX Item "-shared"
  Produce a shared object which can then be linked with other objects to
  form an executable.  Not all systems support this option.  For predictable
  results, you must also specify the same set of options used for compilation
  (\fB\-fpic\fR, \fB\-fPIC\fR, or model suboptions) when
  you specify this linker option.[1]
! .IP "\fB\-shared\-libgcc\fR" 4
  .IX Item "-shared-libgcc"
  .PD 0
! .IP "\fB\-static\-libgcc\fR" 4
  .IX Item "-static-libgcc"
  .PD
  On systems that provide \fIlibgcc\fR as a shared library, these options
--- 18513,18555 ----
  For predictable results, you must also specify the same set of options
  used for compilation (\fB\-fpie\fR, \fB\-fPIE\fR, or model
  suboptions) when you specify this linker option.
! .IP \fB\-pthread\fR 4
  .IX Item "-pthread"
! Link with the POSIX threads library.  This option is supported on
  GNU/Linux targets, most other Unix derivatives, and also on
  x86 Cygwin and MinGW targets.  On some targets this option also sets
  flags for the preprocessor, so it should be used consistently for both
  compilation and linking.
! .IP \fB\-r\fR 4
  .IX Item "-r"
  Produce a relocatable object as output.  This is also known as partial
  linking.
! .IP \fB\-rdynamic\fR 4
  .IX Item "-rdynamic"
! Pass the flag \fB\-export\-dynamic\fR to the ELF linker, on targets
  that support it. This instructs the linker to add all symbols, not
  only used ones, to the dynamic symbol table. This option is needed
  for some uses of \f(CW\*(C`dlopen\*(C'\fR or to allow obtaining backtraces
  from within a program.
! .IP \fB\-s\fR 4
  .IX Item "-s"
  Remove all symbol table and relocation information from the executable.
! .IP \fB\-static\fR 4
  .IX Item "-static"
  On systems that support dynamic linking, this overrides \fB\-pie\fR
  and prevents linking with the shared libraries.  On other systems, this
  option has no effect.
! .IP \fB\-shared\fR 4
  .IX Item "-shared"
  Produce a shared object which can then be linked with other objects to
  form an executable.  Not all systems support this option.  For predictable
  results, you must also specify the same set of options used for compilation
  (\fB\-fpic\fR, \fB\-fPIC\fR, or model suboptions) when
  you specify this linker option.[1]
! .IP \fB\-shared\-libgcc\fR 4
  .IX Item "-shared-libgcc"
  .PD 0
! .IP \fB\-static\-libgcc\fR 4
  .IX Item "-static-libgcc"
  .PD
  On systems that provide \fIlibgcc\fR as a shared library, these options
*************** across different shared libraries.  In t
*** 18629,18641 ****
  as well as the application itself should use the shared \fIlibgcc\fR.
  .Sp
  Therefore, the G++ driver automatically adds \fB\-shared\-libgcc\fR
! whenever you build a shared library or a main executable, because \*(C+
  programs typically use exceptions, so this is the right thing to do.
  .Sp
! If, instead, you use the \s-1GCC\s0 driver to create shared libraries, you may
  find that they are not always linked with the shared \fIlibgcc\fR.
! If \s-1GCC\s0 finds, at its configuration time, that you have a non-GNU linker
! or a \s-1GNU\s0 linker that does not support option \fB\-\-eh\-frame\-hdr\fR,
  it links the shared version of \fIlibgcc\fR into shared libraries
  by default.  Otherwise, it takes advantage of the linker and optimizes
  away the linking with the shared version of \fIlibgcc\fR, linking with
--- 18564,18576 ----
  as well as the application itself should use the shared \fIlibgcc\fR.
  .Sp
  Therefore, the G++ driver automatically adds \fB\-shared\-libgcc\fR
! whenever you build a shared library or a main executable, because C++
  programs typically use exceptions, so this is the right thing to do.
  .Sp
! If, instead, you use the GCC driver to create shared libraries, you may
  find that they are not always linked with the shared \fIlibgcc\fR.
! If GCC finds, at its configuration time, that you have a non\-GNU linker
! or a GNU linker that does not support option \fB\-\-eh\-frame\-hdr\fR,
  it links the shared version of \fIlibgcc\fR into shared libraries
  by default.  Otherwise, it takes advantage of the linker and optimizes
  away the linking with the shared version of \fIlibgcc\fR, linking with
*************** However, if a library or main executable
*** 18647,18691 ****
  exceptions, you must link it using the G++ driver, or using the option
  \&\fB\-shared\-libgcc\fR, such that it is linked with the shared
  \&\fIlibgcc\fR.
! .IP "\fB\-static\-libasan\fR" 4
  .IX Item "-static-libasan"
  When the \fB\-fsanitize=address\fR option is used to link a program,
! the \s-1GCC\s0 driver automatically links against \fBlibasan\fR.  If
  \&\fIlibasan\fR is available as a shared library, and the \fB\-static\fR
  option is not used, then this links against the shared version of
! \&\fIlibasan\fR.  The \fB\-static\-libasan\fR option directs the \s-1GCC\s0
  driver to link \fIlibasan\fR statically, without necessarily linking
  other libraries statically.
! .IP "\fB\-static\-libtsan\fR" 4
  .IX Item "-static-libtsan"
  When the \fB\-fsanitize=thread\fR option is used to link a program,
! the \s-1GCC\s0 driver automatically links against \fBlibtsan\fR.  If
  \&\fIlibtsan\fR is available as a shared library, and the \fB\-static\fR
  option is not used, then this links against the shared version of
! \&\fIlibtsan\fR.  The \fB\-static\-libtsan\fR option directs the \s-1GCC\s0
  driver to link \fIlibtsan\fR statically, without necessarily linking
  other libraries statically.
! .IP "\fB\-static\-liblsan\fR" 4
  .IX Item "-static-liblsan"
  When the \fB\-fsanitize=leak\fR option is used to link a program,
! the \s-1GCC\s0 driver automatically links against \fBliblsan\fR.  If
  \&\fIliblsan\fR is available as a shared library, and the \fB\-static\fR
  option is not used, then this links against the shared version of
! \&\fIliblsan\fR.  The \fB\-static\-liblsan\fR option directs the \s-1GCC\s0
  driver to link \fIliblsan\fR statically, without necessarily linking
  other libraries statically.
! .IP "\fB\-static\-libubsan\fR" 4
  .IX Item "-static-libubsan"
  When the \fB\-fsanitize=undefined\fR option is used to link a program,
! the \s-1GCC\s0 driver automatically links against \fBlibubsan\fR.  If
  \&\fIlibubsan\fR is available as a shared library, and the \fB\-static\fR
  option is not used, then this links against the shared version of
! \&\fIlibubsan\fR.  The \fB\-static\-libubsan\fR option directs the \s-1GCC\s0
  driver to link \fIlibubsan\fR statically, without necessarily linking
  other libraries statically.
! .IP "\fB\-static\-libstdc++\fR" 4
  .IX Item "-static-libstdc++"
! When the \fBg++\fR program is used to link a \*(C+ program, it
  normally automatically links against \fBlibstdc++\fR.  If
  \&\fIlibstdc++\fR is available as a shared library, and the
  \&\fB\-static\fR option is not used, then this links against the
--- 18582,18626 ----
  exceptions, you must link it using the G++ driver, or using the option
  \&\fB\-shared\-libgcc\fR, such that it is linked with the shared
  \&\fIlibgcc\fR.
! .IP \fB\-static\-libasan\fR 4
  .IX Item "-static-libasan"
  When the \fB\-fsanitize=address\fR option is used to link a program,
! the GCC driver automatically links against \fBlibasan\fR.  If
  \&\fIlibasan\fR is available as a shared library, and the \fB\-static\fR
  option is not used, then this links against the shared version of
! \&\fIlibasan\fR.  The \fB\-static\-libasan\fR option directs the GCC
  driver to link \fIlibasan\fR statically, without necessarily linking
  other libraries statically.
! .IP \fB\-static\-libtsan\fR 4
  .IX Item "-static-libtsan"
  When the \fB\-fsanitize=thread\fR option is used to link a program,
! the GCC driver automatically links against \fBlibtsan\fR.  If
  \&\fIlibtsan\fR is available as a shared library, and the \fB\-static\fR
  option is not used, then this links against the shared version of
! \&\fIlibtsan\fR.  The \fB\-static\-libtsan\fR option directs the GCC
  driver to link \fIlibtsan\fR statically, without necessarily linking
  other libraries statically.
! .IP \fB\-static\-liblsan\fR 4
  .IX Item "-static-liblsan"
  When the \fB\-fsanitize=leak\fR option is used to link a program,
! the GCC driver automatically links against \fBliblsan\fR.  If
  \&\fIliblsan\fR is available as a shared library, and the \fB\-static\fR
  option is not used, then this links against the shared version of
! \&\fIliblsan\fR.  The \fB\-static\-liblsan\fR option directs the GCC
  driver to link \fIliblsan\fR statically, without necessarily linking
  other libraries statically.
! .IP \fB\-static\-libubsan\fR 4
  .IX Item "-static-libubsan"
  When the \fB\-fsanitize=undefined\fR option is used to link a program,
! the GCC driver automatically links against \fBlibubsan\fR.  If
  \&\fIlibubsan\fR is available as a shared library, and the \fB\-static\fR
  option is not used, then this links against the shared version of
! \&\fIlibubsan\fR.  The \fB\-static\-libubsan\fR option directs the GCC
  driver to link \fIlibubsan\fR statically, without necessarily linking
  other libraries statically.
! .IP \fB\-static\-libstdc++\fR 4
  .IX Item "-static-libstdc++"
! When the \fBg++\fR program is used to link a C++ program, it
  normally automatically links against \fBlibstdc++\fR.  If
  \&\fIlibstdc++\fR is available as a shared library, and the
  \&\fB\-static\fR option is not used, then this links against the
*************** the program without going all the way to
*** 18695,18701 ****
  \&\fB\-static\-libstdc++\fR option directs the \fBg++\fR driver to
  link \fIlibstdc++\fR statically, without necessarily linking other
  libraries statically.
! .IP "\fB\-symbolic\fR" 4
  .IX Item "-symbolic"
  Bind references to global symbols when building a shared object.  Warn
  about any unresolved references (unless overridden by the link editor
--- 18630,18636 ----
  \&\fB\-static\-libstdc++\fR option directs the \fBg++\fR driver to
  link \fIlibstdc++\fR statically, without necessarily linking other
  libraries statically.
! .IP \fB\-symbolic\fR 4
  .IX Item "-symbolic"
  Bind references to global symbols when building a shared object.  Warn
  about any unresolved references (unless overridden by the link editor
*************** this option.
*** 18704,18737 ****
  .IP "\fB\-T\fR \fIscript\fR" 4
  .IX Item "-T script"
  Use \fIscript\fR as the linker script.  This option is supported by most
! systems using the \s-1GNU\s0 linker.  On some targets, such as bare-board
  targets without an operating system, the \fB\-T\fR option may be required
  when linking to avoid references to undefined symbols.
  .IP "\fB\-Xlinker\fR \fIoption\fR" 4
  .IX Item "-Xlinker option"
  Pass \fIoption\fR as an option to the linker.  You can use this to
! supply system-specific linker options that \s-1GCC\s0 does not recognize.
  .Sp
  If you want to pass an option that takes a separate argument, you must use
  \&\fB\-Xlinker\fR twice, once for the option and once for the argument.
  For example, to pass \fB\-assert definitions\fR, you must write
  \&\fB\-Xlinker \-assert \-Xlinker definitions\fR.  It does not work to write
! \&\fB\-Xlinker \*(L"\-assert definitions\*(R"\fR, because this passes the entire
  string as a single argument, which is not what the linker expects.
  .Sp
! When using the \s-1GNU\s0 linker, it is usually more convenient to pass
  arguments to linker options using the \fIoption\fR\fB=\fR\fIvalue\fR
  syntax than as separate arguments.  For example, you can specify
  \&\fB\-Xlinker \-Map=output.map\fR rather than
  \&\fB\-Xlinker \-Map \-Xlinker output.map\fR.  Other linkers may not support
! this syntax for command-line options.
! .IP "\fB\-Wl,\fR\fIoption\fR" 4
  .IX Item "-Wl,option"
  Pass \fIoption\fR as an option to the linker.  If \fIoption\fR contains
  commas, it is split into multiple options at the commas.  You can use this
  syntax to pass an argument to the option.
  For example, \fB\-Wl,\-Map,output.map\fR passes \fB\-Map output.map\fR to the
! linker.  When using the \s-1GNU\s0 linker, you can also get the same effect with
  \&\fB\-Wl,\-Map=output.map\fR.
  .IP "\fB\-u\fR \fIsymbol\fR" 4
  .IX Item "-u symbol"
--- 18639,18672 ----
  .IP "\fB\-T\fR \fIscript\fR" 4
  .IX Item "-T script"
  Use \fIscript\fR as the linker script.  This option is supported by most
! systems using the GNU linker.  On some targets, such as bare\-board
  targets without an operating system, the \fB\-T\fR option may be required
  when linking to avoid references to undefined symbols.
  .IP "\fB\-Xlinker\fR \fIoption\fR" 4
  .IX Item "-Xlinker option"
  Pass \fIoption\fR as an option to the linker.  You can use this to
! supply system\-specific linker options that GCC does not recognize.
  .Sp
  If you want to pass an option that takes a separate argument, you must use
  \&\fB\-Xlinker\fR twice, once for the option and once for the argument.
  For example, to pass \fB\-assert definitions\fR, you must write
  \&\fB\-Xlinker \-assert \-Xlinker definitions\fR.  It does not work to write
! \&\fB\-Xlinker "\-assert definitions"\fR, because this passes the entire
  string as a single argument, which is not what the linker expects.
  .Sp
! When using the GNU linker, it is usually more convenient to pass
  arguments to linker options using the \fIoption\fR\fB=\fR\fIvalue\fR
  syntax than as separate arguments.  For example, you can specify
  \&\fB\-Xlinker \-Map=output.map\fR rather than
  \&\fB\-Xlinker \-Map \-Xlinker output.map\fR.  Other linkers may not support
! this syntax for command\-line options.
! .IP \fB\-Wl,\fR\fIoption\fR 4
  .IX Item "-Wl,option"
  Pass \fIoption\fR as an option to the linker.  If \fIoption\fR contains
  commas, it is split into multiple options at the commas.  You can use this
  syntax to pass an argument to the option.
  For example, \fB\-Wl,\-Map,output.map\fR passes \fB\-Map output.map\fR to the
! linker.  When using the GNU linker, you can also get the same effect with
  \&\fB\-Wl,\-Map=output.map\fR.
  .IP "\fB\-u\fR \fIsymbol\fR" 4
  .IX Item "-u symbol"
*************** or \f(CW$SYSROOT\fR is replaced by the s
*** 18764,18803 ****
  \&\fB\-\-sysroot\fR and \fB\-isysroot\fR.
  .Sp
  Directories specified with \fB\-iquote\fR apply only to the quote 
! form of the directive, \f(CW\*(C`#include\ "\f(CIfile\f(CW"\*(C'\fR.
  Directories specified with \fB\-I\fR, \fB\-isystem\fR, 
  or \fB\-idirafter\fR apply to lookup for both the
! \&\f(CW\*(C`#include\ "\f(CIfile\f(CW"\*(C'\fR and
! \&\f(CW\*(C`#include\ <\f(CIfile\f(CW>\*(C'\fR directives.
  .Sp
  You can specify any number or combination of these options on the 
  command line to search for header files in several directories.  
  The lookup order is as follows:
  .RS 4
! .IP "1." 4
  .IX Item "1."
  For the quote form of the include directive, the directory of the current
  file is searched first.
! .IP "2." 4
  .IX Item "2."
  For the quote form of the include directive, the directories specified
! by \fB\-iquote\fR options are searched in left-to-right order,
  as they appear on the command line.
! .IP "3." 4
  .IX Item "3."
  Directories specified with \fB\-I\fR options are scanned in
! left-to-right order.
! .IP "4." 4
  .IX Item "4."
  Directories specified with \fB\-isystem\fR options are scanned in
! left-to-right order.
! .IP "5." 4
  .IX Item "5."
  Standard system directories are scanned.
! .IP "6." 4
  .IX Item "6."
  Directories specified with \fB\-idirafter\fR options are scanned in
! left-to-right order.
  .RE
  .RS 4
  .Sp
--- 18699,18738 ----
  \&\fB\-\-sysroot\fR and \fB\-isysroot\fR.
  .Sp
  Directories specified with \fB\-iquote\fR apply only to the quote 
! form of the directive, \f(CW\*(C`#include\ "\fR\f(CIfile\fR\f(CW"\*(C'\fR.
  Directories specified with \fB\-I\fR, \fB\-isystem\fR, 
  or \fB\-idirafter\fR apply to lookup for both the
! \&\f(CW\*(C`#include\ "\fR\f(CIfile\fR\f(CW"\*(C'\fR and
! \&\f(CW\*(C`#include\ <\fR\f(CIfile\fR\f(CW>\*(C'\fR directives.
  .Sp
  You can specify any number or combination of these options on the 
  command line to search for header files in several directories.  
  The lookup order is as follows:
  .RS 4
! .IP 1. 4
  .IX Item "1."
  For the quote form of the include directive, the directory of the current
  file is searched first.
! .IP 2. 4
  .IX Item "2."
  For the quote form of the include directive, the directories specified
! by \fB\-iquote\fR options are searched in left\-to\-right order,
  as they appear on the command line.
! .IP 3. 4
  .IX Item "3."
  Directories specified with \fB\-I\fR options are scanned in
! left\-to\-right order.
! .IP 4. 4
  .IX Item "4."
  Directories specified with \fB\-isystem\fR options are scanned in
! left\-to\-right order.
! .IP 5. 4
  .IX Item "5."
  Standard system directories are scanned.
! .IP 6. 4
  .IX Item "6."
  Directories specified with \fB\-idirafter\fR options are scanned in
! left\-to\-right order.
  .RE
  .RS 4
  .Sp
*************** You can use \fB\-I\fR to override a syst
*** 18805,18811 ****
  file, substituting your own version, since these directories are
  searched before the standard system header file directories.  
  However, you should
! not use this option to add directories that contain vendor-supplied
  system header files; use \fB\-isystem\fR for that.
  .Sp
  The \fB\-isystem\fR and \fB\-idirafter\fR options also mark the directory
--- 18740,18746 ----
  file, substituting your own version, since these directories are
  searched before the standard system header file directories.  
  However, you should
! not use this option to add directories that contain vendor\-supplied
  system header files; use \fB\-isystem\fR for that.
  .Sp
  The \fB\-isystem\fR and \fB\-idirafter\fR options also mark the directory
*************** If a standard system include directory,
*** 18816,18828 ****
  \&\fB\-isystem\fR, is also specified with \fB\-I\fR, the \fB\-I\fR
  option is ignored.  The directory is still searched but as a
  system directory at its normal position in the system include chain.
! This is to ensure that \s-1GCC\s0's procedure to fix buggy system headers and
  the ordering for the \f(CW\*(C`#include_next\*(C'\fR directive are not inadvertently
  changed.
  If you really need to change the search order for system directories,
  use the \fB\-nostdinc\fR and/or \fB\-isystem\fR options.
  .RE
! .IP "\fB\-I\-\fR" 4
  .IX Item "-I-"
  Split the include path.
  This option has been deprecated.  Please use \fB\-iquote\fR instead for
--- 18751,18763 ----
  \&\fB\-isystem\fR, is also specified with \fB\-I\fR, the \fB\-I\fR
  option is ignored.  The directory is still searched but as a
  system directory at its normal position in the system include chain.
! This is to ensure that GCC\*(Aqs procedure to fix buggy system headers and
  the ordering for the \f(CW\*(C`#include_next\*(C'\fR directive are not inadvertently
  changed.
  If you really need to change the search order for system directories,
  use the \fB\-nostdinc\fR and/or \fB\-isystem\fR options.
  .RE
! .IP \fB\-I\-\fR 4
  .IX Item "-I-"
  Split the include path.
  This option has been deprecated.  Please use \fB\-iquote\fR instead for
*************** option.
*** 18831,18843 ****
  .Sp
  Any directories specified with \fB\-I\fR
  options before \fB\-I\-\fR are searched only for headers requested with
! \&\f(CW\*(C`#include\ "\f(CIfile\f(CW"\*(C'\fR; they are not searched for
! \&\f(CW\*(C`#include\ <\f(CIfile\f(CW>\*(C'\fR.  If additional directories are
  specified with \fB\-I\fR options after the \fB\-I\-\fR, those
  directories are searched for all \fB#include\fR directives.
  .Sp
  In addition, \fB\-I\-\fR inhibits the use of the directory of the current
! file directory as the first search directory for \f(CW\*(C`#include\ "\f(CIfile\f(CW"\*(C'\fR.  There is no way to override this effect of \fB\-I\-\fR.
  .IP "\fB\-iprefix\fR \fIprefix\fR" 4
  .IX Item "-iprefix prefix"
  Specify \fIprefix\fR as the prefix for subsequent \fB\-iwithprefix\fR
--- 18766,18778 ----
  .Sp
  Any directories specified with \fB\-I\fR
  options before \fB\-I\-\fR are searched only for headers requested with
! \&\f(CW\*(C`#include\ "\fR\f(CIfile\fR\f(CW"\*(C'\fR; they are not searched for
! \&\f(CW\*(C`#include\ <\fR\f(CIfile\fR\f(CW>\*(C'\fR.  If additional directories are
  specified with \fB\-I\fR options after the \fB\-I\-\fR, those
  directories are searched for all \fB#include\fR directives.
  .Sp
  In addition, \fB\-I\-\fR inhibits the use of the directory of the current
! file directory as the first search directory for \f(CW\*(C`#include\ "\fR\f(CIfile\fR\f(CW"\*(C'\fR.  There is no way to override this effect of \fB\-I\-\fR.
  .IP "\fB\-iprefix\fR \fIprefix\fR" 4
  .IX Item "-iprefix prefix"
  Specify \fIprefix\fR as the prefix for subsequent \fB\-iwithprefix\fR
*************** information.
*** 18862,18881 ****
  .IP "\fB\-imultilib\fR \fIdir\fR" 4
  .IX Item "-imultilib dir"
  Use \fIdir\fR as a subdirectory of the directory containing
! target-specific \*(C+ headers.
! .IP "\fB\-nostdinc\fR" 4
  .IX Item "-nostdinc"
  Do not search the standard system directories for header files.
  Only the directories explicitly specified with \fB\-I\fR,
  \&\fB\-iquote\fR, \fB\-isystem\fR, and/or \fB\-idirafter\fR
  options (and the directory of the current file, if appropriate) 
  are searched.
! .IP "\fB\-nostdinc++\fR" 4
  .IX Item "-nostdinc++"
! Do not search for header files in the \*(C+\-specific standard directories,
  but do still search the other standard directories.  (This option is
! used when building the \*(C+ library.)
! .IP "\fB\-\-embed\-dir=\fR\fIdir\fR" 4
  .IX Item "--embed-dir=dir"
  Append \fIdir\fR directory to the list of searched directories for
  \&\f(CW\*(C`#embed\*(C'\fR preprocessing directive or \f(CW\*(C`_\|_has_embed\*(C'\fR macro.
--- 18797,18816 ----
  .IP "\fB\-imultilib\fR \fIdir\fR" 4
  .IX Item "-imultilib dir"
  Use \fIdir\fR as a subdirectory of the directory containing
! target\-specific C++ headers.
! .IP \fB\-nostdinc\fR 4
  .IX Item "-nostdinc"
  Do not search the standard system directories for header files.
  Only the directories explicitly specified with \fB\-I\fR,
  \&\fB\-iquote\fR, \fB\-isystem\fR, and/or \fB\-idirafter\fR
  options (and the directory of the current file, if appropriate) 
  are searched.
! .IP \fB\-nostdinc++\fR 4
  .IX Item "-nostdinc++"
! Do not search for header files in the C++\-specific standard directories,
  but do still search the other standard directories.  (This option is
! used when building the C++ library.)
! .IP \fB\-\-embed\-dir=\fR\fIdir\fR 4
  .IX Item "--embed-dir=dir"
  Append \fIdir\fR directory to the list of searched directories for
  \&\f(CW\*(C`#embed\*(C'\fR preprocessing directive or \f(CW\*(C`_\|_has_embed\*(C'\fR macro.
*************** There are no default directories for \f(
*** 18884,18900 ****
  If \fIdir\fR begins with \fB=\fR or \f(CW$SYSROOT\fR, then the \fB=\fR
  or \f(CW$SYSROOT\fR is replaced by the sysroot prefix; see
  \&\fB\-\-sysroot\fR and \fB\-isysroot\fR.
! .IP "\fB\-iplugindir=\fR\fIdir\fR" 4
  .IX Item "-iplugindir=dir"
  Set the directory to search for plugins that are passed
  by \fB\-fplugin=\fR\fIname\fR instead of
  \&\fB\-fplugin=\fR\fIpath\fR\fB/\fR\fIname\fR\fB.so\fR.  This option is not meant
  to be used by the user, but only passed by the driver.
! .IP "\fB\-L\fR\fIdir\fR" 4
  .IX Item "-Ldir"
  Add directory \fIdir\fR to the list of directories to be searched
  for \fB\-l\fR.
! .IP "\fB\-B\fR\fIprefix\fR" 4
  .IX Item "-Bprefix"
  This option specifies where to find the executables, libraries,
  include files, and data files of the compiler itself.
--- 18819,18835 ----
  If \fIdir\fR begins with \fB=\fR or \f(CW$SYSROOT\fR, then the \fB=\fR
  or \f(CW$SYSROOT\fR is replaced by the sysroot prefix; see
  \&\fB\-\-sysroot\fR and \fB\-isysroot\fR.
! .IP \fB\-iplugindir=\fR\fIdir\fR 4
  .IX Item "-iplugindir=dir"
  Set the directory to search for plugins that are passed
  by \fB\-fplugin=\fR\fIname\fR instead of
  \&\fB\-fplugin=\fR\fIpath\fR\fB/\fR\fIname\fR\fB.so\fR.  This option is not meant
  to be used by the user, but only passed by the driver.
! .IP \fB\-L\fR\fIdir\fR 4
  .IX Item "-Ldir"
  Add directory \fIdir\fR to the list of directories to be searched
  for \fB\-l\fR.
! .IP \fB\-B\fR\fIprefix\fR 4
  .IX Item "-Bprefix"
  This option specifies where to find the executables, libraries,
  include files, and data files of the compiler itself.
*************** is not specified, the driver tries two s
*** 18911,18917 ****
  \&\fI/usr/lib/gcc/\fR and \fI/usr/local/lib/gcc/\fR.  If neither of
  those results in a file name that is found, the unmodified program
  name is searched for using the directories specified in your
! \&\fB\s-1PATH\s0\fR environment variable.
  .Sp
  The compiler checks to see if the path provided by \fB\-B\fR
  refers to a directory, and if necessary it adds a directory
--- 18846,18852 ----
  \&\fI/usr/lib/gcc/\fR and \fI/usr/local/lib/gcc/\fR.  If neither of
  those results in a file name that is found, the unmodified program
  name is searched for using the directories specified in your
! \&\fBPATH\fR environment variable.
  .Sp
  The compiler checks to see if the path provided by \fB\-B\fR
  refers to a directory, and if necessary it adds a directory
*************** standard prefixes above are tried, and t
*** 18930,18972 ****
  out of the link if it is not found by those means.
  .Sp
  Another way to specify a prefix much like the \fB\-B\fR prefix is to use
! the environment variable \fB\s-1GCC_EXEC_PREFIX\s0\fR.
  .Sp
  As a special kludge, if the path provided by \fB\-B\fR is
! \&\fI[dir/]stage\fIN\fI/\fR, where \fIN\fR is a number in the range 0 to
  9, then it is replaced by \fI[dir/]include\fR.  This is to help
! with boot-strapping the compiler.
! .IP "\fB\-no\-canonical\-prefixes\fR" 4
  .IX Item "-no-canonical-prefixes"
  Do not expand any symbolic links, resolve references to \fB/../\fR
  or \fB/./\fR, or make the path absolute when generating a relative
  prefix.
! .IP "\fB\-\-sysroot=\fR\fIdir\fR" 4
  .IX Item "--sysroot=dir"
  Use \fIdir\fR as the logical root directory for headers and libraries.
  For example, if the compiler normally searches for headers in
  \&\fI/usr/include\fR and libraries in \fI/usr/lib\fR, it instead
! searches \fI\fIdir\fI/usr/include\fR and \fI\fIdir\fI/usr/lib\fR.
  .Sp
  If you use both this option and the \fB\-isysroot\fR option, then
  the \fB\-\-sysroot\fR option applies to libraries, but the
  \&\fB\-isysroot\fR option applies to header files.
  .Sp
! The \s-1GNU\s0 linker (beginning with version 2.16) has the necessary support
  for this option.  If your linker does not support this option, the
  header file aspect of \fB\-\-sysroot\fR still works, but the
  library aspect does not.
! .IP "\fB\-\-no\-sysroot\-suffix\fR" 4
  .IX Item "--no-sysroot-suffix"
  For some targets, a suffix is added to the root directory specified
  with \fB\-\-sysroot\fR, depending on the other options used, so that
  headers may for example be found in
! \&\fI\fIdir\fI/\fIsuffix\fI/usr/include\fR instead of
! \&\fI\fIdir\fI/usr/include\fR.  This option disables the addition of
  such a suffix.
  .SS "Options for Code Generation Conventions"
  .IX Subsection "Options for Code Generation Conventions"
! These machine-independent options control the interface conventions
  used in code generation.
  .PP
  Most of them have both positive and negative forms; the negative form
--- 18865,18907 ----
  out of the link if it is not found by those means.
  .Sp
  Another way to specify a prefix much like the \fB\-B\fR prefix is to use
! the environment variable \fBGCC_EXEC_PREFIX\fR.
  .Sp
  As a special kludge, if the path provided by \fB\-B\fR is
! \&\fI[dir/]stageN/\fR, where \fIN\fR is a number in the range 0 to
  9, then it is replaced by \fI[dir/]include\fR.  This is to help
! with boot\-strapping the compiler.
! .IP \fB\-no\-canonical\-prefixes\fR 4
  .IX Item "-no-canonical-prefixes"
  Do not expand any symbolic links, resolve references to \fB/../\fR
  or \fB/./\fR, or make the path absolute when generating a relative
  prefix.
! .IP \fB\-\-sysroot=\fR\fIdir\fR 4
  .IX Item "--sysroot=dir"
  Use \fIdir\fR as the logical root directory for headers and libraries.
  For example, if the compiler normally searches for headers in
  \&\fI/usr/include\fR and libraries in \fI/usr/lib\fR, it instead
! searches \fIdir/usr/include\fR and \fIdir/usr/lib\fR.
  .Sp
  If you use both this option and the \fB\-isysroot\fR option, then
  the \fB\-\-sysroot\fR option applies to libraries, but the
  \&\fB\-isysroot\fR option applies to header files.
  .Sp
! The GNU linker (beginning with version 2.16) has the necessary support
  for this option.  If your linker does not support this option, the
  header file aspect of \fB\-\-sysroot\fR still works, but the
  library aspect does not.
! .IP \fB\-\-no\-sysroot\-suffix\fR 4
  .IX Item "--no-sysroot-suffix"
  For some targets, a suffix is added to the root directory specified
  with \fB\-\-sysroot\fR, depending on the other options used, so that
  headers may for example be found in
! \&\fIdir/suffix/usr/include\fR instead of
! \&\fIdir/usr/include\fR.  This option disables the addition of
  such a suffix.
  .SS "Options for Code Generation Conventions"
  .IX Subsection "Options for Code Generation Conventions"
! These machine\-independent options control the interface conventions
  used in code generation.
  .PP
  Most of them have both positive and negative forms; the negative form
*************** of \fB\-ffoo\fR is \fB\-fno\-foo\fR.  In
*** 18974,18980 ****
  one of the forms is listed\-\-\-the one that is not the default.  You
  can figure out the other form by either removing \fBno\-\fR or adding
  it.
! .IP "\fB\-fstack\-reuse=\fR\fIreuse-level\fR" 4
  .IX Item "-fstack-reuse=reuse-level"
  This option controls stack space reuse for user declared local/auto variables
  and compiler generated temporaries.  \fIreuse_level\fR can be \fBall\fR,
--- 18909,18915 ----
  one of the forms is listed\-\-\-the one that is not the default.  You
  can figure out the other form by either removing \fBno\-\fR or adding
  it.
! .IP \fB\-fstack\-reuse=\fR\fIreuse\-level\fR 4
  .IX Item "-fstack-reuse=reuse-level"
  This option controls stack space reuse for user declared local/auto variables
  and compiler generated temporaries.  \fIreuse_level\fR can be \fBall\fR,
*************** Another example:
*** 19042,19130 ****
  \&           }
  .Ve
  .Sp
! The lifetime of a compiler generated temporary is well defined by the \*(C+
  standard. When a lifetime of a temporary ends, and if the temporary lives
  in memory, the optimizing compiler has the freedom to reuse its stack
  space with other temporaries or scoped local variables whose live range
  does not overlap with it. However some of the legacy code relies on
! the behavior of older compilers in which temporaries' stack space is
  not reused, the aggressive stack reuse can lead to runtime errors. This
  option is used to control the temporary stack reuse optimization.
! .IP "\fB\-ftrapv\fR" 4
  .IX Item "-ftrapv"
  This option generates traps for signed overflow on addition, subtraction,
  multiplication operations.
  The options \fB\-ftrapv\fR and \fB\-fwrapv\fR override each other, so using
! \&\fB\-ftrapv\fR \fB\-fwrapv\fR on the command-line results in
  \&\fB\-fwrapv\fR being effective.  Note that only active options override, so
! using \fB\-ftrapv\fR \fB\-fwrapv\fR \fB\-fno\-wrapv\fR on the command-line
  results in \fB\-ftrapv\fR being effective.
! .IP "\fB\-fwrapv\fR" 4
  .IX Item "-fwrapv"
  This option instructs the compiler to assume that signed arithmetic
  overflow of addition, subtraction and multiplication wraps around
! using twos-complement representation.  This flag enables some optimizations
  and disables others.
  The options \fB\-ftrapv\fR and \fB\-fwrapv\fR override each other, so using
! \&\fB\-ftrapv\fR \fB\-fwrapv\fR on the command-line results in
  \&\fB\-fwrapv\fR being effective.  Note that only active options override, so
! using \fB\-ftrapv\fR \fB\-fwrapv\fR \fB\-fno\-wrapv\fR on the command-line
  results in \fB\-ftrapv\fR being effective.
! .IP "\fB\-fwrapv\-pointer\fR" 4
  .IX Item "-fwrapv-pointer"
  This option instructs the compiler to assume that pointer arithmetic
! overflow on addition and subtraction wraps around using twos-complement
  representation.  This flag disables some optimizations which assume
  pointer overflow is invalid.
! .IP "\fB\-fstrict\-overflow\fR" 4
  .IX Item "-fstrict-overflow"
  This option implies \fB\-fno\-wrapv\fR \fB\-fno\-wrapv\-pointer\fR and when
  negated implies \fB\-fwrapv\fR \fB\-fwrapv\-pointer\fR.
! .IP "\fB\-fexceptions\fR" 4
  .IX Item "-fexceptions"
  Enable exception handling.  Generates extra code needed to propagate
! exceptions.  For some targets, this implies \s-1GCC\s0 generates frame
  unwind information for all functions, which can produce significant data
  size overhead, although it does not affect execution.  If you do not
! specify this option, \s-1GCC\s0 enables it by default for languages like
! \&\*(C+ that normally require exception handling, and disables it for
  languages like C that do not normally require it.  However, you may need
  to enable this option when compiling C code that needs to interoperate
! properly with exception handlers written in \*(C+.  You may also wish to
! disable this option if you are compiling older \*(C+ programs that don't
  use exception handling.
! .IP "\fB\-fnon\-call\-exceptions\fR" 4
  .IX Item "-fnon-call-exceptions"
  Generate code that allows trapping instructions to throw exceptions.
! Note that this requires platform-specific runtime support that does
  not exist everywhere.  Moreover, it only allows \fItrapping\fR
! instructions to throw exceptions, i.e. memory references or floating-point
  instructions.  It does not allow exceptions to be thrown from
  arbitrary signal handlers such as \f(CW\*(C`SIGALRM\*(C'\fR.  This enables
  \&\fB\-fexceptions\fR.
! .IP "\fB\-fdelete\-dead\-exceptions\fR" 4
  .IX Item "-fdelete-dead-exceptions"
! Consider that instructions that may throw exceptions but don't otherwise
  contribute to the execution of the program can be optimized away.
  This does not affect calls to functions except those with the
  \&\f(CW\*(C`pure\*(C'\fR or \f(CW\*(C`const\*(C'\fR attributes.
! This option is enabled by default for the Ada and \*(C+ compilers, as permitted by
  the language specifications.
  Optimization passes that cause dead exceptions to be removed are enabled independently at different optimization levels.
! .IP "\fB\-funwind\-tables\fR" 4
  .IX Item "-funwind-tables"
  Similar to \fB\-fexceptions\fR, except that it just generates any needed
  static data, but does not affect the generated code in any other way.
  You normally do not need to enable this option; instead, a language processor
  that needs this handling enables it on your behalf.
! .IP "\fB\-fasynchronous\-unwind\-tables\fR" 4
  .IX Item "-fasynchronous-unwind-tables"
! Generate unwind table in \s-1DWARF\s0 format, if supported by target machine.  The
  table is exact at each instruction boundary, so it can be used for stack
  unwinding from asynchronous events (such as debugger or garbage collector).
! .IP "\fB\-fno\-gnu\-unique\fR" 4
  .IX Item "-fno-gnu-unique"
! On systems with recent \s-1GNU\s0 assembler and C library, the \*(C+ compiler
  uses the \f(CW\*(C`STB_GNU_UNIQUE\*(C'\fR binding to make sure that definitions
  of template static data members and static local variables in inline
  functions are unique even in the presence of \f(CW\*(C`RTLD_LOCAL\*(C'\fR; this
--- 18977,19065 ----
  \&           }
  .Ve
  .Sp
! The lifetime of a compiler generated temporary is well defined by the C++
  standard. When a lifetime of a temporary ends, and if the temporary lives
  in memory, the optimizing compiler has the freedom to reuse its stack
  space with other temporaries or scoped local variables whose live range
  does not overlap with it. However some of the legacy code relies on
! the behavior of older compilers in which temporaries\*(Aq stack space is
  not reused, the aggressive stack reuse can lead to runtime errors. This
  option is used to control the temporary stack reuse optimization.
! .IP \fB\-ftrapv\fR 4
  .IX Item "-ftrapv"
  This option generates traps for signed overflow on addition, subtraction,
  multiplication operations.
  The options \fB\-ftrapv\fR and \fB\-fwrapv\fR override each other, so using
! \&\fB\-ftrapv\fR \fB\-fwrapv\fR on the command\-line results in
  \&\fB\-fwrapv\fR being effective.  Note that only active options override, so
! using \fB\-ftrapv\fR \fB\-fwrapv\fR \fB\-fno\-wrapv\fR on the command\-line
  results in \fB\-ftrapv\fR being effective.
! .IP \fB\-fwrapv\fR 4
  .IX Item "-fwrapv"
  This option instructs the compiler to assume that signed arithmetic
  overflow of addition, subtraction and multiplication wraps around
! using twos\-complement representation.  This flag enables some optimizations
  and disables others.
  The options \fB\-ftrapv\fR and \fB\-fwrapv\fR override each other, so using
! \&\fB\-ftrapv\fR \fB\-fwrapv\fR on the command\-line results in
  \&\fB\-fwrapv\fR being effective.  Note that only active options override, so
! using \fB\-ftrapv\fR \fB\-fwrapv\fR \fB\-fno\-wrapv\fR on the command\-line
  results in \fB\-ftrapv\fR being effective.
! .IP \fB\-fwrapv\-pointer\fR 4
  .IX Item "-fwrapv-pointer"
  This option instructs the compiler to assume that pointer arithmetic
! overflow on addition and subtraction wraps around using twos\-complement
  representation.  This flag disables some optimizations which assume
  pointer overflow is invalid.
! .IP \fB\-fstrict\-overflow\fR 4
  .IX Item "-fstrict-overflow"
  This option implies \fB\-fno\-wrapv\fR \fB\-fno\-wrapv\-pointer\fR and when
  negated implies \fB\-fwrapv\fR \fB\-fwrapv\-pointer\fR.
! .IP \fB\-fexceptions\fR 4
  .IX Item "-fexceptions"
  Enable exception handling.  Generates extra code needed to propagate
! exceptions.  For some targets, this implies GCC generates frame
  unwind information for all functions, which can produce significant data
  size overhead, although it does not affect execution.  If you do not
! specify this option, GCC enables it by default for languages like
! C++ that normally require exception handling, and disables it for
  languages like C that do not normally require it.  However, you may need
  to enable this option when compiling C code that needs to interoperate
! properly with exception handlers written in C++.  You may also wish to
! disable this option if you are compiling older C++ programs that don\*(Aqt
  use exception handling.
! .IP \fB\-fnon\-call\-exceptions\fR 4
  .IX Item "-fnon-call-exceptions"
  Generate code that allows trapping instructions to throw exceptions.
! Note that this requires platform\-specific runtime support that does
  not exist everywhere.  Moreover, it only allows \fItrapping\fR
! instructions to throw exceptions, i.e. memory references or floating\-point
  instructions.  It does not allow exceptions to be thrown from
  arbitrary signal handlers such as \f(CW\*(C`SIGALRM\*(C'\fR.  This enables
  \&\fB\-fexceptions\fR.
! .IP \fB\-fdelete\-dead\-exceptions\fR 4
  .IX Item "-fdelete-dead-exceptions"
! Consider that instructions that may throw exceptions but don\*(Aqt otherwise
  contribute to the execution of the program can be optimized away.
  This does not affect calls to functions except those with the
  \&\f(CW\*(C`pure\*(C'\fR or \f(CW\*(C`const\*(C'\fR attributes.
! This option is enabled by default for the Ada and C++ compilers, as permitted by
  the language specifications.
  Optimization passes that cause dead exceptions to be removed are enabled independently at different optimization levels.
! .IP \fB\-funwind\-tables\fR 4
  .IX Item "-funwind-tables"
  Similar to \fB\-fexceptions\fR, except that it just generates any needed
  static data, but does not affect the generated code in any other way.
  You normally do not need to enable this option; instead, a language processor
  that needs this handling enables it on your behalf.
! .IP \fB\-fasynchronous\-unwind\-tables\fR 4
  .IX Item "-fasynchronous-unwind-tables"
! Generate unwind table in DWARF format, if supported by target machine.  The
  table is exact at each instruction boundary, so it can be used for stack
  unwinding from asynchronous events (such as debugger or garbage collector).
! .IP \fB\-fno\-gnu\-unique\fR 4
  .IX Item "-fno-gnu-unique"
! On systems with recent GNU assembler and C library, the C++ compiler
  uses the \f(CW\*(C`STB_GNU_UNIQUE\*(C'\fR binding to make sure that definitions
  of template static data members and static local variables in inline
  functions are unique even in the presence of \f(CW\*(C`RTLD_LOCAL\*(C'\fR; this
*************** is necessary to avoid problems with a li
*** 19132,19146 ****
  \&\f(CW\*(C`RTLD_LOCAL\*(C'\fR plugins depending on a definition in one of them and
  therefore disagreeing with the other one about the binding of the
  symbol.  But this causes \f(CW\*(C`dlclose\*(C'\fR to be ignored for affected
! DSOs; if your program relies on reinitialization of a \s-1DSO\s0 via
  \&\f(CW\*(C`dlclose\*(C'\fR and \f(CW\*(C`dlopen\*(C'\fR, you can use
  \&\fB\-fno\-gnu\-unique\fR.
! .IP "\fB\-fpcc\-struct\-return\fR" 4
  .IX Item "-fpcc-struct-return"
! Return \*(L"short\*(R" \f(CW\*(C`struct\*(C'\fR and \f(CW\*(C`union\*(C'\fR values in memory like
  longer ones, rather than in registers.  This convention is less
  efficient, but it has the advantage of allowing intercallability between
! GCC-compiled files and files compiled with other compilers, particularly
  the Portable C Compiler (pcc).
  .Sp
  The precise convention for returning structures in memory depends
--- 19067,19081 ----
  \&\f(CW\*(C`RTLD_LOCAL\*(C'\fR plugins depending on a definition in one of them and
  therefore disagreeing with the other one about the binding of the
  symbol.  But this causes \f(CW\*(C`dlclose\*(C'\fR to be ignored for affected
! DSOs; if your program relies on reinitialization of a DSO via
  \&\f(CW\*(C`dlclose\*(C'\fR and \f(CW\*(C`dlopen\*(C'\fR, you can use
  \&\fB\-fno\-gnu\-unique\fR.
! .IP \fB\-fpcc\-struct\-return\fR 4
  .IX Item "-fpcc-struct-return"
! Return "short" \f(CW\*(C`struct\*(C'\fR and \f(CW\*(C`union\*(C'\fR values in memory like
  longer ones, rather than in registers.  This convention is less
  efficient, but it has the advantage of allowing intercallability between
! GCC\-compiled files and files compiled with other compilers, particularly
  the Portable C Compiler (pcc).
  .Sp
  The precise convention for returning structures in memory depends
*************** that of some integer type.
*** 19152,19176 ****
  \&\fBWarning:\fR code compiled with the \fB\-fpcc\-struct\-return\fR
  switch is not binary compatible with code compiled with the
  \&\fB\-freg\-struct\-return\fR switch.
! Use it to conform to a non-default application binary interface.
! .IP "\fB\-freg\-struct\-return\fR" 4
  .IX Item "-freg-struct-return"
  Return \f(CW\*(C`struct\*(C'\fR and \f(CW\*(C`union\*(C'\fR values in registers when possible.
  This is more efficient for small structures than
  \&\fB\-fpcc\-struct\-return\fR.
  .Sp
  If you specify neither \fB\-fpcc\-struct\-return\fR nor
! \&\fB\-freg\-struct\-return\fR, \s-1GCC\s0 defaults to whichever convention is
! standard for the target.  If there is no standard convention, \s-1GCC\s0
! defaults to \fB\-fpcc\-struct\-return\fR, except on targets where \s-1GCC\s0 is
  the principal compiler.  In those cases, we can choose the standard, and
  we chose the more efficient register return alternative.
  .Sp
  \&\fBWarning:\fR code compiled with the \fB\-freg\-struct\-return\fR
  switch is not binary compatible with code compiled with the
  \&\fB\-fpcc\-struct\-return\fR switch.
! Use it to conform to a non-default application binary interface.
! .IP "\fB\-fshort\-enums\fR" 4
  .IX Item "-fshort-enums"
  Allocate to an \f(CW\*(C`enum\*(C'\fR type only as many bytes as it needs for the
  declared range of possible values.  Specifically, the \f(CW\*(C`enum\*(C'\fR type
--- 19087,19111 ----
  \&\fBWarning:\fR code compiled with the \fB\-fpcc\-struct\-return\fR
  switch is not binary compatible with code compiled with the
  \&\fB\-freg\-struct\-return\fR switch.
! Use it to conform to a non\-default application binary interface.
! .IP \fB\-freg\-struct\-return\fR 4
  .IX Item "-freg-struct-return"
  Return \f(CW\*(C`struct\*(C'\fR and \f(CW\*(C`union\*(C'\fR values in registers when possible.
  This is more efficient for small structures than
  \&\fB\-fpcc\-struct\-return\fR.
  .Sp
  If you specify neither \fB\-fpcc\-struct\-return\fR nor
! \&\fB\-freg\-struct\-return\fR, GCC defaults to whichever convention is
! standard for the target.  If there is no standard convention, GCC
! defaults to \fB\-fpcc\-struct\-return\fR, except on targets where GCC is
  the principal compiler.  In those cases, we can choose the standard, and
  we chose the more efficient register return alternative.
  .Sp
  \&\fBWarning:\fR code compiled with the \fB\-freg\-struct\-return\fR
  switch is not binary compatible with code compiled with the
  \&\fB\-fpcc\-struct\-return\fR switch.
! Use it to conform to a non\-default application binary interface.
! .IP \fB\-fshort\-enums\fR 4
  .IX Item "-fshort-enums"
  Allocate to an \f(CW\*(C`enum\*(C'\fR type only as many bytes as it needs for the
  declared range of possible values.  Specifically, the \f(CW\*(C`enum\*(C'\fR type
*************** is equivalent to the smallest integer ty
*** 19178,19196 ****
  This option has no effect for an enumeration type with a fixed underlying
  type.
  .Sp
! \&\fBWarning:\fR the \fB\-fshort\-enums\fR switch causes \s-1GCC\s0 to generate
  code that is not binary compatible with code generated without that switch.
! Use it to conform to a non-default application binary interface.
! .IP "\fB\-fshort\-wchar\fR" 4
  .IX Item "-fshort-wchar"
  Override the underlying type for \f(CW\*(C`wchar_t\*(C'\fR to be \f(CW\*(C`short
  unsigned int\*(C'\fR instead of the default for the target.  This option is
! useful for building programs to run under \s-1WINE.\s0
  .Sp
! \&\fBWarning:\fR the \fB\-fshort\-wchar\fR switch causes \s-1GCC\s0 to generate
  code that is not binary compatible with code generated without that switch.
! Use it to conform to a non-default application binary interface.
! .IP "\fB\-fcommon\fR" 4
  .IX Item "-fcommon"
  In C code, this option controls the placement of global variables
  defined without an initializer, known as \fItentative definitions\fR
--- 19113,19131 ----
  This option has no effect for an enumeration type with a fixed underlying
  type.
  .Sp
! \&\fBWarning:\fR the \fB\-fshort\-enums\fR switch causes GCC to generate
  code that is not binary compatible with code generated without that switch.
! Use it to conform to a non\-default application binary interface.
! .IP \fB\-fshort\-wchar\fR 4
  .IX Item "-fshort-wchar"
  Override the underlying type for \f(CW\*(C`wchar_t\*(C'\fR to be \f(CW\*(C`short
  unsigned int\*(C'\fR instead of the default for the target.  This option is
! useful for building programs to run under WINE.
  .Sp
! \&\fBWarning:\fR the \fB\-fshort\-wchar\fR switch causes GCC to generate
  code that is not binary compatible with code generated without that switch.
! Use it to conform to a non\-default application binary interface.
! .IP \fB\-fcommon\fR 4
  .IX Item "-fcommon"
  In C code, this option controls the placement of global variables
  defined without an initializer, known as \fItentative definitions\fR
*************** in the C standard.  Tentative definition
*** 19198,19225 ****
  of a variable with the \f(CW\*(C`extern\*(C'\fR keyword, which do not allocate storage.
  .Sp
  The default is \fB\-fno\-common\fR, which specifies that the compiler places
! uninitialized global variables in the \s-1BSS\s0 section of the object file.
  This inhibits the merging of tentative definitions by the linker so you get a
! multiple-definition error if the same variable is accidentally defined in more
  than one compilation unit.
  .Sp
  The \fB\-fcommon\fR places uninitialized global variables in a common block.
  This allows the linker to resolve all tentative definitions of the same variable
! in different compilation units to the same object, or to a non-tentative
! definition.  This behavior is inconsistent with \*(C+, and on many targets implies
  a speed and code size penalty on global variable references.  It is mainly
  useful to enable legacy code to link without errors.
! .IP "\fB\-fno\-ident\fR" 4
  .IX Item "-fno-ident"
  Ignore the \f(CW\*(C`#ident\*(C'\fR directive.
! .IP "\fB\-finhibit\-size\-directive\fR" 4
  .IX Item "-finhibit-size-directive"
! Don't output a \f(CW\*(C`.size\*(C'\fR assembler directive, or anything else that
  would cause trouble if the function is split in the middle, and the
  two halves are placed at locations far apart in memory.  This option is
  used when compiling \fIcrtstuff.c\fR; you should not need to use it
  for anything else.
! .IP "\fB\-fverbose\-asm\fR" 4
  .IX Item "-fverbose-asm"
  Put extra commentary information in the generated assembly code to
  make it more readable.  This option is generally only of use to those
--- 19133,19160 ----
  of a variable with the \f(CW\*(C`extern\*(C'\fR keyword, which do not allocate storage.
  .Sp
  The default is \fB\-fno\-common\fR, which specifies that the compiler places
! uninitialized global variables in the BSS section of the object file.
  This inhibits the merging of tentative definitions by the linker so you get a
! multiple\-definition error if the same variable is accidentally defined in more
  than one compilation unit.
  .Sp
  The \fB\-fcommon\fR places uninitialized global variables in a common block.
  This allows the linker to resolve all tentative definitions of the same variable
! in different compilation units to the same object, or to a non\-tentative
! definition.  This behavior is inconsistent with C++, and on many targets implies
  a speed and code size penalty on global variable references.  It is mainly
  useful to enable legacy code to link without errors.
! .IP \fB\-fno\-ident\fR 4
  .IX Item "-fno-ident"
  Ignore the \f(CW\*(C`#ident\*(C'\fR directive.
! .IP \fB\-finhibit\-size\-directive\fR 4
  .IX Item "-finhibit-size-directive"
! Don\*(Aqt output a \f(CW\*(C`.size\*(C'\fR assembler directive, or anything else that
  would cause trouble if the function is split in the middle, and the
  two halves are placed at locations far apart in memory.  This option is
  used when compiling \fIcrtstuff.c\fR; you should not need to use it
  for anything else.
! .IP \fB\-fverbose\-asm\fR 4
  .IX Item "-fverbose-asm"
  Put extra commentary information in the generated assembly code to
  make it more readable.  This option is generally only of use to those
*************** files.
*** 19232,19244 ****
  .Sp
  The added comments include:
  .RS 4
! .IP "*" 4
! information on the compiler version and command-line options,
! .IP "*" 4
  the source code lines associated with the assembly instructions,
! in the form \s-1FILENAME:LINENUMBER:CONTENT OF LINE,\s0
! .IP "*" 4
! hints on which high-level expressions correspond to
  the various assembly instruction operands.
  .RE
  .RS 4
--- 19167,19179 ----
  .Sp
  The added comments include:
  .RS 4
! .IP * 4
! information on the compiler version and command\-line options,
! .IP * 4
  the source code lines associated with the assembly instructions,
! in the form FILENAME:LINENUMBER:CONTENT OF LINE,
! .IP * 4
! hints on which high\-level expressions correspond to
  the various assembly instruction operands.
  .RE
  .RS 4
*************** gives output similar to this:
*** 19309,19413 ****
  The comments are intended for humans rather than machines and hence the
  precise format of the comments is subject to change.
  .RE
! .IP "\fB\-frecord\-gcc\-switches\fR" 4
  .IX Item "-frecord-gcc-switches"
  This switch causes the command line used to invoke the
  compiler to be recorded into the object file that is being created.
  This switch is only implemented on some targets and the exact format
  of the recording is target and binary file format dependent, but it
! usually takes the form of a section containing \s-1ASCII\s0 text.  This
  switch is related to the \fB\-fverbose\-asm\fR switch, but that
  switch only records information in the assembler output file as
  comments, so it never reaches the object file.
  See also \fB\-grecord\-gcc\-switches\fR for another
  way of storing compiler options into the object file.
! .IP "\fB\-fpic\fR" 4
  .IX Item "-fpic"
! Generate position-independent code (\s-1PIC\s0) suitable for use in a shared
  library, if supported for the target machine.  Such code accesses all
! constant addresses through a global offset table (\s-1GOT\s0).  The dynamic
! loader resolves the \s-1GOT\s0 entries when the program starts (the dynamic
! loader is not part of \s-1GCC\s0; it is part of the operating system).  If
! the \s-1GOT\s0 size for the linked executable exceeds a machine-specific
  maximum size, you get an error message from the linker indicating that
  \&\fB\-fpic\fR does not work; in that case, recompile with \fB\-fPIC\fR
! instead.  (These maximums are 8k on the \s-1SPARC,\s0 28k on AArch64 and 32k
! on the m68k and \s-1RS/6000.\s0  The x86 has no such limit.)
  .Sp
! Position-independent code requires special support, and therefore works
! only on certain machines.  For the x86, \s-1GCC\s0 supports \s-1PIC\s0 for System V
! but not for the Sun 386i.  Code generated for the \s-1IBM RS/6000\s0 is always
! position-independent.
  .Sp
  When this flag is set, the macros \f(CW\*(C`_\|_pic_\|_\*(C'\fR and \f(CW\*(C`_\|_PIC_\|_\*(C'\fR
  are defined to 1.
! .IP "\fB\-fPIC\fR" 4
  .IX Item "-fPIC"
! If supported for the target machine, emit position-independent code,
  suitable for dynamic linking and avoiding any limit on the size of the
  global offset table.  This option makes a difference on AArch64, m68k,
! PowerPC and \s-1SPARC.\s0
  .Sp
! Position-independent code requires special support, and therefore works
  only on certain machines.
  .Sp
  When this flag is set, the macros \f(CW\*(C`_\|_pic_\|_\*(C'\fR and \f(CW\*(C`_\|_PIC_\|_\*(C'\fR
  are defined to 2.
! .IP "\fB\-fpie\fR" 4
  .IX Item "-fpie"
  .PD 0
! .IP "\fB\-fPIE\fR" 4
  .IX Item "-fPIE"
  .PD
  These options are similar to \fB\-fpic\fR and \fB\-fPIC\fR, but the
! generated position-independent code can be only linked into executables.
  Usually these options are used to compile code that will be linked using
! the \fB\-pie\fR \s-1GCC\s0 option.
  .Sp
  \&\fB\-fpie\fR and \fB\-fPIE\fR both define the macros
  \&\f(CW\*(C`_\|_pie_\|_\*(C'\fR and \f(CW\*(C`_\|_PIE_\|_\*(C'\fR.  The macros have the value 1
  for \fB\-fpie\fR and 2 for \fB\-fPIE\fR.
! .IP "\fB\-fno\-plt\fR" 4
  .IX Item "-fno-plt"
! Do not use the \s-1PLT\s0 for external function calls in position-independent code.
! Instead, load the callee address at call sites from the \s-1GOT\s0 and branch to it.
! This leads to more efficient code by eliminating \s-1PLT\s0 stubs and exposing
! \&\s-1GOT\s0 loads to optimizations.  On architectures such as 32\-bit x86 where
! \&\s-1PLT\s0 stubs expect the \s-1GOT\s0 pointer in a specific register, this gives more
  register allocation freedom to the compiler.
! Lazy binding requires use of the \s-1PLT\s0;
  with \fB\-fno\-plt\fR all external symbols are resolved at load time.
  .Sp
  Alternatively, the function attribute \f(CW\*(C`noplt\*(C'\fR can be used to avoid calls
! through the \s-1PLT\s0 for specific external functions.
  .Sp
! In position-dependent code, a few targets also convert calls to
! functions that are marked to not use the \s-1PLT\s0 to use the \s-1GOT\s0 instead.
! .IP "\fB\-fno\-jump\-tables\fR" 4
  .IX Item "-fno-jump-tables"
  Do not use jump tables for switch statements even where it would be
  more efficient than other code generation strategies.  This option is
  of use in conjunction with \fB\-fpic\fR or \fB\-fPIC\fR for
  building code that forms part of a dynamic linker and cannot
  reference the address of a jump table.  On some targets, jump tables
! do not require a \s-1GOT\s0 and this option is not needed.
! .IP "\fB\-fno\-bit\-tests\fR" 4
  .IX Item "-fno-bit-tests"
  Do not use bit tests for switch statements even where it would be
  more efficient than other code generation strategies.
! .IP "\fB\-ffixed\-\fR\fIreg\fR" 4
  .IX Item "-ffixed-reg"
  Treat the register named \fIreg\fR as a fixed register; generated code
  should never refer to it (except perhaps as a stack pointer, frame
  pointer or in some other fixed role).
  .Sp
  \&\fIreg\fR must be the name of a register.  The register names accepted
! are machine-specific and are defined in the \f(CW\*(C`REGISTER_NAMES\*(C'\fR
  macro in the machine description macro file.
  .Sp
  This flag does not have a negative form, because it specifies a
! three-way choice.
! .IP "\fB\-fcall\-used\-\fR\fIreg\fR" 4
  .IX Item "-fcall-used-reg"
  Treat the register named \fIreg\fR as an allocable register that is
  clobbered by function calls.  It may be allocated for temporaries or
--- 19244,19348 ----
  The comments are intended for humans rather than machines and hence the
  precise format of the comments is subject to change.
  .RE
! .IP \fB\-frecord\-gcc\-switches\fR 4
  .IX Item "-frecord-gcc-switches"
  This switch causes the command line used to invoke the
  compiler to be recorded into the object file that is being created.
  This switch is only implemented on some targets and the exact format
  of the recording is target and binary file format dependent, but it
! usually takes the form of a section containing ASCII text.  This
  switch is related to the \fB\-fverbose\-asm\fR switch, but that
  switch only records information in the assembler output file as
  comments, so it never reaches the object file.
  See also \fB\-grecord\-gcc\-switches\fR for another
  way of storing compiler options into the object file.
! .IP \fB\-fpic\fR 4
  .IX Item "-fpic"
! Generate position\-independent code (PIC) suitable for use in a shared
  library, if supported for the target machine.  Such code accesses all
! constant addresses through a global offset table (GOT).  The dynamic
! loader resolves the GOT entries when the program starts (the dynamic
! loader is not part of GCC; it is part of the operating system).  If
! the GOT size for the linked executable exceeds a machine\-specific
  maximum size, you get an error message from the linker indicating that
  \&\fB\-fpic\fR does not work; in that case, recompile with \fB\-fPIC\fR
! instead.  (These maximums are 8k on the SPARC, 28k on AArch64 and 32k
! on the m68k and RS/6000.  The x86 has no such limit.)
  .Sp
! Position\-independent code requires special support, and therefore works
! only on certain machines.  For the x86, GCC supports PIC for System V
! but not for the Sun 386i.  Code generated for the IBM RS/6000 is always
! position\-independent.
  .Sp
  When this flag is set, the macros \f(CW\*(C`_\|_pic_\|_\*(C'\fR and \f(CW\*(C`_\|_PIC_\|_\*(C'\fR
  are defined to 1.
! .IP \fB\-fPIC\fR 4
  .IX Item "-fPIC"
! If supported for the target machine, emit position\-independent code,
  suitable for dynamic linking and avoiding any limit on the size of the
  global offset table.  This option makes a difference on AArch64, m68k,
! PowerPC and SPARC.
  .Sp
! Position\-independent code requires special support, and therefore works
  only on certain machines.
  .Sp
  When this flag is set, the macros \f(CW\*(C`_\|_pic_\|_\*(C'\fR and \f(CW\*(C`_\|_PIC_\|_\*(C'\fR
  are defined to 2.
! .IP \fB\-fpie\fR 4
  .IX Item "-fpie"
  .PD 0
! .IP \fB\-fPIE\fR 4
  .IX Item "-fPIE"
  .PD
  These options are similar to \fB\-fpic\fR and \fB\-fPIC\fR, but the
! generated position\-independent code can be only linked into executables.
  Usually these options are used to compile code that will be linked using
! the \fB\-pie\fR GCC option.
  .Sp
  \&\fB\-fpie\fR and \fB\-fPIE\fR both define the macros
  \&\f(CW\*(C`_\|_pie_\|_\*(C'\fR and \f(CW\*(C`_\|_PIE_\|_\*(C'\fR.  The macros have the value 1
  for \fB\-fpie\fR and 2 for \fB\-fPIE\fR.
! .IP \fB\-fno\-plt\fR 4
  .IX Item "-fno-plt"
! Do not use the PLT for external function calls in position\-independent code.
! Instead, load the callee address at call sites from the GOT and branch to it.
! This leads to more efficient code by eliminating PLT stubs and exposing
! GOT loads to optimizations.  On architectures such as 32\-bit x86 where
! PLT stubs expect the GOT pointer in a specific register, this gives more
  register allocation freedom to the compiler.
! Lazy binding requires use of the PLT;
  with \fB\-fno\-plt\fR all external symbols are resolved at load time.
  .Sp
  Alternatively, the function attribute \f(CW\*(C`noplt\*(C'\fR can be used to avoid calls
! through the PLT for specific external functions.
  .Sp
! In position\-dependent code, a few targets also convert calls to
! functions that are marked to not use the PLT to use the GOT instead.
! .IP \fB\-fno\-jump\-tables\fR 4
  .IX Item "-fno-jump-tables"
  Do not use jump tables for switch statements even where it would be
  more efficient than other code generation strategies.  This option is
  of use in conjunction with \fB\-fpic\fR or \fB\-fPIC\fR for
  building code that forms part of a dynamic linker and cannot
  reference the address of a jump table.  On some targets, jump tables
! do not require a GOT and this option is not needed.
! .IP \fB\-fno\-bit\-tests\fR 4
  .IX Item "-fno-bit-tests"
  Do not use bit tests for switch statements even where it would be
  more efficient than other code generation strategies.
! .IP \fB\-ffixed\-\fR\fIreg\fR 4
  .IX Item "-ffixed-reg"
  Treat the register named \fIreg\fR as a fixed register; generated code
  should never refer to it (except perhaps as a stack pointer, frame
  pointer or in some other fixed role).
  .Sp
  \&\fIreg\fR must be the name of a register.  The register names accepted
! are machine\-specific and are defined in the \f(CW\*(C`REGISTER_NAMES\*(C'\fR
  macro in the machine description macro file.
  .Sp
  This flag does not have a negative form, because it specifies a
! three\-way choice.
! .IP \fB\-fcall\-used\-\fR\fIreg\fR 4
  .IX Item "-fcall-used-reg"
  Treat the register named \fIreg\fR as an allocable register that is
  clobbered by function calls.  It may be allocated for temporaries or
*************** do not save and restore the register \fI
*** 19416,19426 ****
  .Sp
  It is an error to use this flag with the frame pointer or stack pointer.
  Use of this flag for other registers that have fixed pervasive roles in
! the machine's execution model produces disastrous results.
  .Sp
  This flag does not have a negative form, because it specifies a
! three-way choice.
! .IP "\fB\-fcall\-saved\-\fR\fIreg\fR" 4
  .IX Item "-fcall-saved-reg"
  Treat the register named \fIreg\fR as an allocable register saved by
  functions.  It may be allocated even for temporaries or variables that
--- 19351,19361 ----
  .Sp
  It is an error to use this flag with the frame pointer or stack pointer.
  Use of this flag for other registers that have fixed pervasive roles in
! the machine\*(Aqs execution model produces disastrous results.
  .Sp
  This flag does not have a negative form, because it specifies a
! three\-way choice.
! .IP \fB\-fcall\-saved\-\fR\fIreg\fR 4
  .IX Item "-fcall-saved-reg"
  Treat the register named \fIreg\fR as an allocable register saved by
  functions.  It may be allocated even for temporaries or variables that
*************** the register \fIreg\fR if they use it.
*** 19429,19442 ****
  .Sp
  It is an error to use this flag with the frame pointer or stack pointer.
  Use of this flag for other registers that have fixed pervasive roles in
! the machine's execution model produces disastrous results.
  .Sp
  A different sort of disaster results from the use of this flag for
  a register in which function values may be returned.
  .Sp
  This flag does not have a negative form, because it specifies a
! three-way choice.
! .IP "\fB\-fpack\-struct[=\fR\fIn\fR\fB]\fR" 4
  .IX Item "-fpack-struct[=n]"
  Without a value specified, pack all structure members together without
  holes.  When a value is specified (which must be a small power of two), pack
--- 19364,19377 ----
  .Sp
  It is an error to use this flag with the frame pointer or stack pointer.
  Use of this flag for other registers that have fixed pervasive roles in
! the machine\*(Aqs execution model produces disastrous results.
  .Sp
  A different sort of disaster results from the use of this flag for
  a register in which function values may be returned.
  .Sp
  This flag does not have a negative form, because it specifies a
! three\-way choice.
! .IP \fB\-fpack\-struct[=\fR\fIn\fR\fB]\fR 4
  .IX Item "-fpack-struct[=n]"
  Without a value specified, pack all structure members together without
  holes.  When a value is specified (which must be a small power of two), pack
*************** structure members according to this valu
*** 19444,19479 ****
  alignment (that is, objects with default alignment requirements larger than
  this are output potentially unaligned at the next fitting location.
  .Sp
! \&\fBWarning:\fR the \fB\-fpack\-struct\fR switch causes \s-1GCC\s0 to generate
  code that is not binary compatible with code generated without that switch.
  Additionally, it makes the code suboptimal.
! Use it to conform to a non-default application binary interface.
! .IP "\fB\-fleading\-underscore\fR" 4
  .IX Item "-fleading-underscore"
  This option and its counterpart, \fB\-fno\-leading\-underscore\fR, forcibly
  change the way C symbols are represented in the object file.  One use
  is to help link with legacy assembly code.
  .Sp
! \&\fBWarning:\fR the \fB\-fleading\-underscore\fR switch causes \s-1GCC\s0 to
  generate code that is not binary compatible with code generated without that
! switch.  Use it to conform to a non-default application binary interface.
  Not all targets provide complete support for this switch.
! .IP "\fB\-ftls\-model=\fR\fImodel\fR" 4
  .IX Item "-ftls-model=model"
! Alter the thread-local storage model to be used.
! The \fImodel\fR argument should be one of \fBglobal-dynamic\fR,
! \&\fBlocal-dynamic\fR, \fBinitial-exec\fR or \fBlocal-exec\fR.
  Note that the choice is subject to optimization: the compiler may use
  a more efficient model for symbols not visible outside of the translation
  unit, or if \fB\-fpic\fR is not given on the command line.
  .Sp
! The default without \fB\-fpic\fR is \fBinitial-exec\fR; with
! \&\fB\-fpic\fR the default is \fBglobal-dynamic\fR.
! .IP "\fB\-ftrampolines\fR" 4
  .IX Item "-ftrampolines"
  For targets that normally need trampolines for nested functions, always
  generate them instead of using descriptors.  Otherwise, for targets that
! do not need them, like for example HP-PA or \s-1IA\-64,\s0 do nothing.
  .Sp
  A trampoline is a small piece of code that is created at run time on the
  stack when the address of a nested function is taken, and is used to call
--- 19379,19414 ----
  alignment (that is, objects with default alignment requirements larger than
  this are output potentially unaligned at the next fitting location.
  .Sp
! \&\fBWarning:\fR the \fB\-fpack\-struct\fR switch causes GCC to generate
  code that is not binary compatible with code generated without that switch.
  Additionally, it makes the code suboptimal.
! Use it to conform to a non\-default application binary interface.
! .IP \fB\-fleading\-underscore\fR 4
  .IX Item "-fleading-underscore"
  This option and its counterpart, \fB\-fno\-leading\-underscore\fR, forcibly
  change the way C symbols are represented in the object file.  One use
  is to help link with legacy assembly code.
  .Sp
! \&\fBWarning:\fR the \fB\-fleading\-underscore\fR switch causes GCC to
  generate code that is not binary compatible with code generated without that
! switch.  Use it to conform to a non\-default application binary interface.
  Not all targets provide complete support for this switch.
! .IP \fB\-ftls\-model=\fR\fImodel\fR 4
  .IX Item "-ftls-model=model"
! Alter the thread\-local storage model to be used.
! The \fImodel\fR argument should be one of \fBglobal\-dynamic\fR,
! \&\fBlocal\-dynamic\fR, \fBinitial\-exec\fR or \fBlocal\-exec\fR.
  Note that the choice is subject to optimization: the compiler may use
  a more efficient model for symbols not visible outside of the translation
  unit, or if \fB\-fpic\fR is not given on the command line.
  .Sp
! The default without \fB\-fpic\fR is \fBinitial\-exec\fR; with
! \&\fB\-fpic\fR the default is \fBglobal\-dynamic\fR.
! .IP \fB\-ftrampolines\fR 4
  .IX Item "-ftrampolines"
  For targets that normally need trampolines for nested functions, always
  generate them instead of using descriptors.  Otherwise, for targets that
! do not need them, like for example HP\-PA or IA\-64, do nothing.
  .Sp
  A trampoline is a small piece of code that is created at run time on the
  stack when the address of a nested function is taken, and is used to call
*************** writing, \fB\-fno\-trampolines\fR is ena
*** 19488,19501 ****
  .Sp
  Moreover, code compiled with \fB\-ftrampolines\fR and code compiled with
  \&\fB\-fno\-trampolines\fR are not binary compatible if nested functions are
! present.  This option must therefore be used on a program-wide basis and be
  manipulated with extreme care.
  .Sp
  For languages other than Ada, the \f(CW\*(C`\-ftrampolines\*(C'\fR and
  \&\f(CW\*(C`\-fno\-trampolines\*(C'\fR options currently have no effect, and
  trampolines are always generated on platforms that need them
  for nested functions.
! .IP "\fB\-ftrampoline\-impl=\fR[\fBstack\fR|\fBheap\fR]" 4
  .IX Item "-ftrampoline-impl=[stack|heap]"
  By default, trampolines are generated on stack.  However, certain platforms
  (such as the Apple M1) do not permit an executable stack.  Compiling with
--- 19423,19436 ----
  .Sp
  Moreover, code compiled with \fB\-ftrampolines\fR and code compiled with
  \&\fB\-fno\-trampolines\fR are not binary compatible if nested functions are
! present.  This option must therefore be used on a program\-wide basis and be
  manipulated with extreme care.
  .Sp
  For languages other than Ada, the \f(CW\*(C`\-ftrampolines\*(C'\fR and
  \&\f(CW\*(C`\-fno\-trampolines\*(C'\fR options currently have no effect, and
  trampolines are always generated on platforms that need them
  for nested functions.
! .IP \fB\-ftrampoline\-impl=\fR[\fBstack\fR|\fBheap\fR] 4
  .IX Item "-ftrampoline-impl=[stack|heap]"
  By default, trampolines are generated on stack.  However, certain platforms
  (such as the Apple M1) do not permit an executable stack.  Compiling with
*************** By default, trampolines are generated on
*** 19504,19533 ****
  \&\f(CW\*(C`_\|_gcc_nested_func_ptr_deleted\*(C'\fR in order to allocate and
  deallocate trampoline space on the executable heap.  These functions are
  implemented in libgcc, and will only be provided on specific targets:
! x86_64 Darwin, x86_64 and aarch64 Linux.  \fI\s-1PLEASE NOTE\s0\fR: Heap
  trampolines are \fInot\fR guaranteed to be correctly deallocated if you
  \&\f(CW\*(C`setjmp\*(C'\fR, instantiate nested functions, and then \f(CW\*(C`longjmp\*(C'\fR back
  to a state prior to having allocated those nested functions.
! .IP "\fB\-fvisibility=\fR[\fBdefault\fR|\fBinternal\fR|\fBhidden\fR|\fBprotected\fR]" 4
  .IX Item "-fvisibility=[default|internal|hidden|protected]"
! Set the default \s-1ELF\s0 image symbol visibility to the specified option\-\-\-all
  symbols are marked with this unless overridden within the code.
  Using this feature can very substantially improve linking and
  load times of shared object libraries, produce more optimized
! code, provide near-perfect \s-1API\s0 export and prevent symbol clashes.
  It is \fBstrongly\fR recommended that you use this in any shared objects
  you distribute.
  .Sp
  Despite the nomenclature, \fBdefault\fR always means public; i.e.,
  available to be linked against from outside the shared object.
! \&\fBprotected\fR and \fBinternal\fR are pretty useless in real-world
  usage so the only other commonly used option is \fBhidden\fR.
! The default if \fB\-fvisibility\fR isn't specified is
  \&\fBdefault\fR, i.e., make every symbol public.
  .Sp
! A good explanation of the benefits offered by ensuring \s-1ELF\s0
! symbols have the correct visibility is given by \*(L"How To Write
! Shared Libraries\*(R" by Ulrich Drepper (which can be found at
  <\fBhttps://www.akkadia.org/drepper/\fR>)\-\-\-however a superior
  solution made possible by this option to marking things hidden when
  the default is public is to make the default hidden and mark things
--- 19439,19468 ----
  \&\f(CW\*(C`_\|_gcc_nested_func_ptr_deleted\*(C'\fR in order to allocate and
  deallocate trampoline space on the executable heap.  These functions are
  implemented in libgcc, and will only be provided on specific targets:
! x86_64 Darwin, x86_64 and aarch64 Linux.  \fIPLEASE NOTE\fR: Heap
  trampolines are \fInot\fR guaranteed to be correctly deallocated if you
  \&\f(CW\*(C`setjmp\*(C'\fR, instantiate nested functions, and then \f(CW\*(C`longjmp\*(C'\fR back
  to a state prior to having allocated those nested functions.
! .IP \fB\-fvisibility=\fR[\fBdefault\fR|\fBinternal\fR|\fBhidden\fR|\fBprotected\fR] 4
  .IX Item "-fvisibility=[default|internal|hidden|protected]"
! Set the default ELF image symbol visibility to the specified option\-\-\-all
  symbols are marked with this unless overridden within the code.
  Using this feature can very substantially improve linking and
  load times of shared object libraries, produce more optimized
! code, provide near\-perfect API export and prevent symbol clashes.
  It is \fBstrongly\fR recommended that you use this in any shared objects
  you distribute.
  .Sp
  Despite the nomenclature, \fBdefault\fR always means public; i.e.,
  available to be linked against from outside the shared object.
! \&\fBprotected\fR and \fBinternal\fR are pretty useless in real\-world
  usage so the only other commonly used option is \fBhidden\fR.
! The default if \fB\-fvisibility\fR isn\*(Aqt specified is
  \&\fBdefault\fR, i.e., make every symbol public.
  .Sp
! A good explanation of the benefits offered by ensuring ELF
! symbols have the correct visibility is given by "How To Write
! Shared Libraries" by Ulrich Drepper (which can be found at
  <\fBhttps://www.akkadia.org/drepper/\fR>)\-\-\-however a superior
  solution made possible by this option to marking things hidden when
  the default is public is to make the default hidden and mark things
*************** public.  This is the norm with DLLs on W
*** 19535,19541 ****
  and \f(CW\*(C`_\|_attribute_\|_ ((visibility("default")))\*(C'\fR instead of
  \&\f(CW\*(C`_\|_declspec(dllexport)\*(C'\fR you get almost identical semantics with
  identical syntax.  This is a great boon to those working with
! cross-platform projects.
  .Sp
  For those adding visibility support to existing code, you may find
  \&\f(CW\*(C`#pragma GCC visibility\*(C'\fR of use.  This works by you enclosing
--- 19470,19476 ----
  and \f(CW\*(C`_\|_attribute_\|_ ((visibility("default")))\*(C'\fR instead of
  \&\f(CW\*(C`_\|_declspec(dllexport)\*(C'\fR you get almost identical semantics with
  identical syntax.  This is a great boon to those working with
! cross\-platform projects.
  .Sp
  For those adding visibility support to existing code, you may find
  \&\f(CW\*(C`#pragma GCC visibility\*(C'\fR of use.  This works by you enclosing
*************** the declarations you wish to set visibil
*** 19543,19554 ****
  \&\f(CW\*(C`#pragma GCC visibility push(hidden)\*(C'\fR and
  \&\f(CW\*(C`#pragma GCC visibility pop\*(C'\fR.
  Bear in mind that symbol visibility should be viewed \fBas
! part of the \s-1API\s0 interface contract\fR and thus all new code should
  always specify visibility when it is not the default; i.e., declarations
! only for use within the local \s-1DSO\s0 should \fBalways\fR be marked explicitly
! as hidden as so to avoid \s-1PLT\s0 indirection overheads\-\-\-making this
! abundantly clear also aids readability and self-documentation of the code.
! Note that due to \s-1ISO \*(C+\s0 specification requirements, \f(CW\*(C`operator new\*(C'\fR and
  \&\f(CW\*(C`operator delete\*(C'\fR must always be of default visibility.
  .Sp
  Be aware that headers from outside your project, in particular system
--- 19478,19489 ----
  \&\f(CW\*(C`#pragma GCC visibility push(hidden)\*(C'\fR and
  \&\f(CW\*(C`#pragma GCC visibility pop\*(C'\fR.
  Bear in mind that symbol visibility should be viewed \fBas
! part of the API interface contract\fR and thus all new code should
  always specify visibility when it is not the default; i.e., declarations
! only for use within the local DSO should \fBalways\fR be marked explicitly
! as hidden as so to avoid PLT indirection overheads\-\-\-making this
! abundantly clear also aids readability and self\-documentation of the code.
! Note that due to ISO C++ specification requirements, \f(CW\*(C`operator new\*(C'\fR and
  \&\f(CW\*(C`operator delete\*(C'\fR must always be of default visibility.
  .Sp
  Be aware that headers from outside your project, in particular system
*************** before including any such headers.
*** 19560,19571 ****
  \&\f(CW\*(C`extern\*(C'\fR declarations are not affected by \fB\-fvisibility\fR, so
  a lot of code can be recompiled with \fB\-fvisibility=hidden\fR with
  no modifications.  However, this means that calls to \f(CW\*(C`extern\*(C'\fR
! functions with no explicit visibility use the \s-1PLT,\s0 so it is more
  effective to use \f(CW\*(C`_\|_attribute ((visibility))\*(C'\fR and/or
  \&\f(CW\*(C`#pragma GCC visibility\*(C'\fR to tell the compiler which \f(CW\*(C`extern\*(C'\fR
  declarations should be treated as hidden.
  .Sp
! Note that \fB\-fvisibility\fR does affect \*(C+ vague linkage
  entities. This means that, for instance, an exception class that is
  be thrown between DSOs must be explicitly marked with default
  visibility so that the \fBtype_info\fR nodes are unified between
--- 19495,19506 ----
  \&\f(CW\*(C`extern\*(C'\fR declarations are not affected by \fB\-fvisibility\fR, so
  a lot of code can be recompiled with \fB\-fvisibility=hidden\fR with
  no modifications.  However, this means that calls to \f(CW\*(C`extern\*(C'\fR
! functions with no explicit visibility use the PLT, so it is more
  effective to use \f(CW\*(C`_\|_attribute ((visibility))\*(C'\fR and/or
  \&\f(CW\*(C`#pragma GCC visibility\*(C'\fR to tell the compiler which \f(CW\*(C`extern\*(C'\fR
  declarations should be treated as hidden.
  .Sp
! Note that \fB\-fvisibility\fR does affect C++ vague linkage
  entities. This means that, for instance, an exception class that is
  be thrown between DSOs must be explicitly marked with default
  visibility so that the \fBtype_info\fR nodes are unified between
*************** the DSOs.
*** 19573,19624 ****
  .Sp
  An overview of these techniques, their benefits and how to use them
  is at <\fBhttps://gcc.gnu.org/wiki/Visibility\fR>.
! .IP "\fB\-fstrict\-volatile\-bitfields\fR" 4
  .IX Item "-fstrict-volatile-bitfields"
! This option should be used if accesses to volatile bit-fields (or other
  structure fields, although the compiler usually honors those types
  anyway) should use a single access of the width of the
! field's type, aligned to a natural alignment if possible.  For
! example, targets with memory-mapped peripheral registers might require
  all such accesses to be 16 bits wide; with this flag you can
! declare all peripheral bit-fields as \f(CW\*(C`unsigned short\*(C'\fR (assuming short
! is 16 bits on these targets) to force \s-1GCC\s0 to use 16\-bit accesses
  instead of, perhaps, a more efficient 32\-bit access.
  .Sp
  If this option is disabled, the compiler uses the most efficient
  instruction.  In the previous example, that might be a 32\-bit load
  instruction, even though that accesses bytes that do not contain
! any portion of the bit-field, or memory-mapped registers unrelated to
  the one being updated.
  .Sp
  In some cases, such as when the \f(CW\*(C`packed\*(C'\fR attribute is applied to a
  structure field, it may not be possible to access the field with a single
  read or write that is correctly aligned for the target machine.  In this
! case \s-1GCC\s0 falls back to generating multiple accesses rather than code that
  will fault or truncate the result at run time.
  .Sp
! Note:  Due to restrictions of the C/\*(C+11 memory model, write accesses are
! not allowed to touch non bit-field members.  It is therefore recommended
! to define all bits of the field's type as bit-field members.
  .Sp
  The default value of this option is determined by the application binary
  interface for the target processor.
! .IP "\fB\-fsync\-libcalls\fR" 4
  .IX Item "-fsync-libcalls"
! This option controls whether any out-of-line instance of the \f(CW\*(C`_\|_sync\*(C'\fR
! family of functions may be used to implement the \*(C+11 \f(CW\*(C`_\|_atomic\*(C'\fR
  family of functions.
  .Sp
  The default value of this option is enabled, thus the only useful form
  of the option is \fB\-fno\-sync\-libcalls\fR.  This option is used in
  the implementation of the \fIlibatomic\fR runtime library.
! .IP "\fB\-fzero\-init\-padding\-bits=\fR\fIvalue\fR" 4
  .IX Item "-fzero-init-padding-bits=value"
  Guarantee zero initialization of padding bits in automatic variable
  initializers.
  Certain languages guarantee zero initialization of padding bits in
  certain cases, e.g. C23 when using empty initializers (\f(CW\*(C`{}\*(C'\fR),
! or \*(C+ when using zero-initialization or C guarantees that fields
  not specified in an initializer have their padding bits zero initialized.
  This option allows to change when padding bits in initializers are
  guaranteed to be zero initialized.
--- 19508,19559 ----
  .Sp
  An overview of these techniques, their benefits and how to use them
  is at <\fBhttps://gcc.gnu.org/wiki/Visibility\fR>.
! .IP \fB\-fstrict\-volatile\-bitfields\fR 4
  .IX Item "-fstrict-volatile-bitfields"
! This option should be used if accesses to volatile bit\-fields (or other
  structure fields, although the compiler usually honors those types
  anyway) should use a single access of the width of the
! field\*(Aqs type, aligned to a natural alignment if possible.  For
! example, targets with memory\-mapped peripheral registers might require
  all such accesses to be 16 bits wide; with this flag you can
! declare all peripheral bit\-fields as \f(CW\*(C`unsigned short\*(C'\fR (assuming short
! is 16 bits on these targets) to force GCC to use 16\-bit accesses
  instead of, perhaps, a more efficient 32\-bit access.
  .Sp
  If this option is disabled, the compiler uses the most efficient
  instruction.  In the previous example, that might be a 32\-bit load
  instruction, even though that accesses bytes that do not contain
! any portion of the bit\-field, or memory\-mapped registers unrelated to
  the one being updated.
  .Sp
  In some cases, such as when the \f(CW\*(C`packed\*(C'\fR attribute is applied to a
  structure field, it may not be possible to access the field with a single
  read or write that is correctly aligned for the target machine.  In this
! case GCC falls back to generating multiple accesses rather than code that
  will fault or truncate the result at run time.
  .Sp
! Note:  Due to restrictions of the C/C++11 memory model, write accesses are
! not allowed to touch non bit\-field members.  It is therefore recommended
! to define all bits of the field\*(Aqs type as bit\-field members.
  .Sp
  The default value of this option is determined by the application binary
  interface for the target processor.
! .IP \fB\-fsync\-libcalls\fR 4
  .IX Item "-fsync-libcalls"
! This option controls whether any out\-of\-line instance of the \f(CW\*(C`_\|_sync\*(C'\fR
! family of functions may be used to implement the C++11 \f(CW\*(C`_\|_atomic\*(C'\fR
  family of functions.
  .Sp
  The default value of this option is enabled, thus the only useful form
  of the option is \fB\-fno\-sync\-libcalls\fR.  This option is used in
  the implementation of the \fIlibatomic\fR runtime library.
! .IP \fB\-fzero\-init\-padding\-bits=\fR\fIvalue\fR 4
  .IX Item "-fzero-init-padding-bits=value"
  Guarantee zero initialization of padding bits in automatic variable
  initializers.
  Certain languages guarantee zero initialization of padding bits in
  certain cases, e.g. C23 when using empty initializers (\f(CW\*(C`{}\*(C'\fR),
! or C++ when using zero\-initialization or C guarantees that fields
  not specified in an initializer have their padding bits zero initialized.
  This option allows to change when padding bits in initializers are
  guaranteed to be zero initialized.
*************** if the initializer of an union is empty
*** 19640,19646 ****
  are zero initialized) or if the initialized member of the union is
  smaller than the size of the union (in that case guarantees padding
  bits outside of the initialized member to be zero initialized).
! This was the \s-1GCC\s0 behavior before \s-1GCC 15\s0 and in the above example guarantees
  zero initialization of last \f(CW\*(C`sizeof (unsigned long long) \- 1\*(C'\fR
  bytes in the union.
  .Sp
--- 19575,19581 ----
  are zero initialized) or if the initialized member of the union is
  smaller than the size of the union (in that case guarantees padding
  bits outside of the initialized member to be zero initialized).
! This was the GCC behavior before GCC 15 and in the above example guarantees
  zero initialization of last \f(CW\*(C`sizeof (unsigned long long) \- 1\*(C'\fR
  bytes in the union.
  .Sp
*************** bytes in the union.
*** 19648,19666 ****
  zero initialization of padding bits of other aggregates, so
  the padding in between \f(CW\*(C`b.a\*(C'\fR and \f(CW\*(C`b.b\*(C'\fR (if any) and
  tail padding in the structure (if any).
! .SS "\s-1GCC\s0 Developer Options"
  .IX Subsection "GCC Developer Options"
! This section describes command-line options that are primarily of
! interest to \s-1GCC\s0 developers, including options to support compiler
! testing and investigation of compiler bugs and compile-time
  performance problems.  This includes options that produce debug dumps
  at various points in the compilation; that print statistics such as
! memory use and execution time; and that print information about \s-1GCC\s0's
  configuration, such as where it searches for libraries.  You should
  rarely need to use any of these options for ordinary compilation and
  linking tasks.
  .PP
! Many developer options that cause \s-1GCC\s0 to dump output to a file take an
  optional \fB=\fR\fIfilename\fR suffix. You can specify \fBstdout\fR
  or \fB\-\fR to dump to standard output, and \fBstderr\fR for standard
  error.
--- 19583,19601 ----
  zero initialization of padding bits of other aggregates, so
  the padding in between \f(CW\*(C`b.a\*(C'\fR and \f(CW\*(C`b.b\*(C'\fR (if any) and
  tail padding in the structure (if any).
! .SS "GCC Developer Options"
  .IX Subsection "GCC Developer Options"
! This section describes command\-line options that are primarily of
! interest to GCC developers, including options to support compiler
! testing and investigation of compiler bugs and compile\-time
  performance problems.  This includes options that produce debug dumps
  at various points in the compilation; that print statistics such as
! memory use and execution time; and that print information about GCC\*(Aqs
  configuration, such as where it searches for libraries.  You should
  rarely need to use any of these options for ordinary compilation and
  linking tasks.
  .PP
! Many developer options that cause GCC to dump output to a file take an
  optional \fB=\fR\fIfilename\fR suffix. You can specify \fBstdout\fR
  or \fB\-\fR to dump to standard output, and \fBstderr\fR for standard
  error.
*************** phase letter, and pass name.  The base d
*** 19671,19694 ****
  output file produced by the compiler if explicitly specified and not
  an executable; otherwise it is the source file name.
  The pass number is determined by the order passes are registered with
! the compiler's pass manager.
  This is generally the same as the order of execution, but passes
! registered by plugins, target-specific passes, or passes that are
  otherwise registered late are numbered higher than the pass named
  \&\fBfinal\fR, even if they are executed earlier.  The phase letter is
! one of \fBi\fR (inter-procedural analysis), \fBl\fR
! (language-specific), \fBr\fR (\s-1RTL\s0), or \fBt\fR (tree).
  The files are created in the directory of the output file.
! .IP "\fB\-fcallgraph\-info\fR" 4
  .IX Item "-fcallgraph-info"
  .PD 0
! .IP "\fB\-fcallgraph\-info=\fR\fI\s-1MARKERS\s0\fR" 4
  .IX Item "-fcallgraph-info=MARKERS"
  .PD
  Makes the compiler output callgraph information for the program, on a
! per-object-file basis.  The information is generated in the common \s-1VCG\s0
! format.  It can be decorated with additional, per-node and/or per-edge
! information, if a list of comma-separated markers is additionally
  specified.  When the \f(CW\*(C`su\*(C'\fR marker is specified, the callgraph is
  decorated with stack usage information; it is equivalent to
  \&\fB\-fstack\-usage\fR.  When the \f(CW\*(C`da\*(C'\fR marker is specified, the
--- 19606,19629 ----
  output file produced by the compiler if explicitly specified and not
  an executable; otherwise it is the source file name.
  The pass number is determined by the order passes are registered with
! the compiler\*(Aqs pass manager.
  This is generally the same as the order of execution, but passes
! registered by plugins, target\-specific passes, or passes that are
  otherwise registered late are numbered higher than the pass named
  \&\fBfinal\fR, even if they are executed earlier.  The phase letter is
! one of \fBi\fR (inter\-procedural analysis), \fBl\fR
! (language\-specific), \fBr\fR (RTL), or \fBt\fR (tree).
  The files are created in the directory of the output file.
! .IP \fB\-fcallgraph\-info\fR 4
  .IX Item "-fcallgraph-info"
  .PD 0
! .IP \fB\-fcallgraph\-info=\fR\fIMARKERS\fR 4
  .IX Item "-fcallgraph-info=MARKERS"
  .PD
  Makes the compiler output callgraph information for the program, on a
! per\-object\-file basis.  The information is generated in the common VCG
! format.  It can be decorated with additional, per\-node and/or per\-edge
! information, if a list of comma\-separated markers is additionally
  specified.  When the \f(CW\*(C`su\*(C'\fR marker is specified, the callgraph is
  decorated with stack usage information; it is equivalent to
  \&\fB\-fstack\-usage\fR.  When the \f(CW\*(C`da\*(C'\fR marker is specified, the
*************** callgraph is decorated with information
*** 19696,19714 ****
  objects.
  .Sp
  When compiling with \fB\-flto\fR, no callgraph information is output
! along with the object file.  At \s-1LTO\s0 link time, \fB\-fcallgraph\-info\fR
  may generate multiple callgraph information files next to intermediate
! \&\s-1LTO\s0 output files.
! .IP "\fB\-d\fR\fIletters\fR" 4
  .IX Item "-dletters"
  .PD 0
! .IP "\fB\-fdump\-rtl\-\fR\fIpass\fR" 4
  .IX Item "-fdump-rtl-pass"
! .IP "\fB\-fdump\-rtl\-\fR\fIpass\fR\fB=\fR\fIfilename\fR" 4
  .IX Item "-fdump-rtl-pass=filename"
  .PD
  Says to make debugging dumps during compilation at times specified by
! \&\fIletters\fR.  This is used for debugging the RTL-based passes of the
  compiler.
  .Sp
  Some \fB\-d\fR\fIletters\fR switches have different meaning when
--- 19631,19649 ----
  objects.
  .Sp
  When compiling with \fB\-flto\fR, no callgraph information is output
! along with the object file.  At LTO link time, \fB\-fcallgraph\-info\fR
  may generate multiple callgraph information files next to intermediate
! LTO output files.
! .IP \fB\-d\fR\fIletters\fR 4
  .IX Item "-dletters"
  .PD 0
! .IP \fB\-fdump\-rtl\-\fR\fIpass\fR 4
  .IX Item "-fdump-rtl-pass"
! .IP \fB\-fdump\-rtl\-\fR\fIpass\fR\fB=\fR\fIfilename\fR 4
  .IX Item "-fdump-rtl-pass=filename"
  .PD
  Says to make debugging dumps during compilation at times specified by
! \&\fIletters\fR.  This is used for debugging the RTL\-based passes of the
  compiler.
  .Sp
  Some \fB\-d\fR\fIletters\fR switches have different meaning when
*************** Debug dumps can be enabled with a \fB\-f
*** 19718,20023 ****
  \&\fB\-d\fR option \fIletters\fR.  Here are the possible
  letters for use in \fIpass\fR and \fIletters\fR, and their meanings:
  .RS 4
! .IP "\fB\-fdump\-rtl\-alignments\fR" 4
  .IX Item "-fdump-rtl-alignments"
  Dump after branch alignments have been computed.
! .IP "\fB\-fdump\-rtl\-asmcons\fR" 4
  .IX Item "-fdump-rtl-asmcons"
  Dump after fixing rtl statements that have unsatisfied in/out constraints.
! .IP "\fB\-fdump\-rtl\-auto_inc_dec\fR" 4
  .IX Item "-fdump-rtl-auto_inc_dec"
! Dump after auto-inc-dec discovery.  This pass is only run on
  architectures that have auto inc or auto dec instructions.
! .IP "\fB\-fdump\-rtl\-barriers\fR" 4
  .IX Item "-fdump-rtl-barriers"
  Dump after cleaning up the barrier instructions.
! .IP "\fB\-fdump\-rtl\-bbpart\fR" 4
  .IX Item "-fdump-rtl-bbpart"
  Dump after partitioning hot and cold basic blocks.
! .IP "\fB\-fdump\-rtl\-bbro\fR" 4
  .IX Item "-fdump-rtl-bbro"
  Dump after block reordering.
! .IP "\fB\-fdump\-rtl\-btl1\fR" 4
  .IX Item "-fdump-rtl-btl1"
  .PD 0
! .IP "\fB\-fdump\-rtl\-btl2\fR" 4
  .IX Item "-fdump-rtl-btl2"
  .PD
  \&\fB\-fdump\-rtl\-btl1\fR and \fB\-fdump\-rtl\-btl2\fR enable dumping
  after the two branch
  target load optimization passes.
! .IP "\fB\-fdump\-rtl\-bypass\fR" 4
  .IX Item "-fdump-rtl-bypass"
  Dump after jump bypassing and control flow optimizations.
! .IP "\fB\-fdump\-rtl\-combine\fR" 4
  .IX Item "-fdump-rtl-combine"
! Dump after the \s-1RTL\s0 instruction combination pass.
! .IP "\fB\-fdump\-rtl\-compgotos\fR" 4
  .IX Item "-fdump-rtl-compgotos"
  Dump after duplicating the computed gotos.
! .IP "\fB\-fdump\-rtl\-ce1\fR" 4
  .IX Item "-fdump-rtl-ce1"
  .PD 0
! .IP "\fB\-fdump\-rtl\-ce2\fR" 4
  .IX Item "-fdump-rtl-ce2"
! .IP "\fB\-fdump\-rtl\-ce3\fR" 4
  .IX Item "-fdump-rtl-ce3"
  .PD
  \&\fB\-fdump\-rtl\-ce1\fR, \fB\-fdump\-rtl\-ce2\fR, and
  \&\fB\-fdump\-rtl\-ce3\fR enable dumping after the three
  if conversion passes.
! .IP "\fB\-fdump\-rtl\-cprop_hardreg\fR" 4
  .IX Item "-fdump-rtl-cprop_hardreg"
  Dump after hard register copy propagation.
! .IP "\fB\-fdump\-rtl\-csa\fR" 4
  .IX Item "-fdump-rtl-csa"
  Dump after combining stack adjustments.
! .IP "\fB\-fdump\-rtl\-cse1\fR" 4
  .IX Item "-fdump-rtl-cse1"
  .PD 0
! .IP "\fB\-fdump\-rtl\-cse2\fR" 4
  .IX Item "-fdump-rtl-cse2"
  .PD
  \&\fB\-fdump\-rtl\-cse1\fR and \fB\-fdump\-rtl\-cse2\fR enable dumping after
  the two common subexpression elimination passes.
! .IP "\fB\-fdump\-rtl\-dce\fR" 4
  .IX Item "-fdump-rtl-dce"
  Dump after the standalone dead code elimination passes.
! .IP "\fB\-fdump\-rtl\-dbr\fR" 4
  .IX Item "-fdump-rtl-dbr"
  Dump after delayed branch scheduling.
! .IP "\fB\-fdump\-rtl\-dce1\fR" 4
  .IX Item "-fdump-rtl-dce1"
  .PD 0
! .IP "\fB\-fdump\-rtl\-dce2\fR" 4
  .IX Item "-fdump-rtl-dce2"
  .PD
  \&\fB\-fdump\-rtl\-dce1\fR and \fB\-fdump\-rtl\-dce2\fR enable dumping after
  the two dead store elimination passes.
! .IP "\fB\-fdump\-rtl\-eh\fR" 4
  .IX Item "-fdump-rtl-eh"
! Dump after finalization of \s-1EH\s0 handling code.
! .IP "\fB\-fdump\-rtl\-eh_ranges\fR" 4
  .IX Item "-fdump-rtl-eh_ranges"
! Dump after conversion of \s-1EH\s0 handling range regions.
! .IP "\fB\-fdump\-rtl\-expand\fR" 4
  .IX Item "-fdump-rtl-expand"
! Dump after \s-1RTL\s0 generation.
! .IP "\fB\-fdump\-rtl\-fwprop1\fR" 4
  .IX Item "-fdump-rtl-fwprop1"
  .PD 0
! .IP "\fB\-fdump\-rtl\-fwprop2\fR" 4
  .IX Item "-fdump-rtl-fwprop2"
  .PD
  \&\fB\-fdump\-rtl\-fwprop1\fR and \fB\-fdump\-rtl\-fwprop2\fR enable
  dumping after the two forward propagation passes.
! .IP "\fB\-fdump\-rtl\-gcse1\fR" 4
  .IX Item "-fdump-rtl-gcse1"
  .PD 0
! .IP "\fB\-fdump\-rtl\-gcse2\fR" 4
  .IX Item "-fdump-rtl-gcse2"
  .PD
  \&\fB\-fdump\-rtl\-gcse1\fR and \fB\-fdump\-rtl\-gcse2\fR enable dumping
  after global common subexpression elimination.
! .IP "\fB\-fdump\-rtl\-init\-regs\fR" 4
  .IX Item "-fdump-rtl-init-regs"
  Dump after the initialization of the registers.
! .IP "\fB\-fdump\-rtl\-initvals\fR" 4
  .IX Item "-fdump-rtl-initvals"
  Dump after the computation of the initial value sets.
! .IP "\fB\-fdump\-rtl\-into_cfglayout\fR" 4
  .IX Item "-fdump-rtl-into_cfglayout"
  Dump after converting to cfglayout mode.
! .IP "\fB\-fdump\-rtl\-ira\fR" 4
  .IX Item "-fdump-rtl-ira"
  Dump after iterated register allocation.
! .IP "\fB\-fdump\-rtl\-jump\fR" 4
  .IX Item "-fdump-rtl-jump"
  Dump after the second jump optimization.
! .IP "\fB\-fdump\-rtl\-loop2\fR" 4
  .IX Item "-fdump-rtl-loop2"
  \&\fB\-fdump\-rtl\-loop2\fR enables dumping after the rtl
  loop optimization passes.
! .IP "\fB\-fdump\-rtl\-mach\fR" 4
  .IX Item "-fdump-rtl-mach"
  Dump after performing the machine dependent reorganization pass, if that
  pass exists.
! .IP "\fB\-fdump\-rtl\-mode_sw\fR" 4
  .IX Item "-fdump-rtl-mode_sw"
  Dump after removing redundant mode switches.
! .IP "\fB\-fdump\-rtl\-rnreg\fR" 4
  .IX Item "-fdump-rtl-rnreg"
  Dump after register renumbering.
! .IP "\fB\-fdump\-rtl\-outof_cfglayout\fR" 4
  .IX Item "-fdump-rtl-outof_cfglayout"
  Dump after converting from cfglayout mode.
! .IP "\fB\-fdump\-rtl\-peephole2\fR" 4
  .IX Item "-fdump-rtl-peephole2"
  Dump after the peephole pass.
! .IP "\fB\-fdump\-rtl\-postreload\fR" 4
  .IX Item "-fdump-rtl-postreload"
! Dump after post-reload optimizations.
! .IP "\fB\-fdump\-rtl\-pro_and_epilogue\fR" 4
  .IX Item "-fdump-rtl-pro_and_epilogue"
  Dump after generating the function prologues and epilogues.
! .IP "\fB\-fdump\-rtl\-sched1\fR" 4
  .IX Item "-fdump-rtl-sched1"
  .PD 0
! .IP "\fB\-fdump\-rtl\-sched2\fR" 4
  .IX Item "-fdump-rtl-sched2"
  .PD
  \&\fB\-fdump\-rtl\-sched1\fR and \fB\-fdump\-rtl\-sched2\fR enable dumping
  after the basic block scheduling passes.
! .IP "\fB\-fdump\-rtl\-ree\fR" 4
  .IX Item "-fdump-rtl-ree"
  Dump after sign/zero extension elimination.
! .IP "\fB\-fdump\-rtl\-seqabstr\fR" 4
  .IX Item "-fdump-rtl-seqabstr"
  Dump after common sequence discovery.
! .IP "\fB\-fdump\-rtl\-shorten\fR" 4
  .IX Item "-fdump-rtl-shorten"
  Dump after shortening branches.
! .IP "\fB\-fdump\-rtl\-split1\fR" 4
  .IX Item "-fdump-rtl-split1"
  .PD 0
! .IP "\fB\-fdump\-rtl\-split2\fR" 4
  .IX Item "-fdump-rtl-split2"
! .IP "\fB\-fdump\-rtl\-split3\fR" 4
  .IX Item "-fdump-rtl-split3"
! .IP "\fB\-fdump\-rtl\-split4\fR" 4
  .IX Item "-fdump-rtl-split4"
! .IP "\fB\-fdump\-rtl\-split5\fR" 4
  .IX Item "-fdump-rtl-split5"
  .PD
  These options enable dumping after five rounds of
  instruction splitting.
! .IP "\fB\-fdump\-rtl\-sms\fR" 4
  .IX Item "-fdump-rtl-sms"
  Dump after modulo scheduling.  This pass is only run on some
  architectures.
! .IP "\fB\-fdump\-rtl\-stack\fR" 4
  .IX Item "-fdump-rtl-stack"
! Dump after conversion from \s-1GCC\s0's \*(L"flat register file\*(R" registers to the
! x87's stack-like registers.  This pass is only run on x86 variants.
! .IP "\fB\-fdump\-rtl\-subreg1\fR" 4
  .IX Item "-fdump-rtl-subreg1"
  .PD 0
! .IP "\fB\-fdump\-rtl\-subreg2\fR" 4
  .IX Item "-fdump-rtl-subreg2"
  .PD
  \&\fB\-fdump\-rtl\-subreg1\fR and \fB\-fdump\-rtl\-subreg2\fR enable dumping after
  the two subreg expansion passes.
! .IP "\fB\-fdump\-rtl\-vartrack\fR" 4
  .IX Item "-fdump-rtl-vartrack"
  Dump after variable tracking.
! .IP "\fB\-fdump\-rtl\-vregs\fR" 4
  .IX Item "-fdump-rtl-vregs"
  Dump after converting virtual registers to hard registers.
! .IP "\fB\-fdump\-rtl\-web\fR" 4
  .IX Item "-fdump-rtl-web"
  Dump after live range splitting.
! .IP "\fB\-fdump\-rtl\-regclass\fR" 4
  .IX Item "-fdump-rtl-regclass"
  .PD 0
! .IP "\fB\-fdump\-rtl\-subregs_of_mode_init\fR" 4
  .IX Item "-fdump-rtl-subregs_of_mode_init"
! .IP "\fB\-fdump\-rtl\-subregs_of_mode_finish\fR" 4
  .IX Item "-fdump-rtl-subregs_of_mode_finish"
! .IP "\fB\-fdump\-rtl\-dfinit\fR" 4
  .IX Item "-fdump-rtl-dfinit"
! .IP "\fB\-fdump\-rtl\-dfinish\fR" 4
  .IX Item "-fdump-rtl-dfinish"
  .PD
  These dumps are defined but always produce empty files.
! .IP "\fB\-da\fR" 4
  .IX Item "-da"
  .PD 0
! .IP "\fB\-fdump\-rtl\-all\fR" 4
  .IX Item "-fdump-rtl-all"
  .PD
  Produce all the dumps listed above.
! .IP "\fB\-dA\fR" 4
  .IX Item "-dA"
  Annotate the assembler output with miscellaneous debugging information.
! .IP "\fB\-dD\fR" 4
  .IX Item "-dD"
  Dump all macro definitions, at the end of preprocessing, in addition to
  normal output.
! .IP "\fB\-dH\fR" 4
  .IX Item "-dH"
  Produce a core dump whenever an error occurs.
! .IP "\fB\-dp\fR" 4
  .IX Item "-dp"
  Annotate the assembler output with a comment indicating which
  pattern and alternative is used.  The length and cost of each instruction are
  also printed.
! .IP "\fB\-dP\fR" 4
  .IX Item "-dP"
! Dump the \s-1RTL\s0 in the assembler output as a comment before each instruction.
  Also turns on \fB\-dp\fR annotation.
! .IP "\fB\-dx\fR" 4
  .IX Item "-dx"
! Just generate \s-1RTL\s0 for a function instead of compiling it.  Usually used
  with \fB\-fdump\-rtl\-expand\fR.
  .RE
  .RS 4
  .RE
! .IP "\fB\-fdump\-debug\fR" 4
  .IX Item "-fdump-debug"
  Dump debugging information generated during the debug
  generation phase.
! .IP "\fB\-fdump\-earlydebug\fR" 4
  .IX Item "-fdump-earlydebug"
  Dump debugging information generated during the early debug
  generation phase.
! .IP "\fB\-fdump\-noaddr\fR" 4
  .IX Item "-fdump-noaddr"
  When doing debugging dumps, suppress address output.  This makes it more
  feasible to use diff on debugging dumps for compiler invocations with
  different compiler binaries and/or different
  text / bss / data / heap / stack / dso start locations.
! .IP "\fB\-freport\-bug\fR" 4
  .IX Item "-freport-bug"
  Collect and dump debug information into a temporary file if an
! internal compiler error (\s-1ICE\s0) occurs.
! .IP "\fB\-fdump\-unnumbered\fR" 4
  .IX Item "-fdump-unnumbered"
  When doing debugging dumps, suppress instruction numbers and address output.
  This makes it more feasible to use diff on debugging dumps for compiler
  invocations with different options, in particular with and without
  \&\fB\-g\fR.
! .IP "\fB\-fdump\-unnumbered\-links\fR" 4
  .IX Item "-fdump-unnumbered-links"
  When doing debugging dumps (see \fB\-d\fR option above), suppress
  instruction numbers for the links to the previous and next instructions
  in a sequence.
! .IP "\fB\-fdump\-ipa\-\fR\fIswitch\fR" 4
  .IX Item "-fdump-ipa-switch"
  .PD 0
! .IP "\fB\-fdump\-ipa\-\fR\fIswitch\fR\fB\-\fR\fIoptions\fR" 4
  .IX Item "-fdump-ipa-switch-options"
  .PD
! Control the dumping at various stages of inter-procedural analysis
  language tree to a file.  The file name is generated by appending a
  switch specific suffix to the source file name, and the file is created
  in the same directory as the output file.  The following dumps are
  possible:
  .RS 4
! .IP "\fBall\fR" 4
  .IX Item "all"
! Enables all inter-procedural analysis dumps.
! .IP "\fBcgraph\fR" 4
  .IX Item "cgraph"
! Dumps information about call-graph optimization, unused function removal,
  and inlining decisions.
! .IP "\fBinline\fR" 4
  .IX Item "inline"
  Dump after function inlining.
! .IP "\fBstrubm\fR" 4
  .IX Item "strubm"
  Dump after selecting \f(CW\*(C`strub\*(C'\fR modes, and recording the selections as
  function attributes.
! .IP "\fBstrub\fR" 4
  .IX Item "strub"
  Dump \f(CW\*(C`strub\*(C'\fR transformations: interface changes, function wrapping,
  and insertion of builtin calls for stack scrubbing and watermarking.
--- 19653,19958 ----
  \&\fB\-d\fR option \fIletters\fR.  Here are the possible
  letters for use in \fIpass\fR and \fIletters\fR, and their meanings:
  .RS 4
! .IP \fB\-fdump\-rtl\-alignments\fR 4
  .IX Item "-fdump-rtl-alignments"
  Dump after branch alignments have been computed.
! .IP \fB\-fdump\-rtl\-asmcons\fR 4
  .IX Item "-fdump-rtl-asmcons"
  Dump after fixing rtl statements that have unsatisfied in/out constraints.
! .IP \fB\-fdump\-rtl\-auto_inc_dec\fR 4
  .IX Item "-fdump-rtl-auto_inc_dec"
! Dump after auto\-inc\-dec discovery.  This pass is only run on
  architectures that have auto inc or auto dec instructions.
! .IP \fB\-fdump\-rtl\-barriers\fR 4
  .IX Item "-fdump-rtl-barriers"
  Dump after cleaning up the barrier instructions.
! .IP \fB\-fdump\-rtl\-bbpart\fR 4
  .IX Item "-fdump-rtl-bbpart"
  Dump after partitioning hot and cold basic blocks.
! .IP \fB\-fdump\-rtl\-bbro\fR 4
  .IX Item "-fdump-rtl-bbro"
  Dump after block reordering.
! .IP \fB\-fdump\-rtl\-btl1\fR 4
  .IX Item "-fdump-rtl-btl1"
  .PD 0
! .IP \fB\-fdump\-rtl\-btl2\fR 4
  .IX Item "-fdump-rtl-btl2"
  .PD
  \&\fB\-fdump\-rtl\-btl1\fR and \fB\-fdump\-rtl\-btl2\fR enable dumping
  after the two branch
  target load optimization passes.
! .IP \fB\-fdump\-rtl\-bypass\fR 4
  .IX Item "-fdump-rtl-bypass"
  Dump after jump bypassing and control flow optimizations.
! .IP \fB\-fdump\-rtl\-combine\fR 4
  .IX Item "-fdump-rtl-combine"
! Dump after the RTL instruction combination pass.
! .IP \fB\-fdump\-rtl\-compgotos\fR 4
  .IX Item "-fdump-rtl-compgotos"
  Dump after duplicating the computed gotos.
! .IP \fB\-fdump\-rtl\-ce1\fR 4
  .IX Item "-fdump-rtl-ce1"
  .PD 0
! .IP \fB\-fdump\-rtl\-ce2\fR 4
  .IX Item "-fdump-rtl-ce2"
! .IP \fB\-fdump\-rtl\-ce3\fR 4
  .IX Item "-fdump-rtl-ce3"
  .PD
  \&\fB\-fdump\-rtl\-ce1\fR, \fB\-fdump\-rtl\-ce2\fR, and
  \&\fB\-fdump\-rtl\-ce3\fR enable dumping after the three
  if conversion passes.
! .IP \fB\-fdump\-rtl\-cprop_hardreg\fR 4
  .IX Item "-fdump-rtl-cprop_hardreg"
  Dump after hard register copy propagation.
! .IP \fB\-fdump\-rtl\-csa\fR 4
  .IX Item "-fdump-rtl-csa"
  Dump after combining stack adjustments.
! .IP \fB\-fdump\-rtl\-cse1\fR 4
  .IX Item "-fdump-rtl-cse1"
  .PD 0
! .IP \fB\-fdump\-rtl\-cse2\fR 4
  .IX Item "-fdump-rtl-cse2"
  .PD
  \&\fB\-fdump\-rtl\-cse1\fR and \fB\-fdump\-rtl\-cse2\fR enable dumping after
  the two common subexpression elimination passes.
! .IP \fB\-fdump\-rtl\-dce\fR 4
  .IX Item "-fdump-rtl-dce"
  Dump after the standalone dead code elimination passes.
! .IP \fB\-fdump\-rtl\-dbr\fR 4
  .IX Item "-fdump-rtl-dbr"
  Dump after delayed branch scheduling.
! .IP \fB\-fdump\-rtl\-dce1\fR 4
  .IX Item "-fdump-rtl-dce1"
  .PD 0
! .IP \fB\-fdump\-rtl\-dce2\fR 4
  .IX Item "-fdump-rtl-dce2"
  .PD
  \&\fB\-fdump\-rtl\-dce1\fR and \fB\-fdump\-rtl\-dce2\fR enable dumping after
  the two dead store elimination passes.
! .IP \fB\-fdump\-rtl\-eh\fR 4
  .IX Item "-fdump-rtl-eh"
! Dump after finalization of EH handling code.
! .IP \fB\-fdump\-rtl\-eh_ranges\fR 4
  .IX Item "-fdump-rtl-eh_ranges"
! Dump after conversion of EH handling range regions.
! .IP \fB\-fdump\-rtl\-expand\fR 4
  .IX Item "-fdump-rtl-expand"
! Dump after RTL generation.
! .IP \fB\-fdump\-rtl\-fwprop1\fR 4
  .IX Item "-fdump-rtl-fwprop1"
  .PD 0
! .IP \fB\-fdump\-rtl\-fwprop2\fR 4
  .IX Item "-fdump-rtl-fwprop2"
  .PD
  \&\fB\-fdump\-rtl\-fwprop1\fR and \fB\-fdump\-rtl\-fwprop2\fR enable
  dumping after the two forward propagation passes.
! .IP \fB\-fdump\-rtl\-gcse1\fR 4
  .IX Item "-fdump-rtl-gcse1"
  .PD 0
! .IP \fB\-fdump\-rtl\-gcse2\fR 4
  .IX Item "-fdump-rtl-gcse2"
  .PD
  \&\fB\-fdump\-rtl\-gcse1\fR and \fB\-fdump\-rtl\-gcse2\fR enable dumping
  after global common subexpression elimination.
! .IP \fB\-fdump\-rtl\-init\-regs\fR 4
  .IX Item "-fdump-rtl-init-regs"
  Dump after the initialization of the registers.
! .IP \fB\-fdump\-rtl\-initvals\fR 4
  .IX Item "-fdump-rtl-initvals"
  Dump after the computation of the initial value sets.
! .IP \fB\-fdump\-rtl\-into_cfglayout\fR 4
  .IX Item "-fdump-rtl-into_cfglayout"
  Dump after converting to cfglayout mode.
! .IP \fB\-fdump\-rtl\-ira\fR 4
  .IX Item "-fdump-rtl-ira"
  Dump after iterated register allocation.
! .IP \fB\-fdump\-rtl\-jump\fR 4
  .IX Item "-fdump-rtl-jump"
  Dump after the second jump optimization.
! .IP \fB\-fdump\-rtl\-loop2\fR 4
  .IX Item "-fdump-rtl-loop2"
  \&\fB\-fdump\-rtl\-loop2\fR enables dumping after the rtl
  loop optimization passes.
! .IP \fB\-fdump\-rtl\-mach\fR 4
  .IX Item "-fdump-rtl-mach"
  Dump after performing the machine dependent reorganization pass, if that
  pass exists.
! .IP \fB\-fdump\-rtl\-mode_sw\fR 4
  .IX Item "-fdump-rtl-mode_sw"
  Dump after removing redundant mode switches.
! .IP \fB\-fdump\-rtl\-rnreg\fR 4
  .IX Item "-fdump-rtl-rnreg"
  Dump after register renumbering.
! .IP \fB\-fdump\-rtl\-outof_cfglayout\fR 4
  .IX Item "-fdump-rtl-outof_cfglayout"
  Dump after converting from cfglayout mode.
! .IP \fB\-fdump\-rtl\-peephole2\fR 4
  .IX Item "-fdump-rtl-peephole2"
  Dump after the peephole pass.
! .IP \fB\-fdump\-rtl\-postreload\fR 4
  .IX Item "-fdump-rtl-postreload"
! Dump after post\-reload optimizations.
! .IP \fB\-fdump\-rtl\-pro_and_epilogue\fR 4
  .IX Item "-fdump-rtl-pro_and_epilogue"
  Dump after generating the function prologues and epilogues.
! .IP \fB\-fdump\-rtl\-sched1\fR 4
  .IX Item "-fdump-rtl-sched1"
  .PD 0
! .IP \fB\-fdump\-rtl\-sched2\fR 4
  .IX Item "-fdump-rtl-sched2"
  .PD
  \&\fB\-fdump\-rtl\-sched1\fR and \fB\-fdump\-rtl\-sched2\fR enable dumping
  after the basic block scheduling passes.
! .IP \fB\-fdump\-rtl\-ree\fR 4
  .IX Item "-fdump-rtl-ree"
  Dump after sign/zero extension elimination.
! .IP \fB\-fdump\-rtl\-seqabstr\fR 4
  .IX Item "-fdump-rtl-seqabstr"
  Dump after common sequence discovery.
! .IP \fB\-fdump\-rtl\-shorten\fR 4
  .IX Item "-fdump-rtl-shorten"
  Dump after shortening branches.
! .IP \fB\-fdump\-rtl\-split1\fR 4
  .IX Item "-fdump-rtl-split1"
  .PD 0
! .IP \fB\-fdump\-rtl\-split2\fR 4
  .IX Item "-fdump-rtl-split2"
! .IP \fB\-fdump\-rtl\-split3\fR 4
  .IX Item "-fdump-rtl-split3"
! .IP \fB\-fdump\-rtl\-split4\fR 4
  .IX Item "-fdump-rtl-split4"
! .IP \fB\-fdump\-rtl\-split5\fR 4
  .IX Item "-fdump-rtl-split5"
  .PD
  These options enable dumping after five rounds of
  instruction splitting.
! .IP \fB\-fdump\-rtl\-sms\fR 4
  .IX Item "-fdump-rtl-sms"
  Dump after modulo scheduling.  This pass is only run on some
  architectures.
! .IP \fB\-fdump\-rtl\-stack\fR 4
  .IX Item "-fdump-rtl-stack"
! Dump after conversion from GCC\*(Aqs "flat register file" registers to the
! x87\*(Aqs stack\-like registers.  This pass is only run on x86 variants.
! .IP \fB\-fdump\-rtl\-subreg1\fR 4
  .IX Item "-fdump-rtl-subreg1"
  .PD 0
! .IP \fB\-fdump\-rtl\-subreg2\fR 4
  .IX Item "-fdump-rtl-subreg2"
  .PD
  \&\fB\-fdump\-rtl\-subreg1\fR and \fB\-fdump\-rtl\-subreg2\fR enable dumping after
  the two subreg expansion passes.
! .IP \fB\-fdump\-rtl\-vartrack\fR 4
  .IX Item "-fdump-rtl-vartrack"
  Dump after variable tracking.
! .IP \fB\-fdump\-rtl\-vregs\fR 4
  .IX Item "-fdump-rtl-vregs"
  Dump after converting virtual registers to hard registers.
! .IP \fB\-fdump\-rtl\-web\fR 4
  .IX Item "-fdump-rtl-web"
  Dump after live range splitting.
! .IP \fB\-fdump\-rtl\-regclass\fR 4
  .IX Item "-fdump-rtl-regclass"
  .PD 0
! .IP \fB\-fdump\-rtl\-subregs_of_mode_init\fR 4
  .IX Item "-fdump-rtl-subregs_of_mode_init"
! .IP \fB\-fdump\-rtl\-subregs_of_mode_finish\fR 4
  .IX Item "-fdump-rtl-subregs_of_mode_finish"
! .IP \fB\-fdump\-rtl\-dfinit\fR 4
  .IX Item "-fdump-rtl-dfinit"
! .IP \fB\-fdump\-rtl\-dfinish\fR 4
  .IX Item "-fdump-rtl-dfinish"
  .PD
  These dumps are defined but always produce empty files.
! .IP \fB\-da\fR 4
  .IX Item "-da"
  .PD 0
! .IP \fB\-fdump\-rtl\-all\fR 4
  .IX Item "-fdump-rtl-all"
  .PD
  Produce all the dumps listed above.
! .IP \fB\-dA\fR 4
  .IX Item "-dA"
  Annotate the assembler output with miscellaneous debugging information.
! .IP \fB\-dD\fR 4
  .IX Item "-dD"
  Dump all macro definitions, at the end of preprocessing, in addition to
  normal output.
! .IP \fB\-dH\fR 4
  .IX Item "-dH"
  Produce a core dump whenever an error occurs.
! .IP \fB\-dp\fR 4
  .IX Item "-dp"
  Annotate the assembler output with a comment indicating which
  pattern and alternative is used.  The length and cost of each instruction are
  also printed.
! .IP \fB\-dP\fR 4
  .IX Item "-dP"
! Dump the RTL in the assembler output as a comment before each instruction.
  Also turns on \fB\-dp\fR annotation.
! .IP \fB\-dx\fR 4
  .IX Item "-dx"
! Just generate RTL for a function instead of compiling it.  Usually used
  with \fB\-fdump\-rtl\-expand\fR.
  .RE
  .RS 4
  .RE
! .IP \fB\-fdump\-debug\fR 4
  .IX Item "-fdump-debug"
  Dump debugging information generated during the debug
  generation phase.
! .IP \fB\-fdump\-earlydebug\fR 4
  .IX Item "-fdump-earlydebug"
  Dump debugging information generated during the early debug
  generation phase.
! .IP \fB\-fdump\-noaddr\fR 4
  .IX Item "-fdump-noaddr"
  When doing debugging dumps, suppress address output.  This makes it more
  feasible to use diff on debugging dumps for compiler invocations with
  different compiler binaries and/or different
  text / bss / data / heap / stack / dso start locations.
! .IP \fB\-freport\-bug\fR 4
  .IX Item "-freport-bug"
  Collect and dump debug information into a temporary file if an
! internal compiler error (ICE) occurs.
! .IP \fB\-fdump\-unnumbered\fR 4
  .IX Item "-fdump-unnumbered"
  When doing debugging dumps, suppress instruction numbers and address output.
  This makes it more feasible to use diff on debugging dumps for compiler
  invocations with different options, in particular with and without
  \&\fB\-g\fR.
! .IP \fB\-fdump\-unnumbered\-links\fR 4
  .IX Item "-fdump-unnumbered-links"
  When doing debugging dumps (see \fB\-d\fR option above), suppress
  instruction numbers for the links to the previous and next instructions
  in a sequence.
! .IP \fB\-fdump\-ipa\-\fR\fIswitch\fR 4
  .IX Item "-fdump-ipa-switch"
  .PD 0
! .IP \fB\-fdump\-ipa\-\fR\fIswitch\fR\fB\-\fR\fIoptions\fR 4
  .IX Item "-fdump-ipa-switch-options"
  .PD
! Control the dumping at various stages of inter\-procedural analysis
  language tree to a file.  The file name is generated by appending a
  switch specific suffix to the source file name, and the file is created
  in the same directory as the output file.  The following dumps are
  possible:
  .RS 4
! .IP \fBall\fR 4
  .IX Item "all"
! Enables all inter\-procedural analysis dumps.
! .IP \fBcgraph\fR 4
  .IX Item "cgraph"
! Dumps information about call\-graph optimization, unused function removal,
  and inlining decisions.
! .IP \fBinline\fR 4
  .IX Item "inline"
  Dump after function inlining.
! .IP \fBstrubm\fR 4
  .IX Item "strubm"
  Dump after selecting \f(CW\*(C`strub\*(C'\fR modes, and recording the selections as
  function attributes.
! .IP \fBstrub\fR 4
  .IX Item "strub"
  Dump \f(CW\*(C`strub\*(C'\fR transformations: interface changes, function wrapping,
  and insertion of builtin calls for stack scrubbing and watermarking.
*************** that were not inlined.
*** 20034,20048 ****
  .Sp
  By default, the dump will contain messages about successful
  optimizations (equivalent to \fB\-optimized\fR) together with
! low-level details about the analysis.
  .RE
! .IP "\fB\-fdump\-ipa\-clones\fR" 4
  .IX Item "-fdump-ipa-clones"
  Create a dump file containing information about creation of call graph
! node clones and removals of call graph nodes during inter-procedural
  optimizations and transformations.  Its main intended use is that tools
! that create live-patches can determine the set of functions that need to
! be live-patched to completely replace a particular function (see
  \&\fB\-flive\-patching\fR).  The file name is generated by appending
  suffix \f(CW\*(C`ipa\-clones\*(C'\fR to the source file name, and the file is
  created in the same directory as the output file.  Each entry in the
--- 19969,19983 ----
  .Sp
  By default, the dump will contain messages about successful
  optimizations (equivalent to \fB\-optimized\fR) together with
! low\-level details about the analysis.
  .RE
! .IP \fB\-fdump\-ipa\-clones\fR 4
  .IX Item "-fdump-ipa-clones"
  Create a dump file containing information about creation of call graph
! node clones and removals of call graph nodes during inter\-procedural
  optimizations and transformations.  Its main intended use is that tools
! that create live\-patches can determine the set of functions that need to
! be live\-patched to completely replace a particular function (see
  \&\fB\-flive\-patching\fR).  The file name is generated by appending
  suffix \f(CW\*(C`ipa\-clones\*(C'\fR to the source file name, and the file is
  created in the same directory as the output file.  Each entry in the
*************** file is on a separate line containing se
*** 20050,20171 ****
  .Sp
  In the case of call graph clone creation, the individual fields are:
  .RS 4
! .IP "1." 4
  .IX Item "1."
  String \f(CW\*(C`Callgraph clone\*(C'\fR.
! .IP "2." 4
  .IX Item "2."
  Name of the function being cloned as it is presented to the assembler.
! .IP "3." 4
  .IX Item "3."
  A number that uniquely represents the function being cloned in the call
  graph.  Note that the number is unique only within a compilation unit or
! within whole-program analysis but is likely to be different in the two
  phases.
! .IP "4." 4
  .IX Item "4."
  The file name of the source file where the function is defined.
! .IP "5." 4
  .IX Item "5."
  The line on which the function definition is located.
! .IP "6." 4
  .IX Item "6."
  The column where the function definition is located.
! .IP "7." 4
  .IX Item "7."
  Name of the new function clone as it is presented to the assembler.
! .IP "8." 4
  .IX Item "8."
  A number that uniquely represents the new function clone in the call
  graph.  Note that the number is unique only within a compilation unit or
! within whole-program analysis but is likely to be different in the two
  phases.
! .IP "9." 4
  .IX Item "9."
  The file name of the source file where the source code location of the
  new clone points to.
! .IP "10." 4
  .IX Item "10."
  The line to which the source code location of the new clone points to.
! .IP "11." 4
  .IX Item "11."
  The column to which the source code location of the new clone points to.
! .IP "12." 4
  .IX Item "12."
  A string that determines the reason for cloning.
  .RE
  .RS 4
  .Sp
  In the case of call graph clone removal, the individual fields are:
! .IP "1." 4
  .IX Item "1."
  String \f(CW\*(C`Callgraph removal\*(C'\fR.
! .IP "2." 4
  .IX Item "2."
  Name of the function being removed as it would be presented to the assembler.
! .IP "3." 4
  .IX Item "3."
  A number that uniquely represents the function being cloned in the call
  graph.  Note that the number is unique only within a compilation unit or
! within whole-program analysis but is likely to be different in the two
  phases.
! .IP "4." 4
  .IX Item "4."
  The file name of the source file where the function is defined.
! .IP "5." 4
  .IX Item "5."
  The line on which the function definition is located.
! .IP "6." 4
  .IX Item "6."
  The column where the function definition is located.
  .RE
  .RS 4
  .RE
! .IP "\fB\-fdump\-lang\fR" 4
  .IX Item "-fdump-lang"
! Dump language-specific information.  The file name is made by appending
  \&\fI.lang\fR to the source file name.
! .IP "\fB\-fdump\-lang\-all\fR" 4
  .IX Item "-fdump-lang-all"
  .PD 0
! .IP "\fB\-fdump\-lang\-\fR\fIswitch\fR" 4
  .IX Item "-fdump-lang-switch"
! .IP "\fB\-fdump\-lang\-\fR\fIswitch\fR\fB\-\fR\fIoptions\fR" 4
  .IX Item "-fdump-lang-switch-options"
! .IP "\fB\-fdump\-lang\-\fR\fIswitch\fR\fB\-\fR\fIoptions\fR\fB=\fR\fIfilename\fR" 4
  .IX Item "-fdump-lang-switch-options=filename"
  .PD
! Control the dumping of language-specific information.  The \fIoptions\fR
  and \fIfilename\fR portions behave as described in the
  \&\fB\-fdump\-tree\fR option.  The following \fIswitch\fR values are
  accepted:
  .RS 4
! .IP "\fBall\fR" 4
  .IX Item "all"
! Enable all language-specific dumps.
! .IP "\fBclass\fR" 4
  .IX Item "class"
  Dump class hierarchy information.  Virtual table information is emitted
! unless '\fBslim\fR' is specified.  This option is applicable to \*(C+ only.
! .IP "\fBmodule\fR" 4
  .IX Item "module"
  Dump module information.  Options \fBlineno\fR (locations),
  \&\fBgraph\fR (reachability), \fBblocks\fR (clusters),
  \&\fBuid\fR (serialization), \fBalias\fR (mergeable),
  \&\fBasmname\fR (Elrond), \fBeh\fR (mapper) & \fBvops\fR
  (macros) may provide additional information.  This option is
! applicable to \*(C+ only.
! .IP "\fBraw\fR" 4
  .IX Item "raw"
! Dump the raw internal tree data.  This option is applicable to \*(C+ only.
  .RE
  .RS 4
  .RE
! .IP "\fB\-fdump\-passes\fR" 4
  .IX Item "-fdump-passes"
  Print on \fIstderr\fR the list of optimization passes that are turned
! on and off by the current command-line options.
! .IP "\fB\-fdump\-statistics\-\fR\fIoption\fR" 4
  .IX Item "-fdump-statistics-option"
  Enable and control dumping of pass statistics in a separate file.  The
  file name is generated by appending a suffix ending in
--- 19985,20106 ----
  .Sp
  In the case of call graph clone creation, the individual fields are:
  .RS 4
! .IP 1. 4
  .IX Item "1."
  String \f(CW\*(C`Callgraph clone\*(C'\fR.
! .IP 2. 4
  .IX Item "2."
  Name of the function being cloned as it is presented to the assembler.
! .IP 3. 4
  .IX Item "3."
  A number that uniquely represents the function being cloned in the call
  graph.  Note that the number is unique only within a compilation unit or
! within whole\-program analysis but is likely to be different in the two
  phases.
! .IP 4. 4
  .IX Item "4."
  The file name of the source file where the function is defined.
! .IP 5. 4
  .IX Item "5."
  The line on which the function definition is located.
! .IP 6. 4
  .IX Item "6."
  The column where the function definition is located.
! .IP 7. 4
  .IX Item "7."
  Name of the new function clone as it is presented to the assembler.
! .IP 8. 4
  .IX Item "8."
  A number that uniquely represents the new function clone in the call
  graph.  Note that the number is unique only within a compilation unit or
! within whole\-program analysis but is likely to be different in the two
  phases.
! .IP 9. 4
  .IX Item "9."
  The file name of the source file where the source code location of the
  new clone points to.
! .IP 10. 4
  .IX Item "10."
  The line to which the source code location of the new clone points to.
! .IP 11. 4
  .IX Item "11."
  The column to which the source code location of the new clone points to.
! .IP 12. 4
  .IX Item "12."
  A string that determines the reason for cloning.
  .RE
  .RS 4
  .Sp
  In the case of call graph clone removal, the individual fields are:
! .IP 1. 4
  .IX Item "1."
  String \f(CW\*(C`Callgraph removal\*(C'\fR.
! .IP 2. 4
  .IX Item "2."
  Name of the function being removed as it would be presented to the assembler.
! .IP 3. 4
  .IX Item "3."
  A number that uniquely represents the function being cloned in the call
  graph.  Note that the number is unique only within a compilation unit or
! within whole\-program analysis but is likely to be different in the two
  phases.
! .IP 4. 4
  .IX Item "4."
  The file name of the source file where the function is defined.
! .IP 5. 4
  .IX Item "5."
  The line on which the function definition is located.
! .IP 6. 4
  .IX Item "6."
  The column where the function definition is located.
  .RE
  .RS 4
  .RE
! .IP \fB\-fdump\-lang\fR 4
  .IX Item "-fdump-lang"
! Dump language\-specific information.  The file name is made by appending
  \&\fI.lang\fR to the source file name.
! .IP \fB\-fdump\-lang\-all\fR 4
  .IX Item "-fdump-lang-all"
  .PD 0
! .IP \fB\-fdump\-lang\-\fR\fIswitch\fR 4
  .IX Item "-fdump-lang-switch"
! .IP \fB\-fdump\-lang\-\fR\fIswitch\fR\fB\-\fR\fIoptions\fR 4
  .IX Item "-fdump-lang-switch-options"
! .IP \fB\-fdump\-lang\-\fR\fIswitch\fR\fB\-\fR\fIoptions\fR\fB=\fR\fIfilename\fR 4
  .IX Item "-fdump-lang-switch-options=filename"
  .PD
! Control the dumping of language\-specific information.  The \fIoptions\fR
  and \fIfilename\fR portions behave as described in the
  \&\fB\-fdump\-tree\fR option.  The following \fIswitch\fR values are
  accepted:
  .RS 4
! .IP \fBall\fR 4
  .IX Item "all"
! Enable all language\-specific dumps.
! .IP \fBclass\fR 4
  .IX Item "class"
  Dump class hierarchy information.  Virtual table information is emitted
! unless \*(Aq\fBslim\fR\*(Aq is specified.  This option is applicable to C++ only.
! .IP \fBmodule\fR 4
  .IX Item "module"
  Dump module information.  Options \fBlineno\fR (locations),
  \&\fBgraph\fR (reachability), \fBblocks\fR (clusters),
  \&\fBuid\fR (serialization), \fBalias\fR (mergeable),
  \&\fBasmname\fR (Elrond), \fBeh\fR (mapper) & \fBvops\fR
  (macros) may provide additional information.  This option is
! applicable to C++ only.
! .IP \fBraw\fR 4
  .IX Item "raw"
! Dump the raw internal tree data.  This option is applicable to C++ only.
  .RE
  .RS 4
  .RE
! .IP \fB\-fdump\-passes\fR 4
  .IX Item "-fdump-passes"
  Print on \fIstderr\fR the list of optimization passes that are turned
! on and off by the current command\-line options.
! .IP \fB\-fdump\-statistics\-\fR\fIoption\fR 4
  .IX Item "-fdump-statistics-option"
  Enable and control dumping of pass statistics in a separate file.  The
  file name is generated by appending a suffix ending in
*************** form is used, \fB\-stats\fR causes count
*** 20175,20188 ****
  whole compilation unit while \fB\-details\fR dumps every event as
  the passes generate them.  The default with no option is to sum
  counters for each function compiled.
! .IP "\fB\-fdump\-tree\-all\fR" 4
  .IX Item "-fdump-tree-all"
  .PD 0
! .IP "\fB\-fdump\-tree\-\fR\fIswitch\fR" 4
  .IX Item "-fdump-tree-switch"
! .IP "\fB\-fdump\-tree\-\fR\fIswitch\fR\fB\-\fR\fIoptions\fR" 4
  .IX Item "-fdump-tree-switch-options"
! .IP "\fB\-fdump\-tree\-\fR\fIswitch\fR\fB\-\fR\fIoptions\fR\fB=\fR\fIfilename\fR" 4
  .IX Item "-fdump-tree-switch-options=filename"
  .PD
  Control the dumping at various stages of processing the intermediate
--- 20110,20123 ----
  whole compilation unit while \fB\-details\fR dumps every event as
  the passes generate them.  The default with no option is to sum
  counters for each function compiled.
! .IP \fB\-fdump\-tree\-all\fR 4
  .IX Item "-fdump-tree-all"
  .PD 0
! .IP \fB\-fdump\-tree\-\fR\fIswitch\fR 4
  .IX Item "-fdump-tree-switch"
! .IP \fB\-fdump\-tree\-\fR\fIswitch\fR\fB\-\fR\fIoptions\fR 4
  .IX Item "-fdump-tree-switch-options"
! .IP \fB\-fdump\-tree\-\fR\fIswitch\fR\fB\-\fR\fIoptions\fR\fB=\fR\fIfilename\fR 4
  .IX Item "-fdump-tree-switch-options=filename"
  .PD
  Control the dumping at various stages of processing the intermediate
*************** which control the details of the dump.
*** 20192,20279 ****
  to all dumps; those that are not meaningful are ignored.  The
  following options are available
  .RS 4
! .IP "\fBaddress\fR" 4
  .IX Item "address"
  Print the address of each node.  Usually this is not meaningful as it
  changes according to the environment and source file.  Its primary use
  is for tying up a dump file with a debug environment.
! .IP "\fBasmname\fR" 4
  .IX Item "asmname"
  If \f(CW\*(C`DECL_ASSEMBLER_NAME\*(C'\fR has been set for a given decl, use that
  in the dump instead of \f(CW\*(C`DECL_NAME\*(C'\fR.  Its primary use is ease of
  use working backward from mangled names in the assembly file.
! .IP "\fBslim\fR" 4
  .IX Item "slim"
! When dumping front-end intermediate representations, inhibit dumping
  of members of a scope or body of a function merely because that scope
  has been reached.  Only dump such items when they are directly reachable
  by some other path.
  .Sp
! When dumping pretty-printed trees, this option inhibits dumping the
  bodies of control structures.
  .Sp
! When dumping \s-1RTL,\s0 print the \s-1RTL\s0 in slim (condensed) form instead of
! the default LISP-like representation.
! .IP "\fBraw\fR" 4
  .IX Item "raw"
  Print a raw representation of the tree.  By default, trees are
! pretty-printed into a C\-like representation.
! .IP "\fBdetails\fR" 4
  .IX Item "details"
  Enable more detailed dumps (not honored by every dump option). Also
  include information from the optimization passes.
! .IP "\fBstats\fR" 4
  .IX Item "stats"
  Enable dumping various statistics about the pass (not honored by every dump
  option).
! .IP "\fBblocks\fR" 4
  .IX Item "blocks"
  Enable showing basic block boundaries (disabled in raw dumps).
! .IP "\fBgraph\fR" 4
  .IX Item "graph"
  For each of the other indicated dump files (\fB\-fdump\-rtl\-\fR\fIpass\fR),
  dump a representation of the control flow graph suitable for viewing with
! GraphViz to \fI\fIfile\fI.\fIpassid\fI.\fIpass\fI.dot\fR.  Each function in
! the file is pretty-printed as a subgraph, so that GraphViz can render them
  all in a single plot.
  .Sp
! This option currently only works for \s-1RTL\s0 dumps, and the \s-1RTL\s0 is always
  dumped in slim form.
! .IP "\fBvops\fR" 4
  .IX Item "vops"
  Enable showing virtual operands for every statement.
! .IP "\fBlineno\fR" 4
  .IX Item "lineno"
  Enable showing line numbers for statements.
! .IP "\fBuid\fR" 4
  .IX Item "uid"
! Enable showing the unique \s-1ID\s0 (\f(CW\*(C`DECL_UID\*(C'\fR) for each variable.
! .IP "\fBverbose\fR" 4
  .IX Item "verbose"
  Enable showing the tree dump for each statement.
! .IP "\fBeh\fR" 4
  .IX Item "eh"
! Enable showing the \s-1EH\s0 region number holding each statement.
! .IP "\fBscev\fR" 4
  .IX Item "scev"
  Enable showing scalar evolution analysis details.
! .IP "\fBoptimized\fR" 4
  .IX Item "optimized"
  Enable showing optimization information (only available in certain
  passes).
! .IP "\fBmissed\fR" 4
  .IX Item "missed"
  Enable showing missed optimization information (only available in certain
  passes).
! .IP "\fBnote\fR" 4
  .IX Item "note"
  Enable other detailed optimization information (only available in
  certain passes).
! .IP "\fBall\fR" 4
  .IX Item "all"
  Turn on all options, except \fBraw\fR, \fBslim\fR, \fBverbose\fR
  and \fBlineno\fR.
! .IP "\fBoptall\fR" 4
  .IX Item "optall"
  Turn on all optimization options, i.e., \fBoptimized\fR,
  \&\fBmissed\fR, and \fBnote\fR.
--- 20127,20214 ----
  to all dumps; those that are not meaningful are ignored.  The
  following options are available
  .RS 4
! .IP \fBaddress\fR 4
  .IX Item "address"
  Print the address of each node.  Usually this is not meaningful as it
  changes according to the environment and source file.  Its primary use
  is for tying up a dump file with a debug environment.
! .IP \fBasmname\fR 4
  .IX Item "asmname"
  If \f(CW\*(C`DECL_ASSEMBLER_NAME\*(C'\fR has been set for a given decl, use that
  in the dump instead of \f(CW\*(C`DECL_NAME\*(C'\fR.  Its primary use is ease of
  use working backward from mangled names in the assembly file.
! .IP \fBslim\fR 4
  .IX Item "slim"
! When dumping front\-end intermediate representations, inhibit dumping
  of members of a scope or body of a function merely because that scope
  has been reached.  Only dump such items when they are directly reachable
  by some other path.
  .Sp
! When dumping pretty\-printed trees, this option inhibits dumping the
  bodies of control structures.
  .Sp
! When dumping RTL, print the RTL in slim (condensed) form instead of
! the default LISP\-like representation.
! .IP \fBraw\fR 4
  .IX Item "raw"
  Print a raw representation of the tree.  By default, trees are
! pretty\-printed into a C\-like representation.
! .IP \fBdetails\fR 4
  .IX Item "details"
  Enable more detailed dumps (not honored by every dump option). Also
  include information from the optimization passes.
! .IP \fBstats\fR 4
  .IX Item "stats"
  Enable dumping various statistics about the pass (not honored by every dump
  option).
! .IP \fBblocks\fR 4
  .IX Item "blocks"
  Enable showing basic block boundaries (disabled in raw dumps).
! .IP \fBgraph\fR 4
  .IX Item "graph"
  For each of the other indicated dump files (\fB\-fdump\-rtl\-\fR\fIpass\fR),
  dump a representation of the control flow graph suitable for viewing with
! GraphViz to \fIfile.passid.pass.dot\fR.  Each function in
! the file is pretty\-printed as a subgraph, so that GraphViz can render them
  all in a single plot.
  .Sp
! This option currently only works for RTL dumps, and the RTL is always
  dumped in slim form.
! .IP \fBvops\fR 4
  .IX Item "vops"
  Enable showing virtual operands for every statement.
! .IP \fBlineno\fR 4
  .IX Item "lineno"
  Enable showing line numbers for statements.
! .IP \fBuid\fR 4
  .IX Item "uid"
! Enable showing the unique ID (\f(CW\*(C`DECL_UID\*(C'\fR) for each variable.
! .IP \fBverbose\fR 4
  .IX Item "verbose"
  Enable showing the tree dump for each statement.
! .IP \fBeh\fR 4
  .IX Item "eh"
! Enable showing the EH region number holding each statement.
! .IP \fBscev\fR 4
  .IX Item "scev"
  Enable showing scalar evolution analysis details.
! .IP \fBoptimized\fR 4
  .IX Item "optimized"
  Enable showing optimization information (only available in certain
  passes).
! .IP \fBmissed\fR 4
  .IX Item "missed"
  Enable showing missed optimization information (only available in certain
  passes).
! .IP \fBnote\fR 4
  .IX Item "note"
  Enable other detailed optimization information (only available in
  certain passes).
! .IP \fBall\fR 4
  .IX Item "all"
  Turn on all options, except \fBraw\fR, \fBslim\fR, \fBverbose\fR
  and \fBlineno\fR.
! .IP \fBoptall\fR 4
  .IX Item "optall"
  Turn on all optimization options, i.e., \fBoptimized\fR,
  \&\fBmissed\fR, and \fBnote\fR.
*************** Turn on all optimization options, i.e.,
*** 20282,20321 ****
  .Sp
  To determine what tree dumps are available or find the dump for a pass
  of interest follow the steps below.
! .IP "1." 4
  .IX Item "1."
! Invoke \s-1GCC\s0 with \fB\-fdump\-passes\fR and in the \fIstderr\fR output
  look for a code that corresponds to the pass you are interested in.
  For example, the codes \f(CW\*(C`tree\-evrp\*(C'\fR, \f(CW\*(C`tree\-vrp1\*(C'\fR, and
  \&\f(CW\*(C`tree\-vrp2\*(C'\fR correspond to the three Value Range Propagation passes.
  The number at the end distinguishes distinct invocations of the same pass.
! .IP "2." 4
  .IX Item "2."
  To enable the creation of the dump file, append the pass code to
! the \fB\-fdump\-\fR option prefix and invoke \s-1GCC\s0 with it.  For example,
  to enable the dump from the Early Value Range Propagation pass, invoke
! \&\s-1GCC\s0 with the \fB\-fdump\-tree\-evrp\fR option.  Optionally, you may
! specify the name of the dump file.  If you don't specify one, \s-1GCC\s0
  creates as described below.
! .IP "3." 4
  .IX Item "3."
  Find the pass dump in a file whose name is composed of three components
! separated by a period: the name of the source file \s-1GCC\s0 was invoked to
  compile, a numeric suffix indicating the pass number followed by the
! letter \fBt\fR for tree passes (and the letter \fBr\fR for \s-1RTL\s0 passes),
! and finally the pass code.  For example, the Early \s-1VRP\s0 pass dump might
  be in a file named \fImyfile.c.038t.evrp\fR in the current working
  directory.  Note that the numeric codes are not stable and may change
! from one version of \s-1GCC\s0 to another.
  .RE
  .RS 4
  .RE
! .IP "\fB\-fopt\-info\fR" 4
  .IX Item "-fopt-info"
  .PD 0
! .IP "\fB\-fopt\-info\-\fR\fIoptions\fR" 4
  .IX Item "-fopt-info-options"
! .IP "\fB\-fopt\-info\-\fR\fIoptions\fR\fB=\fR\fIfilename\fR" 4
  .IX Item "-fopt-info-options=filename"
  .PD
  Controls optimization dumps from various optimization passes. If the
--- 20217,20256 ----
  .Sp
  To determine what tree dumps are available or find the dump for a pass
  of interest follow the steps below.
! .IP 1. 4
  .IX Item "1."
! Invoke GCC with \fB\-fdump\-passes\fR and in the \fIstderr\fR output
  look for a code that corresponds to the pass you are interested in.
  For example, the codes \f(CW\*(C`tree\-evrp\*(C'\fR, \f(CW\*(C`tree\-vrp1\*(C'\fR, and
  \&\f(CW\*(C`tree\-vrp2\*(C'\fR correspond to the three Value Range Propagation passes.
  The number at the end distinguishes distinct invocations of the same pass.
! .IP 2. 4
  .IX Item "2."
  To enable the creation of the dump file, append the pass code to
! the \fB\-fdump\-\fR option prefix and invoke GCC with it.  For example,
  to enable the dump from the Early Value Range Propagation pass, invoke
! GCC with the \fB\-fdump\-tree\-evrp\fR option.  Optionally, you may
! specify the name of the dump file.  If you don\*(Aqt specify one, GCC
  creates as described below.
! .IP 3. 4
  .IX Item "3."
  Find the pass dump in a file whose name is composed of three components
! separated by a period: the name of the source file GCC was invoked to
  compile, a numeric suffix indicating the pass number followed by the
! letter \fBt\fR for tree passes (and the letter \fBr\fR for RTL passes),
! and finally the pass code.  For example, the Early VRP pass dump might
  be in a file named \fImyfile.c.038t.evrp\fR in the current working
  directory.  Note that the numeric codes are not stable and may change
! from one version of GCC to another.
  .RE
  .RS 4
  .RE
! .IP \fB\-fopt\-info\fR 4
  .IX Item "-fopt-info"
  .PD 0
! .IP \fB\-fopt\-info\-\fR\fIoptions\fR 4
  .IX Item "-fopt-info-options"
! .IP \fB\-fopt\-info\-\fR\fIoptions\fR\fB=\fR\fIfilename\fR 4
  .IX Item "-fopt-info-options=filename"
  .PD
  Controls optimization dumps from various optimization passes. If the
*************** optimizations.
*** 20325,20363 ****
  .Sp
  The \fIoptions\fR can be divided into three groups:
  .RS 4
! .IP "1." 4
  .IX Item "1."
  options describing what kinds of messages should be emitted,
! .IP "2." 4
  .IX Item "2."
  options describing the verbosity of the dump, and
! .IP "3." 4
  .IX Item "3."
  options describing which optimizations should be included.
  .RE
  .RS 4
  .Sp
  The options from each group can be freely mixed as they are
! non-overlapping. However, in case of any conflicts,
  the later options override the earlier options on the command
  line.
  .Sp
  The following options control which kinds of messages should be emitted:
! .IP "\fBoptimized\fR" 4
  .IX Item "optimized"
  Print information when an optimization is successfully applied. It is
  up to a pass to decide which information is relevant. For example, the
  vectorizer passes print the source location of loops which are
  successfully vectorized.
! .IP "\fBmissed\fR" 4
  .IX Item "missed"
  Print information about missed optimizations. Individual passes
  control which information to include in the output.
! .IP "\fBnote\fR" 4
  .IX Item "note"
  Print verbose information about optimizations, such as certain
  transformations, more detailed messages about decisions etc.
! .IP "\fBall\fR" 4
  .IX Item "all"
  Print detailed optimization information. This includes
  \&\fBoptimized\fR, \fBmissed\fR, and \fBnote\fR.
--- 20260,20298 ----
  .Sp
  The \fIoptions\fR can be divided into three groups:
  .RS 4
! .IP 1. 4
  .IX Item "1."
  options describing what kinds of messages should be emitted,
! .IP 2. 4
  .IX Item "2."
  options describing the verbosity of the dump, and
! .IP 3. 4
  .IX Item "3."
  options describing which optimizations should be included.
  .RE
  .RS 4
  .Sp
  The options from each group can be freely mixed as they are
! non\-overlapping. However, in case of any conflicts,
  the later options override the earlier options on the command
  line.
  .Sp
  The following options control which kinds of messages should be emitted:
! .IP \fBoptimized\fR 4
  .IX Item "optimized"
  Print information when an optimization is successfully applied. It is
  up to a pass to decide which information is relevant. For example, the
  vectorizer passes print the source location of loops which are
  successfully vectorized.
! .IP \fBmissed\fR 4
  .IX Item "missed"
  Print information about missed optimizations. Individual passes
  control which information to include in the output.
! .IP \fBnote\fR 4
  .IX Item "note"
  Print verbose information about optimizations, such as certain
  transformations, more detailed messages about decisions etc.
! .IP \fBall\fR 4
  .IX Item "all"
  Print detailed optimization information. This includes
  \&\fBoptimized\fR, \fBmissed\fR, and \fBnote\fR.
*************** Print detailed optimization information.
*** 20365,20396 ****
  .RS 4
  .Sp
  The following option controls the dump verbosity:
! .IP "\fBinternals\fR" 4
  .IX Item "internals"
! By default, only \*(L"high-level\*(R" messages are emitted. This option enables
  additional, more detailed, messages, which are likely to only be of interest
! to \s-1GCC\s0 developers.
  .RE
  .RS 4
  .Sp
  One or more of the following option keywords can be used to describe a
  group of optimizations:
! .IP "\fBipa\fR" 4
  .IX Item "ipa"
  Enable dumps from all interprocedural optimizations.
! .IP "\fBloop\fR" 4
  .IX Item "loop"
  Enable dumps from all loop optimizations.
! .IP "\fBinline\fR" 4
  .IX Item "inline"
  Enable dumps from all inlining optimizations.
! .IP "\fBomp\fR" 4
  .IX Item "omp"
! Enable dumps from all \s-1OMP\s0 (Offloading and Multi Processing) optimizations.
! .IP "\fBvec\fR" 4
  .IX Item "vec"
  Enable dumps from all vectorization optimizations.
! .IP "\fBoptall\fR" 4
  .IX Item "optall"
  Enable dumps from all optimizations. This is a superset of
  the optimization groups listed above.
--- 20300,20331 ----
  .RS 4
  .Sp
  The following option controls the dump verbosity:
! .IP \fBinternals\fR 4
  .IX Item "internals"
! By default, only "high\-level" messages are emitted. This option enables
  additional, more detailed, messages, which are likely to only be of interest
! to GCC developers.
  .RE
  .RS 4
  .Sp
  One or more of the following option keywords can be used to describe a
  group of optimizations:
! .IP \fBipa\fR 4
  .IX Item "ipa"
  Enable dumps from all interprocedural optimizations.
! .IP \fBloop\fR 4
  .IX Item "loop"
  Enable dumps from all loop optimizations.
! .IP \fBinline\fR 4
  .IX Item "inline"
  Enable dumps from all inlining optimizations.
! .IP \fBomp\fR 4
  .IX Item "omp"
! Enable dumps from all OMP (Offloading and Multi Processing) optimizations.
! .IP \fBvec\fR 4
  .IX Item "vec"
  Enable dumps from all vectorization optimizations.
! .IP \fBoptall\fR 4
  .IX Item "optall"
  Enable dumps from all optimizations. This is a superset of
  the optimization groups listed above.
*************** the optimization groups listed above.
*** 20398,20406 ****
  .RS 4
  .Sp
  If \fIoptions\fR is
! omitted, it defaults to \fBoptimized-optall\fR, which means to dump messages
  about successful optimizations from all the passes, omitting messages
! that are treated as \*(L"internals\*(R".
  .Sp
  If the \fIfilename\fR is provided, then the dumps from all the
  applicable optimizations are concatenated into the \fIfilename\fR.
--- 20333,20341 ----
  .RS 4
  .Sp
  If \fIoptions\fR is
! omitted, it defaults to \fBoptimized\-optall\fR, which means to dump messages
  about successful optimizations from all the passes, omitting messages
! that are treated as "internals".
  .Sp
  If the \fIfilename\fR is provided, then the dumps from all the
  applicable optimizations are concatenated into the \fIfilename\fR.
*************** the first option takes effect and the su
*** 20462,20498 ****
  ignored. Thus only \fIvec.miss\fR is produced which contains
  dumps from the vectorizer about missed opportunities.
  .RE
! .IP "\fB\-fsave\-optimization\-record\fR" 4
  .IX Item "-fsave-optimization-record"
! Write a \s-1SRCFILE\s0.opt\-record.json.gz file detailing what optimizations
  were performed, for those optimizations that support \fB\-fopt\-info\fR.
  .Sp
  This option is experimental and the format of the data within the
! compressed \s-1JSON\s0 file is subject to change.
  .Sp
! It is roughly equivalent to a machine-readable version of
  \&\fB\-fopt\-info\-all\fR, as a collection of messages with source file,
  line number and column number, with the following additional data for
  each message:
  .RS 4
! .IP "*" 4
  the execution count of the code being optimized, along with metadata about
  whether this was from actual profile data, or just an estimate, allowing
  consumers to prioritize messages by code hotness,
! .IP "*" 4
  the function name of the code being optimized, where applicable,
! .IP "*" 4
! the \*(L"inlining chain\*(R" for the code being optimized, so that when
  a function is inlined into several different places (which might
  themselves be inlined), the reader can distinguish between the copies,
! .IP "*" 4
  objects identifying those parts of the message that refer to expressions,
! statements or symbol-table nodes, which of these categories they are, and,
  when available, their source code location,
! .IP "*" 4
! the \s-1GCC\s0 pass that emitted the message, and
! .IP "*" 4
! the location in \s-1GCC\s0's own code from which the message was emitted
  .RE
  .RS 4
  .Sp
--- 20397,20433 ----
  ignored. Thus only \fIvec.miss\fR is produced which contains
  dumps from the vectorizer about missed opportunities.
  .RE
! .IP \fB\-fsave\-optimization\-record\fR 4
  .IX Item "-fsave-optimization-record"
! Write a SRCFILE.opt\-record.json.gz file detailing what optimizations
  were performed, for those optimizations that support \fB\-fopt\-info\fR.
  .Sp
  This option is experimental and the format of the data within the
! compressed JSON file is subject to change.
  .Sp
! It is roughly equivalent to a machine\-readable version of
  \&\fB\-fopt\-info\-all\fR, as a collection of messages with source file,
  line number and column number, with the following additional data for
  each message:
  .RS 4
! .IP * 4
  the execution count of the code being optimized, along with metadata about
  whether this was from actual profile data, or just an estimate, allowing
  consumers to prioritize messages by code hotness,
! .IP * 4
  the function name of the code being optimized, where applicable,
! .IP * 4
! the "inlining chain" for the code being optimized, so that when
  a function is inlined into several different places (which might
  themselves be inlined), the reader can distinguish between the copies,
! .IP * 4
  objects identifying those parts of the message that refer to expressions,
! statements or symbol\-table nodes, which of these categories they are, and,
  when available, their source code location,
! .IP * 4
! the GCC pass that emitted the message, and
! .IP * 4
! the location in GCC\*(Aqs own code from which the message was emitted
  .RE
  .RS 4
  .Sp
*************** Additionally, some messages are logicall
*** 20500,20506 ****
  messages, reflecting implementation details of the optimization
  passes.
  .RE
! .IP "\fB\-fsched\-verbose=\fR\fIn\fR" 4
  .IX Item "-fsched-verbose=n"
  On targets that use instruction scheduling, this option controls the
  amount of debugging output the scheduler prints to the dump files.
--- 20435,20441 ----
  messages, reflecting implementation details of the optimization
  passes.
  .RE
! .IP \fB\-fsched\-verbose=\fR\fIn\fR 4
  .IX Item "-fsched-verbose=n"
  On targets that use instruction scheduling, this option controls the
  amount of debugging output the scheduler prints to the dump files.
*************** For \fIn\fR greater than zero, \fB\-fsch
*** 20509,20574 ****
  same information as \fB\-fdump\-rtl\-sched1\fR and \fB\-fdump\-rtl\-sched2\fR.
  For \fIn\fR greater than one, it also output basic block probabilities,
  detailed ready list information and unit/insn info.  For \fIn\fR greater
! than two, it includes \s-1RTL\s0 at abort point, control-flow and regions info.
  And for \fIn\fR over four, \fB\-fsched\-verbose\fR also includes
  dependence info.
! .IP "\fB\-fenable\-\fR\fIkind\fR\fB\-\fR\fIpass\fR" 4
  .IX Item "-fenable-kind-pass"
  .PD 0
! .IP "\fB\-fdisable\-\fR\fIkind\fR\fB\-\fR\fIpass\fR\fB=\fR\fIrange-list\fR" 4
  .IX Item "-fdisable-kind-pass=range-list"
  .PD
  This is a set of options that are used to explicitly disable/enable
! optimization passes.  These options are intended for use for debugging \s-1GCC.\s0
  Compiler users should use regular options for enabling/disabling
  passes instead.
  .RS 4
! .IP "\fB\-fdisable\-ipa\-\fR\fIpass\fR" 4
  .IX Item "-fdisable-ipa-pass"
! Disable \s-1IPA\s0 pass \fIpass\fR. \fIpass\fR is the pass name.  If the same pass is
  statically invoked in the compiler multiple times, the pass name should be
  appended with a sequential number starting from 1.
! .IP "\fB\-fdisable\-rtl\-\fR\fIpass\fR" 4
  .IX Item "-fdisable-rtl-pass"
  .PD 0
! .IP "\fB\-fdisable\-rtl\-\fR\fIpass\fR\fB=\fR\fIrange-list\fR" 4
  .IX Item "-fdisable-rtl-pass=range-list"
  .PD
! Disable \s-1RTL\s0 pass \fIpass\fR.  \fIpass\fR is the pass name.  If the same pass is
  statically invoked in the compiler multiple times, the pass name should be
! appended with a sequential number starting from 1.  \fIrange-list\fR is a
! comma-separated list of function ranges or assembler names.  Each range is a number
  pair separated by a colon.  The range is inclusive in both ends.  If the range
  is trivial, the number pair can be simplified as a single number.  If the
! function's call graph node's \fIuid\fR falls within one of the specified ranges,
  the \fIpass\fR is disabled for that function.  The \fIuid\fR is shown in the
  function header of a dump file, and the pass names can be dumped by using
  option \fB\-fdump\-passes\fR.
! .IP "\fB\-fdisable\-tree\-\fR\fIpass\fR" 4
  .IX Item "-fdisable-tree-pass"
  .PD 0
! .IP "\fB\-fdisable\-tree\-\fR\fIpass\fR\fB=\fR\fIrange-list\fR" 4
  .IX Item "-fdisable-tree-pass=range-list"
  .PD
  Disable tree pass \fIpass\fR.  See \fB\-fdisable\-rtl\fR for the description of
  option arguments.
! .IP "\fB\-fenable\-ipa\-\fR\fIpass\fR" 4
  .IX Item "-fenable-ipa-pass"
! Enable \s-1IPA\s0 pass \fIpass\fR.  \fIpass\fR is the pass name.  If the same pass is
  statically invoked in the compiler multiple times, the pass name should be
  appended with a sequential number starting from 1.
! .IP "\fB\-fenable\-rtl\-\fR\fIpass\fR" 4
  .IX Item "-fenable-rtl-pass"
  .PD 0
! .IP "\fB\-fenable\-rtl\-\fR\fIpass\fR\fB=\fR\fIrange-list\fR" 4
  .IX Item "-fenable-rtl-pass=range-list"
  .PD
! Enable \s-1RTL\s0 pass \fIpass\fR.  See \fB\-fdisable\-rtl\fR for option argument
  description and examples.
! .IP "\fB\-fenable\-tree\-\fR\fIpass\fR" 4
  .IX Item "-fenable-tree-pass"
  .PD 0
! .IP "\fB\-fenable\-tree\-\fR\fIpass\fR\fB=\fR\fIrange-list\fR" 4
  .IX Item "-fenable-tree-pass=range-list"
  .PD
  Enable tree pass \fIpass\fR.  See \fB\-fdisable\-rtl\fR for the description
--- 20444,20509 ----
  same information as \fB\-fdump\-rtl\-sched1\fR and \fB\-fdump\-rtl\-sched2\fR.
  For \fIn\fR greater than one, it also output basic block probabilities,
  detailed ready list information and unit/insn info.  For \fIn\fR greater
! than two, it includes RTL at abort point, control\-flow and regions info.
  And for \fIn\fR over four, \fB\-fsched\-verbose\fR also includes
  dependence info.
! .IP \fB\-fenable\-\fR\fIkind\fR\fB\-\fR\fIpass\fR 4
  .IX Item "-fenable-kind-pass"
  .PD 0
! .IP \fB\-fdisable\-\fR\fIkind\fR\fB\-\fR\fIpass\fR\fB=\fR\fIrange\-list\fR 4
  .IX Item "-fdisable-kind-pass=range-list"
  .PD
  This is a set of options that are used to explicitly disable/enable
! optimization passes.  These options are intended for use for debugging GCC.
  Compiler users should use regular options for enabling/disabling
  passes instead.
  .RS 4
! .IP \fB\-fdisable\-ipa\-\fR\fIpass\fR 4
  .IX Item "-fdisable-ipa-pass"
! Disable IPA pass \fIpass\fR. \fIpass\fR is the pass name.  If the same pass is
  statically invoked in the compiler multiple times, the pass name should be
  appended with a sequential number starting from 1.
! .IP \fB\-fdisable\-rtl\-\fR\fIpass\fR 4
  .IX Item "-fdisable-rtl-pass"
  .PD 0
! .IP \fB\-fdisable\-rtl\-\fR\fIpass\fR\fB=\fR\fIrange\-list\fR 4
  .IX Item "-fdisable-rtl-pass=range-list"
  .PD
! Disable RTL pass \fIpass\fR.  \fIpass\fR is the pass name.  If the same pass is
  statically invoked in the compiler multiple times, the pass name should be
! appended with a sequential number starting from 1.  \fIrange\-list\fR is a
! comma\-separated list of function ranges or assembler names.  Each range is a number
  pair separated by a colon.  The range is inclusive in both ends.  If the range
  is trivial, the number pair can be simplified as a single number.  If the
! function\*(Aqs call graph node\*(Aqs \fIuid\fR falls within one of the specified ranges,
  the \fIpass\fR is disabled for that function.  The \fIuid\fR is shown in the
  function header of a dump file, and the pass names can be dumped by using
  option \fB\-fdump\-passes\fR.
! .IP \fB\-fdisable\-tree\-\fR\fIpass\fR 4
  .IX Item "-fdisable-tree-pass"
  .PD 0
! .IP \fB\-fdisable\-tree\-\fR\fIpass\fR\fB=\fR\fIrange\-list\fR 4
  .IX Item "-fdisable-tree-pass=range-list"
  .PD
  Disable tree pass \fIpass\fR.  See \fB\-fdisable\-rtl\fR for the description of
  option arguments.
! .IP \fB\-fenable\-ipa\-\fR\fIpass\fR 4
  .IX Item "-fenable-ipa-pass"
! Enable IPA pass \fIpass\fR.  \fIpass\fR is the pass name.  If the same pass is
  statically invoked in the compiler multiple times, the pass name should be
  appended with a sequential number starting from 1.
! .IP \fB\-fenable\-rtl\-\fR\fIpass\fR 4
  .IX Item "-fenable-rtl-pass"
  .PD 0
! .IP \fB\-fenable\-rtl\-\fR\fIpass\fR\fB=\fR\fIrange\-list\fR 4
  .IX Item "-fenable-rtl-pass=range-list"
  .PD
! Enable RTL pass \fIpass\fR.  See \fB\-fdisable\-rtl\fR for option argument
  description and examples.
! .IP \fB\-fenable\-tree\-\fR\fIpass\fR 4
  .IX Item "-fenable-tree-pass"
  .PD 0
! .IP \fB\-fenable\-tree\-\fR\fIpass\fR\fB=\fR\fIrange\-list\fR 4
  .IX Item "-fenable-tree-pass=range-list"
  .PD
  Enable tree pass \fIpass\fR.  See \fB\-fdisable\-rtl\fR for the description
*************** Here are some examples showing uses of t
*** 20595,20612 ****
  \&           \-fenable\-tree\-unroll
  .Ve
  .RE
! .IP "\fB\-fchecking\fR" 4
  .IX Item "-fchecking"
  .PD 0
! .IP "\fB\-fchecking=\fR\fIn\fR" 4
  .IX Item "-fchecking=n"
  .PD
  Enable internal consistency checking.  The default depends on
  the compiler configuration.  \fB\-fchecking=2\fR enables further
  internal consistency checking that might affect code generation.
! .IP "\fB\-frandom\-seed=\fR\fIstring\fR" 4
  .IX Item "-frandom-seed=string"
! This option provides a seed that \s-1GCC\s0 uses in place of
  random numbers in generating certain symbol names
  that have to be different in every compiled file.  It is also used to
  place unique stamps in coverage data files and the object files that
--- 20530,20547 ----
  \&           \-fenable\-tree\-unroll
  .Ve
  .RE
! .IP \fB\-fchecking\fR 4
  .IX Item "-fchecking"
  .PD 0
! .IP \fB\-fchecking=\fR\fIn\fR 4
  .IX Item "-fchecking=n"
  .PD
  Enable internal consistency checking.  The default depends on
  the compiler configuration.  \fB\-fchecking=2\fR enables further
  internal consistency checking that might affect code generation.
! .IP \fB\-frandom\-seed=\fR\fIstring\fR 4
  .IX Item "-frandom-seed=string"
! This option provides a seed that GCC uses in place of
  random numbers in generating certain symbol names
  that have to be different in every compiled file.  It is also used to
  place unique stamps in coverage data files and the object files that
*************** produce them.  You can use the \fB\-fran
*** 20614,20647 ****
  reproducibly identical object files.
  .Sp
  The \fIstring\fR can either be a number (decimal, octal or hex) or an
! arbitrary string (in which case it's converted to a number by
! computing \s-1CRC32\s0).
  .Sp
  The \fIstring\fR should be different for every file you compile.
! .IP "\fB\-save\-temps\fR" 4
  .IX Item "-save-temps"
! Store the usual \*(L"temporary\*(R" intermediate files permanently; name them
  as auxiliary output files, as specified described under
  \&\fB\-dumpbase\fR and \fB\-dumpdir\fR.
  .Sp
! When used in combination with the \fB\-x\fR command-line option,
  \&\fB\-save\-temps\fR is sensible enough to avoid overwriting an
  input source file with the same extension as an intermediate file.
  The corresponding intermediate file may be obtained by renaming the
  source file before using \fB\-save\-temps\fR.
! .IP "\fB\-save\-temps=cwd\fR" 4
  .IX Item "-save-temps=cwd"
  Equivalent to \fB\-save\-temps \-dumpdir ./\fR.
! .IP "\fB\-save\-temps=obj\fR" 4
  .IX Item "-save-temps=obj"
! Equivalent to \fB\-save\-temps \-dumpdir \f(BIoutdir/\fB\fR, where
  \&\fIoutdir/\fR is the directory of the output file specified after the
  \&\fB\-o\fR option, including any directory separators.  If the
  \&\fB\-o\fR option is not used, the \fB\-save\-temps=obj\fR switch
  behaves like \fB\-save\-temps=cwd\fR.
! .IP "\fB\-time\fR[\fB=\fR\fIfile\fR]" 4
  .IX Item "-time[=file]"
! Report the \s-1CPU\s0 time taken by each subprocess in the compilation
  sequence.  For C source files, this is the compiler proper and assembler
  (plus the linker if linking is done).
  .Sp
--- 20549,20582 ----
  reproducibly identical object files.
  .Sp
  The \fIstring\fR can either be a number (decimal, octal or hex) or an
! arbitrary string (in which case it\*(Aqs converted to a number by
! computing CRC32).
  .Sp
  The \fIstring\fR should be different for every file you compile.
! .IP \fB\-save\-temps\fR 4
  .IX Item "-save-temps"
! Store the usual "temporary" intermediate files permanently; name them
  as auxiliary output files, as specified described under
  \&\fB\-dumpbase\fR and \fB\-dumpdir\fR.
  .Sp
! When used in combination with the \fB\-x\fR command\-line option,
  \&\fB\-save\-temps\fR is sensible enough to avoid overwriting an
  input source file with the same extension as an intermediate file.
  The corresponding intermediate file may be obtained by renaming the
  source file before using \fB\-save\-temps\fR.
! .IP \fB\-save\-temps=cwd\fR 4
  .IX Item "-save-temps=cwd"
  Equivalent to \fB\-save\-temps \-dumpdir ./\fR.
! .IP \fB\-save\-temps=obj\fR 4
  .IX Item "-save-temps=obj"
! Equivalent to \fB\-save\-temps \-dumpdir \fR\f(BIoutdir/\fR, where
  \&\fIoutdir/\fR is the directory of the output file specified after the
  \&\fB\-o\fR option, including any directory separators.  If the
  \&\fB\-o\fR option is not used, the \fB\-save\-temps=obj\fR switch
  behaves like \fB\-save\-temps=cwd\fR.
! .IP \fB\-time\fR[\fB=\fR\fIfile\fR] 4
  .IX Item "-time[=file]"
! Report the CPU time taken by each subprocess in the compilation
  sequence.  For C source files, this is the compiler proper and assembler
  (plus the linker if linking is done).
  .Sp
*************** Without the specification of an output f
*** 20652,20659 ****
  \&        # as 0.00 0.01
  .Ve
  .Sp
! The first number on each line is the \*(L"user time\*(R", that is time spent
! executing the program itself.  The second number is \*(L"system time\*(R",
  time spent executing operating system routines on behalf of the program.
  Both numbers are in seconds.
  .Sp
--- 20587,20594 ----
  \&        # as 0.00 0.01
  .Ve
  .Sp
! The first number on each line is the "user time", that is time spent
! executing the program itself.  The second number is "system time",
  time spent executing operating system routines on behalf of the program.
  Both numbers are in seconds.
  .Sp
*************** named file, and it looks like this:
*** 20665,20680 ****
  \&        0.00 0.01 as <options>
  .Ve
  .Sp
! The \*(L"user time\*(R" and the \*(L"system time\*(R" are moved before the program
  name, and the options passed to the program are displayed, so that one
  can later tell what file was being compiled, and with which options.
! .IP "\fB\-fdump\-final\-insns\fR[\fB=\fR\fIfile\fR]" 4
  .IX Item "-fdump-final-insns[=file]"
! Dump the final internal representation (\s-1RTL\s0) to \fIfile\fR.  If the
  optional argument is omitted (or if \fIfile\fR is \f(CW\*(C`.\*(C'\fR), the name
  of the dump file is determined by appending \f(CW\*(C`.gkd\*(C'\fR to the
  dump base name, see \fB\-dumpbase\fR.
! .IP "\fB\-fcompare\-debug\fR[\fB=\fR\fIopts\fR]" 4
  .IX Item "-fcompare-debug[=opts]"
  If no error occurs during compilation, run the compiler a second time,
  adding \fIopts\fR and \fB\-fcompare\-debug\-second\fR to the arguments
--- 20600,20615 ----
  \&        0.00 0.01 as <options>
  .Ve
  .Sp
! The "user time" and the "system time" are moved before the program
  name, and the options passed to the program are displayed, so that one
  can later tell what file was being compiled, and with which options.
! .IP \fB\-fdump\-final\-insns\fR[\fB=\fR\fIfile\fR] 4
  .IX Item "-fdump-final-insns[=file]"
! Dump the final internal representation (RTL) to \fIfile\fR.  If the
  optional argument is omitted (or if \fIfile\fR is \f(CW\*(C`.\*(C'\fR), the name
  of the dump file is determined by appending \f(CW\*(C`.gkd\*(C'\fR to the
  dump base name, see \fB\-dumpbase\fR.
! .IP \fB\-fcompare\-debug\fR[\fB=\fR\fIopts\fR] 4
  .IX Item "-fcompare-debug[=opts]"
  If no error occurs during compilation, run the compiler a second time,
  adding \fIopts\fR and \fB\-fcompare\-debug\-second\fR to the arguments
*************** representation in both compilations, and
*** 20683,20706 ****
  .Sp
  If the equal sign is omitted, the default \fB\-gtoggle\fR is used.
  .Sp
! The environment variable \fB\s-1GCC_COMPARE_DEBUG\s0\fR, if defined, non-empty
  and nonzero, implicitly enables \fB\-fcompare\-debug\fR.  If
! \&\fB\s-1GCC_COMPARE_DEBUG\s0\fR is defined to a string starting with a dash,
  then it is used for \fIopts\fR, otherwise the default \fB\-gtoggle\fR
  is used.
  .Sp
  \&\fB\-fcompare\-debug=\fR, with the equal sign but without \fIopts\fR,
  is equivalent to \fB\-fno\-compare\-debug\fR, which disables the dumping
  of the final representation and the second compilation, preventing even
! \&\fB\s-1GCC_COMPARE_DEBUG\s0\fR from taking effect.
  .Sp
  To verify full coverage during \fB\-fcompare\-debug\fR testing, set
! \&\fB\s-1GCC_COMPARE_DEBUG\s0\fR to say \fB\-fcompare\-debug\-not\-overridden\fR,
! which \s-1GCC\s0 rejects as an invalid option in any actual compilation
  (rather than preprocessing, assembly or linking).  To get just a
! warning, setting \fB\s-1GCC_COMPARE_DEBUG\s0\fR to \fB\-w%n\-fcompare\-debug
  not overridden\fR will do.
! .IP "\fB\-fcompare\-debug\-second\fR" 4
  .IX Item "-fcompare-debug-second"
  This option is implicitly passed to the compiler for the second
  compilation requested by \fB\-fcompare\-debug\fR, along with options to
--- 20618,20641 ----
  .Sp
  If the equal sign is omitted, the default \fB\-gtoggle\fR is used.
  .Sp
! The environment variable \fBGCC_COMPARE_DEBUG\fR, if defined, non\-empty
  and nonzero, implicitly enables \fB\-fcompare\-debug\fR.  If
! \&\fBGCC_COMPARE_DEBUG\fR is defined to a string starting with a dash,
  then it is used for \fIopts\fR, otherwise the default \fB\-gtoggle\fR
  is used.
  .Sp
  \&\fB\-fcompare\-debug=\fR, with the equal sign but without \fIopts\fR,
  is equivalent to \fB\-fno\-compare\-debug\fR, which disables the dumping
  of the final representation and the second compilation, preventing even
! \&\fBGCC_COMPARE_DEBUG\fR from taking effect.
  .Sp
  To verify full coverage during \fB\-fcompare\-debug\fR testing, set
! \&\fBGCC_COMPARE_DEBUG\fR to say \fB\-fcompare\-debug\-not\-overridden\fR,
! which GCC rejects as an invalid option in any actual compilation
  (rather than preprocessing, assembly or linking).  To get just a
! warning, setting \fBGCC_COMPARE_DEBUG\fR to \fB\-w%n\-fcompare\-debug
  not overridden\fR will do.
! .IP \fB\-fcompare\-debug\-second\fR 4
  .IX Item "-fcompare-debug-second"
  This option is implicitly passed to the compiler for the second
  compilation requested by \fB\-fcompare\-debug\fR, along with options to
*************** overwriting those generated by the first
*** 20713,20719 ****
  When this option is passed to the compiler driver, it causes the
  \&\fIfirst\fR compilation to be skipped, which makes it useful for little
  other than debugging the compiler proper.
! .IP "\fB\-gtoggle\fR" 4
  .IX Item "-gtoggle"
  Turn off generation of debug info, if leaving out this option
  generates it, or turn it on at level 2 otherwise.  The position of this
--- 20648,20654 ----
  When this option is passed to the compiler driver, it causes the
  \&\fIfirst\fR compilation to be skipped, which makes it useful for little
  other than debugging the compiler proper.
! .IP \fB\-gtoggle\fR 4
  .IX Item "-gtoggle"
  Turn off generation of debug info, if leaving out this option
  generates it, or turn it on at level 2 otherwise.  The position of this
*************** argument in the command line does not ma
*** 20721,20731 ****
  other options are processed, and it does so only once, no matter how
  many times it is given.  This is mainly intended to be used with
  \&\fB\-fcompare\-debug\fR.
! .IP "\fB\-fvar\-tracking\-assignments\-toggle\fR" 4
  .IX Item "-fvar-tracking-assignments-toggle"
  Toggle \fB\-fvar\-tracking\-assignments\fR, in the same way that
  \&\fB\-gtoggle\fR toggles \fB\-g\fR.
! .IP "\fB\-Q\fR" 4
  .IX Item "-Q"
  When used on the command line prior to \fB\-\-help=\fR, \fB\-Q\fR
  acts as a modifier to the help output.
--- 20656,20666 ----
  other options are processed, and it does so only once, no matter how
  many times it is given.  This is mainly intended to be used with
  \&\fB\-fcompare\-debug\fR.
! .IP \fB\-fvar\-tracking\-assignments\-toggle\fR 4
  .IX Item "-fvar-tracking-assignments-toggle"
  Toggle \fB\-fvar\-tracking\-assignments\fR, in the same way that
  \&\fB\-gtoggle\fR toggles \fB\-g\fR.
! .IP \fB\-Q\fR 4
  .IX Item "-Q"
  When used on the command line prior to \fB\-\-help=\fR, \fB\-Q\fR
  acts as a modifier to the help output.
*************** acts as a modifier to the help output.
*** 20733,20796 ****
  Otherwise, this option makes the compiler print out each function name
  as it is compiled, and print some statistics about each pass when it
  finishes.
! .IP "\fB\-ftime\-report\fR" 4
  .IX Item "-ftime-report"
  Makes the compiler print some statistics to stderr about the time consumed
  by each pass when it finishes.
  .Sp
! If \s-1SARIF\s0 output of diagnostics was requested via
  \&\fB\-fdiagnostics\-format=sarif\-file\fR or
  \&\fB\-fdiagnostics\-format=sarif\-stderr\fR then the \fB\-ftime\-report\fR
! information is instead emitted in \s-1JSON\s0 form as part of \s-1SARIF\s0 output.  The
! precise format of this \s-1JSON\s0 data is subject to change, and the values may
  not exactly match those emitted to stderr due to being written out at a
  slightly different place within the compiler.
! .IP "\fB\-ftime\-report\-details\fR" 4
  .IX Item "-ftime-report-details"
  Record the time consumed by infrastructure parts separately for each pass.
! .IP "\fB\-fira\-verbose=\fR\fIn\fR" 4
  .IX Item "-fira-verbose=n"
  Control the verbosity of the dump file for the integrated register allocator.
  The default value is 5.  If the value \fIn\fR is greater or equal to 10,
  the dump output is sent to stderr using the same format as \fIn\fR minus 10.
! .IP "\fB\-flto\-report\fR" 4
  .IX Item "-flto-report"
! Prints a report with internal details on the workings of the link-time
  optimizer.  The contents of this report vary from version to version.
! It is meant to be useful to \s-1GCC\s0 developers when processing object
! files in \s-1LTO\s0 mode (via \fB\-flto\fR).
  .Sp
  Disabled by default.
! .IP "\fB\-flto\-report\-wpa\fR" 4
  .IX Item "-flto-report-wpa"
! Like \fB\-flto\-report\fR, but only print for the \s-1WPA\s0 phase of link-time
  optimization.
! .IP "\fB\-fmem\-report\fR" 4
  .IX Item "-fmem-report"
  Makes the compiler print some statistics about permanent memory
  allocation when it finishes.
! .IP "\fB\-fmem\-report\-wpa\fR" 4
  .IX Item "-fmem-report-wpa"
  Makes the compiler print some statistics about permanent memory
! allocation for the \s-1WPA\s0 phase only.
! .IP "\fB\-fpre\-ipa\-mem\-report\fR" 4
  .IX Item "-fpre-ipa-mem-report"
  .PD 0
! .IP "\fB\-fpost\-ipa\-mem\-report\fR" 4
  .IX Item "-fpost-ipa-mem-report"
  .PD
  Makes the compiler print some statistics about permanent memory
  allocation before or after interprocedural optimization.
! .IP "\fB\-fmultiflags\fR" 4
  .IX Item "-fmultiflags"
! This option enables multilib-aware \f(CW\*(C`TFLAGS\*(C'\fR to be used to build
  target libraries with options different from those the compiler is
  configured to use by default, through the use of specs set up by compiler internals, by the target, or by builders at
  configure time.
  .Sp
  Like \f(CW\*(C`TFLAGS\*(C'\fR, this allows the target libraries to be built for
  portable baseline environments, while the compiler defaults to more
! demanding ones.  That's useful because users can easily override the
  defaults the compiler is configured to use to build their own programs,
  if the defaults are not ideal for their target environment, whereas
  rebuilding the runtime libraries is usually not as easy or desirable.
--- 20668,20731 ----
  Otherwise, this option makes the compiler print out each function name
  as it is compiled, and print some statistics about each pass when it
  finishes.
! .IP \fB\-ftime\-report\fR 4
  .IX Item "-ftime-report"
  Makes the compiler print some statistics to stderr about the time consumed
  by each pass when it finishes.
  .Sp
! If SARIF output of diagnostics was requested via
  \&\fB\-fdiagnostics\-format=sarif\-file\fR or
  \&\fB\-fdiagnostics\-format=sarif\-stderr\fR then the \fB\-ftime\-report\fR
! information is instead emitted in JSON form as part of SARIF output.  The
! precise format of this JSON data is subject to change, and the values may
  not exactly match those emitted to stderr due to being written out at a
  slightly different place within the compiler.
! .IP \fB\-ftime\-report\-details\fR 4
  .IX Item "-ftime-report-details"
  Record the time consumed by infrastructure parts separately for each pass.
! .IP \fB\-fira\-verbose=\fR\fIn\fR 4
  .IX Item "-fira-verbose=n"
  Control the verbosity of the dump file for the integrated register allocator.
  The default value is 5.  If the value \fIn\fR is greater or equal to 10,
  the dump output is sent to stderr using the same format as \fIn\fR minus 10.
! .IP \fB\-flto\-report\fR 4
  .IX Item "-flto-report"
! Prints a report with internal details on the workings of the link\-time
  optimizer.  The contents of this report vary from version to version.
! It is meant to be useful to GCC developers when processing object
! files in LTO mode (via \fB\-flto\fR).
  .Sp
  Disabled by default.
! .IP \fB\-flto\-report\-wpa\fR 4
  .IX Item "-flto-report-wpa"
! Like \fB\-flto\-report\fR, but only print for the WPA phase of link\-time
  optimization.
! .IP \fB\-fmem\-report\fR 4
  .IX Item "-fmem-report"
  Makes the compiler print some statistics about permanent memory
  allocation when it finishes.
! .IP \fB\-fmem\-report\-wpa\fR 4
  .IX Item "-fmem-report-wpa"
  Makes the compiler print some statistics about permanent memory
! allocation for the WPA phase only.
! .IP \fB\-fpre\-ipa\-mem\-report\fR 4
  .IX Item "-fpre-ipa-mem-report"
  .PD 0
! .IP \fB\-fpost\-ipa\-mem\-report\fR 4
  .IX Item "-fpost-ipa-mem-report"
  .PD
  Makes the compiler print some statistics about permanent memory
  allocation before or after interprocedural optimization.
! .IP \fB\-fmultiflags\fR 4
  .IX Item "-fmultiflags"
! This option enables multilib\-aware \f(CW\*(C`TFLAGS\*(C'\fR to be used to build
  target libraries with options different from those the compiler is
  configured to use by default, through the use of specs set up by compiler internals, by the target, or by builders at
  configure time.
  .Sp
  Like \f(CW\*(C`TFLAGS\*(C'\fR, this allows the target libraries to be built for
  portable baseline environments, while the compiler defaults to more
! demanding ones.  That\*(Aqs useful because users can easily override the
  defaults the compiler is configured to use to build their own programs,
  if the defaults are not ideal for their target environment, whereas
  rebuilding the runtime libraries is usually not as easy or desirable.
*************** selected for different multilibs.  The w
*** 20800,20830 ****
  build with \fBmake TFLAGS=\-fmultiflags\fR, after configuring
  \&\fB\-\-with\-specs=%{fmultiflags:...}\fR.
  .Sp
! This option is discarded by the driver once it's done processing driver
  self spec.
  .Sp
  It is also useful to check that \f(CW\*(C`TFLAGS\*(C'\fR are being used to build
! all target libraries, by configuring a non-bootstrap compiler
! \&\fB\-\-with\-specs='%{!fmultiflags:%emissing \s-1TFLAGS\s0}'\fR and building
  the compiler and target libraries.
! .IP "\fB\-fprofile\-report\fR" 4
  .IX Item "-fprofile-report"
  Makes the compiler print some statistics about consistency of the
  (estimated) profile and effect of individual passes.
! .IP "\fB\-fstack\-usage\fR" 4
  .IX Item "-fstack-usage"
  Makes the compiler output stack usage information for the program, on a
! per-function basis.  The filename for the dump is made by appending
  \&\fI.su\fR to the \fIauxname\fR.  \fIauxname\fR is generated from the name of
  the output file, if explicitly specified and it is not an executable,
  otherwise it is the basename of the source file.  An entry is made up
  of three fields:
  .RS 4
! .IP "*" 4
  The name of the function.
! .IP "*" 4
  A number of bytes.
! .IP "*" 4
  One or more qualifiers: \f(CW\*(C`static\*(C'\fR, \f(CW\*(C`dynamic\*(C'\fR, \f(CW\*(C`bounded\*(C'\fR.
  .RE
  .RS 4
--- 20735,20765 ----
  build with \fBmake TFLAGS=\-fmultiflags\fR, after configuring
  \&\fB\-\-with\-specs=%{fmultiflags:...}\fR.
  .Sp
! This option is discarded by the driver once it\*(Aqs done processing driver
  self spec.
  .Sp
  It is also useful to check that \f(CW\*(C`TFLAGS\*(C'\fR are being used to build
! all target libraries, by configuring a non\-bootstrap compiler
! \&\fB\-\-with\-specs=\*(Aq%{!fmultiflags:%emissing TFLAGS}\*(Aq\fR and building
  the compiler and target libraries.
! .IP \fB\-fprofile\-report\fR 4
  .IX Item "-fprofile-report"
  Makes the compiler print some statistics about consistency of the
  (estimated) profile and effect of individual passes.
! .IP \fB\-fstack\-usage\fR 4
  .IX Item "-fstack-usage"
  Makes the compiler output stack usage information for the program, on a
! per\-function basis.  The filename for the dump is made by appending
  \&\fI.su\fR to the \fIauxname\fR.  \fIauxname\fR is generated from the name of
  the output file, if explicitly specified and it is not an executable,
  otherwise it is the basename of the source file.  An entry is made up
  of three fields:
  .RS 4
! .IP * 4
  The name of the function.
! .IP * 4
  A number of bytes.
! .IP * 4
  One or more qualifiers: \f(CW\*(C`static\*(C'\fR, \f(CW\*(C`dynamic\*(C'\fR, \f(CW\*(C`bounded\*(C'\fR.
  .RE
  .RS 4
*************** the function.  If it is not present, the
*** 20844,20904 ****
  not bounded at compile time and the second field only represents the
  bounded part.
  .RE
! .IP "\fB\-fstats\fR" 4
  .IX Item "-fstats"
! Emit statistics about front-end processing at the end of the compilation.
! This option is supported only by the \*(C+ front end, and
  the information is generally only useful to the G++ development team.
! .IP "\fB\-fdbg\-cnt\-list\fR" 4
  .IX Item "-fdbg-cnt-list"
  Print the name and the counter upper bound for all debug counters.
! .IP "\fB\-fdbg\-cnt=\fR\fIcounter-value-list\fR" 4
  .IX Item "-fdbg-cnt=counter-value-list"
! Set the internal debug counter lower and upper bound.  \fIcounter-value-list\fR
! is a comma-separated list of \fIname\fR:\fIlower_bound1\fR\-\fIupper_bound1\fR
  [:\fIlower_bound2\fR\-\fIupper_bound2\fR...] tuples which sets
  the name of the counter and list of closed intervals.
  The \fIlower_bound\fR is optional and is zero
  initialized if not set.
  For example, with \fB\-fdbg\-cnt=dce:2\-4:10\-11,tail_call:10\fR,
! \&\f(CW\*(C`dbg_cnt(dce)\*(C'\fR returns true only for second, third, fourth, tenth and
  eleventh invocation.
! For \f(CW\*(C`dbg_cnt(tail_call)\*(C'\fR true is returned for first 10 invocations.
! .IP "\fB\-print\-file\-name=\fR\fIlibrary\fR" 4
  .IX Item "-print-file-name=library"
  Print the full absolute name of the library file \fIlibrary\fR that
! would be used when linking\-\-\-and don't do anything else.  With this
! option, \s-1GCC\s0 does not compile or link anything; it just prints the
  file name.
! .IP "\fB\-print\-multi\-directory\fR" 4
  .IX Item "-print-multi-directory"
  Print the directory name corresponding to the multilib selected by any
  other switches present in the command line.  This directory is supposed
! to exist in \fB\s-1GCC_EXEC_PREFIX\s0\fR.
! .IP "\fB\-print\-multi\-lib\fR" 4
  .IX Item "-print-multi-lib"
  Print the mapping from multilib directory names to compiler switches
  that enable them.  The directory name is separated from the switches by
  \&\fB;\fR, and each switch starts with an \fB@\fR instead of the
  \&\fB\-\fR, without spaces between multiple switches.  This is supposed to
  ease shell processing.
! .IP "\fB\-print\-multi\-os\-directory\fR" 4
  .IX Item "-print-multi-os-directory"
! Print the path to \s-1OS\s0 libraries for the selected
! multilib, relative to some \fIlib\fR subdirectory.  If \s-1OS\s0 libraries are
  present in the \fIlib\fR subdirectory and no multilibs are used, this is
! usually just \fI.\fR, if \s-1OS\s0 libraries are present in \fIlib\fIsuffix\fI\fR
  sibling directories this prints e.g. \fI../lib64\fR, \fI../lib\fR or
! \&\fI../lib32\fR, or if \s-1OS\s0 libraries are present in \fIlib/\fIsubdir\fI\fR
  subdirectories it prints e.g. \fIamd64\fR, \fIsparcv9\fR or \fIev6\fR.
! .IP "\fB\-print\-multiarch\fR" 4
  .IX Item "-print-multiarch"
! Print the path to \s-1OS\s0 libraries for the selected multiarch,
  relative to some \fIlib\fR subdirectory.
! .IP "\fB\-print\-prog\-name=\fR\fIprogram\fR" 4
  .IX Item "-print-prog-name=program"
  Like \fB\-print\-file\-name\fR, but searches for a program such as \fBcpp\fR.
! .IP "\fB\-print\-libgcc\-file\-name\fR" 4
  .IX Item "-print-libgcc-file-name"
  Same as \fB\-print\-file\-name=libgcc.a\fR.
  .Sp
--- 20779,20839 ----
  not bounded at compile time and the second field only represents the
  bounded part.
  .RE
! .IP \fB\-fstats\fR 4
  .IX Item "-fstats"
! Emit statistics about front\-end processing at the end of the compilation.
! This option is supported only by the C++ front end, and
  the information is generally only useful to the G++ development team.
! .IP \fB\-fdbg\-cnt\-list\fR 4
  .IX Item "-fdbg-cnt-list"
  Print the name and the counter upper bound for all debug counters.
! .IP \fB\-fdbg\-cnt=\fR\fIcounter\-value\-list\fR 4
  .IX Item "-fdbg-cnt=counter-value-list"
! Set the internal debug counter lower and upper bound.  \fIcounter\-value\-list\fR
! is a comma\-separated list of \fIname\fR:\fIlower_bound1\fR\-\fIupper_bound1\fR
  [:\fIlower_bound2\fR\-\fIupper_bound2\fR...] tuples which sets
  the name of the counter and list of closed intervals.
  The \fIlower_bound\fR is optional and is zero
  initialized if not set.
  For example, with \fB\-fdbg\-cnt=dce:2\-4:10\-11,tail_call:10\fR,
! \&\f(CWdbg_cnt(dce)\fR returns true only for second, third, fourth, tenth and
  eleventh invocation.
! For \f(CWdbg_cnt(tail_call)\fR true is returned for first 10 invocations.
! .IP \fB\-print\-file\-name=\fR\fIlibrary\fR 4
  .IX Item "-print-file-name=library"
  Print the full absolute name of the library file \fIlibrary\fR that
! would be used when linking\-\-\-and don\*(Aqt do anything else.  With this
! option, GCC does not compile or link anything; it just prints the
  file name.
! .IP \fB\-print\-multi\-directory\fR 4
  .IX Item "-print-multi-directory"
  Print the directory name corresponding to the multilib selected by any
  other switches present in the command line.  This directory is supposed
! to exist in \fBGCC_EXEC_PREFIX\fR.
! .IP \fB\-print\-multi\-lib\fR 4
  .IX Item "-print-multi-lib"
  Print the mapping from multilib directory names to compiler switches
  that enable them.  The directory name is separated from the switches by
  \&\fB;\fR, and each switch starts with an \fB@\fR instead of the
  \&\fB\-\fR, without spaces between multiple switches.  This is supposed to
  ease shell processing.
! .IP \fB\-print\-multi\-os\-directory\fR 4
  .IX Item "-print-multi-os-directory"
! Print the path to OS libraries for the selected
! multilib, relative to some \fIlib\fR subdirectory.  If OS libraries are
  present in the \fIlib\fR subdirectory and no multilibs are used, this is
! usually just \fI.\fR, if OS libraries are present in \fIlibsuffix\fR
  sibling directories this prints e.g. \fI../lib64\fR, \fI../lib\fR or
! \&\fI../lib32\fR, or if OS libraries are present in \fIlib/subdir\fR
  subdirectories it prints e.g. \fIamd64\fR, \fIsparcv9\fR or \fIev6\fR.
! .IP \fB\-print\-multiarch\fR 4
  .IX Item "-print-multiarch"
! Print the path to OS libraries for the selected multiarch,
  relative to some \fIlib\fR subdirectory.
! .IP \fB\-print\-prog\-name=\fR\fIprogram\fR 4
  .IX Item "-print-prog-name=program"
  Like \fB\-print\-file\-name\fR, but searches for a program such as \fBcpp\fR.
! .IP \fB\-print\-libgcc\-file\-name\fR 4
  .IX Item "-print-libgcc-file-name"
  Same as \fB\-print\-file\-name=libgcc.a\fR.
  .Sp
*************** but you do want to link with \fIlibgcc.a
*** 20908,20965 ****
  .Vb 1
  \&        gcc \-nostdlib <files>... \`gcc \-print\-libgcc\-file\-name\`
  .Ve
! .IP "\fB\-print\-search\-dirs\fR" 4
  .IX Item "-print-search-dirs"
  Print the name of the configured installation directory and a list of
! program and library directories \fBgcc\fR searches\-\-\-and don't do anything else.
  .Sp
  This is useful when \fBgcc\fR prints the error message
  \&\fBinstallation problem, cannot exec cpp0: No such file or directory\fR.
  To resolve this you either need to put \fIcpp0\fR and the other compiler
  components where \fBgcc\fR expects to find them, or you can set the environment
! variable \fB\s-1GCC_EXEC_PREFIX\s0\fR to the directory where you installed them.
! Don't forget the trailing \fB/\fR.
! .IP "\fB\-print\-sysroot\fR" 4
  .IX Item "-print-sysroot"
  Print the target sysroot directory that is used during
  compilation.  This is the target sysroot specified either at configure
  time or using the \fB\-\-sysroot\fR option, possibly with an extra
  suffix that depends on compilation options.  If no target sysroot is
  specified, the option prints nothing.
! .IP "\fB\-print\-sysroot\-headers\-suffix\fR" 4
  .IX Item "-print-sysroot-headers-suffix"
  Print the suffix added to the target sysroot when searching for
  headers, or give an error if the compiler is not configured with such
! a suffix\-\-\-and don't do anything else.
! .IP "\fB\-dumpmachine\fR" 4
  .IX Item "-dumpmachine"
! Print the compiler's target machine (for example,
! \&\fBi686\-pc\-linux\-gnu\fR)\-\-\-and don't do anything else.
! .IP "\fB\-dumpversion\fR" 4
  .IX Item "-dumpversion"
! Print the compiler version (for example, \f(CW3.0\fR, \f(CW6.3.0\fR or \f(CW7\fR)\-\-\-and don't do
  anything else.  This is the compiler version used in filesystem paths and
  specs. Depending on how the compiler has been configured it can be just
  a single number (major version), two numbers separated by a dot (major and
  minor version) or three numbers separated by dots (major, minor and patchlevel
  version).
! .IP "\fB\-dumpfullversion\fR" 4
  .IX Item "-dumpfullversion"
! Print the full compiler version\-\-\-and don't do anything else. The output is
  always three numbers separated by dots, major, minor and patchlevel version.
! .IP "\fB\-dumpspecs\fR" 4
  .IX Item "-dumpspecs"
! Print the compiler's built-in specs\-\-\-and don't do anything else.  (This
! is used when \s-1GCC\s0 itself is being built.)
! .SS "Machine-Dependent Options"
  .IX Subsection "Machine-Dependent Options"
! Each target machine supported by \s-1GCC\s0 can have its own options\-\-\-for
  example, to allow you to compile for a particular processor variant or
! \&\s-1ABI,\s0 or to control optimizations specific to that machine.  By
! convention, the names of machine-specific options start with
  \&\fB\-m\fR.
  .PP
! Some configurations of the compiler also support additional target-specific
  options, usually for compatibility with other compilers on the same
  platform.
  .PP
--- 20843,20900 ----
  .Vb 1
  \&        gcc \-nostdlib <files>... \`gcc \-print\-libgcc\-file\-name\`
  .Ve
! .IP \fB\-print\-search\-dirs\fR 4
  .IX Item "-print-search-dirs"
  Print the name of the configured installation directory and a list of
! program and library directories \fBgcc\fR searches\-\-\-and don\*(Aqt do anything else.
  .Sp
  This is useful when \fBgcc\fR prints the error message
  \&\fBinstallation problem, cannot exec cpp0: No such file or directory\fR.
  To resolve this you either need to put \fIcpp0\fR and the other compiler
  components where \fBgcc\fR expects to find them, or you can set the environment
! variable \fBGCC_EXEC_PREFIX\fR to the directory where you installed them.
! Don\*(Aqt forget the trailing \fB/\fR.
! .IP \fB\-print\-sysroot\fR 4
  .IX Item "-print-sysroot"
  Print the target sysroot directory that is used during
  compilation.  This is the target sysroot specified either at configure
  time or using the \fB\-\-sysroot\fR option, possibly with an extra
  suffix that depends on compilation options.  If no target sysroot is
  specified, the option prints nothing.
! .IP \fB\-print\-sysroot\-headers\-suffix\fR 4
  .IX Item "-print-sysroot-headers-suffix"
  Print the suffix added to the target sysroot when searching for
  headers, or give an error if the compiler is not configured with such
! a suffix\-\-\-and don\*(Aqt do anything else.
! .IP \fB\-dumpmachine\fR 4
  .IX Item "-dumpmachine"
! Print the compiler\*(Aqs target machine (for example,
! \&\fBi686\-pc\-linux\-gnu\fR)\-\-\-and don\*(Aqt do anything else.
! .IP \fB\-dumpversion\fR 4
  .IX Item "-dumpversion"
! Print the compiler version (for example, \f(CW3.0\fR, \f(CW6.3.0\fR or \f(CW7\fR)\-\-\-and don\*(Aqt do
  anything else.  This is the compiler version used in filesystem paths and
  specs. Depending on how the compiler has been configured it can be just
  a single number (major version), two numbers separated by a dot (major and
  minor version) or three numbers separated by dots (major, minor and patchlevel
  version).
! .IP \fB\-dumpfullversion\fR 4
  .IX Item "-dumpfullversion"
! Print the full compiler version\-\-\-and don\*(Aqt do anything else. The output is
  always three numbers separated by dots, major, minor and patchlevel version.
! .IP \fB\-dumpspecs\fR 4
  .IX Item "-dumpspecs"
! Print the compiler\*(Aqs built\-in specs\-\-\-and don\*(Aqt do anything else.  (This
! is used when GCC itself is being built.)
! .SS "Machine\-Dependent Options"
  .IX Subsection "Machine-Dependent Options"
! Each target machine supported by GCC can have its own options\-\-\-for
  example, to allow you to compile for a particular processor variant or
! ABI, or to control optimizations specific to that machine.  By
! convention, the names of machine\-specific options start with
  \&\fB\-m\fR.
  .PP
! Some configurations of the compiler also support additional target\-specific
  options, usually for compatibility with other compilers on the same
  platform.
  .PP
*************** platform.
*** 20967,21014 ****
  .IX Subsection "AArch64 Options"
  .PP
  These options are defined for AArch64 implementations:
! .IP "\fB\-mabi=\fR\fIname\fR" 4
  .IX Item "-mabi=name"
  Generate code for the specified data model.  Permissible values
! are \fBilp32\fR for SysV-like data model where int, long int and pointers
! are 32 bits, and \fBlp64\fR for SysV-like data model where int is 32 bits,
  but long int and pointers are 64 bits.
  .Sp
  The default depends on the specific target configuration.  Note that
! the \s-1LP64\s0 and \s-1ILP32\s0 ABIs are not link-compatible; you must compile your
! entire program with the same \s-1ABI,\s0 and link with a compatible set of libraries.
  .Sp
  The \fBilp32\fR model is deprecated.
! .IP "\fB\-mbig\-endian\fR" 4
  .IX Item "-mbig-endian"
! Generate big-endian code.  This is the default when \s-1GCC\s0 is configured for an
  \&\fBaarch64_be\-*\-*\fR target.
! .IP "\fB\-mgeneral\-regs\-only\fR" 4
  .IX Item "-mgeneral-regs-only"
! Generate code which uses only the general-purpose registers.  This will prevent
! the compiler from using floating-point and Advanced \s-1SIMD\s0 registers but will not
  impose any restrictions on the assembler.
! .IP "\fB\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
! Generate little-endian code.  This is the default when \s-1GCC\s0 is configured for an
  \&\fBaarch64\-*\-*\fR but not an \fBaarch64_be\-*\-*\fR target.
! .IP "\fB\-mcmodel=tiny\fR" 4
  .IX Item "-mcmodel=tiny"
  Generate code for the tiny code model.  The program and its statically defined
  symbols must be within 1MB of each other.  Programs can be statically or
  dynamically linked.
! .IP "\fB\-mcmodel=small\fR" 4
  .IX Item "-mcmodel=small"
  Generate code for the small code model.  The program and its statically defined
  symbols must be within 4GB of each other.  Programs can be statically or
  dynamically linked.  This is the default code model.
! .IP "\fB\-mcmodel=large\fR" 4
  .IX Item "-mcmodel=large"
  Generate code for the large code model.  This makes no assumptions about
  addresses and sizes of sections.  Programs can be statically linked only.  The
  \&\fB\-mcmodel=large\fR option is incompatible with \fB\-mabi=ilp32\fR,
  \&\fB\-fpic\fR and \fB\-fPIC\fR.
! .IP "\fB\-mtp=\fR\fIname\fR" 4
  .IX Item "-mtp=name"
  Specify the system register to use as a thread pointer.  The valid values
  are \fBtpidr_el0\fR, \fBtpidrro_el0\fR, \fBtpidr_el1\fR, \fBtpidr_el2\fR,
--- 20902,20949 ----
  .IX Subsection "AArch64 Options"
  .PP
  These options are defined for AArch64 implementations:
! .IP \fB\-mabi=\fR\fIname\fR 4
  .IX Item "-mabi=name"
  Generate code for the specified data model.  Permissible values
! are \fBilp32\fR for SysV\-like data model where int, long int and pointers
! are 32 bits, and \fBlp64\fR for SysV\-like data model where int is 32 bits,
  but long int and pointers are 64 bits.
  .Sp
  The default depends on the specific target configuration.  Note that
! the LP64 and ILP32 ABIs are not link\-compatible; you must compile your
! entire program with the same ABI, and link with a compatible set of libraries.
  .Sp
  The \fBilp32\fR model is deprecated.
! .IP \fB\-mbig\-endian\fR 4
  .IX Item "-mbig-endian"
! Generate big\-endian code.  This is the default when GCC is configured for an
  \&\fBaarch64_be\-*\-*\fR target.
! .IP \fB\-mgeneral\-regs\-only\fR 4
  .IX Item "-mgeneral-regs-only"
! Generate code which uses only the general\-purpose registers.  This will prevent
! the compiler from using floating\-point and Advanced SIMD registers but will not
  impose any restrictions on the assembler.
! .IP \fB\-mlittle\-endian\fR 4
  .IX Item "-mlittle-endian"
! Generate little\-endian code.  This is the default when GCC is configured for an
  \&\fBaarch64\-*\-*\fR but not an \fBaarch64_be\-*\-*\fR target.
! .IP \fB\-mcmodel=tiny\fR 4
  .IX Item "-mcmodel=tiny"
  Generate code for the tiny code model.  The program and its statically defined
  symbols must be within 1MB of each other.  Programs can be statically or
  dynamically linked.
! .IP \fB\-mcmodel=small\fR 4
  .IX Item "-mcmodel=small"
  Generate code for the small code model.  The program and its statically defined
  symbols must be within 4GB of each other.  Programs can be statically or
  dynamically linked.  This is the default code model.
! .IP \fB\-mcmodel=large\fR 4
  .IX Item "-mcmodel=large"
  Generate code for the large code model.  This makes no assumptions about
  addresses and sizes of sections.  Programs can be statically linked only.  The
  \&\fB\-mcmodel=large\fR option is incompatible with \fB\-mabi=ilp32\fR,
  \&\fB\-fpic\fR and \fB\-fPIC\fR.
! .IP \fB\-mtp=\fR\fIname\fR 4
  .IX Item "-mtp=name"
  Specify the system register to use as a thread pointer.  The valid values
  are \fBtpidr_el0\fR, \fBtpidrro_el0\fR, \fBtpidr_el1\fR, \fBtpidr_el2\fR,
*************** are \fBtpidr_el0\fR, \fBtpidrro_el0\fR,
*** 21017,21044 ****
  The default setting is \fBtpidr_el0\fR.  It is recommended to compile all
  code intended to interoperate with the same value of this option to avoid
  accessing a different thread pointer from the wrong exception level.
! .IP "\fB\-mstrict\-align\fR" 4
  .IX Item "-mstrict-align"
  .PD 0
! .IP "\fB\-mno\-strict\-align\fR" 4
  .IX Item "-mno-strict-align"
  .PD
  Avoid or allow generating memory accesses that may not be aligned on a natural
  object boundary as described in the architecture specification.
! .IP "\fB\-momit\-leaf\-frame\-pointer\fR" 4
  .IX Item "-momit-leaf-frame-pointer"
  .PD 0
! .IP "\fB\-mno\-omit\-leaf\-frame\-pointer\fR" 4
  .IX Item "-mno-omit-leaf-frame-pointer"
  .PD
  Omit or keep the frame pointer in leaf functions.  The former behavior is the
  default.
! .IP "\fB\-mstack\-protector\-guard=\fR\fIguard\fR" 4
  .IX Item "-mstack-protector-guard=guard"
  .PD 0
! .IP "\fB\-mstack\-protector\-guard\-reg=\fR\fIreg\fR" 4
  .IX Item "-mstack-protector-guard-reg=reg"
! .IP "\fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR" 4
  .IX Item "-mstack-protector-guard-offset=offset"
  .PD
  Generate stack protection code using canary at \fIguard\fR.  Supported
--- 20952,20979 ----
  The default setting is \fBtpidr_el0\fR.  It is recommended to compile all
  code intended to interoperate with the same value of this option to avoid
  accessing a different thread pointer from the wrong exception level.
! .IP \fB\-mstrict\-align\fR 4
  .IX Item "-mstrict-align"
  .PD 0
! .IP \fB\-mno\-strict\-align\fR 4
  .IX Item "-mno-strict-align"
  .PD
  Avoid or allow generating memory accesses that may not be aligned on a natural
  object boundary as described in the architecture specification.
! .IP \fB\-momit\-leaf\-frame\-pointer\fR 4
  .IX Item "-momit-leaf-frame-pointer"
  .PD 0
! .IP \fB\-mno\-omit\-leaf\-frame\-pointer\fR 4
  .IX Item "-mno-omit-leaf-frame-pointer"
  .PD
  Omit or keep the frame pointer in leaf functions.  The former behavior is the
  default.
! .IP \fB\-mstack\-protector\-guard=\fR\fIguard\fR 4
  .IX Item "-mstack-protector-guard=guard"
  .PD 0
! .IP \fB\-mstack\-protector\-guard\-reg=\fR\fIreg\fR 4
  .IX Item "-mstack-protector-guard-reg=reg"
! .IP \fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR 4
  .IX Item "-mstack-protector-guard-offset=offset"
  .PD
  Generate stack protection code using canary at \fIguard\fR.  Supported
*************** which system register to use as base reg
*** 21052,21095 ****
  and from what offset from that base register. There is no default
  register or offset as this is entirely for use within the Linux
  kernel.
! .IP "\fB\-mtls\-dialect=desc\fR" 4
  .IX Item "-mtls-dialect=desc"
! Use \s-1TLS\s0 descriptors as the thread-local storage mechanism for dynamic accesses
! of \s-1TLS\s0 variables.  This is the default.
! .IP "\fB\-mtls\-dialect=traditional\fR" 4
  .IX Item "-mtls-dialect=traditional"
! Use traditional \s-1TLS\s0 as the thread-local storage mechanism for dynamic accesses
! of \s-1TLS\s0 variables.
! .IP "\fB\-mtls\-size=\fR\fIsize\fR" 4
  .IX Item "-mtls-size=size"
! Specify bit size of immediate \s-1TLS\s0 offsets.  Valid values are 12, 24, 32, 48.
  This option requires binutils 2.26 or newer.
! .IP "\fB\-mfix\-cortex\-a53\-835769\fR" 4
  .IX Item "-mfix-cortex-a53-835769"
  .PD 0
! .IP "\fB\-mno\-fix\-cortex\-a53\-835769\fR" 4
  .IX Item "-mno-fix-cortex-a53-835769"
  .PD
! Enable or disable the workaround for the \s-1ARM\s0 Cortex\-A53 erratum number 835769.
! This involves inserting a \s-1NOP\s0 instruction between memory instructions and
! 64\-bit integer multiply-accumulate instructions.  This flag will be ignored if
  an architecture or cpu is specified on the command line which does not need the
  workaround.
! .IP "\fB\-mfix\-cortex\-a53\-843419\fR" 4
  .IX Item "-mfix-cortex-a53-843419"
  .PD 0
! .IP "\fB\-mno\-fix\-cortex\-a53\-843419\fR" 4
  .IX Item "-mno-fix-cortex-a53-843419"
  .PD
! Enable or disable the workaround for the \s-1ARM\s0 Cortex\-A53 erratum number 843419.
  This erratum workaround is made at link time and this will only pass the
  corresponding flag to the linker.  This flag will be ignored if
  an architecture or cpu is specified on the command line which does not need the
  workaround.
! .IP "\fB\-mlow\-precision\-recip\-sqrt\fR" 4
  .IX Item "-mlow-precision-recip-sqrt"
  .PD 0
! .IP "\fB\-mno\-low\-precision\-recip\-sqrt\fR" 4
  .IX Item "-mno-low-precision-recip-sqrt"
  .PD
  Enable or disable the reciprocal square root approximation.
--- 20987,21030 ----
  and from what offset from that base register. There is no default
  register or offset as this is entirely for use within the Linux
  kernel.
! .IP \fB\-mtls\-dialect=desc\fR 4
  .IX Item "-mtls-dialect=desc"
! Use TLS descriptors as the thread\-local storage mechanism for dynamic accesses
! of TLS variables.  This is the default.
! .IP \fB\-mtls\-dialect=traditional\fR 4
  .IX Item "-mtls-dialect=traditional"
! Use traditional TLS as the thread\-local storage mechanism for dynamic accesses
! of TLS variables.
! .IP \fB\-mtls\-size=\fR\fIsize\fR 4
  .IX Item "-mtls-size=size"
! Specify bit size of immediate TLS offsets.  Valid values are 12, 24, 32, 48.
  This option requires binutils 2.26 or newer.
! .IP \fB\-mfix\-cortex\-a53\-835769\fR 4
  .IX Item "-mfix-cortex-a53-835769"
  .PD 0
! .IP \fB\-mno\-fix\-cortex\-a53\-835769\fR 4
  .IX Item "-mno-fix-cortex-a53-835769"
  .PD
! Enable or disable the workaround for the ARM Cortex\-A53 erratum number 835769.
! This involves inserting a NOP instruction between memory instructions and
! 64\-bit integer multiply\-accumulate instructions.  This flag will be ignored if
  an architecture or cpu is specified on the command line which does not need the
  workaround.
! .IP \fB\-mfix\-cortex\-a53\-843419\fR 4
  .IX Item "-mfix-cortex-a53-843419"
  .PD 0
! .IP \fB\-mno\-fix\-cortex\-a53\-843419\fR 4
  .IX Item "-mno-fix-cortex-a53-843419"
  .PD
! Enable or disable the workaround for the ARM Cortex\-A53 erratum number 843419.
  This erratum workaround is made at link time and this will only pass the
  corresponding flag to the linker.  This flag will be ignored if
  an architecture or cpu is specified on the command line which does not need the
  workaround.
! .IP \fB\-mlow\-precision\-recip\-sqrt\fR 4
  .IX Item "-mlow-precision-recip-sqrt"
  .PD 0
! .IP \fB\-mno\-low\-precision\-recip\-sqrt\fR 4
  .IX Item "-mno-low-precision-recip-sqrt"
  .PD
  Enable or disable the reciprocal square root approximation.
*************** This option only has an effect if \fB\-f
*** 21097,21106 ****
  \&\fB\-funsafe\-math\-optimizations\fR is used as well.  Enabling this reduces
  precision of reciprocal square root results to about 16 bits for
  single precision and to 32 bits for double precision.
! .IP "\fB\-mlow\-precision\-sqrt\fR" 4
  .IX Item "-mlow-precision-sqrt"
  .PD 0
! .IP "\fB\-mno\-low\-precision\-sqrt\fR" 4
  .IX Item "-mno-low-precision-sqrt"
  .PD
  Enable or disable the square root approximation.
--- 21032,21041 ----
  \&\fB\-funsafe\-math\-optimizations\fR is used as well.  Enabling this reduces
  precision of reciprocal square root results to about 16 bits for
  single precision and to 32 bits for double precision.
! .IP \fB\-mlow\-precision\-sqrt\fR 4
  .IX Item "-mlow-precision-sqrt"
  .PD 0
! .IP \fB\-mno\-low\-precision\-sqrt\fR 4
  .IX Item "-mno-low-precision-sqrt"
  .PD
  Enable or disable the square root approximation.
*************** This option only has an effect if \fB\-f
*** 21109,21118 ****
  precision of square root results to about 16 bits for
  single precision and to 32 bits for double precision.
  If enabled, it implies \fB\-mlow\-precision\-recip\-sqrt\fR.
! .IP "\fB\-mlow\-precision\-div\fR" 4
  .IX Item "-mlow-precision-div"
  .PD 0
! .IP "\fB\-mno\-low\-precision\-div\fR" 4
  .IX Item "-mno-low-precision-div"
  .PD
  Enable or disable the division approximation.
--- 21044,21053 ----
  precision of square root results to about 16 bits for
  single precision and to 32 bits for double precision.
  If enabled, it implies \fB\-mlow\-precision\-recip\-sqrt\fR.
! .IP \fB\-mlow\-precision\-div\fR 4
  .IX Item "-mlow-precision-div"
  .PD 0
! .IP \fB\-mno\-low\-precision\-div\fR 4
  .IX Item "-mno-low-precision-div"
  .PD
  Enable or disable the division approximation.
*************** This option only has an effect if \fB\-f
*** 21120,21129 ****
  \&\fB\-funsafe\-math\-optimizations\fR is used as well.  Enabling this reduces
  precision of division results to about 16 bits for
  single precision and to 32 bits for double precision.
! .IP "\fB\-mtrack\-speculation\fR" 4
  .IX Item "-mtrack-speculation"
  .PD 0
! .IP "\fB\-mno\-track\-speculation\fR" 4
  .IX Item "-mno-track-speculation"
  .PD
  Enable or disable generation of additional code to track speculative
--- 21055,21064 ----
  \&\fB\-funsafe\-math\-optimizations\fR is used as well.  Enabling this reduces
  precision of division results to about 16 bits for
  single precision and to 32 bits for double precision.
! .IP \fB\-mtrack\-speculation\fR 4
  .IX Item "-mtrack-speculation"
  .PD 0
! .IP \fB\-mno\-track\-speculation\fR 4
  .IX Item "-mno-track-speculation"
  .PD
  Enable or disable generation of additional code to track speculative
*************** execution through conditional branches.
*** 21131,21146 ****
  be used by the compiler when expanding calls to
  \&\f(CW\*(C`_\|_builtin_speculation_safe_copy\*(C'\fR to permit a more efficient code
  sequence to be generated.
! .IP "\fB\-moutline\-atomics\fR" 4
  .IX Item "-moutline-atomics"
  .PD 0
! .IP "\fB\-mno\-outline\-atomics\fR" 4
  .IX Item "-mno-outline-atomics"
  .PD
! Enable or disable calls to out-of-line helpers to implement atomic operations.
! These helpers will, at runtime, determine if the \s-1LSE\s0 instructions from
  ARMv8.1\-A can be used; if not, they will use the load/store\-exclusive
! instructions that are present in the base ARMv8.0 \s-1ISA.\s0
  .Sp
  This option is only applicable when compiling for the base ARMv8.0
  instruction set.  If using a later revision, e.g. \fB\-march=armv8.1\-a\fR
--- 21066,21081 ----
  be used by the compiler when expanding calls to
  \&\f(CW\*(C`_\|_builtin_speculation_safe_copy\*(C'\fR to permit a more efficient code
  sequence to be generated.
! .IP \fB\-moutline\-atomics\fR 4
  .IX Item "-moutline-atomics"
  .PD 0
! .IP \fB\-mno\-outline\-atomics\fR 4
  .IX Item "-mno-outline-atomics"
  .PD
! Enable or disable calls to out\-of\-line helpers to implement atomic operations.
! These helpers will, at runtime, determine if the LSE instructions from
  ARMv8.1\-A can be used; if not, they will use the load/store\-exclusive
! instructions that are present in the base ARMv8.0 ISA.
  .Sp
  This option is only applicable when compiling for the base ARMv8.0
  instruction set.  If using a later revision, e.g. \fB\-march=armv8.1\-a\fR
*************** or \fB\-march=armv8\-a+lse\fR, the ARMv8
*** 21148,21154 ****
  used directly.  The same applies when using \fB\-mcpu=\fR when the
  selected cpu supports the \fBlse\fR feature.
  This option is on by default.
! .IP "\fB\-march=\fR\fIname\fR" 4
  .IX Item "-march=name"
  Specify the name of the target architecture and, optionally, one or
  more feature modifiers.  This option has the form
--- 21083,21089 ----
  used directly.  The same applies when using \fB\-mcpu=\fR when the
  selected cpu supports the \fBlse\fR feature.
  This option is on by default.
! .IP \fB\-march=\fR\fIname\fR 4
  .IX Item "-march=name"
  Specify the name of the target architecture and, optionally, one or
  more feature modifiers.  This option has the form
*************** and the features that they enable by def
*** 21190,21225 ****
  .IX Item "armv9.3-a : Armv9.3-A : armv9.2-a, +mops"
  .IP "\fBarmv9.4\-a\fR : Armv9.4\-A : \fBarmv9.3\-a\fR, \fB+sve2p1\fR" 4
  .IX Item "armv9.4-a : Armv9.4-A : armv9.3-a, +sve2p1"
! .IP "\fBarmv9.5\-a\fR : Armv9.4\-A : \fBarmv9.4\-a\fR, \fBcpa\fR, \fB+faminmax\fR, \fB+lut\fR" 4
! .IX Item "armv9.5-a : Armv9.4-A : armv9.4-a, cpa, +faminmax, +lut"
  .IP "\fBarmv8\-r\fR : Armv8\-R : \fBarmv8\-r\fR" 4
  .IX Item "armv8-r : Armv8-R : armv8-r"
  .RE
  .RS 4
- .PD
  .Sp
  The value \fBnative\fR is available on native AArch64 GNU/Linux and
  causes the compiler to pick the architecture of the host system.  This
  option has no effect if the compiler is unable to recognize the
  architecture of the host system.  When \fB\-march=native\fR is given and
! no other \fB\-mcpu\fR or \fB\-mtune\fR is given then \s-1GCC\s0 will pick
! the host \s-1CPU\s0 as the \s-1CPU\s0 to tune for as well as select the architecture features
  from.  That is, \fB\-march=native\fR is treated as \fB\-mcpu=native\fR.
  .Sp
! The permissible values for \fIfeature\fR are listed in the sub-section
  on \fBaarch64\-feature\-modifiers,,\fR\fB\-march\fR \fBand\fR \fB\-mcpu\fR
  \&\fBFeature Modifiers\fR.  Where conflicting feature modifiers are
! specified, the right-most feature is used.
  .Sp
! \&\s-1GCC\s0 uses \fIname\fR to determine what kind of instructions it can emit
  when generating assembly code.  If \fB\-march\fR is specified
  without either of \fB\-mtune\fR or \fB\-mcpu\fR also being
  specified, the code is tuned to perform well across a range of target
  processors implementing the target architecture.
  .RE
! .IP "\fB\-mtune=\fR\fIname\fR" 4
  .IX Item "-mtune=name"
! Specify the name of the target processor for which \s-1GCC\s0 should tune the
  performance of the code.  Permissible values for this option are:
  \&\fBgeneric\fR, \fBcortex\-a35\fR, \fBcortex\-a53\fR, \fBcortex\-a55\fR,
  \&\fBcortex\-a57\fR, \fBcortex\-a72\fR, \fBcortex\-a73\fR, \fBcortex\-a75\fR,
--- 21125,21160 ----
  .IX Item "armv9.3-a : Armv9.3-A : armv9.2-a, +mops"
  .IP "\fBarmv9.4\-a\fR : Armv9.4\-A : \fBarmv9.3\-a\fR, \fB+sve2p1\fR" 4
  .IX Item "armv9.4-a : Armv9.4-A : armv9.3-a, +sve2p1"
! .IP "\fBarmv9.5\-a\fR : Armv9.5\-A : \fBarmv9.4\-a\fR, \fBcpa\fR, \fB+faminmax\fR, \fB+lut\fR" 4
! .IX Item "armv9.5-a : Armv9.5-A : armv9.4-a, cpa, +faminmax, +lut"
  .IP "\fBarmv8\-r\fR : Armv8\-R : \fBarmv8\-r\fR" 4
  .IX Item "armv8-r : Armv8-R : armv8-r"
+ .PD
  .RE
  .RS 4
  .Sp
  The value \fBnative\fR is available on native AArch64 GNU/Linux and
  causes the compiler to pick the architecture of the host system.  This
  option has no effect if the compiler is unable to recognize the
  architecture of the host system.  When \fB\-march=native\fR is given and
! no other \fB\-mcpu\fR or \fB\-mtune\fR is given then GCC will pick
! the host CPU as the CPU to tune for as well as select the architecture features
  from.  That is, \fB\-march=native\fR is treated as \fB\-mcpu=native\fR.
  .Sp
! The permissible values for \fIfeature\fR are listed in the sub\-section
  on \fBaarch64\-feature\-modifiers,,\fR\fB\-march\fR \fBand\fR \fB\-mcpu\fR
  \&\fBFeature Modifiers\fR.  Where conflicting feature modifiers are
! specified, the right\-most feature is used.
  .Sp
! GCC uses \fIname\fR to determine what kind of instructions it can emit
  when generating assembly code.  If \fB\-march\fR is specified
  without either of \fB\-mtune\fR or \fB\-mcpu\fR also being
  specified, the code is tuned to perform well across a range of target
  processors implementing the target architecture.
  .RE
! .IP \fB\-mtune=\fR\fIname\fR 4
  .IX Item "-mtune=name"
! Specify the name of the target processor for which GCC should tune the
  performance of the code.  Permissible values for this option are:
  \&\fBgeneric\fR, \fBcortex\-a35\fR, \fBcortex\-a53\fR, \fBcortex\-a55\fR,
  \&\fBcortex\-a57\fR, \fBcortex\-a72\fR, \fBcortex\-a73\fR, \fBcortex\-a75\fR,
*************** performance of the code.  Permissible va
*** 21237,21245 ****
  \&\fBocteontx2\fR, \fBocteontx2t98\fR, \fBocteontx2t96\fR
  \&\fBocteontx2t93\fR, \fBocteontx2f95\fR, \fBocteontx2f95n\fR,
  \&\fBocteontx2f95mm\fR,
! \&\fBa64fx\fR, \fBfujitsu-monaka\fR,
  \&\fBthunderx\fR, \fBthunderxt88\fR,
! \&\fBthunderxt88p1\fR, \fBthunderxt81\fR, \fBtsv110\fR,
  \&\fBthunderxt83\fR, \fBthunderx2t99\fR, \fBthunderx3t110\fR, \fBzeus\fR,
  \&\fBcortex\-a57.cortex\-a53\fR, \fBcortex\-a72.cortex\-a53\fR,
  \&\fBcortex\-a73.cortex\-a35\fR, \fBcortex\-a73.cortex\-a53\fR,
--- 21172,21180 ----
  \&\fBocteontx2\fR, \fBocteontx2t98\fR, \fBocteontx2t96\fR
  \&\fBocteontx2t93\fR, \fBocteontx2f95\fR, \fBocteontx2f95n\fR,
  \&\fBocteontx2f95mm\fR,
! \&\fBa64fx\fR, \fBfujitsu\-monaka\fR,
  \&\fBthunderx\fR, \fBthunderxt88\fR,
! \&\fBthunderxt88p1\fR, \fBthunderxt81\fR, \fBtsv110\fR, \fBhip12\fR,
  \&\fBthunderxt83\fR, \fBthunderx2t99\fR, \fBthunderx3t110\fR, \fBzeus\fR,
  \&\fBcortex\-a57.cortex\-a53\fR, \fBcortex\-a72.cortex\-a53\fR,
  \&\fBcortex\-a73.cortex\-a35\fR, \fBcortex\-a73.cortex\-a53\fR,
*************** performance of the code.  Permissible va
*** 21254,21268 ****
  The values \fBcortex\-a57.cortex\-a53\fR, \fBcortex\-a72.cortex\-a53\fR,
  \&\fBcortex\-a73.cortex\-a35\fR, \fBcortex\-a73.cortex\-a53\fR,
  \&\fBcortex\-a75.cortex\-a55\fR, \fBcortex\-a76.cortex\-a55\fR,
! \&\fBapple\-m1\fR, \fBapple\-m2\fR, \fBapple\-m3\fR, \fBgb10\fR specify that \s-1GCC\s0
  should tune for a big.LITTLE system.
  .Sp
! The value \fBneoverse\-512tvb\fR specifies that \s-1GCC\s0 should tune
! for Neoverse cores that (a) implement \s-1SVE\s0 and (b) have a total vector
! bandwidth of 512 bits per cycle.  In other words, the option tells \s-1GCC\s0 to
! tune for Neoverse cores that can execute 4 128\-bit Advanced \s-1SIMD\s0 arithmetic
! instructions a cycle and that can execute an equivalent number of \s-1SVE\s0
! arithmetic instructions per cycle (2 for 256\-bit \s-1SVE, 4\s0 for 128\-bit \s-1SVE\s0).
  This is more general than tuning for a specific core like Neoverse V1
  but is more specific than the default tuning described below.
  .Sp
--- 21189,21203 ----
  The values \fBcortex\-a57.cortex\-a53\fR, \fBcortex\-a72.cortex\-a53\fR,
  \&\fBcortex\-a73.cortex\-a35\fR, \fBcortex\-a73.cortex\-a53\fR,
  \&\fBcortex\-a75.cortex\-a55\fR, \fBcortex\-a76.cortex\-a55\fR,
! \&\fBapple\-m1\fR, \fBapple\-m2\fR, \fBapple\-m3\fR, \fBgb10\fR specify that GCC
  should tune for a big.LITTLE system.
  .Sp
! The value \fBneoverse\-512tvb\fR specifies that GCC should tune
! for Neoverse cores that (a) implement SVE and (b) have a total vector
! bandwidth of 512 bits per cycle.  In other words, the option tells GCC to
! tune for Neoverse cores that can execute 4 128\-bit Advanced SIMD arithmetic
! instructions a cycle and that can execute an equivalent number of SVE
! arithmetic instructions per cycle (2 for 256\-bit SVE, 4 for 128\-bit SVE).
  This is more general than tuning for a specific core like Neoverse V1
  but is more specific than the default tuning described below.
  .Sp
*************** are specified, the code is tuned to perf
*** 21275,21293 ****
  of target processors.
  .Sp
  This option cannot be suffixed by feature modifiers.
! .IP "\fB\-mcpu=\fR\fIname\fR" 4
  .IX Item "-mcpu=name"
  Specify the name of the target processor, optionally suffixed by one
  or more feature modifiers.  This option has the form
  \&\fB\-mcpu=\fR\fIcpu\fR{\fB+\fR[\fBno\fR]\fIfeature\fR}*, where
  the permissible values for \fIcpu\fR are the same as those available
  for \fB\-mtune\fR.  The permissible values for \fIfeature\fR are
! documented in the sub-section on
  \&\fBaarch64\-feature\-modifiers,,\fR\fB\-march\fR \fBand\fR \fB\-mcpu\fR
  \&\fBFeature Modifiers\fR.  Where conflicting feature modifiers are
! specified, the right-most feature is used.
  .Sp
! \&\s-1GCC\s0 uses \fIname\fR to determine what kind of instructions it can emit when
  generating assembly code (as if by \fB\-march\fR) and to determine
  the target processor for which to tune for performance (as if
  by \fB\-mtune\fR).  Where this option is used in conjunction
--- 21210,21228 ----
  of target processors.
  .Sp
  This option cannot be suffixed by feature modifiers.
! .IP \fB\-mcpu=\fR\fIname\fR 4
  .IX Item "-mcpu=name"
  Specify the name of the target processor, optionally suffixed by one
  or more feature modifiers.  This option has the form
  \&\fB\-mcpu=\fR\fIcpu\fR{\fB+\fR[\fBno\fR]\fIfeature\fR}*, where
  the permissible values for \fIcpu\fR are the same as those available
  for \fB\-mtune\fR.  The permissible values for \fIfeature\fR are
! documented in the sub\-section on
  \&\fBaarch64\-feature\-modifiers,,\fR\fB\-march\fR \fBand\fR \fB\-mcpu\fR
  \&\fBFeature Modifiers\fR.  Where conflicting feature modifiers are
! specified, the right\-most feature is used.
  .Sp
! GCC uses \fIname\fR to determine what kind of instructions it can emit when
  generating assembly code (as if by \fB\-march\fR) and to determine
  the target processor for which to tune for performance (as if
  by \fB\-mtune\fR).  Where this option is used in conjunction
*************** over the appropriate part of this option
*** 21296,21339 ****
  .Sp
  \&\fB\-mcpu=neoverse\-512tvb\fR is special in that it does not refer
  to a specific core, but instead refers to all Neoverse cores that
! (a) implement \s-1SVE\s0 and (b) have a total vector bandwidth of 512 bits
  a cycle.  Unless overridden by \fB\-march\fR,
  \&\fB\-mcpu=neoverse\-512tvb\fR generates code that can run on a
  Neoverse V1 core, since Neoverse V1 is the first Neoverse core with
  these properties.  Unless overridden by \fB\-mtune\fR,
  \&\fB\-mcpu=neoverse\-512tvb\fR tunes code in the same way as for
  \&\fB\-mtune=neoverse\-512tvb\fR.
! .IP "\fB\-moverride=\fR\fIstring\fR" 4
  .IX Item "-moverride=string"
! Override tuning decisions made by the back-end in response to a
  \&\fB\-mtune=\fR switch.  The syntax, semantics, and accepted values
  for \fIstring\fR in this option are not guaranteed to be consistent
  across releases.
  .Sp
! This option is only intended to be useful when developing \s-1GCC.\s0
! .IP "\fB\-mverbose\-cost\-dump\fR" 4
  .IX Item "-mverbose-cost-dump"
  Enable verbose cost model dumping in the debug dump files.  This option is
  provided for use in debugging the compiler.
! .IP "\fB\-mpc\-relative\-literal\-loads\fR" 4
  .IX Item "-mpc-relative-literal-loads"
  .PD 0
! .IP "\fB\-mno\-pc\-relative\-literal\-loads\fR" 4
  .IX Item "-mno-pc-relative-literal-loads"
  .PD
! Enable or disable PC-relative literal loads.  With this option literal pools are
  accessed using a single instruction and emitted after each function.  This
  limits the maximum size of functions to 1MB.  This is enabled by default for
  \&\fB\-mcmodel=tiny\fR.
! .IP "\fB\-msign\-return\-address=\fR\fIscope\fR" 4
  .IX Item "-msign-return-address=scope"
  Select the function scope on which return address signing will be applied.
  Permissible values are \fBnone\fR, which disables return address signing,
! \&\fBnon-leaf\fR, which enables pointer signing for functions which are not leaf
  functions, and \fBall\fR, which enables pointer signing for all functions.  The
  default value is \fBnone\fR. This option has been deprecated by
  \&\-mbranch\-protection.
! .IP "\fB\-mbranch\-protection=\fR\fInone\fR\fB|\fR\fIstandard\fR\fB|\fR\fIpac-ret\fR\fB[+\fR\fIleaf\fR\fB+\fR\fIb\-key\fR\fB]|\fR\fIbti\fR\fB|\fR\fIgcs\fR" 4
  .IX Item "-mbranch-protection=none|standard|pac-ret[+leaf+b-key]|bti|gcs"
  Select the branch protection features to use.
  \&\fBnone\fR is the default and turns off all types of branch protection.
--- 21231,21274 ----
  .Sp
  \&\fB\-mcpu=neoverse\-512tvb\fR is special in that it does not refer
  to a specific core, but instead refers to all Neoverse cores that
! (a) implement SVE and (b) have a total vector bandwidth of 512 bits
  a cycle.  Unless overridden by \fB\-march\fR,
  \&\fB\-mcpu=neoverse\-512tvb\fR generates code that can run on a
  Neoverse V1 core, since Neoverse V1 is the first Neoverse core with
  these properties.  Unless overridden by \fB\-mtune\fR,
  \&\fB\-mcpu=neoverse\-512tvb\fR tunes code in the same way as for
  \&\fB\-mtune=neoverse\-512tvb\fR.
! .IP \fB\-moverride=\fR\fIstring\fR 4
  .IX Item "-moverride=string"
! Override tuning decisions made by the back\-end in response to a
  \&\fB\-mtune=\fR switch.  The syntax, semantics, and accepted values
  for \fIstring\fR in this option are not guaranteed to be consistent
  across releases.
  .Sp
! This option is only intended to be useful when developing GCC.
! .IP \fB\-mverbose\-cost\-dump\fR 4
  .IX Item "-mverbose-cost-dump"
  Enable verbose cost model dumping in the debug dump files.  This option is
  provided for use in debugging the compiler.
! .IP \fB\-mpc\-relative\-literal\-loads\fR 4
  .IX Item "-mpc-relative-literal-loads"
  .PD 0
! .IP \fB\-mno\-pc\-relative\-literal\-loads\fR 4
  .IX Item "-mno-pc-relative-literal-loads"
  .PD
! Enable or disable PC\-relative literal loads.  With this option literal pools are
  accessed using a single instruction and emitted after each function.  This
  limits the maximum size of functions to 1MB.  This is enabled by default for
  \&\fB\-mcmodel=tiny\fR.
! .IP \fB\-msign\-return\-address=\fR\fIscope\fR 4
  .IX Item "-msign-return-address=scope"
  Select the function scope on which return address signing will be applied.
  Permissible values are \fBnone\fR, which disables return address signing,
! \&\fBnon\-leaf\fR, which enables pointer signing for functions which are not leaf
  functions, and \fBall\fR, which enables pointer signing for all functions.  The
  default value is \fBnone\fR. This option has been deprecated by
  \&\-mbranch\-protection.
! .IP \fB\-mbranch\-protection=\fR\fInone\fR\fB|\fR\fIstandard\fR\fB|\fR\fIpac\-ret\fR\fB[+\fR\fIleaf\fR\fB+\fR\fIb\-key\fR\fB]|\fR\fIbti\fR\fB|\fR\fIgcs\fR 4
  .IX Item "-mbranch-protection=none|standard|pac-ret[+leaf+b-key]|bti|gcs"
  Select the branch protection features to use.
  \&\fBnone\fR is the default and turns off all types of branch protection.
*************** Select the branch protection features to
*** 21341,21418 ****
  has additional tuning options, then \fBstandard\fR sets it to its standard
  level.
  \&\fBpac\-ret[+\fR\fIleaf\fR\fB]\fR turns on return address signing to its standard
! level: signing functions that save the return address to memory (non-leaf
  functions will practically always do this) using the a\-key.  The optional
  argument \fBleaf\fR can be used to extend the signing to include leaf
  functions.  The optional argument \fBb\-key\fR can be used to sign the functions
  with the B\-key instead of the A\-key.
  \&\fBbti\fR turns on branch target identification mechanism.
  \&\fBgcs\fR turns on guarded control stack compatible code generation.
! .IP "\fB\-mharden\-sls=\fR\fIopts\fR" 4
  .IX Item "-mharden-sls=opts"
! Enable compiler hardening against straight line speculation (\s-1SLS\s0).
! \&\fIopts\fR is a comma-separated list of the following options:
  .RS 4
! .IP "\fBretbr\fR" 4
  .IX Item "retbr"
  .PD 0
! .IP "\fBblr\fR" 4
  .IX Item "blr"
  .RE
  .RS 4
- .PD
  .Sp
! In addition, \fB\-mharden\-sls=all\fR enables all \s-1SLS\s0 hardening while
! \&\fB\-mharden\-sls=none\fR disables all \s-1SLS\s0 hardening.
  .RE
! .IP "\fB\-mearly\-ra=\fR\fIscope\fR" 4
  .IX Item "-mearly-ra=scope"
  Determine when to enable an early register allocation pass.  This pass runs
! before instruction scheduling and tries to find a spill-free allocation of
! floating-point and vector code.  It also tries to make use of strided
! multi-register instructions, such as \s-1SME2\s0's strided \s-1LD1\s0 and \s-1ST1.\s0
  .Sp
  The possible values of \fIscope\fR are: \fIall\fR, which runs the pass on
  all functions; \fIstrided\fR, which runs the pass on functions that have
! access to strided multi-register instructions; and \fInone\fR, which
  disables the pass.
  .Sp
  \&\fB\-mearly\-ra=all\fR is the default for \fB\-O2\fR and above, and for
  \&\fB\-Os\fR.  \fB\-mearly\-ra=none\fR is the default otherwise.
! .IP "\fB\-mearly\-ldp\-fusion\fR" 4
  .IX Item "-mearly-ldp-fusion"
  Enable the copy of the AArch64 load/store pair fusion pass that runs before
  register allocation.  Enabled by default at \fB\-O\fR and above.
! .IP "\fB\-mlate\-ldp\-fusion\fR" 4
  .IX Item "-mlate-ldp-fusion"
  Enable the copy of the AArch64 load/store pair fusion pass that runs after
  register allocation.  Enabled by default at \fB\-O\fR and above.
! .IP "\fB\-msve\-vector\-bits=\fR\fIbits\fR" 4
  .IX Item "-msve-vector-bits=bits"
! Specify the number of bits in an \s-1SVE\s0 vector register.  This option only has
! an effect when \s-1SVE\s0 is enabled.
  .Sp
! \&\s-1GCC\s0 supports two forms of \s-1SVE\s0 code generation: \*(L"vector-length
! agnostic\*(R" output that works with any size of vector register and
! \&\*(L"vector-length specific\*(R" output that allows \s-1GCC\s0 to make assumptions
  about the vector length when it is useful for optimization reasons.
  The possible values of \fBbits\fR are: \fBscalable\fR, \fB128\fR,
  \&\fB256\fR, \fB512\fR, \fB1024\fR and \fB2048\fR.
! Specifying \fBscalable\fR selects vector-length agnostic
! output.  At present \fB\-msve\-vector\-bits=128\fR also generates vector-length
! agnostic output for big-endian targets.  All other values generate
! vector-length specific code.  The behavior of these values may change
  in future releases and no value except \fBscalable\fR should be
  relied on for producing code that is portable across different
! hardware \s-1SVE\s0 vector lengths.
  .Sp
  The default is \fB\-msve\-vector\-bits=scalable\fR, which produces
! vector-length agnostic code.
! .IP "\fB\-Wexperimental\-fmv\-target\fR" 4
  .IX Item "-Wexperimental-fmv-target"
  Warn about use of experimental Function Multi Versioning.
  The Arm C Language Extension specification for Function Multi Versioning
! is beta and subject to change. Any usage of \s-1FMV\s0 is caveated that future
  behavior change and incompatibility is likely.
  .PP
  \fB\-march\fR and \fB\-mcpu\fR Feature Modifiers
--- 21276,21353 ----
  has additional tuning options, then \fBstandard\fR sets it to its standard
  level.
  \&\fBpac\-ret[+\fR\fIleaf\fR\fB]\fR turns on return address signing to its standard
! level: signing functions that save the return address to memory (non\-leaf
  functions will practically always do this) using the a\-key.  The optional
  argument \fBleaf\fR can be used to extend the signing to include leaf
  functions.  The optional argument \fBb\-key\fR can be used to sign the functions
  with the B\-key instead of the A\-key.
  \&\fBbti\fR turns on branch target identification mechanism.
  \&\fBgcs\fR turns on guarded control stack compatible code generation.
! .IP \fB\-mharden\-sls=\fR\fIopts\fR 4
  .IX Item "-mharden-sls=opts"
! Enable compiler hardening against straight line speculation (SLS).
! \&\fIopts\fR is a comma\-separated list of the following options:
  .RS 4
! .IP \fBretbr\fR 4
  .IX Item "retbr"
  .PD 0
! .IP \fBblr\fR 4
  .IX Item "blr"
+ .PD
  .RE
  .RS 4
  .Sp
! In addition, \fB\-mharden\-sls=all\fR enables all SLS hardening while
! \&\fB\-mharden\-sls=none\fR disables all SLS hardening.
  .RE
! .IP \fB\-mearly\-ra=\fR\fIscope\fR 4
  .IX Item "-mearly-ra=scope"
  Determine when to enable an early register allocation pass.  This pass runs
! before instruction scheduling and tries to find a spill\-free allocation of
! floating\-point and vector code.  It also tries to make use of strided
! multi\-register instructions, such as SME2\*(Aqs strided LD1 and ST1.
  .Sp
  The possible values of \fIscope\fR are: \fIall\fR, which runs the pass on
  all functions; \fIstrided\fR, which runs the pass on functions that have
! access to strided multi\-register instructions; and \fInone\fR, which
  disables the pass.
  .Sp
  \&\fB\-mearly\-ra=all\fR is the default for \fB\-O2\fR and above, and for
  \&\fB\-Os\fR.  \fB\-mearly\-ra=none\fR is the default otherwise.
! .IP \fB\-mearly\-ldp\-fusion\fR 4
  .IX Item "-mearly-ldp-fusion"
  Enable the copy of the AArch64 load/store pair fusion pass that runs before
  register allocation.  Enabled by default at \fB\-O\fR and above.
! .IP \fB\-mlate\-ldp\-fusion\fR 4
  .IX Item "-mlate-ldp-fusion"
  Enable the copy of the AArch64 load/store pair fusion pass that runs after
  register allocation.  Enabled by default at \fB\-O\fR and above.
! .IP \fB\-msve\-vector\-bits=\fR\fIbits\fR 4
  .IX Item "-msve-vector-bits=bits"
! Specify the number of bits in an SVE vector register.  This option only has
! an effect when SVE is enabled.
  .Sp
! GCC supports two forms of SVE code generation: "vector\-length
! agnostic" output that works with any size of vector register and
! "vector\-length specific" output that allows GCC to make assumptions
  about the vector length when it is useful for optimization reasons.
  The possible values of \fBbits\fR are: \fBscalable\fR, \fB128\fR,
  \&\fB256\fR, \fB512\fR, \fB1024\fR and \fB2048\fR.
! Specifying \fBscalable\fR selects vector\-length agnostic
! output.  At present \fB\-msve\-vector\-bits=128\fR also generates vector\-length
! agnostic output for big\-endian targets.  All other values generate
! vector\-length specific code.  The behavior of these values may change
  in future releases and no value except \fBscalable\fR should be
  relied on for producing code that is portable across different
! hardware SVE vector lengths.
  .Sp
  The default is \fB\-msve\-vector\-bits=scalable\fR, which produces
! vector\-length agnostic code.
! .IP \fB\-Wexperimental\-fmv\-target\fR 4
  .IX Item "-Wexperimental-fmv-target"
  Warn about use of experimental Function Multi Versioning.
  The Arm C Language Extension specification for Function Multi Versioning
! is beta and subject to change. Any usage of FMV is caveated that future
  behavior change and incompatibility is likely.
  .PP
  \fB\-march\fR and \fB\-mcpu\fR Feature Modifiers
*************** behavior change and incompatibility is l
*** 21420,21677 ****
  .PP
  Feature modifiers used with \fB\-march\fR and \fB\-mcpu\fR can be any of
  the following and their inverses \fBno\fR\fIfeature\fR:
! .IP "\fBcrc\fR" 4
  .IX Item "crc"
! Enable \s-1CRC\s0 extension.  This is on by default for
  \&\fB\-march=armv8.1\-a\fR.
! .IP "\fBcrypto\fR" 4
  .IX Item "crypto"
! Enable Crypto extension.  This also enables Advanced \s-1SIMD\s0 and floating-point
  instructions.
! .IP "\fBfp\fR" 4
  .IX Item "fp"
! Enable floating-point instructions.  This is on by default for all possible
  values for options \fB\-march\fR and \fB\-mcpu\fR.
! .IP "\fBsimd\fR" 4
  .IX Item "simd"
! Enable Advanced \s-1SIMD\s0 instructions.  This also enables floating-point
  instructions.  This is on by default for all possible values for options
  \&\fB\-march\fR and \fB\-mcpu\fR.
! .IP "\fBsve\fR" 4
  .IX Item "sve"
  Enable Scalable Vector Extension instructions.  This also enables Advanced
! \&\s-1SIMD\s0 and floating-point instructions.
! .IP "\fBlse\fR" 4
  .IX Item "lse"
  Enable Large System Extension instructions.  This is on by default for
  \&\fB\-march=armv8.1\-a\fR.
! .IP "\fBrdma\fR" 4
  .IX Item "rdma"
  Enable Round Double Multiply Accumulate instructions.  This is on by default
  for \fB\-march=armv8.1\-a\fR.
! .IP "\fBfp16\fR" 4
  .IX Item "fp16"
! Enable \s-1FP16\s0 extension.  This also enables floating-point instructions.
! .IP "\fBfp16fml\fR" 4
  .IX Item "fp16fml"
! Enable \s-1FP16\s0 fmla extension.  This also enables \s-1FP16\s0 extensions and
! floating-point instructions. This option is enabled by default for \fB\-march=armv8.4\-a\fR. Use of this option with architectures prior to Armv8.2\-A is not supported.
! .IP "\fBrcpc\fR" 4
  .IX Item "rcpc"
! Enable the RCpc extension.  This enables the use of the \s-1LDAPR\s0 instructions for
! load-acquire atomic semantics, and passes it on to the assembler, enabling
  inline asm statements to use instructions from the RCpc extension.
! .IP "\fBdotprod\fR" 4
  .IX Item "dotprod"
! Enable the Dot Product extension.  This also enables Advanced \s-1SIMD\s0 instructions.
! .IP "\fBaes\fR" 4
  .IX Item "aes"
  Enable the Armv8\-a aes and pmull crypto extension.  This also enables Advanced
! \&\s-1SIMD\s0 instructions.
! .IP "\fBsha2\fR" 4
  .IX Item "sha2"
! Enable the Armv8\-a sha2 crypto extension.  This also enables Advanced \s-1SIMD\s0 instructions.
! .IP "\fBsha3\fR" 4
  .IX Item "sha3"
! Enable the sha512 and sha3 crypto extension.  This also enables Advanced \s-1SIMD\s0
  instructions. Use of this option with architectures prior to Armv8.2\-A is not supported.
! .IP "\fBsm4\fR" 4
  .IX Item "sm4"
! Enable the sm3 and sm4 crypto extension.  This also enables Advanced \s-1SIMD\s0 instructions.
  Use of this option with architectures prior to Armv8.2\-A is not supported.
! .IP "\fBprofile\fR" 4
  .IX Item "profile"
  Enable the Statistical Profiling extension.  This option is only to enable the
  extension at the assembler level and does not affect code generation.
! .IP "\fBrng\fR" 4
  .IX Item "rng"
  Enable the Armv8.5\-a Random Number instructions.  This option is only to
  enable the extension at the assembler level and does not affect code
  generation.
! .IP "\fBmemtag\fR" 4
  .IX Item "memtag"
  Enable the Armv8.5\-a Memory Tagging Extensions.
  Use of this option with architectures prior to Armv8.5\-A is not supported.
! .IP "\fBsb\fR" 4
  .IX Item "sb"
  Enable the Armv8\-a Speculation Barrier instruction.  This option is only to
  enable the extension at the assembler level and does not affect code
  generation.  This option is enabled by default for \fB\-march=armv8.5\-a\fR.
! .IP "\fBssbs\fR" 4
  .IX Item "ssbs"
  Enable the Armv8\-a Speculative Store Bypass Safe instruction.  This option
  is only to enable the extension at the assembler level and does not affect code
  generation.  This option is enabled by default for \fB\-march=armv8.5\-a\fR.
! .IP "\fBpredres\fR" 4
  .IX Item "predres"
  Enable the Armv8\-a Execution and Data Prediction Restriction instructions.
  This option is only to enable the extension at the assembler level and does
  not affect code generation.  This option is enabled by default for
  \&\fB\-march=armv8.5\-a\fR.
! .IP "\fBsve2\fR" 4
  .IX Item "sve2"
! Enable the Armv8\-a Scalable Vector Extension 2.  This also enables \s-1SVE\s0
  instructions.
! .IP "\fBsve2\-bitperm\fR" 4
  .IX Item "sve2-bitperm"
! Enable \s-1SVE2\s0 bitperm instructions.  This also enables \s-1SVE2\s0 instructions.
! .IP "\fBsve2\-sm4\fR" 4
  .IX Item "sve2-sm4"
! Enable \s-1SVE2\s0 sm4 instructions.  This also enables \s-1SVE2\s0 instructions.
! .IP "\fBsve2\-aes\fR" 4
  .IX Item "sve2-aes"
! Enable \s-1SVE2\s0 aes instructions.  This also enables \s-1SVE2\s0 instructions.
! .IP "\fBsve2\-sha3\fR" 4
  .IX Item "sve2-sha3"
! Enable \s-1SVE2\s0 sha3 instructions.  This also enables \s-1SVE2\s0 instructions.
! .IP "\fBsve2p1\fR" 4
  .IX Item "sve2p1"
! Enable \s-1SVE2.1\s0 instructions.  This also enables \s-1SVE2\s0 instructions.
! .IP "\fBtme\fR" 4
  .IX Item "tme"
  Enable the Transactional Memory Extension.
! .IP "\fBi8mm\fR" 4
  .IX Item "i8mm"
  Enable 8\-bit Integer Matrix Multiply instructions.  This also enables
! Advanced \s-1SIMD\s0 and floating-point instructions.  This option is enabled by
  default for \fB\-march=armv8.6\-a\fR.  Use of this option with architectures
  prior to Armv8.2\-A is not supported.
! .IP "\fBf32mm\fR" 4
  .IX Item "f32mm"
  Enable 32\-bit Floating point Matrix Multiply instructions.  This also enables
! \&\s-1SVE\s0 instructions.  Use of this option with architectures prior to Armv8.2\-A is
  not supported.
! .IP "\fBf64mm\fR" 4
  .IX Item "f64mm"
  Enable 64\-bit Floating point Matrix Multiply instructions.  This also enables
! \&\s-1SVE\s0 instructions.  Use of this option with architectures prior to Armv8.2\-A is
  not supported.
! .IP "\fBbf16\fR" 4
  .IX Item "bf16"
! Enable brain half-precision floating-point instructions.  This also enables
! Advanced \s-1SIMD\s0 and floating-point instructions.  This option is enabled by
  default for \fB\-march=armv8.6\-a\fR.  Use of this option with architectures
  prior to Armv8.2\-A is not supported.
! .IP "\fBls64\fR" 4
  .IX Item "ls64"
  Enable the 64\-byte atomic load and store instructions for accelerators.
! .IP "\fBmops\fR" 4
  .IX Item "mops"
  Enable the instructions to accelerate memory operations like \f(CW\*(C`memcpy\*(C'\fR,
  \&\f(CW\*(C`memmove\*(C'\fR, \f(CW\*(C`memset\*(C'\fR.  This option is enabled by default for
  \&\fB\-march=armv8.8\-a\fR
! .IP "\fBflagm\fR" 4
  .IX Item "flagm"
  Enable the Flag Manipulation instructions Extension.
! .IP "\fBflagm2\fR" 4
  .IX Item "flagm2"
  Enable the FlagM2 flag conversion instructions.
! .IP "\fBpauth\fR" 4
  .IX Item "pauth"
  Enable the Pointer Authentication Extension.
! .IP "\fBcssc\fR" 4
  .IX Item "cssc"
  Enable the Common Short Sequence Compression instructions.
! .IP "\fBsme\fR" 4
  .IX Item "sme"
! Enable the Scalable Matrix Extension.  This is only supported when \s-1SVE2\s0 is also
  enabled.
! .IP "\fBsme\-i16i64\fR" 4
  .IX Item "sme-i16i64"
! Enable the \s-1FEAT_SME_I16I64\s0 extension to \s-1SME.\s0  This also enables \s-1SME\s0
  instructions.
! .IP "\fBsme\-f64f64\fR" 4
  .IX Item "sme-f64f64"
! Enable the \s-1FEAT_SME_F64F64\s0 extension to \s-1SME.\s0  This also enables \s-1SME\s0
  instructions.
! .IP "\fBsme2\fR" 4
  .IX Item "sme2"
! Enable the Scalable Matrix Extension 2.  This also enables \s-1SME\s0 instructions.
! .IP "\fBsme\-b16b16\fR" 4
  .IX Item "sme-b16b16"
! Enable the \s-1FEAT_SME_B16B16\s0 extension to \s-1SME.\s0  This also enables \s-1SME2\s0
! and \s-1SVE_B16B16\s0 instructions.
! .IP "\fBsme\-f16f16\fR" 4
  .IX Item "sme-f16f16"
! Enable the \s-1FEAT_SME_F16F16\s0 extension to \s-1SME.\s0  This also enables \s-1SME2\s0
  instructions.
! .IP "\fBsme2p1\fR" 4
  .IX Item "sme2p1"
! Enable the Scalable Matrix Extension version 2.1.  This also enables \s-1SME2\s0
  instructions.
! .IP "\fBfcma\fR" 4
  .IX Item "fcma"
! Enable the complex number \s-1SIMD\s0 extensions.
! .IP "\fBjscvt\fR" 4
  .IX Item "jscvt"
  Enable the \f(CW\*(C`fjcvtzs\*(C'\fR JavaScript conversion instruction.
! .IP "\fBfrintts\fR" 4
  .IX Item "frintts"
! Enable floating-point round to integral value instructions.
! .IP "\fBwfxt\fR" 4
  .IX Item "wfxt"
  Enable \f(CW\*(C`wfet\*(C'\fR and \f(CW\*(C`wfit\*(C'\fR instructions.
! .IP "\fBxs\fR" 4
  .IX Item "xs"
! Enable the \s-1XS\s0 memory attribute extension.
! .IP "\fBlse128\fR" 4
  .IX Item "lse128"
! Enable the \s-1LSE128\s0 128\-bit atomic instructions extension.  This also
! enables \s-1LSE\s0 instructions.
! .IP "\fBd128\fR" 4
  .IX Item "d128"
  Enable support for 128\-bit system register read/write instructions.
! This also enables the \s-1LSE128\s0 extension.
! .IP "\fBgcs\fR" 4
  .IX Item "gcs"
  Enable support for Armv9.4\-a Guarded Control Stack extension.
! .IP "\fBthe\fR" 4
  .IX Item "the"
  Enable support for Armv8.9\-a/9.4\-a translation hardening extension.
! .IP "\fBrcpc2\fR" 4
  .IX Item "rcpc2"
  Enable the RCpc2 extension.
! .IP "\fBrcpc3\fR" 4
  .IX Item "rcpc3"
  Enable the RCpc3 (Release Consistency) extension.
! .IP "\fBfp8\fR" 4
  .IX Item "fp8"
  Enable the fp8 (8\-bit floating point) extension.
! .IP "\fBfp8fma\fR" 4
  .IX Item "fp8fma"
  Enable the fp8 (8\-bit floating point) multiply accumulate extension.
! .IP "\fBssve\-fp8fma\fR" 4
  .IX Item "ssve-fp8fma"
  Enable the fp8 (8\-bit floating point) multiply accumulate extension in streaming
  mode.
! .IP "\fBfp8dot4\fR" 4
  .IX Item "fp8dot4"
! Enable the fp8 (8\-bit floating point) to single-precision 4\-way dot product
  extension.
! .IP "\fBssve\-fp8dot4\fR" 4
  .IX Item "ssve-fp8dot4"
! Enable the fp8 (8\-bit floating point) to single-precision 4\-way dot product
  extension in streaming mode.
! .IP "\fBfp8dot2\fR" 4
  .IX Item "fp8dot2"
! Enable the fp8 (8\-bit floating point) to half-precision 2\-way dot product
  extension.
! .IP "\fBssve\-fp8dot2\fR" 4
  .IX Item "ssve-fp8dot2"
! Enable the fp8 (8\-bit floating point) to half-precision 2\-way dot product
  extension in streaming mode.
! .IP "\fBfaminmax\fR" 4
  .IX Item "faminmax"
  Enable the Floating Point Absolute Maximum/Minimum extension.
! .IP "\fBlut\fR" 4
  .IX Item "lut"
  Enable the Lookup Table extension.
! .IP "\fBcpa\fR" 4
  .IX Item "cpa"
  Enable the Checked Pointer Arithmetic instructions.
! .IP "\fBsve\-b16b16\fR" 4
  .IX Item "sve-b16b16"
! Enable the \s-1SVE\s0 non-widening brain floating-point (\f(CW\*(C`bf16\*(C'\fR) extension.
  This only has an effect when \f(CW\*(C`sve2\*(C'\fR or \f(CW\*(C`sme2\*(C'\fR are also enabled.
  .PP
  Feature \fBcrypto\fR implies \fBaes\fR, \fBsha2\fR, and \fBsimd\fR,
--- 21355,21612 ----
  .PP
  Feature modifiers used with \fB\-march\fR and \fB\-mcpu\fR can be any of
  the following and their inverses \fBno\fR\fIfeature\fR:
! .IP \fBcrc\fR 4
  .IX Item "crc"
! Enable CRC extension.  This is on by default for
  \&\fB\-march=armv8.1\-a\fR.
! .IP \fBcrypto\fR 4
  .IX Item "crypto"
! Enable Crypto extension.  This also enables Advanced SIMD and floating\-point
  instructions.
! .IP \fBfp\fR 4
  .IX Item "fp"
! Enable floating\-point instructions.  This is on by default for all possible
  values for options \fB\-march\fR and \fB\-mcpu\fR.
! .IP \fBsimd\fR 4
  .IX Item "simd"
! Enable Advanced SIMD instructions.  This also enables floating\-point
  instructions.  This is on by default for all possible values for options
  \&\fB\-march\fR and \fB\-mcpu\fR.
! .IP \fBsve\fR 4
  .IX Item "sve"
  Enable Scalable Vector Extension instructions.  This also enables Advanced
! SIMD and floating\-point instructions.
! .IP \fBlse\fR 4
  .IX Item "lse"
  Enable Large System Extension instructions.  This is on by default for
  \&\fB\-march=armv8.1\-a\fR.
! .IP \fBrdma\fR 4
  .IX Item "rdma"
  Enable Round Double Multiply Accumulate instructions.  This is on by default
  for \fB\-march=armv8.1\-a\fR.
! .IP \fBfp16\fR 4
  .IX Item "fp16"
! Enable FP16 extension.  This also enables floating\-point instructions.
! .IP \fBfp16fml\fR 4
  .IX Item "fp16fml"
! Enable FP16 fmla extension.  This also enables FP16 extensions and
! floating\-point instructions. This option is enabled by default for \fB\-march=armv8.4\-a\fR. Use of this option with architectures prior to Armv8.2\-A is not supported.
! .IP \fBrcpc\fR 4
  .IX Item "rcpc"
! Enable the RCpc extension.  This enables the use of the LDAPR instructions for
! load\-acquire atomic semantics, and passes it on to the assembler, enabling
  inline asm statements to use instructions from the RCpc extension.
! .IP \fBdotprod\fR 4
  .IX Item "dotprod"
! Enable the Dot Product extension.  This also enables Advanced SIMD instructions.
! .IP \fBaes\fR 4
  .IX Item "aes"
  Enable the Armv8\-a aes and pmull crypto extension.  This also enables Advanced
! SIMD instructions.
! .IP \fBsha2\fR 4
  .IX Item "sha2"
! Enable the Armv8\-a sha2 crypto extension.  This also enables Advanced SIMD instructions.
! .IP \fBsha3\fR 4
  .IX Item "sha3"
! Enable the sha512 and sha3 crypto extension.  This also enables Advanced SIMD
  instructions. Use of this option with architectures prior to Armv8.2\-A is not supported.
! .IP \fBsm4\fR 4
  .IX Item "sm4"
! Enable the sm3 and sm4 crypto extension.  This also enables Advanced SIMD instructions.
  Use of this option with architectures prior to Armv8.2\-A is not supported.
! .IP \fBprofile\fR 4
  .IX Item "profile"
  Enable the Statistical Profiling extension.  This option is only to enable the
  extension at the assembler level and does not affect code generation.
! .IP \fBrng\fR 4
  .IX Item "rng"
  Enable the Armv8.5\-a Random Number instructions.  This option is only to
  enable the extension at the assembler level and does not affect code
  generation.
! .IP \fBmemtag\fR 4
  .IX Item "memtag"
  Enable the Armv8.5\-a Memory Tagging Extensions.
  Use of this option with architectures prior to Armv8.5\-A is not supported.
! .IP \fBsb\fR 4
  .IX Item "sb"
  Enable the Armv8\-a Speculation Barrier instruction.  This option is only to
  enable the extension at the assembler level and does not affect code
  generation.  This option is enabled by default for \fB\-march=armv8.5\-a\fR.
! .IP \fBssbs\fR 4
  .IX Item "ssbs"
  Enable the Armv8\-a Speculative Store Bypass Safe instruction.  This option
  is only to enable the extension at the assembler level and does not affect code
  generation.  This option is enabled by default for \fB\-march=armv8.5\-a\fR.
! .IP \fBpredres\fR 4
  .IX Item "predres"
  Enable the Armv8\-a Execution and Data Prediction Restriction instructions.
  This option is only to enable the extension at the assembler level and does
  not affect code generation.  This option is enabled by default for
  \&\fB\-march=armv8.5\-a\fR.
! .IP \fBsve2\fR 4
  .IX Item "sve2"
! Enable the Armv8\-a Scalable Vector Extension 2.  This also enables SVE
  instructions.
! .IP \fBsve2\-bitperm\fR 4
  .IX Item "sve2-bitperm"
! Enable SVE2 bitperm instructions.  This also enables SVE2 instructions.
! .IP \fBsve2\-sm4\fR 4
  .IX Item "sve2-sm4"
! Enable SVE2 sm4 instructions.  This also enables SVE2 instructions.
! .IP \fBsve2\-aes\fR 4
  .IX Item "sve2-aes"
! Enable SVE2 aes instructions.  This also enables SVE2 instructions.
! .IP \fBsve2\-sha3\fR 4
  .IX Item "sve2-sha3"
! Enable SVE2 sha3 instructions.  This also enables SVE2 instructions.
! .IP \fBsve2p1\fR 4
  .IX Item "sve2p1"
! Enable SVE2.1 instructions.  This also enables SVE2 instructions.
! .IP \fBtme\fR 4
  .IX Item "tme"
  Enable the Transactional Memory Extension.
! .IP \fBi8mm\fR 4
  .IX Item "i8mm"
  Enable 8\-bit Integer Matrix Multiply instructions.  This also enables
! Advanced SIMD and floating\-point instructions.  This option is enabled by
  default for \fB\-march=armv8.6\-a\fR.  Use of this option with architectures
  prior to Armv8.2\-A is not supported.
! .IP \fBf32mm\fR 4
  .IX Item "f32mm"
  Enable 32\-bit Floating point Matrix Multiply instructions.  This also enables
! SVE instructions.  Use of this option with architectures prior to Armv8.2\-A is
  not supported.
! .IP \fBf64mm\fR 4
  .IX Item "f64mm"
  Enable 64\-bit Floating point Matrix Multiply instructions.  This also enables
! SVE instructions.  Use of this option with architectures prior to Armv8.2\-A is
  not supported.
! .IP \fBbf16\fR 4
  .IX Item "bf16"
! Enable brain half\-precision floating\-point instructions.  This also enables
! Advanced SIMD and floating\-point instructions.  This option is enabled by
  default for \fB\-march=armv8.6\-a\fR.  Use of this option with architectures
  prior to Armv8.2\-A is not supported.
! .IP \fBls64\fR 4
  .IX Item "ls64"
  Enable the 64\-byte atomic load and store instructions for accelerators.
! .IP \fBmops\fR 4
  .IX Item "mops"
  Enable the instructions to accelerate memory operations like \f(CW\*(C`memcpy\*(C'\fR,
  \&\f(CW\*(C`memmove\*(C'\fR, \f(CW\*(C`memset\*(C'\fR.  This option is enabled by default for
  \&\fB\-march=armv8.8\-a\fR
! .IP \fBflagm\fR 4
  .IX Item "flagm"
  Enable the Flag Manipulation instructions Extension.
! .IP \fBflagm2\fR 4
  .IX Item "flagm2"
  Enable the FlagM2 flag conversion instructions.
! .IP \fBpauth\fR 4
  .IX Item "pauth"
  Enable the Pointer Authentication Extension.
! .IP \fBcssc\fR 4
  .IX Item "cssc"
  Enable the Common Short Sequence Compression instructions.
! .IP \fBsme\fR 4
  .IX Item "sme"
! Enable the Scalable Matrix Extension.  This is only supported when SVE2 is also
  enabled.
! .IP \fBsme\-i16i64\fR 4
  .IX Item "sme-i16i64"
! Enable the FEAT_SME_I16I64 extension to SME.  This also enables SME
  instructions.
! .IP \fBsme\-f64f64\fR 4
  .IX Item "sme-f64f64"
! Enable the FEAT_SME_F64F64 extension to SME.  This also enables SME
  instructions.
! .IP \fBsme2\fR 4
  .IX Item "sme2"
! Enable the Scalable Matrix Extension 2.  This also enables SME instructions.
! .IP \fBsme\-b16b16\fR 4
  .IX Item "sme-b16b16"
! Enable the FEAT_SME_B16B16 extension to SME.  This also enables SME2
! and SVE_B16B16 instructions.
! .IP \fBsme\-f16f16\fR 4
  .IX Item "sme-f16f16"
! Enable the FEAT_SME_F16F16 extension to SME.  This also enables SME2
  instructions.
! .IP \fBsme2p1\fR 4
  .IX Item "sme2p1"
! Enable the Scalable Matrix Extension version 2.1.  This also enables SME2
  instructions.
! .IP \fBfcma\fR 4
  .IX Item "fcma"
! Enable the complex number SIMD extensions.
! .IP \fBjscvt\fR 4
  .IX Item "jscvt"
  Enable the \f(CW\*(C`fjcvtzs\*(C'\fR JavaScript conversion instruction.
! .IP \fBfrintts\fR 4
  .IX Item "frintts"
! Enable floating\-point round to integral value instructions.
! .IP \fBwfxt\fR 4
  .IX Item "wfxt"
  Enable \f(CW\*(C`wfet\*(C'\fR and \f(CW\*(C`wfit\*(C'\fR instructions.
! .IP \fBxs\fR 4
  .IX Item "xs"
! Enable the XS memory attribute extension.
! .IP \fBlse128\fR 4
  .IX Item "lse128"
! Enable the LSE128 128\-bit atomic instructions extension.  This also
! enables LSE instructions.
! .IP \fBd128\fR 4
  .IX Item "d128"
  Enable support for 128\-bit system register read/write instructions.
! This also enables the LSE128 extension.
! .IP \fBgcs\fR 4
  .IX Item "gcs"
  Enable support for Armv9.4\-a Guarded Control Stack extension.
! .IP \fBthe\fR 4
  .IX Item "the"
  Enable support for Armv8.9\-a/9.4\-a translation hardening extension.
! .IP \fBrcpc2\fR 4
  .IX Item "rcpc2"
  Enable the RCpc2 extension.
! .IP \fBrcpc3\fR 4
  .IX Item "rcpc3"
  Enable the RCpc3 (Release Consistency) extension.
! .IP \fBfp8\fR 4
  .IX Item "fp8"
  Enable the fp8 (8\-bit floating point) extension.
! .IP \fBfp8fma\fR 4
  .IX Item "fp8fma"
  Enable the fp8 (8\-bit floating point) multiply accumulate extension.
! .IP \fBssve\-fp8fma\fR 4
  .IX Item "ssve-fp8fma"
  Enable the fp8 (8\-bit floating point) multiply accumulate extension in streaming
  mode.
! .IP \fBfp8dot4\fR 4
  .IX Item "fp8dot4"
! Enable the fp8 (8\-bit floating point) to single\-precision 4\-way dot product
  extension.
! .IP \fBssve\-fp8dot4\fR 4
  .IX Item "ssve-fp8dot4"
! Enable the fp8 (8\-bit floating point) to single\-precision 4\-way dot product
  extension in streaming mode.
! .IP \fBfp8dot2\fR 4
  .IX Item "fp8dot2"
! Enable the fp8 (8\-bit floating point) to half\-precision 2\-way dot product
  extension.
! .IP \fBssve\-fp8dot2\fR 4
  .IX Item "ssve-fp8dot2"
! Enable the fp8 (8\-bit floating point) to half\-precision 2\-way dot product
  extension in streaming mode.
! .IP \fBfaminmax\fR 4
  .IX Item "faminmax"
  Enable the Floating Point Absolute Maximum/Minimum extension.
! .IP \fBlut\fR 4
  .IX Item "lut"
  Enable the Lookup Table extension.
! .IP \fBcpa\fR 4
  .IX Item "cpa"
  Enable the Checked Pointer Arithmetic instructions.
! .IP \fBsve\-b16b16\fR 4
  .IX Item "sve-b16b16"
! Enable the SVE non\-widening brain floating\-point (\f(CW\*(C`bf16\*(C'\fR) extension.
  This only has an effect when \f(CW\*(C`sve2\*(C'\fR or \f(CW\*(C`sme2\*(C'\fR are also enabled.
  .PP
  Feature \fBcrypto\fR implies \fBaes\fR, \fBsha2\fR, and \fBsimd\fR,
*************** Conversely, \fBnofp\fR implies \fBnosimd
*** 21683,21816 ****
  .IX Subsection "Adapteva Epiphany Options"
  .PP
  These \fB\-m\fR options are defined for Adapteva Epiphany:
! .IP "\fB\-mhalf\-reg\-file\fR" 4
  .IX Item "-mhalf-reg-file"
! Don't allocate any register in the range \f(CW\*(C`r32\*(C'\fR...\f(CW\*(C`r63\*(C'\fR.
  That allows code to run on hardware variants that lack these registers.
! .IP "\fB\-mprefer\-short\-insn\-regs\fR" 4
  .IX Item "-mprefer-short-insn-regs"
  Preferentially allocate registers that allow short instruction generation.
  This can result in increased instruction count, so this may either reduce or
  increase overall code size.
! .IP "\fB\-mbranch\-cost=\fR\fInum\fR" 4
  .IX Item "-mbranch-cost=num"
! Set the cost of branches to roughly \fInum\fR \*(L"simple\*(R" instructions.
  This cost is only a heuristic and is not guaranteed to produce
  consistent results across releases.
! .IP "\fB\-mcmove\fR" 4
  .IX Item "-mcmove"
  Enable the generation of conditional moves.
! .IP "\fB\-mnops=\fR\fInum\fR" 4
  .IX Item "-mnops=num"
  Emit \fInum\fR NOPs before every other generated instruction.
! .IP "\fB\-mno\-soft\-cmpsf\fR" 4
  .IX Item "-mno-soft-cmpsf"
! For single-precision floating-point comparisons, emit an \f(CW\*(C`fsub\*(C'\fR instruction
  and test the flags.  This is faster than a software comparison, but can
  get incorrect results in the presence of NaNs, or when two different small
  numbers are compared such that their difference is calculated as zero.
! The default is \fB\-msoft\-cmpsf\fR, which uses slower, but IEEE-compliant,
  software comparisons.
! .IP "\fB\-mstack\-offset=\fR\fInum\fR" 4
  .IX Item "-mstack-offset=num"
  Set the offset between the top of the stack and the stack pointer.
  E.g., a value of 8 means that the eight bytes in the range \f(CW\*(C`sp+0...sp+7\*(C'\fR
  can be used by leaf functions without stack allocation.
  Values other than \fB8\fR or \fB16\fR are untested and unlikely to work.
! Note also that this option changes the \s-1ABI\s0; compiling a program with a
  different stack offset than the libraries have been compiled with
  generally does not work.
  This option can be useful if you want to evaluate if a different stack
  offset would give you better code, but to actually use a different stack
  offset to build working programs, it is recommended to configure the
  toolchain with the appropriate \fB\-\-with\-stack\-offset=\fR\fInum\fR option.
! .IP "\fB\-mno\-round\-nearest\fR" 4
  .IX Item "-mno-round-nearest"
  Make the scheduler assume that the rounding mode has been set to
  truncating.  The default is \fB\-mround\-nearest\fR.
! .IP "\fB\-mlong\-calls\fR" 4
  .IX Item "-mlong-calls"
  If not otherwise specified by an attribute, assume all calls might be beyond
  the offset range of the \f(CW\*(C`b\*(C'\fR / \f(CW\*(C`bl\*(C'\fR instructions, and therefore load the
  function address into a register before performing a (otherwise direct) call.
  This is the default.
! .IP "\fB\-mshort\-calls\fR" 4
  .IX Item "-mshort-calls"
  If not otherwise specified by an attribute, assume all direct calls are
  in the range of the \f(CW\*(C`b\*(C'\fR / \f(CW\*(C`bl\*(C'\fR instructions, so use these instructions
  for direct calls.  The default is \fB\-mlong\-calls\fR.
! .IP "\fB\-msmall16\fR" 4
  .IX Item "-msmall16"
  Assume addresses can be loaded as 16\-bit unsigned values.  This does not
  apply to function addresses for which \fB\-mlong\-calls\fR semantics
  are in effect.
! .IP "\fB\-mfp\-mode=\fR\fImode\fR" 4
  .IX Item "-mfp-mode=mode"
! Set the prevailing mode of the floating-point unit.
! This determines the floating-point mode that is provided and expected
  at function call and return time.  Making this mode match the mode you
  predominantly need at function start can make your programs smaller and
  faster by avoiding unnecessary mode switches.
  .Sp
  \&\fImode\fR can be set to one the following values:
  .RS 4
! .IP "\fBcaller\fR" 4
  .IX Item "caller"
  Any mode at function entry is valid, and retained or restored when
  the function returns, and when it calls other functions.
  This mode is useful for compiling libraries or other compilation units
  you might want to incorporate into different programs with different
! prevailing \s-1FPU\s0 modes, and the convenience of being able to use a single
  object file outweighs the size and speed overhead for any extra
  mode switching that might be needed, compared with what would be needed
! with a more specific choice of prevailing \s-1FPU\s0 mode.
! .IP "\fBtruncate\fR" 4
  .IX Item "truncate"
! This is the mode used for floating-point calculations with
  truncating (i.e. round towards zero) rounding mode.  That includes
  conversion from floating point to integer.
! .IP "\fBround-nearest\fR" 4
  .IX Item "round-nearest"
! This is the mode used for floating-point calculations with
! round-to-nearest-or-even rounding mode.
! .IP "\fBint\fR" 4
  .IX Item "int"
! This is the mode used to perform integer calculations in the \s-1FPU,\s0 e.g.
! integer multiply, or integer multiply-and-accumulate.
  .RE
  .RS 4
  .Sp
  The default is \fB\-mfp\-mode=caller\fR
  .RE
! .IP "\fB\-mno\-split\-lohi\fR" 4
  .IX Item "-mno-split-lohi"
  .PD 0
! .IP "\fB\-mno\-postinc\fR" 4
  .IX Item "-mno-postinc"
! .IP "\fB\-mno\-postmodify\fR" 4
  .IX Item "-mno-postmodify"
  .PD
  Code generation tweaks that disable, respectively, splitting of 32\-bit
! loads, generation of post-increment addresses, and generation of
! post-modify addresses.  The defaults are \fBmsplit-lohi\fR,
  \&\fB\-mpost\-inc\fR, and \fB\-mpost\-modify\fR.
! .IP "\fB\-mnovect\-double\fR" 4
  .IX Item "-mnovect-double"
! Change the preferred \s-1SIMD\s0 mode to SImode.  The default is
! \&\fB\-mvect\-double\fR, which uses DImode as preferred \s-1SIMD\s0 mode.
! .IP "\fB\-max\-vect\-align=\fR\fInum\fR" 4
  .IX Item "-max-vect-align=num"
! The maximum alignment for \s-1SIMD\s0 vector mode types.
  \&\fInum\fR may be 4 or 8.  The default is 8.
! Note that this is an \s-1ABI\s0 change, even though many library function
! interfaces are unaffected if they don't use \s-1SIMD\s0 vector modes
  in places that affect size and/or alignment of relevant types.
! .IP "\fB\-msplit\-vecmove\-early\fR" 4
  .IX Item "-msplit-vecmove-early"
  Split vector moves into single word moves before reload.  In theory this
  can give better register allocation, but so far the reverse seems to be
  generally the case.
! .IP "\fB\-m1reg\-\fR\fIreg\fR" 4
  .IX Item "-m1reg-reg"
  Specify a register to hold the constant \-1, which makes loading small negative
  constants and certain bitmasks faster.
--- 21618,21751 ----
  .IX Subsection "Adapteva Epiphany Options"
  .PP
  These \fB\-m\fR options are defined for Adapteva Epiphany:
! .IP \fB\-mhalf\-reg\-file\fR 4
  .IX Item "-mhalf-reg-file"
! Don\*(Aqt allocate any register in the range \f(CW\*(C`r32\*(C'\fR...\f(CW\*(C`r63\*(C'\fR.
  That allows code to run on hardware variants that lack these registers.
! .IP \fB\-mprefer\-short\-insn\-regs\fR 4
  .IX Item "-mprefer-short-insn-regs"
  Preferentially allocate registers that allow short instruction generation.
  This can result in increased instruction count, so this may either reduce or
  increase overall code size.
! .IP \fB\-mbranch\-cost=\fR\fInum\fR 4
  .IX Item "-mbranch-cost=num"
! Set the cost of branches to roughly \fInum\fR "simple" instructions.
  This cost is only a heuristic and is not guaranteed to produce
  consistent results across releases.
! .IP \fB\-mcmove\fR 4
  .IX Item "-mcmove"
  Enable the generation of conditional moves.
! .IP \fB\-mnops=\fR\fInum\fR 4
  .IX Item "-mnops=num"
  Emit \fInum\fR NOPs before every other generated instruction.
! .IP \fB\-mno\-soft\-cmpsf\fR 4
  .IX Item "-mno-soft-cmpsf"
! For single\-precision floating\-point comparisons, emit an \f(CW\*(C`fsub\*(C'\fR instruction
  and test the flags.  This is faster than a software comparison, but can
  get incorrect results in the presence of NaNs, or when two different small
  numbers are compared such that their difference is calculated as zero.
! The default is \fB\-msoft\-cmpsf\fR, which uses slower, but IEEE\-compliant,
  software comparisons.
! .IP \fB\-mstack\-offset=\fR\fInum\fR 4
  .IX Item "-mstack-offset=num"
  Set the offset between the top of the stack and the stack pointer.
  E.g., a value of 8 means that the eight bytes in the range \f(CW\*(C`sp+0...sp+7\*(C'\fR
  can be used by leaf functions without stack allocation.
  Values other than \fB8\fR or \fB16\fR are untested and unlikely to work.
! Note also that this option changes the ABI; compiling a program with a
  different stack offset than the libraries have been compiled with
  generally does not work.
  This option can be useful if you want to evaluate if a different stack
  offset would give you better code, but to actually use a different stack
  offset to build working programs, it is recommended to configure the
  toolchain with the appropriate \fB\-\-with\-stack\-offset=\fR\fInum\fR option.
! .IP \fB\-mno\-round\-nearest\fR 4
  .IX Item "-mno-round-nearest"
  Make the scheduler assume that the rounding mode has been set to
  truncating.  The default is \fB\-mround\-nearest\fR.
! .IP \fB\-mlong\-calls\fR 4
  .IX Item "-mlong-calls"
  If not otherwise specified by an attribute, assume all calls might be beyond
  the offset range of the \f(CW\*(C`b\*(C'\fR / \f(CW\*(C`bl\*(C'\fR instructions, and therefore load the
  function address into a register before performing a (otherwise direct) call.
  This is the default.
! .IP \fB\-mshort\-calls\fR 4
  .IX Item "-mshort-calls"
  If not otherwise specified by an attribute, assume all direct calls are
  in the range of the \f(CW\*(C`b\*(C'\fR / \f(CW\*(C`bl\*(C'\fR instructions, so use these instructions
  for direct calls.  The default is \fB\-mlong\-calls\fR.
! .IP \fB\-msmall16\fR 4
  .IX Item "-msmall16"
  Assume addresses can be loaded as 16\-bit unsigned values.  This does not
  apply to function addresses for which \fB\-mlong\-calls\fR semantics
  are in effect.
! .IP \fB\-mfp\-mode=\fR\fImode\fR 4
  .IX Item "-mfp-mode=mode"
! Set the prevailing mode of the floating\-point unit.
! This determines the floating\-point mode that is provided and expected
  at function call and return time.  Making this mode match the mode you
  predominantly need at function start can make your programs smaller and
  faster by avoiding unnecessary mode switches.
  .Sp
  \&\fImode\fR can be set to one the following values:
  .RS 4
! .IP \fBcaller\fR 4
  .IX Item "caller"
  Any mode at function entry is valid, and retained or restored when
  the function returns, and when it calls other functions.
  This mode is useful for compiling libraries or other compilation units
  you might want to incorporate into different programs with different
! prevailing FPU modes, and the convenience of being able to use a single
  object file outweighs the size and speed overhead for any extra
  mode switching that might be needed, compared with what would be needed
! with a more specific choice of prevailing FPU mode.
! .IP \fBtruncate\fR 4
  .IX Item "truncate"
! This is the mode used for floating\-point calculations with
  truncating (i.e. round towards zero) rounding mode.  That includes
  conversion from floating point to integer.
! .IP \fBround\-nearest\fR 4
  .IX Item "round-nearest"
! This is the mode used for floating\-point calculations with
! round\-to\-nearest\-or\-even rounding mode.
! .IP \fBint\fR 4
  .IX Item "int"
! This is the mode used to perform integer calculations in the FPU, e.g.
! integer multiply, or integer multiply\-and\-accumulate.
  .RE
  .RS 4
  .Sp
  The default is \fB\-mfp\-mode=caller\fR
  .RE
! .IP \fB\-mno\-split\-lohi\fR 4
  .IX Item "-mno-split-lohi"
  .PD 0
! .IP \fB\-mno\-postinc\fR 4
  .IX Item "-mno-postinc"
! .IP \fB\-mno\-postmodify\fR 4
  .IX Item "-mno-postmodify"
  .PD
  Code generation tweaks that disable, respectively, splitting of 32\-bit
! loads, generation of post\-increment addresses, and generation of
! post\-modify addresses.  The defaults are \fBmsplit\-lohi\fR,
  \&\fB\-mpost\-inc\fR, and \fB\-mpost\-modify\fR.
! .IP \fB\-mnovect\-double\fR 4
  .IX Item "-mnovect-double"
! Change the preferred SIMD mode to SImode.  The default is
! \&\fB\-mvect\-double\fR, which uses DImode as preferred SIMD mode.
! .IP \fB\-max\-vect\-align=\fR\fInum\fR 4
  .IX Item "-max-vect-align=num"
! The maximum alignment for SIMD vector mode types.
  \&\fInum\fR may be 4 or 8.  The default is 8.
! Note that this is an ABI change, even though many library function
! interfaces are unaffected if they don\*(Aqt use SIMD vector modes
  in places that affect size and/or alignment of relevant types.
! .IP \fB\-msplit\-vecmove\-early\fR 4
  .IX Item "-msplit-vecmove-early"
  Split vector moves into single word moves before reload.  In theory this
  can give better register allocation, but so far the reverse seems to be
  generally the case.
! .IP \fB\-m1reg\-\fR\fIreg\fR 4
  .IX Item "-m1reg-reg"
  Specify a register to hold the constant \-1, which makes loading small negative
  constants and certain bitmasks faster.
*************** which specify use of that register as a
*** 21819,22400 ****
  and \fBnone\fR, which means that no register is used for this
  purpose.  The default is \fB\-m1reg\-none\fR.
  .PP
! \fI\s-1AMD GCN\s0 Options\fR
  .IX Subsection "AMD GCN Options"
  .PP
! These options are defined specifically for the \s-1AMD GCN\s0 port.
! .IP "\fB\-march=\fR\fIgpu\fR" 4
  .IX Item "-march=gpu"
  .PD 0
! .IP "\fB\-mtune=\fR\fIgpu\fR" 4
  .IX Item "-mtune=gpu"
  .PD
  Set architecture type or tuning for \fIgpu\fR. Supported values for \fIgpu\fR
  are
  .RS 4
! .IP "\fBgfx900\fR" 4
  .IX Item "gfx900"
! Compile for \s-1GCN5\s0 Vega 10 devices (gfx900).
! .IP "\fBgfx902\fR" 4
  .IX Item "gfx902"
! Compile for \s-1GCN5\s0 Vega gfx902 devices. (Experimental)
! .IP "\fBgfx904\fR" 4
  .IX Item "gfx904"
! Compile for \s-1GCN5\s0 Vega gfx904 devices. (Experimental)
! .IP "\fBgfx906\fR" 4
  .IX Item "gfx906"
! Compile for \s-1GCN5\s0 Vega 20 devices (gfx906).
! .IP "\fBgfx908\fR" 4
  .IX Item "gfx908"
! Compile for \s-1CDNA1\s0 Instinct \s-1MI100\s0 series devices (gfx908).
! .IP "\fBgfx909\fR" 4
  .IX Item "gfx909"
! Compile for \s-1GCN5\s0 Vega gfx909 devices. (Experimental)
! .IP "\fBgfx90a\fR" 4
  .IX Item "gfx90a"
! Compile for \s-1CDNA2\s0 Instinct \s-1MI200\s0 series devices (gfx90a).
! .IP "\fBgfx90c\fR" 4
  .IX Item "gfx90c"
! Compile for \s-1GCN5\s0 Vega 7 devices (gfx90c).
! .IP "\fBgfx9\-generic\fR" 4
  .IX Item "gfx9-generic"
  Compile generic code for Vega devices, executable on the following subset of
! \&\s-1GFX9\s0 devices: gfx900, gfx902, gfx904, gfx906, gfx909 and gfx90c. (Experimental)
! .IP "\fBgfx1030\fR" 4
  .IX Item "gfx1030"
! Compile for \s-1RDNA2\s0 gfx1030 devices (\s-1GFX10\s0 series).
! .IP "\fBgfx1031\fR" 4
  .IX Item "gfx1031"
! Compile for \s-1RDNA2\s0 gfx1031 devices (\s-1GFX10\s0 series). (Experimental)
! .IP "\fBgfx1032\fR" 4
  .IX Item "gfx1032"
! Compile for \s-1RDNA2\s0 gfx1032 devices (\s-1GFX10\s0 series). (Experimental)
! .IP "\fBgfx1033\fR" 4
  .IX Item "gfx1033"
! Compile for \s-1RDNA2\s0 gfx1033 devices (\s-1GFX10\s0 series). (Experimental)
! .IP "\fBgfx1034\fR" 4
  .IX Item "gfx1034"
! Compile for \s-1RDNA2\s0 gfx1034 devices (\s-1GFX10\s0 series). (Experimental)
! .IP "\fBgfx1035\fR" 4
  .IX Item "gfx1035"
! Compile for \s-1RDNA2\s0 gfx1035 devices (\s-1GFX10\s0 series). (Experimental)
! .IP "\fBgfx1036\fR" 4
  .IX Item "gfx1036"
! Compile for \s-1RDNA2\s0 gfx1036 devices (\s-1GFX10\s0 series).
! .IP "\fBgfx10\-3\-generic\fR" 4
  .IX Item "gfx10-3-generic"
! Compile generic code for \s-1GFX10\-3\s0 devices, executable on gfx1030,
  gfx1031, gfx1032, gfx1033, gfx1034, gfx1035, and gfx1036. (Experimental)
! .IP "\fBgfx1100\fR" 4
  .IX Item "gfx1100"
! Compile for \s-1RDNA3\s0 gfx1100 devices (\s-1GFX11\s0 series).
! .IP "\fBgfx1101\fR" 4
  .IX Item "gfx1101"
! Compile for \s-1RDNA3\s0 gfx1101 devices (\s-1GFX11\s0 series). (Experimental)
! .IP "\fBgfx1102\fR" 4
  .IX Item "gfx1102"
! Compile for \s-1RDNA3\s0 gfx1102 devices (\s-1GFX11\s0 series). (Experimental)
! .IP "\fBgfx1103\fR" 4
  .IX Item "gfx1103"
! Compile for \s-1RDNA3\s0 gfx1103 devices (\s-1GFX11\s0 series).
! .IP "\fBgfx1150\fR" 4
  .IX Item "gfx1150"
! Compile for \s-1RDNA3\s0 gfx1150 devices (\s-1GFX11\s0 series). (Experimental)
! .IP "\fBgfx1151\fR" 4
  .IX Item "gfx1151"
! Compile for \s-1RDNA3\s0 gfx1151 devices (\s-1GFX11\s0 series). (Experimental)
! .IP "\fBgfx1152\fR" 4
  .IX Item "gfx1152"
! Compile for \s-1RDNA3\s0 gfx1152 devices (\s-1GFX11\s0 series). (Experimental)
! .IP "\fBgfx1153\fR" 4
  .IX Item "gfx1153"
! Compile for \s-1RDNA3\s0 gfx1153 devices (\s-1GFX11\s0 series). (Experimental)
! .IP "\fBgfx11\-generic\fR" 4
  .IX Item "gfx11-generic"
! Compile generic code for \s-1GFX11\s0 devices, executable on gfx1100, gfx1101,
  gfx1102, gfx1103, gfx1150, gfx1151, gfx1152, and gfx1153. (Experimental)
  .RE
  .RS 4
  .RE
! .IP "\fB\-msram\-ecc=on\fR" 4
  .IX Item "-msram-ecc=on"
  .PD 0
! .IP "\fB\-msram\-ecc=off\fR" 4
  .IX Item "-msram-ecc=off"
! .IP "\fB\-msram\-ecc=any\fR" 4
  .IX Item "-msram-ecc=any"
  .PD
! Compile binaries suitable for devices with the SRAM-ECC feature enabled,
! disabled, or either mode.  This feature can be enabled per-process on some
  devices.  The compiled code must match the device mode. The default is
  \&\fBany\fR, for devices that support it.
! .IP "\fB\-mstack\-size=\fR\fIbytes\fR" 4
  .IX Item "-mstack-size=bytes"
! Specify how many \fIbytes\fR of stack space will be requested for each \s-1GPU\s0
! thread (wave-front).  Beware that there may be many threads and limited memory
  available.  The size of the stack allocation may also have an impact on
! run-time performance.  The default is 32KB when using OpenACC or OpenMP, and
  1MB otherwise.
! .IP "\fB\-mxnack=on\fR" 4
  .IX Item "-mxnack=on"
  .PD 0
! .IP "\fB\-mxnack=off\fR" 4
  .IX Item "-mxnack=off"
! .IP "\fB\-mxnack=any\fR" 4
  .IX Item "-mxnack=any"
  .PD
! Compile binaries suitable for devices with the \s-1XNACK\s0 feature enabled, disabled,
! or either mode.  Some devices always require \s-1XNACK\s0 and some allow the user to
! configure \s-1XNACK.\s0  The compiled code must match the device mode.
  The default is \fB\-mxnack=any\fR on devices that support Unified Shared
  Memory, and \fB\-mxnack=no\fR otherwise.
  .PP
! \fI\s-1ARC\s0 Options\fR
  .IX Subsection "ARC Options"
  .PP
  The following options control the architecture variant for which code
  is being compiled:
! .IP "\fB\-mbarrel\-shifter\fR" 4
  .IX Item "-mbarrel-shifter"
  Generate instructions supported by barrel shifter.  This is the default
  unless \fB\-mcpu=ARC601\fR or \fB\-mcpu=ARCEM\fR is in effect.
! .IP "\fB\-mjli\-always\fR" 4
  .IX Item "-mjli-always"
  Force to call a function using jli_s instruction.  This option is
  valid only for ARCv2 architecture.
! .IP "\fB\-mcpu=\fR\fIcpu\fR" 4
  .IX Item "-mcpu=cpu"
  Set architecture type, register usage, and instruction scheduling
  parameters for \fIcpu\fR.  There are also shortcut alias options
  available for backward compatibility and convenience.  Supported
  values for \fIcpu\fR are
  .RS 4
! .IP "\fBarc600\fR" 4
  .IX Item "arc600"
! Compile for \s-1ARC600.\s0  Aliases: \fB\-mA6\fR, \fB\-mARC600\fR.
! .IP "\fBarc601\fR" 4
  .IX Item "arc601"
! Compile for \s-1ARC601.\s0  Alias: \fB\-mARC601\fR.
! .IP "\fBarc700\fR" 4
  .IX Item "arc700"
! Compile for \s-1ARC700.\s0  Aliases: \fB\-mA7\fR, \fB\-mARC700\fR.
  This is the default when configured with \fB\-\-with\-cpu=arc700\fR.
! .IP "\fBarcem\fR" 4
  .IX Item "arcem"
! Compile for \s-1ARC EM.\s0
! .IP "\fBarchs\fR" 4
  .IX Item "archs"
! Compile for \s-1ARC HS.\s0
! .IP "\fBem\fR" 4
  .IX Item "em"
! Compile for \s-1ARC EM CPU\s0 with no hardware extensions.
! .IP "\fBem4\fR" 4
  .IX Item "em4"
! Compile for \s-1ARC EM4 CPU.\s0
! .IP "\fBem4_dmips\fR" 4
  .IX Item "em4_dmips"
! Compile for \s-1ARC EM4 DMIPS CPU.\s0
! .IP "\fBem4_fpus\fR" 4
  .IX Item "em4_fpus"
! Compile for \s-1ARC EM4 DMIPS CPU\s0 with the single-precision floating-point
  extension.
! .IP "\fBem4_fpuda\fR" 4
  .IX Item "em4_fpuda"
! Compile for \s-1ARC EM4 DMIPS CPU\s0 with single-precision floating-point and
  double assist instructions.
! .IP "\fBhs\fR" 4
  .IX Item "hs"
! Compile for \s-1ARC HS CPU\s0 with no hardware extensions except the atomic
  instructions.
! .IP "\fBhs34\fR" 4
  .IX Item "hs34"
! Compile for \s-1ARC HS34 CPU.\s0
! .IP "\fBhs38\fR" 4
  .IX Item "hs38"
! Compile for \s-1ARC HS38 CPU.\s0
! .IP "\fBhs38_linux\fR" 4
  .IX Item "hs38_linux"
! Compile for \s-1ARC HS38 CPU\s0 with all hardware extensions on.
! .IP "\fBhs4x\fR" 4
  .IX Item "hs4x"
! Compile for \s-1ARC\s0 HS4x \s-1CPU.\s0
! .IP "\fBhs4xd\fR" 4
  .IX Item "hs4xd"
! Compile for \s-1ARC\s0 HS4xD \s-1CPU.\s0
! .IP "\fBhs4x_rel31\fR" 4
  .IX Item "hs4x_rel31"
! Compile for \s-1ARC\s0 HS4x \s-1CPU\s0 release 3.10a.
! .IP "\fBarc600_norm\fR" 4
  .IX Item "arc600_norm"
! Compile for \s-1ARC 600 CPU\s0 with \f(CW\*(C`norm\*(C'\fR instructions enabled.
! .IP "\fBarc600_mul32x16\fR" 4
  .IX Item "arc600_mul32x16"
! Compile for \s-1ARC 600 CPU\s0 with \f(CW\*(C`norm\*(C'\fR and 32x16\-bit multiply
  instructions enabled.
! .IP "\fBarc600_mul64\fR" 4
  .IX Item "arc600_mul64"
! Compile for \s-1ARC 600 CPU\s0 with \f(CW\*(C`norm\*(C'\fR and \f(CW\*(C`mul64\*(C'\fR\-family
  instructions enabled.
! .IP "\fBarc601_norm\fR" 4
  .IX Item "arc601_norm"
! Compile for \s-1ARC 601 CPU\s0 with \f(CW\*(C`norm\*(C'\fR instructions enabled.
! .IP "\fBarc601_mul32x16\fR" 4
  .IX Item "arc601_mul32x16"
! Compile for \s-1ARC 601 CPU\s0 with \f(CW\*(C`norm\*(C'\fR and 32x16\-bit multiply
  instructions enabled.
! .IP "\fBarc601_mul64\fR" 4
  .IX Item "arc601_mul64"
! Compile for \s-1ARC 601 CPU\s0 with \f(CW\*(C`norm\*(C'\fR and \f(CW\*(C`mul64\*(C'\fR\-family
  instructions enabled.
! .IP "\fBnps400\fR" 4
  .IX Item "nps400"
! Compile for \s-1ARC 700\s0 on \s-1NPS400\s0 chip.
! .IP "\fBem_mini\fR" 4
  .IX Item "em_mini"
! Compile for \s-1ARC EM\s0 minimalist configuration featuring reduced register
  set.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mdpfp\fR" 4
  .IX Item "-mdpfp"
  .PD 0
! .IP "\fB\-mdpfp\-compact\fR" 4
  .IX Item "-mdpfp-compact"
  .PD
! Generate double-precision \s-1FPX\s0 instructions, tuned for the compact
  implementation.
! .IP "\fB\-mdpfp\-fast\fR" 4
  .IX Item "-mdpfp-fast"
! Generate double-precision \s-1FPX\s0 instructions, tuned for the fast
  implementation.
! .IP "\fB\-mno\-dpfp\-lrsr\fR" 4
  .IX Item "-mno-dpfp-lrsr"
! Disable \f(CW\*(C`lr\*(C'\fR and \f(CW\*(C`sr\*(C'\fR instructions from using \s-1FPX\s0 extension
  aux registers.
! .IP "\fB\-mea\fR" 4
  .IX Item "-mea"
  Generate extended arithmetic instructions.  Currently only
  \&\f(CW\*(C`divaw\*(C'\fR, \f(CW\*(C`adds\*(C'\fR, \f(CW\*(C`subs\*(C'\fR, and \f(CW\*(C`sat16\*(C'\fR are
  supported.  Only valid for \fB\-mcpu=ARC700\fR.
! .IP "\fB\-mno\-mpy\fR" 4
  .IX Item "-mno-mpy"
! Do not generate \f(CW\*(C`mpy\*(C'\fR\-family instructions for \s-1ARC700.\s0  This option is
  deprecated.
! .IP "\fB\-mmul32x16\fR" 4
  .IX Item "-mmul32x16"
! Generate 32x16\-bit multiply and multiply-accumulate instructions.
! .IP "\fB\-mmul64\fR" 4
  .IX Item "-mmul64"
  Generate \f(CW\*(C`mul64\*(C'\fR and \f(CW\*(C`mulu64\*(C'\fR instructions.
  Only valid for \fB\-mcpu=ARC600\fR.
! .IP "\fB\-mnorm\fR" 4
  .IX Item "-mnorm"
  Generate \f(CW\*(C`norm\*(C'\fR instructions.  This is the default if \fB\-mcpu=ARC700\fR
  is in effect.
! .IP "\fB\-mspfp\fR" 4
  .IX Item "-mspfp"
  .PD 0
! .IP "\fB\-mspfp\-compact\fR" 4
  .IX Item "-mspfp-compact"
  .PD
! Generate single-precision \s-1FPX\s0 instructions, tuned for the compact
  implementation.
! .IP "\fB\-mspfp\-fast\fR" 4
  .IX Item "-mspfp-fast"
! Generate single-precision \s-1FPX\s0 instructions, tuned for the fast
  implementation.
! .IP "\fB\-msimd\fR" 4
  .IX Item "-msimd"
! Enable generation of \s-1ARC SIMD\s0 instructions via target-specific
  builtins.  Only valid for \fB\-mcpu=ARC700\fR.
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  This option ignored; it is provided for compatibility purposes only.
! Software floating-point code is emitted by default, and this default
! can overridden by \s-1FPX\s0 options; \fB\-mspfp\fR, \fB\-mspfp\-compact\fR, or
  \&\fB\-mspfp\-fast\fR for single precision, and \fB\-mdpfp\fR,
  \&\fB\-mdpfp\-compact\fR, or \fB\-mdpfp\-fast\fR for double precision.
! .IP "\fB\-mswap\fR" 4
  .IX Item "-mswap"
  Generate \f(CW\*(C`swap\*(C'\fR instructions.
! .IP "\fB\-matomic\fR" 4
  .IX Item "-matomic"
  This enables use of the locked load/store conditional extension to implement
! atomic memory built-in functions.  Not available for \s-1ARC\s0 6xx or \s-1ARC
! EM\s0 cores.
! .IP "\fB\-mdiv\-rem\fR" 4
  .IX Item "-mdiv-rem"
  Enable \f(CW\*(C`div\*(C'\fR and \f(CW\*(C`rem\*(C'\fR instructions for ARCv2 cores.
! .IP "\fB\-mcode\-density\fR" 4
  .IX Item "-mcode-density"
! Enable code density instructions for \s-1ARC EM.\s0
! This option is on by default for \s-1ARC HS.\s0
! .IP "\fB\-mll64\fR" 4
  .IX Item "-mll64"
! Enable double load/store operations for \s-1ARC HS\s0 cores.
! .IP "\fB\-mtp\-regno=\fR\fIregno\fR" 4
  .IX Item "-mtp-regno=regno"
  Specify thread pointer register number.
! .IP "\fB\-mmpy\-option=\fR\fImulto\fR" 4
  .IX Item "-mmpy-option=multo"
  Compile ARCv2 code with a multiplier design option.  You can specify
  the option using either a string or numeric value for \fImulto\fR.
  \&\fBwlh1\fR is the default value.  The recognized values are:
  .RS 4
! .IP "\fB0\fR" 4
  .IX Item "0"
  .PD 0
! .IP "\fBnone\fR" 4
  .IX Item "none"
  .PD
  No multiplier available.
! .IP "\fB1\fR" 4
  .IX Item "1"
  .PD 0
! .IP "\fBw\fR" 4
  .IX Item "w"
  .PD
  16x16 multiplier, fully pipelined.
  The following instructions are enabled: \f(CW\*(C`mpyw\*(C'\fR and \f(CW\*(C`mpyuw\*(C'\fR.
! .IP "\fB2\fR" 4
  .IX Item "2"
  .PD 0
! .IP "\fBwlh1\fR" 4
  .IX Item "wlh1"
  .PD
  32x32 multiplier, fully
  pipelined (1 stage).  The following instructions are additionally
  enabled: \f(CW\*(C`mpy\*(C'\fR, \f(CW\*(C`mpyu\*(C'\fR, \f(CW\*(C`mpym\*(C'\fR, \f(CW\*(C`mpymu\*(C'\fR, and \f(CW\*(C`mpy_s\*(C'\fR.
! .IP "\fB3\fR" 4
  .IX Item "3"
  .PD 0
! .IP "\fBwlh2\fR" 4
  .IX Item "wlh2"
  .PD
  32x32 multiplier, fully pipelined
  (2 stages).  The following instructions are additionally enabled: \f(CW\*(C`mpy\*(C'\fR,
  \&\f(CW\*(C`mpyu\*(C'\fR, \f(CW\*(C`mpym\*(C'\fR, \f(CW\*(C`mpymu\*(C'\fR, and \f(CW\*(C`mpy_s\*(C'\fR.
! .IP "\fB4\fR" 4
  .IX Item "4"
  .PD 0
! .IP "\fBwlh3\fR" 4
  .IX Item "wlh3"
  .PD
  Two 16x16 multipliers, blocking,
  sequential.  The following instructions are additionally enabled: \f(CW\*(C`mpy\*(C'\fR,
  \&\f(CW\*(C`mpyu\*(C'\fR, \f(CW\*(C`mpym\*(C'\fR, \f(CW\*(C`mpymu\*(C'\fR, and \f(CW\*(C`mpy_s\*(C'\fR.
! .IP "\fB5\fR" 4
  .IX Item "5"
  .PD 0
! .IP "\fBwlh4\fR" 4
  .IX Item "wlh4"
  .PD
  One 16x16 multiplier, blocking,
  sequential.  The following instructions are additionally enabled: \f(CW\*(C`mpy\*(C'\fR,
  \&\f(CW\*(C`mpyu\*(C'\fR, \f(CW\*(C`mpym\*(C'\fR, \f(CW\*(C`mpymu\*(C'\fR, and \f(CW\*(C`mpy_s\*(C'\fR.
! .IP "\fB6\fR" 4
  .IX Item "6"
  .PD 0
! .IP "\fBwlh5\fR" 4
  .IX Item "wlh5"
  .PD
  One 32x4 multiplier, blocking,
  sequential.  The following instructions are additionally enabled: \f(CW\*(C`mpy\*(C'\fR,
  \&\f(CW\*(C`mpyu\*(C'\fR, \f(CW\*(C`mpym\*(C'\fR, \f(CW\*(C`mpymu\*(C'\fR, and \f(CW\*(C`mpy_s\*(C'\fR.
! .IP "\fB7\fR" 4
  .IX Item "7"
  .PD 0
! .IP "\fBplus_dmpy\fR" 4
  .IX Item "plus_dmpy"
  .PD
! \&\s-1ARC HS SIMD\s0 support.
! .IP "\fB8\fR" 4
  .IX Item "8"
  .PD 0
! .IP "\fBplus_macd\fR" 4
  .IX Item "plus_macd"
  .PD
! \&\s-1ARC HS SIMD\s0 support.
! .IP "\fB9\fR" 4
  .IX Item "9"
  .PD 0
! .IP "\fBplus_qmacw\fR" 4
  .IX Item "plus_qmacw"
  .PD
! \&\s-1ARC HS SIMD\s0 support.
  .RE
  .RS 4
  .Sp
  This option is only available for ARCv2 cores.
  .RE
! .IP "\fB\-mfpu=\fR\fIfpu\fR" 4
  .IX Item "-mfpu=fpu"
! Enables support for specific floating-point hardware extensions for ARCv2
  cores.  Supported values for \fIfpu\fR are:
  .RS 4
! .IP "\fBfpus\fR" 4
  .IX Item "fpus"
! Enables support for single-precision floating-point hardware
  extensions.
! .IP "\fBfpud\fR" 4
  .IX Item "fpud"
! Enables support for double-precision floating-point hardware
! extensions.  The single-precision floating-point extension is also
! enabled.  Not available for \s-1ARC EM.\s0
! .IP "\fBfpuda\fR" 4
  .IX Item "fpuda"
! Enables support for double-precision floating-point hardware
! extensions using double-precision assist instructions.  The single-precision
! floating-point extension is also enabled.  This option is
! only available for \s-1ARC EM.\s0
! .IP "\fBfpuda_div\fR" 4
  .IX Item "fpuda_div"
! Enables support for double-precision floating-point hardware
! extensions using double-precision assist instructions.
! The single-precision floating-point, square-root, and divide
  extensions are also enabled.  This option is
! only available for \s-1ARC EM.\s0
! .IP "\fBfpuda_fma\fR" 4
  .IX Item "fpuda_fma"
! Enables support for double-precision floating-point hardware
! extensions using double-precision assist instructions.
! The single-precision floating-point and fused multiply and add
  hardware extensions are also enabled.  This option is
! only available for \s-1ARC EM.\s0
! .IP "\fBfpuda_all\fR" 4
  .IX Item "fpuda_all"
! Enables support for double-precision floating-point hardware
! extensions using double-precision assist instructions.
! All single-precision floating-point hardware extensions are also
! enabled.  This option is only available for \s-1ARC EM.\s0
! .IP "\fBfpus_div\fR" 4
  .IX Item "fpus_div"
! Enables support for single-precision floating-point, square-root and divide
  hardware extensions.
! .IP "\fBfpud_div\fR" 4
  .IX Item "fpud_div"
! Enables support for double-precision floating-point, square-root and divide
  hardware extensions.  This option
! includes option \fBfpus_div\fR. Not available for \s-1ARC EM.\s0
! .IP "\fBfpus_fma\fR" 4
  .IX Item "fpus_fma"
! Enables support for single-precision floating-point and
  fused multiply and add hardware extensions.
! .IP "\fBfpud_fma\fR" 4
  .IX Item "fpud_fma"
! Enables support for double-precision floating-point and
  fused multiply and add hardware extensions.  This option
! includes option \fBfpus_fma\fR.  Not available for \s-1ARC EM.\s0
! .IP "\fBfpus_all\fR" 4
  .IX Item "fpus_all"
! Enables support for all single-precision floating-point hardware
  extensions.
! .IP "\fBfpud_all\fR" 4
  .IX Item "fpud_all"
! Enables support for all single\- and double-precision floating-point
! hardware extensions.  Not available for \s-1ARC EM.\s0
  .RE
  .RS 4
  .RE
! .IP "\fB\-mirq\-ctrl\-saved=\fR\fIregister-range\fR\fB,\fR \fIblink\fR\fB,\fR \fIlp_count\fR" 4
  .IX Item "-mirq-ctrl-saved=register-range, blink, lp_count"
! Specifies general-purposes registers that the processor automatically
! saves/restores on interrupt entry and exit.  \fIregister-range\fR is
  specified as two registers separated by a dash.  The register range
  always starts with \f(CW\*(C`r0\*(C'\fR, the upper limit is \f(CW\*(C`fp\*(C'\fR register.
  \&\fIblink\fR and \fIlp_count\fR are optional.  This option is only
! valid for \s-1ARC EM\s0 and \s-1ARC HS\s0 cores.
! .IP "\fB\-mrgf\-banked\-regs=\fR\fInumber\fR" 4
  .IX Item "-mrgf-banked-regs=number"
  Specifies the number of registers replicated in second register bank
  on entry to fast interrupt.  Fast interrupts are interrupts with the
! highest priority level P0.  These interrupts save only \s-1PC\s0 and \s-1STATUS32\s0
  registers to avoid memory transactions during interrupt entry and exit
  sequences.  Use this option when you are using fast interrupts in an
! \&\s-1ARC V2\s0 family processor.  Permitted values are 4, 8, 16, and 32.
! .IP "\fB\-mlpc\-width=\fR\fIwidth\fR" 4
  .IX Item "-mlpc-width=width"
  Specify the width of the \f(CW\*(C`lp_count\*(C'\fR register.  Valid values for
  \&\fIwidth\fR are 8, 16, 20, 24, 28 and 32 bits.  The default width is
  fixed to 32 bits.  If the width is less than 32, the compiler does not
! attempt to transform loops in your program to use the zero-delay loop
  mechanism unless it is known that the \f(CW\*(C`lp_count\*(C'\fR register can
! hold the required loop-counter value.  Depending on the width
! specified, the compiler and run-time library might continue to use the
  loop mechanism for various needs.  This option defines macro
  \&\f(CW\*(C`_\|_ARC_LPC_WIDTH_\|_\*(C'\fR with the value of \fIwidth\fR.
! .IP "\fB\-mrf16\fR" 4
  .IX Item "-mrf16"
  This option instructs the compiler to generate code for a 16\-entry
  register file.  This option defines the \f(CW\*(C`_\|_ARC_RF16_\|_\*(C'\fR
  preprocessor macro.
! .IP "\fB\-mbranch\-index\fR" 4
  .IX Item "-mbranch-index"
  Enable use of \f(CW\*(C`bi\*(C'\fR or \f(CW\*(C`bih\*(C'\fR instructions to implement jump
  tables.
  .PP
  The following options are passed through to the assembler, and also
  define preprocessor macro symbols.
! .IP "\fB\-mdsp\-packa\fR" 4
  .IX Item "-mdsp-packa"
! Passed down to the assembler to enable the \s-1DSP\s0 Pack A extensions.
  Also sets the preprocessor symbol \f(CW\*(C`_\|_Xdsp_packa\*(C'\fR.  This option is
  deprecated.
! .IP "\fB\-mdvbf\fR" 4
  .IX Item "-mdvbf"
  Passed down to the assembler to enable the dual Viterbi butterfly
  extension.  Also sets the preprocessor symbol \f(CW\*(C`_\|_Xdvbf\*(C'\fR.  This
  option is deprecated.
! .IP "\fB\-mlock\fR" 4
  .IX Item "-mlock"
  Passed down to the assembler to enable the locked load/store
  conditional extension.  Also sets the preprocessor symbol
  \&\f(CW\*(C`_\|_Xlock\*(C'\fR.
! .IP "\fB\-mmac\-d16\fR" 4
  .IX Item "-mmac-d16"
  Passed down to the assembler.  Also sets the preprocessor symbol
  \&\f(CW\*(C`_\|_Xxmac_d16\*(C'\fR.  This option is deprecated.
! .IP "\fB\-mmac\-24\fR" 4
  .IX Item "-mmac-24"
  Passed down to the assembler.  Also sets the preprocessor symbol
  \&\f(CW\*(C`_\|_Xxmac_24\*(C'\fR.  This option is deprecated.
! .IP "\fB\-mrtsc\fR" 4
  .IX Item "-mrtsc"
! Passed down to the assembler to enable the 64\-bit time-stamp counter
  extension instruction.  Also sets the preprocessor symbol
  \&\f(CW\*(C`_\|_Xrtsc\*(C'\fR.  This option is deprecated.
! .IP "\fB\-mswape\fR" 4
  .IX Item "-mswape"
  Passed down to the assembler to enable the swap byte ordering
  extension instruction.  Also sets the preprocessor symbol
  \&\f(CW\*(C`_\|_Xswape\*(C'\fR.
! .IP "\fB\-mtelephony\fR" 4
  .IX Item "-mtelephony"
! Passed down to the assembler to enable dual\- and single-operand
  instructions for telephony.  Also sets the preprocessor symbol
  \&\f(CW\*(C`_\|_Xtelephony\*(C'\fR.  This option is deprecated.
! .IP "\fB\-mxy\fR" 4
  .IX Item "-mxy"
! Passed down to the assembler to enable the \s-1XY\s0 memory extension.  Also
  sets the preprocessor symbol \f(CW\*(C`_\|_Xxy\*(C'\fR.
  .PP
  The following options control how the assembly code is annotated:
! .IP "\fB\-misize\fR" 4
  .IX Item "-misize"
  Annotate assembler instructions with estimated addresses.
! .IP "\fB\-mannotate\-align\fR" 4
  .IX Item "-mannotate-align"
  Does nothing.  Preserved for backward compatibility.
  .PP
  The following options are passed through to the linker:
! .IP "\fB\-marclinux\fR" 4
  .IX Item "-marclinux"
  Passed through to the linker, to specify use of the \f(CW\*(C`arclinux\*(C'\fR emulation.
  This option is enabled by default in tool chains built for
  \&\f(CW\*(C`arc\-linux\-uclibc\*(C'\fR and \f(CW\*(C`arceb\-linux\-uclibc\*(C'\fR targets
  when profiling is not requested.
! .IP "\fB\-marclinux_prof\fR" 4
  .IX Item "-marclinux_prof"
  Passed through to the linker, to specify use of the
  \&\f(CW\*(C`arclinux_prof\*(C'\fR emulation.  This option is enabled by default in
--- 21754,22335 ----
  and \fBnone\fR, which means that no register is used for this
  purpose.  The default is \fB\-m1reg\-none\fR.
  .PP
! \fIAMD GCN Options\fR
  .IX Subsection "AMD GCN Options"
  .PP
! These options are defined specifically for the AMD GCN port.
! .IP \fB\-march=\fR\fIgpu\fR 4
  .IX Item "-march=gpu"
  .PD 0
! .IP \fB\-mtune=\fR\fIgpu\fR 4
  .IX Item "-mtune=gpu"
  .PD
  Set architecture type or tuning for \fIgpu\fR. Supported values for \fIgpu\fR
  are
  .RS 4
! .IP \fBgfx900\fR 4
  .IX Item "gfx900"
! Compile for GCN5 Vega 10 devices (gfx900).
! .IP \fBgfx902\fR 4
  .IX Item "gfx902"
! Compile for GCN5 Vega gfx902 devices. (Experimental)
! .IP \fBgfx904\fR 4
  .IX Item "gfx904"
! Compile for GCN5 Vega gfx904 devices. (Experimental)
! .IP \fBgfx906\fR 4
  .IX Item "gfx906"
! Compile for GCN5 Vega 20 devices (gfx906).
! .IP \fBgfx908\fR 4
  .IX Item "gfx908"
! Compile for CDNA1 Instinct MI100 series devices (gfx908).
! .IP \fBgfx909\fR 4
  .IX Item "gfx909"
! Compile for GCN5 Vega gfx909 devices. (Experimental)
! .IP \fBgfx90a\fR 4
  .IX Item "gfx90a"
! Compile for CDNA2 Instinct MI200 series devices (gfx90a).
! .IP \fBgfx90c\fR 4
  .IX Item "gfx90c"
! Compile for GCN5 Vega 7 devices (gfx90c).
! .IP \fBgfx9\-generic\fR 4
  .IX Item "gfx9-generic"
  Compile generic code for Vega devices, executable on the following subset of
! GFX9 devices: gfx900, gfx902, gfx904, gfx906, gfx909 and gfx90c. (Experimental)
! .IP \fBgfx1030\fR 4
  .IX Item "gfx1030"
! Compile for RDNA2 gfx1030 devices (GFX10 series).
! .IP \fBgfx1031\fR 4
  .IX Item "gfx1031"
! Compile for RDNA2 gfx1031 devices (GFX10 series). (Experimental)
! .IP \fBgfx1032\fR 4
  .IX Item "gfx1032"
! Compile for RDNA2 gfx1032 devices (GFX10 series). (Experimental)
! .IP \fBgfx1033\fR 4
  .IX Item "gfx1033"
! Compile for RDNA2 gfx1033 devices (GFX10 series). (Experimental)
! .IP \fBgfx1034\fR 4
  .IX Item "gfx1034"
! Compile for RDNA2 gfx1034 devices (GFX10 series). (Experimental)
! .IP \fBgfx1035\fR 4
  .IX Item "gfx1035"
! Compile for RDNA2 gfx1035 devices (GFX10 series). (Experimental)
! .IP \fBgfx1036\fR 4
  .IX Item "gfx1036"
! Compile for RDNA2 gfx1036 devices (GFX10 series).
! .IP \fBgfx10\-3\-generic\fR 4
  .IX Item "gfx10-3-generic"
! Compile generic code for GFX10\-3 devices, executable on gfx1030,
  gfx1031, gfx1032, gfx1033, gfx1034, gfx1035, and gfx1036. (Experimental)
! .IP \fBgfx1100\fR 4
  .IX Item "gfx1100"
! Compile for RDNA3 gfx1100 devices (GFX11 series).
! .IP \fBgfx1101\fR 4
  .IX Item "gfx1101"
! Compile for RDNA3 gfx1101 devices (GFX11 series). (Experimental)
! .IP \fBgfx1102\fR 4
  .IX Item "gfx1102"
! Compile for RDNA3 gfx1102 devices (GFX11 series). (Experimental)
! .IP \fBgfx1103\fR 4
  .IX Item "gfx1103"
! Compile for RDNA3 gfx1103 devices (GFX11 series).
! .IP \fBgfx1150\fR 4
  .IX Item "gfx1150"
! Compile for RDNA3 gfx1150 devices (GFX11 series). (Experimental)
! .IP \fBgfx1151\fR 4
  .IX Item "gfx1151"
! Compile for RDNA3 gfx1151 devices (GFX11 series). (Experimental)
! .IP \fBgfx1152\fR 4
  .IX Item "gfx1152"
! Compile for RDNA3 gfx1152 devices (GFX11 series). (Experimental)
! .IP \fBgfx1153\fR 4
  .IX Item "gfx1153"
! Compile for RDNA3 gfx1153 devices (GFX11 series). (Experimental)
! .IP \fBgfx11\-generic\fR 4
  .IX Item "gfx11-generic"
! Compile generic code for GFX11 devices, executable on gfx1100, gfx1101,
  gfx1102, gfx1103, gfx1150, gfx1151, gfx1152, and gfx1153. (Experimental)
  .RE
  .RS 4
  .RE
! .IP \fB\-msram\-ecc=on\fR 4
  .IX Item "-msram-ecc=on"
  .PD 0
! .IP \fB\-msram\-ecc=off\fR 4
  .IX Item "-msram-ecc=off"
! .IP \fB\-msram\-ecc=any\fR 4
  .IX Item "-msram-ecc=any"
  .PD
! Compile binaries suitable for devices with the SRAM\-ECC feature enabled,
! disabled, or either mode.  This feature can be enabled per\-process on some
  devices.  The compiled code must match the device mode. The default is
  \&\fBany\fR, for devices that support it.
! .IP \fB\-mstack\-size=\fR\fIbytes\fR 4
  .IX Item "-mstack-size=bytes"
! Specify how many \fIbytes\fR of stack space will be requested for each GPU
! thread (wave\-front).  Beware that there may be many threads and limited memory
  available.  The size of the stack allocation may also have an impact on
! run\-time performance.  The default is 32KB when using OpenACC or OpenMP, and
  1MB otherwise.
! .IP \fB\-mxnack=on\fR 4
  .IX Item "-mxnack=on"
  .PD 0
! .IP \fB\-mxnack=off\fR 4
  .IX Item "-mxnack=off"
! .IP \fB\-mxnack=any\fR 4
  .IX Item "-mxnack=any"
  .PD
! Compile binaries suitable for devices with the XNACK feature enabled, disabled,
! or either mode.  Some devices always require XNACK and some allow the user to
! configure XNACK.  The compiled code must match the device mode.
  The default is \fB\-mxnack=any\fR on devices that support Unified Shared
  Memory, and \fB\-mxnack=no\fR otherwise.
  .PP
! \fIARC Options\fR
  .IX Subsection "ARC Options"
  .PP
  The following options control the architecture variant for which code
  is being compiled:
! .IP \fB\-mbarrel\-shifter\fR 4
  .IX Item "-mbarrel-shifter"
  Generate instructions supported by barrel shifter.  This is the default
  unless \fB\-mcpu=ARC601\fR or \fB\-mcpu=ARCEM\fR is in effect.
! .IP \fB\-mjli\-always\fR 4
  .IX Item "-mjli-always"
  Force to call a function using jli_s instruction.  This option is
  valid only for ARCv2 architecture.
! .IP \fB\-mcpu=\fR\fIcpu\fR 4
  .IX Item "-mcpu=cpu"
  Set architecture type, register usage, and instruction scheduling
  parameters for \fIcpu\fR.  There are also shortcut alias options
  available for backward compatibility and convenience.  Supported
  values for \fIcpu\fR are
  .RS 4
! .IP \fBarc600\fR 4
  .IX Item "arc600"
! Compile for ARC600.  Aliases: \fB\-mA6\fR, \fB\-mARC600\fR.
! .IP \fBarc601\fR 4
  .IX Item "arc601"
! Compile for ARC601.  Alias: \fB\-mARC601\fR.
! .IP \fBarc700\fR 4
  .IX Item "arc700"
! Compile for ARC700.  Aliases: \fB\-mA7\fR, \fB\-mARC700\fR.
  This is the default when configured with \fB\-\-with\-cpu=arc700\fR.
! .IP \fBarcem\fR 4
  .IX Item "arcem"
! Compile for ARC EM.
! .IP \fBarchs\fR 4
  .IX Item "archs"
! Compile for ARC HS.
! .IP \fBem\fR 4
  .IX Item "em"
! Compile for ARC EM CPU with no hardware extensions.
! .IP \fBem4\fR 4
  .IX Item "em4"
! Compile for ARC EM4 CPU.
! .IP \fBem4_dmips\fR 4
  .IX Item "em4_dmips"
! Compile for ARC EM4 DMIPS CPU.
! .IP \fBem4_fpus\fR 4
  .IX Item "em4_fpus"
! Compile for ARC EM4 DMIPS CPU with the single\-precision floating\-point
  extension.
! .IP \fBem4_fpuda\fR 4
  .IX Item "em4_fpuda"
! Compile for ARC EM4 DMIPS CPU with single\-precision floating\-point and
  double assist instructions.
! .IP \fBhs\fR 4
  .IX Item "hs"
! Compile for ARC HS CPU with no hardware extensions except the atomic
  instructions.
! .IP \fBhs34\fR 4
  .IX Item "hs34"
! Compile for ARC HS34 CPU.
! .IP \fBhs38\fR 4
  .IX Item "hs38"
! Compile for ARC HS38 CPU.
! .IP \fBhs38_linux\fR 4
  .IX Item "hs38_linux"
! Compile for ARC HS38 CPU with all hardware extensions on.
! .IP \fBhs4x\fR 4
  .IX Item "hs4x"
! Compile for ARC HS4x CPU.
! .IP \fBhs4xd\fR 4
  .IX Item "hs4xd"
! Compile for ARC HS4xD CPU.
! .IP \fBhs4x_rel31\fR 4
  .IX Item "hs4x_rel31"
! Compile for ARC HS4x CPU release 3.10a.
! .IP \fBarc600_norm\fR 4
  .IX Item "arc600_norm"
! Compile for ARC 600 CPU with \f(CW\*(C`norm\*(C'\fR instructions enabled.
! .IP \fBarc600_mul32x16\fR 4
  .IX Item "arc600_mul32x16"
! Compile for ARC 600 CPU with \f(CW\*(C`norm\*(C'\fR and 32x16\-bit multiply
  instructions enabled.
! .IP \fBarc600_mul64\fR 4
  .IX Item "arc600_mul64"
! Compile for ARC 600 CPU with \f(CW\*(C`norm\*(C'\fR and \f(CW\*(C`mul64\*(C'\fR\-family
  instructions enabled.
! .IP \fBarc601_norm\fR 4
  .IX Item "arc601_norm"
! Compile for ARC 601 CPU with \f(CW\*(C`norm\*(C'\fR instructions enabled.
! .IP \fBarc601_mul32x16\fR 4
  .IX Item "arc601_mul32x16"
! Compile for ARC 601 CPU with \f(CW\*(C`norm\*(C'\fR and 32x16\-bit multiply
  instructions enabled.
! .IP \fBarc601_mul64\fR 4
  .IX Item "arc601_mul64"
! Compile for ARC 601 CPU with \f(CW\*(C`norm\*(C'\fR and \f(CW\*(C`mul64\*(C'\fR\-family
  instructions enabled.
! .IP \fBnps400\fR 4
  .IX Item "nps400"
! Compile for ARC 700 on NPS400 chip.
! .IP \fBem_mini\fR 4
  .IX Item "em_mini"
! Compile for ARC EM minimalist configuration featuring reduced register
  set.
  .RE
  .RS 4
  .RE
! .IP \fB\-mdpfp\fR 4
  .IX Item "-mdpfp"
  .PD 0
! .IP \fB\-mdpfp\-compact\fR 4
  .IX Item "-mdpfp-compact"
  .PD
! Generate double\-precision FPX instructions, tuned for the compact
  implementation.
! .IP \fB\-mdpfp\-fast\fR 4
  .IX Item "-mdpfp-fast"
! Generate double\-precision FPX instructions, tuned for the fast
  implementation.
! .IP \fB\-mno\-dpfp\-lrsr\fR 4
  .IX Item "-mno-dpfp-lrsr"
! Disable \f(CW\*(C`lr\*(C'\fR and \f(CW\*(C`sr\*(C'\fR instructions from using FPX extension
  aux registers.
! .IP \fB\-mea\fR 4
  .IX Item "-mea"
  Generate extended arithmetic instructions.  Currently only
  \&\f(CW\*(C`divaw\*(C'\fR, \f(CW\*(C`adds\*(C'\fR, \f(CW\*(C`subs\*(C'\fR, and \f(CW\*(C`sat16\*(C'\fR are
  supported.  Only valid for \fB\-mcpu=ARC700\fR.
! .IP \fB\-mno\-mpy\fR 4
  .IX Item "-mno-mpy"
! Do not generate \f(CW\*(C`mpy\*(C'\fR\-family instructions for ARC700.  This option is
  deprecated.
! .IP \fB\-mmul32x16\fR 4
  .IX Item "-mmul32x16"
! Generate 32x16\-bit multiply and multiply\-accumulate instructions.
! .IP \fB\-mmul64\fR 4
  .IX Item "-mmul64"
  Generate \f(CW\*(C`mul64\*(C'\fR and \f(CW\*(C`mulu64\*(C'\fR instructions.
  Only valid for \fB\-mcpu=ARC600\fR.
! .IP \fB\-mnorm\fR 4
  .IX Item "-mnorm"
  Generate \f(CW\*(C`norm\*(C'\fR instructions.  This is the default if \fB\-mcpu=ARC700\fR
  is in effect.
! .IP \fB\-mspfp\fR 4
  .IX Item "-mspfp"
  .PD 0
! .IP \fB\-mspfp\-compact\fR 4
  .IX Item "-mspfp-compact"
  .PD
! Generate single\-precision FPX instructions, tuned for the compact
  implementation.
! .IP \fB\-mspfp\-fast\fR 4
  .IX Item "-mspfp-fast"
! Generate single\-precision FPX instructions, tuned for the fast
  implementation.
! .IP \fB\-msimd\fR 4
  .IX Item "-msimd"
! Enable generation of ARC SIMD instructions via target\-specific
  builtins.  Only valid for \fB\-mcpu=ARC700\fR.
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  This option ignored; it is provided for compatibility purposes only.
! Software floating\-point code is emitted by default, and this default
! can overridden by FPX options; \fB\-mspfp\fR, \fB\-mspfp\-compact\fR, or
  \&\fB\-mspfp\-fast\fR for single precision, and \fB\-mdpfp\fR,
  \&\fB\-mdpfp\-compact\fR, or \fB\-mdpfp\-fast\fR for double precision.
! .IP \fB\-mswap\fR 4
  .IX Item "-mswap"
  Generate \f(CW\*(C`swap\*(C'\fR instructions.
! .IP \fB\-matomic\fR 4
  .IX Item "-matomic"
  This enables use of the locked load/store conditional extension to implement
! atomic memory built\-in functions.  Not available for ARC 6xx or ARC
! EM cores.
! .IP \fB\-mdiv\-rem\fR 4
  .IX Item "-mdiv-rem"
  Enable \f(CW\*(C`div\*(C'\fR and \f(CW\*(C`rem\*(C'\fR instructions for ARCv2 cores.
! .IP \fB\-mcode\-density\fR 4
  .IX Item "-mcode-density"
! Enable code density instructions for ARC EM.
! This option is on by default for ARC HS.
! .IP \fB\-mll64\fR 4
  .IX Item "-mll64"
! Enable double load/store operations for ARC HS cores.
! .IP \fB\-mtp\-regno=\fR\fIregno\fR 4
  .IX Item "-mtp-regno=regno"
  Specify thread pointer register number.
! .IP \fB\-mmpy\-option=\fR\fImulto\fR 4
  .IX Item "-mmpy-option=multo"
  Compile ARCv2 code with a multiplier design option.  You can specify
  the option using either a string or numeric value for \fImulto\fR.
  \&\fBwlh1\fR is the default value.  The recognized values are:
  .RS 4
! .IP \fB0\fR 4
  .IX Item "0"
  .PD 0
! .IP \fBnone\fR 4
  .IX Item "none"
  .PD
  No multiplier available.
! .IP \fB1\fR 4
  .IX Item "1"
  .PD 0
! .IP \fBw\fR 4
  .IX Item "w"
  .PD
  16x16 multiplier, fully pipelined.
  The following instructions are enabled: \f(CW\*(C`mpyw\*(C'\fR and \f(CW\*(C`mpyuw\*(C'\fR.
! .IP \fB2\fR 4
  .IX Item "2"
  .PD 0
! .IP \fBwlh1\fR 4
  .IX Item "wlh1"
  .PD
  32x32 multiplier, fully
  pipelined (1 stage).  The following instructions are additionally
  enabled: \f(CW\*(C`mpy\*(C'\fR, \f(CW\*(C`mpyu\*(C'\fR, \f(CW\*(C`mpym\*(C'\fR, \f(CW\*(C`mpymu\*(C'\fR, and \f(CW\*(C`mpy_s\*(C'\fR.
! .IP \fB3\fR 4
  .IX Item "3"
  .PD 0
! .IP \fBwlh2\fR 4
  .IX Item "wlh2"
  .PD
  32x32 multiplier, fully pipelined
  (2 stages).  The following instructions are additionally enabled: \f(CW\*(C`mpy\*(C'\fR,
  \&\f(CW\*(C`mpyu\*(C'\fR, \f(CW\*(C`mpym\*(C'\fR, \f(CW\*(C`mpymu\*(C'\fR, and \f(CW\*(C`mpy_s\*(C'\fR.
! .IP \fB4\fR 4
  .IX Item "4"
  .PD 0
! .IP \fBwlh3\fR 4
  .IX Item "wlh3"
  .PD
  Two 16x16 multipliers, blocking,
  sequential.  The following instructions are additionally enabled: \f(CW\*(C`mpy\*(C'\fR,
  \&\f(CW\*(C`mpyu\*(C'\fR, \f(CW\*(C`mpym\*(C'\fR, \f(CW\*(C`mpymu\*(C'\fR, and \f(CW\*(C`mpy_s\*(C'\fR.
! .IP \fB5\fR 4
  .IX Item "5"
  .PD 0
! .IP \fBwlh4\fR 4
  .IX Item "wlh4"
  .PD
  One 16x16 multiplier, blocking,
  sequential.  The following instructions are additionally enabled: \f(CW\*(C`mpy\*(C'\fR,
  \&\f(CW\*(C`mpyu\*(C'\fR, \f(CW\*(C`mpym\*(C'\fR, \f(CW\*(C`mpymu\*(C'\fR, and \f(CW\*(C`mpy_s\*(C'\fR.
! .IP \fB6\fR 4
  .IX Item "6"
  .PD 0
! .IP \fBwlh5\fR 4
  .IX Item "wlh5"
  .PD
  One 32x4 multiplier, blocking,
  sequential.  The following instructions are additionally enabled: \f(CW\*(C`mpy\*(C'\fR,
  \&\f(CW\*(C`mpyu\*(C'\fR, \f(CW\*(C`mpym\*(C'\fR, \f(CW\*(C`mpymu\*(C'\fR, and \f(CW\*(C`mpy_s\*(C'\fR.
! .IP \fB7\fR 4
  .IX Item "7"
  .PD 0
! .IP \fBplus_dmpy\fR 4
  .IX Item "plus_dmpy"
  .PD
! ARC HS SIMD support.
! .IP \fB8\fR 4
  .IX Item "8"
  .PD 0
! .IP \fBplus_macd\fR 4
  .IX Item "plus_macd"
  .PD
! ARC HS SIMD support.
! .IP \fB9\fR 4
  .IX Item "9"
  .PD 0
! .IP \fBplus_qmacw\fR 4
  .IX Item "plus_qmacw"
  .PD
! ARC HS SIMD support.
  .RE
  .RS 4
  .Sp
  This option is only available for ARCv2 cores.
  .RE
! .IP \fB\-mfpu=\fR\fIfpu\fR 4
  .IX Item "-mfpu=fpu"
! Enables support for specific floating\-point hardware extensions for ARCv2
  cores.  Supported values for \fIfpu\fR are:
  .RS 4
! .IP \fBfpus\fR 4
  .IX Item "fpus"
! Enables support for single\-precision floating\-point hardware
  extensions.
! .IP \fBfpud\fR 4
  .IX Item "fpud"
! Enables support for double\-precision floating\-point hardware
! extensions.  The single\-precision floating\-point extension is also
! enabled.  Not available for ARC EM.
! .IP \fBfpuda\fR 4
  .IX Item "fpuda"
! Enables support for double\-precision floating\-point hardware
! extensions using double\-precision assist instructions.  The single\-precision
! floating\-point extension is also enabled.  This option is
! only available for ARC EM.
! .IP \fBfpuda_div\fR 4
  .IX Item "fpuda_div"
! Enables support for double\-precision floating\-point hardware
! extensions using double\-precision assist instructions.
! The single\-precision floating\-point, square\-root, and divide
  extensions are also enabled.  This option is
! only available for ARC EM.
! .IP \fBfpuda_fma\fR 4
  .IX Item "fpuda_fma"
! Enables support for double\-precision floating\-point hardware
! extensions using double\-precision assist instructions.
! The single\-precision floating\-point and fused multiply and add
  hardware extensions are also enabled.  This option is
! only available for ARC EM.
! .IP \fBfpuda_all\fR 4
  .IX Item "fpuda_all"
! Enables support for double\-precision floating\-point hardware
! extensions using double\-precision assist instructions.
! All single\-precision floating\-point hardware extensions are also
! enabled.  This option is only available for ARC EM.
! .IP \fBfpus_div\fR 4
  .IX Item "fpus_div"
! Enables support for single\-precision floating\-point, square\-root and divide
  hardware extensions.
! .IP \fBfpud_div\fR 4
  .IX Item "fpud_div"
! Enables support for double\-precision floating\-point, square\-root and divide
  hardware extensions.  This option
! includes option \fBfpus_div\fR. Not available for ARC EM.
! .IP \fBfpus_fma\fR 4
  .IX Item "fpus_fma"
! Enables support for single\-precision floating\-point and
  fused multiply and add hardware extensions.
! .IP \fBfpud_fma\fR 4
  .IX Item "fpud_fma"
! Enables support for double\-precision floating\-point and
  fused multiply and add hardware extensions.  This option
! includes option \fBfpus_fma\fR.  Not available for ARC EM.
! .IP \fBfpus_all\fR 4
  .IX Item "fpus_all"
! Enables support for all single\-precision floating\-point hardware
  extensions.
! .IP \fBfpud_all\fR 4
  .IX Item "fpud_all"
! Enables support for all single\- and double\-precision floating\-point
! hardware extensions.  Not available for ARC EM.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mirq\-ctrl\-saved=\fR\fIregister\-range\fR\fB,\fR \fIblink\fR\fB,\fR \fIlp_count\fR" 4
  .IX Item "-mirq-ctrl-saved=register-range, blink, lp_count"
! Specifies general\-purposes registers that the processor automatically
! saves/restores on interrupt entry and exit.  \fIregister\-range\fR is
  specified as two registers separated by a dash.  The register range
  always starts with \f(CW\*(C`r0\*(C'\fR, the upper limit is \f(CW\*(C`fp\*(C'\fR register.
  \&\fIblink\fR and \fIlp_count\fR are optional.  This option is only
! valid for ARC EM and ARC HS cores.
! .IP \fB\-mrgf\-banked\-regs=\fR\fInumber\fR 4
  .IX Item "-mrgf-banked-regs=number"
  Specifies the number of registers replicated in second register bank
  on entry to fast interrupt.  Fast interrupts are interrupts with the
! highest priority level P0.  These interrupts save only PC and STATUS32
  registers to avoid memory transactions during interrupt entry and exit
  sequences.  Use this option when you are using fast interrupts in an
! ARC V2 family processor.  Permitted values are 4, 8, 16, and 32.
! .IP \fB\-mlpc\-width=\fR\fIwidth\fR 4
  .IX Item "-mlpc-width=width"
  Specify the width of the \f(CW\*(C`lp_count\*(C'\fR register.  Valid values for
  \&\fIwidth\fR are 8, 16, 20, 24, 28 and 32 bits.  The default width is
  fixed to 32 bits.  If the width is less than 32, the compiler does not
! attempt to transform loops in your program to use the zero\-delay loop
  mechanism unless it is known that the \f(CW\*(C`lp_count\*(C'\fR register can
! hold the required loop\-counter value.  Depending on the width
! specified, the compiler and run\-time library might continue to use the
  loop mechanism for various needs.  This option defines macro
  \&\f(CW\*(C`_\|_ARC_LPC_WIDTH_\|_\*(C'\fR with the value of \fIwidth\fR.
! .IP \fB\-mrf16\fR 4
  .IX Item "-mrf16"
  This option instructs the compiler to generate code for a 16\-entry
  register file.  This option defines the \f(CW\*(C`_\|_ARC_RF16_\|_\*(C'\fR
  preprocessor macro.
! .IP \fB\-mbranch\-index\fR 4
  .IX Item "-mbranch-index"
  Enable use of \f(CW\*(C`bi\*(C'\fR or \f(CW\*(C`bih\*(C'\fR instructions to implement jump
  tables.
  .PP
  The following options are passed through to the assembler, and also
  define preprocessor macro symbols.
! .IP \fB\-mdsp\-packa\fR 4
  .IX Item "-mdsp-packa"
! Passed down to the assembler to enable the DSP Pack A extensions.
  Also sets the preprocessor symbol \f(CW\*(C`_\|_Xdsp_packa\*(C'\fR.  This option is
  deprecated.
! .IP \fB\-mdvbf\fR 4
  .IX Item "-mdvbf"
  Passed down to the assembler to enable the dual Viterbi butterfly
  extension.  Also sets the preprocessor symbol \f(CW\*(C`_\|_Xdvbf\*(C'\fR.  This
  option is deprecated.
! .IP \fB\-mlock\fR 4
  .IX Item "-mlock"
  Passed down to the assembler to enable the locked load/store
  conditional extension.  Also sets the preprocessor symbol
  \&\f(CW\*(C`_\|_Xlock\*(C'\fR.
! .IP \fB\-mmac\-d16\fR 4
  .IX Item "-mmac-d16"
  Passed down to the assembler.  Also sets the preprocessor symbol
  \&\f(CW\*(C`_\|_Xxmac_d16\*(C'\fR.  This option is deprecated.
! .IP \fB\-mmac\-24\fR 4
  .IX Item "-mmac-24"
  Passed down to the assembler.  Also sets the preprocessor symbol
  \&\f(CW\*(C`_\|_Xxmac_24\*(C'\fR.  This option is deprecated.
! .IP \fB\-mrtsc\fR 4
  .IX Item "-mrtsc"
! Passed down to the assembler to enable the 64\-bit time\-stamp counter
  extension instruction.  Also sets the preprocessor symbol
  \&\f(CW\*(C`_\|_Xrtsc\*(C'\fR.  This option is deprecated.
! .IP \fB\-mswape\fR 4
  .IX Item "-mswape"
  Passed down to the assembler to enable the swap byte ordering
  extension instruction.  Also sets the preprocessor symbol
  \&\f(CW\*(C`_\|_Xswape\*(C'\fR.
! .IP \fB\-mtelephony\fR 4
  .IX Item "-mtelephony"
! Passed down to the assembler to enable dual\- and single\-operand
  instructions for telephony.  Also sets the preprocessor symbol
  \&\f(CW\*(C`_\|_Xtelephony\*(C'\fR.  This option is deprecated.
! .IP \fB\-mxy\fR 4
  .IX Item "-mxy"
! Passed down to the assembler to enable the XY memory extension.  Also
  sets the preprocessor symbol \f(CW\*(C`_\|_Xxy\*(C'\fR.
  .PP
  The following options control how the assembly code is annotated:
! .IP \fB\-misize\fR 4
  .IX Item "-misize"
  Annotate assembler instructions with estimated addresses.
! .IP \fB\-mannotate\-align\fR 4
  .IX Item "-mannotate-align"
  Does nothing.  Preserved for backward compatibility.
  .PP
  The following options are passed through to the linker:
! .IP \fB\-marclinux\fR 4
  .IX Item "-marclinux"
  Passed through to the linker, to specify use of the \f(CW\*(C`arclinux\*(C'\fR emulation.
  This option is enabled by default in tool chains built for
  \&\f(CW\*(C`arc\-linux\-uclibc\*(C'\fR and \f(CW\*(C`arceb\-linux\-uclibc\*(C'\fR targets
  when profiling is not requested.
! .IP \fB\-marclinux_prof\fR 4
  .IX Item "-marclinux_prof"
  Passed through to the linker, to specify use of the
  \&\f(CW\*(C`arclinux_prof\*(C'\fR emulation.  This option is enabled by default in
*************** tool chains built for \f(CW\*(C`arc\-lin
*** 22402,22471 ****
  \&\f(CW\*(C`arceb\-linux\-uclibc\*(C'\fR targets when profiling is requested.
  .PP
  The following options control the semantics of generated code:
! .IP "\fB\-mlong\-calls\fR" 4
  .IX Item "-mlong-calls"
  Generate calls as register indirect calls, thus providing access
  to the full 32\-bit address range.
! .IP "\fB\-mmedium\-calls\fR" 4
  .IX Item "-mmedium-calls"
! Don't use less than 25\-bit addressing range for calls, which is the
! offset available for an unconditional branch-and-link
  instruction.  Conditional execution of function calls is suppressed, to
  allow use of the 25\-bit range, rather than the 21\-bit range with
! conditional branch-and-link.  This is the default for tool chains built
  for \f(CW\*(C`arc\-linux\-uclibc\*(C'\fR and \f(CW\*(C`arceb\-linux\-uclibc\*(C'\fR targets.
  .IP "\fB\-G\fR \fInum\fR" 4
  .IX Item "-G num"
! Put definitions of externally-visible data in a small data section if
  that data is no bigger than \fInum\fR bytes.  The default value of
! \&\fInum\fR is 4 for any \s-1ARC\s0 configuration, or 8 when we have double
  load/store operations.
! .IP "\fB\-mno\-sdata\fR" 4
  .IX Item "-mno-sdata"
  Do not generate sdata references.  This is the default for tool chains
  built for \f(CW\*(C`arc\-linux\-uclibc\*(C'\fR and \f(CW\*(C`arceb\-linux\-uclibc\*(C'\fR
  targets.
! .IP "\fB\-mvolatile\-cache\fR" 4
  .IX Item "-mvolatile-cache"
  Use ordinarily cached memory accesses for volatile references.  This is the
  default.
! .IP "\fB\-mno\-volatile\-cache\fR" 4
  .IX Item "-mno-volatile-cache"
  Enable cache bypass for volatile references.
  .PP
  The following options fine tune code generation:
! .IP "\fB\-malign\-call\fR" 4
  .IX Item "-malign-call"
  Does nothing.  Preserved for backward compatibility.
! .IP "\fB\-mauto\-modify\-reg\fR" 4
  .IX Item "-mauto-modify-reg"
  Enable the use of pre/post modify with register displacement.
! .IP "\fB\-mbbit\-peephole\fR" 4
  .IX Item "-mbbit-peephole"
  Does nothing.  Preserved for backward compatibility.
! .IP "\fB\-mno\-brcc\fR" 4
  .IX Item "-mno-brcc"
! This option disables a target-specific pass in \fIarc_reorg\fR to
! generate compare-and-branch (\f(CW\*(C`br\f(CIcc\f(CW\*(C'\fR) instructions.
  It has no effect on
  generation of these instructions driven by the combiner pass.
! .IP "\fB\-mcase\-vector\-pcrel\fR" 4
  .IX Item "-mcase-vector-pcrel"
! Use PC-relative switch case tables to enable case table shortening.
  This is the default for \fB\-Os\fR.
! .IP "\fB\-mcompact\-casesi\fR" 4
  .IX Item "-mcompact-casesi"
  Enable compact \f(CW\*(C`casesi\*(C'\fR pattern.  This is the default for \fB\-Os\fR,
  and only available for ARCv1 cores.  This option is deprecated.
! .IP "\fB\-mno\-cond\-exec\fR" 4
  .IX Item "-mno-cond-exec"
! Disable the ARCompact-specific pass to generate conditional
  execution instructions.
  .Sp
  Due to delay slot scheduling and interactions between operand numbers,
  literal sizes, instruction lengths, and the support for conditional execution,
! the target-independent pass to generate conditional execution is often lacking,
! so the \s-1ARC\s0 port has kept a special pass around that tries to find more
  conditional execution generation opportunities after register allocation,
  branch shortening, and delay slot scheduling have been done.  This pass
  generally, but not always, improves performance and code size, at the cost of
--- 22337,22406 ----
  \&\f(CW\*(C`arceb\-linux\-uclibc\*(C'\fR targets when profiling is requested.
  .PP
  The following options control the semantics of generated code:
! .IP \fB\-mlong\-calls\fR 4
  .IX Item "-mlong-calls"
  Generate calls as register indirect calls, thus providing access
  to the full 32\-bit address range.
! .IP \fB\-mmedium\-calls\fR 4
  .IX Item "-mmedium-calls"
! Don\*(Aqt use less than 25\-bit addressing range for calls, which is the
! offset available for an unconditional branch\-and\-link
  instruction.  Conditional execution of function calls is suppressed, to
  allow use of the 25\-bit range, rather than the 21\-bit range with
! conditional branch\-and\-link.  This is the default for tool chains built
  for \f(CW\*(C`arc\-linux\-uclibc\*(C'\fR and \f(CW\*(C`arceb\-linux\-uclibc\*(C'\fR targets.
  .IP "\fB\-G\fR \fInum\fR" 4
  .IX Item "-G num"
! Put definitions of externally\-visible data in a small data section if
  that data is no bigger than \fInum\fR bytes.  The default value of
! \&\fInum\fR is 4 for any ARC configuration, or 8 when we have double
  load/store operations.
! .IP \fB\-mno\-sdata\fR 4
  .IX Item "-mno-sdata"
  Do not generate sdata references.  This is the default for tool chains
  built for \f(CW\*(C`arc\-linux\-uclibc\*(C'\fR and \f(CW\*(C`arceb\-linux\-uclibc\*(C'\fR
  targets.
! .IP \fB\-mvolatile\-cache\fR 4
  .IX Item "-mvolatile-cache"
  Use ordinarily cached memory accesses for volatile references.  This is the
  default.
! .IP \fB\-mno\-volatile\-cache\fR 4
  .IX Item "-mno-volatile-cache"
  Enable cache bypass for volatile references.
  .PP
  The following options fine tune code generation:
! .IP \fB\-malign\-call\fR 4
  .IX Item "-malign-call"
  Does nothing.  Preserved for backward compatibility.
! .IP \fB\-mauto\-modify\-reg\fR 4
  .IX Item "-mauto-modify-reg"
  Enable the use of pre/post modify with register displacement.
! .IP \fB\-mbbit\-peephole\fR 4
  .IX Item "-mbbit-peephole"
  Does nothing.  Preserved for backward compatibility.
! .IP \fB\-mno\-brcc\fR 4
  .IX Item "-mno-brcc"
! This option disables a target\-specific pass in \fIarc_reorg\fR to
! generate compare\-and\-branch (\f(CW\*(C`br\fR\f(CIcc\fR\f(CW\*(C'\fR) instructions.
  It has no effect on
  generation of these instructions driven by the combiner pass.
! .IP \fB\-mcase\-vector\-pcrel\fR 4
  .IX Item "-mcase-vector-pcrel"
! Use PC\-relative switch case tables to enable case table shortening.
  This is the default for \fB\-Os\fR.
! .IP \fB\-mcompact\-casesi\fR 4
  .IX Item "-mcompact-casesi"
  Enable compact \f(CW\*(C`casesi\*(C'\fR pattern.  This is the default for \fB\-Os\fR,
  and only available for ARCv1 cores.  This option is deprecated.
! .IP \fB\-mno\-cond\-exec\fR 4
  .IX Item "-mno-cond-exec"
! Disable the ARCompact\-specific pass to generate conditional
  execution instructions.
  .Sp
  Due to delay slot scheduling and interactions between operand numbers,
  literal sizes, instruction lengths, and the support for conditional execution,
! the target\-independent pass to generate conditional execution is often lacking,
! so the ARC port has kept a special pass around that tries to find more
  conditional execution generation opportunities after register allocation,
  branch shortening, and delay slot scheduling have been done.  This pass
  generally, but not always, improves performance and code size, at the cost of
*************** extra compilation time, which is why the
*** 22473,22503 ****
  If you have a problem with call instructions exceeding their allowable
  offset range because they are conditionalized, you should consider using
  \&\fB\-mmedium\-calls\fR instead.
! .IP "\fB\-mearly\-cbranchsi\fR" 4
  .IX Item "-mearly-cbranchsi"
! Enable pre-reload use of the \f(CW\*(C`cbranchsi\*(C'\fR pattern.
! .IP "\fB\-mexpand\-adddi\fR" 4
  .IX Item "-mexpand-adddi"
! Expand \f(CW\*(C`adddi3\*(C'\fR and \f(CW\*(C`subdi3\*(C'\fR at \s-1RTL\s0 generation time into
  \&\f(CW\*(C`add.f\*(C'\fR, \f(CW\*(C`adc\*(C'\fR etc.  This option is deprecated.
! .IP "\fB\-mindexed\-loads\fR" 4
  .IX Item "-mindexed-loads"
  Enable the use of indexed loads.  This can be problematic because some
  optimizers then assume that indexed stores exist, which is not
  the case.
! .IP "\fB\-mlra\fR" 4
  .IX Item "-mlra"
  Does nothing.  Preserved for backward compatibility.
! .IP "\fB\-mlra\-priority\-none\fR" 4
  .IX Item "-mlra-priority-none"
! Don't indicate any priority for target registers.
! .IP "\fB\-mlra\-priority\-compact\fR" 4
  .IX Item "-mlra-priority-compact"
  Indicate target register priority for r0..r3 / r12..r15.
! .IP "\fB\-mlra\-priority\-noncompact\fR" 4
  .IX Item "-mlra-priority-noncompact"
  Reduce target register priority for r0..r3 / r12..r15.
! .IP "\fB\-mmillicode\fR" 4
  .IX Item "-mmillicode"
  When optimizing for size (using \fB\-Os\fR), prologues and epilogues
  that have to save or restore a large number of registers are often
--- 22408,22438 ----
  If you have a problem with call instructions exceeding their allowable
  offset range because they are conditionalized, you should consider using
  \&\fB\-mmedium\-calls\fR instead.
! .IP \fB\-mearly\-cbranchsi\fR 4
  .IX Item "-mearly-cbranchsi"
! Enable pre\-reload use of the \f(CW\*(C`cbranchsi\*(C'\fR pattern.
! .IP \fB\-mexpand\-adddi\fR 4
  .IX Item "-mexpand-adddi"
! Expand \f(CW\*(C`adddi3\*(C'\fR and \f(CW\*(C`subdi3\*(C'\fR at RTL generation time into
  \&\f(CW\*(C`add.f\*(C'\fR, \f(CW\*(C`adc\*(C'\fR etc.  This option is deprecated.
! .IP \fB\-mindexed\-loads\fR 4
  .IX Item "-mindexed-loads"
  Enable the use of indexed loads.  This can be problematic because some
  optimizers then assume that indexed stores exist, which is not
  the case.
! .IP \fB\-mlra\fR 4
  .IX Item "-mlra"
  Does nothing.  Preserved for backward compatibility.
! .IP \fB\-mlra\-priority\-none\fR 4
  .IX Item "-mlra-priority-none"
! Don\*(Aqt indicate any priority for target registers.
! .IP \fB\-mlra\-priority\-compact\fR 4
  .IX Item "-mlra-priority-compact"
  Indicate target register priority for r0..r3 / r12..r15.
! .IP \fB\-mlra\-priority\-noncompact\fR 4
  .IX Item "-mlra-priority-noncompact"
  Reduce target register priority for r0..r3 / r12..r15.
! .IP \fB\-mmillicode\fR 4
  .IX Item "-mmillicode"
  When optimizing for size (using \fB\-Os\fR), prologues and epilogues
  that have to save or restore a large number of registers are often
*************** referred to as a \fImillicode\fR call.
*** 22506,22544 ****
  performance issues, and/or cause linking issues when linking in a
  nonstandard way, this option is provided to turn on or off millicode
  call generation.
! .IP "\fB\-mcode\-density\-frame\fR" 4
  .IX Item "-mcode-density-frame"
  This option enable the compiler to emit \f(CW\*(C`enter\*(C'\fR and \f(CW\*(C`leave\*(C'\fR
  instructions.  These instructions are only valid for CPUs with
! code-density feature.
! .IP "\fB\-mmixed\-code\fR" 4
  .IX Item "-mmixed-code"
  Does nothing.  Preserved for backward compatibility.
! .IP "\fB\-mq\-class\fR" 4
  .IX Item "-mq-class"
  Ths option is deprecated.  Enable \fBq\fR instruction alternatives.
  This is the default for \fB\-Os\fR.
! .IP "\fB\-mRcq\fR" 4
  .IX Item "-mRcq"
  Does nothing.  Preserved for backward compatibility.
! .IP "\fB\-mRcw\fR" 4
  .IX Item "-mRcw"
  Does nothing.  Preserved for backward compatibility.
! .IP "\fB\-msize\-level=\fR\fIlevel\fR" 4
  .IX Item "-msize-level=level"
! Fine-tune size optimization with regards to instruction lengths and alignment.
  The recognized values for \fIlevel\fR are:
  .RS 4
! .IP "\fB0\fR" 4
  .IX Item "0"
  No size optimization.  This level is deprecated and treated like \fB1\fR.
! .IP "\fB1\fR" 4
  .IX Item "1"
  Short instructions are used opportunistically.
! .IP "\fB2\fR" 4
  .IX Item "2"
  In addition, alignment of loops and of code after barriers are dropped.
! .IP "\fB3\fR" 4
  .IX Item "3"
  In addition, optional data alignment is dropped, and the option \fBOs\fR is enabled.
  .RE
--- 22441,22479 ----
  performance issues, and/or cause linking issues when linking in a
  nonstandard way, this option is provided to turn on or off millicode
  call generation.
! .IP \fB\-mcode\-density\-frame\fR 4
  .IX Item "-mcode-density-frame"
  This option enable the compiler to emit \f(CW\*(C`enter\*(C'\fR and \f(CW\*(C`leave\*(C'\fR
  instructions.  These instructions are only valid for CPUs with
! code\-density feature.
! .IP \fB\-mmixed\-code\fR 4
  .IX Item "-mmixed-code"
  Does nothing.  Preserved for backward compatibility.
! .IP \fB\-mq\-class\fR 4
  .IX Item "-mq-class"
  Ths option is deprecated.  Enable \fBq\fR instruction alternatives.
  This is the default for \fB\-Os\fR.
! .IP \fB\-mRcq\fR 4
  .IX Item "-mRcq"
  Does nothing.  Preserved for backward compatibility.
! .IP \fB\-mRcw\fR 4
  .IX Item "-mRcw"
  Does nothing.  Preserved for backward compatibility.
! .IP \fB\-msize\-level=\fR\fIlevel\fR 4
  .IX Item "-msize-level=level"
! Fine\-tune size optimization with regards to instruction lengths and alignment.
  The recognized values for \fIlevel\fR are:
  .RS 4
! .IP \fB0\fR 4
  .IX Item "0"
  No size optimization.  This level is deprecated and treated like \fB1\fR.
! .IP \fB1\fR 4
  .IX Item "1"
  Short instructions are used opportunistically.
! .IP \fB2\fR 4
  .IX Item "2"
  In addition, alignment of loops and of code after barriers are dropped.
! .IP \fB3\fR 4
  .IX Item "3"
  In addition, optional data alignment is dropped, and the option \fBOs\fR is enabled.
  .RE
*************** In addition, optional data alignment is
*** 22547,22735 ****
  This defaults to \fB3\fR when \fB\-Os\fR is in effect.  Otherwise,
  the behavior when this is not set is equivalent to level \fB1\fR.
  .RE
! .IP "\fB\-mtune=\fR\fIcpu\fR" 4
  .IX Item "-mtune=cpu"
  Set instruction scheduling parameters for \fIcpu\fR, overriding any implied
  by \fB\-mcpu=\fR.
  .Sp
  Supported values for \fIcpu\fR are
  .RS 4
! .IP "\fB\s-1ARC600\s0\fR" 4
  .IX Item "ARC600"
! Tune for \s-1ARC600 CPU.\s0
! .IP "\fB\s-1ARC601\s0\fR" 4
  .IX Item "ARC601"
! Tune for \s-1ARC601 CPU.\s0
! .IP "\fB\s-1ARC700\s0\fR" 4
  .IX Item "ARC700"
! Tune for \s-1ARC700 CPU\s0 with standard multiplier block.
! .IP "\fBARC700\-xmac\fR" 4
  .IX Item "ARC700-xmac"
! Tune for \s-1ARC700 CPU\s0 with \s-1XMAC\s0 block.
! .IP "\fB\s-1ARC725D\s0\fR" 4
  .IX Item "ARC725D"
! Tune for \s-1ARC725D CPU.\s0
! .IP "\fB\s-1ARC750D\s0\fR" 4
  .IX Item "ARC750D"
! Tune for \s-1ARC750D CPU.\s0
! .IP "\fBcore3\fR" 4
  .IX Item "core3"
! Tune for ARCv2 core3 type \s-1CPU.\s0  This option enable usage of
  \&\f(CW\*(C`dbnz\*(C'\fR instruction.
! .IP "\fBrelease31a\fR" 4
  .IX Item "release31a"
  Tune for ARC4x release 3.10a.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mmultcost=\fR\fInum\fR" 4
  .IX Item "-mmultcost=num"
  Cost to assume for a multiply instruction, with \fB4\fR being equal to a
  normal instruction.
! .IP "\fB\-munalign\-prob\-threshold=\fR\fIprobability\fR" 4
  .IX Item "-munalign-prob-threshold=probability"
  Does nothing.  Preserved for backward compatibility.
  .PP
  The following options are maintained for backward compatibility, but
  are now deprecated and will be removed in a future release:
! .IP "\fB\-margonaut\fR" 4
  .IX Item "-margonaut"
! Obsolete \s-1FPX.\s0
! .IP "\fB\-mbig\-endian\fR" 4
  .IX Item "-mbig-endian"
  .PD 0
! .IP "\fB\-EB\fR" 4
  .IX Item "-EB"
  .PD
! Compile code for big-endian targets.  Use of these options is now
! deprecated.  Big-endian code is supported by configuring \s-1GCC\s0 to build
  \&\f(CW\*(C`arceb\-elf32\*(C'\fR and \f(CW\*(C`arceb\-linux\-uclibc\*(C'\fR targets,
  for which big endian is the default.
! .IP "\fB\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
  .PD 0
! .IP "\fB\-EL\fR" 4
  .IX Item "-EL"
  .PD
! Compile code for little-endian targets.  Use of these options is now
! deprecated.  Little-endian code is supported by configuring \s-1GCC\s0 to build
  \&\f(CW\*(C`arc\-elf32\*(C'\fR and \f(CW\*(C`arc\-linux\-uclibc\*(C'\fR targets,
  for which little endian is the default.
! .IP "\fB\-mbarrel_shifter\fR" 4
  .IX Item "-mbarrel_shifter"
  Replaced by \fB\-mbarrel\-shifter\fR.
! .IP "\fB\-mdpfp_compact\fR" 4
  .IX Item "-mdpfp_compact"
  Replaced by \fB\-mdpfp\-compact\fR.
! .IP "\fB\-mdpfp_fast\fR" 4
  .IX Item "-mdpfp_fast"
  Replaced by \fB\-mdpfp\-fast\fR.
! .IP "\fB\-mdsp_packa\fR" 4
  .IX Item "-mdsp_packa"
  Replaced by \fB\-mdsp\-packa\fR.
! .IP "\fB\-mEA\fR" 4
  .IX Item "-mEA"
  Replaced by \fB\-mea\fR.
! .IP "\fB\-mmac_24\fR" 4
  .IX Item "-mmac_24"
  Replaced by \fB\-mmac\-24\fR.
! .IP "\fB\-mmac_d16\fR" 4
  .IX Item "-mmac_d16"
  Replaced by \fB\-mmac\-d16\fR.
! .IP "\fB\-mspfp_compact\fR" 4
  .IX Item "-mspfp_compact"
  Replaced by \fB\-mspfp\-compact\fR.
! .IP "\fB\-mspfp_fast\fR" 4
  .IX Item "-mspfp_fast"
  Replaced by \fB\-mspfp\-fast\fR.
! .IP "\fB\-mtune=\fR\fIcpu\fR" 4
  .IX Item "-mtune=cpu"
  Values \fBarc600\fR, \fBarc601\fR, \fBarc700\fR and
! \&\fBarc700\-xmac\fR for \fIcpu\fR are replaced by \fB\s-1ARC600\s0\fR,
! \&\fB\s-1ARC601\s0\fR, \fB\s-1ARC700\s0\fR and \fBARC700\-xmac\fR respectively.
! .IP "\fB\-multcost=\fR\fInum\fR" 4
  .IX Item "-multcost=num"
  Replaced by \fB\-mmultcost\fR.
  .PP
! \fI\s-1ARM\s0 Options\fR
  .IX Subsection "ARM Options"
  .PP
! These \fB\-m\fR options are defined for the \s-1ARM\s0 port:
! .IP "\fB\-mabi=\fR\fIname\fR" 4
  .IX Item "-mabi=name"
! Generate code for the specified \s-1ABI.\s0  Permissible values are: \fBapcs-gnu\fR,
! \&\fBatpcs\fR, \fBaapcs\fR, \fBaapcs-linux\fR and \fBiwmmxt\fR.
! .IP "\fB\-mapcs\-frame\fR" 4
  .IX Item "-mapcs-frame"
! Generate a stack frame that is compliant with the \s-1ARM\s0 Procedure Call
  Standard for all functions, even if this is not strictly necessary for
  correct execution of the code.  Specifying \fB\-fomit\-frame\-pointer\fR
  with this option causes the stack frames not to be generated for
  leaf functions.  The default is \fB\-mno\-apcs\-frame\fR.
  This option is deprecated.
! .IP "\fB\-mapcs\fR" 4
  .IX Item "-mapcs"
  This is a synonym for \fB\-mapcs\-frame\fR and is deprecated.
! .IP "\fB\-mthumb\-interwork\fR" 4
  .IX Item "-mthumb-interwork"
! Generate code that supports calling between the \s-1ARM\s0 and Thumb
  instruction sets.  Without this option, on pre\-v5 architectures, the
  two instruction sets cannot be reliably used inside one program.  The
  default is \fB\-mno\-thumb\-interwork\fR, since slightly larger code
! is generated when \fB\-mthumb\-interwork\fR is specified.  In \s-1AAPCS\s0
  configurations this option is meaningless.
! .IP "\fB\-mno\-sched\-prolog\fR" 4
  .IX Item "-mno-sched-prolog"
  Prevent the reordering of instructions in the function prologue, or the
! merging of those instruction with the instructions in the function's
  body.  This means that all functions start with a recognizable set
  of instructions (or in fact one of a choice from a small set of
  different function prologues), and this information can be used to
  locate the start of functions inside an executable piece of code.  The
  default is \fB\-msched\-prolog\fR.
! .IP "\fB\-mfloat\-abi=\fR\fIname\fR" 4
  .IX Item "-mfloat-abi=name"
! Specifies which floating-point \s-1ABI\s0 to use.  Permissible values
  are: \fBsoft\fR, \fBsoftfp\fR and \fBhard\fR.
  .Sp
! Specifying \fBsoft\fR causes \s-1GCC\s0 to generate output containing
! library calls for floating-point operations.
! \&\fBsoftfp\fR allows the generation of code using hardware floating-point
! instructions, but still uses the soft-float calling conventions.
! \&\fBhard\fR allows generation of floating-point instructions
! and uses FPU-specific calling conventions.
  .Sp
  The default depends on the specific target configuration.  Note that
! the hard-float and soft-float ABIs are not link-compatible; you must
! compile your entire program with the same \s-1ABI,\s0 and link with a
  compatible set of libraries.
! .IP "\fB\-mgeneral\-regs\-only\fR" 4
  .IX Item "-mgeneral-regs-only"
! Generate code which uses only the general-purpose registers.  This will prevent
! the compiler from using floating-point and Advanced \s-1SIMD\s0 registers but will not
  impose any restrictions on the assembler.
! .IP "\fB\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
! Generate code for a processor running in little-endian mode.  This is
  the default for all standard configurations.
! .IP "\fB\-mbig\-endian\fR" 4
  .IX Item "-mbig-endian"
! Generate code for a processor running in big-endian mode; the default is
! to compile code for a little-endian processor.
! .IP "\fB\-mbe8\fR" 4
  .IX Item "-mbe8"
  .PD 0
! .IP "\fB\-mbe32\fR" 4
  .IX Item "-mbe32"
  .PD
! When linking a big-endian image select between \s-1BE8\s0 and \s-1BE32\s0 formats.
! The option has no effect for little-endian images and is ignored.  The
  default is dependent on the selected target architecture.  For ARMv6
! and later architectures the default is \s-1BE8,\s0 for older architectures
! the default is \s-1BE32.\s0  \s-1BE32\s0 format has been deprecated by \s-1ARM.\s0
! .IP "\fB\-march=\fR\fIname\fR[\fB+extension...\fR]" 4
  .IX Item "-march=name[+extension...]"
! This specifies the name of the target \s-1ARM\s0 architecture.  \s-1GCC\s0 uses this
  name to determine what kind of instructions it can emit when generating
  assembly code.  This option can be used in conjunction with or instead
  of the \fB\-mcpu=\fR option.
--- 22482,22670 ----
  This defaults to \fB3\fR when \fB\-Os\fR is in effect.  Otherwise,
  the behavior when this is not set is equivalent to level \fB1\fR.
  .RE
! .IP \fB\-mtune=\fR\fIcpu\fR 4
  .IX Item "-mtune=cpu"
  Set instruction scheduling parameters for \fIcpu\fR, overriding any implied
  by \fB\-mcpu=\fR.
  .Sp
  Supported values for \fIcpu\fR are
  .RS 4
! .IP \fBARC600\fR 4
  .IX Item "ARC600"
! Tune for ARC600 CPU.
! .IP \fBARC601\fR 4
  .IX Item "ARC601"
! Tune for ARC601 CPU.
! .IP \fBARC700\fR 4
  .IX Item "ARC700"
! Tune for ARC700 CPU with standard multiplier block.
! .IP \fBARC700\-xmac\fR 4
  .IX Item "ARC700-xmac"
! Tune for ARC700 CPU with XMAC block.
! .IP \fBARC725D\fR 4
  .IX Item "ARC725D"
! Tune for ARC725D CPU.
! .IP \fBARC750D\fR 4
  .IX Item "ARC750D"
! Tune for ARC750D CPU.
! .IP \fBcore3\fR 4
  .IX Item "core3"
! Tune for ARCv2 core3 type CPU.  This option enable usage of
  \&\f(CW\*(C`dbnz\*(C'\fR instruction.
! .IP \fBrelease31a\fR 4
  .IX Item "release31a"
  Tune for ARC4x release 3.10a.
  .RE
  .RS 4
  .RE
! .IP \fB\-mmultcost=\fR\fInum\fR 4
  .IX Item "-mmultcost=num"
  Cost to assume for a multiply instruction, with \fB4\fR being equal to a
  normal instruction.
! .IP \fB\-munalign\-prob\-threshold=\fR\fIprobability\fR 4
  .IX Item "-munalign-prob-threshold=probability"
  Does nothing.  Preserved for backward compatibility.
  .PP
  The following options are maintained for backward compatibility, but
  are now deprecated and will be removed in a future release:
! .IP \fB\-margonaut\fR 4
  .IX Item "-margonaut"
! Obsolete FPX.
! .IP \fB\-mbig\-endian\fR 4
  .IX Item "-mbig-endian"
  .PD 0
! .IP \fB\-EB\fR 4
  .IX Item "-EB"
  .PD
! Compile code for big\-endian targets.  Use of these options is now
! deprecated.  Big\-endian code is supported by configuring GCC to build
  \&\f(CW\*(C`arceb\-elf32\*(C'\fR and \f(CW\*(C`arceb\-linux\-uclibc\*(C'\fR targets,
  for which big endian is the default.
! .IP \fB\-mlittle\-endian\fR 4
  .IX Item "-mlittle-endian"
  .PD 0
! .IP \fB\-EL\fR 4
  .IX Item "-EL"
  .PD
! Compile code for little\-endian targets.  Use of these options is now
! deprecated.  Little\-endian code is supported by configuring GCC to build
  \&\f(CW\*(C`arc\-elf32\*(C'\fR and \f(CW\*(C`arc\-linux\-uclibc\*(C'\fR targets,
  for which little endian is the default.
! .IP \fB\-mbarrel_shifter\fR 4
  .IX Item "-mbarrel_shifter"
  Replaced by \fB\-mbarrel\-shifter\fR.
! .IP \fB\-mdpfp_compact\fR 4
  .IX Item "-mdpfp_compact"
  Replaced by \fB\-mdpfp\-compact\fR.
! .IP \fB\-mdpfp_fast\fR 4
  .IX Item "-mdpfp_fast"
  Replaced by \fB\-mdpfp\-fast\fR.
! .IP \fB\-mdsp_packa\fR 4
  .IX Item "-mdsp_packa"
  Replaced by \fB\-mdsp\-packa\fR.
! .IP \fB\-mEA\fR 4
  .IX Item "-mEA"
  Replaced by \fB\-mea\fR.
! .IP \fB\-mmac_24\fR 4
  .IX Item "-mmac_24"
  Replaced by \fB\-mmac\-24\fR.
! .IP \fB\-mmac_d16\fR 4
  .IX Item "-mmac_d16"
  Replaced by \fB\-mmac\-d16\fR.
! .IP \fB\-mspfp_compact\fR 4
  .IX Item "-mspfp_compact"
  Replaced by \fB\-mspfp\-compact\fR.
! .IP \fB\-mspfp_fast\fR 4
  .IX Item "-mspfp_fast"
  Replaced by \fB\-mspfp\-fast\fR.
! .IP \fB\-mtune=\fR\fIcpu\fR 4
  .IX Item "-mtune=cpu"
  Values \fBarc600\fR, \fBarc601\fR, \fBarc700\fR and
! \&\fBarc700\-xmac\fR for \fIcpu\fR are replaced by \fBARC600\fR,
! \&\fBARC601\fR, \fBARC700\fR and \fBARC700\-xmac\fR respectively.
! .IP \fB\-multcost=\fR\fInum\fR 4
  .IX Item "-multcost=num"
  Replaced by \fB\-mmultcost\fR.
  .PP
! \fIARM Options\fR
  .IX Subsection "ARM Options"
  .PP
! These \fB\-m\fR options are defined for the ARM port:
! .IP \fB\-mabi=\fR\fIname\fR 4
  .IX Item "-mabi=name"
! Generate code for the specified ABI.  Permissible values are: \fBapcs\-gnu\fR,
! \&\fBatpcs\fR, \fBaapcs\fR, \fBaapcs\-linux\fR and \fBiwmmxt\fR.
! .IP \fB\-mapcs\-frame\fR 4
  .IX Item "-mapcs-frame"
! Generate a stack frame that is compliant with the ARM Procedure Call
  Standard for all functions, even if this is not strictly necessary for
  correct execution of the code.  Specifying \fB\-fomit\-frame\-pointer\fR
  with this option causes the stack frames not to be generated for
  leaf functions.  The default is \fB\-mno\-apcs\-frame\fR.
  This option is deprecated.
! .IP \fB\-mapcs\fR 4
  .IX Item "-mapcs"
  This is a synonym for \fB\-mapcs\-frame\fR and is deprecated.
! .IP \fB\-mthumb\-interwork\fR 4
  .IX Item "-mthumb-interwork"
! Generate code that supports calling between the ARM and Thumb
  instruction sets.  Without this option, on pre\-v5 architectures, the
  two instruction sets cannot be reliably used inside one program.  The
  default is \fB\-mno\-thumb\-interwork\fR, since slightly larger code
! is generated when \fB\-mthumb\-interwork\fR is specified.  In AAPCS
  configurations this option is meaningless.
! .IP \fB\-mno\-sched\-prolog\fR 4
  .IX Item "-mno-sched-prolog"
  Prevent the reordering of instructions in the function prologue, or the
! merging of those instruction with the instructions in the function\*(Aqs
  body.  This means that all functions start with a recognizable set
  of instructions (or in fact one of a choice from a small set of
  different function prologues), and this information can be used to
  locate the start of functions inside an executable piece of code.  The
  default is \fB\-msched\-prolog\fR.
! .IP \fB\-mfloat\-abi=\fR\fIname\fR 4
  .IX Item "-mfloat-abi=name"
! Specifies which floating\-point ABI to use.  Permissible values
  are: \fBsoft\fR, \fBsoftfp\fR and \fBhard\fR.
  .Sp
! Specifying \fBsoft\fR causes GCC to generate output containing
! library calls for floating\-point operations.
! \&\fBsoftfp\fR allows the generation of code using hardware floating\-point
! instructions, but still uses the soft\-float calling conventions.
! \&\fBhard\fR allows generation of floating\-point instructions
! and uses FPU\-specific calling conventions.
  .Sp
  The default depends on the specific target configuration.  Note that
! the hard\-float and soft\-float ABIs are not link\-compatible; you must
! compile your entire program with the same ABI, and link with a
  compatible set of libraries.
! .IP \fB\-mgeneral\-regs\-only\fR 4
  .IX Item "-mgeneral-regs-only"
! Generate code which uses only the general\-purpose registers.  This will prevent
! the compiler from using floating\-point and Advanced SIMD registers but will not
  impose any restrictions on the assembler.
! .IP \fB\-mlittle\-endian\fR 4
  .IX Item "-mlittle-endian"
! Generate code for a processor running in little\-endian mode.  This is
  the default for all standard configurations.
! .IP \fB\-mbig\-endian\fR 4
  .IX Item "-mbig-endian"
! Generate code for a processor running in big\-endian mode; the default is
! to compile code for a little\-endian processor.
! .IP \fB\-mbe8\fR 4
  .IX Item "-mbe8"
  .PD 0
! .IP \fB\-mbe32\fR 4
  .IX Item "-mbe32"
  .PD
! When linking a big\-endian image select between BE8 and BE32 formats.
! The option has no effect for little\-endian images and is ignored.  The
  default is dependent on the selected target architecture.  For ARMv6
! and later architectures the default is BE8, for older architectures
! the default is BE32.  BE32 format has been deprecated by ARM.
! .IP \fB\-march=\fR\fIname\fR[\fB+extension...\fR] 4
  .IX Item "-march=name[+extension...]"
! This specifies the name of the target ARM architecture.  GCC uses this
  name to determine what kind of instructions it can emit when generating
  assembly code.  This option can be used in conjunction with or instead
  of the \fB\-mcpu=\fR option.
*************** Most extension names are generically nam
*** 22775,23321 ****
  dependent upon the architecture to which it is applied.  For example,
  the \fB+simd\fR option can be applied to both \fBarmv7\-a\fR and
  \&\fBarmv8\-a\fR architectures, but will enable the original ARMv7\-A
! Advanced \s-1SIMD\s0 (Neon) extensions for \fBarmv7\-a\fR and the ARMv8\-A
  variant for \fBarmv8\-a\fR.
  .Sp
  The table below lists the supported extensions for each architecture.
  Architectures not mentioned do not support any extensions.
  .RS 4
! .IP "\fBarmv5te\fR" 4
  .IX Item "armv5te"
  .PD 0
! .IP "\fBarmv6\fR" 4
  .IX Item "armv6"
! .IP "\fBarmv6j\fR" 4
  .IX Item "armv6j"
! .IP "\fBarmv6k\fR" 4
  .IX Item "armv6k"
! .IP "\fBarmv6kz\fR" 4
  .IX Item "armv6kz"
! .IP "\fBarmv6t2\fR" 4
  .IX Item "armv6t2"
! .IP "\fBarmv6z\fR" 4
  .IX Item "armv6z"
! .IP "\fBarmv6zk\fR" 4
  .IX Item "armv6zk"
  .RS 4
! .IP "\fB+fp\fR" 4
  .IX Item "+fp"
  .PD
! The VFPv2 floating-point instructions.  The extension \fB+vfpv2\fR can be
  used as an alias for this extension.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point instructions.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv7\fR" 4
  .IX Item "armv7"
  The common subset of the ARMv7\-A, ARMv7\-R and ARMv7\-M architectures.
  .RS 4
! .IP "\fB+fp\fR" 4
  .IX Item "+fp"
! The VFPv3 floating-point instructions, with 16 double-precision
  registers.  The extension \fB+vfpv3\-d16\fR can be used as an alias
! for this extension.  Note that floating-point is not supported by the
  base ARMv7\-M architecture, but is compatible with both the ARMv7\-A and
  ARMv7\-R architectures.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point instructions.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv7\-a\fR" 4
  .IX Item "armv7-a"
  .RS 4
  .PD 0
! .IP "\fB+mp\fR" 4
  .IX Item "+mp"
  .PD
  The multiprocessing extension.
! .IP "\fB+sec\fR" 4
  .IX Item "+sec"
  The security extension.
! .IP "\fB+fp\fR" 4
  .IX Item "+fp"
! The VFPv3 floating-point instructions, with 16 double-precision
  registers.  The extension \fB+vfpv3\-d16\fR can be used as an alias
  for this extension.
! .IP "\fB+simd\fR" 4
  .IX Item "+simd"
! The Advanced \s-1SIMD\s0 (Neon) v1 and the VFPv3 floating-point instructions.
  The extensions \fB+neon\fR and \fB+neon\-vfpv3\fR can be used as aliases
  for this extension.
! .IP "\fB+vfpv3\fR" 4
  .IX Item "+vfpv3"
! The VFPv3 floating-point instructions, with 32 double-precision
  registers.
! .IP "\fB+vfpv3\-d16\-fp16\fR" 4
  .IX Item "+vfpv3-d16-fp16"
! The VFPv3 floating-point instructions, with 16 double-precision
! registers and the half-precision floating-point conversion operations.
! .IP "\fB+vfpv3\-fp16\fR" 4
  .IX Item "+vfpv3-fp16"
! The VFPv3 floating-point instructions, with 32 double-precision
! registers and the half-precision floating-point conversion operations.
! .IP "\fB+vfpv4\-d16\fR" 4
  .IX Item "+vfpv4-d16"
! The VFPv4 floating-point instructions, with 16 double-precision
  registers.
! .IP "\fB+vfpv4\fR" 4
  .IX Item "+vfpv4"
! The VFPv4 floating-point instructions, with 32 double-precision
  registers.
! .IP "\fB+neon\-fp16\fR" 4
  .IX Item "+neon-fp16"
! The Advanced \s-1SIMD\s0 (Neon) v1 and the VFPv3 floating-point instructions, with
! the half-precision floating-point conversion operations.
! .IP "\fB+neon\-vfpv4\fR" 4
  .IX Item "+neon-vfpv4"
! The Advanced \s-1SIMD\s0 (Neon) v2 and the VFPv4 floating-point instructions.
! .IP "\fB+nosimd\fR" 4
  .IX Item "+nosimd"
! Disable the Advanced \s-1SIMD\s0 instructions (does not disable floating point).
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point and Advanced \s-1SIMD\s0 instructions.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv7ve\fR" 4
  .IX Item "armv7ve"
  The extended version of the ARMv7\-A architecture with support for
  virtualization.
  .RS 4
! .IP "\fB+fp\fR" 4
  .IX Item "+fp"
! The VFPv4 floating-point instructions, with 16 double-precision registers.
  The extension \fB+vfpv4\-d16\fR can be used as an alias for this extension.
! .IP "\fB+simd\fR" 4
  .IX Item "+simd"
! The Advanced \s-1SIMD\s0 (Neon) v2 and the VFPv4 floating-point instructions.  The
  extension \fB+neon\-vfpv4\fR can be used as an alias for this extension.
! .IP "\fB+vfpv3\-d16\fR" 4
  .IX Item "+vfpv3-d16"
! The VFPv3 floating-point instructions, with 16 double-precision
  registers.
! .IP "\fB+vfpv3\fR" 4
  .IX Item "+vfpv3"
! The VFPv3 floating-point instructions, with 32 double-precision
  registers.
! .IP "\fB+vfpv3\-d16\-fp16\fR" 4
  .IX Item "+vfpv3-d16-fp16"
! The VFPv3 floating-point instructions, with 16 double-precision
! registers and the half-precision floating-point conversion operations.
! .IP "\fB+vfpv3\-fp16\fR" 4
  .IX Item "+vfpv3-fp16"
! The VFPv3 floating-point instructions, with 32 double-precision
! registers and the half-precision floating-point conversion operations.
! .IP "\fB+vfpv4\-d16\fR" 4
  .IX Item "+vfpv4-d16"
! The VFPv4 floating-point instructions, with 16 double-precision
  registers.
! .IP "\fB+vfpv4\fR" 4
  .IX Item "+vfpv4"
! The VFPv4 floating-point instructions, with 32 double-precision
  registers.
! .IP "\fB+neon\fR" 4
  .IX Item "+neon"
! The Advanced \s-1SIMD\s0 (Neon) v1 and the VFPv3 floating-point instructions.
  The extension \fB+neon\-vfpv3\fR can be used as an alias for this extension.
! .IP "\fB+neon\-fp16\fR" 4
  .IX Item "+neon-fp16"
! The Advanced \s-1SIMD\s0 (Neon) v1 and the VFPv3 floating-point instructions, with
! the half-precision floating-point conversion operations.
! .IP "\fB+nosimd\fR" 4
  .IX Item "+nosimd"
! Disable the Advanced \s-1SIMD\s0 instructions (does not disable floating point).
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point and Advanced \s-1SIMD\s0 instructions.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv8\-a\fR" 4
  .IX Item "armv8-a"
  .RS 4
  .PD 0
! .IP "\fB+crc\fR" 4
  .IX Item "+crc"
  .PD
! The Cyclic Redundancy Check (\s-1CRC\s0) instructions.
! .IP "\fB+simd\fR" 4
  .IX Item "+simd"
! The ARMv8\-A Advanced \s-1SIMD\s0 and floating-point instructions.
! .IP "\fB+crypto\fR" 4
  .IX Item "+crypto"
  The cryptographic instructions.
! .IP "\fB+nocrypto\fR" 4
  .IX Item "+nocrypto"
  Disable the cryptographic instructions.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point, Advanced \s-1SIMD\s0 and cryptographic instructions.
! .IP "\fB+sb\fR" 4
  .IX Item "+sb"
  Speculation Barrier Instruction.
! .IP "\fB+predres\fR" 4
  .IX Item "+predres"
  Execution and Data Prediction Restriction Instructions.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv8.1\-a\fR" 4
  .IX Item "armv8.1-a"
  .RS 4
  .PD 0
! .IP "\fB+simd\fR" 4
  .IX Item "+simd"
  .PD
! The ARMv8.1\-A Advanced \s-1SIMD\s0 and floating-point instructions.
! .IP "\fB+crypto\fR" 4
  .IX Item "+crypto"
! The cryptographic instructions.  This also enables the Advanced \s-1SIMD\s0 and
! floating-point instructions.
! .IP "\fB+nocrypto\fR" 4
  .IX Item "+nocrypto"
  Disable the cryptographic instructions.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point, Advanced \s-1SIMD\s0 and cryptographic instructions.
! .IP "\fB+sb\fR" 4
  .IX Item "+sb"
  Speculation Barrier Instruction.
! .IP "\fB+predres\fR" 4
  .IX Item "+predres"
  Execution and Data Prediction Restriction Instructions.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv8.2\-a\fR" 4
  .IX Item "armv8.2-a"
  .PD 0
! .IP "\fBarmv8.3\-a\fR" 4
  .IX Item "armv8.3-a"
  .RS 4
! .IP "\fB+fp16\fR" 4
  .IX Item "+fp16"
  .PD
! The half-precision floating-point data processing instructions.
! This also enables the Advanced \s-1SIMD\s0 and floating-point instructions.
! .IP "\fB+fp16fml\fR" 4
  .IX Item "+fp16fml"
! The half-precision floating-point fmla extension.  This also enables
! the half-precision floating-point extension and Advanced \s-1SIMD\s0 and
! floating-point instructions.
! .IP "\fB+simd\fR" 4
  .IX Item "+simd"
! The ARMv8.1\-A Advanced \s-1SIMD\s0 and floating-point instructions.
! .IP "\fB+crypto\fR" 4
  .IX Item "+crypto"
! The cryptographic instructions.  This also enables the Advanced \s-1SIMD\s0 and
! floating-point instructions.
! .IP "\fB+dotprod\fR" 4
  .IX Item "+dotprod"
! Enable the Dot Product extension.  This also enables Advanced \s-1SIMD\s0 instructions.
! .IP "\fB+nocrypto\fR" 4
  .IX Item "+nocrypto"
  Disable the cryptographic extension.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point, Advanced \s-1SIMD\s0 and cryptographic instructions.
! .IP "\fB+sb\fR" 4
  .IX Item "+sb"
  Speculation Barrier Instruction.
! .IP "\fB+predres\fR" 4
  .IX Item "+predres"
  Execution and Data Prediction Restriction Instructions.
! .IP "\fB+i8mm\fR" 4
  .IX Item "+i8mm"
  8\-bit Integer Matrix Multiply instructions.
! This also enables Advanced \s-1SIMD\s0 and floating-point instructions.
! .IP "\fB+bf16\fR" 4
  .IX Item "+bf16"
! Brain half-precision floating-point instructions.
! This also enables Advanced \s-1SIMD\s0 and floating-point instructions.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv8.4\-a\fR" 4
  .IX Item "armv8.4-a"
  .RS 4
  .PD 0
! .IP "\fB+fp16\fR" 4
  .IX Item "+fp16"
  .PD
! The half-precision floating-point data processing instructions.
! This also enables the Advanced \s-1SIMD\s0 and floating-point instructions as well
! as the Dot Product extension and the half-precision floating-point fmla
  extension.
! .IP "\fB+simd\fR" 4
  .IX Item "+simd"
! The ARMv8.3\-A Advanced \s-1SIMD\s0 and floating-point instructions as well as the
  Dot Product extension.
! .IP "\fB+crypto\fR" 4
  .IX Item "+crypto"
! The cryptographic instructions.  This also enables the Advanced \s-1SIMD\s0 and
! floating-point instructions as well as the Dot Product extension.
! .IP "\fB+nocrypto\fR" 4
  .IX Item "+nocrypto"
  Disable the cryptographic extension.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point, Advanced \s-1SIMD\s0 and cryptographic instructions.
! .IP "\fB+sb\fR" 4
  .IX Item "+sb"
  Speculation Barrier Instruction.
! .IP "\fB+predres\fR" 4
  .IX Item "+predres"
  Execution and Data Prediction Restriction Instructions.
! .IP "\fB+i8mm\fR" 4
  .IX Item "+i8mm"
  8\-bit Integer Matrix Multiply instructions.
! This also enables Advanced \s-1SIMD\s0 and floating-point instructions.
! .IP "\fB+bf16\fR" 4
  .IX Item "+bf16"
! Brain half-precision floating-point instructions.
! This also enables Advanced \s-1SIMD\s0 and floating-point instructions.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv8.5\-a\fR" 4
  .IX Item "armv8.5-a"
  .RS 4
  .PD 0
! .IP "\fB+fp16\fR" 4
  .IX Item "+fp16"
  .PD
! The half-precision floating-point data processing instructions.
! This also enables the Advanced \s-1SIMD\s0 and floating-point instructions as well
! as the Dot Product extension and the half-precision floating-point fmla
  extension.
! .IP "\fB+simd\fR" 4
  .IX Item "+simd"
! The ARMv8.3\-A Advanced \s-1SIMD\s0 and floating-point instructions as well as the
  Dot Product extension.
! .IP "\fB+crypto\fR" 4
  .IX Item "+crypto"
! The cryptographic instructions.  This also enables the Advanced \s-1SIMD\s0 and
! floating-point instructions as well as the Dot Product extension.
! .IP "\fB+nocrypto\fR" 4
  .IX Item "+nocrypto"
  Disable the cryptographic extension.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point, Advanced \s-1SIMD\s0 and cryptographic instructions.
! .IP "\fB+i8mm\fR" 4
  .IX Item "+i8mm"
  8\-bit Integer Matrix Multiply instructions.
! This also enables Advanced \s-1SIMD\s0 and floating-point instructions.
! .IP "\fB+bf16\fR" 4
  .IX Item "+bf16"
! Brain half-precision floating-point instructions.
! This also enables Advanced \s-1SIMD\s0 and floating-point instructions.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv8.6\-a\fR" 4
  .IX Item "armv8.6-a"
  .RS 4
  .PD 0
! .IP "\fB+fp16\fR" 4
  .IX Item "+fp16"
  .PD
! The half-precision floating-point data processing instructions.
! This also enables the Advanced \s-1SIMD\s0 and floating-point instructions as well
! as the Dot Product extension and the half-precision floating-point fmla
  extension.
! .IP "\fB+simd\fR" 4
  .IX Item "+simd"
! The ARMv8.3\-A Advanced \s-1SIMD\s0 and floating-point instructions as well as the
  Dot Product extension.
! .IP "\fB+crypto\fR" 4
  .IX Item "+crypto"
! The cryptographic instructions.  This also enables the Advanced \s-1SIMD\s0 and
! floating-point instructions as well as the Dot Product extension.
! .IP "\fB+nocrypto\fR" 4
  .IX Item "+nocrypto"
  Disable the cryptographic extension.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point, Advanced \s-1SIMD\s0 and cryptographic instructions.
! .IP "\fB+i8mm\fR" 4
  .IX Item "+i8mm"
  8\-bit Integer Matrix Multiply instructions.
! This also enables Advanced \s-1SIMD\s0 and floating-point instructions.
! .IP "\fB+bf16\fR" 4
  .IX Item "+bf16"
! Brain half-precision floating-point instructions.
! This also enables Advanced \s-1SIMD\s0 and floating-point instructions.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv7\-r\fR" 4
  .IX Item "armv7-r"
  .RS 4
  .PD 0
! .IP "\fB+fp.sp\fR" 4
  .IX Item "+fp.sp"
  .PD
! The single-precision VFPv3 floating-point instructions.  The extension
  \&\fB+vfpv3xd\fR can be used as an alias for this extension.
! .IP "\fB+fp\fR" 4
  .IX Item "+fp"
! The VFPv3 floating-point instructions with 16 double-precision registers.
  The extension +vfpv3\-d16 can be used as an alias for this extension.
! .IP "\fB+vfpv3xd\-d16\-fp16\fR" 4
  .IX Item "+vfpv3xd-d16-fp16"
! The single-precision VFPv3 floating-point instructions with 16 double-precision
! registers and the half-precision floating-point conversion operations.
! .IP "\fB+vfpv3\-d16\-fp16\fR" 4
  .IX Item "+vfpv3-d16-fp16"
! The VFPv3 floating-point instructions with 16 double-precision
! registers and the half-precision floating-point conversion operations.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point extension.
! .IP "\fB+idiv\fR" 4
  .IX Item "+idiv"
! The ARM-state integer division instructions.
! .IP "\fB+noidiv\fR" 4
  .IX Item "+noidiv"
! Disable the ARM-state integer division extension.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv7e\-m\fR" 4
  .IX Item "armv7e-m"
  .RS 4
  .PD 0
! .IP "\fB+fp\fR" 4
  .IX Item "+fp"
  .PD
! The single-precision VFPv4 floating-point instructions.
! .IP "\fB+fpv5\fR" 4
  .IX Item "+fpv5"
! The single-precision FPv5 floating-point instructions.
! .IP "\fB+fp.dp\fR" 4
  .IX Item "+fp.dp"
! The single\- and double-precision FPv5 floating-point instructions.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point extensions.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv8.1\-m.main\fR" 4
  .IX Item "armv8.1-m.main"
  .RS 4
  .PD 0
! .IP "\fB+dsp\fR" 4
  .IX Item "+dsp"
  .PD
! The \s-1DSP\s0 instructions.
! .IP "\fB+mve\fR" 4
  .IX Item "+mve"
! The M\-Profile Vector Extension (\s-1MVE\s0) integer instructions.
! .IP "\fB+mve.fp\fR" 4
  .IX Item "+mve.fp"
! The M\-Profile Vector Extension (\s-1MVE\s0) integer and single precision
! floating-point instructions.
! .IP "\fB+fp\fR" 4
  .IX Item "+fp"
! The single-precision floating-point instructions.
! .IP "\fB+fp.dp\fR" 4
  .IX Item "+fp.dp"
! The single\- and double-precision floating-point instructions.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point extension.
  .IP "\fB+cdecp0, +cdecp1, ... , +cdecp7\fR" 4
  .IX Item "+cdecp0, +cdecp1, ... , +cdecp7"
! Enable the Custom Datapath Extension (\s-1CDE\s0) on selected coprocessors according
  to the numbers given in the options in the range 0 to 7.
! .IP "\fB+pacbti\fR" 4
  .IX Item "+pacbti"
  Enable the Pointer Authentication and Branch Target Identification Extension.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv8\-m.main\fR" 4
  .IX Item "armv8-m.main"
  .RS 4
  .PD 0
! .IP "\fB+dsp\fR" 4
  .IX Item "+dsp"
  .PD
! The \s-1DSP\s0 instructions.
! .IP "\fB+nodsp\fR" 4
  .IX Item "+nodsp"
! Disable the \s-1DSP\s0 extension.
! .IP "\fB+fp\fR" 4
  .IX Item "+fp"
! The single-precision floating-point instructions.
! .IP "\fB+fp.dp\fR" 4
  .IX Item "+fp.dp"
! The single\- and double-precision floating-point instructions.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point extension.
  .IP "\fB+cdecp0, +cdecp1, ... , +cdecp7\fR" 4
  .IX Item "+cdecp0, +cdecp1, ... , +cdecp7"
! Enable the Custom Datapath Extension (\s-1CDE\s0) on selected coprocessors according
  to the numbers given in the options in the range 0 to 7.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv8\-r\fR" 4
  .IX Item "armv8-r"
  .RS 4
  .PD 0
! .IP "\fB+crc\fR" 4
  .IX Item "+crc"
  .PD
! The Cyclic Redundancy Check (\s-1CRC\s0) instructions.
! .IP "\fB+fp.sp\fR" 4
  .IX Item "+fp.sp"
! The single-precision FPv5 floating-point instructions.
! .IP "\fB+simd\fR" 4
  .IX Item "+simd"
! The ARMv8\-A Advanced \s-1SIMD\s0 and floating-point instructions.
! .IP "\fB+crypto\fR" 4
  .IX Item "+crypto"
  The cryptographic instructions.
! .IP "\fB+nocrypto\fR" 4
  .IX Item "+nocrypto"
  Disable the cryptographic instructions.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point, Advanced \s-1SIMD\s0 and cryptographic instructions.
  .RE
  .RS 4
  .RE
  .RE
  .RS 4
  .Sp
! \&\fB\-march=native\fR causes the compiler to auto-detect the architecture
  of the build computer.  At present, this feature is only supported on
! GNU/Linux, and not all architectures are recognized.  If the auto-detect
  is unsuccessful the option has no effect.
  .Sp
  \&\fB\-march=unset\fR causes the compiler to ignore any
  \&\fB\-march=...\fR options that appear earlier on the command line
  and behave as if the option was never passed.  This is useful to avoid
! warnings about conflicting \s-1CPU\s0 and architecture options when the two
  produce different architecture specifications.
  .RE
! .IP "\fB\-mtune=\fR\fIname\fR" 4
  .IX Item "-mtune=name"
! This option specifies the name of the target \s-1ARM\s0 processor for
! which \s-1GCC\s0 should tune the performance of the code.
! For some \s-1ARM\s0 implementations better performance can be obtained by using
  this option.
  Permissible names are: \fBarm7tdmi\fR, \fBarm7tdmi\-s\fR, \fBarm710t\fR,
  \&\fBarm720t\fR, \fBarm740t\fR, \fBstrongarm\fR, \fBstrongarm110\fR,
--- 22710,23256 ----
  dependent upon the architecture to which it is applied.  For example,
  the \fB+simd\fR option can be applied to both \fBarmv7\-a\fR and
  \&\fBarmv8\-a\fR architectures, but will enable the original ARMv7\-A
! Advanced SIMD (Neon) extensions for \fBarmv7\-a\fR and the ARMv8\-A
  variant for \fBarmv8\-a\fR.
  .Sp
  The table below lists the supported extensions for each architecture.
  Architectures not mentioned do not support any extensions.
  .RS 4
! .IP \fBarmv5te\fR 4
  .IX Item "armv5te"
  .PD 0
! .IP \fBarmv6\fR 4
  .IX Item "armv6"
! .IP \fBarmv6j\fR 4
  .IX Item "armv6j"
! .IP \fBarmv6k\fR 4
  .IX Item "armv6k"
! .IP \fBarmv6kz\fR 4
  .IX Item "armv6kz"
! .IP \fBarmv6t2\fR 4
  .IX Item "armv6t2"
! .IP \fBarmv6z\fR 4
  .IX Item "armv6z"
! .IP \fBarmv6zk\fR 4
  .IX Item "armv6zk"
  .RS 4
! .IP \fB+fp\fR 4
  .IX Item "+fp"
  .PD
! The VFPv2 floating\-point instructions.  The extension \fB+vfpv2\fR can be
  used as an alias for this extension.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point instructions.
  .RE
  .RS 4
  .RE
! .IP \fBarmv7\fR 4
  .IX Item "armv7"
  The common subset of the ARMv7\-A, ARMv7\-R and ARMv7\-M architectures.
  .RS 4
! .IP \fB+fp\fR 4
  .IX Item "+fp"
! The VFPv3 floating\-point instructions, with 16 double\-precision
  registers.  The extension \fB+vfpv3\-d16\fR can be used as an alias
! for this extension.  Note that floating\-point is not supported by the
  base ARMv7\-M architecture, but is compatible with both the ARMv7\-A and
  ARMv7\-R architectures.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point instructions.
  .RE
  .RS 4
  .RE
! .IP \fBarmv7\-a\fR 4
  .IX Item "armv7-a"
  .RS 4
  .PD 0
! .IP \fB+mp\fR 4
  .IX Item "+mp"
  .PD
  The multiprocessing extension.
! .IP \fB+sec\fR 4
  .IX Item "+sec"
  The security extension.
! .IP \fB+fp\fR 4
  .IX Item "+fp"
! The VFPv3 floating\-point instructions, with 16 double\-precision
  registers.  The extension \fB+vfpv3\-d16\fR can be used as an alias
  for this extension.
! .IP \fB+simd\fR 4
  .IX Item "+simd"
! The Advanced SIMD (Neon) v1 and the VFPv3 floating\-point instructions.
  The extensions \fB+neon\fR and \fB+neon\-vfpv3\fR can be used as aliases
  for this extension.
! .IP \fB+vfpv3\fR 4
  .IX Item "+vfpv3"
! The VFPv3 floating\-point instructions, with 32 double\-precision
  registers.
! .IP \fB+vfpv3\-d16\-fp16\fR 4
  .IX Item "+vfpv3-d16-fp16"
! The VFPv3 floating\-point instructions, with 16 double\-precision
! registers and the half\-precision floating\-point conversion operations.
! .IP \fB+vfpv3\-fp16\fR 4
  .IX Item "+vfpv3-fp16"
! The VFPv3 floating\-point instructions, with 32 double\-precision
! registers and the half\-precision floating\-point conversion operations.
! .IP \fB+vfpv4\-d16\fR 4
  .IX Item "+vfpv4-d16"
! The VFPv4 floating\-point instructions, with 16 double\-precision
  registers.
! .IP \fB+vfpv4\fR 4
  .IX Item "+vfpv4"
! The VFPv4 floating\-point instructions, with 32 double\-precision
  registers.
! .IP \fB+neon\-fp16\fR 4
  .IX Item "+neon-fp16"
! The Advanced SIMD (Neon) v1 and the VFPv3 floating\-point instructions, with
! the half\-precision floating\-point conversion operations.
! .IP \fB+neon\-vfpv4\fR 4
  .IX Item "+neon-vfpv4"
! The Advanced SIMD (Neon) v2 and the VFPv4 floating\-point instructions.
! .IP \fB+nosimd\fR 4
  .IX Item "+nosimd"
! Disable the Advanced SIMD instructions (does not disable floating point).
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point and Advanced SIMD instructions.
  .RE
  .RS 4
  .RE
! .IP \fBarmv7ve\fR 4
  .IX Item "armv7ve"
  The extended version of the ARMv7\-A architecture with support for
  virtualization.
  .RS 4
! .IP \fB+fp\fR 4
  .IX Item "+fp"
! The VFPv4 floating\-point instructions, with 16 double\-precision registers.
  The extension \fB+vfpv4\-d16\fR can be used as an alias for this extension.
! .IP \fB+simd\fR 4
  .IX Item "+simd"
! The Advanced SIMD (Neon) v2 and the VFPv4 floating\-point instructions.  The
  extension \fB+neon\-vfpv4\fR can be used as an alias for this extension.
! .IP \fB+vfpv3\-d16\fR 4
  .IX Item "+vfpv3-d16"
! The VFPv3 floating\-point instructions, with 16 double\-precision
  registers.
! .IP \fB+vfpv3\fR 4
  .IX Item "+vfpv3"
! The VFPv3 floating\-point instructions, with 32 double\-precision
  registers.
! .IP \fB+vfpv3\-d16\-fp16\fR 4
  .IX Item "+vfpv3-d16-fp16"
! The VFPv3 floating\-point instructions, with 16 double\-precision
! registers and the half\-precision floating\-point conversion operations.
! .IP \fB+vfpv3\-fp16\fR 4
  .IX Item "+vfpv3-fp16"
! The VFPv3 floating\-point instructions, with 32 double\-precision
! registers and the half\-precision floating\-point conversion operations.
! .IP \fB+vfpv4\-d16\fR 4
  .IX Item "+vfpv4-d16"
! The VFPv4 floating\-point instructions, with 16 double\-precision
  registers.
! .IP \fB+vfpv4\fR 4
  .IX Item "+vfpv4"
! The VFPv4 floating\-point instructions, with 32 double\-precision
  registers.
! .IP \fB+neon\fR 4
  .IX Item "+neon"
! The Advanced SIMD (Neon) v1 and the VFPv3 floating\-point instructions.
  The extension \fB+neon\-vfpv3\fR can be used as an alias for this extension.
! .IP \fB+neon\-fp16\fR 4
  .IX Item "+neon-fp16"
! The Advanced SIMD (Neon) v1 and the VFPv3 floating\-point instructions, with
! the half\-precision floating\-point conversion operations.
! .IP \fB+nosimd\fR 4
  .IX Item "+nosimd"
! Disable the Advanced SIMD instructions (does not disable floating point).
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point and Advanced SIMD instructions.
  .RE
  .RS 4
  .RE
! .IP \fBarmv8\-a\fR 4
  .IX Item "armv8-a"
  .RS 4
  .PD 0
! .IP \fB+crc\fR 4
  .IX Item "+crc"
  .PD
! The Cyclic Redundancy Check (CRC) instructions.
! .IP \fB+simd\fR 4
  .IX Item "+simd"
! The ARMv8\-A Advanced SIMD and floating\-point instructions.
! .IP \fB+crypto\fR 4
  .IX Item "+crypto"
  The cryptographic instructions.
! .IP \fB+nocrypto\fR 4
  .IX Item "+nocrypto"
  Disable the cryptographic instructions.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point, Advanced SIMD and cryptographic instructions.
! .IP \fB+sb\fR 4
  .IX Item "+sb"
  Speculation Barrier Instruction.
! .IP \fB+predres\fR 4
  .IX Item "+predres"
  Execution and Data Prediction Restriction Instructions.
  .RE
  .RS 4
  .RE
! .IP \fBarmv8.1\-a\fR 4
  .IX Item "armv8.1-a"
  .RS 4
  .PD 0
! .IP \fB+simd\fR 4
  .IX Item "+simd"
  .PD
! The ARMv8.1\-A Advanced SIMD and floating\-point instructions.
! .IP \fB+crypto\fR 4
  .IX Item "+crypto"
! The cryptographic instructions.  This also enables the Advanced SIMD and
! floating\-point instructions.
! .IP \fB+nocrypto\fR 4
  .IX Item "+nocrypto"
  Disable the cryptographic instructions.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point, Advanced SIMD and cryptographic instructions.
! .IP \fB+sb\fR 4
  .IX Item "+sb"
  Speculation Barrier Instruction.
! .IP \fB+predres\fR 4
  .IX Item "+predres"
  Execution and Data Prediction Restriction Instructions.
  .RE
  .RS 4
  .RE
! .IP \fBarmv8.2\-a\fR 4
  .IX Item "armv8.2-a"
  .PD 0
! .IP \fBarmv8.3\-a\fR 4
  .IX Item "armv8.3-a"
  .RS 4
! .IP \fB+fp16\fR 4
  .IX Item "+fp16"
  .PD
! The half\-precision floating\-point data processing instructions.
! This also enables the Advanced SIMD and floating\-point instructions.
! .IP \fB+fp16fml\fR 4
  .IX Item "+fp16fml"
! The half\-precision floating\-point fmla extension.  This also enables
! the half\-precision floating\-point extension and Advanced SIMD and
! floating\-point instructions.
! .IP \fB+simd\fR 4
  .IX Item "+simd"
! The ARMv8.1\-A Advanced SIMD and floating\-point instructions.
! .IP \fB+crypto\fR 4
  .IX Item "+crypto"
! The cryptographic instructions.  This also enables the Advanced SIMD and
! floating\-point instructions.
! .IP \fB+dotprod\fR 4
  .IX Item "+dotprod"
! Enable the Dot Product extension.  This also enables Advanced SIMD instructions.
! .IP \fB+nocrypto\fR 4
  .IX Item "+nocrypto"
  Disable the cryptographic extension.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point, Advanced SIMD and cryptographic instructions.
! .IP \fB+sb\fR 4
  .IX Item "+sb"
  Speculation Barrier Instruction.
! .IP \fB+predres\fR 4
  .IX Item "+predres"
  Execution and Data Prediction Restriction Instructions.
! .IP \fB+i8mm\fR 4
  .IX Item "+i8mm"
  8\-bit Integer Matrix Multiply instructions.
! This also enables Advanced SIMD and floating\-point instructions.
! .IP \fB+bf16\fR 4
  .IX Item "+bf16"
! Brain half\-precision floating\-point instructions.
! This also enables Advanced SIMD and floating\-point instructions.
  .RE
  .RS 4
  .RE
! .IP \fBarmv8.4\-a\fR 4
  .IX Item "armv8.4-a"
  .RS 4
  .PD 0
! .IP \fB+fp16\fR 4
  .IX Item "+fp16"
  .PD
! The half\-precision floating\-point data processing instructions.
! This also enables the Advanced SIMD and floating\-point instructions as well
! as the Dot Product extension and the half\-precision floating\-point fmla
  extension.
! .IP \fB+simd\fR 4
  .IX Item "+simd"
! The ARMv8.3\-A Advanced SIMD and floating\-point instructions as well as the
  Dot Product extension.
! .IP \fB+crypto\fR 4
  .IX Item "+crypto"
! The cryptographic instructions.  This also enables the Advanced SIMD and
! floating\-point instructions as well as the Dot Product extension.
! .IP \fB+nocrypto\fR 4
  .IX Item "+nocrypto"
  Disable the cryptographic extension.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point, Advanced SIMD and cryptographic instructions.
! .IP \fB+sb\fR 4
  .IX Item "+sb"
  Speculation Barrier Instruction.
! .IP \fB+predres\fR 4
  .IX Item "+predres"
  Execution and Data Prediction Restriction Instructions.
! .IP \fB+i8mm\fR 4
  .IX Item "+i8mm"
  8\-bit Integer Matrix Multiply instructions.
! This also enables Advanced SIMD and floating\-point instructions.
! .IP \fB+bf16\fR 4
  .IX Item "+bf16"
! Brain half\-precision floating\-point instructions.
! This also enables Advanced SIMD and floating\-point instructions.
  .RE
  .RS 4
  .RE
! .IP \fBarmv8.5\-a\fR 4
  .IX Item "armv8.5-a"
  .RS 4
  .PD 0
! .IP \fB+fp16\fR 4
  .IX Item "+fp16"
  .PD
! The half\-precision floating\-point data processing instructions.
! This also enables the Advanced SIMD and floating\-point instructions as well
! as the Dot Product extension and the half\-precision floating\-point fmla
  extension.
! .IP \fB+simd\fR 4
  .IX Item "+simd"
! The ARMv8.3\-A Advanced SIMD and floating\-point instructions as well as the
  Dot Product extension.
! .IP \fB+crypto\fR 4
  .IX Item "+crypto"
! The cryptographic instructions.  This also enables the Advanced SIMD and
! floating\-point instructions as well as the Dot Product extension.
! .IP \fB+nocrypto\fR 4
  .IX Item "+nocrypto"
  Disable the cryptographic extension.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point, Advanced SIMD and cryptographic instructions.
! .IP \fB+i8mm\fR 4
  .IX Item "+i8mm"
  8\-bit Integer Matrix Multiply instructions.
! This also enables Advanced SIMD and floating\-point instructions.
! .IP \fB+bf16\fR 4
  .IX Item "+bf16"
! Brain half\-precision floating\-point instructions.
! This also enables Advanced SIMD and floating\-point instructions.
  .RE
  .RS 4
  .RE
! .IP \fBarmv8.6\-a\fR 4
  .IX Item "armv8.6-a"
  .RS 4
  .PD 0
! .IP \fB+fp16\fR 4
  .IX Item "+fp16"
  .PD
! The half\-precision floating\-point data processing instructions.
! This also enables the Advanced SIMD and floating\-point instructions as well
! as the Dot Product extension and the half\-precision floating\-point fmla
  extension.
! .IP \fB+simd\fR 4
  .IX Item "+simd"
! The ARMv8.3\-A Advanced SIMD and floating\-point instructions as well as the
  Dot Product extension.
! .IP \fB+crypto\fR 4
  .IX Item "+crypto"
! The cryptographic instructions.  This also enables the Advanced SIMD and
! floating\-point instructions as well as the Dot Product extension.
! .IP \fB+nocrypto\fR 4
  .IX Item "+nocrypto"
  Disable the cryptographic extension.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point, Advanced SIMD and cryptographic instructions.
! .IP \fB+i8mm\fR 4
  .IX Item "+i8mm"
  8\-bit Integer Matrix Multiply instructions.
! This also enables Advanced SIMD and floating\-point instructions.
! .IP \fB+bf16\fR 4
  .IX Item "+bf16"
! Brain half\-precision floating\-point instructions.
! This also enables Advanced SIMD and floating\-point instructions.
  .RE
  .RS 4
  .RE
! .IP \fBarmv7\-r\fR 4
  .IX Item "armv7-r"
  .RS 4
  .PD 0
! .IP \fB+fp.sp\fR 4
  .IX Item "+fp.sp"
  .PD
! The single\-precision VFPv3 floating\-point instructions.  The extension
  \&\fB+vfpv3xd\fR can be used as an alias for this extension.
! .IP \fB+fp\fR 4
  .IX Item "+fp"
! The VFPv3 floating\-point instructions with 16 double\-precision registers.
  The extension +vfpv3\-d16 can be used as an alias for this extension.
! .IP \fB+vfpv3xd\-d16\-fp16\fR 4
  .IX Item "+vfpv3xd-d16-fp16"
! The single\-precision VFPv3 floating\-point instructions with 16 double\-precision
! registers and the half\-precision floating\-point conversion operations.
! .IP \fB+vfpv3\-d16\-fp16\fR 4
  .IX Item "+vfpv3-d16-fp16"
! The VFPv3 floating\-point instructions with 16 double\-precision
! registers and the half\-precision floating\-point conversion operations.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point extension.
! .IP \fB+idiv\fR 4
  .IX Item "+idiv"
! The ARM\-state integer division instructions.
! .IP \fB+noidiv\fR 4
  .IX Item "+noidiv"
! Disable the ARM\-state integer division extension.
  .RE
  .RS 4
  .RE
! .IP \fBarmv7e\-m\fR 4
  .IX Item "armv7e-m"
  .RS 4
  .PD 0
! .IP \fB+fp\fR 4
  .IX Item "+fp"
  .PD
! The single\-precision VFPv4 floating\-point instructions.
! .IP \fB+fpv5\fR 4
  .IX Item "+fpv5"
! The single\-precision FPv5 floating\-point instructions.
! .IP \fB+fp.dp\fR 4
  .IX Item "+fp.dp"
! The single\- and double\-precision FPv5 floating\-point instructions.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point extensions.
  .RE
  .RS 4
  .RE
! .IP \fBarmv8.1\-m.main\fR 4
  .IX Item "armv8.1-m.main"
  .RS 4
  .PD 0
! .IP \fB+dsp\fR 4
  .IX Item "+dsp"
  .PD
! The DSP instructions.
! .IP \fB+mve\fR 4
  .IX Item "+mve"
! The M\-Profile Vector Extension (MVE) integer instructions.
! .IP \fB+mve.fp\fR 4
  .IX Item "+mve.fp"
! The M\-Profile Vector Extension (MVE) integer and single precision
! floating\-point instructions.
! .IP \fB+fp\fR 4
  .IX Item "+fp"
! The single\-precision floating\-point instructions.
! .IP \fB+fp.dp\fR 4
  .IX Item "+fp.dp"
! The single\- and double\-precision floating\-point instructions.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point extension.
  .IP "\fB+cdecp0, +cdecp1, ... , +cdecp7\fR" 4
  .IX Item "+cdecp0, +cdecp1, ... , +cdecp7"
! Enable the Custom Datapath Extension (CDE) on selected coprocessors according
  to the numbers given in the options in the range 0 to 7.
! .IP \fB+pacbti\fR 4
  .IX Item "+pacbti"
  Enable the Pointer Authentication and Branch Target Identification Extension.
  .RE
  .RS 4
  .RE
! .IP \fBarmv8\-m.main\fR 4
  .IX Item "armv8-m.main"
  .RS 4
  .PD 0
! .IP \fB+dsp\fR 4
  .IX Item "+dsp"
  .PD
! The DSP instructions.
! .IP \fB+nodsp\fR 4
  .IX Item "+nodsp"
! Disable the DSP extension.
! .IP \fB+fp\fR 4
  .IX Item "+fp"
! The single\-precision floating\-point instructions.
! .IP \fB+fp.dp\fR 4
  .IX Item "+fp.dp"
! The single\- and double\-precision floating\-point instructions.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point extension.
  .IP "\fB+cdecp0, +cdecp1, ... , +cdecp7\fR" 4
  .IX Item "+cdecp0, +cdecp1, ... , +cdecp7"
! Enable the Custom Datapath Extension (CDE) on selected coprocessors according
  to the numbers given in the options in the range 0 to 7.
  .RE
  .RS 4
  .RE
! .IP \fBarmv8\-r\fR 4
  .IX Item "armv8-r"
  .RS 4
  .PD 0
! .IP \fB+crc\fR 4
  .IX Item "+crc"
  .PD
! The Cyclic Redundancy Check (CRC) instructions.
! .IP \fB+fp.sp\fR 4
  .IX Item "+fp.sp"
! The single\-precision FPv5 floating\-point instructions.
! .IP \fB+simd\fR 4
  .IX Item "+simd"
! The ARMv8\-A Advanced SIMD and floating\-point instructions.
! .IP \fB+crypto\fR 4
  .IX Item "+crypto"
  The cryptographic instructions.
! .IP \fB+nocrypto\fR 4
  .IX Item "+nocrypto"
  Disable the cryptographic instructions.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point, Advanced SIMD and cryptographic instructions.
  .RE
  .RS 4
  .RE
  .RE
  .RS 4
  .Sp
! \&\fB\-march=native\fR causes the compiler to auto\-detect the architecture
  of the build computer.  At present, this feature is only supported on
! GNU/Linux, and not all architectures are recognized.  If the auto\-detect
  is unsuccessful the option has no effect.
  .Sp
  \&\fB\-march=unset\fR causes the compiler to ignore any
  \&\fB\-march=...\fR options that appear earlier on the command line
  and behave as if the option was never passed.  This is useful to avoid
! warnings about conflicting CPU and architecture options when the two
  produce different architecture specifications.
  .RE
! .IP \fB\-mtune=\fR\fIname\fR 4
  .IX Item "-mtune=name"
! This option specifies the name of the target ARM processor for
! which GCC should tune the performance of the code.
! For some ARM implementations better performance can be obtained by using
  this option.
  Permissible names are: \fBarm7tdmi\fR, \fBarm7tdmi\-s\fR, \fBarm710t\fR,
  \&\fBarm720t\fR, \fBarm740t\fR, \fBstrongarm\fR, \fBstrongarm110\fR,
*************** Permissible names are: \fBarm7tdmi\fR, \
*** 23344,23375 ****
  \&\fBfa606te\fR, \fBfa626te\fR, \fBfmp626\fR, \fBfa726te\fR, \fBstar\-mc1\fR,
  \&\fBxgene1\fR.
  .Sp
! Additionally, this option can specify that \s-1GCC\s0 should tune the performance
  of the code for a big.LITTLE system.  Permissible names are:
  \&\fBcortex\-a15.cortex\-a7\fR, \fBcortex\-a17.cortex\-a7\fR,
  \&\fBcortex\-a57.cortex\-a53\fR, \fBcortex\-a72.cortex\-a53\fR,
  \&\fBcortex\-a72.cortex\-a35\fR, \fBcortex\-a73.cortex\-a53\fR,
  \&\fBcortex\-a75.cortex\-a55\fR, \fBcortex\-a76.cortex\-a55\fR.
  .Sp
! \&\fB\-mtune=generic\-\fR\fIarch\fR specifies that \s-1GCC\s0 should tune the
  performance for a blend of processors within architecture \fIarch\fR.
  The aim is to generate code that run well on the current most popular
  processors, balancing between optimizations that benefit some CPUs in the
  range, and avoiding performance pitfalls of other CPUs.  The effects of
! this option may change in future \s-1GCC\s0 versions as \s-1CPU\s0 models come and go.
  .Sp
  \&\fB\-mtune\fR permits the same extension options as \fB\-mcpu\fR, but
  the extension options do not affect the tuning of the generated code.
  .Sp
! \&\fB\-mtune=native\fR causes the compiler to auto-detect the \s-1CPU\s0
  of the build computer.  At present, this feature is only supported on
! GNU/Linux, and not all architectures are recognized.  If the auto-detect is
  unsuccessful the option has no effect.
! .IP "\fB\-mcpu=\fR\fIname\fR[\fB+extension...\fR]" 4
  .IX Item "-mcpu=name[+extension...]"
! This specifies the name of the target \s-1ARM\s0 processor.  \s-1GCC\s0 uses this name
! to derive the name of the target \s-1ARM\s0 architecture (as if specified
! by \fB\-march\fR) and the \s-1ARM\s0 processor type for which to tune for
  performance (as if specified by \fB\-mtune\fR).  Where this option
  is used in conjunction with \fB\-march\fR or \fB\-mtune\fR,
  those options take precedence over the appropriate part of this option.
--- 23279,23310 ----
  \&\fBfa606te\fR, \fBfa626te\fR, \fBfmp626\fR, \fBfa726te\fR, \fBstar\-mc1\fR,
  \&\fBxgene1\fR.
  .Sp
! Additionally, this option can specify that GCC should tune the performance
  of the code for a big.LITTLE system.  Permissible names are:
  \&\fBcortex\-a15.cortex\-a7\fR, \fBcortex\-a17.cortex\-a7\fR,
  \&\fBcortex\-a57.cortex\-a53\fR, \fBcortex\-a72.cortex\-a53\fR,
  \&\fBcortex\-a72.cortex\-a35\fR, \fBcortex\-a73.cortex\-a53\fR,
  \&\fBcortex\-a75.cortex\-a55\fR, \fBcortex\-a76.cortex\-a55\fR.
  .Sp
! \&\fB\-mtune=generic\-\fR\fIarch\fR specifies that GCC should tune the
  performance for a blend of processors within architecture \fIarch\fR.
  The aim is to generate code that run well on the current most popular
  processors, balancing between optimizations that benefit some CPUs in the
  range, and avoiding performance pitfalls of other CPUs.  The effects of
! this option may change in future GCC versions as CPU models come and go.
  .Sp
  \&\fB\-mtune\fR permits the same extension options as \fB\-mcpu\fR, but
  the extension options do not affect the tuning of the generated code.
  .Sp
! \&\fB\-mtune=native\fR causes the compiler to auto\-detect the CPU
  of the build computer.  At present, this feature is only supported on
! GNU/Linux, and not all architectures are recognized.  If the auto\-detect is
  unsuccessful the option has no effect.
! .IP \fB\-mcpu=\fR\fIname\fR[\fB+extension...\fR] 4
  .IX Item "-mcpu=name[+extension...]"
! This specifies the name of the target ARM processor.  GCC uses this name
! to derive the name of the target ARM architecture (as if specified
! by \fB\-march\fR) and the ARM processor type for which to tune for
  performance (as if specified by \fB\-mtune\fR).  Where this option
  is used in conjunction with \fB\-march\fR or \fB\-mtune\fR,
  those options take precedence over the appropriate part of this option.
*************** Many of the supported CPUs implement opt
*** 23378,23396 ****
  extensions.  Where this is so the architectural extensions are
  normally enabled by default.  If implementations that lack the
  extension exist, then the extension syntax can be used to disable
! those extensions that have been omitted.  For floating-point and
! Advanced \s-1SIMD\s0 (Neon) instructions, the settings of the options
  \&\fB\-mfloat\-abi\fR and \fB\-mfpu\fR must also be considered:
! floating-point and Advanced \s-1SIMD\s0 instructions will only be used if
  \&\fB\-mfloat\-abi\fR is not set to \fBsoft\fR; and any setting of
  \&\fB\-mfpu\fR other than \fBauto\fR will override the available
! floating-point and \s-1SIMD\s0 extension instructions.
  .Sp
  For example, \fBcortex\-a9\fR can be found in three major
! configurations: integer only, with just a floating-point unit or with
! floating-point and Advanced \s-1SIMD.\s0  The default is to enable all the
  instructions, but the extensions \fB+nosimd\fR and \fB+nofp\fR can
! be used to disable just the \s-1SIMD\s0 or both the \s-1SIMD\s0 and floating-point
  instructions respectively.
  .Sp
  Permissible names for this option are the same as those for
--- 23313,23331 ----
  extensions.  Where this is so the architectural extensions are
  normally enabled by default.  If implementations that lack the
  extension exist, then the extension syntax can be used to disable
! those extensions that have been omitted.  For floating\-point and
! Advanced SIMD (Neon) instructions, the settings of the options
  \&\fB\-mfloat\-abi\fR and \fB\-mfpu\fR must also be considered:
! floating\-point and Advanced SIMD instructions will only be used if
  \&\fB\-mfloat\-abi\fR is not set to \fBsoft\fR; and any setting of
  \&\fB\-mfpu\fR other than \fBauto\fR will override the available
! floating\-point and SIMD extension instructions.
  .Sp
  For example, \fBcortex\-a9\fR can be found in three major
! configurations: integer only, with just a floating\-point unit or with
! floating\-point and Advanced SIMD.  The default is to enable all the
  instructions, but the extensions \fB+nosimd\fR and \fB+nofp\fR can
! be used to disable just the SIMD or both the SIMD and floating\-point
  instructions respectively.
  .Sp
  Permissible names for this option are the same as those for
*************** Permissible names for this option are th
*** 23398,23453 ****
  .Sp
  The following extension options are common to the listed CPUs:
  .RS 4
! .IP "\fB+nodsp\fR" 4
  .IX Item "+nodsp"
! Disable the \s-1DSP\s0 instructions on \fBcortex\-m33\fR, \fBcortex\-m35p\fR,
  \&\fBcortex\-m52\fR, \fBcortex\-m55\fR and \fBcortex\-m85\fR.
! Also disable the M\-Profile Vector Extension (\s-1MVE\s0) integer and
! single precision floating-point instructions on
  \&\fBcortex\-m52\fR, \fBcortex\-m55\fR and \fBcortex\-m85\fR.
! .IP "\fB+nopacbti\fR" 4
  .IX Item "+nopacbti"
  Disable the Pointer Authentication and Branch Target Identification Extension
  on \fBcortex\-m52\fR and \fBcortex\-m85\fR.
! .IP "\fB+nomve\fR" 4
  .IX Item "+nomve"
! Disable the M\-Profile Vector Extension (\s-1MVE\s0) integer and single precision
! floating-point instructions on \fBcortex\-m52\fR, \fBcortex\-m55\fR and
  \&\fBcortex\-m85\fR.
! .IP "\fB+nomve.fp\fR" 4
  .IX Item "+nomve.fp"
! Disable the M\-Profile Vector Extension (\s-1MVE\s0) single precision floating-point
  instructions on \fBcortex\-m52\fR, \fBcortex\-m55\fR and \fBcortex\-m85\fR.
  .IP "\fB+cdecp0, +cdecp1, ... , +cdecp7\fR" 4
  .IX Item "+cdecp0, +cdecp1, ... , +cdecp7"
! Enable the Custom Datapath Extension (\s-1CDE\s0) on selected coprocessors according
  to the numbers given in the options in the range 0 to 7 on \fBcortex\-m52\fR,
  \&\fBcortex\-m55\fR and \fBstar\-mc1\fR.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disables the floating-point instructions on \fBarm9e\fR,
  \&\fBarm946e\-s\fR, \fBarm966e\-s\fR, \fBarm968e\-s\fR, \fBarm10e\fR,
  \&\fBarm1020e\fR, \fBarm1022e\fR, \fBarm926ej\-s\fR,
  \&\fBarm1026ej\-s\fR, \fBcortex\-r5\fR, \fBcortex\-r7\fR, \fBcortex\-r8\fR,
  \&\fBcortex\-m4\fR, \fBcortex\-m7\fR, \fBcortex\-m33\fR, \fBcortex\-m35p\fR,
  \&\fBcortex\-m52\fR, \fBcortex\-m55\fR and \fBcortex\-m85\fR.
! Disables the floating-point and \s-1SIMD\s0 instructions on
  \&\fBgeneric\-armv7\-a\fR, \fBcortex\-a5\fR, \fBcortex\-a7\fR,
  \&\fBcortex\-a8\fR, \fBcortex\-a9\fR, \fBcortex\-a12\fR,
  \&\fBcortex\-a15\fR, \fBcortex\-a17\fR, \fBcortex\-a15.cortex\-a7\fR,
  \&\fBcortex\-a17.cortex\-a7\fR, \fBcortex\-a32\fR, \fBcortex\-a35\fR,
  \&\fBcortex\-a53\fR and \fBcortex\-a55\fR.
! .IP "\fB+nofp.dp\fR" 4
  .IX Item "+nofp.dp"
! Disables the double-precision component of the floating-point instructions
  on \fBcortex\-r5\fR, \fBcortex\-r7\fR, \fBcortex\-r8\fR, \fBcortex\-r52\fR,
  \&\fBcortex\-r52plus\fR and \fBcortex\-m7\fR.
! .IP "\fB+nosimd\fR" 4
  .IX Item "+nosimd"
! Disables the \s-1SIMD\s0 (but not floating-point) instructions on
  \&\fBgeneric\-armv7\-a\fR, \fBcortex\-a5\fR, \fBcortex\-a7\fR
  and \fBcortex\-a9\fR.
! .IP "\fB+crypto\fR" 4
  .IX Item "+crypto"
  Enables the cryptographic instructions on \fBcortex\-a32\fR,
  \&\fBcortex\-a35\fR, \fBcortex\-a53\fR, \fBcortex\-a55\fR, \fBcortex\-a57\fR,
--- 23333,23388 ----
  .Sp
  The following extension options are common to the listed CPUs:
  .RS 4
! .IP \fB+nodsp\fR 4
  .IX Item "+nodsp"
! Disable the DSP instructions on \fBcortex\-m33\fR, \fBcortex\-m35p\fR,
  \&\fBcortex\-m52\fR, \fBcortex\-m55\fR and \fBcortex\-m85\fR.
! Also disable the M\-Profile Vector Extension (MVE) integer and
! single precision floating\-point instructions on
  \&\fBcortex\-m52\fR, \fBcortex\-m55\fR and \fBcortex\-m85\fR.
! .IP \fB+nopacbti\fR 4
  .IX Item "+nopacbti"
  Disable the Pointer Authentication and Branch Target Identification Extension
  on \fBcortex\-m52\fR and \fBcortex\-m85\fR.
! .IP \fB+nomve\fR 4
  .IX Item "+nomve"
! Disable the M\-Profile Vector Extension (MVE) integer and single precision
! floating\-point instructions on \fBcortex\-m52\fR, \fBcortex\-m55\fR and
  \&\fBcortex\-m85\fR.
! .IP \fB+nomve.fp\fR 4
  .IX Item "+nomve.fp"
! Disable the M\-Profile Vector Extension (MVE) single precision floating\-point
  instructions on \fBcortex\-m52\fR, \fBcortex\-m55\fR and \fBcortex\-m85\fR.
  .IP "\fB+cdecp0, +cdecp1, ... , +cdecp7\fR" 4
  .IX Item "+cdecp0, +cdecp1, ... , +cdecp7"
! Enable the Custom Datapath Extension (CDE) on selected coprocessors according
  to the numbers given in the options in the range 0 to 7 on \fBcortex\-m52\fR,
  \&\fBcortex\-m55\fR and \fBstar\-mc1\fR.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disables the floating\-point instructions on \fBarm9e\fR,
  \&\fBarm946e\-s\fR, \fBarm966e\-s\fR, \fBarm968e\-s\fR, \fBarm10e\fR,
  \&\fBarm1020e\fR, \fBarm1022e\fR, \fBarm926ej\-s\fR,
  \&\fBarm1026ej\-s\fR, \fBcortex\-r5\fR, \fBcortex\-r7\fR, \fBcortex\-r8\fR,
  \&\fBcortex\-m4\fR, \fBcortex\-m7\fR, \fBcortex\-m33\fR, \fBcortex\-m35p\fR,
  \&\fBcortex\-m52\fR, \fBcortex\-m55\fR and \fBcortex\-m85\fR.
! Disables the floating\-point and SIMD instructions on
  \&\fBgeneric\-armv7\-a\fR, \fBcortex\-a5\fR, \fBcortex\-a7\fR,
  \&\fBcortex\-a8\fR, \fBcortex\-a9\fR, \fBcortex\-a12\fR,
  \&\fBcortex\-a15\fR, \fBcortex\-a17\fR, \fBcortex\-a15.cortex\-a7\fR,
  \&\fBcortex\-a17.cortex\-a7\fR, \fBcortex\-a32\fR, \fBcortex\-a35\fR,
  \&\fBcortex\-a53\fR and \fBcortex\-a55\fR.
! .IP \fB+nofp.dp\fR 4
  .IX Item "+nofp.dp"
! Disables the double\-precision component of the floating\-point instructions
  on \fBcortex\-r5\fR, \fBcortex\-r7\fR, \fBcortex\-r8\fR, \fBcortex\-r52\fR,
  \&\fBcortex\-r52plus\fR and \fBcortex\-m7\fR.
! .IP \fB+nosimd\fR 4
  .IX Item "+nosimd"
! Disables the SIMD (but not floating\-point) instructions on
  \&\fBgeneric\-armv7\-a\fR, \fBcortex\-a5\fR, \fBcortex\-a7\fR
  and \fBcortex\-a9\fR.
! .IP \fB+crypto\fR 4
  .IX Item "+crypto"
  Enables the cryptographic instructions on \fBcortex\-a32\fR,
  \&\fBcortex\-a35\fR, \fBcortex\-a53\fR, \fBcortex\-a55\fR, \fBcortex\-a57\fR,
*************** Enables the cryptographic instructions o
*** 23459,23465 ****
  .RS 4
  .Sp
  Additionally the \fBgeneric\-armv7\-a\fR pseudo target defaults to
! VFPv3 with 16 double-precision registers.  It supports the following
  extension options: \fBmp\fR, \fBsec\fR, \fBvfpv3\-d16\fR,
  \&\fBvfpv3\fR, \fBvfpv3\-d16\-fp16\fR, \fBvfpv3\-fp16\fR,
  \&\fBvfpv4\-d16\fR, \fBvfpv4\fR, \fBneon\fR, \fBneon\-vfpv3\fR,
--- 23394,23400 ----
  .RS 4
  .Sp
  Additionally the \fBgeneric\-armv7\-a\fR pseudo target defaults to
! VFPv3 with 16 double\-precision registers.  It supports the following
  extension options: \fBmp\fR, \fBsec\fR, \fBvfpv3\-d16\fR,
  \&\fBvfpv3\fR, \fBvfpv3\-d16\-fp16\fR, \fBvfpv3\-fp16\fR,
  \&\fBvfpv4\-d16\fR, \fBvfpv4\fR, \fBneon\fR, \fBneon\-vfpv3\fR,
*************** the extensions to \fB\-march=armv7\-a\fR
*** 23470,23489 ****
  equivalent to \fB\-march=\fR\fIarch\fR \fB\-mtune=generic\-\fR\fIarch\fR.
  See \fB\-mtune\fR for more information.
  .Sp
! \&\fB\-mcpu=native\fR causes the compiler to auto-detect the \s-1CPU\s0
  of the build computer.  At present, this feature is only supported on
! GNU/Linux, and not all architectures are recognized.  If the auto-detect
  is unsuccessful the option has no effect.
  .Sp
  \&\fB\-mcpu=unset\fR causes the compiler to ignore any
  \&\fB\-mcpu=...\fR options that appear earlier on the command line
  and behave as if the option was never passed.  This is useful to avoid
! warnings about conflicting \s-1CPU\s0 and architecture options when the two
  produce different architecture specifications.
  .RE
! .IP "\fB\-mfpu=\fR\fIname\fR" 4
  .IX Item "-mfpu=name"
! This specifies what floating-point hardware (or hardware emulation) is
  available on the target.  Permissible names are: \fBauto\fR, \fBvfpv2\fR,
  \&\fBvfpv3\fR,
  \&\fBvfpv3\-fp16\fR, \fBvfpv3\-d16\fR, \fBvfpv3\-d16\-fp16\fR, \fBvfpv3xd\fR,
--- 23405,23424 ----
  equivalent to \fB\-march=\fR\fIarch\fR \fB\-mtune=generic\-\fR\fIarch\fR.
  See \fB\-mtune\fR for more information.
  .Sp
! \&\fB\-mcpu=native\fR causes the compiler to auto\-detect the CPU
  of the build computer.  At present, this feature is only supported on
! GNU/Linux, and not all architectures are recognized.  If the auto\-detect
  is unsuccessful the option has no effect.
  .Sp
  \&\fB\-mcpu=unset\fR causes the compiler to ignore any
  \&\fB\-mcpu=...\fR options that appear earlier on the command line
  and behave as if the option was never passed.  This is useful to avoid
! warnings about conflicting CPU and architecture options when the two
  produce different architecture specifications.
  .RE
! .IP \fB\-mfpu=\fR\fIname\fR 4
  .IX Item "-mfpu=name"
! This specifies what floating\-point hardware (or hardware emulation) is
  available on the target.  Permissible names are: \fBauto\fR, \fBvfpv2\fR,
  \&\fBvfpv3\fR,
  \&\fBvfpv3\-fp16\fR, \fBvfpv3\-d16\fR, \fBvfpv3\-d16\-fp16\fR, \fBvfpv3xd\fR,
*************** Note that \fBneon\fR is an alias for \fB
*** 23495,23525 ****
  is an alias for \fBvfpv2\fR.
  .Sp
  The setting \fBauto\fR is the default and is special.  It causes the
! compiler to select the floating-point and Advanced \s-1SIMD\s0 instructions
  based on the settings of \fB\-mcpu\fR and \fB\-march\fR.
  .Sp
! If the selected floating-point hardware includes the \s-1NEON\s0 extension
! (e.g. \fB\-mfpu=neon\fR), note that floating-point
! operations are not generated by \s-1GCC\s0's auto-vectorization pass unless
  \&\fB\-funsafe\-math\-optimizations\fR is also specified.  This is
! because \s-1NEON\s0 hardware does not fully implement the \s-1IEEE 754\s0 standard for
! floating-point arithmetic (in particular denormal values are treated as
! zero), so the use of \s-1NEON\s0 instructions may lead to a loss of precision.
  .Sp
! You can also set the fpu name at function level by using the \f(CW\*(C`target("fpu=")\*(C'\fR function attributes or pragmas.
! .IP "\fB\-mfp16\-format=\fR\fIname\fR" 4
  .IX Item "-mfp16-format=name"
! Specify the format of the \f(CW\*(C`_\|_fp16\*(C'\fR half-precision floating-point type.
  Permissible names are \fBnone\fR, \fBieee\fR, and \fBalternative\fR;
  the default is \fBnone\fR, in which case the \f(CW\*(C`_\|_fp16\*(C'\fR type is not
  defined.
! .IP "\fB\-mstructure\-size\-boundary=\fR\fIn\fR" 4
  .IX Item "-mstructure-size-boundary=n"
  The sizes of all structures and unions are rounded up to a multiple
  of the number of bits set by this option.  Permissible values are 8, 32
! and 64.  The default value varies for different toolchains.  For the \s-1COFF\s0
  targeted toolchain the default value is 8.  A value of 64 is only allowed
! if the underlying \s-1ABI\s0 supports it.
  .Sp
  Specifying a larger number can produce faster, more efficient code, but
  can also increase the size of the program.  Different values are potentially
--- 23430,23460 ----
  is an alias for \fBvfpv2\fR.
  .Sp
  The setting \fBauto\fR is the default and is special.  It causes the
! compiler to select the floating\-point and Advanced SIMD instructions
  based on the settings of \fB\-mcpu\fR and \fB\-march\fR.
  .Sp
! If the selected floating\-point hardware includes the NEON extension
! (e.g. \fB\-mfpu=neon\fR), note that floating\-point
! operations are not generated by GCC\*(Aqs auto\-vectorization pass unless
  \&\fB\-funsafe\-math\-optimizations\fR is also specified.  This is
! because NEON hardware does not fully implement the IEEE 754 standard for
! floating\-point arithmetic (in particular denormal values are treated as
! zero), so the use of NEON instructions may lead to a loss of precision.
  .Sp
! You can also set the fpu name at function level by using the \f(CWtarget("fpu=")\fR function attributes or pragmas.
! .IP \fB\-mfp16\-format=\fR\fIname\fR 4
  .IX Item "-mfp16-format=name"
! Specify the format of the \f(CW\*(C`_\|_fp16\*(C'\fR half\-precision floating\-point type.
  Permissible names are \fBnone\fR, \fBieee\fR, and \fBalternative\fR;
  the default is \fBnone\fR, in which case the \f(CW\*(C`_\|_fp16\*(C'\fR type is not
  defined.
! .IP \fB\-mstructure\-size\-boundary=\fR\fIn\fR 4
  .IX Item "-mstructure-size-boundary=n"
  The sizes of all structures and unions are rounded up to a multiple
  of the number of bits set by this option.  Permissible values are 8, 32
! and 64.  The default value varies for different toolchains.  For the COFF
  targeted toolchain the default value is 8.  A value of 64 is only allowed
! if the underlying ABI supports it.
  .Sp
  Specifying a larger number can produce faster, more efficient code, but
  can also increase the size of the program.  Different values are potentially
*************** work with code or libraries compiled wit
*** 23528,23548 ****
  information using structures or unions.
  .Sp
  This option is deprecated.
! .IP "\fB\-mabort\-on\-noreturn\fR" 4
  .IX Item "-mabort-on-noreturn"
  Generate a call to the function \f(CW\*(C`abort\*(C'\fR at the end of a
  \&\f(CW\*(C`noreturn\*(C'\fR function.  It is executed if the function tries to
  return.
! .IP "\fB\-mlong\-calls\fR" 4
  .IX Item "-mlong-calls"
  .PD 0
! .IP "\fB\-mno\-long\-calls\fR" 4
  .IX Item "-mno-long-calls"
  .PD
  Tells the compiler to perform function calls by first loading the
  address of the function into a register and then performing a subroutine
  call on this register.  This switch is needed if the target function
! lies outside of the 64\-megabyte addressing range of the offset-based
  version of subroutine call instruction.
  .Sp
  Even if this switch is enabled, not all function calls are turned
--- 23463,23483 ----
  information using structures or unions.
  .Sp
  This option is deprecated.
! .IP \fB\-mabort\-on\-noreturn\fR 4
  .IX Item "-mabort-on-noreturn"
  Generate a call to the function \f(CW\*(C`abort\*(C'\fR at the end of a
  \&\f(CW\*(C`noreturn\*(C'\fR function.  It is executed if the function tries to
  return.
! .IP \fB\-mlong\-calls\fR 4
  .IX Item "-mlong-calls"
  .PD 0
! .IP \fB\-mno\-long\-calls\fR 4
  .IX Item "-mno-long-calls"
  .PD
  Tells the compiler to perform function calls by first loading the
  address of the function into a register and then performing a subroutine
  call on this register.  This switch is needed if the target function
! lies outside of the 64\-megabyte addressing range of the offset\-based
  version of subroutine call instruction.
  .Sp
  Even if this switch is enabled, not all function calls are turned
*************** placing the function calls within the sc
*** 23562,23589 ****
  long_calls_off\*(C'\fR directive.  Note these switches have no effect on how
  the compiler generates code to handle function calls via function
  pointers.
! .IP "\fB\-msingle\-pic\-base\fR" 4
  .IX Item "-msingle-pic-base"
! Treat the register used for \s-1PIC\s0 addressing as read-only, rather than
  loading it in the prologue for each function.  The runtime system is
  responsible for initializing this register with an appropriate value
  before execution begins.
! .IP "\fB\-mpic\-register=\fR\fIreg\fR" 4
  .IX Item "-mpic-register=reg"
! Specify the register to be used for \s-1PIC\s0 addressing.
! For standard \s-1PIC\s0 base case, the default is any suitable register
! determined by compiler.  For single \s-1PIC\s0 base case, the default is
! \&\fBR9\fR if target is \s-1EABI\s0 based or stack-checking is enabled,
  otherwise the default is \fBR10\fR.
! .IP "\fB\-mpic\-data\-is\-text\-relative\fR" 4
  .IX Item "-mpic-data-is-text-relative"
  Assume that the displacement between the text and data segments is fixed
! at static link time.  This permits using PC-relative addressing
  operations to access data known to be in the data segment.  For
! non-VxWorks \s-1RTP\s0 targets, this option is enabled by default.  When
  disabled on such targets, it will enable \fB\-msingle\-pic\-base\fR by
  default.
! .IP "\fB\-mpoke\-function\-name\fR" 4
  .IX Item "-mpoke-function-name"
  Write the name of each function into the text section, directly
  preceding the function prologue.  The generated code is similar to this:
--- 23497,23524 ----
  long_calls_off\*(C'\fR directive.  Note these switches have no effect on how
  the compiler generates code to handle function calls via function
  pointers.
! .IP \fB\-msingle\-pic\-base\fR 4
  .IX Item "-msingle-pic-base"
! Treat the register used for PIC addressing as read\-only, rather than
  loading it in the prologue for each function.  The runtime system is
  responsible for initializing this register with an appropriate value
  before execution begins.
! .IP \fB\-mpic\-register=\fR\fIreg\fR 4
  .IX Item "-mpic-register=reg"
! Specify the register to be used for PIC addressing.
! For standard PIC base case, the default is any suitable register
! determined by compiler.  For single PIC base case, the default is
! \&\fBR9\fR if target is EABI based or stack\-checking is enabled,
  otherwise the default is \fBR10\fR.
! .IP \fB\-mpic\-data\-is\-text\-relative\fR 4
  .IX Item "-mpic-data-is-text-relative"
  Assume that the displacement between the text and data segments is fixed
! at static link time.  This permits using PC\-relative addressing
  operations to access data known to be in the data segment.  For
! non\-VxWorks RTP targets, this option is enabled by default.  When
  disabled on such targets, it will enable \fB\-msingle\-pic\-base\fR by
  default.
! .IP \fB\-mpoke\-function\-name\fR 4
  .IX Item "-mpoke-function-name"
  Write the name of each function into the text section, directly
  preceding the function prologue.  The generated code is similar to this:
*************** When performing a stack backtrace, code
*** 23605,23706 ****
  location \f(CW\*(C`pc \- 12\*(C'\fR and the top 8 bits are set, then we know that
  there is a function name embedded immediately preceding this location
  and has length \f(CW\*(C`((pc[\-3]) & 0xff000000)\*(C'\fR.
! .IP "\fB\-mthumb\fR" 4
  .IX Item "-mthumb"
  .PD 0
! .IP "\fB\-marm\fR" 4
  .IX Item "-marm"
  .PD
! Select between generating code that executes in \s-1ARM\s0 and Thumb
  states.  The default for most configurations is to generate code
! that executes in \s-1ARM\s0 state, but the default can be changed by
! configuring \s-1GCC\s0 with the \fB\-\-with\-mode=\fR\fIstate\fR
  configure option.
  .Sp
! You can also override the \s-1ARM\s0 and Thumb mode for each function
! by using the \f(CW\*(C`target("thumb")\*(C'\fR and \f(CW\*(C`target("arm")\*(C'\fR function attributes or pragmas.
! .IP "\fB\-mflip\-thumb\fR" 4
  .IX Item "-mflip-thumb"
  Switch ARM/Thumb modes on alternating functions.
  This option is provided for regression testing of mixed Thumb/ARM code
  generation, and is not intended for ordinary use in compiling code.
! .IP "\fB\-mtpcs\-frame\fR" 4
  .IX Item "-mtpcs-frame"
  Generate a stack frame that is compliant with the Thumb Procedure Call
! Standard for all non-leaf functions.  (A leaf function is one that does
  not call any other functions.)  The default is \fB\-mno\-tpcs\-frame\fR.
! .IP "\fB\-mtpcs\-leaf\-frame\fR" 4
  .IX Item "-mtpcs-leaf-frame"
  Generate a stack frame that is compliant with the Thumb Procedure Call
  Standard for all leaf functions.  (A leaf function is one that does
  not call any other functions.)  The default is \fB\-mno\-apcs\-leaf\-frame\fR.
! .IP "\fB\-mcallee\-super\-interworking\fR" 4
  .IX Item "-mcallee-super-interworking"
! Gives all externally visible functions in the file being compiled an \s-1ARM\s0
  instruction set header which switches to Thumb mode before executing the
  rest of the function.  This allows these functions to be called from
! non-interworking code.  This option is not valid in \s-1AAPCS\s0 configurations
  because interworking is enabled by default.
! .IP "\fB\-mcaller\-super\-interworking\fR" 4
  .IX Item "-mcaller-super-interworking"
  Allows calls via function pointers (including virtual functions) to
  execute correctly regardless of whether the target code has been
  compiled for interworking or not.  There is a small overhead in the cost
  of executing a function pointer if this option is enabled.  This option
! is not valid in \s-1AAPCS\s0 configurations because interworking is enabled
  by default.
! .IP "\fB\-mtp=\fR\fIname\fR" 4
  .IX Item "-mtp=name"
  Specify the access model for the thread local storage pointer.  The model
  \&\fBsoft\fR generates calls to \f(CW\*(C`_\|_aeabi_read_tp\*(C'\fR.  Other accepted
  models are \fBtpidrurw\fR, \fBtpidruro\fR and \fBtpidrprw\fR which fetch
  the thread pointer from the corresponding system register directly
  (supported from the arm6k architecture and later).  These system registers
! are accessed through the \s-1CP15\s0 co-processor interface and the argument
  \&\fBcp15\fR is also accepted as a convenience alias of \fBtpidruro\fR.
  The argument \fBauto\fR uses the best available method for the selected
  processor.  The default setting is \fBauto\fR.
! .IP "\fB\-mtls\-dialect=\fR\fIdialect\fR" 4
  .IX Item "-mtls-dialect=dialect"
  Specify the dialect to use for accessing thread local storage.  Two
  \&\fIdialect\fRs are supported\-\-\-\fBgnu\fR and \fBgnu2\fR.  The
! \&\fBgnu\fR dialect selects the original \s-1GNU\s0 scheme for supporting
! local and global dynamic \s-1TLS\s0 models.  The \fBgnu2\fR dialect
! selects the \s-1GNU\s0 descriptor scheme, which provides better performance
! for shared libraries.  The \s-1GNU\s0 descriptor scheme is compatible with
  the original scheme, but does require new assembler, linker and
! library support.  Initial and local exec \s-1TLS\s0 models are unaffected by
  this option and always use the original scheme.
! .IP "\fB\-mword\-relocations\fR" 4
  .IX Item "-mword-relocations"
! Only generate absolute relocations on word-sized values (i.e. R_ARM_ABS32).
  This is enabled by default on targets (uClinux, SymbianOS) where the runtime
  loader imposes this restriction, and when \fB\-fpic\fR or \fB\-fPIC\fR
  is specified. This option conflicts with \fB\-mslow\-flash\-data\fR.
! .IP "\fB\-mfix\-cortex\-m3\-ldrd\fR" 4
  .IX Item "-mfix-cortex-m3-ldrd"
  Some Cortex\-M3 cores can cause data corruption when \f(CW\*(C`ldrd\*(C'\fR instructions
  with overlapping destination and base registers are used.  This option avoids
  generating these instructions.  This option is enabled by default when
  \&\fB\-mcpu=cortex\-m3\fR is specified.
! .IP "\fB\-mfix\-cortex\-a57\-aes\-1742098\fR" 4
  .IX Item "-mfix-cortex-a57-aes-1742098"
  .PD 0
! .IP "\fB\-mno\-fix\-cortex\-a57\-aes\-1742098\fR" 4
  .IX Item "-mno-fix-cortex-a57-aes-1742098"
! .IP "\fB\-mfix\-cortex\-a72\-aes\-1655431\fR" 4
  .IX Item "-mfix-cortex-a72-aes-1655431"
! .IP "\fB\-mno\-fix\-cortex\-a72\-aes\-1655431\fR" 4
  .IX Item "-mno-fix-cortex-a72-aes-1655431"
  .PD
  Enable (disable) mitigation for an erratum on Cortex\-A57 and
! Cortex\-A72 that affects the \s-1AES\s0 cryptographic instructions.  This
  option is enabled by default when either \fB\-mcpu=cortex\-a57\fR or
  \&\fB\-mcpu=cortex\-a72\fR is specified.
! .IP "\fB\-munaligned\-access\fR" 4
  .IX Item "-munaligned-access"
  .PD 0
! .IP "\fB\-mno\-unaligned\-access\fR" 4
  .IX Item "-mno-unaligned-access"
  .PD
  Enables (or disables) reading and writing of 16\- and 32\- bit values
--- 23540,23641 ----
  location \f(CW\*(C`pc \- 12\*(C'\fR and the top 8 bits are set, then we know that
  there is a function name embedded immediately preceding this location
  and has length \f(CW\*(C`((pc[\-3]) & 0xff000000)\*(C'\fR.
! .IP \fB\-mthumb\fR 4
  .IX Item "-mthumb"
  .PD 0
! .IP \fB\-marm\fR 4
  .IX Item "-marm"
  .PD
! Select between generating code that executes in ARM and Thumb
  states.  The default for most configurations is to generate code
! that executes in ARM state, but the default can be changed by
! configuring GCC with the \fB\-\-with\-mode=\fR\fIstate\fR
  configure option.
  .Sp
! You can also override the ARM and Thumb mode for each function
! by using the \f(CWtarget("thumb")\fR and \f(CWtarget("arm")\fR function attributes or pragmas.
! .IP \fB\-mflip\-thumb\fR 4
  .IX Item "-mflip-thumb"
  Switch ARM/Thumb modes on alternating functions.
  This option is provided for regression testing of mixed Thumb/ARM code
  generation, and is not intended for ordinary use in compiling code.
! .IP \fB\-mtpcs\-frame\fR 4
  .IX Item "-mtpcs-frame"
  Generate a stack frame that is compliant with the Thumb Procedure Call
! Standard for all non\-leaf functions.  (A leaf function is one that does
  not call any other functions.)  The default is \fB\-mno\-tpcs\-frame\fR.
! .IP \fB\-mtpcs\-leaf\-frame\fR 4
  .IX Item "-mtpcs-leaf-frame"
  Generate a stack frame that is compliant with the Thumb Procedure Call
  Standard for all leaf functions.  (A leaf function is one that does
  not call any other functions.)  The default is \fB\-mno\-apcs\-leaf\-frame\fR.
! .IP \fB\-mcallee\-super\-interworking\fR 4
  .IX Item "-mcallee-super-interworking"
! Gives all externally visible functions in the file being compiled an ARM
  instruction set header which switches to Thumb mode before executing the
  rest of the function.  This allows these functions to be called from
! non\-interworking code.  This option is not valid in AAPCS configurations
  because interworking is enabled by default.
! .IP \fB\-mcaller\-super\-interworking\fR 4
  .IX Item "-mcaller-super-interworking"
  Allows calls via function pointers (including virtual functions) to
  execute correctly regardless of whether the target code has been
  compiled for interworking or not.  There is a small overhead in the cost
  of executing a function pointer if this option is enabled.  This option
! is not valid in AAPCS configurations because interworking is enabled
  by default.
! .IP \fB\-mtp=\fR\fIname\fR 4
  .IX Item "-mtp=name"
  Specify the access model for the thread local storage pointer.  The model
  \&\fBsoft\fR generates calls to \f(CW\*(C`_\|_aeabi_read_tp\*(C'\fR.  Other accepted
  models are \fBtpidrurw\fR, \fBtpidruro\fR and \fBtpidrprw\fR which fetch
  the thread pointer from the corresponding system register directly
  (supported from the arm6k architecture and later).  These system registers
! are accessed through the CP15 co\-processor interface and the argument
  \&\fBcp15\fR is also accepted as a convenience alias of \fBtpidruro\fR.
  The argument \fBauto\fR uses the best available method for the selected
  processor.  The default setting is \fBauto\fR.
! .IP \fB\-mtls\-dialect=\fR\fIdialect\fR 4
  .IX Item "-mtls-dialect=dialect"
  Specify the dialect to use for accessing thread local storage.  Two
  \&\fIdialect\fRs are supported\-\-\-\fBgnu\fR and \fBgnu2\fR.  The
! \&\fBgnu\fR dialect selects the original GNU scheme for supporting
! local and global dynamic TLS models.  The \fBgnu2\fR dialect
! selects the GNU descriptor scheme, which provides better performance
! for shared libraries.  The GNU descriptor scheme is compatible with
  the original scheme, but does require new assembler, linker and
! library support.  Initial and local exec TLS models are unaffected by
  this option and always use the original scheme.
! .IP \fB\-mword\-relocations\fR 4
  .IX Item "-mword-relocations"
! Only generate absolute relocations on word\-sized values (i.e. R_ARM_ABS32).
  This is enabled by default on targets (uClinux, SymbianOS) where the runtime
  loader imposes this restriction, and when \fB\-fpic\fR or \fB\-fPIC\fR
  is specified. This option conflicts with \fB\-mslow\-flash\-data\fR.
! .IP \fB\-mfix\-cortex\-m3\-ldrd\fR 4
  .IX Item "-mfix-cortex-m3-ldrd"
  Some Cortex\-M3 cores can cause data corruption when \f(CW\*(C`ldrd\*(C'\fR instructions
  with overlapping destination and base registers are used.  This option avoids
  generating these instructions.  This option is enabled by default when
  \&\fB\-mcpu=cortex\-m3\fR is specified.
! .IP \fB\-mfix\-cortex\-a57\-aes\-1742098\fR 4
  .IX Item "-mfix-cortex-a57-aes-1742098"
  .PD 0
! .IP \fB\-mno\-fix\-cortex\-a57\-aes\-1742098\fR 4
  .IX Item "-mno-fix-cortex-a57-aes-1742098"
! .IP \fB\-mfix\-cortex\-a72\-aes\-1655431\fR 4
  .IX Item "-mfix-cortex-a72-aes-1655431"
! .IP \fB\-mno\-fix\-cortex\-a72\-aes\-1655431\fR 4
  .IX Item "-mno-fix-cortex-a72-aes-1655431"
  .PD
  Enable (disable) mitigation for an erratum on Cortex\-A57 and
! Cortex\-A72 that affects the AES cryptographic instructions.  This
  option is enabled by default when either \fB\-mcpu=cortex\-a57\fR or
  \&\fB\-mcpu=cortex\-a72\fR is specified.
! .IP \fB\-munaligned\-access\fR 4
  .IX Item "-munaligned-access"
  .PD 0
! .IP \fB\-mno\-unaligned\-access\fR 4
  .IX Item "-mno-unaligned-access"
  .PD
  Enables (or disables) reading and writing of 16\- and 32\- bit values
*************** ARMv8\-M Baseline architectures, and ena
*** 23710,23802 ****
  architectures.  If unaligned access is not enabled then words in packed
  data structures are accessed a byte at a time.
  .Sp
! The \s-1ARM\s0 attribute \f(CW\*(C`Tag_CPU_unaligned_access\*(C'\fR is set in the
  generated object file to either true or false, depending upon the
  setting of this option.  If unaligned access is enabled then the
  preprocessor symbol \f(CW\*(C`_\|_ARM_FEATURE_UNALIGNED\*(C'\fR is also
  defined.
! .IP "\fB\-mneon\-for\-64bits\fR" 4
  .IX Item "-mneon-for-64bits"
  This option is deprecated and has no effect.
! .IP "\fB\-mslow\-flash\-data\fR" 4
  .IX Item "-mslow-flash-data"
  Assume loading data from flash is slower than fetching instruction.
  Therefore literal load is minimized for better performance.
  This option is only supported when compiling for ARMv7 M\-profile and
  off by default. It conflicts with \fB\-mword\-relocations\fR.
! .IP "\fB\-masm\-syntax\-unified\fR" 4
  .IX Item "-masm-syntax-unified"
  Assume inline assembler is using unified asm syntax.  The default is
  currently off which implies divided syntax.  This option has no impact
! on Thumb2. However, this may change in future releases of \s-1GCC.\s0
  Divided syntax should be considered deprecated.
! .IP "\fB\-mrestrict\-it\fR" 4
  .IX Item "-mrestrict-it"
! Restricts generation of \s-1IT\s0 blocks to conform to the rules of ARMv8\-A.
! \&\s-1IT\s0 blocks can only contain a single 16\-bit instruction from a select
  set of instructions. This option is on by default for ARMv8\-A Thumb mode.
! .IP "\fB\-mprint\-tune\-info\fR" 4
  .IX Item "-mprint-tune-info"
! Print \s-1CPU\s0 tuning information as comment in assembler file.  This is
  an option used only for regression testing of the compiler and not
  intended for ordinary use in compiling code.  This option is disabled
  by default.
! .IP "\fB\-mverbose\-cost\-dump\fR" 4
  .IX Item "-mverbose-cost-dump"
  Enable verbose cost model dumping in the debug dump files.  This option is
  provided for use in debugging the compiler.
! .IP "\fB\-mpure\-code\fR" 4
  .IX Item "-mpure-code"
  Do not allow constant data to be placed in code sections.
! Additionally, when compiling for \s-1ELF\s0 object format give all text sections the
! \&\s-1ELF\s0 processor-specific section attribute \f(CW\*(C`SHF_ARM_PURECODE\*(C'\fR.  This option
! is only available when generating non-pic code for M\-profile targets.
! .IP "\fB\-mcmse\fR" 4
  .IX Item "-mcmse"
! Generate secure code as per the \*(L"ARMv8\-M Security Extensions: Requirements on
! Development Tools Engineering Specification\*(R", which can be found on
  <\fBhttps://developer.arm.com/documentation/ecm0359818/latest/\fR>.
! .IP "\fB\-mfix\-cmse\-cve\-2021\-35465\fR" 4
  .IX Item "-mfix-cmse-cve-2021-35465"
  Mitigate against a potential security issue with the \f(CW\*(C`VLLDM\*(C'\fR instruction
! in some M\-profile devices when using \s-1CMSE\s0 (\s-1CVE\-2021\-365465\s0).  This option is
  enabled by default when the option \fB\-mcpu=\fR is used with
  \&\f(CW\*(C`cortex\-m33\*(C'\fR, \f(CW\*(C`cortex\-m35p\*(C'\fR, \f(CW\*(C`cortex\-m52\*(C'\fR, \f(CW\*(C`cortex\-m55\*(C'\fR,
  \&\f(CW\*(C`cortex\-m85\*(C'\fR or \f(CW\*(C`star\-mc1\*(C'\fR. The option \fB\-mno\-fix\-cmse\-cve\-2021\-35465\fR
  can be used to disable the mitigation.
! .IP "\fB\-mstack\-protector\-guard=\fR\fIguard\fR" 4
  .IX Item "-mstack-protector-guard=guard"
  .PD 0
! .IP "\fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR" 4
  .IX Item "-mstack-protector-guard-offset=offset"
  .PD
  Generate stack protection code using canary at \fIguard\fR.  Supported
  locations are \fBglobal\fR for a global canary or \fBtls\fR for a
! canary accessible via the \s-1TLS\s0 register. The option
  \&\fB\-mstack\-protector\-guard\-offset=\fR is for use with
! \&\fB\-fstack\-protector\-guard=tls\fR and not for use in user-land code.
! .IP "\fB\-mfdpic\fR" 4
  .IX Item "-mfdpic"
  .PD 0
! .IP "\fB\-mno\-fdpic\fR" 4
  .IX Item "-mno-fdpic"
  .PD
! Select the \s-1FDPIC ABI,\s0 which uses 64\-bit function descriptors to
  represent pointers to functions.  When the compiler is configured for
  \&\f(CW\*(C`arm\-*\-uclinuxfdpiceabi\*(C'\fR targets, this option is on by default
  and implies \fB\-fPIE\fR if none of the PIC/PIE\-related options is
! provided.  On other targets, it only enables the FDPIC-specific code
  generation features, and the user should explicitly provide the
  PIC/PIE\-related options as needed.
  .Sp
  Note that static linking is not supported because it would still
! involve the dynamic linker when the program self-relocates.  If such
  behavior is acceptable, use \-static and \-Wl,\-dynamic\-linker options.
  .Sp
  The opposite \fB\-mno\-fdpic\fR option is useful (and required) to
  build the Linux kernel using the same (\f(CW\*(C`arm\-*\-uclinuxfdpiceabi\*(C'\fR)
  toolchain as the one used to build the userland programs.
! .IP "\fB\-mbranch\-protection=\fR\fInone\fR\fB|\fR\fIstandard\fR\fB|\fR\fIpac-ret\fR\fB[+\fR\fIleaf\fR\fB][+\fR\fIbti\fR\fB]|\fR\fIbti\fR\fB[+\fR\fIpac-ret\fR\fB[+\fR\fIleaf\fR\fB]]\fR" 4
  .IX Item "-mbranch-protection=none|standard|pac-ret[+leaf][+bti]|bti[+pac-ret[+leaf]]"
  Enable branch protection features (armv8.1\-m.main only).
  \&\fBnone\fR generate code without branch protection or return address
--- 23645,23737 ----
  architectures.  If unaligned access is not enabled then words in packed
  data structures are accessed a byte at a time.
  .Sp
! The ARM attribute \f(CW\*(C`Tag_CPU_unaligned_access\*(C'\fR is set in the
  generated object file to either true or false, depending upon the
  setting of this option.  If unaligned access is enabled then the
  preprocessor symbol \f(CW\*(C`_\|_ARM_FEATURE_UNALIGNED\*(C'\fR is also
  defined.
! .IP \fB\-mneon\-for\-64bits\fR 4
  .IX Item "-mneon-for-64bits"
  This option is deprecated and has no effect.
! .IP \fB\-mslow\-flash\-data\fR 4
  .IX Item "-mslow-flash-data"
  Assume loading data from flash is slower than fetching instruction.
  Therefore literal load is minimized for better performance.
  This option is only supported when compiling for ARMv7 M\-profile and
  off by default. It conflicts with \fB\-mword\-relocations\fR.
! .IP \fB\-masm\-syntax\-unified\fR 4
  .IX Item "-masm-syntax-unified"
  Assume inline assembler is using unified asm syntax.  The default is
  currently off which implies divided syntax.  This option has no impact
! on Thumb2. However, this may change in future releases of GCC.
  Divided syntax should be considered deprecated.
! .IP \fB\-mrestrict\-it\fR 4
  .IX Item "-mrestrict-it"
! Restricts generation of IT blocks to conform to the rules of ARMv8\-A.
! IT blocks can only contain a single 16\-bit instruction from a select
  set of instructions. This option is on by default for ARMv8\-A Thumb mode.
! .IP \fB\-mprint\-tune\-info\fR 4
  .IX Item "-mprint-tune-info"
! Print CPU tuning information as comment in assembler file.  This is
  an option used only for regression testing of the compiler and not
  intended for ordinary use in compiling code.  This option is disabled
  by default.
! .IP \fB\-mverbose\-cost\-dump\fR 4
  .IX Item "-mverbose-cost-dump"
  Enable verbose cost model dumping in the debug dump files.  This option is
  provided for use in debugging the compiler.
! .IP \fB\-mpure\-code\fR 4
  .IX Item "-mpure-code"
  Do not allow constant data to be placed in code sections.
! Additionally, when compiling for ELF object format give all text sections the
! ELF processor\-specific section attribute \f(CW\*(C`SHF_ARM_PURECODE\*(C'\fR.  This option
! is only available when generating non\-pic code for M\-profile targets.
! .IP \fB\-mcmse\fR 4
  .IX Item "-mcmse"
! Generate secure code as per the "ARMv8\-M Security Extensions: Requirements on
! Development Tools Engineering Specification", which can be found on
  <\fBhttps://developer.arm.com/documentation/ecm0359818/latest/\fR>.
! .IP \fB\-mfix\-cmse\-cve\-2021\-35465\fR 4
  .IX Item "-mfix-cmse-cve-2021-35465"
  Mitigate against a potential security issue with the \f(CW\*(C`VLLDM\*(C'\fR instruction
! in some M\-profile devices when using CMSE (CVE\-2021\-365465).  This option is
  enabled by default when the option \fB\-mcpu=\fR is used with
  \&\f(CW\*(C`cortex\-m33\*(C'\fR, \f(CW\*(C`cortex\-m35p\*(C'\fR, \f(CW\*(C`cortex\-m52\*(C'\fR, \f(CW\*(C`cortex\-m55\*(C'\fR,
  \&\f(CW\*(C`cortex\-m85\*(C'\fR or \f(CW\*(C`star\-mc1\*(C'\fR. The option \fB\-mno\-fix\-cmse\-cve\-2021\-35465\fR
  can be used to disable the mitigation.
! .IP \fB\-mstack\-protector\-guard=\fR\fIguard\fR 4
  .IX Item "-mstack-protector-guard=guard"
  .PD 0
! .IP \fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR 4
  .IX Item "-mstack-protector-guard-offset=offset"
  .PD
  Generate stack protection code using canary at \fIguard\fR.  Supported
  locations are \fBglobal\fR for a global canary or \fBtls\fR for a
! canary accessible via the TLS register. The option
  \&\fB\-mstack\-protector\-guard\-offset=\fR is for use with
! \&\fB\-fstack\-protector\-guard=tls\fR and not for use in user\-land code.
! .IP \fB\-mfdpic\fR 4
  .IX Item "-mfdpic"
  .PD 0
! .IP \fB\-mno\-fdpic\fR 4
  .IX Item "-mno-fdpic"
  .PD
! Select the FDPIC ABI, which uses 64\-bit function descriptors to
  represent pointers to functions.  When the compiler is configured for
  \&\f(CW\*(C`arm\-*\-uclinuxfdpiceabi\*(C'\fR targets, this option is on by default
  and implies \fB\-fPIE\fR if none of the PIC/PIE\-related options is
! provided.  On other targets, it only enables the FDPIC\-specific code
  generation features, and the user should explicitly provide the
  PIC/PIE\-related options as needed.
  .Sp
  Note that static linking is not supported because it would still
! involve the dynamic linker when the program self\-relocates.  If such
  behavior is acceptable, use \-static and \-Wl,\-dynamic\-linker options.
  .Sp
  The opposite \fB\-mno\-fdpic\fR option is useful (and required) to
  build the Linux kernel using the same (\f(CW\*(C`arm\-*\-uclinuxfdpiceabi\*(C'\fR)
  toolchain as the one used to build the userland programs.
! .IP \fB\-mbranch\-protection=\fR\fInone\fR\fB|\fR\fIstandard\fR\fB|\fR\fIpac\-ret\fR\fB[+\fR\fIleaf\fR\fB][+\fR\fIbti\fR\fB]|\fR\fIbti\fR\fB[+\fR\fIpac\-ret\fR\fB[+\fR\fIleaf\fR\fB]]\fR 4
  .IX Item "-mbranch-protection=none|standard|pac-ret[+leaf][+bti]|bti[+pac-ret[+leaf]]"
  Enable branch protection features (armv8.1\-m.main only).
  \&\fBnone\fR generate code without branch protection or return address
*************** set to its standard level, which is to s
*** 23808,23825 ****
  the return address to memory.
  \&\fBleaf\fR When return address signing is enabled, also sign leaf
  functions even if they do not write the return address to memory.
! +\fBbti\fR Add landing-pad instructions at the permitted targets of
  indirect branch instructions.
  .Sp
  If the \fB+pacbti\fR architecture extension is not enabled, then all
  branch protection and return address signing operations are
  constrained to use only the instructions defined in the
! architectural-NOP space. The generated code will remain
! backwards-compatible with earlier versions of the architecture, but
  the additional security can be enabled at run time on processors that
! support the \fB\s-1PACBTI\s0\fR extension.
  .Sp
! Branch target enforcement using \s-1BTI\s0 can only be enabled at runtime if
  all code in the application has been compiled with at least
  \&\fB\-mbranch\-protection=bti\fR.
  .Sp
--- 23743,23760 ----
  the return address to memory.
  \&\fBleaf\fR When return address signing is enabled, also sign leaf
  functions even if they do not write the return address to memory.
! +\fBbti\fR Add landing\-pad instructions at the permitted targets of
  indirect branch instructions.
  .Sp
  If the \fB+pacbti\fR architecture extension is not enabled, then all
  branch protection and return address signing operations are
  constrained to use only the instructions defined in the
! architectural\-NOP space. The generated code will remain
! backwards\-compatible with earlier versions of the architecture, but
  the additional security can be enabled at run time on processors that
! support the \fBPACBTI\fR extension.
  .Sp
! Branch target enforcement using BTI can only be enabled at runtime if
  all code in the application has been compiled with at least
  \&\fB\-mbranch\-protection=bti\fR.
  .Sp
*************** or later.
*** 23829,23968 ****
  The default is to generate code without branch protection or return
  address signing.
  .PP
! \fI\s-1AVR\s0 Options\fR
  .IX Subsection "AVR Options"
  .PP
! These options are defined for \s-1AVR\s0 implementations:
! .IP "\fB\-mmcu=\fR\fImcu\fR" 4
  .IX Item "-mmcu=mcu"
! Specify the \s-1AVR\s0 instruction set architecture (\s-1ISA\s0) or device type.
  The default for this option is \f(CW\*(C`avr2\*(C'\fR.
  .Sp
! The following \s-1AVR\s0 devices and ISAs are supported.
  \&\fINote:\fR A complete device support consists of
! startup code \f(CW\*(C`crt\f(CImcu\f(CW.o\*(C'\fR, a device header \f(CW\*(C`avr/io*.h\*(C'\fR,
! a device library \f(CW\*(C`lib\f(CImcu\f(CW.a\*(C'\fR and a
! device-specs (\f(CW\*(C`https://gcc.gnu.org/wiki/avr\-gcc#spec\-files\*(C'\fR) file
! \&\f(CW\*(C`specs\-\f(CImcu\f(CW\*(C'\fR. Only the latter is provided by the compiler
! according the supported \f(CW\*(C`\f(CImcu\f(CW\*(C'\fRs below.  The rest is supported
! by AVR-LibC (\f(CW\*(C`https://github.com/avrdudes/avr\-libc/\*(C'\fR), or by means of
  \&\f(CW\*(C`atpack\*(C'\fR (\f(CW\*(C`https://gcc.gnu.org/wiki/avr\-gcc#atpack\*(C'\fR) files
  from the hardware manufacturer.
  .RS 4
  .ie n .IP """avr2""" 4
! .el .IP "\f(CWavr2\fR" 4
  .IX Item "avr2"
! \&\*(L"Classic\*(R" devices with up to 8 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`attiny22\*(C'\fR, \f(CW\*(C`attiny26\*(C'\fR, \f(CW\*(C`at90s2313\*(C'\fR, \f(CW\*(C`at90s2323\*(C'\fR, \f(CW\*(C`at90s2333\*(C'\fR, \f(CW\*(C`at90s2343\*(C'\fR, \f(CW\*(C`at90s4414\*(C'\fR, \f(CW\*(C`at90s4433\*(C'\fR, \f(CW\*(C`at90s4434\*(C'\fR, \f(CW\*(C`at90c8534\*(C'\fR, \f(CW\*(C`at90s8515\*(C'\fR, \f(CW\*(C`at90s8535\*(C'\fR.
  .ie n .IP """avr25""" 4
! .el .IP "\f(CWavr25\fR" 4
  .IX Item "avr25"
! \&\*(L"Classic\*(R" devices with up to 8 KiB of program memory and with the \f(CW\*(C`MOVW\*(C'\fR instruction.
  \&\fImcu\fR = \f(CW\*(C`attiny13\*(C'\fR, \f(CW\*(C`attiny13a\*(C'\fR, \f(CW\*(C`attiny24\*(C'\fR, \f(CW\*(C`attiny24a\*(C'\fR, \f(CW\*(C`attiny25\*(C'\fR, \f(CW\*(C`attiny261\*(C'\fR, \f(CW\*(C`attiny261a\*(C'\fR, \f(CW\*(C`attiny2313\*(C'\fR, \f(CW\*(C`attiny2313a\*(C'\fR, \f(CW\*(C`attiny43u\*(C'\fR, \f(CW\*(C`attiny44\*(C'\fR, \f(CW\*(C`attiny44a\*(C'\fR, \f(CW\*(C`attiny45\*(C'\fR, \f(CW\*(C`attiny48\*(C'\fR, \f(CW\*(C`attiny441\*(C'\fR, \f(CW\*(C`attiny461\*(C'\fR, \f(CW\*(C`attiny461a\*(C'\fR, \f(CW\*(C`attiny4313\*(C'\fR, \f(CW\*(C`attiny84\*(C'\fR, \f(CW\*(C`attiny84a\*(C'\fR, \f(CW\*(C`attiny85\*(C'\fR, \f(CW\*(C`attiny87\*(C'\fR, \f(CW\*(C`attiny88\*(C'\fR, \f(CW\*(C`attiny828\*(C'\fR, \f(CW\*(C`attiny841\*(C'\fR, \f(CW\*(C`attiny861\*(C'\fR, \f(CW\*(C`attiny861a\*(C'\fR, \f(CW\*(C`ata5272\*(C'\fR, \f(CW\*(C`ata6616c\*(C'\fR, \f(CW\*(C`at86rf401\*(C'\fR.
  .ie n .IP """avr3""" 4
! .el .IP "\f(CWavr3\fR" 4
  .IX Item "avr3"
! \&\*(L"Classic\*(R" devices with 16 KiB up to 64 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`at76c711\*(C'\fR, \f(CW\*(C`at43usb355\*(C'\fR.
  .ie n .IP """avr31""" 4
! .el .IP "\f(CWavr31\fR" 4
  .IX Item "avr31"
! \&\*(L"Classic\*(R" devices with 128 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atmega103\*(C'\fR, \f(CW\*(C`at43usb320\*(C'\fR.
  .ie n .IP """avr35""" 4
! .el .IP "\f(CWavr35\fR" 4
  .IX Item "avr35"
! \&\*(L"Classic\*(R" devices with 16 KiB up to 64 KiB of program memory and with the \f(CW\*(C`MOVW\*(C'\fR instruction.
  \&\fImcu\fR = \f(CW\*(C`attiny167\*(C'\fR, \f(CW\*(C`attiny1634\*(C'\fR, \f(CW\*(C`atmega8u2\*(C'\fR, \f(CW\*(C`atmega16u2\*(C'\fR, \f(CW\*(C`atmega32u2\*(C'\fR, \f(CW\*(C`ata5505\*(C'\fR, \f(CW\*(C`ata6617c\*(C'\fR, \f(CW\*(C`ata664251\*(C'\fR, \f(CW\*(C`at90usb82\*(C'\fR, \f(CW\*(C`at90usb162\*(C'\fR.
  .ie n .IP """avr4""" 4
! .el .IP "\f(CWavr4\fR" 4
  .IX Item "avr4"
! \&\*(L"Enhanced\*(R" devices with up to 8 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atmega48\*(C'\fR, \f(CW\*(C`atmega48a\*(C'\fR, \f(CW\*(C`atmega48p\*(C'\fR, \f(CW\*(C`atmega48pa\*(C'\fR, \f(CW\*(C`atmega48pb\*(C'\fR, \f(CW\*(C`atmega8\*(C'\fR, \f(CW\*(C`atmega8a\*(C'\fR, \f(CW\*(C`atmega8hva\*(C'\fR, \f(CW\*(C`atmega88\*(C'\fR, \f(CW\*(C`atmega88a\*(C'\fR, \f(CW\*(C`atmega88p\*(C'\fR, \f(CW\*(C`atmega88pa\*(C'\fR, \f(CW\*(C`atmega88pb\*(C'\fR, \f(CW\*(C`atmega8515\*(C'\fR, \f(CW\*(C`atmega8535\*(C'\fR, \f(CW\*(C`ata5795\*(C'\fR, \f(CW\*(C`ata6285\*(C'\fR, \f(CW\*(C`ata6286\*(C'\fR, \f(CW\*(C`ata6289\*(C'\fR, \f(CW\*(C`ata6612c\*(C'\fR, \f(CW\*(C`at90pwm1\*(C'\fR, \f(CW\*(C`at90pwm2\*(C'\fR, \f(CW\*(C`at90pwm2b\*(C'\fR, \f(CW\*(C`at90pwm3\*(C'\fR, \f(CW\*(C`at90pwm3b\*(C'\fR, \f(CW\*(C`at90pwm81\*(C'\fR.
  .ie n .IP """avr5""" 4
! .el .IP "\f(CWavr5\fR" 4
  .IX Item "avr5"
! \&\*(L"Enhanced\*(R" devices with 16 KiB up to 64 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atmega16\*(C'\fR, \f(CW\*(C`atmega16a\*(C'\fR, \f(CW\*(C`atmega16hva\*(C'\fR, \f(CW\*(C`atmega16hva2\*(C'\fR, \f(CW\*(C`atmega16hvb\*(C'\fR, \f(CW\*(C`atmega16hvbrevb\*(C'\fR, \f(CW\*(C`atmega16m1\*(C'\fR, \f(CW\*(C`atmega16u4\*(C'\fR, \f(CW\*(C`atmega161\*(C'\fR, \f(CW\*(C`atmega162\*(C'\fR, \f(CW\*(C`atmega163\*(C'\fR, \f(CW\*(C`atmega164a\*(C'\fR, \f(CW\*(C`atmega164p\*(C'\fR, \f(CW\*(C`atmega164pa\*(C'\fR, \f(CW\*(C`atmega165\*(C'\fR, \f(CW\*(C`atmega165a\*(C'\fR, \f(CW\*(C`atmega165p\*(C'\fR, \f(CW\*(C`atmega165pa\*(C'\fR, \f(CW\*(C`atmega168\*(C'\fR, \f(CW\*(C`atmega168a\*(C'\fR, \f(CW\*(C`atmega168p\*(C'\fR, \f(CW\*(C`atmega168pa\*(C'\fR, \f(CW\*(C`atmega168pb\*(C'\fR, \f(CW\*(C`atmega169\*(C'\fR, \f(CW\*(C`atmega169a\*(C'\fR, \f(CW\*(C`atmega169p\*(C'\fR, \f(CW\*(C`atmega169pa\*(C'\fR, \f(CW\*(C`atmega32\*(C'\fR, \f(CW\*(C`atmega32a\*(C'\fR, \f(CW\*(C`atmega32c1\*(C'\fR, \f(CW\*(C`atmega32hvb\*(C'\fR, \f(CW\*(C`atmega32hvbrevb\*(C'\fR, \f(CW\*(C`atmega32m1\*(C'\fR, \f(CW\*(C`atmega32u4\*(C'\fR, \f(CW\*(C`atmega32u6\*(C'\fR, \f(CW\*(C`atmega323\*(C'\fR, \f(CW\*(C`atmega324a\*(C'\fR, \f(CW\*(C`atmega324p\*(C'\fR, \f(CW\*(C`atmega324pa\*(C'\fR, \f(CW\*(C`atmega324pb\*(C'\fR, \f(CW\*(C`atmega325\*(C'\fR, \f(CW\*(C`atmega325a\*(C'\fR, \f(CW\*(C`atmega325p\*(C'\fR, \f(CW\*(C`atmega325pa\*(C'\fR, \f(CW\*(C`atmega328\*(C'\fR, \f(CW\*(C`atmega328p\*(C'\fR, \f(CW\*(C`atmega328pb\*(C'\fR, \f(CW\*(C`atmega329\*(C'\fR, \f(CW\*(C`atmega329a\*(C'\fR, \f(CW\*(C`atmega329p\*(C'\fR, \f(CW\*(C`atmega329pa\*(C'\fR, \f(CW\*(C`atmega3250\*(C'\fR, \f(CW\*(C`atmega3250a\*(C'\fR, \f(CW\*(C`atmega3250p\*(C'\fR, \f(CW\*(C`atmega3250pa\*(C'\fR, \f(CW\*(C`atmega3290\*(C'\fR, \f(CW\*(C`atmega3290a\*(C'\fR, \f(CW\*(C`atmega3290p\*(C'\fR, \f(CW\*(C`atmega3290pa\*(C'\fR, \f(CW\*(C`atmega406\*(C'\fR, \f(CW\*(C`atmega64\*(C'\fR, \f(CW\*(C`atmega64a\*(C'\fR, \f(CW\*(C`atmega64c1\*(C'\fR, \f(CW\*(C`atmega64hve\*(C'\fR, \f(CW\*(C`atmega64hve2\*(C'\fR, \f(CW\*(C`atmega64m1\*(C'\fR, \f(CW\*(C`atmega64rfr2\*(C'\fR, \f(CW\*(C`atmega640\*(C'\fR, \f(CW\*(C`atmega644\*(C'\fR, \f(CW\*(C`atmega644a\*(C'\fR, \f(CW\*(C`atmega644p\*(C'\fR, \f(CW\*(C`atmega644pa\*(C'\fR, \f(CW\*(C`atmega644rfr2\*(C'\fR, \f(CW\*(C`atmega645\*(C'\fR, \f(CW\*(C`atmega645a\*(C'\fR, \f(CW\*(C`atmega645p\*(C'\fR, \f(CW\*(C`atmega649\*(C'\fR, \f(CW\*(C`atmega649a\*(C'\fR, \f(CW\*(C`atmega649p\*(C'\fR, \f(CW\*(C`atmega6450\*(C'\fR, \f(CW\*(C`atmega6450a\*(C'\fR, \f(CW\*(C`atmega6450p\*(C'\fR, \f(CW\*(C`atmega6490\*(C'\fR, \f(CW\*(C`atmega6490a\*(C'\fR, \f(CW\*(C`atmega6490p\*(C'\fR, \f(CW\*(C`ata5790\*(C'\fR, \f(CW\*(C`ata5790n\*(C'\fR, \f(CW\*(C`ata5791\*(C'\fR, \f(CW\*(C`ata6613c\*(C'\fR, \f(CW\*(C`ata6614q\*(C'\fR, \f(CW\*(C`ata5782\*(C'\fR, \f(CW\*(C`ata5831\*(C'\fR, \f(CW\*(C`ata8210\*(C'\fR, \f(CW\*(C`ata8510\*(C'\fR, \f(CW\*(C`ata5787\*(C'\fR, \f(CW\*(C`ata5835\*(C'\fR, \f(CW\*(C`ata5700m322\*(C'\fR, \f(CW\*(C`ata5702m322\*(C'\fR, \f(CW\*(C`at90pwm161\*(C'\fR, \f(CW\*(C`at90pwm216\*(C'\fR, \f(CW\*(C`at90pwm316\*(C'\fR, \f(CW\*(C`at90can32\*(C'\fR, \f(CW\*(C`at90can64\*(C'\fR, \f(CW\*(C`at90scr100\*(C'\fR, \f(CW\*(C`at90usb646\*(C'\fR, \f(CW\*(C`at90usb647\*(C'\fR, \f(CW\*(C`at94k\*(C'\fR, \f(CW\*(C`m3000\*(C'\fR.
  .ie n .IP """avr51""" 4
! .el .IP "\f(CWavr51\fR" 4
  .IX Item "avr51"
! \&\*(L"Enhanced\*(R" devices with 128 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atmega128\*(C'\fR, \f(CW\*(C`atmega128a\*(C'\fR, \f(CW\*(C`atmega128rfa1\*(C'\fR, \f(CW\*(C`atmega128rfr2\*(C'\fR, \f(CW\*(C`atmega1280\*(C'\fR, \f(CW\*(C`atmega1281\*(C'\fR, \f(CW\*(C`atmega1284\*(C'\fR, \f(CW\*(C`atmega1284p\*(C'\fR, \f(CW\*(C`atmega1284rfr2\*(C'\fR, \f(CW\*(C`at90can128\*(C'\fR, \f(CW\*(C`at90usb1286\*(C'\fR, \f(CW\*(C`at90usb1287\*(C'\fR.
  .ie n .IP """avr6""" 4
! .el .IP "\f(CWavr6\fR" 4
  .IX Item "avr6"
! \&\*(L"Enhanced\*(R" devices with 3\-byte \s-1PC,\s0 i.e. with more than 128 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atmega256rfr2\*(C'\fR, \f(CW\*(C`atmega2560\*(C'\fR, \f(CW\*(C`atmega2561\*(C'\fR, \f(CW\*(C`atmega2564rfr2\*(C'\fR.
  .ie n .IP """avrxmega2""" 4
! .el .IP "\f(CWavrxmega2\fR" 4
  .IX Item "avrxmega2"
! \&\*(L"\s-1XMEGA\*(R"\s0 devices with more than 8 KiB and up to 64 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atxmega8e5\*(C'\fR, \f(CW\*(C`atxmega16a4\*(C'\fR, \f(CW\*(C`atxmega16a4u\*(C'\fR, \f(CW\*(C`atxmega16c4\*(C'\fR, \f(CW\*(C`atxmega16d4\*(C'\fR, \f(CW\*(C`atxmega16e5\*(C'\fR, \f(CW\*(C`atxmega32a4\*(C'\fR, \f(CW\*(C`atxmega32a4u\*(C'\fR, \f(CW\*(C`atxmega32c3\*(C'\fR, \f(CW\*(C`atxmega32c4\*(C'\fR, \f(CW\*(C`atxmega32d3\*(C'\fR, \f(CW\*(C`atxmega32d4\*(C'\fR, \f(CW\*(C`atxmega32e5\*(C'\fR, \f(CW\*(C`avr64da28\*(C'\fR, \f(CW\*(C`avr64da28s\*(C'\fR, \f(CW\*(C`avr64da32\*(C'\fR, \f(CW\*(C`avr64da32s\*(C'\fR, \f(CW\*(C`avr64da48\*(C'\fR, \f(CW\*(C`avr64da48s\*(C'\fR, \f(CW\*(C`avr64da64\*(C'\fR, \f(CW\*(C`avr64da64s\*(C'\fR, \f(CW\*(C`avr64db28\*(C'\fR, \f(CW\*(C`avr64db32\*(C'\fR, \f(CW\*(C`avr64db48\*(C'\fR, \f(CW\*(C`avr64db64\*(C'\fR, \f(CW\*(C`avr64dd14\*(C'\fR, \f(CW\*(C`avr64dd20\*(C'\fR, \f(CW\*(C`avr64dd28\*(C'\fR, \f(CW\*(C`avr64dd32\*(C'\fR, \f(CW\*(C`avr64du28\*(C'\fR, \f(CW\*(C`avr64du32\*(C'\fR, \f(CW\*(C`avr64ea28\*(C'\fR, \f(CW\*(C`avr64ea32\*(C'\fR, \f(CW\*(C`avr64ea48\*(C'\fR, \f(CW\*(C`avr64sd28\*(C'\fR, \f(CW\*(C`avr64sd32\*(C'\fR, \f(CW\*(C`avr64sd48\*(C'\fR.
  .ie n .IP """avrxmega3""" 4
! .el .IP "\f(CWavrxmega3\fR" 4
  .IX Item "avrxmega3"
! \&\*(L"\s-1XMEGA\*(R"\s0 devices with up to 64 KiB of combined program memory and \s-1RAM,\s0 and with program memory visible in the \s-1RAM\s0 address space.
! \&\fImcu\fR = \f(CW\*(C`attiny202\*(C'\fR, \f(CW\*(C`attiny204\*(C'\fR, \f(CW\*(C`attiny212\*(C'\fR, \f(CW\*(C`attiny214\*(C'\fR, \f(CW\*(C`attiny402\*(C'\fR, \f(CW\*(C`attiny404\*(C'\fR, \f(CW\*(C`attiny406\*(C'\fR, \f(CW\*(C`attiny412\*(C'\fR, \f(CW\*(C`attiny414\*(C'\fR, \f(CW\*(C`attiny416\*(C'\fR, \f(CW\*(C`attiny416auto\*(C'\fR, \f(CW\*(C`attiny417\*(C'\fR, \f(CW\*(C`attiny424\*(C'\fR, \f(CW\*(C`attiny426\*(C'\fR, \f(CW\*(C`attiny427\*(C'\fR, \f(CW\*(C`attiny804\*(C'\fR, \f(CW\*(C`attiny806\*(C'\fR, \f(CW\*(C`attiny807\*(C'\fR, \f(CW\*(C`attiny814\*(C'\fR, \f(CW\*(C`attiny816\*(C'\fR, \f(CW\*(C`attiny817\*(C'\fR, \f(CW\*(C`attiny824\*(C'\fR, \f(CW\*(C`attiny826\*(C'\fR, \f(CW\*(C`attiny827\*(C'\fR, \f(CW\*(C`attiny1604\*(C'\fR, \f(CW\*(C`attiny1606\*(C'\fR, \f(CW\*(C`attiny1607\*(C'\fR, \f(CW\*(C`attiny1614\*(C'\fR, \f(CW\*(C`attiny1616\*(C'\fR, \f(CW\*(C`attiny1617\*(C'\fR, \f(CW\*(C`attiny1624\*(C'\fR, \f(CW\*(C`attiny1626\*(C'\fR, \f(CW\*(C`attiny1627\*(C'\fR, \f(CW\*(C`attiny3214\*(C'\fR, \f(CW\*(C`attiny3216\*(C'\fR, \f(CW\*(C`attiny3217\*(C'\fR, \f(CW\*(C`attiny3224\*(C'\fR, \f(CW\*(C`attiny3226\*(C'\fR, \f(CW\*(C`attiny3227\*(C'\fR, \f(CW\*(C`atmega808\*(C'\fR, \f(CW\*(C`atmega809\*(C'\fR, \f(CW\*(C`atmega1608\*(C'\fR, \f(CW\*(C`atmega1609\*(C'\fR, \f(CW\*(C`atmega3208\*(C'\fR, \f(CW\*(C`atmega3209\*(C'\fR, \f(CW\*(C`atmega4808\*(C'\fR, \f(CW\*(C`atmega4809\*(C'\fR, \f(CW\*(C`avr16dd14\*(C'\fR, \f(CW\*(C`avr16dd20\*(C'\fR, \f(CW\*(C`avr16dd28\*(C'\fR, \f(CW\*(C`avr16dd32\*(C'\fR, \f(CW\*(C`avr16du14\*(C'\fR, \f(CW\*(C`avr16du20\*(C'\fR, \f(CW\*(C`avr16du28\*(C'\fR, \f(CW\*(C`avr16du32\*(C'\fR, \f(CW\*(C`avr16ea28\*(C'\fR, \f(CW\*(C`avr16ea32\*(C'\fR, \f(CW\*(C`avr16ea48\*(C'\fR, \f(CW\*(C`avr16eb14\*(C'\fR, \f(CW\*(C`avr16eb20\*(C'\fR, \f(CW\*(C`avr16eb28\*(C'\fR, \f(CW\*(C`avr16eb32\*(C'\fR, \f(CW\*(C`avr32da28\*(C'\fR, \f(CW\*(C`avr32da28s\*(C'\fR, \f(CW\*(C`avr32da32\*(C'\fR, \f(CW\*(C`avr32da32s\*(C'\fR, \f(CW\*(C`avr32da48\*(C'\fR, \f(CW\*(C`avr32da48s\*(C'\fR, \f(CW\*(C`avr32db28\*(C'\fR, \f(CW\*(C`avr32db32\*(C'\fR, \f(CW\*(C`avr32db48\*(C'\fR, \f(CW\*(C`avr32dd14\*(C'\fR, \f(CW\*(C`avr32dd20\*(C'\fR, \f(CW\*(C`avr32dd28\*(C'\fR, \f(CW\*(C`avr32dd32\*(C'\fR, \f(CW\*(C`avr32du14\*(C'\fR, \f(CW\*(C`avr32du20\*(C'\fR, \f(CW\*(C`avr32du28\*(C'\fR, \f(CW\*(C`avr32du32\*(C'\fR, \f(CW\*(C`avr32ea28\*(C'\fR, \f(CW\*(C`avr32ea32\*(C'\fR, \f(CW\*(C`avr32ea48\*(C'\fR, \f(CW\*(C`avr32sd20\*(C'\fR, \f(CW\*(C`avr32sd28\*(C'\fR, \f(CW\*(C`avr32sd32\*(C'\fR.
  .ie n .IP """avrxmega4""" 4
! .el .IP "\f(CWavrxmega4\fR" 4
  .IX Item "avrxmega4"
! \&\*(L"\s-1XMEGA\*(R"\s0 devices with more than 64 KiB and up to 128 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atxmega64a3\*(C'\fR, \f(CW\*(C`atxmega64a3u\*(C'\fR, \f(CW\*(C`atxmega64a4u\*(C'\fR, \f(CW\*(C`atxmega64b1\*(C'\fR, \f(CW\*(C`atxmega64b3\*(C'\fR, \f(CW\*(C`atxmega64c3\*(C'\fR, \f(CW\*(C`atxmega64d3\*(C'\fR, \f(CW\*(C`atxmega64d4\*(C'\fR, \f(CW\*(C`avr128da28\*(C'\fR, \f(CW\*(C`avr128da28s\*(C'\fR, \f(CW\*(C`avr128da32\*(C'\fR, \f(CW\*(C`avr128da32s\*(C'\fR, \f(CW\*(C`avr128da48\*(C'\fR, \f(CW\*(C`avr128da48s\*(C'\fR, \f(CW\*(C`avr128da64\*(C'\fR, \f(CW\*(C`avr128da64s\*(C'\fR, \f(CW\*(C`avr128db28\*(C'\fR, \f(CW\*(C`avr128db32\*(C'\fR, \f(CW\*(C`avr128db48\*(C'\fR, \f(CW\*(C`avr128db64\*(C'\fR.
  .ie n .IP """avrxmega5""" 4
! .el .IP "\f(CWavrxmega5\fR" 4
  .IX Item "avrxmega5"
! \&\*(L"\s-1XMEGA\*(R"\s0 devices with more than 64 KiB and up to 128 KiB of program memory and more than 64 KiB of \s-1RAM.\s0
  \&\fImcu\fR = \f(CW\*(C`atxmega64a1\*(C'\fR, \f(CW\*(C`atxmega64a1u\*(C'\fR.
  .ie n .IP """avrxmega6""" 4
! .el .IP "\f(CWavrxmega6\fR" 4
  .IX Item "avrxmega6"
! \&\*(L"\s-1XMEGA\*(R"\s0 devices with more than 128 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atxmega128a3\*(C'\fR, \f(CW\*(C`atxmega128a3u\*(C'\fR, \f(CW\*(C`atxmega128b1\*(C'\fR, \f(CW\*(C`atxmega128b3\*(C'\fR, \f(CW\*(C`atxmega128c3\*(C'\fR, \f(CW\*(C`atxmega128d3\*(C'\fR, \f(CW\*(C`atxmega128d4\*(C'\fR, \f(CW\*(C`atxmega192a3\*(C'\fR, \f(CW\*(C`atxmega192a3u\*(C'\fR, \f(CW\*(C`atxmega192c3\*(C'\fR, \f(CW\*(C`atxmega192d3\*(C'\fR, \f(CW\*(C`atxmega256a3\*(C'\fR, \f(CW\*(C`atxmega256a3b\*(C'\fR, \f(CW\*(C`atxmega256a3bu\*(C'\fR, \f(CW\*(C`atxmega256a3u\*(C'\fR, \f(CW\*(C`atxmega256c3\*(C'\fR, \f(CW\*(C`atxmega256d3\*(C'\fR, \f(CW\*(C`atxmega384c3\*(C'\fR, \f(CW\*(C`atxmega384d3\*(C'\fR.
  .ie n .IP """avrxmega7""" 4
! .el .IP "\f(CWavrxmega7\fR" 4
  .IX Item "avrxmega7"
! \&\*(L"\s-1XMEGA\*(R"\s0 devices with more than 128 KiB of program memory and more than 64 KiB of \s-1RAM.\s0
  \&\fImcu\fR = \f(CW\*(C`atxmega128a1\*(C'\fR, \f(CW\*(C`atxmega128a1u\*(C'\fR, \f(CW\*(C`atxmega128a4u\*(C'\fR.
  .ie n .IP """avrtiny""" 4
! .el .IP "\f(CWavrtiny\fR" 4
  .IX Item "avrtiny"
! \&\*(L"Reduced Tiny\*(R" Tiny core devices with only 16 general purpose registers and 512 B up to 4 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`attiny4\*(C'\fR, \f(CW\*(C`attiny5\*(C'\fR, \f(CW\*(C`attiny9\*(C'\fR, \f(CW\*(C`attiny10\*(C'\fR, \f(CW\*(C`attiny102\*(C'\fR, \f(CW\*(C`attiny104\*(C'\fR, \f(CW\*(C`attiny20\*(C'\fR, \f(CW\*(C`attiny40\*(C'\fR.
  .ie n .IP """avr1""" 4
! .el .IP "\f(CWavr1\fR" 4
  .IX Item "avr1"
! This \s-1ISA\s0 is implemented by the minimal \s-1AVR\s0 core and supported for assembler only.
  \&\fImcu\fR = \f(CW\*(C`attiny11\*(C'\fR, \f(CW\*(C`attiny12\*(C'\fR, \f(CW\*(C`attiny15\*(C'\fR, \f(CW\*(C`attiny28\*(C'\fR, \f(CW\*(C`at90s1200\*(C'\fR.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mabsdata\fR" 4
  .IX Item "-mabsdata"
! Assume that all data in static storage can be accessed by \s-1LDS / STS\s0
  instructions.  This option has only an effect on reduced Tiny devices like
  ATtiny40.  See also the \f(CW\*(C`absdata\*(C'\fR
! \&\fB\s-1AVR\s0 Variable Attributes,variable attribute\fR.
! .IP "\fB\-mcvt\fR" 4
  .IX Item "-mcvt"
! Use a \fIcompact vector table\fR.  Some devices support a \s-1CVT\s0
! with only four entries: 0=Reset, 1=NMI, 2=Prio1 \s-1IRQ,\s0 3=Prio0 IRQs.
! This option will link startup code from \f(CW\*(C`crt\f(CImcu\f(CW\-cvt.o\*(C'\fR
! instead of the usual \f(CW\*(C`crt\f(CImcu\f(CW.o\*(C'\fR.
  Apart from providing a compact vector table, the startup code will set bit
! \&\f(CW\*(C`CPUINT_CTRLA.CPUINT_CVT\*(C'\fR which enables the \s-1CVT\s0 on the device.
  .Sp
  When you do not want the startup code to set \f(CW\*(C`CPUINT_CTRLA.CPUINT_CVT\*(C'\fR,
  then you can satisfy symbol \f(CW\*(C`_\|_init_cvt\*(C'\fR so that the respective
! code is no more pulled in from \f(CW\*(C`lib\f(CImcu\f(CW.a\*(C'\fR.
  For example, you can link with \f(CW\*(C`\-Wl,\-\-defsym,_\|_init_cvt=0\*(C'\fR.
  .Sp
! The \s-1CVT\s0 startup code is available since
! AVR-LibC\ v2.3 (\f(CW\*(C`https://github.com/avrdudes/avr\-libc/issues/1010\*(C'\fR).
! .IP "\fB\-mdouble=\fR\fIbits\fR" 4
  .IX Item "-mdouble=bits"
  .PD 0
! .IP "\fB\-mlong\-double=\fR\fIbits\fR" 4
  .IX Item "-mlong-double=bits"
  .PD
  Set the size (in bits) of the \f(CW\*(C`double\*(C'\fR or \f(CW\*(C`long double\*(C'\fR type,
--- 23764,23903 ----
  The default is to generate code without branch protection or return
  address signing.
  .PP
! \fIAVR Options\fR
  .IX Subsection "AVR Options"
  .PP
! These options are defined for AVR implementations:
! .IP \fB\-mmcu=\fR\fImcu\fR 4
  .IX Item "-mmcu=mcu"
! Specify the AVR instruction set architecture (ISA) or device type.
  The default for this option is \f(CW\*(C`avr2\*(C'\fR.
  .Sp
! The following AVR devices and ISAs are supported.
  \&\fINote:\fR A complete device support consists of
! startup code \f(CW\*(C`crt\fR\f(CImcu\fR\f(CW.o\*(C'\fR, a device header \f(CW\*(C`avr/io*.h\*(C'\fR,
! a device library \f(CW\*(C`lib\fR\f(CImcu\fR\f(CW.a\*(C'\fR and a
! device\-specs (\f(CW\*(C`https://gcc.gnu.org/wiki/avr\-gcc#spec\-files\*(C'\fR) file
! \&\f(CW\*(C`specs\-\fR\f(CImcu\fR\f(CW\*(C'\fR. Only the latter is provided by the compiler
! according the supported \f(CW\*(C`\fR\f(CImcu\fR\f(CW\*(C'\fRs below.  The rest is supported
! by AVR\-LibC (\f(CW\*(C`https://github.com/avrdudes/avr\-libc/\*(C'\fR), or by means of
  \&\f(CW\*(C`atpack\*(C'\fR (\f(CW\*(C`https://gcc.gnu.org/wiki/avr\-gcc#atpack\*(C'\fR) files
  from the hardware manufacturer.
  .RS 4
  .ie n .IP """avr2""" 4
! .el .IP \f(CWavr2\fR 4
  .IX Item "avr2"
! "Classic" devices with up to 8 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`attiny22\*(C'\fR, \f(CW\*(C`attiny26\*(C'\fR, \f(CW\*(C`at90s2313\*(C'\fR, \f(CW\*(C`at90s2323\*(C'\fR, \f(CW\*(C`at90s2333\*(C'\fR, \f(CW\*(C`at90s2343\*(C'\fR, \f(CW\*(C`at90s4414\*(C'\fR, \f(CW\*(C`at90s4433\*(C'\fR, \f(CW\*(C`at90s4434\*(C'\fR, \f(CW\*(C`at90c8534\*(C'\fR, \f(CW\*(C`at90s8515\*(C'\fR, \f(CW\*(C`at90s8535\*(C'\fR.
  .ie n .IP """avr25""" 4
! .el .IP \f(CWavr25\fR 4
  .IX Item "avr25"
! "Classic" devices with up to 8 KiB of program memory and with the \f(CW\*(C`MOVW\*(C'\fR instruction.
  \&\fImcu\fR = \f(CW\*(C`attiny13\*(C'\fR, \f(CW\*(C`attiny13a\*(C'\fR, \f(CW\*(C`attiny24\*(C'\fR, \f(CW\*(C`attiny24a\*(C'\fR, \f(CW\*(C`attiny25\*(C'\fR, \f(CW\*(C`attiny261\*(C'\fR, \f(CW\*(C`attiny261a\*(C'\fR, \f(CW\*(C`attiny2313\*(C'\fR, \f(CW\*(C`attiny2313a\*(C'\fR, \f(CW\*(C`attiny43u\*(C'\fR, \f(CW\*(C`attiny44\*(C'\fR, \f(CW\*(C`attiny44a\*(C'\fR, \f(CW\*(C`attiny45\*(C'\fR, \f(CW\*(C`attiny48\*(C'\fR, \f(CW\*(C`attiny441\*(C'\fR, \f(CW\*(C`attiny461\*(C'\fR, \f(CW\*(C`attiny461a\*(C'\fR, \f(CW\*(C`attiny4313\*(C'\fR, \f(CW\*(C`attiny84\*(C'\fR, \f(CW\*(C`attiny84a\*(C'\fR, \f(CW\*(C`attiny85\*(C'\fR, \f(CW\*(C`attiny87\*(C'\fR, \f(CW\*(C`attiny88\*(C'\fR, \f(CW\*(C`attiny828\*(C'\fR, \f(CW\*(C`attiny841\*(C'\fR, \f(CW\*(C`attiny861\*(C'\fR, \f(CW\*(C`attiny861a\*(C'\fR, \f(CW\*(C`ata5272\*(C'\fR, \f(CW\*(C`ata6616c\*(C'\fR, \f(CW\*(C`at86rf401\*(C'\fR.
  .ie n .IP """avr3""" 4
! .el .IP \f(CWavr3\fR 4
  .IX Item "avr3"
! "Classic" devices with 16 KiB up to 64 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`at76c711\*(C'\fR, \f(CW\*(C`at43usb355\*(C'\fR.
  .ie n .IP """avr31""" 4
! .el .IP \f(CWavr31\fR 4
  .IX Item "avr31"
! "Classic" devices with 128 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atmega103\*(C'\fR, \f(CW\*(C`at43usb320\*(C'\fR.
  .ie n .IP """avr35""" 4
! .el .IP \f(CWavr35\fR 4
  .IX Item "avr35"
! "Classic" devices with 16 KiB up to 64 KiB of program memory and with the \f(CW\*(C`MOVW\*(C'\fR instruction.
  \&\fImcu\fR = \f(CW\*(C`attiny167\*(C'\fR, \f(CW\*(C`attiny1634\*(C'\fR, \f(CW\*(C`atmega8u2\*(C'\fR, \f(CW\*(C`atmega16u2\*(C'\fR, \f(CW\*(C`atmega32u2\*(C'\fR, \f(CW\*(C`ata5505\*(C'\fR, \f(CW\*(C`ata6617c\*(C'\fR, \f(CW\*(C`ata664251\*(C'\fR, \f(CW\*(C`at90usb82\*(C'\fR, \f(CW\*(C`at90usb162\*(C'\fR.
  .ie n .IP """avr4""" 4
! .el .IP \f(CWavr4\fR 4
  .IX Item "avr4"
! "Enhanced" devices with up to 8 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atmega48\*(C'\fR, \f(CW\*(C`atmega48a\*(C'\fR, \f(CW\*(C`atmega48p\*(C'\fR, \f(CW\*(C`atmega48pa\*(C'\fR, \f(CW\*(C`atmega48pb\*(C'\fR, \f(CW\*(C`atmega8\*(C'\fR, \f(CW\*(C`atmega8a\*(C'\fR, \f(CW\*(C`atmega8hva\*(C'\fR, \f(CW\*(C`atmega88\*(C'\fR, \f(CW\*(C`atmega88a\*(C'\fR, \f(CW\*(C`atmega88p\*(C'\fR, \f(CW\*(C`atmega88pa\*(C'\fR, \f(CW\*(C`atmega88pb\*(C'\fR, \f(CW\*(C`atmega8515\*(C'\fR, \f(CW\*(C`atmega8535\*(C'\fR, \f(CW\*(C`ata5795\*(C'\fR, \f(CW\*(C`ata6285\*(C'\fR, \f(CW\*(C`ata6286\*(C'\fR, \f(CW\*(C`ata6289\*(C'\fR, \f(CW\*(C`ata6612c\*(C'\fR, \f(CW\*(C`at90pwm1\*(C'\fR, \f(CW\*(C`at90pwm2\*(C'\fR, \f(CW\*(C`at90pwm2b\*(C'\fR, \f(CW\*(C`at90pwm3\*(C'\fR, \f(CW\*(C`at90pwm3b\*(C'\fR, \f(CW\*(C`at90pwm81\*(C'\fR.
  .ie n .IP """avr5""" 4
! .el .IP \f(CWavr5\fR 4
  .IX Item "avr5"
! "Enhanced" devices with 16 KiB up to 64 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atmega16\*(C'\fR, \f(CW\*(C`atmega16a\*(C'\fR, \f(CW\*(C`atmega16hva\*(C'\fR, \f(CW\*(C`atmega16hva2\*(C'\fR, \f(CW\*(C`atmega16hvb\*(C'\fR, \f(CW\*(C`atmega16hvbrevb\*(C'\fR, \f(CW\*(C`atmega16m1\*(C'\fR, \f(CW\*(C`atmega16u4\*(C'\fR, \f(CW\*(C`atmega161\*(C'\fR, \f(CW\*(C`atmega162\*(C'\fR, \f(CW\*(C`atmega163\*(C'\fR, \f(CW\*(C`atmega164a\*(C'\fR, \f(CW\*(C`atmega164p\*(C'\fR, \f(CW\*(C`atmega164pa\*(C'\fR, \f(CW\*(C`atmega165\*(C'\fR, \f(CW\*(C`atmega165a\*(C'\fR, \f(CW\*(C`atmega165p\*(C'\fR, \f(CW\*(C`atmega165pa\*(C'\fR, \f(CW\*(C`atmega168\*(C'\fR, \f(CW\*(C`atmega168a\*(C'\fR, \f(CW\*(C`atmega168p\*(C'\fR, \f(CW\*(C`atmega168pa\*(C'\fR, \f(CW\*(C`atmega168pb\*(C'\fR, \f(CW\*(C`atmega169\*(C'\fR, \f(CW\*(C`atmega169a\*(C'\fR, \f(CW\*(C`atmega169p\*(C'\fR, \f(CW\*(C`atmega169pa\*(C'\fR, \f(CW\*(C`atmega32\*(C'\fR, \f(CW\*(C`atmega32a\*(C'\fR, \f(CW\*(C`atmega32c1\*(C'\fR, \f(CW\*(C`atmega32hvb\*(C'\fR, \f(CW\*(C`atmega32hvbrevb\*(C'\fR, \f(CW\*(C`atmega32m1\*(C'\fR, \f(CW\*(C`atmega32u4\*(C'\fR, \f(CW\*(C`atmega32u6\*(C'\fR, \f(CW\*(C`atmega323\*(C'\fR, \f(CW\*(C`atmega324a\*(C'\fR, \f(CW\*(C`atmega324p\*(C'\fR, \f(CW\*(C`atmega324pa\*(C'\fR, \f(CW\*(C`atmega324pb\*(C'\fR, \f(CW\*(C`atmega325\*(C'\fR, \f(CW\*(C`atmega325a\*(C'\fR, \f(CW\*(C`atmega325p\*(C'\fR, \f(CW\*(C`atmega325pa\*(C'\fR, \f(CW\*(C`atmega328\*(C'\fR, \f(CW\*(C`atmega328p\*(C'\fR, \f(CW\*(C`atmega328pb\*(C'\fR, \f(CW\*(C`atmega329\*(C'\fR, \f(CW\*(C`atmega329a\*(C'\fR, \f(CW\*(C`atmega329p\*(C'\fR, \f(CW\*(C`atmega329pa\*(C'\fR, \f(CW\*(C`atmega3250\*(C'\fR, \f(CW\*(C`atmega3250a\*(C'\fR, \f(CW\*(C`atmega3250p\*(C'\fR, \f(CW\*(C`atmega3250pa\*(C'\fR, \f(CW\*(C`atmega3290\*(C'\fR, \f(CW\*(C`atmega3290a\*(C'\fR, \f(CW\*(C`atmega3290p\*(C'\fR, \f(CW\*(C`atmega3290pa\*(C'\fR, \f(CW\*(C`atmega406\*(C'\fR, \f(CW\*(C`atmega64\*(C'\fR, \f(CW\*(C`atmega64a\*(C'\fR, \f(CW\*(C`atmega64c1\*(C'\fR, \f(CW\*(C`atmega64hve\*(C'\fR, \f(CW\*(C`atmega64hve2\*(C'\fR, \f(CW\*(C`atmega64m1\*(C'\fR, \f(CW\*(C`atmega64rfr2\*(C'\fR, \f(CW\*(C`atmega640\*(C'\fR, \f(CW\*(C`atmega644\*(C'\fR, \f(CW\*(C`atmega644a\*(C'\fR, \f(CW\*(C`atmega644p\*(C'\fR, \f(CW\*(C`atmega644pa\*(C'\fR, \f(CW\*(C`atmega644rfr2\*(C'\fR, \f(CW\*(C`atmega645\*(C'\fR, \f(CW\*(C`atmega645a\*(C'\fR, \f(CW\*(C`atmega645p\*(C'\fR, \f(CW\*(C`atmega649\*(C'\fR, \f(CW\*(C`atmega649a\*(C'\fR, \f(CW\*(C`atmega649p\*(C'\fR, \f(CW\*(C`atmega6450\*(C'\fR, \f(CW\*(C`atmega6450a\*(C'\fR, \f(CW\*(C`atmega6450p\*(C'\fR, \f(CW\*(C`atmega6490\*(C'\fR, \f(CW\*(C`atmega6490a\*(C'\fR, \f(CW\*(C`atmega6490p\*(C'\fR, \f(CW\*(C`ata5790\*(C'\fR, \f(CW\*(C`ata5790n\*(C'\fR, \f(CW\*(C`ata5791\*(C'\fR, \f(CW\*(C`ata6613c\*(C'\fR, \f(CW\*(C`ata6614q\*(C'\fR, \f(CW\*(C`ata5782\*(C'\fR, \f(CW\*(C`ata5831\*(C'\fR, \f(CW\*(C`ata8210\*(C'\fR, \f(CW\*(C`ata8510\*(C'\fR, \f(CW\*(C`ata5787\*(C'\fR, \f(CW\*(C`ata5835\*(C'\fR, \f(CW\*(C`ata5700m322\*(C'\fR, \f(CW\*(C`ata5702m322\*(C'\fR, \f(CW\*(C`at90pwm161\*(C'\fR, \f(CW\*(C`at90pwm216\*(C'\fR, \f(CW\*(C`at90pwm316\*(C'\fR, \f(CW\*(C`at90can32\*(C'\fR, \f(CW\*(C`at90can64\*(C'\fR, \f(CW\*(C`at90scr100\*(C'\fR, \f(CW\*(C`at90usb646\*(C'\fR, \f(CW\*(C`at90usb647\*(C'\fR, \f(CW\*(C`at94k\*(C'\fR, \f(CW\*(C`m3000\*(C'\fR.
  .ie n .IP """avr51""" 4
! .el .IP \f(CWavr51\fR 4
  .IX Item "avr51"
! "Enhanced" devices with 128 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atmega128\*(C'\fR, \f(CW\*(C`atmega128a\*(C'\fR, \f(CW\*(C`atmega128rfa1\*(C'\fR, \f(CW\*(C`atmega128rfr2\*(C'\fR, \f(CW\*(C`atmega1280\*(C'\fR, \f(CW\*(C`atmega1281\*(C'\fR, \f(CW\*(C`atmega1284\*(C'\fR, \f(CW\*(C`atmega1284p\*(C'\fR, \f(CW\*(C`atmega1284rfr2\*(C'\fR, \f(CW\*(C`at90can128\*(C'\fR, \f(CW\*(C`at90usb1286\*(C'\fR, \f(CW\*(C`at90usb1287\*(C'\fR.
  .ie n .IP """avr6""" 4
! .el .IP \f(CWavr6\fR 4
  .IX Item "avr6"
! "Enhanced" devices with 3\-byte PC, i.e. with more than 128 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atmega256rfr2\*(C'\fR, \f(CW\*(C`atmega2560\*(C'\fR, \f(CW\*(C`atmega2561\*(C'\fR, \f(CW\*(C`atmega2564rfr2\*(C'\fR.
  .ie n .IP """avrxmega2""" 4
! .el .IP \f(CWavrxmega2\fR 4
  .IX Item "avrxmega2"
! "XMEGA" devices with more than 8 KiB and up to 64 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atxmega8e5\*(C'\fR, \f(CW\*(C`atxmega16a4\*(C'\fR, \f(CW\*(C`atxmega16a4u\*(C'\fR, \f(CW\*(C`atxmega16c4\*(C'\fR, \f(CW\*(C`atxmega16d4\*(C'\fR, \f(CW\*(C`atxmega16e5\*(C'\fR, \f(CW\*(C`atxmega32a4\*(C'\fR, \f(CW\*(C`atxmega32a4u\*(C'\fR, \f(CW\*(C`atxmega32c3\*(C'\fR, \f(CW\*(C`atxmega32c4\*(C'\fR, \f(CW\*(C`atxmega32d3\*(C'\fR, \f(CW\*(C`atxmega32d4\*(C'\fR, \f(CW\*(C`atxmega32e5\*(C'\fR, \f(CW\*(C`avr64da28\*(C'\fR, \f(CW\*(C`avr64da28s\*(C'\fR, \f(CW\*(C`avr64da32\*(C'\fR, \f(CW\*(C`avr64da32s\*(C'\fR, \f(CW\*(C`avr64da48\*(C'\fR, \f(CW\*(C`avr64da48s\*(C'\fR, \f(CW\*(C`avr64da64\*(C'\fR, \f(CW\*(C`avr64da64s\*(C'\fR, \f(CW\*(C`avr64db28\*(C'\fR, \f(CW\*(C`avr64db32\*(C'\fR, \f(CW\*(C`avr64db48\*(C'\fR, \f(CW\*(C`avr64db64\*(C'\fR, \f(CW\*(C`avr64dd14\*(C'\fR, \f(CW\*(C`avr64dd20\*(C'\fR, \f(CW\*(C`avr64dd28\*(C'\fR, \f(CW\*(C`avr64dd32\*(C'\fR, \f(CW\*(C`avr64du28\*(C'\fR, \f(CW\*(C`avr64du32\*(C'\fR, \f(CW\*(C`avr64ea28\*(C'\fR, \f(CW\*(C`avr64ea32\*(C'\fR, \f(CW\*(C`avr64ea48\*(C'\fR, \f(CW\*(C`avr64sd28\*(C'\fR, \f(CW\*(C`avr64sd32\*(C'\fR, \f(CW\*(C`avr64sd48\*(C'\fR.
  .ie n .IP """avrxmega3""" 4
! .el .IP \f(CWavrxmega3\fR 4
  .IX Item "avrxmega3"
! "XMEGA" devices with up to 64 KiB of combined program memory and RAM, and with program memory visible in the RAM address space.
! \&\fImcu\fR = \f(CW\*(C`attiny202\*(C'\fR, \f(CW\*(C`attiny204\*(C'\fR, \f(CW\*(C`attiny212\*(C'\fR, \f(CW\*(C`attiny214\*(C'\fR, \f(CW\*(C`attiny402\*(C'\fR, \f(CW\*(C`attiny404\*(C'\fR, \f(CW\*(C`attiny406\*(C'\fR, \f(CW\*(C`attiny412\*(C'\fR, \f(CW\*(C`attiny414\*(C'\fR, \f(CW\*(C`attiny416\*(C'\fR, \f(CW\*(C`attiny416auto\*(C'\fR, \f(CW\*(C`attiny417\*(C'\fR, \f(CW\*(C`attiny424\*(C'\fR, \f(CW\*(C`attiny426\*(C'\fR, \f(CW\*(C`attiny427\*(C'\fR, \f(CW\*(C`attiny804\*(C'\fR, \f(CW\*(C`attiny806\*(C'\fR, \f(CW\*(C`attiny807\*(C'\fR, \f(CW\*(C`attiny814\*(C'\fR, \f(CW\*(C`attiny816\*(C'\fR, \f(CW\*(C`attiny817\*(C'\fR, \f(CW\*(C`attiny824\*(C'\fR, \f(CW\*(C`attiny826\*(C'\fR, \f(CW\*(C`attiny827\*(C'\fR, \f(CW\*(C`attiny1604\*(C'\fR, \f(CW\*(C`attiny1606\*(C'\fR, \f(CW\*(C`attiny1607\*(C'\fR, \f(CW\*(C`attiny1614\*(C'\fR, \f(CW\*(C`attiny1616\*(C'\fR, \f(CW\*(C`attiny1617\*(C'\fR, \f(CW\*(C`attiny1624\*(C'\fR, \f(CW\*(C`attiny1626\*(C'\fR, \f(CW\*(C`attiny1627\*(C'\fR, \f(CW\*(C`attiny3214\*(C'\fR, \f(CW\*(C`attiny3216\*(C'\fR, \f(CW\*(C`attiny3217\*(C'\fR, \f(CW\*(C`attiny3224\*(C'\fR, \f(CW\*(C`attiny3226\*(C'\fR, \f(CW\*(C`attiny3227\*(C'\fR, \f(CW\*(C`atmega808\*(C'\fR, \f(CW\*(C`atmega809\*(C'\fR, \f(CW\*(C`atmega1608\*(C'\fR, \f(CW\*(C`atmega1609\*(C'\fR, \f(CW\*(C`atmega3208\*(C'\fR, \f(CW\*(C`atmega3209\*(C'\fR, \f(CW\*(C`atmega4808\*(C'\fR, \f(CW\*(C`atmega4809\*(C'\fR, \f(CW\*(C`avr16dd14\*(C'\fR, \f(CW\*(C`avr16dd20\*(C'\fR, \f(CW\*(C`avr16dd28\*(C'\fR, \f(CW\*(C`avr16dd32\*(C'\fR, \f(CW\*(C`avr16du14\*(C'\fR, \f(CW\*(C`avr16du20\*(C'\fR, \f(CW\*(C`avr16du28\*(C'\fR, \f(CW\*(C`avr16du32\*(C'\fR, \f(CW\*(C`avr16ea28\*(C'\fR, \f(CW\*(C`avr16ea32\*(C'\fR, \f(CW\*(C`avr16ea48\*(C'\fR, \f(CW\*(C`avr16eb14\*(C'\fR, \f(CW\*(C`avr16eb20\*(C'\fR, \f(CW\*(C`avr16eb28\*(C'\fR, \f(CW\*(C`avr16eb32\*(C'\fR, \f(CW\*(C`avr16la14\*(C'\fR, \f(CW\*(C`avr16la20\*(C'\fR, \f(CW\*(C`avr16la28\*(C'\fR, \f(CW\*(C`avr16la32\*(C'\fR, \f(CW\*(C`avr32da28\*(C'\fR, \f(CW\*(C`avr32da28s\*(C'\fR, \f(CW\*(C`avr32da32\*(C'\fR, \f(CW\*(C`avr32da32s\*(C'\fR, \f(CW\*(C`avr32da48\*(C'\fR, \f(CW\*(C`avr32da48s\*(C'\fR, \f(CW\*(C`avr32db28\*(C'\fR, \f(CW\*(C`avr32db32\*(C'\fR, \f(CW\*(C`avr32db48\*(C'\fR, \f(CW\*(C`avr32dd14\*(C'\fR, \f(CW\*(C`avr32dd20\*(C'\fR, \f(CW\*(C`avr32dd28\*(C'\fR, \f(CW\*(C`avr32dd32\*(C'\fR, \f(CW\*(C`avr32du14\*(C'\fR, \f(CW\*(C`avr32du20\*(C'\fR, \f(CW\*(C`avr32du28\*(C'\fR, \f(CW\*(C`avr32du32\*(C'\fR, \f(CW\*(C`avr32ea28\*(C'\fR, \f(CW\*(C`avr32ea32\*(C'\fR, \f(CW\*(C`avr32ea48\*(C'\fR, \f(CW\*(C`avr32eb14\*(C'\fR, \f(CW\*(C`avr32eb20\*(C'\fR, \f(CW\*(C`avr32eb28\*(C'\fR, \f(CW\*(C`avr32eb32\*(C'\fR, \f(CW\*(C`avr32la14\*(C'\fR, \f(CW\*(C`avr32la20\*(C'\fR, \f(CW\*(C`avr32la28\*(C'\fR, \f(CW\*(C`avr32la32\*(C'\fR, \f(CW\*(C`avr32sd20\*(C'\fR, \f(CW\*(C`avr32sd28\*(C'\fR, \f(CW\*(C`avr32sd32\*(C'\fR.
  .ie n .IP """avrxmega4""" 4
! .el .IP \f(CWavrxmega4\fR 4
  .IX Item "avrxmega4"
! "XMEGA" devices with more than 64 KiB and up to 128 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atxmega64a3\*(C'\fR, \f(CW\*(C`atxmega64a3u\*(C'\fR, \f(CW\*(C`atxmega64a4u\*(C'\fR, \f(CW\*(C`atxmega64b1\*(C'\fR, \f(CW\*(C`atxmega64b3\*(C'\fR, \f(CW\*(C`atxmega64c3\*(C'\fR, \f(CW\*(C`atxmega64d3\*(C'\fR, \f(CW\*(C`atxmega64d4\*(C'\fR, \f(CW\*(C`avr128da28\*(C'\fR, \f(CW\*(C`avr128da28s\*(C'\fR, \f(CW\*(C`avr128da32\*(C'\fR, \f(CW\*(C`avr128da32s\*(C'\fR, \f(CW\*(C`avr128da48\*(C'\fR, \f(CW\*(C`avr128da48s\*(C'\fR, \f(CW\*(C`avr128da64\*(C'\fR, \f(CW\*(C`avr128da64s\*(C'\fR, \f(CW\*(C`avr128db28\*(C'\fR, \f(CW\*(C`avr128db32\*(C'\fR, \f(CW\*(C`avr128db48\*(C'\fR, \f(CW\*(C`avr128db64\*(C'\fR.
  .ie n .IP """avrxmega5""" 4
! .el .IP \f(CWavrxmega5\fR 4
  .IX Item "avrxmega5"
! "XMEGA" devices with more than 64 KiB and up to 128 KiB of program memory and more than 64 KiB of RAM.
  \&\fImcu\fR = \f(CW\*(C`atxmega64a1\*(C'\fR, \f(CW\*(C`atxmega64a1u\*(C'\fR.
  .ie n .IP """avrxmega6""" 4
! .el .IP \f(CWavrxmega6\fR 4
  .IX Item "avrxmega6"
! "XMEGA" devices with more than 128 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atxmega128a3\*(C'\fR, \f(CW\*(C`atxmega128a3u\*(C'\fR, \f(CW\*(C`atxmega128b1\*(C'\fR, \f(CW\*(C`atxmega128b3\*(C'\fR, \f(CW\*(C`atxmega128c3\*(C'\fR, \f(CW\*(C`atxmega128d3\*(C'\fR, \f(CW\*(C`atxmega128d4\*(C'\fR, \f(CW\*(C`atxmega192a3\*(C'\fR, \f(CW\*(C`atxmega192a3u\*(C'\fR, \f(CW\*(C`atxmega192c3\*(C'\fR, \f(CW\*(C`atxmega192d3\*(C'\fR, \f(CW\*(C`atxmega256a3\*(C'\fR, \f(CW\*(C`atxmega256a3b\*(C'\fR, \f(CW\*(C`atxmega256a3bu\*(C'\fR, \f(CW\*(C`atxmega256a3u\*(C'\fR, \f(CW\*(C`atxmega256c3\*(C'\fR, \f(CW\*(C`atxmega256d3\*(C'\fR, \f(CW\*(C`atxmega384c3\*(C'\fR, \f(CW\*(C`atxmega384d3\*(C'\fR.
  .ie n .IP """avrxmega7""" 4
! .el .IP \f(CWavrxmega7\fR 4
  .IX Item "avrxmega7"
! "XMEGA" devices with more than 128 KiB of program memory and more than 64 KiB of RAM.
  \&\fImcu\fR = \f(CW\*(C`atxmega128a1\*(C'\fR, \f(CW\*(C`atxmega128a1u\*(C'\fR, \f(CW\*(C`atxmega128a4u\*(C'\fR.
  .ie n .IP """avrtiny""" 4
! .el .IP \f(CWavrtiny\fR 4
  .IX Item "avrtiny"
! "Reduced Tiny" Tiny core devices with only 16 general purpose registers and 512 B up to 4 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`attiny4\*(C'\fR, \f(CW\*(C`attiny5\*(C'\fR, \f(CW\*(C`attiny9\*(C'\fR, \f(CW\*(C`attiny10\*(C'\fR, \f(CW\*(C`attiny102\*(C'\fR, \f(CW\*(C`attiny104\*(C'\fR, \f(CW\*(C`attiny20\*(C'\fR, \f(CW\*(C`attiny40\*(C'\fR.
  .ie n .IP """avr1""" 4
! .el .IP \f(CWavr1\fR 4
  .IX Item "avr1"
! This ISA is implemented by the minimal AVR core and supported for assembler only.
  \&\fImcu\fR = \f(CW\*(C`attiny11\*(C'\fR, \f(CW\*(C`attiny12\*(C'\fR, \f(CW\*(C`attiny15\*(C'\fR, \f(CW\*(C`attiny28\*(C'\fR, \f(CW\*(C`at90s1200\*(C'\fR.
  .RE
  .RS 4
  .RE
! .IP \fB\-mabsdata\fR 4
  .IX Item "-mabsdata"
! Assume that all data in static storage can be accessed by LDS / STS
  instructions.  This option has only an effect on reduced Tiny devices like
  ATtiny40.  See also the \f(CW\*(C`absdata\*(C'\fR
! \&\fBAVR Variable Attributes,variable attribute\fR.
! .IP \fB\-mcvt\fR 4
  .IX Item "-mcvt"
! Use a \fIcompact vector table\fR.  Some devices support a CVT
! with only four entries: 0=Reset, 1=NMI, 2=Prio1 IRQ, 3=Prio0 IRQs.
! This option will link startup code from \f(CW\*(C`crt\fR\f(CImcu\fR\f(CW\-cvt.o\*(C'\fR
! instead of the usual \f(CW\*(C`crt\fR\f(CImcu\fR\f(CW.o\*(C'\fR.
  Apart from providing a compact vector table, the startup code will set bit
! \&\f(CW\*(C`CPUINT_CTRLA.CPUINT_CVT\*(C'\fR which enables the CVT on the device.
  .Sp
  When you do not want the startup code to set \f(CW\*(C`CPUINT_CTRLA.CPUINT_CVT\*(C'\fR,
  then you can satisfy symbol \f(CW\*(C`_\|_init_cvt\*(C'\fR so that the respective
! code is no more pulled in from \f(CW\*(C`lib\fR\f(CImcu\fR\f(CW.a\*(C'\fR.
  For example, you can link with \f(CW\*(C`\-Wl,\-\-defsym,_\|_init_cvt=0\*(C'\fR.
  .Sp
! The CVT startup code is available since
! AVR\-LibC\ v2.3 (\f(CW\*(C`https://github.com/avrdudes/avr\-libc/issues/1010\*(C'\fR).
! .IP \fB\-mdouble=\fR\fIbits\fR 4
  .IX Item "-mdouble=bits"
  .PD 0
! .IP \fB\-mlong\-double=\fR\fIbits\fR 4
  .IX Item "-mlong-double=bits"
  .PD
  Set the size (in bits) of the \f(CW\*(C`double\*(C'\fR or \f(CW\*(C`long double\*(C'\fR type,
*************** Whether or not a specific value for \fIb
*** 23971,24000 ****
  the \f(CW\*(C`\-\-with\-double=\*(C'\fR and \f(CW\*(C`\-\-with\-long\-double=\*(C'\fR
  configure\ options (\f(CW\*(C`https://gcc.gnu.org/install/configure.html#avr\*(C'\fR),
  and the same applies for the default values of the options.
! .IP "\fB\-mgas\-isr\-prologues\fR" 4
  .IX Item "-mgas-isr-prologues"
  Interrupt service routines (ISRs) may use the \f(CW\*(C`_\|_gcc_isr\*(C'\fR pseudo
! instruction supported by \s-1GNU\s0 Binutils.
  If this option is on, the feature can still be disabled for individual
! ISRs by means of the \fB\s-1AVR\s0 Function Attributes,,\f(CB\*(C`no_gccisr\*(C'\fB\fR
  function attribute.  This feature is activated per default
  if optimization is on (but not with \fB\-Og\fR, \f(CW@pxref\fR{Optimize Options}),
! and if \s-1GNU\s0 Binutils support \s-1PR21683\s0 (\f(CW\*(C`https://sourceware.org/PR21683\*(C'\fR).
! .IP "\fB\-mint8\fR" 4
  .IX Item "-mint8"
  Assume \f(CW\*(C`int\*(C'\fR to be 8\-bit integer.  This affects the sizes of all types: a
  \&\f(CW\*(C`char\*(C'\fR is 1 byte, an \f(CW\*(C`int\*(C'\fR is 1 byte, a \f(CW\*(C`long\*(C'\fR is 2 bytes,
  and \f(CW\*(C`long long\*(C'\fR is 4 bytes.  Please note that this option does not
  conform to the C standards, but it results in smaller code
  size.
! .IP "\fB\-mmain\-is\-OS_task\fR" 4
  .IX Item "-mmain-is-OS_task"
  Do not save registers in \f(CW\*(C`main\*(C'\fR.  The effect is the same like
! attaching attribute \fB\s-1AVR\s0 Function Attributes,,\f(CB\*(C`OS_task\*(C'\fB\fR
  to \f(CW\*(C`main\*(C'\fR. It is activated per default if optimization is on.
! .IP "\fB\-mno\-call\-main\fR" 4
  .IX Item "-mno-call-main"
! Don't run \f(CW\*(C`main\*(C'\fR by means of
  .Sp
  .Vb 2
  \&        XCALL  main
--- 23906,23935 ----
  the \f(CW\*(C`\-\-with\-double=\*(C'\fR and \f(CW\*(C`\-\-with\-long\-double=\*(C'\fR
  configure\ options (\f(CW\*(C`https://gcc.gnu.org/install/configure.html#avr\*(C'\fR),
  and the same applies for the default values of the options.
! .IP \fB\-mgas\-isr\-prologues\fR 4
  .IX Item "-mgas-isr-prologues"
  Interrupt service routines (ISRs) may use the \f(CW\*(C`_\|_gcc_isr\*(C'\fR pseudo
! instruction supported by GNU Binutils.
  If this option is on, the feature can still be disabled for individual
! ISRs by means of the \fBAVR Function Attributes,,\fR\f(CB\*(C`no_gccisr\*(C'\fR
  function attribute.  This feature is activated per default
  if optimization is on (but not with \fB\-Og\fR, \f(CW@pxref\fR{Optimize Options}),
! and if GNU Binutils support PR21683 (\f(CW\*(C`https://sourceware.org/PR21683\*(C'\fR).
! .IP \fB\-mint8\fR 4
  .IX Item "-mint8"
  Assume \f(CW\*(C`int\*(C'\fR to be 8\-bit integer.  This affects the sizes of all types: a
  \&\f(CW\*(C`char\*(C'\fR is 1 byte, an \f(CW\*(C`int\*(C'\fR is 1 byte, a \f(CW\*(C`long\*(C'\fR is 2 bytes,
  and \f(CW\*(C`long long\*(C'\fR is 4 bytes.  Please note that this option does not
  conform to the C standards, but it results in smaller code
  size.
! .IP \fB\-mmain\-is\-OS_task\fR 4
  .IX Item "-mmain-is-OS_task"
  Do not save registers in \f(CW\*(C`main\*(C'\fR.  The effect is the same like
! attaching attribute \fBAVR Function Attributes,,\fR\f(CB\*(C`OS_task\*(C'\fR
  to \f(CW\*(C`main\*(C'\fR. It is activated per default if optimization is on.
! .IP \fB\-mno\-call\-main\fR 4
  .IX Item "-mno-call-main"
! Don\*(Aqt run \f(CW\*(C`main\*(C'\fR by means of
  .Sp
  .Vb 2
  \&        XCALL  main
*************** By setting this option the user asserts
*** 24008,24026 ****
  .Sp
  This option can be used for devices with very limited resources in order
  to save a few bytes of code and stack space.  It will work as expected since
! AVR-LibC\ v2.3 (\f(CW\*(C`https://github.com/avrdudes/avr\-libc/issues/1012\*(C'\fR).
  With older versions, there will be no performance gain.
! .IP "\fB\-mno\-interrupts\fR" 4
  .IX Item "-mno-interrupts"
  Generated code is not compatible with hardware interrupts.
  Code size is smaller.
! .IP "\fB\-mrelax\fR" 4
  .IX Item "-mrelax"
  Try to replace \f(CW\*(C`CALL\*(C'\fR resp. \f(CW\*(C`JMP\*(C'\fR instruction by the shorter
  \&\f(CW\*(C`RCALL\*(C'\fR resp. \f(CW\*(C`RJMP\*(C'\fR instruction if applicable.
  Setting \fB\-mrelax\fR just adds the \fB\-\-mlink\-relax\fR option to
! the assembler's command line and the \fB\-\-relax\fR option to the
! linker's command line.
  .Sp
  Jump relaxing is performed by the linker because jump offsets are not
  known before code is located. Therefore, the assembler code generated by the
--- 23943,23961 ----
  .Sp
  This option can be used for devices with very limited resources in order
  to save a few bytes of code and stack space.  It will work as expected since
! AVR\-LibC\ v2.3 (\f(CW\*(C`https://github.com/avrdudes/avr\-libc/issues/1012\*(C'\fR).
  With older versions, there will be no performance gain.
! .IP \fB\-mno\-interrupts\fR 4
  .IX Item "-mno-interrupts"
  Generated code is not compatible with hardware interrupts.
  Code size is smaller.
! .IP \fB\-mrelax\fR 4
  .IX Item "-mrelax"
  Try to replace \f(CW\*(C`CALL\*(C'\fR resp. \f(CW\*(C`JMP\*(C'\fR instruction by the shorter
  \&\f(CW\*(C`RCALL\*(C'\fR resp. \f(CW\*(C`RJMP\*(C'\fR instruction if applicable.
  Setting \fB\-mrelax\fR just adds the \fB\-\-mlink\-relax\fR option to
! the assembler\*(Aqs command line and the \fB\-\-relax\fR option to the
! linker\*(Aqs command line.
  .Sp
  Jump relaxing is performed by the linker because jump offsets are not
  known before code is located. Therefore, the assembler code generated by the
*************** differ from instructions in the assemble
*** 24029,24061 ****
  .Sp
  Relaxing must be turned on if linker stubs are needed, see the
  section on \f(CW\*(C`EIND\*(C'\fR and linker stubs below.
! .IP "\fB\-mrodata\-in\-ram\fR" 4
  .IX Item "-mrodata-in-ram"
  .PD 0
! .IP "\fB\-mno\-rodata\-in\-ram\fR" 4
  .IX Item "-mno-rodata-in-ram"
  .PD
! Locate the \f(CW\*(C`.rodata\*(C'\fR sections for read-only data in \s-1RAM\s0 resp.
  in program memory.
  For most devices, there is no choice and this option acts rather
  like an assertion.
  .Sp
  Since v14 and for the AVR64* and AVR128* devices, \f(CW\*(C`.rodata\*(C'\fR
! is located in flash memory per default, provided the required \s-1GNU\s0 Binutils
! support (\s-1PR31124\s0 (\f(CW\*(C`https://sourceware.org/PR31124\*(C'\fR)) is available.
  In that case, \fB\-mrodata\-in\-ram\fR can be used to return to the old
! layout with \f(CW\*(C`.rodata\*(C'\fR in \s-1RAM.\s0
! .IP "\fB\-mtiny\-stack\fR" 4
  .IX Item "-mtiny-stack"
  Only change the lower 8 bits of the stack pointer.
! .IP "\fB\-mfract\-convert\-truncate\fR" 4
  .IX Item "-mfract-convert-truncate"
! Allow to use truncation instead of rounding towards zero for fractional fixed-point types.
! .IP "\fB\-nodevicelib\fR" 4
  .IX Item "-nodevicelib"
! Don't link against AVR-LibC's device specific library \f(CW\*(C`lib\f(CImcu\f(CW.a\*(C'\fR.
  .Sp
! Notice that since AVR-LibC v2.3, that library contains code that is
  essential for the correct functioning of a program.  In particular,
  it contains parts of the startup code like:
  \&\f(CW\*(C`_\|_init_sp\*(C'\fR (\f(CW\*(C`https://github.com/avrdudes/avr\-libc/issues/1011\*(C'\fR)
--- 23964,23996 ----
  .Sp
  Relaxing must be turned on if linker stubs are needed, see the
  section on \f(CW\*(C`EIND\*(C'\fR and linker stubs below.
! .IP \fB\-mrodata\-in\-ram\fR 4
  .IX Item "-mrodata-in-ram"
  .PD 0
! .IP \fB\-mno\-rodata\-in\-ram\fR 4
  .IX Item "-mno-rodata-in-ram"
  .PD
! Locate the \f(CW\*(C`.rodata\*(C'\fR sections for read\-only data in RAM resp.
  in program memory.
  For most devices, there is no choice and this option acts rather
  like an assertion.
  .Sp
  Since v14 and for the AVR64* and AVR128* devices, \f(CW\*(C`.rodata\*(C'\fR
! is located in flash memory per default, provided the required GNU Binutils
! support (PR31124 (\f(CW\*(C`https://sourceware.org/PR31124\*(C'\fR)) is available.
  In that case, \fB\-mrodata\-in\-ram\fR can be used to return to the old
! layout with \f(CW\*(C`.rodata\*(C'\fR in RAM.
! .IP \fB\-mtiny\-stack\fR 4
  .IX Item "-mtiny-stack"
  Only change the lower 8 bits of the stack pointer.
! .IP \fB\-mfract\-convert\-truncate\fR 4
  .IX Item "-mfract-convert-truncate"
! Allow to use truncation instead of rounding towards zero for fractional fixed\-point types.
! .IP \fB\-nodevicelib\fR 4
  .IX Item "-nodevicelib"
! Don\*(Aqt link against AVR\-LibC\*(Aqs device specific library \f(CW\*(C`lib\fR\f(CImcu\fR\f(CW.a\*(C'\fR.
  .Sp
! Notice that since AVR\-LibC v2.3, that library contains code that is
  essential for the correct functioning of a program.  In particular,
  it contains parts of the startup code like:
  \&\f(CW\*(C`_\|_init_sp\*(C'\fR (\f(CW\*(C`https://github.com/avrdudes/avr\-libc/issues/1011\*(C'\fR)
*************** to set up the hardware to use a compact
*** 24065,24094 ****
  \&\f(CW\*(C`_\|_call_main\*(C'\fR (\f(CW\*(C`https://github.com/avrdudes/avr\-libc/issues/1012\*(C'\fR)
  to call \f(CW\*(C`main\*(C'\fR and \f(CW\*(C`exit\*(C'\fR, and
  \&\f(CW\*(C`_\|_do_flmap_init\*(C'\fR (\f(CW\*(C`https://github.com/avrdudes/avr\-libc/issues/931\*(C'\fR)
! to set up \s-1FLMAP\s0 according to symbol \f(CW\*(C`_\|_flmap\*(C'\fR.
! .IP "\fB\-nodevicespecs\fR" 4
  .IX Item "-nodevicespecs"
! Don't add \fB\-specs=device\-specs/specs\-\fR\fImcu\fR to the compiler driver's
! command line.  The user takes responsibility for supplying the sub-processes
  like compiler proper, assembler and linker with appropriate command line
  options.  This means that the user has to supply her private device specs
! file by means of \fB\-specs=\fR\fIpath-to-specs-file\fR.  There is no
  more need for option \fB\-mmcu=\fR\fImcu\fR.
  .Sp
  This option can also serve as a replacement for the older way of
! specifying custom device-specs files that needed \fB\-B\fR \fIsome-path\fR to point to a directory
  which contains a folder named \f(CW\*(C`device\-specs\*(C'\fR which contains a specs file named
! \&\f(CW\*(C`specs\-\f(CImcu\f(CW\*(C'\fR, where \fImcu\fR was specified by \fB\-mmcu=\fR\fImcu\fR.
! .IP "\fB\-Waddr\-space\-convert\fR" 4
  .IX Item "-Waddr-space-convert"
  Warn about conversions between address spaces in the case where the
  resulting address space is not contained in the incoming address space.
! .IP "\fB\-Wmisspelled\-isr\fR" 4
  .IX Item "-Wmisspelled-isr"
! Warn if the \s-1ISR\s0 is misspelled, i.e. without _\|_vector prefix.
  Enabled by default.
  .PP
! \s-1AVR\s0 Optimization Options
  .IX Subsection "AVR Optimization Options"
  .PP
  The following options are pure optimization options.
--- 24000,24029 ----
  \&\f(CW\*(C`_\|_call_main\*(C'\fR (\f(CW\*(C`https://github.com/avrdudes/avr\-libc/issues/1012\*(C'\fR)
  to call \f(CW\*(C`main\*(C'\fR and \f(CW\*(C`exit\*(C'\fR, and
  \&\f(CW\*(C`_\|_do_flmap_init\*(C'\fR (\f(CW\*(C`https://github.com/avrdudes/avr\-libc/issues/931\*(C'\fR)
! to set up FLMAP according to symbol \f(CW\*(C`_\|_flmap\*(C'\fR.
! .IP \fB\-nodevicespecs\fR 4
  .IX Item "-nodevicespecs"
! Don\*(Aqt add \fB\-specs=device\-specs/specs\-\fR\fImcu\fR to the compiler driver\*(Aqs
! command line.  The user takes responsibility for supplying the sub\-processes
  like compiler proper, assembler and linker with appropriate command line
  options.  This means that the user has to supply her private device specs
! file by means of \fB\-specs=\fR\fIpath\-to\-specs\-file\fR.  There is no
  more need for option \fB\-mmcu=\fR\fImcu\fR.
  .Sp
  This option can also serve as a replacement for the older way of
! specifying custom device\-specs files that needed \fB\-B\fR \fIsome\-path\fR to point to a directory
  which contains a folder named \f(CW\*(C`device\-specs\*(C'\fR which contains a specs file named
! \&\f(CW\*(C`specs\-\fR\f(CImcu\fR\f(CW\*(C'\fR, where \fImcu\fR was specified by \fB\-mmcu=\fR\fImcu\fR.
! .IP \fB\-Waddr\-space\-convert\fR 4
  .IX Item "-Waddr-space-convert"
  Warn about conversions between address spaces in the case where the
  resulting address space is not contained in the incoming address space.
! .IP \fB\-Wmisspelled\-isr\fR 4
  .IX Item "-Wmisspelled-isr"
! Warn if the ISR is misspelled, i.e. without _\|_vector prefix.
  Enabled by default.
  .PP
! AVR Optimization Options
  .IX Subsection "AVR Optimization Options"
  .PP
  The following options are pure optimization options.
*************** Options \fB\-mgas\-isr\-prologues\fR, \f
*** 24096,24102 ****
  \&\fB\-mno\-call\-main\fR and \fB\-mrelax\fR from above are only
  \&\fIalmost\fR optimization options, since there are rare occasions
  where their different code generation matters.
! .IP "\fB\-maccumulate\-args\fR" 4
  .IX Item "-maccumulate-args"
  Accumulate outgoing function arguments and acquire/release the needed
  stack space for outgoing function arguments once in function
--- 24031,24037 ----
  \&\fB\-mno\-call\-main\fR and \fB\-mrelax\fR from above are only
  \&\fIalmost\fR optimization options, since there are rare occasions
  where their different code generation matters.
! .IP \fB\-maccumulate\-args\fR 4
  .IX Item "-maccumulate-args"
  Accumulate outgoing function arguments and acquire/release the needed
  stack space for outgoing function arguments once in function
*************** See also the \fB\-fdefer\-pop\fR
*** 24106,24168 ****
  \&\fBOptimize Options,,optimization option\fR.
  .Sp
  Popping the arguments after the function call can be expensive on
! \&\s-1AVR\s0 so that accumulating the stack space might lead to smaller
  executables because arguments need not be removed from the
  stack after such a function call.
  .Sp
  This option can lead to reduced code size for functions that perform
  several calls to functions that get their arguments on the stack like
! calls to printf-like functions.
! .IP "\fB\-mbranch\-cost=\fR\fIcost\fR" 4
  .IX Item "-mbranch-cost=cost"
  Set the branch costs for conditional branch instructions to
! \&\fIcost\fR.  Reasonable values for \fIcost\fR are small, non-negative
  integers. The default branch cost is 0.
! .IP "\fB\-mcall\-prologues\fR" 4
  .IX Item "-mcall-prologues"
  Functions prologues/epilogues are expanded as calls to appropriate
  subroutines.  Code size is smaller.
! .IP "\fB\-mfuse\-add\fR" 4
  .IX Item "-mfuse-add"
  .PD 0
! .IP "\fB\-mno\-fuse\-add\fR" 4
  .IX Item "-mno-fuse-add"
! .IP "\fB\-mfuse\-add=\fR\fIlevel\fR" 4
  .IX Item "-mfuse-add=level"
  .PD
  Optimize indirect memory accesses on reduced Tiny devices.
! The default uses \f(CW\*(C`\f(CIlevel\f(CW=1\*(C'\fR for optimizations \fB\-Og\fR
! and \fB\-O1\fR, and \f(CW\*(C`\f(CIlevel\f(CW=2\*(C'\fR for higher optimizations.
  Valid values for \fIlevel\fR are \f(CW0\fR, \f(CW1\fR and \f(CW2\fR.
! .IP "\fB\-mfuse\-move\fR" 4
  .IX Item "-mfuse-move"
  .PD 0
! .IP "\fB\-mno\-fuse\-move\fR" 4
  .IX Item "-mno-fuse-move"
! .IP "\fB\-mfuse\-move=\fR\fIlevel\fR" 4
  .IX Item "-mfuse-move=level"
  .PD
  Run a post reload optimization pass that tries to fuse move instructions
! and to split multi-byte instructions into 8\-bit operations.
! The default uses \f(CW\*(C`\f(CIlevel\f(CW=3\*(C'\fR for optimization \fB\-O1\fR,
! and \f(CW\*(C`\f(CIlevel\f(CW=23\*(C'\fR for higher optimizations.
  Valid values for \fIlevel\fR are in the range \f(CW0\fR ... \f(CW23\fR
  which is a 3:2:2:2 mixed radix value.  Each digit controls some
  aspect of the optimization.
! .IP "\fB\-mfuse\-move2\fR" 4
  .IX Item "-mfuse-move2"
  Run a post combine optimization pass that tries to fuse move instructions.
! .IP "\fB\-mstrict\-X\fR" 4
  .IX Item "-mstrict-X"
  Use address register \f(CW\*(C`X\*(C'\fR in a way proposed by the hardware.  This means
! that \f(CW\*(C`X\*(C'\fR is only used in indirect, post-increment or
! pre-decrement addressing.
  .Sp
  Without this option, the \f(CW\*(C`X\*(C'\fR register may be used in the same way
  as \f(CW\*(C`Y\*(C'\fR or \f(CW\*(C`Z\*(C'\fR which then is emulated by additional
  instructions.
  For example, loading a value with \f(CW\*(C`X+const\*(C'\fR addressing with a
! small non-negative \f(CW\*(C`const < 64\*(C'\fR to a register \fIRn\fR is
  performed as
  .Sp
  .Vb 3
--- 24041,24103 ----
  \&\fBOptimize Options,,optimization option\fR.
  .Sp
  Popping the arguments after the function call can be expensive on
! AVR so that accumulating the stack space might lead to smaller
  executables because arguments need not be removed from the
  stack after such a function call.
  .Sp
  This option can lead to reduced code size for functions that perform
  several calls to functions that get their arguments on the stack like
! calls to printf\-like functions.
! .IP \fB\-mbranch\-cost=\fR\fIcost\fR 4
  .IX Item "-mbranch-cost=cost"
  Set the branch costs for conditional branch instructions to
! \&\fIcost\fR.  Reasonable values for \fIcost\fR are small, non\-negative
  integers. The default branch cost is 0.
! .IP \fB\-mcall\-prologues\fR 4
  .IX Item "-mcall-prologues"
  Functions prologues/epilogues are expanded as calls to appropriate
  subroutines.  Code size is smaller.
! .IP \fB\-mfuse\-add\fR 4
  .IX Item "-mfuse-add"
  .PD 0
! .IP \fB\-mno\-fuse\-add\fR 4
  .IX Item "-mno-fuse-add"
! .IP \fB\-mfuse\-add=\fR\fIlevel\fR 4
  .IX Item "-mfuse-add=level"
  .PD
  Optimize indirect memory accesses on reduced Tiny devices.
! The default uses \f(CW\*(C`\fR\f(CIlevel\fR\f(CW=1\*(C'\fR for optimizations \fB\-Og\fR
! and \fB\-O1\fR, and \f(CW\*(C`\fR\f(CIlevel\fR\f(CW=2\*(C'\fR for higher optimizations.
  Valid values for \fIlevel\fR are \f(CW0\fR, \f(CW1\fR and \f(CW2\fR.
! .IP \fB\-mfuse\-move\fR 4
  .IX Item "-mfuse-move"
  .PD 0
! .IP \fB\-mno\-fuse\-move\fR 4
  .IX Item "-mno-fuse-move"
! .IP \fB\-mfuse\-move=\fR\fIlevel\fR 4
  .IX Item "-mfuse-move=level"
  .PD
  Run a post reload optimization pass that tries to fuse move instructions
! and to split multi\-byte instructions into 8\-bit operations.
! The default uses \f(CW\*(C`\fR\f(CIlevel\fR\f(CW=3\*(C'\fR for optimization \fB\-O1\fR,
! and \f(CW\*(C`\fR\f(CIlevel\fR\f(CW=23\*(C'\fR for higher optimizations.
  Valid values for \fIlevel\fR are in the range \f(CW0\fR ... \f(CW23\fR
  which is a 3:2:2:2 mixed radix value.  Each digit controls some
  aspect of the optimization.
! .IP \fB\-mfuse\-move2\fR 4
  .IX Item "-mfuse-move2"
  Run a post combine optimization pass that tries to fuse move instructions.
! .IP \fB\-mstrict\-X\fR 4
  .IX Item "-mstrict-X"
  Use address register \f(CW\*(C`X\*(C'\fR in a way proposed by the hardware.  This means
! that \f(CW\*(C`X\*(C'\fR is only used in indirect, post\-increment or
! pre\-decrement addressing.
  .Sp
  Without this option, the \f(CW\*(C`X\*(C'\fR register may be used in the same way
  as \f(CW\*(C`Y\*(C'\fR or \f(CW\*(C`Z\*(C'\fR which then is emulated by additional
  instructions.
  For example, loading a value with \f(CW\*(C`X+const\*(C'\fR addressing with a
! small non\-negative \f(CW\*(C`const < 64\*(C'\fR to a register \fIRn\fR is
  performed as
  .Sp
  .Vb 3
*************** performed as
*** 24170,24188 ****
  \&        ld   <Rn>, X        ; <Rn> = *X
  \&        sbiw r26, const   ; X \-= const
  .Ve
! .IP "\fB\-msplit\-bit\-shift\fR" 4
  .IX Item "-msplit-bit-shift"
! Split multi-byte shifts with a constant offset into a shift with
! a byte offset and a residual shift with a non-byte offset.
  This optimization is turned on per default for \fB\-O2\fR and higher,
  including \fB\-Os\fR but excluding \fB\-Oz\fR.
  Splitting of shifts with a constant offset that is
  a multiple of 8 is controlled by \fB\-mfuse\-move\fR.
! .IP "\fB\-msplit\-ldst\fR" 4
  .IX Item "-msplit-ldst"
! Split multi-byte loads and stores into several byte loads and stores.
  This optimization is turned on per default for \fB\-O2\fR and higher.
! .IP "\fB\-muse\-nonzero\-bits\fR" 4
  .IX Item "-muse-nonzero-bits"
  Enable optimizations that are only possible when some bits in a
  register are always zero.
--- 24105,24123 ----
  \&        ld   <Rn>, X        ; <Rn> = *X
  \&        sbiw r26, const   ; X \-= const
  .Ve
! .IP \fB\-msplit\-bit\-shift\fR 4
  .IX Item "-msplit-bit-shift"
! Split multi\-byte shifts with a constant offset into a shift with
! a byte offset and a residual shift with a non\-byte offset.
  This optimization is turned on per default for \fB\-O2\fR and higher,
  including \fB\-Os\fR but excluding \fB\-Oz\fR.
  Splitting of shifts with a constant offset that is
  a multiple of 8 is controlled by \fB\-mfuse\-move\fR.
! .IP \fB\-msplit\-ldst\fR 4
  .IX Item "-msplit-ldst"
! Split multi\-byte loads and stores into several byte loads and stores.
  This optimization is turned on per default for \fB\-O2\fR and higher.
! .IP \fB\-muse\-nonzero\-bits\fR 4
  .IX Item "-muse-nonzero-bits"
  Enable optimizations that are only possible when some bits in a
  register are always zero.
*************** when \f(CW\*(C`EICALL\*(C'\fR or \f(CW\*
*** 24203,24247 ****
  .PP
  Indirect jumps and calls on these devices are handled as follows by
  the compiler and are subject to some limitations:
! .IP "*" 4
  The compiler never sets \f(CW\*(C`EIND\*(C'\fR.
! .IP "*" 4
  The compiler uses \f(CW\*(C`EIND\*(C'\fR implicitly in \f(CW\*(C`EICALL\*(C'\fR/\f(CW\*(C`EIJMP\*(C'\fR
  instructions or might read \f(CW\*(C`EIND\*(C'\fR directly in order to emulate an
  indirect call/jump by means of a \f(CW\*(C`RET\*(C'\fR instruction.
! .IP "*" 4
  The compiler assumes that \f(CW\*(C`EIND\*(C'\fR never changes during the startup
  code or during the application. In particular, \f(CW\*(C`EIND\*(C'\fR is not
  saved/restored in function or interrupt service routine
  prologue/epilogue.
! .IP "*" 4
  For indirect calls to functions and computed goto, the linker
  generates \fIstubs\fR. Stubs are jump pads sometimes also called
  \&\fItrampolines\fR. Thus, the indirect call/jump jumps to such a stub.
  The stub contains a direct jump to the desired address.
! .IP "*" 4
  Linker relaxation must be turned on so that the linker generates
  the stubs correctly in all situations. See the compiler option
  \&\fB\-mrelax\fR and the linker option \fB\-\-relax\fR.
  There are corner cases where the linker is supposed to generate stubs
  but aborts without relaxation and without a helpful error message.
! .IP "*" 4
  The default linker script is arranged for code with \f(CW\*(C`EIND = 0\*(C'\fR.
  If code is supposed to work for a setup with \f(CW\*(C`EIND != 0\*(C'\fR, a custom
  linker script has to be used in order to place the sections whose
  name start with \f(CW\*(C`.trampolines\*(C'\fR into the segment where \f(CW\*(C`EIND\*(C'\fR
  points to.
! .IP "*" 4
  The startup code from libgcc never sets \f(CW\*(C`EIND\*(C'\fR.
! Notice that startup code is a blend of code from libgcc and AVR-LibC.
! For the impact of AVR-LibC on \f(CW\*(C`EIND\*(C'\fR, see the
! AVR-LibC\ user\ manual (\f(CW\*(C`https://avrdudes.github.io/avr\-libc/avr\-libc\-user\-manual/\*(C'\fR).
! .IP "*" 4
! It is legitimate for user-specific startup code to set up \f(CW\*(C`EIND\*(C'\fR
  early, for example by means of initialization code located in
  section \f(CW\*(C`.init3\*(C'\fR. Such code runs prior to general startup code
! that initializes \s-1RAM\s0 and calls constructors, but after the bit
! of startup code from AVR-LibC that sets \f(CW\*(C`EIND\*(C'\fR to the segment
  where the vector table is located.
  .Sp
  .Vb 1
--- 24138,24182 ----
  .PP
  Indirect jumps and calls on these devices are handled as follows by
  the compiler and are subject to some limitations:
! .IP * 4
  The compiler never sets \f(CW\*(C`EIND\*(C'\fR.
! .IP * 4
  The compiler uses \f(CW\*(C`EIND\*(C'\fR implicitly in \f(CW\*(C`EICALL\*(C'\fR/\f(CW\*(C`EIJMP\*(C'\fR
  instructions or might read \f(CW\*(C`EIND\*(C'\fR directly in order to emulate an
  indirect call/jump by means of a \f(CW\*(C`RET\*(C'\fR instruction.
! .IP * 4
  The compiler assumes that \f(CW\*(C`EIND\*(C'\fR never changes during the startup
  code or during the application. In particular, \f(CW\*(C`EIND\*(C'\fR is not
  saved/restored in function or interrupt service routine
  prologue/epilogue.
! .IP * 4
  For indirect calls to functions and computed goto, the linker
  generates \fIstubs\fR. Stubs are jump pads sometimes also called
  \&\fItrampolines\fR. Thus, the indirect call/jump jumps to such a stub.
  The stub contains a direct jump to the desired address.
! .IP * 4
  Linker relaxation must be turned on so that the linker generates
  the stubs correctly in all situations. See the compiler option
  \&\fB\-mrelax\fR and the linker option \fB\-\-relax\fR.
  There are corner cases where the linker is supposed to generate stubs
  but aborts without relaxation and without a helpful error message.
! .IP * 4
  The default linker script is arranged for code with \f(CW\*(C`EIND = 0\*(C'\fR.
  If code is supposed to work for a setup with \f(CW\*(C`EIND != 0\*(C'\fR, a custom
  linker script has to be used in order to place the sections whose
  name start with \f(CW\*(C`.trampolines\*(C'\fR into the segment where \f(CW\*(C`EIND\*(C'\fR
  points to.
! .IP * 4
  The startup code from libgcc never sets \f(CW\*(C`EIND\*(C'\fR.
! Notice that startup code is a blend of code from libgcc and AVR\-LibC.
! For the impact of AVR\-LibC on \f(CW\*(C`EIND\*(C'\fR, see the
! AVR\-LibC\ user\ manual (\f(CW\*(C`https://avrdudes.github.io/avr\-libc/avr\-libc\-user\-manual/\*(C'\fR).
! .IP * 4
! It is legitimate for user\-specific startup code to set up \f(CW\*(C`EIND\*(C'\fR
  early, for example by means of initialization code located in
  section \f(CW\*(C`.init3\*(C'\fR. Such code runs prior to general startup code
! that initializes RAM and calls constructors, but after the bit
! of startup code from AVR\-LibC that sets \f(CW\*(C`EIND\*(C'\fR to the segment
  where the vector table is located.
  .Sp
  .Vb 1
*************** where the vector table is located.
*** 24257,24263 ****
  .Ve
  .Sp
  The \f(CW\*(C`_\|_trampolines_start\*(C'\fR symbol is defined in the linker script.
! .IP "*" 4
  Stubs are generated automatically by the linker if
  the following two conditions are met:
  .RS 4
--- 24192,24198 ----
  .Ve
  .Sp
  The \f(CW\*(C`_\|_trampolines_start\*(C'\fR symbol is defined in the linker script.
! .IP * 4
  Stubs are generated automatically by the linker if
  the following two conditions are met:
  .RS 4
*************** the following two conditions are met:
*** 24276,24282 ****
  .RE
  .RS 4
  .RE
! .IP "*" 4
  The compiler emits such \f(CW\*(C`gs\*(C'\fR modifiers for code labels in the
  following situations:
  .RS 4
--- 24211,24217 ----
  .RE
  .RS 4
  .RE
! .IP * 4
  The compiler emits such \f(CW\*(C`gs\*(C'\fR modifiers for code labels in the
  following situations:
  .RS 4
*************** following situations:
*** 24285,24309 ****
  .PD 0
  .IP "\-<Computed goto.>" 4
  .IX Item "-<Computed goto.>"
! .IP "\-<If prologue-save function is used, see \fB\-mcall\-prologues\fR>" 4
  .IX Item "-<If prologue-save function is used, see -mcall-prologues>"
  .PD
! command-line option.
  .IP "\-<Switch/case dispatch tables. If you do not want such dispatch>" 4
  .IX Item "-<Switch/case dispatch tables. If you do not want such dispatch>"
! tables you can specify the \fB\-fno\-jump\-tables\fR command-line option.
! .IP "\-<C and \*(C+ constructors/destructors called during startup/shutdown.>" 4
! .IX Item "-<C and constructors/destructors called during startup/shutdown.>"
  .PD 0
! .ie n .IP "\-<If the tools hit a ""gs()"" modifier explained above.>" 4
  .el .IP "\-<If the tools hit a \f(CWgs()\fR modifier explained above.>" 4
  .IX Item "-<If the tools hit a gs() modifier explained above.>"
  .RE
  .RS 4
  .RE
! .IP "*" 4
! .PD
! Jumping to non-symbolic addresses like so is \fInot\fR supported:
  .Sp
  .Vb 5
  \&        int main (void)
--- 24220,24244 ----
  .PD 0
  .IP "\-<Computed goto.>" 4
  .IX Item "-<Computed goto.>"
! .IP "\-<If prologue\-save function is used, see \fB\-mcall\-prologues\fR>" 4
  .IX Item "-<If prologue-save function is used, see -mcall-prologues>"
  .PD
! command\-line option.
  .IP "\-<Switch/case dispatch tables. If you do not want such dispatch>" 4
  .IX Item "-<Switch/case dispatch tables. If you do not want such dispatch>"
! tables you can specify the \fB\-fno\-jump\-tables\fR command\-line option.
! .IP "\-<C and C++ constructors/destructors called during startup/shutdown.>" 4
! .IX Item "-<C and C++ constructors/destructors called during startup/shutdown.>"
  .PD 0
! .ie n .IP "\-<If the tools hit a gs() modifier explained above.>" 4
  .el .IP "\-<If the tools hit a \f(CWgs()\fR modifier explained above.>" 4
  .IX Item "-<If the tools hit a gs() modifier explained above.>"
+ .PD
  .RE
  .RS 4
  .RE
! .IP * 4
! Jumping to non\-symbolic addresses like so is \fInot\fR supported:
  .Sp
  .Vb 5
  \&        int main (void)
*************** Alternatively, \f(CW\*(C`func_4\*(C'\fR
*** 24332,24338 ****
  Handling of the \f(CW\*(C`RAMPD\*(C'\fR, \f(CW\*(C`RAMPX\*(C'\fR, \f(CW\*(C`RAMPY\*(C'\fR and \f(CW\*(C`RAMPZ\*(C'\fR Special Function Registers
  .IX Subsection "Handling of the RAMPD, RAMPX, RAMPY and RAMPZ Special Function Registers"
  .PP
! Some \s-1AVR\s0 devices support memories larger than the 64 KiB range
  that can be accessed with 16\-bit pointers.  To access memory locations
  outside this 64 KiB range, the content of a \f(CW\*(C`RAMP\*(C'\fR
  register is used as high part of the address:
--- 24267,24273 ----
  Handling of the \f(CW\*(C`RAMPD\*(C'\fR, \f(CW\*(C`RAMPX\*(C'\fR, \f(CW\*(C`RAMPY\*(C'\fR and \f(CW\*(C`RAMPZ\*(C'\fR Special Function Registers
  .IX Subsection "Handling of the RAMPD, RAMPX, RAMPY and RAMPZ Special Function Registers"
  .PP
! Some AVR devices support memories larger than the 64 KiB range
  that can be accessed with 16\-bit pointers.  To access memory locations
  outside this 64 KiB range, the content of a \f(CW\*(C`RAMP\*(C'\fR
  register is used as high part of the address:
*************** The \f(CW\*(C`X\*(C'\fR, \f(CW\*(C`Y\*(C
*** 24340,24380 ****
  with the \f(CW\*(C`RAMPX\*(C'\fR, \f(CW\*(C`RAMPY\*(C'\fR, \f(CW\*(C`RAMPZ\*(C'\fR special function
  register, respectively, to get a wide address. Similarly,
  \&\f(CW\*(C`RAMPD\*(C'\fR is used together with direct addressing.
! .IP "*" 4
  The startup code initializes the \f(CW\*(C`RAMP\*(C'\fR special function
  registers with zero.
! .IP "*" 4
! If a \fB\s-1AVR\s0 Named Address Spaces,named address space\fR other than
  generic or \f(CW\*(C`_\|_flash\*(C'\fR is used, then \f(CW\*(C`RAMPZ\*(C'\fR is set
  as needed before the operation.
! .IP "*" 4
! If the device supports \s-1RAM\s0 larger than 64 KiB and the compiler
  needs to change \f(CW\*(C`RAMPZ\*(C'\fR to accomplish an operation, \f(CW\*(C`RAMPZ\*(C'\fR
  is reset to zero after the operation.
! .IP "*" 4
! If the device comes with a specific \f(CW\*(C`RAMP\*(C'\fR register, the \s-1ISR\s0
! prologue/epilogue saves/restores that \s-1SFR\s0 and initializes it with
! zero in case the \s-1ISR\s0 code might (implicitly) use it.
! .IP "*" 4
! \&\s-1RAM\s0 larger than 64 KiB is not supported by \s-1GCC\s0 for \s-1AVR\s0 targets.
  If you use inline assembler to read from locations outside the
  16\-bit address range and change one of the \f(CW\*(C`RAMP\*(C'\fR registers,
  you must reset it to zero after the access.
  .PP
! \s-1AVR\s0 Built-in Macros
  .IX Subsection "AVR Built-in Macros"
  .PP
! \&\s-1GCC\s0 defines several built-in macros so that the user code can test
  for the presence or absence of features.  Almost any of the following
! built-in macros are deduced from device capabilities and thus
! triggered by the \fB\-mmcu=\fR command-line option.
  .PP
! For even more AVR-specific built-in macros see
! \&\fB\s-1AVR\s0 Named Address Spaces\fR and \fB\s-1AVR\s0 Built-in Functions\fR.
  .ie n .IP """_\|_AVR_ARCH_\|_""" 4
! .el .IP "\f(CW_\|_AVR_ARCH_\|_\fR" 4
  .IX Item "__AVR_ARCH__"
! Build-in macro that resolves to a decimal number that identifies the
  architecture and depends on the \fB\-mmcu=\fR\fImcu\fR option.
  Possible values are:
  .Sp
--- 24275,24315 ----
  with the \f(CW\*(C`RAMPX\*(C'\fR, \f(CW\*(C`RAMPY\*(C'\fR, \f(CW\*(C`RAMPZ\*(C'\fR special function
  register, respectively, to get a wide address. Similarly,
  \&\f(CW\*(C`RAMPD\*(C'\fR is used together with direct addressing.
! .IP * 4
  The startup code initializes the \f(CW\*(C`RAMP\*(C'\fR special function
  registers with zero.
! .IP * 4
! If a \fBAVR Named Address Spaces,named address space\fR other than
  generic or \f(CW\*(C`_\|_flash\*(C'\fR is used, then \f(CW\*(C`RAMPZ\*(C'\fR is set
  as needed before the operation.
! .IP * 4
! If the device supports RAM larger than 64 KiB and the compiler
  needs to change \f(CW\*(C`RAMPZ\*(C'\fR to accomplish an operation, \f(CW\*(C`RAMPZ\*(C'\fR
  is reset to zero after the operation.
! .IP * 4
! If the device comes with a specific \f(CW\*(C`RAMP\*(C'\fR register, the ISR
! prologue/epilogue saves/restores that SFR and initializes it with
! zero in case the ISR code might (implicitly) use it.
! .IP * 4
! RAM larger than 64 KiB is not supported by GCC for AVR targets.
  If you use inline assembler to read from locations outside the
  16\-bit address range and change one of the \f(CW\*(C`RAMP\*(C'\fR registers,
  you must reset it to zero after the access.
  .PP
! AVR Built\-in Macros
  .IX Subsection "AVR Built-in Macros"
  .PP
! GCC defines several built\-in macros so that the user code can test
  for the presence or absence of features.  Almost any of the following
! built\-in macros are deduced from device capabilities and thus
! triggered by the \fB\-mmcu=\fR command\-line option.
  .PP
! For even more AVR\-specific built\-in macros see
! \&\fBAVR Named Address Spaces\fR and \fBAVR Built\-in Functions\fR.
  .ie n .IP """_\|_AVR_ARCH_\|_""" 4
! .el .IP \f(CW_\|_AVR_ARCH_\|_\fR 4
  .IX Item "__AVR_ARCH__"
! Build\-in macro that resolves to a decimal number that identifies the
  architecture and depends on the \fB\-mmcu=\fR\fImcu\fR option.
  Possible values are:
  .Sp
*************** respectively and
*** 24393,24574 ****
  for \fImcu\fR=\f(CW\*(C`avrtiny\*(C'\fR,
  \&\f(CW\*(C`avrxmega2\*(C'\fR, \f(CW\*(C`avrxmega3\*(C'\fR, \f(CW\*(C`avrxmega4\*(C'\fR,
  \&\f(CW\*(C`avrxmega5\*(C'\fR, \f(CW\*(C`avrxmega6\*(C'\fR, \f(CW\*(C`avrxmega7\*(C'\fR, respectively.
! If \fImcu\fR specifies a device, this built-in macro is set
  accordingly. For example, with \fB\-mmcu=atmega8\fR the macro is
  defined to \f(CW4\fR.
! .ie n .IP """_\|_AVR_\fIDevice\fP_\|_""" 4
! .el .IP "\f(CW_\|_AVR_\f(CIDevice\f(CW_\|_\fR" 4
  .IX Item "__AVR_Device__"
! Setting \fB\-mmcu=\fR\fIdevice\fR defines this built-in macro which reflects
! the device's name. For example, \fB\-mmcu=atmega8\fR defines the
! built-in macro \f(CW\*(C`_\|_AVR_ATmega8_\|_\*(C'\fR, \fB\-mmcu=attiny261a\fR defines
  \&\f(CW\*(C`_\|_AVR_ATtiny261A_\|_\*(C'\fR, etc.
  .Sp
! The built-in macros' names follow
! the scheme \f(CW\*(C`_\|_AVR_\f(CIDevice\f(CW_\|_\*(C'\fR where \fIDevice\fR is
! the device name as from the \s-1AVR\s0 user manual. The difference between
! \&\fIDevice\fR in the built-in macro and \fIdevice\fR in
  \&\fB\-mmcu=\fR\fIdevice\fR is that the latter is always lowercase.
  .Sp
  If \fIdevice\fR is not a device but only a core architecture like
  \&\fBavr51\fR, this macro is not defined.
  .ie n .IP """_\|_AVR_DEVICE_NAME_\|_""" 4
! .el .IP "\f(CW_\|_AVR_DEVICE_NAME_\|_\fR" 4
  .IX Item "__AVR_DEVICE_NAME__"
! Setting \fB\-mmcu=\fR\fIdevice\fR defines this built-in macro to
! the device's name. For example, with \fB\-mmcu=atmega8\fR the macro
  is defined to \f(CW\*(C`atmega8\*(C'\fR.
  .Sp
  If \fIdevice\fR is not a device but only a core architecture like
  \&\fBavr51\fR, this macro is not defined.
  .ie n .IP """_\|_AVR_CVT_\|_""" 4
! .el .IP "\f(CW_\|_AVR_CVT_\|_\fR" 4
  .IX Item "__AVR_CVT__"
  The code is being compiled with option \f(CW\*(C`\-mcvt\*(C'\fR to use a
  \&\fIcompact vector table\fR.
  .ie n .IP """_\|_AVR_XMEGA_\|_""" 4
! .el .IP "\f(CW_\|_AVR_XMEGA_\|_\fR" 4
  .IX Item "__AVR_XMEGA__"
! The device / architecture belongs to the \s-1XMEGA\s0 family of devices.
  .ie n .IP """_\|_AVR_HAVE_ADIW_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_ADIW_\|_\fR" 4
  .IX Item "__AVR_HAVE_ADIW__"
  The device has the \f(CW\*(C`ADIW\*(C'\fR and \f(CW\*(C`SBIW\*(C'\fR instructions.
  .ie n .IP """_\|_AVR_HAVE_ELPM_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_ELPM_\|_\fR" 4
  .IX Item "__AVR_HAVE_ELPM__"
  The device has the \f(CW\*(C`ELPM\*(C'\fR instruction.
  .ie n .IP """_\|_AVR_HAVE_ELPMX_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_ELPMX_\|_\fR" 4
  .IX Item "__AVR_HAVE_ELPMX__"
! The device has the \f(CW\*(C`ELPM R\f(CIn\f(CW,Z\*(C'\fR and \f(CW\*(C`ELPM
! R\f(CIn\f(CW,Z+\*(C'\fR instructions.
  .ie n .IP """_\|_AVR_HAVE_LPMX_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_LPMX_\|_\fR" 4
  .IX Item "__AVR_HAVE_LPMX__"
! The device has the \f(CW\*(C`LPM R\f(CIn\f(CW,Z\*(C'\fR and
! \&\f(CW\*(C`LPM R\f(CIn\f(CW,Z+\*(C'\fR instructions.
  .ie n .IP """_\|_AVR_HAVE_MOVW_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_MOVW_\|_\fR" 4
  .IX Item "__AVR_HAVE_MOVW__"
  The device has the \f(CW\*(C`MOVW\*(C'\fR instruction to perform 16\-bit
! register-register moves.
  .ie n .IP """_\|_AVR_HAVE_MUL_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_MUL_\|_\fR" 4
  .IX Item "__AVR_HAVE_MUL__"
  The device has a hardware multiplier.
  .ie n .IP """_\|_AVR_HAVE_JMP_CALL_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_JMP_CALL_\|_\fR" 4
  .IX Item "__AVR_HAVE_JMP_CALL__"
  The device has the \f(CW\*(C`JMP\*(C'\fR and \f(CW\*(C`CALL\*(C'\fR instructions.
  This is the case for devices with more than 8 KiB of program
  memory.
  .ie n .IP """_\|_AVR_HAVE_EIJMP_EICALL_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_EIJMP_EICALL_\|_\fR" 4
  .IX Item "__AVR_HAVE_EIJMP_EICALL__"
  .PD 0
  .ie n .IP """_\|_AVR_3_BYTE_PC_\|_""" 4
! .el .IP "\f(CW_\|_AVR_3_BYTE_PC_\|_\fR" 4
  .IX Item "__AVR_3_BYTE_PC__"
  .PD
  The device has the \f(CW\*(C`EIJMP\*(C'\fR and \f(CW\*(C`EICALL\*(C'\fR instructions.
  This is the case for devices with more than 128 KiB of program memory.
  This also means that the program counter
! (\s-1PC\s0) is 3 bytes wide.
  .ie n .IP """_\|_AVR_2_BYTE_PC_\|_""" 4
! .el .IP "\f(CW_\|_AVR_2_BYTE_PC_\|_\fR" 4
  .IX Item "__AVR_2_BYTE_PC__"
! The program counter (\s-1PC\s0) is 2 bytes wide. This is the case for devices
  with up to 128 KiB of program memory.
  .ie n .IP """_\|_AVR_HAVE_8BIT_SP_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_8BIT_SP_\|_\fR" 4
  .IX Item "__AVR_HAVE_8BIT_SP__"
  .PD 0
  .ie n .IP """_\|_AVR_HAVE_16BIT_SP_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_16BIT_SP_\|_\fR" 4
  .IX Item "__AVR_HAVE_16BIT_SP__"
  .PD
! The stack pointer (\s-1SP\s0) register is treated as 8\-bit respectively
  16\-bit register by the compiler.
  The definition of these macros is affected by \fB\-mtiny\-stack\fR.
  .ie n .IP """_\|_AVR_HAVE_SPH_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_SPH_\|_\fR" 4
  .IX Item "__AVR_HAVE_SPH__"
  .PD 0
  .ie n .IP """_\|_AVR_SP8_\|_""" 4
! .el .IP "\f(CW_\|_AVR_SP8_\|_\fR" 4
  .IX Item "__AVR_SP8__"
  .PD
! The device has the \s-1SPH\s0 (high part of stack pointer) special function
  register or has an 8\-bit stack pointer, respectively.
  The definition of these macros is affected by \fB\-mmcu=\fR and
  in the cases of \fB\-mmcu=avr2\fR and \fB\-mmcu=avr25\fR also
  by \fB\-msp8\fR.
  .ie n .IP """_\|_AVR_HAVE_RAMPD_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_RAMPD_\|_\fR" 4
  .IX Item "__AVR_HAVE_RAMPD__"
  .PD 0
  .ie n .IP """_\|_AVR_HAVE_RAMPX_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_RAMPX_\|_\fR" 4
  .IX Item "__AVR_HAVE_RAMPX__"
  .ie n .IP """_\|_AVR_HAVE_RAMPY_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_RAMPY_\|_\fR" 4
  .IX Item "__AVR_HAVE_RAMPY__"
  .ie n .IP """_\|_AVR_HAVE_RAMPZ_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_RAMPZ_\|_\fR" 4
  .IX Item "__AVR_HAVE_RAMPZ__"
  .PD
  The device has the \f(CW\*(C`RAMPD\*(C'\fR, \f(CW\*(C`RAMPX\*(C'\fR, \f(CW\*(C`RAMPY\*(C'\fR,
  \&\f(CW\*(C`RAMPZ\*(C'\fR special function register, respectively.
  .ie n .IP """_\|_NO_INTERRUPTS_\|_""" 4
! .el .IP "\f(CW_\|_NO_INTERRUPTS_\|_\fR" 4
  .IX Item "__NO_INTERRUPTS__"
! This macro reflects the \fB\-mno\-interrupts\fR command-line option.
  .ie n .IP """_\|_AVR_ERRATA_SKIP_\|_""" 4
! .el .IP "\f(CW_\|_AVR_ERRATA_SKIP_\|_\fR" 4
  .IX Item "__AVR_ERRATA_SKIP__"
  .PD 0
  .ie n .IP """_\|_AVR_ERRATA_SKIP_JMP_CALL_\|_""" 4
! .el .IP "\f(CW_\|_AVR_ERRATA_SKIP_JMP_CALL_\|_\fR" 4
  .IX Item "__AVR_ERRATA_SKIP_JMP_CALL__"
  .PD
! Some \s-1AVR\s0 devices (\s-1AT90S8515,\s0 ATmega103) must not skip 32\-bit
  instructions because of a hardware erratum.  Skip instructions are
  \&\f(CW\*(C`SBRS\*(C'\fR, \f(CW\*(C`SBRC\*(C'\fR, \f(CW\*(C`SBIS\*(C'\fR, \f(CW\*(C`SBIC\*(C'\fR and \f(CW\*(C`CPSE\*(C'\fR.
  The second macro is only defined if \f(CW\*(C`_\|_AVR_HAVE_JMP_CALL_\|_\*(C'\fR is also
  set.
  .ie n .IP """_\|_AVR_ISA_RMW_\|_""" 4
! .el .IP "\f(CW_\|_AVR_ISA_RMW_\|_\fR" 4
  .IX Item "__AVR_ISA_RMW__"
! The device has Read-Modify-Write instructions (\s-1XCH, LAC, LAS\s0 and \s-1LAT\s0).
! .ie n .IP """_\|_AVR_SFR_OFFSET_\|_=\fIoffset\fP""" 4
! .el .IP "\f(CW_\|_AVR_SFR_OFFSET_\|_=\f(CIoffset\f(CW\fR" 4
  .IX Item "__AVR_SFR_OFFSET__=offset"
  Instructions that can address I/O special function registers directly
  like \f(CW\*(C`IN\*(C'\fR, \f(CW\*(C`OUT\*(C'\fR, \f(CW\*(C`SBI\*(C'\fR, etc. may use a different
! address as if addressed by an instruction to access \s-1RAM\s0 like \f(CW\*(C`LD\*(C'\fR
  or \f(CW\*(C`STS\*(C'\fR. This offset depends on the device architecture and has
! to be subtracted from the \s-1RAM\s0 address in order to get the
  respective I/O address.
  .ie n .IP """_\|_AVR_SHORT_CALLS_\|_""" 4
! .el .IP "\f(CW_\|_AVR_SHORT_CALLS_\|_\fR" 4
  .IX Item "__AVR_SHORT_CALLS__"
  The \fB\-mshort\-calls\fR command line option is set.
! .ie n .IP """_\|_AVR_PM_BASE_ADDRESS_\|_=\fIaddr\fP""" 4
! .el .IP "\f(CW_\|_AVR_PM_BASE_ADDRESS_\|_=\f(CIaddr\f(CW\fR" 4
  .IX Item "__AVR_PM_BASE_ADDRESS__=addr"
  Some devices support reading from flash memory by means of \f(CW\*(C`LD*\*(C'\fR
  instructions.  The flash memory is seen in the data address space
  at an offset of \f(CW\*(C`_\|_AVR_PM_BASE_ADDRESS_\|_\*(C'\fR.  If this macro
  is not defined, this feature is not available.  If defined,
  the address space is linear and there is no need to put
! \&\f(CW\*(C`.rodata\*(C'\fR into \s-1RAM.\s0  This is handled by the default linker
  description file, and is currently available for
  \&\f(CW\*(C`avrtiny\*(C'\fR and \f(CW\*(C`avrxmega3\*(C'\fR.  Even more convenient,
  there is no need to use address spaces like \f(CW\*(C`_\|_flash\*(C'\fR or
  features like attribute \f(CW\*(C`progmem\*(C'\fR and \f(CW\*(C`pgm_read_*\*(C'\fR.
  .ie n .IP """_\|_AVR_HAVE_FLMAP_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_FLMAP_\|_\fR" 4
  .IX Item "__AVR_HAVE_FLMAP__"
  This macro is defined provided the following conditions are met:
  .RS 4
--- 24328,24509 ----
  for \fImcu\fR=\f(CW\*(C`avrtiny\*(C'\fR,
  \&\f(CW\*(C`avrxmega2\*(C'\fR, \f(CW\*(C`avrxmega3\*(C'\fR, \f(CW\*(C`avrxmega4\*(C'\fR,
  \&\f(CW\*(C`avrxmega5\*(C'\fR, \f(CW\*(C`avrxmega6\*(C'\fR, \f(CW\*(C`avrxmega7\*(C'\fR, respectively.
! If \fImcu\fR specifies a device, this built\-in macro is set
  accordingly. For example, with \fB\-mmcu=atmega8\fR the macro is
  defined to \f(CW4\fR.
! .ie n .IP """_\|_AVR_\fIDevice\fR_\|_""" 4
! .el .IP \f(CW_\|_AVR_\fR\f(CIDevice\fR\f(CW_\|_\fR 4
  .IX Item "__AVR_Device__"
! Setting \fB\-mmcu=\fR\fIdevice\fR defines this built\-in macro which reflects
! the device\*(Aqs name. For example, \fB\-mmcu=atmega8\fR defines the
! built\-in macro \f(CW\*(C`_\|_AVR_ATmega8_\|_\*(C'\fR, \fB\-mmcu=attiny261a\fR defines
  \&\f(CW\*(C`_\|_AVR_ATtiny261A_\|_\*(C'\fR, etc.
  .Sp
! The built\-in macros\*(Aq names follow
! the scheme \f(CW\*(C`_\|_AVR_\fR\f(CIDevice\fR\f(CW_\|_\*(C'\fR where \fIDevice\fR is
! the device name as from the AVR user manual. The difference between
! \&\fIDevice\fR in the built\-in macro and \fIdevice\fR in
  \&\fB\-mmcu=\fR\fIdevice\fR is that the latter is always lowercase.
  .Sp
  If \fIdevice\fR is not a device but only a core architecture like
  \&\fBavr51\fR, this macro is not defined.
  .ie n .IP """_\|_AVR_DEVICE_NAME_\|_""" 4
! .el .IP \f(CW_\|_AVR_DEVICE_NAME_\|_\fR 4
  .IX Item "__AVR_DEVICE_NAME__"
! Setting \fB\-mmcu=\fR\fIdevice\fR defines this built\-in macro to
! the device\*(Aqs name. For example, with \fB\-mmcu=atmega8\fR the macro
  is defined to \f(CW\*(C`atmega8\*(C'\fR.
  .Sp
  If \fIdevice\fR is not a device but only a core architecture like
  \&\fBavr51\fR, this macro is not defined.
  .ie n .IP """_\|_AVR_CVT_\|_""" 4
! .el .IP \f(CW_\|_AVR_CVT_\|_\fR 4
  .IX Item "__AVR_CVT__"
  The code is being compiled with option \f(CW\*(C`\-mcvt\*(C'\fR to use a
  \&\fIcompact vector table\fR.
  .ie n .IP """_\|_AVR_XMEGA_\|_""" 4
! .el .IP \f(CW_\|_AVR_XMEGA_\|_\fR 4
  .IX Item "__AVR_XMEGA__"
! The device / architecture belongs to the XMEGA family of devices.
  .ie n .IP """_\|_AVR_HAVE_ADIW_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_ADIW_\|_\fR 4
  .IX Item "__AVR_HAVE_ADIW__"
  The device has the \f(CW\*(C`ADIW\*(C'\fR and \f(CW\*(C`SBIW\*(C'\fR instructions.
  .ie n .IP """_\|_AVR_HAVE_ELPM_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_ELPM_\|_\fR 4
  .IX Item "__AVR_HAVE_ELPM__"
  The device has the \f(CW\*(C`ELPM\*(C'\fR instruction.
  .ie n .IP """_\|_AVR_HAVE_ELPMX_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_ELPMX_\|_\fR 4
  .IX Item "__AVR_HAVE_ELPMX__"
! The device has the \f(CW\*(C`ELPM R\fR\f(CIn\fR\f(CW,Z\*(C'\fR and \f(CW\*(C`ELPM
! R\fR\f(CIn\fR\f(CW,Z+\*(C'\fR instructions.
  .ie n .IP """_\|_AVR_HAVE_LPMX_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_LPMX_\|_\fR 4
  .IX Item "__AVR_HAVE_LPMX__"
! The device has the \f(CW\*(C`LPM R\fR\f(CIn\fR\f(CW,Z\*(C'\fR and
! \&\f(CW\*(C`LPM R\fR\f(CIn\fR\f(CW,Z+\*(C'\fR instructions.
  .ie n .IP """_\|_AVR_HAVE_MOVW_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_MOVW_\|_\fR 4
  .IX Item "__AVR_HAVE_MOVW__"
  The device has the \f(CW\*(C`MOVW\*(C'\fR instruction to perform 16\-bit
! register\-register moves.
  .ie n .IP """_\|_AVR_HAVE_MUL_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_MUL_\|_\fR 4
  .IX Item "__AVR_HAVE_MUL__"
  The device has a hardware multiplier.
  .ie n .IP """_\|_AVR_HAVE_JMP_CALL_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_JMP_CALL_\|_\fR 4
  .IX Item "__AVR_HAVE_JMP_CALL__"
  The device has the \f(CW\*(C`JMP\*(C'\fR and \f(CW\*(C`CALL\*(C'\fR instructions.
  This is the case for devices with more than 8 KiB of program
  memory.
  .ie n .IP """_\|_AVR_HAVE_EIJMP_EICALL_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_EIJMP_EICALL_\|_\fR 4
  .IX Item "__AVR_HAVE_EIJMP_EICALL__"
  .PD 0
  .ie n .IP """_\|_AVR_3_BYTE_PC_\|_""" 4
! .el .IP \f(CW_\|_AVR_3_BYTE_PC_\|_\fR 4
  .IX Item "__AVR_3_BYTE_PC__"
  .PD
  The device has the \f(CW\*(C`EIJMP\*(C'\fR and \f(CW\*(C`EICALL\*(C'\fR instructions.
  This is the case for devices with more than 128 KiB of program memory.
  This also means that the program counter
! (PC) is 3 bytes wide.
  .ie n .IP """_\|_AVR_2_BYTE_PC_\|_""" 4
! .el .IP \f(CW_\|_AVR_2_BYTE_PC_\|_\fR 4
  .IX Item "__AVR_2_BYTE_PC__"
! The program counter (PC) is 2 bytes wide. This is the case for devices
  with up to 128 KiB of program memory.
  .ie n .IP """_\|_AVR_HAVE_8BIT_SP_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_8BIT_SP_\|_\fR 4
  .IX Item "__AVR_HAVE_8BIT_SP__"
  .PD 0
  .ie n .IP """_\|_AVR_HAVE_16BIT_SP_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_16BIT_SP_\|_\fR 4
  .IX Item "__AVR_HAVE_16BIT_SP__"
  .PD
! The stack pointer (SP) register is treated as 8\-bit respectively
  16\-bit register by the compiler.
  The definition of these macros is affected by \fB\-mtiny\-stack\fR.
  .ie n .IP """_\|_AVR_HAVE_SPH_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_SPH_\|_\fR 4
  .IX Item "__AVR_HAVE_SPH__"
  .PD 0
  .ie n .IP """_\|_AVR_SP8_\|_""" 4
! .el .IP \f(CW_\|_AVR_SP8_\|_\fR 4
  .IX Item "__AVR_SP8__"
  .PD
! The device has the SPH (high part of stack pointer) special function
  register or has an 8\-bit stack pointer, respectively.
  The definition of these macros is affected by \fB\-mmcu=\fR and
  in the cases of \fB\-mmcu=avr2\fR and \fB\-mmcu=avr25\fR also
  by \fB\-msp8\fR.
  .ie n .IP """_\|_AVR_HAVE_RAMPD_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_RAMPD_\|_\fR 4
  .IX Item "__AVR_HAVE_RAMPD__"
  .PD 0
  .ie n .IP """_\|_AVR_HAVE_RAMPX_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_RAMPX_\|_\fR 4
  .IX Item "__AVR_HAVE_RAMPX__"
  .ie n .IP """_\|_AVR_HAVE_RAMPY_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_RAMPY_\|_\fR 4
  .IX Item "__AVR_HAVE_RAMPY__"
  .ie n .IP """_\|_AVR_HAVE_RAMPZ_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_RAMPZ_\|_\fR 4
  .IX Item "__AVR_HAVE_RAMPZ__"
  .PD
  The device has the \f(CW\*(C`RAMPD\*(C'\fR, \f(CW\*(C`RAMPX\*(C'\fR, \f(CW\*(C`RAMPY\*(C'\fR,
  \&\f(CW\*(C`RAMPZ\*(C'\fR special function register, respectively.
  .ie n .IP """_\|_NO_INTERRUPTS_\|_""" 4
! .el .IP \f(CW_\|_NO_INTERRUPTS_\|_\fR 4
  .IX Item "__NO_INTERRUPTS__"
! This macro reflects the \fB\-mno\-interrupts\fR command\-line option.
  .ie n .IP """_\|_AVR_ERRATA_SKIP_\|_""" 4
! .el .IP \f(CW_\|_AVR_ERRATA_SKIP_\|_\fR 4
  .IX Item "__AVR_ERRATA_SKIP__"
  .PD 0
  .ie n .IP """_\|_AVR_ERRATA_SKIP_JMP_CALL_\|_""" 4
! .el .IP \f(CW_\|_AVR_ERRATA_SKIP_JMP_CALL_\|_\fR 4
  .IX Item "__AVR_ERRATA_SKIP_JMP_CALL__"
  .PD
! Some AVR devices (AT90S8515, ATmega103) must not skip 32\-bit
  instructions because of a hardware erratum.  Skip instructions are
  \&\f(CW\*(C`SBRS\*(C'\fR, \f(CW\*(C`SBRC\*(C'\fR, \f(CW\*(C`SBIS\*(C'\fR, \f(CW\*(C`SBIC\*(C'\fR and \f(CW\*(C`CPSE\*(C'\fR.
  The second macro is only defined if \f(CW\*(C`_\|_AVR_HAVE_JMP_CALL_\|_\*(C'\fR is also
  set.
  .ie n .IP """_\|_AVR_ISA_RMW_\|_""" 4
! .el .IP \f(CW_\|_AVR_ISA_RMW_\|_\fR 4
  .IX Item "__AVR_ISA_RMW__"
! The device has Read\-Modify\-Write instructions (XCH, LAC, LAS and LAT).
! .ie n .IP """_\|_AVR_SFR_OFFSET_\|_=\fIoffset\fR""" 4
! .el .IP \f(CW_\|_AVR_SFR_OFFSET_\|_=\fR\f(CIoffset\fR\f(CW\fR 4
  .IX Item "__AVR_SFR_OFFSET__=offset"
  Instructions that can address I/O special function registers directly
  like \f(CW\*(C`IN\*(C'\fR, \f(CW\*(C`OUT\*(C'\fR, \f(CW\*(C`SBI\*(C'\fR, etc. may use a different
! address as if addressed by an instruction to access RAM like \f(CW\*(C`LD\*(C'\fR
  or \f(CW\*(C`STS\*(C'\fR. This offset depends on the device architecture and has
! to be subtracted from the RAM address in order to get the
  respective I/O address.
  .ie n .IP """_\|_AVR_SHORT_CALLS_\|_""" 4
! .el .IP \f(CW_\|_AVR_SHORT_CALLS_\|_\fR 4
  .IX Item "__AVR_SHORT_CALLS__"
  The \fB\-mshort\-calls\fR command line option is set.
! .ie n .IP """_\|_AVR_PM_BASE_ADDRESS_\|_=\fIaddr\fR""" 4
! .el .IP \f(CW_\|_AVR_PM_BASE_ADDRESS_\|_=\fR\f(CIaddr\fR\f(CW\fR 4
  .IX Item "__AVR_PM_BASE_ADDRESS__=addr"
  Some devices support reading from flash memory by means of \f(CW\*(C`LD*\*(C'\fR
  instructions.  The flash memory is seen in the data address space
  at an offset of \f(CW\*(C`_\|_AVR_PM_BASE_ADDRESS_\|_\*(C'\fR.  If this macro
  is not defined, this feature is not available.  If defined,
  the address space is linear and there is no need to put
! \&\f(CW\*(C`.rodata\*(C'\fR into RAM.  This is handled by the default linker
  description file, and is currently available for
  \&\f(CW\*(C`avrtiny\*(C'\fR and \f(CW\*(C`avrxmega3\*(C'\fR.  Even more convenient,
  there is no need to use address spaces like \f(CW\*(C`_\|_flash\*(C'\fR or
  features like attribute \f(CW\*(C`progmem\*(C'\fR and \f(CW\*(C`pgm_read_*\*(C'\fR.
  .ie n .IP """_\|_AVR_HAVE_FLMAP_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_FLMAP_\|_\fR 4
  .IX Item "__AVR_HAVE_FLMAP__"
  This macro is defined provided the following conditions are met:
  .RS 4
*************** This macro is defined provided the follo
*** 24576,24698 ****
  .el .IP "*<The device has the \f(CWNVMCTRL_CTRLB.FLMAP\fR bitfield.>" 4
  .IX Item "*<The device has the NVMCTRL_CTRLB.FLMAP bitfield.>"
  This applies to the AVR64* and AVR128* devices.
! .IP "*<It's not known at assembler-time which emulation will be used.>" 4
  .IX Item "*<It's not known at assembler-time which emulation will be used.>"
  .RE
  .RS 4
  .Sp
! This implies the compiler was configured with \s-1GNU\s0 Binutils that implement
! \&\s-1PR31124\s0 (\f(CW\*(C`https://sourceware.org/PR31124\*(C'\fR).
  .RE
  .ie n .IP """_\|_AVR_RODATA_IN_RAM_\|_""" 4
! .el .IP "\f(CW_\|_AVR_RODATA_IN_RAM_\|_\fR" 4
  .IX Item "__AVR_RODATA_IN_RAM__"
  This macro is undefined when the code is compiled for a core architecture.
  .Sp
  When the code is compiled for a device, the macro is defined to 1
! when the \f(CW\*(C`.rodata\*(C'\fR sections for read-only data is located in \s-1RAM\s0;
  and defined to 0, otherwise.
  .ie n .IP """_\|_WITH_AVRLIBC_\|_""" 4
! .el .IP "\f(CW_\|_WITH_AVRLIBC_\|_\fR" 4
  .IX Item "__WITH_AVRLIBC__"
! The compiler is configured to be used together with AVR-LibC.
  See the \fB\-\-with\-avrlibc\fR configure option.
  .ie n .IP """_\|_HAVE_SIGNAL_N_\|_""" 4
! .el .IP "\f(CW_\|_HAVE_SIGNAL_N_\|_\fR" 4
  .IX Item "__HAVE_SIGNAL_N__"
! The compiler supports the \f(CW\*(C`signal(\f(CInum\f(CW)\*(C'\fR and
! \&\f(CW\*(C`interrupt(\f(CInum\f(CW)\*(C'\fR
! \&\fB\s-1AVR\s0 Function Attributes,,function attributes\fR
  with an argument \fInum\fR that specifies the number of the
  interrupt service routine.
  .ie n .IP """_\|_HAVE_DOUBLE_MULTILIB_\|_""" 4
! .el .IP "\f(CW_\|_HAVE_DOUBLE_MULTILIB_\|_\fR" 4
  .IX Item "__HAVE_DOUBLE_MULTILIB__"
  Defined if \fB\-mdouble=\fR acts as a multilib option.
  .ie n .IP """_\|_HAVE_DOUBLE32_\|_""" 4
! .el .IP "\f(CW_\|_HAVE_DOUBLE32_\|_\fR" 4
  .IX Item "__HAVE_DOUBLE32__"
  .PD 0
  .ie n .IP """_\|_HAVE_DOUBLE64_\|_""" 4
! .el .IP "\f(CW_\|_HAVE_DOUBLE64_\|_\fR" 4
  .IX Item "__HAVE_DOUBLE64__"
  .PD
  Defined if the compiler supports 32\-bit double resp. 64\-bit double.
  The actual layout is specified by option \fB\-mdouble=\fR.
  .ie n .IP """_\|_DEFAULT_DOUBLE_\|_""" 4
! .el .IP "\f(CW_\|_DEFAULT_DOUBLE_\|_\fR" 4
  .IX Item "__DEFAULT_DOUBLE__"
  The size in bits of \f(CW\*(C`double\*(C'\fR if \fB\-mdouble=\fR is not set.
! To test the layout of \f(CW\*(C`double\*(C'\fR in a program, use the built-in
  macro \f(CW\*(C`_\|_SIZEOF_DOUBLE_\|_\*(C'\fR.
  .ie n .IP """_\|_HAVE_LONG_DOUBLE32_\|_""" 4
! .el .IP "\f(CW_\|_HAVE_LONG_DOUBLE32_\|_\fR" 4
  .IX Item "__HAVE_LONG_DOUBLE32__"
  .PD 0
  .ie n .IP """_\|_HAVE_LONG_DOUBLE64_\|_""" 4
! .el .IP "\f(CW_\|_HAVE_LONG_DOUBLE64_\|_\fR" 4
  .IX Item "__HAVE_LONG_DOUBLE64__"
  .ie n .IP """_\|_HAVE_LONG_DOUBLE_MULTILIB_\|_""" 4
! .el .IP "\f(CW_\|_HAVE_LONG_DOUBLE_MULTILIB_\|_\fR" 4
  .IX Item "__HAVE_LONG_DOUBLE_MULTILIB__"
  .ie n .IP """_\|_DEFAULT_LONG_DOUBLE_\|_""" 4
! .el .IP "\f(CW_\|_DEFAULT_LONG_DOUBLE_\|_\fR" 4
  .IX Item "__DEFAULT_LONG_DOUBLE__"
  .PD
  Same as above, but for \f(CW\*(C`long double\*(C'\fR instead of \f(CW\*(C`double\*(C'\fR.
  .ie n .IP """_\|_WITH_DOUBLE_COMPARISON_\|_""" 4
! .el .IP "\f(CW_\|_WITH_DOUBLE_COMPARISON_\|_\fR" 4
  .IX Item "__WITH_DOUBLE_COMPARISON__"
  Reflects the \f(CW\*(C`\-\-with\-double\-comparison={tristate|bool|libf7}\*(C'\fR
  configure\ option (\f(CW\*(C`https://gcc.gnu.org/install/configure.html#avr\*(C'\fR)
  and is defined to \f(CW2\fR or \f(CW3\fR.
  .ie n .IP """_\|_WITH_LIBF7_LIBGCC_\|_""" 4
! .el .IP "\f(CW_\|_WITH_LIBF7_LIBGCC_\|_\fR" 4
  .IX Item "__WITH_LIBF7_LIBGCC__"
  .PD 0
  .ie n .IP """_\|_WITH_LIBF7_MATH_\|_""" 4
! .el .IP "\f(CW_\|_WITH_LIBF7_MATH_\|_\fR" 4
  .IX Item "__WITH_LIBF7_MATH__"
  .ie n .IP """_\|_WITH_LIBF7_MATH_SYMBOLS_\|_""" 4
! .el .IP "\f(CW_\|_WITH_LIBF7_MATH_SYMBOLS_\|_\fR" 4
  .IX Item "__WITH_LIBF7_MATH_SYMBOLS__"
  .PD
  Reflects the \f(CW\*(C`\-\-with\-libf7={libgcc|math|math\-symbols}\*(C'\fR
  configure\ option (\f(CW\*(C`https://gcc.gnu.org/install/configure.html#avr\*(C'\fR).
  .PP
! \s-1AVR\s0 Internal Options
  .IX Subsection "AVR Internal Options"
  .PP
  The following options are used internally by the compiler and to communicate
! between device specs files and the compiler proper. You don't need to set these
  options by hand, in particular they are not optimization options.
! Using these options in the wrong way may lead to sub-optimal or wrong code.
  They are documented for completeness, and in order to get a better
  understanding of
  device\ specs (\f(CW\*(C`https://gcc.gnu.org/wiki/avr\-gcc#spec\-files\*(C'\fR)
  files.
! .IP "\fB\-mn\-flash=\fR\fInum\fR" 4
  .IX Item "-mn-flash=num"
  Assume that the flash memory has a size of \fInum\fR times 64 KiB.
! This determines which \f(CW\*(C`_\|_flash\f(CIN\f(CW\*(C'\fR address spaces are available.
! .IP "\fB\-mflmap\fR" 4
  .IX Item "-mflmap"
  The device has the \f(CW\*(C`FLMAP\*(C'\fR bit field located in special function
  register \f(CW\*(C`NVMCTRL_CTRLB\*(C'\fR.
! .IP "\fB\-mrmw\fR" 4
  .IX Item "-mrmw"
! Assume that the device supports the Read-Modify-Write
  instructions \f(CW\*(C`XCH\*(C'\fR, \f(CW\*(C`LAC\*(C'\fR, \f(CW\*(C`LAS\*(C'\fR and \f(CW\*(C`LAT\*(C'\fR.
! .IP "\fB\-mshort\-calls\fR" 4
  .IX Item "-mshort-calls"
  Assume that \f(CW\*(C`RJMP\*(C'\fR and \f(CW\*(C`RCALL\*(C'\fR can target the whole
  program memory. This option is used for multilib generation and selection
  for the devices from architecture \f(CW\*(C`avrxmega3\*(C'\fR.
! .IP "\fB\-mskip\-bug\fR" 4
  .IX Item "-mskip-bug"
  Generate code without skips (\f(CW\*(C`CPSE\*(C'\fR, \f(CW\*(C`SBRS\*(C'\fR,
  \&\f(CW\*(C`SBRC\*(C'\fR, \f(CW\*(C`SBIS\*(C'\fR, \f(CW\*(C`SBIC\*(C'\fR) over 32\-bit instructions.
! .IP "\fB\-msp8\fR" 4
  .IX Item "-msp8"
  Treat the stack pointer register as an 8\-bit register,
  i.e. assume the high byte of the stack pointer is zero.
--- 24511,24633 ----
  .el .IP "*<The device has the \f(CWNVMCTRL_CTRLB.FLMAP\fR bitfield.>" 4
  .IX Item "*<The device has the NVMCTRL_CTRLB.FLMAP bitfield.>"
  This applies to the AVR64* and AVR128* devices.
! .IP "*<It\*(Aqs not known at assembler\-time which emulation will be used.>" 4
  .IX Item "*<It's not known at assembler-time which emulation will be used.>"
  .RE
  .RS 4
  .Sp
! This implies the compiler was configured with GNU Binutils that implement
! PR31124 (\f(CW\*(C`https://sourceware.org/PR31124\*(C'\fR).
  .RE
  .ie n .IP """_\|_AVR_RODATA_IN_RAM_\|_""" 4
! .el .IP \f(CW_\|_AVR_RODATA_IN_RAM_\|_\fR 4
  .IX Item "__AVR_RODATA_IN_RAM__"
  This macro is undefined when the code is compiled for a core architecture.
  .Sp
  When the code is compiled for a device, the macro is defined to 1
! when the \f(CW\*(C`.rodata\*(C'\fR sections for read\-only data is located in RAM;
  and defined to 0, otherwise.
  .ie n .IP """_\|_WITH_AVRLIBC_\|_""" 4
! .el .IP \f(CW_\|_WITH_AVRLIBC_\|_\fR 4
  .IX Item "__WITH_AVRLIBC__"
! The compiler is configured to be used together with AVR\-LibC.
  See the \fB\-\-with\-avrlibc\fR configure option.
  .ie n .IP """_\|_HAVE_SIGNAL_N_\|_""" 4
! .el .IP \f(CW_\|_HAVE_SIGNAL_N_\|_\fR 4
  .IX Item "__HAVE_SIGNAL_N__"
! The compiler supports the \f(CWsignal(\fR\f(CInum\fR\f(CW)\fR and
! \&\f(CWinterrupt(\fR\f(CInum\fR\f(CW)\fR
! \&\fBAVR Function Attributes,,function attributes\fR
  with an argument \fInum\fR that specifies the number of the
  interrupt service routine.
  .ie n .IP """_\|_HAVE_DOUBLE_MULTILIB_\|_""" 4
! .el .IP \f(CW_\|_HAVE_DOUBLE_MULTILIB_\|_\fR 4
  .IX Item "__HAVE_DOUBLE_MULTILIB__"
  Defined if \fB\-mdouble=\fR acts as a multilib option.
  .ie n .IP """_\|_HAVE_DOUBLE32_\|_""" 4
! .el .IP \f(CW_\|_HAVE_DOUBLE32_\|_\fR 4
  .IX Item "__HAVE_DOUBLE32__"
  .PD 0
  .ie n .IP """_\|_HAVE_DOUBLE64_\|_""" 4
! .el .IP \f(CW_\|_HAVE_DOUBLE64_\|_\fR 4
  .IX Item "__HAVE_DOUBLE64__"
  .PD
  Defined if the compiler supports 32\-bit double resp. 64\-bit double.
  The actual layout is specified by option \fB\-mdouble=\fR.
  .ie n .IP """_\|_DEFAULT_DOUBLE_\|_""" 4
! .el .IP \f(CW_\|_DEFAULT_DOUBLE_\|_\fR 4
  .IX Item "__DEFAULT_DOUBLE__"
  The size in bits of \f(CW\*(C`double\*(C'\fR if \fB\-mdouble=\fR is not set.
! To test the layout of \f(CW\*(C`double\*(C'\fR in a program, use the built\-in
  macro \f(CW\*(C`_\|_SIZEOF_DOUBLE_\|_\*(C'\fR.
  .ie n .IP """_\|_HAVE_LONG_DOUBLE32_\|_""" 4
! .el .IP \f(CW_\|_HAVE_LONG_DOUBLE32_\|_\fR 4
  .IX Item "__HAVE_LONG_DOUBLE32__"
  .PD 0
  .ie n .IP """_\|_HAVE_LONG_DOUBLE64_\|_""" 4
! .el .IP \f(CW_\|_HAVE_LONG_DOUBLE64_\|_\fR 4
  .IX Item "__HAVE_LONG_DOUBLE64__"
  .ie n .IP """_\|_HAVE_LONG_DOUBLE_MULTILIB_\|_""" 4
! .el .IP \f(CW_\|_HAVE_LONG_DOUBLE_MULTILIB_\|_\fR 4
  .IX Item "__HAVE_LONG_DOUBLE_MULTILIB__"
  .ie n .IP """_\|_DEFAULT_LONG_DOUBLE_\|_""" 4
! .el .IP \f(CW_\|_DEFAULT_LONG_DOUBLE_\|_\fR 4
  .IX Item "__DEFAULT_LONG_DOUBLE__"
  .PD
  Same as above, but for \f(CW\*(C`long double\*(C'\fR instead of \f(CW\*(C`double\*(C'\fR.
  .ie n .IP """_\|_WITH_DOUBLE_COMPARISON_\|_""" 4
! .el .IP \f(CW_\|_WITH_DOUBLE_COMPARISON_\|_\fR 4
  .IX Item "__WITH_DOUBLE_COMPARISON__"
  Reflects the \f(CW\*(C`\-\-with\-double\-comparison={tristate|bool|libf7}\*(C'\fR
  configure\ option (\f(CW\*(C`https://gcc.gnu.org/install/configure.html#avr\*(C'\fR)
  and is defined to \f(CW2\fR or \f(CW3\fR.
  .ie n .IP """_\|_WITH_LIBF7_LIBGCC_\|_""" 4
! .el .IP \f(CW_\|_WITH_LIBF7_LIBGCC_\|_\fR 4
  .IX Item "__WITH_LIBF7_LIBGCC__"
  .PD 0
  .ie n .IP """_\|_WITH_LIBF7_MATH_\|_""" 4
! .el .IP \f(CW_\|_WITH_LIBF7_MATH_\|_\fR 4
  .IX Item "__WITH_LIBF7_MATH__"
  .ie n .IP """_\|_WITH_LIBF7_MATH_SYMBOLS_\|_""" 4
! .el .IP \f(CW_\|_WITH_LIBF7_MATH_SYMBOLS_\|_\fR 4
  .IX Item "__WITH_LIBF7_MATH_SYMBOLS__"
  .PD
  Reflects the \f(CW\*(C`\-\-with\-libf7={libgcc|math|math\-symbols}\*(C'\fR
  configure\ option (\f(CW\*(C`https://gcc.gnu.org/install/configure.html#avr\*(C'\fR).
  .PP
! AVR Internal Options
  .IX Subsection "AVR Internal Options"
  .PP
  The following options are used internally by the compiler and to communicate
! between device specs files and the compiler proper. You don\*(Aqt need to set these
  options by hand, in particular they are not optimization options.
! Using these options in the wrong way may lead to sub\-optimal or wrong code.
  They are documented for completeness, and in order to get a better
  understanding of
  device\ specs (\f(CW\*(C`https://gcc.gnu.org/wiki/avr\-gcc#spec\-files\*(C'\fR)
  files.
! .IP \fB\-mn\-flash=\fR\fInum\fR 4
  .IX Item "-mn-flash=num"
  Assume that the flash memory has a size of \fInum\fR times 64 KiB.
! This determines which \f(CW\*(C`_\|_flash\fR\f(CIN\fR\f(CW\*(C'\fR address spaces are available.
! .IP \fB\-mflmap\fR 4
  .IX Item "-mflmap"
  The device has the \f(CW\*(C`FLMAP\*(C'\fR bit field located in special function
  register \f(CW\*(C`NVMCTRL_CTRLB\*(C'\fR.
! .IP \fB\-mrmw\fR 4
  .IX Item "-mrmw"
! Assume that the device supports the Read\-Modify\-Write
  instructions \f(CW\*(C`XCH\*(C'\fR, \f(CW\*(C`LAC\*(C'\fR, \f(CW\*(C`LAS\*(C'\fR and \f(CW\*(C`LAT\*(C'\fR.
! .IP \fB\-mshort\-calls\fR 4
  .IX Item "-mshort-calls"
  Assume that \f(CW\*(C`RJMP\*(C'\fR and \f(CW\*(C`RCALL\*(C'\fR can target the whole
  program memory. This option is used for multilib generation and selection
  for the devices from architecture \f(CW\*(C`avrxmega3\*(C'\fR.
! .IP \fB\-mskip\-bug\fR 4
  .IX Item "-mskip-bug"
  Generate code without skips (\f(CW\*(C`CPSE\*(C'\fR, \f(CW\*(C`SBRS\*(C'\fR,
  \&\f(CW\*(C`SBRC\*(C'\fR, \f(CW\*(C`SBIS\*(C'\fR, \f(CW\*(C`SBIC\*(C'\fR) over 32\-bit instructions.
! .IP \fB\-msp8\fR 4
  .IX Item "-msp8"
  Treat the stack pointer register as an 8\-bit register,
  i.e. assume the high byte of the stack pointer is zero.
*************** These architectures mix devices with and
*** 24702,24708 ****
  .PP
  \fIBlackfin Options\fR
  .IX Subsection "Blackfin Options"
! .IP "\fB\-mcpu=\fR\fIcpu\fR[\fB\-\fR\fIsirevision\fR]" 4
  .IX Item "-mcpu=cpu[-sirevision]"
  Specifies the name of the target Blackfin processor.  Currently, \fIcpu\fR
  can be one of \fBbf512\fR, \fBbf514\fR, \fBbf516\fR, \fBbf518\fR,
--- 24637,24643 ----
  .PP
  \fIBlackfin Options\fR
  .IX Subsection "Blackfin Options"
! .IP \fB\-mcpu=\fR\fIcpu\fR[\fB\-\fR\fIsirevision\fR] 4
  .IX Item "-mcpu=cpu[-sirevision]"
  Specifies the name of the target Blackfin processor.  Currently, \fIcpu\fR
  can be one of \fBbf512\fR, \fBbf514\fR, \fBbf516\fR, \fBbf518\fR,
*************** hexadecimal digits representing the majo
*** 24722,24840 ****
  revision.  If \fIsirevision\fR is \fBnone\fR, the \f(CW\*(C`_\|_SILICON_REVISION_\|_\*(C'\fR
  is not defined.  If \fIsirevision\fR is \fBany\fR, the
  \&\f(CW\*(C`_\|_SILICON_REVISION_\|_\*(C'\fR is defined to be \f(CW0xffff\fR.
! If this optional \fIsirevision\fR is not used, \s-1GCC\s0 assumes the latest known
  silicon revision of the targeted Blackfin processor.
  .Sp
! \&\s-1GCC\s0 defines a preprocessor macro for the specified \fIcpu\fR.
! For the \fBbfin-elf\fR toolchain, this option causes the hardware \s-1BSP\s0
  provided by libgloss to be linked in if \fB\-msim\fR is not given.
  .Sp
  Without this option, \fBbf532\fR is used as the processor by default.
  .Sp
  Note that support for \fBbf561\fR is incomplete.  For \fBbf561\fR,
  only the preprocessor macro is defined.
! .IP "\fB\-msim\fR" 4
  .IX Item "-msim"
  Specifies that the program will be run on the simulator.  This causes
! the simulator \s-1BSP\s0 provided by libgloss to be linked in.  This option
! has effect only for \fBbfin-elf\fR toolchain.
  Certain other options, such as \fB\-mid\-shared\-library\fR and
  \&\fB\-mfdpic\fR, imply \fB\-msim\fR.
! .IP "\fB\-momit\-leaf\-frame\-pointer\fR" 4
  .IX Item "-momit-leaf-frame-pointer"
! Don't keep the frame pointer in a register for leaf functions.  This
  avoids the instructions to save, set up and restore frame pointers and
  makes an extra register available in leaf functions.
! .IP "\fB\-mspecld\-anomaly\fR" 4
  .IX Item "-mspecld-anomaly"
  When enabled, the compiler ensures that the generated code does not
  contain speculative loads after jump instructions. If this option is used,
  \&\f(CW\*(C`_\|_WORKAROUND_SPECULATIVE_LOADS\*(C'\fR is defined.
! .IP "\fB\-mno\-specld\-anomaly\fR" 4
  .IX Item "-mno-specld-anomaly"
! Don't generate extra code to prevent speculative loads from occurring.
! .IP "\fB\-mcsync\-anomaly\fR" 4
  .IX Item "-mcsync-anomaly"
  When enabled, the compiler ensures that the generated code does not
! contain \s-1CSYNC\s0 or \s-1SSYNC\s0 instructions too soon after conditional branches.
  If this option is used, \f(CW\*(C`_\|_WORKAROUND_SPECULATIVE_SYNCS\*(C'\fR is defined.
! .IP "\fB\-mno\-csync\-anomaly\fR" 4
  .IX Item "-mno-csync-anomaly"
! Don't generate extra code to prevent \s-1CSYNC\s0 or \s-1SSYNC\s0 instructions from
  occurring too soon after a conditional branch.
! .IP "\fB\-mlow64k\fR" 4
  .IX Item "-mlow64k"
  When enabled, the compiler is free to take advantage of the knowledge that
  the entire program fits into the low 64k of memory.
! .IP "\fB\-mno\-low64k\fR" 4
  .IX Item "-mno-low64k"
  Assume that the program is arbitrarily large.  This is the default.
! .IP "\fB\-mstack\-check\-l1\fR" 4
  .IX Item "-mstack-check-l1"
  Do stack checking using information placed into L1 scratchpad memory by the
  uClinux kernel.
! .IP "\fB\-mid\-shared\-library\fR" 4
  .IX Item "-mid-shared-library"
! Generate code that supports shared libraries via the library \s-1ID\s0 method.
  This allows for execute in place and shared libraries in an environment
  without virtual memory management.  This option implies \fB\-fPIC\fR.
! With a \fBbfin-elf\fR target, this option implies \fB\-msim\fR.
! .IP "\fB\-mno\-id\-shared\-library\fR" 4
  .IX Item "-mno-id-shared-library"
! Generate code that doesn't assume ID-based shared libraries are being used.
  This is the default.
! .IP "\fB\-mleaf\-id\-shared\-library\fR" 4
  .IX Item "-mleaf-id-shared-library"
! Generate code that supports shared libraries via the library \s-1ID\s0 method,
! but assumes that this library or executable won't link against any other
! \&\s-1ID\s0 shared libraries.  That allows the compiler to use faster code for jumps
  and calls.
! .IP "\fB\-mno\-leaf\-id\-shared\-library\fR" 4
  .IX Item "-mno-leaf-id-shared-library"
! Do not assume that the code being compiled won't link against any \s-1ID\s0 shared
  libraries.  Slower code is generated for jump and call insns.
! .IP "\fB\-mshared\-library\-id=n\fR" 4
  .IX Item "-mshared-library-id=n"
! Specifies the identification number of the ID-based shared library being
  compiled.  Specifying a value of 0 generates more compact code; specifying
  other values forces the allocation of that number to the current
! library but is no more space\- or time-efficient than omitting this option.
! .IP "\fB\-msep\-data\fR" 4
  .IX Item "-msep-data"
  Generate code that allows the data segment to be located in a different
  area of memory from the text segment.  This allows for execute in place in
  an environment without virtual memory management by eliminating relocations
  against the text section.
! .IP "\fB\-mno\-sep\-data\fR" 4
  .IX Item "-mno-sep-data"
  Generate code that assumes that the data segment follows the text segment.
  This is the default.
! .IP "\fB\-mlong\-calls\fR" 4
  .IX Item "-mlong-calls"
  .PD 0
! .IP "\fB\-mno\-long\-calls\fR" 4
  .IX Item "-mno-long-calls"
  .PD
  Tells the compiler to perform function calls by first loading the
  address of the function into a register and then performing a subroutine
  call on this register.  This switch is needed if the target function
! lies outside of the 24\-bit addressing range of the offset-based
  version of subroutine call instruction.
  .Sp
  This feature is not enabled by default.  Specifying
  \&\fB\-mno\-long\-calls\fR restores the default behavior.  Note these
  switches have no effect on how the compiler generates code to handle
  function calls via function pointers.
! .IP "\fB\-mfast\-fp\fR" 4
  .IX Item "-mfast-fp"
! Link with the fast floating-point library. This library relaxes some of
! the \s-1IEEE\s0 floating-point standard's rules for checking inputs against
! Not-a-Number (\s-1NAN\s0), in the interest of performance.
! .IP "\fB\-minline\-plt\fR" 4
  .IX Item "-minline-plt"
! Enable inlining of \s-1PLT\s0 entries in function calls to functions that are
  not known to bind locally.  It has no effect without \fB\-mfdpic\fR.
! .IP "\fB\-mmulticore\fR" 4
  .IX Item "-mmulticore"
  Build a standalone application for multicore Blackfin processors.
  This option causes proper start files and link scripts supporting
--- 24657,24775 ----
  revision.  If \fIsirevision\fR is \fBnone\fR, the \f(CW\*(C`_\|_SILICON_REVISION_\|_\*(C'\fR
  is not defined.  If \fIsirevision\fR is \fBany\fR, the
  \&\f(CW\*(C`_\|_SILICON_REVISION_\|_\*(C'\fR is defined to be \f(CW0xffff\fR.
! If this optional \fIsirevision\fR is not used, GCC assumes the latest known
  silicon revision of the targeted Blackfin processor.
  .Sp
! GCC defines a preprocessor macro for the specified \fIcpu\fR.
! For the \fBbfin\-elf\fR toolchain, this option causes the hardware BSP
  provided by libgloss to be linked in if \fB\-msim\fR is not given.
  .Sp
  Without this option, \fBbf532\fR is used as the processor by default.
  .Sp
  Note that support for \fBbf561\fR is incomplete.  For \fBbf561\fR,
  only the preprocessor macro is defined.
! .IP \fB\-msim\fR 4
  .IX Item "-msim"
  Specifies that the program will be run on the simulator.  This causes
! the simulator BSP provided by libgloss to be linked in.  This option
! has effect only for \fBbfin\-elf\fR toolchain.
  Certain other options, such as \fB\-mid\-shared\-library\fR and
  \&\fB\-mfdpic\fR, imply \fB\-msim\fR.
! .IP \fB\-momit\-leaf\-frame\-pointer\fR 4
  .IX Item "-momit-leaf-frame-pointer"
! Don\*(Aqt keep the frame pointer in a register for leaf functions.  This
  avoids the instructions to save, set up and restore frame pointers and
  makes an extra register available in leaf functions.
! .IP \fB\-mspecld\-anomaly\fR 4
  .IX Item "-mspecld-anomaly"
  When enabled, the compiler ensures that the generated code does not
  contain speculative loads after jump instructions. If this option is used,
  \&\f(CW\*(C`_\|_WORKAROUND_SPECULATIVE_LOADS\*(C'\fR is defined.
! .IP \fB\-mno\-specld\-anomaly\fR 4
  .IX Item "-mno-specld-anomaly"
! Don\*(Aqt generate extra code to prevent speculative loads from occurring.
! .IP \fB\-mcsync\-anomaly\fR 4
  .IX Item "-mcsync-anomaly"
  When enabled, the compiler ensures that the generated code does not
! contain CSYNC or SSYNC instructions too soon after conditional branches.
  If this option is used, \f(CW\*(C`_\|_WORKAROUND_SPECULATIVE_SYNCS\*(C'\fR is defined.
! .IP \fB\-mno\-csync\-anomaly\fR 4
  .IX Item "-mno-csync-anomaly"
! Don\*(Aqt generate extra code to prevent CSYNC or SSYNC instructions from
  occurring too soon after a conditional branch.
! .IP \fB\-mlow64k\fR 4
  .IX Item "-mlow64k"
  When enabled, the compiler is free to take advantage of the knowledge that
  the entire program fits into the low 64k of memory.
! .IP \fB\-mno\-low64k\fR 4
  .IX Item "-mno-low64k"
  Assume that the program is arbitrarily large.  This is the default.
! .IP \fB\-mstack\-check\-l1\fR 4
  .IX Item "-mstack-check-l1"
  Do stack checking using information placed into L1 scratchpad memory by the
  uClinux kernel.
! .IP \fB\-mid\-shared\-library\fR 4
  .IX Item "-mid-shared-library"
! Generate code that supports shared libraries via the library ID method.
  This allows for execute in place and shared libraries in an environment
  without virtual memory management.  This option implies \fB\-fPIC\fR.
! With a \fBbfin\-elf\fR target, this option implies \fB\-msim\fR.
! .IP \fB\-mno\-id\-shared\-library\fR 4
  .IX Item "-mno-id-shared-library"
! Generate code that doesn\*(Aqt assume ID\-based shared libraries are being used.
  This is the default.
! .IP \fB\-mleaf\-id\-shared\-library\fR 4
  .IX Item "-mleaf-id-shared-library"
! Generate code that supports shared libraries via the library ID method,
! but assumes that this library or executable won\*(Aqt link against any other
! ID shared libraries.  That allows the compiler to use faster code for jumps
  and calls.
! .IP \fB\-mno\-leaf\-id\-shared\-library\fR 4
  .IX Item "-mno-leaf-id-shared-library"
! Do not assume that the code being compiled won\*(Aqt link against any ID shared
  libraries.  Slower code is generated for jump and call insns.
! .IP \fB\-mshared\-library\-id=n\fR 4
  .IX Item "-mshared-library-id=n"
! Specifies the identification number of the ID\-based shared library being
  compiled.  Specifying a value of 0 generates more compact code; specifying
  other values forces the allocation of that number to the current
! library but is no more space\- or time\-efficient than omitting this option.
! .IP \fB\-msep\-data\fR 4
  .IX Item "-msep-data"
  Generate code that allows the data segment to be located in a different
  area of memory from the text segment.  This allows for execute in place in
  an environment without virtual memory management by eliminating relocations
  against the text section.
! .IP \fB\-mno\-sep\-data\fR 4
  .IX Item "-mno-sep-data"
  Generate code that assumes that the data segment follows the text segment.
  This is the default.
! .IP \fB\-mlong\-calls\fR 4
  .IX Item "-mlong-calls"
  .PD 0
! .IP \fB\-mno\-long\-calls\fR 4
  .IX Item "-mno-long-calls"
  .PD
  Tells the compiler to perform function calls by first loading the
  address of the function into a register and then performing a subroutine
  call on this register.  This switch is needed if the target function
! lies outside of the 24\-bit addressing range of the offset\-based
  version of subroutine call instruction.
  .Sp
  This feature is not enabled by default.  Specifying
  \&\fB\-mno\-long\-calls\fR restores the default behavior.  Note these
  switches have no effect on how the compiler generates code to handle
  function calls via function pointers.
! .IP \fB\-mfast\-fp\fR 4
  .IX Item "-mfast-fp"
! Link with the fast floating\-point library. This library relaxes some of
! the IEEE floating\-point standard\*(Aqs rules for checking inputs against
! Not\-a\-Number (NAN), in the interest of performance.
! .IP \fB\-minline\-plt\fR 4
  .IX Item "-minline-plt"
! Enable inlining of PLT entries in function calls to functions that are
  not known to bind locally.  It has no effect without \fB\-mfdpic\fR.
! .IP \fB\-mmulticore\fR 4
  .IX Item "-mmulticore"
  Build a standalone application for multicore Blackfin processors.
  This option causes proper start files and link scripts supporting
*************** multicore to be used, and defines the ma
*** 24842,24876 ****
  It can only be used with \fB\-mcpu=bf561\fR[\fB\-\fR\fIsirevision\fR].
  .Sp
  This option can be used with \fB\-mcorea\fR or \fB\-mcoreb\fR, which
! selects the one-application-per-core programming model.  Without
  \&\fB\-mcorea\fR or \fB\-mcoreb\fR, the single\-application/dual\-core
  programming model is used. In this model, the main function of Core B
  should be named as \f(CW\*(C`coreb_main\*(C'\fR.
  .Sp
! If this option is not used, the single-core application programming
  model is used.
! .IP "\fB\-mcorea\fR" 4
  .IX Item "-mcorea"
! Build a standalone application for Core A of \s-1BF561\s0 when using
! the one-application-per-core programming model. Proper start files
  and link scripts are used to support Core A, and the macro
  \&\f(CW\*(C`_\|_BFIN_COREA\*(C'\fR is defined.
  This option can only be used in conjunction with \fB\-mmulticore\fR.
! .IP "\fB\-mcoreb\fR" 4
  .IX Item "-mcoreb"
! Build a standalone application for Core B of \s-1BF561\s0 when using
! the one-application-per-core programming model. Proper start files
  and link scripts are used to support Core B, and the macro
  \&\f(CW\*(C`_\|_BFIN_COREB\*(C'\fR is defined. When this option is used, \f(CW\*(C`coreb_main\*(C'\fR
  should be used instead of \f(CW\*(C`main\*(C'\fR.
  This option can only be used in conjunction with \fB\-mmulticore\fR.
! .IP "\fB\-msdram\fR" 4
  .IX Item "-msdram"
! Build a standalone application for \s-1SDRAM.\s0 Proper start files and
! link scripts are used to put the application into \s-1SDRAM,\s0 and the macro
  \&\f(CW\*(C`_\|_BFIN_SDRAM\*(C'\fR is defined.
! The loader should initialize \s-1SDRAM\s0 before loading the application.
! .IP "\fB\-micplb\fR" 4
  .IX Item "-micplb"
  Assume that ICPLBs are enabled at run time.  This has an effect on certain
  anomaly workarounds.  For Linux targets, the default is to assume ICPLBs
--- 24777,24811 ----
  It can only be used with \fB\-mcpu=bf561\fR[\fB\-\fR\fIsirevision\fR].
  .Sp
  This option can be used with \fB\-mcorea\fR or \fB\-mcoreb\fR, which
! selects the one\-application\-per\-core programming model.  Without
  \&\fB\-mcorea\fR or \fB\-mcoreb\fR, the single\-application/dual\-core
  programming model is used. In this model, the main function of Core B
  should be named as \f(CW\*(C`coreb_main\*(C'\fR.
  .Sp
! If this option is not used, the single\-core application programming
  model is used.
! .IP \fB\-mcorea\fR 4
  .IX Item "-mcorea"
! Build a standalone application for Core A of BF561 when using
! the one\-application\-per\-core programming model. Proper start files
  and link scripts are used to support Core A, and the macro
  \&\f(CW\*(C`_\|_BFIN_COREA\*(C'\fR is defined.
  This option can only be used in conjunction with \fB\-mmulticore\fR.
! .IP \fB\-mcoreb\fR 4
  .IX Item "-mcoreb"
! Build a standalone application for Core B of BF561 when using
! the one\-application\-per\-core programming model. Proper start files
  and link scripts are used to support Core B, and the macro
  \&\f(CW\*(C`_\|_BFIN_COREB\*(C'\fR is defined. When this option is used, \f(CW\*(C`coreb_main\*(C'\fR
  should be used instead of \f(CW\*(C`main\*(C'\fR.
  This option can only be used in conjunction with \fB\-mmulticore\fR.
! .IP \fB\-msdram\fR 4
  .IX Item "-msdram"
! Build a standalone application for SDRAM. Proper start files and
! link scripts are used to put the application into SDRAM, and the macro
  \&\f(CW\*(C`_\|_BFIN_SDRAM\*(C'\fR is defined.
! The loader should initialize SDRAM before loading the application.
! .IP \fB\-micplb\fR 4
  .IX Item "-micplb"
  Assume that ICPLBs are enabled at run time.  This has an effect on certain
  anomaly workarounds.  For Linux targets, the default is to assume ICPLBs
*************** are enabled; for standalone applications
*** 24878,24912 ****
  .PP
  \fIC6X Options\fR
  .IX Subsection "C6X Options"
! .IP "\fB\-march=\fR\fIname\fR" 4
  .IX Item "-march=name"
! This specifies the name of the target architecture.  \s-1GCC\s0 uses this
  name to determine what kind of instructions it can emit when generating
  assembly code.  Permissible names are: \fBc62x\fR,
  \&\fBc64x\fR, \fBc64x+\fR, \fBc67x\fR, \fBc67x+\fR, \fBc674x\fR.
! .IP "\fB\-mbig\-endian\fR" 4
  .IX Item "-mbig-endian"
! Generate code for a big-endian target.
! .IP "\fB\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
! Generate code for a little-endian target.  This is the default.
! .IP "\fB\-msim\fR" 4
  .IX Item "-msim"
  Choose startup files and linker script suitable for the simulator.
! .IP "\fB\-msdata=default\fR" 4
  .IX Item "-msdata=default"
  Put small global and static data in the \f(CW\*(C`.neardata\*(C'\fR section,
  which is pointed to by register \f(CW\*(C`B14\*(C'\fR.  Put small uninitialized
  global and static data in the \f(CW\*(C`.bss\*(C'\fR section, which is adjacent
! to the \f(CW\*(C`.neardata\*(C'\fR section.  Put small read-only data into the
  \&\f(CW\*(C`.rodata\*(C'\fR section.  The corresponding sections used for large
  pieces of data are \f(CW\*(C`.fardata\*(C'\fR, \f(CW\*(C`.far\*(C'\fR and \f(CW\*(C`.const\*(C'\fR.
! .IP "\fB\-msdata=all\fR" 4
  .IX Item "-msdata=all"
  Put all data, not just small objects, into the sections reserved for
  small data, and use addressing relative to the \f(CW\*(C`B14\*(C'\fR register to
  access them.
! .IP "\fB\-msdata=none\fR" 4
  .IX Item "-msdata=none"
  Make no use of the sections reserved for small data, and use absolute
  addresses to access all data.  Put all initialized global and static
--- 24813,24847 ----
  .PP
  \fIC6X Options\fR
  .IX Subsection "C6X Options"
! .IP \fB\-march=\fR\fIname\fR 4
  .IX Item "-march=name"
! This specifies the name of the target architecture.  GCC uses this
  name to determine what kind of instructions it can emit when generating
  assembly code.  Permissible names are: \fBc62x\fR,
  \&\fBc64x\fR, \fBc64x+\fR, \fBc67x\fR, \fBc67x+\fR, \fBc674x\fR.
! .IP \fB\-mbig\-endian\fR 4
  .IX Item "-mbig-endian"
! Generate code for a big\-endian target.
! .IP \fB\-mlittle\-endian\fR 4
  .IX Item "-mlittle-endian"
! Generate code for a little\-endian target.  This is the default.
! .IP \fB\-msim\fR 4
  .IX Item "-msim"
  Choose startup files and linker script suitable for the simulator.
! .IP \fB\-msdata=default\fR 4
  .IX Item "-msdata=default"
  Put small global and static data in the \f(CW\*(C`.neardata\*(C'\fR section,
  which is pointed to by register \f(CW\*(C`B14\*(C'\fR.  Put small uninitialized
  global and static data in the \f(CW\*(C`.bss\*(C'\fR section, which is adjacent
! to the \f(CW\*(C`.neardata\*(C'\fR section.  Put small read\-only data into the
  \&\f(CW\*(C`.rodata\*(C'\fR section.  The corresponding sections used for large
  pieces of data are \f(CW\*(C`.fardata\*(C'\fR, \f(CW\*(C`.far\*(C'\fR and \f(CW\*(C`.const\*(C'\fR.
! .IP \fB\-msdata=all\fR 4
  .IX Item "-msdata=all"
  Put all data, not just small objects, into the sections reserved for
  small data, and use addressing relative to the \f(CW\*(C`B14\*(C'\fR register to
  access them.
! .IP \fB\-msdata=none\fR 4
  .IX Item "-msdata=none"
  Make no use of the sections reserved for small data, and use absolute
  addresses to access all data.  Put all initialized global and static
*************** data in the \f(CW\*(C`.fardata\*(C'\fR s
*** 24914,25037 ****
  \&\f(CW\*(C`.far\*(C'\fR section.  Put all constant data into the \f(CW\*(C`.const\*(C'\fR
  section.
  .PP
! \fI\s-1CRIS\s0 Options\fR
  .IX Subsection "CRIS Options"
  .PP
! These options are defined specifically for the \s-1CRIS\s0 ports.
! .IP "\fB\-march=\fR\fIarchitecture-type\fR" 4
  .IX Item "-march=architecture-type"
  .PD 0
! .IP "\fB\-mcpu=\fR\fIarchitecture-type\fR" 4
  .IX Item "-mcpu=architecture-type"
  .PD
  Generate code for the specified architecture.  The choices for
! \&\fIarchitecture-type\fR are \fBv3\fR, \fBv8\fR and \fBv10\fR for
! respectively \s-1ETRAX\s0\ 4, \s-1ETRAX\s0\ 100, and \s-1ETRAX\s0\ 100\ \s-1LX.\s0
  Default is \fBv0\fR.
! .IP "\fB\-mtune=\fR\fIarchitecture-type\fR" 4
  .IX Item "-mtune=architecture-type"
! Tune to \fIarchitecture-type\fR everything applicable about the generated
! code, except for the \s-1ABI\s0 and the set of available instructions.  The
! choices for \fIarchitecture-type\fR are the same as for
! \&\fB\-march=\fR\fIarchitecture-type\fR.
! .IP "\fB\-mmax\-stack\-frame=\fR\fIn\fR" 4
  .IX Item "-mmax-stack-frame=n"
  Warn when the stack frame of a function exceeds \fIn\fR bytes.
! .IP "\fB\-metrax4\fR" 4
  .IX Item "-metrax4"
  .PD 0
! .IP "\fB\-metrax100\fR" 4
  .IX Item "-metrax100"
  .PD
  The options \fB\-metrax4\fR and \fB\-metrax100\fR are synonyms for
  \&\fB\-march=v3\fR and \fB\-march=v8\fR respectively.
! .IP "\fB\-mmul\-bug\-workaround\fR" 4
  .IX Item "-mmul-bug-workaround"
  .PD 0
! .IP "\fB\-mno\-mul\-bug\-workaround\fR" 4
  .IX Item "-mno-mul-bug-workaround"
  .PD
! Work around a bug in the \f(CW\*(C`muls\*(C'\fR and \f(CW\*(C`mulu\*(C'\fR instructions for \s-1CPU\s0
  models where it applies.  This option is disabled by default.
! .IP "\fB\-mpdebug\fR" 4
  .IX Item "-mpdebug"
! Enable CRIS-specific verbose debug-related information in the assembly
  code.  This option also has the effect of turning off the \fB#NO_APP\fR
! formatted-code indicator to the assembler at the beginning of the
  assembly file.
! .IP "\fB\-mcc\-init\fR" 4
  .IX Item "-mcc-init"
! Do not use condition-code results from previous instruction; always emit
  compare and test instructions before use of condition codes.
! .IP "\fB\-mno\-side\-effects\fR" 4
  .IX Item "-mno-side-effects"
  Do not emit instructions with side effects in addressing modes other than
! post-increment.
! .IP "\fB\-mstack\-align\fR" 4
  .IX Item "-mstack-align"
  .PD 0
! .IP "\fB\-mno\-stack\-align\fR" 4
  .IX Item "-mno-stack-align"
! .IP "\fB\-mdata\-align\fR" 4
  .IX Item "-mdata-align"
! .IP "\fB\-mno\-data\-align\fR" 4
  .IX Item "-mno-data-align"
! .IP "\fB\-mconst\-align\fR" 4
  .IX Item "-mconst-align"
! .IP "\fB\-mno\-const\-align\fR" 4
  .IX Item "-mno-const-align"
  .PD
  These options (\fBno\-\fR options) arrange (eliminate arrangements) for the
  stack frame, individual data and constants to be aligned for the maximum
! single data access size for the chosen \s-1CPU\s0 model.  The default is to
! arrange for 32\-bit alignment.  \s-1ABI\s0 details such as structure layout are
  not affected by these options.
! .IP "\fB\-m32\-bit\fR" 4
  .IX Item "-m32-bit"
  .PD 0
! .IP "\fB\-m16\-bit\fR" 4
  .IX Item "-m16-bit"
! .IP "\fB\-m8\-bit\fR" 4
  .IX Item "-m8-bit"
  .PD
! Similar to the stack\- data\- and const-align options above, these options
  arrange for stack frame, writable data and constants to all be 32\-bit,
  16\-bit or 8\-bit aligned.  The default is 32\-bit alignment.
! .IP "\fB\-mno\-prologue\-epilogue\fR" 4
  .IX Item "-mno-prologue-epilogue"
  .PD 0
! .IP "\fB\-mprologue\-epilogue\fR" 4
  .IX Item "-mprologue-epilogue"
  .PD
  With \fB\-mno\-prologue\-epilogue\fR, the normal function prologue and
  epilogue which set up the stack frame are omitted and no return
  instructions or return sequences are generated in the code.  Use this
  option only together with visual inspection of the compiled code: no
! warnings or errors are generated when call-saved registers must be saved,
  or storage for local variables needs to be allocated.
! .IP "\fB\-melf\fR" 4
  .IX Item "-melf"
! Legacy no-op option.
! .IP "\fB\-sim\fR" 4
  .IX Item "-sim"
  This option arranges
! to link with input-output functions from a simulator library.  Code,
! initialized data and zero-initialized data are allocated consecutively.
! .IP "\fB\-sim2\fR" 4
  .IX Item "-sim2"
  Like \fB\-sim\fR, but pass linker options to locate initialized data at
! 0x40000000 and zero-initialized data at 0x80000000.
  .PP
  \fIC\-SKY Options\fR
  .IX Subsection "C-SKY Options"
  .PP
! \&\s-1GCC\s0 supports these options when compiling for C\-SKY V2 processors.
! .IP "\fB\-march=\fR\fIarch\fR" 4
  .IX Item "-march=arch"
  Specify the C\-SKY target architecture.  Valid values for \fIarch\fR are:
  \&\fBck801\fR, \fBck802\fR, \fBck803\fR, \fBck807\fR, and \fBck810\fR.
  The default is \fBck810\fR.
! .IP "\fB\-mcpu=\fR\fIcpu\fR" 4
  .IX Item "-mcpu=cpu"
  Specify the C\-SKY target processor.  Valid values for \fIcpu\fR are:
  \&\fBck801\fR, \fBck801t\fR,
--- 24849,24972 ----
  \&\f(CW\*(C`.far\*(C'\fR section.  Put all constant data into the \f(CW\*(C`.const\*(C'\fR
  section.
  .PP
! \fICRIS Options\fR
  .IX Subsection "CRIS Options"
  .PP
! These options are defined specifically for the CRIS ports.
! .IP \fB\-march=\fR\fIarchitecture\-type\fR 4
  .IX Item "-march=architecture-type"
  .PD 0
! .IP \fB\-mcpu=\fR\fIarchitecture\-type\fR 4
  .IX Item "-mcpu=architecture-type"
  .PD
  Generate code for the specified architecture.  The choices for
! \&\fIarchitecture\-type\fR are \fBv3\fR, \fBv8\fR and \fBv10\fR for
! respectively ETRAX\ 4, ETRAX\ 100, and ETRAX\ 100\ LX.
  Default is \fBv0\fR.
! .IP \fB\-mtune=\fR\fIarchitecture\-type\fR 4
  .IX Item "-mtune=architecture-type"
! Tune to \fIarchitecture\-type\fR everything applicable about the generated
! code, except for the ABI and the set of available instructions.  The
! choices for \fIarchitecture\-type\fR are the same as for
! \&\fB\-march=\fR\fIarchitecture\-type\fR.
! .IP \fB\-mmax\-stack\-frame=\fR\fIn\fR 4
  .IX Item "-mmax-stack-frame=n"
  Warn when the stack frame of a function exceeds \fIn\fR bytes.
! .IP \fB\-metrax4\fR 4
  .IX Item "-metrax4"
  .PD 0
! .IP \fB\-metrax100\fR 4
  .IX Item "-metrax100"
  .PD
  The options \fB\-metrax4\fR and \fB\-metrax100\fR are synonyms for
  \&\fB\-march=v3\fR and \fB\-march=v8\fR respectively.
! .IP \fB\-mmul\-bug\-workaround\fR 4
  .IX Item "-mmul-bug-workaround"
  .PD 0
! .IP \fB\-mno\-mul\-bug\-workaround\fR 4
  .IX Item "-mno-mul-bug-workaround"
  .PD
! Work around a bug in the \f(CW\*(C`muls\*(C'\fR and \f(CW\*(C`mulu\*(C'\fR instructions for CPU
  models where it applies.  This option is disabled by default.
! .IP \fB\-mpdebug\fR 4
  .IX Item "-mpdebug"
! Enable CRIS\-specific verbose debug\-related information in the assembly
  code.  This option also has the effect of turning off the \fB#NO_APP\fR
! formatted\-code indicator to the assembler at the beginning of the
  assembly file.
! .IP \fB\-mcc\-init\fR 4
  .IX Item "-mcc-init"
! Do not use condition\-code results from previous instruction; always emit
  compare and test instructions before use of condition codes.
! .IP \fB\-mno\-side\-effects\fR 4
  .IX Item "-mno-side-effects"
  Do not emit instructions with side effects in addressing modes other than
! post\-increment.
! .IP \fB\-mstack\-align\fR 4
  .IX Item "-mstack-align"
  .PD 0
! .IP \fB\-mno\-stack\-align\fR 4
  .IX Item "-mno-stack-align"
! .IP \fB\-mdata\-align\fR 4
  .IX Item "-mdata-align"
! .IP \fB\-mno\-data\-align\fR 4
  .IX Item "-mno-data-align"
! .IP \fB\-mconst\-align\fR 4
  .IX Item "-mconst-align"
! .IP \fB\-mno\-const\-align\fR 4
  .IX Item "-mno-const-align"
  .PD
  These options (\fBno\-\fR options) arrange (eliminate arrangements) for the
  stack frame, individual data and constants to be aligned for the maximum
! single data access size for the chosen CPU model.  The default is to
! arrange for 32\-bit alignment.  ABI details such as structure layout are
  not affected by these options.
! .IP \fB\-m32\-bit\fR 4
  .IX Item "-m32-bit"
  .PD 0
! .IP \fB\-m16\-bit\fR 4
  .IX Item "-m16-bit"
! .IP \fB\-m8\-bit\fR 4
  .IX Item "-m8-bit"
  .PD
! Similar to the stack\- data\- and const\-align options above, these options
  arrange for stack frame, writable data and constants to all be 32\-bit,
  16\-bit or 8\-bit aligned.  The default is 32\-bit alignment.
! .IP \fB\-mno\-prologue\-epilogue\fR 4
  .IX Item "-mno-prologue-epilogue"
  .PD 0
! .IP \fB\-mprologue\-epilogue\fR 4
  .IX Item "-mprologue-epilogue"
  .PD
  With \fB\-mno\-prologue\-epilogue\fR, the normal function prologue and
  epilogue which set up the stack frame are omitted and no return
  instructions or return sequences are generated in the code.  Use this
  option only together with visual inspection of the compiled code: no
! warnings or errors are generated when call\-saved registers must be saved,
  or storage for local variables needs to be allocated.
! .IP \fB\-melf\fR 4
  .IX Item "-melf"
! Legacy no\-op option.
! .IP \fB\-sim\fR 4
  .IX Item "-sim"
  This option arranges
! to link with input\-output functions from a simulator library.  Code,
! initialized data and zero\-initialized data are allocated consecutively.
! .IP \fB\-sim2\fR 4
  .IX Item "-sim2"
  Like \fB\-sim\fR, but pass linker options to locate initialized data at
! 0x40000000 and zero\-initialized data at 0x80000000.
  .PP
  \fIC\-SKY Options\fR
  .IX Subsection "C-SKY Options"
  .PP
! GCC supports these options when compiling for C\-SKY V2 processors.
! .IP \fB\-march=\fR\fIarch\fR 4
  .IX Item "-march=arch"
  Specify the C\-SKY target architecture.  Valid values for \fIarch\fR are:
  \&\fBck801\fR, \fBck802\fR, \fBck803\fR, \fBck807\fR, and \fBck810\fR.
  The default is \fBck810\fR.
! .IP \fB\-mcpu=\fR\fIcpu\fR 4
  .IX Item "-mcpu=cpu"
  Specify the C\-SKY target processor.  Valid values for \fIcpu\fR are:
  \&\fBck801\fR, \fBck801t\fR,
*************** Specify the C\-SKY target processor.  Va
*** 25050,25274 ****
  \&\fBck810e\fR, \fBck810et\fR, \fBck810ef\fR, \fBck810eft\fR,
  \&\fBck810\fR, \fBck810v\fR, \fBck810f\fR, \fBck810t\fR, \fBck810fv\fR,
  \&\fBck810tv\fR, \fBck810ft\fR, and \fBck810ftv\fR.
! .IP "\fB\-mbig\-endian\fR" 4
  .IX Item "-mbig-endian"
  .PD 0
! .IP "\fB\-EB\fR" 4
  .IX Item "-EB"
! .IP "\fB\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
! .IP "\fB\-EL\fR" 4
  .IX Item "-EL"
  .PD
! Select big\- or little-endian code.  The default is little-endian.
! .IP "\fB\-mfloat\-abi=\fR\fIname\fR" 4
  .IX Item "-mfloat-abi=name"
! Specifies which floating-point \s-1ABI\s0 to use.  Permissible values
  are: \fBsoft\fR, \fBsoftfp\fR and \fBhard\fR.
  .Sp
! Specifying \fBsoft\fR causes \s-1GCC\s0 to generate output containing
! library calls for floating-point operations.
! \&\fBsoftfp\fR allows the generation of code using hardware floating-point
! instructions, but still uses the soft-float calling conventions.
! \&\fBhard\fR allows generation of floating-point instructions
! and uses FPU-specific calling conventions.
  .Sp
  The default depends on the specific target configuration.  Note that
! the hard-float and soft-float ABIs are not link-compatible; you must
! compile your entire program with the same \s-1ABI,\s0 and link with a
  compatible set of libraries.
! .IP "\fB\-mhard\-float\fR" 4
  .IX Item "-mhard-float"
  .PD 0
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  .PD
! Select hardware or software floating-point implementations.
  The default is soft float.
! .IP "\fB\-mdouble\-float\fR" 4
  .IX Item "-mdouble-float"
  .PD 0
! .IP "\fB\-mno\-double\-float\fR" 4
  .IX Item "-mno-double-float"
  .PD
  When \fB\-mhard\-float\fR is in effect, enable generation of
! double-precision float instructions.  This is the default except
! when compiling for \s-1CK803.\s0
! .IP "\fB\-mfdivdu\fR" 4
  .IX Item "-mfdivdu"
  .PD 0
! .IP "\fB\-mno\-fdivdu\fR" 4
  .IX Item "-mno-fdivdu"
  .PD
  When \fB\-mhard\-float\fR is in effect, enable generation of
  \&\f(CW\*(C`frecipd\*(C'\fR, \f(CW\*(C`fsqrtd\*(C'\fR, and \f(CW\*(C`fdivd\*(C'\fR instructions.
! This is the default except when compiling for \s-1CK803.\s0
! .IP "\fB\-mfpu=\fR\fIfpu\fR" 4
  .IX Item "-mfpu=fpu"
! Select the floating-point processor.  This option can only be used with
  \&\fB\-mhard\-float\fR.
  Values for \fIfpu\fR are
  \&\fBfpv2_sf\fR (equivalent to \fB\-mno\-double\-float \-mno\-fdivdu\fR),
  \&\fBfpv2\fR (\fB\-mdouble\-float \-mno\-divdu\fR), and
  \&\fBfpv2_divd\fR (\fB\-mdouble\-float \-mdivdu\fR).
! .IP "\fB\-melrw\fR" 4
  .IX Item "-melrw"
  .PD 0
! .IP "\fB\-mno\-elrw\fR" 4
  .IX Item "-mno-elrw"
  .PD
  Enable the extended \f(CW\*(C`lrw\*(C'\fR instruction.  This option defaults to on
! for \s-1CK801\s0 and off otherwise.
! .IP "\fB\-mistack\fR" 4
  .IX Item "-mistack"
  .PD 0
! .IP "\fB\-mno\-istack\fR" 4
  .IX Item "-mno-istack"
  .PD
  Enable interrupt stack instructions; the default is off.
  .Sp
  The \fB\-mistack\fR option is required to handle the
  \&\f(CW\*(C`interrupt\*(C'\fR and \f(CW\*(C`isr\*(C'\fR function attributes.
! .IP "\fB\-mmp\fR" 4
  .IX Item "-mmp"
  Enable multiprocessor instructions; the default is off.
! .IP "\fB\-mcp\fR" 4
  .IX Item "-mcp"
  Enable coprocessor instructions; the default is off.
! .IP "\fB\-mcache\fR" 4
  .IX Item "-mcache"
  Enable coprocessor instructions; the default is off.
! .IP "\fB\-msecurity\fR" 4
  .IX Item "-msecurity"
  Enable C\-SKY security instructions; the default is off.
! .IP "\fB\-mtrust\fR" 4
  .IX Item "-mtrust"
  Enable C\-SKY trust instructions; the default is off.
! .IP "\fB\-mdsp\fR" 4
  .IX Item "-mdsp"
  .PD 0
! .IP "\fB\-medsp\fR" 4
  .IX Item "-medsp"
! .IP "\fB\-mvdsp\fR" 4
  .IX Item "-mvdsp"
  .PD
! Enable C\-SKY \s-1DSP,\s0 Enhanced \s-1DSP,\s0 or Vector \s-1DSP\s0 instructions, respectively.
  All of these options default to off.
! .IP "\fB\-mdiv\fR" 4
  .IX Item "-mdiv"
  .PD 0
! .IP "\fB\-mno\-div\fR" 4
  .IX Item "-mno-div"
  .PD
  Generate divide instructions.  Default is off.
! .IP "\fB\-msmart\fR" 4
  .IX Item "-msmart"
  .PD 0
! .IP "\fB\-mno\-smart\fR" 4
  .IX Item "-mno-smart"
  .PD
  Generate code for Smart Mode, using only registers numbered 0\-7 to allow
! use of 16\-bit instructions.  This option is ignored for \s-1CK801\s0 where this
! is the required behavior, and it defaults to on for \s-1CK802.\s0
  For other targets, the default is off.
! .IP "\fB\-mhigh\-registers\fR" 4
  .IX Item "-mhigh-registers"
  .PD 0
! .IP "\fB\-mno\-high\-registers\fR" 4
  .IX Item "-mno-high-registers"
  .PD
  Generate code using the high registers numbered 16\-31.  This option
! is not supported on \s-1CK801, CK802,\s0 or \s-1CK803,\s0 and is enabled by default
  for other processors.
! .IP "\fB\-manchor\fR" 4
  .IX Item "-manchor"
  .PD 0
! .IP "\fB\-mno\-anchor\fR" 4
  .IX Item "-mno-anchor"
  .PD
  Generate code using global anchor symbol addresses.
! .IP "\fB\-mpushpop\fR" 4
  .IX Item "-mpushpop"
  .PD 0
! .IP "\fB\-mno\-pushpop\fR" 4
  .IX Item "-mno-pushpop"
  .PD
  Generate code using \f(CW\*(C`push\*(C'\fR and \f(CW\*(C`pop\*(C'\fR instructions.  This option
  defaults to on.
! .IP "\fB\-mmultiple\-stld\fR" 4
  .IX Item "-mmultiple-stld"
  .PD 0
! .IP "\fB\-mstm\fR" 4
  .IX Item "-mstm"
! .IP "\fB\-mno\-multiple\-stld\fR" 4
  .IX Item "-mno-multiple-stld"
! .IP "\fB\-mno\-stm\fR" 4
  .IX Item "-mno-stm"
  .PD
  Generate code using \f(CW\*(C`stm\*(C'\fR and \f(CW\*(C`ldm\*(C'\fR instructions.  This option
! isn't supported on \s-1CK801\s0 but is enabled by default on other processors.
! .IP "\fB\-mconstpool\fR" 4
  .IX Item "-mconstpool"
  .PD 0
! .IP "\fB\-mno\-constpool\fR" 4
  .IX Item "-mno-constpool"
  .PD
  Create constant pools in the compiler instead of deferring it to the
  assembler.  This option is the default and required for correct code
! generation on \s-1CK801\s0 and \s-1CK802,\s0 and is optional on other processors.
! .IP "\fB\-mstack\-size\fR" 4
  .IX Item "-mstack-size"
  .PD 0
! .IP "\fB\-mno\-stack\-size\fR" 4
  .IX Item "-mno-stack-size"
  .PD
  Emit \f(CW\*(C`.stack_size\*(C'\fR directives for each function in the assembly
  output.  This option defaults to off.
! .IP "\fB\-mccrt\fR" 4
  .IX Item "-mccrt"
  .PD 0
! .IP "\fB\-mno\-ccrt\fR" 4
  .IX Item "-mno-ccrt"
  .PD
  Generate code for the C\-SKY compiler runtime instead of libgcc.  This
  option defaults to off.
! .IP "\fB\-mbranch\-cost=\fR\fIn\fR" 4
  .IX Item "-mbranch-cost=n"
  Set the branch costs to roughly \f(CW\*(C`n\*(C'\fR instructions.  The default is 1.
! .IP "\fB\-msched\-prolog\fR" 4
  .IX Item "-msched-prolog"
  .PD 0
! .IP "\fB\-mno\-sched\-prolog\fR" 4
  .IX Item "-mno-sched-prolog"
  .PD
  Permit scheduling of function prologue and epilogue sequences.  Using
! this option can result in code that is not compliant with the C\-SKY V2 \s-1ABI\s0
  prologue requirements and that cannot be debugged or backtraced.
  It is disabled by default.
! .IP "\fB\-msim\fR" 4
  .IX Item "-msim"
  Links the library libsemi.a which is in compatible with simulator. Applicable
! to \s-1ELF\s0 compiler only.
  .PP
  \fICygwin and MinGW Options\fR
  .IX Subsection "Cygwin and MinGW Options"
  .PP
  These additional options are available for Microsoft Windows targets:
! .IP "\fB\-mconsole\fR" 4
  .IX Item "-mconsole"
  This option
  specifies that a console application is to be generated, by
! instructing the linker to set the \s-1PE\s0 header subsystem type
  required for console applications.
  This option is available for Cygwin and MinGW targets and is
  enabled by default on those targets.
! .IP "\fB\-mcrtdll=\fR\fIlibrary\fR" 4
  .IX Item "-mcrtdll=library"
! Preprocess, compile or link with specified C RunTime \s-1DLL\s0 \fIlibrary\fR.
  This option adjust predefined macros \f(CW\*(C`_\|_CRTDLL_\|_\*(C'\fR, \f(CW\*(C`_\|_MSVCRT_\|_\*(C'\fR,
! \&\f(CW\*(C`_UCRT\*(C'\fR and \f(CW\*(C`_\|_MSVCRT_VERSION_\|_\*(C'\fR for specified \s-1CRT\s0 \fIlibrary\fR,
! choose start file for \s-1CRT\s0 \fIlibrary\fR and link with \s-1CRT\s0 \fIlibrary\fR.
! Recognized \s-1CRT\s0 library names for proprocessor are:
  \&\f(CW\*(C`crtdll*\*(C'\fR, \f(CW\*(C`msvcrt10*\*(C'\fR, \f(CW\*(C`msvcrt20*\*(C'\fR, \f(CW\*(C`msvcrt40*\*(C'\fR,
  \&\f(CW\*(C`msvcr40*\*(C'\fR, \f(CW\*(C`msvcrtd*\*(C'\fR, \f(CW\*(C`msvcrt\-os*\*(C'\fR,
  \&\f(CW\*(C`msvcr70*\*(C'\fR, \f(CW\*(C`msvcr71*\*(C'\fR, \f(CW\*(C`msvcr80*\*(C'\fR, \f(CW\*(C`msvcr90*\*(C'\fR,
--- 24985,25209 ----
  \&\fBck810e\fR, \fBck810et\fR, \fBck810ef\fR, \fBck810eft\fR,
  \&\fBck810\fR, \fBck810v\fR, \fBck810f\fR, \fBck810t\fR, \fBck810fv\fR,
  \&\fBck810tv\fR, \fBck810ft\fR, and \fBck810ftv\fR.
! .IP \fB\-mbig\-endian\fR 4
  .IX Item "-mbig-endian"
  .PD 0
! .IP \fB\-EB\fR 4
  .IX Item "-EB"
! .IP \fB\-mlittle\-endian\fR 4
  .IX Item "-mlittle-endian"
! .IP \fB\-EL\fR 4
  .IX Item "-EL"
  .PD
! Select big\- or little\-endian code.  The default is little\-endian.
! .IP \fB\-mfloat\-abi=\fR\fIname\fR 4
  .IX Item "-mfloat-abi=name"
! Specifies which floating\-point ABI to use.  Permissible values
  are: \fBsoft\fR, \fBsoftfp\fR and \fBhard\fR.
  .Sp
! Specifying \fBsoft\fR causes GCC to generate output containing
! library calls for floating\-point operations.
! \&\fBsoftfp\fR allows the generation of code using hardware floating\-point
! instructions, but still uses the soft\-float calling conventions.
! \&\fBhard\fR allows generation of floating\-point instructions
! and uses FPU\-specific calling conventions.
  .Sp
  The default depends on the specific target configuration.  Note that
! the hard\-float and soft\-float ABIs are not link\-compatible; you must
! compile your entire program with the same ABI, and link with a
  compatible set of libraries.
! .IP \fB\-mhard\-float\fR 4
  .IX Item "-mhard-float"
  .PD 0
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  .PD
! Select hardware or software floating\-point implementations.
  The default is soft float.
! .IP \fB\-mdouble\-float\fR 4
  .IX Item "-mdouble-float"
  .PD 0
! .IP \fB\-mno\-double\-float\fR 4
  .IX Item "-mno-double-float"
  .PD
  When \fB\-mhard\-float\fR is in effect, enable generation of
! double\-precision float instructions.  This is the default except
! when compiling for CK803.
! .IP \fB\-mfdivdu\fR 4
  .IX Item "-mfdivdu"
  .PD 0
! .IP \fB\-mno\-fdivdu\fR 4
  .IX Item "-mno-fdivdu"
  .PD
  When \fB\-mhard\-float\fR is in effect, enable generation of
  \&\f(CW\*(C`frecipd\*(C'\fR, \f(CW\*(C`fsqrtd\*(C'\fR, and \f(CW\*(C`fdivd\*(C'\fR instructions.
! This is the default except when compiling for CK803.
! .IP \fB\-mfpu=\fR\fIfpu\fR 4
  .IX Item "-mfpu=fpu"
! Select the floating\-point processor.  This option can only be used with
  \&\fB\-mhard\-float\fR.
  Values for \fIfpu\fR are
  \&\fBfpv2_sf\fR (equivalent to \fB\-mno\-double\-float \-mno\-fdivdu\fR),
  \&\fBfpv2\fR (\fB\-mdouble\-float \-mno\-divdu\fR), and
  \&\fBfpv2_divd\fR (\fB\-mdouble\-float \-mdivdu\fR).
! .IP \fB\-melrw\fR 4
  .IX Item "-melrw"
  .PD 0
! .IP \fB\-mno\-elrw\fR 4
  .IX Item "-mno-elrw"
  .PD
  Enable the extended \f(CW\*(C`lrw\*(C'\fR instruction.  This option defaults to on
! for CK801 and off otherwise.
! .IP \fB\-mistack\fR 4
  .IX Item "-mistack"
  .PD 0
! .IP \fB\-mno\-istack\fR 4
  .IX Item "-mno-istack"
  .PD
  Enable interrupt stack instructions; the default is off.
  .Sp
  The \fB\-mistack\fR option is required to handle the
  \&\f(CW\*(C`interrupt\*(C'\fR and \f(CW\*(C`isr\*(C'\fR function attributes.
! .IP \fB\-mmp\fR 4
  .IX Item "-mmp"
  Enable multiprocessor instructions; the default is off.
! .IP \fB\-mcp\fR 4
  .IX Item "-mcp"
  Enable coprocessor instructions; the default is off.
! .IP \fB\-mcache\fR 4
  .IX Item "-mcache"
  Enable coprocessor instructions; the default is off.
! .IP \fB\-msecurity\fR 4
  .IX Item "-msecurity"
  Enable C\-SKY security instructions; the default is off.
! .IP \fB\-mtrust\fR 4
  .IX Item "-mtrust"
  Enable C\-SKY trust instructions; the default is off.
! .IP \fB\-mdsp\fR 4
  .IX Item "-mdsp"
  .PD 0
! .IP \fB\-medsp\fR 4
  .IX Item "-medsp"
! .IP \fB\-mvdsp\fR 4
  .IX Item "-mvdsp"
  .PD
! Enable C\-SKY DSP, Enhanced DSP, or Vector DSP instructions, respectively.
  All of these options default to off.
! .IP \fB\-mdiv\fR 4
  .IX Item "-mdiv"
  .PD 0
! .IP \fB\-mno\-div\fR 4
  .IX Item "-mno-div"
  .PD
  Generate divide instructions.  Default is off.
! .IP \fB\-msmart\fR 4
  .IX Item "-msmart"
  .PD 0
! .IP \fB\-mno\-smart\fR 4
  .IX Item "-mno-smart"
  .PD
  Generate code for Smart Mode, using only registers numbered 0\-7 to allow
! use of 16\-bit instructions.  This option is ignored for CK801 where this
! is the required behavior, and it defaults to on for CK802.
  For other targets, the default is off.
! .IP \fB\-mhigh\-registers\fR 4
  .IX Item "-mhigh-registers"
  .PD 0
! .IP \fB\-mno\-high\-registers\fR 4
  .IX Item "-mno-high-registers"
  .PD
  Generate code using the high registers numbered 16\-31.  This option
! is not supported on CK801, CK802, or CK803, and is enabled by default
  for other processors.
! .IP \fB\-manchor\fR 4
  .IX Item "-manchor"
  .PD 0
! .IP \fB\-mno\-anchor\fR 4
  .IX Item "-mno-anchor"
  .PD
  Generate code using global anchor symbol addresses.
! .IP \fB\-mpushpop\fR 4
  .IX Item "-mpushpop"
  .PD 0
! .IP \fB\-mno\-pushpop\fR 4
  .IX Item "-mno-pushpop"
  .PD
  Generate code using \f(CW\*(C`push\*(C'\fR and \f(CW\*(C`pop\*(C'\fR instructions.  This option
  defaults to on.
! .IP \fB\-mmultiple\-stld\fR 4
  .IX Item "-mmultiple-stld"
  .PD 0
! .IP \fB\-mstm\fR 4
  .IX Item "-mstm"
! .IP \fB\-mno\-multiple\-stld\fR 4
  .IX Item "-mno-multiple-stld"
! .IP \fB\-mno\-stm\fR 4
  .IX Item "-mno-stm"
  .PD
  Generate code using \f(CW\*(C`stm\*(C'\fR and \f(CW\*(C`ldm\*(C'\fR instructions.  This option
! isn\*(Aqt supported on CK801 but is enabled by default on other processors.
! .IP \fB\-mconstpool\fR 4
  .IX Item "-mconstpool"
  .PD 0
! .IP \fB\-mno\-constpool\fR 4
  .IX Item "-mno-constpool"
  .PD
  Create constant pools in the compiler instead of deferring it to the
  assembler.  This option is the default and required for correct code
! generation on CK801 and CK802, and is optional on other processors.
! .IP \fB\-mstack\-size\fR 4
  .IX Item "-mstack-size"
  .PD 0
! .IP \fB\-mno\-stack\-size\fR 4
  .IX Item "-mno-stack-size"
  .PD
  Emit \f(CW\*(C`.stack_size\*(C'\fR directives for each function in the assembly
  output.  This option defaults to off.
! .IP \fB\-mccrt\fR 4
  .IX Item "-mccrt"
  .PD 0
! .IP \fB\-mno\-ccrt\fR 4
  .IX Item "-mno-ccrt"
  .PD
  Generate code for the C\-SKY compiler runtime instead of libgcc.  This
  option defaults to off.
! .IP \fB\-mbranch\-cost=\fR\fIn\fR 4
  .IX Item "-mbranch-cost=n"
  Set the branch costs to roughly \f(CW\*(C`n\*(C'\fR instructions.  The default is 1.
! .IP \fB\-msched\-prolog\fR 4
  .IX Item "-msched-prolog"
  .PD 0
! .IP \fB\-mno\-sched\-prolog\fR 4
  .IX Item "-mno-sched-prolog"
  .PD
  Permit scheduling of function prologue and epilogue sequences.  Using
! this option can result in code that is not compliant with the C\-SKY V2 ABI
  prologue requirements and that cannot be debugged or backtraced.
  It is disabled by default.
! .IP \fB\-msim\fR 4
  .IX Item "-msim"
  Links the library libsemi.a which is in compatible with simulator. Applicable
! to ELF compiler only.
  .PP
  \fICygwin and MinGW Options\fR
  .IX Subsection "Cygwin and MinGW Options"
  .PP
  These additional options are available for Microsoft Windows targets:
! .IP \fB\-mconsole\fR 4
  .IX Item "-mconsole"
  This option
  specifies that a console application is to be generated, by
! instructing the linker to set the PE header subsystem type
  required for console applications.
  This option is available for Cygwin and MinGW targets and is
  enabled by default on those targets.
! .IP \fB\-mcrtdll=\fR\fIlibrary\fR 4
  .IX Item "-mcrtdll=library"
! Preprocess, compile or link with specified C RunTime DLL \fIlibrary\fR.
  This option adjust predefined macros \f(CW\*(C`_\|_CRTDLL_\|_\*(C'\fR, \f(CW\*(C`_\|_MSVCRT_\|_\*(C'\fR,
! \&\f(CW\*(C`_UCRT\*(C'\fR and \f(CW\*(C`_\|_MSVCRT_VERSION_\|_\*(C'\fR for specified CRT \fIlibrary\fR,
! choose start file for CRT \fIlibrary\fR and link with CRT \fIlibrary\fR.
! Recognized CRT library names for proprocessor are:
  \&\f(CW\*(C`crtdll*\*(C'\fR, \f(CW\*(C`msvcrt10*\*(C'\fR, \f(CW\*(C`msvcrt20*\*(C'\fR, \f(CW\*(C`msvcrt40*\*(C'\fR,
  \&\f(CW\*(C`msvcr40*\*(C'\fR, \f(CW\*(C`msvcrtd*\*(C'\fR, \f(CW\*(C`msvcrt\-os*\*(C'\fR,
  \&\f(CW\*(C`msvcr70*\*(C'\fR, \f(CW\*(C`msvcr71*\*(C'\fR, \f(CW\*(C`msvcr80*\*(C'\fR, \f(CW\*(C`msvcr90*\*(C'\fR,
*************** Recognized \s-1CRT\s0 library names for
*** 25276,25340 ****
  If this options is not specified then the default MinGW import library
  \&\f(CW\*(C`msvcrt\*(C'\fR is used for linking and no other adjustment for
  preprocessor is done. MinGW import library \f(CW\*(C`msvcrt\*(C'\fR is just a
! symlink to (or a copy of) another MinGW \s-1CRT\s0 import library
  chosen during MinGW compilation. MinGW import library \f(CW\*(C`msvcrt\-os\*(C'\fR
! is for Windows system \s-1CRT DLL\s0 library \f(CW\*(C`msvcrt.dll\*(C'\fR and
  in most cases is the default MinGW import library.
! Generally speaking, changing the \s-1CRT DLL\s0 requires recompiling
! the entire MinGW \s-1CRT.\s0 This option is for experimental and testing
  purposes only.
  This option is available for MinGW targets.
! .IP "\fB\-mdll\fR" 4
  .IX Item "-mdll"
  This option is available for Cygwin and MinGW targets.  It
  specifies that a DLL\-\-\-a dynamic link library\-\-\-is to be
  generated, enabling the selection of the required runtime
  startup object and entry point.
! .IP "\fB\-mnop\-fun\-dllimport\fR" 4
  .IX Item "-mnop-fun-dllimport"
  This option is available for Cygwin and MinGW targets.  It
  specifies that the \f(CW\*(C`dllimport\*(C'\fR attribute should be ignored.
! .IP "\fB\-mthreads\fR" 4
  .IX Item "-mthreads"
  This option is available for MinGW targets. It specifies
! that MinGW-specific thread support is to be used.
! .IP "\fB\-municode\fR" 4
  .IX Item "-municode"
  This option is available for MinGW\-w64 targets.  It causes
  the \f(CW\*(C`UNICODE\*(C'\fR preprocessor macro to be predefined, and
! chooses Unicode-capable runtime startup code.
! .IP "\fB\-mwin32\fR" 4
  .IX Item "-mwin32"
  This option is available for Cygwin and MinGW targets.  It
  specifies that the typical Microsoft Windows predefined macros are to
! be set in the pre-processor, but does not influence the choice
  of runtime library/startup code.
! .IP "\fB\-mwindows\fR" 4
  .IX Item "-mwindows"
  This option is available for Cygwin and MinGW targets.  It
! specifies that a \s-1GUI\s0 application is to be generated by
! instructing the linker to set the \s-1PE\s0 header subsystem type
  appropriately.
! .IP "\fB\-fno\-set\-stack\-executable\fR" 4
  .IX Item "-fno-set-stack-executable"
  This option is available for MinGW targets. It specifies that
! the executable flag for the stack used by nested functions isn't
  set. This is necessary for binaries running in kernel mode of
! Microsoft Windows, as there the User32 \s-1API,\s0 which is used to set executable
! privileges, isn't available.
! .IP "\fB\-fwritable\-relocated\-rdata\fR" 4
  .IX Item "-fwritable-relocated-rdata"
  This option is available for MinGW and Cygwin targets.  It specifies
! that relocated-data in read-only section is put into the \f(CW\*(C`.data\*(C'\fR
  section.  This is a necessary for older runtimes not supporting
! modification of \f(CW\*(C`.rdata\*(C'\fR sections for pseudo-relocation.
! .IP "\fB\-mpe\-aligned\-commons\fR" 4
  .IX Item "-mpe-aligned-commons"
  This option is available for Cygwin and MinGW targets.  It
! specifies that the \s-1GNU\s0 extension to the \s-1PE\s0 file format that
! permits the correct alignment of \s-1COMMON\s0 variables should be
  used when generating code.  It is enabled by default if
! \&\s-1GCC\s0 detects that the target assembler found during configuration
  supports the feature.
  .PP
  See also under \fBx86 Options\fR for standard options.
--- 25211,25275 ----
  If this options is not specified then the default MinGW import library
  \&\f(CW\*(C`msvcrt\*(C'\fR is used for linking and no other adjustment for
  preprocessor is done. MinGW import library \f(CW\*(C`msvcrt\*(C'\fR is just a
! symlink to (or a copy of) another MinGW CRT import library
  chosen during MinGW compilation. MinGW import library \f(CW\*(C`msvcrt\-os\*(C'\fR
! is for Windows system CRT DLL library \f(CW\*(C`msvcrt.dll\*(C'\fR and
  in most cases is the default MinGW import library.
! Generally speaking, changing the CRT DLL requires recompiling
! the entire MinGW CRT. This option is for experimental and testing
  purposes only.
  This option is available for MinGW targets.
! .IP \fB\-mdll\fR 4
  .IX Item "-mdll"
  This option is available for Cygwin and MinGW targets.  It
  specifies that a DLL\-\-\-a dynamic link library\-\-\-is to be
  generated, enabling the selection of the required runtime
  startup object and entry point.
! .IP \fB\-mnop\-fun\-dllimport\fR 4
  .IX Item "-mnop-fun-dllimport"
  This option is available for Cygwin and MinGW targets.  It
  specifies that the \f(CW\*(C`dllimport\*(C'\fR attribute should be ignored.
! .IP \fB\-mthreads\fR 4
  .IX Item "-mthreads"
  This option is available for MinGW targets. It specifies
! that MinGW\-specific thread support is to be used.
! .IP \fB\-municode\fR 4
  .IX Item "-municode"
  This option is available for MinGW\-w64 targets.  It causes
  the \f(CW\*(C`UNICODE\*(C'\fR preprocessor macro to be predefined, and
! chooses Unicode\-capable runtime startup code.
! .IP \fB\-mwin32\fR 4
  .IX Item "-mwin32"
  This option is available for Cygwin and MinGW targets.  It
  specifies that the typical Microsoft Windows predefined macros are to
! be set in the pre\-processor, but does not influence the choice
  of runtime library/startup code.
! .IP \fB\-mwindows\fR 4
  .IX Item "-mwindows"
  This option is available for Cygwin and MinGW targets.  It
! specifies that a GUI application is to be generated by
! instructing the linker to set the PE header subsystem type
  appropriately.
! .IP \fB\-fno\-set\-stack\-executable\fR 4
  .IX Item "-fno-set-stack-executable"
  This option is available for MinGW targets. It specifies that
! the executable flag for the stack used by nested functions isn\*(Aqt
  set. This is necessary for binaries running in kernel mode of
! Microsoft Windows, as there the User32 API, which is used to set executable
! privileges, isn\*(Aqt available.
! .IP \fB\-fwritable\-relocated\-rdata\fR 4
  .IX Item "-fwritable-relocated-rdata"
  This option is available for MinGW and Cygwin targets.  It specifies
! that relocated\-data in read\-only section is put into the \f(CW\*(C`.data\*(C'\fR
  section.  This is a necessary for older runtimes not supporting
! modification of \f(CW\*(C`.rdata\*(C'\fR sections for pseudo\-relocation.
! .IP \fB\-mpe\-aligned\-commons\fR 4
  .IX Item "-mpe-aligned-commons"
  This option is available for Cygwin and MinGW targets.  It
! specifies that the GNU extension to the PE file format that
! permits the correct alignment of COMMON variables should be
  used when generating code.  It is enabled by default if
! GCC detects that the target assembler found during configuration
  supports the feature.
  .PP
  See also under \fBx86 Options\fR for standard options.
*************** See also under \fBx86 Options\fR for sta
*** 25345,25363 ****
  These options are defined for all architectures running the Darwin operating
  system.
  .PP
! \&\s-1FSF GCC\s0 on Darwin does not create \*(L"fat\*(R" object files; it creates
! an object file for the single architecture that \s-1GCC\s0 was built to
! target.  Apple's \s-1GCC\s0 on Darwin does create \*(L"fat\*(R" files if multiple
  \&\fB\-arch\fR options are used; it does so by running the compiler or
  linker multiple times and joining the results together with
  \&\fIlipo\fR.
  .PP
  The subtype of the file created (like \fBppc7400\fR or \fBppc970\fR or
! \&\fBi686\fR) is determined by the flags that specify the \s-1ISA\s0
! that \s-1GCC\s0 is targeting, like \fB\-mcpu\fR or \fB\-march\fR.  The
  \&\fB\-force_cpusubtype_ALL\fR option can be used to override this.
  .PP
! The Darwin tools vary in their behavior when presented with an \s-1ISA\s0
  mismatch.  The assembler, \fIas\fR, only permits instructions to
  be used that are valid for the subtype of the file it is generating,
  so you cannot put 64\-bit instructions in a \fBppc750\fR object file.
--- 25280,25298 ----
  These options are defined for all architectures running the Darwin operating
  system.
  .PP
! FSF GCC on Darwin does not create "fat" object files; it creates
! an object file for the single architecture that GCC was built to
! target.  Apple\*(Aqs GCC on Darwin does create "fat" files if multiple
  \&\fB\-arch\fR options are used; it does so by running the compiler or
  linker multiple times and joining the results together with
  \&\fIlipo\fR.
  .PP
  The subtype of the file created (like \fBppc7400\fR or \fBppc970\fR or
! \&\fBi686\fR) is determined by the flags that specify the ISA
! that GCC is targeting, like \fB\-mcpu\fR or \fB\-march\fR.  The
  \&\fB\-force_cpusubtype_ALL\fR option can be used to override this.
  .PP
! The Darwin tools vary in their behavior when presented with an ISA
  mismatch.  The assembler, \fIas\fR, only permits instructions to
  be used that are valid for the subtype of the file it is generating,
  so you cannot put 64\-bit instructions in a \fBppc750\fR object file.
*************** restrictive subtype than its input files
*** 25367,25378 ****
  a \fBppc970\fR object file in a \fBppc7400\fR library).  The linker
  for executables, \fBld\fR, quietly gives the executable the most
  restrictive subtype of any of its input files.
! .IP "\fB\-F\fR\fIdir\fR" 4
  .IX Item "-Fdir"
  Add the framework directory \fIdir\fR to the head of the list of
  directories to be searched for header files.  These directories are
  interleaved with those specified by \fB\-I\fR options and are
! scanned in a left-to-right order.
  .Sp
  A framework directory is a directory with frameworks in it.  A
  framework is a directory with a \fIHeaders\fR and/or
--- 25302,25313 ----
  a \fBppc970\fR object file in a \fBppc7400\fR library).  The linker
  for executables, \fBld\fR, quietly gives the executable the most
  restrictive subtype of any of its input files.
! .IP \fB\-F\fR\fIdir\fR 4
  .IX Item "-Fdir"
  Add the framework directory \fIdir\fR to the head of the list of
  directories to be searched for header files.  These directories are
  interleaved with those specified by \fB\-I\fR options and are
! scanned in a left\-to\-right order.
  .Sp
  A framework directory is a directory with frameworks in it.  A
  framework is a directory with a \fIHeaders\fR and/or
*************** in \fI.framework\fR.  The name of a fram
*** 25381,25387 ****
  directory excluding the \fI.framework\fR.  Headers associated with
  the framework are found in one of those two directories, with
  \&\fIHeaders\fR being searched first.  A subframework is a framework
! directory that is in a framework's \fIFrameworks\fR directory.
  Includes of subframework headers can only appear in a header of a
  framework that contains the subframework, or in a sibling subframework
  header.  Two subframeworks are siblings if they occur in the same
--- 25316,25322 ----
  directory excluding the \fI.framework\fR.  Headers associated with
  the framework are found in one of those two directories, with
  \&\fIHeaders\fR being searched first.  A subframework is a framework
! directory that is in a framework\*(Aqs \fIFrameworks\fR directory.
  Includes of subframework headers can only appear in a header of a
  framework that contains the subframework, or in a sibling subframework
  header.  Two subframeworks are siblings if they occur in the same
*************** in \fI/System/Library/Frameworks\fR and
*** 25394,25433 ****
  \&\f(CW\*(C`#include <Framework/header.h>\*(C'\fR, where \fIFramework\fR denotes
  the name of the framework and \fIheader.h\fR is found in the
  \&\fIPrivateHeaders\fR or \fIHeaders\fR directory.
! .IP "\fB\-iframework\fR\fIdir\fR" 4
  .IX Item "-iframeworkdir"
  Like \fB\-F\fR except the directory is a treated as a system
  directory.  The main difference between this \fB\-iframework\fR and
  \&\fB\-F\fR is that with \fB\-iframework\fR the compiler does not
  warn about constructs contained within header files found via
  \&\fIdir\fR.  This option is valid only for the C family of languages.
! .IP "\fB\-gused\fR" 4
  .IX Item "-gused"
  Emit debugging information for symbols that are used.  For stabs
  debugging format, this enables \fB\-feliminate\-unused\-debug\-symbols\fR.
! This is by default \s-1ON.\s0
! .IP "\fB\-gfull\fR" 4
  .IX Item "-gfull"
  Emit debugging information for all symbols and types.
! .IP "\fB\-fconstant\-cfstrings\fR" 4
  .IX Item "-fconstant-cfstrings"
  The \fB\-fconstant\-cfstrings\fR is an alias for \fB\-mconstant\-cfstrings\fR.
! .IP "\fB\-mconstant\-cfstrings\fR" 4
  .IX Item "-mconstant-cfstrings"
  When the NeXT runtime is being used (the default on these systems), override
  any \fB\-fconstant\-string\-class\fR setting and cause \f(CW\*(C`@"..."\*(C'\fR
  literals to be laid out as constant CoreFoundation strings.
! .IP "\fB\-mmacosx\-version\-min=\fR\fIversion\fR" 4
  .IX Item "-mmacosx-version-min=version"
  The earliest version of MacOS X that this executable will run on is
  \&\fIversion\fR.  Typical values supported for \fIversion\fR include \f(CW12\fR,
  \&\f(CW10.12\fR, and \f(CW10.5.8\fR.
  .Sp
! If the compiler was built to use the system's headers by default,
  then the default for this option is the system version on which the
  compiler is running, otherwise the default is to make choices that
  are compatible with as many systems and code bases as possible.
! .IP "\fB\-mkernel\fR" 4
  .IX Item "-mkernel"
  Enable kernel development mode.  The \fB\-mkernel\fR option sets
  \&\fB\-static\fR, \fB\-fno\-common\fR, \fB\-fno\-use\-cxa\-atexit\fR,
--- 25329,25368 ----
  \&\f(CW\*(C`#include <Framework/header.h>\*(C'\fR, where \fIFramework\fR denotes
  the name of the framework and \fIheader.h\fR is found in the
  \&\fIPrivateHeaders\fR or \fIHeaders\fR directory.
! .IP \fB\-iframework\fR\fIdir\fR 4
  .IX Item "-iframeworkdir"
  Like \fB\-F\fR except the directory is a treated as a system
  directory.  The main difference between this \fB\-iframework\fR and
  \&\fB\-F\fR is that with \fB\-iframework\fR the compiler does not
  warn about constructs contained within header files found via
  \&\fIdir\fR.  This option is valid only for the C family of languages.
! .IP \fB\-gused\fR 4
  .IX Item "-gused"
  Emit debugging information for symbols that are used.  For stabs
  debugging format, this enables \fB\-feliminate\-unused\-debug\-symbols\fR.
! This is by default ON.
! .IP \fB\-gfull\fR 4
  .IX Item "-gfull"
  Emit debugging information for all symbols and types.
! .IP \fB\-fconstant\-cfstrings\fR 4
  .IX Item "-fconstant-cfstrings"
  The \fB\-fconstant\-cfstrings\fR is an alias for \fB\-mconstant\-cfstrings\fR.
! .IP \fB\-mconstant\-cfstrings\fR 4
  .IX Item "-mconstant-cfstrings"
  When the NeXT runtime is being used (the default on these systems), override
  any \fB\-fconstant\-string\-class\fR setting and cause \f(CW\*(C`@"..."\*(C'\fR
  literals to be laid out as constant CoreFoundation strings.
! .IP \fB\-mmacosx\-version\-min=\fR\fIversion\fR 4
  .IX Item "-mmacosx-version-min=version"
  The earliest version of MacOS X that this executable will run on is
  \&\fIversion\fR.  Typical values supported for \fIversion\fR include \f(CW12\fR,
  \&\f(CW10.12\fR, and \f(CW10.5.8\fR.
  .Sp
! If the compiler was built to use the system\*(Aqs headers by default,
  then the default for this option is the system version on which the
  compiler is running, otherwise the default is to make choices that
  are compatible with as many systems and code bases as possible.
! .IP \fB\-mkernel\fR 4
  .IX Item "-mkernel"
  Enable kernel development mode.  The \fB\-mkernel\fR option sets
  \&\fB\-static\fR, \fB\-fno\-common\fR, \fB\-fno\-use\-cxa\-atexit\fR,
*************** Enable kernel development mode.  The \fB
*** 25436,25494 ****
  applicable.  This mode also sets \fB\-mno\-altivec\fR,
  \&\fB\-msoft\-float\fR, \fB\-fno\-builtin\fR and
  \&\fB\-mlong\-branch\fR for PowerPC targets.
! .IP "\fB\-mone\-byte\-bool\fR" 4
  .IX Item "-mone-byte-bool"
  Override the defaults for \f(CW\*(C`bool\*(C'\fR so that \f(CW\*(C`sizeof(bool)==1\*(C'\fR.
! By default \f(CW\*(C`sizeof(bool)\*(C'\fR is \f(CW4\fR when compiling for
  Darwin/PowerPC and \f(CW1\fR when compiling for Darwin/x86, so this
  option has no effect on x86.
  .Sp
! \&\fBWarning:\fR The \fB\-mone\-byte\-bool\fR switch causes \s-1GCC\s0
  to generate code that is not binary compatible with code generated
  without that switch.  Using this switch may require recompiling all
  other modules in a program, including system libraries.  Use this
! switch to conform to a non-default data model.
! .IP "\fB\-mfix\-and\-continue\fR" 4
  .IX Item "-mfix-and-continue"
  .PD 0
! .IP "\fB\-ffix\-and\-continue\fR" 4
  .IX Item "-ffix-and-continue"
! .IP "\fB\-findirect\-data\fR" 4
  .IX Item "-findirect-data"
  .PD
  Generate code suitable for fast turnaround development, such as to
! allow \s-1GDB\s0 to dynamically load \fI.o\fR files into already-running
  programs.  \fB\-findirect\-data\fR and \fB\-ffix\-and\-continue\fR
  are provided for backwards compatibility.
! .IP "\fB\-all_load\fR" 4
  .IX Item "-all_load"
  Loads all members of static archive libraries.
! See man \fIld\fR\|(1) for more information.
! .IP "\fB\-arch_errors_fatal\fR" 4
  .IX Item "-arch_errors_fatal"
  Cause the errors having to do with files that have the wrong architecture
  to be fatal.
! .IP "\fB\-bind_at_load\fR" 4
  .IX Item "-bind_at_load"
  Causes the output file to be marked such that the dynamic linker will
  bind all undefined references when the file is loaded or launched.
! .IP "\fB\-bundle\fR" 4
  .IX Item "-bundle"
! Produce a Mach-o bundle format file.
! See man \fIld\fR\|(1) for more information.
  .IP "\fB\-bundle_loader\fR \fIexecutable\fR" 4
  .IX Item "-bundle_loader executable"
  This option specifies the \fIexecutable\fR that will load the build
! output file being linked.  See man \fIld\fR\|(1) for more information.
! .IP "\fB\-dynamiclib\fR" 4
  .IX Item "-dynamiclib"
! When passed this option, \s-1GCC\s0 produces a dynamic library instead of
  an executable when linking, using the Darwin \fIlibtool\fR command.
! .IP "\fB\-force_cpusubtype_ALL\fR" 4
  .IX Item "-force_cpusubtype_ALL"
! This causes \s-1GCC\s0's output file to have the \fB\s-1ALL\s0\fR subtype, instead of
  one controlled by the \fB\-mcpu\fR or \fB\-march\fR option.
! .IP "\fB\-nodefaultrpaths\fR" 4
  .IX Item "-nodefaultrpaths"
  Do not add default run paths for the compiler library directories to
  executables, modules or dynamic libraries. On macOS 10.5 and later,
--- 25371,25429 ----
  applicable.  This mode also sets \fB\-mno\-altivec\fR,
  \&\fB\-msoft\-float\fR, \fB\-fno\-builtin\fR and
  \&\fB\-mlong\-branch\fR for PowerPC targets.
! .IP \fB\-mone\-byte\-bool\fR 4
  .IX Item "-mone-byte-bool"
  Override the defaults for \f(CW\*(C`bool\*(C'\fR so that \f(CW\*(C`sizeof(bool)==1\*(C'\fR.
! By default \f(CWsizeof(bool)\fR is \f(CW4\fR when compiling for
  Darwin/PowerPC and \f(CW1\fR when compiling for Darwin/x86, so this
  option has no effect on x86.
  .Sp
! \&\fBWarning:\fR The \fB\-mone\-byte\-bool\fR switch causes GCC
  to generate code that is not binary compatible with code generated
  without that switch.  Using this switch may require recompiling all
  other modules in a program, including system libraries.  Use this
! switch to conform to a non\-default data model.
! .IP \fB\-mfix\-and\-continue\fR 4
  .IX Item "-mfix-and-continue"
  .PD 0
! .IP \fB\-ffix\-and\-continue\fR 4
  .IX Item "-ffix-and-continue"
! .IP \fB\-findirect\-data\fR 4
  .IX Item "-findirect-data"
  .PD
  Generate code suitable for fast turnaround development, such as to
! allow GDB to dynamically load \fI.o\fR files into already\-running
  programs.  \fB\-findirect\-data\fR and \fB\-ffix\-and\-continue\fR
  are provided for backwards compatibility.
! .IP \fB\-all_load\fR 4
  .IX Item "-all_load"
  Loads all members of static archive libraries.
! See man \fBld\fR\|(1) for more information.
! .IP \fB\-arch_errors_fatal\fR 4
  .IX Item "-arch_errors_fatal"
  Cause the errors having to do with files that have the wrong architecture
  to be fatal.
! .IP \fB\-bind_at_load\fR 4
  .IX Item "-bind_at_load"
  Causes the output file to be marked such that the dynamic linker will
  bind all undefined references when the file is loaded or launched.
! .IP \fB\-bundle\fR 4
  .IX Item "-bundle"
! Produce a Mach\-o bundle format file.
! See man \fBld\fR\|(1) for more information.
  .IP "\fB\-bundle_loader\fR \fIexecutable\fR" 4
  .IX Item "-bundle_loader executable"
  This option specifies the \fIexecutable\fR that will load the build
! output file being linked.  See man \fBld\fR\|(1) for more information.
! .IP \fB\-dynamiclib\fR 4
  .IX Item "-dynamiclib"
! When passed this option, GCC produces a dynamic library instead of
  an executable when linking, using the Darwin \fIlibtool\fR command.
! .IP \fB\-force_cpusubtype_ALL\fR 4
  .IX Item "-force_cpusubtype_ALL"
! This causes GCC\*(Aqs output file to have the \fBALL\fR subtype, instead of
  one controlled by the \fB\-mcpu\fR or \fB\-march\fR option.
! .IP \fB\-nodefaultrpaths\fR 4
  .IX Item "-nodefaultrpaths"
  Do not add default run paths for the compiler library directories to
  executables, modules or dynamic libraries. On macOS 10.5 and later,
*************** the embedded runpath is added by default
*** 25498,25728 ****
  .IP "\fB\-allowable_client\fR  \fIclient_name\fR" 4
  .IX Item "-allowable_client client_name"
  .PD 0
! .IP "\fB\-client_name\fR" 4
  .IX Item "-client_name"
! .IP "\fB\-compatibility_version\fR" 4
  .IX Item "-compatibility_version"
! .IP "\fB\-current_version\fR" 4
  .IX Item "-current_version"
! .IP "\fB\-dead_strip\fR" 4
  .IX Item "-dead_strip"
! .IP "\fB\-dependency\-file\fR" 4
  .IX Item "-dependency-file"
! .IP "\fB\-dylib_file\fR" 4
  .IX Item "-dylib_file"
! .IP "\fB\-dylinker_install_name\fR" 4
  .IX Item "-dylinker_install_name"
! .IP "\fB\-dynamic\fR" 4
  .IX Item "-dynamic"
! .IP "\fB\-exported_symbols_list\fR" 4
  .IX Item "-exported_symbols_list"
! .IP "\fB\-filelist\fR" 4
  .IX Item "-filelist"
! .IP "\fB\-flat_namespace\fR" 4
  .IX Item "-flat_namespace"
! .IP "\fB\-force_flat_namespace\fR" 4
  .IX Item "-force_flat_namespace"
! .IP "\fB\-headerpad_max_install_names\fR" 4
  .IX Item "-headerpad_max_install_names"
! .IP "\fB\-image_base\fR" 4
  .IX Item "-image_base"
! .IP "\fB\-init\fR" 4
  .IX Item "-init"
! .IP "\fB\-install_name\fR" 4
  .IX Item "-install_name"
! .IP "\fB\-keep_private_externs\fR" 4
  .IX Item "-keep_private_externs"
! .IP "\fB\-multi_module\fR" 4
  .IX Item "-multi_module"
! .IP "\fB\-multiply_defined\fR" 4
  .IX Item "-multiply_defined"
! .IP "\fB\-multiply_defined_unused\fR" 4
  .IX Item "-multiply_defined_unused"
! .IP "\fB\-noall_load\fR" 4
  .IX Item "-noall_load"
! .IP "\fB\-no_dead_strip_inits_and_terms\fR" 4
  .IX Item "-no_dead_strip_inits_and_terms"
! .IP "\fB\-nofixprebinding\fR" 4
  .IX Item "-nofixprebinding"
! .IP "\fB\-nomultidefs\fR" 4
  .IX Item "-nomultidefs"
! .IP "\fB\-noprebind\fR" 4
  .IX Item "-noprebind"
! .IP "\fB\-noseglinkedit\fR" 4
  .IX Item "-noseglinkedit"
! .IP "\fB\-pagezero_size\fR" 4
  .IX Item "-pagezero_size"
! .IP "\fB\-prebind\fR" 4
  .IX Item "-prebind"
! .IP "\fB\-prebind_all_twolevel_modules\fR" 4
  .IX Item "-prebind_all_twolevel_modules"
! .IP "\fB\-private_bundle\fR" 4
  .IX Item "-private_bundle"
! .IP "\fB\-read_only_relocs\fR" 4
  .IX Item "-read_only_relocs"
! .IP "\fB\-sectalign\fR" 4
  .IX Item "-sectalign"
! .IP "\fB\-sectobjectsymbols\fR" 4
  .IX Item "-sectobjectsymbols"
! .IP "\fB\-whyload\fR" 4
  .IX Item "-whyload"
! .IP "\fB\-seg1addr\fR" 4
  .IX Item "-seg1addr"
! .IP "\fB\-sectcreate\fR" 4
  .IX Item "-sectcreate"
! .IP "\fB\-sectobjectsymbols\fR" 4
  .IX Item "-sectobjectsymbols"
! .IP "\fB\-sectorder\fR" 4
  .IX Item "-sectorder"
! .IP "\fB\-segaddr\fR" 4
  .IX Item "-segaddr"
! .IP "\fB\-segs_read_only_addr\fR" 4
  .IX Item "-segs_read_only_addr"
! .IP "\fB\-segs_read_write_addr\fR" 4
  .IX Item "-segs_read_write_addr"
! .IP "\fB\-seg_addr_table\fR" 4
  .IX Item "-seg_addr_table"
! .IP "\fB\-seg_addr_table_filename\fR" 4
  .IX Item "-seg_addr_table_filename"
! .IP "\fB\-seglinkedit\fR" 4
  .IX Item "-seglinkedit"
! .IP "\fB\-segprot\fR" 4
  .IX Item "-segprot"
! .IP "\fB\-segs_read_only_addr\fR" 4
  .IX Item "-segs_read_only_addr"
! .IP "\fB\-segs_read_write_addr\fR" 4
  .IX Item "-segs_read_write_addr"
! .IP "\fB\-single_module\fR" 4
  .IX Item "-single_module"
! .IP "\fB\-static\fR" 4
  .IX Item "-static"
! .IP "\fB\-sub_library\fR" 4
  .IX Item "-sub_library"
! .IP "\fB\-sub_umbrella\fR" 4
  .IX Item "-sub_umbrella"
! .IP "\fB\-twolevel_namespace\fR" 4
  .IX Item "-twolevel_namespace"
! .IP "\fB\-umbrella\fR" 4
  .IX Item "-umbrella"
! .IP "\fB\-undefined\fR" 4
  .IX Item "-undefined"
! .IP "\fB\-unexported_symbols_list\fR" 4
  .IX Item "-unexported_symbols_list"
! .IP "\fB\-weak_reference_mismatches\fR" 4
  .IX Item "-weak_reference_mismatches"
! .IP "\fB\-whatsloaded\fR" 4
  .IX Item "-whatsloaded"
  .PD
  These options are passed to the Darwin linker.  The Darwin linker man page
  describes them in detail.
  .PP
! \fI\s-1DEC\s0 Alpha Options\fR
  .IX Subsection "DEC Alpha Options"
  .PP
! These \fB\-m\fR options are defined for the \s-1DEC\s0 Alpha implementations:
! .IP "\fB\-mno\-soft\-float\fR" 4
  .IX Item "-mno-soft-float"
  .PD 0
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  .PD
! Use (do not use) the hardware floating-point instructions for
! floating-point operations.  When \fB\-msoft\-float\fR is specified,
! functions in \fIlibgcc.a\fR are used to perform floating-point
  operations.  Unless they are replaced by routines that emulate the
! floating-point operations, or compiled in such a way as to call such
! emulations routines, these routines issue floating-point
! operations.   If you are compiling for an Alpha without floating-point
  operations, you must ensure that the library is built so as not to call
  them.
  .Sp
! Note that Alpha implementations without floating-point operations are
! required to have floating-point registers.
! .IP "\fB\-mfp\-reg\fR" 4
  .IX Item "-mfp-reg"
  .PD 0
! .IP "\fB\-mno\-fp\-regs\fR" 4
  .IX Item "-mno-fp-regs"
  .PD
! Generate code that uses (does not use) the floating-point register set.
! \&\fB\-mno\-fp\-regs\fR implies \fB\-msoft\-float\fR.  If the floating-point
! register set is not used, floating-point operands are passed in integer
! registers as if they were integers and floating-point results are passed
! in \f(CW$0\fR instead of \f(CW$f0\fR.  This is a non-standard calling sequence,
! so any function with a floating-point argument or return value called by code
  compiled with \fB\-mno\-fp\-regs\fR must also be compiled with that
  option.
  .Sp
  A typical use of this option is building a kernel that does not use,
! and hence need not save and restore, any floating-point registers.
! .IP "\fB\-mieee\fR" 4
  .IX Item "-mieee"
! The Alpha architecture implements floating-point hardware optimized for
! maximum performance.  It is mostly compliant with the \s-1IEEE\s0 floating-point
  standard.  However, for full compliance, software assistance is
! required.  This option generates code fully IEEE-compliant code
! \&\fIexcept\fR that the \fIinexact-flag\fR is not maintained (see below).
  If this option is turned on, the preprocessor macro \f(CW\*(C`_IEEE_FP\*(C'\fR is
  defined during compilation.  The resulting code is less efficient but is
! able to correctly support denormalized numbers and exceptional \s-1IEEE\s0
! values such as not-a-number and plus/minus infinity.  Other Alpha
  compilers call this option \fB\-ieee_with_no_inexact\fR.
! .IP "\fB\-mieee\-with\-inexact\fR" 4
  .IX Item "-mieee-with-inexact"
  This is like \fB\-mieee\fR except the generated code also maintains
! the \s-1IEEE\s0 \fIinexact-flag\fR.  Turning on this option causes the
! generated code to implement fully-compliant \s-1IEEE\s0 math.  In addition to
  \&\f(CW\*(C`_IEEE_FP\*(C'\fR, \f(CW\*(C`_IEEE_FP_EXACT\*(C'\fR is defined as a preprocessor
  macro.  On some Alpha implementations the resulting code may execute
  significantly slower than the code generated by default.  Since there is
! very little code that depends on the \fIinexact-flag\fR, you should
  normally not specify this option.  Other Alpha compilers call this
  option \fB\-ieee_with_inexact\fR.
! .IP "\fB\-mfp\-trap\-mode=\fR\fItrap-mode\fR" 4
  .IX Item "-mfp-trap-mode=trap-mode"
! This option controls what floating-point related traps are enabled.
! Other Alpha compilers call this option \fB\-fptm\fR \fItrap-mode\fR.
  The trap mode can be set to one of four values:
  .RS 4
! .IP "\fBn\fR" 4
  .IX Item "n"
  This is the default (normal) setting.  The only traps that are enabled
  are the ones that cannot be disabled in software (e.g., division by zero
  trap).
! .IP "\fBu\fR" 4
  .IX Item "u"
  In addition to the traps enabled by \fBn\fR, underflow traps are enabled
  as well.
! .IP "\fBsu\fR" 4
  .IX Item "su"
  Like \fBu\fR, but the instructions are marked to be safe for software
  completion (see Alpha architecture manual for details).
! .IP "\fBsui\fR" 4
  .IX Item "sui"
  Like \fBsu\fR, but inexact traps are enabled as well.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mfp\-rounding\-mode=\fR\fIrounding-mode\fR" 4
  .IX Item "-mfp-rounding-mode=rounding-mode"
! Selects the \s-1IEEE\s0 rounding mode.  Other Alpha compilers call this option
! \&\fB\-fprm\fR \fIrounding-mode\fR.  The \fIrounding-mode\fR can be one
  of:
  .RS 4
! .IP "\fBn\fR" 4
  .IX Item "n"
! Normal \s-1IEEE\s0 rounding mode.  Floating-point numbers are rounded towards
  the nearest machine number or towards the even machine number in case
  of a tie.
! .IP "\fBm\fR" 4
  .IX Item "m"
  Round towards minus infinity.
! .IP "\fBc\fR" 4
  .IX Item "c"
! Chopped rounding mode.  Floating-point numbers are rounded towards zero.
! .IP "\fBd\fR" 4
  .IX Item "d"
! Dynamic rounding mode.  A field in the floating-point control register
  (\fIfpcr\fR, see Alpha architecture reference manual) controls the
  rounding mode in effect.  The C library initializes this register for
  rounding towards plus infinity.  Thus, unless your program modifies the
--- 25433,25663 ----
  .IP "\fB\-allowable_client\fR  \fIclient_name\fR" 4
  .IX Item "-allowable_client client_name"
  .PD 0
! .IP \fB\-client_name\fR 4
  .IX Item "-client_name"
! .IP \fB\-compatibility_version\fR 4
  .IX Item "-compatibility_version"
! .IP \fB\-current_version\fR 4
  .IX Item "-current_version"
! .IP \fB\-dead_strip\fR 4
  .IX Item "-dead_strip"
! .IP \fB\-dependency\-file\fR 4
  .IX Item "-dependency-file"
! .IP \fB\-dylib_file\fR 4
  .IX Item "-dylib_file"
! .IP \fB\-dylinker_install_name\fR 4
  .IX Item "-dylinker_install_name"
! .IP \fB\-dynamic\fR 4
  .IX Item "-dynamic"
! .IP \fB\-exported_symbols_list\fR 4
  .IX Item "-exported_symbols_list"
! .IP \fB\-filelist\fR 4
  .IX Item "-filelist"
! .IP \fB\-flat_namespace\fR 4
  .IX Item "-flat_namespace"
! .IP \fB\-force_flat_namespace\fR 4
  .IX Item "-force_flat_namespace"
! .IP \fB\-headerpad_max_install_names\fR 4
  .IX Item "-headerpad_max_install_names"
! .IP \fB\-image_base\fR 4
  .IX Item "-image_base"
! .IP \fB\-init\fR 4
  .IX Item "-init"
! .IP \fB\-install_name\fR 4
  .IX Item "-install_name"
! .IP \fB\-keep_private_externs\fR 4
  .IX Item "-keep_private_externs"
! .IP \fB\-multi_module\fR 4
  .IX Item "-multi_module"
! .IP \fB\-multiply_defined\fR 4
  .IX Item "-multiply_defined"
! .IP \fB\-multiply_defined_unused\fR 4
  .IX Item "-multiply_defined_unused"
! .IP \fB\-noall_load\fR 4
  .IX Item "-noall_load"
! .IP \fB\-no_dead_strip_inits_and_terms\fR 4
  .IX Item "-no_dead_strip_inits_and_terms"
! .IP \fB\-nofixprebinding\fR 4
  .IX Item "-nofixprebinding"
! .IP \fB\-nomultidefs\fR 4
  .IX Item "-nomultidefs"
! .IP \fB\-noprebind\fR 4
  .IX Item "-noprebind"
! .IP \fB\-noseglinkedit\fR 4
  .IX Item "-noseglinkedit"
! .IP \fB\-pagezero_size\fR 4
  .IX Item "-pagezero_size"
! .IP \fB\-prebind\fR 4
  .IX Item "-prebind"
! .IP \fB\-prebind_all_twolevel_modules\fR 4
  .IX Item "-prebind_all_twolevel_modules"
! .IP \fB\-private_bundle\fR 4
  .IX Item "-private_bundle"
! .IP \fB\-read_only_relocs\fR 4
  .IX Item "-read_only_relocs"
! .IP \fB\-sectalign\fR 4
  .IX Item "-sectalign"
! .IP \fB\-sectobjectsymbols\fR 4
  .IX Item "-sectobjectsymbols"
! .IP \fB\-whyload\fR 4
  .IX Item "-whyload"
! .IP \fB\-seg1addr\fR 4
  .IX Item "-seg1addr"
! .IP \fB\-sectcreate\fR 4
  .IX Item "-sectcreate"
! .IP \fB\-sectobjectsymbols\fR 4
  .IX Item "-sectobjectsymbols"
! .IP \fB\-sectorder\fR 4
  .IX Item "-sectorder"
! .IP \fB\-segaddr\fR 4
  .IX Item "-segaddr"
! .IP \fB\-segs_read_only_addr\fR 4
  .IX Item "-segs_read_only_addr"
! .IP \fB\-segs_read_write_addr\fR 4
  .IX Item "-segs_read_write_addr"
! .IP \fB\-seg_addr_table\fR 4
  .IX Item "-seg_addr_table"
! .IP \fB\-seg_addr_table_filename\fR 4
  .IX Item "-seg_addr_table_filename"
! .IP \fB\-seglinkedit\fR 4
  .IX Item "-seglinkedit"
! .IP \fB\-segprot\fR 4
  .IX Item "-segprot"
! .IP \fB\-segs_read_only_addr\fR 4
  .IX Item "-segs_read_only_addr"
! .IP \fB\-segs_read_write_addr\fR 4
  .IX Item "-segs_read_write_addr"
! .IP \fB\-single_module\fR 4
  .IX Item "-single_module"
! .IP \fB\-static\fR 4
  .IX Item "-static"
! .IP \fB\-sub_library\fR 4
  .IX Item "-sub_library"
! .IP \fB\-sub_umbrella\fR 4
  .IX Item "-sub_umbrella"
! .IP \fB\-twolevel_namespace\fR 4
  .IX Item "-twolevel_namespace"
! .IP \fB\-umbrella\fR 4
  .IX Item "-umbrella"
! .IP \fB\-undefined\fR 4
  .IX Item "-undefined"
! .IP \fB\-unexported_symbols_list\fR 4
  .IX Item "-unexported_symbols_list"
! .IP \fB\-weak_reference_mismatches\fR 4
  .IX Item "-weak_reference_mismatches"
! .IP \fB\-whatsloaded\fR 4
  .IX Item "-whatsloaded"
  .PD
  These options are passed to the Darwin linker.  The Darwin linker man page
  describes them in detail.
  .PP
! \fIDEC Alpha Options\fR
  .IX Subsection "DEC Alpha Options"
  .PP
! These \fB\-m\fR options are defined for the DEC Alpha implementations:
! .IP \fB\-mno\-soft\-float\fR 4
  .IX Item "-mno-soft-float"
  .PD 0
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  .PD
! Use (do not use) the hardware floating\-point instructions for
! floating\-point operations.  When \fB\-msoft\-float\fR is specified,
! functions in \fIlibgcc.a\fR are used to perform floating\-point
  operations.  Unless they are replaced by routines that emulate the
! floating\-point operations, or compiled in such a way as to call such
! emulations routines, these routines issue floating\-point
! operations.   If you are compiling for an Alpha without floating\-point
  operations, you must ensure that the library is built so as not to call
  them.
  .Sp
! Note that Alpha implementations without floating\-point operations are
! required to have floating\-point registers.
! .IP \fB\-mfp\-reg\fR 4
  .IX Item "-mfp-reg"
  .PD 0
! .IP \fB\-mno\-fp\-regs\fR 4
  .IX Item "-mno-fp-regs"
  .PD
! Generate code that uses (does not use) the floating\-point register set.
! \&\fB\-mno\-fp\-regs\fR implies \fB\-msoft\-float\fR.  If the floating\-point
! register set is not used, floating\-point operands are passed in integer
! registers as if they were integers and floating\-point results are passed
! in \f(CW$0\fR instead of \f(CW$f0\fR.  This is a non\-standard calling sequence,
! so any function with a floating\-point argument or return value called by code
  compiled with \fB\-mno\-fp\-regs\fR must also be compiled with that
  option.
  .Sp
  A typical use of this option is building a kernel that does not use,
! and hence need not save and restore, any floating\-point registers.
! .IP \fB\-mieee\fR 4
  .IX Item "-mieee"
! The Alpha architecture implements floating\-point hardware optimized for
! maximum performance.  It is mostly compliant with the IEEE floating\-point
  standard.  However, for full compliance, software assistance is
! required.  This option generates code fully IEEE\-compliant code
! \&\fIexcept\fR that the \fIinexact\-flag\fR is not maintained (see below).
  If this option is turned on, the preprocessor macro \f(CW\*(C`_IEEE_FP\*(C'\fR is
  defined during compilation.  The resulting code is less efficient but is
! able to correctly support denormalized numbers and exceptional IEEE
! values such as not\-a\-number and plus/minus infinity.  Other Alpha
  compilers call this option \fB\-ieee_with_no_inexact\fR.
! .IP \fB\-mieee\-with\-inexact\fR 4
  .IX Item "-mieee-with-inexact"
  This is like \fB\-mieee\fR except the generated code also maintains
! the IEEE \fIinexact\-flag\fR.  Turning on this option causes the
! generated code to implement fully\-compliant IEEE math.  In addition to
  \&\f(CW\*(C`_IEEE_FP\*(C'\fR, \f(CW\*(C`_IEEE_FP_EXACT\*(C'\fR is defined as a preprocessor
  macro.  On some Alpha implementations the resulting code may execute
  significantly slower than the code generated by default.  Since there is
! very little code that depends on the \fIinexact\-flag\fR, you should
  normally not specify this option.  Other Alpha compilers call this
  option \fB\-ieee_with_inexact\fR.
! .IP \fB\-mfp\-trap\-mode=\fR\fItrap\-mode\fR 4
  .IX Item "-mfp-trap-mode=trap-mode"
! This option controls what floating\-point related traps are enabled.
! Other Alpha compilers call this option \fB\-fptm\fR \fItrap\-mode\fR.
  The trap mode can be set to one of four values:
  .RS 4
! .IP \fBn\fR 4
  .IX Item "n"
  This is the default (normal) setting.  The only traps that are enabled
  are the ones that cannot be disabled in software (e.g., division by zero
  trap).
! .IP \fBu\fR 4
  .IX Item "u"
  In addition to the traps enabled by \fBn\fR, underflow traps are enabled
  as well.
! .IP \fBsu\fR 4
  .IX Item "su"
  Like \fBu\fR, but the instructions are marked to be safe for software
  completion (see Alpha architecture manual for details).
! .IP \fBsui\fR 4
  .IX Item "sui"
  Like \fBsu\fR, but inexact traps are enabled as well.
  .RE
  .RS 4
  .RE
! .IP \fB\-mfp\-rounding\-mode=\fR\fIrounding\-mode\fR 4
  .IX Item "-mfp-rounding-mode=rounding-mode"
! Selects the IEEE rounding mode.  Other Alpha compilers call this option
! \&\fB\-fprm\fR \fIrounding\-mode\fR.  The \fIrounding\-mode\fR can be one
  of:
  .RS 4
! .IP \fBn\fR 4
  .IX Item "n"
! Normal IEEE rounding mode.  Floating\-point numbers are rounded towards
  the nearest machine number or towards the even machine number in case
  of a tie.
! .IP \fBm\fR 4
  .IX Item "m"
  Round towards minus infinity.
! .IP \fBc\fR 4
  .IX Item "c"
! Chopped rounding mode.  Floating\-point numbers are rounded towards zero.
! .IP \fBd\fR 4
  .IX Item "d"
! Dynamic rounding mode.  A field in the floating\-point control register
  (\fIfpcr\fR, see Alpha architecture reference manual) controls the
  rounding mode in effect.  The C library initializes this register for
  rounding towards plus infinity.  Thus, unless your program modifies the
*************** rounding towards plus infinity.  Thus, u
*** 25730,25854 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-mtrap\-precision=\fR\fItrap-precision\fR" 4
  .IX Item "-mtrap-precision=trap-precision"
! In the Alpha architecture, floating-point traps are imprecise.  This
  means without software assistance it is impossible to recover from a
  floating trap and program execution normally needs to be terminated.
! \&\s-1GCC\s0 can generate code that can assist operating system trap handlers
! in determining the exact location that caused a floating-point trap.
  Depending on the requirements of an application, different levels of
  precisions can be selected:
  .RS 4
! .IP "\fBp\fR" 4
  .IX Item "p"
  Program precision.  This option is the default and means a trap handler
! can only identify which program caused a floating-point exception.
! .IP "\fBf\fR" 4
  .IX Item "f"
  Function precision.  The trap handler can determine the function that
! caused a floating-point exception.
! .IP "\fBi\fR" 4
  .IX Item "i"
  Instruction precision.  The trap handler can determine the exact
! instruction that caused a floating-point exception.
  .RE
  .RS 4
  .Sp
  Other Alpha compilers provide the equivalent options called
  \&\fB\-scope_safe\fR and \fB\-resumption_safe\fR.
  .RE
! .IP "\fB\-mieee\-conformant\fR" 4
  .IX Item "-mieee-conformant"
! This option marks the generated code as \s-1IEEE\s0 conformant.  You must not
  use this option unless you also specify \fB\-mtrap\-precision=i\fR and either
  \&\fB\-mfp\-trap\-mode=su\fR or \fB\-mfp\-trap\-mode=sui\fR.  Its only effect
  is to emit the line \fB.eflag 48\fR in the function prologue of the
  generated assembly file.
! .IP "\fB\-mbuild\-constants\fR" 4
  .IX Item "-mbuild-constants"
! Normally \s-1GCC\s0 examines a 32\- or 64\-bit integer constant to
  see if it can construct it from smaller constants in two or three
  instructions.  If it cannot, it outputs the constant as a literal and
  generates code to load it from the data segment at run time.
  .Sp
! Use this option to require \s-1GCC\s0 to construct \fIall\fR integer constants
  using code, even if it takes more instructions (the maximum is six).
  .Sp
  You typically use this option to build a shared library dynamic
  loader.  Itself a shared library, it must relocate itself in memory
  before it can find the variables and constants in its own data segment.
! .IP "\fB\-mbwx\fR" 4
  .IX Item "-mbwx"
  .PD 0
! .IP "\fB\-mno\-bwx\fR" 4
  .IX Item "-mno-bwx"
! .IP "\fB\-mcix\fR" 4
  .IX Item "-mcix"
! .IP "\fB\-mno\-cix\fR" 4
  .IX Item "-mno-cix"
! .IP "\fB\-mfix\fR" 4
  .IX Item "-mfix"
! .IP "\fB\-mno\-fix\fR" 4
  .IX Item "-mno-fix"
! .IP "\fB\-mmax\fR" 4
  .IX Item "-mmax"
! .IP "\fB\-mno\-max\fR" 4
  .IX Item "-mno-max"
  .PD
! Indicate whether \s-1GCC\s0 should generate code to use the optional \s-1BWX,
! CIX, FIX\s0 and \s-1MAX\s0 instruction sets.  The default is to use the instruction
! sets supported by the \s-1CPU\s0 type specified via \fB\-mcpu=\fR option or that
! of the \s-1CPU\s0 on which \s-1GCC\s0 was built if none is specified.
! .IP "\fB\-msafe\-bwa\fR" 4
  .IX Item "-msafe-bwa"
  .PD 0
! .IP "\fB\-mno\-safe\-bwa\fR" 4
  .IX Item "-mno-safe-bwa"
  .PD
! Indicate whether in the absence of the optional \s-1BWX\s0 instruction set
! \&\s-1GCC\s0 should generate multi-thread and async-signal safe code for byte
  and aligned word memory accesses.
! .IP "\fB\-msafe\-partial\fR" 4
  .IX Item "-msafe-partial"
  .PD 0
! .IP "\fB\-mno\-safe\-partial\fR" 4
  .IX Item "-mno-safe-partial"
  .PD
! Indicate whether \s-1GCC\s0 should generate multi-thread and async-signal
  safe code for partial memory accesses, including piecemeal accesses
  to unaligned data as well as block accesses to leading and trailing
  parts of aggregate types or other objects in memory that do not
  respectively start and end on an aligned 64\-bit data boundary.
! .IP "\fB\-mfloat\-vax\fR" 4
  .IX Item "-mfloat-vax"
  .PD 0
! .IP "\fB\-mfloat\-ieee\fR" 4
  .IX Item "-mfloat-ieee"
  .PD
! Generate code that uses (does not use) \s-1VAX F\s0 and G floating-point
! arithmetic instead of \s-1IEEE\s0 single and double precision.
! .IP "\fB\-mexplicit\-relocs\fR" 4
  .IX Item "-mexplicit-relocs"
  .PD 0
! .IP "\fB\-mno\-explicit\-relocs\fR" 4
  .IX Item "-mno-explicit-relocs"
  .PD
  Older Alpha assemblers provided no way to generate symbol relocations
  except via assembler macros.  Use of these macros does not allow
! optimal instruction scheduling.  \s-1GNU\s0 binutils as of version 2.12
  supports a new syntax that allows the compiler to explicitly mark
  which relocations should apply to which instructions.  This option
! is mostly useful for debugging, as \s-1GCC\s0 detects the capabilities of
  the assembler when it is built and sets the default accordingly.
! .IP "\fB\-msmall\-data\fR" 4
  .IX Item "-msmall-data"
  .PD 0
! .IP "\fB\-mlarge\-data\fR" 4
  .IX Item "-mlarge-data"
  .PD
  When \fB\-mexplicit\-relocs\fR is in effect, static data is
! accessed via \fIgp-relative\fR relocations.  When \fB\-msmall\-data\fR
  is used, objects 8 bytes long or smaller are placed in a \fIsmall data area\fR
  (the \f(CW\*(C`.sdata\*(C'\fR and \f(CW\*(C`.sbss\*(C'\fR sections) and are accessed via
  16\-bit relocations off of the \f(CW$gp\fR register.  This limits the
--- 25665,25789 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-mtrap\-precision=\fR\fItrap\-precision\fR 4
  .IX Item "-mtrap-precision=trap-precision"
! In the Alpha architecture, floating\-point traps are imprecise.  This
  means without software assistance it is impossible to recover from a
  floating trap and program execution normally needs to be terminated.
! GCC can generate code that can assist operating system trap handlers
! in determining the exact location that caused a floating\-point trap.
  Depending on the requirements of an application, different levels of
  precisions can be selected:
  .RS 4
! .IP \fBp\fR 4
  .IX Item "p"
  Program precision.  This option is the default and means a trap handler
! can only identify which program caused a floating\-point exception.
! .IP \fBf\fR 4
  .IX Item "f"
  Function precision.  The trap handler can determine the function that
! caused a floating\-point exception.
! .IP \fBi\fR 4
  .IX Item "i"
  Instruction precision.  The trap handler can determine the exact
! instruction that caused a floating\-point exception.
  .RE
  .RS 4
  .Sp
  Other Alpha compilers provide the equivalent options called
  \&\fB\-scope_safe\fR and \fB\-resumption_safe\fR.
  .RE
! .IP \fB\-mieee\-conformant\fR 4
  .IX Item "-mieee-conformant"
! This option marks the generated code as IEEE conformant.  You must not
  use this option unless you also specify \fB\-mtrap\-precision=i\fR and either
  \&\fB\-mfp\-trap\-mode=su\fR or \fB\-mfp\-trap\-mode=sui\fR.  Its only effect
  is to emit the line \fB.eflag 48\fR in the function prologue of the
  generated assembly file.
! .IP \fB\-mbuild\-constants\fR 4
  .IX Item "-mbuild-constants"
! Normally GCC examines a 32\- or 64\-bit integer constant to
  see if it can construct it from smaller constants in two or three
  instructions.  If it cannot, it outputs the constant as a literal and
  generates code to load it from the data segment at run time.
  .Sp
! Use this option to require GCC to construct \fIall\fR integer constants
  using code, even if it takes more instructions (the maximum is six).
  .Sp
  You typically use this option to build a shared library dynamic
  loader.  Itself a shared library, it must relocate itself in memory
  before it can find the variables and constants in its own data segment.
! .IP \fB\-mbwx\fR 4
  .IX Item "-mbwx"
  .PD 0
! .IP \fB\-mno\-bwx\fR 4
  .IX Item "-mno-bwx"
! .IP \fB\-mcix\fR 4
  .IX Item "-mcix"
! .IP \fB\-mno\-cix\fR 4
  .IX Item "-mno-cix"
! .IP \fB\-mfix\fR 4
  .IX Item "-mfix"
! .IP \fB\-mno\-fix\fR 4
  .IX Item "-mno-fix"
! .IP \fB\-mmax\fR 4
  .IX Item "-mmax"
! .IP \fB\-mno\-max\fR 4
  .IX Item "-mno-max"
  .PD
! Indicate whether GCC should generate code to use the optional BWX,
! CIX, FIX and MAX instruction sets.  The default is to use the instruction
! sets supported by the CPU type specified via \fB\-mcpu=\fR option or that
! of the CPU on which GCC was built if none is specified.
! .IP \fB\-msafe\-bwa\fR 4
  .IX Item "-msafe-bwa"
  .PD 0
! .IP \fB\-mno\-safe\-bwa\fR 4
  .IX Item "-mno-safe-bwa"
  .PD
! Indicate whether in the absence of the optional BWX instruction set
! GCC should generate multi\-thread and async\-signal safe code for byte
  and aligned word memory accesses.
! .IP \fB\-msafe\-partial\fR 4
  .IX Item "-msafe-partial"
  .PD 0
! .IP \fB\-mno\-safe\-partial\fR 4
  .IX Item "-mno-safe-partial"
  .PD
! Indicate whether GCC should generate multi\-thread and async\-signal
  safe code for partial memory accesses, including piecemeal accesses
  to unaligned data as well as block accesses to leading and trailing
  parts of aggregate types or other objects in memory that do not
  respectively start and end on an aligned 64\-bit data boundary.
! .IP \fB\-mfloat\-vax\fR 4
  .IX Item "-mfloat-vax"
  .PD 0
! .IP \fB\-mfloat\-ieee\fR 4
  .IX Item "-mfloat-ieee"
  .PD
! Generate code that uses (does not use) VAX F and G floating\-point
! arithmetic instead of IEEE single and double precision.
! .IP \fB\-mexplicit\-relocs\fR 4
  .IX Item "-mexplicit-relocs"
  .PD 0
! .IP \fB\-mno\-explicit\-relocs\fR 4
  .IX Item "-mno-explicit-relocs"
  .PD
  Older Alpha assemblers provided no way to generate symbol relocations
  except via assembler macros.  Use of these macros does not allow
! optimal instruction scheduling.  GNU binutils as of version 2.12
  supports a new syntax that allows the compiler to explicitly mark
  which relocations should apply to which instructions.  This option
! is mostly useful for debugging, as GCC detects the capabilities of
  the assembler when it is built and sets the default accordingly.
! .IP \fB\-msmall\-data\fR 4
  .IX Item "-msmall-data"
  .PD 0
! .IP \fB\-mlarge\-data\fR 4
  .IX Item "-mlarge-data"
  .PD
  When \fB\-mexplicit\-relocs\fR is in effect, static data is
! accessed via \fIgp\-relative\fR relocations.  When \fB\-msmall\-data\fR
  is used, objects 8 bytes long or smaller are placed in a \fIsmall data area\fR
  (the \f(CW\*(C`.sdata\*(C'\fR and \f(CW\*(C`.sbss\*(C'\fR sections) and are accessed via
  16\-bit relocations off of the \f(CW$gp\fR register.  This limits the
*************** directly accessed via a single instructi
*** 25858,25871 ****
  The default is \fB\-mlarge\-data\fR.  With this option the data area
  is limited to just below 2GB.  Programs that require more than 2GB of
  data must use \f(CW\*(C`malloc\*(C'\fR or \f(CW\*(C`mmap\*(C'\fR to allocate the data in the
! heap instead of in the program's data segment.
  .Sp
  When generating code for shared libraries, \fB\-fpic\fR implies
  \&\fB\-msmall\-data\fR and \fB\-fPIC\fR implies \fB\-mlarge\-data\fR.
! .IP "\fB\-msmall\-text\fR" 4
  .IX Item "-msmall-text"
  .PD 0
! .IP "\fB\-mlarge\-text\fR" 4
  .IX Item "-mlarge-text"
  .PD
  When \fB\-msmall\-text\fR is used, the compiler assumes that the
--- 25793,25806 ----
  The default is \fB\-mlarge\-data\fR.  With this option the data area
  is limited to just below 2GB.  Programs that require more than 2GB of
  data must use \f(CW\*(C`malloc\*(C'\fR or \f(CW\*(C`mmap\*(C'\fR to allocate the data in the
! heap instead of in the program\*(Aqs data segment.
  .Sp
  When generating code for shared libraries, \fB\-fpic\fR implies
  \&\fB\-msmall\-data\fR and \fB\-fPIC\fR implies \fB\-mlarge\-data\fR.
! .IP \fB\-msmall\-text\fR 4
  .IX Item "-msmall-text"
  .PD 0
! .IP \fB\-mlarge\-text\fR 4
  .IX Item "-mlarge-text"
  .PD
  When \fB\-msmall\-text\fR is used, the compiler assumes that the
*************** same \f(CW$gp\fR value, and thus reduce
*** 25876,25957 ****
  required for a function call from 4 to 1.
  .Sp
  The default is \fB\-mlarge\-text\fR.
! .IP "\fB\-mcpu=\fR\fIcpu_type\fR" 4
  .IX Item "-mcpu=cpu_type"
  Set the instruction set and instruction scheduling parameters for
! machine type \fIcpu_type\fR.  You can specify either the \fB\s-1EV\s0\fR
! style name or the corresponding chip number.  \s-1GCC\s0 supports scheduling
! parameters for the \s-1EV4, EV5\s0 and \s-1EV6\s0 family of processors and
  chooses the default values for the instruction set from the processor
! you specify.  If you do not specify a processor type, \s-1GCC\s0 defaults
  to the processor on which the compiler was built.
  .Sp
  Supported values for \fIcpu_type\fR are
  .RS 4
! .IP "\fBev4\fR" 4
  .IX Item "ev4"
  .PD 0
! .IP "\fBev45\fR" 4
  .IX Item "ev45"
! .IP "\fB21064\fR" 4
  .IX Item "21064"
  .PD
! Schedules as an \s-1EV4\s0 and has no instruction set extensions.
! .IP "\fBev5\fR" 4
  .IX Item "ev5"
  .PD 0
! .IP "\fB21164\fR" 4
  .IX Item "21164"
  .PD
! Schedules as an \s-1EV5\s0 and has no instruction set extensions.
! .IP "\fBev56\fR" 4
  .IX Item "ev56"
  .PD 0
! .IP "\fB21164a\fR" 4
  .IX Item "21164a"
  .PD
! Schedules as an \s-1EV5\s0 and supports the \s-1BWX\s0 extension.
! .IP "\fBpca56\fR" 4
  .IX Item "pca56"
  .PD 0
! .IP "\fB21164pc\fR" 4
  .IX Item "21164pc"
! .IP "\fB21164PC\fR" 4
  .IX Item "21164PC"
  .PD
! Schedules as an \s-1EV5\s0 and supports the \s-1BWX\s0 and \s-1MAX\s0 extensions.
! .IP "\fBev6\fR" 4
  .IX Item "ev6"
  .PD 0
! .IP "\fB21264\fR" 4
  .IX Item "21264"
  .PD
! Schedules as an \s-1EV6\s0 and supports the \s-1BWX, FIX,\s0 and \s-1MAX\s0 extensions.
! .IP "\fBev67\fR" 4
  .IX Item "ev67"
  .PD 0
! .IP "\fB21264a\fR" 4
  .IX Item "21264a"
  .PD
! Schedules as an \s-1EV6\s0 and supports the \s-1BWX, CIX, FIX,\s0 and \s-1MAX\s0 extensions.
  .RE
  .RS 4
  .Sp
  Native toolchains also support the value \fBnative\fR,
  which selects the best architecture option for the host processor.
! \&\fB\-mcpu=native\fR has no effect if \s-1GCC\s0 does not recognize
  the processor.
  .RE
! .IP "\fB\-mtune=\fR\fIcpu_type\fR" 4
  .IX Item "-mtune=cpu_type"
  Set only the instruction scheduling parameters for machine type
  \&\fIcpu_type\fR.  The instruction set is not changed.
  .Sp
  Native toolchains also support the value \fBnative\fR,
  which selects the best architecture option for the host processor.
! \&\fB\-mtune=native\fR has no effect if \s-1GCC\s0 does not recognize
  the processor.
! .IP "\fB\-mmemory\-latency=\fR\fItime\fR" 4
  .IX Item "-mmemory-latency=time"
  Sets the latency the scheduler should assume for typical memory
  references as seen by the application.  This number is highly
--- 25811,25892 ----
  required for a function call from 4 to 1.
  .Sp
  The default is \fB\-mlarge\-text\fR.
! .IP \fB\-mcpu=\fR\fIcpu_type\fR 4
  .IX Item "-mcpu=cpu_type"
  Set the instruction set and instruction scheduling parameters for
! machine type \fIcpu_type\fR.  You can specify either the \fBEV\fR
! style name or the corresponding chip number.  GCC supports scheduling
! parameters for the EV4, EV5 and EV6 family of processors and
  chooses the default values for the instruction set from the processor
! you specify.  If you do not specify a processor type, GCC defaults
  to the processor on which the compiler was built.
  .Sp
  Supported values for \fIcpu_type\fR are
  .RS 4
! .IP \fBev4\fR 4
  .IX Item "ev4"
  .PD 0
! .IP \fBev45\fR 4
  .IX Item "ev45"
! .IP \fB21064\fR 4
  .IX Item "21064"
  .PD
! Schedules as an EV4 and has no instruction set extensions.
! .IP \fBev5\fR 4
  .IX Item "ev5"
  .PD 0
! .IP \fB21164\fR 4
  .IX Item "21164"
  .PD
! Schedules as an EV5 and has no instruction set extensions.
! .IP \fBev56\fR 4
  .IX Item "ev56"
  .PD 0
! .IP \fB21164a\fR 4
  .IX Item "21164a"
  .PD
! Schedules as an EV5 and supports the BWX extension.
! .IP \fBpca56\fR 4
  .IX Item "pca56"
  .PD 0
! .IP \fB21164pc\fR 4
  .IX Item "21164pc"
! .IP \fB21164PC\fR 4
  .IX Item "21164PC"
  .PD
! Schedules as an EV5 and supports the BWX and MAX extensions.
! .IP \fBev6\fR 4
  .IX Item "ev6"
  .PD 0
! .IP \fB21264\fR 4
  .IX Item "21264"
  .PD
! Schedules as an EV6 and supports the BWX, FIX, and MAX extensions.
! .IP \fBev67\fR 4
  .IX Item "ev67"
  .PD 0
! .IP \fB21264a\fR 4
  .IX Item "21264a"
  .PD
! Schedules as an EV6 and supports the BWX, CIX, FIX, and MAX extensions.
  .RE
  .RS 4
  .Sp
  Native toolchains also support the value \fBnative\fR,
  which selects the best architecture option for the host processor.
! \&\fB\-mcpu=native\fR has no effect if GCC does not recognize
  the processor.
  .RE
! .IP \fB\-mtune=\fR\fIcpu_type\fR 4
  .IX Item "-mtune=cpu_type"
  Set only the instruction scheduling parameters for machine type
  \&\fIcpu_type\fR.  The instruction set is not changed.
  .Sp
  Native toolchains also support the value \fBnative\fR,
  which selects the best architecture option for the host processor.
! \&\fB\-mtune=native\fR has no effect if GCC does not recognize
  the processor.
! .IP \fB\-mmemory\-latency=\fR\fItime\fR 4
  .IX Item "-mmemory-latency=time"
  Sets the latency the scheduler should assume for typical memory
  references as seen by the application.  This number is highly
*************** and the size of the external cache on th
*** 25960,26085 ****
  .Sp
  Valid options for \fItime\fR are
  .RS 4
! .IP "\fInumber\fR" 4
  .IX Item "number"
  A decimal number representing clock cycles.
! .IP "\fBL1\fR" 4
  .IX Item "L1"
  .PD 0
! .IP "\fBL2\fR" 4
  .IX Item "L2"
! .IP "\fBL3\fR" 4
  .IX Item "L3"
! .IP "\fBmain\fR" 4
  .IX Item "main"
  .PD
  The compiler contains estimates of the number of clock cycles for
! \&\*(L"typical\*(R" \s-1EV4 & EV5\s0 hardware for the Level 1, 2 & 3 caches
  (also called Dcache, Scache, and Bcache), as well as to main memory.
! Note that L3 is only valid for \s-1EV5.\s0
  .RE
  .RS 4
  .RE
  .PP
  \fIeBPF Options\fR
  .IX Subsection "eBPF Options"
! .IP "\fB\-mframe\-limit=\fR\fIbytes\fR" 4
  .IX Item "-mframe-limit=bytes"
  This specifies the hard limit for frame sizes, in bytes.  Currently,
  the value that can be specified should be less than or equal to
  \&\fB32767\fR.  Defaults to whatever limit is imposed by the version of
  the Linux kernel targeted.
! .IP "\fB\-mbig\-endian\fR" 4
  .IX Item "-mbig-endian"
! Generate code for a big-endian target.
! .IP "\fB\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
! Generate code for a little-endian target.  This is the default.
! .IP "\fB\-mjmpext\fR" 4
  .IX Item "-mjmpext"
  .PD 0
! .IP "\fB\-mno\-jmpext\fR" 4
  .IX Item "-mno-jmpext"
  .PD
! Enable or disable generation of extra conditional-branch instructions.
! Enabled for \s-1CPU\s0 v2 and above.
! .IP "\fB\-mjmp32\fR" 4
  .IX Item "-mjmp32"
  .PD 0
! .IP "\fB\-mno\-jmp32\fR" 4
  .IX Item "-mno-jmp32"
  .PD
  Enable or disable generation of 32\-bit jump instructions.
! Enabled for \s-1CPU\s0 v3 and above.
! .IP "\fB\-malu32\fR" 4
  .IX Item "-malu32"
  .PD 0
! .IP "\fB\-mno\-alu32\fR" 4
  .IX Item "-mno-alu32"
  .PD
! Enable or disable generation of 32\-bit \s-1ALU\s0 instructions.
! Enabled for \s-1CPU\s0 v3 and above.
! .IP "\fB\-mv3\-atomics\fR" 4
  .IX Item "-mv3-atomics"
  .PD 0
! .IP "\fB\-mno\-v3\-atomics\fR" 4
  .IX Item "-mno-v3-atomics"
  .PD
  Enable or disable instructions for general atomic operations introduced
! in \s-1CPU\s0 v3.  Enabled for \s-1CPU\s0 v3 and above.
! .IP "\fB\-mbswap\fR" 4
  .IX Item "-mbswap"
  .PD 0
! .IP "\fB\-mno\-bswap\fR" 4
  .IX Item "-mno-bswap"
  .PD
! Enable or disable byte swap instructions.  Enabled for \s-1CPU\s0 v4 and above.
! .IP "\fB\-msdiv\fR" 4
  .IX Item "-msdiv"
  .PD 0
! .IP "\fB\-mno\-sdiv\fR" 4
  .IX Item "-mno-sdiv"
  .PD
  Enable or disable signed division and modulus instructions.  Enabled for
! \&\s-1CPU\s0 v4 and above.
! .IP "\fB\-msmov\fR" 4
  .IX Item "-msmov"
  .PD 0
! .IP "\fB\-mno\-smov\fR" 4
  .IX Item "-mno-smov"
  .PD
! Enable or disable sign-extending move and memory load instructions.
! Enabled for \s-1CPU\s0 v4 and above.
! .IP "\fB\-mcpu=\fR\fIversion\fR" 4
  .IX Item "-mcpu=version"
! This specifies which version of the eBPF \s-1ISA\s0 to target. Newer versions
  may not be supported by all kernels. The default is \fBv4\fR.
  .Sp
  Supported values for \fIversion\fR are:
  .RS 4
! .IP "\fBv1\fR" 4
  .IX Item "v1"
! The first stable eBPF \s-1ISA\s0 with no special features or extensions.
! .IP "\fBv2\fR" 4
  .IX Item "v2"
  Supports the jump extensions, as in \fB\-mjmpext\fR.
! .IP "\fBv3\fR" 4
  .IX Item "v3"
  All features of v2, plus:
  .RS 4
  .IP "\-<32\-bit jump operations, as in \fB\-mjmp32\fR>" 4
  .IX Item "-<32-bit jump operations, as in -mjmp32>"
  .PD 0
! .IP "\-<32\-bit \s-1ALU\s0 operations, as in \fB\-malu32\fR>" 4
  .IX Item "-<32-bit ALU operations, as in -malu32>"
  .IP "\-<general atomic operations, as in \fB\-mv3\-atomics\fR>" 4
  .IX Item "-<general atomic operations, as in -mv3-atomics>"
  .RE
  .RS 4
  .RE
! .IP "\fBv4\fR" 4
  .IX Item "v4"
- .PD
  All features of v3, plus:
  .RS 4
  .IP "\-<Byte swap instructions, as in \fB\-mbswap\fR>" 4
--- 25895,26020 ----
  .Sp
  Valid options for \fItime\fR are
  .RS 4
! .IP \fInumber\fR 4
  .IX Item "number"
  A decimal number representing clock cycles.
! .IP \fBL1\fR 4
  .IX Item "L1"
  .PD 0
! .IP \fBL2\fR 4
  .IX Item "L2"
! .IP \fBL3\fR 4
  .IX Item "L3"
! .IP \fBmain\fR 4
  .IX Item "main"
  .PD
  The compiler contains estimates of the number of clock cycles for
! "typical" EV4 & EV5 hardware for the Level 1, 2 & 3 caches
  (also called Dcache, Scache, and Bcache), as well as to main memory.
! Note that L3 is only valid for EV5.
  .RE
  .RS 4
  .RE
  .PP
  \fIeBPF Options\fR
  .IX Subsection "eBPF Options"
! .IP \fB\-mframe\-limit=\fR\fIbytes\fR 4
  .IX Item "-mframe-limit=bytes"
  This specifies the hard limit for frame sizes, in bytes.  Currently,
  the value that can be specified should be less than or equal to
  \&\fB32767\fR.  Defaults to whatever limit is imposed by the version of
  the Linux kernel targeted.
! .IP \fB\-mbig\-endian\fR 4
  .IX Item "-mbig-endian"
! Generate code for a big\-endian target.
! .IP \fB\-mlittle\-endian\fR 4
  .IX Item "-mlittle-endian"
! Generate code for a little\-endian target.  This is the default.
! .IP \fB\-mjmpext\fR 4
  .IX Item "-mjmpext"
  .PD 0
! .IP \fB\-mno\-jmpext\fR 4
  .IX Item "-mno-jmpext"
  .PD
! Enable or disable generation of extra conditional\-branch instructions.
! Enabled for CPU v2 and above.
! .IP \fB\-mjmp32\fR 4
  .IX Item "-mjmp32"
  .PD 0
! .IP \fB\-mno\-jmp32\fR 4
  .IX Item "-mno-jmp32"
  .PD
  Enable or disable generation of 32\-bit jump instructions.
! Enabled for CPU v3 and above.
! .IP \fB\-malu32\fR 4
  .IX Item "-malu32"
  .PD 0
! .IP \fB\-mno\-alu32\fR 4
  .IX Item "-mno-alu32"
  .PD
! Enable or disable generation of 32\-bit ALU instructions.
! Enabled for CPU v3 and above.
! .IP \fB\-mv3\-atomics\fR 4
  .IX Item "-mv3-atomics"
  .PD 0
! .IP \fB\-mno\-v3\-atomics\fR 4
  .IX Item "-mno-v3-atomics"
  .PD
  Enable or disable instructions for general atomic operations introduced
! in CPU v3.  Enabled for CPU v3 and above.
! .IP \fB\-mbswap\fR 4
  .IX Item "-mbswap"
  .PD 0
! .IP \fB\-mno\-bswap\fR 4
  .IX Item "-mno-bswap"
  .PD
! Enable or disable byte swap instructions.  Enabled for CPU v4 and above.
! .IP \fB\-msdiv\fR 4
  .IX Item "-msdiv"
  .PD 0
! .IP \fB\-mno\-sdiv\fR 4
  .IX Item "-mno-sdiv"
  .PD
  Enable or disable signed division and modulus instructions.  Enabled for
! CPU v4 and above.
! .IP \fB\-msmov\fR 4
  .IX Item "-msmov"
  .PD 0
! .IP \fB\-mno\-smov\fR 4
  .IX Item "-mno-smov"
  .PD
! Enable or disable sign\-extending move and memory load instructions.
! Enabled for CPU v4 and above.
! .IP \fB\-mcpu=\fR\fIversion\fR 4
  .IX Item "-mcpu=version"
! This specifies which version of the eBPF ISA to target. Newer versions
  may not be supported by all kernels. The default is \fBv4\fR.
  .Sp
  Supported values for \fIversion\fR are:
  .RS 4
! .IP \fBv1\fR 4
  .IX Item "v1"
! The first stable eBPF ISA with no special features or extensions.
! .IP \fBv2\fR 4
  .IX Item "v2"
  Supports the jump extensions, as in \fB\-mjmpext\fR.
! .IP \fBv3\fR 4
  .IX Item "v3"
  All features of v2, plus:
  .RS 4
  .IP "\-<32\-bit jump operations, as in \fB\-mjmp32\fR>" 4
  .IX Item "-<32-bit jump operations, as in -mjmp32>"
  .PD 0
! .IP "\-<32\-bit ALU operations, as in \fB\-malu32\fR>" 4
  .IX Item "-<32-bit ALU operations, as in -malu32>"
  .IP "\-<general atomic operations, as in \fB\-mv3\-atomics\fR>" 4
  .IX Item "-<general atomic operations, as in -mv3-atomics>"
+ .PD
  .RE
  .RS 4
  .RE
! .IP \fBv4\fR 4
  .IX Item "v4"
  All features of v3, plus:
  .RS 4
  .IP "\-<Byte swap instructions, as in \fB\-mbswap\fR>" 4
*************** All features of v3, plus:
*** 26089,26397 ****
  .IX Item "-<Signed division and modulus instructions, as in -msdiv>"
  .IP "\-<Sign\-extending move and memory load instructions, as in \fB\-msmov\fR>" 4
  .IX Item "-<Sign-extending move and memory load instructions, as in -msmov>"
  .RE
  .RS 4
  .RE
  .RE
  .RS 4
  .RE
! .IP "\fB\-mco\-re\fR" 4
  .IX Item "-mco-re"
! .PD
! Enable \s-1BPF\s0 Compile Once \- Run Everywhere (CO-RE) support. Requires and
  is implied by \fB\-gbtf\fR.
! .IP "\fB\-mno\-co\-re\fR" 4
  .IX Item "-mno-co-re"
! Disable \s-1BPF\s0 Compile Once \- Run Everywhere (CO-RE) support. \s-1BPF\s0 CO-RE
! support is enabled by default when generating \s-1BTF\s0 debug information for
! the \s-1BPF\s0 target.
! .IP "\fB\-mxbpf\fR" 4
  .IX Item "-mxbpf"
! Generate code for an expanded version of \s-1BPF,\s0 which relaxes some of
! the restrictions imposed by the \s-1BPF\s0 architecture:
  .RS 4
! .IP "\-<Save and restore callee-saved registers at function entry and>" 4
  .IX Item "-<Save and restore callee-saved registers at function entry and>"
  exit, respectively.
  .RE
  .RS 4
  .RE
! .IP "\fB\-masm=\fR\fIdialect\fR" 4
  .IX Item "-masm=dialect"
  Outputs assembly instructions using eBPF selected \fIdialect\fR.  The default
  is \fBpseudoc\fR.
  .Sp
  Supported values for \fIdialect\fR are:
  .RS 4
! .IP "\fBnormal\fR" 4
  .IX Item "normal"
  Outputs normal assembly dialect.
! .IP "\fBpseudoc\fR" 4
  .IX Item "pseudoc"
! Outputs pseudo-c assembly dialect.
  .RE
  .RS 4
  .RE
! .IP "\fB\-minline\-memops\-threshold=\fR\fIbytes\fR" 4
  .IX Item "-minline-memops-threshold=bytes"
  Specifies a size threshold in bytes at or below which memmove, memcpy
  and memset shall always be expanded inline.  Operations dealing with
  sizes larger than this threshold would have to be implemented using
! a library call instead of being expanded inline, but since \s-1BPF\s0 doesn't
! allow libcalls, exceeding this threshold results in a compile-time
  error.  The default is \fB1024\fR bytes.
  .PP
! \fI\s-1FR30\s0 Options\fR
  .IX Subsection "FR30 Options"
  .PP
! These options are defined specifically for the \s-1FR30\s0 port.
! .IP "\fB\-msmall\-model\fR" 4
  .IX Item "-msmall-model"
  Use the small address space model.  This can produce smaller code, but
  it does assume that all symbolic values and addresses fit into a
  20\-bit range.
! .IP "\fB\-mno\-lsim\fR" 4
  .IX Item "-mno-lsim"
  Assume that runtime support has been provided and so there is no need
  to include the simulator library (\fIlibsim.a\fR) on the linker
  command line.
  .PP
! \fI\s-1FT32\s0 Options\fR
  .IX Subsection "FT32 Options"
  .PP
! These options are defined specifically for the \s-1FT32\s0 port.
! .IP "\fB\-msim\fR" 4
  .IX Item "-msim"
  Specifies that the program will be run on the simulator.  This causes
  an alternate runtime startup and library to be linked.
  You must not use this option when generating programs that will run on
  real hardware; you must provide your own runtime library for whatever
  I/O functions are needed.
! .IP "\fB\-mlra\fR" 4
  .IX Item "-mlra"
  Does nothing.  Preserved for backward compatibility.
! .IP "\fB\-mnodiv\fR" 4
  .IX Item "-mnodiv"
  Do not use div and mod instructions.
! .IP "\fB\-mft32b\fR" 4
  .IX Item "-mft32b"
! Enable use of the extended instructions of the \s-1FT32B\s0 processor.
! .IP "\fB\-mcompress\fR" 4
  .IX Item "-mcompress"
  Compress all code using the Ft32B code compression scheme.
! .IP "\fB\-mnopm\fR" 4
  .IX Item "-mnopm"
  Do not generate code that reads program memory.
  .PP
! \fI\s-1FRV\s0 Options\fR
  .IX Subsection "FRV Options"
! .IP "\fB\-mgpr\-32\fR" 4
  .IX Item "-mgpr-32"
! Only use the first 32 general-purpose registers.
! .IP "\fB\-mgpr\-64\fR" 4
  .IX Item "-mgpr-64"
! Use all 64 general-purpose registers.
! .IP "\fB\-mfpr\-32\fR" 4
  .IX Item "-mfpr-32"
! Use only the first 32 floating-point registers.
! .IP "\fB\-mfpr\-64\fR" 4
  .IX Item "-mfpr-64"
! Use all 64 floating-point registers.
! .IP "\fB\-mhard\-float\fR" 4
  .IX Item "-mhard-float"
! Use hardware instructions for floating-point operations.
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
! Use library routines for floating-point operations.
! .IP "\fB\-malloc\-cc\fR" 4
  .IX Item "-malloc-cc"
  Dynamically allocate condition code registers.
! .IP "\fB\-mfixed\-cc\fR" 4
  .IX Item "-mfixed-cc"
  Do not try to dynamically allocate condition code registers, only
  use \f(CW\*(C`icc0\*(C'\fR and \f(CW\*(C`fcc0\*(C'\fR.
! .IP "\fB\-mdword\fR" 4
  .IX Item "-mdword"
! Change \s-1ABI\s0 to use double word insns.
! .IP "\fB\-mno\-dword\fR" 4
  .IX Item "-mno-dword"
  Do not use double word instructions.
! .IP "\fB\-mdouble\fR" 4
  .IX Item "-mdouble"
! Use floating-point double instructions.
! .IP "\fB\-mno\-double\fR" 4
  .IX Item "-mno-double"
! Do not use floating-point double instructions.
! .IP "\fB\-mmedia\fR" 4
  .IX Item "-mmedia"
  Use media instructions.
! .IP "\fB\-mno\-media\fR" 4
  .IX Item "-mno-media"
  Do not use media instructions.
! .IP "\fB\-mmuladd\fR" 4
  .IX Item "-mmuladd"
  Use multiply and add/subtract instructions.
! .IP "\fB\-mno\-muladd\fR" 4
  .IX Item "-mno-muladd"
  Do not use multiply and add/subtract instructions.
! .IP "\fB\-mfdpic\fR" 4
  .IX Item "-mfdpic"
! Select the \s-1FDPIC ABI,\s0 which uses function descriptors to represent
  pointers to functions.  Without any PIC/PIE\-related options, it
  implies \fB\-fPIE\fR.  With \fB\-fpic\fR or \fB\-fpie\fR, it
! assumes \s-1GOT\s0 entries and small data are within a 12\-bit range from the
! \&\s-1GOT\s0 base address; with \fB\-fPIC\fR or \fB\-fPIE\fR, \s-1GOT\s0 offsets
  are computed with 32 bits.
! With a \fBbfin-elf\fR target, this option implies \fB\-msim\fR.
! .IP "\fB\-minline\-plt\fR" 4
  .IX Item "-minline-plt"
! Enable inlining of \s-1PLT\s0 entries in function calls to functions that are
  not known to bind locally.  It has no effect without \fB\-mfdpic\fR.
! It's enabled by default if optimizing for speed and compiling for
  shared libraries (i.e., \fB\-fPIC\fR or \fB\-fpic\fR), or when an
  optimization option such as \fB\-O3\fR or above is present in the
  command line.
! .IP "\fB\-mTLS\fR" 4
  .IX Item "-mTLS"
! Assume a large \s-1TLS\s0 segment when generating thread-local code.
! .IP "\fB\-mtls\fR" 4
  .IX Item "-mtls"
! Do not assume a large \s-1TLS\s0 segment when generating thread-local code.
! .IP "\fB\-mgprel\-ro\fR" 4
  .IX Item "-mgprel-ro"
! Enable the use of \f(CW\*(C`GPREL\*(C'\fR relocations in the \s-1FDPIC ABI\s0 for data
! that is known to be in read-only sections.  It's enabled by default,
  except for \fB\-fpic\fR or \fB\-fpie\fR: even though it may help
  make the global offset table smaller, it trades 1 instruction for 4.
  With \fB\-fPIC\fR or \fB\-fPIE\fR, it trades 3 instructions for 4,
  one of which may be shared by multiple symbols, and it avoids the need
! for a \s-1GOT\s0 entry for the referenced symbol, so it's more likely to be a
  win.  If it is not, \fB\-mno\-gprel\-ro\fR can be used to disable it.
! .IP "\fB\-multilib\-library\-pic\fR" 4
  .IX Item "-multilib-library-pic"
! Link with the (library, not \s-1FD\s0) pic libraries.  It's implied by
  \&\fB\-mlibrary\-pic\fR, as well as by \fB\-fPIC\fR and
  \&\fB\-fpic\fR without \fB\-mfdpic\fR.  You should never have to use
  it explicitly.
! .IP "\fB\-mlinked\-fp\fR" 4
  .IX Item "-mlinked-fp"
! Follow the \s-1EABI\s0 requirement of always creating a frame pointer whenever
  a stack frame is allocated.  This option is enabled by default and can
  be disabled with \fB\-mno\-linked\-fp\fR.
! .IP "\fB\-mlong\-calls\fR" 4
  .IX Item "-mlong-calls"
  Use indirect addressing to call functions outside the current
  compilation unit.  This allows the functions to be placed anywhere
  within the 32\-bit address space.
! .IP "\fB\-malign\-labels\fR" 4
  .IX Item "-malign-labels"
  Try to align labels to an 8\-byte boundary by inserting NOPs into the
! previous packet.  This option only has an effect when \s-1VLIW\s0 packing
! is enabled.  It doesn't create new packets; it merely adds NOPs to
  existing ones.
! .IP "\fB\-mlibrary\-pic\fR" 4
  .IX Item "-mlibrary-pic"
! Generate position-independent \s-1EABI\s0 code.
! .IP "\fB\-macc\-4\fR" 4
  .IX Item "-macc-4"
  Use only the first four media accumulator registers.
! .IP "\fB\-macc\-8\fR" 4
  .IX Item "-macc-8"
  Use all eight media accumulator registers.
! .IP "\fB\-mpack\fR" 4
  .IX Item "-mpack"
! Pack \s-1VLIW\s0 instructions.
! .IP "\fB\-mno\-pack\fR" 4
  .IX Item "-mno-pack"
! Do not pack \s-1VLIW\s0 instructions.
! .IP "\fB\-mno\-eflags\fR" 4
  .IX Item "-mno-eflags"
! Do not mark \s-1ABI\s0 switches in e_flags.
! .IP "\fB\-mcond\-move\fR" 4
  .IX Item "-mcond-move"
! Enable the use of conditional-move instructions (default).
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP "\fB\-mno\-cond\-move\fR" 4
  .IX Item "-mno-cond-move"
! Disable the use of conditional-move instructions.
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP "\fB\-mscc\fR" 4
  .IX Item "-mscc"
  Enable the use of conditional set instructions (default).
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP "\fB\-mno\-scc\fR" 4
  .IX Item "-mno-scc"
  Disable the use of conditional set instructions.
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP "\fB\-mcond\-exec\fR" 4
  .IX Item "-mcond-exec"
  Enable the use of conditional execution (default).
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP "\fB\-mno\-cond\-exec\fR" 4
  .IX Item "-mno-cond-exec"
  Disable the use of conditional execution.
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP "\fB\-mvliw\-branch\fR" 4
  .IX Item "-mvliw-branch"
! Run a pass to pack branches into \s-1VLIW\s0 instructions (default).
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP "\fB\-mno\-vliw\-branch\fR" 4
  .IX Item "-mno-vliw-branch"
! Do not run a pass to pack branches into \s-1VLIW\s0 instructions.
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP "\fB\-mmulti\-cond\-exec\fR" 4
  .IX Item "-mmulti-cond-exec"
  Enable optimization of \f(CW\*(C`&&\*(C'\fR and \f(CW\*(C`||\*(C'\fR in conditional execution
  (default).
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP "\fB\-mno\-multi\-cond\-exec\fR" 4
  .IX Item "-mno-multi-cond-exec"
  Disable optimization of \f(CW\*(C`&&\*(C'\fR and \f(CW\*(C`||\*(C'\fR in conditional execution.
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP "\fB\-mnested\-cond\-exec\fR" 4
  .IX Item "-mnested-cond-exec"
  Enable nested conditional execution optimizations (default).
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP "\fB\-mno\-nested\-cond\-exec\fR" 4
  .IX Item "-mno-nested-cond-exec"
  Disable nested conditional execution optimizations.
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP "\fB\-moptimize\-membar\fR" 4
  .IX Item "-moptimize-membar"
  This switch removes redundant \f(CW\*(C`membar\*(C'\fR instructions from the
! compiler-generated code.  It is enabled by default.
! .IP "\fB\-mno\-optimize\-membar\fR" 4
  .IX Item "-mno-optimize-membar"
  This switch disables the automatic removal of redundant \f(CW\*(C`membar\*(C'\fR
  instructions from the generated code.
! .IP "\fB\-mtomcat\-stats\fR" 4
  .IX Item "-mtomcat-stats"
  Cause gas to print out tomcat statistics.
! .IP "\fB\-mcpu=\fR\fIcpu\fR" 4
  .IX Item "-mcpu=cpu"
  Select the processor type for which to generate code.  Possible values are
  \&\fBfrv\fR, \fBfr550\fR, \fBtomcat\fR, \fBfr500\fR, \fBfr450\fR,
--- 26024,26332 ----
  .IX Item "-<Signed division and modulus instructions, as in -msdiv>"
  .IP "\-<Sign\-extending move and memory load instructions, as in \fB\-msmov\fR>" 4
  .IX Item "-<Sign-extending move and memory load instructions, as in -msmov>"
+ .PD
  .RE
  .RS 4
  .RE
  .RE
  .RS 4
  .RE
! .IP \fB\-mco\-re\fR 4
  .IX Item "-mco-re"
! Enable BPF Compile Once \- Run Everywhere (CO\-RE) support. Requires and
  is implied by \fB\-gbtf\fR.
! .IP \fB\-mno\-co\-re\fR 4
  .IX Item "-mno-co-re"
! Disable BPF Compile Once \- Run Everywhere (CO\-RE) support. BPF CO\-RE
! support is enabled by default when generating BTF debug information for
! the BPF target.
! .IP \fB\-mxbpf\fR 4
  .IX Item "-mxbpf"
! Generate code for an expanded version of BPF, which relaxes some of
! the restrictions imposed by the BPF architecture:
  .RS 4
! .IP "\-<Save and restore callee\-saved registers at function entry and>" 4
  .IX Item "-<Save and restore callee-saved registers at function entry and>"
  exit, respectively.
  .RE
  .RS 4
  .RE
! .IP \fB\-masm=\fR\fIdialect\fR 4
  .IX Item "-masm=dialect"
  Outputs assembly instructions using eBPF selected \fIdialect\fR.  The default
  is \fBpseudoc\fR.
  .Sp
  Supported values for \fIdialect\fR are:
  .RS 4
! .IP \fBnormal\fR 4
  .IX Item "normal"
  Outputs normal assembly dialect.
! .IP \fBpseudoc\fR 4
  .IX Item "pseudoc"
! Outputs pseudo\-c assembly dialect.
  .RE
  .RS 4
  .RE
! .IP \fB\-minline\-memops\-threshold=\fR\fIbytes\fR 4
  .IX Item "-minline-memops-threshold=bytes"
  Specifies a size threshold in bytes at or below which memmove, memcpy
  and memset shall always be expanded inline.  Operations dealing with
  sizes larger than this threshold would have to be implemented using
! a library call instead of being expanded inline, but since BPF doesn\*(Aqt
! allow libcalls, exceeding this threshold results in a compile\-time
  error.  The default is \fB1024\fR bytes.
  .PP
! \fIFR30 Options\fR
  .IX Subsection "FR30 Options"
  .PP
! These options are defined specifically for the FR30 port.
! .IP \fB\-msmall\-model\fR 4
  .IX Item "-msmall-model"
  Use the small address space model.  This can produce smaller code, but
  it does assume that all symbolic values and addresses fit into a
  20\-bit range.
! .IP \fB\-mno\-lsim\fR 4
  .IX Item "-mno-lsim"
  Assume that runtime support has been provided and so there is no need
  to include the simulator library (\fIlibsim.a\fR) on the linker
  command line.
  .PP
! \fIFT32 Options\fR
  .IX Subsection "FT32 Options"
  .PP
! These options are defined specifically for the FT32 port.
! .IP \fB\-msim\fR 4
  .IX Item "-msim"
  Specifies that the program will be run on the simulator.  This causes
  an alternate runtime startup and library to be linked.
  You must not use this option when generating programs that will run on
  real hardware; you must provide your own runtime library for whatever
  I/O functions are needed.
! .IP \fB\-mlra\fR 4
  .IX Item "-mlra"
  Does nothing.  Preserved for backward compatibility.
! .IP \fB\-mnodiv\fR 4
  .IX Item "-mnodiv"
  Do not use div and mod instructions.
! .IP \fB\-mft32b\fR 4
  .IX Item "-mft32b"
! Enable use of the extended instructions of the FT32B processor.
! .IP \fB\-mcompress\fR 4
  .IX Item "-mcompress"
  Compress all code using the Ft32B code compression scheme.
! .IP \fB\-mnopm\fR 4
  .IX Item "-mnopm"
  Do not generate code that reads program memory.
  .PP
! \fIFRV Options\fR
  .IX Subsection "FRV Options"
! .IP \fB\-mgpr\-32\fR 4
  .IX Item "-mgpr-32"
! Only use the first 32 general\-purpose registers.
! .IP \fB\-mgpr\-64\fR 4
  .IX Item "-mgpr-64"
! Use all 64 general\-purpose registers.
! .IP \fB\-mfpr\-32\fR 4
  .IX Item "-mfpr-32"
! Use only the first 32 floating\-point registers.
! .IP \fB\-mfpr\-64\fR 4
  .IX Item "-mfpr-64"
! Use all 64 floating\-point registers.
! .IP \fB\-mhard\-float\fR 4
  .IX Item "-mhard-float"
! Use hardware instructions for floating\-point operations.
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
! Use library routines for floating\-point operations.
! .IP \fB\-malloc\-cc\fR 4
  .IX Item "-malloc-cc"
  Dynamically allocate condition code registers.
! .IP \fB\-mfixed\-cc\fR 4
  .IX Item "-mfixed-cc"
  Do not try to dynamically allocate condition code registers, only
  use \f(CW\*(C`icc0\*(C'\fR and \f(CW\*(C`fcc0\*(C'\fR.
! .IP \fB\-mdword\fR 4
  .IX Item "-mdword"
! Change ABI to use double word insns.
! .IP \fB\-mno\-dword\fR 4
  .IX Item "-mno-dword"
  Do not use double word instructions.
! .IP \fB\-mdouble\fR 4
  .IX Item "-mdouble"
! Use floating\-point double instructions.
! .IP \fB\-mno\-double\fR 4
  .IX Item "-mno-double"
! Do not use floating\-point double instructions.
! .IP \fB\-mmedia\fR 4
  .IX Item "-mmedia"
  Use media instructions.
! .IP \fB\-mno\-media\fR 4
  .IX Item "-mno-media"
  Do not use media instructions.
! .IP \fB\-mmuladd\fR 4
  .IX Item "-mmuladd"
  Use multiply and add/subtract instructions.
! .IP \fB\-mno\-muladd\fR 4
  .IX Item "-mno-muladd"
  Do not use multiply and add/subtract instructions.
! .IP \fB\-mfdpic\fR 4
  .IX Item "-mfdpic"
! Select the FDPIC ABI, which uses function descriptors to represent
  pointers to functions.  Without any PIC/PIE\-related options, it
  implies \fB\-fPIE\fR.  With \fB\-fpic\fR or \fB\-fpie\fR, it
! assumes GOT entries and small data are within a 12\-bit range from the
! GOT base address; with \fB\-fPIC\fR or \fB\-fPIE\fR, GOT offsets
  are computed with 32 bits.
! With a \fBbfin\-elf\fR target, this option implies \fB\-msim\fR.
! .IP \fB\-minline\-plt\fR 4
  .IX Item "-minline-plt"
! Enable inlining of PLT entries in function calls to functions that are
  not known to bind locally.  It has no effect without \fB\-mfdpic\fR.
! It\*(Aqs enabled by default if optimizing for speed and compiling for
  shared libraries (i.e., \fB\-fPIC\fR or \fB\-fpic\fR), or when an
  optimization option such as \fB\-O3\fR or above is present in the
  command line.
! .IP \fB\-mTLS\fR 4
  .IX Item "-mTLS"
! Assume a large TLS segment when generating thread\-local code.
! .IP \fB\-mtls\fR 4
  .IX Item "-mtls"
! Do not assume a large TLS segment when generating thread\-local code.
! .IP \fB\-mgprel\-ro\fR 4
  .IX Item "-mgprel-ro"
! Enable the use of \f(CW\*(C`GPREL\*(C'\fR relocations in the FDPIC ABI for data
! that is known to be in read\-only sections.  It\*(Aqs enabled by default,
  except for \fB\-fpic\fR or \fB\-fpie\fR: even though it may help
  make the global offset table smaller, it trades 1 instruction for 4.
  With \fB\-fPIC\fR or \fB\-fPIE\fR, it trades 3 instructions for 4,
  one of which may be shared by multiple symbols, and it avoids the need
! for a GOT entry for the referenced symbol, so it\*(Aqs more likely to be a
  win.  If it is not, \fB\-mno\-gprel\-ro\fR can be used to disable it.
! .IP \fB\-multilib\-library\-pic\fR 4
  .IX Item "-multilib-library-pic"
! Link with the (library, not FD) pic libraries.  It\*(Aqs implied by
  \&\fB\-mlibrary\-pic\fR, as well as by \fB\-fPIC\fR and
  \&\fB\-fpic\fR without \fB\-mfdpic\fR.  You should never have to use
  it explicitly.
! .IP \fB\-mlinked\-fp\fR 4
  .IX Item "-mlinked-fp"
! Follow the EABI requirement of always creating a frame pointer whenever
  a stack frame is allocated.  This option is enabled by default and can
  be disabled with \fB\-mno\-linked\-fp\fR.
! .IP \fB\-mlong\-calls\fR 4
  .IX Item "-mlong-calls"
  Use indirect addressing to call functions outside the current
  compilation unit.  This allows the functions to be placed anywhere
  within the 32\-bit address space.
! .IP \fB\-malign\-labels\fR 4
  .IX Item "-malign-labels"
  Try to align labels to an 8\-byte boundary by inserting NOPs into the
! previous packet.  This option only has an effect when VLIW packing
! is enabled.  It doesn\*(Aqt create new packets; it merely adds NOPs to
  existing ones.
! .IP \fB\-mlibrary\-pic\fR 4
  .IX Item "-mlibrary-pic"
! Generate position\-independent EABI code.
! .IP \fB\-macc\-4\fR 4
  .IX Item "-macc-4"
  Use only the first four media accumulator registers.
! .IP \fB\-macc\-8\fR 4
  .IX Item "-macc-8"
  Use all eight media accumulator registers.
! .IP \fB\-mpack\fR 4
  .IX Item "-mpack"
! Pack VLIW instructions.
! .IP \fB\-mno\-pack\fR 4
  .IX Item "-mno-pack"
! Do not pack VLIW instructions.
! .IP \fB\-mno\-eflags\fR 4
  .IX Item "-mno-eflags"
! Do not mark ABI switches in e_flags.
! .IP \fB\-mcond\-move\fR 4
  .IX Item "-mcond-move"
! Enable the use of conditional\-move instructions (default).
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP \fB\-mno\-cond\-move\fR 4
  .IX Item "-mno-cond-move"
! Disable the use of conditional\-move instructions.
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP \fB\-mscc\fR 4
  .IX Item "-mscc"
  Enable the use of conditional set instructions (default).
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP \fB\-mno\-scc\fR 4
  .IX Item "-mno-scc"
  Disable the use of conditional set instructions.
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP \fB\-mcond\-exec\fR 4
  .IX Item "-mcond-exec"
  Enable the use of conditional execution (default).
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP \fB\-mno\-cond\-exec\fR 4
  .IX Item "-mno-cond-exec"
  Disable the use of conditional execution.
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP \fB\-mvliw\-branch\fR 4
  .IX Item "-mvliw-branch"
! Run a pass to pack branches into VLIW instructions (default).
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP \fB\-mno\-vliw\-branch\fR 4
  .IX Item "-mno-vliw-branch"
! Do not run a pass to pack branches into VLIW instructions.
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP \fB\-mmulti\-cond\-exec\fR 4
  .IX Item "-mmulti-cond-exec"
  Enable optimization of \f(CW\*(C`&&\*(C'\fR and \f(CW\*(C`||\*(C'\fR in conditional execution
  (default).
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP \fB\-mno\-multi\-cond\-exec\fR 4
  .IX Item "-mno-multi-cond-exec"
  Disable optimization of \f(CW\*(C`&&\*(C'\fR and \f(CW\*(C`||\*(C'\fR in conditional execution.
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP \fB\-mnested\-cond\-exec\fR 4
  .IX Item "-mnested-cond-exec"
  Enable nested conditional execution optimizations (default).
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP \fB\-mno\-nested\-cond\-exec\fR 4
  .IX Item "-mno-nested-cond-exec"
  Disable nested conditional execution optimizations.
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP \fB\-moptimize\-membar\fR 4
  .IX Item "-moptimize-membar"
  This switch removes redundant \f(CW\*(C`membar\*(C'\fR instructions from the
! compiler\-generated code.  It is enabled by default.
! .IP \fB\-mno\-optimize\-membar\fR 4
  .IX Item "-mno-optimize-membar"
  This switch disables the automatic removal of redundant \f(CW\*(C`membar\*(C'\fR
  instructions from the generated code.
! .IP \fB\-mtomcat\-stats\fR 4
  .IX Item "-mtomcat-stats"
  Cause gas to print out tomcat statistics.
! .IP \fB\-mcpu=\fR\fIcpu\fR 4
  .IX Item "-mcpu=cpu"
  Select the processor type for which to generate code.  Possible values are
  \&\fBfrv\fR, \fBfr550\fR, \fBtomcat\fR, \fBfr500\fR, \fBfr450\fR,
*************** Select the processor type for which to g
*** 26401,26439 ****
  .IX Subsection "GNU/Linux Options"
  .PP
  These \fB\-m\fR options are defined for GNU/Linux targets:
! .IP "\fB\-mglibc\fR" 4
  .IX Item "-mglibc"
! Use the \s-1GNU C\s0 library.  This is the default except
  on \fB*\-*\-linux\-*uclibc*\fR, \fB*\-*\-linux\-*musl*\fR and
  \&\fB*\-*\-linux\-*android*\fR targets.
! .IP "\fB\-muclibc\fR" 4
  .IX Item "-muclibc"
  Use uClibc C library.  This is the default on
  \&\fB*\-*\-linux\-*uclibc*\fR targets.
! .IP "\fB\-mmusl\fR" 4
  .IX Item "-mmusl"
  Use the musl C library.  This is the default on
  \&\fB*\-*\-linux\-*musl*\fR targets.
! .IP "\fB\-mbionic\fR" 4
  .IX Item "-mbionic"
  Use Bionic C library.  This is the default on
  \&\fB*\-*\-linux\-*android*\fR targets.
! .IP "\fB\-mandroid\fR" 4
  .IX Item "-mandroid"
  Compile code compatible with Android platform.  This is the default on
  \&\fB*\-*\-linux\-*android*\fR targets.
  .Sp
  When compiling, this option enables \fB\-mbionic\fR, \fB\-fPIC\fR,
  \&\fB\-fno\-exceptions\fR and \fB\-fno\-rtti\fR by default.  When linking,
! this option makes the \s-1GCC\s0 driver pass Android-specific options to the linker.
  Finally, this option causes the preprocessor macro \f(CW\*(C`_\|_ANDROID_\|_\*(C'\fR
  to be defined.
! .IP "\fB\-tno\-android\-cc\fR" 4
  .IX Item "-tno-android-cc"
  Disable compilation effects of \fB\-mandroid\fR, i.e., do not enable
  \&\fB\-mbionic\fR, \fB\-fPIC\fR, \fB\-fno\-exceptions\fR and
  \&\fB\-fno\-rtti\fR by default.
! .IP "\fB\-tno\-android\-ld\fR" 4
  .IX Item "-tno-android-ld"
  Disable linking effects of \fB\-mandroid\fR, i.e., pass standard Linux
  linking options to the linker.
--- 26336,26374 ----
  .IX Subsection "GNU/Linux Options"
  .PP
  These \fB\-m\fR options are defined for GNU/Linux targets:
! .IP \fB\-mglibc\fR 4
  .IX Item "-mglibc"
! Use the GNU C library.  This is the default except
  on \fB*\-*\-linux\-*uclibc*\fR, \fB*\-*\-linux\-*musl*\fR and
  \&\fB*\-*\-linux\-*android*\fR targets.
! .IP \fB\-muclibc\fR 4
  .IX Item "-muclibc"
  Use uClibc C library.  This is the default on
  \&\fB*\-*\-linux\-*uclibc*\fR targets.
! .IP \fB\-mmusl\fR 4
  .IX Item "-mmusl"
  Use the musl C library.  This is the default on
  \&\fB*\-*\-linux\-*musl*\fR targets.
! .IP \fB\-mbionic\fR 4
  .IX Item "-mbionic"
  Use Bionic C library.  This is the default on
  \&\fB*\-*\-linux\-*android*\fR targets.
! .IP \fB\-mandroid\fR 4
  .IX Item "-mandroid"
  Compile code compatible with Android platform.  This is the default on
  \&\fB*\-*\-linux\-*android*\fR targets.
  .Sp
  When compiling, this option enables \fB\-mbionic\fR, \fB\-fPIC\fR,
  \&\fB\-fno\-exceptions\fR and \fB\-fno\-rtti\fR by default.  When linking,
! this option makes the GCC driver pass Android\-specific options to the linker.
  Finally, this option causes the preprocessor macro \f(CW\*(C`_\|_ANDROID_\|_\*(C'\fR
  to be defined.
! .IP \fB\-tno\-android\-cc\fR 4
  .IX Item "-tno-android-cc"
  Disable compilation effects of \fB\-mandroid\fR, i.e., do not enable
  \&\fB\-mbionic\fR, \fB\-fPIC\fR, \fB\-fno\-exceptions\fR and
  \&\fB\-fno\-rtti\fR by default.
! .IP \fB\-tno\-android\-ld\fR 4
  .IX Item "-tno-android-ld"
  Disable linking effects of \fB\-mandroid\fR, i.e., pass standard Linux
  linking options to the linker.
*************** linking options to the linker.
*** 26442,26478 ****
  .IX Subsection "H8/300 Options"
  .PP
  These \fB\-m\fR options are defined for the H8/300 implementations:
! .IP "\fB\-mrelax\fR" 4
  .IX Item "-mrelax"
  Shorten some address references at link time, when possible; uses the
  linker option \fB\-relax\fR.
! .IP "\fB\-mh\fR" 4
  .IX Item "-mh"
  Generate code for the H8/300H.
! .IP "\fB\-ms\fR" 4
  .IX Item "-ms"
  Generate code for the H8S.
! .IP "\fB\-mn\fR" 4
  .IX Item "-mn"
  Generate code for the H8S and H8/300H in the normal mode.  This switch
  must be used either with \fB\-mh\fR or \fB\-ms\fR.
! .IP "\fB\-ms2600\fR" 4
  .IX Item "-ms2600"
  Generate code for the H8S/2600.  This switch must be used with \fB\-ms\fR.
! .IP "\fB\-mexr\fR" 4
  .IX Item "-mexr"
  Extended registers are stored on stack before execution of function
  with monitor attribute. Default option is \fB\-mexr\fR.
  This option is valid only for H8S targets.
! .IP "\fB\-mno\-exr\fR" 4
  .IX Item "-mno-exr"
  Extended registers are not stored on stack before execution of function
  with monitor attribute. Default option is \fB\-mno\-exr\fR.
  This option is valid only for H8S targets.
! .IP "\fB\-mint32\fR" 4
  .IX Item "-mint32"
  Make \f(CW\*(C`int\*(C'\fR data 32 bits by default.
! .IP "\fB\-malign\-300\fR" 4
  .IX Item "-malign-300"
  On the H8/300H and H8S, use the same alignment rules as for the H8/300.
  The default for the H8/300H and H8S is to align longs and floats on
--- 26377,26413 ----
  .IX Subsection "H8/300 Options"
  .PP
  These \fB\-m\fR options are defined for the H8/300 implementations:
! .IP \fB\-mrelax\fR 4
  .IX Item "-mrelax"
  Shorten some address references at link time, when possible; uses the
  linker option \fB\-relax\fR.
! .IP \fB\-mh\fR 4
  .IX Item "-mh"
  Generate code for the H8/300H.
! .IP \fB\-ms\fR 4
  .IX Item "-ms"
  Generate code for the H8S.
! .IP \fB\-mn\fR 4
  .IX Item "-mn"
  Generate code for the H8S and H8/300H in the normal mode.  This switch
  must be used either with \fB\-mh\fR or \fB\-ms\fR.
! .IP \fB\-ms2600\fR 4
  .IX Item "-ms2600"
  Generate code for the H8S/2600.  This switch must be used with \fB\-ms\fR.
! .IP \fB\-mexr\fR 4
  .IX Item "-mexr"
  Extended registers are stored on stack before execution of function
  with monitor attribute. Default option is \fB\-mexr\fR.
  This option is valid only for H8S targets.
! .IP \fB\-mno\-exr\fR 4
  .IX Item "-mno-exr"
  Extended registers are not stored on stack before execution of function
  with monitor attribute. Default option is \fB\-mno\-exr\fR.
  This option is valid only for H8S targets.
! .IP \fB\-mint32\fR 4
  .IX Item "-mint32"
  Make \f(CW\*(C`int\*(C'\fR data 32 bits by default.
! .IP \fB\-malign\-300\fR 4
  .IX Item "-malign-300"
  On the H8/300H and H8S, use the same alignment rules as for the H8/300.
  The default for the H8/300H and H8S is to align longs and floats on
*************** The default for the H8/300H and H8S is t
*** 26480,26512 ****
  \&\fB\-malign\-300\fR causes them to be aligned on 2\-byte boundaries.
  This option has no effect on the H8/300.
  .PP
! \fI\s-1HPPA\s0 Options\fR
  .IX Subsection "HPPA Options"
  .PP
! These \fB\-m\fR options are defined for the \s-1HPPA\s0 family of computers:
! .IP "\fB\-march=\fR\fIarchitecture-type\fR" 4
  .IX Item "-march=architecture-type"
  Generate code for the specified architecture.  The choices for
! \&\fIarchitecture-type\fR are \fB1.0\fR for \s-1PA 1.0,\s0 \fB1.1\fR for \s-1PA
! 1.1,\s0 and \fB2.0\fR for \s-1PA 2.0\s0 processors.  Refer to
! \&\fI/usr/lib/sched.models\fR on an HP-UX system to determine the proper
  architecture option for your machine.  Code compiled for lower numbered
  architectures runs on higher numbered architectures, but not the
  other way around.
! .IP "\fB\-mpa\-risc\-1\-0\fR" 4
  .IX Item "-mpa-risc-1-0"
  .PD 0
! .IP "\fB\-mpa\-risc\-1\-1\fR" 4
  .IX Item "-mpa-risc-1-1"
! .IP "\fB\-mpa\-risc\-2\-0\fR" 4
  .IX Item "-mpa-risc-2-0"
  .PD
  Synonyms for \fB\-march=1.0\fR, \fB\-march=1.1\fR, and \fB\-march=2.0\fR respectively.
! .IP "\fB\-matomic\-libcalls\fR" 4
  .IX Item "-matomic-libcalls"
  Generate libcalls for atomic loads and stores when sync libcalls are disabled.
  This option is enabled by default.  It only affects the generation of
! atomic libcalls by the \s-1HPPA\s0 backend.
  .Sp
  Both the sync and \fIlibatomic\fR libcall implementations use locking.
  As a result, processor stores are not atomic with respect to other
--- 26415,26447 ----
  \&\fB\-malign\-300\fR causes them to be aligned on 2\-byte boundaries.
  This option has no effect on the H8/300.
  .PP
! \fIHPPA Options\fR
  .IX Subsection "HPPA Options"
  .PP
! These \fB\-m\fR options are defined for the HPPA family of computers:
! .IP \fB\-march=\fR\fIarchitecture\-type\fR 4
  .IX Item "-march=architecture-type"
  Generate code for the specified architecture.  The choices for
! \&\fIarchitecture\-type\fR are \fB1.0\fR for PA 1.0, \fB1.1\fR for PA
! 1.1, and \fB2.0\fR for PA 2.0 processors.  Refer to
! \&\fI/usr/lib/sched.models\fR on an HP\-UX system to determine the proper
  architecture option for your machine.  Code compiled for lower numbered
  architectures runs on higher numbered architectures, but not the
  other way around.
! .IP \fB\-mpa\-risc\-1\-0\fR 4
  .IX Item "-mpa-risc-1-0"
  .PD 0
! .IP \fB\-mpa\-risc\-1\-1\fR 4
  .IX Item "-mpa-risc-1-1"
! .IP \fB\-mpa\-risc\-2\-0\fR 4
  .IX Item "-mpa-risc-2-0"
  .PD
  Synonyms for \fB\-march=1.0\fR, \fB\-march=1.1\fR, and \fB\-march=2.0\fR respectively.
! .IP \fB\-matomic\-libcalls\fR 4
  .IX Item "-matomic-libcalls"
  Generate libcalls for atomic loads and stores when sync libcalls are disabled.
  This option is enabled by default.  It only affects the generation of
! atomic libcalls by the HPPA backend.
  .Sp
  Both the sync and \fIlibatomic\fR libcall implementations use locking.
  As a result, processor stores are not atomic with respect to other
*************** atomic operations.  Processor loads up t
*** 26514,26520 ****
  respect to other atomic operations provided they are implemented as
  a single access.
  .Sp
! The PA-RISC architecture does not support any atomic operations in
  hardware except for the \f(CW\*(C`ldcw\*(C'\fR instruction.  Thus, all atomic
  support is implemented using sync and atomic libcalls.  Sync libcall
  support is in \fIlibgcc.a\fR.  Atomic libcall support is in
--- 26449,26455 ----
  respect to other atomic operations provided they are implemented as
  a single access.
  .Sp
! The PA\-RISC architecture does not support any atomic operations in
  hardware except for the \f(CW\*(C`ldcw\*(C'\fR instruction.  Thus, all atomic
  support is implemented using sync and atomic libcalls.  Sync libcall
  support is in \fIlibgcc.a\fR.  Atomic libcall support is in
*************** support is in \fIlibgcc.a\fR.  Atomic li
*** 26523,26597 ****
  This option generates \f(CW\*(C`_\|_atomic_exchange\*(C'\fR calls for atomic stores.
  It also provides special handling for atomic DImode accesses on 32\-bit
  targets.
! .IP "\fB\-mbig\-switch\fR" 4
  .IX Item "-mbig-switch"
  Does nothing.  Preserved for backward compatibility.
! .IP "\fB\-mcaller\-copies\fR" 4
  .IX Item "-mcaller-copies"
  The caller copies function arguments passed by hidden reference.  This
  option should be used with care as it is not compatible with the default
  32\-bit runtime.  However, only aggregates larger than eight bytes are
  passed by hidden reference and the option provides better compatibility
  with OpenMP.
! .IP "\fB\-mcoherent\-ldcw\fR" 4
  .IX Item "-mcoherent-ldcw"
! Use ldcw/ldcd coherent cache-control hint.
! .IP "\fB\-mdisable\-fpregs\fR" 4
  .IX Item "-mdisable-fpregs"
! Disable floating-point registers.  Equivalent to \f(CW\*(C`\-msoft\-float\*(C'\fR.
! .IP "\fB\-mdisable\-indexing\fR" 4
  .IX Item "-mdisable-indexing"
  Prevent the compiler from using indexing address modes.  This avoids some
! rather obscure problems when compiling \s-1MIG\s0 generated code under \s-1MACH.\s0
! .IP "\fB\-mfast\-indirect\-calls\fR" 4
  .IX Item "-mfast-indirect-calls"
  Generate code that assumes calls never cross space boundaries.  This
! allows \s-1GCC\s0 to emit code that performs faster indirect calls.
  .Sp
  This option does not work in the presence of shared libraries or nested
  functions.
! .IP "\fB\-mfixed\-range=\fR\fIregister-range\fR" 4
  .IX Item "-mfixed-range=register-range"
  Generate code treating the given register range as fixed registers.
  A fixed register is one that the register allocator cannot use.  This is
  useful when compiling kernel code.  A register range is specified as
  two registers separated by a dash.  Multiple register ranges can be
  specified separated by a comma.
! .IP "\fB\-mgas\fR" 4
  .IX Item "-mgas"
! Enable the use of assembler directives only \s-1GAS\s0 understands.
! .IP "\fB\-mgnu\-ld\fR" 4
  .IX Item "-mgnu-ld"
! Use options specific to \s-1GNU\s0 \fBld\fR.
  This passes \fB\-shared\fR to \fBld\fR when
! building a shared library.  It is the default when \s-1GCC\s0 is configured,
! explicitly or implicitly, with the \s-1GNU\s0 linker.  This option does not
  affect which \fBld\fR is called; it only changes what parameters
  are passed to that \fBld\fR.
  The \fBld\fR that is called is determined by the
! \&\fB\-\-with\-ld\fR configure option, \s-1GCC\s0's program search path, and
! finally by the user's \fB\s-1PATH\s0\fR.  The linker used by \s-1GCC\s0 can be printed
! using \fBwhich `gcc \-print\-prog\-name=ld`\fR.  This option is only available
! on the 64\-bit HP-UX \s-1GCC,\s0 i.e. configured with \fBhppa*64*\-*\-hpux*\fR.
! .IP "\fB\-mhp\-ld\fR" 4
  .IX Item "-mhp-ld"
! Use options specific to \s-1HP\s0 \fBld\fR.
  This passes \fB\-b\fR to \fBld\fR when building
  a shared library and passes \fB+Accept TypeMismatch\fR to \fBld\fR on all
! links.  It is the default when \s-1GCC\s0 is configured, explicitly or
! implicitly, with the \s-1HP\s0 linker.  This option does not affect
  which \fBld\fR is called; it only changes what parameters are passed to that
  \&\fBld\fR.
  The \fBld\fR that is called is determined by the \fB\-\-with\-ld\fR
! configure option, \s-1GCC\s0's program search path, and finally by the user's
! \&\fB\s-1PATH\s0\fR.  The linker used by \s-1GCC\s0 can be printed using \fBwhich
! `gcc \-print\-prog\-name=ld`\fR.  This option is only available on the 64\-bit
! HP-UX \s-1GCC,\s0 i.e. configured with \fBhppa*64*\-*\-hpux*\fR.
! .IP "\fB\-mlinker\-opt\fR" 4
  .IX Item "-mlinker-opt"
! Enable the optimization pass in the HP-UX linker.  Note this makes symbolic
  debugging impossible.
! .IP "\fB\-mlong\-calls\fR" 4
  .IX Item "-mlong-calls"
  Generate code that uses long call sequences.  This ensures that a call
  is always able to reach linker generated stubs.  The default is to generate
--- 26458,26532 ----
  This option generates \f(CW\*(C`_\|_atomic_exchange\*(C'\fR calls for atomic stores.
  It also provides special handling for atomic DImode accesses on 32\-bit
  targets.
! .IP \fB\-mbig\-switch\fR 4
  .IX Item "-mbig-switch"
  Does nothing.  Preserved for backward compatibility.
! .IP \fB\-mcaller\-copies\fR 4
  .IX Item "-mcaller-copies"
  The caller copies function arguments passed by hidden reference.  This
  option should be used with care as it is not compatible with the default
  32\-bit runtime.  However, only aggregates larger than eight bytes are
  passed by hidden reference and the option provides better compatibility
  with OpenMP.
! .IP \fB\-mcoherent\-ldcw\fR 4
  .IX Item "-mcoherent-ldcw"
! Use ldcw/ldcd coherent cache\-control hint.
! .IP \fB\-mdisable\-fpregs\fR 4
  .IX Item "-mdisable-fpregs"
! Disable floating\-point registers.  Equivalent to \f(CW\*(C`\-msoft\-float\*(C'\fR.
! .IP \fB\-mdisable\-indexing\fR 4
  .IX Item "-mdisable-indexing"
  Prevent the compiler from using indexing address modes.  This avoids some
! rather obscure problems when compiling MIG generated code under MACH.
! .IP \fB\-mfast\-indirect\-calls\fR 4
  .IX Item "-mfast-indirect-calls"
  Generate code that assumes calls never cross space boundaries.  This
! allows GCC to emit code that performs faster indirect calls.
  .Sp
  This option does not work in the presence of shared libraries or nested
  functions.
! .IP \fB\-mfixed\-range=\fR\fIregister\-range\fR 4
  .IX Item "-mfixed-range=register-range"
  Generate code treating the given register range as fixed registers.
  A fixed register is one that the register allocator cannot use.  This is
  useful when compiling kernel code.  A register range is specified as
  two registers separated by a dash.  Multiple register ranges can be
  specified separated by a comma.
! .IP \fB\-mgas\fR 4
  .IX Item "-mgas"
! Enable the use of assembler directives only GAS understands.
! .IP \fB\-mgnu\-ld\fR 4
  .IX Item "-mgnu-ld"
! Use options specific to GNU \fBld\fR.
  This passes \fB\-shared\fR to \fBld\fR when
! building a shared library.  It is the default when GCC is configured,
! explicitly or implicitly, with the GNU linker.  This option does not
  affect which \fBld\fR is called; it only changes what parameters
  are passed to that \fBld\fR.
  The \fBld\fR that is called is determined by the
! \&\fB\-\-with\-ld\fR configure option, GCC\*(Aqs program search path, and
! finally by the user\*(Aqs \fBPATH\fR.  The linker used by GCC can be printed
! using \fBwhich \`gcc \-print\-prog\-name=ld\`\fR.  This option is only available
! on the 64\-bit HP\-UX GCC, i.e. configured with \fBhppa*64*\-*\-hpux*\fR.
! .IP \fB\-mhp\-ld\fR 4
  .IX Item "-mhp-ld"
! Use options specific to HP \fBld\fR.
  This passes \fB\-b\fR to \fBld\fR when building
  a shared library and passes \fB+Accept TypeMismatch\fR to \fBld\fR on all
! links.  It is the default when GCC is configured, explicitly or
! implicitly, with the HP linker.  This option does not affect
  which \fBld\fR is called; it only changes what parameters are passed to that
  \&\fBld\fR.
  The \fBld\fR that is called is determined by the \fB\-\-with\-ld\fR
! configure option, GCC\*(Aqs program search path, and finally by the user\*(Aqs
! \&\fBPATH\fR.  The linker used by GCC can be printed using \fBwhich
! \&\`gcc \-print\-prog\-name=ld\`\fR.  This option is only available on the 64\-bit
! HP\-UX GCC, i.e. configured with \fBhppa*64*\-*\-hpux*\fR.
! .IP \fB\-mlinker\-opt\fR 4
  .IX Item "-mlinker-opt"
! Enable the optimization pass in the HP\-UX linker.  Note this makes symbolic
  debugging impossible.
! .IP \fB\-mlong\-calls\fR 4
  .IX Item "-mlong-calls"
  Generate code that uses long call sequences.  This ensures that a call
  is always able to reach linker generated stubs.  The default is to generate
*************** long calls only when the distance from t
*** 26599,26611 ****
  of the function or translation unit, as the case may be, exceeds a
  predefined limit set by the branch type being used.  The limits for
  normal calls are 7,600,000 and 240,000 bytes, respectively for the
! \&\s-1PA 2.0\s0 and \s-1PA 1.X\s0 architectures.  Sibcalls are always limited at
  240,000 bytes.
  .Sp
  Distances are measured from the beginning of functions when using the
  \&\fB\-ffunction\-sections\fR option, or when using the \fB\-mgas\fR
! and \fB\-mno\-portable\-runtime\fR options together under HP-UX with
! the \s-1SOM\s0 linker.
  .Sp
  It is normally not desirable to use this option as it degrades
  performance.  However, it may be useful in large applications,
--- 26534,26546 ----
  of the function or translation unit, as the case may be, exceeds a
  predefined limit set by the branch type being used.  The limits for
  normal calls are 7,600,000 and 240,000 bytes, respectively for the
! PA 2.0 and PA 1.X architectures.  Sibcalls are always limited at
  240,000 bytes.
  .Sp
  Distances are measured from the beginning of functions when using the
  \&\fB\-ffunction\-sections\fR option, or when using the \fB\-mgas\fR
! and \fB\-mno\-portable\-runtime\fR options together under HP\-UX with
! the SOM linker.
  .Sp
  It is normally not desirable to use this option as it degrades
  performance.  However, it may be useful in large applications,
*************** particularly when partial linking is use
*** 26614,26686 ****
  The types of long calls used depends on the capabilities of the
  assembler and linker, and the type of code being generated.  The
  impact on systems that support long absolute calls, and long pic
! symbol-difference or pc-relative calls should be relatively small.
! However, an indirect call is used on 32\-bit \s-1ELF\s0 systems in pic code
  and it is quite long.
! .IP "\fB\-mlong\-load\-store\fR" 4
  .IX Item "-mlong-load-store"
  Generate 3\-instruction load and store sequences as sometimes required by
! the HP-UX 10 linker.  This is equivalent to the \fB+k\fR option to
! the \s-1HP\s0 compilers.
! .IP "\fB\-mjump\-in\-delay\fR" 4
  .IX Item "-mjump-in-delay"
  This option is ignored and provided for compatibility purposes only.
! .IP "\fB\-mno\-space\-regs\fR" 4
  .IX Item "-mno-space-regs"
  Generate code that assumes the target has no space registers.  This allows
! \&\s-1GCC\s0 to generate faster indirect calls and use unscaled index address modes.
  .Sp
! Such code is suitable for level 0 \s-1PA\s0 systems and kernels.
! .IP "\fB\-mordered\fR" 4
  .IX Item "-mordered"
  Assume memory references are ordered and barriers are not needed.
! .IP "\fB\-mportable\-runtime\fR" 4
  .IX Item "-mportable-runtime"
! Use the portable calling conventions proposed by \s-1HP\s0 for \s-1ELF\s0 systems.
! .IP "\fB\-mschedule=\fR\fIcpu-type\fR" 4
  .IX Item "-mschedule=cpu-type"
  Schedule code according to the constraints for the machine type
! \&\fIcpu-type\fR.  The choices for \fIcpu-type\fR are \fB700\fR
  \&\fB7100\fR, \fB7100LC\fR, \fB7200\fR, \fB7300\fR and \fB8000\fR.  Refer
! to \fI/usr/lib/sched.models\fR on an HP-UX system to determine the
  proper scheduling option for your machine.  The default scheduling is
  \&\fB8000\fR.
! .IP "\fB\-msio\fR" 4
  .IX Item "-msio"
! Generate the predefine, \f(CW\*(C`_SIO\*(C'\fR, for server \s-1IO.\s0  The default is
  \&\fB\-mwsio\fR.  This generates the predefines, \f(CW\*(C`_\|_hp9000s700\*(C'\fR,
! \&\f(CW\*(C`_\|_hp9000s700_\|_\*(C'\fR and \f(CW\*(C`_WSIO\*(C'\fR, for workstation \s-1IO.\s0  These
! options are available under HP-UX and HI-UX.
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  Generate output containing library calls for floating point.
! \&\fBWarning:\fR the requisite libraries are not available for all \s-1HPPA\s0
! targets.  Normally the facilities of the machine's usual C compiler are
! used, but this cannot be done directly in cross-compilation.  You must make
  your own arrangements to provide suitable library functions for
! cross-compilation.
  .Sp
  \&\fB\-msoft\-float\fR changes the calling convention in the output file;
  therefore, it is only useful if you compile \fIall\fR of a program with
  this option.  In particular, you need to compile \fIlibgcc.a\fR, the
! library that comes with \s-1GCC,\s0 with \fB\-msoft\-float\fR in order for
  this to work.
! .IP "\fB\-msoft\-mult\fR" 4
  .IX Item "-msoft-mult"
  Use software integer multiplication.
  .Sp
  This disables the use of the \f(CW\*(C`xmpyu\*(C'\fR instruction.
! .IP "\fB\-munix=\fR\fIunix-std\fR" 4
  .IX Item "-munix=unix-std"
  Generate compiler predefines and select a startfile for the specified
! \&\s-1UNIX\s0 standard.  The choices for \fIunix-std\fR are \fB93\fR, \fB95\fR
! and \fB98\fR.  \fB93\fR is supported on all HP-UX versions.  \fB95\fR
! is available on HP-UX 10.10 and later.  \fB98\fR is available on HP-UX
! 11.11 and later.  The default values are \fB93\fR for HP-UX 10.00,
! \&\fB95\fR for HP-UX 10.10 though to 11.00, and \fB98\fR for HP-UX 11.11
  and later.
  .Sp
! \&\fB\-munix=93\fR provides the same predefines as \s-1GCC 3.3\s0 and 3.4.
  \&\fB\-munix=95\fR provides additional predefines for \f(CW\*(C`XOPEN_UNIX\*(C'\fR
  and \f(CW\*(C`_XOPEN_SOURCE_EXTENDED\*(C'\fR, and the startfile \fIunix95.o\fR.
  \&\fB\-munix=98\fR provides additional predefines for \f(CW\*(C`_XOPEN_UNIX\*(C'\fR,
--- 26549,26621 ----
  The types of long calls used depends on the capabilities of the
  assembler and linker, and the type of code being generated.  The
  impact on systems that support long absolute calls, and long pic
! symbol\-difference or pc\-relative calls should be relatively small.
! However, an indirect call is used on 32\-bit ELF systems in pic code
  and it is quite long.
! .IP \fB\-mlong\-load\-store\fR 4
  .IX Item "-mlong-load-store"
  Generate 3\-instruction load and store sequences as sometimes required by
! the HP\-UX 10 linker.  This is equivalent to the \fB+k\fR option to
! the HP compilers.
! .IP \fB\-mjump\-in\-delay\fR 4
  .IX Item "-mjump-in-delay"
  This option is ignored and provided for compatibility purposes only.
! .IP \fB\-mno\-space\-regs\fR 4
  .IX Item "-mno-space-regs"
  Generate code that assumes the target has no space registers.  This allows
! GCC to generate faster indirect calls and use unscaled index address modes.
  .Sp
! Such code is suitable for level 0 PA systems and kernels.
! .IP \fB\-mordered\fR 4
  .IX Item "-mordered"
  Assume memory references are ordered and barriers are not needed.
! .IP \fB\-mportable\-runtime\fR 4
  .IX Item "-mportable-runtime"
! Use the portable calling conventions proposed by HP for ELF systems.
! .IP \fB\-mschedule=\fR\fIcpu\-type\fR 4
  .IX Item "-mschedule=cpu-type"
  Schedule code according to the constraints for the machine type
! \&\fIcpu\-type\fR.  The choices for \fIcpu\-type\fR are \fB700\fR
  \&\fB7100\fR, \fB7100LC\fR, \fB7200\fR, \fB7300\fR and \fB8000\fR.  Refer
! to \fI/usr/lib/sched.models\fR on an HP\-UX system to determine the
  proper scheduling option for your machine.  The default scheduling is
  \&\fB8000\fR.
! .IP \fB\-msio\fR 4
  .IX Item "-msio"
! Generate the predefine, \f(CW\*(C`_SIO\*(C'\fR, for server IO.  The default is
  \&\fB\-mwsio\fR.  This generates the predefines, \f(CW\*(C`_\|_hp9000s700\*(C'\fR,
! \&\f(CW\*(C`_\|_hp9000s700_\|_\*(C'\fR and \f(CW\*(C`_WSIO\*(C'\fR, for workstation IO.  These
! options are available under HP\-UX and HI\-UX.
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  Generate output containing library calls for floating point.
! \&\fBWarning:\fR the requisite libraries are not available for all HPPA
! targets.  Normally the facilities of the machine\*(Aqs usual C compiler are
! used, but this cannot be done directly in cross\-compilation.  You must make
  your own arrangements to provide suitable library functions for
! cross\-compilation.
  .Sp
  \&\fB\-msoft\-float\fR changes the calling convention in the output file;
  therefore, it is only useful if you compile \fIall\fR of a program with
  this option.  In particular, you need to compile \fIlibgcc.a\fR, the
! library that comes with GCC, with \fB\-msoft\-float\fR in order for
  this to work.
! .IP \fB\-msoft\-mult\fR 4
  .IX Item "-msoft-mult"
  Use software integer multiplication.
  .Sp
  This disables the use of the \f(CW\*(C`xmpyu\*(C'\fR instruction.
! .IP \fB\-munix=\fR\fIunix\-std\fR 4
  .IX Item "-munix=unix-std"
  Generate compiler predefines and select a startfile for the specified
! UNIX standard.  The choices for \fIunix\-std\fR are \fB93\fR, \fB95\fR
! and \fB98\fR.  \fB93\fR is supported on all HP\-UX versions.  \fB95\fR
! is available on HP\-UX 10.10 and later.  \fB98\fR is available on HP\-UX
! 11.11 and later.  The default values are \fB93\fR for HP\-UX 10.00,
! \&\fB95\fR for HP\-UX 10.10 though to 11.00, and \fB98\fR for HP\-UX 11.11
  and later.
  .Sp
! \&\fB\-munix=93\fR provides the same predefines as GCC 3.3 and 3.4.
  \&\fB\-munix=95\fR provides additional predefines for \f(CW\*(C`XOPEN_UNIX\*(C'\fR
  and \f(CW\*(C`_XOPEN_SOURCE_EXTENDED\*(C'\fR, and the startfile \fIunix95.o\fR.
  \&\fB\-munix=98\fR provides additional predefines for \f(CW\*(C`_XOPEN_UNIX\*(C'\fR,
*************** for various library routines.  It also a
*** 26692,26892 ****
  of the C library.  Thus, \fIextreme\fR care is needed in using this
  option.
  .Sp
! Library code that is intended to operate with more than one \s-1UNIX\s0
  standard must test, set and restore the variable \f(CW\*(C`_\|_xpg4_extended_mask\*(C'\fR
! as appropriate.  Most \s-1GNU\s0 software doesn't provide this capability.
! .IP "\fB\-nolibdld\fR" 4
  .IX Item "-nolibdld"
  Suppress the generation of link options to search libdld.sl when the
! \&\fB\-static\fR option is specified on HP-UX 10 and later.
! .IP "\fB\-static\fR" 4
  .IX Item "-static"
! The HP-UX implementation of setlocale in libc has a dependency on
! libdld.sl.  There isn't an archive version of libdld.sl.  Thus,
  when the \fB\-static\fR option is specified, special link options
  are needed to resolve this dependency.
  .Sp
! On HP-UX 10 and later, the \s-1GCC\s0 driver adds the necessary options to
  link with libdld.sl when the \fB\-static\fR option is specified.
  This causes the resulting binary to be dynamic.  On the 64\-bit port,
  the linkers generate dynamic binaries by default in any case.  The
! \&\fB\-nolibdld\fR option can be used to prevent the \s-1GCC\s0 driver from
  adding these link options.
! .IP "\fB\-threads\fR" 4
  .IX Item "-threads"
  Add support for multithreading with the \fIdce thread\fR library
! under HP-UX.  This option sets flags for both the preprocessor and
  linker.
  .PP
! \fI\s-1IA\-64\s0 Options\fR
  .IX Subsection "IA-64 Options"
  .PP
! These are the \fB\-m\fR options defined for the Intel \s-1IA\-64\s0 architecture.
! .IP "\fB\-mbig\-endian\fR" 4
  .IX Item "-mbig-endian"
! Generate code for a big-endian target.  This is the default for HP-UX.
! .IP "\fB\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
! Generate code for a little-endian target.  This is the default for \s-1AIX5\s0
  and GNU/Linux.
! .IP "\fB\-mgnu\-as\fR" 4
  .IX Item "-mgnu-as"
  .PD 0
! .IP "\fB\-mno\-gnu\-as\fR" 4
  .IX Item "-mno-gnu-as"
  .PD
! Generate (or don't) code for the \s-1GNU\s0 assembler.  This is the default.
! .IP "\fB\-mgnu\-ld\fR" 4
  .IX Item "-mgnu-ld"
  .PD 0
! .IP "\fB\-mno\-gnu\-ld\fR" 4
  .IX Item "-mno-gnu-ld"
  .PD
! Generate (or don't) code for the \s-1GNU\s0 linker.  This is the default.
! .IP "\fB\-mno\-pic\fR" 4
  .IX Item "-mno-pic"
  Generate code that does not use a global pointer register.  The result
! is not position independent code, and violates the \s-1IA\-64 ABI.\s0
! .IP "\fB\-mvolatile\-asm\-stop\fR" 4
  .IX Item "-mvolatile-asm-stop"
  .PD 0
! .IP "\fB\-mno\-volatile\-asm\-stop\fR" 4
  .IX Item "-mno-volatile-asm-stop"
  .PD
! Generate (or don't) a stop bit immediately before and after volatile asm
  statements.
! .IP "\fB\-mregister\-names\fR" 4
  .IX Item "-mregister-names"
  .PD 0
! .IP "\fB\-mno\-register\-names\fR" 4
  .IX Item "-mno-register-names"
  .PD
! Generate (or don't) \fBin\fR, \fBloc\fR, and \fBout\fR register names for
  the stacked registers.  This may make assembler output more readable.
! .IP "\fB\-mno\-sdata\fR" 4
  .IX Item "-mno-sdata"
  .PD 0
! .IP "\fB\-msdata\fR" 4
  .IX Item "-msdata"
  .PD
  Disable (or enable) optimizations that use the small data section.  This may
  be useful for working around optimizer bugs.
! .IP "\fB\-mconstant\-gp\fR" 4
  .IX Item "-mconstant-gp"
  Generate code that uses a single constant global pointer value.  This is
  useful when compiling kernel code.
! .IP "\fB\-mauto\-pic\fR" 4
  .IX Item "-mauto-pic"
! Generate code that is self-relocatable.  This implies \fB\-mconstant\-gp\fR.
  This is useful when compiling firmware code.
! .IP "\fB\-minline\-float\-divide\-min\-latency\fR" 4
  .IX Item "-minline-float-divide-min-latency"
! Generate code for inline divides of floating-point values
  using the minimum latency algorithm.
! .IP "\fB\-minline\-float\-divide\-max\-throughput\fR" 4
  .IX Item "-minline-float-divide-max-throughput"
! Generate code for inline divides of floating-point values
  using the maximum throughput algorithm.
! .IP "\fB\-mno\-inline\-float\-divide\fR" 4
  .IX Item "-mno-inline-float-divide"
! Do not generate inline code for divides of floating-point values.
! .IP "\fB\-minline\-int\-divide\-min\-latency\fR" 4
  .IX Item "-minline-int-divide-min-latency"
  Generate code for inline divides of integer values
  using the minimum latency algorithm.
! .IP "\fB\-minline\-int\-divide\-max\-throughput\fR" 4
  .IX Item "-minline-int-divide-max-throughput"
  Generate code for inline divides of integer values
  using the maximum throughput algorithm.
! .IP "\fB\-mno\-inline\-int\-divide\fR" 4
  .IX Item "-mno-inline-int-divide"
  Do not generate inline code for divides of integer values.
! .IP "\fB\-minline\-sqrt\-min\-latency\fR" 4
  .IX Item "-minline-sqrt-min-latency"
  Generate code for inline square roots
  using the minimum latency algorithm.
! .IP "\fB\-minline\-sqrt\-max\-throughput\fR" 4
  .IX Item "-minline-sqrt-max-throughput"
  Generate code for inline square roots
  using the maximum throughput algorithm.
! .IP "\fB\-mno\-inline\-sqrt\fR" 4
  .IX Item "-mno-inline-sqrt"
  Do not generate inline code for \f(CW\*(C`sqrt\*(C'\fR.
! .IP "\fB\-mfused\-madd\fR" 4
  .IX Item "-mfused-madd"
  .PD 0
! .IP "\fB\-mno\-fused\-madd\fR" 4
  .IX Item "-mno-fused-madd"
  .PD
! Do (don't) generate code that uses the fused multiply/add or multiply/subtract
  instructions.  The default is to use these instructions.
! .IP "\fB\-mno\-dwarf2\-asm\fR" 4
  .IX Item "-mno-dwarf2-asm"
  .PD 0
! .IP "\fB\-mdwarf2\-asm\fR" 4
  .IX Item "-mdwarf2-asm"
  .PD
! Don't (or do) generate assembler code for the \s-1DWARF\s0 line number debugging
! info.  This may be useful when not using the \s-1GNU\s0 assembler.
! .IP "\fB\-mearly\-stop\-bits\fR" 4
  .IX Item "-mearly-stop-bits"
  .PD 0
! .IP "\fB\-mno\-early\-stop\-bits\fR" 4
  .IX Item "-mno-early-stop-bits"
  .PD
  Allow stop bits to be placed earlier than immediately preceding the
  instruction that triggered the stop bit.  This can improve instruction
  scheduling, but does not always do so.
! .IP "\fB\-mfixed\-range=\fR\fIregister-range\fR" 4
  .IX Item "-mfixed-range=register-range"
  Generate code treating the given register range as fixed registers.
  A fixed register is one that the register allocator cannot use.  This is
  useful when compiling kernel code.  A register range is specified as
  two registers separated by a dash.  Multiple register ranges can be
  specified separated by a comma.
! .IP "\fB\-mtls\-size=\fR\fItls-size\fR" 4
  .IX Item "-mtls-size=tls-size"
! Specify bit size of immediate \s-1TLS\s0 offsets.  Valid values are 14, 22, and
  64.
! .IP "\fB\-mtune=\fR\fIcpu-type\fR" 4
  .IX Item "-mtune=cpu-type"
! Tune the instruction scheduling for a particular \s-1CPU,\s0 Valid values are
  \&\fBitanium\fR, \fBitanium1\fR, \fBmerced\fR, \fBitanium2\fR,
  and \fBmckinley\fR.
! .IP "\fB\-milp32\fR" 4
  .IX Item "-milp32"
  .PD 0
! .IP "\fB\-mlp64\fR" 4
  .IX Item "-mlp64"
  .PD
  Generate code for a 32\-bit or 64\-bit environment.
  The 32\-bit environment sets int, long and pointer to 32 bits.
  The 64\-bit environment sets int to 32 bits and long and pointer
! to 64 bits.  These are HP-UX specific flags.
! .IP "\fB\-mno\-sched\-br\-data\-spec\fR" 4
  .IX Item "-mno-sched-br-data-spec"
  .PD 0
! .IP "\fB\-msched\-br\-data\-spec\fR" 4
  .IX Item "-msched-br-data-spec"
  .PD
  (Dis/En)able data speculative scheduling before reload.
  This results in generation of \f(CW\*(C`ld.a\*(C'\fR instructions and
  the corresponding check instructions (\f(CW\*(C`ld.c\*(C'\fR / \f(CW\*(C`chk.a\*(C'\fR).
  The default setting is disabled.
! .IP "\fB\-msched\-ar\-data\-spec\fR" 4
  .IX Item "-msched-ar-data-spec"
  .PD 0
! .IP "\fB\-mno\-sched\-ar\-data\-spec\fR" 4
  .IX Item "-mno-sched-ar-data-spec"
  .PD
  (En/Dis)able data speculative scheduling after reload.
  This results in generation of \f(CW\*(C`ld.a\*(C'\fR instructions and
  the corresponding check instructions (\f(CW\*(C`ld.c\*(C'\fR / \f(CW\*(C`chk.a\*(C'\fR).
  The default setting is enabled.
! .IP "\fB\-mno\-sched\-control\-spec\fR" 4
  .IX Item "-mno-sched-control-spec"
  .PD 0
! .IP "\fB\-msched\-control\-spec\fR" 4
  .IX Item "-msched-control-spec"
  .PD
  (Dis/En)able control speculative scheduling.  This feature is
--- 26627,26827 ----
  of the C library.  Thus, \fIextreme\fR care is needed in using this
  option.
  .Sp
! Library code that is intended to operate with more than one UNIX
  standard must test, set and restore the variable \f(CW\*(C`_\|_xpg4_extended_mask\*(C'\fR
! as appropriate.  Most GNU software doesn\*(Aqt provide this capability.
! .IP \fB\-nolibdld\fR 4
  .IX Item "-nolibdld"
  Suppress the generation of link options to search libdld.sl when the
! \&\fB\-static\fR option is specified on HP\-UX 10 and later.
! .IP \fB\-static\fR 4
  .IX Item "-static"
! The HP\-UX implementation of setlocale in libc has a dependency on
! libdld.sl.  There isn\*(Aqt an archive version of libdld.sl.  Thus,
  when the \fB\-static\fR option is specified, special link options
  are needed to resolve this dependency.
  .Sp
! On HP\-UX 10 and later, the GCC driver adds the necessary options to
  link with libdld.sl when the \fB\-static\fR option is specified.
  This causes the resulting binary to be dynamic.  On the 64\-bit port,
  the linkers generate dynamic binaries by default in any case.  The
! \&\fB\-nolibdld\fR option can be used to prevent the GCC driver from
  adding these link options.
! .IP \fB\-threads\fR 4
  .IX Item "-threads"
  Add support for multithreading with the \fIdce thread\fR library
! under HP\-UX.  This option sets flags for both the preprocessor and
  linker.
  .PP
! \fIIA\-64 Options\fR
  .IX Subsection "IA-64 Options"
  .PP
! These are the \fB\-m\fR options defined for the Intel IA\-64 architecture.
! .IP \fB\-mbig\-endian\fR 4
  .IX Item "-mbig-endian"
! Generate code for a big\-endian target.  This is the default for HP\-UX.
! .IP \fB\-mlittle\-endian\fR 4
  .IX Item "-mlittle-endian"
! Generate code for a little\-endian target.  This is the default for AIX5
  and GNU/Linux.
! .IP \fB\-mgnu\-as\fR 4
  .IX Item "-mgnu-as"
  .PD 0
! .IP \fB\-mno\-gnu\-as\fR 4
  .IX Item "-mno-gnu-as"
  .PD
! Generate (or don\*(Aqt) code for the GNU assembler.  This is the default.
! .IP \fB\-mgnu\-ld\fR 4
  .IX Item "-mgnu-ld"
  .PD 0
! .IP \fB\-mno\-gnu\-ld\fR 4
  .IX Item "-mno-gnu-ld"
  .PD
! Generate (or don\*(Aqt) code for the GNU linker.  This is the default.
! .IP \fB\-mno\-pic\fR 4
  .IX Item "-mno-pic"
  Generate code that does not use a global pointer register.  The result
! is not position independent code, and violates the IA\-64 ABI.
! .IP \fB\-mvolatile\-asm\-stop\fR 4
  .IX Item "-mvolatile-asm-stop"
  .PD 0
! .IP \fB\-mno\-volatile\-asm\-stop\fR 4
  .IX Item "-mno-volatile-asm-stop"
  .PD
! Generate (or don\*(Aqt) a stop bit immediately before and after volatile asm
  statements.
! .IP \fB\-mregister\-names\fR 4
  .IX Item "-mregister-names"
  .PD 0
! .IP \fB\-mno\-register\-names\fR 4
  .IX Item "-mno-register-names"
  .PD
! Generate (or don\*(Aqt) \fBin\fR, \fBloc\fR, and \fBout\fR register names for
  the stacked registers.  This may make assembler output more readable.
! .IP \fB\-mno\-sdata\fR 4
  .IX Item "-mno-sdata"
  .PD 0
! .IP \fB\-msdata\fR 4
  .IX Item "-msdata"
  .PD
  Disable (or enable) optimizations that use the small data section.  This may
  be useful for working around optimizer bugs.
! .IP \fB\-mconstant\-gp\fR 4
  .IX Item "-mconstant-gp"
  Generate code that uses a single constant global pointer value.  This is
  useful when compiling kernel code.
! .IP \fB\-mauto\-pic\fR 4
  .IX Item "-mauto-pic"
! Generate code that is self\-relocatable.  This implies \fB\-mconstant\-gp\fR.
  This is useful when compiling firmware code.
! .IP \fB\-minline\-float\-divide\-min\-latency\fR 4
  .IX Item "-minline-float-divide-min-latency"
! Generate code for inline divides of floating\-point values
  using the minimum latency algorithm.
! .IP \fB\-minline\-float\-divide\-max\-throughput\fR 4
  .IX Item "-minline-float-divide-max-throughput"
! Generate code for inline divides of floating\-point values
  using the maximum throughput algorithm.
! .IP \fB\-mno\-inline\-float\-divide\fR 4
  .IX Item "-mno-inline-float-divide"
! Do not generate inline code for divides of floating\-point values.
! .IP \fB\-minline\-int\-divide\-min\-latency\fR 4
  .IX Item "-minline-int-divide-min-latency"
  Generate code for inline divides of integer values
  using the minimum latency algorithm.
! .IP \fB\-minline\-int\-divide\-max\-throughput\fR 4
  .IX Item "-minline-int-divide-max-throughput"
  Generate code for inline divides of integer values
  using the maximum throughput algorithm.
! .IP \fB\-mno\-inline\-int\-divide\fR 4
  .IX Item "-mno-inline-int-divide"
  Do not generate inline code for divides of integer values.
! .IP \fB\-minline\-sqrt\-min\-latency\fR 4
  .IX Item "-minline-sqrt-min-latency"
  Generate code for inline square roots
  using the minimum latency algorithm.
! .IP \fB\-minline\-sqrt\-max\-throughput\fR 4
  .IX Item "-minline-sqrt-max-throughput"
  Generate code for inline square roots
  using the maximum throughput algorithm.
! .IP \fB\-mno\-inline\-sqrt\fR 4
  .IX Item "-mno-inline-sqrt"
  Do not generate inline code for \f(CW\*(C`sqrt\*(C'\fR.
! .IP \fB\-mfused\-madd\fR 4
  .IX Item "-mfused-madd"
  .PD 0
! .IP \fB\-mno\-fused\-madd\fR 4
  .IX Item "-mno-fused-madd"
  .PD
! Do (don\*(Aqt) generate code that uses the fused multiply/add or multiply/subtract
  instructions.  The default is to use these instructions.
! .IP \fB\-mno\-dwarf2\-asm\fR 4
  .IX Item "-mno-dwarf2-asm"
  .PD 0
! .IP \fB\-mdwarf2\-asm\fR 4
  .IX Item "-mdwarf2-asm"
  .PD
! Don\*(Aqt (or do) generate assembler code for the DWARF line number debugging
! info.  This may be useful when not using the GNU assembler.
! .IP \fB\-mearly\-stop\-bits\fR 4
  .IX Item "-mearly-stop-bits"
  .PD 0
! .IP \fB\-mno\-early\-stop\-bits\fR 4
  .IX Item "-mno-early-stop-bits"
  .PD
  Allow stop bits to be placed earlier than immediately preceding the
  instruction that triggered the stop bit.  This can improve instruction
  scheduling, but does not always do so.
! .IP \fB\-mfixed\-range=\fR\fIregister\-range\fR 4
  .IX Item "-mfixed-range=register-range"
  Generate code treating the given register range as fixed registers.
  A fixed register is one that the register allocator cannot use.  This is
  useful when compiling kernel code.  A register range is specified as
  two registers separated by a dash.  Multiple register ranges can be
  specified separated by a comma.
! .IP \fB\-mtls\-size=\fR\fItls\-size\fR 4
  .IX Item "-mtls-size=tls-size"
! Specify bit size of immediate TLS offsets.  Valid values are 14, 22, and
  64.
! .IP \fB\-mtune=\fR\fIcpu\-type\fR 4
  .IX Item "-mtune=cpu-type"
! Tune the instruction scheduling for a particular CPU, Valid values are
  \&\fBitanium\fR, \fBitanium1\fR, \fBmerced\fR, \fBitanium2\fR,
  and \fBmckinley\fR.
! .IP \fB\-milp32\fR 4
  .IX Item "-milp32"
  .PD 0
! .IP \fB\-mlp64\fR 4
  .IX Item "-mlp64"
  .PD
  Generate code for a 32\-bit or 64\-bit environment.
  The 32\-bit environment sets int, long and pointer to 32 bits.
  The 64\-bit environment sets int to 32 bits and long and pointer
! to 64 bits.  These are HP\-UX specific flags.
! .IP \fB\-mno\-sched\-br\-data\-spec\fR 4
  .IX Item "-mno-sched-br-data-spec"
  .PD 0
! .IP \fB\-msched\-br\-data\-spec\fR 4
  .IX Item "-msched-br-data-spec"
  .PD
  (Dis/En)able data speculative scheduling before reload.
  This results in generation of \f(CW\*(C`ld.a\*(C'\fR instructions and
  the corresponding check instructions (\f(CW\*(C`ld.c\*(C'\fR / \f(CW\*(C`chk.a\*(C'\fR).
  The default setting is disabled.
! .IP \fB\-msched\-ar\-data\-spec\fR 4
  .IX Item "-msched-ar-data-spec"
  .PD 0
! .IP \fB\-mno\-sched\-ar\-data\-spec\fR 4
  .IX Item "-mno-sched-ar-data-spec"
  .PD
  (En/Dis)able data speculative scheduling after reload.
  This results in generation of \f(CW\*(C`ld.a\*(C'\fR instructions and
  the corresponding check instructions (\f(CW\*(C`ld.c\*(C'\fR / \f(CW\*(C`chk.a\*(C'\fR).
  The default setting is enabled.
! .IP \fB\-mno\-sched\-control\-spec\fR 4
  .IX Item "-mno-sched-control-spec"
  .PD 0
! .IP \fB\-msched\-control\-spec\fR 4
  .IX Item "-msched-control-spec"
  .PD
  (Dis/En)able control speculative scheduling.  This feature is
*************** available only during region scheduling
*** 26894,27216 ****
  This results in generation of the \f(CW\*(C`ld.s\*(C'\fR instructions and
  the corresponding check instructions \f(CW\*(C`chk.s\*(C'\fR.
  The default setting is disabled.
! .IP "\fB\-msched\-br\-in\-data\-spec\fR" 4
  .IX Item "-msched-br-in-data-spec"
  .PD 0
! .IP "\fB\-mno\-sched\-br\-in\-data\-spec\fR" 4
  .IX Item "-mno-sched-br-in-data-spec"
  .PD
  (En/Dis)able speculative scheduling of the instructions that
  are dependent on the data speculative loads before reload.
  This is effective only with \fB\-msched\-br\-data\-spec\fR enabled.
  The default setting is enabled.
! .IP "\fB\-msched\-ar\-in\-data\-spec\fR" 4
  .IX Item "-msched-ar-in-data-spec"
  .PD 0
! .IP "\fB\-mno\-sched\-ar\-in\-data\-spec\fR" 4
  .IX Item "-mno-sched-ar-in-data-spec"
  .PD
  (En/Dis)able speculative scheduling of the instructions that
  are dependent on the data speculative loads after reload.
  This is effective only with \fB\-msched\-ar\-data\-spec\fR enabled.
  The default setting is enabled.
! .IP "\fB\-msched\-in\-control\-spec\fR" 4
  .IX Item "-msched-in-control-spec"
  .PD 0
! .IP "\fB\-mno\-sched\-in\-control\-spec\fR" 4
  .IX Item "-mno-sched-in-control-spec"
  .PD
  (En/Dis)able speculative scheduling of the instructions that
  are dependent on the control speculative loads.
  This is effective only with \fB\-msched\-control\-spec\fR enabled.
  The default setting is enabled.
! .IP "\fB\-mno\-sched\-prefer\-non\-data\-spec\-insns\fR" 4
  .IX Item "-mno-sched-prefer-non-data-spec-insns"
  .PD 0
! .IP "\fB\-msched\-prefer\-non\-data\-spec\-insns\fR" 4
  .IX Item "-msched-prefer-non-data-spec-insns"
  .PD
! If enabled, data-speculative instructions are chosen for schedule
  only if there are no other choices at the moment.  This makes
  the use of the data speculation much more conservative.
  The default setting is disabled.
! .IP "\fB\-mno\-sched\-prefer\-non\-control\-spec\-insns\fR" 4
  .IX Item "-mno-sched-prefer-non-control-spec-insns"
  .PD 0
! .IP "\fB\-msched\-prefer\-non\-control\-spec\-insns\fR" 4
  .IX Item "-msched-prefer-non-control-spec-insns"
  .PD
! If enabled, control-speculative instructions are chosen for schedule
  only if there are no other choices at the moment.  This makes
  the use of the control speculation much more conservative.
  The default setting is disabled.
! .IP "\fB\-mno\-sched\-count\-spec\-in\-critical\-path\fR" 4
  .IX Item "-mno-sched-count-spec-in-critical-path"
  .PD 0
! .IP "\fB\-msched\-count\-spec\-in\-critical\-path\fR" 4
  .IX Item "-msched-count-spec-in-critical-path"
  .PD
  If enabled, speculative dependencies are considered during
  computation of the instructions priorities.  This makes the use of the
  speculation a bit more conservative.
  The default setting is disabled.
! .IP "\fB\-msched\-spec\-ldc\fR" 4
  .IX Item "-msched-spec-ldc"
  Use a simple data speculation check.  This option is on by default.
! .IP "\fB\-msched\-control\-spec\-ldc\fR" 4
  .IX Item "-msched-control-spec-ldc"
  Use a simple check for control speculation.  This option is on by default.
! .IP "\fB\-msched\-stop\-bits\-after\-every\-cycle\fR" 4
  .IX Item "-msched-stop-bits-after-every-cycle"
  Place a stop bit after every cycle when scheduling.  This option is on
  by default.
! .IP "\fB\-msched\-fp\-mem\-deps\-zero\-cost\fR" 4
  .IX Item "-msched-fp-mem-deps-zero-cost"
! Assume that floating-point stores and loads are not likely to cause a conflict
  when placed into the same instruction group.  This option is disabled by
  default.
! .IP "\fB\-msel\-sched\-dont\-check\-control\-spec\fR" 4
  .IX Item "-msel-sched-dont-check-control-spec"
  Generate checks for control speculation in selective scheduling.
  This flag is disabled by default.
! .IP "\fB\-msched\-max\-memory\-insns=\fR\fImax-insns\fR" 4
  .IX Item "-msched-max-memory-insns=max-insns"
  Limit on the number of memory insns per instruction group, giving lower
  priority to subsequent memory insns attempting to schedule in the same
  instruction group. Frequently useful to prevent cache bank conflicts.
  The default value is 1.
! .IP "\fB\-msched\-max\-memory\-insns\-hard\-limit\fR" 4
  .IX Item "-msched-max-memory-insns-hard-limit"
! Makes the limit specified by \fBmsched-max-memory-insns\fR a hard limit,
  disallowing more than that number in an instruction group.
! Otherwise, the limit is \*(L"soft\*(R", meaning that non-memory operations
  are preferred when the limit is reached, but memory operations may still
  be scheduled.
  .PP
! \fI\s-1LM32\s0 Options\fR
  .IX Subsection "LM32 Options"
  .PP
  These \fB\-m\fR options are defined for the LatticeMico32 architecture:
! .IP "\fB\-mbarrel\-shift\-enabled\fR" 4
  .IX Item "-mbarrel-shift-enabled"
! Enable barrel-shift instructions.
! .IP "\fB\-mdivide\-enabled\fR" 4
  .IX Item "-mdivide-enabled"
  Enable divide and modulus instructions.
! .IP "\fB\-mmultiply\-enabled\fR" 4
  .IX Item "-mmultiply-enabled"
  Enable multiply instructions.
! .IP "\fB\-msign\-extend\-enabled\fR" 4
  .IX Item "-msign-extend-enabled"
  Enable sign extend instructions.
! .IP "\fB\-muser\-enabled\fR" 4
  .IX Item "-muser-enabled"
! Enable user-defined instructions.
  .PP
  \fILoongArch Options\fR
  .IX Subsection "LoongArch Options"
  .PP
! These command-line options are defined for LoongArch targets:
! .IP "\fB\-march=\fR\fIarch-type\fR" 4
  .IX Item "-march=arch-type"
! Generate instructions for the machine type \fIarch-type\fR.
! \&\fB\-march=\fR\fIarch-type\fR allows \s-1GCC\s0 to generate code that
  may not run at all on processors other than the one indicated.
  .Sp
! The choices for \fIarch-type\fR are:
  .RS 4
! .IP "\fBnative\fR" 4
  .IX Item "native"
  Local processor type detected by the native compiler.
! .IP "\fBloongarch64\fR" 4
  .IX Item "loongarch64"
  Generic LoongArch 64\-bit processor.
! .IP "\fBla464\fR" 4
  .IX Item "la464"
! LoongArch LA464\-based processor with \s-1LSX, LASX.\s0
! .IP "\fBla664\fR" 4
  .IX Item "la664"
! LoongArch LA664\-based processor with \s-1LSX, LASX\s0
  and all LoongArch v1.1 instructions.
! .IP "\fBla64v1.0\fR" 4
  .IX Item "la64v1.0"
! LoongArch64 \s-1ISA\s0 version 1.0.
! .IP "\fBla64v1.1\fR" 4
  .IX Item "la64v1.1"
! LoongArch64 \s-1ISA\s0 version 1.1.
  .RE
  .RS 4
  .Sp
! More information about LoongArch \s-1ISA\s0 versions can be found at
  <\fBhttps://github.com/loongson/la\-toolchain\-conventions\fR>.
  .RE
! .IP "\fB\-mtune=\fR\fItune-type\fR" 4
  .IX Item "-mtune=tune-type"
  Optimize the generated code for the given processor target.
  .Sp
! The choices for \fItune-type\fR are:
  .RS 4
! .IP "\fBnative\fR" 4
  .IX Item "native"
  Local processor type detected by the native compiler.
! .IP "\fBgeneric\fR" 4
  .IX Item "generic"
  Generic LoongArch processor.
! .IP "\fBloongarch64\fR" 4
  .IX Item "loongarch64"
  Generic LoongArch 64\-bit processor.
! .IP "\fBla464\fR" 4
  .IX Item "la464"
! LoongArch \s-1LA464\s0 core.
! .IP "\fBla664\fR" 4
  .IX Item "la664"
! LoongArch \s-1LA664\s0 core.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mabi=\fR\fIbase-abi-type\fR" 4
  .IX Item "-mabi=base-abi-type"
  Generate code for the specified calling convention.
! \&\fIbase-abi-type\fR can be one of:
  .RS 4
! .IP "\fBlp64d\fR" 4
  .IX Item "lp64d"
! Uses 64\-bit general purpose registers and 32/64\-bit floating-point
! registers for parameter passing.  Data model is \s-1LP64,\s0 where \fBint\fR
  is 32 bits, while \fBlong int\fR and pointers are 64 bits.
! .IP "\fBlp64f\fR" 4
  .IX Item "lp64f"
! Uses 64\-bit general purpose registers and 32\-bit floating-point
! registers for parameter passing.  Data model is \s-1LP64,\s0 where \fBint\fR
  is 32 bits, while \fBlong int\fR and pointers are 64 bits.
! .IP "\fBlp64s\fR" 4
  .IX Item "lp64s"
! Uses 64\-bit general purpose registers and no floating-point
! registers for parameter passing.  Data model is \s-1LP64,\s0 where \fBint\fR
  is 32 bits, while \fBlong int\fR and pointers are 64 bits.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mfpu=\fR\fIfpu-type\fR" 4
  .IX Item "-mfpu=fpu-type"
! Generate code for the specified \s-1FPU\s0 type, which can be one of:
  .RS 4
! .IP "\fB64\fR" 4
  .IX Item "64"
! Allow the use of hardware floating-point instructions for 32\-bit
  and 64\-bit operations.
! .IP "\fB32\fR" 4
  .IX Item "32"
! Allow the use of hardware floating-point instructions for 32\-bit
  operations.
! .IP "\fBnone\fR" 4
  .IX Item "none"
  .PD 0
! .IP "\fB0\fR" 4
  .IX Item "0"
  .PD
! Prevent the use of hardware floating-point instructions.
  .RE
  .RS 4
  .RE
! .IP "\fB\-msimd=\fR\fIsimd-type\fR" 4
  .IX Item "-msimd=simd-type"
! Enable generation of LoongArch \s-1SIMD\s0 instructions for vectorization
  and via builtin functions.  The value can be one of:
  .RS 4
! .IP "\fBlasx\fR" 4
  .IX Item "lasx"
  Enable generating instructions from the 256\-bit LoongArch Advanced
! \&\s-1SIMD\s0 Extension (\s-1LASX\s0) and the 128\-bit LoongArch \s-1SIMD\s0 Extension (\s-1LSX\s0).
! .IP "\fBlsx\fR" 4
  .IX Item "lsx"
! Enable generating instructions from the 128\-bit LoongArch \s-1SIMD\s0
! Extension (\s-1LSX\s0).
! .IP "\fBnone\fR" 4
  .IX Item "none"
! No LoongArch \s-1SIMD\s0 instruction may be generated.
  .RE
  .RS 4
  .RE
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
! Force \fB\-mfpu=none\fR and prevents the use of floating-point
  registers for parameter passing.  This option may change the target
! \&\s-1ABI.\s0
! .IP "\fB\-msingle\-float\fR" 4
  .IX Item "-msingle-float"
! Force \fB\-mfpu=32\fR and allow the use of 32\-bit floating-point
  registers for parameter passing.  This option may change the target
! \&\s-1ABI.\s0
! .IP "\fB\-mdouble\-float\fR" 4
  .IX Item "-mdouble-float"
! Force \fB\-mfpu=64\fR and allow the use of 32/64\-bit floating-point
  registers for parameter passing.  This option may change the target
! \&\s-1ABI.\s0
! .IP "\fB\-mlasx\fR" 4
  .IX Item "-mlasx"
  .PD 0
! .IP "\fB\-mno\-lasx\fR" 4
  .IX Item "-mno-lasx"
! .IP "\fB\-mlsx\fR" 4
  .IX Item "-mlsx"
! .IP "\fB\-mno\-lsx\fR" 4
  .IX Item "-mno-lsx"
  .PD
! Incrementally adjust the scope of the \s-1SIMD\s0 extensions (none / \s-1LSX / LASX\s0)
! that can be used by the compiler for code generation.  Enabling \s-1LASX\s0 with
! \&\fBmlasx\fR automatically enables \s-1LSX,\s0 and diabling \s-1LSX\s0 with \fBmno-lsx\fR
! automatically disables \s-1LASX.\s0  These driver-only options act upon the final
  \&\fBmsimd\fR configuration state and make incremental changes in the order
! they appear on the \s-1GCC\s0 driver's command line, deriving the final / canonicalized
  \&\fBmsimd\fR option that is passed to the compiler proper.
! .IP "\fB\-mbranch\-cost=\fR\fIn\fR" 4
  .IX Item "-mbranch-cost=n"
  Set the cost of branches to roughly \fIn\fR instructions.
! .IP "\fB\-maddr\-reg\-reg\-cost=\fR\fIn\fR" 4
  .IX Item "-maddr-reg-reg-cost=n"
! Set the cost of \s-1ADDRESS_REG_REG\s0 to the value calculated by \fIn\fR.
! .IP "\fB\-mcheck\-zero\-division\fR" 4
  .IX Item "-mcheck-zero-division"
  .PD 0
! .IP "\fB\-mno\-check\-zero\-divison\fR" 4
  .IX Item "-mno-check-zero-divison"
  .PD
  Trap (do not trap) on integer division by zero.  The default is
  \&\fB\-mcheck\-zero\-division\fR for \fB\-O0\fR or \fB\-Og\fR, and
  \&\fB\-mno\-check\-zero\-division\fR for other optimization levels.
! .IP "\fB\-mcond\-move\-int\fR" 4
  .IX Item "-mcond-move-int"
  .PD 0
! .IP "\fB\-mno\-cond\-move\-int\fR" 4
  .IX Item "-mno-cond-move-int"
  .PD
! Conditional moves for integral data in general-purpose registers
  are enabled (disabled).  The default is \fB\-mcond\-move\-int\fR.
! .IP "\fB\-mcond\-move\-float\fR" 4
  .IX Item "-mcond-move-float"
  .PD 0
! .IP "\fB\-mno\-cond\-move\-float\fR" 4
  .IX Item "-mno-cond-move-float"
  .PD
! Conditional moves for floating-point registers are enabled (disabled).
  The default is \fB\-mcond\-move\-float\fR.
! .IP "\fB\-mmemcpy\fR" 4
  .IX Item "-mmemcpy"
  .PD 0
! .IP "\fB\-mno\-memcpy\fR" 4
  .IX Item "-mno-memcpy"
  .PD
! Force (do not force) the use of \f(CW\*(C`memcpy\*(C'\fR for non-trivial block moves.
! The default is \fB\-mno\-memcpy\fR, which allows \s-1GCC\s0 to inline most
! constant-sized copies.  Setting optimization level to \fB\-Os\fR also
  forces the use of \f(CW\*(C`memcpy\*(C'\fR, but \fB\-mno\-memcpy\fR may override this
  behavior if explicitly specified, regardless of the order these options on
  the command line.
! .IP "\fB\-mstrict\-align\fR" 4
  .IX Item "-mstrict-align"
  .PD 0
! .IP "\fB\-mno\-strict\-align\fR" 4
  .IX Item "-mno-strict-align"
  .PD
  Avoid or allow generating memory accesses that may not be aligned on a natural
--- 26829,27151 ----
  This results in generation of the \f(CW\*(C`ld.s\*(C'\fR instructions and
  the corresponding check instructions \f(CW\*(C`chk.s\*(C'\fR.
  The default setting is disabled.
! .IP \fB\-msched\-br\-in\-data\-spec\fR 4
  .IX Item "-msched-br-in-data-spec"
  .PD 0
! .IP \fB\-mno\-sched\-br\-in\-data\-spec\fR 4
  .IX Item "-mno-sched-br-in-data-spec"
  .PD
  (En/Dis)able speculative scheduling of the instructions that
  are dependent on the data speculative loads before reload.
  This is effective only with \fB\-msched\-br\-data\-spec\fR enabled.
  The default setting is enabled.
! .IP \fB\-msched\-ar\-in\-data\-spec\fR 4
  .IX Item "-msched-ar-in-data-spec"
  .PD 0
! .IP \fB\-mno\-sched\-ar\-in\-data\-spec\fR 4
  .IX Item "-mno-sched-ar-in-data-spec"
  .PD
  (En/Dis)able speculative scheduling of the instructions that
  are dependent on the data speculative loads after reload.
  This is effective only with \fB\-msched\-ar\-data\-spec\fR enabled.
  The default setting is enabled.
! .IP \fB\-msched\-in\-control\-spec\fR 4
  .IX Item "-msched-in-control-spec"
  .PD 0
! .IP \fB\-mno\-sched\-in\-control\-spec\fR 4
  .IX Item "-mno-sched-in-control-spec"
  .PD
  (En/Dis)able speculative scheduling of the instructions that
  are dependent on the control speculative loads.
  This is effective only with \fB\-msched\-control\-spec\fR enabled.
  The default setting is enabled.
! .IP \fB\-mno\-sched\-prefer\-non\-data\-spec\-insns\fR 4
  .IX Item "-mno-sched-prefer-non-data-spec-insns"
  .PD 0
! .IP \fB\-msched\-prefer\-non\-data\-spec\-insns\fR 4
  .IX Item "-msched-prefer-non-data-spec-insns"
  .PD
! If enabled, data\-speculative instructions are chosen for schedule
  only if there are no other choices at the moment.  This makes
  the use of the data speculation much more conservative.
  The default setting is disabled.
! .IP \fB\-mno\-sched\-prefer\-non\-control\-spec\-insns\fR 4
  .IX Item "-mno-sched-prefer-non-control-spec-insns"
  .PD 0
! .IP \fB\-msched\-prefer\-non\-control\-spec\-insns\fR 4
  .IX Item "-msched-prefer-non-control-spec-insns"
  .PD
! If enabled, control\-speculative instructions are chosen for schedule
  only if there are no other choices at the moment.  This makes
  the use of the control speculation much more conservative.
  The default setting is disabled.
! .IP \fB\-mno\-sched\-count\-spec\-in\-critical\-path\fR 4
  .IX Item "-mno-sched-count-spec-in-critical-path"
  .PD 0
! .IP \fB\-msched\-count\-spec\-in\-critical\-path\fR 4
  .IX Item "-msched-count-spec-in-critical-path"
  .PD
  If enabled, speculative dependencies are considered during
  computation of the instructions priorities.  This makes the use of the
  speculation a bit more conservative.
  The default setting is disabled.
! .IP \fB\-msched\-spec\-ldc\fR 4
  .IX Item "-msched-spec-ldc"
  Use a simple data speculation check.  This option is on by default.
! .IP \fB\-msched\-control\-spec\-ldc\fR 4
  .IX Item "-msched-control-spec-ldc"
  Use a simple check for control speculation.  This option is on by default.
! .IP \fB\-msched\-stop\-bits\-after\-every\-cycle\fR 4
  .IX Item "-msched-stop-bits-after-every-cycle"
  Place a stop bit after every cycle when scheduling.  This option is on
  by default.
! .IP \fB\-msched\-fp\-mem\-deps\-zero\-cost\fR 4
  .IX Item "-msched-fp-mem-deps-zero-cost"
! Assume that floating\-point stores and loads are not likely to cause a conflict
  when placed into the same instruction group.  This option is disabled by
  default.
! .IP \fB\-msel\-sched\-dont\-check\-control\-spec\fR 4
  .IX Item "-msel-sched-dont-check-control-spec"
  Generate checks for control speculation in selective scheduling.
  This flag is disabled by default.
! .IP \fB\-msched\-max\-memory\-insns=\fR\fImax\-insns\fR 4
  .IX Item "-msched-max-memory-insns=max-insns"
  Limit on the number of memory insns per instruction group, giving lower
  priority to subsequent memory insns attempting to schedule in the same
  instruction group. Frequently useful to prevent cache bank conflicts.
  The default value is 1.
! .IP \fB\-msched\-max\-memory\-insns\-hard\-limit\fR 4
  .IX Item "-msched-max-memory-insns-hard-limit"
! Makes the limit specified by \fBmsched\-max\-memory\-insns\fR a hard limit,
  disallowing more than that number in an instruction group.
! Otherwise, the limit is "soft", meaning that non\-memory operations
  are preferred when the limit is reached, but memory operations may still
  be scheduled.
  .PP
! \fILM32 Options\fR
  .IX Subsection "LM32 Options"
  .PP
  These \fB\-m\fR options are defined for the LatticeMico32 architecture:
! .IP \fB\-mbarrel\-shift\-enabled\fR 4
  .IX Item "-mbarrel-shift-enabled"
! Enable barrel\-shift instructions.
! .IP \fB\-mdivide\-enabled\fR 4
  .IX Item "-mdivide-enabled"
  Enable divide and modulus instructions.
! .IP \fB\-mmultiply\-enabled\fR 4
  .IX Item "-mmultiply-enabled"
  Enable multiply instructions.
! .IP \fB\-msign\-extend\-enabled\fR 4
  .IX Item "-msign-extend-enabled"
  Enable sign extend instructions.
! .IP \fB\-muser\-enabled\fR 4
  .IX Item "-muser-enabled"
! Enable user\-defined instructions.
  .PP
  \fILoongArch Options\fR
  .IX Subsection "LoongArch Options"
  .PP
! These command\-line options are defined for LoongArch targets:
! .IP \fB\-march=\fR\fIarch\-type\fR 4
  .IX Item "-march=arch-type"
! Generate instructions for the machine type \fIarch\-type\fR.
! \&\fB\-march=\fR\fIarch\-type\fR allows GCC to generate code that
  may not run at all on processors other than the one indicated.
  .Sp
! The choices for \fIarch\-type\fR are:
  .RS 4
! .IP \fBnative\fR 4
  .IX Item "native"
  Local processor type detected by the native compiler.
! .IP \fBloongarch64\fR 4
  .IX Item "loongarch64"
  Generic LoongArch 64\-bit processor.
! .IP \fBla464\fR 4
  .IX Item "la464"
! LoongArch LA464\-based processor with LSX, LASX.
! .IP \fBla664\fR 4
  .IX Item "la664"
! LoongArch LA664\-based processor with LSX, LASX
  and all LoongArch v1.1 instructions.
! .IP \fBla64v1.0\fR 4
  .IX Item "la64v1.0"
! LoongArch64 ISA version 1.0.
! .IP \fBla64v1.1\fR 4
  .IX Item "la64v1.1"
! LoongArch64 ISA version 1.1.
  .RE
  .RS 4
  .Sp
! More information about LoongArch ISA versions can be found at
  <\fBhttps://github.com/loongson/la\-toolchain\-conventions\fR>.
  .RE
! .IP \fB\-mtune=\fR\fItune\-type\fR 4
  .IX Item "-mtune=tune-type"
  Optimize the generated code for the given processor target.
  .Sp
! The choices for \fItune\-type\fR are:
  .RS 4
! .IP \fBnative\fR 4
  .IX Item "native"
  Local processor type detected by the native compiler.
! .IP \fBgeneric\fR 4
  .IX Item "generic"
  Generic LoongArch processor.
! .IP \fBloongarch64\fR 4
  .IX Item "loongarch64"
  Generic LoongArch 64\-bit processor.
! .IP \fBla464\fR 4
  .IX Item "la464"
! LoongArch LA464 core.
! .IP \fBla664\fR 4
  .IX Item "la664"
! LoongArch LA664 core.
  .RE
  .RS 4
  .RE
! .IP \fB\-mabi=\fR\fIbase\-abi\-type\fR 4
  .IX Item "-mabi=base-abi-type"
  Generate code for the specified calling convention.
! \&\fIbase\-abi\-type\fR can be one of:
  .RS 4
! .IP \fBlp64d\fR 4
  .IX Item "lp64d"
! Uses 64\-bit general purpose registers and 32/64\-bit floating\-point
! registers for parameter passing.  Data model is LP64, where \fBint\fR
  is 32 bits, while \fBlong int\fR and pointers are 64 bits.
! .IP \fBlp64f\fR 4
  .IX Item "lp64f"
! Uses 64\-bit general purpose registers and 32\-bit floating\-point
! registers for parameter passing.  Data model is LP64, where \fBint\fR
  is 32 bits, while \fBlong int\fR and pointers are 64 bits.
! .IP \fBlp64s\fR 4
  .IX Item "lp64s"
! Uses 64\-bit general purpose registers and no floating\-point
! registers for parameter passing.  Data model is LP64, where \fBint\fR
  is 32 bits, while \fBlong int\fR and pointers are 64 bits.
  .RE
  .RS 4
  .RE
! .IP \fB\-mfpu=\fR\fIfpu\-type\fR 4
  .IX Item "-mfpu=fpu-type"
! Generate code for the specified FPU type, which can be one of:
  .RS 4
! .IP \fB64\fR 4
  .IX Item "64"
! Allow the use of hardware floating\-point instructions for 32\-bit
  and 64\-bit operations.
! .IP \fB32\fR 4
  .IX Item "32"
! Allow the use of hardware floating\-point instructions for 32\-bit
  operations.
! .IP \fBnone\fR 4
  .IX Item "none"
  .PD 0
! .IP \fB0\fR 4
  .IX Item "0"
  .PD
! Prevent the use of hardware floating\-point instructions.
  .RE
  .RS 4
  .RE
! .IP \fB\-msimd=\fR\fIsimd\-type\fR 4
  .IX Item "-msimd=simd-type"
! Enable generation of LoongArch SIMD instructions for vectorization
  and via builtin functions.  The value can be one of:
  .RS 4
! .IP \fBlasx\fR 4
  .IX Item "lasx"
  Enable generating instructions from the 256\-bit LoongArch Advanced
! SIMD Extension (LASX) and the 128\-bit LoongArch SIMD Extension (LSX).
! .IP \fBlsx\fR 4
  .IX Item "lsx"
! Enable generating instructions from the 128\-bit LoongArch SIMD
! Extension (LSX).
! .IP \fBnone\fR 4
  .IX Item "none"
! No LoongArch SIMD instruction may be generated.
  .RE
  .RS 4
  .RE
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
! Force \fB\-mfpu=none\fR and prevents the use of floating\-point
  registers for parameter passing.  This option may change the target
! ABI.
! .IP \fB\-msingle\-float\fR 4
  .IX Item "-msingle-float"
! Force \fB\-mfpu=32\fR and allow the use of 32\-bit floating\-point
  registers for parameter passing.  This option may change the target
! ABI.
! .IP \fB\-mdouble\-float\fR 4
  .IX Item "-mdouble-float"
! Force \fB\-mfpu=64\fR and allow the use of 32/64\-bit floating\-point
  registers for parameter passing.  This option may change the target
! ABI.
! .IP \fB\-mlasx\fR 4
  .IX Item "-mlasx"
  .PD 0
! .IP \fB\-mno\-lasx\fR 4
  .IX Item "-mno-lasx"
! .IP \fB\-mlsx\fR 4
  .IX Item "-mlsx"
! .IP \fB\-mno\-lsx\fR 4
  .IX Item "-mno-lsx"
  .PD
! Incrementally adjust the scope of the SIMD extensions (none / LSX / LASX)
! that can be used by the compiler for code generation.  Enabling LASX with
! \&\fBmlasx\fR automatically enables LSX, and diabling LSX with \fBmno\-lsx\fR
! automatically disables LASX.  These driver\-only options act upon the final
  \&\fBmsimd\fR configuration state and make incremental changes in the order
! they appear on the GCC driver\*(Aqs command line, deriving the final / canonicalized
  \&\fBmsimd\fR option that is passed to the compiler proper.
! .IP \fB\-mbranch\-cost=\fR\fIn\fR 4
  .IX Item "-mbranch-cost=n"
  Set the cost of branches to roughly \fIn\fR instructions.
! .IP \fB\-maddr\-reg\-reg\-cost=\fR\fIn\fR 4
  .IX Item "-maddr-reg-reg-cost=n"
! Set the cost of ADDRESS_REG_REG to the value calculated by \fIn\fR.
! .IP \fB\-mcheck\-zero\-division\fR 4
  .IX Item "-mcheck-zero-division"
  .PD 0
! .IP \fB\-mno\-check\-zero\-divison\fR 4
  .IX Item "-mno-check-zero-divison"
  .PD
  Trap (do not trap) on integer division by zero.  The default is
  \&\fB\-mcheck\-zero\-division\fR for \fB\-O0\fR or \fB\-Og\fR, and
  \&\fB\-mno\-check\-zero\-division\fR for other optimization levels.
! .IP \fB\-mcond\-move\-int\fR 4
  .IX Item "-mcond-move-int"
  .PD 0
! .IP \fB\-mno\-cond\-move\-int\fR 4
  .IX Item "-mno-cond-move-int"
  .PD
! Conditional moves for integral data in general\-purpose registers
  are enabled (disabled).  The default is \fB\-mcond\-move\-int\fR.
! .IP \fB\-mcond\-move\-float\fR 4
  .IX Item "-mcond-move-float"
  .PD 0
! .IP \fB\-mno\-cond\-move\-float\fR 4
  .IX Item "-mno-cond-move-float"
  .PD
! Conditional moves for floating\-point registers are enabled (disabled).
  The default is \fB\-mcond\-move\-float\fR.
! .IP \fB\-mmemcpy\fR 4
  .IX Item "-mmemcpy"
  .PD 0
! .IP \fB\-mno\-memcpy\fR 4
  .IX Item "-mno-memcpy"
  .PD
! Force (do not force) the use of \f(CW\*(C`memcpy\*(C'\fR for non\-trivial block moves.
! The default is \fB\-mno\-memcpy\fR, which allows GCC to inline most
! constant\-sized copies.  Setting optimization level to \fB\-Os\fR also
  forces the use of \f(CW\*(C`memcpy\*(C'\fR, but \fB\-mno\-memcpy\fR may override this
  behavior if explicitly specified, regardless of the order these options on
  the command line.
! .IP \fB\-mstrict\-align\fR 4
  .IX Item "-mstrict-align"
  .PD 0
! .IP \fB\-mno\-strict\-align\fR 4
  .IX Item "-mno-strict-align"
  .PD
  Avoid or allow generating memory accesses that may not be aligned on a natural
*************** object boundary as described in the arch
*** 27220,27250 ****
  .IX Item "-G num"
  Put global and static data smaller than \fInum\fR bytes into a small data
  section.  The default value is 0.
! .IP "\fB\-mmax\-inline\-memcpy\-size=\fR\fIn\fR" 4
  .IX Item "-mmax-inline-memcpy-size=n"
  Inline all block moves (such as calls to \f(CW\*(C`memcpy\*(C'\fR or structure copies)
  less than or equal to \fIn\fR bytes.  The default value of \fIn\fR is 1024.
! .IP "\fB\-mcmodel=\fR\fIcode-model\fR" 4
  .IX Item "-mcmodel=code-model"
  Set the code model to one of:
  .RS 4
! .IP "\fBtiny-static (Not implemented yet)\fR" 4
  .IX Item "tiny-static (Not implemented yet)"
  .PD 0
  .IP "\fBtiny (Not implemented yet)\fR" 4
  .IX Item "tiny (Not implemented yet)"
! .IP "\fBnormal\fR" 4
  .IX Item "normal"
  .PD
  The text segment must be within 128MB addressing space.  The data segment must
  be within 2GB addressing space.
! .IP "\fBmedium\fR" 4
  .IX Item "medium"
  The text segment and data segment must be within 2GB addressing space.
  .IP "\fBlarge (Not implemented yet)\fR" 4
  .IX Item "large (Not implemented yet)"
  .PD 0
! .IP "\fBextreme\fR" 4
  .IX Item "extreme"
  .PD
  This mode does not limit the size of the code segment and data segment.
--- 27155,27185 ----
  .IX Item "-G num"
  Put global and static data smaller than \fInum\fR bytes into a small data
  section.  The default value is 0.
! .IP \fB\-mmax\-inline\-memcpy\-size=\fR\fIn\fR 4
  .IX Item "-mmax-inline-memcpy-size=n"
  Inline all block moves (such as calls to \f(CW\*(C`memcpy\*(C'\fR or structure copies)
  less than or equal to \fIn\fR bytes.  The default value of \fIn\fR is 1024.
! .IP \fB\-mcmodel=\fR\fIcode\-model\fR 4
  .IX Item "-mcmodel=code-model"
  Set the code model to one of:
  .RS 4
! .IP "\fBtiny\-static (Not implemented yet)\fR" 4
  .IX Item "tiny-static (Not implemented yet)"
  .PD 0
  .IP "\fBtiny (Not implemented yet)\fR" 4
  .IX Item "tiny (Not implemented yet)"
! .IP \fBnormal\fR 4
  .IX Item "normal"
  .PD
  The text segment must be within 128MB addressing space.  The data segment must
  be within 2GB addressing space.
! .IP \fBmedium\fR 4
  .IX Item "medium"
  The text segment and data segment must be within 2GB addressing space.
  .IP "\fBlarge (Not implemented yet)\fR" 4
  .IX Item "large (Not implemented yet)"
  .PD 0
! .IP \fBextreme\fR 4
  .IX Item "extreme"
  .PD
  This mode does not limit the size of the code segment and data segment.
*************** and/or \fB\-mexplicit\-relocs=none\fR.
*** 27255,27261 ****
  .Sp
  The default code model is \f(CW\*(C`normal\*(C'\fR.
  .RE
! .IP "\fB\-mexplicit\-relocs=\fR\fIstyle\fR" 4
  .IX Item "-mexplicit-relocs=style"
  Set when to use assembler relocation operators when dealing with symbolic
  addresses.  The alternative is to use assembler macros instead, which may
--- 27190,27196 ----
  .Sp
  The default code model is \f(CW\*(C`normal\*(C'\fR.
  .RE
! .IP \fB\-mexplicit\-relocs=\fR\fIstyle\fR 4
  .IX Item "-mexplicit-relocs=style"
  Set when to use assembler relocation operators when dealing with symbolic
  addresses.  The alternative is to use assembler macros instead, which may
*************** are always used, with \fB\-mexplicit\-re
*** 27266,27373 ****
  use the relocation operators where the linker relaxation is impossible to
  improve the code quality, and macros elsewhere.  The default
  value for the option is determined with the assembler capability detected
! during \s-1GCC\s0 build-time and the setting of \fB\-mrelax\fR:
  \&\fB\-mexplicit\-relocs=none\fR if the assembler does not support
  relocation operators at all,
  \&\fB\-mexplicit\-relocs=always\fR if the assembler supports relocation
  operators but \fB\-mrelax\fR is not enabled,
  \&\fB\-mexplicit\-relocs=auto\fR if the assembler supports relocation
  operators and \fB\-mrelax\fR is enabled.
! .IP "\fB\-mexplicit\-relocs\fR" 4
  .IX Item "-mexplicit-relocs"
  An alias of \fB\-mexplicit\-relocs=always\fR for backward compatibility.
! .IP "\fB\-mno\-explicit\-relocs\fR" 4
  .IX Item "-mno-explicit-relocs"
  An alias of \fB\-mexplicit\-relocs=none\fR for backward compatibility.
! .IP "\fB\-mdirect\-extern\-access\fR" 4
  .IX Item "-mdirect-extern-access"
  .PD 0
! .IP "\fB\-mno\-direct\-extern\-access\fR" 4
  .IX Item "-mno-direct-extern-access"
  .PD
! Do not use or use \s-1GOT\s0 to access external symbols.  The default is
! \&\fB\-mno\-direct\-extern\-access\fR: \s-1GOT\s0 is used for external symbols with
  default visibility, but not used for other external symbols.
  .Sp
! With \fB\-mdirect\-extern\-access\fR, \s-1GOT\s0 is not used and all external
! symbols are PC-relatively addressed.  It is \fBonly\fR suitable for
! environments where no dynamic link is performed, like firmwares, \s-1OS\s0
  kernels, executables linked with \fB\-static\fR or \fB\-static\-pie\fR.
  \&\fB\-mdirect\-extern\-access\fR is not compatible with \fB\-fPIC\fR or
  \&\fB\-fpic\fR.
! .IP "\fB\-mrelax\fR" 4
  .IX Item "-mrelax"
  .PD 0
! .IP "\fB\-mno\-relax\fR" 4
  .IX Item "-mno-relax"
  .PD
  Take (do not take) advantage of linker relaxations.  If
  \&\fB\-mpass\-mrelax\-to\-as\fR is enabled, this option is also passed to
! the assembler.  The default is determined during \s-1GCC\s0 build-time by
  detecting corresponding assembler support:
  \&\fB\-mrelax\fR if the assembler supports both the \fB\-mrelax\fR
! option and the conditional branch relaxation (it's required or the
  \&\f(CW\*(C`.align\*(C'\fR directives and conditional branch instructions in the
! assembly code outputted by \s-1GCC\s0 may be rejected by the assembler because
  of a relocation overflow), \fB\-mno\-relax\fR otherwise.
! .IP "\fB\-mpass\-mrelax\-to\-as\fR" 4
  .IX Item "-mpass-mrelax-to-as"
  .PD 0
! .IP "\fB\-mno\-pass\-mrelax\-to\-as\fR" 4
  .IX Item "-mno-pass-mrelax-to-as"
  .PD
  Pass (do not pass) the \fB\-mrelax\fR or \fB\-mno\-relax\fR option
! to the assembler.  The default is determined during \s-1GCC\s0 build-time by
  detecting corresponding assembler support:
  \&\fB\-mpass\-mrelax\-to\-as\fR if the assembler supports the
  \&\fB\-mrelax\fR option, \fB\-mno\-pass\-mrelax\-to\-as\fR otherwise.
  This option is mostly useful for debugging, or interoperation with
! assemblers different from the build-time one.
! .IP "\fB\-mrecip\fR" 4
  .IX Item "-mrecip"
  This option enables use of the reciprocal estimate and reciprocal square
! root estimate instructions with additional Newton-Raphson steps to increase
  precision instead of doing a divide or square root and divide for
! floating-point arguments.
  These instructions are generated only when \fB\-funsafe\-math\-optimizations\fR
  is enabled together with \fB\-ffinite\-math\-only\fR and
  \&\fB\-fno\-trapping\-math\fR.
  This option is off by default. Before you can use this option, you must sure the
! target \s-1CPU\s0 supports frecipe and frsqrte instructions.
  Note that while the throughput of the sequence is higher than the throughput of
! the non-reciprocal instruction, the precision of the sequence can be decreased
  by up to 2 ulp (i.e. the inverse of 1.0 equals 0.99999994).
! .IP "\fB\-mrecip=\fR\fIopt\fR" 4
  .IX Item "-mrecip=opt"
  This option controls which reciprocal estimate instructions
! may be used.  \fIopt\fR is a comma-separated list of options, which may
  be preceded by a \fB!\fR to invert the option:
  .RS 4
! .IP "\fBall\fR" 4
  .IX Item "all"
  Enable all estimate instructions.
! .IP "\fBdefault\fR" 4
  .IX Item "default"
  Enable the default instructions, equivalent to \fB\-mrecip\fR.
! .IP "\fBnone\fR" 4
  .IX Item "none"
  Disable all estimate instructions, equivalent to \fB\-mno\-recip\fR.
! .IP "\fBdiv\fR" 4
  .IX Item "div"
  Enable the approximation for scalar division.
! .IP "\fBvec-div\fR" 4
  .IX Item "vec-div"
  Enable the approximation for vectorized division.
! .IP "\fBsqrt\fR" 4
  .IX Item "sqrt"
  Enable the approximation for scalar square root.
! .IP "\fBvec-sqrt\fR" 4
  .IX Item "vec-sqrt"
  Enable the approximation for vectorized square root.
! .IP "\fBrsqrt\fR" 4
  .IX Item "rsqrt"
  Enable the approximation for scalar reciprocal square root.
! .IP "\fBvec-rsqrt\fR" 4
  .IX Item "vec-rsqrt"
  Enable the approximation for vectorized reciprocal square root.
  .RE
--- 27201,27308 ----
  use the relocation operators where the linker relaxation is impossible to
  improve the code quality, and macros elsewhere.  The default
  value for the option is determined with the assembler capability detected
! during GCC build\-time and the setting of \fB\-mrelax\fR:
  \&\fB\-mexplicit\-relocs=none\fR if the assembler does not support
  relocation operators at all,
  \&\fB\-mexplicit\-relocs=always\fR if the assembler supports relocation
  operators but \fB\-mrelax\fR is not enabled,
  \&\fB\-mexplicit\-relocs=auto\fR if the assembler supports relocation
  operators and \fB\-mrelax\fR is enabled.
! .IP \fB\-mexplicit\-relocs\fR 4
  .IX Item "-mexplicit-relocs"
  An alias of \fB\-mexplicit\-relocs=always\fR for backward compatibility.
! .IP \fB\-mno\-explicit\-relocs\fR 4
  .IX Item "-mno-explicit-relocs"
  An alias of \fB\-mexplicit\-relocs=none\fR for backward compatibility.
! .IP \fB\-mdirect\-extern\-access\fR 4
  .IX Item "-mdirect-extern-access"
  .PD 0
! .IP \fB\-mno\-direct\-extern\-access\fR 4
  .IX Item "-mno-direct-extern-access"
  .PD
! Do not use or use GOT to access external symbols.  The default is
! \&\fB\-mno\-direct\-extern\-access\fR: GOT is used for external symbols with
  default visibility, but not used for other external symbols.
  .Sp
! With \fB\-mdirect\-extern\-access\fR, GOT is not used and all external
! symbols are PC\-relatively addressed.  It is \fBonly\fR suitable for
! environments where no dynamic link is performed, like firmwares, OS
  kernels, executables linked with \fB\-static\fR or \fB\-static\-pie\fR.
  \&\fB\-mdirect\-extern\-access\fR is not compatible with \fB\-fPIC\fR or
  \&\fB\-fpic\fR.
! .IP \fB\-mrelax\fR 4
  .IX Item "-mrelax"
  .PD 0
! .IP \fB\-mno\-relax\fR 4
  .IX Item "-mno-relax"
  .PD
  Take (do not take) advantage of linker relaxations.  If
  \&\fB\-mpass\-mrelax\-to\-as\fR is enabled, this option is also passed to
! the assembler.  The default is determined during GCC build\-time by
  detecting corresponding assembler support:
  \&\fB\-mrelax\fR if the assembler supports both the \fB\-mrelax\fR
! option and the conditional branch relaxation (it\*(Aqs required or the
  \&\f(CW\*(C`.align\*(C'\fR directives and conditional branch instructions in the
! assembly code outputted by GCC may be rejected by the assembler because
  of a relocation overflow), \fB\-mno\-relax\fR otherwise.
! .IP \fB\-mpass\-mrelax\-to\-as\fR 4
  .IX Item "-mpass-mrelax-to-as"
  .PD 0
! .IP \fB\-mno\-pass\-mrelax\-to\-as\fR 4
  .IX Item "-mno-pass-mrelax-to-as"
  .PD
  Pass (do not pass) the \fB\-mrelax\fR or \fB\-mno\-relax\fR option
! to the assembler.  The default is determined during GCC build\-time by
  detecting corresponding assembler support:
  \&\fB\-mpass\-mrelax\-to\-as\fR if the assembler supports the
  \&\fB\-mrelax\fR option, \fB\-mno\-pass\-mrelax\-to\-as\fR otherwise.
  This option is mostly useful for debugging, or interoperation with
! assemblers different from the build\-time one.
! .IP \fB\-mrecip\fR 4
  .IX Item "-mrecip"
  This option enables use of the reciprocal estimate and reciprocal square
! root estimate instructions with additional Newton\-Raphson steps to increase
  precision instead of doing a divide or square root and divide for
! floating\-point arguments.
  These instructions are generated only when \fB\-funsafe\-math\-optimizations\fR
  is enabled together with \fB\-ffinite\-math\-only\fR and
  \&\fB\-fno\-trapping\-math\fR.
  This option is off by default. Before you can use this option, you must sure the
! target CPU supports frecipe and frsqrte instructions.
  Note that while the throughput of the sequence is higher than the throughput of
! the non\-reciprocal instruction, the precision of the sequence can be decreased
  by up to 2 ulp (i.e. the inverse of 1.0 equals 0.99999994).
! .IP \fB\-mrecip=\fR\fIopt\fR 4
  .IX Item "-mrecip=opt"
  This option controls which reciprocal estimate instructions
! may be used.  \fIopt\fR is a comma\-separated list of options, which may
  be preceded by a \fB!\fR to invert the option:
  .RS 4
! .IP \fBall\fR 4
  .IX Item "all"
  Enable all estimate instructions.
! .IP \fBdefault\fR 4
  .IX Item "default"
  Enable the default instructions, equivalent to \fB\-mrecip\fR.
! .IP \fBnone\fR 4
  .IX Item "none"
  Disable all estimate instructions, equivalent to \fB\-mno\-recip\fR.
! .IP \fBdiv\fR 4
  .IX Item "div"
  Enable the approximation for scalar division.
! .IP \fBvec\-div\fR 4
  .IX Item "vec-div"
  Enable the approximation for vectorized division.
! .IP \fBsqrt\fR 4
  .IX Item "sqrt"
  Enable the approximation for scalar square root.
! .IP \fBvec\-sqrt\fR 4
  .IX Item "vec-sqrt"
  Enable the approximation for vectorized square root.
! .IP \fBrsqrt\fR 4
  .IX Item "rsqrt"
  Enable the approximation for scalar reciprocal square root.
! .IP \fBvec\-rsqrt\fR 4
  .IX Item "vec-rsqrt"
  Enable the approximation for vectorized reciprocal square root.
  .RE
*************** Enable the approximation for vectorized
*** 27376,27444 ****
  So, for example, \fB\-mrecip=all,!sqrt\fR enables
  all of the reciprocal approximations, except for scalar square root.
  .RE
! .IP "\fB\-mfrecipe\fR" 4
  .IX Item "-mfrecipe"
  .PD 0
! .IP "\fB\-mno\-frecipe\fR" 4
  .IX Item "-mno-frecipe"
  .PD
  Use (do not use) \f(CW\*(C`frecipe.{s/d}\*(C'\fR and \f(CW\*(C`frsqrte.{s/d}\*(C'\fR
  instructions.  When build with \fB\-march=la664\fR, it is enabled by default.
  The default is \fB\-mno\-frecipe\fR.
! .IP "\fB\-mdiv32\fR" 4
  .IX Item "-mdiv32"
  .PD 0
! .IP "\fB\-mno\-div32\fR" 4
  .IX Item "-mno-div32"
  .PD
  Use (do not use) \f(CW\*(C`div.w[u]\*(C'\fR and \f(CW\*(C`mod.w[u]\*(C'\fR instructions with input
! not sign-extended.  When build with \fB\-march=la664\fR, it is enabled by
  default.  The default is \fB\-mno\-div32\fR.
! .IP "\fB\-mlam\-bh\fR" 4
  .IX Item "-mlam-bh"
  .PD 0
! .IP "\fB\-mno\-lam\-bh\fR" 4
  .IX Item "-mno-lam-bh"
  .PD
  Use (do not use) \f(CW\*(C`am{swap/add}[_db].{b/h}\*(C'\fR instructions.  When build
  with \fB\-march=la664\fR, it is enabled by default.  The default is
  \&\fB\-mno\-lam\-bh\fR.
! .IP "\fB\-mlamcas\fR" 4
  .IX Item "-mlamcas"
  .PD 0
! .IP "\fB\-mno\-lamcas\fR" 4
  .IX Item "-mno-lamcas"
  .PD
  Use (do not use) \f(CW\*(C`amcas[_db].{b/h/w/d}\*(C'\fR instructions.  When build with
  \&\fB\-march=la664\fR, it is enabled by default.  The default is
  \&\fB\-mno\-lamcas\fR.
! .IP "\fB\-mld\-seq\-sa\fR" 4
  .IX Item "-mld-seq-sa"
  .PD 0
! .IP "\fB\-mno\-ld\-seq\-sa\fR" 4
  .IX Item "-mno-ld-seq-sa"
  .PD
! Whether a same-address load-load barrier (\f(CW\*(C`dbar 0x700\*(C'\fR) is needed.  When
  build with \fB\-march=la664\fR, it is enabled by default.  The default is
! \&\fB\-mno\-ld\-seq\-sa\fR, the load-load barrier is needed.
! .IP "\fB\-mtls\-dialect=\fR\fIopt\fR" 4
  .IX Item "-mtls-dialect=opt"
  This option controls which tls dialect may be used for general dynamic and
! local dynamic \s-1TLS\s0 models.
  .RS 4
! .IP "\fBtrad\fR" 4
  .IX Item "trad"
! Use traditional \s-1TLS.\s0 This is the default.
! .IP "\fBdesc\fR" 4
  .IX Item "desc"
! Use \s-1TLS\s0 descriptors.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mannotate\-tablejump\fR" 4
  .IX Item "-mannotate-tablejump"
  .PD 0
! .IP "\fB\-mno\-annotate\-tablejump\fR" 4
  .IX Item "-mno-annotate-tablejump"
  .PD
  Create an annotation section \f(CW\*(C`.discard.tablejump_annotate\*(C'\fR to
--- 27311,27379 ----
  So, for example, \fB\-mrecip=all,!sqrt\fR enables
  all of the reciprocal approximations, except for scalar square root.
  .RE
! .IP \fB\-mfrecipe\fR 4
  .IX Item "-mfrecipe"
  .PD 0
! .IP \fB\-mno\-frecipe\fR 4
  .IX Item "-mno-frecipe"
  .PD
  Use (do not use) \f(CW\*(C`frecipe.{s/d}\*(C'\fR and \f(CW\*(C`frsqrte.{s/d}\*(C'\fR
  instructions.  When build with \fB\-march=la664\fR, it is enabled by default.
  The default is \fB\-mno\-frecipe\fR.
! .IP \fB\-mdiv32\fR 4
  .IX Item "-mdiv32"
  .PD 0
! .IP \fB\-mno\-div32\fR 4
  .IX Item "-mno-div32"
  .PD
  Use (do not use) \f(CW\*(C`div.w[u]\*(C'\fR and \f(CW\*(C`mod.w[u]\*(C'\fR instructions with input
! not sign\-extended.  When build with \fB\-march=la664\fR, it is enabled by
  default.  The default is \fB\-mno\-div32\fR.
! .IP \fB\-mlam\-bh\fR 4
  .IX Item "-mlam-bh"
  .PD 0
! .IP \fB\-mno\-lam\-bh\fR 4
  .IX Item "-mno-lam-bh"
  .PD
  Use (do not use) \f(CW\*(C`am{swap/add}[_db].{b/h}\*(C'\fR instructions.  When build
  with \fB\-march=la664\fR, it is enabled by default.  The default is
  \&\fB\-mno\-lam\-bh\fR.
! .IP \fB\-mlamcas\fR 4
  .IX Item "-mlamcas"
  .PD 0
! .IP \fB\-mno\-lamcas\fR 4
  .IX Item "-mno-lamcas"
  .PD
  Use (do not use) \f(CW\*(C`amcas[_db].{b/h/w/d}\*(C'\fR instructions.  When build with
  \&\fB\-march=la664\fR, it is enabled by default.  The default is
  \&\fB\-mno\-lamcas\fR.
! .IP \fB\-mld\-seq\-sa\fR 4
  .IX Item "-mld-seq-sa"
  .PD 0
! .IP \fB\-mno\-ld\-seq\-sa\fR 4
  .IX Item "-mno-ld-seq-sa"
  .PD
! Whether a same\-address load\-load barrier (\f(CW\*(C`dbar 0x700\*(C'\fR) is needed.  When
  build with \fB\-march=la664\fR, it is enabled by default.  The default is
! \&\fB\-mno\-ld\-seq\-sa\fR, the load\-load barrier is needed.
! .IP \fB\-mtls\-dialect=\fR\fIopt\fR 4
  .IX Item "-mtls-dialect=opt"
  This option controls which tls dialect may be used for general dynamic and
! local dynamic TLS models.
  .RS 4
! .IP \fBtrad\fR 4
  .IX Item "trad"
! Use traditional TLS. This is the default.
! .IP \fBdesc\fR 4
  .IX Item "desc"
! Use TLS descriptors.
  .RE
  .RS 4
  .RE
! .IP \fB\-mannotate\-tablejump\fR 4
  .IX Item "-mannotate-tablejump"
  .PD 0
! .IP \fB\-mno\-annotate\-tablejump\fR 4
  .IX Item "-mno-annotate-tablejump"
  .PD
  Create an annotation section \f(CW\*(C`.discard.tablejump_annotate\*(C'\fR to
*************** need the annotation to analysis the cont
*** 27451,27498 ****
  .IX Item "--param loongarch-vect-unroll-limit=n"
  The vectorizer will use available tuning information to determine whether it
  would be beneficial to unroll the main vectorized loop and by how much.  This
! parameter set's the upper bound of how much the vectorizer will unroll the main
  loop.  The default value is six.
  .PP
  \fIM32C Options\fR
  .IX Subsection "M32C Options"
! .IP "\fB\-mcpu=\fR\fIname\fR" 4
  .IX Item "-mcpu=name"
! Select the \s-1CPU\s0 for which code is generated.  \fIname\fR may be one of
  \&\fBr8c\fR for the R8C/Tiny series, \fBm16c\fR for the M16C (up to
  /60) series, \fBm32cm\fR for the M16C/80 series, or \fBm32c\fR for
  the M32C/80 series.
! .IP "\fB\-msim\fR" 4
  .IX Item "-msim"
  Specifies that the program will be run on the simulator.  This causes
  an alternate runtime library to be linked in which supports, for
  example, file I/O.  You must not use this option when generating
  programs that will run on real hardware; you must provide your own
  runtime library for whatever I/O functions are needed.
! .IP "\fB\-memregs=\fR\fInumber\fR" 4
  .IX Item "-memregs=number"
! Specifies the number of memory-based pseudo-registers \s-1GCC\s0 uses
! during code generation.  These pseudo-registers are used like real
! registers, so there is a tradeoff between \s-1GCC\s0's ability to fit the
  code into available registers, and the performance penalty of using
  memory instead of registers.  Note that all modules in a program must
  be compiled with the same value for this option.  Because of that, you
! must not use this option with \s-1GCC\s0's default runtime libraries.
  .PP
  \fIM32R/D Options\fR
  .IX Subsection "M32R/D Options"
  .PP
  These \fB\-m\fR options are defined for Renesas M32R/D architectures:
! .IP "\fB\-m32r2\fR" 4
  .IX Item "-m32r2"
  Generate code for the M32R/2.
! .IP "\fB\-m32rx\fR" 4
  .IX Item "-m32rx"
  Generate code for the M32R/X.
! .IP "\fB\-m32r\fR" 4
  .IX Item "-m32r"
  Generate code for the M32R.  This is the default.
! .IP "\fB\-mmodel=small\fR" 4
  .IX Item "-mmodel=small"
  Assume all objects live in the lower 16MB of memory (so that their addresses
  can be loaded with the \f(CW\*(C`ld24\*(C'\fR instruction), and assume all subroutines
--- 27386,27433 ----
  .IX Item "--param loongarch-vect-unroll-limit=n"
  The vectorizer will use available tuning information to determine whether it
  would be beneficial to unroll the main vectorized loop and by how much.  This
! parameter set\*(Aqs the upper bound of how much the vectorizer will unroll the main
  loop.  The default value is six.
  .PP
  \fIM32C Options\fR
  .IX Subsection "M32C Options"
! .IP \fB\-mcpu=\fR\fIname\fR 4
  .IX Item "-mcpu=name"
! Select the CPU for which code is generated.  \fIname\fR may be one of
  \&\fBr8c\fR for the R8C/Tiny series, \fBm16c\fR for the M16C (up to
  /60) series, \fBm32cm\fR for the M16C/80 series, or \fBm32c\fR for
  the M32C/80 series.
! .IP \fB\-msim\fR 4
  .IX Item "-msim"
  Specifies that the program will be run on the simulator.  This causes
  an alternate runtime library to be linked in which supports, for
  example, file I/O.  You must not use this option when generating
  programs that will run on real hardware; you must provide your own
  runtime library for whatever I/O functions are needed.
! .IP \fB\-memregs=\fR\fInumber\fR 4
  .IX Item "-memregs=number"
! Specifies the number of memory\-based pseudo\-registers GCC uses
! during code generation.  These pseudo\-registers are used like real
! registers, so there is a tradeoff between GCC\*(Aqs ability to fit the
  code into available registers, and the performance penalty of using
  memory instead of registers.  Note that all modules in a program must
  be compiled with the same value for this option.  Because of that, you
! must not use this option with GCC\*(Aqs default runtime libraries.
  .PP
  \fIM32R/D Options\fR
  .IX Subsection "M32R/D Options"
  .PP
  These \fB\-m\fR options are defined for Renesas M32R/D architectures:
! .IP \fB\-m32r2\fR 4
  .IX Item "-m32r2"
  Generate code for the M32R/2.
! .IP \fB\-m32rx\fR 4
  .IX Item "-m32rx"
  Generate code for the M32R/X.
! .IP \fB\-m32r\fR 4
  .IX Item "-m32r"
  Generate code for the M32R.  This is the default.
! .IP \fB\-mmodel=small\fR 4
  .IX Item "-mmodel=small"
  Assume all objects live in the lower 16MB of memory (so that their addresses
  can be loaded with the \f(CW\*(C`ld24\*(C'\fR instruction), and assume all subroutines
*************** This is the default.
*** 27501,27519 ****
  .Sp
  The addressability of a particular object can be set with the
  \&\f(CW\*(C`model\*(C'\fR attribute.
! .IP "\fB\-mmodel=medium\fR" 4
  .IX Item "-mmodel=medium"
  Assume objects may be anywhere in the 32\-bit address space (the compiler
  generates \f(CW\*(C`seth/add3\*(C'\fR instructions to load their addresses), and
  assume all subroutines are reachable with the \f(CW\*(C`bl\*(C'\fR instruction.
! .IP "\fB\-mmodel=large\fR" 4
  .IX Item "-mmodel=large"
  Assume objects may be anywhere in the 32\-bit address space (the compiler
  generates \f(CW\*(C`seth/add3\*(C'\fR instructions to load their addresses), and
  assume subroutines may not be reachable with the \f(CW\*(C`bl\*(C'\fR instruction
  (the compiler generates the much slower \f(CW\*(C`seth/add3/jl\*(C'\fR
  instruction sequence).
! .IP "\fB\-msdata=none\fR" 4
  .IX Item "-msdata=none"
  Disable use of the small data area.  Variables are put into
  one of \f(CW\*(C`.data\*(C'\fR, \f(CW\*(C`.bss\*(C'\fR, or \f(CW\*(C`.rodata\*(C'\fR (unless the
--- 27436,27454 ----
  .Sp
  The addressability of a particular object can be set with the
  \&\f(CW\*(C`model\*(C'\fR attribute.
! .IP \fB\-mmodel=medium\fR 4
  .IX Item "-mmodel=medium"
  Assume objects may be anywhere in the 32\-bit address space (the compiler
  generates \f(CW\*(C`seth/add3\*(C'\fR instructions to load their addresses), and
  assume all subroutines are reachable with the \f(CW\*(C`bl\*(C'\fR instruction.
! .IP \fB\-mmodel=large\fR 4
  .IX Item "-mmodel=large"
  Assume objects may be anywhere in the 32\-bit address space (the compiler
  generates \f(CW\*(C`seth/add3\*(C'\fR instructions to load their addresses), and
  assume subroutines may not be reachable with the \f(CW\*(C`bl\*(C'\fR instruction
  (the compiler generates the much slower \f(CW\*(C`seth/add3/jl\*(C'\fR
  instruction sequence).
! .IP \fB\-msdata=none\fR 4
  .IX Item "-msdata=none"
  Disable use of the small data area.  Variables are put into
  one of \f(CW\*(C`.data\*(C'\fR, \f(CW\*(C`.bss\*(C'\fR, or \f(CW\*(C`.rodata\*(C'\fR (unless the
*************** This is the default.
*** 27523,27581 ****
  The small data area consists of sections \f(CW\*(C`.sdata\*(C'\fR and \f(CW\*(C`.sbss\*(C'\fR.
  Objects may be explicitly put in the small data area with the
  \&\f(CW\*(C`section\*(C'\fR attribute using one of these sections.
! .IP "\fB\-msdata=sdata\fR" 4
  .IX Item "-msdata=sdata"
  Put small global and static data in the small data area, but do not
  generate special code to reference them.
! .IP "\fB\-msdata=use\fR" 4
  .IX Item "-msdata=use"
  Put small global and static data in the small data area, and generate
  special instructions to reference them.
  .IP "\fB\-G\fR \fInum\fR" 4
  .IX Item "-G num"
  Put global and static objects less than or equal to \fInum\fR bytes
! into the small data or \s-1BSS\s0 sections instead of the normal data or \s-1BSS\s0
  sections.  The default value of \fInum\fR is 8.
  The \fB\-msdata\fR option must be set to one of \fBsdata\fR or \fBuse\fR
  for this option to have any effect.
  .Sp
  All modules should be compiled with the same \fB\-G\fR \fInum\fR value.
  Compiling with different values of \fInum\fR may or may not work; if it
! doesn't the linker gives an error message\-\-\-incorrect code is not
  generated.
! .IP "\fB\-mdebug\fR" 4
  .IX Item "-mdebug"
  Makes the M32R\-specific code in the compiler display some statistics
  that might help in debugging programs.
! .IP "\fB\-malign\-loops\fR" 4
  .IX Item "-malign-loops"
  Align all loops to a 32\-byte boundary.
! .IP "\fB\-mno\-align\-loops\fR" 4
  .IX Item "-mno-align-loops"
  Do not enforce a 32\-byte alignment for loops.  This is the default.
! .IP "\fB\-missue\-rate=\fR\fInumber\fR" 4
  .IX Item "-missue-rate=number"
  Issue \fInumber\fR instructions per cycle.  \fInumber\fR can only be 1
  or 2.
! .IP "\fB\-mbranch\-cost=\fR\fInumber\fR" 4
  .IX Item "-mbranch-cost=number"
  \&\fInumber\fR can only be 1 or 2.  If it is 1 then branches are
  preferred over conditional code, if it is 2, then the opposite applies.
! .IP "\fB\-mflush\-trap=\fR\fInumber\fR" 4
  .IX Item "-mflush-trap=number"
  Specifies the trap number to use to flush the cache.  The default is
  12.  Valid numbers are between 0 and 15 inclusive.
! .IP "\fB\-mno\-flush\-trap\fR" 4
  .IX Item "-mno-flush-trap"
  Specifies that the cache cannot be flushed by using a trap.
! .IP "\fB\-mflush\-func=\fR\fIname\fR" 4
  .IX Item "-mflush-func=name"
  Specifies the name of the operating system function to call to flush
  the cache.  The default is \fB_flush_cache\fR, but a function call
  is only used if a trap is not available.
! .IP "\fB\-mno\-flush\-func\fR" 4
  .IX Item "-mno-flush-func"
! Indicates that there is no \s-1OS\s0 function for flushing the cache.
  .PP
  \fIM680x0 Options\fR
  .IX Subsection "M680x0 Options"
--- 27458,27516 ----
  The small data area consists of sections \f(CW\*(C`.sdata\*(C'\fR and \f(CW\*(C`.sbss\*(C'\fR.
  Objects may be explicitly put in the small data area with the
  \&\f(CW\*(C`section\*(C'\fR attribute using one of these sections.
! .IP \fB\-msdata=sdata\fR 4
  .IX Item "-msdata=sdata"
  Put small global and static data in the small data area, but do not
  generate special code to reference them.
! .IP \fB\-msdata=use\fR 4
  .IX Item "-msdata=use"
  Put small global and static data in the small data area, and generate
  special instructions to reference them.
  .IP "\fB\-G\fR \fInum\fR" 4
  .IX Item "-G num"
  Put global and static objects less than or equal to \fInum\fR bytes
! into the small data or BSS sections instead of the normal data or BSS
  sections.  The default value of \fInum\fR is 8.
  The \fB\-msdata\fR option must be set to one of \fBsdata\fR or \fBuse\fR
  for this option to have any effect.
  .Sp
  All modules should be compiled with the same \fB\-G\fR \fInum\fR value.
  Compiling with different values of \fInum\fR may or may not work; if it
! doesn\*(Aqt the linker gives an error message\-\-\-incorrect code is not
  generated.
! .IP \fB\-mdebug\fR 4
  .IX Item "-mdebug"
  Makes the M32R\-specific code in the compiler display some statistics
  that might help in debugging programs.
! .IP \fB\-malign\-loops\fR 4
  .IX Item "-malign-loops"
  Align all loops to a 32\-byte boundary.
! .IP \fB\-mno\-align\-loops\fR 4
  .IX Item "-mno-align-loops"
  Do not enforce a 32\-byte alignment for loops.  This is the default.
! .IP \fB\-missue\-rate=\fR\fInumber\fR 4
  .IX Item "-missue-rate=number"
  Issue \fInumber\fR instructions per cycle.  \fInumber\fR can only be 1
  or 2.
! .IP \fB\-mbranch\-cost=\fR\fInumber\fR 4
  .IX Item "-mbranch-cost=number"
  \&\fInumber\fR can only be 1 or 2.  If it is 1 then branches are
  preferred over conditional code, if it is 2, then the opposite applies.
! .IP \fB\-mflush\-trap=\fR\fInumber\fR 4
  .IX Item "-mflush-trap=number"
  Specifies the trap number to use to flush the cache.  The default is
  12.  Valid numbers are between 0 and 15 inclusive.
! .IP \fB\-mno\-flush\-trap\fR 4
  .IX Item "-mno-flush-trap"
  Specifies that the cache cannot be flushed by using a trap.
! .IP \fB\-mflush\-func=\fR\fIname\fR 4
  .IX Item "-mflush-func=name"
  Specifies the name of the operating system function to call to flush
  the cache.  The default is \fB_flush_cache\fR, but a function call
  is only used if a trap is not available.
! .IP \fB\-mno\-flush\-func\fR 4
  .IX Item "-mno-flush-func"
! Indicates that there is no OS function for flushing the cache.
  .PP
  \fIM680x0 Options\fR
  .IX Subsection "M680x0 Options"
*************** These are the \fB\-m\fR options defined
*** 27584,27607 ****
  The default settings depend on which architecture was selected when
  the compiler was configured; the defaults for the most common choices
  are given below.
! .IP "\fB\-march=\fR\fIarch\fR" 4
  .IX Item "-march=arch"
  Generate code for a specific M680x0 or ColdFire instruction set
  architecture.  Permissible values of \fIarch\fR for M680x0
  architectures are: \fB68000\fR, \fB68010\fR, \fB68020\fR,
  \&\fB68030\fR, \fB68040\fR, \fB68060\fR and \fBcpu32\fR.  ColdFire
! architectures are selected according to Freescale's \s-1ISA\s0 classification
  and the permissible values are: \fBisaa\fR, \fBisaaplus\fR,
  \&\fBisab\fR and \fBisac\fR.
  .Sp
! \&\s-1GCC\s0 defines a macro \f(CW\*(C`_\|_mcf\f(CIarch\f(CW_\|_\*(C'\fR whenever it is generating
  code for a ColdFire target.  The \fIarch\fR in this macro is one of the
  \&\fB\-march\fR arguments given above.
  .Sp
  When used together, \fB\-march\fR and \fB\-mtune\fR select code
  that runs on a family of similar processors but that is optimized
  for a particular microarchitecture.
! .IP "\fB\-mcpu=\fR\fIcpu\fR" 4
  .IX Item "-mcpu=cpu"
  Generate code for a specific M680x0 or ColdFire processor.
  The M680x0 \fIcpu\fRs are: \fB68000\fR, \fB68010\fR, \fB68020\fR,
--- 27519,27542 ----
  The default settings depend on which architecture was selected when
  the compiler was configured; the defaults for the most common choices
  are given below.
! .IP \fB\-march=\fR\fIarch\fR 4
  .IX Item "-march=arch"
  Generate code for a specific M680x0 or ColdFire instruction set
  architecture.  Permissible values of \fIarch\fR for M680x0
  architectures are: \fB68000\fR, \fB68010\fR, \fB68020\fR,
  \&\fB68030\fR, \fB68040\fR, \fB68060\fR and \fBcpu32\fR.  ColdFire
! architectures are selected according to Freescale\*(Aqs ISA classification
  and the permissible values are: \fBisaa\fR, \fBisaaplus\fR,
  \&\fBisab\fR and \fBisac\fR.
  .Sp
! GCC defines a macro \f(CW\*(C`_\|_mcf\fR\f(CIarch\fR\f(CW_\|_\*(C'\fR whenever it is generating
  code for a ColdFire target.  The \fIarch\fR in this macro is one of the
  \&\fB\-march\fR arguments given above.
  .Sp
  When used together, \fB\-march\fR and \fB\-mtune\fR select code
  that runs on a family of similar processors but that is optimized
  for a particular microarchitecture.
! .IP \fB\-mcpu=\fR\fIcpu\fR 4
  .IX Item "-mcpu=cpu"
  Generate code for a specific M680x0 or ColdFire processor.
  The M680x0 \fIcpu\fRs are: \fB68000\fR, \fB68010\fR, \fB68020\fR,
*************** below, which also classifies the CPUs in
*** 27658,27676 ****
  .IX Item "5407 : 5407"
  .IP "\fB5475\fR : \fB5470\fR \fB5471\fR \fB5472\fR \fB5473\fR \fB5474\fR \fB5475\fR \fB547x\fR \fB5480\fR \fB5481\fR \fB5482\fR \fB5483\fR \fB5484\fR \fB5485\fR" 4
  .IX Item "5475 : 5470 5471 5472 5473 5474 5475 547x 5480 5481 5482 5483 5484 5485"
  .RE
  .RS 4
- .PD
  .Sp
  \&\fB\-mcpu=\fR\fIcpu\fR overrides \fB\-march=\fR\fIarch\fR if
  \&\fIarch\fR is compatible with \fIcpu\fR.  Other combinations of
  \&\fB\-mcpu\fR and \fB\-march\fR are rejected.
  .Sp
! \&\s-1GCC\s0 defines the macro \f(CW\*(C`_\|_mcf_cpu_\f(CIcpu\f(CW\*(C'\fR when ColdFire target
! \&\fIcpu\fR is selected.  It also defines \f(CW\*(C`_\|_mcf_family_\f(CIfamily\f(CW\*(C'\fR,
  where the value of \fIfamily\fR is given by the table above.
  .RE
! .IP "\fB\-mtune=\fR\fItune\fR" 4
  .IX Item "-mtune=tune"
  Tune the code for a particular microarchitecture within the
  constraints set by \fB\-march\fR and \fB\-mcpu\fR.
--- 27593,27611 ----
  .IX Item "5407 : 5407"
  .IP "\fB5475\fR : \fB5470\fR \fB5471\fR \fB5472\fR \fB5473\fR \fB5474\fR \fB5475\fR \fB547x\fR \fB5480\fR \fB5481\fR \fB5482\fR \fB5483\fR \fB5484\fR \fB5485\fR" 4
  .IX Item "5475 : 5470 5471 5472 5473 5474 5475 547x 5480 5481 5482 5483 5484 5485"
+ .PD
  .RE
  .RS 4
  .Sp
  \&\fB\-mcpu=\fR\fIcpu\fR overrides \fB\-march=\fR\fIarch\fR if
  \&\fIarch\fR is compatible with \fIcpu\fR.  Other combinations of
  \&\fB\-mcpu\fR and \fB\-march\fR are rejected.
  .Sp
! GCC defines the macro \f(CW\*(C`_\|_mcf_cpu_\fR\f(CIcpu\fR\f(CW\*(C'\fR when ColdFire target
! \&\fIcpu\fR is selected.  It also defines \f(CW\*(C`_\|_mcf_family_\fR\f(CIfamily\fR\f(CW\*(C'\fR,
  where the value of \fIfamily\fR is given by the table above.
  .RE
! .IP \fB\-mtune=\fR\fItune\fR 4
  .IX Item "-mtune=tune"
  Tune the code for a particular microarchitecture within the
  constraints set by \fB\-march\fR and \fB\-mcpu\fR.
*************** to run relatively well on 68020, 68030 a
*** 27685,27732 ****
  as well.  These two options select the same tuning decisions as
  \&\fB\-m68020\-40\fR and \fB\-m68020\-60\fR respectively.
  .Sp
! \&\s-1GCC\s0 defines the macros \f(CW\*(C`_\|_mc\f(CIarch\f(CW\*(C'\fR and \f(CW\*(C`_\|_mc\f(CIarch\f(CW_\|_\*(C'\fR
  when tuning for 680x0 architecture \fIarch\fR.  It also defines
! \&\f(CW\*(C`mc\f(CIarch\f(CW\*(C'\fR unless either \fB\-ansi\fR or a non-GNU \fB\-std\fR
! option is used.  If \s-1GCC\s0 is tuning for a range of architectures,
  as selected by \fB\-mtune=68020\-40\fR or \fB\-mtune=68020\-60\fR,
  it defines the macros for every architecture in the range.
  .Sp
! \&\s-1GCC\s0 also defines the macro \f(CW\*(C`_\|_m\f(CIuarch\f(CW_\|_\*(C'\fR when tuning for
  ColdFire microarchitecture \fIuarch\fR, where \fIuarch\fR is one
  of the arguments given above.
! .IP "\fB\-m68000\fR" 4
  .IX Item "-m68000"
  .PD 0
! .IP "\fB\-mc68000\fR" 4
  .IX Item "-mc68000"
  .PD
  Generate output for a 68000.  This is the default
  when the compiler is configured for 68000\-based systems.
  It is equivalent to \fB\-march=68000\fR.
  .Sp
! Use this option for microcontrollers with a 68000 or \s-1EC000\s0 core,
  including the 68008, 68302, 68306, 68307, 68322, 68328 and 68356.
! .IP "\fB\-m68010\fR" 4
  .IX Item "-m68010"
  Generate output for a 68010.  This is the default
  when the compiler is configured for 68010\-based systems.
  It is equivalent to \fB\-march=68010\fR.
! .IP "\fB\-m68020\fR" 4
  .IX Item "-m68020"
  .PD 0
! .IP "\fB\-mc68020\fR" 4
  .IX Item "-mc68020"
  .PD
  Generate output for a 68020.  This is the default
  when the compiler is configured for 68020\-based systems.
  It is equivalent to \fB\-march=68020\fR.
! .IP "\fB\-m68030\fR" 4
  .IX Item "-m68030"
  Generate output for a 68030.  This is the default when the compiler is
  configured for 68030\-based systems.  It is equivalent to
  \&\fB\-march=68030\fR.
! .IP "\fB\-m68040\fR" 4
  .IX Item "-m68040"
  Generate output for a 68040.  This is the default when the compiler is
  configured for 68040\-based systems.  It is equivalent to
--- 27620,27667 ----
  as well.  These two options select the same tuning decisions as
  \&\fB\-m68020\-40\fR and \fB\-m68020\-60\fR respectively.
  .Sp
! GCC defines the macros \f(CW\*(C`_\|_mc\fR\f(CIarch\fR\f(CW\*(C'\fR and \f(CW\*(C`_\|_mc\fR\f(CIarch\fR\f(CW_\|_\*(C'\fR
  when tuning for 680x0 architecture \fIarch\fR.  It also defines
! \&\f(CW\*(C`mc\fR\f(CIarch\fR\f(CW\*(C'\fR unless either \fB\-ansi\fR or a non\-GNU \fB\-std\fR
! option is used.  If GCC is tuning for a range of architectures,
  as selected by \fB\-mtune=68020\-40\fR or \fB\-mtune=68020\-60\fR,
  it defines the macros for every architecture in the range.
  .Sp
! GCC also defines the macro \f(CW\*(C`_\|_m\fR\f(CIuarch\fR\f(CW_\|_\*(C'\fR when tuning for
  ColdFire microarchitecture \fIuarch\fR, where \fIuarch\fR is one
  of the arguments given above.
! .IP \fB\-m68000\fR 4
  .IX Item "-m68000"
  .PD 0
! .IP \fB\-mc68000\fR 4
  .IX Item "-mc68000"
  .PD
  Generate output for a 68000.  This is the default
  when the compiler is configured for 68000\-based systems.
  It is equivalent to \fB\-march=68000\fR.
  .Sp
! Use this option for microcontrollers with a 68000 or EC000 core,
  including the 68008, 68302, 68306, 68307, 68322, 68328 and 68356.
! .IP \fB\-m68010\fR 4
  .IX Item "-m68010"
  Generate output for a 68010.  This is the default
  when the compiler is configured for 68010\-based systems.
  It is equivalent to \fB\-march=68010\fR.
! .IP \fB\-m68020\fR 4
  .IX Item "-m68020"
  .PD 0
! .IP \fB\-mc68020\fR 4
  .IX Item "-mc68020"
  .PD
  Generate output for a 68020.  This is the default
  when the compiler is configured for 68020\-based systems.
  It is equivalent to \fB\-march=68020\fR.
! .IP \fB\-m68030\fR 4
  .IX Item "-m68030"
  Generate output for a 68030.  This is the default when the compiler is
  configured for 68030\-based systems.  It is equivalent to
  \&\fB\-march=68030\fR.
! .IP \fB\-m68040\fR 4
  .IX Item "-m68040"
  Generate output for a 68040.  This is the default when the compiler is
  configured for 68040\-based systems.  It is equivalent to
*************** configured for 68040\-based systems.  It
*** 27735,27741 ****
  This option inhibits the use of 68881/68882 instructions that have to be
  emulated by software on the 68040.  Use this option if your 68040 does not
  have code to emulate those instructions.
! .IP "\fB\-m68060\fR" 4
  .IX Item "-m68060"
  Generate output for a 68060.  This is the default when the compiler is
  configured for 68060\-based systems.  It is equivalent to
--- 27670,27676 ----
  This option inhibits the use of 68881/68882 instructions that have to be
  emulated by software on the 68040.  Use this option if your 68040 does not
  have code to emulate those instructions.
! .IP \fB\-m68060\fR 4
  .IX Item "-m68060"
  Generate output for a 68060.  This is the default when the compiler is
  configured for 68060\-based systems.  It is equivalent to
*************** configured for 68060\-based systems.  It
*** 27744,27791 ****
  This option inhibits the use of 68020 and 68881/68882 instructions that
  have to be emulated by software on the 68060.  Use this option if your 68060
  does not have code to emulate those instructions.
! .IP "\fB\-mcpu32\fR" 4
  .IX Item "-mcpu32"
! Generate output for a \s-1CPU32.\s0  This is the default
  when the compiler is configured for CPU32\-based systems.
  It is equivalent to \fB\-march=cpu32\fR.
  .Sp
  Use this option for microcontrollers with a
! \&\s-1CPU32\s0 or \s-1CPU32+\s0 core, including the 68330, 68331, 68332, 68333, 68334,
  68336, 68340, 68341, 68349 and 68360.
! .IP "\fB\-m5200\fR" 4
  .IX Item "-m5200"
! Generate output for a 520X ColdFire \s-1CPU.\s0  This is the default
  when the compiler is configured for 520X\-based systems.
  It is equivalent to \fB\-mcpu=5206\fR, and is now deprecated
  in favor of that option.
  .Sp
  Use this option for microcontroller with a 5200 core, including
! the \s-1MCF5202, MCF5203, MCF5204\s0 and \s-1MCF5206.\s0
! .IP "\fB\-m5206e\fR" 4
  .IX Item "-m5206e"
! Generate output for a 5206e ColdFire \s-1CPU.\s0  The option is now
  deprecated in favor of the equivalent \fB\-mcpu=5206e\fR.
! .IP "\fB\-m528x\fR" 4
  .IX Item "-m528x"
  Generate output for a member of the ColdFire 528X family.
  The option is now deprecated in favor of the equivalent
  \&\fB\-mcpu=528x\fR.
! .IP "\fB\-m5307\fR" 4
  .IX Item "-m5307"
! Generate output for a ColdFire 5307 \s-1CPU.\s0  The option is now deprecated
  in favor of the equivalent \fB\-mcpu=5307\fR.
! .IP "\fB\-m5407\fR" 4
  .IX Item "-m5407"
! Generate output for a ColdFire 5407 \s-1CPU.\s0  The option is now deprecated
  in favor of the equivalent \fB\-mcpu=5407\fR.
! .IP "\fB\-mcfv4e\fR" 4
  .IX Item "-mcfv4e"
! Generate output for a ColdFire V4e family \s-1CPU\s0 (e.g. 547x/548x).
! This includes use of hardware floating-point instructions.
  The option is equivalent to \fB\-mcpu=547x\fR, and is now
  deprecated in favor of that option.
! .IP "\fB\-m68020\-40\fR" 4
  .IX Item "-m68020-40"
  Generate output for a 68040, without using any of the new instructions.
  This results in code that can run relatively efficiently on either a
--- 27679,27726 ----
  This option inhibits the use of 68020 and 68881/68882 instructions that
  have to be emulated by software on the 68060.  Use this option if your 68060
  does not have code to emulate those instructions.
! .IP \fB\-mcpu32\fR 4
  .IX Item "-mcpu32"
! Generate output for a CPU32.  This is the default
  when the compiler is configured for CPU32\-based systems.
  It is equivalent to \fB\-march=cpu32\fR.
  .Sp
  Use this option for microcontrollers with a
! CPU32 or CPU32+ core, including the 68330, 68331, 68332, 68333, 68334,
  68336, 68340, 68341, 68349 and 68360.
! .IP \fB\-m5200\fR 4
  .IX Item "-m5200"
! Generate output for a 520X ColdFire CPU.  This is the default
  when the compiler is configured for 520X\-based systems.
  It is equivalent to \fB\-mcpu=5206\fR, and is now deprecated
  in favor of that option.
  .Sp
  Use this option for microcontroller with a 5200 core, including
! the MCF5202, MCF5203, MCF5204 and MCF5206.
! .IP \fB\-m5206e\fR 4
  .IX Item "-m5206e"
! Generate output for a 5206e ColdFire CPU.  The option is now
  deprecated in favor of the equivalent \fB\-mcpu=5206e\fR.
! .IP \fB\-m528x\fR 4
  .IX Item "-m528x"
  Generate output for a member of the ColdFire 528X family.
  The option is now deprecated in favor of the equivalent
  \&\fB\-mcpu=528x\fR.
! .IP \fB\-m5307\fR 4
  .IX Item "-m5307"
! Generate output for a ColdFire 5307 CPU.  The option is now deprecated
  in favor of the equivalent \fB\-mcpu=5307\fR.
! .IP \fB\-m5407\fR 4
  .IX Item "-m5407"
! Generate output for a ColdFire 5407 CPU.  The option is now deprecated
  in favor of the equivalent \fB\-mcpu=5407\fR.
! .IP \fB\-mcfv4e\fR 4
  .IX Item "-mcfv4e"
! Generate output for a ColdFire V4e family CPU (e.g. 547x/548x).
! This includes use of hardware floating\-point instructions.
  The option is equivalent to \fB\-mcpu=547x\fR, and is now
  deprecated in favor of that option.
! .IP \fB\-m68020\-40\fR 4
  .IX Item "-m68020-40"
  Generate output for a 68040, without using any of the new instructions.
  This results in code that can run relatively efficiently on either a
*************** This results in code that can run relati
*** 27793,27799 ****
  68881 instructions that are emulated on the 68040.
  .Sp
  The option is equivalent to \fB\-march=68020\fR \fB\-mtune=68020\-40\fR.
! .IP "\fB\-m68020\-60\fR" 4
  .IX Item "-m68020-60"
  Generate output for a 68060, without using any of the new instructions.
  This results in code that can run relatively efficiently on either a
--- 27728,27734 ----
  68881 instructions that are emulated on the 68040.
  .Sp
  The option is equivalent to \fB\-march=68020\fR \fB\-mtune=68020\-40\fR.
! .IP \fB\-m68020\-60\fR 4
  .IX Item "-m68020-60"
  Generate output for a 68060, without using any of the new instructions.
  This results in code that can run relatively efficiently on either a
*************** This results in code that can run relati
*** 27801,27860 ****
  68881 instructions that are emulated on the 68060.
  .Sp
  The option is equivalent to \fB\-march=68020\fR \fB\-mtune=68020\-60\fR.
! .IP "\fB\-mhard\-float\fR" 4
  .IX Item "-mhard-float"
  .PD 0
! .IP "\fB\-m68881\fR" 4
  .IX Item "-m68881"
  .PD
! Generate floating-point instructions.  This is the default for 68020
! and above, and for ColdFire devices that have an \s-1FPU.\s0  It defines the
  macro \f(CW\*(C`_\|_HAVE_68881_\|_\*(C'\fR on M680x0 targets and \f(CW\*(C`_\|_mcffpu_\|_\*(C'\fR
  on ColdFire targets.
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
! Do not generate floating-point instructions; use library calls instead.
  This is the default for 68000, 68010, and 68832 targets.  It is also
! the default for ColdFire devices that have no \s-1FPU.\s0
! .IP "\fB\-mdiv\fR" 4
  .IX Item "-mdiv"
  .PD 0
! .IP "\fB\-mno\-div\fR" 4
  .IX Item "-mno-div"
  .PD
  Generate (do not generate) ColdFire hardware divide and remainder
  instructions.  If \fB\-march\fR is used without \fB\-mcpu\fR,
! the default is \*(L"on\*(R" for ColdFire architectures and \*(L"off\*(R" for M680x0
! architectures.  Otherwise, the default is taken from the target \s-1CPU\s0
! (either the default \s-1CPU,\s0 or the one specified by \fB\-mcpu\fR).  For
! example, the default is \*(L"off\*(R" for \fB\-mcpu=5206\fR and \*(L"on\*(R" for
  \&\fB\-mcpu=5206e\fR.
  .Sp
! \&\s-1GCC\s0 defines the macro \f(CW\*(C`_\|_mcfhwdiv_\|_\*(C'\fR when this option is enabled.
! .IP "\fB\-mshort\fR" 4
  .IX Item "-mshort"
  Consider type \f(CW\*(C`int\*(C'\fR to be 16 bits wide, like \f(CW\*(C`short int\*(C'\fR.
  Additionally, parameters passed on the stack are also aligned to a
! 16\-bit boundary even on targets whose \s-1API\s0 mandates promotion to 32\-bit.
! .IP "\fB\-mno\-short\fR" 4
  .IX Item "-mno-short"
  Do not consider type \f(CW\*(C`int\*(C'\fR to be 16 bits wide.  This is the default.
! .IP "\fB\-mnobitfield\fR" 4
  .IX Item "-mnobitfield"
  .PD 0
! .IP "\fB\-mno\-bitfield\fR" 4
  .IX Item "-mno-bitfield"
  .PD
! Do not use the bit-field instructions.  The \fB\-m68000\fR, \fB\-mcpu32\fR
  and \fB\-m5200\fR options imply \fB\-mnobitfield\fR.
! .IP "\fB\-mbitfield\fR" 4
  .IX Item "-mbitfield"
! Do use the bit-field instructions.  The \fB\-m68020\fR option implies
  \&\fB\-mbitfield\fR.  This is the default if you use a configuration
  designed for a 68020.
! .IP "\fB\-mrtd\fR" 4
  .IX Item "-mrtd"
! Use a different function-calling convention, in which functions
  that take a fixed number of arguments return with the \f(CW\*(C`rtd\*(C'\fR
  instruction, which pops their arguments while returning.  This
  saves one instruction in the caller since there is no need to pop
--- 27736,27795 ----
  68881 instructions that are emulated on the 68060.
  .Sp
  The option is equivalent to \fB\-march=68020\fR \fB\-mtune=68020\-60\fR.
! .IP \fB\-mhard\-float\fR 4
  .IX Item "-mhard-float"
  .PD 0
! .IP \fB\-m68881\fR 4
  .IX Item "-m68881"
  .PD
! Generate floating\-point instructions.  This is the default for 68020
! and above, and for ColdFire devices that have an FPU.  It defines the
  macro \f(CW\*(C`_\|_HAVE_68881_\|_\*(C'\fR on M680x0 targets and \f(CW\*(C`_\|_mcffpu_\|_\*(C'\fR
  on ColdFire targets.
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
! Do not generate floating\-point instructions; use library calls instead.
  This is the default for 68000, 68010, and 68832 targets.  It is also
! the default for ColdFire devices that have no FPU.
! .IP \fB\-mdiv\fR 4
  .IX Item "-mdiv"
  .PD 0
! .IP \fB\-mno\-div\fR 4
  .IX Item "-mno-div"
  .PD
  Generate (do not generate) ColdFire hardware divide and remainder
  instructions.  If \fB\-march\fR is used without \fB\-mcpu\fR,
! the default is "on" for ColdFire architectures and "off" for M680x0
! architectures.  Otherwise, the default is taken from the target CPU
! (either the default CPU, or the one specified by \fB\-mcpu\fR).  For
! example, the default is "off" for \fB\-mcpu=5206\fR and "on" for
  \&\fB\-mcpu=5206e\fR.
  .Sp
! GCC defines the macro \f(CW\*(C`_\|_mcfhwdiv_\|_\*(C'\fR when this option is enabled.
! .IP \fB\-mshort\fR 4
  .IX Item "-mshort"
  Consider type \f(CW\*(C`int\*(C'\fR to be 16 bits wide, like \f(CW\*(C`short int\*(C'\fR.
  Additionally, parameters passed on the stack are also aligned to a
! 16\-bit boundary even on targets whose API mandates promotion to 32\-bit.
! .IP \fB\-mno\-short\fR 4
  .IX Item "-mno-short"
  Do not consider type \f(CW\*(C`int\*(C'\fR to be 16 bits wide.  This is the default.
! .IP \fB\-mnobitfield\fR 4
  .IX Item "-mnobitfield"
  .PD 0
! .IP \fB\-mno\-bitfield\fR 4
  .IX Item "-mno-bitfield"
  .PD
! Do not use the bit\-field instructions.  The \fB\-m68000\fR, \fB\-mcpu32\fR
  and \fB\-m5200\fR options imply \fB\-mnobitfield\fR.
! .IP \fB\-mbitfield\fR 4
  .IX Item "-mbitfield"
! Do use the bit\-field instructions.  The \fB\-m68020\fR option implies
  \&\fB\-mbitfield\fR.  This is the default if you use a configuration
  designed for a 68020.
! .IP \fB\-mrtd\fR 4
  .IX Item "-mrtd"
! Use a different function\-calling convention, in which functions
  that take a fixed number of arguments return with the \f(CW\*(C`rtd\*(C'\fR
  instruction, which pops their arguments while returning.  This
  saves one instruction in the caller since there is no need to pop
*************** function with too many arguments.  (Norm
*** 27874,27949 ****
  harmlessly ignored.)
  .Sp
  The \f(CW\*(C`rtd\*(C'\fR instruction is supported by the 68010, 68020, 68030,
! 68040, 68060 and \s-1CPU32\s0 processors, but not by the 68000 or 5200.
  .Sp
  The default is \fB\-mno\-rtd\fR.
! .IP "\fB\-malign\-int\fR" 4
  .IX Item "-malign-int"
  .PD 0
! .IP "\fB\-mno\-align\-int\fR" 4
  .IX Item "-mno-align-int"
  .PD
! Control whether \s-1GCC\s0 aligns \f(CW\*(C`int\*(C'\fR, \f(CW\*(C`long\*(C'\fR, \f(CW\*(C`long long\*(C'\fR,
  \&\f(CW\*(C`float\*(C'\fR, \f(CW\*(C`double\*(C'\fR, and \f(CW\*(C`long double\*(C'\fR variables on a 32\-bit
  boundary (\fB\-malign\-int\fR) or a 16\-bit boundary (\fB\-mno\-align\-int\fR).
  Aligning variables on 32\-bit boundaries produces code that runs somewhat
  faster on processors with 32\-bit busses at the expense of more memory.
  .Sp
! \&\fBWarning:\fR if you use the \fB\-malign\-int\fR switch, \s-1GCC\s0
  aligns structures containing the above types differently than
  most published application binary interface specifications for the m68k.
  .Sp
! Use the pc-relative addressing mode of the 68000 directly, instead of
  using a global offset table.  At present, this option implies \fB\-fpic\fR,
! allowing at most a 16\-bit offset for pc-relative addressing.  \fB\-fPIC\fR is
  not presently supported with \fB\-mpcrel\fR, though this could be supported for
  68020 and higher processors.
! .IP "\fB\-mno\-strict\-align\fR" 4
  .IX Item "-mno-strict-align"
  .PD 0
! .IP "\fB\-mstrict\-align\fR" 4
  .IX Item "-mstrict-align"
  .PD
  Do not (do) assume that unaligned memory references are handled by
  the system.
! .IP "\fB\-msep\-data\fR" 4
  .IX Item "-msep-data"
  Generate code that allows the data segment to be located in a different
! area of memory from the text segment.  This allows for execute-in-place in
  an environment without virtual memory management.  This option implies
  \&\fB\-fPIC\fR.
! .IP "\fB\-mno\-sep\-data\fR" 4
  .IX Item "-mno-sep-data"
  Generate code that assumes that the data segment follows the text segment.
  This is the default.
! .IP "\fB\-mid\-shared\-library\fR" 4
  .IX Item "-mid-shared-library"
! Generate code that supports shared libraries via the library \s-1ID\s0 method.
! This allows for execute-in-place and shared libraries in an environment
  without virtual memory management.  This option implies \fB\-fPIC\fR.
! .IP "\fB\-mno\-id\-shared\-library\fR" 4
  .IX Item "-mno-id-shared-library"
! Generate code that doesn't assume ID-based shared libraries are being used.
  This is the default.
! .IP "\fB\-mshared\-library\-id=n\fR" 4
  .IX Item "-mshared-library-id=n"
! Specifies the identification number of the ID-based shared library being
  compiled.  Specifying a value of 0 generates more compact code; specifying
  other values forces the allocation of that number to the current
! library, but is no more space\- or time-efficient than omitting this option.
! .IP "\fB\-mxgot\fR" 4
  .IX Item "-mxgot"
  .PD 0
! .IP "\fB\-mno\-xgot\fR" 4
  .IX Item "-mno-xgot"
  .PD
! When generating position-independent code for ColdFire, generate code
! that works if the \s-1GOT\s0 has more than 8192 entries.  This code is
  larger and slower than code generated without this option.  On M680x0
  processors, this option is not needed; \fB\-fPIC\fR suffices.
  .Sp
! \&\s-1GCC\s0 normally uses a single instruction to load values from the \s-1GOT.\s0
! While this is relatively efficient, it only works if the \s-1GOT\s0
  is smaller than about 64k.  Anything larger causes the linker
  to report an error such as:
  .Sp
--- 27809,27884 ----
  harmlessly ignored.)
  .Sp
  The \f(CW\*(C`rtd\*(C'\fR instruction is supported by the 68010, 68020, 68030,
! 68040, 68060 and CPU32 processors, but not by the 68000 or 5200.
  .Sp
  The default is \fB\-mno\-rtd\fR.
! .IP \fB\-malign\-int\fR 4
  .IX Item "-malign-int"
  .PD 0
! .IP \fB\-mno\-align\-int\fR 4
  .IX Item "-mno-align-int"
  .PD
! Control whether GCC aligns \f(CW\*(C`int\*(C'\fR, \f(CW\*(C`long\*(C'\fR, \f(CW\*(C`long long\*(C'\fR,
  \&\f(CW\*(C`float\*(C'\fR, \f(CW\*(C`double\*(C'\fR, and \f(CW\*(C`long double\*(C'\fR variables on a 32\-bit
  boundary (\fB\-malign\-int\fR) or a 16\-bit boundary (\fB\-mno\-align\-int\fR).
  Aligning variables on 32\-bit boundaries produces code that runs somewhat
  faster on processors with 32\-bit busses at the expense of more memory.
  .Sp
! \&\fBWarning:\fR if you use the \fB\-malign\-int\fR switch, GCC
  aligns structures containing the above types differently than
  most published application binary interface specifications for the m68k.
  .Sp
! Use the pc\-relative addressing mode of the 68000 directly, instead of
  using a global offset table.  At present, this option implies \fB\-fpic\fR,
! allowing at most a 16\-bit offset for pc\-relative addressing.  \fB\-fPIC\fR is
  not presently supported with \fB\-mpcrel\fR, though this could be supported for
  68020 and higher processors.
! .IP \fB\-mno\-strict\-align\fR 4
  .IX Item "-mno-strict-align"
  .PD 0
! .IP \fB\-mstrict\-align\fR 4
  .IX Item "-mstrict-align"
  .PD
  Do not (do) assume that unaligned memory references are handled by
  the system.
! .IP \fB\-msep\-data\fR 4
  .IX Item "-msep-data"
  Generate code that allows the data segment to be located in a different
! area of memory from the text segment.  This allows for execute\-in\-place in
  an environment without virtual memory management.  This option implies
  \&\fB\-fPIC\fR.
! .IP \fB\-mno\-sep\-data\fR 4
  .IX Item "-mno-sep-data"
  Generate code that assumes that the data segment follows the text segment.
  This is the default.
! .IP \fB\-mid\-shared\-library\fR 4
  .IX Item "-mid-shared-library"
! Generate code that supports shared libraries via the library ID method.
! This allows for execute\-in\-place and shared libraries in an environment
  without virtual memory management.  This option implies \fB\-fPIC\fR.
! .IP \fB\-mno\-id\-shared\-library\fR 4
  .IX Item "-mno-id-shared-library"
! Generate code that doesn\*(Aqt assume ID\-based shared libraries are being used.
  This is the default.
! .IP \fB\-mshared\-library\-id=n\fR 4
  .IX Item "-mshared-library-id=n"
! Specifies the identification number of the ID\-based shared library being
  compiled.  Specifying a value of 0 generates more compact code; specifying
  other values forces the allocation of that number to the current
! library, but is no more space\- or time\-efficient than omitting this option.
! .IP \fB\-mxgot\fR 4
  .IX Item "-mxgot"
  .PD 0
! .IP \fB\-mno\-xgot\fR 4
  .IX Item "-mno-xgot"
  .PD
! When generating position\-independent code for ColdFire, generate code
! that works if the GOT has more than 8192 entries.  This code is
  larger and slower than code generated without this option.  On M680x0
  processors, this option is not needed; \fB\-fPIC\fR suffices.
  .Sp
! GCC normally uses a single instruction to load values from the GOT.
! While this is relatively efficient, it only works if the GOT
  is smaller than about 64k.  Anything larger causes the linker
  to report an error such as:
  .Sp
*************** It should then work with very large GOTs
*** 27956,27969 ****
  \&\fB\-mxgot\fR is less efficient, since it takes 4 instructions to fetch
  the value of a global symbol.
  .Sp
! Note that some linkers, including newer versions of the \s-1GNU\s0 linker,
! can create multiple GOTs and sort \s-1GOT\s0 entries.  If you have such a linker,
  you should only need to use \fB\-mxgot\fR when compiling a single
! object file that accesses more than 8192 \s-1GOT\s0 entries.  Very few do.
  .Sp
! These options have no effect unless \s-1GCC\s0 is generating
! position-independent code.
! .IP "\fB\-mlong\-jump\-table\-offsets\fR" 4
  .IX Item "-mlong-jump-table-offsets"
  Use 32\-bit offsets in \f(CW\*(C`switch\*(C'\fR tables.  The default is to use
  16\-bit offsets.
--- 27891,27904 ----
  \&\fB\-mxgot\fR is less efficient, since it takes 4 instructions to fetch
  the value of a global symbol.
  .Sp
! Note that some linkers, including newer versions of the GNU linker,
! can create multiple GOTs and sort GOT entries.  If you have such a linker,
  you should only need to use \fB\-mxgot\fR when compiling a single
! object file that accesses more than 8192 GOT entries.  Very few do.
  .Sp
! These options have no effect unless GCC is generating
! position\-independent code.
! .IP \fB\-mlong\-jump\-table\-offsets\fR 4
  .IX Item "-mlong-jump-table-offsets"
  Use 32\-bit offsets in \f(CW\*(C`switch\*(C'\fR tables.  The default is to use
  16\-bit offsets.
*************** Use 32\-bit offsets in \f(CW\*(C`switch\
*** 27973,28047 ****
  .PP
  These are the \fB\-m\fR options defined for the Motorola M*Core
  processors.
! .IP "\fB\-mhardlit\fR" 4
  .IX Item "-mhardlit"
  .PD 0
! .IP "\fB\-mno\-hardlit\fR" 4
  .IX Item "-mno-hardlit"
  .PD
  Inline constants into the code stream if it can be done in two
  instructions or less.
! .IP "\fB\-mdiv\fR" 4
  .IX Item "-mdiv"
  .PD 0
! .IP "\fB\-mno\-div\fR" 4
  .IX Item "-mno-div"
  .PD
  Use the divide instruction.  (Enabled by default).
! .IP "\fB\-mrelax\-immediate\fR" 4
  .IX Item "-mrelax-immediate"
  .PD 0
! .IP "\fB\-mno\-relax\-immediate\fR" 4
  .IX Item "-mno-relax-immediate"
  .PD
! Allow arbitrary-sized immediates in bit operations.
! .IP "\fB\-mwide\-bitfields\fR" 4
  .IX Item "-mwide-bitfields"
  .PD 0
! .IP "\fB\-mno\-wide\-bitfields\fR" 4
  .IX Item "-mno-wide-bitfields"
  .PD
! Always treat bit-fields as \f(CW\*(C`int\*(C'\fR\-sized.
! .IP "\fB\-m4byte\-functions\fR" 4
  .IX Item "-m4byte-functions"
  .PD 0
! .IP "\fB\-mno\-4byte\-functions\fR" 4
  .IX Item "-mno-4byte-functions"
  .PD
  Force all functions to be aligned to a 4\-byte boundary.
! .IP "\fB\-mcallgraph\-data\fR" 4
  .IX Item "-mcallgraph-data"
  .PD 0
! .IP "\fB\-mno\-callgraph\-data\fR" 4
  .IX Item "-mno-callgraph-data"
  .PD
  Emit callgraph information.
! .IP "\fB\-mslow\-bytes\fR" 4
  .IX Item "-mslow-bytes"
  .PD 0
! .IP "\fB\-mno\-slow\-bytes\fR" 4
  .IX Item "-mno-slow-bytes"
  .PD
  Prefer word access when reading byte quantities.
! .IP "\fB\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
  .PD 0
! .IP "\fB\-mbig\-endian\fR" 4
  .IX Item "-mbig-endian"
  .PD
! Generate code for a little-endian target.
! .IP "\fB\-m210\fR" 4
  .IX Item "-m210"
  .PD 0
! .IP "\fB\-m340\fR" 4
  .IX Item "-m340"
  .PD
  Generate code for the 210 processor.
! .IP "\fB\-mno\-lsim\fR" 4
  .IX Item "-mno-lsim"
  Assume that runtime support has been provided and so omit the
  simulator library (\fIlibsim.a)\fR from the linker command line.
! .IP "\fB\-mstack\-increment=\fR\fIsize\fR" 4
  .IX Item "-mstack-increment=size"
  Set the maximum amount for a single stack increment operation.  Large
  values can increase the speed of programs that contain functions
--- 27908,27982 ----
  .PP
  These are the \fB\-m\fR options defined for the Motorola M*Core
  processors.
! .IP \fB\-mhardlit\fR 4
  .IX Item "-mhardlit"
  .PD 0
! .IP \fB\-mno\-hardlit\fR 4
  .IX Item "-mno-hardlit"
  .PD
  Inline constants into the code stream if it can be done in two
  instructions or less.
! .IP \fB\-mdiv\fR 4
  .IX Item "-mdiv"
  .PD 0
! .IP \fB\-mno\-div\fR 4
  .IX Item "-mno-div"
  .PD
  Use the divide instruction.  (Enabled by default).
! .IP \fB\-mrelax\-immediate\fR 4
  .IX Item "-mrelax-immediate"
  .PD 0
! .IP \fB\-mno\-relax\-immediate\fR 4
  .IX Item "-mno-relax-immediate"
  .PD
! Allow arbitrary\-sized immediates in bit operations.
! .IP \fB\-mwide\-bitfields\fR 4
  .IX Item "-mwide-bitfields"
  .PD 0
! .IP \fB\-mno\-wide\-bitfields\fR 4
  .IX Item "-mno-wide-bitfields"
  .PD
! Always treat bit\-fields as \f(CW\*(C`int\*(C'\fR\-sized.
! .IP \fB\-m4byte\-functions\fR 4
  .IX Item "-m4byte-functions"
  .PD 0
! .IP \fB\-mno\-4byte\-functions\fR 4
  .IX Item "-mno-4byte-functions"
  .PD
  Force all functions to be aligned to a 4\-byte boundary.
! .IP \fB\-mcallgraph\-data\fR 4
  .IX Item "-mcallgraph-data"
  .PD 0
! .IP \fB\-mno\-callgraph\-data\fR 4
  .IX Item "-mno-callgraph-data"
  .PD
  Emit callgraph information.
! .IP \fB\-mslow\-bytes\fR 4
  .IX Item "-mslow-bytes"
  .PD 0
! .IP \fB\-mno\-slow\-bytes\fR 4
  .IX Item "-mno-slow-bytes"
  .PD
  Prefer word access when reading byte quantities.
! .IP \fB\-mlittle\-endian\fR 4
  .IX Item "-mlittle-endian"
  .PD 0
! .IP \fB\-mbig\-endian\fR 4
  .IX Item "-mbig-endian"
  .PD
! Generate code for a little\-endian target.
! .IP \fB\-m210\fR 4
  .IX Item "-m210"
  .PD 0
! .IP \fB\-m340\fR 4
  .IX Item "-m340"
  .PD
  Generate code for the 210 processor.
! .IP \fB\-mno\-lsim\fR 4
  .IX Item "-mno-lsim"
  Assume that runtime support has been provided and so omit the
  simulator library (\fIlibsim.a)\fR from the linker command line.
! .IP \fB\-mstack\-increment=\fR\fIsize\fR 4
  .IX Item "-mstack-increment=size"
  Set the maximum amount for a single stack increment operation.  Large
  values can increase the speed of programs that contain functions
*************** value is 0x1000.
*** 28051,28133 ****
  .PP
  \fIMicroBlaze Options\fR
  .IX Subsection "MicroBlaze Options"
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  Use software emulation for floating point (default).
! .IP "\fB\-mhard\-float\fR" 4
  .IX Item "-mhard-float"
! Use hardware floating-point instructions.
! .IP "\fB\-mmemcpy\fR" 4
  .IX Item "-mmemcpy"
  Do not optimize block moves, use \f(CW\*(C`memcpy\*(C'\fR.
! .IP "\fB\-mno\-clearbss\fR" 4
  .IX Item "-mno-clearbss"
  This option is deprecated.  Use \fB\-fno\-zero\-initialized\-in\-bss\fR instead.
! .IP "\fB\-mcpu=\fR\fIcpu-type\fR" 4
  .IX Item "-mcpu=cpu-type"
! Use features of, and schedule code for, the given \s-1CPU.\s0
! Supported values are in the format \fBv\fR\fIX\fR\fB.\fR\fI\s-1YY\s0\fR\fB.\fR\fIZ\fR,
! where \fIX\fR is a major version, \fI\s-1YY\s0\fR is the minor version, and
  \&\fIZ\fR is compatibility code.  Example values are \fBv3.00.a\fR,
  \&\fBv4.00.b\fR, \fBv5.00.a\fR, \fBv5.00.b\fR, \fBv6.00.a\fR.
! .IP "\fB\-mxl\-soft\-mul\fR" 4
  .IX Item "-mxl-soft-mul"
  Use software multiply emulation (default).
! .IP "\fB\-mxl\-soft\-div\fR" 4
  .IX Item "-mxl-soft-div"
  Use software emulation for divides (default).
! .IP "\fB\-mxl\-barrel\-shift\fR" 4
  .IX Item "-mxl-barrel-shift"
  Use the hardware barrel shifter.
! .IP "\fB\-mxl\-pattern\-compare\fR" 4
  .IX Item "-mxl-pattern-compare"
  Use pattern compare instructions.
! .IP "\fB\-msmall\-divides\fR" 4
  .IX Item "-msmall-divides"
  Use table lookup optimization for small signed integer divisions.
! .IP "\fB\-mxl\-stack\-check\fR" 4
  .IX Item "-mxl-stack-check"
  This option is deprecated.  Use \fB\-fstack\-check\fR instead.
! .IP "\fB\-mxl\-gp\-opt\fR" 4
  .IX Item "-mxl-gp-opt"
! Use GP-relative \f(CW\*(C`.sdata\*(C'\fR/\f(CW\*(C`.sbss\*(C'\fR sections.
! .IP "\fB\-mxl\-multiply\-high\fR" 4
  .IX Item "-mxl-multiply-high"
  Use multiply high instructions for high part of 32x32 multiply.
! .IP "\fB\-mxl\-float\-convert\fR" 4
  .IX Item "-mxl-float-convert"
! Use hardware floating-point conversion instructions.
! .IP "\fB\-mxl\-float\-sqrt\fR" 4
  .IX Item "-mxl-float-sqrt"
! Use hardware floating-point square root instruction.
! .IP "\fB\-mbig\-endian\fR" 4
  .IX Item "-mbig-endian"
! Generate code for a big-endian target.
! .IP "\fB\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
! Generate code for a little-endian target.
! .IP "\fB\-mxl\-reorder\fR" 4
  .IX Item "-mxl-reorder"
  Use reorder instructions (swap and byte reversed load/store).
! .IP "\fB\-mxl\-mode\-\fR\fIapp-model\fR" 4
  .IX Item "-mxl-mode-app-model"
! Select application model \fIapp-model\fR.  Valid models are
  .RS 4
! .IP "\fBexecutable\fR" 4
  .IX Item "executable"
  normal executable (default), uses startup code \fIcrt0.o\fR.
! .IP "\fBxmdstub\fR" 4
  .IX Item "xmdstub"
! for use with Xilinx Microprocessor Debugger (\s-1XMD\s0) based
  software intrusive debug agent called xmdstub. This uses startup file
  \&\fIcrt1.o\fR and sets the start address of the program to 0x800.
! .IP "\fBbootstrap\fR" 4
  .IX Item "bootstrap"
  for applications that are loaded using a bootloader.
  This model uses startup file \fIcrt2.o\fR which does not contain a processor
  reset vector handler. This is suitable for transferring control on a
  processor reset to the bootloader rather than the application.
! .IP "\fBnovectors\fR" 4
  .IX Item "novectors"
  for applications that do not require any of the
  MicroBlaze vectors. This option may be useful for applications running
--- 27986,28068 ----
  .PP
  \fIMicroBlaze Options\fR
  .IX Subsection "MicroBlaze Options"
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  Use software emulation for floating point (default).
! .IP \fB\-mhard\-float\fR 4
  .IX Item "-mhard-float"
! Use hardware floating\-point instructions.
! .IP \fB\-mmemcpy\fR 4
  .IX Item "-mmemcpy"
  Do not optimize block moves, use \f(CW\*(C`memcpy\*(C'\fR.
! .IP \fB\-mno\-clearbss\fR 4
  .IX Item "-mno-clearbss"
  This option is deprecated.  Use \fB\-fno\-zero\-initialized\-in\-bss\fR instead.
! .IP \fB\-mcpu=\fR\fIcpu\-type\fR 4
  .IX Item "-mcpu=cpu-type"
! Use features of, and schedule code for, the given CPU.
! Supported values are in the format \fBv\fR\fIX\fR\fB.\fR\fIYY\fR\fB.\fR\fIZ\fR,
! where \fIX\fR is a major version, \fIYY\fR is the minor version, and
  \&\fIZ\fR is compatibility code.  Example values are \fBv3.00.a\fR,
  \&\fBv4.00.b\fR, \fBv5.00.a\fR, \fBv5.00.b\fR, \fBv6.00.a\fR.
! .IP \fB\-mxl\-soft\-mul\fR 4
  .IX Item "-mxl-soft-mul"
  Use software multiply emulation (default).
! .IP \fB\-mxl\-soft\-div\fR 4
  .IX Item "-mxl-soft-div"
  Use software emulation for divides (default).
! .IP \fB\-mxl\-barrel\-shift\fR 4
  .IX Item "-mxl-barrel-shift"
  Use the hardware barrel shifter.
! .IP \fB\-mxl\-pattern\-compare\fR 4
  .IX Item "-mxl-pattern-compare"
  Use pattern compare instructions.
! .IP \fB\-msmall\-divides\fR 4
  .IX Item "-msmall-divides"
  Use table lookup optimization for small signed integer divisions.
! .IP \fB\-mxl\-stack\-check\fR 4
  .IX Item "-mxl-stack-check"
  This option is deprecated.  Use \fB\-fstack\-check\fR instead.
! .IP \fB\-mxl\-gp\-opt\fR 4
  .IX Item "-mxl-gp-opt"
! Use GP\-relative \f(CW\*(C`.sdata\*(C'\fR/\f(CW\*(C`.sbss\*(C'\fR sections.
! .IP \fB\-mxl\-multiply\-high\fR 4
  .IX Item "-mxl-multiply-high"
  Use multiply high instructions for high part of 32x32 multiply.
! .IP \fB\-mxl\-float\-convert\fR 4
  .IX Item "-mxl-float-convert"
! Use hardware floating\-point conversion instructions.
! .IP \fB\-mxl\-float\-sqrt\fR 4
  .IX Item "-mxl-float-sqrt"
! Use hardware floating\-point square root instruction.
! .IP \fB\-mbig\-endian\fR 4
  .IX Item "-mbig-endian"
! Generate code for a big\-endian target.
! .IP \fB\-mlittle\-endian\fR 4
  .IX Item "-mlittle-endian"
! Generate code for a little\-endian target.
! .IP \fB\-mxl\-reorder\fR 4
  .IX Item "-mxl-reorder"
  Use reorder instructions (swap and byte reversed load/store).
! .IP \fB\-mxl\-mode\-\fR\fIapp\-model\fR 4
  .IX Item "-mxl-mode-app-model"
! Select application model \fIapp\-model\fR.  Valid models are
  .RS 4
! .IP \fBexecutable\fR 4
  .IX Item "executable"
  normal executable (default), uses startup code \fIcrt0.o\fR.
! .IP \fBxmdstub\fR 4
  .IX Item "xmdstub"
! for use with Xilinx Microprocessor Debugger (XMD) based
  software intrusive debug agent called xmdstub. This uses startup file
  \&\fIcrt1.o\fR and sets the start address of the program to 0x800.
! .IP \fBbootstrap\fR 4
  .IX Item "bootstrap"
  for applications that are loaded using a bootloader.
  This model uses startup file \fIcrt2.o\fR which does not contain a processor
  reset vector handler. This is suitable for transferring control on a
  processor reset to the bootloader rather than the application.
! .IP \fBnovectors\fR 4
  .IX Item "novectors"
  for applications that do not require any of the
  MicroBlaze vectors. This option may be useful for applications running
*************** within a monitoring application. This mo
*** 28135,28163 ****
  .RE
  .RS 4
  .Sp
! Option \fB\-xl\-mode\-\fR\fIapp-model\fR is a deprecated alias for
! \&\fB\-mxl\-mode\-\fR\fIapp-model\fR.
  .RE
! .IP "\fB\-mpic\-data\-is\-text\-relative\fR" 4
  .IX Item "-mpic-data-is-text-relative"
  Assume that the displacement between the text and data segments is fixed
  at static link time.  This allows data to be referenced by offset from start of
! text address instead of \s-1GOT\s0 since PC-relative addressing is not supported.
  .PP
! \fI\s-1MIPS\s0 Options\fR
  .IX Subsection "MIPS Options"
! .IP "\fB\-EB\fR" 4
  .IX Item "-EB"
! Generate big-endian code.
! .IP "\fB\-EL\fR" 4
  .IX Item "-EL"
! Generate little-endian code.  This is the default for \fBmips*el\-*\-*\fR
  configurations.
! .IP "\fB\-march=\fR\fIarch\fR" 4
  .IX Item "-march=arch"
  Generate code that runs on \fIarch\fR, which can be the name of a
! generic \s-1MIPS ISA,\s0 or the name of a particular processor.
! The \s-1ISA\s0 names are:
  \&\fBmips1\fR, \fBmips2\fR, \fBmips3\fR, \fBmips4\fR,
  \&\fBmips32\fR, \fBmips32r2\fR, \fBmips32r3\fR, \fBmips32r5\fR,
  \&\fBmips32r6\fR, \fBmips64\fR, \fBmips64r2\fR, \fBmips64r3\fR,
--- 28070,28098 ----
  .RE
  .RS 4
  .Sp
! Option \fB\-xl\-mode\-\fR\fIapp\-model\fR is a deprecated alias for
! \&\fB\-mxl\-mode\-\fR\fIapp\-model\fR.
  .RE
! .IP \fB\-mpic\-data\-is\-text\-relative\fR 4
  .IX Item "-mpic-data-is-text-relative"
  Assume that the displacement between the text and data segments is fixed
  at static link time.  This allows data to be referenced by offset from start of
! text address instead of GOT since PC\-relative addressing is not supported.
  .PP
! \fIMIPS Options\fR
  .IX Subsection "MIPS Options"
! .IP \fB\-EB\fR 4
  .IX Item "-EB"
! Generate big\-endian code.
! .IP \fB\-EL\fR 4
  .IX Item "-EL"
! Generate little\-endian code.  This is the default for \fBmips*el\-*\-*\fR
  configurations.
! .IP \fB\-march=\fR\fIarch\fR 4
  .IX Item "-march=arch"
  Generate code that runs on \fIarch\fR, which can be the name of a
! generic MIPS ISA, or the name of a particular processor.
! The ISA names are:
  \&\fBmips1\fR, \fBmips2\fR, \fBmips3\fR, \fBmips4\fR,
  \&\fBmips32\fR, \fBmips32r2\fR, \fBmips32r3\fR, \fBmips32r5\fR,
  \&\fBmips32r6\fR, \fBmips64\fR, \fBmips64r2\fR, \fBmips64r3\fR,
*************** The processor names are:
*** 28192,28204 ****
  \&\fBvr4100\fR, \fBvr4111\fR, \fBvr4120\fR, \fBvr4130\fR, \fBvr4300\fR,
  \&\fBvr5000\fR, \fBvr5400\fR, \fBvr5500\fR,
  \&\fBxlr\fR and \fBxlp\fR.
! The special value \fBfrom-abi\fR selects the
! most compatible architecture for the selected \s-1ABI\s0 (that is,
  \&\fBmips1\fR for 32\-bit ABIs and \fBmips3\fR for 64\-bit ABIs).
  .Sp
  The native Linux/GNU toolchain also supports the value \fBnative\fR,
  which selects the best architecture option for the host processor.
! \&\fB\-march=native\fR has no effect if \s-1GCC\s0 does not recognize
  the processor.
  .Sp
  In processor names, a final \fB000\fR can be abbreviated as \fBk\fR
--- 28127,28139 ----
  \&\fBvr4100\fR, \fBvr4111\fR, \fBvr4120\fR, \fBvr4130\fR, \fBvr4300\fR,
  \&\fBvr5000\fR, \fBvr5400\fR, \fBvr5500\fR,
  \&\fBxlr\fR and \fBxlp\fR.
! The special value \fBfrom\-abi\fR selects the
! most compatible architecture for the selected ABI (that is,
  \&\fBmips1\fR for 32\-bit ABIs and \fBmips3\fR for 64\-bit ABIs).
  .Sp
  The native Linux/GNU toolchain also supports the value \fBnative\fR,
  which selects the best architecture option for the host processor.
! \&\fB\-march=native\fR has no effect if GCC does not recognize
  the processor.
  .Sp
  In processor names, a final \fB000\fR can be abbreviated as \fBk\fR
*************** For compatibility reasons, \fIn\fR\fBf\f
*** 28214,28437 ****
  for \fIn\fR\fBf2_1\fR while \fIn\fR\fBx\fR and \fIb\fR\fBfx\fR are
  accepted as synonyms for \fIn\fR\fBf1_1\fR.
  .Sp
! \&\s-1GCC\s0 defines two macros based on the value of this option.  The first
  is \f(CW\*(C`_MIPS_ARCH\*(C'\fR, which gives the name of target architecture, as
! a string.  The second has the form \f(CW\*(C`_MIPS_ARCH_\f(CIfoo\f(CW\*(C'\fR,
  where \fIfoo\fR is the capitalized value of \f(CW\*(C`_MIPS_ARCH\*(C'\fR.
  For example, \fB\-march=r2000\fR sets \f(CW\*(C`_MIPS_ARCH\*(C'\fR
  to \f(CW"r2000"\fR and defines the macro \f(CW\*(C`_MIPS_ARCH_R2000\*(C'\fR.
  .Sp
  Note that the \f(CW\*(C`_MIPS_ARCH\*(C'\fR macro uses the processor names given
  above.  In other words, it has the full prefix and does not
! abbreviate \fB000\fR as \fBk\fR.  In the case of \fBfrom-abi\fR,
  the macro names the resolved architecture (either \f(CW"mips1"\fR or
  \&\f(CW"mips3"\fR).  It names the default architecture when no
  \&\fB\-march\fR option is given.
! .IP "\fB\-mtune=\fR\fIarch\fR" 4
  .IX Item "-mtune=arch"
  Optimize for \fIarch\fR.  Among other things, this option controls
  the way instructions are scheduled, and the perceived cost of arithmetic
  operations.  The list of \fIarch\fR values is the same as for
  \&\fB\-march\fR.
  .Sp
! When this option is not used, \s-1GCC\s0 optimizes for the processor
  specified by \fB\-march\fR.  By using \fB\-march\fR and
  \&\fB\-mtune\fR together, it is possible to generate code that
  runs on a family of processors, but optimize the code for one
  particular member of that family.
  .Sp
  \&\fB\-mtune\fR defines the macros \f(CW\*(C`_MIPS_TUNE\*(C'\fR and
! \&\f(CW\*(C`_MIPS_TUNE_\f(CIfoo\f(CW\*(C'\fR, which work in the same way as the
  \&\fB\-march\fR ones described above.
! .IP "\fB\-mips1\fR" 4
  .IX Item "-mips1"
  Equivalent to \fB\-march=mips1\fR.
! .IP "\fB\-mips2\fR" 4
  .IX Item "-mips2"
  Equivalent to \fB\-march=mips2\fR.
! .IP "\fB\-mips3\fR" 4
  .IX Item "-mips3"
  Equivalent to \fB\-march=mips3\fR.
! .IP "\fB\-mips4\fR" 4
  .IX Item "-mips4"
  Equivalent to \fB\-march=mips4\fR.
! .IP "\fB\-mips32\fR" 4
  .IX Item "-mips32"
  Equivalent to \fB\-march=mips32\fR.
! .IP "\fB\-mips32r3\fR" 4
  .IX Item "-mips32r3"
  Equivalent to \fB\-march=mips32r3\fR.
! .IP "\fB\-mips32r5\fR" 4
  .IX Item "-mips32r5"
  Equivalent to \fB\-march=mips32r5\fR.
! .IP "\fB\-mips32r6\fR" 4
  .IX Item "-mips32r6"
  Equivalent to \fB\-march=mips32r6\fR.
! .IP "\fB\-mips64\fR" 4
  .IX Item "-mips64"
  Equivalent to \fB\-march=mips64\fR.
! .IP "\fB\-mips64r2\fR" 4
  .IX Item "-mips64r2"
  Equivalent to \fB\-march=mips64r2\fR.
! .IP "\fB\-mips64r3\fR" 4
  .IX Item "-mips64r3"
  Equivalent to \fB\-march=mips64r3\fR.
! .IP "\fB\-mips64r5\fR" 4
  .IX Item "-mips64r5"
  Equivalent to \fB\-march=mips64r5\fR.
! .IP "\fB\-mips64r6\fR" 4
  .IX Item "-mips64r6"
  Equivalent to \fB\-march=mips64r6\fR.
! .IP "\fB\-mips16\fR" 4
  .IX Item "-mips16"
  .PD 0
! .IP "\fB\-mno\-mips16\fR" 4
  .IX Item "-mno-mips16"
  .PD
! Generate (do not generate) \s-1MIPS16\s0 code.  If \s-1GCC\s0 is targeting a
! \&\s-1MIPS32\s0 or \s-1MIPS64\s0 architecture, it makes use of the MIPS16e \s-1ASE.\s0
  .Sp
! \&\s-1MIPS16\s0 code generation can also be controlled on a per-function basis
  by means of \f(CW\*(C`mips16\*(C'\fR and \f(CW\*(C`nomips16\*(C'\fR attributes.
! .IP "\fB\-mmips16e2\fR" 4
  .IX Item "-mmips16e2"
  .PD 0
! .IP "\fB\-mno\-mips16e2\fR" 4
  .IX Item "-mno-mips16e2"
  .PD
! Use (do not use) the MIPS16e2 \s-1ASE.\s0  This option modifies the behavior
! of the \fB\-mips16\fR option such that it targets the MIPS16e2 \s-1ASE.\s0
! .IP "\fB\-mflip\-mips16\fR" 4
  .IX Item "-mflip-mips16"
! Generate \s-1MIPS16\s0 code on alternating functions.  This option is provided
  for regression testing of mixed MIPS16/non\-MIPS16 code generation, and is
  not intended for ordinary use in compiling user code.
! .IP "\fB\-minterlink\-compressed\fR" 4
  .IX Item "-minterlink-compressed"
  .PD 0
! .IP "\fB\-mno\-interlink\-compressed\fR" 4
  .IX Item "-mno-interlink-compressed"
  .PD
! Require (do not require) that code using the standard (uncompressed) \s-1MIPS ISA\s0
! be link-compatible with \s-1MIPS16\s0 and microMIPS code, and vice versa.
  .Sp
! For example, code using the standard \s-1ISA\s0 encoding cannot jump directly
! to \s-1MIPS16\s0 or microMIPS code; it must either use a call or an indirect jump.
! \&\fB\-minterlink\-compressed\fR therefore disables direct jumps unless \s-1GCC\s0
  knows that the target of the jump is not compressed.
! .IP "\fB\-minterlink\-mips16\fR" 4
  .IX Item "-minterlink-mips16"
  .PD 0
! .IP "\fB\-mno\-interlink\-mips16\fR" 4
  .IX Item "-mno-interlink-mips16"
  .PD
  Aliases of \fB\-minterlink\-compressed\fR and
! \&\fB\-mno\-interlink\-compressed\fR.  These options predate the microMIPS \s-1ASE\s0
  and are retained for backwards compatibility.
! .IP "\fB\-mabi=32\fR" 4
  .IX Item "-mabi=32"
  .PD 0
! .IP "\fB\-mabi=o64\fR" 4
  .IX Item "-mabi=o64"
! .IP "\fB\-mabi=n32\fR" 4
  .IX Item "-mabi=n32"
! .IP "\fB\-mabi=64\fR" 4
  .IX Item "-mabi=64"
! .IP "\fB\-mabi=eabi\fR" 4
  .IX Item "-mabi=eabi"
  .PD
! Generate code for the given \s-1ABI.\s0
  .Sp
! Note that the \s-1EABI\s0 has a 32\-bit and a 64\-bit variant.  \s-1GCC\s0 normally
  generates 64\-bit code when you select a 64\-bit architecture, but you
  can use \fB\-mgp32\fR to get 32\-bit code instead.
  .Sp
! For information about the O64 \s-1ABI,\s0 see
  <\fBhttps://gcc.gnu.org/projects/mipso64\-abi.html\fR>.
  .Sp
! \&\s-1GCC\s0 supports a variant of the o32 \s-1ABI\s0 in which floating-point registers
  are 64 rather than 32 bits wide.  You can select this combination with
! \&\fB\-mabi=32\fR \fB\-mfp64\fR.  This \s-1ABI\s0 relies on the \f(CW\*(C`mthc1\*(C'\fR
  and \f(CW\*(C`mfhc1\*(C'\fR instructions and is therefore only supported for
! \&\s-1MIPS32R2, MIPS32R3\s0 and \s-1MIPS32R5\s0 processors.
  .Sp
  The register assignments for arguments and return values remain the
  same, but each scalar value is passed in a single 64\-bit register
  rather than a pair of 32\-bit registers.  For example, scalar
! floating-point values are returned in \fB\f(CB$f0\fB\fR only, not a
! \&\fB\f(CB$f0\fB\fR/\fB\f(CB$f1\fB\fR pair.  The set of call-saved registers also
! remains the same in that the even-numbered double-precision registers
  are saved.
  .Sp
! Two additional variants of the o32 \s-1ABI\s0 are supported to enable
! a transition from 32\-bit to 64\-bit registers.  These are \s-1FPXX\s0
! (\fB\-mfpxx\fR) and \s-1FP64A\s0 (\fB\-mfp64\fR \fB\-mno\-odd\-spreg\fR).
! The \s-1FPXX\s0 extension mandates that all code must execute correctly
  when run using 32\-bit or 64\-bit registers.  The code can be interlinked
! with either \s-1FP32\s0 or \s-1FP64,\s0 but not both.
! The \s-1FP64A\s0 extension is similar to the \s-1FP64\s0 extension but forbids the
! use of odd-numbered single-precision registers.  This can be used
! in conjunction with the \f(CW\*(C`FRE\*(C'\fR mode of FPUs in \s-1MIPS32R5\s0
! processors and allows both \s-1FP32\s0 and \s-1FP64A\s0 code to interlink and
! run in the same process without changing \s-1FPU\s0 modes.
! .IP "\fB\-mabicalls\fR" 4
  .IX Item "-mabicalls"
  .PD 0
! .IP "\fB\-mno\-abicalls\fR" 4
  .IX Item "-mno-abicalls"
  .PD
  Generate (do not generate) code that is suitable for SVR4\-style
  dynamic objects.  \fB\-mabicalls\fR is the default for SVR4\-based
  systems.
! .IP "\fB\-mshared\fR" 4
  .IX Item "-mshared"
  .PD 0
! .IP "\fB\-mno\-shared\fR" 4
  .IX Item "-mno-shared"
  .PD
! Generate (do not generate) code that is fully position-independent,
  and that can therefore be linked into shared libraries.  This option
  only affects \fB\-mabicalls\fR.
  .Sp
! All \fB\-mabicalls\fR code has traditionally been position-independent,
  regardless of options like \fB\-fPIC\fR and \fB\-fpic\fR.  However,
! as an extension, the \s-1GNU\s0 toolchain allows executables to use absolute
! accesses for locally-binding symbols.  It can also use shorter \s-1GP\s0
! initialization sequences and generate direct calls to locally-defined
  functions.  This mode is selected by \fB\-mno\-shared\fR.
  .Sp
  \&\fB\-mno\-shared\fR depends on binutils 2.16 or higher and generates
! objects that can only be linked by the \s-1GNU\s0 linker.  However, the option
! does not affect the \s-1ABI\s0 of the final executable; it only affects the \s-1ABI\s0
  of relocatable objects.  Using \fB\-mno\-shared\fR generally makes
  executables both smaller and quicker.
  .Sp
  \&\fB\-mshared\fR is the default.
! .IP "\fB\-mplt\fR" 4
  .IX Item "-mplt"
  .PD 0
! .IP "\fB\-mno\-plt\fR" 4
  .IX Item "-mno-plt"
  .PD
  Assume (do not assume) that the static and dynamic linkers
  support PLTs and copy relocations.  This option only affects
! \&\fB\-mno\-shared \-mabicalls\fR.  For the n64 \s-1ABI,\s0 this option
  has no effect without \fB\-msym32\fR.
  .Sp
  You can make \fB\-mplt\fR the default by configuring
! \&\s-1GCC\s0 with \fB\-\-with\-mips\-plt\fR.  The default is
  \&\fB\-mno\-plt\fR otherwise.
! .IP "\fB\-mxgot\fR" 4
  .IX Item "-mxgot"
  .PD 0
! .IP "\fB\-mno\-xgot\fR" 4
  .IX Item "-mno-xgot"
  .PD
  Lift (do not lift) the usual restrictions on the size of the global
  offset table.
  .Sp
! \&\s-1GCC\s0 normally uses a single instruction to load values from the \s-1GOT.\s0
! While this is relatively efficient, it only works if the \s-1GOT\s0
  is smaller than about 64k.  Anything larger causes the linker
  to report an error such as:
  .Sp
--- 28149,28372 ----
  for \fIn\fR\fBf2_1\fR while \fIn\fR\fBx\fR and \fIb\fR\fBfx\fR are
  accepted as synonyms for \fIn\fR\fBf1_1\fR.
  .Sp
! GCC defines two macros based on the value of this option.  The first
  is \f(CW\*(C`_MIPS_ARCH\*(C'\fR, which gives the name of target architecture, as
! a string.  The second has the form \f(CW\*(C`_MIPS_ARCH_\fR\f(CIfoo\fR\f(CW\*(C'\fR,
  where \fIfoo\fR is the capitalized value of \f(CW\*(C`_MIPS_ARCH\*(C'\fR.
  For example, \fB\-march=r2000\fR sets \f(CW\*(C`_MIPS_ARCH\*(C'\fR
  to \f(CW"r2000"\fR and defines the macro \f(CW\*(C`_MIPS_ARCH_R2000\*(C'\fR.
  .Sp
  Note that the \f(CW\*(C`_MIPS_ARCH\*(C'\fR macro uses the processor names given
  above.  In other words, it has the full prefix and does not
! abbreviate \fB000\fR as \fBk\fR.  In the case of \fBfrom\-abi\fR,
  the macro names the resolved architecture (either \f(CW"mips1"\fR or
  \&\f(CW"mips3"\fR).  It names the default architecture when no
  \&\fB\-march\fR option is given.
! .IP \fB\-mtune=\fR\fIarch\fR 4
  .IX Item "-mtune=arch"
  Optimize for \fIarch\fR.  Among other things, this option controls
  the way instructions are scheduled, and the perceived cost of arithmetic
  operations.  The list of \fIarch\fR values is the same as for
  \&\fB\-march\fR.
  .Sp
! When this option is not used, GCC optimizes for the processor
  specified by \fB\-march\fR.  By using \fB\-march\fR and
  \&\fB\-mtune\fR together, it is possible to generate code that
  runs on a family of processors, but optimize the code for one
  particular member of that family.
  .Sp
  \&\fB\-mtune\fR defines the macros \f(CW\*(C`_MIPS_TUNE\*(C'\fR and
! \&\f(CW\*(C`_MIPS_TUNE_\fR\f(CIfoo\fR\f(CW\*(C'\fR, which work in the same way as the
  \&\fB\-march\fR ones described above.
! .IP \fB\-mips1\fR 4
  .IX Item "-mips1"
  Equivalent to \fB\-march=mips1\fR.
! .IP \fB\-mips2\fR 4
  .IX Item "-mips2"
  Equivalent to \fB\-march=mips2\fR.
! .IP \fB\-mips3\fR 4
  .IX Item "-mips3"
  Equivalent to \fB\-march=mips3\fR.
! .IP \fB\-mips4\fR 4
  .IX Item "-mips4"
  Equivalent to \fB\-march=mips4\fR.
! .IP \fB\-mips32\fR 4
  .IX Item "-mips32"
  Equivalent to \fB\-march=mips32\fR.
! .IP \fB\-mips32r3\fR 4
  .IX Item "-mips32r3"
  Equivalent to \fB\-march=mips32r3\fR.
! .IP \fB\-mips32r5\fR 4
  .IX Item "-mips32r5"
  Equivalent to \fB\-march=mips32r5\fR.
! .IP \fB\-mips32r6\fR 4
  .IX Item "-mips32r6"
  Equivalent to \fB\-march=mips32r6\fR.
! .IP \fB\-mips64\fR 4
  .IX Item "-mips64"
  Equivalent to \fB\-march=mips64\fR.
! .IP \fB\-mips64r2\fR 4
  .IX Item "-mips64r2"
  Equivalent to \fB\-march=mips64r2\fR.
! .IP \fB\-mips64r3\fR 4
  .IX Item "-mips64r3"
  Equivalent to \fB\-march=mips64r3\fR.
! .IP \fB\-mips64r5\fR 4
  .IX Item "-mips64r5"
  Equivalent to \fB\-march=mips64r5\fR.
! .IP \fB\-mips64r6\fR 4
  .IX Item "-mips64r6"
  Equivalent to \fB\-march=mips64r6\fR.
! .IP \fB\-mips16\fR 4
  .IX Item "-mips16"
  .PD 0
! .IP \fB\-mno\-mips16\fR 4
  .IX Item "-mno-mips16"
  .PD
! Generate (do not generate) MIPS16 code.  If GCC is targeting a
! MIPS32 or MIPS64 architecture, it makes use of the MIPS16e ASE.
  .Sp
! MIPS16 code generation can also be controlled on a per\-function basis
  by means of \f(CW\*(C`mips16\*(C'\fR and \f(CW\*(C`nomips16\*(C'\fR attributes.
! .IP \fB\-mmips16e2\fR 4
  .IX Item "-mmips16e2"
  .PD 0
! .IP \fB\-mno\-mips16e2\fR 4
  .IX Item "-mno-mips16e2"
  .PD
! Use (do not use) the MIPS16e2 ASE.  This option modifies the behavior
! of the \fB\-mips16\fR option such that it targets the MIPS16e2 ASE.
! .IP \fB\-mflip\-mips16\fR 4
  .IX Item "-mflip-mips16"
! Generate MIPS16 code on alternating functions.  This option is provided
  for regression testing of mixed MIPS16/non\-MIPS16 code generation, and is
  not intended for ordinary use in compiling user code.
! .IP \fB\-minterlink\-compressed\fR 4
  .IX Item "-minterlink-compressed"
  .PD 0
! .IP \fB\-mno\-interlink\-compressed\fR 4
  .IX Item "-mno-interlink-compressed"
  .PD
! Require (do not require) that code using the standard (uncompressed) MIPS ISA
! be link\-compatible with MIPS16 and microMIPS code, and vice versa.
  .Sp
! For example, code using the standard ISA encoding cannot jump directly
! to MIPS16 or microMIPS code; it must either use a call or an indirect jump.
! \&\fB\-minterlink\-compressed\fR therefore disables direct jumps unless GCC
  knows that the target of the jump is not compressed.
! .IP \fB\-minterlink\-mips16\fR 4
  .IX Item "-minterlink-mips16"
  .PD 0
! .IP \fB\-mno\-interlink\-mips16\fR 4
  .IX Item "-mno-interlink-mips16"
  .PD
  Aliases of \fB\-minterlink\-compressed\fR and
! \&\fB\-mno\-interlink\-compressed\fR.  These options predate the microMIPS ASE
  and are retained for backwards compatibility.
! .IP \fB\-mabi=32\fR 4
  .IX Item "-mabi=32"
  .PD 0
! .IP \fB\-mabi=o64\fR 4
  .IX Item "-mabi=o64"
! .IP \fB\-mabi=n32\fR 4
  .IX Item "-mabi=n32"
! .IP \fB\-mabi=64\fR 4
  .IX Item "-mabi=64"
! .IP \fB\-mabi=eabi\fR 4
  .IX Item "-mabi=eabi"
  .PD
! Generate code for the given ABI.
  .Sp
! Note that the EABI has a 32\-bit and a 64\-bit variant.  GCC normally
  generates 64\-bit code when you select a 64\-bit architecture, but you
  can use \fB\-mgp32\fR to get 32\-bit code instead.
  .Sp
! For information about the O64 ABI, see
  <\fBhttps://gcc.gnu.org/projects/mipso64\-abi.html\fR>.
  .Sp
! GCC supports a variant of the o32 ABI in which floating\-point registers
  are 64 rather than 32 bits wide.  You can select this combination with
! \&\fB\-mabi=32\fR \fB\-mfp64\fR.  This ABI relies on the \f(CW\*(C`mthc1\*(C'\fR
  and \f(CW\*(C`mfhc1\*(C'\fR instructions and is therefore only supported for
! MIPS32R2, MIPS32R3 and MIPS32R5 processors.
  .Sp
  The register assignments for arguments and return values remain the
  same, but each scalar value is passed in a single 64\-bit register
  rather than a pair of 32\-bit registers.  For example, scalar
! floating\-point values are returned in \fR\f(CB$f0\fR\fB\fR only, not a
! \&\fB\fR\f(CB$f0\fR\fB\fR/\fB\fR\f(CB$f1\fR\fB\fR pair.  The set of call\-saved registers also
! remains the same in that the even\-numbered double\-precision registers
  are saved.
  .Sp
! Two additional variants of the o32 ABI are supported to enable
! a transition from 32\-bit to 64\-bit registers.  These are FPXX
! (\fB\-mfpxx\fR) and FP64A (\fB\-mfp64\fR \fB\-mno\-odd\-spreg\fR).
! The FPXX extension mandates that all code must execute correctly
  when run using 32\-bit or 64\-bit registers.  The code can be interlinked
! with either FP32 or FP64, but not both.
! The FP64A extension is similar to the FP64 extension but forbids the
! use of odd\-numbered single\-precision registers.  This can be used
! in conjunction with the \f(CW\*(C`FRE\*(C'\fR mode of FPUs in MIPS32R5
! processors and allows both FP32 and FP64A code to interlink and
! run in the same process without changing FPU modes.
! .IP \fB\-mabicalls\fR 4
  .IX Item "-mabicalls"
  .PD 0
! .IP \fB\-mno\-abicalls\fR 4
  .IX Item "-mno-abicalls"
  .PD
  Generate (do not generate) code that is suitable for SVR4\-style
  dynamic objects.  \fB\-mabicalls\fR is the default for SVR4\-based
  systems.
! .IP \fB\-mshared\fR 4
  .IX Item "-mshared"
  .PD 0
! .IP \fB\-mno\-shared\fR 4
  .IX Item "-mno-shared"
  .PD
! Generate (do not generate) code that is fully position\-independent,
  and that can therefore be linked into shared libraries.  This option
  only affects \fB\-mabicalls\fR.
  .Sp
! All \fB\-mabicalls\fR code has traditionally been position\-independent,
  regardless of options like \fB\-fPIC\fR and \fB\-fpic\fR.  However,
! as an extension, the GNU toolchain allows executables to use absolute
! accesses for locally\-binding symbols.  It can also use shorter GP
! initialization sequences and generate direct calls to locally\-defined
  functions.  This mode is selected by \fB\-mno\-shared\fR.
  .Sp
  \&\fB\-mno\-shared\fR depends on binutils 2.16 or higher and generates
! objects that can only be linked by the GNU linker.  However, the option
! does not affect the ABI of the final executable; it only affects the ABI
  of relocatable objects.  Using \fB\-mno\-shared\fR generally makes
  executables both smaller and quicker.
  .Sp
  \&\fB\-mshared\fR is the default.
! .IP \fB\-mplt\fR 4
  .IX Item "-mplt"
  .PD 0
! .IP \fB\-mno\-plt\fR 4
  .IX Item "-mno-plt"
  .PD
  Assume (do not assume) that the static and dynamic linkers
  support PLTs and copy relocations.  This option only affects
! \&\fB\-mno\-shared \-mabicalls\fR.  For the n64 ABI, this option
  has no effect without \fB\-msym32\fR.
  .Sp
  You can make \fB\-mplt\fR the default by configuring
! GCC with \fB\-\-with\-mips\-plt\fR.  The default is
  \&\fB\-mno\-plt\fR otherwise.
! .IP \fB\-mxgot\fR 4
  .IX Item "-mxgot"
  .PD 0
! .IP \fB\-mno\-xgot\fR 4
  .IX Item "-mno-xgot"
  .PD
  Lift (do not lift) the usual restrictions on the size of the global
  offset table.
  .Sp
! GCC normally uses a single instruction to load values from the GOT.
! While this is relatively efficient, it only works if the GOT
  is smaller than about 64k.  Anything larger causes the linker
  to report an error such as:
  .Sp
*************** value of a global symbol.
*** 28446,28735 ****
  .Sp
  Note that some linkers can create multiple GOTs.  If you have such a
  linker, you should only need to use \fB\-mxgot\fR when a single object
! file accesses more than 64k's worth of \s-1GOT\s0 entries.  Very few do.
  .Sp
! These options have no effect unless \s-1GCC\s0 is generating position
  independent code.
! .IP "\fB\-mgp32\fR" 4
  .IX Item "-mgp32"
! Assume that general-purpose registers are 32 bits wide.
! .IP "\fB\-mgp64\fR" 4
  .IX Item "-mgp64"
! Assume that general-purpose registers are 64 bits wide.
! .IP "\fB\-mfp32\fR" 4
  .IX Item "-mfp32"
! Assume that floating-point registers are 32 bits wide.
! .IP "\fB\-mfp64\fR" 4
  .IX Item "-mfp64"
! Assume that floating-point registers are 64 bits wide.
! .IP "\fB\-mfpxx\fR" 4
  .IX Item "-mfpxx"
! Do not assume the width of floating-point registers.
! .IP "\fB\-mhard\-float\fR" 4
  .IX Item "-mhard-float"
! Use floating-point coprocessor instructions.
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
! Do not use floating-point coprocessor instructions.  Implement
! floating-point calculations using library calls instead.
! .IP "\fB\-mno\-float\fR" 4
  .IX Item "-mno-float"
  Equivalent to \fB\-msoft\-float\fR, but additionally asserts that the
! program being compiled does not perform any floating-point operations.
! This option is presently supported only by some bare-metal \s-1MIPS\s0
  configurations, where it may select a special set of libraries
! that lack all floating-point support (including, for example, the
! floating-point \f(CW\*(C`printf\*(C'\fR formats).
  If code compiled with \fB\-mno\-float\fR accidentally contains
! floating-point operations, it is likely to suffer a link-time
! or run-time failure.
! .IP "\fB\-msingle\-float\fR" 4
  .IX Item "-msingle-float"
! Assume that the floating-point coprocessor only supports single-precision
  operations.
! .IP "\fB\-mdouble\-float\fR" 4
  .IX Item "-mdouble-float"
! Assume that the floating-point coprocessor supports double-precision
  operations.  This is the default.
! .IP "\fB\-modd\-spreg\fR" 4
  .IX Item "-modd-spreg"
  .PD 0
! .IP "\fB\-mno\-odd\-spreg\fR" 4
  .IX Item "-mno-odd-spreg"
  .PD
! Enable the use of odd-numbered single-precision floating-point registers
! for the o32 \s-1ABI.\s0  This is the default for processors that are known to
! support these registers.  When using the o32 \s-1FPXX ABI,\s0 \fB\-mno\-odd\-spreg\fR
  is set by default.
! .IP "\fB\-mabs=2008\fR" 4
  .IX Item "-mabs=2008"
  .PD 0
! .IP "\fB\-mabs=legacy\fR" 4
  .IX Item "-mabs=legacy"
  .PD
! These options control the treatment of the special not-a-number (NaN)
! \&\s-1IEEE 754\s0 floating-point data with the \f(CW\*(C`abs.\f(CIfmt\f(CW\*(C'\fR and
! \&\f(CW\*(C`neg.\f(CIfmt\f(CW\*(C'\fR machine instructions.
  .Sp
  By default or when \fB\-mabs=legacy\fR is used the legacy
  treatment is selected.  In this case these instructions are considered
  arithmetic and avoided where correct operation is required and the
  input operand might be a NaN.  A longer sequence of instructions that
! manipulate the sign bit of floating-point datum manually is used
  instead unless the \fB\-ffinite\-math\-only\fR option has also been
  specified.
  .Sp
! The \fB\-mabs=2008\fR option selects the \s-1IEEE 754\-2008\s0 treatment.  In
! this case these instructions are considered non-arithmetic and therefore
  operating correctly in all cases, including in particular where the
  input operand is a NaN.  These instructions are therefore always used
  for the respective operations.
! .IP "\fB\-mnan=2008\fR" 4
  .IX Item "-mnan=2008"
  .PD 0
! .IP "\fB\-mnan=legacy\fR" 4
  .IX Item "-mnan=legacy"
  .PD
! These options control the encoding of the special not-a-number (NaN)
! \&\s-1IEEE 754\s0 floating-point data.
  .Sp
  The \fB\-mnan=legacy\fR option selects the legacy encoding.  In this
  case quiet NaNs (qNaNs) are denoted by the first bit of their trailing
  significand field being 0, whereas signaling NaNs (sNaNs) are denoted
  by the first bit of their trailing significand field being 1.
  .Sp
! The \fB\-mnan=2008\fR option selects the \s-1IEEE 754\-2008\s0 encoding.  In
  this case qNaNs are denoted by the first bit of their trailing
  significand field being 1, whereas sNaNs are denoted by the first bit of
  their trailing significand field being 0.
  .Sp
! The default is \fB\-mnan=legacy\fR unless \s-1GCC\s0 has been configured with
  \&\fB\-\-with\-nan=2008\fR.
! .IP "\fB\-mllsc\fR" 4
  .IX Item "-mllsc"
  .PD 0
! .IP "\fB\-mno\-llsc\fR" 4
  .IX Item "-mno-llsc"
  .PD
  Use (do not use) \fBll\fR, \fBsc\fR, and \fBsync\fR instructions to
! implement atomic memory built-in functions.  When neither option is
! specified, \s-1GCC\s0 uses the instructions if the target architecture
  supports them.
  .Sp
  \&\fB\-mllsc\fR is useful if the runtime environment can emulate the
  instructions and \fB\-mno\-llsc\fR can be useful when compiling for
  nonstandard ISAs.  You can make either option the default by
! configuring \s-1GCC\s0 with \fB\-\-with\-llsc\fR and \fB\-\-without\-llsc\fR
  respectively.  \fB\-\-with\-llsc\fR is the default for some
  configurations; see the installation documentation for details.
! .IP "\fB\-mdsp\fR" 4
  .IX Item "-mdsp"
  .PD 0
! .IP "\fB\-mno\-dsp\fR" 4
  .IX Item "-mno-dsp"
  .PD
! Use (do not use) revision 1 of the \s-1MIPS DSP ASE.\s0
    This option defines the
  preprocessor macro \f(CW\*(C`_\|_mips_dsp\*(C'\fR.  It also defines
  \&\f(CW\*(C`_\|_mips_dsp_rev\*(C'\fR to 1.
! .IP "\fB\-mdspr2\fR" 4
  .IX Item "-mdspr2"
  .PD 0
! .IP "\fB\-mno\-dspr2\fR" 4
  .IX Item "-mno-dspr2"
  .PD
! Use (do not use) revision 2 of the \s-1MIPS DSP ASE.\s0
    This option defines the
  preprocessor macros \f(CW\*(C`_\|_mips_dsp\*(C'\fR and \f(CW\*(C`_\|_mips_dspr2\*(C'\fR.
  It also defines \f(CW\*(C`_\|_mips_dsp_rev\*(C'\fR to 2.
! .IP "\fB\-msmartmips\fR" 4
  .IX Item "-msmartmips"
  .PD 0
! .IP "\fB\-mno\-smartmips\fR" 4
  .IX Item "-mno-smartmips"
  .PD
! Use (do not use) the \s-1MIPS\s0 SmartMIPS \s-1ASE.\s0
! .IP "\fB\-mpaired\-single\fR" 4
  .IX Item "-mpaired-single"
  .PD 0
! .IP "\fB\-mno\-paired\-single\fR" 4
  .IX Item "-mno-paired-single"
  .PD
! Use (do not use) paired-single floating-point instructions.
    This option requires
! hardware floating-point support to be enabled.
! .IP "\fB\-mdmx\fR" 4
  .IX Item "-mdmx"
  .PD 0
! .IP "\fB\-mno\-mdmx\fR" 4
  .IX Item "-mno-mdmx"
  .PD
! Use (do not use) \s-1MIPS\s0 Digital Media Extension instructions.
  This option can only be used when generating 64\-bit code and requires
! hardware floating-point support to be enabled.
! .IP "\fB\-mips3d\fR" 4
  .IX Item "-mips3d"
  .PD 0
! .IP "\fB\-mno\-mips3d\fR" 4
  .IX Item "-mno-mips3d"
  .PD
! Use (do not use) the \s-1MIPS\-3D ASE.\s0  
  The option \fB\-mips3d\fR implies \fB\-mpaired\-single\fR.
! .IP "\fB\-mmicromips\fR" 4
  .IX Item "-mmicromips"
  .PD 0
! .IP "\fB\-mno\-micromips\fR" 4
  .IX Item "-mno-micromips"
  .PD
  Generate (do not generate) microMIPS code.
  .Sp
! MicroMIPS code generation can also be controlled on a per-function basis
  by means of \f(CW\*(C`micromips\*(C'\fR and \f(CW\*(C`nomicromips\*(C'\fR attributes.
! .IP "\fB\-mmt\fR" 4
  .IX Item "-mmt"
  .PD 0
! .IP "\fB\-mno\-mt\fR" 4
  .IX Item "-mno-mt"
  .PD
! Use (do not use) \s-1MT\s0 Multithreading instructions.
! .IP "\fB\-mmcu\fR" 4
  .IX Item "-mmcu"
  .PD 0
! .IP "\fB\-mno\-mcu\fR" 4
  .IX Item "-mno-mcu"
  .PD
! Use (do not use) the \s-1MIPS MCU ASE\s0 instructions.
! .IP "\fB\-meva\fR" 4
  .IX Item "-meva"
  .PD 0
! .IP "\fB\-mno\-eva\fR" 4
  .IX Item "-mno-eva"
  .PD
! Use (do not use) the \s-1MIPS\s0 Enhanced Virtual Addressing instructions.
! .IP "\fB\-mvirt\fR" 4
  .IX Item "-mvirt"
  .PD 0
! .IP "\fB\-mno\-virt\fR" 4
  .IX Item "-mno-virt"
  .PD
! Use (do not use) the \s-1MIPS\s0 Virtualization (\s-1VZ\s0) instructions.
! .IP "\fB\-mxpa\fR" 4
  .IX Item "-mxpa"
  .PD 0
! .IP "\fB\-mno\-xpa\fR" 4
  .IX Item "-mno-xpa"
  .PD
! Use (do not use) the \s-1MIPS\s0 eXtended Physical Address (\s-1XPA\s0) instructions.
! .IP "\fB\-mcrc\fR" 4
  .IX Item "-mcrc"
  .PD 0
! .IP "\fB\-mno\-crc\fR" 4
  .IX Item "-mno-crc"
  .PD
! Use (do not use) the \s-1MIPS\s0 Cyclic Redundancy Check (\s-1CRC\s0) instructions.
! .IP "\fB\-mginv\fR" 4
  .IX Item "-mginv"
  .PD 0
! .IP "\fB\-mno\-ginv\fR" 4
  .IX Item "-mno-ginv"
  .PD
! Use (do not use) the \s-1MIPS\s0 Global INValidate (\s-1GINV\s0) instructions.
! .IP "\fB\-mloongson\-mmi\fR" 4
  .IX Item "-mloongson-mmi"
  .PD 0
! .IP "\fB\-mno\-loongson\-mmi\fR" 4
  .IX Item "-mno-loongson-mmi"
  .PD
! Use (do not use) the \s-1MIPS\s0 Loongson MultiMedia extensions Instructions (\s-1MMI\s0).
! .IP "\fB\-mloongson\-ext\fR" 4
  .IX Item "-mloongson-ext"
  .PD 0
! .IP "\fB\-mno\-loongson\-ext\fR" 4
  .IX Item "-mno-loongson-ext"
  .PD
! Use (do not use) the \s-1MIPS\s0 Loongson EXTensions (\s-1EXT\s0) instructions.
! .IP "\fB\-mloongson\-ext2\fR" 4
  .IX Item "-mloongson-ext2"
  .PD 0
! .IP "\fB\-mno\-loongson\-ext2\fR" 4
  .IX Item "-mno-loongson-ext2"
  .PD
! Use (do not use) the \s-1MIPS\s0 Loongson EXTensions r2 (\s-1EXT2\s0) instructions.
! .IP "\fB\-mlong64\fR" 4
  .IX Item "-mlong64"
  Force \f(CW\*(C`long\*(C'\fR types to be 64 bits wide.  See \fB\-mlong32\fR for
  an explanation of the default and the way that the pointer size is
  determined.
! .IP "\fB\-mlong32\fR" 4
  .IX Item "-mlong32"
  Force \f(CW\*(C`long\*(C'\fR, \f(CW\*(C`int\*(C'\fR, and pointer types to be 32 bits wide.
  .Sp
  The default size of \f(CW\*(C`int\*(C'\fRs, \f(CW\*(C`long\*(C'\fRs and pointers depends on
! the \s-1ABI.\s0  All the supported ABIs use 32\-bit \f(CW\*(C`int\*(C'\fRs.  The n64 \s-1ABI\s0
! uses 64\-bit \f(CW\*(C`long\*(C'\fRs, as does the 64\-bit \s-1EABI\s0; the others use
  32\-bit \f(CW\*(C`long\*(C'\fRs.  Pointers are the same size as \f(CW\*(C`long\*(C'\fRs,
  or the same size as integer registers, whichever is smaller.
! .IP "\fB\-msym32\fR" 4
  .IX Item "-msym32"
  .PD 0
! .IP "\fB\-mno\-sym32\fR" 4
  .IX Item "-mno-sym32"
  .PD
  Assume (do not assume) that all symbols have 32\-bit values, regardless
! of the selected \s-1ABI.\s0  This option is useful in combination with
! \&\fB\-mabi=64\fR and \fB\-mno\-abicalls\fR because it allows \s-1GCC\s0
  to generate shorter and faster references to symbolic addresses.
  .IP "\fB\-G\fR \fInum\fR" 4
  .IX Item "-G num"
! Put definitions of externally-visible data in a small data section
! if that data is no bigger than \fInum\fR bytes.  \s-1GCC\s0 can then generate
  more efficient accesses to the data; see \fB\-mgpopt\fR for details.
  .Sp
  The default \fB\-G\fR option depends on the configuration.
! .IP "\fB\-mlocal\-sdata\fR" 4
  .IX Item "-mlocal-sdata"
  .PD 0
! .IP "\fB\-mno\-local\-sdata\fR" 4
  .IX Item "-mno-local-sdata"
  .PD
  Extend (do not extend) the \fB\-G\fR behavior to local data too,
--- 28381,28670 ----
  .Sp
  Note that some linkers can create multiple GOTs.  If you have such a
  linker, you should only need to use \fB\-mxgot\fR when a single object
! file accesses more than 64k\*(Aqs worth of GOT entries.  Very few do.
  .Sp
! These options have no effect unless GCC is generating position
  independent code.
! .IP \fB\-mgp32\fR 4
  .IX Item "-mgp32"
! Assume that general\-purpose registers are 32 bits wide.
! .IP \fB\-mgp64\fR 4
  .IX Item "-mgp64"
! Assume that general\-purpose registers are 64 bits wide.
! .IP \fB\-mfp32\fR 4
  .IX Item "-mfp32"
! Assume that floating\-point registers are 32 bits wide.
! .IP \fB\-mfp64\fR 4
  .IX Item "-mfp64"
! Assume that floating\-point registers are 64 bits wide.
! .IP \fB\-mfpxx\fR 4
  .IX Item "-mfpxx"
! Do not assume the width of floating\-point registers.
! .IP \fB\-mhard\-float\fR 4
  .IX Item "-mhard-float"
! Use floating\-point coprocessor instructions.
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
! Do not use floating\-point coprocessor instructions.  Implement
! floating\-point calculations using library calls instead.
! .IP \fB\-mno\-float\fR 4
  .IX Item "-mno-float"
  Equivalent to \fB\-msoft\-float\fR, but additionally asserts that the
! program being compiled does not perform any floating\-point operations.
! This option is presently supported only by some bare\-metal MIPS
  configurations, where it may select a special set of libraries
! that lack all floating\-point support (including, for example, the
! floating\-point \f(CW\*(C`printf\*(C'\fR formats).
  If code compiled with \fB\-mno\-float\fR accidentally contains
! floating\-point operations, it is likely to suffer a link\-time
! or run\-time failure.
! .IP \fB\-msingle\-float\fR 4
  .IX Item "-msingle-float"
! Assume that the floating\-point coprocessor only supports single\-precision
  operations.
! .IP \fB\-mdouble\-float\fR 4
  .IX Item "-mdouble-float"
! Assume that the floating\-point coprocessor supports double\-precision
  operations.  This is the default.
! .IP \fB\-modd\-spreg\fR 4
  .IX Item "-modd-spreg"
  .PD 0
! .IP \fB\-mno\-odd\-spreg\fR 4
  .IX Item "-mno-odd-spreg"
  .PD
! Enable the use of odd\-numbered single\-precision floating\-point registers
! for the o32 ABI.  This is the default for processors that are known to
! support these registers.  When using the o32 FPXX ABI, \fB\-mno\-odd\-spreg\fR
  is set by default.
! .IP \fB\-mabs=2008\fR 4
  .IX Item "-mabs=2008"
  .PD 0
! .IP \fB\-mabs=legacy\fR 4
  .IX Item "-mabs=legacy"
  .PD
! These options control the treatment of the special not\-a\-number (NaN)
! IEEE 754 floating\-point data with the \f(CW\*(C`abs.\fR\f(CIfmt\fR\f(CW\*(C'\fR and
! \&\f(CW\*(C`neg.\fR\f(CIfmt\fR\f(CW\*(C'\fR machine instructions.
  .Sp
  By default or when \fB\-mabs=legacy\fR is used the legacy
  treatment is selected.  In this case these instructions are considered
  arithmetic and avoided where correct operation is required and the
  input operand might be a NaN.  A longer sequence of instructions that
! manipulate the sign bit of floating\-point datum manually is used
  instead unless the \fB\-ffinite\-math\-only\fR option has also been
  specified.
  .Sp
! The \fB\-mabs=2008\fR option selects the IEEE 754\-2008 treatment.  In
! this case these instructions are considered non\-arithmetic and therefore
  operating correctly in all cases, including in particular where the
  input operand is a NaN.  These instructions are therefore always used
  for the respective operations.
! .IP \fB\-mnan=2008\fR 4
  .IX Item "-mnan=2008"
  .PD 0
! .IP \fB\-mnan=legacy\fR 4
  .IX Item "-mnan=legacy"
  .PD
! These options control the encoding of the special not\-a\-number (NaN)
! IEEE 754 floating\-point data.
  .Sp
  The \fB\-mnan=legacy\fR option selects the legacy encoding.  In this
  case quiet NaNs (qNaNs) are denoted by the first bit of their trailing
  significand field being 0, whereas signaling NaNs (sNaNs) are denoted
  by the first bit of their trailing significand field being 1.
  .Sp
! The \fB\-mnan=2008\fR option selects the IEEE 754\-2008 encoding.  In
  this case qNaNs are denoted by the first bit of their trailing
  significand field being 1, whereas sNaNs are denoted by the first bit of
  their trailing significand field being 0.
  .Sp
! The default is \fB\-mnan=legacy\fR unless GCC has been configured with
  \&\fB\-\-with\-nan=2008\fR.
! .IP \fB\-mllsc\fR 4
  .IX Item "-mllsc"
  .PD 0
! .IP \fB\-mno\-llsc\fR 4
  .IX Item "-mno-llsc"
  .PD
  Use (do not use) \fBll\fR, \fBsc\fR, and \fBsync\fR instructions to
! implement atomic memory built\-in functions.  When neither option is
! specified, GCC uses the instructions if the target architecture
  supports them.
  .Sp
  \&\fB\-mllsc\fR is useful if the runtime environment can emulate the
  instructions and \fB\-mno\-llsc\fR can be useful when compiling for
  nonstandard ISAs.  You can make either option the default by
! configuring GCC with \fB\-\-with\-llsc\fR and \fB\-\-without\-llsc\fR
  respectively.  \fB\-\-with\-llsc\fR is the default for some
  configurations; see the installation documentation for details.
! .IP \fB\-mdsp\fR 4
  .IX Item "-mdsp"
  .PD 0
! .IP \fB\-mno\-dsp\fR 4
  .IX Item "-mno-dsp"
  .PD
! Use (do not use) revision 1 of the MIPS DSP ASE.
    This option defines the
  preprocessor macro \f(CW\*(C`_\|_mips_dsp\*(C'\fR.  It also defines
  \&\f(CW\*(C`_\|_mips_dsp_rev\*(C'\fR to 1.
! .IP \fB\-mdspr2\fR 4
  .IX Item "-mdspr2"
  .PD 0
! .IP \fB\-mno\-dspr2\fR 4
  .IX Item "-mno-dspr2"
  .PD
! Use (do not use) revision 2 of the MIPS DSP ASE.
    This option defines the
  preprocessor macros \f(CW\*(C`_\|_mips_dsp\*(C'\fR and \f(CW\*(C`_\|_mips_dspr2\*(C'\fR.
  It also defines \f(CW\*(C`_\|_mips_dsp_rev\*(C'\fR to 2.
! .IP \fB\-msmartmips\fR 4
  .IX Item "-msmartmips"
  .PD 0
! .IP \fB\-mno\-smartmips\fR 4
  .IX Item "-mno-smartmips"
  .PD
! Use (do not use) the MIPS SmartMIPS ASE.
! .IP \fB\-mpaired\-single\fR 4
  .IX Item "-mpaired-single"
  .PD 0
! .IP \fB\-mno\-paired\-single\fR 4
  .IX Item "-mno-paired-single"
  .PD
! Use (do not use) paired\-single floating\-point instructions.
    This option requires
! hardware floating\-point support to be enabled.
! .IP \fB\-mdmx\fR 4
  .IX Item "-mdmx"
  .PD 0
! .IP \fB\-mno\-mdmx\fR 4
  .IX Item "-mno-mdmx"
  .PD
! Use (do not use) MIPS Digital Media Extension instructions.
  This option can only be used when generating 64\-bit code and requires
! hardware floating\-point support to be enabled.
! .IP \fB\-mips3d\fR 4
  .IX Item "-mips3d"
  .PD 0
! .IP \fB\-mno\-mips3d\fR 4
  .IX Item "-mno-mips3d"
  .PD
! Use (do not use) the MIPS\-3D ASE.  
  The option \fB\-mips3d\fR implies \fB\-mpaired\-single\fR.
! .IP \fB\-mmicromips\fR 4
  .IX Item "-mmicromips"
  .PD 0
! .IP \fB\-mno\-micromips\fR 4
  .IX Item "-mno-micromips"
  .PD
  Generate (do not generate) microMIPS code.
  .Sp
! MicroMIPS code generation can also be controlled on a per\-function basis
  by means of \f(CW\*(C`micromips\*(C'\fR and \f(CW\*(C`nomicromips\*(C'\fR attributes.
! .IP \fB\-mmt\fR 4
  .IX Item "-mmt"
  .PD 0
! .IP \fB\-mno\-mt\fR 4
  .IX Item "-mno-mt"
  .PD
! Use (do not use) MT Multithreading instructions.
! .IP \fB\-mmcu\fR 4
  .IX Item "-mmcu"
  .PD 0
! .IP \fB\-mno\-mcu\fR 4
  .IX Item "-mno-mcu"
  .PD
! Use (do not use) the MIPS MCU ASE instructions.
! .IP \fB\-meva\fR 4
  .IX Item "-meva"
  .PD 0
! .IP \fB\-mno\-eva\fR 4
  .IX Item "-mno-eva"
  .PD
! Use (do not use) the MIPS Enhanced Virtual Addressing instructions.
! .IP \fB\-mvirt\fR 4
  .IX Item "-mvirt"
  .PD 0
! .IP \fB\-mno\-virt\fR 4
  .IX Item "-mno-virt"
  .PD
! Use (do not use) the MIPS Virtualization (VZ) instructions.
! .IP \fB\-mxpa\fR 4
  .IX Item "-mxpa"
  .PD 0
! .IP \fB\-mno\-xpa\fR 4
  .IX Item "-mno-xpa"
  .PD
! Use (do not use) the MIPS eXtended Physical Address (XPA) instructions.
! .IP \fB\-mcrc\fR 4
  .IX Item "-mcrc"
  .PD 0
! .IP \fB\-mno\-crc\fR 4
  .IX Item "-mno-crc"
  .PD
! Use (do not use) the MIPS Cyclic Redundancy Check (CRC) instructions.
! .IP \fB\-mginv\fR 4
  .IX Item "-mginv"
  .PD 0
! .IP \fB\-mno\-ginv\fR 4
  .IX Item "-mno-ginv"
  .PD
! Use (do not use) the MIPS Global INValidate (GINV) instructions.
! .IP \fB\-mloongson\-mmi\fR 4
  .IX Item "-mloongson-mmi"
  .PD 0
! .IP \fB\-mno\-loongson\-mmi\fR 4
  .IX Item "-mno-loongson-mmi"
  .PD
! Use (do not use) the MIPS Loongson MultiMedia extensions Instructions (MMI).
! .IP \fB\-mloongson\-ext\fR 4
  .IX Item "-mloongson-ext"
  .PD 0
! .IP \fB\-mno\-loongson\-ext\fR 4
  .IX Item "-mno-loongson-ext"
  .PD
! Use (do not use) the MIPS Loongson EXTensions (EXT) instructions.
! .IP \fB\-mloongson\-ext2\fR 4
  .IX Item "-mloongson-ext2"
  .PD 0
! .IP \fB\-mno\-loongson\-ext2\fR 4
  .IX Item "-mno-loongson-ext2"
  .PD
! Use (do not use) the MIPS Loongson EXTensions r2 (EXT2) instructions.
! .IP \fB\-mlong64\fR 4
  .IX Item "-mlong64"
  Force \f(CW\*(C`long\*(C'\fR types to be 64 bits wide.  See \fB\-mlong32\fR for
  an explanation of the default and the way that the pointer size is
  determined.
! .IP \fB\-mlong32\fR 4
  .IX Item "-mlong32"
  Force \f(CW\*(C`long\*(C'\fR, \f(CW\*(C`int\*(C'\fR, and pointer types to be 32 bits wide.
  .Sp
  The default size of \f(CW\*(C`int\*(C'\fRs, \f(CW\*(C`long\*(C'\fRs and pointers depends on
! the ABI.  All the supported ABIs use 32\-bit \f(CW\*(C`int\*(C'\fRs.  The n64 ABI
! uses 64\-bit \f(CW\*(C`long\*(C'\fRs, as does the 64\-bit EABI; the others use
  32\-bit \f(CW\*(C`long\*(C'\fRs.  Pointers are the same size as \f(CW\*(C`long\*(C'\fRs,
  or the same size as integer registers, whichever is smaller.
! .IP \fB\-msym32\fR 4
  .IX Item "-msym32"
  .PD 0
! .IP \fB\-mno\-sym32\fR 4
  .IX Item "-mno-sym32"
  .PD
  Assume (do not assume) that all symbols have 32\-bit values, regardless
! of the selected ABI.  This option is useful in combination with
! \&\fB\-mabi=64\fR and \fB\-mno\-abicalls\fR because it allows GCC
  to generate shorter and faster references to symbolic addresses.
  .IP "\fB\-G\fR \fInum\fR" 4
  .IX Item "-G num"
! Put definitions of externally\-visible data in a small data section
! if that data is no bigger than \fInum\fR bytes.  GCC can then generate
  more efficient accesses to the data; see \fB\-mgpopt\fR for details.
  .Sp
  The default \fB\-G\fR option depends on the configuration.
! .IP \fB\-mlocal\-sdata\fR 4
  .IX Item "-mlocal-sdata"
  .PD 0
! .IP \fB\-mno\-local\-sdata\fR 4
  .IX Item "-mno-local-sdata"
  .PD
  Extend (do not extend) the \fB\-G\fR behavior to local data too,
*************** such as to static variables in C.  \fB\-
*** 28737,28753 ****
  default for all configurations.
  .Sp
  If the linker complains that an application is using too much small data,
! you might want to try rebuilding the less performance-critical parts with
  \&\fB\-mno\-local\-sdata\fR.  You might also want to build large
  libraries with \fB\-mno\-local\-sdata\fR, so that the libraries leave
  more room for the main program.
! .IP "\fB\-mextern\-sdata\fR" 4
  .IX Item "-mextern-sdata"
  .PD 0
! .IP "\fB\-mno\-extern\-sdata\fR" 4
  .IX Item "-mno-extern-sdata"
  .PD
! Assume (do not assume) that externally-defined data is in
  a small data section if the size of that data is within the \fB\-G\fR limit.
  \&\fB\-mextern\-sdata\fR is the default for all configurations.
  .Sp
--- 28672,28688 ----
  default for all configurations.
  .Sp
  If the linker complains that an application is using too much small data,
! you might want to try rebuilding the less performance\-critical parts with
  \&\fB\-mno\-local\-sdata\fR.  You might also want to build large
  libraries with \fB\-mno\-local\-sdata\fR, so that the libraries leave
  more room for the main program.
! .IP \fB\-mextern\-sdata\fR 4
  .IX Item "-mextern-sdata"
  .PD 0
! .IP \fB\-mno\-extern\-sdata\fR 4
  .IX Item "-mno-extern-sdata"
  .PD
! Assume (do not assume) that externally\-defined data is in
  a small data section if the size of that data is within the \fB\-G\fR limit.
  \&\fB\-mextern\-sdata\fR is the default for all configurations.
  .Sp
*************** If you compile a module \fIMod\fR with \
*** 28755,28764 ****
  \&\fInum\fR \fB\-mgpopt\fR, and \fIMod\fR references a variable \fIVar\fR
  that is no bigger than \fInum\fR bytes, you must make sure that \fIVar\fR
  is placed in a small data section.  If \fIVar\fR is defined by another
! module, you must either compile that module with a high-enough
! \&\fB\-G\fR setting or attach a \f(CW\*(C`section\*(C'\fR attribute to \fIVar\fR's
  definition.  If \fIVar\fR is common, you must link the application
! with a high-enough \fB\-G\fR setting.
  .Sp
  The easiest way of satisfying these restrictions is to compile
  and link every module with the same \fB\-G\fR option.  However,
--- 28690,28699 ----
  \&\fInum\fR \fB\-mgpopt\fR, and \fIMod\fR references a variable \fIVar\fR
  that is no bigger than \fInum\fR bytes, you must make sure that \fIVar\fR
  is placed in a small data section.  If \fIVar\fR is defined by another
! module, you must either compile that module with a high\-enough
! \&\fB\-G\fR setting or attach a \f(CW\*(C`section\*(C'\fR attribute to \fIVar\fR\*(Aqs
  definition.  If \fIVar\fR is common, you must link the application
! with a high\-enough \fB\-G\fR setting.
  .Sp
  The easiest way of satisfying these restrictions is to compile
  and link every module with the same \fB\-G\fR option.  However,
*************** you may wish to build a library that sup
*** 28766,28779 ****
  small data limits.  You can do this by compiling the library with
  the highest supported \fB\-G\fR setting and additionally using
  \&\fB\-mno\-extern\-sdata\fR to stop the library from making assumptions
! about externally-defined data.
! .IP "\fB\-mgpopt\fR" 4
  .IX Item "-mgpopt"
  .PD 0
! .IP "\fB\-mno\-gpopt\fR" 4
  .IX Item "-mno-gpopt"
  .PD
! Use (do not use) GP-relative accesses for symbols that are known to be
  in a small data section; see \fB\-G\fR, \fB\-mlocal\-sdata\fR and
  \&\fB\-mextern\-sdata\fR.  \fB\-mgpopt\fR is the default for all
  configurations.
--- 28701,28714 ----
  small data limits.  You can do this by compiling the library with
  the highest supported \fB\-G\fR setting and additionally using
  \&\fB\-mno\-extern\-sdata\fR to stop the library from making assumptions
! about externally\-defined data.
! .IP \fB\-mgpopt\fR 4
  .IX Item "-mgpopt"
  .PD 0
! .IP \fB\-mno\-gpopt\fR 4
  .IX Item "-mno-gpopt"
  .PD
! Use (do not use) GP\-relative accesses for symbols that are known to be
  in a small data section; see \fB\-G\fR, \fB\-mlocal\-sdata\fR and
  \&\fB\-mextern\-sdata\fR.  \fB\-mgpopt\fR is the default for all
  configurations.
*************** with \fB\-G0\fR.)
*** 28787,28881 ****
  .Sp
  \&\fB\-mno\-gpopt\fR implies \fB\-mno\-local\-sdata\fR and
  \&\fB\-mno\-extern\-sdata\fR.
! .IP "\fB\-membedded\-data\fR" 4
  .IX Item "-membedded-data"
  .PD 0
! .IP "\fB\-mno\-embedded\-data\fR" 4
  .IX Item "-mno-embedded-data"
  .PD
! Allocate variables to the read-only data section first if possible, then
  next in the small data section if possible, otherwise in data.  This gives
! slightly slower code than the default, but reduces the amount of \s-1RAM\s0 required
  when executing, and thus may be preferred for some embedded systems.
! .IP "\fB\-muninit\-const\-in\-rodata\fR" 4
  .IX Item "-muninit-const-in-rodata"
  .PD 0
! .IP "\fB\-mno\-uninit\-const\-in\-rodata\fR" 4
  .IX Item "-mno-uninit-const-in-rodata"
  .PD
! Put uninitialized \f(CW\*(C`const\*(C'\fR variables in the read-only data section.
  This option is only meaningful in conjunction with \fB\-membedded\-data\fR.
! .IP "\fB\-mcode\-readable=\fR\fIsetting\fR" 4
  .IX Item "-mcode-readable=setting"
! Specify whether \s-1GCC\s0 may generate code that reads from executable sections.
  There are three possible settings:
  .RS 4
! .IP "\fB\-mcode\-readable=yes\fR" 4
  .IX Item "-mcode-readable=yes"
  Instructions may freely access executable sections.  This is the
  default setting.
! .IP "\fB\-mcode\-readable=pcrel\fR" 4
  .IX Item "-mcode-readable=pcrel"
! \&\s-1MIPS16\s0 PC-relative load instructions can access executable sections,
  but other instructions must not do so.  This option is useful on 4KSc
  and 4KSd processors when the code TLBs have the Read Inhibit bit set.
  It is also useful on processors that can be configured to have a dual
! instruction/data \s-1SRAM\s0 interface and that, like the M4K, automatically
! redirect PC-relative loads to the instruction \s-1RAM.\s0
! .IP "\fB\-mcode\-readable=no\fR" 4
  .IX Item "-mcode-readable=no"
  Instructions must not access executable sections.  This option can be
  useful on targets that are configured to have a dual instruction/data
! \&\s-1SRAM\s0 interface but that (unlike the M4K) do not automatically redirect
! PC-relative loads to the instruction \s-1RAM.\s0
  .RE
  .RS 4
  .RE
! .IP "\fB\-msplit\-addresses\fR" 4
  .IX Item "-msplit-addresses"
  .PD 0
! .IP "\fB\-mno\-split\-addresses\fR" 4
  .IX Item "-mno-split-addresses"
  .PD
! Enable (disable) use of the \f(CW\*(C`%hi()\*(C'\fR and \f(CW\*(C`%lo()\*(C'\fR assembler
  relocation operators.  This option has been superseded by
  \&\fB\-mexplicit\-relocs\fR but is retained for backwards compatibility.
! .IP "\fB\-mexplicit\-relocs=none\fR" 4
  .IX Item "-mexplicit-relocs=none"
  .PD 0
! .IP "\fB\-mexplicit\-relocs=base\fR" 4
  .IX Item "-mexplicit-relocs=base"
! .IP "\fB\-mexplicit\-relocs=pcrel\fR" 4
  .IX Item "-mexplicit-relocs=pcrel"
! .IP "\fB\-mexplicit\-relocs\fR" 4
  .IX Item "-mexplicit-relocs"
! .IP "\fB\-mno\-explicit\-relocs\fR" 4
  .IX Item "-mno-explicit-relocs"
  .PD
  These options control whether explicit relocs (such as \f(CW%gp_rel\fR) are used.
! The default value depends on the version of \s-1GAS\s0 when \s-1GCC\s0 itself was built.
  .Sp
! The \f(CW\*(C`base\*(C'\fR explicit-relocs support was introduced into \s-1GAS\s0 in 2001.
! The \f(CW\*(C`pcrel\*(C'\fR explicit-relocs support was introduced into \s-1GAS\s0 in 2014,
  which supports \f(CW%pcrel_hi\fR and \f(CW%pcrel_lo\fR.
! .IP "\fB\-mcheck\-zero\-division\fR" 4
  .IX Item "-mcheck-zero-division"
  .PD 0
! .IP "\fB\-mno\-check\-zero\-division\fR" 4
  .IX Item "-mno-check-zero-division"
  .PD
  Trap (do not trap) on integer division by zero.
  .Sp
  The default is \fB\-mcheck\-zero\-division\fR.
! .IP "\fB\-mdivide\-traps\fR" 4
  .IX Item "-mdivide-traps"
  .PD 0
! .IP "\fB\-mdivide\-breaks\fR" 4
  .IX Item "-mdivide-breaks"
  .PD
! \&\s-1MIPS\s0 systems check for division by zero by generating either a
  conditional trap or a break instruction.  Using traps results in
! smaller code, but is only supported on \s-1MIPS II\s0 and later.  Also, some
  versions of the Linux kernel have a bug that prevents trap from
  generating the proper signal (\f(CW\*(C`SIGFPE\*(C'\fR).  Use \fB\-mdivide\-traps\fR to
  allow conditional traps on architectures that support them and
--- 28722,28816 ----
  .Sp
  \&\fB\-mno\-gpopt\fR implies \fB\-mno\-local\-sdata\fR and
  \&\fB\-mno\-extern\-sdata\fR.
! .IP \fB\-membedded\-data\fR 4
  .IX Item "-membedded-data"
  .PD 0
! .IP \fB\-mno\-embedded\-data\fR 4
  .IX Item "-mno-embedded-data"
  .PD
! Allocate variables to the read\-only data section first if possible, then
  next in the small data section if possible, otherwise in data.  This gives
! slightly slower code than the default, but reduces the amount of RAM required
  when executing, and thus may be preferred for some embedded systems.
! .IP \fB\-muninit\-const\-in\-rodata\fR 4
  .IX Item "-muninit-const-in-rodata"
  .PD 0
! .IP \fB\-mno\-uninit\-const\-in\-rodata\fR 4
  .IX Item "-mno-uninit-const-in-rodata"
  .PD
! Put uninitialized \f(CW\*(C`const\*(C'\fR variables in the read\-only data section.
  This option is only meaningful in conjunction with \fB\-membedded\-data\fR.
! .IP \fB\-mcode\-readable=\fR\fIsetting\fR 4
  .IX Item "-mcode-readable=setting"
! Specify whether GCC may generate code that reads from executable sections.
  There are three possible settings:
  .RS 4
! .IP \fB\-mcode\-readable=yes\fR 4
  .IX Item "-mcode-readable=yes"
  Instructions may freely access executable sections.  This is the
  default setting.
! .IP \fB\-mcode\-readable=pcrel\fR 4
  .IX Item "-mcode-readable=pcrel"
! MIPS16 PC\-relative load instructions can access executable sections,
  but other instructions must not do so.  This option is useful on 4KSc
  and 4KSd processors when the code TLBs have the Read Inhibit bit set.
  It is also useful on processors that can be configured to have a dual
! instruction/data SRAM interface and that, like the M4K, automatically
! redirect PC\-relative loads to the instruction RAM.
! .IP \fB\-mcode\-readable=no\fR 4
  .IX Item "-mcode-readable=no"
  Instructions must not access executable sections.  This option can be
  useful on targets that are configured to have a dual instruction/data
! SRAM interface but that (unlike the M4K) do not automatically redirect
! PC\-relative loads to the instruction RAM.
  .RE
  .RS 4
  .RE
! .IP \fB\-msplit\-addresses\fR 4
  .IX Item "-msplit-addresses"
  .PD 0
! .IP \fB\-mno\-split\-addresses\fR 4
  .IX Item "-mno-split-addresses"
  .PD
! Enable (disable) use of the \f(CW%hi()\fR and \f(CW%lo()\fR assembler
  relocation operators.  This option has been superseded by
  \&\fB\-mexplicit\-relocs\fR but is retained for backwards compatibility.
! .IP \fB\-mexplicit\-relocs=none\fR 4
  .IX Item "-mexplicit-relocs=none"
  .PD 0
! .IP \fB\-mexplicit\-relocs=base\fR 4
  .IX Item "-mexplicit-relocs=base"
! .IP \fB\-mexplicit\-relocs=pcrel\fR 4
  .IX Item "-mexplicit-relocs=pcrel"
! .IP \fB\-mexplicit\-relocs\fR 4
  .IX Item "-mexplicit-relocs"
! .IP \fB\-mno\-explicit\-relocs\fR 4
  .IX Item "-mno-explicit-relocs"
  .PD
  These options control whether explicit relocs (such as \f(CW%gp_rel\fR) are used.
! The default value depends on the version of GAS when GCC itself was built.
  .Sp
! The \f(CW\*(C`base\*(C'\fR explicit\-relocs support was introduced into GAS in 2001.
! The \f(CW\*(C`pcrel\*(C'\fR explicit\-relocs support was introduced into GAS in 2014,
  which supports \f(CW%pcrel_hi\fR and \f(CW%pcrel_lo\fR.
! .IP \fB\-mcheck\-zero\-division\fR 4
  .IX Item "-mcheck-zero-division"
  .PD 0
! .IP \fB\-mno\-check\-zero\-division\fR 4
  .IX Item "-mno-check-zero-division"
  .PD
  Trap (do not trap) on integer division by zero.
  .Sp
  The default is \fB\-mcheck\-zero\-division\fR.
! .IP \fB\-mdivide\-traps\fR 4
  .IX Item "-mdivide-traps"
  .PD 0
! .IP \fB\-mdivide\-breaks\fR 4
  .IX Item "-mdivide-breaks"
  .PD
! MIPS systems check for division by zero by generating either a
  conditional trap or a break instruction.  Using traps results in
! smaller code, but is only supported on MIPS II and later.  Also, some
  versions of the Linux kernel have a bug that prevents trap from
  generating the proper signal (\f(CW\*(C`SIGFPE\*(C'\fR).  Use \fB\-mdivide\-traps\fR to
  allow conditional traps on architectures that support them and
*************** allow conditional traps on architectures
*** 28883,28928 ****
  .Sp
  The default is usually \fB\-mdivide\-traps\fR, but this can be
  overridden at configure time using \fB\-\-with\-divide=breaks\fR.
! Divide-by-zero checks can be completely disabled using
  \&\fB\-mno\-check\-zero\-division\fR.
! .IP "\fB\-mload\-store\-pairs\fR" 4
  .IX Item "-mload-store-pairs"
  .PD 0
! .IP "\fB\-mno\-load\-store\-pairs\fR" 4
  .IX Item "-mno-load-store-pairs"
  .PD
  Enable (disable) an optimization that pairs consecutive load or store
  instructions to enable load/store bonding.  This option is enabled by
  default but only takes effect when the selected architecture is known
  to support bonding.
! .IP "\fB\-mstrict\-align\fR" 4
  .IX Item "-mstrict-align"
  .PD 0
! .IP "\fB\-mno\-strict\-align\fR" 4
  .IX Item "-mno-strict-align"
! .IP "\fB\-munaligned\-access\fR" 4
  .IX Item "-munaligned-access"
! .IP "\fB\-mno\-unaligned\-access\fR" 4
  .IX Item "-mno-unaligned-access"
  .PD
! Disable (enable) direct unaligned access for \s-1MIPS\s0 Release 6.
! MIPSr6 requires load/store unaligned-access support, by hardware or
  trap&emulate.  So \fB\-mstrict\-align\fR may be needed by kernel.  The
  options \fB\-munaligned\-access\fR and \fB\-mno\-unaligned\-access\fR
! are obsoleted, and only for backward-compatible.
! .IP "\fB\-mmemcpy\fR" 4
  .IX Item "-mmemcpy"
  .PD 0
! .IP "\fB\-mno\-memcpy\fR" 4
  .IX Item "-mno-memcpy"
  .PD
! Force (do not force) the use of \f(CW\*(C`memcpy\*(C'\fR for non-trivial block
! moves.  The default is \fB\-mno\-memcpy\fR, which allows \s-1GCC\s0 to inline
! most constant-sized copies.
! .IP "\fB\-mlong\-calls\fR" 4
  .IX Item "-mlong-calls"
  .PD 0
! .IP "\fB\-mno\-long\-calls\fR" 4
  .IX Item "-mno-long-calls"
  .PD
  Disable (do not disable) use of the \f(CW\*(C`jal\*(C'\fR instruction.  Calling
--- 28818,28863 ----
  .Sp
  The default is usually \fB\-mdivide\-traps\fR, but this can be
  overridden at configure time using \fB\-\-with\-divide=breaks\fR.
! Divide\-by\-zero checks can be completely disabled using
  \&\fB\-mno\-check\-zero\-division\fR.
! .IP \fB\-mload\-store\-pairs\fR 4
  .IX Item "-mload-store-pairs"
  .PD 0
! .IP \fB\-mno\-load\-store\-pairs\fR 4
  .IX Item "-mno-load-store-pairs"
  .PD
  Enable (disable) an optimization that pairs consecutive load or store
  instructions to enable load/store bonding.  This option is enabled by
  default but only takes effect when the selected architecture is known
  to support bonding.
! .IP \fB\-mstrict\-align\fR 4
  .IX Item "-mstrict-align"
  .PD 0
! .IP \fB\-mno\-strict\-align\fR 4
  .IX Item "-mno-strict-align"
! .IP \fB\-munaligned\-access\fR 4
  .IX Item "-munaligned-access"
! .IP \fB\-mno\-unaligned\-access\fR 4
  .IX Item "-mno-unaligned-access"
  .PD
! Disable (enable) direct unaligned access for MIPS Release 6.
! MIPSr6 requires load/store unaligned\-access support, by hardware or
  trap&emulate.  So \fB\-mstrict\-align\fR may be needed by kernel.  The
  options \fB\-munaligned\-access\fR and \fB\-mno\-unaligned\-access\fR
! are obsoleted, and only for backward\-compatible.
! .IP \fB\-mmemcpy\fR 4
  .IX Item "-mmemcpy"
  .PD 0
! .IP \fB\-mno\-memcpy\fR 4
  .IX Item "-mno-memcpy"
  .PD
! Force (do not force) the use of \f(CW\*(C`memcpy\*(C'\fR for non\-trivial block
! moves.  The default is \fB\-mno\-memcpy\fR, which allows GCC to inline
! most constant\-sized copies.
! .IP \fB\-mlong\-calls\fR 4
  .IX Item "-mlong-calls"
  .PD 0
! .IP \fB\-mno\-long\-calls\fR 4
  .IX Item "-mno-long-calls"
  .PD
  Disable (do not disable) use of the \f(CW\*(C`jal\*(C'\fR instruction.  Calling
*************** and callee to be in the same 256 megabyt
*** 28931,29039 ****
  .Sp
  This option has no effect on abicalls code.  The default is
  \&\fB\-mno\-long\-calls\fR.
! .IP "\fB\-mmad\fR" 4
  .IX Item "-mmad"
  .PD 0
! .IP "\fB\-mno\-mad\fR" 4
  .IX Item "-mno-mad"
  .PD
  Enable (disable) use of the \f(CW\*(C`mad\*(C'\fR, \f(CW\*(C`madu\*(C'\fR and \f(CW\*(C`mul\*(C'\fR
! instructions, as provided by the R4650 \s-1ISA.\s0
! .IP "\fB\-mimadd\fR" 4
  .IX Item "-mimadd"
  .PD 0
! .IP "\fB\-mno\-imadd\fR" 4
  .IX Item "-mno-imadd"
  .PD
  Enable (disable) use of the \f(CW\*(C`madd\*(C'\fR and \f(CW\*(C`msub\*(C'\fR integer
  instructions.  The default is \fB\-mimadd\fR on architectures
  that support \f(CW\*(C`madd\*(C'\fR and \f(CW\*(C`msub\*(C'\fR except for the 74k
  architecture where it was found to generate slower code.
! .IP "\fB\-mfused\-madd\fR" 4
  .IX Item "-mfused-madd"
  .PD 0
! .IP "\fB\-mno\-fused\-madd\fR" 4
  .IX Item "-mno-fused-madd"
  .PD
! Enable (disable) use of the floating-point multiply-accumulate
  instructions, when they are available.  The default is
  \&\fB\-mfused\-madd\fR.
  .Sp
! On the R8000 \s-1CPU\s0 when multiply-accumulate instructions are used,
  the intermediate product is calculated to infinite precision
! and is not subject to the \s-1FCSR\s0 Flush to Zero bit.  This may be
  undesirable in some circumstances.  On other processors the result
  is numerically identical to the equivalent computation using
  separate multiply, add, subtract and negate instructions.
! .IP "\fB\-nocpp\fR" 4
  .IX Item "-nocpp"
! Tell the \s-1MIPS\s0 assembler to not run its preprocessor over user
  assembler files (with a \fB.s\fR suffix) when assembling them.
! .IP "\fB\-mfix\-24k\fR" 4
  .IX Item "-mfix-24k"
  .PD 0
! .IP "\fB\-mno\-fix\-24k\fR" 4
  .IX Item "-mno-fix-24k"
  .PD
  Work around the 24K E48 (lost data on stores during refill) errata.
! The workarounds are implemented by the assembler rather than by \s-1GCC.\s0
! .IP "\fB\-mfix\-r4000\fR" 4
  .IX Item "-mfix-r4000"
  .PD 0
! .IP "\fB\-mno\-fix\-r4000\fR" 4
  .IX Item "-mno-fix-r4000"
  .PD
! Work around certain R4000 \s-1CPU\s0 errata:
  .RS 4
! .IP "\-" 4
! A double-word or a variable shift may give an incorrect result if executed
  immediately after starting an integer division.
! .IP "\-" 4
! A double-word or a variable shift may give an incorrect result if executed
  while an integer multiplication is in progress.
! .IP "\-" 4
  An integer division may give an incorrect result if started in a delay slot
  of a taken branch or a jump.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mfix\-r4400\fR" 4
  .IX Item "-mfix-r4400"
  .PD 0
! .IP "\fB\-mno\-fix\-r4400\fR" 4
  .IX Item "-mno-fix-r4400"
  .PD
! Work around certain R4400 \s-1CPU\s0 errata:
  .RS 4
! .IP "\-" 4
! A double-word or a variable shift may give an incorrect result if executed
  immediately after starting an integer division.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mfix\-r10000\fR" 4
  .IX Item "-mfix-r10000"
  .PD 0
! .IP "\fB\-mno\-fix\-r10000\fR" 4
  .IX Item "-mno-fix-r10000"
  .PD
  Work around certain R10000 errata:
  .RS 4
! .IP "\-" 4
  \&\f(CW\*(C`ll\*(C'\fR/\f(CW\*(C`sc\*(C'\fR sequences may not behave atomically on revisions
  prior to 3.0.  They may deadlock on revisions 2.6 and earlier.
  .RE
  .RS 4
  .Sp
  This option can only be used if the target architecture supports
! branch-likely instructions.  \fB\-mfix\-r10000\fR is the default when
  \&\fB\-march=r10000\fR is used; \fB\-mno\-fix\-r10000\fR is the default
  otherwise.
  .RE
! .IP "\fB\-mfix\-r5900\fR" 4
  .IX Item "-mfix-r5900"
  .PD 0
! .IP "\fB\-mno\-fix\-r5900\fR" 4
  .IX Item "-mno-fix-r5900"
  .PD
  Do not attempt to schedule the preceding instruction into the delay slot
--- 28866,28974 ----
  .Sp
  This option has no effect on abicalls code.  The default is
  \&\fB\-mno\-long\-calls\fR.
! .IP \fB\-mmad\fR 4
  .IX Item "-mmad"
  .PD 0
! .IP \fB\-mno\-mad\fR 4
  .IX Item "-mno-mad"
  .PD
  Enable (disable) use of the \f(CW\*(C`mad\*(C'\fR, \f(CW\*(C`madu\*(C'\fR and \f(CW\*(C`mul\*(C'\fR
! instructions, as provided by the R4650 ISA.
! .IP \fB\-mimadd\fR 4
  .IX Item "-mimadd"
  .PD 0
! .IP \fB\-mno\-imadd\fR 4
  .IX Item "-mno-imadd"
  .PD
  Enable (disable) use of the \f(CW\*(C`madd\*(C'\fR and \f(CW\*(C`msub\*(C'\fR integer
  instructions.  The default is \fB\-mimadd\fR on architectures
  that support \f(CW\*(C`madd\*(C'\fR and \f(CW\*(C`msub\*(C'\fR except for the 74k
  architecture where it was found to generate slower code.
! .IP \fB\-mfused\-madd\fR 4
  .IX Item "-mfused-madd"
  .PD 0
! .IP \fB\-mno\-fused\-madd\fR 4
  .IX Item "-mno-fused-madd"
  .PD
! Enable (disable) use of the floating\-point multiply\-accumulate
  instructions, when they are available.  The default is
  \&\fB\-mfused\-madd\fR.
  .Sp
! On the R8000 CPU when multiply\-accumulate instructions are used,
  the intermediate product is calculated to infinite precision
! and is not subject to the FCSR Flush to Zero bit.  This may be
  undesirable in some circumstances.  On other processors the result
  is numerically identical to the equivalent computation using
  separate multiply, add, subtract and negate instructions.
! .IP \fB\-nocpp\fR 4
  .IX Item "-nocpp"
! Tell the MIPS assembler to not run its preprocessor over user
  assembler files (with a \fB.s\fR suffix) when assembling them.
! .IP \fB\-mfix\-24k\fR 4
  .IX Item "-mfix-24k"
  .PD 0
! .IP \fB\-mno\-fix\-24k\fR 4
  .IX Item "-mno-fix-24k"
  .PD
  Work around the 24K E48 (lost data on stores during refill) errata.
! The workarounds are implemented by the assembler rather than by GCC.
! .IP \fB\-mfix\-r4000\fR 4
  .IX Item "-mfix-r4000"
  .PD 0
! .IP \fB\-mno\-fix\-r4000\fR 4
  .IX Item "-mno-fix-r4000"
  .PD
! Work around certain R4000 CPU errata:
  .RS 4
! .IP \- 4
! A double\-word or a variable shift may give an incorrect result if executed
  immediately after starting an integer division.
! .IP \- 4
! A double\-word or a variable shift may give an incorrect result if executed
  while an integer multiplication is in progress.
! .IP \- 4
  An integer division may give an incorrect result if started in a delay slot
  of a taken branch or a jump.
  .RE
  .RS 4
  .RE
! .IP \fB\-mfix\-r4400\fR 4
  .IX Item "-mfix-r4400"
  .PD 0
! .IP \fB\-mno\-fix\-r4400\fR 4
  .IX Item "-mno-fix-r4400"
  .PD
! Work around certain R4400 CPU errata:
  .RS 4
! .IP \- 4
! A double\-word or a variable shift may give an incorrect result if executed
  immediately after starting an integer division.
  .RE
  .RS 4
  .RE
! .IP \fB\-mfix\-r10000\fR 4
  .IX Item "-mfix-r10000"
  .PD 0
! .IP \fB\-mno\-fix\-r10000\fR 4
  .IX Item "-mno-fix-r10000"
  .PD
  Work around certain R10000 errata:
  .RS 4
! .IP \- 4
  \&\f(CW\*(C`ll\*(C'\fR/\f(CW\*(C`sc\*(C'\fR sequences may not behave atomically on revisions
  prior to 3.0.  They may deadlock on revisions 2.6 and earlier.
  .RE
  .RS 4
  .Sp
  This option can only be used if the target architecture supports
! branch\-likely instructions.  \fB\-mfix\-r10000\fR is the default when
  \&\fB\-march=r10000\fR is used; \fB\-mno\-fix\-r10000\fR is the default
  otherwise.
  .RE
! .IP \fB\-mfix\-r5900\fR 4
  .IX Item "-mfix-r5900"
  .PD 0
! .IP \fB\-mno\-fix\-r5900\fR 4
  .IX Item "-mno-fix-r5900"
  .PD
  Do not attempt to schedule the preceding instruction into the delay slot
*************** of a branch instruction placed at the en
*** 29041,29066 ****
  instructions or fewer and always schedule a \f(CW\*(C`nop\*(C'\fR instruction there
  instead.  The short loop bug under certain conditions causes loops to
  execute only once or twice, due to a hardware bug in the R5900 chip.  The
! workaround is implemented by the assembler rather than by \s-1GCC.\s0
! .IP "\fB\-mfix\-rm7000\fR" 4
  .IX Item "-mfix-rm7000"
  .PD 0
! .IP "\fB\-mno\-fix\-rm7000\fR" 4
  .IX Item "-mno-fix-rm7000"
  .PD
! Work around the \s-1RM7000\s0 \f(CW\*(C`dmult\*(C'\fR/\f(CW\*(C`dmultu\*(C'\fR errata.  The
! workarounds are implemented by the assembler rather than by \s-1GCC.\s0
! .IP "\fB\-mfix\-vr4120\fR" 4
  .IX Item "-mfix-vr4120"
  .PD 0
! .IP "\fB\-mno\-fix\-vr4120\fR" 4
  .IX Item "-mno-fix-vr4120"
  .PD
! Work around certain \s-1VR4120\s0 errata:
  .RS 4
! .IP "\-" 4
  \&\f(CW\*(C`dmultu\*(C'\fR does not always produce the correct result.
! .IP "\-" 4
  \&\f(CW\*(C`div\*(C'\fR and \f(CW\*(C`ddiv\*(C'\fR do not always produce the correct result if one
  of the operands is negative.
  .RE
--- 28976,29001 ----
  instructions or fewer and always schedule a \f(CW\*(C`nop\*(C'\fR instruction there
  instead.  The short loop bug under certain conditions causes loops to
  execute only once or twice, due to a hardware bug in the R5900 chip.  The
! workaround is implemented by the assembler rather than by GCC.
! .IP \fB\-mfix\-rm7000\fR 4
  .IX Item "-mfix-rm7000"
  .PD 0
! .IP \fB\-mno\-fix\-rm7000\fR 4
  .IX Item "-mno-fix-rm7000"
  .PD
! Work around the RM7000 \f(CW\*(C`dmult\*(C'\fR/\f(CW\*(C`dmultu\*(C'\fR errata.  The
! workarounds are implemented by the assembler rather than by GCC.
! .IP \fB\-mfix\-vr4120\fR 4
  .IX Item "-mfix-vr4120"
  .PD 0
! .IP \fB\-mno\-fix\-vr4120\fR 4
  .IX Item "-mno-fix-vr4120"
  .PD
! Work around certain VR4120 errata:
  .RS 4
! .IP \- 4
  \&\f(CW\*(C`dmultu\*(C'\fR does not always produce the correct result.
! .IP \- 4
  \&\f(CW\*(C`div\*(C'\fR and \f(CW\*(C`ddiv\*(C'\fR do not always produce the correct result if one
  of the operands is negative.
  .RE
*************** The workarounds for the division errata
*** 29070,29133 ****
  \&\fIlibgcc.a\fR.  At present, these functions are only provided by
  the \f(CW\*(C`mips64vr*\-elf\*(C'\fR configurations.
  .Sp
! Other \s-1VR4120\s0 errata require a \s-1NOP\s0 to be inserted between certain pairs of
! instructions.  These errata are handled by the assembler, not by \s-1GCC\s0 itself.
  .RE
! .IP "\fB\-mfix\-vr4130\fR" 4
  .IX Item "-mfix-vr4130"
! Work around the \s-1VR4130\s0 \f(CW\*(C`mflo\*(C'\fR/\f(CW\*(C`mfhi\*(C'\fR errata.  The
! workarounds are implemented by the assembler rather than by \s-1GCC,\s0
! although \s-1GCC\s0 avoids using \f(CW\*(C`mflo\*(C'\fR and \f(CW\*(C`mfhi\*(C'\fR if the
! \&\s-1VR4130\s0 \f(CW\*(C`macc\*(C'\fR, \f(CW\*(C`macchi\*(C'\fR, \f(CW\*(C`dmacc\*(C'\fR and \f(CW\*(C`dmacchi\*(C'\fR
  instructions are available instead.
! .IP "\fB\-mfix\-sb1\fR" 4
  .IX Item "-mfix-sb1"
  .PD 0
! .IP "\fB\-mno\-fix\-sb1\fR" 4
  .IX Item "-mno-fix-sb1"
  .PD
! Work around certain \s-1SB\-1 CPU\s0 core errata.
! (This flag currently works around the \s-1SB\-1\s0 revision 2
! \&\*(L"F1\*(R" and \*(L"F2\*(R" floating-point errata.)
! .IP "\fB\-mr10k\-cache\-barrier=\fR\fIsetting\fR" 4
  .IX Item "-mr10k-cache-barrier=setting"
! Specify whether \s-1GCC\s0 should insert cache barriers to avoid the
  side effects of speculation on R10K processors.
  .Sp
  In common with many processors, the R10K tries to predict the outcome
  of a conditional branch and speculatively executes instructions from
! the \*(L"taken\*(R" branch.  It later aborts these instructions if the
  predicted outcome is wrong.  However, on the R10K, even aborted
  instructions can have side effects.
  .Sp
  This problem only affects kernel stores and, depending on the system,
! kernel loads.  As an example, a speculatively-executed store may load
  the target memory into cache and mark the cache line as dirty, even if
! the store itself is later aborted.  If a \s-1DMA\s0 operation writes to the
! same area of memory before the \*(L"dirty\*(R" line is flushed, the cached
! data overwrites the DMA-ed data.  See the R10K processor manual
  for a full description, including other potential problems.
  .Sp
  One workaround is to insert cache barrier instructions before every memory
  access that might be speculatively executed and that might have side
  effects even if aborted.  \fB\-mr10k\-cache\-barrier=\fR\fIsetting\fR
! controls \s-1GCC\s0's implementation of this workaround.  It assumes that
  aborted accesses to any byte in the following regions does not have
  side effects:
  .RS 4
! .IP "1." 4
  .IX Item "1."
! the memory occupied by the current function's stack frame;
! .IP "2." 4
  .IX Item "2."
  the memory occupied by an incoming stack argument;
! .IP "3." 4
  .IX Item "3."
! the memory occupied by an object with a link-time-constant address.
  .RE
  .RS 4
  .Sp
! It is the kernel's responsibility to ensure that speculative
  accesses to these regions are indeed safe.
  .Sp
  If the input program contains a function declaration such as:
--- 29005,29068 ----
  \&\fIlibgcc.a\fR.  At present, these functions are only provided by
  the \f(CW\*(C`mips64vr*\-elf\*(C'\fR configurations.
  .Sp
! Other VR4120 errata require a NOP to be inserted between certain pairs of
! instructions.  These errata are handled by the assembler, not by GCC itself.
  .RE
! .IP \fB\-mfix\-vr4130\fR 4
  .IX Item "-mfix-vr4130"
! Work around the VR4130 \f(CW\*(C`mflo\*(C'\fR/\f(CW\*(C`mfhi\*(C'\fR errata.  The
! workarounds are implemented by the assembler rather than by GCC,
! although GCC avoids using \f(CW\*(C`mflo\*(C'\fR and \f(CW\*(C`mfhi\*(C'\fR if the
! VR4130 \f(CW\*(C`macc\*(C'\fR, \f(CW\*(C`macchi\*(C'\fR, \f(CW\*(C`dmacc\*(C'\fR and \f(CW\*(C`dmacchi\*(C'\fR
  instructions are available instead.
! .IP \fB\-mfix\-sb1\fR 4
  .IX Item "-mfix-sb1"
  .PD 0
! .IP \fB\-mno\-fix\-sb1\fR 4
  .IX Item "-mno-fix-sb1"
  .PD
! Work around certain SB\-1 CPU core errata.
! (This flag currently works around the SB\-1 revision 2
! "F1" and "F2" floating\-point errata.)
! .IP \fB\-mr10k\-cache\-barrier=\fR\fIsetting\fR 4
  .IX Item "-mr10k-cache-barrier=setting"
! Specify whether GCC should insert cache barriers to avoid the
  side effects of speculation on R10K processors.
  .Sp
  In common with many processors, the R10K tries to predict the outcome
  of a conditional branch and speculatively executes instructions from
! the "taken" branch.  It later aborts these instructions if the
  predicted outcome is wrong.  However, on the R10K, even aborted
  instructions can have side effects.
  .Sp
  This problem only affects kernel stores and, depending on the system,
! kernel loads.  As an example, a speculatively\-executed store may load
  the target memory into cache and mark the cache line as dirty, even if
! the store itself is later aborted.  If a DMA operation writes to the
! same area of memory before the "dirty" line is flushed, the cached
! data overwrites the DMA\-ed data.  See the R10K processor manual
  for a full description, including other potential problems.
  .Sp
  One workaround is to insert cache barrier instructions before every memory
  access that might be speculatively executed and that might have side
  effects even if aborted.  \fB\-mr10k\-cache\-barrier=\fR\fIsetting\fR
! controls GCC\*(Aqs implementation of this workaround.  It assumes that
  aborted accesses to any byte in the following regions does not have
  side effects:
  .RS 4
! .IP 1. 4
  .IX Item "1."
! the memory occupied by the current function\*(Aqs stack frame;
! .IP 2. 4
  .IX Item "2."
  the memory occupied by an incoming stack argument;
! .IP 3. 4
  .IX Item "3."
! the memory occupied by an object with a link\-time\-constant address.
  .RE
  .RS 4
  .Sp
! It is the kernel\*(Aqs responsibility to ensure that speculative
  accesses to these regions are indeed safe.
  .Sp
  If the input program contains a function declaration such as:
*************** If the input program contains a function
*** 29137,29166 ****
  .Ve
  .Sp
  then the implementation of \f(CW\*(C`foo\*(C'\fR must allow \f(CW\*(C`j foo\*(C'\fR and
! \&\f(CW\*(C`jal foo\*(C'\fR to be executed speculatively.  \s-1GCC\s0 honors this
! restriction for functions it compiles itself.  It expects non-GCC
! functions (such as hand-written assembly code) to do the same.
  .Sp
  The option has three forms:
! .IP "\fB\-mr10k\-cache\-barrier=load\-store\fR" 4
  .IX Item "-mr10k-cache-barrier=load-store"
  Insert a cache barrier before a load or store that might be
  speculatively executed and that might have side effects even
  if aborted.
! .IP "\fB\-mr10k\-cache\-barrier=store\fR" 4
  .IX Item "-mr10k-cache-barrier=store"
  Insert a cache barrier before a store that might be speculatively
  executed and that might have side effects even if aborted.
! .IP "\fB\-mr10k\-cache\-barrier=none\fR" 4
  .IX Item "-mr10k-cache-barrier=none"
  Disable the insertion of cache barriers.  This is the default setting.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mflush\-func=\fR\fIfunc\fR" 4
  .IX Item "-mflush-func=func"
  .PD 0
! .IP "\fB\-mno\-flush\-func\fR" 4
  .IX Item "-mno-flush-func"
  .PD
  Specifies the function to call to flush the I and D caches, or to not
--- 29072,29101 ----
  .Ve
  .Sp
  then the implementation of \f(CW\*(C`foo\*(C'\fR must allow \f(CW\*(C`j foo\*(C'\fR and
! \&\f(CW\*(C`jal foo\*(C'\fR to be executed speculatively.  GCC honors this
! restriction for functions it compiles itself.  It expects non\-GCC
! functions (such as hand\-written assembly code) to do the same.
  .Sp
  The option has three forms:
! .IP \fB\-mr10k\-cache\-barrier=load\-store\fR 4
  .IX Item "-mr10k-cache-barrier=load-store"
  Insert a cache barrier before a load or store that might be
  speculatively executed and that might have side effects even
  if aborted.
! .IP \fB\-mr10k\-cache\-barrier=store\fR 4
  .IX Item "-mr10k-cache-barrier=store"
  Insert a cache barrier before a store that might be speculatively
  executed and that might have side effects even if aborted.
! .IP \fB\-mr10k\-cache\-barrier=none\fR 4
  .IX Item "-mr10k-cache-barrier=none"
  Disable the insertion of cache barriers.  This is the default setting.
  .RE
  .RS 4
  .RE
! .IP \fB\-mflush\-func=\fR\fIfunc\fR 4
  .IX Item "-mflush-func=func"
  .PD 0
! .IP \fB\-mno\-flush\-func\fR 4
  .IX Item "-mno-flush-func"
  .PD
  Specifies the function to call to flush the I and D caches, or to not
*************** call any such function.  If called, the
*** 29168,29200 ****
  arguments as the common \f(CW\*(C`_flush_func\*(C'\fR, that is, the address of the
  memory range for which the cache is being flushed, the size of the
  memory range, and the number 3 (to flush both caches).  The default
! depends on the target \s-1GCC\s0 was configured for, but commonly is either
  \&\f(CW\*(C`_flush_func\*(C'\fR or \f(CW\*(C`_\|_cpu_flush\*(C'\fR.
! .IP "\fB\-mbranch\-cost=\fR\fInum\fR" 4
  .IX Item "-mbranch-cost=num"
! Set the cost of branches to roughly \fInum\fR \*(L"simple\*(R" instructions.
  This cost is only a heuristic and is not guaranteed to produce
  consistent results across releases.  A zero cost redundantly selects
  the default, which is based on the \fB\-mtune\fR setting.
! .IP "\fB\-mbranch\-likely\fR" 4
  .IX Item "-mbranch-likely"
  .PD 0
! .IP "\fB\-mno\-branch\-likely\fR" 4
  .IX Item "-mno-branch-likely"
  .PD
  Enable or disable use of Branch Likely instructions, regardless of the
  default for the selected architecture.  By default, Branch Likely
  instructions may be generated if they are supported by the selected
! architecture.  An exception is for the \s-1MIPS32\s0 and \s-1MIPS64\s0 architectures
  and processors that implement those architectures; for those, Branch
! Likely instructions are not be generated by default because the \s-1MIPS32\s0
! and \s-1MIPS64\s0 architectures specifically deprecate their use.
! .IP "\fB\-mcompact\-branches=never\fR" 4
  .IX Item "-mcompact-branches=never"
  .PD 0
! .IP "\fB\-mcompact\-branches=optimal\fR" 4
  .IX Item "-mcompact-branches=optimal"
! .IP "\fB\-mcompact\-branches=always\fR" 4
  .IX Item "-mcompact-branches=always"
  .PD
  These options control which form of branches will be generated.  The
--- 29103,29135 ----
  arguments as the common \f(CW\*(C`_flush_func\*(C'\fR, that is, the address of the
  memory range for which the cache is being flushed, the size of the
  memory range, and the number 3 (to flush both caches).  The default
! depends on the target GCC was configured for, but commonly is either
  \&\f(CW\*(C`_flush_func\*(C'\fR or \f(CW\*(C`_\|_cpu_flush\*(C'\fR.
! .IP \fB\-mbranch\-cost=\fR\fInum\fR 4
  .IX Item "-mbranch-cost=num"
! Set the cost of branches to roughly \fInum\fR "simple" instructions.
  This cost is only a heuristic and is not guaranteed to produce
  consistent results across releases.  A zero cost redundantly selects
  the default, which is based on the \fB\-mtune\fR setting.
! .IP \fB\-mbranch\-likely\fR 4
  .IX Item "-mbranch-likely"
  .PD 0
! .IP \fB\-mno\-branch\-likely\fR 4
  .IX Item "-mno-branch-likely"
  .PD
  Enable or disable use of Branch Likely instructions, regardless of the
  default for the selected architecture.  By default, Branch Likely
  instructions may be generated if they are supported by the selected
! architecture.  An exception is for the MIPS32 and MIPS64 architectures
  and processors that implement those architectures; for those, Branch
! Likely instructions are not be generated by default because the MIPS32
! and MIPS64 architectures specifically deprecate their use.
! .IP \fB\-mcompact\-branches=never\fR 4
  .IX Item "-mcompact-branches=never"
  .PD 0
! .IP \fB\-mcompact\-branches=optimal\fR 4
  .IX Item "-mcompact-branches=optimal"
! .IP \fB\-mcompact\-branches=always\fR 4
  .IX Item "-mcompact-branches=always"
  .PD
  These options control which form of branches will be generated.  The
*************** The \fB\-mcompact\-branches=never\fR opt
*** 29204,29210 ****
  instructions will never be generated.
  .Sp
  The \fB\-mcompact\-branches=always\fR option ensures that a compact
! branch instruction will be generated if available for \s-1MIPS\s0 Release 6 onwards.
  If a compact branch instruction is not available (or pre\-R6),
  a delay slot form of the branch will be used instead.
  .Sp
--- 29139,29145 ----
  instructions will never be generated.
  .Sp
  The \fB\-mcompact\-branches=always\fR option ensures that a compact
! branch instruction will be generated if available for MIPS Release 6 onwards.
  If a compact branch instruction is not available (or pre\-R6),
  a delay slot form of the branch will be used instead.
  .Sp
*************** The behavior for MIPS16/microMIPS may ch
*** 29213,29253 ****
  since they do have some compact branch instructions.
  .Sp
  The \fB\-mcompact\-branches=optimal\fR option will cause a delay slot
! branch to be used if one is available in the current \s-1ISA\s0 and the delay
  slot is successfully filled.  If the delay slot is not filled, a compact
  branch will be chosen if one is available.
! .IP "\fB\-mfp\-exceptions\fR" 4
  .IX Item "-mfp-exceptions"
  .PD 0
! .IP "\fB\-mno\-fp\-exceptions\fR" 4
  .IX Item "-mno-fp-exceptions"
  .PD
! Specifies whether \s-1FP\s0 exceptions are enabled.  This affects how
! \&\s-1FP\s0 instructions are scheduled for some processors.
! The default is that \s-1FP\s0 exceptions are
  enabled.
  .Sp
! For instance, on the \s-1SB\-1,\s0 if \s-1FP\s0 exceptions are disabled, and we are emitting
! 64\-bit code, then we can use both \s-1FP\s0 pipes.  Otherwise, we can only use one
! \&\s-1FP\s0 pipe.
! .IP "\fB\-mvr4130\-align\fR" 4
  .IX Item "-mvr4130-align"
  .PD 0
! .IP "\fB\-mno\-vr4130\-align\fR" 4
  .IX Item "-mno-vr4130-align"
  .PD
! The \s-1VR4130\s0 pipeline is two-way superscalar, but can only issue two
  instructions together if the first one is 8\-byte aligned.  When this
! option is enabled, \s-1GCC\s0 aligns pairs of instructions that it
  thinks should execute in parallel.
  .Sp
! This option only has an effect when optimizing for the \s-1VR4130.\s0
  It normally makes code faster, but at the expense of making it bigger.
  It is enabled by default at optimization level \fB\-O3\fR.
! .IP "\fB\-msynci\fR" 4
  .IX Item "-msynci"
  .PD 0
! .IP "\fB\-mno\-synci\fR" 4
  .IX Item "-mno-synci"
  .PD
  Enable (disable) generation of \f(CW\*(C`synci\*(C'\fR instructions on
--- 29148,29188 ----
  since they do have some compact branch instructions.
  .Sp
  The \fB\-mcompact\-branches=optimal\fR option will cause a delay slot
! branch to be used if one is available in the current ISA and the delay
  slot is successfully filled.  If the delay slot is not filled, a compact
  branch will be chosen if one is available.
! .IP \fB\-mfp\-exceptions\fR 4
  .IX Item "-mfp-exceptions"
  .PD 0
! .IP \fB\-mno\-fp\-exceptions\fR 4
  .IX Item "-mno-fp-exceptions"
  .PD
! Specifies whether FP exceptions are enabled.  This affects how
! FP instructions are scheduled for some processors.
! The default is that FP exceptions are
  enabled.
  .Sp
! For instance, on the SB\-1, if FP exceptions are disabled, and we are emitting
! 64\-bit code, then we can use both FP pipes.  Otherwise, we can only use one
! FP pipe.
! .IP \fB\-mvr4130\-align\fR 4
  .IX Item "-mvr4130-align"
  .PD 0
! .IP \fB\-mno\-vr4130\-align\fR 4
  .IX Item "-mno-vr4130-align"
  .PD
! The VR4130 pipeline is two\-way superscalar, but can only issue two
  instructions together if the first one is 8\-byte aligned.  When this
! option is enabled, GCC aligns pairs of instructions that it
  thinks should execute in parallel.
  .Sp
! This option only has an effect when optimizing for the VR4130.
  It normally makes code faster, but at the expense of making it bigger.
  It is enabled by default at optimization level \fB\-O3\fR.
! .IP \fB\-msynci\fR 4
  .IX Item "-msynci"
  .PD 0
! .IP \fB\-mno\-synci\fR 4
  .IX Item "-mno-synci"
  .PD
  Enable (disable) generation of \f(CW\*(C`synci\*(C'\fR instructions on
*************** enabled) are generated when \f(CW\*(C`_\
*** 29256,29408 ****
  compiled.
  .Sp
  This option defaults to \fB\-mno\-synci\fR, but the default can be
! overridden by configuring \s-1GCC\s0 with \fB\-\-with\-synci\fR.
  .Sp
  When compiling code for single processor systems, it is generally safe
! to use \f(CW\*(C`synci\*(C'\fR.  However, on many multi-core (\s-1SMP\s0) systems, it
  does not invalidate the instruction caches on all cores and may lead
  to undefined behavior.
! .IP "\fB\-mrelax\-pic\-calls\fR" 4
  .IX Item "-mrelax-pic-calls"
  .PD 0
! .IP "\fB\-mno\-relax\-pic\-calls\fR" 4
  .IX Item "-mno-relax-pic-calls"
  .PD
! Try to turn \s-1PIC\s0 calls that are normally dispatched via register
  \&\f(CW$25\fR into direct calls.  This is only possible if the linker can
  resolve the destination at link time and if the destination is within
  range for a direct call.
  .Sp
! \&\fB\-mrelax\-pic\-calls\fR is the default if \s-1GCC\s0 was configured to use
  an assembler and a linker that support the \f(CW\*(C`.reloc\*(C'\fR assembly
  directive and \fB\-mexplicit\-relocs\fR is in effect.  With
  \&\fB\-mno\-explicit\-relocs\fR, this optimization can be performed by the
  assembler and the linker alone without help from the compiler.
! .IP "\fB\-mmcount\-ra\-address\fR" 4
  .IX Item "-mmcount-ra-address"
  .PD 0
! .IP "\fB\-mno\-mcount\-ra\-address\fR" 4
  .IX Item "-mno-mcount-ra-address"
  .PD
  Emit (do not emit) code that allows \f(CW\*(C`_mcount\*(C'\fR to modify the
! calling function's return address.  When enabled, this option extends
! the usual \f(CW\*(C`_mcount\*(C'\fR interface with a new \fIra-address\fR
  parameter, which has type \f(CW\*(C`intptr_t *\*(C'\fR and is passed in register
  \&\f(CW$12\fR.  \f(CW\*(C`_mcount\*(C'\fR can then modify the return address by
  doing both of the following:
  .RS 4
! .IP "*" 4
  Returning the new address in register \f(CW$31\fR.
! .IP "*" 4
! Storing the new address in \f(CW\*(C`*\f(CIra\-address\f(CW\*(C'\fR,
! if \fIra-address\fR is nonnull.
  .RE
  .RS 4
  .Sp
  The default is \fB\-mno\-mcount\-ra\-address\fR.
  .RE
! .IP "\fB\-mframe\-header\-opt\fR" 4
  .IX Item "-mframe-header-opt"
  .PD 0
! .IP "\fB\-mno\-frame\-header\-opt\fR" 4
  .IX Item "-mno-frame-header-opt"
  .PD
! Enable (disable) frame header optimization in the o32 \s-1ABI.\s0  When using the
! o32 \s-1ABI,\s0 calling functions will allocate 16 bytes on the stack for the called
  function to write out register arguments.  When enabled, this optimization
  will suppress the allocation of the frame header if it can be determined that
  it is unused.
  .Sp
  This optimization is off by default at all optimization levels.
! .IP "\fB\-mlxc1\-sxc1\fR" 4
  .IX Item "-mlxc1-sxc1"
  .PD 0
! .IP "\fB\-mno\-lxc1\-sxc1\fR" 4
  .IX Item "-mno-lxc1-sxc1"
  .PD
  When applicable, enable (disable) the generation of \f(CW\*(C`lwxc1\*(C'\fR,
  \&\f(CW\*(C`swxc1\*(C'\fR, \f(CW\*(C`ldxc1\*(C'\fR, \f(CW\*(C`sdxc1\*(C'\fR instructions.  Enabled by default.
! .IP "\fB\-mmadd4\fR" 4
  .IX Item "-mmadd4"
  .PD 0
! .IP "\fB\-mno\-madd4\fR" 4
  .IX Item "-mno-madd4"
  .PD
  When applicable, enable (disable) the generation of 4\-operand \f(CW\*(C`madd.s\*(C'\fR,
  \&\f(CW\*(C`madd.d\*(C'\fR and related instructions.  Enabled by default.
  .PP
! \fI\s-1MMIX\s0 Options\fR
  .IX Subsection "MMIX Options"
  .PP
! These options are defined for the \s-1MMIX:\s0
! .IP "\fB\-mlibfuncs\fR" 4
  .IX Item "-mlibfuncs"
  .PD 0
! .IP "\fB\-mno\-libfuncs\fR" 4
  .IX Item "-mno-libfuncs"
  .PD
  Specify that intrinsic library functions are being compiled, passing all
  values in registers, no matter the size.
! .IP "\fB\-mepsilon\fR" 4
  .IX Item "-mepsilon"
  .PD 0
! .IP "\fB\-mno\-epsilon\fR" 4
  .IX Item "-mno-epsilon"
  .PD
! Generate floating-point comparison instructions that compare with respect
  to the \f(CW\*(C`rE\*(C'\fR epsilon register.
! .IP "\fB\-mabi=mmixware\fR" 4
  .IX Item "-mabi=mmixware"
  .PD 0
! .IP "\fB\-mabi=gnu\fR" 4
  .IX Item "-mabi=gnu"
  .PD
  Generate code that passes function parameters and return values that (in
  the called function) are seen as registers \f(CW$0\fR and up, as opposed to
! the \s-1GNU ABI\s0 which uses global registers \f(CW$231\fR and up.
! .IP "\fB\-mzero\-extend\fR" 4
  .IX Item "-mzero-extend"
  .PD 0
! .IP "\fB\-mno\-zero\-extend\fR" 4
  .IX Item "-mno-zero-extend"
  .PD
  When reading data from memory in sizes shorter than 64 bits, use (do not
! use) zero-extending load instructions by default, rather than
! sign-extending ones.
! .IP "\fB\-mknuthdiv\fR" 4
  .IX Item "-mknuthdiv"
  .PD 0
! .IP "\fB\-mno\-knuthdiv\fR" 4
  .IX Item "-mno-knuthdiv"
  .PD
  Make the result of a division yielding a remainder have the same sign as
  the divisor.  With the default, \fB\-mno\-knuthdiv\fR, the sign of the
  remainder follows the sign of the dividend.  Both methods are
  arithmetically valid, the latter being almost exclusively used.
! .IP "\fB\-mtoplevel\-symbols\fR" 4
  .IX Item "-mtoplevel-symbols"
  .PD 0
! .IP "\fB\-mno\-toplevel\-symbols\fR" 4
  .IX Item "-mno-toplevel-symbols"
  .PD
  Prepend (do not prepend) a \fB:\fR to all global symbols, so the assembly
  code can be used with the \f(CW\*(C`PREFIX\*(C'\fR assembly directive.
! .IP "\fB\-melf\fR" 4
  .IX Item "-melf"
! Generate an executable in the \s-1ELF\s0 format, rather than the default
  \&\fBmmo\fR format used by the \fBmmix\fR simulator.
! .IP "\fB\-mbranch\-predict\fR" 4
  .IX Item "-mbranch-predict"
  .PD 0
! .IP "\fB\-mno\-branch\-predict\fR" 4
  .IX Item "-mno-branch-predict"
  .PD
! Use (do not use) the probable-branch instructions, when static branch
  prediction indicates a probable branch.
! .IP "\fB\-mbase\-addresses\fR" 4
  .IX Item "-mbase-addresses"
  .PD 0
! .IP "\fB\-mno\-base\-addresses\fR" 4
  .IX Item "-mno-base-addresses"
  .PD
  Generate (do not generate) code that uses \fIbase addresses\fR.  Using a
--- 29191,29343 ----
  compiled.
  .Sp
  This option defaults to \fB\-mno\-synci\fR, but the default can be
! overridden by configuring GCC with \fB\-\-with\-synci\fR.
  .Sp
  When compiling code for single processor systems, it is generally safe
! to use \f(CW\*(C`synci\*(C'\fR.  However, on many multi\-core (SMP) systems, it
  does not invalidate the instruction caches on all cores and may lead
  to undefined behavior.
! .IP \fB\-mrelax\-pic\-calls\fR 4
  .IX Item "-mrelax-pic-calls"
  .PD 0
! .IP \fB\-mno\-relax\-pic\-calls\fR 4
  .IX Item "-mno-relax-pic-calls"
  .PD
! Try to turn PIC calls that are normally dispatched via register
  \&\f(CW$25\fR into direct calls.  This is only possible if the linker can
  resolve the destination at link time and if the destination is within
  range for a direct call.
  .Sp
! \&\fB\-mrelax\-pic\-calls\fR is the default if GCC was configured to use
  an assembler and a linker that support the \f(CW\*(C`.reloc\*(C'\fR assembly
  directive and \fB\-mexplicit\-relocs\fR is in effect.  With
  \&\fB\-mno\-explicit\-relocs\fR, this optimization can be performed by the
  assembler and the linker alone without help from the compiler.
! .IP \fB\-mmcount\-ra\-address\fR 4
  .IX Item "-mmcount-ra-address"
  .PD 0
! .IP \fB\-mno\-mcount\-ra\-address\fR 4
  .IX Item "-mno-mcount-ra-address"
  .PD
  Emit (do not emit) code that allows \f(CW\*(C`_mcount\*(C'\fR to modify the
! calling function\*(Aqs return address.  When enabled, this option extends
! the usual \f(CW\*(C`_mcount\*(C'\fR interface with a new \fIra\-address\fR
  parameter, which has type \f(CW\*(C`intptr_t *\*(C'\fR and is passed in register
  \&\f(CW$12\fR.  \f(CW\*(C`_mcount\*(C'\fR can then modify the return address by
  doing both of the following:
  .RS 4
! .IP * 4
  Returning the new address in register \f(CW$31\fR.
! .IP * 4
! Storing the new address in \f(CW\*(C`*\fR\f(CIra\-address\fR\f(CW\*(C'\fR,
! if \fIra\-address\fR is nonnull.
  .RE
  .RS 4
  .Sp
  The default is \fB\-mno\-mcount\-ra\-address\fR.
  .RE
! .IP \fB\-mframe\-header\-opt\fR 4
  .IX Item "-mframe-header-opt"
  .PD 0
! .IP \fB\-mno\-frame\-header\-opt\fR 4
  .IX Item "-mno-frame-header-opt"
  .PD
! Enable (disable) frame header optimization in the o32 ABI.  When using the
! o32 ABI, calling functions will allocate 16 bytes on the stack for the called
  function to write out register arguments.  When enabled, this optimization
  will suppress the allocation of the frame header if it can be determined that
  it is unused.
  .Sp
  This optimization is off by default at all optimization levels.
! .IP \fB\-mlxc1\-sxc1\fR 4
  .IX Item "-mlxc1-sxc1"
  .PD 0
! .IP \fB\-mno\-lxc1\-sxc1\fR 4
  .IX Item "-mno-lxc1-sxc1"
  .PD
  When applicable, enable (disable) the generation of \f(CW\*(C`lwxc1\*(C'\fR,
  \&\f(CW\*(C`swxc1\*(C'\fR, \f(CW\*(C`ldxc1\*(C'\fR, \f(CW\*(C`sdxc1\*(C'\fR instructions.  Enabled by default.
! .IP \fB\-mmadd4\fR 4
  .IX Item "-mmadd4"
  .PD 0
! .IP \fB\-mno\-madd4\fR 4
  .IX Item "-mno-madd4"
  .PD
  When applicable, enable (disable) the generation of 4\-operand \f(CW\*(C`madd.s\*(C'\fR,
  \&\f(CW\*(C`madd.d\*(C'\fR and related instructions.  Enabled by default.
  .PP
! \fIMMIX Options\fR
  .IX Subsection "MMIX Options"
  .PP
! These options are defined for the MMIX:
! .IP \fB\-mlibfuncs\fR 4
  .IX Item "-mlibfuncs"
  .PD 0
! .IP \fB\-mno\-libfuncs\fR 4
  .IX Item "-mno-libfuncs"
  .PD
  Specify that intrinsic library functions are being compiled, passing all
  values in registers, no matter the size.
! .IP \fB\-mepsilon\fR 4
  .IX Item "-mepsilon"
  .PD 0
! .IP \fB\-mno\-epsilon\fR 4
  .IX Item "-mno-epsilon"
  .PD
! Generate floating\-point comparison instructions that compare with respect
  to the \f(CW\*(C`rE\*(C'\fR epsilon register.
! .IP \fB\-mabi=mmixware\fR 4
  .IX Item "-mabi=mmixware"
  .PD 0
! .IP \fB\-mabi=gnu\fR 4
  .IX Item "-mabi=gnu"
  .PD
  Generate code that passes function parameters and return values that (in
  the called function) are seen as registers \f(CW$0\fR and up, as opposed to
! the GNU ABI which uses global registers \f(CW$231\fR and up.
! .IP \fB\-mzero\-extend\fR 4
  .IX Item "-mzero-extend"
  .PD 0
! .IP \fB\-mno\-zero\-extend\fR 4
  .IX Item "-mno-zero-extend"
  .PD
  When reading data from memory in sizes shorter than 64 bits, use (do not
! use) zero\-extending load instructions by default, rather than
! sign\-extending ones.
! .IP \fB\-mknuthdiv\fR 4
  .IX Item "-mknuthdiv"
  .PD 0
! .IP \fB\-mno\-knuthdiv\fR 4
  .IX Item "-mno-knuthdiv"
  .PD
  Make the result of a division yielding a remainder have the same sign as
  the divisor.  With the default, \fB\-mno\-knuthdiv\fR, the sign of the
  remainder follows the sign of the dividend.  Both methods are
  arithmetically valid, the latter being almost exclusively used.
! .IP \fB\-mtoplevel\-symbols\fR 4
  .IX Item "-mtoplevel-symbols"
  .PD 0
! .IP \fB\-mno\-toplevel\-symbols\fR 4
  .IX Item "-mno-toplevel-symbols"
  .PD
  Prepend (do not prepend) a \fB:\fR to all global symbols, so the assembly
  code can be used with the \f(CW\*(C`PREFIX\*(C'\fR assembly directive.
! .IP \fB\-melf\fR 4
  .IX Item "-melf"
! Generate an executable in the ELF format, rather than the default
  \&\fBmmo\fR format used by the \fBmmix\fR simulator.
! .IP \fB\-mbranch\-predict\fR 4
  .IX Item "-mbranch-predict"
  .PD 0
! .IP \fB\-mno\-branch\-predict\fR 4
  .IX Item "-mno-branch-predict"
  .PD
! Use (do not use) the probable\-branch instructions, when static branch
  prediction indicates a probable branch.
! .IP \fB\-mbase\-addresses\fR 4
  .IX Item "-mbase-addresses"
  .PD 0
! .IP \fB\-mno\-base\-addresses\fR 4
  .IX Item "-mno-base-addresses"
  .PD
  Generate (do not generate) code that uses \fIbase addresses\fR.  Using a
*************** to 255 from the value held in the regist
*** 29413,29547 ****
  and fast code, but the number of different data items that can be
  addressed is limited.  This means that a program that uses lots of static
  data may require \fB\-mno\-base\-addresses\fR.
! .IP "\fB\-msingle\-exit\fR" 4
  .IX Item "-msingle-exit"
  .PD 0
! .IP "\fB\-mno\-single\-exit\fR" 4
  .IX Item "-mno-single-exit"
  .PD
  Force (do not force) generated code to have a single exit point in each
  function.
  .PP
! \fI\s-1MN10300\s0 Options\fR
  .IX Subsection "MN10300 Options"
  .PP
! These \fB\-m\fR options are defined for Matsushita \s-1MN10300\s0 architectures:
! .IP "\fB\-mmult\-bug\fR" 4
  .IX Item "-mmult-bug"
! Generate code to avoid bugs in the multiply instructions for the \s-1MN10300\s0
  processors.  This is the default.
! .IP "\fB\-mno\-mult\-bug\fR" 4
  .IX Item "-mno-mult-bug"
  Do not generate code to avoid bugs in the multiply instructions for the
! \&\s-1MN10300\s0 processors.
! .IP "\fB\-mam33\fR" 4
  .IX Item "-mam33"
! Generate code using features specific to the \s-1AM33\s0 processor.
! .IP "\fB\-mno\-am33\fR" 4
  .IX Item "-mno-am33"
! Do not generate code using features specific to the \s-1AM33\s0 processor.  This
  is the default.
! .IP "\fB\-mam33\-2\fR" 4
  .IX Item "-mam33-2"
! Generate code using features specific to the \s-1AM33/2.0\s0 processor.
! .IP "\fB\-mam34\fR" 4
  .IX Item "-mam34"
! Generate code using features specific to the \s-1AM34\s0 processor.
! .IP "\fB\-mtune=\fR\fIcpu-type\fR" 4
  .IX Item "-mtune=cpu-type"
! Use the timing characteristics of the indicated \s-1CPU\s0 type when
  scheduling instructions.  This does not change the targeted processor
! type.  The \s-1CPU\s0 type must be one of \fBmn10300\fR, \fBam33\fR,
  \&\fBam33\-2\fR or \fBam34\fR.
! .IP "\fB\-mreturn\-pointer\-on\-d0\fR" 4
  .IX Item "-mreturn-pointer-on-d0"
  When generating a function that returns a pointer, return the pointer
  in both \f(CW\*(C`a0\*(C'\fR and \f(CW\*(C`d0\*(C'\fR.  Otherwise, the pointer is returned
  only in \f(CW\*(C`a0\*(C'\fR, and attempts to call such functions without a prototype
  result in errors.  Note that this option is on by default; use
  \&\fB\-mno\-return\-pointer\-on\-d0\fR to disable it.
! .IP "\fB\-mno\-crt0\fR" 4
  .IX Item "-mno-crt0"
! Do not link in the C run-time initialization object file.
! .IP "\fB\-mrelax\fR" 4
  .IX Item "-mrelax"
  Indicate to the linker that it should perform a relaxation optimization pass
  to shorten branches, calls and absolute memory addresses.  This option only
  has an effect when used on the command line for the final link step.
  .Sp
  This option makes symbolic debugging impossible.
! .IP "\fB\-mliw\fR" 4
  .IX Item "-mliw"
  Allow the compiler to generate \fILong Instruction Word\fR
! instructions if the target is the \fB\s-1AM33\s0\fR or later.  This is the
  default.  This option defines the preprocessor macro \f(CW\*(C`_\|_LIW_\|_\*(C'\fR.
! .IP "\fB\-mno\-liw\fR" 4
  .IX Item "-mno-liw"
  Do not allow the compiler to generate \fILong Instruction Word\fR
  instructions.  This option defines the preprocessor macro
  \&\f(CW\*(C`_\|_NO_LIW_\|_\*(C'\fR.
! .IP "\fB\-msetlb\fR" 4
  .IX Item "-msetlb"
! Allow the compiler to generate the \fI\s-1SETLB\s0\fR and \fILcc\fR
! instructions if the target is the \fB\s-1AM33\s0\fR or later.  This is the
  default.  This option defines the preprocessor macro \f(CW\*(C`_\|_SETLB_\|_\*(C'\fR.
! .IP "\fB\-mno\-setlb\fR" 4
  .IX Item "-mno-setlb"
! Do not allow the compiler to generate \fI\s-1SETLB\s0\fR or \fILcc\fR
  instructions.  This option defines the preprocessor macro
  \&\f(CW\*(C`_\|_NO_SETLB_\|_\*(C'\fR.
  .PP
  \fIMoxie Options\fR
  .IX Subsection "Moxie Options"
! .IP "\fB\-meb\fR" 4
  .IX Item "-meb"
! Generate big-endian code.  This is the default for \fBmoxie\-*\-*\fR
  configurations.
! .IP "\fB\-mel\fR" 4
  .IX Item "-mel"
! Generate little-endian code.
! .IP "\fB\-mmul.x\fR" 4
  .IX Item "-mmul.x"
  Generate mul.x and umul.x instructions.  This is the default for
  \&\fBmoxiebox\-*\-*\fR configurations.
! .IP "\fB\-mno\-crt0\fR" 4
  .IX Item "-mno-crt0"
! Do not link in the C run-time initialization object file.
  .PP
! \fI\s-1MSP430\s0 Options\fR
  .IX Subsection "MSP430 Options"
  .PP
! These options are defined for the \s-1MSP430:\s0
! .IP "\fB\-masm\-hex\fR" 4
  .IX Item "-masm-hex"
  Force assembly output to always use hex constants.  Normally such
  constants are signed decimals, but this option is available for
  testsuite and/or aesthetic purposes.
! .IP "\fB\-mmcu=\fR" 4
  .IX Item "-mmcu="
! Select the \s-1MCU\s0 to target.  This is used to create a C preprocessor
! symbol based upon the \s-1MCU\s0 name, converted to upper case and pre\- and
! post-fixed with \fB_\|_\fR.  This in turn is used by the
! \&\fImsp430.h\fR header file to select an MCU-specific supplementary
  header file.
  .Sp
! The option also sets the \s-1ISA\s0 to use.  If the \s-1MCU\s0 name is one that is
! known to only support the 430 \s-1ISA\s0 then that is selected, otherwise the
! 430X \s-1ISA\s0 is selected.  A generic \s-1MCU\s0 name of \fBmsp430\fR can also be
! used to select the 430 \s-1ISA.\s0  Similarly the generic \fBmsp430x\fR \s-1MCU\s0
! name selects the 430X \s-1ISA.\s0
  .Sp
! In addition an MCU-specific linker script is added to the linker
! command line.  The script's name is the name of the \s-1MCU\s0 with
  \&\fI.ld\fR appended.  Thus specifying \fB\-mmcu=xxx\fR on the \fBgcc\fR
  command line defines the C preprocessor symbol \f(CW\*(C`_\|_XXX_\|_\*(C'\fR and
  cause the linker to search for a script called \fIxxx.ld\fR.
  .Sp
! The \s-1ISA\s0 and hardware multiply supported for the different MCUs is hard-coded
! into \s-1GCC.\s0  However, an external \fBdevices.csv\fR file can be used to
! extend device support beyond those that have been hard-coded.
  .Sp
! \&\s-1GCC\s0 searches for the \fBdevices.csv\fR file using the following methods in the
  given precedence order, where the first method takes precedence over the
  second which takes precedence over the third.
  .RS 4
--- 29348,29482 ----
  and fast code, but the number of different data items that can be
  addressed is limited.  This means that a program that uses lots of static
  data may require \fB\-mno\-base\-addresses\fR.
! .IP \fB\-msingle\-exit\fR 4
  .IX Item "-msingle-exit"
  .PD 0
! .IP \fB\-mno\-single\-exit\fR 4
  .IX Item "-mno-single-exit"
  .PD
  Force (do not force) generated code to have a single exit point in each
  function.
  .PP
! \fIMN10300 Options\fR
  .IX Subsection "MN10300 Options"
  .PP
! These \fB\-m\fR options are defined for Matsushita MN10300 architectures:
! .IP \fB\-mmult\-bug\fR 4
  .IX Item "-mmult-bug"
! Generate code to avoid bugs in the multiply instructions for the MN10300
  processors.  This is the default.
! .IP \fB\-mno\-mult\-bug\fR 4
  .IX Item "-mno-mult-bug"
  Do not generate code to avoid bugs in the multiply instructions for the
! MN10300 processors.
! .IP \fB\-mam33\fR 4
  .IX Item "-mam33"
! Generate code using features specific to the AM33 processor.
! .IP \fB\-mno\-am33\fR 4
  .IX Item "-mno-am33"
! Do not generate code using features specific to the AM33 processor.  This
  is the default.
! .IP \fB\-mam33\-2\fR 4
  .IX Item "-mam33-2"
! Generate code using features specific to the AM33/2.0 processor.
! .IP \fB\-mam34\fR 4
  .IX Item "-mam34"
! Generate code using features specific to the AM34 processor.
! .IP \fB\-mtune=\fR\fIcpu\-type\fR 4
  .IX Item "-mtune=cpu-type"
! Use the timing characteristics of the indicated CPU type when
  scheduling instructions.  This does not change the targeted processor
! type.  The CPU type must be one of \fBmn10300\fR, \fBam33\fR,
  \&\fBam33\-2\fR or \fBam34\fR.
! .IP \fB\-mreturn\-pointer\-on\-d0\fR 4
  .IX Item "-mreturn-pointer-on-d0"
  When generating a function that returns a pointer, return the pointer
  in both \f(CW\*(C`a0\*(C'\fR and \f(CW\*(C`d0\*(C'\fR.  Otherwise, the pointer is returned
  only in \f(CW\*(C`a0\*(C'\fR, and attempts to call such functions without a prototype
  result in errors.  Note that this option is on by default; use
  \&\fB\-mno\-return\-pointer\-on\-d0\fR to disable it.
! .IP \fB\-mno\-crt0\fR 4
  .IX Item "-mno-crt0"
! Do not link in the C run\-time initialization object file.
! .IP \fB\-mrelax\fR 4
  .IX Item "-mrelax"
  Indicate to the linker that it should perform a relaxation optimization pass
  to shorten branches, calls and absolute memory addresses.  This option only
  has an effect when used on the command line for the final link step.
  .Sp
  This option makes symbolic debugging impossible.
! .IP \fB\-mliw\fR 4
  .IX Item "-mliw"
  Allow the compiler to generate \fILong Instruction Word\fR
! instructions if the target is the \fBAM33\fR or later.  This is the
  default.  This option defines the preprocessor macro \f(CW\*(C`_\|_LIW_\|_\*(C'\fR.
! .IP \fB\-mno\-liw\fR 4
  .IX Item "-mno-liw"
  Do not allow the compiler to generate \fILong Instruction Word\fR
  instructions.  This option defines the preprocessor macro
  \&\f(CW\*(C`_\|_NO_LIW_\|_\*(C'\fR.
! .IP \fB\-msetlb\fR 4
  .IX Item "-msetlb"
! Allow the compiler to generate the \fISETLB\fR and \fILcc\fR
! instructions if the target is the \fBAM33\fR or later.  This is the
  default.  This option defines the preprocessor macro \f(CW\*(C`_\|_SETLB_\|_\*(C'\fR.
! .IP \fB\-mno\-setlb\fR 4
  .IX Item "-mno-setlb"
! Do not allow the compiler to generate \fISETLB\fR or \fILcc\fR
  instructions.  This option defines the preprocessor macro
  \&\f(CW\*(C`_\|_NO_SETLB_\|_\*(C'\fR.
  .PP
  \fIMoxie Options\fR
  .IX Subsection "Moxie Options"
! .IP \fB\-meb\fR 4
  .IX Item "-meb"
! Generate big\-endian code.  This is the default for \fBmoxie\-*\-*\fR
  configurations.
! .IP \fB\-mel\fR 4
  .IX Item "-mel"
! Generate little\-endian code.
! .IP \fB\-mmul.x\fR 4
  .IX Item "-mmul.x"
  Generate mul.x and umul.x instructions.  This is the default for
  \&\fBmoxiebox\-*\-*\fR configurations.
! .IP \fB\-mno\-crt0\fR 4
  .IX Item "-mno-crt0"
! Do not link in the C run\-time initialization object file.
  .PP
! \fIMSP430 Options\fR
  .IX Subsection "MSP430 Options"
  .PP
! These options are defined for the MSP430:
! .IP \fB\-masm\-hex\fR 4
  .IX Item "-masm-hex"
  Force assembly output to always use hex constants.  Normally such
  constants are signed decimals, but this option is available for
  testsuite and/or aesthetic purposes.
! .IP \fB\-mmcu=\fR 4
  .IX Item "-mmcu="
! Select the MCU to target.  This is used to create a C preprocessor
! symbol based upon the MCU name, converted to upper case and pre\- and
! post\-fixed with \fB_\|_\fR.  This in turn is used by the
! \&\fImsp430.h\fR header file to select an MCU\-specific supplementary
  header file.
  .Sp
! The option also sets the ISA to use.  If the MCU name is one that is
! known to only support the 430 ISA then that is selected, otherwise the
! 430X ISA is selected.  A generic MCU name of \fBmsp430\fR can also be
! used to select the 430 ISA.  Similarly the generic \fBmsp430x\fR MCU
! name selects the 430X ISA.
  .Sp
! In addition an MCU\-specific linker script is added to the linker
! command line.  The script\*(Aqs name is the name of the MCU with
  \&\fI.ld\fR appended.  Thus specifying \fB\-mmcu=xxx\fR on the \fBgcc\fR
  command line defines the C preprocessor symbol \f(CW\*(C`_\|_XXX_\|_\*(C'\fR and
  cause the linker to search for a script called \fIxxx.ld\fR.
  .Sp
! The ISA and hardware multiply supported for the different MCUs is hard\-coded
! into GCC.  However, an external \fBdevices.csv\fR file can be used to
! extend device support beyond those that have been hard\-coded.
  .Sp
! GCC searches for the \fBdevices.csv\fR file using the following methods in the
  given precedence order, where the first method takes precedence over the
  second which takes precedence over the third.
  .RS 4
*************** second which takes precedence over the t
*** 29550,29619 ****
  .IX Item "Include path specified with -I and -L"
  \&\fBdevices.csv\fR is searched for in each of the directories specified by
  include paths and linker library search paths.
! .IP "Path specified by the environment variable \fB\s-1MSP430_GCC_INCLUDE_DIR\s0\fR" 4
  .IX Item "Path specified by the environment variable MSP430_GCC_INCLUDE_DIR"
  Define the value of the global environment variable
! \&\fB\s-1MSP430_GCC_INCLUDE_DIR\s0\fR
! to the full path to the directory containing devices.csv, and \s-1GCC\s0 will search
  this directory for devices.csv.  If devices.csv is found, this directory is
  also registered as an include path and linker library path.  Header files
  and linker scripts in this directory can therefore be used without manually
  specifying \f(CW\*(C`\-I\*(C'\fR and \f(CW\*(C`\-L\*(C'\fR on the command line.
  .IP "The \fBmsp430\-elf{,bare}/include/devices\fR directory" 4
  .IX Item "The msp430-elf{,bare}/include/devices directory"
! Finally, \s-1GCC\s0 examines \fBmsp430\-elf{,bare}/include/devices\fR from the
  toolchain root directory.  This directory does not exist in a default
  installation, but if the user has created it and copied \fBdevices.csv\fR
! there, then the \s-1MCU\s0 data is read.  As above, this directory is
  also registered as an include path and linker library path.
  .RE
  .RS 4
  .Sp
  If none of the above search methods find \fBdevices.csv\fR, then the
! hard-coded \s-1MCU\s0 data is used.
  .RE
! .IP "\fB\-mwarn\-mcu\fR" 4
  .IX Item "-mwarn-mcu"
  .PD 0
! .IP "\fB\-mno\-warn\-mcu\fR" 4
  .IX Item "-mno-warn-mcu"
  .PD
  This option enables or disables warnings about conflicts between the
! \&\s-1MCU\s0 name specified by the \fB\-mmcu\fR option and the \s-1ISA\s0 set by the
  \&\fB\-mcpu\fR option and/or the hardware multiply support set by the
  \&\fB\-mhwmult\fR option.  It also toggles warnings about unrecognized
! \&\s-1MCU\s0 names.  This option is on by default.
! .IP "\fB\-mcpu=\fR" 4
  .IX Item "-mcpu="
! Specifies the \s-1ISA\s0 to use.  Accepted values are \fBmsp430\fR,
  \&\fBmsp430x\fR and \fBmsp430xv2\fR.  This option is deprecated.  The
! \&\fB\-mmcu=\fR option should be used to select the \s-1ISA.\s0
! .IP "\fB\-msim\fR" 4
  .IX Item "-msim"
  Link to the simulator runtime libraries and linker script.  Overrides
  any scripts that would be selected by the \fB\-mmcu=\fR option.
! .IP "\fB\-mlarge\fR" 4
  .IX Item "-mlarge"
! Use large-model addressing (20\-bit pointers, 20\-bit \f(CW\*(C`size_t\*(C'\fR).
! .IP "\fB\-msmall\fR" 4
  .IX Item "-msmall"
! Use small-model addressing (16\-bit pointers, 16\-bit \f(CW\*(C`size_t\*(C'\fR).
! .IP "\fB\-mrelax\fR" 4
  .IX Item "-mrelax"
  This option is passed to the assembler and linker, and allows the
  linker to perform certain optimizations that cannot be done until
  the final link.
! .IP "\fBmhwmult=\fR" 4
  .IX Item "mhwmult="
  Describes the type of hardware multiply supported by the target.
  Accepted values are \fBnone\fR for no hardware multiply, \fB16bit\fR
  for the original 16\-bit\-only multiply supported by early MCUs.
  \&\fB32bit\fR for the 16/32\-bit multiply supported by later MCUs and
  \&\fBf5series\fR for the 16/32\-bit multiply supported by F5\-series MCUs.
! A value of \fBauto\fR can also be given.  This tells \s-1GCC\s0 to deduce
! the hardware multiply support based upon the \s-1MCU\s0 name provided by the
  \&\fB\-mmcu\fR option.  If no \fB\-mmcu\fR option is specified or if
! the \s-1MCU\s0 name is not recognized then no hardware multiply support is
  assumed.  \f(CW\*(C`auto\*(C'\fR is the default setting.
  .Sp
  Hardware multiplies are normally performed by calling a library
--- 29485,29554 ----
  .IX Item "Include path specified with -I and -L"
  \&\fBdevices.csv\fR is searched for in each of the directories specified by
  include paths and linker library search paths.
! .IP "Path specified by the environment variable \fBMSP430_GCC_INCLUDE_DIR\fR" 4
  .IX Item "Path specified by the environment variable MSP430_GCC_INCLUDE_DIR"
  Define the value of the global environment variable
! \&\fBMSP430_GCC_INCLUDE_DIR\fR
! to the full path to the directory containing devices.csv, and GCC will search
  this directory for devices.csv.  If devices.csv is found, this directory is
  also registered as an include path and linker library path.  Header files
  and linker scripts in this directory can therefore be used without manually
  specifying \f(CW\*(C`\-I\*(C'\fR and \f(CW\*(C`\-L\*(C'\fR on the command line.
  .IP "The \fBmsp430\-elf{,bare}/include/devices\fR directory" 4
  .IX Item "The msp430-elf{,bare}/include/devices directory"
! Finally, GCC examines \fBmsp430\-elf{,bare}/include/devices\fR from the
  toolchain root directory.  This directory does not exist in a default
  installation, but if the user has created it and copied \fBdevices.csv\fR
! there, then the MCU data is read.  As above, this directory is
  also registered as an include path and linker library path.
  .RE
  .RS 4
  .Sp
  If none of the above search methods find \fBdevices.csv\fR, then the
! hard\-coded MCU data is used.
  .RE
! .IP \fB\-mwarn\-mcu\fR 4
  .IX Item "-mwarn-mcu"
  .PD 0
! .IP \fB\-mno\-warn\-mcu\fR 4
  .IX Item "-mno-warn-mcu"
  .PD
  This option enables or disables warnings about conflicts between the
! MCU name specified by the \fB\-mmcu\fR option and the ISA set by the
  \&\fB\-mcpu\fR option and/or the hardware multiply support set by the
  \&\fB\-mhwmult\fR option.  It also toggles warnings about unrecognized
! MCU names.  This option is on by default.
! .IP \fB\-mcpu=\fR 4
  .IX Item "-mcpu="
! Specifies the ISA to use.  Accepted values are \fBmsp430\fR,
  \&\fBmsp430x\fR and \fBmsp430xv2\fR.  This option is deprecated.  The
! \&\fB\-mmcu=\fR option should be used to select the ISA.
! .IP \fB\-msim\fR 4
  .IX Item "-msim"
  Link to the simulator runtime libraries and linker script.  Overrides
  any scripts that would be selected by the \fB\-mmcu=\fR option.
! .IP \fB\-mlarge\fR 4
  .IX Item "-mlarge"
! Use large\-model addressing (20\-bit pointers, 20\-bit \f(CW\*(C`size_t\*(C'\fR).
! .IP \fB\-msmall\fR 4
  .IX Item "-msmall"
! Use small\-model addressing (16\-bit pointers, 16\-bit \f(CW\*(C`size_t\*(C'\fR).
! .IP \fB\-mrelax\fR 4
  .IX Item "-mrelax"
  This option is passed to the assembler and linker, and allows the
  linker to perform certain optimizations that cannot be done until
  the final link.
! .IP \fBmhwmult=\fR 4
  .IX Item "mhwmult="
  Describes the type of hardware multiply supported by the target.
  Accepted values are \fBnone\fR for no hardware multiply, \fB16bit\fR
  for the original 16\-bit\-only multiply supported by early MCUs.
  \&\fB32bit\fR for the 16/32\-bit multiply supported by later MCUs and
  \&\fBf5series\fR for the 16/32\-bit multiply supported by F5\-series MCUs.
! A value of \fBauto\fR can also be given.  This tells GCC to deduce
! the hardware multiply support based upon the MCU name provided by the
  \&\fB\-mmcu\fR option.  If no \fB\-mmcu\fR option is specified or if
! the MCU name is not recognized then no hardware multiply support is
  assumed.  \f(CW\*(C`auto\*(C'\fR is the default setting.
  .Sp
  Hardware multiplies are normally performed by calling a library
*************** inline.  This makes for bigger, but fast
*** 29624,29648 ****
  The hardware multiply routines disable interrupts whilst running and
  restore the previous interrupt state when they finish.  This makes
  them safe to use inside interrupt handlers as well as in normal code.
! .IP "\fB\-minrt\fR" 4
  .IX Item "-minrt"
  Enable the use of a minimum runtime environment \- no static
! initializers or constructors.  This is intended for memory-constrained
  devices.  The compiler includes special symbols in some objects
  that tell the linker and runtime which code fragments are required.
! .IP "\fB\-mtiny\-printf\fR" 4
  .IX Item "-mtiny-printf"
  Enable reduced code size \f(CW\*(C`printf\*(C'\fR and \f(CW\*(C`puts\*(C'\fR library functions.
  The \fBtiny\fR implementations of these functions are not reentrant, so
! must be used with caution in multi-threaded applications.
  .Sp
  Support for streams has been removed and the string to be printed will
  always be sent to stdout via the \f(CW\*(C`write\*(C'\fR syscall.  The string is not
  buffered before it is sent to write.
  .Sp
! This option requires Newlib Nano \s-1IO,\s0 so \s-1GCC\s0 must be configured with
  \&\fB\-\-enable\-newlib\-nano\-formatted\-io\fR.
! .IP "\fB\-mmax\-inline\-shift=\fR" 4
  .IX Item "-mmax-inline-shift="
  This option takes an integer between 0 and 64 inclusive, and sets
  the maximum number of inline shift instructions which should be emitted to
--- 29559,29583 ----
  The hardware multiply routines disable interrupts whilst running and
  restore the previous interrupt state when they finish.  This makes
  them safe to use inside interrupt handlers as well as in normal code.
! .IP \fB\-minrt\fR 4
  .IX Item "-minrt"
  Enable the use of a minimum runtime environment \- no static
! initializers or constructors.  This is intended for memory\-constrained
  devices.  The compiler includes special symbols in some objects
  that tell the linker and runtime which code fragments are required.
! .IP \fB\-mtiny\-printf\fR 4
  .IX Item "-mtiny-printf"
  Enable reduced code size \f(CW\*(C`printf\*(C'\fR and \f(CW\*(C`puts\*(C'\fR library functions.
  The \fBtiny\fR implementations of these functions are not reentrant, so
! must be used with caution in multi\-threaded applications.
  .Sp
  Support for streams has been removed and the string to be printed will
  always be sent to stdout via the \f(CW\*(C`write\*(C'\fR syscall.  The string is not
  buffered before it is sent to write.
  .Sp
! This option requires Newlib Nano IO, so GCC must be configured with
  \&\fB\-\-enable\-newlib\-nano\-formatted\-io\fR.
! .IP \fB\-mmax\-inline\-shift=\fR 4
  .IX Item "-mmax-inline-shift="
  This option takes an integer between 0 and 64 inclusive, and sets
  the maximum number of inline shift instructions which should be emitted to
*************** perform a shift operation by a constant
*** 29650,29663 ****
  exceeded, an mspabi helper function is used instead.  The default value is 4.
  .Sp
  This only affects cases where a shift by multiple positions cannot be
! completed with a single instruction (e.g. all shifts >1 on the 430 \s-1ISA\s0).
  .Sp
  Shifts of a 32\-bit value are at least twice as costly, so the value passed for
  this option is divided by 2 and the resulting value used instead.
! .IP "\fB\-mcode\-region=\fR" 4
  .IX Item "-mcode-region="
  .PD 0
! .IP "\fB\-mdata\-region=\fR" 4
  .IX Item "-mdata-region="
  .PD
  These options tell the compiler where to place functions and data that
--- 29585,29598 ----
  exceeded, an mspabi helper function is used instead.  The default value is 4.
  .Sp
  This only affects cases where a shift by multiple positions cannot be
! completed with a single instruction (e.g. all shifts >1 on the 430 ISA).
  .Sp
  Shifts of a 32\-bit value are at least twice as costly, so the value passed for
  this option is divided by 2 and the resulting value used instead.
! .IP \fB\-mcode\-region=\fR 4
  .IX Item "-mcode-region="
  .PD 0
! .IP \fB\-mdata\-region=\fR 4
  .IX Item "-mdata-region="
  .PD
  These options tell the compiler where to place functions and data that
*************** like the corresponding attribute.  The f
*** 29668,29789 ****
  \&\f(CW\*(C`any\*(C'\fR \- is the default.  It leaves placement entirely up to the
  linker script and how it assigns the standard sections
  (\f(CW\*(C`.text\*(C'\fR, \f(CW\*(C`.data\*(C'\fR, etc) to the memory regions.
! .IP "\fB\-msilicon\-errata=\fR" 4
  .IX Item "-msilicon-errata="
  This option passes on a request to assembler to enable the fixes for
  the named silicon errata.
! .IP "\fB\-msilicon\-errata\-warn=\fR" 4
  .IX Item "-msilicon-errata-warn="
  This option passes on a request to the assembler to enable warning
  messages when a silicon errata might need to be applied.
! .IP "\fB\-mwarn\-devices\-csv\fR" 4
  .IX Item "-mwarn-devices-csv"
  .PD 0
! .IP "\fB\-mno\-warn\-devices\-csv\fR" 4
  .IX Item "-mno-warn-devices-csv"
  .PD
  Warn if \fBdevices.csv\fR is not found or there are problem parsing it
  (default: on).
  .PP
! \fI\s-1NDS32\s0 Options\fR
  .IX Subsection "NDS32 Options"
  .PP
! These options are defined for \s-1NDS32\s0 implementations:
! .IP "\fB\-mbig\-endian\fR" 4
  .IX Item "-mbig-endian"
! Generate code in big-endian mode.
! .IP "\fB\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
! Generate code in little-endian mode.
! .IP "\fB\-mreduced\-regs\fR" 4
  .IX Item "-mreduced-regs"
! Use reduced-set registers for register allocation.
! .IP "\fB\-mfull\-regs\fR" 4
  .IX Item "-mfull-regs"
! Use full-set registers for register allocation.
! .IP "\fB\-mcmov\fR" 4
  .IX Item "-mcmov"
  Generate conditional move instructions.
! .IP "\fB\-mno\-cmov\fR" 4
  .IX Item "-mno-cmov"
  Do not generate conditional move instructions.
! .IP "\fB\-mext\-perf\fR" 4
  .IX Item "-mext-perf"
  Generate performance extension instructions.
! .IP "\fB\-mno\-ext\-perf\fR" 4
  .IX Item "-mno-ext-perf"
  Do not generate performance extension instructions.
! .IP "\fB\-mext\-perf2\fR" 4
  .IX Item "-mext-perf2"
  Generate performance extension 2 instructions.
! .IP "\fB\-mno\-ext\-perf2\fR" 4
  .IX Item "-mno-ext-perf2"
  Do not generate performance extension 2 instructions.
! .IP "\fB\-mext\-string\fR" 4
  .IX Item "-mext-string"
  Generate string extension instructions.
! .IP "\fB\-mno\-ext\-string\fR" 4
  .IX Item "-mno-ext-string"
  Do not generate string extension instructions.
! .IP "\fB\-mv3push\fR" 4
  .IX Item "-mv3push"
  Generate v3 push25/pop25 instructions.
! .IP "\fB\-mno\-v3push\fR" 4
  .IX Item "-mno-v3push"
  Do not generate v3 push25/pop25 instructions.
! .IP "\fB\-m16\-bit\fR" 4
  .IX Item "-m16-bit"
  Generate 16\-bit instructions.
! .IP "\fB\-mno\-16\-bit\fR" 4
  .IX Item "-mno-16-bit"
  Do not generate 16\-bit instructions.
! .IP "\fB\-misr\-vector\-size=\fR\fInum\fR" 4
  .IX Item "-misr-vector-size=num"
  Specify the size of each interrupt vector, which must be 4 or 16.
! .IP "\fB\-mcache\-block\-size=\fR\fInum\fR" 4
  .IX Item "-mcache-block-size=num"
  Specify the size of each cache block,
  which must be a power of 2 between 4 and 512.
! .IP "\fB\-march=\fR\fIarch\fR" 4
  .IX Item "-march=arch"
  Specify the name of the target architecture.
! .IP "\fB\-mcmodel=\fR\fIcode-model\fR" 4
  .IX Item "-mcmodel=code-model"
  Set the code model to one of
  .RS 4
! .IP "\fBsmall\fR" 4
  .IX Item "small"
! All the data and read-only data segments must be within 512KB addressing space.
  The text segment must be within 16MB addressing space.
! .IP "\fBmedium\fR" 4
  .IX Item "medium"
! The data segment must be within 512KB while the read-only data segment can be
  within 4GB addressing space.  The text segment should be still within 16MB
  addressing space.
! .IP "\fBlarge\fR" 4
  .IX Item "large"
  All the text and data segments can be within 4GB addressing space.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mctor\-dtor\fR" 4
  .IX Item "-mctor-dtor"
  Enable constructor/destructor feature.
! .IP "\fB\-mrelax\fR" 4
  .IX Item "-mrelax"
  Guide linker to relax instructions.
  .PP
! \fINvidia \s-1PTX\s0 Options\fR
  .IX Subsection "Nvidia PTX Options"
  .PP
! These options are defined for Nvidia \s-1PTX:\s0
! .IP "\fB\-m64\fR" 4
  .IX Item "-m64"
! Ignored, but preserved for backward compatibility.  Only 64\-bit \s-1ABI\s0 is
  supported.
! .IP "\fB\-march=\fR\fIarchitecture-string\fR" 4
  .IX Item "-march=architecture-string"
! Generate code for the specified \s-1PTX ISA\s0 target architecture.
  Valid architecture strings are
  \&\fBsm_30\fR, \fBsm_35\fR, \fBsm_37\fR,
  \&\fBsm_52\fR, \fBsm_53\fR,
--- 29603,29724 ----
  \&\f(CW\*(C`any\*(C'\fR \- is the default.  It leaves placement entirely up to the
  linker script and how it assigns the standard sections
  (\f(CW\*(C`.text\*(C'\fR, \f(CW\*(C`.data\*(C'\fR, etc) to the memory regions.
! .IP \fB\-msilicon\-errata=\fR 4
  .IX Item "-msilicon-errata="
  This option passes on a request to assembler to enable the fixes for
  the named silicon errata.
! .IP \fB\-msilicon\-errata\-warn=\fR 4
  .IX Item "-msilicon-errata-warn="
  This option passes on a request to the assembler to enable warning
  messages when a silicon errata might need to be applied.
! .IP \fB\-mwarn\-devices\-csv\fR 4
  .IX Item "-mwarn-devices-csv"
  .PD 0
! .IP \fB\-mno\-warn\-devices\-csv\fR 4
  .IX Item "-mno-warn-devices-csv"
  .PD
  Warn if \fBdevices.csv\fR is not found or there are problem parsing it
  (default: on).
  .PP
! \fINDS32 Options\fR
  .IX Subsection "NDS32 Options"
  .PP
! These options are defined for NDS32 implementations:
! .IP \fB\-mbig\-endian\fR 4
  .IX Item "-mbig-endian"
! Generate code in big\-endian mode.
! .IP \fB\-mlittle\-endian\fR 4
  .IX Item "-mlittle-endian"
! Generate code in little\-endian mode.
! .IP \fB\-mreduced\-regs\fR 4
  .IX Item "-mreduced-regs"
! Use reduced\-set registers for register allocation.
! .IP \fB\-mfull\-regs\fR 4
  .IX Item "-mfull-regs"
! Use full\-set registers for register allocation.
! .IP \fB\-mcmov\fR 4
  .IX Item "-mcmov"
  Generate conditional move instructions.
! .IP \fB\-mno\-cmov\fR 4
  .IX Item "-mno-cmov"
  Do not generate conditional move instructions.
! .IP \fB\-mext\-perf\fR 4
  .IX Item "-mext-perf"
  Generate performance extension instructions.
! .IP \fB\-mno\-ext\-perf\fR 4
  .IX Item "-mno-ext-perf"
  Do not generate performance extension instructions.
! .IP \fB\-mext\-perf2\fR 4
  .IX Item "-mext-perf2"
  Generate performance extension 2 instructions.
! .IP \fB\-mno\-ext\-perf2\fR 4
  .IX Item "-mno-ext-perf2"
  Do not generate performance extension 2 instructions.
! .IP \fB\-mext\-string\fR 4
  .IX Item "-mext-string"
  Generate string extension instructions.
! .IP \fB\-mno\-ext\-string\fR 4
  .IX Item "-mno-ext-string"
  Do not generate string extension instructions.
! .IP \fB\-mv3push\fR 4
  .IX Item "-mv3push"
  Generate v3 push25/pop25 instructions.
! .IP \fB\-mno\-v3push\fR 4
  .IX Item "-mno-v3push"
  Do not generate v3 push25/pop25 instructions.
! .IP \fB\-m16\-bit\fR 4
  .IX Item "-m16-bit"
  Generate 16\-bit instructions.
! .IP \fB\-mno\-16\-bit\fR 4
  .IX Item "-mno-16-bit"
  Do not generate 16\-bit instructions.
! .IP \fB\-misr\-vector\-size=\fR\fInum\fR 4
  .IX Item "-misr-vector-size=num"
  Specify the size of each interrupt vector, which must be 4 or 16.
! .IP \fB\-mcache\-block\-size=\fR\fInum\fR 4
  .IX Item "-mcache-block-size=num"
  Specify the size of each cache block,
  which must be a power of 2 between 4 and 512.
! .IP \fB\-march=\fR\fIarch\fR 4
  .IX Item "-march=arch"
  Specify the name of the target architecture.
! .IP \fB\-mcmodel=\fR\fIcode\-model\fR 4
  .IX Item "-mcmodel=code-model"
  Set the code model to one of
  .RS 4
! .IP \fBsmall\fR 4
  .IX Item "small"
! All the data and read\-only data segments must be within 512KB addressing space.
  The text segment must be within 16MB addressing space.
! .IP \fBmedium\fR 4
  .IX Item "medium"
! The data segment must be within 512KB while the read\-only data segment can be
  within 4GB addressing space.  The text segment should be still within 16MB
  addressing space.
! .IP \fBlarge\fR 4
  .IX Item "large"
  All the text and data segments can be within 4GB addressing space.
  .RE
  .RS 4
  .RE
! .IP \fB\-mctor\-dtor\fR 4
  .IX Item "-mctor-dtor"
  Enable constructor/destructor feature.
! .IP \fB\-mrelax\fR 4
  .IX Item "-mrelax"
  Guide linker to relax instructions.
  .PP
! \fINvidia PTX Options\fR
  .IX Subsection "Nvidia PTX Options"
  .PP
! These options are defined for Nvidia PTX:
! .IP \fB\-m64\fR 4
  .IX Item "-m64"
! Ignored, but preserved for backward compatibility.  Only 64\-bit ABI is
  supported.
! .IP \fB\-march=\fR\fIarchitecture\-string\fR 4
  .IX Item "-march=architecture-string"
! Generate code for the specified PTX ISA target architecture.
  Valid architecture strings are
  \&\fBsm_30\fR, \fBsm_35\fR, \fBsm_37\fR,
  \&\fBsm_52\fR, \fBsm_53\fR,
*************** The default depends on how the compiler
*** 29796,29873 ****
  This option sets the value of the preprocessor macro
  \&\f(CW\*(C`_\|_PTX_SM_\|_\*(C'\fR; for instance, for \fBsm_35\fR, it has the value
  \&\fB350\fR.
! .IP "\fB\-misa=\fR\fIarchitecture-string\fR" 4
  .IX Item "-misa=architecture-string"
  Alias of \fB\-march=\fR.
! .IP "\fB\-march\-map=\fR\fIarchitecture-string\fR" 4
  .IX Item "-march-map=architecture-string"
  Select the closest available \fB\-march=\fR value that is not more
  capable.  For instance, for \fB\-march\-map=sm_50\fR select
  \&\fB\-march=sm_37\fR, and for \fB\-march\-map=sm_53\fR select
  \&\fB\-march=sm_53\fR.
! .IP "\fB\-mptx=\fR\fIversion-string\fR" 4
  .IX Item "-mptx=version-string"
! Generate code for the specified \s-1PTX ISA\s0 version.
  Valid version strings are
  \&\fB3.1\fR,
  \&\fB4.1\fR, \fB4.2\fR,
  \&\fB5.0\fR,
  \&\fB6.0\fR, \fB6.3\fR,
  \&\fB7.0\fR, \fB7.3\fR, and \fB7.8\fR.
! The default \s-1PTX ISA\s0 version is the one that added support for the
! selected \s-1PTX ISA\s0 target architecture, see \fB\-march=\fR, but at
  least \fB6.3\fR, or \fB7.3\fR for \fB\-march=sm_52\fR and higher.
  .Sp
  This option sets the values of the preprocessor macros
  \&\f(CW\*(C`_\|_PTX_ISA_VERSION_MAJOR_\|_\*(C'\fR and \f(CW\*(C`_\|_PTX_ISA_VERSION_MINOR_\|_\*(C'\fR;
  for instance, for \fB3.1\fR the macros have the values \fB3\fR and
  \&\fB1\fR, respectively.
! .IP "\fB\-mmainkernel\fR" 4
  .IX Item "-mmainkernel"
! Link in code for a _\|_main kernel.  This is for stand-alone instead of
  offloading execution.
! .IP "\fB\-moptimize\fR" 4
  .IX Item "-moptimize"
  Apply partitioned execution optimizations.  This is the default when any
  level of optimization is selected.
! .IP "\fB\-msoft\-stack\fR" 4
  .IX Item "-msoft-stack"
  .PD 0
! .IP "\fB\-mno\-soft\-stack\fR" 4
  .IX Item "-mno-soft-stack"
  .PD
  For \fB\-mno\-soft\-stack\fR (the default, unless \fB\-mgomp\fR has
! been specified), use \s-1PTX\s0 \*(L"native\*(R" stacks, that is,
! generate code that uses \f(CW\*(C`.local\*(C'\fR memory or \s-1PTX\s0 \f(CW\*(C`alloca\*(C'\fR
  directly for stack storage.
  Unless \fB\-mptx=7.3\fR or higher and \fB\-march=sm_52\fR or
! higher are active, variable-length arrays and dynamically allocating
  memory on the stack with \f(CW\*(C`alloca\*(C'\fR are not supported.
  .Sp
  For \fB\-msoft\-stack\fR (implied by \fB\-mgomp\fR),
! generate code that does not use \f(CW\*(C`.local\*(C'\fR memory or \s-1PTX\s0 \f(CW\*(C`alloca\*(C'\fR
! directly for stack storage. Instead, a per-warp stack pointer is
! maintained explicitly. This enables variable-length stack allocation (with
! variable-length arrays or \f(CW\*(C`alloca\*(C'\fR), and when global memory is used for
  underlying storage, makes it possible to access automatic variables from other
  threads, or with atomic instructions. This code generation variant is used
  for OpenMP offloading, but the option is exposed on its own for the purpose
  of testing the compiler; to generate code suitable for linking into programs
  using OpenMP offloading, use option \fB\-mgomp\fR.
! .IP "\fB\-muniform\-simt\fR" 4
  .IX Item "-muniform-simt"
  Switch to code generation variant that allows to execute all threads in each
  warp, while maintaining memory state and side effects as if only one thread
! in each warp was active outside of OpenMP \s-1SIMD\s0 regions.  All atomic operations
  and calls to runtime (malloc, free, vprintf) are conditionally executed (iff
  current lane index equals the master lane index), and the register being
  assigned is copied via a shuffle instruction from the master lane.  Outside of
! \&\s-1SIMD\s0 regions lane 0 is the master; inside, each thread sees itself as the
! master.  Shared memory array \f(CW\*(C`int _\|_nvptx_uni[]\*(C'\fR stores all-zeros or
! all-ones bitmasks for each warp, indicating current mode (0 outside of \s-1SIMD\s0
! regions).  Each thread can bitwise-and the bitmask at position \f(CW\*(C`tid.y\*(C'\fR
  with current lane index to compute the master lane index.
! .IP "\fB\-mgomp\fR" 4
  .IX Item "-mgomp"
  Generate code for use in OpenMP offloading: enables \fB\-msoft\-stack\fR and
  \&\fB\-muniform\-simt\fR options, and selects corresponding multilib variant.
--- 29731,29808 ----
  This option sets the value of the preprocessor macro
  \&\f(CW\*(C`_\|_PTX_SM_\|_\*(C'\fR; for instance, for \fBsm_35\fR, it has the value
  \&\fB350\fR.
! .IP \fB\-misa=\fR\fIarchitecture\-string\fR 4
  .IX Item "-misa=architecture-string"
  Alias of \fB\-march=\fR.
! .IP \fB\-march\-map=\fR\fIarchitecture\-string\fR 4
  .IX Item "-march-map=architecture-string"
  Select the closest available \fB\-march=\fR value that is not more
  capable.  For instance, for \fB\-march\-map=sm_50\fR select
  \&\fB\-march=sm_37\fR, and for \fB\-march\-map=sm_53\fR select
  \&\fB\-march=sm_53\fR.
! .IP \fB\-mptx=\fR\fIversion\-string\fR 4
  .IX Item "-mptx=version-string"
! Generate code for the specified PTX ISA version.
  Valid version strings are
  \&\fB3.1\fR,
  \&\fB4.1\fR, \fB4.2\fR,
  \&\fB5.0\fR,
  \&\fB6.0\fR, \fB6.3\fR,
  \&\fB7.0\fR, \fB7.3\fR, and \fB7.8\fR.
! The default PTX ISA version is the one that added support for the
! selected PTX ISA target architecture, see \fB\-march=\fR, but at
  least \fB6.3\fR, or \fB7.3\fR for \fB\-march=sm_52\fR and higher.
  .Sp
  This option sets the values of the preprocessor macros
  \&\f(CW\*(C`_\|_PTX_ISA_VERSION_MAJOR_\|_\*(C'\fR and \f(CW\*(C`_\|_PTX_ISA_VERSION_MINOR_\|_\*(C'\fR;
  for instance, for \fB3.1\fR the macros have the values \fB3\fR and
  \&\fB1\fR, respectively.
! .IP \fB\-mmainkernel\fR 4
  .IX Item "-mmainkernel"
! Link in code for a _\|_main kernel.  This is for stand\-alone instead of
  offloading execution.
! .IP \fB\-moptimize\fR 4
  .IX Item "-moptimize"
  Apply partitioned execution optimizations.  This is the default when any
  level of optimization is selected.
! .IP \fB\-msoft\-stack\fR 4
  .IX Item "-msoft-stack"
  .PD 0
! .IP \fB\-mno\-soft\-stack\fR 4
  .IX Item "-mno-soft-stack"
  .PD
  For \fB\-mno\-soft\-stack\fR (the default, unless \fB\-mgomp\fR has
! been specified), use PTX "native" stacks, that is,
! generate code that uses \f(CW\*(C`.local\*(C'\fR memory or PTX \f(CW\*(C`alloca\*(C'\fR
  directly for stack storage.
  Unless \fB\-mptx=7.3\fR or higher and \fB\-march=sm_52\fR or
! higher are active, variable\-length arrays and dynamically allocating
  memory on the stack with \f(CW\*(C`alloca\*(C'\fR are not supported.
  .Sp
  For \fB\-msoft\-stack\fR (implied by \fB\-mgomp\fR),
! generate code that does not use \f(CW\*(C`.local\*(C'\fR memory or PTX \f(CW\*(C`alloca\*(C'\fR
! directly for stack storage. Instead, a per\-warp stack pointer is
! maintained explicitly. This enables variable\-length stack allocation (with
! variable\-length arrays or \f(CW\*(C`alloca\*(C'\fR), and when global memory is used for
  underlying storage, makes it possible to access automatic variables from other
  threads, or with atomic instructions. This code generation variant is used
  for OpenMP offloading, but the option is exposed on its own for the purpose
  of testing the compiler; to generate code suitable for linking into programs
  using OpenMP offloading, use option \fB\-mgomp\fR.
! .IP \fB\-muniform\-simt\fR 4
  .IX Item "-muniform-simt"
  Switch to code generation variant that allows to execute all threads in each
  warp, while maintaining memory state and side effects as if only one thread
! in each warp was active outside of OpenMP SIMD regions.  All atomic operations
  and calls to runtime (malloc, free, vprintf) are conditionally executed (iff
  current lane index equals the master lane index), and the register being
  assigned is copied via a shuffle instruction from the master lane.  Outside of
! SIMD regions lane 0 is the master; inside, each thread sees itself as the
! master.  Shared memory array \f(CW\*(C`int _\|_nvptx_uni[]\*(C'\fR stores all\-zeros or
! all\-ones bitmasks for each warp, indicating current mode (0 outside of SIMD
! regions).  Each thread can bitwise\-and the bitmask at position \f(CW\*(C`tid.y\*(C'\fR
  with current lane index to compute the master lane index.
! .IP \fB\-mgomp\fR 4
  .IX Item "-mgomp"
  Generate code for use in OpenMP offloading: enables \fB\-msoft\-stack\fR and
  \&\fB\-muniform\-simt\fR options, and selects corresponding multilib variant.
*************** Generate code for use in OpenMP offloadi
*** 29876,30014 ****
  .IX Subsection "OpenRISC Options"
  .PP
  These options are defined for OpenRISC:
! .IP "\fB\-mboard=\fR\fIname\fR" 4
  .IX Item "-mboard=name"
  Configure a board specific runtime.  This will be passed to the linker for
  newlib board library linking.  The default is \f(CW\*(C`or1ksim\*(C'\fR.
! .IP "\fB\-mnewlib\fR" 4
  .IX Item "-mnewlib"
  This option is ignored; it is for compatibility purposes only.  This used to
  select linker and preprocessor options for use with newlib.
! .IP "\fB\-msoft\-div\fR" 4
  .IX Item "-msoft-div"
  .PD 0
! .IP "\fB\-mhard\-div\fR" 4
  .IX Item "-mhard-div"
  .PD
  Select software or hardware divide (\f(CW\*(C`l.div\*(C'\fR, \f(CW\*(C`l.divu\*(C'\fR) instructions.
  This default is hardware divide.
! .IP "\fB\-msoft\-mul\fR" 4
  .IX Item "-msoft-mul"
  .PD 0
! .IP "\fB\-mhard\-mul\fR" 4
  .IX Item "-mhard-mul"
  .PD
  Select software or hardware multiply (\f(CW\*(C`l.mul\*(C'\fR, \f(CW\*(C`l.muli\*(C'\fR) instructions.
  This default is hardware multiply.
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  .PD 0
! .IP "\fB\-mhard\-float\fR" 4
  .IX Item "-mhard-float"
  .PD
  Select software or hardware for floating point operations.
  The default is software.
! .IP "\fB\-mdouble\-float\fR" 4
  .IX Item "-mdouble-float"
! When \fB\-mhard\-float\fR is selected, enables generation of double-precision
  floating point instructions.  By default functions from \fIlibgcc\fR are used
! to perform double-precision floating point operations.
! .IP "\fB\-munordered\-float\fR" 4
  .IX Item "-munordered-float"
  When \fB\-mhard\-float\fR is selected, enables generation of unordered
  floating point compare and set flag (\f(CW\*(C`lf.sfun*\*(C'\fR) instructions.  By default
  functions from \fIlibgcc\fR are used to perform unordered floating point
  compare and set flag operations.
! .IP "\fB\-mcmov\fR" 4
  .IX Item "-mcmov"
  Enable generation of conditional move (\f(CW\*(C`l.cmov\*(C'\fR) instructions.  By
  default the equivalent will be generated using set and branch.
! .IP "\fB\-mror\fR" 4
  .IX Item "-mror"
  Enable generation of rotate right (\f(CW\*(C`l.ror\*(C'\fR) instructions.  By default
  functions from \fIlibgcc\fR are used to perform rotate right operations.
! .IP "\fB\-mrori\fR" 4
  .IX Item "-mrori"
  Enable generation of rotate right with immediate (\f(CW\*(C`l.rori\*(C'\fR) instructions.
  By default functions from \fIlibgcc\fR are used to perform rotate right with
  immediate operations.
! .IP "\fB\-msext\fR" 4
  .IX Item "-msext"
  Enable generation of sign extension (\f(CW\*(C`l.ext*\*(C'\fR) instructions.  By default
  memory loads are used to perform sign extension.
! .IP "\fB\-msfimm\fR" 4
  .IX Item "-msfimm"
  Enable generation of compare and set flag with immediate (\f(CW\*(C`l.sf*i\*(C'\fR)
  instructions.  By default extra instructions will be generated to store the
  immediate to a register first.
! .IP "\fB\-mshftimm\fR" 4
  .IX Item "-mshftimm"
  Enable generation of shift with immediate (\f(CW\*(C`l.srai\*(C'\fR, \f(CW\*(C`l.srli\*(C'\fR,
  \&\f(CW\*(C`l.slli\*(C'\fR) instructions.  By default extra instructions will be generated
  to store the immediate to a register first.
! .IP "\fB\-mcmodel=small\fR" 4
  .IX Item "-mcmodel=small"
! Generate OpenRISC code for the small model: The \s-1GOT\s0 is limited to 64k. This is
  the default model.
! .IP "\fB\-mcmodel=large\fR" 4
  .IX Item "-mcmodel=large"
! Generate OpenRISC code for the large model: The \s-1GOT\s0 may grow up to 4G in size.
  .PP
! \fI\s-1PDP\-11\s0 Options\fR
  .IX Subsection "PDP-11 Options"
  .PP
! These options are defined for the \s-1PDP\-11:\s0
! .IP "\fB\-mfpu\fR" 4
  .IX Item "-mfpu"
! Use hardware \s-1FPP\s0 floating point.  This is the default.  (\s-1FIS\s0 floating
! point on the \s-1PDP\-11/40\s0 is not supported.)  Implies \-m45.
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  Do not use hardware floating point.
! .IP "\fB\-mac0\fR" 4
  .IX Item "-mac0"
! Return floating-point results in ac0 (fr0 in Unix assembler syntax).
! .IP "\fB\-mno\-ac0\fR" 4
  .IX Item "-mno-ac0"
! Return floating-point results in memory.  This is the default.
! .IP "\fB\-m40\fR" 4
  .IX Item "-m40"
! Generate code for a \s-1PDP\-11/40.\s0  Implies \-msoft\-float \-mno\-split.
! .IP "\fB\-m45\fR" 4
  .IX Item "-m45"
! Generate code for a \s-1PDP\-11/45.\s0  This is the default.
! .IP "\fB\-m10\fR" 4
  .IX Item "-m10"
! Generate code for a \s-1PDP\-11/10.\s0  Implies \-msoft\-float \-mno\-split.
! .IP "\fB\-mint16\fR" 4
  .IX Item "-mint16"
  .PD 0
! .IP "\fB\-mno\-int32\fR" 4
  .IX Item "-mno-int32"
  .PD
  Use 16\-bit \f(CW\*(C`int\*(C'\fR.  This is the default.
! .IP "\fB\-mint32\fR" 4
  .IX Item "-mint32"
  .PD 0
! .IP "\fB\-mno\-int16\fR" 4
  .IX Item "-mno-int16"
  .PD
  Use 32\-bit \f(CW\*(C`int\*(C'\fR.
! .IP "\fB\-msplit\fR" 4
  .IX Item "-msplit"
  Target has split instruction and data space.  Implies \-m45.
! .IP "\fB\-munix\-asm\fR" 4
  .IX Item "-munix-asm"
  Use Unix assembler syntax.
! .IP "\fB\-mdec\-asm\fR" 4
  .IX Item "-mdec-asm"
! Use \s-1DEC\s0 assembler syntax.
! .IP "\fB\-mgnu\-asm\fR" 4
  .IX Item "-mgnu-asm"
! Use \s-1GNU\s0 assembler syntax.  This is the default.
! .IP "\fB\-mlra\fR" 4
  .IX Item "-mlra"
! Use the new \s-1LRA\s0 register allocator.  By default, the old \*(L"reload\*(R"
  allocator is used.
  .PP
  \fIPowerPC Options\fR
--- 29811,29949 ----
  .IX Subsection "OpenRISC Options"
  .PP
  These options are defined for OpenRISC:
! .IP \fB\-mboard=\fR\fIname\fR 4
  .IX Item "-mboard=name"
  Configure a board specific runtime.  This will be passed to the linker for
  newlib board library linking.  The default is \f(CW\*(C`or1ksim\*(C'\fR.
! .IP \fB\-mnewlib\fR 4
  .IX Item "-mnewlib"
  This option is ignored; it is for compatibility purposes only.  This used to
  select linker and preprocessor options for use with newlib.
! .IP \fB\-msoft\-div\fR 4
  .IX Item "-msoft-div"
  .PD 0
! .IP \fB\-mhard\-div\fR 4
  .IX Item "-mhard-div"
  .PD
  Select software or hardware divide (\f(CW\*(C`l.div\*(C'\fR, \f(CW\*(C`l.divu\*(C'\fR) instructions.
  This default is hardware divide.
! .IP \fB\-msoft\-mul\fR 4
  .IX Item "-msoft-mul"
  .PD 0
! .IP \fB\-mhard\-mul\fR 4
  .IX Item "-mhard-mul"
  .PD
  Select software or hardware multiply (\f(CW\*(C`l.mul\*(C'\fR, \f(CW\*(C`l.muli\*(C'\fR) instructions.
  This default is hardware multiply.
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  .PD 0
! .IP \fB\-mhard\-float\fR 4
  .IX Item "-mhard-float"
  .PD
  Select software or hardware for floating point operations.
  The default is software.
! .IP \fB\-mdouble\-float\fR 4
  .IX Item "-mdouble-float"
! When \fB\-mhard\-float\fR is selected, enables generation of double\-precision
  floating point instructions.  By default functions from \fIlibgcc\fR are used
! to perform double\-precision floating point operations.
! .IP \fB\-munordered\-float\fR 4
  .IX Item "-munordered-float"
  When \fB\-mhard\-float\fR is selected, enables generation of unordered
  floating point compare and set flag (\f(CW\*(C`lf.sfun*\*(C'\fR) instructions.  By default
  functions from \fIlibgcc\fR are used to perform unordered floating point
  compare and set flag operations.
! .IP \fB\-mcmov\fR 4
  .IX Item "-mcmov"
  Enable generation of conditional move (\f(CW\*(C`l.cmov\*(C'\fR) instructions.  By
  default the equivalent will be generated using set and branch.
! .IP \fB\-mror\fR 4
  .IX Item "-mror"
  Enable generation of rotate right (\f(CW\*(C`l.ror\*(C'\fR) instructions.  By default
  functions from \fIlibgcc\fR are used to perform rotate right operations.
! .IP \fB\-mrori\fR 4
  .IX Item "-mrori"
  Enable generation of rotate right with immediate (\f(CW\*(C`l.rori\*(C'\fR) instructions.
  By default functions from \fIlibgcc\fR are used to perform rotate right with
  immediate operations.
! .IP \fB\-msext\fR 4
  .IX Item "-msext"
  Enable generation of sign extension (\f(CW\*(C`l.ext*\*(C'\fR) instructions.  By default
  memory loads are used to perform sign extension.
! .IP \fB\-msfimm\fR 4
  .IX Item "-msfimm"
  Enable generation of compare and set flag with immediate (\f(CW\*(C`l.sf*i\*(C'\fR)
  instructions.  By default extra instructions will be generated to store the
  immediate to a register first.
! .IP \fB\-mshftimm\fR 4
  .IX Item "-mshftimm"
  Enable generation of shift with immediate (\f(CW\*(C`l.srai\*(C'\fR, \f(CW\*(C`l.srli\*(C'\fR,
  \&\f(CW\*(C`l.slli\*(C'\fR) instructions.  By default extra instructions will be generated
  to store the immediate to a register first.
! .IP \fB\-mcmodel=small\fR 4
  .IX Item "-mcmodel=small"
! Generate OpenRISC code for the small model: The GOT is limited to 64k. This is
  the default model.
! .IP \fB\-mcmodel=large\fR 4
  .IX Item "-mcmodel=large"
! Generate OpenRISC code for the large model: The GOT may grow up to 4G in size.
  .PP
! \fIPDP\-11 Options\fR
  .IX Subsection "PDP-11 Options"
  .PP
! These options are defined for the PDP\-11:
! .IP \fB\-mfpu\fR 4
  .IX Item "-mfpu"
! Use hardware FPP floating point.  This is the default.  (FIS floating
! point on the PDP\-11/40 is not supported.)  Implies \-m45.
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  Do not use hardware floating point.
! .IP \fB\-mac0\fR 4
  .IX Item "-mac0"
! Return floating\-point results in ac0 (fr0 in Unix assembler syntax).
! .IP \fB\-mno\-ac0\fR 4
  .IX Item "-mno-ac0"
! Return floating\-point results in memory.  This is the default.
! .IP \fB\-m40\fR 4
  .IX Item "-m40"
! Generate code for a PDP\-11/40.  Implies \-msoft\-float \-mno\-split.
! .IP \fB\-m45\fR 4
  .IX Item "-m45"
! Generate code for a PDP\-11/45.  This is the default.
! .IP \fB\-m10\fR 4
  .IX Item "-m10"
! Generate code for a PDP\-11/10.  Implies \-msoft\-float \-mno\-split.
! .IP \fB\-mint16\fR 4
  .IX Item "-mint16"
  .PD 0
! .IP \fB\-mno\-int32\fR 4
  .IX Item "-mno-int32"
  .PD
  Use 16\-bit \f(CW\*(C`int\*(C'\fR.  This is the default.
! .IP \fB\-mint32\fR 4
  .IX Item "-mint32"
  .PD 0
! .IP \fB\-mno\-int16\fR 4
  .IX Item "-mno-int16"
  .PD
  Use 32\-bit \f(CW\*(C`int\*(C'\fR.
! .IP \fB\-msplit\fR 4
  .IX Item "-msplit"
  Target has split instruction and data space.  Implies \-m45.
! .IP \fB\-munix\-asm\fR 4
  .IX Item "-munix-asm"
  Use Unix assembler syntax.
! .IP \fB\-mdec\-asm\fR 4
  .IX Item "-mdec-asm"
! Use DEC assembler syntax.
! .IP \fB\-mgnu\-asm\fR 4
  .IX Item "-mgnu-asm"
! Use GNU assembler syntax.  This is the default.
! .IP \fB\-mlra\fR 4
  .IX Item "-mlra"
! Use the new LRA register allocator.  By default, the old "reload"
  allocator is used.
  .PP
  \fIPowerPC Options\fR
*************** allocator is used.
*** 30016,30029 ****
  .PP
  These are listed under
  .PP
! \fI\s-1PRU\s0 Options\fR
  .IX Subsection "PRU Options"
  .PP
! These command-line options are defined for \s-1PRU\s0 target:
! .IP "\fB\-minrt\fR" 4
  .IX Item "-minrt"
  Link with a minimum runtime environment.  This can significantly reduce
! the size of the final \s-1ELF\s0 binary, but some standard C runtime features
  are removed.
  .Sp
  This option disables support for static initializers and constructors.
--- 29951,29964 ----
  .PP
  These are listed under
  .PP
! \fIPRU Options\fR
  .IX Subsection "PRU Options"
  .PP
! These command\-line options are defined for PRU target:
! .IP \fB\-minrt\fR 4
  .IX Item "-minrt"
  Link with a minimum runtime environment.  This can significantly reduce
! the size of the final ELF binary, but some standard C runtime features
  are removed.
  .Sp
  This option disables support for static initializers and constructors.
*************** program will not use those features.
*** 30034,30072 ****
  The minimal startup code would not pass \f(CW\*(C`argc\*(C'\fR and \f(CW\*(C`argv\*(C'\fR arguments
  to \f(CW\*(C`main\*(C'\fR, so the latter must be declared as \f(CW\*(C`int main (void)\*(C'\fR.
  This is already the norm for most firmware projects.
! .IP "\fB\-mmcu=\fR\fImcu\fR" 4
  .IX Item "-mmcu=mcu"
! Specify the \s-1PRU\s0 hardware variant to use.  A correspondingly named
  spec file would be loaded, passing the memory region sizes to
! the linker and defining hardware-specific C macros.
  .Sp
  Newlib provides only the \f(CW\*(C`sim\*(C'\fR spec, intended for running
  regression tests using a simulator.  Specs for real hardware can be
  obtained by installing the
  GnuPruMcu (\f(CW\*(C`https://github.com/dinuxbg/gnuprumcu/\*(C'\fR) package.
! .IP "\fB\-mno\-relax\fR" 4
  .IX Item "-mno-relax"
! Make \s-1GCC\s0 pass the \fB\-\-no\-relax\fR command-line option to the linker
  instead of the \fB\-\-relax\fR option.
! .IP "\fB\-mloop\fR" 4
  .IX Item "-mloop"
! Allow (or do not allow) \s-1GCC\s0 to use the \s-1LOOP\s0 instruction.
! .IP "\fB\-mabi=\fR\fIvariant\fR" 4
  .IX Item "-mabi=variant"
! Specify the \s-1ABI\s0 variant to output code for.  \fB\-mabi=ti\fR selects the
! unmodified \s-1TI ABI\s0 while \fB\-mabi=gnu\fR selects a \s-1GNU\s0 variant that copes
! more naturally with certain \s-1GCC\s0 assumptions.  These are the differences:
  .RS 4
  .IP "\fBFunction Pointer Size\fR" 4
  .IX Item "Function Pointer Size"
! \&\s-1TI ABI\s0 specifies that function (code) pointers are 16\-bit, whereas \s-1GNU\s0
  supports only 32\-bit data and code pointers.
  .IP "\fBOptional Return Value Pointer\fR" 4
  .IX Item "Optional Return Value Pointer"
  Function return values larger than 64 bits are passed by using a hidden
! pointer as the first argument of the function.  \s-1TI ABI,\s0 though, mandates that
! the pointer can be \s-1NULL\s0 in case the caller is not using the returned value.
! \&\s-1GNU\s0 always passes and expects a valid return value pointer.
  .RE
  .RS 4
  .Sp
--- 29969,30007 ----
  The minimal startup code would not pass \f(CW\*(C`argc\*(C'\fR and \f(CW\*(C`argv\*(C'\fR arguments
  to \f(CW\*(C`main\*(C'\fR, so the latter must be declared as \f(CW\*(C`int main (void)\*(C'\fR.
  This is already the norm for most firmware projects.
! .IP \fB\-mmcu=\fR\fImcu\fR 4
  .IX Item "-mmcu=mcu"
! Specify the PRU hardware variant to use.  A correspondingly named
  spec file would be loaded, passing the memory region sizes to
! the linker and defining hardware\-specific C macros.
  .Sp
  Newlib provides only the \f(CW\*(C`sim\*(C'\fR spec, intended for running
  regression tests using a simulator.  Specs for real hardware can be
  obtained by installing the
  GnuPruMcu (\f(CW\*(C`https://github.com/dinuxbg/gnuprumcu/\*(C'\fR) package.
! .IP \fB\-mno\-relax\fR 4
  .IX Item "-mno-relax"
! Make GCC pass the \fB\-\-no\-relax\fR command\-line option to the linker
  instead of the \fB\-\-relax\fR option.
! .IP \fB\-mloop\fR 4
  .IX Item "-mloop"
! Allow (or do not allow) GCC to use the LOOP instruction.
! .IP \fB\-mabi=\fR\fIvariant\fR 4
  .IX Item "-mabi=variant"
! Specify the ABI variant to output code for.  \fB\-mabi=ti\fR selects the
! unmodified TI ABI while \fB\-mabi=gnu\fR selects a GNU variant that copes
! more naturally with certain GCC assumptions.  These are the differences:
  .RS 4
  .IP "\fBFunction Pointer Size\fR" 4
  .IX Item "Function Pointer Size"
! TI ABI specifies that function (code) pointers are 16\-bit, whereas GNU
  supports only 32\-bit data and code pointers.
  .IP "\fBOptional Return Value Pointer\fR" 4
  .IX Item "Optional Return Value Pointer"
  Function return values larger than 64 bits are passed by using a hidden
! pointer as the first argument of the function.  TI ABI, though, mandates that
! the pointer can be NULL in case the caller is not using the returned value.
! GNU always passes and expects a valid return value pointer.
  .RE
  .RS 4
  .Sp
*************** when any of the above code constructs is
*** 30075,30112 ****
  the standard C library cannot be built and it is omitted when linking with
  \&\fB\-mabi=ti\fR.
  .Sp
! Relaxation is a \s-1GNU\s0 feature and for safety reasons is disabled when using
! \&\fB\-mabi=ti\fR.  The \s-1TI\s0 toolchain does not emit relocations for QBBx
! instructions, so the \s-1GNU\s0 linker cannot adjust them when shortening adjacent
! \&\s-1LDI32\s0 pseudo instructions.
  .RE
  .PP
! \fIRISC-V Options\fR
  .IX Subsection "RISC-V Options"
  .PP
! These command-line options are defined for RISC-V targets:
! .IP "\fB\-mbranch\-cost=\fR\fIn\fR" 4
  .IX Item "-mbranch-cost=n"
  Set the cost of branches to roughly \fIn\fR instructions.
! .IP "\fB\-mplt\fR" 4
  .IX Item "-mplt"
  .PD 0
! .IP "\fB\-mno\-plt\fR" 4
  .IX Item "-mno-plt"
  .PD
! When generating \s-1PIC\s0 code, do or don't allow the use of PLTs. Ignored for
! non-PIC.  The default is \fB\-mplt\fR.
! .IP "\fB\-mabi=\fR\fIABI-string\fR" 4
  .IX Item "-mabi=ABI-string"
! Specify integer and floating-point calling convention.  \fIABI-string\fR
  contains two parts: the size of integer types and the registers used for
! floating-point types.  For example \fB\-march=rv64ifd \-mabi=lp64d\fR means that
  \&\fBlong\fR and pointers are 64\-bit (implicitly defining \fBint\fR to be
! 32\-bit), and that floating-point values up to 64 bits wide are passed in F
  registers.  Contrast this with \fB\-march=rv64ifd \-mabi=lp64f\fR, which still
  allows the compiler to generate code that uses the F and D extensions but only
! allows floating-point values up to 32 bits long to be passed in registers; or
! \&\fB\-march=rv64ifd \-mabi=lp64\fR, in which no floating-point arguments will be
  passed in registers.
  .Sp
  The default for this argument is system dependent, users who want a specific
--- 30010,30047 ----
  the standard C library cannot be built and it is omitted when linking with
  \&\fB\-mabi=ti\fR.
  .Sp
! Relaxation is a GNU feature and for safety reasons is disabled when using
! \&\fB\-mabi=ti\fR.  The TI toolchain does not emit relocations for QBBx
! instructions, so the GNU linker cannot adjust them when shortening adjacent
! LDI32 pseudo instructions.
  .RE
  .PP
! \fIRISC\-V Options\fR
  .IX Subsection "RISC-V Options"
  .PP
! These command\-line options are defined for RISC\-V targets:
! .IP \fB\-mbranch\-cost=\fR\fIn\fR 4
  .IX Item "-mbranch-cost=n"
  Set the cost of branches to roughly \fIn\fR instructions.
! .IP \fB\-mplt\fR 4
  .IX Item "-mplt"
  .PD 0
! .IP \fB\-mno\-plt\fR 4
  .IX Item "-mno-plt"
  .PD
! When generating PIC code, do or don\*(Aqt allow the use of PLTs. Ignored for
! non\-PIC.  The default is \fB\-mplt\fR.
! .IP \fB\-mabi=\fR\fIABI\-string\fR 4
  .IX Item "-mabi=ABI-string"
! Specify integer and floating\-point calling convention.  \fIABI\-string\fR
  contains two parts: the size of integer types and the registers used for
! floating\-point types.  For example \fB\-march=rv64ifd \-mabi=lp64d\fR means that
  \&\fBlong\fR and pointers are 64\-bit (implicitly defining \fBint\fR to be
! 32\-bit), and that floating\-point values up to 64 bits wide are passed in F
  registers.  Contrast this with \fB\-march=rv64ifd \-mabi=lp64f\fR, which still
  allows the compiler to generate code that uses the F and D extensions but only
! allows floating\-point values up to 32 bits long to be passed in registers; or
! \&\fB\-march=rv64ifd \-mabi=lp64\fR, in which no floating\-point arguments will be
  passed in registers.
  .Sp
  The default for this argument is system dependent, users who want a specific
*************** calling convention should specify one ex
*** 30114,30194 ****
  conventions are: \fBilp32\fR, \fBilp32f\fR, \fBilp32d\fR, \fBlp64\fR,
  \&\fBlp64f\fR, and \fBlp64d\fR.  Some calling conventions are impossible to
  implement on some ISAs: for example, \fB\-march=rv32if \-mabi=ilp32d\fR is
! invalid because the \s-1ABI\s0 requires 64\-bit values be passed in F registers, but F
! registers are only 32 bits wide.  There are also the \fBilp32e\fR \s-1ABI\s0 that can
! only be used with the \fBrv32e\fR architecture and the \fBlp64e\fR \s-1ABI\s0 that
  can only be used with the \fBrv64e\fR.  Those ABIs are not well specified at
  present, and are subject to change.
! .IP "\fB\-mfdiv\fR" 4
  .IX Item "-mfdiv"
  .PD 0
! .IP "\fB\-mno\-fdiv\fR" 4
  .IX Item "-mno-fdiv"
  .PD
! Do or don't use hardware floating-point divide and square root instructions.
! This requires the F or D extensions for floating-point registers.  The default
  is to use them if the specified architecture has these instructions.
! .IP "\fB\-mfence\-tso\fR" 4
  .IX Item "-mfence-tso"
  .PD 0
! .IP "\fB\-mno\-fence\-tso\fR" 4
  .IX Item "-mno-fence-tso"
  .PD
! Do or don't use the \fBfence.tso\fR instruction, which is unimplemented on
  some processors (including those from T\-Head).  If the \fBfence.tso\fR
  instruction is not available then a stronger fence is used instead.
! .IP "\fB\-mdiv\fR" 4
  .IX Item "-mdiv"
  .PD 0
! .IP "\fB\-mno\-div\fR" 4
  .IX Item "-mno-div"
  .PD
! Do or don't use hardware instructions for integer division.  This requires the
  M extension.  The default is to use them if the specified architecture has
  these instructions.
! .IP "\fB\-misa\-spec=\fR\fIISA-spec-string\fR" 4
  .IX Item "-misa-spec=ISA-spec-string"
! Specify the version of the RISC-V Unprivileged (formerly User-Level)
! \&\s-1ISA\s0 specification to produce code conforming to.  The possibilities
! for \fIISA-spec-string\fR are:
  .RS 4
! .ie n .IP "2.2" 4
! .el .IP "\f(CW2.2\fR" 4
  .IX Item "2.2"
  Produce code conforming to version 2.2.
! .ie n .IP "20190608" 4
! .el .IP "\f(CW20190608\fR" 4
  .IX Item "20190608"
  Produce code conforming to version 20190608.
! .ie n .IP "20191213" 4
! .el .IP "\f(CW20191213\fR" 4
  .IX Item "20191213"
  Produce code conforming to version 20191213.
  .RE
  .RS 4
  .Sp
! The default is \fB\-misa\-spec=20191213\fR unless \s-1GCC\s0 has been configured
  with \fB\-\-with\-isa\-spec=\fR specifying a different default version.
  .RE
! .IP "\fB\-march=\fR\fIISA-string\fR" 4
  .IX Item "-march=ISA-string"
! Generate code for given RISC-V \s-1ISA\s0 (e.g. \fBrv64im\fR).  \s-1ISA\s0 strings must be
! lower-case.  Examples include \fBrv64i\fR, \fBrv32g\fR, \fBrv32e\fR, and
  \&\fBrv32imaf\fR. Additionally, a special value \fBhelp\fR
  (\fB\-march=help\fR) is accepted to list all supported extensions.
  .Sp
! The syntax of the \s-1ISA\s0 string is defined as follows:
  .RS 4
! .ie n .IP """The string must start with \fBrv32\fP or \fBrv64\fP, followed by""" 4
! .el .IP "\f(CWThe string must start with \f(CBrv32\f(CW or \f(CBrv64\f(CW, followed by\fR" 4
  .IX Item "The string must start with rv32 or rv64, followed by"
! \&\fBi\fR, \fBe\fR, or \fBg\fR, referred to as the base \s-1ISA.\s0
  .ie n .IP """The subsequent part of the string is a list of extension names. Extension""" 4
  .el .IP "\f(CWThe subsequent part of the string is a list of extension names. Extension\fR" 4
  .IX Item "The subsequent part of the string is a list of extension names. Extension"
! names can be categorized as multi-letter (e.g. \fBzba\fR) and single-letter
! (e.g. \fBv\fR). Single-letter extensions can appear consecutively,
! but multi-letter extensions must be separated by underscores.
  .ie n .IP """An underscore can appear anywhere after the base ISA. It has no specific""" 4
  .el .IP "\f(CWAn underscore can appear anywhere after the base ISA. It has no specific\fR" 4
  .IX Item "An underscore can appear anywhere after the base ISA. It has no specific"
--- 30049,30129 ----
  conventions are: \fBilp32\fR, \fBilp32f\fR, \fBilp32d\fR, \fBlp64\fR,
  \&\fBlp64f\fR, and \fBlp64d\fR.  Some calling conventions are impossible to
  implement on some ISAs: for example, \fB\-march=rv32if \-mabi=ilp32d\fR is
! invalid because the ABI requires 64\-bit values be passed in F registers, but F
! registers are only 32 bits wide.  There are also the \fBilp32e\fR ABI that can
! only be used with the \fBrv32e\fR architecture and the \fBlp64e\fR ABI that
  can only be used with the \fBrv64e\fR.  Those ABIs are not well specified at
  present, and are subject to change.
! .IP \fB\-mfdiv\fR 4
  .IX Item "-mfdiv"
  .PD 0
! .IP \fB\-mno\-fdiv\fR 4
  .IX Item "-mno-fdiv"
  .PD
! Do or don\*(Aqt use hardware floating\-point divide and square root instructions.
! This requires the F or D extensions for floating\-point registers.  The default
  is to use them if the specified architecture has these instructions.
! .IP \fB\-mfence\-tso\fR 4
  .IX Item "-mfence-tso"
  .PD 0
! .IP \fB\-mno\-fence\-tso\fR 4
  .IX Item "-mno-fence-tso"
  .PD
! Do or don\*(Aqt use the \fBfence.tso\fR instruction, which is unimplemented on
  some processors (including those from T\-Head).  If the \fBfence.tso\fR
  instruction is not available then a stronger fence is used instead.
! .IP \fB\-mdiv\fR 4
  .IX Item "-mdiv"
  .PD 0
! .IP \fB\-mno\-div\fR 4
  .IX Item "-mno-div"
  .PD
! Do or don\*(Aqt use hardware instructions for integer division.  This requires the
  M extension.  The default is to use them if the specified architecture has
  these instructions.
! .IP \fB\-misa\-spec=\fR\fIISA\-spec\-string\fR 4
  .IX Item "-misa-spec=ISA-spec-string"
! Specify the version of the RISC\-V Unprivileged (formerly User\-Level)
! ISA specification to produce code conforming to.  The possibilities
! for \fIISA\-spec\-string\fR are:
  .RS 4
! .ie n .IP 2.2 4
! .el .IP \f(CW2.2\fR 4
  .IX Item "2.2"
  Produce code conforming to version 2.2.
! .ie n .IP 20190608 4
! .el .IP \f(CW20190608\fR 4
  .IX Item "20190608"
  Produce code conforming to version 20190608.
! .ie n .IP 20191213 4
! .el .IP \f(CW20191213\fR 4
  .IX Item "20191213"
  Produce code conforming to version 20191213.
  .RE
  .RS 4
  .Sp
! The default is \fB\-misa\-spec=20191213\fR unless GCC has been configured
  with \fB\-\-with\-isa\-spec=\fR specifying a different default version.
  .RE
! .IP \fB\-march=\fR\fIISA\-string\fR 4
  .IX Item "-march=ISA-string"
! Generate code for given RISC\-V ISA (e.g. \fBrv64im\fR).  ISA strings must be
! lower\-case.  Examples include \fBrv64i\fR, \fBrv32g\fR, \fBrv32e\fR, and
  \&\fBrv32imaf\fR. Additionally, a special value \fBhelp\fR
  (\fB\-march=help\fR) is accepted to list all supported extensions.
  .Sp
! The syntax of the ISA string is defined as follows:
  .RS 4
! .ie n .IP """The string must start with \fBrv32\fR or \fBrv64\fR, followed by""" 4
! .el .IP "\f(CWThe string must start with \fR\f(CBrv32\fR\f(CW or \fR\f(CBrv64\fR\f(CW, followed by\fR" 4
  .IX Item "The string must start with rv32 or rv64, followed by"
! \&\fBi\fR, \fBe\fR, or \fBg\fR, referred to as the base ISA.
  .ie n .IP """The subsequent part of the string is a list of extension names. Extension""" 4
  .el .IP "\f(CWThe subsequent part of the string is a list of extension names. Extension\fR" 4
  .IX Item "The subsequent part of the string is a list of extension names. Extension"
! names can be categorized as multi\-letter (e.g. \fBzba\fR) and single\-letter
! (e.g. \fBv\fR). Single\-letter extensions can appear consecutively,
! but multi\-letter extensions must be separated by underscores.
  .ie n .IP """An underscore can appear anywhere after the base ISA. It has no specific""" 4
  .el .IP "\f(CWAn underscore can appear anywhere after the base ISA. It has no specific\fR" 4
  .IX Item "An underscore can appear anywhere after the base ISA. It has no specific"
*************** Supported extension are listed below:
*** 30205,30692 ****
  .IP "\fIExtension Name\fR : \fISupported Version\fR : \fIDescription\fR" 4
  .IX Item "Extension Name : Supported Version : Description"
  .PD 0
! .IP "i" 4
  .IX Item "i"
  .PD
  \&\f(CW@tab\fR 2.0, 2.1
  \&\f(CW@tab\fR Base integer extension.
! .IP "e" 4
  .IX Item "e"
  \&\f(CW@tab\fR 2.0
  \&\f(CW@tab\fR Reduced base integer extension.
! .IP "g" 4
  .IX Item "g"
  \&\f(CW@tab\fR \-
! \&\f(CW@tab\fR General-purpose computing base extension, \fBg\fR will expand to
  \&\fBi\fR, \fBm\fR, \fBa\fR, \fBf\fR, \fBd\fR, \fBzicsr\fR and
  \&\fBzifencei\fR.
! .IP "m" 4
  .IX Item "m"
  \&\f(CW@tab\fR 2.0
  \&\f(CW@tab\fR Integer multiplication and division extension.
! .IP "a" 4
  .IX Item "a"
  \&\f(CW@tab\fR 2.0, 2.1
  \&\f(CW@tab\fR Atomic extension.
! .IP "f" 4
  .IX Item "f"
  \&\f(CW@tab\fR 2.0, 2.2
! \&\f(CW@tab\fR Single-precision floating-point extension.
! .IP "d" 4
  .IX Item "d"
  \&\f(CW@tab\fR 2.0, 2.2
! \&\f(CW@tab\fR Double-precision floating-point extension.
! .IP "c" 4
  .IX Item "c"
  \&\f(CW@tab\fR 2.0
  \&\f(CW@tab\fR Compressed extension.
! .IP "h" 4
  .IX Item "h"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Hypervisor extension.
! .IP "v" 4
  .IX Item "v"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector extension.
! .IP "zicsr" 4
  .IX Item "zicsr"
  \&\f(CW@tab\fR 2.0
  \&\f(CW@tab\fR Control and status register access extension.
! .IP "zifencei" 4
  .IX Item "zifencei"
  \&\f(CW@tab\fR 2.0
! \&\f(CW@tab\fR Instruction-fetch fence extension.
! .IP "zicond" 4
  .IX Item "zicond"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Integer conditional operations extension.
! .IP "za64rs" 4
  .IX Item "za64rs"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Reservation set size of 64 bytes.
! .IP "za128rs" 4
  .IX Item "za128rs"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Reservation set size of 128 bytes.
! .IP "zawrs" 4
  .IX Item "zawrs"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Wait-on-reservation-set extension.
! .IP "zba" 4
  .IX Item "zba"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Address calculation extension.
! .IP "zbb" 4
  .IX Item "zbb"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Basic bit manipulation extension.
! .IP "zbc" 4
  .IX Item "zbc"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Carry-less multiplication extension.
! .IP "zbs" 4
  .IX Item "zbs"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Single-bit operation extension.
! .IP "zfinx" 4
  .IX Item "zfinx"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Single-precision floating-point in integer registers extension.
! .IP "zdinx" 4
  .IX Item "zdinx"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Double-precision floating-point in integer registers extension.
! .IP "zhinx" 4
  .IX Item "zhinx"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Half-precision floating-point in integer registers extension.
! .IP "zhinxmin" 4
  .IX Item "zhinxmin"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Minimal half-precision floating-point in integer registers extension.
! .IP "zbkb" 4
  .IX Item "zbkb"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Cryptography bit-manipulation extension.
! .IP "zbkc" 4
  .IX Item "zbkc"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Cryptography carry-less multiply extension.
! .IP "zbkx" 4
  .IX Item "zbkx"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Cryptography crossbar permutation extension.
! .IP "zkne" 4
  .IX Item "zkne"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR \s-1AES\s0 Encryption extension.
! .IP "zknd" 4
  .IX Item "zknd"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR \s-1AES\s0 Decryption extension.
! .IP "zknh" 4
  .IX Item "zknh"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Hash function extension.
! .IP "zkr" 4
  .IX Item "zkr"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Entropy source extension.
! .IP "zksed" 4
  .IX Item "zksed"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR \s-1SM4\s0 block cipher extension.
! .IP "zksh" 4
  .IX Item "zksh"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR \s-1SM3\s0 hash function extension.
! .IP "zkt" 4
  .IX Item "zkt"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Data independent execution latency extension.
! .IP "zk" 4
  .IX Item "zk"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Standard scalar cryptography extension.
! .IP "zkn" 4
  .IX Item "zkn"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR \s-1NIST\s0 algorithm suite extension.
! .IP "zks" 4
  .IX Item "zks"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR ShangMi algorithm suite extension.
! .IP "zihintntl" 4
  .IX Item "zihintntl"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Non-temporal locality hints extension.
! .IP "zihintpause" 4
  .IX Item "zihintpause"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Pause hint extension.
! .IP "zicboz" 4
  .IX Item "zicboz"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Cache-block zero extension.
! .IP "zicbom" 4
  .IX Item "zicbom"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Cache-block management extension.
! .IP "zicbop" 4
  .IX Item "zicbop"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Cache-block prefetch extension.
! .IP "zic64b" 4
  .IX Item "zic64b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Cache block size isf 64 bytes.
! .IP "ziccamoa" 4
  .IX Item "ziccamoa"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Main memory supports all atomics in A.
! .IP "ziccif" 4
  .IX Item "ziccif"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Main memory supports instruction fetch with atomicity requirement.
! .IP "zicclsm" 4
  .IX Item "zicclsm"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Main memory supports misaligned loads/stores.
! .IP "ziccrse" 4
  .IX Item "ziccrse"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Main memory supports forward progress on \s-1LR/SC\s0 sequences.
! .IP "zicntr" 4
  .IX Item "zicntr"
  \&\f(CW@tab\fR 2.0
  \&\f(CW@tab\fR Standard extension for base counters and timers.
! .IP "zihpm" 4
  .IX Item "zihpm"
  \&\f(CW@tab\fR 2.0
  \&\f(CW@tab\fR Standard extension for hardware performance counters.
! .IP "ztso" 4
  .IX Item "ztso"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Total store ordering extension.
! .IP "zve32x" 4
  .IX Item "zve32x"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector extensions for embedded processors.
! .IP "zve32f" 4
  .IX Item "zve32f"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector extensions for embedded processors.
! .IP "zve64x" 4
  .IX Item "zve64x"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector extensions for embedded processors.
! .IP "zve64f" 4
  .IX Item "zve64f"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector extensions for embedded processors.
! .IP "zve64d" 4
  .IX Item "zve64d"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector extensions for embedded processors.
! .IP "zvl32b" 4
  .IX Item "zvl32b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP "zvl64b" 4
  .IX Item "zvl64b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP "zvl128b" 4
  .IX Item "zvl128b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP "zvl256b" 4
  .IX Item "zvl256b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP "zvl512b" 4
  .IX Item "zvl512b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP "zvl1024b" 4
  .IX Item "zvl1024b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP "zvl2048b" 4
  .IX Item "zvl2048b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP "zvl4096b" 4
  .IX Item "zvl4096b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP "zvbb" 4
  .IX Item "zvbb"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector basic bit-manipulation extension.
! .IP "zvbc" 4
  .IX Item "zvbc"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector carryless multiplication extension.
! .IP "zvkb" 4
  .IX Item "zvkb"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector cryptography bit-manipulation extension.
! .IP "zvkg" 4
  .IX Item "zvkg"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector \s-1GCM/GMAC\s0 extension.
! .IP "zvkned" 4
  .IX Item "zvkned"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector \s-1AES\s0 block cipher extension.
! .IP "zvknha" 4
  .IX Item "zvknha"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector \s-1SHA\-2\s0 secure hash extension.
! .IP "zvknhb" 4
  .IX Item "zvknhb"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector \s-1SHA\-2\s0 secure hash extension.
! .IP "zvksed" 4
  .IX Item "zvksed"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector \s-1SM4\s0 Block Cipher extension.
! .IP "zvksh" 4
  .IX Item "zvksh"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector \s-1SM3\s0 Secure Hash extension.
! .IP "zvkn" 4
  .IX Item "zvkn"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector \s-1NIST\s0 Algorithm Suite extension, \fBzvkn\fR will expand to
  \&\fBzvkned\fR, \fBzvknhb\fR, \fBzvkb\fR and \fBzvkt\fR.
! .IP "zvknc" 4
  .IX Item "zvknc"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector \s-1NIST\s0 Algorithm Suite with carryless multiply extension, \fBzvknc\fR
  will expand to \fBzvkn\fR and \fBzvbc\fR.
! .IP "zvkng" 4
  .IX Item "zvkng"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector \s-1NIST\s0 Algorithm Suite with \s-1GCM\s0 extension, \fBzvkng\fR will expand
  to \fBzvkn\fR and \fBzvkg\fR.
! .IP "zvks" 4
  .IX Item "zvks"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector ShangMi algorithm suite extension, \fBzvks\fR will expand
  to \fBzvksed\fR, \fBzvksh\fR, \fBzvkb\fR and \fBzvkt\fR.
! .IP "zvksc" 4
  .IX Item "zvksc"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector ShangMi algorithm suite with carryless multiplication extension,
  \&\fBzvksc\fR will expand to \fBzvks\fR and \fBzvbc\fR.
! .IP "zvksg" 4
  .IX Item "zvksg"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector ShangMi algorithm suite with \s-1GCM\s0 extension, \fBzvksg\fR will expand
  to \fBzvks\fR and \fBzvkg\fR.
! .IP "zvkt" 4
  .IX Item "zvkt"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector data independent execution latency extension.
! .IP "zfh" 4
  .IX Item "zfh"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Half-precision floating-point extension.
! .IP "zfhmin" 4
  .IX Item "zfhmin"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Minimal half-precision floating-point extension.
! .IP "zvfh" 4
  .IX Item "zvfh"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector half-precision floating-point extension.
! .IP "zvfhmin" 4
  .IX Item "zvfhmin"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector minimal half-precision floating-point extension.
! .IP "zvfbfmin" 4
  .IX Item "zvfbfmin"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector \s-1BF16\s0 converts extension.
! .IP "zfa" 4
  .IX Item "zfa"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Additional floating-point extension.
! .IP "zmmul" 4
  .IX Item "zmmul"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Integer multiplication extension.
! .IP "zca" 4
  .IX Item "zca"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Integer compressed instruction extension.
! .IP "zcf" 4
  .IX Item "zcf"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Compressed single-precision floating point loads and stores extension.
! .IP "zcd" 4
  .IX Item "zcd"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Compressed double-precision floating point loads and stores extension.
! .IP "zcb" 4
  .IX Item "zcb"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Simple compressed instruction extension.
! .IP "zce" 4
  .IX Item "zce"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Compressed instruction extensions for embedded processors.
! .IP "zcmp" 4
  .IX Item "zcmp"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Compressed push pop extension.
! .IP "zcmt" 4
  .IX Item "zcmt"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Table jump instruction extension.
! .IP "smaia" 4
  .IX Item "smaia"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Advanced interrupt architecture extension.
! .IP "smepmp" 4
  .IX Item "smepmp"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR \s-1PMP\s0 Enhancements for memory access and execution prevention on Machine mode.
! .IP "smstateen" 4
  .IX Item "smstateen"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR State enable extension.
! .IP "ssaia" 4
  .IX Item "ssaia"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Advanced interrupt architecture extension for supervisor-mode.
! .IP "sscofpmf" 4
  .IX Item "sscofpmf"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Count overflow & filtering extension.
! .IP "ssstateen" 4
  .IX Item "ssstateen"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR State-enable extension for supervisor-mode.
! .IP "sstc" 4
  .IX Item "sstc"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Supervisor-mode timer interrupts extension.
! .IP "svinval" 4
  .IX Item "svinval"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Fine-grained address-translation cache invalidation extension.
! .IP "svnapot" 4
  .IX Item "svnapot"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR \s-1NAPOT\s0 translation contiguity extension.
! .IP "svpbmt" 4
  .IX Item "svpbmt"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Page-based memory types extension.
! .IP "xcvmac" 4
  .IX Item "xcvmac"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Core-V multiply-accumulate extension.
! .IP "xcvalu" 4
  .IX Item "xcvalu"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Core-V miscellaneous \s-1ALU\s0 extension.
! .IP "xcvelw" 4
  .IX Item "xcvelw"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Core-V event load word extension.
! .IP "xtheadba" 4
  .IX Item "xtheadba"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR T\-head address calculation extension.
! .IP "xtheadbb" 4
  .IX Item "xtheadbb"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head basic bit-manipulation extension.
! .IP "xtheadbs" 4
  .IX Item "xtheadbs"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head single-bit instructions extension.
! .IP "xtheadcmo" 4
  .IX Item "xtheadcmo"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR T\-head cache management operations extension.
! .IP "xtheadcondmov" 4
  .IX Item "xtheadcondmov"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR T\-head conditional move extension.
! .IP "xtheadfmemidx" 4
  .IX Item "xtheadfmemidx"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head indexed memory operations for floating-point registers extension.
! .IP "xtheadfmv" 4
  .IX Item "xtheadfmv"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head double floating-point high-bit data transmission extension.
! .IP "xtheadint" 4
  .IX Item "xtheadint"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR T\-head acceleration interruption extension.
! .IP "xtheadmac" 4
  .IX Item "xtheadmac"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head multiply-accumulate extension.
! .IP "xtheadmemidx" 4
  .IX Item "xtheadmemidx"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR T\-head indexed memory operation extension.
! .IP "xtheadmempair" 4
  .IX Item "xtheadmempair"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head two-GPR memory operation extension.
! .IP "xtheadsync" 4
  .IX Item "xtheadsync"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head multi-core synchronization extension.
! .IP "xventanacondops" 4
  .IX Item "xventanacondops"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Ventana integer conditional operations extension.
--- 30140,30627 ----
  .IP "\fIExtension Name\fR : \fISupported Version\fR : \fIDescription\fR" 4
  .IX Item "Extension Name : Supported Version : Description"
  .PD 0
! .IP i 4
  .IX Item "i"
  .PD
  \&\f(CW@tab\fR 2.0, 2.1
  \&\f(CW@tab\fR Base integer extension.
! .IP e 4
  .IX Item "e"
  \&\f(CW@tab\fR 2.0
  \&\f(CW@tab\fR Reduced base integer extension.
! .IP g 4
  .IX Item "g"
  \&\f(CW@tab\fR \-
! \&\f(CW@tab\fR General\-purpose computing base extension, \fBg\fR will expand to
  \&\fBi\fR, \fBm\fR, \fBa\fR, \fBf\fR, \fBd\fR, \fBzicsr\fR and
  \&\fBzifencei\fR.
! .IP m 4
  .IX Item "m"
  \&\f(CW@tab\fR 2.0
  \&\f(CW@tab\fR Integer multiplication and division extension.
! .IP a 4
  .IX Item "a"
  \&\f(CW@tab\fR 2.0, 2.1
  \&\f(CW@tab\fR Atomic extension.
! .IP f 4
  .IX Item "f"
  \&\f(CW@tab\fR 2.0, 2.2
! \&\f(CW@tab\fR Single\-precision floating\-point extension.
! .IP d 4
  .IX Item "d"
  \&\f(CW@tab\fR 2.0, 2.2
! \&\f(CW@tab\fR Double\-precision floating\-point extension.
! .IP c 4
  .IX Item "c"
  \&\f(CW@tab\fR 2.0
  \&\f(CW@tab\fR Compressed extension.
! .IP h 4
  .IX Item "h"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Hypervisor extension.
! .IP v 4
  .IX Item "v"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector extension.
! .IP zicsr 4
  .IX Item "zicsr"
  \&\f(CW@tab\fR 2.0
  \&\f(CW@tab\fR Control and status register access extension.
! .IP zifencei 4
  .IX Item "zifencei"
  \&\f(CW@tab\fR 2.0
! \&\f(CW@tab\fR Instruction\-fetch fence extension.
! .IP zicond 4
  .IX Item "zicond"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Integer conditional operations extension.
! .IP za64rs 4
  .IX Item "za64rs"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Reservation set size of 64 bytes.
! .IP za128rs 4
  .IX Item "za128rs"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Reservation set size of 128 bytes.
! .IP zawrs 4
  .IX Item "zawrs"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Wait\-on\-reservation\-set extension.
! .IP zba 4
  .IX Item "zba"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Address calculation extension.
! .IP zbb 4
  .IX Item "zbb"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Basic bit manipulation extension.
! .IP zbc 4
  .IX Item "zbc"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Carry\-less multiplication extension.
! .IP zbs 4
  .IX Item "zbs"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Single\-bit operation extension.
! .IP zfinx 4
  .IX Item "zfinx"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Single\-precision floating\-point in integer registers extension.
! .IP zdinx 4
  .IX Item "zdinx"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Double\-precision floating\-point in integer registers extension.
! .IP zhinx 4
  .IX Item "zhinx"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Half\-precision floating\-point in integer registers extension.
! .IP zhinxmin 4
  .IX Item "zhinxmin"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Minimal half\-precision floating\-point in integer registers extension.
! .IP zbkb 4
  .IX Item "zbkb"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Cryptography bit\-manipulation extension.
! .IP zbkc 4
  .IX Item "zbkc"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Cryptography carry\-less multiply extension.
! .IP zbkx 4
  .IX Item "zbkx"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Cryptography crossbar permutation extension.
! .IP zkne 4
  .IX Item "zkne"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR AES Encryption extension.
! .IP zknd 4
  .IX Item "zknd"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR AES Decryption extension.
! .IP zknh 4
  .IX Item "zknh"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Hash function extension.
! .IP zkr 4
  .IX Item "zkr"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Entropy source extension.
! .IP zksed 4
  .IX Item "zksed"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR SM4 block cipher extension.
! .IP zksh 4
  .IX Item "zksh"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR SM3 hash function extension.
! .IP zkt 4
  .IX Item "zkt"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Data independent execution latency extension.
! .IP zk 4
  .IX Item "zk"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Standard scalar cryptography extension.
! .IP zkn 4
  .IX Item "zkn"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR NIST algorithm suite extension.
! .IP zks 4
  .IX Item "zks"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR ShangMi algorithm suite extension.
! .IP zihintntl 4
  .IX Item "zihintntl"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Non\-temporal locality hints extension.
! .IP zihintpause 4
  .IX Item "zihintpause"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Pause hint extension.
! .IP zicboz 4
  .IX Item "zicboz"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Cache\-block zero extension.
! .IP zicbom 4
  .IX Item "zicbom"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Cache\-block management extension.
! .IP zicbop 4
  .IX Item "zicbop"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Cache\-block prefetch extension.
! .IP zic64b 4
  .IX Item "zic64b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Cache block size isf 64 bytes.
! .IP ziccamoa 4
  .IX Item "ziccamoa"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Main memory supports all atomics in A.
! .IP ziccif 4
  .IX Item "ziccif"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Main memory supports instruction fetch with atomicity requirement.
! .IP zicclsm 4
  .IX Item "zicclsm"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Main memory supports misaligned loads/stores.
! .IP ziccrse 4
  .IX Item "ziccrse"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Main memory supports forward progress on LR/SC sequences.
! .IP zicntr 4
  .IX Item "zicntr"
  \&\f(CW@tab\fR 2.0
  \&\f(CW@tab\fR Standard extension for base counters and timers.
! .IP zihpm 4
  .IX Item "zihpm"
  \&\f(CW@tab\fR 2.0
  \&\f(CW@tab\fR Standard extension for hardware performance counters.
! .IP ztso 4
  .IX Item "ztso"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Total store ordering extension.
! .IP zve32x 4
  .IX Item "zve32x"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector extensions for embedded processors.
! .IP zve32f 4
  .IX Item "zve32f"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector extensions for embedded processors.
! .IP zve64x 4
  .IX Item "zve64x"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector extensions for embedded processors.
! .IP zve64f 4
  .IX Item "zve64f"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector extensions for embedded processors.
! .IP zve64d 4
  .IX Item "zve64d"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector extensions for embedded processors.
! .IP zvl32b 4
  .IX Item "zvl32b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP zvl64b 4
  .IX Item "zvl64b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP zvl128b 4
  .IX Item "zvl128b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP zvl256b 4
  .IX Item "zvl256b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP zvl512b 4
  .IX Item "zvl512b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP zvl1024b 4
  .IX Item "zvl1024b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP zvl2048b 4
  .IX Item "zvl2048b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP zvl4096b 4
  .IX Item "zvl4096b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP zvbb 4
  .IX Item "zvbb"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector basic bit\-manipulation extension.
! .IP zvbc 4
  .IX Item "zvbc"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector carryless multiplication extension.
! .IP zvkb 4
  .IX Item "zvkb"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector cryptography bit\-manipulation extension.
! .IP zvkg 4
  .IX Item "zvkg"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector GCM/GMAC extension.
! .IP zvkned 4
  .IX Item "zvkned"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector AES block cipher extension.
! .IP zvknha 4
  .IX Item "zvknha"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector SHA\-2 secure hash extension.
! .IP zvknhb 4
  .IX Item "zvknhb"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector SHA\-2 secure hash extension.
! .IP zvksed 4
  .IX Item "zvksed"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector SM4 Block Cipher extension.
! .IP zvksh 4
  .IX Item "zvksh"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector SM3 Secure Hash extension.
! .IP zvkn 4
  .IX Item "zvkn"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector NIST Algorithm Suite extension, \fBzvkn\fR will expand to
  \&\fBzvkned\fR, \fBzvknhb\fR, \fBzvkb\fR and \fBzvkt\fR.
! .IP zvknc 4
  .IX Item "zvknc"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector NIST Algorithm Suite with carryless multiply extension, \fBzvknc\fR
  will expand to \fBzvkn\fR and \fBzvbc\fR.
! .IP zvkng 4
  .IX Item "zvkng"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector NIST Algorithm Suite with GCM extension, \fBzvkng\fR will expand
  to \fBzvkn\fR and \fBzvkg\fR.
! .IP zvks 4
  .IX Item "zvks"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector ShangMi algorithm suite extension, \fBzvks\fR will expand
  to \fBzvksed\fR, \fBzvksh\fR, \fBzvkb\fR and \fBzvkt\fR.
! .IP zvksc 4
  .IX Item "zvksc"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector ShangMi algorithm suite with carryless multiplication extension,
  \&\fBzvksc\fR will expand to \fBzvks\fR and \fBzvbc\fR.
! .IP zvksg 4
  .IX Item "zvksg"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector ShangMi algorithm suite with GCM extension, \fBzvksg\fR will expand
  to \fBzvks\fR and \fBzvkg\fR.
! .IP zvkt 4
  .IX Item "zvkt"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector data independent execution latency extension.
! .IP zfh 4
  .IX Item "zfh"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Half\-precision floating\-point extension.
! .IP zfhmin 4
  .IX Item "zfhmin"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Minimal half\-precision floating\-point extension.
! .IP zvfh 4
  .IX Item "zvfh"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector half\-precision floating\-point extension.
! .IP zvfhmin 4
  .IX Item "zvfhmin"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector minimal half\-precision floating\-point extension.
! .IP zvfbfmin 4
  .IX Item "zvfbfmin"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector BF16 converts extension.
! .IP zfa 4
  .IX Item "zfa"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Additional floating\-point extension.
! .IP zmmul 4
  .IX Item "zmmul"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Integer multiplication extension.
! .IP zca 4
  .IX Item "zca"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Integer compressed instruction extension.
! .IP zcf 4
  .IX Item "zcf"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Compressed single\-precision floating point loads and stores extension.
! .IP zcd 4
  .IX Item "zcd"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Compressed double\-precision floating point loads and stores extension.
! .IP zcb 4
  .IX Item "zcb"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Simple compressed instruction extension.
! .IP zce 4
  .IX Item "zce"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Compressed instruction extensions for embedded processors.
! .IP zcmp 4
  .IX Item "zcmp"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Compressed push pop extension.
! .IP zcmt 4
  .IX Item "zcmt"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Table jump instruction extension.
! .IP smaia 4
  .IX Item "smaia"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Advanced interrupt architecture extension.
! .IP smepmp 4
  .IX Item "smepmp"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR PMP Enhancements for memory access and execution prevention on Machine mode.
! .IP smstateen 4
  .IX Item "smstateen"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR State enable extension.
! .IP ssaia 4
  .IX Item "ssaia"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Advanced interrupt architecture extension for supervisor\-mode.
! .IP sscofpmf 4
  .IX Item "sscofpmf"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Count overflow & filtering extension.
! .IP ssstateen 4
  .IX Item "ssstateen"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR State\-enable extension for supervisor\-mode.
! .IP sstc 4
  .IX Item "sstc"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Supervisor\-mode timer interrupts extension.
! .IP svinval 4
  .IX Item "svinval"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Fine\-grained address\-translation cache invalidation extension.
! .IP svnapot 4
  .IX Item "svnapot"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR NAPOT translation contiguity extension.
! .IP svpbmt 4
  .IX Item "svpbmt"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Page\-based memory types extension.
! .IP xcvmac 4
  .IX Item "xcvmac"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Core\-V multiply\-accumulate extension.
! .IP xcvalu 4
  .IX Item "xcvalu"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Core\-V miscellaneous ALU extension.
! .IP xcvelw 4
  .IX Item "xcvelw"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Core\-V event load word extension.
! .IP xtheadba 4
  .IX Item "xtheadba"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR T\-head address calculation extension.
! .IP xtheadbb 4
  .IX Item "xtheadbb"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head basic bit\-manipulation extension.
! .IP xtheadbs 4
  .IX Item "xtheadbs"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head single\-bit instructions extension.
! .IP xtheadcmo 4
  .IX Item "xtheadcmo"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR T\-head cache management operations extension.
! .IP xtheadcondmov 4
  .IX Item "xtheadcondmov"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR T\-head conditional move extension.
! .IP xtheadfmemidx 4
  .IX Item "xtheadfmemidx"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head indexed memory operations for floating\-point registers extension.
! .IP xtheadfmv 4
  .IX Item "xtheadfmv"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head double floating\-point high\-bit data transmission extension.
! .IP xtheadint 4
  .IX Item "xtheadint"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR T\-head acceleration interruption extension.
! .IP xtheadmac 4
  .IX Item "xtheadmac"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head multiply\-accumulate extension.
! .IP xtheadmemidx 4
  .IX Item "xtheadmemidx"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR T\-head indexed memory operation extension.
! .IP xtheadmempair 4
  .IX Item "xtheadmempair"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head two\-GPR memory operation extension.
! .IP xtheadsync 4
  .IX Item "xtheadsync"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head multi\-core synchronization extension.
! .IP xventanacondops 4
  .IX Item "xventanacondops"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Ventana integer conditional operations extension.
*************** If both \fB\-march\fR and \fB\-mcpu=\fR
*** 30699,30725 ****
  this argument is system dependent, users who want a specific architecture
  extensions should specify one explicitly.
  .Sp
! When the RISC-V specifications define an extension as depending on other
! extensions, \s-1GCC\s0 will implicitly add the dependent extensions to the enabled
! extension set if they weren't added explicitly.
  .RE
! .IP "\fB\-mcpu=\fR\fIprocessor-string\fR" 4
  .IX Item "-mcpu=processor-string"
  Use architecture of and optimize the output for the given processor, specified
! by particular \s-1CPU\s0 name.
  Permissible values for this option are: \fBsifive\-e20\fR, \fBsifive\-e21\fR,
  \&\fBsifive\-e24\fR, \fBsifive\-e31\fR, \fBsifive\-e34\fR, \fBsifive\-e76\fR,
  \&\fBsifive\-s21\fR, \fBsifive\-s51\fR, \fBsifive\-s54\fR, \fBsifive\-s76\fR,
  \&\fBsifive\-u54\fR, \fBsifive\-u74\fR, \fBsifive\-x280\fR, \fBsifive\-xp450\fR,
  \&\fBsifive\-x670\fR, \fBthead\-c906\fR, \fBtt\-ascalon\-d8\fR,
! \&\fBxiangshan-nanhu\fR.
  .Sp
  Note that \fB\-mcpu\fR does not override \fB\-march\fR or \fB\-mtune\fR.
! .IP "\fB\-mtune=\fR\fIprocessor-string\fR" 4
  .IX Item "-mtune=processor-string"
  Optimize the output for the given processor, specified by microarchitecture or
! particular \s-1CPU\s0 name.  Permissible values for this option are:
! \&\fBgeneric-ooo\fR, \fBrocket\fR, \fBsifive\-3\-series\fR,
  \&\fBsifive\-5\-series\fR, \fBsifive\-7\-series\fR, \fBsize\fR,
  \&\fBsifive\-p400\-series\fR, \fBsifive\-p600\-series\fR, and all valid options for
  \&\fB\-mcpu=\fR.
--- 30634,30660 ----
  this argument is system dependent, users who want a specific architecture
  extensions should specify one explicitly.
  .Sp
! When the RISC\-V specifications define an extension as depending on other
! extensions, GCC will implicitly add the dependent extensions to the enabled
! extension set if they weren\*(Aqt added explicitly.
  .RE
! .IP \fB\-mcpu=\fR\fIprocessor\-string\fR 4
  .IX Item "-mcpu=processor-string"
  Use architecture of and optimize the output for the given processor, specified
! by particular CPU name.
  Permissible values for this option are: \fBsifive\-e20\fR, \fBsifive\-e21\fR,
  \&\fBsifive\-e24\fR, \fBsifive\-e31\fR, \fBsifive\-e34\fR, \fBsifive\-e76\fR,
  \&\fBsifive\-s21\fR, \fBsifive\-s51\fR, \fBsifive\-s54\fR, \fBsifive\-s76\fR,
  \&\fBsifive\-u54\fR, \fBsifive\-u74\fR, \fBsifive\-x280\fR, \fBsifive\-xp450\fR,
  \&\fBsifive\-x670\fR, \fBthead\-c906\fR, \fBtt\-ascalon\-d8\fR,
! \&\fBxiangshan\-nanhu\fR.
  .Sp
  Note that \fB\-mcpu\fR does not override \fB\-march\fR or \fB\-mtune\fR.
! .IP \fB\-mtune=\fR\fIprocessor\-string\fR 4
  .IX Item "-mtune=processor-string"
  Optimize the output for the given processor, specified by microarchitecture or
! particular CPU name.  Permissible values for this option are:
! \&\fBgeneric\-ooo\fR, \fBrocket\fR, \fBsifive\-3\-series\fR,
  \&\fBsifive\-5\-series\fR, \fBsifive\-7\-series\fR, \fBsize\fR,
  \&\fBsifive\-p400\-series\fR, \fBsifive\-p600\-series\fR, and all valid options for
  \&\fB\-mcpu=\fR.
*************** particular \s-1CPU\s0 name.  Permissible
*** 30727,30737 ****
  When \fB\-mtune=\fR is not specified, use the setting from \fB\-mcpu\fR,
  the default is \fBrocket\fR if both are not specified.
  .Sp
! The \fBsize\fR choice is not intended for use by end-users.  This is used
  when \fB\-Os\fR is specified.  It overrides the instruction cost info
  provided by \fB\-mtune=\fR, but does not override the pipeline info.  This
  helps reduce code size while still giving good performance.
! .IP "\fB\-mpreferred\-stack\-boundary=\fR\fInum\fR" 4
  .IX Item "-mpreferred-stack-boundary=num"
  Attempt to keep the stack boundary aligned to a 2 raised to \fInum\fR
  byte boundary.  If \fB\-mpreferred\-stack\-boundary\fR is not specified,
--- 30662,30672 ----
  When \fB\-mtune=\fR is not specified, use the setting from \fB\-mcpu\fR,
  the default is \fBrocket\fR if both are not specified.
  .Sp
! The \fBsize\fR choice is not intended for use by end\-users.  This is used
  when \fB\-Os\fR is specified.  It overrides the instruction cost info
  provided by \fB\-mtune=\fR, but does not override the pipeline info.  This
  helps reduce code size while still giving good performance.
! .IP \fB\-mpreferred\-stack\-boundary=\fR\fInum\fR 4
  .IX Item "-mpreferred-stack-boundary=num"
  Attempt to keep the stack boundary aligned to a 2 raised to \fInum\fR
  byte boundary.  If \fB\-mpreferred\-stack\-boundary\fR is not specified,
*************** the default is 4 (16 bytes or 128\-bits)
*** 30740,30791 ****
  \&\fBWarning:\fR If you use this switch, then you must build all modules with
  the same value, including any libraries.  This includes the system libraries
  and startup modules.
! .IP "\fB\-msmall\-data\-limit=\fR\fIn\fR" 4
  .IX Item "-msmall-data-limit=n"
  Put global and static data smaller than \fIn\fR bytes into a special section
  (on some targets).
! .IP "\fB\-msave\-restore\fR" 4
  .IX Item "-msave-restore"
  .PD 0
! .IP "\fB\-mno\-save\-restore\fR" 4
  .IX Item "-mno-save-restore"
  .PD
! Do or don't use smaller but slower prologue and epilogue code that uses
  library function calls.  The default is to use fast inline prologues and
  epilogues.
! .IP "\fB\-mmovcc\fR" 4
  .IX Item "-mmovcc"
  .PD 0
! .IP "\fB\-mno\-movcc\fR" 4
  .IX Item "-mno-movcc"
  .PD
! Do or don't produce branchless conditional-move code sequences even with
  targets that do not have specific instructions for conditional operations.
! If enabled, sequences of \s-1ALU\s0 operations are produced using base integer
! \&\s-1ISA\s0 instructions where profitable.
! .IP "\fB\-minline\-atomics\fR" 4
  .IX Item "-minline-atomics"
  .PD 0
! .IP "\fB\-mno\-inline\-atomics\fR" 4
  .IX Item "-mno-inline-atomics"
  .PD
! Do or don't use smaller but slower subword atomic emulation code that uses
  libatomic function calls.  The default is to use fast inline subword atomics
  that do not require libatomic.
! .IP "\fB\-minline\-strlen\fR" 4
  .IX Item "-minline-strlen"
  .PD 0
! .IP "\fB\-mno\-inline\-strlen\fR" 4
  .IX Item "-mno-inline-strlen"
  .PD
  Do or do not attempt to inline strlen calls if possible.
  Inlining will only be done if the string is properly aligned
  and instructions for accelerated processing are available.
  The default is to not inline strlen calls.
! .IP "\fB\-minline\-strcmp\fR" 4
  .IX Item "-minline-strcmp"
  .PD 0
! .IP "\fB\-mno\-inline\-strcmp\fR" 4
  .IX Item "-mno-inline-strcmp"
  .PD
  Do or do not attempt to inline strcmp calls if possible.
--- 30675,30726 ----
  \&\fBWarning:\fR If you use this switch, then you must build all modules with
  the same value, including any libraries.  This includes the system libraries
  and startup modules.
! .IP \fB\-msmall\-data\-limit=\fR\fIn\fR 4
  .IX Item "-msmall-data-limit=n"
  Put global and static data smaller than \fIn\fR bytes into a special section
  (on some targets).
! .IP \fB\-msave\-restore\fR 4
  .IX Item "-msave-restore"
  .PD 0
! .IP \fB\-mno\-save\-restore\fR 4
  .IX Item "-mno-save-restore"
  .PD
! Do or don\*(Aqt use smaller but slower prologue and epilogue code that uses
  library function calls.  The default is to use fast inline prologues and
  epilogues.
! .IP \fB\-mmovcc\fR 4
  .IX Item "-mmovcc"
  .PD 0
! .IP \fB\-mno\-movcc\fR 4
  .IX Item "-mno-movcc"
  .PD
! Do or don\*(Aqt produce branchless conditional\-move code sequences even with
  targets that do not have specific instructions for conditional operations.
! If enabled, sequences of ALU operations are produced using base integer
! ISA instructions where profitable.
! .IP \fB\-minline\-atomics\fR 4
  .IX Item "-minline-atomics"
  .PD 0
! .IP \fB\-mno\-inline\-atomics\fR 4
  .IX Item "-mno-inline-atomics"
  .PD
! Do or don\*(Aqt use smaller but slower subword atomic emulation code that uses
  libatomic function calls.  The default is to use fast inline subword atomics
  that do not require libatomic.
! .IP \fB\-minline\-strlen\fR 4
  .IX Item "-minline-strlen"
  .PD 0
! .IP \fB\-mno\-inline\-strlen\fR 4
  .IX Item "-mno-inline-strlen"
  .PD
  Do or do not attempt to inline strlen calls if possible.
  Inlining will only be done if the string is properly aligned
  and instructions for accelerated processing are available.
  The default is to not inline strlen calls.
! .IP \fB\-minline\-strcmp\fR 4
  .IX Item "-minline-strcmp"
  .PD 0
! .IP \fB\-mno\-inline\-strcmp\fR 4
  .IX Item "-mno-inline-strcmp"
  .PD
  Do or do not attempt to inline strcmp calls if possible.
*************** The default is to not inline strcmp call
*** 30796,30805 ****
  The \fB\-\-param riscv\-strcmp\-inline\-limit=\fR\fIn\fR parameter controls
  the maximum number of bytes compared by the inlined code.
  The default value is 64.
! .IP "\fB\-minline\-strncmp\fR" 4
  .IX Item "-minline-strncmp"
  .PD 0
! .IP "\fB\-mno\-inline\-strncmp\fR" 4
  .IX Item "-mno-inline-strncmp"
  .PD
  Do or do not attempt to inline strncmp calls if possible.
--- 30731,30740 ----
  The \fB\-\-param riscv\-strcmp\-inline\-limit=\fR\fIn\fR parameter controls
  the maximum number of bytes compared by the inlined code.
  The default value is 64.
! .IP \fB\-minline\-strncmp\fR 4
  .IX Item "-minline-strncmp"
  .PD 0
! .IP \fB\-mno\-inline\-strncmp\fR 4
  .IX Item "-mno-inline-strncmp"
  .PD
  Do or do not attempt to inline strncmp calls if possible.
*************** The default is to not inline strncmp cal
*** 30810,30933 ****
  The \fB\-\-param riscv\-strcmp\-inline\-limit=\fR\fIn\fR parameter controls
  the maximum number of bytes compared by the inlined code.
  The default value is 64.
! .IP "\fB\-mshorten\-memrefs\fR" 4
  .IX Item "-mshorten-memrefs"
  .PD 0
! .IP "\fB\-mno\-shorten\-memrefs\fR" 4
  .IX Item "-mno-shorten-memrefs"
  .PD
  Do or do not attempt to make more use of compressed load/store instructions by
! replacing a load/store of 'base register + large offset' with a new load/store
! of 'new base + small offset'.  If the new base gets stored in a compressed
  register, then the new load/store can be compressed.  Currently targets 32\-bit
  integer load/stores only.
! .IP "\fB\-mstrict\-align\fR" 4
  .IX Item "-mstrict-align"
  .PD 0
! .IP "\fB\-mno\-strict\-align\fR" 4
  .IX Item "-mno-strict-align"
  .PD
  Do not or do generate unaligned memory accesses.  The default is set depending
  on whether the processor we are optimizing for supports fast unaligned access
  or not.
! .IP "\fB\-mscalar\-strict\-align\fR" 4
  .IX Item "-mscalar-strict-align"
  .PD 0
! .IP "\fB\-mno\-scalar\-strict\-align\fR" 4
  .IX Item "-mno-scalar-strict-align"
  .PD
  Do not or do generate unaligned memory accesses.  The default is set depending
  on whether the processor we are optimizing for supports fast unaligned access
  or not.  This is an alias for \fB\-mstrict\-align\fR.
! .IP "\fB\-mvector\-strict\-align\fR" 4
  .IX Item "-mvector-strict-align"
  .PD 0
! .IP "\fB\-mno\-vector\-strict\-align\fR" 4
  .IX Item "-mno-vector-strict-align"
  .PD
  Do not or do generate unaligned vector memory accesses.  The default is set
  to off unless the processor we are optimizing for explicitly supports
! element-misaligned vector memory access.
! .IP "\fB\-mcmodel=medlow\fR" 4
  .IX Item "-mcmodel=medlow"
! Generate code for the medium-low code model. The program and its statically
  defined symbols must lie within a single 2 GiB address range and must lie
  between absolute addresses \-2 GiB and +2 GiB. Programs can be statically
! or dynamically linked. This is the default code model unless \s-1GCC\s0 has been
  configured with \fB\-\-with\-cmodel=\fR specifying a different default code
  model.
! .IP "\fB\-mcmodel=medany\fR" 4
  .IX Item "-mcmodel=medany"
! Generate code for the medium-any code model. The program and its statically
  defined symbols must be within any single 2 GiB address range. Programs can be
  statically or dynamically linked.
  .Sp
! The code generated by the medium-any code model is position-independent, but is
! not guaranteed to function correctly when linked into position-independent
  executables or libraries.
! .IP "\fB\-mcmodel=large\fR" 4
  .IX Item "-mcmodel=large"
  Generate code for a large code model, which has no restrictions on size or
  placement of symbols.
! .IP "\fB\-mexplicit\-relocs\fR" 4
  .IX Item "-mexplicit-relocs"
  .PD 0
! .IP "\fB\-mno\-exlicit\-relocs\fR" 4
  .IX Item "-mno-exlicit-relocs"
  .PD
  Use or do not use assembler relocation operators when dealing with symbolic
  addresses.  The alternative is to use assembler macros instead, which may
  limit optimization.
! .IP "\fB\-mrelax\fR" 4
  .IX Item "-mrelax"
  .PD 0
! .IP "\fB\-mno\-relax\fR" 4
  .IX Item "-mno-relax"
  .PD
  Take advantage of linker relaxations to reduce the number of instructions
  required to materialize symbol addresses. The default is to take advantage of
  linker relaxations.
! .IP "\fB\-mriscv\-attribute\fR" 4
  .IX Item "-mriscv-attribute"
  .PD 0
! .IP "\fB\-mno\-riscv\-attribute\fR" 4
  .IX Item "-mno-riscv-attribute"
  .PD
! Emit (do not emit) RISC-V attribute to record extra information into \s-1ELF\s0
  objects.  This feature requires at least binutils 2.32.
! .IP "\fB\-mcsr\-check\fR" 4
  .IX Item "-mcsr-check"
  .PD 0
! .IP "\fB\-mno\-csr\-check\fR" 4
  .IX Item "-mno-csr-check"
  .PD
! Enables or disables the \s-1CSR\s0 checking.
! .IP "\fB\-malign\-data=\fR\fItype\fR" 4
  .IX Item "-malign-data=type"
! Control how \s-1GCC\s0 aligns variables and constants of array, structure, or union
  types.  Supported values for \fItype\fR are \fBxlen\fR which uses x register
  width as the alignment value, and \fBnatural\fR which uses natural alignment.
  \&\fBxlen\fR is the default.
! .IP "\fB\-mbig\-endian\fR" 4
  .IX Item "-mbig-endian"
! Generate big-endian code.  This is the default when \s-1GCC\s0 is configured for a
  \&\fBriscv64be\-*\-*\fR or \fBriscv32be\-*\-*\fR target.
! .IP "\fB\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
! Generate little-endian code.  This is the default when \s-1GCC\s0 is configured for a
  \&\fBriscv64\-*\-*\fR or \fBriscv32\-*\-*\fR but not a \fBriscv64be\-*\-*\fR or
  \&\fBriscv32be\-*\-*\fR target.
! .IP "\fB\-mstack\-protector\-guard=\fR\fIguard\fR" 4
  .IX Item "-mstack-protector-guard=guard"
  .PD 0
! .IP "\fB\-mstack\-protector\-guard\-reg=\fR\fIreg\fR" 4
  .IX Item "-mstack-protector-guard-reg=reg"
! .IP "\fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR" 4
  .IX Item "-mstack-protector-guard-offset=offset"
  .PD
  Generate stack protection code using canary at \fIguard\fR.  Supported
! locations are \fBglobal\fR for a global canary or \fBtls\fR for per-thread
! canary in the \s-1TLS\s0 block.
  .Sp
  With the latter choice the options
  \&\fB\-mstack\-protector\-guard\-reg=\fR\fIreg\fR and
--- 30745,30868 ----
  The \fB\-\-param riscv\-strcmp\-inline\-limit=\fR\fIn\fR parameter controls
  the maximum number of bytes compared by the inlined code.
  The default value is 64.
! .IP \fB\-mshorten\-memrefs\fR 4
  .IX Item "-mshorten-memrefs"
  .PD 0
! .IP \fB\-mno\-shorten\-memrefs\fR 4
  .IX Item "-mno-shorten-memrefs"
  .PD
  Do or do not attempt to make more use of compressed load/store instructions by
! replacing a load/store of \*(Aqbase register + large offset\*(Aq with a new load/store
! of \*(Aqnew base + small offset\*(Aq.  If the new base gets stored in a compressed
  register, then the new load/store can be compressed.  Currently targets 32\-bit
  integer load/stores only.
! .IP \fB\-mstrict\-align\fR 4
  .IX Item "-mstrict-align"
  .PD 0
! .IP \fB\-mno\-strict\-align\fR 4
  .IX Item "-mno-strict-align"
  .PD
  Do not or do generate unaligned memory accesses.  The default is set depending
  on whether the processor we are optimizing for supports fast unaligned access
  or not.
! .IP \fB\-mscalar\-strict\-align\fR 4
  .IX Item "-mscalar-strict-align"
  .PD 0
! .IP \fB\-mno\-scalar\-strict\-align\fR 4
  .IX Item "-mno-scalar-strict-align"
  .PD
  Do not or do generate unaligned memory accesses.  The default is set depending
  on whether the processor we are optimizing for supports fast unaligned access
  or not.  This is an alias for \fB\-mstrict\-align\fR.
! .IP \fB\-mvector\-strict\-align\fR 4
  .IX Item "-mvector-strict-align"
  .PD 0
! .IP \fB\-mno\-vector\-strict\-align\fR 4
  .IX Item "-mno-vector-strict-align"
  .PD
  Do not or do generate unaligned vector memory accesses.  The default is set
  to off unless the processor we are optimizing for explicitly supports
! element\-misaligned vector memory access.
! .IP \fB\-mcmodel=medlow\fR 4
  .IX Item "-mcmodel=medlow"
! Generate code for the medium\-low code model. The program and its statically
  defined symbols must lie within a single 2 GiB address range and must lie
  between absolute addresses \-2 GiB and +2 GiB. Programs can be statically
! or dynamically linked. This is the default code model unless GCC has been
  configured with \fB\-\-with\-cmodel=\fR specifying a different default code
  model.
! .IP \fB\-mcmodel=medany\fR 4
  .IX Item "-mcmodel=medany"
! Generate code for the medium\-any code model. The program and its statically
  defined symbols must be within any single 2 GiB address range. Programs can be
  statically or dynamically linked.
  .Sp
! The code generated by the medium\-any code model is position\-independent, but is
! not guaranteed to function correctly when linked into position\-independent
  executables or libraries.
! .IP \fB\-mcmodel=large\fR 4
  .IX Item "-mcmodel=large"
  Generate code for a large code model, which has no restrictions on size or
  placement of symbols.
! .IP \fB\-mexplicit\-relocs\fR 4
  .IX Item "-mexplicit-relocs"
  .PD 0
! .IP \fB\-mno\-exlicit\-relocs\fR 4
  .IX Item "-mno-exlicit-relocs"
  .PD
  Use or do not use assembler relocation operators when dealing with symbolic
  addresses.  The alternative is to use assembler macros instead, which may
  limit optimization.
! .IP \fB\-mrelax\fR 4
  .IX Item "-mrelax"
  .PD 0
! .IP \fB\-mno\-relax\fR 4
  .IX Item "-mno-relax"
  .PD
  Take advantage of linker relaxations to reduce the number of instructions
  required to materialize symbol addresses. The default is to take advantage of
  linker relaxations.
! .IP \fB\-mriscv\-attribute\fR 4
  .IX Item "-mriscv-attribute"
  .PD 0
! .IP \fB\-mno\-riscv\-attribute\fR 4
  .IX Item "-mno-riscv-attribute"
  .PD
! Emit (do not emit) RISC\-V attribute to record extra information into ELF
  objects.  This feature requires at least binutils 2.32.
! .IP \fB\-mcsr\-check\fR 4
  .IX Item "-mcsr-check"
  .PD 0
! .IP \fB\-mno\-csr\-check\fR 4
  .IX Item "-mno-csr-check"
  .PD
! Enables or disables the CSR checking.
! .IP \fB\-malign\-data=\fR\fItype\fR 4
  .IX Item "-malign-data=type"
! Control how GCC aligns variables and constants of array, structure, or union
  types.  Supported values for \fItype\fR are \fBxlen\fR which uses x register
  width as the alignment value, and \fBnatural\fR which uses natural alignment.
  \&\fBxlen\fR is the default.
! .IP \fB\-mbig\-endian\fR 4
  .IX Item "-mbig-endian"
! Generate big\-endian code.  This is the default when GCC is configured for a
  \&\fBriscv64be\-*\-*\fR or \fBriscv32be\-*\-*\fR target.
! .IP \fB\-mlittle\-endian\fR 4
  .IX Item "-mlittle-endian"
! Generate little\-endian code.  This is the default when GCC is configured for a
  \&\fBriscv64\-*\-*\fR or \fBriscv32\-*\-*\fR but not a \fBriscv64be\-*\-*\fR or
  \&\fBriscv32be\-*\-*\fR target.
! .IP \fB\-mstack\-protector\-guard=\fR\fIguard\fR 4
  .IX Item "-mstack-protector-guard=guard"
  .PD 0
! .IP \fB\-mstack\-protector\-guard\-reg=\fR\fIreg\fR 4
  .IX Item "-mstack-protector-guard-reg=reg"
! .IP \fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR 4
  .IX Item "-mstack-protector-guard-offset=offset"
  .PD
  Generate stack protection code using canary at \fIguard\fR.  Supported
! locations are \fBglobal\fR for a global canary or \fBtls\fR for per\-thread
! canary in the TLS block.
  .Sp
  With the latter choice the options
  \&\fB\-mstack\-protector\-guard\-reg=\fR\fIreg\fR and
*************** which register to use as base register f
*** 30936,30992 ****
  and from what offset from that base register. There is no default
  register or offset as this is entirely for use within the Linux
  kernel.
! .IP "\fB\-mtls\-dialect=desc\fR" 4
  .IX Item "-mtls-dialect=desc"
! Use \s-1TLS\s0 descriptors as the thread-local storage mechanism for dynamic accesses
! of \s-1TLS\s0 variables.
! .IP "\fB\-mtls\-dialect=trad\fR" 4
  .IX Item "-mtls-dialect=trad"
! Use traditional \s-1TLS\s0 as the thread-local storage mechanism for dynamic accesses
! of \s-1TLS\s0 variables.  This is the default.
  .PP
! \fI\s-1RL78\s0 Options\fR
  .IX Subsection "RL78 Options"
! .IP "\fB\-msim\fR" 4
  .IX Item "-msim"
  Links in additional target libraries to support operation within a
  simulator.
! .IP "\fB\-mmul=none\fR" 4
  .IX Item "-mmul=none"
  .PD 0
! .IP "\fB\-mmul=g10\fR" 4
  .IX Item "-mmul=g10"
! .IP "\fB\-mmul=g13\fR" 4
  .IX Item "-mmul=g13"
! .IP "\fB\-mmul=g14\fR" 4
  .IX Item "-mmul=g14"
! .IP "\fB\-mmul=rl78\fR" 4
  .IX Item "-mmul=rl78"
  .PD
  Specifies the type of hardware multiplication and division support to
  be used.  The simplest is \f(CW\*(C`none\*(C'\fR, which uses software for both
  multiplication and division.  This is the default.  The \f(CW\*(C`g13\*(C'\fR
  value is for the hardware multiply/divide peripheral found on the
! \&\s-1RL78/G13\s0 (S2 core) targets.  The \f(CW\*(C`g14\*(C'\fR value selects the use of
! the multiplication and division instructions supported by the \s-1RL78/G14\s0
  (S3 core) parts.  The value \f(CW\*(C`rl78\*(C'\fR is an alias for \f(CW\*(C`g14\*(C'\fR and
  the value \f(CW\*(C`mg10\*(C'\fR is an alias for \f(CW\*(C`none\*(C'\fR.
  .Sp
  In addition a C preprocessor macro is defined, based upon the setting
  of this option.  Possible values are: \f(CW\*(C`_\|_RL78_MUL_NONE_\|_\*(C'\fR,
  \&\f(CW\*(C`_\|_RL78_MUL_G13_\|_\*(C'\fR or \f(CW\*(C`_\|_RL78_MUL_G14_\|_\*(C'\fR.
! .IP "\fB\-mcpu=g10\fR" 4
  .IX Item "-mcpu=g10"
  .PD 0
! .IP "\fB\-mcpu=g13\fR" 4
  .IX Item "-mcpu=g13"
! .IP "\fB\-mcpu=g14\fR" 4
  .IX Item "-mcpu=g14"
! .IP "\fB\-mcpu=rl78\fR" 4
  .IX Item "-mcpu=rl78"
  .PD
! Specifies the \s-1RL78\s0 core to target.  The default is the G14 core, also
! known as an S3 core or just \s-1RL78.\s0  The G13 or S2 core does not have
  multiply or divide instructions, instead it uses a hardware peripheral
  for these operations.  The G10 or S1 core does not have register
  banks, so it uses a different calling convention.
--- 30871,30927 ----
  and from what offset from that base register. There is no default
  register or offset as this is entirely for use within the Linux
  kernel.
! .IP \fB\-mtls\-dialect=desc\fR 4
  .IX Item "-mtls-dialect=desc"
! Use TLS descriptors as the thread\-local storage mechanism for dynamic accesses
! of TLS variables.
! .IP \fB\-mtls\-dialect=trad\fR 4
  .IX Item "-mtls-dialect=trad"
! Use traditional TLS as the thread\-local storage mechanism for dynamic accesses
! of TLS variables.  This is the default.
  .PP
! \fIRL78 Options\fR
  .IX Subsection "RL78 Options"
! .IP \fB\-msim\fR 4
  .IX Item "-msim"
  Links in additional target libraries to support operation within a
  simulator.
! .IP \fB\-mmul=none\fR 4
  .IX Item "-mmul=none"
  .PD 0
! .IP \fB\-mmul=g10\fR 4
  .IX Item "-mmul=g10"
! .IP \fB\-mmul=g13\fR 4
  .IX Item "-mmul=g13"
! .IP \fB\-mmul=g14\fR 4
  .IX Item "-mmul=g14"
! .IP \fB\-mmul=rl78\fR 4
  .IX Item "-mmul=rl78"
  .PD
  Specifies the type of hardware multiplication and division support to
  be used.  The simplest is \f(CW\*(C`none\*(C'\fR, which uses software for both
  multiplication and division.  This is the default.  The \f(CW\*(C`g13\*(C'\fR
  value is for the hardware multiply/divide peripheral found on the
! RL78/G13 (S2 core) targets.  The \f(CW\*(C`g14\*(C'\fR value selects the use of
! the multiplication and division instructions supported by the RL78/G14
  (S3 core) parts.  The value \f(CW\*(C`rl78\*(C'\fR is an alias for \f(CW\*(C`g14\*(C'\fR and
  the value \f(CW\*(C`mg10\*(C'\fR is an alias for \f(CW\*(C`none\*(C'\fR.
  .Sp
  In addition a C preprocessor macro is defined, based upon the setting
  of this option.  Possible values are: \f(CW\*(C`_\|_RL78_MUL_NONE_\|_\*(C'\fR,
  \&\f(CW\*(C`_\|_RL78_MUL_G13_\|_\*(C'\fR or \f(CW\*(C`_\|_RL78_MUL_G14_\|_\*(C'\fR.
! .IP \fB\-mcpu=g10\fR 4
  .IX Item "-mcpu=g10"
  .PD 0
! .IP \fB\-mcpu=g13\fR 4
  .IX Item "-mcpu=g13"
! .IP \fB\-mcpu=g14\fR 4
  .IX Item "-mcpu=g14"
! .IP \fB\-mcpu=rl78\fR 4
  .IX Item "-mcpu=rl78"
  .PD
! Specifies the RL78 core to target.  The default is the G14 core, also
! known as an S3 core or just RL78.  The G13 or S2 core does not have
  multiply or divide instructions, instead it uses a hardware peripheral
  for these operations.  The G10 or S1 core does not have register
  banks, so it uses a different calling convention.
*************** support to use, unless this is overridde
*** 30998,31139 ****
  peripheral and specifying \fB\-mcpu=g10\fR disables the use of
  hardware multiplications altogether.
  .Sp
! Note, although the \s-1RL78/G14\s0 core is the default target, specifying
  \&\fB\-mcpu=g14\fR or \fB\-mcpu=rl78\fR on the command line does
  change the behavior of the toolchain since it also enables G14
  hardware multiply support.  If these options are not specified on the
  command line then software multiplication routines will be used even
! though the code targets the \s-1RL78\s0 core.  This is for backwards
  compatibility with older toolchains which did not have hardware
  multiply and divide support.
  .Sp
  In addition a C preprocessor macro is defined, based upon the setting
  of this option.  Possible values are: \f(CW\*(C`_\|_RL78_G10_\|_\*(C'\fR,
  \&\f(CW\*(C`_\|_RL78_G13_\|_\*(C'\fR or \f(CW\*(C`_\|_RL78_G14_\|_\*(C'\fR.
! .IP "\fB\-mg10\fR" 4
  .IX Item "-mg10"
  .PD 0
! .IP "\fB\-mg13\fR" 4
  .IX Item "-mg13"
! .IP "\fB\-mg14\fR" 4
  .IX Item "-mg14"
! .IP "\fB\-mrl78\fR" 4
  .IX Item "-mrl78"
  .PD
  These are aliases for the corresponding \fB\-mcpu=\fR option.  They
  are provided for backwards compatibility.
! .IP "\fB\-mallregs\fR" 4
  .IX Item "-mallregs"
  Allow the compiler to use all of the available registers.  By default
  registers \f(CW\*(C`r24..r31\*(C'\fR are reserved for use in interrupt handlers.
  With this option enabled these registers can be used in ordinary
  functions as well.
! .IP "\fB\-m64bit\-doubles\fR" 4
  .IX Item "-m64bit-doubles"
  .PD 0
! .IP "\fB\-m32bit\-doubles\fR" 4
  .IX Item "-m32bit-doubles"
  .PD
  Make the \f(CW\*(C`double\*(C'\fR data type be 64 bits (\fB\-m64bit\-doubles\fR)
  or 32 bits (\fB\-m32bit\-doubles\fR) in size.  The default is
  \&\fB\-m32bit\-doubles\fR.
! .IP "\fB\-msave\-mduc\-in\-interrupts\fR" 4
  .IX Item "-msave-mduc-in-interrupts"
  .PD 0
! .IP "\fB\-mno\-save\-mduc\-in\-interrupts\fR" 4
  .IX Item "-mno-save-mduc-in-interrupts"
  .PD
  Specifies that interrupt handler functions should preserve the
! \&\s-1MDUC\s0 registers.  This is only necessary if normal code might use
! the \s-1MDUC\s0 registers, for example because it performs multiplication
! and division operations.  The default is to ignore the \s-1MDUC\s0 registers
  as this makes the interrupt handlers faster.  The target option \-mg13
  needs to be passed for this to work as this feature is only available
! on the G13 target (S2 core).  The \s-1MDUC\s0 registers will only be saved
  if the interrupt handler performs a multiplication or division
  operation or it calls another function.
  .PP
! \fI\s-1IBM RS/6000\s0 and PowerPC Options\fR
  .IX Subsection "IBM RS/6000 and PowerPC Options"
  .PP
! These \fB\-m\fR options are defined for the \s-1IBM RS/6000\s0 and PowerPC:
! .IP "\fB\-mpowerpc\-gpopt\fR" 4
  .IX Item "-mpowerpc-gpopt"
  .PD 0
! .IP "\fB\-mno\-powerpc\-gpopt\fR" 4
  .IX Item "-mno-powerpc-gpopt"
! .IP "\fB\-mpowerpc\-gfxopt\fR" 4
  .IX Item "-mpowerpc-gfxopt"
! .IP "\fB\-mno\-powerpc\-gfxopt\fR" 4
  .IX Item "-mno-powerpc-gfxopt"
! .IP "\fB\-mpowerpc64\fR" 4
  .IX Item "-mpowerpc64"
! .IP "\fB\-mno\-powerpc64\fR" 4
  .IX Item "-mno-powerpc64"
! .IP "\fB\-mmfcrf\fR" 4
  .IX Item "-mmfcrf"
! .IP "\fB\-mno\-mfcrf\fR" 4
  .IX Item "-mno-mfcrf"
! .IP "\fB\-mpopcntb\fR" 4
  .IX Item "-mpopcntb"
! .IP "\fB\-mno\-popcntb\fR" 4
  .IX Item "-mno-popcntb"
! .IP "\fB\-mpopcntd\fR" 4
  .IX Item "-mpopcntd"
! .IP "\fB\-mno\-popcntd\fR" 4
  .IX Item "-mno-popcntd"
! .IP "\fB\-mfprnd\fR" 4
  .IX Item "-mfprnd"
! .IP "\fB\-mno\-fprnd\fR" 4
  .IX Item "-mno-fprnd"
! .IP "\fB\-mcmpb\fR" 4
  .IX Item "-mcmpb"
! .IP "\fB\-mno\-cmpb\fR" 4
  .IX Item "-mno-cmpb"
! .IP "\fB\-mhard\-dfp\fR" 4
  .IX Item "-mhard-dfp"
! .IP "\fB\-mno\-hard\-dfp\fR" 4
  .IX Item "-mno-hard-dfp"
  .PD
  You use these options to specify which instructions are available on the
  processor you are using.  The default value of these options is
! determined when configuring \s-1GCC.\s0  Specifying the
  \&\fB\-mcpu=\fR\fIcpu_type\fR overrides the specification of these
  options.  We recommend you use the \fB\-mcpu=\fR\fIcpu_type\fR option
  rather than the options listed above.
  .Sp
  Specifying \fB\-mpowerpc\-gpopt\fR allows
! \&\s-1GCC\s0 to use the optional PowerPC architecture instructions in the
! General Purpose group, including floating-point square root.  Specifying
! \&\fB\-mpowerpc\-gfxopt\fR allows \s-1GCC\s0 to
  use the optional PowerPC architecture instructions in the Graphics
! group, including floating-point select.
  .Sp
! The \fB\-mmfcrf\fR option allows \s-1GCC\s0 to generate the move from
! condition register field instruction implemented on the \s-1POWER4\s0
  processor and other processors that support the PowerPC V2.01
  architecture.
! The \fB\-mpopcntb\fR option allows \s-1GCC\s0 to generate the popcount and
! double-precision \s-1FP\s0 reciprocal estimate instruction implemented on the
! \&\s-1POWER5\s0 processor and other processors that support the PowerPC V2.02
  architecture.
! The \fB\-mpopcntd\fR option allows \s-1GCC\s0 to generate the popcount
! instruction implemented on the \s-1POWER7\s0 processor and other processors
  that support the PowerPC V2.06 architecture.
! The \fB\-mfprnd\fR option allows \s-1GCC\s0 to generate the \s-1FP\s0 round to
! integer instructions implemented on the \s-1POWER5+\s0 processor and other
  processors that support the PowerPC V2.03 architecture.
! The \fB\-mcmpb\fR option allows \s-1GCC\s0 to generate the compare bytes
! instruction implemented on the \s-1POWER6\s0 processor and other processors
  that support the PowerPC V2.05 architecture.
! The \fB\-mhard\-dfp\fR option allows \s-1GCC\s0 to generate the decimal
! floating-point instructions implemented on some \s-1POWER\s0 processors.
  .Sp
! The \fB\-mpowerpc64\fR option allows \s-1GCC\s0 to generate the additional
  64\-bit instructions that are found in the full PowerPC64 architecture
! and to treat GPRs as 64\-bit, doubleword quantities.  \s-1GCC\s0 defaults to
  \&\fB\-mno\-powerpc64\fR.
! .IP "\fB\-mcpu=\fR\fIcpu_type\fR" 4
  .IX Item "-mcpu=cpu_type"
  Set architecture type, register usage, and
  instruction scheduling parameters for machine type \fIcpu_type\fR.
--- 30933,31074 ----
  peripheral and specifying \fB\-mcpu=g10\fR disables the use of
  hardware multiplications altogether.
  .Sp
! Note, although the RL78/G14 core is the default target, specifying
  \&\fB\-mcpu=g14\fR or \fB\-mcpu=rl78\fR on the command line does
  change the behavior of the toolchain since it also enables G14
  hardware multiply support.  If these options are not specified on the
  command line then software multiplication routines will be used even
! though the code targets the RL78 core.  This is for backwards
  compatibility with older toolchains which did not have hardware
  multiply and divide support.
  .Sp
  In addition a C preprocessor macro is defined, based upon the setting
  of this option.  Possible values are: \f(CW\*(C`_\|_RL78_G10_\|_\*(C'\fR,
  \&\f(CW\*(C`_\|_RL78_G13_\|_\*(C'\fR or \f(CW\*(C`_\|_RL78_G14_\|_\*(C'\fR.
! .IP \fB\-mg10\fR 4
  .IX Item "-mg10"
  .PD 0
! .IP \fB\-mg13\fR 4
  .IX Item "-mg13"
! .IP \fB\-mg14\fR 4
  .IX Item "-mg14"
! .IP \fB\-mrl78\fR 4
  .IX Item "-mrl78"
  .PD
  These are aliases for the corresponding \fB\-mcpu=\fR option.  They
  are provided for backwards compatibility.
! .IP \fB\-mallregs\fR 4
  .IX Item "-mallregs"
  Allow the compiler to use all of the available registers.  By default
  registers \f(CW\*(C`r24..r31\*(C'\fR are reserved for use in interrupt handlers.
  With this option enabled these registers can be used in ordinary
  functions as well.
! .IP \fB\-m64bit\-doubles\fR 4
  .IX Item "-m64bit-doubles"
  .PD 0
! .IP \fB\-m32bit\-doubles\fR 4
  .IX Item "-m32bit-doubles"
  .PD
  Make the \f(CW\*(C`double\*(C'\fR data type be 64 bits (\fB\-m64bit\-doubles\fR)
  or 32 bits (\fB\-m32bit\-doubles\fR) in size.  The default is
  \&\fB\-m32bit\-doubles\fR.
! .IP \fB\-msave\-mduc\-in\-interrupts\fR 4
  .IX Item "-msave-mduc-in-interrupts"
  .PD 0
! .IP \fB\-mno\-save\-mduc\-in\-interrupts\fR 4
  .IX Item "-mno-save-mduc-in-interrupts"
  .PD
  Specifies that interrupt handler functions should preserve the
! MDUC registers.  This is only necessary if normal code might use
! the MDUC registers, for example because it performs multiplication
! and division operations.  The default is to ignore the MDUC registers
  as this makes the interrupt handlers faster.  The target option \-mg13
  needs to be passed for this to work as this feature is only available
! on the G13 target (S2 core).  The MDUC registers will only be saved
  if the interrupt handler performs a multiplication or division
  operation or it calls another function.
  .PP
! \fIIBM RS/6000 and PowerPC Options\fR
  .IX Subsection "IBM RS/6000 and PowerPC Options"
  .PP
! These \fB\-m\fR options are defined for the IBM RS/6000 and PowerPC:
! .IP \fB\-mpowerpc\-gpopt\fR 4
  .IX Item "-mpowerpc-gpopt"
  .PD 0
! .IP \fB\-mno\-powerpc\-gpopt\fR 4
  .IX Item "-mno-powerpc-gpopt"
! .IP \fB\-mpowerpc\-gfxopt\fR 4
  .IX Item "-mpowerpc-gfxopt"
! .IP \fB\-mno\-powerpc\-gfxopt\fR 4
  .IX Item "-mno-powerpc-gfxopt"
! .IP \fB\-mpowerpc64\fR 4
  .IX Item "-mpowerpc64"
! .IP \fB\-mno\-powerpc64\fR 4
  .IX Item "-mno-powerpc64"
! .IP \fB\-mmfcrf\fR 4
  .IX Item "-mmfcrf"
! .IP \fB\-mno\-mfcrf\fR 4
  .IX Item "-mno-mfcrf"
! .IP \fB\-mpopcntb\fR 4
  .IX Item "-mpopcntb"
! .IP \fB\-mno\-popcntb\fR 4
  .IX Item "-mno-popcntb"
! .IP \fB\-mpopcntd\fR 4
  .IX Item "-mpopcntd"
! .IP \fB\-mno\-popcntd\fR 4
  .IX Item "-mno-popcntd"
! .IP \fB\-mfprnd\fR 4
  .IX Item "-mfprnd"
! .IP \fB\-mno\-fprnd\fR 4
  .IX Item "-mno-fprnd"
! .IP \fB\-mcmpb\fR 4
  .IX Item "-mcmpb"
! .IP \fB\-mno\-cmpb\fR 4
  .IX Item "-mno-cmpb"
! .IP \fB\-mhard\-dfp\fR 4
  .IX Item "-mhard-dfp"
! .IP \fB\-mno\-hard\-dfp\fR 4
  .IX Item "-mno-hard-dfp"
  .PD
  You use these options to specify which instructions are available on the
  processor you are using.  The default value of these options is
! determined when configuring GCC.  Specifying the
  \&\fB\-mcpu=\fR\fIcpu_type\fR overrides the specification of these
  options.  We recommend you use the \fB\-mcpu=\fR\fIcpu_type\fR option
  rather than the options listed above.
  .Sp
  Specifying \fB\-mpowerpc\-gpopt\fR allows
! GCC to use the optional PowerPC architecture instructions in the
! General Purpose group, including floating\-point square root.  Specifying
! \&\fB\-mpowerpc\-gfxopt\fR allows GCC to
  use the optional PowerPC architecture instructions in the Graphics
! group, including floating\-point select.
  .Sp
! The \fB\-mmfcrf\fR option allows GCC to generate the move from
! condition register field instruction implemented on the POWER4
  processor and other processors that support the PowerPC V2.01
  architecture.
! The \fB\-mpopcntb\fR option allows GCC to generate the popcount and
! double\-precision FP reciprocal estimate instruction implemented on the
! POWER5 processor and other processors that support the PowerPC V2.02
  architecture.
! The \fB\-mpopcntd\fR option allows GCC to generate the popcount
! instruction implemented on the POWER7 processor and other processors
  that support the PowerPC V2.06 architecture.
! The \fB\-mfprnd\fR option allows GCC to generate the FP round to
! integer instructions implemented on the POWER5+ processor and other
  processors that support the PowerPC V2.03 architecture.
! The \fB\-mcmpb\fR option allows GCC to generate the compare bytes
! instruction implemented on the POWER6 processor and other processors
  that support the PowerPC V2.05 architecture.
! The \fB\-mhard\-dfp\fR option allows GCC to generate the decimal
! floating\-point instructions implemented on some POWER processors.
  .Sp
! The \fB\-mpowerpc64\fR option allows GCC to generate the additional
  64\-bit instructions that are found in the full PowerPC64 architecture
! and to treat GPRs as 64\-bit, doubleword quantities.  GCC defaults to
  \&\fB\-mno\-powerpc64\fR.
! .IP \fB\-mcpu=\fR\fIcpu_type\fR 4
  .IX Item "-mcpu=cpu_type"
  Set architecture type, register usage, and
  instruction scheduling parameters for machine type \fIcpu_type\fR.
*************** model assumed for scheduling purposes.
*** 31159,31165 ****
  Specifying \fBnative\fR as cpu type detects and selects the
  architecture option that corresponds to the host processor of the
  system performing the compilation.
! \&\fB\-mcpu=native\fR has no effect if \s-1GCC\s0 does not recognize the
  processor.
  .Sp
  The other options specify a specific processor.  Code generated under
--- 31094,31100 ----
  Specifying \fBnative\fR as cpu type detects and selects the
  architecture option that corresponds to the host processor of the
  system performing the compilation.
! \&\fB\-mcpu=native\fR has no effect if GCC does not recognize the
  processor.
  .Sp
  The other options specify a specific processor.  Code generated under
*************** following options:
*** 31178,31196 ****
  \&\-mfloat128\-hardware \-mprefixed \-mpcrel \-mmma
  \&\-mrop\-protect\fR
  .Sp
! The particular options set for any particular \s-1CPU\s0 varies between
  compiler versions, depending on what setting seems to produce optimal
! code for that \s-1CPU\s0; it doesn't necessarily reflect the actual hardware's
  capabilities.  If you wish to set an individual option to a particular
  value, you may specify it after the \fB\-mcpu\fR option, like
  \&\fB\-mcpu=970 \-mno\-altivec\fR.
  .Sp
! On \s-1AIX,\s0 the \fB\-maltivec\fR and \fB\-mpowerpc64\fR options are
  not enabled or disabled by the \fB\-mcpu\fR option at present because
! \&\s-1AIX\s0 does not have full support for these options.  You may still
! enable or disable them individually if you're sure it'll work in your
  environment.
! .IP "\fB\-mtune=\fR\fIcpu_type\fR" 4
  .IX Item "-mtune=cpu_type"
  Set the instruction scheduling parameters for machine type
  \&\fIcpu_type\fR, but do not set the architecture type or register usage,
--- 31113,31131 ----
  \&\-mfloat128\-hardware \-mprefixed \-mpcrel \-mmma
  \&\-mrop\-protect\fR
  .Sp
! The particular options set for any particular CPU varies between
  compiler versions, depending on what setting seems to produce optimal
! code for that CPU; it doesn\*(Aqt necessarily reflect the actual hardware\*(Aqs
  capabilities.  If you wish to set an individual option to a particular
  value, you may specify it after the \fB\-mcpu\fR option, like
  \&\fB\-mcpu=970 \-mno\-altivec\fR.
  .Sp
! On AIX, the \fB\-maltivec\fR and \fB\-mpowerpc64\fR options are
  not enabled or disabled by the \fB\-mcpu\fR option at present because
! AIX does not have full support for these options.  You may still
! enable or disable them individually if you\*(Aqre sure it\*(Aqll work in your
  environment.
! .IP \fB\-mtune=\fR\fIcpu_type\fR 4
  .IX Item "-mtune=cpu_type"
  Set the instruction scheduling parameters for machine type
  \&\fIcpu_type\fR, but do not set the architecture type or register usage,
*************** values for \fIcpu_type\fR are used for \
*** 31199,31493 ****
  \&\fB\-mcpu\fR.  If both are specified, the code generated uses the
  architecture and registers set by \fB\-mcpu\fR, but the
  scheduling parameters set by \fB\-mtune\fR.
! .IP "\fB\-mcmodel=small\fR" 4
  .IX Item "-mcmodel=small"
! Generate PowerPC64 code for the small model: The \s-1TOC\s0 is limited to
  64k.
! .IP "\fB\-mcmodel=medium\fR" 4
  .IX Item "-mcmodel=medium"
! Generate PowerPC64 code for the medium model: The \s-1TOC\s0 and other static
  data may be up to a total of 4G in size.  This is the default for 64\-bit
  Linux.
! .IP "\fB\-mcmodel=large\fR" 4
  .IX Item "-mcmodel=large"
! Generate PowerPC64 code for the large model: The \s-1TOC\s0 may be up to 4G
  in size.  Other data and code is only limited by the 64\-bit address
  space.
! .IP "\fB\-maltivec\fR" 4
  .IX Item "-maltivec"
  .PD 0
! .IP "\fB\-mno\-altivec\fR" 4
  .IX Item "-mno-altivec"
  .PD
  Generate code that uses (does not use) AltiVec instructions, and also
! enable the use of built-in functions that allow more direct access to
  the AltiVec instruction set.  You may also need to set
! \&\fB\-mabi=altivec\fR to adjust the current \s-1ABI\s0 with AltiVec \s-1ABI\s0
  enhancements.
  .Sp
  When \fB\-maltivec\fR is used, the element order for AltiVec intrinsics
  such as \f(CW\*(C`vec_splat\*(C'\fR, \f(CW\*(C`vec_extract\*(C'\fR, and \f(CW\*(C`vec_insert\*(C'\fR
  match array element order corresponding to the endianness of the
  target.  That is, element zero identifies the leftmost element in a
! vector register when targeting a big-endian platform, and identifies
  the rightmost element in a vector register when targeting a
! little-endian platform.
! .IP "\fB\-mvrsave\fR" 4
  .IX Item "-mvrsave"
  .PD 0
! .IP "\fB\-mno\-vrsave\fR" 4
  .IX Item "-mno-vrsave"
  .PD
! Generate \s-1VRSAVE\s0 instructions when generating AltiVec code.
! .IP "\fB\-msecure\-plt\fR" 4
  .IX Item "-msecure-plt"
  Generate code that allows \fBld\fR and \fBld.so\fR
  to build executables and shared
! libraries with non-executable \f(CW\*(C`.plt\*(C'\fR and \f(CW\*(C`.got\*(C'\fR sections.
  This is a PowerPC
! 32\-bit \s-1SYSV ABI\s0 option.
! .IP "\fB\-mbss\-plt\fR" 4
  .IX Item "-mbss-plt"
! Generate code that uses a \s-1BSS\s0 \f(CW\*(C`.plt\*(C'\fR section that \fBld.so\fR
  fills in, and
  requires \f(CW\*(C`.plt\*(C'\fR and \f(CW\*(C`.got\*(C'\fR
  sections that are both writable and executable.
! This is a PowerPC 32\-bit \s-1SYSV ABI\s0 option.
! .IP "\fB\-msplit\-patch\-nops\fR" 4
  .IX Item "-msplit-patch-nops"
  When adding NOPs for a patchable area via the
! \&\fB\-fpatchable\-function\-entry\fR option emit the \*(L"before\*(R" NOPs in front
! of the global entry point and the \*(L"after\*(R" NOPs after the local entry point.
  This makes the sequence of NOPs not consecutive when a global entry point
  is generated.  Without this option the NOPs are emitted directly before and
  after the local entry point, making them consecutive but moving global and
  local entry point further apart.  If only a single entry point is generated
  this option has no effect.
! .IP "\fB\-misel\fR" 4
  .IX Item "-misel"
  .PD 0
! .IP "\fB\-mno\-isel\fR" 4
  .IX Item "-mno-isel"
  .PD
! This switch enables or disables the generation of \s-1ISEL\s0 instructions.
! .IP "\fB\-mvsx\fR" 4
  .IX Item "-mvsx"
  .PD 0
! .IP "\fB\-mno\-vsx\fR" 4
  .IX Item "-mno-vsx"
  .PD
! Generate code that uses (does not use) vector/scalar (\s-1VSX\s0)
! instructions, and also enable the use of built-in functions that allow
! more direct access to the \s-1VSX\s0 instruction set.
! .IP "\fB\-mcrypto\fR" 4
  .IX Item "-mcrypto"
  .PD 0
! .IP "\fB\-mno\-crypto\fR" 4
  .IX Item "-mno-crypto"
  .PD
! Enable the use (disable) of the built-in functions that allow direct
  access to the cryptographic instructions that were added in version
! 2.07 of the PowerPC \s-1ISA.\s0
! .IP "\fB\-mhtm\fR" 4
  .IX Item "-mhtm"
  .PD 0
! .IP "\fB\-mno\-htm\fR" 4
  .IX Item "-mno-htm"
  .PD
! Enable (disable) the use of the built-in functions that allow direct
! access to the Hardware Transactional Memory (\s-1HTM\s0) instructions that
! were added in version 2.07 of the PowerPC \s-1ISA.\s0
! .IP "\fB\-mpower8\-fusion\fR" 4
  .IX Item "-mpower8-fusion"
  .PD 0
! .IP "\fB\-mno\-power8\-fusion\fR" 4
  .IX Item "-mno-power8-fusion"
  .PD
  Generate code that keeps (does not keeps) some integer operations
  adjacent so that the instructions can be fused together on power8 and
  later processors.
! .IP "\fB\-mquad\-memory\fR" 4
  .IX Item "-mquad-memory"
  .PD 0
! .IP "\fB\-mno\-quad\-memory\fR" 4
  .IX Item "-mno-quad-memory"
  .PD
! Generate code that uses (does not use) the non-atomic quad word memory
  instructions.  The \fB\-mquad\-memory\fR option requires use of
  64\-bit mode.
! .IP "\fB\-mquad\-memory\-atomic\fR" 4
  .IX Item "-mquad-memory-atomic"
  .PD 0
! .IP "\fB\-mno\-quad\-memory\-atomic\fR" 4
  .IX Item "-mno-quad-memory-atomic"
  .PD
  Generate code that uses (does not use) the atomic quad word memory
  instructions.  The \fB\-mquad\-memory\-atomic\fR option requires use of
  64\-bit mode.
! .IP "\fB\-mfloat128\fR" 4
  .IX Item "-mfloat128"
  .PD 0
! .IP "\fB\-mno\-float128\fR" 4
  .IX Item "-mno-float128"
  .PD
! Enable/disable the \fI_\|_float128\fR keyword for \s-1IEEE\s0 128\-bit floating point
! and use either software emulation for \s-1IEEE\s0 128\-bit floating point or
  hardware instructions.
  .Sp
! The \s-1VSX\s0 instruction set (\fB\-mvsx\fR) must be enabled to use the \s-1IEEE\s0
! 128\-bit floating point support.  The \s-1IEEE\s0 128\-bit floating point is only
  supported on Linux.
  .Sp
  The default for \fB\-mfloat128\fR is enabled on PowerPC Linux
! systems using the \s-1VSX\s0 instruction set, and disabled on other systems.
  .Sp
! If you use the \s-1ISA 3.0\s0 instruction set (\fB\-mcpu=power9\fR) on a
! 64\-bit system, the \s-1IEEE\s0 128\-bit floating point support will also enable
! the generation of \s-1ISA 3.0 IEEE\s0 128\-bit floating point instructions.
! Otherwise, if you do not specify to generate \s-1ISA 3.0\s0 instructions or you
! are targeting a 32\-bit big endian system, \s-1IEEE\s0 128\-bit floating point
  will be done with software emulation.
! .IP "\fB\-mfloat128\-hardware\fR" 4
  .IX Item "-mfloat128-hardware"
  .PD 0
! .IP "\fB\-mno\-float128\-hardware\fR" 4
  .IX Item "-mno-float128-hardware"
  .PD
! Enable/disable using \s-1ISA 3.0\s0 hardware instructions to support the
  \&\fI_\|_float128\fR data type.
  .Sp
  The default for \fB\-mfloat128\-hardware\fR is enabled on PowerPC
! Linux systems using the \s-1ISA 3.0\s0 instruction set, and disabled on other
  systems.
! .IP "\fB\-m32\fR" 4
  .IX Item "-m32"
  .PD 0
! .IP "\fB\-m64\fR" 4
  .IX Item "-m64"
  .PD
! Generate code for 32\-bit or 64\-bit environments of Darwin and \s-1SVR4\s0
  targets (including GNU/Linux).  The 32\-bit environment sets int, long
  and pointer to 32 bits and generates code that runs on any PowerPC
  variant.  The 64\-bit environment sets int to 32 bits and long and
  pointer to 64 bits, and generates code for PowerPC64, as for
  \&\fB\-mpowerpc64\fR.
! .IP "\fB\-mfull\-toc\fR" 4
  .IX Item "-mfull-toc"
  .PD 0
! .IP "\fB\-mno\-fp\-in\-toc\fR" 4
  .IX Item "-mno-fp-in-toc"
! .IP "\fB\-mno\-sum\-in\-toc\fR" 4
  .IX Item "-mno-sum-in-toc"
! .IP "\fB\-mminimal\-toc\fR" 4
  .IX Item "-mminimal-toc"
  .PD
! Modify generation of the \s-1TOC\s0 (Table Of Contents), which is created for
  every executable file.  The \fB\-mfull\-toc\fR option is selected by
! default.  In that case, \s-1GCC\s0 allocates at least one \s-1TOC\s0 entry for
! each unique non-automatic variable reference in your program.  \s-1GCC\s0
! also places floating-point constants in the \s-1TOC.\s0  However, only
! 16,384 entries are available in the \s-1TOC.\s0
  .Sp
  If you receive a linker error message that saying you have overflowed
! the available \s-1TOC\s0 space, you can reduce the amount of \s-1TOC\s0 space used
  with the \fB\-mno\-fp\-in\-toc\fR and \fB\-mno\-sum\-in\-toc\fR options.
! \&\fB\-mno\-fp\-in\-toc\fR prevents \s-1GCC\s0 from putting floating-point
! constants in the \s-1TOC\s0 and \fB\-mno\-sum\-in\-toc\fR forces \s-1GCC\s0 to
  generate code to calculate the sum of an address and a constant at
! run time instead of putting that sum into the \s-1TOC.\s0  You may specify one
! or both of these options.  Each causes \s-1GCC\s0 to produce very slightly
! slower and larger code at the expense of conserving \s-1TOC\s0 space.
  .Sp
! If you still run out of space in the \s-1TOC\s0 even when you specify both of
  these options, specify \fB\-mminimal\-toc\fR instead.  This option causes
! \&\s-1GCC\s0 to make only one \s-1TOC\s0 entry for every file.  When you specify this
! option, \s-1GCC\s0 produces code that is slower and larger but which
! uses extremely little \s-1TOC\s0 space.  You may wish to use this option
! only on files that contain less frequently-executed code.
! .IP "\fB\-maix64\fR" 4
  .IX Item "-maix64"
  .PD 0
! .IP "\fB\-maix32\fR" 4
  .IX Item "-maix32"
  .PD
! Enable 64\-bit \s-1AIX ABI\s0 and calling convention: 64\-bit pointers, 64\-bit
  \&\f(CW\*(C`long\*(C'\fR type, and the infrastructure needed to support them.
  Specifying \fB\-maix64\fR implies \fB\-mpowerpc64\fR,
! while \fB\-maix32\fR disables the 64\-bit \s-1ABI\s0 and
! implies \fB\-mno\-powerpc64\fR.  \s-1GCC\s0 defaults to \fB\-maix32\fR.
! .IP "\fB\-mxl\-compat\fR" 4
  .IX Item "-mxl-compat"
  .PD 0
! .IP "\fB\-mno\-xl\-compat\fR" 4
  .IX Item "-mno-xl-compat"
  .PD
! Produce code that conforms more closely to \s-1IBM XL\s0 compiler semantics
! when using AIX-compatible \s-1ABI.\s0  Pass floating-point arguments to
! prototyped functions beyond the register save area (\s-1RSA\s0) on the stack
  in addition to argument FPRs.  Do not assume that most significant
  double in 128\-bit long double value is properly rounded when comparing
! values and converting to double.  Use \s-1XL\s0 symbol names for long double
  support routines.
  .Sp
! The \s-1AIX\s0 calling convention was extended but not initially documented to
  handle an obscure K&R C case of calling a function that takes the
! address of its arguments with fewer arguments than declared.  \s-1IBM XL\s0
! compilers access floating-point arguments that do not fit in the
! \&\s-1RSA\s0 from the stack when a subroutine is compiled without
! optimization.  Because always storing floating-point arguments on the
  stack is inefficient and rarely needed, this option is not enabled by
! default and only is necessary when calling subroutines compiled by \s-1IBM
! XL\s0 compilers without optimization.
! .IP "\fB\-mpe\fR" 4
  .IX Item "-mpe"
! Support \fI\s-1IBM RS/6000 SP\s0\fR \fIParallel Environment\fR (\s-1PE\s0).  Link an
  application written to use message passing with special startup code to
! enable the application to run.  The system must have \s-1PE\s0 installed in the
  standard location (\fI/usr/lpp/ppe.poe/\fR), or the \fIspecs\fR file
  must be overridden with the \fB\-specs=\fR option to specify the
  appropriate directory location.  The Parallel Environment does not
  support threads, so the \fB\-mpe\fR option and the \fB\-pthread\fR
  option are incompatible.
! .IP "\fB\-malign\-natural\fR" 4
  .IX Item "-malign-natural"
  .PD 0
! .IP "\fB\-malign\-power\fR" 4
  .IX Item "-malign-power"
  .PD
! On \s-1AIX,\s0 32\-bit Darwin, and 64\-bit PowerPC GNU/Linux, the option
! \&\fB\-malign\-natural\fR overrides the ABI-defined alignment of larger
! types, such as floating-point doubles, on their natural size-based boundary.
! The option \fB\-malign\-power\fR instructs \s-1GCC\s0 to follow the ABI-specified
! alignment rules.  \s-1GCC\s0 defaults to the standard alignment defined in the \s-1ABI.\s0
  .Sp
  On 64\-bit Darwin, natural alignment is the default, and \fB\-malign\-power\fR
  is not supported.
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  .PD 0
! .IP "\fB\-mhard\-float\fR" 4
  .IX Item "-mhard-float"
  .PD
! Generate code that does not use (uses) the floating-point register set.
! Software floating-point emulation is provided if you use the
! \&\fB\-msoft\-float\fR option, and pass the option to \s-1GCC\s0 when linking.
! .IP "\fB\-mmultiple\fR" 4
  .IX Item "-mmultiple"
  .PD 0
! .IP "\fB\-mno\-multiple\fR" 4
  .IX Item "-mno-multiple"
  .PD
  Generate code that uses (does not use) the load multiple word
  instructions and the store multiple word instructions.  These
! instructions are generated by default on \s-1POWER\s0 systems, and not
! generated on PowerPC systems.  Do not use \fB\-mmultiple\fR on little-endian
  PowerPC systems, since those instructions do not work when the
! processor is in little-endian mode.  The exceptions are \s-1PPC740\s0 and
! \&\s-1PPC750\s0 which permit these instructions in little-endian mode.
! .IP "\fB\-mupdate\fR" 4
  .IX Item "-mupdate"
  .PD 0
! .IP "\fB\-mno\-update\fR" 4
  .IX Item "-mno-update"
  .PD
  Generate code that uses (does not use) the load or store instructions
--- 31134,31428 ----
  \&\fB\-mcpu\fR.  If both are specified, the code generated uses the
  architecture and registers set by \fB\-mcpu\fR, but the
  scheduling parameters set by \fB\-mtune\fR.
! .IP \fB\-mcmodel=small\fR 4
  .IX Item "-mcmodel=small"
! Generate PowerPC64 code for the small model: The TOC is limited to
  64k.
! .IP \fB\-mcmodel=medium\fR 4
  .IX Item "-mcmodel=medium"
! Generate PowerPC64 code for the medium model: The TOC and other static
  data may be up to a total of 4G in size.  This is the default for 64\-bit
  Linux.
! .IP \fB\-mcmodel=large\fR 4
  .IX Item "-mcmodel=large"
! Generate PowerPC64 code for the large model: The TOC may be up to 4G
  in size.  Other data and code is only limited by the 64\-bit address
  space.
! .IP \fB\-maltivec\fR 4
  .IX Item "-maltivec"
  .PD 0
! .IP \fB\-mno\-altivec\fR 4
  .IX Item "-mno-altivec"
  .PD
  Generate code that uses (does not use) AltiVec instructions, and also
! enable the use of built\-in functions that allow more direct access to
  the AltiVec instruction set.  You may also need to set
! \&\fB\-mabi=altivec\fR to adjust the current ABI with AltiVec ABI
  enhancements.
  .Sp
  When \fB\-maltivec\fR is used, the element order for AltiVec intrinsics
  such as \f(CW\*(C`vec_splat\*(C'\fR, \f(CW\*(C`vec_extract\*(C'\fR, and \f(CW\*(C`vec_insert\*(C'\fR
  match array element order corresponding to the endianness of the
  target.  That is, element zero identifies the leftmost element in a
! vector register when targeting a big\-endian platform, and identifies
  the rightmost element in a vector register when targeting a
! little\-endian platform.
! .IP \fB\-mvrsave\fR 4
  .IX Item "-mvrsave"
  .PD 0
! .IP \fB\-mno\-vrsave\fR 4
  .IX Item "-mno-vrsave"
  .PD
! Generate VRSAVE instructions when generating AltiVec code.
! .IP \fB\-msecure\-plt\fR 4
  .IX Item "-msecure-plt"
  Generate code that allows \fBld\fR and \fBld.so\fR
  to build executables and shared
! libraries with non\-executable \f(CW\*(C`.plt\*(C'\fR and \f(CW\*(C`.got\*(C'\fR sections.
  This is a PowerPC
! 32\-bit SYSV ABI option.
! .IP \fB\-mbss\-plt\fR 4
  .IX Item "-mbss-plt"
! Generate code that uses a BSS \f(CW\*(C`.plt\*(C'\fR section that \fBld.so\fR
  fills in, and
  requires \f(CW\*(C`.plt\*(C'\fR and \f(CW\*(C`.got\*(C'\fR
  sections that are both writable and executable.
! This is a PowerPC 32\-bit SYSV ABI option.
! .IP \fB\-msplit\-patch\-nops\fR 4
  .IX Item "-msplit-patch-nops"
  When adding NOPs for a patchable area via the
! \&\fB\-fpatchable\-function\-entry\fR option emit the "before" NOPs in front
! of the global entry point and the "after" NOPs after the local entry point.
  This makes the sequence of NOPs not consecutive when a global entry point
  is generated.  Without this option the NOPs are emitted directly before and
  after the local entry point, making them consecutive but moving global and
  local entry point further apart.  If only a single entry point is generated
  this option has no effect.
! .IP \fB\-misel\fR 4
  .IX Item "-misel"
  .PD 0
! .IP \fB\-mno\-isel\fR 4
  .IX Item "-mno-isel"
  .PD
! This switch enables or disables the generation of ISEL instructions.
! .IP \fB\-mvsx\fR 4
  .IX Item "-mvsx"
  .PD 0
! .IP \fB\-mno\-vsx\fR 4
  .IX Item "-mno-vsx"
  .PD
! Generate code that uses (does not use) vector/scalar (VSX)
! instructions, and also enable the use of built\-in functions that allow
! more direct access to the VSX instruction set.
! .IP \fB\-mcrypto\fR 4
  .IX Item "-mcrypto"
  .PD 0
! .IP \fB\-mno\-crypto\fR 4
  .IX Item "-mno-crypto"
  .PD
! Enable the use (disable) of the built\-in functions that allow direct
  access to the cryptographic instructions that were added in version
! 2.07 of the PowerPC ISA.
! .IP \fB\-mhtm\fR 4
  .IX Item "-mhtm"
  .PD 0
! .IP \fB\-mno\-htm\fR 4
  .IX Item "-mno-htm"
  .PD
! Enable (disable) the use of the built\-in functions that allow direct
! access to the Hardware Transactional Memory (HTM) instructions that
! were added in version 2.07 of the PowerPC ISA.
! .IP \fB\-mpower8\-fusion\fR 4
  .IX Item "-mpower8-fusion"
  .PD 0
! .IP \fB\-mno\-power8\-fusion\fR 4
  .IX Item "-mno-power8-fusion"
  .PD
  Generate code that keeps (does not keeps) some integer operations
  adjacent so that the instructions can be fused together on power8 and
  later processors.
! .IP \fB\-mquad\-memory\fR 4
  .IX Item "-mquad-memory"
  .PD 0
! .IP \fB\-mno\-quad\-memory\fR 4
  .IX Item "-mno-quad-memory"
  .PD
! Generate code that uses (does not use) the non\-atomic quad word memory
  instructions.  The \fB\-mquad\-memory\fR option requires use of
  64\-bit mode.
! .IP \fB\-mquad\-memory\-atomic\fR 4
  .IX Item "-mquad-memory-atomic"
  .PD 0
! .IP \fB\-mno\-quad\-memory\-atomic\fR 4
  .IX Item "-mno-quad-memory-atomic"
  .PD
  Generate code that uses (does not use) the atomic quad word memory
  instructions.  The \fB\-mquad\-memory\-atomic\fR option requires use of
  64\-bit mode.
! .IP \fB\-mfloat128\fR 4
  .IX Item "-mfloat128"
  .PD 0
! .IP \fB\-mno\-float128\fR 4
  .IX Item "-mno-float128"
  .PD
! Enable/disable the \fI_\|_float128\fR keyword for IEEE 128\-bit floating point
! and use either software emulation for IEEE 128\-bit floating point or
  hardware instructions.
  .Sp
! The VSX instruction set (\fB\-mvsx\fR) must be enabled to use the IEEE
! 128\-bit floating point support.  The IEEE 128\-bit floating point is only
  supported on Linux.
  .Sp
  The default for \fB\-mfloat128\fR is enabled on PowerPC Linux
! systems using the VSX instruction set, and disabled on other systems.
  .Sp
! If you use the ISA 3.0 instruction set (\fB\-mcpu=power9\fR) on a
! 64\-bit system, the IEEE 128\-bit floating point support will also enable
! the generation of ISA 3.0 IEEE 128\-bit floating point instructions.
! Otherwise, if you do not specify to generate ISA 3.0 instructions or you
! are targeting a 32\-bit big endian system, IEEE 128\-bit floating point
  will be done with software emulation.
! .IP \fB\-mfloat128\-hardware\fR 4
  .IX Item "-mfloat128-hardware"
  .PD 0
! .IP \fB\-mno\-float128\-hardware\fR 4
  .IX Item "-mno-float128-hardware"
  .PD
! Enable/disable using ISA 3.0 hardware instructions to support the
  \&\fI_\|_float128\fR data type.
  .Sp
  The default for \fB\-mfloat128\-hardware\fR is enabled on PowerPC
! Linux systems using the ISA 3.0 instruction set, and disabled on other
  systems.
! .IP \fB\-m32\fR 4
  .IX Item "-m32"
  .PD 0
! .IP \fB\-m64\fR 4
  .IX Item "-m64"
  .PD
! Generate code for 32\-bit or 64\-bit environments of Darwin and SVR4
  targets (including GNU/Linux).  The 32\-bit environment sets int, long
  and pointer to 32 bits and generates code that runs on any PowerPC
  variant.  The 64\-bit environment sets int to 32 bits and long and
  pointer to 64 bits, and generates code for PowerPC64, as for
  \&\fB\-mpowerpc64\fR.
! .IP \fB\-mfull\-toc\fR 4
  .IX Item "-mfull-toc"
  .PD 0
! .IP \fB\-mno\-fp\-in\-toc\fR 4
  .IX Item "-mno-fp-in-toc"
! .IP \fB\-mno\-sum\-in\-toc\fR 4
  .IX Item "-mno-sum-in-toc"
! .IP \fB\-mminimal\-toc\fR 4
  .IX Item "-mminimal-toc"
  .PD
! Modify generation of the TOC (Table Of Contents), which is created for
  every executable file.  The \fB\-mfull\-toc\fR option is selected by
! default.  In that case, GCC allocates at least one TOC entry for
! each unique non\-automatic variable reference in your program.  GCC
! also places floating\-point constants in the TOC.  However, only
! 16,384 entries are available in the TOC.
  .Sp
  If you receive a linker error message that saying you have overflowed
! the available TOC space, you can reduce the amount of TOC space used
  with the \fB\-mno\-fp\-in\-toc\fR and \fB\-mno\-sum\-in\-toc\fR options.
! \&\fB\-mno\-fp\-in\-toc\fR prevents GCC from putting floating\-point
! constants in the TOC and \fB\-mno\-sum\-in\-toc\fR forces GCC to
  generate code to calculate the sum of an address and a constant at
! run time instead of putting that sum into the TOC.  You may specify one
! or both of these options.  Each causes GCC to produce very slightly
! slower and larger code at the expense of conserving TOC space.
  .Sp
! If you still run out of space in the TOC even when you specify both of
  these options, specify \fB\-mminimal\-toc\fR instead.  This option causes
! GCC to make only one TOC entry for every file.  When you specify this
! option, GCC produces code that is slower and larger but which
! uses extremely little TOC space.  You may wish to use this option
! only on files that contain less frequently\-executed code.
! .IP \fB\-maix64\fR 4
  .IX Item "-maix64"
  .PD 0
! .IP \fB\-maix32\fR 4
  .IX Item "-maix32"
  .PD
! Enable 64\-bit AIX ABI and calling convention: 64\-bit pointers, 64\-bit
  \&\f(CW\*(C`long\*(C'\fR type, and the infrastructure needed to support them.
  Specifying \fB\-maix64\fR implies \fB\-mpowerpc64\fR,
! while \fB\-maix32\fR disables the 64\-bit ABI and
! implies \fB\-mno\-powerpc64\fR.  GCC defaults to \fB\-maix32\fR.
! .IP \fB\-mxl\-compat\fR 4
  .IX Item "-mxl-compat"
  .PD 0
! .IP \fB\-mno\-xl\-compat\fR 4
  .IX Item "-mno-xl-compat"
  .PD
! Produce code that conforms more closely to IBM XL compiler semantics
! when using AIX\-compatible ABI.  Pass floating\-point arguments to
! prototyped functions beyond the register save area (RSA) on the stack
  in addition to argument FPRs.  Do not assume that most significant
  double in 128\-bit long double value is properly rounded when comparing
! values and converting to double.  Use XL symbol names for long double
  support routines.
  .Sp
! The AIX calling convention was extended but not initially documented to
  handle an obscure K&R C case of calling a function that takes the
! address of its arguments with fewer arguments than declared.  IBM XL
! compilers access floating\-point arguments that do not fit in the
! RSA from the stack when a subroutine is compiled without
! optimization.  Because always storing floating\-point arguments on the
  stack is inefficient and rarely needed, this option is not enabled by
! default and only is necessary when calling subroutines compiled by IBM
! XL compilers without optimization.
! .IP \fB\-mpe\fR 4
  .IX Item "-mpe"
! Support \fIIBM RS/6000 SP\fR \fIParallel Environment\fR (PE).  Link an
  application written to use message passing with special startup code to
! enable the application to run.  The system must have PE installed in the
  standard location (\fI/usr/lpp/ppe.poe/\fR), or the \fIspecs\fR file
  must be overridden with the \fB\-specs=\fR option to specify the
  appropriate directory location.  The Parallel Environment does not
  support threads, so the \fB\-mpe\fR option and the \fB\-pthread\fR
  option are incompatible.
! .IP \fB\-malign\-natural\fR 4
  .IX Item "-malign-natural"
  .PD 0
! .IP \fB\-malign\-power\fR 4
  .IX Item "-malign-power"
  .PD
! On AIX, 32\-bit Darwin, and 64\-bit PowerPC GNU/Linux, the option
! \&\fB\-malign\-natural\fR overrides the ABI\-defined alignment of larger
! types, such as floating\-point doubles, on their natural size\-based boundary.
! The option \fB\-malign\-power\fR instructs GCC to follow the ABI\-specified
! alignment rules.  GCC defaults to the standard alignment defined in the ABI.
  .Sp
  On 64\-bit Darwin, natural alignment is the default, and \fB\-malign\-power\fR
  is not supported.
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  .PD 0
! .IP \fB\-mhard\-float\fR 4
  .IX Item "-mhard-float"
  .PD
! Generate code that does not use (uses) the floating\-point register set.
! Software floating\-point emulation is provided if you use the
! \&\fB\-msoft\-float\fR option, and pass the option to GCC when linking.
! .IP \fB\-mmultiple\fR 4
  .IX Item "-mmultiple"
  .PD 0
! .IP \fB\-mno\-multiple\fR 4
  .IX Item "-mno-multiple"
  .PD
  Generate code that uses (does not use) the load multiple word
  instructions and the store multiple word instructions.  These
! instructions are generated by default on POWER systems, and not
! generated on PowerPC systems.  Do not use \fB\-mmultiple\fR on little\-endian
  PowerPC systems, since those instructions do not work when the
! processor is in little\-endian mode.  The exceptions are PPC740 and
! PPC750 which permit these instructions in little\-endian mode.
! .IP \fB\-mupdate\fR 4
  .IX Item "-mupdate"
  .PD 0
! .IP \fB\-mno\-update\fR 4
  .IX Item "-mno-update"
  .PD
  Generate code that uses (does not use) the load or store instructions
*************** location.  These instructions are genera
*** 31497,31506 ****
  stack pointer is updated and the address of the previous frame is
  stored, which means code that walks the stack frame across interrupts or
  signals may get corrupted data.
! .IP "\fB\-mavoid\-indexed\-addresses\fR" 4
  .IX Item "-mavoid-indexed-addresses"
  .PD 0
! .IP "\fB\-mno\-avoid\-indexed\-addresses\fR" 4
  .IX Item "-mno-avoid-indexed-addresses"
  .PD
  Generate code that tries to avoid (not avoid) the use of indexed load
--- 31432,31441 ----
  stack pointer is updated and the address of the previous frame is
  stored, which means code that walks the stack frame across interrupts or
  signals may get corrupted data.
! .IP \fB\-mavoid\-indexed\-addresses\fR 4
  .IX Item "-mavoid-indexed-addresses"
  .PD 0
! .IP \fB\-mno\-avoid\-indexed\-addresses\fR 4
  .IX Item "-mno-avoid-indexed-addresses"
  .PD
  Generate code that tries to avoid (not avoid) the use of indexed load
*************** or store instructions. These instruction
*** 31508,31571 ****
  penalty on Power6 processors in certain situations, such as when
  stepping through large arrays that cross a 16M boundary.  This option
  is enabled by default when targeting Power6 and disabled otherwise.
! .IP "\fB\-mfused\-madd\fR" 4
  .IX Item "-mfused-madd"
  .PD 0
! .IP "\fB\-mno\-fused\-madd\fR" 4
  .IX Item "-mno-fused-madd"
  .PD
! Generate code that uses (does not use) the floating-point multiply and
  accumulate instructions.  These instructions are generated by default
! if hardware floating point is used.  The machine-dependent
! \&\fB\-mfused\-madd\fR option is now mapped to the machine-independent
  \&\fB\-ffp\-contract=fast\fR option, and \fB\-mno\-fused\-madd\fR is
  mapped to \fB\-ffp\-contract=off\fR.
! .IP "\fB\-mmulhw\fR" 4
  .IX Item "-mmulhw"
  .PD 0
! .IP "\fB\-mno\-mulhw\fR" 4
  .IX Item "-mno-mulhw"
  .PD
! Generate code that uses (does not use) the half-word multiply and
! multiply-accumulate instructions on the \s-1IBM 405, 440, 464\s0 and 476 processors.
  These instructions are generated by default when targeting those
  processors.
! .IP "\fB\-mdlmzb\fR" 4
  .IX Item "-mdlmzb"
  .PD 0
! .IP "\fB\-mno\-dlmzb\fR" 4
  .IX Item "-mno-dlmzb"
  .PD
! Generate code that uses (does not use) the string-search \fBdlmzb\fR
! instruction on the \s-1IBM 405, 440, 464\s0 and 476 processors.  This instruction is
  generated by default when targeting those processors.
! .IP "\fB\-mno\-bit\-align\fR" 4
  .IX Item "-mno-bit-align"
  .PD 0
! .IP "\fB\-mbit\-align\fR" 4
  .IX Item "-mbit-align"
  .PD
  On System V.4 and embedded PowerPC systems do not (do) force structures
! and unions that contain bit-fields to be aligned to the base type of the
! bit-field.
  .Sp
  For example, by default a structure containing nothing but 8
! \&\f(CW\*(C`unsigned\*(C'\fR bit-fields of length 1 is aligned to a 4\-byte
  boundary and has a size of 4 bytes.  By using \fB\-mno\-bit\-align\fR,
  the structure is aligned to a 1\-byte boundary and is 1 byte in
  size.
! .IP "\fB\-mno\-strict\-align\fR" 4
  .IX Item "-mno-strict-align"
  .PD 0
! .IP "\fB\-mstrict\-align\fR" 4
  .IX Item "-mstrict-align"
  .PD
  On System V.4 and embedded PowerPC systems do not (do) assume that
  unaligned memory references are handled by the system.
! .IP "\fB\-mrelocatable\fR" 4
  .IX Item "-mrelocatable"
  .PD 0
! .IP "\fB\-mno\-relocatable\fR" 4
  .IX Item "-mno-relocatable"
  .PD
  Generate code that allows (does not allow) a static executable to be
--- 31443,31506 ----
  penalty on Power6 processors in certain situations, such as when
  stepping through large arrays that cross a 16M boundary.  This option
  is enabled by default when targeting Power6 and disabled otherwise.
! .IP \fB\-mfused\-madd\fR 4
  .IX Item "-mfused-madd"
  .PD 0
! .IP \fB\-mno\-fused\-madd\fR 4
  .IX Item "-mno-fused-madd"
  .PD
! Generate code that uses (does not use) the floating\-point multiply and
  accumulate instructions.  These instructions are generated by default
! if hardware floating point is used.  The machine\-dependent
! \&\fB\-mfused\-madd\fR option is now mapped to the machine\-independent
  \&\fB\-ffp\-contract=fast\fR option, and \fB\-mno\-fused\-madd\fR is
  mapped to \fB\-ffp\-contract=off\fR.
! .IP \fB\-mmulhw\fR 4
  .IX Item "-mmulhw"
  .PD 0
! .IP \fB\-mno\-mulhw\fR 4
  .IX Item "-mno-mulhw"
  .PD
! Generate code that uses (does not use) the half\-word multiply and
! multiply\-accumulate instructions on the IBM 405, 440, 464 and 476 processors.
  These instructions are generated by default when targeting those
  processors.
! .IP \fB\-mdlmzb\fR 4
  .IX Item "-mdlmzb"
  .PD 0
! .IP \fB\-mno\-dlmzb\fR 4
  .IX Item "-mno-dlmzb"
  .PD
! Generate code that uses (does not use) the string\-search \fBdlmzb\fR
! instruction on the IBM 405, 440, 464 and 476 processors.  This instruction is
  generated by default when targeting those processors.
! .IP \fB\-mno\-bit\-align\fR 4
  .IX Item "-mno-bit-align"
  .PD 0
! .IP \fB\-mbit\-align\fR 4
  .IX Item "-mbit-align"
  .PD
  On System V.4 and embedded PowerPC systems do not (do) force structures
! and unions that contain bit\-fields to be aligned to the base type of the
! bit\-field.
  .Sp
  For example, by default a structure containing nothing but 8
! \&\f(CW\*(C`unsigned\*(C'\fR bit\-fields of length 1 is aligned to a 4\-byte
  boundary and has a size of 4 bytes.  By using \fB\-mno\-bit\-align\fR,
  the structure is aligned to a 1\-byte boundary and is 1 byte in
  size.
! .IP \fB\-mno\-strict\-align\fR 4
  .IX Item "-mno-strict-align"
  .PD 0
! .IP \fB\-mstrict\-align\fR 4
  .IX Item "-mstrict-align"
  .PD
  On System V.4 and embedded PowerPC systems do not (do) assume that
  unaligned memory references are handled by the system.
! .IP \fB\-mrelocatable\fR 4
  .IX Item "-mrelocatable"
  .PD 0
! .IP \fB\-mno\-relocatable\fR 4
  .IX Item "-mno-relocatable"
  .PD
  Generate code that allows (does not allow) a static executable to be
*************** a table of 32\-bit addresses generated b
*** 31576,31585 ****
  work, all objects linked together must be compiled with
  \&\fB\-mrelocatable\fR or \fB\-mrelocatable\-lib\fR.
  \&\fB\-mrelocatable\fR code aligns the stack to an 8\-byte boundary.
! .IP "\fB\-mrelocatable\-lib\fR" 4
  .IX Item "-mrelocatable-lib"
  .PD 0
! .IP "\fB\-mno\-relocatable\-lib\fR" 4
  .IX Item "-mno-relocatable-lib"
  .PD
  Like \fB\-mrelocatable\fR, \fB\-mrelocatable\-lib\fR generates a
--- 31511,31520 ----
  work, all objects linked together must be compiled with
  \&\fB\-mrelocatable\fR or \fB\-mrelocatable\-lib\fR.
  \&\fB\-mrelocatable\fR code aligns the stack to an 8\-byte boundary.
! .IP \fB\-mrelocatable\-lib\fR 4
  .IX Item "-mrelocatable-lib"
  .PD 0
! .IP \fB\-mno\-relocatable\-lib\fR 4
  .IX Item "-mno-relocatable-lib"
  .PD
  Like \fB\-mrelocatable\fR, \fB\-mrelocatable\-lib\fR generates a
*************** run time, but \fB\-mrelocatable\-lib\fR
*** 31588,31843 ****
  alignment of \fB\-mrelocatable\fR.  Objects compiled with
  \&\fB\-mrelocatable\-lib\fR may be linked with objects compiled with
  any combination of the \fB\-mrelocatable\fR options.
! .IP "\fB\-mno\-toc\fR" 4
  .IX Item "-mno-toc"
  .PD 0
! .IP "\fB\-mtoc\fR" 4
  .IX Item "-mtoc"
  .PD
  On System V.4 and embedded PowerPC systems do not (do) assume that
  register 2 contains a pointer to a global area pointing to the addresses
  used in the program.
! .IP "\fB\-mlittle\fR" 4
  .IX Item "-mlittle"
  .PD 0
! .IP "\fB\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
  .PD
  On System V.4 and embedded PowerPC systems compile code for the
! processor in little-endian mode.  The \fB\-mlittle\-endian\fR option is
  the same as \fB\-mlittle\fR.
! .IP "\fB\-mbig\fR" 4
  .IX Item "-mbig"
  .PD 0
! .IP "\fB\-mbig\-endian\fR" 4
  .IX Item "-mbig-endian"
  .PD
  On System V.4 and embedded PowerPC systems compile code for the
! processor in big-endian mode.  The \fB\-mbig\-endian\fR option is
  the same as \fB\-mbig\fR.
! .IP "\fB\-mdynamic\-no\-pic\fR" 4
  .IX Item "-mdynamic-no-pic"
  On Darwin / macOS systems, compile code so that it is not
  relocatable, but that its external references are relocatable.  The
  resulting code is suitable for applications, but not shared
  libraries.
! .IP "\fB\-msingle\-pic\-base\fR" 4
  .IX Item "-msingle-pic-base"
! Treat the register used for \s-1PIC\s0 addressing as read-only, rather than
  loading it in the prologue for each function.  The runtime system is
  responsible for initializing this register with an appropriate value
  before execution begins.
! .IP "\fB\-mprioritize\-restricted\-insns=\fR\fIpriority\fR" 4
  .IX Item "-mprioritize-restricted-insns=priority"
  This option controls the priority that is assigned to
! dispatch-slot restricted instructions during the second scheduling
  pass.  The argument \fIpriority\fR takes the value \fB0\fR, \fB1\fR,
! or \fB2\fR to assign no, highest, or second-highest (respectively)
! priority to dispatch-slot restricted
  instructions.
! .IP "\fB\-msched\-costly\-dep=\fR\fIdependence_type\fR" 4
  .IX Item "-msched-costly-dep=dependence_type"
  This option controls which dependences are considered costly
  by the target during instruction scheduling.  The argument
  \&\fIdependence_type\fR takes one of the following values:
  .RS 4
! .IP "\fBno\fR" 4
  .IX Item "no"
  No dependence is costly.
! .IP "\fBall\fR" 4
  .IX Item "all"
  All dependences are costly.
! .IP "\fBtrue_store_to_load\fR" 4
  .IX Item "true_store_to_load"
  A true dependence from store to load is costly.
! .IP "\fBstore_to_load\fR" 4
  .IX Item "store_to_load"
  Any dependence from store to load is costly.
! .IP "\fInumber\fR" 4
  .IX Item "number"
  Any dependence for which the latency is greater than or equal to
  \&\fInumber\fR is costly.
  .RE
  .RS 4
  .RE
! .IP "\fB\-minsert\-sched\-nops=\fR\fIscheme\fR" 4
  .IX Item "-minsert-sched-nops=scheme"
! This option controls which \s-1NOP\s0 insertion scheme is used during
  the second scheduling pass.  The argument \fIscheme\fR takes one of the
  following values:
  .RS 4
! .IP "\fBno\fR" 4
  .IX Item "no"
! Don't insert NOPs.
! .IP "\fBpad\fR" 4
  .IX Item "pad"
  Pad with NOPs any dispatch group that has vacant issue slots,
! according to the scheduler's grouping.
! .IP "\fBregroup_exact\fR" 4
  .IX Item "regroup_exact"
  Insert NOPs to force costly dependent insns into
  separate groups.  Insert exactly as many NOPs as needed to force an insn
  to a new group, according to the estimated processor grouping.
! .IP "\fInumber\fR" 4
  .IX Item "number"
  Insert NOPs to force costly dependent insns into
  separate groups.  Insert \fInumber\fR NOPs to force an insn to a new group.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mcall\-sysv\fR" 4
  .IX Item "-mcall-sysv"
  On System V.4 and embedded PowerPC systems compile code using calling
  conventions that adhere to the March 1995 draft of the System V
  Application Binary Interface, PowerPC processor supplement.  This is the
! default unless you configured \s-1GCC\s0 using \fBpowerpc\-*\-eabiaix\fR.
! .IP "\fB\-mcall\-sysv\-eabi\fR" 4
  .IX Item "-mcall-sysv-eabi"
  .PD 0
! .IP "\fB\-mcall\-eabi\fR" 4
  .IX Item "-mcall-eabi"
  .PD
  Specify both \fB\-mcall\-sysv\fR and \fB\-meabi\fR options.
! .IP "\fB\-mcall\-sysv\-noeabi\fR" 4
  .IX Item "-mcall-sysv-noeabi"
  Specify both \fB\-mcall\-sysv\fR and \fB\-mno\-eabi\fR options.
! .IP "\fB\-mcall\-aixdesc\fR" 4
  .IX Item "-mcall-aixdesc"
! On System V.4 and embedded PowerPC systems compile code for the \s-1AIX\s0
  operating system.
! .IP "\fB\-mcall\-linux\fR" 4
  .IX Item "-mcall-linux"
  On System V.4 and embedded PowerPC systems compile code for the
! Linux-based \s-1GNU\s0 system.
! .IP "\fB\-mcall\-freebsd\fR" 4
  .IX Item "-mcall-freebsd"
  On System V.4 and embedded PowerPC systems compile code for the
  FreeBSD operating system.
! .IP "\fB\-mcall\-netbsd\fR" 4
  .IX Item "-mcall-netbsd"
  On System V.4 and embedded PowerPC systems compile code for the
  NetBSD operating system.
! .IP "\fB\-mcall\-openbsd\fR" 4
  .IX Item "-mcall-openbsd"
  On System V.4 and embedded PowerPC systems compile code for the
  OpenBSD operating system.
! .IP "\fB\-mtraceback=\fR\fItraceback_type\fR" 4
  .IX Item "-mtraceback=traceback_type"
  Select the type of traceback table. Valid values for \fItraceback_type\fR
  are \fBfull\fR, \fBpart\fR, and \fBno\fR.
! .IP "\fB\-maix\-struct\-return\fR" 4
  .IX Item "-maix-struct-return"
! Return all structures in memory (as specified by the \s-1AIX ABI\s0).
! .IP "\fB\-msvr4\-struct\-return\fR" 4
  .IX Item "-msvr4-struct-return"
  Return structures smaller than 8 bytes in registers (as specified by the
! \&\s-1SVR4 ABI\s0).
! .IP "\fB\-mabi=\fR\fIabi-type\fR" 4
  .IX Item "-mabi=abi-type"
! Extend the current \s-1ABI\s0 with a particular extension, or remove such extension.
! Valid values are: \fBaltivec\fR, \fBno-altivec\fR,
  \&\fBibmlongdouble\fR, \fBieeelongdouble\fR,
  \&\fBelfv1\fR, \fBelfv2\fR,
! and for \s-1AIX:\s0 \fBvec-extabi\fR, \fBvec-default\fR.
! .IP "\fB\-mabi=ibmlongdouble\fR" 4
  .IX Item "-mabi=ibmlongdouble"
! Change the current \s-1ABI\s0 to use \s-1IBM\s0 extended-precision long double.
! This is not likely to work if your system defaults to using \s-1IEEE\s0
! extended-precision long double.  If you change the long double type
! from \s-1IEEE\s0 extended-precision, the compiler issues a warning unless
  you use the \fB\-Wno\-psabi\fR option.
  Requires \fB\-mlong\-double\-128\fR to be enabled.
! .IP "\fB\-mabi=ieeelongdouble\fR" 4
  .IX Item "-mabi=ieeelongdouble"
! Change the current \s-1ABI\s0 to use \s-1IEEE\s0 extended-precision long double.
! This is not likely to work if your system defaults to using \s-1IBM\s0
! extended-precision long double.  If you change the long double type
! from \s-1IBM\s0 extended-precision, the compiler issues a warning unless
  you use the \fB\-Wno\-psabi\fR option.
  Requires \fB\-mlong\-double\-128\fR to be enabled.
! .IP "\fB\-mabi=elfv1\fR" 4
  .IX Item "-mabi=elfv1"
! Change the current \s-1ABI\s0 to use the ELFv1 \s-1ABI.\s0
! This is the default \s-1ABI\s0 for big-endian PowerPC 64\-bit Linux.
! Overriding the default \s-1ABI\s0 requires special system support and is
  likely to fail in spectacular ways.
! .IP "\fB\-mabi=elfv2\fR" 4
  .IX Item "-mabi=elfv2"
! Change the current \s-1ABI\s0 to use the ELFv2 \s-1ABI.\s0
! This is the default \s-1ABI\s0 for little-endian PowerPC 64\-bit Linux.
! Overriding the default \s-1ABI\s0 requires special system support and is
  likely to fail in spectacular ways.
! .IP "\fB\-mgnu\-attribute\fR" 4
  .IX Item "-mgnu-attribute"
  .PD 0
! .IP "\fB\-mno\-gnu\-attribute\fR" 4
  .IX Item "-mno-gnu-attribute"
  .PD
  Emit .gnu_attribute assembly directives to set tag/value pairs in a
! \&.gnu.attributes section that specify \s-1ABI\s0 variations in function
  parameters or return values.
! .IP "\fB\-mprototype\fR" 4
  .IX Item "-mprototype"
  .PD 0
! .IP "\fB\-mno\-prototype\fR" 4
  .IX Item "-mno-prototype"
  .PD
  On System V.4 and embedded PowerPC systems assume that all calls to
  variable argument functions are properly prototyped.  Otherwise, the
! compiler must insert an instruction before every non-prototyped call to
  set or clear bit 6 of the condition code register (\f(CW\*(C`CR\*(C'\fR) to
! indicate whether floating-point values are passed in the floating-point
  registers in case the function takes variable arguments.  With
  \&\fB\-mprototype\fR, only calls to prototyped variable argument functions
  set or clear the bit.
! .IP "\fB\-msim\fR" 4
  .IX Item "-msim"
  On embedded PowerPC systems, assume that the startup module is called
  \&\fIsim\-crt0.o\fR and that the standard C libraries are \fIlibsim.a\fR and
  \&\fIlibc.a\fR.  This is the default for \fBpowerpc\-*\-eabisim\fR
  configurations.
! .IP "\fB\-mmvme\fR" 4
  .IX Item "-mmvme"
  On embedded PowerPC systems, assume that the startup module is called
  \&\fIcrt0.o\fR and the standard C libraries are \fIlibmvme.a\fR and
  \&\fIlibc.a\fR.
! .IP "\fB\-mads\fR" 4
  .IX Item "-mads"
  On embedded PowerPC systems, assume that the startup module is called
  \&\fIcrt0.o\fR and the standard C libraries are \fIlibads.a\fR and
  \&\fIlibc.a\fR.
! .IP "\fB\-myellowknife\fR" 4
  .IX Item "-myellowknife"
  On embedded PowerPC systems, assume that the startup module is called
  \&\fIcrt0.o\fR and the standard C libraries are \fIlibyk.a\fR and
  \&\fIlibc.a\fR.
! .IP "\fB\-mvxworks\fR" 4
  .IX Item "-mvxworks"
  On System V.4 and embedded PowerPC systems, specify that you are
  compiling for a VxWorks system.
! .IP "\fB\-memb\fR" 4
  .IX Item "-memb"
! On embedded PowerPC systems, set the \f(CW\*(C`PPC_EMB\*(C'\fR bit in the \s-1ELF\s0 flags
  header to indicate that \fBeabi\fR extended relocations are used.
! .IP "\fB\-meabi\fR" 4
  .IX Item "-meabi"
  .PD 0
! .IP "\fB\-mno\-eabi\fR" 4
  .IX Item "-mno-eabi"
  .PD
  On System V.4 and embedded PowerPC systems do (do not) adhere to the
! Embedded Applications Binary Interface (\s-1EABI\s0), which is a set of
  modifications to the System V.4 specifications.  Selecting \fB\-meabi\fR
  means that the stack is aligned to an 8\-byte boundary, a function
! \&\f(CW\*(C`_\|_eabi\*(C'\fR is called from \f(CW\*(C`main\*(C'\fR to set up the \s-1EABI\s0
  environment, and the \fB\-msdata\fR option can use both \f(CW\*(C`r2\*(C'\fR and
  \&\f(CW\*(C`r13\*(C'\fR to point to two separate small data areas.  Selecting
  \&\fB\-mno\-eabi\fR means that the stack is aligned to a 16\-byte boundary,
! no \s-1EABI\s0 initialization function is called from \f(CW\*(C`main\*(C'\fR, and the
  \&\fB\-msdata\fR option only uses \f(CW\*(C`r13\*(C'\fR to point to a single
  small data area.  The \fB\-meabi\fR option is on by default if you
! configured \s-1GCC\s0 using one of the \fBpowerpc*\-*\-eabi*\fR options.
! .IP "\fB\-msdata=eabi\fR" 4
  .IX Item "-msdata=eabi"
  On System V.4 and embedded PowerPC systems, put small initialized
  \&\f(CW\*(C`const\*(C'\fR global and static data in the \f(CW\*(C`.sdata2\*(C'\fR section, which
--- 31523,31778 ----
  alignment of \fB\-mrelocatable\fR.  Objects compiled with
  \&\fB\-mrelocatable\-lib\fR may be linked with objects compiled with
  any combination of the \fB\-mrelocatable\fR options.
! .IP \fB\-mno\-toc\fR 4
  .IX Item "-mno-toc"
  .PD 0
! .IP \fB\-mtoc\fR 4
  .IX Item "-mtoc"
  .PD
  On System V.4 and embedded PowerPC systems do not (do) assume that
  register 2 contains a pointer to a global area pointing to the addresses
  used in the program.
! .IP \fB\-mlittle\fR 4
  .IX Item "-mlittle"
  .PD 0
! .IP \fB\-mlittle\-endian\fR 4
  .IX Item "-mlittle-endian"
  .PD
  On System V.4 and embedded PowerPC systems compile code for the
! processor in little\-endian mode.  The \fB\-mlittle\-endian\fR option is
  the same as \fB\-mlittle\fR.
! .IP \fB\-mbig\fR 4
  .IX Item "-mbig"
  .PD 0
! .IP \fB\-mbig\-endian\fR 4
  .IX Item "-mbig-endian"
  .PD
  On System V.4 and embedded PowerPC systems compile code for the
! processor in big\-endian mode.  The \fB\-mbig\-endian\fR option is
  the same as \fB\-mbig\fR.
! .IP \fB\-mdynamic\-no\-pic\fR 4
  .IX Item "-mdynamic-no-pic"
  On Darwin / macOS systems, compile code so that it is not
  relocatable, but that its external references are relocatable.  The
  resulting code is suitable for applications, but not shared
  libraries.
! .IP \fB\-msingle\-pic\-base\fR 4
  .IX Item "-msingle-pic-base"
! Treat the register used for PIC addressing as read\-only, rather than
  loading it in the prologue for each function.  The runtime system is
  responsible for initializing this register with an appropriate value
  before execution begins.
! .IP \fB\-mprioritize\-restricted\-insns=\fR\fIpriority\fR 4
  .IX Item "-mprioritize-restricted-insns=priority"
  This option controls the priority that is assigned to
! dispatch\-slot restricted instructions during the second scheduling
  pass.  The argument \fIpriority\fR takes the value \fB0\fR, \fB1\fR,
! or \fB2\fR to assign no, highest, or second\-highest (respectively)
! priority to dispatch\-slot restricted
  instructions.
! .IP \fB\-msched\-costly\-dep=\fR\fIdependence_type\fR 4
  .IX Item "-msched-costly-dep=dependence_type"
  This option controls which dependences are considered costly
  by the target during instruction scheduling.  The argument
  \&\fIdependence_type\fR takes one of the following values:
  .RS 4
! .IP \fBno\fR 4
  .IX Item "no"
  No dependence is costly.
! .IP \fBall\fR 4
  .IX Item "all"
  All dependences are costly.
! .IP \fBtrue_store_to_load\fR 4
  .IX Item "true_store_to_load"
  A true dependence from store to load is costly.
! .IP \fBstore_to_load\fR 4
  .IX Item "store_to_load"
  Any dependence from store to load is costly.
! .IP \fInumber\fR 4
  .IX Item "number"
  Any dependence for which the latency is greater than or equal to
  \&\fInumber\fR is costly.
  .RE
  .RS 4
  .RE
! .IP \fB\-minsert\-sched\-nops=\fR\fIscheme\fR 4
  .IX Item "-minsert-sched-nops=scheme"
! This option controls which NOP insertion scheme is used during
  the second scheduling pass.  The argument \fIscheme\fR takes one of the
  following values:
  .RS 4
! .IP \fBno\fR 4
  .IX Item "no"
! Don\*(Aqt insert NOPs.
! .IP \fBpad\fR 4
  .IX Item "pad"
  Pad with NOPs any dispatch group that has vacant issue slots,
! according to the scheduler\*(Aqs grouping.
! .IP \fBregroup_exact\fR 4
  .IX Item "regroup_exact"
  Insert NOPs to force costly dependent insns into
  separate groups.  Insert exactly as many NOPs as needed to force an insn
  to a new group, according to the estimated processor grouping.
! .IP \fInumber\fR 4
  .IX Item "number"
  Insert NOPs to force costly dependent insns into
  separate groups.  Insert \fInumber\fR NOPs to force an insn to a new group.
  .RE
  .RS 4
  .RE
! .IP \fB\-mcall\-sysv\fR 4
  .IX Item "-mcall-sysv"
  On System V.4 and embedded PowerPC systems compile code using calling
  conventions that adhere to the March 1995 draft of the System V
  Application Binary Interface, PowerPC processor supplement.  This is the
! default unless you configured GCC using \fBpowerpc\-*\-eabiaix\fR.
! .IP \fB\-mcall\-sysv\-eabi\fR 4
  .IX Item "-mcall-sysv-eabi"
  .PD 0
! .IP \fB\-mcall\-eabi\fR 4
  .IX Item "-mcall-eabi"
  .PD
  Specify both \fB\-mcall\-sysv\fR and \fB\-meabi\fR options.
! .IP \fB\-mcall\-sysv\-noeabi\fR 4
  .IX Item "-mcall-sysv-noeabi"
  Specify both \fB\-mcall\-sysv\fR and \fB\-mno\-eabi\fR options.
! .IP \fB\-mcall\-aixdesc\fR 4
  .IX Item "-mcall-aixdesc"
! On System V.4 and embedded PowerPC systems compile code for the AIX
  operating system.
! .IP \fB\-mcall\-linux\fR 4
  .IX Item "-mcall-linux"
  On System V.4 and embedded PowerPC systems compile code for the
! Linux\-based GNU system.
! .IP \fB\-mcall\-freebsd\fR 4
  .IX Item "-mcall-freebsd"
  On System V.4 and embedded PowerPC systems compile code for the
  FreeBSD operating system.
! .IP \fB\-mcall\-netbsd\fR 4
  .IX Item "-mcall-netbsd"
  On System V.4 and embedded PowerPC systems compile code for the
  NetBSD operating system.
! .IP \fB\-mcall\-openbsd\fR 4
  .IX Item "-mcall-openbsd"
  On System V.4 and embedded PowerPC systems compile code for the
  OpenBSD operating system.
! .IP \fB\-mtraceback=\fR\fItraceback_type\fR 4
  .IX Item "-mtraceback=traceback_type"
  Select the type of traceback table. Valid values for \fItraceback_type\fR
  are \fBfull\fR, \fBpart\fR, and \fBno\fR.
! .IP \fB\-maix\-struct\-return\fR 4
  .IX Item "-maix-struct-return"
! Return all structures in memory (as specified by the AIX ABI).
! .IP \fB\-msvr4\-struct\-return\fR 4
  .IX Item "-msvr4-struct-return"
  Return structures smaller than 8 bytes in registers (as specified by the
! SVR4 ABI).
! .IP \fB\-mabi=\fR\fIabi\-type\fR 4
  .IX Item "-mabi=abi-type"
! Extend the current ABI with a particular extension, or remove such extension.
! Valid values are: \fBaltivec\fR, \fBno\-altivec\fR,
  \&\fBibmlongdouble\fR, \fBieeelongdouble\fR,
  \&\fBelfv1\fR, \fBelfv2\fR,
! and for AIX: \fBvec\-extabi\fR, \fBvec\-default\fR.
! .IP \fB\-mabi=ibmlongdouble\fR 4
  .IX Item "-mabi=ibmlongdouble"
! Change the current ABI to use IBM extended\-precision long double.
! This is not likely to work if your system defaults to using IEEE
! extended\-precision long double.  If you change the long double type
! from IEEE extended\-precision, the compiler issues a warning unless
  you use the \fB\-Wno\-psabi\fR option.
  Requires \fB\-mlong\-double\-128\fR to be enabled.
! .IP \fB\-mabi=ieeelongdouble\fR 4
  .IX Item "-mabi=ieeelongdouble"
! Change the current ABI to use IEEE extended\-precision long double.
! This is not likely to work if your system defaults to using IBM
! extended\-precision long double.  If you change the long double type
! from IBM extended\-precision, the compiler issues a warning unless
  you use the \fB\-Wno\-psabi\fR option.
  Requires \fB\-mlong\-double\-128\fR to be enabled.
! .IP \fB\-mabi=elfv1\fR 4
  .IX Item "-mabi=elfv1"
! Change the current ABI to use the ELFv1 ABI.
! This is the default ABI for big\-endian PowerPC 64\-bit Linux.
! Overriding the default ABI requires special system support and is
  likely to fail in spectacular ways.
! .IP \fB\-mabi=elfv2\fR 4
  .IX Item "-mabi=elfv2"
! Change the current ABI to use the ELFv2 ABI.
! This is the default ABI for little\-endian PowerPC 64\-bit Linux.
! Overriding the default ABI requires special system support and is
  likely to fail in spectacular ways.
! .IP \fB\-mgnu\-attribute\fR 4
  .IX Item "-mgnu-attribute"
  .PD 0
! .IP \fB\-mno\-gnu\-attribute\fR 4
  .IX Item "-mno-gnu-attribute"
  .PD
  Emit .gnu_attribute assembly directives to set tag/value pairs in a
! \&.gnu.attributes section that specify ABI variations in function
  parameters or return values.
! .IP \fB\-mprototype\fR 4
  .IX Item "-mprototype"
  .PD 0
! .IP \fB\-mno\-prototype\fR 4
  .IX Item "-mno-prototype"
  .PD
  On System V.4 and embedded PowerPC systems assume that all calls to
  variable argument functions are properly prototyped.  Otherwise, the
! compiler must insert an instruction before every non\-prototyped call to
  set or clear bit 6 of the condition code register (\f(CW\*(C`CR\*(C'\fR) to
! indicate whether floating\-point values are passed in the floating\-point
  registers in case the function takes variable arguments.  With
  \&\fB\-mprototype\fR, only calls to prototyped variable argument functions
  set or clear the bit.
! .IP \fB\-msim\fR 4
  .IX Item "-msim"
  On embedded PowerPC systems, assume that the startup module is called
  \&\fIsim\-crt0.o\fR and that the standard C libraries are \fIlibsim.a\fR and
  \&\fIlibc.a\fR.  This is the default for \fBpowerpc\-*\-eabisim\fR
  configurations.
! .IP \fB\-mmvme\fR 4
  .IX Item "-mmvme"
  On embedded PowerPC systems, assume that the startup module is called
  \&\fIcrt0.o\fR and the standard C libraries are \fIlibmvme.a\fR and
  \&\fIlibc.a\fR.
! .IP \fB\-mads\fR 4
  .IX Item "-mads"
  On embedded PowerPC systems, assume that the startup module is called
  \&\fIcrt0.o\fR and the standard C libraries are \fIlibads.a\fR and
  \&\fIlibc.a\fR.
! .IP \fB\-myellowknife\fR 4
  .IX Item "-myellowknife"
  On embedded PowerPC systems, assume that the startup module is called
  \&\fIcrt0.o\fR and the standard C libraries are \fIlibyk.a\fR and
  \&\fIlibc.a\fR.
! .IP \fB\-mvxworks\fR 4
  .IX Item "-mvxworks"
  On System V.4 and embedded PowerPC systems, specify that you are
  compiling for a VxWorks system.
! .IP \fB\-memb\fR 4
  .IX Item "-memb"
! On embedded PowerPC systems, set the \f(CW\*(C`PPC_EMB\*(C'\fR bit in the ELF flags
  header to indicate that \fBeabi\fR extended relocations are used.
! .IP \fB\-meabi\fR 4
  .IX Item "-meabi"
  .PD 0
! .IP \fB\-mno\-eabi\fR 4
  .IX Item "-mno-eabi"
  .PD
  On System V.4 and embedded PowerPC systems do (do not) adhere to the
! Embedded Applications Binary Interface (EABI), which is a set of
  modifications to the System V.4 specifications.  Selecting \fB\-meabi\fR
  means that the stack is aligned to an 8\-byte boundary, a function
! \&\f(CW\*(C`_\|_eabi\*(C'\fR is called from \f(CW\*(C`main\*(C'\fR to set up the EABI
  environment, and the \fB\-msdata\fR option can use both \f(CW\*(C`r2\*(C'\fR and
  \&\f(CW\*(C`r13\*(C'\fR to point to two separate small data areas.  Selecting
  \&\fB\-mno\-eabi\fR means that the stack is aligned to a 16\-byte boundary,
! no EABI initialization function is called from \f(CW\*(C`main\*(C'\fR, and the
  \&\fB\-msdata\fR option only uses \f(CW\*(C`r13\*(C'\fR to point to a single
  small data area.  The \fB\-meabi\fR option is on by default if you
! configured GCC using one of the \fBpowerpc*\-*\-eabi*\fR options.
! .IP \fB\-msdata=eabi\fR 4
  .IX Item "-msdata=eabi"
  On System V.4 and embedded PowerPC systems, put small initialized
  \&\f(CW\*(C`const\*(C'\fR global and static data in the \f(CW\*(C`.sdata2\*(C'\fR section, which
*************** global and static data in the \f(CW\*(C`
*** 31848,31854 ****
  the \f(CW\*(C`.sdata\*(C'\fR section.  The \fB\-msdata=eabi\fR option is
  incompatible with the \fB\-mrelocatable\fR option.  The
  \&\fB\-msdata=eabi\fR option also sets the \fB\-memb\fR option.
! .IP "\fB\-msdata=sysv\fR" 4
  .IX Item "-msdata=sysv"
  On System V.4 and embedded PowerPC systems, put small global and static
  data in the \f(CW\*(C`.sdata\*(C'\fR section, which is pointed to by register
--- 31783,31789 ----
  the \f(CW\*(C`.sdata\*(C'\fR section.  The \fB\-msdata=eabi\fR option is
  incompatible with the \fB\-mrelocatable\fR option.  The
  \&\fB\-msdata=eabi\fR option also sets the \fB\-memb\fR option.
! .IP \fB\-msdata=sysv\fR 4
  .IX Item "-msdata=sysv"
  On System V.4 and embedded PowerPC systems, put small global and static
  data in the \f(CW\*(C`.sdata\*(C'\fR section, which is pointed to by register
*************** data in the \f(CW\*(C`.sdata\*(C'\fR sec
*** 31856,31911 ****
  \&\f(CW\*(C`.sbss\*(C'\fR section, which is adjacent to the \f(CW\*(C`.sdata\*(C'\fR section.
  The \fB\-msdata=sysv\fR option is incompatible with the
  \&\fB\-mrelocatable\fR option.
! .IP "\fB\-msdata=default\fR" 4
  .IX Item "-msdata=default"
  .PD 0
! .IP "\fB\-msdata\fR" 4
  .IX Item "-msdata"
  .PD
  On System V.4 and embedded PowerPC systems, if \fB\-meabi\fR is used,
  compile code the same as \fB\-msdata=eabi\fR, otherwise compile code the
  same as \fB\-msdata=sysv\fR.
! .IP "\fB\-msdata=data\fR" 4
  .IX Item "-msdata=data"
  On System V.4 and embedded PowerPC systems, put small global
  data in the \f(CW\*(C`.sdata\*(C'\fR section.  Put small uninitialized global
  data in the \f(CW\*(C`.sbss\*(C'\fR section.  Do not use register \f(CW\*(C`r13\*(C'\fR
  to address small data however.  This is the default behavior unless
  other \fB\-msdata\fR options are used.
! .IP "\fB\-msdata=none\fR" 4
  .IX Item "-msdata=none"
  .PD 0
! .IP "\fB\-mno\-sdata\fR" 4
  .IX Item "-mno-sdata"
  .PD
  On embedded PowerPC systems, put all initialized global and static data
  in the \f(CW\*(C`.data\*(C'\fR section, and all uninitialized data in the
  \&\f(CW\*(C`.bss\*(C'\fR section.
! .IP "\fB\-mreadonly\-in\-sdata\fR" 4
  .IX Item "-mreadonly-in-sdata"
! Put read-only objects in the \f(CW\*(C`.sdata\*(C'\fR section as well.  This is the
  default.
! .IP "\fB\-mblock\-move\-inline\-limit=\fR\fInum\fR" 4
  .IX Item "-mblock-move-inline-limit=num"
  Inline all block moves (such as calls to \f(CW\*(C`memcpy\*(C'\fR or structure
  copies) less than or equal to \fInum\fR bytes.  The minimum value for
  \&\fInum\fR is 32 bytes on 32\-bit targets and 64 bytes on 64\-bit
! targets.  The default value is target-specific.
! .IP "\fB\-mblock\-compare\-inline\-limit=\fR\fInum\fR" 4
  .IX Item "-mblock-compare-inline-limit=num"
! Generate non-looping inline code for all block compares (such as calls
  to \f(CW\*(C`memcmp\*(C'\fR or structure compares) less than or equal to \fInum\fR
! bytes. If \fInum\fR is 0, all inline expansion (non-loop and loop) of
! block compare is disabled. The default value is target-specific.
! .IP "\fB\-mblock\-compare\-inline\-loop\-limit=\fR\fInum\fR" 4
  .IX Item "-mblock-compare-inline-loop-limit=num"
  Generate an inline expansion using loop code for all block compares that
  are less than or equal to \fInum\fR bytes, but greater than the limit
! for non-loop inline block compare expansion. If the block length is not
  constant, at most \fInum\fR bytes will be compared before \f(CW\*(C`memcmp\*(C'\fR
  is called to compare the remainder of the block. The default value is
! target-specific.
! .IP "\fB\-mstring\-compare\-inline\-limit=\fR\fInum\fR" 4
  .IX Item "-mstring-compare-inline-limit=num"
  Compare at most \fInum\fR string bytes with inline code.
  If the difference or end of string is not found at the
--- 31791,31846 ----
  \&\f(CW\*(C`.sbss\*(C'\fR section, which is adjacent to the \f(CW\*(C`.sdata\*(C'\fR section.
  The \fB\-msdata=sysv\fR option is incompatible with the
  \&\fB\-mrelocatable\fR option.
! .IP \fB\-msdata=default\fR 4
  .IX Item "-msdata=default"
  .PD 0
! .IP \fB\-msdata\fR 4
  .IX Item "-msdata"
  .PD
  On System V.4 and embedded PowerPC systems, if \fB\-meabi\fR is used,
  compile code the same as \fB\-msdata=eabi\fR, otherwise compile code the
  same as \fB\-msdata=sysv\fR.
! .IP \fB\-msdata=data\fR 4
  .IX Item "-msdata=data"
  On System V.4 and embedded PowerPC systems, put small global
  data in the \f(CW\*(C`.sdata\*(C'\fR section.  Put small uninitialized global
  data in the \f(CW\*(C`.sbss\*(C'\fR section.  Do not use register \f(CW\*(C`r13\*(C'\fR
  to address small data however.  This is the default behavior unless
  other \fB\-msdata\fR options are used.
! .IP \fB\-msdata=none\fR 4
  .IX Item "-msdata=none"
  .PD 0
! .IP \fB\-mno\-sdata\fR 4
  .IX Item "-mno-sdata"
  .PD
  On embedded PowerPC systems, put all initialized global and static data
  in the \f(CW\*(C`.data\*(C'\fR section, and all uninitialized data in the
  \&\f(CW\*(C`.bss\*(C'\fR section.
! .IP \fB\-mreadonly\-in\-sdata\fR 4
  .IX Item "-mreadonly-in-sdata"
! Put read\-only objects in the \f(CW\*(C`.sdata\*(C'\fR section as well.  This is the
  default.
! .IP \fB\-mblock\-move\-inline\-limit=\fR\fInum\fR 4
  .IX Item "-mblock-move-inline-limit=num"
  Inline all block moves (such as calls to \f(CW\*(C`memcpy\*(C'\fR or structure
  copies) less than or equal to \fInum\fR bytes.  The minimum value for
  \&\fInum\fR is 32 bytes on 32\-bit targets and 64 bytes on 64\-bit
! targets.  The default value is target\-specific.
! .IP \fB\-mblock\-compare\-inline\-limit=\fR\fInum\fR 4
  .IX Item "-mblock-compare-inline-limit=num"
! Generate non\-looping inline code for all block compares (such as calls
  to \f(CW\*(C`memcmp\*(C'\fR or structure compares) less than or equal to \fInum\fR
! bytes. If \fInum\fR is 0, all inline expansion (non\-loop and loop) of
! block compare is disabled. The default value is target\-specific.
! .IP \fB\-mblock\-compare\-inline\-loop\-limit=\fR\fInum\fR 4
  .IX Item "-mblock-compare-inline-loop-limit=num"
  Generate an inline expansion using loop code for all block compares that
  are less than or equal to \fInum\fR bytes, but greater than the limit
! for non\-loop inline block compare expansion. If the block length is not
  constant, at most \fInum\fR bytes will be compared before \f(CW\*(C`memcmp\*(C'\fR
  is called to compare the remainder of the block. The default value is
! target\-specific.
! .IP \fB\-mstring\-compare\-inline\-limit=\fR\fInum\fR 4
  .IX Item "-mstring-compare-inline-limit=num"
  Compare at most \fInum\fR string bytes with inline code.
  If the difference or end of string is not found at the
*************** take care of the rest of the comparison.
*** 31914,31935 ****
  .IP "\fB\-G\fR \fInum\fR" 4
  .IX Item "-G num"
  On embedded PowerPC systems, put global and static items less than or
! equal to \fInum\fR bytes into the small data or \s-1BSS\s0 sections instead of
! the normal data or \s-1BSS\s0 section.  By default, \fInum\fR is 8.  The
  \&\fB\-G\fR \fInum\fR switch is also passed to the linker.
  All modules should be compiled with the same \fB\-G\fR \fInum\fR value.
! .IP "\fB\-mregnames\fR" 4
  .IX Item "-mregnames"
  .PD 0
! .IP "\fB\-mno\-regnames\fR" 4
  .IX Item "-mno-regnames"
  .PD
  On System V.4 and embedded PowerPC systems do (do not) emit register
  names in the assembly language output using symbolic forms.
! .IP "\fB\-mlongcall\fR" 4
  .IX Item "-mlongcall"
  .PD 0
! .IP "\fB\-mno\-longcall\fR" 4
  .IX Item "-mno-longcall"
  .PD
  By default assume that all calls are far away so that a longer and more
--- 31849,31870 ----
  .IP "\fB\-G\fR \fInum\fR" 4
  .IX Item "-G num"
  On embedded PowerPC systems, put global and static items less than or
! equal to \fInum\fR bytes into the small data or BSS sections instead of
! the normal data or BSS section.  By default, \fInum\fR is 8.  The
  \&\fB\-G\fR \fInum\fR switch is also passed to the linker.
  All modules should be compiled with the same \fB\-G\fR \fInum\fR value.
! .IP \fB\-mregnames\fR 4
  .IX Item "-mregnames"
  .PD 0
! .IP \fB\-mno\-regnames\fR 4
  .IX Item "-mno-regnames"
  .PD
  On System V.4 and embedded PowerPC systems do (do not) emit register
  names in the assembly language output using symbolic forms.
! .IP \fB\-mlongcall\fR 4
  .IX Item "-mlongcall"
  .PD 0
! .IP \fB\-mno\-longcall\fR 4
  .IX Item "-mno-longcall"
  .PD
  By default assume that all calls are far away so that a longer and more
*************** expensive calling sequence is required.
*** 31937,32079 ****
  farther than 32 megabytes (33,554,432 bytes) from the current location.
  A short call is generated if the compiler knows
  the call cannot be that far away.  This setting can be overridden by
! the \f(CW\*(C`shortcall\*(C'\fR function attribute, or by \f(CW\*(C`#pragma
! longcall(0)\*(C'\fR.
  .Sp
! Some linkers are capable of detecting out-of-range calls and generating
  glue code on the fly.  On these systems, long calls are unnecessary and
! generate slower code.  As of this writing, the \s-1AIX\s0 linker can do this,
! as can the \s-1GNU\s0 linker for PowerPC/64.  It is planned to add this feature
! to the \s-1GNU\s0 linker for 32\-bit PowerPC systems as well.
  .Sp
! On PowerPC64 ELFv2 and 32\-bit PowerPC systems with newer \s-1GNU\s0 linkers,
! \&\s-1GCC\s0 can generate long calls using an inline \s-1PLT\s0 call sequence (see
  \&\fB\-mpltseq\fR).  PowerPC with \fB\-mbss\-plt\fR and PowerPC64
! ELFv1 (big-endian) do not support inline \s-1PLT\s0 calls.
  .Sp
  On Darwin/PPC systems, \f(CW\*(C`#pragma longcall\*(C'\fR generates \f(CW\*(C`jbsr
  callee, L42\*(C'\fR, plus a \fIbranch island\fR (glue code).  The two target
  addresses represent the callee and the branch island.  The
  Darwin/PPC linker prefers the first address and generates a \f(CW\*(C`bl
! callee\*(C'\fR if the \s-1PPC\s0 \f(CW\*(C`bl\*(C'\fR instruction reaches the callee directly;
  otherwise, the linker generates \f(CW\*(C`bl L42\*(C'\fR to call the branch
  island.  The branch island is appended to the body of the
  calling function; it computes the full 32\-bit address of the callee
  and jumps to it.
  .Sp
! On Mach-O (Darwin) systems, this option directs the compiler emit to
  the glue for every direct call, and the Darwin linker decides whether
  to use or discard it.
  .Sp
! In the future, \s-1GCC\s0 may ignore all longcall specifications
  when the linker is known to generate glue.
! .IP "\fB\-mpltseq\fR" 4
  .IX Item "-mpltseq"
  .PD 0
! .IP "\fB\-mno\-pltseq\fR" 4
  .IX Item "-mno-pltseq"
  .PD
  Implement (do not implement) \-fno\-plt and long calls using an inline
! \&\s-1PLT\s0 call sequence that supports lazy linking and long calls to
! functions in dlopen'd shared libraries.  Inline \s-1PLT\s0 calls are only
! supported on PowerPC64 ELFv2 and 32\-bit PowerPC systems with newer \s-1GNU\s0
  linkers, and are enabled by default if the support is detected when
! configuring \s-1GCC,\s0 and, in the case of 32\-bit PowerPC, if \s-1GCC\s0 is
  configured with \fB\-\-enable\-secureplt\fR.  \fB\-mpltseq\fR code
  and \fB\-mbss\-plt\fR 32\-bit PowerPC relocatable objects may not be
  linked together.
! .IP "\fB\-mtls\-markers\fR" 4
  .IX Item "-mtls-markers"
  .PD 0
! .IP "\fB\-mno\-tls\-markers\fR" 4
  .IX Item "-mno-tls-markers"
  .PD
  Mark (do not mark) calls to \f(CW\*(C`_\|_tls_get_addr\*(C'\fR with a relocation
  specifying the function argument.  The relocation allows the linker to
  reliably associate function call with argument setup instructions for
! \&\s-1TLS\s0 optimization, which in turn allows \s-1GCC\s0 to better schedule the
  sequence.
! .IP "\fB\-mrecip\fR" 4
  .IX Item "-mrecip"
  .PD 0
! .IP "\fB\-mno\-recip\fR" 4
  .IX Item "-mno-recip"
  .PD
  This option enables use of the reciprocal estimate and
  reciprocal square root estimate instructions with additional
! Newton-Raphson steps to increase precision instead of doing a divide or
! square root and divide for floating-point arguments.  You should use
  the \fB\-ffast\-math\fR option when using \fB\-mrecip\fR (or at
  least \fB\-funsafe\-math\-optimizations\fR,
  \&\fB\-ffinite\-math\-only\fR, \fB\-freciprocal\-math\fR and
  \&\fB\-fno\-trapping\-math\fR).  Note that while the throughput of the
! sequence is generally higher than the throughput of the non-reciprocal
  instruction, the precision of the sequence can be decreased by up to 2
  ulp (i.e. the inverse of 1.0 equals 0.99999994) for reciprocal square
  roots.
! .IP "\fB\-mrecip=\fR\fIopt\fR" 4
  .IX Item "-mrecip=opt"
  This option controls which reciprocal estimate instructions
! may be used.  \fIopt\fR is a comma-separated list of options, which may
  be preceded by a \f(CW\*(C`!\*(C'\fR to invert the option:
  .RS 4
! .IP "\fBall\fR" 4
  .IX Item "all"
  Enable all estimate instructions.
! .IP "\fBdefault\fR" 4
  .IX Item "default"
  Enable the default instructions, equivalent to \fB\-mrecip\fR.
! .IP "\fBnone\fR" 4
  .IX Item "none"
  Disable all estimate instructions, equivalent to \fB\-mno\-recip\fR.
! .IP "\fBdiv\fR" 4
  .IX Item "div"
  Enable the reciprocal approximation instructions for both
  single and double precision.
! .IP "\fBdivf\fR" 4
  .IX Item "divf"
! Enable the single-precision reciprocal approximation instructions.
! .IP "\fBdivd\fR" 4
  .IX Item "divd"
! Enable the double-precision reciprocal approximation instructions.
! .IP "\fBrsqrt\fR" 4
  .IX Item "rsqrt"
  Enable the reciprocal square root approximation instructions for both
  single and double precision.
! .IP "\fBrsqrtf\fR" 4
  .IX Item "rsqrtf"
! Enable the single-precision reciprocal square root approximation instructions.
! .IP "\fBrsqrtd\fR" 4
  .IX Item "rsqrtd"
! Enable the double-precision reciprocal square root approximation instructions.
  .RE
  .RS 4
  .Sp
  So, for example, \fB\-mrecip=all,!rsqrtd\fR enables
  all of the reciprocal estimate instructions, except for the
  \&\f(CW\*(C`FRSQRTE\*(C'\fR, \f(CW\*(C`XSRSQRTEDP\*(C'\fR, and \f(CW\*(C`XVRSQRTEDP\*(C'\fR instructions
! which handle the double-precision reciprocal square root calculations.
  .RE
! .IP "\fB\-mrecip\-precision\fR" 4
  .IX Item "-mrecip-precision"
  .PD 0
! .IP "\fB\-mno\-recip\-precision\fR" 4
  .IX Item "-mno-recip-precision"
  .PD
  Assume (do not assume) that the reciprocal estimate instructions
! provide higher-precision estimates than is mandated by the PowerPC
! \&\s-1ABI.\s0  Selecting \fB\-mcpu=power6\fR, \fB\-mcpu=power7\fR or
  \&\fB\-mcpu=power8\fR automatically selects \fB\-mrecip\-precision\fR.
! The double-precision square root estimate instructions are not generated by
! default on low-precision machines, since they do not provide an
  estimate that converges after three steps.
! .IP "\fB\-mveclibabi=\fR\fItype\fR" 4
  .IX Item "-mveclibabi=type"
! Specifies the \s-1ABI\s0 type to use for vectorizing intrinsics using an
  external library.  The only type supported at present is \fBmass\fR,
! which specifies to use \s-1IBM\s0's Mathematical Acceleration Subsystem
! (\s-1MASS\s0) libraries for vectorizing intrinsics using external libraries.
! \&\s-1GCC\s0 currently emits calls to \f(CW\*(C`acosd2\*(C'\fR, \f(CW\*(C`acosf4\*(C'\fR,
  \&\f(CW\*(C`acoshd2\*(C'\fR, \f(CW\*(C`acoshf4\*(C'\fR, \f(CW\*(C`asind2\*(C'\fR, \f(CW\*(C`asinf4\*(C'\fR,
  \&\f(CW\*(C`asinhd2\*(C'\fR, \f(CW\*(C`asinhf4\*(C'\fR, \f(CW\*(C`atan2d2\*(C'\fR, \f(CW\*(C`atan2f4\*(C'\fR,
  \&\f(CW\*(C`atand2\*(C'\fR, \f(CW\*(C`atanf4\*(C'\fR, \f(CW\*(C`atanhd2\*(C'\fR, \f(CW\*(C`atanhf4\*(C'\fR,
--- 31872,32014 ----
  farther than 32 megabytes (33,554,432 bytes) from the current location.
  A short call is generated if the compiler knows
  the call cannot be that far away.  This setting can be overridden by
! the \f(CW\*(C`shortcall\*(C'\fR function attribute, or by \f(CW#pragma
! longcall(0)\fR.
  .Sp
! Some linkers are capable of detecting out\-of\-range calls and generating
  glue code on the fly.  On these systems, long calls are unnecessary and
! generate slower code.  As of this writing, the AIX linker can do this,
! as can the GNU linker for PowerPC/64.  It is planned to add this feature
! to the GNU linker for 32\-bit PowerPC systems as well.
  .Sp
! On PowerPC64 ELFv2 and 32\-bit PowerPC systems with newer GNU linkers,
! GCC can generate long calls using an inline PLT call sequence (see
  \&\fB\-mpltseq\fR).  PowerPC with \fB\-mbss\-plt\fR and PowerPC64
! ELFv1 (big\-endian) do not support inline PLT calls.
  .Sp
  On Darwin/PPC systems, \f(CW\*(C`#pragma longcall\*(C'\fR generates \f(CW\*(C`jbsr
  callee, L42\*(C'\fR, plus a \fIbranch island\fR (glue code).  The two target
  addresses represent the callee and the branch island.  The
  Darwin/PPC linker prefers the first address and generates a \f(CW\*(C`bl
! callee\*(C'\fR if the PPC \f(CW\*(C`bl\*(C'\fR instruction reaches the callee directly;
  otherwise, the linker generates \f(CW\*(C`bl L42\*(C'\fR to call the branch
  island.  The branch island is appended to the body of the
  calling function; it computes the full 32\-bit address of the callee
  and jumps to it.
  .Sp
! On Mach\-O (Darwin) systems, this option directs the compiler emit to
  the glue for every direct call, and the Darwin linker decides whether
  to use or discard it.
  .Sp
! In the future, GCC may ignore all longcall specifications
  when the linker is known to generate glue.
! .IP \fB\-mpltseq\fR 4
  .IX Item "-mpltseq"
  .PD 0
! .IP \fB\-mno\-pltseq\fR 4
  .IX Item "-mno-pltseq"
  .PD
  Implement (do not implement) \-fno\-plt and long calls using an inline
! PLT call sequence that supports lazy linking and long calls to
! functions in dlopen\*(Aqd shared libraries.  Inline PLT calls are only
! supported on PowerPC64 ELFv2 and 32\-bit PowerPC systems with newer GNU
  linkers, and are enabled by default if the support is detected when
! configuring GCC, and, in the case of 32\-bit PowerPC, if GCC is
  configured with \fB\-\-enable\-secureplt\fR.  \fB\-mpltseq\fR code
  and \fB\-mbss\-plt\fR 32\-bit PowerPC relocatable objects may not be
  linked together.
! .IP \fB\-mtls\-markers\fR 4
  .IX Item "-mtls-markers"
  .PD 0
! .IP \fB\-mno\-tls\-markers\fR 4
  .IX Item "-mno-tls-markers"
  .PD
  Mark (do not mark) calls to \f(CW\*(C`_\|_tls_get_addr\*(C'\fR with a relocation
  specifying the function argument.  The relocation allows the linker to
  reliably associate function call with argument setup instructions for
! TLS optimization, which in turn allows GCC to better schedule the
  sequence.
! .IP \fB\-mrecip\fR 4
  .IX Item "-mrecip"
  .PD 0
! .IP \fB\-mno\-recip\fR 4
  .IX Item "-mno-recip"
  .PD
  This option enables use of the reciprocal estimate and
  reciprocal square root estimate instructions with additional
! Newton\-Raphson steps to increase precision instead of doing a divide or
! square root and divide for floating\-point arguments.  You should use
  the \fB\-ffast\-math\fR option when using \fB\-mrecip\fR (or at
  least \fB\-funsafe\-math\-optimizations\fR,
  \&\fB\-ffinite\-math\-only\fR, \fB\-freciprocal\-math\fR and
  \&\fB\-fno\-trapping\-math\fR).  Note that while the throughput of the
! sequence is generally higher than the throughput of the non\-reciprocal
  instruction, the precision of the sequence can be decreased by up to 2
  ulp (i.e. the inverse of 1.0 equals 0.99999994) for reciprocal square
  roots.
! .IP \fB\-mrecip=\fR\fIopt\fR 4
  .IX Item "-mrecip=opt"
  This option controls which reciprocal estimate instructions
! may be used.  \fIopt\fR is a comma\-separated list of options, which may
  be preceded by a \f(CW\*(C`!\*(C'\fR to invert the option:
  .RS 4
! .IP \fBall\fR 4
  .IX Item "all"
  Enable all estimate instructions.
! .IP \fBdefault\fR 4
  .IX Item "default"
  Enable the default instructions, equivalent to \fB\-mrecip\fR.
! .IP \fBnone\fR 4
  .IX Item "none"
  Disable all estimate instructions, equivalent to \fB\-mno\-recip\fR.
! .IP \fBdiv\fR 4
  .IX Item "div"
  Enable the reciprocal approximation instructions for both
  single and double precision.
! .IP \fBdivf\fR 4
  .IX Item "divf"
! Enable the single\-precision reciprocal approximation instructions.
! .IP \fBdivd\fR 4
  .IX Item "divd"
! Enable the double\-precision reciprocal approximation instructions.
! .IP \fBrsqrt\fR 4
  .IX Item "rsqrt"
  Enable the reciprocal square root approximation instructions for both
  single and double precision.
! .IP \fBrsqrtf\fR 4
  .IX Item "rsqrtf"
! Enable the single\-precision reciprocal square root approximation instructions.
! .IP \fBrsqrtd\fR 4
  .IX Item "rsqrtd"
! Enable the double\-precision reciprocal square root approximation instructions.
  .RE
  .RS 4
  .Sp
  So, for example, \fB\-mrecip=all,!rsqrtd\fR enables
  all of the reciprocal estimate instructions, except for the
  \&\f(CW\*(C`FRSQRTE\*(C'\fR, \f(CW\*(C`XSRSQRTEDP\*(C'\fR, and \f(CW\*(C`XVRSQRTEDP\*(C'\fR instructions
! which handle the double\-precision reciprocal square root calculations.
  .RE
! .IP \fB\-mrecip\-precision\fR 4
  .IX Item "-mrecip-precision"
  .PD 0
! .IP \fB\-mno\-recip\-precision\fR 4
  .IX Item "-mno-recip-precision"
  .PD
  Assume (do not assume) that the reciprocal estimate instructions
! provide higher\-precision estimates than is mandated by the PowerPC
! ABI.  Selecting \fB\-mcpu=power6\fR, \fB\-mcpu=power7\fR or
  \&\fB\-mcpu=power8\fR automatically selects \fB\-mrecip\-precision\fR.
! The double\-precision square root estimate instructions are not generated by
! default on low\-precision machines, since they do not provide an
  estimate that converges after three steps.
! .IP \fB\-mveclibabi=\fR\fItype\fR 4
  .IX Item "-mveclibabi=type"
! Specifies the ABI type to use for vectorizing intrinsics using an
  external library.  The only type supported at present is \fBmass\fR,
! which specifies to use IBM\*(Aqs Mathematical Acceleration Subsystem
! (MASS) libraries for vectorizing intrinsics using external libraries.
! GCC currently emits calls to \f(CW\*(C`acosd2\*(C'\fR, \f(CW\*(C`acosf4\*(C'\fR,
  \&\f(CW\*(C`acoshd2\*(C'\fR, \f(CW\*(C`acoshf4\*(C'\fR, \f(CW\*(C`asind2\*(C'\fR, \f(CW\*(C`asinf4\*(C'\fR,
  \&\f(CW\*(C`asinhd2\*(C'\fR, \f(CW\*(C`asinhf4\*(C'\fR, \f(CW\*(C`atan2d2\*(C'\fR, \f(CW\*(C`atan2f4\*(C'\fR,
  \&\f(CW\*(C`atand2\*(C'\fR, \f(CW\*(C`atanf4\*(C'\fR, \f(CW\*(C`atanhd2\*(C'\fR, \f(CW\*(C`atanhf4\*(C'\fR,
*************** which specifies to use \s-1IBM\s0's Math
*** 32088,32215 ****
  \&\f(CW\*(C`sinhf4\*(C'\fR, \f(CW\*(C`sqrtd2\*(C'\fR, \f(CW\*(C`sqrtf4\*(C'\fR, \f(CW\*(C`tand2\*(C'\fR,
  \&\f(CW\*(C`tanf4\*(C'\fR, \f(CW\*(C`tanhd2\*(C'\fR, and \f(CW\*(C`tanhf4\*(C'\fR when generating code
  for power7.  Both \fB\-ftree\-vectorize\fR and
! \&\fB\-funsafe\-math\-optimizations\fR must also be enabled.  The \s-1MASS\s0
  libraries must be specified at link time.
! .IP "\fB\-mfriz\fR" 4
  .IX Item "-mfriz"
  .PD 0
! .IP "\fB\-mno\-friz\fR" 4
  .IX Item "-mno-friz"
  .PD
  Generate (do not generate) the \f(CW\*(C`friz\*(C'\fR instruction when the
  \&\fB\-funsafe\-math\-optimizations\fR option is used to optimize
! rounding of floating-point values to 64\-bit integer and back to floating
  point.  The \f(CW\*(C`friz\*(C'\fR instruction does not return the same value if
! the floating-point number is too large to fit in an integer.
! .IP "\fB\-mpointers\-to\-nested\-functions\fR" 4
  .IX Item "-mpointers-to-nested-functions"
  .PD 0
! .IP "\fB\-mno\-pointers\-to\-nested\-functions\fR" 4
  .IX Item "-mno-pointers-to-nested-functions"
  .PD
  Generate (do not generate) code to load up the static chain register
! (\f(CW\*(C`r11\*(C'\fR) when calling through a pointer on \s-1AIX\s0 and 64\-bit Linux
  systems where a function pointer points to a 3\-word descriptor giving
! the function address, \s-1TOC\s0 value to be loaded in register \f(CW\*(C`r2\*(C'\fR, and
  static chain value to be loaded in register \f(CW\*(C`r11\*(C'\fR.  The
  \&\fB\-mpointers\-to\-nested\-functions\fR is on by default.  You cannot
  call through pointers to nested functions or pointers
  to functions compiled in other languages that use the static chain if
  you use \fB\-mno\-pointers\-to\-nested\-functions\fR.
! .IP "\fB\-msave\-toc\-indirect\fR" 4
  .IX Item "-msave-toc-indirect"
  .PD 0
! .IP "\fB\-mno\-save\-toc\-indirect\fR" 4
  .IX Item "-mno-save-toc-indirect"
  .PD
! Generate (do not generate) code to save the \s-1TOC\s0 value in the reserved
  stack location in the function prologue if the function calls through
! a pointer on \s-1AIX\s0 and 64\-bit Linux systems.  If the \s-1TOC\s0 value is not
  saved in the prologue, it is saved just before the call through the
  pointer.  The \fB\-mno\-save\-toc\-indirect\fR option is the default.
! .IP "\fB\-mcompat\-align\-parm\fR" 4
  .IX Item "-mcompat-align-parm"
  .PD 0
! .IP "\fB\-mno\-compat\-align\-parm\fR" 4
  .IX Item "-mno-compat-align-parm"
  .PD
  Generate (do not generate) code to pass structure parameters with a
  maximum alignment of 64 bits, for compatibility with older versions
! of \s-1GCC.\s0
  .Sp
! Older versions of \s-1GCC\s0 (prior to 4.9.0) incorrectly did not align a
  structure parameter on a 128\-bit boundary when that structure contained
  a member requiring 128\-bit alignment.  This is corrected in more
! recent versions of \s-1GCC.\s0  This option may be used to generate code
  that is compatible with functions compiled with older versions of
! \&\s-1GCC.\s0
  .Sp
  The \fB\-mno\-compat\-align\-parm\fR option is the default.
! .IP "\fB\-mstack\-protector\-guard=\fR\fIguard\fR" 4
  .IX Item "-mstack-protector-guard=guard"
  .PD 0
! .IP "\fB\-mstack\-protector\-guard\-reg=\fR\fIreg\fR" 4
  .IX Item "-mstack-protector-guard-reg=reg"
! .IP "\fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR" 4
  .IX Item "-mstack-protector-guard-offset=offset"
  .PD
  Generate stack protection code using canary at \fIguard\fR.  Supported
! locations are \fBglobal\fR for global canary or \fBtls\fR for per-thread
! canary in the \s-1TLS\s0 block (the default with \s-1GNU\s0 libc version 2.4 or later).
  .Sp
  With the latter choice the options
  \&\fB\-mstack\-protector\-guard\-reg=\fR\fIreg\fR and
  \&\fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR furthermore specify
  which register to use as base register for reading the canary, and from what
  offset from that base register. The default for those is as specified in the
! relevant \s-1ABI.\s0
! .IP "\fB\-mpcrel\fR" 4
  .IX Item "-mpcrel"
  .PD 0
! .IP "\fB\-mno\-pcrel\fR" 4
  .IX Item "-mno-pcrel"
  .PD
! Generate (do not generate) pc-relative addressing.  The \fB\-mpcrel\fR
  option requires that the medium code model (\fB\-mcmodel=medium\fR)
  and prefixed addressing (\fB\-mprefixed\fR) options are enabled.
! .IP "\fB\-mprefixed\fR" 4
  .IX Item "-mprefixed"
  .PD 0
! .IP "\fB\-mno\-prefixed\fR" 4
  .IX Item "-mno-prefixed"
  .PD
  Generate (do not generate) addressing modes using prefixed load and
  store instructions.  The \fB\-mprefixed\fR option requires that
  the option \fB\-mcpu=power10\fR (or later) is enabled.
! .IP "\fB\-mmma\fR" 4
  .IX Item "-mmma"
  .PD 0
! .IP "\fB\-mno\-mma\fR" 4
  .IX Item "-mno-mma"
  .PD
! Generate (do not generate) the \s-1MMA\s0 instructions.  The \fB\-mma\fR
  option requires that the option \fB\-mcpu=power10\fR (or later)
  is enabled.
! .IP "\fB\-mrop\-protect\fR" 4
  .IX Item "-mrop-protect"
  .PD 0
! .IP "\fB\-mno\-rop\-protect\fR" 4
  .IX Item "-mno-rop-protect"
  .PD
! Generate (do not generate) \s-1ROP\s0 protection instructions when the target
! processor supports them.  Currently this option disables the shrink-wrap
  optimization (\fB\-fshrink\-wrap\fR).
! .IP "\fB\-mprivileged\fR" 4
  .IX Item "-mprivileged"
  .PD 0
! .IP "\fB\-mno\-privileged\fR" 4
  .IX Item "-mno-privileged"
  .PD
  Generate (do not generate) code that will run in privileged state.
! .IP "\fB\-mblock\-ops\-unaligned\-vsx\fR" 4
  .IX Item "-mblock-ops-unaligned-vsx"
  .PD 0
! .IP "\fB\-mno\-block\-ops\-unaligned\-vsx\fR" 4
  .IX Item "-mno-block-ops-unaligned-vsx"
  .PD
  Generate (do not generate) unaligned vsx loads and stores for
--- 32023,32150 ----
  \&\f(CW\*(C`sinhf4\*(C'\fR, \f(CW\*(C`sqrtd2\*(C'\fR, \f(CW\*(C`sqrtf4\*(C'\fR, \f(CW\*(C`tand2\*(C'\fR,
  \&\f(CW\*(C`tanf4\*(C'\fR, \f(CW\*(C`tanhd2\*(C'\fR, and \f(CW\*(C`tanhf4\*(C'\fR when generating code
  for power7.  Both \fB\-ftree\-vectorize\fR and
! \&\fB\-funsafe\-math\-optimizations\fR must also be enabled.  The MASS
  libraries must be specified at link time.
! .IP \fB\-mfriz\fR 4
  .IX Item "-mfriz"
  .PD 0
! .IP \fB\-mno\-friz\fR 4
  .IX Item "-mno-friz"
  .PD
  Generate (do not generate) the \f(CW\*(C`friz\*(C'\fR instruction when the
  \&\fB\-funsafe\-math\-optimizations\fR option is used to optimize
! rounding of floating\-point values to 64\-bit integer and back to floating
  point.  The \f(CW\*(C`friz\*(C'\fR instruction does not return the same value if
! the floating\-point number is too large to fit in an integer.
! .IP \fB\-mpointers\-to\-nested\-functions\fR 4
  .IX Item "-mpointers-to-nested-functions"
  .PD 0
! .IP \fB\-mno\-pointers\-to\-nested\-functions\fR 4
  .IX Item "-mno-pointers-to-nested-functions"
  .PD
  Generate (do not generate) code to load up the static chain register
! (\f(CW\*(C`r11\*(C'\fR) when calling through a pointer on AIX and 64\-bit Linux
  systems where a function pointer points to a 3\-word descriptor giving
! the function address, TOC value to be loaded in register \f(CW\*(C`r2\*(C'\fR, and
  static chain value to be loaded in register \f(CW\*(C`r11\*(C'\fR.  The
  \&\fB\-mpointers\-to\-nested\-functions\fR is on by default.  You cannot
  call through pointers to nested functions or pointers
  to functions compiled in other languages that use the static chain if
  you use \fB\-mno\-pointers\-to\-nested\-functions\fR.
! .IP \fB\-msave\-toc\-indirect\fR 4
  .IX Item "-msave-toc-indirect"
  .PD 0
! .IP \fB\-mno\-save\-toc\-indirect\fR 4
  .IX Item "-mno-save-toc-indirect"
  .PD
! Generate (do not generate) code to save the TOC value in the reserved
  stack location in the function prologue if the function calls through
! a pointer on AIX and 64\-bit Linux systems.  If the TOC value is not
  saved in the prologue, it is saved just before the call through the
  pointer.  The \fB\-mno\-save\-toc\-indirect\fR option is the default.
! .IP \fB\-mcompat\-align\-parm\fR 4
  .IX Item "-mcompat-align-parm"
  .PD 0
! .IP \fB\-mno\-compat\-align\-parm\fR 4
  .IX Item "-mno-compat-align-parm"
  .PD
  Generate (do not generate) code to pass structure parameters with a
  maximum alignment of 64 bits, for compatibility with older versions
! of GCC.
  .Sp
! Older versions of GCC (prior to 4.9.0) incorrectly did not align a
  structure parameter on a 128\-bit boundary when that structure contained
  a member requiring 128\-bit alignment.  This is corrected in more
! recent versions of GCC.  This option may be used to generate code
  that is compatible with functions compiled with older versions of
! GCC.
  .Sp
  The \fB\-mno\-compat\-align\-parm\fR option is the default.
! .IP \fB\-mstack\-protector\-guard=\fR\fIguard\fR 4
  .IX Item "-mstack-protector-guard=guard"
  .PD 0
! .IP \fB\-mstack\-protector\-guard\-reg=\fR\fIreg\fR 4
  .IX Item "-mstack-protector-guard-reg=reg"
! .IP \fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR 4
  .IX Item "-mstack-protector-guard-offset=offset"
  .PD
  Generate stack protection code using canary at \fIguard\fR.  Supported
! locations are \fBglobal\fR for global canary or \fBtls\fR for per\-thread
! canary in the TLS block (the default with GNU libc version 2.4 or later).
  .Sp
  With the latter choice the options
  \&\fB\-mstack\-protector\-guard\-reg=\fR\fIreg\fR and
  \&\fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR furthermore specify
  which register to use as base register for reading the canary, and from what
  offset from that base register. The default for those is as specified in the
! relevant ABI.
! .IP \fB\-mpcrel\fR 4
  .IX Item "-mpcrel"
  .PD 0
! .IP \fB\-mno\-pcrel\fR 4
  .IX Item "-mno-pcrel"
  .PD
! Generate (do not generate) pc\-relative addressing.  The \fB\-mpcrel\fR
  option requires that the medium code model (\fB\-mcmodel=medium\fR)
  and prefixed addressing (\fB\-mprefixed\fR) options are enabled.
! .IP \fB\-mprefixed\fR 4
  .IX Item "-mprefixed"
  .PD 0
! .IP \fB\-mno\-prefixed\fR 4
  .IX Item "-mno-prefixed"
  .PD
  Generate (do not generate) addressing modes using prefixed load and
  store instructions.  The \fB\-mprefixed\fR option requires that
  the option \fB\-mcpu=power10\fR (or later) is enabled.
! .IP \fB\-mmma\fR 4
  .IX Item "-mmma"
  .PD 0
! .IP \fB\-mno\-mma\fR 4
  .IX Item "-mno-mma"
  .PD
! Generate (do not generate) the MMA instructions.  The \fB\-mma\fR
  option requires that the option \fB\-mcpu=power10\fR (or later)
  is enabled.
! .IP \fB\-mrop\-protect\fR 4
  .IX Item "-mrop-protect"
  .PD 0
! .IP \fB\-mno\-rop\-protect\fR 4
  .IX Item "-mno-rop-protect"
  .PD
! Generate (do not generate) ROP protection instructions when the target
! processor supports them.  Currently this option disables the shrink\-wrap
  optimization (\fB\-fshrink\-wrap\fR).
! .IP \fB\-mprivileged\fR 4
  .IX Item "-mprivileged"
  .PD 0
! .IP \fB\-mno\-privileged\fR 4
  .IX Item "-mno-privileged"
  .PD
  Generate (do not generate) code that will run in privileged state.
! .IP \fB\-mblock\-ops\-unaligned\-vsx\fR 4
  .IX Item "-mblock-ops-unaligned-vsx"
  .PD 0
! .IP \fB\-mno\-block\-ops\-unaligned\-vsx\fR 4
  .IX Item "-mno-block-ops-unaligned-vsx"
  .PD
  Generate (do not generate) unaligned vsx loads and stores for
*************** would be beneficial to unroll the main v
*** 32221,32286 ****
  parameter sets the upper bound of how much the vectorizer will unroll the main
  loop.  The default value is four.
  .PP
! \fI\s-1RX\s0 Options\fR
  .IX Subsection "RX Options"
  .PP
! These command-line options are defined for \s-1RX\s0 targets:
! .IP "\fB\-m64bit\-doubles\fR" 4
  .IX Item "-m64bit-doubles"
  .PD 0
! .IP "\fB\-m32bit\-doubles\fR" 4
  .IX Item "-m32bit-doubles"
  .PD
  Make the \f(CW\*(C`double\*(C'\fR data type be 64 bits (\fB\-m64bit\-doubles\fR)
  or 32 bits (\fB\-m32bit\-doubles\fR) in size.  The default is
! \&\fB\-m32bit\-doubles\fR.  \fINote\fR \s-1RX\s0 floating-point hardware only
  works on 32\-bit values, which is why the default is
  \&\fB\-m32bit\-doubles\fR.
! .IP "\fB\-fpu\fR" 4
  .IX Item "-fpu"
  .PD 0
! .IP "\fB\-nofpu\fR" 4
  .IX Item "-nofpu"
  .PD
! Enables (\fB\-fpu\fR) or disables (\fB\-nofpu\fR) the use of \s-1RX\s0
! floating-point hardware.  The default is enabled for the \s-1RX600\s0
! series and disabled for the \s-1RX200\s0 series.
  .Sp
! Floating-point instructions are only generated for 32\-bit floating-point
! values, however, so the \s-1FPU\s0 hardware is not used for doubles if the
  \&\fB\-m64bit\-doubles\fR option is used.
  .Sp
  \&\fINote\fR If the \fB\-fpu\fR option is enabled then
  \&\fB\-funsafe\-math\-optimizations\fR is also enabled automatically.
! This is because the \s-1RX FPU\s0 instructions are themselves unsafe.
! .IP "\fB\-mcpu=\fR\fIname\fR" 4
  .IX Item "-mcpu=name"
! Selects the type of \s-1RX CPU\s0 to be targeted.  Currently three types are
! supported, the generic \fB\s-1RX600\s0\fR and \fB\s-1RX200\s0\fR series hardware and
! the specific \fB\s-1RX610\s0\fR \s-1CPU.\s0  The default is \fB\s-1RX600\s0\fR.
  .Sp
! The only difference between \fB\s-1RX600\s0\fR and \fB\s-1RX610\s0\fR is that the
! \&\fB\s-1RX610\s0\fR does not support the \f(CW\*(C`MVTIPL\*(C'\fR instruction.
  .Sp
! The \fB\s-1RX200\s0\fR series does not have a hardware floating-point unit
  and so \fB\-nofpu\fR is enabled by default when this type is
  selected.
! .IP "\fB\-mbig\-endian\-data\fR" 4
  .IX Item "-mbig-endian-data"
  .PD 0
! .IP "\fB\-mlittle\-endian\-data\fR" 4
  .IX Item "-mlittle-endian-data"
  .PD
! Store data (but not code) in the big-endian format.  The default is
! \&\fB\-mlittle\-endian\-data\fR, i.e. to store data in the little-endian
  format.
! .IP "\fB\-msmall\-data\-limit=\fR\fIN\fR" 4
  .IX Item "-msmall-data-limit=N"
  Specifies the maximum size in bytes of global and static variables
  which can be placed into the small data area.  Using the small data
  area can lead to smaller and faster code, but the size of area is
  limited and it is up to the programmer to ensure that the area does
! not overflow.  Also when the small data area is used one of the \s-1RX\s0's
  registers (usually \f(CW\*(C`r13\*(C'\fR) is reserved for use pointing to this
  area, so it is no longer available for use by the compiler.  This
  could result in slower and/or larger code if variables are pushed onto
--- 32156,32221 ----
  parameter sets the upper bound of how much the vectorizer will unroll the main
  loop.  The default value is four.
  .PP
! \fIRX Options\fR
  .IX Subsection "RX Options"
  .PP
! These command\-line options are defined for RX targets:
! .IP \fB\-m64bit\-doubles\fR 4
  .IX Item "-m64bit-doubles"
  .PD 0
! .IP \fB\-m32bit\-doubles\fR 4
  .IX Item "-m32bit-doubles"
  .PD
  Make the \f(CW\*(C`double\*(C'\fR data type be 64 bits (\fB\-m64bit\-doubles\fR)
  or 32 bits (\fB\-m32bit\-doubles\fR) in size.  The default is
! \&\fB\-m32bit\-doubles\fR.  \fINote\fR RX floating\-point hardware only
  works on 32\-bit values, which is why the default is
  \&\fB\-m32bit\-doubles\fR.
! .IP \fB\-fpu\fR 4
  .IX Item "-fpu"
  .PD 0
! .IP \fB\-nofpu\fR 4
  .IX Item "-nofpu"
  .PD
! Enables (\fB\-fpu\fR) or disables (\fB\-nofpu\fR) the use of RX
! floating\-point hardware.  The default is enabled for the RX600
! series and disabled for the RX200 series.
  .Sp
! Floating\-point instructions are only generated for 32\-bit floating\-point
! values, however, so the FPU hardware is not used for doubles if the
  \&\fB\-m64bit\-doubles\fR option is used.
  .Sp
  \&\fINote\fR If the \fB\-fpu\fR option is enabled then
  \&\fB\-funsafe\-math\-optimizations\fR is also enabled automatically.
! This is because the RX FPU instructions are themselves unsafe.
! .IP \fB\-mcpu=\fR\fIname\fR 4
  .IX Item "-mcpu=name"
! Selects the type of RX CPU to be targeted.  Currently three types are
! supported, the generic \fBRX600\fR and \fBRX200\fR series hardware and
! the specific \fBRX610\fR CPU.  The default is \fBRX600\fR.
  .Sp
! The only difference between \fBRX600\fR and \fBRX610\fR is that the
! \&\fBRX610\fR does not support the \f(CW\*(C`MVTIPL\*(C'\fR instruction.
  .Sp
! The \fBRX200\fR series does not have a hardware floating\-point unit
  and so \fB\-nofpu\fR is enabled by default when this type is
  selected.
! .IP \fB\-mbig\-endian\-data\fR 4
  .IX Item "-mbig-endian-data"
  .PD 0
! .IP \fB\-mlittle\-endian\-data\fR 4
  .IX Item "-mlittle-endian-data"
  .PD
! Store data (but not code) in the big\-endian format.  The default is
! \&\fB\-mlittle\-endian\-data\fR, i.e. to store data in the little\-endian
  format.
! .IP \fB\-msmall\-data\-limit=\fR\fIN\fR 4
  .IX Item "-msmall-data-limit=N"
  Specifies the maximum size in bytes of global and static variables
  which can be placed into the small data area.  Using the small data
  area can lead to smaller and faster code, but the size of area is
  limited and it is up to the programmer to ensure that the area does
! not overflow.  Also when the small data area is used one of the RX\*(Aqs
  registers (usually \f(CW\*(C`r13\*(C'\fR) is reserved for use pointing to this
  area, so it is no longer available for use by the compiler.  This
  could result in slower and/or larger code if variables are pushed onto
*************** reserving a register.  It is up to the p
*** 32297,32323 ****
  discover whether this feature is of benefit to their program.  See the
  description of the \fB\-mpid\fR option for a description of how the
  actual register to hold the small data area pointer is chosen.
! .IP "\fB\-msim\fR" 4
  .IX Item "-msim"
  .PD 0
! .IP "\fB\-mno\-sim\fR" 4
  .IX Item "-mno-sim"
  .PD
  Use the simulator runtime.  The default is to use the libgloss
! board-specific runtime.
! .IP "\fB\-mas100\-syntax\fR" 4
  .IX Item "-mas100-syntax"
  .PD 0
! .IP "\fB\-mno\-as100\-syntax\fR" 4
  .IX Item "-mno-as100-syntax"
  .PD
  When generating assembler output use a syntax that is compatible with
! Renesas's \s-1AS100\s0 assembler.  This syntax can also be handled by the \s-1GAS\s0
  assembler, but it has some restrictions so it is not generated by default.
! .IP "\fB\-mmax\-constant\-size=\fR\fIN\fR" 4
  .IX Item "-mmax-constant-size=N"
  Specifies the maximum size, in bytes, of a constant that can be used as
! an operand in a \s-1RX\s0 instruction.  Although the \s-1RX\s0 instruction set does
  allow constants of up to 4 bytes in length to be used in instructions,
  a longer value equates to a longer instruction.  Thus in some
  circumstances it can be beneficial to restrict the size of constants
--- 32232,32258 ----
  discover whether this feature is of benefit to their program.  See the
  description of the \fB\-mpid\fR option for a description of how the
  actual register to hold the small data area pointer is chosen.
! .IP \fB\-msim\fR 4
  .IX Item "-msim"
  .PD 0
! .IP \fB\-mno\-sim\fR 4
  .IX Item "-mno-sim"
  .PD
  Use the simulator runtime.  The default is to use the libgloss
! board\-specific runtime.
! .IP \fB\-mas100\-syntax\fR 4
  .IX Item "-mas100-syntax"
  .PD 0
! .IP \fB\-mno\-as100\-syntax\fR 4
  .IX Item "-mno-as100-syntax"
  .PD
  When generating assembler output use a syntax that is compatible with
! Renesas\*(Aqs AS100 assembler.  This syntax can also be handled by the GAS
  assembler, but it has some restrictions so it is not generated by default.
! .IP \fB\-mmax\-constant\-size=\fR\fIN\fR 4
  .IX Item "-mmax-constant-size=N"
  Specifies the maximum size, in bytes, of a constant that can be used as
! an operand in a RX instruction.  Although the RX instruction set does
  allow constants of up to 4 bytes in length to be used in instructions,
  a longer value equates to a longer instruction.  Thus in some
  circumstances it can be beneficial to restrict the size of constants
*************** placed into a constant pool and referenc
*** 32326,32337 ****
  .Sp
  The value \fIN\fR can be between 0 and 4.  A value of 0 (the default)
  or 4 means that constants of any size are allowed.
! .IP "\fB\-mrelax\fR" 4
  .IX Item "-mrelax"
  Enable linker relaxation.  Linker relaxation is a process whereby the
  linker attempts to reduce the size of a program by finding shorter
  versions of various instructions.  Disabled by default.
! .IP "\fB\-mint\-register=\fR\fIN\fR" 4
  .IX Item "-mint-register=N"
  Specify the number of registers to reserve for fast interrupt handler
  functions.  The value \fIN\fR can be between 0 and 4.  A value of 1
--- 32261,32272 ----
  .Sp
  The value \fIN\fR can be between 0 and 4.  A value of 0 (the default)
  or 4 means that constants of any size are allowed.
! .IP \fB\-mrelax\fR 4
  .IX Item "-mrelax"
  Enable linker relaxation.  Linker relaxation is a process whereby the
  linker attempts to reduce the size of a program by finding shorter
  versions of various instructions.  Disabled by default.
! .IP \fB\-mint\-register=\fR\fIN\fR 4
  .IX Item "-mint-register=N"
  Specify the number of registers to reserve for fast interrupt handler
  functions.  The value \fIN\fR can be between 0 and 4.  A value of 1
*************** of fast interrupt handlers.  A value of
*** 32340,32356 ****
  \&\f(CW\*(C`r12\*(C'\fR.  A value of 3 reserves \f(CW\*(C`r13\*(C'\fR, \f(CW\*(C`r12\*(C'\fR and
  \&\f(CW\*(C`r11\*(C'\fR, and a value of 4 reserves \f(CW\*(C`r13\*(C'\fR through \f(CW\*(C`r10\*(C'\fR.
  A value of 0, the default, does not reserve any registers.
! .IP "\fB\-msave\-acc\-in\-interrupts\fR" 4
  .IX Item "-msave-acc-in-interrupts"
  Specifies that interrupt handler functions should preserve the
  accumulator register.  This is only necessary if normal code might use
  the accumulator register, for example because it performs 64\-bit
  multiplications.  The default is to ignore the accumulator as this
  makes the interrupt handlers faster.
! .IP "\fB\-mpid\fR" 4
  .IX Item "-mpid"
  .PD 0
! .IP "\fB\-mno\-pid\fR" 4
  .IX Item "-mno-pid"
  .PD
  Enables the generation of position independent data.  When enabled any
--- 32275,32291 ----
  \&\f(CW\*(C`r12\*(C'\fR.  A value of 3 reserves \f(CW\*(C`r13\*(C'\fR, \f(CW\*(C`r12\*(C'\fR and
  \&\f(CW\*(C`r11\*(C'\fR, and a value of 4 reserves \f(CW\*(C`r13\*(C'\fR through \f(CW\*(C`r10\*(C'\fR.
  A value of 0, the default, does not reserve any registers.
! .IP \fB\-msave\-acc\-in\-interrupts\fR 4
  .IX Item "-msave-acc-in-interrupts"
  Specifies that interrupt handler functions should preserve the
  accumulator register.  This is only necessary if normal code might use
  the accumulator register, for example because it performs 64\-bit
  multiplications.  The default is to ignore the accumulator as this
  makes the interrupt handlers faster.
! .IP \fB\-mpid\fR 4
  .IX Item "-mpid"
  .PD 0
! .IP \fB\-mno\-pid\fR 4
  .IX Item "-mno-pid"
  .PD
  Enables the generation of position independent data.  When enabled any
*************** larger code, especially in complicated f
*** 32367,32373 ****
  .Sp
  The actual register chosen to hold the constant data base address
  depends upon whether the \fB\-msmall\-data\-limit\fR and/or the
! \&\fB\-mint\-register\fR command-line options are enabled.  Starting
  with register \f(CW\*(C`r13\*(C'\fR and proceeding downwards, registers are
  allocated first to satisfy the requirements of \fB\-mint\-register\fR,
  then \fB\-mpid\fR and finally \fB\-msmall\-data\-limit\fR.  Thus it
--- 32302,32308 ----
  .Sp
  The actual register chosen to hold the constant data base address
  depends upon whether the \fB\-msmall\-data\-limit\fR and/or the
! \&\fB\-mint\-register\fR command\-line options are enabled.  Starting
  with register \f(CW\*(C`r13\*(C'\fR and proceeding downwards, registers are
  allocated first to satisfy the requirements of \fB\-mint\-register\fR,
  then \fB\-mpid\fR and finally \fB\-msmall\-data\-limit\fR.  Thus it
*************** is possible for the small data area regi
*** 32376,32419 ****
  command line.
  .Sp
  By default this feature is not enabled.  The default can be restored
! via the \fB\-mno\-pid\fR command-line option.
! .IP "\fB\-mno\-warn\-multiple\-fast\-interrupts\fR" 4
  .IX Item "-mno-warn-multiple-fast-interrupts"
  .PD 0
! .IP "\fB\-mwarn\-multiple\-fast\-interrupts\fR" 4
  .IX Item "-mwarn-multiple-fast-interrupts"
  .PD
! Prevents \s-1GCC\s0 from issuing a warning message if it finds more than one
  fast interrupt handler when it is compiling a file.  The default is to
! issue a warning for each extra fast interrupt handler found, as the \s-1RX\s0
  only supports one such interrupt.
! .IP "\fB\-mallow\-string\-insns\fR" 4
  .IX Item "-mallow-string-insns"
  .PD 0
! .IP "\fB\-mno\-allow\-string\-insns\fR" 4
  .IX Item "-mno-allow-string-insns"
  .PD
  Enables or disables the use of the string manipulation instructions
  \&\f(CW\*(C`SMOVF\*(C'\fR, \f(CW\*(C`SCMPU\*(C'\fR, \f(CW\*(C`SMOVB\*(C'\fR, \f(CW\*(C`SMOVU\*(C'\fR, \f(CW\*(C`SUNTIL\*(C'\fR
  \&\f(CW\*(C`SWHILE\*(C'\fR and also the \f(CW\*(C`RMPA\*(C'\fR instruction.  These
  instructions may prefetch data, which is not safe to do if accessing
! an I/O register.  (See section 12.2.7 of the \s-1RX62N\s0 Group User's Manual
  for more information).
  .Sp
  The default is to allow these instructions, but it is not possible for
! \&\s-1GCC\s0 to reliably detect all circumstances where a string instruction
  might be used to access an I/O register, so their use cannot be
  disabled automatically.  Instead it is reliant upon the programmer to
  use the \fB\-mno\-allow\-string\-insns\fR option if their program
  accesses I/O space.
  .Sp
! When the instructions are enabled \s-1GCC\s0 defines the C preprocessor
  symbol \f(CW\*(C`_\|_RX_ALLOW_STRING_INSNS_\|_\*(C'\fR, otherwise it defines the
  symbol \f(CW\*(C`_\|_RX_DISALLOW_STRING_INSNS_\|_\*(C'\fR.
! .IP "\fB\-mjsr\fR" 4
  .IX Item "-mjsr"
  .PD 0
! .IP "\fB\-mno\-jsr\fR" 4
  .IX Item "-mno-jsr"
  .PD
  Use only (or not only) \f(CW\*(C`JSR\*(C'\fR instructions to access functions.
--- 32311,32354 ----
  command line.
  .Sp
  By default this feature is not enabled.  The default can be restored
! via the \fB\-mno\-pid\fR command\-line option.
! .IP \fB\-mno\-warn\-multiple\-fast\-interrupts\fR 4
  .IX Item "-mno-warn-multiple-fast-interrupts"
  .PD 0
! .IP \fB\-mwarn\-multiple\-fast\-interrupts\fR 4
  .IX Item "-mwarn-multiple-fast-interrupts"
  .PD
! Prevents GCC from issuing a warning message if it finds more than one
  fast interrupt handler when it is compiling a file.  The default is to
! issue a warning for each extra fast interrupt handler found, as the RX
  only supports one such interrupt.
! .IP \fB\-mallow\-string\-insns\fR 4
  .IX Item "-mallow-string-insns"
  .PD 0
! .IP \fB\-mno\-allow\-string\-insns\fR 4
  .IX Item "-mno-allow-string-insns"
  .PD
  Enables or disables the use of the string manipulation instructions
  \&\f(CW\*(C`SMOVF\*(C'\fR, \f(CW\*(C`SCMPU\*(C'\fR, \f(CW\*(C`SMOVB\*(C'\fR, \f(CW\*(C`SMOVU\*(C'\fR, \f(CW\*(C`SUNTIL\*(C'\fR
  \&\f(CW\*(C`SWHILE\*(C'\fR and also the \f(CW\*(C`RMPA\*(C'\fR instruction.  These
  instructions may prefetch data, which is not safe to do if accessing
! an I/O register.  (See section 12.2.7 of the RX62N Group User\*(Aqs Manual
  for more information).
  .Sp
  The default is to allow these instructions, but it is not possible for
! GCC to reliably detect all circumstances where a string instruction
  might be used to access an I/O register, so their use cannot be
  disabled automatically.  Instead it is reliant upon the programmer to
  use the \fB\-mno\-allow\-string\-insns\fR option if their program
  accesses I/O space.
  .Sp
! When the instructions are enabled GCC defines the C preprocessor
  symbol \f(CW\*(C`_\|_RX_ALLOW_STRING_INSNS_\|_\*(C'\fR, otherwise it defines the
  symbol \f(CW\*(C`_\|_RX_DISALLOW_STRING_INSNS_\|_\*(C'\fR.
! .IP \fB\-mjsr\fR 4
  .IX Item "-mjsr"
  .PD 0
! .IP \fB\-mno\-jsr\fR 4
  .IX Item "-mno-jsr"
  .PD
  Use only (or not only) \f(CW\*(C`JSR\*(C'\fR instructions to access functions.
*************** This option can be used when code size e
*** 32421,32488 ****
  instructions.  Note that \fB\-mno\-jsr\fR does not mean to not use
  \&\f(CW\*(C`JSR\*(C'\fR but instead means that any type of branch may be used.
  .PP
! \&\fINote:\fR The generic \s-1GCC\s0 command-line option \fB\-ffixed\-\fR\fIreg\fR
! has special significance to the \s-1RX\s0 port when used with the
  \&\f(CW\*(C`interrupt\*(C'\fR function attribute.  This attribute indicates a
! function intended to process fast interrupts.  \s-1GCC\s0 ensures
  that it only uses the registers \f(CW\*(C`r10\*(C'\fR, \f(CW\*(C`r11\*(C'\fR, \f(CW\*(C`r12\*(C'\fR
  and/or \f(CW\*(C`r13\*(C'\fR and only provided that the normal use of the
  corresponding registers have been restricted via the
! \&\fB\-ffixed\-\fR\fIreg\fR or \fB\-mint\-register\fR command-line
  options.
  .PP
  \fIS/390 and zSeries Options\fR
  .IX Subsection "S/390 and zSeries Options"
  .PP
  These are the \fB\-m\fR options defined for the S/390 and zSeries architecture.
! .IP "\fB\-mhard\-float\fR" 4
  .IX Item "-mhard-float"
  .PD 0
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  .PD
! Use (do not use) the hardware floating-point instructions and registers
! for floating-point operations.  When \fB\-msoft\-float\fR is specified,
! functions in \fIlibgcc.a\fR are used to perform floating-point
  operations.  When \fB\-mhard\-float\fR is specified, the compiler
! generates \s-1IEEE\s0 floating-point instructions.  This is the default.
! .IP "\fB\-mhard\-dfp\fR" 4
  .IX Item "-mhard-dfp"
  .PD 0
! .IP "\fB\-mno\-hard\-dfp\fR" 4
  .IX Item "-mno-hard-dfp"
  .PD
! Use (do not use) the hardware decimal-floating-point instructions for
! decimal-floating-point operations.  When \fB\-mno\-hard\-dfp\fR is
  specified, functions in \fIlibgcc.a\fR are used to perform
! decimal-floating-point operations.  When \fB\-mhard\-dfp\fR is
! specified, the compiler generates decimal-floating-point hardware
  instructions.  This is the default for \fB\-march=z9\-ec\fR or higher.
! .IP "\fB\-mlong\-double\-64\fR" 4
  .IX Item "-mlong-double-64"
  .PD 0
! .IP "\fB\-mlong\-double\-128\fR" 4
  .IX Item "-mlong-double-128"
  .PD
  These switches control the size of \f(CW\*(C`long double\*(C'\fR type. A size
  of 64 bits makes the \f(CW\*(C`long double\*(C'\fR type equivalent to the \f(CW\*(C`double\*(C'\fR
  type. This is the default.
! .IP "\fB\-mbackchain\fR" 4
  .IX Item "-mbackchain"
  .PD 0
! .IP "\fB\-mno\-backchain\fR" 4
  .IX Item "-mno-backchain"
  .PD
! Store (do not store) the address of the caller's frame as backchain pointer
! into the callee's stack frame.
  A backchain may be needed to allow debugging using tools that do not understand
! \&\s-1DWARF\s0 call frame information.
  When \fB\-mno\-packed\-stack\fR is in effect, the backchain pointer is stored
  at the bottom of the stack frame; when \fB\-mpacked\-stack\fR is in effect,
  the backchain is placed into the topmost word of the 96/160 byte register
  save area.
  .Sp
! In general, code compiled with \fB\-mbackchain\fR is call-compatible with
  code compiled with \fB\-mno\-backchain\fR; however, use of the backchain
  for debugging purposes usually requires that the whole binary is built with
  \&\fB\-mbackchain\fR.  Note that the combination of \fB\-mbackchain\fR,
--- 32356,32423 ----
  instructions.  Note that \fB\-mno\-jsr\fR does not mean to not use
  \&\f(CW\*(C`JSR\*(C'\fR but instead means that any type of branch may be used.
  .PP
! \&\fINote:\fR The generic GCC command\-line option \fB\-ffixed\-\fR\fIreg\fR
! has special significance to the RX port when used with the
  \&\f(CW\*(C`interrupt\*(C'\fR function attribute.  This attribute indicates a
! function intended to process fast interrupts.  GCC ensures
  that it only uses the registers \f(CW\*(C`r10\*(C'\fR, \f(CW\*(C`r11\*(C'\fR, \f(CW\*(C`r12\*(C'\fR
  and/or \f(CW\*(C`r13\*(C'\fR and only provided that the normal use of the
  corresponding registers have been restricted via the
! \&\fB\-ffixed\-\fR\fIreg\fR or \fB\-mint\-register\fR command\-line
  options.
  .PP
  \fIS/390 and zSeries Options\fR
  .IX Subsection "S/390 and zSeries Options"
  .PP
  These are the \fB\-m\fR options defined for the S/390 and zSeries architecture.
! .IP \fB\-mhard\-float\fR 4
  .IX Item "-mhard-float"
  .PD 0
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  .PD
! Use (do not use) the hardware floating\-point instructions and registers
! for floating\-point operations.  When \fB\-msoft\-float\fR is specified,
! functions in \fIlibgcc.a\fR are used to perform floating\-point
  operations.  When \fB\-mhard\-float\fR is specified, the compiler
! generates IEEE floating\-point instructions.  This is the default.
! .IP \fB\-mhard\-dfp\fR 4
  .IX Item "-mhard-dfp"
  .PD 0
! .IP \fB\-mno\-hard\-dfp\fR 4
  .IX Item "-mno-hard-dfp"
  .PD
! Use (do not use) the hardware decimal\-floating\-point instructions for
! decimal\-floating\-point operations.  When \fB\-mno\-hard\-dfp\fR is
  specified, functions in \fIlibgcc.a\fR are used to perform
! decimal\-floating\-point operations.  When \fB\-mhard\-dfp\fR is
! specified, the compiler generates decimal\-floating\-point hardware
  instructions.  This is the default for \fB\-march=z9\-ec\fR or higher.
! .IP \fB\-mlong\-double\-64\fR 4
  .IX Item "-mlong-double-64"
  .PD 0
! .IP \fB\-mlong\-double\-128\fR 4
  .IX Item "-mlong-double-128"
  .PD
  These switches control the size of \f(CW\*(C`long double\*(C'\fR type. A size
  of 64 bits makes the \f(CW\*(C`long double\*(C'\fR type equivalent to the \f(CW\*(C`double\*(C'\fR
  type. This is the default.
! .IP \fB\-mbackchain\fR 4
  .IX Item "-mbackchain"
  .PD 0
! .IP \fB\-mno\-backchain\fR 4
  .IX Item "-mno-backchain"
  .PD
! Store (do not store) the address of the caller\*(Aqs frame as backchain pointer
! into the callee\*(Aqs stack frame.
  A backchain may be needed to allow debugging using tools that do not understand
! DWARF call frame information.
  When \fB\-mno\-packed\-stack\fR is in effect, the backchain pointer is stored
  at the bottom of the stack frame; when \fB\-mpacked\-stack\fR is in effect,
  the backchain is placed into the topmost word of the 96/160 byte register
  save area.
  .Sp
! In general, code compiled with \fB\-mbackchain\fR is call\-compatible with
  code compiled with \fB\-mno\-backchain\fR; however, use of the backchain
  for debugging purposes usually requires that the whole binary is built with
  \&\fB\-mbackchain\fR.  Note that the combination of \fB\-mbackchain\fR,
*************** for debugging purposes usually requires
*** 32490,32499 ****
  to build a linux kernel use \fB\-msoft\-float\fR.
  .Sp
  The default is to not maintain the backchain.
! .IP "\fB\-mpacked\-stack\fR" 4
  .IX Item "-mpacked-stack"
  .PD 0
! .IP "\fB\-mno\-packed\-stack\fR" 4
  .IX Item "-mno-packed-stack"
  .PD
  Use (do not use) the packed stack layout.  When \fB\-mno\-packed\-stack\fR is
--- 32425,32434 ----
  to build a linux kernel use \fB\-msoft\-float\fR.
  .Sp
  The default is to not maintain the backchain.
! .IP \fB\-mpacked\-stack\fR 4
  .IX Item "-mpacked-stack"
  .PD 0
! .IP \fB\-mno\-packed\-stack\fR 4
  .IX Item "-mno-packed-stack"
  .PD
  Use (do not use) the packed stack layout.  When \fB\-mno\-packed\-stack\fR is
*************** the save area is always used to store th
*** 32507,32526 ****
  register is always saved two words below the backchain.
  .Sp
  As long as the stack frame backchain is not used, code generated with
! \&\fB\-mpacked\-stack\fR is call-compatible with code generated with
! \&\fB\-mno\-packed\-stack\fR.  Note that some non-FSF releases of \s-1GCC 2.95\s0 for
  S/390 or zSeries generated code that uses the stack frame backchain at run
! time, not just for debugging purposes.  Such code is not call-compatible
  with code compiled with \fB\-mpacked\-stack\fR.  Also, note that the
  combination of \fB\-mbackchain\fR,
  \&\fB\-mpacked\-stack\fR and \fB\-mhard\-float\fR is not supported.  In order
  to build a linux kernel use \fB\-msoft\-float\fR.
  .Sp
  The default is to not use the packed stack layout.
! .IP "\fB\-msmall\-exec\fR" 4
  .IX Item "-msmall-exec"
  .PD 0
! .IP "\fB\-mno\-small\-exec\fR" 4
  .IX Item "-mno-small-exec"
  .PD
  Generate (or do not generate) code using the \f(CW\*(C`bras\*(C'\fR instruction
--- 32442,32461 ----
  register is always saved two words below the backchain.
  .Sp
  As long as the stack frame backchain is not used, code generated with
! \&\fB\-mpacked\-stack\fR is call\-compatible with code generated with
! \&\fB\-mno\-packed\-stack\fR.  Note that some non\-FSF releases of GCC 2.95 for
  S/390 or zSeries generated code that uses the stack frame backchain at run
! time, not just for debugging purposes.  Such code is not call\-compatible
  with code compiled with \fB\-mpacked\-stack\fR.  Also, note that the
  combination of \fB\-mbackchain\fR,
  \&\fB\-mpacked\-stack\fR and \fB\-mhard\-float\fR is not supported.  In order
  to build a linux kernel use \fB\-msoft\-float\fR.
  .Sp
  The default is to not use the packed stack layout.
! .IP \fB\-msmall\-exec\fR 4
  .IX Item "-msmall-exec"
  .PD 0
! .IP \fB\-mno\-small\-exec\fR 4
  .IX Item "-mno-small-exec"
  .PD
  Generate (or do not generate) code using the \f(CW\*(C`bras\*(C'\fR instruction
*************** to do subroutine calls.
*** 32528,32625 ****
  This only works reliably if the total executable size does not
  exceed 64k.  The default is to use the \f(CW\*(C`basr\*(C'\fR instruction instead,
  which does not have this limitation.
! .IP "\fB\-m64\fR" 4
  .IX Item "-m64"
  .PD 0
! .IP "\fB\-m31\fR" 4
  .IX Item "-m31"
  .PD
  When \fB\-m31\fR is specified, generate code compliant to the
! GNU/Linux for S/390 \s-1ABI.\s0  When \fB\-m64\fR is specified, generate
! code compliant to the GNU/Linux for zSeries \s-1ABI.\s0  This allows \s-1GCC\s0 in
  particular to generate 64\-bit instructions.  For the \fBs390\fR
  targets, the default is \fB\-m31\fR, while the \fBs390x\fR
  targets default to \fB\-m64\fR.
! .IP "\fB\-mzarch\fR" 4
  .IX Item "-mzarch"
  .PD 0
! .IP "\fB\-mesa\fR" 4
  .IX Item "-mesa"
  .PD
  When \fB\-mzarch\fR is specified, generate code using the
  instructions available on z/Architecture.
  When \fB\-mesa\fR is specified, generate code using the
! instructions available on \s-1ESA/390.\s0  Note that \fB\-mesa\fR is
  not possible with \fB\-m64\fR.
! When generating code compliant to the GNU/Linux for S/390 \s-1ABI,\s0
  the default is \fB\-mesa\fR.  When generating code compliant
! to the GNU/Linux for zSeries \s-1ABI,\s0 the default is \fB\-mzarch\fR.
! .IP "\fB\-mhtm\fR" 4
  .IX Item "-mhtm"
  .PD 0
! .IP "\fB\-mno\-htm\fR" 4
  .IX Item "-mno-htm"
  .PD
  The \fB\-mhtm\fR option enables a set of builtins making use of
  instructions available with the transactional execution facility
! introduced with the \s-1IBM\s0 zEnterprise \s-1EC12\s0 machine generation
! \&\fBS/390 System z Built-in Functions\fR.
  \&\fB\-mhtm\fR is enabled by default when using \fB\-march=zEC12\fR.
! .IP "\fB\-mvx\fR" 4
  .IX Item "-mvx"
  .PD 0
! .IP "\fB\-mno\-vx\fR" 4
  .IX Item "-mno-vx"
  .PD
  When \fB\-mvx\fR is specified, generate code using the instructions
! available with the vector extension facility introduced with the \s-1IBM\s0
  z13 machine generation.
! This option changes the \s-1ABI\s0 for some vector type values with regard to
  alignment and calling conventions.  In case vector type values are
! being used in an ABI-relevant context a \s-1GAS\s0 \fB.gnu_attribute\fR
! command will be added to mark the resulting binary with the \s-1ABI\s0 used.
  \&\fB\-mvx\fR is enabled by default when using \fB\-march=z13\fR.
! .IP "\fB\-mzvector\fR" 4
  .IX Item "-mzvector"
  .PD 0
! .IP "\fB\-mno\-zvector\fR" 4
  .IX Item "-mno-zvector"
  .PD
  The \fB\-mzvector\fR option enables vector language extensions and
  builtins using instructions available with the vector extension
! facility introduced with the \s-1IBM\s0 z13 machine generation.
  This option adds support for \fBvector\fR to be used as a keyword to
  define vector type variables and arguments.  \fBvector\fR is only
! available when \s-1GNU\s0 extensions are enabled.  It will not be expanded
  when requesting strict standard compliance e.g. with \fB\-std=c99\fR.
! In addition to the \s-1GCC\s0 low-level builtins \fB\-mzvector\fR enables
! a set of builtins added for compatibility with AltiVec-style
  implementations like Power and Cell.  In order to make use of these
  builtins the header file \fIvecintrin.h\fR needs to be included.
  \&\fB\-mzvector\fR is disabled by default.
! .IP "\fB\-mmvcle\fR" 4
  .IX Item "-mmvcle"
  .PD 0
! .IP "\fB\-mno\-mvcle\fR" 4
  .IX Item "-mno-mvcle"
  .PD
  Generate (or do not generate) code using the \f(CW\*(C`mvcle\*(C'\fR instruction
  to perform block moves.  When \fB\-mno\-mvcle\fR is specified,
  use a \f(CW\*(C`mvc\*(C'\fR loop instead.  This is the default unless optimizing for
  size.
! .IP "\fB\-mdebug\fR" 4
  .IX Item "-mdebug"
  .PD 0
! .IP "\fB\-mno\-debug\fR" 4
  .IX Item "-mno-debug"
  .PD
  Print (or do not print) additional debug information when compiling.
  The default is to not print debug information.
! .IP "\fB\-march=\fR\fIcpu-type\fR" 4
  .IX Item "-march=cpu-type"
! Generate code that runs on \fIcpu-type\fR, which is the name of a
  system representing a certain processor type.  Possible values for
! \&\fIcpu-type\fR are \fBz900\fR/\fBarch5\fR, \fBz990\fR/\fBarch6\fR,
  \&\fBz9\-109\fR, \fBz9\-ec\fR/\fBarch7\fR, \fBz10\fR/\fBarch8\fR,
  \&\fBz196\fR/\fBarch9\fR, \fBzEC12\fR, \fBz13\fR/\fBarch11\fR,
  \&\fBz14\fR/\fBarch12\fR, \fBz15\fR/\fBarch13\fR,
--- 32463,32560 ----
  This only works reliably if the total executable size does not
  exceed 64k.  The default is to use the \f(CW\*(C`basr\*(C'\fR instruction instead,
  which does not have this limitation.
! .IP \fB\-m64\fR 4
  .IX Item "-m64"
  .PD 0
! .IP \fB\-m31\fR 4
  .IX Item "-m31"
  .PD
  When \fB\-m31\fR is specified, generate code compliant to the
! GNU/Linux for S/390 ABI.  When \fB\-m64\fR is specified, generate
! code compliant to the GNU/Linux for zSeries ABI.  This allows GCC in
  particular to generate 64\-bit instructions.  For the \fBs390\fR
  targets, the default is \fB\-m31\fR, while the \fBs390x\fR
  targets default to \fB\-m64\fR.
! .IP \fB\-mzarch\fR 4
  .IX Item "-mzarch"
  .PD 0
! .IP \fB\-mesa\fR 4
  .IX Item "-mesa"
  .PD
  When \fB\-mzarch\fR is specified, generate code using the
  instructions available on z/Architecture.
  When \fB\-mesa\fR is specified, generate code using the
! instructions available on ESA/390.  Note that \fB\-mesa\fR is
  not possible with \fB\-m64\fR.
! When generating code compliant to the GNU/Linux for S/390 ABI,
  the default is \fB\-mesa\fR.  When generating code compliant
! to the GNU/Linux for zSeries ABI, the default is \fB\-mzarch\fR.
! .IP \fB\-mhtm\fR 4
  .IX Item "-mhtm"
  .PD 0
! .IP \fB\-mno\-htm\fR 4
  .IX Item "-mno-htm"
  .PD
  The \fB\-mhtm\fR option enables a set of builtins making use of
  instructions available with the transactional execution facility
! introduced with the IBM zEnterprise EC12 machine generation
! \&\fBS/390 System z Built\-in Functions\fR.
  \&\fB\-mhtm\fR is enabled by default when using \fB\-march=zEC12\fR.
! .IP \fB\-mvx\fR 4
  .IX Item "-mvx"
  .PD 0
! .IP \fB\-mno\-vx\fR 4
  .IX Item "-mno-vx"
  .PD
  When \fB\-mvx\fR is specified, generate code using the instructions
! available with the vector extension facility introduced with the IBM
  z13 machine generation.
! This option changes the ABI for some vector type values with regard to
  alignment and calling conventions.  In case vector type values are
! being used in an ABI\-relevant context a GAS \fB.gnu_attribute\fR
! command will be added to mark the resulting binary with the ABI used.
  \&\fB\-mvx\fR is enabled by default when using \fB\-march=z13\fR.
! .IP \fB\-mzvector\fR 4
  .IX Item "-mzvector"
  .PD 0
! .IP \fB\-mno\-zvector\fR 4
  .IX Item "-mno-zvector"
  .PD
  The \fB\-mzvector\fR option enables vector language extensions and
  builtins using instructions available with the vector extension
! facility introduced with the IBM z13 machine generation.
  This option adds support for \fBvector\fR to be used as a keyword to
  define vector type variables and arguments.  \fBvector\fR is only
! available when GNU extensions are enabled.  It will not be expanded
  when requesting strict standard compliance e.g. with \fB\-std=c99\fR.
! In addition to the GCC low\-level builtins \fB\-mzvector\fR enables
! a set of builtins added for compatibility with AltiVec\-style
  implementations like Power and Cell.  In order to make use of these
  builtins the header file \fIvecintrin.h\fR needs to be included.
  \&\fB\-mzvector\fR is disabled by default.
! .IP \fB\-mmvcle\fR 4
  .IX Item "-mmvcle"
  .PD 0
! .IP \fB\-mno\-mvcle\fR 4
  .IX Item "-mno-mvcle"
  .PD
  Generate (or do not generate) code using the \f(CW\*(C`mvcle\*(C'\fR instruction
  to perform block moves.  When \fB\-mno\-mvcle\fR is specified,
  use a \f(CW\*(C`mvc\*(C'\fR loop instead.  This is the default unless optimizing for
  size.
! .IP \fB\-mdebug\fR 4
  .IX Item "-mdebug"
  .PD 0
! .IP \fB\-mno\-debug\fR 4
  .IX Item "-mno-debug"
  .PD
  Print (or do not print) additional debug information when compiling.
  The default is to not print debug information.
! .IP \fB\-march=\fR\fIcpu\-type\fR 4
  .IX Item "-march=cpu-type"
! Generate code that runs on \fIcpu\-type\fR, which is the name of a
  system representing a certain processor type.  Possible values for
! \&\fIcpu\-type\fR are \fBz900\fR/\fBarch5\fR, \fBz990\fR/\fBarch6\fR,
  \&\fBz9\-109\fR, \fBz9\-ec\fR/\fBarch7\fR, \fBz10\fR/\fBarch8\fR,
  \&\fBz196\fR/\fBarch9\fR, \fBzEC12\fR, \fBz13\fR/\fBarch11\fR,
  \&\fBz14\fR/\fBarch12\fR, \fBz15\fR/\fBarch13\fR,
*************** The default is \fB\-march=z900\fR.
*** 32629,32709 ****
  .Sp
  Specifying \fBnative\fR as cpu type can be used to select the best
  architecture option for the host processor.
! \&\fB\-march=native\fR has no effect if \s-1GCC\s0 does not recognize the
  processor.
! .IP "\fB\-mtune=\fR\fIcpu-type\fR" 4
  .IX Item "-mtune=cpu-type"
! Tune to \fIcpu-type\fR everything applicable about the generated code,
! except for the \s-1ABI\s0 and the set of available instructions.
! The list of \fIcpu-type\fR values is the same as for \fB\-march\fR.
  The default is the value used for \fB\-march\fR.
! .IP "\fB\-mtpf\-trace\fR" 4
  .IX Item "-mtpf-trace"
  .PD 0
! .IP "\fB\-mno\-tpf\-trace\fR" 4
  .IX Item "-mno-tpf-trace"
  .PD
! Generate code that adds (does not add) in \s-1TPF OS\s0 specific branches to trace
  routines in the operating system.  This option is off by default, even
! when compiling for the \s-1TPF OS.\s0
! .IP "\fB\-mtpf\-trace\-skip\fR" 4
  .IX Item "-mtpf-trace-skip"
  .PD 0
! .IP "\fB\-mno\-tpf\-trace\-skip\fR" 4
  .IX Item "-mno-tpf-trace-skip"
  .PD
  Generate code that changes (does not change) the default branch
  targets enabled by \fB\-mtpf\-trace\fR to point to specialized trace
  routines providing the ability of selectively skipping function trace
! entries for the \s-1TPF OS.\s0  This option is off by default, even when
! compiling for the \s-1TPF OS\s0 and specifying \fB\-mtpf\-trace\fR.
! .IP "\fB\-mfused\-madd\fR" 4
  .IX Item "-mfused-madd"
  .PD 0
! .IP "\fB\-mno\-fused\-madd\fR" 4
  .IX Item "-mno-fused-madd"
  .PD
! Generate code that uses (does not use) the floating-point multiply and
  accumulate instructions.  These instructions are generated by default if
  hardware floating point is used.
! .IP "\fB\-mwarn\-framesize=\fR\fIframesize\fR" 4
  .IX Item "-mwarn-framesize=framesize"
  Emit a warning if the current function exceeds the given frame size.  Because
! this is a compile-time check it doesn't need to be a real problem when the program
  runs.  It is intended to identify functions that most probably cause
  a stack overflow.  It is useful to be used in an environment with limited stack
  size e.g. the linux kernel.
! .IP "\fB\-mwarn\-dynamicstack\fR" 4
  .IX Item "-mwarn-dynamicstack"
! Emit a warning if the function calls \f(CW\*(C`alloca\*(C'\fR or uses dynamically-sized
  arrays.  This is generally a bad idea with a limited stack size.
! .IP "\fB\-mstack\-guard=\fR\fIstack-guard\fR" 4
  .IX Item "-mstack-guard=stack-guard"
  .PD 0
! .IP "\fB\-mstack\-size=\fR\fIstack-size\fR" 4
  .IX Item "-mstack-size=stack-size"
  .PD
  If these options are provided the S/390 back end emits additional instructions in
! the function prologue that trigger a trap if the stack size is \fIstack-guard\fR
! bytes above the \fIstack-size\fR (remember that the stack on S/390 grows downward).
! If the \fIstack-guard\fR option is omitted the smallest power of 2 larger than
  the frame size of the compiled function is chosen.
  These options are intended to be used to help debugging stack overflow problems.
  The additionally emitted code causes only little overhead and hence can also be
! used in production-like systems without greater performance degradation.  The given
! values have to be exact powers of 2 and \fIstack-size\fR has to be greater than
! \&\fIstack-guard\fR without exceeding 64k.
  In order to be efficient the extra code makes the assumption that the stack starts
! at an address aligned to the value given by \fIstack-size\fR.
! The \fIstack-guard\fR option can only be used in conjunction with \fIstack-size\fR.
! .IP "\fB\-mhotpatch=\fR\fIpre-halfwords\fR\fB,\fR\fIpost-halfwords\fR" 4
  .IX Item "-mhotpatch=pre-halfwords,post-halfwords"
! If the hotpatch option is enabled, a \*(L"hot-patching\*(R" function
  prologue is generated for all functions in the compilation unit.
! The funtion label is prepended with the given number of two-byte
! \&\s-1NOP\s0 instructions (\fIpre-halfwords\fR, maximum 1000000).  After
! the label, 2 * \fIpost-halfwords\fR bytes are appended, using the
! largest \s-1NOP\s0 like instructions the architecture allows (maximum
  1000000).
  .Sp
  If both arguments are zero, hotpatching is disabled.
--- 32564,32644 ----
  .Sp
  Specifying \fBnative\fR as cpu type can be used to select the best
  architecture option for the host processor.
! \&\fB\-march=native\fR has no effect if GCC does not recognize the
  processor.
! .IP \fB\-mtune=\fR\fIcpu\-type\fR 4
  .IX Item "-mtune=cpu-type"
! Tune to \fIcpu\-type\fR everything applicable about the generated code,
! except for the ABI and the set of available instructions.
! The list of \fIcpu\-type\fR values is the same as for \fB\-march\fR.
  The default is the value used for \fB\-march\fR.
! .IP \fB\-mtpf\-trace\fR 4
  .IX Item "-mtpf-trace"
  .PD 0
! .IP \fB\-mno\-tpf\-trace\fR 4
  .IX Item "-mno-tpf-trace"
  .PD
! Generate code that adds (does not add) in TPF OS specific branches to trace
  routines in the operating system.  This option is off by default, even
! when compiling for the TPF OS.
! .IP \fB\-mtpf\-trace\-skip\fR 4
  .IX Item "-mtpf-trace-skip"
  .PD 0
! .IP \fB\-mno\-tpf\-trace\-skip\fR 4
  .IX Item "-mno-tpf-trace-skip"
  .PD
  Generate code that changes (does not change) the default branch
  targets enabled by \fB\-mtpf\-trace\fR to point to specialized trace
  routines providing the ability of selectively skipping function trace
! entries for the TPF OS.  This option is off by default, even when
! compiling for the TPF OS and specifying \fB\-mtpf\-trace\fR.
! .IP \fB\-mfused\-madd\fR 4
  .IX Item "-mfused-madd"
  .PD 0
! .IP \fB\-mno\-fused\-madd\fR 4
  .IX Item "-mno-fused-madd"
  .PD
! Generate code that uses (does not use) the floating\-point multiply and
  accumulate instructions.  These instructions are generated by default if
  hardware floating point is used.
! .IP \fB\-mwarn\-framesize=\fR\fIframesize\fR 4
  .IX Item "-mwarn-framesize=framesize"
  Emit a warning if the current function exceeds the given frame size.  Because
! this is a compile\-time check it doesn\*(Aqt need to be a real problem when the program
  runs.  It is intended to identify functions that most probably cause
  a stack overflow.  It is useful to be used in an environment with limited stack
  size e.g. the linux kernel.
! .IP \fB\-mwarn\-dynamicstack\fR 4
  .IX Item "-mwarn-dynamicstack"
! Emit a warning if the function calls \f(CW\*(C`alloca\*(C'\fR or uses dynamically\-sized
  arrays.  This is generally a bad idea with a limited stack size.
! .IP \fB\-mstack\-guard=\fR\fIstack\-guard\fR 4
  .IX Item "-mstack-guard=stack-guard"
  .PD 0
! .IP \fB\-mstack\-size=\fR\fIstack\-size\fR 4
  .IX Item "-mstack-size=stack-size"
  .PD
  If these options are provided the S/390 back end emits additional instructions in
! the function prologue that trigger a trap if the stack size is \fIstack\-guard\fR
! bytes above the \fIstack\-size\fR (remember that the stack on S/390 grows downward).
! If the \fIstack\-guard\fR option is omitted the smallest power of 2 larger than
  the frame size of the compiled function is chosen.
  These options are intended to be used to help debugging stack overflow problems.
  The additionally emitted code causes only little overhead and hence can also be
! used in production\-like systems without greater performance degradation.  The given
! values have to be exact powers of 2 and \fIstack\-size\fR has to be greater than
! \&\fIstack\-guard\fR without exceeding 64k.
  In order to be efficient the extra code makes the assumption that the stack starts
! at an address aligned to the value given by \fIstack\-size\fR.
! The \fIstack\-guard\fR option can only be used in conjunction with \fIstack\-size\fR.
! .IP \fB\-mhotpatch=\fR\fIpre\-halfwords\fR\fB,\fR\fIpost\-halfwords\fR 4
  .IX Item "-mhotpatch=pre-halfwords,post-halfwords"
! If the hotpatch option is enabled, a "hot\-patching" function
  prologue is generated for all functions in the compilation unit.
! The funtion label is prepended with the given number of two\-byte
! NOP instructions (\fIpre\-halfwords\fR, maximum 1000000).  After
! the label, 2 * \fIpost\-halfwords\fR bytes are appended, using the
! largest NOP like instructions the architecture allows (maximum
  1000000).
  .Sp
  If both arguments are zero, hotpatching is disabled.
*************** If both arguments are zero, hotpatching
*** 32711,32888 ****
  This option can be overridden for individual functions with the
  \&\f(CW\*(C`hotpatch\*(C'\fR attribute.
  .PP
! \fI\s-1SH\s0 Options\fR
  .IX Subsection "SH Options"
  .PP
! These \fB\-m\fR options are defined for the \s-1SH\s0 implementations:
! .IP "\fB\-m1\fR" 4
  .IX Item "-m1"
! Generate code for the \s-1SH1.\s0
! .IP "\fB\-m2\fR" 4
  .IX Item "-m2"
! Generate code for the \s-1SH2.\s0
! .IP "\fB\-m2e\fR" 4
  .IX Item "-m2e"
  Generate code for the SH2e.
! .IP "\fB\-m2a\-nofpu\fR" 4
  .IX Item "-m2a-nofpu"
! Generate code for the SH2a without \s-1FPU,\s0 or for a SH2a\-FPU in such a way
! that the floating-point unit is not used.
! .IP "\fB\-m2a\-single\-only\fR" 4
  .IX Item "-m2a-single-only"
! Generate code for the SH2a\-FPU, in such a way that no double-precision
! floating-point operations are used.
! .IP "\fB\-m2a\-single\fR" 4
  .IX Item "-m2a-single"
! Generate code for the SH2a\-FPU assuming the floating-point unit is in
! single-precision mode by default.
! .IP "\fB\-m2a\fR" 4
  .IX Item "-m2a"
! Generate code for the SH2a\-FPU assuming the floating-point unit is in
! double-precision mode by default.
! .IP "\fB\-m3\fR" 4
  .IX Item "-m3"
! Generate code for the \s-1SH3.\s0
! .IP "\fB\-m3e\fR" 4
  .IX Item "-m3e"
  Generate code for the SH3e.
! .IP "\fB\-m4\-nofpu\fR" 4
  .IX Item "-m4-nofpu"
! Generate code for the \s-1SH4\s0 without a floating-point unit.
! .IP "\fB\-m4\-single\-only\fR" 4
  .IX Item "-m4-single-only"
! Generate code for the \s-1SH4\s0 with a floating-point unit that only
! supports single-precision arithmetic.
! .IP "\fB\-m4\-single\fR" 4
  .IX Item "-m4-single"
! Generate code for the \s-1SH4\s0 assuming the floating-point unit is in
! single-precision mode by default.
! .IP "\fB\-m4\fR" 4
  .IX Item "-m4"
! Generate code for the \s-1SH4.\s0
! .IP "\fB\-m4\-100\fR" 4
  .IX Item "-m4-100"
! Generate code for \s-1SH4\-100.\s0
! .IP "\fB\-m4\-100\-nofpu\fR" 4
  .IX Item "-m4-100-nofpu"
! Generate code for \s-1SH4\-100\s0 in such a way that the
! floating-point unit is not used.
! .IP "\fB\-m4\-100\-single\fR" 4
  .IX Item "-m4-100-single"
! Generate code for \s-1SH4\-100\s0 assuming the floating-point unit is in
! single-precision mode by default.
! .IP "\fB\-m4\-100\-single\-only\fR" 4
  .IX Item "-m4-100-single-only"
! Generate code for \s-1SH4\-100\s0 in such a way that no double-precision
! floating-point operations are used.
! .IP "\fB\-m4\-200\fR" 4
  .IX Item "-m4-200"
! Generate code for \s-1SH4\-200.\s0
! .IP "\fB\-m4\-200\-nofpu\fR" 4
  .IX Item "-m4-200-nofpu"
! Generate code for \s-1SH4\-200\s0 without in such a way that the
! floating-point unit is not used.
! .IP "\fB\-m4\-200\-single\fR" 4
  .IX Item "-m4-200-single"
! Generate code for \s-1SH4\-200\s0 assuming the floating-point unit is in
! single-precision mode by default.
! .IP "\fB\-m4\-200\-single\-only\fR" 4
  .IX Item "-m4-200-single-only"
! Generate code for \s-1SH4\-200\s0 in such a way that no double-precision
! floating-point operations are used.
! .IP "\fB\-m4\-300\fR" 4
  .IX Item "-m4-300"
! Generate code for \s-1SH4\-300.\s0
! .IP "\fB\-m4\-300\-nofpu\fR" 4
  .IX Item "-m4-300-nofpu"
! Generate code for \s-1SH4\-300\s0 without in such a way that the
! floating-point unit is not used.
! .IP "\fB\-m4\-300\-single\fR" 4
  .IX Item "-m4-300-single"
! Generate code for \s-1SH4\-300\s0 in such a way that no double-precision
! floating-point operations are used.
! .IP "\fB\-m4\-300\-single\-only\fR" 4
  .IX Item "-m4-300-single-only"
! Generate code for \s-1SH4\-300\s0 in such a way that no double-precision
! floating-point operations are used.
! .IP "\fB\-m4\-340\fR" 4
  .IX Item "-m4-340"
! Generate code for \s-1SH4\-340\s0 (no \s-1MMU,\s0 no \s-1FPU\s0).
! .IP "\fB\-m4\-500\fR" 4
  .IX Item "-m4-500"
! Generate code for \s-1SH4\-500\s0 (no \s-1FPU\s0).  Passes \fB\-isa=sh4\-nofpu\fR to the
  assembler.
! .IP "\fB\-m4a\-nofpu\fR" 4
  .IX Item "-m4a-nofpu"
  Generate code for the SH4al\-dsp, or for a SH4a in such a way that the
! floating-point unit is not used.
! .IP "\fB\-m4a\-single\-only\fR" 4
  .IX Item "-m4a-single-only"
! Generate code for the SH4a, in such a way that no double-precision
! floating-point operations are used.
! .IP "\fB\-m4a\-single\fR" 4
  .IX Item "-m4a-single"
! Generate code for the SH4a assuming the floating-point unit is in
! single-precision mode by default.
! .IP "\fB\-m4a\fR" 4
  .IX Item "-m4a"
  Generate code for the SH4a.
! .IP "\fB\-m4al\fR" 4
  .IX Item "-m4al"
  Same as \fB\-m4a\-nofpu\fR, except that it implicitly passes
! \&\fB\-dsp\fR to the assembler.  \s-1GCC\s0 doesn't generate any \s-1DSP\s0
  instructions at the moment.
! .IP "\fB\-mb\fR" 4
  .IX Item "-mb"
! Compile code for the processor in big-endian mode.
! .IP "\fB\-ml\fR" 4
  .IX Item "-ml"
! Compile code for the processor in little-endian mode.
! .IP "\fB\-mdalign\fR" 4
  .IX Item "-mdalign"
  Align doubles at 64\-bit boundaries.  Note that this changes the calling
  conventions, and thus some functions from the standard C library do
  not work unless you recompile it first with \fB\-mdalign\fR.
! .IP "\fB\-mrelax\fR" 4
  .IX Item "-mrelax"
  Shorten some address references at link time, when possible; uses the
  linker option \fB\-relax\fR.
! .IP "\fB\-mbigtable\fR" 4
  .IX Item "-mbigtable"
  Use 32\-bit offsets in \f(CW\*(C`switch\*(C'\fR tables.  The default is to use
  16\-bit offsets.
! .IP "\fB\-mbitops\fR" 4
  .IX Item "-mbitops"
! Enable the use of bit manipulation instructions on \s-1SH2A.\s0
! .IP "\fB\-mfmovd\fR" 4
  .IX Item "-mfmovd"
  Enable the use of the instruction \f(CW\*(C`fmovd\*(C'\fR.  Check \fB\-mdalign\fR for
  alignment constraints.
! .IP "\fB\-mrenesas\fR" 4
  .IX Item "-mrenesas"
  Comply with the calling conventions defined by Renesas.
! .IP "\fB\-mno\-renesas\fR" 4
  .IX Item "-mno-renesas"
! Comply with the calling conventions defined for \s-1GCC\s0 before the Renesas
  conventions were available.  This option is the default for all
! targets of the \s-1SH\s0 toolchain.
! .IP "\fB\-mnomacsave\fR" 4
  .IX Item "-mnomacsave"
! Mark the \f(CW\*(C`MAC\*(C'\fR register as call-clobbered, even if
  \&\fB\-mrenesas\fR is given.
! .IP "\fB\-mieee\fR" 4
  .IX Item "-mieee"
  .PD 0
! .IP "\fB\-mno\-ieee\fR" 4
  .IX Item "-mno-ieee"
  .PD
! Control the \s-1IEEE\s0 compliance of floating-point comparisons, which affects the
  handling of cases where the result of a comparison is unordered.  By default
  \&\fB\-mieee\fR is implicitly enabled.  If \fB\-ffinite\-math\-only\fR is
  enabled \fB\-mno\-ieee\fR is implicitly set, which results in faster
! floating-point greater-equal and less-equal comparisons.  The implicit settings
  can be overridden by specifying either \fB\-mieee\fR or \fB\-mno\-ieee\fR.
! .IP "\fB\-minline\-ic_invalidate\fR" 4
  .IX Item "-minline-ic_invalidate"
  Inline code to invalidate instruction cache entries after setting up
  nested function trampolines.
--- 32646,32823 ----
  This option can be overridden for individual functions with the
  \&\f(CW\*(C`hotpatch\*(C'\fR attribute.
  .PP
! \fISH Options\fR
  .IX Subsection "SH Options"
  .PP
! These \fB\-m\fR options are defined for the SH implementations:
! .IP \fB\-m1\fR 4
  .IX Item "-m1"
! Generate code for the SH1.
! .IP \fB\-m2\fR 4
  .IX Item "-m2"
! Generate code for the SH2.
! .IP \fB\-m2e\fR 4
  .IX Item "-m2e"
  Generate code for the SH2e.
! .IP \fB\-m2a\-nofpu\fR 4
  .IX Item "-m2a-nofpu"
! Generate code for the SH2a without FPU, or for a SH2a\-FPU in such a way
! that the floating\-point unit is not used.
! .IP \fB\-m2a\-single\-only\fR 4
  .IX Item "-m2a-single-only"
! Generate code for the SH2a\-FPU, in such a way that no double\-precision
! floating\-point operations are used.
! .IP \fB\-m2a\-single\fR 4
  .IX Item "-m2a-single"
! Generate code for the SH2a\-FPU assuming the floating\-point unit is in
! single\-precision mode by default.
! .IP \fB\-m2a\fR 4
  .IX Item "-m2a"
! Generate code for the SH2a\-FPU assuming the floating\-point unit is in
! double\-precision mode by default.
! .IP \fB\-m3\fR 4
  .IX Item "-m3"
! Generate code for the SH3.
! .IP \fB\-m3e\fR 4
  .IX Item "-m3e"
  Generate code for the SH3e.
! .IP \fB\-m4\-nofpu\fR 4
  .IX Item "-m4-nofpu"
! Generate code for the SH4 without a floating\-point unit.
! .IP \fB\-m4\-single\-only\fR 4
  .IX Item "-m4-single-only"
! Generate code for the SH4 with a floating\-point unit that only
! supports single\-precision arithmetic.
! .IP \fB\-m4\-single\fR 4
  .IX Item "-m4-single"
! Generate code for the SH4 assuming the floating\-point unit is in
! single\-precision mode by default.
! .IP \fB\-m4\fR 4
  .IX Item "-m4"
! Generate code for the SH4.
! .IP \fB\-m4\-100\fR 4
  .IX Item "-m4-100"
! Generate code for SH4\-100.
! .IP \fB\-m4\-100\-nofpu\fR 4
  .IX Item "-m4-100-nofpu"
! Generate code for SH4\-100 in such a way that the
! floating\-point unit is not used.
! .IP \fB\-m4\-100\-single\fR 4
  .IX Item "-m4-100-single"
! Generate code for SH4\-100 assuming the floating\-point unit is in
! single\-precision mode by default.
! .IP \fB\-m4\-100\-single\-only\fR 4
  .IX Item "-m4-100-single-only"
! Generate code for SH4\-100 in such a way that no double\-precision
! floating\-point operations are used.
! .IP \fB\-m4\-200\fR 4
  .IX Item "-m4-200"
! Generate code for SH4\-200.
! .IP \fB\-m4\-200\-nofpu\fR 4
  .IX Item "-m4-200-nofpu"
! Generate code for SH4\-200 without in such a way that the
! floating\-point unit is not used.
! .IP \fB\-m4\-200\-single\fR 4
  .IX Item "-m4-200-single"
! Generate code for SH4\-200 assuming the floating\-point unit is in
! single\-precision mode by default.
! .IP \fB\-m4\-200\-single\-only\fR 4
  .IX Item "-m4-200-single-only"
! Generate code for SH4\-200 in such a way that no double\-precision
! floating\-point operations are used.
! .IP \fB\-m4\-300\fR 4
  .IX Item "-m4-300"
! Generate code for SH4\-300.
! .IP \fB\-m4\-300\-nofpu\fR 4
  .IX Item "-m4-300-nofpu"
! Generate code for SH4\-300 without in such a way that the
! floating\-point unit is not used.
! .IP \fB\-m4\-300\-single\fR 4
  .IX Item "-m4-300-single"
! Generate code for SH4\-300 in such a way that no double\-precision
! floating\-point operations are used.
! .IP \fB\-m4\-300\-single\-only\fR 4
  .IX Item "-m4-300-single-only"
! Generate code for SH4\-300 in such a way that no double\-precision
! floating\-point operations are used.
! .IP \fB\-m4\-340\fR 4
  .IX Item "-m4-340"
! Generate code for SH4\-340 (no MMU, no FPU).
! .IP \fB\-m4\-500\fR 4
  .IX Item "-m4-500"
! Generate code for SH4\-500 (no FPU).  Passes \fB\-isa=sh4\-nofpu\fR to the
  assembler.
! .IP \fB\-m4a\-nofpu\fR 4
  .IX Item "-m4a-nofpu"
  Generate code for the SH4al\-dsp, or for a SH4a in such a way that the
! floating\-point unit is not used.
! .IP \fB\-m4a\-single\-only\fR 4
  .IX Item "-m4a-single-only"
! Generate code for the SH4a, in such a way that no double\-precision
! floating\-point operations are used.
! .IP \fB\-m4a\-single\fR 4
  .IX Item "-m4a-single"
! Generate code for the SH4a assuming the floating\-point unit is in
! single\-precision mode by default.
! .IP \fB\-m4a\fR 4
  .IX Item "-m4a"
  Generate code for the SH4a.
! .IP \fB\-m4al\fR 4
  .IX Item "-m4al"
  Same as \fB\-m4a\-nofpu\fR, except that it implicitly passes
! \&\fB\-dsp\fR to the assembler.  GCC doesn\*(Aqt generate any DSP
  instructions at the moment.
! .IP \fB\-mb\fR 4
  .IX Item "-mb"
! Compile code for the processor in big\-endian mode.
! .IP \fB\-ml\fR 4
  .IX Item "-ml"
! Compile code for the processor in little\-endian mode.
! .IP \fB\-mdalign\fR 4
  .IX Item "-mdalign"
  Align doubles at 64\-bit boundaries.  Note that this changes the calling
  conventions, and thus some functions from the standard C library do
  not work unless you recompile it first with \fB\-mdalign\fR.
! .IP \fB\-mrelax\fR 4
  .IX Item "-mrelax"
  Shorten some address references at link time, when possible; uses the
  linker option \fB\-relax\fR.
! .IP \fB\-mbigtable\fR 4
  .IX Item "-mbigtable"
  Use 32\-bit offsets in \f(CW\*(C`switch\*(C'\fR tables.  The default is to use
  16\-bit offsets.
! .IP \fB\-mbitops\fR 4
  .IX Item "-mbitops"
! Enable the use of bit manipulation instructions on SH2A.
! .IP \fB\-mfmovd\fR 4
  .IX Item "-mfmovd"
  Enable the use of the instruction \f(CW\*(C`fmovd\*(C'\fR.  Check \fB\-mdalign\fR for
  alignment constraints.
! .IP \fB\-mrenesas\fR 4
  .IX Item "-mrenesas"
  Comply with the calling conventions defined by Renesas.
! .IP \fB\-mno\-renesas\fR 4
  .IX Item "-mno-renesas"
! Comply with the calling conventions defined for GCC before the Renesas
  conventions were available.  This option is the default for all
! targets of the SH toolchain.
! .IP \fB\-mnomacsave\fR 4
  .IX Item "-mnomacsave"
! Mark the \f(CW\*(C`MAC\*(C'\fR register as call\-clobbered, even if
  \&\fB\-mrenesas\fR is given.
! .IP \fB\-mieee\fR 4
  .IX Item "-mieee"
  .PD 0
! .IP \fB\-mno\-ieee\fR 4
  .IX Item "-mno-ieee"
  .PD
! Control the IEEE compliance of floating\-point comparisons, which affects the
  handling of cases where the result of a comparison is unordered.  By default
  \&\fB\-mieee\fR is implicitly enabled.  If \fB\-ffinite\-math\-only\fR is
  enabled \fB\-mno\-ieee\fR is implicitly set, which results in faster
! floating\-point greater\-equal and less\-equal comparisons.  The implicit settings
  can be overridden by specifying either \fB\-mieee\fR or \fB\-mno\-ieee\fR.
! .IP \fB\-minline\-ic_invalidate\fR 4
  .IX Item "-minline-ic_invalidate"
  Inline code to invalidate instruction cache entries after setting up
  nested function trampolines.
*************** If the selected code generation option d
*** 32893,32960 ****
  instruction, and \fB\-musermode\fR is not in effect, the inlined code
  manipulates the instruction cache address array directly with an associative
  write.  This not only requires privileged mode at run time, but it also
! fails if the cache line had been mapped via the \s-1TLB\s0 and has become unmapped.
! .IP "\fB\-misize\fR" 4
  .IX Item "-misize"
  Dump instruction size and location in the assembly code.
! .IP "\fB\-mpadstruct\fR" 4
  .IX Item "-mpadstruct"
  This option is deprecated.  It pads structures to multiple of 4 bytes,
! which is incompatible with the \s-1SH ABI.\s0
! .IP "\fB\-matomic\-model=\fR\fImodel\fR" 4
  .IX Item "-matomic-model=model"
  Sets the model of atomic operations and additional parameters as a comma
! separated list.  For details on the atomic built-in functions see
  \&\fB_\|_atomic Builtins\fR.  The following models and parameters are supported:
  .RS 4
! .IP "\fBnone\fR" 4
  .IX Item "none"
  Disable compiler generated atomic sequences and emit library calls for atomic
  operations.  This is the default if the target is not \f(CW\*(C`sh*\-*\-linux*\*(C'\fR.
! .IP "\fBsoft-gusa\fR" 4
  .IX Item "soft-gusa"
  Generate GNU/Linux compatible gUSA software atomic sequences for the atomic
! built-in functions.  The generated atomic sequences require additional support
  from the interrupt/exception handling code of the system and are only suitable
! for SH3* and SH4* single-core systems.  This option is enabled by default when
! the target is \f(CW\*(C`sh*\-*\-linux*\*(C'\fR and SH3* or SH4*.  When the target is \s-1SH4A,\s0
  this option also partially utilizes the hardware atomic instructions
  \&\f(CW\*(C`movli.l\*(C'\fR and \f(CW\*(C`movco.l\*(C'\fR to create more efficient code, unless
  \&\fBstrict\fR is specified.
! .IP "\fBsoft-tcb\fR" 4
  .IX Item "soft-tcb"
  Generate software atomic sequences that use a variable in the thread control
  block.  This is a variation of the gUSA sequences which can also be used on
  SH1* and SH2* targets.  The generated atomic sequences require additional
  support from the interrupt/exception handling code of the system and are only
! suitable for single-core systems.  When using this model, the \fBgbr\-offset=\fR
  parameter has to be specified as well.
! .IP "\fBsoft-imask\fR" 4
  .IX Item "soft-imask"
  Generate software atomic sequences that temporarily disable interrupts by
  setting \f(CW\*(C`SR.IMASK = 1111\*(C'\fR.  This model works only when the program runs
! in privileged mode and is only suitable for single-core systems.  Additional
  support from the interrupt/exception handling code of the system is not
  required.  This model is enabled by default when the target is
  \&\f(CW\*(C`sh*\-*\-linux*\*(C'\fR and SH1* or SH2*.
! .IP "\fBhard-llcs\fR" 4
  .IX Item "hard-llcs"
  Generate hardware atomic sequences using the \f(CW\*(C`movli.l\*(C'\fR and \f(CW\*(C`movco.l\*(C'\fR
! instructions only.  This is only available on \s-1SH4A\s0 and is suitable for
! multi-core systems.  Since the hardware instructions support only 32 bit atomic
  variables access to 8 or 16 bit variables is emulated with 32 bit accesses.
  Code compiled with this option is also compatible with other software
! atomic model interrupt/exception handling systems if executed on an \s-1SH4A\s0
  system.  Additional support from the interrupt/exception handling code of the
  system is not required for this model.
! .IP "\fBgbr\-offset=\fR" 4
  .IX Item "gbr-offset="
  This parameter specifies the offset in bytes of the variable in the thread
  control block structure that should be used by the generated atomic sequences
! when the \fBsoft-tcb\fR model has been selected.  For other models this
  parameter is ignored.  The specified value must be an integer multiple of four
  and in the range 0\-1020.
! .IP "\fBstrict\fR" 4
  .IX Item "strict"
  This parameter prevents mixed usage of multiple atomic models, even if they
  are compatible, and makes the compiler generate atomic sequences of the
--- 32828,32895 ----
  instruction, and \fB\-musermode\fR is not in effect, the inlined code
  manipulates the instruction cache address array directly with an associative
  write.  This not only requires privileged mode at run time, but it also
! fails if the cache line had been mapped via the TLB and has become unmapped.
! .IP \fB\-misize\fR 4
  .IX Item "-misize"
  Dump instruction size and location in the assembly code.
! .IP \fB\-mpadstruct\fR 4
  .IX Item "-mpadstruct"
  This option is deprecated.  It pads structures to multiple of 4 bytes,
! which is incompatible with the SH ABI.
! .IP \fB\-matomic\-model=\fR\fImodel\fR 4
  .IX Item "-matomic-model=model"
  Sets the model of atomic operations and additional parameters as a comma
! separated list.  For details on the atomic built\-in functions see
  \&\fB_\|_atomic Builtins\fR.  The following models and parameters are supported:
  .RS 4
! .IP \fBnone\fR 4
  .IX Item "none"
  Disable compiler generated atomic sequences and emit library calls for atomic
  operations.  This is the default if the target is not \f(CW\*(C`sh*\-*\-linux*\*(C'\fR.
! .IP \fBsoft\-gusa\fR 4
  .IX Item "soft-gusa"
  Generate GNU/Linux compatible gUSA software atomic sequences for the atomic
! built\-in functions.  The generated atomic sequences require additional support
  from the interrupt/exception handling code of the system and are only suitable
! for SH3* and SH4* single\-core systems.  This option is enabled by default when
! the target is \f(CW\*(C`sh*\-*\-linux*\*(C'\fR and SH3* or SH4*.  When the target is SH4A,
  this option also partially utilizes the hardware atomic instructions
  \&\f(CW\*(C`movli.l\*(C'\fR and \f(CW\*(C`movco.l\*(C'\fR to create more efficient code, unless
  \&\fBstrict\fR is specified.
! .IP \fBsoft\-tcb\fR 4
  .IX Item "soft-tcb"
  Generate software atomic sequences that use a variable in the thread control
  block.  This is a variation of the gUSA sequences which can also be used on
  SH1* and SH2* targets.  The generated atomic sequences require additional
  support from the interrupt/exception handling code of the system and are only
! suitable for single\-core systems.  When using this model, the \fBgbr\-offset=\fR
  parameter has to be specified as well.
! .IP \fBsoft\-imask\fR 4
  .IX Item "soft-imask"
  Generate software atomic sequences that temporarily disable interrupts by
  setting \f(CW\*(C`SR.IMASK = 1111\*(C'\fR.  This model works only when the program runs
! in privileged mode and is only suitable for single\-core systems.  Additional
  support from the interrupt/exception handling code of the system is not
  required.  This model is enabled by default when the target is
  \&\f(CW\*(C`sh*\-*\-linux*\*(C'\fR and SH1* or SH2*.
! .IP \fBhard\-llcs\fR 4
  .IX Item "hard-llcs"
  Generate hardware atomic sequences using the \f(CW\*(C`movli.l\*(C'\fR and \f(CW\*(C`movco.l\*(C'\fR
! instructions only.  This is only available on SH4A and is suitable for
! multi\-core systems.  Since the hardware instructions support only 32 bit atomic
  variables access to 8 or 16 bit variables is emulated with 32 bit accesses.
  Code compiled with this option is also compatible with other software
! atomic model interrupt/exception handling systems if executed on an SH4A
  system.  Additional support from the interrupt/exception handling code of the
  system is not required for this model.
! .IP \fBgbr\-offset=\fR 4
  .IX Item "gbr-offset="
  This parameter specifies the offset in bytes of the variable in the thread
  control block structure that should be used by the generated atomic sequences
! when the \fBsoft\-tcb\fR model has been selected.  For other models this
  parameter is ignored.  The specified value must be an integer multiple of four
  and in the range 0\-1020.
! .IP \fBstrict\fR 4
  .IX Item "strict"
  This parameter prevents mixed usage of multiple atomic models, even if they
  are compatible, and makes the compiler generate atomic sequences of the
*************** specified model only.
*** 32962,33265 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-mtas\fR" 4
  .IX Item "-mtas"
  Generate the \f(CW\*(C`tas.b\*(C'\fR opcode for \f(CW\*(C`_\|_atomic_test_and_set\*(C'\fR.
  Notice that depending on the particular hardware and software configuration
  this can degrade overall performance due to the operand cache line flushes
! that are implied by the \f(CW\*(C`tas.b\*(C'\fR instruction.  On multi-core \s-1SH4A\s0
  processors the \f(CW\*(C`tas.b\*(C'\fR instruction must be used with caution since it
  can result in data corruption for certain cache configurations.
! .IP "\fB\-mprefergot\fR" 4
  .IX Item "-mprefergot"
! When generating position-independent code, emit function calls using
  the Global Offset Table instead of the Procedure Linkage Table.
! .IP "\fB\-musermode\fR" 4
  .IX Item "-musermode"
  .PD 0
! .IP "\fB\-mno\-usermode\fR" 4
  .IX Item "-mno-usermode"
  .PD
! Don't allow (allow) the compiler generating privileged mode code.  Specifying
  \&\fB\-musermode\fR also implies \fB\-mno\-inline\-ic_invalidate\fR if the
  inlined code would not work in user mode.  \fB\-musermode\fR is the default
  when the target is \f(CW\*(C`sh*\-*\-linux*\*(C'\fR.  If the target is SH1* or SH2*
  \&\fB\-musermode\fR has no effect, since there is no user mode.
! .IP "\fB\-multcost=\fR\fInumber\fR" 4
  .IX Item "-multcost=number"
  Set the cost to assume for a multiply insn.
! .IP "\fB\-mdiv=\fR\fIstrategy\fR" 4
  .IX Item "-mdiv=strategy"
  Set the division strategy to be used for integer division operations.
  \&\fIstrategy\fR can be one of:
  .RS 4
! .IP "\fBcall\-div1\fR" 4
  .IX Item "call-div1"
! Calls a library function that uses the single-step division instruction
  \&\f(CW\*(C`div1\*(C'\fR to perform the operation.  Division by zero calculates an
! unspecified result and does not trap.  This is the default except for \s-1SH4,
! SH2A\s0 and SHcompact.
! .IP "\fBcall-fp\fR" 4
  .IX Item "call-fp"
  Calls a library function that performs the operation in double precision
! floating point.  Division by zero causes a floating-point exception.  This is
! the default for SHcompact with \s-1FPU.\s0  Specifying this for targets that do not
! have a double precision \s-1FPU\s0 defaults to \f(CW\*(C`call\-div1\*(C'\fR.
! .IP "\fBcall-table\fR" 4
  .IX Item "call-table"
  Calls a library function that uses a lookup table for small divisors and
  the \f(CW\*(C`div1\*(C'\fR instruction with case distinction for larger divisors.  Division
  by zero calculates an unspecified result and does not trap.  This is the default
! for \s-1SH4.\s0  Specifying this for targets that do not have dynamic shift
  instructions defaults to \f(CW\*(C`call\-div1\*(C'\fR.
  .RE
  .RS 4
  .Sp
  When a division strategy has not been specified the default strategy is
! selected based on the current target.  For \s-1SH2A\s0 the default strategy is to
  use the \f(CW\*(C`divs\*(C'\fR and \f(CW\*(C`divu\*(C'\fR instructions instead of library function
  calls.
  .RE
! .IP "\fB\-maccumulate\-outgoing\-args\fR" 4
  .IX Item "-maccumulate-outgoing-args"
  Reserve space once for outgoing arguments in the function prologue rather
  than around each call.  Generally beneficial for performance and size.  Also
  needed for unwinding to avoid changing the stack frame around conditional code.
! .IP "\fB\-mdivsi3_libfunc=\fR\fIname\fR" 4
  .IX Item "-mdivsi3_libfunc=name"
  Set the name of the library function used for 32\-bit signed division to
  \&\fIname\fR.
  This only affects the name used in the \fBcall\fR division strategies, and
  the compiler still expects the same sets of input/output/clobbered registers as
  if this option were not present.
! .IP "\fB\-mfixed\-range=\fR\fIregister-range\fR" 4
  .IX Item "-mfixed-range=register-range"
  Generate code treating the given register range as fixed registers.
  A fixed register is one that the register allocator cannot use.  This is
  useful when compiling kernel code.  A register range is specified as
  two registers separated by a dash.  Multiple register ranges can be
  specified separated by a comma.
! .IP "\fB\-mbranch\-cost=\fR\fInum\fR" 4
  .IX Item "-mbranch-cost=num"
  Assume \fInum\fR to be the cost for a branch instruction.  Higher numbers
! make the compiler try to generate more branch-free code if possible.
  If not specified the value is selected depending on the processor type that
  is being compiled for.
! .IP "\fB\-mzdcbranch\fR" 4
  .IX Item "-mzdcbranch"
  .PD 0
! .IP "\fB\-mno\-zdcbranch\fR" 4
  .IX Item "-mno-zdcbranch"
  .PD
  Assume (do not assume) that zero displacement conditional branch instructions
  \&\f(CW\*(C`bt\*(C'\fR and \f(CW\*(C`bf\*(C'\fR are fast.  If \fB\-mzdcbranch\fR is specified, the
  compiler prefers zero displacement branch code sequences.  This is
! enabled by default when generating code for \s-1SH4\s0 and \s-1SH4A.\s0  It can be explicitly
  disabled by specifying \fB\-mno\-zdcbranch\fR.
! .IP "\fB\-mcbranch\-force\-delay\-slot\fR" 4
  .IX Item "-mcbranch-force-delay-slot"
  Force the usage of delay slots for conditional branches, which stuffs the delay
  slot with a \f(CW\*(C`nop\*(C'\fR if a suitable instruction cannot be found.  By default
  this option is disabled.  It can be enabled to work around hardware bugs as
! found in the original \s-1SH7055.\s0
! .IP "\fB\-mfused\-madd\fR" 4
  .IX Item "-mfused-madd"
  .PD 0
! .IP "\fB\-mno\-fused\-madd\fR" 4
  .IX Item "-mno-fused-madd"
  .PD
! Generate code that uses (does not use) the floating-point multiply and
  accumulate instructions.  These instructions are generated by default
! if hardware floating point is used.  The machine-dependent
! \&\fB\-mfused\-madd\fR option is now mapped to the machine-independent
  \&\fB\-ffp\-contract=fast\fR option, and \fB\-mno\-fused\-madd\fR is
  mapped to \fB\-ffp\-contract=off\fR.
! .IP "\fB\-mfsca\fR" 4
  .IX Item "-mfsca"
  .PD 0
! .IP "\fB\-mno\-fsca\fR" 4
  .IX Item "-mno-fsca"
  .PD
  Allow or disallow the compiler to emit the \f(CW\*(C`fsca\*(C'\fR instruction for sine
  and cosine approximations.  The option \fB\-mfsca\fR must be used in
  combination with \fB\-funsafe\-math\-optimizations\fR.  It is enabled by default
! when generating code for \s-1SH4A.\s0  Using \fB\-mno\-fsca\fR disables sine and cosine
  approximations even if \fB\-funsafe\-math\-optimizations\fR is in effect.
! .IP "\fB\-mfsrra\fR" 4
  .IX Item "-mfsrra"
  .PD 0
! .IP "\fB\-mno\-fsrra\fR" 4
  .IX Item "-mno-fsrra"
  .PD
  Allow or disallow the compiler to emit the \f(CW\*(C`fsrra\*(C'\fR instruction for
  reciprocal square root approximations.  The option \fB\-mfsrra\fR must be used
  in combination with \fB\-funsafe\-math\-optimizations\fR and
  \&\fB\-ffinite\-math\-only\fR.  It is enabled by default when generating code for
! \&\s-1SH4A.\s0  Using \fB\-mno\-fsrra\fR disables reciprocal square root approximations
  even if \fB\-funsafe\-math\-optimizations\fR and \fB\-ffinite\-math\-only\fR are
  in effect.
! .IP "\fB\-mpretend\-cmove\fR" 4
  .IX Item "-mpretend-cmove"
! Prefer zero-displacement conditional branches for conditional move instruction
! patterns.  This can result in faster code on the \s-1SH4\s0 processor.
! .IP "\fB\-mfdpic\fR" 4
  .IX Item "-mfdpic"
! Generate code using the \s-1FDPIC ABI.\s0
  .PP
  \fISolaris 2 Options\fR
  .IX Subsection "Solaris 2 Options"
  .PP
  These \fB\-m\fR options are supported on Solaris 2:
! .IP "\fB\-mclear\-hwcap\fR" 4
  .IX Item "-mclear-hwcap"
  \&\fB\-mclear\-hwcap\fR tells the compiler to remove the hardware
  capabilities generated by the Solaris assembler.  This is only necessary
! when object files use \s-1ISA\s0 extensions not supported by the current
  machine, but check at runtime whether or not to use them.
! .IP "\fB\-mimpure\-text\fR" 4
  .IX Item "-mimpure-text"
  \&\fB\-mimpure\-text\fR, used in addition to \fB\-shared\fR, tells
  the compiler to not pass \fB\-z text\fR to the linker when linking a
! shared object.  Using this option, you can link position-dependent
  code into a shared object.
  .Sp
! \&\fB\-mimpure\-text\fR suppresses the \*(L"relocations remain against
! allocatable but non-writable sections\*(R" linker error message.
! However, the necessary relocations trigger copy-on-write, and the
  shared object is not actually shared across processes.  Instead of
  using \fB\-mimpure\-text\fR, you should compile all source code with
  \&\fB\-fpic\fR or \fB\-fPIC\fR.
  .PP
  These switches are supported in addition to the above on Solaris 2:
! .IP "\fB\-pthreads\fR" 4
  .IX Item "-pthreads"
  This is a synonym for \fB\-pthread\fR.
  .PP
! \fI\s-1SPARC\s0 Options\fR
  .IX Subsection "SPARC Options"
  .PP
! These \fB\-m\fR options are supported on the \s-1SPARC:\s0
! .IP "\fB\-mno\-app\-regs\fR" 4
  .IX Item "-mno-app-regs"
  .PD 0
! .IP "\fB\-mapp\-regs\fR" 4
  .IX Item "-mapp-regs"
  .PD
  Specify \fB\-mapp\-regs\fR to generate output using the global registers
! 2 through 4, which the \s-1SPARC SVR4 ABI\s0 reserves for applications.  Like the
  global register 1, each global register 2 through 4 is then treated as an
  allocable register that is clobbered by function calls.  This is the default.
  .Sp
! To be fully \s-1SVR4\s0 ABI-compliant at the cost of some performance loss,
  specify \fB\-mno\-app\-regs\fR.  You should compile libraries and system
  software with this option.
! .IP "\fB\-mflat\fR" 4
  .IX Item "-mflat"
  .PD 0
! .IP "\fB\-mno\-flat\fR" 4
  .IX Item "-mno-flat"
  .PD
  With \fB\-mflat\fR, the compiler does not generate save/restore instructions
! and uses a \*(L"flat\*(R" or single register window model.  This model is compatible
  with the regular register window model.  The local registers and the input
! registers (0\-\-5) are still treated as \*(L"call-saved\*(R" registers and are
  saved on the stack as needed.
  .Sp
  With \fB\-mno\-flat\fR (the default), the compiler generates save/restore
  instructions (except for leaf functions).  This is the normal operating mode.
! .IP "\fB\-mfpu\fR" 4
  .IX Item "-mfpu"
  .PD 0
! .IP "\fB\-mhard\-float\fR" 4
  .IX Item "-mhard-float"
  .PD
! Generate output containing floating-point instructions.  This is the
  default.
! .IP "\fB\-mno\-fpu\fR" 4
  .IX Item "-mno-fpu"
  .PD 0
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  .PD
  Generate output containing library calls for floating point.
! \&\fBWarning:\fR the requisite libraries are not available for all \s-1SPARC\s0
! targets.  Normally the facilities of the machine's usual C compiler are
! used, but this cannot be done directly in cross-compilation.  You must make
  your own arrangements to provide suitable library functions for
! cross-compilation.  The embedded targets \fBsparc\-*\-aout\fR and
! \&\fBsparclite\-*\-*\fR do provide software floating-point support.
  .Sp
  \&\fB\-msoft\-float\fR changes the calling convention in the output file;
  therefore, it is only useful if you compile \fIall\fR of a program with
  this option.  In particular, you need to compile \fIlibgcc.a\fR, the
! library that comes with \s-1GCC,\s0 with \fB\-msoft\-float\fR in order for
  this to work.
! .IP "\fB\-mhard\-quad\-float\fR" 4
  .IX Item "-mhard-quad-float"
! Generate output containing quad-word (long double) floating-point
  instructions.
! .IP "\fB\-msoft\-quad\-float\fR" 4
  .IX Item "-msoft-quad-float"
! Generate output containing library calls for quad-word (long double)
! floating-point instructions.  The functions called are those specified
! in the \s-1SPARC ABI.\s0  This is the default.
  .Sp
! As of this writing, there are no \s-1SPARC\s0 implementations that have hardware
! support for the quad-word floating-point instructions.  They all invoke
  a trap handler for one of these instructions, and then the trap handler
  emulates the effect of the instruction.  Because of the trap handler overhead,
! this is much slower than calling the \s-1ABI\s0 library routines.  Thus the
  \&\fB\-msoft\-quad\-float\fR option is the default.
! .IP "\fB\-mno\-unaligned\-doubles\fR" 4
  .IX Item "-mno-unaligned-doubles"
  .PD 0
! .IP "\fB\-munaligned\-doubles\fR" 4
  .IX Item "-munaligned-doubles"
  .PD
  Assume that doubles have 8\-byte alignment.  This is the default.
  .Sp
! With \fB\-munaligned\-doubles\fR, \s-1GCC\s0 assumes that doubles have 8\-byte
  alignment only if they are contained in another type, or if they have an
  absolute address.  Otherwise, it assumes they have 4\-byte alignment.
  Specifying this option avoids some rare compatibility problems with code
  generated by other compilers.  It is not the default because it results
! in a performance loss, especially for floating-point code.
! .IP "\fB\-muser\-mode\fR" 4
  .IX Item "-muser-mode"
  .PD 0
! .IP "\fB\-mno\-user\-mode\fR" 4
  .IX Item "-mno-user-mode"
  .PD
  Do not generate code that can only run in supervisor mode.  This is relevant
! only for the \f(CW\*(C`casa\*(C'\fR instruction emitted for the \s-1LEON3\s0 processor.  This
  is the default.
! .IP "\fB\-mfaster\-structs\fR" 4
  .IX Item "-mfaster-structs"
  .PD 0
! .IP "\fB\-mno\-faster\-structs\fR" 4
  .IX Item "-mno-faster-structs"
  .PD
  With \fB\-mfaster\-structs\fR, the compiler assumes that structures
  should have 8\-byte alignment.  This enables the use of pairs of
  \&\f(CW\*(C`ldd\*(C'\fR and \f(CW\*(C`std\*(C'\fR instructions for copies in structure
  assignment, in place of twice as many \f(CW\*(C`ld\*(C'\fR and \f(CW\*(C`st\*(C'\fR pairs.
! However, the use of this changed alignment directly violates the \s-1SPARC
! ABI.\s0  Thus, it's intended only for use on targets where the developer
  acknowledges that their resulting code is not directly in line with
! the rules of the \s-1ABI.\s0
! .IP "\fB\-mstd\-struct\-return\fR" 4
  .IX Item "-mstd-struct-return"
  .PD 0
! .IP "\fB\-mno\-std\-struct\-return\fR" 4
  .IX Item "-mno-std-struct-return"
  .PD
  With \fB\-mstd\-struct\-return\fR, the compiler generates checking code
  in functions returning structures or unions to detect size mismatches
! between the two sides of function calls, as per the 32\-bit \s-1ABI.\s0
  .Sp
  The default is \fB\-mno\-std\-struct\-return\fR.  This option has no effect
  in 64\-bit mode.
! .IP "\fB\-mcpu=\fR\fIcpu_type\fR" 4
  .IX Item "-mcpu=cpu_type"
  Set the instruction set, register set, and instruction scheduling parameters
  for machine type \fIcpu_type\fR.  Supported values for \fIcpu_type\fR are
--- 32897,33200 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-mtas\fR 4
  .IX Item "-mtas"
  Generate the \f(CW\*(C`tas.b\*(C'\fR opcode for \f(CW\*(C`_\|_atomic_test_and_set\*(C'\fR.
  Notice that depending on the particular hardware and software configuration
  this can degrade overall performance due to the operand cache line flushes
! that are implied by the \f(CW\*(C`tas.b\*(C'\fR instruction.  On multi\-core SH4A
  processors the \f(CW\*(C`tas.b\*(C'\fR instruction must be used with caution since it
  can result in data corruption for certain cache configurations.
! .IP \fB\-mprefergot\fR 4
  .IX Item "-mprefergot"
! When generating position\-independent code, emit function calls using
  the Global Offset Table instead of the Procedure Linkage Table.
! .IP \fB\-musermode\fR 4
  .IX Item "-musermode"
  .PD 0
! .IP \fB\-mno\-usermode\fR 4
  .IX Item "-mno-usermode"
  .PD
! Don\*(Aqt allow (allow) the compiler generating privileged mode code.  Specifying
  \&\fB\-musermode\fR also implies \fB\-mno\-inline\-ic_invalidate\fR if the
  inlined code would not work in user mode.  \fB\-musermode\fR is the default
  when the target is \f(CW\*(C`sh*\-*\-linux*\*(C'\fR.  If the target is SH1* or SH2*
  \&\fB\-musermode\fR has no effect, since there is no user mode.
! .IP \fB\-multcost=\fR\fInumber\fR 4
  .IX Item "-multcost=number"
  Set the cost to assume for a multiply insn.
! .IP \fB\-mdiv=\fR\fIstrategy\fR 4
  .IX Item "-mdiv=strategy"
  Set the division strategy to be used for integer division operations.
  \&\fIstrategy\fR can be one of:
  .RS 4
! .IP \fBcall\-div1\fR 4
  .IX Item "call-div1"
! Calls a library function that uses the single\-step division instruction
  \&\f(CW\*(C`div1\*(C'\fR to perform the operation.  Division by zero calculates an
! unspecified result and does not trap.  This is the default except for SH4,
! SH2A and SHcompact.
! .IP \fBcall\-fp\fR 4
  .IX Item "call-fp"
  Calls a library function that performs the operation in double precision
! floating point.  Division by zero causes a floating\-point exception.  This is
! the default for SHcompact with FPU.  Specifying this for targets that do not
! have a double precision FPU defaults to \f(CW\*(C`call\-div1\*(C'\fR.
! .IP \fBcall\-table\fR 4
  .IX Item "call-table"
  Calls a library function that uses a lookup table for small divisors and
  the \f(CW\*(C`div1\*(C'\fR instruction with case distinction for larger divisors.  Division
  by zero calculates an unspecified result and does not trap.  This is the default
! for SH4.  Specifying this for targets that do not have dynamic shift
  instructions defaults to \f(CW\*(C`call\-div1\*(C'\fR.
  .RE
  .RS 4
  .Sp
  When a division strategy has not been specified the default strategy is
! selected based on the current target.  For SH2A the default strategy is to
  use the \f(CW\*(C`divs\*(C'\fR and \f(CW\*(C`divu\*(C'\fR instructions instead of library function
  calls.
  .RE
! .IP \fB\-maccumulate\-outgoing\-args\fR 4
  .IX Item "-maccumulate-outgoing-args"
  Reserve space once for outgoing arguments in the function prologue rather
  than around each call.  Generally beneficial for performance and size.  Also
  needed for unwinding to avoid changing the stack frame around conditional code.
! .IP \fB\-mdivsi3_libfunc=\fR\fIname\fR 4
  .IX Item "-mdivsi3_libfunc=name"
  Set the name of the library function used for 32\-bit signed division to
  \&\fIname\fR.
  This only affects the name used in the \fBcall\fR division strategies, and
  the compiler still expects the same sets of input/output/clobbered registers as
  if this option were not present.
! .IP \fB\-mfixed\-range=\fR\fIregister\-range\fR 4
  .IX Item "-mfixed-range=register-range"
  Generate code treating the given register range as fixed registers.
  A fixed register is one that the register allocator cannot use.  This is
  useful when compiling kernel code.  A register range is specified as
  two registers separated by a dash.  Multiple register ranges can be
  specified separated by a comma.
! .IP \fB\-mbranch\-cost=\fR\fInum\fR 4
  .IX Item "-mbranch-cost=num"
  Assume \fInum\fR to be the cost for a branch instruction.  Higher numbers
! make the compiler try to generate more branch\-free code if possible.
  If not specified the value is selected depending on the processor type that
  is being compiled for.
! .IP \fB\-mzdcbranch\fR 4
  .IX Item "-mzdcbranch"
  .PD 0
! .IP \fB\-mno\-zdcbranch\fR 4
  .IX Item "-mno-zdcbranch"
  .PD
  Assume (do not assume) that zero displacement conditional branch instructions
  \&\f(CW\*(C`bt\*(C'\fR and \f(CW\*(C`bf\*(C'\fR are fast.  If \fB\-mzdcbranch\fR is specified, the
  compiler prefers zero displacement branch code sequences.  This is
! enabled by default when generating code for SH4 and SH4A.  It can be explicitly
  disabled by specifying \fB\-mno\-zdcbranch\fR.
! .IP \fB\-mcbranch\-force\-delay\-slot\fR 4
  .IX Item "-mcbranch-force-delay-slot"
  Force the usage of delay slots for conditional branches, which stuffs the delay
  slot with a \f(CW\*(C`nop\*(C'\fR if a suitable instruction cannot be found.  By default
  this option is disabled.  It can be enabled to work around hardware bugs as
! found in the original SH7055.
! .IP \fB\-mfused\-madd\fR 4
  .IX Item "-mfused-madd"
  .PD 0
! .IP \fB\-mno\-fused\-madd\fR 4
  .IX Item "-mno-fused-madd"
  .PD
! Generate code that uses (does not use) the floating\-point multiply and
  accumulate instructions.  These instructions are generated by default
! if hardware floating point is used.  The machine\-dependent
! \&\fB\-mfused\-madd\fR option is now mapped to the machine\-independent
  \&\fB\-ffp\-contract=fast\fR option, and \fB\-mno\-fused\-madd\fR is
  mapped to \fB\-ffp\-contract=off\fR.
! .IP \fB\-mfsca\fR 4
  .IX Item "-mfsca"
  .PD 0
! .IP \fB\-mno\-fsca\fR 4
  .IX Item "-mno-fsca"
  .PD
  Allow or disallow the compiler to emit the \f(CW\*(C`fsca\*(C'\fR instruction for sine
  and cosine approximations.  The option \fB\-mfsca\fR must be used in
  combination with \fB\-funsafe\-math\-optimizations\fR.  It is enabled by default
! when generating code for SH4A.  Using \fB\-mno\-fsca\fR disables sine and cosine
  approximations even if \fB\-funsafe\-math\-optimizations\fR is in effect.
! .IP \fB\-mfsrra\fR 4
  .IX Item "-mfsrra"
  .PD 0
! .IP \fB\-mno\-fsrra\fR 4
  .IX Item "-mno-fsrra"
  .PD
  Allow or disallow the compiler to emit the \f(CW\*(C`fsrra\*(C'\fR instruction for
  reciprocal square root approximations.  The option \fB\-mfsrra\fR must be used
  in combination with \fB\-funsafe\-math\-optimizations\fR and
  \&\fB\-ffinite\-math\-only\fR.  It is enabled by default when generating code for
! SH4A.  Using \fB\-mno\-fsrra\fR disables reciprocal square root approximations
  even if \fB\-funsafe\-math\-optimizations\fR and \fB\-ffinite\-math\-only\fR are
  in effect.
! .IP \fB\-mpretend\-cmove\fR 4
  .IX Item "-mpretend-cmove"
! Prefer zero\-displacement conditional branches for conditional move instruction
! patterns.  This can result in faster code on the SH4 processor.
! .IP \fB\-mfdpic\fR 4
  .IX Item "-mfdpic"
! Generate code using the FDPIC ABI.
  .PP
  \fISolaris 2 Options\fR
  .IX Subsection "Solaris 2 Options"
  .PP
  These \fB\-m\fR options are supported on Solaris 2:
! .IP \fB\-mclear\-hwcap\fR 4
  .IX Item "-mclear-hwcap"
  \&\fB\-mclear\-hwcap\fR tells the compiler to remove the hardware
  capabilities generated by the Solaris assembler.  This is only necessary
! when object files use ISA extensions not supported by the current
  machine, but check at runtime whether or not to use them.
! .IP \fB\-mimpure\-text\fR 4
  .IX Item "-mimpure-text"
  \&\fB\-mimpure\-text\fR, used in addition to \fB\-shared\fR, tells
  the compiler to not pass \fB\-z text\fR to the linker when linking a
! shared object.  Using this option, you can link position\-dependent
  code into a shared object.
  .Sp
! \&\fB\-mimpure\-text\fR suppresses the "relocations remain against
! allocatable but non\-writable sections" linker error message.
! However, the necessary relocations trigger copy\-on\-write, and the
  shared object is not actually shared across processes.  Instead of
  using \fB\-mimpure\-text\fR, you should compile all source code with
  \&\fB\-fpic\fR or \fB\-fPIC\fR.
  .PP
  These switches are supported in addition to the above on Solaris 2:
! .IP \fB\-pthreads\fR 4
  .IX Item "-pthreads"
  This is a synonym for \fB\-pthread\fR.
  .PP
! \fISPARC Options\fR
  .IX Subsection "SPARC Options"
  .PP
! These \fB\-m\fR options are supported on the SPARC:
! .IP \fB\-mno\-app\-regs\fR 4
  .IX Item "-mno-app-regs"
  .PD 0
! .IP \fB\-mapp\-regs\fR 4
  .IX Item "-mapp-regs"
  .PD
  Specify \fB\-mapp\-regs\fR to generate output using the global registers
! 2 through 4, which the SPARC SVR4 ABI reserves for applications.  Like the
  global register 1, each global register 2 through 4 is then treated as an
  allocable register that is clobbered by function calls.  This is the default.
  .Sp
! To be fully SVR4 ABI\-compliant at the cost of some performance loss,
  specify \fB\-mno\-app\-regs\fR.  You should compile libraries and system
  software with this option.
! .IP \fB\-mflat\fR 4
  .IX Item "-mflat"
  .PD 0
! .IP \fB\-mno\-flat\fR 4
  .IX Item "-mno-flat"
  .PD
  With \fB\-mflat\fR, the compiler does not generate save/restore instructions
! and uses a "flat" or single register window model.  This model is compatible
  with the regular register window model.  The local registers and the input
! registers (0\-\-5) are still treated as "call\-saved" registers and are
  saved on the stack as needed.
  .Sp
  With \fB\-mno\-flat\fR (the default), the compiler generates save/restore
  instructions (except for leaf functions).  This is the normal operating mode.
! .IP \fB\-mfpu\fR 4
  .IX Item "-mfpu"
  .PD 0
! .IP \fB\-mhard\-float\fR 4
  .IX Item "-mhard-float"
  .PD
! Generate output containing floating\-point instructions.  This is the
  default.
! .IP \fB\-mno\-fpu\fR 4
  .IX Item "-mno-fpu"
  .PD 0
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  .PD
  Generate output containing library calls for floating point.
! \&\fBWarning:\fR the requisite libraries are not available for all SPARC
! targets.  Normally the facilities of the machine\*(Aqs usual C compiler are
! used, but this cannot be done directly in cross\-compilation.  You must make
  your own arrangements to provide suitable library functions for
! cross\-compilation.  The embedded targets \fBsparc\-*\-aout\fR and
! \&\fBsparclite\-*\-*\fR do provide software floating\-point support.
  .Sp
  \&\fB\-msoft\-float\fR changes the calling convention in the output file;
  therefore, it is only useful if you compile \fIall\fR of a program with
  this option.  In particular, you need to compile \fIlibgcc.a\fR, the
! library that comes with GCC, with \fB\-msoft\-float\fR in order for
  this to work.
! .IP \fB\-mhard\-quad\-float\fR 4
  .IX Item "-mhard-quad-float"
! Generate output containing quad\-word (long double) floating\-point
  instructions.
! .IP \fB\-msoft\-quad\-float\fR 4
  .IX Item "-msoft-quad-float"
! Generate output containing library calls for quad\-word (long double)
! floating\-point instructions.  The functions called are those specified
! in the SPARC ABI.  This is the default.
  .Sp
! As of this writing, there are no SPARC implementations that have hardware
! support for the quad\-word floating\-point instructions.  They all invoke
  a trap handler for one of these instructions, and then the trap handler
  emulates the effect of the instruction.  Because of the trap handler overhead,
! this is much slower than calling the ABI library routines.  Thus the
  \&\fB\-msoft\-quad\-float\fR option is the default.
! .IP \fB\-mno\-unaligned\-doubles\fR 4
  .IX Item "-mno-unaligned-doubles"
  .PD 0
! .IP \fB\-munaligned\-doubles\fR 4
  .IX Item "-munaligned-doubles"
  .PD
  Assume that doubles have 8\-byte alignment.  This is the default.
  .Sp
! With \fB\-munaligned\-doubles\fR, GCC assumes that doubles have 8\-byte
  alignment only if they are contained in another type, or if they have an
  absolute address.  Otherwise, it assumes they have 4\-byte alignment.
  Specifying this option avoids some rare compatibility problems with code
  generated by other compilers.  It is not the default because it results
! in a performance loss, especially for floating\-point code.
! .IP \fB\-muser\-mode\fR 4
  .IX Item "-muser-mode"
  .PD 0
! .IP \fB\-mno\-user\-mode\fR 4
  .IX Item "-mno-user-mode"
  .PD
  Do not generate code that can only run in supervisor mode.  This is relevant
! only for the \f(CW\*(C`casa\*(C'\fR instruction emitted for the LEON3 processor.  This
  is the default.
! .IP \fB\-mfaster\-structs\fR 4
  .IX Item "-mfaster-structs"
  .PD 0
! .IP \fB\-mno\-faster\-structs\fR 4
  .IX Item "-mno-faster-structs"
  .PD
  With \fB\-mfaster\-structs\fR, the compiler assumes that structures
  should have 8\-byte alignment.  This enables the use of pairs of
  \&\f(CW\*(C`ldd\*(C'\fR and \f(CW\*(C`std\*(C'\fR instructions for copies in structure
  assignment, in place of twice as many \f(CW\*(C`ld\*(C'\fR and \f(CW\*(C`st\*(C'\fR pairs.
! However, the use of this changed alignment directly violates the SPARC
! ABI.  Thus, it\*(Aqs intended only for use on targets where the developer
  acknowledges that their resulting code is not directly in line with
! the rules of the ABI.
! .IP \fB\-mstd\-struct\-return\fR 4
  .IX Item "-mstd-struct-return"
  .PD 0
! .IP \fB\-mno\-std\-struct\-return\fR 4
  .IX Item "-mno-std-struct-return"
  .PD
  With \fB\-mstd\-struct\-return\fR, the compiler generates checking code
  in functions returning structures or unions to detect size mismatches
! between the two sides of function calls, as per the 32\-bit ABI.
  .Sp
  The default is \fB\-mno\-std\-struct\-return\fR.  This option has no effect
  in 64\-bit mode.
! .IP \fB\-mcpu=\fR\fIcpu_type\fR 4
  .IX Item "-mcpu=cpu_type"
  Set the instruction set, register set, and instruction scheduling parameters
  for machine type \fIcpu_type\fR.  Supported values for \fIcpu_type\fR are
*************** for machine type \fIcpu_type\fR.  Suppor
*** 33272,33278 ****
  .Sp
  Native Solaris and GNU/Linux toolchains also support the value \fBnative\fR,
  which selects the best architecture option for the host processor.
! \&\fB\-mcpu=native\fR has no effect if \s-1GCC\s0 does not recognize
  the processor.
  .Sp
  Default instruction scheduling parameters are used for values that select
--- 33207,33213 ----
  .Sp
  Native Solaris and GNU/Linux toolchains also support the value \fBnative\fR,
  which selects the best architecture option for the host processor.
! \&\fB\-mcpu=native\fR has no effect if GCC does not recognize
  the processor.
  .Sp
  Default instruction scheduling parameters are used for values that select
*************** an architecture and not an implementatio
*** 33282,33336 ****
  Here is a list of each supported architecture and their supported
  implementations.
  .RS 4
! .IP "v7" 4
  .IX Item "v7"
  cypress, leon3v7
! .IP "v8" 4
  .IX Item "v8"
  supersparc, hypersparc, leon, leon3, leon5
! .IP "sparclite" 4
  .IX Item "sparclite"
  f930, f934, sparclite86x
! .IP "sparclet" 4
  .IX Item "sparclet"
  tsc701
! .IP "v9" 4
  .IX Item "v9"
  ultrasparc, ultrasparc3, niagara, niagara2, niagara3, niagara4,
  niagara7, m8
  .RE
  .RS 4
  .Sp
! By default (unless configured otherwise), \s-1GCC\s0 generates code for the V7
! variant of the \s-1SPARC\s0 architecture.  With \fB\-mcpu=cypress\fR, the compiler
! additionally optimizes it for the Cypress \s-1CY7C602\s0 chip, as used in the
  SPARCStation/SPARCServer 3xx series.  This is also appropriate for the older
! SPARCStation 1, 2, \s-1IPX\s0 etc.
  .Sp
! With \fB\-mcpu=v8\fR, \s-1GCC\s0 generates code for the V8 variant of the \s-1SPARC\s0
  architecture.  The only difference from V7 code is that the compiler emits
! the integer multiply and integer divide instructions which exist in \s-1SPARC\-V8\s0
! but not in \s-1SPARC\-V7.\s0  With \fB\-mcpu=supersparc\fR, the compiler additionally
  optimizes it for the SuperSPARC chip, as used in the SPARCStation 10, 1000 and
  2000 series.
  .Sp
! With \fB\-mcpu=sparclite\fR, \s-1GCC\s0 generates code for the SPARClite variant of
! the \s-1SPARC\s0 architecture.  This adds the integer multiply, integer divide step
! and scan (\f(CW\*(C`ffs\*(C'\fR) instructions which exist in SPARClite but not in \s-1SPARC\-V7.\s0
  With \fB\-mcpu=f930\fR, the compiler additionally optimizes it for the
! Fujitsu \s-1MB86930\s0 chip, which is the original SPARClite, with no \s-1FPU.\s0  With
  \&\fB\-mcpu=f934\fR, the compiler additionally optimizes it for the Fujitsu
! \&\s-1MB86934\s0 chip, which is the more recent SPARClite with \s-1FPU.\s0
  .Sp
! With \fB\-mcpu=sparclet\fR, \s-1GCC\s0 generates code for the SPARClet variant of
! the \s-1SPARC\s0 architecture.  This adds the integer multiply, multiply/accumulate,
  integer divide step and scan (\f(CW\*(C`ffs\*(C'\fR) instructions which exist in SPARClet
! but not in \s-1SPARC\-V7.\s0  With \fB\-mcpu=tsc701\fR, the compiler additionally
! optimizes it for the \s-1TEMIC\s0 SPARClet chip.
  .Sp
! With \fB\-mcpu=v9\fR, \s-1GCC\s0 generates code for the V9 variant of the \s-1SPARC\s0
! architecture.  This adds 64\-bit integer and floating-point move instructions,
! 3 additional floating-point condition code registers and conditional move
  instructions.  With \fB\-mcpu=ultrasparc\fR, the compiler additionally
  optimizes it for the Sun UltraSPARC I/II/IIi chips.  With
  \&\fB\-mcpu=ultrasparc3\fR, the compiler additionally optimizes it for the
--- 33217,33271 ----
  Here is a list of each supported architecture and their supported
  implementations.
  .RS 4
! .IP v7 4
  .IX Item "v7"
  cypress, leon3v7
! .IP v8 4
  .IX Item "v8"
  supersparc, hypersparc, leon, leon3, leon5
! .IP sparclite 4
  .IX Item "sparclite"
  f930, f934, sparclite86x
! .IP sparclet 4
  .IX Item "sparclet"
  tsc701
! .IP v9 4
  .IX Item "v9"
  ultrasparc, ultrasparc3, niagara, niagara2, niagara3, niagara4,
  niagara7, m8
  .RE
  .RS 4
  .Sp
! By default (unless configured otherwise), GCC generates code for the V7
! variant of the SPARC architecture.  With \fB\-mcpu=cypress\fR, the compiler
! additionally optimizes it for the Cypress CY7C602 chip, as used in the
  SPARCStation/SPARCServer 3xx series.  This is also appropriate for the older
! SPARCStation 1, 2, IPX etc.
  .Sp
! With \fB\-mcpu=v8\fR, GCC generates code for the V8 variant of the SPARC
  architecture.  The only difference from V7 code is that the compiler emits
! the integer multiply and integer divide instructions which exist in SPARC\-V8
! but not in SPARC\-V7.  With \fB\-mcpu=supersparc\fR, the compiler additionally
  optimizes it for the SuperSPARC chip, as used in the SPARCStation 10, 1000 and
  2000 series.
  .Sp
! With \fB\-mcpu=sparclite\fR, GCC generates code for the SPARClite variant of
! the SPARC architecture.  This adds the integer multiply, integer divide step
! and scan (\f(CW\*(C`ffs\*(C'\fR) instructions which exist in SPARClite but not in SPARC\-V7.
  With \fB\-mcpu=f930\fR, the compiler additionally optimizes it for the
! Fujitsu MB86930 chip, which is the original SPARClite, with no FPU.  With
  \&\fB\-mcpu=f934\fR, the compiler additionally optimizes it for the Fujitsu
! MB86934 chip, which is the more recent SPARClite with FPU.
  .Sp
! With \fB\-mcpu=sparclet\fR, GCC generates code for the SPARClet variant of
! the SPARC architecture.  This adds the integer multiply, multiply/accumulate,
  integer divide step and scan (\f(CW\*(C`ffs\*(C'\fR) instructions which exist in SPARClet
! but not in SPARC\-V7.  With \fB\-mcpu=tsc701\fR, the compiler additionally
! optimizes it for the TEMIC SPARClet chip.
  .Sp
! With \fB\-mcpu=v9\fR, GCC generates code for the V9 variant of the SPARC
! architecture.  This adds 64\-bit integer and floating\-point move instructions,
! 3 additional floating\-point condition code registers and conditional move
  instructions.  With \fB\-mcpu=ultrasparc\fR, the compiler additionally
  optimizes it for the Sun UltraSPARC I/II/IIi chips.  With
  \&\fB\-mcpu=ultrasparc3\fR, the compiler additionally optimizes it for the
*************** additionally optimizes it for Sun UltraS
*** 33342,33351 ****
  UltraSPARC T3 chips.  With \fB\-mcpu=niagara4\fR, the compiler
  additionally optimizes it for Sun UltraSPARC T4 chips.  With
  \&\fB\-mcpu=niagara7\fR, the compiler additionally optimizes it for
! Oracle \s-1SPARC M7\s0 chips.  With \fB\-mcpu=m8\fR, the compiler
  additionally optimizes it for Oracle M8 chips.
  .RE
! .IP "\fB\-mtune=\fR\fIcpu_type\fR" 4
  .IX Item "-mtune=cpu_type"
  Set the instruction scheduling parameters for machine type
  \&\fIcpu_type\fR, but do not set the instruction set or register set that the
--- 33277,33286 ----
  UltraSPARC T3 chips.  With \fB\-mcpu=niagara4\fR, the compiler
  additionally optimizes it for Sun UltraSPARC T4 chips.  With
  \&\fB\-mcpu=niagara7\fR, the compiler additionally optimizes it for
! Oracle SPARC M7 chips.  With \fB\-mcpu=m8\fR, the compiler
  additionally optimizes it for Oracle M8 chips.
  .RE
! .IP \fB\-mtune=\fR\fIcpu_type\fR 4
  .IX Item "-mtune=cpu_type"
  Set the instruction scheduling parameters for machine type
  \&\fIcpu_type\fR, but do not set the instruction set or register set that the
*************** option \fB\-mcpu=\fR\fIcpu_type\fR does.
*** 33353,33585 ****
  .Sp
  The same values for \fB\-mcpu=\fR\fIcpu_type\fR can be used for
  \&\fB\-mtune=\fR\fIcpu_type\fR, but the only useful values are those
! that select a particular \s-1CPU\s0 implementation.  Those are
  \&\fBcypress\fR, \fBsupersparc\fR, \fBhypersparc\fR, \fBleon\fR,
  \&\fBleon3\fR, \fBleon3v7\fR, \fBleon5\fR, \fBf930\fR, \fBf934\fR,
  \&\fBsparclite86x\fR, \fBtsc701\fR, \fBultrasparc\fR,
  \&\fBultrasparc3\fR, \fBniagara\fR, \fBniagara2\fR, \fBniagara3\fR,
  \&\fBniagara4\fR, \fBniagara7\fR and \fBm8\fR.  With native Solaris
  and GNU/Linux toolchains, \fBnative\fR can also be used.
! .IP "\fB\-mv8plus\fR" 4
  .IX Item "-mv8plus"
  .PD 0
! .IP "\fB\-mno\-v8plus\fR" 4
  .IX Item "-mno-v8plus"
  .PD
! With \fB\-mv8plus\fR, \s-1GCC\s0 generates code for the \s-1SPARC\-V8+ ABI.\s0  The
! difference from the V8 \s-1ABI\s0 is that the global and out registers are
  considered 64 bits wide.  This is enabled by default on Solaris in 32\-bit
! mode for all \s-1SPARC\-V9\s0 processors.
! .IP "\fB\-mvis\fR" 4
  .IX Item "-mvis"
  .PD 0
! .IP "\fB\-mno\-vis\fR" 4
  .IX Item "-mno-vis"
  .PD
! With \fB\-mvis\fR, \s-1GCC\s0 generates code that takes advantage of the UltraSPARC
  Visual Instruction Set extensions.  The default is \fB\-mno\-vis\fR.
! .IP "\fB\-mvis2\fR" 4
  .IX Item "-mvis2"
  .PD 0
! .IP "\fB\-mno\-vis2\fR" 4
  .IX Item "-mno-vis2"
  .PD
! With \fB\-mvis2\fR, \s-1GCC\s0 generates code that takes advantage of
  version 2.0 of the UltraSPARC Visual Instruction Set extensions.  The
  default is \fB\-mvis2\fR when targeting a cpu that supports such
! instructions, such as UltraSPARC-III and later.  Setting \fB\-mvis2\fR
  also sets \fB\-mvis\fR.
! .IP "\fB\-mvis3\fR" 4
  .IX Item "-mvis3"
  .PD 0
! .IP "\fB\-mno\-vis3\fR" 4
  .IX Item "-mno-vis3"
  .PD
! With \fB\-mvis3\fR, \s-1GCC\s0 generates code that takes advantage of
  version 3.0 of the UltraSPARC Visual Instruction Set extensions.  The
  default is \fB\-mvis3\fR when targeting a cpu that supports such
  instructions, such as niagara\-3 and later.  Setting \fB\-mvis3\fR
  also sets \fB\-mvis2\fR and \fB\-mvis\fR.
! .IP "\fB\-mvis3b\fR" 4
  .IX Item "-mvis3b"
  .PD 0
! .IP "\fB\-mno\-vis3b\fR" 4
  .IX Item "-mno-vis3b"
  .PD
! With \fB\-mvis3b\fR, \s-1GCC\s0 generates code that takes advantage of
  version 3.0 of the UltraSPARC Visual Instruction Set extensions, plus
! the additional \s-1VIS\s0 instructions introduced in the Oracle \s-1SPARC\s0
  Architecture 2011. The default is \fB\-mvis3b\fR when targeting
  a cpu that supports such instructions, such as niagara\-7 and later.
  Setting \fB\-mvis3b\fR also sets \fB\-mvis3\fR, \fB\-mvis2\fR
  and \fB\-mvis\fR.
! .IP "\fB\-mvis4\fR" 4
  .IX Item "-mvis4"
  .PD 0
! .IP "\fB\-mno\-vis4\fR" 4
  .IX Item "-mno-vis4"
  .PD
! With \fB\-mvis4\fR, \s-1GCC\s0 generates code that takes advantage of
  version 4.0 of the UltraSPARC Visual Instruction Set extensions.  The
  default is \fB\-mvis4\fR when targeting a cpu that supports such
  instructions, such as niagara\-7 and later.  Setting \fB\-mvis4\fR
  also sets \fB\-mvis3b\fR, \fB\-mvis3\fR, \fB\-mvis2\fR and
  \&\fB\-mvis\fR.
! .IP "\fB\-mvis4b\fR" 4
  .IX Item "-mvis4b"
  .PD 0
! .IP "\fB\-mno\-vis4b\fR" 4
  .IX Item "-mno-vis4b"
  .PD
! With \fB\-mvis4b\fR, \s-1GCC\s0 generates code that takes advantage of
  version 4.0 of the UltraSPARC Visual Instruction Set extensions, plus
! the additional \s-1VIS\s0 instructions introduced in the Oracle \s-1SPARC\s0
  Architecture 2017.  The default is \fB\-mvis4b\fR when targeting a
  cpu that supports such instructions, such as m8 and later.  Setting
  \&\fB\-mvis4b\fR also sets \fB\-mvis4\fR, \fB\-mvis3b\fR,
  \&\fB\-mvis3\fR, \fB\-mvis2\fR and \fB\-mvis\fR.
! .IP "\fB\-mcbcond\fR" 4
  .IX Item "-mcbcond"
  .PD 0
! .IP "\fB\-mno\-cbcond\fR" 4
  .IX Item "-mno-cbcond"
  .PD
! With \fB\-mcbcond\fR, \s-1GCC\s0 generates code that takes advantage of the UltraSPARC
! Compare-and-Branch-on-Condition instructions.  The default is \fB\-mcbcond\fR
! when targeting a \s-1CPU\s0 that supports such instructions, such as Niagara\-4 and
  later.
! .IP "\fB\-mfmaf\fR" 4
  .IX Item "-mfmaf"
  .PD 0
! .IP "\fB\-mno\-fmaf\fR" 4
  .IX Item "-mno-fmaf"
  .PD
! With \fB\-mfmaf\fR, \s-1GCC\s0 generates code that takes advantage of the UltraSPARC
! Fused Multiply-Add Floating-point instructions.  The default is \fB\-mfmaf\fR
! when targeting a \s-1CPU\s0 that supports such instructions, such as Niagara\-3 and
  later.
! .IP "\fB\-mfsmuld\fR" 4
  .IX Item "-mfsmuld"
  .PD 0
! .IP "\fB\-mno\-fsmuld\fR" 4
  .IX Item "-mno-fsmuld"
  .PD
! With \fB\-mfsmuld\fR, \s-1GCC\s0 generates code that takes advantage of the
! Floating-point Multiply Single to Double (FsMULd) instruction.  The default is
! \&\fB\-mfsmuld\fR when targeting a \s-1CPU\s0 supporting the architecture versions V8
! or V9 with \s-1FPU\s0 except \fB\-mcpu=leon\fR.
! .IP "\fB\-mpopc\fR" 4
  .IX Item "-mpopc"
  .PD 0
! .IP "\fB\-mno\-popc\fR" 4
  .IX Item "-mno-popc"
  .PD
! With \fB\-mpopc\fR, \s-1GCC\s0 generates code that takes advantage of the UltraSPARC
  Population Count instruction.  The default is \fB\-mpopc\fR
! when targeting a \s-1CPU\s0 that supports such an instruction, such as Niagara\-2 and
  later.
! .IP "\fB\-msubxc\fR" 4
  .IX Item "-msubxc"
  .PD 0
! .IP "\fB\-mno\-subxc\fR" 4
  .IX Item "-mno-subxc"
  .PD
! With \fB\-msubxc\fR, \s-1GCC\s0 generates code that takes advantage of the UltraSPARC
! Subtract-Extended-with-Carry instruction.  The default is \fB\-msubxc\fR
! when targeting a \s-1CPU\s0 that supports such an instruction, such as Niagara\-7 and
  later.
! .IP "\fB\-mfix\-at697f\fR" 4
  .IX Item "-mfix-at697f"
! Enable the documented workaround for the single erratum of the Atmel \s-1AT697F\s0
! processor (which corresponds to erratum #13 of the \s-1AT697E\s0 processor).
! .IP "\fB\-mfix\-ut699\fR" 4
  .IX Item "-mfix-ut699"
! Enable the documented workarounds for the floating-point errata and the data
! cache nullify errata of the \s-1UT699\s0 processor.
! .IP "\fB\-mfix\-ut700\fR" 4
  .IX Item "-mfix-ut700"
! Enable the documented workaround for the back-to-back store errata of
! the \s-1UT699E/UT700\s0 processor.
! .IP "\fB\-mfix\-gr712rc\fR" 4
  .IX Item "-mfix-gr712rc"
! Enable the documented workaround for the back-to-back store errata of
! the \s-1GR712RC\s0 processor.
  .PP
  These \fB\-m\fR options are supported in addition to the above
! on \s-1SPARC\-V9\s0 processors in 64\-bit environments:
! .IP "\fB\-m32\fR" 4
  .IX Item "-m32"
  .PD 0
! .IP "\fB\-m64\fR" 4
  .IX Item "-m64"
  .PD
  Generate code for a 32\-bit or 64\-bit environment.
  The 32\-bit environment sets int, long and pointer to 32 bits.
  The 64\-bit environment sets int to 32 bits and long and pointer
  to 64 bits.
! .IP "\fB\-mcmodel=\fR\fIwhich\fR" 4
  .IX Item "-mcmodel=which"
  Set the code model to one of
  .RS 4
! .IP "\fBmedlow\fR" 4
  .IX Item "medlow"
  The Medium/Low code model: 64\-bit addresses, programs
  must be linked in the low 32 bits of memory.  Programs can be statically
  or dynamically linked.
! .IP "\fBmedmid\fR" 4
  .IX Item "medmid"
  The Medium/Middle code model: 64\-bit addresses, programs
  must be linked in the low 44 bits of memory, the text and data segments must
  be less than 2GB in size and the data segment must be located within 2GB of
  the text segment.
! .IP "\fBmedany\fR" 4
  .IX Item "medany"
  The Medium/Anywhere code model: 64\-bit addresses, programs
  may be linked anywhere in memory, the text and data segments must be less
  than 2GB in size and the data segment must be located within 2GB of the
  text segment.
! .IP "\fBembmedany\fR" 4
  .IX Item "embmedany"
  The Medium/Anywhere code model for embedded systems:
  64\-bit addresses, the text and data segments must be less than 2GB in
  size, both starting anywhere in memory (determined at link time).  The
  global register \f(CW%g4\fR points to the base of the data segment.  Programs
! are statically linked and \s-1PIC\s0 is not supported.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mmemory\-model=\fR\fImem-model\fR" 4
  .IX Item "-mmemory-model=mem-model"
  Set the memory model in force on the processor to one of
  .RS 4
! .IP "\fBdefault\fR" 4
  .IX Item "default"
  The default memory model for the processor and operating system.
! .IP "\fBrmo\fR" 4
  .IX Item "rmo"
  Relaxed Memory Order
! .IP "\fBpso\fR" 4
  .IX Item "pso"
  Partial Store Order
! .IP "\fBtso\fR" 4
  .IX Item "tso"
  Total Store Order
! .IP "\fBsc\fR" 4
  .IX Item "sc"
  Sequential Consistency
  .RE
  .RS 4
  .Sp
! These memory models are formally defined in Appendix D of the \s-1SPARC\-V9\s0
! architecture manual, as set in the processor's \f(CW\*(C`PSTATE.MM\*(C'\fR field.
  .RE
! .IP "\fB\-mstack\-bias\fR" 4
  .IX Item "-mstack-bias"
  .PD 0
! .IP "\fB\-mno\-stack\-bias\fR" 4
  .IX Item "-mno-stack-bias"
  .PD
! With \fB\-mstack\-bias\fR, \s-1GCC\s0 assumes that the stack pointer, and
  frame pointer if present, are offset by \-2047 which must be added back
  when making stack frame references.  This is the default in 64\-bit mode.
  Otherwise, assume no such offset is present.
--- 33288,33520 ----
  .Sp
  The same values for \fB\-mcpu=\fR\fIcpu_type\fR can be used for
  \&\fB\-mtune=\fR\fIcpu_type\fR, but the only useful values are those
! that select a particular CPU implementation.  Those are
  \&\fBcypress\fR, \fBsupersparc\fR, \fBhypersparc\fR, \fBleon\fR,
  \&\fBleon3\fR, \fBleon3v7\fR, \fBleon5\fR, \fBf930\fR, \fBf934\fR,
  \&\fBsparclite86x\fR, \fBtsc701\fR, \fBultrasparc\fR,
  \&\fBultrasparc3\fR, \fBniagara\fR, \fBniagara2\fR, \fBniagara3\fR,
  \&\fBniagara4\fR, \fBniagara7\fR and \fBm8\fR.  With native Solaris
  and GNU/Linux toolchains, \fBnative\fR can also be used.
! .IP \fB\-mv8plus\fR 4
  .IX Item "-mv8plus"
  .PD 0
! .IP \fB\-mno\-v8plus\fR 4
  .IX Item "-mno-v8plus"
  .PD
! With \fB\-mv8plus\fR, GCC generates code for the SPARC\-V8+ ABI.  The
! difference from the V8 ABI is that the global and out registers are
  considered 64 bits wide.  This is enabled by default on Solaris in 32\-bit
! mode for all SPARC\-V9 processors.
! .IP \fB\-mvis\fR 4
  .IX Item "-mvis"
  .PD 0
! .IP \fB\-mno\-vis\fR 4
  .IX Item "-mno-vis"
  .PD
! With \fB\-mvis\fR, GCC generates code that takes advantage of the UltraSPARC
  Visual Instruction Set extensions.  The default is \fB\-mno\-vis\fR.
! .IP \fB\-mvis2\fR 4
  .IX Item "-mvis2"
  .PD 0
! .IP \fB\-mno\-vis2\fR 4
  .IX Item "-mno-vis2"
  .PD
! With \fB\-mvis2\fR, GCC generates code that takes advantage of
  version 2.0 of the UltraSPARC Visual Instruction Set extensions.  The
  default is \fB\-mvis2\fR when targeting a cpu that supports such
! instructions, such as UltraSPARC\-III and later.  Setting \fB\-mvis2\fR
  also sets \fB\-mvis\fR.
! .IP \fB\-mvis3\fR 4
  .IX Item "-mvis3"
  .PD 0
! .IP \fB\-mno\-vis3\fR 4
  .IX Item "-mno-vis3"
  .PD
! With \fB\-mvis3\fR, GCC generates code that takes advantage of
  version 3.0 of the UltraSPARC Visual Instruction Set extensions.  The
  default is \fB\-mvis3\fR when targeting a cpu that supports such
  instructions, such as niagara\-3 and later.  Setting \fB\-mvis3\fR
  also sets \fB\-mvis2\fR and \fB\-mvis\fR.
! .IP \fB\-mvis3b\fR 4
  .IX Item "-mvis3b"
  .PD 0
! .IP \fB\-mno\-vis3b\fR 4
  .IX Item "-mno-vis3b"
  .PD
! With \fB\-mvis3b\fR, GCC generates code that takes advantage of
  version 3.0 of the UltraSPARC Visual Instruction Set extensions, plus
! the additional VIS instructions introduced in the Oracle SPARC
  Architecture 2011. The default is \fB\-mvis3b\fR when targeting
  a cpu that supports such instructions, such as niagara\-7 and later.
  Setting \fB\-mvis3b\fR also sets \fB\-mvis3\fR, \fB\-mvis2\fR
  and \fB\-mvis\fR.
! .IP \fB\-mvis4\fR 4
  .IX Item "-mvis4"
  .PD 0
! .IP \fB\-mno\-vis4\fR 4
  .IX Item "-mno-vis4"
  .PD
! With \fB\-mvis4\fR, GCC generates code that takes advantage of
  version 4.0 of the UltraSPARC Visual Instruction Set extensions.  The
  default is \fB\-mvis4\fR when targeting a cpu that supports such
  instructions, such as niagara\-7 and later.  Setting \fB\-mvis4\fR
  also sets \fB\-mvis3b\fR, \fB\-mvis3\fR, \fB\-mvis2\fR and
  \&\fB\-mvis\fR.
! .IP \fB\-mvis4b\fR 4
  .IX Item "-mvis4b"
  .PD 0
! .IP \fB\-mno\-vis4b\fR 4
  .IX Item "-mno-vis4b"
  .PD
! With \fB\-mvis4b\fR, GCC generates code that takes advantage of
  version 4.0 of the UltraSPARC Visual Instruction Set extensions, plus
! the additional VIS instructions introduced in the Oracle SPARC
  Architecture 2017.  The default is \fB\-mvis4b\fR when targeting a
  cpu that supports such instructions, such as m8 and later.  Setting
  \&\fB\-mvis4b\fR also sets \fB\-mvis4\fR, \fB\-mvis3b\fR,
  \&\fB\-mvis3\fR, \fB\-mvis2\fR and \fB\-mvis\fR.
! .IP \fB\-mcbcond\fR 4
  .IX Item "-mcbcond"
  .PD 0
! .IP \fB\-mno\-cbcond\fR 4
  .IX Item "-mno-cbcond"
  .PD
! With \fB\-mcbcond\fR, GCC generates code that takes advantage of the UltraSPARC
! Compare\-and\-Branch\-on\-Condition instructions.  The default is \fB\-mcbcond\fR
! when targeting a CPU that supports such instructions, such as Niagara\-4 and
  later.
! .IP \fB\-mfmaf\fR 4
  .IX Item "-mfmaf"
  .PD 0
! .IP \fB\-mno\-fmaf\fR 4
  .IX Item "-mno-fmaf"
  .PD
! With \fB\-mfmaf\fR, GCC generates code that takes advantage of the UltraSPARC
! Fused Multiply\-Add Floating\-point instructions.  The default is \fB\-mfmaf\fR
! when targeting a CPU that supports such instructions, such as Niagara\-3 and
  later.
! .IP \fB\-mfsmuld\fR 4
  .IX Item "-mfsmuld"
  .PD 0
! .IP \fB\-mno\-fsmuld\fR 4
  .IX Item "-mno-fsmuld"
  .PD
! With \fB\-mfsmuld\fR, GCC generates code that takes advantage of the
! Floating\-point Multiply Single to Double (FsMULd) instruction.  The default is
! \&\fB\-mfsmuld\fR when targeting a CPU supporting the architecture versions V8
! or V9 with FPU except \fB\-mcpu=leon\fR.
! .IP \fB\-mpopc\fR 4
  .IX Item "-mpopc"
  .PD 0
! .IP \fB\-mno\-popc\fR 4
  .IX Item "-mno-popc"
  .PD
! With \fB\-mpopc\fR, GCC generates code that takes advantage of the UltraSPARC
  Population Count instruction.  The default is \fB\-mpopc\fR
! when targeting a CPU that supports such an instruction, such as Niagara\-2 and
  later.
! .IP \fB\-msubxc\fR 4
  .IX Item "-msubxc"
  .PD 0
! .IP \fB\-mno\-subxc\fR 4
  .IX Item "-mno-subxc"
  .PD
! With \fB\-msubxc\fR, GCC generates code that takes advantage of the UltraSPARC
! Subtract\-Extended\-with\-Carry instruction.  The default is \fB\-msubxc\fR
! when targeting a CPU that supports such an instruction, such as Niagara\-7 and
  later.
! .IP \fB\-mfix\-at697f\fR 4
  .IX Item "-mfix-at697f"
! Enable the documented workaround for the single erratum of the Atmel AT697F
! processor (which corresponds to erratum #13 of the AT697E processor).
! .IP \fB\-mfix\-ut699\fR 4
  .IX Item "-mfix-ut699"
! Enable the documented workarounds for the floating\-point errata and the data
! cache nullify errata of the UT699 processor.
! .IP \fB\-mfix\-ut700\fR 4
  .IX Item "-mfix-ut700"
! Enable the documented workaround for the back\-to\-back store errata of
! the UT699E/UT700 processor.
! .IP \fB\-mfix\-gr712rc\fR 4
  .IX Item "-mfix-gr712rc"
! Enable the documented workaround for the back\-to\-back store errata of
! the GR712RC processor.
  .PP
  These \fB\-m\fR options are supported in addition to the above
! on SPARC\-V9 processors in 64\-bit environments:
! .IP \fB\-m32\fR 4
  .IX Item "-m32"
  .PD 0
! .IP \fB\-m64\fR 4
  .IX Item "-m64"
  .PD
  Generate code for a 32\-bit or 64\-bit environment.
  The 32\-bit environment sets int, long and pointer to 32 bits.
  The 64\-bit environment sets int to 32 bits and long and pointer
  to 64 bits.
! .IP \fB\-mcmodel=\fR\fIwhich\fR 4
  .IX Item "-mcmodel=which"
  Set the code model to one of
  .RS 4
! .IP \fBmedlow\fR 4
  .IX Item "medlow"
  The Medium/Low code model: 64\-bit addresses, programs
  must be linked in the low 32 bits of memory.  Programs can be statically
  or dynamically linked.
! .IP \fBmedmid\fR 4
  .IX Item "medmid"
  The Medium/Middle code model: 64\-bit addresses, programs
  must be linked in the low 44 bits of memory, the text and data segments must
  be less than 2GB in size and the data segment must be located within 2GB of
  the text segment.
! .IP \fBmedany\fR 4
  .IX Item "medany"
  The Medium/Anywhere code model: 64\-bit addresses, programs
  may be linked anywhere in memory, the text and data segments must be less
  than 2GB in size and the data segment must be located within 2GB of the
  text segment.
! .IP \fBembmedany\fR 4
  .IX Item "embmedany"
  The Medium/Anywhere code model for embedded systems:
  64\-bit addresses, the text and data segments must be less than 2GB in
  size, both starting anywhere in memory (determined at link time).  The
  global register \f(CW%g4\fR points to the base of the data segment.  Programs
! are statically linked and PIC is not supported.
  .RE
  .RS 4
  .RE
! .IP \fB\-mmemory\-model=\fR\fImem\-model\fR 4
  .IX Item "-mmemory-model=mem-model"
  Set the memory model in force on the processor to one of
  .RS 4
! .IP \fBdefault\fR 4
  .IX Item "default"
  The default memory model for the processor and operating system.
! .IP \fBrmo\fR 4
  .IX Item "rmo"
  Relaxed Memory Order
! .IP \fBpso\fR 4
  .IX Item "pso"
  Partial Store Order
! .IP \fBtso\fR 4
  .IX Item "tso"
  Total Store Order
! .IP \fBsc\fR 4
  .IX Item "sc"
  Sequential Consistency
  .RE
  .RS 4
  .Sp
! These memory models are formally defined in Appendix D of the SPARC\-V9
! architecture manual, as set in the processor\*(Aqs \f(CW\*(C`PSTATE.MM\*(C'\fR field.
  .RE
! .IP \fB\-mstack\-bias\fR 4
  .IX Item "-mstack-bias"
  .PD 0
! .IP \fB\-mno\-stack\-bias\fR 4
  .IX Item "-mno-stack-bias"
  .PD
! With \fB\-mstack\-bias\fR, GCC assumes that the stack pointer, and
  frame pointer if present, are offset by \-2047 which must be added back
  when making stack frame references.  This is the default in 64\-bit mode.
  Otherwise, assume no such offset is present.
*************** Otherwise, assume no such offset is pres
*** 33589,33611 ****
  .PP
  These additional options are available on System V Release 4 for
  compatibility with other compilers on those systems:
! .IP "\fB\-G\fR" 4
  .IX Item "-G"
  Create a shared object.
  It is recommended that \fB\-symbolic\fR or \fB\-shared\fR be used instead.
! .IP "\fB\-Qy\fR" 4
  .IX Item "-Qy"
  Identify the versions of each tool used by the compiler, in a
  \&\f(CW\*(C`.ident\*(C'\fR assembler directive in the output.
! .IP "\fB\-Qn\fR" 4
  .IX Item "-Qn"
  Refrain from adding \f(CW\*(C`.ident\*(C'\fR directives to the output file (this is
  the default).
! .IP "\fB\-YP,\fR\fIdirs\fR" 4
  .IX Item "-YP,dirs"
  Search the directories \fIdirs\fR, and no others, for libraries
  specified with \fB\-l\fR.
! .IP "\fB\-Ym,\fR\fIdir\fR" 4
  .IX Item "-Ym,dir"
  Look in the directory \fIdir\fR to find the M4 preprocessor.
  The assembler uses this option.
--- 33524,33546 ----
  .PP
  These additional options are available on System V Release 4 for
  compatibility with other compilers on those systems:
! .IP \fB\-G\fR 4
  .IX Item "-G"
  Create a shared object.
  It is recommended that \fB\-symbolic\fR or \fB\-shared\fR be used instead.
! .IP \fB\-Qy\fR 4
  .IX Item "-Qy"
  Identify the versions of each tool used by the compiler, in a
  \&\f(CW\*(C`.ident\*(C'\fR assembler directive in the output.
! .IP \fB\-Qn\fR 4
  .IX Item "-Qn"
  Refrain from adding \f(CW\*(C`.ident\*(C'\fR directives to the output file (this is
  the default).
! .IP \fB\-YP,\fR\fIdirs\fR 4
  .IX Item "-YP,dirs"
  Search the directories \fIdirs\fR, and no others, for libraries
  specified with \fB\-l\fR.
! .IP \fB\-Ym,\fR\fIdir\fR 4
  .IX Item "-Ym,dir"
  Look in the directory \fIdir\fR to find the M4 preprocessor.
  The assembler uses this option.
*************** The assembler uses this option.
*** 33614,33642 ****
  .IX Subsection "V850 Options"
  .PP
  These \fB\-m\fR options are defined for V850 implementations:
! .IP "\fB\-mlong\-calls\fR" 4
  .IX Item "-mlong-calls"
  .PD 0
! .IP "\fB\-mno\-long\-calls\fR" 4
  .IX Item "-mno-long-calls"
  .PD
  Treat all calls as being far away (near).  If calls are assumed to be
! far away, the compiler always loads the function's address into a
  register, and calls indirect through the pointer.
! .IP "\fB\-mno\-ep\fR" 4
  .IX Item "-mno-ep"
  .PD 0
! .IP "\fB\-mep\fR" 4
  .IX Item "-mep"
  .PD
  Do not optimize (do optimize) basic blocks that use the same index
  pointer 4 or more times to copy pointer into the \f(CW\*(C`ep\*(C'\fR register, and
  use the shorter \f(CW\*(C`sld\*(C'\fR and \f(CW\*(C`sst\*(C'\fR instructions.  The \fB\-mep\fR
  option is on by default if you optimize.
! .IP "\fB\-mno\-prolog\-function\fR" 4
  .IX Item "-mno-prolog-function"
  .PD 0
! .IP "\fB\-mprolog\-function\fR" 4
  .IX Item "-mprolog-function"
  .PD
  Do not use (do use) external functions to save and restore registers
--- 33549,33577 ----
  .IX Subsection "V850 Options"
  .PP
  These \fB\-m\fR options are defined for V850 implementations:
! .IP \fB\-mlong\-calls\fR 4
  .IX Item "-mlong-calls"
  .PD 0
! .IP \fB\-mno\-long\-calls\fR 4
  .IX Item "-mno-long-calls"
  .PD
  Treat all calls as being far away (near).  If calls are assumed to be
! far away, the compiler always loads the function\*(Aqs address into a
  register, and calls indirect through the pointer.
! .IP \fB\-mno\-ep\fR 4
  .IX Item "-mno-ep"
  .PD 0
! .IP \fB\-mep\fR 4
  .IX Item "-mep"
  .PD
  Do not optimize (do optimize) basic blocks that use the same index
  pointer 4 or more times to copy pointer into the \f(CW\*(C`ep\*(C'\fR register, and
  use the shorter \f(CW\*(C`sld\*(C'\fR and \f(CW\*(C`sst\*(C'\fR instructions.  The \fB\-mep\fR
  option is on by default if you optimize.
! .IP \fB\-mno\-prolog\-function\fR 4
  .IX Item "-mno-prolog-function"
  .PD 0
! .IP \fB\-mprolog\-function\fR 4
  .IX Item "-mprolog-function"
  .PD
  Do not use (do use) external functions to save and restore registers
*************** at the prologue and epilogue of a functi
*** 33644,33696 ****
  are slower, but use less code space if more than one function saves
  the same number of registers.  The \fB\-mprolog\-function\fR option
  is on by default if you optimize.
! .IP "\fB\-mspace\fR" 4
  .IX Item "-mspace"
  Try to make the code as small as possible.  At present, this just turns
  on the \fB\-mep\fR and \fB\-mprolog\-function\fR options.
! .IP "\fB\-mtda=\fR\fIn\fR" 4
  .IX Item "-mtda=n"
  Put static or global variables whose size is \fIn\fR bytes or less into
  the tiny data area that register \f(CW\*(C`ep\*(C'\fR points to.  The tiny data
  area can hold up to 256 bytes in total (128 bytes for byte references).
! .IP "\fB\-msda=\fR\fIn\fR" 4
  .IX Item "-msda=n"
  Put static or global variables whose size is \fIn\fR bytes or less into
  the small data area that register \f(CW\*(C`gp\*(C'\fR points to.  The small data
  area can hold up to 64 kilobytes.
! .IP "\fB\-mzda=\fR\fIn\fR" 4
  .IX Item "-mzda=n"
  Put static or global variables whose size is \fIn\fR bytes or less into
  the first 32 kilobytes of memory.
! .IP "\fB\-mv850\fR" 4
  .IX Item "-mv850"
  Specify that the target processor is the V850.
! .IP "\fB\-mv850e3v5\fR" 4
  .IX Item "-mv850e3v5"
  Specify that the target processor is the V850E3V5.  The preprocessor
  constant \f(CW\*(C`_\|_v850e3v5_\|_\*(C'\fR is defined if this option is used.
! .IP "\fB\-mv850e2v4\fR" 4
  .IX Item "-mv850e2v4"
  Specify that the target processor is the V850E3V5.  This is an alias for
  the \fB\-mv850e3v5\fR option.
! .IP "\fB\-mv850e2v3\fR" 4
  .IX Item "-mv850e2v3"
  Specify that the target processor is the V850E2V3.  The preprocessor
  constant \f(CW\*(C`_\|_v850e2v3_\|_\*(C'\fR is defined if this option is used.
! .IP "\fB\-mv850e2\fR" 4
  .IX Item "-mv850e2"
  Specify that the target processor is the V850E2.  The preprocessor
  constant \f(CW\*(C`_\|_v850e2_\|_\*(C'\fR is defined if this option is used.
! .IP "\fB\-mv850e1\fR" 4
  .IX Item "-mv850e1"
  Specify that the target processor is the V850E1.  The preprocessor
  constants \f(CW\*(C`_\|_v850e1_\|_\*(C'\fR and \f(CW\*(C`_\|_v850e_\|_\*(C'\fR are defined if
  this option is used.
! .IP "\fB\-mv850es\fR" 4
  .IX Item "-mv850es"
  Specify that the target processor is the V850ES.  This is an alias for
  the \fB\-mv850e1\fR option.
! .IP "\fB\-mv850e\fR" 4
  .IX Item "-mv850e"
  Specify that the target processor is the V850E.  The preprocessor
  constant \f(CW\*(C`_\|_v850e_\|_\*(C'\fR is defined if this option is used.
--- 33579,33631 ----
  are slower, but use less code space if more than one function saves
  the same number of registers.  The \fB\-mprolog\-function\fR option
  is on by default if you optimize.
! .IP \fB\-mspace\fR 4
  .IX Item "-mspace"
  Try to make the code as small as possible.  At present, this just turns
  on the \fB\-mep\fR and \fB\-mprolog\-function\fR options.
! .IP \fB\-mtda=\fR\fIn\fR 4
  .IX Item "-mtda=n"
  Put static or global variables whose size is \fIn\fR bytes or less into
  the tiny data area that register \f(CW\*(C`ep\*(C'\fR points to.  The tiny data
  area can hold up to 256 bytes in total (128 bytes for byte references).
! .IP \fB\-msda=\fR\fIn\fR 4
  .IX Item "-msda=n"
  Put static or global variables whose size is \fIn\fR bytes or less into
  the small data area that register \f(CW\*(C`gp\*(C'\fR points to.  The small data
  area can hold up to 64 kilobytes.
! .IP \fB\-mzda=\fR\fIn\fR 4
  .IX Item "-mzda=n"
  Put static or global variables whose size is \fIn\fR bytes or less into
  the first 32 kilobytes of memory.
! .IP \fB\-mv850\fR 4
  .IX Item "-mv850"
  Specify that the target processor is the V850.
! .IP \fB\-mv850e3v5\fR 4
  .IX Item "-mv850e3v5"
  Specify that the target processor is the V850E3V5.  The preprocessor
  constant \f(CW\*(C`_\|_v850e3v5_\|_\*(C'\fR is defined if this option is used.
! .IP \fB\-mv850e2v4\fR 4
  .IX Item "-mv850e2v4"
  Specify that the target processor is the V850E3V5.  This is an alias for
  the \fB\-mv850e3v5\fR option.
! .IP \fB\-mv850e2v3\fR 4
  .IX Item "-mv850e2v3"
  Specify that the target processor is the V850E2V3.  The preprocessor
  constant \f(CW\*(C`_\|_v850e2v3_\|_\*(C'\fR is defined if this option is used.
! .IP \fB\-mv850e2\fR 4
  .IX Item "-mv850e2"
  Specify that the target processor is the V850E2.  The preprocessor
  constant \f(CW\*(C`_\|_v850e2_\|_\*(C'\fR is defined if this option is used.
! .IP \fB\-mv850e1\fR 4
  .IX Item "-mv850e1"
  Specify that the target processor is the V850E1.  The preprocessor
  constants \f(CW\*(C`_\|_v850e1_\|_\*(C'\fR and \f(CW\*(C`_\|_v850e_\|_\*(C'\fR are defined if
  this option is used.
! .IP \fB\-mv850es\fR 4
  .IX Item "-mv850es"
  Specify that the target processor is the V850ES.  This is an alias for
  the \fB\-mv850e1\fR option.
! .IP \fB\-mv850e\fR 4
  .IX Item "-mv850e"
  Specify that the target processor is the V850E.  The preprocessor
  constant \f(CW\*(C`_\|_v850e_\|_\*(C'\fR is defined if this option is used.
*************** relevant \fB_\|_v850*_\|_\fR preprocesso
*** 33702,33810 ****
  .Sp
  The preprocessor constants \f(CW\*(C`_\|_v850\*(C'\fR and \f(CW\*(C`_\|_v851_\|_\*(C'\fR are always
  defined, regardless of which processor variant is the target.
! .IP "\fB\-mdisable\-callt\fR" 4
  .IX Item "-mdisable-callt"
  .PD 0
! .IP "\fB\-mno\-disable\-callt\fR" 4
  .IX Item "-mno-disable-callt"
  .PD
  This option suppresses generation of the \f(CW\*(C`CALLT\*(C'\fR instruction for the
  v850e, v850e1, v850e2, v850e2v3 and v850e3v5 flavors of the v850
  architecture.
  .Sp
! This option is enabled by default when the \s-1RH850 ABI\s0 is
  in use (see \fB\-mrh850\-abi\fR), and disabled by default when the
! \&\s-1GCC ABI\s0 is in use.  If \f(CW\*(C`CALLT\*(C'\fR instructions are being generated
  then the C preprocessor symbol \f(CW\*(C`_\|_V850_CALLT_\|_\*(C'\fR is defined.
! .IP "\fB\-mrelax\fR" 4
  .IX Item "-mrelax"
  .PD 0
! .IP "\fB\-mno\-relax\fR" 4
  .IX Item "-mno-relax"
  .PD
! Pass on (or do not pass on) the \fB\-mrelax\fR command-line option
  to the assembler.
! .IP "\fB\-mlong\-jumps\fR" 4
  .IX Item "-mlong-jumps"
  .PD 0
! .IP "\fB\-mno\-long\-jumps\fR" 4
  .IX Item "-mno-long-jumps"
  .PD
! Disable (or re-enable) the generation of PC-relative jump instructions.
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  .PD 0
! .IP "\fB\-mhard\-float\fR" 4
  .IX Item "-mhard-float"
  .PD
! Disable (or re-enable) the generation of hardware floating point
  instructions.  This option is only significant when the target
  architecture is \fBV850E2V3\fR or higher.  If hardware floating point
  instructions are being generated then the C preprocessor symbol
  \&\f(CW\*(C`_\|_FPU_OK_\|_\*(C'\fR is defined, otherwise the symbol
  \&\f(CW\*(C`_\|_NO_FPU_\|_\*(C'\fR is defined.
! .IP "\fB\-mloop\fR" 4
  .IX Item "-mloop"
! Enables the use of the e3v5 \s-1LOOP\s0 instruction.  The use of this
  instruction is not enabled by default when the e3v5 architecture is
  selected because its use is still experimental.
! .IP "\fB\-mrh850\-abi\fR" 4
  .IX Item "-mrh850-abi"
  .PD 0
! .IP "\fB\-mghs\fR" 4
  .IX Item "-mghs"
  .PD
! Enables support for the \s-1RH850\s0 version of the V850 \s-1ABI.\s0  This is the
! default.  With this version of the \s-1ABI\s0 the following rules apply:
  .RS 4
! .IP "*" 4
  Integer sized structures and unions are returned via a memory pointer
  rather than a register.
! .IP "*" 4
  Large structures and unions (more than 8 bytes in size) are passed by
  value.
! .IP "*" 4
  Functions are aligned to 16\-bit boundaries.
! .IP "*" 4
! The \fB\-m8byte\-align\fR command-line option is supported.
! .IP "*" 4
! The \fB\-mdisable\-callt\fR command-line option is enabled by
! default.  The \fB\-mno\-disable\-callt\fR command-line option is not
  supported.
  .RE
  .RS 4
  .Sp
! When this version of the \s-1ABI\s0 is enabled the C preprocessor symbol
  \&\f(CW\*(C`_\|_V850_RH850_ABI_\|_\*(C'\fR is defined.
  .RE
! .IP "\fB\-mgcc\-abi\fR" 4
  .IX Item "-mgcc-abi"
! Enables support for the old \s-1GCC\s0 version of the V850 \s-1ABI.\s0  With this
! version of the \s-1ABI\s0 the following rules apply:
  .RS 4
! .IP "*" 4
  Integer sized structures and unions are returned in register \f(CW\*(C`r10\*(C'\fR.
! .IP "*" 4
  Large structures and unions (more than 8 bytes in size) are passed by
  reference.
! .IP "*" 4
  Functions are aligned to 32\-bit boundaries, unless optimizing for
  size.
! .IP "*" 4
! The \fB\-m8byte\-align\fR command-line option is not supported.
! .IP "*" 4
! The \fB\-mdisable\-callt\fR command-line option is supported but not
  enabled by default.
  .RE
  .RS 4
  .Sp
! When this version of the \s-1ABI\s0 is enabled the C preprocessor symbol
  \&\f(CW\*(C`_\|_V850_GCC_ABI_\|_\*(C'\fR is defined.
  .RE
! .IP "\fB\-m8byte\-align\fR" 4
  .IX Item "-m8byte-align"
  .PD 0
! .IP "\fB\-mno\-8byte\-align\fR" 4
  .IX Item "-mno-8byte-align"
  .PD
  Enables support for \f(CW\*(C`double\*(C'\fR and \f(CW\*(C`long long\*(C'\fR types to be
--- 33637,33745 ----
  .Sp
  The preprocessor constants \f(CW\*(C`_\|_v850\*(C'\fR and \f(CW\*(C`_\|_v851_\|_\*(C'\fR are always
  defined, regardless of which processor variant is the target.
! .IP \fB\-mdisable\-callt\fR 4
  .IX Item "-mdisable-callt"
  .PD 0
! .IP \fB\-mno\-disable\-callt\fR 4
  .IX Item "-mno-disable-callt"
  .PD
  This option suppresses generation of the \f(CW\*(C`CALLT\*(C'\fR instruction for the
  v850e, v850e1, v850e2, v850e2v3 and v850e3v5 flavors of the v850
  architecture.
  .Sp
! This option is enabled by default when the RH850 ABI is
  in use (see \fB\-mrh850\-abi\fR), and disabled by default when the
! GCC ABI is in use.  If \f(CW\*(C`CALLT\*(C'\fR instructions are being generated
  then the C preprocessor symbol \f(CW\*(C`_\|_V850_CALLT_\|_\*(C'\fR is defined.
! .IP \fB\-mrelax\fR 4
  .IX Item "-mrelax"
  .PD 0
! .IP \fB\-mno\-relax\fR 4
  .IX Item "-mno-relax"
  .PD
! Pass on (or do not pass on) the \fB\-mrelax\fR command\-line option
  to the assembler.
! .IP \fB\-mlong\-jumps\fR 4
  .IX Item "-mlong-jumps"
  .PD 0
! .IP \fB\-mno\-long\-jumps\fR 4
  .IX Item "-mno-long-jumps"
  .PD
! Disable (or re\-enable) the generation of PC\-relative jump instructions.
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  .PD 0
! .IP \fB\-mhard\-float\fR 4
  .IX Item "-mhard-float"
  .PD
! Disable (or re\-enable) the generation of hardware floating point
  instructions.  This option is only significant when the target
  architecture is \fBV850E2V3\fR or higher.  If hardware floating point
  instructions are being generated then the C preprocessor symbol
  \&\f(CW\*(C`_\|_FPU_OK_\|_\*(C'\fR is defined, otherwise the symbol
  \&\f(CW\*(C`_\|_NO_FPU_\|_\*(C'\fR is defined.
! .IP \fB\-mloop\fR 4
  .IX Item "-mloop"
! Enables the use of the e3v5 LOOP instruction.  The use of this
  instruction is not enabled by default when the e3v5 architecture is
  selected because its use is still experimental.
! .IP \fB\-mrh850\-abi\fR 4
  .IX Item "-mrh850-abi"
  .PD 0
! .IP \fB\-mghs\fR 4
  .IX Item "-mghs"
  .PD
! Enables support for the RH850 version of the V850 ABI.  This is the
! default.  With this version of the ABI the following rules apply:
  .RS 4
! .IP * 4
  Integer sized structures and unions are returned via a memory pointer
  rather than a register.
! .IP * 4
  Large structures and unions (more than 8 bytes in size) are passed by
  value.
! .IP * 4
  Functions are aligned to 16\-bit boundaries.
! .IP * 4
! The \fB\-m8byte\-align\fR command\-line option is supported.
! .IP * 4
! The \fB\-mdisable\-callt\fR command\-line option is enabled by
! default.  The \fB\-mno\-disable\-callt\fR command\-line option is not
  supported.
  .RE
  .RS 4
  .Sp
! When this version of the ABI is enabled the C preprocessor symbol
  \&\f(CW\*(C`_\|_V850_RH850_ABI_\|_\*(C'\fR is defined.
  .RE
! .IP \fB\-mgcc\-abi\fR 4
  .IX Item "-mgcc-abi"
! Enables support for the old GCC version of the V850 ABI.  With this
! version of the ABI the following rules apply:
  .RS 4
! .IP * 4
  Integer sized structures and unions are returned in register \f(CW\*(C`r10\*(C'\fR.
! .IP * 4
  Large structures and unions (more than 8 bytes in size) are passed by
  reference.
! .IP * 4
  Functions are aligned to 32\-bit boundaries, unless optimizing for
  size.
! .IP * 4
! The \fB\-m8byte\-align\fR command\-line option is not supported.
! .IP * 4
! The \fB\-mdisable\-callt\fR command\-line option is supported but not
  enabled by default.
  .RE
  .RS 4
  .Sp
! When this version of the ABI is enabled the C preprocessor symbol
  \&\f(CW\*(C`_\|_V850_GCC_ABI_\|_\*(C'\fR is defined.
  .RE
! .IP \fB\-m8byte\-align\fR 4
  .IX Item "-m8byte-align"
  .PD 0
! .IP \fB\-mno\-8byte\-align\fR 4
  .IX Item "-mno-8byte-align"
  .PD
  Enables support for \f(CW\*(C`double\*(C'\fR and \f(CW\*(C`long long\*(C'\fR types to be
*************** aligned on 8\-byte boundaries.  The defa
*** 33812,33903 ****
  alignment of all objects to at most 4\-bytes.  When
  \&\fB\-m8byte\-align\fR is in effect the C preprocessor symbol
  \&\f(CW\*(C`_\|_V850_8BYTE_ALIGN_\|_\*(C'\fR is defined.
! .IP "\fB\-mbig\-switch\fR" 4
  .IX Item "-mbig-switch"
  Generate code suitable for big switch tables.  Use this option only if
  the assembler/linker complain about out of range branches within a switch
  table.
! .IP "\fB\-mapp\-regs\fR" 4
  .IX Item "-mapp-regs"
  This option causes r2 and r5 to be used in the code generated by
  the compiler.  This setting is the default.
! .IP "\fB\-mno\-app\-regs\fR" 4
  .IX Item "-mno-app-regs"
  This option causes r2 and r5 to be treated as fixed registers.
  .PP
! \fI\s-1VAX\s0 Options\fR
  .IX Subsection "VAX Options"
  .PP
! These \fB\-m\fR options are defined for the \s-1VAX:\s0
! .IP "\fB\-munix\fR" 4
  .IX Item "-munix"
  Do not output certain jump instructions (\f(CW\*(C`aobleq\*(C'\fR and so on)
! that the Unix assembler for the \s-1VAX\s0 cannot handle across long
  ranges.
! .IP "\fB\-mgnu\fR" 4
  .IX Item "-mgnu"
  Do output those jump instructions, on the assumption that the
! \&\s-1GNU\s0 assembler is being used.
! .IP "\fB\-md\fR" 4
  .IX Item "-md"
  .PD 0
! .IP "\fB\-md\-float\fR" 4
  .IX Item "-md-float"
  .PD
! Use the D_floating data format for double-precision floating-point numbers
  instead of G_floating.
! .IP "\fB\-mg\fR" 4
  .IX Item "-mg"
  .PD 0
! .IP "\fB\-mg\-float\fR" 4
  .IX Item "-mg-float"
  .PD
! Use the G_floating data format for double-precision floating-point numbers
  instead of D_floating.
! .IP "\fB\-mlra\fR" 4
  .IX Item "-mlra"
  .PD 0
! .IP "\fB\-mno\-lra\fR" 4
  .IX Item "-mno-lra"
  .PD
! Enable Local Register Allocation.  This is still experimental for the \s-1VAX,\s0
  so by default the compiler uses standard reload.
  .PP
  \fIVisium Options\fR
  .IX Subsection "Visium Options"
! .IP "\fB\-mdebug\fR" 4
  .IX Item "-mdebug"
! A program which performs file I/O and is destined to run on an \s-1MCM\s0 target
  should be linked with this option.  It causes the libraries libc.a and
  libdebug.a to be linked.  The program should be run on the target under
! the control of the \s-1GDB\s0 remote debugging stub.
! .IP "\fB\-msim\fR" 4
  .IX Item "-msim"
  A program which performs file I/O and is destined to run on the simulator
  should be linked with option.  This causes libraries libc.a and libsim.a to
  be linked.
! .IP "\fB\-mfpu\fR" 4
  .IX Item "-mfpu"
  .PD 0
! .IP "\fB\-mhard\-float\fR" 4
  .IX Item "-mhard-float"
  .PD
! Generate code containing floating-point instructions.  This is the
  default.
! .IP "\fB\-mno\-fpu\fR" 4
  .IX Item "-mno-fpu"
  .PD 0
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  .PD
! Generate code containing library calls for floating-point.
  .Sp
  \&\fB\-msoft\-float\fR changes the calling convention in the output file;
  therefore, it is only useful if you compile \fIall\fR of a program with
  this option.  In particular, you need to compile \fIlibgcc.a\fR, the
! library that comes with \s-1GCC,\s0 with \fB\-msoft\-float\fR in order for
  this to work.
! .IP "\fB\-mcpu=\fR\fIcpu_type\fR" 4
  .IX Item "-mcpu=cpu_type"
  Set the instruction set, register set, and instruction scheduling parameters
  for machine type \fIcpu_type\fR.  Supported values for \fIcpu_type\fR are
--- 33747,33838 ----
  alignment of all objects to at most 4\-bytes.  When
  \&\fB\-m8byte\-align\fR is in effect the C preprocessor symbol
  \&\f(CW\*(C`_\|_V850_8BYTE_ALIGN_\|_\*(C'\fR is defined.
! .IP \fB\-mbig\-switch\fR 4
  .IX Item "-mbig-switch"
  Generate code suitable for big switch tables.  Use this option only if
  the assembler/linker complain about out of range branches within a switch
  table.
! .IP \fB\-mapp\-regs\fR 4
  .IX Item "-mapp-regs"
  This option causes r2 and r5 to be used in the code generated by
  the compiler.  This setting is the default.
! .IP \fB\-mno\-app\-regs\fR 4
  .IX Item "-mno-app-regs"
  This option causes r2 and r5 to be treated as fixed registers.
  .PP
! \fIVAX Options\fR
  .IX Subsection "VAX Options"
  .PP
! These \fB\-m\fR options are defined for the VAX:
! .IP \fB\-munix\fR 4
  .IX Item "-munix"
  Do not output certain jump instructions (\f(CW\*(C`aobleq\*(C'\fR and so on)
! that the Unix assembler for the VAX cannot handle across long
  ranges.
! .IP \fB\-mgnu\fR 4
  .IX Item "-mgnu"
  Do output those jump instructions, on the assumption that the
! GNU assembler is being used.
! .IP \fB\-md\fR 4
  .IX Item "-md"
  .PD 0
! .IP \fB\-md\-float\fR 4
  .IX Item "-md-float"
  .PD
! Use the D_floating data format for double\-precision floating\-point numbers
  instead of G_floating.
! .IP \fB\-mg\fR 4
  .IX Item "-mg"
  .PD 0
! .IP \fB\-mg\-float\fR 4
  .IX Item "-mg-float"
  .PD
! Use the G_floating data format for double\-precision floating\-point numbers
  instead of D_floating.
! .IP \fB\-mlra\fR 4
  .IX Item "-mlra"
  .PD 0
! .IP \fB\-mno\-lra\fR 4
  .IX Item "-mno-lra"
  .PD
! Enable Local Register Allocation.  This is still experimental for the VAX,
  so by default the compiler uses standard reload.
  .PP
  \fIVisium Options\fR
  .IX Subsection "Visium Options"
! .IP \fB\-mdebug\fR 4
  .IX Item "-mdebug"
! A program which performs file I/O and is destined to run on an MCM target
  should be linked with this option.  It causes the libraries libc.a and
  libdebug.a to be linked.  The program should be run on the target under
! the control of the GDB remote debugging stub.
! .IP \fB\-msim\fR 4
  .IX Item "-msim"
  A program which performs file I/O and is destined to run on the simulator
  should be linked with option.  This causes libraries libc.a and libsim.a to
  be linked.
! .IP \fB\-mfpu\fR 4
  .IX Item "-mfpu"
  .PD 0
! .IP \fB\-mhard\-float\fR 4
  .IX Item "-mhard-float"
  .PD
! Generate code containing floating\-point instructions.  This is the
  default.
! .IP \fB\-mno\-fpu\fR 4
  .IX Item "-mno-fpu"
  .PD 0
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  .PD
! Generate code containing library calls for floating\-point.
  .Sp
  \&\fB\-msoft\-float\fR changes the calling convention in the output file;
  therefore, it is only useful if you compile \fIall\fR of a program with
  this option.  In particular, you need to compile \fIlibgcc.a\fR, the
! library that comes with GCC, with \fB\-msoft\-float\fR in order for
  this to work.
! .IP \fB\-mcpu=\fR\fIcpu_type\fR 4
  .IX Item "-mcpu=cpu_type"
  Set the instruction set, register set, and instruction scheduling parameters
  for machine type \fIcpu_type\fR.  Supported values for \fIcpu_type\fR are
*************** for machine type \fIcpu_type\fR.  Suppor
*** 33905,33947 ****
  .Sp
  \&\fBmcm\fR is a synonym of \fBgr5\fR present for backward compatibility.
  .Sp
! By default (unless configured otherwise), \s-1GCC\s0 generates code for the \s-1GR5\s0
  variant of the Visium architecture.
  .Sp
! With \fB\-mcpu=gr6\fR, \s-1GCC\s0 generates code for the \s-1GR6\s0 variant of the Visium
! architecture.  The only difference from \s-1GR5\s0 code is that the compiler will
  generate block move instructions.
! .IP "\fB\-mtune=\fR\fIcpu_type\fR" 4
  .IX Item "-mtune=cpu_type"
  Set the instruction scheduling parameters for machine type \fIcpu_type\fR,
  but do not set the instruction set or register set that the option
  \&\fB\-mcpu=\fR\fIcpu_type\fR would.
! .IP "\fB\-msv\-mode\fR" 4
  .IX Item "-msv-mode"
  Generate code for the supervisor mode, where there are no restrictions on
  the access to general registers.  This is the default.
! .IP "\fB\-muser\-mode\fR" 4
  .IX Item "-muser-mode"
  Generate code for the user mode, where the access to some general registers
! is forbidden: on the \s-1GR5,\s0 registers r24 to r31 cannot be accessed in this
! mode; on the \s-1GR6,\s0 only registers r29 to r31 are affected.
  .PP
! \fI\s-1VMS\s0 Options\fR
  .IX Subsection "VMS Options"
  .PP
! These \fB\-m\fR options are defined for the \s-1VMS\s0 implementations:
! .IP "\fB\-mvms\-return\-codes\fR" 4
  .IX Item "-mvms-return-codes"
! Return \s-1VMS\s0 condition codes from \f(CW\*(C`main\*(C'\fR. The default is to return POSIX-style
  condition (e.g. error) codes.
! .IP "\fB\-mdebug\-main=\fR\fIprefix\fR" 4
  .IX Item "-mdebug-main=prefix"
  Flag the first routine whose name starts with \fIprefix\fR as the main
  routine for the debugger.
! .IP "\fB\-mmalloc64\fR" 4
  .IX Item "-mmalloc64"
  Default to 64\-bit memory allocation routines.
! .IP "\fB\-mpointer\-size=\fR\fIsize\fR" 4
  .IX Item "-mpointer-size=size"
  Set the default size of pointers. Possible options for \fIsize\fR are
  \&\fB32\fR or \fBshort\fR for 32 bit pointers, \fB64\fR or \fBlong\fR
--- 33840,33882 ----
  .Sp
  \&\fBmcm\fR is a synonym of \fBgr5\fR present for backward compatibility.
  .Sp
! By default (unless configured otherwise), GCC generates code for the GR5
  variant of the Visium architecture.
  .Sp
! With \fB\-mcpu=gr6\fR, GCC generates code for the GR6 variant of the Visium
! architecture.  The only difference from GR5 code is that the compiler will
  generate block move instructions.
! .IP \fB\-mtune=\fR\fIcpu_type\fR 4
  .IX Item "-mtune=cpu_type"
  Set the instruction scheduling parameters for machine type \fIcpu_type\fR,
  but do not set the instruction set or register set that the option
  \&\fB\-mcpu=\fR\fIcpu_type\fR would.
! .IP \fB\-msv\-mode\fR 4
  .IX Item "-msv-mode"
  Generate code for the supervisor mode, where there are no restrictions on
  the access to general registers.  This is the default.
! .IP \fB\-muser\-mode\fR 4
  .IX Item "-muser-mode"
  Generate code for the user mode, where the access to some general registers
! is forbidden: on the GR5, registers r24 to r31 cannot be accessed in this
! mode; on the GR6, only registers r29 to r31 are affected.
  .PP
! \fIVMS Options\fR
  .IX Subsection "VMS Options"
  .PP
! These \fB\-m\fR options are defined for the VMS implementations:
! .IP \fB\-mvms\-return\-codes\fR 4
  .IX Item "-mvms-return-codes"
! Return VMS condition codes from \f(CW\*(C`main\*(C'\fR. The default is to return POSIX\-style
  condition (e.g. error) codes.
! .IP \fB\-mdebug\-main=\fR\fIprefix\fR 4
  .IX Item "-mdebug-main=prefix"
  Flag the first routine whose name starts with \fIprefix\fR as the main
  routine for the debugger.
! .IP \fB\-mmalloc64\fR 4
  .IX Item "-mmalloc64"
  Default to 64\-bit memory allocation routines.
! .IP \fB\-mpointer\-size=\fR\fIsize\fR 4
  .IX Item "-mpointer-size=size"
  Set the default size of pointers. Possible options for \fIsize\fR are
  \&\fB32\fR or \fBshort\fR for 32 bit pointers, \fB64\fR or \fBlong\fR
*************** The later option disables \f(CW\*(C`prag
*** 33954,33989 ****
  The options in this section are defined for all VxWorks targets.
  Options specific to the target hardware are listed with the other
  options for that target.
! .IP "\fB\-mrtp\fR" 4
  .IX Item "-mrtp"
! \&\s-1GCC\s0 can generate code for both VxWorks kernels and real time processes
  (RTPs).  This option switches from the former to the latter.  It also
  defines the preprocessor macro \f(CW\*(C`_\|_RTP_\|_\*(C'\fR.
! .IP "\fB\-msmp\fR" 4
  .IX Item "-msmp"
! Select \s-1SMP\s0 runtimes for linking.  Not available on architectures other
  than PowerPC, nor on VxWorks version 7 or later, in which the selection
  is part of the VxWorks build configuration and the library paths are the
  same for either choice.
! .IP "\fB\-non\-static\fR" 4
  .IX Item "-non-static"
! Link an \s-1RTP\s0 executable against shared libraries rather than static
  libraries.  The options \fB\-static\fR and \fB\-shared\fR can
  also be used for RTPs; \fB\-static\fR
  is the default.
! .IP "\fB\-Bstatic\fR" 4
  .IX Item "-Bstatic"
  .PD 0
! .IP "\fB\-Bdynamic\fR" 4
  .IX Item "-Bdynamic"
  .PD
  These options are passed down to the linker.  They are defined for
  compatibility with Diab.
! .IP "\fB\-Xbind\-lazy\fR" 4
  .IX Item "-Xbind-lazy"
  Enable lazy binding of function calls.  This option is equivalent to
  \&\fB\-Wl,\-z,now\fR and is defined for compatibility with Diab.
! .IP "\fB\-Xbind\-now\fR" 4
  .IX Item "-Xbind-now"
  Disable lazy binding of function calls.  This option is the default and
  is defined for compatibility with Diab.
--- 33889,33924 ----
  The options in this section are defined for all VxWorks targets.
  Options specific to the target hardware are listed with the other
  options for that target.
! .IP \fB\-mrtp\fR 4
  .IX Item "-mrtp"
! GCC can generate code for both VxWorks kernels and real time processes
  (RTPs).  This option switches from the former to the latter.  It also
  defines the preprocessor macro \f(CW\*(C`_\|_RTP_\|_\*(C'\fR.
! .IP \fB\-msmp\fR 4
  .IX Item "-msmp"
! Select SMP runtimes for linking.  Not available on architectures other
  than PowerPC, nor on VxWorks version 7 or later, in which the selection
  is part of the VxWorks build configuration and the library paths are the
  same for either choice.
! .IP \fB\-non\-static\fR 4
  .IX Item "-non-static"
! Link an RTP executable against shared libraries rather than static
  libraries.  The options \fB\-static\fR and \fB\-shared\fR can
  also be used for RTPs; \fB\-static\fR
  is the default.
! .IP \fB\-Bstatic\fR 4
  .IX Item "-Bstatic"
  .PD 0
! .IP \fB\-Bdynamic\fR 4
  .IX Item "-Bdynamic"
  .PD
  These options are passed down to the linker.  They are defined for
  compatibility with Diab.
! .IP \fB\-Xbind\-lazy\fR 4
  .IX Item "-Xbind-lazy"
  Enable lazy binding of function calls.  This option is equivalent to
  \&\fB\-Wl,\-z,now\fR and is defined for compatibility with Diab.
! .IP \fB\-Xbind\-now\fR 4
  .IX Item "-Xbind-now"
  Disable lazy binding of function calls.  This option is the default and
  is defined for compatibility with Diab.
*************** is defined for compatibility with Diab.
*** 33992,34642 ****
  .IX Subsection "x86 Options"
  .PP
  These \fB\-m\fR options are defined for the x86 family of computers.
! .IP "\fB\-march=\fR\fIcpu-type\fR" 4
  .IX Item "-march=cpu-type"
! Generate instructions for the machine type \fIcpu-type\fR.  In contrast to
! \&\fB\-mtune=\fR\fIcpu-type\fR, which merely tunes the generated code
! for the specified \fIcpu-type\fR, \fB\-march=\fR\fIcpu-type\fR allows \s-1GCC\s0
  to generate code that may not run at all on processors other than the one
! indicated.  Specifying \fB\-march=\fR\fIcpu-type\fR implies
! \&\fB\-mtune=\fR\fIcpu-type\fR, except where noted otherwise.
  .Sp
! The choices for \fIcpu-type\fR are:
  .RS 4
! .IP "\fBnative\fR" 4
  .IX Item "native"
! This selects the \s-1CPU\s0 to generate code for at compilation time by determining
  the processor type of the compiling machine.  Using \fB\-march=native\fR
  enables all instruction subsets supported by the local machine (hence
  the result might not run on different machines).  Using \fB\-mtune=native\fR
  produces code optimized for the local machine under the constraints
  of the selected instruction set.
! .IP "\fBx86\-64\fR" 4
  .IX Item "x86-64"
! A generic \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2,\s0 and \s-1FXSR\s0 instruction set
  support.
! .IP "\fBx86\-64\-v2\fR" 4
  .IX Item "x86-64-v2"
  .PD 0
! .IP "\fBx86\-64\-v3\fR" 4
  .IX Item "x86-64-v3"
! .IP "\fBx86\-64\-v4\fR" 4
  .IX Item "x86-64-v4"
  .PD
! These choices for \fIcpu-type\fR select the corresponding
! micro-architecture level from the x86\-64 psABI.  On ABIs other than
! the x86\-64 psABI they select the same \s-1CPU\s0 features as the x86\-64 psABI
! documents for the particular micro-architecture level.
  .Sp
! Since these \fIcpu-type\fR values do not have a corresponding
  \&\fB\-mtune\fR setting, using \fB\-march\fR with these values enables
  generic tuning.  Specific tuning can be enabled using the
! \&\fB\-mtune=\fR\fIother-cpu-type\fR option with an appropriate
! \&\fIother-cpu-type\fR value.
! .IP "\fBi386\fR" 4
  .IX Item "i386"
! Original Intel i386 \s-1CPU.\s0
! .IP "\fBi486\fR" 4
  .IX Item "i486"
! Intel i486 \s-1CPU.\s0  (No scheduling is implemented for this chip.)
! .IP "\fBi586\fR" 4
  .IX Item "i586"
  .PD 0
! .IP "\fBpentium\fR" 4
  .IX Item "pentium"
  .PD
! Intel Pentium \s-1CPU\s0 with no \s-1MMX\s0 support.
! .IP "\fBlakemont\fR" 4
  .IX Item "lakemont"
! Intel Lakemont \s-1MCU,\s0 based on Intel Pentium \s-1CPU.\s0
! .IP "\fBpentium-mmx\fR" 4
  .IX Item "pentium-mmx"
! Intel Pentium \s-1MMX CPU,\s0 based on Pentium core with \s-1MMX\s0 instruction set support.
! .IP "\fBpentiumpro\fR" 4
  .IX Item "pentiumpro"
! Intel Pentium Pro \s-1CPU\s0 with no \s-1MMX\s0 support.
! .IP "\fBi686\fR" 4
  .IX Item "i686"
  When used with \fB\-march\fR, the Pentium Pro
  instruction set is used, so the code runs on all i686 family chips.
  When used with \fB\-mtune\fR, it has the same meaning as \fBgeneric\fR.
! .IP "\fBpentium2\fR" 4
  .IX Item "pentium2"
! Intel Pentium \s-1II CPU,\s0 based on Pentium Pro core with \s-1MMX\s0 and \s-1FXSR\s0 instruction
  set support.
! .IP "\fBpentium3\fR" 4
  .IX Item "pentium3"
  .PD 0
! .IP "\fBpentium3m\fR" 4
  .IX Item "pentium3m"
  .PD
! Intel Pentium \s-1III CPU,\s0 based on Pentium Pro core with \s-1MMX, FXSR\s0 and \s-1SSE\s0
  instruction set support.
! .IP "\fBpentium-m\fR" 4
  .IX Item "pentium-m"
! Intel Pentium M; low-power version of Intel Pentium \s-1III CPU\s0
! with \s-1MMX, SSE, SSE2\s0 and \s-1FXSR\s0 instruction set support.  Used by Centrino
  notebooks.
! .IP "\fBpentium4\fR" 4
  .IX Item "pentium4"
  .PD 0
! .IP "\fBpentium4m\fR" 4
  .IX Item "pentium4m"
  .PD
! Intel Pentium 4 \s-1CPU\s0 with \s-1MMX, SSE, SSE2\s0 and \s-1FXSR\s0 instruction set support.
! .IP "\fBprescott\fR" 4
  .IX Item "prescott"
! Improved version of Intel Pentium 4 \s-1CPU\s0 with \s-1MMX, SSE, SSE2, SSE3\s0 and \s-1FXSR\s0
  instruction set support.
! .IP "\fBnocona\fR" 4
  .IX Item "nocona"
! Improved version of Intel Pentium 4 \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE,
! SSE2, SSE3\s0 and \s-1FXSR\s0 instruction set support.
! .IP "\fBcore2\fR" 4
  .IX Item "core2"
! Intel Core 2 \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3, CX16,
! SAHF\s0 and \s-1FXSR\s0 instruction set support.
! .IP "\fBnehalem\fR" 4
  .IX Item "nehalem"
  .PD 0
! .IP "\fBcorei7\fR" 4
  .IX Item "corei7"
  .PD
! Intel Nehalem \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, CX16, SAHF\s0 and \s-1FXSR\s0 instruction set support.
! .IP "\fBwestmere\fR" 4
  .IX Item "westmere"
! Intel Westmere \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR\s0 and \s-1PCLMUL\s0 instruction set support.
! .IP "\fBsandybridge\fR" 4
  .IX Item "sandybridge"
  .PD 0
! .IP "\fBcorei7\-avx\fR" 4
  .IX Item "corei7-avx"
  .PD
! Intel Sandy Bridge \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE\s0 and \s-1PCLMUL\s0 instruction set
  support.
! .IP "\fBivybridge\fR" 4
  .IX Item "ivybridge"
  .PD 0
! .IP "\fBcore-avx-i\fR" 4
  .IX Item "core-avx-i"
  .PD
! Intel Ivy Bridge \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND\s0
  and F16C instruction set support.
! .IP "\fBhaswell\fR" 4
  .IX Item "haswell"
  .PD 0
! .IP "\fBcore\-avx2\fR" 4
  .IX Item "core-avx2"
  .PD
! Intel Haswell \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
! F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE\s0 and \s-1HLE\s0 instruction set support.
! .IP "\fBbroadwell\fR" 4
  .IX Item "broadwell"
! Intel Broadwell \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
! F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX\s0 and \s-1PREFETCHW\s0
  instruction set support.
! .IP "\fBskylake\fR" 4
  .IX Item "skylake"
! Intel Skylake \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
  F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES,
! CLFLUSHOPT, XSAVEC, XSAVES\s0 and \s-1SGX\s0 instruction set support.
! .IP "\fBskylake\-avx512\fR" 4
  .IX Item "skylake-avx512"
! Intel Skylake Server \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
  RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
  AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, CLWB, AVX512VL, AVX512BW,
! AVX512DQ\s0 and \s-1AVX512CD\s0 instruction set support.
! .IP "\fBcascadelake\fR" 4
  .IX Item "cascadelake"
! Intel Cascade Lake \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
  F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES,
  CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ,
! AVX512CD\s0 and \s-1AVX512VNNI\s0 instruction set support.
! .IP "\fBcannonlake\fR" 4
  .IX Item "cannonlake"
! Intel Cannon Lake Server \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2,
  SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL,
  FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX,
  PREFETCHW, AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW,
! AVX512DQ, AVX512CD, PKU, AVX512VBMI, AVX512IFMA\s0 and \s-1SHA\s0 instruction set
  support.
! .IP "\fBcooperlake\fR" 4
  .IX Item "cooperlake"
! Intel Cooper Lake \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
  F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES,
  CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ,
! AVX512CD, AVX512VNNI\s0 and \s-1AVX512BF16\s0 instruction set support.
! .IP "\fBicelake-client\fR" 4
  .IX Item "icelake-client"
! Intel Ice Lake Client \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
  RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
  AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ,
  AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2
! , VPCLMULQDQ, AVX512BITALG, RDPID\s0 and \s-1AVX512VPOPCNTDQ\s0 instruction set support.
! .IP "\fBicelake-server\fR" 4
  .IX Item "icelake-server"
! Intel Ice Lake Server \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
  RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
  AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ,
  AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2
! , VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD\s0 and \s-1CLWB\s0
  instruction set support.
! .IP "\fBtigerlake\fR" 4
  .IX Item "tigerlake"
! Intel Tiger Lake \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
  F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES,
  CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD
  PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2,
  VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, MOVDIRI, MOVDIR64B, CLWB,
! AVX512VP2INTERSECT\s0 and \s-1KEYLOCKER\s0 instruction set support.
! .IP "\fBrocketlake\fR" 4
  .IX Item "rocketlake"
! Intel Rocket Lake \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
  F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES,
  CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD
  PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2,
! VPCLMULQDQ, AVX512BITALG, RDPID\s0 and \s-1AVX512VPOPCNTDQ\s0 instruction set support.
! .IP "\fBalderlake\fR" 4
  .IX Item "alderlake"
  .PD 0
! .IP "\fBraptorlake\fR" 4
  .IX Item "raptorlake"
! .IP "\fBmeteorlake\fR" 4
  .IX Item "meteorlake"
! .IP "\fBgracemont\fR" 4
  .IX Item "gracemont"
  .PD
! Intel Alder Lake/Raptor Lake/Meteor Lake/Gracemont \s-1CPU\s0 with 64\-bit extensions,
! \&\s-1MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW,
! PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX,\s0
! GFNI-SSE, \s-1CLWB, MOVDIRI, MOVDIR64B, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C,
! FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL\s0 and
! AVX-VNNI instruction set support.
! .IP "\fBarrowlake\fR" 4
  .IX Item "arrowlake"
! Intel Arrow Lake \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC,
! XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX,\s0 GFNI-SSE, \s-1CLWB, MOVDIRI,
  MOVDIR64B, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU,
! VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL,\s0 AVX-VNNI, \s-1UINTR, AVXIFMA,
! AVXVNNIINT8, AVXNECONVERT\s0 and \s-1CMPCCXADD\s0 instruction set support.
! .IP "\fBarrowlake-s\fR" 4
  .IX Item "arrowlake-s"
  .PD 0
! .IP "\fBlunarlake\fR" 4
  .IX Item "lunarlake"
  .PD
! Intel Arrow Lake S/Lunar Lake \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE,
  SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND,
! XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX,\s0 GFNI-SSE, \s-1CLWB,
  MOVDIRI, MOVDIR64B, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT,
! PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL,\s0 AVX-VNNI, \s-1UINTR,
! AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3\s0 and
! \&\s-1SM4\s0 instruction set support.
! .IP "\fBpantherlake\fR" 4
  .IX Item "pantherlake"
! Intel Panther Lake \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC,
! XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX,\s0 GFNI-SSE, \s-1CLWB, MOVDIRI,
  MOVDIR64B, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU,
! VAES, VPCLMULQDQ, SERIALIZE, HRESET,\s0 AVX-VNNI, \s-1UINTR, AVXIFMA, AVXVNNIINT8,
! AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4\s0 and \s-1PREFETCHI\s0
! instruction set support.
! .IP "\fBsapphirerapids\fR" 4
  .IX Item "sapphirerapids"
  .PD 0
! .IP "\fBemeraldrapids\fR" 4
  .IX Item "emeraldrapids"
  .PD
! Intel Sapphire Rapids/Emerald Rapids \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE,
  SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL,
  FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX,
  PREFETCHW, AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW,
  AVX512DQ, AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES,
  AVX512VBMI2, VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG,
  WBNOINVD, CLWB, MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG,
! SERIALIZE, TSXLDTRK, UINTR, AMX\-BF16,\s0 AMX-TILE, \s-1AMX\-INT8,\s0 AVX-VNNI, \s-1AVX512\-FP16\s0
! and \s-1AVX512BF16\s0 instruction set support.
! .IP "\fBgraniterapids\fR" 4
  .IX Item "graniterapids"
! Intel Granite Rapids \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
  RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
  AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ,
  AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2,
  VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD, CLWB,
  MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK,
! UINTR, AMX\-BF16,\s0 AMX-TILE, \s-1AMX\-INT8,\s0 AVX-VNNI, \s-1AVX512\-FP16, AVX512BF16, AMX\-FP16\s0
! and \s-1PREFETCHI\s0 instruction set support.
! .IP "\fBgraniterapids-d\fR" 4
  .IX Item "graniterapids-d"
! Intel Granite Rapids D \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
  RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
  AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ,
  AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2,
  VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD, CLWB,
  MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK,
! UINTR, AMX\-BF16,\s0 AMX-TILE, \s-1AMX\-INT8,\s0 AVX-VNNI, \s-1AVX512FP16, AVX512BF16, AMX\-FP16,
! PREFETCHI\s0 and AMX-COMPLEX instruction set support.
! .IP "\fBdiamondrapids\fR" 4
  .IX Item "diamondrapids"
! Intel Diamond Rapids \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
  RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
  AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ,
  AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2,
  VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD, CLWB,
  MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK,
! UINTR, AMX\-BF16,\s0 AMX-TILE, \s-1AMX\-INT8,\s0 AVX-VNNI, \s-1AVX512FP16, AVX512BF16, AMX\-FP16,
! PREFETCHI,\s0 AMX-COMPLEX, \s-1AVX10.1\-512,\s0 AVX-IFMA, AVX-NE-CONVERT, \s-1AVX\-VNNI\-INT16,
! AVX\-VNNI\-INT8,\s0 CMPccXADD, \s-1SHA512, SM3, SM4, AVX10.2\-512, APX_F, AMX\-AVX512,
! AMX\-FP8, AMX\-TF32,\s0 AMX-TRANSPOSE, \s-1MOVRS,\s0 AMX-MOVRS and \s-1USER_MSR\s0 instruction set
! support.
! .IP "\fBbonnell\fR" 4
  .IX Item "bonnell"
  .PD 0
! .IP "\fBatom\fR" 4
  .IX Item "atom"
  .PD
! Intel Bonnell \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3\s0 and \s-1SSSE3\s0
  instruction set support.
! .IP "\fBsilvermont\fR" 4
  .IX Item "silvermont"
  .PD 0
! .IP "\fBslm\fR" 4
  .IX Item "slm"
  .PD
! Intel Silvermont \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, PCLMUL, PREFETCHW\s0 and \s-1RDRND\s0
  instruction set support.
! .IP "\fBgoldmont\fR" 4
  .IX Item "goldmont"
! Intel Goldmont \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, PCLMUL, PREFETCHW, RDRND, AES, SHA,
! RDSEED, XSAVE, XSAVEC, XSAVES, XSAVEOPT, CLFLUSHOPT\s0 and \s-1FSGSBASE\s0 instruction
  set support.
! .IP "\fBgoldmont-plus\fR" 4
  .IX Item "goldmont-plus"
! Intel Goldmont Plus \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, PCLMUL, PREFETCHW, RDRND, AES,
  SHA, RDSEED, XSAVE, XSAVEC, XSAVES, XSAVEOPT, CLFLUSHOPT, FSGSBASE, PTWRITE,
! RDPID\s0 and \s-1SGX\s0 instruction set support.
! .IP "\fBtremont\fR" 4
  .IX Item "tremont"
! Intel Tremont \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, PCLMUL, PREFETCHW, RDRND, AES, SHA,
  RDSEED, XSAVE, XSAVEC, XSAVES, XSAVEOPT, CLFLUSHOPT, FSGSBASE, PTWRITE, RDPID,
! SGX, CLWB,\s0 GFNI-SSE, \s-1MOVDIRI, MOVDIR64B, CLDEMOTE\s0 and \s-1WAITPKG\s0 instruction set
  support.
! .IP "\fBsierraforest\fR" 4
  .IX Item "sierraforest"
! Intel Sierra Forest \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC,
! XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX,\s0 GFNI-SSE, \s-1CLWB, MOVDIRI,
  MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT,
! PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL,\s0 AVX-VNNI,
! \&\s-1AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, ENQCMD\s0 and \s-1UINTR\s0 instruction set
  support.
! .IP "\fBgrandridge\fR" 4
  .IX Item "grandridge"
! Intel Grand Ridge \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC,
! XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX,\s0 GFNI-SSE, \s-1CLWB, MOVDIRI,
  MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT,
! PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL,\s0 AVX-VNNI,
! \&\s-1AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, ENQCMD\s0 and \s-1UINTR\s0 instruction set
  support.
! .IP "\fBclearwaterforest\fR" 4
  .IX Item "clearwaterforest"
! Intel Clearwater Forest \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2,
  SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE,
! XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX,\s0 GFNI-SSE, \s-1CLWB,
  MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA,
! LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET,\s0 AVX-VNNI, \s-1ENQCMD,
  UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512,
! SM3, SM4, USER_MSR\s0 and \s-1PREFETCHI\s0 instruction set support.
! .IP "\fBk6\fR" 4
  .IX Item "k6"
! \&\s-1AMD K6 CPU\s0 with \s-1MMX\s0 instruction set support.
! .IP "\fBk6\-2\fR" 4
  .IX Item "k6-2"
  .PD 0
! .IP "\fBk6\-3\fR" 4
  .IX Item "k6-3"
  .PD
! Improved versions of \s-1AMD K6 CPU\s0 with \s-1MMX\s0 and 3DNow! instruction set support.
! .IP "\fBathlon\fR" 4
  .IX Item "athlon"
  .PD 0
! .IP "\fBathlon-tbird\fR" 4
  .IX Item "athlon-tbird"
  .PD
! \&\s-1AMD\s0 Athlon \s-1CPU\s0 with \s-1MMX,\s0 3dNOW!, enhanced 3DNow! and \s-1SSE\s0 prefetch instructions
  support.
! .IP "\fBathlon\-4\fR" 4
  .IX Item "athlon-4"
  .PD 0
! .IP "\fBathlon-xp\fR" 4
  .IX Item "athlon-xp"
! .IP "\fBathlon-mp\fR" 4
  .IX Item "athlon-mp"
  .PD
! Improved \s-1AMD\s0 Athlon \s-1CPU\s0 with \s-1MMX,\s0 3DNow!, enhanced 3DNow! and full \s-1SSE\s0
  instruction set support.
! .IP "\fBk8\fR" 4
  .IX Item "k8"
  .PD 0
! .IP "\fBopteron\fR" 4
  .IX Item "opteron"
! .IP "\fBathlon64\fR" 4
  .IX Item "athlon64"
! .IP "\fBathlon-fx\fR" 4
  .IX Item "athlon-fx"
  .PD
! Processors based on the \s-1AMD K8\s0 core with x86\-64 instruction set support,
! including the \s-1AMD\s0 Opteron, Athlon 64, and Athlon 64 \s-1FX\s0 processors.
! (This supersets \s-1MMX, SSE, SSE2,\s0 3DNow!, enhanced 3DNow! and 64\-bit
  instruction set extensions.)
! .IP "\fBk8\-sse3\fR" 4
  .IX Item "k8-sse3"
  .PD 0
! .IP "\fBopteron\-sse3\fR" 4
  .IX Item "opteron-sse3"
! .IP "\fBathlon64\-sse3\fR" 4
  .IX Item "athlon64-sse3"
  .PD
! Improved versions of \s-1AMD K8\s0 cores with \s-1SSE3\s0 instruction set support.
! .IP "\fBamdfam10\fR" 4
  .IX Item "amdfam10"
  .PD 0
! .IP "\fBbarcelona\fR" 4
  .IX Item "barcelona"
  .PD
! CPUs based on \s-1AMD\s0 Family 10h cores with x86\-64 instruction set support.  (This
! supersets \s-1MMX, SSE, SSE2, SSE3, SSE4A,\s0 3DNow!, enhanced 3DNow!, \s-1ABM\s0 and 64\-bit
  instruction set extensions.)
! .IP "\fBbdver1\fR" 4
  .IX Item "bdver1"
! CPUs based on \s-1AMD\s0 Family 15h cores with x86\-64 instruction set support.  (This
! supersets \s-1FMA4, AVX, XOP, LWP, AES, PCLMUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A,
! SSSE3, SSE4.1, SSE4.2, ABM\s0 and 64\-bit instruction set extensions.)
! .IP "\fBbdver2\fR" 4
  .IX Item "bdver2"
! \&\s-1AMD\s0 Family 15h core based CPUs with x86\-64 instruction set support.  (This
! supersets \s-1BMI, TBM, F16C, FMA, FMA4, AVX, XOP, LWP, AES, PCLMUL, CX16, MMX,
! SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM\s0 and 64\-bit instruction set
  extensions.)
! .IP "\fBbdver3\fR" 4
  .IX Item "bdver3"
! \&\s-1AMD\s0 Family 15h core based CPUs with x86\-64 instruction set support.  (This
! supersets \s-1BMI, TBM, F16C, FMA, FMA4, FSGSBASE, AVX, XOP, LWP, AES,
! PCLMUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM\s0 and
  64\-bit instruction set extensions.)
! .IP "\fBbdver4\fR" 4
  .IX Item "bdver4"
! \&\s-1AMD\s0 Family 15h core based CPUs with x86\-64 instruction set support.  (This
! supersets \s-1BMI, BMI2, TBM, F16C, FMA, FMA4, FSGSBASE, AVX, AVX2, XOP, LWP,
  AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1,
! SSE4.2, ABM\s0 and 64\-bit instruction set extensions.)
! .IP "\fBznver1\fR" 4
  .IX Item "znver1"
! \&\s-1AMD\s0 Family 17h core based CPUs with x86\-64 instruction set support.  (This
! supersets \s-1BMI, BMI2, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX,
  SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3,
! SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT,\s0 and 64\-bit
  instruction set extensions.)
! .IP "\fBznver2\fR" 4
  .IX Item "znver2"
! \&\s-1AMD\s0 Family 17h core based CPUs with x86\-64 instruction set support. (This
! supersets \s-1BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED,
  MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A,
  SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID,
! WBNOINVD,\s0 and 64\-bit instruction set extensions.)
! .IP "\fBznver3\fR" 4
  .IX Item "znver3"
! \&\s-1AMD\s0 Family 19h core based CPUs with x86\-64 instruction set support. (This
! supersets \s-1BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED,
  MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A,
  SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID,
! WBNOINVD, PKU, VPCLMULQDQ, VAES,\s0 and 64\-bit instruction set extensions.)
! .IP "\fBznver4\fR" 4
  .IX Item "znver4"
! \&\s-1AMD\s0 Family 19h core based CPUs with x86\-64 instruction set support. (This
! supersets \s-1BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED,
  MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A,
  SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID,
  WBNOINVD, PKU, VPCLMULQDQ, VAES, AVX512F, AVX512DQ, AVX512IFMA, AVX512CD,
  AVX512BW, AVX512VL, AVX512BF16, AVX512VBMI, AVX512VBMI2, AVX512VNNI,
! AVX512BITALG, AVX512VPOPCNTDQ, GFNI\s0 and 64\-bit instruction set extensions.)
! .IP "\fBznver5\fR" 4
  .IX Item "znver5"
! \&\s-1AMD\s0 Family 1ah core based CPUs with x86\-64 instruction set support. (This
! supersets \s-1BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED,
  MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A,
  SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID,
  WBNOINVD, PKU, VPCLMULQDQ, VAES, AVX512F, AVX512DQ, AVX512IFMA, AVX512CD,
  AVX512BW, AVX512VL, AVX512BF16, AVX512VBMI, AVX512VBMI2, AVX512VNNI,
  AVX512BITALG, AVX512VPOPCNTDQ, GFNI, AVXVNNI, MOVDIRI, MOVDIR64B,
! AVX512VP2INTERSECT, PREFETCHI\s0 and 64\-bit instruction set extensions.)
! .IP "\fBbtver1\fR" 4
  .IX Item "btver1"
! CPUs based on \s-1AMD\s0 Family 14h cores with x86\-64 instruction set support.  (This
! supersets \s-1MMX, SSE, SSE2, SSE3, SSSE3, SSE4A, CX16, ABM\s0 and 64\-bit
  instruction set extensions.)
! .IP "\fBbtver2\fR" 4
  .IX Item "btver2"
! CPUs based on \s-1AMD\s0 Family 16h cores with x86\-64 instruction set support. This
! includes \s-1MOVBE, F16C, BMI, AVX, PCLMUL, AES, SSE4.2, SSE4.1, CX16, ABM,
! SSE4A, SSSE3, SSE3, SSE2, SSE, MMX\s0 and 64\-bit instruction set extensions.
! .IP "\fBwinchip\-c6\fR" 4
  .IX Item "winchip-c6"
! \&\s-1IDT\s0 WinChip C6 \s-1CPU,\s0 dealt in same way as i486 with additional \s-1MMX\s0 instruction
  set support.
! .IP "\fBwinchip2\fR" 4
  .IX Item "winchip2"
! \&\s-1IDT\s0 WinChip 2 \s-1CPU,\s0 dealt in same way as i486 with additional \s-1MMX\s0 and 3DNow!
  instruction set support.
! .IP "\fBc3\fR" 4
  .IX Item "c3"
! \&\s-1VIA C3 CPU\s0 with \s-1MMX\s0 and 3DNow! instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBc3\-2\fR" 4
  .IX Item "c3-2"
! \&\s-1VIA C3\-2\s0 (Nehemiah/C5XL) \s-1CPU\s0 with \s-1MMX\s0 and \s-1SSE\s0 instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBc7\fR" 4
  .IX Item "c7"
! \&\s-1VIA C7\s0 (Esther) \s-1CPU\s0 with \s-1MMX, SSE, SSE2\s0 and \s-1SSE3\s0 instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBsamuel\-2\fR" 4
  .IX Item "samuel-2"
! \&\s-1VIA\s0 Eden Samuel 2 \s-1CPU\s0 with \s-1MMX\s0 and 3DNow! instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBnehemiah\fR" 4
  .IX Item "nehemiah"
! \&\s-1VIA\s0 Eden Nehemiah \s-1CPU\s0 with \s-1MMX\s0 and \s-1SSE\s0 instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBesther\fR" 4
  .IX Item "esther"
! \&\s-1VIA\s0 Eden Esther \s-1CPU\s0 with \s-1MMX, SSE, SSE2\s0 and \s-1SSE3\s0 instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBeden\-x2\fR" 4
  .IX Item "eden-x2"
! \&\s-1VIA\s0 Eden X2 \s-1CPU\s0 with x86\-64, \s-1MMX, SSE, SSE2\s0 and \s-1SSE3\s0 instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBeden\-x4\fR" 4
  .IX Item "eden-x4"
! \&\s-1VIA\s0 Eden X4 \s-1CPU\s0 with x86\-64, \s-1MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2,
! AVX\s0 and \s-1AVX2\s0 instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBnano\fR" 4
  .IX Item "nano"
! Generic \s-1VIA\s0 Nano \s-1CPU\s0 with x86\-64, \s-1MMX, SSE, SSE2, SSE3\s0 and \s-1SSSE3\s0
  instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBnano\-1000\fR" 4
  .IX Item "nano-1000"
! \&\s-1VIA\s0 Nano 1xxx \s-1CPU\s0 with x86\-64, \s-1MMX, SSE, SSE2, SSE3\s0 and \s-1SSSE3\s0
  instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBnano\-2000\fR" 4
  .IX Item "nano-2000"
! \&\s-1VIA\s0 Nano 2xxx \s-1CPU\s0 with x86\-64, \s-1MMX, SSE, SSE2, SSE3\s0 and \s-1SSSE3\s0
  instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBnano\-3000\fR" 4
  .IX Item "nano-3000"
! \&\s-1VIA\s0 Nano 3xxx \s-1CPU\s0 with x86\-64, \s-1MMX, SSE, SSE2, SSE3, SSSE3\s0 and \s-1SSE4.1\s0
  instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBnano\-x2\fR" 4
  .IX Item "nano-x2"
! \&\s-1VIA\s0 Nano Dual Core \s-1CPU\s0 with x86\-64, \s-1MMX, SSE, SSE2, SSE3, SSSE3\s0 and \s-1SSE4.1\s0
  instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBnano\-x4\fR" 4
  .IX Item "nano-x4"
! \&\s-1VIA\s0 Nano Quad Core \s-1CPU\s0 with x86\-64, \s-1MMX, SSE, SSE2, SSE3, SSSE3\s0 and \s-1SSE4.1\s0
  instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBlujiazui\fR" 4
  .IX Item "lujiazui"
! \&\s-1ZHAOXIN\s0 lujiazui \s-1CPU\s0 with x86\-64, \s-1MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
  SSE4.2, POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE, CX16,
! ABM, BMI, BMI2, FXSR, RDSEED\s0 instruction set support.  While the CPUs
! do support \s-1AVX\s0 and F16C, these aren't enabled by \f(CW\*(C`\-march=lujiazui\*(C'\fR
  for performance reasons.
! .IP "\fByongfeng\fR" 4
  .IX Item "yongfeng"
! \&\s-1ZHAOXIN\s0 yongfeng \s-1CPU\s0 with x86\-64, \s-1MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
  SSE4.2, AVX, POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE, CX16,
! ABM, BMI, BMI2, F16C, FXSR, RDSEED, AVX2, FMA, SHA, LZCNT\s0
  instruction set support.
! .IP "\fBshijidadao\fR" 4
  .IX Item "shijidadao"
! \&\s-1ZHAOXIN\s0 shijidadao \s-1CPU\s0 with x86\-64, \s-1MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
  SSE4.2, AVX, POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE, CX16,
! ABM, BMI, BMI2, F16C, FXSR, RDSEED, AVX2, FMA, SHA, LZCNT\s0
  instruction set support.
! .IP "\fBgeode\fR" 4
  .IX Item "geode"
! \&\s-1AMD\s0 Geode embedded processor with \s-1MMX\s0 and 3DNow! instruction set support.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mtune=\fR\fIcpu-type\fR" 4
  .IX Item "-mtune=cpu-type"
! Tune to \fIcpu-type\fR everything applicable about the generated code, except
! for the \s-1ABI\s0 and the set of available instructions.
! While picking a specific \fIcpu-type\fR schedules things appropriately
  for that particular chip, the compiler does not generate any code that
  cannot run on the default machine type unless you use a
! \&\fB\-march=\fR\fIcpu-type\fR option.
! For example, if \s-1GCC\s0 is configured for i686\-pc\-linux\-gnu
  then \fB\-mtune=pentium4\fR generates code that is tuned for Pentium 4
  but still runs on i686 machines.
  .Sp
! The choices for \fIcpu-type\fR are the same as for \fB\-march\fR.
! In addition, \fB\-mtune\fR supports 2 extra choices for \fIcpu-type\fR:
  .RS 4
! .IP "\fBgeneric\fR" 4
  .IX Item "generic"
! Produce code optimized for the most common \s-1IA32/AMD64/EM64T\s0 processors.
! If you know the \s-1CPU\s0 on which your code will run, then you should use
  the corresponding \fB\-mtune\fR or \fB\-march\fR option instead of
! \&\fB\-mtune=generic\fR.  But, if you do not know exactly what \s-1CPU\s0 users
  of your application will have, then you should use this option.
  .Sp
  As new processors are deployed in the marketplace, the behavior of this
  option will change.  Therefore, if you upgrade to a newer version of
! \&\s-1GCC,\s0 code generation controlled by this option will change to reflect
  the processors
! that are most common at the time that version of \s-1GCC\s0 is released.
  .Sp
  There is no \fB\-march=generic\fR option because \fB\-march\fR
  indicates the instruction set the compiler can use, and there is no
  generic instruction set applicable to all processors.  In contrast,
  \&\fB\-mtune\fR indicates the processor (or, in this case, collection of
  processors) for which the code is optimized.
! .IP "\fBintel\fR" 4
  .IX Item "intel"
  Produce code optimized for the most current Intel processors, which are
! Haswell and Silvermont for this version of \s-1GCC.\s0  If you know the \s-1CPU\s0
  on which your code will run, then you should use the corresponding
  \&\fB\-mtune\fR or \fB\-march\fR option instead of \fB\-mtune=intel\fR.
  But, if you want your application performs better on both Haswell and
--- 33927,34576 ----
  .IX Subsection "x86 Options"
  .PP
  These \fB\-m\fR options are defined for the x86 family of computers.
! .IP \fB\-march=\fR\fIcpu\-type\fR 4
  .IX Item "-march=cpu-type"
! Generate instructions for the machine type \fIcpu\-type\fR.  In contrast to
! \&\fB\-mtune=\fR\fIcpu\-type\fR, which merely tunes the generated code
! for the specified \fIcpu\-type\fR, \fB\-march=\fR\fIcpu\-type\fR allows GCC
  to generate code that may not run at all on processors other than the one
! indicated.  Specifying \fB\-march=\fR\fIcpu\-type\fR implies
! \&\fB\-mtune=\fR\fIcpu\-type\fR, except where noted otherwise.
  .Sp
! The choices for \fIcpu\-type\fR are:
  .RS 4
! .IP \fBnative\fR 4
  .IX Item "native"
! This selects the CPU to generate code for at compilation time by determining
  the processor type of the compiling machine.  Using \fB\-march=native\fR
  enables all instruction subsets supported by the local machine (hence
  the result might not run on different machines).  Using \fB\-mtune=native\fR
  produces code optimized for the local machine under the constraints
  of the selected instruction set.
! .IP \fBx86\-64\fR 4
  .IX Item "x86-64"
! A generic CPU with 64\-bit extensions, MMX, SSE, SSE2, and FXSR instruction set
  support.
! .IP \fBx86\-64\-v2\fR 4
  .IX Item "x86-64-v2"
  .PD 0
! .IP \fBx86\-64\-v3\fR 4
  .IX Item "x86-64-v3"
! .IP \fBx86\-64\-v4\fR 4
  .IX Item "x86-64-v4"
  .PD
! These choices for \fIcpu\-type\fR select the corresponding
! micro\-architecture level from the x86\-64 psABI.  On ABIs other than
! the x86\-64 psABI they select the same CPU features as the x86\-64 psABI
! documents for the particular micro\-architecture level.
  .Sp
! Since these \fIcpu\-type\fR values do not have a corresponding
  \&\fB\-mtune\fR setting, using \fB\-march\fR with these values enables
  generic tuning.  Specific tuning can be enabled using the
! \&\fB\-mtune=\fR\fIother\-cpu\-type\fR option with an appropriate
! \&\fIother\-cpu\-type\fR value.
! .IP \fBi386\fR 4
  .IX Item "i386"
! Original Intel i386 CPU.
! .IP \fBi486\fR 4
  .IX Item "i486"
! Intel i486 CPU.  (No scheduling is implemented for this chip.)
! .IP \fBi586\fR 4
  .IX Item "i586"
  .PD 0
! .IP \fBpentium\fR 4
  .IX Item "pentium"
  .PD
! Intel Pentium CPU with no MMX support.
! .IP \fBlakemont\fR 4
  .IX Item "lakemont"
! Intel Lakemont MCU, based on Intel Pentium CPU.
! .IP \fBpentium\-mmx\fR 4
  .IX Item "pentium-mmx"
! Intel Pentium MMX CPU, based on Pentium core with MMX instruction set support.
! .IP \fBpentiumpro\fR 4
  .IX Item "pentiumpro"
! Intel Pentium Pro CPU with no MMX support.
! .IP \fBi686\fR 4
  .IX Item "i686"
  When used with \fB\-march\fR, the Pentium Pro
  instruction set is used, so the code runs on all i686 family chips.
  When used with \fB\-mtune\fR, it has the same meaning as \fBgeneric\fR.
! .IP \fBpentium2\fR 4
  .IX Item "pentium2"
! Intel Pentium II CPU, based on Pentium Pro core with MMX and FXSR instruction
  set support.
! .IP \fBpentium3\fR 4
  .IX Item "pentium3"
  .PD 0
! .IP \fBpentium3m\fR 4
  .IX Item "pentium3m"
  .PD
! Intel Pentium III CPU, based on Pentium Pro core with MMX, FXSR and SSE
  instruction set support.
! .IP \fBpentium\-m\fR 4
  .IX Item "pentium-m"
! Intel Pentium M; low\-power version of Intel Pentium III CPU
! with MMX, SSE, SSE2 and FXSR instruction set support.  Used by Centrino
  notebooks.
! .IP \fBpentium4\fR 4
  .IX Item "pentium4"
  .PD 0
! .IP \fBpentium4m\fR 4
  .IX Item "pentium4m"
  .PD
! Intel Pentium 4 CPU with MMX, SSE, SSE2 and FXSR instruction set support.
! .IP \fBprescott\fR 4
  .IX Item "prescott"
! Improved version of Intel Pentium 4 CPU with MMX, SSE, SSE2, SSE3 and FXSR
  instruction set support.
! .IP \fBnocona\fR 4
  .IX Item "nocona"
! Improved version of Intel Pentium 4 CPU with 64\-bit extensions, MMX, SSE,
! SSE2, SSE3 and FXSR instruction set support.
! .IP \fBcore2\fR 4
  .IX Item "core2"
! Intel Core 2 CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, CX16,
! SAHF and FXSR instruction set support.
! .IP \fBnehalem\fR 4
  .IX Item "nehalem"
  .PD 0
! .IP \fBcorei7\fR 4
  .IX Item "corei7"
  .PD
! Intel Nehalem CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, CX16, SAHF and FXSR instruction set support.
! .IP \fBwestmere\fR 4
  .IX Item "westmere"
! Intel Westmere CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR and PCLMUL instruction set support.
! .IP \fBsandybridge\fR 4
  .IX Item "sandybridge"
  .PD 0
! .IP \fBcorei7\-avx\fR 4
  .IX Item "corei7-avx"
  .PD
! Intel Sandy Bridge CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE and PCLMUL instruction set
  support.
! .IP \fBivybridge\fR 4
  .IX Item "ivybridge"
  .PD 0
! .IP \fBcore\-avx\-i\fR 4
  .IX Item "core-avx-i"
  .PD
! Intel Ivy Bridge CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND
  and F16C instruction set support.
! .IP \fBhaswell\fR 4
  .IX Item "haswell"
  .PD 0
! .IP \fBcore\-avx2\fR 4
  .IX Item "core-avx2"
  .PD
! Intel Haswell CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
! F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE and HLE instruction set support.
! .IP \fBbroadwell\fR 4
  .IX Item "broadwell"
! Intel Broadwell CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
! F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX and PREFETCHW
  instruction set support.
! .IP \fBskylake\fR 4
  .IX Item "skylake"
! Intel Skylake CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
  F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES,
! CLFLUSHOPT, XSAVEC, XSAVES and SGX instruction set support.
! .IP \fBskylake\-avx512\fR 4
  .IX Item "skylake-avx512"
! Intel Skylake Server CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
  RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
  AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, CLWB, AVX512VL, AVX512BW,
! AVX512DQ and AVX512CD instruction set support.
! .IP \fBcascadelake\fR 4
  .IX Item "cascadelake"
! Intel Cascade Lake CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
  F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES,
  CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ,
! AVX512CD and AVX512VNNI instruction set support.
! .IP \fBcannonlake\fR 4
  .IX Item "cannonlake"
! Intel Cannon Lake Server CPU with 64\-bit extensions, MMX, SSE, SSE2,
  SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL,
  FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX,
  PREFETCHW, AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW,
! AVX512DQ, AVX512CD, PKU, AVX512VBMI, AVX512IFMA and SHA instruction set
  support.
! .IP \fBcooperlake\fR 4
  .IX Item "cooperlake"
! Intel Cooper Lake CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
  F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES,
  CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ,
! AVX512CD, AVX512VNNI and AVX512BF16 instruction set support.
! .IP \fBicelake\-client\fR 4
  .IX Item "icelake-client"
! Intel Ice Lake Client CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
  RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
  AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ,
  AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2
! , VPCLMULQDQ, AVX512BITALG, RDPID and AVX512VPOPCNTDQ instruction set support.
! .IP \fBicelake\-server\fR 4
  .IX Item "icelake-server"
! Intel Ice Lake Server CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
  RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
  AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ,
  AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2
! , VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD and CLWB
  instruction set support.
! .IP \fBtigerlake\fR 4
  .IX Item "tigerlake"
! Intel Tiger Lake CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
  F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES,
  CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD
  PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2,
  VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, MOVDIRI, MOVDIR64B, CLWB,
! AVX512VP2INTERSECT and KEYLOCKER instruction set support.
! .IP \fBrocketlake\fR 4
  .IX Item "rocketlake"
! Intel Rocket Lake CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
  F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES,
  CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD
  PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2,
! VPCLMULQDQ, AVX512BITALG, RDPID and AVX512VPOPCNTDQ instruction set support.
! .IP \fBalderlake\fR 4
  .IX Item "alderlake"
  .PD 0
! .IP \fBraptorlake\fR 4
  .IX Item "raptorlake"
! .IP \fBmeteorlake\fR 4
  .IX Item "meteorlake"
! .IP \fBgracemont\fR 4
  .IX Item "gracemont"
  .PD
! Intel Alder Lake/Raptor Lake/Meteor Lake/Gracemont CPU with 64\-bit extensions,
! MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW,
! PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX,
! GFNI\-SSE, CLWB, MOVDIRI, MOVDIR64B, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C,
! FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL and
! AVX\-VNNI instruction set support.
! .IP \fBarrowlake\fR 4
  .IX Item "arrowlake"
! Intel Arrow Lake CPU with 64\-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC,
! XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI\-SSE, CLWB, MOVDIRI,
  MOVDIR64B, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU,
! VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX\-VNNI, UINTR, AVXIFMA,
! AVXVNNIINT8, AVXNECONVERT and CMPCCXADD instruction set support.
! .IP \fBarrowlake\-s\fR 4
  .IX Item "arrowlake-s"
  .PD 0
! .IP \fBlunarlake\fR 4
  .IX Item "lunarlake"
  .PD
! Intel Arrow Lake S/Lunar Lake CPU with 64\-bit extensions, MOVBE, MMX, SSE,
  SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND,
! XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI\-SSE, CLWB,
  MOVDIRI, MOVDIR64B, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT,
! PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX\-VNNI, UINTR,
! AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3 and
! SM4 instruction set support.
! .IP \fBpantherlake\fR 4
  .IX Item "pantherlake"
! Intel Panther Lake CPU with 64\-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC,
! XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI\-SSE, CLWB, MOVDIRI,
  MOVDIR64B, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU,
! VAES, VPCLMULQDQ, SERIALIZE, HRESET, AVX\-VNNI, UINTR, AVXIFMA, AVXVNNIINT8,
! AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3 and SM4 instruction set
! support.
! .IP \fBsapphirerapids\fR 4
  .IX Item "sapphirerapids"
  .PD 0
! .IP \fBemeraldrapids\fR 4
  .IX Item "emeraldrapids"
  .PD
! Intel Sapphire Rapids/Emerald Rapids CPU with 64\-bit extensions, MMX, SSE,
  SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL,
  FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX,
  PREFETCHW, AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW,
  AVX512DQ, AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES,
  AVX512VBMI2, VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG,
  WBNOINVD, CLWB, MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG,
! SERIALIZE, TSXLDTRK, UINTR, AMX\-BF16, AMX\-TILE, AMX\-INT8, AVX\-VNNI, AVX512\-FP16
! and AVX512BF16 instruction set support.
! .IP \fBgraniterapids\fR 4
  .IX Item "graniterapids"
! Intel Granite Rapids CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
  RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
  AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ,
  AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2,
  VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD, CLWB,
  MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK,
! UINTR, AMX\-BF16, AMX\-TILE, AMX\-INT8, AVX\-VNNI, AVX512\-FP16, AVX512BF16, AMX\-FP16
! and PREFETCHI instruction set support.
! .IP \fBgraniterapids\-d\fR 4
  .IX Item "graniterapids-d"
! Intel Granite Rapids D CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
  RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
  AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ,
  AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2,
  VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD, CLWB,
  MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK,
! UINTR, AMX\-BF16, AMX\-TILE, AMX\-INT8, AVX\-VNNI, AVX512FP16, AVX512BF16, AMX\-FP16,
! PREFETCHI and AMX\-COMPLEX instruction set support.
! .IP \fBdiamondrapids\fR 4
  .IX Item "diamondrapids"
! Intel Diamond Rapids CPU with 64\-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
  RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
  AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ,
  AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2,
  VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD, CLWB,
  MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK,
! UINTR, AMX\-BF16, AMX\-TILE, AMX\-INT8, AVX\-VNNI, AVX512FP16, AVX512BF16, AMX\-FP16,
! PREFETCHI, AMX\-COMPLEX, AVX10.1\-512, AVX\-IFMA, AVX\-NE\-CONVERT, AVX\-VNNI\-INT16,
! AVX\-VNNI\-INT8, CMPccXADD, SHA512, SM3, SM4, AVX10.2\-512, APX_F, AMX\-AVX512,
! AMX\-FP8, AMX\-TF32, MOVRS and AMX\-MOVRS instruction set support.
! .IP \fBbonnell\fR 4
  .IX Item "bonnell"
  .PD 0
! .IP \fBatom\fR 4
  .IX Item "atom"
  .PD
! Intel Bonnell CPU with 64\-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3 and SSSE3
  instruction set support.
! .IP \fBsilvermont\fR 4
  .IX Item "silvermont"
  .PD 0
! .IP \fBslm\fR 4
  .IX Item "slm"
  .PD
! Intel Silvermont CPU with 64\-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, PCLMUL, PREFETCHW and RDRND
  instruction set support.
! .IP \fBgoldmont\fR 4
  .IX Item "goldmont"
! Intel Goldmont CPU with 64\-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, PCLMUL, PREFETCHW, RDRND, AES, SHA,
! RDSEED, XSAVE, XSAVEC, XSAVES, XSAVEOPT, CLFLUSHOPT and FSGSBASE instruction
  set support.
! .IP \fBgoldmont\-plus\fR 4
  .IX Item "goldmont-plus"
! Intel Goldmont Plus CPU with 64\-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, PCLMUL, PREFETCHW, RDRND, AES,
  SHA, RDSEED, XSAVE, XSAVEC, XSAVES, XSAVEOPT, CLFLUSHOPT, FSGSBASE, PTWRITE,
! RDPID and SGX instruction set support.
! .IP \fBtremont\fR 4
  .IX Item "tremont"
! Intel Tremont CPU with 64\-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, PCLMUL, PREFETCHW, RDRND, AES, SHA,
  RDSEED, XSAVE, XSAVEC, XSAVES, XSAVEOPT, CLFLUSHOPT, FSGSBASE, PTWRITE, RDPID,
! SGX, CLWB, GFNI\-SSE, MOVDIRI, MOVDIR64B, CLDEMOTE and WAITPKG instruction set
  support.
! .IP \fBsierraforest\fR 4
  .IX Item "sierraforest"
! Intel Sierra Forest CPU with 64\-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC,
! XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI\-SSE, CLWB, MOVDIRI,
  MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT,
! PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX\-VNNI,
! AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, ENQCMD and UINTR instruction set
  support.
! .IP \fBgrandridge\fR 4
  .IX Item "grandridge"
! Intel Grand Ridge CPU with 64\-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC,
! XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI\-SSE, CLWB, MOVDIRI,
  MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT,
! PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX\-VNNI,
! AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, ENQCMD and UINTR instruction set
  support.
! .IP \fBclearwaterforest\fR 4
  .IX Item "clearwaterforest"
! Intel Clearwater Forest CPU with 64\-bit extensions, MOVBE, MMX, SSE, SSE2,
  SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE,
! XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI\-SSE, CLWB,
  MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA,
! LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, AVX\-VNNI, ENQCMD,
  UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512,
! SM3, SM4, USER_MSR and PREFETCHI instruction set support.
! .IP \fBk6\fR 4
  .IX Item "k6"
! AMD K6 CPU with MMX instruction set support.
! .IP \fBk6\-2\fR 4
  .IX Item "k6-2"
  .PD 0
! .IP \fBk6\-3\fR 4
  .IX Item "k6-3"
  .PD
! Improved versions of AMD K6 CPU with MMX and 3DNow! instruction set support.
! .IP \fBathlon\fR 4
  .IX Item "athlon"
  .PD 0
! .IP \fBathlon\-tbird\fR 4
  .IX Item "athlon-tbird"
  .PD
! AMD Athlon CPU with MMX, 3dNOW!, enhanced 3DNow! and SSE prefetch instructions
  support.
! .IP \fBathlon\-4\fR 4
  .IX Item "athlon-4"
  .PD 0
! .IP \fBathlon\-xp\fR 4
  .IX Item "athlon-xp"
! .IP \fBathlon\-mp\fR 4
  .IX Item "athlon-mp"
  .PD
! Improved AMD Athlon CPU with MMX, 3DNow!, enhanced 3DNow! and full SSE
  instruction set support.
! .IP \fBk8\fR 4
  .IX Item "k8"
  .PD 0
! .IP \fBopteron\fR 4
  .IX Item "opteron"
! .IP \fBathlon64\fR 4
  .IX Item "athlon64"
! .IP \fBathlon\-fx\fR 4
  .IX Item "athlon-fx"
  .PD
! Processors based on the AMD K8 core with x86\-64 instruction set support,
! including the AMD Opteron, Athlon 64, and Athlon 64 FX processors.
! (This supersets MMX, SSE, SSE2, 3DNow!, enhanced 3DNow! and 64\-bit
  instruction set extensions.)
! .IP \fBk8\-sse3\fR 4
  .IX Item "k8-sse3"
  .PD 0
! .IP \fBopteron\-sse3\fR 4
  .IX Item "opteron-sse3"
! .IP \fBathlon64\-sse3\fR 4
  .IX Item "athlon64-sse3"
  .PD
! Improved versions of AMD K8 cores with SSE3 instruction set support.
! .IP \fBamdfam10\fR 4
  .IX Item "amdfam10"
  .PD 0
! .IP \fBbarcelona\fR 4
  .IX Item "barcelona"
  .PD
! CPUs based on AMD Family 10h cores with x86\-64 instruction set support.  (This
! supersets MMX, SSE, SSE2, SSE3, SSE4A, 3DNow!, enhanced 3DNow!, ABM and 64\-bit
  instruction set extensions.)
! .IP \fBbdver1\fR 4
  .IX Item "bdver1"
! CPUs based on AMD Family 15h cores with x86\-64 instruction set support.  (This
! supersets FMA4, AVX, XOP, LWP, AES, PCLMUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A,
! SSSE3, SSE4.1, SSE4.2, ABM and 64\-bit instruction set extensions.)
! .IP \fBbdver2\fR 4
  .IX Item "bdver2"
! AMD Family 15h core based CPUs with x86\-64 instruction set support.  (This
! supersets BMI, TBM, F16C, FMA, FMA4, AVX, XOP, LWP, AES, PCLMUL, CX16, MMX,
! SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM and 64\-bit instruction set
  extensions.)
! .IP \fBbdver3\fR 4
  .IX Item "bdver3"
! AMD Family 15h core based CPUs with x86\-64 instruction set support.  (This
! supersets BMI, TBM, F16C, FMA, FMA4, FSGSBASE, AVX, XOP, LWP, AES,
! PCLMUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM and
  64\-bit instruction set extensions.)
! .IP \fBbdver4\fR 4
  .IX Item "bdver4"
! AMD Family 15h core based CPUs with x86\-64 instruction set support.  (This
! supersets BMI, BMI2, TBM, F16C, FMA, FMA4, FSGSBASE, AVX, AVX2, XOP, LWP,
  AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1,
! SSE4.2, ABM and 64\-bit instruction set extensions.)
! .IP \fBznver1\fR 4
  .IX Item "znver1"
! AMD Family 17h core based CPUs with x86\-64 instruction set support.  (This
! supersets BMI, BMI2, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX,
  SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3,
! SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, and 64\-bit
  instruction set extensions.)
! .IP \fBznver2\fR 4
  .IX Item "znver2"
! AMD Family 17h core based CPUs with x86\-64 instruction set support. (This
! supersets BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED,
  MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A,
  SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID,
! WBNOINVD, and 64\-bit instruction set extensions.)
! .IP \fBznver3\fR 4
  .IX Item "znver3"
! AMD Family 19h core based CPUs with x86\-64 instruction set support. (This
! supersets BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED,
  MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A,
  SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID,
! WBNOINVD, PKU, VPCLMULQDQ, VAES, and 64\-bit instruction set extensions.)
! .IP \fBznver4\fR 4
  .IX Item "znver4"
! AMD Family 19h core based CPUs with x86\-64 instruction set support. (This
! supersets BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED,
  MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A,
  SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID,
  WBNOINVD, PKU, VPCLMULQDQ, VAES, AVX512F, AVX512DQ, AVX512IFMA, AVX512CD,
  AVX512BW, AVX512VL, AVX512BF16, AVX512VBMI, AVX512VBMI2, AVX512VNNI,
! AVX512BITALG, AVX512VPOPCNTDQ, GFNI and 64\-bit instruction set extensions.)
! .IP \fBznver5\fR 4
  .IX Item "znver5"
! AMD Family 1ah core based CPUs with x86\-64 instruction set support. (This
! supersets BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED,
  MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A,
  SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID,
  WBNOINVD, PKU, VPCLMULQDQ, VAES, AVX512F, AVX512DQ, AVX512IFMA, AVX512CD,
  AVX512BW, AVX512VL, AVX512BF16, AVX512VBMI, AVX512VBMI2, AVX512VNNI,
  AVX512BITALG, AVX512VPOPCNTDQ, GFNI, AVXVNNI, MOVDIRI, MOVDIR64B,
! AVX512VP2INTERSECT, PREFETCHI and 64\-bit instruction set extensions.)
! .IP \fBbtver1\fR 4
  .IX Item "btver1"
! CPUs based on AMD Family 14h cores with x86\-64 instruction set support.  (This
! supersets MMX, SSE, SSE2, SSE3, SSSE3, SSE4A, CX16, ABM and 64\-bit
  instruction set extensions.)
! .IP \fBbtver2\fR 4
  .IX Item "btver2"
! CPUs based on AMD Family 16h cores with x86\-64 instruction set support. This
! includes MOVBE, F16C, BMI, AVX, PCLMUL, AES, SSE4.2, SSE4.1, CX16, ABM,
! SSE4A, SSSE3, SSE3, SSE2, SSE, MMX and 64\-bit instruction set extensions.
! .IP \fBwinchip\-c6\fR 4
  .IX Item "winchip-c6"
! IDT WinChip C6 CPU, dealt in same way as i486 with additional MMX instruction
  set support.
! .IP \fBwinchip2\fR 4
  .IX Item "winchip2"
! IDT WinChip 2 CPU, dealt in same way as i486 with additional MMX and 3DNow!
  instruction set support.
! .IP \fBc3\fR 4
  .IX Item "c3"
! VIA C3 CPU with MMX and 3DNow! instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBc3\-2\fR 4
  .IX Item "c3-2"
! VIA C3\-2 (Nehemiah/C5XL) CPU with MMX and SSE instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBc7\fR 4
  .IX Item "c7"
! VIA C7 (Esther) CPU with MMX, SSE, SSE2 and SSE3 instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBsamuel\-2\fR 4
  .IX Item "samuel-2"
! VIA Eden Samuel 2 CPU with MMX and 3DNow! instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBnehemiah\fR 4
  .IX Item "nehemiah"
! VIA Eden Nehemiah CPU with MMX and SSE instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBesther\fR 4
  .IX Item "esther"
! VIA Eden Esther CPU with MMX, SSE, SSE2 and SSE3 instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBeden\-x2\fR 4
  .IX Item "eden-x2"
! VIA Eden X2 CPU with x86\-64, MMX, SSE, SSE2 and SSE3 instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBeden\-x4\fR 4
  .IX Item "eden-x4"
! VIA Eden X4 CPU with x86\-64, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2,
! AVX and AVX2 instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBnano\fR 4
  .IX Item "nano"
! Generic VIA Nano CPU with x86\-64, MMX, SSE, SSE2, SSE3 and SSSE3
  instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBnano\-1000\fR 4
  .IX Item "nano-1000"
! VIA Nano 1xxx CPU with x86\-64, MMX, SSE, SSE2, SSE3 and SSSE3
  instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBnano\-2000\fR 4
  .IX Item "nano-2000"
! VIA Nano 2xxx CPU with x86\-64, MMX, SSE, SSE2, SSE3 and SSSE3
  instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBnano\-3000\fR 4
  .IX Item "nano-3000"
! VIA Nano 3xxx CPU with x86\-64, MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1
  instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBnano\-x2\fR 4
  .IX Item "nano-x2"
! VIA Nano Dual Core CPU with x86\-64, MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1
  instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBnano\-x4\fR 4
  .IX Item "nano-x4"
! VIA Nano Quad Core CPU with x86\-64, MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1
  instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBlujiazui\fR 4
  .IX Item "lujiazui"
! ZHAOXIN lujiazui CPU with x86\-64, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
  SSE4.2, POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE, CX16,
! ABM, BMI, BMI2, FXSR, RDSEED instruction set support.  While the CPUs
! do support AVX and F16C, these aren\*(Aqt enabled by \f(CW\*(C`\-march=lujiazui\*(C'\fR
  for performance reasons.
! .IP \fByongfeng\fR 4
  .IX Item "yongfeng"
! ZHAOXIN yongfeng CPU with x86\-64, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
  SSE4.2, AVX, POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE, CX16,
! ABM, BMI, BMI2, F16C, FXSR, RDSEED, AVX2, FMA, SHA, LZCNT
  instruction set support.
! .IP \fBshijidadao\fR 4
  .IX Item "shijidadao"
! ZHAOXIN shijidadao CPU with x86\-64, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
  SSE4.2, AVX, POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE, CX16,
! ABM, BMI, BMI2, F16C, FXSR, RDSEED, AVX2, FMA, SHA, LZCNT
  instruction set support.
! .IP \fBgeode\fR 4
  .IX Item "geode"
! AMD Geode embedded processor with MMX and 3DNow! instruction set support.
  .RE
  .RS 4
  .RE
! .IP \fB\-mtune=\fR\fIcpu\-type\fR 4
  .IX Item "-mtune=cpu-type"
! Tune to \fIcpu\-type\fR everything applicable about the generated code, except
! for the ABI and the set of available instructions.
! While picking a specific \fIcpu\-type\fR schedules things appropriately
  for that particular chip, the compiler does not generate any code that
  cannot run on the default machine type unless you use a
! \&\fB\-march=\fR\fIcpu\-type\fR option.
! For example, if GCC is configured for i686\-pc\-linux\-gnu
  then \fB\-mtune=pentium4\fR generates code that is tuned for Pentium 4
  but still runs on i686 machines.
  .Sp
! The choices for \fIcpu\-type\fR are the same as for \fB\-march\fR.
! In addition, \fB\-mtune\fR supports 2 extra choices for \fIcpu\-type\fR:
  .RS 4
! .IP \fBgeneric\fR 4
  .IX Item "generic"
! Produce code optimized for the most common IA32/AMD64/EM64T processors.
! If you know the CPU on which your code will run, then you should use
  the corresponding \fB\-mtune\fR or \fB\-march\fR option instead of
! \&\fB\-mtune=generic\fR.  But, if you do not know exactly what CPU users
  of your application will have, then you should use this option.
  .Sp
  As new processors are deployed in the marketplace, the behavior of this
  option will change.  Therefore, if you upgrade to a newer version of
! GCC, code generation controlled by this option will change to reflect
  the processors
! that are most common at the time that version of GCC is released.
  .Sp
  There is no \fB\-march=generic\fR option because \fB\-march\fR
  indicates the instruction set the compiler can use, and there is no
  generic instruction set applicable to all processors.  In contrast,
  \&\fB\-mtune\fR indicates the processor (or, in this case, collection of
  processors) for which the code is optimized.
! .IP \fBintel\fR 4
  .IX Item "intel"
  Produce code optimized for the most current Intel processors, which are
! Haswell and Silvermont for this version of GCC.  If you know the CPU
  on which your code will run, then you should use the corresponding
  \&\fB\-mtune\fR or \fB\-march\fR option instead of \fB\-mtune=intel\fR.
  But, if you want your application performs better on both Haswell and
*************** Silvermont, then you should use this opt
*** 34644,34651 ****
  .Sp
  As new Intel processors are deployed in the marketplace, the behavior of
  this option will change.  Therefore, if you upgrade to a newer version of
! \&\s-1GCC,\s0 code generation controlled by this option will change to reflect
! the most current Intel processors at the time that version of \s-1GCC\s0 is
  released.
  .Sp
  There is no \fB\-march=intel\fR option because \fB\-march\fR indicates
--- 34578,34585 ----
  .Sp
  As new Intel processors are deployed in the marketplace, the behavior of
  this option will change.  Therefore, if you upgrade to a newer version of
! GCC, code generation controlled by this option will change to reflect
! the most current Intel processors at the time that version of GCC is
  released.
  .Sp
  There is no \fB\-march=intel\fR option because \fB\-march\fR indicates
*************** processors) for which the code is optimi
*** 34656,34691 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-mcpu=\fR\fIcpu-type\fR" 4
  .IX Item "-mcpu=cpu-type"
  A deprecated synonym for \fB\-mtune\fR.
! .IP "\fB\-mfpmath=\fR\fIunit\fR" 4
  .IX Item "-mfpmath=unit"
! Generate floating-point arithmetic for selected unit \fIunit\fR.  The choices
  for \fIunit\fR are:
  .RS 4
! .IP "\fB387\fR" 4
  .IX Item "387"
! Use the standard 387 floating-point coprocessor present on the majority of chips and
  emulated otherwise.  Code compiled with this option runs almost everywhere.
  The temporary results are computed in 80\-bit precision instead of the precision
  specified by the type, resulting in slightly different results compared to most
  of other chips.  See \fB\-ffloat\-store\fR for more detailed description.
  .Sp
! This is the default choice for non-Darwin x86\-32 targets.
! .IP "\fBsse\fR" 4
  .IX Item "sse"
! Use scalar floating-point instructions present in the \s-1SSE\s0 instruction set.
! This instruction set is supported by Pentium \s-1III\s0 and newer chips,
! and in the \s-1AMD\s0 line
! by Athlon\-4, Athlon \s-1XP\s0 and Athlon \s-1MP\s0 chips.  The earlier version of the \s-1SSE\s0
! instruction set supports only single-precision arithmetic, thus the double and
! extended-precision arithmetic are still done using 387.  A later version, present
! only in Pentium 4 and \s-1AMD\s0 x86\-64 chips, supports double-precision
  arithmetic too.
  .Sp
! For the x86\-32 compiler, you must use \fB\-march=\fR\fIcpu-type\fR, \fB\-msse\fR
! or \fB\-msse2\fR switches to enable \s-1SSE\s0 extensions and make this option
  effective.  For the x86\-64 compiler, these extensions are enabled by default.
  .Sp
  The resulting code should be considerably faster in the majority of cases and avoid
--- 34590,34625 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-mcpu=\fR\fIcpu\-type\fR 4
  .IX Item "-mcpu=cpu-type"
  A deprecated synonym for \fB\-mtune\fR.
! .IP \fB\-mfpmath=\fR\fIunit\fR 4
  .IX Item "-mfpmath=unit"
! Generate floating\-point arithmetic for selected unit \fIunit\fR.  The choices
  for \fIunit\fR are:
  .RS 4
! .IP \fB387\fR 4
  .IX Item "387"
! Use the standard 387 floating\-point coprocessor present on the majority of chips and
  emulated otherwise.  Code compiled with this option runs almost everywhere.
  The temporary results are computed in 80\-bit precision instead of the precision
  specified by the type, resulting in slightly different results compared to most
  of other chips.  See \fB\-ffloat\-store\fR for more detailed description.
  .Sp
! This is the default choice for non\-Darwin x86\-32 targets.
! .IP \fBsse\fR 4
  .IX Item "sse"
! Use scalar floating\-point instructions present in the SSE instruction set.
! This instruction set is supported by Pentium III and newer chips,
! and in the AMD line
! by Athlon\-4, Athlon XP and Athlon MP chips.  The earlier version of the SSE
! instruction set supports only single\-precision arithmetic, thus the double and
! extended\-precision arithmetic are still done using 387.  A later version, present
! only in Pentium 4 and AMD x86\-64 chips, supports double\-precision
  arithmetic too.
  .Sp
! For the x86\-32 compiler, you must use \fB\-march=\fR\fIcpu\-type\fR, \fB\-msse\fR
! or \fB\-msse2\fR switches to enable SSE extensions and make this option
  effective.  For the x86\-64 compiler, these extensions are enabled by default.
  .Sp
  The resulting code should be considerably faster in the majority of cases and avoid
*************** the numerical instability problems of 38
*** 34693,34786 ****
  code that expects temporaries to be 80 bits.
  .Sp
  This is the default choice for the x86\-64 compiler, Darwin x86\-32 targets,
! and the default choice for x86\-32 targets with the \s-1SSE2\s0 instruction set
  when \fB\-ffast\-math\fR is enabled.
! .IP "\fBsse,387\fR" 4
  .IX Item "sse,387"
  .PD 0
! .IP "\fBsse+387\fR" 4
  .IX Item "sse+387"
! .IP "\fBboth\fR" 4
  .IX Item "both"
  .PD
  Attempt to utilize both instruction sets at once.  This effectively doubles the
  amount of available registers, and on chips with separate execution units for
! 387 and \s-1SSE\s0 the execution resources too.  Use this option with care, as it is
! still experimental, because the \s-1GCC\s0 register allocator does not model separate
  functional units well, resulting in unstable performance.
  .RE
  .RS 4
  .RE
! .IP "\fB\-masm=\fR\fIdialect\fR" 4
  .IX Item "-masm=dialect"
  Output assembly instructions using selected \fIdialect\fR.  Also affects
  which dialect is used for basic \f(CW\*(C`asm\*(C'\fR and
  extended \f(CW\*(C`asm\*(C'\fR. Supported choices (in dialect
  order) are \fBatt\fR or \fBintel\fR. The default is \fBatt\fR. Darwin does
  not support \fBintel\fR.
! .IP "\fB\-mieee\-fp\fR" 4
  .IX Item "-mieee-fp"
  .PD 0
! .IP "\fB\-mno\-ieee\-fp\fR" 4
  .IX Item "-mno-ieee-fp"
  .PD
! Control whether or not the compiler uses \s-1IEEE\s0 floating-point
  comparisons.  These correctly handle the case where the result of a
  comparison is unordered.
! .IP "\fB\-m80387\fR" 4
  .IX Item "-m80387"
  .PD 0
! .IP "\fB\-mhard\-float\fR" 4
  .IX Item "-mhard-float"
  .PD
  Generate output containing 80387 instructions for floating point.
! .IP "\fB\-mno\-80387\fR" 4
  .IX Item "-mno-80387"
  .PD 0
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  .PD
  Generate output containing library calls for floating point.
  .Sp
! \&\fBWarning:\fR the requisite libraries are not part of \s-1GCC.\s0
! Normally the facilities of the machine's usual C compiler are used, but
! this cannot be done directly in cross-compilation.  You must make your
  own arrangements to provide suitable library functions for
! cross-compilation.
  .Sp
! On machines where a function returns floating-point results in the 80387
! register stack, some floating-point opcodes may be emitted even if
  \&\fB\-msoft\-float\fR is used.
! .IP "\fB\-mno\-fp\-ret\-in\-387\fR" 4
  .IX Item "-mno-fp-ret-in-387"
! Do not use the \s-1FPU\s0 registers for return values of functions.
  .Sp
  The usual calling convention has functions return values of types
! \&\f(CW\*(C`float\*(C'\fR and \f(CW\*(C`double\*(C'\fR in an \s-1FPU\s0 register, even if there
! is no \s-1FPU.\s0  The idea is that the operating system should emulate
! an \s-1FPU.\s0
  .Sp
  The option \fB\-mno\-fp\-ret\-in\-387\fR causes such values to be returned
! in ordinary \s-1CPU\s0 registers instead.
! .IP "\fB\-mno\-fancy\-math\-387\fR" 4
  .IX Item "-mno-fancy-math-387"
  Some 387 emulators do not support the \f(CW\*(C`sin\*(C'\fR, \f(CW\*(C`cos\*(C'\fR and
  \&\f(CW\*(C`sqrt\*(C'\fR instructions for the 387.  Specify this option to avoid
  generating those instructions.
  This option is overridden when \fB\-march\fR
! indicates that the target \s-1CPU\s0 always has an \s-1FPU\s0 and so the
  instruction does not need emulation.  These
  instructions are not generated unless you also use the
  \&\fB\-funsafe\-math\-optimizations\fR switch.
! .IP "\fB\-malign\-double\fR" 4
  .IX Item "-malign-double"
  .PD 0
! .IP "\fB\-mno\-align\-double\fR" 4
  .IX Item "-mno-align-double"
  .PD
! Control whether \s-1GCC\s0 aligns \f(CW\*(C`double\*(C'\fR, \f(CW\*(C`long double\*(C'\fR, and
! \&\f(CW\*(C`long long\*(C'\fR variables on a two-word boundary or a one-word
! boundary.  Aligning \f(CW\*(C`double\*(C'\fR variables on a two-word boundary
  produces code that runs somewhat faster on a Pentium at the
  expense of more memory.
  .Sp
--- 34627,34720 ----
  code that expects temporaries to be 80 bits.
  .Sp
  This is the default choice for the x86\-64 compiler, Darwin x86\-32 targets,
! and the default choice for x86\-32 targets with the SSE2 instruction set
  when \fB\-ffast\-math\fR is enabled.
! .IP \fBsse,387\fR 4
  .IX Item "sse,387"
  .PD 0
! .IP \fBsse+387\fR 4
  .IX Item "sse+387"
! .IP \fBboth\fR 4
  .IX Item "both"
  .PD
  Attempt to utilize both instruction sets at once.  This effectively doubles the
  amount of available registers, and on chips with separate execution units for
! 387 and SSE the execution resources too.  Use this option with care, as it is
! still experimental, because the GCC register allocator does not model separate
  functional units well, resulting in unstable performance.
  .RE
  .RS 4
  .RE
! .IP \fB\-masm=\fR\fIdialect\fR 4
  .IX Item "-masm=dialect"
  Output assembly instructions using selected \fIdialect\fR.  Also affects
  which dialect is used for basic \f(CW\*(C`asm\*(C'\fR and
  extended \f(CW\*(C`asm\*(C'\fR. Supported choices (in dialect
  order) are \fBatt\fR or \fBintel\fR. The default is \fBatt\fR. Darwin does
  not support \fBintel\fR.
! .IP \fB\-mieee\-fp\fR 4
  .IX Item "-mieee-fp"
  .PD 0
! .IP \fB\-mno\-ieee\-fp\fR 4
  .IX Item "-mno-ieee-fp"
  .PD
! Control whether or not the compiler uses IEEE floating\-point
  comparisons.  These correctly handle the case where the result of a
  comparison is unordered.
! .IP \fB\-m80387\fR 4
  .IX Item "-m80387"
  .PD 0
! .IP \fB\-mhard\-float\fR 4
  .IX Item "-mhard-float"
  .PD
  Generate output containing 80387 instructions for floating point.
! .IP \fB\-mno\-80387\fR 4
  .IX Item "-mno-80387"
  .PD 0
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  .PD
  Generate output containing library calls for floating point.
  .Sp
! \&\fBWarning:\fR the requisite libraries are not part of GCC.
! Normally the facilities of the machine\*(Aqs usual C compiler are used, but
! this cannot be done directly in cross\-compilation.  You must make your
  own arrangements to provide suitable library functions for
! cross\-compilation.
  .Sp
! On machines where a function returns floating\-point results in the 80387
! register stack, some floating\-point opcodes may be emitted even if
  \&\fB\-msoft\-float\fR is used.
! .IP \fB\-mno\-fp\-ret\-in\-387\fR 4
  .IX Item "-mno-fp-ret-in-387"
! Do not use the FPU registers for return values of functions.
  .Sp
  The usual calling convention has functions return values of types
! \&\f(CW\*(C`float\*(C'\fR and \f(CW\*(C`double\*(C'\fR in an FPU register, even if there
! is no FPU.  The idea is that the operating system should emulate
! an FPU.
  .Sp
  The option \fB\-mno\-fp\-ret\-in\-387\fR causes such values to be returned
! in ordinary CPU registers instead.
! .IP \fB\-mno\-fancy\-math\-387\fR 4
  .IX Item "-mno-fancy-math-387"
  Some 387 emulators do not support the \f(CW\*(C`sin\*(C'\fR, \f(CW\*(C`cos\*(C'\fR and
  \&\f(CW\*(C`sqrt\*(C'\fR instructions for the 387.  Specify this option to avoid
  generating those instructions.
  This option is overridden when \fB\-march\fR
! indicates that the target CPU always has an FPU and so the
  instruction does not need emulation.  These
  instructions are not generated unless you also use the
  \&\fB\-funsafe\-math\-optimizations\fR switch.
! .IP \fB\-malign\-double\fR 4
  .IX Item "-malign-double"
  .PD 0
! .IP \fB\-mno\-align\-double\fR 4
  .IX Item "-mno-align-double"
  .PD
! Control whether GCC aligns \f(CW\*(C`double\*(C'\fR, \f(CW\*(C`long double\*(C'\fR, and
! \&\f(CW\*(C`long long\*(C'\fR variables on a two\-word boundary or a one\-word
! boundary.  Aligning \f(CW\*(C`double\*(C'\fR variables on a two\-word boundary
  produces code that runs somewhat faster on a Pentium at the
  expense of more memory.
  .Sp
*************** structures containing the above types ar
*** 34791,34800 ****
  the published application binary interface specifications for the x86\-32
  and are not binary compatible with structures in code compiled
  without that switch.
! .IP "\fB\-m96bit\-long\-double\fR" 4
  .IX Item "-m96bit-long-double"
  .PD 0
! .IP "\fB\-m128bit\-long\-double\fR" 4
  .IX Item "-m128bit-long-double"
  .PD
  These switches control the size of \f(CW\*(C`long double\*(C'\fR type.  The x86\-32
--- 34725,34734 ----
  the published application binary interface specifications for the x86\-32
  and are not binary compatible with structures in code compiled
  without that switch.
! .IP \fB\-m96bit\-long\-double\fR 4
  .IX Item "-m96bit-long-double"
  .PD 0
! .IP \fB\-m128bit\-long\-double\fR 4
  .IX Item "-m128bit-long-double"
  .PD
  These switches control the size of \f(CW\*(C`long double\*(C'\fR type.  The x86\-32
*************** so \fB\-m96bit\-long\-double\fR is the d
*** 34803,34831 ****
  .Sp
  Modern architectures (Pentium and newer) prefer \f(CW\*(C`long double\*(C'\fR
  to be aligned to an 8\- or 16\-byte boundary.  In arrays or structures
! conforming to the \s-1ABI,\s0 this is not possible.  So specifying
  \&\fB\-m128bit\-long\-double\fR aligns \f(CW\*(C`long double\*(C'\fR
  to a 16\-byte boundary by padding the \f(CW\*(C`long double\*(C'\fR with an additional
  32\-bit zero.
  .Sp
  In the x86\-64 compiler, \fB\-m128bit\-long\-double\fR is the default choice as
! its \s-1ABI\s0 specifies that \f(CW\*(C`long double\*(C'\fR is aligned on 16\-byte boundary.
  .Sp
  Notice that neither of these options enable any extra precision over the x87
  standard of 80 bits for a \f(CW\*(C`long double\*(C'\fR.
  .Sp
! \&\fBWarning:\fR if you override the default value for your target \s-1ABI,\s0 this
  changes the size of
  structures and arrays containing \f(CW\*(C`long double\*(C'\fR variables,
  as well as modifying the function calling convention for functions taking
! \&\f(CW\*(C`long double\*(C'\fR.  Hence they are not binary-compatible
  with code compiled without that switch.
! .IP "\fB\-mlong\-double\-64\fR" 4
  .IX Item "-mlong-double-64"
  .PD 0
! .IP "\fB\-mlong\-double\-80\fR" 4
  .IX Item "-mlong-double-80"
! .IP "\fB\-mlong\-double\-128\fR" 4
  .IX Item "-mlong-double-128"
  .PD
  These switches control the size of \f(CW\*(C`long double\*(C'\fR type. A size
--- 34737,34765 ----
  .Sp
  Modern architectures (Pentium and newer) prefer \f(CW\*(C`long double\*(C'\fR
  to be aligned to an 8\- or 16\-byte boundary.  In arrays or structures
! conforming to the ABI, this is not possible.  So specifying
  \&\fB\-m128bit\-long\-double\fR aligns \f(CW\*(C`long double\*(C'\fR
  to a 16\-byte boundary by padding the \f(CW\*(C`long double\*(C'\fR with an additional
  32\-bit zero.
  .Sp
  In the x86\-64 compiler, \fB\-m128bit\-long\-double\fR is the default choice as
! its ABI specifies that \f(CW\*(C`long double\*(C'\fR is aligned on 16\-byte boundary.
  .Sp
  Notice that neither of these options enable any extra precision over the x87
  standard of 80 bits for a \f(CW\*(C`long double\*(C'\fR.
  .Sp
! \&\fBWarning:\fR if you override the default value for your target ABI, this
  changes the size of
  structures and arrays containing \f(CW\*(C`long double\*(C'\fR variables,
  as well as modifying the function calling convention for functions taking
! \&\f(CW\*(C`long double\*(C'\fR.  Hence they are not binary\-compatible
  with code compiled without that switch.
! .IP \fB\-mlong\-double\-64\fR 4
  .IX Item "-mlong-double-64"
  .PD 0
! .IP \fB\-mlong\-double\-80\fR 4
  .IX Item "-mlong-double-80"
! .IP \fB\-mlong\-double\-128\fR 4
  .IX Item "-mlong-double-128"
  .PD
  These switches control the size of \f(CW\*(C`long double\*(C'\fR type. A size
*************** type. This is the default for 32\-bit Bi
*** 34834,34861 ****
  of 128 bits makes the \f(CW\*(C`long double\*(C'\fR type equivalent to the
  \&\f(CW\*(C`_\|_float128\*(C'\fR type. This is the default for 64\-bit Bionic C library.
  .Sp
! \&\fBWarning:\fR if you override the default value for your target \s-1ABI,\s0 this
  changes the size of
  structures and arrays containing \f(CW\*(C`long double\*(C'\fR variables,
  as well as modifying the function calling convention for functions taking
! \&\f(CW\*(C`long double\*(C'\fR.  Hence they are not binary-compatible
  with code compiled without that switch.
! .IP "\fB\-malign\-data=\fR\fItype\fR" 4
  .IX Item "-malign-data=type"
! Control how \s-1GCC\s0 aligns variables.  Supported values for \fItype\fR are
! \&\fBcompat\fR uses increased alignment value compatible uses \s-1GCC 4.8\s0
  and earlier, \fBabi\fR uses alignment value as specified by the
  psABI, and \fBcacheline\fR uses increased alignment value to match
  the cache line size.  \fBcompat\fR is the default.
! .IP "\fB\-mlarge\-data\-threshold=\fR\fIthreshold\fR" 4
  .IX Item "-mlarge-data-threshold=threshold"
  When \fB\-mcmodel=medium\fR or \fB\-mcmodel=large\fR is specified, data
  objects larger than \fIthreshold\fR are placed in large data sections.  The
  default is 65535.
! .IP "\fB\-mrtd\fR" 4
  .IX Item "-mrtd"
! Use a different function-calling convention, in which functions that
! take a fixed number of arguments return with the \f(CW\*(C`ret \f(CInum\f(CW\*(C'\fR
  instruction, which pops their arguments while returning.  This saves one
  instruction in the caller since there is no need to pop the arguments
  there.
--- 34768,34795 ----
  of 128 bits makes the \f(CW\*(C`long double\*(C'\fR type equivalent to the
  \&\f(CW\*(C`_\|_float128\*(C'\fR type. This is the default for 64\-bit Bionic C library.
  .Sp
! \&\fBWarning:\fR if you override the default value for your target ABI, this
  changes the size of
  structures and arrays containing \f(CW\*(C`long double\*(C'\fR variables,
  as well as modifying the function calling convention for functions taking
! \&\f(CW\*(C`long double\*(C'\fR.  Hence they are not binary\-compatible
  with code compiled without that switch.
! .IP \fB\-malign\-data=\fR\fItype\fR 4
  .IX Item "-malign-data=type"
! Control how GCC aligns variables.  Supported values for \fItype\fR are
! \&\fBcompat\fR uses increased alignment value compatible uses GCC 4.8
  and earlier, \fBabi\fR uses alignment value as specified by the
  psABI, and \fBcacheline\fR uses increased alignment value to match
  the cache line size.  \fBcompat\fR is the default.
! .IP \fB\-mlarge\-data\-threshold=\fR\fIthreshold\fR 4
  .IX Item "-mlarge-data-threshold=threshold"
  When \fB\-mcmodel=medium\fR or \fB\-mcmodel=large\fR is specified, data
  objects larger than \fIthreshold\fR are placed in large data sections.  The
  default is 65535.
! .IP \fB\-mrtd\fR 4
  .IX Item "-mrtd"
! Use a different function\-calling convention, in which functions that
! take a fixed number of arguments return with the \f(CW\*(C`ret \fR\f(CInum\fR\f(CW\*(C'\fR
  instruction, which pops their arguments while returning.  This saves one
  instruction in the caller since there is no need to pop the arguments
  there.
*************** functions.
*** 34877,34883 ****
  In addition, seriously incorrect code results if you call a
  function with too many arguments.  (Normally, extra arguments are
  harmlessly ignored.)
! .IP "\fB\-mregparm=\fR\fInum\fR" 4
  .IX Item "-mregparm=num"
  Control how many registers are used to pass integer arguments.  By
  default, no registers are used to pass arguments, and at most 3
--- 34811,34817 ----
  In addition, seriously incorrect code results if you call a
  function with too many arguments.  (Normally, extra arguments are
  harmlessly ignored.)
! .IP \fB\-mregparm=\fR\fInum\fR 4
  .IX Item "-mregparm=num"
  Control how many registers are used to pass integer arguments.  By
  default, no registers are used to pass arguments, and at most 3
*************** function by using the function attribute
*** 34888,34970 ****
  \&\fInum\fR is nonzero, then you must build all modules with the same
  value, including any libraries.  This includes the system libraries and
  startup modules.
! .IP "\fB\-msseregparm\fR" 4
  .IX Item "-msseregparm"
! Use \s-1SSE\s0 register passing conventions for float and double arguments
  and return values.  You can control this behavior for a specific
  function by using the function attribute \f(CW\*(C`sseregparm\*(C'\fR.
  .Sp
  \&\fBWarning:\fR if you use this switch then you must build all
  modules with the same value, including any libraries.  This includes
  the system libraries and startup modules.
! .IP "\fB\-mvect8\-ret\-in\-mem\fR" 4
  .IX Item "-mvect8-ret-in-mem"
! Return 8\-byte vectors in memory instead of \s-1MMX\s0 registers.  This is the
! default on VxWorks to match the \s-1ABI\s0 of the Sun Studio compilers until
  version 12.  \fIOnly\fR use this option if you need to remain
  compatible with existing code produced by those previous compiler
! versions or older versions of \s-1GCC.\s0
! .IP "\fB\-mpc32\fR" 4
  .IX Item "-mpc32"
  .PD 0
! .IP "\fB\-mpc64\fR" 4
  .IX Item "-mpc64"
! .IP "\fB\-mpc80\fR" 4
  .IX Item "-mpc80"
  .PD
! Set 80387 floating-point precision to 32, 64 or 80 bits.  When \fB\-mpc32\fR
! is specified, the significands of results of floating-point operations are
  rounded to 24 bits (single precision); \fB\-mpc64\fR rounds the
! significands of results of floating-point operations to 53 bits (double
  precision) and \fB\-mpc80\fR rounds the significands of results of
! floating-point operations to 64 bits (extended double precision), which is
! the default.  When this option is used, floating-point operations in higher
! precisions are not available to the programmer without setting the \s-1FPU\s0
  control word explicitly.
  .Sp
! Setting the rounding of floating-point operations to less than the default
  80 bits can speed some programs by 2% or more.  Note that some mathematical
! libraries assume that extended-precision (80\-bit) floating-point operations
  are enabled by default; routines in such libraries could suffer significant
! loss of accuracy, typically through so-called \*(L"catastrophic cancellation\*(R",
  when this option is used to set the precision to less than extended precision.
! .IP "\fB\-mdaz\-ftz\fR" 4
  .IX Item "-mdaz-ftz"
! The flush-to-zero (\s-1FTZ\s0) and denormals-are-zero (\s-1DAZ\s0) flags in the \s-1MXCSR\s0 register
! are used to control floating-point calculations.SSE and \s-1AVX\s0 instructions
! including scalar and vector instructions could benefit from enabling the \s-1FTZ\s0
! and \s-1DAZ\s0 flags when \fB\-mdaz\-ftz\fR is specified. Don't set \s-1FTZ/DAZ\s0 flags
  when \fB\-mno\-daz\-ftz\fR or \fB\-shared\fR is specified, \fB\-mdaz\-ftz\fR
! will set \s-1FTZ/DAZ\s0 flags even with \fB\-shared\fR.
! .IP "\fB\-mstackrealign\fR" 4
  .IX Item "-mstackrealign"
  Realign the stack at entry.  On the x86, the \fB\-mstackrealign\fR
  option generates an alternate prologue and epilogue that realigns the
! run-time stack if necessary.  This supports mixing legacy codes that keep
  4\-byte stack alignment with modern codes that keep 16\-byte stack alignment for
! \&\s-1SSE\s0 compatibility.  See also the attribute \f(CW\*(C`force_align_arg_pointer\*(C'\fR,
  applicable to individual functions.
! .IP "\fB\-mpreferred\-stack\-boundary=\fR\fInum\fR" 4
  .IX Item "-mpreferred-stack-boundary=num"
  Attempt to keep the stack boundary aligned to a 2 raised to \fInum\fR
  byte boundary.  If \fB\-mpreferred\-stack\-boundary\fR is not specified,
  the default is 4 (16 bytes or 128 bits).
  .Sp
  \&\fBWarning:\fR When generating code for the x86\-64 architecture with
! \&\s-1SSE\s0 extensions disabled, \fB\-mpreferred\-stack\-boundary=3\fR can be
  used to keep the stack boundary aligned to 8 byte boundary.  Since
! x86\-64 \s-1ABI\s0 require 16 byte stack alignment, this is \s-1ABI\s0 incompatible and
  intended to be used in controlled environment where stack space is
  important limitation.  This option leads to wrong code when functions
  compiled with 16 byte stack alignment (such as functions from a standard
! library) are called with misaligned stack.  In this case, \s-1SSE\s0
  instructions may lead to misaligned memory access traps.  In addition,
  variable arguments are handled incorrectly for 16 byte aligned
  objects (including x87 long double and _\|_int128), leading to wrong
  results.  You must build all modules with
  \&\fB\-mpreferred\-stack\-boundary=3\fR, including any libraries.  This
  includes the system libraries and startup modules.
! .IP "\fB\-mincoming\-stack\-boundary=\fR\fInum\fR" 4
  .IX Item "-mincoming-stack-boundary=num"
  Assume the incoming stack is aligned to a 2 raised to \fInum\fR byte
  boundary.  If \fB\-mincoming\-stack\-boundary\fR is not specified,
--- 34822,34904 ----
  \&\fInum\fR is nonzero, then you must build all modules with the same
  value, including any libraries.  This includes the system libraries and
  startup modules.
! .IP \fB\-msseregparm\fR 4
  .IX Item "-msseregparm"
! Use SSE register passing conventions for float and double arguments
  and return values.  You can control this behavior for a specific
  function by using the function attribute \f(CW\*(C`sseregparm\*(C'\fR.
  .Sp
  \&\fBWarning:\fR if you use this switch then you must build all
  modules with the same value, including any libraries.  This includes
  the system libraries and startup modules.
! .IP \fB\-mvect8\-ret\-in\-mem\fR 4
  .IX Item "-mvect8-ret-in-mem"
! Return 8\-byte vectors in memory instead of MMX registers.  This is the
! default on VxWorks to match the ABI of the Sun Studio compilers until
  version 12.  \fIOnly\fR use this option if you need to remain
  compatible with existing code produced by those previous compiler
! versions or older versions of GCC.
! .IP \fB\-mpc32\fR 4
  .IX Item "-mpc32"
  .PD 0
! .IP \fB\-mpc64\fR 4
  .IX Item "-mpc64"
! .IP \fB\-mpc80\fR 4
  .IX Item "-mpc80"
  .PD
! Set 80387 floating\-point precision to 32, 64 or 80 bits.  When \fB\-mpc32\fR
! is specified, the significands of results of floating\-point operations are
  rounded to 24 bits (single precision); \fB\-mpc64\fR rounds the
! significands of results of floating\-point operations to 53 bits (double
  precision) and \fB\-mpc80\fR rounds the significands of results of
! floating\-point operations to 64 bits (extended double precision), which is
! the default.  When this option is used, floating\-point operations in higher
! precisions are not available to the programmer without setting the FPU
  control word explicitly.
  .Sp
! Setting the rounding of floating\-point operations to less than the default
  80 bits can speed some programs by 2% or more.  Note that some mathematical
! libraries assume that extended\-precision (80\-bit) floating\-point operations
  are enabled by default; routines in such libraries could suffer significant
! loss of accuracy, typically through so\-called "catastrophic cancellation",
  when this option is used to set the precision to less than extended precision.
! .IP \fB\-mdaz\-ftz\fR 4
  .IX Item "-mdaz-ftz"
! The flush\-to\-zero (FTZ) and denormals\-are\-zero (DAZ) flags in the MXCSR register
! are used to control floating\-point calculations.SSE and AVX instructions
! including scalar and vector instructions could benefit from enabling the FTZ
! and DAZ flags when \fB\-mdaz\-ftz\fR is specified. Don\*(Aqt set FTZ/DAZ flags
  when \fB\-mno\-daz\-ftz\fR or \fB\-shared\fR is specified, \fB\-mdaz\-ftz\fR
! will set FTZ/DAZ flags even with \fB\-shared\fR.
! .IP \fB\-mstackrealign\fR 4
  .IX Item "-mstackrealign"
  Realign the stack at entry.  On the x86, the \fB\-mstackrealign\fR
  option generates an alternate prologue and epilogue that realigns the
! run\-time stack if necessary.  This supports mixing legacy codes that keep
  4\-byte stack alignment with modern codes that keep 16\-byte stack alignment for
! SSE compatibility.  See also the attribute \f(CW\*(C`force_align_arg_pointer\*(C'\fR,
  applicable to individual functions.
! .IP \fB\-mpreferred\-stack\-boundary=\fR\fInum\fR 4
  .IX Item "-mpreferred-stack-boundary=num"
  Attempt to keep the stack boundary aligned to a 2 raised to \fInum\fR
  byte boundary.  If \fB\-mpreferred\-stack\-boundary\fR is not specified,
  the default is 4 (16 bytes or 128 bits).
  .Sp
  \&\fBWarning:\fR When generating code for the x86\-64 architecture with
! SSE extensions disabled, \fB\-mpreferred\-stack\-boundary=3\fR can be
  used to keep the stack boundary aligned to 8 byte boundary.  Since
! x86\-64 ABI require 16 byte stack alignment, this is ABI incompatible and
  intended to be used in controlled environment where stack space is
  important limitation.  This option leads to wrong code when functions
  compiled with 16 byte stack alignment (such as functions from a standard
! library) are called with misaligned stack.  In this case, SSE
  instructions may lead to misaligned memory access traps.  In addition,
  variable arguments are handled incorrectly for 16 byte aligned
  objects (including x87 long double and _\|_int128), leading to wrong
  results.  You must build all modules with
  \&\fB\-mpreferred\-stack\-boundary=3\fR, including any libraries.  This
  includes the system libraries and startup modules.
! .IP \fB\-mincoming\-stack\-boundary=\fR\fInum\fR 4
  .IX Item "-mincoming-stack-boundary=num"
  Assume the incoming stack is aligned to a 2 raised to \fInum\fR byte
  boundary.  If \fB\-mincoming\-stack\-boundary\fR is not specified,
*************** the one specified by \fB\-mpreferred\-st
*** 34972,34979 ****
  .Sp
  On Pentium and Pentium Pro, \f(CW\*(C`double\*(C'\fR and \f(CW\*(C`long double\*(C'\fR values
  should be aligned to an 8\-byte boundary (see \fB\-malign\-double\fR) or
! suffer significant run time performance penalties.  On Pentium \s-1III,\s0 the
! Streaming \s-1SIMD\s0 Extension (\s-1SSE\s0) data type \f(CW\*(C`_\|_m128\*(C'\fR may not work
  properly if it is not 16\-byte aligned.
  .Sp
  To ensure proper alignment of this values on the stack, the stack boundary
--- 34906,34913 ----
  .Sp
  On Pentium and Pentium Pro, \f(CW\*(C`double\*(C'\fR and \f(CW\*(C`long double\*(C'\fR values
  should be aligned to an 8\-byte boundary (see \fB\-malign\-double\fR) or
! suffer significant run time performance penalties.  On Pentium III, the
! Streaming SIMD Extension (SSE) data type \f(CW\*(C`_\|_m128\*(C'\fR may not work
  properly if it is not 16\-byte aligned.
  .Sp
  To ensure proper alignment of this values on the stack, the stack boundary
*************** This extra alignment does consume extra
*** 34988,35420 ****
  increases code size.  Code that is sensitive to stack space usage, such
  as embedded systems and operating system kernels, may want to reduce the
  preferred alignment to \fB\-mpreferred\-stack\-boundary=2\fR.
! .IP "\fB\-mmmx\fR" 4
  .IX Item "-mmmx"
  .PD 0
! .IP "\fB\-msse\fR" 4
  .IX Item "-msse"
! .IP "\fB\-msse2\fR" 4
  .IX Item "-msse2"
! .IP "\fB\-msse3\fR" 4
  .IX Item "-msse3"
! .IP "\fB\-mssse3\fR" 4
  .IX Item "-mssse3"
! .IP "\fB\-msse4\fR" 4
  .IX Item "-msse4"
! .IP "\fB\-msse4a\fR" 4
  .IX Item "-msse4a"
! .IP "\fB\-msse4.1\fR" 4
  .IX Item "-msse4.1"
! .IP "\fB\-msse4.2\fR" 4
  .IX Item "-msse4.2"
! .IP "\fB\-mavx\fR" 4
  .IX Item "-mavx"
! .IP "\fB\-mavx2\fR" 4
  .IX Item "-mavx2"
! .IP "\fB\-mavx512f\fR" 4
  .IX Item "-mavx512f"
! .IP "\fB\-mavx512cd\fR" 4
  .IX Item "-mavx512cd"
! .IP "\fB\-mavx512vl\fR" 4
  .IX Item "-mavx512vl"
! .IP "\fB\-mavx512bw\fR" 4
  .IX Item "-mavx512bw"
! .IP "\fB\-mavx512dq\fR" 4
  .IX Item "-mavx512dq"
! .IP "\fB\-mavx512ifma\fR" 4
  .IX Item "-mavx512ifma"
! .IP "\fB\-mavx512vbmi\fR" 4
  .IX Item "-mavx512vbmi"
! .IP "\fB\-msha\fR" 4
  .IX Item "-msha"
! .IP "\fB\-maes\fR" 4
  .IX Item "-maes"
! .IP "\fB\-mpclmul\fR" 4
  .IX Item "-mpclmul"
! .IP "\fB\-mclflushopt\fR" 4
  .IX Item "-mclflushopt"
! .IP "\fB\-mclwb\fR" 4
  .IX Item "-mclwb"
! .IP "\fB\-mfsgsbase\fR" 4
  .IX Item "-mfsgsbase"
! .IP "\fB\-mptwrite\fR" 4
  .IX Item "-mptwrite"
! .IP "\fB\-mrdrnd\fR" 4
  .IX Item "-mrdrnd"
! .IP "\fB\-mf16c\fR" 4
  .IX Item "-mf16c"
! .IP "\fB\-mfma\fR" 4
  .IX Item "-mfma"
! .IP "\fB\-mpconfig\fR" 4
  .IX Item "-mpconfig"
! .IP "\fB\-mwbnoinvd\fR" 4
  .IX Item "-mwbnoinvd"
! .IP "\fB\-mfma4\fR" 4
  .IX Item "-mfma4"
! .IP "\fB\-mprfchw\fR" 4
  .IX Item "-mprfchw"
! .IP "\fB\-mrdpid\fR" 4
  .IX Item "-mrdpid"
! .IP "\fB\-mrdseed\fR" 4
  .IX Item "-mrdseed"
! .IP "\fB\-msgx\fR" 4
  .IX Item "-msgx"
! .IP "\fB\-mxop\fR" 4
  .IX Item "-mxop"
! .IP "\fB\-mlwp\fR" 4
  .IX Item "-mlwp"
! .IP "\fB\-m3dnow\fR" 4
  .IX Item "-m3dnow"
! .IP "\fB\-m3dnowa\fR" 4
  .IX Item "-m3dnowa"
! .IP "\fB\-mpopcnt\fR" 4
  .IX Item "-mpopcnt"
! .IP "\fB\-mabm\fR" 4
  .IX Item "-mabm"
! .IP "\fB\-madx\fR" 4
  .IX Item "-madx"
! .IP "\fB\-mbmi\fR" 4
  .IX Item "-mbmi"
! .IP "\fB\-mbmi2\fR" 4
  .IX Item "-mbmi2"
! .IP "\fB\-mlzcnt\fR" 4
  .IX Item "-mlzcnt"
! .IP "\fB\-mfxsr\fR" 4
  .IX Item "-mfxsr"
! .IP "\fB\-mxsave\fR" 4
  .IX Item "-mxsave"
! .IP "\fB\-mxsaveopt\fR" 4
  .IX Item "-mxsaveopt"
! .IP "\fB\-mxsavec\fR" 4
  .IX Item "-mxsavec"
! .IP "\fB\-mxsaves\fR" 4
  .IX Item "-mxsaves"
! .IP "\fB\-mrtm\fR" 4
  .IX Item "-mrtm"
! .IP "\fB\-mhle\fR" 4
  .IX Item "-mhle"
! .IP "\fB\-mtbm\fR" 4
  .IX Item "-mtbm"
! .IP "\fB\-mmwaitx\fR" 4
  .IX Item "-mmwaitx"
! .IP "\fB\-mclzero\fR" 4
  .IX Item "-mclzero"
! .IP "\fB\-mpku\fR" 4
  .IX Item "-mpku"
! .IP "\fB\-mavx512vbmi2\fR" 4
  .IX Item "-mavx512vbmi2"
! .IP "\fB\-mavx512bf16\fR" 4
  .IX Item "-mavx512bf16"
! .IP "\fB\-mavx512fp16\fR" 4
  .IX Item "-mavx512fp16"
! .IP "\fB\-mgfni\fR" 4
  .IX Item "-mgfni"
! .IP "\fB\-mvaes\fR" 4
  .IX Item "-mvaes"
! .IP "\fB\-mwaitpkg\fR" 4
  .IX Item "-mwaitpkg"
! .IP "\fB\-mvpclmulqdq\fR" 4
  .IX Item "-mvpclmulqdq"
! .IP "\fB\-mavx512bitalg\fR" 4
  .IX Item "-mavx512bitalg"
! .IP "\fB\-mmovdiri\fR" 4
  .IX Item "-mmovdiri"
! .IP "\fB\-mmovdir64b\fR" 4
  .IX Item "-mmovdir64b"
! .IP "\fB\-menqcmd\fR" 4
  .IX Item "-menqcmd"
! .IP "\fB\-muintr\fR" 4
  .IX Item "-muintr"
! .IP "\fB\-mtsxldtrk\fR" 4
  .IX Item "-mtsxldtrk"
! .IP "\fB\-mavx512vpopcntdq\fR" 4
  .IX Item "-mavx512vpopcntdq"
! .IP "\fB\-mavx512vp2intersect\fR" 4
  .IX Item "-mavx512vp2intersect"
! .IP "\fB\-mavx512vnni\fR" 4
  .IX Item "-mavx512vnni"
! .IP "\fB\-mavxvnni\fR" 4
  .IX Item "-mavxvnni"
! .IP "\fB\-mcldemote\fR" 4
  .IX Item "-mcldemote"
! .IP "\fB\-mserialize\fR" 4
  .IX Item "-mserialize"
! .IP "\fB\-mamx\-tile\fR" 4
  .IX Item "-mamx-tile"
! .IP "\fB\-mamx\-int8\fR" 4
  .IX Item "-mamx-int8"
! .IP "\fB\-mamx\-bf16\fR" 4
  .IX Item "-mamx-bf16"
! .IP "\fB\-mhreset\fR" 4
  .IX Item "-mhreset"
! .IP "\fB\-mkl\fR" 4
  .IX Item "-mkl"
! .IP "\fB\-mwidekl\fR" 4
  .IX Item "-mwidekl"
! .IP "\fB\-mavxifma\fR" 4
  .IX Item "-mavxifma"
! .IP "\fB\-mavxvnniint8\fR" 4
  .IX Item "-mavxvnniint8"
! .IP "\fB\-mavxneconvert\fR" 4
  .IX Item "-mavxneconvert"
! .IP "\fB\-mcmpccxadd\fR" 4
  .IX Item "-mcmpccxadd"
! .IP "\fB\-mamx\-fp16\fR" 4
  .IX Item "-mamx-fp16"
! .IP "\fB\-mprefetchi\fR" 4
  .IX Item "-mprefetchi"
! .IP "\fB\-mraoint\fR" 4
  .IX Item "-mraoint"
! .IP "\fB\-mamx\-complex\fR" 4
  .IX Item "-mamx-complex"
! .IP "\fB\-mavxvnniint16\fR" 4
  .IX Item "-mavxvnniint16"
! .IP "\fB\-msm3\fR" 4
  .IX Item "-msm3"
! .IP "\fB\-msha512\fR" 4
  .IX Item "-msha512"
! .IP "\fB\-msm4\fR" 4
  .IX Item "-msm4"
! .IP "\fB\-mapxf\fR" 4
  .IX Item "-mapxf"
! .IP "\fB\-musermsr\fR" 4
  .IX Item "-musermsr"
! .IP "\fB\-mavx10.1\fR" 4
  .IX Item "-mavx10.1"
! .IP "\fB\-mavx10.1\-256\fR" 4
  .IX Item "-mavx10.1-256"
! .IP "\fB\-mavx10.1\-512\fR" 4
  .IX Item "-mavx10.1-512"
! .IP "\fB\-mavx10.2\fR" 4
  .IX Item "-mavx10.2"
! .IP "\fB\-mamx\-avx512\fR" 4
  .IX Item "-mamx-avx512"
! .IP "\fB\-mamx\-tf32\fR" 4
  .IX Item "-mamx-tf32"
! .IP "\fB\-mamx\-transpose\fR" 4
  .IX Item "-mamx-transpose"
! .IP "\fB\-mamx\-fp8\fR" 4
  .IX Item "-mamx-fp8"
! .IP "\fB\-mmovrs\fR" 4
  .IX Item "-mmovrs"
! .IP "\fB\-mamx\-movrs\fR" 4
  .IX Item "-mamx-movrs"
  .PD
! These switches enable the use of instructions in the \s-1MMX, SSE,
  AVX512CD, AVX512VL, AVX512BW, AVX512DQ, AVX512IFMA, AVX512VBMI, SHA, AES,
  PCLMUL, CLFLUSHOPT, CLWB, FSGSBASE, PTWRITE, RDRND, F16C, FMA, PCONFIG,
! WBNOINVD, FMA4, PREFETCHW, RDPID, RDSEED, SGX, XOP, LWP,\s0 3DNow!,
! enhanced 3DNow!, \s-1POPCNT, ABM, ADX, BMI, BMI2, LZCNT, FXSR, XSAVE, XSAVEOPT,
  XSAVEC, XSAVES, RTM, HLE, TBM, MWAITX, CLZERO, PKU, AVX512VBMI2, GFNI, VAES,
  WAITPKG, VPCLMULQDQ, AVX512BITALG, MOVDIRI, MOVDIR64B, AVX512BF16, ENQCMD,
  AVX512VPOPCNTDQ, AVX512VNNI, SERIALIZE, UINTR, HRESET, AMXTILE, AMXINT8,
  AMXBF16, KL, WIDEKL, AVXVNNI, AVX512\-FP16, AVXIFMA, AVXVNNIINT8, AVXNECONVERT,
! CMPCCXADD, AMX\-FP16, PREFETCHI, RAOINT,\s0 AMX-COMPLEX, \s-1AVXVNNIINT16, SM3, SHA512,
! SM4, APX_F, USER_MSR, AVX10.1, AVX10.2, AMX\-AVX512, AMX\-TF32,\s0 AMX-TRANSPOSE,
! \&\s-1AMX\-FP8, MOVRS,\s0 AMX-MOVRS or \s-1CLDEMOTE\s0 extended instruction sets. Each has a
  corresponding \fB\-mno\-\fR option to disable use of these instructions.
  .Sp
! These extensions are also available as built-in functions: see
! \&\fBx86 Built-in Functions\fR, for details of the functions enabled and
  disabled by these switches.
  .Sp
! Note that \fB\-msse4\fR enables both \s-1SSE4.1\s0 and \s-1SSE4.2\s0 support,
  while \fB\-mno\-sse4\fR turns off those features; neither form of the
! option affects \s-1SSE4A\s0 support, controlled separately by
  \&\fB\-msse4a\fR.
  .Sp
! To generate \s-1SSE/SSE2\s0 instructions automatically from floating-point
  code (as opposed to 387 instructions), see \fB\-mfpmath=sse\fR.
  .Sp
! \&\s-1GCC\s0 depresses SSEx instructions when \fB\-mavx\fR is used. Instead, it
! generates new \s-1AVX\s0 instructions or \s-1AVX\s0 equivalence for all SSEx instructions
  when needed.
  .Sp
! These options enable \s-1GCC\s0 to use these extended instructions in
  generated code, even without \fB\-mfpmath=sse\fR.  Applications that
! perform run-time \s-1CPU\s0 detection must compile separate files for each
  supported architecture, using the appropriate flags.  In particular,
! the file containing the \s-1CPU\s0 detection code should be compiled without
  these options.
! .IP "\fB\-mdump\-tune\-features\fR" 4
  .IX Item "-mdump-tune-features"
! This option instructs \s-1GCC\s0 to dump the names of the x86 performance
  tuning features and default settings. The names can be used in
! \&\fB\-mtune\-ctrl=\fR\fIfeature-list\fR.
! .IP "\fB\-mtune\-ctrl=\fR\fIfeature-list\fR" 4
  .IX Item "-mtune-ctrl=feature-list"
  This option is used to do fine grain control of x86 code generation features.
! \&\fIfeature-list\fR is a comma separated list of \fIfeature\fR names. See also
  \&\fB\-mdump\-tune\-features\fR. When specified, the \fIfeature\fR is turned
  on if it is not preceded with \fB^\fR, otherwise, it is turned off.
! \&\fB\-mtune\-ctrl=\fR\fIfeature-list\fR is intended to be used by \s-1GCC\s0
  developers. Using it may lead to code paths not covered by testing and can
  potentially result in compiler ICEs or runtime errors.
! .IP "\fB\-mno\-default\fR" 4
  .IX Item "-mno-default"
! This option instructs \s-1GCC\s0 to turn off all tunable features. See also
! \&\fB\-mtune\-ctrl=\fR\fIfeature-list\fR and \fB\-mdump\-tune\-features\fR.
! .IP "\fB\-mcld\fR" 4
  .IX Item "-mcld"
! This option instructs \s-1GCC\s0 to emit a \f(CW\*(C`cld\*(C'\fR instruction in the prologue
  of functions that use string instructions.  String instructions depend on
! the \s-1DF\s0 flag to select between autoincrement or autodecrement mode.  While the
! \&\s-1ABI\s0 specifies the \s-1DF\s0 flag to be cleared on function entry, some operating
! systems violate this specification by not clearing the \s-1DF\s0 flag in their
! exception dispatchers.  The exception handler can be invoked with the \s-1DF\s0 flag
  set, which leads to wrong direction mode when string instructions are used.
  This option can be enabled by default on 32\-bit x86 targets by configuring
! \&\s-1GCC\s0 with the \fB\-\-enable\-cld\fR configure option.  Generation of \f(CW\*(C`cld\*(C'\fR
  instructions can be suppressed with the \fB\-mno\-cld\fR compiler option
  in this case.
! .IP "\fB\-mvzeroupper\fR" 4
  .IX Item "-mvzeroupper"
! This option instructs \s-1GCC\s0 to emit a \f(CW\*(C`vzeroupper\*(C'\fR instruction
  before a transfer of control flow out of the function to minimize
! the \s-1AVX\s0 to \s-1SSE\s0 transition penalty as well as remove unnecessary \f(CW\*(C`zeroupper\*(C'\fR
  intrinsics.
! .IP "\fB\-mprefer\-avx128\fR" 4
  .IX Item "-mprefer-avx128"
! This option instructs \s-1GCC\s0 to use 128\-bit \s-1AVX\s0 instructions instead of
! 256\-bit \s-1AVX\s0 instructions in the auto-vectorizer.
! .IP "\fB\-mprefer\-vector\-width=\fR\fIopt\fR" 4
  .IX Item "-mprefer-vector-width=opt"
! This option instructs \s-1GCC\s0 to use \fIopt\fR\-bit vector width in instructions
  instead of default on the selected platform.
! .IP "\fB\-mpartial\-vector\-fp\-math\fR" 4
  .IX Item "-mpartial-vector-fp-math"
! This option enables \s-1GCC\s0 to generate floating-point operations that might
! affect the set of floating-point status flags on partial vectors, where
! vector elements reside in the low part of the 128\-bit \s-1SSE\s0 register.  Unless
  \&\fB\-fno\-trapping\-math\fR is specified, the compiler guarantees correct
  behavior by sanitizing all input operands to have zeroes in the unused
! upper part of the vector register.  Note that by using built-in functions
  or inline assembly with partial vector arguments, NaNs, denormal or invalid
  values can leak into the upper part of the vector, causing possible
  performance issues when \fB\-fno\-trapping\-math\fR is in effect.  These
  issues can be mitigated by manually sanitizing the upper part of the partial
  vector argument register or by using \fB\-mdaz\-ftz\fR to set
! denormals-are-zero (\s-1DAZ\s0) flag in the \s-1MXCSR\s0 register.
  .Sp
  This option is enabled by default.
! .IP "\fB\-mmove\-max=\fR\fIbits\fR" 4
  .IX Item "-mmove-max=bits"
! This option instructs \s-1GCC\s0 to set the maximum number of bits can be
  moved from memory to memory efficiently to \fIbits\fR.  The valid
  \&\fIbits\fR are 128, 256 and 512.
! .IP "\fB\-mstore\-max=\fR\fIbits\fR" 4
  .IX Item "-mstore-max=bits"
! This option instructs \s-1GCC\s0 to set the maximum number of bits can be
  stored to memory efficiently to \fIbits\fR.  The valid \fIbits\fR are
  128, 256 and 512.
  .RS 4
! .IP "\fBnone\fR" 4
  .IX Item "none"
! No extra limitations applied to \s-1GCC\s0 other than defined by the selected platform.
! .IP "\fB128\fR" 4
  .IX Item "128"
  Prefer 128\-bit vector width for instructions.
! .IP "\fB256\fR" 4
  .IX Item "256"
  Prefer 256\-bit vector width for instructions.
! .IP "\fB512\fR" 4
  .IX Item "512"
  Prefer 512\-bit vector width for instructions.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mnoreturn\-no\-callee\-saved\-registers\fR" 4
  .IX Item "-mnoreturn-no-callee-saved-registers"
  This option optimizes functions with \f(CW\*(C`noreturn\*(C'\fR attribute or
! \&\f(CW\*(C`_Noreturn\*(C'\fR specifier by not saving in the function prologue callee-saved
  registers which are used in the function (except for the \f(CW\*(C`BP\*(C'\fR
  register).  This option can interfere with debugging of the caller of the
  \&\f(CW\*(C`noreturn\*(C'\fR function or any function further up in the call stack, so it
  is not enabled by default.
! .IP "\fB\-mcx16\fR" 4
  .IX Item "-mcx16"
! This option enables \s-1GCC\s0 to generate \f(CW\*(C`CMPXCHG16B\*(C'\fR instructions in 64\-bit
! code to implement compare-and-exchange operations on 16\-byte aligned 128\-bit
  objects.  This is useful for atomic updates of data structures exceeding one
  machine word in size.  The compiler uses this instruction to implement
  \&\fB_\|_sync Builtins\fR.  However, for \fB_\|_atomic Builtins\fR operating on
  128\-bit integers, a library call is always used.
! .IP "\fB\-msahf\fR" 4
  .IX Item "-msahf"
  This option enables generation of \f(CW\*(C`SAHF\*(C'\fR instructions in 64\-bit code.
  Early Intel Pentium 4 CPUs with Intel 64 support,
  prior to the introduction of Pentium 4 G1 step in December 2005,
  lacked the \f(CW\*(C`LAHF\*(C'\fR and \f(CW\*(C`SAHF\*(C'\fR instructions
! which are supported by \s-1AMD64.\s0
  These are load and store instructions, respectively, for certain status flags.
  In 64\-bit mode, the \f(CW\*(C`SAHF\*(C'\fR instruction is used to optimize \f(CW\*(C`fmod\*(C'\fR,
! \&\f(CW\*(C`drem\*(C'\fR, and \f(CW\*(C`remainder\*(C'\fR built-in functions;
  see \fBOther Builtins\fR for details.
! .IP "\fB\-mmovbe\fR" 4
  .IX Item "-mmovbe"
  This option enables use of the \f(CW\*(C`movbe\*(C'\fR instruction to optimize
  byte swapping of four and eight byte entities.
! .IP "\fB\-mshstk\fR" 4
  .IX Item "-mshstk"
! The \fB\-mshstk\fR option enables shadow stack built-in functions
! from x86 Control-flow Enforcement Technology (\s-1CET\s0).
! .IP "\fB\-mcrc32\fR" 4
  .IX Item "-mcrc32"
! This option enables built-in functions \f(CW\*(C`_\|_builtin_ia32_crc32qi\*(C'\fR,
  \&\f(CW\*(C`_\|_builtin_ia32_crc32hi\*(C'\fR, \f(CW\*(C`_\|_builtin_ia32_crc32si\*(C'\fR and
  \&\f(CW\*(C`_\|_builtin_ia32_crc32di\*(C'\fR to generate the \f(CW\*(C`crc32\*(C'\fR machine instruction.
! .IP "\fB\-mmwait\fR" 4
  .IX Item "-mmwait"
! This option enables built-in functions \f(CW\*(C`_\|_builtin_ia32_monitor\*(C'\fR,
  and \f(CW\*(C`_\|_builtin_ia32_mwait\*(C'\fR to generate the \f(CW\*(C`monitor\*(C'\fR and
  \&\f(CW\*(C`mwait\*(C'\fR machine instructions.
! .IP "\fB\-mrecip\fR" 4
  .IX Item "-mrecip"
  This option enables use of \f(CW\*(C`RCPSS\*(C'\fR and \f(CW\*(C`RSQRTSS\*(C'\fR instructions
  (and their vectorized variants \f(CW\*(C`RCPPS\*(C'\fR and \f(CW\*(C`RSQRTPS\*(C'\fR)
! with an additional Newton-Raphson step
  to increase precision instead of \f(CW\*(C`DIVSS\*(C'\fR and \f(CW\*(C`SQRTSS\*(C'\fR
  (and their vectorized
! variants) for single-precision floating-point arguments.  These instructions
  are generated only when \fB\-funsafe\-math\-optimizations\fR is enabled
  together with \fB\-ffinite\-math\-only\fR and \fB\-fno\-trapping\-math\fR.
  Note that while the throughput of the sequence is higher than the throughput
! of the non-reciprocal instruction, the precision of the sequence can be
  decreased by up to 2 ulp (i.e. the inverse of 1.0 equals 0.99999994).
  .Sp
! Note that \s-1GCC\s0 implements \f(CW\*(C`1.0f/sqrtf(\f(CIx\f(CW)\*(C'\fR in terms of \f(CW\*(C`RSQRTSS\*(C'\fR
  (or \f(CW\*(C`RSQRTPS\*(C'\fR) already with \fB\-ffast\-math\fR (or the above option
! combination), and doesn't need \fB\-mrecip\fR.
  .Sp
! Also note that \s-1GCC\s0 emits the above sequence with additional Newton-Raphson step
! for vectorized single-float division and vectorized \f(CW\*(C`sqrtf(\f(CIx\f(CW)\*(C'\fR
  already with \fB\-ffast\-math\fR (or the above option combination), and
! doesn't need \fB\-mrecip\fR.
! .IP "\fB\-mrecip=\fR\fIopt\fR" 4
  .IX Item "-mrecip=opt"
  This option controls which reciprocal estimate instructions
! may be used.  \fIopt\fR is a comma-separated list of options, which may
  be preceded by a \fB!\fR to invert the option:
  .RS 4
! .IP "\fBall\fR" 4
  .IX Item "all"
  Enable all estimate instructions.
! .IP "\fBdefault\fR" 4
  .IX Item "default"
  Enable the default instructions, equivalent to \fB\-mrecip\fR.
! .IP "\fBnone\fR" 4
  .IX Item "none"
  Disable all estimate instructions, equivalent to \fB\-mno\-recip\fR.
! .IP "\fBdiv\fR" 4
  .IX Item "div"
  Enable the approximation for scalar division.
! .IP "\fBvec-div\fR" 4
  .IX Item "vec-div"
  Enable the approximation for vectorized division.
! .IP "\fBsqrt\fR" 4
  .IX Item "sqrt"
  Enable the approximation for scalar square root.
! .IP "\fBvec-sqrt\fR" 4
  .IX Item "vec-sqrt"
  Enable the approximation for vectorized square root.
  .RE
--- 34922,35354 ----
  increases code size.  Code that is sensitive to stack space usage, such
  as embedded systems and operating system kernels, may want to reduce the
  preferred alignment to \fB\-mpreferred\-stack\-boundary=2\fR.
! .IP \fB\-mmmx\fR 4
  .IX Item "-mmmx"
  .PD 0
! .IP \fB\-msse\fR 4
  .IX Item "-msse"
! .IP \fB\-msse2\fR 4
  .IX Item "-msse2"
! .IP \fB\-msse3\fR 4
  .IX Item "-msse3"
! .IP \fB\-mssse3\fR 4
  .IX Item "-mssse3"
! .IP \fB\-msse4\fR 4
  .IX Item "-msse4"
! .IP \fB\-msse4a\fR 4
  .IX Item "-msse4a"
! .IP \fB\-msse4.1\fR 4
  .IX Item "-msse4.1"
! .IP \fB\-msse4.2\fR 4
  .IX Item "-msse4.2"
! .IP \fB\-mavx\fR 4
  .IX Item "-mavx"
! .IP \fB\-mavx2\fR 4
  .IX Item "-mavx2"
! .IP \fB\-mavx512f\fR 4
  .IX Item "-mavx512f"
! .IP \fB\-mavx512cd\fR 4
  .IX Item "-mavx512cd"
! .IP \fB\-mavx512vl\fR 4
  .IX Item "-mavx512vl"
! .IP \fB\-mavx512bw\fR 4
  .IX Item "-mavx512bw"
! .IP \fB\-mavx512dq\fR 4
  .IX Item "-mavx512dq"
! .IP \fB\-mavx512ifma\fR 4
  .IX Item "-mavx512ifma"
! .IP \fB\-mavx512vbmi\fR 4
  .IX Item "-mavx512vbmi"
! .IP \fB\-msha\fR 4
  .IX Item "-msha"
! .IP \fB\-maes\fR 4
  .IX Item "-maes"
! .IP \fB\-mpclmul\fR 4
  .IX Item "-mpclmul"
! .IP \fB\-mclflushopt\fR 4
  .IX Item "-mclflushopt"
! .IP \fB\-mclwb\fR 4
  .IX Item "-mclwb"
! .IP \fB\-mfsgsbase\fR 4
  .IX Item "-mfsgsbase"
! .IP \fB\-mptwrite\fR 4
  .IX Item "-mptwrite"
! .IP \fB\-mrdrnd\fR 4
  .IX Item "-mrdrnd"
! .IP \fB\-mf16c\fR 4
  .IX Item "-mf16c"
! .IP \fB\-mfma\fR 4
  .IX Item "-mfma"
! .IP \fB\-mpconfig\fR 4
  .IX Item "-mpconfig"
! .IP \fB\-mwbnoinvd\fR 4
  .IX Item "-mwbnoinvd"
! .IP \fB\-mfma4\fR 4
  .IX Item "-mfma4"
! .IP \fB\-mprfchw\fR 4
  .IX Item "-mprfchw"
! .IP \fB\-mrdpid\fR 4
  .IX Item "-mrdpid"
! .IP \fB\-mrdseed\fR 4
  .IX Item "-mrdseed"
! .IP \fB\-msgx\fR 4
  .IX Item "-msgx"
! .IP \fB\-mxop\fR 4
  .IX Item "-mxop"
! .IP \fB\-mlwp\fR 4
  .IX Item "-mlwp"
! .IP \fB\-m3dnow\fR 4
  .IX Item "-m3dnow"
! .IP \fB\-m3dnowa\fR 4
  .IX Item "-m3dnowa"
! .IP \fB\-mpopcnt\fR 4
  .IX Item "-mpopcnt"
! .IP \fB\-mabm\fR 4
  .IX Item "-mabm"
! .IP \fB\-madx\fR 4
  .IX Item "-madx"
! .IP \fB\-mbmi\fR 4
  .IX Item "-mbmi"
! .IP \fB\-mbmi2\fR 4
  .IX Item "-mbmi2"
! .IP \fB\-mlzcnt\fR 4
  .IX Item "-mlzcnt"
! .IP \fB\-mfxsr\fR 4
  .IX Item "-mfxsr"
! .IP \fB\-mxsave\fR 4
  .IX Item "-mxsave"
! .IP \fB\-mxsaveopt\fR 4
  .IX Item "-mxsaveopt"
! .IP \fB\-mxsavec\fR 4
  .IX Item "-mxsavec"
! .IP \fB\-mxsaves\fR 4
  .IX Item "-mxsaves"
! .IP \fB\-mrtm\fR 4
  .IX Item "-mrtm"
! .IP \fB\-mhle\fR 4
  .IX Item "-mhle"
! .IP \fB\-mtbm\fR 4
  .IX Item "-mtbm"
! .IP \fB\-mmwaitx\fR 4
  .IX Item "-mmwaitx"
! .IP \fB\-mclzero\fR 4
  .IX Item "-mclzero"
! .IP \fB\-mpku\fR 4
  .IX Item "-mpku"
! .IP \fB\-mavx512vbmi2\fR 4
  .IX Item "-mavx512vbmi2"
! .IP \fB\-mavx512bf16\fR 4
  .IX Item "-mavx512bf16"
! .IP \fB\-mavx512fp16\fR 4
  .IX Item "-mavx512fp16"
! .IP \fB\-mgfni\fR 4
  .IX Item "-mgfni"
! .IP \fB\-mvaes\fR 4
  .IX Item "-mvaes"
! .IP \fB\-mwaitpkg\fR 4
  .IX Item "-mwaitpkg"
! .IP \fB\-mvpclmulqdq\fR 4
  .IX Item "-mvpclmulqdq"
! .IP \fB\-mavx512bitalg\fR 4
  .IX Item "-mavx512bitalg"
! .IP \fB\-mmovdiri\fR 4
  .IX Item "-mmovdiri"
! .IP \fB\-mmovdir64b\fR 4
  .IX Item "-mmovdir64b"
! .IP \fB\-menqcmd\fR 4
  .IX Item "-menqcmd"
! .IP \fB\-muintr\fR 4
  .IX Item "-muintr"
! .IP \fB\-mtsxldtrk\fR 4
  .IX Item "-mtsxldtrk"
! .IP \fB\-mavx512vpopcntdq\fR 4
  .IX Item "-mavx512vpopcntdq"
! .IP \fB\-mavx512vp2intersect\fR 4
  .IX Item "-mavx512vp2intersect"
! .IP \fB\-mavx512vnni\fR 4
  .IX Item "-mavx512vnni"
! .IP \fB\-mavxvnni\fR 4
  .IX Item "-mavxvnni"
! .IP \fB\-mcldemote\fR 4
  .IX Item "-mcldemote"
! .IP \fB\-mserialize\fR 4
  .IX Item "-mserialize"
! .IP \fB\-mamx\-tile\fR 4
  .IX Item "-mamx-tile"
! .IP \fB\-mamx\-int8\fR 4
  .IX Item "-mamx-int8"
! .IP \fB\-mamx\-bf16\fR 4
  .IX Item "-mamx-bf16"
! .IP \fB\-mhreset\fR 4
  .IX Item "-mhreset"
! .IP \fB\-mkl\fR 4
  .IX Item "-mkl"
! .IP \fB\-mwidekl\fR 4
  .IX Item "-mwidekl"
! .IP \fB\-mavxifma\fR 4
  .IX Item "-mavxifma"
! .IP \fB\-mavxvnniint8\fR 4
  .IX Item "-mavxvnniint8"
! .IP \fB\-mavxneconvert\fR 4
  .IX Item "-mavxneconvert"
! .IP \fB\-mcmpccxadd\fR 4
  .IX Item "-mcmpccxadd"
! .IP \fB\-mamx\-fp16\fR 4
  .IX Item "-mamx-fp16"
! .IP \fB\-mprefetchi\fR 4
  .IX Item "-mprefetchi"
! .IP \fB\-mraoint\fR 4
  .IX Item "-mraoint"
! .IP \fB\-mamx\-complex\fR 4
  .IX Item "-mamx-complex"
! .IP \fB\-mavxvnniint16\fR 4
  .IX Item "-mavxvnniint16"
! .IP \fB\-msm3\fR 4
  .IX Item "-msm3"
! .IP \fB\-msha512\fR 4
  .IX Item "-msha512"
! .IP \fB\-msm4\fR 4
  .IX Item "-msm4"
! .IP \fB\-mapxf\fR 4
  .IX Item "-mapxf"
! .IP \fB\-musermsr\fR 4
  .IX Item "-musermsr"
! .IP \fB\-mavx10.1\fR 4
  .IX Item "-mavx10.1"
! .IP \fB\-mavx10.1\-256\fR 4
  .IX Item "-mavx10.1-256"
! .IP \fB\-mavx10.1\-512\fR 4
  .IX Item "-mavx10.1-512"
! .IP \fB\-mavx10.2\fR 4
  .IX Item "-mavx10.2"
! .IP \fB\-mamx\-avx512\fR 4
  .IX Item "-mamx-avx512"
! .IP \fB\-mamx\-tf32\fR 4
  .IX Item "-mamx-tf32"
! .IP \fB\-mamx\-transpose\fR 4
  .IX Item "-mamx-transpose"
! .IP \fB\-mamx\-fp8\fR 4
  .IX Item "-mamx-fp8"
! .IP \fB\-mmovrs\fR 4
  .IX Item "-mmovrs"
! .IP \fB\-mamx\-movrs\fR 4
  .IX Item "-mamx-movrs"
  .PD
! These switches enable the use of instructions in the MMX, SSE,
  AVX512CD, AVX512VL, AVX512BW, AVX512DQ, AVX512IFMA, AVX512VBMI, SHA, AES,
  PCLMUL, CLFLUSHOPT, CLWB, FSGSBASE, PTWRITE, RDRND, F16C, FMA, PCONFIG,
! WBNOINVD, FMA4, PREFETCHW, RDPID, RDSEED, SGX, XOP, LWP, 3DNow!,
! enhanced 3DNow!, POPCNT, ABM, ADX, BMI, BMI2, LZCNT, FXSR, XSAVE, XSAVEOPT,
  XSAVEC, XSAVES, RTM, HLE, TBM, MWAITX, CLZERO, PKU, AVX512VBMI2, GFNI, VAES,
  WAITPKG, VPCLMULQDQ, AVX512BITALG, MOVDIRI, MOVDIR64B, AVX512BF16, ENQCMD,
  AVX512VPOPCNTDQ, AVX512VNNI, SERIALIZE, UINTR, HRESET, AMXTILE, AMXINT8,
  AMXBF16, KL, WIDEKL, AVXVNNI, AVX512\-FP16, AVXIFMA, AVXVNNIINT8, AVXNECONVERT,
! CMPCCXADD, AMX\-FP16, PREFETCHI, RAOINT, AMX\-COMPLEX, AVXVNNIINT16, SM3, SHA512,
! SM4, APX_F, USER_MSR, AVX10.1, AVX10.2, AMX\-AVX512, AMX\-TF32, AMX\-TRANSPOSE,
! AMX\-FP8, MOVRS, AMX\-MOVRS or CLDEMOTE extended instruction sets. Each has a
  corresponding \fB\-mno\-\fR option to disable use of these instructions.
  .Sp
! These extensions are also available as built\-in functions: see
! \&\fBx86 Built\-in Functions\fR, for details of the functions enabled and
  disabled by these switches.
  .Sp
! Note that \fB\-msse4\fR enables both SSE4.1 and SSE4.2 support,
  while \fB\-mno\-sse4\fR turns off those features; neither form of the
! option affects SSE4A support, controlled separately by
  \&\fB\-msse4a\fR.
  .Sp
! To generate SSE/SSE2 instructions automatically from floating\-point
  code (as opposed to 387 instructions), see \fB\-mfpmath=sse\fR.
  .Sp
! GCC depresses SSEx instructions when \fB\-mavx\fR is used. Instead, it
! generates new AVX instructions or AVX equivalence for all SSEx instructions
  when needed.
  .Sp
! These options enable GCC to use these extended instructions in
  generated code, even without \fB\-mfpmath=sse\fR.  Applications that
! perform run\-time CPU detection must compile separate files for each
  supported architecture, using the appropriate flags.  In particular,
! the file containing the CPU detection code should be compiled without
  these options.
! .IP \fB\-mdump\-tune\-features\fR 4
  .IX Item "-mdump-tune-features"
! This option instructs GCC to dump the names of the x86 performance
  tuning features and default settings. The names can be used in
! \&\fB\-mtune\-ctrl=\fR\fIfeature\-list\fR.
! .IP \fB\-mtune\-ctrl=\fR\fIfeature\-list\fR 4
  .IX Item "-mtune-ctrl=feature-list"
  This option is used to do fine grain control of x86 code generation features.
! \&\fIfeature\-list\fR is a comma separated list of \fIfeature\fR names. See also
  \&\fB\-mdump\-tune\-features\fR. When specified, the \fIfeature\fR is turned
  on if it is not preceded with \fB^\fR, otherwise, it is turned off.
! \&\fB\-mtune\-ctrl=\fR\fIfeature\-list\fR is intended to be used by GCC
  developers. Using it may lead to code paths not covered by testing and can
  potentially result in compiler ICEs or runtime errors.
! .IP \fB\-mno\-default\fR 4
  .IX Item "-mno-default"
! This option instructs GCC to turn off all tunable features. See also
! \&\fB\-mtune\-ctrl=\fR\fIfeature\-list\fR and \fB\-mdump\-tune\-features\fR.
! .IP \fB\-mcld\fR 4
  .IX Item "-mcld"
! This option instructs GCC to emit a \f(CW\*(C`cld\*(C'\fR instruction in the prologue
  of functions that use string instructions.  String instructions depend on
! the DF flag to select between autoincrement or autodecrement mode.  While the
! ABI specifies the DF flag to be cleared on function entry, some operating
! systems violate this specification by not clearing the DF flag in their
! exception dispatchers.  The exception handler can be invoked with the DF flag
  set, which leads to wrong direction mode when string instructions are used.
  This option can be enabled by default on 32\-bit x86 targets by configuring
! GCC with the \fB\-\-enable\-cld\fR configure option.  Generation of \f(CW\*(C`cld\*(C'\fR
  instructions can be suppressed with the \fB\-mno\-cld\fR compiler option
  in this case.
! .IP \fB\-mvzeroupper\fR 4
  .IX Item "-mvzeroupper"
! This option instructs GCC to emit a \f(CW\*(C`vzeroupper\*(C'\fR instruction
  before a transfer of control flow out of the function to minimize
! the AVX to SSE transition penalty as well as remove unnecessary \f(CW\*(C`zeroupper\*(C'\fR
  intrinsics.
! .IP \fB\-mprefer\-avx128\fR 4
  .IX Item "-mprefer-avx128"
! This option instructs GCC to use 128\-bit AVX instructions instead of
! 256\-bit AVX instructions in the auto\-vectorizer.
! .IP \fB\-mprefer\-vector\-width=\fR\fIopt\fR 4
  .IX Item "-mprefer-vector-width=opt"
! This option instructs GCC to use \fIopt\fR\-bit vector width in instructions
  instead of default on the selected platform.
! .IP \fB\-mpartial\-vector\-fp\-math\fR 4
  .IX Item "-mpartial-vector-fp-math"
! This option enables GCC to generate floating\-point operations that might
! affect the set of floating\-point status flags on partial vectors, where
! vector elements reside in the low part of the 128\-bit SSE register.  Unless
  \&\fB\-fno\-trapping\-math\fR is specified, the compiler guarantees correct
  behavior by sanitizing all input operands to have zeroes in the unused
! upper part of the vector register.  Note that by using built\-in functions
  or inline assembly with partial vector arguments, NaNs, denormal or invalid
  values can leak into the upper part of the vector, causing possible
  performance issues when \fB\-fno\-trapping\-math\fR is in effect.  These
  issues can be mitigated by manually sanitizing the upper part of the partial
  vector argument register or by using \fB\-mdaz\-ftz\fR to set
! denormals\-are\-zero (DAZ) flag in the MXCSR register.
  .Sp
  This option is enabled by default.
! .IP \fB\-mmove\-max=\fR\fIbits\fR 4
  .IX Item "-mmove-max=bits"
! This option instructs GCC to set the maximum number of bits can be
  moved from memory to memory efficiently to \fIbits\fR.  The valid
  \&\fIbits\fR are 128, 256 and 512.
! .IP \fB\-mstore\-max=\fR\fIbits\fR 4
  .IX Item "-mstore-max=bits"
! This option instructs GCC to set the maximum number of bits can be
  stored to memory efficiently to \fIbits\fR.  The valid \fIbits\fR are
  128, 256 and 512.
  .RS 4
! .IP \fBnone\fR 4
  .IX Item "none"
! No extra limitations applied to GCC other than defined by the selected platform.
! .IP \fB128\fR 4
  .IX Item "128"
  Prefer 128\-bit vector width for instructions.
! .IP \fB256\fR 4
  .IX Item "256"
  Prefer 256\-bit vector width for instructions.
! .IP \fB512\fR 4
  .IX Item "512"
  Prefer 512\-bit vector width for instructions.
  .RE
  .RS 4
  .RE
! .IP \fB\-mnoreturn\-no\-callee\-saved\-registers\fR 4
  .IX Item "-mnoreturn-no-callee-saved-registers"
  This option optimizes functions with \f(CW\*(C`noreturn\*(C'\fR attribute or
! \&\f(CW\*(C`_Noreturn\*(C'\fR specifier by not saving in the function prologue callee\-saved
  registers which are used in the function (except for the \f(CW\*(C`BP\*(C'\fR
  register).  This option can interfere with debugging of the caller of the
  \&\f(CW\*(C`noreturn\*(C'\fR function or any function further up in the call stack, so it
  is not enabled by default.
! .IP \fB\-mcx16\fR 4
  .IX Item "-mcx16"
! This option enables GCC to generate \f(CW\*(C`CMPXCHG16B\*(C'\fR instructions in 64\-bit
! code to implement compare\-and\-exchange operations on 16\-byte aligned 128\-bit
  objects.  This is useful for atomic updates of data structures exceeding one
  machine word in size.  The compiler uses this instruction to implement
  \&\fB_\|_sync Builtins\fR.  However, for \fB_\|_atomic Builtins\fR operating on
  128\-bit integers, a library call is always used.
! .IP \fB\-msahf\fR 4
  .IX Item "-msahf"
  This option enables generation of \f(CW\*(C`SAHF\*(C'\fR instructions in 64\-bit code.
  Early Intel Pentium 4 CPUs with Intel 64 support,
  prior to the introduction of Pentium 4 G1 step in December 2005,
  lacked the \f(CW\*(C`LAHF\*(C'\fR and \f(CW\*(C`SAHF\*(C'\fR instructions
! which are supported by AMD64.
  These are load and store instructions, respectively, for certain status flags.
  In 64\-bit mode, the \f(CW\*(C`SAHF\*(C'\fR instruction is used to optimize \f(CW\*(C`fmod\*(C'\fR,
! \&\f(CW\*(C`drem\*(C'\fR, and \f(CW\*(C`remainder\*(C'\fR built\-in functions;
  see \fBOther Builtins\fR for details.
! .IP \fB\-mmovbe\fR 4
  .IX Item "-mmovbe"
  This option enables use of the \f(CW\*(C`movbe\*(C'\fR instruction to optimize
  byte swapping of four and eight byte entities.
! .IP \fB\-mshstk\fR 4
  .IX Item "-mshstk"
! The \fB\-mshstk\fR option enables shadow stack built\-in functions
! from x86 Control\-flow Enforcement Technology (CET).
! .IP \fB\-mcrc32\fR 4
  .IX Item "-mcrc32"
! This option enables built\-in functions \f(CW\*(C`_\|_builtin_ia32_crc32qi\*(C'\fR,
  \&\f(CW\*(C`_\|_builtin_ia32_crc32hi\*(C'\fR, \f(CW\*(C`_\|_builtin_ia32_crc32si\*(C'\fR and
  \&\f(CW\*(C`_\|_builtin_ia32_crc32di\*(C'\fR to generate the \f(CW\*(C`crc32\*(C'\fR machine instruction.
! .IP \fB\-mmwait\fR 4
  .IX Item "-mmwait"
! This option enables built\-in functions \f(CW\*(C`_\|_builtin_ia32_monitor\*(C'\fR,
  and \f(CW\*(C`_\|_builtin_ia32_mwait\*(C'\fR to generate the \f(CW\*(C`monitor\*(C'\fR and
  \&\f(CW\*(C`mwait\*(C'\fR machine instructions.
! .IP \fB\-mrecip\fR 4
  .IX Item "-mrecip"
  This option enables use of \f(CW\*(C`RCPSS\*(C'\fR and \f(CW\*(C`RSQRTSS\*(C'\fR instructions
  (and their vectorized variants \f(CW\*(C`RCPPS\*(C'\fR and \f(CW\*(C`RSQRTPS\*(C'\fR)
! with an additional Newton\-Raphson step
  to increase precision instead of \f(CW\*(C`DIVSS\*(C'\fR and \f(CW\*(C`SQRTSS\*(C'\fR
  (and their vectorized
! variants) for single\-precision floating\-point arguments.  These instructions
  are generated only when \fB\-funsafe\-math\-optimizations\fR is enabled
  together with \fB\-ffinite\-math\-only\fR and \fB\-fno\-trapping\-math\fR.
  Note that while the throughput of the sequence is higher than the throughput
! of the non\-reciprocal instruction, the precision of the sequence can be
  decreased by up to 2 ulp (i.e. the inverse of 1.0 equals 0.99999994).
  .Sp
! Note that GCC implements \f(CW\*(C`1.0f/sqrtf(\fR\f(CIx\fR\f(CW)\*(C'\fR in terms of \f(CW\*(C`RSQRTSS\*(C'\fR
  (or \f(CW\*(C`RSQRTPS\*(C'\fR) already with \fB\-ffast\-math\fR (or the above option
! combination), and doesn\*(Aqt need \fB\-mrecip\fR.
  .Sp
! Also note that GCC emits the above sequence with additional Newton\-Raphson step
! for vectorized single\-float division and vectorized \f(CWsqrtf(\fR\f(CIx\fR\f(CW)\fR
  already with \fB\-ffast\-math\fR (or the above option combination), and
! doesn\*(Aqt need \fB\-mrecip\fR.
! .IP \fB\-mrecip=\fR\fIopt\fR 4
  .IX Item "-mrecip=opt"
  This option controls which reciprocal estimate instructions
! may be used.  \fIopt\fR is a comma\-separated list of options, which may
  be preceded by a \fB!\fR to invert the option:
  .RS 4
! .IP \fBall\fR 4
  .IX Item "all"
  Enable all estimate instructions.
! .IP \fBdefault\fR 4
  .IX Item "default"
  Enable the default instructions, equivalent to \fB\-mrecip\fR.
! .IP \fBnone\fR 4
  .IX Item "none"
  Disable all estimate instructions, equivalent to \fB\-mno\-recip\fR.
! .IP \fBdiv\fR 4
  .IX Item "div"
  Enable the approximation for scalar division.
! .IP \fBvec\-div\fR 4
  .IX Item "vec-div"
  Enable the approximation for vectorized division.
! .IP \fBsqrt\fR 4
  .IX Item "sqrt"
  Enable the approximation for scalar square root.
! .IP \fBvec\-sqrt\fR 4
  .IX Item "vec-sqrt"
  Enable the approximation for vectorized square root.
  .RE
*************** Enable the approximation for vectorized
*** 35423,35440 ****
  So, for example, \fB\-mrecip=all,!sqrt\fR enables
  all of the reciprocal approximations, except for square root.
  .RE
! .IP "\fB\-mveclibabi=\fR\fItype\fR" 4
  .IX Item "-mveclibabi=type"
! Specifies the \s-1ABI\s0 type to use for vectorizing intrinsics using an external
  library.  Supported values for \fItype\fR are \fBsvml\fR for the Intel short
! vector math library, \fBaocl\fR for the math library (LibM) from \s-1AMD\s0
! Optimizing \s-1CPU\s0 Libraries (\s-1AOCL\s0) and \fBacml\fR for the end-of-life \s-1AMD\s0 core
! math library (to which AOCL-LibM is the successor).
  To use this option, both \fB\-ftree\-vectorize\fR and
! \&\fB\-funsafe\-math\-optimizations\fR have to be enabled, and an \s-1SVML\s0 or \s-1ACML\s0
! ABI-compatible library must be specified at link time.
  .Sp
! \&\s-1GCC\s0 currently emits calls to \f(CW\*(C`vmldExp2\*(C'\fR, \f(CW\*(C`vmldLn2\*(C'\fR,
  \&\f(CW\*(C`vmldLog102\*(C'\fR, \f(CW\*(C`vmldPow2\*(C'\fR, \f(CW\*(C`vmldTanh2\*(C'\fR, \f(CW\*(C`vmldTan2\*(C'\fR,
  \&\f(CW\*(C`vmldAtan2\*(C'\fR, \f(CW\*(C`vmldAtanh2\*(C'\fR, \f(CW\*(C`vmldCbrt2\*(C'\fR, \f(CW\*(C`vmldSinh2\*(C'\fR,
  \&\f(CW\*(C`vmldSin2\*(C'\fR, \f(CW\*(C`vmldAsinh2\*(C'\fR, \f(CW\*(C`vmldAsin2\*(C'\fR, \f(CW\*(C`vmldCosh2\*(C'\fR,
--- 35357,35374 ----
  So, for example, \fB\-mrecip=all,!sqrt\fR enables
  all of the reciprocal approximations, except for square root.
  .RE
! .IP \fB\-mveclibabi=\fR\fItype\fR 4
  .IX Item "-mveclibabi=type"
! Specifies the ABI type to use for vectorizing intrinsics using an external
  library.  Supported values for \fItype\fR are \fBsvml\fR for the Intel short
! vector math library, \fBaocl\fR for the math library (LibM) from AMD
! Optimizing CPU Libraries (AOCL) and \fBacml\fR for the end\-of\-life AMD core
! math library (to which AOCL\-LibM is the successor).
  To use this option, both \fB\-ftree\-vectorize\fR and
! \&\fB\-funsafe\-math\-optimizations\fR have to be enabled, and an SVML or ACML
! ABI\-compatible library must be specified at link time.
  .Sp
! GCC currently emits calls to \f(CW\*(C`vmldExp2\*(C'\fR, \f(CW\*(C`vmldLn2\*(C'\fR,
  \&\f(CW\*(C`vmldLog102\*(C'\fR, \f(CW\*(C`vmldPow2\*(C'\fR, \f(CW\*(C`vmldTanh2\*(C'\fR, \f(CW\*(C`vmldTan2\*(C'\fR,
  \&\f(CW\*(C`vmldAtan2\*(C'\fR, \f(CW\*(C`vmldAtanh2\*(C'\fR, \f(CW\*(C`vmldCbrt2\*(C'\fR, \f(CW\*(C`vmldSinh2\*(C'\fR,
  \&\f(CW\*(C`vmldSin2\*(C'\fR, \f(CW\*(C`vmldAsinh2\*(C'\fR, \f(CW\*(C`vmldAsin2\*(C'\fR, \f(CW\*(C`vmldCosh2\*(C'\fR,
*************** type when \fB\-mveclibabi=aocl\fR is use
*** 35476,35562 ****
  \&\f(CW\*(C`_\|_vrs4_expf\*(C'\fR, \f(CW\*(C`_\|_vrs4_logf\*(C'\fR, \f(CW\*(C`_\|_vrs4_log2f\*(C'\fR,
  \&\f(CW\*(C`_\|_vrs4_log10f\*(C'\fR and \f(CW\*(C`_\|_vrs4_powf\*(C'\fR for the corresponding function type
  when \fB\-mveclibabi=acml\fR is used.
! .IP "\fB\-mabi=\fR\fIname\fR" 4
  .IX Item "-mabi=name"
  Generate code for the specified calling convention.  Permissible values
! are \fBsysv\fR for the \s-1ABI\s0 used on GNU/Linux and other systems, and
! \&\fBms\fR for the Microsoft \s-1ABI.\s0  The default is to use the Microsoft
! \&\s-1ABI\s0 when targeting Microsoft Windows and the SysV \s-1ABI\s0 on all other systems.
  You can control this behavior for specific functions by
  using the function attributes \f(CW\*(C`ms_abi\*(C'\fR and \f(CW\*(C`sysv_abi\*(C'\fR.
! .IP "\fB\-mforce\-indirect\-call\fR" 4
  .IX Item "-mforce-indirect-call"
  Force all calls to functions to be indirect. This is useful
  when using Intel Processor Trace where it generates more precise timing
  information for function calls.
! .IP "\fB\-mmanual\-endbr\fR" 4
  .IX Item "-mmanual-endbr"
! Insert \s-1ENDBR\s0 instruction at function entry only via the \f(CW\*(C`cf_check\*(C'\fR
  function attribute. This is useful when used with the option
! \&\fB\-fcf\-protection=branch\fR to control \s-1ENDBR\s0 insertion at the
  function entry.
! .IP "\fB\-mcet\-switch\fR" 4
  .IX Item "-mcet-switch"
! By default, \s-1CET\s0 instrumentation is turned off on switch statements that
  use a jump table and indirect branch track is disabled.  Since jump
! tables are stored in read-only memory, this does not result in a direct
! loss of hardening.  But if the jump table index is attacker-controlled,
! the indirect jump may not be constrained by \s-1CET.\s0  This option turns on
! \&\s-1CET\s0 instrumentation to enable indirect branch track for switch statements
  with jump tables which leads to the jump targets reachable via any indirect
  jumps.
! .IP "\fB\-mcall\-ms2sysv\-xlogues\fR" 4
  .IX Item "-mcall-ms2sysv-xlogues"
! Due to differences in 64\-bit ABIs, any Microsoft \s-1ABI\s0 function that calls a
! System V \s-1ABI\s0 function must consider \s-1RSI, RDI\s0 and \s-1XMM6\-15\s0 as clobbered.  By
  default, the code for saving and restoring these registers is emitted inline,
  resulting in fairly lengthy prologues and epilogues.  Using
  \&\fB\-mcall\-ms2sysv\-xlogues\fR emits prologues and epilogues that
  use stubs in the static portion of libgcc to perform these saves and restores,
  thus reducing function size at the cost of a few extra instructions.
! .IP "\fB\-mtls\-dialect=\fR\fItype\fR" 4
  .IX Item "-mtls-dialect=type"
! Generate code to access thread-local storage using the \fBgnu\fR or
  \&\fBgnu2\fR conventions.  \fBgnu\fR is the conservative default;
! \&\fBgnu2\fR is more efficient, but it may add compile\- and run-time
  requirements that cannot be satisfied on all systems.
! .IP "\fB\-mpush\-args\fR" 4
  .IX Item "-mpush-args"
  .PD 0
! .IP "\fB\-mno\-push\-args\fR" 4
  .IX Item "-mno-push-args"
  .PD
! Use \s-1PUSH\s0 operations to store outgoing parameters.  This method is shorter
! and usually equally fast as method using \s-1SUB/MOV\s0 operations and is enabled
  by default.  In some cases disabling it may improve performance because of
  improved scheduling and reduced dependencies.
! .IP "\fB\-maccumulate\-outgoing\-args\fR" 4
  .IX Item "-maccumulate-outgoing-args"
  If enabled, the maximum amount of space required for outgoing arguments is
  computed in the function prologue.  This is faster on most modern CPUs
  because of reduced dependencies, improved scheduling and reduced stack usage
  when the preferred stack boundary is not equal to 2.  The drawback is a notable
  increase in code size.  This switch implies \fB\-mno\-push\-args\fR.
! .IP "\fB\-mthreads\fR" 4
  .IX Item "-mthreads"
! Support thread-safe exception handling on MinGW.  Programs that rely
! on thread-safe exception handling must compile and link all code with the
  \&\fB\-mthreads\fR option.  When compiling, \fB\-mthreads\fR defines
  \&\fB\-D_MT\fR; when linking, it links in a special thread helper library
! \&\fB\-lmingwthrd\fR which cleans up per-thread exception-handling data.
! .IP "\fB\-mms\-bitfields\fR" 4
  .IX Item "-mms-bitfields"
  .PD 0
! .IP "\fB\-mno\-ms\-bitfields\fR" 4
  .IX Item "-mno-ms-bitfields"
  .PD
! Enable/disable bit-field layout compatible with the native Microsoft
  Windows compiler.
  .Sp
! If \f(CW\*(C`packed\*(C'\fR is used on a structure, or if bit-fields are used,
! it may be that the Microsoft \s-1ABI\s0 lays out the structure differently
! than the way \s-1GCC\s0 normally does.  Particularly when moving packed
! data between functions compiled with \s-1GCC\s0 and the native Microsoft compiler
  (either via function call or as data in a file), it may be necessary to access
  either format.
  .Sp
--- 35410,35496 ----
  \&\f(CW\*(C`_\|_vrs4_expf\*(C'\fR, \f(CW\*(C`_\|_vrs4_logf\*(C'\fR, \f(CW\*(C`_\|_vrs4_log2f\*(C'\fR,
  \&\f(CW\*(C`_\|_vrs4_log10f\*(C'\fR and \f(CW\*(C`_\|_vrs4_powf\*(C'\fR for the corresponding function type
  when \fB\-mveclibabi=acml\fR is used.
! .IP \fB\-mabi=\fR\fIname\fR 4
  .IX Item "-mabi=name"
  Generate code for the specified calling convention.  Permissible values
! are \fBsysv\fR for the ABI used on GNU/Linux and other systems, and
! \&\fBms\fR for the Microsoft ABI.  The default is to use the Microsoft
! ABI when targeting Microsoft Windows and the SysV ABI on all other systems.
  You can control this behavior for specific functions by
  using the function attributes \f(CW\*(C`ms_abi\*(C'\fR and \f(CW\*(C`sysv_abi\*(C'\fR.
! .IP \fB\-mforce\-indirect\-call\fR 4
  .IX Item "-mforce-indirect-call"
  Force all calls to functions to be indirect. This is useful
  when using Intel Processor Trace where it generates more precise timing
  information for function calls.
! .IP \fB\-mmanual\-endbr\fR 4
  .IX Item "-mmanual-endbr"
! Insert ENDBR instruction at function entry only via the \f(CW\*(C`cf_check\*(C'\fR
  function attribute. This is useful when used with the option
! \&\fB\-fcf\-protection=branch\fR to control ENDBR insertion at the
  function entry.
! .IP \fB\-mcet\-switch\fR 4
  .IX Item "-mcet-switch"
! By default, CET instrumentation is turned off on switch statements that
  use a jump table and indirect branch track is disabled.  Since jump
! tables are stored in read\-only memory, this does not result in a direct
! loss of hardening.  But if the jump table index is attacker\-controlled,
! the indirect jump may not be constrained by CET.  This option turns on
! CET instrumentation to enable indirect branch track for switch statements
  with jump tables which leads to the jump targets reachable via any indirect
  jumps.
! .IP \fB\-mcall\-ms2sysv\-xlogues\fR 4
  .IX Item "-mcall-ms2sysv-xlogues"
! Due to differences in 64\-bit ABIs, any Microsoft ABI function that calls a
! System V ABI function must consider RSI, RDI and XMM6\-15 as clobbered.  By
  default, the code for saving and restoring these registers is emitted inline,
  resulting in fairly lengthy prologues and epilogues.  Using
  \&\fB\-mcall\-ms2sysv\-xlogues\fR emits prologues and epilogues that
  use stubs in the static portion of libgcc to perform these saves and restores,
  thus reducing function size at the cost of a few extra instructions.
! .IP \fB\-mtls\-dialect=\fR\fItype\fR 4
  .IX Item "-mtls-dialect=type"
! Generate code to access thread\-local storage using the \fBgnu\fR or
  \&\fBgnu2\fR conventions.  \fBgnu\fR is the conservative default;
! \&\fBgnu2\fR is more efficient, but it may add compile\- and run\-time
  requirements that cannot be satisfied on all systems.
! .IP \fB\-mpush\-args\fR 4
  .IX Item "-mpush-args"
  .PD 0
! .IP \fB\-mno\-push\-args\fR 4
  .IX Item "-mno-push-args"
  .PD
! Use PUSH operations to store outgoing parameters.  This method is shorter
! and usually equally fast as method using SUB/MOV operations and is enabled
  by default.  In some cases disabling it may improve performance because of
  improved scheduling and reduced dependencies.
! .IP \fB\-maccumulate\-outgoing\-args\fR 4
  .IX Item "-maccumulate-outgoing-args"
  If enabled, the maximum amount of space required for outgoing arguments is
  computed in the function prologue.  This is faster on most modern CPUs
  because of reduced dependencies, improved scheduling and reduced stack usage
  when the preferred stack boundary is not equal to 2.  The drawback is a notable
  increase in code size.  This switch implies \fB\-mno\-push\-args\fR.
! .IP \fB\-mthreads\fR 4
  .IX Item "-mthreads"
! Support thread\-safe exception handling on MinGW.  Programs that rely
! on thread\-safe exception handling must compile and link all code with the
  \&\fB\-mthreads\fR option.  When compiling, \fB\-mthreads\fR defines
  \&\fB\-D_MT\fR; when linking, it links in a special thread helper library
! \&\fB\-lmingwthrd\fR which cleans up per\-thread exception\-handling data.
! .IP \fB\-mms\-bitfields\fR 4
  .IX Item "-mms-bitfields"
  .PD 0
! .IP \fB\-mno\-ms\-bitfields\fR 4
  .IX Item "-mno-ms-bitfields"
  .PD
! Enable/disable bit\-field layout compatible with the native Microsoft
  Windows compiler.
  .Sp
! If \f(CW\*(C`packed\*(C'\fR is used on a structure, or if bit\-fields are used,
! it may be that the Microsoft ABI lays out the structure differently
! than the way GCC normally does.  Particularly when moving packed
! data between functions compiled with GCC and the native Microsoft compiler
  (either via function call or as data in a file), it may be necessary to access
  either format.
  .Sp
*************** or type attributes.  For more informatio
*** 35566,35574 ****
  and \fBx86 Type Attributes\fR.
  .Sp
  The Microsoft structure layout algorithm is fairly simple with the exception
! of the bit-field packing.
! The padding and alignment of members of structures and whether a bit-field
! can straddle a storage-unit boundary are determine by these rules:
  .RS 4
  .IP "1. Structure members are stored sequentially in the order in which they are" 4
  .IX Item "1. Structure members are stored sequentially in the order in which they are"
--- 35500,35508 ----
  and \fBx86 Type Attributes\fR.
  .Sp
  The Microsoft structure layout algorithm is fairly simple with the exception
! of the bit\-field packing.
! The padding and alignment of members of structures and whether a bit\-field
! can straddle a storage\-unit boundary are determine by these rules:
  .RS 4
  .IP "1. Structure members are stored sequentially in the order in which they are" 4
  .IX Item "1. Structure members are stored sequentially in the order in which they are"
*************** Every object is allocated an offset so t
*** 35586,35603 ****
  .Vb 1
  \&        offset % alignment_requirement == 0
  .Ve
! .IP "3. Adjacent bit-fields are packed into the same 1\-, 2\-, or 4\-byte allocation" 4
  .IX Item "3. Adjacent bit-fields are packed into the same 1-, 2-, or 4-byte allocation"
! unit if the integral types are the same size and if the next bit-field fits
  into the current allocation unit without crossing the boundary imposed by the
! common alignment requirements of the bit-fields.
  .RE
  .RS 4
  .Sp
! \&\s-1MSVC\s0 interprets zero-length bit-fields in the following ways:
! .IP "1. If a zero-length bit-field is inserted between two bit-fields that" 4
  .IX Item "1. If a zero-length bit-field is inserted between two bit-fields that"
! are normally coalesced, the bit-fields are not coalesced.
  .Sp
  For example:
  .Sp
--- 35520,35537 ----
  .Vb 1
  \&        offset % alignment_requirement == 0
  .Ve
! .IP "3. Adjacent bit\-fields are packed into the same 1\-, 2\-, or 4\-byte allocation" 4
  .IX Item "3. Adjacent bit-fields are packed into the same 1-, 2-, or 4-byte allocation"
! unit if the integral types are the same size and if the next bit\-field fits
  into the current allocation unit without crossing the boundary imposed by the
! common alignment requirements of the bit\-fields.
  .RE
  .RS 4
  .Sp
! MSVC interprets zero\-length bit\-fields in the following ways:
! .IP "1. If a zero\-length bit\-field is inserted between two bit\-fields that" 4
  .IX Item "1. If a zero-length bit-field is inserted between two bit-fields that"
! are normally coalesced, the bit\-fields are not coalesced.
  .Sp
  For example:
  .Sp
*************** For example:
*** 35610,35622 ****
  \&         } t1;
  .Ve
  .Sp
! The size of \f(CW\*(C`t1\*(C'\fR is 8 bytes with the zero-length bit-field.  If the
! zero-length bit-field were removed, \f(CW\*(C`t1\*(C'\fR's size would be 4 bytes.
! .ie n .IP "2. If a zero-length bit-field is inserted after a bit-field, ""foo"", and the" 4
! .el .IP "2. If a zero-length bit-field is inserted after a bit-field, \f(CWfoo\fR, and the" 4
  .IX Item "2. If a zero-length bit-field is inserted after a bit-field, foo, and the"
! alignment of the zero-length bit-field is greater than the member that follows it,
! \&\f(CW\*(C`bar\*(C'\fR, \f(CW\*(C`bar\*(C'\fR is aligned as the type of the zero-length bit-field.
  .Sp
  For example:
  .Sp
--- 35544,35556 ----
  \&         } t1;
  .Ve
  .Sp
! The size of \f(CW\*(C`t1\*(C'\fR is 8 bytes with the zero\-length bit\-field.  If the
! zero\-length bit\-field were removed, \f(CW\*(C`t1\*(C'\fR\*(Aqs size would be 4 bytes.
! .ie n .IP "2. If a zero\-length bit\-field is inserted after a bit\-field, ""foo"", and the" 4
! .el .IP "2. If a zero\-length bit\-field is inserted after a bit\-field, \f(CWfoo\fR, and the" 4
  .IX Item "2. If a zero-length bit-field is inserted after a bit-field, foo, and the"
! alignment of the zero\-length bit\-field is greater than the member that follows it,
! \&\f(CW\*(C`bar\*(C'\fR, \f(CW\*(C`bar\*(C'\fR is aligned as the type of the zero\-length bit\-field.
  .Sp
  For example:
  .Sp
*************** For example:
*** 35637,35654 ****
  .Ve
  .Sp
  For \f(CW\*(C`t2\*(C'\fR, \f(CW\*(C`bar\*(C'\fR is placed at offset 2, rather than offset 1.
! Accordingly, the size of \f(CW\*(C`t2\*(C'\fR is 4.  For \f(CW\*(C`t3\*(C'\fR, the zero-length
! bit-field does not affect the alignment of \f(CW\*(C`bar\*(C'\fR or, as a result, the size
  of the structure.
  .Sp
  Taking this into account, it is important to note the following:
  .RS 4
! .IP "1. If a zero-length bit-field follows a normal bit-field, the type of the" 4
  .IX Item "1. If a zero-length bit-field follows a normal bit-field, the type of the"
! zero-length bit-field may affect the alignment of the structure as whole. For
! example, \f(CW\*(C`t2\*(C'\fR has a size of 4 bytes, since the zero-length bit-field follows a
! normal bit-field, and is of type short.
! .IP "2. Even if a zero-length bit-field is not followed by a normal bit-field, it may" 4
  .IX Item "2. Even if a zero-length bit-field is not followed by a normal bit-field, it may"
  still affect the alignment of the structure:
  .Sp
--- 35571,35588 ----
  .Ve
  .Sp
  For \f(CW\*(C`t2\*(C'\fR, \f(CW\*(C`bar\*(C'\fR is placed at offset 2, rather than offset 1.
! Accordingly, the size of \f(CW\*(C`t2\*(C'\fR is 4.  For \f(CW\*(C`t3\*(C'\fR, the zero\-length
! bit\-field does not affect the alignment of \f(CW\*(C`bar\*(C'\fR or, as a result, the size
  of the structure.
  .Sp
  Taking this into account, it is important to note the following:
  .RS 4
! .IP "1. If a zero\-length bit\-field follows a normal bit\-field, the type of the" 4
  .IX Item "1. If a zero-length bit-field follows a normal bit-field, the type of the"
! zero\-length bit\-field may affect the alignment of the structure as whole. For
! example, \f(CW\*(C`t2\*(C'\fR has a size of 4 bytes, since the zero\-length bit\-field follows a
! normal bit\-field, and is of type short.
! .IP "2. Even if a zero\-length bit\-field is not followed by a normal bit\-field, it may" 4
  .IX Item "2. Even if a zero-length bit-field is not followed by a normal bit-field, it may"
  still affect the alignment of the structure:
  .Sp
*************** Here, \f(CW\*(C`t4\*(C'\fR takes up 4 by
*** 35664,35670 ****
  .RE
  .RS 4
  .RE
! .IP "3. Zero-length bit-fields following non-bit-field members are ignored:" 4
  .IX Item "3. Zero-length bit-fields following non-bit-field members are ignored:"
  .Vb 6
  \&        struct
--- 35598,35604 ----
  .RE
  .RS 4
  .RE
! .IP "3. Zero\-length bit\-fields following non\-bit\-field members are ignored:" 4
  .IX Item "3. Zero-length bit-fields following non-bit-field members are ignored:"
  .Vb 6
  \&        struct
*************** Here, \f(CW\*(C`t5\*(C'\fR takes up 2 by
*** 35679,35870 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-mno\-align\-stringops\fR" 4
  .IX Item "-mno-align-stringops"
  Do not align the destination of inlined string operations.  This switch reduces
  code size and improves performance in case the destination is already aligned,
! but \s-1GCC\s0 doesn't know about it.
! .IP "\fB\-minline\-all\-stringops\fR" 4
  .IX Item "-minline-all-stringops"
! By default \s-1GCC\s0 inlines string operations only when the destination is
  known to be aligned to least a 4\-byte boundary.
  This enables more inlining and increases code
  size, but may improve performance of code that depends on fast
  \&\f(CW\*(C`memcpy\*(C'\fR and \f(CW\*(C`memset\*(C'\fR for short lengths.
  The option enables inline expansion of \f(CW\*(C`strlen\*(C'\fR for all
  pointer alignments.
! .IP "\fB\-minline\-stringops\-dynamically\fR" 4
  .IX Item "-minline-stringops-dynamically"
! For string operations of unknown size, use run-time checks with
  inline code for small blocks and a library call for large blocks.
! .IP "\fB\-mstringop\-strategy=\fR\fIalg\fR" 4
  .IX Item "-mstringop-strategy=alg"
  Override the internal decision heuristic for the particular algorithm to use
  for inlining string operations.  The allowed values for \fIalg\fR are:
  .RS 4
! .IP "\fBrep_byte\fR" 4
  .IX Item "rep_byte"
  .PD 0
! .IP "\fBrep_4byte\fR" 4
  .IX Item "rep_4byte"
! .IP "\fBrep_8byte\fR" 4
  .IX Item "rep_8byte"
  .PD
  Expand using i386 \f(CW\*(C`rep\*(C'\fR prefix of the specified size.
! .IP "\fBbyte_loop\fR" 4
  .IX Item "byte_loop"
  .PD 0
! .IP "\fBloop\fR" 4
  .IX Item "loop"
! .IP "\fBunrolled_loop\fR" 4
  .IX Item "unrolled_loop"
  .PD
  Expand into an inline loop.
! .IP "\fBlibcall\fR" 4
  .IX Item "libcall"
  Always use a library call.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mmemcpy\-strategy=\fR\fIstrategy\fR" 4
  .IX Item "-mmemcpy-strategy=strategy"
  Override the internal decision heuristic to decide if \f(CW\*(C`_\|_builtin_memcpy\*(C'\fR
  should be inlined and what inline algorithm to use when the expected size
  of the copy operation is known. \fIstrategy\fR
! is a comma-separated list of \fIalg\fR:\fImax_size\fR:\fIdest_align\fR triplets.
  \&\fIalg\fR is specified in \fB\-mstringop\-strategy\fR, \fImax_size\fR specifies
  the max byte size with which inline algorithm \fIalg\fR is allowed.  For the last
! triplet, the \fImax_size\fR must be \f(CW\*(C`\-1\*(C'\fR. The \fImax_size\fR of the triplets
  in the list must be specified in increasing order.  The minimal byte size for
! \&\fIalg\fR is \f(CW0\fR for the first triplet and \f(CW\*(C`\f(CImax_size\f(CW + 1\*(C'\fR of the
  preceding range.
! .IP "\fB\-mmemset\-strategy=\fR\fIstrategy\fR" 4
  .IX Item "-mmemset-strategy=strategy"
  The option is similar to \fB\-mmemcpy\-strategy=\fR except that it is to control
  \&\f(CW\*(C`_\|_builtin_memset\*(C'\fR expansion.
! .IP "\fB\-momit\-leaf\-frame\-pointer\fR" 4
  .IX Item "-momit-leaf-frame-pointer"
! Don't keep the frame pointer in a register for leaf functions.  This
  avoids the instructions to save, set up, and restore frame pointers and
  makes an extra register available in leaf functions.  The option
  \&\fB\-fomit\-leaf\-frame\-pointer\fR removes the frame pointer for leaf functions,
  which might make debugging harder.
! .IP "\fB\-mtls\-direct\-seg\-refs\fR" 4
  .IX Item "-mtls-direct-seg-refs"
  .PD 0
! .IP "\fB\-mno\-tls\-direct\-seg\-refs\fR" 4
  .IX Item "-mno-tls-direct-seg-refs"
  .PD
! Controls whether \s-1TLS\s0 variables may be accessed with offsets from the
! \&\s-1TLS\s0 segment register (\f(CW%gs\fR for 32\-bit, \f(CW%fs\fR for 64\-bit),
  or whether the thread base pointer must be added.  Whether or not this
  is valid depends on the operating system, and whether it maps the
! segment to cover the entire \s-1TLS\s0 area.
  .Sp
! For systems that use the \s-1GNU C\s0 Library, the default is on.
! .IP "\fB\-msse2avx\fR" 4
  .IX Item "-msse2avx"
  .PD 0
! .IP "\fB\-mno\-sse2avx\fR" 4
  .IX Item "-mno-sse2avx"
  .PD
! Specify that the assembler should encode \s-1SSE\s0 instructions with \s-1VEX\s0
  prefix.  The option \fB\-mavx\fR turns this on by default.
! .IP "\fB\-mfentry\fR" 4
  .IX Item "-mfentry"
  .PD 0
! .IP "\fB\-mno\-fentry\fR" 4
  .IX Item "-mno-fentry"
  .PD
  If profiling is active (\fB\-pg\fR), put the profiling
  counter call before the prologue.
  Note: On x86 architectures the attribute \f(CW\*(C`ms_hook_prologue\*(C'\fR
! isn't possible at the moment for \fB\-mfentry\fR and \fB\-pg\fR.
! .IP "\fB\-mrecord\-mcount\fR" 4
  .IX Item "-mrecord-mcount"
  .PD 0
! .IP "\fB\-mno\-record\-mcount\fR" 4
  .IX Item "-mno-record-mcount"
  .PD
  If profiling is active (\fB\-pg\fR), generate a _\|_mcount_loc section
  that contains pointers to each profiling call. This is useful for
  automatically patching and out calls.
! .IP "\fB\-mnop\-mcount\fR" 4
  .IX Item "-mnop-mcount"
  .PD 0
! .IP "\fB\-mno\-nop\-mcount\fR" 4
  .IX Item "-mno-nop-mcount"
  .PD
  If profiling is active (\fB\-pg\fR), generate the calls to
  the profiling functions as NOPs. This is useful when they
  should be patched in later dynamically. This is likely only
  useful together with \fB\-mrecord\-mcount\fR.
! .IP "\fB\-minstrument\-return=\fR\fItype\fR" 4
  .IX Item "-minstrument-return=type"
  Instrument function exit in \-pg \-mfentry instrumented functions with
  call to specified function. This only instruments true returns ending
  with ret, but not sibling calls ending with jump. Valid types
  are \fInone\fR to not instrument, \fIcall\fR to generate a call to _\|_return_\|_,
  or \fInop5\fR to generate a 5 byte nop.
! .IP "\fB\-mrecord\-return\fR" 4
  .IX Item "-mrecord-return"
  .PD 0
! .IP "\fB\-mno\-record\-return\fR" 4
  .IX Item "-mno-record-return"
  .PD
  Generate a _\|_return_loc section pointing to all return instrumentation code.
! .IP "\fB\-mfentry\-name=\fR\fIname\fR" 4
  .IX Item "-mfentry-name=name"
  Set name of _\|_fentry_\|_ symbol called at function entry for \-pg \-mfentry functions.
! .IP "\fB\-mfentry\-section=\fR\fIname\fR" 4
  .IX Item "-mfentry-section=name"
  Set name of section to record \-mrecord\-mcount calls (default _\|_mcount_loc).
! .IP "\fB\-mskip\-rax\-setup\fR" 4
  .IX Item "-mskip-rax-setup"
  .PD 0
! .IP "\fB\-mno\-skip\-rax\-setup\fR" 4
  .IX Item "-mno-skip-rax-setup"
  .PD
! When generating code for the x86\-64 architecture with \s-1SSE\s0 extensions
! disabled, \fB\-mskip\-rax\-setup\fR can be used to skip setting up \s-1RAX\s0
  register when there are no variable arguments passed in vector registers.
  .Sp
! \&\fBWarning:\fR Since \s-1RAX\s0 register is used to avoid unnecessarily
  saving vector registers on stack when passing variable arguments, the
  impacts of this option are callees may waste some stack space,
! misbehave or jump to a random location.  \s-1GCC 4.4\s0 or newer don't have
! those issues, regardless the \s-1RAX\s0 register value.
! .IP "\fB\-m8bit\-idiv\fR" 4
  .IX Item "-m8bit-idiv"
  .PD 0
! .IP "\fB\-mno\-8bit\-idiv\fR" 4
  .IX Item "-mno-8bit-idiv"
  .PD
  On some processors, like Intel Atom, 8\-bit unsigned integer divide is
  much faster than 32\-bit/64\-bit integer divide.  This option generates a
! run-time check.  If both dividend and divisor are within range of 0
  to 255, 8\-bit unsigned integer divide is used instead of
  32\-bit/64\-bit integer divide.
! .IP "\fB\-mavx256\-split\-unaligned\-load\fR" 4
  .IX Item "-mavx256-split-unaligned-load"
  .PD 0
! .IP "\fB\-mavx256\-split\-unaligned\-store\fR" 4
  .IX Item "-mavx256-split-unaligned-store"
  .PD
! Split 32\-byte \s-1AVX\s0 unaligned load and store.
! .IP "\fB\-mstack\-protector\-guard=\fR\fIguard\fR" 4
  .IX Item "-mstack-protector-guard=guard"
  .PD 0
! .IP "\fB\-mstack\-protector\-guard\-reg=\fR\fIreg\fR" 4
  .IX Item "-mstack-protector-guard-reg=reg"
! .IP "\fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR" 4
  .IX Item "-mstack-protector-guard-offset=offset"
! .IP "\fB\-mstack\-protector\-guard\-symbol=\fR\fIsymbol\fR" 4
  .IX Item "-mstack-protector-guard-symbol=symbol"
  .PD
  Generate stack protection code using canary at \fIguard\fR.  Supported
! locations are \fBglobal\fR for global canary or \fBtls\fR for per-thread
! canary in the \s-1TLS\s0 block (the default).  This option has effect only when
  \&\fB\-fstack\-protector\fR or \fB\-fstack\-protector\-all\fR is specified.
  .Sp
  With the latter choice the options
--- 35613,35804 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-mno\-align\-stringops\fR 4
  .IX Item "-mno-align-stringops"
  Do not align the destination of inlined string operations.  This switch reduces
  code size and improves performance in case the destination is already aligned,
! but GCC doesn\*(Aqt know about it.
! .IP \fB\-minline\-all\-stringops\fR 4
  .IX Item "-minline-all-stringops"
! By default GCC inlines string operations only when the destination is
  known to be aligned to least a 4\-byte boundary.
  This enables more inlining and increases code
  size, but may improve performance of code that depends on fast
  \&\f(CW\*(C`memcpy\*(C'\fR and \f(CW\*(C`memset\*(C'\fR for short lengths.
  The option enables inline expansion of \f(CW\*(C`strlen\*(C'\fR for all
  pointer alignments.
! .IP \fB\-minline\-stringops\-dynamically\fR 4
  .IX Item "-minline-stringops-dynamically"
! For string operations of unknown size, use run\-time checks with
  inline code for small blocks and a library call for large blocks.
! .IP \fB\-mstringop\-strategy=\fR\fIalg\fR 4
  .IX Item "-mstringop-strategy=alg"
  Override the internal decision heuristic for the particular algorithm to use
  for inlining string operations.  The allowed values for \fIalg\fR are:
  .RS 4
! .IP \fBrep_byte\fR 4
  .IX Item "rep_byte"
  .PD 0
! .IP \fBrep_4byte\fR 4
  .IX Item "rep_4byte"
! .IP \fBrep_8byte\fR 4
  .IX Item "rep_8byte"
  .PD
  Expand using i386 \f(CW\*(C`rep\*(C'\fR prefix of the specified size.
! .IP \fBbyte_loop\fR 4
  .IX Item "byte_loop"
  .PD 0
! .IP \fBloop\fR 4
  .IX Item "loop"
! .IP \fBunrolled_loop\fR 4
  .IX Item "unrolled_loop"
  .PD
  Expand into an inline loop.
! .IP \fBlibcall\fR 4
  .IX Item "libcall"
  Always use a library call.
  .RE
  .RS 4
  .RE
! .IP \fB\-mmemcpy\-strategy=\fR\fIstrategy\fR 4
  .IX Item "-mmemcpy-strategy=strategy"
  Override the internal decision heuristic to decide if \f(CW\*(C`_\|_builtin_memcpy\*(C'\fR
  should be inlined and what inline algorithm to use when the expected size
  of the copy operation is known. \fIstrategy\fR
! is a comma\-separated list of \fIalg\fR:\fImax_size\fR:\fIdest_align\fR triplets.
  \&\fIalg\fR is specified in \fB\-mstringop\-strategy\fR, \fImax_size\fR specifies
  the max byte size with which inline algorithm \fIalg\fR is allowed.  For the last
! triplet, the \fImax_size\fR must be \f(CW\-1\fR. The \fImax_size\fR of the triplets
  in the list must be specified in increasing order.  The minimal byte size for
! \&\fIalg\fR is \f(CW0\fR for the first triplet and \f(CW\*(C`\fR\f(CImax_size\fR\f(CW + 1\*(C'\fR of the
  preceding range.
! .IP \fB\-mmemset\-strategy=\fR\fIstrategy\fR 4
  .IX Item "-mmemset-strategy=strategy"
  The option is similar to \fB\-mmemcpy\-strategy=\fR except that it is to control
  \&\f(CW\*(C`_\|_builtin_memset\*(C'\fR expansion.
! .IP \fB\-momit\-leaf\-frame\-pointer\fR 4
  .IX Item "-momit-leaf-frame-pointer"
! Don\*(Aqt keep the frame pointer in a register for leaf functions.  This
  avoids the instructions to save, set up, and restore frame pointers and
  makes an extra register available in leaf functions.  The option
  \&\fB\-fomit\-leaf\-frame\-pointer\fR removes the frame pointer for leaf functions,
  which might make debugging harder.
! .IP \fB\-mtls\-direct\-seg\-refs\fR 4
  .IX Item "-mtls-direct-seg-refs"
  .PD 0
! .IP \fB\-mno\-tls\-direct\-seg\-refs\fR 4
  .IX Item "-mno-tls-direct-seg-refs"
  .PD
! Controls whether TLS variables may be accessed with offsets from the
! TLS segment register (\f(CW%gs\fR for 32\-bit, \f(CW%fs\fR for 64\-bit),
  or whether the thread base pointer must be added.  Whether or not this
  is valid depends on the operating system, and whether it maps the
! segment to cover the entire TLS area.
  .Sp
! For systems that use the GNU C Library, the default is on.
! .IP \fB\-msse2avx\fR 4
  .IX Item "-msse2avx"
  .PD 0
! .IP \fB\-mno\-sse2avx\fR 4
  .IX Item "-mno-sse2avx"
  .PD
! Specify that the assembler should encode SSE instructions with VEX
  prefix.  The option \fB\-mavx\fR turns this on by default.
! .IP \fB\-mfentry\fR 4
  .IX Item "-mfentry"
  .PD 0
! .IP \fB\-mno\-fentry\fR 4
  .IX Item "-mno-fentry"
  .PD
  If profiling is active (\fB\-pg\fR), put the profiling
  counter call before the prologue.
  Note: On x86 architectures the attribute \f(CW\*(C`ms_hook_prologue\*(C'\fR
! isn\*(Aqt possible at the moment for \fB\-mfentry\fR and \fB\-pg\fR.
! .IP \fB\-mrecord\-mcount\fR 4
  .IX Item "-mrecord-mcount"
  .PD 0
! .IP \fB\-mno\-record\-mcount\fR 4
  .IX Item "-mno-record-mcount"
  .PD
  If profiling is active (\fB\-pg\fR), generate a _\|_mcount_loc section
  that contains pointers to each profiling call. This is useful for
  automatically patching and out calls.
! .IP \fB\-mnop\-mcount\fR 4
  .IX Item "-mnop-mcount"
  .PD 0
! .IP \fB\-mno\-nop\-mcount\fR 4
  .IX Item "-mno-nop-mcount"
  .PD
  If profiling is active (\fB\-pg\fR), generate the calls to
  the profiling functions as NOPs. This is useful when they
  should be patched in later dynamically. This is likely only
  useful together with \fB\-mrecord\-mcount\fR.
! .IP \fB\-minstrument\-return=\fR\fItype\fR 4
  .IX Item "-minstrument-return=type"
  Instrument function exit in \-pg \-mfentry instrumented functions with
  call to specified function. This only instruments true returns ending
  with ret, but not sibling calls ending with jump. Valid types
  are \fInone\fR to not instrument, \fIcall\fR to generate a call to _\|_return_\|_,
  or \fInop5\fR to generate a 5 byte nop.
! .IP \fB\-mrecord\-return\fR 4
  .IX Item "-mrecord-return"
  .PD 0
! .IP \fB\-mno\-record\-return\fR 4
  .IX Item "-mno-record-return"
  .PD
  Generate a _\|_return_loc section pointing to all return instrumentation code.
! .IP \fB\-mfentry\-name=\fR\fIname\fR 4
  .IX Item "-mfentry-name=name"
  Set name of _\|_fentry_\|_ symbol called at function entry for \-pg \-mfentry functions.
! .IP \fB\-mfentry\-section=\fR\fIname\fR 4
  .IX Item "-mfentry-section=name"
  Set name of section to record \-mrecord\-mcount calls (default _\|_mcount_loc).
! .IP \fB\-mskip\-rax\-setup\fR 4
  .IX Item "-mskip-rax-setup"
  .PD 0
! .IP \fB\-mno\-skip\-rax\-setup\fR 4
  .IX Item "-mno-skip-rax-setup"
  .PD
! When generating code for the x86\-64 architecture with SSE extensions
! disabled, \fB\-mskip\-rax\-setup\fR can be used to skip setting up RAX
  register when there are no variable arguments passed in vector registers.
  .Sp
! \&\fBWarning:\fR Since RAX register is used to avoid unnecessarily
  saving vector registers on stack when passing variable arguments, the
  impacts of this option are callees may waste some stack space,
! misbehave or jump to a random location.  GCC 4.4 or newer don\*(Aqt have
! those issues, regardless the RAX register value.
! .IP \fB\-m8bit\-idiv\fR 4
  .IX Item "-m8bit-idiv"
  .PD 0
! .IP \fB\-mno\-8bit\-idiv\fR 4
  .IX Item "-mno-8bit-idiv"
  .PD
  On some processors, like Intel Atom, 8\-bit unsigned integer divide is
  much faster than 32\-bit/64\-bit integer divide.  This option generates a
! run\-time check.  If both dividend and divisor are within range of 0
  to 255, 8\-bit unsigned integer divide is used instead of
  32\-bit/64\-bit integer divide.
! .IP \fB\-mavx256\-split\-unaligned\-load\fR 4
  .IX Item "-mavx256-split-unaligned-load"
  .PD 0
! .IP \fB\-mavx256\-split\-unaligned\-store\fR 4
  .IX Item "-mavx256-split-unaligned-store"
  .PD
! Split 32\-byte AVX unaligned load and store.
! .IP \fB\-mstack\-protector\-guard=\fR\fIguard\fR 4
  .IX Item "-mstack-protector-guard=guard"
  .PD 0
! .IP \fB\-mstack\-protector\-guard\-reg=\fR\fIreg\fR 4
  .IX Item "-mstack-protector-guard-reg=reg"
! .IP \fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR 4
  .IX Item "-mstack-protector-guard-offset=offset"
! .IP \fB\-mstack\-protector\-guard\-symbol=\fR\fIsymbol\fR 4
  .IX Item "-mstack-protector-guard-symbol=symbol"
  .PD
  Generate stack protection code using canary at \fIguard\fR.  Supported
! locations are \fBglobal\fR for global canary or \fBtls\fR for per\-thread
! canary in the TLS block (the default).  This option has effect only when
  \&\fB\-fstack\-protector\fR or \fB\-fstack\-protector\-all\fR is specified.
  .Sp
  With the latter choice the options
*************** With the latter choice the options
*** 35872,35900 ****
  \&\fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR furthermore specify
  which segment register (\f(CW%fs\fR or \f(CW%gs\fR) to use as base register
  for reading the canary, and from what offset from that base register.
! The default for those is as specified in the relevant \s-1ABI.\s0
  .Sp
  \&\fB\-mstack\-protector\-guard\-symbol=\fR\fIsymbol\fR overrides
! the offset with a symbol reference to a canary in the \s-1TLS\s0 block.
! .IP "\fB\-mgeneral\-regs\-only\fR" 4
  .IX Item "-mgeneral-regs-only"
! Generate code that uses only the general-purpose registers.  This
! prevents the compiler from using floating-point, vector, mask and bound
  registers.
! .IP "\fB\-mrelax\-cmpxchg\-loop\fR" 4
  .IX Item "-mrelax-cmpxchg-loop"
! When emitting a compare-and-swap loop for \fB_\|_sync Builtins\fR
  and \fB_\|_atomic Builtins\fR lacking a native instruction, optimize
  for the highly contended case by issuing an atomic load before the
  \&\f(CW\*(C`CMPXCHG\*(C'\fR instruction, and using the \f(CW\*(C`PAUSE\*(C'\fR instruction
! to save \s-1CPU\s0 power when restarting the loop.
! .IP "\fB\-mindirect\-branch=\fR\fIchoice\fR" 4
  .IX Item "-mindirect-branch=choice"
  Convert indirect call and jump with \fIchoice\fR.  The default is
  \&\fBkeep\fR, which keeps indirect call and jump unmodified.
  \&\fBthunk\fR converts indirect call and jump to call and return thunk.
! \&\fBthunk-inline\fR converts indirect call and jump to inlined call
! and return thunk.  \fBthunk-extern\fR converts indirect call and jump
  to external call and return thunk provided in a separate object file.
  You can control this behavior for a specific function by using the
  function attribute \f(CW\*(C`indirect_branch\*(C'\fR.
--- 35806,35834 ----
  \&\fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR furthermore specify
  which segment register (\f(CW%fs\fR or \f(CW%gs\fR) to use as base register
  for reading the canary, and from what offset from that base register.
! The default for those is as specified in the relevant ABI.
  .Sp
  \&\fB\-mstack\-protector\-guard\-symbol=\fR\fIsymbol\fR overrides
! the offset with a symbol reference to a canary in the TLS block.
! .IP \fB\-mgeneral\-regs\-only\fR 4
  .IX Item "-mgeneral-regs-only"
! Generate code that uses only the general\-purpose registers.  This
! prevents the compiler from using floating\-point, vector, mask and bound
  registers.
! .IP \fB\-mrelax\-cmpxchg\-loop\fR 4
  .IX Item "-mrelax-cmpxchg-loop"
! When emitting a compare\-and\-swap loop for \fB_\|_sync Builtins\fR
  and \fB_\|_atomic Builtins\fR lacking a native instruction, optimize
  for the highly contended case by issuing an atomic load before the
  \&\f(CW\*(C`CMPXCHG\*(C'\fR instruction, and using the \f(CW\*(C`PAUSE\*(C'\fR instruction
! to save CPU power when restarting the loop.
! .IP \fB\-mindirect\-branch=\fR\fIchoice\fR 4
  .IX Item "-mindirect-branch=choice"
  Convert indirect call and jump with \fIchoice\fR.  The default is
  \&\fBkeep\fR, which keeps indirect call and jump unmodified.
  \&\fBthunk\fR converts indirect call and jump to call and return thunk.
! \&\fBthunk\-inline\fR converts indirect call and jump to inlined call
! and return thunk.  \fBthunk\-extern\fR converts indirect call and jump
  to external call and return thunk provided in a separate object file.
  You can control this behavior for a specific function by using the
  function attribute \f(CW\*(C`indirect_branch\*(C'\fR.
*************** not be reachable in the large code model
*** 35906,35973 ****
  .Sp
  Note that \fB\-mindirect\-branch=thunk\-extern\fR is compatible with
  \&\fB\-fcf\-protection=branch\fR since the external thunk can be made
! to enable control-flow check.
! .IP "\fB\-mfunction\-return=\fR\fIchoice\fR" 4
  .IX Item "-mfunction-return=choice"
  Convert function return with \fIchoice\fR.  The default is \fBkeep\fR,
  which keeps function return unmodified.  \fBthunk\fR converts function
! return to call and return thunk.  \fBthunk-inline\fR converts function
! return to inlined call and return thunk.  \fBthunk-extern\fR converts
  function return to external call and return thunk provided in a separate
  object file.  You can control this behavior for a specific function by
  using the function attribute \f(CW\*(C`function_return\*(C'\fR.
  .Sp
  Note that \fB\-mindirect\-return=thunk\-extern\fR is compatible with
  \&\fB\-fcf\-protection=branch\fR since the external thunk can be made
! to enable control-flow check.
  .Sp
  Note that \fB\-mcmodel=large\fR is incompatible with
  \&\fB\-mfunction\-return=thunk\fR and
  \&\fB\-mfunction\-return=thunk\-extern\fR since the thunk function may
  not be reachable in the large code model.
! .IP "\fB\-mindirect\-branch\-register\fR" 4
  .IX Item "-mindirect-branch-register"
  Force indirect call and jump via register.
! .IP "\fB\-mharden\-sls=\fR\fIchoice\fR" 4
  .IX Item "-mharden-sls=choice"
! Generate code to mitigate against straight line speculation (\s-1SLS\s0) with
! \&\fIchoice\fR.  The default is \fBnone\fR which disables all \s-1SLS\s0
! hardening.  \fBreturn\fR enables \s-1SLS\s0 hardening for function returns.
! \&\fBindirect-jmp\fR enables \s-1SLS\s0 hardening for indirect jumps.
! \&\fBall\fR enables all \s-1SLS\s0 hardening.
! .IP "\fB\-mindirect\-branch\-cs\-prefix\fR" 4
  .IX Item "-mindirect-branch-cs-prefix"
! Add \s-1CS\s0 prefix to call and jmp to indirect thunk with branch target in
  r8\-r15 registers so that the call and jmp instruction length is 6 bytes
  to allow them to be replaced with \fBlfence; call *%r8\-r15\fR or
! \&\fBlfence; jmp *%r8\-r15\fR at run-time.
! .IP "\fB\-mapx\-inline\-asm\-use\-gpr32\fR" 4
  .IX Item "-mapx-inline-asm-use-gpr32"
! For inline asm support with \s-1APX,\s0 by default the \s-1EGPR\s0 feature was
! disabled to prevent potential illegal instruction with \s-1EGPR\s0 occurs.
  To invoke egpr usage in inline asm, use new compiler option
  \&\-mapx\-inline\-asm\-use\-gpr32 and user should ensure the instruction
! supports \s-1EGPR.\s0
! .IP "\fB\-mevex512\fR" 4
  .IX Item "-mevex512"
  .PD 0
! .IP "\fB\-mno\-evex512\fR" 4
  .IX Item "-mno-evex512"
  .PD
! Enables/disables 512\-bit vector. It will be default on if \s-1AVX512F\s0 is enabled.
  .PP
  These \fB\-m\fR switches are supported in addition to the above
  on x86\-64 processors in 64\-bit environments.
! .IP "\fB\-m32\fR" 4
  .IX Item "-m32"
  .PD 0
! .IP "\fB\-m64\fR" 4
  .IX Item "-m64"
! .IP "\fB\-mx32\fR" 4
  .IX Item "-mx32"
! .IP "\fB\-m16\fR" 4
  .IX Item "-m16"
! .IP "\fB\-miamcu\fR" 4
  .IX Item "-miamcu"
  .PD
  Generate code for a 16\-bit, 32\-bit or 64\-bit environment.
--- 35840,35907 ----
  .Sp
  Note that \fB\-mindirect\-branch=thunk\-extern\fR is compatible with
  \&\fB\-fcf\-protection=branch\fR since the external thunk can be made
! to enable control\-flow check.
! .IP \fB\-mfunction\-return=\fR\fIchoice\fR 4
  .IX Item "-mfunction-return=choice"
  Convert function return with \fIchoice\fR.  The default is \fBkeep\fR,
  which keeps function return unmodified.  \fBthunk\fR converts function
! return to call and return thunk.  \fBthunk\-inline\fR converts function
! return to inlined call and return thunk.  \fBthunk\-extern\fR converts
  function return to external call and return thunk provided in a separate
  object file.  You can control this behavior for a specific function by
  using the function attribute \f(CW\*(C`function_return\*(C'\fR.
  .Sp
  Note that \fB\-mindirect\-return=thunk\-extern\fR is compatible with
  \&\fB\-fcf\-protection=branch\fR since the external thunk can be made
! to enable control\-flow check.
  .Sp
  Note that \fB\-mcmodel=large\fR is incompatible with
  \&\fB\-mfunction\-return=thunk\fR and
  \&\fB\-mfunction\-return=thunk\-extern\fR since the thunk function may
  not be reachable in the large code model.
! .IP \fB\-mindirect\-branch\-register\fR 4
  .IX Item "-mindirect-branch-register"
  Force indirect call and jump via register.
! .IP \fB\-mharden\-sls=\fR\fIchoice\fR 4
  .IX Item "-mharden-sls=choice"
! Generate code to mitigate against straight line speculation (SLS) with
! \&\fIchoice\fR.  The default is \fBnone\fR which disables all SLS
! hardening.  \fBreturn\fR enables SLS hardening for function returns.
! \&\fBindirect\-jmp\fR enables SLS hardening for indirect jumps.
! \&\fBall\fR enables all SLS hardening.
! .IP \fB\-mindirect\-branch\-cs\-prefix\fR 4
  .IX Item "-mindirect-branch-cs-prefix"
! Add CS prefix to call and jmp to indirect thunk with branch target in
  r8\-r15 registers so that the call and jmp instruction length is 6 bytes
  to allow them to be replaced with \fBlfence; call *%r8\-r15\fR or
! \&\fBlfence; jmp *%r8\-r15\fR at run\-time.
! .IP \fB\-mapx\-inline\-asm\-use\-gpr32\fR 4
  .IX Item "-mapx-inline-asm-use-gpr32"
! For inline asm support with APX, by default the EGPR feature was
! disabled to prevent potential illegal instruction with EGPR occurs.
  To invoke egpr usage in inline asm, use new compiler option
  \&\-mapx\-inline\-asm\-use\-gpr32 and user should ensure the instruction
! supports EGPR.
! .IP \fB\-mevex512\fR 4
  .IX Item "-mevex512"
  .PD 0
! .IP \fB\-mno\-evex512\fR 4
  .IX Item "-mno-evex512"
  .PD
! Enables/disables 512\-bit vector. It will be default on if AVX512F is enabled.
  .PP
  These \fB\-m\fR switches are supported in addition to the above
  on x86\-64 processors in 64\-bit environments.
! .IP \fB\-m32\fR 4
  .IX Item "-m32"
  .PD 0
! .IP \fB\-m64\fR 4
  .IX Item "-m64"
! .IP \fB\-mx32\fR 4
  .IX Item "-mx32"
! .IP \fB\-m16\fR 4
  .IX Item "-m16"
! .IP \fB\-miamcu\fR 4
  .IX Item "-miamcu"
  .PD
  Generate code for a 16\-bit, 32\-bit or 64\-bit environment.
*************** The \fB\-m16\fR option is the same as \f
*** 35988,36045 ****
  it outputs the \f(CW\*(C`.code16gcc\*(C'\fR assembly directive at the beginning of
  the assembly output so that the binary can run in 16\-bit mode.
  .Sp
! The \fB\-miamcu\fR option generates code which conforms to Intel \s-1MCU\s0
  psABI.  It requires the \fB\-m32\fR option to be turned on.
! .IP "\fB\-mno\-red\-zone\fR" 4
  .IX Item "-mno-red-zone"
! Do not use a so-called \*(L"red zone\*(R" for x86\-64 code.  The red zone is mandated
! by the x86\-64 \s-1ABI\s0; it is a 128\-byte area beyond the location of the
  stack pointer that is not modified by signal or interrupt handlers
  and therefore can be used for temporary data without adjusting the stack
  pointer.  The flag \fB\-mno\-red\-zone\fR disables this red zone.
! .IP "\fB\-mcmodel=small\fR" 4
  .IX Item "-mcmodel=small"
  Generate code for the small code model: the program and its symbols must
! be linked in the lower 2 \s-1GB\s0 of the address space.  Pointers are 64 bits.
  Programs can be statically or dynamically linked.  This is the default
  code model.
! .IP "\fB\-mcmodel=kernel\fR" 4
  .IX Item "-mcmodel=kernel"
  Generate code for the kernel code model.  The kernel runs in the
! negative 2 \s-1GB\s0 of the address space.
  This model has to be used for Linux kernel code.
! .IP "\fB\-mcmodel=medium\fR" 4
  .IX Item "-mcmodel=medium"
  Generate code for the medium model: the program is linked in the lower 2
! \&\s-1GB\s0 of the address space.  Small symbols are also placed there.  Symbols
  with sizes larger than \fB\-mlarge\-data\-threshold\fR are put into
! large data or \s-1BSS\s0 sections and can be located above 2GB.  Programs can
  be statically or dynamically linked.
! .IP "\fB\-mcmodel=large\fR" 4
  .IX Item "-mcmodel=large"
  Generate code for the large model.  This model makes no assumptions
  about addresses and sizes of sections.
! .IP "\fB\-maddress\-mode=long\fR" 4
  .IX Item "-maddress-mode=long"
  Generate code for long address mode.  This is only supported for 64\-bit
  and x32 environments.  It is the default address mode for 64\-bit
  environments.
! .IP "\fB\-maddress\-mode=short\fR" 4
  .IX Item "-maddress-mode=short"
  Generate code for short address mode.  This is only supported for 32\-bit
  and x32 environments.  It is the default address mode for 32\-bit and
  x32 environments.
! .IP "\fB\-mneeded\fR" 4
  .IX Item "-mneeded"
  .PD 0
! .IP "\fB\-mno\-needed\fR" 4
  .IX Item "-mno-needed"
  .PD
! Emit \s-1GNU_PROPERTY_X86_ISA_1_NEEDED GNU\s0 property for Linux target to
! indicate the micro-architecture \s-1ISA\s0 level required to execute the binary.
! .IP "\fB\-mno\-direct\-extern\-access\fR" 4
  .IX Item "-mno-direct-extern-access"
! Without \fB\-fpic\fR nor \fB\-fPIC\fR, always use the \s-1GOT\s0 pointer
  to access external symbols.  With \fB\-fpic\fR or \fB\-fPIC\fR,
  treat access to protected symbols as local symbols.  The default is
  \&\fB\-mdirect\-extern\-access\fR.
--- 35922,35979 ----
  it outputs the \f(CW\*(C`.code16gcc\*(C'\fR assembly directive at the beginning of
  the assembly output so that the binary can run in 16\-bit mode.
  .Sp
! The \fB\-miamcu\fR option generates code which conforms to Intel MCU
  psABI.  It requires the \fB\-m32\fR option to be turned on.
! .IP \fB\-mno\-red\-zone\fR 4
  .IX Item "-mno-red-zone"
! Do not use a so\-called "red zone" for x86\-64 code.  The red zone is mandated
! by the x86\-64 ABI; it is a 128\-byte area beyond the location of the
  stack pointer that is not modified by signal or interrupt handlers
  and therefore can be used for temporary data without adjusting the stack
  pointer.  The flag \fB\-mno\-red\-zone\fR disables this red zone.
! .IP \fB\-mcmodel=small\fR 4
  .IX Item "-mcmodel=small"
  Generate code for the small code model: the program and its symbols must
! be linked in the lower 2 GB of the address space.  Pointers are 64 bits.
  Programs can be statically or dynamically linked.  This is the default
  code model.
! .IP \fB\-mcmodel=kernel\fR 4
  .IX Item "-mcmodel=kernel"
  Generate code for the kernel code model.  The kernel runs in the
! negative 2 GB of the address space.
  This model has to be used for Linux kernel code.
! .IP \fB\-mcmodel=medium\fR 4
  .IX Item "-mcmodel=medium"
  Generate code for the medium model: the program is linked in the lower 2
! GB of the address space.  Small symbols are also placed there.  Symbols
  with sizes larger than \fB\-mlarge\-data\-threshold\fR are put into
! large data or BSS sections and can be located above 2GB.  Programs can
  be statically or dynamically linked.
! .IP \fB\-mcmodel=large\fR 4
  .IX Item "-mcmodel=large"
  Generate code for the large model.  This model makes no assumptions
  about addresses and sizes of sections.
! .IP \fB\-maddress\-mode=long\fR 4
  .IX Item "-maddress-mode=long"
  Generate code for long address mode.  This is only supported for 64\-bit
  and x32 environments.  It is the default address mode for 64\-bit
  environments.
! .IP \fB\-maddress\-mode=short\fR 4
  .IX Item "-maddress-mode=short"
  Generate code for short address mode.  This is only supported for 32\-bit
  and x32 environments.  It is the default address mode for 32\-bit and
  x32 environments.
! .IP \fB\-mneeded\fR 4
  .IX Item "-mneeded"
  .PD 0
! .IP \fB\-mno\-needed\fR 4
  .IX Item "-mno-needed"
  .PD
! Emit GNU_PROPERTY_X86_ISA_1_NEEDED GNU property for Linux target to
! indicate the micro\-architecture ISA level required to execute the binary.
! .IP \fB\-mno\-direct\-extern\-access\fR 4
  .IX Item "-mno-direct-extern-access"
! Without \fB\-fpic\fR nor \fB\-fPIC\fR, always use the GOT pointer
  to access external symbols.  With \fB\-fpic\fR or \fB\-fPIC\fR,
  treat access to protected symbols as local symbols.  The default is
  \&\fB\-mdirect\-extern\-access\fR.
*************** treat access to protected symbols as loc
*** 36048,36062 ****
  \&\fB\-mno\-direct\-extern\-access\fR and executable compiled with
  \&\fB\-mdirect\-extern\-access\fR may not be binary compatible if
  protected symbols are used in shared libraries and executable.
! .IP "\fB\-munroll\-only\-small\-loops\fR" 4
  .IX Item "-munroll-only-small-loops"
  Controls conservative small loop unrolling. It is default enabled by
  O2, and unrolls loop with less than 4 insns by 1 time. Explicit
  \&\-f[no\-]unroll\-[all\-]loops would disable this flag to avoid any
  unintended unrolling behavior that user does not want.
! .IP "\fB\-mlam=\fR\fIchoice\fR" 4
  .IX Item "-mlam=choice"
! \&\s-1LAM\s0(linear\-address masking) allows special bits in the pointer to be used
  for metadata. The default is \fBnone\fR. With \fBu48\fR, pointer bits in
  positions 62:48 can be used for metadata; With \fBu57\fR, pointer bits in
  positions 62:57 can be used for metadata.
--- 35982,35996 ----
  \&\fB\-mno\-direct\-extern\-access\fR and executable compiled with
  \&\fB\-mdirect\-extern\-access\fR may not be binary compatible if
  protected symbols are used in shared libraries and executable.
! .IP \fB\-munroll\-only\-small\-loops\fR 4
  .IX Item "-munroll-only-small-loops"
  Controls conservative small loop unrolling. It is default enabled by
  O2, and unrolls loop with less than 4 insns by 1 time. Explicit
  \&\-f[no\-]unroll\-[all\-]loops would disable this flag to avoid any
  unintended unrolling behavior that user does not want.
! .IP \fB\-mlam=\fR\fIchoice\fR 4
  .IX Item "-mlam=choice"
! LAM(linear\-address masking) allows special bits in the pointer to be used
  for metadata. The default is \fBnone\fR. With \fBu48\fR, pointer bits in
  positions 62:48 can be used for metadata; With \fBu57\fR, pointer bits in
  positions 62:57 can be used for metadata.
*************** positions 62:57 can be used for metadata
*** 36068,36074 ****
  .IX Subsection "Xstormy16 Options"
  .PP
  These options are defined for Xstormy16:
! .IP "\fB\-msim\fR" 4
  .IX Item "-msim"
  Choose startup files and linker script suitable for the simulator.
  .PP
--- 36002,36008 ----
  .IX Subsection "Xstormy16 Options"
  .PP
  These options are defined for Xstormy16:
! .IP \fB\-msim\fR 4
  .IX Item "-msim"
  Choose startup files and linker script suitable for the simulator.
  .PP
*************** Choose startup files and linker script s
*** 36076,36085 ****
  .IX Subsection "Xtensa Options"
  .PP
  These options are supported for Xtensa targets:
! .IP "\fB\-mconst16\fR" 4
  .IX Item "-mconst16"
  .PD 0
! .IP "\fB\-mno\-const16\fR" 4
  .IX Item "-mno-const16"
  .PD
  Enable or disable use of \f(CW\*(C`CONST16\*(C'\fR instructions for loading
--- 36010,36019 ----
  .IX Subsection "Xtensa Options"
  .PP
  These options are supported for Xtensa targets:
! .IP \fB\-mconst16\fR 4
  .IX Item "-mconst16"
  .PD 0
! .IP \fB\-mno\-const16\fR 4
  .IX Item "-mno-const16"
  .PD
  Enable or disable use of \f(CW\*(C`CONST16\*(C'\fR instructions for loading
*************** standard option from Tensilica.  When en
*** 36088,36145 ****
  instructions are always used in place of the standard \f(CW\*(C`L32R\*(C'\fR
  instructions.  The use of \f(CW\*(C`CONST16\*(C'\fR is enabled by default only if
  the \f(CW\*(C`L32R\*(C'\fR instruction is not available.
! .IP "\fB\-mfused\-madd\fR" 4
  .IX Item "-mfused-madd"
  .PD 0
! .IP "\fB\-mno\-fused\-madd\fR" 4
  .IX Item "-mno-fused-madd"
  .PD
  Enable or disable use of fused multiply/add and multiply/subtract
! instructions in the floating-point option.  This has no effect if the
! floating-point option is not also enabled.  Disabling fused multiply/add
  and multiply/subtract instructions forces the compiler to use separate
  instructions for the multiply and add/subtract operations.  This may be
! desirable in some cases where strict \s-1IEEE\s0 754\-compliant results are
  required: the fused multiply add/subtract instructions do not round the
  intermediate result, thereby producing results with \fImore\fR bits of
! precision than specified by the \s-1IEEE\s0 standard.  Disabling fused multiply
  add/subtract instructions also ensures that the program output is not
! sensitive to the compiler's ability to combine multiply and add/subtract
  operations.
! .IP "\fB\-mserialize\-volatile\fR" 4
  .IX Item "-mserialize-volatile"
  .PD 0
! .IP "\fB\-mno\-serialize\-volatile\fR" 4
  .IX Item "-mno-serialize-volatile"
  .PD
! When this option is enabled, \s-1GCC\s0 inserts \f(CW\*(C`MEMW\*(C'\fR instructions before
  \&\f(CW\*(C`volatile\*(C'\fR memory references to guarantee sequential consistency.
  The default is \fB\-mserialize\-volatile\fR.  Use
  \&\fB\-mno\-serialize\-volatile\fR to omit the \f(CW\*(C`MEMW\*(C'\fR instructions.
! .IP "\fB\-mforce\-no\-pic\fR" 4
  .IX Item "-mforce-no-pic"
! For targets, like GNU/Linux, where all user-mode Xtensa code must be
! position-independent code (\s-1PIC\s0), this option disables \s-1PIC\s0 for compiling
  kernel code.
! .IP "\fB\-mtext\-section\-literals\fR" 4
  .IX Item "-mtext-section-literals"
  .PD 0
! .IP "\fB\-mno\-text\-section\-literals\fR" 4
  .IX Item "-mno-text-section-literals"
  .PD
  These options control the treatment of literal pools.  The default is
  \&\fB\-mno\-text\-section\-literals\fR, which places literals in a separate
  section in the output file.  This allows the literal pool to be placed
! in a data \s-1RAM/ROM,\s0 and it also allows the linker to combine literal
  pools from separate object files to remove redundant literals and
  improve code size.  With \fB\-mtext\-section\-literals\fR, the literals
  are interspersed in the text section in order to keep them as close as
  possible to their references.  This may be necessary for large assembly
  files.  Literals for each function are placed right before that function.
! .IP "\fB\-mauto\-litpools\fR" 4
  .IX Item "-mauto-litpools"
  .PD 0
! .IP "\fB\-mno\-auto\-litpools\fR" 4
  .IX Item "-mno-auto-litpools"
  .PD
  These options control the treatment of literal pools.  The default is
--- 36022,36079 ----
  instructions are always used in place of the standard \f(CW\*(C`L32R\*(C'\fR
  instructions.  The use of \f(CW\*(C`CONST16\*(C'\fR is enabled by default only if
  the \f(CW\*(C`L32R\*(C'\fR instruction is not available.
! .IP \fB\-mfused\-madd\fR 4
  .IX Item "-mfused-madd"
  .PD 0
! .IP \fB\-mno\-fused\-madd\fR 4
  .IX Item "-mno-fused-madd"
  .PD
  Enable or disable use of fused multiply/add and multiply/subtract
! instructions in the floating\-point option.  This has no effect if the
! floating\-point option is not also enabled.  Disabling fused multiply/add
  and multiply/subtract instructions forces the compiler to use separate
  instructions for the multiply and add/subtract operations.  This may be
! desirable in some cases where strict IEEE 754\-compliant results are
  required: the fused multiply add/subtract instructions do not round the
  intermediate result, thereby producing results with \fImore\fR bits of
! precision than specified by the IEEE standard.  Disabling fused multiply
  add/subtract instructions also ensures that the program output is not
! sensitive to the compiler\*(Aqs ability to combine multiply and add/subtract
  operations.
! .IP \fB\-mserialize\-volatile\fR 4
  .IX Item "-mserialize-volatile"
  .PD 0
! .IP \fB\-mno\-serialize\-volatile\fR 4
  .IX Item "-mno-serialize-volatile"
  .PD
! When this option is enabled, GCC inserts \f(CW\*(C`MEMW\*(C'\fR instructions before
  \&\f(CW\*(C`volatile\*(C'\fR memory references to guarantee sequential consistency.
  The default is \fB\-mserialize\-volatile\fR.  Use
  \&\fB\-mno\-serialize\-volatile\fR to omit the \f(CW\*(C`MEMW\*(C'\fR instructions.
! .IP \fB\-mforce\-no\-pic\fR 4
  .IX Item "-mforce-no-pic"
! For targets, like GNU/Linux, where all user\-mode Xtensa code must be
! position\-independent code (PIC), this option disables PIC for compiling
  kernel code.
! .IP \fB\-mtext\-section\-literals\fR 4
  .IX Item "-mtext-section-literals"
  .PD 0
! .IP \fB\-mno\-text\-section\-literals\fR 4
  .IX Item "-mno-text-section-literals"
  .PD
  These options control the treatment of literal pools.  The default is
  \&\fB\-mno\-text\-section\-literals\fR, which places literals in a separate
  section in the output file.  This allows the literal pool to be placed
! in a data RAM/ROM, and it also allows the linker to combine literal
  pools from separate object files to remove redundant literals and
  improve code size.  With \fB\-mtext\-section\-literals\fR, the literals
  are interspersed in the text section in order to keep them as close as
  possible to their references.  This may be necessary for large assembly
  files.  Literals for each function are placed right before that function.
! .IP \fB\-mauto\-litpools\fR 4
  .IX Item "-mauto-litpools"
  .PD 0
! .IP \fB\-mno\-auto\-litpools\fR 4
  .IX Item "-mno-auto-litpools"
  .PD
  These options control the treatment of literal pools.  The default is
*************** do relaxation and place literals as nece
*** 36153,36181 ****
  assembler to create several literal pools per function and assemble
  very big functions, which may not be possible with
  \&\fB\-mtext\-section\-literals\fR.
! .IP "\fB\-mtarget\-align\fR" 4
  .IX Item "-mtarget-align"
  .PD 0
! .IP "\fB\-mno\-target\-align\fR" 4
  .IX Item "-mno-target-align"
  .PD
! When this option is enabled, \s-1GCC\s0 instructs the assembler to
  automatically align instructions to reduce branch penalties at the
  expense of some code density.  The assembler attempts to widen density
  instructions to align branch targets and the instructions following call
  instructions.  If there are not enough preceding safe density
  instructions to align a target, no widening is performed.  The
  default is \fB\-mtarget\-align\fR.  These options do not affect the
! treatment of auto-aligned instructions like \f(CW\*(C`LOOP\*(C'\fR, which the
  assembler always aligns, either by widening density instructions or
! by inserting \s-1NOP\s0 instructions.
! .IP "\fB\-mlongcalls\fR" 4
  .IX Item "-mlongcalls"
  .PD 0
! .IP "\fB\-mno\-longcalls\fR" 4
  .IX Item "-mno-longcalls"
  .PD
! When this option is enabled, \s-1GCC\s0 instructs the assembler to translate
  direct calls to indirect calls unless it can determine that the target
  of a direct call is in the range allowed by the call instruction.  This
  translation typically occurs for calls to functions in other source
--- 36087,36115 ----
  assembler to create several literal pools per function and assemble
  very big functions, which may not be possible with
  \&\fB\-mtext\-section\-literals\fR.
! .IP \fB\-mtarget\-align\fR 4
  .IX Item "-mtarget-align"
  .PD 0
! .IP \fB\-mno\-target\-align\fR 4
  .IX Item "-mno-target-align"
  .PD
! When this option is enabled, GCC instructs the assembler to
  automatically align instructions to reduce branch penalties at the
  expense of some code density.  The assembler attempts to widen density
  instructions to align branch targets and the instructions following call
  instructions.  If there are not enough preceding safe density
  instructions to align a target, no widening is performed.  The
  default is \fB\-mtarget\-align\fR.  These options do not affect the
! treatment of auto\-aligned instructions like \f(CW\*(C`LOOP\*(C'\fR, which the
  assembler always aligns, either by widening density instructions or
! by inserting NOP instructions.
! .IP \fB\-mlongcalls\fR 4
  .IX Item "-mlongcalls"
  .PD 0
! .IP \fB\-mno\-longcalls\fR 4
  .IX Item "-mno-longcalls"
  .PD
! When this option is enabled, GCC instructs the assembler to translate
  direct calls to indirect calls unless it can determine that the target
  of a direct call is in the range allowed by the call instruction.  This
  translation typically occurs for calls to functions in other source
*************** instruction into an \f(CW\*(C`L32R\*(C'\
*** 36184,36224 ****
  The default is \fB\-mno\-longcalls\fR.  This option should be used in
  programs where the call target can potentially be out of range.  This
  option is implemented in the assembler, not the compiler, so the
! assembly code generated by \s-1GCC\s0 still shows direct call
  instructions\-\-\-look at the disassembled object code to see the actual
  instructions.  Note that the assembler uses an indirect call for
! every cross-file call, not just those that really are out of range.
! .IP "\fB\-mabi=\fR\fIname\fR" 4
  .IX Item "-mabi=name"
! Generate code for the specified \s-1ABI.\s0  Permissible values are: \fBcall0\fR,
! \&\fBwindowed\fR.  Default \s-1ABI\s0 is chosen by the Xtensa core configuration.
! .IP "\fB\-mabi=call0\fR" 4
  .IX Item "-mabi=call0"
  When this option is enabled function parameters are passed in registers
  \&\f(CW\*(C`a2\*(C'\fR through \f(CW\*(C`a7\*(C'\fR, registers \f(CW\*(C`a12\*(C'\fR through \f(CW\*(C`a15\*(C'\fR are
! caller-saved, and register \f(CW\*(C`a15\*(C'\fR may be used as a frame pointer.
! When this version of the \s-1ABI\s0 is enabled the C preprocessor symbol
  \&\f(CW\*(C`_\|_XTENSA_CALL0_ABI_\|_\*(C'\fR is defined.
! .IP "\fB\-mabi=windowed\fR" 4
  .IX Item "-mabi=windowed"
  When this option is enabled function parameters are passed in registers
  \&\f(CW\*(C`a10\*(C'\fR through \f(CW\*(C`a15\*(C'\fR, and called function rotates register window
  by 8 registers on entry so that its arguments are found in registers
  \&\f(CW\*(C`a2\*(C'\fR through \f(CW\*(C`a7\*(C'\fR.  Register \f(CW\*(C`a7\*(C'\fR may be used as a frame
  pointer.  Register window is rotated 8 registers back upon return.
! When this version of the \s-1ABI\s0 is enabled the C preprocessor symbol
  \&\f(CW\*(C`_\|_XTENSA_WINDOWED_ABI_\|_\*(C'\fR is defined.
! .IP "\fB\-mextra\-l32r\-costs=\fR\fIn\fR" 4
  .IX Item "-mextra-l32r-costs=n"
! Specify an extra cost of instruction \s-1RAM/ROM\s0 access for \f(CW\*(C`L32R\*(C'\fR
  instructions, in clock cycles.  This affects, when optimizing for speed,
  whether loading a constant from literal pool using \f(CW\*(C`L32R\*(C'\fR or
  synthesizing the constant from a small one with a couple of arithmetic
  instructions.  The default value is 0.
! .IP "\fB\-mstrict\-align\fR" 4
  .IX Item "-mstrict-align"
  .PD 0
! .IP "\fB\-mno\-strict\-align\fR" 4
  .IX Item "-mno-strict-align"
  .PD
  Avoid or allow generating memory accesses that may not be aligned on a natural
--- 36118,36158 ----
  The default is \fB\-mno\-longcalls\fR.  This option should be used in
  programs where the call target can potentially be out of range.  This
  option is implemented in the assembler, not the compiler, so the
! assembly code generated by GCC still shows direct call
  instructions\-\-\-look at the disassembled object code to see the actual
  instructions.  Note that the assembler uses an indirect call for
! every cross\-file call, not just those that really are out of range.
! .IP \fB\-mabi=\fR\fIname\fR 4
  .IX Item "-mabi=name"
! Generate code for the specified ABI.  Permissible values are: \fBcall0\fR,
! \&\fBwindowed\fR.  Default ABI is chosen by the Xtensa core configuration.
! .IP \fB\-mabi=call0\fR 4
  .IX Item "-mabi=call0"
  When this option is enabled function parameters are passed in registers
  \&\f(CW\*(C`a2\*(C'\fR through \f(CW\*(C`a7\*(C'\fR, registers \f(CW\*(C`a12\*(C'\fR through \f(CW\*(C`a15\*(C'\fR are
! caller\-saved, and register \f(CW\*(C`a15\*(C'\fR may be used as a frame pointer.
! When this version of the ABI is enabled the C preprocessor symbol
  \&\f(CW\*(C`_\|_XTENSA_CALL0_ABI_\|_\*(C'\fR is defined.
! .IP \fB\-mabi=windowed\fR 4
  .IX Item "-mabi=windowed"
  When this option is enabled function parameters are passed in registers
  \&\f(CW\*(C`a10\*(C'\fR through \f(CW\*(C`a15\*(C'\fR, and called function rotates register window
  by 8 registers on entry so that its arguments are found in registers
  \&\f(CW\*(C`a2\*(C'\fR through \f(CW\*(C`a7\*(C'\fR.  Register \f(CW\*(C`a7\*(C'\fR may be used as a frame
  pointer.  Register window is rotated 8 registers back upon return.
! When this version of the ABI is enabled the C preprocessor symbol
  \&\f(CW\*(C`_\|_XTENSA_WINDOWED_ABI_\|_\*(C'\fR is defined.
! .IP \fB\-mextra\-l32r\-costs=\fR\fIn\fR 4
  .IX Item "-mextra-l32r-costs=n"
! Specify an extra cost of instruction RAM/ROM access for \f(CW\*(C`L32R\*(C'\fR
  instructions, in clock cycles.  This affects, when optimizing for speed,
  whether loading a constant from literal pool using \f(CW\*(C`L32R\*(C'\fR or
  synthesizing the constant from a small one with a couple of arithmetic
  instructions.  The default value is 0.
! .IP \fB\-mstrict\-align\fR 4
  .IX Item "-mstrict-align"
  .PD 0
! .IP \fB\-mno\-strict\-align\fR 4
  .IX Item "-mno-strict-align"
  .PD
  Avoid or allow generating memory accesses that may not be aligned on a natural
*************** other cores.
*** 36231,36239 ****
  .IX Subsection "zSeries Options"
  .PP
  These are listed under
! .SH "ENVIRONMENT"
  .IX Header "ENVIRONMENT"
! This section describes several environment variables that affect how \s-1GCC\s0
  operates.  Some of them work by specifying directories or prefixes to use
  when searching for various kinds of files.  Some are used to specify other
  aspects of the compilation environment.
--- 36165,36173 ----
  .IX Subsection "zSeries Options"
  .PP
  These are listed under
! .SH ENVIRONMENT
  .IX Header "ENVIRONMENT"
! This section describes several environment variables that affect how GCC
  operates.  Some of them work by specifying directories or prefixes to use
  when searching for various kinds of files.  Some are used to specify other
  aspects of the compilation environment.
*************** aspects of the compilation environment.
*** 36241,36306 ****
  Note that you can also specify places to search using options such as
  \&\fB\-B\fR, \fB\-I\fR and \fB\-L\fR.  These
  take precedence over places specified using environment variables, which
! in turn take precedence over those specified by the configuration of \s-1GCC.\s0
! .IP "\fB\s-1LANG\s0\fR" 4
  .IX Item "LANG"
  .PD 0
! .IP "\fB\s-1LC_CTYPE\s0\fR" 4
  .IX Item "LC_CTYPE"
! .IP "\fB\s-1LC_MESSAGES\s0\fR" 4
  .IX Item "LC_MESSAGES"
! .IP "\fB\s-1LC_ALL\s0\fR" 4
  .IX Item "LC_ALL"
  .PD
! These environment variables control the way that \s-1GCC\s0 uses
! localization information which allows \s-1GCC\s0 to work with different
! national conventions.  \s-1GCC\s0 inspects the locale categories
! \&\fB\s-1LC_CTYPE\s0\fR and \fB\s-1LC_MESSAGES\s0\fR if it has been configured to do
  so.  These locale categories can be set to any value supported by your
  installation.  A typical value is \fBen_GB.UTF\-8\fR for English in the United
! Kingdom encoded in \s-1UTF\-8.\s0
  .Sp
! The \fB\s-1LC_CTYPE\s0\fR environment variable specifies character
! classification.  \s-1GCC\s0 uses it to determine the character boundaries in
  a string; this is needed for some multibyte encodings that contain quote
  and escape characters that are otherwise interpreted as a string
  end or escape.
  .Sp
! The \fB\s-1LC_MESSAGES\s0\fR environment variable specifies the language to
  use in diagnostic messages.
  .Sp
! If the \fB\s-1LC_ALL\s0\fR environment variable is set, it overrides the value
! of \fB\s-1LC_CTYPE\s0\fR and \fB\s-1LC_MESSAGES\s0\fR; otherwise, \fB\s-1LC_CTYPE\s0\fR
! and \fB\s-1LC_MESSAGES\s0\fR default to the value of the \fB\s-1LANG\s0\fR
! environment variable.  If none of these variables are set, \s-1GCC\s0
  defaults to traditional C English behavior.
! .IP "\fB\s-1TMPDIR\s0\fR" 4
  .IX Item "TMPDIR"
! If \fB\s-1TMPDIR\s0\fR is set, it specifies the directory to use for temporary
! files.  \s-1GCC\s0 uses temporary files to hold the output of one stage of
  compilation which is to be used as input to the next stage: for example,
  the output of the preprocessor, which is the input to the compiler
  proper.
! .IP "\fB\s-1GCC_COMPARE_DEBUG\s0\fR" 4
  .IX Item "GCC_COMPARE_DEBUG"
! Setting \fB\s-1GCC_COMPARE_DEBUG\s0\fR is nearly equivalent to passing
  \&\fB\-fcompare\-debug\fR to the compiler driver.  See the documentation
  of this option for more details.
! .IP "\fB\s-1GCC_EXEC_PREFIX\s0\fR" 4
  .IX Item "GCC_EXEC_PREFIX"
! If \fB\s-1GCC_EXEC_PREFIX\s0\fR is set, it specifies a prefix to use in the
  names of the subprograms executed by the compiler.  No slash is added
  when this prefix is combined with the name of a subprogram, but you can
  specify a prefix that ends with a slash if you wish.
  .Sp
! If \fB\s-1GCC_EXEC_PREFIX\s0\fR is not set, \s-1GCC\s0 attempts to figure out
  an appropriate prefix to use based on the pathname it is invoked with.
  .Sp
! If \s-1GCC\s0 cannot find the subprogram using the specified prefix, it
  tries looking in the usual places for the subprogram.
  .Sp
! The default value of \fB\s-1GCC_EXEC_PREFIX\s0\fR is
! \&\fI\fIprefix\fI/lib/gcc/\fR where \fIprefix\fR is the prefix to
  the installed compiler. In many cases \fIprefix\fR is the value
  of \f(CW\*(C`prefix\*(C'\fR when you ran the \fIconfigure\fR script.
  .Sp
--- 36175,36240 ----
  Note that you can also specify places to search using options such as
  \&\fB\-B\fR, \fB\-I\fR and \fB\-L\fR.  These
  take precedence over places specified using environment variables, which
! in turn take precedence over those specified by the configuration of GCC.
! .IP \fBLANG\fR 4
  .IX Item "LANG"
  .PD 0
! .IP \fBLC_CTYPE\fR 4
  .IX Item "LC_CTYPE"
! .IP \fBLC_MESSAGES\fR 4
  .IX Item "LC_MESSAGES"
! .IP \fBLC_ALL\fR 4
  .IX Item "LC_ALL"
  .PD
! These environment variables control the way that GCC uses
! localization information which allows GCC to work with different
! national conventions.  GCC inspects the locale categories
! \&\fBLC_CTYPE\fR and \fBLC_MESSAGES\fR if it has been configured to do
  so.  These locale categories can be set to any value supported by your
  installation.  A typical value is \fBen_GB.UTF\-8\fR for English in the United
! Kingdom encoded in UTF\-8.
  .Sp
! The \fBLC_CTYPE\fR environment variable specifies character
! classification.  GCC uses it to determine the character boundaries in
  a string; this is needed for some multibyte encodings that contain quote
  and escape characters that are otherwise interpreted as a string
  end or escape.
  .Sp
! The \fBLC_MESSAGES\fR environment variable specifies the language to
  use in diagnostic messages.
  .Sp
! If the \fBLC_ALL\fR environment variable is set, it overrides the value
! of \fBLC_CTYPE\fR and \fBLC_MESSAGES\fR; otherwise, \fBLC_CTYPE\fR
! and \fBLC_MESSAGES\fR default to the value of the \fBLANG\fR
! environment variable.  If none of these variables are set, GCC
  defaults to traditional C English behavior.
! .IP \fBTMPDIR\fR 4
  .IX Item "TMPDIR"
! If \fBTMPDIR\fR is set, it specifies the directory to use for temporary
! files.  GCC uses temporary files to hold the output of one stage of
  compilation which is to be used as input to the next stage: for example,
  the output of the preprocessor, which is the input to the compiler
  proper.
! .IP \fBGCC_COMPARE_DEBUG\fR 4
  .IX Item "GCC_COMPARE_DEBUG"
! Setting \fBGCC_COMPARE_DEBUG\fR is nearly equivalent to passing
  \&\fB\-fcompare\-debug\fR to the compiler driver.  See the documentation
  of this option for more details.
! .IP \fBGCC_EXEC_PREFIX\fR 4
  .IX Item "GCC_EXEC_PREFIX"
! If \fBGCC_EXEC_PREFIX\fR is set, it specifies a prefix to use in the
  names of the subprograms executed by the compiler.  No slash is added
  when this prefix is combined with the name of a subprogram, but you can
  specify a prefix that ends with a slash if you wish.
  .Sp
! If \fBGCC_EXEC_PREFIX\fR is not set, GCC attempts to figure out
  an appropriate prefix to use based on the pathname it is invoked with.
  .Sp
! If GCC cannot find the subprogram using the specified prefix, it
  tries looking in the usual places for the subprogram.
  .Sp
! The default value of \fBGCC_EXEC_PREFIX\fR is
! \&\fIprefix/lib/gcc/\fR where \fIprefix\fR is the prefix to
  the installed compiler. In many cases \fIprefix\fR is the value
  of \f(CW\*(C`prefix\*(C'\fR when you ran the \fIconfigure\fR script.
  .Sp
*************** used for linking.
*** 36312,36378 ****
  In addition, the prefix is used in an unusual way in finding the
  directories to search for header files.  For each of the standard
  directories whose name normally begins with \fB/usr/local/lib/gcc\fR
! (more precisely, with the value of \fB\s-1GCC_INCLUDE_DIR\s0\fR), \s-1GCC\s0 tries
  replacing that beginning with the specified prefix to produce an
! alternate directory name.  Thus, with \fB\-Bfoo/\fR, \s-1GCC\s0 searches
  \&\fIfoo/bar\fR just before it searches the standard directory
  \&\fI/usr/local/lib/bar\fR.
  If a standard directory begins with the configured
  \&\fIprefix\fR then the value of \fIprefix\fR is replaced by
! \&\fB\s-1GCC_EXEC_PREFIX\s0\fR when looking for header files.
! .IP "\fB\s-1COMPILER_PATH\s0\fR" 4
  .IX Item "COMPILER_PATH"
! The value of \fB\s-1COMPILER_PATH\s0\fR is a colon-separated list of
! directories, much like \fB\s-1PATH\s0\fR.  \s-1GCC\s0 tries the directories thus
  specified when searching for subprograms, if it cannot find the
! subprograms using \fB\s-1GCC_EXEC_PREFIX\s0\fR.
! .IP "\fB\s-1LIBRARY_PATH\s0\fR" 4
  .IX Item "LIBRARY_PATH"
! The value of \fB\s-1LIBRARY_PATH\s0\fR is a colon-separated list of
! directories, much like \fB\s-1PATH\s0\fR.  When configured as a native compiler,
! \&\s-1GCC\s0 tries the directories thus specified when searching for special
! linker files, if it cannot find them using \fB\s-1GCC_EXEC_PREFIX\s0\fR.  Linking
! using \s-1GCC\s0 also uses these directories when searching for ordinary
  libraries for the \fB\-l\fR option (but directories specified with
  \&\fB\-L\fR come first).
! .IP "\fB\s-1LANG\s0\fR" 4
  .IX Item "LANG"
  This variable is used to pass locale information to the compiler.  One way in
  which this information is used is to determine the character set to be used
! when character literals, string literals and comments are parsed in C and \*(C+.
  When the compiler is configured to allow multibyte characters,
! the following values for \fB\s-1LANG\s0\fR are recognized:
  .RS 4
! .IP "\fBC\-JIS\fR" 4
  .IX Item "C-JIS"
! Recognize \s-1JIS\s0 characters.
! .IP "\fBC\-SJIS\fR" 4
  .IX Item "C-SJIS"
! Recognize \s-1SJIS\s0 characters.
! .IP "\fBC\-EUCJP\fR" 4
  .IX Item "C-EUCJP"
! Recognize \s-1EUCJP\s0 characters.
  .RE
  .RS 4
  .Sp
! If \fB\s-1LANG\s0\fR is not defined, or if it has some other value, then the
  compiler uses \f(CW\*(C`mblen\*(C'\fR and \f(CW\*(C`mbtowc\*(C'\fR as defined by the default locale to
  recognize and translate multibyte characters.
  .RE
! .IP "\fB\s-1GCC_EXTRA_DIAGNOSTIC_OUTPUT\s0\fR" 4
  .IX Item "GCC_EXTRA_DIAGNOSTIC_OUTPUT"
! If \fB\s-1GCC_EXTRA_DIAGNOSTIC_OUTPUT\s0\fR is set to one of the following values,
! then additional text will be emitted to stderr when fix-it hints are
  emitted.  \fB\-fdiagnostics\-parseable\-fixits\fR and
  \&\fB\-fno\-diagnostics\-parseable\-fixits\fR take precedence over this
  environment variable.
  .RS 4
! .IP "\fBfixits\-v1\fR" 4
  .IX Item "fixits-v1"
! Emit parseable fix-it hints, equivalent to
  \&\fB\-fdiagnostics\-parseable\-fixits\fR.  In particular, columns are
  expressed as a count of bytes, starting at byte 1 for the initial column.
! .IP "\fBfixits\-v2\fR" 4
  .IX Item "fixits-v2"
  As \f(CW\*(C`fixits\-v1\*(C'\fR, but columns are expressed as display columns,
  as per \fB\-fdiagnostics\-column\-unit=display\fR.
--- 36246,36312 ----
  In addition, the prefix is used in an unusual way in finding the
  directories to search for header files.  For each of the standard
  directories whose name normally begins with \fB/usr/local/lib/gcc\fR
! (more precisely, with the value of \fBGCC_INCLUDE_DIR\fR), GCC tries
  replacing that beginning with the specified prefix to produce an
! alternate directory name.  Thus, with \fB\-Bfoo/\fR, GCC searches
  \&\fIfoo/bar\fR just before it searches the standard directory
  \&\fI/usr/local/lib/bar\fR.
  If a standard directory begins with the configured
  \&\fIprefix\fR then the value of \fIprefix\fR is replaced by
! \&\fBGCC_EXEC_PREFIX\fR when looking for header files.
! .IP \fBCOMPILER_PATH\fR 4
  .IX Item "COMPILER_PATH"
! The value of \fBCOMPILER_PATH\fR is a colon\-separated list of
! directories, much like \fBPATH\fR.  GCC tries the directories thus
  specified when searching for subprograms, if it cannot find the
! subprograms using \fBGCC_EXEC_PREFIX\fR.
! .IP \fBLIBRARY_PATH\fR 4
  .IX Item "LIBRARY_PATH"
! The value of \fBLIBRARY_PATH\fR is a colon\-separated list of
! directories, much like \fBPATH\fR.  When configured as a native compiler,
! GCC tries the directories thus specified when searching for special
! linker files, if it cannot find them using \fBGCC_EXEC_PREFIX\fR.  Linking
! using GCC also uses these directories when searching for ordinary
  libraries for the \fB\-l\fR option (but directories specified with
  \&\fB\-L\fR come first).
! .IP \fBLANG\fR 4
  .IX Item "LANG"
  This variable is used to pass locale information to the compiler.  One way in
  which this information is used is to determine the character set to be used
! when character literals, string literals and comments are parsed in C and C++.
  When the compiler is configured to allow multibyte characters,
! the following values for \fBLANG\fR are recognized:
  .RS 4
! .IP \fBC\-JIS\fR 4
  .IX Item "C-JIS"
! Recognize JIS characters.
! .IP \fBC\-SJIS\fR 4
  .IX Item "C-SJIS"
! Recognize SJIS characters.
! .IP \fBC\-EUCJP\fR 4
  .IX Item "C-EUCJP"
! Recognize EUCJP characters.
  .RE
  .RS 4
  .Sp
! If \fBLANG\fR is not defined, or if it has some other value, then the
  compiler uses \f(CW\*(C`mblen\*(C'\fR and \f(CW\*(C`mbtowc\*(C'\fR as defined by the default locale to
  recognize and translate multibyte characters.
  .RE
! .IP \fBGCC_EXTRA_DIAGNOSTIC_OUTPUT\fR 4
  .IX Item "GCC_EXTRA_DIAGNOSTIC_OUTPUT"
! If \fBGCC_EXTRA_DIAGNOSTIC_OUTPUT\fR is set to one of the following values,
! then additional text will be emitted to stderr when fix\-it hints are
  emitted.  \fB\-fdiagnostics\-parseable\-fixits\fR and
  \&\fB\-fno\-diagnostics\-parseable\-fixits\fR take precedence over this
  environment variable.
  .RS 4
! .IP \fBfixits\-v1\fR 4
  .IX Item "fixits-v1"
! Emit parseable fix\-it hints, equivalent to
  \&\fB\-fdiagnostics\-parseable\-fixits\fR.  In particular, columns are
  expressed as a count of bytes, starting at byte 1 for the initial column.
! .IP \fBfixits\-v2\fR 4
  .IX Item "fixits-v2"
  As \f(CW\*(C`fixits\-v1\*(C'\fR, but columns are expressed as display columns,
  as per \fB\-fdiagnostics\-column\-unit=display\fR.
*************** as per \fB\-fdiagnostics\-column\-unit=d
*** 36382,36404 ****
  .PP
  Some additional environment variables affect the behavior of the
  preprocessor.
! .IP "\fB\s-1CPATH\s0\fR" 4
  .IX Item "CPATH"
  .PD 0
! .IP "\fBC_INCLUDE_PATH\fR" 4
  .IX Item "C_INCLUDE_PATH"
! .IP "\fB\s-1CPLUS_INCLUDE_PATH\s0\fR" 4
  .IX Item "CPLUS_INCLUDE_PATH"
! .IP "\fB\s-1OBJC_INCLUDE_PATH\s0\fR" 4
  .IX Item "OBJC_INCLUDE_PATH"
  .PD
! Each variable's value is a list of directories separated by a special
! character, much like \fB\s-1PATH\s0\fR, in which to look for header files.
! The special character, \f(CW\*(C`PATH_SEPARATOR\*(C'\fR, is target-dependent and
! determined at \s-1GCC\s0 build time.  For Microsoft Windows-based targets it is a
  semicolon, and for almost all other targets it is a colon.
  .Sp
! \&\fB\s-1CPATH\s0\fR specifies a list of directories to be searched as if
  specified with \fB\-I\fR, but after any paths given with \fB\-I\fR
  options on the command line.  This environment variable is used
  regardless of which language is being preprocessed.
--- 36316,36338 ----
  .PP
  Some additional environment variables affect the behavior of the
  preprocessor.
! .IP \fBCPATH\fR 4
  .IX Item "CPATH"
  .PD 0
! .IP \fBC_INCLUDE_PATH\fR 4
  .IX Item "C_INCLUDE_PATH"
! .IP \fBCPLUS_INCLUDE_PATH\fR 4
  .IX Item "CPLUS_INCLUDE_PATH"
! .IP \fBOBJC_INCLUDE_PATH\fR 4
  .IX Item "OBJC_INCLUDE_PATH"
  .PD
! Each variable\*(Aqs value is a list of directories separated by a special
! character, much like \fBPATH\fR, in which to look for header files.
! The special character, \f(CW\*(C`PATH_SEPARATOR\*(C'\fR, is target\-dependent and
! determined at GCC build time.  For Microsoft Windows\-based targets it is a
  semicolon, and for almost all other targets it is a colon.
  .Sp
! \&\fBCPATH\fR specifies a list of directories to be searched as if
  specified with \fB\-I\fR, but after any paths given with \fB\-I\fR
  options on the command line.  This environment variable is used
  regardless of which language is being preprocessed.
*************** paths given with \fB\-isystem\fR options
*** 36411,36426 ****
  In all these variables, an empty element instructs the compiler to
  search its current working directory.  Empty elements can appear at the
  beginning or end of a path.  For instance, if the value of
! \&\fB\s-1CPATH\s0\fR is \f(CW\*(C`:/special/include\*(C'\fR, that has the same
  effect as \fB\-I.\ \-I/special/include\fR.
! .IP "\fB\s-1DEPENDENCIES_OUTPUT\s0\fR" 4
  .IX Item "DEPENDENCIES_OUTPUT"
  If this variable is set, its value specifies how to output
! dependencies for Make based on the non-system header files processed
  by the compiler.  System header files are ignored in the dependency
  output.
  .Sp
! The value of \fB\s-1DEPENDENCIES_OUTPUT\s0\fR can be just a file name, in
  which case the Make rules are written to that file, guessing the target
  name from the source file name.  Or the value can have the form
  \&\fIfile\fR\fB \fR\fItarget\fR, in which case the rules are written to
--- 36345,36360 ----
  In all these variables, an empty element instructs the compiler to
  search its current working directory.  Empty elements can appear at the
  beginning or end of a path.  For instance, if the value of
! \&\fBCPATH\fR is \f(CW\*(C`:/special/include\*(C'\fR, that has the same
  effect as \fB\-I.\ \-I/special/include\fR.
! .IP \fBDEPENDENCIES_OUTPUT\fR 4
  .IX Item "DEPENDENCIES_OUTPUT"
  If this variable is set, its value specifies how to output
! dependencies for Make based on the non\-system header files processed
  by the compiler.  System header files are ignored in the dependency
  output.
  .Sp
! The value of \fBDEPENDENCIES_OUTPUT\fR can be just a file name, in
  which case the Make rules are written to that file, guessing the target
  name from the source file name.  Or the value can have the form
  \&\fIfile\fR\fB \fR\fItarget\fR, in which case the rules are written to
*************** file \fIfile\fR using \fItarget\fR as th
*** 36429,36501 ****
  In other words, this environment variable is equivalent to combining
  the options \fB\-MM\fR and \fB\-MF\fR,
  with an optional \fB\-MT\fR switch too.
! .IP "\fB\s-1SUNPRO_DEPENDENCIES\s0\fR" 4
  .IX Item "SUNPRO_DEPENDENCIES"
! This variable is the same as \fB\s-1DEPENDENCIES_OUTPUT\s0\fR (see above),
  except that system header files are not ignored, so it implies
  \&\fB\-M\fR rather than \fB\-MM\fR.  However, the dependence on the
  main input file is omitted.
! .IP "\fB\s-1SOURCE_DATE_EPOCH\s0\fR" 4
  .IX Item "SOURCE_DATE_EPOCH"
! If this variable is set, its value specifies a \s-1UNIX\s0 timestamp to be
  used in replacement of the current date and time in the \f(CW\*(C`_\|_DATE_\|_\*(C'\fR
  and \f(CW\*(C`_\|_TIME_\|_\*(C'\fR macros, so that the embedded timestamps become
  reproducible.
  .Sp
! The value of \fB\s-1SOURCE_DATE_EPOCH\s0\fR must be a \s-1UNIX\s0 timestamp,
  defined as the number of seconds (excluding leap seconds) since
! 01 Jan 1970 00:00:00 represented in \s-1ASCII\s0; identical to the output of
  \&\f(CW\*(C`date +%s\*(C'\fR on GNU/Linux and other systems that support the
  \&\f(CW%s\fR extension in the \f(CW\*(C`date\*(C'\fR command.
  .Sp
  The value should be a known timestamp such as the last modification
  time of the source or package and it should be set by the build
  process.
! .SH "BUGS"
  .IX Header "BUGS"
  For instructions on reporting bugs, see
  <\fBhttps://gcc.gnu.org/bugs/\fR>.
! .SH "FOOTNOTES"
  .IX Header "FOOTNOTES"
! .IP "1." 4
  On some systems, \fBgcc \-shared\fR
  needs to build supplementary stub code for constructors to work.  On
! multi-libbed systems, \fBgcc \-shared\fR must select the correct support
  libraries to link against.  Failing to supply the correct flags may lead
  to subtle defects.  Supplying them in cases where they are not necessary
  is innocuous.  \fB\-shared\fR suppresses the addition of startup code
! to alter the floating-point environment as done with \fB\-ffast\-math\fR,
  \&\fB\-Ofast\fR or \fB\-funsafe\-math\-optimizations\fR on some targets.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf\-funding\fR\|(7),
! \&\fIcpp\fR\|(1), \fIgcov\fR\|(1), \fIas\fR\|(1), \fIld\fR\|(1), \fIgdb\fR\|(1)
  and the Info entries for \fIgcc\fR, \fIcpp\fR, \fIas\fR,
  \&\fIld\fR, \fIbinutils\fR and \fIgdb\fR.
! .SH "AUTHOR"
  .IX Header "AUTHOR"
  See the Info entry for \fBgcc\fR, or
  <\fBhttps://gcc.gnu.org/onlinedocs/gcc/Contributors.html\fR>,
! for contributors to \s-1GCC.\s0
! .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 1988\-2025 Free Software Foundation, Inc.
  .PP
  Permission is granted to copy, distribute and/or modify this document
! under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 or
  any later version published by the Free Software Foundation; with the
! Invariant Sections being \*(L"\s-1GNU\s0 General Public License\*(R" and \*(L"Funding
! Free Software\*(R", the Front-Cover texts being (a) (see below), and with
! the Back-Cover Texts being (b) (see below).  A copy of the license is
! included in the \fIgfdl\fR\|(7) man page.
  .PP
! (a) The \s-1FSF\s0's Front-Cover Text is:
  .PP
  .Vb 1
  \&     A GNU Manual
  .Ve
  .PP
! (b) The \s-1FSF\s0's Back-Cover Text is:
  .PP
  .Vb 3
  \&     You have freedom to copy and modify this GNU Manual, like GNU
--- 36363,36435 ----
  In other words, this environment variable is equivalent to combining
  the options \fB\-MM\fR and \fB\-MF\fR,
  with an optional \fB\-MT\fR switch too.
! .IP \fBSUNPRO_DEPENDENCIES\fR 4
  .IX Item "SUNPRO_DEPENDENCIES"
! This variable is the same as \fBDEPENDENCIES_OUTPUT\fR (see above),
  except that system header files are not ignored, so it implies
  \&\fB\-M\fR rather than \fB\-MM\fR.  However, the dependence on the
  main input file is omitted.
! .IP \fBSOURCE_DATE_EPOCH\fR 4
  .IX Item "SOURCE_DATE_EPOCH"
! If this variable is set, its value specifies a UNIX timestamp to be
  used in replacement of the current date and time in the \f(CW\*(C`_\|_DATE_\|_\*(C'\fR
  and \f(CW\*(C`_\|_TIME_\|_\*(C'\fR macros, so that the embedded timestamps become
  reproducible.
  .Sp
! The value of \fBSOURCE_DATE_EPOCH\fR must be a UNIX timestamp,
  defined as the number of seconds (excluding leap seconds) since
! 01 Jan 1970 00:00:00 represented in ASCII; identical to the output of
  \&\f(CW\*(C`date +%s\*(C'\fR on GNU/Linux and other systems that support the
  \&\f(CW%s\fR extension in the \f(CW\*(C`date\*(C'\fR command.
  .Sp
  The value should be a known timestamp such as the last modification
  time of the source or package and it should be set by the build
  process.
! .SH BUGS
  .IX Header "BUGS"
  For instructions on reporting bugs, see
  <\fBhttps://gcc.gnu.org/bugs/\fR>.
! .SH FOOTNOTES
  .IX Header "FOOTNOTES"
! .IP 1. 4
  On some systems, \fBgcc \-shared\fR
  needs to build supplementary stub code for constructors to work.  On
! multi\-libbed systems, \fBgcc \-shared\fR must select the correct support
  libraries to link against.  Failing to supply the correct flags may lead
  to subtle defects.  Supplying them in cases where they are not necessary
  is innocuous.  \fB\-shared\fR suppresses the addition of startup code
! to alter the floating\-point environment as done with \fB\-ffast\-math\fR,
  \&\fB\-Ofast\fR or \fB\-funsafe\-math\-optimizations\fR on some targets.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fBgpl\fR\|(7), \fBgfdl\fR\|(7), \fBfsf\-funding\fR\|(7),
! \&\fBcpp\fR\|(1), \fBgcov\fR\|(1), \fBas\fR\|(1), \fBld\fR\|(1), \fBgdb\fR\|(1)
  and the Info entries for \fIgcc\fR, \fIcpp\fR, \fIas\fR,
  \&\fIld\fR, \fIbinutils\fR and \fIgdb\fR.
! .SH AUTHOR
  .IX Header "AUTHOR"
  See the Info entry for \fBgcc\fR, or
  <\fBhttps://gcc.gnu.org/onlinedocs/gcc/Contributors.html\fR>,
! for contributors to GCC.
! .SH COPYRIGHT
  .IX Header "COPYRIGHT"
  Copyright (c) 1988\-2025 Free Software Foundation, Inc.
  .PP
  Permission is granted to copy, distribute and/or modify this document
! under the terms of the GNU Free Documentation License, Version 1.3 or
  any later version published by the Free Software Foundation; with the
! Invariant Sections being "GNU General Public License" and "Funding
! Free Software", the Front\-Cover texts being (a) (see below), and with
! the Back\-Cover Texts being (b) (see below).  A copy of the license is
! included in the \fBgfdl\fR\|(7) man page.
  .PP
! (a) The FSF\*(Aqs Front\-Cover Text is:
  .PP
  .Vb 1
  \&     A GNU Manual
  .Ve
  .PP
! (b) The FSF\*(Aqs Back\-Cover Text is:
  .PP
  .Vb 3
  \&     You have freedom to copy and modify this GNU Manual, like GNU
diff -Nrcpad gcc-15.2.0/gcc/doc/gcc.1 gcc-15.3.0/gcc/doc/gcc.1
*** gcc-15.2.0/gcc/doc/gcc.1	Fri Aug  8 07:10:01 2025
--- gcc-15.3.0/gcc/doc/gcc.1	Fri Jun 12 06:28:40 2026
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
--- 1,5 ----
! .\" -*- mode: troff; coding: utf-8 -*-
! .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
***************
*** 15,43 ****
  .ft R
  .fi
  ..
! .\" Set up some character translations and predefined strings.  \*(-- will
! .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
! .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
! .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
! .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
! .\" nothing in troff, for use with C<>.
! .tr \(*W-
! .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
  .ie n \{\
- .    ds -- \(*W-
- .    ds PI pi
- .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
- .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
- .    ds L" ""
- .    ds R" ""
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
- .    ds -- \|\(em\|
- .    ds PI \(*p
- .    ds L" ``
- .    ds R" ''
  .    ds C`
  .    ds C'
  'br\}
--- 16,27 ----
  .ft R
  .fi
  ..
! .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
  .ie n \{\
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
  .    ds C`
  .    ds C'
  'br\}
***************
*** 54,157 ****
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .if !\nF .nr F 0
! .if \nF>0 \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    if !\nF==2 \{\
! .        nr % 0
! .        nr F 2
  .    \}
  .\}
  .\"
! .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
! .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
! .    \" fudge factors for nroff and troff
! .if n \{\
! .    ds #H 0
! .    ds #V .8m
! .    ds #F .3m
! .    ds #[ \f1
! .    ds #] \fP
! .\}
! .if t \{\
! .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
! .    ds #V .6m
! .    ds #F 0
! .    ds #[ \&
! .    ds #] \&
! .\}
! .    \" simple accents for nroff and troff
! .if n \{\
! .    ds ' \&
! .    ds ` \&
! .    ds ^ \&
! .    ds , \&
! .    ds ~ ~
! .    ds /
! .\}
! .if t \{\
! .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
! .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
! .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
! .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
! .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
! .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
! .\}
! .    \" troff and (daisy-wheel) nroff accents
! .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
! .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
! .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
! .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
! .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
! .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
! .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
! .ds ae a\h'-(\w'a'u*4/10)'e
! .ds Ae A\h'-(\w'A'u*4/10)'E
! .    \" corrections for vroff
! .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
! .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
! .    \" for low resolution devices (crt and lpr)
! .if \n(.H>23 .if \n(.V>19 \
! \{\
! .    ds : e
! .    ds 8 ss
! .    ds o a
! .    ds d- d\h'-1'\(ga
! .    ds D- D\h'-1'\(hy
! .    ds th \o'bp'
! .    ds Th \o'LP'
! .    ds ae ae
! .    ds Ae AE
! .\}
! .rm #[ #] #H #V #F C
  .\" ========================================================================
  .\"
  .IX Title "GCC 1"
! .TH GCC 1 "2025-08-08" "gcc-15.2.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH "NAME"
  gcc \- GNU project C and C++ compiler
! .SH "SYNOPSIS"
  .IX Header "SYNOPSIS"
  gcc [\fB\-c\fR|\fB\-S\fR|\fB\-E\fR] [\fB\-std=\fR\fIstandard\fR]
      [\fB\-g\fR] [\fB\-pg\fR] [\fB\-O\fR\fIlevel\fR]
      [\fB\-W\fR\fIwarn\fR...] [\fB\-Wpedantic\fR]
      [\fB\-I\fR\fIdir\fR...] [\fB\-L\fR\fIdir\fR...]
      [\fB\-D\fR\fImacro\fR[=\fIdefn\fR]...] [\fB\-U\fR\fImacro\fR]
!     [\fB\-f\fR\fIoption\fR...] [\fB\-m\fR\fImachine-option\fR...]
      [\fB\-o\fR \fIoutfile\fR] [@\fIfile\fR] \fIinfile\fR...
  .PP
  Only the most useful options are listed here; see below for the
  remainder.  \fBg++\fR accepts mostly the same options as \fBgcc\fR.
! .SH "DESCRIPTION"
  .IX Header "DESCRIPTION"
! When you invoke \s-1GCC,\s0 it normally does preprocessing, compilation,
! assembly and linking.  The \*(L"overall options\*(R" allow you to stop this
  process at an intermediate stage.  For example, the \fB\-c\fR option
  says not to run the linker.  Then the output consists of object files
  output by the assembler.
--- 38,86 ----
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .nr rF 0
! .if \n(.g .if rF .nr rF 1
! .if (\n(rF:(\n(.g==0)) \{\
! .    if \nF \{\
! .        de IX
! .        tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .        if !\nF==2 \{\
! .            nr % 0
! .            nr F 2
! .        \}
  .    \}
  .\}
+ .rr rF
  .\"
! .\" Required to disable full justification in groff 1.23.0.
! .if n .ds AD l
  .\" ========================================================================
  .\"
  .IX Title "GCC 1"
! .TH GCC 1 2026-06-12 gcc-15.3.0 GNU
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH NAME
  gcc \- GNU project C and C++ compiler
! .SH SYNOPSIS
  .IX Header "SYNOPSIS"
  gcc [\fB\-c\fR|\fB\-S\fR|\fB\-E\fR] [\fB\-std=\fR\fIstandard\fR]
      [\fB\-g\fR] [\fB\-pg\fR] [\fB\-O\fR\fIlevel\fR]
      [\fB\-W\fR\fIwarn\fR...] [\fB\-Wpedantic\fR]
      [\fB\-I\fR\fIdir\fR...] [\fB\-L\fR\fIdir\fR...]
      [\fB\-D\fR\fImacro\fR[=\fIdefn\fR]...] [\fB\-U\fR\fImacro\fR]
!     [\fB\-f\fR\fIoption\fR...] [\fB\-m\fR\fImachine\-option\fR...]
      [\fB\-o\fR \fIoutfile\fR] [@\fIfile\fR] \fIinfile\fR...
  .PP
  Only the most useful options are listed here; see below for the
  remainder.  \fBg++\fR accepts mostly the same options as \fBgcc\fR.
! .SH DESCRIPTION
  .IX Header "DESCRIPTION"
! When you invoke GCC, it normally does preprocessing, compilation,
! assembly and linking.  The "overall options" allow you to stop this
  process at an intermediate stage.  For example, the \fB\-c\fR option
  says not to run the linker.  Then the output consists of object files
  output by the assembler.
*************** control the preprocessor and others the
*** 161,184 ****
  options control the assembler and linker; most of these are not
  documented here, since you rarely need to use any of them.
  .PP
! Most of the command-line options that you can use with \s-1GCC\s0 are useful
  for C programs; when an option is only useful with another language
! (usually \*(C+), the explanation says so explicitly.  If the description
  for a particular option does not mention a source language, you can use
  that option with all supported languages.
  .PP
! The usual way to run \s-1GCC\s0 is to run the executable called \fBgcc\fR, or
! \&\fImachine\fR\fB\-gcc\fR when cross-compiling, or
! \&\fImachine\fR\fB\-gcc\-\fR\fIversion\fR to run a specific version of \s-1GCC.\s0
! When you compile \*(C+ programs, you should invoke \s-1GCC\s0 as \fBg++\fR
  instead.
  .PP
  The \fBgcc\fR program accepts options and file names as operands.  Many
! options have multi-letter names; therefore multiple single-letter options
  may \fInot\fR be grouped: \fB\-dv\fR is very different from \fB\-d\ \-v\fR.
  .PP
  You can mix options and other arguments.  For the most part, the order
! you use doesn't matter.  Order does matter when you use several
  options of the same kind; for example, if you specify \fB\-L\fR more
  than once, the directories are searched in the order specified.  Also,
  the placement of the \fB\-l\fR option is significant.
--- 90,113 ----
  options control the assembler and linker; most of these are not
  documented here, since you rarely need to use any of them.
  .PP
! Most of the command\-line options that you can use with GCC are useful
  for C programs; when an option is only useful with another language
! (usually C++), the explanation says so explicitly.  If the description
  for a particular option does not mention a source language, you can use
  that option with all supported languages.
  .PP
! The usual way to run GCC is to run the executable called \fBgcc\fR, or
! \&\fImachine\fR\fB\-gcc\fR when cross\-compiling, or
! \&\fImachine\fR\fB\-gcc\-\fR\fIversion\fR to run a specific version of GCC.
! When you compile C++ programs, you should invoke GCC as \fBg++\fR
  instead.
  .PP
  The \fBgcc\fR program accepts options and file names as operands.  Many
! options have multi\-letter names; therefore multiple single\-letter options
  may \fInot\fR be grouped: \fB\-dv\fR is very different from \fB\-d\ \-v\fR.
  .PP
  You can mix options and other arguments.  For the most part, the order
! you use doesn\*(Aqt matter.  Order does matter when you use several
  options of the same kind; for example, if you specify \fB\-L\fR more
  than once, the directories are searched in the order specified.  Also,
  the placement of the \fB\-l\fR option is significant.
*************** integers followed by a byte size suffix
*** 201,210 ****
  such as \f(CW\*(C`kB\*(C'\fR and \f(CW\*(C`KiB\*(C'\fR for kilobyte and kibibyte, respectively,
  \&\f(CW\*(C`MB\*(C'\fR and \f(CW\*(C`MiB\*(C'\fR for megabyte and mebibyte, \f(CW\*(C`GB\*(C'\fR and
  \&\f(CW\*(C`GiB\*(C'\fR for gigabyte and gigibyte, and so on.  Such arguments are
! designated by \fIbyte-size\fR in the following text.  Refer to the \s-1NIST,
! IEC,\s0 and other relevant national and international standards for the full
  listing and explanation of the binary and decimal byte size prefixes.
! .SH "OPTIONS"
  .IX Header "OPTIONS"
  .SS "Option Summary"
  .IX Subsection "Option Summary"
--- 130,139 ----
  such as \f(CW\*(C`kB\*(C'\fR and \f(CW\*(C`KiB\*(C'\fR for kilobyte and kibibyte, respectively,
  \&\f(CW\*(C`MB\*(C'\fR and \f(CW\*(C`MiB\*(C'\fR for megabyte and mebibyte, \f(CW\*(C`GB\*(C'\fR and
  \&\f(CW\*(C`GiB\*(C'\fR for gigabyte and gigibyte, and so on.  Such arguments are
! designated by \fIbyte\-size\fR in the following text.  Refer to the NIST,
! IEC, and other relevant national and international standards for the full
  listing and explanation of the binary and decimal byte size prefixes.
! .SH OPTIONS
  .IX Header "OPTIONS"
  .SS "Option Summary"
  .IX Subsection "Option Summary"
*************** in the following sections.
*** 231,238 ****
  \&\fB\-fplan9\-extensions  \-fsigned\-bitfields  \-funsigned\-bitfields
  \&\-fsigned\-char  \-funsigned\-char  \-fstrict\-flex\-arrays[=\fR\fIn\fR\fB]
  \&\-fsso\-struct=\fR\fIendianness\fR
! .IP "\fI\*(C+ Language Options\fR" 4
! .IX Item " Language Options"
  \&\fB\-fabi\-version=\fR\fIn\fR  \fB\-fno\-access\-control
  \&\-faligned\-new=\fR\fIn\fR  \fB\-fno\-assume\-sane\-operators\-new\-delete
  \&\-fchar8_t  \-fcheck\-new
--- 160,167 ----
  \&\fB\-fplan9\-extensions  \-fsigned\-bitfields  \-funsigned\-bitfields
  \&\-fsigned\-char  \-funsigned\-char  \-fstrict\-flex\-arrays[=\fR\fIn\fR\fB]
  \&\-fsso\-struct=\fR\fIendianness\fR
! .IP "\fIC++ Language Options\fR" 4
! .IX Item "C++ Language Options"
  \&\fB\-fabi\-version=\fR\fIn\fR  \fB\-fno\-access\-control
  \&\-faligned\-new=\fR\fIn\fR  \fB\-fno\-assume\-sane\-operators\-new\-delete
  \&\-fchar8_t  \-fcheck\-new
*************** in the following sections.
*** 298,306 ****
  \&\-Wno\-template\-id\-cdtor  \-Wtemplate\-names\-tu\-local
  \&\-Wno\-terminate  \-Wno\-vexing\-parse  \-Wvirtual\-inheritance
  \&\-Wno\-virtual\-move\-assign  \-Wvolatile\fR
! .IP "\fIObjective-C and Objective\-\*(C+ Language Options\fR" 4
! .IX Item "Objective-C and Objective- Language Options"
! \&\fB\-fconstant\-string\-class=\fR\fIclass-name\fR
  \&\fB\-fgnu\-runtime  \-fnext\-runtime
  \&\-fno\-nil\-receivers
  \&\-fobjc\-abi\-version=\fR\fIn\fR
--- 227,235 ----
  \&\-Wno\-template\-id\-cdtor  \-Wtemplate\-names\-tu\-local
  \&\-Wno\-terminate  \-Wno\-vexing\-parse  \-Wvirtual\-inheritance
  \&\-Wno\-virtual\-move\-assign  \-Wvolatile\fR
! .IP "\fIObjective\-C and Objective\-C++ Language Options\fR" 4
! .IX Item "Objective-C and Objective-C++ Language Options"
! \&\fB\-fconstant\-string\-class=\fR\fIclass\-name\fR
  \&\fB\-fgnu\-runtime  \-fnext\-runtime
  \&\-fno\-nil\-receivers
  \&\-fobjc\-abi\-version=\fR\fIn\fR
*************** in the following sections.
*** 323,339 ****
  .IX Item "OpenMP and OpenACC Options"
  \&\fB\-foffload=\fR\fIarg\fR  \fB\-foffload\-options=\fR\fIarg\fR
  \&\fB\-fopenacc  \-fopenacc\-dim=\fR\fIgeom\fR
! \&\fB\-fopenmp  \-fopenmp\-simd  \-fopenmp\-target\-simd\-clone\fR[\fB=\fR\fIdevice-type\fR]
  .IP "\fIDiagnostic Message Formatting Options\fR" 4
  .IX Item "Diagnostic Message Formatting Options"
  \&\fB\-fmessage\-length=\fR\fIn\fR
  \&\fB\-fdiagnostics\-plain\-output
! \&\-fdiagnostics\-show\-location=\fR[\fBonce\fR|\fBevery-line\fR]
  \&\fB\-fdiagnostics\-color=\fR[\fBauto\fR|\fBnever\fR|\fBalways\fR]
  \&\fB\-fdiagnostics\-urls=\fR[\fBauto\fR|\fBnever\fR|\fBalways\fR]
! \&\fB\-fdiagnostics\-format=\fR[\fBtext\fR|\fBsarif-stderr\fR|\fBsarif-file\fR|\fBjson\fR|\fBjson-stderr\fR|\fBjson-file\fR]
! \&\fB\-fdiagnostics\-add\-output=\fR\fIDIAGNOSTICS-OUTPUT-SPEC\fR
! \&\fB\-fdiagnostics\-set\-output=\fR\fIDIAGNOSTICS-OUTPUT-SPEC\fR
  \&\fB\-fno\-diagnostics\-json\-formatting
  \&\-fno\-diagnostics\-show\-option  \-fno\-diagnostics\-show\-caret
  \&\-fno\-diagnostics\-show\-event\-links
--- 252,268 ----
  .IX Item "OpenMP and OpenACC Options"
  \&\fB\-foffload=\fR\fIarg\fR  \fB\-foffload\-options=\fR\fIarg\fR
  \&\fB\-fopenacc  \-fopenacc\-dim=\fR\fIgeom\fR
! \&\fB\-fopenmp  \-fopenmp\-simd  \-fopenmp\-target\-simd\-clone\fR[\fB=\fR\fIdevice\-type\fR]
  .IP "\fIDiagnostic Message Formatting Options\fR" 4
  .IX Item "Diagnostic Message Formatting Options"
  \&\fB\-fmessage\-length=\fR\fIn\fR
  \&\fB\-fdiagnostics\-plain\-output
! \&\-fdiagnostics\-show\-location=\fR[\fBonce\fR|\fBevery\-line\fR]
  \&\fB\-fdiagnostics\-color=\fR[\fBauto\fR|\fBnever\fR|\fBalways\fR]
  \&\fB\-fdiagnostics\-urls=\fR[\fBauto\fR|\fBnever\fR|\fBalways\fR]
! \&\fB\-fdiagnostics\-format=\fR[\fBtext\fR|\fBsarif\-stderr\fR|\fBsarif\-file\fR|\fBjson\fR|\fBjson\-stderr\fR|\fBjson\-file\fR]
! \&\fB\-fdiagnostics\-add\-output=\fR\fIDIAGNOSTICS\-OUTPUT\-SPEC\fR
! \&\fB\-fdiagnostics\-set\-output=\fR\fIDIAGNOSTICS\-OUTPUT\-SPEC\fR
  \&\fB\-fno\-diagnostics\-json\-formatting
  \&\-fno\-diagnostics\-show\-option  \-fno\-diagnostics\-show\-caret
  \&\-fno\-diagnostics\-show\-event\-links
*************** in the following sections.
*** 344,350 ****
  \&\-fdiagnostics\-minimum\-margin\-width=\fR\fIwidth\fR
  \&\fB\-fdiagnostics\-parseable\-fixits  \-fdiagnostics\-generate\-patch
  \&\-fdiagnostics\-show\-template\-tree  \-fno\-elide\-type
! \&\-fdiagnostics\-path\-format=\fR[\fBnone\fR|\fBseparate-events\fR|\fBinline-events\fR]
  \&\fB\-fdiagnostics\-show\-path\-depths
  \&\-fno\-show\-column
  \&\-fdiagnostics\-column\-unit=\fR[\fBdisplay\fR|\fBbyte\fR]
--- 273,279 ----
  \&\-fdiagnostics\-minimum\-margin\-width=\fR\fIwidth\fR
  \&\fB\-fdiagnostics\-parseable\-fixits  \-fdiagnostics\-generate\-patch
  \&\-fdiagnostics\-show\-template\-tree  \-fno\-elide\-type
! \&\-fdiagnostics\-path\-format=\fR[\fBnone\fR|\fBseparate\-events\fR|\fBinline\-events\fR]
  \&\fB\-fdiagnostics\-show\-path\-depths
  \&\-fno\-show\-column
  \&\-fdiagnostics\-column\-unit=\fR[\fBdisplay\fR|\fBbyte\fR]
*************** in the following sections.
*** 357,364 ****
  \&\-pedantic\-errors \-fpermissive
  \&\-w  \-Wextra  \-Wall  \-Wabi=\fR\fIn\fR
  \&\fB\-Waddress  \-Wno\-address\-of\-packed\-member  \-Waggregate\-return
! \&\-Walloc\-size  \-Walloc\-size\-larger\-than=\fR\fIbyte-size\fR  \fB\-Walloc\-zero
! \&\-Walloca  \-Walloca\-larger\-than=\fR\fIbyte-size\fR
  \&\fB\-Wno\-aggressive\-loop\-optimizations
  \&\-Warith\-conversion
  \&\-Warray\-bounds  \-Warray\-bounds=\fR\fIn\fR  \fB\-Warray\-compare
--- 286,293 ----
  \&\-pedantic\-errors \-fpermissive
  \&\-w  \-Wextra  \-Wall  \-Wabi=\fR\fIn\fR
  \&\fB\-Waddress  \-Wno\-address\-of\-packed\-member  \-Waggregate\-return
! \&\-Walloc\-size  \-Walloc\-size\-larger\-than=\fR\fIbyte\-size\fR  \fB\-Walloc\-zero
! \&\-Walloca  \-Walloca\-larger\-than=\fR\fIbyte\-size\fR
  \&\fB\-Wno\-aggressive\-loop\-optimizations
  \&\-Warith\-conversion
  \&\-Warray\-bounds  \-Warray\-bounds=\fR\fIn\fR  \fB\-Warray\-compare
*************** in the following sections.
*** 397,403 ****
  \&\-Wformat\-nonliteral  \-Wformat\-overflow=\fR\fIn\fR
  \&\fB\-Wformat\-security  \-Wformat\-signedness  \-Wformat\-truncation=\fR\fIn\fR
  \&\fB\-Wformat\-y2k  \-Wframe\-address
! \&\-Wframe\-larger\-than=\fR\fIbyte-size\fR  \fB\-Wno\-free\-nonheap\-object
  \&\-Wheader\-guard  \-Wno\-if\-not\-aligned  \-Wno\-ignored\-attributes
  \&\-Wignored\-qualifiers  \-Wno\-incompatible\-pointer\-types  \-Whardened
  \&\-Wimplicit  \-Wimplicit\-fallthrough  \-Wimplicit\-fallthrough=\fR\fIn\fR
--- 326,332 ----
  \&\-Wformat\-nonliteral  \-Wformat\-overflow=\fR\fIn\fR
  \&\fB\-Wformat\-security  \-Wformat\-signedness  \-Wformat\-truncation=\fR\fIn\fR
  \&\fB\-Wformat\-y2k  \-Wframe\-address
! \&\-Wframe\-larger\-than=\fR\fIbyte\-size\fR  \fB\-Wno\-free\-nonheap\-object
  \&\-Wheader\-guard  \-Wno\-if\-not\-aligned  \-Wno\-ignored\-attributes
  \&\-Wignored\-qualifiers  \-Wno\-incompatible\-pointer\-types  \-Whardened
  \&\-Wimplicit  \-Wimplicit\-fallthrough  \-Wimplicit\-fallthrough=\fR\fIn\fR
*************** in the following sections.
*** 406,412 ****
  \&\-Winit\-self  \-Winline  \-Wno\-int\-conversion  \-Wint\-in\-bool\-context
  \&\-Wno\-int\-to\-pointer\-cast  \-Wno\-invalid\-memory\-model
  \&\-Winvalid\-pch  \-Winvalid\-utf8  \-Wno\-unicode  \-Wjump\-misses\-init
! \&\-Wlarger\-than=\fR\fIbyte-size\fR  \fB\-Wleading\-whitespace=\fR\fIkind\fR
  \&\fB\-Wlogical\-not\-parentheses  \-Wlogical\-op
  \&\-Wlong\-long  \-Wno\-lto\-type\-mismatch \-Wmain  \-Wmaybe\-uninitialized
  \&\-Wmemset\-elt\-size  \-Wmemset\-transposed\-args
--- 335,341 ----
  \&\-Winit\-self  \-Winline  \-Wno\-int\-conversion  \-Wint\-in\-bool\-context
  \&\-Wno\-int\-to\-pointer\-cast  \-Wno\-invalid\-memory\-model
  \&\-Winvalid\-pch  \-Winvalid\-utf8  \-Wno\-unicode  \-Wjump\-misses\-init
! \&\-Wlarger\-than=\fR\fIbyte\-size\fR  \fB\-Wleading\-whitespace=\fR\fIkind\fR
  \&\fB\-Wlogical\-not\-parentheses  \-Wlogical\-op
  \&\-Wlong\-long  \-Wno\-lto\-type\-mismatch \-Wmain  \-Wmaybe\-uninitialized
  \&\-Wmemset\-elt\-size  \-Wmemset\-transposed\-args
*************** in the following sections.
*** 436,447 ****
  \&\-Wno\-sizeof\-array\-argument
  \&\-Wsizeof\-array\-div
  \&\-Wsizeof\-pointer\-div  \-Wsizeof\-pointer\-memaccess
! \&\-Wstack\-protector  \-Wstack\-usage=\fR\fIbyte-size\fR  \fB\-Wstrict\-aliasing
  \&\-Wstrict\-aliasing=n  \-Wstrict\-overflow  \-Wstrict\-overflow=\fR\fIn\fR
  \&\fB\-Wstring\-compare
  \&\-Wno\-stringop\-overflow \-Wno\-stringop\-overread
  \&\-Wno\-stringop\-truncation  \-Wstrict\-flex\-arrays
! \&\-Wsuggest\-attribute=\fR\fIattribute-name\fR
  \&\fB\-Wswitch  \-Wno\-switch\-bool  \-Wswitch\-default  \-Wswitch\-enum
  \&\-Wno\-switch\-outside\-range  \-Wno\-switch\-unreachable  \-Wsync\-nand
  \&\-Wsystem\-headers  \-Wtautological\-compare  \-Wtrailing\-whitespace
--- 365,376 ----
  \&\-Wno\-sizeof\-array\-argument
  \&\-Wsizeof\-array\-div
  \&\-Wsizeof\-pointer\-div  \-Wsizeof\-pointer\-memaccess
! \&\-Wstack\-protector  \-Wstack\-usage=\fR\fIbyte\-size\fR  \fB\-Wstrict\-aliasing
  \&\-Wstrict\-aliasing=n  \-Wstrict\-overflow  \-Wstrict\-overflow=\fR\fIn\fR
  \&\fB\-Wstring\-compare
  \&\-Wno\-stringop\-overflow \-Wno\-stringop\-overread
  \&\-Wno\-stringop\-truncation  \-Wstrict\-flex\-arrays
! \&\-Wsuggest\-attribute=\fR\fIattribute\-name\fR
  \&\fB\-Wswitch  \-Wno\-switch\-bool  \-Wswitch\-default  \-Wswitch\-enum
  \&\-Wno\-switch\-outside\-range  \-Wno\-switch\-unreachable  \-Wsync\-nand
  \&\-Wsystem\-headers  \-Wtautological\-compare  \-Wtrailing\-whitespace
*************** in the following sections.
*** 460,466 ****
  \&\-Wuse\-after\-free  \-Wuse\-after\-free=\fR\fIn\fR  \fB\-Wuseless\-cast
  \&\-Wno\-varargs  \-Wvariadic\-macros
  \&\-Wvector\-operation\-performance
! \&\-Wvla  \-Wvla\-larger\-than=\fR\fIbyte-size\fR  \fB\-Wno\-vla\-larger\-than
  \&\-Wvolatile\-register\-var  \-Wwrite\-strings
  \&\-Wno\-xor\-used\-as\-pow
  \&\-Wzero\-as\-null\-pointer\-constant
--- 389,395 ----
  \&\-Wuse\-after\-free  \-Wuse\-after\-free=\fR\fIn\fR  \fB\-Wuseless\-cast
  \&\-Wno\-varargs  \-Wvariadic\-macros
  \&\-Wvector\-operation\-performance
! \&\-Wvla  \-Wvla\-larger\-than=\fR\fIbyte\-size\fR  \fB\-Wno\-vla\-larger\-than
  \&\-Wvolatile\-register\-var  \-Wwrite\-strings
  \&\-Wno\-xor\-used\-as\-pow
  \&\-Wzero\-as\-null\-pointer\-constant
*************** in the following sections.
*** 544,550 ****
  \&\-Wno\-analyzer\-va\-list\-use\-after\-va\-end
  \&\-Wno\-analyzer\-write\-to\-const
  \&\-Wno\-analyzer\-write\-to\-string\-literal\fR
! .IP "\fIC and Objective-C-only Warning Options\fR" 4
  .IX Item "C and Objective-C-only Warning Options"
  \&\fB\-Wbad\-function\-cast \-Wdeprecated\-non\-prototype \-Wfree\-labels
  \&\-Wmissing\-declarations \-Wmissing\-parameter\-name \-Wmissing\-parameter\-type
--- 473,479 ----
  \&\-Wno\-analyzer\-va\-list\-use\-after\-va\-end
  \&\-Wno\-analyzer\-write\-to\-const
  \&\-Wno\-analyzer\-write\-to\-string\-literal\fR
! .IP "\fIC and Objective\-C\-only Warning Options\fR" 4
  .IX Item "C and Objective-C-only Warning Options"
  \&\fB\-Wbad\-function\-cast \-Wdeprecated\-non\-prototype \-Wfree\-labels
  \&\-Wmissing\-declarations \-Wmissing\-parameter\-name \-Wmissing\-parameter\-type
*************** in the following sections.
*** 572,578 ****
  \&\-fdebug\-prefix\-map=\fR\fIold\fR\fB=\fR\fInew\fR  \fB\-fdebug\-types\-section
  \&\-fno\-eliminate\-unused\-debug\-types
  \&\-femit\-struct\-debug\-baseonly  \-femit\-struct\-debug\-reduced
! \&\-femit\-struct\-debug\-detailed\fR[\fB=\fR\fIspec-list\fR]
  \&\fB\-fno\-eliminate\-unused\-debug\-symbols  \-femit\-class\-debug\-always
  \&\-fno\-merge\-debug\-strings  \-fno\-dwarf2\-cfi\-asm
  \&\-fvar\-tracking  \-fvar\-tracking\-assignments\fR
--- 501,507 ----
  \&\-fdebug\-prefix\-map=\fR\fIold\fR\fB=\fR\fInew\fR  \fB\-fdebug\-types\-section
  \&\-fno\-eliminate\-unused\-debug\-types
  \&\-femit\-struct\-debug\-baseonly  \-femit\-struct\-debug\-reduced
! \&\-femit\-struct\-debug\-detailed\fR[\fB=\fR\fIspec\-list\fR]
  \&\fB\-fno\-eliminate\-unused\-debug\-symbols  \-femit\-class\-debug\-always
  \&\-fno\-merge\-debug\-strings  \-fno\-dwarf2\-cfi\-asm
  \&\-fvar\-tracking  \-fvar\-tracking\-assignments\fR
*************** in the following sections.
*** 684,690 ****
  \&\fB\-fprofile\-note=\fR\fIpath\fR \fB\-fprofile\-prefix\-path=\fR\fIpath\fR
  \&\fB\-fprofile\-update=\fR\fImethod\fR \fB\-fprofile\-filter\-files=\fR\fIregex\fR
  \&\fB\-fprofile\-exclude\-files=\fR\fIregex\fR
! \&\fB\-fprofile\-reproducible=\fR[\fBmultithreaded\fR|\fBparallel-runs\fR|\fBserial\fR]
  \&\fB\-fsanitize=\fR\fIstyle\fR  \fB\-fsanitize\-recover  \-fsanitize\-recover=\fR\fIstyle\fR
  \&\fB\-fsanitize\-trap   \-fsanitize\-trap=\fR\fIstyle\fR
  \&\fB\-fasan\-shadow\-offset=\fR\fInumber\fR  \fB\-fsanitize\-sections=\fR\fIs1\fR\fB,\fR\fIs2\fR\fB,...
--- 613,619 ----
  \&\fB\-fprofile\-note=\fR\fIpath\fR \fB\-fprofile\-prefix\-path=\fR\fIpath\fR
  \&\fB\-fprofile\-update=\fR\fImethod\fR \fB\-fprofile\-filter\-files=\fR\fIregex\fR
  \&\fB\-fprofile\-exclude\-files=\fR\fIregex\fR
! \&\fB\-fprofile\-reproducible=\fR[\fBmultithreaded\fR|\fBparallel\-runs\fR|\fBserial\fR]
  \&\fB\-fsanitize=\fR\fIstyle\fR  \fB\-fsanitize\-recover  \-fsanitize\-recover=\fR\fIstyle\fR
  \&\fB\-fsanitize\-trap   \-fsanitize\-trap=\fR\fIstyle\fR
  \&\fB\-fasan\-shadow\-offset=\fR\fInumber\fR  \fB\-fsanitize\-sections=\fR\fIs1\fR\fB,\fR\fIs2\fR\fB,...
*************** in the following sections.
*** 693,699 ****
  \&\fB\-fharden\-compares \-fharden\-conditional\-branches  \-fhardened
  \&\-fharden\-control\-flow\-redundancy  \-fhardcfr\-skip\-leaf
  \&\-fhardcfr\-check\-exceptions  \-fhardcfr\-check\-returning\-calls
! \&\-fhardcfr\-check\-noreturn\-calls=\fR[\fBalways\fR|\fBno-xthrow\fR|\fBnothrow\fR|\fBnever\fR]
  \&\fB\-fstack\-protector  \-fstack\-protector\-all  \-fstack\-protector\-strong
  \&\-fstack\-protector\-explicit  \-fstack\-check
  \&\-fstack\-limit\-register=\fR\fIreg\fR  \fB\-fstack\-limit\-symbol=\fR\fIsym\fR
--- 622,628 ----
  \&\fB\-fharden\-compares \-fharden\-conditional\-branches  \-fhardened
  \&\-fharden\-control\-flow\-redundancy  \-fhardcfr\-skip\-leaf
  \&\-fhardcfr\-check\-exceptions  \-fhardcfr\-check\-returning\-calls
! \&\-fhardcfr\-check\-noreturn\-calls=\fR[\fBalways\fR|\fBno\-xthrow\fR|\fBnothrow\fR|\fBnever\fR]
  \&\fB\-fstack\-protector  \-fstack\-protector\-all  \-fstack\-protector\-strong
  \&\-fstack\-protector\-explicit  \-fstack\-check
  \&\-fstack\-limit\-register=\fR\fIreg\fR  \fB\-fstack\-limit\-symbol=\fR\fIsym\fR
*************** in the following sections.
*** 731,737 ****
  \&\fB\-Wa,\fR\fIoption\fR  \fB\-Xassembler\fR \fIoption\fR
  .IP "\fILinker Options\fR" 4
  .IX Item "Linker Options"
! \&\fIobject-file-name\fR  \fB\-fuse\-ld=\fR\fIlinker\fR  \fB\-l\fR\fIlibrary\fR
  \&\fB\-nostartfiles  \-nodefaultlibs  \-nolibc  \-nostdlib  \-nostdlib++
  \&\-e\fR \fIentry\fR  \fB\-\-entry=\fR\fIentry\fR
  \&\fB\-pie  \-pthread  \-r  \-rdynamic
--- 660,666 ----
  \&\fB\-Wa,\fR\fIoption\fR  \fB\-Xassembler\fR \fIoption\fR
  .IP "\fILinker Options\fR" 4
  .IX Item "Linker Options"
! \&\fIobject\-file\-name\fR  \fB\-fuse\-ld=\fR\fIlinker\fR  \fB\-l\fR\fIlibrary\fR
  \&\fB\-nostartfiles  \-nodefaultlibs  \-nolibc  \-nostdlib  \-nostdlib++
  \&\-e\fR \fIentry\fR  \fB\-\-entry=\fR\fIentry\fR
  \&\fB\-pie  \-pthread  \-r  \-rdynamic
*************** in the following sections.
*** 776,787 ****
  \&\fB\-d\fR\fIletters\fR  \fB\-dumpspecs  \-dumpmachine  \-dumpversion
  \&\-dumpfullversion  \-fcallgraph\-info\fR[\fB=su,da\fR]
  \&\fB\-fchecking  \-fchecking=\fR\fIn\fR
! \&\fB\-fdbg\-cnt\-list  \-fdbg\-cnt=\fR\fIcounter-value-list\fR
  \&\fB\-fdisable\-ipa\-\fR\fIpass_name\fR
  \&\fB\-fdisable\-rtl\-\fR\fIpass_name\fR
! \&\fB\-fdisable\-rtl\-\fR\fIpass-name\fR\fB=\fR\fIrange-list\fR
  \&\fB\-fdisable\-tree\-\fR\fIpass_name\fR
! \&\fB\-fdisable\-tree\-\fR\fIpass-name\fR\fB=\fR\fIrange-list\fR
  \&\fB\-fdump\-debug  \-fdump\-earlydebug
  \&\-fdump\-noaddr  \-fdump\-unnumbered  \-fdump\-unnumbered\-links
  \&\-fdump\-final\-insns\fR[\fB=\fR\fIfile\fR]
--- 705,716 ----
  \&\fB\-d\fR\fIletters\fR  \fB\-dumpspecs  \-dumpmachine  \-dumpversion
  \&\-dumpfullversion  \-fcallgraph\-info\fR[\fB=su,da\fR]
  \&\fB\-fchecking  \-fchecking=\fR\fIn\fR
! \&\fB\-fdbg\-cnt\-list  \-fdbg\-cnt=\fR\fIcounter\-value\-list\fR
  \&\fB\-fdisable\-ipa\-\fR\fIpass_name\fR
  \&\fB\-fdisable\-rtl\-\fR\fIpass_name\fR
! \&\fB\-fdisable\-rtl\-\fR\fIpass\-name\fR\fB=\fR\fIrange\-list\fR
  \&\fB\-fdisable\-tree\-\fR\fIpass_name\fR
! \&\fB\-fdisable\-tree\-\fR\fIpass\-name\fR\fB=\fR\fIrange\-list\fR
  \&\fB\-fdump\-debug  \-fdump\-earlydebug
  \&\-fdump\-noaddr  \-fdump\-unnumbered  \-fdump\-unnumbered\-links
  \&\-fdump\-final\-insns\fR[\fB=\fR\fIfile\fR]
*************** in the following sections.
*** 799,805 ****
  \&\fB\-fdump\-tree\-\fR\fIswitch\fR\fB\-\fR\fIoptions\fR\fB=\fR\fIfilename\fR
  \&\fB\-fcompare\-debug\fR[\fB=\fR\fIopts\fR]  \fB\-fcompare\-debug\-second
  \&\-fenable\-\fR\fIkind\fR\fB\-\fR\fIpass\fR
! \&\fB\-fenable\-\fR\fIkind\fR\fB\-\fR\fIpass\fR\fB=\fR\fIrange-list\fR
  \&\fB\-fira\-verbose=\fR\fIn\fR
  \&\fB\-flto\-report  \-flto\-report\-wpa  \-fmem\-report\-wpa
  \&\-fmem\-report  \-fpre\-ipa\-mem\-report  \-fpost\-ipa\-mem\-report
--- 728,734 ----
  \&\fB\-fdump\-tree\-\fR\fIswitch\fR\fB\-\fR\fIoptions\fR\fB=\fR\fIfilename\fR
  \&\fB\-fcompare\-debug\fR[\fB=\fR\fIopts\fR]  \fB\-fcompare\-debug\-second
  \&\-fenable\-\fR\fIkind\fR\fB\-\fR\fIpass\fR
! \&\fB\-fenable\-\fR\fIkind\fR\fB\-\fR\fIpass\fR\fB=\fR\fIrange\-list\fR
  \&\fB\-fira\-verbose=\fR\fIn\fR
  \&\fB\-flto\-report  \-flto\-report\-wpa  \-fmem\-report\-wpa
  \&\-fmem\-report  \-fpre\-ipa\-mem\-report  \-fpost\-ipa\-mem\-report
*************** in the following sections.
*** 814,820 ****
  \&\-print\-prog\-name=\fR\fIprogram\fR  \fB\-print\-search\-dirs  \-Q
  \&\-print\-sysroot  \-print\-sysroot\-headers\-suffix
  \&\-save\-temps  \-save\-temps=cwd  \-save\-temps=obj  \-time\fR[\fB=\fR\fIfile\fR]
! .IP "\fIMachine-Dependent Options\fR" 4
  .IX Item "Machine-Dependent Options"
  \&\fIAArch64 Options\fR (\fBAArch64 Options\fR)
  \&\fB\-mabi=\fR\fIname\fR  \fB\-mbig\-endian  \-mlittle\-endian
--- 743,749 ----
  \&\-print\-prog\-name=\fR\fIprogram\fR  \fB\-print\-search\-dirs  \-Q
  \&\-print\-sysroot  \-print\-sysroot\-headers\-suffix
  \&\-save\-temps  \-save\-temps=cwd  \-save\-temps=obj  \-time\fR[\fB=\fR\fIfile\fR]
! .IP "\fIMachine\-Dependent Options\fR" 4
  .IX Item "Machine-Dependent Options"
  \&\fIAArch64 Options\fR (\fBAArch64 Options\fR)
  \&\fB\-mabi=\fR\fIname\fR  \fB\-mbig\-endian  \-mlittle\-endian
*************** in the following sections.
*** 828,834 ****
  \&\-mlow\-precision\-recip\-sqrt  \-mlow\-precision\-sqrt  \-mlow\-precision\-div
  \&\-mpc\-relative\-literal\-loads
  \&\-msign\-return\-address=\fR\fIscope\fR
! \&\fB\-mbranch\-protection=\fR\fInone\fR\fB|\fR\fIstandard\fR\fB|\fR\fIpac-ret\fR\fB[+\fR\fIleaf\fR
  \&\fB+\fR\fIb\-key\fR\fB]|\fR\fIbti\fR\fB|\fR\fIgcs\fR
  \&\fB\-mharden\-sls=\fR\fIopts\fR
  \&\fB\-march=\fR\fIname\fR  \fB\-mcpu=\fR\fIname\fR  \fB\-mtune=\fR\fIname\fR
--- 757,763 ----
  \&\-mlow\-precision\-recip\-sqrt  \-mlow\-precision\-sqrt  \-mlow\-precision\-div
  \&\-mpc\-relative\-literal\-loads
  \&\-msign\-return\-address=\fR\fIscope\fR
! \&\fB\-mbranch\-protection=\fR\fInone\fR\fB|\fR\fIstandard\fR\fB|\fR\fIpac\-ret\fR\fB[+\fR\fIleaf\fR
  \&\fB+\fR\fIb\-key\fR\fB]|\fR\fIbti\fR\fB|\fR\fIgcs\fR
  \&\fB\-mharden\-sls=\fR\fIopts\fR
  \&\fB\-march=\fR\fIname\fR  \fB\-mcpu=\fR\fIname\fR  \fB\-mtune=\fR\fIname\fR
*************** in the following sections.
*** 846,855 ****
  \&\-mfp\-mode=\fR\fImode\fR  \fB\-mvect\-double  \-max\-vect\-align=\fR\fInum\fR
  \&\fB\-msplit\-vecmove\-early  \-m1reg\-\fR\fIreg\fR
  .Sp
! \&\fI\s-1AMD GCN\s0 Options\fR (\fB\s-1AMD GCN\s0 Options\fR)
  \&\fB\-march=\fR\fIgpu\fR \fB\-mtune=\fR\fIgpu\fR \fB\-mstack\-size=\fR\fIbytes\fR
  .Sp
! \&\fI\s-1ARC\s0 Options\fR (\fB\s-1ARC\s0 Options\fR)
  \&\fB\-mbarrel\-shifter  \-mjli\-always
  \&\-mcpu=\fR\fIcpu\fR  \fB\-mA6  \-mARC600  \-mA7  \-mARC700
  \&\-mdpfp  \-mdpfp\-compact  \-mdpfp\-fast  \-mno\-dpfp\-lrsr
--- 775,784 ----
  \&\-mfp\-mode=\fR\fImode\fR  \fB\-mvect\-double  \-max\-vect\-align=\fR\fInum\fR
  \&\fB\-msplit\-vecmove\-early  \-m1reg\-\fR\fIreg\fR
  .Sp
! \&\fIAMD GCN Options\fR (\fBAMD GCN Options\fR)
  \&\fB\-march=\fR\fIgpu\fR \fB\-mtune=\fR\fIgpu\fR \fB\-mstack\-size=\fR\fIbytes\fR
  .Sp
! \&\fIARC Options\fR (\fBARC Options\fR)
  \&\fB\-mbarrel\-shifter  \-mjli\-always
  \&\-mcpu=\fR\fIcpu\fR  \fB\-mA6  \-mARC600  \-mA7  \-mARC700
  \&\-mdpfp  \-mdpfp\-compact  \-mdpfp\-fast  \-mno\-dpfp\-lrsr
*************** in the following sections.
*** 869,875 ****
  \&\-munalign\-prob\-threshold=\fR\fIprobability\fR  \fB\-mmpy\-option=\fR\fImulto\fR
  \&\fB\-mdiv\-rem  \-mcode\-density  \-mll64  \-mfpu=\fR\fIfpu\fR  \fB\-mrf16  \-mbranch\-index\fR
  .Sp
! \&\fI\s-1ARM\s0 Options\fR (\fB\s-1ARM\s0 Options\fR)
  \&\fB\-mapcs\-frame  \-mno\-apcs\-frame
  \&\-mabi=\fR\fIname\fR
  \&\fB\-mapcs\-stack\-check  \-mno\-apcs\-stack\-check
--- 798,804 ----
  \&\-munalign\-prob\-threshold=\fR\fIprobability\fR  \fB\-mmpy\-option=\fR\fImulto\fR
  \&\fB\-mdiv\-rem  \-mcode\-density  \-mll64  \-mfpu=\fR\fIfpu\fR  \fB\-mrf16  \-mbranch\-index\fR
  .Sp
! \&\fIARM Options\fR (\fBARM Options\fR)
  \&\fB\-mapcs\-frame  \-mno\-apcs\-frame
  \&\-mabi=\fR\fIname\fR
  \&\fB\-mapcs\-stack\-check  \-mno\-apcs\-stack\-check
*************** in the following sections.
*** 909,918 ****
  \&\-mfix\-cmse\-cve\-2021\-35465
  \&\-mstack\-protector\-guard=\fR\fIguard\fR \fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR
  \&\fB\-mfdpic
! \&\-mbranch\-protection=\fR\fInone\fR\fB|\fR\fIstandard\fR\fB|\fR\fIpac-ret\fR\fB[+\fR\fIleaf\fR\fB]
! [+\fR\fIbti\fR\fB]|\fR\fIbti\fR\fB[+\fR\fIpac-ret\fR\fB[+\fR\fIleaf\fR\fB]]\fR
  .Sp
! \&\fI\s-1AVR\s0 Options\fR (\fB\s-1AVR\s0 Options\fR)
  \&\fB\-mmcu=\fR\fImcu\fR  \fB\-mabsdata  \-maccumulate\-args  \-mcvt
  \&\-mbranch\-cost=\fR\fIcost\fR  \fB\-mfuse\-add=\fR\fIlevel\fR  \fB\-mfuse\-move=\fR\fIlevel\fR
  \&\fB\-mfuse\-move2  \-mcall\-prologues  \-mgas\-isr\-prologues  \-mint8  \-mflmap
--- 838,847 ----
  \&\-mfix\-cmse\-cve\-2021\-35465
  \&\-mstack\-protector\-guard=\fR\fIguard\fR \fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR
  \&\fB\-mfdpic
! \&\-mbranch\-protection=\fR\fInone\fR\fB|\fR\fIstandard\fR\fB|\fR\fIpac\-ret\fR\fB[+\fR\fIleaf\fR\fB]
! [+\fR\fIbti\fR\fB]|\fR\fIbti\fR\fB[+\fR\fIpac\-ret\fR\fB[+\fR\fIleaf\fR\fB]]\fR
  .Sp
! \&\fIAVR Options\fR (\fBAVR Options\fR)
  \&\fB\-mmcu=\fR\fImcu\fR  \fB\-mabsdata  \-maccumulate\-args  \-mcvt
  \&\-mbranch\-cost=\fR\fIcost\fR  \fB\-mfuse\-add=\fR\fIlevel\fR  \fB\-mfuse\-move=\fR\fIlevel\fR
  \&\fB\-mfuse\-move2  \-mcall\-prologues  \-mgas\-isr\-prologues  \-mint8  \-mflmap
*************** in the following sections.
*** 936,944 ****
  .Sp
  \&\fIC6X Options\fR (\fBC6X Options\fR)
  \&\fB\-mbig\-endian  \-mlittle\-endian  \-march=\fR\fIcpu\fR
! \&\fB\-msim  \-msdata=\fR\fIsdata-type\fR
  .Sp
! \&\fI\s-1CRIS\s0 Options\fR (\fB\s-1CRIS\s0 Options\fR)
  \&\fB\-mcpu=\fR\fIcpu\fR  \fB\-march=\fR\fIcpu\fR
  \&\fB\-mtune=\fR\fIcpu\fR \fB\-mmax\-stack\-frame=\fR\fIn\fR
  \&\fB\-metrax4  \-metrax100  \-mpdebug  \-mcc\-init  \-mno\-side\-effects
--- 865,873 ----
  .Sp
  \&\fIC6X Options\fR (\fBC6X Options\fR)
  \&\fB\-mbig\-endian  \-mlittle\-endian  \-march=\fR\fIcpu\fR
! \&\fB\-msim  \-msdata=\fR\fIsdata\-type\fR
  .Sp
! \&\fICRIS Options\fR (\fBCRIS Options\fR)
  \&\fB\-mcpu=\fR\fIcpu\fR  \fB\-march=\fR\fIcpu\fR
  \&\fB\-mtune=\fR\fIcpu\fR \fB\-mmax\-stack\-frame=\fR\fIn\fR
  \&\fB\-metrax4  \-metrax100  \-mpdebug  \-mcc\-init  \-mno\-side\-effects
*************** in the following sections.
*** 990,1001 ****
  \&\-whatsloaded  \-F  \-gused  \-gfull  \-mmacosx\-version\-min=\fR\fIversion\fR
  \&\fB\-mkernel  \-mone\-byte\-bool\fR
  .Sp
! \&\fI\s-1DEC\s0 Alpha Options\fR (\fB\s-1DEC\s0 Alpha Options\fR)
  \&\fB\-mno\-fp\-regs  \-msoft\-float
  \&\-mieee  \-mieee\-with\-inexact  \-mieee\-conformant
  \&\-mfp\-trap\-mode=\fR\fImode\fR  \fB\-mfp\-rounding\-mode=\fR\fImode\fR
  \&\fB\-mtrap\-precision=\fR\fImode\fR  \fB\-mbuild\-constants
! \&\-mcpu=\fR\fIcpu-type\fR  \fB\-mtune=\fR\fIcpu-type\fR
  \&\fB\-mbwx  \-mmax  \-mfix  \-mcix
  \&\-msafe\-bwa  \-msafe\-partial
  \&\-mfloat\-vax  \-mfloat\-ieee
--- 919,930 ----
  \&\-whatsloaded  \-F  \-gused  \-gfull  \-mmacosx\-version\-min=\fR\fIversion\fR
  \&\fB\-mkernel  \-mone\-byte\-bool\fR
  .Sp
! \&\fIDEC Alpha Options\fR (\fBDEC Alpha Options\fR)
  \&\fB\-mno\-fp\-regs  \-msoft\-float
  \&\-mieee  \-mieee\-with\-inexact  \-mieee\-conformant
  \&\-mfp\-trap\-mode=\fR\fImode\fR  \fB\-mfp\-rounding\-mode=\fR\fImode\fR
  \&\fB\-mtrap\-precision=\fR\fImode\fR  \fB\-mbuild\-constants
! \&\-mcpu=\fR\fIcpu\-type\fR  \fB\-mtune=\fR\fIcpu\-type\fR
  \&\fB\-mbwx  \-mmax  \-mfix  \-mcix
  \&\-msafe\-bwa  \-msafe\-partial
  \&\-mfloat\-vax  \-mfloat\-ieee
*************** in the following sections.
*** 1009,1021 ****
  \&\-mjmp32 \-malu32 \-mv3\-atomics \-mbswap \-msdiv \-msmov \-mcpu=\fR\fIversion\fR
  \&\fB\-masm=\fR\fIdialect\fR \fB\-minline\-memops\-threshold=\fR\fIbytes\fR
  .Sp
! \&\fI\s-1FR30\s0 Options\fR (\fB\s-1FR30\s0 Options\fR)
  \&\fB\-msmall\-model  \-mno\-lsim\fR
  .Sp
! \&\fI\s-1FT32\s0 Options\fR (\fB\s-1FT32\s0 Options\fR)
  \&\fB\-msim  \-mlra  \-mnodiv  \-mft32b  \-mcompress  \-mnopm\fR
  .Sp
! \&\fI\s-1FRV\s0 Options\fR (\fB\s-1FRV\s0 Options\fR)
  \&\fB\-mgpr\-32  \-mgpr\-64  \-mfpr\-32  \-mfpr\-64
  \&\-mhard\-float  \-msoft\-float
  \&\-malloc\-cc  \-mfixed\-cc  \-mdword  \-mno\-dword
--- 938,950 ----
  \&\-mjmp32 \-malu32 \-mv3\-atomics \-mbswap \-msdiv \-msmov \-mcpu=\fR\fIversion\fR
  \&\fB\-masm=\fR\fIdialect\fR \fB\-minline\-memops\-threshold=\fR\fIbytes\fR
  .Sp
! \&\fIFR30 Options\fR (\fBFR30 Options\fR)
  \&\fB\-msmall\-model  \-mno\-lsim\fR
  .Sp
! \&\fIFT32 Options\fR (\fBFT32 Options\fR)
  \&\fB\-msim  \-mlra  \-mnodiv  \-mft32b  \-mcompress  \-mnopm\fR
  .Sp
! \&\fIFRV Options\fR (\fBFRV Options\fR)
  \&\fB\-mgpr\-32  \-mgpr\-64  \-mfpr\-32  \-mfpr\-64
  \&\-mhard\-float  \-msoft\-float
  \&\-malloc\-cc  \-mfixed\-cc  \-mdword  \-mno\-dword
*************** in the following sections.
*** 1040,1051 ****
  \&\fIH8/300 Options\fR (\fBH8/300 Options\fR)
  \&\fB\-mrelax  \-mh  \-ms  \-mn  \-mexr  \-mno\-exr  \-mint32  \-malign\-300\fR
  .Sp
! \&\fI\s-1HPPA\s0 Options\fR (\fB\s-1HPPA\s0 Options\fR)
! \&\fB\-march=\fR\fIarchitecture-type\fR
  \&\fB\-matomic\-libcalls  \-mbig\-switch
  \&\-mcaller\-copies  \-mdisable\-fpregs  \-mdisable\-indexing
  \&\-mordered  \-mfast\-indirect\-calls  \-mgas  \-mgnu\-ld   \-mhp\-ld
! \&\-mfixed\-range=\fR\fIregister-range\fR
  \&\fB\-mcoherent\-ldcw \-mjump\-in\-delay  \-mlinker\-opt  \-mlong\-calls
  \&\-mlong\-load\-store  \-mno\-atomic\-libcalls  \-mno\-disable\-fpregs
  \&\-mno\-disable\-indexing  \-mno\-fast\-indirect\-calls  \-mno\-gas
--- 969,980 ----
  \&\fIH8/300 Options\fR (\fBH8/300 Options\fR)
  \&\fB\-mrelax  \-mh  \-ms  \-mn  \-mexr  \-mno\-exr  \-mint32  \-malign\-300\fR
  .Sp
! \&\fIHPPA Options\fR (\fBHPPA Options\fR)
! \&\fB\-march=\fR\fIarchitecture\-type\fR
  \&\fB\-matomic\-libcalls  \-mbig\-switch
  \&\-mcaller\-copies  \-mdisable\-fpregs  \-mdisable\-indexing
  \&\-mordered  \-mfast\-indirect\-calls  \-mgas  \-mgnu\-ld   \-mhp\-ld
! \&\-mfixed\-range=\fR\fIregister\-range\fR
  \&\fB\-mcoherent\-ldcw \-mjump\-in\-delay  \-mlinker\-opt  \-mlong\-calls
  \&\-mlong\-load\-store  \-mno\-atomic\-libcalls  \-mno\-disable\-fpregs
  \&\-mno\-disable\-indexing  \-mno\-fast\-indirect\-calls  \-mno\-gas
*************** in the following sections.
*** 1053,1062 ****
  \&\-mno\-portable\-runtime  \-mno\-soft\-float
  \&\-mno\-space\-regs  \-msoft\-float  \-mpa\-risc\-1\-0
  \&\-mpa\-risc\-1\-1  \-mpa\-risc\-2\-0  \-mportable\-runtime
! \&\-mschedule=\fR\fIcpu-type\fR  \fB\-mspace\-regs  \-msoft\-mult  \-msio  \-mwsio
! \&\-munix=\fR\fIunix-std\fR  \fB\-nolibdld  \-static  \-threads\fR
  .Sp
! \&\fI\s-1IA\-64\s0 Options\fR (\fB\s-1IA\-64\s0 Options\fR)
  \&\fB\-mbig\-endian  \-mlittle\-endian  \-mgnu\-as  \-mgnu\-ld  \-mno\-pic
  \&\-mvolatile\-asm\-stop  \-mregister\-names  \-msdata  \-mno\-sdata
  \&\-mconstant\-gp  \-mauto\-pic  \-mfused\-madd
--- 982,991 ----
  \&\-mno\-portable\-runtime  \-mno\-soft\-float
  \&\-mno\-space\-regs  \-msoft\-float  \-mpa\-risc\-1\-0
  \&\-mpa\-risc\-1\-1  \-mpa\-risc\-2\-0  \-mportable\-runtime
! \&\-mschedule=\fR\fIcpu\-type\fR  \fB\-mspace\-regs  \-msoft\-mult  \-msio  \-mwsio
! \&\-munix=\fR\fIunix\-std\fR  \fB\-nolibdld  \-static  \-threads\fR
  .Sp
! \&\fIIA\-64 Options\fR (\fBIA\-64 Options\fR)
  \&\fB\-mbig\-endian  \-mlittle\-endian  \-mgnu\-as  \-mgnu\-ld  \-mno\-pic
  \&\-mvolatile\-asm\-stop  \-mregister\-names  \-msdata  \-mno\-sdata
  \&\-mconstant\-gp  \-mauto\-pic  \-mfused\-madd
*************** in the following sections.
*** 1069,1091 ****
  \&\-minline\-sqrt\-min\-latency  \-minline\-sqrt\-max\-throughput
  \&\-mno\-inline\-sqrt
  \&\-mdwarf2\-asm  \-mearly\-stop\-bits
! \&\-mfixed\-range=\fR\fIregister-range\fR  \fB\-mtls\-size=\fR\fItls-size\fR
! \&\fB\-mtune=\fR\fIcpu-type\fR  \fB\-milp32  \-mlp64
  \&\-msched\-br\-data\-spec  \-msched\-ar\-data\-spec  \-msched\-control\-spec
  \&\-msched\-br\-in\-data\-spec  \-msched\-ar\-in\-data\-spec  \-msched\-in\-control\-spec
  \&\-msched\-spec\-ldc  \-msched\-spec\-control\-ldc
  \&\-msched\-prefer\-non\-data\-spec\-insns  \-msched\-prefer\-non\-control\-spec\-insns
  \&\-msched\-stop\-bits\-after\-every\-cycle  \-msched\-count\-spec\-in\-critical\-path
  \&\-msel\-sched\-dont\-check\-control\-spec  \-msched\-fp\-mem\-deps\-zero\-cost
! \&\-msched\-max\-memory\-insns\-hard\-limit  \-msched\-max\-memory\-insns=\fR\fImax-insns\fR
  .Sp
! \&\fI\s-1LM32\s0 Options\fR (\fB\s-1LM32\s0 Options\fR)
  \&\fB\-mbarrel\-shift\-enabled  \-mdivide\-enabled  \-mmultiply\-enabled
  \&\-msign\-extend\-enabled  \-muser\-enabled\fR
  .Sp
  \&\fILoongArch Options\fR (\fBLoongArch Options\fR)
! \&\fB\-march=\fR\fIarch-type\fR  \fB\-mtune=\fR\fItune-type\fR \fB\-mabi=\fR\fIbase-abi-type\fR
! \&\fB\-mfpu=\fR\fIfpu-type\fR \fB\-msimd=\fR\fIsimd-type\fR
  \&\fB\-msoft\-float \-msingle\-float \-mdouble\-float \-mlsx \-mno\-lsx \-mlasx \-mno\-lasx
  \&\-mbranch\-cost=\fR\fIn\fR \fB\-maddr\-reg\-reg\-cost=\fR\fIn\fR  \fB\-mcheck\-zero\-division
  \&\-mno\-check\-zero\-division
--- 998,1020 ----
  \&\-minline\-sqrt\-min\-latency  \-minline\-sqrt\-max\-throughput
  \&\-mno\-inline\-sqrt
  \&\-mdwarf2\-asm  \-mearly\-stop\-bits
! \&\-mfixed\-range=\fR\fIregister\-range\fR  \fB\-mtls\-size=\fR\fItls\-size\fR
! \&\fB\-mtune=\fR\fIcpu\-type\fR  \fB\-milp32  \-mlp64
  \&\-msched\-br\-data\-spec  \-msched\-ar\-data\-spec  \-msched\-control\-spec
  \&\-msched\-br\-in\-data\-spec  \-msched\-ar\-in\-data\-spec  \-msched\-in\-control\-spec
  \&\-msched\-spec\-ldc  \-msched\-spec\-control\-ldc
  \&\-msched\-prefer\-non\-data\-spec\-insns  \-msched\-prefer\-non\-control\-spec\-insns
  \&\-msched\-stop\-bits\-after\-every\-cycle  \-msched\-count\-spec\-in\-critical\-path
  \&\-msel\-sched\-dont\-check\-control\-spec  \-msched\-fp\-mem\-deps\-zero\-cost
! \&\-msched\-max\-memory\-insns\-hard\-limit  \-msched\-max\-memory\-insns=\fR\fImax\-insns\fR
  .Sp
! \&\fILM32 Options\fR (\fBLM32 Options\fR)
  \&\fB\-mbarrel\-shift\-enabled  \-mdivide\-enabled  \-mmultiply\-enabled
  \&\-msign\-extend\-enabled  \-muser\-enabled\fR
  .Sp
  \&\fILoongArch Options\fR (\fBLoongArch Options\fR)
! \&\fB\-march=\fR\fIarch\-type\fR  \fB\-mtune=\fR\fItune\-type\fR \fB\-mabi=\fR\fIbase\-abi\-type\fR
! \&\fB\-mfpu=\fR\fIfpu\-type\fR \fB\-msimd=\fR\fIsimd\-type\fR
  \&\fB\-msoft\-float \-msingle\-float \-mdouble\-float \-mlsx \-mno\-lsx \-mlasx \-mno\-lasx
  \&\-mbranch\-cost=\fR\fIn\fR \fB\-maddr\-reg\-reg\-cost=\fR\fIn\fR  \fB\-mcheck\-zero\-division
  \&\-mno\-check\-zero\-division
*************** in the following sections.
*** 1095,1101 ****
  \&\fB\-mmax\-inline\-memcpy\-size=\fR\fIn\fR
  \&\fB\-mexplicit\-relocs=\fR\fIstyle\fR \fB\-mexplicit\-relocs \-mno\-explicit\-relocs
  \&\-mdirect\-extern\-access \-mno\-direct\-extern\-access
! \&\-mcmodel=\fR\fIcode-model\fR \fB\-mrelax \-mpass\-mrelax\-to\-as
  \&\-mrecip  \-mrecip=\fR\fIopt\fR \fB\-mfrecipe \-mno\-frecipe \-mdiv32 \-mno\-div32
  \&\-mlam\-bh \-mno\-lam\-bh \-mlamcas \-mno\-lamcas \-mld\-seq\-sa \-mno\-ld\-seq\-sa
  \&\-mtls\-dialect=\fR\fIopt\fR \fB\-mannotate\-tablejump \-mno\-annotate\-tablejump\fR
--- 1024,1030 ----
  \&\fB\-mmax\-inline\-memcpy\-size=\fR\fIn\fR
  \&\fB\-mexplicit\-relocs=\fR\fIstyle\fR \fB\-mexplicit\-relocs \-mno\-explicit\-relocs
  \&\-mdirect\-extern\-access \-mno\-direct\-extern\-access
! \&\-mcmodel=\fR\fIcode\-model\fR \fB\-mrelax \-mpass\-mrelax\-to\-as
  \&\-mrecip  \-mrecip=\fR\fIopt\fR \fB\-mfrecipe \-mno\-frecipe \-mdiv32 \-mno\-div32
  \&\-mlam\-bh \-mno\-lam\-bh \-mlamcas \-mno\-lamcas \-mld\-seq\-sa \-mno\-ld\-seq\-sa
  \&\-mtls\-dialect=\fR\fIopt\fR \fB\-mannotate\-tablejump \-mno\-annotate\-tablejump\fR
*************** in the following sections.
*** 1109,1116 ****
  \&\-malign\-loops  \-mno\-align\-loops
  \&\-missue\-rate=\fR\fInumber\fR
  \&\fB\-mbranch\-cost=\fR\fInumber\fR
! \&\fB\-mmodel=\fR\fIcode-size-model-type\fR
! \&\fB\-msdata=\fR\fIsdata-type\fR
  \&\fB\-mno\-flush\-func  \-mflush\-func=\fR\fIname\fR
  \&\fB\-mno\-flush\-trap  \-mflush\-trap=\fR\fInumber\fR
  \&\fB\-G\fR \fInum\fR
--- 1038,1045 ----
  \&\-malign\-loops  \-mno\-align\-loops
  \&\-missue\-rate=\fR\fInumber\fR
  \&\fB\-mbranch\-cost=\fR\fInumber\fR
! \&\fB\-mmodel=\fR\fIcode\-size\-model\-type\fR
! \&\fB\-msdata=\fR\fIsdata\-type\fR
  \&\fB\-mno\-flush\-func  \-mflush\-func=\fR\fIname\fR
  \&\fB\-mno\-flush\-trap  \-mflush\-trap=\fR\fInumber\fR
  \&\fB\-G\fR \fInum\fR
*************** in the following sections.
*** 1138,1147 ****
  \&\fB\-mmemcpy  \-mxl\-soft\-mul  \-mxl\-soft\-div  \-mxl\-barrel\-shift
  \&\-mxl\-pattern\-compare  \-mxl\-stack\-check  \-mxl\-gp\-opt  \-mno\-clearbss
  \&\-mxl\-multiply\-high  \-mxl\-float\-convert  \-mxl\-float\-sqrt
! \&\-mbig\-endian  \-mlittle\-endian  \-mxl\-reorder  \-mxl\-mode\-\fR\fIapp-model\fR
  \&\fB\-mpic\-data\-is\-text\-relative\fR
  .Sp
! \&\fI\s-1MIPS\s0 Options\fR (\fB\s-1MIPS\s0 Options\fR)
  \&\fB\-EL  \-EB  \-march=\fR\fIarch\fR  \fB\-mtune=\fR\fIarch\fR
  \&\fB\-mips1  \-mips2  \-mips3  \-mips4  \-mips32  \-mips32r2  \-mips32r3  \-mips32r5
  \&\-mips32r6  \-mips64  \-mips64r2  \-mips64r3  \-mips64r5  \-mips64r6
--- 1067,1076 ----
  \&\fB\-mmemcpy  \-mxl\-soft\-mul  \-mxl\-soft\-div  \-mxl\-barrel\-shift
  \&\-mxl\-pattern\-compare  \-mxl\-stack\-check  \-mxl\-gp\-opt  \-mno\-clearbss
  \&\-mxl\-multiply\-high  \-mxl\-float\-convert  \-mxl\-float\-sqrt
! \&\-mbig\-endian  \-mlittle\-endian  \-mxl\-reorder  \-mxl\-mode\-\fR\fIapp\-model\fR
  \&\fB\-mpic\-data\-is\-text\-relative\fR
  .Sp
! \&\fIMIPS Options\fR (\fBMIPS Options\fR)
  \&\fB\-EL  \-EB  \-march=\fR\fIarch\fR  \fB\-mtune=\fR\fIarch\fR
  \&\fB\-mips1  \-mips2  \-mips3  \-mips4  \-mips32  \-mips32r2  \-mips32r3  \-mips32r5
  \&\-mips32r6  \-mips64  \-mips64r2  \-mips64r3  \-mips64r5  \-mips64r6
*************** in the following sections.
*** 1166,1172 ****
  \&\-mloongson\-mmi  \-mno\-loongson\-mmi
  \&\-mloongson\-ext  \-mno\-loongson\-ext
  \&\-mloongson\-ext2  \-mno\-loongson\-ext2
! \&\-mfpu=\fR\fIfpu-type\fR
  \&\fB\-msmartmips  \-mno\-smartmips
  \&\-mpaired\-single  \-mno\-paired\-single  \-mdmx  \-mno\-mdmx
  \&\-mips3d  \-mno\-mips3d  \-mmt  \-mno\-mt  \-mllsc  \-mno\-llsc
--- 1095,1101 ----
  \&\-mloongson\-mmi  \-mno\-loongson\-mmi
  \&\-mloongson\-ext  \-mno\-loongson\-ext
  \&\-mloongson\-ext2  \-mno\-loongson\-ext2
! \&\-mfpu=\fR\fIfpu\-type\fR
  \&\fB\-msmartmips  \-mno\-smartmips
  \&\-mpaired\-single  \-mno\-paired\-single  \-mdmx  \-mno\-mdmx
  \&\-mips3d  \-mno\-mips3d  \-mmt  \-mno\-mt  \-mllsc  \-mno\-llsc
*************** in the following sections.
*** 1201,1230 ****
  \&\-mrelax\-pic\-calls  \-mno\-relax\-pic\-calls  \-mmcount\-ra\-address
  \&\-mframe\-header\-opt  \-mno\-frame\-header\-opt\fR
  .Sp
! \&\fI\s-1MMIX\s0 Options\fR (\fB\s-1MMIX\s0 Options\fR)
  \&\fB\-mlibfuncs  \-mno\-libfuncs  \-mepsilon  \-mno\-epsilon  \-mabi=gnu
  \&\-mabi=mmixware  \-mzero\-extend  \-mknuthdiv  \-mtoplevel\-symbols
  \&\-melf  \-mbranch\-predict  \-mno\-branch\-predict  \-mbase\-addresses
  \&\-mno\-base\-addresses  \-msingle\-exit  \-mno\-single\-exit\fR
  .Sp
! \&\fI\s-1MN10300\s0 Options\fR (\fB\s-1MN10300\s0 Options\fR)
  \&\fB\-mmult\-bug  \-mno\-mult\-bug
  \&\-mno\-am33  \-mam33  \-mam33\-2  \-mam34
! \&\-mtune=\fR\fIcpu-type\fR
  \&\fB\-mreturn\-pointer\-on\-d0
  \&\-mno\-crt0  \-mrelax  \-mliw  \-msetlb\fR
  .Sp
  \&\fIMoxie Options\fR (\fBMoxie Options\fR)
  \&\fB\-meb  \-mel  \-mmul.x  \-mno\-crt0\fR
  .Sp
! \&\fI\s-1MSP430\s0 Options\fR (\fB\s-1MSP430\s0 Options\fR)
  \&\fB\-msim  \-masm\-hex  \-mmcu=  \-mcpu=  \-mlarge  \-msmall  \-mrelax
  \&\-mwarn\-mcu
  \&\-mcode\-region=  \-mdata\-region=
  \&\-msilicon\-errata=  \-msilicon\-errata\-warn=
  \&\-mhwmult=  \-minrt  \-mtiny\-printf  \-mmax\-inline\-shift=\fR
  .Sp
! \&\fI\s-1NDS32\s0 Options\fR (\fB\s-1NDS32\s0 Options\fR)
  \&\fB\-mbig\-endian  \-mlittle\-endian
  \&\-mreduced\-regs  \-mfull\-regs
  \&\-mcmov  \-mno\-cmov
--- 1130,1159 ----
  \&\-mrelax\-pic\-calls  \-mno\-relax\-pic\-calls  \-mmcount\-ra\-address
  \&\-mframe\-header\-opt  \-mno\-frame\-header\-opt\fR
  .Sp
! \&\fIMMIX Options\fR (\fBMMIX Options\fR)
  \&\fB\-mlibfuncs  \-mno\-libfuncs  \-mepsilon  \-mno\-epsilon  \-mabi=gnu
  \&\-mabi=mmixware  \-mzero\-extend  \-mknuthdiv  \-mtoplevel\-symbols
  \&\-melf  \-mbranch\-predict  \-mno\-branch\-predict  \-mbase\-addresses
  \&\-mno\-base\-addresses  \-msingle\-exit  \-mno\-single\-exit\fR
  .Sp
! \&\fIMN10300 Options\fR (\fBMN10300 Options\fR)
  \&\fB\-mmult\-bug  \-mno\-mult\-bug
  \&\-mno\-am33  \-mam33  \-mam33\-2  \-mam34
! \&\-mtune=\fR\fIcpu\-type\fR
  \&\fB\-mreturn\-pointer\-on\-d0
  \&\-mno\-crt0  \-mrelax  \-mliw  \-msetlb\fR
  .Sp
  \&\fIMoxie Options\fR (\fBMoxie Options\fR)
  \&\fB\-meb  \-mel  \-mmul.x  \-mno\-crt0\fR
  .Sp
! \&\fIMSP430 Options\fR (\fBMSP430 Options\fR)
  \&\fB\-msim  \-masm\-hex  \-mmcu=  \-mcpu=  \-mlarge  \-msmall  \-mrelax
  \&\-mwarn\-mcu
  \&\-mcode\-region=  \-mdata\-region=
  \&\-msilicon\-errata=  \-msilicon\-errata\-warn=
  \&\-mhwmult=  \-minrt  \-mtiny\-printf  \-mmax\-inline\-shift=\fR
  .Sp
! \&\fINDS32 Options\fR (\fBNDS32 Options\fR)
  \&\fB\-mbig\-endian  \-mlittle\-endian
  \&\-mreduced\-regs  \-mfull\-regs
  \&\-mcmov  \-mno\-cmov
*************** in the following sections.
*** 1236,1245 ****
  \&\-misr\-vector\-size=\fR\fInum\fR
  \&\fB\-mcache\-block\-size=\fR\fInum\fR
  \&\fB\-march=\fR\fIarch\fR
! \&\fB\-mcmodel=\fR\fIcode-model\fR
  \&\fB\-mctor\-dtor  \-mrelax\fR
  .Sp
! \&\fINvidia \s-1PTX\s0 Options\fR (\fBNvidia \s-1PTX\s0 Options\fR)
  \&\fB\-m64  \-mmainkernel  \-moptimize\fR
  .Sp
  \&\fIOpenRISC Options\fR (\fBOpenRISC Options\fR)
--- 1165,1174 ----
  \&\-misr\-vector\-size=\fR\fInum\fR
  \&\fB\-mcache\-block\-size=\fR\fInum\fR
  \&\fB\-march=\fR\fIarch\fR
! \&\fB\-mcmodel=\fR\fIcode\-model\fR
  \&\fB\-mctor\-dtor  \-mrelax\fR
  .Sp
! \&\fINvidia PTX Options\fR (\fBNvidia PTX Options\fR)
  \&\fB\-m64  \-mmainkernel  \-moptimize\fR
  .Sp
  \&\fIOpenRISC Options\fR (\fBOpenRISC Options\fR)
*************** in the following sections.
*** 1247,1276 ****
  \&\-msoft\-mul  \-msoft\-div
  \&\-msoft\-float  \-mhard\-float  \-mdouble\-float \-munordered\-float
  \&\-mcmov  \-mror  \-mrori  \-msext  \-msfimm  \-mshftimm
! \&\-mcmodel=\fR\fIcode-model\fR
  .Sp
! \&\fI\s-1PDP\-11\s0 Options\fR (\fB\s-1PDP\-11\s0 Options\fR)
  \&\fB\-mfpu  \-msoft\-float  \-mac0  \-mno\-ac0  \-m40  \-m45  \-m10
  \&\-mint32  \-mno\-int16  \-mint16  \-mno\-int32
  \&\-msplit  \-munix\-asm  \-mdec\-asm  \-mgnu\-asm  \-mlra\fR
  .Sp
  \&\fIPowerPC Options\fR
! See \s-1RS/6000\s0 and PowerPC Options.
  .Sp
! \&\fI\s-1PRU\s0 Options\fR (\fB\s-1PRU\s0 Options\fR)
  \&\fB\-mmcu=\fR\fImcu\fR  \fB\-minrt  \-mno\-relax  \-mloop
  \&\-mabi=\fR\fIvariant\fR
  .Sp
! \&\fIRISC-V Options\fR (\fBRISC-V Options\fR)
  \&\fB\-mbranch\-cost=\fR\fIN\-instruction\fR
  \&\fB\-mplt  \-mno\-plt
! \&\-mabi=\fR\fIABI-string\fR
  \&\fB\-mfdiv  \-mno\-fdiv
  \&\-mfence\-tso  \-mno\-fence\-tso
  \&\-mdiv  \-mno\-div
! \&\-misa\-spec=\fR\fIISA-spec-string\fR
! \&\fB\-march=\fR\fIISA-string\fR
! \&\fB\-mtune=\fR\fIprocessor-string\fR
  \&\fB\-mpreferred\-stack\-boundary=\fR\fInum\fR
  \&\fB\-msmall\-data\-limit=\fR\fIN\-bytes\fR
  \&\fB\-msave\-restore  \-mno\-save\-restore
--- 1176,1205 ----
  \&\-msoft\-mul  \-msoft\-div
  \&\-msoft\-float  \-mhard\-float  \-mdouble\-float \-munordered\-float
  \&\-mcmov  \-mror  \-mrori  \-msext  \-msfimm  \-mshftimm
! \&\-mcmodel=\fR\fIcode\-model\fR
  .Sp
! \&\fIPDP\-11 Options\fR (\fBPDP\-11 Options\fR)
  \&\fB\-mfpu  \-msoft\-float  \-mac0  \-mno\-ac0  \-m40  \-m45  \-m10
  \&\-mint32  \-mno\-int16  \-mint16  \-mno\-int32
  \&\-msplit  \-munix\-asm  \-mdec\-asm  \-mgnu\-asm  \-mlra\fR
  .Sp
  \&\fIPowerPC Options\fR
! See RS/6000 and PowerPC Options.
  .Sp
! \&\fIPRU Options\fR (\fBPRU Options\fR)
  \&\fB\-mmcu=\fR\fImcu\fR  \fB\-minrt  \-mno\-relax  \-mloop
  \&\-mabi=\fR\fIvariant\fR
  .Sp
! \&\fIRISC\-V Options\fR (\fBRISC\-V Options\fR)
  \&\fB\-mbranch\-cost=\fR\fIN\-instruction\fR
  \&\fB\-mplt  \-mno\-plt
! \&\-mabi=\fR\fIABI\-string\fR
  \&\fB\-mfdiv  \-mno\-fdiv
  \&\-mfence\-tso  \-mno\-fence\-tso
  \&\-mdiv  \-mno\-div
! \&\-misa\-spec=\fR\fIISA\-spec\-string\fR
! \&\fB\-march=\fR\fIISA\-string\fR
! \&\fB\-mtune=\fR\fIprocessor\-string\fR
  \&\fB\-mpreferred\-stack\-boundary=\fR\fInum\fR
  \&\fB\-msmall\-data\-limit=\fR\fIN\-bytes\fR
  \&\fB\-msave\-restore  \-mno\-save\-restore
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 1292,1306 ****
  \&\-minline\-strncmp  \-mno\-inline\-strncmp
  \&\-mtls\-dialect=desc  \-mtls\-dialect=trad\fR
  .Sp
! \&\fI\s-1RL78\s0 Options\fR (\fB\s-1RL78\s0 Options\fR)
  \&\fB\-msim  \-mmul=none  \-mmul=g13  \-mmul=g14  \-mallregs
  \&\-mcpu=g10  \-mcpu=g13  \-mcpu=g14  \-mg10  \-mg13  \-mg14
  \&\-m64bit\-doubles  \-m32bit\-doubles  \-msave\-mduc\-in\-interrupts\fR
  .Sp
! \&\fI\s-1RS/6000\s0 and PowerPC Options\fR (\fB\s-1RS/6000\s0 and PowerPC Options\fR)
! \&\fB\-mcpu=\fR\fIcpu-type\fR
! \&\fB\-mtune=\fR\fIcpu-type\fR
! \&\fB\-mcmodel=\fR\fIcode-model\fR
  \&\fB\-mpowerpc64
  \&\-maltivec  \-mno\-altivec
  \&\-mpowerpc\-gpopt  \-mno\-powerpc\-gpopt
--- 1221,1235 ----
  \&\-minline\-strncmp  \-mno\-inline\-strncmp
  \&\-mtls\-dialect=desc  \-mtls\-dialect=trad\fR
  .Sp
! \&\fIRL78 Options\fR (\fBRL78 Options\fR)
  \&\fB\-msim  \-mmul=none  \-mmul=g13  \-mmul=g14  \-mallregs
  \&\-mcpu=g10  \-mcpu=g13  \-mcpu=g14  \-mg10  \-mg13  \-mg14
  \&\-m64bit\-doubles  \-m32bit\-doubles  \-msave\-mduc\-in\-interrupts\fR
  .Sp
! \&\fIRS/6000 and PowerPC Options\fR (\fBRS/6000 and PowerPC Options\fR)
! \&\fB\-mcpu=\fR\fIcpu\-type\fR
! \&\fB\-mtune=\fR\fIcpu\-type\fR
! \&\fB\-mcmodel=\fR\fIcode\-model\fR
  \&\fB\-mpowerpc64
  \&\-maltivec  \-mno\-altivec
  \&\-mpowerpc\-gpopt  \-mno\-powerpc\-gpopt
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 1327,1333 ****
  \&\-mcall\-sysv  \-mcall\-sysv\-eabi  \-mcall\-sysv\-noeabi
  \&\-mtraceback=\fR\fItraceback_type\fR
  \&\fB\-maix\-struct\-return  \-msvr4\-struct\-return
! \&\-mabi=\fR\fIabi-type\fR  \fB\-msecure\-plt  \-mbss\-plt
  \&\-msplit\-patch\-nops
  \&\-mlongcall  \-mno\-longcall  \-mpltseq  \-mno\-pltseq
  \&\-mblock\-move\-inline\-limit=\fR\fInum\fR
--- 1256,1262 ----
  \&\-mcall\-sysv  \-mcall\-sysv\-eabi  \-mcall\-sysv\-noeabi
  \&\-mtraceback=\fR\fItraceback_type\fR
  \&\fB\-maix\-struct\-return  \-msvr4\-struct\-return
! \&\-mabi=\fR\fIabi\-type\fR  \fB\-msecure\-plt  \-mbss\-plt
  \&\-msplit\-patch\-nops
  \&\-mlongcall  \-mno\-longcall  \-mpltseq  \-mno\-pltseq
  \&\-mblock\-move\-inline\-limit=\fR\fInum\fR
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 1359,1365 ****
  \&\-mpcrel \-mno\-pcrel \-mmma \-mno\-mmma \-mrop\-protect \-mno\-rop\-protect
  \&\-mprivileged \-mno\-privileged\fR
  .Sp
! \&\fI\s-1RX\s0 Options\fR (\fB\s-1RX\s0 Options\fR)
  \&\fB\-m64bit\-doubles  \-m32bit\-doubles  \-fpu  \-nofpu
  \&\-mcpu=
  \&\-mbig\-endian\-data  \-mlittle\-endian\-data
--- 1288,1294 ----
  \&\-mpcrel \-mno\-pcrel \-mmma \-mno\-mmma \-mrop\-protect \-mno\-rop\-protect
  \&\-mprivileged \-mno\-privileged\fR
  .Sp
! \&\fIRX Options\fR (\fBRX Options\fR)
  \&\fB\-m64bit\-doubles  \-m32bit\-doubles  \-fpu  \-nofpu
  \&\-mcpu=
  \&\-mbig\-endian\-data  \-mlittle\-endian\-data
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 1376,1382 ****
  \&\-msave\-acc\-in\-interrupts\fR
  .Sp
  \&\fIS/390 and zSeries Options\fR (\fBS/390 and zSeries Options\fR)
! \&\fB\-mtune=\fR\fIcpu-type\fR  \fB\-march=\fR\fIcpu-type\fR
  \&\fB\-mhard\-float  \-msoft\-float  \-mhard\-dfp  \-mno\-hard\-dfp
  \&\-mlong\-double\-64  \-mlong\-double\-128
  \&\-mbackchain  \-mno\-backchain  \-mpacked\-stack  \-mno\-packed\-stack
--- 1305,1311 ----
  \&\-msave\-acc\-in\-interrupts\fR
  .Sp
  \&\fIS/390 and zSeries Options\fR (\fBS/390 and zSeries Options\fR)
! \&\fB\-mtune=\fR\fIcpu\-type\fR  \fB\-march=\fR\fIcpu\-type\fR
  \&\fB\-mhard\-float  \-msoft\-float  \-mhard\-dfp  \-mno\-hard\-dfp
  \&\-mlong\-double\-64  \-mlong\-double\-128
  \&\-mbackchain  \-mno\-backchain  \-mpacked\-stack  \-mno\-packed\-stack
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 1388,1394 ****
  \&\-mwarn\-framesize  \-mwarn\-dynamicstack  \-mstack\-size  \-mstack\-guard
  \&\-mhotpatch=\fR\fIhalfwords\fR\fB,\fR\fIhalfwords\fR
  .Sp
! \&\fI\s-1SH\s0 Options\fR (\fB\s-1SH\s0 Options\fR)
  \&\fB\-m1  \-m2  \-m2e
  \&\-m2a\-nofpu  \-m2a\-single\-only  \-m2a\-single  \-m2a
  \&\-m3  \-m3e
--- 1317,1323 ----
  \&\-mwarn\-framesize  \-mwarn\-dynamicstack  \-mstack\-size  \-mstack\-guard
  \&\-mhotpatch=\fR\fIhalfwords\fR\fB,\fR\fIhalfwords\fR
  .Sp
! \&\fISH Options\fR (\fBSH Options\fR)
  \&\fB\-m1  \-m2  \-m2e
  \&\-m2a\-nofpu  \-m2a\-single\-only  \-m2a\-single  \-m2a
  \&\-m3  \-m3e
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 1398,1406 ****
  \&\-mbigtable  \-mfmovd  \-mrenesas  \-mno\-renesas  \-mnomacsave
  \&\-mieee  \-mno\-ieee  \-mbitops  \-misize  \-minline\-ic_invalidate  \-mpadstruct
  \&\-mprefergot  \-musermode  \-multcost=\fR\fInumber\fR  \fB\-mdiv=\fR\fIstrategy\fR
! \&\fB\-mdivsi3_libfunc=\fR\fIname\fR  \fB\-mfixed\-range=\fR\fIregister-range\fR
  \&\fB\-maccumulate\-outgoing\-args
! \&\-matomic\-model=\fR\fIatomic-model\fR
  \&\fB\-mbranch\-cost=\fR\fInum\fR  \fB\-mzdcbranch  \-mno\-zdcbranch
  \&\-mcbranch\-force\-delay\-slot
  \&\-mfused\-madd  \-mno\-fused\-madd  \-mfsca  \-mno\-fsca  \-mfsrra  \-mno\-fsrra
--- 1327,1335 ----
  \&\-mbigtable  \-mfmovd  \-mrenesas  \-mno\-renesas  \-mnomacsave
  \&\-mieee  \-mno\-ieee  \-mbitops  \-misize  \-minline\-ic_invalidate  \-mpadstruct
  \&\-mprefergot  \-musermode  \-multcost=\fR\fInumber\fR  \fB\-mdiv=\fR\fIstrategy\fR
! \&\fB\-mdivsi3_libfunc=\fR\fIname\fR  \fB\-mfixed\-range=\fR\fIregister\-range\fR
  \&\fB\-maccumulate\-outgoing\-args
! \&\-matomic\-model=\fR\fIatomic\-model\fR
  \&\fB\-mbranch\-cost=\fR\fInum\fR  \fB\-mzdcbranch  \-mno\-zdcbranch
  \&\-mcbranch\-force\-delay\-slot
  \&\-mfused\-madd  \-mno\-fused\-madd  \-mfsca  \-mno\-fsca  \-mfsrra  \-mno\-fsrra
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 1410,1420 ****
  \&\fB\-mclear\-hwcap  \-mno\-clear\-hwcap  \-mimpure\-text  \-mno\-impure\-text
  \&\-pthreads\fR
  .Sp
! \&\fI\s-1SPARC\s0 Options\fR (\fB\s-1SPARC\s0 Options\fR)
! \&\fB\-mcpu=\fR\fIcpu-type\fR
! \&\fB\-mtune=\fR\fIcpu-type\fR
! \&\fB\-mcmodel=\fR\fIcode-model\fR
! \&\fB\-mmemory\-model=\fR\fImem-model\fR
  \&\fB\-m32  \-m64  \-mapp\-regs  \-mno\-app\-regs
  \&\-mfaster\-structs  \-mno\-faster\-structs  \-mflat  \-mno\-flat
  \&\-mfpu  \-mno\-fpu  \-mhard\-float  \-msoft\-float
--- 1339,1349 ----
  \&\fB\-mclear\-hwcap  \-mno\-clear\-hwcap  \-mimpure\-text  \-mno\-impure\-text
  \&\-pthreads\fR
  .Sp
! \&\fISPARC Options\fR (\fBSPARC Options\fR)
! \&\fB\-mcpu=\fR\fIcpu\-type\fR
! \&\fB\-mtune=\fR\fIcpu\-type\fR
! \&\fB\-mcmodel=\fR\fIcode\-model\fR
! \&\fB\-mmemory\-model=\fR\fImem\-model\fR
  \&\fB\-m32  \-m64  \-mapp\-regs  \-mno\-app\-regs
  \&\-mfaster\-structs  \-mno\-faster\-structs  \-mflat  \-mno\-flat
  \&\-mfpu  \-mno\-fpu  \-mhard\-float  \-msoft\-float
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 1451,1464 ****
  \&\-mrh850\-abi
  \&\-mbig\-switch\fR
  .Sp
! \&\fI\s-1VAX\s0 Options\fR (\fB\s-1VAX\s0 Options\fR)
  \&\fB\-munix  \-mgnu  \-md  \-md\-float  \-mg  \-mg\-float  \-mlra\fR
  .Sp
  \&\fIVisium Options\fR (\fBVisium Options\fR)
  \&\fB\-mdebug  \-msim  \-mfpu  \-mno\-fpu  \-mhard\-float  \-msoft\-float
! \&\-mcpu=\fR\fIcpu-type\fR  \fB\-mtune=\fR\fIcpu-type\fR  \fB\-msv\-mode  \-muser\-mode\fR
  .Sp
! \&\fI\s-1VMS\s0 Options\fR (\fB\s-1VMS\s0 Options\fR)
  \&\fB\-mvms\-return\-codes  \-mdebug\-main=\fR\fIprefix\fR  \fB\-mmalloc64
  \&\-mpointer\-size=\fR\fIsize\fR
  .Sp
--- 1380,1393 ----
  \&\-mrh850\-abi
  \&\-mbig\-switch\fR
  .Sp
! \&\fIVAX Options\fR (\fBVAX Options\fR)
  \&\fB\-munix  \-mgnu  \-md  \-md\-float  \-mg  \-mg\-float  \-mlra\fR
  .Sp
  \&\fIVisium Options\fR (\fBVisium Options\fR)
  \&\fB\-mdebug  \-msim  \-mfpu  \-mno\-fpu  \-mhard\-float  \-msoft\-float
! \&\-mcpu=\fR\fIcpu\-type\fR  \fB\-mtune=\fR\fIcpu\-type\fR  \fB\-msv\-mode  \-muser\-mode\fR
  .Sp
! \&\fIVMS Options\fR (\fBVMS Options\fR)
  \&\fB\-mvms\-return\-codes  \-mdebug\-main=\fR\fIprefix\fR  \fB\-mmalloc64
  \&\-mpointer\-size=\fR\fIsize\fR
  .Sp
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 1467,1474 ****
  \&\-Xbind\-lazy  \-Xbind\-now\fR
  .Sp
  \&\fIx86 Options\fR (\fBx86 Options\fR)
! \&\fB\-mtune=\fR\fIcpu-type\fR  \fB\-march=\fR\fIcpu-type\fR
! \&\fB\-mtune\-ctrl=\fR\fIfeature-list\fR  \fB\-mdump\-tune\-features  \-mno\-default
  \&\-mfpmath=\fR\fIunit\fR
  \&\fB\-masm=\fR\fIdialect\fR  \fB\-mno\-fancy\-math\-387
  \&\-mno\-fp\-ret\-in\-387  \-m80387  \-mhard\-float  \-msoft\-float
--- 1396,1403 ----
  \&\-Xbind\-lazy  \-Xbind\-now\fR
  .Sp
  \&\fIx86 Options\fR (\fBx86 Options\fR)
! \&\fB\-mtune=\fR\fIcpu\-type\fR  \fB\-march=\fR\fIcpu\-type\fR
! \&\fB\-mtune\-ctrl=\fR\fIfeature\-list\fR  \fB\-mdump\-tune\-features  \-mno\-default
  \&\-mfpmath=\fR\fIunit\fR
  \&\fB\-masm=\fR\fIdialect\fR  \fB\-mno\-fancy\-math\-387
  \&\-mno\-fp\-ret\-in\-387  \-m80387  \-mhard\-float  \-msoft\-float
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 1509,1515 ****
  \&\-mveclibabi=\fR\fItype\fR  \fB\-mvect8\-ret\-in\-mem
  \&\-mpc32  \-mpc64  \-mpc80  \-mdaz\-ftz \-mstackrealign
  \&\-momit\-leaf\-frame\-pointer  \-mno\-red\-zone  \-mno\-tls\-direct\-seg\-refs
! \&\-mcmodel=\fR\fIcode-model\fR  \fB\-mabi=\fR\fIname\fR  \fB\-maddress\-mode=\fR\fImode\fR
  \&\fB\-m32  \-m64  \-mx32  \-m16  \-miamcu  \-mlarge\-data\-threshold=\fR\fInum\fR
  \&\fB\-msse2avx  \-mfentry  \-mrecord\-mcount  \-mnop\-mcount  \-m8bit\-idiv
  \&\-minstrument\-return=\fR\fItype\fR \fB\-mfentry\-name=\fR\fIname\fR \fB\-mfentry\-section=\fR\fIname\fR
--- 1438,1444 ----
  \&\-mveclibabi=\fR\fItype\fR  \fB\-mvect8\-ret\-in\-mem
  \&\-mpc32  \-mpc64  \-mpc80  \-mdaz\-ftz \-mstackrealign
  \&\-momit\-leaf\-frame\-pointer  \-mno\-red\-zone  \-mno\-tls\-direct\-seg\-refs
! \&\-mcmodel=\fR\fIcode\-model\fR  \fB\-mabi=\fR\fIname\fR  \fB\-maddress\-mode=\fR\fImode\fR
  \&\fB\-m32  \-m64  \-mx32  \-m16  \-miamcu  \-mlarge\-data\-threshold=\fR\fInum\fR
  \&\fB\-msse2avx  \-mfentry  \-mrecord\-mcount  \-mnop\-mcount  \-m8bit\-idiv
  \&\-minstrument\-return=\fR\fItype\fR \fB\-mfentry\-name=\fR\fIname\fR \fB\-mfentry\-section=\fR\fIname\fR
*************** See Cygwin and MinGW Options.
*** 1539,1545 ****
  \&\-mauto\-litpools  \-mno\-auto\-litpools
  \&\-mtarget\-align  \-mno\-target\-align
  \&\-mlongcalls  \-mno\-longcalls
! \&\-mabi=\fR\fIabi-type\fR
  \&\fB\-mextra\-l32r\-costs=\fR\fIcycles\fR
  \&\fB\-mstrict\-align  \-mno\-strict\-align\fR
  .Sp
--- 1468,1474 ----
  \&\-mauto\-litpools  \-mno\-auto\-litpools
  \&\-mtarget\-align  \-mno\-target\-align
  \&\-mlongcalls  \-mno\-longcalls
! \&\-mabi=\fR\fIabi\-type\fR
  \&\fB\-mextra\-l32r\-costs=\fR\fIcycles\fR
  \&\fB\-mstrict\-align  \-mno\-strict\-align\fR
  .Sp
*************** See S/390 and zSeries Options.
*** 1548,1554 ****
  .SS "Options Controlling the Kind of Output"
  .IX Subsection "Options Controlling the Kind of Output"
  Compilation can involve up to four stages: preprocessing, compilation
! proper, assembly and linking, always in that order.  \s-1GCC\s0 is capable of
  preprocessing and compiling several files either into several
  assembler input files, or into one assembler input file; then each
  assembler input file produces an object file, and linking combines all
--- 1477,1483 ----
  .SS "Options Controlling the Kind of Output"
  .IX Subsection "Options Controlling the Kind of Output"
  Compilation can involve up to four stages: preprocessing, compilation
! proper, assembly and linking, always in that order.  GCC is capable of
  preprocessing and compiling several files either into several
  assembler input files, or into one assembler input file; then each
  assembler input file produces an object file, and linking combines all
*************** into an executable file.
*** 1557,1738 ****
  .PP
  For any given input file, the file name suffix determines what kind of
  compilation is done:
! .IP "\fIfile\fR\fB.c\fR" 4
  .IX Item "file.c"
  C source code that must be preprocessed.
! .IP "\fIfile\fR\fB.i\fR" 4
  .IX Item "file.i"
  C source code that should not be preprocessed.
! .IP "\fIfile\fR\fB.ii\fR" 4
  .IX Item "file.ii"
! \&\*(C+ source code that should not be preprocessed.
! .IP "\fIfile\fR\fB.m\fR" 4
  .IX Item "file.m"
! Objective-C source code.  Note that you must link with the \fIlibobjc\fR
! library to make an Objective-C program work.
! .IP "\fIfile\fR\fB.mi\fR" 4
  .IX Item "file.mi"
! Objective-C source code that should not be preprocessed.
! .IP "\fIfile\fR\fB.mm\fR" 4
  .IX Item "file.mm"
  .PD 0
! .IP "\fIfile\fR\fB.M\fR" 4
  .IX Item "file.M"
  .PD
! Objective\-\*(C+ source code.  Note that you must link with the \fIlibobjc\fR
! library to make an Objective\-\*(C+ program work.  Note that \fB.M\fR refers
  to a literal capital M.
! .IP "\fIfile\fR\fB.mii\fR" 4
  .IX Item "file.mii"
! Objective\-\*(C+ source code that should not be preprocessed.
! .IP "\fIfile\fR\fB.h\fR" 4
  .IX Item "file.h"
! C, \*(C+, Objective-C or Objective\-\*(C+ header file to be turned into a
! precompiled header (default), or C, \*(C+ header file to be turned into an
  Ada spec (via the \fB\-fdump\-ada\-spec\fR switch).
! .IP "\fIfile\fR\fB.cc\fR" 4
  .IX Item "file.cc"
  .PD 0
! .IP "\fIfile\fR\fB.cp\fR" 4
  .IX Item "file.cp"
! .IP "\fIfile\fR\fB.cxx\fR" 4
  .IX Item "file.cxx"
! .IP "\fIfile\fR\fB.cpp\fR" 4
  .IX Item "file.cpp"
! .IP "\fIfile\fR\fB.CPP\fR" 4
  .IX Item "file.CPP"
! .IP "\fIfile\fR\fB.c++\fR" 4
  .IX Item "file.c++"
! .IP "\fIfile\fR\fB.C\fR" 4
  .IX Item "file.C"
  .PD
! \&\*(C+ source code that must be preprocessed.  Note that in \fB.cxx\fR,
  the last two letters must both be literally \fBx\fR.  Likewise,
  \&\fB.C\fR refers to a literal capital C.
! .IP "\fIfile\fR\fB.mm\fR" 4
  .IX Item "file.mm"
  .PD 0
! .IP "\fIfile\fR\fB.M\fR" 4
  .IX Item "file.M"
  .PD
! Objective\-\*(C+ source code that must be preprocessed.
! .IP "\fIfile\fR\fB.mii\fR" 4
  .IX Item "file.mii"
! Objective\-\*(C+ source code that should not be preprocessed.
! .IP "\fIfile\fR\fB.hh\fR" 4
  .IX Item "file.hh"
  .PD 0
! .IP "\fIfile\fR\fB.H\fR" 4
  .IX Item "file.H"
! .IP "\fIfile\fR\fB.hp\fR" 4
  .IX Item "file.hp"
! .IP "\fIfile\fR\fB.hxx\fR" 4
  .IX Item "file.hxx"
! .IP "\fIfile\fR\fB.hpp\fR" 4
  .IX Item "file.hpp"
! .IP "\fIfile\fR\fB.HPP\fR" 4
  .IX Item "file.HPP"
! .IP "\fIfile\fR\fB.h++\fR" 4
  .IX Item "file.h++"
! .IP "\fIfile\fR\fB.tcc\fR" 4
  .IX Item "file.tcc"
  .PD
! \&\*(C+ header file to be turned into a precompiled header or Ada spec.
! .IP "\fIfile\fR\fB.f\fR" 4
  .IX Item "file.f"
  .PD 0
! .IP "\fIfile\fR\fB.for\fR" 4
  .IX Item "file.for"
! .IP "\fIfile\fR\fB.ftn\fR" 4
  .IX Item "file.ftn"
! .IP "\fIfile\fR\fB.fi\fR" 4
  .IX Item "file.fi"
  .PD
  Fixed form Fortran source code that should not be preprocessed.
! .IP "\fIfile\fR\fB.F\fR" 4
  .IX Item "file.F"
  .PD 0
! .IP "\fIfile\fR\fB.FOR\fR" 4
  .IX Item "file.FOR"
! .IP "\fIfile\fR\fB.fpp\fR" 4
  .IX Item "file.fpp"
! .IP "\fIfile\fR\fB.FPP\fR" 4
  .IX Item "file.FPP"
! .IP "\fIfile\fR\fB.FTN\fR" 4
  .IX Item "file.FTN"
  .PD
  Fixed form Fortran source code that must be preprocessed (with the traditional
  preprocessor).
! .IP "\fIfile\fR\fB.f90\fR" 4
  .IX Item "file.f90"
  .PD 0
! .IP "\fIfile\fR\fB.f95\fR" 4
  .IX Item "file.f95"
! .IP "\fIfile\fR\fB.f03\fR" 4
  .IX Item "file.f03"
! .IP "\fIfile\fR\fB.f08\fR" 4
  .IX Item "file.f08"
! .IP "\fIfile\fR\fB.fii\fR" 4
  .IX Item "file.fii"
  .PD
  Free form Fortran source code that should not be preprocessed.
! .IP "\fIfile\fR\fB.F90\fR" 4
  .IX Item "file.F90"
  .PD 0
! .IP "\fIfile\fR\fB.F95\fR" 4
  .IX Item "file.F95"
! .IP "\fIfile\fR\fB.F03\fR" 4
  .IX Item "file.F03"
! .IP "\fIfile\fR\fB.F08\fR" 4
  .IX Item "file.F08"
  .PD
  Free form Fortran source code that must be preprocessed (with the
  traditional preprocessor).
! .IP "\fIfile\fR\fB.cob\fR" 4
  .IX Item "file.cob"
  .PD 0
! .IP "\fIfile\fR\fB.COB\fR" 4
  .IX Item "file.COB"
! .IP "\fIfile\fR\fB.cbl\fR" 4
  .IX Item "file.cbl"
! .IP "\fIfile\fR\fB.CBL\fR" 4
  .IX Item "file.CBL"
  .PD
! \&\s-1COBOL\s0 source code.
! .IP "\fIfile\fR\fB.go\fR" 4
  .IX Item "file.go"
  Go source code.
! .IP "\fIfile\fR\fB.d\fR" 4
  .IX Item "file.d"
  D source code.
! .IP "\fIfile\fR\fB.di\fR" 4
  .IX Item "file.di"
  D interface file.
! .IP "\fIfile\fR\fB.dd\fR" 4
  .IX Item "file.dd"
  D documentation code (Ddoc).
! .IP "\fIfile\fR\fB.ads\fR" 4
  .IX Item "file.ads"
  Ada source code file that contains a library unit declaration (a
  declaration of a package, subprogram, or generic, or a generic
  instantiation), or a library unit renaming declaration (a package,
  generic, or subprogram renaming declaration).  Such files are also
  called \fIspecs\fR.
! .IP "\fIfile\fR\fB.adb\fR" 4
  .IX Item "file.adb"
  Ada source code file containing a library unit body (a subprogram or
  package body).  Such files are also called \fIbodies\fR.
! .IP "\fIfile\fR\fB.s\fR" 4
  .IX Item "file.s"
  Assembler code.
! .IP "\fIfile\fR\fB.S\fR" 4
  .IX Item "file.S"
  .PD 0
! .IP "\fIfile\fR\fB.sx\fR" 4
  .IX Item "file.sx"
  .PD
  Assembler code that must be preprocessed.
! .IP "\fIother\fR" 4
  .IX Item "other"
  An object file to be fed straight into linking.
  Any file name with no recognized suffix is treated this way.
--- 1486,1667 ----
  .PP
  For any given input file, the file name suffix determines what kind of
  compilation is done:
! .IP \fIfile\fR\fB.c\fR 4
  .IX Item "file.c"
  C source code that must be preprocessed.
! .IP \fIfile\fR\fB.i\fR 4
  .IX Item "file.i"
  C source code that should not be preprocessed.
! .IP \fIfile\fR\fB.ii\fR 4
  .IX Item "file.ii"
! C++ source code that should not be preprocessed.
! .IP \fIfile\fR\fB.m\fR 4
  .IX Item "file.m"
! Objective\-C source code.  Note that you must link with the \fIlibobjc\fR
! library to make an Objective\-C program work.
! .IP \fIfile\fR\fB.mi\fR 4
  .IX Item "file.mi"
! Objective\-C source code that should not be preprocessed.
! .IP \fIfile\fR\fB.mm\fR 4
  .IX Item "file.mm"
  .PD 0
! .IP \fIfile\fR\fB.M\fR 4
  .IX Item "file.M"
  .PD
! Objective\-C++ source code.  Note that you must link with the \fIlibobjc\fR
! library to make an Objective\-C++ program work.  Note that \fB.M\fR refers
  to a literal capital M.
! .IP \fIfile\fR\fB.mii\fR 4
  .IX Item "file.mii"
! Objective\-C++ source code that should not be preprocessed.
! .IP \fIfile\fR\fB.h\fR 4
  .IX Item "file.h"
! C, C++, Objective\-C or Objective\-C++ header file to be turned into a
! precompiled header (default), or C, C++ header file to be turned into an
  Ada spec (via the \fB\-fdump\-ada\-spec\fR switch).
! .IP \fIfile\fR\fB.cc\fR 4
  .IX Item "file.cc"
  .PD 0
! .IP \fIfile\fR\fB.cp\fR 4
  .IX Item "file.cp"
! .IP \fIfile\fR\fB.cxx\fR 4
  .IX Item "file.cxx"
! .IP \fIfile\fR\fB.cpp\fR 4
  .IX Item "file.cpp"
! .IP \fIfile\fR\fB.CPP\fR 4
  .IX Item "file.CPP"
! .IP \fIfile\fR\fB.c++\fR 4
  .IX Item "file.c++"
! .IP \fIfile\fR\fB.C\fR 4
  .IX Item "file.C"
  .PD
! C++ source code that must be preprocessed.  Note that in \fB.cxx\fR,
  the last two letters must both be literally \fBx\fR.  Likewise,
  \&\fB.C\fR refers to a literal capital C.
! .IP \fIfile\fR\fB.mm\fR 4
  .IX Item "file.mm"
  .PD 0
! .IP \fIfile\fR\fB.M\fR 4
  .IX Item "file.M"
  .PD
! Objective\-C++ source code that must be preprocessed.
! .IP \fIfile\fR\fB.mii\fR 4
  .IX Item "file.mii"
! Objective\-C++ source code that should not be preprocessed.
! .IP \fIfile\fR\fB.hh\fR 4
  .IX Item "file.hh"
  .PD 0
! .IP \fIfile\fR\fB.H\fR 4
  .IX Item "file.H"
! .IP \fIfile\fR\fB.hp\fR 4
  .IX Item "file.hp"
! .IP \fIfile\fR\fB.hxx\fR 4
  .IX Item "file.hxx"
! .IP \fIfile\fR\fB.hpp\fR 4
  .IX Item "file.hpp"
! .IP \fIfile\fR\fB.HPP\fR 4
  .IX Item "file.HPP"
! .IP \fIfile\fR\fB.h++\fR 4
  .IX Item "file.h++"
! .IP \fIfile\fR\fB.tcc\fR 4
  .IX Item "file.tcc"
  .PD
! C++ header file to be turned into a precompiled header or Ada spec.
! .IP \fIfile\fR\fB.f\fR 4
  .IX Item "file.f"
  .PD 0
! .IP \fIfile\fR\fB.for\fR 4
  .IX Item "file.for"
! .IP \fIfile\fR\fB.ftn\fR 4
  .IX Item "file.ftn"
! .IP \fIfile\fR\fB.fi\fR 4
  .IX Item "file.fi"
  .PD
  Fixed form Fortran source code that should not be preprocessed.
! .IP \fIfile\fR\fB.F\fR 4
  .IX Item "file.F"
  .PD 0
! .IP \fIfile\fR\fB.FOR\fR 4
  .IX Item "file.FOR"
! .IP \fIfile\fR\fB.fpp\fR 4
  .IX Item "file.fpp"
! .IP \fIfile\fR\fB.FPP\fR 4
  .IX Item "file.FPP"
! .IP \fIfile\fR\fB.FTN\fR 4
  .IX Item "file.FTN"
  .PD
  Fixed form Fortran source code that must be preprocessed (with the traditional
  preprocessor).
! .IP \fIfile\fR\fB.f90\fR 4
  .IX Item "file.f90"
  .PD 0
! .IP \fIfile\fR\fB.f95\fR 4
  .IX Item "file.f95"
! .IP \fIfile\fR\fB.f03\fR 4
  .IX Item "file.f03"
! .IP \fIfile\fR\fB.f08\fR 4
  .IX Item "file.f08"
! .IP \fIfile\fR\fB.fii\fR 4
  .IX Item "file.fii"
  .PD
  Free form Fortran source code that should not be preprocessed.
! .IP \fIfile\fR\fB.F90\fR 4
  .IX Item "file.F90"
  .PD 0
! .IP \fIfile\fR\fB.F95\fR 4
  .IX Item "file.F95"
! .IP \fIfile\fR\fB.F03\fR 4
  .IX Item "file.F03"
! .IP \fIfile\fR\fB.F08\fR 4
  .IX Item "file.F08"
  .PD
  Free form Fortran source code that must be preprocessed (with the
  traditional preprocessor).
! .IP \fIfile\fR\fB.cob\fR 4
  .IX Item "file.cob"
  .PD 0
! .IP \fIfile\fR\fB.COB\fR 4
  .IX Item "file.COB"
! .IP \fIfile\fR\fB.cbl\fR 4
  .IX Item "file.cbl"
! .IP \fIfile\fR\fB.CBL\fR 4
  .IX Item "file.CBL"
  .PD
! COBOL source code.
! .IP \fIfile\fR\fB.go\fR 4
  .IX Item "file.go"
  Go source code.
! .IP \fIfile\fR\fB.d\fR 4
  .IX Item "file.d"
  D source code.
! .IP \fIfile\fR\fB.di\fR 4
  .IX Item "file.di"
  D interface file.
! .IP \fIfile\fR\fB.dd\fR 4
  .IX Item "file.dd"
  D documentation code (Ddoc).
! .IP \fIfile\fR\fB.ads\fR 4
  .IX Item "file.ads"
  Ada source code file that contains a library unit declaration (a
  declaration of a package, subprogram, or generic, or a generic
  instantiation), or a library unit renaming declaration (a package,
  generic, or subprogram renaming declaration).  Such files are also
  called \fIspecs\fR.
! .IP \fIfile\fR\fB.adb\fR 4
  .IX Item "file.adb"
  Ada source code file containing a library unit body (a subprogram or
  package body).  Such files are also called \fIbodies\fR.
! .IP \fIfile\fR\fB.s\fR 4
  .IX Item "file.s"
  Assembler code.
! .IP \fIfile\fR\fB.S\fR 4
  .IX Item "file.S"
  .PD 0
! .IP \fIfile\fR\fB.sx\fR 4
  .IX Item "file.sx"
  .PD
  Assembler code that must be preprocessed.
! .IP \fIother\fR 4
  .IX Item "other"
  An object file to be fed straight into linking.
  Any file name with no recognized suffix is treated this way.
*************** the next \fB\-x\fR option.  Possible val
*** 1748,1761 ****
  .Vb 10
  \&        c  c\-header  cpp\-output
  \&        c++  c++\-header  c++\-system\-header c++\-user\-header c++\-cpp\-output
! \&        objective\-c  objective\-c\-header  objective\-c\-cpp\-output
! \&        objective\-c++ objective\-c++\-header objective\-c++\-cpp\-output
  \&        assembler  assembler\-with\-cpp
! \&        ada
  \&        cobol
  \&        d
! \&        f77  f77\-cpp\-input f95  f95\-cpp\-input
  \&        go
  .Ve
  .Sp
  Note that \fB\-x\fR does not imply a particular language standard.
--- 1677,1694 ----
  .Vb 10
  \&        c  c\-header  cpp\-output
  \&        c++  c++\-header  c++\-system\-header c++\-user\-header c++\-cpp\-output
! \&        objective\-c  objective\-c\-header  objective\-c\-cpp\-output  objc\-cpp\-output
! \&        objective\-c++  objective\-c++\-header  objective\-c++\-cpp\-output
! \&        objc++\-cpp\-output
  \&        assembler  assembler\-with\-cpp
! \&        ada  adascil  adawhy
  \&        cobol
  \&        d
! \&        f77  f77\-cpp\-input  f95  f95\-cpp\-input
  \&        go
+ \&        modula\-2  modula\-2\-cpp\-output
+ \&        rust
+ \&        lto
  .Ve
  .Sp
  Note that \fB\-x\fR does not imply a particular language standard.
*************** If you only want some of the stages of c
*** 1771,1778 ****
  \&\fB\-x\fR (or filename suffixes) to tell \fBgcc\fR where to start, and
  one of the options \fB\-c\fR, \fB\-S\fR, or \fB\-E\fR to say where
  \&\fBgcc\fR is to stop.  Note that some combinations (for example,
! \&\fB\-x cpp-output \-E\fR) instruct \fBgcc\fR to do nothing at all.
! .IP "\fB\-c\fR" 4
  .IX Item "-c"
  Compile or assemble the source files, but do not link.  The linking
  stage simply is not done.  The ultimate output is in the form of an
--- 1704,1711 ----
  \&\fB\-x\fR (or filename suffixes) to tell \fBgcc\fR where to start, and
  one of the options \fB\-c\fR, \fB\-S\fR, or \fB\-E\fR to say where
  \&\fBgcc\fR is to stop.  Note that some combinations (for example,
! \&\fB\-x cpp\-output \-E\fR) instruct \fBgcc\fR to do nothing at all.
! .IP \fB\-c\fR 4
  .IX Item "-c"
  Compile or assemble the source files, but do not link.  The linking
  stage simply is not done.  The ultimate output is in the form of an
*************** the suffix \fB.c\fR, \fB.i\fR, \fB.s\fR,
*** 1783,1805 ****
  .Sp
  Unrecognized input files, not requiring compilation or assembly, are
  ignored.
! .IP "\fB\-S\fR" 4
  .IX Item "-S"
  Stop after the stage of compilation proper; do not assemble.  The output
! is in the form of an assembler code file for each non-assembler input
  file specified.
  .Sp
  By default, the assembler file name for a source file is made by
  replacing the suffix \fB.c\fR, \fB.i\fR, etc., with \fB.s\fR.
  .Sp
! Input files that don't require compilation are ignored.
! .IP "\fB\-E\fR" 4
  .IX Item "-E"
  Stop after the preprocessing stage; do not run the compiler proper.  The
  output is in the form of preprocessed source code, which is sent to the
  standard output.
  .Sp
! Input files that don't require preprocessing are ignored.
  .IP "\fB\-o\fR \fIfile\fR" 4
  .IX Item "-o file"
  Place the primary output in file \fIfile\fR.  This applies to whatever
--- 1716,1738 ----
  .Sp
  Unrecognized input files, not requiring compilation or assembly, are
  ignored.
! .IP \fB\-S\fR 4
  .IX Item "-S"
  Stop after the stage of compilation proper; do not assemble.  The output
! is in the form of an assembler code file for each non\-assembler input
  file specified.
  .Sp
  By default, the assembler file name for a source file is made by
  replacing the suffix \fB.c\fR, \fB.i\fR, etc., with \fB.s\fR.
  .Sp
! Input files that don\*(Aqt require compilation are ignored.
! .IP \fB\-E\fR 4
  .IX Item "-E"
  Stop after the preprocessing stage; do not run the compiler proper.  The
  output is in the form of preprocessed source code, which is sent to the
  standard output.
  .Sp
! Input files that don\*(Aqt require preprocessing are ignored.
  .IP "\fB\-o\fR \fIfile\fR" 4
  .IX Item "-o file"
  Place the primary output in file \fIfile\fR.  This applies to whatever
*************** object file, an assembler file or prepro
*** 1808,1816 ****
  .Sp
  If \fB\-o\fR is not specified, the default is to put an executable
  file in \fIa.out\fR, the object file for
! \&\fI\fIsource\fI.\fIsuffix\fI\fR in \fI\fIsource\fI.o\fR, its
! assembler file in \fI\fIsource\fI.s\fR, a precompiled header file in
! \&\fI\fIsource\fI.\fIsuffix\fI.gch\fR, and all preprocessed C source on
  standard output.
  .Sp
  Though \fB\-o\fR names only the primary output, it also affects the
--- 1741,1749 ----
  .Sp
  If \fB\-o\fR is not specified, the default is to put an executable
  file in \fIa.out\fR, the object file for
! \&\fIsource.suffix\fR in \fIsource.o\fR, its
! assembler file in \fIsource.s\fR, a precompiled header file in
! \&\fIsource.suffix.gch\fR, and all preprocessed C source on
  standard output.
  .Sp
  Though \fB\-o\fR names only the primary output, it also affects the
*************** dumps next to it, e.g., aux file \fIfoo.
*** 1835,1841 ****
  \&\fB\-gsplit\-dwarf\fR, and dump file \fIfoo.c.???r.final\fR for
  \&\fB\-fdump\-rtl\-final\fR.
  .Sp
! If a non-linker output file is explicitly specified, aux and dump files
  by default take the same base name:
  .Sp
  .Vb 1
--- 1768,1774 ----
  \&\fB\-gsplit\-dwarf\fR, and dump file \fIfoo.c.???r.final\fR for
  \&\fB\-fdump\-rtl\-final\fR.
  .Sp
! If a non\-linker output file is explicitly specified, aux and dump files
  by default take the same base name:
  .Sp
  .Vb 1
*************** an intermediate, thus auxiliary output),
*** 1892,1905 ****
  (implied) output file \fIfoo.o\fR.
  .Sp
  Absent this option, dump and aux files take their names from the input
! file, or from the (non-linker) output file, if one is explicitly
  specified: dump output files (e.g. those requested by \fB\-fdump\-*\fR
  options) with the input name suffix, and aux output files (those
! requested by other non-dump options, e.g. \f(CW\*(C`\-save\-temps\*(C'\fR,
  \&\f(CW\*(C`\-gsplit\-dwarf\*(C'\fR, \f(CW\*(C`\-fcallgraph\-info\*(C'\fR) without it.
  .Sp
  Similar suffix differentiation of dump and aux outputs can be attained
! for explicitly-given \fB\-dumpbase basename.suf\fR by also specifying
  \&\fB\-dumpbase\-ext .suf\fR.
  .Sp
  If \fIdumpbase\fR is explicitly specified with any directory component,
--- 1825,1838 ----
  (implied) output file \fIfoo.o\fR.
  .Sp
  Absent this option, dump and aux files take their names from the input
! file, or from the (non\-linker) output file, if one is explicitly
  specified: dump output files (e.g. those requested by \fB\-fdump\-*\fR
  options) with the input name suffix, and aux output files (those
! requested by other non\-dump options, e.g. \f(CW\*(C`\-save\-temps\*(C'\fR,
  \&\f(CW\*(C`\-gsplit\-dwarf\*(C'\fR, \f(CW\*(C`\-fcallgraph\-info\*(C'\fR) without it.
  .Sp
  Similar suffix differentiation of dump and aux outputs can be attained
! for explicitly\-given \fB\-dumpbase basename.suf\fR by also specifying
  \&\fB\-dumpbase\-ext .suf\fR.
  .Sp
  If \fIdumpbase\fR is explicitly specified with any directory component,
*************** will name aux outputs \fIdir/foo.*\fR an
*** 1944,1950 ****
  \&\fIdir/foo.c.*\fR.  Note how their basenames are taken from the input
  name, but the directory still defaults to that of the output.
  .Sp
! The empty-string dumpbase does not prevent the use of the output
  basename for outputs during linking:
  .Sp
  .Vb 1
--- 1877,1883 ----
  \&\fIdir/foo.c.*\fR.  Note how their basenames are taken from the input
  name, but the directory still defaults to that of the output.
  .Sp
! The empty\-string dumpbase does not prevent the use of the output
  basename for outputs during linking:
  .Sp
  .Vb 1
*************** basename for outputs during linking:
*** 1953,1959 ****
  .Sp
  The compilation of the source files will name auxiliary outputs
  \&\fIdir/foo.*\fR and \fIdir/bar.*\fR, and dump outputs
! \&\fIdir/foo.c.*\fR and \fIdir/bar.c.*\fR.  \s-1LTO\s0 recompilation during
  linking will use \fIdir/foobar.\fR as the prefix for dumps and
  auxiliary files.
  .IP "\fB\-dumpbase\-ext\fR \fIauxdropsuf\fR" 4
--- 1886,1892 ----
  .Sp
  The compilation of the source files will name auxiliary outputs
  \&\fIdir/foo.*\fR and \fIdir/bar.*\fR, and dump outputs
! \&\fIdir/foo.c.*\fR and \fIdir/bar.c.*\fR.  LTO recompilation during
  linking will use \fIdir/foobar.\fR as the prefix for dumps and
  auxiliary files.
  .IP "\fB\-dumpbase\-ext\fR \fIauxdropsuf\fR" 4
*************** When compiling from multiple input files
*** 2036,2042 ****
  specified, \fIdumpbase\fR, minus a \fIauxdropsuf\fR suffix, and a dash
  are appended to (or override, if containing any directory components) an
  explicit or defaulted \fIdumppfx\fR, so that each of the multiple
! compilations gets differently-named aux and dump outputs.
  .Sp
  .Vb 1
  \&        gcc foo.c bar.c \-c \-dumpdir dir/pfx\- \-dumpbase main ...
--- 1969,1975 ----
  specified, \fIdumpbase\fR, minus a \fIauxdropsuf\fR suffix, and a dash
  are appended to (or override, if containing any directory components) an
  explicit or defaulted \fIdumppfx\fR, so that each of the multiple
! compilations gets differently\-named aux and dump outputs.
  .Sp
  .Vb 1
  \&        gcc foo.c bar.c \-c \-dumpdir dir/pfx\- \-dumpbase main ...
*************** outputs auxiliary dumps to \fIdir/pfx\-m
*** 2046,2052 ****
  \&\fIdir/pfx\-main\-bar.*\fR, appending \fIdumpbase\fR\- to \fIdumppfx\fR.
  Dump outputs retain the input file suffix: \fIdir/pfx\-main\-foo.c.*\fR
  and \fIdir/pfx\-main\-bar.c.*\fR, respectively.  Contrast with the
! single-input compilation:
  .Sp
  .Vb 1
  \&        gcc foo.c \-c \-dumpdir dir/pfx\- \-dumpbase main ...
--- 1979,1985 ----
  \&\fIdir/pfx\-main\-bar.*\fR, appending \fIdumpbase\fR\- to \fIdumppfx\fR.
  Dump outputs retain the input file suffix: \fIdir/pfx\-main\-foo.c.*\fR
  and \fIdir/pfx\-main\-bar.c.*\fR, respectively.  Contrast with the
! single\-input compilation:
  .Sp
  .Vb 1
  \&        gcc foo.c \-c \-dumpdir dir/pfx\- \-dumpbase main ...
*************** instead.  Note, however, that unlike ear
*** 2071,2085 ****
  .Sp
  does not append the output name \fImain\fR to \fIdumppfx\fR, because
  \&\fB\-dumpdir\fR is explicitly specified.  The goal is that the
! explicitly-specified \fIdumppfx\fR may contain the specified output name
! as part of the prefix, if desired; only an explicitly-specified
  \&\fB\-dumpbase\fR would be combined with it, in order to avoid simply
  discarding a meaningful option.
  .Sp
  When compiling and then linking from a single input file, the linker
  output base name will only be appended to the default \fIdumppfx\fR as
  above if it does not share the base name with the single input file
! name.  This has been covered in single-input linking cases above, but
  not with an explicit \fB\-dumpdir\fR that inhibits the combination,
  even if overridden by \fB\-save\-temps=*\fR:
  .Sp
--- 2004,2018 ----
  .Sp
  does not append the output name \fImain\fR to \fIdumppfx\fR, because
  \&\fB\-dumpdir\fR is explicitly specified.  The goal is that the
! explicitly\-specified \fIdumppfx\fR may contain the specified output name
! as part of the prefix, if desired; only an explicitly\-specified
  \&\fB\-dumpbase\fR would be combined with it, in order to avoid simply
  discarding a meaningful option.
  .Sp
  When compiling and then linking from a single input file, the linker
  output base name will only be appended to the default \fIdumppfx\fR as
  above if it does not share the base name with the single input file
! name.  This has been covered in single\-input linking cases above, but
  not with an explicit \fB\-dumpdir\fR that inhibits the combination,
  even if overridden by \fB\-save\-temps=*\fR:
  .Sp
*************** for each input are formed by combining \
*** 2102,2197 ****
  minus suffix, and the auxiliary output suffix; dump output names are
  only different in that the suffix from \fIdumpbase\fR is retained.
  .Sp
! When it comes to auxiliary and dump outputs created during \s-1LTO\s0
  recompilation, a combination of \fIdumppfx\fR and \fIdumpbase\fR, as
  given or as derived from the linker output name but not from inputs,
  even in cases in which this combination would not otherwise be used as
! such, is passed down with a trailing period replacing the compiler-added
! dash, if any, as a \fB\-dumpdir\fR option to \fBlto-wrapper\fR;
  being involved in linking, this program does not normally get any
  \&\fB\-dumpbase\fR and \fB\-dumpbase\-ext\fR, and it ignores them.
  .Sp
! When running sub-compilers, \fBlto-wrapper\fR appends \s-1LTO\s0 stage
  names to the received \fIdumppfx\fR, ensures it contains a directory
  component so that it overrides any \fB\-dumpdir\fR, and passes that as
! \&\fB\-dumpbase\fR to sub-compilers.
! .IP "\fB\-v\fR" 4
  .IX Item "-v"
  Print (on standard error output) the commands executed to run the stages
  of compilation.  Also print the version number of the compiler driver
  program and of the preprocessor and the compiler proper.
! .IP "\fB\-###\fR" 4
  .IX Item "-###"
  Like \fB\-v\fR except the commands are not executed and arguments
  are quoted unless they contain only alphanumeric characters or \f(CW\*(C`./\-_\*(C'\fR.
! This is useful for shell scripts to capture the driver-generated command lines.
! .IP "\fB\-\-help\fR" 4
  .IX Item "--help"
! Print (on the standard output) a description of the command-line options
  understood by \fBgcc\fR.  If the \fB\-v\fR option is also specified
  then \fB\-\-help\fR is also passed on to the various processes
! invoked by \fBgcc\fR, so that they can display the command-line options
  they accept.  If the \fB\-Wextra\fR option has also been specified
! (prior to the \fB\-\-help\fR option), then command-line options that
  have no documentation associated with them are also displayed.
! .IP "\fB\-\-target\-help\fR" 4
  .IX Item "--target-help"
! Print (on the standard output) a description of target-specific command-line
! options for each tool.  For some targets extra target-specific
  information may also be printed.
! .IP "\fB\-\-help={\fR\fIclass\fR|[\fB^\fR]\fIqualifier\fR\fB}\fR[\fB,...\fR]" 4
  .IX Item "--help={class|[^]qualifier}[,...]"
! Print (on the standard output) a description of the command-line
  options understood by the compiler that fit into all specified classes
  and qualifiers.  These are the supported classes:
  .RS 4
! .IP "\fBoptimizers\fR" 4
  .IX Item "optimizers"
  Display all of the optimization options supported by the
  compiler.
! .IP "\fBwarnings\fR" 4
  .IX Item "warnings"
  Display all of the options controlling warning messages
  produced by the compiler.
! .IP "\fBtarget\fR" 4
  .IX Item "target"
! Display target-specific options.  Unlike the
! \&\fB\-\-target\-help\fR option however, target-specific options of the
  linker and assembler are not displayed.  This is because those
  tools do not currently support the extended \fB\-\-help=\fR syntax.
! .IP "\fBparams\fR" 4
  .IX Item "params"
  Display the values recognized by the \fB\-\-param\fR
  option.
! .IP "\fIlanguage\fR" 4
  .IX Item "language"
  Display the options supported for \fIlanguage\fR, where
  \&\fIlanguage\fR is the name of one of the languages supported in this
! version of \s-1GCC.\s0  If an option is supported by all languages, one needs
  to select \fBcommon\fR class.
! .IP "\fBcommon\fR" 4
  .IX Item "common"
  Display the options that are common to all languages.
  .RE
  .RS 4
  .Sp
  These are the supported qualifiers:
! .IP "\fBundocumented\fR" 4
  .IX Item "undocumented"
  Display only those options that are undocumented.
! .IP "\fBjoined\fR" 4
  .IX Item "joined"
  Display options taking an argument that appears after an equal
  sign in the same continuous piece of text, such as:
  \&\fB\-\-help=target\fR.
! .IP "\fBseparate\fR" 4
  .IX Item "separate"
  Display options taking an argument that appears as a separate word
! following the original option, such as: \fB\-o output-file\fR.
  .RE
  .RS 4
  .Sp
! Thus for example to display all the undocumented target-specific
  switches supported by the compiler, use:
  .Sp
  .Vb 1
--- 2035,2130 ----
  minus suffix, and the auxiliary output suffix; dump output names are
  only different in that the suffix from \fIdumpbase\fR is retained.
  .Sp
! When it comes to auxiliary and dump outputs created during LTO
  recompilation, a combination of \fIdumppfx\fR and \fIdumpbase\fR, as
  given or as derived from the linker output name but not from inputs,
  even in cases in which this combination would not otherwise be used as
! such, is passed down with a trailing period replacing the compiler\-added
! dash, if any, as a \fB\-dumpdir\fR option to \fBlto\-wrapper\fR;
  being involved in linking, this program does not normally get any
  \&\fB\-dumpbase\fR and \fB\-dumpbase\-ext\fR, and it ignores them.
  .Sp
! When running sub\-compilers, \fBlto\-wrapper\fR appends LTO stage
  names to the received \fIdumppfx\fR, ensures it contains a directory
  component so that it overrides any \fB\-dumpdir\fR, and passes that as
! \&\fB\-dumpbase\fR to sub\-compilers.
! .IP \fB\-v\fR 4
  .IX Item "-v"
  Print (on standard error output) the commands executed to run the stages
  of compilation.  Also print the version number of the compiler driver
  program and of the preprocessor and the compiler proper.
! .IP \fB\-###\fR 4
  .IX Item "-###"
  Like \fB\-v\fR except the commands are not executed and arguments
  are quoted unless they contain only alphanumeric characters or \f(CW\*(C`./\-_\*(C'\fR.
! This is useful for shell scripts to capture the driver\-generated command lines.
! .IP \fB\-\-help\fR 4
  .IX Item "--help"
! Print (on the standard output) a description of the command\-line options
  understood by \fBgcc\fR.  If the \fB\-v\fR option is also specified
  then \fB\-\-help\fR is also passed on to the various processes
! invoked by \fBgcc\fR, so that they can display the command\-line options
  they accept.  If the \fB\-Wextra\fR option has also been specified
! (prior to the \fB\-\-help\fR option), then command\-line options that
  have no documentation associated with them are also displayed.
! .IP \fB\-\-target\-help\fR 4
  .IX Item "--target-help"
! Print (on the standard output) a description of target\-specific command\-line
! options for each tool.  For some targets extra target\-specific
  information may also be printed.
! .IP \fB\-\-help={\fR\fIclass\fR|[\fB^\fR]\fIqualifier\fR\fB}\fR[\fB,...\fR] 4
  .IX Item "--help={class|[^]qualifier}[,...]"
! Print (on the standard output) a description of the command\-line
  options understood by the compiler that fit into all specified classes
  and qualifiers.  These are the supported classes:
  .RS 4
! .IP \fBoptimizers\fR 4
  .IX Item "optimizers"
  Display all of the optimization options supported by the
  compiler.
! .IP \fBwarnings\fR 4
  .IX Item "warnings"
  Display all of the options controlling warning messages
  produced by the compiler.
! .IP \fBtarget\fR 4
  .IX Item "target"
! Display target\-specific options.  Unlike the
! \&\fB\-\-target\-help\fR option however, target\-specific options of the
  linker and assembler are not displayed.  This is because those
  tools do not currently support the extended \fB\-\-help=\fR syntax.
! .IP \fBparams\fR 4
  .IX Item "params"
  Display the values recognized by the \fB\-\-param\fR
  option.
! .IP \fIlanguage\fR 4
  .IX Item "language"
  Display the options supported for \fIlanguage\fR, where
  \&\fIlanguage\fR is the name of one of the languages supported in this
! version of GCC.  If an option is supported by all languages, one needs
  to select \fBcommon\fR class.
! .IP \fBcommon\fR 4
  .IX Item "common"
  Display the options that are common to all languages.
  .RE
  .RS 4
  .Sp
  These are the supported qualifiers:
! .IP \fBundocumented\fR 4
  .IX Item "undocumented"
  Display only those options that are undocumented.
! .IP \fBjoined\fR 4
  .IX Item "joined"
  Display options taking an argument that appears after an equal
  sign in the same continuous piece of text, such as:
  \&\fB\-\-help=target\fR.
! .IP \fBseparate\fR 4
  .IX Item "separate"
  Display options taking an argument that appears as a separate word
! following the original option, such as: \fB\-o output\-file\fR.
  .RE
  .RS 4
  .Sp
! Thus for example to display all the undocumented target\-specific
  switches supported by the compiler, use:
  .Sp
  .Vb 1
*************** qualifiers.
*** 2213,2219 ****
  Combining several classes is possible, although this usually
  restricts the output so much that there is nothing to display.  One
  case where it does work, however, is when one of the classes is
! \&\fItarget\fR.  For example, to display all the target-specific
  optimization options, use:
  .Sp
  .Vb 1
--- 2146,2152 ----
  Combining several classes is possible, although this usually
  restricts the output so much that there is nothing to display.  One
  case where it does work, however, is when one of the classes is
! \&\fItarget\fR.  For example, to display all the target\-specific
  optimization options, use:
  .Sp
  .Vb 1
*************** options, an indication is given as to wh
*** 2233,2239 ****
  disabled or set to a specific value (assuming that the compiler
  knows this at the point where the \fB\-\-help=\fR option is used).
  .Sp
! Here is a truncated example from the \s-1ARM\s0 port of \fBgcc\fR:
  .Sp
  .Vb 5
  \&          % gcc \-Q \-mabi=2 \-\-help=target \-c
--- 2166,2172 ----
  disabled or set to a specific value (assuming that the compiler
  knows this at the point where the \fB\-\-help=\fR option is used).
  .Sp
! Here is a truncated example from the ARM port of \fBgcc\fR:
  .Sp
  .Vb 5
  \&          % gcc \-Q \-mabi=2 \-\-help=target \-c
*************** Here is a truncated example from the \s-
*** 2243,2249 ****
  \&          \-mapcs                                [disabled]
  .Ve
  .Sp
! The output is sensitive to the effects of previous command-line
  options, so for example it is possible to find out which optimizations
  are enabled at \fB\-O2\fR by using:
  .Sp
--- 2176,2182 ----
  \&          \-mapcs                                [disabled]
  .Ve
  .Sp
! The output is sensitive to the effects of previous command\-line
  options, so for example it is possible to find out which optimizations
  are enabled at \fB\-O2\fR by using:
  .Sp
*************** by \fB\-O3\fR by using:
*** 2260,2283 ****
  \&        diff /tmp/O2\-opts /tmp/O3\-opts | grep enabled
  .Ve
  .RE
! .IP "\fB\-\-version\fR" 4
  .IX Item "--version"
! Display the version number and copyrights of the invoked \s-1GCC.\s0
! .IP "\fB\-pass\-exit\-codes\fR" 4
  .IX Item "-pass-exit-codes"
  Normally the \fBgcc\fR program exits with the code of 1 if any
! phase of the compiler returns a non-success return code.  If you specify
  \&\fB\-pass\-exit\-codes\fR, the \fBgcc\fR program instead returns with
  the numerically highest error produced by any phase returning an error
! indication.  The C, \*(C+, and Fortran front ends return 4 if an internal
  compiler error is encountered.
! .IP "\fB\-pipe\fR" 4
  .IX Item "-pipe"
  Use pipes rather than temporary files for communication between the
  various stages of compilation.  This fails to work on some systems where
! the assembler is unable to read from a pipe; but the \s-1GNU\s0 assembler has
  no trouble.
! .IP "\fB\-specs=\fR\fIfile\fR" 4
  .IX Item "-specs=file"
  Process \fIfile\fR after the compiler reads in the standard \fIspecs\fR
  file, in order to override the defaults which the \fBgcc\fR driver
--- 2193,2216 ----
  \&        diff /tmp/O2\-opts /tmp/O3\-opts | grep enabled
  .Ve
  .RE
! .IP \fB\-\-version\fR 4
  .IX Item "--version"
! Display the version number and copyrights of the invoked GCC.
! .IP \fB\-pass\-exit\-codes\fR 4
  .IX Item "-pass-exit-codes"
  Normally the \fBgcc\fR program exits with the code of 1 if any
! phase of the compiler returns a non\-success return code.  If you specify
  \&\fB\-pass\-exit\-codes\fR, the \fBgcc\fR program instead returns with
  the numerically highest error produced by any phase returning an error
! indication.  The C, C++, and Fortran front ends return 4 if an internal
  compiler error is encountered.
! .IP \fB\-pipe\fR 4
  .IX Item "-pipe"
  Use pipes rather than temporary files for communication between the
  various stages of compilation.  This fails to work on some systems where
! the assembler is unable to read from a pipe; but the GNU assembler has
  no trouble.
! .IP \fB\-specs=\fR\fIfile\fR 4
  .IX Item "-specs=file"
  Process \fIfile\fR after the compiler reads in the standard \fIspecs\fR
  file, in order to override the defaults which the \fBgcc\fR driver
*************** program uses when determining what switc
*** 2285,2291 ****
  \&\fBcc1plus\fR, \fBas\fR, \fBld\fR, etc.  More than one
  \&\fB\-specs=\fR\fIfile\fR can be specified on the command line, and they
  are processed in order, from left to right.
! .IP "\fB\-wrapper\fR" 4
  .IX Item "-wrapper"
  Invoke all subcommands under a wrapper program.  The name of the
  wrapper program and its parameters are passed as a comma separated
--- 2218,2224 ----
  \&\fBcc1plus\fR, \fBas\fR, \fBld\fR, etc.  More than one
  \&\fB\-specs=\fR\fIfile\fR can be specified on the command line, and they
  are processed in order, from left to right.
! .IP \fB\-wrapper\fR 4
  .IX Item "-wrapper"
  Invoke all subcommands under a wrapper program.  The name of the
  wrapper program and its parameters are passed as a comma separated
*************** list.
*** 2298,2354 ****
  This invokes all subprograms of \fBgcc\fR under
  \&\fBgdb \-\-args\fR, thus the invocation of \fBcc1\fR is
  \&\fBgdb \-\-args cc1 ...\fR.
! .IP "\fB\-ffile\-prefix\-map=\fR\fIold\fR\fB=\fR\fInew\fR" 4
  .IX Item "-ffile-prefix-map=old=new"
! When compiling files residing in directory \fI\fIold\fI\fR, record
  any references to them in the result of the compilation as if the
! files resided in directory \fI\fInew\fI\fR instead.  Specifying this
  option is equivalent to specifying all the individual
  \&\fB\-f*\-prefix\-map\fR options.  This can be used to make reproducible
  builds that are location independent.  Directories referenced by
  directives are not affected by these options.  See also
  \&\fB\-fmacro\-prefix\-map\fR, \fB\-fdebug\-prefix\-map\fR,
  \&\fB\-fprofile\-prefix\-map\fR and \fB\-fcanon\-prefix\-map\fR.
! .IP "\fB\-fcanon\-prefix\-map\fR" 4
  .IX Item "-fcanon-prefix-map"
  For the \fB\-f*\-prefix\-map\fR options normally comparison
! of \fI\fIold\fI\fR prefix against the filename that would be normally
  referenced in the result of the compilation is done using textual
  comparison of the prefixes, or ignoring character case for case insensitive
! filesystems and considering slashes and backslashes as equal on \s-1DOS\s0 based
  filesystems.  The \fB\-fcanon\-prefix\-map\fR causes such comparisons
! to be done on canonicalized paths of \fI\fIold\fI\fR
  and the referenced filename.
! .IP "\fB\-fplugin=\fR\fIname\fR\fB.so\fR" 4
  .IX Item "-fplugin=name.so"
  Load the plugin code in file \fIname\fR.so, assumed to be a
! shared object to be dlopen'd by the compiler.  The base name of
  the shared object file is used to identify the plugin for the
  purposes of argument parsing (See
  \&\fB\-fplugin\-arg\-\fR\fIname\fR\fB\-\fR\fIkey\fR\fB=\fR\fIvalue\fR below).
  Each plugin should define the callback functions specified in the
! Plugins \s-1API.\s0
! .IP "\fB\-fplugin\-arg\-\fR\fIname\fR\fB\-\fR\fIkey\fR\fB=\fR\fIvalue\fR" 4
  .IX Item "-fplugin-arg-name-key=value"
  Define an argument called \fIkey\fR with a value of \fIvalue\fR
  for the plugin called \fIname\fR.
! .IP "\fB\-fdump\-ada\-spec\fR[\fB\-slim\fR]" 4
  .IX Item "-fdump-ada-spec[-slim]"
! For C and \*(C+ source and include files, generate corresponding Ada specs.
! .IP "\fB\-fada\-spec\-parent=\fR\fIunit\fR" 4
  .IX Item "-fada-spec-parent=unit"
  In conjunction with \fB\-fdump\-ada\-spec\fR[\fB\-slim\fR] above, generate
  Ada specs as child units of parent \fIunit\fR.
! .IP "\fB\-fdump\-go\-spec=\fR\fIfile\fR" 4
  .IX Item "-fdump-go-spec=file"
  For input files in any language, generate corresponding Go
  declarations in \fIfile\fR.  This generates Go \f(CW\*(C`const\*(C'\fR,
  \&\f(CW\*(C`type\*(C'\fR, \f(CW\*(C`var\*(C'\fR, and \f(CW\*(C`func\*(C'\fR declarations which may be a
  useful way to start writing a Go interface to code written in some
  other language.
! .IP "\fB@\fR\fIfile\fR" 4
  .IX Item "@file"
! Read command-line options from \fIfile\fR.  The options read are
  inserted in place of the original @\fIfile\fR option.  If \fIfile\fR
  does not exist, or cannot be read, then the option will be treated
  literally, and not removed.
--- 2231,2287 ----
  This invokes all subprograms of \fBgcc\fR under
  \&\fBgdb \-\-args\fR, thus the invocation of \fBcc1\fR is
  \&\fBgdb \-\-args cc1 ...\fR.
! .IP \fB\-ffile\-prefix\-map=\fR\fIold\fR\fB=\fR\fInew\fR 4
  .IX Item "-ffile-prefix-map=old=new"
! When compiling files residing in directory \fIold\fR, record
  any references to them in the result of the compilation as if the
! files resided in directory \fInew\fR instead.  Specifying this
  option is equivalent to specifying all the individual
  \&\fB\-f*\-prefix\-map\fR options.  This can be used to make reproducible
  builds that are location independent.  Directories referenced by
  directives are not affected by these options.  See also
  \&\fB\-fmacro\-prefix\-map\fR, \fB\-fdebug\-prefix\-map\fR,
  \&\fB\-fprofile\-prefix\-map\fR and \fB\-fcanon\-prefix\-map\fR.
! .IP \fB\-fcanon\-prefix\-map\fR 4
  .IX Item "-fcanon-prefix-map"
  For the \fB\-f*\-prefix\-map\fR options normally comparison
! of \fIold\fR prefix against the filename that would be normally
  referenced in the result of the compilation is done using textual
  comparison of the prefixes, or ignoring character case for case insensitive
! filesystems and considering slashes and backslashes as equal on DOS based
  filesystems.  The \fB\-fcanon\-prefix\-map\fR causes such comparisons
! to be done on canonicalized paths of \fIold\fR
  and the referenced filename.
! .IP \fB\-fplugin=\fR\fIname\fR\fB.so\fR 4
  .IX Item "-fplugin=name.so"
  Load the plugin code in file \fIname\fR.so, assumed to be a
! shared object to be dlopen\*(Aqd by the compiler.  The base name of
  the shared object file is used to identify the plugin for the
  purposes of argument parsing (See
  \&\fB\-fplugin\-arg\-\fR\fIname\fR\fB\-\fR\fIkey\fR\fB=\fR\fIvalue\fR below).
  Each plugin should define the callback functions specified in the
! Plugins API.
! .IP \fB\-fplugin\-arg\-\fR\fIname\fR\fB\-\fR\fIkey\fR\fB=\fR\fIvalue\fR 4
  .IX Item "-fplugin-arg-name-key=value"
  Define an argument called \fIkey\fR with a value of \fIvalue\fR
  for the plugin called \fIname\fR.
! .IP \fB\-fdump\-ada\-spec\fR[\fB\-slim\fR] 4
  .IX Item "-fdump-ada-spec[-slim]"
! For C and C++ source and include files, generate corresponding Ada specs.
! .IP \fB\-fada\-spec\-parent=\fR\fIunit\fR 4
  .IX Item "-fada-spec-parent=unit"
  In conjunction with \fB\-fdump\-ada\-spec\fR[\fB\-slim\fR] above, generate
  Ada specs as child units of parent \fIunit\fR.
! .IP \fB\-fdump\-go\-spec=\fR\fIfile\fR 4
  .IX Item "-fdump-go-spec=file"
  For input files in any language, generate corresponding Go
  declarations in \fIfile\fR.  This generates Go \f(CW\*(C`const\*(C'\fR,
  \&\f(CW\*(C`type\*(C'\fR, \f(CW\*(C`var\*(C'\fR, and \f(CW\*(C`func\*(C'\fR declarations which may be a
  useful way to start writing a Go interface to code written in some
  other language.
! .IP \fB@\fR\fIfile\fR 4
  .IX Item "@file"
! Read command\-line options from \fIfile\fR.  The options read are
  inserted in place of the original @\fIfile\fR option.  If \fIfile\fR
  does not exist, or cannot be read, then the option will be treated
  literally, and not removed.
*************** option in either single or double quotes
*** 2359,2658 ****
  backslash) may be included by prefixing the character to be included
  with a backslash.  The \fIfile\fR may itself contain additional
  @\fIfile\fR options; any such options will be processed recursively.
! .SS "Compiling \*(C+ Programs"
! .IX Subsection "Compiling Programs"
! \&\*(C+ source files conventionally use one of the suffixes \fB.C\fR,
  \&\fB.cc\fR, \fB.cpp\fR, \fB.CPP\fR, \fB.c++\fR, \fB.cp\fR, or
! \&\fB.cxx\fR; \*(C+ header files often use \fB.hh\fR, \fB.hpp\fR,
  \&\fB.H\fR, or (for shared template code) \fB.tcc\fR;
! preprocessed \*(C+ files use the suffix \fB.ii\fR; and \*(C+20 module interface
  units sometimes use \fB.ixx\fR, \fB.cppm\fR, \fB.cxxm\fR, \fB.c++m\fR,
  or \fB.ccm\fR.
  .PP
! \&\s-1GCC\s0 recognizes files with these names and compiles them as \*(C+ programs even if you
  call the compiler the same way as for compiling C programs (usually
  with the name \fBgcc\fR).
  .PP
! However, the use of \fBgcc\fR does not add the \*(C+ library.
! \&\fBg++\fR is a program that calls \s-1GCC\s0 and automatically specifies linking
! against the \*(C+ library.  It treats \fB.c\fR,
! \&\fB.h\fR and \fB.i\fR files as \*(C+ source files instead of C source
  files unless \fB\-x\fR is used.  This program is also useful when
! precompiling a C header file with a \fB.h\fR extension for use in \*(C+
  compilations.  On many systems, \fBg++\fR is also installed with
  the name \fBc++\fR.
  .PP
! When you compile \*(C+ programs, you may specify many of the same
! command-line options that you use for compiling programs in any
! language; or command-line options meaningful for C and related
! languages; or options that are meaningful only for \*(C+ programs.
  .SS "Options Controlling C Dialect"
  .IX Subsection "Options Controlling C Dialect"
  The following options control the dialect of C (or languages derived
! from C, such as \*(C+, Objective-C and Objective\-\*(C+) that the compiler
  accepts:
! .IP "\fB\-ansi\fR" 4
  .IX Item "-ansi"
! In C mode, this is equivalent to \fB\-std=c90\fR. In \*(C+ mode, it is
  equivalent to \fB\-std=c++98\fR.
! .IP "\fB\-std=\fR" 4
  .IX Item "-std="
  Determine the language standard.   This option
! is currently only supported when compiling C or \*(C+.
  .Sp
  The compiler can accept several base standards, such as \fBc90\fR or
! \&\fBc++98\fR, and \s-1GNU\s0 dialects of those standards, such as
  \&\fBgnu90\fR or \fBgnu++98\fR.  When a base standard is specified, the
  compiler accepts all programs following that standard plus those
! using \s-1GNU\s0 extensions that do not contradict it.  For example,
! \&\fB\-std=c90\fR turns off certain features of \s-1GCC\s0 that are
! incompatible with \s-1ISO C90,\s0 such as the \f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`typeof\*(C'\fR
! keywords, but not other \s-1GNU\s0 extensions that do not have a meaning in
! \&\s-1ISO C90,\s0 such as omitting the middle term of a \f(CW\*(C`?:\*(C'\fR
! expression. On the other hand, when a \s-1GNU\s0 dialect of a standard is
  specified, all features supported by the compiler are enabled, even when
  those features change the meaning of the base standard.  As a result, some
! strict-conforming programs may be rejected.  The particular standard
! is used by \fB\-Wpedantic\fR to identify which features are \s-1GNU\s0
  extensions given that version of the standard. For example
! \&\fB\-std=gnu90 \-Wpedantic\fR warns about \*(C+ style \fB//\fR
  comments, while \fB\-std=gnu99 \-Wpedantic\fR does not.
  .Sp
  A value for this option must be provided; possible values are
  .RS 4
! .IP "\fBc90\fR" 4
  .IX Item "c90"
  .PD 0
! .IP "\fBc89\fR" 4
  .IX Item "c89"
! .IP "\fBiso9899:1990\fR" 4
  .IX Item "iso9899:1990"
  .PD
! Support all \s-1ISO C90\s0 programs (certain \s-1GNU\s0 extensions that conflict
! with \s-1ISO C90\s0 are disabled). Same as \fB\-ansi\fR for C code.
! .IP "\fBiso9899:199409\fR" 4
  .IX Item "iso9899:199409"
! \&\s-1ISO C90\s0 as modified in amendment 1.
! .IP "\fBc99\fR" 4
  .IX Item "c99"
  .PD 0
! .IP "\fBc9x\fR" 4
  .IX Item "c9x"
! .IP "\fBiso9899:1999\fR" 4
  .IX Item "iso9899:1999"
! .IP "\fBiso9899:199x\fR" 4
  .IX Item "iso9899:199x"
  .PD
! \&\s-1ISO C99.\s0  This standard is substantially completely supported, modulo
! bugs and floating-point issues
  (mainly but not entirely relating to optional C99 features from
  Annexes F and G).  See
  <\fBhttps://gcc.gnu.org/c99status.html\fR> for more information.  The
  names \fBc9x\fR and \fBiso9899:199x\fR are deprecated.
! .IP "\fBc11\fR" 4
  .IX Item "c11"
  .PD 0
! .IP "\fBc1x\fR" 4
  .IX Item "c1x"
! .IP "\fBiso9899:2011\fR" 4
  .IX Item "iso9899:2011"
  .PD
! \&\s-1ISO C11,\s0 the 2011 revision of the \s-1ISO C\s0 standard.  This standard is
! substantially completely supported, modulo bugs, floating-point issues
  (mainly but not entirely relating to optional C11 features from
! Annexes F and G) and the optional Annexes K (Bounds-checking
  interfaces) and L (Analyzability).  The name \fBc1x\fR is deprecated.
! .IP "\fBc17\fR" 4
  .IX Item "c17"
  .PD 0
! .IP "\fBc18\fR" 4
  .IX Item "c18"
! .IP "\fBiso9899:2017\fR" 4
  .IX Item "iso9899:2017"
! .IP "\fBiso9899:2018\fR" 4
  .IX Item "iso9899:2018"
  .PD
! \&\s-1ISO C17,\s0 the 2017 revision of the \s-1ISO C\s0 standard
  (published in 2018).  This standard is
  same as C11 except for corrections of defects (all of which are also
  applied with \fB\-std=c11\fR) and a new value of
  \&\f(CW\*(C`_\|_STDC_VERSION_\|_\*(C'\fR, and so is supported to the same extent as C11.
! .IP "\fBc23\fR" 4
  .IX Item "c23"
  .PD 0
! .IP "\fBc2x\fR" 4
  .IX Item "c2x"
! .IP "\fBiso9899:2024\fR" 4
  .IX Item "iso9899:2024"
  .PD
! \&\s-1ISO C23,\s0 the 2023 revision of the \s-1ISO C\s0 standard (published in 2024).  The
  name \fBc2x\fR is deprecated.
! .IP "\fBc2y\fR" 4
  .IX Item "c2y"
! The next version of the \s-1ISO C\s0 standard, still under development.  The
  support for this version is experimental and incomplete.
! .IP "\fBgnu90\fR" 4
  .IX Item "gnu90"
  .PD 0
! .IP "\fBgnu89\fR" 4
  .IX Item "gnu89"
  .PD
! \&\s-1GNU\s0 dialect of \s-1ISO C90\s0 (including some C99 features).
! .IP "\fBgnu99\fR" 4
  .IX Item "gnu99"
  .PD 0
! .IP "\fBgnu9x\fR" 4
  .IX Item "gnu9x"
  .PD
! \&\s-1GNU\s0 dialect of \s-1ISO C99.\s0  The name \fBgnu9x\fR is deprecated.
! .IP "\fBgnu11\fR" 4
  .IX Item "gnu11"
  .PD 0
! .IP "\fBgnu1x\fR" 4
  .IX Item "gnu1x"
  .PD
! \&\s-1GNU\s0 dialect of \s-1ISO C11.\s0
  The name \fBgnu1x\fR is deprecated.
! .IP "\fBgnu17\fR" 4
  .IX Item "gnu17"
  .PD 0
! .IP "\fBgnu18\fR" 4
  .IX Item "gnu18"
  .PD
! \&\s-1GNU\s0 dialect of \s-1ISO C17.\s0
! .IP "\fBgnu23\fR" 4
  .IX Item "gnu23"
  .PD 0
! .IP "\fBgnu2x\fR" 4
  .IX Item "gnu2x"
  .PD
! \&\s-1GNU\s0 dialect of \s-1ISO C23.\s0  This is the default for C code.  The name
  \&\fBgnu2x\fR is deprecated.
! .IP "\fBgnu2y\fR" 4
  .IX Item "gnu2y"
! The next version of the \s-1ISO C\s0 standard, still under development, plus
! \&\s-1GNU\s0 extensions.  The support for this version is experimental and
  incomplete.  The name \fBgnu2x\fR is deprecated.
! .IP "\fBc++98\fR" 4
  .IX Item "c++98"
  .PD 0
! .IP "\fBc++03\fR" 4
  .IX Item "c++03"
  .PD
! The 1998 \s-1ISO \*(C+\s0 standard plus the 2003 technical corrigendum and some
! additional defect reports. Same as \fB\-ansi\fR for \*(C+ code.
! .IP "\fBgnu++98\fR" 4
  .IX Item "gnu++98"
  .PD 0
! .IP "\fBgnu++03\fR" 4
  .IX Item "gnu++03"
  .PD
! \&\s-1GNU\s0 dialect of \fB\-std=c++98\fR.
! .IP "\fBc++11\fR" 4
  .IX Item "c++11"
  .PD 0
! .IP "\fBc++0x\fR" 4
  .IX Item "c++0x"
  .PD
! The 2011 \s-1ISO \*(C+\s0 standard plus amendments.
  The name \fBc++0x\fR is deprecated.
! .IP "\fBgnu++11\fR" 4
  .IX Item "gnu++11"
  .PD 0
! .IP "\fBgnu++0x\fR" 4
  .IX Item "gnu++0x"
  .PD
! \&\s-1GNU\s0 dialect of \fB\-std=c++11\fR.
  The name \fBgnu++0x\fR is deprecated.
! .IP "\fBc++14\fR" 4
  .IX Item "c++14"
  .PD 0
! .IP "\fBc++1y\fR" 4
  .IX Item "c++1y"
  .PD
! The 2014 \s-1ISO \*(C+\s0 standard plus amendments.
  The name \fBc++1y\fR is deprecated.
! .IP "\fBgnu++14\fR" 4
  .IX Item "gnu++14"
  .PD 0
! .IP "\fBgnu++1y\fR" 4
  .IX Item "gnu++1y"
  .PD
! \&\s-1GNU\s0 dialect of \fB\-std=c++14\fR.
  The name \fBgnu++1y\fR is deprecated.
! .IP "\fBc++17\fR" 4
  .IX Item "c++17"
  .PD 0
! .IP "\fBc++1z\fR" 4
  .IX Item "c++1z"
  .PD
! The 2017 \s-1ISO \*(C+\s0 standard plus amendments.
  The name \fBc++1z\fR is deprecated.
! .IP "\fBgnu++17\fR" 4
  .IX Item "gnu++17"
  .PD 0
! .IP "\fBgnu++1z\fR" 4
  .IX Item "gnu++1z"
  .PD
! \&\s-1GNU\s0 dialect of \fB\-std=c++17\fR.
! This is the default for \*(C+ code.
  The name \fBgnu++1z\fR is deprecated.
! .IP "\fBc++20\fR" 4
  .IX Item "c++20"
  .PD 0
! .IP "\fBc++2a\fR" 4
  .IX Item "c++2a"
  .PD
! The 2020 \s-1ISO \*(C+\s0 standard plus amendments.
  Support is experimental, and could change in incompatible ways in
  future releases.
  The name \fBc++2a\fR is deprecated.
! .IP "\fBgnu++20\fR" 4
  .IX Item "gnu++20"
  .PD 0
! .IP "\fBgnu++2a\fR" 4
  .IX Item "gnu++2a"
  .PD
! \&\s-1GNU\s0 dialect of \fB\-std=c++20\fR.
  Support is experimental, and could change in incompatible ways in
  future releases.
  The name \fBgnu++2a\fR is deprecated.
! .IP "\fBc++23\fR" 4
  .IX Item "c++23"
  .PD 0
! .IP "\fBc++2b\fR" 4
  .IX Item "c++2b"
  .PD
! The 2023 \s-1ISO \*(C+\s0 standard plus amendments (published in 2024).
  Support is experimental, and could change in incompatible ways in
  future releases.
  The name \fBc++2b\fR is deprecated.
! .IP "\fBgnu++23\fR" 4
  .IX Item "gnu++23"
  .PD 0
! .IP "\fBgnu++2b\fR" 4
  .IX Item "gnu++2b"
  .PD
! \&\s-1GNU\s0 dialect of \fB\-std=c++23\fR.
  Support is experimental, and could change in incompatible ways in
  future releases.
  The name \fBgnu++2b\fR is deprecated.
! .IP "\fBc++2c\fR" 4
  .IX Item "c++2c"
  .PD 0
! .IP "\fBc++26\fR" 4
  .IX Item "c++26"
  .PD
! The next revision of the \s-1ISO \*(C+\s0 standard, planned for
  2026.  Support is highly experimental, and will almost certainly
  change in incompatible ways in future releases.
! .IP "\fBgnu++2c\fR" 4
  .IX Item "gnu++2c"
  .PD 0
! .IP "\fBgnu++26\fR" 4
  .IX Item "gnu++26"
  .PD
! \&\s-1GNU\s0 dialect of \fB\-std=c++2c\fR.  Support is highly experimental,
  and will almost certainly change in incompatible ways in future
  releases.
  .RE
--- 2292,2591 ----
  backslash) may be included by prefixing the character to be included
  with a backslash.  The \fIfile\fR may itself contain additional
  @\fIfile\fR options; any such options will be processed recursively.
! .SS "Compiling C++ Programs"
! .IX Subsection "Compiling C++ Programs"
! C++ source files conventionally use one of the suffixes \fB.C\fR,
  \&\fB.cc\fR, \fB.cpp\fR, \fB.CPP\fR, \fB.c++\fR, \fB.cp\fR, or
! \&\fB.cxx\fR; C++ header files often use \fB.hh\fR, \fB.hpp\fR,
  \&\fB.H\fR, or (for shared template code) \fB.tcc\fR;
! preprocessed C++ files use the suffix \fB.ii\fR; and C++20 module interface
  units sometimes use \fB.ixx\fR, \fB.cppm\fR, \fB.cxxm\fR, \fB.c++m\fR,
  or \fB.ccm\fR.
  .PP
! GCC recognizes files with these names and compiles them as C++ programs even if you
  call the compiler the same way as for compiling C programs (usually
  with the name \fBgcc\fR).
  .PP
! However, the use of \fBgcc\fR does not add the C++ library.
! \&\fBg++\fR is a program that calls GCC and automatically specifies linking
! against the C++ library.  It treats \fB.c\fR,
! \&\fB.h\fR and \fB.i\fR files as C++ source files instead of C source
  files unless \fB\-x\fR is used.  This program is also useful when
! precompiling a C header file with a \fB.h\fR extension for use in C++
  compilations.  On many systems, \fBg++\fR is also installed with
  the name \fBc++\fR.
  .PP
! When you compile C++ programs, you may specify many of the same
! command\-line options that you use for compiling programs in any
! language; or command\-line options meaningful for C and related
! languages; or options that are meaningful only for C++ programs.
  .SS "Options Controlling C Dialect"
  .IX Subsection "Options Controlling C Dialect"
  The following options control the dialect of C (or languages derived
! from C, such as C++, Objective\-C and Objective\-C++) that the compiler
  accepts:
! .IP \fB\-ansi\fR 4
  .IX Item "-ansi"
! In C mode, this is equivalent to \fB\-std=c90\fR. In C++ mode, it is
  equivalent to \fB\-std=c++98\fR.
! .IP \fB\-std=\fR 4
  .IX Item "-std="
  Determine the language standard.   This option
! is currently only supported when compiling C or C++.
  .Sp
  The compiler can accept several base standards, such as \fBc90\fR or
! \&\fBc++98\fR, and GNU dialects of those standards, such as
  \&\fBgnu90\fR or \fBgnu++98\fR.  When a base standard is specified, the
  compiler accepts all programs following that standard plus those
! using GNU extensions that do not contradict it.  For example,
! \&\fB\-std=c90\fR turns off certain features of GCC that are
! incompatible with ISO C90, such as the \f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`typeof\*(C'\fR
! keywords, but not other GNU extensions that do not have a meaning in
! ISO C90, such as omitting the middle term of a \f(CW\*(C`?:\*(C'\fR
! expression. On the other hand, when a GNU dialect of a standard is
  specified, all features supported by the compiler are enabled, even when
  those features change the meaning of the base standard.  As a result, some
! strict\-conforming programs may be rejected.  The particular standard
! is used by \fB\-Wpedantic\fR to identify which features are GNU
  extensions given that version of the standard. For example
! \&\fB\-std=gnu90 \-Wpedantic\fR warns about C++ style \fB//\fR
  comments, while \fB\-std=gnu99 \-Wpedantic\fR does not.
  .Sp
  A value for this option must be provided; possible values are
  .RS 4
! .IP \fBc90\fR 4
  .IX Item "c90"
  .PD 0
! .IP \fBc89\fR 4
  .IX Item "c89"
! .IP \fBiso9899:1990\fR 4
  .IX Item "iso9899:1990"
  .PD
! Support all ISO C90 programs (certain GNU extensions that conflict
! with ISO C90 are disabled). Same as \fB\-ansi\fR for C code.
! .IP \fBiso9899:199409\fR 4
  .IX Item "iso9899:199409"
! ISO C90 as modified in amendment 1.
! .IP \fBc99\fR 4
  .IX Item "c99"
  .PD 0
! .IP \fBc9x\fR 4
  .IX Item "c9x"
! .IP \fBiso9899:1999\fR 4
  .IX Item "iso9899:1999"
! .IP \fBiso9899:199x\fR 4
  .IX Item "iso9899:199x"
  .PD
! ISO C99.  This standard is substantially completely supported, modulo
! bugs and floating\-point issues
  (mainly but not entirely relating to optional C99 features from
  Annexes F and G).  See
  <\fBhttps://gcc.gnu.org/c99status.html\fR> for more information.  The
  names \fBc9x\fR and \fBiso9899:199x\fR are deprecated.
! .IP \fBc11\fR 4
  .IX Item "c11"
  .PD 0
! .IP \fBc1x\fR 4
  .IX Item "c1x"
! .IP \fBiso9899:2011\fR 4
  .IX Item "iso9899:2011"
  .PD
! ISO C11, the 2011 revision of the ISO C standard.  This standard is
! substantially completely supported, modulo bugs, floating\-point issues
  (mainly but not entirely relating to optional C11 features from
! Annexes F and G) and the optional Annexes K (Bounds\-checking
  interfaces) and L (Analyzability).  The name \fBc1x\fR is deprecated.
! .IP \fBc17\fR 4
  .IX Item "c17"
  .PD 0
! .IP \fBc18\fR 4
  .IX Item "c18"
! .IP \fBiso9899:2017\fR 4
  .IX Item "iso9899:2017"
! .IP \fBiso9899:2018\fR 4
  .IX Item "iso9899:2018"
  .PD
! ISO C17, the 2017 revision of the ISO C standard
  (published in 2018).  This standard is
  same as C11 except for corrections of defects (all of which are also
  applied with \fB\-std=c11\fR) and a new value of
  \&\f(CW\*(C`_\|_STDC_VERSION_\|_\*(C'\fR, and so is supported to the same extent as C11.
! .IP \fBc23\fR 4
  .IX Item "c23"
  .PD 0
! .IP \fBc2x\fR 4
  .IX Item "c2x"
! .IP \fBiso9899:2024\fR 4
  .IX Item "iso9899:2024"
  .PD
! ISO C23, the 2023 revision of the ISO C standard (published in 2024).  The
  name \fBc2x\fR is deprecated.
! .IP \fBc2y\fR 4
  .IX Item "c2y"
! The next version of the ISO C standard, still under development.  The
  support for this version is experimental and incomplete.
! .IP \fBgnu90\fR 4
  .IX Item "gnu90"
  .PD 0
! .IP \fBgnu89\fR 4
  .IX Item "gnu89"
  .PD
! GNU dialect of ISO C90 (including some C99 features).
! .IP \fBgnu99\fR 4
  .IX Item "gnu99"
  .PD 0
! .IP \fBgnu9x\fR 4
  .IX Item "gnu9x"
  .PD
! GNU dialect of ISO C99.  The name \fBgnu9x\fR is deprecated.
! .IP \fBgnu11\fR 4
  .IX Item "gnu11"
  .PD 0
! .IP \fBgnu1x\fR 4
  .IX Item "gnu1x"
  .PD
! GNU dialect of ISO C11.
  The name \fBgnu1x\fR is deprecated.
! .IP \fBgnu17\fR 4
  .IX Item "gnu17"
  .PD 0
! .IP \fBgnu18\fR 4
  .IX Item "gnu18"
  .PD
! GNU dialect of ISO C17.
! .IP \fBgnu23\fR 4
  .IX Item "gnu23"
  .PD 0
! .IP \fBgnu2x\fR 4
  .IX Item "gnu2x"
  .PD
! GNU dialect of ISO C23.  This is the default for C code.  The name
  \&\fBgnu2x\fR is deprecated.
! .IP \fBgnu2y\fR 4
  .IX Item "gnu2y"
! The next version of the ISO C standard, still under development, plus
! GNU extensions.  The support for this version is experimental and
  incomplete.  The name \fBgnu2x\fR is deprecated.
! .IP \fBc++98\fR 4
  .IX Item "c++98"
  .PD 0
! .IP \fBc++03\fR 4
  .IX Item "c++03"
  .PD
! The 1998 ISO C++ standard plus the 2003 technical corrigendum and some
! additional defect reports. Same as \fB\-ansi\fR for C++ code.
! .IP \fBgnu++98\fR 4
  .IX Item "gnu++98"
  .PD 0
! .IP \fBgnu++03\fR 4
  .IX Item "gnu++03"
  .PD
! GNU dialect of \fB\-std=c++98\fR.
! .IP \fBc++11\fR 4
  .IX Item "c++11"
  .PD 0
! .IP \fBc++0x\fR 4
  .IX Item "c++0x"
  .PD
! The 2011 ISO C++ standard plus amendments.
  The name \fBc++0x\fR is deprecated.
! .IP \fBgnu++11\fR 4
  .IX Item "gnu++11"
  .PD 0
! .IP \fBgnu++0x\fR 4
  .IX Item "gnu++0x"
  .PD
! GNU dialect of \fB\-std=c++11\fR.
  The name \fBgnu++0x\fR is deprecated.
! .IP \fBc++14\fR 4
  .IX Item "c++14"
  .PD 0
! .IP \fBc++1y\fR 4
  .IX Item "c++1y"
  .PD
! The 2014 ISO C++ standard plus amendments.
  The name \fBc++1y\fR is deprecated.
! .IP \fBgnu++14\fR 4
  .IX Item "gnu++14"
  .PD 0
! .IP \fBgnu++1y\fR 4
  .IX Item "gnu++1y"
  .PD
! GNU dialect of \fB\-std=c++14\fR.
  The name \fBgnu++1y\fR is deprecated.
! .IP \fBc++17\fR 4
  .IX Item "c++17"
  .PD 0
! .IP \fBc++1z\fR 4
  .IX Item "c++1z"
  .PD
! The 2017 ISO C++ standard plus amendments.
  The name \fBc++1z\fR is deprecated.
! .IP \fBgnu++17\fR 4
  .IX Item "gnu++17"
  .PD 0
! .IP \fBgnu++1z\fR 4
  .IX Item "gnu++1z"
  .PD
! GNU dialect of \fB\-std=c++17\fR.
! This is the default for C++ code.
  The name \fBgnu++1z\fR is deprecated.
! .IP \fBc++20\fR 4
  .IX Item "c++20"
  .PD 0
! .IP \fBc++2a\fR 4
  .IX Item "c++2a"
  .PD
! The 2020 ISO C++ standard plus amendments.
  Support is experimental, and could change in incompatible ways in
  future releases.
  The name \fBc++2a\fR is deprecated.
! .IP \fBgnu++20\fR 4
  .IX Item "gnu++20"
  .PD 0
! .IP \fBgnu++2a\fR 4
  .IX Item "gnu++2a"
  .PD
! GNU dialect of \fB\-std=c++20\fR.
  Support is experimental, and could change in incompatible ways in
  future releases.
  The name \fBgnu++2a\fR is deprecated.
! .IP \fBc++23\fR 4
  .IX Item "c++23"
  .PD 0
! .IP \fBc++2b\fR 4
  .IX Item "c++2b"
  .PD
! The 2023 ISO C++ standard plus amendments (published in 2024).
  Support is experimental, and could change in incompatible ways in
  future releases.
  The name \fBc++2b\fR is deprecated.
! .IP \fBgnu++23\fR 4
  .IX Item "gnu++23"
  .PD 0
! .IP \fBgnu++2b\fR 4
  .IX Item "gnu++2b"
  .PD
! GNU dialect of \fB\-std=c++23\fR.
  Support is experimental, and could change in incompatible ways in
  future releases.
  The name \fBgnu++2b\fR is deprecated.
! .IP \fBc++2c\fR 4
  .IX Item "c++2c"
  .PD 0
! .IP \fBc++26\fR 4
  .IX Item "c++26"
  .PD
! The next revision of the ISO C++ standard, planned for
  2026.  Support is highly experimental, and will almost certainly
  change in incompatible ways in future releases.
! .IP \fBgnu++2c\fR 4
  .IX Item "gnu++2c"
  .PD 0
! .IP \fBgnu++26\fR 4
  .IX Item "gnu++26"
  .PD
! GNU dialect of \fB\-std=c++2c\fR.  Support is highly experimental,
  and will almost certainly change in incompatible ways in future
  releases.
  .RE
*************** definition (\fBC\fR or \fBF\fR, respecti
*** 2673,2711 ****
  character).  In the case of function definitions, a K&R\-style list of
  arguments followed by their declarations is also provided, inside
  comments, after the declaration.
! .IP "\fB\-fno\-asm\fR" 4
  .IX Item "-fno-asm"
  Do not recognize \f(CW\*(C`asm\*(C'\fR, \f(CW\*(C`inline\*(C'\fR or \f(CW\*(C`typeof\*(C'\fR as a
  keyword, so that code can use these words as identifiers.  You can use
  the keywords \f(CW\*(C`_\|_asm_\|_\*(C'\fR, \f(CW\*(C`_\|_inline_\|_\*(C'\fR and \f(CW\*(C`_\|_typeof_\|_\*(C'\fR
  instead.  In C, \fB\-ansi\fR implies \fB\-fno\-asm\fR.
  .Sp
! In \*(C+, \f(CW\*(C`inline\*(C'\fR is a standard keyword and is not affected by
  this switch.  You may want to use the \fB\-fno\-gnu\-keywords\fR flag
  instead, which disables \f(CW\*(C`typeof\*(C'\fR but not \f(CW\*(C`asm\*(C'\fR and
  \&\f(CW\*(C`inline\*(C'\fR.  In C99 mode (\fB\-std=c99\fR or \fB\-std=gnu99\fR),
  this switch only affects the \f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`typeof\*(C'\fR keywords,
! since \f(CW\*(C`inline\*(C'\fR is a standard keyword in \s-1ISO C99.\s0  In C23 mode
  (\fB\-std=c23\fR or \fB\-std=gnu23\fR), this switch only affects
  the \f(CW\*(C`asm\*(C'\fR keyword, since \f(CW\*(C`typeof\*(C'\fR is a standard keyword in
! \&\s-1ISO C23.\s0
! .IP "\fB\-fno\-builtin\fR" 4
  .IX Item "-fno-builtin"
  .PD 0
! .IP "\fB\-fno\-builtin\-\fR\fIfunction\fR" 4
  .IX Item "-fno-builtin-function"
  .PD
! Don't recognize built-in functions that do not begin with
  \&\fB_\|_builtin_\fR as prefix.
  .Sp
! \&\s-1GCC\s0 normally generates special code to handle certain built-in functions
  more efficiently; for instance, calls to \f(CW\*(C`alloca\*(C'\fR may become single
  instructions which adjust the stack directly, and calls to \f(CW\*(C`memcpy\*(C'\fR
  may become inline copy loops.  The resulting code is often both smaller
  and faster, but since the function calls no longer appear as such, you
  cannot set a breakpoint on those calls, nor can you change the behavior
  of the functions by linking with a different library.  In addition,
! when a function is recognized as a built-in function, \s-1GCC\s0 may use
  information about that function to warn about problems with calls to
  that function, or to generate more efficient code, even if the
  resulting code still contains calls to that function.  For example,
--- 2606,2644 ----
  character).  In the case of function definitions, a K&R\-style list of
  arguments followed by their declarations is also provided, inside
  comments, after the declaration.
! .IP \fB\-fno\-asm\fR 4
  .IX Item "-fno-asm"
  Do not recognize \f(CW\*(C`asm\*(C'\fR, \f(CW\*(C`inline\*(C'\fR or \f(CW\*(C`typeof\*(C'\fR as a
  keyword, so that code can use these words as identifiers.  You can use
  the keywords \f(CW\*(C`_\|_asm_\|_\*(C'\fR, \f(CW\*(C`_\|_inline_\|_\*(C'\fR and \f(CW\*(C`_\|_typeof_\|_\*(C'\fR
  instead.  In C, \fB\-ansi\fR implies \fB\-fno\-asm\fR.
  .Sp
! In C++, \f(CW\*(C`inline\*(C'\fR is a standard keyword and is not affected by
  this switch.  You may want to use the \fB\-fno\-gnu\-keywords\fR flag
  instead, which disables \f(CW\*(C`typeof\*(C'\fR but not \f(CW\*(C`asm\*(C'\fR and
  \&\f(CW\*(C`inline\*(C'\fR.  In C99 mode (\fB\-std=c99\fR or \fB\-std=gnu99\fR),
  this switch only affects the \f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`typeof\*(C'\fR keywords,
! since \f(CW\*(C`inline\*(C'\fR is a standard keyword in ISO C99.  In C23 mode
  (\fB\-std=c23\fR or \fB\-std=gnu23\fR), this switch only affects
  the \f(CW\*(C`asm\*(C'\fR keyword, since \f(CW\*(C`typeof\*(C'\fR is a standard keyword in
! ISO C23.
! .IP \fB\-fno\-builtin\fR 4
  .IX Item "-fno-builtin"
  .PD 0
! .IP \fB\-fno\-builtin\-\fR\fIfunction\fR 4
  .IX Item "-fno-builtin-function"
  .PD
! Don\*(Aqt recognize built\-in functions that do not begin with
  \&\fB_\|_builtin_\fR as prefix.
  .Sp
! GCC normally generates special code to handle certain built\-in functions
  more efficiently; for instance, calls to \f(CW\*(C`alloca\*(C'\fR may become single
  instructions which adjust the stack directly, and calls to \f(CW\*(C`memcpy\*(C'\fR
  may become inline copy loops.  The resulting code is often both smaller
  and faster, but since the function calls no longer appear as such, you
  cannot set a breakpoint on those calls, nor can you change the behavior
  of the functions by linking with a different library.  In addition,
! when a function is recognized as a built\-in function, GCC may use
  information about that function to warn about problems with calls to
  that function, or to generate more efficient code, even if the
  resulting code still contains calls to that function.  For example,
*************** warnings are given with \fB\-Wformat\fR
*** 2714,2770 ****
  known not to modify global memory.
  .Sp
  With the \fB\-fno\-builtin\-\fR\fIfunction\fR option
! only the built-in function \fIfunction\fR is
  disabled.  \fIfunction\fR must not begin with \fB_\|_builtin_\fR.  If a
! function is named that is not built-in in this version of \s-1GCC,\s0 this
  option is ignored.  There is no corresponding
  \&\fB\-fbuiltin\-\fR\fIfunction\fR option; if you wish to enable
! built-in functions selectively when using \fB\-fno\-builtin\fR or
  \&\fB\-ffreestanding\fR, you may define macros such as:
  .Sp
  .Vb 2
  \&        #define abs(n)          _\|_builtin_abs ((n))
  \&        #define strcpy(d, s)    _\|_builtin_strcpy ((d), (s))
  .Ve
! .IP "\fB\-fcond\-mismatch\fR" 4
  .IX Item "-fcond-mismatch"
  Allow conditional expressions with mismatched types in the second and
  third arguments.  The value of such an expression is void.  This option
! is not supported for \*(C+.
! .IP "\fB\-ffreestanding\fR" 4
  .IX Item "-ffreestanding"
  Assert that compilation targets a freestanding environment.  This
  implies \fB\-fno\-builtin\fR.  A freestanding environment
  is one in which the standard library may not exist, and program startup may
! not necessarily be at \f(CW\*(C`main\*(C'\fR.  The most obvious example is an \s-1OS\s0 kernel.
  This is equivalent to \fB\-fno\-hosted\fR.
! .IP "\fB\-fgimple\fR" 4
  .IX Item "-fgimple"
  Enable parsing of function definitions marked with \f(CW\*(C`_\|_GIMPLE\*(C'\fR.
! This is an experimental feature that allows unit testing of \s-1GIMPLE\s0
  passes.
! .IP "\fB\-fgnu\-tm\fR" 4
  .IX Item "-fgnu-tm"
  When the option \fB\-fgnu\-tm\fR is specified, the compiler
! generates code for the Linux variant of Intel's current Transactional
! Memory \s-1ABI\s0 specification document (Revision 1.1, May 6 2009).  This is
  an experimental feature whose interface may change in future versions
! of \s-1GCC,\s0 as the official specification changes.  Please note that not
  all architectures are supported for this feature.
  .Sp
! For more information on \s-1GCC\s0's support for transactional memory,
  .Sp
  Note that the transactional memory feature is not supported with
! non-call exceptions (\fB\-fnon\-call\-exceptions\fR).
! .IP "\fB\-fgnu89\-inline\fR" 4
  .IX Item "-fgnu89-inline"
! The option \fB\-fgnu89\-inline\fR tells \s-1GCC\s0 to use the traditional
! \&\s-1GNU\s0 semantics for \f(CW\*(C`inline\*(C'\fR functions when in C99 mode.
  .Sp
  Using this option is roughly equivalent to adding the
  \&\f(CW\*(C`gnu_inline\*(C'\fR function attribute to all inline functions.
  .Sp
! The option \fB\-fno\-gnu89\-inline\fR explicitly tells \s-1GCC\s0 to use the
  C99 semantics for \f(CW\*(C`inline\*(C'\fR when in C99 or gnu99 mode (i.e., it
  specifies the default behavior).
  This option is not supported in \fB\-std=c90\fR or
--- 2647,2703 ----
  known not to modify global memory.
  .Sp
  With the \fB\-fno\-builtin\-\fR\fIfunction\fR option
! only the built\-in function \fIfunction\fR is
  disabled.  \fIfunction\fR must not begin with \fB_\|_builtin_\fR.  If a
! function is named that is not built\-in in this version of GCC, this
  option is ignored.  There is no corresponding
  \&\fB\-fbuiltin\-\fR\fIfunction\fR option; if you wish to enable
! built\-in functions selectively when using \fB\-fno\-builtin\fR or
  \&\fB\-ffreestanding\fR, you may define macros such as:
  .Sp
  .Vb 2
  \&        #define abs(n)          _\|_builtin_abs ((n))
  \&        #define strcpy(d, s)    _\|_builtin_strcpy ((d), (s))
  .Ve
! .IP \fB\-fcond\-mismatch\fR 4
  .IX Item "-fcond-mismatch"
  Allow conditional expressions with mismatched types in the second and
  third arguments.  The value of such an expression is void.  This option
! is not supported for C++.
! .IP \fB\-ffreestanding\fR 4
  .IX Item "-ffreestanding"
  Assert that compilation targets a freestanding environment.  This
  implies \fB\-fno\-builtin\fR.  A freestanding environment
  is one in which the standard library may not exist, and program startup may
! not necessarily be at \f(CW\*(C`main\*(C'\fR.  The most obvious example is an OS kernel.
  This is equivalent to \fB\-fno\-hosted\fR.
! .IP \fB\-fgimple\fR 4
  .IX Item "-fgimple"
  Enable parsing of function definitions marked with \f(CW\*(C`_\|_GIMPLE\*(C'\fR.
! This is an experimental feature that allows unit testing of GIMPLE
  passes.
! .IP \fB\-fgnu\-tm\fR 4
  .IX Item "-fgnu-tm"
  When the option \fB\-fgnu\-tm\fR is specified, the compiler
! generates code for the Linux variant of Intel\*(Aqs current Transactional
! Memory ABI specification document (Revision 1.1, May 6 2009).  This is
  an experimental feature whose interface may change in future versions
! of GCC, as the official specification changes.  Please note that not
  all architectures are supported for this feature.
  .Sp
! For more information on GCC\*(Aqs support for transactional memory,
  .Sp
  Note that the transactional memory feature is not supported with
! non\-call exceptions (\fB\-fnon\-call\-exceptions\fR).
! .IP \fB\-fgnu89\-inline\fR 4
  .IX Item "-fgnu89-inline"
! The option \fB\-fgnu89\-inline\fR tells GCC to use the traditional
! GNU semantics for \f(CW\*(C`inline\*(C'\fR functions when in C99 mode.
  .Sp
  Using this option is roughly equivalent to adding the
  \&\f(CW\*(C`gnu_inline\*(C'\fR function attribute to all inline functions.
  .Sp
! The option \fB\-fno\-gnu89\-inline\fR explicitly tells GCC to use the
  C99 semantics for \f(CW\*(C`inline\*(C'\fR when in C99 or gnu99 mode (i.e., it
  specifies the default behavior).
  This option is not supported in \fB\-std=c90\fR or
*************** This option is not supported in \fB\-std
*** 2773,2795 ****
  The preprocessor macros \f(CW\*(C`_\|_GNUC_GNU_INLINE_\|_\*(C'\fR and
  \&\f(CW\*(C`_\|_GNUC_STDC_INLINE_\|_\*(C'\fR may be used to check which semantics are
  in effect for \f(CW\*(C`inline\*(C'\fR functions.
! .IP "\fB\-fhosted\fR" 4
  .IX Item "-fhosted"
  Assert that compilation targets a hosted environment.  This implies
  \&\fB\-fbuiltin\fR.  A hosted environment is one in which the
  entire standard library is available, and in which \f(CW\*(C`main\*(C'\fR has a return
  type of \f(CW\*(C`int\*(C'\fR.  Examples are nearly everything except a kernel.
  This is equivalent to \fB\-fno\-freestanding\fR.
! .IP "\fB\-flax\-vector\-conversions\fR" 4
  .IX Item "-flax-vector-conversions"
  Allow implicit conversions between vectors with differing numbers of
  elements and/or incompatible element types.  This option should not be
  used for new code.
! .IP "\fB\-fms\-extensions\fR" 4
  .IX Item "-fms-extensions"
! Accept some non-standard constructs used in Microsoft header files.
  .Sp
! In \*(C+ code, this allows member names in structures to be similar
  to previous types declarations.
  .Sp
  .Vb 4
--- 2706,2728 ----
  The preprocessor macros \f(CW\*(C`_\|_GNUC_GNU_INLINE_\|_\*(C'\fR and
  \&\f(CW\*(C`_\|_GNUC_STDC_INLINE_\|_\*(C'\fR may be used to check which semantics are
  in effect for \f(CW\*(C`inline\*(C'\fR functions.
! .IP \fB\-fhosted\fR 4
  .IX Item "-fhosted"
  Assert that compilation targets a hosted environment.  This implies
  \&\fB\-fbuiltin\fR.  A hosted environment is one in which the
  entire standard library is available, and in which \f(CW\*(C`main\*(C'\fR has a return
  type of \f(CW\*(C`int\*(C'\fR.  Examples are nearly everything except a kernel.
  This is equivalent to \fB\-fno\-freestanding\fR.
! .IP \fB\-flax\-vector\-conversions\fR 4
  .IX Item "-flax-vector-conversions"
  Allow implicit conversions between vectors with differing numbers of
  elements and/or incompatible element types.  This option should not be
  used for new code.
! .IP \fB\-fms\-extensions\fR 4
  .IX Item "-fms-extensions"
! Accept some non\-standard constructs used in Microsoft header files.
  .Sp
! In C++ code, this allows member names in structures to be similar
  to previous types declarations.
  .Sp
  .Vb 4
*************** Some cases of unnamed fields in structur
*** 2803,2812 ****
  accepted with this option.
  .Sp
  Note that this option is off for all targets except for x86
! targets using ms-abi.
! .IP "\fB\-fpermitted\-flt\-eval\-methods=\fR\fIstyle\fR" 4
  .IX Item "-fpermitted-flt-eval-methods=style"
! \&\s-1ISO/IEC TS 18661\-3\s0 defines new permissible values for
  \&\f(CW\*(C`FLT_EVAL_METHOD\*(C'\fR that indicate that operations and constants with
  a semantic type that is an interchange or extended format should be
  evaluated to the precision and range of that type.  These new values are
--- 2736,2745 ----
  accepted with this option.
  .Sp
  Note that this option is off for all targets except for x86
! targets using ms\-abi.
! .IP \fB\-fpermitted\-flt\-eval\-methods=\fR\fIstyle\fR 4
  .IX Item "-fpermitted-flt-eval-methods=style"
! ISO/IEC TS 18661\-3 defines new permissible values for
  \&\f(CW\*(C`FLT_EVAL_METHOD\*(C'\fR that indicate that operations and constants with
  a semantic type that is an interchange or extended format should be
  evaluated to the precision and range of that type.  These new values are
*************** the new values.
*** 2817,2828 ****
  .Sp
  \&\fB\-fpermitted\-flt\-eval\-methods\fR specifies whether the compiler
  should allow only the values of \f(CW\*(C`FLT_EVAL_METHOD\*(C'\fR specified in C99/C11,
! or the extended set of values specified in \s-1ISO/IEC TS 18661\-3.\s0
  .Sp
  \&\fIstyle\fR is either \f(CW\*(C`c11\*(C'\fR or \f(CW\*(C`ts\-18661\-3\*(C'\fR as appropriate.
  .Sp
  The default when in a standards compliant mode (\fB\-std=c11\fR or similar)
! is \fB\-fpermitted\-flt\-eval\-methods=c11\fR.  The default when in a \s-1GNU\s0
  dialect (\fB\-std=gnu11\fR or similar) is
  \&\fB\-fpermitted\-flt\-eval\-methods=ts\-18661\-3\fR.
  .Sp
--- 2750,2761 ----
  .Sp
  \&\fB\-fpermitted\-flt\-eval\-methods\fR specifies whether the compiler
  should allow only the values of \f(CW\*(C`FLT_EVAL_METHOD\*(C'\fR specified in C99/C11,
! or the extended set of values specified in ISO/IEC TS 18661\-3.
  .Sp
  \&\fIstyle\fR is either \f(CW\*(C`c11\*(C'\fR or \f(CW\*(C`ts\-18661\-3\*(C'\fR as appropriate.
  .Sp
  The default when in a standards compliant mode (\fB\-std=c11\fR or similar)
! is \fB\-fpermitted\-flt\-eval\-methods=c11\fR.  The default when in a GNU
  dialect (\fB\-std=gnu11\fR or similar) is
  \&\fB\-fpermitted\-flt\-eval\-methods=ts\-18661\-3\fR.
  .Sp
*************** resources are provided by the source.  T
*** 2833,2884 ****
  required dependencies between compilation rules of dependent sources based on
  their contents rather than requiring such information be reflected within the
  build tools as well.
! .IP "\fB\-fdeps\-file=\fR\fIfile\fR" 4
  .IX Item "-fdeps-file=file"
  Where to write structured dependency information.
! .IP "\fB\-fdeps\-format=\fR\fIformat\fR" 4
  .IX Item "-fdeps-format=format"
  The format to use for structured dependency information. \fBp1689r5\fR is the
  only supported format right now.  Note that when this argument is specified, the
! output of \fB\-MF\fR is stripped of some information (namely \*(C+ modules) so
  that it does not use extended makefile syntax not understood by most tools.
! .IP "\fB\-fdeps\-target=\fR\fIfile\fR" 4
  .IX Item "-fdeps-target=file"
  Analogous to \fB\-MT\fR but for structured dependency information.  This
  indicates the target which will ultimately need any required resources and
  provide any resources extracted from the source that may be required by other
  sources.
! .IP "\fB\-fplan9\-extensions\fR" 4
  .IX Item "-fplan9-extensions"
! Accept some non-standard constructs used in Plan 9 code.
  .Sp
  This enables \fB\-fms\-extensions\fR, permits passing pointers to
  structures with anonymous fields to functions that expect pointers to
  elements of the type of the field, and permits referring to anonymous
  fields declared using a typedef.    This is only
! supported for C, not \*(C+.
! .IP "\fB\-fsigned\-bitfields\fR" 4
  .IX Item "-fsigned-bitfields"
  .PD 0
! .IP "\fB\-funsigned\-bitfields\fR" 4
  .IX Item "-funsigned-bitfields"
! .IP "\fB\-fno\-signed\-bitfields\fR" 4
  .IX Item "-fno-signed-bitfields"
! .IP "\fB\-fno\-unsigned\-bitfields\fR" 4
  .IX Item "-fno-unsigned-bitfields"
  .PD
! These options control whether a bit-field is signed or unsigned, when the
  declaration does not use either \f(CW\*(C`signed\*(C'\fR or \f(CW\*(C`unsigned\*(C'\fR.  By
! default, such a bit-field is signed, because this is consistent: the
  basic integer types such as \f(CW\*(C`int\*(C'\fR are signed types.
! .IP "\fB\-fsigned\-char\fR" 4
  .IX Item "-fsigned-char"
  Let the type \f(CW\*(C`char\*(C'\fR be signed, like \f(CW\*(C`signed char\*(C'\fR.
  .Sp
  Note that this is equivalent to \fB\-fno\-unsigned\-char\fR, which is
  the negative form of \fB\-funsigned\-char\fR.  Likewise, the option
  \&\fB\-fno\-signed\-char\fR is equivalent to \fB\-funsigned\-char\fR.
! .IP "\fB\-funsigned\-char\fR" 4
  .IX Item "-funsigned-char"
  Let the type \f(CW\*(C`char\*(C'\fR be unsigned, like \f(CW\*(C`unsigned char\*(C'\fR.
  .Sp
--- 2766,2817 ----
  required dependencies between compilation rules of dependent sources based on
  their contents rather than requiring such information be reflected within the
  build tools as well.
! .IP \fB\-fdeps\-file=\fR\fIfile\fR 4
  .IX Item "-fdeps-file=file"
  Where to write structured dependency information.
! .IP \fB\-fdeps\-format=\fR\fIformat\fR 4
  .IX Item "-fdeps-format=format"
  The format to use for structured dependency information. \fBp1689r5\fR is the
  only supported format right now.  Note that when this argument is specified, the
! output of \fB\-MF\fR is stripped of some information (namely C++ modules) so
  that it does not use extended makefile syntax not understood by most tools.
! .IP \fB\-fdeps\-target=\fR\fIfile\fR 4
  .IX Item "-fdeps-target=file"
  Analogous to \fB\-MT\fR but for structured dependency information.  This
  indicates the target which will ultimately need any required resources and
  provide any resources extracted from the source that may be required by other
  sources.
! .IP \fB\-fplan9\-extensions\fR 4
  .IX Item "-fplan9-extensions"
! Accept some non\-standard constructs used in Plan 9 code.
  .Sp
  This enables \fB\-fms\-extensions\fR, permits passing pointers to
  structures with anonymous fields to functions that expect pointers to
  elements of the type of the field, and permits referring to anonymous
  fields declared using a typedef.    This is only
! supported for C, not C++.
! .IP \fB\-fsigned\-bitfields\fR 4
  .IX Item "-fsigned-bitfields"
  .PD 0
! .IP \fB\-funsigned\-bitfields\fR 4
  .IX Item "-funsigned-bitfields"
! .IP \fB\-fno\-signed\-bitfields\fR 4
  .IX Item "-fno-signed-bitfields"
! .IP \fB\-fno\-unsigned\-bitfields\fR 4
  .IX Item "-fno-unsigned-bitfields"
  .PD
! These options control whether a bit\-field is signed or unsigned, when the
  declaration does not use either \f(CW\*(C`signed\*(C'\fR or \f(CW\*(C`unsigned\*(C'\fR.  By
! default, such a bit\-field is signed, because this is consistent: the
  basic integer types such as \f(CW\*(C`int\*(C'\fR are signed types.
! .IP \fB\-fsigned\-char\fR 4
  .IX Item "-fsigned-char"
  Let the type \f(CW\*(C`char\*(C'\fR be signed, like \f(CW\*(C`signed char\*(C'\fR.
  .Sp
  Note that this is equivalent to \fB\-fno\-unsigned\-char\fR, which is
  the negative form of \fB\-funsigned\-char\fR.  Likewise, the option
  \&\fB\-fno\-signed\-char\fR is equivalent to \fB\-funsigned\-char\fR.
! .IP \fB\-funsigned\-char\fR 4
  .IX Item "-funsigned-char"
  Let the type \f(CW\*(C`char\*(C'\fR be unsigned, like \f(CW\*(C`unsigned char\*(C'\fR.
  .Sp
*************** make such a program work with the opposi
*** 2896,2906 ****
  The type \f(CW\*(C`char\*(C'\fR is always a distinct type from each of
  \&\f(CW\*(C`signed char\*(C'\fR or \f(CW\*(C`unsigned char\*(C'\fR, even though its behavior
  is always just like one of those two.
! .IP "\fB\-fstrict\-flex\-arrays\fR (C and \*(C+ only)" 4
! .IX Item "-fstrict-flex-arrays (C and only)"
  .PD 0
! .IP "\fB\-fstrict\-flex\-arrays=\fR\fIlevel\fR\fB \fR(C and \*(C+ only)" 4
! .IX Item "-fstrict-flex-arrays=level (C and only)"
  .PD
  Control when to treat the trailing array of a structure as a flexible array
  member for the purpose of accessing the elements of such an array.  The value
--- 2829,2839 ----
  The type \f(CW\*(C`char\*(C'\fR is always a distinct type from each of
  \&\f(CW\*(C`signed char\*(C'\fR or \f(CW\*(C`unsigned char\*(C'\fR, even though its behavior
  is always just like one of those two.
! .IP "\fB\-fstrict\-flex\-arrays\fR (C and C++ only)" 4
! .IX Item "-fstrict-flex-arrays (C and C++ only)"
  .PD 0
! .IP "\fB\-fstrict\-flex\-arrays=\fR\fIlevel\fR\fB \fR(C and C++ only)" 4
! .IX Item "-fstrict-flex-arrays=level (C and C++ only)"
  .PD
  Control when to treat the trailing array of a structure as a flexible array
  member for the purpose of accessing the elements of such an array.  The value
*************** The negative form \fB\-fno\-strict\-flex
*** 2916,2923 ****
  case all trailing arrays of structures are treated as flexible array members.
  .Sp
  There are two more levels in between 0 and 3, which are provided to
! support older code that uses the \s-1GCC\s0 zero-length array extension
! (\fB[0]\fR) or one-element array as flexible array members
  (\fB[1]\fR).  When \fIlevel\fR is 1, the trailing array is treated as
  a flexible array member when it is declared as either \fB[]\fR,
  \&\fB[0]\fR, or \fB[1]\fR.  When \fIlevel\fR is 2, the trailing array
--- 2849,2856 ----
  case all trailing arrays of structures are treated as flexible array members.
  .Sp
  There are two more levels in between 0 and 3, which are provided to
! support older code that uses the GCC zero\-length array extension
! (\fB[0]\fR) or one\-element array as flexible array members
  (\fB[1]\fR).  When \fIlevel\fR is 1, the trailing array is treated as
  a flexible array member when it is declared as either \fB[]\fR,
  \&\fB[0]\fR, or \fB[1]\fR.  When \fIlevel\fR is 2, the trailing array
*************** structure by using the variable attribut
*** 2929,2948 ****
  .Sp
  The \fB\-fstrict_flex_arrays\fR option interacts with the
  \&\fB\-Wstrict\-flex\-arrays\fR option.
! .IP "\fB\-fsso\-struct=\fR\fIendianness\fR" 4
  .IX Item "-fsso-struct=endianness"
  Set the default scalar storage order of structures and unions to the
! specified endianness.  The accepted values are \fBbig-endian\fR,
! \&\fBlittle-endian\fR and \fBnative\fR for the native endianness of
! the target (the default).  This option is not supported for \*(C+.
  .Sp
! \&\fBWarning:\fR the \fB\-fsso\-struct\fR switch causes \s-1GCC\s0 to generate
  code that is not binary compatible with code generated without it if the
  specified endianness is not the native endianness of the target.
! .SS "Options Controlling \*(C+ Dialect"
! .IX Subsection "Options Controlling Dialect"
! This section describes the command-line options that are only meaningful
! for \*(C+ programs.  You can also use most of the \s-1GNU\s0 compiler options
  regardless of what language your program is in.  For example, you
  might compile a file \fIfirstClass.C\fR like this:
  .PP
--- 2862,2881 ----
  .Sp
  The \fB\-fstrict_flex_arrays\fR option interacts with the
  \&\fB\-Wstrict\-flex\-arrays\fR option.
! .IP \fB\-fsso\-struct=\fR\fIendianness\fR 4
  .IX Item "-fsso-struct=endianness"
  Set the default scalar storage order of structures and unions to the
! specified endianness.  The accepted values are \fBbig\-endian\fR,
! \&\fBlittle\-endian\fR and \fBnative\fR for the native endianness of
! the target (the default).  This option is not supported for C++.
  .Sp
! \&\fBWarning:\fR the \fB\-fsso\-struct\fR switch causes GCC to generate
  code that is not binary compatible with code generated without it if the
  specified endianness is not the native endianness of the target.
! .SS "Options Controlling C++ Dialect"
! .IX Subsection "Options Controlling C++ Dialect"
! This section describes the command\-line options that are only meaningful
! for C++ programs.  You can also use most of the GNU compiler options
  regardless of what language your program is in.  For example, you
  might compile a file \fIfirstClass.C\fR like this:
  .PP
*************** might compile a file \fIfirstClass.C\fR
*** 2951,2974 ****
  .Ve
  .PP
  In this example, only \fB\-fstrict\-enums\fR is an option meant
! only for \*(C+ programs; you can use the other options with any
! language supported by \s-1GCC.\s0
  .PP
  Some options for compiling C programs, such as \fB\-std\fR, are also
! relevant for \*(C+ programs.
  .PP
! Here is a list of options that are \fIonly\fR for compiling \*(C+ programs:
! .IP "\fB\-fabi\-version=\fR\fIn\fR" 4
  .IX Item "-fabi-version=n"
! Use version \fIn\fR of the \*(C+ \s-1ABI.\s0  The default is version 0.
  .Sp
  Version 0 refers to the version conforming most closely to
! the \*(C+ \s-1ABI\s0 specification.  Therefore, the \s-1ABI\s0 obtained using version 0
! will change in different versions of G++ as \s-1ABI\s0 bugs are fixed.
  .Sp
! Version 1 is the version of the \*(C+ \s-1ABI\s0 that first appeared in G++ 3.2.
  .Sp
! Version 2 is the version of the \*(C+ \s-1ABI\s0 that first appeared in G++
  3.4, and was the default through G++ 4.9.
  .Sp
  Version 3 corrects an error in mangling a constant address as a
--- 2884,2907 ----
  .Ve
  .PP
  In this example, only \fB\-fstrict\-enums\fR is an option meant
! only for C++ programs; you can use the other options with any
! language supported by GCC.
  .PP
  Some options for compiling C programs, such as \fB\-std\fR, are also
! relevant for C++ programs.
  .PP
! Here is a list of options that are \fIonly\fR for compiling C++ programs:
! .IP \fB\-fabi\-version=\fR\fIn\fR 4
  .IX Item "-fabi-version=n"
! Use version \fIn\fR of the C++ ABI.  The default is version 0.
  .Sp
  Version 0 refers to the version conforming most closely to
! the C++ ABI specification.  Therefore, the ABI obtained using version 0
! will change in different versions of G++ as ABI bugs are fixed.
  .Sp
! Version 1 is the version of the C++ ABI that first appeared in G++ 3.2.
  .Sp
! Version 2 is the version of the C++ ABI that first appeared in G++
  3.4, and was the default through G++ 4.9.
  .Sp
  Version 3 corrects an error in mangling a constant address as a
*************** plain decl, and use of a function parame
*** 2983,2989 ****
  another parameter.
  .Sp
  Version 6, which first appeared in G++ 4.7, corrects the promotion
! behavior of \*(C+11 scoped enums and the mangling of template argument
  packs, const/static_cast, prefix ++ and \-\-, and a class scope function
  used as a template argument.
  .Sp
--- 2916,2922 ----
  another parameter.
  .Sp
  Version 6, which first appeared in G++ 4.7, corrects the promotion
! behavior of C++11 scoped enums and the mangling of template argument
  packs, const/static_cast, prefix ++ and \-\-, and a class scope function
  used as a template argument.
  .Sp
*************** builtin type and corrects the mangling o
*** 2992,2998 ****
  scope.
  .Sp
  Version 8, which first appeared in G++ 4.9, corrects the substitution
! behavior of function types with function-cv-qualifiers.
  .Sp
  Version 9, which first appeared in G++ 5.2, corrects the alignment of
  \&\f(CW\*(C`nullptr_t\*(C'\fR.
--- 2925,2931 ----
  scope.
  .Sp
  Version 8, which first appeared in G++ 4.9, corrects the substitution
! behavior of function types with function\-cv\-qualifiers.
  .Sp
  Version 9, which first appeared in G++ 5.2, corrects the alignment of
  \&\f(CW\*(C`nullptr_t\*(C'\fR.
*************** change in version 12.
*** 3019,3025 ****
  Version 14, which first appeared in G++ 10, corrects the mangling of
  the nullptr expression.
  .Sp
! Version 15, which first appeared in G++ 10.3, corrects G++ 10 \s-1ABI\s0
  tag regression.
  .Sp
  Version 16, which first appeared in G++ 11, changes the mangling of
--- 2952,2958 ----
  Version 14, which first appeared in G++ 10, corrects the mangling of
  the nullptr expression.
  .Sp
! Version 15, which first appeared in G++ 10.3, corrects G++ 10 ABI
  tag regression.
  .Sp
  Version 16, which first appeared in G++ 11, changes the mangling of
*************** dependent operator names.
*** 3028,3090 ****
  .Sp
  Version 17, which first appeared in G++ 12, fixes layout of classes
  that inherit from aggregate classes with default member initializers
! in \*(C+14 and up.
  .Sp
  Version 18, which first appeared in G++ 13, fixes manglings of lambdas
  that have additional context.
  .Sp
  Version 19, which first appeared in G++ 14, fixes manglings of structured
! bindings to include \s-1ABI\s0 tags.
  .Sp
  Version 20, which first appeared in G++ 15, fixes manglings of lambdas
  in static data member initializers.
  .Sp
  See also \fB\-Wabi\fR.
! .IP "\fB\-fabi\-compat\-version=\fR\fIn\fR" 4
  .IX Item "-fabi-compat-version=n"
  On targets that support strong aliases, G++
  works around mangling changes by creating an alias with the correct
  mangled name when defining a symbol with an incorrect mangled name.
! This switch specifies which \s-1ABI\s0 version to use for the alias.
  .Sp
! With \fB\-fabi\-version=0\fR (the default), this defaults to 13 (\s-1GCC 8.2\s0
! compatibility).  If another \s-1ABI\s0 version is explicitly selected, this
! defaults to 0.  For compatibility with \s-1GCC\s0 versions 3.2 through 4.9,
  use \fB\-fabi\-compat\-version=2\fR.
  .Sp
  If this option is not provided but \fB\-Wabi=\fR\fIn\fR is, that
  version is used for compatibility aliases.  If this option is provided
  along with \fB\-Wabi\fR (without the version), the version from this
  option is used for the warning.
! .IP "\fB\-fno\-access\-control\fR" 4
  .IX Item "-fno-access-control"
  Turn off all access checking.  This switch is mainly useful for working
  around bugs in the access control code.
! .IP "\fB\-faligned\-new\fR" 4
  .IX Item "-faligned-new"
! Enable support for \*(C+17 \f(CW\*(C`new\*(C'\fR of types that require more
  alignment than \f(CW\*(C`void* ::operator new(std::size_t)\*(C'\fR provides.  A
  numeric argument such as \f(CW\*(C`\-faligned\-new=32\*(C'\fR can be used to
  specify how much alignment (in bytes) is provided by that function,
  but few users will need to override the default of
! \&\f(CW\*(C`alignof(std::max_align_t)\*(C'\fR.
  .Sp
  This flag is enabled by default for \fB\-std=c++17\fR.
! .IP "\fB\-fno\-assume\-sane\-operators\-new\fR" 4
  .IX Item "-fno-assume-sane-operators-new"
! The \*(C+ standard allows replacing the global \f(CW\*(C`new\*(C'\fR, \f(CW\*(C`new[]\*(C'\fR,
! \&\f(CW\*(C`delete\*(C'\fR and \f(CW\*(C`delete[]\*(C'\fR operators, though a lot of \*(C+ programs
! don't replace them and just use the implementation provided version.
! Furthermore, the \*(C+ standard allows omitting those calls if they are
  made from new or delete expressions (and by extension the same is
  assumed if \f(CW\*(C`_\|_builtin_operator_new\*(C'\fR or \f(CW\*(C`_\|_builtin_operator_delete\*(C'\fR
  functions are used).
  This option allows control over some optimizations around calls
  to those operators.
! With \f(CW\*(C`\-fassume\-sane\-operators\-new\-delete\*(C'\fR option \s-1GCC\s0 may assume that
  calls to the replaceable global operators from new or delete expressions or
  from \f(CW\*(C`_\|_builtin_operator_new\*(C'\fR or \f(CW\*(C`_\|_builtin_operator_delete\*(C'\fR calls
! don't read or modify any global variables or variables whose address could
  escape to the operators (global state; except for \f(CW\*(C`errno\*(C'\fR for the
  \&\f(CW\*(C`new\*(C'\fR and \f(CW\*(C`new[]\*(C'\fR operators).
  This allows most optimizations across those calls and is something that
--- 2961,3023 ----
  .Sp
  Version 17, which first appeared in G++ 12, fixes layout of classes
  that inherit from aggregate classes with default member initializers
! in C++14 and up.
  .Sp
  Version 18, which first appeared in G++ 13, fixes manglings of lambdas
  that have additional context.
  .Sp
  Version 19, which first appeared in G++ 14, fixes manglings of structured
! bindings to include ABI tags.
  .Sp
  Version 20, which first appeared in G++ 15, fixes manglings of lambdas
  in static data member initializers.
  .Sp
  See also \fB\-Wabi\fR.
! .IP \fB\-fabi\-compat\-version=\fR\fIn\fR 4
  .IX Item "-fabi-compat-version=n"
  On targets that support strong aliases, G++
  works around mangling changes by creating an alias with the correct
  mangled name when defining a symbol with an incorrect mangled name.
! This switch specifies which ABI version to use for the alias.
  .Sp
! With \fB\-fabi\-version=0\fR (the default), this defaults to 13 (GCC 8.2
! compatibility).  If another ABI version is explicitly selected, this
! defaults to 0.  For compatibility with GCC versions 3.2 through 4.9,
  use \fB\-fabi\-compat\-version=2\fR.
  .Sp
  If this option is not provided but \fB\-Wabi=\fR\fIn\fR is, that
  version is used for compatibility aliases.  If this option is provided
  along with \fB\-Wabi\fR (without the version), the version from this
  option is used for the warning.
! .IP \fB\-fno\-access\-control\fR 4
  .IX Item "-fno-access-control"
  Turn off all access checking.  This switch is mainly useful for working
  around bugs in the access control code.
! .IP \fB\-faligned\-new\fR 4
  .IX Item "-faligned-new"
! Enable support for C++17 \f(CW\*(C`new\*(C'\fR of types that require more
  alignment than \f(CW\*(C`void* ::operator new(std::size_t)\*(C'\fR provides.  A
  numeric argument such as \f(CW\*(C`\-faligned\-new=32\*(C'\fR can be used to
  specify how much alignment (in bytes) is provided by that function,
  but few users will need to override the default of
! \&\f(CWalignof(std::max_align_t)\fR.
  .Sp
  This flag is enabled by default for \fB\-std=c++17\fR.
! .IP \fB\-fno\-assume\-sane\-operators\-new\fR 4
  .IX Item "-fno-assume-sane-operators-new"
! The C++ standard allows replacing the global \f(CW\*(C`new\*(C'\fR, \f(CW\*(C`new[]\*(C'\fR,
! \&\f(CW\*(C`delete\*(C'\fR and \f(CW\*(C`delete[]\*(C'\fR operators, though a lot of C++ programs
! don\*(Aqt replace them and just use the implementation provided version.
! Furthermore, the C++ standard allows omitting those calls if they are
  made from new or delete expressions (and by extension the same is
  assumed if \f(CW\*(C`_\|_builtin_operator_new\*(C'\fR or \f(CW\*(C`_\|_builtin_operator_delete\*(C'\fR
  functions are used).
  This option allows control over some optimizations around calls
  to those operators.
! With \f(CW\*(C`\-fassume\-sane\-operators\-new\-delete\*(C'\fR option GCC may assume that
  calls to the replaceable global operators from new or delete expressions or
  from \f(CW\*(C`_\|_builtin_operator_new\*(C'\fR or \f(CW\*(C`_\|_builtin_operator_delete\*(C'\fR calls
! don\*(Aqt read or modify any global variables or variables whose address could
  escape to the operators (global state; except for \f(CW\*(C`errno\*(C'\fR for the
  \&\f(CW\*(C`new\*(C'\fR and \f(CW\*(C`new[]\*(C'\fR operators).
  This allows most optimizations across those calls and is something that
*************** the implementation provided operators sa
*** 3092,3115 ****
  implementation details are observable in the code or unless \f(CW\*(C`malloc\*(C'\fR
  hooks are used, but might not be satisfied if a program replaces those
  operators.  This behavior is enabled by default.
! With \f(CW\*(C`\-fno\-assume\-sane\-operators\-new\-delete\*(C'\fR option \s-1GCC\s0 must
  assume all these calls (whether from new or delete expressions or called
  directly) may read and write global state unless proven otherwise (e.g.
! when \s-1GCC\s0 compiles their implementation).  Use this option if those
  operators are or may be replaced and code needs to expect such behavior.
! .IP "\fB\-fchar8_t\fR" 4
  .IX Item "-fchar8_t"
  .PD 0
! .IP "\fB\-fno\-char8_t\fR" 4
  .IX Item "-fno-char8_t"
  .PD
! Enable support for \f(CW\*(C`char8_t\*(C'\fR as adopted for \*(C+20.  This includes
  the addition of a new \f(CW\*(C`char8_t\*(C'\fR fundamental type, changes to the
! types of \s-1UTF\-8\s0 string and character literals, new signatures for
! user-defined literals, associated standard library updates, and new
  \&\f(CW\*(C`_\|_cpp_char8_t\*(C'\fR and \f(CW\*(C`_\|_cpp_lib_char8_t\*(C'\fR feature test macros.
  .Sp
! This option enables functions to be overloaded for ordinary and \s-1UTF\-8\s0
  strings:
  .Sp
  .Vb 4
--- 3025,3048 ----
  implementation details are observable in the code or unless \f(CW\*(C`malloc\*(C'\fR
  hooks are used, but might not be satisfied if a program replaces those
  operators.  This behavior is enabled by default.
! With \f(CW\*(C`\-fno\-assume\-sane\-operators\-new\-delete\*(C'\fR option GCC must
  assume all these calls (whether from new or delete expressions or called
  directly) may read and write global state unless proven otherwise (e.g.
! when GCC compiles their implementation).  Use this option if those
  operators are or may be replaced and code needs to expect such behavior.
! .IP \fB\-fchar8_t\fR 4
  .IX Item "-fchar8_t"
  .PD 0
! .IP \fB\-fno\-char8_t\fR 4
  .IX Item "-fno-char8_t"
  .PD
! Enable support for \f(CW\*(C`char8_t\*(C'\fR as adopted for C++20.  This includes
  the addition of a new \f(CW\*(C`char8_t\*(C'\fR fundamental type, changes to the
! types of UTF\-8 string and character literals, new signatures for
! user\-defined literals, associated standard library updates, and new
  \&\f(CW\*(C`_\|_cpp_char8_t\*(C'\fR and \f(CW\*(C`_\|_cpp_lib_char8_t\*(C'\fR feature test macros.
  .Sp
! This option enables functions to be overloaded for ordinary and UTF\-8
  strings:
  .Sp
  .Vb 4
*************** strings:
*** 3119,3125 ****
  \&        int v2 = f(u8"text");   // Calls #2
  .Ve
  .Sp
! and introduces new signatures for user-defined literals:
  .Sp
  .Vb 6
  \&        int operator""_udl1(char8_t);
--- 3052,3058 ----
  \&        int v2 = f(u8"text");   // Calls #2
  .Ve
  .Sp
! and introduces new signatures for user\-defined literals:
  .Sp
  .Vb 6
  \&        int operator""_udl1(char8_t);
*************** and introduces new signatures for user-d
*** 3130,3138 ****
  \&        int v5 = u8"text"_udl3;
  .Ve
  .Sp
! The change to the types of \s-1UTF\-8\s0 string and character literals introduces
! incompatibilities with \s-1ISO \*(C+11\s0 and later standards.  For example, the
! following code is well-formed under \s-1ISO \*(C+11,\s0 but is ill-formed when
  \&\fB\-fchar8_t\fR is specified.
  .Sp
  .Vb 11
--- 3063,3071 ----
  \&        int v5 = u8"text"_udl3;
  .Ve
  .Sp
! The change to the types of UTF\-8 string and character literals introduces
! incompatibilities with ISO C++11 and later standards.  For example, the
! following code is well\-formed under ISO C++11, but is ill\-formed when
  \&\fB\-fchar8_t\fR is specified.
  .Sp
  .Vb 11
*************** following code is well-formed under \s-1
*** 3148,3185 ****
  \&                                //        \`basic_string<char8_t>\*(Aq to non\-scalar
  \&                                //        type \`basic_string<char>\*(Aq requested
  .Ve
! .IP "\fB\-fcheck\-new\fR" 4
  .IX Item "-fcheck-new"
! Check that the pointer returned by \f(CW\*(C`operator new\*(C'\fR is non-null
  before attempting to modify the storage allocated.  This check is
! normally unnecessary because the \*(C+ standard specifies that
  \&\f(CW\*(C`operator new\*(C'\fR only returns \f(CW0\fR if it is declared
! \&\f(CW\*(C`throw()\*(C'\fR, in which case the compiler always checks the
  return value even without this option.  In all other cases, when
! \&\f(CW\*(C`operator new\*(C'\fR has a non-empty exception specification, memory
  exhaustion is signalled by throwing \f(CW\*(C`std::bad_alloc\*(C'\fR.  See also
  \&\fBnew (nothrow)\fR.
! .IP "\fB\-fconcepts\fR" 4
  .IX Item "-fconcepts"
! Enable support for the \*(C+ Concepts feature for constraining template
  arguments.  With \fB\-std=c++20\fR and above, Concepts are part of
  the language standard, so \fB\-fconcepts\fR defaults to on.
  .Sp
! Some constructs that were allowed by the earlier \*(C+ Extensions for
! Concepts Technical Specification, \s-1ISO 19217\s0 (2015), but didn't make it
  into the standard, could additionally be enabled by
  \&\fB\-fconcepts\-ts\fR.  The option \fB\-fconcepts\-ts\fR was deprecated
! in \s-1GCC 14\s0 and removed in \s-1GCC 15\s0; users are expected to convert their code
! to \*(C+20 concepts.
! .IP "\fB\-fconstexpr\-depth=\fR\fIn\fR" 4
  .IX Item "-fconstexpr-depth=n"
! Set the maximum nested evaluation depth for \*(C+11 constexpr functions
  to \fIn\fR.  A limit is needed to detect endless recursion during
  constant expression evaluation.  The minimum specified by the standard
  is 512.
! .IP "\fB\-fconstexpr\-cache\-depth=\fR\fIn\fR" 4
  .IX Item "-fconstexpr-cache-depth=n"
! Set the maximum level of nested evaluation depth for \*(C+11 constexpr
  functions that will be cached to \fIn\fR.  This is a heuristic that
  trades off compilation speed (when the cache avoids repeated
  calculations) against memory consumption (when the cache grows very
--- 3081,3118 ----
  \&                                //        \`basic_string<char8_t>\*(Aq to non\-scalar
  \&                                //        type \`basic_string<char>\*(Aq requested
  .Ve
! .IP \fB\-fcheck\-new\fR 4
  .IX Item "-fcheck-new"
! Check that the pointer returned by \f(CW\*(C`operator new\*(C'\fR is non\-null
  before attempting to modify the storage allocated.  This check is
! normally unnecessary because the C++ standard specifies that
  \&\f(CW\*(C`operator new\*(C'\fR only returns \f(CW0\fR if it is declared
! \&\f(CWthrow()\fR, in which case the compiler always checks the
  return value even without this option.  In all other cases, when
! \&\f(CW\*(C`operator new\*(C'\fR has a non\-empty exception specification, memory
  exhaustion is signalled by throwing \f(CW\*(C`std::bad_alloc\*(C'\fR.  See also
  \&\fBnew (nothrow)\fR.
! .IP \fB\-fconcepts\fR 4
  .IX Item "-fconcepts"
! Enable support for the C++ Concepts feature for constraining template
  arguments.  With \fB\-std=c++20\fR and above, Concepts are part of
  the language standard, so \fB\-fconcepts\fR defaults to on.
  .Sp
! Some constructs that were allowed by the earlier C++ Extensions for
! Concepts Technical Specification, ISO 19217 (2015), but didn\*(Aqt make it
  into the standard, could additionally be enabled by
  \&\fB\-fconcepts\-ts\fR.  The option \fB\-fconcepts\-ts\fR was deprecated
! in GCC 14 and removed in GCC 15; users are expected to convert their code
! to C++20 concepts.
! .IP \fB\-fconstexpr\-depth=\fR\fIn\fR 4
  .IX Item "-fconstexpr-depth=n"
! Set the maximum nested evaluation depth for C++11 constexpr functions
  to \fIn\fR.  A limit is needed to detect endless recursion during
  constant expression evaluation.  The minimum specified by the standard
  is 512.
! .IP \fB\-fconstexpr\-cache\-depth=\fR\fIn\fR 4
  .IX Item "-fconstexpr-cache-depth=n"
! Set the maximum level of nested evaluation depth for C++11 constexpr
  functions that will be cached to \fIn\fR.  This is a heuristic that
  trades off compilation speed (when the cache avoids repeated
  calculations) against memory consumption (when the cache grows very
*************** large from highly recursive evaluations)
*** 3187,3198 ****
  users are likely to want to adjust it, but if your code does heavy
  constexpr calculations you might want to experiment to find which
  value works best for you.
! .IP "\fB\-fconstexpr\-fp\-except\fR" 4
  .IX Item "-fconstexpr-fp-except"
! Annex F of the C standard specifies that \s-1IEC559\s0 floating point
  exceptions encountered at compile time should not stop compilation.
! \&\*(C+ compilers have historically not followed this guidance, instead
! treating floating point division by zero as non-constant even though
  it has a well defined value.  This flag tells the compiler to give
  Annex F priority over other rules saying that a particular operation
  is undefined.
--- 3120,3131 ----
  users are likely to want to adjust it, but if your code does heavy
  constexpr calculations you might want to experiment to find which
  value works best for you.
! .IP \fB\-fconstexpr\-fp\-except\fR 4
  .IX Item "-fconstexpr-fp-except"
! Annex F of the C standard specifies that IEC559 floating point
  exceptions encountered at compile time should not stop compilation.
! C++ compilers have historically not followed this guidance, instead
! treating floating point division by zero as non\-constant even though
  it has a well defined value.  This flag tells the compiler to give
  Annex F priority over other rules saying that a particular operation
  is undefined.
*************** is undefined.
*** 3200,3211 ****
  .Vb 1
  \&        constexpr float inf = 1./0.; // OK with \-fconstexpr\-fp\-except
  .Ve
! .IP "\fB\-fconstexpr\-loop\-limit=\fR\fIn\fR" 4
  .IX Item "-fconstexpr-loop-limit=n"
! Set the maximum number of iterations for a loop in \*(C+14 constexpr functions
  to \fIn\fR.  A limit is needed to detect infinite loops during
  constant expression evaluation.  The default is 262144 (1<<18).
! .IP "\fB\-fconstexpr\-ops\-limit=\fR\fIn\fR" 4
  .IX Item "-fconstexpr-ops-limit=n"
  Set the maximum number of operations during a single constexpr evaluation.
  Even when number of iterations of a single loop is limited with the above limit,
--- 3133,3144 ----
  .Vb 1
  \&        constexpr float inf = 1./0.; // OK with \-fconstexpr\-fp\-except
  .Ve
! .IP \fB\-fconstexpr\-loop\-limit=\fR\fIn\fR 4
  .IX Item "-fconstexpr-loop-limit=n"
! Set the maximum number of iterations for a loop in C++14 constexpr functions
  to \fIn\fR.  A limit is needed to detect infinite loops during
  constant expression evaluation.  The default is 262144 (1<<18).
! .IP \fB\-fconstexpr\-ops\-limit=\fR\fIn\fR 4
  .IX Item "-fconstexpr-ops-limit=n"
  Set the maximum number of operations during a single constexpr evaluation.
  Even when number of iterations of a single loop is limited with the above limit,
*************** smaller than the above limit, or if in a
*** 3214,3227 ****
  of a loop too many expressions need to be evaluated, the resulting constexpr
  evaluation might take too long.
  The default is 33554432 (1<<25).
! .IP "\fB\-fcontracts\fR" 4
  .IX Item "-fcontracts"
! Enable experimental support for the \*(C+ Contracts feature, as briefly
! added to and then removed from the \*(C+20 working paper (N4820).  The
  implementation also includes proposed enhancements from papers P1290,
  P1332, and P1429.  This functionality is intended mostly for those
  interested in experimentation towards refining the feature to get it
! into shape for a future \*(C+ standard.
  .Sp
  On violation of a checked contract, the violation handler is called.
  Users can replace the violation handler by defining
--- 3147,3160 ----
  of a loop too many expressions need to be evaluated, the resulting constexpr
  evaluation might take too long.
  The default is 33554432 (1<<25).
! .IP \fB\-fcontracts\fR 4
  .IX Item "-fcontracts"
! Enable experimental support for the C++ Contracts feature, as briefly
! added to and then removed from the C++20 working paper (N4820).  The
  implementation also includes proposed enhancements from papers P1290,
  P1332, and P1429.  This functionality is intended mostly for those
  interested in experimentation towards refining the feature to get it
! into shape for a future C++ standard.
  .Sp
  On violation of a checked contract, the violation handler is called.
  Users can replace the violation handler by defining
*************** to specify which contracts will be check
*** 3236,3267 ****
  contracts, P1332 contracts, or P1429 contracts; these sets cannot be
  used together.
  .RS 4
! .IP "\fB\-fcontract\-mode=[on|off]\fR" 4
  .IX Item "-fcontract-mode=[on|off]"
  Control whether any contracts have any semantics at all.  Defaults to on.
! .IP "\fB\-fcontract\-assumption\-mode=[on|off]\fR" 4
  .IX Item "-fcontract-assumption-mode=[on|off]"
  [N4820] Control whether contracts with level \fBaxiom\fR
  should have the assume semantic.  Defaults to on.
! .IP "\fB\-fcontract\-build\-level=[off|default|audit]\fR" 4
  .IX Item "-fcontract-build-level=[off|default|audit]"
  [N4820] Specify which level of contracts to generate checks
  for.  Defaults to \fBdefault\fR.
! .IP "\fB\-fcontract\-continuation\-mode=[on|off]\fR" 4
  .IX Item "-fcontract-continuation-mode=[on|off]"
  [N4820] Control whether to allow the program to continue executing
  after a contract violation.  That is, do checked contracts have the
  \&\fBmaybe\fR semantic described below rather than the \fBnever\fR
  semantic.  Defaults to off.
! .IP "\fB\-fcontract\-role=<name>:<default>,<audit>,<axiom>\fR" 4
  .IX Item "-fcontract-role=<name>:<default>,<audit>,<axiom>"
  [P1332] Specify the concrete semantics for each contract level
  of a particular contract role.
! .IP "\fB\-fcontract\-semantic=[default|audit|axiom]:<semantic>\fR" 4
  .IX Item "-fcontract-semantic=[default|audit|axiom]:<semantic>"
  [P1429] Specify the concrete semantic for a particular
  contract level.
! .IP "\fB\-fcontract\-strict\-declarations=[on|off]\fR" 4
  .IX Item "-fcontract-strict-declarations=[on|off]"
  Control whether to reject adding contracts to a function after its
  first declaration.  Defaults to off.
--- 3169,3200 ----
  contracts, P1332 contracts, or P1429 contracts; these sets cannot be
  used together.
  .RS 4
! .IP \fB\-fcontract\-mode=[on|off]\fR 4
  .IX Item "-fcontract-mode=[on|off]"
  Control whether any contracts have any semantics at all.  Defaults to on.
! .IP \fB\-fcontract\-assumption\-mode=[on|off]\fR 4
  .IX Item "-fcontract-assumption-mode=[on|off]"
  [N4820] Control whether contracts with level \fBaxiom\fR
  should have the assume semantic.  Defaults to on.
! .IP \fB\-fcontract\-build\-level=[off|default|audit]\fR 4
  .IX Item "-fcontract-build-level=[off|default|audit]"
  [N4820] Specify which level of contracts to generate checks
  for.  Defaults to \fBdefault\fR.
! .IP \fB\-fcontract\-continuation\-mode=[on|off]\fR 4
  .IX Item "-fcontract-continuation-mode=[on|off]"
  [N4820] Control whether to allow the program to continue executing
  after a contract violation.  That is, do checked contracts have the
  \&\fBmaybe\fR semantic described below rather than the \fBnever\fR
  semantic.  Defaults to off.
! .IP \fB\-fcontract\-role=<name>:<default>,<audit>,<axiom>\fR 4
  .IX Item "-fcontract-role=<name>:<default>,<audit>,<axiom>"
  [P1332] Specify the concrete semantics for each contract level
  of a particular contract role.
! .IP \fB\-fcontract\-semantic=[default|audit|axiom]:<semantic>\fR 4
  .IX Item "-fcontract-semantic=[default|audit|axiom]:<semantic>"
  [P1429] Specify the concrete semantic for a particular
  contract level.
! .IP \fB\-fcontract\-strict\-declarations=[on|off]\fR 4
  .IX Item "-fcontract-strict-declarations=[on|off]"
  Control whether to reject adding contracts to a function after its
  first declaration.  Defaults to off.
*************** first declaration.  Defaults to off.
*** 3271,3302 ****
  The possible concrete semantics for that can be specified with
  \&\fB\-fcontract\-role\fR or \fB\-fcontract\-semantic\fR are:
  .ie n .IP """ignore""" 4
! .el .IP "\f(CWignore\fR" 4
  .IX Item "ignore"
  This contract has no effect.
  .ie n .IP """assume""" 4
! .el .IP "\f(CWassume\fR" 4
  .IX Item "assume"
! This contract is treated like \*(C+23 \f(CW\*(C`[[assume]]\*(C'\fR.
  .ie n .IP """check_never_continue""" 4
! .el .IP "\f(CWcheck_never_continue\fR" 4
  .IX Item "check_never_continue"
  .PD 0
  .ie n .IP """never""" 4
! .el .IP "\f(CWnever\fR" 4
  .IX Item "never"
  .ie n .IP """abort""" 4
! .el .IP "\f(CWabort\fR" 4
  .IX Item "abort"
  .PD
  This contract is checked.  If it fails, the violation handler is
  called.  If the handler returns, \f(CW\*(C`std::terminate\*(C'\fR is called.
  .ie n .IP """check_maybe_continue""" 4
! .el .IP "\f(CWcheck_maybe_continue\fR" 4
  .IX Item "check_maybe_continue"
  .PD 0
  .ie n .IP """maybe""" 4
! .el .IP "\f(CWmaybe\fR" 4
  .IX Item "maybe"
  .PD
  This contract is checked.  If it fails, the violation handler is
--- 3204,3235 ----
  The possible concrete semantics for that can be specified with
  \&\fB\-fcontract\-role\fR or \fB\-fcontract\-semantic\fR are:
  .ie n .IP """ignore""" 4
! .el .IP \f(CWignore\fR 4
  .IX Item "ignore"
  This contract has no effect.
  .ie n .IP """assume""" 4
! .el .IP \f(CWassume\fR 4
  .IX Item "assume"
! This contract is treated like C++23 \f(CW\*(C`[[assume]]\*(C'\fR.
  .ie n .IP """check_never_continue""" 4
! .el .IP \f(CWcheck_never_continue\fR 4
  .IX Item "check_never_continue"
  .PD 0
  .ie n .IP """never""" 4
! .el .IP \f(CWnever\fR 4
  .IX Item "never"
  .ie n .IP """abort""" 4
! .el .IP \f(CWabort\fR 4
  .IX Item "abort"
  .PD
  This contract is checked.  If it fails, the violation handler is
  called.  If the handler returns, \f(CW\*(C`std::terminate\*(C'\fR is called.
  .ie n .IP """check_maybe_continue""" 4
! .el .IP \f(CWcheck_maybe_continue\fR 4
  .IX Item "check_maybe_continue"
  .PD 0
  .ie n .IP """maybe""" 4
! .el .IP \f(CWmaybe\fR 4
  .IX Item "maybe"
  .PD
  This contract is checked.  If it fails, the violation handler is
*************** called.  If the handler returns, executi
*** 3304,3377 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-fcoroutines\fR" 4
  .IX Item "-fcoroutines"
! Enable support for the \*(C+ coroutines extension (experimental).
! .IP "\fB\-fdiagnostics\-all\-candidates\fR" 4
  .IX Item "-fdiagnostics-all-candidates"
! Permit the \*(C+ front end to note all candidates during overload resolution
  failure, including when a deleted function is selected.
! .IP "\fB\-fno\-elide\-constructors\fR" 4
  .IX Item "-fno-elide-constructors"
! The \*(C+ standard allows an implementation to omit creating a temporary
  that is only used to initialize another object of the same type.
  Specifying this option disables that optimization, and forces G++ to
  call the copy constructor in all cases.  This option also causes G++
  to call trivial member functions which otherwise would be expanded inline.
  .Sp
! In \*(C+17, the compiler is required to omit these temporaries, but this
  option still affects trivial member functions.
! .IP "\fB\-fno\-enforce\-eh\-specs\fR" 4
  .IX Item "-fno-enforce-eh-specs"
! Don't generate code to check for violation of exception specifications
! at run time.  This option violates the \*(C+ standard, but may be useful
  for reducing code size in production builds, much like defining
  \&\f(CW\*(C`NDEBUG\*(C'\fR.  This does not give user code permission to throw
  exceptions in violation of the exception specifications; the compiler
  still optimizes based on the specifications, so throwing an
  unexpected exception results in undefined behavior at run time.
! .IP "\fB\-fextern\-tls\-init\fR" 4
  .IX Item "-fextern-tls-init"
  .PD 0
! .IP "\fB\-fno\-extern\-tls\-init\fR" 4
  .IX Item "-fno-extern-tls-init"
  .PD
! The \*(C+11 and OpenMP standards allow \f(CW\*(C`thread_local\*(C'\fR and
  \&\f(CW\*(C`threadprivate\*(C'\fR variables to have dynamic (runtime)
  initialization.  To support this, any use of such a variable goes
  through a wrapper function that performs any necessary initialization.
  When the use and definition of the variable are in the same
  translation unit, this overhead can be optimized away, but when the
  use is in a different translation unit there is significant overhead
! even if the variable doesn't actually need dynamic initialization.  If
  the programmer can be sure that no use of the variable in a
! non-defining \s-1TU\s0 needs to trigger dynamic initialization (either
  because the variable is statically initialized, or a use of the
! variable in the defining \s-1TU\s0 will be executed before any uses in
! another \s-1TU\s0), they can avoid this overhead with the
  \&\fB\-fno\-extern\-tls\-init\fR option.
  .Sp
  On targets that support symbol aliases, the default is
  \&\fB\-fextern\-tls\-init\fR.  On targets that do not support symbol
  aliases, the default is \fB\-fno\-extern\-tls\-init\fR.
! .IP "\fB\-ffold\-simple\-inlines\fR" 4
  .IX Item "-ffold-simple-inlines"
  .PD 0
! .IP "\fB\-fno\-fold\-simple\-inlines\fR" 4
  .IX Item "-fno-fold-simple-inlines"
  .PD
! Permit the \*(C+ frontend to fold calls to \f(CW\*(C`std::move\*(C'\fR, \f(CW\*(C`std::forward\*(C'\fR,
  \&\f(CW\*(C`std::addressof\*(C'\fR and \f(CW\*(C`std::as_const\*(C'\fR.  In contrast to inlining, this
  means no debug information will be generated for such calls.  Since these
  functions are rarely interesting to debug, this flag is enabled by default
  unless \fB\-fno\-inline\fR is active.
! .IP "\fB\-fno\-gnu\-keywords\fR" 4
  .IX Item "-fno-gnu-keywords"
  Do not recognize \f(CW\*(C`typeof\*(C'\fR as a keyword, so that code can use this
  word as an identifier.  You can use the keyword \f(CW\*(C`_\|_typeof_\|_\*(C'\fR instead.
! This option is implied by the strict \s-1ISO \*(C+\s0 dialects: \fB\-ansi\fR,
  \&\fB\-std=c++98\fR, \fB\-std=c++11\fR, etc.
! .IP "\fB\-fno\-immediate\-escalation\fR" 4
  .IX Item "-fno-immediate-escalation"
  Do not enable immediate function escalation whereby certain functions
  can be promoted to consteval, as specified in P2564R3.  For example:
--- 3237,3310 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-fcoroutines\fR 4
  .IX Item "-fcoroutines"
! Enable support for the C++ coroutines extension (experimental).
! .IP \fB\-fdiagnostics\-all\-candidates\fR 4
  .IX Item "-fdiagnostics-all-candidates"
! Permit the C++ front end to note all candidates during overload resolution
  failure, including when a deleted function is selected.
! .IP \fB\-fno\-elide\-constructors\fR 4
  .IX Item "-fno-elide-constructors"
! The C++ standard allows an implementation to omit creating a temporary
  that is only used to initialize another object of the same type.
  Specifying this option disables that optimization, and forces G++ to
  call the copy constructor in all cases.  This option also causes G++
  to call trivial member functions which otherwise would be expanded inline.
  .Sp
! In C++17, the compiler is required to omit these temporaries, but this
  option still affects trivial member functions.
! .IP \fB\-fno\-enforce\-eh\-specs\fR 4
  .IX Item "-fno-enforce-eh-specs"
! Don\*(Aqt generate code to check for violation of exception specifications
! at run time.  This option violates the C++ standard, but may be useful
  for reducing code size in production builds, much like defining
  \&\f(CW\*(C`NDEBUG\*(C'\fR.  This does not give user code permission to throw
  exceptions in violation of the exception specifications; the compiler
  still optimizes based on the specifications, so throwing an
  unexpected exception results in undefined behavior at run time.
! .IP \fB\-fextern\-tls\-init\fR 4
  .IX Item "-fextern-tls-init"
  .PD 0
! .IP \fB\-fno\-extern\-tls\-init\fR 4
  .IX Item "-fno-extern-tls-init"
  .PD
! The C++11 and OpenMP standards allow \f(CW\*(C`thread_local\*(C'\fR and
  \&\f(CW\*(C`threadprivate\*(C'\fR variables to have dynamic (runtime)
  initialization.  To support this, any use of such a variable goes
  through a wrapper function that performs any necessary initialization.
  When the use and definition of the variable are in the same
  translation unit, this overhead can be optimized away, but when the
  use is in a different translation unit there is significant overhead
! even if the variable doesn\*(Aqt actually need dynamic initialization.  If
  the programmer can be sure that no use of the variable in a
! non\-defining TU needs to trigger dynamic initialization (either
  because the variable is statically initialized, or a use of the
! variable in the defining TU will be executed before any uses in
! another TU), they can avoid this overhead with the
  \&\fB\-fno\-extern\-tls\-init\fR option.
  .Sp
  On targets that support symbol aliases, the default is
  \&\fB\-fextern\-tls\-init\fR.  On targets that do not support symbol
  aliases, the default is \fB\-fno\-extern\-tls\-init\fR.
! .IP \fB\-ffold\-simple\-inlines\fR 4
  .IX Item "-ffold-simple-inlines"
  .PD 0
! .IP \fB\-fno\-fold\-simple\-inlines\fR 4
  .IX Item "-fno-fold-simple-inlines"
  .PD
! Permit the C++ frontend to fold calls to \f(CW\*(C`std::move\*(C'\fR, \f(CW\*(C`std::forward\*(C'\fR,
  \&\f(CW\*(C`std::addressof\*(C'\fR and \f(CW\*(C`std::as_const\*(C'\fR.  In contrast to inlining, this
  means no debug information will be generated for such calls.  Since these
  functions are rarely interesting to debug, this flag is enabled by default
  unless \fB\-fno\-inline\fR is active.
! .IP \fB\-fno\-gnu\-keywords\fR 4
  .IX Item "-fno-gnu-keywords"
  Do not recognize \f(CW\*(C`typeof\*(C'\fR as a keyword, so that code can use this
  word as an identifier.  You can use the keyword \f(CW\*(C`_\|_typeof_\|_\*(C'\fR instead.
! This option is implied by the strict ISO C++ dialects: \fB\-ansi\fR,
  \&\fB\-std=c++98\fR, \fB\-std=c++11\fR, etc.
! .IP \fB\-fno\-immediate\-escalation\fR 4
  .IX Item "-fno-immediate-escalation"
  Do not enable immediate function escalation whereby certain functions
  can be promoted to consteval, as specified in P2564R3.  For example:
*************** can be promoted to consteval, as specifi
*** 3390,3641 ****
  \&        }
  .Ve
  .Sp
! compiles in \*(C+20: \f(CW\*(C`f\*(C'\fR is an immediate-escalating function (due to
  the \f(CW\*(C`auto\*(C'\fR it is a function template and is declared \f(CW\*(C`constexpr\*(C'\fR)
! and \f(CWid(t)\fR is an immediate-escalating expression, so \f(CW\*(C`f\*(C'\fR is
  promoted to \f(CW\*(C`consteval\*(C'\fR.  Consequently, the call to \f(CWid(t)\fR
! is in an immediate context, so doesn't have to produce a constant (that
  is the mechanism allowing consteval function composition).  However,
  with \fB\-fno\-immediate\-escalation\fR, \f(CW\*(C`f\*(C'\fR is not promoted to
  \&\f(CW\*(C`consteval\*(C'\fR, and since the call to consteval function \f(CWid(t)\fR
  is not a constant expression, the compiler rejects the code.
  .Sp
! This option is turned on by default; it is only effective in \*(C+20 mode
  or later.
! .IP "\fB\-fimplicit\-constexpr\fR" 4
  .IX Item "-fimplicit-constexpr"
  Make inline functions implicitly constexpr, if they satisfy the
  requirements for a constexpr function.  This option can be used in
! \&\*(C+14 mode or later.  This can result in initialization changing from
  dynamic to static and other optimizations.
! .IP "\fB\-fno\-implicit\-templates\fR" 4
  .IX Item "-fno-implicit-templates"
! Never emit code for non-inline templates that are instantiated
  implicitly (i.e. by use); only emit code for explicit instantiations.
  If you use this option, you must take care to structure your code to
  include all the necessary explicit instantiations to avoid getting
  undefined symbols at link time.
! .IP "\fB\-fno\-implicit\-inline\-templates\fR" 4
  .IX Item "-fno-implicit-inline-templates"
! Don't emit code for implicit instantiations of inline templates, either.
  The default is to handle inlines differently so that compiles with and
  without optimization need the same set of explicit instantiations.
! .IP "\fB\-fno\-implement\-inlines\fR" 4
  .IX Item "-fno-implement-inlines"
! To save space, do not emit out-of-line copies of inline functions
  controlled by \f(CW\*(C`#pragma implementation\*(C'\fR.  This causes linker
  errors if these functions are not inlined everywhere they are called.
! .IP "\fB\-fmodules\fR" 4
  .IX Item "-fmodules"
  .PD 0
! .IP "\fB\-fno\-modules\fR" 4
  .IX Item "-fno-modules"
  .PD
! Enable support for \*(C+20 modules.  The
  \&\fB\-fno\-modules\fR is usually not needed, as that is the
! default.  Even though this is a \*(C+20 feature, it is not currently
  implicitly enabled by selecting that standard version.
! .IP "\fB\-fmodule\-header\fR" 4
  .IX Item "-fmodule-header"
  .PD 0
! .IP "\fB\-fmodule\-header=user\fR" 4
  .IX Item "-fmodule-header=user"
! .IP "\fB\-fmodule\-header=system\fR" 4
  .IX Item "-fmodule-header=system"
  .PD
  Compile a header file to create an importable header unit.
! .IP "\fB\-fmodule\-implicit\-inline\fR" 4
  .IX Item "-fmodule-implicit-inline"
  Member functions defined in their class definitions are not implicitly
! inline for modular code.  This is different to traditional \*(C+
  behavior, for good reasons.  However, it may result in a difficulty
  during code porting.  This option makes such function definitions
! implicitly inline.  It does however generate an \s-1ABI\s0 incompatibility,
  so you must use it everywhere or nowhere.  (Such definitions outside
  of a named module remain implicitly inline, regardless.)
! .IP "\fB\-fno\-module\-lazy\fR" 4
  .IX Item "-fno-module-lazy"
  Disable lazy module importing and module mapper creation.
! .IP "\fB\-fmodule\-mapper=\fR[\fIhostname\fR]\fB:\fR\fIport\fR[\fB?\fR\fIident\fR]" 4
  .IX Item "-fmodule-mapper=[hostname]:port[?ident]"
  .PD 0
  .IP "\fB\-fmodule\-mapper=|\fR\fIprogram\fR[\fB?\fR\fIident\fR]\fB \fR\fIargs...\fR" 4
  .IX Item "-fmodule-mapper=|program[?ident] args..."
! .IP "\fB\-fmodule\-mapper==\fR\fIsocket\fR[\fB?\fR\fIident\fR]" 4
  .IX Item "-fmodule-mapper==socket[?ident]"
! .IP "\fB\-fmodule\-mapper=<>\fR[\fIinout\fR][\fB?\fR\fIident\fR]" 4
  .IX Item "-fmodule-mapper=<>[inout][?ident]"
! .IP "\fB\-fmodule\-mapper=<\fR\fIin\fR\fB>\fR\fIout\fR[\fB?\fR\fIident\fR]" 4
  .IX Item "-fmodule-mapper=<in>out[?ident]"
! .IP "\fB\-fmodule\-mapper=\fR\fIfile\fR[\fB?\fR\fIident\fR]" 4
  .IX Item "-fmodule-mapper=file[?ident]"
  .PD
  An oracle to query for module name to filename mappings.  If
! unspecified the \fB\s-1CXX_MODULE_MAPPER\s0\fR environment variable is used,
! and if that is unset, an in-process default is provided.
! .IP "\fB\-fmodule\-only\fR" 4
  .IX Item "-fmodule-only"
  Only emit the Compiled Module Interface, inhibiting any object file.
! .IP "\fB\-fms\-extensions\fR" 4
  .IX Item "-fms-extensions"
! Disable Wpedantic warnings about constructs used in \s-1MFC,\s0 such as implicit
! int and getting a pointer to member function via non-standard syntax.
! .IP "\fB\-fnew\-inheriting\-ctors\fR" 4
  .IX Item "-fnew-inheriting-ctors"
! Enable the P0136 adjustment to the semantics of \*(C+11 constructor
! inheritance.  This is part of \*(C+17 but also considered to be a Defect
! Report against \*(C+11 and \*(C+14.  This flag is enabled by default
  unless \fB\-fabi\-version=10\fR or lower is specified.
! .IP "\fB\-fnew\-ttp\-matching\fR" 4
  .IX Item "-fnew-ttp-matching"
  Enable the P0522 resolution to Core issue 150, template template
  parameters and default arguments: this allows a template with default
  template arguments as an argument for a template template parameter
  with fewer template parameters.  This flag is enabled by default for
  \&\fB\-std=c++17\fR.
! .IP "\fB\-fno\-nonansi\-builtins\fR" 4
  .IX Item "-fno-nonansi-builtins"
! Disable built-in declarations of functions that are not mandated by
! \&\s-1ANSI/ISO C.\s0  These include \f(CW\*(C`ffs\*(C'\fR, \f(CW\*(C`alloca\*(C'\fR, \f(CW\*(C`_exit\*(C'\fR,
  \&\f(CW\*(C`index\*(C'\fR, \f(CW\*(C`bzero\*(C'\fR, \f(CW\*(C`conjf\*(C'\fR, and other related functions.
! .IP "\fB\-fnothrow\-opt\fR" 4
  .IX Item "-fnothrow-opt"
! Treat a \f(CW\*(C`throw()\*(C'\fR exception specification as if it were a
  \&\f(CW\*(C`noexcept\*(C'\fR specification to reduce or eliminate the text size
  overhead relative to a function with no exception specification.  If
! the function has local variables of types with non-trivial
  destructors, the exception specification actually makes the
! function smaller because the \s-1EH\s0 cleanups for those variables can be
  optimized away.  The semantic effect is that an exception thrown out of
  a function with such an exception specification results in a call
  to \f(CW\*(C`terminate\*(C'\fR rather than \f(CW\*(C`unexpected\*(C'\fR.
! .IP "\fB\-fno\-operator\-names\fR" 4
  .IX Item "-fno-operator-names"
  Do not treat the operator name keywords \f(CW\*(C`and\*(C'\fR, \f(CW\*(C`bitand\*(C'\fR,
  \&\f(CW\*(C`bitor\*(C'\fR, \f(CW\*(C`compl\*(C'\fR, \f(CW\*(C`not\*(C'\fR, \f(CW\*(C`or\*(C'\fR and \f(CW\*(C`xor\*(C'\fR as
  synonyms as keywords.
! .IP "\fB\-fno\-optional\-diags\fR" 4
  .IX Item "-fno-optional-diags"
  Disable diagnostics that the standard says a compiler does not need to
  issue.  Currently, the only such diagnostic issued by G++ is the one for
  a name having multiple meanings within a class.
! .IP "\fB\-fno\-pretty\-templates\fR" 4
  .IX Item "-fno-pretty-templates"
  When an error message refers to a specialization of a function
  template, the compiler normally prints the signature of the
  template followed by the template arguments and any typedefs or
  typenames in the signature (e.g. \f(CW\*(C`void f(T) [with T = int]\*(C'\fR
! rather than \f(CW\*(C`void f(int)\*(C'\fR) so that it's clear which template is
  involved.  When an error message refers to a specialization of a class
  template, the compiler omits any template arguments that match
  the default template arguments for that template.  If either of these
  behaviors make it harder to understand the error message rather than
  easier, you can use \fB\-fno\-pretty\-templates\fR to disable them.
! .IP "\fB\-frange\-for\-ext\-temps\fR" 4
  .IX Item "-frange-for-ext-temps"
! Enable lifetime extension of \*(C+ range based for temporaries.
  With \fB\-std=c++23\fR and above this is part of the language standard,
  so lifetime of the temporaries is extended until the end of the loop
  by default.  This option allows enabling that behavior also
  in earlier versions of the standard.
! .IP "\fB\-fno\-rtti\fR" 4
  .IX Item "-fno-rtti"
  Disable generation of information about every class with virtual
! functions for use by the \*(C+ run-time type identification features
! (\f(CW\*(C`dynamic_cast\*(C'\fR and \f(CW\*(C`typeid\*(C'\fR).  If you don't use those parts
  of the language, you can save some space by using this flag.  Note that
  exception handling uses the same information, but G++ generates it as
  needed. The \f(CW\*(C`dynamic_cast\*(C'\fR operator can still be used for casts that
! do not require run-time type information, i.e. casts to \f(CW\*(C`void *\*(C'\fR or to
  unambiguous base classes.
  .Sp
  Mixing code compiled with \fB\-frtti\fR with that compiled with
  \&\fB\-fno\-rtti\fR may not work.  For example, programs may
  fail to link if a class compiled with \fB\-fno\-rtti\fR is used as a base
  for a class compiled with \fB\-frtti\fR.
! .IP "\fB\-fsized\-deallocation\fR" 4
  .IX Item "-fsized-deallocation"
! Enable the built-in global declarations
  .Sp
  .Vb 2
  \&        void operator delete (void *, std::size_t) noexcept;
  \&        void operator delete[] (void *, std::size_t) noexcept;
  .Ve
  .Sp
! as introduced in \*(C+14.  This is useful for user-defined replacement
  deallocation functions that, for example, use the size of the object
  to make deallocation faster.  Enabled by default under
  \&\fB\-std=c++14\fR and above.  The flag \fB\-Wsized\-deallocation\fR
  warns about places that might want to add a definition.
! .IP "\fB\-fstrict\-enums\fR" 4
  .IX Item "-fstrict-enums"
  Allow the compiler to optimize using the assumption that a value of
  enumerated type can only be one of the values of the enumeration (as
! defined in the \*(C+ standard; basically, a value that can be
  represented in the minimum number of bits needed to represent all the
  enumerators).  This assumption may not be valid if the program uses a
  cast to convert an arbitrary integer value to the enumerated type.
  This option has no effect for an enumeration type with a fixed underlying
  type.
! .IP "\fB\-fstrong\-eval\-order\fR" 4
  .IX Item "-fstrong-eval-order"
  .PD 0
! .IP "\fB\-fstrong\-eval\-order=\fR\fIkind\fR" 4
  .IX Item "-fstrong-eval-order=kind"
  .PD
  Evaluate member access, array subscripting, and shift expressions in
! left-to-right order, and evaluate assignment in right-to-left order,
! as adopted for \*(C+17.  \fB\-fstrong\-eval\-order\fR is equivalent to
  \&\fB\-fstrong\-eval\-order=all\fR,
  and is enabled by default with \fB\-std=c++17\fR or later.
  .Sp
  \&\fB\-fstrong\-eval\-order=some\fR enables just the ordering of member
! access and shift expressions, and is the default for \*(C+ dialects prior to
! \&\*(C+17.
  .Sp
  \&\fB\-fstrong\-eval\-order=none\fR is equivalent to
  \&\fB\-fno\-strong\-eval\-order\fR.
! .IP "\fB\-ftemplate\-backtrace\-limit=\fR\fIn\fR" 4
  .IX Item "-ftemplate-backtrace-limit=n"
  Set the maximum number of template instantiation notes for a single
  warning or error to \fIn\fR.  The default value is 10.
! .IP "\fB\-ftemplate\-depth=\fR\fIn\fR" 4
  .IX Item "-ftemplate-depth=n"
  Set the maximum instantiation depth for template classes to \fIn\fR.
  A limit on the template instantiation depth is needed to detect
! endless recursions during template class instantiation.  \s-1ANSI/ISO \*(C+\s0
  conforming programs must not rely on a maximum depth greater than 17
! (changed to 1024 in \*(C+11).  The default value is 900, as the compiler
  can run out of stack space before hitting 1024 in some situations.
! .IP "\fB\-fno\-threadsafe\-statics\fR" 4
  .IX Item "-fno-threadsafe-statics"
! Do not emit the extra code to use the routines specified in the \*(C+
! \&\s-1ABI\s0 for thread-safe initialization of local statics.  You can use this
! option to reduce code size slightly in code that doesn't need to be
! thread-safe.
! .IP "\fB\-fuse\-cxa\-atexit\fR" 4
  .IX Item "-fuse-cxa-atexit"
  Register destructors for objects with static storage duration with the
  \&\f(CW\*(C`_\|_cxa_atexit\*(C'\fR function rather than the \f(CW\*(C`atexit\*(C'\fR function.
! This option is required for fully standards-compliant handling of static
  destructors, but only works if your C library supports
  \&\f(CW\*(C`_\|_cxa_atexit\*(C'\fR.
! .IP "\fB\-fno\-use\-cxa\-get\-exception\-ptr\fR" 4
  .IX Item "-fno-use-cxa-get-exception-ptr"
! Don't use the \f(CW\*(C`_\|_cxa_get_exception_ptr\*(C'\fR runtime routine.  This
  causes \f(CW\*(C`std::uncaught_exception\*(C'\fR to be incorrect, but is necessary
  if the runtime routine is not available.
! .IP "\fB\-fvisibility\-inlines\-hidden\fR" 4
  .IX Item "-fvisibility-inlines-hidden"
  This switch declares that the user does not attempt to compare
  pointers to inline functions or methods where the addresses of the two functions
  are taken in different shared objects.
  .Sp
! The effect of this is that \s-1GCC\s0 may, effectively, mark inline methods with
  \&\f(CW\*(C`_\|_attribute_\|_ ((visibility ("hidden")))\*(C'\fR so that they do not
! appear in the export table of a \s-1DSO\s0 and do not require a \s-1PLT\s0 indirection
! when used within the \s-1DSO.\s0  Enabling this option can have a dramatic effect
! on load and link times of a \s-1DSO\s0 as it massively reduces the size of the
  dynamic export table when the library makes heavy use of templates.
  .Sp
  The behavior of this switch is not quite the same as marking the
--- 3323,3574 ----
  \&        }
  .Ve
  .Sp
! compiles in C++20: \f(CW\*(C`f\*(C'\fR is an immediate\-escalating function (due to
  the \f(CW\*(C`auto\*(C'\fR it is a function template and is declared \f(CW\*(C`constexpr\*(C'\fR)
! and \f(CWid(t)\fR is an immediate\-escalating expression, so \f(CW\*(C`f\*(C'\fR is
  promoted to \f(CW\*(C`consteval\*(C'\fR.  Consequently, the call to \f(CWid(t)\fR
! is in an immediate context, so doesn\*(Aqt have to produce a constant (that
  is the mechanism allowing consteval function composition).  However,
  with \fB\-fno\-immediate\-escalation\fR, \f(CW\*(C`f\*(C'\fR is not promoted to
  \&\f(CW\*(C`consteval\*(C'\fR, and since the call to consteval function \f(CWid(t)\fR
  is not a constant expression, the compiler rejects the code.
  .Sp
! This option is turned on by default; it is only effective in C++20 mode
  or later.
! .IP \fB\-fimplicit\-constexpr\fR 4
  .IX Item "-fimplicit-constexpr"
  Make inline functions implicitly constexpr, if they satisfy the
  requirements for a constexpr function.  This option can be used in
! C++14 mode or later.  This can result in initialization changing from
  dynamic to static and other optimizations.
! .IP \fB\-fno\-implicit\-templates\fR 4
  .IX Item "-fno-implicit-templates"
! Never emit code for non\-inline templates that are instantiated
  implicitly (i.e. by use); only emit code for explicit instantiations.
  If you use this option, you must take care to structure your code to
  include all the necessary explicit instantiations to avoid getting
  undefined symbols at link time.
! .IP \fB\-fno\-implicit\-inline\-templates\fR 4
  .IX Item "-fno-implicit-inline-templates"
! Don\*(Aqt emit code for implicit instantiations of inline templates, either.
  The default is to handle inlines differently so that compiles with and
  without optimization need the same set of explicit instantiations.
! .IP \fB\-fno\-implement\-inlines\fR 4
  .IX Item "-fno-implement-inlines"
! To save space, do not emit out\-of\-line copies of inline functions
  controlled by \f(CW\*(C`#pragma implementation\*(C'\fR.  This causes linker
  errors if these functions are not inlined everywhere they are called.
! .IP \fB\-fmodules\fR 4
  .IX Item "-fmodules"
  .PD 0
! .IP \fB\-fno\-modules\fR 4
  .IX Item "-fno-modules"
  .PD
! Enable support for C++20 modules.  The
  \&\fB\-fno\-modules\fR is usually not needed, as that is the
! default.  Even though this is a C++20 feature, it is not currently
  implicitly enabled by selecting that standard version.
! .IP \fB\-fmodule\-header\fR 4
  .IX Item "-fmodule-header"
  .PD 0
! .IP \fB\-fmodule\-header=user\fR 4
  .IX Item "-fmodule-header=user"
! .IP \fB\-fmodule\-header=system\fR 4
  .IX Item "-fmodule-header=system"
  .PD
  Compile a header file to create an importable header unit.
! .IP \fB\-fmodule\-implicit\-inline\fR 4
  .IX Item "-fmodule-implicit-inline"
  Member functions defined in their class definitions are not implicitly
! inline for modular code.  This is different to traditional C++
  behavior, for good reasons.  However, it may result in a difficulty
  during code porting.  This option makes such function definitions
! implicitly inline.  It does however generate an ABI incompatibility,
  so you must use it everywhere or nowhere.  (Such definitions outside
  of a named module remain implicitly inline, regardless.)
! .IP \fB\-fno\-module\-lazy\fR 4
  .IX Item "-fno-module-lazy"
  Disable lazy module importing and module mapper creation.
! .IP \fB\-fmodule\-mapper=\fR[\fIhostname\fR]\fB:\fR\fIport\fR[\fB?\fR\fIident\fR] 4
  .IX Item "-fmodule-mapper=[hostname]:port[?ident]"
  .PD 0
  .IP "\fB\-fmodule\-mapper=|\fR\fIprogram\fR[\fB?\fR\fIident\fR]\fB \fR\fIargs...\fR" 4
  .IX Item "-fmodule-mapper=|program[?ident] args..."
! .IP \fB\-fmodule\-mapper==\fR\fIsocket\fR[\fB?\fR\fIident\fR] 4
  .IX Item "-fmodule-mapper==socket[?ident]"
! .IP \fB\-fmodule\-mapper=<>\fR[\fIinout\fR][\fB?\fR\fIident\fR] 4
  .IX Item "-fmodule-mapper=<>[inout][?ident]"
! .IP \fB\-fmodule\-mapper=<\fR\fIin\fR\fB>\fR\fIout\fR[\fB?\fR\fIident\fR] 4
  .IX Item "-fmodule-mapper=<in>out[?ident]"
! .IP \fB\-fmodule\-mapper=\fR\fIfile\fR[\fB?\fR\fIident\fR] 4
  .IX Item "-fmodule-mapper=file[?ident]"
  .PD
  An oracle to query for module name to filename mappings.  If
! unspecified the \fBCXX_MODULE_MAPPER\fR environment variable is used,
! and if that is unset, an in\-process default is provided.
! .IP \fB\-fmodule\-only\fR 4
  .IX Item "-fmodule-only"
  Only emit the Compiled Module Interface, inhibiting any object file.
! .IP \fB\-fms\-extensions\fR 4
  .IX Item "-fms-extensions"
! Disable Wpedantic warnings about constructs used in MFC, such as implicit
! int and getting a pointer to member function via non\-standard syntax.
! .IP \fB\-fnew\-inheriting\-ctors\fR 4
  .IX Item "-fnew-inheriting-ctors"
! Enable the P0136 adjustment to the semantics of C++11 constructor
! inheritance.  This is part of C++17 but also considered to be a Defect
! Report against C++11 and C++14.  This flag is enabled by default
  unless \fB\-fabi\-version=10\fR or lower is specified.
! .IP \fB\-fnew\-ttp\-matching\fR 4
  .IX Item "-fnew-ttp-matching"
  Enable the P0522 resolution to Core issue 150, template template
  parameters and default arguments: this allows a template with default
  template arguments as an argument for a template template parameter
  with fewer template parameters.  This flag is enabled by default for
  \&\fB\-std=c++17\fR.
! .IP \fB\-fno\-nonansi\-builtins\fR 4
  .IX Item "-fno-nonansi-builtins"
! Disable built\-in declarations of functions that are not mandated by
! ANSI/ISO C.  These include \f(CW\*(C`ffs\*(C'\fR, \f(CW\*(C`alloca\*(C'\fR, \f(CW\*(C`_exit\*(C'\fR,
  \&\f(CW\*(C`index\*(C'\fR, \f(CW\*(C`bzero\*(C'\fR, \f(CW\*(C`conjf\*(C'\fR, and other related functions.
! .IP \fB\-fnothrow\-opt\fR 4
  .IX Item "-fnothrow-opt"
! Treat a \f(CWthrow()\fR exception specification as if it were a
  \&\f(CW\*(C`noexcept\*(C'\fR specification to reduce or eliminate the text size
  overhead relative to a function with no exception specification.  If
! the function has local variables of types with non\-trivial
  destructors, the exception specification actually makes the
! function smaller because the EH cleanups for those variables can be
  optimized away.  The semantic effect is that an exception thrown out of
  a function with such an exception specification results in a call
  to \f(CW\*(C`terminate\*(C'\fR rather than \f(CW\*(C`unexpected\*(C'\fR.
! .IP \fB\-fno\-operator\-names\fR 4
  .IX Item "-fno-operator-names"
  Do not treat the operator name keywords \f(CW\*(C`and\*(C'\fR, \f(CW\*(C`bitand\*(C'\fR,
  \&\f(CW\*(C`bitor\*(C'\fR, \f(CW\*(C`compl\*(C'\fR, \f(CW\*(C`not\*(C'\fR, \f(CW\*(C`or\*(C'\fR and \f(CW\*(C`xor\*(C'\fR as
  synonyms as keywords.
! .IP \fB\-fno\-optional\-diags\fR 4
  .IX Item "-fno-optional-diags"
  Disable diagnostics that the standard says a compiler does not need to
  issue.  Currently, the only such diagnostic issued by G++ is the one for
  a name having multiple meanings within a class.
! .IP \fB\-fno\-pretty\-templates\fR 4
  .IX Item "-fno-pretty-templates"
  When an error message refers to a specialization of a function
  template, the compiler normally prints the signature of the
  template followed by the template arguments and any typedefs or
  typenames in the signature (e.g. \f(CW\*(C`void f(T) [with T = int]\*(C'\fR
! rather than \f(CW\*(C`void f(int)\*(C'\fR) so that it\*(Aqs clear which template is
  involved.  When an error message refers to a specialization of a class
  template, the compiler omits any template arguments that match
  the default template arguments for that template.  If either of these
  behaviors make it harder to understand the error message rather than
  easier, you can use \fB\-fno\-pretty\-templates\fR to disable them.
! .IP \fB\-frange\-for\-ext\-temps\fR 4
  .IX Item "-frange-for-ext-temps"
! Enable lifetime extension of C++ range based for temporaries.
  With \fB\-std=c++23\fR and above this is part of the language standard,
  so lifetime of the temporaries is extended until the end of the loop
  by default.  This option allows enabling that behavior also
  in earlier versions of the standard.
! .IP \fB\-fno\-rtti\fR 4
  .IX Item "-fno-rtti"
  Disable generation of information about every class with virtual
! functions for use by the C++ run\-time type identification features
! (\f(CW\*(C`dynamic_cast\*(C'\fR and \f(CW\*(C`typeid\*(C'\fR).  If you don\*(Aqt use those parts
  of the language, you can save some space by using this flag.  Note that
  exception handling uses the same information, but G++ generates it as
  needed. The \f(CW\*(C`dynamic_cast\*(C'\fR operator can still be used for casts that
! do not require run\-time type information, i.e. casts to \f(CW\*(C`void *\*(C'\fR or to
  unambiguous base classes.
  .Sp
  Mixing code compiled with \fB\-frtti\fR with that compiled with
  \&\fB\-fno\-rtti\fR may not work.  For example, programs may
  fail to link if a class compiled with \fB\-fno\-rtti\fR is used as a base
  for a class compiled with \fB\-frtti\fR.
! .IP \fB\-fsized\-deallocation\fR 4
  .IX Item "-fsized-deallocation"
! Enable the built\-in global declarations
  .Sp
  .Vb 2
  \&        void operator delete (void *, std::size_t) noexcept;
  \&        void operator delete[] (void *, std::size_t) noexcept;
  .Ve
  .Sp
! as introduced in C++14.  This is useful for user\-defined replacement
  deallocation functions that, for example, use the size of the object
  to make deallocation faster.  Enabled by default under
  \&\fB\-std=c++14\fR and above.  The flag \fB\-Wsized\-deallocation\fR
  warns about places that might want to add a definition.
! .IP \fB\-fstrict\-enums\fR 4
  .IX Item "-fstrict-enums"
  Allow the compiler to optimize using the assumption that a value of
  enumerated type can only be one of the values of the enumeration (as
! defined in the C++ standard; basically, a value that can be
  represented in the minimum number of bits needed to represent all the
  enumerators).  This assumption may not be valid if the program uses a
  cast to convert an arbitrary integer value to the enumerated type.
  This option has no effect for an enumeration type with a fixed underlying
  type.
! .IP \fB\-fstrong\-eval\-order\fR 4
  .IX Item "-fstrong-eval-order"
  .PD 0
! .IP \fB\-fstrong\-eval\-order=\fR\fIkind\fR 4
  .IX Item "-fstrong-eval-order=kind"
  .PD
  Evaluate member access, array subscripting, and shift expressions in
! left\-to\-right order, and evaluate assignment in right\-to\-left order,
! as adopted for C++17.  \fB\-fstrong\-eval\-order\fR is equivalent to
  \&\fB\-fstrong\-eval\-order=all\fR,
  and is enabled by default with \fB\-std=c++17\fR or later.
  .Sp
  \&\fB\-fstrong\-eval\-order=some\fR enables just the ordering of member
! access and shift expressions, and is the default for C++ dialects prior to
! C++17.
  .Sp
  \&\fB\-fstrong\-eval\-order=none\fR is equivalent to
  \&\fB\-fno\-strong\-eval\-order\fR.
! .IP \fB\-ftemplate\-backtrace\-limit=\fR\fIn\fR 4
  .IX Item "-ftemplate-backtrace-limit=n"
  Set the maximum number of template instantiation notes for a single
  warning or error to \fIn\fR.  The default value is 10.
! .IP \fB\-ftemplate\-depth=\fR\fIn\fR 4
  .IX Item "-ftemplate-depth=n"
  Set the maximum instantiation depth for template classes to \fIn\fR.
  A limit on the template instantiation depth is needed to detect
! endless recursions during template class instantiation.  ANSI/ISO C++
  conforming programs must not rely on a maximum depth greater than 17
! (changed to 1024 in C++11).  The default value is 900, as the compiler
  can run out of stack space before hitting 1024 in some situations.
! .IP \fB\-fno\-threadsafe\-statics\fR 4
  .IX Item "-fno-threadsafe-statics"
! Do not emit the extra code to use the routines specified in the C++
! ABI for thread\-safe initialization of local statics.  You can use this
! option to reduce code size slightly in code that doesn\*(Aqt need to be
! thread\-safe.
! .IP \fB\-fuse\-cxa\-atexit\fR 4
  .IX Item "-fuse-cxa-atexit"
  Register destructors for objects with static storage duration with the
  \&\f(CW\*(C`_\|_cxa_atexit\*(C'\fR function rather than the \f(CW\*(C`atexit\*(C'\fR function.
! This option is required for fully standards\-compliant handling of static
  destructors, but only works if your C library supports
  \&\f(CW\*(C`_\|_cxa_atexit\*(C'\fR.
! .IP \fB\-fno\-use\-cxa\-get\-exception\-ptr\fR 4
  .IX Item "-fno-use-cxa-get-exception-ptr"
! Don\*(Aqt use the \f(CW\*(C`_\|_cxa_get_exception_ptr\*(C'\fR runtime routine.  This
  causes \f(CW\*(C`std::uncaught_exception\*(C'\fR to be incorrect, but is necessary
  if the runtime routine is not available.
! .IP \fB\-fvisibility\-inlines\-hidden\fR 4
  .IX Item "-fvisibility-inlines-hidden"
  This switch declares that the user does not attempt to compare
  pointers to inline functions or methods where the addresses of the two functions
  are taken in different shared objects.
  .Sp
! The effect of this is that GCC may, effectively, mark inline methods with
  \&\f(CW\*(C`_\|_attribute_\|_ ((visibility ("hidden")))\*(C'\fR so that they do not
! appear in the export table of a DSO and do not require a PLT indirection
! when used within the DSO.  Enabling this option can have a dramatic effect
! on load and link times of a DSO as it massively reduces the size of the
  dynamic export table when the library makes heavy use of templates.
  .Sp
  The behavior of this switch is not quite the same as marking the
*************** visibility has no effect.
*** 3651,3671 ****
  .Sp
  Explicitly instantiated inline methods are unaffected by this option
  as their linkage might otherwise cross a shared library boundary.
! .IP "\fB\-fvisibility\-ms\-compat\fR" 4
  .IX Item "-fvisibility-ms-compat"
! This flag attempts to use visibility settings to make \s-1GCC\s0's \*(C+
  linkage model compatible with that of Microsoft Visual Studio.
  .Sp
! The flag makes these changes to \s-1GCC\s0's linkage model:
  .RS 4
! .IP "1." 4
  .IX Item "1."
  It sets the default visibility to \f(CW\*(C`hidden\*(C'\fR, like
  \&\fB\-fvisibility=hidden\fR.
! .IP "2." 4
  .IX Item "2."
  Types, but not their members, are not hidden by default.
! .IP "3." 4
  .IX Item "3."
  The One Definition Rule is relaxed for types without explicit
  visibility specifications that are defined in more than one
--- 3584,3604 ----
  .Sp
  Explicitly instantiated inline methods are unaffected by this option
  as their linkage might otherwise cross a shared library boundary.
! .IP \fB\-fvisibility\-ms\-compat\fR 4
  .IX Item "-fvisibility-ms-compat"
! This flag attempts to use visibility settings to make GCC\*(Aqs C++
  linkage model compatible with that of Microsoft Visual Studio.
  .Sp
! The flag makes these changes to GCC\*(Aqs linkage model:
  .RS 4
! .IP 1. 4
  .IX Item "1."
  It sets the default visibility to \f(CW\*(C`hidden\*(C'\fR, like
  \&\fB\-fvisibility=hidden\fR.
! .IP 2. 4
  .IX Item "2."
  Types, but not their members, are not hidden by default.
! .IP 3. 4
  .IX Item "3."
  The One Definition Rule is relaxed for types without explicit
  visibility specifications that are defined in more than one
*************** of the same type with the same name but
*** 3684,3720 ****
  objects are different, so changing one does not change the other;
  and that pointers to function members defined in different shared
  objects may not compare equal.  When this flag is given, it is a
! violation of the \s-1ODR\s0 to define types with the same name differently.
  .RE
! .IP "\fB\-fno\-weak\fR" 4
  .IX Item "-fno-weak"
  Do not use weak symbol support, even if it is provided by the linker.
  By default, G++ uses weak symbols if they are available.  This
! option exists only for testing, and should not be used by end-users;
  it results in inferior code and has no benefits.  This option may
  be removed in a future release of G++.
! .IP "\fB\-fext\-numeric\-literals\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-fext-numeric-literals ( and Objective- only)"
! Accept imaginary, fixed-point, or machine-defined
! literal number suffixes as \s-1GNU\s0 extensions.
  When this option is turned off these suffixes are treated
! as \*(C+11 user-defined literal numeric suffixes.
! This is on by default for all pre\-\*(C+11 dialects and all \s-1GNU\s0 dialects:
  \&\fB\-std=c++98\fR, \fB\-std=gnu++98\fR, \fB\-std=gnu++11\fR,
  \&\fB\-std=gnu++14\fR.
  This option is off by default
! for \s-1ISO \*(C+11\s0 onwards (\fB\-std=c++11\fR, ...).
! .IP "\fB\-nostdinc++\fR" 4
  .IX Item "-nostdinc++"
  Do not search for header files in the standard directories specific to
! \&\*(C+, but do still search the other standard directories.  (This option
! is used when building the \*(C+ library.)
! .IP "\fB\-flang\-info\-include\-translate\fR" 4
  .IX Item "-flang-info-include-translate"
  .PD 0
! .IP "\fB\-flang\-info\-include\-translate\-not\fR" 4
  .IX Item "-flang-info-include-translate-not"
! .IP "\fB\-flang\-info\-include\-translate=\fR\fIheader\fR" 4
  .IX Item "-flang-info-include-translate=header"
  .PD
  Inform of include translation events.  The first will note accepted
--- 3617,3653 ----
  objects are different, so changing one does not change the other;
  and that pointers to function members defined in different shared
  objects may not compare equal.  When this flag is given, it is a
! violation of the ODR to define types with the same name differently.
  .RE
! .IP \fB\-fno\-weak\fR 4
  .IX Item "-fno-weak"
  Do not use weak symbol support, even if it is provided by the linker.
  By default, G++ uses weak symbols if they are available.  This
! option exists only for testing, and should not be used by end\-users;
  it results in inferior code and has no benefits.  This option may
  be removed in a future release of G++.
! .IP "\fB\-fext\-numeric\-literals\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-fext-numeric-literals (C++ and Objective-C++ only)"
! Accept imaginary, fixed\-point, or machine\-defined
! literal number suffixes as GNU extensions.
  When this option is turned off these suffixes are treated
! as C++11 user\-defined literal numeric suffixes.
! This is on by default for all pre\-C++11 dialects and all GNU dialects:
  \&\fB\-std=c++98\fR, \fB\-std=gnu++98\fR, \fB\-std=gnu++11\fR,
  \&\fB\-std=gnu++14\fR.
  This option is off by default
! for ISO C++11 onwards (\fB\-std=c++11\fR, ...).
! .IP \fB\-nostdinc++\fR 4
  .IX Item "-nostdinc++"
  Do not search for header files in the standard directories specific to
! C++, but do still search the other standard directories.  (This option
! is used when building the C++ library.)
! .IP \fB\-flang\-info\-include\-translate\fR 4
  .IX Item "-flang-info-include-translate"
  .PD 0
! .IP \fB\-flang\-info\-include\-translate\-not\fR 4
  .IX Item "-flang-info-include-translate-not"
! .IP \fB\-flang\-info\-include\-translate=\fR\fIheader\fR 4
  .IX Item "-flang-info-include-translate=header"
  .PD
  Inform of include translation events.  The first will note accepted
*************** translations.  The \fIheader\fR form wil
*** 3723,3759 ****
  translations relating to that specific header.  If \fIheader\fR is of
  the form \f(CW"user"\fR or \f(CW\*(C`<system>\*(C'\fR it will be resolved to a
  specific user or system header using the include path.
! .IP "\fB\-flang\-info\-module\-cmi\fR" 4
  .IX Item "-flang-info-module-cmi"
  .PD 0
! .IP "\fB\-flang\-info\-module\-cmi=\fR\fImodule\fR" 4
  .IX Item "-flang-info-module-cmi=module"
  .PD
  Inform of Compiled Module Interface pathnames.  The first will note
! all read \s-1CMI\s0 pathnames.  The \fImodule\fR form will not reading a
! specific module's \s-1CMI.\s0  \fImodule\fR may be a named module or a
! header-unit (the latter indicated by either being a pathname containing
  directory separators or enclosed in \f(CW\*(C`<>\*(C'\fR or \f(CW""\fR).
! .IP "\fB\-stdlib=\fR\fIlibstdc++,libc++\fR" 4
  .IX Item "-stdlib=libstdc++,libc++"
  When G++ is configured to support this option, it allows specification of
! alternate \*(C+ runtime libraries.  Two options are available: \fIlibstdc++\fR
! (the default, native \*(C+ runtime for G++) and \fIlibc++\fR which is the
! \&\*(C+ runtime installed on some operating systems (e.g. Darwin versions from
  Darwin11 onwards).  The option switches G++ to use the headers from the
  specified library and to emit \f(CW\*(C`\-lstdc++\*(C'\fR or \f(CW\*(C`\-lc++\*(C'\fR respectively,
! when a \*(C+ runtime is required for linking.
  .PP
! In addition, these warning options have meanings only for \*(C+ programs:
! .IP "\fB\-Wabi\-tag\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wabi-tag ( and Objective- only)"
! Warn when a type with an \s-1ABI\s0 tag is used in a context that does not
! have that \s-1ABI\s0 tag.  See \fB\*(C+ Attributes\fR for more information
! about \s-1ABI\s0 tags.
! .IP "\fB\-Wcomma\-subscript\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wcomma-subscript ( and Objective- only)"
  Warn about uses of a comma expression within a subscripting expression.
! This usage was deprecated in \*(C+20 and is going to be removed in \*(C+23.
  However, a comma expression wrapped in \f(CW\*(C`( )\*(C'\fR is not deprecated.  Example:
  .Sp
  .Vb 4
--- 3656,3692 ----
  translations relating to that specific header.  If \fIheader\fR is of
  the form \f(CW"user"\fR or \f(CW\*(C`<system>\*(C'\fR it will be resolved to a
  specific user or system header using the include path.
! .IP \fB\-flang\-info\-module\-cmi\fR 4
  .IX Item "-flang-info-module-cmi"
  .PD 0
! .IP \fB\-flang\-info\-module\-cmi=\fR\fImodule\fR 4
  .IX Item "-flang-info-module-cmi=module"
  .PD
  Inform of Compiled Module Interface pathnames.  The first will note
! all read CMI pathnames.  The \fImodule\fR form will not reading a
! specific module\*(Aqs CMI.  \fImodule\fR may be a named module or a
! header\-unit (the latter indicated by either being a pathname containing
  directory separators or enclosed in \f(CW\*(C`<>\*(C'\fR or \f(CW""\fR).
! .IP \fB\-stdlib=\fR\fIlibstdc++,libc++\fR 4
  .IX Item "-stdlib=libstdc++,libc++"
  When G++ is configured to support this option, it allows specification of
! alternate C++ runtime libraries.  Two options are available: \fIlibstdc++\fR
! (the default, native C++ runtime for G++) and \fIlibc++\fR which is the
! C++ runtime installed on some operating systems (e.g. Darwin versions from
  Darwin11 onwards).  The option switches G++ to use the headers from the
  specified library and to emit \f(CW\*(C`\-lstdc++\*(C'\fR or \f(CW\*(C`\-lc++\*(C'\fR respectively,
! when a C++ runtime is required for linking.
  .PP
! In addition, these warning options have meanings only for C++ programs:
! .IP "\fB\-Wabi\-tag\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wabi-tag (C++ and Objective-C++ only)"
! Warn when a type with an ABI tag is used in a context that does not
! have that ABI tag.  See \fBC++ Attributes\fR for more information
! about ABI tags.
! .IP "\fB\-Wcomma\-subscript\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wcomma-subscript (C++ and Objective-C++ only)"
  Warn about uses of a comma expression within a subscripting expression.
! This usage was deprecated in C++20 and is going to be removed in C++23.
  However, a comma expression wrapped in \f(CW\*(C`( )\*(C'\fR is not deprecated.  Example:
  .Sp
  .Vb 4
*************** However, a comma expression wrapped in \
*** 3763,3773 ****
  \&        }
  .Ve
  .Sp
! In \*(C+23 it is valid to have comma separated expressions in a subscript
  when an overloaded subscript operator is found and supports the right
  number and types of arguments.  G++ will accept the formerly valid syntax
! for code that is not valid in \*(C+23 but used to be valid but deprecated
! in \*(C+20 with a pedantic warning that can be disabled with
  \&\fB\-Wno\-comma\-subscript\fR.
  .Sp
  Enabled by default with \fB\-std=c++20\fR unless
--- 3696,3706 ----
  \&        }
  .Ve
  .Sp
! In C++23 it is valid to have comma separated expressions in a subscript
  when an overloaded subscript operator is found and supports the right
  number and types of arguments.  G++ will accept the formerly valid syntax
! for code that is not valid in C++23 but used to be valid but deprecated
! in C++20 with a pedantic warning that can be disabled with
  \&\fB\-Wno\-comma\-subscript\fR.
  .Sp
  Enabled by default with \fB\-std=c++20\fR unless
*************** Enabled by default with \fB\-std=c++20\f
*** 3776,3790 ****
  explicit \fB\-Wdeprecated\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR in
! \&\*(C+23 mode or later.
! .IP "\fB\-Wctad\-maybe\-unsupported\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wctad-maybe-unsupported ( and Objective- only)"
! Warn when performing class template argument deduction (\s-1CTAD\s0) on a type with
  no explicitly written deduction guides.  This warning will point out cases
! where \s-1CTAD\s0 succeeded only because the compiler synthesized the implicit
  deduction guides, which might not be what the programmer intended.  Certain
! style guides allow \s-1CTAD\s0 only on types that specifically \*(L"opt-in\*(R"; i.e., on
! types that are designed to support \s-1CTAD.\s0  This warning can be suppressed with
  the following pattern:
  .Sp
  .Vb 6
--- 3709,3723 ----
  explicit \fB\-Wdeprecated\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR in
! C++23 mode or later.
! .IP "\fB\-Wctad\-maybe\-unsupported\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wctad-maybe-unsupported (C++ and Objective-C++ only)"
! Warn when performing class template argument deduction (CTAD) on a type with
  no explicitly written deduction guides.  This warning will point out cases
! where CTAD succeeded only because the compiler synthesized the implicit
  deduction guides, which might not be what the programmer intended.  Certain
! style guides allow CTAD only on types that specifically "opt\-in"; i.e., on
! types that are designed to support CTAD.  This warning can be suppressed with
  the following pattern:
  .Sp
  .Vb 6
*************** the following pattern:
*** 3795,3809 ****
  \&        // Guide with incomplete parameter type will never be considered.
  \&        S(allow_ctad_t) \-> S<void>;
  .Ve
! .IP "\fB\-Wctor\-dtor\-privacy\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wctor-dtor-privacy ( and Objective- only)"
  Warn when a class seems unusable because all the constructors or
  destructors in that class are private, and it has neither friends nor
! public static member functions.  Also warn if there are no non-private
! methods, and there's at least one private member function that isn't
  a constructor or destructor.
! .IP "\fB\-Wdangling\-reference\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wdangling-reference ( and Objective- only)"
  Warn when a reference is bound to a temporary whose lifetime has ended.
  For example:
  .Sp
--- 3728,3742 ----
  \&        // Guide with incomplete parameter type will never be considered.
  \&        S(allow_ctad_t) \-> S<void>;
  .Ve
! .IP "\fB\-Wctor\-dtor\-privacy\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wctor-dtor-privacy (C++ and Objective-C++ only)"
  Warn when a class seems unusable because all the constructors or
  destructors in that class are private, and it has neither friends nor
! public static member functions.  Also warn if there are no non\-private
! methods, and there\*(Aqs at least one private member function that isn\*(Aqt
  a constructor or destructor.
! .IP "\fB\-Wdangling\-reference\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wdangling-reference (C++ and Objective-C++ only)"
  Warn when a reference is bound to a temporary whose lifetime has ended.
  For example:
  .Sp
*************** Member functions are checked as well, bu
*** 3836,3842 ****
  .Ve
  .Sp
  Certain functions are safe in this respect, for example \f(CW\*(C`std::use_facet\*(C'\fR:
! they take and return a reference, but they don't return one of its arguments,
  which can fool the warning.  Such functions can be excluded from the warning
  by wrapping them in a \f(CW\*(C`#pragma\*(C'\fR:
  .Sp
--- 3769,3775 ----
  .Ve
  .Sp
  Certain functions are safe in this respect, for example \f(CW\*(C`std::use_facet\*(C'\fR:
! they take and return a reference, but they don\*(Aqt return one of its arguments,
  which can fool the warning.  Such functions can be excluded from the warning
  by wrapping them in a \f(CW\*(C`#pragma\*(C'\fR:
  .Sp
*************** classes of the form:
*** 3871,3902 ****
  \&        };
  .Ve
  .Sp
! as \f(CW\*(C`std::span\*(C'\fR\-like; that is, the class is a non-union class
  that has a pointer data member and a trivial destructor.
  .Sp
  The warning can be disabled by using the \f(CW\*(C`gnu::no_dangling\*(C'\fR attribute.
  .Sp
  This warning is enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wdelete\-non\-virtual\-dtor\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wdelete-non-virtual-dtor ( and Objective- only)"
  Warn when \f(CW\*(C`delete\*(C'\fR is used to destroy an instance of a class that
! has virtual functions and non-virtual destructor. It is unsafe to delete
  an instance of a derived class through a pointer to a base class if the
  base class does not have a virtual destructor.  This warning is enabled
  by \fB\-Wall\fR.
! .IP "\fB\-Wdeprecated\-copy\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wdeprecated-copy ( and Objective- only)"
  Warn that the implicit declaration of a copy constructor or copy
! assignment operator is deprecated if the class has a user-provided
! copy constructor or copy assignment operator, in \*(C+11 and up.  This
  warning is enabled by \fB\-Wextra\fR.  With
  \&\fB\-Wdeprecated\-copy\-dtor\fR, also deprecate if the class has a
! user-provided destructor.
! .IP "\fB\-Wno\-deprecated\-enum\-enum\-conversion\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-deprecated-enum-enum-conversion ( and Objective- only)"
  Disable the warning about the case when the usual arithmetic conversions
  are applied on operands where one is of enumeration type and the other is
! of a different enumeration type.  This conversion was deprecated in \*(C+20.
  For example:
  .Sp
  .Vb 3
--- 3804,3835 ----
  \&        };
  .Ve
  .Sp
! as \f(CW\*(C`std::span\*(C'\fR\-like; that is, the class is a non\-union class
  that has a pointer data member and a trivial destructor.
  .Sp
  The warning can be disabled by using the \f(CW\*(C`gnu::no_dangling\*(C'\fR attribute.
  .Sp
  This warning is enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wdelete\-non\-virtual\-dtor\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wdelete-non-virtual-dtor (C++ and Objective-C++ only)"
  Warn when \f(CW\*(C`delete\*(C'\fR is used to destroy an instance of a class that
! has virtual functions and non\-virtual destructor. It is unsafe to delete
  an instance of a derived class through a pointer to a base class if the
  base class does not have a virtual destructor.  This warning is enabled
  by \fB\-Wall\fR.
! .IP "\fB\-Wdeprecated\-copy\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wdeprecated-copy (C++ and Objective-C++ only)"
  Warn that the implicit declaration of a copy constructor or copy
! assignment operator is deprecated if the class has a user\-provided
! copy constructor or copy assignment operator, in C++11 and up.  This
  warning is enabled by \fB\-Wextra\fR.  With
  \&\fB\-Wdeprecated\-copy\-dtor\fR, also deprecate if the class has a
! user\-provided destructor.
! .IP "\fB\-Wno\-deprecated\-enum\-enum\-conversion\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-deprecated-enum-enum-conversion (C++ and Objective-C++ only)"
  Disable the warning about the case when the usual arithmetic conversions
  are applied on operands where one is of enumeration type and the other is
! of a different enumeration type.  This conversion was deprecated in C++20.
  For example:
  .Sp
  .Vb 3
*************** For example:
*** 3906,3918 ****
  .Ve
  .Sp
  \&\fB\-Wdeprecated\-enum\-enum\-conversion\fR is enabled by default with
! \&\fB\-std=c++20\fR.  In pre\-\*(C+20 dialects, this warning can be enabled
  by \fB\-Wenum\-conversion\fR or \fB\-Wdeprecated\fR.
! .IP "\fB\-Wno\-deprecated\-enum\-float\-conversion\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-deprecated-enum-float-conversion ( and Objective- only)"
  Disable the warning about the case when the usual arithmetic conversions
  are applied on operands where one is of enumeration type and the other is
! of a floating-point type.  This conversion was deprecated in \*(C+20.  For
  example:
  .Sp
  .Vb 3
--- 3839,3851 ----
  .Ve
  .Sp
  \&\fB\-Wdeprecated\-enum\-enum\-conversion\fR is enabled by default with
! \&\fB\-std=c++20\fR.  In pre\-C++20 dialects, this warning can be enabled
  by \fB\-Wenum\-conversion\fR or \fB\-Wdeprecated\fR.
! .IP "\fB\-Wno\-deprecated\-enum\-float\-conversion\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-deprecated-enum-float-conversion (C++ and Objective-C++ only)"
  Disable the warning about the case when the usual arithmetic conversions
  are applied on operands where one is of enumeration type and the other is
! of a floating\-point type.  This conversion was deprecated in C++20.  For
  example:
  .Sp
  .Vb 3
*************** example:
*** 3922,3944 ****
  .Ve
  .Sp
  \&\fB\-Wdeprecated\-enum\-float\-conversion\fR is enabled by default with
! \&\fB\-std=c++20\fR.  In pre\-\*(C+20 dialects, this warning can be enabled
  by \fB\-Wenum\-conversion\fR or \fB\-Wdeprecated\fR.
! .IP "\fB\-Wdeprecated\-literal\-operator\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wdeprecated-literal-operator ( and Objective- only)"
! Warn that the declaration of a user-defined literal operator with a
  space before the suffix is deprecated.  This warning is enabled by
! default in \*(C+23, or with explicit \fB\-Wdeprecated\fR.
  .Sp
  .Vb 2
  \&        string operator "" _i18n(const char*, std::size_t); // deprecated
  \&        string operator ""_i18n(const char*, std::size_t); // preferred
  .Ve
! .IP "\fB\-Wdeprecated\-variadic\-comma\-omission\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wdeprecated-variadic-comma-omission ( and Objective- only)"
  Warn that omitting a comma before the varargs \f(CW\*(C`...\*(C'\fR at the end of
  a function parameter list is deprecated.  This warning is enabled by
! default in \*(C+26, or with explicit \fB\-Wdeprecated\fR.
  .Sp
  .Vb 6
  \&        void f1(int...); // deprecated
--- 3855,3877 ----
  .Ve
  .Sp
  \&\fB\-Wdeprecated\-enum\-float\-conversion\fR is enabled by default with
! \&\fB\-std=c++20\fR.  In pre\-C++20 dialects, this warning can be enabled
  by \fB\-Wenum\-conversion\fR or \fB\-Wdeprecated\fR.
! .IP "\fB\-Wdeprecated\-literal\-operator\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wdeprecated-literal-operator (C++ and Objective-C++ only)"
! Warn that the declaration of a user\-defined literal operator with a
  space before the suffix is deprecated.  This warning is enabled by
! default in C++23, or with explicit \fB\-Wdeprecated\fR.
  .Sp
  .Vb 2
  \&        string operator "" _i18n(const char*, std::size_t); // deprecated
  \&        string operator ""_i18n(const char*, std::size_t); // preferred
  .Ve
! .IP "\fB\-Wdeprecated\-variadic\-comma\-omission\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wdeprecated-variadic-comma-omission (C++ and Objective-C++ only)"
  Warn that omitting a comma before the varargs \f(CW\*(C`...\*(C'\fR at the end of
  a function parameter list is deprecated.  This warning is enabled by
! default in C++26, or with explicit \fB\-Wdeprecated\fR.
  .Sp
  .Vb 6
  \&        void f1(int...); // deprecated
*************** default in \*(C+26, or with explicit \fB
*** 3948,3981 ****
  \&        template <typename ...T>
  \&        void f3(T......); // deprecated
  .Ve
! .IP "\fB\-Wno\-elaborated\-enum\-base\fR" 4
  .IX Item "-Wno-elaborated-enum-base"
! For \*(C+11 and above, warn if an (invalid) additional enum-base is used
! in an elaborated-type-specifier.  That is, if an enum with given
  underlying type and no enumerator list is used in a declaration other
  than just a standalone declaration of the enum.  Enabled by default.  This
  warning is upgraded to an error with \-pedantic\-errors.
! .IP "\fB\-Wno\-init\-list\-lifetime\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-init-list-lifetime ( and Objective- only)"
  Do not warn about uses of \f(CW\*(C`std::initializer_list\*(C'\fR that are likely
  to result in dangling pointers.  Since the underlying array for an
! \&\f(CW\*(C`initializer_list\*(C'\fR is handled like a normal \*(C+ temporary object,
  it is easy to inadvertently keep a pointer to the array past the end
! of the array's lifetime.  For example:
  .RS 4
! .IP "*" 4
  If a function returns a temporary \f(CW\*(C`initializer_list\*(C'\fR, or a local
! \&\f(CW\*(C`initializer_list\*(C'\fR variable, the array's lifetime ends at the end
  of the return statement, so the value returned has a dangling pointer.
! .IP "*" 4
! If a new-expression creates an \f(CW\*(C`initializer_list\*(C'\fR, the array only
! lives until the end of the enclosing full-expression, so the
  \&\f(CW\*(C`initializer_list\*(C'\fR in the heap has a dangling pointer.
! .IP "*" 4
  When an \f(CW\*(C`initializer_list\*(C'\fR variable is assigned from a
! brace-enclosed initializer list, the temporary array created for the
  right side of the assignment only lives until the end of the
! full-expression, so at the next statement the \f(CW\*(C`initializer_list\*(C'\fR
  variable has a dangling pointer.
  .Sp
  .Vb 6
--- 3881,3914 ----
  \&        template <typename ...T>
  \&        void f3(T......); // deprecated
  .Ve
! .IP \fB\-Wno\-elaborated\-enum\-base\fR 4
  .IX Item "-Wno-elaborated-enum-base"
! For C++11 and above, warn if an (invalid) additional enum\-base is used
! in an elaborated\-type\-specifier.  That is, if an enum with given
  underlying type and no enumerator list is used in a declaration other
  than just a standalone declaration of the enum.  Enabled by default.  This
  warning is upgraded to an error with \-pedantic\-errors.
! .IP "\fB\-Wno\-init\-list\-lifetime\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-init-list-lifetime (C++ and Objective-C++ only)"
  Do not warn about uses of \f(CW\*(C`std::initializer_list\*(C'\fR that are likely
  to result in dangling pointers.  Since the underlying array for an
! \&\f(CW\*(C`initializer_list\*(C'\fR is handled like a normal C++ temporary object,
  it is easy to inadvertently keep a pointer to the array past the end
! of the array\*(Aqs lifetime.  For example:
  .RS 4
! .IP * 4
  If a function returns a temporary \f(CW\*(C`initializer_list\*(C'\fR, or a local
! \&\f(CW\*(C`initializer_list\*(C'\fR variable, the array\*(Aqs lifetime ends at the end
  of the return statement, so the value returned has a dangling pointer.
! .IP * 4
! If a new\-expression creates an \f(CW\*(C`initializer_list\*(C'\fR, the array only
! lives until the end of the enclosing full\-expression, so the
  \&\f(CW\*(C`initializer_list\*(C'\fR in the heap has a dangling pointer.
! .IP * 4
  When an \f(CW\*(C`initializer_list\*(C'\fR variable is assigned from a
! brace\-enclosed initializer list, the temporary array created for the
  right side of the assignment only lives until the end of the
! full\-expression, so at the next statement the \f(CW\*(C`initializer_list\*(C'\fR
  variable has a dangling pointer.
  .Sp
  .Vb 6
*************** variable has a dangling pointer.
*** 3986,4013 ****
  \&        // now the temporary is gone and li has a dangling pointer
  \&        int i = li.begin()[0] // undefined behavior
  .Ve
! .IP "*" 4
  When a list constructor stores the \f(CW\*(C`begin\*(C'\fR pointer from the
! \&\f(CW\*(C`initializer_list\*(C'\fR argument, this doesn't extend the lifetime of
  the array, so if a class variable is constructed from a temporary
  \&\f(CW\*(C`initializer_list\*(C'\fR, the pointer is left dangling by the end of
  the variable declaration statement.
  .RE
  .RS 4
  .RE
! .IP "\fB\-Winvalid\-constexpr\fR" 4
  .IX Item "-Winvalid-constexpr"
! Warn when a function never produces a constant expression.  In \*(C+20
  and earlier, for every \f(CW\*(C`constexpr\*(C'\fR function and function template,
  there must be at least one set of function arguments in at least one
  instantiation such that an invocation of the function or constructor
  could be an evaluated subexpression of a core constant expression.
! \&\*(C+23 removed this restriction, so it's possible to have a function
  or a function template marked \f(CW\*(C`constexpr\*(C'\fR for which no invocation
  satisfies the requirements of a core constant expression.
  .Sp
! This warning is enabled as a pedantic warning by default in \*(C+20 and
! earlier.  In \*(C+23, \fB\-Winvalid\-constexpr\fR can be turned on, in
  which case it will be an ordinary warning.  For example:
  .Sp
  .Vb 7
--- 3919,3946 ----
  \&        // now the temporary is gone and li has a dangling pointer
  \&        int i = li.begin()[0] // undefined behavior
  .Ve
! .IP * 4
  When a list constructor stores the \f(CW\*(C`begin\*(C'\fR pointer from the
! \&\f(CW\*(C`initializer_list\*(C'\fR argument, this doesn\*(Aqt extend the lifetime of
  the array, so if a class variable is constructed from a temporary
  \&\f(CW\*(C`initializer_list\*(C'\fR, the pointer is left dangling by the end of
  the variable declaration statement.
  .RE
  .RS 4
  .RE
! .IP \fB\-Winvalid\-constexpr\fR 4
  .IX Item "-Winvalid-constexpr"
! Warn when a function never produces a constant expression.  In C++20
  and earlier, for every \f(CW\*(C`constexpr\*(C'\fR function and function template,
  there must be at least one set of function arguments in at least one
  instantiation such that an invocation of the function or constructor
  could be an evaluated subexpression of a core constant expression.
! C++23 removed this restriction, so it\*(Aqs possible to have a function
  or a function template marked \f(CW\*(C`constexpr\*(C'\fR for which no invocation
  satisfies the requirements of a core constant expression.
  .Sp
! This warning is enabled as a pedantic warning by default in C++20 and
! earlier.  In C++23, \fB\-Winvalid\-constexpr\fR can be turned on, in
  which case it will be an ordinary warning.  For example:
  .Sp
  .Vb 7
*************** which case it will be an ordinary warnin
*** 4019,4035 ****
  \&          f(i);
  \&        }
  .Ve
! .IP "\fB\-Winvalid\-imported\-macros\fR" 4
  .IX Item "-Winvalid-imported-macros"
  Verify all imported macro definitions are valid at the end of
  compilation.  This is not enabled by default, as it requires
  additional processing to determine.  It may be useful when preparing
! sets of header-units to ensure consistent macros.
! .IP "\fB\-Wno\-literal\-suffix\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-literal-suffix ( and Objective- only)"
  Do not warn when a string or character literal is followed by a
! ud-suffix which does not begin with an underscore.  As a conforming
! extension, \s-1GCC\s0 treats such suffixes as separate preprocessing tokens
  in order to maintain backwards compatibility with code that uses
  formatting macros from \f(CW\*(C`<inttypes.h>\*(C'\fR.  For example:
  .Sp
--- 3952,3968 ----
  \&          f(i);
  \&        }
  .Ve
! .IP \fB\-Winvalid\-imported\-macros\fR 4
  .IX Item "-Winvalid-imported-macros"
  Verify all imported macro definitions are valid at the end of
  compilation.  This is not enabled by default, as it requires
  additional processing to determine.  It may be useful when preparing
! sets of header\-units to ensure consistent macros.
! .IP "\fB\-Wno\-literal\-suffix\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-literal-suffix (C++ and Objective-C++ only)"
  Do not warn when a string or character literal is followed by a
! ud\-suffix which does not begin with an underscore.  As a conforming
! extension, GCC treats such suffixes as separate preprocessing tokens
  in order to maintain backwards compatibility with code that uses
  formatting macros from \f(CW\*(C`<inttypes.h>\*(C'\fR.  For example:
  .Sp
*************** formatting macros from \f(CW\*(C`<inttyp
*** 4046,4068 ****
  .Sp
  In this case, \f(CW\*(C`PRId64\*(C'\fR is treated as a separate preprocessing token.
  .Sp
! This option also controls warnings when a user-defined literal
! operator is declared with a literal suffix identifier that doesn't
! begin with an underscore. Literal suffix identifiers that don't begin
  with an underscore are reserved for future standardization.
  .Sp
  These warnings are enabled by default.
! .IP "\fB\-Wno\-narrowing\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-narrowing ( and Objective- only)"
! For \*(C+11 and later standards, narrowing conversions are diagnosed by default,
  as required by the standard.  A narrowing conversion from a constant produces
! an error, and a narrowing conversion from a non-constant produces a warning,
  but \fB\-Wno\-narrowing\fR suppresses the diagnostic.
! Note that this does not affect the meaning of well-formed code;
! narrowing conversions are still considered ill-formed in \s-1SFINAE\s0 contexts.
  .Sp
! With \fB\-Wnarrowing\fR in \*(C+98, warn when a narrowing
! conversion prohibited by \*(C+11 occurs within
  \&\fB{ }\fR, e.g.
  .Sp
  .Vb 1
--- 3979,4001 ----
  .Sp
  In this case, \f(CW\*(C`PRId64\*(C'\fR is treated as a separate preprocessing token.
  .Sp
! This option also controls warnings when a user\-defined literal
! operator is declared with a literal suffix identifier that doesn\*(Aqt
! begin with an underscore. Literal suffix identifiers that don\*(Aqt begin
  with an underscore are reserved for future standardization.
  .Sp
  These warnings are enabled by default.
! .IP "\fB\-Wno\-narrowing\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-narrowing (C++ and Objective-C++ only)"
! For C++11 and later standards, narrowing conversions are diagnosed by default,
  as required by the standard.  A narrowing conversion from a constant produces
! an error, and a narrowing conversion from a non\-constant produces a warning,
  but \fB\-Wno\-narrowing\fR suppresses the diagnostic.
! Note that this does not affect the meaning of well\-formed code;
! narrowing conversions are still considered ill\-formed in SFINAE contexts.
  .Sp
! With \fB\-Wnarrowing\fR in C++98, warn when a narrowing
! conversion prohibited by C++11 occurs within
  \&\fB{ }\fR, e.g.
  .Sp
  .Vb 1
*************** conversion prohibited by \*(C+11 occurs
*** 4070,4085 ****
  .Ve
  .Sp
  This flag is included in \fB\-Wall\fR and \fB\-Wc++11\-compat\fR.
! .IP "\fB\-Wnoexcept\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wnoexcept ( and Objective- only)"
! Warn when a noexcept-expression evaluates to false because of a call
! to a function that does not have a non-throwing exception
! specification (i.e. \f(CW\*(C`throw()\*(C'\fR or \f(CW\*(C`noexcept\*(C'\fR) but is known by
  the compiler to never throw an exception.
! .IP "\fB\-Wnoexcept\-type\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wnoexcept-type ( and Objective- only)"
! Warn if the \*(C+17 feature making \f(CW\*(C`noexcept\*(C'\fR part of a function
! type changes the mangled name of a symbol relative to \*(C+14.  Enabled
  by \fB\-Wabi\fR and \fB\-Wc++17\-compat\fR.
  .Sp
  As an example:
--- 4003,4018 ----
  .Ve
  .Sp
  This flag is included in \fB\-Wall\fR and \fB\-Wc++11\-compat\fR.
! .IP "\fB\-Wnoexcept\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wnoexcept (C++ and Objective-C++ only)"
! Warn when a noexcept\-expression evaluates to false because of a call
! to a function that does not have a non\-throwing exception
! specification (i.e. \f(CWthrow()\fR or \f(CW\*(C`noexcept\*(C'\fR) but is known by
  the compiler to never throw an exception.
! .IP "\fB\-Wnoexcept\-type\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wnoexcept-type (C++ and Objective-C++ only)"
! Warn if the C++17 feature making \f(CW\*(C`noexcept\*(C'\fR part of a function
! type changes the mangled name of a symbol relative to C++14.  Enabled
  by \fB\-Wabi\fR and \fB\-Wc++17\-compat\fR.
  .Sp
  As an example:
*************** As an example:
*** 4090,4106 ****
  \&        void h() { f(g); }
  .Ve
  .Sp
! In \*(C+14, \f(CW\*(C`f\*(C'\fR calls \f(CW\*(C`f<void(*)()>\*(C'\fR, but in
! \&\*(C+17 it calls \f(CW\*(C`f<void(*)()noexcept>\*(C'\fR.
! .IP "\fB\-Wclass\-memaccess\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wclass-memaccess ( and Objective- only)"
  Warn when the destination of a call to a raw memory function such as
  \&\f(CW\*(C`memset\*(C'\fR or \f(CW\*(C`memcpy\*(C'\fR is an object of class type, and when writing
! into such an object might bypass the class non-trivial or deleted constructor
! or copy assignment, violate const-correctness or encapsulation, or corrupt
  virtual table pointers.  Modifying the representation of such objects may
  violate invariants maintained by member functions of the class.  For example,
! the call to \f(CW\*(C`memset\*(C'\fR below is undefined because it modifies a non-trivial
  class object and is, therefore, diagnosed.  The safe way to either initialize
  or clear the storage of objects of such types is by using the appropriate
  constructor or assignment operator, if one is available.
--- 4023,4039 ----
  \&        void h() { f(g); }
  .Ve
  .Sp
! In C++14, \f(CW\*(C`f\*(C'\fR calls \f(CW\*(C`f<void(*)()>\*(C'\fR, but in
! C++17 it calls \f(CW\*(C`f<void(*)()noexcept>\*(C'\fR.
! .IP "\fB\-Wclass\-memaccess\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wclass-memaccess (C++ and Objective-C++ only)"
  Warn when the destination of a call to a raw memory function such as
  \&\f(CW\*(C`memset\*(C'\fR or \f(CW\*(C`memcpy\*(C'\fR is an object of class type, and when writing
! into such an object might bypass the class non\-trivial or deleted constructor
! or copy assignment, violate const\-correctness or encapsulation, or corrupt
  virtual table pointers.  Modifying the representation of such objects may
  violate invariants maintained by member functions of the class.  For example,
! the call to \f(CW\*(C`memset\*(C'\fR below is undefined because it modifies a non\-trivial
  class object and is, therefore, diagnosed.  The safe way to either initialize
  or clear the storage of objects of such types is by using the appropriate
  constructor or assignment operator, if one is available.
*************** The \fB\-Wclass\-memaccess\fR option is
*** 4114,4122 ****
  Explicitly casting the pointer to the class object to \f(CW\*(C`void *\*(C'\fR or
  to a type that can be safely accessed by the raw memory function suppresses
  the warning.
! .IP "\fB\-Wnon\-virtual\-dtor\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wnon-virtual-dtor ( and Objective- only)"
! Warn when a class has virtual functions and an accessible non-virtual
  destructor itself or in an accessible polymorphic base class, in which
  case it is possible but unsafe to delete an instance of a derived
  class through a pointer to the class itself or base class.  This
--- 4047,4055 ----
  Explicitly casting the pointer to the class object to \f(CW\*(C`void *\*(C'\fR or
  to a type that can be safely accessed by the raw memory function suppresses
  the warning.
! .IP "\fB\-Wnon\-virtual\-dtor\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wnon-virtual-dtor (C++ and Objective-C++ only)"
! Warn when a class has virtual functions and an accessible non\-virtual
  destructor itself or in an accessible polymorphic base class, in which
  case it is possible but unsafe to delete an instance of a derived
  class through a pointer to the class itself or base class.  This
*************** warning is automatically enabled if \fB\
*** 4124,4138 ****
  The \fB\-Wdelete\-non\-virtual\-dtor\fR option (enabled by \fB\-Wall\fR)
  should be preferred because it warns about the unsafe cases without false
  positives.
! .IP "\fB\-Wregister\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wregister ( and Objective- only)"
  Warn on uses of the \f(CW\*(C`register\*(C'\fR storage class specifier, except
! when it is part of the \s-1GNU\s0 \fBExplicit Register Variables\fR extension.
  The use of the \f(CW\*(C`register\*(C'\fR keyword as storage class specifier has
! been deprecated in \*(C+11 and removed in \*(C+17.
  Enabled by default with \fB\-std=c++17\fR.
! .IP "\fB\-Wreorder\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wreorder ( and Objective- only)"
  Warn when the order of member initializers given in the code does not
  match the order in which they must be executed.  For instance:
  .Sp
--- 4057,4071 ----
  The \fB\-Wdelete\-non\-virtual\-dtor\fR option (enabled by \fB\-Wall\fR)
  should be preferred because it warns about the unsafe cases without false
  positives.
! .IP "\fB\-Wregister\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wregister (C++ and Objective-C++ only)"
  Warn on uses of the \f(CW\*(C`register\*(C'\fR storage class specifier, except
! when it is part of the GNU \fBExplicit Register Variables\fR extension.
  The use of the \f(CW\*(C`register\*(C'\fR keyword as storage class specifier has
! been deprecated in C++11 and removed in C++17.
  Enabled by default with \fB\-std=c++17\fR.
! .IP "\fB\-Wreorder\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wreorder (C++ and Objective-C++ only)"
  Warn when the order of member initializers given in the code does not
  match the order in which they must be executed.  For instance:
  .Sp
*************** match the order in which they must be ex
*** 4147,4158 ****
  The compiler rearranges the member initializers for \f(CW\*(C`i\*(C'\fR
  and \f(CW\*(C`j\*(C'\fR to match the declaration order of the members, emitting
  a warning to that effect.  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wno\-pessimizing\-move\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-pessimizing-move ( and Objective- only)"
  This warning warns when a call to \f(CW\*(C`std::move\*(C'\fR prevents copy
  elision.  A typical scenario when copy elision can occur is when returning in
  a function with a class return type, when the expression being returned is the
! name of a non-volatile automatic object, and is not a function parameter, and
  has the same type as the function return type.
  .Sp
  .Vb 9
--- 4080,4091 ----
  The compiler rearranges the member initializers for \f(CW\*(C`i\*(C'\fR
  and \f(CW\*(C`j\*(C'\fR to match the declaration order of the members, emitting
  a warning to that effect.  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wno\-pessimizing\-move\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-pessimizing-move (C++ and Objective-C++ only)"
  This warning warns when a call to \f(CW\*(C`std::move\*(C'\fR prevents copy
  elision.  A typical scenario when copy elision can occur is when returning in
  a function with a class return type, when the expression being returned is the
! name of a non\-volatile automatic object, and is not a function parameter, and
  has the same type as the function return type.
  .Sp
  .Vb 9
*************** has the same type as the function return
*** 4170,4182 ****
  But in this example, the \f(CW\*(C`std::move\*(C'\fR call prevents copy elision.
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wno\-redundant\-move\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-redundant-move ( and Objective- only)"
  This warning warns about redundant calls to \f(CW\*(C`std::move\*(C'\fR; that is, when
  a move operation would have been performed even without the \f(CW\*(C`std::move\*(C'\fR
  call.  This happens because the compiler is forced to treat the object as if
  it were an rvalue in certain situations such as returning a local variable,
! where copy elision isn't applicable.  Consider:
  .Sp
  .Vb 8
  \&        struct T {
--- 4103,4115 ----
  But in this example, the \f(CW\*(C`std::move\*(C'\fR call prevents copy elision.
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wno\-redundant\-move\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-redundant-move (C++ and Objective-C++ only)"
  This warning warns about redundant calls to \f(CW\*(C`std::move\*(C'\fR; that is, when
  a move operation would have been performed even without the \f(CW\*(C`std::move\*(C'\fR
  call.  This happens because the compiler is forced to treat the object as if
  it were an rvalue in certain situations such as returning a local variable,
! where copy elision isn\*(Aqt applicable.  Consider:
  .Sp
  .Vb 8
  \&        struct T {
*************** Issue 1579, another example is:
*** 4207,4220 ****
  \&        }
  .Ve
  .Sp
! In this example, copy elision isn't applicable because the type of the
  expression being returned and the function return type differ, yet G++
  treats the return value as if it were designated by an rvalue.
  .Sp
  This warning is enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wrange\-loop\-construct\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wrange-loop-construct ( and Objective- only)"
! This warning warns when a \*(C+ range-based for-loop is creating an unnecessary
  copy.  This can happen when the range declaration is not a reference, but
  probably should be.  For example:
  .Sp
--- 4140,4153 ----
  \&        }
  .Ve
  .Sp
! In this example, copy elision isn\*(Aqt applicable because the type of the
  expression being returned and the function return type differ, yet G++
  treats the return value as if it were designated by an rvalue.
  .Sp
  This warning is enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wrange\-loop\-construct\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wrange-loop-construct (C++ and Objective-C++ only)"
! This warning warns when a C++ range\-based for\-loop is creating an unnecessary
  copy.  This can happen when the range declaration is not a reference, but
  probably should be.  For example:
  .Sp
*************** probably should be.  For example:
*** 4226,4235 ****
  \&        }
  .Ve
  .Sp
! It does not warn when the type being copied is a trivially-copyable type whose
  size is less than 64 bytes.
  .Sp
! This warning also warns when a loop variable in a range-based for-loop is
  initialized with a value of a different type resulting in a copy.  For example:
  .Sp
  .Vb 4
--- 4159,4168 ----
  \&        }
  .Ve
  .Sp
! It does not warn when the type being copied is a trivially\-copyable type whose
  size is less than 64 bytes.
  .Sp
! This warning also warns when a loop variable in a range\-based for\-loop is
  initialized with a value of a different type resulting in a copy.  For example:
  .Sp
  .Vb 4
*************** type \f(CW\*(C`double\*(C'\fR is created
*** 4244,4252 ****
  \&\f(CW\*(C`const double &\*(C'\fR is bound.
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wredundant\-tags\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wredundant-tags ( and Objective- only)"
! Warn about redundant class-key and enum-key in references to class types
  and enumerated types in contexts where the key can be eliminated without
  causing an ambiguity.  For example:
  .Sp
--- 4177,4185 ----
  \&\f(CW\*(C`const double &\*(C'\fR is bound.
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wredundant\-tags\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wredundant-tags (C++ and Objective-C++ only)"
! Warn about redundant class\-key and enum\-key in references to class types
  and enumerated types in contexts where the key can be eliminated without
  causing an ambiguity.  For example:
  .Sp
*************** On the other hand, in this example there
*** 4262,4341 ****
  \&        void foo ();   // "hides" struct foo
  \&        void bar (struct foo&);  // no warning, keyword struct is necessary
  .Ve
! .IP "\fB\-Wno\-subobject\-linkage\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-subobject-linkage ( and Objective- only)"
  Do not warn
  if a class type has a base or a field whose type uses the anonymous
  namespace or depends on a type with no linkage.  If a type A depends on
  a type B with no or internal linkage, defining it in multiple
! translation units would be an \s-1ODR\s0 violation because the meaning of B
  is different in each translation unit.  If A only appears in a single
  translation unit, the best way to silence the warning is to give it
  internal linkage by putting it in an anonymous namespace as well.  The
! compiler doesn't give this warning for types defined in the main .C
  file, as those are unlikely to have multiple definitions.
  \&\fB\-Wsubobject\-linkage\fR is enabled by default.
! .IP "\fB\-Weffc++\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Weffc++ ( and Objective- only)"
! Warn about violations of the following style guidelines from Scott Meyers'
! \&\fIEffective \*(C+\fR series of books:
  .RS 4
! .IP "*" 4
  Define a copy constructor and an assignment operator for classes
! with dynamically-allocated memory.
! .IP "*" 4
  Prefer initialization to assignment in constructors.
! .IP "*" 4
  Have \f(CW\*(C`operator=\*(C'\fR return a reference to \f(CW*this\fR.
! .IP "*" 4
! Don't try to return a reference when you must return an object.
! .IP "*" 4
  Distinguish between prefix and postfix forms of increment and
  decrement operators.
! .IP "*" 4
  Never overload \f(CW\*(C`&&\*(C'\fR, \f(CW\*(C`||\*(C'\fR, or \f(CW\*(C`,\*(C'\fR.
  .RE
  .RS 4
  .Sp
  This option also enables \fB\-Wnon\-virtual\-dtor\fR, which is also
! one of the effective \*(C+ recommendations.  However, the check is
  extended to warn about the lack of virtual destructor in accessible
! non-polymorphic bases classes too.
  .Sp
  When selecting this option, be aware that the standard library
  headers do not obey all of these guidelines; use \fBgrep \-v\fR
  to filter out those warnings.
  .RE
! .IP "\fB\-Wno\-exceptions\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-exceptions ( and Objective- only)"
  Disable the warning about the case when an exception handler is shadowed by
  another handler, which can point out a wrong ordering of exception handlers.
! .IP "\fB\-Wstrict\-null\-sentinel\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wstrict-null-sentinel ( and Objective- only)"
  Warn about the use of an uncasted \f(CW\*(C`NULL\*(C'\fR as sentinel.  When
! compiling only with \s-1GCC\s0 this is a valid sentinel, as \f(CW\*(C`NULL\*(C'\fR is defined
  to \f(CW\*(C`_\|_null\*(C'\fR.  Although it is a null pointer constant rather than a
  null pointer, it is guaranteed to be of the same size as a pointer.
  But this use is not portable across different compilers.
! .IP "\fB\-Wno\-non\-template\-friend\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-non-template-friend ( and Objective- only)"
! Disable warnings when non-template friend functions are declared
! within a template.  In very old versions of \s-1GCC\s0 that predate implementation
! of the \s-1ISO\s0 standard, declarations such as
! \&\fBfriend int foo(int)\fR, where the name of the friend is an unqualified-id,
  could be interpreted as a particular specialization of a template
  function; the warning exists to diagnose compatibility problems,
  and is enabled by default.
! .IP "\fB\-Wold\-style\-cast\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wold-style-cast ( and Objective- only)"
! Warn if an old-style (C\-style) cast to a non-void type is used within
! a \*(C+ program.  The new-style casts (\f(CW\*(C`dynamic_cast\*(C'\fR,
  \&\f(CW\*(C`static_cast\*(C'\fR, \f(CW\*(C`reinterpret_cast\*(C'\fR, and \f(CW\*(C`const_cast\*(C'\fR) are
  less vulnerable to unintended effects and much easier to search for.
! .IP "\fB\-Woverloaded\-virtual\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Woverloaded-virtual ( and Objective- only)"
  .PD 0
! .IP "\fB\-Woverloaded\-virtual=\fR\fIn\fR" 4
  .IX Item "-Woverloaded-virtual=n"
  .PD
  Warn when a function declaration hides virtual functions from a
--- 4195,4274 ----
  \&        void foo ();   // "hides" struct foo
  \&        void bar (struct foo&);  // no warning, keyword struct is necessary
  .Ve
! .IP "\fB\-Wno\-subobject\-linkage\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-subobject-linkage (C++ and Objective-C++ only)"
  Do not warn
  if a class type has a base or a field whose type uses the anonymous
  namespace or depends on a type with no linkage.  If a type A depends on
  a type B with no or internal linkage, defining it in multiple
! translation units would be an ODR violation because the meaning of B
  is different in each translation unit.  If A only appears in a single
  translation unit, the best way to silence the warning is to give it
  internal linkage by putting it in an anonymous namespace as well.  The
! compiler doesn\*(Aqt give this warning for types defined in the main .C
  file, as those are unlikely to have multiple definitions.
  \&\fB\-Wsubobject\-linkage\fR is enabled by default.
! .IP "\fB\-Weffc++\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Weffc++ (C++ and Objective-C++ only)"
! Warn about violations of the following style guidelines from Scott Meyers\*(Aq
! \&\fIEffective C++\fR series of books:
  .RS 4
! .IP * 4
  Define a copy constructor and an assignment operator for classes
! with dynamically\-allocated memory.
! .IP * 4
  Prefer initialization to assignment in constructors.
! .IP * 4
  Have \f(CW\*(C`operator=\*(C'\fR return a reference to \f(CW*this\fR.
! .IP * 4
! Don\*(Aqt try to return a reference when you must return an object.
! .IP * 4
  Distinguish between prefix and postfix forms of increment and
  decrement operators.
! .IP * 4
  Never overload \f(CW\*(C`&&\*(C'\fR, \f(CW\*(C`||\*(C'\fR, or \f(CW\*(C`,\*(C'\fR.
  .RE
  .RS 4
  .Sp
  This option also enables \fB\-Wnon\-virtual\-dtor\fR, which is also
! one of the effective C++ recommendations.  However, the check is
  extended to warn about the lack of virtual destructor in accessible
! non\-polymorphic bases classes too.
  .Sp
  When selecting this option, be aware that the standard library
  headers do not obey all of these guidelines; use \fBgrep \-v\fR
  to filter out those warnings.
  .RE
! .IP "\fB\-Wno\-exceptions\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-exceptions (C++ and Objective-C++ only)"
  Disable the warning about the case when an exception handler is shadowed by
  another handler, which can point out a wrong ordering of exception handlers.
! .IP "\fB\-Wstrict\-null\-sentinel\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wstrict-null-sentinel (C++ and Objective-C++ only)"
  Warn about the use of an uncasted \f(CW\*(C`NULL\*(C'\fR as sentinel.  When
! compiling only with GCC this is a valid sentinel, as \f(CW\*(C`NULL\*(C'\fR is defined
  to \f(CW\*(C`_\|_null\*(C'\fR.  Although it is a null pointer constant rather than a
  null pointer, it is guaranteed to be of the same size as a pointer.
  But this use is not portable across different compilers.
! .IP "\fB\-Wno\-non\-template\-friend\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-non-template-friend (C++ and Objective-C++ only)"
! Disable warnings when non\-template friend functions are declared
! within a template.  In very old versions of GCC that predate implementation
! of the ISO standard, declarations such as
! \&\fBfriend int foo(int)\fR, where the name of the friend is an unqualified\-id,
  could be interpreted as a particular specialization of a template
  function; the warning exists to diagnose compatibility problems,
  and is enabled by default.
! .IP "\fB\-Wold\-style\-cast\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wold-style-cast (C++ and Objective-C++ only)"
! Warn if an old\-style (C\-style) cast to a non\-void type is used within
! a C++ program.  The new\-style casts (\f(CW\*(C`dynamic_cast\*(C'\fR,
  \&\f(CW\*(C`static_cast\*(C'\fR, \f(CW\*(C`reinterpret_cast\*(C'\fR, and \f(CW\*(C`const_cast\*(C'\fR) are
  less vulnerable to unintended effects and much easier to search for.
! .IP "\fB\-Woverloaded\-virtual\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Woverloaded-virtual (C++ and Objective-C++ only)"
  .PD 0
! .IP \fB\-Woverloaded\-virtual=\fR\fIn\fR 4
  .IX Item "-Woverloaded-virtual=n"
  .PD
  Warn when a function declaration hides virtual functions from a
*************** like:
*** 4362,4369 ****
  fails to compile.
  .Sp
  In cases where the different signatures are not an accident, the
! simplest solution is to add a using-declaration to the derived class
! to un-hide the base function, e.g. add \f(CW\*(C`using A::f;\*(C'\fR to \f(CW\*(C`B\*(C'\fR.
  .Sp
  The optional level suffix controls the behavior when all the
  declarations in the derived class override virtual functions in the
--- 4295,4302 ----
  fails to compile.
  .Sp
  In cases where the different signatures are not an accident, the
! simplest solution is to add a using\-declaration to the derived class
! to un\-hide the base function, e.g. add \f(CW\*(C`using A::f;\*(C'\fR to \f(CW\*(C`B\*(C'\fR.
  .Sp
  The optional level suffix controls the behavior when all the
  declarations in the derived class override virtual functions in the
*************** for some of the overloads are fine.
*** 4387,4422 ****
  At level 1, this case does not warn; at level 2, it does.
  \&\fB\-Woverloaded\-virtual\fR by itself selects level 2.  Level 1 is
  included in \fB\-Wall\fR.
! .IP "\fB\-Wno\-pmf\-conversions\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-pmf-conversions ( and Objective- only)"
  Disable the diagnostic for converting a bound pointer to member function
  to a plain pointer.
! .IP "\fB\-Wsign\-promo\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wsign-promo ( and Objective- only)"
  Warn when overload resolution chooses a promotion from unsigned or
  enumerated type to a signed type, over a conversion to an unsigned type of
  the same size.  Previous versions of G++ tried to preserve
  unsignedness, but the standard mandates the current behavior.
! .IP "\fB\-Wtemplates\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wtemplates ( and Objective- only)"
  Warn when a primary template declaration is encountered.  Some coding
  rules disallow templates, and this may be used to enforce that rule.
! The warning is inactive inside a system header file, such as the \s-1STL,\s0 so
! one can still use the \s-1STL.\s0  One may also instantiate or specialize
  templates.
! .IP "\fB\-Wmismatched\-new\-delete\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wmismatched-new-delete ( and Objective- only)"
  Warn for mismatches between calls to \f(CW\*(C`operator new\*(C'\fR or \f(CW\*(C`operator
  delete\*(C'\fR and the corresponding call to the allocation or deallocation function.
! This includes invocations of \*(C+ \f(CW\*(C`operator delete\*(C'\fR with pointers
  returned from either mismatched forms of \f(CW\*(C`operator new\*(C'\fR, or from other
! functions that allocate objects for which the \f(CW\*(C`operator delete\*(C'\fR isn't
  a suitable deallocator, as well as calls to other deallocation functions
  with pointers returned from \f(CW\*(C`operator new\*(C'\fR for which the deallocation
! function isn't suitable.
  .Sp
  For example, the \f(CW\*(C`delete\*(C'\fR expression in the function below is diagnosed
! because it doesn't match the array form of the \f(CW\*(C`new\*(C'\fR expression
  the pointer argument was returned from.  Similarly, the call to \f(CW\*(C`free\*(C'\fR
  is also diagnosed.
  .Sp
--- 4320,4355 ----
  At level 1, this case does not warn; at level 2, it does.
  \&\fB\-Woverloaded\-virtual\fR by itself selects level 2.  Level 1 is
  included in \fB\-Wall\fR.
! .IP "\fB\-Wno\-pmf\-conversions\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-pmf-conversions (C++ and Objective-C++ only)"
  Disable the diagnostic for converting a bound pointer to member function
  to a plain pointer.
! .IP "\fB\-Wsign\-promo\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wsign-promo (C++ and Objective-C++ only)"
  Warn when overload resolution chooses a promotion from unsigned or
  enumerated type to a signed type, over a conversion to an unsigned type of
  the same size.  Previous versions of G++ tried to preserve
  unsignedness, but the standard mandates the current behavior.
! .IP "\fB\-Wtemplates\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wtemplates (C++ and Objective-C++ only)"
  Warn when a primary template declaration is encountered.  Some coding
  rules disallow templates, and this may be used to enforce that rule.
! The warning is inactive inside a system header file, such as the STL, so
! one can still use the STL.  One may also instantiate or specialize
  templates.
! .IP "\fB\-Wmismatched\-new\-delete\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wmismatched-new-delete (C++ and Objective-C++ only)"
  Warn for mismatches between calls to \f(CW\*(C`operator new\*(C'\fR or \f(CW\*(C`operator
  delete\*(C'\fR and the corresponding call to the allocation or deallocation function.
! This includes invocations of C++ \f(CW\*(C`operator delete\*(C'\fR with pointers
  returned from either mismatched forms of \f(CW\*(C`operator new\*(C'\fR, or from other
! functions that allocate objects for which the \f(CW\*(C`operator delete\*(C'\fR isn\*(Aqt
  a suitable deallocator, as well as calls to other deallocation functions
  with pointers returned from \f(CW\*(C`operator new\*(C'\fR for which the deallocation
! function isn\*(Aqt suitable.
  .Sp
  For example, the \f(CW\*(C`delete\*(C'\fR expression in the function below is diagnosed
! because it doesn\*(Aqt match the array form of the \f(CW\*(C`new\*(C'\fR expression
  the pointer argument was returned from.  Similarly, the call to \f(CW\*(C`free\*(C'\fR
  is also diagnosed.
  .Sp
*************** involving allocation and deallocation fu
*** 4436,4450 ****
  new\*(C'\fR and \f(CW\*(C`operator delete\*(C'\fR.
  .Sp
  \&\fB\-Wmismatched\-new\-delete\fR is included in \fB\-Wall\fR.
! .IP "\fB\-Wmismatched\-tags\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wmismatched-tags ( and Objective- only)"
  Warn for declarations of structs, classes, and class templates and their
! specializations with a class-key that does not match either the definition
  or the first declaration if no definition is provided.
  .Sp
  For example, the declaration of \f(CW\*(C`struct Object\*(C'\fR in the argument list
  of \f(CW\*(C`draw\*(C'\fR triggers the warning.  To avoid it, either remove the redundant
! class-key \f(CW\*(C`struct\*(C'\fR or replace it with \f(CW\*(C`class\*(C'\fR to match its definition.
  .Sp
  .Vb 5
  \&        class Object {
--- 4369,4383 ----
  new\*(C'\fR and \f(CW\*(C`operator delete\*(C'\fR.
  .Sp
  \&\fB\-Wmismatched\-new\-delete\fR is included in \fB\-Wall\fR.
! .IP "\fB\-Wmismatched\-tags\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wmismatched-tags (C++ and Objective-C++ only)"
  Warn for declarations of structs, classes, and class templates and their
! specializations with a class\-key that does not match either the definition
  or the first declaration if no definition is provided.
  .Sp
  For example, the declaration of \f(CW\*(C`struct Object\*(C'\fR in the argument list
  of \f(CW\*(C`draw\*(C'\fR triggers the warning.  To avoid it, either remove the redundant
! class\-key \f(CW\*(C`struct\*(C'\fR or replace it with \f(CW\*(C`class\*(C'\fR to match its definition.
  .Sp
  .Vb 5
  \&        class Object {
*************** class-key \f(CW\*(C`struct\*(C'\fR or re
*** 4454,4504 ****
  \&        void draw (struct Object*);
  .Ve
  .Sp
! It is not wrong to declare a class with the class-key \f(CW\*(C`struct\*(C'\fR as
  the example above shows.  The \fB\-Wmismatched\-tags\fR option is intended
  to help achieve a consistent style of class declarations.  In code that is
! intended to be portable to Windows-based compilers the warning helps prevent
  unresolved references due to the difference in the mangling of symbols
! declared with different class-keys.  The option can be used either on its
  own or in conjunction with \fB\-Wredundant\-tags\fR.
! .IP "\fB\-Wmultiple\-inheritance\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wmultiple-inheritance ( and Objective- only)"
  Warn when a class is defined with multiple direct base classes.  Some
  coding rules disallow multiple inheritance, and this may be used to
  enforce that rule.  The warning is inactive inside a system header file,
! such as the \s-1STL,\s0 so one can still use the \s-1STL.\s0  One may also define
  classes that indirectly use multiple inheritance.
! .IP "\fB\-Wvirtual\-inheritance\fR" 4
  .IX Item "-Wvirtual-inheritance"
  Warn when a class is defined with a virtual direct base class.  Some
  coding rules disallow multiple inheritance, and this may be used to
  enforce that rule.  The warning is inactive inside a system header file,
! such as the \s-1STL,\s0 so one can still use the \s-1STL.\s0  One may also define
  classes that indirectly use virtual inheritance.
! .IP "\fB\-Wno\-virtual\-move\-assign\fR" 4
  .IX Item "-Wno-virtual-move-assign"
  Suppress warnings about inheriting from a virtual base with a
! non-trivial \*(C+11 move assignment operator.  This is dangerous because
  if the virtual base is reachable along more than one path, it is
  moved multiple times, which can mean both objects end up in the
! moved-from state.  If the move assignment operator is written to avoid
! moving from a moved-from object, this warning can be disabled.
! .IP "\fB\-Wnamespaces\fR" 4
  .IX Item "-Wnamespaces"
  Warn when a namespace definition is opened.  Some coding rules disallow
  namespaces, and this may be used to enforce that rule.  The warning is
! inactive inside a system header file, such as the \s-1STL,\s0 so one can still
! use the \s-1STL.\s0  One may also use using directives and qualified names.
! .IP "\fB\-Wno\-template\-body\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-template-body ( and Objective- only)"
  Disable diagnosing errors when parsing a template, and instead issue an
  error only upon instantiation of the template.  This flag can also be
  used to downgrade such errors into warnings with \fBWno\-error=\fR or
  \&\fB\-fpermissive\fR.
! .IP "\fB\-Wno\-template\-id\-cdtor\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-template-id-cdtor ( and Objective- only)"
! Disable the warning about the use of simple-template-id as the declarator-id
! of a constructor or destructor, which became invalid in \*(C+20 via \s-1DR 2237.\s0
  For example:
  .Sp
  .Vb 4
--- 4387,4437 ----
  \&        void draw (struct Object*);
  .Ve
  .Sp
! It is not wrong to declare a class with the class\-key \f(CW\*(C`struct\*(C'\fR as
  the example above shows.  The \fB\-Wmismatched\-tags\fR option is intended
  to help achieve a consistent style of class declarations.  In code that is
! intended to be portable to Windows\-based compilers the warning helps prevent
  unresolved references due to the difference in the mangling of symbols
! declared with different class\-keys.  The option can be used either on its
  own or in conjunction with \fB\-Wredundant\-tags\fR.
! .IP "\fB\-Wmultiple\-inheritance\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wmultiple-inheritance (C++ and Objective-C++ only)"
  Warn when a class is defined with multiple direct base classes.  Some
  coding rules disallow multiple inheritance, and this may be used to
  enforce that rule.  The warning is inactive inside a system header file,
! such as the STL, so one can still use the STL.  One may also define
  classes that indirectly use multiple inheritance.
! .IP \fB\-Wvirtual\-inheritance\fR 4
  .IX Item "-Wvirtual-inheritance"
  Warn when a class is defined with a virtual direct base class.  Some
  coding rules disallow multiple inheritance, and this may be used to
  enforce that rule.  The warning is inactive inside a system header file,
! such as the STL, so one can still use the STL.  One may also define
  classes that indirectly use virtual inheritance.
! .IP \fB\-Wno\-virtual\-move\-assign\fR 4
  .IX Item "-Wno-virtual-move-assign"
  Suppress warnings about inheriting from a virtual base with a
! non\-trivial C++11 move assignment operator.  This is dangerous because
  if the virtual base is reachable along more than one path, it is
  moved multiple times, which can mean both objects end up in the
! moved\-from state.  If the move assignment operator is written to avoid
! moving from a moved\-from object, this warning can be disabled.
! .IP \fB\-Wnamespaces\fR 4
  .IX Item "-Wnamespaces"
  Warn when a namespace definition is opened.  Some coding rules disallow
  namespaces, and this may be used to enforce that rule.  The warning is
! inactive inside a system header file, such as the STL, so one can still
! use the STL.  One may also use using directives and qualified names.
! .IP "\fB\-Wno\-template\-body\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-template-body (C++ and Objective-C++ only)"
  Disable diagnosing errors when parsing a template, and instead issue an
  error only upon instantiation of the template.  This flag can also be
  used to downgrade such errors into warnings with \fBWno\-error=\fR or
  \&\fB\-fpermissive\fR.
! .IP "\fB\-Wno\-template\-id\-cdtor\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-template-id-cdtor (C++ and Objective-C++ only)"
! Disable the warning about the use of simple\-template\-id as the declarator\-id
! of a constructor or destructor, which became invalid in C++20 via DR 2237.
  For example:
  .Sp
  .Vb 4
*************** For example:
*** 4510,4522 ****
  .Sp
  \&\fB\-Wtemplate\-id\-cdtor\fR is enabled by default with
  \&\fB\-std=c++20\fR; it is also enabled by \fB\-Wc++20\-compat\fR.
! .IP "\fB\-Wtemplate\-names\-tu\-local\fR" 4
  .IX Item "-Wtemplate-names-tu-local"
! Warn when a template body hides an exposure of a translation-unit-local
! entity.  In most cases, referring to a translation-unit-local entity
  (such as an internal linkage declaration) within an entity that is
! emitted into a module's \s-1CMI\s0 is an error.  However, within the
! initializer of a variable, or in the body of a non-inline function,
  this is not an exposure and no error is emitted.
  .Sp
  This can cause variable or function templates to accidentally become
--- 4443,4455 ----
  .Sp
  \&\fB\-Wtemplate\-id\-cdtor\fR is enabled by default with
  \&\fB\-std=c++20\fR; it is also enabled by \fB\-Wc++20\-compat\fR.
! .IP \fB\-Wtemplate\-names\-tu\-local\fR 4
  .IX Item "-Wtemplate-names-tu-local"
! Warn when a template body hides an exposure of a translation\-unit\-local
! entity.  In most cases, referring to a translation\-unit\-local entity
  (such as an internal linkage declaration) within an entity that is
! emitted into a module\*(Aqs CMI is an error.  However, within the
! initializer of a variable, or in the body of a non\-inline function,
  this is not an exposure and no error is emitted.
  .Sp
  This can cause variable or function templates to accidentally become
*************** This warning attempts to detect cases wh
*** 4526,4540 ****
  The presence of an explicit instantiation silences the warning.
  .Sp
  This flag is enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wno\-terminate\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-terminate ( and Objective- only)"
! Disable the warning about a throw-expression that will immediately
  result in a call to \f(CW\*(C`terminate\*(C'\fR.
! .IP "\fB\-Wno\-vexing\-parse\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-vexing-parse ( and Objective- only)"
  Warn about the most vexing parse syntactic ambiguity.  This warns about
  the cases when a declaration looks like a variable definition, but the
! \&\*(C+ language requires it to be interpreted as a function declaration.
  For instance:
  .Sp
  .Vb 4
--- 4459,4473 ----
  The presence of an explicit instantiation silences the warning.
  .Sp
  This flag is enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wno\-terminate\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-terminate (C++ and Objective-C++ only)"
! Disable the warning about a throw\-expression that will immediately
  result in a call to \f(CW\*(C`terminate\*(C'\fR.
! .IP "\fB\-Wno\-vexing\-parse\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-vexing-parse (C++ and Objective-C++ only)"
  Warn about the most vexing parse syntactic ambiguity.  This warns about
  the cases when a declaration looks like a variable definition, but the
! C++ language requires it to be interpreted as a function declaration.
  For instance:
  .Sp
  .Vb 4
*************** The warning will suggest options how to
*** 4559,4596 ****
  it can suggest removing the parentheses or using braces instead.
  .Sp
  This warning is enabled by default.
! .IP "\fB\-Wno\-class\-conversion\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-class-conversion ( and Objective- only)"
  Do not warn when a conversion function converts an
  object to the same type, to a base class of that type, or to void; such
  a conversion function will never be called.
! .IP "\fB\-Wvolatile\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wvolatile ( and Objective- only)"
  Warn about deprecated uses of the \f(CW\*(C`volatile\*(C'\fR qualifier.  This includes
  postfix and prefix \f(CW\*(C`++\*(C'\fR and \f(CW\*(C`\-\-\*(C'\fR expressions of
  \&\f(CW\*(C`volatile\*(C'\fR\-qualified types, using simple assignments where the left
! operand is a \f(CW\*(C`volatile\*(C'\fR\-qualified non-class type for their value,
  compound assignments where the left operand is a \f(CW\*(C`volatile\*(C'\fR\-qualified
! non-class type, \f(CW\*(C`volatile\*(C'\fR\-qualified function return type,
  \&\f(CW\*(C`volatile\*(C'\fR\-qualified parameter type, and structured bindings of a
! \&\f(CW\*(C`volatile\*(C'\fR\-qualified type.  This usage was deprecated in \*(C+20.
  .Sp
  Enabled by default with \fB\-std=c++20\fR.  Before
  \&\fB\-std=c++20\fR, enabled with explicit \fB\-Wdeprecated\fR.
! .IP "\fB\-Waligned\-new\fR" 4
  .IX Item "-Waligned-new"
! Warn about a new-expression of a type that requires greater alignment
! than the \f(CW\*(C`alignof(std::max_align_t)\*(C'\fR but uses an allocation
  function without an explicit alignment parameter. This option is
  enabled by \fB\-Wall\fR.
  .Sp
  Normally this only warns about global allocation functions, but
  \&\fB\-Waligned\-new=all\fR also warns about class member allocation
  functions.
! .IP "\fB\-Wno\-placement\-new\fR" 4
  .IX Item "-Wno-placement-new"
  .PD 0
! .IP "\fB\-Wplacement\-new=\fR\fIn\fR" 4
  .IX Item "-Wplacement-new=n"
  .PD
  Warn about placement new expressions with undefined behavior, such as
--- 4492,4529 ----
  it can suggest removing the parentheses or using braces instead.
  .Sp
  This warning is enabled by default.
! .IP "\fB\-Wno\-class\-conversion\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-class-conversion (C++ and Objective-C++ only)"
  Do not warn when a conversion function converts an
  object to the same type, to a base class of that type, or to void; such
  a conversion function will never be called.
! .IP "\fB\-Wvolatile\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wvolatile (C++ and Objective-C++ only)"
  Warn about deprecated uses of the \f(CW\*(C`volatile\*(C'\fR qualifier.  This includes
  postfix and prefix \f(CW\*(C`++\*(C'\fR and \f(CW\*(C`\-\-\*(C'\fR expressions of
  \&\f(CW\*(C`volatile\*(C'\fR\-qualified types, using simple assignments where the left
! operand is a \f(CW\*(C`volatile\*(C'\fR\-qualified non\-class type for their value,
  compound assignments where the left operand is a \f(CW\*(C`volatile\*(C'\fR\-qualified
! non\-class type, \f(CW\*(C`volatile\*(C'\fR\-qualified function return type,
  \&\f(CW\*(C`volatile\*(C'\fR\-qualified parameter type, and structured bindings of a
! \&\f(CW\*(C`volatile\*(C'\fR\-qualified type.  This usage was deprecated in C++20.
  .Sp
  Enabled by default with \fB\-std=c++20\fR.  Before
  \&\fB\-std=c++20\fR, enabled with explicit \fB\-Wdeprecated\fR.
! .IP \fB\-Waligned\-new\fR 4
  .IX Item "-Waligned-new"
! Warn about a new\-expression of a type that requires greater alignment
! than the \f(CWalignof(std::max_align_t)\fR but uses an allocation
  function without an explicit alignment parameter. This option is
  enabled by \fB\-Wall\fR.
  .Sp
  Normally this only warns about global allocation functions, but
  \&\fB\-Waligned\-new=all\fR also warns about class member allocation
  functions.
! .IP \fB\-Wno\-placement\-new\fR 4
  .IX Item "-Wno-placement-new"
  .PD 0
! .IP \fB\-Wplacement\-new=\fR\fIn\fR 4
  .IX Item "-Wplacement-new=n"
  .PD
  Warn about placement new expressions with undefined behavior, such as
*************** because it attempts to construct an arra
*** 4606,4626 ****
  .Sp
  This warning is enabled by default.
  .RS 4
! .IP "\fB\-Wplacement\-new=1\fR" 4
  .IX Item "-Wplacement-new=1"
  This is the default warning level of \fB\-Wplacement\-new\fR.  At this
  level the warning is not issued for some strictly undefined constructs that
! \&\s-1GCC\s0 allows as extensions for compatibility with legacy code.  For example,
  the following \f(CW\*(C`new\*(C'\fR expression is not diagnosed at this level even
! though it has undefined behavior according to the \*(C+ standard because
! it writes past the end of the one-element array.
  .Sp
  .Vb 3
  \&        struct S { int n, a[1]; };
  \&        S *s = (S *)malloc (sizeof *s + 31 * sizeof s\->a[0]);
  \&        new (s\->a)int [32]();
  .Ve
! .IP "\fB\-Wplacement\-new=2\fR" 4
  .IX Item "-Wplacement-new=2"
  At this level, in addition to diagnosing all the same constructs as at level
  1, a diagnostic is also issued for placement new expressions that construct
--- 4539,4559 ----
  .Sp
  This warning is enabled by default.
  .RS 4
! .IP \fB\-Wplacement\-new=1\fR 4
  .IX Item "-Wplacement-new=1"
  This is the default warning level of \fB\-Wplacement\-new\fR.  At this
  level the warning is not issued for some strictly undefined constructs that
! GCC allows as extensions for compatibility with legacy code.  For example,
  the following \f(CW\*(C`new\*(C'\fR expression is not diagnosed at this level even
! though it has undefined behavior according to the C++ standard because
! it writes past the end of the one\-element array.
  .Sp
  .Vb 3
  \&        struct S { int n, a[1]; };
  \&        S *s = (S *)malloc (sizeof *s + 31 * sizeof s\->a[0]);
  \&        new (s\->a)int [32]();
  .Ve
! .IP \fB\-Wplacement\-new=2\fR 4
  .IX Item "-Wplacement-new=2"
  At this level, in addition to diagnosing all the same constructs as at level
  1, a diagnostic is also issued for placement new expressions that construct
*************** use of the flexible member array extensi
*** 4637,4647 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wcatch\-value\fR" 4
  .IX Item "-Wcatch-value"
  .PD 0
! .IP "\fB\-Wcatch\-value=\fR\fIn\fR\fB \fR(\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wcatch-value=n ( and Objective- only)"
  .PD
  Warn about catch handlers that do not catch via reference.
  With \fB\-Wcatch\-value=1\fR (or \fB\-Wcatch\-value\fR for short)
--- 4570,4580 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-Wcatch\-value\fR 4
  .IX Item "-Wcatch-value"
  .PD 0
! .IP "\fB\-Wcatch\-value=\fR\fIn\fR\fB \fR(C++ and Objective\-C++ only)" 4
! .IX Item "-Wcatch-value=n (C++ and Objective-C++ only)"
  .PD
  Warn about catch handlers that do not catch via reference.
  With \fB\-Wcatch\-value=1\fR (or \fB\-Wcatch\-value\fR for short)
*************** warn about polymorphic class types that
*** 4649,4672 ****
  With \fB\-Wcatch\-value=2\fR warn about all class types that are caught
  by value. With \fB\-Wcatch\-value=3\fR warn about all types that are
  not caught by reference. \fB\-Wcatch\-value\fR is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wconditionally\-supported\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wconditionally-supported ( and Objective- only)"
! Warn for conditionally-supported (\*(C+11 [intro.defs]) constructs.
! .IP "\fB\-Wno\-defaulted\-function\-deleted\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-defaulted-function-deleted ( and Objective- only)"
  Warn when an explicitly defaulted function is deleted by the compiler.
! That can occur when the function's declared type does not match the type
  of the function that would have been implicitly declared.  This warning
  is enabled by default.
! .IP "\fB\-Wno\-delete\-incomplete\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-delete-incomplete ( and Objective- only)"
  Do not warn when deleting a pointer to incomplete type, which may cause
  undefined behavior at runtime.  This warning is enabled by default.
! .IP "\fB\-Wextra\-semi\fR (\*(C+, Objective\-\*(C+ only)" 4
! .IX Item "-Wextra-semi (, Objective- only)"
  Warn about redundant semicolons.  There are various contexts in which an extra
! semicolon can occur.  One is a semicolon after in-class function definitions,
! which is valid in all \*(C+ dialects (and is never a pedwarn):
  .Sp
  .Vb 3
  \&        struct S {
--- 4582,4605 ----
  With \fB\-Wcatch\-value=2\fR warn about all class types that are caught
  by value. With \fB\-Wcatch\-value=3\fR warn about all types that are
  not caught by reference. \fB\-Wcatch\-value\fR is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wconditionally\-supported\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wconditionally-supported (C++ and Objective-C++ only)"
! Warn for conditionally\-supported (C++11 [intro.defs]) constructs.
! .IP "\fB\-Wno\-defaulted\-function\-deleted\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-defaulted-function-deleted (C++ and Objective-C++ only)"
  Warn when an explicitly defaulted function is deleted by the compiler.
! That can occur when the function\*(Aqs declared type does not match the type
  of the function that would have been implicitly declared.  This warning
  is enabled by default.
! .IP "\fB\-Wno\-delete\-incomplete\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-delete-incomplete (C++ and Objective-C++ only)"
  Do not warn when deleting a pointer to incomplete type, which may cause
  undefined behavior at runtime.  This warning is enabled by default.
! .IP "\fB\-Wextra\-semi\fR (C++, Objective\-C++ only)" 4
! .IX Item "-Wextra-semi (C++, Objective-C++ only)"
  Warn about redundant semicolons.  There are various contexts in which an extra
! semicolon can occur.  One is a semicolon after in\-class function definitions,
! which is valid in all C++ dialects (and is never a pedwarn):
  .Sp
  .Vb 3
  \&        struct S {
*************** which is valid in all \*(C+ dialects (an
*** 4675,4681 ****
  .Ve
  .Sp
  Another is an extra semicolon at namespace scope, which has been allowed
! since \*(C+11 (therefore is a pedwarn in \*(C+98):
  .Sp
  .Vb 3
  \&        struct S {
--- 4608,4614 ----
  .Ve
  .Sp
  Another is an extra semicolon at namespace scope, which has been allowed
! since C++11 (therefore is a pedwarn in C++98):
  .Sp
  .Vb 3
  \&        struct S {
*************** since \*(C+11 (therefore is a pedwarn in
*** 4684,4690 ****
  .Ve
  .Sp
  And yet another is an extra semicolon in class definitions, which has been
! allowed since \*(C+11 (therefore is a pedwarn in \*(C+98):
  .Sp
  .Vb 4
  \&        struct S {
--- 4617,4623 ----
  .Ve
  .Sp
  And yet another is an extra semicolon in class definitions, which has been
! allowed since C++11 (therefore is a pedwarn in C++98):
  .Sp
  .Vb 4
  \&        struct S {
*************** allowed since \*(C+11 (therefore is a pe
*** 4692,4703 ****
  \&          ;
  \&        };
  .Ve
! .IP "\fB\-Wno\-global\-module\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-global-module ( and Objective- only)"
  Disable the diagnostic for when the global module fragment of a module
  unit does not consist only of preprocessor directives.
! .IP "\fB\-Wno\-inaccessible\-base\fR (\*(C+, Objective\-\*(C+ only)" 4
! .IX Item "-Wno-inaccessible-base (, Objective- only)"
  This option controls warnings
  when a base class is inaccessible in a class derived from it due to
  ambiguity.  The warning is enabled by default.
--- 4625,4636 ----
  \&          ;
  \&        };
  .Ve
! .IP "\fB\-Wno\-global\-module\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-global-module (C++ and Objective-C++ only)"
  Disable the diagnostic for when the global module fragment of a module
  unit does not consist only of preprocessor directives.
! .IP "\fB\-Wno\-inaccessible\-base\fR (C++, Objective\-C++ only)" 4
! .IX Item "-Wno-inaccessible-base (C++, Objective-C++ only)"
  This option controls warnings
  when a base class is inaccessible in a class derived from it due to
  ambiguity.  The warning is enabled by default.
*************** bases is enabled by the \fB\-Wextra\fR o
*** 4711,4735 ****
  \&        
  \&        struct C : B, A { };
  .Ve
! .IP "\fB\-Wno\-inherited\-variadic\-ctor\fR" 4
  .IX Item "-Wno-inherited-variadic-ctor"
! Suppress warnings about use of \*(C+11 inheriting constructors when the
  base class inherited from has a C variadic constructor; the warning is
  on by default because the ellipsis is not inherited.
! .IP "\fB\-Wno\-invalid\-offsetof\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-invalid-offsetof ( and Objective- only)"
! Suppress warnings from applying the \f(CW\*(C`offsetof\*(C'\fR macro to a non-POD
! type.  According to the 2014 \s-1ISO \*(C+\s0 standard, applying \f(CW\*(C`offsetof\*(C'\fR
! to a non-standard-layout type is undefined.  In existing \*(C+ implementations,
  however, \f(CW\*(C`offsetof\*(C'\fR typically gives meaningful results.
  This flag is for users who are aware that they are
  writing nonportable code and who have deliberately chosen to ignore the
  warning about it.
  .Sp
  The restrictions on \f(CW\*(C`offsetof\*(C'\fR may be relaxed in a future version
! of the \*(C+ standard.
! .IP "\fB\-Wsized\-deallocation\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wsized-deallocation ( and Objective- only)"
  Warn about a definition of an unsized deallocation function
  .Sp
  .Vb 2
--- 4644,4668 ----
  \&        
  \&        struct C : B, A { };
  .Ve
! .IP \fB\-Wno\-inherited\-variadic\-ctor\fR 4
  .IX Item "-Wno-inherited-variadic-ctor"
! Suppress warnings about use of C++11 inheriting constructors when the
  base class inherited from has a C variadic constructor; the warning is
  on by default because the ellipsis is not inherited.
! .IP "\fB\-Wno\-invalid\-offsetof\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-invalid-offsetof (C++ and Objective-C++ only)"
! Suppress warnings from applying the \f(CW\*(C`offsetof\*(C'\fR macro to a non\-POD
! type.  According to the 2014 ISO C++ standard, applying \f(CW\*(C`offsetof\*(C'\fR
! to a non\-standard\-layout type is undefined.  In existing C++ implementations,
  however, \f(CW\*(C`offsetof\*(C'\fR typically gives meaningful results.
  This flag is for users who are aware that they are
  writing nonportable code and who have deliberately chosen to ignore the
  warning about it.
  .Sp
  The restrictions on \f(CW\*(C`offsetof\*(C'\fR may be relaxed in a future version
! of the C++ standard.
! .IP "\fB\-Wsized\-deallocation\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wsized-deallocation (C++ and Objective-C++ only)"
  Warn about a definition of an unsized deallocation function
  .Sp
  .Vb 2
*************** without a definition of the correspondin
*** 4746,4788 ****
  .Sp
  or vice versa.  Enabled by \fB\-Wextra\fR along with
  \&\fB\-fsized\-deallocation\fR.
! .IP "\fB\-Wsuggest\-final\-types\fR" 4
  .IX Item "-Wsuggest-final-types"
  Warn about types with virtual methods where code quality would be improved
! if the type were declared with the \*(C+11 \f(CW\*(C`final\*(C'\fR specifier,
  or, if possible,
! declared in an anonymous namespace. This allows \s-1GCC\s0 to more aggressively
  devirtualize the polymorphic calls. This warning is more effective with
! link-time optimization,
  where the information about the class hierarchy graph is
  more complete.
! .IP "\fB\-Wsuggest\-final\-methods\fR" 4
  .IX Item "-Wsuggest-final-methods"
  Warn about virtual methods where code quality would be improved if the method
! were declared with the \*(C+11 \f(CW\*(C`final\*(C'\fR specifier,
  or, if possible, its type were
  declared in an anonymous namespace or with the \f(CW\*(C`final\*(C'\fR specifier.
  This warning is
! more effective with link-time optimization, where the information about the
  class hierarchy graph is more complete. It is recommended to first consider
  suggestions of \fB\-Wsuggest\-final\-types\fR and then rebuild with new
  annotations.
! .IP "\fB\-Wsuggest\-override\fR" 4
  .IX Item "-Wsuggest-override"
  Warn about overriding virtual functions that are not marked with the
  \&\f(CW\*(C`override\*(C'\fR keyword.
! .IP "\fB\-Wno\-conversion\-null\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-conversion-null ( and Objective- only)"
! Do not warn for conversions between \f(CW\*(C`NULL\*(C'\fR and non-pointer
  types. \fB\-Wconversion\-null\fR is enabled by default.
! .SS "Options Controlling Objective-C and Objective\-\*(C+ Dialects"
! .IX Subsection "Options Controlling Objective-C and Objective- Dialects"
! (\s-1NOTE:\s0 This manual does not describe the Objective-C and Objective\-\*(C+
  languages themselves.
  .PP
! This section describes the command-line options that are only meaningful
! for Objective-C and Objective\-\*(C+ programs.  You can also use most of
! the language-independent \s-1GNU\s0 compiler options.
  For example, you might compile a file \fIsome_class.m\fR like this:
  .PP
  .Vb 1
--- 4679,4721 ----
  .Sp
  or vice versa.  Enabled by \fB\-Wextra\fR along with
  \&\fB\-fsized\-deallocation\fR.
! .IP \fB\-Wsuggest\-final\-types\fR 4
  .IX Item "-Wsuggest-final-types"
  Warn about types with virtual methods where code quality would be improved
! if the type were declared with the C++11 \f(CW\*(C`final\*(C'\fR specifier,
  or, if possible,
! declared in an anonymous namespace. This allows GCC to more aggressively
  devirtualize the polymorphic calls. This warning is more effective with
! link\-time optimization,
  where the information about the class hierarchy graph is
  more complete.
! .IP \fB\-Wsuggest\-final\-methods\fR 4
  .IX Item "-Wsuggest-final-methods"
  Warn about virtual methods where code quality would be improved if the method
! were declared with the C++11 \f(CW\*(C`final\*(C'\fR specifier,
  or, if possible, its type were
  declared in an anonymous namespace or with the \f(CW\*(C`final\*(C'\fR specifier.
  This warning is
! more effective with link\-time optimization, where the information about the
  class hierarchy graph is more complete. It is recommended to first consider
  suggestions of \fB\-Wsuggest\-final\-types\fR and then rebuild with new
  annotations.
! .IP \fB\-Wsuggest\-override\fR 4
  .IX Item "-Wsuggest-override"
  Warn about overriding virtual functions that are not marked with the
  \&\f(CW\*(C`override\*(C'\fR keyword.
! .IP "\fB\-Wno\-conversion\-null\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-conversion-null (C++ and Objective-C++ only)"
! Do not warn for conversions between \f(CW\*(C`NULL\*(C'\fR and non\-pointer
  types. \fB\-Wconversion\-null\fR is enabled by default.
! .SS "Options Controlling Objective\-C and Objective\-C++ Dialects"
! .IX Subsection "Options Controlling Objective-C and Objective-C++ Dialects"
! (NOTE: This manual does not describe the Objective\-C and Objective\-C++
  languages themselves.
  .PP
! This section describes the command\-line options that are only meaningful
! for Objective\-C and Objective\-C++ programs.  You can also use most of
! the language\-independent GNU compiler options.
  For example, you might compile a file \fIsome_class.m\fR like this:
  .PP
  .Vb 1
*************** For example, you might compile a file \f
*** 4790,4953 ****
  .Ve
  .PP
  In this example, \fB\-fgnu\-runtime\fR is an option meant only for
! Objective-C and Objective\-\*(C+ programs; you can use the other options with
! any language supported by \s-1GCC.\s0
  .PP
! Note that since Objective-C is an extension of the C language, Objective-C
! compilations may also use options specific to the C front-end (e.g.,
! \&\fB\-Wtraditional\fR).  Similarly, Objective\-\*(C+ compilations may use
! \&\*(C+\-specific options (e.g., \fB\-Wabi\fR).
  .PP
! Here is a list of options that are \fIonly\fR for compiling Objective-C
! and Objective\-\*(C+ programs:
! .IP "\fB\-fconstant\-string\-class=\fR\fIclass-name\fR" 4
  .IX Item "-fconstant-string-class=class-name"
! Use \fIclass-name\fR as the name of the class to instantiate for each
  literal string specified with the syntax \f(CW\*(C`@"..."\*(C'\fR.  The default
! class name is \f(CW\*(C`NXConstantString\*(C'\fR if the \s-1GNU\s0 runtime is being used, and
  \&\f(CW\*(C`NSConstantString\*(C'\fR if the NeXT runtime is being used (see below).  On
  Darwin / macOS platforms, the \fB\-fconstant\-cfstrings\fR option, if
  also present, overrides the \fB\-fconstant\-string\-class\fR setting and cause
  \&\f(CW\*(C`@"..."\*(C'\fR literals to be laid out as constant CoreFoundation strings.
! Note that \fB\-fconstant\-cfstrings\fR is an alias for the target-specific
  \&\fB\-mconstant\-cfstrings\fR equivalent.
! .IP "\fB\-fgnu\-runtime\fR" 4
  .IX Item "-fgnu-runtime"
! Generate object code compatible with the standard \s-1GNU\s0 Objective-C
  runtime.  This is the default for most types of systems.
! .IP "\fB\-fnext\-runtime\fR" 4
  .IX Item "-fnext-runtime"
  Generate output compatible with the NeXT runtime.  This is the default
! for NeXT-based systems, including Darwin / macOS.  The macro
  \&\f(CW\*(C`_\|_NEXT_RUNTIME_\|_\*(C'\fR is predefined if (and only if) this option is
  used.
! .IP "\fB\-fno\-nil\-receivers\fR" 4
  .IX Item "-fno-nil-receivers"
! Assume that all Objective-C message dispatches (\f(CW\*(C`[receiver
  message:arg]\*(C'\fR) in this translation unit ensure that the receiver is
  not \f(CW\*(C`nil\*(C'\fR.  This allows for more efficient entry points in the
  runtime to be used.  This option is only available in conjunction with
! the NeXT runtime and \s-1ABI\s0 version 0 or 1.
! .IP "\fB\-fobjc\-abi\-version=\fR\fIn\fR" 4
  .IX Item "-fobjc-abi-version=n"
! Use version \fIn\fR of the Objective-C \s-1ABI\s0 for the selected runtime.
  This option is currently supported only for the NeXT runtime.  In that
! case, Version 0 is the traditional (32\-bit) \s-1ABI\s0 without support for
! properties and other Objective-C 2.0 additions.  Version 1 is the
! traditional (32\-bit) \s-1ABI\s0 with support for properties and other
! Objective-C 2.0 additions.  Version 2 is the modern (64\-bit) \s-1ABI.\s0  If
  nothing is specified, the default is Version 0 on 32\-bit target
  machines, and Version 2 on 64\-bit target machines.
! .IP "\fB\-fobjc\-call\-cxx\-cdtors\fR" 4
  .IX Item "-fobjc-call-cxx-cdtors"
! For each Objective-C class, check if any of its instance variables is a
! \&\*(C+ object with a non-trivial default constructor.  If so, synthesize a
  special \f(CW\*(C`\- (id) .cxx_construct\*(C'\fR instance method which runs
! non-trivial default constructors on any such instance variables, in order,
  and then return \f(CW\*(C`self\*(C'\fR.  Similarly, check if any instance variable
! is a \*(C+ object with a non-trivial destructor, and if so, synthesize a
  special \f(CW\*(C`\- (void) .cxx_destruct\*(C'\fR method which runs
  all such default destructors, in reverse order.
  .Sp
  The \f(CW\*(C`\- (id) .cxx_construct\*(C'\fR and \f(CW\*(C`\- (void) .cxx_destruct\*(C'\fR
  methods thusly generated only operate on instance variables
! declared in the current Objective-C class, and not those inherited
! from superclasses.  It is the responsibility of the Objective-C
! runtime to invoke all such methods in an object's inheritance
  hierarchy.  The \f(CW\*(C`\- (id) .cxx_construct\*(C'\fR methods are invoked
  by the runtime immediately after a new object instance is allocated;
  the \f(CW\*(C`\- (void) .cxx_destruct\*(C'\fR methods are invoked immediately
  before the runtime deallocates an object instance.
  .Sp
! As of this writing, only the NeXT runtime on Mac \s-1OS X 10.4\s0 and later has
  support for invoking the \f(CW\*(C`\- (id) .cxx_construct\*(C'\fR and
  \&\f(CW\*(C`\- (void) .cxx_destruct\*(C'\fR methods.
! .IP "\fB\-fobjc\-direct\-dispatch\fR" 4
  .IX Item "-fobjc-direct-dispatch"
  Allow fast jumps to the message dispatcher.  On Darwin this is
  accomplished via the comm page.
! .IP "\fB\-fobjc\-exceptions\fR" 4
  .IX Item "-fobjc-exceptions"
  Enable syntactic support for structured exception handling in
! Objective-C, similar to what is offered by \*(C+.  This option
! is required to use the Objective-C keywords \f(CW@try\fR,
  \&\f(CW@throw\fR, \f(CW@catch\fR, \f(CW@finally\fR and
! \&\f(CW@synchronized\fR.  This option is available with both the \s-1GNU\s0
  runtime and the NeXT runtime (but not available in conjunction with
! the NeXT runtime on Mac \s-1OS X 10.2\s0 and earlier).
! .IP "\fB\-fobjc\-gc\fR" 4
  .IX Item "-fobjc-gc"
! Enable garbage collection (\s-1GC\s0) in Objective-C and Objective\-\*(C+
  programs.  This option is only available with the NeXT runtime; the
! \&\s-1GNU\s0 runtime has a different garbage collection implementation that
  does not require special compiler flags.
! .IP "\fB\-fobjc\-nilcheck\fR" 4
  .IX Item "-fobjc-nilcheck"
! For the NeXT runtime with version 2 of the \s-1ABI,\s0 check for a nil
  receiver in method invocations before doing the actual method call.
  This is the default and can be disabled using
  \&\fB\-fno\-objc\-nilcheck\fR.  Class methods and super calls are never
  checked for nil in this way no matter what this flag is set to.
! Currently this flag does nothing when the \s-1GNU\s0 runtime, or an older
! version of the NeXT runtime \s-1ABI,\s0 is used.
! .IP "\fB\-fobjc\-std=objc1\fR" 4
  .IX Item "-fobjc-std=objc1"
! Conform to the language syntax of Objective-C 1.0, the language
! recognized by \s-1GCC 4.0.\s0  This only affects the Objective-C additions to
! the C/\*(C+ language; it does not affect conformance to C/\*(C+ standards,
! which is controlled by the separate C/\*(C+ dialect option flags.  When
! this option is used with the Objective-C or Objective\-\*(C+ compiler,
! any Objective-C syntax that is not recognized by \s-1GCC 4.0\s0 is rejected.
! This is useful if you need to make sure that your Objective-C code can
! be compiled with older versions of \s-1GCC.\s0
! .IP "\fB\-freplace\-objc\-classes\fR" 4
  .IX Item "-freplace-objc-classes"
! Emit a special marker instructing \fB\f(BIld\fB\|(1)\fR not to statically link in
! the resulting object file, and allow \fB\f(BIdyld\fB\|(1)\fR to load it in at
! run time instead.  This is used in conjunction with the Fix-and-Continue
  debugging mode, where the object file in question may be recompiled and
  dynamically reloaded in the course of program execution, without the need
! to restart the program itself.  Currently, Fix-and-Continue functionality
! is only available in conjunction with the NeXT runtime on Mac \s-1OS X 10.3\s0
  and later.
! .IP "\fB\-fzero\-link\fR" 4
  .IX Item "-fzero-link"
  When compiling for the NeXT runtime, the compiler ordinarily replaces calls
! to \f(CW\*(C`objc_getClass("...")\*(C'\fR (when the name of the class is known at
  compile time) with static class references that get initialized at load time,
! which improves run-time performance.  Specifying the \fB\-fzero\-link\fR flag
! suppresses this behavior and causes calls to \f(CW\*(C`objc_getClass("...")\*(C'\fR
! to be retained.  This is useful in Zero-Link debugging mode, since it allows
  for individual class implementations to be modified during program execution.
! The \s-1GNU\s0 runtime currently always retains calls to \f(CW\*(C`objc_get_class("...")\*(C'\fR
! regardless of command-line options.
! .IP "\fB\-fno\-local\-ivars\fR" 4
  .IX Item "-fno-local-ivars"
! By default instance variables in Objective-C can be accessed as if
! they were local variables from within the methods of the class they're
  declared in.  This can lead to shadowing between instance variables
  and other variables declared either locally inside a class method or
  globally with the same name.  Specifying the \fB\-fno\-local\-ivars\fR
  flag disables this behavior thus avoiding variable shadowing issues.
! .IP "\fB\-fivar\-visibility=\fR[\fBpublic\fR|\fBprotected\fR|\fBprivate\fR|\fBpackage\fR]" 4
  .IX Item "-fivar-visibility=[public|protected|private|package]"
  Set the default instance variable visibility to the specified option
  so that instance variables declared outside the scope of any access
  modifier directives default to the specified visibility.
! .IP "\fB\-gen\-decls\fR" 4
  .IX Item "-gen-decls"
  Dump interface declarations for all classes seen in the source file to a
! file named \fI\fIsourcename\fI.decl\fR.
! .IP "\fB\-Wassign\-intercept\fR (Objective-C and Objective\-\*(C+ only)" 4
! .IX Item "-Wassign-intercept (Objective-C and Objective- only)"
! Warn whenever an Objective-C assignment is being intercepted by the
  garbage collector.
! .IP "\fB\-Wno\-property\-assign\-default\fR (Objective-C and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-property-assign-default (Objective-C and Objective- only)"
! Do not warn if a property for an Objective-C object has no assign
  semantics specified.
! .IP "\fB\-Wno\-protocol\fR (Objective-C and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-protocol (Objective-C and Objective- only)"
  If a class is declared to implement a protocol, a warning is issued for
  every method in the protocol that is not implemented by the class.  The
  default behavior is to issue a warning for every method not explicitly
--- 4723,4886 ----
  .Ve
  .PP
  In this example, \fB\-fgnu\-runtime\fR is an option meant only for
! Objective\-C and Objective\-C++ programs; you can use the other options with
! any language supported by GCC.
  .PP
! Note that since Objective\-C is an extension of the C language, Objective\-C
! compilations may also use options specific to the C front\-end (e.g.,
! \&\fB\-Wtraditional\fR).  Similarly, Objective\-C++ compilations may use
! C++\-specific options (e.g., \fB\-Wabi\fR).
  .PP
! Here is a list of options that are \fIonly\fR for compiling Objective\-C
! and Objective\-C++ programs:
! .IP \fB\-fconstant\-string\-class=\fR\fIclass\-name\fR 4
  .IX Item "-fconstant-string-class=class-name"
! Use \fIclass\-name\fR as the name of the class to instantiate for each
  literal string specified with the syntax \f(CW\*(C`@"..."\*(C'\fR.  The default
! class name is \f(CW\*(C`NXConstantString\*(C'\fR if the GNU runtime is being used, and
  \&\f(CW\*(C`NSConstantString\*(C'\fR if the NeXT runtime is being used (see below).  On
  Darwin / macOS platforms, the \fB\-fconstant\-cfstrings\fR option, if
  also present, overrides the \fB\-fconstant\-string\-class\fR setting and cause
  \&\f(CW\*(C`@"..."\*(C'\fR literals to be laid out as constant CoreFoundation strings.
! Note that \fB\-fconstant\-cfstrings\fR is an alias for the target\-specific
  \&\fB\-mconstant\-cfstrings\fR equivalent.
! .IP \fB\-fgnu\-runtime\fR 4
  .IX Item "-fgnu-runtime"
! Generate object code compatible with the standard GNU Objective\-C
  runtime.  This is the default for most types of systems.
! .IP \fB\-fnext\-runtime\fR 4
  .IX Item "-fnext-runtime"
  Generate output compatible with the NeXT runtime.  This is the default
! for NeXT\-based systems, including Darwin / macOS.  The macro
  \&\f(CW\*(C`_\|_NEXT_RUNTIME_\|_\*(C'\fR is predefined if (and only if) this option is
  used.
! .IP \fB\-fno\-nil\-receivers\fR 4
  .IX Item "-fno-nil-receivers"
! Assume that all Objective\-C message dispatches (\f(CW\*(C`[receiver
  message:arg]\*(C'\fR) in this translation unit ensure that the receiver is
  not \f(CW\*(C`nil\*(C'\fR.  This allows for more efficient entry points in the
  runtime to be used.  This option is only available in conjunction with
! the NeXT runtime and ABI version 0 or 1.
! .IP \fB\-fobjc\-abi\-version=\fR\fIn\fR 4
  .IX Item "-fobjc-abi-version=n"
! Use version \fIn\fR of the Objective\-C ABI for the selected runtime.
  This option is currently supported only for the NeXT runtime.  In that
! case, Version 0 is the traditional (32\-bit) ABI without support for
! properties and other Objective\-C 2.0 additions.  Version 1 is the
! traditional (32\-bit) ABI with support for properties and other
! Objective\-C 2.0 additions.  Version 2 is the modern (64\-bit) ABI.  If
  nothing is specified, the default is Version 0 on 32\-bit target
  machines, and Version 2 on 64\-bit target machines.
! .IP \fB\-fobjc\-call\-cxx\-cdtors\fR 4
  .IX Item "-fobjc-call-cxx-cdtors"
! For each Objective\-C class, check if any of its instance variables is a
! C++ object with a non\-trivial default constructor.  If so, synthesize a
  special \f(CW\*(C`\- (id) .cxx_construct\*(C'\fR instance method which runs
! non\-trivial default constructors on any such instance variables, in order,
  and then return \f(CW\*(C`self\*(C'\fR.  Similarly, check if any instance variable
! is a C++ object with a non\-trivial destructor, and if so, synthesize a
  special \f(CW\*(C`\- (void) .cxx_destruct\*(C'\fR method which runs
  all such default destructors, in reverse order.
  .Sp
  The \f(CW\*(C`\- (id) .cxx_construct\*(C'\fR and \f(CW\*(C`\- (void) .cxx_destruct\*(C'\fR
  methods thusly generated only operate on instance variables
! declared in the current Objective\-C class, and not those inherited
! from superclasses.  It is the responsibility of the Objective\-C
! runtime to invoke all such methods in an object\*(Aqs inheritance
  hierarchy.  The \f(CW\*(C`\- (id) .cxx_construct\*(C'\fR methods are invoked
  by the runtime immediately after a new object instance is allocated;
  the \f(CW\*(C`\- (void) .cxx_destruct\*(C'\fR methods are invoked immediately
  before the runtime deallocates an object instance.
  .Sp
! As of this writing, only the NeXT runtime on Mac OS X 10.4 and later has
  support for invoking the \f(CW\*(C`\- (id) .cxx_construct\*(C'\fR and
  \&\f(CW\*(C`\- (void) .cxx_destruct\*(C'\fR methods.
! .IP \fB\-fobjc\-direct\-dispatch\fR 4
  .IX Item "-fobjc-direct-dispatch"
  Allow fast jumps to the message dispatcher.  On Darwin this is
  accomplished via the comm page.
! .IP \fB\-fobjc\-exceptions\fR 4
  .IX Item "-fobjc-exceptions"
  Enable syntactic support for structured exception handling in
! Objective\-C, similar to what is offered by C++.  This option
! is required to use the Objective\-C keywords \f(CW@try\fR,
  \&\f(CW@throw\fR, \f(CW@catch\fR, \f(CW@finally\fR and
! \&\f(CW@synchronized\fR.  This option is available with both the GNU
  runtime and the NeXT runtime (but not available in conjunction with
! the NeXT runtime on Mac OS X 10.2 and earlier).
! .IP \fB\-fobjc\-gc\fR 4
  .IX Item "-fobjc-gc"
! Enable garbage collection (GC) in Objective\-C and Objective\-C++
  programs.  This option is only available with the NeXT runtime; the
! GNU runtime has a different garbage collection implementation that
  does not require special compiler flags.
! .IP \fB\-fobjc\-nilcheck\fR 4
  .IX Item "-fobjc-nilcheck"
! For the NeXT runtime with version 2 of the ABI, check for a nil
  receiver in method invocations before doing the actual method call.
  This is the default and can be disabled using
  \&\fB\-fno\-objc\-nilcheck\fR.  Class methods and super calls are never
  checked for nil in this way no matter what this flag is set to.
! Currently this flag does nothing when the GNU runtime, or an older
! version of the NeXT runtime ABI, is used.
! .IP \fB\-fobjc\-std=objc1\fR 4
  .IX Item "-fobjc-std=objc1"
! Conform to the language syntax of Objective\-C 1.0, the language
! recognized by GCC 4.0.  This only affects the Objective\-C additions to
! the C/C++ language; it does not affect conformance to C/C++ standards,
! which is controlled by the separate C/C++ dialect option flags.  When
! this option is used with the Objective\-C or Objective\-C++ compiler,
! any Objective\-C syntax that is not recognized by GCC 4.0 is rejected.
! This is useful if you need to make sure that your Objective\-C code can
! be compiled with older versions of GCC.
! .IP \fB\-freplace\-objc\-classes\fR 4
  .IX Item "-freplace-objc-classes"
! Emit a special marker instructing \fBld\|(1)\fR not to statically link in
! the resulting object file, and allow \fBdyld\|(1)\fR to load it in at
! run time instead.  This is used in conjunction with the Fix\-and\-Continue
  debugging mode, where the object file in question may be recompiled and
  dynamically reloaded in the course of program execution, without the need
! to restart the program itself.  Currently, Fix\-and\-Continue functionality
! is only available in conjunction with the NeXT runtime on Mac OS X 10.3
  and later.
! .IP \fB\-fzero\-link\fR 4
  .IX Item "-fzero-link"
  When compiling for the NeXT runtime, the compiler ordinarily replaces calls
! to \f(CWobjc_getClass("...")\fR (when the name of the class is known at
  compile time) with static class references that get initialized at load time,
! which improves run\-time performance.  Specifying the \fB\-fzero\-link\fR flag
! suppresses this behavior and causes calls to \f(CWobjc_getClass("...")\fR
! to be retained.  This is useful in Zero\-Link debugging mode, since it allows
  for individual class implementations to be modified during program execution.
! The GNU runtime currently always retains calls to \f(CWobjc_get_class("...")\fR
! regardless of command\-line options.
! .IP \fB\-fno\-local\-ivars\fR 4
  .IX Item "-fno-local-ivars"
! By default instance variables in Objective\-C can be accessed as if
! they were local variables from within the methods of the class they\*(Aqre
  declared in.  This can lead to shadowing between instance variables
  and other variables declared either locally inside a class method or
  globally with the same name.  Specifying the \fB\-fno\-local\-ivars\fR
  flag disables this behavior thus avoiding variable shadowing issues.
! .IP \fB\-fivar\-visibility=\fR[\fBpublic\fR|\fBprotected\fR|\fBprivate\fR|\fBpackage\fR] 4
  .IX Item "-fivar-visibility=[public|protected|private|package]"
  Set the default instance variable visibility to the specified option
  so that instance variables declared outside the scope of any access
  modifier directives default to the specified visibility.
! .IP \fB\-gen\-decls\fR 4
  .IX Item "-gen-decls"
  Dump interface declarations for all classes seen in the source file to a
! file named \fIsourcename.decl\fR.
! .IP "\fB\-Wassign\-intercept\fR (Objective\-C and Objective\-C++ only)" 4
! .IX Item "-Wassign-intercept (Objective-C and Objective-C++ only)"
! Warn whenever an Objective\-C assignment is being intercepted by the
  garbage collector.
! .IP "\fB\-Wno\-property\-assign\-default\fR (Objective\-C and Objective\-C++ only)" 4
! .IX Item "-Wno-property-assign-default (Objective-C and Objective-C++ only)"
! Do not warn if a property for an Objective\-C object has no assign
  semantics specified.
! .IP "\fB\-Wno\-protocol\fR (Objective\-C and Objective\-C++ only)" 4
! .IX Item "-Wno-protocol (Objective-C and Objective-C++ only)"
  If a class is declared to implement a protocol, a warning is issued for
  every method in the protocol that is not implemented by the class.  The
  default behavior is to issue a warning for every method not explicitly
*************** implemented in the class, even if a meth
*** 4955,5036 ****
  from the superclass.  If you use the \fB\-Wno\-protocol\fR option, then
  methods inherited from the superclass are considered to be implemented,
  and no warning is issued for them.
! .IP "\fB\-Wobjc\-root\-class\fR (Objective-C and Objective\-\*(C+ only)" 4
! .IX Item "-Wobjc-root-class (Objective-C and Objective- only)"
  Warn if a class interface lacks a superclass. Most classes will inherit
  from \f(CW\*(C`NSObject\*(C'\fR (or \f(CW\*(C`Object\*(C'\fR) for example.  When declaring
  classes intended to be root classes, the warning can be suppressed by
  marking their interfaces with \f(CW\*(C`_\|_attribute_\|_((objc_root_class))\*(C'\fR.
! .IP "\fB\-Wselector\fR (Objective-C and Objective\-\*(C+ only)" 4
! .IX Item "-Wselector (Objective-C and Objective- only)"
  Warn if multiple methods of different types for the same selector are
  found during compilation.  The check is performed on the list of methods
  in the final stage of compilation.  Additionally, a check is performed
! for each selector appearing in a \f(CW\*(C`@selector(...)\*(C'\fR
  expression, and a corresponding method for that selector has been found
  during compilation.  Because these checks scan the method table only at
  the end of compilation, these warnings are not produced if the final
  stage of compilation is not reached, for example because an error is
  found during compilation, or because the \fB\-fsyntax\-only\fR option is
  being used.
! .IP "\fB\-Wstrict\-selector\-match\fR (Objective-C and Objective\-\*(C+ only)" 4
! .IX Item "-Wstrict-selector-match (Objective-C and Objective- only)"
  Warn if multiple methods with differing argument and/or return types are
  found for a given selector when attempting to send a message using this
  selector to a receiver of type \f(CW\*(C`id\*(C'\fR or \f(CW\*(C`Class\*(C'\fR.  When this flag
  is off (which is the default behavior), the compiler omits such warnings
  if any differences found are confined to types that share the same size
  and alignment.
! .IP "\fB\-Wundeclared\-selector\fR (Objective-C and Objective\-\*(C+ only)" 4
! .IX Item "-Wundeclared-selector (Objective-C and Objective- only)"
! Warn if a \f(CW\*(C`@selector(...)\*(C'\fR expression referring to an
  undeclared selector is found.  A selector is considered undeclared if no
  method with that name has been declared before the
! \&\f(CW\*(C`@selector(...)\*(C'\fR expression, either explicitly in an
  \&\f(CW@interface\fR or \f(CW@protocol\fR declaration, or implicitly in
  an \f(CW@implementation\fR section.  This option always performs its
! checks as soon as a \f(CW\*(C`@selector(...)\*(C'\fR expression is found,
  while \fB\-Wselector\fR only performs its checks in the final stage of
  compilation.  This also enforces the coding style convention
  that methods and selectors must be declared before being used.
! .IP "\fB\-print\-objc\-runtime\-info\fR" 4
  .IX Item "-print-objc-runtime-info"
  Generate C header describing the largest structure that is passed by
  value, if any.
  .SS "Options Controlling OpenMP and OpenACC"
  .IX Subsection "Options Controlling OpenMP and OpenACC"
! \&\s-1GCC\s0 supports OpenMP extensions to the C, \*(C+, and Fortran languages
  with the \fB\-fopenmp\fR option.  Similarly, OpenACC extensions are
  supported in all three languages with \fB\-fopenacc\fR.
! .IP "\fB\-foffload=disable\fR" 4
  .IX Item "-foffload=disable"
  .PD 0
! .IP "\fB\-foffload=default\fR" 4
  .IX Item "-foffload=default"
! .IP "\fB\-foffload=\fR\fItarget-list\fR" 4
  .IX Item "-foffload=target-list"
  .PD
  Specify for which OpenMP and OpenACC offload targets code should be generated.
  The default behavior, equivalent to \fB\-foffload=default\fR, is to generate
  code for all supported offload targets.  The \fB\-foffload=disable\fR form
  generates code only for the host fallback, while
! \&\fB\-foffload=\fR\fItarget-list\fR generates code only for the specified
! comma-separated list of offload targets.
  .Sp
! Offload targets are specified in \s-1GCC\s0's internal target-triplet format. You can
  run the compiler with \fB\-v\fR to show the list of configured offload targets
  under \f(CW\*(C`OFFLOAD_TARGET_NAMES\*(C'\fR.
! .IP "\fB\-foffload\-options=\fR\fIoptions\fR" 4
  .IX Item "-foffload-options=options"
  .PD 0
! .IP "\fB\-foffload\-options=\fR\fItarget-triplet-list\fR\fB=\fR\fIoptions\fR" 4
  .IX Item "-foffload-options=target-triplet-list=options"
  .PD
! With \fB\-foffload\-options=\fR\fIoptions\fR, \s-1GCC\s0 passes the specified
  \&\fIoptions\fR to the compilers for all enabled offloading targets.  You can
  specify options that apply only to a specific target or targets by using
! the \fB\-foffload\-options=\fR\fItarget-list\fR\fB=\fR\fIoptions\fR form.  The
! \&\fItarget-list\fR is a comma-separated list in the same format as for the
  \&\fB\-foffload=\fR option.
  .Sp
  Typical command lines are
--- 4888,4969 ----
  from the superclass.  If you use the \fB\-Wno\-protocol\fR option, then
  methods inherited from the superclass are considered to be implemented,
  and no warning is issued for them.
! .IP "\fB\-Wobjc\-root\-class\fR (Objective\-C and Objective\-C++ only)" 4
! .IX Item "-Wobjc-root-class (Objective-C and Objective-C++ only)"
  Warn if a class interface lacks a superclass. Most classes will inherit
  from \f(CW\*(C`NSObject\*(C'\fR (or \f(CW\*(C`Object\*(C'\fR) for example.  When declaring
  classes intended to be root classes, the warning can be suppressed by
  marking their interfaces with \f(CW\*(C`_\|_attribute_\|_((objc_root_class))\*(C'\fR.
! .IP "\fB\-Wselector\fR (Objective\-C and Objective\-C++ only)" 4
! .IX Item "-Wselector (Objective-C and Objective-C++ only)"
  Warn if multiple methods of different types for the same selector are
  found during compilation.  The check is performed on the list of methods
  in the final stage of compilation.  Additionally, a check is performed
! for each selector appearing in a \f(CW@selector(...)\fR
  expression, and a corresponding method for that selector has been found
  during compilation.  Because these checks scan the method table only at
  the end of compilation, these warnings are not produced if the final
  stage of compilation is not reached, for example because an error is
  found during compilation, or because the \fB\-fsyntax\-only\fR option is
  being used.
! .IP "\fB\-Wstrict\-selector\-match\fR (Objective\-C and Objective\-C++ only)" 4
! .IX Item "-Wstrict-selector-match (Objective-C and Objective-C++ only)"
  Warn if multiple methods with differing argument and/or return types are
  found for a given selector when attempting to send a message using this
  selector to a receiver of type \f(CW\*(C`id\*(C'\fR or \f(CW\*(C`Class\*(C'\fR.  When this flag
  is off (which is the default behavior), the compiler omits such warnings
  if any differences found are confined to types that share the same size
  and alignment.
! .IP "\fB\-Wundeclared\-selector\fR (Objective\-C and Objective\-C++ only)" 4
! .IX Item "-Wundeclared-selector (Objective-C and Objective-C++ only)"
! Warn if a \f(CW@selector(...)\fR expression referring to an
  undeclared selector is found.  A selector is considered undeclared if no
  method with that name has been declared before the
! \&\f(CW@selector(...)\fR expression, either explicitly in an
  \&\f(CW@interface\fR or \f(CW@protocol\fR declaration, or implicitly in
  an \f(CW@implementation\fR section.  This option always performs its
! checks as soon as a \f(CW@selector(...)\fR expression is found,
  while \fB\-Wselector\fR only performs its checks in the final stage of
  compilation.  This also enforces the coding style convention
  that methods and selectors must be declared before being used.
! .IP \fB\-print\-objc\-runtime\-info\fR 4
  .IX Item "-print-objc-runtime-info"
  Generate C header describing the largest structure that is passed by
  value, if any.
  .SS "Options Controlling OpenMP and OpenACC"
  .IX Subsection "Options Controlling OpenMP and OpenACC"
! GCC supports OpenMP extensions to the C, C++, and Fortran languages
  with the \fB\-fopenmp\fR option.  Similarly, OpenACC extensions are
  supported in all three languages with \fB\-fopenacc\fR.
! .IP \fB\-foffload=disable\fR 4
  .IX Item "-foffload=disable"
  .PD 0
! .IP \fB\-foffload=default\fR 4
  .IX Item "-foffload=default"
! .IP \fB\-foffload=\fR\fItarget\-list\fR 4
  .IX Item "-foffload=target-list"
  .PD
  Specify for which OpenMP and OpenACC offload targets code should be generated.
  The default behavior, equivalent to \fB\-foffload=default\fR, is to generate
  code for all supported offload targets.  The \fB\-foffload=disable\fR form
  generates code only for the host fallback, while
! \&\fB\-foffload=\fR\fItarget\-list\fR generates code only for the specified
! comma\-separated list of offload targets.
  .Sp
! Offload targets are specified in GCC\*(Aqs internal target\-triplet format. You can
  run the compiler with \fB\-v\fR to show the list of configured offload targets
  under \f(CW\*(C`OFFLOAD_TARGET_NAMES\*(C'\fR.
! .IP \fB\-foffload\-options=\fR\fIoptions\fR 4
  .IX Item "-foffload-options=options"
  .PD 0
! .IP \fB\-foffload\-options=\fR\fItarget\-triplet\-list\fR\fB=\fR\fIoptions\fR 4
  .IX Item "-foffload-options=target-triplet-list=options"
  .PD
! With \fB\-foffload\-options=\fR\fIoptions\fR, GCC passes the specified
  \&\fIoptions\fR to the compilers for all enabled offloading targets.  You can
  specify options that apply only to a specific target or targets by using
! the \fB\-foffload\-options=\fR\fItarget\-list\fR\fB=\fR\fIoptions\fR form.  The
! \&\fItarget\-list\fR is a comma\-separated list in the same format as for the
  \&\fB\-foffload=\fR option.
  .Sp
  Typical command lines are
*************** Typical command lines are
*** 5040,5063 ****
  \&                \-foffload\-options=nvptx\-none=\-latomic
  \&        \-foffload\-options=amdgcn\-amdhsa=\-march=gfx906
  .Ve
! .IP "\fB\-fopenacc\fR" 4
  .IX Item "-fopenacc"
! Enable handling of OpenACC directives \fB#pragma acc\fR in C/\*(C+ and
! \&\fB!$acc\fR in free-form Fortran and \fB!$acc\fR, \fBc$acc\fR and
! \&\fB*$acc\fR in fixed-form Fortran.  This option
  implies \fB\-pthread\fR, and thus is only supported on targets that
  have support for \fB\-pthread\fR.
! .IP "\fB\-fopenacc\-dim=\fR\fIgeom\fR" 4
  .IX Item "-fopenacc-dim=geom"
  Specify default compute dimensions for parallel offload regions that do
  not explicitly specify them.  The \fIgeom\fR value is a triple of
  \&\fB:\fR\-separated sizes, in order \fIgang\fR, \fIworker\fR, and \fIvector\fR.
! A size can be omitted, to use a target-specific default value.
! .IP "\fB\-fopenmp\fR" 4
  .IX Item "-fopenmp"
  Enable handling of OpenMP directives \fB#pragma omp\fR,
  \&\fB[[omp::directive(...)]]\fR, \fB[[omp::decl(...)]]\fR,
! and \fB[[omp::sequence(...)]]\fR in C/\*(C+.  In Fortran, it enables
  \&\fB!$omp\fR and the conditional compilation sentinel \fB!$\fR.
  In fixed source form Fortran, the sentinels can also start with
  \&\fBc\fR or \fB*\fR.
--- 4973,4996 ----
  \&                \-foffload\-options=nvptx\-none=\-latomic
  \&        \-foffload\-options=amdgcn\-amdhsa=\-march=gfx906
  .Ve
! .IP \fB\-fopenacc\fR 4
  .IX Item "-fopenacc"
! Enable handling of OpenACC directives \fB#pragma acc\fR in C/C++ and
! \&\fB!$acc\fR in free\-form Fortran and \fB!$acc\fR, \fBc$acc\fR and
! \&\fB*$acc\fR in fixed\-form Fortran.  This option
  implies \fB\-pthread\fR, and thus is only supported on targets that
  have support for \fB\-pthread\fR.
! .IP \fB\-fopenacc\-dim=\fR\fIgeom\fR 4
  .IX Item "-fopenacc-dim=geom"
  Specify default compute dimensions for parallel offload regions that do
  not explicitly specify them.  The \fIgeom\fR value is a triple of
  \&\fB:\fR\-separated sizes, in order \fIgang\fR, \fIworker\fR, and \fIvector\fR.
! A size can be omitted, to use a target\-specific default value.
! .IP \fB\-fopenmp\fR 4
  .IX Item "-fopenmp"
  Enable handling of OpenMP directives \fB#pragma omp\fR,
  \&\fB[[omp::directive(...)]]\fR, \fB[[omp::decl(...)]]\fR,
! and \fB[[omp::sequence(...)]]\fR in C/C++.  In Fortran, it enables
  \&\fB!$omp\fR and the conditional compilation sentinel \fB!$\fR.
  In fixed source form Fortran, the sentinels can also start with
  \&\fBc\fR or \fB*\fR.
*************** In fixed source form Fortran, the sentin
*** 5065,5094 ****
  This option implies \fB\-pthread\fR, and thus is only supported on
  targets that have support for \fB\-pthread\fR. \fB\-fopenmp\fR
  implies \fB\-fopenmp\-simd\fR.
! .IP "\fB\-fopenmp\-simd\fR" 4
  .IX Item "-fopenmp-simd"
! Enable handling of OpenMP's \f(CW\*(C`simd\*(C'\fR, \f(CW\*(C`declare simd\*(C'\fR,
  \&\f(CW\*(C`declare reduction\*(C'\fR, \f(CW\*(C`assume\*(C'\fR, \f(CW\*(C`ordered\*(C'\fR, \f(CW\*(C`scan\*(C'\fR
  and \f(CW\*(C`loop\*(C'\fR directive, and of combined or composite directives with
  \&\f(CW\*(C`simd\*(C'\fR as constituent with \f(CW\*(C`#pragma omp\*(C'\fR,
  \&\f(CW\*(C`[[omp::directive(...)]]\*(C'\fR, \f(CW\*(C`[[omp::sequence(...)]]\*(C'\fR and
! \&\f(CW\*(C`[[omp::decl(...)]]\*(C'\fR in C/\*(C+ and \f(CW\*(C`!$omp\*(C'\fR in Fortran.  It
  additionally enables the conditional compilation sentinel \fB!$\fR in
  Fortran.  In fixed source form Fortran, the sentinels can also start with
  \&\fBc\fR or \fB*\fR.  Other OpenMP directives are ignored.  Unless
  \&\fB\-fopenmp\fR is additionally specified, the \f(CW\*(C`loop\*(C'\fR region binds
  to the current task region, independent of the specified \f(CW\*(C`bind\*(C'\fR clause.
! .IP "\fB\-fopenmp\-target\-simd\-clone\fR" 4
  .IX Item "-fopenmp-target-simd-clone"
  .PD 0
! .IP "\fB\-fopenmp\-target\-simd\-clone=\fR\fIdevice-type\fR" 4
  .IX Item "-fopenmp-target-simd-clone=device-type"
  .PD
! In addition to generating \s-1SIMD\s0 clones for functions marked with the
! \&\f(CW\*(C`declare simd\*(C'\fR directive, \s-1GCC\s0 also generates clones
  for functions marked with the OpenMP \f(CW\*(C`declare target\*(C'\fR directive
  that are suitable for vectorization when this option is in effect.  The
! \&\fIdevice-type\fR may be one of \f(CW\*(C`none\*(C'\fR, \f(CW\*(C`host\*(C'\fR, \f(CW\*(C`nohost\*(C'\fR,
  and \f(CW\*(C`any\*(C'\fR, which correspond to keywords for the \f(CW\*(C`device_type\*(C'\fR
  clause of the \f(CW\*(C`declare target\*(C'\fR directive; clones are generated for
  the intersection of devices specified.
--- 4998,5027 ----
  This option implies \fB\-pthread\fR, and thus is only supported on
  targets that have support for \fB\-pthread\fR. \fB\-fopenmp\fR
  implies \fB\-fopenmp\-simd\fR.
! .IP \fB\-fopenmp\-simd\fR 4
  .IX Item "-fopenmp-simd"
! Enable handling of OpenMP\*(Aqs \f(CW\*(C`simd\*(C'\fR, \f(CW\*(C`declare simd\*(C'\fR,
  \&\f(CW\*(C`declare reduction\*(C'\fR, \f(CW\*(C`assume\*(C'\fR, \f(CW\*(C`ordered\*(C'\fR, \f(CW\*(C`scan\*(C'\fR
  and \f(CW\*(C`loop\*(C'\fR directive, and of combined or composite directives with
  \&\f(CW\*(C`simd\*(C'\fR as constituent with \f(CW\*(C`#pragma omp\*(C'\fR,
  \&\f(CW\*(C`[[omp::directive(...)]]\*(C'\fR, \f(CW\*(C`[[omp::sequence(...)]]\*(C'\fR and
! \&\f(CW\*(C`[[omp::decl(...)]]\*(C'\fR in C/C++ and \f(CW\*(C`!$omp\*(C'\fR in Fortran.  It
  additionally enables the conditional compilation sentinel \fB!$\fR in
  Fortran.  In fixed source form Fortran, the sentinels can also start with
  \&\fBc\fR or \fB*\fR.  Other OpenMP directives are ignored.  Unless
  \&\fB\-fopenmp\fR is additionally specified, the \f(CW\*(C`loop\*(C'\fR region binds
  to the current task region, independent of the specified \f(CW\*(C`bind\*(C'\fR clause.
! .IP \fB\-fopenmp\-target\-simd\-clone\fR 4
  .IX Item "-fopenmp-target-simd-clone"
  .PD 0
! .IP \fB\-fopenmp\-target\-simd\-clone=\fR\fIdevice\-type\fR 4
  .IX Item "-fopenmp-target-simd-clone=device-type"
  .PD
! In addition to generating SIMD clones for functions marked with the
! \&\f(CW\*(C`declare simd\*(C'\fR directive, GCC also generates clones
  for functions marked with the OpenMP \f(CW\*(C`declare target\*(C'\fR directive
  that are suitable for vectorization when this option is in effect.  The
! \&\fIdevice\-type\fR may be one of \f(CW\*(C`none\*(C'\fR, \f(CW\*(C`host\*(C'\fR, \f(CW\*(C`nohost\*(C'\fR,
  and \f(CW\*(C`any\*(C'\fR, which correspond to keywords for the \f(CW\*(C`device_type\*(C'\fR
  clause of the \f(CW\*(C`declare target\*(C'\fR directive; clones are generated for
  the intersection of devices specified.
*************** it is disabled by default.
*** 5103,5126 ****
  .SS "Options to Control Diagnostic Messages Formatting"
  .IX Subsection "Options to Control Diagnostic Messages Formatting"
  Traditionally, diagnostic messages have been formatted irrespective of
! the output device's aspect (e.g. its width, ...).  You can use the
  options described below
  to control the formatting algorithm for diagnostic messages,
  e.g. how many characters per line, how often source location
  information should be reported.  Note that some language front ends may not
  honor these options.
! .IP "\fB\-fmessage\-length=\fR\fIn\fR" 4
  .IX Item "-fmessage-length=n"
  Try to format error messages so that they fit on lines of about
! \&\fIn\fR characters.  If \fIn\fR is zero, then no line-wrapping is
  done; each error message appears on a single line.  This is the
  default for all front ends.
  .Sp
  Note \- this option also affects the display of the \fB#error\fR and
! \&\fB#warning\fR pre-processor directives, and the \fBdeprecated\fR
  function/type/variable attribute.  It does not however affect the
! \&\fBpragma \s-1GCC\s0 warning\fR and \fBpragma \s-1GCC\s0 error\fR pragmas.
! .IP "\fB\-fdiagnostics\-plain\-output\fR" 4
  .IX Item "-fdiagnostics-plain-output"
  This option requests that diagnostic output look as plain as possible, which
  may be useful when running \fBdejagnu\fR or other utilities that need to
--- 5036,5059 ----
  .SS "Options to Control Diagnostic Messages Formatting"
  .IX Subsection "Options to Control Diagnostic Messages Formatting"
  Traditionally, diagnostic messages have been formatted irrespective of
! the output device\*(Aqs aspect (e.g. its width, ...).  You can use the
  options described below
  to control the formatting algorithm for diagnostic messages,
  e.g. how many characters per line, how often source location
  information should be reported.  Note that some language front ends may not
  honor these options.
! .IP \fB\-fmessage\-length=\fR\fIn\fR 4
  .IX Item "-fmessage-length=n"
  Try to format error messages so that they fit on lines of about
! \&\fIn\fR characters.  If \fIn\fR is zero, then no line\-wrapping is
  done; each error message appears on a single line.  This is the
  default for all front ends.
  .Sp
  Note \- this option also affects the display of the \fB#error\fR and
! \&\fB#warning\fR pre\-processor directives, and the \fBdeprecated\fR
  function/type/variable attribute.  It does not however affect the
! \&\fBpragma GCC warning\fR and \fBpragma GCC error\fR pragmas.
! .IP \fB\-fdiagnostics\-plain\-output\fR 4
  .IX Item "-fdiagnostics-plain-output"
  This option requests that diagnostic output look as plain as possible, which
  may be useful when running \fBdejagnu\fR or other utilities that need to
*************** options:
*** 5134,5175 ****
  \&\-fdiagnostics\-path\-format=separate\-events
  \&\-fdiagnostics\-text\-art\-charset=none
  \&\-fno\-diagnostics\-show\-event\-links\fR
! In the future, if \s-1GCC\s0 changes the default appearance of its diagnostics, the
  corresponding option to disable the new behavior will be added to this list.
! .IP "\fB\-fdiagnostics\-show\-location=once\fR" 4
  .IX Item "-fdiagnostics-show-location=once"
! Only meaningful in line-wrapping mode.  Instructs the diagnostic messages
  reporter to emit source location information \fIonce\fR; that is, in
  case the message is too long to fit on a single physical line and has to
! be wrapped, the source location won't be emitted (as prefix) again,
  over and over, in subsequent continuation lines.  This is the default
  behavior.
! .IP "\fB\-fdiagnostics\-show\-location=every\-line\fR" 4
  .IX Item "-fdiagnostics-show-location=every-line"
! Only meaningful in line-wrapping mode.  Instructs the diagnostic
  messages reporter to emit the same source location information (as
  prefix) for physical lines that result from the process of breaking
  a message which is too long to fit on a single line.
! .IP "\fB\-fdiagnostics\-color[=\fR\fI\s-1WHEN\s0\fR\fB]\fR" 4
  .IX Item "-fdiagnostics-color[=WHEN]"
  .PD 0
! .IP "\fB\-fno\-diagnostics\-color\fR" 4
  .IX Item "-fno-diagnostics-color"
  .PD
! Use color in diagnostics.  \fI\s-1WHEN\s0\fR is \fBnever\fR, \fBalways\fR,
  or \fBauto\fR.  The default depends on how the compiler has been configured,
! it can be any of the above \fI\s-1WHEN\s0\fR options or also \fBnever\fR
! if \fB\s-1GCC_COLORS\s0\fR environment variable isn't present in the environment,
  and \fBauto\fR otherwise.
! \&\fBauto\fR makes \s-1GCC\s0 use color only when the standard error is a terminal,
  and when not executing in an emacs shell.
  The forms \fB\-fdiagnostics\-color\fR and \fB\-fno\-diagnostics\-color\fR are
  aliases for \fB\-fdiagnostics\-color=always\fR and
  \&\fB\-fdiagnostics\-color=never\fR, respectively.
  .Sp
! The colors are defined by the environment variable \fB\s-1GCC_COLORS\s0\fR.
! Its value is a colon-separated list of capabilities and Select Graphic
! Rendition (\s-1SGR\s0) substrings. \s-1SGR\s0 commands are interpreted by the
  terminal or terminal emulator.  (See the section in the documentation
  of your text terminal for permitted values and their meanings as
  character attributes.)  These substring values are integers in decimal
--- 5067,5108 ----
  \&\-fdiagnostics\-path\-format=separate\-events
  \&\-fdiagnostics\-text\-art\-charset=none
  \&\-fno\-diagnostics\-show\-event\-links\fR
! In the future, if GCC changes the default appearance of its diagnostics, the
  corresponding option to disable the new behavior will be added to this list.
! .IP \fB\-fdiagnostics\-show\-location=once\fR 4
  .IX Item "-fdiagnostics-show-location=once"
! Only meaningful in line\-wrapping mode.  Instructs the diagnostic messages
  reporter to emit source location information \fIonce\fR; that is, in
  case the message is too long to fit on a single physical line and has to
! be wrapped, the source location won\*(Aqt be emitted (as prefix) again,
  over and over, in subsequent continuation lines.  This is the default
  behavior.
! .IP \fB\-fdiagnostics\-show\-location=every\-line\fR 4
  .IX Item "-fdiagnostics-show-location=every-line"
! Only meaningful in line\-wrapping mode.  Instructs the diagnostic
  messages reporter to emit the same source location information (as
  prefix) for physical lines that result from the process of breaking
  a message which is too long to fit on a single line.
! .IP \fB\-fdiagnostics\-color[=\fR\fIWHEN\fR\fB]\fR 4
  .IX Item "-fdiagnostics-color[=WHEN]"
  .PD 0
! .IP \fB\-fno\-diagnostics\-color\fR 4
  .IX Item "-fno-diagnostics-color"
  .PD
! Use color in diagnostics.  \fIWHEN\fR is \fBnever\fR, \fBalways\fR,
  or \fBauto\fR.  The default depends on how the compiler has been configured,
! it can be any of the above \fIWHEN\fR options or also \fBnever\fR
! if \fBGCC_COLORS\fR environment variable isn\*(Aqt present in the environment,
  and \fBauto\fR otherwise.
! \&\fBauto\fR makes GCC use color only when the standard error is a terminal,
  and when not executing in an emacs shell.
  The forms \fB\-fdiagnostics\-color\fR and \fB\-fno\-diagnostics\-color\fR are
  aliases for \fB\-fdiagnostics\-color=always\fR and
  \&\fB\-fdiagnostics\-color=never\fR, respectively.
  .Sp
! The colors are defined by the environment variable \fBGCC_COLORS\fR.
! Its value is a colon\-separated list of capabilities and Select Graphic
! Rendition (SGR) substrings. SGR commands are interpreted by the
  terminal or terminal emulator.  (See the section in the documentation
  of your text terminal for permitted values and their meanings as
  character attributes.)  These substring values are integers in decimal
*************** for 88\-color and 256\-color modes foreg
*** 5190,5196 ****
  and \fB48;5;0\fR to \fB48;5;255\fR
  for 88\-color and 256\-color modes background colors.
  .Sp
! The default \fB\s-1GCC_COLORS\s0\fR is
  .Sp
  .Vb 5
  \&        error=01;31:warning=01;35:note=01;36:range1=32:range2=34:locus=01:\e
--- 5123,5129 ----
  and \fB48;5;0\fR to \fB48;5;255\fR
  for 88\-color and 256\-color modes background colors.
  .Sp
! The default \fBGCC_COLORS\fR is
  .Sp
  .Vb 5
  \&        error=01;31:warning=01;35:note=01;36:range1=32:range2=34:locus=01:\e
*************** The default \fB\s-1GCC_COLORS\s0\fR is
*** 5203,5362 ****
  where \fB01;31\fR is bold red, \fB01;35\fR is bold magenta,
  \&\fB01;36\fR is bold cyan, \fB32\fR is green, \fB34\fR is blue,
  \&\fB01\fR is bold, and \fB31\fR is red.
! Setting \fB\s-1GCC_COLORS\s0\fR to the empty string disables colors.
  Supported capabilities are as follows.
  .RS 4
  .ie n .IP """error=""" 4
! .el .IP "\f(CWerror=\fR" 4
  .IX Item "error="
! \&\s-1SGR\s0 substring for error: markers.
  .ie n .IP """warning=""" 4
! .el .IP "\f(CWwarning=\fR" 4
  .IX Item "warning="
! \&\s-1SGR\s0 substring for warning: markers.
  .ie n .IP """note=""" 4
! .el .IP "\f(CWnote=\fR" 4
  .IX Item "note="
! \&\s-1SGR\s0 substring for note: markers.
  .ie n .IP """path=""" 4
! .el .IP "\f(CWpath=\fR" 4
  .IX Item "path="
! \&\s-1SGR\s0 substring for colorizing paths of control-flow events as printed
  via \fB\-fdiagnostics\-path\-format=\fR, such as the identifiers of
  individual events and lines indicating interprocedural calls and returns.
  .ie n .IP """range1=""" 4
! .el .IP "\f(CWrange1=\fR" 4
  .IX Item "range1="
! \&\s-1SGR\s0 substring for first additional range.
  .ie n .IP """range2=""" 4
! .el .IP "\f(CWrange2=\fR" 4
  .IX Item "range2="
! \&\s-1SGR\s0 substring for second additional range.
  .ie n .IP """locus=""" 4
! .el .IP "\f(CWlocus=\fR" 4
  .IX Item "locus="
! \&\s-1SGR\s0 substring for location information, \fBfile:line\fR or
  \&\fBfile:line:column\fR etc.
  .ie n .IP """quote=""" 4
! .el .IP "\f(CWquote=\fR" 4
  .IX Item "quote="
! \&\s-1SGR\s0 substring for information printed within quotes.
  .ie n .IP """fnname=""" 4
! .el .IP "\f(CWfnname=\fR" 4
  .IX Item "fnname="
! \&\s-1SGR\s0 substring for names of \*(C+ functions.
  .ie n .IP """targs=""" 4
! .el .IP "\f(CWtargs=\fR" 4
  .IX Item "targs="
! \&\s-1SGR\s0 substring for \*(C+ function template parameter bindings.
  .ie n .IP """fixit\-insert=""" 4
! .el .IP "\f(CWfixit\-insert=\fR" 4
  .IX Item "fixit-insert="
! \&\s-1SGR\s0 substring for fix-it hints suggesting text to
  be inserted or replaced.
  .ie n .IP """fixit\-delete=""" 4
! .el .IP "\f(CWfixit\-delete=\fR" 4
  .IX Item "fixit-delete="
! \&\s-1SGR\s0 substring for fix-it hints suggesting text to
  be deleted.
  .ie n .IP """diff\-filename=""" 4
! .el .IP "\f(CWdiff\-filename=\fR" 4
  .IX Item "diff-filename="
! \&\s-1SGR\s0 substring for filename headers within generated patches.
  .ie n .IP """diff\-hunk=""" 4
! .el .IP "\f(CWdiff\-hunk=\fR" 4
  .IX Item "diff-hunk="
! \&\s-1SGR\s0 substring for the starts of hunks within generated patches.
  .ie n .IP """diff\-delete=""" 4
! .el .IP "\f(CWdiff\-delete=\fR" 4
  .IX Item "diff-delete="
! \&\s-1SGR\s0 substring for deleted lines within generated patches.
  .ie n .IP """diff\-insert=""" 4
! .el .IP "\f(CWdiff\-insert=\fR" 4
  .IX Item "diff-insert="
! \&\s-1SGR\s0 substring for inserted lines within generated patches.
  .ie n .IP """type\-diff=""" 4
! .el .IP "\f(CWtype\-diff=\fR" 4
  .IX Item "type-diff="
! \&\s-1SGR\s0 substring for highlighting mismatching types within template
! arguments in the \*(C+ frontend.
  .ie n .IP """valid=""" 4
! .el .IP "\f(CWvalid=\fR" 4
  .IX Item "valid="
! \&\s-1SGR\s0 substring for highlighting valid elements within text art diagrams.
  .ie n .IP """invalid=""" 4
! .el .IP "\f(CWinvalid=\fR" 4
  .IX Item "invalid="
! \&\s-1SGR\s0 substring for highlighting invalid elements within text art diagrams.
  .ie n .IP """highlight\-a=""" 4
! .el .IP "\f(CWhighlight\-a=\fR" 4
  .IX Item "highlight-a="
  .PD 0
  .ie n .IP """highlight\-b=""" 4
! .el .IP "\f(CWhighlight\-b=\fR" 4
  .IX Item "highlight-b="
  .PD
! \&\s-1SGR\s0 substrings for contrasting two different things within diagnostics,
  such as a pair of mismatching types.
  See \fB\-fdiagnostics\-show\-highlight\-colors\fR.
  .RE
  .RS 4
  .RE
! .IP "\fB\-fdiagnostics\-urls[=\fR\fI\s-1WHEN\s0\fR\fB]\fR" 4
  .IX Item "-fdiagnostics-urls[=WHEN]"
  Use escape sequences to embed URLs in diagnostics.  For example, when
! \&\fB\-fdiagnostics\-show\-option\fR emits text showing the command-line
! option controlling a diagnostic, embed a \s-1URL\s0 for documentation of that
  option.
  .Sp
! \&\fI\s-1WHEN\s0\fR is \fBnever\fR, \fBalways\fR, or \fBauto\fR.
! \&\fBauto\fR makes \s-1GCC\s0 use \s-1URL\s0 escape sequences only when the standard error
  is a terminal, and when not executing in an emacs shell or any graphical
  terminal which is known to be incompatible with this feature, see below.
  .Sp
  The default depends on how the compiler has been configured.
! It can be any of the above \fI\s-1WHEN\s0\fR options.
  .Sp
! \&\s-1GCC\s0 can also be configured (via the
! \&\fB\-\-with\-diagnostics\-urls=auto\-if\-env\fR configure-time option)
  so that the default is affected by environment variables.
! Under such a configuration, \s-1GCC\s0 defaults to using \fBauto\fR
! if either \fB\s-1GCC_URLS\s0\fR or \fB\s-1TERM_URLS\s0\fR environment variables are
! present and non-empty in the environment of the compiler, or \fBnever\fR
  if neither are.
  .Sp
  However, even with \fB\-fdiagnostics\-urls=always\fR the behavior is
  dependent on those environment variables:
! If \fB\s-1GCC_URLS\s0\fR is set to empty or \fBno\fR, do not embed URLs in
! diagnostics.  If set to \fBst\fR, URLs use \s-1ST\s0 escape sequences.
! If set to \fBbel\fR, the default, URLs use \s-1BEL\s0 escape sequences.
! Any other non-empty value enables the feature.
! If \fB\s-1GCC_URLS\s0\fR is not set, use \fB\s-1TERM_URLS\s0\fR as a fallback.
! Note: \s-1ST\s0 is an \s-1ANSI\s0 escape sequence, string terminator \fB\s-1ESC\s0 \e\fR,
! \&\s-1BEL\s0 is an \s-1ASCII\s0 character, CTRL-G that usually sounds like a beep.
  .Sp
! At this time \s-1GCC\s0 tries to detect also a few terminals that are known to
! not implement the \s-1URL\s0 feature, and have bugs or at least had bugs in
! some versions that are still in use, where the \s-1URL\s0 escapes are likely
  to misbehave, i.e. print garbage on the screen.
  That list is currently xfce4\-terminal, certain known to be buggy
! gnome-terminal versions, the linux console, and mingw.
  This check can be skipped with the \fB\-fdiagnostics\-urls=always\fR.
! .IP "\fB\-fno\-diagnostics\-show\-option\fR" 4
  .IX Item "-fno-diagnostics-show-option"
  By default, each diagnostic emitted includes text indicating the
! command-line option that directly controls the diagnostic (if such an
  option is known to the diagnostic machinery).  Specifying the
  \&\fB\-fno\-diagnostics\-show\-option\fR flag suppresses that behavior.
! .IP "\fB\-fno\-diagnostics\-show\-caret\fR" 4
  .IX Item "-fno-diagnostics-show-caret"
  By default, each diagnostic emitted includes the original source line
  and a caret \fB^\fR indicating the column.  This option suppresses this
  information.  The source line is truncated to \fIn\fR characters, if
  the \fB\-fmessage\-length=n\fR option is given.  When the output is done
  to the terminal, the width is limited to the width given by the
! \&\fB\s-1COLUMNS\s0\fR environment variable or, if not set, to the terminal width.
! .IP "\fB\-fno\-diagnostics\-show\-labels\fR" 4
  .IX Item "-fno-diagnostics-show-labels"
  By default, when printing source code (via \fB\-fdiagnostics\-show\-caret\fR),
  diagnostics can label ranges of source code with pertinent information, such
--- 5136,5295 ----
  where \fB01;31\fR is bold red, \fB01;35\fR is bold magenta,
  \&\fB01;36\fR is bold cyan, \fB32\fR is green, \fB34\fR is blue,
  \&\fB01\fR is bold, and \fB31\fR is red.
! Setting \fBGCC_COLORS\fR to the empty string disables colors.
  Supported capabilities are as follows.
  .RS 4
  .ie n .IP """error=""" 4
! .el .IP \f(CWerror=\fR 4
  .IX Item "error="
! SGR substring for error: markers.
  .ie n .IP """warning=""" 4
! .el .IP \f(CWwarning=\fR 4
  .IX Item "warning="
! SGR substring for warning: markers.
  .ie n .IP """note=""" 4
! .el .IP \f(CWnote=\fR 4
  .IX Item "note="
! SGR substring for note: markers.
  .ie n .IP """path=""" 4
! .el .IP \f(CWpath=\fR 4
  .IX Item "path="
! SGR substring for colorizing paths of control\-flow events as printed
  via \fB\-fdiagnostics\-path\-format=\fR, such as the identifiers of
  individual events and lines indicating interprocedural calls and returns.
  .ie n .IP """range1=""" 4
! .el .IP \f(CWrange1=\fR 4
  .IX Item "range1="
! SGR substring for first additional range.
  .ie n .IP """range2=""" 4
! .el .IP \f(CWrange2=\fR 4
  .IX Item "range2="
! SGR substring for second additional range.
  .ie n .IP """locus=""" 4
! .el .IP \f(CWlocus=\fR 4
  .IX Item "locus="
! SGR substring for location information, \fBfile:line\fR or
  \&\fBfile:line:column\fR etc.
  .ie n .IP """quote=""" 4
! .el .IP \f(CWquote=\fR 4
  .IX Item "quote="
! SGR substring for information printed within quotes.
  .ie n .IP """fnname=""" 4
! .el .IP \f(CWfnname=\fR 4
  .IX Item "fnname="
! SGR substring for names of C++ functions.
  .ie n .IP """targs=""" 4
! .el .IP \f(CWtargs=\fR 4
  .IX Item "targs="
! SGR substring for C++ function template parameter bindings.
  .ie n .IP """fixit\-insert=""" 4
! .el .IP \f(CWfixit\-insert=\fR 4
  .IX Item "fixit-insert="
! SGR substring for fix\-it hints suggesting text to
  be inserted or replaced.
  .ie n .IP """fixit\-delete=""" 4
! .el .IP \f(CWfixit\-delete=\fR 4
  .IX Item "fixit-delete="
! SGR substring for fix\-it hints suggesting text to
  be deleted.
  .ie n .IP """diff\-filename=""" 4
! .el .IP \f(CWdiff\-filename=\fR 4
  .IX Item "diff-filename="
! SGR substring for filename headers within generated patches.
  .ie n .IP """diff\-hunk=""" 4
! .el .IP \f(CWdiff\-hunk=\fR 4
  .IX Item "diff-hunk="
! SGR substring for the starts of hunks within generated patches.
  .ie n .IP """diff\-delete=""" 4
! .el .IP \f(CWdiff\-delete=\fR 4
  .IX Item "diff-delete="
! SGR substring for deleted lines within generated patches.
  .ie n .IP """diff\-insert=""" 4
! .el .IP \f(CWdiff\-insert=\fR 4
  .IX Item "diff-insert="
! SGR substring for inserted lines within generated patches.
  .ie n .IP """type\-diff=""" 4
! .el .IP \f(CWtype\-diff=\fR 4
  .IX Item "type-diff="
! SGR substring for highlighting mismatching types within template
! arguments in the C++ frontend.
  .ie n .IP """valid=""" 4
! .el .IP \f(CWvalid=\fR 4
  .IX Item "valid="
! SGR substring for highlighting valid elements within text art diagrams.
  .ie n .IP """invalid=""" 4
! .el .IP \f(CWinvalid=\fR 4
  .IX Item "invalid="
! SGR substring for highlighting invalid elements within text art diagrams.
  .ie n .IP """highlight\-a=""" 4
! .el .IP \f(CWhighlight\-a=\fR 4
  .IX Item "highlight-a="
  .PD 0
  .ie n .IP """highlight\-b=""" 4
! .el .IP \f(CWhighlight\-b=\fR 4
  .IX Item "highlight-b="
  .PD
! SGR substrings for contrasting two different things within diagnostics,
  such as a pair of mismatching types.
  See \fB\-fdiagnostics\-show\-highlight\-colors\fR.
  .RE
  .RS 4
  .RE
! .IP \fB\-fdiagnostics\-urls[=\fR\fIWHEN\fR\fB]\fR 4
  .IX Item "-fdiagnostics-urls[=WHEN]"
  Use escape sequences to embed URLs in diagnostics.  For example, when
! \&\fB\-fdiagnostics\-show\-option\fR emits text showing the command\-line
! option controlling a diagnostic, embed a URL for documentation of that
  option.
  .Sp
! \&\fIWHEN\fR is \fBnever\fR, \fBalways\fR, or \fBauto\fR.
! \&\fBauto\fR makes GCC use URL escape sequences only when the standard error
  is a terminal, and when not executing in an emacs shell or any graphical
  terminal which is known to be incompatible with this feature, see below.
  .Sp
  The default depends on how the compiler has been configured.
! It can be any of the above \fIWHEN\fR options.
  .Sp
! GCC can also be configured (via the
! \&\fB\-\-with\-diagnostics\-urls=auto\-if\-env\fR configure\-time option)
  so that the default is affected by environment variables.
! Under such a configuration, GCC defaults to using \fBauto\fR
! if either \fBGCC_URLS\fR or \fBTERM_URLS\fR environment variables are
! present and non\-empty in the environment of the compiler, or \fBnever\fR
  if neither are.
  .Sp
  However, even with \fB\-fdiagnostics\-urls=always\fR the behavior is
  dependent on those environment variables:
! If \fBGCC_URLS\fR is set to empty or \fBno\fR, do not embed URLs in
! diagnostics.  If set to \fBst\fR, URLs use ST escape sequences.
! If set to \fBbel\fR, the default, URLs use BEL escape sequences.
! Any other non\-empty value enables the feature.
! If \fBGCC_URLS\fR is not set, use \fBTERM_URLS\fR as a fallback.
! Note: ST is an ANSI escape sequence, string terminator \fBESC \e\fR,
! BEL is an ASCII character, CTRL\-G that usually sounds like a beep.
  .Sp
! At this time GCC tries to detect also a few terminals that are known to
! not implement the URL feature, and have bugs or at least had bugs in
! some versions that are still in use, where the URL escapes are likely
  to misbehave, i.e. print garbage on the screen.
  That list is currently xfce4\-terminal, certain known to be buggy
! gnome\-terminal versions, the linux console, and mingw.
  This check can be skipped with the \fB\-fdiagnostics\-urls=always\fR.
! .IP \fB\-fno\-diagnostics\-show\-option\fR 4
  .IX Item "-fno-diagnostics-show-option"
  By default, each diagnostic emitted includes text indicating the
! command\-line option that directly controls the diagnostic (if such an
  option is known to the diagnostic machinery).  Specifying the
  \&\fB\-fno\-diagnostics\-show\-option\fR flag suppresses that behavior.
! .IP \fB\-fno\-diagnostics\-show\-caret\fR 4
  .IX Item "-fno-diagnostics-show-caret"
  By default, each diagnostic emitted includes the original source line
  and a caret \fB^\fR indicating the column.  This option suppresses this
  information.  The source line is truncated to \fIn\fR characters, if
  the \fB\-fmessage\-length=n\fR option is given.  When the output is done
  to the terminal, the width is limited to the width given by the
! \&\fBCOLUMNS\fR environment variable or, if not set, to the terminal width.
! .IP \fB\-fno\-diagnostics\-show\-labels\fR 4
  .IX Item "-fno-diagnostics-show-labels"
  By default, when printing source code (via \fB\-fdiagnostics\-show\-caret\fR),
  diagnostics can label ranges of source code with pertinent information, such
*************** as the types of expressions:
*** 5370,5380 ****
  .Ve
  .Sp
  This option suppresses the printing of these labels (in the example above,
! the vertical bars and the \*(L"char *\*(R" and \*(L"long int\*(R" text).
! .IP "\fB\-fno\-diagnostics\-show\-event\-links\fR" 4
  .IX Item "-fno-diagnostics-show-event-links"
  By default, when printing execution paths (via
! \&\fB\-fdiagnostics\-path\-format=inline\-events\fR), \s-1GCC\s0 will print lines
  connecting related events, such as the line connecting events 1 and 2 in:
  .Sp
  .Vb 10
--- 5303,5313 ----
  .Ve
  .Sp
  This option suppresses the printing of these labels (in the example above,
! the vertical bars and the "char *" and "long int" text).
! .IP \fB\-fno\-diagnostics\-show\-event\-links\fR 4
  .IX Item "-fno-diagnostics-show-event-links"
  By default, when printing execution paths (via
! \&\fB\-fdiagnostics\-path\-format=inline\-events\fR), GCC will print lines
  connecting related events, such as the line connecting events 1 and 2 in:
  .Sp
  .Vb 10
*************** connecting related events, such as the l
*** 5394,5418 ****
  .Ve
  .Sp
  This option suppresses the printing of such connector lines.
! .IP "\fB\-fno\-diagnostics\-show\-cwe\fR" 4
  .IX Item "-fno-diagnostics-show-cwe"
  Diagnostic messages can optionally have an associated
!  \s-1CWE\s0 (\f(CW\*(C`https://cwe.mitre.org/index.html\*(C'\fR) identifier.
! \&\s-1GCC\s0 itself only provides such metadata for some of the \fB\-fanalyzer\fR
! diagnostics.  \s-1GCC\s0 plugins may also provide diagnostics with such metadata.
  By default, if this information is present, it will be printed with
  the diagnostic.  This option suppresses the printing of this metadata.
! .IP "\fB\-fno\-diagnostics\-show\-rules\fR" 4
  .IX Item "-fno-diagnostics-show-rules"
  Diagnostic messages can optionally have rules associated with them, such
  as from a coding standard, or a specification.
! \&\s-1GCC\s0 itself does not do this for any of its diagnostics, but plugins may do so.
  By default, if this information is present, it will be printed with
  the diagnostic.  This option suppresses the printing of this metadata.
! .IP "\fB\-fno\-diagnostics\-show\-highlight\-colors\fR" 4
  .IX Item "-fno-diagnostics-show-highlight-colors"
! \&\s-1GCC\s0 can use color for emphasis and contrast when printing diagnostic
! messages and quoting the user's source.
  .Sp
  For example, in
  .Sp
--- 5327,5351 ----
  .Ve
  .Sp
  This option suppresses the printing of such connector lines.
! .IP \fB\-fno\-diagnostics\-show\-cwe\fR 4
  .IX Item "-fno-diagnostics-show-cwe"
  Diagnostic messages can optionally have an associated
!  CWE (\f(CW\*(C`https://cwe.mitre.org/index.html\*(C'\fR) identifier.
! GCC itself only provides such metadata for some of the \fB\-fanalyzer\fR
! diagnostics.  GCC plugins may also provide diagnostics with such metadata.
  By default, if this information is present, it will be printed with
  the diagnostic.  This option suppresses the printing of this metadata.
! .IP \fB\-fno\-diagnostics\-show\-rules\fR 4
  .IX Item "-fno-diagnostics-show-rules"
  Diagnostic messages can optionally have rules associated with them, such
  as from a coding standard, or a specification.
! GCC itself does not do this for any of its diagnostics, but plugins may do so.
  By default, if this information is present, it will be printed with
  the diagnostic.  This option suppresses the printing of this metadata.
! .IP \fB\-fno\-diagnostics\-show\-highlight\-colors\fR 4
  .IX Item "-fno-diagnostics-show-highlight-colors"
! GCC can use color for emphasis and contrast when printing diagnostic
! messages and quoting the user\*(Aqs source.
  .Sp
  For example, in
  .Sp
*************** For example, in
*** 5426,5442 ****
  \&              |                 %s
  .Ve
  .RS 4
! .IP "*" 4
  the \f(CW%i\fR and \f(CW\*(C`int\*(C'\fR in the message and the \f(CW\*(C`int\*(C'\fR in the
  quoted source are colored using \f(CW\*(C`highlight\-a\*(C'\fR (bold green by default),
  and
! .IP "*" 4
  the \f(CW\*(C`const char *\*(C'\fR in the message and in the quoted source are both
  colored using \f(CW\*(C`highlight\-b\*(C'\fR (bold blue by default).
  .RE
  .RS 4
  .Sp
! The intent is to draw the reader's eyes to the relationships between the
  various aspects of the diagnostic message and the source, using color
  to group related elements and distinguish between mismatching ones.
  .Sp
--- 5359,5375 ----
  \&              |                 %s
  .Ve
  .RS 4
! .IP * 4
  the \f(CW%i\fR and \f(CW\*(C`int\*(C'\fR in the message and the \f(CW\*(C`int\*(C'\fR in the
  quoted source are colored using \f(CW\*(C`highlight\-a\*(C'\fR (bold green by default),
  and
! .IP * 4
  the \f(CW\*(C`const char *\*(C'\fR in the message and in the quoted source are both
  colored using \f(CW\*(C`highlight\-b\*(C'\fR (bold blue by default).
  .RE
  .RS 4
  .Sp
! The intent is to draw the reader\*(Aqs eyes to the relationships between the
  various aspects of the diagnostic message and the source, using color
  to group related elements and distinguish between mismatching ones.
  .Sp
*************** This additional colorization is enabled
*** 5444,5471 ****
  is enabled (as per \fB\-fdiagnostics\-color=\fR), but it can be separately
  disabled via \fB\-fno\-diagnostics\-show\-highlight\-colors\fR.
  .RE
! .IP "\fB\-fno\-diagnostics\-show\-line\-numbers\fR" 4
  .IX Item "-fno-diagnostics-show-line-numbers"
  By default, when printing source code (via \fB\-fdiagnostics\-show\-caret\fR),
  a left margin is printed, showing line numbers.  This option suppresses this
  left margin.
! .IP "\fB\-fdiagnostics\-minimum\-margin\-width=\fR\fIwidth\fR" 4
  .IX Item "-fdiagnostics-minimum-margin-width=width"
  This option controls the minimum width of the left margin printed by
  \&\fB\-fdiagnostics\-show\-line\-numbers\fR.  It defaults to 6.
! .IP "\fB\-fdiagnostics\-parseable\-fixits\fR" 4
  .IX Item "-fdiagnostics-parseable-fixits"
! Emit fix-it hints in a machine-parseable format, suitable for consumption
! by IDEs.  For each fix-it, a line will be printed after the relevant
! diagnostic, starting with the string \*(L"fix-it:\*(R".  For example:
  .Sp
  .Vb 1
  \&        fix\-it:"test.c":{45:3\-45:21}:"gtk_widget_show_all"
  .Ve
  .Sp
! The location is expressed as a half-open range, expressed as a count of
  bytes, starting at byte 1 for the initial column.  In the above example,
! bytes 3 through 20 of line 45 of \*(L"test.c\*(R" are to be replaced with the
  given string:
  .Sp
  .Vb 5
--- 5377,5404 ----
  is enabled (as per \fB\-fdiagnostics\-color=\fR), but it can be separately
  disabled via \fB\-fno\-diagnostics\-show\-highlight\-colors\fR.
  .RE
! .IP \fB\-fno\-diagnostics\-show\-line\-numbers\fR 4
  .IX Item "-fno-diagnostics-show-line-numbers"
  By default, when printing source code (via \fB\-fdiagnostics\-show\-caret\fR),
  a left margin is printed, showing line numbers.  This option suppresses this
  left margin.
! .IP \fB\-fdiagnostics\-minimum\-margin\-width=\fR\fIwidth\fR 4
  .IX Item "-fdiagnostics-minimum-margin-width=width"
  This option controls the minimum width of the left margin printed by
  \&\fB\-fdiagnostics\-show\-line\-numbers\fR.  It defaults to 6.
! .IP \fB\-fdiagnostics\-parseable\-fixits\fR 4
  .IX Item "-fdiagnostics-parseable-fixits"
! Emit fix\-it hints in a machine\-parseable format, suitable for consumption
! by IDEs.  For each fix\-it, a line will be printed after the relevant
! diagnostic, starting with the string "fix\-it:".  For example:
  .Sp
  .Vb 1
  \&        fix\-it:"test.c":{45:3\-45:21}:"gtk_widget_show_all"
  .Ve
  .Sp
! The location is expressed as a half\-open range, expressed as a count of
  bytes, starting at byte 1 for the initial column.  In the above example,
! bytes 3 through 20 of line 45 of "test.c" are to be replaced with the
  given string:
  .Sp
  .Vb 5
*************** given string:
*** 5476,5491 ****
  \&          gtk_widget_show_all
  .Ve
  .Sp
! The filename and replacement string escape backslash as \*(L"\e\e\*(R", tab as \*(L"\et\*(R",
! newline as \*(L"\en\*(R", double quotes as \*(L"\e\*(R"\*(L", non-printable characters as octal
! (e.g. vertical tab as \*(R"\e013").
  .Sp
  An empty replacement string indicates that the given range is to be removed.
! An empty range (e.g. \*(L"45:3\-45:3\*(R") indicates that the string is to
  be inserted at the given position.
! .IP "\fB\-fdiagnostics\-generate\-patch\fR" 4
  .IX Item "-fdiagnostics-generate-patch"
! Print fix-it hints to stderr in unified diff format, after any diagnostics
  are printed.  For example:
  .Sp
  .Vb 3
--- 5409,5424 ----
  \&          gtk_widget_show_all
  .Ve
  .Sp
! The filename and replacement string escape backslash as "\e\e", tab as "\et",
! newline as "\en", double quotes as "\e"", non\-printable characters as octal
! (e.g. vertical tab as "\e013").
  .Sp
  An empty replacement string indicates that the given range is to be removed.
! An empty range (e.g. "45:3\-45:3") indicates that the string is to
  be inserted at the given position.
! .IP \fB\-fdiagnostics\-generate\-patch\fR 4
  .IX Item "-fdiagnostics-generate-patch"
! Print fix\-it hints to stderr in unified diff format, after any diagnostics
  are printed.  For example:
  .Sp
  .Vb 3
*************** are printed.  For example:
*** 5502,5510 ****
  .Sp
  The diff may or may not be colorized, following the same rules
  as for diagnostics (see \fB\-fdiagnostics\-color\fR).
! .IP "\fB\-fdiagnostics\-show\-template\-tree\fR" 4
  .IX Item "-fdiagnostics-show-template-tree"
! In the \*(C+ frontend, when printing diagnostics showing mismatching
  template types, such as:
  .Sp
  .Vb 2
--- 5435,5443 ----
  .Sp
  The diff may or may not be colorized, following the same rules
  as for diagnostics (see \fB\-fdiagnostics\-color\fR).
! .IP \fB\-fdiagnostics\-show\-template\-tree\fR 4
  .IX Item "-fdiagnostics-show-template-tree"
! In the C++ frontend, when printing diagnostics showing mismatching
  template types, such as:
  .Sp
  .Vb 2
*************** template types, such as:
*** 5513,5519 ****
  .Ve
  .Sp
  the \fB\-fdiagnostics\-show\-template\-tree\fR flag enables printing a
! tree-like structure showing the common and differing parts of the types,
  such as:
  .Sp
  .Vb 4
--- 5446,5452 ----
  .Ve
  .Sp
  the \fB\-fdiagnostics\-show\-template\-tree\fR flag enables printing a
! tree\-like structure showing the common and differing parts of the types,
  such as:
  .Sp
  .Vb 4
*************** such as:
*** 5523,5534 ****
  \&              [double != float]>>
  .Ve
  .Sp
! The parts that differ are highlighted with color (\*(L"double\*(R" and
! \&\*(L"float\*(R" in this case).
! .IP "\fB\-fno\-elide\-type\fR" 4
  .IX Item "-fno-elide-type"
! By default when the \*(C+ frontend prints diagnostics showing mismatching
! template types, common parts of the types are printed as \*(L"[...]\*(R" to
  simplify the error message.  For example:
  .Sp
  .Vb 2
--- 5456,5467 ----
  \&              [double != float]>>
  .Ve
  .Sp
! The parts that differ are highlighted with color ("double" and
! "float" in this case).
! .IP \fB\-fno\-elide\-type\fR 4
  .IX Item "-fno-elide-type"
! By default when the C++ frontend prints diagnostics showing mismatching
! template types, common parts of the types are printed as "[...]" to
  simplify the error message.  For example:
  .Sp
  .Vb 2
*************** simplify the error message.  For example
*** 5539,5555 ****
  Specifying the \fB\-fno\-elide\-type\fR flag suppresses that behavior.
  This flag also affects the output of the
  \&\fB\-fdiagnostics\-show\-template\-tree\fR flag.
! .IP "\fB\-fdiagnostics\-path\-format=\fR\fI\s-1KIND\s0\fR" 4
  .IX Item "-fdiagnostics-path-format=KIND"
! Specify how to print paths of control-flow events for diagnostics that
  have such a path associated with them.
  .Sp
! \&\fI\s-1KIND\s0\fR is \fBnone\fR, \fBseparate-events\fR, or \fBinline-events\fR,
  the default.
  .Sp
  \&\fBnone\fR means to not print diagnostic paths.
  .Sp
! \&\fBseparate-events\fR means to print a separate \*(L"note\*(R" diagnostic for
  each event within the diagnostic.  For example:
  .Sp
  .Vb 4
--- 5472,5488 ----
  Specifying the \fB\-fno\-elide\-type\fR flag suppresses that behavior.
  This flag also affects the output of the
  \&\fB\-fdiagnostics\-show\-template\-tree\fR flag.
! .IP \fB\-fdiagnostics\-path\-format=\fR\fIKIND\fR 4
  .IX Item "-fdiagnostics-path-format=KIND"
! Specify how to print paths of control\-flow events for diagnostics that
  have such a path associated with them.
  .Sp
! \&\fIKIND\fR is \fBnone\fR, \fBseparate\-events\fR, or \fBinline\-events\fR,
  the default.
  .Sp
  \&\fBnone\fR means to not print diagnostic paths.
  .Sp
! \&\fBseparate\-events\fR means to print a separate "note" diagnostic for
  each event within the diagnostic.  For example:
  .Sp
  .Vb 4
*************** each event within the diagnostic.  For e
*** 5559,5567 ****
  \&        test.c:29:5: note: (3) when calling \*(AqPyList_Append\*(Aq, passing NULL from (1) as argument 1
  .Ve
  .Sp
! \&\fBinline-events\fR means to print the events \*(L"inline\*(R" within the source
  code.  This view attempts to consolidate the events into runs of
! sufficiently-close events, printing them as labelled ranges within the source.
  .Sp
  For example, the same events as above might be printed as:
  .Sp
--- 5492,5500 ----
  \&        test.c:29:5: note: (3) when calling \*(AqPyList_Append\*(Aq, passing NULL from (1) as argument 1
  .Ve
  .Sp
! \&\fBinline\-events\fR means to print the events "inline" within the source
  code.  This view attempts to consolidate the events into runs of
! sufficiently\-close events, printing them as labelled ranges within the source.
  .Sp
  For example, the same events as above might be printed as:
  .Sp
*************** For example:
*** 5633,5641 ****
  \&            |
  \&        (etc)
  .Ve
! .IP "\fB\-fdiagnostics\-show\-path\-depths\fR" 4
  .IX Item "-fdiagnostics-show-path-depths"
! This option provides additional information when printing control-flow paths
  associated with a diagnostic.
  .Sp
  If this is option is provided then the stack depth will be printed for
--- 5566,5574 ----
  \&            |
  \&        (etc)
  .Ve
! .IP \fB\-fdiagnostics\-show\-path\-depths\fR 4
  .IX Item "-fdiagnostics-show-path-depths"
! This option provides additional information when printing control\-flow paths
  associated with a diagnostic.
  .Sp
  If this is option is provided then the stack depth will be printed for
*************** If provided with \fB\-fdiagnostics\-path
*** 5644,5758 ****
  the stack depth and function declaration will be appended when printing
  each event.
  .Sp
! This is intended for use by \s-1GCC\s0 developers and plugin developers when
  debugging diagnostics that report interprocedural control flow.
! .IP "\fB\-fno\-show\-column\fR" 4
  .IX Item "-fno-show-column"
  Do not print column numbers in diagnostics.  This may be necessary if
  diagnostics are being scanned by a program that does not understand the
  column numbers, such as \fBdejagnu\fR.
! .IP "\fB\-fdiagnostics\-column\-unit=\fR\fI\s-1UNIT\s0\fR" 4
  .IX Item "-fdiagnostics-column-unit=UNIT"
  Select the units for the column number.  This affects traditional diagnostics
! (in the absence of \fB\-fno\-show\-column\fR), as well as \s-1JSON\s0 format
  diagnostics if requested.
  .Sp
! The default \fI\s-1UNIT\s0\fR, \fBdisplay\fR, considers the number of display
  columns occupied by each character.  This may be larger than the number
  of bytes required to encode the character, in the case of tab
  characters, or it may be smaller, in the case of multibyte characters.
! For example, the character \*(L"\s-1GREEK SMALL LETTER PI\s0 (U+03C0)\*(R" occupies one
! display column, and its \s-1UTF\-8\s0 encoding requires two bytes; the character
! \&\*(L"\s-1SLIGHTLY SMILING FACE\s0 (U+1F642)\*(R" occupies two display columns, and
! its \s-1UTF\-8\s0 encoding requires four bytes.
  .Sp
! Setting \fI\s-1UNIT\s0\fR to \fBbyte\fR changes the column number to the raw byte
! count in all cases, as was traditionally output by \s-1GCC\s0 prior to version 11.1.0.
! .IP "\fB\-fdiagnostics\-column\-origin=\fR\fI\s-1ORIGIN\s0\fR" 4
  .IX Item "-fdiagnostics-column-origin=ORIGIN"
  Select the origin for column numbers, i.e. the column number assigned to the
! first column.  The default value of 1 corresponds to traditional \s-1GCC\s0
! behavior and to the \s-1GNU\s0 style guide.  Some utilities may perform better with an
! origin of 0; any non-negative value may be specified.
! .IP "\fB\-fdiagnostics\-escape\-format=\fR\fI\s-1FORMAT\s0\fR" 4
  .IX Item "-fdiagnostics-escape-format=FORMAT"
! When \s-1GCC\s0 prints pertinent source lines for a diagnostic it normally attempts
  to print the source bytes directly.  However, some diagnostics relate to encoding
! issues in the source file, such as malformed \s-1UTF\-8,\s0 or issues with Unicode
! normalization.  These diagnostics are flagged so that \s-1GCC\s0 will escape bytes
! that are not printable \s-1ASCII\s0 when printing their pertinent source lines.
  .Sp
  This option controls how such bytes should be escaped.
  .Sp
! The default \fI\s-1FORMAT\s0\fR, \fBunicode\fR displays Unicode characters that
! are not printable \s-1ASCII\s0 in the form \fB<U+XXXX>\fR, and bytes that do not
! correspond to a Unicode character validly-encoded in UTF\-8\-encoded will be
! displayed as hexadecimal in the form \fB<\s-1XX\s0>\fR.
  .Sp
  For example, a source line containing the string \fBbefore\fR followed by the
! Unicode character U+03C0 (\*(L"\s-1GREEK SMALL LETTER PI\*(R",\s0 with \s-1UTF\-8\s0 encoding
! 0xCF 0x80) followed by the byte 0xBF (a stray \s-1UTF\-8\s0 trailing byte), followed by
  the string \fBafter\fR will be printed for such a diagnostic as:
  .Sp
  .Vb 1
  \&         before<U+03C0><BF>after
  .Ve
  .Sp
! Setting \fI\s-1FORMAT\s0\fR to \fBbytes\fR will display all non-printable-ASCII bytes
! in the form \fB<\s-1XX\s0>\fR, thus showing the underlying encoding of non-ASCII
  Unicode characters.  For the example above, the following will be printed:
  .Sp
  .Vb 1
  \&         before<CF><80><BF>after
  .Ve
! .IP "\fB\-fdiagnostics\-text\-art\-charset=\fR\fI\s-1CHARSET\s0\fR" 4
  .IX Item "-fdiagnostics-text-art-charset=CHARSET"
! Some diagnostics can contain \*(L"text art\*(R" diagrams: visualizations created
  from text, intended to be viewed in a monospaced font.
  .Sp
  This option selects which characters should be used for printing such
! diagrams, if any.  \fI\s-1CHARSET\s0\fR is \fBnone\fR, \fBascii\fR, \fBunicode\fR,
  or \fBemoji\fR.
  .Sp
  The \fBnone\fR value suppresses the printing of such diagrams.
! The \fBascii\fR value will ensure that such diagrams are pure \s-1ASCII\s0
! (\*(L"\s-1ASCII\s0 art\*(R").  The \fBunicode\fR value will allow for conservative use of
! unicode drawing characters (such as box-drawing characters).  The \fBemoji\fR
  value further adds the possibility of emoji in the output (such as emitting
! U+26A0 \s-1WARNING SIGN\s0 followed by U+FE0F \s-1VARIATION SELECTOR\-16\s0 to select the
  emoji variant of the character).
  .Sp
! The default is \fBemoji\fR, except when the environment variable \fB\s-1LANG\s0\fR
  is set to \fBC\fR, in which case the default is \fBascii\fR.
! .IP "\fB\-fdiagnostics\-format=\fR\fI\s-1FORMAT\s0\fR" 4
  .IX Item "-fdiagnostics-format=FORMAT"
  Select a different format for printing diagnostics.
! \&\fI\s-1FORMAT\s0\fR is \fBtext\fR, \fBsarif-stderr\fR, \fBsarif-file\fR,
! \&\fBjson\fR, \fBjson-stderr\fR, or \fBjson-file\fR.
  .Sp
! Using this option replaces any additional \*(L"output sinks\*(R" added by
  \&\fB\-fdiagnostics\-add\-output=\fR, or that set by
  \&\fB\-fdiagnostics\-set\-output=\fR.
  .Sp
  The default is \fBtext\fR.
  .Sp
! The \fBsarif-stderr\fR and \fBsarif-file\fR formats both emit
! diagnostics in \s-1SARIF\s0 Version 2.1.0 format, either to stderr, or to a file
! named \fI\fIsource\fI.sarif\fR, respectively.
  .Sp
! The various \fBjson\fR, \fBjson-stderr\fR, and \fBjson-file\fR values
! are deprecated and refer to a legacy JSON-based output format.
! The \fBjson\fR format is a synonym for \fBjson-stderr\fR.
! The \fBjson-stderr\fR and \fBjson-file\fR formats are identical, apart from
! where the \s-1JSON\s0 is emitted to.  With \fBjson-stderr\fR, the \s-1JSON\s0 is emitted
! to stderr, whereas with \fBjson-file\fR it is written to
! \&\fI\fIsource\fI.gcc.json\fR.
! .IP "\fB\-fdiagnostics\-add\-output=\fR\fIDIAGNOSTICS-OUTPUT-SPEC\fR" 4
  .IX Item "-fdiagnostics-add-output=DIAGNOSTICS-OUTPUT-SPEC"
! Add an additional \*(L"output sink\*(R" for emitting diagnostics.
  .Sp
! \&\fIDIAGNOSTICS-OUTPUT-SPEC\fR should specify a scheme, optionally followed
! by \f(CW\*(C`:\*(C'\fR and one or more \fI\s-1KEY\s0\fR=\fI\s-1VALUE\s0\fR pairs, in this form:
  .Sp
  .Vb 3
  \&        <SCHEME>
--- 5577,5691 ----
  the stack depth and function declaration will be appended when printing
  each event.
  .Sp
! This is intended for use by GCC developers and plugin developers when
  debugging diagnostics that report interprocedural control flow.
! .IP \fB\-fno\-show\-column\fR 4
  .IX Item "-fno-show-column"
  Do not print column numbers in diagnostics.  This may be necessary if
  diagnostics are being scanned by a program that does not understand the
  column numbers, such as \fBdejagnu\fR.
! .IP \fB\-fdiagnostics\-column\-unit=\fR\fIUNIT\fR 4
  .IX Item "-fdiagnostics-column-unit=UNIT"
  Select the units for the column number.  This affects traditional diagnostics
! (in the absence of \fB\-fno\-show\-column\fR), as well as JSON format
  diagnostics if requested.
  .Sp
! The default \fIUNIT\fR, \fBdisplay\fR, considers the number of display
  columns occupied by each character.  This may be larger than the number
  of bytes required to encode the character, in the case of tab
  characters, or it may be smaller, in the case of multibyte characters.
! For example, the character "GREEK SMALL LETTER PI (U+03C0)" occupies one
! display column, and its UTF\-8 encoding requires two bytes; the character
! "SLIGHTLY SMILING FACE (U+1F642)" occupies two display columns, and
! its UTF\-8 encoding requires four bytes.
  .Sp
! Setting \fIUNIT\fR to \fBbyte\fR changes the column number to the raw byte
! count in all cases, as was traditionally output by GCC prior to version 11.1.0.
! .IP \fB\-fdiagnostics\-column\-origin=\fR\fIORIGIN\fR 4
  .IX Item "-fdiagnostics-column-origin=ORIGIN"
  Select the origin for column numbers, i.e. the column number assigned to the
! first column.  The default value of 1 corresponds to traditional GCC
! behavior and to the GNU style guide.  Some utilities may perform better with an
! origin of 0; any non\-negative value may be specified.
! .IP \fB\-fdiagnostics\-escape\-format=\fR\fIFORMAT\fR 4
  .IX Item "-fdiagnostics-escape-format=FORMAT"
! When GCC prints pertinent source lines for a diagnostic it normally attempts
  to print the source bytes directly.  However, some diagnostics relate to encoding
! issues in the source file, such as malformed UTF\-8, or issues with Unicode
! normalization.  These diagnostics are flagged so that GCC will escape bytes
! that are not printable ASCII when printing their pertinent source lines.
  .Sp
  This option controls how such bytes should be escaped.
  .Sp
! The default \fIFORMAT\fR, \fBunicode\fR displays Unicode characters that
! are not printable ASCII in the form \fB<U+XXXX>\fR, and bytes that do not
! correspond to a Unicode character validly\-encoded in UTF\-8\-encoded will be
! displayed as hexadecimal in the form \fB<XX>\fR.
  .Sp
  For example, a source line containing the string \fBbefore\fR followed by the
! Unicode character U+03C0 ("GREEK SMALL LETTER PI", with UTF\-8 encoding
! 0xCF 0x80) followed by the byte 0xBF (a stray UTF\-8 trailing byte), followed by
  the string \fBafter\fR will be printed for such a diagnostic as:
  .Sp
  .Vb 1
  \&         before<U+03C0><BF>after
  .Ve
  .Sp
! Setting \fIFORMAT\fR to \fBbytes\fR will display all non\-printable\-ASCII bytes
! in the form \fB<XX>\fR, thus showing the underlying encoding of non\-ASCII
  Unicode characters.  For the example above, the following will be printed:
  .Sp
  .Vb 1
  \&         before<CF><80><BF>after
  .Ve
! .IP \fB\-fdiagnostics\-text\-art\-charset=\fR\fICHARSET\fR 4
  .IX Item "-fdiagnostics-text-art-charset=CHARSET"
! Some diagnostics can contain "text art" diagrams: visualizations created
  from text, intended to be viewed in a monospaced font.
  .Sp
  This option selects which characters should be used for printing such
! diagrams, if any.  \fICHARSET\fR is \fBnone\fR, \fBascii\fR, \fBunicode\fR,
  or \fBemoji\fR.
  .Sp
  The \fBnone\fR value suppresses the printing of such diagrams.
! The \fBascii\fR value will ensure that such diagrams are pure ASCII
! ("ASCII art").  The \fBunicode\fR value will allow for conservative use of
! unicode drawing characters (such as box\-drawing characters).  The \fBemoji\fR
  value further adds the possibility of emoji in the output (such as emitting
! U+26A0 WARNING SIGN followed by U+FE0F VARIATION SELECTOR\-16 to select the
  emoji variant of the character).
  .Sp
! The default is \fBemoji\fR, except when the environment variable \fBLANG\fR
  is set to \fBC\fR, in which case the default is \fBascii\fR.
! .IP \fB\-fdiagnostics\-format=\fR\fIFORMAT\fR 4
  .IX Item "-fdiagnostics-format=FORMAT"
  Select a different format for printing diagnostics.
! \&\fIFORMAT\fR is \fBtext\fR, \fBsarif\-stderr\fR, \fBsarif\-file\fR,
! \&\fBjson\fR, \fBjson\-stderr\fR, or \fBjson\-file\fR.
  .Sp
! Using this option replaces any additional "output sinks" added by
  \&\fB\-fdiagnostics\-add\-output=\fR, or that set by
  \&\fB\-fdiagnostics\-set\-output=\fR.
  .Sp
  The default is \fBtext\fR.
  .Sp
! The \fBsarif\-stderr\fR and \fBsarif\-file\fR formats both emit
! diagnostics in SARIF Version 2.1.0 format, either to stderr, or to a file
! named \fIsource.sarif\fR, respectively.
  .Sp
! The various \fBjson\fR, \fBjson\-stderr\fR, and \fBjson\-file\fR values
! are deprecated and refer to a legacy JSON\-based output format.
! The \fBjson\fR format is a synonym for \fBjson\-stderr\fR.
! The \fBjson\-stderr\fR and \fBjson\-file\fR formats are identical, apart from
! where the JSON is emitted to.  With \fBjson\-stderr\fR, the JSON is emitted
! to stderr, whereas with \fBjson\-file\fR it is written to
! \&\fIsource.gcc.json\fR.
! .IP \fB\-fdiagnostics\-add\-output=\fR\fIDIAGNOSTICS\-OUTPUT\-SPEC\fR 4
  .IX Item "-fdiagnostics-add-output=DIAGNOSTICS-OUTPUT-SPEC"
! Add an additional "output sink" for emitting diagnostics.
  .Sp
! \&\fIDIAGNOSTICS\-OUTPUT\-SPEC\fR should specify a scheme, optionally followed
! by \f(CW\*(C`:\*(C'\fR and one or more \fIKEY\fR=\fIVALUE\fR pairs, in this form:
  .Sp
  .Vb 3
  \&        <SCHEME>
*************** by \f(CW\*(C`:\*(C'\fR and one or more \
*** 5762,5816 ****
  .Sp
  etc.
  .Sp
! Schemes, keys, or values with a name prefixed \*(L"experimental\*(R" may change
  or be removed without notice.
  .Sp
! \&\fI\s-1SCHEME\s0\fR can be
  .RS 4
! .IP "\fBtext\fR" 4
  .IX Item "text"
! Emit diagnostics to stderr using \s-1GCC\s0's classic text output format.
  .Sp
  Supported keys are:
  .RS 4
! .IP "\fBcolor=\fR[\fByes\fR|\fBno\fR]" 4
  .IX Item "color=[yes|no]"
  Override colorization settings from \fB\-fdiagnostics\-color\fR for this
  text output.
! .IP "\fBexperimental\-nesting=\fR[\fByes\fR|\fBno\fR]" 4
  .IX Item "experimental-nesting=[yes|no]"
  Enable an experimental mode that emphasizes hierarchical relationships
  within diagnostics messages, displaying location information on separate
  lines.
! .IP "\fBexperimental\-nesting\-show\-locations=\fR[\fByes\fR|\fBno\fR]" 4
  .IX Item "experimental-nesting-show-locations=[yes|no]"
  If \f(CW\*(C`experimental\-nesting=yes\*(C'\fR, then by default locations are
  shown; set this key to \f(CW\*(C`no\*(C'\fR to disable printing such locations.
! This exists for use by \s-1GCC\s0 developers, for writing DejaGnu test cases.
! .IP "\fBexperimental\-nesting\-show\-levels=\fR[\fByes\fR|\fBno\fR]" 4
  .IX Item "experimental-nesting-show-levels=[yes|no]"
  This is a debugging option for use with \f(CW\*(C`experimental\-nesting=yes\*(C'\fR.
  Set this key to \f(CW\*(C`yes\*(C'\fR to print explicit nesting levels in the output.
! This exists for use by \s-1GCC\s0 developers.
  .RE
  .RS 4
  .RE
! .IP "\fBsarif\fR" 4
  .IX Item "sarif"
! Emit diagnostics to a file in \s-1SARIF\s0 format.
  .Sp
  Supported keys are:
  .RS 4
! .IP "\fBfile=\fR\fI\s-1FILENAME\s0\fR" 4
  .IX Item "file=FILENAME"
! Specify the filename to write the \s-1SARIF\s0 output to, potentially with a
  leading absolute or relative path.  If not specified, it defaults to
! \&\fI\fIsource\fI.sarif\fR.
! .IP "\fBversion=\fR[\fB2.1\fR|\fB2.2\-prerelease\fR]" 4
  .IX Item "version=[2.1|2.2-prerelease]"
! Specify the version of \s-1SARIF\s0 to use for the output.  If not specified,
  defaults to 2.1.  \f(CW\*(C`2.2\-prerelease\*(C'\fR uses an unofficial draft of the
! future \s-1SARIF 2.2\s0 specification and should only be used for experimentation
  in this release.
  .RE
  .RS 4
--- 5695,5749 ----
  .Sp
  etc.
  .Sp
! Schemes, keys, or values with a name prefixed "experimental" may change
  or be removed without notice.
  .Sp
! \&\fISCHEME\fR can be
  .RS 4
! .IP \fBtext\fR 4
  .IX Item "text"
! Emit diagnostics to stderr using GCC\*(Aqs classic text output format.
  .Sp
  Supported keys are:
  .RS 4
! .IP \fBcolor=\fR[\fByes\fR|\fBno\fR] 4
  .IX Item "color=[yes|no]"
  Override colorization settings from \fB\-fdiagnostics\-color\fR for this
  text output.
! .IP \fBexperimental\-nesting=\fR[\fByes\fR|\fBno\fR] 4
  .IX Item "experimental-nesting=[yes|no]"
  Enable an experimental mode that emphasizes hierarchical relationships
  within diagnostics messages, displaying location information on separate
  lines.
! .IP \fBexperimental\-nesting\-show\-locations=\fR[\fByes\fR|\fBno\fR] 4
  .IX Item "experimental-nesting-show-locations=[yes|no]"
  If \f(CW\*(C`experimental\-nesting=yes\*(C'\fR, then by default locations are
  shown; set this key to \f(CW\*(C`no\*(C'\fR to disable printing such locations.
! This exists for use by GCC developers, for writing DejaGnu test cases.
! .IP \fBexperimental\-nesting\-show\-levels=\fR[\fByes\fR|\fBno\fR] 4
  .IX Item "experimental-nesting-show-levels=[yes|no]"
  This is a debugging option for use with \f(CW\*(C`experimental\-nesting=yes\*(C'\fR.
  Set this key to \f(CW\*(C`yes\*(C'\fR to print explicit nesting levels in the output.
! This exists for use by GCC developers.
  .RE
  .RS 4
  .RE
! .IP \fBsarif\fR 4
  .IX Item "sarif"
! Emit diagnostics to a file in SARIF format.
  .Sp
  Supported keys are:
  .RS 4
! .IP \fBfile=\fR\fIFILENAME\fR 4
  .IX Item "file=FILENAME"
! Specify the filename to write the SARIF output to, potentially with a
  leading absolute or relative path.  If not specified, it defaults to
! \&\fIsource.sarif\fR.
! .IP \fBversion=\fR[\fB2.1\fR|\fB2.2\-prerelease\fR] 4
  .IX Item "version=[2.1|2.2-prerelease]"
! Specify the version of SARIF to use for the output.  If not specified,
  defaults to 2.1.  \f(CW\*(C`2.2\-prerelease\*(C'\fR uses an unofficial draft of the
! future SARIF 2.2 specification and should only be used for experimentation
  in this release.
  .RE
  .RS 4
*************** For example,
*** 5826,5834 ****
  .Ve
  .Sp
  would add a pair of outputs, each writing to a different file, using
! versions 2.1 and 2.2 of the \s-1SARIF\s0 standard respectively.
  .Sp
! In \s-1EBNF:\s0
  .Sp
  .Vb 2
  \&        <diagnostics\-output\-specifier> = <diagnostics\-output\-name>
--- 5759,5767 ----
  .Ve
  .Sp
  would add a pair of outputs, each writing to a different file, using
! versions 2.1 and 2.2 of the SARIF standard respectively.
  .Sp
! In EBNF:
  .Sp
  .Vb 2
  \&        <diagnostics\-output\-specifier> = <diagnostics\-output\-name>
*************** In \s-1EBNF:\s0
*** 5845,5899 ****
  \&        <value> = ? string without a \*(Aq,\*(Aq ? ;
  .Ve
  .RE
! .IP "\fB\-fdiagnostics\-set\-output=\fR\fIDIAGNOSTICS-OUTPUT-SPEC\fR" 4
  .IX Item "-fdiagnostics-set-output=DIAGNOSTICS-OUTPUT-SPEC"
  This works in a similar way to \fB\-fdiagnostics\-add\-output=\fR except
! that instead of adding an additional \*(L"output sink\*(R" for diagnostics, it
  replaces all existing output sinks, such as from \fB\-fdiagnostics\-format=\fR,
  \&\fB\-fdiagnostics\-add\-output=\fR, or a prior call to
  \&\fB\-fdiagnostics\-set\-output=\fR.
! .IP "\fB\-fno\-diagnostics\-json\-formatting\fR" 4
  .IX Item "-fno-diagnostics-json-formatting"
! By default, when \s-1JSON\s0 is emitted for diagnostics (via
  \&\fB\-fdiagnostics\-format=sarif\-stderr\fR,
  \&\fB\-fdiagnostics\-format=sarif\-file\fR,
  \&\fB\-fdiagnostics\-format=json\fR,
  \&\fB\-fdiagnostics\-format=json\-stderr\fR,
  \&\fB\-fdiagnostics\-format=json\-file\fR),
! \&\s-1GCC\s0 will add newlines and indentation to visually emphasize the
! hierarchical structure of the \s-1JSON.\s0
  .Sp
  Use \fB\-fno\-diagnostics\-json\-formatting\fR to suppress this whitespace.
  It must be passed before the option it is to affect.
  .Sp
  This is intended for compatibility with tools that do not expect the output
! to contain newlines, such as that emitted by older \s-1GCC\s0 releases.
  .SS "Options to Request or Suppress Warnings"
  .IX Subsection "Options to Request or Suppress Warnings"
  Warnings are diagnostic messages that report constructions that
  are not inherently erroneous but that are risky or suggest there
  may have been an error.
  .PP
! The following language-independent options do not enable specific
! warnings but control the kinds of diagnostics produced by \s-1GCC.\s0
! .IP "\fB\-fsyntax\-only\fR" 4
  .IX Item "-fsyntax-only"
! Check the code for syntax errors, but don't do anything beyond that.
! .IP "\fB\-fmax\-errors=\fR\fIn\fR" 4
  .IX Item "-fmax-errors=n"
  Limits the maximum number of error messages to \fIn\fR, at which point
! \&\s-1GCC\s0 bails out rather than attempting to continue processing the source
  code.  If \fIn\fR is 0 (the default), there is no limit on the number
  of error messages produced.  If \fB\-Wfatal\-errors\fR is also
  specified, then \fB\-Wfatal\-errors\fR takes precedence over this
  option.
! .IP "\fB\-w\fR" 4
  .IX Item "-w"
  Inhibit all warning messages.
! .IP "\fB\-Werror\fR" 4
  .IX Item "-Werror"
  Turn all warnings into errors.
! .IP "\fB\-Werror=\fR" 4
  .IX Item "-Werror="
  Turn the specified warning into an error.  The specifier for a warning
  is appended; for example \fB\-Werror=switch\fR turns the warnings
--- 5778,5832 ----
  \&        <value> = ? string without a \*(Aq,\*(Aq ? ;
  .Ve
  .RE
! .IP \fB\-fdiagnostics\-set\-output=\fR\fIDIAGNOSTICS\-OUTPUT\-SPEC\fR 4
  .IX Item "-fdiagnostics-set-output=DIAGNOSTICS-OUTPUT-SPEC"
  This works in a similar way to \fB\-fdiagnostics\-add\-output=\fR except
! that instead of adding an additional "output sink" for diagnostics, it
  replaces all existing output sinks, such as from \fB\-fdiagnostics\-format=\fR,
  \&\fB\-fdiagnostics\-add\-output=\fR, or a prior call to
  \&\fB\-fdiagnostics\-set\-output=\fR.
! .IP \fB\-fno\-diagnostics\-json\-formatting\fR 4
  .IX Item "-fno-diagnostics-json-formatting"
! By default, when JSON is emitted for diagnostics (via
  \&\fB\-fdiagnostics\-format=sarif\-stderr\fR,
  \&\fB\-fdiagnostics\-format=sarif\-file\fR,
  \&\fB\-fdiagnostics\-format=json\fR,
  \&\fB\-fdiagnostics\-format=json\-stderr\fR,
  \&\fB\-fdiagnostics\-format=json\-file\fR),
! GCC will add newlines and indentation to visually emphasize the
! hierarchical structure of the JSON.
  .Sp
  Use \fB\-fno\-diagnostics\-json\-formatting\fR to suppress this whitespace.
  It must be passed before the option it is to affect.
  .Sp
  This is intended for compatibility with tools that do not expect the output
! to contain newlines, such as that emitted by older GCC releases.
  .SS "Options to Request or Suppress Warnings"
  .IX Subsection "Options to Request or Suppress Warnings"
  Warnings are diagnostic messages that report constructions that
  are not inherently erroneous but that are risky or suggest there
  may have been an error.
  .PP
! The following language\-independent options do not enable specific
! warnings but control the kinds of diagnostics produced by GCC.
! .IP \fB\-fsyntax\-only\fR 4
  .IX Item "-fsyntax-only"
! Check the code for syntax errors, but don\*(Aqt do anything beyond that.
! .IP \fB\-fmax\-errors=\fR\fIn\fR 4
  .IX Item "-fmax-errors=n"
  Limits the maximum number of error messages to \fIn\fR, at which point
! GCC bails out rather than attempting to continue processing the source
  code.  If \fIn\fR is 0 (the default), there is no limit on the number
  of error messages produced.  If \fB\-Wfatal\-errors\fR is also
  specified, then \fB\-Wfatal\-errors\fR takes precedence over this
  option.
! .IP \fB\-w\fR 4
  .IX Item "-w"
  Inhibit all warning messages.
! .IP \fB\-Werror\fR 4
  .IX Item "-Werror"
  Turn all warnings into errors.
! .IP \fB\-Werror=\fR 4
  .IX Item "-Werror="
  Turn the specified warning into an error.  The specifier for a warning
  is appended; for example \fB\-Werror=switch\fR turns the warnings
*************** option that controls the warning.  That
*** 5912,5918 ****
  Note that specifying \fB\-Werror=\fR\fIfoo\fR automatically implies
  \&\fB\-W\fR\fIfoo\fR.  However, \fB\-Wno\-error=\fR\fIfoo\fR does not
  imply anything.
! .IP "\fB\-Wfatal\-errors\fR" 4
  .IX Item "-Wfatal-errors"
  This option causes the compiler to abort compilation on the first error
  occurred rather than trying to keep going and printing further error
--- 5845,5851 ----
  Note that specifying \fB\-Werror=\fR\fIfoo\fR automatically implies
  \&\fB\-W\fR\fIfoo\fR.  However, \fB\-Wno\-error=\fR\fIfoo\fR does not
  imply anything.
! .IP \fB\-Wfatal\-errors\fR 4
  .IX Item "-Wfatal-errors"
  This option causes the compiler to abort compilation on the first error
  occurred rather than trying to keep going and printing further error
*************** Each of these specific warning options a
*** 5925,5932 ****
  has a negative form beginning with \fB\-Wno\-\fR to turn off warnings; for
  example, \fB\-Wno\-unused\-variable\fR.  This manual lists only one of the
  two forms, whichever is not the default.  For further
! language-specific options also refer to \fB\*(C+ Dialect Options\fR and
! \&\fBObjective-C and Objective\-\*(C+ Dialect Options\fR.
  Additional warnings can be produced by enabling the static analyzer;
  .PP
  Some options, such as \fB\-Wall\fR and \fB\-Wextra\fR, turn on other
--- 5858,5865 ----
  has a negative form beginning with \fB\-Wno\-\fR to turn off warnings; for
  example, \fB\-Wno\-unused\-variable\fR.  This manual lists only one of the
  two forms, whichever is not the default.  For further
! language\-specific options also refer to \fBC++ Dialect Options\fR and
! \&\fBObjective\-C and Objective\-C++ Dialect Options\fR.
  Additional warnings can be produced by enabling the static analyzer;
  .PP
  Some options, such as \fB\-Wall\fR and \fB\-Wextra\fR, turn on other
*************** enabled or disabled via pragmas take eff
*** 5939,5945 ****
  as if they appeared at the end of the command line.
  .PP
  When an unrecognized warning option is requested (e.g.,
! \&\fB\-Wunknown\-warning\fR), \s-1GCC\s0 gives an error stating
  that the option is not recognized.  However, if the \fB\-Wno\-\fR form
  is used, the behavior is slightly different: no diagnostic is
  produced for \fB\-Wno\-unknown\-warning\fR unless other diagnostics
--- 5872,5878 ----
  as if they appeared at the end of the command line.
  .PP
  When an unrecognized warning option is requested (e.g.,
! \&\fB\-Wunknown\-warning\fR), GCC gives an error stating
  that the option is not recognized.  However, if the \fB\-Wno\-\fR form
  is used, the behavior is slightly different: no diagnostic is
  produced for \fB\-Wno\-unknown\-warning\fR unless other diagnostics
*************** warns that an unrecognized option is pre
*** 5949,6003 ****
  .PP
  The effectiveness of some warnings depends on optimizations also being
  enabled. For example, \fB\-Wsuggest\-final\-types\fR is more effective
! with link-time optimization.  Some other warnings may
  not be issued at all unless optimization is enabled.  While optimization
! in general improves the efficacy of warnings about control and data-flow
  problems, in some cases it may also cause false positives.
! .IP "\fB\-Wpedantic\fR" 4
  .IX Item "-Wpedantic"
  .PD 0
! .IP "\fB\-pedantic\fR" 4
  .IX Item "-pedantic"
  .PD
! Issue all the warnings demanded by strict \s-1ISO C\s0 and \s-1ISO \*(C+\s0;
  diagnose all programs that use forbidden extensions, and some other
! programs that do not follow \s-1ISO C\s0 and \s-1ISO \*(C+.\s0  This follows the version
! of the \s-1ISO C\s0 or \*(C+ standard specified by any \fB\-std\fR option used.
  .Sp
! Valid \s-1ISO C\s0 and \s-1ISO \*(C+\s0 programs should compile properly with or without
  this option (though a rare few require \fB\-ansi\fR or a
  \&\fB\-std\fR option specifying the version of the standard).  However,
! without this option, certain \s-1GNU\s0 extensions and traditional C and \*(C+
  features are supported as well.  With this option, they are diagnosed
  (or rejected with \fB\-pedantic\-errors\fR).
  .Sp
  \&\fB\-Wpedantic\fR does not cause warning messages for use of the
  alternate keywords whose names begin and end with \fB_\|_\fR.  This alternate
! format can also be used to disable warnings for non-ISO \fB_\|_intN\fR types,
  i.e. \fB_\|_intN_\|_\fR.
  Pedantic warnings are also disabled in the expression that follows
  \&\f(CW\*(C`_\|_extension_\|_\*(C'\fR.  However, only system header files should use
  these escape routes; application programs should avoid them.
  .Sp
! Some warnings about non-conforming programs are controlled by options
  other than \fB\-Wpedantic\fR; in many cases they are implied by
  \&\fB\-Wpedantic\fR but can be disabled separately by their specific
  option, e.g. \fB\-Wpedantic \-Wno\-pointer\-sign\fR.
  .Sp
! Where the standard specified with \fB\-std\fR represents a \s-1GNU\s0
  extended dialect of C, such as \fBgnu90\fR or \fBgnu99\fR, there is a
! corresponding \fIbase standard\fR, the version of \s-1ISO C\s0 on which the \s-1GNU\s0
  extended dialect is based.  Warnings from \fB\-Wpedantic\fR are given
  where they are required by the base standard.  (It does not make sense
! for such warnings to be given only for features not in the specified \s-1GNU
! C\s0 dialect, since by definition the \s-1GNU\s0 dialects of C include all
  features the compiler supports with the given option, and there would be
  nothing to warn about.)
! .IP "\fB\-pedantic\-errors\fR" 4
  .IX Item "-pedantic-errors"
  Give an error whenever the \fIbase standard\fR (see \fB\-Wpedantic\fR)
  requires a diagnostic, in some cases where there is undefined behavior
! at compile-time and in some other cases that do not prevent compilation
  of programs that are valid according to the standard. This is not
  equivalent to \fB\-Werror=pedantic\fR: the latter option is unlikely to be
  useful, as it only makes errors of the diagnostics that are controlled by
--- 5882,5936 ----
  .PP
  The effectiveness of some warnings depends on optimizations also being
  enabled. For example, \fB\-Wsuggest\-final\-types\fR is more effective
! with link\-time optimization.  Some other warnings may
  not be issued at all unless optimization is enabled.  While optimization
! in general improves the efficacy of warnings about control and data\-flow
  problems, in some cases it may also cause false positives.
! .IP \fB\-Wpedantic\fR 4
  .IX Item "-Wpedantic"
  .PD 0
! .IP \fB\-pedantic\fR 4
  .IX Item "-pedantic"
  .PD
! Issue all the warnings demanded by strict ISO C and ISO C++;
  diagnose all programs that use forbidden extensions, and some other
! programs that do not follow ISO C and ISO C++.  This follows the version
! of the ISO C or C++ standard specified by any \fB\-std\fR option used.
  .Sp
! Valid ISO C and ISO C++ programs should compile properly with or without
  this option (though a rare few require \fB\-ansi\fR or a
  \&\fB\-std\fR option specifying the version of the standard).  However,
! without this option, certain GNU extensions and traditional C and C++
  features are supported as well.  With this option, they are diagnosed
  (or rejected with \fB\-pedantic\-errors\fR).
  .Sp
  \&\fB\-Wpedantic\fR does not cause warning messages for use of the
  alternate keywords whose names begin and end with \fB_\|_\fR.  This alternate
! format can also be used to disable warnings for non\-ISO \fB_\|_intN\fR types,
  i.e. \fB_\|_intN_\|_\fR.
  Pedantic warnings are also disabled in the expression that follows
  \&\f(CW\*(C`_\|_extension_\|_\*(C'\fR.  However, only system header files should use
  these escape routes; application programs should avoid them.
  .Sp
! Some warnings about non\-conforming programs are controlled by options
  other than \fB\-Wpedantic\fR; in many cases they are implied by
  \&\fB\-Wpedantic\fR but can be disabled separately by their specific
  option, e.g. \fB\-Wpedantic \-Wno\-pointer\-sign\fR.
  .Sp
! Where the standard specified with \fB\-std\fR represents a GNU
  extended dialect of C, such as \fBgnu90\fR or \fBgnu99\fR, there is a
! corresponding \fIbase standard\fR, the version of ISO C on which the GNU
  extended dialect is based.  Warnings from \fB\-Wpedantic\fR are given
  where they are required by the base standard.  (It does not make sense
! for such warnings to be given only for features not in the specified GNU
! C dialect, since by definition the GNU dialects of C include all
  features the compiler supports with the given option, and there would be
  nothing to warn about.)
! .IP \fB\-pedantic\-errors\fR 4
  .IX Item "-pedantic-errors"
  Give an error whenever the \fIbase standard\fR (see \fB\-Wpedantic\fR)
  requires a diagnostic, in some cases where there is undefined behavior
! at compile\-time and in some other cases that do not prevent compilation
  of programs that are valid according to the standard. This is not
  equivalent to \fB\-Werror=pedantic\fR: the latter option is unlikely to be
  useful, as it only makes errors of the diagnostics that are controlled by
*************** useful, as it only makes errors of the d
*** 6005,6011 ****
  are always enabled or controlled by options other than \fB\-Wpedantic\fR.
  .Sp
  If you want the required diagnostics that are warnings by default to
! be errors instead, but don't also want to enable the \fB\-Wpedantic\fR
  diagnostics, you can specify \fB\-pedantic\-errors \-Wno\-pedantic\fR
  (or \fB\-pedantic\-errors \-Wno\-error=pedantic\fR to enable them but
  only as warnings).
--- 5938,5944 ----
  are always enabled or controlled by options other than \fB\-Wpedantic\fR.
  .Sp
  If you want the required diagnostics that are warnings by default to
! be errors instead, but don\*(Aqt also want to enable the \fB\-Wpedantic\fR
  diagnostics, you can specify \fB\-pedantic\-errors \-Wno\-pedantic\fR
  (or \fB\-pedantic\-errors \-Wno\-error=pedantic\fR to enable them but
  only as warnings).
*************** Some required diagnostics are errors by
*** 6014,6089 ****
  warnings using \fB\-fpermissive\fR or their specific warning option,
  e.g. \fB\-Wno\-error=narrowing\fR.
  .Sp
! Some diagnostics for non-ISO practices are controlled by specific
  warning options other than \fB\-Wpedantic\fR, but are also made
  errors by \fB\-pedantic\-errors\fR.  For instance:
  .Sp
  \&\fB\-Wattributes\fR (for standard attributes)
! \&\fB\-Wchanges\-meaning\fR (\*(C+)
! \&\fB\-Wcomma\-subscript\fR (\*(C+23 or later)
  \&\fB\-Wdeclaration\-after\-statement\fR (C90 or earlier)
! \&\fB\-Welaborated\-enum\-base\fR (\*(C+11 or later)
  \&\fB\-Wimplicit\-int\fR (C99 or later)
  \&\fB\-Wimplicit\-function\-declaration\fR (C99 or later)
  \&\fB\-Wincompatible\-pointer\-types
  \&\-Wint\-conversion
  \&\-Wlong\-long\fR (C90 or earlier)
  \&\fB\-Wmain
! \&\-Wnarrowing\fR (\*(C+11 or later)
  \&\fB\-Wpointer\-arith
  \&\-Wpointer\-sign
  \&\-Wincompatible\-pointer\-types
! \&\-Wregister\fR (\*(C+17 or later)
  \&\fB\-Wvla\fR (C90 or earlier)
! \&\fB\-Wwrite\-strings\fR (\*(C+11 or later)\fB \fR
! .IP "\fB\-fpermissive\fR" 4
  .IX Item "-fpermissive"
  Downgrade some required diagnostics about nonconformant code from
  errors to warnings.  Thus, using \fB\-fpermissive\fR allows some
! nonconforming code to compile.  Some \*(C+ diagnostics are controlled
! only by this flag, but it also downgrades some C and \*(C+ diagnostics
  that have their own flag:
  .Sp
! \&\fB\-Wdeclaration\-missing\-parameter\-type\fR (C and Objective-C only)
! \&\fB\-Wimplicit\-function\-declaration\fR (C and Objective-C only)
! \&\fB\-Wimplicit\-int\fR (C and Objective-C only)
! \&\fB\-Wincompatible\-pointer\-types\fR (C and Objective-C only)
! \&\fB\-Wint\-conversion\fR (C and Objective-C only)
! \&\fB\-Wnarrowing\fR (\*(C+ and Objective\-\*(C+ only)
! \&\fB\-Wreturn\-mismatch\fR (C and Objective-C only)
! \&\fB\-Wtemplate\-body\fR (\*(C+ and Objective\-\*(C+ only)\fB \fR
  .Sp
  The \fB\-fpermissive\fR option is the default for historic C language
  modes (\fB\-std=c89\fR, \fB\-std=gnu89\fR, \fB\-std=c90\fR,
  \&\fB\-std=gnu90\fR).
! .IP "\fB\-Wall\fR" 4
  .IX Item "-Wall"
  This enables all the warnings about constructions that some users
  consider questionable, and that are easy to avoid (or modify to
  prevent the warning), even in conjunction with macros.  This also
! enables some language-specific warnings described in \fB\*(C+ Dialect
! Options\fR and \fBObjective-C and Objective\-\*(C+ Dialect Options\fR.
  .Sp
  \&\fB\-Wall\fR turns on the following warning flags:
  .Sp
  \&\fB\-Waddress
! \&\-Waligned\-new\fR (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Warray\-bounds=1\fR (only with\fB \fR\fB\-O2\fR)
  \&\fB\-Warray\-compare
  \&\-Warray\-parameter=2
  \&\-Wbool\-compare
  \&\-Wbool\-operation
  \&\-Wc++11\-compat  \-Wc++14\-compat  \-Wc++17compat  \-Wc++20compat
! \&\-Wcatch\-value\fR (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Wchar\-subscripts
! \&\-Wclass\-memaccess\fR (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Wcomment
  \&\-Wdangling\-else
  \&\-Wdangling\-pointer=2
! \&\-Wdelete\-non\-virtual\-dtor\fR (\*(C+ and Objective\-\*(C+ only)
! \&\fB\-Wduplicate\-decl\-specifier\fR (C and Objective-C only)
! \&\fB\-Wenum\-compare\fR (in C/ObjC; this is on by default in \*(C+)
! \&\fB\-Wenum\-int\-mismatch\fR (C and Objective-C only)
  \&\fB\-Wformat=1
  \&\-Wformat\-contains\-nul
  \&\-Wformat\-diag
--- 5947,6022 ----
  warnings using \fB\-fpermissive\fR or their specific warning option,
  e.g. \fB\-Wno\-error=narrowing\fR.
  .Sp
! Some diagnostics for non\-ISO practices are controlled by specific
  warning options other than \fB\-Wpedantic\fR, but are also made
  errors by \fB\-pedantic\-errors\fR.  For instance:
  .Sp
  \&\fB\-Wattributes\fR (for standard attributes)
! \&\fB\-Wchanges\-meaning\fR (C++)
! \&\fB\-Wcomma\-subscript\fR (C++23 or later)
  \&\fB\-Wdeclaration\-after\-statement\fR (C90 or earlier)
! \&\fB\-Welaborated\-enum\-base\fR (C++11 or later)
  \&\fB\-Wimplicit\-int\fR (C99 or later)
  \&\fB\-Wimplicit\-function\-declaration\fR (C99 or later)
  \&\fB\-Wincompatible\-pointer\-types
  \&\-Wint\-conversion
  \&\-Wlong\-long\fR (C90 or earlier)
  \&\fB\-Wmain
! \&\-Wnarrowing\fR (C++11 or later)
  \&\fB\-Wpointer\-arith
  \&\-Wpointer\-sign
  \&\-Wincompatible\-pointer\-types
! \&\-Wregister\fR (C++17 or later)
  \&\fB\-Wvla\fR (C90 or earlier)
! \&\fB\-Wwrite\-strings\fR (C++11 or later)\fB \fR
! .IP \fB\-fpermissive\fR 4
  .IX Item "-fpermissive"
  Downgrade some required diagnostics about nonconformant code from
  errors to warnings.  Thus, using \fB\-fpermissive\fR allows some
! nonconforming code to compile.  Some C++ diagnostics are controlled
! only by this flag, but it also downgrades some C and C++ diagnostics
  that have their own flag:
  .Sp
! \&\fB\-Wdeclaration\-missing\-parameter\-type\fR (C and Objective\-C only)
! \&\fB\-Wimplicit\-function\-declaration\fR (C and Objective\-C only)
! \&\fB\-Wimplicit\-int\fR (C and Objective\-C only)
! \&\fB\-Wincompatible\-pointer\-types\fR (C and Objective\-C only)
! \&\fB\-Wint\-conversion\fR (C and Objective\-C only)
! \&\fB\-Wnarrowing\fR (C++ and Objective\-C++ only)
! \&\fB\-Wreturn\-mismatch\fR (C and Objective\-C only)
! \&\fB\-Wtemplate\-body\fR (C++ and Objective\-C++ only)\fB \fR
  .Sp
  The \fB\-fpermissive\fR option is the default for historic C language
  modes (\fB\-std=c89\fR, \fB\-std=gnu89\fR, \fB\-std=c90\fR,
  \&\fB\-std=gnu90\fR).
! .IP \fB\-Wall\fR 4
  .IX Item "-Wall"
  This enables all the warnings about constructions that some users
  consider questionable, and that are easy to avoid (or modify to
  prevent the warning), even in conjunction with macros.  This also
! enables some language\-specific warnings described in \fBC++ Dialect
! Options\fR and \fBObjective\-C and Objective\-C++ Dialect Options\fR.
  .Sp
  \&\fB\-Wall\fR turns on the following warning flags:
  .Sp
  \&\fB\-Waddress
! \&\-Waligned\-new\fR (C++ and Objective\-C++ only)
  \&\fB\-Warray\-bounds=1\fR (only with\fB \fR\fB\-O2\fR)
  \&\fB\-Warray\-compare
  \&\-Warray\-parameter=2
  \&\-Wbool\-compare
  \&\-Wbool\-operation
  \&\-Wc++11\-compat  \-Wc++14\-compat  \-Wc++17compat  \-Wc++20compat
! \&\-Wcatch\-value\fR (C++ and Objective\-C++ only)
  \&\fB\-Wchar\-subscripts
! \&\-Wclass\-memaccess\fR (C++ and Objective\-C++ only)
  \&\fB\-Wcomment
  \&\-Wdangling\-else
  \&\-Wdangling\-pointer=2
! \&\-Wdelete\-non\-virtual\-dtor\fR (C++ and Objective\-C++ only)
! \&\fB\-Wduplicate\-decl\-specifier\fR (C and Objective\-C only)
! \&\fB\-Wenum\-compare\fR (in C/ObjC; this is on by default in C++)
! \&\fB\-Wenum\-int\-mismatch\fR (C and Objective\-C only)
  \&\fB\-Wformat=1
  \&\-Wformat\-contains\-nul
  \&\-Wformat\-diag
*************** Options\fR and \fBObjective-C and Object
*** 6092,6130 ****
  \&\-Wformat\-truncation=1
  \&\-Wformat\-zero\-length
  \&\-Wframe\-address
! \&\-Wimplicit\fR (C and Objective-C only)
! \&\fB\-Wimplicit\-function\-declaration\fR (C and Objective-C only)
! \&\fB\-Wimplicit\-int\fR (C and Objective-C only)
  \&\fB\-Winfinite\-recursion
! \&\-Winit\-self\fR (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Wint\-in\-bool\-context
  \&\-Wlogical\-not\-parentheses
  \&\-Wmain\fR (only for C/ObjC and unless\fB \fR\fB\-ffreestanding\fR)
  \&\fB\-Wmaybe\-uninitialized
  \&\-Wmemset\-elt\-size
  \&\-Wmemset\-transposed\-args
! \&\-Wmisleading\-indentation\fR (only for C/\*(C+)
  \&\fB\-Wmismatched\-dealloc
! \&\-Wmismatched\-new\-delete\fR (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Wmissing\-attributes
  \&\-Wmissing\-braces\fR (only for C/ObjC)
  \&\fB\-Wmultistatement\-macros
! \&\-Wnarrowing\fR  (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Wnonnull
  \&\-Wnonnull\-compare
! \&\-Wopenmp\-simd\fR (C and \*(C+ only)
! \&\fB\-Woverloaded\-virtual=1\fR (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Wpacked\-not\-aligned
  \&\-Wparentheses
! \&\-Wpessimizing\-move\fR (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Wpointer\-sign\fR (only for C/ObjC)
! \&\fB\-Wrange\-loop\-construct\fR (\*(C+ and Objective\-\*(C+ only)
! \&\fB\-Wreorder\fR (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Wrestrict
  \&\-Wreturn\-type
! \&\-Wself\-move\fR (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Wsequence\-point
! \&\-Wsign\-compare\fR (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Wsizeof\-array\-div
  \&\-Wsizeof\-pointer\-div
  \&\-Wsizeof\-pointer\-memaccess
--- 6025,6063 ----
  \&\-Wformat\-truncation=1
  \&\-Wformat\-zero\-length
  \&\-Wframe\-address
! \&\-Wimplicit\fR (C and Objective\-C only)
! \&\fB\-Wimplicit\-function\-declaration\fR (C and Objective\-C only)
! \&\fB\-Wimplicit\-int\fR (C and Objective\-C only)
  \&\fB\-Winfinite\-recursion
! \&\-Winit\-self\fR (C++ and Objective\-C++ only)
  \&\fB\-Wint\-in\-bool\-context
  \&\-Wlogical\-not\-parentheses
  \&\-Wmain\fR (only for C/ObjC and unless\fB \fR\fB\-ffreestanding\fR)
  \&\fB\-Wmaybe\-uninitialized
  \&\-Wmemset\-elt\-size
  \&\-Wmemset\-transposed\-args
! \&\-Wmisleading\-indentation\fR (only for C/C++)
  \&\fB\-Wmismatched\-dealloc
! \&\-Wmismatched\-new\-delete\fR (C++ and Objective\-C++ only)
  \&\fB\-Wmissing\-attributes
  \&\-Wmissing\-braces\fR (only for C/ObjC)
  \&\fB\-Wmultistatement\-macros
! \&\-Wnarrowing\fR  (C++ and Objective\-C++ only)
  \&\fB\-Wnonnull
  \&\-Wnonnull\-compare
! \&\-Wopenmp\-simd\fR (C and C++ only)
! \&\fB\-Woverloaded\-virtual=1\fR (C++ and Objective\-C++ only)
  \&\fB\-Wpacked\-not\-aligned
  \&\-Wparentheses
! \&\-Wpessimizing\-move\fR (C++ and Objective\-C++ only)
  \&\fB\-Wpointer\-sign\fR (only for C/ObjC)
! \&\fB\-Wrange\-loop\-construct\fR (C++ and Objective\-C++ only)
! \&\fB\-Wreorder\fR (C++ and Objective\-C++ only)
  \&\fB\-Wrestrict
  \&\-Wreturn\-type
! \&\-Wself\-move\fR (C++ and Objective\-C++ only)
  \&\fB\-Wsequence\-point
! \&\-Wsign\-compare\fR (C++ and Objective\-C++ only)
  \&\fB\-Wsizeof\-array\-div
  \&\-Wsizeof\-pointer\-div
  \&\-Wsizeof\-pointer\-memaccess
*************** others warn about constructions that are
*** 6155,6161 ****
  some cases, and there is no simple way to modify the code to suppress
  the warning. Some of them are enabled by \fB\-Wextra\fR but many of
  them must be enabled individually.
! .IP "\fB\-Wextra\fR" 4
  .IX Item "-Wextra"
  This enables some extra warning flags that are not enabled by
  \&\fB\-Wall\fR. (This option used to be called \fB\-W\fR.  The older
--- 6088,6094 ----
  some cases, and there is no simple way to modify the code to suppress
  the warning. Some of them are enabled by \fB\-Wextra\fR but many of
  them must be enabled individually.
! .IP \fB\-Wextra\fR 4
  .IX Item "-Wextra"
  This enables some extra warning flags that are not enabled by
  \&\fB\-Wall\fR. (This option used to be called \fB\-W\fR.  The older
*************** name is still supported, but the newer n
*** 6166,6177 ****
  \&\-Wcalloc\-transposed\-args
  \&\-Wcast\-function\-type
  \&\-Wclobbered
! \&\-Wdangling\-reference\fR (\*(C+ only)
! \&\fB\-Wdeprecated\-copy\fR (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Wempty\-body
  \&\-Wenum\-conversion\fR (only for C/ObjC)
  \&\fB\-Wexpansion\-to\-defined
! \&\-Wignored\-qualifiers\fR  (only for C/\*(C+)
  \&\fB\-Wimplicit\-fallthrough=3
  \&\-Wmaybe\-uninitialized
  \&\-Wmissing\-field\-initializers
--- 6099,6110 ----
  \&\-Wcalloc\-transposed\-args
  \&\-Wcast\-function\-type
  \&\-Wclobbered
! \&\-Wdangling\-reference\fR (C++ only)
! \&\fB\-Wdeprecated\-copy\fR (C++ and Objective\-C++ only)
  \&\fB\-Wempty\-body
  \&\-Wenum\-conversion\fR (only for C/ObjC)
  \&\fB\-Wexpansion\-to\-defined
! \&\-Wignored\-qualifiers\fR  (only for C/C++)
  \&\fB\-Wimplicit\-fallthrough=3
  \&\-Wmaybe\-uninitialized
  \&\-Wmissing\-field\-initializers
*************** name is still supported, but the newer n
*** 6179,6188 ****
  \&\fB\-Wmissing\-parameter\-type\fR (C/ObjC only)
  \&\fB\-Wold\-style\-declaration\fR (C/ObjC only)
  \&\fB\-Woverride\-init\fR (C/ObjC only)
! \&\fB\-Wredundant\-move\fR (\*(C+ and Objective\-\*(C+ only)
! \&\fB\-Wshift\-negative\-value\fR (in \*(C+11 to \*(C+17 and in C99 and newer)
! \&\fB\-Wsign\-compare\fR (\*(C+ and Objective\-\*(C+ only)
! \&\fB\-Wsized\-deallocation\fR (\*(C+ and Objective\-\*(C+ only)
  \&\fB\-Wstring\-compare
  \&\-Wtype\-limits
  \&\-Wuninitialized
--- 6112,6121 ----
  \&\fB\-Wmissing\-parameter\-type\fR (C/ObjC only)
  \&\fB\-Wold\-style\-declaration\fR (C/ObjC only)
  \&\fB\-Woverride\-init\fR (C/ObjC only)
! \&\fB\-Wredundant\-move\fR (C++ and Objective\-C++ only)
! \&\fB\-Wshift\-negative\-value\fR (in C++11 to C++17 and in C99 and newer)
! \&\fB\-Wsign\-compare\fR (C++ and Objective\-C++ only)
! \&\fB\-Wsized\-deallocation\fR (C++ and Objective\-C++ only)
  \&\fB\-Wstring\-compare
  \&\-Wtype\-limits
  \&\-Wuninitialized
*************** name is still supported, but the newer n
*** 6193,6233 ****
  The option \fB\-Wextra\fR also prints warning messages for the
  following cases:
  .RS 4
! .IP "*" 4
  A pointer is compared against integer zero with \f(CW\*(C`<\*(C'\fR, \f(CW\*(C`<=\*(C'\fR,
  \&\f(CW\*(C`>\*(C'\fR, or \f(CW\*(C`>=\*(C'\fR.
! .IP "*" 4
! (\*(C+ only) An enumerator and a non-enumerator both appear in a
  conditional expression.
! .IP "*" 4
! (\*(C+ only) Ambiguous virtual bases.
! .IP "*" 4
! (\*(C+ only) Subscripting an array that has been declared \f(CW\*(C`register\*(C'\fR.
! .IP "*" 4
! (\*(C+ only) Taking the address of a variable that has been declared
  \&\f(CW\*(C`register\*(C'\fR.
! .IP "*" 4
! (\*(C+ only) A base class is not initialized in the copy constructor
  of a derived class.
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wabi\fR (C, Objective-C, \*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wabi (C, Objective-C, and Objective- only)"
! Warn about code affected by \s-1ABI\s0 changes.  This includes code that may
! not be compatible with the vendor-neutral \*(C+ \s-1ABI\s0 as well as the psABI
  for the particular target.  The latter warnings are also controlled
  separately by \fB\-Wpsabi\fR, which is implied by \fB\-Wabi\fR.
  .Sp
! Since G++ now defaults to updating the \s-1ABI\s0 with each major release,
! normally \fB\-Wabi\fR warns only about \*(C+ \s-1ABI\s0 compatibility
  problems if there is a check added later in a release series for an
! \&\s-1ABI\s0 issue discovered since the initial release.  \fB\-Wabi\fR warns
! about more things if an older \s-1ABI\s0 version is selected (with
  \&\fB\-fabi\-version=\fR\fIn\fR).
  .Sp
  \&\fB\-Wabi\fR can also be used with an explicit version number to
! warn about \*(C+ \s-1ABI\s0 compatibility with a particular \fB\-fabi\-version\fR
  level, e.g. \fB\-Wabi=2\fR to warn about changes relative to
  \&\fB\-fabi\-version=2\fR.
  .Sp
--- 6126,6166 ----
  The option \fB\-Wextra\fR also prints warning messages for the
  following cases:
  .RS 4
! .IP * 4
  A pointer is compared against integer zero with \f(CW\*(C`<\*(C'\fR, \f(CW\*(C`<=\*(C'\fR,
  \&\f(CW\*(C`>\*(C'\fR, or \f(CW\*(C`>=\*(C'\fR.
! .IP * 4
! (C++ only) An enumerator and a non\-enumerator both appear in a
  conditional expression.
! .IP * 4
! (C++ only) Ambiguous virtual bases.
! .IP * 4
! (C++ only) Subscripting an array that has been declared \f(CW\*(C`register\*(C'\fR.
! .IP * 4
! (C++ only) Taking the address of a variable that has been declared
  \&\f(CW\*(C`register\*(C'\fR.
! .IP * 4
! (C++ only) A base class is not initialized in the copy constructor
  of a derived class.
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wabi\fR (C, Objective\-C, C++ and Objective\-C++ only)" 4
! .IX Item "-Wabi (C, Objective-C, C++ and Objective-C++ only)"
! Warn about code affected by ABI changes.  This includes code that may
! not be compatible with the vendor\-neutral C++ ABI as well as the psABI
  for the particular target.  The latter warnings are also controlled
  separately by \fB\-Wpsabi\fR, which is implied by \fB\-Wabi\fR.
  .Sp
! Since G++ now defaults to updating the ABI with each major release,
! normally \fB\-Wabi\fR warns only about C++ ABI compatibility
  problems if there is a check added later in a release series for an
! ABI issue discovered since the initial release.  \fB\-Wabi\fR warns
! about more things if an older ABI version is selected (with
  \&\fB\-fabi\-version=\fR\fIn\fR).
  .Sp
  \&\fB\-Wabi\fR can also be used with an explicit version number to
! warn about C++ ABI compatibility with a particular \fB\-fabi\-version\fR
  level, e.g. \fB\-Wabi=2\fR to warn about changes relative to
  \&\fB\-fabi\-version=2\fR.
  .Sp
*************** If an explicit version number is provide
*** 6236,6242 ****
  from this option is used for compatibility aliases.  If no explicit
  version number is provided with this option, but
  \&\fB\-fabi\-compat\-version\fR is specified, that version number is
! used for \*(C+ \s-1ABI\s0 warnings.
  .Sp
  Although an effort has been made to warn about
  all such cases, there are probably some cases that are not warned about,
--- 6169,6175 ----
  from this option is used for compatibility aliases.  If no explicit
  version number is provided with this option, but
  \&\fB\-fabi\-compat\-version\fR is specified, that version number is
! used for C++ ABI warnings.
  .Sp
  Although an effort has been made to warn about
  all such cases, there are probably some cases that are not warned about,
*************** concerned about the fact that code gener
*** 6249,6258 ****
  compatible with code generated by other compilers.
  .Sp
  Known incompatibilities in \fB\-fabi\-version=2\fR (which was the
! default from \s-1GCC 3.4\s0 to 4.9) include:
  .RS 4
! .IP "*" 4
! A template with a non-type template parameter of reference type was
  mangled incorrectly:
  .Sp
  .Vb 3
--- 6182,6191 ----
  compatible with code generated by other compilers.
  .Sp
  Known incompatibilities in \fB\-fabi\-version=2\fR (which was the
! default from GCC 3.4 to 4.9) include:
  .RS 4
! .IP * 4
! A template with a non\-type template parameter of reference type was
  mangled incorrectly:
  .Sp
  .Vb 3
*************** mangled incorrectly:
*** 6262,6335 ****
  .Ve
  .Sp
  This was fixed in \fB\-fabi\-version=3\fR.
! .IP "*" 4
! \&\s-1SIMD\s0 vector types declared using \f(CW\*(C`_\|_attribute ((vector_size))\*(C'\fR were
! mangled in a non-standard way that does not allow for overloading of
  functions taking vectors of different sizes.
  .Sp
  The mangling was changed in \fB\-fabi\-version=4\fR.
! .IP "*" 4
  \&\f(CW\*(C`_\|_attribute ((const))\*(C'\fR and \f(CW\*(C`noreturn\*(C'\fR were mangled as type
  qualifiers, and \f(CW\*(C`decltype\*(C'\fR of a plain declaration was folded away.
  .Sp
  These mangling issues were fixed in \fB\-fabi\-version=5\fR.
! .IP "*" 4
  Scoped enumerators passed as arguments to a variadic function are
  promoted like unscoped enumerators, causing \f(CW\*(C`va_arg\*(C'\fR to complain.
  On most targets this does not actually affect the parameter passing
! \&\s-1ABI,\s0 as there is no way to pass an argument smaller than \f(CW\*(C`int\*(C'\fR.
  .Sp
! Also, the \s-1ABI\s0 changed the mangling of template argument packs,
  \&\f(CW\*(C`const_cast\*(C'\fR, \f(CW\*(C`static_cast\*(C'\fR, prefix increment/decrement, and
  a class scope function used as a template argument.
  .Sp
  These issues were corrected in \fB\-fabi\-version=6\fR.
! .IP "*" 4
  Lambdas in default argument scope were mangled incorrectly, and the
! \&\s-1ABI\s0 changed the mangling of \f(CW\*(C`nullptr_t\*(C'\fR.
  .Sp
  These issues were corrected in \fB\-fabi\-version=7\fR.
! .IP "*" 4
! When mangling a function type with function-cv-qualifiers, the
! un-qualified function type was incorrectly treated as a substitution
  candidate.
  .Sp
! This was fixed in \fB\-fabi\-version=8\fR, the default for \s-1GCC 5.1.\s0
! .IP "*" 4
! \&\f(CW\*(C`decltype(nullptr)\*(C'\fR incorrectly had an alignment of 1, leading to
! unaligned accesses.  Note that this did not affect the \s-1ABI\s0 of a
  function with a \f(CW\*(C`nullptr_t\*(C'\fR parameter, as parameters have a
  minimum alignment.
  .Sp
! This was fixed in \fB\-fabi\-version=9\fR, the default for \s-1GCC 5.2.\s0
! .IP "*" 4
! Target-specific attributes that affect the identity of a type, such as
  ia32 calling conventions on a function type (stdcall, regparm, etc.),
  did not affect the mangled name, leading to name collisions when
  function pointers were used as template arguments.
  .Sp
! This was fixed in \fB\-fabi\-version=10\fR, the default for \s-1GCC 6.1.\s0
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wpsabi\fR (C, Objective-C, \*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wpsabi (C, Objective-C, and Objective- only)"
! \&\fB\-Wpsabi\fR enables warnings about processor-specific \s-1ABI\s0
  changes, such as changes in alignment requirements or how function
! arguments are passed.  On several targets, including AArch64, \s-1ARM,\s0
! x86, \s-1MIPS,\s0 RS6000/PowerPC, and S/390, these details have changed
! between different versions of \s-1GCC\s0 and/or different versions of the C
! or \*(C+ language standards in ways that affect binary compatibility of
! compiled code.  With \fB\-Wpsabi\fR, \s-1GCC\s0 can detect potentially
  incompatible usages and warn you about them.
  .Sp
  \&\fB\-Wpsabi\fR is enabled by default, and is also implied by
  \&\fB\-Wabi\fR.
! .IP "\fB\-Wno\-changes\-meaning\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-changes-meaning ( and Objective- only)"
! \&\*(C+ requires that unqualified uses of a name within a class have the
  same meaning in the complete scope of the class, so declaring the name
! after using it is ill-formed:
  .Sp
  .Vb 3
  \&        struct A;
--- 6195,6268 ----
  .Ve
  .Sp
  This was fixed in \fB\-fabi\-version=3\fR.
! .IP * 4
! SIMD vector types declared using \f(CW\*(C`_\|_attribute ((vector_size))\*(C'\fR were
! mangled in a non\-standard way that does not allow for overloading of
  functions taking vectors of different sizes.
  .Sp
  The mangling was changed in \fB\-fabi\-version=4\fR.
! .IP * 4
  \&\f(CW\*(C`_\|_attribute ((const))\*(C'\fR and \f(CW\*(C`noreturn\*(C'\fR were mangled as type
  qualifiers, and \f(CW\*(C`decltype\*(C'\fR of a plain declaration was folded away.
  .Sp
  These mangling issues were fixed in \fB\-fabi\-version=5\fR.
! .IP * 4
  Scoped enumerators passed as arguments to a variadic function are
  promoted like unscoped enumerators, causing \f(CW\*(C`va_arg\*(C'\fR to complain.
  On most targets this does not actually affect the parameter passing
! ABI, as there is no way to pass an argument smaller than \f(CW\*(C`int\*(C'\fR.
  .Sp
! Also, the ABI changed the mangling of template argument packs,
  \&\f(CW\*(C`const_cast\*(C'\fR, \f(CW\*(C`static_cast\*(C'\fR, prefix increment/decrement, and
  a class scope function used as a template argument.
  .Sp
  These issues were corrected in \fB\-fabi\-version=6\fR.
! .IP * 4
  Lambdas in default argument scope were mangled incorrectly, and the
! ABI changed the mangling of \f(CW\*(C`nullptr_t\*(C'\fR.
  .Sp
  These issues were corrected in \fB\-fabi\-version=7\fR.
! .IP * 4
! When mangling a function type with function\-cv\-qualifiers, the
! un\-qualified function type was incorrectly treated as a substitution
  candidate.
  .Sp
! This was fixed in \fB\-fabi\-version=8\fR, the default for GCC 5.1.
! .IP * 4
! \&\f(CWdecltype(nullptr)\fR incorrectly had an alignment of 1, leading to
! unaligned accesses.  Note that this did not affect the ABI of a
  function with a \f(CW\*(C`nullptr_t\*(C'\fR parameter, as parameters have a
  minimum alignment.
  .Sp
! This was fixed in \fB\-fabi\-version=9\fR, the default for GCC 5.2.
! .IP * 4
! Target\-specific attributes that affect the identity of a type, such as
  ia32 calling conventions on a function type (stdcall, regparm, etc.),
  did not affect the mangled name, leading to name collisions when
  function pointers were used as template arguments.
  .Sp
! This was fixed in \fB\-fabi\-version=10\fR, the default for GCC 6.1.
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wpsabi\fR (C, Objective\-C, C++ and Objective\-C++ only)" 4
! .IX Item "-Wpsabi (C, Objective-C, C++ and Objective-C++ only)"
! \&\fB\-Wpsabi\fR enables warnings about processor\-specific ABI
  changes, such as changes in alignment requirements or how function
! arguments are passed.  On several targets, including AArch64, ARM,
! x86, MIPS, RS6000/PowerPC, and S/390, these details have changed
! between different versions of GCC and/or different versions of the C
! or C++ language standards in ways that affect binary compatibility of
! compiled code.  With \fB\-Wpsabi\fR, GCC can detect potentially
  incompatible usages and warn you about them.
  .Sp
  \&\fB\-Wpsabi\fR is enabled by default, and is also implied by
  \&\fB\-Wabi\fR.
! .IP "\fB\-Wno\-changes\-meaning\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-changes-meaning (C++ and Objective-C++ only)"
! C++ requires that unqualified uses of a name within a class have the
  same meaning in the complete scope of the class, so declaring the name
! after using it is ill\-formed:
  .Sp
  .Vb 3
  \&        struct A;
*************** error case can be reduced to a warning w
*** 6344,6381 ****
  \&\fB\-Wno\-error=changes\-meaning\fR or \fB\-fpermissive\fR.
  .Sp
  Both diagnostics are also suppressed by \fB\-fms\-extensions\fR.
! .IP "\fB\-Wchar\-subscripts\fR" 4
  .IX Item "-Wchar-subscripts"
  Warn if an array subscript has type \f(CW\*(C`char\*(C'\fR.  This is a common cause
  of error, as programmers often forget that this type is signed on some
  machines.
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wno\-coverage\-mismatch\fR" 4
  .IX Item "-Wno-coverage-mismatch"
  Warn if feedback profiles do not match when using the
  \&\fB\-fprofile\-use\fR option.
  If a source file is changed between compiling with \fB\-fprofile\-generate\fR
  and with \fB\-fprofile\-use\fR, the files with the profile feedback can fail
! to match the source file and \s-1GCC\s0 cannot use the profile feedback
  information.  By default, this warning is enabled and is treated as an
  error.  \fB\-Wno\-coverage\-mismatch\fR can be used to disable the
  warning or \fB\-Wno\-error=coverage\-mismatch\fR can be used to
  disable the error.  Disabling the error for this warning can result in
  poorly optimized code and is useful only in the
! case of very minor changes such as bug fixes to an existing code-base.
  Completely disabling the warning is not recommended.
! .IP "\fB\-Wno\-coverage\-too\-many\-conditions\fR" 4
  .IX Item "-Wno-coverage-too-many-conditions"
  Warn if \fB\-fcondition\-coverage\fR is used and an expression have too many
! terms and \s-1GCC\s0 gives up coverage.  Coverage is given up when there are more
  terms in the conditional than there are bits in a \f(CW\*(C`gcov_type_unsigned\*(C'\fR.
  This warning is enabled by default.
! .IP "\fB\-Wno\-coverage\-too\-many\-paths\fR" 4
  .IX Item "-Wno-coverage-too-many-paths"
  Warn if \fB\-fpath\-coverage\fR is used and a function has too many
! paths and \s-1GCC\s0 gives up coverage.  Giving up is controlled by
  \&\fB\-fpath\-coverage\-limit\fR.  This warning is enabled by default.
! .IP "\fB\-Wno\-coverage\-invalid\-line\-number\fR" 4
  .IX Item "-Wno-coverage-invalid-line-number"
  Warn in case a function ends earlier than it begins due
  to an invalid linenum macros.  The warning is emitted only
--- 6277,6314 ----
  \&\fB\-Wno\-error=changes\-meaning\fR or \fB\-fpermissive\fR.
  .Sp
  Both diagnostics are also suppressed by \fB\-fms\-extensions\fR.
! .IP \fB\-Wchar\-subscripts\fR 4
  .IX Item "-Wchar-subscripts"
  Warn if an array subscript has type \f(CW\*(C`char\*(C'\fR.  This is a common cause
  of error, as programmers often forget that this type is signed on some
  machines.
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wno\-coverage\-mismatch\fR 4
  .IX Item "-Wno-coverage-mismatch"
  Warn if feedback profiles do not match when using the
  \&\fB\-fprofile\-use\fR option.
  If a source file is changed between compiling with \fB\-fprofile\-generate\fR
  and with \fB\-fprofile\-use\fR, the files with the profile feedback can fail
! to match the source file and GCC cannot use the profile feedback
  information.  By default, this warning is enabled and is treated as an
  error.  \fB\-Wno\-coverage\-mismatch\fR can be used to disable the
  warning or \fB\-Wno\-error=coverage\-mismatch\fR can be used to
  disable the error.  Disabling the error for this warning can result in
  poorly optimized code and is useful only in the
! case of very minor changes such as bug fixes to an existing code\-base.
  Completely disabling the warning is not recommended.
! .IP \fB\-Wno\-coverage\-too\-many\-conditions\fR 4
  .IX Item "-Wno-coverage-too-many-conditions"
  Warn if \fB\-fcondition\-coverage\fR is used and an expression have too many
! terms and GCC gives up coverage.  Coverage is given up when there are more
  terms in the conditional than there are bits in a \f(CW\*(C`gcov_type_unsigned\*(C'\fR.
  This warning is enabled by default.
! .IP \fB\-Wno\-coverage\-too\-many\-paths\fR 4
  .IX Item "-Wno-coverage-too-many-paths"
  Warn if \fB\-fpath\-coverage\fR is used and a function has too many
! paths and GCC gives up coverage.  Giving up is controlled by
  \&\fB\-fpath\-coverage\-limit\fR.  This warning is enabled by default.
! .IP \fB\-Wno\-coverage\-invalid\-line\-number\fR 4
  .IX Item "-Wno-coverage-invalid-line-number"
  Warn in case a function ends earlier than it begins due
  to an invalid linenum macros.  The warning is emitted only
*************** By default, this warning is enabled and
*** 6385,6404 ****
  error.  \fB\-Wno\-coverage\-invalid\-line\-number\fR can be used to disable the
  warning or \fB\-Wno\-error=coverage\-invalid\-line\-number\fR can be used to
  disable the error.
! .IP "\fB\-Wno\-cpp\fR (C, Objective-C, \*(C+, Objective\-\*(C+ and Fortran only)" 4
! .IX Item "-Wno-cpp (C, Objective-C, , Objective- and Fortran only)"
  Suppress warning messages emitted by \f(CW\*(C`#warning\*(C'\fR directives.
! .IP "\fB\-Wdouble\-promotion\fR (C, \*(C+, Objective-C and Objective\-\*(C+ only)" 4
! .IX Item "-Wdouble-promotion (C, , Objective-C and Objective- only)"
  Give a warning when a value of type \f(CW\*(C`float\*(C'\fR is implicitly
! promoted to \f(CW\*(C`double\*(C'\fR.  CPUs with a 32\-bit \*(L"single-precision\*(R"
! floating-point unit implement \f(CW\*(C`float\*(C'\fR in hardware, but emulate
  \&\f(CW\*(C`double\*(C'\fR in software.  On such a machine, doing computations
  using \f(CW\*(C`double\*(C'\fR values is much more expensive because of the
  overhead required for software emulation.
  .Sp
  It is easy to accidentally do computations with \f(CW\*(C`double\*(C'\fR because
! floating-point literals are implicitly of type \f(CW\*(C`double\*(C'\fR.  For
  example, in:
  .Sp
  .Vb 4
--- 6318,6337 ----
  error.  \fB\-Wno\-coverage\-invalid\-line\-number\fR can be used to disable the
  warning or \fB\-Wno\-error=coverage\-invalid\-line\-number\fR can be used to
  disable the error.
! .IP "\fB\-Wno\-cpp\fR (C, Objective\-C, C++, Objective\-C++ and Fortran only)" 4
! .IX Item "-Wno-cpp (C, Objective-C, C++, Objective-C++ and Fortran only)"
  Suppress warning messages emitted by \f(CW\*(C`#warning\*(C'\fR directives.
! .IP "\fB\-Wdouble\-promotion\fR (C, C++, Objective\-C and Objective\-C++ only)" 4
! .IX Item "-Wdouble-promotion (C, C++, Objective-C and Objective-C++ only)"
  Give a warning when a value of type \f(CW\*(C`float\*(C'\fR is implicitly
! promoted to \f(CW\*(C`double\*(C'\fR.  CPUs with a 32\-bit "single\-precision"
! floating\-point unit implement \f(CW\*(C`float\*(C'\fR in hardware, but emulate
  \&\f(CW\*(C`double\*(C'\fR in software.  On such a machine, doing computations
  using \f(CW\*(C`double\*(C'\fR values is much more expensive because of the
  overhead required for software emulation.
  .Sp
  It is easy to accidentally do computations with \f(CW\*(C`double\*(C'\fR because
! floating\-point literals are implicitly of type \f(CW\*(C`double\*(C'\fR.  For
  example, in:
  .Sp
  .Vb 4
*************** example, in:
*** 6409,6424 ****
  .Ve
  .Sp
  the compiler performs the entire computation with \f(CW\*(C`double\*(C'\fR
! because the floating-point literal is a \f(CW\*(C`double\*(C'\fR.
! .IP "\fB\-Wduplicate\-decl\-specifier\fR (C and Objective-C only)" 4
  .IX Item "-Wduplicate-decl-specifier (C and Objective-C only)"
  Warn if a declaration has duplicate \f(CW\*(C`const\*(C'\fR, \f(CW\*(C`volatile\*(C'\fR,
  \&\f(CW\*(C`restrict\*(C'\fR or \f(CW\*(C`_Atomic\*(C'\fR specifier.  This warning is enabled by
  \&\fB\-Wall\fR.
! .IP "\fB\-Wformat\fR" 4
  .IX Item "-Wformat"
  .PD 0
! .IP "\fB\-Wformat=\fR\fIn\fR" 4
  .IX Item "-Wformat=n"
  .PD
  Check calls to \f(CW\*(C`printf\*(C'\fR and \f(CW\*(C`scanf\*(C'\fR, etc., to make sure that
--- 6342,6357 ----
  .Ve
  .Sp
  the compiler performs the entire computation with \f(CW\*(C`double\*(C'\fR
! because the floating\-point literal is a \f(CW\*(C`double\*(C'\fR.
! .IP "\fB\-Wduplicate\-decl\-specifier\fR (C and Objective\-C only)" 4
  .IX Item "-Wduplicate-decl-specifier (C and Objective-C only)"
  Warn if a declaration has duplicate \f(CW\*(C`const\*(C'\fR, \f(CW\*(C`volatile\*(C'\fR,
  \&\f(CW\*(C`restrict\*(C'\fR or \f(CW\*(C`_Atomic\*(C'\fR specifier.  This warning is enabled by
  \&\fB\-Wall\fR.
! .IP \fB\-Wformat\fR 4
  .IX Item "-Wformat"
  .PD 0
! .IP \fB\-Wformat=\fR\fIn\fR 4
  .IX Item "-Wformat=n"
  .PD
  Check calls to \f(CW\*(C`printf\*(C'\fR and \f(CW\*(C`scanf\*(C'\fR, etc., to make sure that
*************** specified, and that the conversions spec
*** 6427,6452 ****
  sense.  This includes standard functions, and others specified by format
  attributes, in the \f(CW\*(C`printf\*(C'\fR,
  \&\f(CW\*(C`scanf\*(C'\fR, \f(CW\*(C`strftime\*(C'\fR and \f(CW\*(C`strfmon\*(C'\fR (an X/Open extension,
! not in the C standard) families (or other target-specific families).
  Which functions are checked without format attributes having been
  specified depends on the standard version selected, and such checks of
  functions without the attribute specified are disabled by
  \&\fB\-ffreestanding\fR or \fB\-fno\-builtin\fR.
  .Sp
! The formats are checked against the format features supported by \s-1GNU\s0
! libc version 2.2.  These include all \s-1ISO C90\s0 and C99 features, as well
! as features from the Single Unix Specification and some \s-1BSD\s0 and \s-1GNU\s0
  extensions.  Other library implementations may not support all these
! features; \s-1GCC\s0 does not support warning about features that go beyond a
! particular library's limitations.  However, if \fB\-Wpedantic\fR is used
  with \fB\-Wformat\fR, warnings are given about format features not
  in the selected standard version (but not for \f(CW\*(C`strfmon\*(C'\fR formats,
  since those are not in any version of the C standard).
  .RS 4
! .IP "\fB\-Wformat=1\fR" 4
  .IX Item "-Wformat=1"
  .PD 0
! .IP "\fB\-Wformat\fR" 4
  .IX Item "-Wformat"
  .PD
  Option \fB\-Wformat\fR is equivalent to \fB\-Wformat=1\fR, and
--- 6360,6385 ----
  sense.  This includes standard functions, and others specified by format
  attributes, in the \f(CW\*(C`printf\*(C'\fR,
  \&\f(CW\*(C`scanf\*(C'\fR, \f(CW\*(C`strftime\*(C'\fR and \f(CW\*(C`strfmon\*(C'\fR (an X/Open extension,
! not in the C standard) families (or other target\-specific families).
  Which functions are checked without format attributes having been
  specified depends on the standard version selected, and such checks of
  functions without the attribute specified are disabled by
  \&\fB\-ffreestanding\fR or \fB\-fno\-builtin\fR.
  .Sp
! The formats are checked against the format features supported by GNU
! libc version 2.2.  These include all ISO C90 and C99 features, as well
! as features from the Single Unix Specification and some BSD and GNU
  extensions.  Other library implementations may not support all these
! features; GCC does not support warning about features that go beyond a
! particular library\*(Aqs limitations.  However, if \fB\-Wpedantic\fR is used
  with \fB\-Wformat\fR, warnings are given about format features not
  in the selected standard version (but not for \f(CW\*(C`strfmon\*(C'\fR formats,
  since those are not in any version of the C standard).
  .RS 4
! .IP \fB\-Wformat=1\fR 4
  .IX Item "-Wformat=1"
  .PD 0
! .IP \fB\-Wformat\fR 4
  .IX Item "-Wformat"
  .PD
  Option \fB\-Wformat\fR is equivalent to \fB\-Wformat=1\fR, and
*************** aspects of this level of format checking
*** 6457,6463 ****
  options: \fB\-Wno\-format\-contains\-nul\fR,
  \&\fB\-Wno\-format\-extra\-args\fR, and \fB\-Wno\-format\-zero\-length\fR.
  \&\fB\-Wformat\fR is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wformat=2\fR" 4
  .IX Item "-Wformat=2"
  Enable \fB\-Wformat\fR plus additional format checks.  Currently
  equivalent to \fB\-Wformat \-Wformat\-nonliteral \-Wformat\-security
--- 6390,6396 ----
  options: \fB\-Wno\-format\-contains\-nul\fR,
  \&\fB\-Wno\-format\-extra\-args\fR, and \fB\-Wno\-format\-zero\-length\fR.
  \&\fB\-Wformat\fR is enabled by \fB\-Wall\fR.
! .IP \fB\-Wformat=2\fR 4
  .IX Item "-Wformat=2"
  Enable \fB\-Wformat\fR plus additional format checks.  Currently
  equivalent to \fB\-Wformat \-Wformat\-nonliteral \-Wformat\-security
*************** equivalent to \fB\-Wformat \-Wformat\-no
*** 6465,6475 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wno\-format\-contains\-nul\fR" 4
  .IX Item "-Wno-format-contains-nul"
  If \fB\-Wformat\fR is specified, do not warn about format strings that
! contain \s-1NUL\s0 bytes.
! .IP "\fB\-Wno\-format\-extra\-args\fR" 4
  .IX Item "-Wno-format-extra-args"
  If \fB\-Wformat\fR is specified, do not warn about excess arguments to a
  \&\f(CW\*(C`printf\*(C'\fR or \f(CW\*(C`scanf\*(C'\fR format function.  The C standard specifies
--- 6398,6408 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-Wno\-format\-contains\-nul\fR 4
  .IX Item "-Wno-format-contains-nul"
  If \fB\-Wformat\fR is specified, do not warn about format strings that
! contain NUL bytes.
! .IP \fB\-Wno\-format\-extra\-args\fR 4
  .IX Item "-Wno-format-extra-args"
  If \fB\-Wformat\fR is specified, do not warn about excess arguments to a
  \&\f(CW\*(C`printf\*(C'\fR or \f(CW\*(C`scanf\*(C'\fR format function.  The C standard specifies
*************** type to pass to \f(CW\*(C`va_arg\*(C'\fR
*** 6482,6505 ****
  in the case of \f(CW\*(C`scanf\*(C'\fR formats, this option suppresses the
  warning if the unused arguments are all pointers, since the Single
  Unix Specification says that such unused arguments are allowed.
! .IP "\fB\-Wformat\-overflow\fR" 4
  .IX Item "-Wformat-overflow"
  .PD 0
! .IP "\fB\-Wformat\-overflow=\fR\fIlevel\fR" 4
  .IX Item "-Wformat-overflow=level"
  .PD
  Warn about calls to formatted input/output functions such as \f(CW\*(C`sprintf\*(C'\fR
  and \f(CW\*(C`vsprintf\*(C'\fR that might overflow the destination buffer.  When the
  exact number of bytes written by a format directive cannot be determined
! at compile-time it is estimated based on heuristics that depend on the
  \&\fIlevel\fR argument and on optimization.  While enabling optimization
  will in most cases improve the accuracy of the warning, it may also
  result in false positives.
  .RS 4
! .IP "\fB\-Wformat\-overflow\fR" 4
  .IX Item "-Wformat-overflow"
  .PD 0
! .IP "\fB\-Wformat\-overflow=1\fR" 4
  .IX Item "-Wformat-overflow=1"
  .PD
  Level \fI1\fR of \fB\-Wformat\-overflow\fR enabled by \fB\-Wformat\fR
--- 6415,6438 ----
  in the case of \f(CW\*(C`scanf\*(C'\fR formats, this option suppresses the
  warning if the unused arguments are all pointers, since the Single
  Unix Specification says that such unused arguments are allowed.
! .IP \fB\-Wformat\-overflow\fR 4
  .IX Item "-Wformat-overflow"
  .PD 0
! .IP \fB\-Wformat\-overflow=\fR\fIlevel\fR 4
  .IX Item "-Wformat-overflow=level"
  .PD
  Warn about calls to formatted input/output functions such as \f(CW\*(C`sprintf\*(C'\fR
  and \f(CW\*(C`vsprintf\*(C'\fR that might overflow the destination buffer.  When the
  exact number of bytes written by a format directive cannot be determined
! at compile\-time it is estimated based on heuristics that depend on the
  \&\fIlevel\fR argument and on optimization.  While enabling optimization
  will in most cases improve the accuracy of the warning, it may also
  result in false positives.
  .RS 4
! .IP \fB\-Wformat\-overflow\fR 4
  .IX Item "-Wformat-overflow"
  .PD 0
! .IP \fB\-Wformat\-overflow=1\fR 4
  .IX Item "-Wformat-overflow=1"
  .PD
  Level \fI1\fR of \fB\-Wformat\-overflow\fR enabled by \fB\-Wformat\fR
*************** likely overflow the buffer.  At this lev
*** 6508,6518 ****
  directives with unknown values are assumed to have the value of one, and
  strings of unknown length to be empty.  Numeric arguments that are known
  to be bounded to a subrange of their type, or string arguments whose output
! is bounded either by their directive's precision or by a finite set of
  string literals, are assumed to take on the value within the range that
  results in the most bytes on output.  For example, the call to \f(CW\*(C`sprintf\*(C'\fR
  below is diagnosed because even with both \fIa\fR and \fIb\fR equal to zero,
! the terminating \s-1NUL\s0 character (\f(CW\*(Aq\e0\*(Aq\fR) appended by the function
  to the destination buffer will be written past its end.  Increasing
  the size of the buffer by a single byte is sufficient to avoid the
  warning, though it may not be sufficient to avoid the overflow.
--- 6441,6451 ----
  directives with unknown values are assumed to have the value of one, and
  strings of unknown length to be empty.  Numeric arguments that are known
  to be bounded to a subrange of their type, or string arguments whose output
! is bounded either by their directive\*(Aqs precision or by a finite set of
  string literals, are assumed to take on the value within the range that
  results in the most bytes on output.  For example, the call to \f(CW\*(C`sprintf\*(C'\fR
  below is diagnosed because even with both \fIa\fR and \fIb\fR equal to zero,
! the terminating NUL character (\f(CW\*(Aq\e0\*(Aq\fR) appended by the function
  to the destination buffer will be written past its end.  Increasing
  the size of the buffer by a single byte is sufficient to avoid the
  warning, though it may not be sufficient to avoid the overflow.
*************** warning, though it may not be sufficient
*** 6524,6537 ****
  \&          sprintf (buf, "a = %i, b = %i\en", a, b);
  \&        }
  .Ve
! .IP "\fB\-Wformat\-overflow=2\fR" 4
  .IX Item "-Wformat-overflow=2"
  Level \fI2\fR warns also about calls that might overflow the destination
  buffer given an argument of sufficient length or magnitude.  At level
  \&\fI2\fR, unknown numeric arguments are assumed to have the minimum
  representable value for signed types with a precision greater than 1, and
  the maximum representable value otherwise.  Unknown string arguments whose
! length cannot be assumed to be bounded either by the directive's precision,
  or by a finite set of string literals they may evaluate to, or the character
  array they may point to, are assumed to be 1 character long.
  .Sp
--- 6457,6470 ----
  \&          sprintf (buf, "a = %i, b = %i\en", a, b);
  \&        }
  .Ve
! .IP \fB\-Wformat\-overflow=2\fR 4
  .IX Item "-Wformat-overflow=2"
  Level \fI2\fR warns also about calls that might overflow the destination
  buffer given an argument of sufficient length or magnitude.  At level
  \&\fI2\fR, unknown numeric arguments are assumed to have the minimum
  representable value for signed types with a precision greater than 1, and
  the maximum representable value otherwise.  Unknown string arguments whose
! length cannot be assumed to be bounded either by the directive\*(Aqs precision,
  or by a finite set of string literals they may evaluate to, or the character
  array they may point to, are assumed to be 1 character long.
  .Sp
*************** this time because with \fIa\fR equal to
*** 6540,6546 ****
  \&\f(CW%i\fR directive will write some of its digits beyond the end of
  the destination buffer.  To make the call safe regardless of the values
  of the two variables, the size of the destination buffer must be increased
! to at least 34 bytes.  \s-1GCC\s0 includes the minimum size of the buffer in
  an informational note following the warning.
  .Sp
  An alternative to increasing the size of the destination buffer is to
--- 6473,6479 ----
  \&\f(CW%i\fR directive will write some of its digits beyond the end of
  the destination buffer.  To make the call safe regardless of the values
  of the two variables, the size of the destination buffer must be increased
! to at least 34 bytes.  GCC includes the minimum size of the buffer in
  an informational note following the warning.
  .Sp
  An alternative to increasing the size of the destination buffer is to
*************** required size of the buffer to 24 bytes.
*** 6565,6620 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wno\-format\-zero\-length\fR" 4
  .IX Item "-Wno-format-zero-length"
! If \fB\-Wformat\fR is specified, do not warn about zero-length formats.
! The C standard specifies that zero-length formats are allowed.
! .IP "\fB\-Wformat\-nonliteral\fR" 4
  .IX Item "-Wformat-nonliteral"
  If \fB\-Wformat\fR is specified, also warn if the format string is not a
  string literal and so cannot be checked, unless the format function
  takes its format arguments as a \f(CW\*(C`va_list\*(C'\fR.
! .IP "\fB\-Wformat\-security\fR" 4
  .IX Item "-Wformat-security"
  If \fB\-Wformat\fR is specified, also warn about uses of format
  functions that represent possible security problems.  At present, this
  warns about calls to \f(CW\*(C`printf\*(C'\fR and \f(CW\*(C`scanf\*(C'\fR functions where the
  format string is not a string literal and there are no format arguments,
  as in \f(CW\*(C`printf (foo);\*(C'\fR.  This may be a security hole if the format
! string came from untrusted input and contains \fB\f(CB%n\fB\fR.  (This is
  currently a subset of what \fB\-Wformat\-nonliteral\fR warns about, but
  in future warnings may be added to \fB\-Wformat\-security\fR that are not
  included in \fB\-Wformat\-nonliteral\fR.)
! .IP "\fB\-Wformat\-signedness\fR" 4
  .IX Item "-Wformat-signedness"
  If \fB\-Wformat\fR is specified, also warn if the format string
  requires an unsigned argument and the argument is signed and vice versa.
! .IP "\fB\-Wformat\-truncation\fR" 4
  .IX Item "-Wformat-truncation"
  .PD 0
! .IP "\fB\-Wformat\-truncation=\fR\fIlevel\fR" 4
  .IX Item "-Wformat-truncation=level"
  .PD
  Warn about calls to formatted input/output functions such as \f(CW\*(C`snprintf\*(C'\fR
  and \f(CW\*(C`vsnprintf\*(C'\fR that might result in output truncation.  When the exact
  number of bytes written by a format directive cannot be determined at
! compile-time it is estimated based on heuristics that depend on
  the \fIlevel\fR argument and on optimization.  While enabling optimization
  will in most cases improve the accuracy of the warning, it may also result
  in false positives.  Except as noted otherwise, the option uses the same
  logic \fB\-Wformat\-overflow\fR.
  .RS 4
! .IP "\fB\-Wformat\-truncation\fR" 4
  .IX Item "-Wformat-truncation"
  .PD 0
! .IP "\fB\-Wformat\-truncation=1\fR" 4
  .IX Item "-Wformat-truncation=1"
  .PD
  Level \fI1\fR of \fB\-Wformat\-truncation\fR enabled by \fB\-Wformat\fR
  employs a conservative approach that warns only about calls to bounded
  functions whose return value is unused and that will most likely result
  in output truncation.
! .IP "\fB\-Wformat\-truncation=2\fR" 4
  .IX Item "-Wformat-truncation=2"
  Level \fI2\fR warns also about calls to bounded functions whose return
  value is used and that might result in truncation given an argument of
--- 6498,6553 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-Wno\-format\-zero\-length\fR 4
  .IX Item "-Wno-format-zero-length"
! If \fB\-Wformat\fR is specified, do not warn about zero\-length formats.
! The C standard specifies that zero\-length formats are allowed.
! .IP \fB\-Wformat\-nonliteral\fR 4
  .IX Item "-Wformat-nonliteral"
  If \fB\-Wformat\fR is specified, also warn if the format string is not a
  string literal and so cannot be checked, unless the format function
  takes its format arguments as a \f(CW\*(C`va_list\*(C'\fR.
! .IP \fB\-Wformat\-security\fR 4
  .IX Item "-Wformat-security"
  If \fB\-Wformat\fR is specified, also warn about uses of format
  functions that represent possible security problems.  At present, this
  warns about calls to \f(CW\*(C`printf\*(C'\fR and \f(CW\*(C`scanf\*(C'\fR functions where the
  format string is not a string literal and there are no format arguments,
  as in \f(CW\*(C`printf (foo);\*(C'\fR.  This may be a security hole if the format
! string came from untrusted input and contains \fR\f(CB%n\fR\fB\fR.  (This is
  currently a subset of what \fB\-Wformat\-nonliteral\fR warns about, but
  in future warnings may be added to \fB\-Wformat\-security\fR that are not
  included in \fB\-Wformat\-nonliteral\fR.)
! .IP \fB\-Wformat\-signedness\fR 4
  .IX Item "-Wformat-signedness"
  If \fB\-Wformat\fR is specified, also warn if the format string
  requires an unsigned argument and the argument is signed and vice versa.
! .IP \fB\-Wformat\-truncation\fR 4
  .IX Item "-Wformat-truncation"
  .PD 0
! .IP \fB\-Wformat\-truncation=\fR\fIlevel\fR 4
  .IX Item "-Wformat-truncation=level"
  .PD
  Warn about calls to formatted input/output functions such as \f(CW\*(C`snprintf\*(C'\fR
  and \f(CW\*(C`vsnprintf\*(C'\fR that might result in output truncation.  When the exact
  number of bytes written by a format directive cannot be determined at
! compile\-time it is estimated based on heuristics that depend on
  the \fIlevel\fR argument and on optimization.  While enabling optimization
  will in most cases improve the accuracy of the warning, it may also result
  in false positives.  Except as noted otherwise, the option uses the same
  logic \fB\-Wformat\-overflow\fR.
  .RS 4
! .IP \fB\-Wformat\-truncation\fR 4
  .IX Item "-Wformat-truncation"
  .PD 0
! .IP \fB\-Wformat\-truncation=1\fR 4
  .IX Item "-Wformat-truncation=1"
  .PD
  Level \fI1\fR of \fB\-Wformat\-truncation\fR enabled by \fB\-Wformat\fR
  employs a conservative approach that warns only about calls to bounded
  functions whose return value is unused and that will most likely result
  in output truncation.
! .IP \fB\-Wformat\-truncation=2\fR 4
  .IX Item "-Wformat-truncation=2"
  Level \fI2\fR warns also about calls to bounded functions whose return
  value is used and that might result in truncation given an argument of
*************** sufficient length or magnitude.
*** 6622,6658 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wformat\-y2k\fR" 4
  .IX Item "-Wformat-y2k"
  If \fB\-Wformat\fR is specified, also warn about \f(CW\*(C`strftime\*(C'\fR
! formats that may yield only a two-digit year.
! .IP "\fB\-Wnonnull\fR" 4
  .IX Item "-Wnonnull"
  Warn about passing a null pointer for arguments marked as
! requiring a non-null value by the \f(CW\*(C`nonnull\*(C'\fR function attribute.
  .Sp
  \&\fB\-Wnonnull\fR is included in \fB\-Wall\fR and \fB\-Wformat\fR.  It
  can be disabled with the \fB\-Wno\-nonnull\fR option.
! .IP "\fB\-Wnonnull\-compare\fR" 4
  .IX Item "-Wnonnull-compare"
  Warn when comparing an argument marked with the \f(CW\*(C`nonnull\*(C'\fR
  function attribute against null inside the function.
  .Sp
  \&\fB\-Wnonnull\-compare\fR is included in \fB\-Wall\fR.  It
  can be disabled with the \fB\-Wno\-nonnull\-compare\fR option.
! .IP "\fB\-Wnull\-dereference\fR" 4
  .IX Item "-Wnull-dereference"
  Warn if the compiler detects paths that trigger erroneous or
  undefined behavior due to dereferencing a null pointer.  This option
  is only active when \fB\-fdelete\-null\-pointer\-checks\fR is active,
  which is enabled by optimizations in most targets.  The precision of
  the warnings depends on the optimization options used.
! .IP "\fB\-Wno\-musttail\-local\-addr\fR" 4
  .IX Item "-Wno-musttail-local-addr"
! Do not warn about passing a pointer (or in \*(C+, a reference) to a
  local variable or label to argument of a \f(CW\*(C`musttail\*(C'\fR call.  Those
  variables go out of scope before the tail call instruction.
! .IP "\fB\-Wmaybe\-musttail\-local\-addr\fR" 4
  .IX Item "-Wmaybe-musttail-local-addr"
  Warn when address of a local variable can escape to a \f(CW\*(C`musttail\*(C'\fR
  call, unless it goes out of scope already before the \f(CW\*(C`musttail\*(C'\fR
--- 6555,6591 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-Wformat\-y2k\fR 4
  .IX Item "-Wformat-y2k"
  If \fB\-Wformat\fR is specified, also warn about \f(CW\*(C`strftime\*(C'\fR
! formats that may yield only a two\-digit year.
! .IP \fB\-Wnonnull\fR 4
  .IX Item "-Wnonnull"
  Warn about passing a null pointer for arguments marked as
! requiring a non\-null value by the \f(CW\*(C`nonnull\*(C'\fR function attribute.
  .Sp
  \&\fB\-Wnonnull\fR is included in \fB\-Wall\fR and \fB\-Wformat\fR.  It
  can be disabled with the \fB\-Wno\-nonnull\fR option.
! .IP \fB\-Wnonnull\-compare\fR 4
  .IX Item "-Wnonnull-compare"
  Warn when comparing an argument marked with the \f(CW\*(C`nonnull\*(C'\fR
  function attribute against null inside the function.
  .Sp
  \&\fB\-Wnonnull\-compare\fR is included in \fB\-Wall\fR.  It
  can be disabled with the \fB\-Wno\-nonnull\-compare\fR option.
! .IP \fB\-Wnull\-dereference\fR 4
  .IX Item "-Wnull-dereference"
  Warn if the compiler detects paths that trigger erroneous or
  undefined behavior due to dereferencing a null pointer.  This option
  is only active when \fB\-fdelete\-null\-pointer\-checks\fR is active,
  which is enabled by optimizations in most targets.  The precision of
  the warnings depends on the optimization options used.
! .IP \fB\-Wno\-musttail\-local\-addr\fR 4
  .IX Item "-Wno-musttail-local-addr"
! Do not warn about passing a pointer (or in C++, a reference) to a
  local variable or label to argument of a \f(CW\*(C`musttail\*(C'\fR call.  Those
  variables go out of scope before the tail call instruction.
! .IP \fB\-Wmaybe\-musttail\-local\-addr\fR 4
  .IX Item "-Wmaybe-musttail-local-addr"
  Warn when address of a local variable can escape to a \f(CW\*(C`musttail\*(C'\fR
  call, unless it goes out of scope already before the \f(CW\*(C`musttail\*(C'\fR
*************** call.
*** 6692,6699 ****
  .Ve
  .Sp
  This warning is enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wnrvo\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wnrvo ( and Objective- only)"
  Warn if the compiler does not elide the copy from a local variable to
  the return value of a function in a context where it is allowed by
  [class.copy.elision].  This elision is commonly known as the Named
--- 6625,6632 ----
  .Ve
  .Sp
  This warning is enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wnrvo\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wnrvo (C++ and Objective-C++ only)"
  Warn if the compiler does not elide the copy from a local variable to
  the return value of a function in a context where it is allowed by
  [class.copy.elision].  This elision is commonly known as the Named
*************** compiler cannot elide copies from both v
*** 6709,6715 ****
  \&          else return v2; // warning: not eliding copy
  \&        }
  .Ve
! .IP "\fB\-Winfinite\-recursion\fR" 4
  .IX Item "-Winfinite-recursion"
  Warn about infinitely recursive calls.  The warning is effective at all
  optimization levels but requires optimization in order to detect infinite
--- 6642,6648 ----
  \&          else return v2; // warning: not eliding copy
  \&        }
  .Ve
! .IP \fB\-Winfinite\-recursion\fR 4
  .IX Item "-Winfinite-recursion"
  Warn about infinitely recursive calls.  The warning is effective at all
  optimization levels but requires optimization in order to detect infinite
*************** recursion in calls between two or more f
*** 6719,6730 ****
  Compare with \fB\-Wanalyzer\-infinite\-recursion\fR which provides a
  similar diagnostic, but is implemented in a different way (as part of
  \&\fB\-fanalyzer\fR).
! .IP "\fB\-Winit\-self\fR (C, \*(C+, Objective-C and Objective\-\*(C+ only)" 4
! .IX Item "-Winit-self (C, , Objective-C and Objective- only)"
  Warn about uninitialized variables that are initialized with themselves.
  Note this option can only be used with the \fB\-Wuninitialized\fR option.
  .Sp
! For example, \s-1GCC\s0 warns about \f(CW\*(C`i\*(C'\fR being uninitialized in the
  following snippet only when \fB\-Winit\-self\fR has been specified:
  .Sp
  .Vb 5
--- 6652,6663 ----
  Compare with \fB\-Wanalyzer\-infinite\-recursion\fR which provides a
  similar diagnostic, but is implemented in a different way (as part of
  \&\fB\-fanalyzer\fR).
! .IP "\fB\-Winit\-self\fR (C, C++, Objective\-C and Objective\-C++ only)" 4
! .IX Item "-Winit-self (C, C++, Objective-C and Objective-C++ only)"
  Warn about uninitialized variables that are initialized with themselves.
  Note this option can only be used with the \fB\-Wuninitialized\fR option.
  .Sp
! For example, GCC warns about \f(CW\*(C`i\*(C'\fR being uninitialized in the
  following snippet only when \fB\-Winit\-self\fR has been specified:
  .Sp
  .Vb 5
*************** following snippet only when \fB\-Winit\-
*** 6735,6742 ****
  \&        }
  .Ve
  .Sp
! This warning is enabled by \fB\-Wall\fR in \*(C+.
! .IP "\fB\-Wno\-implicit\-int\fR (C and Objective-C only)" 4
  .IX Item "-Wno-implicit-int (C and Objective-C only)"
  This option controls warnings when a declaration does not specify a type.
  This warning is enabled by default, as an error, in C99 and later
--- 6668,6675 ----
  \&        }
  .Ve
  .Sp
! This warning is enabled by \fB\-Wall\fR in C++.
! .IP "\fB\-Wno\-implicit\-int\fR (C and Objective\-C only)" 4
  .IX Item "-Wno-implicit-int (C and Objective-C only)"
  This option controls warnings when a declaration does not specify a type.
  This warning is enabled by default, as an error, in C99 and later
*************** to a warning using \fB\-fpermissive\fR (
*** 6745,6751 ****
  errors), or for this error alone, with \fB\-Wno\-error=implicit\-int\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wno\-implicit\-function\-declaration\fR (C and Objective-C only)" 4
  .IX Item "-Wno-implicit-function-declaration (C and Objective-C only)"
  This option controls warnings when a function is used before being declared.
  This warning is enabled by default, as an error, in C99 and later
--- 6678,6684 ----
  errors), or for this error alone, with \fB\-Wno\-error=implicit\-int\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wno\-implicit\-function\-declaration\fR (C and Objective\-C only)" 4
  .IX Item "-Wno-implicit-function-declaration (C and Objective-C only)"
  This option controls warnings when a function is used before being declared.
  This warning is enabled by default, as an error, in C99 and later
*************** errors), or for this error alone, with
*** 6755,6765 ****
  \&\fB\-Wno\-error=implicit\-function\-declaration\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wimplicit\fR (C and Objective-C only)" 4
  .IX Item "-Wimplicit (C and Objective-C only)"
  Same as \fB\-Wimplicit\-int\fR and \fB\-Wimplicit\-function\-declaration\fR.
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Whardened\fR" 4
  .IX Item "-Whardened"
  Warn when \fB\-fhardened\fR did not enable an option from its set (for
  which see \fB\-fhardened\fR).  For instance, using \fB\-fhardened\fR
--- 6688,6698 ----
  \&\fB\-Wno\-error=implicit\-function\-declaration\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wimplicit\fR (C and Objective\-C only)" 4
  .IX Item "-Wimplicit (C and Objective-C only)"
  Same as \fB\-Wimplicit\-int\fR and \fB\-Wimplicit\-function\-declaration\fR.
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Whardened\fR 4
  .IX Item "-Whardened"
  Warn when \fB\-fhardened\fR did not enable an option from its set (for
  which see \fB\-fhardened\fR).  For instance, using \fB\-fhardened\fR
*************** not be enabled by \fB\-fhardened\fR.
*** 6769,6780 ****
  .Sp
  This warning is enabled by default and has effect only when \fB\-fhardened\fR
  is enabled.
! .IP "\fB\-Wimplicit\-fallthrough\fR" 4
  .IX Item "-Wimplicit-fallthrough"
  \&\fB\-Wimplicit\-fallthrough\fR is the same as \fB\-Wimplicit\-fallthrough=3\fR
  and \fB\-Wno\-implicit\-fallthrough\fR is the same as
  \&\fB\-Wimplicit\-fallthrough=0\fR.
! .IP "\fB\-Wimplicit\-fallthrough=\fR\fIn\fR" 4
  .IX Item "-Wimplicit-fallthrough=n"
  Warn when a switch case falls through.  For example:
  .Sp
--- 6702,6713 ----
  .Sp
  This warning is enabled by default and has effect only when \fB\-fhardened\fR
  is enabled.
! .IP \fB\-Wimplicit\-fallthrough\fR 4
  .IX Item "-Wimplicit-fallthrough"
  \&\fB\-Wimplicit\-fallthrough\fR is the same as \fB\-Wimplicit\-fallthrough=3\fR
  and \fB\-Wno\-implicit\-fallthrough\fR is the same as
  \&\fB\-Wimplicit\-fallthrough=0\fR.
! .IP \fB\-Wimplicit\-fallthrough=\fR\fIn\fR 4
  .IX Item "-Wimplicit-fallthrough=n"
  Warn when a switch case falls through.  For example:
  .Sp
*************** warns when appropriate.  E.g.
*** 6815,6821 ****
  .Ve
  .Sp
  Since there are occasions where a switch case fall through is desirable,
! \&\s-1GCC\s0 provides an attribute, \f(CW\*(C`_\|_attribute_\|_ ((fallthrough))\*(C'\fR, that is
  to be used along with a null statement to suppress this warning that
  would normally occur:
  .Sp
--- 6748,6754 ----
  .Ve
  .Sp
  Since there are occasions where a switch case fall through is desirable,
! GCC provides an attribute, \f(CW\*(C`_\|_attribute_\|_ ((fallthrough))\*(C'\fR, that is
  to be used along with a null statement to suppress this warning that
  would normally occur:
  .Sp
*************** would normally occur:
*** 6830,6840 ****
  \&          }
  .Ve
  .Sp
! \&\*(C+17 provides a standard way to suppress the \fB\-Wimplicit\-fallthrough\fR
! warning using \f(CW\*(C`[[fallthrough]];\*(C'\fR instead of the \s-1GNU\s0 attribute.  In \*(C+11
! or \*(C+14 users can use \f(CW\*(C`[[gnu::fallthrough]];\*(C'\fR, which is a \s-1GNU\s0 extension.
  Instead of these attributes, it is also possible to add a fallthrough comment
! to silence the warning.  The whole body of the C or \*(C+ style comment should
  match the given regular expressions listed below.  The option argument \fIn\fR
  specifies what kind of comments are accepted:
  .RS 4
--- 6763,6773 ----
  \&          }
  .Ve
  .Sp
! C++17 and C23 provide a standard way to suppress the \fB\-Wimplicit\-fallthrough\fR
! warning using \f(CW\*(C`[[fallthrough]];\*(C'\fR instead of the GNU attribute.  In C++11
! or C++14 users can use \f(CW\*(C`[[gnu::fallthrough]];\*(C'\fR, which is a GNU extension.
  Instead of these attributes, it is also possible to add a fallthrough comment
! to silence the warning.  The whole body of the C or C++ style comment should
  match the given regular expressions listed below.  The option argument \fIn\fR
  specifies what kind of comments are accepted:
  .RS 4
*************** expression, any comment is used as fallt
*** 6854,6864 ****
  following regular expressions:
  .RS 4
  .ie n .IP "*<""\-fallthrough"">" 4
! .el .IP "*<\f(CW\-fallthrough\fR>" 4
  .IX Item "*<-fallthrough>"
  .PD 0
  .ie n .IP "*<""@fallthrough@"">" 4
! .el .IP "*<\f(CW@fallthrough@\fR>" 4
  .IX Item "*<@fallthrough@>"
  .ie n .IP "*<""lint \-fallthrough[ \et]*"">" 4
  .el .IP "*<\f(CWlint \-fallthrough[ \et]*\fR>" 4
--- 6787,6797 ----
  following regular expressions:
  .RS 4
  .ie n .IP "*<""\-fallthrough"">" 4
! .el .IP *<\f(CW\-fallthrough\fR> 4
  .IX Item "*<-fallthrough>"
  .PD 0
  .ie n .IP "*<""@fallthrough@"">" 4
! .el .IP *<\f(CW@fallthrough@\fR> 4
  .IX Item "*<@fallthrough@>"
  .ie n .IP "*<""lint \-fallthrough[ \et]*"">" 4
  .el .IP "*<\f(CWlint \-fallthrough[ \et]*\fR>" 4
*************** following regular expressions:
*** 6872,6891 ****
  .ie n .IP "*<""[ \et.!]*([Ee]lse,? |[Ii]ntentional(ly)? )?fall(s | |\-)?thr(ough|u)[ \et.!]*(\-[^\en\er]*)?"">" 4
  .el .IP "*<\f(CW[ \et.!]*([Ee]lse,? |[Ii]ntentional(ly)? )?fall(s | |\-)?thr(ough|u)[ \et.!]*(\-[^\en\er]*)?\fR>" 4
  .IX Item "*<[ t.!]*([Ee]lse,? |[Ii]ntentional(ly)? )?fall(s | |-)?thr(ough|u)[ t.!]*(-[^nr]*)?>"
  .RE
  .RS 4
  .RE
  .IP "*<\fB\-Wimplicit\-fallthrough=4\fR case sensitively matches one of the>" 4
  .IX Item "*<-Wimplicit-fallthrough=4 case sensitively matches one of the>"
- .PD
  following regular expressions:
  .RS 4
  .ie n .IP "*<""\-fallthrough"">" 4
! .el .IP "*<\f(CW\-fallthrough\fR>" 4
  .IX Item "*<-fallthrough>"
  .PD 0
  .ie n .IP "*<""@fallthrough@"">" 4
! .el .IP "*<\f(CW@fallthrough@\fR>" 4
  .IX Item "*<@fallthrough@>"
  .ie n .IP "*<""lint \-fallthrough[ \et]*"">" 4
  .el .IP "*<\f(CWlint \-fallthrough[ \et]*\fR>" 4
--- 6805,6824 ----
  .ie n .IP "*<""[ \et.!]*([Ee]lse,? |[Ii]ntentional(ly)? )?fall(s | |\-)?thr(ough|u)[ \et.!]*(\-[^\en\er]*)?"">" 4
  .el .IP "*<\f(CW[ \et.!]*([Ee]lse,? |[Ii]ntentional(ly)? )?fall(s | |\-)?thr(ough|u)[ \et.!]*(\-[^\en\er]*)?\fR>" 4
  .IX Item "*<[ t.!]*([Ee]lse,? |[Ii]ntentional(ly)? )?fall(s | |-)?thr(ough|u)[ t.!]*(-[^nr]*)?>"
+ .PD
  .RE
  .RS 4
  .RE
  .IP "*<\fB\-Wimplicit\-fallthrough=4\fR case sensitively matches one of the>" 4
  .IX Item "*<-Wimplicit-fallthrough=4 case sensitively matches one of the>"
  following regular expressions:
  .RS 4
  .ie n .IP "*<""\-fallthrough"">" 4
! .el .IP *<\f(CW\-fallthrough\fR> 4
  .IX Item "*<-fallthrough>"
  .PD 0
  .ie n .IP "*<""@fallthrough@"">" 4
! .el .IP *<\f(CW@fallthrough@\fR> 4
  .IX Item "*<@fallthrough@>"
  .ie n .IP "*<""lint \-fallthrough[ \et]*"">" 4
  .el .IP "*<\f(CWlint \-fallthrough[ \et]*\fR>" 4
*************** following regular expressions:
*** 6893,6904 ****
  .ie n .IP "*<""[ \et]*FALLTHR(OUGH|U)[ \et]*"">" 4
  .el .IP "*<\f(CW[ \et]*FALLTHR(OUGH|U)[ \et]*\fR>" 4
  .IX Item "*<[ t]*FALLTHR(OUGH|U)[ t]*>"
  .RE
  .RS 4
  .RE
! .IP "*<\fB\-Wimplicit\-fallthrough=5\fR doesn't recognize any comments as>" 4
  .IX Item "*<-Wimplicit-fallthrough=5 doesn't recognize any comments as>"
- .PD
  fallthrough comments, only attributes disable the warning.
  .RE
  .RS 4
--- 6826,6837 ----
  .ie n .IP "*<""[ \et]*FALLTHR(OUGH|U)[ \et]*"">" 4
  .el .IP "*<\f(CW[ \et]*FALLTHR(OUGH|U)[ \et]*\fR>" 4
  .IX Item "*<[ t]*FALLTHR(OUGH|U)[ t]*>"
+ .PD
  .RE
  .RS 4
  .RE
! .IP "*<\fB\-Wimplicit\-fallthrough=5\fR doesn\*(Aqt recognize any comments as>" 4
  .IX Item "*<-Wimplicit-fallthrough=5 doesn't recognize any comments as>"
  fallthrough comments, only attributes disable the warning.
  .RE
  .RS 4
*************** by \f(CW\*(C`case\*(C'\fR or \f(CW\*(C`d
*** 6920,6965 ****
  .Sp
  The \fB\-Wimplicit\-fallthrough=3\fR warning is enabled by \fB\-Wextra\fR.
  .RE
! .IP "\fB\-Wno\-if\-not\-aligned\fR (C, \*(C+, Objective-C and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-if-not-aligned (C, , Objective-C and Objective- only)"
  Control if warnings triggered by the \f(CW\*(C`warn_if_not_aligned\*(C'\fR attribute
  should be issued.  These warnings are enabled by default.
! .IP "\fB\-Wignored\-qualifiers\fR (C and \*(C+ only)" 4
! .IX Item "-Wignored-qualifiers (C and only)"
  Warn if the return type of a function has a type qualifier
! such as \f(CW\*(C`const\*(C'\fR.  For \s-1ISO C\s0 such a type qualifier has no effect,
  since the value returned by a function is not an lvalue.
! For \*(C+, the warning is only emitted for scalar types or \f(CW\*(C`void\*(C'\fR.
! \&\s-1ISO C\s0 prohibits qualified \f(CW\*(C`void\*(C'\fR return types on function
  definitions, so such return types always receive a warning
  even without this option.
  .Sp
  This warning is also enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wno\-ignored\-attributes\fR (C and \*(C+ only)" 4
! .IX Item "-Wno-ignored-attributes (C and only)"
  This option controls warnings when an attribute is ignored.
  This is different from the
  \&\fB\-Wattributes\fR option in that it warns whenever the compiler decides
  to drop an attribute, not that the attribute is either unknown, used in a
  wrong place, etc.  This warning is enabled by default.
! .IP "\fB\-Wmain\fR" 4
  .IX Item "-Wmain"
  Warn if the type of \f(CW\*(C`main\*(C'\fR is suspicious.  \f(CW\*(C`main\*(C'\fR should be
  a function with external linkage, returning int, taking either zero
  arguments, two, or three arguments of appropriate types.  This warning
! is enabled by default in \*(C+ and is enabled by either \fB\-Wall\fR
  or \fB\-Wpedantic\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wmisleading\-indentation\fR (C and \*(C+ only)" 4
! .IX Item "-Wmisleading-indentation (C and only)"
  Warn when the indentation of the code does not reflect the block structure.
  Specifically, a warning is issued for \f(CW\*(C`if\*(C'\fR, \f(CW\*(C`else\*(C'\fR, \f(CW\*(C`while\*(C'\fR, and
  \&\f(CW\*(C`for\*(C'\fR clauses with a guarded statement that does not use braces,
  followed by an unguarded statement with the same indentation.
  .Sp
! In the following example, the call to \*(L"bar\*(R" is misleadingly indented as
! if it were guarded by the \*(L"if\*(R" conditional.
  .Sp
  .Vb 3
  \&          if (some_condition ())
--- 6853,6898 ----
  .Sp
  The \fB\-Wimplicit\-fallthrough=3\fR warning is enabled by \fB\-Wextra\fR.
  .RE
! .IP "\fB\-Wno\-if\-not\-aligned\fR (C, C++, Objective\-C and Objective\-C++ only)" 4
! .IX Item "-Wno-if-not-aligned (C, C++, Objective-C and Objective-C++ only)"
  Control if warnings triggered by the \f(CW\*(C`warn_if_not_aligned\*(C'\fR attribute
  should be issued.  These warnings are enabled by default.
! .IP "\fB\-Wignored\-qualifiers\fR (C and C++ only)" 4
! .IX Item "-Wignored-qualifiers (C and C++ only)"
  Warn if the return type of a function has a type qualifier
! such as \f(CW\*(C`const\*(C'\fR.  For ISO C such a type qualifier has no effect,
  since the value returned by a function is not an lvalue.
! For C++, the warning is only emitted for scalar types or \f(CW\*(C`void\*(C'\fR.
! ISO C prohibits qualified \f(CW\*(C`void\*(C'\fR return types on function
  definitions, so such return types always receive a warning
  even without this option.
  .Sp
  This warning is also enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wno\-ignored\-attributes\fR (C and C++ only)" 4
! .IX Item "-Wno-ignored-attributes (C and C++ only)"
  This option controls warnings when an attribute is ignored.
  This is different from the
  \&\fB\-Wattributes\fR option in that it warns whenever the compiler decides
  to drop an attribute, not that the attribute is either unknown, used in a
  wrong place, etc.  This warning is enabled by default.
! .IP \fB\-Wmain\fR 4
  .IX Item "-Wmain"
  Warn if the type of \f(CW\*(C`main\*(C'\fR is suspicious.  \f(CW\*(C`main\*(C'\fR should be
  a function with external linkage, returning int, taking either zero
  arguments, two, or three arguments of appropriate types.  This warning
! is enabled by default in C++ and is enabled by either \fB\-Wall\fR
  or \fB\-Wpedantic\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wmisleading\-indentation\fR (C and C++ only)" 4
! .IX Item "-Wmisleading-indentation (C and C++ only)"
  Warn when the indentation of the code does not reflect the block structure.
  Specifically, a warning is issued for \f(CW\*(C`if\*(C'\fR, \f(CW\*(C`else\*(C'\fR, \f(CW\*(C`while\*(C'\fR, and
  \&\f(CW\*(C`for\*(C'\fR clauses with a guarded statement that does not use braces,
  followed by an unguarded statement with the same indentation.
  .Sp
! In the following example, the call to "bar" is misleadingly indented as
! if it were guarded by the "if" conditional.
  .Sp
  .Vb 3
  \&          if (some_condition ())
*************** The warning is not issued after a \f(CW\
*** 6987,6994 ****
  typically indicates autogenerated code, and no assumptions can be made
  about the layout of the file that the directive references.
  .Sp
! This warning is enabled by \fB\-Wall\fR in C and \*(C+.
! .IP "\fB\-Wmissing\-attributes\fR" 4
  .IX Item "-Wmissing-attributes"
  Warn when a declaration of a function is missing one or more attributes
  that a related function is declared with and whose absence may adversely
--- 6920,6927 ----
  typically indicates autogenerated code, and no assumptions can be made
  about the layout of the file that the directive references.
  .Sp
! This warning is enabled by \fB\-Wall\fR in C and C++.
! .IP \fB\-Wmissing\-attributes\fR 4
  .IX Item "-Wmissing-attributes"
  Warn when a declaration of a function is missing one or more attributes
  that a related function is declared with and whose absence may adversely
*************** Attributes considered include \f(CW\*(C`
*** 7004,7010 ****
  \&\f(CW\*(C`nonnull\*(C'\fR, \f(CW\*(C`noreturn\*(C'\fR, \f(CW\*(C`nothrow\*(C'\fR, \f(CW\*(C`pure\*(C'\fR,
  \&\f(CW\*(C`returns_nonnull\*(C'\fR, and \f(CW\*(C`returns_twice\*(C'\fR.
  .Sp
! In \*(C+, the warning is issued when an explicit specialization of a primary
  template declared with attribute \f(CW\*(C`alloc_align\*(C'\fR, \f(CW\*(C`alloc_size\*(C'\fR,
  \&\f(CW\*(C`assume_aligned\*(C'\fR, \f(CW\*(C`format\*(C'\fR, \f(CW\*(C`format_arg\*(C'\fR, \f(CW\*(C`malloc\*(C'\fR,
  or \f(CW\*(C`nonnull\*(C'\fR is declared without it.  Attributes \f(CW\*(C`deprecated\*(C'\fR,
--- 6937,6943 ----
  \&\f(CW\*(C`nonnull\*(C'\fR, \f(CW\*(C`noreturn\*(C'\fR, \f(CW\*(C`nothrow\*(C'\fR, \f(CW\*(C`pure\*(C'\fR,
  \&\f(CW\*(C`returns_nonnull\*(C'\fR, and \f(CW\*(C`returns_twice\*(C'\fR.
  .Sp
! In C++, the warning is issued when an explicit specialization of a primary
  template declared with attribute \f(CW\*(C`alloc_align\*(C'\fR, \f(CW\*(C`alloc_size\*(C'\fR,
  \&\f(CW\*(C`assume_aligned\*(C'\fR, \f(CW\*(C`format\*(C'\fR, \f(CW\*(C`format_arg\*(C'\fR, \f(CW\*(C`malloc\*(C'\fR,
  or \f(CW\*(C`nonnull\*(C'\fR is declared without it.  Attributes \f(CW\*(C`deprecated\*(C'\fR,
*************** diagnosed because it is missing one of t
*** 7032,7038 ****
  \&        void* _\|_attribute_\|_ ((malloc))   // missing alloc_size
  \&        allocate<void> (size_t);
  .Ve
! .IP "\fB\-Wmissing\-braces\fR" 4
  .IX Item "-Wmissing-braces"
  Warn if an aggregate or union initializer is not fully bracketed.  In
  the following example, the initializer for \f(CW\*(C`a\*(C'\fR is not fully
--- 6965,6971 ----
  \&        void* _\|_attribute_\|_ ((malloc))   // missing alloc_size
  \&        allocate<void> (size_t);
  .Ve
! .IP \fB\-Wmissing\-braces\fR 4
  .IX Item "-Wmissing-braces"
  Warn if an aggregate or union initializer is not fully bracketed.  In
  the following example, the initializer for \f(CW\*(C`a\*(C'\fR is not fully
*************** bracketed, but that for \f(CW\*(C`b\*(C'
*** 7044,7055 ****
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wmissing\-include\-dirs\fR (C, \*(C+, Objective-C, Objective\-\*(C+ and Fortran only)" 4
! .IX Item "-Wmissing-include-dirs (C, , Objective-C, Objective- and Fortran only)"
! Warn if a user-supplied include directory does not exist. This option is disabled
! by default for C, \*(C+, Objective-C and Objective\-\*(C+. For Fortran, it is partially
  enabled by default by warning for \-I and \-J, only.
! .IP "\fB\-Wno\-missing\-profile\fR" 4
  .IX Item "-Wno-missing-profile"
  This option controls warnings if feedback profiles are missing when using the
  \&\fB\-fprofile\-use\fR option.
--- 6977,6988 ----
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wmissing\-include\-dirs\fR (C, C++, Objective\-C, Objective\-C++ and Fortran only)" 4
! .IX Item "-Wmissing-include-dirs (C, C++, Objective-C, Objective-C++ and Fortran only)"
! Warn if a user\-supplied include directory does not exist. This option is disabled
! by default for C, C++, Objective\-C and Objective\-C++. For Fortran, it is partially
  enabled by default by warning for \-I and \-J, only.
! .IP \fB\-Wno\-missing\-profile\fR 4
  .IX Item "-Wno-missing-profile"
  This option controls warnings if feedback profiles are missing when using the
  \&\fB\-fprofile\-use\fR option.
*************** between compiling with \fB\-fprofile\-ge
*** 7059,7080 ****
  In these cases, the profile feedback data files do not contain any
  profile feedback information for
  the newly added function or file respectively.  Also, in the case when profile
! count data (.gcda) files are removed, \s-1GCC\s0 cannot use any profile feedback
  information.  In all these cases, warnings are issued to inform you that a
  profile generation step is due.
  Ignoring the warning can result in poorly optimized code.
  \&\fB\-Wno\-missing\-profile\fR can be used to
  disable the warning, but this is not recommended and should be done only
! when non-existent profile data is justified.
! .IP "\fB\-Wmismatched\-dealloc\fR" 4
  .IX Item "-Wmismatched-dealloc"
  Warn for calls to deallocation functions with pointer arguments returned
! from allocation functions for which the former isn't a suitable
  deallocator.  A pair of functions can be associated as matching allocators
  and deallocators by use of attribute \f(CW\*(C`malloc\*(C'\fR.  Unless disabled by
  the \fB\-fno\-builtin\fR option the standard functions \f(CW\*(C`calloc\*(C'\fR,
  \&\f(CW\*(C`malloc\*(C'\fR, \f(CW\*(C`realloc\*(C'\fR, and \f(CW\*(C`free\*(C'\fR, as well as the corresponding
! forms of \*(C+ \f(CW\*(C`operator new\*(C'\fR and \f(CW\*(C`operator delete\*(C'\fR are implicitly
  associated as matching allocators and deallocators.  In the following
  example \f(CW\*(C`mydealloc\*(C'\fR is the deallocator for pointers returned from
  \&\f(CW\*(C`myalloc\*(C'\fR.
--- 6992,7013 ----
  In these cases, the profile feedback data files do not contain any
  profile feedback information for
  the newly added function or file respectively.  Also, in the case when profile
! count data (.gcda) files are removed, GCC cannot use any profile feedback
  information.  In all these cases, warnings are issued to inform you that a
  profile generation step is due.
  Ignoring the warning can result in poorly optimized code.
  \&\fB\-Wno\-missing\-profile\fR can be used to
  disable the warning, but this is not recommended and should be done only
! when non\-existent profile data is justified.
! .IP \fB\-Wmismatched\-dealloc\fR 4
  .IX Item "-Wmismatched-dealloc"
  Warn for calls to deallocation functions with pointer arguments returned
! from allocation functions for which the former isn\*(Aqt a suitable
  deallocator.  A pair of functions can be associated as matching allocators
  and deallocators by use of attribute \f(CW\*(C`malloc\*(C'\fR.  Unless disabled by
  the \fB\-fno\-builtin\fR option the standard functions \f(CW\*(C`calloc\*(C'\fR,
  \&\f(CW\*(C`malloc\*(C'\fR, \f(CW\*(C`realloc\*(C'\fR, and \f(CW\*(C`free\*(C'\fR, as well as the corresponding
! forms of C++ \f(CW\*(C`operator new\*(C'\fR and \f(CW\*(C`operator delete\*(C'\fR are implicitly
  associated as matching allocators and deallocators.  In the following
  example \f(CW\*(C`mydealloc\*(C'\fR is the deallocator for pointers returned from
  \&\f(CW\*(C`myalloc\*(C'\fR.
*************** example \f(CW\*(C`mydealloc\*(C'\fR is t
*** 7094,7104 ****
  \&        }
  .Ve
  .Sp
! In \*(C+, the related option \fB\-Wmismatched\-new\-delete\fR diagnoses
  mismatches involving either \f(CW\*(C`operator new\*(C'\fR or \f(CW\*(C`operator delete\*(C'\fR.
  .Sp
  Option \fB\-Wmismatched\-dealloc\fR is included in \fB\-Wall\fR.
! .IP "\fB\-Wmultistatement\-macros\fR" 4
  .IX Item "-Wmultistatement-macros"
  Warn about unsafe multiple statement macros that appear to be guarded
  by a clause such as \f(CW\*(C`if\*(C'\fR, \f(CW\*(C`else\*(C'\fR, \f(CW\*(C`for\*(C'\fR, \f(CW\*(C`switch\*(C'\fR, or
--- 7027,7037 ----
  \&        }
  .Ve
  .Sp
! In C++, the related option \fB\-Wmismatched\-new\-delete\fR diagnoses
  mismatches involving either \f(CW\*(C`operator new\*(C'\fR or \f(CW\*(C`operator delete\*(C'\fR.
  .Sp
  Option \fB\-Wmismatched\-dealloc\fR is included in \fB\-Wall\fR.
! .IP \fB\-Wmultistatement\-macros\fR 4
  .IX Item "-Wmultistatement-macros"
  Warn about unsafe multiple statement macros that appear to be guarded
  by a clause such as \f(CW\*(C`if\*(C'\fR, \f(CW\*(C`else\*(C'\fR, \f(CW\*(C`for\*(C'\fR, \f(CW\*(C`switch\*(C'\fR, or
*************** For example:
*** 7114,7120 ****
  .Ve
  .Sp
  will increment \f(CW\*(C`y\*(C'\fR unconditionally, not just when \f(CW\*(C`c\*(C'\fR holds.
! The can usually be fixed by wrapping the macro in a do-while loop:
  .Sp
  .Vb 3
  \&        #define DOIT do { x++; y++; } while (0)
--- 7047,7053 ----
  .Ve
  .Sp
  will increment \f(CW\*(C`y\*(C'\fR unconditionally, not just when \f(CW\*(C`c\*(C'\fR holds.
! The can usually be fixed by wrapping the macro in a do\-while loop:
  .Sp
  .Vb 3
  \&        #define DOIT do { x++; y++; } while (0)
*************** The can usually be fixed by wrapping the
*** 7122,7129 ****
  \&          DOIT;
  .Ve
  .Sp
! This warning is enabled by \fB\-Wall\fR in C and \*(C+.
! .IP "\fB\-Wparentheses\fR" 4
  .IX Item "-Wparentheses"
  Warn if parentheses are omitted in certain contexts, such
  as when there is an assignment in a context where a truth value
--- 7055,7062 ----
  \&          DOIT;
  .Ve
  .Sp
! This warning is enabled by \fB\-Wall\fR in C and C++.
! .IP \fB\-Wparentheses\fR 4
  .IX Item "-Wparentheses"
  Warn if parentheses are omitted in certain contexts, such
  as when there is an assignment in a context where a truth value
*************** Also warn if a comparison like \f(CW\*(C
*** 7134,7146 ****
  equivalent to \f(CW\*(C`(x<=y ? 1 : 0) <= z\*(C'\fR, which is a different
  interpretation from that of ordinary mathematical notation.
  .Sp
! Also warn for dangerous uses of the \s-1GNU\s0 extension to
  \&\f(CW\*(C`?:\*(C'\fR with omitted middle operand. When the condition
  in the \f(CW\*(C`?\*(C'\fR: operator is a boolean expression, the omitted value is
  always 1.  Often programmers expect it to be a value computed
  inside the conditional expression instead.
  .Sp
! For \*(C+ this also warns for some cases of unnecessary parentheses in
  declarations, which can indicate an attempt at a function call instead
  of a declaration:
  .Sp
--- 7067,7079 ----
  equivalent to \f(CW\*(C`(x<=y ? 1 : 0) <= z\*(C'\fR, which is a different
  interpretation from that of ordinary mathematical notation.
  .Sp
! Also warn for dangerous uses of the GNU extension to
  \&\f(CW\*(C`?:\*(C'\fR with omitted middle operand. When the condition
  in the \f(CW\*(C`?\*(C'\fR: operator is a boolean expression, the omitted value is
  always 1.  Often programmers expect it to be a value computed
  inside the conditional expression instead.
  .Sp
! For C++ this also warns for some cases of unnecessary parentheses in
  declarations, which can indicate an attempt at a function call instead
  of a declaration:
  .Sp
*************** of a declaration:
*** 7153,7160 ****
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wno\-self\-move\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-self-move ( and Objective- only)"
  This warning warns when a value is moved to itself with \f(CW\*(C`std::move\*(C'\fR.
  Such a \f(CW\*(C`std::move\*(C'\fR typically has no effect.
  .Sp
--- 7086,7093 ----
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wno\-self\-move\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-self-move (C++ and Objective-C++ only)"
  This warning warns when a value is moved to itself with \f(CW\*(C`std::move\*(C'\fR.
  Such a \f(CW\*(C`std::move\*(C'\fR typically has no effect.
  .Sp
*************** Such a \f(CW\*(C`std::move\*(C'\fR typic
*** 7171,7182 ****
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wsequence\-point\fR" 4
  .IX Item "-Wsequence-point"
  Warn about code that may have undefined semantics because of violations
! of sequence point rules in the C and \*(C+ standards.
  .Sp
! The C and \*(C+ standards define the order in which expressions in a C/\*(C+
  program are evaluated in terms of \fIsequence points\fR, which represent
  a partial ordering between the execution of parts of the program: those
  executed before the sequence point, and those executed after it.  These
--- 7104,7115 ----
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wsequence\-point\fR 4
  .IX Item "-Wsequence-point"
  Warn about code that may have undefined semantics because of violations
! of sequence point rules in the C and C++ standards.
  .Sp
! The C and C++ standards define the order in which expressions in a C/C++
  program are evaluated in terms of \fIsequence points\fR, which represent
  a partial ordering between the execution of parts of the program: those
  executed before the sequence point, and those executed after it.  These
*************** ruled that function calls do not overlap
*** 7195,7205 ****
  .Sp
  It is not specified when between sequence points modifications to the
  values of objects take effect.  Programs whose behavior depends on this
! have undefined behavior; the C and \*(C+ standards specify that \*(L"Between
  the previous and next sequence point an object shall have its stored
  value modified at most once by the evaluation of an expression.
  Furthermore, the prior value shall be read only to determine the value
! to be stored.\*(R".  If a program breaks these rules, the results on any
  particular implementation are entirely unpredictable.
  .Sp
  Examples of code with undefined behavior are \f(CW\*(C`a = a++;\*(C'\fR, \f(CW\*(C`a[n]
--- 7128,7138 ----
  .Sp
  It is not specified when between sequence points modifications to the
  values of objects take effect.  Programs whose behavior depends on this
! have undefined behavior; the C and C++ standards specify that "Between
  the previous and next sequence point an object shall have its stored
  value modified at most once by the evaluation of an expression.
  Furthermore, the prior value shall be read only to determine the value
! to be stored.".  If a program breaks these rules, the results on any
  particular implementation are entirely unpredictable.
  .Sp
  Examples of code with undefined behavior are \f(CW\*(C`a = a++;\*(C'\fR, \f(CW\*(C`a[n]
*************** diagnosed by this option, and it may giv
*** 7208,7237 ****
  result, but in general it has been found fairly effective at detecting
  this sort of problem in programs.
  .Sp
! The \*(C+17 standard will define the order of evaluation of operands in
! more cases: in particular it requires that the right-hand side of an
! assignment be evaluated before the left-hand side, so the above
  examples are no longer undefined.  But this option will still warn
  about them, to help people avoid writing code that is undefined in C
! and earlier revisions of \*(C+.
  .Sp
  The standard is worded confusingly, therefore there is some debate
  over the precise meaning of the sequence point rules in subtle cases.
  Links to discussions of the problem, including proposed formal
! definitions, may be found on the \s-1GCC\s0 readings page, at
  <\fBhttps://gcc.gnu.org/readings.html\fR>.
  .Sp
! This warning is enabled by \fB\-Wall\fR for C and \*(C+.
! .IP "\fB\-Wno\-return\-local\-addr\fR" 4
  .IX Item "-Wno-return-local-addr"
! Do not warn about returning a pointer (or in \*(C+, a reference) to a
  variable that goes out of scope after the function returns.
! .IP "\fB\-Wreturn\-mismatch\fR" 4
  .IX Item "-Wreturn-mismatch"
  Warn about return statements without an expressions in functions which
  do not return \f(CW\*(C`void\*(C'\fR.  Also warn about a \f(CW\*(C`return\*(C'\fR statement
  with an expression in a function whose return type is \f(CW\*(C`void\*(C'\fR,
! unless the expression type is also \f(CW\*(C`void\*(C'\fR.  As a \s-1GNU\s0 extension, the
  latter case is accepted without a warning unless \fB\-Wpedantic\fR is
  used.
  .Sp
--- 7141,7170 ----
  result, but in general it has been found fairly effective at detecting
  this sort of problem in programs.
  .Sp
! The C++17 standard will define the order of evaluation of operands in
! more cases: in particular it requires that the right\-hand side of an
! assignment be evaluated before the left\-hand side, so the above
  examples are no longer undefined.  But this option will still warn
  about them, to help people avoid writing code that is undefined in C
! and earlier revisions of C++.
  .Sp
  The standard is worded confusingly, therefore there is some debate
  over the precise meaning of the sequence point rules in subtle cases.
  Links to discussions of the problem, including proposed formal
! definitions, may be found on the GCC readings page, at
  <\fBhttps://gcc.gnu.org/readings.html\fR>.
  .Sp
! This warning is enabled by \fB\-Wall\fR for C and C++.
! .IP \fB\-Wno\-return\-local\-addr\fR 4
  .IX Item "-Wno-return-local-addr"
! Do not warn about returning a pointer (or in C++, a reference) to a
  variable that goes out of scope after the function returns.
! .IP \fB\-Wreturn\-mismatch\fR 4
  .IX Item "-Wreturn-mismatch"
  Warn about return statements without an expressions in functions which
  do not return \f(CW\*(C`void\*(C'\fR.  Also warn about a \f(CW\*(C`return\*(C'\fR statement
  with an expression in a function whose return type is \f(CW\*(C`void\*(C'\fR,
! unless the expression type is also \f(CW\*(C`void\*(C'\fR.  As a GNU extension, the
  latter case is accepted without a warning unless \fB\-Wpedantic\fR is
  used.
  .Sp
*************** This warning is specific to C and enable
*** 7243,7249 ****
  language dialects, it is treated as an error.  It can be downgraded
  to a warning using \fB\-fpermissive\fR (along with other warnings),
  or for just this warning, with \fB\-Wno\-error=return\-mismatch\fR.
! .IP "\fB\-Wreturn\-type\fR" 4
  .IX Item "-Wreturn-type"
  Warn whenever a function is defined with a return type that defaults to
  \&\f(CW\*(C`int\*(C'\fR (unless \fB\-Wimplicit\-int\fR is active, which takes
--- 7176,7182 ----
  language dialects, it is treated as an error.  It can be downgraded
  to a warning using \fB\-fpermissive\fR (along with other warnings),
  or for just this warning, with \fB\-Wno\-error=return\-mismatch\fR.
! .IP \fB\-Wreturn\-type\fR 4
  .IX Item "-Wreturn-type"
  Warn whenever a function is defined with a return type that defaults to
  \&\f(CW\*(C`int\*(C'\fR (unless \fB\-Wimplicit\-int\fR is active, which takes
*************** Attempting to use the return value of a
*** 7254,7300 ****
  than \f(CW\*(C`main\*(C'\fR that flows off the end by reaching the closing curly
  brace that terminates the function is undefined.
  .Sp
! Unlike in C, in \*(C+, flowing off the end of a non\-\f(CW\*(C`void\*(C'\fR function other
  than \f(CW\*(C`main\*(C'\fR results in undefined behavior even when the value of
  the function is not used.
  .Sp
! This warning is enabled by default in \*(C+ and by \fB\-Wall\fR otherwise.
! .IP "\fB\-Wno\-shift\-count\-negative\fR" 4
  .IX Item "-Wno-shift-count-negative"
  Controls warnings if a shift count is negative.
  This warning is enabled by default.
! .IP "\fB\-Wno\-shift\-count\-overflow\fR" 4
  .IX Item "-Wno-shift-count-overflow"
  Controls warnings if a shift count is greater than or equal to the bit width
  of the type.  This warning is enabled by default.
! .IP "\fB\-Wshift\-negative\-value\fR" 4
  .IX Item "-Wshift-negative-value"
  Warn if left shifting a negative value.  This warning is enabled by
! \&\fB\-Wextra\fR in C99 (and newer) and \*(C+11 to \*(C+17 modes.
! .IP "\fB\-Wno\-shift\-overflow\fR" 4
  .IX Item "-Wno-shift-overflow"
  .PD 0
! .IP "\fB\-Wshift\-overflow=\fR\fIn\fR" 4
  .IX Item "-Wshift-overflow=n"
  .PD
  These options control warnings about left shift overflows.
  .RS 4
! .IP "\fB\-Wshift\-overflow=1\fR" 4
  .IX Item "-Wshift-overflow=1"
  This is the warning level of \fB\-Wshift\-overflow\fR and is enabled
! by default in C99 and \*(C+11 modes (and newer).  This warning level does
! not warn about left-shifting 1 into the sign bit.  (However, in C, such
  an overflow is still rejected in contexts where an integer constant expression
! is required.)  No warning is emitted in \*(C+20 mode (and newer), as signed left
  shifts always wrap.
! .IP "\fB\-Wshift\-overflow=2\fR" 4
  .IX Item "-Wshift-overflow=2"
! This warning level also warns about left-shifting 1 into the sign bit,
! unless \*(C+14 mode (or newer) is active.
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wswitch\fR" 4
  .IX Item "-Wswitch"
  Warn whenever a \f(CW\*(C`switch\*(C'\fR statement has an index of enumerated type
  and lacks a \f(CW\*(C`case\*(C'\fR for one or more of the named codes of that
--- 7187,7233 ----
  than \f(CW\*(C`main\*(C'\fR that flows off the end by reaching the closing curly
  brace that terminates the function is undefined.
  .Sp
! Unlike in C, in C++, flowing off the end of a non\-\f(CW\*(C`void\*(C'\fR function other
  than \f(CW\*(C`main\*(C'\fR results in undefined behavior even when the value of
  the function is not used.
  .Sp
! This warning is enabled by default in C++ and by \fB\-Wall\fR otherwise.
! .IP \fB\-Wno\-shift\-count\-negative\fR 4
  .IX Item "-Wno-shift-count-negative"
  Controls warnings if a shift count is negative.
  This warning is enabled by default.
! .IP \fB\-Wno\-shift\-count\-overflow\fR 4
  .IX Item "-Wno-shift-count-overflow"
  Controls warnings if a shift count is greater than or equal to the bit width
  of the type.  This warning is enabled by default.
! .IP \fB\-Wshift\-negative\-value\fR 4
  .IX Item "-Wshift-negative-value"
  Warn if left shifting a negative value.  This warning is enabled by
! \&\fB\-Wextra\fR in C99 (and newer) and C++11 to C++17 modes.
! .IP \fB\-Wno\-shift\-overflow\fR 4
  .IX Item "-Wno-shift-overflow"
  .PD 0
! .IP \fB\-Wshift\-overflow=\fR\fIn\fR 4
  .IX Item "-Wshift-overflow=n"
  .PD
  These options control warnings about left shift overflows.
  .RS 4
! .IP \fB\-Wshift\-overflow=1\fR 4
  .IX Item "-Wshift-overflow=1"
  This is the warning level of \fB\-Wshift\-overflow\fR and is enabled
! by default in C99 and C++11 modes (and newer).  This warning level does
! not warn about left\-shifting 1 into the sign bit.  (However, in C, such
  an overflow is still rejected in contexts where an integer constant expression
! is required.)  No warning is emitted in C++20 mode (and newer), as signed left
  shifts always wrap.
! .IP \fB\-Wshift\-overflow=2\fR 4
  .IX Item "-Wshift-overflow=2"
! This warning level also warns about left\-shifting 1 into the sign bit,
! unless C++14 mode (or newer) is active.
  .RE
  .RS 4
  .RE
! .IP \fB\-Wswitch\fR 4
  .IX Item "-Wswitch"
  Warn whenever a \f(CW\*(C`switch\*(C'\fR statement has an index of enumerated type
  and lacks a \f(CW\*(C`case\*(C'\fR for one or more of the named codes of that
*************** warning.)  \f(CW\*(C`case\*(C'\fR labels
*** 7303,7313 ****
  provoke warnings when this option is used, unless the enumeration is marked
  with the \f(CW\*(C`flag_enum\*(C'\fR attribute.
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wswitch\-default\fR" 4
  .IX Item "-Wswitch-default"
  Warn whenever a \f(CW\*(C`switch\*(C'\fR statement does not have a \f(CW\*(C`default\*(C'\fR
  case.
! .IP "\fB\-Wswitch\-enum\fR" 4
  .IX Item "-Wswitch-enum"
  Warn whenever a \f(CW\*(C`switch\*(C'\fR statement has an index of enumerated type
  and lacks a \f(CW\*(C`case\*(C'\fR for one or more of the named codes of that
--- 7236,7246 ----
  provoke warnings when this option is used, unless the enumeration is marked
  with the \f(CW\*(C`flag_enum\*(C'\fR attribute.
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wswitch\-default\fR 4
  .IX Item "-Wswitch-default"
  Warn whenever a \f(CW\*(C`switch\*(C'\fR statement does not have a \f(CW\*(C`default\*(C'\fR
  case.
! .IP \fB\-Wswitch\-enum\fR 4
  .IX Item "-Wswitch-enum"
  Warn whenever a \f(CW\*(C`switch\*(C'\fR statement has an index of enumerated type
  and lacks a \f(CW\*(C`case\*(C'\fR for one or more of the named codes of that
*************** with the \f(CW\*(C`flag_enum\*(C'\fR att
*** 7317,7323 ****
  between \fB\-Wswitch\fR and this option is that this option gives a
  warning about an omitted enumeration code even if there is a
  \&\f(CW\*(C`default\*(C'\fR label.
! .IP "\fB\-Wno\-switch\-bool\fR" 4
  .IX Item "-Wno-switch-bool"
  Do not warn when a \f(CW\*(C`switch\*(C'\fR statement has an index of boolean type
  and the case values are outside the range of a boolean type.
--- 7250,7256 ----
  between \fB\-Wswitch\fR and this option is that this option gives a
  warning about an omitted enumeration code even if there is a
  \&\f(CW\*(C`default\*(C'\fR label.
! .IP \fB\-Wno\-switch\-bool\fR 4
  .IX Item "-Wno-switch-bool"
  Do not warn when a \f(CW\*(C`switch\*(C'\fR statement has an index of boolean type
  and the case values are outside the range of a boolean type.
*************** expression to a type other than \f(CW\*(
*** 7331,7344 ****
  \&          }
  .Ve
  .Sp
! This warning is enabled by default for C and \*(C+ programs.
! .IP "\fB\-Wno\-switch\-outside\-range\fR" 4
  .IX Item "-Wno-switch-outside-range"
  This option controls warnings when a \f(CW\*(C`switch\*(C'\fR case has a value
  that is outside of its
  respective type range.  This warning is enabled by default for
! C and \*(C+ programs.
! .IP "\fB\-Wno\-switch\-unreachable\fR" 4
  .IX Item "-Wno-switch-unreachable"
  Do not warn when a \f(CW\*(C`switch\*(C'\fR statement contains statements between the
  controlling expression and the first case label, which will never be
--- 7264,7277 ----
  \&          }
  .Ve
  .Sp
! This warning is enabled by default for C and C++ programs.
! .IP \fB\-Wno\-switch\-outside\-range\fR 4
  .IX Item "-Wno-switch-outside-range"
  This option controls warnings when a \f(CW\*(C`switch\*(C'\fR case has a value
  that is outside of its
  respective type range.  This warning is enabled by default for
! C and C++ programs.
! .IP \fB\-Wno\-switch\-unreachable\fR 4
  .IX Item "-Wno-switch-unreachable"
  Do not warn when a \f(CW\*(C`switch\*(C'\fR statement contains statements between the
  controlling expression and the first case label, which will never be
*************** controlling expression and the first cas
*** 7368,7385 ****
  \&          }
  .Ve
  .Sp
! This warning is enabled by default for C and \*(C+ programs.
! .IP "\fB\-Wsync\-nand\fR (C and \*(C+ only)" 4
! .IX Item "-Wsync-nand (C and only)"
  Warn when \f(CW\*(C`_\|_sync_fetch_and_nand\*(C'\fR and \f(CW\*(C`_\|_sync_nand_and_fetch\*(C'\fR
! built-in functions are used.  These functions changed semantics in \s-1GCC 4.4.\s0
! .IP "\fB\-Wtrivial\-auto\-var\-init\fR" 4
  .IX Item "-Wtrivial-auto-var-init"
  Warn when \f(CW\*(C`\-ftrivial\-auto\-var\-init\*(C'\fR cannot initialize the automatic
  variable.  A common situation is an automatic variable that is declared
  between the controlling expression and the first case label of a \f(CW\*(C`switch\*(C'\fR
  statement.
! .IP "\fB\-Wunused\-but\-set\-parameter\fR" 4
  .IX Item "-Wunused-but-set-parameter"
  Warn whenever a function parameter is assigned to, but otherwise unused
  (aside from its declaration).
--- 7301,7318 ----
  \&          }
  .Ve
  .Sp
! This warning is enabled by default for C and C++ programs.
! .IP "\fB\-Wsync\-nand\fR (C and C++ only)" 4
! .IX Item "-Wsync-nand (C and C++ only)"
  Warn when \f(CW\*(C`_\|_sync_fetch_and_nand\*(C'\fR and \f(CW\*(C`_\|_sync_nand_and_fetch\*(C'\fR
! built\-in functions are used.  These functions changed semantics in GCC 4.4.
! .IP \fB\-Wtrivial\-auto\-var\-init\fR 4
  .IX Item "-Wtrivial-auto-var-init"
  Warn when \f(CW\*(C`\-ftrivial\-auto\-var\-init\*(C'\fR cannot initialize the automatic
  variable.  A common situation is an automatic variable that is declared
  between the controlling expression and the first case label of a \f(CW\*(C`switch\*(C'\fR
  statement.
! .IP \fB\-Wunused\-but\-set\-parameter\fR 4
  .IX Item "-Wunused-but-set-parameter"
  Warn whenever a function parameter is assigned to, but otherwise unused
  (aside from its declaration).
*************** To suppress this warning use the \f(CW\*
*** 7388,7394 ****
  .Sp
  This warning is also enabled by \fB\-Wunused\fR together with
  \&\fB\-Wextra\fR.
! .IP "\fB\-Wunused\-but\-set\-variable\fR" 4
  .IX Item "-Wunused-but-set-variable"
  Warn whenever a local variable is assigned to, but otherwise unused
  (aside from its declaration).
--- 7321,7327 ----
  .Sp
  This warning is also enabled by \fB\-Wunused\fR together with
  \&\fB\-Wextra\fR.
! .IP \fB\-Wunused\-but\-set\-variable\fR 4
  .IX Item "-Wunused-but-set-variable"
  Warn whenever a local variable is assigned to, but otherwise unused
  (aside from its declaration).
*************** To suppress this warning use the \f(CW\*
*** 7398,7448 ****
  .Sp
  This warning is also enabled by \fB\-Wunused\fR, which is enabled
  by \fB\-Wall\fR.
! .IP "\fB\-Wunused\-function\fR" 4
  .IX Item "-Wunused-function"
  Warn whenever a static function is declared but not defined or a
! non-inline static function is unused.
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wunused\-label\fR" 4
  .IX Item "-Wunused-label"
  Warn whenever a label is declared but not used.
  This warning is enabled by \fB\-Wall\fR.
  .Sp
  To suppress this warning use the \f(CW\*(C`unused\*(C'\fR attribute.
! .IP "\fB\-Wunused\-local\-typedefs\fR (C, Objective-C, \*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wunused-local-typedefs (C, Objective-C, and Objective- only)"
  Warn when a typedef locally defined in a function is not used.
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wunused\-parameter\fR" 4
  .IX Item "-Wunused-parameter"
  Warn whenever a function parameter is unused aside from its declaration.
  This option is not enabled by \f(CW\*(C`\-Wunused\*(C'\fR unless \f(CW\*(C`\-Wextra\*(C'\fR is also
  specified.
  .Sp
  To suppress this warning use the \f(CW\*(C`unused\*(C'\fR attribute.
! .IP "\fB\-Wno\-unused\-result\fR" 4
  .IX Item "-Wno-unused-result"
  Do not warn if a caller of a function marked with attribute
  \&\f(CW\*(C`warn_unused_result\*(C'\fR does not use
  its return value. The default is \fB\-Wunused\-result\fR.
! .IP "\fB\-Wunused\-variable\fR" 4
  .IX Item "-Wunused-variable"
  Warn whenever a local or static variable is unused aside from its
  declaration. This option implies \fB\-Wunused\-const\-variable=1\fR for C,
! but not for \*(C+. This warning is enabled by \fB\-Wall\fR.
  .Sp
  To suppress this warning use the \f(CW\*(C`unused\*(C'\fR attribute.
! .IP "\fB\-Wunused\-const\-variable\fR" 4
  .IX Item "-Wunused-const-variable"
  .PD 0
! .IP "\fB\-Wunused\-const\-variable=\fR\fIn\fR" 4
  .IX Item "-Wunused-const-variable=n"
  .PD
  Warn whenever a constant static variable is unused aside from its declaration.
  .Sp
  To suppress this warning use the \f(CW\*(C`unused\*(C'\fR attribute.
  .RS 4
! .IP "\fB\-Wunused\-const\-variable=1\fR" 4
  .IX Item "-Wunused-const-variable=1"
  Warn about unused static const variables defined in the main
  compilation unit, but not about static const variables declared in any
--- 7331,7381 ----
  .Sp
  This warning is also enabled by \fB\-Wunused\fR, which is enabled
  by \fB\-Wall\fR.
! .IP \fB\-Wunused\-function\fR 4
  .IX Item "-Wunused-function"
  Warn whenever a static function is declared but not defined or a
! non\-inline static function is unused.
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wunused\-label\fR 4
  .IX Item "-Wunused-label"
  Warn whenever a label is declared but not used.
  This warning is enabled by \fB\-Wall\fR.
  .Sp
  To suppress this warning use the \f(CW\*(C`unused\*(C'\fR attribute.
! .IP "\fB\-Wunused\-local\-typedefs\fR (C, Objective\-C, C++ and Objective\-C++ only)" 4
! .IX Item "-Wunused-local-typedefs (C, Objective-C, C++ and Objective-C++ only)"
  Warn when a typedef locally defined in a function is not used.
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wunused\-parameter\fR 4
  .IX Item "-Wunused-parameter"
  Warn whenever a function parameter is unused aside from its declaration.
  This option is not enabled by \f(CW\*(C`\-Wunused\*(C'\fR unless \f(CW\*(C`\-Wextra\*(C'\fR is also
  specified.
  .Sp
  To suppress this warning use the \f(CW\*(C`unused\*(C'\fR attribute.
! .IP \fB\-Wno\-unused\-result\fR 4
  .IX Item "-Wno-unused-result"
  Do not warn if a caller of a function marked with attribute
  \&\f(CW\*(C`warn_unused_result\*(C'\fR does not use
  its return value. The default is \fB\-Wunused\-result\fR.
! .IP \fB\-Wunused\-variable\fR 4
  .IX Item "-Wunused-variable"
  Warn whenever a local or static variable is unused aside from its
  declaration. This option implies \fB\-Wunused\-const\-variable=1\fR for C,
! but not for C++. This warning is enabled by \fB\-Wall\fR.
  .Sp
  To suppress this warning use the \f(CW\*(C`unused\*(C'\fR attribute.
! .IP \fB\-Wunused\-const\-variable\fR 4
  .IX Item "-Wunused-const-variable"
  .PD 0
! .IP \fB\-Wunused\-const\-variable=\fR\fIn\fR 4
  .IX Item "-Wunused-const-variable=n"
  .PD
  Warn whenever a constant static variable is unused aside from its declaration.
  .Sp
  To suppress this warning use the \f(CW\*(C`unused\*(C'\fR attribute.
  .RS 4
! .IP \fB\-Wunused\-const\-variable=1\fR 4
  .IX Item "-Wunused-const-variable=1"
  Warn about unused static const variables defined in the main
  compilation unit, but not about static const variables declared in any
*************** header included.
*** 7450,7478 ****
  .Sp
  \&\fB\-Wunused\-const\-variable=1\fR is enabled by either
  \&\fB\-Wunused\-variable\fR or \fB\-Wunused\fR for C, but not for
! \&\*(C+. In C this declares variable storage, but in \*(C+ this is not an
  error since const variables take the place of \f(CW\*(C`#define\*(C'\fRs.
! .IP "\fB\-Wunused\-const\-variable=2\fR" 4
  .IX Item "-Wunused-const-variable=2"
  This warning level also warns for unused constant static variables in
  headers (excluding system headers).  It is equivalent to the short form
  \&\fB\-Wunused\-const\-variable\fR.  This level must be explicitly
! requested in both C and \*(C+ because it might be hard to clean up all
  headers included.
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wunused\-value\fR" 4
  .IX Item "-Wunused-value"
  Warn whenever a statement computes a result that is explicitly not
  used. To suppress this warning cast the unused expression to
! \&\f(CW\*(C`void\*(C'\fR. This includes an expression-statement or the left-hand
  side of a comma expression that contains no side effects. For example,
  an expression such as \f(CW\*(C`x[i,j]\*(C'\fR causes a warning, while
  \&\f(CW\*(C`x[(void)i,j]\*(C'\fR does not.
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wunused\fR" 4
  .IX Item "-Wunused"
  All the above \fB\-Wunused\fR options combined, except those documented
  as needing to be specified explicitly.
--- 7383,7411 ----
  .Sp
  \&\fB\-Wunused\-const\-variable=1\fR is enabled by either
  \&\fB\-Wunused\-variable\fR or \fB\-Wunused\fR for C, but not for
! C++. In C this declares variable storage, but in C++ this is not an
  error since const variables take the place of \f(CW\*(C`#define\*(C'\fRs.
! .IP \fB\-Wunused\-const\-variable=2\fR 4
  .IX Item "-Wunused-const-variable=2"
  This warning level also warns for unused constant static variables in
  headers (excluding system headers).  It is equivalent to the short form
  \&\fB\-Wunused\-const\-variable\fR.  This level must be explicitly
! requested in both C and C++ because it might be hard to clean up all
  headers included.
  .RE
  .RS 4
  .RE
! .IP \fB\-Wunused\-value\fR 4
  .IX Item "-Wunused-value"
  Warn whenever a statement computes a result that is explicitly not
  used. To suppress this warning cast the unused expression to
! \&\f(CW\*(C`void\*(C'\fR. This includes an expression\-statement or the left\-hand
  side of a comma expression that contains no side effects. For example,
  an expression such as \f(CW\*(C`x[i,j]\*(C'\fR causes a warning, while
  \&\f(CW\*(C`x[(void)i,j]\*(C'\fR does not.
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wunused\fR 4
  .IX Item "-Wunused"
  All the above \fB\-Wunused\fR options combined, except those documented
  as needing to be specified explicitly.
*************** either specify \fB\-Wextra \-Wunused\fR
*** 7483,7493 ****
  \&\fB\-Wunused\-but\-set\-parameter\fR.
  .Sp
  \&\fB\-Wunused\fR enables only \fB\-Wunused\-const\-variable=1\fR rather than
! \&\fB\-Wunused\-const\-variable\fR, and only for C, not \*(C+.
! .IP "\fB\-Wuse\-after\-free\fR (C, Objective-C, \*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wuse-after-free (C, Objective-C, and Objective- only)"
  .PD 0
! .IP "\fB\-Wuse\-after\-free=\fR\fIn\fR" 4
  .IX Item "-Wuse-after-free=n"
  .PD
  Warn about uses of pointers to dynamically allocated objects that have
--- 7416,7426 ----
  \&\fB\-Wunused\-but\-set\-parameter\fR.
  .Sp
  \&\fB\-Wunused\fR enables only \fB\-Wunused\-const\-variable=1\fR rather than
! \&\fB\-Wunused\-const\-variable\fR, and only for C, not C++.
! .IP "\fB\-Wuse\-after\-free\fR (C, Objective\-C, C++ and Objective\-C++ only)" 4
! .IX Item "-Wuse-after-free (C, Objective-C, C++ and Objective-C++ only)"
  .PD 0
! .IP \fB\-Wuse\-after\-free=\fR\fIn\fR 4
  .IX Item "-Wuse-after-free=n"
  .PD
  Warn about uses of pointers to dynamically allocated objects that have
*************** been rendered indeterminate by a call to
*** 7495,7501 ****
  The warning is enabled at all optimization levels but may yield different
  results with optimization than without.
  .RS 4
! .IP "\fB\-Wuse\-after\-free=1\fR" 4
  .IX Item "-Wuse-after-free=1"
  At level 1 the warning attempts to diagnose only unconditional uses
  of pointers made indeterminate by a deallocation call or a successful
--- 7428,7434 ----
  The warning is enabled at all optimization levels but may yield different
  results with optimization than without.
  .RS 4
! .IP \fB\-Wuse\-after\-free=1\fR 4
  .IX Item "-Wuse-after-free=1"
  At level 1 the warning attempts to diagnose only unconditional uses
  of pointers made indeterminate by a deallocation call or a successful
*************** in an actual reallocation of memory.  Th
*** 7504,7510 ****
  calls as well as uses in arithmetic and relational expressions.  Although
  undefined, uses of indeterminate pointers in equality (or inequality)
  expressions are not diagnosed at this level.
! .IP "\fB\-Wuse\-after\-free=2\fR" 4
  .IX Item "-Wuse-after-free=2"
  At level 2, in addition to unconditional uses, the warning also diagnoses
  conditional uses of pointers made indeterminate by a deallocation call.
--- 7437,7443 ----
  calls as well as uses in arithmetic and relational expressions.  Although
  undefined, uses of indeterminate pointers in equality (or inequality)
  expressions are not diagnosed at this level.
! .IP \fB\-Wuse\-after\-free=2\fR 4
  .IX Item "-Wuse-after-free=2"
  At level 2, in addition to unconditional uses, the warning also diagnoses
  conditional uses of pointers made indeterminate by a deallocation call.
*************** function is diagnosed at this level:
*** 7523,7529 ****
  \&            free (p\->data);   // warning: p may be used after free
  \&        }
  .Ve
! .IP "\fB\-Wuse\-after\-free=3\fR" 4
  .IX Item "-Wuse-after-free=3"
  At level 3, the warning also diagnoses uses of indeterminate pointers in
  equality expressions.  All uses of indeterminate pointers are undefined
--- 7456,7462 ----
  \&            free (p\->data);   // warning: p may be used after free
  \&        }
  .Ve
! .IP \fB\-Wuse\-after\-free=3\fR 4
  .IX Item "-Wuse-after-free=3"
  At level 3, the warning also diagnoses uses of indeterminate pointers in
  equality expressions.  All uses of indeterminate pointers are undefined
*************** pointers after reallocation.
*** 7553,7562 ****
  .Sp
  \&\fB\-Wuse\-after\-free=2\fR is included in \fB\-Wall\fR.
  .RE
! .IP "\fB\-Wuseless\-cast\fR (C, Objective-C, \*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wuseless-cast (C, Objective-C, and Objective- only)"
  Warn when an expression is cast to its own type.  This warning does not
! occur when a class object is converted to a non-reference type as that
  is a way to create a temporary:
  .Sp
  .Vb 6
--- 7486,7495 ----
  .Sp
  \&\fB\-Wuse\-after\-free=2\fR is included in \fB\-Wall\fR.
  .RE
! .IP "\fB\-Wuseless\-cast\fR (C, Objective\-C, C++ and Objective\-C++ only)" 4
! .IX Item "-Wuseless-cast (C, Objective-C, C++ and Objective-C++ only)"
  Warn when an expression is cast to its own type.  This warning does not
! occur when a class object is converted to a non\-reference type as that
  is a way to create a temporary:
  .Sp
  .Vb 6
*************** is a way to create a temporary:
*** 7567,7581 ****
  \&          g (S(arg)); // make arg prvalue so that it can bind to S&&
  \&        }
  .Ve
! .IP "\fB\-Wuninitialized\fR" 4
  .IX Item "-Wuninitialized"
  Warn if an object with automatic or allocated storage duration is used
! without having been initialized.  In \*(C+, also warn if a non-static
! reference or non-static \f(CW\*(C`const\*(C'\fR member appears in a class without
  constructors.
  .Sp
! In addition, passing a pointer (or in \*(C+, a reference) to an uninitialized
! object to a \f(CW\*(C`const\*(C'\fR\-qualified argument of a built-in function known to
  read the object is also diagnosed by this warning.
  (\fB\-Wmaybe\-uninitialized\fR is issued for ordinary functions.)
  .Sp
--- 7500,7514 ----
  \&          g (S(arg)); // make arg prvalue so that it can bind to S&&
  \&        }
  .Ve
! .IP \fB\-Wuninitialized\fR 4
  .IX Item "-Wuninitialized"
  Warn if an object with automatic or allocated storage duration is used
! without having been initialized.  In C++, also warn if a non\-static
! reference or non\-static \f(CW\*(C`const\*(C'\fR member appears in a class without
  constructors.
  .Sp
! In addition, passing a pointer (or in C++, a reference) to an uninitialized
! object to a \f(CW\*(C`const\*(C'\fR\-qualified argument of a built\-in function known to
  read the object is also diagnosed by this warning.
  (\fB\-Wmaybe\-uninitialized\fR is issued for ordinary functions.)
  .Sp
*************** structure, union or array variables as w
*** 7587,7593 ****
  uninitialized as a whole.  They do not occur for variables or elements
  declared \f(CW\*(C`volatile\*(C'\fR.  Because these warnings depend on
  optimization, the exact variables or elements for which there are
! warnings depend on the precise optimization options and version of \s-1GCC\s0
  used.
  .Sp
  Note that there may be no warning about a variable that is used only
--- 7520,7526 ----
  uninitialized as a whole.  They do not occur for variables or elements
  declared \f(CW\*(C`volatile\*(C'\fR.  Because these warnings depend on
  optimization, the exact variables or elements for which there are
! warnings depend on the precise optimization options and version of GCC
  used.
  .Sp
  Note that there may be no warning about a variable that is used only
*************** to compute a value that itself is never
*** 7595,7602 ****
  computations may be deleted by data flow analysis before the warnings
  are printed.
  .Sp
! In \*(C+, this warning also warns about using uninitialized objects in
! member-initializer-lists.  For example, \s-1GCC\s0 warns about \f(CW\*(C`b\*(C'\fR being
  uninitialized in the following snippet:
  .Sp
  .Vb 5
--- 7528,7535 ----
  computations may be deleted by data flow analysis before the warnings
  are printed.
  .Sp
! In C++, this warning also warns about using uninitialized objects in
! member\-initializer\-lists.  For example, GCC warns about \f(CW\*(C`b\*(C'\fR being
  uninitialized in the following snippet:
  .Sp
  .Vb 5
*************** uninitialized in the following snippet:
*** 7606,7619 ****
  \&          A() : a(b) { }
  \&        };
  .Ve
! .IP "\fB\-Wno\-invalid\-memory\-model\fR" 4
  .IX Item "-Wno-invalid-memory-model"
  This option controls warnings
  for invocations of \fB_\|_atomic Builtins\fR, \fB_\|_sync Builtins\fR,
  and the C11 atomic generic functions with a memory consistency argument
  that is either invalid for the operation or outside the range of values
  of the \f(CW\*(C`memory_order\*(C'\fR enumeration.  For example, since the
! \&\f(CW\*(C`_\|_atomic_store\*(C'\fR and \f(CW\*(C`_\|_atomic_store_n\*(C'\fR built-ins are only
  defined for the relaxed, release, and sequentially consistent memory
  orders the following code is diagnosed:
  .Sp
--- 7539,7552 ----
  \&          A() : a(b) { }
  \&        };
  .Ve
! .IP \fB\-Wno\-invalid\-memory\-model\fR 4
  .IX Item "-Wno-invalid-memory-model"
  This option controls warnings
  for invocations of \fB_\|_atomic Builtins\fR, \fB_\|_sync Builtins\fR,
  and the C11 atomic generic functions with a memory consistency argument
  that is either invalid for the operation or outside the range of values
  of the \f(CW\*(C`memory_order\*(C'\fR enumeration.  For example, since the
! \&\f(CW\*(C`_\|_atomic_store\*(C'\fR and \f(CW\*(C`_\|_atomic_store_n\*(C'\fR built\-ins are only
  defined for the relaxed, release, and sequentially consistent memory
  orders the following code is diagnosed:
  .Sp
*************** orders the following code is diagnosed:
*** 7625,7631 ****
  .Ve
  .Sp
  \&\fB\-Winvalid\-memory\-model\fR is enabled by default.
! .IP "\fB\-Wmaybe\-uninitialized\fR" 4
  .IX Item "-Wmaybe-uninitialized"
  For an object with automatic or allocated storage duration, if there exists
  a path from the function entry to a use of the object that is initialized,
--- 7558,7564 ----
  .Ve
  .Sp
  \&\fB\-Winvalid\-memory\-model\fR is enabled by default.
! .IP \fB\-Wmaybe\-uninitialized\fR 4
  .IX Item "-Wmaybe-uninitialized"
  For an object with automatic or allocated storage duration, if there exists
  a path from the function entry to a use of the object that is initialized,
*************** but there exist some other paths for whi
*** 7633,7649 ****
  the compiler emits a warning if it cannot prove the uninitialized paths
  are not executed at run time.
  .Sp
! In addition, passing a pointer (or in \*(C+, a reference) to an uninitialized
  object to a \f(CW\*(C`const\*(C'\fR\-qualified function argument is also diagnosed by
! this warning.  (\fB\-Wuninitialized\fR is issued for built-in functions
  known to read the object.)  Annotating the function with attribute
! \&\f(CW\*(C`access (none)\*(C'\fR indicates that the argument isn't used to access
  the object and avoids the warning.
  .Sp
  These warnings are only possible in optimizing compilation, because otherwise
! \&\s-1GCC\s0 does not keep track of the state of variables.
  .Sp
! These warnings are made optional because \s-1GCC\s0 may not be able to determine when
  the code is correct in spite of appearing to have an error.  Here is one
  example of how this can happen:
  .Sp
--- 7566,7582 ----
  the compiler emits a warning if it cannot prove the uninitialized paths
  are not executed at run time.
  .Sp
! In addition, passing a pointer (or in C++, a reference) to an uninitialized
  object to a \f(CW\*(C`const\*(C'\fR\-qualified function argument is also diagnosed by
! this warning.  (\fB\-Wuninitialized\fR is issued for built\-in functions
  known to read the object.)  Annotating the function with attribute
! \&\f(CW\*(C`access (none)\*(C'\fR indicates that the argument isn\*(Aqt used to access
  the object and avoids the warning.
  .Sp
  These warnings are only possible in optimizing compilation, because otherwise
! GCC does not keep track of the state of variables.
  .Sp
! These warnings are made optional because GCC may not be able to determine when
  the code is correct in spite of appearing to have an error.  Here is one
  example of how this can happen:
  .Sp
*************** example of how this can happen:
*** 7663,7673 ****
  .Ve
  .Sp
  If the value of \f(CW\*(C`y\*(C'\fR is always 1, 2 or 3, then \f(CW\*(C`x\*(C'\fR is
! always initialized, but \s-1GCC\s0 doesn't know this. To suppress the
! warning, you need to provide a default case with \fIassert\fR\|(0) or
  similar code.
  .Sp
! This option also warns when a non-volatile automatic variable might be
  changed by a call to \f(CW\*(C`longjmp\*(C'\fR.
  The compiler sees only the calls to \f(CW\*(C`setjmp\*(C'\fR.  It cannot know
  where \f(CW\*(C`longjmp\*(C'\fR will be called; in fact, a signal handler could
--- 7596,7606 ----
  .Ve
  .Sp
  If the value of \f(CW\*(C`y\*(C'\fR is always 1, 2 or 3, then \f(CW\*(C`x\*(C'\fR is
! always initialized, but GCC doesn\*(Aqt know this. To suppress the
! warning, you need to provide a default case with \fBassert\fR\|(0) or
  similar code.
  .Sp
! This option also warns when a non\-volatile automatic variable might be
  changed by a call to \f(CW\*(C`longjmp\*(C'\fR.
  The compiler sees only the calls to \f(CW\*(C`setjmp\*(C'\fR.  It cannot know
  where \f(CW\*(C`longjmp\*(C'\fR will be called; in fact, a signal handler could
*************** Some spurious warnings can be avoided if
*** 7679,7700 ****
  you use that never return as \f(CW\*(C`noreturn\*(C'\fR.
  .Sp
  This warning is enabled by \fB\-Wall\fR or \fB\-Wextra\fR.
! .IP "\fB\-Wunknown\-pragmas\fR" 4
  .IX Item "-Wunknown-pragmas"
  Warn when a \f(CW\*(C`#pragma\*(C'\fR directive is encountered that is not understood by
! \&\s-1GCC.\s0  If this command-line option is used, warnings are even issued
  for unknown pragmas in system header files.  This is not the case if
! the warnings are only enabled by the \fB\-Wall\fR command-line option.
! .IP "\fB\-Wno\-pragmas\fR" 4
  .IX Item "-Wno-pragmas"
  Do not warn about misuses of pragmas, such as incorrect parameters,
  invalid syntax, or conflicts between pragmas.  See also
  \&\fB\-Wunknown\-pragmas\fR.
! .IP "\fB\-Wno\-pragma\-once\-outside\-header\fR" 4
  .IX Item "-Wno-pragma-once-outside-header"
  Do not warn when \f(CW\*(C`#pragma once\*(C'\fR is used in a file that is not a header
  file, such as a main file.
! .IP "\fB\-Wno\-prio\-ctor\-dtor\fR" 4
  .IX Item "-Wno-prio-ctor-dtor"
  Do not warn if a priority from 0 to 100 is used for constructor or destructor.
  The use of constructor and destructor attributes allow you to assign a
--- 7612,7633 ----
  you use that never return as \f(CW\*(C`noreturn\*(C'\fR.
  .Sp
  This warning is enabled by \fB\-Wall\fR or \fB\-Wextra\fR.
! .IP \fB\-Wunknown\-pragmas\fR 4
  .IX Item "-Wunknown-pragmas"
  Warn when a \f(CW\*(C`#pragma\*(C'\fR directive is encountered that is not understood by
! GCC.  If this command\-line option is used, warnings are even issued
  for unknown pragmas in system header files.  This is not the case if
! the warnings are only enabled by the \fB\-Wall\fR command\-line option.
! .IP \fB\-Wno\-pragmas\fR 4
  .IX Item "-Wno-pragmas"
  Do not warn about misuses of pragmas, such as incorrect parameters,
  invalid syntax, or conflicts between pragmas.  See also
  \&\fB\-Wunknown\-pragmas\fR.
! .IP \fB\-Wno\-pragma\-once\-outside\-header\fR 4
  .IX Item "-Wno-pragma-once-outside-header"
  Do not warn when \f(CW\*(C`#pragma once\*(C'\fR is used in a file that is not a header
  file, such as a main file.
! .IP \fB\-Wno\-prio\-ctor\-dtor\fR 4
  .IX Item "-Wno-prio-ctor-dtor"
  Do not warn if a priority from 0 to 100 is used for constructor or destructor.
  The use of constructor and destructor attributes allow you to assign a
*************** priority to the constructor/destructor t
*** 7702,7708 ****
  before \f(CW\*(C`main\*(C'\fR is called or after it returns.  The priority values must be
  greater than 100 as the compiler reserves priority values between 0\-\-100 for
  the implementation.
! .IP "\fB\-Wstrict\-aliasing\fR" 4
  .IX Item "-Wstrict-aliasing"
  This option is only active when \fB\-fstrict\-aliasing\fR is active.
  It warns about code that might break the strict aliasing rules that the
--- 7635,7641 ----
  before \f(CW\*(C`main\*(C'\fR is called or after it returns.  The priority values must be
  greater than 100 as the compiler reserves priority values between 0\-\-100 for
  the implementation.
! .IP \fB\-Wstrict\-aliasing\fR 4
  .IX Item "-Wstrict-aliasing"
  This option is only active when \fB\-fstrict\-aliasing\fR is active.
  It warns about code that might break the strict aliasing rules that the
*************** compiler is using for optimization.  The
*** 7710,7716 ****
  cases, but does attempt to catch the more common pitfalls.  It is
  included in \fB\-Wall\fR.
  It is equivalent to \fB\-Wstrict\-aliasing=3\fR
! .IP "\fB\-Wstrict\-aliasing=n\fR" 4
  .IX Item "-Wstrict-aliasing=n"
  This option is only active when \fB\-fstrict\-aliasing\fR is active.
  It warns about code that might break the strict aliasing rules that the
--- 7643,7649 ----
  cases, but does attempt to catch the more common pitfalls.  It is
  included in \fB\-Wall\fR.
  It is equivalent to \fB\-Wstrict\-aliasing=3\fR
! .IP \fB\-Wstrict\-aliasing=n\fR 4
  .IX Item "-Wstrict-aliasing=n"
  This option is only active when \fB\-fstrict\-aliasing\fR is active.
  It warns about code that might break the strict aliasing rules that the
*************** negatives.  Slightly slower than levels
*** 7739,7751 ****
  Takes care of the common pun+dereference pattern in the front end:
  \&\f(CW\*(C`*(int*)&some_float\*(C'\fR.
  If optimization is enabled, it also runs in the back end, where it deals
! with multiple statement cases using flow-sensitive points-to information.
  Only warns when the converted pointer is dereferenced.
  Does not warn about incomplete types.
! .IP "\fB\-Wstrict\-overflow\fR" 4
  .IX Item "-Wstrict-overflow"
  .PD 0
! .IP "\fB\-Wstrict\-overflow=\fR\fIn\fR" 4
  .IX Item "-Wstrict-overflow=n"
  .PD
  This option is only active when signed overflow is undefined.
--- 7672,7684 ----
  Takes care of the common pun+dereference pattern in the front end:
  \&\f(CW\*(C`*(int*)&some_float\*(C'\fR.
  If optimization is enabled, it also runs in the back end, where it deals
! with multiple statement cases using flow\-sensitive points\-to information.
  Only warns when the converted pointer is dereferenced.
  Does not warn about incomplete types.
! .IP \fB\-Wstrict\-overflow\fR 4
  .IX Item "-Wstrict-overflow"
  .PD 0
! .IP \fB\-Wstrict\-overflow=\fR\fIn\fR 4
  .IX Item "-Wstrict-overflow=n"
  .PD
  This option is only active when signed overflow is undefined.
*************** undefined signed overflow when estimatin
*** 7765,7778 ****
  requires, in particular when determining whether a loop will be
  executed at all.
  .RS 4
! .IP "\fB\-Wstrict\-overflow=1\fR" 4
  .IX Item "-Wstrict-overflow=1"
  Warn about cases that are both questionable and easy to avoid.  For
  example the compiler simplifies
  \&\f(CW\*(C`x + 1 > x\*(C'\fR to \f(CW1\fR.  This level of
  \&\fB\-Wstrict\-overflow\fR is enabled by \fB\-Wall\fR; higher levels
  are not, and must be explicitly requested.
! .IP "\fB\-Wstrict\-overflow=2\fR" 4
  .IX Item "-Wstrict-overflow=2"
  Also warn about other cases where a comparison is simplified to a
  constant.  For example: \f(CW\*(C`abs (x) >= 0\*(C'\fR.  This can only be
--- 7698,7711 ----
  requires, in particular when determining whether a loop will be
  executed at all.
  .RS 4
! .IP \fB\-Wstrict\-overflow=1\fR 4
  .IX Item "-Wstrict-overflow=1"
  Warn about cases that are both questionable and easy to avoid.  For
  example the compiler simplifies
  \&\f(CW\*(C`x + 1 > x\*(C'\fR to \f(CW1\fR.  This level of
  \&\fB\-Wstrict\-overflow\fR is enabled by \fB\-Wall\fR; higher levels
  are not, and must be explicitly requested.
! .IP \fB\-Wstrict\-overflow=2\fR 4
  .IX Item "-Wstrict-overflow=2"
  Also warn about other cases where a comparison is simplified to a
  constant.  For example: \f(CW\*(C`abs (x) >= 0\*(C'\fR.  This can only be
*************** simplified when signed integer overflow
*** 7780,7794 ****
  \&\f(CW\*(C`abs (INT_MIN)\*(C'\fR overflows to \f(CW\*(C`INT_MIN\*(C'\fR, which is less than
  zero.  \fB\-Wstrict\-overflow\fR (with no level) is the same as
  \&\fB\-Wstrict\-overflow=2\fR.
! .IP "\fB\-Wstrict\-overflow=3\fR" 4
  .IX Item "-Wstrict-overflow=3"
  Also warn about other cases where a comparison is simplified.  For
  example: \f(CW\*(C`x + 1 > 1\*(C'\fR is simplified to \f(CW\*(C`x > 0\*(C'\fR.
! .IP "\fB\-Wstrict\-overflow=4\fR" 4
  .IX Item "-Wstrict-overflow=4"
  Also warn about other simplifications not covered by the above cases.
  For example: \f(CW\*(C`(x * 10) / 5\*(C'\fR is simplified to \f(CW\*(C`x * 2\*(C'\fR.
! .IP "\fB\-Wstrict\-overflow=5\fR" 4
  .IX Item "-Wstrict-overflow=5"
  Also warn about cases where the compiler reduces the magnitude of a
  constant involved in a comparison.  For example: \f(CW\*(C`x + 2 > y\*(C'\fR is
--- 7713,7727 ----
  \&\f(CW\*(C`abs (INT_MIN)\*(C'\fR overflows to \f(CW\*(C`INT_MIN\*(C'\fR, which is less than
  zero.  \fB\-Wstrict\-overflow\fR (with no level) is the same as
  \&\fB\-Wstrict\-overflow=2\fR.
! .IP \fB\-Wstrict\-overflow=3\fR 4
  .IX Item "-Wstrict-overflow=3"
  Also warn about other cases where a comparison is simplified.  For
  example: \f(CW\*(C`x + 1 > 1\*(C'\fR is simplified to \f(CW\*(C`x > 0\*(C'\fR.
! .IP \fB\-Wstrict\-overflow=4\fR 4
  .IX Item "-Wstrict-overflow=4"
  Also warn about other simplifications not covered by the above cases.
  For example: \f(CW\*(C`(x * 10) / 5\*(C'\fR is simplified to \f(CW\*(C`x * 2\*(C'\fR.
! .IP \fB\-Wstrict\-overflow=5\fR 4
  .IX Item "-Wstrict-overflow=5"
  Also warn about cases where the compiler reduces the magnitude of a
  constant involved in a comparison.  For example: \f(CW\*(C`x + 2 > y\*(C'\fR is
*************** false positives.
*** 7799,7813 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wstring\-compare\fR" 4
  .IX Item "-Wstring-compare"
  Warn for calls to \f(CW\*(C`strcmp\*(C'\fR and \f(CW\*(C`strncmp\*(C'\fR whose result is
! determined to be either zero or non-zero in tests for such equality
  owing to the length of one argument being greater than the size of
  the array the other argument is stored in (or the bound in the case
  of \f(CW\*(C`strncmp\*(C'\fR).  Such calls could be mistakes.  For example,
  the call to \f(CW\*(C`strcmp\*(C'\fR below is diagnosed because its result is
! necessarily non-zero irrespective of the contents of the array \f(CW\*(C`a\*(C'\fR.
  .Sp
  .Vb 8
  \&        extern char a[4];
--- 7732,7746 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-Wstring\-compare\fR 4
  .IX Item "-Wstring-compare"
  Warn for calls to \f(CW\*(C`strcmp\*(C'\fR and \f(CW\*(C`strncmp\*(C'\fR whose result is
! determined to be either zero or non\-zero in tests for such equality
  owing to the length of one argument being greater than the size of
  the array the other argument is stored in (or the bound in the case
  of \f(CW\*(C`strncmp\*(C'\fR).  Such calls could be mistakes.  For example,
  the call to \f(CW\*(C`strcmp\*(C'\fR below is diagnosed because its result is
! necessarily non\-zero irrespective of the contents of the array \f(CW\*(C`a\*(C'\fR.
  .Sp
  .Vb 8
  \&        extern char a[4];
*************** necessarily non-zero irrespective of the
*** 7821,7832 ****
  .Ve
  .Sp
  \&\fB\-Wstring\-compare\fR is enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wno\-stringop\-overflow\fR" 4
  .IX Item "-Wno-stringop-overflow"
  .PD 0
! .IP "\fB\-Wstringop\-overflow\fR" 4
  .IX Item "-Wstringop-overflow"
! .IP "\fB\-Wstringop\-overflow=\fR\fItype\fR" 4
  .IX Item "-Wstringop-overflow=type"
  .PD
  Warn for code that can be statically determined to cause buffer overflows or
--- 7754,7765 ----
  .Ve
  .Sp
  \&\fB\-Wstring\-compare\fR is enabled by \fB\-Wextra\fR.
! .IP \fB\-Wno\-stringop\-overflow\fR 4
  .IX Item "-Wno-stringop-overflow"
  .PD 0
! .IP \fB\-Wstringop\-overflow\fR 4
  .IX Item "-Wstringop-overflow"
! .IP \fB\-Wstringop\-overflow=\fR\fItype\fR 4
  .IX Item "-Wstringop-overflow=type"
  .PD
  Warn for code that can be statically determined to cause buffer overflows or
*************** optional argument is one greater than th
*** 7836,7858 ****
  perform to determine the size of the destination.  
  The argument is meaningful only for string functions
  that operate on character arrays; raw memory functions like \f(CW\*(C`memcpy\*(C'\fR
! always use type-zero Object Size Checking.
  .Sp
  The option also warns for calls that specify a size
  in excess of the largest possible object or at most \f(CW\*(C`SIZE_MAX / 2\*(C'\fR bytes.
  .Sp
  The option produces the best results with optimization enabled but can detect
  a small subset of simple buffer overflows even without optimization in
! calls to the \s-1GCC\s0 built-in functions like \f(CW\*(C`_\|_builtin_memcpy\*(C'\fR that
  correspond to the standard functions.  In any case, the option warns about
  just a subset of buffer overflows detected by the corresponding overflow
! checking built-ins, such as \f(CW\*(C`_\|_builtin_\|_\|_memcpy_chk\*(C'\fR, which can perform
! run-time checking if the access cannot be identified as safe
  at compile time.
  .Sp
  For example, the option issues a warning for
  the \f(CW\*(C`strcpy\*(C'\fR call below because it copies at least 5 characters
! (the string \f(CW"blue"\fR including the terminating \s-1NUL\s0) into the buffer
  of size 4.
  .Sp
  .Vb 11
--- 7769,7791 ----
  perform to determine the size of the destination.  
  The argument is meaningful only for string functions
  that operate on character arrays; raw memory functions like \f(CW\*(C`memcpy\*(C'\fR
! always use type\-zero Object Size Checking.
  .Sp
  The option also warns for calls that specify a size
  in excess of the largest possible object or at most \f(CW\*(C`SIZE_MAX / 2\*(C'\fR bytes.
  .Sp
  The option produces the best results with optimization enabled but can detect
  a small subset of simple buffer overflows even without optimization in
! calls to the GCC built\-in functions like \f(CW\*(C`_\|_builtin_memcpy\*(C'\fR that
  correspond to the standard functions.  In any case, the option warns about
  just a subset of buffer overflows detected by the corresponding overflow
! checking built\-ins, such as \f(CW\*(C`_\|_builtin_\|_\|_memcpy_chk\*(C'\fR, which can perform
! run\-time checking if the access cannot be identified as safe
  at compile time.
  .Sp
  For example, the option issues a warning for
  the \f(CW\*(C`strcpy\*(C'\fR call below because it copies at least 5 characters
! (the string \f(CW"blue"\fR including the terminating NUL) into the buffer
  of size 4.
  .Sp
  .Vb 11
*************** because a 1\-element array is passed to
*** 7889,7927 ****
  .Sp
  Option \fB\-Wstringop\-overflow=2\fR is enabled by default.
  .RS 4
! .IP "\fB\-Wstringop\-overflow\fR" 4
  .IX Item "-Wstringop-overflow"
  .PD 0
! .IP "\fB\-Wstringop\-overflow=1\fR" 4
  .IX Item "-Wstringop-overflow=1"
  .PD
! The \fB\-Wstringop\-overflow=1\fR option uses type-zero Object Size Checking
  to determine the sizes of destination objects.  At this setting the option
  does not warn for writes past the end of subobjects of larger objects accessed
  by pointers unless the size of the largest surrounding object is known.  When
  the destination may be one of several objects it is assumed to be the largest
  one of them.  On Linux systems, when optimization is enabled at this setting
  the option warns for the same code as when the \f(CW\*(C`_FORTIFY_SOURCE\*(C'\fR macro
! is defined to a non-zero value.
! .IP "\fB\-Wstringop\-overflow=2\fR" 4
  .IX Item "-Wstringop-overflow=2"
! The \fB\-Wstringop\-overflow=2\fR option uses type-one Object Size Checking
  to determine the sizes of destination objects.  At this setting the option
  warns about overflows when writing to members of the largest complete
  objects whose exact size is known.  However, it does not warn for excessive
  writes to the same members of unknown objects referenced by pointers since
  they may point to arrays containing unknown numbers of elements.  This is
  the default setting of the option.
! .IP "\fB\-Wstringop\-overflow=3\fR" 4
  .IX Item "-Wstringop-overflow=3"
! The \fB\-Wstringop\-overflow=3\fR option uses type-two Object Size Checking
  to determine the sizes of destination objects.  At this setting the option
  warns about overflowing the smallest object or data member.  This is the
  most restrictive setting of the option that may result in warnings for safe
  code.
! .IP "\fB\-Wstringop\-overflow=4\fR" 4
  .IX Item "-Wstringop-overflow=4"
! The \fB\-Wstringop\-overflow=4\fR option uses type-three Object Size Checking
  to determine the sizes of destination objects.  At this setting the option
  warns about overflowing any data members, and when the destination is
  one of several objects it uses the size of the largest of them to decide
--- 7822,7860 ----
  .Sp
  Option \fB\-Wstringop\-overflow=2\fR is enabled by default.
  .RS 4
! .IP \fB\-Wstringop\-overflow\fR 4
  .IX Item "-Wstringop-overflow"
  .PD 0
! .IP \fB\-Wstringop\-overflow=1\fR 4
  .IX Item "-Wstringop-overflow=1"
  .PD
! The \fB\-Wstringop\-overflow=1\fR option uses type\-zero Object Size Checking
  to determine the sizes of destination objects.  At this setting the option
  does not warn for writes past the end of subobjects of larger objects accessed
  by pointers unless the size of the largest surrounding object is known.  When
  the destination may be one of several objects it is assumed to be the largest
  one of them.  On Linux systems, when optimization is enabled at this setting
  the option warns for the same code as when the \f(CW\*(C`_FORTIFY_SOURCE\*(C'\fR macro
! is defined to a non\-zero value.
! .IP \fB\-Wstringop\-overflow=2\fR 4
  .IX Item "-Wstringop-overflow=2"
! The \fB\-Wstringop\-overflow=2\fR option uses type\-one Object Size Checking
  to determine the sizes of destination objects.  At this setting the option
  warns about overflows when writing to members of the largest complete
  objects whose exact size is known.  However, it does not warn for excessive
  writes to the same members of unknown objects referenced by pointers since
  they may point to arrays containing unknown numbers of elements.  This is
  the default setting of the option.
! .IP \fB\-Wstringop\-overflow=3\fR 4
  .IX Item "-Wstringop-overflow=3"
! The \fB\-Wstringop\-overflow=3\fR option uses type\-two Object Size Checking
  to determine the sizes of destination objects.  At this setting the option
  warns about overflowing the smallest object or data member.  This is the
  most restrictive setting of the option that may result in warnings for safe
  code.
! .IP \fB\-Wstringop\-overflow=4\fR 4
  .IX Item "-Wstringop-overflow=4"
! The \fB\-Wstringop\-overflow=4\fR option uses type\-three Object Size Checking
  to determine the sizes of destination objects.  At this setting the option
  warns about overflowing any data members, and when the destination is
  one of several objects it uses the size of the largest of them to decide
*************** setting of the option may result in warn
*** 7930,7943 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wno\-stringop\-overread\fR" 4
  .IX Item "-Wno-stringop-overread"
  Warn for calls to string manipulation functions such as \f(CW\*(C`memchr\*(C'\fR, or
  \&\f(CW\*(C`strcpy\*(C'\fR that are determined to read past the end of the source
  sequence.
  .Sp
  Option \fB\-Wstringop\-overread\fR is enabled by default.
! .IP "\fB\-Wno\-stringop\-truncation\fR" 4
  .IX Item "-Wno-stringop-truncation"
  Do not warn for calls to bounded string manipulation functions
  such as \f(CW\*(C`strncat\*(C'\fR,
--- 7863,7876 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-Wno\-stringop\-overread\fR 4
  .IX Item "-Wno-stringop-overread"
  Warn for calls to string manipulation functions such as \f(CW\*(C`memchr\*(C'\fR, or
  \&\f(CW\*(C`strcpy\*(C'\fR that are determined to read past the end of the source
  sequence.
  .Sp
  Option \fB\-Wstringop\-overread\fR is enabled by default.
! .IP \fB\-Wno\-stringop\-truncation\fR 4
  .IX Item "-Wno-stringop-truncation"
  Do not warn for calls to bounded string manipulation functions
  such as \f(CW\*(C`strncat\*(C'\fR,
*************** warning use \f(CW\*(C`bufsize \- strlen
*** 7957,7967 ****
  .Ve
  .Sp
  As another example, the following call to \f(CW\*(C`strncpy\*(C'\fR results in copying
! to \f(CW\*(C`d\*(C'\fR just the characters preceding the terminating \s-1NUL,\s0 without
! appending the \s-1NUL\s0 to the end.  Assuming the result of \f(CW\*(C`strncpy\*(C'\fR is
! necessarily a NUL-terminated string is a common mistake, and so the call
  is diagnosed.  To avoid the warning when the result is not expected to be
! NUL-terminated, call \f(CW\*(C`memcpy\*(C'\fR instead.
  .Sp
  .Vb 4
  \&        void copy (char *d, const char *s)
--- 7890,7900 ----
  .Ve
  .Sp
  As another example, the following call to \f(CW\*(C`strncpy\*(C'\fR results in copying
! to \f(CW\*(C`d\*(C'\fR just the characters preceding the terminating NUL, without
! appending the NUL to the end.  Assuming the result of \f(CW\*(C`strncpy\*(C'\fR is
! necessarily a NUL\-terminated string is a common mistake, and so the call
  is diagnosed.  To avoid the warning when the result is not expected to be
! NUL\-terminated, call \f(CW\*(C`memcpy\*(C'\fR instead.
  .Sp
  .Vb 4
  \&        void copy (char *d, const char *s)
*************** NUL-terminated, call \f(CW\*(C`memcpy\*(
*** 7973,7979 ****
  In the following example, the call to \f(CW\*(C`strncpy\*(C'\fR specifies the size
  of the destination buffer as the bound.  If the length of the source
  string is equal to or greater than this size the result of the copy will
! not be NUL-terminated.  Therefore, the call is also diagnosed.  To avoid
  the warning, specify \f(CW\*(C`sizeof buf \- 1\*(C'\fR as the bound and set the last
  element of the buffer to \f(CW\*(C`NUL\*(C'\fR.
  .Sp
--- 7906,7912 ----
  In the following example, the call to \f(CW\*(C`strncpy\*(C'\fR specifies the size
  of the destination buffer as the bound.  If the length of the source
  string is equal to or greater than this size the result of the copy will
! not be NUL\-terminated.  Therefore, the call is also diagnosed.  To avoid
  the warning, specify \f(CW\*(C`sizeof buf \- 1\*(C'\fR as the bound and set the last
  element of the buffer to \f(CW\*(C`NUL\*(C'\fR.
  .Sp
*************** of bytes with no terminating \f(CW\*(C`N
*** 7991,8003 ****
  with attribute \f(CW\*(C`nonstring\*(C'\fR to avoid this warning.  Such arrays,
  however, are not suitable arguments to functions that expect
  \&\f(CW\*(C`NUL\*(C'\fR\-terminated strings.  To help detect accidental misuses of
! such arrays \s-1GCC\s0 issues warnings unless it can prove that the use is
  safe.
! .IP "\fB\-Wstrict\-flex\-arrays\fR (C and \*(C+ only)" 4
! .IX Item "-Wstrict-flex-arrays (C and only)"
  Warn about improper usages of flexible array members
! according to the \fIlevel\fR of the \f(CW\*(C`strict_flex_array (\f(CIlevel\f(CW)\*(C'\fR
! attribute attached to the trailing array field of a structure if it's
  available, otherwise according to the \fIlevel\fR of the option
  \&\fB\-fstrict\-flex\-arrays=\fR\fIlevel\fR.    \f(CW\*(C`\-Wstrict\-flex\-arrays\*(C'\fR
  is effective only when \fIlevel\fR is greater than 0.
--- 7924,7936 ----
  with attribute \f(CW\*(C`nonstring\*(C'\fR to avoid this warning.  Such arrays,
  however, are not suitable arguments to functions that expect
  \&\f(CW\*(C`NUL\*(C'\fR\-terminated strings.  To help detect accidental misuses of
! such arrays GCC issues warnings unless it can prove that the use is
  safe.
! .IP "\fB\-Wstrict\-flex\-arrays\fR (C and C++ only)" 4
! .IX Item "-Wstrict-flex-arrays (C and C++ only)"
  Warn about improper usages of flexible array members
! according to the \fIlevel\fR of the \f(CW\*(C`strict_flex_array (\fR\f(CIlevel\fR\f(CW)\*(C'\fR
! attribute attached to the trailing array field of a structure if it\*(Aqs
  available, otherwise according to the \fIlevel\fR of the option
  \&\fB\-fstrict\-flex\-arrays=\fR\fIlevel\fR.    \f(CW\*(C`\-Wstrict\-flex\-arrays\*(C'\fR
  is effective only when \fIlevel\fR is greater than 0.
*************** of a structure that have 2 or more eleme
*** 8007,8039 ****
  as a flexible array member.
  .Sp
  When \fIlevel\fR=2, in addition to \fIlevel\fR=1, additional warnings are
! issued for a trailing one-element array reference of a structure
  if the array is referenced as a flexible array member.
  .Sp
  When \fIlevel\fR=3, in addition to \fIlevel\fR=2, additional warnings are
! issued for a trailing zero-length array reference of a structure
  if the array is referenced as a flexible array member.
  .Sp
  This option is more effective when \fB\-ftree\-vrp\fR is active (the
  default for \fB\-O2\fR and above) but some warnings may be diagnosed
  even without optimization.
! .IP "\fB\-Wsuggest\-attribute=\fR\fIattribute-name\fR" 4
  .IX Item "-Wsuggest-attribute=attribute-name"
  Warn for cases where adding an attribute may be beneficial. The
! \&\fIattribute-name\fRs currently supported are listed below.
  .RS 4
! .IP "\fB\-Wsuggest\-attribute=pure\fR" 4
  .IX Item "-Wsuggest-attribute=pure"
  .PD 0
! .IP "\fB\-Wsuggest\-attribute=const\fR" 4
  .IX Item "-Wsuggest-attribute=const"
! .IP "\fB\-Wsuggest\-attribute=noreturn\fR" 4
  .IX Item "-Wsuggest-attribute=noreturn"
! .IP "\fB\-Wmissing\-noreturn\fR" 4
  .IX Item "-Wmissing-noreturn"
! .IP "\fB\-Wsuggest\-attribute=malloc\fR" 4
  .IX Item "-Wsuggest-attribute=malloc"
! .IP "\fB\-Wsuggest\-attribute=returns_nonnull\fR" 4
  .IX Item "-Wsuggest-attribute=returns_nonnull"
  .PD
  Warn about functions that might be candidates for attributes
--- 7940,7972 ----
  as a flexible array member.
  .Sp
  When \fIlevel\fR=2, in addition to \fIlevel\fR=1, additional warnings are
! issued for a trailing one\-element array reference of a structure
  if the array is referenced as a flexible array member.
  .Sp
  When \fIlevel\fR=3, in addition to \fIlevel\fR=2, additional warnings are
! issued for a trailing zero\-length array reference of a structure
  if the array is referenced as a flexible array member.
  .Sp
  This option is more effective when \fB\-ftree\-vrp\fR is active (the
  default for \fB\-O2\fR and above) but some warnings may be diagnosed
  even without optimization.
! .IP \fB\-Wsuggest\-attribute=\fR\fIattribute\-name\fR 4
  .IX Item "-Wsuggest-attribute=attribute-name"
  Warn for cases where adding an attribute may be beneficial. The
! \&\fIattribute\-name\fRs currently supported are listed below.
  .RS 4
! .IP \fB\-Wsuggest\-attribute=pure\fR 4
  .IX Item "-Wsuggest-attribute=pure"
  .PD 0
! .IP \fB\-Wsuggest\-attribute=const\fR 4
  .IX Item "-Wsuggest-attribute=const"
! .IP \fB\-Wsuggest\-attribute=noreturn\fR 4
  .IX Item "-Wsuggest-attribute=noreturn"
! .IP \fB\-Wmissing\-noreturn\fR 4
  .IX Item "-Wmissing-noreturn"
! .IP \fB\-Wsuggest\-attribute=malloc\fR 4
  .IX Item "-Wsuggest-attribute=malloc"
! .IP \fB\-Wsuggest\-attribute=returns_nonnull\fR 4
  .IX Item "-Wsuggest-attribute=returns_nonnull"
  .PD
  Warn about functions that might be candidates for attributes
*************** Warn about functions that might be candi
*** 8041,8136 ****
  \&\f(CW\*(C`returns_nonnull\*(C'\fR.  The compiler
  only warns for functions visible in other compilation units or (in the case of
  \&\f(CW\*(C`pure\*(C'\fR and \f(CW\*(C`const\*(C'\fR) if it cannot prove that the function returns
! normally. A function returns normally if it doesn't contain an infinite loop or
  return abnormally by throwing, calling \f(CW\*(C`abort\*(C'\fR or trapping.  This analysis
  requires option \fB\-fipa\-pure\-const\fR, which is enabled by default at
  \&\fB\-O\fR and higher.  Higher optimization levels improve the accuracy
  of the analysis.
! .IP "\fB\-Wsuggest\-attribute=format\fR" 4
  .IX Item "-Wsuggest-attribute=format"
  .PD 0
! .IP "\fB\-Wmissing\-format\-attribute\fR" 4
  .IX Item "-Wmissing-format-attribute"
  .PD
  Warn about function pointers that might be candidates for \f(CW\*(C`format\*(C'\fR
  attributes.  Note these are only possible candidates, not absolute ones.
! \&\s-1GCC\s0 guesses that function pointers with \f(CW\*(C`format\*(C'\fR attributes that
  are used in assignment, initialization, parameter passing or return
  statements should have a corresponding \f(CW\*(C`format\*(C'\fR attribute in the
! resulting type.  I.e. the left-hand side of the assignment or
  initialization, the type of the parameter variable, or the return type
  of the containing function respectively should also have a \f(CW\*(C`format\*(C'\fR
  attribute to avoid the warning.
  .Sp
! \&\s-1GCC\s0 also warns about function definitions that might be
  candidates for \f(CW\*(C`format\*(C'\fR attributes.  Again, these are only
! possible candidates.  \s-1GCC\s0 guesses that \f(CW\*(C`format\*(C'\fR attributes
  might be appropriate for any function that calls a function like
  \&\f(CW\*(C`vprintf\*(C'\fR or \f(CW\*(C`vscanf\*(C'\fR, but this might not always be the
  case, and some functions for which \f(CW\*(C`format\*(C'\fR attributes are
  appropriate may not be detected.
! .IP "\fB\-Wsuggest\-attribute=cold\fR" 4
  .IX Item "-Wsuggest-attribute=cold"
  Warn about functions that might be candidates for \f(CW\*(C`cold\*(C'\fR attribute.  This
  is based on static detection and generally only warns about functions which
  always leads to a call to another \f(CW\*(C`cold\*(C'\fR function such as wrappers of
! \&\*(C+ \f(CW\*(C`throw\*(C'\fR or fatal error reporting functions leading to \f(CW\*(C`abort\*(C'\fR.
  .RE
  .RS 4
  .RE
! .IP "\fB\-Walloc\-size\fR" 4
  .IX Item "-Walloc-size"
  Warn about calls to allocation functions decorated with attribute
  \&\f(CW\*(C`alloc_size\*(C'\fR that specify insufficient size for the target type of
! the pointer the result is assigned to, including those to the built-in
  forms of the functions \f(CW\*(C`aligned_alloc\*(C'\fR, \f(CW\*(C`alloca\*(C'\fR,
  \&\f(CW\*(C`calloc\*(C'\fR, \f(CW\*(C`malloc\*(C'\fR, and \f(CW\*(C`realloc\*(C'\fR.
! .IP "\fB\-Walloc\-zero\fR" 4
  .IX Item "-Walloc-zero"
  Warn about calls to allocation functions decorated with attribute
! \&\f(CW\*(C`alloc_size\*(C'\fR that specify zero bytes, including those to the built-in
  forms of the functions \f(CW\*(C`aligned_alloc\*(C'\fR, \f(CW\*(C`alloca\*(C'\fR, \f(CW\*(C`calloc\*(C'\fR,
  \&\f(CW\*(C`malloc\*(C'\fR, and \f(CW\*(C`realloc\*(C'\fR.  Because the behavior of these functions
  when called with a zero size differs among implementations (and in the case
  of \f(CW\*(C`realloc\*(C'\fR has been deprecated) relying on it may result in subtle
  portability bugs and should be avoided.
! .IP "\fB\-Wcalloc\-transposed\-args\fR" 4
  .IX Item "-Wcalloc-transposed-args"
  Warn about calls to allocation functions decorated with attribute
  \&\f(CW\*(C`alloc_size\*(C'\fR with two arguments, which use \f(CW\*(C`sizeof\*(C'\fR operator
! as the earlier size argument and don't use it as the later size argument.
  This is a coding style warning.  The first argument to \f(CW\*(C`calloc\*(C'\fR is
  documented to be number of elements in array, while the second argument
! is size of each element, so \f(CW\*(C`calloc (\f(CIn\f(CW, sizeof (int))\*(C'\fR is preferred
! over \f(CW\*(C`calloc (sizeof (int), \f(CIn\f(CW)\*(C'\fR.  If \f(CW\*(C`sizeof\*(C'\fR in the earlier
  argument and not the latter is intentional, the warning can be suppressed
! by using \f(CW\*(C`calloc (sizeof (struct \f(CIS\f(CW) + 0, n)\*(C'\fR or
! \&\f(CW\*(C`calloc (1 * sizeof (struct \f(CIS\f(CW), 4)\*(C'\fR or using \f(CW\*(C`sizeof\*(C'\fR in the
  later argument as well.
! .IP "\fB\-Walloc\-size\-larger\-than=\fR\fIbyte-size\fR" 4
  .IX Item "-Walloc-size-larger-than=byte-size"
  Warn about calls to functions decorated with attribute \f(CW\*(C`alloc_size\*(C'\fR
  that attempt to allocate objects larger than the specified number of bytes,
  or where the result of the size computation in an integer type with infinite
! precision would exceed the value of \fB\s-1PTRDIFF_MAX\s0\fR on the target.
! \&\fB\-Walloc\-size\-larger\-than=\fR\fB\s-1PTRDIFF_MAX\s0\fR is enabled by default.
  Warnings controlled by the option can be disabled either by specifying
! \&\fIbyte-size\fR of \fB\s-1SIZE_MAX\s0\fR or more or by
  \&\fB\-Wno\-alloc\-size\-larger\-than\fR.
! .IP "\fB\-Wno\-alloc\-size\-larger\-than\fR" 4
  .IX Item "-Wno-alloc-size-larger-than"
  Disable \fB\-Walloc\-size\-larger\-than=\fR warnings.  The option is
! equivalent to \fB\-Walloc\-size\-larger\-than=\fR\fB\s-1SIZE_MAX\s0\fR or
  larger.
! .IP "\fB\-Walloca\fR" 4
  .IX Item "-Walloca"
  This option warns on all uses of \f(CW\*(C`alloca\*(C'\fR in the source.
! .IP "\fB\-Walloca\-larger\-than=\fR\fIbyte-size\fR" 4
  .IX Item "-Walloca-larger-than=byte-size"
  This option warns on calls to \f(CW\*(C`alloca\*(C'\fR with an integer argument whose
  value is either zero, or that is not bounded by a controlling predicate
! that limits its value to at most \fIbyte-size\fR.  It also warns for calls
! to \f(CW\*(C`alloca\*(C'\fR where the bound value is unknown.  Arguments of non-integer
  types are considered unbounded even if they appear to be constrained to
  the expected range.
  .Sp
--- 7974,8069 ----
  \&\f(CW\*(C`returns_nonnull\*(C'\fR.  The compiler
  only warns for functions visible in other compilation units or (in the case of
  \&\f(CW\*(C`pure\*(C'\fR and \f(CW\*(C`const\*(C'\fR) if it cannot prove that the function returns
! normally. A function returns normally if it doesn\*(Aqt contain an infinite loop or
  return abnormally by throwing, calling \f(CW\*(C`abort\*(C'\fR or trapping.  This analysis
  requires option \fB\-fipa\-pure\-const\fR, which is enabled by default at
  \&\fB\-O\fR and higher.  Higher optimization levels improve the accuracy
  of the analysis.
! .IP \fB\-Wsuggest\-attribute=format\fR 4
  .IX Item "-Wsuggest-attribute=format"
  .PD 0
! .IP \fB\-Wmissing\-format\-attribute\fR 4
  .IX Item "-Wmissing-format-attribute"
  .PD
  Warn about function pointers that might be candidates for \f(CW\*(C`format\*(C'\fR
  attributes.  Note these are only possible candidates, not absolute ones.
! GCC guesses that function pointers with \f(CW\*(C`format\*(C'\fR attributes that
  are used in assignment, initialization, parameter passing or return
  statements should have a corresponding \f(CW\*(C`format\*(C'\fR attribute in the
! resulting type.  I.e. the left\-hand side of the assignment or
  initialization, the type of the parameter variable, or the return type
  of the containing function respectively should also have a \f(CW\*(C`format\*(C'\fR
  attribute to avoid the warning.
  .Sp
! GCC also warns about function definitions that might be
  candidates for \f(CW\*(C`format\*(C'\fR attributes.  Again, these are only
! possible candidates.  GCC guesses that \f(CW\*(C`format\*(C'\fR attributes
  might be appropriate for any function that calls a function like
  \&\f(CW\*(C`vprintf\*(C'\fR or \f(CW\*(C`vscanf\*(C'\fR, but this might not always be the
  case, and some functions for which \f(CW\*(C`format\*(C'\fR attributes are
  appropriate may not be detected.
! .IP \fB\-Wsuggest\-attribute=cold\fR 4
  .IX Item "-Wsuggest-attribute=cold"
  Warn about functions that might be candidates for \f(CW\*(C`cold\*(C'\fR attribute.  This
  is based on static detection and generally only warns about functions which
  always leads to a call to another \f(CW\*(C`cold\*(C'\fR function such as wrappers of
! C++ \f(CW\*(C`throw\*(C'\fR or fatal error reporting functions leading to \f(CW\*(C`abort\*(C'\fR.
  .RE
  .RS 4
  .RE
! .IP \fB\-Walloc\-size\fR 4
  .IX Item "-Walloc-size"
  Warn about calls to allocation functions decorated with attribute
  \&\f(CW\*(C`alloc_size\*(C'\fR that specify insufficient size for the target type of
! the pointer the result is assigned to, including those to the built\-in
  forms of the functions \f(CW\*(C`aligned_alloc\*(C'\fR, \f(CW\*(C`alloca\*(C'\fR,
  \&\f(CW\*(C`calloc\*(C'\fR, \f(CW\*(C`malloc\*(C'\fR, and \f(CW\*(C`realloc\*(C'\fR.
! .IP \fB\-Walloc\-zero\fR 4
  .IX Item "-Walloc-zero"
  Warn about calls to allocation functions decorated with attribute
! \&\f(CW\*(C`alloc_size\*(C'\fR that specify zero bytes, including those to the built\-in
  forms of the functions \f(CW\*(C`aligned_alloc\*(C'\fR, \f(CW\*(C`alloca\*(C'\fR, \f(CW\*(C`calloc\*(C'\fR,
  \&\f(CW\*(C`malloc\*(C'\fR, and \f(CW\*(C`realloc\*(C'\fR.  Because the behavior of these functions
  when called with a zero size differs among implementations (and in the case
  of \f(CW\*(C`realloc\*(C'\fR has been deprecated) relying on it may result in subtle
  portability bugs and should be avoided.
! .IP \fB\-Wcalloc\-transposed\-args\fR 4
  .IX Item "-Wcalloc-transposed-args"
  Warn about calls to allocation functions decorated with attribute
  \&\f(CW\*(C`alloc_size\*(C'\fR with two arguments, which use \f(CW\*(C`sizeof\*(C'\fR operator
! as the earlier size argument and don\*(Aqt use it as the later size argument.
  This is a coding style warning.  The first argument to \f(CW\*(C`calloc\*(C'\fR is
  documented to be number of elements in array, while the second argument
! is size of each element, so \f(CW\*(C`calloc (\fR\f(CIn\fR\f(CW, sizeof (int))\*(C'\fR is preferred
! over \f(CW\*(C`calloc (sizeof (int), \fR\f(CIn\fR\f(CW)\*(C'\fR.  If \f(CW\*(C`sizeof\*(C'\fR in the earlier
  argument and not the latter is intentional, the warning can be suppressed
! by using \f(CW\*(C`calloc (sizeof (struct \fR\f(CIS\fR\f(CW) + 0, n)\*(C'\fR or
! \&\f(CW\*(C`calloc (1 * sizeof (struct \fR\f(CIS\fR\f(CW), 4)\*(C'\fR or using \f(CW\*(C`sizeof\*(C'\fR in the
  later argument as well.
! .IP \fB\-Walloc\-size\-larger\-than=\fR\fIbyte\-size\fR 4
  .IX Item "-Walloc-size-larger-than=byte-size"
  Warn about calls to functions decorated with attribute \f(CW\*(C`alloc_size\*(C'\fR
  that attempt to allocate objects larger than the specified number of bytes,
  or where the result of the size computation in an integer type with infinite
! precision would exceed the value of \fBPTRDIFF_MAX\fR on the target.
! \&\fB\-Walloc\-size\-larger\-than=\fR\fBPTRDIFF_MAX\fR is enabled by default.
  Warnings controlled by the option can be disabled either by specifying
! \&\fIbyte\-size\fR of \fBSIZE_MAX\fR or more or by
  \&\fB\-Wno\-alloc\-size\-larger\-than\fR.
! .IP \fB\-Wno\-alloc\-size\-larger\-than\fR 4
  .IX Item "-Wno-alloc-size-larger-than"
  Disable \fB\-Walloc\-size\-larger\-than=\fR warnings.  The option is
! equivalent to \fB\-Walloc\-size\-larger\-than=\fR\fBSIZE_MAX\fR or
  larger.
! .IP \fB\-Walloca\fR 4
  .IX Item "-Walloca"
  This option warns on all uses of \f(CW\*(C`alloca\*(C'\fR in the source.
! .IP \fB\-Walloca\-larger\-than=\fR\fIbyte\-size\fR 4
  .IX Item "-Walloca-larger-than=byte-size"
  This option warns on calls to \f(CW\*(C`alloca\*(C'\fR with an integer argument whose
  value is either zero, or that is not bounded by a controlling predicate
! that limits its value to at most \fIbyte\-size\fR.  It also warns for calls
! to \f(CW\*(C`alloca\*(C'\fR where the bound value is unknown.  Arguments of non\-integer
  types are considered unbounded even if they appear to be constrained to
  the expected range.
  .Sp
*************** expected argument to be implicitly cast
*** 8186,8201 ****
  .Sp
  This option also warns when \f(CW\*(C`alloca\*(C'\fR is used in a loop.
  .Sp
! \&\fB\-Walloca\-larger\-than=\fR\fB\s-1PTRDIFF_MAX\s0\fR is enabled by default
  but is usually only effective  when \fB\-ftree\-vrp\fR is active (default
  for \fB\-O2\fR and above).
  .Sp
! See also \fB\-Wvla\-larger\-than=\fR\fBbyte-size\fR.
! .IP "\fB\-Wno\-alloca\-larger\-than\fR" 4
  .IX Item "-Wno-alloca-larger-than"
  Disable \fB\-Walloca\-larger\-than=\fR warnings.  The option is
! equivalent to \fB\-Walloca\-larger\-than=\fR\fB\s-1SIZE_MAX\s0\fR or larger.
! .IP "\fB\-Warith\-conversion\fR" 4
  .IX Item "-Warith-conversion"
  Do warn about implicit conversions from arithmetic operations even
  when conversion of the operands to the same type cannot change their
--- 8119,8134 ----
  .Sp
  This option also warns when \f(CW\*(C`alloca\*(C'\fR is used in a loop.
  .Sp
! \&\fB\-Walloca\-larger\-than=\fR\fBPTRDIFF_MAX\fR is enabled by default
  but is usually only effective  when \fB\-ftree\-vrp\fR is active (default
  for \fB\-O2\fR and above).
  .Sp
! See also \fB\-Wvla\-larger\-than=\fR\fBbyte\-size\fR.
! .IP \fB\-Wno\-alloca\-larger\-than\fR 4
  .IX Item "-Wno-alloca-larger-than"
  Disable \fB\-Walloca\-larger\-than=\fR warnings.  The option is
! equivalent to \fB\-Walloca\-larger\-than=\fR\fBSIZE_MAX\fR or larger.
! .IP \fB\-Warith\-conversion\fR 4
  .IX Item "-Warith-conversion"
  Do warn about implicit conversions from arithmetic operations even
  when conversion of the operands to the same type cannot change their
*************** values.  This affects warnings from \fB\
*** 8209,8218 ****
  \&          c = c + 1; // only warns with B<\-Warith\-conversion>
  \&        }
  .Ve
! .IP "\fB\-Warray\-bounds\fR" 4
  .IX Item "-Warray-bounds"
  .PD 0
! .IP "\fB\-Warray\-bounds=\fR\fIn\fR" 4
  .IX Item "-Warray-bounds=n"
  .PD
  Warn about out of bounds subscripts or offsets into arrays.  This warning
--- 8142,8151 ----
  \&          c = c + 1; // only warns with B<\-Warith\-conversion>
  \&        }
  .Ve
! .IP \fB\-Warray\-bounds\fR 4
  .IX Item "-Warray-bounds"
  .PD 0
! .IP \fB\-Warray\-bounds=\fR\fIn\fR 4
  .IX Item "-Warray-bounds=n"
  .PD
  Warn about out of bounds subscripts or offsets into arrays.  This warning
*************** are issued even without optimization.
*** 8223,8231 ****
  By default, the trailing array of a structure will be treated as a flexible
  array member by \fB\-Warray\-bounds\fR or \fB\-Warray\-bounds=\fR\fIn\fR
  if it is declared as either a flexible array member per C99 standard onwards
! (\fB[]\fR), a \s-1GCC\s0 zero-length array extension (\fB[0]\fR), or an one-element
  array (\fB[1]\fR). As a result, out of bounds subscripts or offsets into
! zero-length arrays or one-element arrays are not warned by default.
  .Sp
  You can add the option \fB\-fstrict\-flex\-arrays\fR or
  \&\fB\-fstrict\-flex\-arrays=\fR\fIlevel\fR to control how this
--- 8156,8164 ----
  By default, the trailing array of a structure will be treated as a flexible
  array member by \fB\-Warray\-bounds\fR or \fB\-Warray\-bounds=\fR\fIn\fR
  if it is declared as either a flexible array member per C99 standard onwards
! (\fB[]\fR), a GCC zero\-length array extension (\fB[0]\fR), or an one\-element
  array (\fB[1]\fR). As a result, out of bounds subscripts or offsets into
! zero\-length arrays or one\-element arrays are not warned by default.
  .Sp
  You can add the option \fB\-fstrict\-flex\-arrays\fR or
  \&\fB\-fstrict\-flex\-arrays=\fR\fIlevel\fR to control how this
*************** option treat trailing array of a structu
*** 8234,8249 ****
  when \fIlevel\fR<=1, no change to the default behavior.
  .Sp
  when \fIlevel\fR=2, additional warnings will be issued for out of bounds
! subscripts or offsets into one-element arrays;
  .Sp
  when \fIlevel\fR=3, in addition to \fIlevel\fR=2, additional warnings will be
! issued for out of bounds subscripts or offsets into zero-length arrays.
  .RS 4
! .IP "\fB\-Warray\-bounds=1\fR" 4
  .IX Item "-Warray-bounds=1"
  This is the default warning level of \fB\-Warray\-bounds\fR and is enabled
  by \fB\-Wall\fR; higher levels are not, and must be explicitly requested.
! .IP "\fB\-Warray\-bounds=2\fR" 4
  .IX Item "-Warray-bounds=2"
  This warning level also warns about the intermediate results of pointer
  arithmetic that may yield out of bounds values. This warning level may
--- 8167,8182 ----
  when \fIlevel\fR<=1, no change to the default behavior.
  .Sp
  when \fIlevel\fR=2, additional warnings will be issued for out of bounds
! subscripts or offsets into one\-element arrays;
  .Sp
  when \fIlevel\fR=3, in addition to \fIlevel\fR=2, additional warnings will be
! issued for out of bounds subscripts or offsets into zero\-length arrays.
  .RS 4
! .IP \fB\-Warray\-bounds=1\fR 4
  .IX Item "-Warray-bounds=1"
  This is the default warning level of \fB\-Warray\-bounds\fR and is enabled
  by \fB\-Wall\fR; higher levels are not, and must be explicitly requested.
! .IP \fB\-Warray\-bounds=2\fR 4
  .IX Item "-Warray-bounds=2"
  This warning level also warns about the intermediate results of pointer
  arithmetic that may yield out of bounds values. This warning level may
*************** give a larger number of false positives
*** 8251,8257 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wunterminated\-string\-initialization\fR (C and Objective-C only)" 4
  .IX Item "-Wunterminated-string-initialization (C and Objective-C only)"
  Warn about character arrays initialized as unterminated character sequences
  with a string literal, unless the declaration being initialized has
--- 8184,8190 ----
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wunterminated\-string\-initialization\fR (C and Objective\-C only)" 4
  .IX Item "-Wunterminated-string-initialization (C and Objective-C only)"
  Warn about character arrays initialized as unterminated character sequences
  with a string literal, unless the declaration being initialized has
*************** For example:
*** 8266,8276 ****
  This warning is enabled by \fB\-Wextra\fR.  If \fB\-Wc++\-compat\fR
  is enabled, the warning has slightly different wording and warns even
  if the declaration being initialized has the \f(CW\*(C`nonstring\*(C'\fR warning,
! as in \*(C+ such initializations are an error.
! .IP "\fB\-Warray\-compare\fR" 4
  .IX Item "-Warray-compare"
  Warn about equality and relational comparisons between two operands of array
! type.  This comparison was deprecated in \*(C+20.  For example:
  .Sp
  .Vb 3
  \&        int arr1[5];
--- 8199,8209 ----
  This warning is enabled by \fB\-Wextra\fR.  If \fB\-Wc++\-compat\fR
  is enabled, the warning has slightly different wording and warns even
  if the declaration being initialized has the \f(CW\*(C`nonstring\*(C'\fR warning,
! as in C++ such initializations are an error.
! .IP \fB\-Warray\-compare\fR 4
  .IX Item "-Warray-compare"
  Warn about equality and relational comparisons between two operands of array
! type.  This comparison was deprecated in C++20.  For example:
  .Sp
  .Vb 3
  \&        int arr1[5];
*************** type.  This comparison was deprecated in
*** 8279,8293 ****
  .Ve
  .Sp
  \&\fB\-Warray\-compare\fR is enabled by \fB\-Wall\fR.
! .IP "\fB\-Warray\-parameter\fR" 4
  .IX Item "-Warray-parameter"
  .PD 0
! .IP "\fB\-Warray\-parameter=\fR\fIn\fR" 4
  .IX Item "-Warray-parameter=n"
  .PD
  Warn about redeclarations of functions involving parameters of array or
  pointer types of inconsistent kinds or forms, and enable the detection
! of out-of-bounds accesses to such parameters by warnings such as
  \&\fB\-Warray\-bounds\fR.
  .Sp
  If the first function declaration uses the array form for a parameter
--- 8212,8226 ----
  .Ve
  .Sp
  \&\fB\-Warray\-compare\fR is enabled by \fB\-Wall\fR.
! .IP \fB\-Warray\-parameter\fR 4
  .IX Item "-Warray-parameter"
  .PD 0
! .IP \fB\-Warray\-parameter=\fR\fIn\fR 4
  .IX Item "-Warray-parameter=n"
  .PD
  Warn about redeclarations of functions involving parameters of array or
  pointer types of inconsistent kinds or forms, and enable the detection
! of out\-of\-bounds accesses to such parameters by warnings such as
  \&\fB\-Warray\-bounds\fR.
  .Sp
  If the first function declaration uses the array form for a parameter
*************** involving Variable Length Array argument
*** 8335,8355 ****
  The short form of the option \fB\-Warray\-parameter\fR is equivalent to
  \&\fB\-Warray\-parameter=2\fR.  The negative form \fB\-Wno\-array\-parameter\fR
  is equivalent to \fB\-Warray\-parameter=0\fR.
! .IP "\fB\-Wattribute\-alias=\fR\fIn\fR" 4
  .IX Item "-Wattribute-alias=n"
  .PD 0
! .IP "\fB\-Wno\-attribute\-alias\fR" 4
  .IX Item "-Wno-attribute-alias"
  .PD
  Warn about declarations using the \f(CW\*(C`alias\*(C'\fR and similar attributes whose
  target is incompatible with the type of the alias.
  .RS 4
! .IP "\fB\-Wattribute\-alias=1\fR" 4
  .IX Item "-Wattribute-alias=1"
  The default warning level of the \fB\-Wattribute\-alias\fR option diagnoses
  incompatibilities between the type of the alias declaration and that of its
  target.  Such incompatibilities are typically indicative of bugs.
! .IP "\fB\-Wattribute\-alias=2\fR" 4
  .IX Item "-Wattribute-alias=2"
  At this level \fB\-Wattribute\-alias\fR also diagnoses cases where
  the attributes of the alias declaration are more restrictive than the
--- 8268,8288 ----
  The short form of the option \fB\-Warray\-parameter\fR is equivalent to
  \&\fB\-Warray\-parameter=2\fR.  The negative form \fB\-Wno\-array\-parameter\fR
  is equivalent to \fB\-Warray\-parameter=0\fR.
! .IP \fB\-Wattribute\-alias=\fR\fIn\fR 4
  .IX Item "-Wattribute-alias=n"
  .PD 0
! .IP \fB\-Wno\-attribute\-alias\fR 4
  .IX Item "-Wno-attribute-alias"
  .PD
  Warn about declarations using the \f(CW\*(C`alias\*(C'\fR and similar attributes whose
  target is incompatible with the type of the alias.
  .RS 4
! .IP \fB\-Wattribute\-alias=1\fR 4
  .IX Item "-Wattribute-alias=1"
  The default warning level of the \fB\-Wattribute\-alias\fR option diagnoses
  incompatibilities between the type of the alias declaration and that of its
  target.  Such incompatibilities are typically indicative of bugs.
! .IP \fB\-Wattribute\-alias=2\fR 4
  .IX Item "-Wattribute-alias=2"
  At this level \fB\-Wattribute\-alias\fR also diagnoses cases where
  the attributes of the alias declaration are more restrictive than the
*************** Attributes considered include \f(CW\*(C`
*** 8371,8386 ****
  This is the default.  You can disable these warnings with either
  \&\fB\-Wno\-attribute\-alias\fR or \fB\-Wattribute\-alias=0\fR.
  .RE
! .IP "\fB\-Wbidi\-chars=\fR[\fBnone\fR|\fBunpaired\fR|\fBany\fR|\fBucn\fR]" 4
  .IX Item "-Wbidi-chars=[none|unpaired|any|ucn]"
! Warn about possibly misleading \s-1UTF\-8\s0 bidirectional control characters in
  comments, string literals, character constants, and identifiers.  Such
! characters can change left-to-right writing direction into right-to-left
  (and vice versa), which can cause confusion between the logical order and
  visual order.  This may be dangerous; for instance, it may seem that a piece
  of code is not commented out, whereas it in fact is.
  .Sp
! There are three levels of warning supported by \s-1GCC.\s0  The default is
  \&\fB\-Wbidi\-chars=unpaired\fR, which warns about improperly terminated
  bidi contexts.  \fB\-Wbidi\-chars=none\fR turns the warning off.
  \&\fB\-Wbidi\-chars=any\fR warns about any use of bidirectional control
--- 8304,8319 ----
  This is the default.  You can disable these warnings with either
  \&\fB\-Wno\-attribute\-alias\fR or \fB\-Wattribute\-alias=0\fR.
  .RE
! .IP \fB\-Wbidi\-chars=\fR[\fBnone\fR|\fBunpaired\fR|\fBany\fR|\fBucn\fR] 4
  .IX Item "-Wbidi-chars=[none|unpaired|any|ucn]"
! Warn about possibly misleading UTF\-8 bidirectional control characters in
  comments, string literals, character constants, and identifiers.  Such
! characters can change left\-to\-right writing direction into right\-to\-left
  (and vice versa), which can cause confusion between the logical order and
  visual order.  This may be dangerous; for instance, it may seem that a piece
  of code is not commented out, whereas it in fact is.
  .Sp
! There are three levels of warning supported by GCC.  The default is
  \&\fB\-Wbidi\-chars=unpaired\fR, which warns about improperly terminated
  bidi contexts.  \fB\-Wbidi\-chars=none\fR turns the warning off.
  \&\fB\-Wbidi\-chars=any\fR warns about any use of bidirectional control
*************** to turn on such checking by using \fB\-W
*** 8391,8397 ****
  \&\fB\-Wbidi\-chars=any,ucn\fR.  Using \fB\-Wbidi\-chars=ucn\fR is valid,
  and is equivalent to \fB\-Wbidi\-chars=unpaired,ucn\fR, if no previous
  \&\fB\-Wbidi\-chars=any\fR was specified.
! .IP "\fB\-Wbool\-compare\fR" 4
  .IX Item "-Wbool-compare"
  Warn about boolean expression compared with an integer value different from
  \&\f(CW\*(C`true\*(C'\fR/\f(CW\*(C`false\*(C'\fR.  For instance, the following comparison is
--- 8324,8330 ----
  \&\fB\-Wbidi\-chars=any,ucn\fR.  Using \fB\-Wbidi\-chars=ucn\fR is valid,
  and is equivalent to \fB\-Wbidi\-chars=unpaired,ucn\fR, if no previous
  \&\fB\-Wbidi\-chars=any\fR was specified.
! .IP \fB\-Wbool\-compare\fR 4
  .IX Item "-Wbool-compare"
  Warn about boolean expression compared with an integer value different from
  \&\f(CW\*(C`true\*(C'\fR/\f(CW\*(C`false\*(C'\fR.  For instance, the following comparison is
*************** always false:
*** 8404,8421 ****
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wbool\-operation\fR" 4
  .IX Item "-Wbool-operation"
  Warn about suspicious operations on expressions of a boolean type.  For
  instance, bitwise negation of a boolean is very likely a bug in the program.
  For C, this warning also warns about incrementing or decrementing a boolean,
! which rarely makes sense.  (In \*(C+, decrementing a boolean is always invalid.
! Incrementing a boolean is invalid in \*(C+17, and deprecated otherwise.)
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wduplicated\-branches\fR" 4
  .IX Item "-Wduplicated-branches"
! Warn when an if-else has identical branches.  This warning detects cases like
  .Sp
  .Vb 4
  \&        if (p != NULL)
--- 8337,8354 ----
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wbool\-operation\fR 4
  .IX Item "-Wbool-operation"
  Warn about suspicious operations on expressions of a boolean type.  For
  instance, bitwise negation of a boolean is very likely a bug in the program.
  For C, this warning also warns about incrementing or decrementing a boolean,
! which rarely makes sense.  (In C++, decrementing a boolean is always invalid.
! Incrementing a boolean is invalid in C++17, and deprecated otherwise.)
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wduplicated\-branches\fR 4
  .IX Item "-Wduplicated-branches"
! Warn when an if\-else has identical branches.  This warning detects cases like
  .Sp
  .Vb 4
  \&        if (p != NULL)
*************** Warn when an if-else has identical branc
*** 8424,8495 ****
  \&          return 0;
  .Ve
  .Sp
! It doesn't warn when both branches contain just a null statement.  This warning
  also warn for conditional operators:
  .Sp
  .Vb 1
  \&          int i = x ? *p : *p;
  .Ve
! .IP "\fB\-Wduplicated\-cond\fR" 4
  .IX Item "-Wduplicated-cond"
! Warn about duplicated conditions in an if-else-if chain.  For instance,
  warn for the following code:
  .Sp
  .Vb 2
  \&        if (p\->q != NULL) { ... }
  \&        else if (p\->q != NULL) { ... }
  .Ve
! .IP "\fB\-Wframe\-address\fR" 4
  .IX Item "-Wframe-address"
  Warn when the \fB_\|_builtin_frame_address\fR or \fB_\|_builtin_return_address\fR
  is called with an argument greater than 0.  Such calls may return indeterminate
  values or crash the program.  The warning is included in \fB\-Wall\fR.
! .IP "\fB\-Wno\-discarded\-qualifiers\fR (C and Objective-C only)" 4
  .IX Item "-Wno-discarded-qualifiers (C and Objective-C only)"
  Do not warn if type qualifiers on pointers are being discarded.
  Typically, the compiler warns if a \f(CW\*(C`const char *\*(C'\fR variable is
  passed to a function that takes a \f(CW\*(C`char *\*(C'\fR parameter.  This option
  can be used to suppress such a warning.
! .IP "\fB\-Wno\-discarded\-array\-qualifiers\fR (C and Objective-C only)" 4
  .IX Item "-Wno-discarded-array-qualifiers (C and Objective-C only)"
  Do not warn if type qualifiers on arrays which are pointer targets
  are being discarded.  Typically, the compiler warns if a
  \&\f(CW\*(C`const int (*)[]\*(C'\fR variable is passed to a function that
  takes a \f(CW\*(C`int (*)[]\*(C'\fR parameter.  This option can be used to
  suppress such a warning.
! .IP "\fB\-Wno\-incompatible\-pointer\-types\fR (C and Objective-C only)" 4
  .IX Item "-Wno-incompatible-pointer-types (C and Objective-C only)"
  Do not warn when there is a conversion between pointers that have incompatible
  types.  This warning is for cases not covered by \fB\-Wno\-pointer\-sign\fR,
  which warns for pointer argument passing or assignment with different
  signedness.
  .Sp
! By default, in C99 and later dialects of C, \s-1GCC\s0 treats this issue as an
  error.  The error can be downgraded to a warning using
  \&\fB\-fpermissive\fR (along with certain other errors), or for this
  error alone, with \fB\-Wno\-error=incompatible\-pointer\-types\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wno\-int\-conversion\fR (C and Objective-C only)" 4
  .IX Item "-Wno-int-conversion (C and Objective-C only)"
  Do not warn about incompatible integer to pointer and pointer to integer
  conversions.  This warning is about implicit conversions; for explicit
  conversions the warnings \fB\-Wno\-int\-to\-pointer\-cast\fR and
  \&\fB\-Wno\-pointer\-to\-int\-cast\fR may be used.
  .Sp
! By default, in C99 and later dialects of C, \s-1GCC\s0 treats this issue as an
  error.  The error can be downgraded to a warning using
  \&\fB\-fpermissive\fR (along with certain other errors), or for this
  error alone, with \fB\-Wno\-error=int\-conversion\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wzero\-as\-null\-pointer\-constant\fR" 4
  .IX Item "-Wzero-as-null-pointer-constant"
  Warn when a literal \fB0\fR is used as null pointer constant.
! .IP "\fB\-Wzero\-length\-bounds\fR" 4
  .IX Item "-Wzero-length-bounds"
! Warn about accesses to elements of zero-length array members that might
! overlap other members of the same object.  Declaring interior zero-length
  arrays is discouraged because accesses to them are undefined.
  .Sp
  For example, the first two stores in function \f(CW\*(C`bad\*(C'\fR are diagnosed
--- 8357,8428 ----
  \&          return 0;
  .Ve
  .Sp
! It doesn\*(Aqt warn when both branches contain just a null statement.  This warning
  also warn for conditional operators:
  .Sp
  .Vb 1
  \&          int i = x ? *p : *p;
  .Ve
! .IP \fB\-Wduplicated\-cond\fR 4
  .IX Item "-Wduplicated-cond"
! Warn about duplicated conditions in an if\-else\-if chain.  For instance,
  warn for the following code:
  .Sp
  .Vb 2
  \&        if (p\->q != NULL) { ... }
  \&        else if (p\->q != NULL) { ... }
  .Ve
! .IP \fB\-Wframe\-address\fR 4
  .IX Item "-Wframe-address"
  Warn when the \fB_\|_builtin_frame_address\fR or \fB_\|_builtin_return_address\fR
  is called with an argument greater than 0.  Such calls may return indeterminate
  values or crash the program.  The warning is included in \fB\-Wall\fR.
! .IP "\fB\-Wno\-discarded\-qualifiers\fR (C and Objective\-C only)" 4
  .IX Item "-Wno-discarded-qualifiers (C and Objective-C only)"
  Do not warn if type qualifiers on pointers are being discarded.
  Typically, the compiler warns if a \f(CW\*(C`const char *\*(C'\fR variable is
  passed to a function that takes a \f(CW\*(C`char *\*(C'\fR parameter.  This option
  can be used to suppress such a warning.
! .IP "\fB\-Wno\-discarded\-array\-qualifiers\fR (C and Objective\-C only)" 4
  .IX Item "-Wno-discarded-array-qualifiers (C and Objective-C only)"
  Do not warn if type qualifiers on arrays which are pointer targets
  are being discarded.  Typically, the compiler warns if a
  \&\f(CW\*(C`const int (*)[]\*(C'\fR variable is passed to a function that
  takes a \f(CW\*(C`int (*)[]\*(C'\fR parameter.  This option can be used to
  suppress such a warning.
! .IP "\fB\-Wno\-incompatible\-pointer\-types\fR (C and Objective\-C only)" 4
  .IX Item "-Wno-incompatible-pointer-types (C and Objective-C only)"
  Do not warn when there is a conversion between pointers that have incompatible
  types.  This warning is for cases not covered by \fB\-Wno\-pointer\-sign\fR,
  which warns for pointer argument passing or assignment with different
  signedness.
  .Sp
! By default, in C99 and later dialects of C, GCC treats this issue as an
  error.  The error can be downgraded to a warning using
  \&\fB\-fpermissive\fR (along with certain other errors), or for this
  error alone, with \fB\-Wno\-error=incompatible\-pointer\-types\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wno\-int\-conversion\fR (C and Objective\-C only)" 4
  .IX Item "-Wno-int-conversion (C and Objective-C only)"
  Do not warn about incompatible integer to pointer and pointer to integer
  conversions.  This warning is about implicit conversions; for explicit
  conversions the warnings \fB\-Wno\-int\-to\-pointer\-cast\fR and
  \&\fB\-Wno\-pointer\-to\-int\-cast\fR may be used.
  .Sp
! By default, in C99 and later dialects of C, GCC treats this issue as an
  error.  The error can be downgraded to a warning using
  \&\fB\-fpermissive\fR (along with certain other errors), or for this
  error alone, with \fB\-Wno\-error=int\-conversion\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP \fB\-Wzero\-as\-null\-pointer\-constant\fR 4
  .IX Item "-Wzero-as-null-pointer-constant"
  Warn when a literal \fB0\fR is used as null pointer constant.
! .IP \fB\-Wzero\-length\-bounds\fR 4
  .IX Item "-Wzero-length-bounds"
! Warn about accesses to elements of zero\-length array members that might
! overlap other members of the same object.  Declaring interior zero\-length
  arrays is discouraged because accesses to them are undefined.
  .Sp
  For example, the first two stores in function \f(CW\*(C`bad\*(C'\fR are diagnosed
*************** because it is beyond the bounds of the e
*** 8510,8533 ****
  .Ve
  .Sp
  Option \fB\-Wzero\-length\-bounds\fR is enabled by \fB\-Warray\-bounds\fR.
! .IP "\fB\-Wno\-div\-by\-zero\fR" 4
  .IX Item "-Wno-div-by-zero"
! Do not warn about compile-time integer division by zero.  Floating-point
  division by zero is not warned about, as it can be a legitimate way of
  obtaining infinities and NaNs.
! .IP "\fB\-Wsystem\-headers\fR" 4
  .IX Item "-Wsystem-headers"
  Print warning messages for constructs found in system header files.
  Warnings from system headers are normally suppressed, on the assumption
  that they usually do not indicate real problems and would only make the
! compiler output harder to read.  Using this command-line option tells
! \&\s-1GCC\s0 to emit warnings from system headers as if they occurred in user
  code.  However, note that using \fB\-Wall\fR in conjunction with this
  option does \fInot\fR warn about unknown pragmas in system
  headers\-\-\-for that, \fB\-Wunknown\-pragmas\fR must also be used.
! .IP "\fB\-Wtautological\-compare\fR" 4
  .IX Item "-Wtautological-compare"
! Warn if a self-comparison always evaluates to true or false.  This
  warning detects various mistakes such as:
  .Sp
  .Vb 3
--- 8443,8466 ----
  .Ve
  .Sp
  Option \fB\-Wzero\-length\-bounds\fR is enabled by \fB\-Warray\-bounds\fR.
! .IP \fB\-Wno\-div\-by\-zero\fR 4
  .IX Item "-Wno-div-by-zero"
! Do not warn about compile\-time integer division by zero.  Floating\-point
  division by zero is not warned about, as it can be a legitimate way of
  obtaining infinities and NaNs.
! .IP \fB\-Wsystem\-headers\fR 4
  .IX Item "-Wsystem-headers"
  Print warning messages for constructs found in system header files.
  Warnings from system headers are normally suppressed, on the assumption
  that they usually do not indicate real problems and would only make the
! compiler output harder to read.  Using this command\-line option tells
! GCC to emit warnings from system headers as if they occurred in user
  code.  However, note that using \fB\-Wall\fR in conjunction with this
  option does \fInot\fR warn about unknown pragmas in system
  headers\-\-\-for that, \fB\-Wunknown\-pragmas\fR must also be used.
! .IP \fB\-Wtautological\-compare\fR 4
  .IX Item "-Wtautological-compare"
! Warn if a self\-comparison always evaluates to true or false.  This
  warning detects various mistakes such as:
  .Sp
  .Vb 3
*************** to true or false, for instance:
*** 8546,8555 ****
  will always be false.
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wtrailing\-whitespace\fR" 4
  .IX Item "-Wtrailing-whitespace"
  .PD 0
! .IP "\fB\-Wtrailing\-whitespace=\fR\fIkind\fR" 4
  .IX Item "-Wtrailing-whitespace=kind"
  .PD
  Warn about trailing whitespace at the end of lines, including inside of
--- 8479,8488 ----
  will always be false.
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wtrailing\-whitespace\fR 4
  .IX Item "-Wtrailing-whitespace"
  .PD 0
! .IP \fB\-Wtrailing\-whitespace=\fR\fIkind\fR 4
  .IX Item "-Wtrailing-whitespace=kind"
  .PD
  Warn about trailing whitespace at the end of lines, including inside of
*************** those or trailing form feed or vertical
*** 8561,8576 ****
  \&\f(CW\*(C`\-Wno\-trailing\-whitespace\*(C'\fR or \f(CW\*(C`\-Wtrailing\-whitespace=none\*(C'\fR
  disables the warning, which is the default.
  This is a coding style warning.
! .IP "\fB\-Wleading\-whitespace=\fR\fIkind\fR" 4
  .IX Item "-Wleading-whitespace=kind"
  Warn about style issues in leading whitespace, but not about the amount of
  indentation.  Some projects use coding styles where only spaces are used
  for indentation, others use only tabs, others use zero or more tabs (for
! multiples of \f(CW\*(C`\-ftabstop=\f(CIn\f(CW\*(C'\fR) followed by zero or fewer than \fIn\fR
  spaces.  No warning is emitted on lines which contain solely whitespace
  (although \f(CW\*(C`\-Wtrailing\-whitespace=\*(C'\fR warning might be emitted), no
  warnings are emitted inside of raw string literals.  Warnings are also emitted
! for leading whitespace inside of multi-line comments.
  \&\f(CW\*(C`\-Wleading\-whitespace=spaces\*(C'\fR warns about leading whitespace other than
  spaces for projects which want to indent just by spaces.
  \&\f(CW\*(C`\-Wleading\-whitespace=tabs\*(C'\fR warns about leading whitespace other than
--- 8494,8509 ----
  \&\f(CW\*(C`\-Wno\-trailing\-whitespace\*(C'\fR or \f(CW\*(C`\-Wtrailing\-whitespace=none\*(C'\fR
  disables the warning, which is the default.
  This is a coding style warning.
! .IP \fB\-Wleading\-whitespace=\fR\fIkind\fR 4
  .IX Item "-Wleading-whitespace=kind"
  Warn about style issues in leading whitespace, but not about the amount of
  indentation.  Some projects use coding styles where only spaces are used
  for indentation, others use only tabs, others use zero or more tabs (for
! multiples of \f(CW\*(C`\-ftabstop=\fR\f(CIn\fR\f(CW\*(C'\fR) followed by zero or fewer than \fIn\fR
  spaces.  No warning is emitted on lines which contain solely whitespace
  (although \f(CW\*(C`\-Wtrailing\-whitespace=\*(C'\fR warning might be emitted), no
  warnings are emitted inside of raw string literals.  Warnings are also emitted
! for leading whitespace inside of multi\-line comments.
  \&\f(CW\*(C`\-Wleading\-whitespace=spaces\*(C'\fR warns about leading whitespace other than
  spaces for projects which want to indent just by spaces.
  \&\f(CW\*(C`\-Wleading\-whitespace=tabs\*(C'\fR warns about leading whitespace other than
*************** horizontal tabs for projects which want
*** 8578,8588 ****
  \&\f(CW\*(C`\-Wleading\-whitespace=blanks\*(C'\fR warns about leading whitespace other than
  spaces and horizontal tabs, or about horizontal tab after a space in the
  leading whitespace, or about \fIn\fR or more consecutive spaces in leading
! whitespace (where \fIn\fR is argument of \f(CW\*(C`\-ftabstop=\f(CIn\f(CW\*(C'\fR, 8 by
  default).
  \&\f(CW\*(C`\-Wleading\-whitespace=none\*(C'\fR disables the warning, which is the default.
  This is a coding style warning.
! .IP "\fB\-Wtrampolines\fR" 4
  .IX Item "-Wtrampolines"
  Warn about trampolines generated for pointers to nested functions.
  A trampoline is a small piece of data or code that is created at run
--- 8511,8521 ----
  \&\f(CW\*(C`\-Wleading\-whitespace=blanks\*(C'\fR warns about leading whitespace other than
  spaces and horizontal tabs, or about horizontal tab after a space in the
  leading whitespace, or about \fIn\fR or more consecutive spaces in leading
! whitespace (where \fIn\fR is argument of \f(CW\*(C`\-ftabstop=\fR\f(CIn\fR\f(CW\*(C'\fR, 8 by
  default).
  \&\f(CW\*(C`\-Wleading\-whitespace=none\*(C'\fR disables the warning, which is the default.
  This is a coding style warning.
! .IP \fB\-Wtrampolines\fR 4
  .IX Item "-Wtrampolines"
  Warn about trampolines generated for pointers to nested functions.
  A trampoline is a small piece of data or code that is created at run
*************** used to call the nested function indirec
*** 8591,8621 ****
  made up of data only and thus requires no special treatment.  But, for
  most targets, it is made up of code and thus requires the stack to be
  made executable in order for the program to work properly.
! .IP "\fB\-Wfloat\-equal\fR" 4
  .IX Item "-Wfloat-equal"
! Warn if floating-point values are used in equality comparisons.
  .Sp
  The idea behind this is that sometimes it is convenient (for the
! programmer) to consider floating-point values as approximations to
  infinitely precise real numbers.  If you are doing this, then you need
  to compute (by analyzing the code, or in some other way) the maximum or
  likely maximum error that the computation introduces, and allow for it
! when performing comparisons (and when producing output, but that's a
  different problem).  In particular, instead of testing for equality, you
  should check to see whether the two values have ranges that overlap; and
  this is done with the relational operators, so equality comparisons are
  probably mistaken.
! .IP "\fB\-Wtraditional\fR (C and Objective-C only)" 4
  .IX Item "-Wtraditional (C and Objective-C only)"
  Warn about certain constructs that behave differently in traditional and
! \&\s-1ISO C.\s0  Also warn about \s-1ISO C\s0 constructs that have no traditional C
  equivalent, and/or problematic constructs that should be avoided.
  .RS 4
! .IP "*" 4
  Macro parameters that appear within string literals in the macro body.
  In traditional C macro replacement takes place within string literals,
! but in \s-1ISO C\s0 it does not.
! .IP "*" 4
  In traditional C, some preprocessor directives did not exist.
  Traditional preprocessors only considered a line to be a directive
  if the \fB#\fR appeared in column 1 on the line.  Therefore
--- 8524,8554 ----
  made up of data only and thus requires no special treatment.  But, for
  most targets, it is made up of code and thus requires the stack to be
  made executable in order for the program to work properly.
! .IP \fB\-Wfloat\-equal\fR 4
  .IX Item "-Wfloat-equal"
! Warn if floating\-point values are used in equality comparisons.
  .Sp
  The idea behind this is that sometimes it is convenient (for the
! programmer) to consider floating\-point values as approximations to
  infinitely precise real numbers.  If you are doing this, then you need
  to compute (by analyzing the code, or in some other way) the maximum or
  likely maximum error that the computation introduces, and allow for it
! when performing comparisons (and when producing output, but that\*(Aqs a
  different problem).  In particular, instead of testing for equality, you
  should check to see whether the two values have ranges that overlap; and
  this is done with the relational operators, so equality comparisons are
  probably mistaken.
! .IP "\fB\-Wtraditional\fR (C and Objective\-C only)" 4
  .IX Item "-Wtraditional (C and Objective-C only)"
  Warn about certain constructs that behave differently in traditional and
! ISO C.  Also warn about ISO C constructs that have no traditional C
  equivalent, and/or problematic constructs that should be avoided.
  .RS 4
! .IP * 4
  Macro parameters that appear within string literals in the macro body.
  In traditional C macro replacement takes place within string literals,
! but in ISO C it does not.
! .IP * 4
  In traditional C, some preprocessor directives did not exist.
  Traditional preprocessors only considered a line to be a directive
  if the \fB#\fR appeared in column 1 on the line.  Therefore
*************** first character on the line.  It also su
*** 8625,8725 ****
  \&\f(CW\*(C`#pragma\*(C'\fR not understood by traditional C by indenting them.  Some
  traditional implementations do not recognize \f(CW\*(C`#elif\*(C'\fR, so this option
  suggests avoiding it altogether.
! .IP "*" 4
! A function-like macro that appears without arguments.
! .IP "*" 4
  The unary plus operator.
! .IP "*" 4
! The \fBU\fR integer constant suffix, or the \fBF\fR or \fBL\fR floating-point
  constant suffixes.  (Traditional C does support the \fBL\fR suffix on integer
  constants.)  Note, these suffixes appear in macros defined in the system
  headers of most modern systems, e.g. the \fB_MIN\fR/\fB_MAX\fR macros in \f(CW\*(C`<limits.h>\*(C'\fR.
  Use of these macros in user code might normally lead to spurious
! warnings, however \s-1GCC\s0's integrated preprocessor has enough context to
  avoid warning in these cases.
! .IP "*" 4
  A function declared external in one block and then used after the end of
  the block.
! .IP "*" 4
  A \f(CW\*(C`switch\*(C'\fR statement has an operand of type \f(CW\*(C`long\*(C'\fR.
! .IP "*" 4
  A non\-\f(CW\*(C`static\*(C'\fR function declaration follows a \f(CW\*(C`static\*(C'\fR one.
  This construct is not accepted by some traditional C compilers.
! .IP "*" 4
! The \s-1ISO\s0 type of an integer constant has a different width or
  signedness from its traditional type.  This warning is only issued if
  the base of the constant is ten.  I.e. hexadecimal or octal values, which
  typically represent bit patterns, are not warned about.
! .IP "*" 4
! Usage of \s-1ISO\s0 string concatenation is detected.
! .IP "*" 4
  Initialization of automatic aggregates.
! .IP "*" 4
  Identifier conflicts with labels.  Traditional C lacks a separate
  namespace for labels.
! .IP "*" 4
  Initialization of unions.  If the initializer is zero, the warning is
  omitted.  This is done under the assumption that the zero initializer in
  user code appears conditioned on e.g. \f(CW\*(C`_\|_STDC_\|_\*(C'\fR to avoid missing
  initializer warnings and relies on default initialization to zero in the
  traditional C case.
! .IP "*" 4
  Conversions by prototypes between fixed/floating\-point values and vice
  versa.  The absence of these prototypes when compiling with traditional
  C causes serious problems.  This is a subset of the possible
  conversion warnings; for the full set use \fB\-Wtraditional\-conversion\fR.
! .IP "*" 4
! Use of \s-1ISO C\s0 style function definitions.  This warning intentionally is
  \&\fInot\fR issued for prototype declarations or variadic functions
! because these \s-1ISO C\s0 features appear in your code when using
! libiberty's traditional C compatibility macros, \f(CW\*(C`PARAMS\*(C'\fR and
  \&\f(CW\*(C`VPARAMS\*(C'\fR.  This warning is also bypassed for nested functions
! because that feature is already a \s-1GCC\s0 extension and thus not relevant to
  traditional C compatibility.
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wtraditional\-conversion\fR (C and Objective-C only)" 4
  .IX Item "-Wtraditional-conversion (C and Objective-C only)"
  Warn if a prototype causes a type conversion that is different from what
  would happen to the same argument in the absence of a prototype.  This
  includes conversions of fixed point to floating and vice versa, and
! conversions changing the width or signedness of a fixed-point argument
  except when the same as the default promotion.
! .IP "\fB\-Wdeclaration\-after\-statement\fR (C and Objective-C only)" 4
  .IX Item "-Wdeclaration-after-statement (C and Objective-C only)"
  Warn when a declaration is found after a statement in a block.  This
! construct, known from \*(C+, was introduced with \s-1ISO C99\s0 and is by default
! allowed in \s-1GCC.\s0  It is not supported by \s-1ISO C90.\s0
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wshadow\fR" 4
  .IX Item "-Wshadow"
  Warn whenever a local variable or type declaration shadows another
! variable, parameter, type, class member (in \*(C+), or instance variable
! (in Objective-C) or whenever a built-in function is shadowed.  Note
! that in \*(C+, the compiler warns if a local variable shadows an
  explicit typedef, but not if it shadows a struct/class/enum.
  If this warning is enabled, it includes also all instances of
  local shadowing.  This means that \fB\-Wno\-shadow=local\fR
  and \fB\-Wno\-shadow=compatible\-local\fR are ignored when
  \&\fB\-Wshadow\fR is used.
  Same as \fB\-Wshadow=global\fR.
! .IP "\fB\-Wno\-shadow\-ivar\fR (Objective-C only)" 4
  .IX Item "-Wno-shadow-ivar (Objective-C only)"
  Do not warn whenever a local variable shadows an instance variable in an
! Objective-C method.
! .IP "\fB\-Wshadow=global\fR" 4
  .IX Item "-Wshadow=global"
  Warn for any shadowing.
  Same as \fB\-Wshadow\fR.
! .IP "\fB\-Wshadow=local\fR" 4
  .IX Item "-Wshadow=local"
  Warn when a local variable shadows another local variable or parameter.
! .IP "\fB\-Wshadow=compatible\-local\fR" 4
  .IX Item "-Wshadow=compatible-local"
  Warn when a local variable shadows another local variable or parameter
! whose type is compatible with that of the shadowing variable.  In \*(C+,
  type compatibility here means the type of the shadowing variable can be
  converted to that of the shadowed variable.  The creation of this flag
  (in addition to \fB\-Wshadow=local\fR) is based on the idea that when
--- 8558,8658 ----
  \&\f(CW\*(C`#pragma\*(C'\fR not understood by traditional C by indenting them.  Some
  traditional implementations do not recognize \f(CW\*(C`#elif\*(C'\fR, so this option
  suggests avoiding it altogether.
! .IP * 4
! A function\-like macro that appears without arguments.
! .IP * 4
  The unary plus operator.
! .IP * 4
! The \fBU\fR integer constant suffix, or the \fBF\fR or \fBL\fR floating\-point
  constant suffixes.  (Traditional C does support the \fBL\fR suffix on integer
  constants.)  Note, these suffixes appear in macros defined in the system
  headers of most modern systems, e.g. the \fB_MIN\fR/\fB_MAX\fR macros in \f(CW\*(C`<limits.h>\*(C'\fR.
  Use of these macros in user code might normally lead to spurious
! warnings, however GCC\*(Aqs integrated preprocessor has enough context to
  avoid warning in these cases.
! .IP * 4
  A function declared external in one block and then used after the end of
  the block.
! .IP * 4
  A \f(CW\*(C`switch\*(C'\fR statement has an operand of type \f(CW\*(C`long\*(C'\fR.
! .IP * 4
  A non\-\f(CW\*(C`static\*(C'\fR function declaration follows a \f(CW\*(C`static\*(C'\fR one.
  This construct is not accepted by some traditional C compilers.
! .IP * 4
! The ISO type of an integer constant has a different width or
  signedness from its traditional type.  This warning is only issued if
  the base of the constant is ten.  I.e. hexadecimal or octal values, which
  typically represent bit patterns, are not warned about.
! .IP * 4
! Usage of ISO string concatenation is detected.
! .IP * 4
  Initialization of automatic aggregates.
! .IP * 4
  Identifier conflicts with labels.  Traditional C lacks a separate
  namespace for labels.
! .IP * 4
  Initialization of unions.  If the initializer is zero, the warning is
  omitted.  This is done under the assumption that the zero initializer in
  user code appears conditioned on e.g. \f(CW\*(C`_\|_STDC_\|_\*(C'\fR to avoid missing
  initializer warnings and relies on default initialization to zero in the
  traditional C case.
! .IP * 4
  Conversions by prototypes between fixed/floating\-point values and vice
  versa.  The absence of these prototypes when compiling with traditional
  C causes serious problems.  This is a subset of the possible
  conversion warnings; for the full set use \fB\-Wtraditional\-conversion\fR.
! .IP * 4
! Use of ISO C style function definitions.  This warning intentionally is
  \&\fInot\fR issued for prototype declarations or variadic functions
! because these ISO C features appear in your code when using
! libiberty\*(Aqs traditional C compatibility macros, \f(CW\*(C`PARAMS\*(C'\fR and
  \&\f(CW\*(C`VPARAMS\*(C'\fR.  This warning is also bypassed for nested functions
! because that feature is already a GCC extension and thus not relevant to
  traditional C compatibility.
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wtraditional\-conversion\fR (C and Objective\-C only)" 4
  .IX Item "-Wtraditional-conversion (C and Objective-C only)"
  Warn if a prototype causes a type conversion that is different from what
  would happen to the same argument in the absence of a prototype.  This
  includes conversions of fixed point to floating and vice versa, and
! conversions changing the width or signedness of a fixed\-point argument
  except when the same as the default promotion.
! .IP "\fB\-Wdeclaration\-after\-statement\fR (C and Objective\-C only)" 4
  .IX Item "-Wdeclaration-after-statement (C and Objective-C only)"
  Warn when a declaration is found after a statement in a block.  This
! construct, known from C++, was introduced with ISO C99 and is by default
! allowed in GCC.  It is not supported by ISO C90.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP \fB\-Wshadow\fR 4
  .IX Item "-Wshadow"
  Warn whenever a local variable or type declaration shadows another
! variable, parameter, type, class member (in C++), or instance variable
! (in Objective\-C) or whenever a built\-in function is shadowed.  Note
! that in C++, the compiler warns if a local variable shadows an
  explicit typedef, but not if it shadows a struct/class/enum.
  If this warning is enabled, it includes also all instances of
  local shadowing.  This means that \fB\-Wno\-shadow=local\fR
  and \fB\-Wno\-shadow=compatible\-local\fR are ignored when
  \&\fB\-Wshadow\fR is used.
  Same as \fB\-Wshadow=global\fR.
! .IP "\fB\-Wno\-shadow\-ivar\fR (Objective\-C only)" 4
  .IX Item "-Wno-shadow-ivar (Objective-C only)"
  Do not warn whenever a local variable shadows an instance variable in an
! Objective\-C method.
! .IP \fB\-Wshadow=global\fR 4
  .IX Item "-Wshadow=global"
  Warn for any shadowing.
  Same as \fB\-Wshadow\fR.
! .IP \fB\-Wshadow=local\fR 4
  .IX Item "-Wshadow=local"
  Warn when a local variable shadows another local variable or parameter.
! .IP \fB\-Wshadow=compatible\-local\fR 4
  .IX Item "-Wshadow=compatible-local"
  Warn when a local variable shadows another local variable or parameter
! whose type is compatible with that of the shadowing variable.  In C++,
  type compatibility here means the type of the shadowing variable can be
  converted to that of the shadowed variable.  The creation of this flag
  (in addition to \fB\-Wshadow=local\fR) is based on the idea that when
*************** Note that this also means that shadowing
*** 8747,8786 ****
  \&\f(CW\*(C`char *i\*(C'\fR does not emit a warning.
  .Sp
  This warning is also enabled by \fB\-Wshadow=local\fR.
! .IP "\fB\-Wlarger\-than=\fR\fIbyte-size\fR" 4
  .IX Item "-Wlarger-than=byte-size"
! Warn whenever an object is defined whose size exceeds \fIbyte-size\fR.
! \&\fB\-Wlarger\-than=\fR\fB\s-1PTRDIFF_MAX\s0\fR is enabled by default.
  Warnings controlled by the option can be disabled either by specifying
! \&\fIbyte-size\fR of \fB\s-1SIZE_MAX\s0\fR or more or by \fB\-Wno\-larger\-than\fR.
  .Sp
  Also warn for calls to bounded functions such as \f(CW\*(C`memchr\*(C'\fR or
  \&\f(CW\*(C`strnlen\*(C'\fR that specify a bound greater than the largest possible
! object, which is \fB\s-1PTRDIFF_MAX\s0\fR bytes by default.  These warnings
  can only be disabled by \fB\-Wno\-larger\-than\fR.
! .IP "\fB\-Wno\-larger\-than\fR" 4
  .IX Item "-Wno-larger-than"
  Disable \fB\-Wlarger\-than=\fR warnings.  The option is equivalent
! to \fB\-Wlarger\-than=\fR\fB\s-1SIZE_MAX\s0\fR or larger.
! .IP "\fB\-Wframe\-larger\-than=\fR\fIbyte-size\fR" 4
  .IX Item "-Wframe-larger-than=byte-size"
! Warn if the size of a function frame exceeds \fIbyte-size\fR.
  The computation done to determine the stack frame size is approximate
  and not conservative.
! The actual requirements may be somewhat greater than \fIbyte-size\fR
  even if you do not get a warning.  In addition, any space allocated
! via \f(CW\*(C`alloca\*(C'\fR, variable-length arrays, or related constructs
  is not included by the compiler when determining
  whether or not to issue a warning.
! \&\fB\-Wframe\-larger\-than=\fR\fB\s-1PTRDIFF_MAX\s0\fR is enabled by default.
  Warnings controlled by the option can be disabled either by specifying
! \&\fIbyte-size\fR of \fB\s-1SIZE_MAX\s0\fR or more or by
  \&\fB\-Wno\-frame\-larger\-than\fR.
! .IP "\fB\-Wno\-frame\-larger\-than\fR" 4
  .IX Item "-Wno-frame-larger-than"
  Disable \fB\-Wframe\-larger\-than=\fR warnings.  The option is equivalent
! to \fB\-Wframe\-larger\-than=\fR\fB\s-1SIZE_MAX\s0\fR or larger.
! .IP "\fB\-Wfree\-nonheap\-object\fR" 4
  .IX Item "-Wfree-nonheap-object"
  Warn when attempting to deallocate an object that was either not allocated
  on the heap, or by using a pointer that was not returned from a prior call
--- 8680,8719 ----
  \&\f(CW\*(C`char *i\*(C'\fR does not emit a warning.
  .Sp
  This warning is also enabled by \fB\-Wshadow=local\fR.
! .IP \fB\-Wlarger\-than=\fR\fIbyte\-size\fR 4
  .IX Item "-Wlarger-than=byte-size"
! Warn whenever an object is defined whose size exceeds \fIbyte\-size\fR.
! \&\fB\-Wlarger\-than=\fR\fBPTRDIFF_MAX\fR is enabled by default.
  Warnings controlled by the option can be disabled either by specifying
! \&\fIbyte\-size\fR of \fBSIZE_MAX\fR or more or by \fB\-Wno\-larger\-than\fR.
  .Sp
  Also warn for calls to bounded functions such as \f(CW\*(C`memchr\*(C'\fR or
  \&\f(CW\*(C`strnlen\*(C'\fR that specify a bound greater than the largest possible
! object, which is \fBPTRDIFF_MAX\fR bytes by default.  These warnings
  can only be disabled by \fB\-Wno\-larger\-than\fR.
! .IP \fB\-Wno\-larger\-than\fR 4
  .IX Item "-Wno-larger-than"
  Disable \fB\-Wlarger\-than=\fR warnings.  The option is equivalent
! to \fB\-Wlarger\-than=\fR\fBSIZE_MAX\fR or larger.
! .IP \fB\-Wframe\-larger\-than=\fR\fIbyte\-size\fR 4
  .IX Item "-Wframe-larger-than=byte-size"
! Warn if the size of a function frame exceeds \fIbyte\-size\fR.
  The computation done to determine the stack frame size is approximate
  and not conservative.
! The actual requirements may be somewhat greater than \fIbyte\-size\fR
  even if you do not get a warning.  In addition, any space allocated
! via \f(CW\*(C`alloca\*(C'\fR, variable\-length arrays, or related constructs
  is not included by the compiler when determining
  whether or not to issue a warning.
! \&\fB\-Wframe\-larger\-than=\fR\fBPTRDIFF_MAX\fR is enabled by default.
  Warnings controlled by the option can be disabled either by specifying
! \&\fIbyte\-size\fR of \fBSIZE_MAX\fR or more or by
  \&\fB\-Wno\-frame\-larger\-than\fR.
! .IP \fB\-Wno\-frame\-larger\-than\fR 4
  .IX Item "-Wno-frame-larger-than"
  Disable \fB\-Wframe\-larger\-than=\fR warnings.  The option is equivalent
! to \fB\-Wframe\-larger\-than=\fR\fBSIZE_MAX\fR or larger.
! .IP \fB\-Wfree\-nonheap\-object\fR 4
  .IX Item "-Wfree-nonheap-object"
  Warn when attempting to deallocate an object that was either not allocated
  on the heap, or by using a pointer that was not returned from a prior call
*************** diagnosed.
*** 8799,8828 ****
  .Ve
  .Sp
  \&\fB\-Wfree\-nonheap\-object\fR is included in \fB\-Wall\fR.
! .IP "\fB\-Wstack\-usage=\fR\fIbyte-size\fR" 4
  .IX Item "-Wstack-usage=byte-size"
! Warn if the stack usage of a function might exceed \fIbyte-size\fR.
  The computation done to determine the stack usage is conservative.
! Any space allocated via \f(CW\*(C`alloca\*(C'\fR, variable-length arrays, or related
  constructs is included by the compiler when determining whether or not to
  issue a warning.
  .Sp
  The message is in keeping with the output of \fB\-fstack\-usage\fR.
  .RS 4
! .IP "*" 4
! If the stack usage is fully static but exceeds the specified amount, it's:
  .Sp
  .Vb 1
  \&          warning: stack usage is 1120 bytes
  .Ve
! .IP "*" 4
! If the stack usage is (partly) dynamic but bounded, it's:
  .Sp
  .Vb 1
  \&          warning: stack usage might be 1648 bytes
  .Ve
! .IP "*" 4
! If the stack usage is (partly) dynamic and not bounded, it's:
  .Sp
  .Vb 1
  \&          warning: stack usage might be unbounded
--- 8732,8761 ----
  .Ve
  .Sp
  \&\fB\-Wfree\-nonheap\-object\fR is included in \fB\-Wall\fR.
! .IP \fB\-Wstack\-usage=\fR\fIbyte\-size\fR 4
  .IX Item "-Wstack-usage=byte-size"
! Warn if the stack usage of a function might exceed \fIbyte\-size\fR.
  The computation done to determine the stack usage is conservative.
! Any space allocated via \f(CW\*(C`alloca\*(C'\fR, variable\-length arrays, or related
  constructs is included by the compiler when determining whether or not to
  issue a warning.
  .Sp
  The message is in keeping with the output of \fB\-fstack\-usage\fR.
  .RS 4
! .IP * 4
! If the stack usage is fully static but exceeds the specified amount, it\*(Aqs:
  .Sp
  .Vb 1
  \&          warning: stack usage is 1120 bytes
  .Ve
! .IP * 4
! If the stack usage is (partly) dynamic but bounded, it\*(Aqs:
  .Sp
  .Vb 1
  \&          warning: stack usage might be 1648 bytes
  .Ve
! .IP * 4
! If the stack usage is (partly) dynamic and not bounded, it\*(Aqs:
  .Sp
  .Vb 1
  \&          warning: stack usage might be unbounded
*************** If the stack usage is (partly) dynamic a
*** 8830,8845 ****
  .RE
  .RS 4
  .Sp
! \&\fB\-Wstack\-usage=\fR\fB\s-1PTRDIFF_MAX\s0\fR is enabled by default.
  Warnings controlled by the option can be disabled either by specifying
! \&\fIbyte-size\fR of \fB\s-1SIZE_MAX\s0\fR or more or by
  \&\fB\-Wno\-stack\-usage\fR.
  .RE
! .IP "\fB\-Wno\-stack\-usage\fR" 4
  .IX Item "-Wno-stack-usage"
  Disable \fB\-Wstack\-usage=\fR warnings.  The option is equivalent
! to \fB\-Wstack\-usage=\fR\fB\s-1SIZE_MAX\s0\fR or larger.
! .IP "\fB\-Wunsafe\-loop\-optimizations\fR" 4
  .IX Item "-Wunsafe-loop-optimizations"
  Warn if the loop cannot be optimized because the compiler cannot
  assume anything on the bounds of the loop indices.  With
--- 8763,8778 ----
  .RE
  .RS 4
  .Sp
! \&\fB\-Wstack\-usage=\fR\fBPTRDIFF_MAX\fR is enabled by default.
  Warnings controlled by the option can be disabled either by specifying
! \&\fIbyte\-size\fR of \fBSIZE_MAX\fR or more or by
  \&\fB\-Wno\-stack\-usage\fR.
  .RE
! .IP \fB\-Wno\-stack\-usage\fR 4
  .IX Item "-Wno-stack-usage"
  Disable \fB\-Wstack\-usage=\fR warnings.  The option is equivalent
! to \fB\-Wstack\-usage=\fR\fBSIZE_MAX\fR or larger.
! .IP \fB\-Wunsafe\-loop\-optimizations\fR 4
  .IX Item "-Wunsafe-loop-optimizations"
  Warn if the loop cannot be optimized because the compiler cannot
  assume anything on the bounds of the loop indices.  With
*************** such assumptions.
*** 8848,8867 ****
  .IP "\fB\-Wno\-pedantic\-ms\-format\fR (MinGW targets only)" 4
  .IX Item "-Wno-pedantic-ms-format (MinGW targets only)"
  When used in combination with \fB\-Wformat\fR
! and \fB\-pedantic\fR without \s-1GNU\s0 extensions, this option
! disables the warnings about non-ISO \f(CW\*(C`printf\*(C'\fR / \f(CW\*(C`scanf\*(C'\fR format
  width specifiers \f(CW\*(C`I32\*(C'\fR, \f(CW\*(C`I64\*(C'\fR, and \f(CW\*(C`I\*(C'\fR used on Windows targets,
! which depend on the \s-1MS\s0 runtime.
! .IP "\fB\-Wpointer\-arith\fR" 4
  .IX Item "-Wpointer-arith"
! Warn about anything that depends on the \*(L"size of\*(R" a function type or
! of \f(CW\*(C`void\*(C'\fR.  \s-1GNU C\s0 assigns these types a size of 1, for
  convenience in calculations with \f(CW\*(C`void *\*(C'\fR pointers and pointers
! to functions.  In \*(C+, warn also when an arithmetic operation involves
  \&\f(CW\*(C`NULL\*(C'\fR.  This warning is also enabled by \fB\-Wpedantic\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wno\-pointer\-compare\fR" 4
  .IX Item "-Wno-pointer-compare"
  Do not warn if a pointer is compared with a zero character constant.
  This usually
--- 8781,8800 ----
  .IP "\fB\-Wno\-pedantic\-ms\-format\fR (MinGW targets only)" 4
  .IX Item "-Wno-pedantic-ms-format (MinGW targets only)"
  When used in combination with \fB\-Wformat\fR
! and \fB\-pedantic\fR without GNU extensions, this option
! disables the warnings about non\-ISO \f(CW\*(C`printf\*(C'\fR / \f(CW\*(C`scanf\*(C'\fR format
  width specifiers \f(CW\*(C`I32\*(C'\fR, \f(CW\*(C`I64\*(C'\fR, and \f(CW\*(C`I\*(C'\fR used on Windows targets,
! which depend on the MS runtime.
! .IP \fB\-Wpointer\-arith\fR 4
  .IX Item "-Wpointer-arith"
! Warn about anything that depends on the "size of" a function type or
! of \f(CW\*(C`void\*(C'\fR.  GNU C assigns these types a size of 1, for
  convenience in calculations with \f(CW\*(C`void *\*(C'\fR pointers and pointers
! to functions.  In C++, warn also when an arithmetic operation involves
  \&\f(CW\*(C`NULL\*(C'\fR.  This warning is also enabled by \fB\-Wpedantic\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP \fB\-Wno\-pointer\-compare\fR 4
  .IX Item "-Wno-pointer-compare"
  Do not warn if a pointer is compared with a zero character constant.
  This usually
*************** means that the pointer was meant to be d
*** 8873,8914 ****
  \&          return 42;
  .Ve
  .Sp
! Note that the code above is invalid in \*(C+11.
  .Sp
  This warning is enabled by default.
! .IP "\fB\-Wno\-tsan\fR" 4
  .IX Item "-Wno-tsan"
  Disable warnings about unsupported features in ThreadSanitizer.
  .Sp
  ThreadSanitizer does not support \f(CW\*(C`std::atomic_thread_fence\*(C'\fR and
  can report false positives.
! .IP "\fB\-Wtype\-limits\fR" 4
  .IX Item "-Wtype-limits"
  Warn if a comparison is always true or always false due to the limited
  range of the data type, but do not warn for constant expressions.  For
  example, warn if an unsigned variable is compared against zero with
  \&\f(CW\*(C`<\*(C'\fR or \f(CW\*(C`>=\*(C'\fR.  This warning is also enabled by
  \&\fB\-Wextra\fR.
! .IP "\fB\-Wabsolute\-value\fR (C and Objective-C only)" 4
  .IX Item "-Wabsolute-value (C and Objective-C only)"
  Warn for calls to standard functions that compute the absolute value
  of an argument when a more appropriate standard function is available.
! For example, calling \f(CW\*(C`abs(3.14)\*(C'\fR triggers the warning because the
  appropriate function to call to compute the absolute value of a double
  argument is \f(CW\*(C`fabs\*(C'\fR.  The option also triggers warnings when the
  argument in a call to such a function has an unsigned type.  This
  warning can be suppressed with an explicit type cast and it is also
  enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wcomment\fR" 4
  .IX Item "-Wcomment"
  .PD 0
! .IP "\fB\-Wcomments\fR" 4
  .IX Item "-Wcomments"
  .PD
! Warn whenever a comment-start sequence \fB/*\fR appears in a \fB/*\fR
! comment, or whenever a backslash-newline appears in a \fB//\fR comment.
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wtrigraphs\fR" 4
  .IX Item "-Wtrigraphs"
  Warn if any trigraphs are encountered that might change the meaning of
  the program.  Trigraphs within comments are not warned about,
--- 8806,8847 ----
  \&          return 42;
  .Ve
  .Sp
! Note that the code above is invalid in C++11.
  .Sp
  This warning is enabled by default.
! .IP \fB\-Wno\-tsan\fR 4
  .IX Item "-Wno-tsan"
  Disable warnings about unsupported features in ThreadSanitizer.
  .Sp
  ThreadSanitizer does not support \f(CW\*(C`std::atomic_thread_fence\*(C'\fR and
  can report false positives.
! .IP \fB\-Wtype\-limits\fR 4
  .IX Item "-Wtype-limits"
  Warn if a comparison is always true or always false due to the limited
  range of the data type, but do not warn for constant expressions.  For
  example, warn if an unsigned variable is compared against zero with
  \&\f(CW\*(C`<\*(C'\fR or \f(CW\*(C`>=\*(C'\fR.  This warning is also enabled by
  \&\fB\-Wextra\fR.
! .IP "\fB\-Wabsolute\-value\fR (C and Objective\-C only)" 4
  .IX Item "-Wabsolute-value (C and Objective-C only)"
  Warn for calls to standard functions that compute the absolute value
  of an argument when a more appropriate standard function is available.
! For example, calling \f(CWabs(3.14)\fR triggers the warning because the
  appropriate function to call to compute the absolute value of a double
  argument is \f(CW\*(C`fabs\*(C'\fR.  The option also triggers warnings when the
  argument in a call to such a function has an unsigned type.  This
  warning can be suppressed with an explicit type cast and it is also
  enabled by \fB\-Wextra\fR.
! .IP \fB\-Wcomment\fR 4
  .IX Item "-Wcomment"
  .PD 0
! .IP \fB\-Wcomments\fR 4
  .IX Item "-Wcomments"
  .PD
! Warn whenever a comment\-start sequence \fB/*\fR appears in a \fB/*\fR
! comment, or whenever a backslash\-newline appears in a \fB//\fR comment.
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wtrigraphs\fR 4
  .IX Item "-Wtrigraphs"
  Warn if any trigraphs are encountered that might change the meaning of
  the program.  Trigraphs within comments are not warned about,
*************** This option is implied by \fB\-Wall\fR.
*** 8918,8946 ****
  given, this option is still enabled unless trigraphs are enabled.  To
  get trigraph conversion without warnings, but get the other
  \&\fB\-Wall\fR warnings, use \fB\-trigraphs \-Wall \-Wno\-trigraphs\fR.
! .IP "\fB\-Wundef\fR" 4
  .IX Item "-Wundef"
  Warn if an undefined identifier is evaluated in an \f(CW\*(C`#if\*(C'\fR directive.
  Such identifiers are replaced with zero.
! .IP "\fB\-Wexpansion\-to\-defined\fR" 4
  .IX Item "-Wexpansion-to-defined"
  Warn whenever \fBdefined\fR is encountered in the expansion of a macro
  (including the case where the macro is expanded by an \fB#if\fR directive).
  Such usage is not portable.
  This warning is also enabled by \fB\-Wpedantic\fR and \fB\-Wextra\fR.
! .IP "\fB\-Wunused\-macros\fR" 4
  .IX Item "-Wunused-macros"
  Warn about macros defined in the main file that are unused.  A macro
  is \fIused\fR if it is expanded or tested for existence at least once.
  The preprocessor also warns if the macro has not been used at the
  time it is redefined or undefined.
  .Sp
! Built-in macros, macros defined on the command line, and macros
  defined in include files are not warned about.
  .Sp
  \&\fINote:\fR If a macro is actually used, but only used in skipped
  conditional blocks, then the preprocessor reports it as unused.  To avoid the
! warning in such a case, you might improve the scope of the macro's
  definition by, for example, moving it into the first skipped block.
  Alternatively, you could provide a dummy use with something like:
  .Sp
--- 8851,8879 ----
  given, this option is still enabled unless trigraphs are enabled.  To
  get trigraph conversion without warnings, but get the other
  \&\fB\-Wall\fR warnings, use \fB\-trigraphs \-Wall \-Wno\-trigraphs\fR.
! .IP \fB\-Wundef\fR 4
  .IX Item "-Wundef"
  Warn if an undefined identifier is evaluated in an \f(CW\*(C`#if\*(C'\fR directive.
  Such identifiers are replaced with zero.
! .IP \fB\-Wexpansion\-to\-defined\fR 4
  .IX Item "-Wexpansion-to-defined"
  Warn whenever \fBdefined\fR is encountered in the expansion of a macro
  (including the case where the macro is expanded by an \fB#if\fR directive).
  Such usage is not portable.
  This warning is also enabled by \fB\-Wpedantic\fR and \fB\-Wextra\fR.
! .IP \fB\-Wunused\-macros\fR 4
  .IX Item "-Wunused-macros"
  Warn about macros defined in the main file that are unused.  A macro
  is \fIused\fR if it is expanded or tested for existence at least once.
  The preprocessor also warns if the macro has not been used at the
  time it is redefined or undefined.
  .Sp
! Built\-in macros, macros defined on the command line, and macros
  defined in include files are not warned about.
  .Sp
  \&\fINote:\fR If a macro is actually used, but only used in skipped
  conditional blocks, then the preprocessor reports it as unused.  To avoid the
! warning in such a case, you might improve the scope of the macro\*(Aqs
  definition by, for example, moving it into the first skipped block.
  Alternatively, you could provide a dummy use with something like:
  .Sp
*************** Alternatively, you could provide a dummy
*** 8948,8954 ****
  \&        #if defined the_macro_causing_the_warning
  \&        #endif
  .Ve
! .IP "\fB\-Wno\-endif\-labels\fR" 4
  .IX Item "-Wno-endif-labels"
  Do not warn whenever an \f(CW\*(C`#else\*(C'\fR or an \f(CW\*(C`#endif\*(C'\fR are followed by text.
  This sometimes happens in older programs with code of the form
--- 8881,8887 ----
  \&        #if defined the_macro_causing_the_warning
  \&        #endif
  .Ve
! .IP \fB\-Wno\-endif\-labels\fR 4
  .IX Item "-Wno-endif-labels"
  Do not warn whenever an \f(CW\*(C`#else\*(C'\fR or an \f(CW\*(C`#endif\*(C'\fR are followed by text.
  This sometimes happens in older programs with code of the form
*************** This sometimes happens in older programs
*** 8963,9011 ****
  .Sp
  The second and third \f(CW\*(C`FOO\*(C'\fR should be in comments.
  This warning is on by default.
! .IP "\fB\-Wbad\-function\-cast\fR (C and Objective-C only)" 4
  .IX Item "-Wbad-function-cast (C and Objective-C only)"
! Warn when a function call is cast to a non-matching type.
  For example, warn if a call to a function returning an integer type
  is cast to a pointer type.
! .IP "\fB\-Wc90\-c99\-compat\fR (C and Objective-C only)" 4
  .IX Item "-Wc90-c99-compat (C and Objective-C only)"
! Warn about features not present in \s-1ISO C90,\s0 but present in \s-1ISO C99.\s0
  For instance, warn about use of variable length arrays, \f(CW\*(C`long long\*(C'\fR
  type, \f(CW\*(C`bool\*(C'\fR type, compound literals, designated initializers, and so
  on.  This option is independent of the standards mode.  Warnings are disabled
  in the expression that follows \f(CW\*(C`_\|_extension_\|_\*(C'\fR.
! .IP "\fB\-Wc99\-c11\-compat\fR (C and Objective-C only)" 4
  .IX Item "-Wc99-c11-compat (C and Objective-C only)"
! Warn about features not present in \s-1ISO C99,\s0 but present in \s-1ISO C11.\s0
  For instance, warn about use of anonymous structures and unions,
! \&\f(CW\*(C`_Atomic\*(C'\fR type qualifier, \f(CW\*(C`_Thread_local\*(C'\fR storage-class specifier,
  \&\f(CW\*(C`_Alignas\*(C'\fR specifier, \f(CW\*(C`Alignof\*(C'\fR operator, \f(CW\*(C`_Generic\*(C'\fR keyword,
  and so on.  This option is independent of the standards mode.  Warnings are
  disabled in the expression that follows \f(CW\*(C`_\|_extension_\|_\*(C'\fR.
! .IP "\fB\-Wc11\-c23\-compat\fR (C and Objective-C only)" 4
  .IX Item "-Wc11-c23-compat (C and Objective-C only)"
  .PD 0
! .IP "\fB\-Wc11\-c2x\-compat\fR (C and Objective-C only)" 4
  .IX Item "-Wc11-c2x-compat (C and Objective-C only)"
  .PD
! Warn about features not present in \s-1ISO C11,\s0 but present in \s-1ISO C23.\s0
  For instance, warn about omitting the string in \f(CW\*(C`_Static_assert\*(C'\fR,
  use of \fB[[]]\fR syntax for attributes, use of decimal
! floating-point types, and so on.  This option is independent of the
  standards mode.  Warnings are disabled in the expression that follows
  \&\f(CW\*(C`_\|_extension_\|_\*(C'\fR.  The name \fB\-Wc11\-c2x\-compat\fR is
  deprecated.
  .Sp
  When not compiling in C23 mode, these warnings are upgraded to errors
  by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wc23\-c2y\-compat\fR (C and Objective-C only)" 4
  .IX Item "-Wc23-c2y-compat (C and Objective-C only)"
  .PD 0
! .IP "\fB\-Wc23\-c2y\-compat\fR (C and Objective-C only)" 4
  .IX Item "-Wc23-c2y-compat (C and Objective-C only)"
  .PD
! Warn about features not present in \s-1ISO C23,\s0 but present in \s-1ISO C2Y.\s0
  For instance, warn about \f(CW\*(C`_Generic\*(C'\fR selecting with a type name
  instead of an expression.  This option is independent of the standards
  mode.  Warnings are disabled in the expression that follows
--- 8896,8944 ----
  .Sp
  The second and third \f(CW\*(C`FOO\*(C'\fR should be in comments.
  This warning is on by default.
! .IP "\fB\-Wbad\-function\-cast\fR (C and Objective\-C only)" 4
  .IX Item "-Wbad-function-cast (C and Objective-C only)"
! Warn when a function call is cast to a non\-matching type.
  For example, warn if a call to a function returning an integer type
  is cast to a pointer type.
! .IP "\fB\-Wc90\-c99\-compat\fR (C and Objective\-C only)" 4
  .IX Item "-Wc90-c99-compat (C and Objective-C only)"
! Warn about features not present in ISO C90, but present in ISO C99.
  For instance, warn about use of variable length arrays, \f(CW\*(C`long long\*(C'\fR
  type, \f(CW\*(C`bool\*(C'\fR type, compound literals, designated initializers, and so
  on.  This option is independent of the standards mode.  Warnings are disabled
  in the expression that follows \f(CW\*(C`_\|_extension_\|_\*(C'\fR.
! .IP "\fB\-Wc99\-c11\-compat\fR (C and Objective\-C only)" 4
  .IX Item "-Wc99-c11-compat (C and Objective-C only)"
! Warn about features not present in ISO C99, but present in ISO C11.
  For instance, warn about use of anonymous structures and unions,
! \&\f(CW\*(C`_Atomic\*(C'\fR type qualifier, \f(CW\*(C`_Thread_local\*(C'\fR storage\-class specifier,
  \&\f(CW\*(C`_Alignas\*(C'\fR specifier, \f(CW\*(C`Alignof\*(C'\fR operator, \f(CW\*(C`_Generic\*(C'\fR keyword,
  and so on.  This option is independent of the standards mode.  Warnings are
  disabled in the expression that follows \f(CW\*(C`_\|_extension_\|_\*(C'\fR.
! .IP "\fB\-Wc11\-c23\-compat\fR (C and Objective\-C only)" 4
  .IX Item "-Wc11-c23-compat (C and Objective-C only)"
  .PD 0
! .IP "\fB\-Wc11\-c2x\-compat\fR (C and Objective\-C only)" 4
  .IX Item "-Wc11-c2x-compat (C and Objective-C only)"
  .PD
! Warn about features not present in ISO C11, but present in ISO C23.
  For instance, warn about omitting the string in \f(CW\*(C`_Static_assert\*(C'\fR,
  use of \fB[[]]\fR syntax for attributes, use of decimal
! floating\-point types, and so on.  This option is independent of the
  standards mode.  Warnings are disabled in the expression that follows
  \&\f(CW\*(C`_\|_extension_\|_\*(C'\fR.  The name \fB\-Wc11\-c2x\-compat\fR is
  deprecated.
  .Sp
  When not compiling in C23 mode, these warnings are upgraded to errors
  by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wc23\-c2y\-compat\fR (C and Objective\-C only)" 4
  .IX Item "-Wc23-c2y-compat (C and Objective-C only)"
  .PD 0
! .IP "\fB\-Wc23\-c2y\-compat\fR (C and Objective\-C only)" 4
  .IX Item "-Wc23-c2y-compat (C and Objective-C only)"
  .PD
! Warn about features not present in ISO C23, but present in ISO C2Y.
  For instance, warn about \f(CW\*(C`_Generic\*(C'\fR selecting with a type name
  instead of an expression.  This option is independent of the standards
  mode.  Warnings are disabled in the expression that follows
*************** mode.  Warnings are disabled in the expr
*** 9013,9072 ****
  .Sp
  When not compiling in C2Y mode, these warnings are upgraded to errors
  by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wc++\-compat\fR (C and Objective-C only)" 4
  .IX Item "-Wc++-compat (C and Objective-C only)"
! Warn about \s-1ISO C\s0 constructs that are outside of the common subset of
! \&\s-1ISO C\s0 and \s-1ISO \*(C+,\s0 e.g. request for implicit conversion from
  \&\f(CW\*(C`void *\*(C'\fR to a pointer to non\-\f(CW\*(C`void\*(C'\fR type.
! .IP "\fB\-Wc++11\-compat\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wc++11-compat ( and Objective- only)"
! Warn about \*(C+ constructs whose meaning differs between \s-1ISO \*(C+ 1998\s0
! and \s-1ISO \*(C+ 2011,\s0 e.g., identifiers in \s-1ISO \*(C+ 1998\s0 that are keywords
! in \s-1ISO \*(C+ 2011.\s0  This warning turns on \fB\-Wnarrowing\fR and is
  enabled by \fB\-Wall\fR.
! .IP "\fB\-Wc++14\-compat\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wc++14-compat ( and Objective- only)"
! Warn about \*(C+ constructs whose meaning differs between \s-1ISO \*(C+ 2011\s0
! and \s-1ISO \*(C+ 2014.\s0  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wc++17\-compat\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wc++17-compat ( and Objective- only)"
! Warn about \*(C+ constructs whose meaning differs between \s-1ISO \*(C+ 2014\s0
! and \s-1ISO \*(C+ 2017.\s0  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wc++20\-compat\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wc++20-compat ( and Objective- only)"
! Warn about \*(C+ constructs whose meaning differs between \s-1ISO \*(C+ 2017\s0
! and \s-1ISO \*(C+ 2020.\s0  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wno\-c++11\-extensions\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-c++11-extensions ( and Objective- only)"
! Do not warn about \*(C+11 constructs in code being compiled using
! an older \*(C+ standard.  Even without this option, some \*(C+11 constructs
  will only be diagnosed if \fB\-Wpedantic\fR is used.
! .IP "\fB\-Wno\-c++14\-extensions\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-c++14-extensions ( and Objective- only)"
! Do not warn about \*(C+14 constructs in code being compiled using
! an older \*(C+ standard.  Even without this option, some \*(C+14 constructs
  will only be diagnosed if \fB\-Wpedantic\fR is used.
! .IP "\fB\-Wno\-c++17\-extensions\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-c++17-extensions ( and Objective- only)"
! Do not warn about \*(C+17 constructs in code being compiled using
! an older \*(C+ standard.  Even without this option, some \*(C+17 constructs
  will only be diagnosed if \fB\-Wpedantic\fR is used.
! .IP "\fB\-Wno\-c++20\-extensions\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-c++20-extensions ( and Objective- only)"
! Do not warn about \*(C+20 constructs in code being compiled using
! an older \*(C+ standard.  Even without this option, some \*(C+20 constructs
  will only be diagnosed if \fB\-Wpedantic\fR is used.
! .IP "\fB\-Wno\-c++23\-extensions\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-c++23-extensions ( and Objective- only)"
! Do not warn about \*(C+23 constructs in code being compiled using
! an older \*(C+ standard.  Even without this option, some \*(C+23 constructs
  will only be diagnosed if \fB\-Wpedantic\fR is used.
! .IP "\fB\-Wno\-c++26\-extensions\fR (\*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-c++26-extensions ( and Objective- only)"
! Do not warn about \*(C+26 constructs in code being compiled using
! an older \*(C+ standard.  Even without this option, some \*(C+26 constructs
  will only be diagnosed if \fB\-Wpedantic\fR is used.
! .IP "\fB\-Wcast\-qual\fR" 4
  .IX Item "-Wcast-qual"
  Warn whenever a pointer is cast so as to remove a type qualifier from
  the target type.  For example, warn if a \f(CW\*(C`const char *\*(C'\fR is cast
--- 8946,9005 ----
  .Sp
  When not compiling in C2Y mode, these warnings are upgraded to errors
  by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wc++\-compat\fR (C and Objective\-C only)" 4
  .IX Item "-Wc++-compat (C and Objective-C only)"
! Warn about ISO C constructs that are outside of the common subset of
! ISO C and ISO C++, e.g. request for implicit conversion from
  \&\f(CW\*(C`void *\*(C'\fR to a pointer to non\-\f(CW\*(C`void\*(C'\fR type.
! .IP "\fB\-Wc++11\-compat\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wc++11-compat (C++ and Objective-C++ only)"
! Warn about C++ constructs whose meaning differs between ISO C++ 1998
! and ISO C++ 2011, e.g., identifiers in ISO C++ 1998 that are keywords
! in ISO C++ 2011.  This warning turns on \fB\-Wnarrowing\fR and is
  enabled by \fB\-Wall\fR.
! .IP "\fB\-Wc++14\-compat\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wc++14-compat (C++ and Objective-C++ only)"
! Warn about C++ constructs whose meaning differs between ISO C++ 2011
! and ISO C++ 2014.  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wc++17\-compat\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wc++17-compat (C++ and Objective-C++ only)"
! Warn about C++ constructs whose meaning differs between ISO C++ 2014
! and ISO C++ 2017.  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wc++20\-compat\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wc++20-compat (C++ and Objective-C++ only)"
! Warn about C++ constructs whose meaning differs between ISO C++ 2017
! and ISO C++ 2020.  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wno\-c++11\-extensions\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-c++11-extensions (C++ and Objective-C++ only)"
! Do not warn about C++11 constructs in code being compiled using
! an older C++ standard.  Even without this option, some C++11 constructs
  will only be diagnosed if \fB\-Wpedantic\fR is used.
! .IP "\fB\-Wno\-c++14\-extensions\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-c++14-extensions (C++ and Objective-C++ only)"
! Do not warn about C++14 constructs in code being compiled using
! an older C++ standard.  Even without this option, some C++14 constructs
  will only be diagnosed if \fB\-Wpedantic\fR is used.
! .IP "\fB\-Wno\-c++17\-extensions\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-c++17-extensions (C++ and Objective-C++ only)"
! Do not warn about C++17 constructs in code being compiled using
! an older C++ standard.  Even without this option, some C++17 constructs
  will only be diagnosed if \fB\-Wpedantic\fR is used.
! .IP "\fB\-Wno\-c++20\-extensions\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-c++20-extensions (C++ and Objective-C++ only)"
! Do not warn about C++20 constructs in code being compiled using
! an older C++ standard.  Even without this option, some C++20 constructs
  will only be diagnosed if \fB\-Wpedantic\fR is used.
! .IP "\fB\-Wno\-c++23\-extensions\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-c++23-extensions (C++ and Objective-C++ only)"
! Do not warn about C++23 constructs in code being compiled using
! an older C++ standard.  Even without this option, some C++23 constructs
  will only be diagnosed if \fB\-Wpedantic\fR is used.
! .IP "\fB\-Wno\-c++26\-extensions\fR (C++ and Objective\-C++ only)" 4
! .IX Item "-Wno-c++26-extensions (C++ and Objective-C++ only)"
! Do not warn about C++26 constructs in code being compiled using
! an older C++ standard.  Even without this option, some C++26 constructs
  will only be diagnosed if \fB\-Wpedantic\fR is used.
! .IP \fB\-Wcast\-qual\fR 4
  .IX Item "-Wcast-qual"
  Warn whenever a pointer is cast so as to remove a type qualifier from
  the target type.  For example, warn if a \f(CW\*(C`const char *\*(C'\fR is cast
*************** is unsafe, as in this example:
*** 9084,9116 ****
  \&          /* Now char** pointer points to read\-only memory.  */
  \&          **p = \*(Aqb\*(Aq;
  .Ve
! .IP "\fB\-Wcast\-align\fR" 4
  .IX Item "-Wcast-align"
  Warn whenever a pointer is cast such that the required alignment of the
  target is increased.  For example, warn if a \f(CW\*(C`char *\*(C'\fR is cast to
  an \f(CW\*(C`int *\*(C'\fR on machines where integers can only be accessed at
! two\- or four-byte boundaries.
! .IP "\fB\-Wcast\-align=strict\fR" 4
  .IX Item "-Wcast-align=strict"
  Warn whenever a pointer is cast such that the required alignment of the
  target is increased.  For example, warn if a \f(CW\*(C`char *\*(C'\fR is cast to
  an \f(CW\*(C`int *\*(C'\fR regardless of the target machine.
! .IP "\fB\-Wcast\-function\-type\fR" 4
  .IX Item "-Wcast-function-type"
  Warn when a function pointer is cast to an incompatible function pointer.
  In a cast involving function types with a variable argument list only
  the types of initial arguments that are provided are considered.
! Any parameter of pointer-type matches any other pointer-type.  Any benign
  differences in integral types are ignored, like \f(CW\*(C`int\*(C'\fR vs. \f(CW\*(C`long\*(C'\fR
! on \s-1ILP32\s0 targets.  Likewise type qualifiers are ignored.  The function
  type \f(CW\*(C`void (*) (void)\*(C'\fR is special and matches everything, which can
  be used to suppress this warning.
  In a cast involving pointer to member types this warning warns whenever
  the type cast is changing the pointer to member type.
  This warning is enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wcast\-user\-defined\fR" 4
  .IX Item "-Wcast-user-defined"
! Warn when a cast to reference type does not involve a user-defined
  conversion that the programmer might expect to be called.
  .Sp
  .Vb 2
--- 9017,9049 ----
  \&          /* Now char** pointer points to read\-only memory.  */
  \&          **p = \*(Aqb\*(Aq;
  .Ve
! .IP \fB\-Wcast\-align\fR 4
  .IX Item "-Wcast-align"
  Warn whenever a pointer is cast such that the required alignment of the
  target is increased.  For example, warn if a \f(CW\*(C`char *\*(C'\fR is cast to
  an \f(CW\*(C`int *\*(C'\fR on machines where integers can only be accessed at
! two\- or four\-byte boundaries.
! .IP \fB\-Wcast\-align=strict\fR 4
  .IX Item "-Wcast-align=strict"
  Warn whenever a pointer is cast such that the required alignment of the
  target is increased.  For example, warn if a \f(CW\*(C`char *\*(C'\fR is cast to
  an \f(CW\*(C`int *\*(C'\fR regardless of the target machine.
! .IP \fB\-Wcast\-function\-type\fR 4
  .IX Item "-Wcast-function-type"
  Warn when a function pointer is cast to an incompatible function pointer.
  In a cast involving function types with a variable argument list only
  the types of initial arguments that are provided are considered.
! Any parameter of pointer\-type matches any other pointer\-type.  Any benign
  differences in integral types are ignored, like \f(CW\*(C`int\*(C'\fR vs. \f(CW\*(C`long\*(C'\fR
! on ILP32 targets.  Likewise type qualifiers are ignored.  The function
  type \f(CW\*(C`void (*) (void)\*(C'\fR is special and matches everything, which can
  be used to suppress this warning.
  In a cast involving pointer to member types this warning warns whenever
  the type cast is changing the pointer to member type.
  This warning is enabled by \fB\-Wextra\fR.
! .IP \fB\-Wcast\-user\-defined\fR 4
  .IX Item "-Wcast-user-defined"
! Warn when a cast to reference type does not involve a user\-defined
  conversion that the programmer might expect to be called.
  .Sp
  .Vb 2
*************** conversion that the programmer might exp
*** 9119,9128 ****
  .Ve
  .Sp
  This warning is enabled by default.
! .IP "\fB\-Wwrite\-strings\fR" 4
  .IX Item "-Wwrite-strings"
  When compiling C, give string constants the type \f(CW\*(C`const
! char[\f(CIlength\f(CW]\*(C'\fR so that copying the address of one into a
  non\-\f(CW\*(C`const\*(C'\fR \f(CW\*(C`char *\*(C'\fR pointer produces a warning.  These
  warnings help you find at compile time code that can try to write
  into a string constant, but only if you have been very careful about
--- 9052,9061 ----
  .Ve
  .Sp
  This warning is enabled by default.
! .IP \fB\-Wwrite\-strings\fR 4
  .IX Item "-Wwrite-strings"
  When compiling C, give string constants the type \f(CW\*(C`const
! char[\fR\f(CIlength\fR\f(CW]\*(C'\fR so that copying the address of one into a
  non\-\f(CW\*(C`const\*(C'\fR \f(CW\*(C`char *\*(C'\fR pointer produces a warning.  These
  warnings help you find at compile time code that can try to write
  into a string constant, but only if you have been very careful about
*************** using \f(CW\*(C`const\*(C'\fR in declara
*** 9130,9148 ****
  just a nuisance. This is why we did not make \fB\-Wall\fR request
  these warnings.
  .Sp
! When compiling \*(C+, warn about the deprecated conversion from string
! literals to \f(CW\*(C`char *\*(C'\fR.  This warning is enabled by default for \*(C+
  programs.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR in
! \&\*(C+11 mode or later.
! .IP "\fB\-Wclobbered\fR" 4
  .IX Item "-Wclobbered"
  Warn for variables that might be changed by \f(CW\*(C`longjmp\*(C'\fR or
  \&\f(CW\*(C`vfork\*(C'\fR.  This warning is also enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wno\-complain\-wrong\-lang\fR" 4
  .IX Item "-Wno-complain-wrong-lang"
! By default, language front ends complain when a command-line option is
  valid, but not applicable to that front end.
  This may be disabled with \fB\-Wno\-complain\-wrong\-lang\fR,
  which is mostly useful when invoking a single compiler driver for
--- 9063,9081 ----
  just a nuisance. This is why we did not make \fB\-Wall\fR request
  these warnings.
  .Sp
! When compiling C++, warn about the deprecated conversion from string
! literals to \f(CW\*(C`char *\*(C'\fR.  This warning is enabled by default for C++
  programs.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR in
! C++11 mode or later.
! .IP \fB\-Wclobbered\fR 4
  .IX Item "-Wclobbered"
  Warn for variables that might be changed by \f(CW\*(C`longjmp\*(C'\fR or
  \&\f(CW\*(C`vfork\*(C'\fR.  This warning is also enabled by \fB\-Wextra\fR.
! .IP \fB\-Wno\-complain\-wrong\-lang\fR 4
  .IX Item "-Wno-complain-wrong-lang"
! By default, language front ends complain when a command\-line option is
  valid, but not applicable to that front end.
  This may be disabled with \fB\-Wno\-complain\-wrong\-lang\fR,
  which is mostly useful when invoking a single compiler driver for
*************** multiple source files written in differe
*** 9152,9167 ****
  \&        $ g++ \-fno\-rtti a.cc b.f90
  .Ve
  .Sp
! The driver \fIg++\fR invokes the \*(C+ front end to compile \fIa.cc\fR
  and the Fortran front end to compile \fIb.f90\fR.
  The latter front end diagnoses
! \&\fBf951: Warning: command-line option '\-fno\-rtti' is valid for \*(C+/D/ObjC++ but not for Fortran\fR,
  which may be disabled with \fB\-Wno\-complain\-wrong\-lang\fR.
! .IP "\fB\-Wcompare\-distinct\-pointer\-types\fR (C and Objective-C only)" 4
  .IX Item "-Wcompare-distinct-pointer-types (C and Objective-C only)"
  Warn if pointers of distinct types are compared without a cast.  This
  warning is enabled by default.
! .IP "\fB\-Wconversion\fR" 4
  .IX Item "-Wconversion"
  Warn for implicit conversions that may alter a value. This includes
  conversions between real and integer, like \f(CW\*(C`abs (x)\*(C'\fR when
--- 9085,9100 ----
  \&        $ g++ \-fno\-rtti a.cc b.f90
  .Ve
  .Sp
! The driver \fIg++\fR invokes the C++ front end to compile \fIa.cc\fR
  and the Fortran front end to compile \fIb.f90\fR.
  The latter front end diagnoses
! \&\fBf951: Warning: command\-line option \*(Aq\-fno\-rtti\*(Aq is valid for C++/D/ObjC++ but not for Fortran\fR,
  which may be disabled with \fB\-Wno\-complain\-wrong\-lang\fR.
! .IP "\fB\-Wcompare\-distinct\-pointer\-types\fR (C and Objective\-C only)" 4
  .IX Item "-Wcompare-distinct-pointer-types (C and Objective-C only)"
  Warn if pointers of distinct types are compared without a cast.  This
  warning is enabled by default.
! .IP \fB\-Wconversion\fR 4
  .IX Item "-Wconversion"
  Warn for implicit conversions that may alter a value. This includes
  conversions between real and integer, like \f(CW\*(C`abs (x)\*(C'\fR when
*************** changed by the conversion like in \f(CW\
*** 9173,9188 ****
  conversions between signed and unsigned integers can be disabled by
  using \fB\-Wno\-sign\-conversion\fR.
  .Sp
! For \*(C+, also warn for confusing overload resolution for user-defined
  conversions; and conversions that never use a type conversion
  operator: conversions to \f(CW\*(C`void\*(C'\fR, the same type, a base class or a
  reference to them. Warnings about conversions between signed and
! unsigned integers are disabled by default in \*(C+ unless
  \&\fB\-Wsign\-conversion\fR is explicitly enabled.
  .Sp
  Warnings about conversion from arithmetic on a small type back to that
  type are only given with \fB\-Warith\-conversion\fR.
! .IP "\fB\-Wdangling\-else\fR" 4
  .IX Item "-Wdangling-else"
  Warn about constructions where there may be confusion to which
  \&\f(CW\*(C`if\*(C'\fR statement an \f(CW\*(C`else\*(C'\fR branch belongs.  Here is an example of
--- 9106,9121 ----
  conversions between signed and unsigned integers can be disabled by
  using \fB\-Wno\-sign\-conversion\fR.
  .Sp
! For C++, also warn for confusing overload resolution for user\-defined
  conversions; and conversions that never use a type conversion
  operator: conversions to \f(CW\*(C`void\*(C'\fR, the same type, a base class or a
  reference to them. Warnings about conversions between signed and
! unsigned integers are disabled by default in C++ unless
  \&\fB\-Wsign\-conversion\fR is explicitly enabled.
  .Sp
  Warnings about conversion from arithmetic on a small type back to that
  type are only given with \fB\-Warith\-conversion\fR.
! .IP \fB\-Wdangling\-else\fR 4
  .IX Item "-Wdangling-else"
  Warn about constructions where there may be confusion to which
  \&\f(CW\*(C`if\*(C'\fR statement an \f(CW\*(C`else\*(C'\fR branch belongs.  Here is an example of
*************** such a case:
*** 9198,9208 ****
  \&        }
  .Ve
  .Sp
! In C/\*(C+, every \f(CW\*(C`else\*(C'\fR branch belongs to the innermost possible
  \&\f(CW\*(C`if\*(C'\fR statement, which in this example is \f(CW\*(C`if (b)\*(C'\fR.  This is
  often not what the programmer expected, as illustrated in the above
  example by indentation the programmer chose.  When there is the
! potential for this confusion, \s-1GCC\s0 issues a warning when this flag
  is specified.  To eliminate the warning, add explicit braces around
  the innermost \f(CW\*(C`if\*(C'\fR statement so there is no way the \f(CW\*(C`else\*(C'\fR
  can belong to the enclosing \f(CW\*(C`if\*(C'\fR.  The resulting code
--- 9131,9141 ----
  \&        }
  .Ve
  .Sp
! In C/C++, every \f(CW\*(C`else\*(C'\fR branch belongs to the innermost possible
  \&\f(CW\*(C`if\*(C'\fR statement, which in this example is \f(CW\*(C`if (b)\*(C'\fR.  This is
  often not what the programmer expected, as illustrated in the above
  example by indentation the programmer chose.  When there is the
! potential for this confusion, GCC issues a warning when this flag
  is specified.  To eliminate the warning, add explicit braces around
  the innermost \f(CW\*(C`if\*(C'\fR statement so there is no way the \f(CW\*(C`else\*(C'\fR
  can belong to the enclosing \f(CW\*(C`if\*(C'\fR.  The resulting code
*************** looks like this:
*** 9221,9243 ****
  .Ve
  .Sp
  This warning is enabled by \fB\-Wparentheses\fR.
! .IP "\fB\-Wdangling\-pointer\fR" 4
  .IX Item "-Wdangling-pointer"
  .PD 0
! .IP "\fB\-Wdangling\-pointer=\fR\fIn\fR" 4
  .IX Item "-Wdangling-pointer=n"
  .PD
! Warn about uses of pointers (or \*(C+ references) to objects with automatic
  storage duration after their lifetime has ended.  This includes local
  variables declared in nested blocks, compound literals and other unnamed
  temporary objects.  In addition, warn about storing the address of such
  objects in escaped pointers.  The warning is enabled at all optimization
  levels but may yield different results with optimization than without.
  .RS 4
! .IP "\fB\-Wdangling\-pointer=1\fR" 4
  .IX Item "-Wdangling-pointer=1"
  At level 1, the warning diagnoses only unconditional uses of dangling pointers.
! .IP "\fB\-Wdangling\-pointer=2\fR" 4
  .IX Item "-Wdangling-pointer=2"
  At level 2, in addition to unconditional uses the warning also diagnoses
  conditional uses of dangling pointers.
--- 9154,9176 ----
  .Ve
  .Sp
  This warning is enabled by \fB\-Wparentheses\fR.
! .IP \fB\-Wdangling\-pointer\fR 4
  .IX Item "-Wdangling-pointer"
  .PD 0
! .IP \fB\-Wdangling\-pointer=\fR\fIn\fR 4
  .IX Item "-Wdangling-pointer=n"
  .PD
! Warn about uses of pointers (or C++ references) to objects with automatic
  storage duration after their lifetime has ended.  This includes local
  variables declared in nested blocks, compound literals and other unnamed
  temporary objects.  In addition, warn about storing the address of such
  objects in escaped pointers.  The warning is enabled at all optimization
  levels but may yield different results with optimization than without.
  .RS 4
! .IP \fB\-Wdangling\-pointer=1\fR 4
  .IX Item "-Wdangling-pointer=1"
  At level 1, the warning diagnoses only unconditional uses of dangling pointers.
! .IP \fB\-Wdangling\-pointer=2\fR 4
  .IX Item "-Wdangling-pointer=2"
  At level 2, in addition to unconditional uses the warning also diagnoses
  conditional uses of dangling pointers.
*************** is conditional, the warning triggers at
*** 9295,9324 ****
  \&        }
  .Ve
  .RE
! .IP "\fB\-Wdate\-time\fR" 4
  .IX Item "-Wdate-time"
  Warn when macros \f(CW\*(C`_\|_TIME_\|_\*(C'\fR, \f(CW\*(C`_\|_DATE_\|_\*(C'\fR or \f(CW\*(C`_\|_TIMESTAMP_\|_\*(C'\fR
! are encountered as they might prevent bit-wise-identical reproducible
  compilations.
! .IP "\fB\-Wempty\-body\fR" 4
  .IX Item "-Wempty-body"
  Warn if an empty body occurs in an \f(CW\*(C`if\*(C'\fR, \f(CW\*(C`else\*(C'\fR or \f(CW\*(C`do
  while\*(C'\fR statement.  This warning is also enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wno\-endif\-labels\fR" 4
  .IX Item "-Wno-endif-labels"
  Do not warn about stray tokens after \f(CW\*(C`#else\*(C'\fR and \f(CW\*(C`#endif\*(C'\fR.
! .IP "\fB\-Wenum\-compare\fR" 4
  .IX Item "-Wenum-compare"
  Warn about a comparison between values of different enumerated types.
! In \*(C+ enumerated type mismatches in conditional expressions are also
  diagnosed and the warning is enabled by default.  In C this warning is
  enabled by \fB\-Wall\fR.
! .IP "\fB\-Wenum\-conversion\fR" 4
  .IX Item "-Wenum-conversion"
  Warn when a value of enumerated type is implicitly converted to a
  different enumerated type.  This warning is enabled by \fB\-Wextra\fR
  in C.
! .IP "\fB\-Wenum\-int\-mismatch\fR (C and Objective-C only)" 4
  .IX Item "-Wenum-int-mismatch (C and Objective-C only)"
  Warn about mismatches between an enumerated type and an integer type in
  declarations.  For example:
--- 9228,9257 ----
  \&        }
  .Ve
  .RE
! .IP \fB\-Wdate\-time\fR 4
  .IX Item "-Wdate-time"
  Warn when macros \f(CW\*(C`_\|_TIME_\|_\*(C'\fR, \f(CW\*(C`_\|_DATE_\|_\*(C'\fR or \f(CW\*(C`_\|_TIMESTAMP_\|_\*(C'\fR
! are encountered as they might prevent bit\-wise\-identical reproducible
  compilations.
! .IP \fB\-Wempty\-body\fR 4
  .IX Item "-Wempty-body"
  Warn if an empty body occurs in an \f(CW\*(C`if\*(C'\fR, \f(CW\*(C`else\*(C'\fR or \f(CW\*(C`do
  while\*(C'\fR statement.  This warning is also enabled by \fB\-Wextra\fR.
! .IP \fB\-Wno\-endif\-labels\fR 4
  .IX Item "-Wno-endif-labels"
  Do not warn about stray tokens after \f(CW\*(C`#else\*(C'\fR and \f(CW\*(C`#endif\*(C'\fR.
! .IP \fB\-Wenum\-compare\fR 4
  .IX Item "-Wenum-compare"
  Warn about a comparison between values of different enumerated types.
! In C++ enumerated type mismatches in conditional expressions are also
  diagnosed and the warning is enabled by default.  In C this warning is
  enabled by \fB\-Wall\fR.
! .IP \fB\-Wenum\-conversion\fR 4
  .IX Item "-Wenum-conversion"
  Warn when a value of enumerated type is implicitly converted to a
  different enumerated type.  This warning is enabled by \fB\-Wextra\fR
  in C.
! .IP "\fB\-Wenum\-int\-mismatch\fR (C and Objective\-C only)" 4
  .IX Item "-Wenum-int-mismatch (C and Objective-C only)"
  Warn about mismatches between an enumerated type and an integer type in
  declarations.  For example:
*************** declarations.  For example:
*** 9331,9365 ****
  .Sp
  In C, an enumerated type is compatible with \f(CW\*(C`char\*(C'\fR, a signed
  integer type, or an unsigned integer type.  However, since the choice
! of the underlying type of an enumerated type is implementation-defined,
! such mismatches may cause portability issues.  In \*(C+, such mismatches
  are an error.  In C, this warning is enabled by \fB\-Wall\fR and
  \&\fB\-Wc++\-compat\fR.
! .IP "\fB\-Wjump\-misses\-init\fR (C, Objective-C only)" 4
  .IX Item "-Wjump-misses-init (C, Objective-C only)"
  Warn if a \f(CW\*(C`goto\*(C'\fR statement or a \f(CW\*(C`switch\*(C'\fR statement jumps
  forward across the initialization of a variable, or jumps backward to a
  label after the variable has been initialized.  This only warns about
  variables that are initialized when they are declared.  This warning is
! only supported for C and Objective-C; in \*(C+ this sort of branch is an
  error in any case.
  .Sp
  \&\fB\-Wjump\-misses\-init\fR is included in \fB\-Wc++\-compat\fR.  It
  can be disabled with the \fB\-Wno\-jump\-misses\-init\fR option.
! .IP "\fB\-Wsign\-compare\fR" 4
  .IX Item "-Wsign-compare"
  Warn when a comparison between signed and unsigned values could produce
  an incorrect result when the signed value is converted to unsigned.
! In \*(C+, this warning is also enabled by \fB\-Wall\fR.  In C, it is
  also enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wsign\-conversion\fR" 4
  .IX Item "-Wsign-conversion"
  Warn for implicit conversions that may change the sign of an integer
  value, like assigning a signed integer expression to an unsigned
  integer variable. An explicit cast silences the warning. In C, this
  option is enabled also by \fB\-Wconversion\fR.
! .IP "\fB\-Wflex\-array\-member\-not\-at\-end\fR (C and \*(C+ only)" 4
! .IX Item "-Wflex-array-member-not-at-end (C and only)"
  Warn when a structure containing a C99 flexible array member as the last
  field is not at the end of another structure.
  This warning warns e.g. about
--- 9264,9298 ----
  .Sp
  In C, an enumerated type is compatible with \f(CW\*(C`char\*(C'\fR, a signed
  integer type, or an unsigned integer type.  However, since the choice
! of the underlying type of an enumerated type is implementation\-defined,
! such mismatches may cause portability issues.  In C++, such mismatches
  are an error.  In C, this warning is enabled by \fB\-Wall\fR and
  \&\fB\-Wc++\-compat\fR.
! .IP "\fB\-Wjump\-misses\-init\fR (C, Objective\-C only)" 4
  .IX Item "-Wjump-misses-init (C, Objective-C only)"
  Warn if a \f(CW\*(C`goto\*(C'\fR statement or a \f(CW\*(C`switch\*(C'\fR statement jumps
  forward across the initialization of a variable, or jumps backward to a
  label after the variable has been initialized.  This only warns about
  variables that are initialized when they are declared.  This warning is
! only supported for C and Objective\-C; in C++ this sort of branch is an
  error in any case.
  .Sp
  \&\fB\-Wjump\-misses\-init\fR is included in \fB\-Wc++\-compat\fR.  It
  can be disabled with the \fB\-Wno\-jump\-misses\-init\fR option.
! .IP \fB\-Wsign\-compare\fR 4
  .IX Item "-Wsign-compare"
  Warn when a comparison between signed and unsigned values could produce
  an incorrect result when the signed value is converted to unsigned.
! In C++, this warning is also enabled by \fB\-Wall\fR.  In C, it is
  also enabled by \fB\-Wextra\fR.
! .IP \fB\-Wsign\-conversion\fR 4
  .IX Item "-Wsign-conversion"
  Warn for implicit conversions that may change the sign of an integer
  value, like assigning a signed integer expression to an unsigned
  integer variable. An explicit cast silences the warning. In C, this
  option is enabled also by \fB\-Wconversion\fR.
! .IP "\fB\-Wflex\-array\-member\-not\-at\-end\fR (C and C++ only)" 4
! .IX Item "-Wflex-array-member-not-at-end (C and C++ only)"
  Warn when a structure containing a C99 flexible array member as the last
  field is not at the end of another structure.
  This warning warns e.g. about
*************** This warning warns e.g. about
*** 9368,9383 ****
  \&        struct flex  { int length; char data[]; };
  \&        struct mid_flex { int m; struct flex flex_data; int n; };
  .Ve
! .IP "\fB\-Wfloat\-conversion\fR" 4
  .IX Item "-Wfloat-conversion"
  Warn for implicit conversions that reduce the precision of a real value.
  This includes conversions from real to integer, and from higher precision
  real to lower precision real values.  This option is also enabled by
  \&\fB\-Wconversion\fR.
! .IP "\fB\-Wno\-scalar\-storage\-order\fR" 4
  .IX Item "-Wno-scalar-storage-order"
  Do not warn on suspicious constructs involving reverse scalar storage order.
! .IP "\fB\-Wsizeof\-array\-div\fR" 4
  .IX Item "-Wsizeof-array-div"
  Warn about divisions of two sizeof operators when the first one is applied
  to an array and the divisor does not equal the size of the array element.
--- 9301,9316 ----
  \&        struct flex  { int length; char data[]; };
  \&        struct mid_flex { int m; struct flex flex_data; int n; };
  .Ve
! .IP \fB\-Wfloat\-conversion\fR 4
  .IX Item "-Wfloat-conversion"
  Warn for implicit conversions that reduce the precision of a real value.
  This includes conversions from real to integer, and from higher precision
  real to lower precision real values.  This option is also enabled by
  \&\fB\-Wconversion\fR.
! .IP \fB\-Wno\-scalar\-storage\-order\fR 4
  .IX Item "-Wno-scalar-storage-order"
  Do not warn on suspicious constructs involving reverse scalar storage order.
! .IP \fB\-Wsizeof\-array\-div\fR 4
  .IX Item "-Wsizeof-array-div"
  Warn about divisions of two sizeof operators when the first one is applied
  to an array and the divisor does not equal the size of the array element.
*************** array, which is likely what the user int
*** 9393,9408 ****
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wsizeof\-pointer\-div\fR" 4
  .IX Item "-Wsizeof-pointer-div"
  Warn for suspicious divisions of two sizeof expressions that divide
  the pointer size by the element size, which is the usual way to compute
! the array size but won't work out correctly with pointers.  This warning
  warns e.g. about \f(CW\*(C`sizeof (ptr) / sizeof (ptr[0])\*(C'\fR if \f(CW\*(C`ptr\*(C'\fR is
  not an array, but a pointer.  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wsizeof\-pointer\-memaccess\fR" 4
  .IX Item "-Wsizeof-pointer-memaccess"
! Warn for suspicious length parameters to certain string and memory built-in
  functions if the argument uses \f(CW\*(C`sizeof\*(C'\fR.  This warning triggers for
  example for \f(CW\*(C`memset (ptr, 0, sizeof (ptr));\*(C'\fR if \f(CW\*(C`ptr\*(C'\fR is not
  an array, but a pointer, and suggests a possible fix, or about
--- 9326,9341 ----
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wsizeof\-pointer\-div\fR 4
  .IX Item "-Wsizeof-pointer-div"
  Warn for suspicious divisions of two sizeof expressions that divide
  the pointer size by the element size, which is the usual way to compute
! the array size but won\*(Aqt work out correctly with pointers.  This warning
  warns e.g. about \f(CW\*(C`sizeof (ptr) / sizeof (ptr[0])\*(C'\fR if \f(CW\*(C`ptr\*(C'\fR is
  not an array, but a pointer.  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wsizeof\-pointer\-memaccess\fR 4
  .IX Item "-Wsizeof-pointer-memaccess"
! Warn for suspicious length parameters to certain string and memory built\-in
  functions if the argument uses \f(CW\*(C`sizeof\*(C'\fR.  This warning triggers for
  example for \f(CW\*(C`memset (ptr, 0, sizeof (ptr));\*(C'\fR if \f(CW\*(C`ptr\*(C'\fR is not
  an array, but a pointer, and suggests a possible fix, or about
*************** is almost certainly a mistake and so the
*** 9424,9444 ****
  .Ve
  .Sp
  The \fB\-Wsizeof\-pointer\-memaccess\fR option is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wno\-sizeof\-array\-argument\fR" 4
  .IX Item "-Wno-sizeof-array-argument"
  Do not warn when the \f(CW\*(C`sizeof\*(C'\fR operator is applied to a parameter that is
  declared as an array in a function definition.  This warning is enabled by
! default for C and \*(C+ programs.
! .IP "\fB\-Wmemset\-elt\-size\fR" 4
  .IX Item "-Wmemset-elt-size"
! Warn for suspicious calls to the \f(CW\*(C`memset\*(C'\fR built-in function, if the
  first argument references an array, and the third argument is a number
  equal to the number of elements, but not equal to the size of the array
  in memory.  This indicates that the user has omitted a multiplication by
  the element size.  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wmemset\-transposed\-args\fR" 4
  .IX Item "-Wmemset-transposed-args"
! Warn for suspicious calls to the \f(CW\*(C`memset\*(C'\fR built-in function where
  the second argument is not zero and the third argument is zero.  For
  example, the call \f(CW\*(C`memset (buf, sizeof buf, 0)\*(C'\fR is diagnosed because
  \&\f(CW\*(C`memset (buf, 0, sizeof buf)\*(C'\fR was meant instead.  The diagnostic
--- 9357,9377 ----
  .Ve
  .Sp
  The \fB\-Wsizeof\-pointer\-memaccess\fR option is enabled by \fB\-Wall\fR.
! .IP \fB\-Wno\-sizeof\-array\-argument\fR 4
  .IX Item "-Wno-sizeof-array-argument"
  Do not warn when the \f(CW\*(C`sizeof\*(C'\fR operator is applied to a parameter that is
  declared as an array in a function definition.  This warning is enabled by
! default for C and C++ programs.
! .IP \fB\-Wmemset\-elt\-size\fR 4
  .IX Item "-Wmemset-elt-size"
! Warn for suspicious calls to the \f(CW\*(C`memset\*(C'\fR built\-in function, if the
  first argument references an array, and the third argument is a number
  equal to the number of elements, but not equal to the size of the array
  in memory.  This indicates that the user has omitted a multiplication by
  the element size.  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wmemset\-transposed\-args\fR 4
  .IX Item "-Wmemset-transposed-args"
! Warn for suspicious calls to the \f(CW\*(C`memset\*(C'\fR built\-in function where
  the second argument is not zero and the third argument is zero.  For
  example, the call \f(CW\*(C`memset (buf, sizeof buf, 0)\*(C'\fR is diagnosed because
  \&\f(CW\*(C`memset (buf, 0, sizeof buf)\*(C'\fR was meant instead.  The diagnostic
*************** it is an expression that is folded to ze
*** 9447,9453 ****
  type, it is far less likely that the arguments have been mistakenly
  transposed and no warning is emitted.  This warning is enabled
  by \fB\-Wall\fR.
! .IP "\fB\-Waddress\fR" 4
  .IX Item "-Waddress"
  Warn about suspicious uses of address expressions. These include comparing
  the address of a function or a declared object to the null pointer constant
--- 9380,9386 ----
  type, it is far less likely that the arguments have been mistakenly
  transposed and no warning is emitted.  This warning is enabled
  by \fB\-Wall\fR.
! .IP \fB\-Waddress\fR 4
  .IX Item "-Waddress"
  Warn about suspicious uses of address expressions. These include comparing
  the address of a function or a declared object to the null pointer constant
*************** and are not portable, and suggest the in
*** 9494,9516 ****
  The warning is suppressed if the suspicious expression is the result
  of macro expansion.
  \&\fB\-Waddress\fR warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wno\-address\-of\-packed\-member\fR" 4
  .IX Item "-Wno-address-of-packed-member"
  Do not warn when the address of packed member of struct or union is taken,
  which usually results in an unaligned pointer value.  This is
  enabled by default.
! .IP "\fB\-Wlogical\-op\fR" 4
  .IX Item "-Wlogical-op"
  Warn about suspicious uses of logical operators in expressions.
  This includes using logical operators in contexts where a
! bit-wise operator is likely to be expected.  Also warns when
  the operands of a logical operator are the same:
  .Sp
  .Vb 2
  \&        extern int a;
  \&        if (a < 0 && a < 0) { ... }
  .Ve
! .IP "\fB\-Wlogical\-not\-parentheses\fR" 4
  .IX Item "-Wlogical-not-parentheses"
  Warn about logical not used on the left hand side operand of a comparison.
  This option does not warn if the right operand is considered to be a boolean
--- 9427,9449 ----
  The warning is suppressed if the suspicious expression is the result
  of macro expansion.
  \&\fB\-Waddress\fR warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wno\-address\-of\-packed\-member\fR 4
  .IX Item "-Wno-address-of-packed-member"
  Do not warn when the address of packed member of struct or union is taken,
  which usually results in an unaligned pointer value.  This is
  enabled by default.
! .IP \fB\-Wlogical\-op\fR 4
  .IX Item "-Wlogical-op"
  Warn about suspicious uses of logical operators in expressions.
  This includes using logical operators in contexts where a
! bit\-wise operator is likely to be expected.  Also warns when
  the operands of a logical operator are the same:
  .Sp
  .Vb 2
  \&        extern int a;
  \&        if (a < 0 && a < 0) { ... }
  .Ve
! .IP \fB\-Wlogical\-not\-parentheses\fR 4
  .IX Item "-Wlogical-not-parentheses"
  Warn about logical not used on the left hand side operand of a comparison.
  This option does not warn if the right operand is considered to be a boolean
*************** expression.  Its purpose is to detect su
*** 9522,9528 ****
  \&        if (!a > 1) { ... }
  .Ve
  .Sp
! It is possible to suppress the warning by wrapping the \s-1LHS\s0 into
  parentheses:
  .Sp
  .Vb 1
--- 9455,9461 ----
  \&        if (!a > 1) { ... }
  .Ve
  .Sp
! It is possible to suppress the warning by wrapping the LHS into
  parentheses:
  .Sp
  .Vb 1
*************** parentheses:
*** 9530,9557 ****
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Waggregate\-return\fR" 4
  .IX Item "-Waggregate-return"
  Warn if any functions that return structures or unions are defined or
  called.  (In languages where you can return an array, this also elicits
  a warning.)
! .IP "\fB\-Wno\-aggressive\-loop\-optimizations\fR" 4
  .IX Item "-Wno-aggressive-loop-optimizations"
  Do not warn if the compiler detects undefined behavior in a loop with
  a constant number of iterations.  \fB\-Waggressive\-loop\-optimizations\fR
  is enabled by default.
! .IP "\fB\-Wno\-attributes\fR" 4
  .IX Item "-Wno-attributes"
  Do not warn if an unexpected \f(CW\*(C`_\|_attribute_\|_\*(C'\fR is used, such as
  unrecognized attributes, function attributes applied to variables,
  etc.  This does not stop errors for incorrect use of supported
  attributes.
  .Sp
! Warnings about ill-formed uses of standard attributes are upgraded to
  errors by \fB\-pedantic\-errors\fR.
  .Sp
  Additionally, using \fB\-Wno\-attributes=\fR, it is possible to suppress
! warnings about unknown scoped attributes (in \*(C+11 and C23).  For example,
  \&\fB\-Wno\-attributes=vendor::attr\fR disables warning about the following
  declaration:
  .Sp
--- 9463,9490 ----
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Waggregate\-return\fR 4
  .IX Item "-Waggregate-return"
  Warn if any functions that return structures or unions are defined or
  called.  (In languages where you can return an array, this also elicits
  a warning.)
! .IP \fB\-Wno\-aggressive\-loop\-optimizations\fR 4
  .IX Item "-Wno-aggressive-loop-optimizations"
  Do not warn if the compiler detects undefined behavior in a loop with
  a constant number of iterations.  \fB\-Waggressive\-loop\-optimizations\fR
  is enabled by default.
! .IP \fB\-Wno\-attributes\fR 4
  .IX Item "-Wno-attributes"
  Do not warn if an unexpected \f(CW\*(C`_\|_attribute_\|_\*(C'\fR is used, such as
  unrecognized attributes, function attributes applied to variables,
  etc.  This does not stop errors for incorrect use of supported
  attributes.
  .Sp
! Warnings about ill\-formed uses of standard attributes are upgraded to
  errors by \fB\-pedantic\-errors\fR.
  .Sp
  Additionally, using \fB\-Wno\-attributes=\fR, it is possible to suppress
! warnings about unknown scoped attributes (in C++11 and C23).  For example,
  \&\fB\-Wno\-attributes=vendor::attr\fR disables warning about the following
  declaration:
  .Sp
*************** of these declarations:
*** 9569,9584 ****
  .Ve
  .Sp
  Note that \fB\-Wno\-attributes=\fR does not imply \fB\-Wno\-attributes\fR.
! .IP "\fB\-Wno\-builtin\-declaration\-mismatch\fR" 4
  .IX Item "-Wno-builtin-declaration-mismatch"
! Warn if a built-in function is declared with an incompatible signature
! or as a non-function, or when a built-in function declared with a type
  that does not include a prototype is called with arguments whose promoted
  types do not match those expected by the function.  When \fB\-Wextra\fR
! is specified, also warn when a built-in function that takes arguments is
  declared without a prototype.  The \fB\-Wbuiltin\-declaration\-mismatch\fR
  warning is enabled by default.  To avoid the warning include the appropriate
! header to bring the prototypes of built-in functions into scope.
  .Sp
  For example, the call to \f(CW\*(C`memset\*(C'\fR below is diagnosed by the warning
  because the function expects a value of type \f(CW\*(C`size_t\*(C'\fR as its argument
--- 9502,9517 ----
  .Ve
  .Sp
  Note that \fB\-Wno\-attributes=\fR does not imply \fB\-Wno\-attributes\fR.
! .IP \fB\-Wno\-builtin\-declaration\-mismatch\fR 4
  .IX Item "-Wno-builtin-declaration-mismatch"
! Warn if a built\-in function is declared with an incompatible signature
! or as a non\-function, or when a built\-in function declared with a type
  that does not include a prototype is called with arguments whose promoted
  types do not match those expected by the function.  When \fB\-Wextra\fR
! is specified, also warn when a built\-in function that takes arguments is
  declared without a prototype.  The \fB\-Wbuiltin\-declaration\-mismatch\fR
  warning is enabled by default.  To avoid the warning include the appropriate
! header to bring the prototypes of built\-in functions into scope.
  .Sp
  For example, the call to \f(CW\*(C`memset\*(C'\fR below is diagnosed by the warning
  because the function expects a value of type \f(CW\*(C`size_t\*(C'\fR as its argument
*************** the declaration of the function is diagn
*** 9592,9643 ****
  \&          memset (d, \*(Aq\e0\*(Aq, 32);
  \&        }
  .Ve
! .IP "\fB\-Wno\-builtin\-macro\-redefined\fR" 4
  .IX Item "-Wno-builtin-macro-redefined"
! Do not warn if certain built-in macros are redefined.  This suppresses
  warnings for redefinition of \f(CW\*(C`_\|_TIMESTAMP_\|_\*(C'\fR, \f(CW\*(C`_\|_TIME_\|_\*(C'\fR,
  \&\f(CW\*(C`_\|_DATE_\|_\*(C'\fR, \f(CW\*(C`_\|_FILE_\|_\*(C'\fR, and \f(CW\*(C`_\|_BASE_FILE_\|_\*(C'\fR.
! .IP "\fB\-Wfree\-labels\fR (C and Objective-C only)" 4
  .IX Item "-Wfree-labels (C and Objective-C only)"
! Warn if a label is applied to a non-statement, or occurs at the end of a
  compound statement.  Such labels are allowed by C23 and later dialects
! of C, and are available as a \s-1GCC\s0 extension in all other dialects.
  .Sp
  This warning is also enabled by \fB\-Wc11\-c23\-compat\fR.  It is turned
  into an error if building for a C version before C23 by
  \&\fB\-pedantic\-errors\fR.
! .IP "\fB\-Wheader\-guard\fR" 4
  .IX Item "-Wheader-guard"
  Warn if a valid preprocessor header multiple inclusion guard has
  a \f(CW\*(C`#define\*(C'\fR directive right after \f(CW\*(C`#ifndef\*(C'\fR or \f(CW\*(C`#if !defined\*(C'\fR
  directive for the multiple inclusion guard, which defines a different macro
  from the guard macro with a similar name, the actual multiple inclusion guard
! macro isn't defined at the corresponding \f(CW\*(C`#ifndef\*(C'\fR directive at the end
! of the header, and the \f(CW\*(C`#define\*(C'\fR directive defines an object-like macro
  with empty definition.  In such case, it often is just a misspelled guard
  name, either in the \f(CW\*(C`#ifndef\*(C'\fR or \f(CW\*(C`#if !defined\*(C'\fR directive or in the
  subsequent \f(CW\*(C`#define\*(C'\fR directive.  This warning is enabled
  by \fB\-Wall\fR.
! .IP "\fB\-Wstrict\-prototypes\fR (C and Objective-C only)" 4
  .IX Item "-Wstrict-prototypes (C and Objective-C only)"
  Warn if a function is declared or defined without specifying the
! argument types.  (An old-style function definition is permitted without
  a warning if preceded by a declaration that specifies the argument
  types.)
! .IP "\fB\-Wold\-style\-declaration\fR (C and Objective-C only)" 4
  .IX Item "-Wold-style-declaration (C and Objective-C only)"
  Warn for obsolescent usages, according to the C Standard, in a
! declaration. For example, warn if storage-class specifiers like
  \&\f(CW\*(C`static\*(C'\fR are not the first things in a declaration.  This warning
  is also enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wold\-style\-definition\fR (C and Objective-C only)" 4
  .IX Item "-Wold-style-definition (C and Objective-C only)"
! Warn if an old-style function definition is used.  A warning is given
  even if there is a previous prototype.  A definition using \fB()\fR
! is not considered an old-style definition in C23 mode, because it is
  equivalent to \fB(void)\fR in that case, but is considered an
! old-style definition for older standards.
! .IP "\fB\-Wdeprecated\-non\-prototype\fR (C and Objective-C only)" 4
  .IX Item "-Wdeprecated-non-prototype (C and Objective-C only)"
  Warn if a function declared with an empty parameter list \fB()\fR is
  called with one or more arguments, or if a function definition with one
--- 9525,9576 ----
  \&          memset (d, \*(Aq\e0\*(Aq, 32);
  \&        }
  .Ve
! .IP \fB\-Wno\-builtin\-macro\-redefined\fR 4
  .IX Item "-Wno-builtin-macro-redefined"
! Do not warn if certain built\-in macros are redefined.  This suppresses
  warnings for redefinition of \f(CW\*(C`_\|_TIMESTAMP_\|_\*(C'\fR, \f(CW\*(C`_\|_TIME_\|_\*(C'\fR,
  \&\f(CW\*(C`_\|_DATE_\|_\*(C'\fR, \f(CW\*(C`_\|_FILE_\|_\*(C'\fR, and \f(CW\*(C`_\|_BASE_FILE_\|_\*(C'\fR.
! .IP "\fB\-Wfree\-labels\fR (C and Objective\-C only)" 4
  .IX Item "-Wfree-labels (C and Objective-C only)"
! Warn if a label is applied to a non\-statement, or occurs at the end of a
  compound statement.  Such labels are allowed by C23 and later dialects
! of C, and are available as a GCC extension in all other dialects.
  .Sp
  This warning is also enabled by \fB\-Wc11\-c23\-compat\fR.  It is turned
  into an error if building for a C version before C23 by
  \&\fB\-pedantic\-errors\fR.
! .IP \fB\-Wheader\-guard\fR 4
  .IX Item "-Wheader-guard"
  Warn if a valid preprocessor header multiple inclusion guard has
  a \f(CW\*(C`#define\*(C'\fR directive right after \f(CW\*(C`#ifndef\*(C'\fR or \f(CW\*(C`#if !defined\*(C'\fR
  directive for the multiple inclusion guard, which defines a different macro
  from the guard macro with a similar name, the actual multiple inclusion guard
! macro isn\*(Aqt defined at the corresponding \f(CW\*(C`#ifndef\*(C'\fR directive at the end
! of the header, and the \f(CW\*(C`#define\*(C'\fR directive defines an object\-like macro
  with empty definition.  In such case, it often is just a misspelled guard
  name, either in the \f(CW\*(C`#ifndef\*(C'\fR or \f(CW\*(C`#if !defined\*(C'\fR directive or in the
  subsequent \f(CW\*(C`#define\*(C'\fR directive.  This warning is enabled
  by \fB\-Wall\fR.
! .IP "\fB\-Wstrict\-prototypes\fR (C and Objective\-C only)" 4
  .IX Item "-Wstrict-prototypes (C and Objective-C only)"
  Warn if a function is declared or defined without specifying the
! argument types.  (An old\-style function definition is permitted without
  a warning if preceded by a declaration that specifies the argument
  types.)
! .IP "\fB\-Wold\-style\-declaration\fR (C and Objective\-C only)" 4
  .IX Item "-Wold-style-declaration (C and Objective-C only)"
  Warn for obsolescent usages, according to the C Standard, in a
! declaration. For example, warn if storage\-class specifiers like
  \&\f(CW\*(C`static\*(C'\fR are not the first things in a declaration.  This warning
  is also enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wold\-style\-definition\fR (C and Objective\-C only)" 4
  .IX Item "-Wold-style-definition (C and Objective-C only)"
! Warn if an old\-style function definition is used.  A warning is given
  even if there is a previous prototype.  A definition using \fB()\fR
! is not considered an old\-style definition in C23 mode, because it is
  equivalent to \fB(void)\fR in that case, but is considered an
! old\-style definition for older standards.
! .IP "\fB\-Wdeprecated\-non\-prototype\fR (C and Objective\-C only)" 4
  .IX Item "-Wdeprecated-non-prototype (C and Objective-C only)"
  Warn if a function declared with an empty parameter list \fB()\fR is
  called with one or more arguments, or if a function definition with one
*************** or more parameters is encountered after
*** 9645,9661 ****
  are errors in C23 and later dialects  of C.
  .Sp
  This warning is also enabled by \fB\-Wc11\-c23\-compat\fR.
! .IP "\fB\-Wmissing\-parameter\-name\fR (C and Objective-C only)" 4
  .IX Item "-Wmissing-parameter-name (C and Objective-C only)"
  Warn if a function definition omits a parameter name, specifying only
  its type.  This can be used to document that a parameter is unused
  in the definition.  It is part of C23 and later dialects of C,
! and available as a \s-1GCC\s0 extension in all other dialects.
  .Sp
  This warning is also enabled by \fB\-Wc11\-c23\-compat\fR.  It is turned
  into an error if building for a C version before C23 by
  \&\fB\-pedantic\-errors\fR.
! .IP "\fB\-Wmissing\-parameter\-type\fR (C and Objective-C only)" 4
  .IX Item "-Wmissing-parameter-type (C and Objective-C only)"
  A function parameter is declared without a type specifier in K&R\-style
  functions:
--- 9578,9594 ----
  are errors in C23 and later dialects  of C.
  .Sp
  This warning is also enabled by \fB\-Wc11\-c23\-compat\fR.
! .IP "\fB\-Wmissing\-parameter\-name\fR (C and Objective\-C only)" 4
  .IX Item "-Wmissing-parameter-name (C and Objective-C only)"
  Warn if a function definition omits a parameter name, specifying only
  its type.  This can be used to document that a parameter is unused
  in the definition.  It is part of C23 and later dialects of C,
! and available as a GCC extension in all other dialects.
  .Sp
  This warning is also enabled by \fB\-Wc11\-c23\-compat\fR.  It is turned
  into an error if building for a C version before C23 by
  \&\fB\-pedantic\-errors\fR.
! .IP "\fB\-Wmissing\-parameter\-type\fR (C and Objective\-C only)" 4
  .IX Item "-Wmissing-parameter-type (C and Objective-C only)"
  A function parameter is declared without a type specifier in K&R\-style
  functions:
*************** functions:
*** 9665,9671 ****
  .Ve
  .Sp
  This warning is also enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wno\-declaration\-missing\-parameter\-type\fR (C and Objective-C only)" 4
  .IX Item "-Wno-declaration-missing-parameter-type (C and Objective-C only)"
  Do not warn if a function declaration contains a parameter name without
  a type.  Such function declarations do not provide a function prototype
--- 9598,9604 ----
  .Ve
  .Sp
  This warning is also enabled by \fB\-Wextra\fR.
! .IP "\fB\-Wno\-declaration\-missing\-parameter\-type\fR (C and Objective\-C only)" 4
  .IX Item "-Wno-declaration-missing-parameter-type (C and Objective-C only)"
  Do not warn if a function declaration contains a parameter name without
  a type.  Such function declarations do not provide a function prototype
*************** is treated as an error.  The error can b
*** 9677,9709 ****
  error alone, with \fB\-Wno\-error=declaration\-missing\-parameter\-type\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wmissing\-prototypes\fR (C and Objective-C only)" 4
  .IX Item "-Wmissing-prototypes (C and Objective-C only)"
  Warn if a global function is defined without a previous prototype
  declaration.  This warning is issued even if the definition itself
  provides a prototype.  Use this option to detect global functions
  that do not have a matching prototype declaration in a header file.
! This option is not valid for \*(C+ because all function declarations
! provide prototypes and a non-matching declaration declares an
  overload rather than conflict with an earlier declaration.
! Use \fB\-Wmissing\-declarations\fR to detect missing declarations in \*(C+.
! .IP "\fB\-Wmissing\-variable\-declarations\fR (C and Objective-C only)" 4
  .IX Item "-Wmissing-variable-declarations (C and Objective-C only)"
  Warn if a global variable is defined without a previous declaration.
  Use this option to detect global variables that do not have a matching
  extern declaration in a header file.
! .IP "\fB\-Wmissing\-declarations\fR" 4
  .IX Item "-Wmissing-declarations"
  Warn if a global function is defined without a previous declaration.
  Do so even if the definition itself provides a prototype.
  Use this option to detect global functions that are not declared in
  header files.  In C, no warnings are issued for functions with previous
! non-prototype declarations; use \fB\-Wmissing\-prototypes\fR to detect
! missing prototypes.  In \*(C+, no warnings are issued for function templates,
  or for inline functions, or for functions in anonymous namespaces.
! .IP "\fB\-Wmissing\-field\-initializers\fR" 4
  .IX Item "-Wmissing-field-initializers"
! Warn if a structure's initializer has some fields missing.  For
  example, the following code causes such a warning, because
  \&\f(CW\*(C`x.h\*(C'\fR is implicitly zero:
  .Sp
--- 9610,9642 ----
  error alone, with \fB\-Wno\-error=declaration\-missing\-parameter\-type\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wmissing\-prototypes\fR (C and Objective\-C only)" 4
  .IX Item "-Wmissing-prototypes (C and Objective-C only)"
  Warn if a global function is defined without a previous prototype
  declaration.  This warning is issued even if the definition itself
  provides a prototype.  Use this option to detect global functions
  that do not have a matching prototype declaration in a header file.
! This option is not valid for C++ because all function declarations
! provide prototypes and a non\-matching declaration declares an
  overload rather than conflict with an earlier declaration.
! Use \fB\-Wmissing\-declarations\fR to detect missing declarations in C++.
! .IP "\fB\-Wmissing\-variable\-declarations\fR (C and Objective\-C only)" 4
  .IX Item "-Wmissing-variable-declarations (C and Objective-C only)"
  Warn if a global variable is defined without a previous declaration.
  Use this option to detect global variables that do not have a matching
  extern declaration in a header file.
! .IP \fB\-Wmissing\-declarations\fR 4
  .IX Item "-Wmissing-declarations"
  Warn if a global function is defined without a previous declaration.
  Do so even if the definition itself provides a prototype.
  Use this option to detect global functions that are not declared in
  header files.  In C, no warnings are issued for functions with previous
! non\-prototype declarations; use \fB\-Wmissing\-prototypes\fR to detect
! missing prototypes.  In C++, no warnings are issued for function templates,
  or for inline functions, or for functions in anonymous namespaces.
! .IP \fB\-Wmissing\-field\-initializers\fR 4
  .IX Item "-Wmissing-field-initializers"
! Warn if a structure\*(Aqs initializer has some fields missing.  For
  example, the following code causes such a warning, because
  \&\f(CW\*(C`x.h\*(C'\fR is implicitly zero:
  .Sp
*************** In C this option does not warn about the
*** 9728,9734 ****
  \&        struct s x = { 0 };
  .Ve
  .Sp
! Likewise, in \*(C+ this option does not warn about the empty { }
  initializer, for example:
  .Sp
  .Vb 2
--- 9661,9667 ----
  \&        struct s x = { 0 };
  .Ve
  .Sp
! Likewise, in C++ this option does not warn about the empty { }
  initializer, for example:
  .Sp
  .Vb 2
*************** initializer, for example:
*** 9738,9746 ****
  .Sp
  This warning is included in \fB\-Wextra\fR.  To get other \fB\-Wextra\fR
  warnings without this one, use \fB\-Wextra \-Wno\-missing\-field\-initializers\fR.
! .IP "\fB\-Wno\-missing\-requires\fR" 4
  .IX Item "-Wno-missing-requires"
! By default, the compiler warns about a concept-id appearing as a \*(C+20 simple-requirement:
  .Sp
  .Vb 1
  \&        bool satisfied = requires { C<T> };
--- 9671,9679 ----
  .Sp
  This warning is included in \fB\-Wextra\fR.  To get other \fB\-Wextra\fR
  warnings without this one, use \fB\-Wextra \-Wno\-missing\-field\-initializers\fR.
! .IP \fB\-Wno\-missing\-requires\fR 4
  .IX Item "-Wno-missing-requires"
! By default, the compiler warns about a concept\-id appearing as a C++20 simple\-requirement:
  .Sp
  .Vb 1
  \&        bool satisfied = requires { C<T> };
*************** so \fBsatisfied\fR is only true if conce
*** 9757,9763 ****
  type \fBT\fR.
  .Sp
  This warning can be disabled with \fB\-Wno\-missing\-requires\fR.
! .IP "\fB\-Wno\-missing\-template\-keyword\fR" 4
  .IX Item "-Wno-missing-template-keyword"
  The member access tokens ., \-> and :: must be followed by the \f(CW\*(C`template\*(C'\fR
  keyword if the parent object is dependent and the member being named is a
--- 9690,9696 ----
  type \fBT\fR.
  .Sp
  This warning can be disabled with \fB\-Wno\-missing\-requires\fR.
! .IP \fB\-Wno\-missing\-template\-keyword\fR 4
  .IX Item "-Wno-missing-template-keyword"
  The member access tokens ., \-> and :: must be followed by the \f(CW\*(C`template\*(C'\fR
  keyword if the parent object is dependent and the member being named is a
*************** template, even where m and N are integer
*** 9787,9818 ****
  .Ve
  .Sp
  This warning can be disabled with \fB\-Wno\-missing\-template\-keyword\fR.
! .IP "\fB\-Wno\-multichar\fR" 4
  .IX Item "-Wno-multichar"
! Do not warn if a multicharacter constant (\fB'\s-1FOOF\s0'\fR) is used.
! Usually they indicate a typo in the user's code, as they have
! implementation-defined values, and should not be used in portable code.
! .IP "\fB\-Wnormalized=\fR[\fBnone\fR|\fBid\fR|\fBnfc\fR|\fBnfkc\fR]" 4
  .IX Item "-Wnormalized=[none|id|nfc|nfkc]"
! In \s-1ISO C\s0 and \s-1ISO \*(C+,\s0 two identifiers are different if they are
  different sequences of characters.  However, sometimes when characters
! outside the basic \s-1ASCII\s0 character set are used, you can have two
  different character sequences that look the same.  To avoid confusion,
! the \s-1ISO 10646\s0 standard sets out some \fInormalization rules\fR which
  when applied ensure that two sequences that look the same are turned into
! the same sequence.  \s-1GCC\s0 can warn you if you are using identifiers that
  have not been normalized; this option controls that warning.
  .Sp
! There are four levels of warning supported by \s-1GCC.\s0  The default is
  \&\fB\-Wnormalized=nfc\fR, which warns about any identifier that is
! not in the \s-1ISO 10646 \*(L"C\*(R"\s0 normalized form, \fI\s-1NFC\s0\fR.  \s-1NFC\s0 is the
  recommended form for most uses.  It is equivalent to
  \&\fB\-Wnormalized\fR.
  .Sp
  Unfortunately, there are some characters allowed in identifiers by
! \&\s-1ISO C\s0 and \s-1ISO \*(C+\s0 that, when turned into \s-1NFC,\s0 are not allowed in
! identifiers.  That is, there's no way to use these symbols in portable
! \&\s-1ISO C\s0 or \*(C+ and have all your identifiers in \s-1NFC.\s0
  \&\fB\-Wnormalized=id\fR suppresses the warning for these characters.
  It is hoped that future versions of the standards involved will correct
  this, which is why this option is not the default.
--- 9720,9751 ----
  .Ve
  .Sp
  This warning can be disabled with \fB\-Wno\-missing\-template\-keyword\fR.
! .IP \fB\-Wno\-multichar\fR 4
  .IX Item "-Wno-multichar"
! Do not warn if a multicharacter constant (\fB\*(AqFOOF\*(Aq\fR) is used.
! Usually they indicate a typo in the user\*(Aqs code, as they have
! implementation\-defined values, and should not be used in portable code.
! .IP \fB\-Wnormalized=\fR[\fBnone\fR|\fBid\fR|\fBnfc\fR|\fBnfkc\fR] 4
  .IX Item "-Wnormalized=[none|id|nfc|nfkc]"
! In ISO C and ISO C++, two identifiers are different if they are
  different sequences of characters.  However, sometimes when characters
! outside the basic ASCII character set are used, you can have two
  different character sequences that look the same.  To avoid confusion,
! the ISO 10646 standard sets out some \fInormalization rules\fR which
  when applied ensure that two sequences that look the same are turned into
! the same sequence.  GCC can warn you if you are using identifiers that
  have not been normalized; this option controls that warning.
  .Sp
! There are four levels of warning supported by GCC.  The default is
  \&\fB\-Wnormalized=nfc\fR, which warns about any identifier that is
! not in the ISO 10646 "C" normalized form, \fINFC\fR.  NFC is the
  recommended form for most uses.  It is equivalent to
  \&\fB\-Wnormalized\fR.
  .Sp
  Unfortunately, there are some characters allowed in identifiers by
! ISO C and ISO C++ that, when turned into NFC, are not allowed in
! identifiers.  That is, there\*(Aqs no way to use these symbols in portable
! ISO C or C++ and have all your identifiers in NFC.
  \&\fB\-Wnormalized=id\fR suppresses the warning for these characters.
  It is hoped that future versions of the standards involved will correct
  this, which is why this option is not the default.
*************** this, which is why this option is not th
*** 9820,9882 ****
  You can switch the warning off for all characters by writing
  \&\fB\-Wnormalized=none\fR or \fB\-Wno\-normalized\fR.  You should
  only do this if you are using some other normalization scheme (like
! \&\*(L"D\*(R"), because otherwise you can easily create bugs that are
  literally impossible to see.
  .Sp
! Some characters in \s-1ISO 10646\s0 have distinct meanings but look identical
  in some fonts or display methodologies, especially once formatting has
! been applied.  For instance \f(CW\*(C`\eu207F\*(C'\fR, \*(L"\s-1SUPERSCRIPT LATIN SMALL
! LETTER N\*(R",\s0 displays just like a regular \f(CW\*(C`n\*(C'\fR that has been
! placed in a superscript.  \s-1ISO 10646\s0 defines the \fI\s-1NFKC\s0\fR
  normalization scheme to convert all these into a standard form as
! well, and \s-1GCC\s0 warns if your code is not in \s-1NFKC\s0 if you use
  \&\fB\-Wnormalized=nfkc\fR.  This warning is comparable to warning
  about every identifier that contains the letter O because it might be
  confused with the digit 0, and so is not the default, but may be
  useful as a local coding convention if the programming environment
  cannot be fixed to display these characters distinctly.
! .IP "\fB\-Wno\-attribute\-warning\fR" 4
  .IX Item "-Wno-attribute-warning"
  Do not warn about usage of functions
  declared with \f(CW\*(C`warning\*(C'\fR attribute.  By default, this warning is
  enabled.  \fB\-Wno\-attribute\-warning\fR can be used to disable the
  warning or \fB\-Wno\-error=attribute\-warning\fR can be used to
  disable the error when compiled with \fB\-Werror\fR flag.
! .IP "\fB\-Wno\-deprecated\fR" 4
  .IX Item "-Wno-deprecated"
  Do not warn about usage of deprecated features.
  .Sp
! In \*(C+, explicitly specifying \fB\-Wdeprecated\fR also enables
  warnings about some features that are deprecated in later language
  standards, specifically \fB\-Wcomma\-subscript\fR,
  \&\fB\-Wvolatile\fR, \fB\-Wdeprecated\-enum\-float\-conversion\fR,
  \&\fB\-Wdeprecated\-enum\-enum\-conversion\fR,
  \&\fB\-Wdeprecated\-literal\-operator\fR, and
  \&\fB\-Wdeprecated\-variadic\-comma\-omission\fR.
! .IP "\fB\-Wno\-deprecated\-declarations\fR" 4
  .IX Item "-Wno-deprecated-declarations"
  Do not warn about uses of functions,
  variables, and types marked as deprecated by using the \f(CW\*(C`deprecated\*(C'\fR
  attribute.
! .IP "\fB\-Wno\-overflow\fR" 4
  .IX Item "-Wno-overflow"
! Do not warn about compile-time overflow in constant expressions.
! .IP "\fB\-Wno\-odr\fR" 4
  .IX Item "-Wno-odr"
! Warn about One Definition Rule violations during link-time optimization.
  Enabled by default.
! .IP "\fB\-Wopenacc\-parallelism\fR" 4
  .IX Item "-Wopenacc-parallelism"
  Warn about potentially suboptimal choices related to OpenACC parallelism.
! .IP "\fB\-Wno\-openmp\fR" 4
  .IX Item "-Wno-openmp"
  Warn about suspicious OpenMP code.
! .IP "\fB\-Wopenmp\-simd\fR" 4
  .IX Item "-Wopenmp-simd"
  Warn if the vectorizer cost model overrides the OpenMP
  simd directive set by user.  The \fB\-fsimd\-cost\-model=unlimited\fR
  option can be used to relax the cost model.
! .IP "\fB\-Woverride\-init\fR (C and Objective-C only)" 4
  .IX Item "-Woverride-init (C and Objective-C only)"
  Warn if an initialized field without side effects is overridden when
  using designated initializers.
--- 9753,9815 ----
  You can switch the warning off for all characters by writing
  \&\fB\-Wnormalized=none\fR or \fB\-Wno\-normalized\fR.  You should
  only do this if you are using some other normalization scheme (like
! "D"), because otherwise you can easily create bugs that are
  literally impossible to see.
  .Sp
! Some characters in ISO 10646 have distinct meanings but look identical
  in some fonts or display methodologies, especially once formatting has
! been applied.  For instance \f(CW\*(C`\eu207F\*(C'\fR, "SUPERSCRIPT LATIN SMALL
! LETTER N", displays just like a regular \f(CW\*(C`n\*(C'\fR that has been
! placed in a superscript.  ISO 10646 defines the \fINFKC\fR
  normalization scheme to convert all these into a standard form as
! well, and GCC warns if your code is not in NFKC if you use
  \&\fB\-Wnormalized=nfkc\fR.  This warning is comparable to warning
  about every identifier that contains the letter O because it might be
  confused with the digit 0, and so is not the default, but may be
  useful as a local coding convention if the programming environment
  cannot be fixed to display these characters distinctly.
! .IP \fB\-Wno\-attribute\-warning\fR 4
  .IX Item "-Wno-attribute-warning"
  Do not warn about usage of functions
  declared with \f(CW\*(C`warning\*(C'\fR attribute.  By default, this warning is
  enabled.  \fB\-Wno\-attribute\-warning\fR can be used to disable the
  warning or \fB\-Wno\-error=attribute\-warning\fR can be used to
  disable the error when compiled with \fB\-Werror\fR flag.
! .IP \fB\-Wno\-deprecated\fR 4
  .IX Item "-Wno-deprecated"
  Do not warn about usage of deprecated features.
  .Sp
! In C++, explicitly specifying \fB\-Wdeprecated\fR also enables
  warnings about some features that are deprecated in later language
  standards, specifically \fB\-Wcomma\-subscript\fR,
  \&\fB\-Wvolatile\fR, \fB\-Wdeprecated\-enum\-float\-conversion\fR,
  \&\fB\-Wdeprecated\-enum\-enum\-conversion\fR,
  \&\fB\-Wdeprecated\-literal\-operator\fR, and
  \&\fB\-Wdeprecated\-variadic\-comma\-omission\fR.
! .IP \fB\-Wno\-deprecated\-declarations\fR 4
  .IX Item "-Wno-deprecated-declarations"
  Do not warn about uses of functions,
  variables, and types marked as deprecated by using the \f(CW\*(C`deprecated\*(C'\fR
  attribute.
! .IP \fB\-Wno\-overflow\fR 4
  .IX Item "-Wno-overflow"
! Do not warn about compile\-time overflow in constant expressions.
! .IP \fB\-Wno\-odr\fR 4
  .IX Item "-Wno-odr"
! Warn about One Definition Rule violations during link\-time optimization.
  Enabled by default.
! .IP \fB\-Wopenacc\-parallelism\fR 4
  .IX Item "-Wopenacc-parallelism"
  Warn about potentially suboptimal choices related to OpenACC parallelism.
! .IP \fB\-Wno\-openmp\fR 4
  .IX Item "-Wno-openmp"
  Warn about suspicious OpenMP code.
! .IP \fB\-Wopenmp\-simd\fR 4
  .IX Item "-Wopenmp-simd"
  Warn if the vectorizer cost model overrides the OpenMP
  simd directive set by user.  The \fB\-fsimd\-cost\-model=unlimited\fR
  option can be used to relax the cost model.
! .IP "\fB\-Woverride\-init\fR (C and Objective\-C only)" 4
  .IX Item "-Woverride-init (C and Objective-C only)"
  Warn if an initialized field without side effects is overridden when
  using designated initializers.
*************** using designated initializers.
*** 9884,9898 ****
  This warning is included in \fB\-Wextra\fR.  To get other
  \&\fB\-Wextra\fR warnings without this one, use \fB\-Wextra
  \&\-Wno\-override\-init\fR.
! .IP "\fB\-Wno\-override\-init\-side\-effects\fR (C and Objective-C only)" 4
  .IX Item "-Wno-override-init-side-effects (C and Objective-C only)"
  Do not warn if an initialized field with side effects is overridden when
  using designated initializers.  This warning is enabled by default.
! .IP "\fB\-Wpacked\fR" 4
  .IX Item "-Wpacked"
  Warn if a structure is given the packed attribute, but the packed
  attribute has no effect on the layout or size of the structure.
! Such structures may be mis-aligned for little benefit.  For
  instance, in this code, the variable \f(CW\*(C`f.x\*(C'\fR in \f(CW\*(C`struct bar\*(C'\fR
  is misaligned even though \f(CW\*(C`struct bar\*(C'\fR does not itself
  have the packed attribute:
--- 9817,9831 ----
  This warning is included in \fB\-Wextra\fR.  To get other
  \&\fB\-Wextra\fR warnings without this one, use \fB\-Wextra
  \&\-Wno\-override\-init\fR.
! .IP "\fB\-Wno\-override\-init\-side\-effects\fR (C and Objective\-C only)" 4
  .IX Item "-Wno-override-init-side-effects (C and Objective-C only)"
  Do not warn if an initialized field with side effects is overridden when
  using designated initializers.  This warning is enabled by default.
! .IP \fB\-Wpacked\fR 4
  .IX Item "-Wpacked"
  Warn if a structure is given the packed attribute, but the packed
  attribute has no effect on the layout or size of the structure.
! Such structures may be mis\-aligned for little benefit.  For
  instance, in this code, the variable \f(CW\*(C`f.x\*(C'\fR in \f(CW\*(C`struct bar\*(C'\fR
  is misaligned even though \f(CW\*(C`struct bar\*(C'\fR does not itself
  have the packed attribute:
*************** have the packed attribute:
*** 9907,9918 ****
  \&          struct foo f;
  \&        };
  .Ve
! .IP "\fB\-Wnopacked\-bitfield\-compat\fR" 4
  .IX Item "-Wnopacked-bitfield-compat"
! The 4.1, 4.2 and 4.3 series of \s-1GCC\s0 ignore the \f(CW\*(C`packed\*(C'\fR attribute
! on bit-fields of type \f(CW\*(C`char\*(C'\fR.  This was fixed in \s-1GCC 4.4\s0 but
! the change can lead to differences in the structure layout.  \s-1GCC\s0
! informs you when the offset of such a field has changed in \s-1GCC 4.4.\s0
  For example there is no longer a 4\-bit padding between field \f(CW\*(C`a\*(C'\fR
  and \f(CW\*(C`b\*(C'\fR in this structure:
  .Sp
--- 9840,9851 ----
  \&          struct foo f;
  \&        };
  .Ve
! .IP \fB\-Wnopacked\-bitfield\-compat\fR 4
  .IX Item "-Wnopacked-bitfield-compat"
! The 4.1, 4.2 and 4.3 series of GCC ignore the \f(CW\*(C`packed\*(C'\fR attribute
! on bit\-fields of type \f(CW\*(C`char\*(C'\fR.  This was fixed in GCC 4.4 but
! the change can lead to differences in the structure layout.  GCC
! informs you when the offset of such a field has changed in GCC 4.4.
  For example there is no longer a 4\-bit padding between field \f(CW\*(C`a\*(C'\fR
  and \f(CW\*(C`b\*(C'\fR in this structure:
  .Sp
*************** and \f(CW\*(C`b\*(C'\fR in this structur
*** 9926,9933 ****
  .Sp
  This warning is enabled by default.  Use
  \&\fB\-Wno\-packed\-bitfield\-compat\fR to disable this warning.
! .IP "\fB\-Wpacked\-not\-aligned\fR (C, \*(C+, Objective-C and Objective\-\*(C+ only)" 4
! .IX Item "-Wpacked-not-aligned (C, , Objective-C and Objective- only)"
  Warn if a structure field with explicitly specified alignment in a
  packed struct or union is misaligned.  For example, a warning will
  be issued on \f(CW\*(C`struct S\*(C'\fR, like, \f(CW\*(C`warning: alignment 1 of
--- 9859,9866 ----
  .Sp
  This warning is enabled by default.  Use
  \&\fB\-Wno\-packed\-bitfield\-compat\fR to disable this warning.
! .IP "\fB\-Wpacked\-not\-aligned\fR (C, C++, Objective\-C and Objective\-C++ only)" 4
! .IX Item "-Wpacked-not-aligned (C, C++, Objective-C and Objective-C++ only)"
  Warn if a structure field with explicitly specified alignment in a
  packed struct or union is misaligned.  For example, a warning will
  be issued on \f(CW\*(C`struct S\*(C'\fR, like, \f(CW\*(C`warning: alignment 1 of
*************** be issued on \f(CW\*(C`struct S\*(C'\fR,
*** 9941,9964 ****
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wpadded\fR" 4
  .IX Item "-Wpadded"
  Warn if padding is included in a structure, either to align an element
  of the structure or to align the whole structure.  Sometimes when this
  happens it is possible to rearrange the fields of the structure to
  reduce the padding and so make the structure smaller.
! .IP "\fB\-Wredundant\-decls\fR" 4
  .IX Item "-Wredundant-decls"
  Warn if anything is declared more than once in the same scope, even in
  cases where multiple declaration is valid and changes nothing.
! .IP "\fB\-Wrestrict\fR" 4
  .IX Item "-Wrestrict"
  Warn when an object referenced by a \f(CW\*(C`restrict\*(C'\fR\-qualified parameter
! (or, in \*(C+, a \f(CW\*(C`_\|_restrict\*(C'\fR\-qualified parameter) is aliased by another
  argument, or when copies between such objects overlap.  For example,
  the call to the \f(CW\*(C`strcpy\*(C'\fR function below attempts to truncate the string
  by replacing its initial characters with the last four.  However, because
! the call writes the terminating \s-1NUL\s0 into \f(CW\*(C`a[4]\*(C'\fR, the copies overlap and
  the call is diagnosed.
  .Sp
  .Vb 6
--- 9874,9897 ----
  .Ve
  .Sp
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wpadded\fR 4
  .IX Item "-Wpadded"
  Warn if padding is included in a structure, either to align an element
  of the structure or to align the whole structure.  Sometimes when this
  happens it is possible to rearrange the fields of the structure to
  reduce the padding and so make the structure smaller.
! .IP \fB\-Wredundant\-decls\fR 4
  .IX Item "-Wredundant-decls"
  Warn if anything is declared more than once in the same scope, even in
  cases where multiple declaration is valid and changes nothing.
! .IP \fB\-Wrestrict\fR 4
  .IX Item "-Wrestrict"
  Warn when an object referenced by a \f(CW\*(C`restrict\*(C'\fR\-qualified parameter
! (or, in C++, a \f(CW\*(C`_\|_restrict\*(C'\fR\-qualified parameter) is aliased by another
  argument, or when copies between such objects overlap.  For example,
  the call to the \f(CW\*(C`strcpy\*(C'\fR function below attempts to truncate the string
  by replacing its initial characters with the last four.  However, because
! the call writes the terminating NUL into \f(CW\*(C`a[4]\*(C'\fR, the copies overlap and
  the call is diagnosed.
  .Sp
  .Vb 6
*************** the call is diagnosed.
*** 9973,9982 ****
  The \fB\-Wrestrict\fR option detects some instances of simple overlap
  even without optimization but works best at \fB\-O2\fR and above.  It
  is included in \fB\-Wall\fR.
! .IP "\fB\-Wnested\-externs\fR (C and Objective-C only)" 4
  .IX Item "-Wnested-externs (C and Objective-C only)"
  Warn if an \f(CW\*(C`extern\*(C'\fR declaration is encountered within a function.
! .IP "\fB\-Winline\fR" 4
  .IX Item "-Winline"
  Warn if a function that is declared as inline cannot be inlined.
  Even with this option, the compiler does not warn about failures to
--- 9906,9915 ----
  The \fB\-Wrestrict\fR option detects some instances of simple overlap
  even without optimization but works best at \fB\-O2\fR and above.  It
  is included in \fB\-Wall\fR.
! .IP "\fB\-Wnested\-externs\fR (C and Objective\-C only)" 4
  .IX Item "-Wnested-externs (C and Objective-C only)"
  Warn if an \f(CW\*(C`extern\*(C'\fR declaration is encountered within a function.
! .IP \fB\-Winline\fR 4
  .IX Item "-Winline"
  Warn if a function that is declared as inline cannot be inlined.
  Even with this option, the compiler does not warn about failures to
*************** the size of the function being inlined a
*** 9988,9997 ****
  that has already been done in the current function.  Therefore,
  seemingly insignificant changes in the source program can cause the
  warnings produced by \fB\-Winline\fR to appear or disappear.
! .IP "\fB\-Winterference\-size\fR" 4
  .IX Item "-Winterference-size"
! Warn about use of \*(C+17 \f(CW\*(C`std::hardware_destructive_interference_size\*(C'\fR
! without specifying its value with \fB\-\-param destructive-interference-size\fR.
  Also warn about questionable values for that option.
  .Sp
  This variable is intended to be used for controlling class layout, to
--- 9921,9930 ----
  that has already been done in the current function.  Therefore,
  seemingly insignificant changes in the source program can cause the
  warnings produced by \fB\-Winline\fR to appear or disappear.
! .IP \fB\-Winterference\-size\fR 4
  .IX Item "-Winterference-size"
! Warn about use of C++17 \f(CW\*(C`std::hardware_destructive_interference_size\*(C'\fR
! without specifying its value with \fB\-\-param destructive\-interference\-size\fR.
  Also warn about questionable values for that option.
  .Sp
  This variable is intended to be used for controlling class layout, to
*************** avoid false sharing in concurrent code:
*** 10007,10081 ****
  .Ve
  .Sp
  Here \fBone\fR and \fBtwo\fR are intended to be far enough apart
! that stores to one won't require accesses to the other to reload the
  cache line.
  .Sp
! By default, \fB\-\-param destructive-interference-size\fR and
! \&\fB\-\-param constructive-interference-size\fR are set based on the
  current \fB\-mtune\fR option, typically to the L1 cache line size
! for the particular target \s-1CPU,\s0 sometimes to a range if tuning for a
! generic target.  So all translation units that depend on \s-1ABI\s0
  compatibility for the use of these variables must be compiled with
  the same \fB\-mtune\fR (or \fB\-mcpu\fR).
  .Sp
! If \s-1ABI\s0 stability is important, such as if the use is in a header for a
  library, you should probably not use the hardware interference size
  variables at all.  Alternatively, you can force a particular value
  with \fB\-\-param\fR.
  .Sp
! If you are confident that your use of the variable does not affect \s-1ABI\s0
  outside a single build of your project, you can turn off the warning
  with \fB\-Wno\-interference\-size\fR.
! .IP "\fB\-Wint\-in\-bool\-context\fR" 4
  .IX Item "-Wint-in-bool-context"
  Warn for suspicious use of integer values where boolean values are expected,
! such as conditional expressions (?:) using non-boolean integer constants in
  boolean context, like \f(CW\*(C`if (a <= b ? 2 : 3)\*(C'\fR.  Or left shifting of signed
  integers in boolean context, like \f(CW\*(C`for (a = 0; 1 << a; a++);\*(C'\fR.  Likewise
  for all kinds of multiplications regardless of the data type.
  This warning is enabled by \fB\-Wall\fR.
! .IP "\fB\-Wno\-int\-to\-pointer\-cast\fR" 4
  .IX Item "-Wno-int-to-pointer-cast"
  Suppress warnings from casts to pointer type of an integer of a
! different size. In \*(C+, casting to a pointer type of smaller size is
! an error. \fBWint-to-pointer-cast\fR is enabled by default.
! .IP "\fB\-Wno\-pointer\-to\-int\-cast\fR (C and Objective-C only)" 4
  .IX Item "-Wno-pointer-to-int-cast (C and Objective-C only)"
  Suppress warnings from casts from a pointer to an integer type of a
  different size.
! .IP "\fB\-Winvalid\-pch\fR" 4
  .IX Item "-Winvalid-pch"
  Warn if a precompiled header is found in
  the search path but cannot be used.
! .IP "\fB\-Winvalid\-utf8\fR" 4
  .IX Item "-Winvalid-utf8"
! Warn if an invalid \s-1UTF\-8\s0 character is found.
! This warning is on by default for \*(C+23 if \fB\-finput\-charset=UTF\-8\fR
  is used and turned into error with \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wno\-unicode\fR" 4
  .IX Item "-Wno-unicode"
! Don't diagnose invalid forms of delimited or named escape sequences which are
  treated as separate tokens.  \fBWunicode\fR is enabled by default.
! .IP "\fB\-Wlong\-long\fR" 4
  .IX Item "-Wlong-long"
  Warn if \f(CW\*(C`long long\*(C'\fR type is used.  This is enabled by either
! \&\fB\-Wpedantic\fR or \fB\-Wtraditional\fR in \s-1ISO C90\s0 and \*(C+98
  modes.  To inhibit the warning messages, use \fB\-Wno\-long\-long\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wvariadic\-macros\fR" 4
  .IX Item "-Wvariadic-macros"
! Warn if variadic macros are used in \s-1ISO C90\s0 mode, or if the \s-1GNU\s0
! alternate syntax is used in \s-1ISO C99\s0 mode.  This is enabled by either
  \&\fB\-Wpedantic\fR or \fB\-Wtraditional\fR.  To inhibit the warning
  messages, use \fB\-Wno\-variadic\-macros\fR.
! .IP "\fB\-Wno\-varargs\fR" 4
  .IX Item "-Wno-varargs"
  Do not warn upon questionable usage of the macros used to handle variable
  arguments like \f(CW\*(C`va_start\*(C'\fR.  These warnings are enabled by default.
! .IP "\fB\-Wvector\-operation\-performance\fR" 4
  .IX Item "-Wvector-operation-performance"
! Warn if vector operation is not implemented via \s-1SIMD\s0 capabilities of the
  architecture.  Mainly useful for the performance tuning.
  Vector operation can be implemented \f(CW\*(C`piecewise\*(C'\fR, which means that the
  scalar operation is performed on every vector element;
--- 9940,10014 ----
  .Ve
  .Sp
  Here \fBone\fR and \fBtwo\fR are intended to be far enough apart
! that stores to one won\*(Aqt require accesses to the other to reload the
  cache line.
  .Sp
! By default, \fB\-\-param destructive\-interference\-size\fR and
! \&\fB\-\-param constructive\-interference\-size\fR are set based on the
  current \fB\-mtune\fR option, typically to the L1 cache line size
! for the particular target CPU, sometimes to a range if tuning for a
! generic target.  So all translation units that depend on ABI
  compatibility for the use of these variables must be compiled with
  the same \fB\-mtune\fR (or \fB\-mcpu\fR).
  .Sp
! If ABI stability is important, such as if the use is in a header for a
  library, you should probably not use the hardware interference size
  variables at all.  Alternatively, you can force a particular value
  with \fB\-\-param\fR.
  .Sp
! If you are confident that your use of the variable does not affect ABI
  outside a single build of your project, you can turn off the warning
  with \fB\-Wno\-interference\-size\fR.
! .IP \fB\-Wint\-in\-bool\-context\fR 4
  .IX Item "-Wint-in-bool-context"
  Warn for suspicious use of integer values where boolean values are expected,
! such as conditional expressions (?:) using non\-boolean integer constants in
  boolean context, like \f(CW\*(C`if (a <= b ? 2 : 3)\*(C'\fR.  Or left shifting of signed
  integers in boolean context, like \f(CW\*(C`for (a = 0; 1 << a; a++);\*(C'\fR.  Likewise
  for all kinds of multiplications regardless of the data type.
  This warning is enabled by \fB\-Wall\fR.
! .IP \fB\-Wno\-int\-to\-pointer\-cast\fR 4
  .IX Item "-Wno-int-to-pointer-cast"
  Suppress warnings from casts to pointer type of an integer of a
! different size. In C++, casting to a pointer type of smaller size is
! an error. \fBWint\-to\-pointer\-cast\fR is enabled by default.
! .IP "\fB\-Wno\-pointer\-to\-int\-cast\fR (C and Objective\-C only)" 4
  .IX Item "-Wno-pointer-to-int-cast (C and Objective-C only)"
  Suppress warnings from casts from a pointer to an integer type of a
  different size.
! .IP \fB\-Winvalid\-pch\fR 4
  .IX Item "-Winvalid-pch"
  Warn if a precompiled header is found in
  the search path but cannot be used.
! .IP \fB\-Winvalid\-utf8\fR 4
  .IX Item "-Winvalid-utf8"
! Warn if an invalid UTF\-8 character is found.
! This warning is on by default for C++23 if \fB\-finput\-charset=UTF\-8\fR
  is used and turned into error with \fB\-pedantic\-errors\fR.
! .IP \fB\-Wno\-unicode\fR 4
  .IX Item "-Wno-unicode"
! Don\*(Aqt diagnose invalid forms of delimited or named escape sequences which are
  treated as separate tokens.  \fBWunicode\fR is enabled by default.
! .IP \fB\-Wlong\-long\fR 4
  .IX Item "-Wlong-long"
  Warn if \f(CW\*(C`long long\*(C'\fR type is used.  This is enabled by either
! \&\fB\-Wpedantic\fR or \fB\-Wtraditional\fR in ISO C90 and C++98
  modes.  To inhibit the warning messages, use \fB\-Wno\-long\-long\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP \fB\-Wvariadic\-macros\fR 4
  .IX Item "-Wvariadic-macros"
! Warn if variadic macros are used in ISO C90 mode, or if the GNU
! alternate syntax is used in ISO C99 mode.  This is enabled by either
  \&\fB\-Wpedantic\fR or \fB\-Wtraditional\fR.  To inhibit the warning
  messages, use \fB\-Wno\-variadic\-macros\fR.
! .IP \fB\-Wno\-varargs\fR 4
  .IX Item "-Wno-varargs"
  Do not warn upon questionable usage of the macros used to handle variable
  arguments like \f(CW\*(C`va_start\*(C'\fR.  These warnings are enabled by default.
! .IP \fB\-Wvector\-operation\-performance\fR 4
  .IX Item "-Wvector-operation-performance"
! Warn if vector operation is not implemented via SIMD capabilities of the
  architecture.  Mainly useful for the performance tuning.
  Vector operation can be implemented \f(CW\*(C`piecewise\*(C'\fR, which means that the
  scalar operation is performed on every vector element;
*************** scalar operation is performed on every v
*** 10083,10124 ****
  using scalars of wider type, which normally is more performance efficient;
  and \f(CW\*(C`as a single scalar\*(C'\fR, which means that vector fits into a
  scalar type.
! .IP "\fB\-Wvla\fR" 4
  .IX Item "-Wvla"
! Warn if a variable-length array is used in the code.
  \&\fB\-Wno\-vla\fR prevents the \fB\-Wpedantic\fR warning of
! the variable-length array.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wvla\-larger\-than=\fR\fIbyte-size\fR" 4
  .IX Item "-Wvla-larger-than=byte-size"
  If this option is used, the compiler warns for declarations of
! variable-length arrays whose size is either unbounded, or bounded
! by an argument that allows the array size to exceed \fIbyte-size\fR
! bytes.  This is similar to how \fB\-Walloca\-larger\-than=\fR\fIbyte-size\fR
! works, but with variable-length arrays.
  .Sp
! Note that \s-1GCC\s0 may optimize small variable-length arrays of a known
  value into plain arrays, so this warning may not get triggered for
  such arrays.
  .Sp
! \&\fB\-Wvla\-larger\-than=\fR\fB\s-1PTRDIFF_MAX\s0\fR is enabled by default but
  is typically only effective when \fB\-ftree\-vrp\fR is active (default
  for \fB\-O2\fR and above).
  .Sp
! See also \fB\-Walloca\-larger\-than=\fR\fIbyte-size\fR.
! .IP "\fB\-Wno\-vla\-larger\-than\fR" 4
  .IX Item "-Wno-vla-larger-than"
  Disable \fB\-Wvla\-larger\-than=\fR warnings.  The option is equivalent
! to \fB\-Wvla\-larger\-than=\fR\fB\s-1SIZE_MAX\s0\fR or larger.
! .IP "\fB\-Wvla\-parameter\fR" 4
  .IX Item "-Wvla-parameter"
  Warn about redeclarations of functions involving arguments of Variable
  Length Array types of inconsistent kinds or forms, and enable the detection
! of out-of-bounds accesses to such parameters by warnings such as
  \&\fB\-Warray\-bounds\fR.
  .Sp
! If the first function declaration uses the \s-1VLA\s0 form the bound specified
  in the array is assumed to be the minimum number of elements expected to
  be provided in calls to the function and the maximum number of elements
  accessed by it.  Failing to provide arguments of sufficient size or
--- 10016,10057 ----
  using scalars of wider type, which normally is more performance efficient;
  and \f(CW\*(C`as a single scalar\*(C'\fR, which means that vector fits into a
  scalar type.
! .IP \fB\-Wvla\fR 4
  .IX Item "-Wvla"
! Warn if a variable\-length array is used in the code.
  \&\fB\-Wno\-vla\fR prevents the \fB\-Wpedantic\fR warning of
! the variable\-length array.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP \fB\-Wvla\-larger\-than=\fR\fIbyte\-size\fR 4
  .IX Item "-Wvla-larger-than=byte-size"
  If this option is used, the compiler warns for declarations of
! variable\-length arrays whose size is either unbounded, or bounded
! by an argument that allows the array size to exceed \fIbyte\-size\fR
! bytes.  This is similar to how \fB\-Walloca\-larger\-than=\fR\fIbyte\-size\fR
! works, but with variable\-length arrays.
  .Sp
! Note that GCC may optimize small variable\-length arrays of a known
  value into plain arrays, so this warning may not get triggered for
  such arrays.
  .Sp
! \&\fB\-Wvla\-larger\-than=\fR\fBPTRDIFF_MAX\fR is enabled by default but
  is typically only effective when \fB\-ftree\-vrp\fR is active (default
  for \fB\-O2\fR and above).
  .Sp
! See also \fB\-Walloca\-larger\-than=\fR\fIbyte\-size\fR.
! .IP \fB\-Wno\-vla\-larger\-than\fR 4
  .IX Item "-Wno-vla-larger-than"
  Disable \fB\-Wvla\-larger\-than=\fR warnings.  The option is equivalent
! to \fB\-Wvla\-larger\-than=\fR\fBSIZE_MAX\fR or larger.
! .IP \fB\-Wvla\-parameter\fR 4
  .IX Item "-Wvla-parameter"
  Warn about redeclarations of functions involving arguments of Variable
  Length Array types of inconsistent kinds or forms, and enable the detection
! of out\-of\-bounds accesses to such parameters by warnings such as
  \&\fB\-Warray\-bounds\fR.
  .Sp
! If the first function declaration uses the VLA form the bound specified
  in the array is assumed to be the minimum number of elements expected to
  be provided in calls to the function and the maximum number of elements
  accessed by it.  Failing to provide arguments of sufficient size or
*************** accessing more than the maximum number o
*** 10127,10134 ****
  For example, the warning triggers for the following redeclarations because
  the first one allows an array of any size to be passed to \f(CW\*(C`f\*(C'\fR while
  the second one specifies that the array argument must have at least \f(CW\*(C`n\*(C'\fR
! elements.  In addition, calling \f(CW\*(C`f\*(C'\fR with the associated \s-1VLA\s0 bound
! parameter in excess of the actual \s-1VLA\s0 bound triggers a warning as well.
  .Sp
  .Vb 3
  \&        void f (int n, int[n]);
--- 10060,10067 ----
  For example, the warning triggers for the following redeclarations because
  the first one allows an array of any size to be passed to \f(CW\*(C`f\*(C'\fR while
  the second one specifies that the array argument must have at least \f(CW\*(C`n\*(C'\fR
! elements.  In addition, calling \f(CW\*(C`f\*(C'\fR with the associated VLA bound
! parameter in excess of the actual VLA bound triggers a warning as well.
  .Sp
  .Vb 3
  \&        void f (int n, int[n]);
*************** parameter in excess of the actual \s-1VL
*** 10149,10238 ****
  \&\fB\-Wvla\-parameter\fR is included in \fB\-Wall\fR.  The
  \&\fB\-Warray\-parameter\fR option triggers warnings for similar problems
  involving ordinary array arguments.
! .IP "\fB\-Wvolatile\-register\-var\fR" 4
  .IX Item "-Wvolatile-register-var"
  Warn if a register variable is declared volatile.  The volatile
  modifier does not inhibit all optimizations that may eliminate reads
  and/or writes to register variables.  This warning is enabled by
  \&\fB\-Wall\fR.
! .IP "\fB\-Wno\-xor\-used\-as\-pow\fR (C, \*(C+, Objective-C and Objective\-\*(C+ only)" 4
! .IX Item "-Wno-xor-used-as-pow (C, , Objective-C and Objective- only)"
  Disable warnings about uses of \f(CW\*(C`^\*(C'\fR, the exclusive or operator,
  where it appears the code meant exponentiation.
  Specifically, the warning occurs when the
! left-hand side is the decimal constant 2 or 10 and the right-hand side
  is also a decimal constant.
  .Sp
! In C and \*(C+, \f(CW\*(C`^\*(C'\fR means exclusive or, whereas in some other languages
! (e.g. TeX and some versions of \s-1BASIC\s0) it means exponentiation.
  .Sp
  This warning can be silenced by converting one of the operands to
  hexadecimal as well as by compiling with \fB\-Wno\-xor\-used\-as\-pow\fR.
! .IP "\fB\-Wdisabled\-optimization\fR" 4
  .IX Item "-Wdisabled-optimization"
  Warn if a requested optimization pass is disabled.  This warning does
  not generally indicate that there is anything wrong with your code; it
! merely indicates that \s-1GCC\s0's optimizers are unable to handle the code
  effectively.  Often, the problem is that your code is too big or too
! complex; \s-1GCC\s0 refuses to optimize programs when the optimization
  itself is likely to take inordinate amounts of time.
! .IP "\fB\-Wpointer\-sign\fR (C and Objective-C only)" 4
  .IX Item "-Wpointer-sign (C and Objective-C only)"
  Warn for pointer argument passing or assignment with different signedness.
! This option is only supported for C and Objective-C.  It is implied by
  \&\fB\-Wall\fR and by \fB\-Wpedantic\fR, which can be disabled with
  \&\fB\-Wno\-pointer\-sign\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP "\fB\-Wstack\-protector\fR" 4
  .IX Item "-Wstack-protector"
  This option is only active when \fB\-fstack\-protector\fR is active.  It
  warns about functions that are not protected against stack smashing.
! .IP "\fB\-Woverlength\-strings\fR" 4
  .IX Item "-Woverlength-strings"
! Warn about string constants that are longer than the \*(L"minimum
! maximum\*(R" length specified in the C standard.  Modern compilers
  generally allow string constants that are much longer than the
! standard's minimum limit, but very portable programs should avoid
  using longer strings.
  .Sp
  The limit applies \fIafter\fR string constant concatenation, and does
! not count the trailing \s-1NUL.\s0  In C90, the limit was 509 characters; in
! C99, it was raised to 4095.  \*(C+98 does not specify a normative
! minimum maximum, so we do not diagnose overlength strings in \*(C+.
  .Sp
  This option is implied by \fB\-Wpedantic\fR, and can be disabled with
  \&\fB\-Wno\-overlength\-strings\fR.
! .IP "\fB\-Wunsuffixed\-float\-constants\fR (C and Objective-C only)" 4
  .IX Item "-Wunsuffixed-float-constants (C and Objective-C only)"
  Issue a warning for any floating constant that does not have
  a suffix.  When used together with \fB\-Wsystem\-headers\fR it
  warns about such constants in system header files.  This can be useful
  when preparing code to use with the \f(CW\*(C`FLOAT_CONST_DECIMAL64\*(C'\fR pragma
! from the decimal floating-point extension to C99.
! .IP "\fB\-Wno\-lto\-type\-mismatch\fR" 4
  .IX Item "-Wno-lto-type-mismatch"
! During the link-time optimization, do not warn about type mismatches in
  global declarations from different compilation units.
  Requires \fB\-flto\fR to be enabled.  Enabled by default.
! .IP "\fB\-Wno\-designated\-init\fR (C and Objective-C only)" 4
  .IX Item "-Wno-designated-init (C and Objective-C only)"
  Suppress warnings when a positional initializer is used to initialize
  a structure that has been marked with the \f(CW\*(C`designated_init\*(C'\fR
  attribute.
  .SS "Options That Control Static Analysis"
  .IX Subsection "Options That Control Static Analysis"
! .IP "\fB\-fanalyzer\fR" 4
  .IX Item "-fanalyzer"
  This option enables an static analysis of program flow which looks
! for \*(L"interesting\*(R" interprocedural paths through the
  code, and issues warnings for problems found on them.
  .Sp
! This analysis is much more expensive than other \s-1GCC\s0 warnings.
  .Sp
! In technical terms, it performs coverage-guided symbolic execution of
  the code being compiled.  It is neither sound nor complete: it can
! have false positives and false negatives.  It is a bug-finding tool,
  rather than a tool for proving program correctness.
  .Sp
  The analyzer is only suitable for use on C code in this release.
--- 10082,10171 ----
  \&\fB\-Wvla\-parameter\fR is included in \fB\-Wall\fR.  The
  \&\fB\-Warray\-parameter\fR option triggers warnings for similar problems
  involving ordinary array arguments.
! .IP \fB\-Wvolatile\-register\-var\fR 4
  .IX Item "-Wvolatile-register-var"
  Warn if a register variable is declared volatile.  The volatile
  modifier does not inhibit all optimizations that may eliminate reads
  and/or writes to register variables.  This warning is enabled by
  \&\fB\-Wall\fR.
! .IP "\fB\-Wno\-xor\-used\-as\-pow\fR (C, C++, Objective\-C and Objective\-C++ only)" 4
! .IX Item "-Wno-xor-used-as-pow (C, C++, Objective-C and Objective-C++ only)"
  Disable warnings about uses of \f(CW\*(C`^\*(C'\fR, the exclusive or operator,
  where it appears the code meant exponentiation.
  Specifically, the warning occurs when the
! left\-hand side is the decimal constant 2 or 10 and the right\-hand side
  is also a decimal constant.
  .Sp
! In C and C++, \f(CW\*(C`^\*(C'\fR means exclusive or, whereas in some other languages
! (e.g. TeX and some versions of BASIC) it means exponentiation.
  .Sp
  This warning can be silenced by converting one of the operands to
  hexadecimal as well as by compiling with \fB\-Wno\-xor\-used\-as\-pow\fR.
! .IP \fB\-Wdisabled\-optimization\fR 4
  .IX Item "-Wdisabled-optimization"
  Warn if a requested optimization pass is disabled.  This warning does
  not generally indicate that there is anything wrong with your code; it
! merely indicates that GCC\*(Aqs optimizers are unable to handle the code
  effectively.  Often, the problem is that your code is too big or too
! complex; GCC refuses to optimize programs when the optimization
  itself is likely to take inordinate amounts of time.
! .IP "\fB\-Wpointer\-sign\fR (C and Objective\-C only)" 4
  .IX Item "-Wpointer-sign (C and Objective-C only)"
  Warn for pointer argument passing or assignment with different signedness.
! This option is only supported for C and Objective\-C.  It is implied by
  \&\fB\-Wall\fR and by \fB\-Wpedantic\fR, which can be disabled with
  \&\fB\-Wno\-pointer\-sign\fR.
  .Sp
  This warning is upgraded to an error by \fB\-pedantic\-errors\fR.
! .IP \fB\-Wstack\-protector\fR 4
  .IX Item "-Wstack-protector"
  This option is only active when \fB\-fstack\-protector\fR is active.  It
  warns about functions that are not protected against stack smashing.
! .IP \fB\-Woverlength\-strings\fR 4
  .IX Item "-Woverlength-strings"
! Warn about string constants that are longer than the "minimum
! maximum" length specified in the C standard.  Modern compilers
  generally allow string constants that are much longer than the
! standard\*(Aqs minimum limit, but very portable programs should avoid
  using longer strings.
  .Sp
  The limit applies \fIafter\fR string constant concatenation, and does
! not count the trailing NUL.  In C90, the limit was 509 characters; in
! C99, it was raised to 4095.  C++98 does not specify a normative
! minimum maximum, so we do not diagnose overlength strings in C++.
  .Sp
  This option is implied by \fB\-Wpedantic\fR, and can be disabled with
  \&\fB\-Wno\-overlength\-strings\fR.
! .IP "\fB\-Wunsuffixed\-float\-constants\fR (C and Objective\-C only)" 4
  .IX Item "-Wunsuffixed-float-constants (C and Objective-C only)"
  Issue a warning for any floating constant that does not have
  a suffix.  When used together with \fB\-Wsystem\-headers\fR it
  warns about such constants in system header files.  This can be useful
  when preparing code to use with the \f(CW\*(C`FLOAT_CONST_DECIMAL64\*(C'\fR pragma
! from the decimal floating\-point extension to C99.
! .IP \fB\-Wno\-lto\-type\-mismatch\fR 4
  .IX Item "-Wno-lto-type-mismatch"
! During the link\-time optimization, do not warn about type mismatches in
  global declarations from different compilation units.
  Requires \fB\-flto\fR to be enabled.  Enabled by default.
! .IP "\fB\-Wno\-designated\-init\fR (C and Objective\-C only)" 4
  .IX Item "-Wno-designated-init (C and Objective-C only)"
  Suppress warnings when a positional initializer is used to initialize
  a structure that has been marked with the \f(CW\*(C`designated_init\*(C'\fR
  attribute.
  .SS "Options That Control Static Analysis"
  .IX Subsection "Options That Control Static Analysis"
! .IP \fB\-fanalyzer\fR 4
  .IX Item "-fanalyzer"
  This option enables an static analysis of program flow which looks
! for "interesting" interprocedural paths through the
  code, and issues warnings for problems found on them.
  .Sp
! This analysis is much more expensive than other GCC warnings.
  .Sp
! In technical terms, it performs coverage\-guided symbolic execution of
  the code being compiled.  It is neither sound nor complete: it can
! have false positives and false negatives.  It is a bug\-finding tool,
  rather than a tool for proving program correctness.
  .Sp
  The analyzer is only suitable for use on C code in this release.
*************** Enabling this option effectively enables
*** 10289,10297 ****
  \&\-Wanalyzer\-write\-to\-const
  \&\-Wanalyzer\-write\-to\-string\-literal\fR
  .Sp
! This option is only available if \s-1GCC\s0 was configured with analyzer
  support enabled.
! .IP "\fB\-Wanalyzer\-symbol\-too\-complex\fR" 4
  .IX Item "-Wanalyzer-symbol-too-complex"
  If \fB\-fanalyzer\fR is enabled, the analyzer uses various heuristics
  to attempt to track the state of memory, but these can be defeated by
--- 10222,10230 ----
  \&\-Wanalyzer\-write\-to\-const
  \&\-Wanalyzer\-write\-to\-string\-literal\fR
  .Sp
! This option is only available if GCC was configured with analyzer
  support enabled.
! .IP \fB\-Wanalyzer\-symbol\-too\-complex\fR 4
  .IX Item "-Wanalyzer-symbol-too-complex"
  If \fB\-fanalyzer\fR is enabled, the analyzer uses various heuristics
  to attempt to track the state of memory, but these can be defeated by
*************** if they exceed the threshold defined by
*** 10302,10308 ****
  \&\fB\-\-param analyzer\-max\-svalue\-depth=\fR\fIvalue\fR, and falls back
  to an imprecise representation for such expressions.
  The \fB\-Wanalyzer\-symbol\-too\-complex\fR option warns if this occurs.
! .IP "\fB\-Wanalyzer\-too\-complex\fR" 4
  .IX Item "-Wanalyzer-too-complex"
  If \fB\-fanalyzer\fR is enabled, the analyzer uses various heuristics
  to attempt to explore the control flow and data flow in the program,
--- 10235,10241 ----
  \&\fB\-\-param analyzer\-max\-svalue\-depth=\fR\fIvalue\fR, and falls back
  to an imprecise representation for such expressions.
  The \fB\-Wanalyzer\-symbol\-too\-complex\fR option warns if this occurs.
! .IP \fB\-Wanalyzer\-too\-complex\fR 4
  .IX Item "-Wanalyzer-too-complex"
  If \fB\-fanalyzer\fR is enabled, the analyzer uses various heuristics
  to attempt to explore the control flow and data flow in the program,
*************** but these can be defeated by sufficientl
*** 10311,10317 ****
  By default, the analysis silently stops if the code is too
  complicated for the analyzer to fully explore and it reaches an internal
  limit.  The \fB\-Wanalyzer\-too\-complex\fR option warns if this occurs.
! .IP "\fB\-Wno\-analyzer\-allocation\-size\fR" 4
  .IX Item "-Wno-analyzer-allocation-size"
  This warning requires \fB\-fanalyzer\fR, which enables it;
  to disable it, use \fB\-Wno\-analyzer\-allocation\-size\fR.
--- 10244,10250 ----
  By default, the analysis silently stops if the code is too
  complicated for the analyzer to fully explore and it reaches an internal
  limit.  The \fB\-Wanalyzer\-too\-complex\fR option warns if this occurs.
! .IP \fB\-Wno\-analyzer\-allocation\-size\fR 4
  .IX Item "-Wno-analyzer-allocation-size"
  This warning requires \fB\-fanalyzer\fR, which enables it;
  to disable it, use \fB\-Wno\-analyzer\-allocation\-size\fR.
*************** This diagnostic warns for paths through
*** 10320,10327 ****
  a buffer is assigned to point at a buffer with a size that is not a
  multiple of \f(CW\*(C`sizeof (*pointer)\*(C'\fR.
  .Sp
! See  \s-1CWE\-131:\s0 Incorrect Calculation of Buffer Size (\f(CW\*(C`https://cwe.mitre.org/data/definitions/131.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-deref\-before\-check\fR" 4
  .IX Item "-Wno-analyzer-deref-before-check"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-deref\-before\-check\fR
--- 10253,10260 ----
  a buffer is assigned to point at a buffer with a size that is not a
  multiple of \f(CW\*(C`sizeof (*pointer)\*(C'\fR.
  .Sp
! See  CWE\-131: Incorrect Calculation of Buffer Size (\f(CW\*(C`https://cwe.mitre.org/data/definitions/131.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-deref\-before\-check\fR 4
  .IX Item "-Wno-analyzer-deref-before-check"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-deref\-before\-check\fR
*************** to disable it.
*** 10329,10349 ****
  .Sp
  This diagnostic warns for paths through the code in which a pointer
  is checked for \f(CW\*(C`NULL\*(C'\fR *after* it has already been
! dereferenced, suggesting that the pointer could have been \s-1NULL.\s0
! Such cases suggest that the check for \s-1NULL\s0 is either redundant,
  or that it needs to be moved to before the pointer is dereferenced.
  .Sp
  This diagnostic also considers values passed to a function argument
! marked with \f(CW\*(C`_\|_attribute_\|_((nonnull))\*(C'\fR as requiring a non-NULL
  value, and thus will complain if such values are checked for \f(CW\*(C`NULL\*(C'\fR
  after returning from such a function call.
  .Sp
  This diagnostic is unlikely to be reported when any level of optimization
! is enabled, as \s-1GCC\s0's optimization logic will typically consider such
! checks for \s-1NULL\s0 as being redundant, and optimize them away before the
! analyzer \*(L"sees\*(R" them.  Hence optimization should be disabled when
  attempting to trigger this diagnostic.
! .IP "\fB\-Wno\-analyzer\-double\-fclose\fR" 4
  .IX Item "-Wno-analyzer-double-fclose"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-double\-fclose\fR to disable it.
--- 10262,10282 ----
  .Sp
  This diagnostic warns for paths through the code in which a pointer
  is checked for \f(CW\*(C`NULL\*(C'\fR *after* it has already been
! dereferenced, suggesting that the pointer could have been NULL.
! Such cases suggest that the check for NULL is either redundant,
  or that it needs to be moved to before the pointer is dereferenced.
  .Sp
  This diagnostic also considers values passed to a function argument
! marked with \f(CW\*(C`_\|_attribute_\|_((nonnull))\*(C'\fR as requiring a non\-NULL
  value, and thus will complain if such values are checked for \f(CW\*(C`NULL\*(C'\fR
  after returning from such a function call.
  .Sp
  This diagnostic is unlikely to be reported when any level of optimization
! is enabled, as GCC\*(Aqs optimization logic will typically consider such
! checks for NULL as being redundant, and optimize them away before the
! analyzer "sees" them.  Hence optimization should be disabled when
  attempting to trigger this diagnostic.
! .IP \fB\-Wno\-analyzer\-double\-fclose\fR 4
  .IX Item "-Wno-analyzer-double-fclose"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-double\-fclose\fR to disable it.
*************** This warning requires \fB\-fanalyzer\fR,
*** 10351,10358 ****
  This diagnostic warns for paths through the code in which a \f(CW\*(C`FILE *\*(C'\fR
  can have \f(CW\*(C`fclose\*(C'\fR called on it more than once.
  .Sp
! See  \s-1CWE\-1341:\s0 Multiple Releases of Same Resource or Handle (\f(CW\*(C`https://cwe.mitre.org/data/definitions/1341.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-double\-free\fR" 4
  .IX Item "-Wno-analyzer-double-free"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-double\-free\fR to disable it.
--- 10284,10291 ----
  This diagnostic warns for paths through the code in which a \f(CW\*(C`FILE *\*(C'\fR
  can have \f(CW\*(C`fclose\*(C'\fR called on it more than once.
  .Sp
! See  CWE\-1341: Multiple Releases of Same Resource or Handle (\f(CW\*(C`https://cwe.mitre.org/data/definitions/1341.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-double\-free\fR 4
  .IX Item "-Wno-analyzer-double-free"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-double\-free\fR to disable it.
*************** This diagnostic warns for paths through
*** 10361,10405 ****
  can have a deallocator called on it more than once, either \f(CW\*(C`free\*(C'\fR,
  or a deallocator referenced by attribute \f(CW\*(C`malloc\*(C'\fR.
  .Sp
! See  \s-1CWE\-415:\s0 Double Free (\f(CW\*(C`https://cwe.mitre.org/data/definitions/415.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-exposure\-through\-output\-file\fR" 4
  .IX Item "-Wno-analyzer-exposure-through-output-file"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-exposure\-through\-output\-file\fR
  to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
! security-sensitive value is written to an output file
  (such as writing a password to a log file).
  .Sp
! See  \s-1CWE\-532:\s0 Information Exposure Through Log Files (\f(CW\*(C`https://cwe.mitre.org/data/definitions/532.html\*(C'\fR).
! .IP "\fB\-Wanalyzer\-exposure\-through\-uninit\-copy\fR" 4
  .IX Item "-Wanalyzer-exposure-through-uninit-copy"
  This warning requires both \fB\-fanalyzer\fR and the use of a plugin
! to specify a function that copies across a \*(L"trust boundary\*(R".  Use
  \&\fB\-Wno\-analyzer\-exposure\-through\-uninit\-copy\fR to disable it.
  .Sp
! This diagnostic warns for \*(L"infoleaks\*(R" \- paths through the code in which
  uninitialized values are copied across a security boundary
! (such as code within an \s-1OS\s0 kernel that copies a partially-initialized
  struct on the stack to user space).
  .Sp
! See  \s-1CWE\-200:\s0 Exposure of Sensitive Information to an Unauthorized Actor (\f(CW\*(C`https://cwe.mitre.org/data/definitions/200.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-fd\-access\-mode\-mismatch\fR" 4
  .IX Item "-Wno-analyzer-fd-access-mode-mismatch"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-access\-mode\-mismatch\fR
  to disable it.
  .Sp
  This diagnostic warns for paths through code in which a
! \&\f(CW\*(C`read\*(C'\fR on a write-only file descriptor is attempted, or vice versa.
  .Sp
  This diagnostic also warns for code paths in a which a function with attribute
  \&\f(CW\*(C`fd_arg_read (N)\*(C'\fR is called with a file descriptor opened with
  \&\f(CW\*(C`O_WRONLY\*(C'\fR at referenced argument \f(CW\*(C`N\*(C'\fR or a function with attribute
  \&\f(CW\*(C`fd_arg_write (N)\*(C'\fR is called with a file descriptor opened with
  \&\f(CW\*(C`O_RDONLY\*(C'\fR at referenced argument \fIN\fR.
! .IP "\fB\-Wno\-analyzer\-fd\-double\-close\fR" 4
  .IX Item "-Wno-analyzer-fd-double-close"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-double\-close\fR
--- 10294,10338 ----
  can have a deallocator called on it more than once, either \f(CW\*(C`free\*(C'\fR,
  or a deallocator referenced by attribute \f(CW\*(C`malloc\*(C'\fR.
  .Sp
! See  CWE\-415: Double Free (\f(CW\*(C`https://cwe.mitre.org/data/definitions/415.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-exposure\-through\-output\-file\fR 4
  .IX Item "-Wno-analyzer-exposure-through-output-file"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-exposure\-through\-output\-file\fR
  to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
! security\-sensitive value is written to an output file
  (such as writing a password to a log file).
  .Sp
! See  CWE\-532: Information Exposure Through Log Files (\f(CW\*(C`https://cwe.mitre.org/data/definitions/532.html\*(C'\fR).
! .IP \fB\-Wanalyzer\-exposure\-through\-uninit\-copy\fR 4
  .IX Item "-Wanalyzer-exposure-through-uninit-copy"
  This warning requires both \fB\-fanalyzer\fR and the use of a plugin
! to specify a function that copies across a "trust boundary".  Use
  \&\fB\-Wno\-analyzer\-exposure\-through\-uninit\-copy\fR to disable it.
  .Sp
! This diagnostic warns for "infoleaks" \- paths through the code in which
  uninitialized values are copied across a security boundary
! (such as code within an OS kernel that copies a partially\-initialized
  struct on the stack to user space).
  .Sp
! See  CWE\-200: Exposure of Sensitive Information to an Unauthorized Actor (\f(CW\*(C`https://cwe.mitre.org/data/definitions/200.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-fd\-access\-mode\-mismatch\fR 4
  .IX Item "-Wno-analyzer-fd-access-mode-mismatch"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-access\-mode\-mismatch\fR
  to disable it.
  .Sp
  This diagnostic warns for paths through code in which a
! \&\f(CW\*(C`read\*(C'\fR on a write\-only file descriptor is attempted, or vice versa.
  .Sp
  This diagnostic also warns for code paths in a which a function with attribute
  \&\f(CW\*(C`fd_arg_read (N)\*(C'\fR is called with a file descriptor opened with
  \&\f(CW\*(C`O_WRONLY\*(C'\fR at referenced argument \f(CW\*(C`N\*(C'\fR or a function with attribute
  \&\f(CW\*(C`fd_arg_write (N)\*(C'\fR is called with a file descriptor opened with
  \&\f(CW\*(C`O_RDONLY\*(C'\fR at referenced argument \fIN\fR.
! .IP \fB\-Wno\-analyzer\-fd\-double\-close\fR 4
  .IX Item "-Wno-analyzer-fd-double-close"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-double\-close\fR
*************** to disable it.
*** 10408,10415 ****
  This diagnostic warns for paths through code in which a
  file descriptor can be closed more than once.
  .Sp
! See  \s-1CWE\-1341:\s0 Multiple Releases of Same Resource or Handle (\f(CW\*(C`https://cwe.mitre.org/data/definitions/1341.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-fd\-leak\fR" 4
  .IX Item "-Wno-analyzer-fd-leak"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-leak\fR
--- 10341,10348 ----
  This diagnostic warns for paths through code in which a
  file descriptor can be closed more than once.
  .Sp
! See  CWE\-1341: Multiple Releases of Same Resource or Handle (\f(CW\*(C`https://cwe.mitre.org/data/definitions/1341.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-fd\-leak\fR 4
  .IX Item "-Wno-analyzer-fd-leak"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-leak\fR
*************** to disable it.
*** 10418,10437 ****
  This diagnostic warns for paths through code in which an
  open file descriptor is leaked.
  .Sp
! See  \s-1CWE\-775:\s0 Missing Release of File Descriptor or Handle after Effective Lifetime (\f(CW\*(C`https://cwe.mitre.org/data/definitions/775.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-fd\-phase\-mismatch\fR" 4
  .IX Item "-Wno-analyzer-fd-phase-mismatch"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-phase\-mismatch\fR
  to disable it.
  .Sp
  This diagnostic warns for paths through code in which an operation is
! attempted in the wrong phase of a file descriptor's lifetime.
  For example, it will warn on attempts to call \f(CW\*(C`accept\*(C'\fR on a stream
  socket that has not yet had \f(CW\*(C`listen\*(C'\fR successfully called on it.
  .Sp
! See  \s-1CWE\-666:\s0 Operation on Resource in Wrong Phase of Lifetime (\f(CW\*(C`https://cwe.mitre.org/data/definitions/666.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-fd\-type\-mismatch\fR" 4
  .IX Item "-Wno-analyzer-fd-type-mismatch"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-type\-mismatch\fR
--- 10351,10370 ----
  This diagnostic warns for paths through code in which an
  open file descriptor is leaked.
  .Sp
! See  CWE\-775: Missing Release of File Descriptor or Handle after Effective Lifetime (\f(CW\*(C`https://cwe.mitre.org/data/definitions/775.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-fd\-phase\-mismatch\fR 4
  .IX Item "-Wno-analyzer-fd-phase-mismatch"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-phase\-mismatch\fR
  to disable it.
  .Sp
  This diagnostic warns for paths through code in which an operation is
! attempted in the wrong phase of a file descriptor\*(Aqs lifetime.
  For example, it will warn on attempts to call \f(CW\*(C`accept\*(C'\fR on a stream
  socket that has not yet had \f(CW\*(C`listen\*(C'\fR successfully called on it.
  .Sp
! See  CWE\-666: Operation on Resource in Wrong Phase of Lifetime (\f(CW\*(C`https://cwe.mitre.org/data/definitions/666.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-fd\-type\-mismatch\fR 4
  .IX Item "-Wno-analyzer-fd-type-mismatch"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-type\-mismatch\fR
*************** operation is attempted on the wrong type
*** 10442,10448 ****
  For example, it will warn on attempts to use socket operations
  on a file descriptor obtained via \f(CW\*(C`open\*(C'\fR, or when attempting
  to use a stream socket operation on a datagram socket.
! .IP "\fB\-Wno\-analyzer\-fd\-use\-after\-close\fR" 4
  .IX Item "-Wno-analyzer-fd-use-after-close"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-use\-after\-close\fR
--- 10375,10381 ----
  For example, it will warn on attempts to use socket operations
  on a file descriptor obtained via \f(CW\*(C`open\*(C'\fR, or when attempting
  to use a stream socket operation on a datagram socket.
! .IP \fB\-Wno\-analyzer\-fd\-use\-after\-close\fR 4
  .IX Item "-Wno-analyzer-fd-use-after-close"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-use\-after\-close\fR
*************** This diagnostic also warns for paths thr
*** 10455,10461 ****
  a function with attribute \f(CW\*(C`fd_arg (N)\*(C'\fR or \f(CW\*(C`fd_arg_read (N)\*(C'\fR
  or \f(CW\*(C`fd_arg_write (N)\*(C'\fR is called with a closed file descriptor at
  referenced argument \f(CW\*(C`N\*(C'\fR.
! .IP "\fB\-Wno\-analyzer\-fd\-use\-without\-check\fR" 4
  .IX Item "-Wno-analyzer-fd-use-without-check"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-use\-without\-check\fR
--- 10388,10394 ----
  a function with attribute \f(CW\*(C`fd_arg (N)\*(C'\fR or \f(CW\*(C`fd_arg_read (N)\*(C'\fR
  or \f(CW\*(C`fd_arg_write (N)\*(C'\fR is called with a closed file descriptor at
  referenced argument \f(CW\*(C`N\*(C'\fR.
! .IP \fB\-Wno\-analyzer\-fd\-use\-without\-check\fR 4
  .IX Item "-Wno-analyzer-fd-use-without-check"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-fd\-use\-without\-check\fR
*************** This diagnostic also warns for paths thr
*** 10468,10474 ****
  a function with attribute \f(CW\*(C`fd_arg (N)\*(C'\fR or \f(CW\*(C`fd_arg_read (N)\*(C'\fR
  or \f(CW\*(C`fd_arg_write (N)\*(C'\fR is called with a file descriptor, at referenced
  argument \f(CW\*(C`N\*(C'\fR, without being checked for validity.
! .IP "\fB\-Wno\-analyzer\-file\-leak\fR" 4
  .IX Item "-Wno-analyzer-file-leak"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-file\-leak\fR
--- 10401,10407 ----
  a function with attribute \f(CW\*(C`fd_arg (N)\*(C'\fR or \f(CW\*(C`fd_arg_read (N)\*(C'\fR
  or \f(CW\*(C`fd_arg_write (N)\*(C'\fR is called with a file descriptor, at referenced
  argument \f(CW\*(C`N\*(C'\fR, without being checked for validity.
! .IP \fB\-Wno\-analyzer\-file\-leak\fR 4
  .IX Item "-Wno-analyzer-file-leak"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-file\-leak\fR
*************** to disable it.
*** 10477,10504 ****
  This diagnostic warns for paths through the code in which a
  \&\f(CW\*(C`<stdio.h>\*(C'\fR \f(CW\*(C`FILE *\*(C'\fR stream object is leaked.
  .Sp
! See  \s-1CWE\-775:\s0 Missing Release of File Descriptor or Handle after Effective Lifetime (\f(CW\*(C`https://cwe.mitre.org/data/definitions/775.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-free\-of\-non\-heap\fR" 4
  .IX Item "-Wno-analyzer-free-of-non-heap"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-free\-of\-non\-heap\fR
  to disable it.
  .Sp
  This diagnostic warns for paths through the code in which \f(CW\*(C`free\*(C'\fR
! is called on a non-heap pointer (e.g. an on-stack buffer, or a global).
  .Sp
! See  \s-1CWE\-590:\s0 Free of Memory not on the Heap (\f(CW\*(C`https://cwe.mitre.org/data/definitions/590.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-imprecise\-fp\-arithmetic\fR" 4
  .IX Item "-Wno-analyzer-imprecise-fp-arithmetic"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-imprecise\-fp\-arithmetic\fR
  to disable it.
  .Sp
! This diagnostic warns for paths through the code in which floating-point
  arithmetic is used in locations where precise computation is needed.  This
! diagnostic only warns on use of floating-point operands inside the
  calculation of an allocation size at the moment.
! .IP "\fB\-Wno\-analyzer\-infinite\-loop\fR" 4
  .IX Item "-Wno-analyzer-infinite-loop"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-infinite\-loop\fR to disable it.
--- 10410,10437 ----
  This diagnostic warns for paths through the code in which a
  \&\f(CW\*(C`<stdio.h>\*(C'\fR \f(CW\*(C`FILE *\*(C'\fR stream object is leaked.
  .Sp
! See  CWE\-775: Missing Release of File Descriptor or Handle after Effective Lifetime (\f(CW\*(C`https://cwe.mitre.org/data/definitions/775.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-free\-of\-non\-heap\fR 4
  .IX Item "-Wno-analyzer-free-of-non-heap"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-free\-of\-non\-heap\fR
  to disable it.
  .Sp
  This diagnostic warns for paths through the code in which \f(CW\*(C`free\*(C'\fR
! is called on a non\-heap pointer (e.g. an on\-stack buffer, or a global).
  .Sp
! See  CWE\-590: Free of Memory not on the Heap (\f(CW\*(C`https://cwe.mitre.org/data/definitions/590.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-imprecise\-fp\-arithmetic\fR 4
  .IX Item "-Wno-analyzer-imprecise-fp-arithmetic"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-imprecise\-fp\-arithmetic\fR
  to disable it.
  .Sp
! This diagnostic warns for paths through the code in which floating\-point
  arithmetic is used in locations where precise computation is needed.  This
! diagnostic only warns on use of floating\-point operands inside the
  calculation of an allocation size at the moment.
! .IP \fB\-Wno\-analyzer\-infinite\-loop\fR 4
  .IX Item "-Wno-analyzer-infinite-loop"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-infinite\-loop\fR to disable it.
*************** This warning requires \fB\-fanalyzer\fR,
*** 10506,10519 ****
  This diagnostics warns for paths through the code which appear to
  lead to an infinite loop.
  .Sp
! Specifically, the analyzer will issue this warning when it \*(L"sees\*(R" a loop
  in which:
  .RS 4
! .IP "*" 4
! no externally-visible work could be being done within the loop
! .IP "*" 4
  there is no way to escape from the loop
! .IP "*" 4
  the analyzer is sufficiently confident about the program state
  throughout the loop to know that the above are true
  .RE
--- 10439,10452 ----
  This diagnostics warns for paths through the code which appear to
  lead to an infinite loop.
  .Sp
! Specifically, the analyzer will issue this warning when it "sees" a loop
  in which:
  .RS 4
! .IP * 4
! no externally\-visible work could be being done within the loop
! .IP * 4
  there is no way to escape from the loop
! .IP * 4
  the analyzer is sufficiently confident about the program state
  throughout the loop to know that the above are true
  .RE
*************** For example, consider:
*** 10543,10555 ****
  .Sp
  The analyzer will complain for the above case because if \f(CW\*(C`opcode\*(C'\fR
  ever matches none of the cases, the \f(CW\*(C`switch\*(C'\fR will follow the
! implicit \f(CW\*(C`default\*(C'\fR case, making the body of the loop be a \*(L"no-op\*(R"
  with \f(CW\*(C`cpu_state.pc\*(C'\fR unchanged, and thus using the same value of
  \&\f(CW\*(C`opcode\*(C'\fR on all subseqent iterations, leading to an infinite loop.
  .Sp
! See  \s-1CWE\-835:\s0 Loop with Unreachable Exit Condition ('Infinite Loop') (\f(CW\*(C`https://cwe.mitre.org/data/definitions/835.html\*(C'\fR).
  .RE
! .IP "\fB\-Wno\-analyzer\-infinite\-recursion\fR" 4
  .IX Item "-Wno-analyzer-infinite-recursion"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-infinite\-recursion\fR to disable it.
--- 10476,10488 ----
  .Sp
  The analyzer will complain for the above case because if \f(CW\*(C`opcode\*(C'\fR
  ever matches none of the cases, the \f(CW\*(C`switch\*(C'\fR will follow the
! implicit \f(CW\*(C`default\*(C'\fR case, making the body of the loop be a "no\-op"
  with \f(CW\*(C`cpu_state.pc\*(C'\fR unchanged, and thus using the same value of
  \&\f(CW\*(C`opcode\*(C'\fR on all subseqent iterations, leading to an infinite loop.
  .Sp
! See  CWE\-835: Loop with Unreachable Exit Condition (\*(AqInfinite Loop\*(Aq) (\f(CW\*(C`https://cwe.mitre.org/data/definitions/835.html\*(C'\fR).
  .RE
! .IP \fB\-Wno\-analyzer\-infinite\-recursion\fR 4
  .IX Item "-Wno-analyzer-infinite-recursion"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-infinite\-recursion\fR to disable it.
*************** This warning requires \fB\-fanalyzer\fR,
*** 10557,10563 ****
  This diagnostics warns for paths through the code which appear to
  lead to infinite recursion.
  .Sp
! Specifically, when the analyzer \*(L"sees\*(R" a recursive call, it will compare
  the state of memory at the entry to the new frame with that at the entry
  to the previous frame of that function on the stack.  The warning is
  issued if nothing in memory appears to be changing; any changes observed
--- 10490,10496 ----
  This diagnostics warns for paths through the code which appear to
  lead to infinite recursion.
  .Sp
! Specifically, when the analyzer "sees" a recursive call, it will compare
  the state of memory at the entry to the new frame with that at the entry
  to the previous frame of that function on the stack.  The warning is
  issued if nothing in memory appears to be changing; any changes observed
*************** to parameters or globals are assumed to
*** 10565,10579 ****
  recursion and thus suppress the warning.
  .Sp
  This diagnostic is likely to miss cases of infinite recursion that
! are convered to iteration by the optimizer before the analyzer \*(L"sees\*(R"
  them.  Hence optimization should be disabled when attempting to trigger
  this diagnostic.
  .Sp
  Compare with \fB\-Winfinite\-recursion\fR, which provides a similar
  diagnostic, but is implemented in a different way.
  .Sp
! See  \s-1CWE\-674:\s0 Uncontrolled Recursion (\f(CW\*(C`https://cwe.mitre.org/data/definitions/674.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-jump\-through\-null\fR" 4
  .IX Item "-Wno-analyzer-jump-through-null"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-jump\-through\-null\fR
--- 10498,10512 ----
  recursion and thus suppress the warning.
  .Sp
  This diagnostic is likely to miss cases of infinite recursion that
! are convered to iteration by the optimizer before the analyzer "sees"
  them.  Hence optimization should be disabled when attempting to trigger
  this diagnostic.
  .Sp
  Compare with \fB\-Winfinite\-recursion\fR, which provides a similar
  diagnostic, but is implemented in a different way.
  .Sp
! See  CWE\-674: Uncontrolled Recursion (\f(CW\*(C`https://cwe.mitre.org/data/definitions/674.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-jump\-through\-null\fR 4
  .IX Item "-Wno-analyzer-jump-through-null"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-jump\-through\-null\fR
*************** to disable it.
*** 10581,10587 ****
  .Sp
  This diagnostic warns for paths through the code in which a \f(CW\*(C`NULL\*(C'\fR
  function pointer is called.
! .IP "\fB\-Wno\-analyzer\-malloc\-leak\fR" 4
  .IX Item "-Wno-analyzer-malloc-leak"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-malloc\-leak\fR
--- 10514,10520 ----
  .Sp
  This diagnostic warns for paths through the code in which a \f(CW\*(C`NULL\*(C'\fR
  function pointer is called.
! .IP \fB\-Wno\-analyzer\-malloc\-leak\fR 4
  .IX Item "-Wno-analyzer-malloc-leak"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-malloc\-leak\fR
*************** This diagnostic warns for paths through
*** 10591,10598 ****
  pointer allocated via an allocator is leaked: either \f(CW\*(C`malloc\*(C'\fR,
  or a function marked with attribute \f(CW\*(C`malloc\*(C'\fR.
  .Sp
! See  \s-1CWE\-401:\s0 Missing Release of Memory after Effective Lifetime (\f(CW\*(C`https://cwe.mitre.org/data/definitions/401.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-mismatching\-deallocation\fR" 4
  .IX Item "-Wno-analyzer-mismatching-deallocation"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-mismatching\-deallocation\fR
--- 10524,10531 ----
  pointer allocated via an allocator is leaked: either \f(CW\*(C`malloc\*(C'\fR,
  or a function marked with attribute \f(CW\*(C`malloc\*(C'\fR.
  .Sp
! See  CWE\-401: Missing Release of Memory after Effective Lifetime (\f(CW\*(C`https://cwe.mitre.org/data/definitions/401.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-mismatching\-deallocation\fR 4
  .IX Item "-Wno-analyzer-mismatching-deallocation"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-mismatching\-deallocation\fR
*************** will warn about mismatches between \f(CW
*** 10605,10624 ****
  and vector \f(CW\*(C`delete[]\*(C'\fR, and those marked as allocator/deallocator
  pairs using attribute \f(CW\*(C`malloc\*(C'\fR.
  .Sp
! See  \s-1CWE\-762:\s0 Mismatched Memory Management Routines (\f(CW\*(C`https://cwe.mitre.org/data/definitions/762.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-out\-of\-bounds\fR" 4
  .IX Item "-Wno-analyzer-out-of-bounds"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-out\-of\-bounds\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a buffer is
! definitely read or written out-of-bounds.  The diagnostic applies for
  cases where the analyzer is able to determine a constant offset and for
  accesses past the end of a buffer, also a constant capacity.  Further,
  the diagnostic does limited checking for accesses past the end when the
  offset as well as the capacity is symbolic.
  .Sp
! See  \s-1CWE\-119:\s0 Improper Restriction of Operations within the Bounds of a Memory Buffer (\f(CW\*(C`https://cwe.mitre.org/data/definitions/119.html\*(C'\fR).
  .Sp
  For cases where the analyzer is able, it will emit a text art diagram
  visualizing the spatial relationship between the memory region that the
--- 10538,10557 ----
  and vector \f(CW\*(C`delete[]\*(C'\fR, and those marked as allocator/deallocator
  pairs using attribute \f(CW\*(C`malloc\*(C'\fR.
  .Sp
! See  CWE\-762: Mismatched Memory Management Routines (\f(CW\*(C`https://cwe.mitre.org/data/definitions/762.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-out\-of\-bounds\fR 4
  .IX Item "-Wno-analyzer-out-of-bounds"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-out\-of\-bounds\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a buffer is
! definitely read or written out\-of\-bounds.  The diagnostic applies for
  cases where the analyzer is able to determine a constant offset and for
  accesses past the end of a buffer, also a constant capacity.  Further,
  the diagnostic does limited checking for accesses past the end when the
  offset as well as the capacity is symbolic.
  .Sp
! See  CWE\-119: Improper Restriction of Operations within the Bounds of a Memory Buffer (\f(CW\*(C`https://cwe.mitre.org/data/definitions/119.html\*(C'\fR).
  .Sp
  For cases where the analyzer is able, it will emit a text art diagram
  visualizing the spatial relationship between the memory region that the
*************** apart; which one is before or after in m
*** 10628,10711 ****
  involved, the direction of the access (read vs write), and, in some
  cases, the values of data involved.  This diagram can be suppressed
  using \fB\-fdiagnostics\-text\-art\-charset=none\fR.
! .IP "\fB\-Wno\-analyzer\-overlapping\-buffers\fR" 4
  .IX Item "-Wno-analyzer-overlapping-buffers"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-overlapping\-buffers\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which overlapping
! buffers are passed to an \s-1API\s0 for which the behavior on such buffers
  is undefined.
  .Sp
  Specifically, the diagnostic occurs on calls to the following functions
  .RS 4
  .ie n .IP "*<""memcpy"">" 4
! .el .IP "*<\f(CWmemcpy\fR>" 4
  .IX Item "*<memcpy>"
  .PD 0
  .ie n .IP "*<""strcat"">" 4
! .el .IP "*<\f(CWstrcat\fR>" 4
  .IX Item "*<strcat>"
  .ie n .IP "*<""strcpy"">" 4
! .el .IP "*<\f(CWstrcpy\fR>" 4
  .IX Item "*<strcpy>"
  .RE
  .RS 4
- .PD
  .Sp
  for cases where the buffers are known to overlap.
  .RE
! .IP "\fB\-Wno\-analyzer\-possible\-null\-argument\fR" 4
  .IX Item "-Wno-analyzer-possible-null-argument"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-possible\-null\-argument\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
! possibly-NULL value is passed to a function argument marked
! with \f(CW\*(C`_\|_attribute_\|_((nonnull))\*(C'\fR as requiring a non-NULL
  value.
  .Sp
! See  \s-1CWE\-690:\s0 Unchecked Return Value to \s-1NULL\s0 Pointer Dereference (\f(CW\*(C`https://cwe.mitre.org/data/definitions/690.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-possible\-null\-dereference\fR" 4
  .IX Item "-Wno-analyzer-possible-null-dereference"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-possible\-null\-dereference\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
! possibly-NULL value is dereferenced.
  .Sp
! See  \s-1CWE\-690:\s0 Unchecked Return Value to \s-1NULL\s0 Pointer Dereference (\f(CW\*(C`https://cwe.mitre.org/data/definitions/690.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-null\-argument\fR" 4
  .IX Item "-Wno-analyzer-null-argument"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-null\-argument\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
! value known to be \s-1NULL\s0 is passed to a function argument marked
! with \f(CW\*(C`_\|_attribute_\|_((nonnull))\*(C'\fR as requiring a non-NULL
  value.
  .Sp
! See  \s-1CWE\-476: NULL\s0 Pointer Dereference (\f(CW\*(C`https://cwe.mitre.org/data/definitions/476.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-null\-dereference\fR" 4
  .IX Item "-Wno-analyzer-null-dereference"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-null\-dereference\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
! value known to be \s-1NULL\s0 is dereferenced.
  .Sp
! See  \s-1CWE\-476: NULL\s0 Pointer Dereference (\f(CW\*(C`https://cwe.mitre.org/data/definitions/476.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-putenv\-of\-auto\-var\fR" 4
  .IX Item "-Wno-analyzer-putenv-of-auto-var"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-putenv\-of\-auto\-var\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
  call to \f(CW\*(C`putenv\*(C'\fR is passed a pointer to an automatic variable
! or an on-stack buffer.
  .Sp
! See  \s-1POS34\-C.\s0 Do not call \fIputenv()\fR with a pointer to an automatic variable as the argument (\f(CW\*(C`https://wiki.sei.cmu.edu/confluence/x/6NYxBQ\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-shift\-count\-negative\fR" 4
  .IX Item "-Wno-analyzer-shift-count-negative"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-shift\-count\-negative\fR to disable it.
--- 10561,10644 ----
  involved, the direction of the access (read vs write), and, in some
  cases, the values of data involved.  This diagram can be suppressed
  using \fB\-fdiagnostics\-text\-art\-charset=none\fR.
! .IP \fB\-Wno\-analyzer\-overlapping\-buffers\fR 4
  .IX Item "-Wno-analyzer-overlapping-buffers"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-overlapping\-buffers\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which overlapping
! buffers are passed to an API for which the behavior on such buffers
  is undefined.
  .Sp
  Specifically, the diagnostic occurs on calls to the following functions
  .RS 4
  .ie n .IP "*<""memcpy"">" 4
! .el .IP *<\f(CWmemcpy\fR> 4
  .IX Item "*<memcpy>"
  .PD 0
  .ie n .IP "*<""strcat"">" 4
! .el .IP *<\f(CWstrcat\fR> 4
  .IX Item "*<strcat>"
  .ie n .IP "*<""strcpy"">" 4
! .el .IP *<\f(CWstrcpy\fR> 4
  .IX Item "*<strcpy>"
+ .PD
  .RE
  .RS 4
  .Sp
  for cases where the buffers are known to overlap.
  .RE
! .IP \fB\-Wno\-analyzer\-possible\-null\-argument\fR 4
  .IX Item "-Wno-analyzer-possible-null-argument"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-possible\-null\-argument\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
! possibly\-NULL value is passed to a function argument marked
! with \f(CW\*(C`_\|_attribute_\|_((nonnull))\*(C'\fR as requiring a non\-NULL
  value.
  .Sp
! See  CWE\-690: Unchecked Return Value to NULL Pointer Dereference (\f(CW\*(C`https://cwe.mitre.org/data/definitions/690.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-possible\-null\-dereference\fR 4
  .IX Item "-Wno-analyzer-possible-null-dereference"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-possible\-null\-dereference\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
! possibly\-NULL value is dereferenced.
  .Sp
! See  CWE\-690: Unchecked Return Value to NULL Pointer Dereference (\f(CW\*(C`https://cwe.mitre.org/data/definitions/690.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-null\-argument\fR 4
  .IX Item "-Wno-analyzer-null-argument"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-null\-argument\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
! value known to be NULL is passed to a function argument marked
! with \f(CW\*(C`_\|_attribute_\|_((nonnull))\*(C'\fR as requiring a non\-NULL
  value.
  .Sp
! See  CWE\-476: NULL Pointer Dereference (\f(CW\*(C`https://cwe.mitre.org/data/definitions/476.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-null\-dereference\fR 4
  .IX Item "-Wno-analyzer-null-dereference"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-null\-dereference\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
! value known to be NULL is dereferenced.
  .Sp
! See  CWE\-476: NULL Pointer Dereference (\f(CW\*(C`https://cwe.mitre.org/data/definitions/476.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-putenv\-of\-auto\-var\fR 4
  .IX Item "-Wno-analyzer-putenv-of-auto-var"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-putenv\-of\-auto\-var\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
  call to \f(CW\*(C`putenv\*(C'\fR is passed a pointer to an automatic variable
! or an on\-stack buffer.
  .Sp
! See  POS34\-C. Do not call \fBputenv()\fR with a pointer to an automatic variable as the argument (\f(CW\*(C`https://wiki.sei.cmu.edu/confluence/x/6NYxBQ\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-shift\-count\-negative\fR 4
  .IX Item "-Wno-analyzer-shift-count-negative"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-shift\-count\-negative\fR to disable it.
*************** This warning requires \fB\-fanalyzer\fR,
*** 10713,10736 ****
  This diagnostic warns for paths through the code in which a
  shift is attempted with a negative count.  It is analogous to
  the \fB\-Wshift\-count\-negative\fR diagnostic implemented in
! the C/\*(C+ front ends, but is implemented based on analyzing
  interprocedural paths, rather than merely parsing the syntax tree.
  However, the analyzer does not prioritize detection of such paths, so
  false negatives are more likely relative to other warnings.
! .IP "\fB\-Wno\-analyzer\-shift\-count\-overflow\fR" 4
  .IX Item "-Wno-analyzer-shift-count-overflow"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-shift\-count\-overflow\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
  shift is attempted with a count greater than or equal to the
! precision of the operand's type.  It is analogous to
  the \fB\-Wshift\-count\-overflow\fR diagnostic implemented in
! the C/\*(C+ front ends, but is implemented based on analyzing
  interprocedural paths, rather than merely parsing the syntax tree.
  However, the analyzer does not prioritize detection of such paths, so
  false negatives are more likely relative to other warnings.
! .IP "\fB\-Wno\-analyzer\-stale\-setjmp\-buffer\fR" 4
  .IX Item "-Wno-analyzer-stale-setjmp-buffer"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-stale\-setjmp\-buffer\fR to disable it.
--- 10646,10669 ----
  This diagnostic warns for paths through the code in which a
  shift is attempted with a negative count.  It is analogous to
  the \fB\-Wshift\-count\-negative\fR diagnostic implemented in
! the C/C++ front ends, but is implemented based on analyzing
  interprocedural paths, rather than merely parsing the syntax tree.
  However, the analyzer does not prioritize detection of such paths, so
  false negatives are more likely relative to other warnings.
! .IP \fB\-Wno\-analyzer\-shift\-count\-overflow\fR 4
  .IX Item "-Wno-analyzer-shift-count-overflow"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-shift\-count\-overflow\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
  shift is attempted with a count greater than or equal to the
! precision of the operand\*(Aqs type.  It is analogous to
  the \fB\-Wshift\-count\-overflow\fR diagnostic implemented in
! the C/C++ front ends, but is implemented based on analyzing
  interprocedural paths, rather than merely parsing the syntax tree.
  However, the analyzer does not prioritize detection of such paths, so
  false negatives are more likely relative to other warnings.
! .IP \fB\-Wno\-analyzer\-stale\-setjmp\-buffer\fR 4
  .IX Item "-Wno-analyzer-stale-setjmp-buffer"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-stale\-setjmp\-buffer\fR to disable it.
*************** location, it records the stack frame.  T
*** 10744,10768 ****
  when the function containing the \f(CW\*(C`setjmp\*(C'\fR call returns.  Attempting
  to rewind to it via \f(CW\*(C`longjmp\*(C'\fR would reference a stack frame that
  no longer exists, and likely lead to a crash (or worse).
! .IP "\fB\-Wno\-analyzer\-tainted\-allocation\-size\fR" 4
  .IX Item "-Wno-analyzer-tainted-allocation-size"
  This warning requires \fB\-fanalyzer\fR which enables it;
  use \fB\-Wno\-analyzer\-tainted\-allocation\-size\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a value
! that could be under an attacker's control is used as the size
  of an allocation without being sanitized, so that an attacker could
  inject an excessively large allocation and potentially cause a denial
  of service attack.
  .Sp
! See  \s-1CWE\-789:\s0 Memory Allocation with Excessive Size Value (\f(CW\*(C`https://cwe.mitre.org/data/definitions/789.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-tainted\-assertion\fR" 4
  .IX Item "-Wno-analyzer-tainted-assertion"
  This warning requires \fB\-fanalyzer\fR which enables it;
  use \fB\-Wno\-analyzer\-tainted\-assertion\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a value
! that could be under an attacker's control is used as part of a
  condition without being first sanitized, and that condition guards a
  call to a function marked with attribute \f(CW\*(C`noreturn\*(C'\fR
  (such as the function \f(CW\*(C`_\|_builtin_unreachable\*(C'\fR).  Such functions
--- 10677,10701 ----
  when the function containing the \f(CW\*(C`setjmp\*(C'\fR call returns.  Attempting
  to rewind to it via \f(CW\*(C`longjmp\*(C'\fR would reference a stack frame that
  no longer exists, and likely lead to a crash (or worse).
! .IP \fB\-Wno\-analyzer\-tainted\-allocation\-size\fR 4
  .IX Item "-Wno-analyzer-tainted-allocation-size"
  This warning requires \fB\-fanalyzer\fR which enables it;
  use \fB\-Wno\-analyzer\-tainted\-allocation\-size\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a value
! that could be under an attacker\*(Aqs control is used as the size
  of an allocation without being sanitized, so that an attacker could
  inject an excessively large allocation and potentially cause a denial
  of service attack.
  .Sp
! See  CWE\-789: Memory Allocation with Excessive Size Value (\f(CW\*(C`https://cwe.mitre.org/data/definitions/789.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-tainted\-assertion\fR 4
  .IX Item "-Wno-analyzer-tainted-assertion"
  This warning requires \fB\-fanalyzer\fR which enables it;
  use \fB\-Wno\-analyzer\-tainted\-assertion\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a value
! that could be under an attacker\*(Aqs control is used as part of a
  condition without being first sanitized, and that condition guards a
  call to a function marked with attribute \f(CW\*(C`noreturn\*(C'\fR
  (such as the function \f(CW\*(C`_\|_builtin_unreachable\*(C'\fR).  Such functions
*************** assertion failure handlers.  For example
*** 10775,10803 ****
  .Sp
  In such cases:
  .RS 4
! .IP "*" 4
! when assertion-checking is enabled: an attacker could trigger
  a denial of service by injecting an assertion failure
! .IP "*" 4
! when assertion-checking is disabled, such as by defining \f(CW\*(C`NDEBUG\*(C'\fR,
  an attacker could inject data that subverts the process, since it
  presumably violates a precondition that is being assumed by the code.
  .RE
  .RS 4
  .Sp
! Note that when assertion-checking is disabled, the assertions are
  typically removed by the preprocessor before the analyzer has a chance
! to \*(L"see\*(R" them, so this diagnostic can only generate warnings on builds
! in which assertion-checking is enabled.
  .Sp
  For the purpose of this warning, any function marked with attribute
  \&\f(CW\*(C`noreturn\*(C'\fR is considered as a possible assertion failure
  handler, including \f(CW\*(C`_\|_builtin_unreachable\*(C'\fR.  Note that these functions
! are sometimes removed by the optimizer before the analyzer \*(L"sees\*(R" them.
  Hence optimization should be disabled when attempting to trigger this
  diagnostic.
  .Sp
! See  \s-1CWE\-617:\s0 Reachable Assertion (\f(CW\*(C`https://cwe.mitre.org/data/definitions/617.html\*(C'\fR).
  .Sp
  The warning can also report problematic constructions such as
  .Sp
--- 10708,10736 ----
  .Sp
  In such cases:
  .RS 4
! .IP * 4
! when assertion\-checking is enabled: an attacker could trigger
  a denial of service by injecting an assertion failure
! .IP * 4
! when assertion\-checking is disabled, such as by defining \f(CW\*(C`NDEBUG\*(C'\fR,
  an attacker could inject data that subverts the process, since it
  presumably violates a precondition that is being assumed by the code.
  .RE
  .RS 4
  .Sp
! Note that when assertion\-checking is disabled, the assertions are
  typically removed by the preprocessor before the analyzer has a chance
! to "see" them, so this diagnostic can only generate warnings on builds
! in which assertion\-checking is enabled.
  .Sp
  For the purpose of this warning, any function marked with attribute
  \&\f(CW\*(C`noreturn\*(C'\fR is considered as a possible assertion failure
  handler, including \f(CW\*(C`_\|_builtin_unreachable\*(C'\fR.  Note that these functions
! are sometimes removed by the optimizer before the analyzer "sees" them.
  Hence optimization should be disabled when attempting to trigger this
  diagnostic.
  .Sp
! See  CWE\-617: Reachable Assertion (\f(CW\*(C`https://cwe.mitre.org/data/definitions/617.html\*(C'\fR).
  .Sp
  The warning can also report problematic constructions such as
  .Sp
*************** The warning can also report problematic
*** 10814,10864 ****
  .Sp
  despite the above not being an assertion failure, strictly speaking.
  .RE
! .IP "\fB\-Wno\-analyzer\-tainted\-array\-index\fR" 4
  .IX Item "-Wno-analyzer-tainted-array-index"
  This warning requires \fB\-fanalyzer\fR which enables it;
  use \fB\-Wno\-analyzer\-tainted\-array\-index\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a value
! that could be under an attacker's control is used as the index
  of an array access without being sanitized, so that an attacker
! could inject an out-of-bounds access.
  .Sp
! See  \s-1CWE\-129:\s0 Improper Validation of Array Index (\f(CW\*(C`https://cwe.mitre.org/data/definitions/129.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-tainted\-divisor\fR" 4
  .IX Item "-Wno-analyzer-tainted-divisor"
  This warning requires \fB\-fanalyzer\fR which enables it;
  use \fB\-Wno\-analyzer\-tainted\-divisor\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a value
! that could be under an attacker's control is used as the divisor
  in a division or modulus operation without being sanitized, so that
! an attacker could inject a division-by-zero.
  .Sp
! See  \s-1CWE\-369:\s0 Divide By Zero (\f(CW\*(C`https://cwe.mitre.org/data/definitions/369.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-tainted\-offset\fR" 4
  .IX Item "-Wno-analyzer-tainted-offset"
  This warning requires \fB\-fanalyzer\fR which enables it;
  use \fB\-Wno\-analyzer\-tainted\-offset\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a value
! that could be under an attacker's control is used as a pointer offset
! without being sanitized, so that an attacker could inject an out-of-bounds
  access.
  .Sp
! See  \s-1CWE\-823:\s0 Use of Out-of-range Pointer Offset (\f(CW\*(C`https://cwe.mitre.org/data/definitions/823.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-tainted\-size\fR" 4
  .IX Item "-Wno-analyzer-tainted-size"
  This warning requires \fB\-fanalyzer\fR which enables it;
  use \fB\-Wno\-analyzer\-tainted\-size\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a value
! that could be under an attacker's control is used as the size of
  an operation such as \f(CW\*(C`memset\*(C'\fR without being sanitized, so that an
! attacker could inject an out-of-bounds access.
  .Sp
! See  \s-1CWE\-129:\s0 Improper Validation of Array Index (\f(CW\*(C`https://cwe.mitre.org/data/definitions/129.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-undefined\-behavior\-ptrdiff\fR" 4
  .IX Item "-Wno-analyzer-undefined-behavior-ptrdiff"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-undefined\-behavior\-ptrdiff\fR to disable it.
--- 10747,10797 ----
  .Sp
  despite the above not being an assertion failure, strictly speaking.
  .RE
! .IP \fB\-Wno\-analyzer\-tainted\-array\-index\fR 4
  .IX Item "-Wno-analyzer-tainted-array-index"
  This warning requires \fB\-fanalyzer\fR which enables it;
  use \fB\-Wno\-analyzer\-tainted\-array\-index\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a value
! that could be under an attacker\*(Aqs control is used as the index
  of an array access without being sanitized, so that an attacker
! could inject an out\-of\-bounds access.
  .Sp
! See  CWE\-129: Improper Validation of Array Index (\f(CW\*(C`https://cwe.mitre.org/data/definitions/129.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-tainted\-divisor\fR 4
  .IX Item "-Wno-analyzer-tainted-divisor"
  This warning requires \fB\-fanalyzer\fR which enables it;
  use \fB\-Wno\-analyzer\-tainted\-divisor\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a value
! that could be under an attacker\*(Aqs control is used as the divisor
  in a division or modulus operation without being sanitized, so that
! an attacker could inject a division\-by\-zero.
  .Sp
! See  CWE\-369: Divide By Zero (\f(CW\*(C`https://cwe.mitre.org/data/definitions/369.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-tainted\-offset\fR 4
  .IX Item "-Wno-analyzer-tainted-offset"
  This warning requires \fB\-fanalyzer\fR which enables it;
  use \fB\-Wno\-analyzer\-tainted\-offset\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a value
! that could be under an attacker\*(Aqs control is used as a pointer offset
! without being sanitized, so that an attacker could inject an out\-of\-bounds
  access.
  .Sp
! See  CWE\-823: Use of Out\-of\-range Pointer Offset (\f(CW\*(C`https://cwe.mitre.org/data/definitions/823.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-tainted\-size\fR 4
  .IX Item "-Wno-analyzer-tainted-size"
  This warning requires \fB\-fanalyzer\fR which enables it;
  use \fB\-Wno\-analyzer\-tainted\-size\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a value
! that could be under an attacker\*(Aqs control is used as the size of
  an operation such as \f(CW\*(C`memset\*(C'\fR without being sanitized, so that an
! attacker could inject an out\-of\-bounds access.
  .Sp
! See  CWE\-129: Improper Validation of Array Index (\f(CW\*(C`https://cwe.mitre.org/data/definitions/129.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-undefined\-behavior\-ptrdiff\fR 4
  .IX Item "-Wno-analyzer-undefined-behavior-ptrdiff"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-undefined\-behavior\-ptrdiff\fR to disable it.
*************** memory.  Such code relies on undefined b
*** 10869,10876 ****
  is only defined for cases where both pointers point to within (or just
  after) the same array.
  .Sp
! See  \s-1CWE\-469:\s0 Use of Pointer Subtraction to Determine Size (\f(CW\*(C`https://cwe.mitre.org/data/definitions/469.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-undefined\-behavior\-strtok\fR" 4
  .IX Item "-Wno-analyzer-undefined-behavior-strtok"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-undefined\-behavior\-strtok\fR to disable it.
--- 10802,10809 ----
  is only defined for cases where both pointers point to within (or just
  after) the same array.
  .Sp
! See  CWE\-469: Use of Pointer Subtraction to Determine Size (\f(CW\*(C`https://cwe.mitre.org/data/definitions/469.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-undefined\-behavior\-strtok\fR 4
  .IX Item "-Wno-analyzer-undefined-behavior-strtok"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-undefined\-behavior\-strtok\fR to disable it.
*************** This warning requires \fB\-fanalyzer\fR,
*** 10878,10896 ****
  This diagnostic warns for paths through the code in which a
  call is made to \f(CW\*(C`strtok\*(C'\fR with undefined behavior.
  .Sp
! Specifically, passing \s-1NULL\s0 as the first parameter for the initial
  call to \f(CW\*(C`strtok\*(C'\fR within a process has undefined behavior.
! .IP "\fB\-Wno\-analyzer\-unsafe\-call\-within\-signal\-handler\fR" 4
  .IX Item "-Wno-analyzer-unsafe-call-within-signal-handler"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-unsafe\-call\-within\-signal\-handler\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
! function known to be async-signal-unsafe (such as \f(CW\*(C`fprintf\*(C'\fR) is
  called from a signal handler.
  .Sp
! See  \s-1CWE\-479:\s0 Signal Handler Use of a Non-reentrant Function (\f(CW\*(C`https://cwe.mitre.org/data/definitions/479.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-use\-after\-free\fR" 4
  .IX Item "-Wno-analyzer-use-after-free"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-use\-after\-free\fR to disable it.
--- 10811,10829 ----
  This diagnostic warns for paths through the code in which a
  call is made to \f(CW\*(C`strtok\*(C'\fR with undefined behavior.
  .Sp
! Specifically, passing NULL as the first parameter for the initial
  call to \f(CW\*(C`strtok\*(C'\fR within a process has undefined behavior.
! .IP \fB\-Wno\-analyzer\-unsafe\-call\-within\-signal\-handler\fR 4
  .IX Item "-Wno-analyzer-unsafe-call-within-signal-handler"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-unsafe\-call\-within\-signal\-handler\fR to disable it.
  .Sp
  This diagnostic warns for paths through the code in which a
! function known to be async\-signal\-unsafe (such as \f(CW\*(C`fprintf\*(C'\fR) is
  called from a signal handler.
  .Sp
! See  CWE\-479: Signal Handler Use of a Non\-reentrant Function (\f(CW\*(C`https://cwe.mitre.org/data/definitions/479.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-use\-after\-free\fR 4
  .IX Item "-Wno-analyzer-use-after-free"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-use\-after\-free\fR to disable it.
*************** This diagnostic warns for paths through
*** 10899,10906 ****
  pointer is used after a deallocator is called on it: either \f(CW\*(C`free\*(C'\fR,
  or a deallocator referenced by attribute \f(CW\*(C`malloc\*(C'\fR.
  .Sp
! See  \s-1CWE\-416:\s0 Use After Free (\f(CW\*(C`https://cwe.mitre.org/data/definitions/416.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-use\-of\-pointer\-in\-stale\-stack\-frame\fR" 4
  .IX Item "-Wno-analyzer-use-of-pointer-in-stale-stack-frame"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-use\-of\-pointer\-in\-stale\-stack\-frame\fR
--- 10832,10839 ----
  pointer is used after a deallocator is called on it: either \f(CW\*(C`free\*(C'\fR,
  or a deallocator referenced by attribute \f(CW\*(C`malloc\*(C'\fR.
  .Sp
! See  CWE\-416: Use After Free (\f(CW\*(C`https://cwe.mitre.org/data/definitions/416.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-use\-of\-pointer\-in\-stale\-stack\-frame\fR 4
  .IX Item "-Wno-analyzer-use-of-pointer-in-stale-stack-frame"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-use\-of\-pointer\-in\-stale\-stack\-frame\fR
*************** to disable it.
*** 10908,10914 ****
  .Sp
  This diagnostic warns for paths through the code in which a pointer
  is dereferenced that points to a variable in a stale stack frame.
! .IP "\fB\-Wno\-analyzer\-va\-arg\-type\-mismatch\fR" 4
  .IX Item "-Wno-analyzer-va-arg-type-mismatch"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-va\-arg\-type\-mismatch\fR
--- 10841,10847 ----
  .Sp
  This diagnostic warns for paths through the code in which a pointer
  is dereferenced that points to a variable in a stale stack frame.
! .IP \fB\-Wno\-analyzer\-va\-arg\-type\-mismatch\fR 4
  .IX Item "-Wno-analyzer-va-arg-type-mismatch"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-va\-arg\-type\-mismatch\fR
*************** the analyzer detects an attempt to use \
*** 10919,10926 ****
  passed to a variadic call, but uses a type that does not match that of
  the expression passed to the call.
  .Sp
! See  \s-1CWE\-686:\s0 Function Call With Incorrect Argument Type (\f(CW\*(C`https://cwe.mitre.org/data/definitions/686.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-va\-list\-exhausted\fR" 4
  .IX Item "-Wno-analyzer-va-list-exhausted"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-va\-list\-exhausted\fR
--- 10852,10859 ----
  passed to a variadic call, but uses a type that does not match that of
  the expression passed to the call.
  .Sp
! See  CWE\-686: Function Call With Incorrect Argument Type (\f(CW\*(C`https://cwe.mitre.org/data/definitions/686.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-va\-list\-exhausted\fR 4
  .IX Item "-Wno-analyzer-va-list-exhausted"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-va\-list\-exhausted\fR
*************** the analyzer detects an attempt to use \
*** 10931,10938 ****
  value passed to a variadic call, but all of the values in the
  \&\f(CW\*(C`va_list\*(C'\fR have already been consumed.
  .Sp
! See  \s-1CWE\-685:\s0 Function Call With Incorrect Number of Arguments (\f(CW\*(C`https://cwe.mitre.org/data/definitions/685.html\*(C'\fR).
! .IP "\fB\-Wno\-analyzer\-va\-list\-leak\fR" 4
  .IX Item "-Wno-analyzer-va-list-leak"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-va\-list\-leak\fR
--- 10864,10871 ----
  value passed to a variadic call, but all of the values in the
  \&\f(CW\*(C`va_list\*(C'\fR have already been consumed.
  .Sp
! See  CWE\-685: Function Call With Incorrect Number of Arguments (\f(CW\*(C`https://cwe.mitre.org/data/definitions/685.html\*(C'\fR).
! .IP \fB\-Wno\-analyzer\-va\-list\-leak\fR 4
  .IX Item "-Wno-analyzer-va-list-leak"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-va\-list\-leak\fR
*************** to disable it.
*** 10941,10947 ****
  This diagnostic warns for interprocedural paths through the code for which
  the analyzer detects that \f(CW\*(C`va_start\*(C'\fR or \f(CW\*(C`va_copy\*(C'\fR has been called
  on a \f(CW\*(C`va_list\*(C'\fR without a corresponding call to \f(CW\*(C`va_end\*(C'\fR.
! .IP "\fB\-Wno\-analyzer\-va\-list\-use\-after\-va\-end\fR" 4
  .IX Item "-Wno-analyzer-va-list-use-after-va-end"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-va\-list\-use\-after\-va\-end\fR
--- 10874,10880 ----
  This diagnostic warns for interprocedural paths through the code for which
  the analyzer detects that \f(CW\*(C`va_start\*(C'\fR or \f(CW\*(C`va_copy\*(C'\fR has been called
  on a \f(CW\*(C`va_list\*(C'\fR without a corresponding call to \f(CW\*(C`va_end\*(C'\fR.
! .IP \fB\-Wno\-analyzer\-va\-list\-use\-after\-va\-end\fR 4
  .IX Item "-Wno-analyzer-va-list-use-after-va-end"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-va\-list\-use\-after\-va\-end\fR
*************** This diagnostic warns for interprocedura
*** 10951,10957 ****
  the analyzer detects an attempt to use a \f(CW\*(C`va_list\*(C'\fR  after
  \&\f(CW\*(C`va_end\*(C'\fR has been called on it.
  \&\f(CW\*(C`va_list\*(C'\fR.
! .IP "\fB\-Wno\-analyzer\-write\-to\-const\fR" 4
  .IX Item "-Wno-analyzer-write-to-const"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-write\-to\-const\fR
--- 10884,10890 ----
  the analyzer detects an attempt to use a \f(CW\*(C`va_list\*(C'\fR  after
  \&\f(CW\*(C`va_end\*(C'\fR has been called on it.
  \&\f(CW\*(C`va_list\*(C'\fR.
! .IP \fB\-Wno\-analyzer\-write\-to\-const\fR 4
  .IX Item "-Wno-analyzer-write-to-const"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-write\-to\-const\fR
*************** This diagnostic warns for paths through
*** 10961,10967 ****
  detects an attempt to write through a pointer to a \f(CW\*(C`const\*(C'\fR object.
  However, the analyzer does not prioritize detection of such paths, so
  false negatives are more likely relative to other warnings.
! .IP "\fB\-Wno\-analyzer\-write\-to\-string\-literal\fR" 4
  .IX Item "-Wno-analyzer-write-to-string-literal"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-write\-to\-string\-literal\fR
--- 10894,10900 ----
  detects an attempt to write through a pointer to a \f(CW\*(C`const\*(C'\fR object.
  However, the analyzer does not prioritize detection of such paths, so
  false negatives are more likely relative to other warnings.
! .IP \fB\-Wno\-analyzer\-write\-to\-string\-literal\fR 4
  .IX Item "-Wno-analyzer-write-to-string-literal"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-write\-to\-string\-literal\fR
*************** This diagnostic warns for paths through
*** 10971,10977 ****
  detects an attempt to write through a pointer to a string literal.
  However, the analyzer does not prioritize detection of such paths, so
  false negatives are more likely relative to other warnings.
! .IP "\fB\-Wno\-analyzer\-use\-of\-uninitialized\-value\fR" 4
  .IX Item "-Wno-analyzer-use-of-uninitialized-value"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-use\-of\-uninitialized\-value\fR to disable it.
--- 10904,10910 ----
  detects an attempt to write through a pointer to a string literal.
  However, the analyzer does not prioritize detection of such paths, so
  false negatives are more likely relative to other warnings.
! .IP \fB\-Wno\-analyzer\-use\-of\-uninitialized\-value\fR 4
  .IX Item "-Wno-analyzer-use-of-uninitialized-value"
  This warning requires \fB\-fanalyzer\fR, which enables it; use
  \&\fB\-Wno\-analyzer\-use\-of\-uninitialized\-value\fR to disable it.
*************** This warning requires \fB\-fanalyzer\fR,
*** 10979,10994 ****
  This diagnostic warns for paths through the code in which an uninitialized
  value is used.
  .Sp
! See  \s-1CWE\-457:\s0 Use of Uninitialized Variable (\f(CW\*(C`https://cwe.mitre.org/data/definitions/457.html\*(C'\fR).
  .PP
  The analyzer has hardcoded knowledge about the behavior of the following
! memory-management functions:
  .ie n .IP "*<""alloca"">" 4
! .el .IP "*<\f(CWalloca\fR>" 4
  .IX Item "*<alloca>"
  .PD 0
! .ie n .IP "*<The built-in functions ""_\|_builtin_alloc"",>" 4
! .el .IP "*<The built-in functions \f(CW_\|_builtin_alloc\fR,>" 4
  .IX Item "*<The built-in functions __builtin_alloc,>"
  .PD
  \&\f(CW\*(C`_\|_builtin_alloc_with_align\*(C'\fR, \f(CW@item\fR \f(CW\*(C`_\|_builtin_calloc\*(C'\fR,
--- 10912,10927 ----
  This diagnostic warns for paths through the code in which an uninitialized
  value is used.
  .Sp
! See  CWE\-457: Use of Uninitialized Variable (\f(CW\*(C`https://cwe.mitre.org/data/definitions/457.html\*(C'\fR).
  .PP
  The analyzer has hardcoded knowledge about the behavior of the following
! memory\-management functions:
  .ie n .IP "*<""alloca"">" 4
! .el .IP *<\f(CWalloca\fR> 4
  .IX Item "*<alloca>"
  .PD 0
! .ie n .IP "*<The built\-in functions ""_\|_builtin_alloc"",>" 4
! .el .IP "*<The built\-in functions \f(CW_\|_builtin_alloc\fR,>" 4
  .IX Item "*<The built-in functions __builtin_alloc,>"
  .PD
  \&\f(CW\*(C`_\|_builtin_alloc_with_align\*(C'\fR, \f(CW@item\fR \f(CW\*(C`_\|_builtin_calloc\*(C'\fR,
*************** memory-management functions:
*** 10997,11013 ****
  \&\f(CW\*(C`_\|_builtin_memset_chk\*(C'\fR, \f(CW\*(C`_\|_builtin_realloc\*(C'\fR,
  \&\f(CW\*(C`_\|_builtin_stack_restore\*(C'\fR, and \f(CW\*(C`_\|_builtin_stack_save\*(C'\fR
  .ie n .IP "*<""calloc"">" 4
! .el .IP "*<\f(CWcalloc\fR>" 4
  .IX Item "*<calloc>"
  .PD 0
  .ie n .IP "*<""free"">" 4
! .el .IP "*<\f(CWfree\fR>" 4
  .IX Item "*<free>"
  .ie n .IP "*<""malloc"">" 4
! .el .IP "*<\f(CWmalloc\fR>" 4
  .IX Item "*<malloc>"
  .ie n .IP "*<""memset"">" 4
! .el .IP "*<\f(CWmemset\fR>" 4
  .IX Item "*<memset>"
  .ie n .IP "*<""operator delete"">" 4
  .el .IP "*<\f(CWoperator delete\fR>" 4
--- 10930,10946 ----
  \&\f(CW\*(C`_\|_builtin_memset_chk\*(C'\fR, \f(CW\*(C`_\|_builtin_realloc\*(C'\fR,
  \&\f(CW\*(C`_\|_builtin_stack_restore\*(C'\fR, and \f(CW\*(C`_\|_builtin_stack_save\*(C'\fR
  .ie n .IP "*<""calloc"">" 4
! .el .IP *<\f(CWcalloc\fR> 4
  .IX Item "*<calloc>"
  .PD 0
  .ie n .IP "*<""free"">" 4
! .el .IP *<\f(CWfree\fR> 4
  .IX Item "*<free>"
  .ie n .IP "*<""malloc"">" 4
! .el .IP *<\f(CWmalloc\fR> 4
  .IX Item "*<malloc>"
  .ie n .IP "*<""memset"">" 4
! .el .IP *<\f(CWmemset\fR> 4
  .IX Item "*<memset>"
  .ie n .IP "*<""operator delete"">" 4
  .el .IP "*<\f(CWoperator delete\fR>" 4
*************** memory-management functions:
*** 11022,11062 ****
  .el .IP "*<\f(CWoperator new []\fR>" 4
  .IX Item "*<operator new []>"
  .ie n .IP "*<""realloc"">" 4
! .el .IP "*<\f(CWrealloc\fR>" 4
  .IX Item "*<realloc>"
  .ie n .IP "*<""strdup"">" 4
! .el .IP "*<\f(CWstrdup\fR>" 4
  .IX Item "*<strdup>"
  .ie n .IP "*<""strndup"">" 4
! .el .IP "*<\f(CWstrndup\fR>" 4
  .IX Item "*<strndup>"
  .PD
  .PP
  of the following functions for working with file descriptors:
  .ie n .IP "*<""open"">" 4
! .el .IP "*<\f(CWopen\fR>" 4
  .IX Item "*<open>"
  .PD 0
  .ie n .IP "*<""close"">" 4
! .el .IP "*<\f(CWclose\fR>" 4
  .IX Item "*<close>"
  .ie n .IP "*<""creat"">" 4
! .el .IP "*<\f(CWcreat\fR>" 4
  .IX Item "*<creat>"
  .ie n .IP "*<""dup"", ""dup2"" and ""dup3"">" 4
  .el .IP "*<\f(CWdup\fR, \f(CWdup2\fR and \f(CWdup3\fR>" 4
  .IX Item "*<dup, dup2 and dup3>"
  .ie n .IP "*<""isatty"">" 4
! .el .IP "*<\f(CWisatty\fR>" 4
  .IX Item "*<isatty>"
  .ie n .IP "*<""pipe"", and ""pipe2"">" 4
  .el .IP "*<\f(CWpipe\fR, and \f(CWpipe2\fR>" 4
  .IX Item "*<pipe, and pipe2>"
  .ie n .IP "*<""read"">" 4
! .el .IP "*<\f(CWread\fR>" 4
  .IX Item "*<read>"
  .ie n .IP "*<""write"">" 4
! .el .IP "*<\f(CWwrite\fR>" 4
  .IX Item "*<write>"
  .ie n .IP "*<""socket"", ""bind"", ""listen"", ""accept"", and ""connect"">" 4
  .el .IP "*<\f(CWsocket\fR, \f(CWbind\fR, \f(CWlisten\fR, \f(CWaccept\fR, and \f(CWconnect\fR>" 4
--- 10955,10995 ----
  .el .IP "*<\f(CWoperator new []\fR>" 4
  .IX Item "*<operator new []>"
  .ie n .IP "*<""realloc"">" 4
! .el .IP *<\f(CWrealloc\fR> 4
  .IX Item "*<realloc>"
  .ie n .IP "*<""strdup"">" 4
! .el .IP *<\f(CWstrdup\fR> 4
  .IX Item "*<strdup>"
  .ie n .IP "*<""strndup"">" 4
! .el .IP *<\f(CWstrndup\fR> 4
  .IX Item "*<strndup>"
  .PD
  .PP
  of the following functions for working with file descriptors:
  .ie n .IP "*<""open"">" 4
! .el .IP *<\f(CWopen\fR> 4
  .IX Item "*<open>"
  .PD 0
  .ie n .IP "*<""close"">" 4
! .el .IP *<\f(CWclose\fR> 4
  .IX Item "*<close>"
  .ie n .IP "*<""creat"">" 4
! .el .IP *<\f(CWcreat\fR> 4
  .IX Item "*<creat>"
  .ie n .IP "*<""dup"", ""dup2"" and ""dup3"">" 4
  .el .IP "*<\f(CWdup\fR, \f(CWdup2\fR and \f(CWdup3\fR>" 4
  .IX Item "*<dup, dup2 and dup3>"
  .ie n .IP "*<""isatty"">" 4
! .el .IP *<\f(CWisatty\fR> 4
  .IX Item "*<isatty>"
  .ie n .IP "*<""pipe"", and ""pipe2"">" 4
  .el .IP "*<\f(CWpipe\fR, and \f(CWpipe2\fR>" 4
  .IX Item "*<pipe, and pipe2>"
  .ie n .IP "*<""read"">" 4
! .el .IP *<\f(CWread\fR> 4
  .IX Item "*<read>"
  .ie n .IP "*<""write"">" 4
! .el .IP *<\f(CWwrite\fR> 4
  .IX Item "*<write>"
  .ie n .IP "*<""socket"", ""bind"", ""listen"", ""accept"", and ""connect"">" 4
  .el .IP "*<\f(CWsocket\fR, \f(CWbind\fR, \f(CWlisten\fR, \f(CWaccept\fR, and \f(CWconnect\fR>" 4
*************** of the following functions for working w
*** 11064,11071 ****
  .PD
  .PP
  of the following functions for working with \f(CW\*(C`<stdio.h>\*(C'\fR streams:
! .ie n .IP "*<The built-in functions ""_\|_builtin_fprintf"",>" 4
! .el .IP "*<The built-in functions \f(CW_\|_builtin_fprintf\fR,>" 4
  .IX Item "*<The built-in functions __builtin_fprintf,>"
  \&\f(CW\*(C`_\|_builtin_fprintf_unlocked\*(C'\fR, \f(CW\*(C`_\|_builtin_fputc\*(C'\fR,
  \&\f(CW\*(C`_\|_builtin_fputc_unlocked\*(C'\fR, \f(CW\*(C`_\|_builtin_fputs\*(C'\fR,
--- 10997,11004 ----
  .PD
  .PP
  of the following functions for working with \f(CW\*(C`<stdio.h>\*(C'\fR streams:
! .ie n .IP "*<The built\-in functions ""_\|_builtin_fprintf"",>" 4
! .el .IP "*<The built\-in functions \f(CW_\|_builtin_fprintf\fR,>" 4
  .IX Item "*<The built-in functions __builtin_fprintf,>"
  \&\f(CW\*(C`_\|_builtin_fprintf_unlocked\*(C'\fR, \f(CW\*(C`_\|_builtin_fputc\*(C'\fR,
  \&\f(CW\*(C`_\|_builtin_fputc_unlocked\*(C'\fR, \f(CW\*(C`_\|_builtin_fputs\*(C'\fR,
*************** of the following functions for working w
*** 11077,11166 ****
  \&\f(CW\*(C`_\|_builtin_puts_unlocked\*(C'\fR, \f(CW\*(C`_\|_builtin_vfprintf\*(C'\fR, and
  \&\f(CW\*(C`_\|_builtin_vprintf\*(C'\fR
  .ie n .IP "*<""fopen"">" 4
! .el .IP "*<\f(CWfopen\fR>" 4
  .IX Item "*<fopen>"
  .PD 0
  .ie n .IP "*<""fclose"">" 4
! .el .IP "*<\f(CWfclose\fR>" 4
  .IX Item "*<fclose>"
  .ie n .IP "*<""ferror"">" 4
! .el .IP "*<\f(CWferror\fR>" 4
  .IX Item "*<ferror>"
  .ie n .IP "*<""fgets"">" 4
! .el .IP "*<\f(CWfgets\fR>" 4
  .IX Item "*<fgets>"
  .ie n .IP "*<""fgets_unlocked"">" 4
! .el .IP "*<\f(CWfgets_unlocked\fR>" 4
  .IX Item "*<fgets_unlocked>"
  .ie n .IP "*<""fileno"">" 4
! .el .IP "*<\f(CWfileno\fR>" 4
  .IX Item "*<fileno>"
  .ie n .IP "*<""fread"">" 4
! .el .IP "*<\f(CWfread\fR>" 4
  .IX Item "*<fread>"
  .ie n .IP "*<""getc"">" 4
! .el .IP "*<\f(CWgetc\fR>" 4
  .IX Item "*<getc>"
  .ie n .IP "*<""getchar"">" 4
! .el .IP "*<\f(CWgetchar\fR>" 4
  .IX Item "*<getchar>"
  .ie n .IP "*<""fprintf"">" 4
! .el .IP "*<\f(CWfprintf\fR>" 4
  .IX Item "*<fprintf>"
  .ie n .IP "*<""printf"">" 4
! .el .IP "*<\f(CWprintf\fR>" 4
  .IX Item "*<printf>"
  .ie n .IP "*<""fwrite"">" 4
! .el .IP "*<\f(CWfwrite\fR>" 4
  .IX Item "*<fwrite>"
  .PD
  .PP
  and of the following functions:
! .ie n .IP "*<The built-in functions ""_\|_builtin_expect"",>" 4
! .el .IP "*<The built-in functions \f(CW_\|_builtin_expect\fR,>" 4
  .IX Item "*<The built-in functions __builtin_expect,>"
  \&\f(CW\*(C`_\|_builtin_expect_with_probability\*(C'\fR, \f(CW\*(C`_\|_builtin_strchr\*(C'\fR,
  \&\f(CW\*(C`_\|_builtin_strcpy\*(C'\fR, \f(CW\*(C`_\|_builtin_strcpy_chk\*(C'\fR,
  \&\f(CW\*(C`_\|_builtin_strlen\*(C'\fR, \f(CW\*(C`_\|_builtin_va_copy\*(C'\fR, and
  \&\f(CW\*(C`_\|_builtin_va_start\*(C'\fR
! .ie n .IP "*<The \s-1GNU\s0 extensions ""error"" and ""error_at_line"">" 4
! .el .IP "*<The \s-1GNU\s0 extensions \f(CWerror\fR and \f(CWerror_at_line\fR>" 4
  .IX Item "*<The GNU extensions error and error_at_line>"
  .PD 0
  .ie n .IP "*<""getpass"">" 4
! .el .IP "*<\f(CWgetpass\fR>" 4
  .IX Item "*<getpass>"
  .ie n .IP "*<""longjmp"">" 4
! .el .IP "*<\f(CWlongjmp\fR>" 4
  .IX Item "*<longjmp>"
  .ie n .IP "*<""putenv"">" 4
! .el .IP "*<\f(CWputenv\fR>" 4
  .IX Item "*<putenv>"
  .ie n .IP "*<""setjmp"">" 4
! .el .IP "*<\f(CWsetjmp\fR>" 4
  .IX Item "*<setjmp>"
  .ie n .IP "*<""siglongjmp"">" 4
! .el .IP "*<\f(CWsiglongjmp\fR>" 4
  .IX Item "*<siglongjmp>"
  .ie n .IP "*<""signal"">" 4
! .el .IP "*<\f(CWsignal\fR>" 4
  .IX Item "*<signal>"
  .ie n .IP "*<""sigsetjmp"">" 4
! .el .IP "*<\f(CWsigsetjmp\fR>" 4
  .IX Item "*<sigsetjmp>"
  .ie n .IP "*<""strcat"">" 4
! .el .IP "*<\f(CWstrcat\fR>" 4
  .IX Item "*<strcat>"
  .ie n .IP "*<""strchr"">" 4
! .el .IP "*<\f(CWstrchr\fR>" 4
  .IX Item "*<strchr>"
  .ie n .IP "*<""strlen"">" 4
! .el .IP "*<\f(CWstrlen\fR>" 4
  .IX Item "*<strlen>"
  .PD
  .PP
  In addition, various functions with an \f(CW\*(C`_\|_analyzer_\*(C'\fR prefix have
! special meaning to the analyzer, described in the \s-1GCC\s0 Internals manual.
  .PP
  Pertinent parameters for controlling the exploration are:
  .IP "*<\fB\-\-param analyzer\-bb\-explosion\-factor=\fR\fIvalue\fR>" 4
--- 11010,11099 ----
  \&\f(CW\*(C`_\|_builtin_puts_unlocked\*(C'\fR, \f(CW\*(C`_\|_builtin_vfprintf\*(C'\fR, and
  \&\f(CW\*(C`_\|_builtin_vprintf\*(C'\fR
  .ie n .IP "*<""fopen"">" 4
! .el .IP *<\f(CWfopen\fR> 4
  .IX Item "*<fopen>"
  .PD 0
  .ie n .IP "*<""fclose"">" 4
! .el .IP *<\f(CWfclose\fR> 4
  .IX Item "*<fclose>"
  .ie n .IP "*<""ferror"">" 4
! .el .IP *<\f(CWferror\fR> 4
  .IX Item "*<ferror>"
  .ie n .IP "*<""fgets"">" 4
! .el .IP *<\f(CWfgets\fR> 4
  .IX Item "*<fgets>"
  .ie n .IP "*<""fgets_unlocked"">" 4
! .el .IP *<\f(CWfgets_unlocked\fR> 4
  .IX Item "*<fgets_unlocked>"
  .ie n .IP "*<""fileno"">" 4
! .el .IP *<\f(CWfileno\fR> 4
  .IX Item "*<fileno>"
  .ie n .IP "*<""fread"">" 4
! .el .IP *<\f(CWfread\fR> 4
  .IX Item "*<fread>"
  .ie n .IP "*<""getc"">" 4
! .el .IP *<\f(CWgetc\fR> 4
  .IX Item "*<getc>"
  .ie n .IP "*<""getchar"">" 4
! .el .IP *<\f(CWgetchar\fR> 4
  .IX Item "*<getchar>"
  .ie n .IP "*<""fprintf"">" 4
! .el .IP *<\f(CWfprintf\fR> 4
  .IX Item "*<fprintf>"
  .ie n .IP "*<""printf"">" 4
! .el .IP *<\f(CWprintf\fR> 4
  .IX Item "*<printf>"
  .ie n .IP "*<""fwrite"">" 4
! .el .IP *<\f(CWfwrite\fR> 4
  .IX Item "*<fwrite>"
  .PD
  .PP
  and of the following functions:
! .ie n .IP "*<The built\-in functions ""_\|_builtin_expect"",>" 4
! .el .IP "*<The built\-in functions \f(CW_\|_builtin_expect\fR,>" 4
  .IX Item "*<The built-in functions __builtin_expect,>"
  \&\f(CW\*(C`_\|_builtin_expect_with_probability\*(C'\fR, \f(CW\*(C`_\|_builtin_strchr\*(C'\fR,
  \&\f(CW\*(C`_\|_builtin_strcpy\*(C'\fR, \f(CW\*(C`_\|_builtin_strcpy_chk\*(C'\fR,
  \&\f(CW\*(C`_\|_builtin_strlen\*(C'\fR, \f(CW\*(C`_\|_builtin_va_copy\*(C'\fR, and
  \&\f(CW\*(C`_\|_builtin_va_start\*(C'\fR
! .ie n .IP "*<The GNU extensions ""error"" and ""error_at_line"">" 4
! .el .IP "*<The GNU extensions \f(CWerror\fR and \f(CWerror_at_line\fR>" 4
  .IX Item "*<The GNU extensions error and error_at_line>"
  .PD 0
  .ie n .IP "*<""getpass"">" 4
! .el .IP *<\f(CWgetpass\fR> 4
  .IX Item "*<getpass>"
  .ie n .IP "*<""longjmp"">" 4
! .el .IP *<\f(CWlongjmp\fR> 4
  .IX Item "*<longjmp>"
  .ie n .IP "*<""putenv"">" 4
! .el .IP *<\f(CWputenv\fR> 4
  .IX Item "*<putenv>"
  .ie n .IP "*<""setjmp"">" 4
! .el .IP *<\f(CWsetjmp\fR> 4
  .IX Item "*<setjmp>"
  .ie n .IP "*<""siglongjmp"">" 4
! .el .IP *<\f(CWsiglongjmp\fR> 4
  .IX Item "*<siglongjmp>"
  .ie n .IP "*<""signal"">" 4
! .el .IP *<\f(CWsignal\fR> 4
  .IX Item "*<signal>"
  .ie n .IP "*<""sigsetjmp"">" 4
! .el .IP *<\f(CWsigsetjmp\fR> 4
  .IX Item "*<sigsetjmp>"
  .ie n .IP "*<""strcat"">" 4
! .el .IP *<\f(CWstrcat\fR> 4
  .IX Item "*<strcat>"
  .ie n .IP "*<""strchr"">" 4
! .el .IP *<\f(CWstrchr\fR> 4
  .IX Item "*<strchr>"
  .ie n .IP "*<""strlen"">" 4
! .el .IP *<\f(CWstrlen\fR> 4
  .IX Item "*<strlen>"
  .PD
  .PP
  In addition, various functions with an \f(CW\*(C`_\|_analyzer_\*(C'\fR prefix have
! special meaning to the analyzer, described in the GCC Internals manual.
  .PP
  Pertinent parameters for controlling the exploration are:
  .IP "*<\fB\-\-param analyzer\-bb\-explosion\-factor=\fR\fIvalue\fR>" 4
*************** Pertinent parameters for controlling the
*** 11175,11181 ****
  .PD
  .PP
  The following options control the analyzer.
! .IP "\fB\-fanalyzer\-call\-summaries\fR" 4
  .IX Item "-fanalyzer-call-summaries"
  Simplify interprocedural analysis by computing the effect of certain calls,
  rather than exploring all paths through the function from callsite to each
--- 11108,11114 ----
  .PD
  .PP
  The following options control the analyzer.
! .IP \fB\-fanalyzer\-call\-summaries\fR 4
  .IX Item "-fanalyzer-call-summaries"
  Simplify interprocedural analysis by computing the effect of certain calls,
  rather than exploring all paths through the function from callsite to each
*************** possible return.
*** 11184,11197 ****
  If enabled, call summaries are only used for functions with more than one
  call site, and that are sufficiently complicated (as per
  \&\fB\-\-param analyzer\-min\-snodes\-for\-call\-summary=\fR\fIvalue\fR).
! .IP "\fB\-fanalyzer\-checker=\fR\fIname\fR" 4
  .IX Item "-fanalyzer-checker=name"
  Restrict the analyzer to run just the named checker, and enable it.
! .IP "\fB\-fanalyzer\-debug\-text\-art\-headings\fR" 4
  .IX Item "-fanalyzer-debug-text-art-headings"
  This option is intended for analyzer developers.  If enabled,
  the analyzer will add extra annotations to any diagrams it generates.
! .IP "\fB\-fno\-analyzer\-feasibility\fR" 4
  .IX Item "-fno-analyzer-feasibility"
  This option is intended for analyzer developers.
  .Sp
--- 11117,11130 ----
  If enabled, call summaries are only used for functions with more than one
  call site, and that are sufficiently complicated (as per
  \&\fB\-\-param analyzer\-min\-snodes\-for\-call\-summary=\fR\fIvalue\fR).
! .IP \fB\-fanalyzer\-checker=\fR\fIname\fR 4
  .IX Item "-fanalyzer-checker=name"
  Restrict the analyzer to run just the named checker, and enable it.
! .IP \fB\-fanalyzer\-debug\-text\-art\-headings\fR 4
  .IX Item "-fanalyzer-debug-text-art-headings"
  This option is intended for analyzer developers.  If enabled,
  the analyzer will add extra annotations to any diagrams it generates.
! .IP \fB\-fno\-analyzer\-feasibility\fR 4
  .IX Item "-fno-analyzer-feasibility"
  This option is intended for analyzer developers.
  .Sp
*************** for each diagnostic it emits: that the c
*** 11200,11280 ****
  exclusive.  Diagnostics for which no feasible path can be found are rejected.
  This filtering can be suppressed with \fB\-fno\-analyzer\-feasibility\fR, for
  debugging issues in this code.
! .IP "\fB\-fanalyzer\-fine\-grained\fR" 4
  .IX Item "-fanalyzer-fine-grained"
  This option is intended for analyzer developers.
  .Sp
! Internally the analyzer builds an \*(L"exploded graph\*(R" that combines
  control flow graphs with data flow information.
  .Sp
  By default, an edge in this graph can contain the effects of a run
  of multiple statements within a basic block.  With
  \&\fB\-fanalyzer\-fine\-grained\fR, each statement gets its own edge.
! .IP "\fB\-fanalyzer\-show\-duplicate\-count\fR" 4
  .IX Item "-fanalyzer-show-duplicate-count"
  This option is intended for analyzer developers: if multiple diagnostics
  have been detected as being duplicates of each other, it emits a note when
  reporting the best diagnostic, giving the number of additional diagnostics
  that were suppressed by the deduplication logic.
! .IP "\fB\-fanalyzer\-show\-events\-in\-system\-headers\fR" 4
  .IX Item "-fanalyzer-show-events-in-system-headers"
  By default the analyzer emits simplified diagnostics paths by hiding
  events fully located within a system header.
  With \fB\-fanalyzer\-show\-events\-in\-system\-headers\fR such
  events are no longer suppressed.
! .IP "\fB\-fno\-analyzer\-state\-merge\fR" 4
  .IX Item "-fno-analyzer-state-merge"
  This option is intended for analyzer developers.
  .Sp
  By default the analyzer attempts to simplify analysis by merging
  sufficiently similar states at each program point as it builds its
! \&\*(L"exploded graph\*(R".  With \fB\-fno\-analyzer\-state\-merge\fR this
! merging can be suppressed, for debugging state-handling issues.
! .IP "\fB\-fno\-analyzer\-state\-purge\fR" 4
  .IX Item "-fno-analyzer-state-purge"
  This option is intended for analyzer developers.
  .Sp
  By default the analyzer attempts to simplify analysis by purging
  aspects of state at a program point that appear to no longer be relevant
! e.g. the values of locals that aren't accessed later in the function
! and which aren't relevant to leak analysis.
  .Sp
  With \fB\-fno\-analyzer\-state\-purge\fR this purging of state can
! be suppressed, for debugging state-handling issues.
! .IP "\fB\-fno\-analyzer\-suppress\-followups\fR" 4
  .IX Item "-fno-analyzer-suppress-followups"
  This option is intended for analyzer developers.
  .Sp
  By default the analyzer will stop exploring an execution path after
  encountering certain diagnostics, in order to avoid potentially issuing a
! cascade of follow-up diagnostics.
  .Sp
  The diagnostics that terminate analysis along a path are:
  .RS 4
! .IP "*<\fB\-Wanalyzer\-null\-argument\fR>" 4
  .IX Item "*<-Wanalyzer-null-argument>"
  .PD 0
! .IP "*<\fB\-Wanalyzer\-null\-dereference\fR>" 4
  .IX Item "*<-Wanalyzer-null-dereference>"
! .IP "*<\fB\-Wanalyzer\-use\-after\-free\fR>" 4
  .IX Item "*<-Wanalyzer-use-after-free>"
! .IP "*<\fB\-Wanalyzer\-use\-of\-pointer\-in\-stale\-stack\-frame\fR>" 4
  .IX Item "*<-Wanalyzer-use-of-pointer-in-stale-stack-frame>"
! .IP "*<\fB\-Wanalyzer\-use\-of\-uninitialized\-value\fR>" 4
  .IX Item "*<-Wanalyzer-use-of-uninitialized-value>"
  .RE
  .RS 4
- .PD
  .Sp
  With \fB\-fno\-analyzer\-suppress\-followups\fR the analyzer will
  continue to explore such paths even after such diagnostics, which may
  be helpful for debugging issues in the analyzer, or for microbenchmarks
  for detecting undefined behavior.
  .RE
! .IP "\fB\-fanalyzer\-transitivity\fR" 4
  .IX Item "-fanalyzer-transitivity"
  This option enables transitivity of constraints within the analyzer.
! .IP "\fB\-fno\-analyzer\-undo\-inlining\fR" 4
  .IX Item "-fno-analyzer-undo-inlining"
  This option is intended for analyzer developers.
  .Sp
--- 11133,11213 ----
  exclusive.  Diagnostics for which no feasible path can be found are rejected.
  This filtering can be suppressed with \fB\-fno\-analyzer\-feasibility\fR, for
  debugging issues in this code.
! .IP \fB\-fanalyzer\-fine\-grained\fR 4
  .IX Item "-fanalyzer-fine-grained"
  This option is intended for analyzer developers.
  .Sp
! Internally the analyzer builds an "exploded graph" that combines
  control flow graphs with data flow information.
  .Sp
  By default, an edge in this graph can contain the effects of a run
  of multiple statements within a basic block.  With
  \&\fB\-fanalyzer\-fine\-grained\fR, each statement gets its own edge.
! .IP \fB\-fanalyzer\-show\-duplicate\-count\fR 4
  .IX Item "-fanalyzer-show-duplicate-count"
  This option is intended for analyzer developers: if multiple diagnostics
  have been detected as being duplicates of each other, it emits a note when
  reporting the best diagnostic, giving the number of additional diagnostics
  that were suppressed by the deduplication logic.
! .IP \fB\-fanalyzer\-show\-events\-in\-system\-headers\fR 4
  .IX Item "-fanalyzer-show-events-in-system-headers"
  By default the analyzer emits simplified diagnostics paths by hiding
  events fully located within a system header.
  With \fB\-fanalyzer\-show\-events\-in\-system\-headers\fR such
  events are no longer suppressed.
! .IP \fB\-fno\-analyzer\-state\-merge\fR 4
  .IX Item "-fno-analyzer-state-merge"
  This option is intended for analyzer developers.
  .Sp
  By default the analyzer attempts to simplify analysis by merging
  sufficiently similar states at each program point as it builds its
! "exploded graph".  With \fB\-fno\-analyzer\-state\-merge\fR this
! merging can be suppressed, for debugging state\-handling issues.
! .IP \fB\-fno\-analyzer\-state\-purge\fR 4
  .IX Item "-fno-analyzer-state-purge"
  This option is intended for analyzer developers.
  .Sp
  By default the analyzer attempts to simplify analysis by purging
  aspects of state at a program point that appear to no longer be relevant
! e.g. the values of locals that aren\*(Aqt accessed later in the function
! and which aren\*(Aqt relevant to leak analysis.
  .Sp
  With \fB\-fno\-analyzer\-state\-purge\fR this purging of state can
! be suppressed, for debugging state\-handling issues.
! .IP \fB\-fno\-analyzer\-suppress\-followups\fR 4
  .IX Item "-fno-analyzer-suppress-followups"
  This option is intended for analyzer developers.
  .Sp
  By default the analyzer will stop exploring an execution path after
  encountering certain diagnostics, in order to avoid potentially issuing a
! cascade of follow\-up diagnostics.
  .Sp
  The diagnostics that terminate analysis along a path are:
  .RS 4
! .IP *<\fB\-Wanalyzer\-null\-argument\fR> 4
  .IX Item "*<-Wanalyzer-null-argument>"
  .PD 0
! .IP *<\fB\-Wanalyzer\-null\-dereference\fR> 4
  .IX Item "*<-Wanalyzer-null-dereference>"
! .IP *<\fB\-Wanalyzer\-use\-after\-free\fR> 4
  .IX Item "*<-Wanalyzer-use-after-free>"
! .IP *<\fB\-Wanalyzer\-use\-of\-pointer\-in\-stale\-stack\-frame\fR> 4
  .IX Item "*<-Wanalyzer-use-of-pointer-in-stale-stack-frame>"
! .IP *<\fB\-Wanalyzer\-use\-of\-uninitialized\-value\fR> 4
  .IX Item "*<-Wanalyzer-use-of-uninitialized-value>"
+ .PD
  .RE
  .RS 4
  .Sp
  With \fB\-fno\-analyzer\-suppress\-followups\fR the analyzer will
  continue to explore such paths even after such diagnostics, which may
  be helpful for debugging issues in the analyzer, or for microbenchmarks
  for detecting undefined behavior.
  .RE
! .IP \fB\-fanalyzer\-transitivity\fR 4
  .IX Item "-fanalyzer-transitivity"
  This option enables transitivity of constraints within the analyzer.
! .IP \fB\-fno\-analyzer\-undo\-inlining\fR 4
  .IX Item "-fno-analyzer-undo-inlining"
  This option is intended for analyzer developers.
  .Sp
*************** This option is intended for analyzer dev
*** 11282,11288 ****
  tools, and some optimizations have already been applied to the code.  In
  particular function inlining may have occurred, leading to the
  interprocedural execution paths emitted by the analyzer containing
! function frames that don't correspond to those in the original source
  code.
  .Sp
  By default the analyzer attempts to reconstruct the original function
--- 11215,11221 ----
  tools, and some optimizations have already been applied to the code.  In
  particular function inlining may have occurred, leading to the
  interprocedural execution paths emitted by the analyzer containing
! function frames that don\*(Aqt correspond to those in the original source
  code.
  .Sp
  By default the analyzer attempts to reconstruct the original function
*************** frames, and to emit events showing the i
*** 11291,11418 ****
  With \fB\-fno\-analyzer\-undo\-inlining\fR this attempt to reconstruct
  the original frame information can be disabled, which may be of help
  when debugging issues in the analyzer.
! .IP "\fB\-fanalyzer\-verbose\-edges\fR" 4
  .IX Item "-fanalyzer-verbose-edges"
  This option is intended for analyzer developers.  It enables more
! verbose, lower-level detail in the descriptions of control flow
  within diagnostic paths.
! .IP "\fB\-fanalyzer\-verbose\-state\-changes\fR" 4
  .IX Item "-fanalyzer-verbose-state-changes"
  This option is intended for analyzer developers.  It enables more
! verbose, lower-level detail in the descriptions of events relating
  to state machines within diagnostic paths.
! .IP "\fB\-fanalyzer\-verbosity=\fR\fIlevel\fR" 4
  .IX Item "-fanalyzer-verbosity=level"
  This option controls the complexity of the control flow paths that are
  emitted for analyzer diagnostics.
  .Sp
  The \fIlevel\fR can be one of:
  .RS 4
! .IP "\fB0\fR" 4
  .IX Item "0"
  At this level, interprocedural call and return events are displayed,
! along with the most pertinent state-change events relating to
  a diagnostic.  For example, for a double\-\f(CW\*(C`free\*(C'\fR diagnostic,
  both calls to \f(CW\*(C`free\*(C'\fR will be shown.
! .IP "\fB1\fR" 4
  .IX Item "1"
  As per the previous level, but also show events for the entry
  to each function.
! .IP "\fB2\fR" 4
  .IX Item "2"
  As per the previous level, but also show events relating to
  control flow that are significant to triggering the issue
! (e.g. \*(L"true path taken\*(R" at a conditional).
  .Sp
  This level is the default.
! .IP "\fB3\fR" 4
  .IX Item "3"
  As per the previous level, but show all control flow events, not
  just significant ones.
! .IP "\fB4\fR" 4
  .IX Item "4"
  This level is intended for analyzer developers; it adds various
  other events intended for debugging the analyzer.
  .RE
  .RS 4
  .RE
! .IP "\fB\-fdump\-analyzer\fR" 4
  .IX Item "-fdump-analyzer"
  Dump internal details about what the analyzer is doing to
! \&\fI\fIfile\fI.analyzer.txt\fR.
  \&\fB\-fdump\-analyzer\-stderr\fR overrides this option.
! .IP "\fB\-fdump\-analyzer\-stderr\fR" 4
  .IX Item "-fdump-analyzer-stderr"
  Dump internal details about what the analyzer is doing to stderr.
  This option overrides \fB\-fdump\-analyzer\fR.
! .IP "\fB\-fdump\-analyzer\-callgraph\fR" 4
  .IX Item "-fdump-analyzer-callgraph"
  Dump a representation of the call graph suitable for viewing with
! GraphViz to \fI\fIfile\fI.callgraph.dot\fR.
! .IP "\fB\-fdump\-analyzer\-exploded\-graph\fR" 4
  .IX Item "-fdump-analyzer-exploded-graph"
! Dump a representation of the \*(L"exploded graph\*(R" suitable for viewing with
! GraphViz to \fI\fIfile\fI.eg.dot\fR.
! Nodes are color-coded based on state-machine states to emphasize
  state changes.
! .IP "\fB\-fdump\-analyzer\-exploded\-nodes\fR" 4
  .IX Item "-fdump-analyzer-exploded-nodes"
! Emit diagnostics showing where nodes in the \*(L"exploded graph\*(R" are
  in relation to the program source.
! .IP "\fB\-fdump\-analyzer\-exploded\-nodes\-2\fR" 4
  .IX Item "-fdump-analyzer-exploded-nodes-2"
! Dump a textual representation of the \*(L"exploded graph\*(R" to
! \&\fI\fIfile\fI.eg.txt\fR.
! .IP "\fB\-fdump\-analyzer\-exploded\-nodes\-3\fR" 4
  .IX Item "-fdump-analyzer-exploded-nodes-3"
! Dump a textual representation of the \*(L"exploded graph\*(R" to
! one dump file per node, to \fI\fIfile\fI.eg\-\fIid\fI.txt\fR.
  This is typically a large number of dump files.
! .IP "\fB\-fdump\-analyzer\-exploded\-paths\fR" 4
  .IX Item "-fdump-analyzer-exploded-paths"
! Dump a textual representation of the \*(L"exploded path\*(R" for each
! diagnostic to \fI\fIfile\fI.\fIidx\fI.\fIkind\fI.epath.txt\fR.
! .IP "\fB\-fdump\-analyzer\-feasibility\fR" 4
  .IX Item "-fdump-analyzer-feasibility"
! Dump internal details about the analyzer's search for feasible paths.
  The details are written in a form suitable for viewing with GraphViz
! to filenames of the form \fI\fIfile\fI.*.fg.dot\fR,
! \&\fI\fIfile\fI.*.tg.dot\fR, and \fI\fIfile\fI.*.fpath.txt\fR.
! .IP "\fB\-fdump\-analyzer\-infinite\-loop\fR" 4
  .IX Item "-fdump-analyzer-infinite-loop"
! Dump internal details about the analyzer's search for infinite loops.
  The details are written in a form suitable for viewing with GraphViz
! to filenames of the form \fI\fIfile\fI.*.infinite\-loop.dot\fR.
! .IP "\fB\-fdump\-analyzer\-json\fR" 4
  .IX Item "-fdump-analyzer-json"
! Dump a compressed \s-1JSON\s0 representation of analyzer internals to
! \&\fI\fIfile\fI.analyzer.json.gz\fR.  The precise format is subject
  to change.
! .IP "\fB\-fdump\-analyzer\-state\-purge\fR" 4
  .IX Item "-fdump-analyzer-state-purge"
  As per \fB\-fdump\-analyzer\-supergraph\fR, dump a representation of the
! \&\*(L"supergraph\*(R" suitable for viewing with GraphViz, but annotate the
  graph with information on what state will be purged at each node.
! The graph is written to \fI\fIfile\fI.state\-purge.dot\fR.
! .IP "\fB\-fdump\-analyzer\-supergraph\fR" 4
  .IX Item "-fdump-analyzer-supergraph"
! Dump representations of the \*(L"supergraph\*(R" suitable for viewing with
! GraphViz to \fI\fIfile\fI.supergraph.dot\fR and to
! \&\fI\fIfile\fI.supergraph\-eg.dot\fR.  These show all of the
  control flow graphs in the program, with interprocedural edges for
  calls and returns.  The second dump contains annotations showing nodes
! in the \*(L"exploded graph\*(R" and diagnostics associated with them.
! .IP "\fB\-fdump\-analyzer\-untracked\fR" 4
  .IX Item "-fdump-analyzer-untracked"
  Emit custom warnings with internal details intended for analyzer developers.
  .SS "Options for Debugging Your Program"
  .IX Subsection "Options for Debugging Your Program"
! To tell \s-1GCC\s0 to emit extra information for use by a debugger, in almost
  all cases you need only to add \fB\-g\fR to your other options.  Some debug
! formats can co-exist (like \s-1DWARF\s0 with \s-1CTF\s0) when each of them is enabled
  explicitly by adding the respective command line option to your other options.
  .PP
! \&\s-1GCC\s0 allows you to use \fB\-g\fR with
  \&\fB\-O\fR.  The shortcuts taken by optimized code may occasionally
  be surprising: some variables you declared may not exist
  at all; flow of control may briefly move where you did not expect it;
--- 11224,11351 ----
  With \fB\-fno\-analyzer\-undo\-inlining\fR this attempt to reconstruct
  the original frame information can be disabled, which may be of help
  when debugging issues in the analyzer.
! .IP \fB\-fanalyzer\-verbose\-edges\fR 4
  .IX Item "-fanalyzer-verbose-edges"
  This option is intended for analyzer developers.  It enables more
! verbose, lower\-level detail in the descriptions of control flow
  within diagnostic paths.
! .IP \fB\-fanalyzer\-verbose\-state\-changes\fR 4
  .IX Item "-fanalyzer-verbose-state-changes"
  This option is intended for analyzer developers.  It enables more
! verbose, lower\-level detail in the descriptions of events relating
  to state machines within diagnostic paths.
! .IP \fB\-fanalyzer\-verbosity=\fR\fIlevel\fR 4
  .IX Item "-fanalyzer-verbosity=level"
  This option controls the complexity of the control flow paths that are
  emitted for analyzer diagnostics.
  .Sp
  The \fIlevel\fR can be one of:
  .RS 4
! .IP \fB0\fR 4
  .IX Item "0"
  At this level, interprocedural call and return events are displayed,
! along with the most pertinent state\-change events relating to
  a diagnostic.  For example, for a double\-\f(CW\*(C`free\*(C'\fR diagnostic,
  both calls to \f(CW\*(C`free\*(C'\fR will be shown.
! .IP \fB1\fR 4
  .IX Item "1"
  As per the previous level, but also show events for the entry
  to each function.
! .IP \fB2\fR 4
  .IX Item "2"
  As per the previous level, but also show events relating to
  control flow that are significant to triggering the issue
! (e.g. "true path taken" at a conditional).
  .Sp
  This level is the default.
! .IP \fB3\fR 4
  .IX Item "3"
  As per the previous level, but show all control flow events, not
  just significant ones.
! .IP \fB4\fR 4
  .IX Item "4"
  This level is intended for analyzer developers; it adds various
  other events intended for debugging the analyzer.
  .RE
  .RS 4
  .RE
! .IP \fB\-fdump\-analyzer\fR 4
  .IX Item "-fdump-analyzer"
  Dump internal details about what the analyzer is doing to
! \&\fIfile.analyzer.txt\fR.
  \&\fB\-fdump\-analyzer\-stderr\fR overrides this option.
! .IP \fB\-fdump\-analyzer\-stderr\fR 4
  .IX Item "-fdump-analyzer-stderr"
  Dump internal details about what the analyzer is doing to stderr.
  This option overrides \fB\-fdump\-analyzer\fR.
! .IP \fB\-fdump\-analyzer\-callgraph\fR 4
  .IX Item "-fdump-analyzer-callgraph"
  Dump a representation of the call graph suitable for viewing with
! GraphViz to \fIfile.callgraph.dot\fR.
! .IP \fB\-fdump\-analyzer\-exploded\-graph\fR 4
  .IX Item "-fdump-analyzer-exploded-graph"
! Dump a representation of the "exploded graph" suitable for viewing with
! GraphViz to \fIfile.eg.dot\fR.
! Nodes are color\-coded based on state\-machine states to emphasize
  state changes.
! .IP \fB\-fdump\-analyzer\-exploded\-nodes\fR 4
  .IX Item "-fdump-analyzer-exploded-nodes"
! Emit diagnostics showing where nodes in the "exploded graph" are
  in relation to the program source.
! .IP \fB\-fdump\-analyzer\-exploded\-nodes\-2\fR 4
  .IX Item "-fdump-analyzer-exploded-nodes-2"
! Dump a textual representation of the "exploded graph" to
! \&\fIfile.eg.txt\fR.
! .IP \fB\-fdump\-analyzer\-exploded\-nodes\-3\fR 4
  .IX Item "-fdump-analyzer-exploded-nodes-3"
! Dump a textual representation of the "exploded graph" to
! one dump file per node, to \fIfile.eg\-id.txt\fR.
  This is typically a large number of dump files.
! .IP \fB\-fdump\-analyzer\-exploded\-paths\fR 4
  .IX Item "-fdump-analyzer-exploded-paths"
! Dump a textual representation of the "exploded path" for each
! diagnostic to \fIfile.idx.kind.epath.txt\fR.
! .IP \fB\-fdump\-analyzer\-feasibility\fR 4
  .IX Item "-fdump-analyzer-feasibility"
! Dump internal details about the analyzer\*(Aqs search for feasible paths.
  The details are written in a form suitable for viewing with GraphViz
! to filenames of the form \fIfile.*.fg.dot\fR,
! \&\fIfile.*.tg.dot\fR, and \fIfile.*.fpath.txt\fR.
! .IP \fB\-fdump\-analyzer\-infinite\-loop\fR 4
  .IX Item "-fdump-analyzer-infinite-loop"
! Dump internal details about the analyzer\*(Aqs search for infinite loops.
  The details are written in a form suitable for viewing with GraphViz
! to filenames of the form \fIfile.*.infinite\-loop.dot\fR.
! .IP \fB\-fdump\-analyzer\-json\fR 4
  .IX Item "-fdump-analyzer-json"
! Dump a compressed JSON representation of analyzer internals to
! \&\fIfile.analyzer.json.gz\fR.  The precise format is subject
  to change.
! .IP \fB\-fdump\-analyzer\-state\-purge\fR 4
  .IX Item "-fdump-analyzer-state-purge"
  As per \fB\-fdump\-analyzer\-supergraph\fR, dump a representation of the
! "supergraph" suitable for viewing with GraphViz, but annotate the
  graph with information on what state will be purged at each node.
! The graph is written to \fIfile.state\-purge.dot\fR.
! .IP \fB\-fdump\-analyzer\-supergraph\fR 4
  .IX Item "-fdump-analyzer-supergraph"
! Dump representations of the "supergraph" suitable for viewing with
! GraphViz to \fIfile.supergraph.dot\fR and to
! \&\fIfile.supergraph\-eg.dot\fR.  These show all of the
  control flow graphs in the program, with interprocedural edges for
  calls and returns.  The second dump contains annotations showing nodes
! in the "exploded graph" and diagnostics associated with them.
! .IP \fB\-fdump\-analyzer\-untracked\fR 4
  .IX Item "-fdump-analyzer-untracked"
  Emit custom warnings with internal details intended for analyzer developers.
  .SS "Options for Debugging Your Program"
  .IX Subsection "Options for Debugging Your Program"
! To tell GCC to emit extra information for use by a debugger, in almost
  all cases you need only to add \fB\-g\fR to your other options.  Some debug
! formats can co\-exist (like DWARF with CTF) when each of them is enabled
  explicitly by adding the respective command line option to your other options.
  .PP
! GCC allows you to use \fB\-g\fR with
  \&\fB\-O\fR.  The shortcuts taken by optimized code may occasionally
  be surprising: some variables you declared may not exist
  at all; flow of control may briefly move where you did not expect it;
*************** using \fB\-Og\fR with \fB\-g\fR.
*** 11427,11538 ****
  With no \fB\-O\fR option at all, some compiler passes that collect
  information useful for debugging do not run at all, so that
  \&\fB\-Og\fR may result in a better debugging experience.
! .IP "\fB\-g\fR" 4
  .IX Item "-g"
! Produce debugging information in the operating system's native format
! (stabs, \s-1COFF, XCOFF,\s0 or \s-1DWARF\s0).  \s-1GDB\s0 can work with this debugging
  information.
  .Sp
  On most systems that use stabs format, \fB\-g\fR enables use of extra
! debugging information that only \s-1GDB\s0 can use; this extra information
! makes debugging work better in \s-1GDB\s0 but probably makes other debuggers
  crash or refuse to read the program.  If you want to control for certain whether
  to generate the extra information, use \fB\-gvms\fR (see below).
! .IP "\fB\-ggdb\fR" 4
  .IX Item "-ggdb"
! Produce debugging information for use by \s-1GDB.\s0  This means to use the
! most expressive format available (\s-1DWARF,\s0 stabs, or the native format
! if neither of those are supported), including \s-1GDB\s0 extensions if at all
  possible.
! .IP "\fB\-gdwarf\fR" 4
  .IX Item "-gdwarf"
  .PD 0
! .IP "\fB\-gdwarf\-\fR\fIversion\fR" 4
  .IX Item "-gdwarf-version"
  .PD
! Produce debugging information in \s-1DWARF\s0 format (if that is supported).
  The value of \fIversion\fR may be either 2, 3, 4 or 5; the default
! version for most targets is 5 (with the exception of VxWorks, \s-1TPF\s0 and
! Darwin / macOS, which default to version 2, and \s-1AIX,\s0 which defaults
  to version 4).
  .Sp
! Note that with \s-1DWARF\s0 Version 2, some ports require and always
! use some non-conflicting \s-1DWARF 3\s0 extensions in the unwind tables.
  .Sp
! Version 4 may require \s-1GDB 7.0\s0 and \fB\-fvar\-tracking\-assignments\fR
! for maximum benefit. Version 5 requires \s-1GDB 8.0\s0 or higher.
  .Sp
! \&\s-1GCC\s0 no longer supports \s-1DWARF\s0 Version 1, which is substantially
  different than Version 2 and later.  For historical reasons, some
! other DWARF-related options such as
! \&\fB\-fno\-dwarf2\-cfi\-asm\fR) retain a reference to \s-1DWARF\s0 Version 2
! in their names, but apply to all currently-supported versions of \s-1DWARF.\s0
! .IP "\fB\-gbtf\fR" 4
  .IX Item "-gbtf"
! Request \s-1BTF\s0 debug information.  \s-1BTF\s0 is the default debugging format for the
! eBPF target.  On other targets, like x86, \s-1BTF\s0 debug information can be
! generated along with \s-1DWARF\s0 debug information when both of the debug formats are
  enabled explicitly via their respective command line options.
! .IP "\fB\-gprune\-btf\fR" 4
  .IX Item "-gprune-btf"
  .PD 0
! .IP "\fB\-gno\-prune\-btf\fR" 4
  .IX Item "-gno-prune-btf"
  .PD
! Prune \s-1BTF\s0 information before emission.  When pruning, only type
! information for types used by global variables and file-scope functions
! will be emitted.  If compiling for the \s-1BPF\s0 target with \s-1BPF\s0 CO-RE
! enabled, type information will also be emitted for types used in \s-1BPF\s0
! CO-RE relocations.  In addition, struct and union types which are only
  referred to via pointers from members of other struct or union types
! shall be pruned and replaced with \s-1BTF_KIND_FWD,\s0 as though those types
  were only present in the input as forward declarations.
  .Sp
! This option substantially reduces the size of produced \s-1BTF\s0 information,
  but at significant loss in the amount of detailed type information.
! It is primarily useful when compiling for the \s-1BPF\s0 target, to minimize
! the size of the resulting object, and to eliminate \s-1BTF\s0 information
! which is not immediately relevant to the \s-1BPF\s0 program loading process.
  .Sp
! This option is enabled by default for the \s-1BPF\s0 target when generating
! \&\s-1BTF\s0 information.
! .IP "\fB\-gctf\fR" 4
  .IX Item "-gctf"
  .PD 0
! .IP "\fB\-gctf\fR\fIlevel\fR" 4
  .IX Item "-gctflevel"
  .PD
! Request \s-1CTF\s0 debug information and use level to specify how much \s-1CTF\s0 debug
  information should be produced.  If \fB\-gctf\fR is specified
! without a value for level, the default level of \s-1CTF\s0 debug information is 2.
  .Sp
! \&\s-1CTF\s0 debug information can be generated along with \s-1DWARF\s0 debug information when
  both of the debug formats are enabled explicitly via their respective command
  line options.
  .Sp
! Level 0 produces no \s-1CTF\s0 debug information at all.  Thus, \fB\-gctf0\fR
  negates \fB\-gctf\fR.
  .Sp
! Level 1 produces \s-1CTF\s0 information for tracebacks only.  This includes callsite
  information, but does not include type information.
  .Sp
  Level 2 produces type information for entities (functions, data objects etc.)
! at file-scope or global-scope only.
! .IP "\fB\-gvms\fR" 4
  .IX Item "-gvms"
  Produce debugging information in Alpha/VMS debug format (if that is
! supported).  This is the format used by \s-1DEBUG\s0 on Alpha/VMS systems.
! .IP "\fB\-gcodeview\fR" 4
  .IX Item "-gcodeview"
  Produce debugging information in CodeView debug format (if that is
! supported).  This is the format used by Microsoft Visual \*(C+ on
  Windows.
! .IP "\fB\-g\fR\fIlevel\fR" 4
  .IX Item "-glevel"
  .PD 0
! .IP "\fB\-ggdb\fR\fIlevel\fR" 4
  .IX Item "-ggdblevel"
! .IP "\fB\-gvms\fR\fIlevel\fR" 4
  .IX Item "-gvmslevel"
  .PD
  Request debugging information and also use \fIlevel\fR to specify how
--- 11360,11471 ----
  With no \fB\-O\fR option at all, some compiler passes that collect
  information useful for debugging do not run at all, so that
  \&\fB\-Og\fR may result in a better debugging experience.
! .IP \fB\-g\fR 4
  .IX Item "-g"
! Produce debugging information in the operating system\*(Aqs native format
! (stabs, COFF, XCOFF, or DWARF).  GDB can work with this debugging
  information.
  .Sp
  On most systems that use stabs format, \fB\-g\fR enables use of extra
! debugging information that only GDB can use; this extra information
! makes debugging work better in GDB but probably makes other debuggers
  crash or refuse to read the program.  If you want to control for certain whether
  to generate the extra information, use \fB\-gvms\fR (see below).
! .IP \fB\-ggdb\fR 4
  .IX Item "-ggdb"
! Produce debugging information for use by GDB.  This means to use the
! most expressive format available (DWARF, stabs, or the native format
! if neither of those are supported), including GDB extensions if at all
  possible.
! .IP \fB\-gdwarf\fR 4
  .IX Item "-gdwarf"
  .PD 0
! .IP \fB\-gdwarf\-\fR\fIversion\fR 4
  .IX Item "-gdwarf-version"
  .PD
! Produce debugging information in DWARF format (if that is supported).
  The value of \fIversion\fR may be either 2, 3, 4 or 5; the default
! version for most targets is 5 (with the exception of VxWorks, TPF and
! Darwin / macOS, which default to version 2, and AIX, which defaults
  to version 4).
  .Sp
! Note that with DWARF Version 2, some ports require and always
! use some non\-conflicting DWARF 3 extensions in the unwind tables.
  .Sp
! Version 4 may require GDB 7.0 and \fB\-fvar\-tracking\-assignments\fR
! for maximum benefit. Version 5 requires GDB 8.0 or higher.
  .Sp
! GCC no longer supports DWARF Version 1, which is substantially
  different than Version 2 and later.  For historical reasons, some
! other DWARF\-related options such as
! \&\fB\-fno\-dwarf2\-cfi\-asm\fR) retain a reference to DWARF Version 2
! in their names, but apply to all currently\-supported versions of DWARF.
! .IP \fB\-gbtf\fR 4
  .IX Item "-gbtf"
! Request BTF debug information.  BTF is the default debugging format for the
! eBPF target.  On other targets, like x86, BTF debug information can be
! generated along with DWARF debug information when both of the debug formats are
  enabled explicitly via their respective command line options.
! .IP \fB\-gprune\-btf\fR 4
  .IX Item "-gprune-btf"
  .PD 0
! .IP \fB\-gno\-prune\-btf\fR 4
  .IX Item "-gno-prune-btf"
  .PD
! Prune BTF information before emission.  When pruning, only type
! information for types used by global variables and file\-scope functions
! will be emitted.  If compiling for the BPF target with BPF CO\-RE
! enabled, type information will also be emitted for types used in BPF
! CO\-RE relocations.  In addition, struct and union types which are only
  referred to via pointers from members of other struct or union types
! shall be pruned and replaced with BTF_KIND_FWD, as though those types
  were only present in the input as forward declarations.
  .Sp
! This option substantially reduces the size of produced BTF information,
  but at significant loss in the amount of detailed type information.
! It is primarily useful when compiling for the BPF target, to minimize
! the size of the resulting object, and to eliminate BTF information
! which is not immediately relevant to the BPF program loading process.
  .Sp
! This option is enabled by default for the BPF target when generating
! BTF information.
! .IP \fB\-gctf\fR 4
  .IX Item "-gctf"
  .PD 0
! .IP \fB\-gctf\fR\fIlevel\fR 4
  .IX Item "-gctflevel"
  .PD
! Request CTF debug information and use level to specify how much CTF debug
  information should be produced.  If \fB\-gctf\fR is specified
! without a value for level, the default level of CTF debug information is 2.
  .Sp
! CTF debug information can be generated along with DWARF debug information when
  both of the debug formats are enabled explicitly via their respective command
  line options.
  .Sp
! Level 0 produces no CTF debug information at all.  Thus, \fB\-gctf0\fR
  negates \fB\-gctf\fR.
  .Sp
! Level 1 produces CTF information for tracebacks only.  This includes callsite
  information, but does not include type information.
  .Sp
  Level 2 produces type information for entities (functions, data objects etc.)
! at file\-scope or global\-scope only.
! .IP \fB\-gvms\fR 4
  .IX Item "-gvms"
  Produce debugging information in Alpha/VMS debug format (if that is
! supported).  This is the format used by DEBUG on Alpha/VMS systems.
! .IP \fB\-gcodeview\fR 4
  .IX Item "-gcodeview"
  Produce debugging information in CodeView debug format (if that is
! supported).  This is the format used by Microsoft Visual C++ on
  Windows.
! .IP \fB\-g\fR\fIlevel\fR 4
  .IX Item "-glevel"
  .PD 0
! .IP \fB\-ggdb\fR\fIlevel\fR 4
  .IX Item "-ggdblevel"
! .IP \fB\-gvms\fR\fIlevel\fR 4
  .IX Item "-gvmslevel"
  .PD
  Request debugging information and also use \fIlevel\fR to specify how
*************** Level 0 produces no debug information at
*** 11542,11548 ****
  \&\fB\-g\fR.
  .Sp
  Level 1 produces minimal information, enough for making backtraces in
! parts of the program that you don't plan to debug.  This includes
  descriptions of functions and external variables, and line number
  tables, but no information about local variables.
  .Sp
--- 11475,11481 ----
  \&\fB\-g\fR.
  .Sp
  Level 1 produces minimal information, enough for making backtraces in
! parts of the program that you don\*(Aqt plan to debug.  This includes
  descriptions of functions and external variables, and line number
  tables, but no information about local variables.
  .Sp
*************** the last such option is the one that is
*** 11556,11593 ****
  \&\fB\-gdwarf\fR does not accept a concatenated debug level, to avoid
  confusion with \fB\-gdwarf\-\fR\fIlevel\fR.
  Instead use an additional \fB\-g\fR\fIlevel\fR option to change the
! debug level for \s-1DWARF.\s0
! .IP "\fB\-fno\-eliminate\-unused\-debug\-symbols\fR" 4
  .IX Item "-fno-eliminate-unused-debug-symbols"
  By default, no debug information is produced for symbols that are not actually
  used. Use this option if you want debug information for all symbols.
! .IP "\fB\-femit\-class\-debug\-always\fR" 4
  .IX Item "-femit-class-debug-always"
! Instead of emitting debugging information for a \*(C+ class in only one
  object file, emit it in all object files using the class.  This option
! should be used only with debuggers that are unable to handle the way \s-1GCC\s0
  normally emits debugging information for classes because using this
  option increases the size of debugging information by as much as a
  factor of two.
! .IP "\fB\-fno\-merge\-debug\-strings\fR" 4
  .IX Item "-fno-merge-debug-strings"
  Direct the linker to not merge together strings in the debugging
  information that are identical in different object files.  Merging is
  not supported by all assemblers or linkers.  Merging decreases the size
  of the debug information in the output file at the cost of increasing
  link processing time.  Merging is enabled by default.
! .IP "\fB\-fdebug\-prefix\-map=\fR\fIold\fR\fB=\fR\fInew\fR" 4
  .IX Item "-fdebug-prefix-map=old=new"
! When compiling files residing in directory \fI\fIold\fI\fR, record
  debugging information describing them as if the files resided in
! directory \fI\fInew\fI\fR instead.  This can be used to replace a
! build-time path with an install-time path in the debug info.  It can
  also be used to change an absolute path to a relative path by using
  \&\fI.\fR for \fInew\fR.  This can give more reproducible builds, which
! are location independent, but may require an extra command to tell \s-1GDB\s0
  where to find the source files. See also \fB\-ffile\-prefix\-map\fR
  and \fB\-fcanon\-prefix\-map\fR.
! .IP "\fB\-fvar\-tracking\fR" 4
  .IX Item "-fvar-tracking"
  Run variable tracking pass.  It computes where variables are stored at each
  position in code.  Better debugging information is then generated
--- 11489,11526 ----
  \&\fB\-gdwarf\fR does not accept a concatenated debug level, to avoid
  confusion with \fB\-gdwarf\-\fR\fIlevel\fR.
  Instead use an additional \fB\-g\fR\fIlevel\fR option to change the
! debug level for DWARF.
! .IP \fB\-fno\-eliminate\-unused\-debug\-symbols\fR 4
  .IX Item "-fno-eliminate-unused-debug-symbols"
  By default, no debug information is produced for symbols that are not actually
  used. Use this option if you want debug information for all symbols.
! .IP \fB\-femit\-class\-debug\-always\fR 4
  .IX Item "-femit-class-debug-always"
! Instead of emitting debugging information for a C++ class in only one
  object file, emit it in all object files using the class.  This option
! should be used only with debuggers that are unable to handle the way GCC
  normally emits debugging information for classes because using this
  option increases the size of debugging information by as much as a
  factor of two.
! .IP \fB\-fno\-merge\-debug\-strings\fR 4
  .IX Item "-fno-merge-debug-strings"
  Direct the linker to not merge together strings in the debugging
  information that are identical in different object files.  Merging is
  not supported by all assemblers or linkers.  Merging decreases the size
  of the debug information in the output file at the cost of increasing
  link processing time.  Merging is enabled by default.
! .IP \fB\-fdebug\-prefix\-map=\fR\fIold\fR\fB=\fR\fInew\fR 4
  .IX Item "-fdebug-prefix-map=old=new"
! When compiling files residing in directory \fIold\fR, record
  debugging information describing them as if the files resided in
! directory \fInew\fR instead.  This can be used to replace a
! build\-time path with an install\-time path in the debug info.  It can
  also be used to change an absolute path to a relative path by using
  \&\fI.\fR for \fInew\fR.  This can give more reproducible builds, which
! are location independent, but may require an extra command to tell GDB
  where to find the source files. See also \fB\-ffile\-prefix\-map\fR
  and \fB\-fcanon\-prefix\-map\fR.
! .IP \fB\-fvar\-tracking\fR 4
  .IX Item "-fvar-tracking"
  Run variable tracking pass.  It computes where variables are stored at each
  position in code.  Better debugging information is then generated
*************** position in code.  Better debugging info
*** 11596,11731 ****
  It is enabled by default when compiling with optimization (\fB\-Os\fR,
  \&\fB\-O\fR, \fB\-O2\fR, ...), debugging information (\fB\-g\fR) and
  the debug info format supports it.
! .IP "\fB\-fvar\-tracking\-assignments\fR" 4
  .IX Item "-fvar-tracking-assignments"
  Annotate assignments to user variables early in the compilation and
  attempt to carry the annotations over throughout the compilation all the
  way to the end, in an attempt to improve debug information while
  optimizing.  Use of \fB\-gdwarf\-4\fR is recommended along with it.
  .Sp
! It can be enabled even if var-tracking is disabled, in which case
  annotations are created and maintained, but discarded at the end.
  By default, this flag is enabled together with \fB\-fvar\-tracking\fR,
  except when selective scheduling is enabled.
! .IP "\fB\-gsplit\-dwarf\fR" 4
  .IX Item "-gsplit-dwarf"
! If \s-1DWARF\s0 debugging information is enabled, separate as much debugging
  information as possible into a separate output file with the extension
  \&\fI.dwo\fR.  This option allows the build system to avoid linking files with
  debug information.  To be useful, this option requires a debugger capable of
  reading \fI.dwo\fR files.
! .IP "\fB\-gdwarf32\fR" 4
  .IX Item "-gdwarf32"
  .PD 0
! .IP "\fB\-gdwarf64\fR" 4
  .IX Item "-gdwarf64"
  .PD
! If \s-1DWARF\s0 debugging information is enabled, the \fB\-gdwarf32\fR selects
! the 32\-bit \s-1DWARF\s0 format and the \fB\-gdwarf64\fR selects the 64\-bit
! \&\s-1DWARF\s0 format.  The default is target specific, on most targets it is
! \&\fB\-gdwarf32\fR though.  The 32\-bit \s-1DWARF\s0 format is smaller, but
! can't support more than 2GiB of debug information in any of the \s-1DWARF\s0
! debug information sections.  The 64\-bit \s-1DWARF\s0 format allows larger debug
  information and might not be well supported by all consumers yet.
! .IP "\fB\-gdescribe\-dies\fR" 4
  .IX Item "-gdescribe-dies"
! Add description attributes to some \s-1DWARF\s0 DIEs that have no name attribute,
  such as artificial variables, external references and call site
  parameter DIEs.
! .IP "\fB\-gpubnames\fR" 4
  .IX Item "-gpubnames"
! Generate \s-1DWARF\s0 \f(CW\*(C`.debug_pubnames\*(C'\fR and \f(CW\*(C`.debug_pubtypes\*(C'\fR sections.
! .IP "\fB\-ggnu\-pubnames\fR" 4
  .IX Item "-ggnu-pubnames"
  Generate \f(CW\*(C`.debug_pubnames\*(C'\fR and \f(CW\*(C`.debug_pubtypes\*(C'\fR sections in a format
! suitable for conversion into a \s-1GDB\s0 index.  This option is only useful
! with a linker that can produce \s-1GDB\s0 index version 7.
! .IP "\fB\-fdebug\-types\-section\fR" 4
  .IX Item "-fdebug-types-section"
! When using \s-1DWARF\s0 Version 4 or higher, type DIEs can be put into
  their own \f(CW\*(C`.debug_types\*(C'\fR section instead of making them part of the
  \&\f(CW\*(C`.debug_info\*(C'\fR section.  It is more efficient to put them in a separate
  comdat section since the linker can then remove duplicates.
! But not all \s-1DWARF\s0 consumers support \f(CW\*(C`.debug_types\*(C'\fR sections yet
  and on some objects \f(CW\*(C`.debug_types\*(C'\fR produces larger instead of smaller
  debugging information.
! .IP "\fB\-grecord\-gcc\-switches\fR" 4
  .IX Item "-grecord-gcc-switches"
  .PD 0
! .IP "\fB\-gno\-record\-gcc\-switches\fR" 4
  .IX Item "-gno-record-gcc-switches"
  .PD
! This switch causes the command-line options used to invoke the
  compiler that may affect code generation to be appended to the
! DW_AT_producer attribute in \s-1DWARF\s0 debugging information.  The options
  are concatenated with spaces separating them from each other and from
  the compiler version.
  It is enabled by default.
  See also \fB\-frecord\-gcc\-switches\fR for another
  way of storing compiler options into the object file.
! .IP "\fB\-gstrict\-dwarf\fR" 4
  .IX Item "-gstrict-dwarf"
! Disallow using extensions of later \s-1DWARF\s0 standard version than selected
! with \fB\-gdwarf\-\fR\fIversion\fR.  On most targets using non-conflicting
! \&\s-1DWARF\s0 extensions from later standard versions is allowed.
! .IP "\fB\-gno\-strict\-dwarf\fR" 4
  .IX Item "-gno-strict-dwarf"
! Allow using extensions of later \s-1DWARF\s0 standard version than selected with
  \&\fB\-gdwarf\-\fR\fIversion\fR.
! .IP "\fB\-gas\-loc\-support\fR" 4
  .IX Item "-gas-loc-support"
  Inform the compiler that the assembler supports \f(CW\*(C`.loc\*(C'\fR directives.
! It may then use them for the assembler to generate \s-1DWARF2+\s0 line number
  tables.
  .Sp
! This is generally desirable, because assembler-generated line-number
  tables are a lot more compact than those the compiler can generate
  itself.
  .Sp
! This option will be enabled by default if, at \s-1GCC\s0 configure time, the
  assembler was found to support such directives.
! .IP "\fB\-gno\-as\-loc\-support\fR" 4
  .IX Item "-gno-as-loc-support"
! Force \s-1GCC\s0 to generate \s-1DWARF2+\s0 line number tables internally, if \s-1DWARF2+\s0
  line number tables are to be generated.
! .IP "\fB\-gas\-locview\-support\fR" 4
  .IX Item "-gas-locview-support"
  Inform the compiler that the assembler supports \f(CW\*(C`view\*(C'\fR assignment
  and reset assertion checking in \f(CW\*(C`.loc\*(C'\fR directives.
  .Sp
! This option will be enabled by default if, at \s-1GCC\s0 configure time, the
  assembler was found to support them.
! .IP "\fB\-gno\-as\-locview\-support\fR" 4
  .IX Item "-gno-as-locview-support"
! Force \s-1GCC\s0 to assign view numbers internally, if
  \&\fB\-gvariable\-location\-views\fR are explicitly requested.
! .IP "\fB\-gcolumn\-info\fR" 4
  .IX Item "-gcolumn-info"
  .PD 0
! .IP "\fB\-gno\-column\-info\fR" 4
  .IX Item "-gno-column-info"
  .PD
! Emit location column information into \s-1DWARF\s0 debugging information, rather
  than just file and line.
  This option is enabled by default.
! .IP "\fB\-gstatement\-frontiers\fR" 4
  .IX Item "-gstatement-frontiers"
  .PD 0
! .IP "\fB\-gno\-statement\-frontiers\fR" 4
  .IX Item "-gno-statement-frontiers"
  .PD
! This option causes \s-1GCC\s0 to create markers in the internal representation
  at the beginning of statements, and to keep them roughly in place
  throughout compilation, using them to guide the output of \f(CW\*(C`is_stmt\*(C'\fR
  markers in the line number table.  This is enabled by default when
  compiling with optimization (\fB\-Os\fR, \fB\-O1\fR, \fB\-O2\fR,
! \&...), and outputting \s-1DWARF 2\s0 debug information at the normal level.
! .IP "\fB\-gvariable\-location\-views\fR" 4
  .IX Item "-gvariable-location-views"
  .PD 0
! .IP "\fB\-gvariable\-location\-views=incompat5\fR" 4
  .IX Item "-gvariable-location-views=incompat5"
! .IP "\fB\-gno\-variable\-location\-views\fR" 4
  .IX Item "-gno-variable-location-views"
  .PD
  Augment variable location lists with progressive view numbers implied
--- 11529,11664 ----
  It is enabled by default when compiling with optimization (\fB\-Os\fR,
  \&\fB\-O\fR, \fB\-O2\fR, ...), debugging information (\fB\-g\fR) and
  the debug info format supports it.
! .IP \fB\-fvar\-tracking\-assignments\fR 4
  .IX Item "-fvar-tracking-assignments"
  Annotate assignments to user variables early in the compilation and
  attempt to carry the annotations over throughout the compilation all the
  way to the end, in an attempt to improve debug information while
  optimizing.  Use of \fB\-gdwarf\-4\fR is recommended along with it.
  .Sp
! It can be enabled even if var\-tracking is disabled, in which case
  annotations are created and maintained, but discarded at the end.
  By default, this flag is enabled together with \fB\-fvar\-tracking\fR,
  except when selective scheduling is enabled.
! .IP \fB\-gsplit\-dwarf\fR 4
  .IX Item "-gsplit-dwarf"
! If DWARF debugging information is enabled, separate as much debugging
  information as possible into a separate output file with the extension
  \&\fI.dwo\fR.  This option allows the build system to avoid linking files with
  debug information.  To be useful, this option requires a debugger capable of
  reading \fI.dwo\fR files.
! .IP \fB\-gdwarf32\fR 4
  .IX Item "-gdwarf32"
  .PD 0
! .IP \fB\-gdwarf64\fR 4
  .IX Item "-gdwarf64"
  .PD
! If DWARF debugging information is enabled, the \fB\-gdwarf32\fR selects
! the 32\-bit DWARF format and the \fB\-gdwarf64\fR selects the 64\-bit
! DWARF format.  The default is target specific, on most targets it is
! \&\fB\-gdwarf32\fR though.  The 32\-bit DWARF format is smaller, but
! can\*(Aqt support more than 2GiB of debug information in any of the DWARF
! debug information sections.  The 64\-bit DWARF format allows larger debug
  information and might not be well supported by all consumers yet.
! .IP \fB\-gdescribe\-dies\fR 4
  .IX Item "-gdescribe-dies"
! Add description attributes to some DWARF DIEs that have no name attribute,
  such as artificial variables, external references and call site
  parameter DIEs.
! .IP \fB\-gpubnames\fR 4
  .IX Item "-gpubnames"
! Generate DWARF \f(CW\*(C`.debug_pubnames\*(C'\fR and \f(CW\*(C`.debug_pubtypes\*(C'\fR sections.
! .IP \fB\-ggnu\-pubnames\fR 4
  .IX Item "-ggnu-pubnames"
  Generate \f(CW\*(C`.debug_pubnames\*(C'\fR and \f(CW\*(C`.debug_pubtypes\*(C'\fR sections in a format
! suitable for conversion into a GDB index.  This option is only useful
! with a linker that can produce GDB index version 7.
! .IP \fB\-fdebug\-types\-section\fR 4
  .IX Item "-fdebug-types-section"
! When using DWARF Version 4 or higher, type DIEs can be put into
  their own \f(CW\*(C`.debug_types\*(C'\fR section instead of making them part of the
  \&\f(CW\*(C`.debug_info\*(C'\fR section.  It is more efficient to put them in a separate
  comdat section since the linker can then remove duplicates.
! But not all DWARF consumers support \f(CW\*(C`.debug_types\*(C'\fR sections yet
  and on some objects \f(CW\*(C`.debug_types\*(C'\fR produces larger instead of smaller
  debugging information.
! .IP \fB\-grecord\-gcc\-switches\fR 4
  .IX Item "-grecord-gcc-switches"
  .PD 0
! .IP \fB\-gno\-record\-gcc\-switches\fR 4
  .IX Item "-gno-record-gcc-switches"
  .PD
! This switch causes the command\-line options used to invoke the
  compiler that may affect code generation to be appended to the
! DW_AT_producer attribute in DWARF debugging information.  The options
  are concatenated with spaces separating them from each other and from
  the compiler version.
  It is enabled by default.
  See also \fB\-frecord\-gcc\-switches\fR for another
  way of storing compiler options into the object file.
! .IP \fB\-gstrict\-dwarf\fR 4
  .IX Item "-gstrict-dwarf"
! Disallow using extensions of later DWARF standard version than selected
! with \fB\-gdwarf\-\fR\fIversion\fR.  On most targets using non\-conflicting
! DWARF extensions from later standard versions is allowed.
! .IP \fB\-gno\-strict\-dwarf\fR 4
  .IX Item "-gno-strict-dwarf"
! Allow using extensions of later DWARF standard version than selected with
  \&\fB\-gdwarf\-\fR\fIversion\fR.
! .IP \fB\-gas\-loc\-support\fR 4
  .IX Item "-gas-loc-support"
  Inform the compiler that the assembler supports \f(CW\*(C`.loc\*(C'\fR directives.
! It may then use them for the assembler to generate DWARF2+ line number
  tables.
  .Sp
! This is generally desirable, because assembler\-generated line\-number
  tables are a lot more compact than those the compiler can generate
  itself.
  .Sp
! This option will be enabled by default if, at GCC configure time, the
  assembler was found to support such directives.
! .IP \fB\-gno\-as\-loc\-support\fR 4
  .IX Item "-gno-as-loc-support"
! Force GCC to generate DWARF2+ line number tables internally, if DWARF2+
  line number tables are to be generated.
! .IP \fB\-gas\-locview\-support\fR 4
  .IX Item "-gas-locview-support"
  Inform the compiler that the assembler supports \f(CW\*(C`view\*(C'\fR assignment
  and reset assertion checking in \f(CW\*(C`.loc\*(C'\fR directives.
  .Sp
! This option will be enabled by default if, at GCC configure time, the
  assembler was found to support them.
! .IP \fB\-gno\-as\-locview\-support\fR 4
  .IX Item "-gno-as-locview-support"
! Force GCC to assign view numbers internally, if
  \&\fB\-gvariable\-location\-views\fR are explicitly requested.
! .IP \fB\-gcolumn\-info\fR 4
  .IX Item "-gcolumn-info"
  .PD 0
! .IP \fB\-gno\-column\-info\fR 4
  .IX Item "-gno-column-info"
  .PD
! Emit location column information into DWARF debugging information, rather
  than just file and line.
  This option is enabled by default.
! .IP \fB\-gstatement\-frontiers\fR 4
  .IX Item "-gstatement-frontiers"
  .PD 0
! .IP \fB\-gno\-statement\-frontiers\fR 4
  .IX Item "-gno-statement-frontiers"
  .PD
! This option causes GCC to create markers in the internal representation
  at the beginning of statements, and to keep them roughly in place
  throughout compilation, using them to guide the output of \f(CW\*(C`is_stmt\*(C'\fR
  markers in the line number table.  This is enabled by default when
  compiling with optimization (\fB\-Os\fR, \fB\-O1\fR, \fB\-O2\fR,
! \&...), and outputting DWARF 2 debug information at the normal level.
! .IP \fB\-gvariable\-location\-views\fR 4
  .IX Item "-gvariable-location-views"
  .PD 0
! .IP \fB\-gvariable\-location\-views=incompat5\fR 4
  .IX Item "-gvariable-location-views=incompat5"
! .IP \fB\-gno\-variable\-location\-views\fR 4
  .IX Item "-gno-variable-location-views"
  .PD
  Augment variable location lists with progressive view numbers implied
*************** associated with the corresponding source
*** 11735,11799 ****
  point.  If the assembler lacks support for view numbers in line number
  tables, this will cause the compiler to emit the line number table,
  which generally makes them somewhat less compact.  The augmented line
! number tables and location lists are fully backward-compatible, so they
  can be consumed by debug information consumers that are not aware of
! these augmentations, but they won't derive any benefit from them either.
  .Sp
! This is enabled by default when outputting \s-1DWARF 2\s0 debug information at
  the normal level, as long as there is assembler support,
  \&\fB\-fvar\-tracking\-assignments\fR is enabled and
  \&\fB\-gstrict\-dwarf\fR is not.  When assembler support is not
! available, this may still be enabled, but it will force \s-1GCC\s0 to output
  internal line number tables, and if
  \&\fB\-ginternal\-reset\-location\-views\fR is not enabled, that will most
  certainly lead to silently mismatching location views.
  .Sp
  There is a proposed representation for view numbers that is not backward
! compatible with the location list format introduced in \s-1DWARF 5,\s0 that can
  be enabled with \fB\-gvariable\-location\-views=incompat5\fR.  This
  option may be removed in the future, is only provided as a reference
  implementation of the proposed representation.  Debug information
  consumers are not expected to support this extended format, and they
  would be rendered unable to decode location lists using it.
! .IP "\fB\-ginternal\-reset\-location\-views\fR" 4
  .IX Item "-ginternal-reset-location-views"
  .PD 0
! .IP "\fB\-gno\-internal\-reset\-location\-views\fR" 4
  .IX Item "-gno-internal-reset-location-views"
  .PD
  Attempt to determine location views that can be omitted from location
  view lists.  This requires the compiler to have very accurate insn
! length estimates, which isn't always the case, and it may cause
  incorrect view lists to be generated silently when using an assembler
! that does not support location view lists.  The \s-1GNU\s0 assembler will flag
  any such error as a \f(CW\*(C`view number mismatch\*(C'\fR.  This is only enabled
  on ports that define a reliable estimation function.
! .IP "\fB\-ginline\-points\fR" 4
  .IX Item "-ginline-points"
  .PD 0
! .IP "\fB\-gno\-inline\-points\fR" 4
  .IX Item "-gno-inline-points"
  .PD
  Generate extended debug information for inlined functions.  Location
  view tracking markers are inserted at inlined entry points, so that
  address and view numbers can be computed and output in debug
  information.  This can be enabled independently of location views, in
! which case the view numbers won't be output, but it can only be enabled
  along with statement frontiers, and it is only enabled by default if
  location views are enabled.
! .IP "\fB\-gz\fR[\fB=\fR\fItype\fR]" 4
  .IX Item "-gz[=type]"
! Produce compressed debug sections in \s-1DWARF\s0 format, if that is supported.
  If \fItype\fR is not given, the default type depends on the capabilities
  of the assembler and linker used.  \fItype\fR may be one of
! \&\fBnone\fR (don't compress debug sections), or \fBzlib\fR (use zlib
! compression in \s-1ELF\s0 gABI format).  If the linker doesn't support writing
  compressed debug sections, the option is rejected.  Otherwise, if the
  assembler does not support them, \fB\-gz\fR is silently ignored when
  producing object files.
! .IP "\fB\-femit\-struct\-debug\-baseonly\fR" 4
  .IX Item "-femit-struct-debug-baseonly"
! Emit debug information for struct-like types
  only when the base name of the compilation source file
  matches the base name of file in which the struct is defined.
  .Sp
--- 11668,11732 ----
  point.  If the assembler lacks support for view numbers in line number
  tables, this will cause the compiler to emit the line number table,
  which generally makes them somewhat less compact.  The augmented line
! number tables and location lists are fully backward\-compatible, so they
  can be consumed by debug information consumers that are not aware of
! these augmentations, but they won\*(Aqt derive any benefit from them either.
  .Sp
! This is enabled by default when outputting DWARF 2 debug information at
  the normal level, as long as there is assembler support,
  \&\fB\-fvar\-tracking\-assignments\fR is enabled and
  \&\fB\-gstrict\-dwarf\fR is not.  When assembler support is not
! available, this may still be enabled, but it will force GCC to output
  internal line number tables, and if
  \&\fB\-ginternal\-reset\-location\-views\fR is not enabled, that will most
  certainly lead to silently mismatching location views.
  .Sp
  There is a proposed representation for view numbers that is not backward
! compatible with the location list format introduced in DWARF 5, that can
  be enabled with \fB\-gvariable\-location\-views=incompat5\fR.  This
  option may be removed in the future, is only provided as a reference
  implementation of the proposed representation.  Debug information
  consumers are not expected to support this extended format, and they
  would be rendered unable to decode location lists using it.
! .IP \fB\-ginternal\-reset\-location\-views\fR 4
  .IX Item "-ginternal-reset-location-views"
  .PD 0
! .IP \fB\-gno\-internal\-reset\-location\-views\fR 4
  .IX Item "-gno-internal-reset-location-views"
  .PD
  Attempt to determine location views that can be omitted from location
  view lists.  This requires the compiler to have very accurate insn
! length estimates, which isn\*(Aqt always the case, and it may cause
  incorrect view lists to be generated silently when using an assembler
! that does not support location view lists.  The GNU assembler will flag
  any such error as a \f(CW\*(C`view number mismatch\*(C'\fR.  This is only enabled
  on ports that define a reliable estimation function.
! .IP \fB\-ginline\-points\fR 4
  .IX Item "-ginline-points"
  .PD 0
! .IP \fB\-gno\-inline\-points\fR 4
  .IX Item "-gno-inline-points"
  .PD
  Generate extended debug information for inlined functions.  Location
  view tracking markers are inserted at inlined entry points, so that
  address and view numbers can be computed and output in debug
  information.  This can be enabled independently of location views, in
! which case the view numbers won\*(Aqt be output, but it can only be enabled
  along with statement frontiers, and it is only enabled by default if
  location views are enabled.
! .IP \fB\-gz\fR[\fB=\fR\fItype\fR] 4
  .IX Item "-gz[=type]"
! Produce compressed debug sections in DWARF format, if that is supported.
  If \fItype\fR is not given, the default type depends on the capabilities
  of the assembler and linker used.  \fItype\fR may be one of
! \&\fBnone\fR (don\*(Aqt compress debug sections), or \fBzlib\fR (use zlib
! compression in ELF gABI format).  If the linker doesn\*(Aqt support writing
  compressed debug sections, the option is rejected.  Otherwise, if the
  assembler does not support them, \fB\-gz\fR is silently ignored when
  producing object files.
! .IP \fB\-femit\-struct\-debug\-baseonly\fR 4
  .IX Item "-femit-struct-debug-baseonly"
! Emit debug information for struct\-like types
  only when the base name of the compilation source file
  matches the base name of file in which the struct is defined.
  .Sp
*************** but at significant potential loss in typ
*** 11802,11811 ****
  See \fB\-femit\-struct\-debug\-reduced\fR for a less aggressive option.
  See \fB\-femit\-struct\-debug\-detailed\fR for more detailed control.
  .Sp
! This option works only with \s-1DWARF\s0 debug output.
! .IP "\fB\-femit\-struct\-debug\-reduced\fR" 4
  .IX Item "-femit-struct-debug-reduced"
! Emit debug information for struct-like types
  only when the base name of the compilation source file
  matches the base name of file in which the type is defined,
  unless the struct is a template or defined in a system header.
--- 11735,11744 ----
  See \fB\-femit\-struct\-debug\-reduced\fR for a less aggressive option.
  See \fB\-femit\-struct\-debug\-detailed\fR for more detailed control.
  .Sp
! This option works only with DWARF debug output.
! .IP \fB\-femit\-struct\-debug\-reduced\fR 4
  .IX Item "-femit-struct-debug-reduced"
! Emit debug information for struct\-like types
  only when the base name of the compilation source file
  matches the base name of file in which the type is defined,
  unless the struct is a template or defined in a system header.
*************** with some potential loss in type informa
*** 11815,11824 ****
  See \fB\-femit\-struct\-debug\-baseonly\fR for a more aggressive option.
  See \fB\-femit\-struct\-debug\-detailed\fR for more detailed control.
  .Sp
! This option works only with \s-1DWARF\s0 debug output.
! .IP "\fB\-femit\-struct\-debug\-detailed\fR[\fB=\fR\fIspec-list\fR]" 4
  .IX Item "-femit-struct-debug-detailed[=spec-list]"
! Specify the struct-like types
  for which the compiler generates debug information.
  The intent is to reduce duplicate struct debug information
  between different object files within the same program.
--- 11748,11757 ----
  See \fB\-femit\-struct\-debug\-baseonly\fR for a more aggressive option.
  See \fB\-femit\-struct\-debug\-detailed\fR for more detailed control.
  .Sp
! This option works only with DWARF debug output.
! .IP \fB\-femit\-struct\-debug\-detailed\fR[\fB=\fR\fIspec\-list\fR] 4
  .IX Item "-femit-struct-debug-detailed[=spec-list]"
! Specify the struct\-like types
  for which the compiler generates debug information.
  The intent is to reduce duplicate struct debug information
  between different object files within the same program.
*************** An example is
*** 11840,11847 ****
  The optional second word limits the specification to
  ordinary structs (\fBord:\fR) or generic structs (\fBgen:\fR).
  Generic structs are a bit complicated to explain.
! For \*(C+, these are non-explicit specializations of template classes,
! or non-template classes within the above.
  Other programming languages have generics,
  but \fB\-femit\-struct\-debug\-detailed\fR does not yet implement them.
  .Sp
--- 11773,11780 ----
  The optional second word limits the specification to
  ordinary structs (\fBord:\fR) or generic structs (\fBgen:\fR).
  Generic structs are a bit complicated to explain.
! For C++, these are non\-explicit specializations of template classes,
! or non\-template classes within the above.
  Other programming languages have generics,
  but \fB\-femit\-struct\-debug\-detailed\fR does not yet implement them.
  .Sp
*************** You may need to experiment to determine
*** 11861,11876 ****
  .Sp
  The default is \fB\-femit\-struct\-debug\-detailed=all\fR.
  .Sp
! This option works only with \s-1DWARF\s0 debug output.
! .IP "\fB\-fno\-dwarf2\-cfi\-asm\fR" 4
  .IX Item "-fno-dwarf2-cfi-asm"
! Emit \s-1DWARF\s0 unwind info as compiler generated \f(CW\*(C`.eh_frame\*(C'\fR section
! instead of using \s-1GAS\s0 \f(CW\*(C`.cfi_*\*(C'\fR directives.
! .IP "\fB\-fno\-eliminate\-unused\-debug\-types\fR" 4
  .IX Item "-fno-eliminate-unused-debug-types"
! Normally, when producing \s-1DWARF\s0 output, \s-1GCC\s0 avoids producing debug symbol
  output for types that are nowhere used in the source file being compiled.
! Sometimes it is useful to have \s-1GCC\s0 emit debugging
  information for all types declared in a compilation
  unit, regardless of whether or not they are actually used
  in that compilation unit, for example
--- 11794,11809 ----
  .Sp
  The default is \fB\-femit\-struct\-debug\-detailed=all\fR.
  .Sp
! This option works only with DWARF debug output.
! .IP \fB\-fno\-dwarf2\-cfi\-asm\fR 4
  .IX Item "-fno-dwarf2-cfi-asm"
! Emit DWARF unwind info as compiler generated \f(CW\*(C`.eh_frame\*(C'\fR section
! instead of using GAS \f(CW\*(C`.cfi_*\*(C'\fR directives.
! .IP \fB\-fno\-eliminate\-unused\-debug\-types\fR 4
  .IX Item "-fno-eliminate-unused-debug-types"
! Normally, when producing DWARF output, GCC avoids producing debug symbol
  output for types that are nowhere used in the source file being compiled.
! Sometimes it is useful to have GCC emit debugging
  information for all types declared in a compilation
  unit, regardless of whether or not they are actually used
  in that compilation unit, for example
*************** however, this results in a significant a
*** 11881,11887 ****
  .IX Subsection "Options That Control Optimization"
  These options control various sorts of optimizations.
  .PP
! Without any optimization option, the compiler's goal is to reduce the
  cost of compilation and to make debugging produce the expected
  results.  Statements are independent: if you stop the program with a
  breakpoint between statements, you can then assign a new value to any
--- 11814,11820 ----
  .IX Subsection "Options That Control Optimization"
  These options control various sorts of optimizations.
  .PP
! Without any optimization option, the compiler\*(Aqs goal is to reduce the
  cost of compilation and to make debugging produce the expected
  results.  Statements are independent: if you stop the program with a
  breakpoint between statements, you can then assign a new value to any
*************** Most optimizations are completely disabl
*** 11906,11919 ****
  optimization flags are specified.  Similarly, \fB\-Og\fR suppresses
  many optimization passes.
  .PP
! Depending on the target and how \s-1GCC\s0 was configured, a slightly different
  set of optimizations may be enabled at each \fB\-O\fR level than
! those listed here.  You can invoke \s-1GCC\s0 with \fB\-Q \-\-help=optimizers\fR
  to find out the exact set of optimizations that are enabled at each level.
! .IP "\fB\-O\fR" 4
  .IX Item "-O"
  .PD 0
! .IP "\fB\-O1\fR" 4
  .IX Item "-O1"
  .PD
  Optimize.  Optimizing compilation takes somewhat more time, and a lot
--- 11839,11852 ----
  optimization flags are specified.  Similarly, \fB\-Og\fR suppresses
  many optimization passes.
  .PP
! Depending on the target and how GCC was configured, a slightly different
  set of optimizations may be enabled at each \fB\-O\fR level than
! those listed here.  You can invoke GCC with \fB\-Q \-\-help=optimizers\fR
  to find out the exact set of optimizations that are enabled at each level.
! .IP \fB\-O\fR 4
  .IX Item "-O"
  .PD 0
! .IP \fB\-O1\fR 4
  .IX Item "-O1"
  .PD
  Optimize.  Optimizing compilation takes somewhat more time, and a lot
*************** With \fB\-O\fR, the compiler tries to re
*** 11923,11929 ****
  time, without performing any optimizations that take a great deal of
  compilation time.
  .Sp
! \&\fB\-O\fR is the recommended optimization level for large machine-generated
  code as a sensible balance between time taken to compile and memory use:
  higher optimization levels perform optimizations with greater algorithmic
  complexity than at \fB\-O\fR.
--- 11856,11862 ----
  time, without performing any optimizations that take a great deal of
  compilation time.
  .Sp
! \&\fB\-O\fR is the recommended optimization level for large machine\-generated
  code as a sensible balance between time taken to compile and memory use:
  higher optimization levels perform optimizations with greater algorithmic
  complexity than at \fB\-O\fR.
*************** complexity than at \fB\-O\fR.
*** 11978,11987 ****
  \&\-ftree\-sra
  \&\-ftree\-ter
  \&\-funit\-at\-a\-time\fR
! .IP "\fB\-O2\fR" 4
  .IX Item "-O2"
! Optimize even more.  \s-1GCC\s0 performs nearly all supported optimizations
! that do not involve a space-speed tradeoff.
  As compared to \fB\-O\fR, this option increases both compilation time
  and the performance of the generated code.
  .Sp
--- 11911,11920 ----
  \&\-ftree\-sra
  \&\-ftree\-ter
  \&\-funit\-at\-a\-time\fR
! .IP \fB\-O2\fR 4
  .IX Item "-O2"
! Optimize even more.  GCC performs nearly all supported optimizations
! that do not involve a space\-speed tradeoff.
  As compared to \fB\-O\fR, this option increases both compilation time
  and the performance of the generated code.
  .Sp
*************** also turns on the following optimization
*** 12030,12036 ****
  .Sp
  Please note the warning under \fB\-fgcse\fR about
  invoking \fB\-O2\fR on programs that use computed gotos.
! .IP "\fB\-O3\fR" 4
  .IX Item "-O3"
  Optimize yet more.  \fB\-O3\fR turns on all optimizations specified
  by \fB\-O2\fR and also turns on the following optimization flags:
--- 11963,11969 ----
  .Sp
  Please note the warning under \fB\-fgcse\fR about
  invoking \fB\-O2\fR on programs that use computed gotos.
! .IP \fB\-O3\fR 4
  .IX Item "-O3"
  Optimize yet more.  \fB\-O3\fR turns on all optimizations specified
  by \fB\-O2\fR and also turns on the following optimization flags:
*************** by \fB\-O2\fR and also turns on the foll
*** 12048,12065 ****
  \&\-funswitch\-loops
  \&\-fvect\-cost\-model=dynamic
  \&\-fversion\-loops\-for\-strides\fR
! .IP "\fB\-O0\fR" 4
  .IX Item "-O0"
  Reduce compilation time and make debugging produce the expected
  results.  This is the default.
  .Sp
! At \fB\-O0\fR, \s-1GCC\s0 completely disables most optimization passes;
  they are not run even if you explicitly enable them on the command
  line, or are listed by \fB\-Q \-\-help=optimizers\fR as being enabled by
! default.  Many optimizations performed by \s-1GCC\s0 depend on code analysis
  or canonicalization passes that are enabled by \fB\-O\fR, and it would
  not be useful to run individual optimization passes in isolation.
! .IP "\fB\-Os\fR" 4
  .IX Item "-Os"
  Optimize for size.  \fB\-Os\fR enables all \fB\-O2\fR optimizations
  except those that often increase code size:
--- 11981,11998 ----
  \&\-funswitch\-loops
  \&\-fvect\-cost\-model=dynamic
  \&\-fversion\-loops\-for\-strides\fR
! .IP \fB\-O0\fR 4
  .IX Item "-O0"
  Reduce compilation time and make debugging produce the expected
  results.  This is the default.
  .Sp
! At \fB\-O0\fR, GCC completely disables most optimization passes;
  they are not run even if you explicitly enable them on the command
  line, or are listed by \fB\-Q \-\-help=optimizers\fR as being enabled by
! default.  Many optimizations performed by GCC depend on code analysis
  or canonicalization passes that are enabled by \fB\-O\fR, and it would
  not be useful to run individual optimization passes in isolation.
! .IP \fB\-Os\fR 4
  .IX Item "-Os"
  Optimize for size.  \fB\-Os\fR enables all \fB\-O2\fR optimizations
  except those that often increase code size:
*************** except those that often increase code si
*** 12071,12089 ****
  It also enables \fB\-finline\-functions\fR, causes the compiler to tune for
  code size rather than execution speed, and performs further optimizations
  designed to reduce code size.
! .IP "\fB\-Ofast\fR" 4
  .IX Item "-Ofast"
  Disregard strict standards compliance.  \fB\-Ofast\fR enables all
  \&\fB\-O3\fR optimizations.  It also enables optimizations that are not
! valid for all standard-compliant programs.
  It turns on \fB\-ffast\-math\fR, \fB\-fallow\-store\-data\-races\fR
! and the Fortran-specific \fB\-fstack\-arrays\fR, unless
  \&\fB\-fmax\-stack\-var\-size\fR is specified, and \fB\-fno\-protect\-parens\fR.
  It turns off \fB\-fsemantic\-interposition\fR.
! .IP "\fB\-Og\fR" 4
  .IX Item "-Og"
  Optimize debugging experience.  \fB\-Og\fR should be the optimization
! level of choice for the standard edit-compile-debug cycle, offering
  a reasonable level of optimization while maintaining fast compilation
  and a good debugging experience.  It is a better choice than \fB\-O0\fR
  for producing debuggable code because some compiler passes
--- 12004,12022 ----
  It also enables \fB\-finline\-functions\fR, causes the compiler to tune for
  code size rather than execution speed, and performs further optimizations
  designed to reduce code size.
! .IP \fB\-Ofast\fR 4
  .IX Item "-Ofast"
  Disregard strict standards compliance.  \fB\-Ofast\fR enables all
  \&\fB\-O3\fR optimizations.  It also enables optimizations that are not
! valid for all standard\-compliant programs.
  It turns on \fB\-ffast\-math\fR, \fB\-fallow\-store\-data\-races\fR
! and the Fortran\-specific \fB\-fstack\-arrays\fR, unless
  \&\fB\-fmax\-stack\-var\-size\fR is specified, and \fB\-fno\-protect\-parens\fR.
  It turns off \fB\-fsemantic\-interposition\fR.
! .IP \fB\-Og\fR 4
  .IX Item "-Og"
  Optimize debugging experience.  \fB\-Og\fR should be the optimization
! level of choice for the standard edit\-compile\-debug cycle, offering
  a reasonable level of optimization while maintaining fast compilation
  and a good debugging experience.  It is a better choice than \fB\-O0\fR
  for producing debuggable code because some compiler passes
*************** optimization flags except for those that
*** 12099,12105 ****
  \&\-finline\-functions\-called\-once
  \&\-fmove\-loop\-invariants  \-fmove\-loop\-stores  \-fssa\-phiopt
  \&\-ftree\-bit\-ccp  \-ftree\-dse  \-ftree\-pta  \-ftree\-sra\fR
! .IP "\fB\-Oz\fR" 4
  .IX Item "-Oz"
  Optimize aggressively for size rather than speed.  This may increase
  the number of instructions executed if those instructions require
--- 12032,12038 ----
  \&\-finline\-functions\-called\-once
  \&\-fmove\-loop\-invariants  \-fmove\-loop\-stores  \-fssa\-phiopt
  \&\-ftree\-bit\-ccp  \-ftree\-dse  \-ftree\-pta  \-ftree\-sra\fR
! .IP \fB\-Oz\fR 4
  .IX Item "-Oz"
  Optimize aggressively for size rather than speed.  This may increase
  the number of instructions executed if those instructions require
*************** including enabling most \fB\-O2\fR optim
*** 12109,12115 ****
  If you use multiple \fB\-O\fR options, with or without level numbers,
  the last such option is the one that is effective.
  .PP
! Options of the form \fB\-f\fR\fIflag\fR specify machine-independent
  flags.  Most flags have both positive and negative forms; the negative
  form of \fB\-ffoo\fR is \fB\-fno\-foo\fR.  In the table
  below, only one of the forms is listed\-\-\-the one you typically
--- 12042,12048 ----
  If you use multiple \fB\-O\fR options, with or without level numbers,
  the last such option is the one that is effective.
  .PP
! Options of the form \fB\-f\fR\fIflag\fR specify machine\-independent
  flags.  Most flags have both positive and negative forms; the negative
  form of \fB\-ffoo\fR is \fB\-fno\-foo\fR.  In the table
  below, only one of the forms is listed\-\-\-the one you typically
*************** or adding it.
*** 12118,12145 ****
  .PP
  The following options control specific optimizations.  They are either
  activated by \fB\-O\fR options or are related to ones that are.  You
! can use the following flags in the rare cases when \*(L"fine-tuning\*(R" of
  optimizations to be performed is desired.
! .IP "\fB\-fno\-defer\-pop\fR" 4
  .IX Item "-fno-defer-pop"
  For machines that must pop arguments after a function call, always pop
  the arguments as soon as each function returns.
  At levels \fB\-O1\fR and higher, \fB\-fdefer\-pop\fR is the default;
  this allows the compiler to let arguments accumulate on the stack for several
  function calls and pop them all at once.
! .IP "\fB\-fforward\-propagate\fR" 4
  .IX Item "-fforward-propagate"
! Perform a forward propagation pass on \s-1RTL.\s0  The pass tries to combine two
  instructions and checks if the result can be simplified.  If loop unrolling
  is active, two passes are performed and the second is scheduled after
  loop unrolling.
  .Sp
  This option is enabled by default at optimization levels \fB\-O1\fR,
  \&\fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-favoid\-store\-forwarding\fR" 4
  .IX Item "-favoid-store-forwarding"
  .PD 0
! .IP "\fB\-fno\-avoid\-store\-forwarding\fR" 4
  .IX Item "-fno-avoid-store-forwarding"
  .PD
  Many CPUs will stall for many cycles when a load partially depends on previous
--- 12051,12078 ----
  .PP
  The following options control specific optimizations.  They are either
  activated by \fB\-O\fR options or are related to ones that are.  You
! can use the following flags in the rare cases when "fine\-tuning" of
  optimizations to be performed is desired.
! .IP \fB\-fno\-defer\-pop\fR 4
  .IX Item "-fno-defer-pop"
  For machines that must pop arguments after a function call, always pop
  the arguments as soon as each function returns.
  At levels \fB\-O1\fR and higher, \fB\-fdefer\-pop\fR is the default;
  this allows the compiler to let arguments accumulate on the stack for several
  function calls and pop them all at once.
! .IP \fB\-fforward\-propagate\fR 4
  .IX Item "-fforward-propagate"
! Perform a forward propagation pass on RTL.  The pass tries to combine two
  instructions and checks if the result can be simplified.  If loop unrolling
  is active, two passes are performed and the second is scheduled after
  loop unrolling.
  .Sp
  This option is enabled by default at optimization levels \fB\-O1\fR,
  \&\fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-favoid\-store\-forwarding\fR 4
  .IX Item "-favoid-store-forwarding"
  .PD 0
! .IP \fB\-fno\-avoid\-store\-forwarding\fR 4
  .IX Item "-fno-avoid-store-forwarding"
  .PD
  Many CPUs will stall for many cycles when a load partially depends on previous
*************** smaller stores.  This pass tries to dete
*** 12147,12204 ****
  changing the order of the load and store and then fixing up the loaded value.
  .Sp
  Disabled by default.
! .IP "\fB\-ffp\-contract=\fR\fIstyle\fR" 4
  .IX Item "-ffp-contract=style"
! \&\fB\-ffp\-contract=off\fR disables floating-point expression contraction.
! \&\fB\-ffp\-contract=fast\fR enables floating-point expression contraction
! such as forming of fused multiply-add operations if the target has
  native support for them.
! \&\fB\-ffp\-contract=on\fR enables floating-point expression contraction
! if allowed by the language standard.  This is implemented for C and \*(C+,
  where it enables contraction within one expression, but not across
  different statements.
  .Sp
  The default is \fB\-ffp\-contract=off\fR for C in a standards compliant mode
  (\fB\-std=c11\fR or similar), \fB\-ffp\-contract=fast\fR otherwise.
! .IP "\fB\-fomit\-frame\-pointer\fR" 4
  .IX Item "-fomit-frame-pointer"
! Omit the frame pointer in functions that don't need one.  This avoids the
  instructions to save, set up and restore the frame pointer; on many targets
  it also makes an extra register available.
  .Sp
  On some targets this flag has no effect because the standard calling sequence
  always uses a frame pointer, so it cannot be omitted.
  .Sp
! Note that \fB\-fno\-omit\-frame\-pointer\fR doesn't guarantee the frame pointer
  is used in all functions.  Several targets always omit the frame pointer in
  leaf functions.
  .Sp
  Enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-foptimize\-crc\fR" 4
  .IX Item "-foptimize-crc"
! Detect loops calculating \s-1CRC\s0 (performing polynomial long division) and
! replace them with a faster implementation.  Detect 8, 16, 32, and 64 bit \s-1CRC,\s0
  with a constant polynomial without the leading 1 bit,
! for both bit-forward and bit-reversed cases.
! If the target supports a \s-1CRC\s0 instruction and the polynomial used in the source
! code matches the polynomial used in the \s-1CRC\s0 instruction, generate that \s-1CRC\s0
! instruction.  Otherwise, if the target supports a carry-less-multiplication
! instruction, generate \s-1CRC\s0 using it; otherwise generate table-based \s-1CRC.\s0
  .Sp
  Enabled by default at \fB\-O2\fR and higher.
! .IP "\fB\-foptimize\-sibling\-calls\fR" 4
  .IX Item "-foptimize-sibling-calls"
  Optimize sibling and tail recursive calls.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-foptimize\-strlen\fR" 4
  .IX Item "-foptimize-strlen"
  Optimize various standard C string functions (e.g. \f(CW\*(C`strlen\*(C'\fR,
  \&\f(CW\*(C`strchr\*(C'\fR or \f(CW\*(C`strcpy\*(C'\fR) and
  their \f(CW\*(C`_FORTIFY_SOURCE\*(C'\fR counterparts into faster alternatives.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP "\fB\-finline\-stringops[=\fR\fIfn\fR\fB]\fR" 4
  .IX Item "-finline-stringops[=fn]"
  Expand memory and string operations (for now, only \f(CW\*(C`memset\*(C'\fR)
  inline, even when the length is variable or big enough as to require
--- 12080,12137 ----
  changing the order of the load and store and then fixing up the loaded value.
  .Sp
  Disabled by default.
! .IP \fB\-ffp\-contract=\fR\fIstyle\fR 4
  .IX Item "-ffp-contract=style"
! \&\fB\-ffp\-contract=off\fR disables floating\-point expression contraction.
! \&\fB\-ffp\-contract=fast\fR enables floating\-point expression contraction
! such as forming of fused multiply\-add operations if the target has
  native support for them.
! \&\fB\-ffp\-contract=on\fR enables floating\-point expression contraction
! if allowed by the language standard.  This is implemented for C and C++,
  where it enables contraction within one expression, but not across
  different statements.
  .Sp
  The default is \fB\-ffp\-contract=off\fR for C in a standards compliant mode
  (\fB\-std=c11\fR or similar), \fB\-ffp\-contract=fast\fR otherwise.
! .IP \fB\-fomit\-frame\-pointer\fR 4
  .IX Item "-fomit-frame-pointer"
! Omit the frame pointer in functions that don\*(Aqt need one.  This avoids the
  instructions to save, set up and restore the frame pointer; on many targets
  it also makes an extra register available.
  .Sp
  On some targets this flag has no effect because the standard calling sequence
  always uses a frame pointer, so it cannot be omitted.
  .Sp
! Note that \fB\-fno\-omit\-frame\-pointer\fR doesn\*(Aqt guarantee the frame pointer
  is used in all functions.  Several targets always omit the frame pointer in
  leaf functions.
  .Sp
  Enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-foptimize\-crc\fR 4
  .IX Item "-foptimize-crc"
! Detect loops calculating CRC (performing polynomial long division) and
! replace them with a faster implementation.  Detect 8, 16, 32, and 64 bit CRC,
  with a constant polynomial without the leading 1 bit,
! for both bit\-forward and bit\-reversed cases.
! If the target supports a CRC instruction and the polynomial used in the source
! code matches the polynomial used in the CRC instruction, generate that CRC
! instruction.  Otherwise, if the target supports a carry\-less\-multiplication
! instruction, generate CRC using it; otherwise generate table\-based CRC.
  .Sp
  Enabled by default at \fB\-O2\fR and higher.
! .IP \fB\-foptimize\-sibling\-calls\fR 4
  .IX Item "-foptimize-sibling-calls"
  Optimize sibling and tail recursive calls.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-foptimize\-strlen\fR 4
  .IX Item "-foptimize-strlen"
  Optimize various standard C string functions (e.g. \f(CW\*(C`strlen\*(C'\fR,
  \&\f(CW\*(C`strchr\*(C'\fR or \f(CW\*(C`strcpy\*(C'\fR) and
  their \f(CW\*(C`_FORTIFY_SOURCE\*(C'\fR counterparts into faster alternatives.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP \fB\-finline\-stringops[=\fR\fIfn\fR\fB]\fR 4
  .IX Item "-finline-stringops[=fn]"
  Expand memory and string operations (for now, only \f(CW\*(C`memset\*(C'\fR)
  inline, even when the length is variable or big enough as to require
*************** it may be less efficient than optimized
*** 12211,12217 ****
  grow code size so much that even a less performant but shared
  implementation runs faster due to better use of code caches.  This
  option is disabled by default.
! .IP "\fB\-fno\-inline\fR" 4
  .IX Item "-fno-inline"
  Do not expand any functions inline apart from those marked with
  the \f(CW\*(C`always_inline\*(C'\fR attribute.  This is the default when not
--- 12144,12150 ----
  grow code size so much that even a less performant but shared
  implementation runs faster due to better use of code caches.  This
  option is disabled by default.
! .IP \fB\-fno\-inline\fR 4
  .IX Item "-fno-inline"
  Do not expand any functions inline apart from those marked with
  the \f(CW\*(C`always_inline\*(C'\fR attribute.  This is the default when not
*************** optimizing.
*** 12219,12225 ****
  .Sp
  Single functions can be exempted from inlining by marking them
  with the \f(CW\*(C`noinline\*(C'\fR attribute.
! .IP "\fB\-finline\-small\-functions\fR" 4
  .IX Item "-finline-small-functions"
  Integrate functions into their callers when their body is smaller than expected
  function call code (so overall size of program gets smaller).  The compiler
--- 12152,12158 ----
  .Sp
  Single functions can be exempted from inlining by marking them
  with the \f(CW\*(C`noinline\*(C'\fR attribute.
! .IP \fB\-finline\-small\-functions\fR 4
  .IX Item "-finline-small-functions"
  Integrate functions into their callers when their body is smaller than expected
  function call code (so overall size of program gets smaller).  The compiler
*************** in this way.  This inlining applies to a
*** 12228,12234 ****
  inline.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-findirect\-inlining\fR" 4
  .IX Item "-findirect-inlining"
  Inline also indirect calls that are discovered to be known at compile
  time thanks to previous inlining.  This option has any effect only
--- 12161,12167 ----
  inline.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-findirect\-inlining\fR 4
  .IX Item "-findirect-inlining"
  Inline also indirect calls that are discovered to be known at compile
  time thanks to previous inlining.  This option has any effect only
*************** when inlining itself is turned on by the
*** 12236,12242 ****
  or \fB\-finline\-small\-functions\fR options.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-finline\-functions\fR" 4
  .IX Item "-finline-functions"
  Consider all functions for inlining, even if they are not declared inline.
  The compiler heuristically decides which functions are worth integrating
--- 12169,12175 ----
  or \fB\-finline\-small\-functions\fR options.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-finline\-functions\fR 4
  .IX Item "-finline-functions"
  Consider all functions for inlining, even if they are not declared inline.
  The compiler heuristically decides which functions are worth integrating
*************** assembler code in its own right.
*** 12248,12254 ****
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.  Also enabled
  by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-finline\-functions\-called\-once\fR" 4
  .IX Item "-finline-functions-called-once"
  Consider all \f(CW\*(C`static\*(C'\fR functions called once for inlining into their
  caller even if they are not marked \f(CW\*(C`inline\*(C'\fR.  If a call to a given
--- 12181,12187 ----
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.  Also enabled
  by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-finline\-functions\-called\-once\fR 4
  .IX Item "-finline-functions-called-once"
  Consider all \f(CW\*(C`static\*(C'\fR functions called once for inlining into their
  caller even if they are not marked \f(CW\*(C`inline\*(C'\fR.  If a call to a given
*************** in its own right.
*** 12257,12263 ****
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR and \fB\-Os\fR,
  but not \fB\-Og\fR.
! .IP "\fB\-fearly\-inlining\fR" 4
  .IX Item "-fearly-inlining"
  Inline functions marked by \f(CW\*(C`always_inline\*(C'\fR and functions whose body seems
  smaller than the function call overhead early before doing
--- 12190,12196 ----
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR and \fB\-Os\fR,
  but not \fB\-Og\fR.
! .IP \fB\-fearly\-inlining\fR 4
  .IX Item "-fearly-inlining"
  Inline functions marked by \f(CW\*(C`always_inline\*(C'\fR and functions whose body seems
  smaller than the function call overhead early before doing
*************** makes profiling significantly cheaper an
*** 12266,12281 ****
  having large chains of nested wrapper functions.
  .Sp
  Enabled by default.
! .IP "\fB\-fipa\-sra\fR" 4
  .IX Item "-fipa-sra"
  Perform interprocedural scalar replacement of aggregates, removal of
  unused parameters and replacement of parameters passed by reference
  by parameters passed by value.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR and \fB\-Os\fR.
! .IP "\fB\-finline\-limit=\fR\fIn\fR" 4
  .IX Item "-finline-limit=n"
! By default, \s-1GCC\s0 limits the size of functions that can be inlined.  This flag
  allows coarse control of this limit.  \fIn\fR is the size of functions that
  can be inlined in number of pseudo instructions.
  .Sp
--- 12199,12214 ----
  having large chains of nested wrapper functions.
  .Sp
  Enabled by default.
! .IP \fB\-fipa\-sra\fR 4
  .IX Item "-fipa-sra"
  Perform interprocedural scalar replacement of aggregates, removal of
  unused parameters and replacement of parameters passed by reference
  by parameters passed by value.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR and \fB\-Os\fR.
! .IP \fB\-finline\-limit=\fR\fIn\fR 4
  .IX Item "-finline-limit=n"
! By default, GCC limits the size of functions that can be inlined.  This flag
  allows coarse control of this limit.  \fIn\fR is the size of functions that
  can be inlined in number of pseudo instructions.
  .Sp
*************** specified individually by using \fB\-\-p
*** 12284,12293 ****
  The \fB\-finline\-limit=\fR\fIn\fR option sets some of these parameters
  as follows:
  .RS 4
! .IP "\fBmax-inline-insns-single\fR" 4
  .IX Item "max-inline-insns-single"
  is set to \fIn\fR/2.
! .IP "\fBmax-inline-insns-auto\fR" 4
  .IX Item "max-inline-insns-auto"
  is set to \fIn\fR/2.
  .RE
--- 12217,12226 ----
  The \fB\-finline\-limit=\fR\fIn\fR option sets some of these parameters
  as follows:
  .RS 4
! .IP \fBmax\-inline\-insns\-single\fR 4
  .IX Item "max-inline-insns-single"
  is set to \fIn\fR/2.
! .IP \fBmax\-inline\-insns\-auto\fR 4
  .IX Item "max-inline-insns-auto"
  is set to \fIn\fR/2.
  .RE
*************** parameters controlling inlining and for
*** 12300,12336 ****
  in default behavior.
  .Sp
  \&\fINote:\fR pseudo instruction represents, in this particular context, an
! abstract measurement of function's size.  In no way does it represent a count
  of assembly instructions and as such its exact meaning might change from one
  release to an another.
  .RE
! .IP "\fB\-fno\-keep\-inline\-dllexport\fR" 4
  .IX Item "-fno-keep-inline-dllexport"
! This is a more fine-grained version of \fB\-fkeep\-inline\-functions\fR,
  which applies only to functions that are declared using the \f(CW\*(C`dllexport\*(C'\fR
  attribute or declspec.
! .IP "\fB\-fkeep\-inline\-functions\fR" 4
  .IX Item "-fkeep-inline-functions"
  In C, emit \f(CW\*(C`static\*(C'\fR functions that are declared \f(CW\*(C`inline\*(C'\fR
  into the object file, even if the function has been inlined into all
  of its callers.  This switch does not affect functions using the
! \&\f(CW\*(C`extern inline\*(C'\fR extension in \s-1GNU C90.\s0  In \*(C+, emit any and all
  inline functions into the object file.
! .IP "\fB\-fkeep\-static\-functions\fR" 4
  .IX Item "-fkeep-static-functions"
  Emit \f(CW\*(C`static\*(C'\fR functions into the object file, even if the function
  is never used.
! .IP "\fB\-fkeep\-static\-consts\fR" 4
  .IX Item "-fkeep-static-consts"
! Emit variables declared \f(CW\*(C`static const\*(C'\fR when optimization isn't turned
! on, even if the variables aren't referenced.
  .Sp
! \&\s-1GCC\s0 enables this option by default.  If you want to force the compiler to
  check if a variable is referenced, regardless of whether or not
  optimization is turned on, use the \fB\-fno\-keep\-static\-consts\fR option.
! .IP "\fB\-fmerge\-constants\fR" 4
  .IX Item "-fmerge-constants"
! Attempt to merge identical constants (string constants and floating-point
  constants) across compilation units.
  .Sp
  This option is the default for optimized compilation if the assembler and
--- 12233,12269 ----
  in default behavior.
  .Sp
  \&\fINote:\fR pseudo instruction represents, in this particular context, an
! abstract measurement of function\*(Aqs size.  In no way does it represent a count
  of assembly instructions and as such its exact meaning might change from one
  release to an another.
  .RE
! .IP \fB\-fno\-keep\-inline\-dllexport\fR 4
  .IX Item "-fno-keep-inline-dllexport"
! This is a more fine\-grained version of \fB\-fkeep\-inline\-functions\fR,
  which applies only to functions that are declared using the \f(CW\*(C`dllexport\*(C'\fR
  attribute or declspec.
! .IP \fB\-fkeep\-inline\-functions\fR 4
  .IX Item "-fkeep-inline-functions"
  In C, emit \f(CW\*(C`static\*(C'\fR functions that are declared \f(CW\*(C`inline\*(C'\fR
  into the object file, even if the function has been inlined into all
  of its callers.  This switch does not affect functions using the
! \&\f(CW\*(C`extern inline\*(C'\fR extension in GNU C90.  In C++, emit any and all
  inline functions into the object file.
! .IP \fB\-fkeep\-static\-functions\fR 4
  .IX Item "-fkeep-static-functions"
  Emit \f(CW\*(C`static\*(C'\fR functions into the object file, even if the function
  is never used.
! .IP \fB\-fkeep\-static\-consts\fR 4
  .IX Item "-fkeep-static-consts"
! Emit variables declared \f(CW\*(C`static const\*(C'\fR when optimization isn\*(Aqt turned
! on, even if the variables aren\*(Aqt referenced.
  .Sp
! GCC enables this option by default.  If you want to force the compiler to
  check if a variable is referenced, regardless of whether or not
  optimization is turned on, use the \fB\-fno\-keep\-static\-consts\fR option.
! .IP \fB\-fmerge\-constants\fR 4
  .IX Item "-fmerge-constants"
! Attempt to merge identical constants (string constants and floating\-point
  constants) across compilation units.
  .Sp
  This option is the default for optimized compilation if the assembler and
*************** linker support it.  Use \fB\-fno\-merge\
*** 12338,12393 ****
  behavior.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fmerge\-all\-constants\fR" 4
  .IX Item "-fmerge-all-constants"
  Attempt to merge identical constants and identical variables.
  .Sp
  This option implies \fB\-fmerge\-constants\fR.  In addition to
  \&\fB\-fmerge\-constants\fR this considers e.g. even constant initialized
! arrays or initialized constant variables with integral or floating-point
! types.  Languages like C or \*(C+ require each variable, including multiple
  instances of the same variable in recursive calls, to have distinct locations,
! so using this option results in non-conforming
  behavior.
! .IP "\fB\-fmodulo\-sched\fR" 4
  .IX Item "-fmodulo-sched"
  Perform swing modulo scheduling immediately before the first scheduling
  pass.  This pass looks at innermost loops and reorders their
  instructions by overlapping different iterations.
! .IP "\fB\-fmodulo\-sched\-allow\-regmoves\fR" 4
  .IX Item "-fmodulo-sched-allow-regmoves"
! Perform more aggressive SMS-based modulo scheduling with register moves
! allowed.  By setting this flag certain anti-dependences edges are
! deleted, which triggers the generation of reg-moves based on the
! life-range analysis.  This option is effective only with
  \&\fB\-fmodulo\-sched\fR enabled.
! .IP "\fB\-fno\-branch\-count\-reg\fR" 4
  .IX Item "-fno-branch-count-reg"
  Disable the optimization pass that scans for opportunities to use
! \&\*(L"decrement and branch\*(R" instructions on a count register instead of
  instruction sequences that decrement a register, compare it against zero, and
  then branch based upon the result.  This option is only meaningful on
  architectures that support such instructions, which include x86, PowerPC,
! \&\s-1IA\-64\s0 and S/390.  Note that the \fB\-fno\-branch\-count\-reg\fR option
! doesn't remove the decrement and branch instructions from the generated
  instruction stream introduced by other optimization passes.
  .Sp
  The default is \fB\-fbranch\-count\-reg\fR at \fB\-O1\fR and higher,
  except for \fB\-Og\fR.
! .IP "\fB\-fno\-function\-cse\fR" 4
  .IX Item "-fno-function-cse"
  Do not put function addresses in registers; make each instruction that
! calls a constant function contain the function's address explicitly.
  .Sp
  This option results in less efficient code, but some strange hacks
  that alter the assembler output may be confused by the optimizations
  performed when this option is not used.
  .Sp
  The default is \fB\-ffunction\-cse\fR
! .IP "\fB\-fno\-zero\-initialized\-in\-bss\fR" 4
  .IX Item "-fno-zero-initialized-in-bss"
! If the target supports a \s-1BSS\s0 section, \s-1GCC\s0 by default puts variables that
! are initialized to zero into \s-1BSS.\s0  This can save space in the resulting
  code.
  .Sp
  This option turns off this behavior because some programs explicitly
--- 12271,12326 ----
  behavior.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fmerge\-all\-constants\fR 4
  .IX Item "-fmerge-all-constants"
  Attempt to merge identical constants and identical variables.
  .Sp
  This option implies \fB\-fmerge\-constants\fR.  In addition to
  \&\fB\-fmerge\-constants\fR this considers e.g. even constant initialized
! arrays or initialized constant variables with integral or floating\-point
! types.  Languages like C or C++ require each variable, including multiple
  instances of the same variable in recursive calls, to have distinct locations,
! so using this option results in non\-conforming
  behavior.
! .IP \fB\-fmodulo\-sched\fR 4
  .IX Item "-fmodulo-sched"
  Perform swing modulo scheduling immediately before the first scheduling
  pass.  This pass looks at innermost loops and reorders their
  instructions by overlapping different iterations.
! .IP \fB\-fmodulo\-sched\-allow\-regmoves\fR 4
  .IX Item "-fmodulo-sched-allow-regmoves"
! Perform more aggressive SMS\-based modulo scheduling with register moves
! allowed.  By setting this flag certain anti\-dependences edges are
! deleted, which triggers the generation of reg\-moves based on the
! life\-range analysis.  This option is effective only with
  \&\fB\-fmodulo\-sched\fR enabled.
! .IP \fB\-fno\-branch\-count\-reg\fR 4
  .IX Item "-fno-branch-count-reg"
  Disable the optimization pass that scans for opportunities to use
! "decrement and branch" instructions on a count register instead of
  instruction sequences that decrement a register, compare it against zero, and
  then branch based upon the result.  This option is only meaningful on
  architectures that support such instructions, which include x86, PowerPC,
! IA\-64 and S/390.  Note that the \fB\-fno\-branch\-count\-reg\fR option
! doesn\*(Aqt remove the decrement and branch instructions from the generated
  instruction stream introduced by other optimization passes.
  .Sp
  The default is \fB\-fbranch\-count\-reg\fR at \fB\-O1\fR and higher,
  except for \fB\-Og\fR.
! .IP \fB\-fno\-function\-cse\fR 4
  .IX Item "-fno-function-cse"
  Do not put function addresses in registers; make each instruction that
! calls a constant function contain the function\*(Aqs address explicitly.
  .Sp
  This option results in less efficient code, but some strange hacks
  that alter the assembler output may be confused by the optimizations
  performed when this option is not used.
  .Sp
  The default is \fB\-ffunction\-cse\fR
! .IP \fB\-fno\-zero\-initialized\-in\-bss\fR 4
  .IX Item "-fno-zero-initialized-in-bss"
! If the target supports a BSS section, GCC by default puts variables that
! are initialized to zero into BSS.  This can save space in the resulting
  code.
  .Sp
  This option turns off this behavior because some programs explicitly
*************** resulting executable can find the beginn
*** 12396,12402 ****
  assumptions based on that.
  .Sp
  The default is \fB\-fzero\-initialized\-in\-bss\fR except in Ada.
! .IP "\fB\-fthread\-jumps\fR" 4
  .IX Item "-fthread-jumps"
  Perform optimizations that check to see if a jump branches to a
  location where another comparison subsumed by the first is found.  If
--- 12329,12335 ----
  assumptions based on that.
  .Sp
  The default is \fB\-fzero\-initialized\-in\-bss\fR except in Ada.
! .IP \fB\-fthread\-jumps\fR 4
  .IX Item "-fthread-jumps"
  Perform optimizations that check to see if a jump branches to a
  location where another comparison subsumed by the first is found.  If
*************** second branch or a point immediately fol
*** 12405,12411 ****
  the condition is known to be true or false.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fsplit\-wide\-types\fR" 4
  .IX Item "-fsplit-wide-types"
  When using a type that occupies multiple registers, such as \f(CW\*(C`long
  long\*(C'\fR on a 32\-bit system, split the registers apart and allocate them
--- 12338,12344 ----
  the condition is known to be true or false.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fsplit\-wide\-types\fR 4
  .IX Item "-fsplit-wide-types"
  When using a type that occupies multiple registers, such as \f(CW\*(C`long
  long\*(C'\fR on a 32\-bit system, split the registers apart and allocate them
*************** but may make debugging more difficult.
*** 12414,12461 ****
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR,
  \&\fB\-Os\fR.
! .IP "\fB\-fsplit\-wide\-types\-early\fR" 4
  .IX Item "-fsplit-wide-types-early"
  Fully split wide types early, instead of very late.
  This option has no effect unless \fB\-fsplit\-wide\-types\fR is turned on.
  .Sp
  This is the default on some targets.
! .IP "\fB\-fcse\-follow\-jumps\fR" 4
  .IX Item "-fcse-follow-jumps"
! In common subexpression elimination (\s-1CSE\s0), scan through jump instructions
  when the target of the jump is not reached by any other path.  For
! example, when \s-1CSE\s0 encounters an \f(CW\*(C`if\*(C'\fR statement with an
! \&\f(CW\*(C`else\*(C'\fR clause, \s-1CSE\s0 follows the jump when the condition
  tested is false.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fcse\-skip\-blocks\fR" 4
  .IX Item "-fcse-skip-blocks"
! This is similar to \fB\-fcse\-follow\-jumps\fR, but causes \s-1CSE\s0 to
! follow jumps that conditionally skip over blocks.  When \s-1CSE\s0
  encounters a simple \f(CW\*(C`if\*(C'\fR statement with no else clause,
! \&\fB\-fcse\-skip\-blocks\fR causes \s-1CSE\s0 to follow the jump around the
  body of the \f(CW\*(C`if\*(C'\fR.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-frerun\-cse\-after\-loop\fR" 4
  .IX Item "-frerun-cse-after-loop"
! Re-run common subexpression elimination after loop optimizations are
  performed.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fgcse\fR" 4
  .IX Item "-fgcse"
  Perform a global common subexpression elimination pass.
  This pass also performs global constant and copy propagation.
  .Sp
! \&\fINote:\fR When compiling a program using computed gotos, a \s-1GCC\s0
! extension, you may get better run-time performance if you disable
  the global common subexpression elimination pass by adding
  \&\fB\-fno\-gcse\fR to the command line.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fgcse\-lm\fR" 4
  .IX Item "-fgcse-lm"
  When \fB\-fgcse\-lm\fR is enabled, global common subexpression elimination
  attempts to move loads that are only killed by stores into themselves.  This
--- 12347,12394 ----
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR,
  \&\fB\-Os\fR.
! .IP \fB\-fsplit\-wide\-types\-early\fR 4
  .IX Item "-fsplit-wide-types-early"
  Fully split wide types early, instead of very late.
  This option has no effect unless \fB\-fsplit\-wide\-types\fR is turned on.
  .Sp
  This is the default on some targets.
! .IP \fB\-fcse\-follow\-jumps\fR 4
  .IX Item "-fcse-follow-jumps"
! In common subexpression elimination (CSE), scan through jump instructions
  when the target of the jump is not reached by any other path.  For
! example, when CSE encounters an \f(CW\*(C`if\*(C'\fR statement with an
! \&\f(CW\*(C`else\*(C'\fR clause, CSE follows the jump when the condition
  tested is false.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fcse\-skip\-blocks\fR 4
  .IX Item "-fcse-skip-blocks"
! This is similar to \fB\-fcse\-follow\-jumps\fR, but causes CSE to
! follow jumps that conditionally skip over blocks.  When CSE
  encounters a simple \f(CW\*(C`if\*(C'\fR statement with no else clause,
! \&\fB\-fcse\-skip\-blocks\fR causes CSE to follow the jump around the
  body of the \f(CW\*(C`if\*(C'\fR.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-frerun\-cse\-after\-loop\fR 4
  .IX Item "-frerun-cse-after-loop"
! Re\-run common subexpression elimination after loop optimizations are
  performed.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fgcse\fR 4
  .IX Item "-fgcse"
  Perform a global common subexpression elimination pass.
  This pass also performs global constant and copy propagation.
  .Sp
! \&\fINote:\fR When compiling a program using computed gotos, a GCC
! extension, you may get better run\-time performance if you disable
  the global common subexpression elimination pass by adding
  \&\fB\-fno\-gcse\fR to the command line.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fgcse\-lm\fR 4
  .IX Item "-fgcse-lm"
  When \fB\-fgcse\-lm\fR is enabled, global common subexpression elimination
  attempts to move loads that are only killed by stores into themselves.  This
*************** allows a loop containing a load/store se
*** 12463,12469 ****
  the loop, and a copy/store within the loop.
  .Sp
  Enabled by default when \fB\-fgcse\fR is enabled.
! .IP "\fB\-fgcse\-sm\fR" 4
  .IX Item "-fgcse-sm"
  When \fB\-fgcse\-sm\fR is enabled, a store motion pass is run after
  global common subexpression elimination.  This pass attempts to move
--- 12396,12402 ----
  the loop, and a copy/store within the loop.
  .Sp
  Enabled by default when \fB\-fgcse\fR is enabled.
! .IP \fB\-fgcse\-sm\fR 4
  .IX Item "-fgcse-sm"
  When \fB\-fgcse\-sm\fR is enabled, a store motion pass is run after
  global common subexpression elimination.  This pass attempts to move
*************** loops containing a load/store sequence c
*** 12472,12545 ****
  the loop and a store after the loop.
  .Sp
  Not enabled at any optimization level.
! .IP "\fB\-fgcse\-las\fR" 4
  .IX Item "-fgcse-las"
  When \fB\-fgcse\-las\fR is enabled, the global common subexpression
  elimination pass eliminates redundant loads that come after stores to the
  same memory location (both partial and full redundancies).
  .Sp
  Not enabled at any optimization level.
! .IP "\fB\-fgcse\-after\-reload\fR" 4
  .IX Item "-fgcse-after-reload"
  When \fB\-fgcse\-after\-reload\fR is enabled, a redundant load elimination
  pass is performed after reload.  The purpose of this pass is to clean up
  redundant spilling.
  .Sp
  Enabled by \fB\-O3\fR, \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-faggressive\-loop\-optimizations\fR" 4
  .IX Item "-faggressive-loop-optimizations"
  This option tells the loop optimizer to use language constraints to
  derive bounds for the number of iterations of a loop.  This assumes that
  loop code does not invoke undefined behavior by for example causing signed
! integer overflows or out-of-bound array accesses.  The bounds for the
  number of iterations of a loop are used to guide loop unrolling and peeling
  and loop exit test optimizations.
  This option is enabled by default.
! .IP "\fB\-funconstrained\-commons\fR" 4
  .IX Item "-funconstrained-commons"
  This option tells the compiler that variables declared in common blocks
  (e.g. Fortran) may later be overridden with longer trailing arrays. This
  prevents certain optimizations that depend on knowing the array bounds.
! .IP "\fB\-fcrossjumping\fR" 4
  .IX Item "-fcrossjumping"
! Perform cross-jumping transformation.
  This transformation unifies equivalent code and saves code size.  The
! resulting code may or may not perform better than without cross-jumping.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fauto\-inc\-dec\fR" 4
  .IX Item "-fauto-inc-dec"
  Combine increments or decrements of addresses with memory accesses.
  This pass is always skipped on architectures that do not have
  instructions to support this.  Enabled by default at \fB\-O1\fR and
  higher on architectures that support this.
! .IP "\fB\-fdce\fR" 4
  .IX Item "-fdce"
! Perform dead code elimination (\s-1DCE\s0) on \s-1RTL.\s0
  Enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-fdse\fR" 4
  .IX Item "-fdse"
! Perform dead store elimination (\s-1DSE\s0) on \s-1RTL.\s0
  Enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-fif\-conversion\fR" 4
  .IX Item "-fif-conversion"
! Attempt to transform conditional jumps into branch-less equivalents.  This
  includes use of conditional moves, min, max, set flags and abs instructions, and
  some tricks doable by standard arithmetics.  The use of conditional execution
  on chips where it is available is controlled by \fB\-fif\-conversion2\fR.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR, but
  not with \fB\-Og\fR.
! .IP "\fB\-fif\-conversion2\fR" 4
  .IX Item "-fif-conversion2"
  Use conditional execution (where available) to transform conditional jumps into
! branch-less equivalents.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR, but
  not with \fB\-Og\fR.
! .IP "\fB\-fdeclone\-ctor\-dtor\fR" 4
  .IX Item "-fdeclone-ctor-dtor"
! The \*(C+ \s-1ABI\s0 requires multiple entry points for constructors and
  destructors: one for a base subobject, one for a complete object, and
  one for a virtual destructor that calls operator delete afterwards.
  For a hierarchy with virtual bases, the base and complete variants are
--- 12405,12478 ----
  the loop and a store after the loop.
  .Sp
  Not enabled at any optimization level.
! .IP \fB\-fgcse\-las\fR 4
  .IX Item "-fgcse-las"
  When \fB\-fgcse\-las\fR is enabled, the global common subexpression
  elimination pass eliminates redundant loads that come after stores to the
  same memory location (both partial and full redundancies).
  .Sp
  Not enabled at any optimization level.
! .IP \fB\-fgcse\-after\-reload\fR 4
  .IX Item "-fgcse-after-reload"
  When \fB\-fgcse\-after\-reload\fR is enabled, a redundant load elimination
  pass is performed after reload.  The purpose of this pass is to clean up
  redundant spilling.
  .Sp
  Enabled by \fB\-O3\fR, \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-faggressive\-loop\-optimizations\fR 4
  .IX Item "-faggressive-loop-optimizations"
  This option tells the loop optimizer to use language constraints to
  derive bounds for the number of iterations of a loop.  This assumes that
  loop code does not invoke undefined behavior by for example causing signed
! integer overflows or out\-of\-bound array accesses.  The bounds for the
  number of iterations of a loop are used to guide loop unrolling and peeling
  and loop exit test optimizations.
  This option is enabled by default.
! .IP \fB\-funconstrained\-commons\fR 4
  .IX Item "-funconstrained-commons"
  This option tells the compiler that variables declared in common blocks
  (e.g. Fortran) may later be overridden with longer trailing arrays. This
  prevents certain optimizations that depend on knowing the array bounds.
! .IP \fB\-fcrossjumping\fR 4
  .IX Item "-fcrossjumping"
! Perform cross\-jumping transformation.
  This transformation unifies equivalent code and saves code size.  The
! resulting code may or may not perform better than without cross\-jumping.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fauto\-inc\-dec\fR 4
  .IX Item "-fauto-inc-dec"
  Combine increments or decrements of addresses with memory accesses.
  This pass is always skipped on architectures that do not have
  instructions to support this.  Enabled by default at \fB\-O1\fR and
  higher on architectures that support this.
! .IP \fB\-fdce\fR 4
  .IX Item "-fdce"
! Perform dead code elimination (DCE) on RTL.
  Enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-fdse\fR 4
  .IX Item "-fdse"
! Perform dead store elimination (DSE) on RTL.
  Enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-fif\-conversion\fR 4
  .IX Item "-fif-conversion"
! Attempt to transform conditional jumps into branch\-less equivalents.  This
  includes use of conditional moves, min, max, set flags and abs instructions, and
  some tricks doable by standard arithmetics.  The use of conditional execution
  on chips where it is available is controlled by \fB\-fif\-conversion2\fR.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR, but
  not with \fB\-Og\fR.
! .IP \fB\-fif\-conversion2\fR 4
  .IX Item "-fif-conversion2"
  Use conditional execution (where available) to transform conditional jumps into
! branch\-less equivalents.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR, but
  not with \fB\-Og\fR.
! .IP \fB\-fdeclone\-ctor\-dtor\fR 4
  .IX Item "-fdeclone-ctor-dtor"
! The C++ ABI requires multiple entry points for constructors and
  destructors: one for a base subobject, one for a complete object, and
  one for a virtual destructor that calls operator delete afterwards.
  For a hierarchy with virtual bases, the base and complete variants are
*************** base and complete variants are changed t
*** 12548,12560 ****
  implementation.
  .Sp
  Enabled by \fB\-Os\fR.
! .IP "\fB\-fdelete\-null\-pointer\-checks\fR" 4
  .IX Item "-fdelete-null-pointer-checks"
  Assume that programs cannot safely dereference null pointers, and that
  no code or data element resides at address zero.
  This option enables simple constant
  folding optimizations at all optimization levels.  In addition, other
! optimization passes in \s-1GCC\s0 use this flag to control global dataflow
  analyses that eliminate useless checks for null pointers; these assume
  that a memory access to address zero always results in a trap, so
  that if a pointer is checked after it has already been dereferenced,
--- 12481,12493 ----
  implementation.
  .Sp
  Enabled by \fB\-Os\fR.
! .IP \fB\-fdelete\-null\-pointer\-checks\fR 4
  .IX Item "-fdelete-null-pointer-checks"
  Assume that programs cannot safely dereference null pointers, and that
  no code or data element resides at address zero.
  This option enables simple constant
  folding optimizations at all optimization levels.  In addition, other
! optimization passes in GCC use this flag to control global dataflow
  analyses that eliminate useless checks for null pointers; these assume
  that a memory access to address zero always results in a trap, so
  that if a pointer is checked after it has already been dereferenced,
*************** Use \fB\-fno\-delete\-null\-pointer\-che
*** 12565,12582 ****
  for programs that depend on that behavior.
  .Sp
  This option is enabled by default on most targets.
! On \s-1AVR\s0 and \s-1MSP430,\s0 this option is completely disabled.
  .Sp
  Passes that use the dataflow information
  are enabled independently at different optimization levels.
! .IP "\fB\-fdevirtualize\fR" 4
  .IX Item "-fdevirtualize"
  Attempt to convert calls to virtual functions to direct calls.  This
  is done both within a procedure and interprocedurally as part of
  indirect inlining (\fB\-findirect\-inlining\fR) and interprocedural constant
  propagation (\fB\-fipa\-cp\fR).
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fdevirtualize\-speculatively\fR" 4
  .IX Item "-fdevirtualize-speculatively"
  Attempt to convert calls to virtual functions to speculative direct calls.
  Based on the analysis of the type inheritance graph, determine for a given call
--- 12498,12515 ----
  for programs that depend on that behavior.
  .Sp
  This option is enabled by default on most targets.
! On AVR and MSP430, this option is completely disabled.
  .Sp
  Passes that use the dataflow information
  are enabled independently at different optimization levels.
! .IP \fB\-fdevirtualize\fR 4
  .IX Item "-fdevirtualize"
  Attempt to convert calls to virtual functions to direct calls.  This
  is done both within a procedure and interprocedurally as part of
  indirect inlining (\fB\-findirect\-inlining\fR) and interprocedural constant
  propagation (\fB\-fipa\-cp\fR).
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fdevirtualize\-speculatively\fR 4
  .IX Item "-fdevirtualize-speculatively"
  Attempt to convert calls to virtual functions to speculative direct calls.
  Based on the analysis of the type inheritance graph, determine for a given call
*************** the set of likely targets. If the set is
*** 12584,12612 ****
  the call into a conditional deciding between direct and indirect calls.  The
  speculative calls enable more optimizations, such as inlining.  When they seem
  useless after further optimization, they are converted back into original form.
! .IP "\fB\-fdevirtualize\-at\-ltrans\fR" 4
  .IX Item "-fdevirtualize-at-ltrans"
  Stream extra information needed for aggressive devirtualization when running
! the link-time optimizer in local transformation mode.
  This option enables more devirtualization but
  significantly increases the size of streamed data. For this reason it is
  disabled by default.
! .IP "\fB\-fexpensive\-optimizations\fR" 4
  .IX Item "-fexpensive-optimizations"
  Perform a number of minor optimizations that are relatively expensive.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-free\fR" 4
  .IX Item "-free"
  Attempt to remove redundant extension instructions.  This is especially
! helpful for the x86\-64 architecture, which implicitly zero-extends in 64\-bit
  registers after writing to their lower 32\-bit half.
  .Sp
! Enabled for Alpha, AArch64, LoongArch, PowerPC, RISC-V, \s-1SPARC,\s0 h83000 and x86 at
  levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fno\-lifetime\-dse\fR" 4
  .IX Item "-fno-lifetime-dse"
! In \*(C+ the value of an object is only affected by changes within its
  lifetime: when the constructor begins, the object has an indeterminate
  value, and any changes during the lifetime of the object are dead when
  the object is destroyed.  Normally dead store elimination will take
--- 12517,12545 ----
  the call into a conditional deciding between direct and indirect calls.  The
  speculative calls enable more optimizations, such as inlining.  When they seem
  useless after further optimization, they are converted back into original form.
! .IP \fB\-fdevirtualize\-at\-ltrans\fR 4
  .IX Item "-fdevirtualize-at-ltrans"
  Stream extra information needed for aggressive devirtualization when running
! the link\-time optimizer in local transformation mode.
  This option enables more devirtualization but
  significantly increases the size of streamed data. For this reason it is
  disabled by default.
! .IP \fB\-fexpensive\-optimizations\fR 4
  .IX Item "-fexpensive-optimizations"
  Perform a number of minor optimizations that are relatively expensive.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-free\fR 4
  .IX Item "-free"
  Attempt to remove redundant extension instructions.  This is especially
! helpful for the x86\-64 architecture, which implicitly zero\-extends in 64\-bit
  registers after writing to their lower 32\-bit half.
  .Sp
! Enabled for Alpha, AArch64, LoongArch, PowerPC, RISC\-V, SPARC, h83000 and x86 at
  levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fno\-lifetime\-dse\fR 4
  .IX Item "-fno-lifetime-dse"
! In C++ the value of an object is only affected by changes within its
  lifetime: when the constructor begins, the object has an indeterminate
  value, and any changes during the lifetime of the object are dead when
  the object is destroyed.  Normally dead store elimination will take
*************** storage) but still treat the object as d
*** 12618,12654 ****
  can use \fB\-flifetime\-dse=1\fR.  The default behavior can be
  explicitly selected with \fB\-flifetime\-dse=2\fR.
  \&\fB\-flifetime\-dse=0\fR is equivalent to \fB\-fno\-lifetime\-dse\fR.
! .IP "\fB\-flive\-range\-shrinkage\fR" 4
  .IX Item "-flive-range-shrinkage"
  Attempt to decrease register pressure through register live range
  shrinkage.  This is helpful for fast processors with small or moderate
  size register sets.
! .IP "\fB\-fira\-algorithm=\fR\fIalgorithm\fR" 4
  .IX Item "-fira-algorithm=algorithm"
  Use the specified coloring algorithm for the integrated register
  allocator.  The \fIalgorithm\fR argument can be \fBpriority\fR, which
! specifies Chow's priority coloring, or \fB\s-1CB\s0\fR, which specifies
! Chaitin-Briggs coloring.  Chaitin-Briggs coloring is not implemented
  for all architectures, but for those targets that do support it, it is
  the default because it generates better code.
! .IP "\fB\-fira\-region=\fR\fIregion\fR" 4
  .IX Item "-fira-region=region"
  Use specified regions for the integrated register allocator.  The
  \&\fIregion\fR argument should be one of the following:
  .RS 4
! .IP "\fBall\fR" 4
  .IX Item "all"
  Use all loops as register allocation regions.
  This can give the best results for machines with a small and/or
  irregular register set.
! .IP "\fBmixed\fR" 4
  .IX Item "mixed"
  Use all loops except for loops with small register pressure
  as the regions.  This value usually gives
  the best results in most cases and for most architectures,
  and is enabled by default when compiling with optimization for speed
  (\fB\-O\fR, \fB\-O2\fR, ...).
! .IP "\fBone\fR" 4
  .IX Item "one"
  Use all functions as a single region.
  This typically results in the smallest code size, and is enabled by default for
--- 12551,12587 ----
  can use \fB\-flifetime\-dse=1\fR.  The default behavior can be
  explicitly selected with \fB\-flifetime\-dse=2\fR.
  \&\fB\-flifetime\-dse=0\fR is equivalent to \fB\-fno\-lifetime\-dse\fR.
! .IP \fB\-flive\-range\-shrinkage\fR 4
  .IX Item "-flive-range-shrinkage"
  Attempt to decrease register pressure through register live range
  shrinkage.  This is helpful for fast processors with small or moderate
  size register sets.
! .IP \fB\-fira\-algorithm=\fR\fIalgorithm\fR 4
  .IX Item "-fira-algorithm=algorithm"
  Use the specified coloring algorithm for the integrated register
  allocator.  The \fIalgorithm\fR argument can be \fBpriority\fR, which
! specifies Chow\*(Aqs priority coloring, or \fBCB\fR, which specifies
! Chaitin\-Briggs coloring.  Chaitin\-Briggs coloring is not implemented
  for all architectures, but for those targets that do support it, it is
  the default because it generates better code.
! .IP \fB\-fira\-region=\fR\fIregion\fR 4
  .IX Item "-fira-region=region"
  Use specified regions for the integrated register allocator.  The
  \&\fIregion\fR argument should be one of the following:
  .RS 4
! .IP \fBall\fR 4
  .IX Item "all"
  Use all loops as register allocation regions.
  This can give the best results for machines with a small and/or
  irregular register set.
! .IP \fBmixed\fR 4
  .IX Item "mixed"
  Use all loops except for loops with small register pressure
  as the regions.  This value usually gives
  the best results in most cases and for most architectures,
  and is enabled by default when compiling with optimization for speed
  (\fB\-O\fR, \fB\-O2\fR, ...).
! .IP \fBone\fR 4
  .IX Item "one"
  Use all functions as a single region.
  This typically results in the smallest code size, and is enabled by default for
*************** This typically results in the smallest c
*** 12656,12695 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-fira\-hoist\-pressure\fR" 4
  .IX Item "-fira-hoist-pressure"
! Use \s-1IRA\s0 to evaluate register pressure in the code hoisting pass for
  decisions to hoist expressions.  This option usually results in smaller
  code, but it can slow the compiler down.
  .Sp
  This option is enabled at level \fB\-Os\fR for all targets.
! .IP "\fB\-fira\-loop\-pressure\fR" 4
  .IX Item "-fira-loop-pressure"
! Use \s-1IRA\s0 to evaluate register pressure in loops for decisions to move
  loop invariants.  This option usually results in generation
  of faster and smaller code on machines with large register files (>= 32
  registers), but it can slow the compiler down.
  .Sp
  This option is enabled at level \fB\-O3\fR for some targets.
! .IP "\fB\-fno\-ira\-share\-save\-slots\fR" 4
  .IX Item "-fno-ira-share-save-slots"
! Disable sharing of stack slots used for saving call-used hard
  registers living through a call.  Each hard register gets a
  separate stack slot, and as a result function stack frames are
  larger.
! .IP "\fB\-fno\-ira\-share\-spill\-slots\fR" 4
  .IX Item "-fno-ira-share-spill-slots"
! Disable sharing of stack slots allocated for pseudo-registers.  Each
! pseudo-register that does not get a hard register gets a separate
  stack slot, and as a result function stack frames are larger.
! .IP "\fB\-flra\-remat\fR" 4
  .IX Item "-flra-remat"
! Enable CFG-sensitive rematerialization in \s-1LRA.\s0  Instead of loading
! values of spilled pseudos, \s-1LRA\s0 tries to rematerialize (recalculate)
  values if it is profitable.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fdelayed\-branch\fR" 4
  .IX Item "-fdelayed-branch"
  If supported for the target machine, attempt to reorder instructions
  to exploit instruction slots available after delayed branch
--- 12589,12628 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-fira\-hoist\-pressure\fR 4
  .IX Item "-fira-hoist-pressure"
! Use IRA to evaluate register pressure in the code hoisting pass for
  decisions to hoist expressions.  This option usually results in smaller
  code, but it can slow the compiler down.
  .Sp
  This option is enabled at level \fB\-Os\fR for all targets.
! .IP \fB\-fira\-loop\-pressure\fR 4
  .IX Item "-fira-loop-pressure"
! Use IRA to evaluate register pressure in loops for decisions to move
  loop invariants.  This option usually results in generation
  of faster and smaller code on machines with large register files (>= 32
  registers), but it can slow the compiler down.
  .Sp
  This option is enabled at level \fB\-O3\fR for some targets.
! .IP \fB\-fno\-ira\-share\-save\-slots\fR 4
  .IX Item "-fno-ira-share-save-slots"
! Disable sharing of stack slots used for saving call\-used hard
  registers living through a call.  Each hard register gets a
  separate stack slot, and as a result function stack frames are
  larger.
! .IP \fB\-fno\-ira\-share\-spill\-slots\fR 4
  .IX Item "-fno-ira-share-spill-slots"
! Disable sharing of stack slots allocated for pseudo\-registers.  Each
! pseudo\-register that does not get a hard register gets a separate
  stack slot, and as a result function stack frames are larger.
! .IP \fB\-flra\-remat\fR 4
  .IX Item "-flra-remat"
! Enable CFG\-sensitive rematerialization in LRA.  Instead of loading
! values of spilled pseudos, LRA tries to rematerialize (recalculate)
  values if it is profitable.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fdelayed\-branch\fR 4
  .IX Item "-fdelayed-branch"
  If supported for the target machine, attempt to reorder instructions
  to exploit instruction slots available after delayed branch
*************** instructions.
*** 12697,12714 ****
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR,
  but not at \fB\-Og\fR.
! .IP "\fB\-fschedule\-insns\fR" 4
  .IX Item "-fschedule-insns"
  If supported for the target machine, attempt to reorder instructions to
  eliminate execution stalls due to required data being unavailable.  This
  helps machines that have slow floating point or memory load instructions
  by allowing other instructions to be issued until the result of the load
! or floating-point instruction is required.
  .Sp
  Conventionally enabled at optimization levels \fB\-O2\fR and \fB\-O3\fR.
  However, many targets override this behavior.  For example, on x86, it is
  disabled at all levels, while on AArch64, it is enabled only at \fB\-O3\fR.
! .IP "\fB\-fschedule\-insns2\fR" 4
  .IX Item "-fschedule-insns2"
  Similar to \fB\-fschedule\-insns\fR, but requests an additional pass of
  instruction scheduling after register allocation has been done.  This is
--- 12630,12647 ----
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR,
  but not at \fB\-Og\fR.
! .IP \fB\-fschedule\-insns\fR 4
  .IX Item "-fschedule-insns"
  If supported for the target machine, attempt to reorder instructions to
  eliminate execution stalls due to required data being unavailable.  This
  helps machines that have slow floating point or memory load instructions
  by allowing other instructions to be issued until the result of the load
! or floating\-point instruction is required.
  .Sp
  Conventionally enabled at optimization levels \fB\-O2\fR and \fB\-O3\fR.
  However, many targets override this behavior.  For example, on x86, it is
  disabled at all levels, while on AArch64, it is enabled only at \fB\-O3\fR.
! .IP \fB\-fschedule\-insns2\fR 4
  .IX Item "-fschedule-insns2"
  Similar to \fB\-fschedule\-insns\fR, but requests an additional pass of
  instruction scheduling after register allocation has been done.  This is
*************** especially useful on machines with a rel
*** 12716,12732 ****
  registers and where memory load instructions take more than one cycle.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fno\-sched\-interblock\fR" 4
  .IX Item "-fno-sched-interblock"
  Disable instruction scheduling across basic blocks, which
  is normally enabled when scheduling before register allocation, i.e.
  with \fB\-fschedule\-insns\fR or at \fB\-O2\fR or higher.
! .IP "\fB\-fno\-sched\-spec\fR" 4
  .IX Item "-fno-sched-spec"
! Disable speculative motion of non-load instructions, which
  is normally enabled when scheduling before register allocation, i.e.
  with \fB\-fschedule\-insns\fR or at \fB\-O2\fR or higher.
! .IP "\fB\-fsched\-pressure\fR" 4
  .IX Item "-fsched-pressure"
  Enable register pressure sensitive insn scheduling before register
  allocation.  This only makes sense when scheduling before register
--- 12649,12665 ----
  registers and where memory load instructions take more than one cycle.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fno\-sched\-interblock\fR 4
  .IX Item "-fno-sched-interblock"
  Disable instruction scheduling across basic blocks, which
  is normally enabled when scheduling before register allocation, i.e.
  with \fB\-fschedule\-insns\fR or at \fB\-O2\fR or higher.
! .IP \fB\-fno\-sched\-spec\fR 4
  .IX Item "-fno-sched-spec"
! Disable speculative motion of non\-load instructions, which
  is normally enabled when scheduling before register allocation, i.e.
  with \fB\-fschedule\-insns\fR or at \fB\-O2\fR or higher.
! .IP \fB\-fsched\-pressure\fR 4
  .IX Item "-fsched-pressure"
  Enable register pressure sensitive insn scheduling before register
  allocation.  This only makes sense when scheduling before register
*************** allocation is enabled, i.e. with \fB\-fs
*** 12735,12754 ****
  generated code and decrease its size by preventing register pressure
  increase above the number of available hard registers and subsequent
  spills in register allocation.
! .IP "\fB\-fsched\-spec\-load\fR" 4
  .IX Item "-fsched-spec-load"
  Allow speculative motion of some load instructions.  This only makes
  sense when scheduling before register allocation, i.e. with
  \&\fB\-fschedule\-insns\fR or at \fB\-O2\fR or higher.
! .IP "\fB\-fsched\-spec\-load\-dangerous\fR" 4
  .IX Item "-fsched-spec-load-dangerous"
  Allow speculative motion of more load instructions.  This only makes
  sense when scheduling before register allocation, i.e. with
  \&\fB\-fschedule\-insns\fR or at \fB\-O2\fR or higher.
! .IP "\fB\-fsched\-stalled\-insns\fR" 4
  .IX Item "-fsched-stalled-insns"
  .PD 0
! .IP "\fB\-fsched\-stalled\-insns=\fR\fIn\fR" 4
  .IX Item "-fsched-stalled-insns=n"
  .PD
  Define how many insns (if any) can be moved prematurely from the queue
--- 12668,12687 ----
  generated code and decrease its size by preventing register pressure
  increase above the number of available hard registers and subsequent
  spills in register allocation.
! .IP \fB\-fsched\-spec\-load\fR 4
  .IX Item "-fsched-spec-load"
  Allow speculative motion of some load instructions.  This only makes
  sense when scheduling before register allocation, i.e. with
  \&\fB\-fschedule\-insns\fR or at \fB\-O2\fR or higher.
! .IP \fB\-fsched\-spec\-load\-dangerous\fR 4
  .IX Item "-fsched-spec-load-dangerous"
  Allow speculative motion of more load instructions.  This only makes
  sense when scheduling before register allocation, i.e. with
  \&\fB\-fschedule\-insns\fR or at \fB\-O2\fR or higher.
! .IP \fB\-fsched\-stalled\-insns\fR 4
  .IX Item "-fsched-stalled-insns"
  .PD 0
! .IP \fB\-fsched\-stalled\-insns=\fR\fIn\fR 4
  .IX Item "-fsched-stalled-insns=n"
  .PD
  Define how many insns (if any) can be moved prematurely from the queue
*************** prematurely, \fB\-fsched\-stalled\-insns
*** 12758,12767 ****
  on how many queued insns can be moved prematurely.
  \&\fB\-fsched\-stalled\-insns\fR without a value is equivalent to
  \&\fB\-fsched\-stalled\-insns=1\fR.
! .IP "\fB\-fsched\-stalled\-insns\-dep\fR" 4
  .IX Item "-fsched-stalled-insns-dep"
  .PD 0
! .IP "\fB\-fsched\-stalled\-insns\-dep=\fR\fIn\fR" 4
  .IX Item "-fsched-stalled-insns-dep=n"
  .PD
  Define how many insn groups (cycles) are examined for a dependency
--- 12691,12700 ----
  on how many queued insns can be moved prematurely.
  \&\fB\-fsched\-stalled\-insns\fR without a value is equivalent to
  \&\fB\-fsched\-stalled\-insns=1\fR.
! .IP \fB\-fsched\-stalled\-insns\-dep\fR 4
  .IX Item "-fsched-stalled-insns-dep"
  .PD 0
! .IP \fB\-fsched\-stalled\-insns\-dep=\fR\fIn\fR 4
  .IX Item "-fsched-stalled-insns-dep=n"
  .PD
  Define how many insn groups (cycles) are examined for a dependency
*************** and only if \fB\-fsched\-stalled\-insns\
*** 12772,12854 ****
  \&\fB\-fsched\-stalled\-insns\-dep=0\fR.
  \&\fB\-fsched\-stalled\-insns\-dep\fR without a value is equivalent to
  \&\fB\-fsched\-stalled\-insns\-dep=1\fR.
! .IP "\fB\-fsched2\-use\-superblocks\fR" 4
  .IX Item "-fsched2-use-superblocks"
  When scheduling after register allocation, use superblock scheduling.
  This allows motion across basic block boundaries,
  resulting in faster schedules.  This option is experimental, as not all machine
! descriptions used by \s-1GCC\s0 model the \s-1CPU\s0 closely enough to avoid unreliable
  results from the algorithm.
  .Sp
  This only makes sense when scheduling after register allocation, i.e. with
  \&\fB\-fschedule\-insns2\fR or at \fB\-O2\fR or higher.
! .IP "\fB\-fsched\-group\-heuristic\fR" 4
  .IX Item "-fsched-group-heuristic"
  Enable the group heuristic in the scheduler.  This heuristic favors
  the instruction that belongs to a schedule group.  This is enabled
  by default when scheduling is enabled, i.e. with \fB\-fschedule\-insns\fR
  or \fB\-fschedule\-insns2\fR or at \fB\-O2\fR or higher.
! .IP "\fB\-fsched\-critical\-path\-heuristic\fR" 4
  .IX Item "-fsched-critical-path-heuristic"
! Enable the critical-path heuristic in the scheduler.  This heuristic favors
  instructions on the critical path.  This is enabled by default when
  scheduling is enabled, i.e. with \fB\-fschedule\-insns\fR
  or \fB\-fschedule\-insns2\fR or at \fB\-O2\fR or higher.
! .IP "\fB\-fsched\-spec\-insn\-heuristic\fR" 4
  .IX Item "-fsched-spec-insn-heuristic"
  Enable the speculative instruction heuristic in the scheduler.  This
  heuristic favors speculative instructions with greater dependency weakness.
  This is enabled by default when scheduling is enabled, i.e.
  with \fB\-fschedule\-insns\fR or \fB\-fschedule\-insns2\fR
  or at \fB\-O2\fR or higher.
! .IP "\fB\-fsched\-rank\-heuristic\fR" 4
  .IX Item "-fsched-rank-heuristic"
  Enable the rank heuristic in the scheduler.  This heuristic favors
  the instruction belonging to a basic block with greater size or frequency.
  This is enabled by default when scheduling is enabled, i.e.
  with \fB\-fschedule\-insns\fR or \fB\-fschedule\-insns2\fR or
  at \fB\-O2\fR or higher.
! .IP "\fB\-fsched\-last\-insn\-heuristic\fR" 4
  .IX Item "-fsched-last-insn-heuristic"
! Enable the last-instruction heuristic in the scheduler.  This heuristic
  favors the instruction that is less dependent on the last instruction
  scheduled.  This is enabled by default when scheduling is enabled,
  i.e. with \fB\-fschedule\-insns\fR or \fB\-fschedule\-insns2\fR or
  at \fB\-O2\fR or higher.
! .IP "\fB\-fsched\-dep\-count\-heuristic\fR" 4
  .IX Item "-fsched-dep-count-heuristic"
! Enable the dependent-count heuristic in the scheduler.  This heuristic
  favors the instruction that has more instructions depending on it.
  This is enabled by default when scheduling is enabled, i.e.
  with \fB\-fschedule\-insns\fR or \fB\-fschedule\-insns2\fR or
  at \fB\-O2\fR or higher.
! .IP "\fB\-freschedule\-modulo\-scheduled\-loops\fR" 4
  .IX Item "-freschedule-modulo-scheduled-loops"
  Modulo scheduling is performed before traditional scheduling.  If a loop
  is modulo scheduled, later scheduling passes may change its schedule.
  Use this option to control that behavior.
! .IP "\fB\-fselective\-scheduling\fR" 4
  .IX Item "-fselective-scheduling"
  Schedule instructions using selective scheduling algorithm.  Selective
  scheduling runs instead of the first scheduler pass.
! .IP "\fB\-fselective\-scheduling2\fR" 4
  .IX Item "-fselective-scheduling2"
  Schedule instructions using selective scheduling algorithm.  Selective
  scheduling runs instead of the second scheduler pass.
! .IP "\fB\-fsel\-sched\-pipelining\fR" 4
  .IX Item "-fsel-sched-pipelining"
  Enable software pipelining of innermost loops during selective scheduling.
  This option has no effect unless one of \fB\-fselective\-scheduling\fR or
  \&\fB\-fselective\-scheduling2\fR is turned on.
! .IP "\fB\-fsel\-sched\-pipelining\-outer\-loops\fR" 4
  .IX Item "-fsel-sched-pipelining-outer-loops"
  When pipelining loops during selective scheduling, also pipeline outer loops.
  This option has no effect unless \fB\-fsel\-sched\-pipelining\fR is turned on.
! .IP "\fB\-fsemantic\-interposition\fR" 4
  .IX Item "-fsemantic-interposition"
! Some object formats, like \s-1ELF,\s0 allow interposing of symbols by the
  dynamic linker.
! This means that for symbols exported from the \s-1DSO,\s0 the compiler cannot perform
  interprocedural propagation, inlining and other optimizations in anticipation
  that the function or variable in question may change. While this feature is
  useful, for example, to rewrite memory allocation functions by a debugging
--- 12705,12787 ----
  \&\fB\-fsched\-stalled\-insns\-dep=0\fR.
  \&\fB\-fsched\-stalled\-insns\-dep\fR without a value is equivalent to
  \&\fB\-fsched\-stalled\-insns\-dep=1\fR.
! .IP \fB\-fsched2\-use\-superblocks\fR 4
  .IX Item "-fsched2-use-superblocks"
  When scheduling after register allocation, use superblock scheduling.
  This allows motion across basic block boundaries,
  resulting in faster schedules.  This option is experimental, as not all machine
! descriptions used by GCC model the CPU closely enough to avoid unreliable
  results from the algorithm.
  .Sp
  This only makes sense when scheduling after register allocation, i.e. with
  \&\fB\-fschedule\-insns2\fR or at \fB\-O2\fR or higher.
! .IP \fB\-fsched\-group\-heuristic\fR 4
  .IX Item "-fsched-group-heuristic"
  Enable the group heuristic in the scheduler.  This heuristic favors
  the instruction that belongs to a schedule group.  This is enabled
  by default when scheduling is enabled, i.e. with \fB\-fschedule\-insns\fR
  or \fB\-fschedule\-insns2\fR or at \fB\-O2\fR or higher.
! .IP \fB\-fsched\-critical\-path\-heuristic\fR 4
  .IX Item "-fsched-critical-path-heuristic"
! Enable the critical\-path heuristic in the scheduler.  This heuristic favors
  instructions on the critical path.  This is enabled by default when
  scheduling is enabled, i.e. with \fB\-fschedule\-insns\fR
  or \fB\-fschedule\-insns2\fR or at \fB\-O2\fR or higher.
! .IP \fB\-fsched\-spec\-insn\-heuristic\fR 4
  .IX Item "-fsched-spec-insn-heuristic"
  Enable the speculative instruction heuristic in the scheduler.  This
  heuristic favors speculative instructions with greater dependency weakness.
  This is enabled by default when scheduling is enabled, i.e.
  with \fB\-fschedule\-insns\fR or \fB\-fschedule\-insns2\fR
  or at \fB\-O2\fR or higher.
! .IP \fB\-fsched\-rank\-heuristic\fR 4
  .IX Item "-fsched-rank-heuristic"
  Enable the rank heuristic in the scheduler.  This heuristic favors
  the instruction belonging to a basic block with greater size or frequency.
  This is enabled by default when scheduling is enabled, i.e.
  with \fB\-fschedule\-insns\fR or \fB\-fschedule\-insns2\fR or
  at \fB\-O2\fR or higher.
! .IP \fB\-fsched\-last\-insn\-heuristic\fR 4
  .IX Item "-fsched-last-insn-heuristic"
! Enable the last\-instruction heuristic in the scheduler.  This heuristic
  favors the instruction that is less dependent on the last instruction
  scheduled.  This is enabled by default when scheduling is enabled,
  i.e. with \fB\-fschedule\-insns\fR or \fB\-fschedule\-insns2\fR or
  at \fB\-O2\fR or higher.
! .IP \fB\-fsched\-dep\-count\-heuristic\fR 4
  .IX Item "-fsched-dep-count-heuristic"
! Enable the dependent\-count heuristic in the scheduler.  This heuristic
  favors the instruction that has more instructions depending on it.
  This is enabled by default when scheduling is enabled, i.e.
  with \fB\-fschedule\-insns\fR or \fB\-fschedule\-insns2\fR or
  at \fB\-O2\fR or higher.
! .IP \fB\-freschedule\-modulo\-scheduled\-loops\fR 4
  .IX Item "-freschedule-modulo-scheduled-loops"
  Modulo scheduling is performed before traditional scheduling.  If a loop
  is modulo scheduled, later scheduling passes may change its schedule.
  Use this option to control that behavior.
! .IP \fB\-fselective\-scheduling\fR 4
  .IX Item "-fselective-scheduling"
  Schedule instructions using selective scheduling algorithm.  Selective
  scheduling runs instead of the first scheduler pass.
! .IP \fB\-fselective\-scheduling2\fR 4
  .IX Item "-fselective-scheduling2"
  Schedule instructions using selective scheduling algorithm.  Selective
  scheduling runs instead of the second scheduler pass.
! .IP \fB\-fsel\-sched\-pipelining\fR 4
  .IX Item "-fsel-sched-pipelining"
  Enable software pipelining of innermost loops during selective scheduling.
  This option has no effect unless one of \fB\-fselective\-scheduling\fR or
  \&\fB\-fselective\-scheduling2\fR is turned on.
! .IP \fB\-fsel\-sched\-pipelining\-outer\-loops\fR 4
  .IX Item "-fsel-sched-pipelining-outer-loops"
  When pipelining loops during selective scheduling, also pipeline outer loops.
  This option has no effect unless \fB\-fsel\-sched\-pipelining\fR is turned on.
! .IP \fB\-fsemantic\-interposition\fR 4
  .IX Item "-fsemantic-interposition"
! Some object formats, like ELF, allow interposing of symbols by the
  dynamic linker.
! This means that for symbols exported from the DSO, the compiler cannot perform
  interprocedural propagation, inlining and other optimizations in anticipation
  that the function or variable in question may change. While this feature is
  useful, for example, to rewrite memory allocation functions by a debugging
*************** for variables, the constructor of the va
*** 12861,12878 ****
  has no effect for functions explicitly declared inline
  (where it is never allowed for interposition to change semantics)
  and for symbols explicitly declared weak.
! .IP "\fB\-fshrink\-wrap\fR" 4
  .IX Item "-fshrink-wrap"
  Emit function prologues only before parts of the function that need it,
  rather than at the top of the function.  This flag is enabled by default at
  \&\fB\-O\fR and higher.
! .IP "\fB\-fshrink\-wrap\-separate\fR" 4
  .IX Item "-fshrink-wrap-separate"
! Shrink-wrap separate parts of the prologue and epilogue separately, so that
  those parts are only executed when needed.
  This option is on by default, but has no effect unless \fB\-fshrink\-wrap\fR
  is also turned on and the target supports this.
! .IP "\fB\-fcaller\-saves\fR" 4
  .IX Item "-fcaller-saves"
  Enable allocation of values to registers that are clobbered by
  function calls, by emitting extra instructions to save and restore the
--- 12794,12811 ----
  has no effect for functions explicitly declared inline
  (where it is never allowed for interposition to change semantics)
  and for symbols explicitly declared weak.
! .IP \fB\-fshrink\-wrap\fR 4
  .IX Item "-fshrink-wrap"
  Emit function prologues only before parts of the function that need it,
  rather than at the top of the function.  This flag is enabled by default at
  \&\fB\-O\fR and higher.
! .IP \fB\-fshrink\-wrap\-separate\fR 4
  .IX Item "-fshrink-wrap-separate"
! Shrink\-wrap separate parts of the prologue and epilogue separately, so that
  those parts are only executed when needed.
  This option is on by default, but has no effect unless \fB\-fshrink\-wrap\fR
  is also turned on and the target supports this.
! .IP \fB\-fcaller\-saves\fR 4
  .IX Item "-fcaller-saves"
  Enable allocation of values to registers that are clobbered by
  function calls, by emitting extra instructions to save and restore the
*************** registers around such calls.  Such alloc
*** 12880,12895 ****
  seems to result in better code.
  .Sp
  This option is always enabled by default on certain machines, usually
! those which have no call-preserved registers to use instead.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fcombine\-stack\-adjustments\fR" 4
  .IX Item "-fcombine-stack-adjustments"
  Tracks stack adjustments (pushes and pops) and stack memory references
  and then tries to find ways to combine them.
  .Sp
  Enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-fipa\-ra\fR" 4
  .IX Item "-fipa-ra"
  Use caller save registers for allocation if those registers are not used by
  any called function.  In that case it is not necessary to save and restore
--- 12813,12828 ----
  seems to result in better code.
  .Sp
  This option is always enabled by default on certain machines, usually
! those which have no call\-preserved registers to use instead.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fcombine\-stack\-adjustments\fR 4
  .IX Item "-fcombine-stack-adjustments"
  Tracks stack adjustments (pushes and pops) and stack memory references
  and then tries to find ways to combine them.
  .Sp
  Enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-fipa\-ra\fR 4
  .IX Item "-fipa-ra"
  Use caller save registers for allocation if those registers are not used by
  any called function.  In that case it is not necessary to save and restore
*************** same compilation unit as current functio
*** 12898,12971 ****
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR, however the option
  is disabled if generated code will be instrumented for profiling
! (\fB\-p\fR, or \fB\-pg\fR) or if callee's register usage cannot be known
  exactly (this happens on targets that do not expose prologues
! and epilogues in \s-1RTL\s0).
! .IP "\fB\-fconserve\-stack\fR" 4
  .IX Item "-fconserve-stack"
  Attempt to minimize stack usage.  The compiler attempts to use less
  stack space, even if that makes the program slower.  This option
! implies setting the \fBlarge-stack-frame\fR parameter to 100
! and the \fBlarge-stack-frame-growth\fR parameter to 400.
! .IP "\fB\-ftree\-reassoc\fR" 4
  .IX Item "-ftree-reassoc"
  Perform reassociation on trees.  This flag is enabled by default
  at \fB\-O1\fR and higher.
! .IP "\fB\-fcode\-hoisting\fR" 4
  .IX Item "-fcode-hoisting"
  Perform code hoisting.  Code hoisting tries to move the
  evaluation of expressions executed on all paths to the function exit
  as early as possible.  This is especially useful as a code size
  optimization, but it often helps for code speed as well.
  This flag is enabled by default at \fB\-O2\fR and higher.
! .IP "\fB\-ftree\-pre\fR" 4
  .IX Item "-ftree-pre"
! Perform partial redundancy elimination (\s-1PRE\s0) on trees.  This flag is
  enabled by default at \fB\-O2\fR and \fB\-O3\fR.
! .IP "\fB\-ftree\-partial\-pre\fR" 4
  .IX Item "-ftree-partial-pre"
! Make partial redundancy elimination (\s-1PRE\s0) more aggressive.  This flag is
  enabled by default at \fB\-O3\fR.
! .IP "\fB\-ftree\-forwprop\fR" 4
  .IX Item "-ftree-forwprop"
  Perform forward propagation on trees.  This flag is enabled by default
  at \fB\-O1\fR and higher.
! .IP "\fB\-ftree\-fre\fR" 4
  .IX Item "-ftree-fre"
! Perform full redundancy elimination (\s-1FRE\s0) on trees.  The difference
! between \s-1FRE\s0 and \s-1PRE\s0 is that \s-1FRE\s0 only considers expressions
  that are computed on all paths leading to the redundant computation.
! This analysis is faster than \s-1PRE,\s0 though it exposes fewer redundancies.
  This flag is enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-ftree\-phiprop\fR" 4
  .IX Item "-ftree-phiprop"
  Perform hoisting of loads from conditional pointers on trees.  This
  pass is enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-fhoist\-adjacent\-loads\fR" 4
  .IX Item "-fhoist-adjacent-loads"
! Speculatively hoist loads from both branches of an if-then-else if the
  loads are from adjacent locations in the same structure and the target
  architecture has a conditional move instruction.  This flag is enabled
  by default at \fB\-O2\fR and higher.
! .IP "\fB\-ftree\-copy\-prop\fR" 4
  .IX Item "-ftree-copy-prop"
  Perform copy propagation on trees.  This pass eliminates unnecessary
  copy operations.  This flag is enabled by default at \fB\-O1\fR and
  higher.
! .IP "\fB\-fipa\-pure\-const\fR" 4
  .IX Item "-fipa-pure-const"
  Discover which functions are pure or constant.
  Enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-fipa\-reference\fR" 4
  .IX Item "-fipa-reference"
  Discover which static variables do not escape the
  compilation unit.
  Enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-fipa\-reference\-addressable\fR" 4
  .IX Item "-fipa-reference-addressable"
! Discover read-only, write-only and non-addressable static variables.
  Enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-fipa\-reorder\-for\-locality\fR" 4
  .IX Item "-fipa-reorder-for-locality"
  Group call chains close together in the binary layout to improve code
  locality and minimize jump distances between frequently called functions.
--- 12831,12904 ----
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR, however the option
  is disabled if generated code will be instrumented for profiling
! (\fB\-p\fR, or \fB\-pg\fR) or if callee\*(Aqs register usage cannot be known
  exactly (this happens on targets that do not expose prologues
! and epilogues in RTL).
! .IP \fB\-fconserve\-stack\fR 4
  .IX Item "-fconserve-stack"
  Attempt to minimize stack usage.  The compiler attempts to use less
  stack space, even if that makes the program slower.  This option
! implies setting the \fBlarge\-stack\-frame\fR parameter to 100
! and the \fBlarge\-stack\-frame\-growth\fR parameter to 400.
! .IP \fB\-ftree\-reassoc\fR 4
  .IX Item "-ftree-reassoc"
  Perform reassociation on trees.  This flag is enabled by default
  at \fB\-O1\fR and higher.
! .IP \fB\-fcode\-hoisting\fR 4
  .IX Item "-fcode-hoisting"
  Perform code hoisting.  Code hoisting tries to move the
  evaluation of expressions executed on all paths to the function exit
  as early as possible.  This is especially useful as a code size
  optimization, but it often helps for code speed as well.
  This flag is enabled by default at \fB\-O2\fR and higher.
! .IP \fB\-ftree\-pre\fR 4
  .IX Item "-ftree-pre"
! Perform partial redundancy elimination (PRE) on trees.  This flag is
  enabled by default at \fB\-O2\fR and \fB\-O3\fR.
! .IP \fB\-ftree\-partial\-pre\fR 4
  .IX Item "-ftree-partial-pre"
! Make partial redundancy elimination (PRE) more aggressive.  This flag is
  enabled by default at \fB\-O3\fR.
! .IP \fB\-ftree\-forwprop\fR 4
  .IX Item "-ftree-forwprop"
  Perform forward propagation on trees.  This flag is enabled by default
  at \fB\-O1\fR and higher.
! .IP \fB\-ftree\-fre\fR 4
  .IX Item "-ftree-fre"
! Perform full redundancy elimination (FRE) on trees.  The difference
! between FRE and PRE is that FRE only considers expressions
  that are computed on all paths leading to the redundant computation.
! This analysis is faster than PRE, though it exposes fewer redundancies.
  This flag is enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-ftree\-phiprop\fR 4
  .IX Item "-ftree-phiprop"
  Perform hoisting of loads from conditional pointers on trees.  This
  pass is enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-fhoist\-adjacent\-loads\fR 4
  .IX Item "-fhoist-adjacent-loads"
! Speculatively hoist loads from both branches of an if\-then\-else if the
  loads are from adjacent locations in the same structure and the target
  architecture has a conditional move instruction.  This flag is enabled
  by default at \fB\-O2\fR and higher.
! .IP \fB\-ftree\-copy\-prop\fR 4
  .IX Item "-ftree-copy-prop"
  Perform copy propagation on trees.  This pass eliminates unnecessary
  copy operations.  This flag is enabled by default at \fB\-O1\fR and
  higher.
! .IP \fB\-fipa\-pure\-const\fR 4
  .IX Item "-fipa-pure-const"
  Discover which functions are pure or constant.
  Enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-fipa\-reference\fR 4
  .IX Item "-fipa-reference"
  Discover which static variables do not escape the
  compilation unit.
  Enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-fipa\-reference\-addressable\fR 4
  .IX Item "-fipa-reference-addressable"
! Discover read\-only, write\-only and non\-addressable static variables.
  Enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-fipa\-reorder\-for\-locality\fR 4
  .IX Item "-fipa-reorder-for-locality"
  Group call chains close together in the binary layout to improve code
  locality and minimize jump distances between frequently called functions.
*************** This option is incompatible with an expl
*** 12979,12995 ****
  scheme.
  If using this option it is recommended to also use profile feedback, but this
  option is not enabled by default otherwise.
! .IP "\fB\-fipa\-stack\-alignment\fR" 4
  .IX Item "-fipa-stack-alignment"
  Reduce stack alignment on call sites if possible.
  Enabled by default.
! .IP "\fB\-fipa\-pta\fR" 4
  .IX Item "-fipa-pta"
  Perform interprocedural pointer analysis and interprocedural modification
  and reference analysis.  This option can cause excessive memory and
! compile-time usage on large compilation units.  It is not enabled by
  default at any optimization level.
! .IP "\fB\-fipa\-profile\fR" 4
  .IX Item "-fipa-profile"
  Perform interprocedural profile propagation.  The functions called only from
  cold functions are marked as cold. Also functions executed once (such as
--- 12912,12928 ----
  scheme.
  If using this option it is recommended to also use profile feedback, but this
  option is not enabled by default otherwise.
! .IP \fB\-fipa\-stack\-alignment\fR 4
  .IX Item "-fipa-stack-alignment"
  Reduce stack alignment on call sites if possible.
  Enabled by default.
! .IP \fB\-fipa\-pta\fR 4
  .IX Item "-fipa-pta"
  Perform interprocedural pointer analysis and interprocedural modification
  and reference analysis.  This option can cause excessive memory and
! compile\-time usage on large compilation units.  It is not enabled by
  default at any optimization level.
! .IP \fB\-fipa\-profile\fR 4
  .IX Item "-fipa-profile"
  Perform interprocedural profile propagation.  The functions called only from
  cold functions are marked as cold. Also functions executed once (such as
*************** cold functions are marked as cold. Also
*** 12997,13009 ****
  identified. Cold functions and loop less parts of functions executed once are
  then optimized for size.
  Enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-fipa\-modref\fR" 4
  .IX Item "-fipa-modref"
  Perform interprocedural mod/ref analysis.  This optimization analyzes the side
  effects of functions (memory locations that are modified or referenced) and
  enables better optimization across the function call boundary.  This flag is
  enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-fipa\-cp\fR" 4
  .IX Item "-fipa-cp"
  Perform interprocedural constant propagation.
  This optimization analyzes the program to determine when values passed
--- 12930,12942 ----
  identified. Cold functions and loop less parts of functions executed once are
  then optimized for size.
  Enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-fipa\-modref\fR 4
  .IX Item "-fipa-modref"
  Perform interprocedural mod/ref analysis.  This optimization analyzes the side
  effects of functions (memory locations that are modified or referenced) and
  enables better optimization across the function call boundary.  This flag is
  enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-fipa\-cp\fR 4
  .IX Item "-fipa-cp"
  Perform interprocedural constant propagation.
  This optimization analyzes the program to determine when values passed
*************** This optimization can substantially incr
*** 13012,13018 ****
  if the application has constants passed to functions.
  This flag is enabled by default at \fB\-O2\fR, \fB\-Os\fR and \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-fipa\-cp\-clone\fR" 4
  .IX Item "-fipa-cp-clone"
  Perform function cloning to make interprocedural constant propagation stronger.
  When enabled, interprocedural constant propagation performs function cloning
--- 12945,12951 ----
  if the application has constants passed to functions.
  This flag is enabled by default at \fB\-O2\fR, \fB\-Os\fR and \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-fipa\-cp\-clone\fR 4
  .IX Item "-fipa-cp-clone"
  Perform function cloning to make interprocedural constant propagation stronger.
  When enabled, interprocedural constant propagation performs function cloning
*************** it may significantly increase code size
*** 13022,13051 ****
  (see \fB\-\-param ipa\-cp\-unit\-growth=\fR\fIvalue\fR).
  This flag is enabled by default at \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-fipa\-bit\-cp\fR" 4
  .IX Item "-fipa-bit-cp"
  When enabled, perform interprocedural bitwise constant
  propagation. This flag is enabled by default at \fB\-O2\fR and
  by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
  It requires that \fB\-fipa\-cp\fR is enabled.
! .IP "\fB\-fipa\-vrp\fR" 4
  .IX Item "-fipa-vrp"
  When enabled, perform interprocedural propagation of value
  ranges. This flag is enabled by default at \fB\-O2\fR. It requires
  that \fB\-fipa\-cp\fR is enabled.
! .IP "\fB\-fipa\-icf\fR" 4
  .IX Item "-fipa-icf"
! Perform Identical Code Folding for functions and read-only variables.
  The optimization reduces code size and may disturb unwind stacks by replacing
  a function by equivalent one with a different name. The optimization works
! more effectively with link-time optimization enabled.
  .Sp
! Although the behavior is similar to the Gold Linker's \s-1ICF\s0 optimization, \s-1GCC ICF\s0
  works on different levels and thus the optimizations are not same \- there are
! equivalences that are found only by \s-1GCC\s0 and equivalences found only by Gold.
  .Sp
  This flag is enabled by default at \fB\-O2\fR and \fB\-Os\fR.
! .IP "\fB\-flate\-combine\-instructions\fR" 4
  .IX Item "-flate-combine-instructions"
  Enable two instruction combination passes that run relatively late in the
  compilation process.  One of the passes runs before register allocation and
--- 12955,12984 ----
  (see \fB\-\-param ipa\-cp\-unit\-growth=\fR\fIvalue\fR).
  This flag is enabled by default at \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-fipa\-bit\-cp\fR 4
  .IX Item "-fipa-bit-cp"
  When enabled, perform interprocedural bitwise constant
  propagation. This flag is enabled by default at \fB\-O2\fR and
  by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
  It requires that \fB\-fipa\-cp\fR is enabled.
! .IP \fB\-fipa\-vrp\fR 4
  .IX Item "-fipa-vrp"
  When enabled, perform interprocedural propagation of value
  ranges. This flag is enabled by default at \fB\-O2\fR. It requires
  that \fB\-fipa\-cp\fR is enabled.
! .IP \fB\-fipa\-icf\fR 4
  .IX Item "-fipa-icf"
! Perform Identical Code Folding for functions and read\-only variables.
  The optimization reduces code size and may disturb unwind stacks by replacing
  a function by equivalent one with a different name. The optimization works
! more effectively with link\-time optimization enabled.
  .Sp
! Although the behavior is similar to the Gold Linker\*(Aqs ICF optimization, GCC ICF
  works on different levels and thus the optimizations are not same \- there are
! equivalences that are found only by GCC and equivalences found only by Gold.
  .Sp
  This flag is enabled by default at \fB\-O2\fR and \fB\-Os\fR.
! .IP \fB\-flate\-combine\-instructions\fR 4
  .IX Item "-flate-combine-instructions"
  Enable two instruction combination passes that run relatively late in the
  compilation process.  One of the passes runs before register allocation and
*************** the other after register allocation.  Th
*** 13053,13086 ****
  substitute definitions into all uses.
  .Sp
  Most targets enable this flag by default at \fB\-O2\fR and \fB\-Os\fR.
! .IP "\fB\-flive\-patching=\fR\fIlevel\fR" 4
  .IX Item "-flive-patching=level"
! Control \s-1GCC\s0's optimizations to produce output suitable for live-patching.
  .Sp
! If the compiler's optimization uses a function's body or information extracted
  from its body to optimize/change another function, the latter is called an
  impacted function of the former.  If a function is patched, its impacted
  functions should be patched too.
  .Sp
! The impacted functions are determined by the compiler's interprocedural
  optimizations.  For example, a caller is impacted when inlining a function
  into its caller,
  cloning a function and changing its caller to call this new clone,
! or extracting a function's pureness/constness information to optimize
  its direct or indirect callers, etc.
  .Sp
! Usually, the more \s-1IPA\s0 optimizations enabled, the larger the number of
  impacted functions for each function.  In order to control the number of
  impacted functions and more easily compute the list of impacted function,
! \&\s-1IPA\s0 optimizations can be partially enabled at two different levels.
  .Sp
  The \fIlevel\fR argument should be one of the following:
  .RS 4
! .IP "\fBinline-clone\fR" 4
  .IX Item "inline-clone"
  Only enable inlining and cloning optimizations, which includes inlining,
  cloning, interprocedural scalar replacement of aggregates and partial inlining.
! As a result, when patching a function, all its callers and its clones'
  callers are impacted, therefore need to be patched as well.
  .Sp
  \&\fB\-flive\-patching=inline\-clone\fR disables the following optimization flags:
--- 12986,13019 ----
  substitute definitions into all uses.
  .Sp
  Most targets enable this flag by default at \fB\-O2\fR and \fB\-Os\fR.
! .IP \fB\-flive\-patching=\fR\fIlevel\fR 4
  .IX Item "-flive-patching=level"
! Control GCC\*(Aqs optimizations to produce output suitable for live\-patching.
  .Sp
! If the compiler\*(Aqs optimization uses a function\*(Aqs body or information extracted
  from its body to optimize/change another function, the latter is called an
  impacted function of the former.  If a function is patched, its impacted
  functions should be patched too.
  .Sp
! The impacted functions are determined by the compiler\*(Aqs interprocedural
  optimizations.  For example, a caller is impacted when inlining a function
  into its caller,
  cloning a function and changing its caller to call this new clone,
! or extracting a function\*(Aqs pureness/constness information to optimize
  its direct or indirect callers, etc.
  .Sp
! Usually, the more IPA optimizations enabled, the larger the number of
  impacted functions for each function.  In order to control the number of
  impacted functions and more easily compute the list of impacted function,
! IPA optimizations can be partially enabled at two different levels.
  .Sp
  The \fIlevel\fR argument should be one of the following:
  .RS 4
! .IP \fBinline\-clone\fR 4
  .IX Item "inline-clone"
  Only enable inlining and cloning optimizations, which includes inlining,
  cloning, interprocedural scalar replacement of aggregates and partial inlining.
! As a result, when patching a function, all its callers and its clones\*(Aq
  callers are impacted, therefore need to be patched as well.
  .Sp
  \&\fB\-flive\-patching=inline\-clone\fR disables the following optimization flags:
*************** callers are impacted, therefore need to
*** 13089,13095 ****
  \&\-fipa\-bit\-cp  \-fipa\-vrp  \-fipa\-pure\-const
  \&\-fipa\-reference\-addressable
  \&\-fipa\-stack\-alignment \-fipa\-modref\fR
! .IP "\fBinline-only-static\fR" 4
  .IX Item "inline-only-static"
  Only enable inlining of static functions.
  As a result, when patching a static function, all its callers are impacted
--- 13022,13028 ----
  \&\-fipa\-bit\-cp  \-fipa\-vrp  \-fipa\-pure\-const
  \&\-fipa\-reference\-addressable
  \&\-fipa\-stack\-alignment \-fipa\-modref\fR
! .IP \fBinline\-only\-static\fR 4
  .IX Item "inline-only-static"
  Only enable inlining of static functions.
  As a result, when patching a static function, all its callers are impacted
*************** optimization flags:
*** 13104,13265 ****
  .RS 4
  .Sp
  When \fB\-flive\-patching\fR is specified without any value, the default value
! is \fIinline-clone\fR.
  .Sp
  This flag is disabled by default.
  .Sp
! Note that \fB\-flive\-patching\fR is not supported with link-time optimization
  (\fB\-flto\fR).
  .RE
! .IP "\fB\-fisolate\-erroneous\-paths\-dereference\fR" 4
  .IX Item "-fisolate-erroneous-paths-dereference"
  Detect paths that trigger erroneous or undefined behavior due to
  dereferencing a null pointer.  Isolate those paths from the main control
  flow and turn the statement with erroneous or undefined behavior into a trap.
  This flag is enabled by default at \fB\-O2\fR and higher and depends on
  \&\fB\-fdelete\-null\-pointer\-checks\fR also being enabled.
! .IP "\fB\-fisolate\-erroneous\-paths\-attribute\fR" 4
  .IX Item "-fisolate-erroneous-paths-attribute"
  Detect paths that trigger erroneous or undefined behavior due to a null value
  being used in a way forbidden by a \f(CW\*(C`returns_nonnull\*(C'\fR or \f(CW\*(C`nonnull\*(C'\fR
  attribute.  Isolate those paths from the main control flow and turn the
  statement with erroneous or undefined behavior into a trap.  This is not
  currently enabled, but may be enabled by \fB\-O2\fR in the future.
! .IP "\fB\-ftree\-sink\fR" 4
  .IX Item "-ftree-sink"
  Perform forward store motion on trees.  This flag is
  enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-ftree\-bit\-ccp\fR" 4
  .IX Item "-ftree-bit-ccp"
  Perform sparse conditional bit constant propagation on trees and propagate
  pointer alignment information.
  This pass only operates on local scalar variables and is enabled by default
  at \fB\-O1\fR and higher, except for \fB\-Og\fR.
  It requires that \fB\-ftree\-ccp\fR is enabled.
! .IP "\fB\-ftree\-ccp\fR" 4
  .IX Item "-ftree-ccp"
! Perform sparse conditional constant propagation (\s-1CCP\s0) on trees.  This
  pass only operates on local scalar variables and is enabled by default
  at \fB\-O1\fR and higher.
! .IP "\fB\-fssa\-backprop\fR" 4
  .IX Item "-fssa-backprop"
  Propagate information about uses of a value up the definition chain
  in order to simplify the definitions.  For example, this pass strips
  sign operations if the sign of a value never matters.  The flag is
  enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-fssa\-phiopt\fR" 4
  .IX Item "-fssa-phiopt"
! Perform pattern matching on \s-1SSA PHI\s0 nodes to optimize conditional
  code.  This pass is enabled by default at \fB\-O1\fR and higher,
  except for \fB\-Og\fR.
! .IP "\fB\-ftree\-switch\-conversion\fR" 4
  .IX Item "-ftree-switch-conversion"
  Perform conversion of simple initializations in a switch to
  initializations from a scalar array.  This flag is enabled by default
  at \fB\-O2\fR and higher.
! .IP "\fB\-ftree\-tail\-merge\fR" 4
  .IX Item "-ftree-tail-merge"
  Look for identical code sequences.  When found, replace one with a jump to the
  other.  This optimization is known as tail merging or cross jumping.  This flag
  is enabled by default at \fB\-O2\fR and higher.  The compilation time
  in this pass can
! be limited using \fBmax-tail-merge-comparisons\fR parameter and
! \&\fBmax-tail-merge-iterations\fR parameter.
! .IP "\fB\-ftree\-cselim\fR" 4
  .IX Item "-ftree-cselim"
  Perform conditional store elimination on trees.  This flag is enabled by
  default at \fB\-O1\fR and higher on targets that have conditional
  move instructions.
! .IP "\fB\-ftree\-dce\fR" 4
  .IX Item "-ftree-dce"
! Perform dead code elimination (\s-1DCE\s0) on trees.  This flag is enabled by
  default at \fB\-O1\fR and higher.
! .IP "\fB\-ftree\-builtin\-call\-dce\fR" 4
  .IX Item "-ftree-builtin-call-dce"
! Perform conditional dead code elimination (\s-1DCE\s0) for calls to built-in functions
  that may set \f(CW\*(C`errno\*(C'\fR but are otherwise free of side effects.  This flag is
  enabled by default at \fB\-O2\fR and higher if \fB\-Os\fR is not also
  specified.
! .IP "\fB\-ffinite\-loops\fR" 4
  .IX Item "-ffinite-loops"
  Assume that a loop with an exit will eventually take the exit and not loop
  indefinitely.  This allows the compiler to remove loops that otherwise have
! no side-effects, not considering eventual endless looping as such.
  .Sp
! This option is enabled by default at \fB\-O2\fR for \*(C+ with \-std=c++11
  or higher.
! .IP "\fB\-ftree\-dominator\-opts\fR" 4
  .IX Item "-ftree-dominator-opts"
  Perform a variety of simple scalar cleanups (constant/copy
  propagation, redundancy elimination, range propagation and expression
  simplification) based on a dominator tree traversal.  This also
  performs jump threading (to reduce jumps to jumps). This flag is
  enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-ftree\-dse\fR" 4
  .IX Item "-ftree-dse"
! Perform dead store elimination (\s-1DSE\s0) on trees.  A dead store is a store into
  a memory location that is later overwritten by another store without
  any intervening loads.  In this case the earlier store can be deleted.  This
  flag is enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-ftree\-ch\fR" 4
  .IX Item "-ftree-ch"
  Perform loop header copying on trees.  This is beneficial since it increases
  effectiveness of code motion optimizations.  It also saves one jump.  This flag
  is enabled by default at \fB\-O1\fR and higher.  It is not enabled
  for \fB\-Os\fR, since it usually increases code size.
! .IP "\fB\-ftree\-loop\-optimize\fR" 4
  .IX Item "-ftree-loop-optimize"
  Perform loop optimizations on trees.  This flag is enabled by default
  at \fB\-O1\fR and higher.
! .IP "\fB\-ftree\-loop\-linear\fR" 4
  .IX Item "-ftree-loop-linear"
  .PD 0
! .IP "\fB\-floop\-strip\-mine\fR" 4
  .IX Item "-floop-strip-mine"
! .IP "\fB\-floop\-block\fR" 4
  .IX Item "-floop-block"
  .PD
  Perform loop nest optimizations.  Same as
! \&\fB\-floop\-nest\-optimize\fR.  To use this code transformation, \s-1GCC\s0 has
  to be configured with \fB\-\-with\-isl\fR to enable the Graphite loop
  transformation infrastructure.
! .IP "\fB\-fgraphite\-identity\fR" 4
  .IX Item "-fgraphite-identity"
  Enable the identity transformation for graphite.  For every SCoP we generate
  the polyhedral representation and transform it back to gimple.  Using
  \&\fB\-fgraphite\-identity\fR we can check the costs or benefits of the
! \&\s-1GIMPLE\s0 \-> \s-1GRAPHITE\s0 \-> \s-1GIMPLE\s0 transformation.  Some minimal optimizations
  are also performed by the code generator isl, like index splitting and
  dead code elimination in loops.
! .IP "\fB\-floop\-nest\-optimize\fR" 4
  .IX Item "-floop-nest-optimize"
  Enable the isl based loop nest optimizer.  This is a generic loop nest
  optimizer based on the Pluto optimization algorithms.  It calculates a loop
! structure optimized for data-locality and parallelism.  This option
  is experimental.
! .IP "\fB\-floop\-parallelize\-all\fR" 4
  .IX Item "-floop-parallelize-all"
  Use the Graphite data dependence analysis to identify loops that can
  be parallelized.  Parallelize all the loops that can be analyzed to
  not contain loop carried dependences without checking that it is
  profitable to parallelize the loops.
! .IP "\fB\-ftree\-coalesce\-vars\fR" 4
  .IX Item "-ftree-coalesce-vars"
! While transforming the program out of the \s-1SSA\s0 representation, attempt to
! reduce copying by coalescing versions of different user-defined
  variables, instead of just compiler temporaries.  This may severely
  limit the ability to debug an optimized program compiled with
  \&\fB\-fno\-var\-tracking\-assignments\fR.  In the negated form, this flag
! prevents \s-1SSA\s0 coalescing of user variables.  This option is enabled by
  default if optimization is enabled, and it does very little otherwise.
! .IP "\fB\-ftree\-loop\-if\-convert\fR" 4
  .IX Item "-ftree-loop-if-convert"
  Attempt to transform conditional jumps in the innermost loops to
! branch-less equivalents.  The intent is to remove control-flow from
  the innermost loops in order to improve the ability of the
  vectorization pass to handle these loops.  This is enabled by default
  if vectorization is enabled.
! .IP "\fB\-ftree\-loop\-distribution\fR" 4
  .IX Item "-ftree-loop-distribution"
  Perform loop distribution.  This flag can improve cache performance on
  big loop bodies and allow further loop optimizations, like
--- 13037,13198 ----
  .RS 4
  .Sp
  When \fB\-flive\-patching\fR is specified without any value, the default value
! is \fIinline\-clone\fR.
  .Sp
  This flag is disabled by default.
  .Sp
! Note that \fB\-flive\-patching\fR is not supported with link\-time optimization
  (\fB\-flto\fR).
  .RE
! .IP \fB\-fisolate\-erroneous\-paths\-dereference\fR 4
  .IX Item "-fisolate-erroneous-paths-dereference"
  Detect paths that trigger erroneous or undefined behavior due to
  dereferencing a null pointer.  Isolate those paths from the main control
  flow and turn the statement with erroneous or undefined behavior into a trap.
  This flag is enabled by default at \fB\-O2\fR and higher and depends on
  \&\fB\-fdelete\-null\-pointer\-checks\fR also being enabled.
! .IP \fB\-fisolate\-erroneous\-paths\-attribute\fR 4
  .IX Item "-fisolate-erroneous-paths-attribute"
  Detect paths that trigger erroneous or undefined behavior due to a null value
  being used in a way forbidden by a \f(CW\*(C`returns_nonnull\*(C'\fR or \f(CW\*(C`nonnull\*(C'\fR
  attribute.  Isolate those paths from the main control flow and turn the
  statement with erroneous or undefined behavior into a trap.  This is not
  currently enabled, but may be enabled by \fB\-O2\fR in the future.
! .IP \fB\-ftree\-sink\fR 4
  .IX Item "-ftree-sink"
  Perform forward store motion on trees.  This flag is
  enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-ftree\-bit\-ccp\fR 4
  .IX Item "-ftree-bit-ccp"
  Perform sparse conditional bit constant propagation on trees and propagate
  pointer alignment information.
  This pass only operates on local scalar variables and is enabled by default
  at \fB\-O1\fR and higher, except for \fB\-Og\fR.
  It requires that \fB\-ftree\-ccp\fR is enabled.
! .IP \fB\-ftree\-ccp\fR 4
  .IX Item "-ftree-ccp"
! Perform sparse conditional constant propagation (CCP) on trees.  This
  pass only operates on local scalar variables and is enabled by default
  at \fB\-O1\fR and higher.
! .IP \fB\-fssa\-backprop\fR 4
  .IX Item "-fssa-backprop"
  Propagate information about uses of a value up the definition chain
  in order to simplify the definitions.  For example, this pass strips
  sign operations if the sign of a value never matters.  The flag is
  enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-fssa\-phiopt\fR 4
  .IX Item "-fssa-phiopt"
! Perform pattern matching on SSA PHI nodes to optimize conditional
  code.  This pass is enabled by default at \fB\-O1\fR and higher,
  except for \fB\-Og\fR.
! .IP \fB\-ftree\-switch\-conversion\fR 4
  .IX Item "-ftree-switch-conversion"
  Perform conversion of simple initializations in a switch to
  initializations from a scalar array.  This flag is enabled by default
  at \fB\-O2\fR and higher.
! .IP \fB\-ftree\-tail\-merge\fR 4
  .IX Item "-ftree-tail-merge"
  Look for identical code sequences.  When found, replace one with a jump to the
  other.  This optimization is known as tail merging or cross jumping.  This flag
  is enabled by default at \fB\-O2\fR and higher.  The compilation time
  in this pass can
! be limited using \fBmax\-tail\-merge\-comparisons\fR parameter and
! \&\fBmax\-tail\-merge\-iterations\fR parameter.
! .IP \fB\-ftree\-cselim\fR 4
  .IX Item "-ftree-cselim"
  Perform conditional store elimination on trees.  This flag is enabled by
  default at \fB\-O1\fR and higher on targets that have conditional
  move instructions.
! .IP \fB\-ftree\-dce\fR 4
  .IX Item "-ftree-dce"
! Perform dead code elimination (DCE) on trees.  This flag is enabled by
  default at \fB\-O1\fR and higher.
! .IP \fB\-ftree\-builtin\-call\-dce\fR 4
  .IX Item "-ftree-builtin-call-dce"
! Perform conditional dead code elimination (DCE) for calls to built\-in functions
  that may set \f(CW\*(C`errno\*(C'\fR but are otherwise free of side effects.  This flag is
  enabled by default at \fB\-O2\fR and higher if \fB\-Os\fR is not also
  specified.
! .IP \fB\-ffinite\-loops\fR 4
  .IX Item "-ffinite-loops"
  Assume that a loop with an exit will eventually take the exit and not loop
  indefinitely.  This allows the compiler to remove loops that otherwise have
! no side\-effects, not considering eventual endless looping as such.
  .Sp
! This option is enabled by default at \fB\-O2\fR for C++ with \-std=c++11
  or higher.
! .IP \fB\-ftree\-dominator\-opts\fR 4
  .IX Item "-ftree-dominator-opts"
  Perform a variety of simple scalar cleanups (constant/copy
  propagation, redundancy elimination, range propagation and expression
  simplification) based on a dominator tree traversal.  This also
  performs jump threading (to reduce jumps to jumps). This flag is
  enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-ftree\-dse\fR 4
  .IX Item "-ftree-dse"
! Perform dead store elimination (DSE) on trees.  A dead store is a store into
  a memory location that is later overwritten by another store without
  any intervening loads.  In this case the earlier store can be deleted.  This
  flag is enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-ftree\-ch\fR 4
  .IX Item "-ftree-ch"
  Perform loop header copying on trees.  This is beneficial since it increases
  effectiveness of code motion optimizations.  It also saves one jump.  This flag
  is enabled by default at \fB\-O1\fR and higher.  It is not enabled
  for \fB\-Os\fR, since it usually increases code size.
! .IP \fB\-ftree\-loop\-optimize\fR 4
  .IX Item "-ftree-loop-optimize"
  Perform loop optimizations on trees.  This flag is enabled by default
  at \fB\-O1\fR and higher.
! .IP \fB\-ftree\-loop\-linear\fR 4
  .IX Item "-ftree-loop-linear"
  .PD 0
! .IP \fB\-floop\-strip\-mine\fR 4
  .IX Item "-floop-strip-mine"
! .IP \fB\-floop\-block\fR 4
  .IX Item "-floop-block"
  .PD
  Perform loop nest optimizations.  Same as
! \&\fB\-floop\-nest\-optimize\fR.  To use this code transformation, GCC has
  to be configured with \fB\-\-with\-isl\fR to enable the Graphite loop
  transformation infrastructure.
! .IP \fB\-fgraphite\-identity\fR 4
  .IX Item "-fgraphite-identity"
  Enable the identity transformation for graphite.  For every SCoP we generate
  the polyhedral representation and transform it back to gimple.  Using
  \&\fB\-fgraphite\-identity\fR we can check the costs or benefits of the
! GIMPLE \-> GRAPHITE \-> GIMPLE transformation.  Some minimal optimizations
  are also performed by the code generator isl, like index splitting and
  dead code elimination in loops.
! .IP \fB\-floop\-nest\-optimize\fR 4
  .IX Item "-floop-nest-optimize"
  Enable the isl based loop nest optimizer.  This is a generic loop nest
  optimizer based on the Pluto optimization algorithms.  It calculates a loop
! structure optimized for data\-locality and parallelism.  This option
  is experimental.
! .IP \fB\-floop\-parallelize\-all\fR 4
  .IX Item "-floop-parallelize-all"
  Use the Graphite data dependence analysis to identify loops that can
  be parallelized.  Parallelize all the loops that can be analyzed to
  not contain loop carried dependences without checking that it is
  profitable to parallelize the loops.
! .IP \fB\-ftree\-coalesce\-vars\fR 4
  .IX Item "-ftree-coalesce-vars"
! While transforming the program out of the SSA representation, attempt to
! reduce copying by coalescing versions of different user\-defined
  variables, instead of just compiler temporaries.  This may severely
  limit the ability to debug an optimized program compiled with
  \&\fB\-fno\-var\-tracking\-assignments\fR.  In the negated form, this flag
! prevents SSA coalescing of user variables.  This option is enabled by
  default if optimization is enabled, and it does very little otherwise.
! .IP \fB\-ftree\-loop\-if\-convert\fR 4
  .IX Item "-ftree-loop-if-convert"
  Attempt to transform conditional jumps in the innermost loops to
! branch\-less equivalents.  The intent is to remove control\-flow from
  the innermost loops in order to improve the ability of the
  vectorization pass to handle these loops.  This is enabled by default
  if vectorization is enabled.
! .IP \fB\-ftree\-loop\-distribution\fR 4
  .IX Item "-ftree-loop-distribution"
  Perform loop distribution.  This flag can improve cache performance on
  big loop bodies and allow further loop optimizations, like
*************** is transformed to
*** 13285,13291 ****
  .Sp
  This flag is enabled by default at \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-ftree\-loop\-distribute\-patterns\fR" 4
  .IX Item "-ftree-loop-distribute-patterns"
  Perform loop distribution of patterns that can be code generated with
  calls to a library.  This flag is enabled by default at \fB\-O2\fR and
--- 13218,13224 ----
  .Sp
  This flag is enabled by default at \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-ftree\-loop\-distribute\-patterns\fR 4
  .IX Item "-ftree-loop-distribute-patterns"
  Perform loop distribution of patterns that can be code generated with
  calls to a library.  This flag is enabled by default at \fB\-O2\fR and
*************** is transformed to
*** 13313,13319 ****
  .Ve
  .Sp
  and the initialization loop is transformed into a call to memset zero.
! .IP "\fB\-floop\-interchange\fR" 4
  .IX Item "-floop-interchange"
  Perform loop interchange outside of graphite.  This flag can improve cache
  performance on loop nest and allow further loop optimizations, like
--- 13246,13252 ----
  .Ve
  .Sp
  and the initialization loop is transformed into a call to memset zero.
! .IP \fB\-floop\-interchange\fR 4
  .IX Item "-floop-interchange"
  Perform loop interchange outside of graphite.  This flag can improve cache
  performance on loop nest and allow further loop optimizations, like
*************** is transformed to
*** 13337,13363 ****
  .Sp
  This flag is enabled by default at \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-floop\-unroll\-and\-jam\fR" 4
  .IX Item "-floop-unroll-and-jam"
  Apply unroll and jam transformations on feasible loops.  In a loop
  nest this unrolls the outer loop by some factor and fuses the resulting
  multiple inner loops.  This flag is enabled by default at \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-ftree\-loop\-im\fR" 4
  .IX Item "-ftree-loop-im"
  Perform loop invariant motion on trees.  This pass moves only invariants that
! are hard to handle at \s-1RTL\s0 level (function calls, operations that expand to
  nontrivial sequences of insns).  With \fB\-funswitch\-loops\fR it also moves
  operands of conditions that are invariant out of the loop, so that we can use
  just trivial invariantness analysis in loop unswitching.  The pass also includes
  store motion.
! .IP "\fB\-ftree\-loop\-ivcanon\fR" 4
  .IX Item "-ftree-loop-ivcanon"
  Create a canonical counter for number of iterations in loops for which
  determining number of iterations requires complicated analysis.  Later
  optimizations then may determine the number easily.  Useful especially
  in connection with unrolling.
! .IP "\fB\-ftree\-scev\-cprop\fR" 4
  .IX Item "-ftree-scev-cprop"
  Perform final value replacement.  If a variable is modified in a loop
  in such a way that its value when exiting the loop can be determined using
--- 13270,13296 ----
  .Sp
  This flag is enabled by default at \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-floop\-unroll\-and\-jam\fR 4
  .IX Item "-floop-unroll-and-jam"
  Apply unroll and jam transformations on feasible loops.  In a loop
  nest this unrolls the outer loop by some factor and fuses the resulting
  multiple inner loops.  This flag is enabled by default at \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-ftree\-loop\-im\fR 4
  .IX Item "-ftree-loop-im"
  Perform loop invariant motion on trees.  This pass moves only invariants that
! are hard to handle at RTL level (function calls, operations that expand to
  nontrivial sequences of insns).  With \fB\-funswitch\-loops\fR it also moves
  operands of conditions that are invariant out of the loop, so that we can use
  just trivial invariantness analysis in loop unswitching.  The pass also includes
  store motion.
! .IP \fB\-ftree\-loop\-ivcanon\fR 4
  .IX Item "-ftree-loop-ivcanon"
  Create a canonical counter for number of iterations in loops for which
  determining number of iterations requires complicated analysis.  Later
  optimizations then may determine the number easily.  Useful especially
  in connection with unrolling.
! .IP \fB\-ftree\-scev\-cprop\fR 4
  .IX Item "-ftree-scev-cprop"
  Perform final value replacement.  If a variable is modified in a loop
  in such a way that its value when exiting the loop can be determined using
*************** only its initial value and the number of
*** 13365,13438 ****
  the final value by such a computation, provided it is sufficiently cheap.
  This reduces data dependencies and may allow further simplifications.
  Enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-fivopts\fR" 4
  .IX Item "-fivopts"
  Perform induction variable optimizations (strength reduction, induction
  variable merging and induction variable elimination) on trees.
  Enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-ftree\-parallelize\-loops=n\fR" 4
  .IX Item "-ftree-parallelize-loops=n"
  Parallelize loops, i.e., split their iteration space to run in n threads.
  This is only possible for loops whose iterations are independent
  and can be arbitrarily reordered.  The optimization is only
! profitable on multiprocessor machines, for loops that are CPU-intensive,
  rather than constrained e.g. by memory bandwidth.  This option
  implies \fB\-pthread\fR, and thus is only supported on targets
  that have support for \fB\-pthread\fR.
! .IP "\fB\-ftree\-pta\fR" 4
  .IX Item "-ftree-pta"
! Perform function-local points-to analysis on trees.  This flag is
  enabled by default at \fB\-O1\fR and higher, except for \fB\-Og\fR.
! .IP "\fB\-ftree\-sra\fR" 4
  .IX Item "-ftree-sra"
  Perform scalar replacement of aggregates.  This pass replaces structure
  references with scalars to prevent committing structures to memory too
  early.  This flag is enabled by default at \fB\-O1\fR and higher,
  except for \fB\-Og\fR.
! .IP "\fB\-fstore\-merging\fR" 4
  .IX Item "-fstore-merging"
  Perform merging of narrow stores to consecutive memory addresses.  This pass
  merges contiguous stores of immediate values narrower than a word into fewer
  wider stores to reduce the number of instructions.  This is enabled by default
  at \fB\-O2\fR and higher as well as \fB\-Os\fR.
! .IP "\fB\-ftree\-ter\fR" 4
  .IX Item "-ftree-ter"
! Perform temporary expression replacement during the \s-1SSA\-\s0>normal phase.  Single
  use/single def temporaries are replaced at their use location with their
! defining expression.  This results in non-GIMPLE code, but gives the expanders
! much more complex trees to work on resulting in better \s-1RTL\s0 generation.  This is
  enabled by default at \fB\-O1\fR and higher.
! .IP "\fB\-ftree\-slsr\fR" 4
  .IX Item "-ftree-slsr"
! Perform straight-line strength reduction on trees.  This recognizes related
  expressions involving multiplications and replaces them by less expensive
  calculations when possible.  This is enabled by default at \fB\-O1\fR and
  higher.
! .IP "\fB\-ftree\-vectorize\fR" 4
  .IX Item "-ftree-vectorize"
  Perform vectorization on trees. This flag enables \fB\-ftree\-loop\-vectorize\fR
  and \fB\-ftree\-slp\-vectorize\fR if not explicitly specified.
! .IP "\fB\-ftree\-loop\-vectorize\fR" 4
  .IX Item "-ftree-loop-vectorize"
  Perform loop vectorization on trees. This flag is enabled by default at
  \&\fB\-O2\fR and by \fB\-ftree\-vectorize\fR, \fB\-fprofile\-use\fR,
  and \fB\-fauto\-profile\fR.
! .IP "\fB\-ftree\-slp\-vectorize\fR" 4
  .IX Item "-ftree-slp-vectorize"
  Perform basic block vectorization on trees. This flag is enabled by default at
  \&\fB\-O2\fR and by \fB\-ftree\-vectorize\fR, \fB\-fprofile\-use\fR,
  and \fB\-fauto\-profile\fR.
! .IP "\fB\-ftrivial\-auto\-var\-init=\fR\fIchoice\fR" 4
  .IX Item "-ftrivial-auto-var-init=choice"
  Initialize automatic variables with either a pattern or with zeroes to increase
  the security and predictability of a program by preventing uninitialized memory
  disclosure and use.
! \&\s-1GCC\s0 still considers an automatic variable that doesn't have an explicit
  initializer as uninitialized, \fB\-Wuninitialized\fR and
  \&\fB\-Wanalyzer\-use\-of\-uninitialized\-value\fR will still report
  warning messages on such automatic variables and the compiler will
  perform optimization as if the variable were uninitialized.
! With this option, \s-1GCC\s0 will also initialize any padding of automatic variables
  that have structure or union types to zeroes.
  However, the current implementation cannot initialize automatic variables that
  are declared between the controlling expression and the first case of a
--- 13298,13371 ----
  the final value by such a computation, provided it is sufficiently cheap.
  This reduces data dependencies and may allow further simplifications.
  Enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-fivopts\fR 4
  .IX Item "-fivopts"
  Perform induction variable optimizations (strength reduction, induction
  variable merging and induction variable elimination) on trees.
  Enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-ftree\-parallelize\-loops=n\fR 4
  .IX Item "-ftree-parallelize-loops=n"
  Parallelize loops, i.e., split their iteration space to run in n threads.
  This is only possible for loops whose iterations are independent
  and can be arbitrarily reordered.  The optimization is only
! profitable on multiprocessor machines, for loops that are CPU\-intensive,
  rather than constrained e.g. by memory bandwidth.  This option
  implies \fB\-pthread\fR, and thus is only supported on targets
  that have support for \fB\-pthread\fR.
! .IP \fB\-ftree\-pta\fR 4
  .IX Item "-ftree-pta"
! Perform function\-local points\-to analysis on trees.  This flag is
  enabled by default at \fB\-O1\fR and higher, except for \fB\-Og\fR.
! .IP \fB\-ftree\-sra\fR 4
  .IX Item "-ftree-sra"
  Perform scalar replacement of aggregates.  This pass replaces structure
  references with scalars to prevent committing structures to memory too
  early.  This flag is enabled by default at \fB\-O1\fR and higher,
  except for \fB\-Og\fR.
! .IP \fB\-fstore\-merging\fR 4
  .IX Item "-fstore-merging"
  Perform merging of narrow stores to consecutive memory addresses.  This pass
  merges contiguous stores of immediate values narrower than a word into fewer
  wider stores to reduce the number of instructions.  This is enabled by default
  at \fB\-O2\fR and higher as well as \fB\-Os\fR.
! .IP \fB\-ftree\-ter\fR 4
  .IX Item "-ftree-ter"
! Perform temporary expression replacement during the SSA\->normal phase.  Single
  use/single def temporaries are replaced at their use location with their
! defining expression.  This results in non\-GIMPLE code, but gives the expanders
! much more complex trees to work on resulting in better RTL generation.  This is
  enabled by default at \fB\-O1\fR and higher.
! .IP \fB\-ftree\-slsr\fR 4
  .IX Item "-ftree-slsr"
! Perform straight\-line strength reduction on trees.  This recognizes related
  expressions involving multiplications and replaces them by less expensive
  calculations when possible.  This is enabled by default at \fB\-O1\fR and
  higher.
! .IP \fB\-ftree\-vectorize\fR 4
  .IX Item "-ftree-vectorize"
  Perform vectorization on trees. This flag enables \fB\-ftree\-loop\-vectorize\fR
  and \fB\-ftree\-slp\-vectorize\fR if not explicitly specified.
! .IP \fB\-ftree\-loop\-vectorize\fR 4
  .IX Item "-ftree-loop-vectorize"
  Perform loop vectorization on trees. This flag is enabled by default at
  \&\fB\-O2\fR and by \fB\-ftree\-vectorize\fR, \fB\-fprofile\-use\fR,
  and \fB\-fauto\-profile\fR.
! .IP \fB\-ftree\-slp\-vectorize\fR 4
  .IX Item "-ftree-slp-vectorize"
  Perform basic block vectorization on trees. This flag is enabled by default at
  \&\fB\-O2\fR and by \fB\-ftree\-vectorize\fR, \fB\-fprofile\-use\fR,
  and \fB\-fauto\-profile\fR.
! .IP \fB\-ftrivial\-auto\-var\-init=\fR\fIchoice\fR 4
  .IX Item "-ftrivial-auto-var-init=choice"
  Initialize automatic variables with either a pattern or with zeroes to increase
  the security and predictability of a program by preventing uninitialized memory
  disclosure and use.
! GCC still considers an automatic variable that doesn\*(Aqt have an explicit
  initializer as uninitialized, \fB\-Wuninitialized\fR and
  \&\fB\-Wanalyzer\-use\-of\-uninitialized\-value\fR will still report
  warning messages on such automatic variables and the compiler will
  perform optimization as if the variable were uninitialized.
! With this option, GCC will also initialize any padding of automatic variables
  that have structure or union types to zeroes.
  However, the current implementation cannot initialize automatic variables that
  are declared between the controlling expression and the first case of a
*************** such cases.
*** 13441,13457 ****
  .Sp
  The three values of \fIchoice\fR are:
  .RS 4
! .IP "*" 4
! \&\fBuninitialized\fR doesn't initialize any automatic variables.
! This is C and \*(C+'s default.
! .IP "*" 4
  \&\fBpattern\fR Initialize automatic variables with values which will likely
  transform logic bugs into crashes down the line, are easily recognized in a
  crash dump and without being values that programmers can rely on for useful
  program semantics.
! The current value is byte-repeatable pattern with byte \*(L"0xFE\*(R".
  The values used for pattern initialization might be changed in the future.
! .IP "*" 4
  \&\fBzero\fR Initialize automatic variables with zeroes.
  .RE
  .RS 4
--- 13374,13390 ----
  .Sp
  The three values of \fIchoice\fR are:
  .RS 4
! .IP * 4
! \&\fBuninitialized\fR doesn\*(Aqt initialize any automatic variables.
! This is C and C++\*(Aqs default.
! .IP * 4
  \&\fBpattern\fR Initialize automatic variables with values which will likely
  transform logic bugs into crashes down the line, are easily recognized in a
  crash dump and without being values that programmers can rely on for useful
  program semantics.
! The current value is byte\-repeatable pattern with byte "0xFE".
  The values used for pattern initialization might be changed in the future.
! .IP * 4
  \&\fBzero\fR Initialize automatic variables with zeroes.
  .RE
  .RS 4
*************** uses say \f(CW\*(C`0X5A\*(C'\fR and \f(C
*** 13472,13513 ****
  respectively, will trap with either \fBchoice\fR of trivial
  initializer, i.e., \fBzero\fR initialization will not convert to the
  representation for \f(CW\*(C`false\*(C'\fR, even if it would for a \f(CW\*(C`static\*(C'\fR
! variable of the same type.  This means the initializer pattern doesn't
  generally depend on the type of the initialized variable.  One notable
! exception is that (non-hardened) boolean variables that fit in registers
  are initialized with \f(CW\*(C`false\*(C'\fR (zero), even when \fBpattern\fR is
  requested.
  .Sp
  You can control this behavior for a specific variable by using the variable
  attribute \f(CW\*(C`uninitialized\*(C'\fR.
  .RE
! .IP "\fB\-fvect\-cost\-model=\fR\fImodel\fR" 4
  .IX Item "-fvect-cost-model=model"
  Alter the cost model used for vectorization.  The \fImodel\fR argument
  should be one of \fBunlimited\fR, \fBdynamic\fR, \fBcheap\fR or
! \&\fBvery-cheap\fR.
! With the \fBunlimited\fR model the vectorized code-path is assumed
  to be profitable while with the \fBdynamic\fR model a runtime check
! guards the vectorized code-path to enable it only for iteration
  counts that will likely execute faster than when executing the original
  scalar loop.  The \fBcheap\fR model disables vectorization of
  loops where doing so would be cost prohibitive for example due to
  required runtime checks for data dependence or alignment but otherwise
! is equal to the \fBdynamic\fR model.  The \fBvery-cheap\fR model disables
  vectorization of loops when any runtime check for data dependence or alignment
  is required, it also disables vectorization of epilogue loops but otherwise is
  equal to the \fBcheap\fR model.
  .Sp
  The default cost model depends on other optimization flags and is
  either \fBdynamic\fR or \fBcheap\fR.
! .IP "\fB\-fsimd\-cost\-model=\fR\fImodel\fR" 4
  .IX Item "-fsimd-cost-model=model"
  Alter the cost model used for vectorization of loops marked with the OpenMP
  simd directive.  The \fImodel\fR argument should be one of
  \&\fBunlimited\fR, \fBdynamic\fR, \fBcheap\fR.  All values of \fImodel\fR
  have the same meaning as described in \fB\-fvect\-cost\-model\fR and by
  default a cost model defined with \fB\-fvect\-cost\-model\fR is used.
! .IP "\fB\-ftree\-vrp\fR" 4
  .IX Item "-ftree-vrp"
  Perform Value Range Propagation on trees.  This is similar to the
  constant propagation pass, but instead of values, ranges of values are
--- 13405,13446 ----
  respectively, will trap with either \fBchoice\fR of trivial
  initializer, i.e., \fBzero\fR initialization will not convert to the
  representation for \f(CW\*(C`false\*(C'\fR, even if it would for a \f(CW\*(C`static\*(C'\fR
! variable of the same type.  This means the initializer pattern doesn\*(Aqt
  generally depend on the type of the initialized variable.  One notable
! exception is that (non\-hardened) boolean variables that fit in registers
  are initialized with \f(CW\*(C`false\*(C'\fR (zero), even when \fBpattern\fR is
  requested.
  .Sp
  You can control this behavior for a specific variable by using the variable
  attribute \f(CW\*(C`uninitialized\*(C'\fR.
  .RE
! .IP \fB\-fvect\-cost\-model=\fR\fImodel\fR 4
  .IX Item "-fvect-cost-model=model"
  Alter the cost model used for vectorization.  The \fImodel\fR argument
  should be one of \fBunlimited\fR, \fBdynamic\fR, \fBcheap\fR or
! \&\fBvery\-cheap\fR.
! With the \fBunlimited\fR model the vectorized code\-path is assumed
  to be profitable while with the \fBdynamic\fR model a runtime check
! guards the vectorized code\-path to enable it only for iteration
  counts that will likely execute faster than when executing the original
  scalar loop.  The \fBcheap\fR model disables vectorization of
  loops where doing so would be cost prohibitive for example due to
  required runtime checks for data dependence or alignment but otherwise
! is equal to the \fBdynamic\fR model.  The \fBvery\-cheap\fR model disables
  vectorization of loops when any runtime check for data dependence or alignment
  is required, it also disables vectorization of epilogue loops but otherwise is
  equal to the \fBcheap\fR model.
  .Sp
  The default cost model depends on other optimization flags and is
  either \fBdynamic\fR or \fBcheap\fR.
! .IP \fB\-fsimd\-cost\-model=\fR\fImodel\fR 4
  .IX Item "-fsimd-cost-model=model"
  Alter the cost model used for vectorization of loops marked with the OpenMP
  simd directive.  The \fImodel\fR argument should be one of
  \&\fBunlimited\fR, \fBdynamic\fR, \fBcheap\fR.  All values of \fImodel\fR
  have the same meaning as described in \fB\-fvect\-cost\-model\fR and by
  default a cost model defined with \fB\-fvect\-cost\-model\fR is used.
! .IP \fB\-ftree\-vrp\fR 4
  .IX Item "-ftree-vrp"
  Perform Value Range Propagation on trees.  This is similar to the
  constant propagation pass, but instead of values, ranges of values are
*************** checks like array bound checks and null
*** 13516,13553 ****
  enabled by default at \fB\-O2\fR and higher.  Null pointer check
  elimination is only done if \fB\-fdelete\-null\-pointer\-checks\fR is
  enabled.
! .IP "\fB\-fsplit\-paths\fR" 4
  .IX Item "-fsplit-paths"
  Split paths leading to loop backedges.  This can improve dead code
  elimination and common subexpression elimination.  This is enabled by
  default at \fB\-O3\fR and above.
! .IP "\fB\-fsplit\-ivs\-in\-unroller\fR" 4
  .IX Item "-fsplit-ivs-in-unroller"
  Enables expression of values of induction variables in later iterations
  of the unrolled loop using the value in the first iteration.  This breaks
  long dependency chains, thus improving efficiency of the scheduling passes.
  .Sp
! A combination of \fB\-fweb\fR and \s-1CSE\s0 is often sufficient to obtain the
  same effect.  However, that is not reliable in cases where the loop body
  is more complicated than a single basic block.  It also does not work at all
! on some architectures due to restrictions in the \s-1CSE\s0 pass.
  .Sp
  This optimization is enabled by default.
! .IP "\fB\-fvariable\-expansion\-in\-unroller\fR" 4
  .IX Item "-fvariable-expansion-in-unroller"
  With this option, the compiler creates multiple copies of some
  local variables when unrolling a loop, which can result in superior code.
  .Sp
  This optimization is enabled by default for PowerPC targets, but disabled
  by default otherwise.
! .IP "\fB\-fpartial\-inlining\fR" 4
  .IX Item "-fpartial-inlining"
  Inline parts of functions.  This option has any effect only
  when inlining itself is turned on by the \fB\-finline\-functions\fR
  or \fB\-finline\-small\-functions\fR options.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fpredictive\-commoning\fR" 4
  .IX Item "-fpredictive-commoning"
  Perform predictive commoning optimization, i.e., reusing computations
  (especially memory loads and stores) performed in previous
--- 13449,13486 ----
  enabled by default at \fB\-O2\fR and higher.  Null pointer check
  elimination is only done if \fB\-fdelete\-null\-pointer\-checks\fR is
  enabled.
! .IP \fB\-fsplit\-paths\fR 4
  .IX Item "-fsplit-paths"
  Split paths leading to loop backedges.  This can improve dead code
  elimination and common subexpression elimination.  This is enabled by
  default at \fB\-O3\fR and above.
! .IP \fB\-fsplit\-ivs\-in\-unroller\fR 4
  .IX Item "-fsplit-ivs-in-unroller"
  Enables expression of values of induction variables in later iterations
  of the unrolled loop using the value in the first iteration.  This breaks
  long dependency chains, thus improving efficiency of the scheduling passes.
  .Sp
! A combination of \fB\-fweb\fR and CSE is often sufficient to obtain the
  same effect.  However, that is not reliable in cases where the loop body
  is more complicated than a single basic block.  It also does not work at all
! on some architectures due to restrictions in the CSE pass.
  .Sp
  This optimization is enabled by default.
! .IP \fB\-fvariable\-expansion\-in\-unroller\fR 4
  .IX Item "-fvariable-expansion-in-unroller"
  With this option, the compiler creates multiple copies of some
  local variables when unrolling a loop, which can result in superior code.
  .Sp
  This optimization is enabled by default for PowerPC targets, but disabled
  by default otherwise.
! .IP \fB\-fpartial\-inlining\fR 4
  .IX Item "-fpartial-inlining"
  Inline parts of functions.  This option has any effect only
  when inlining itself is turned on by the \fB\-finline\-functions\fR
  or \fB\-finline\-small\-functions\fR options.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fpredictive\-commoning\fR 4
  .IX Item "-fpredictive-commoning"
  Perform predictive commoning optimization, i.e., reusing computations
  (especially memory loads and stores) performed in previous
*************** iterations of loops.
*** 13555,13561 ****
  .Sp
  This option is enabled at level \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-fprefetch\-loop\-arrays\fR" 4
  .IX Item "-fprefetch-loop-arrays"
  If supported by the target machine, generate instructions to prefetch
  memory to improve the performance of loops that access large arrays.
--- 13488,13494 ----
  .Sp
  This option is enabled at level \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-fprefetch\-loop\-arrays\fR 4
  .IX Item "-fprefetch-loop-arrays"
  If supported by the target machine, generate instructions to prefetch
  memory to improve the performance of loops that access large arrays.
*************** This option may generate better or worse
*** 13564,13575 ****
  dependent on the structure of loops within the source code.
  .Sp
  Disabled at level \fB\-Os\fR.
! .IP "\fB\-fno\-printf\-return\-value\fR" 4
  .IX Item "-fno-printf-return-value"
  Do not substitute constants for known return value of formatted output
  functions such as \f(CW\*(C`sprintf\*(C'\fR, \f(CW\*(C`snprintf\*(C'\fR, \f(CW\*(C`vsprintf\*(C'\fR, and
  \&\f(CW\*(C`vsnprintf\*(C'\fR (but not \f(CW\*(C`printf\*(C'\fR of \f(CW\*(C`fprintf\*(C'\fR).  This
! transformation allows \s-1GCC\s0 to optimize or even eliminate branches based
  on the known return value of these functions called with arguments that
  are either constant, or whose values are known to be in a range that
  makes determining the exact return value possible.  For example, when
--- 13497,13508 ----
  dependent on the structure of loops within the source code.
  .Sp
  Disabled at level \fB\-Os\fR.
! .IP \fB\-fno\-printf\-return\-value\fR 4
  .IX Item "-fno-printf-return-value"
  Do not substitute constants for known return value of formatted output
  functions such as \f(CW\*(C`sprintf\*(C'\fR, \f(CW\*(C`snprintf\*(C'\fR, \f(CW\*(C`vsprintf\*(C'\fR, and
  \&\f(CW\*(C`vsnprintf\*(C'\fR (but not \f(CW\*(C`printf\*(C'\fR of \f(CW\*(C`fprintf\*(C'\fR).  This
! transformation allows GCC to optimize or even eliminate branches based
  on the known return value of these functions called with arguments that
  are either constant, or whose values are known to be in a range that
  makes determining the exact return value possible.  For example, when
*************** The \fB\-fprintf\-return\-value\fR optio
*** 13588,13611 ****
  and yields best results with \fB\-O2\fR and above.  It works in tandem
  with the \fB\-Wformat\-overflow\fR and \fB\-Wformat\-truncation\fR
  options.  The \fB\-fprintf\-return\-value\fR option is enabled by default.
! .IP "\fB\-fno\-peephole\fR" 4
  .IX Item "-fno-peephole"
  .PD 0
! .IP "\fB\-fno\-peephole2\fR" 4
  .IX Item "-fno-peephole2"
  .PD
! Disable any machine-specific peephole optimizations.  The difference
  between \fB\-fno\-peephole\fR and \fB\-fno\-peephole2\fR is in how they
  are implemented in the compiler; some targets use one, some use the
  other, a few use both.
  .Sp
  \&\fB\-fpeephole\fR is enabled by default.
  \&\fB\-fpeephole2\fR enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fno\-guess\-branch\-probability\fR" 4
  .IX Item "-fno-guess-branch-probability"
  Do not guess branch probabilities using heuristics.
  .Sp
! \&\s-1GCC\s0 uses heuristics to guess branch probabilities if they are
  not provided by profiling feedback (\fB\-fprofile\-arcs\fR).  These
  heuristics are based on the control flow graph.  If some branch probabilities
  are specified by \f(CW\*(C`_\|_builtin_expect\*(C'\fR, then the heuristics are
--- 13521,13544 ----
  and yields best results with \fB\-O2\fR and above.  It works in tandem
  with the \fB\-Wformat\-overflow\fR and \fB\-Wformat\-truncation\fR
  options.  The \fB\-fprintf\-return\-value\fR option is enabled by default.
! .IP \fB\-fno\-peephole\fR 4
  .IX Item "-fno-peephole"
  .PD 0
! .IP \fB\-fno\-peephole2\fR 4
  .IX Item "-fno-peephole2"
  .PD
! Disable any machine\-specific peephole optimizations.  The difference
  between \fB\-fno\-peephole\fR and \fB\-fno\-peephole2\fR is in how they
  are implemented in the compiler; some targets use one, some use the
  other, a few use both.
  .Sp
  \&\fB\-fpeephole\fR is enabled by default.
  \&\fB\-fpeephole2\fR enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fno\-guess\-branch\-probability\fR 4
  .IX Item "-fno-guess-branch-probability"
  Do not guess branch probabilities using heuristics.
  .Sp
! GCC uses heuristics to guess branch probabilities if they are
  not provided by profiling feedback (\fB\-fprofile\-arcs\fR).  These
  heuristics are based on the control flow graph.  If some branch probabilities
  are specified by \f(CW\*(C`_\|_builtin_expect\*(C'\fR, then the heuristics are
*************** some cases, it may be useful to disable
*** 13616,13643 ****
  of \f(CW\*(C`_\|_builtin_expect\*(C'\fR are easier to understand.
  .Sp
  It is also possible to specify expected probability of the expression
! with \f(CW\*(C`_\|_builtin_expect_with_probability\*(C'\fR built-in function.
  .Sp
  The default is \fB\-fguess\-branch\-probability\fR at levels
  \&\fB\-O\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-freorder\-blocks\fR" 4
  .IX Item "-freorder-blocks"
  Reorder basic blocks in the compiled function in order to reduce number of
  taken branches and improve code locality.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-freorder\-blocks\-algorithm=\fR\fIalgorithm\fR" 4
  .IX Item "-freorder-blocks-algorithm=algorithm"
  Use the specified algorithm for basic block reordering.  The
  \&\fIalgorithm\fR argument can be \fBsimple\fR, which does not increase
  code size (except sometimes due to secondary effects like alignment),
! or \fBstc\fR, the \*(L"software trace cache\*(R" algorithm, which tries to
  put all often executed code together, minimizing the number of branches
  executed by making extra copies of code.
  .Sp
  The default is \fBsimple\fR at levels \fB\-O1\fR, \fB\-Os\fR, and
  \&\fBstc\fR at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP "\fB\-freorder\-blocks\-and\-partition\fR" 4
  .IX Item "-freorder-blocks-and-partition"
  In addition to reordering basic blocks in the compiled function, in order
  to reduce number of taken branches, partitions hot and cold basic blocks
--- 13549,13576 ----
  of \f(CW\*(C`_\|_builtin_expect\*(C'\fR are easier to understand.
  .Sp
  It is also possible to specify expected probability of the expression
! with \f(CW\*(C`_\|_builtin_expect_with_probability\*(C'\fR built\-in function.
  .Sp
  The default is \fB\-fguess\-branch\-probability\fR at levels
  \&\fB\-O\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-freorder\-blocks\fR 4
  .IX Item "-freorder-blocks"
  Reorder basic blocks in the compiled function in order to reduce number of
  taken branches and improve code locality.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-freorder\-blocks\-algorithm=\fR\fIalgorithm\fR 4
  .IX Item "-freorder-blocks-algorithm=algorithm"
  Use the specified algorithm for basic block reordering.  The
  \&\fIalgorithm\fR argument can be \fBsimple\fR, which does not increase
  code size (except sometimes due to secondary effects like alignment),
! or \fBstc\fR, the "software trace cache" algorithm, which tries to
  put all often executed code together, minimizing the number of branches
  executed by making extra copies of code.
  .Sp
  The default is \fBsimple\fR at levels \fB\-O1\fR, \fB\-Os\fR, and
  \&\fBstc\fR at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP \fB\-freorder\-blocks\-and\-partition\fR 4
  .IX Item "-freorder-blocks-and-partition"
  In addition to reordering basic blocks in the compiled function, in order
  to reduce number of taken branches, partitions hot and cold basic blocks
*************** into separate sections of the assembly a
*** 13645,13658 ****
  paging and cache locality performance.
  .Sp
  This optimization is automatically turned off in the presence of
! exception handling or unwind tables (on targets using setjump/longjump or target specific scheme), for linkonce sections, for functions with a user-defined
  section attribute and on any architecture that does not support named
  sections.  When \fB\-fsplit\-stack\fR is used this option is not
  enabled by default (to avoid linker errors), but may be enabled
  explicitly (if using a working linker).
  .Sp
  Enabled for x86 at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-freorder\-functions\fR" 4
  .IX Item "-freorder-functions"
  Reorder functions in the object file in order to
  improve code locality.  Unlike \fB\-fipa\-reorder\-for\-locality\fR this option
--- 13578,13591 ----
  paging and cache locality performance.
  .Sp
  This optimization is automatically turned off in the presence of
! exception handling or unwind tables (on targets using setjump/longjump or target specific scheme), for linkonce sections, for functions with a user\-defined
  section attribute and on any architecture that does not support named
  sections.  When \fB\-fsplit\-stack\fR is used this option is not
  enabled by default (to avoid linker errors), but may be enabled
  explicitly (if using a working linker).
  .Sp
  Enabled for x86 at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-freorder\-functions\fR 4
  .IX Item "-freorder-functions"
  Reorder functions in the object file in order to
  improve code locality.  Unlike \fB\-fipa\-reorder\-for\-locality\fR this option
*************** frequently executed functions and \f(CW\
*** 13663,13677 ****
  functions.  Reordering is done by the linker so object file format must support
  named sections and linker must place them in a reasonable way.
  .Sp
! This option isn't effective unless you either provide profile feedback
  (see \fB\-fprofile\-arcs\fR for details) or manually annotate functions with
  \&\f(CW\*(C`hot\*(C'\fR or \f(CW\*(C`cold\*(C'\fR attributes.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fstrict\-aliasing\fR" 4
  .IX Item "-fstrict-aliasing"
  Allow the compiler to assume the strictest aliasing rules applicable to
! the language being compiled.  For C (and \*(C+), this activates
  optimizations based on the type of expressions.  In particular, an
  object of one type is assumed never to reside at the same address as an
  object of a different type, unless the types are almost the same.  For
--- 13596,13610 ----
  functions.  Reordering is done by the linker so object file format must support
  named sections and linker must place them in a reasonable way.
  .Sp
! This option isn\*(Aqt effective unless you either provide profile feedback
  (see \fB\-fprofile\-arcs\fR for details) or manually annotate functions with
  \&\f(CW\*(C`hot\*(C'\fR or \f(CW\*(C`cold\*(C'\fR attributes.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fstrict\-aliasing\fR 4
  .IX Item "-fstrict-aliasing"
  Allow the compiler to assume the strictest aliasing rules applicable to
! the language being compiled.  For C (and C++), this activates
  optimizations based on the type of expressions.  In particular, an
  object of one type is assumed never to reside at the same address as an
  object of a different type, unless the types are almost the same.  For
*************** Pay special attention to code like this:
*** 13695,13702 ****
  .Ve
  .Sp
  The practice of reading from a different union member than the one most
! recently written to (called \*(L"type-punning\*(R") is common.  Even with
! \&\fB\-fstrict\-aliasing\fR, type-punning is allowed, provided the memory
  is accessed through the union type.  So, the code above works as
  expected.    However, this code might not:
  .Sp
--- 13628,13635 ----
  .Ve
  .Sp
  The practice of reading from a different union member than the one most
! recently written to (called "type\-punning") is common.  Even with
! \&\fB\-fstrict\-aliasing\fR, type\-punning is allowed, provided the memory
  is accessed through the union type.  So, the code above works as
  expected.    However, this code might not:
  .Sp
*************** uses a union type, e.g.:
*** 13723,13729 ****
  .Sp
  The \fB\-fstrict\-aliasing\fR option is enabled at levels
  \&\fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fipa\-strict\-aliasing\fR" 4
  .IX Item "-fipa-strict-aliasing"
  Controls whether rules of \fB\-fstrict\-aliasing\fR are applied across
  function boundaries.  Note that if multiple functions gets inlined into a
--- 13656,13662 ----
  .Sp
  The \fB\-fstrict\-aliasing\fR option is enabled at levels
  \&\fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fipa\-strict\-aliasing\fR 4
  .IX Item "-fipa-strict-aliasing"
  Controls whether rules of \fB\-fstrict\-aliasing\fR are applied across
  function boundaries.  Note that if multiple functions gets inlined into a
*************** function boundary.
*** 13732,13752 ****
  .Sp
  The \fB\-fipa\-strict\-aliasing\fR option is enabled by default and is
  effective only in combination with \fB\-fstrict\-aliasing\fR.
! .IP "\fB\-falign\-functions\fR" 4
  .IX Item "-falign-functions"
  .PD 0
! .IP "\fB\-falign\-functions=\fR\fIn\fR" 4
  .IX Item "-falign-functions=n"
! .IP "\fB\-falign\-functions=\fR\fIn\fR\fB:\fR\fIm\fR" 4
  .IX Item "-falign-functions=n:m"
! .IP "\fB\-falign\-functions=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR" 4
  .IX Item "-falign-functions=n:m:n2"
! .IP "\fB\-falign\-functions=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR\fB:\fR\fIm2\fR" 4
  .IX Item "-falign-functions=n:m:n2:m2"
  .PD
! Align the start of functions to the next power-of-two greater than or
  equal to \fIn\fR, skipping up to \fIm\fR\-1 bytes.  This ensures that at
! least the first \fIm\fR bytes of the function can be fetched by the \s-1CPU\s0
  without crossing an \fIn\fR\-byte alignment boundary.
  This is an optimization of code performance and alignment is ignored for
  functions considered cold.  If alignment is required for all functions,
--- 13665,13685 ----
  .Sp
  The \fB\-fipa\-strict\-aliasing\fR option is enabled by default and is
  effective only in combination with \fB\-fstrict\-aliasing\fR.
! .IP \fB\-falign\-functions\fR 4
  .IX Item "-falign-functions"
  .PD 0
! .IP \fB\-falign\-functions=\fR\fIn\fR 4
  .IX Item "-falign-functions=n"
! .IP \fB\-falign\-functions=\fR\fIn\fR\fB:\fR\fIm\fR 4
  .IX Item "-falign-functions=n:m"
! .IP \fB\-falign\-functions=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR 4
  .IX Item "-falign-functions=n:m:n2"
! .IP \fB\-falign\-functions=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR\fB:\fR\fIm2\fR 4
  .IX Item "-falign-functions=n:m:n2:m2"
  .PD
! Align the start of functions to the next power\-of\-two greater than or
  equal to \fIn\fR, skipping up to \fIm\fR\-1 bytes.  This ensures that at
! least the first \fIm\fR bytes of the function can be fetched by the CPU
  without crossing an \fIn\fR\-byte alignment boundary.
  This is an optimization of code performance and alignment is ignored for
  functions considered cold.  If alignment is required for all functions,
*************** in that case, it is rounded up.
*** 13773,13801 ****
  \&\fB\-fno\-align\-functions\fR and \fB\-falign\-functions=1\fR are
  equivalent and mean that functions are not aligned.
  .Sp
! If \fIn\fR is not specified or is zero, use a machine-dependent default.
  The maximum allowed \fIn\fR option value is 65536.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP "\fB\-flimit\-function\-alignment\fR" 4
  .IX Item "-flimit-function-alignment"
  If this option is enabled, the compiler tries to avoid unnecessarily
  overaligning functions. It attempts to instruct the assembler to align
  by the amount specified by \fB\-falign\-functions\fR, but not to
  skip more bytes than the size of the function.
! .IP "\fB\-falign\-labels\fR" 4
  .IX Item "-falign-labels"
  .PD 0
! .IP "\fB\-falign\-labels=\fR\fIn\fR" 4
  .IX Item "-falign-labels=n"
! .IP "\fB\-falign\-labels=\fR\fIn\fR\fB:\fR\fIm\fR" 4
  .IX Item "-falign-labels=n:m"
! .IP "\fB\-falign\-labels=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR" 4
  .IX Item "-falign-labels=n:m:n2"
! .IP "\fB\-falign\-labels=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR\fB:\fR\fIm2\fR" 4
  .IX Item "-falign-labels=n:m:n2:m2"
  .PD
! Align all branch targets to a power-of-two boundary.
  .Sp
  Parameters of this option are analogous to the \fB\-falign\-functions\fR option.
  \&\fB\-fno\-align\-labels\fR and \fB\-falign\-labels=1\fR are
--- 13706,13734 ----
  \&\fB\-fno\-align\-functions\fR and \fB\-falign\-functions=1\fR are
  equivalent and mean that functions are not aligned.
  .Sp
! If \fIn\fR is not specified or is zero, use a machine\-dependent default.
  The maximum allowed \fIn\fR option value is 65536.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP \fB\-flimit\-function\-alignment\fR 4
  .IX Item "-flimit-function-alignment"
  If this option is enabled, the compiler tries to avoid unnecessarily
  overaligning functions. It attempts to instruct the assembler to align
  by the amount specified by \fB\-falign\-functions\fR, but not to
  skip more bytes than the size of the function.
! .IP \fB\-falign\-labels\fR 4
  .IX Item "-falign-labels"
  .PD 0
! .IP \fB\-falign\-labels=\fR\fIn\fR 4
  .IX Item "-falign-labels=n"
! .IP \fB\-falign\-labels=\fR\fIn\fR\fB:\fR\fIm\fR 4
  .IX Item "-falign-labels=n:m"
! .IP \fB\-falign\-labels=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR 4
  .IX Item "-falign-labels=n:m:n2"
! .IP \fB\-falign\-labels=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR\fB:\fR\fIm2\fR 4
  .IX Item "-falign-labels=n:m:n2:m2"
  .PD
! Align all branch targets to a power\-of\-two boundary.
  .Sp
  Parameters of this option are analogous to the \fB\-falign\-functions\fR option.
  \&\fB\-fno\-align\-labels\fR and \fB\-falign\-labels=1\fR are
*************** equivalent and mean that labels are not
*** 13804,13827 ****
  If \fB\-falign\-loops\fR or \fB\-falign\-jumps\fR are applicable and
  are greater than this value, then their values are used instead.
  .Sp
! If \fIn\fR is not specified or is zero, use a machine-dependent default
  which is very likely to be \fB1\fR, meaning no alignment.
  The maximum allowed \fIn\fR option value is 65536.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP "\fB\-falign\-loops\fR" 4
  .IX Item "-falign-loops"
  .PD 0
! .IP "\fB\-falign\-loops=\fR\fIn\fR" 4
  .IX Item "-falign-loops=n"
! .IP "\fB\-falign\-loops=\fR\fIn\fR\fB:\fR\fIm\fR" 4
  .IX Item "-falign-loops=n:m"
! .IP "\fB\-falign\-loops=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR" 4
  .IX Item "-falign-loops=n:m:n2"
! .IP "\fB\-falign\-loops=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR\fB:\fR\fIm2\fR" 4
  .IX Item "-falign-loops=n:m:n2:m2"
  .PD
! Align loops to a power-of-two boundary.  If the loops are executed
  many times, this makes up for any execution of the dummy padding
  instructions.
  This is an optimization of code performance and alignment is ignored for
--- 13737,13760 ----
  If \fB\-falign\-loops\fR or \fB\-falign\-jumps\fR are applicable and
  are greater than this value, then their values are used instead.
  .Sp
! If \fIn\fR is not specified or is zero, use a machine\-dependent default
  which is very likely to be \fB1\fR, meaning no alignment.
  The maximum allowed \fIn\fR option value is 65536.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP \fB\-falign\-loops\fR 4
  .IX Item "-falign-loops"
  .PD 0
! .IP \fB\-falign\-loops=\fR\fIn\fR 4
  .IX Item "-falign-loops=n"
! .IP \fB\-falign\-loops=\fR\fIn\fR\fB:\fR\fIm\fR 4
  .IX Item "-falign-loops=n:m"
! .IP \fB\-falign\-loops=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR 4
  .IX Item "-falign-loops=n:m:n2"
! .IP \fB\-falign\-loops=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR\fB:\fR\fIm2\fR 4
  .IX Item "-falign-loops=n:m:n2:m2"
  .PD
! Align loops to a power\-of\-two boundary.  If the loops are executed
  many times, this makes up for any execution of the dummy padding
  instructions.
  This is an optimization of code performance and alignment is ignored for
*************** Parameters of this option are analogous
*** 13835,13856 ****
  equivalent and mean that loops are not aligned.
  The maximum allowed \fIn\fR option value is 65536.
  .Sp
! If \fIn\fR is not specified or is zero, use a machine-dependent default.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP "\fB\-falign\-jumps\fR" 4
  .IX Item "-falign-jumps"
  .PD 0
! .IP "\fB\-falign\-jumps=\fR\fIn\fR" 4
  .IX Item "-falign-jumps=n"
! .IP "\fB\-falign\-jumps=\fR\fIn\fR\fB:\fR\fIm\fR" 4
  .IX Item "-falign-jumps=n:m"
! .IP "\fB\-falign\-jumps=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR" 4
  .IX Item "-falign-jumps=n:m:n2"
! .IP "\fB\-falign\-jumps=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR\fB:\fR\fIm2\fR" 4
  .IX Item "-falign-jumps=n:m:n2:m2"
  .PD
! Align branch targets to a power-of-two boundary, for branch targets
  where the targets can only be reached by jumping.  In this case,
  no dummy operations need be executed.
  This is an optimization of code performance and alignment is ignored for
--- 13768,13789 ----
  equivalent and mean that loops are not aligned.
  The maximum allowed \fIn\fR option value is 65536.
  .Sp
! If \fIn\fR is not specified or is zero, use a machine\-dependent default.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP \fB\-falign\-jumps\fR 4
  .IX Item "-falign-jumps"
  .PD 0
! .IP \fB\-falign\-jumps=\fR\fIn\fR 4
  .IX Item "-falign-jumps=n"
! .IP \fB\-falign\-jumps=\fR\fIn\fR\fB:\fR\fIm\fR 4
  .IX Item "-falign-jumps=n:m"
! .IP \fB\-falign\-jumps=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR 4
  .IX Item "-falign-jumps=n:m:n2"
! .IP \fB\-falign\-jumps=\fR\fIn\fR\fB:\fR\fIm\fR\fB:\fR\fIn2\fR\fB:\fR\fIm2\fR 4
  .IX Item "-falign-jumps=n:m:n2:m2"
  .PD
! Align branch targets to a power\-of\-two boundary, for branch targets
  where the targets can only be reached by jumping.  In this case,
  no dummy operations need be executed.
  This is an optimization of code performance and alignment is ignored for
*************** Parameters of this option are analogous
*** 13863,13885 ****
  \&\fB\-fno\-align\-jumps\fR and \fB\-falign\-jumps=1\fR are
  equivalent and mean that loops are not aligned.
  .Sp
! If \fIn\fR is not specified or is zero, use a machine-dependent default.
  The maximum allowed \fIn\fR option value is 65536.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP "\fB\-fmin\-function\-alignment\fR" 4
  .IX Item "-fmin-function-alignment"
! Specify minimal alignment of functions to the next power-of-two greater than or
  equal to \fIn\fR. Unlike \fB\-falign\-functions\fR this alignment is applied
  also to all functions (even those considered cold).  The alignment is also not
  affected by \fB\-flimit\-function\-alignment\fR
! .IP "\fB\-fno\-allocation\-dce\fR" 4
  .IX Item "-fno-allocation-dce"
! Do not remove unused \*(C+ allocations (using operator \f(CW\*(C`new\*(C'\fR and operator \f(CW\*(C`delete\*(C'\fR)
  in dead code elimination.
  .Sp
  See also \fB\-fmalloc\-dce\fR.
! .IP "\fB\-fallow\-store\-data\-races\fR" 4
  .IX Item "-fallow-store-data-races"
  Allow the compiler to perform optimizations that may introduce new data races
  on stores, without proving that the variable cannot be concurrently accessed
--- 13796,13818 ----
  \&\fB\-fno\-align\-jumps\fR and \fB\-falign\-jumps=1\fR are
  equivalent and mean that loops are not aligned.
  .Sp
! If \fIn\fR is not specified or is zero, use a machine\-dependent default.
  The maximum allowed \fIn\fR option value is 65536.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP \fB\-fmin\-function\-alignment\fR 4
  .IX Item "-fmin-function-alignment"
! Specify minimal alignment of functions to the next power\-of\-two greater than or
  equal to \fIn\fR. Unlike \fB\-falign\-functions\fR this alignment is applied
  also to all functions (even those considered cold).  The alignment is also not
  affected by \fB\-flimit\-function\-alignment\fR
! .IP \fB\-fno\-allocation\-dce\fR 4
  .IX Item "-fno-allocation-dce"
! Do not remove unused C++ allocations (using operator \f(CW\*(C`new\*(C'\fR and operator \f(CW\*(C`delete\*(C'\fR)
  in dead code elimination.
  .Sp
  See also \fB\-fmalloc\-dce\fR.
! .IP \fB\-fallow\-store\-data\-races\fR 4
  .IX Item "-fallow-store-data-races"
  Allow the compiler to perform optimizations that may introduce new data races
  on stores, without proving that the variable cannot be concurrently accessed
*************** use this option if it is known that glob
*** 13888,13910 ****
  multiple threads.
  .Sp
  Examples of optimizations enabled by \fB\-fallow\-store\-data\-races\fR include
! hoisting or if-conversions that may cause a value that was already in memory
! to be re-written with that same value.  Such re-writing is safe in a single
! threaded context but may be unsafe in a multi-threaded context.  Note that on
! some processors, if-conversions may be required in order to enable
  vectorization.
  .Sp
  Enabled at level \fB\-Ofast\fR.
! .IP "\fB\-funit\-at\-a\-time\fR" 4
  .IX Item "-funit-at-a-time"
  This option is left for compatibility reasons. \fB\-funit\-at\-a\-time\fR
  has no effect, while \fB\-fno\-unit\-at\-a\-time\fR implies
  \&\fB\-fno\-toplevel\-reorder\fR and \fB\-fno\-section\-anchors\fR.
  .Sp
  Enabled by default.
! .IP "\fB\-fno\-toplevel\-reorder\fR" 4
  .IX Item "-fno-toplevel-reorder"
! Do not reorder top-level functions, variables, and \f(CW\*(C`asm\*(C'\fR
  statements.  Output them in the same order that they appear in the
  input file.  When this option is used, unreferenced static variables
  are not removed.  This option is intended to support existing code
--- 13821,13843 ----
  multiple threads.
  .Sp
  Examples of optimizations enabled by \fB\-fallow\-store\-data\-races\fR include
! hoisting or if\-conversions that may cause a value that was already in memory
! to be re\-written with that same value.  Such re\-writing is safe in a single
! threaded context but may be unsafe in a multi\-threaded context.  Note that on
! some processors, if\-conversions may be required in order to enable
  vectorization.
  .Sp
  Enabled at level \fB\-Ofast\fR.
! .IP \fB\-funit\-at\-a\-time\fR 4
  .IX Item "-funit-at-a-time"
  This option is left for compatibility reasons. \fB\-funit\-at\-a\-time\fR
  has no effect, while \fB\-fno\-unit\-at\-a\-time\fR implies
  \&\fB\-fno\-toplevel\-reorder\fR and \fB\-fno\-section\-anchors\fR.
  .Sp
  Enabled by default.
! .IP \fB\-fno\-toplevel\-reorder\fR 4
  .IX Item "-fno-toplevel-reorder"
! Do not reorder top\-level functions, variables, and \f(CW\*(C`asm\*(C'\fR
  statements.  Output them in the same order that they appear in the
  input file.  When this option is used, unreferenced static variables
  are not removed.  This option is intended to support existing code
*************** use attributes when possible.
*** 13915,13921 ****
  also at \fB\-O0\fR if \fB\-fsection\-anchors\fR is explicitly requested.
  Additionally \fB\-fno\-toplevel\-reorder\fR implies
  \&\fB\-fno\-section\-anchors\fR.
! .IP "\fB\-funreachable\-traps\fR" 4
  .IX Item "-funreachable-traps"
  With this option, the compiler turns calls to
  \&\f(CW\*(C`_\|_builtin_unreachable\*(C'\fR into traps, instead of using them for
--- 13848,13854 ----
  also at \fB\-O0\fR if \fB\-fsection\-anchors\fR is explicitly requested.
  Additionally \fB\-fno\-toplevel\-reorder\fR implies
  \&\fB\-fno\-section\-anchors\fR.
! .IP \fB\-funreachable\-traps\fR 4
  .IX Item "-funreachable-traps"
  With this option, the compiler turns calls to
  \&\f(CW\*(C`_\|_builtin_unreachable\*(C'\fR into traps, instead of using them for
*************** options.  If \fB\-fsanitize=unreachable\
*** 13928,13944 ****
  takes priority over this one.
  .Sp
  This option is enabled by default at \fB\-O0\fR and \fB\-Og\fR.
! .IP "\fB\-fweb\fR" 4
  .IX Item "-fweb"
  Constructs webs as commonly used for register allocation purposes and assign
  each web individual pseudo register.  This allows the register allocation pass
  to operate on pseudos directly, but also strengthens several other optimization
! passes, such as \s-1CSE,\s0 loop optimizer and trivial dead code remover.  It can,
  however, make debugging impossible, since variables no longer stay in a
! \&\*(L"home register\*(R".
  .Sp
  Enabled by default with \fB\-funroll\-loops\fR.
! .IP "\fB\-fwhole\-program\fR" 4
  .IX Item "-fwhole-program"
  Assume that the current compilation unit represents the whole program being
  compiled.  All public functions and variables with the exception of \f(CW\*(C`main\*(C'\fR
--- 13861,13877 ----
  takes priority over this one.
  .Sp
  This option is enabled by default at \fB\-O0\fR and \fB\-Og\fR.
! .IP \fB\-fweb\fR 4
  .IX Item "-fweb"
  Constructs webs as commonly used for register allocation purposes and assign
  each web individual pseudo register.  This allows the register allocation pass
  to operate on pseudos directly, but also strengthens several other optimization
! passes, such as CSE, loop optimizer and trivial dead code remover.  It can,
  however, make debugging impossible, since variables no longer stay in a
! "home register".
  .Sp
  Enabled by default with \fB\-funroll\-loops\fR.
! .IP \fB\-fwhole\-program\fR 4
  .IX Item "-fwhole-program"
  Assume that the current compilation unit represents the whole program being
  compiled.  All public functions and variables with the exception of \f(CW\*(C`main\*(C'\fR
*************** and in effect are optimized more aggress
*** 13947,13966 ****
  .Sp
  With \fB\-flto\fR this option has a limited use.  In most cases the
  precise list of symbols used or exported from the binary is known the
! resolution info passed to the link-time optimizer by the linker plugin.  It is
  still useful if no linker plugin is used or during incremental link step when
  final code is produced (with \fB\-flto\fR
  \&\fB\-flinker\-output=nolto\-rel\fR).
! .IP "\fB\-flto[=\fR\fIn\fR\fB]\fR" 4
  .IX Item "-flto[=n]"
! This option runs the standard link-time optimizer.  When invoked
! with source code, it generates \s-1GIMPLE\s0 (one of \s-1GCC\s0's internal
! representations) and writes it to special \s-1ELF\s0 sections in the object
  file.  When the object files are linked together, all the function
! bodies are read from these \s-1ELF\s0 sections and instantiated as if they
  had been part of the same translation unit.
  .Sp
! To use the link-time optimizer, \fB\-flto\fR and optimization
  options should be specified at compile time and during the final link.
  It is recommended that you compile all the files participating in the
  same link with the same options and also specify those options at
--- 13880,13899 ----
  .Sp
  With \fB\-flto\fR this option has a limited use.  In most cases the
  precise list of symbols used or exported from the binary is known the
! resolution info passed to the link\-time optimizer by the linker plugin.  It is
  still useful if no linker plugin is used or during incremental link step when
  final code is produced (with \fB\-flto\fR
  \&\fB\-flinker\-output=nolto\-rel\fR).
! .IP \fB\-flto[=\fR\fIn\fR\fB]\fR 4
  .IX Item "-flto[=n]"
! This option runs the standard link\-time optimizer.  When invoked
! with source code, it generates GIMPLE (one of GCC\*(Aqs internal
! representations) and writes it to special ELF sections in the object
  file.  When the object files are linked together, all the function
! bodies are read from these ELF sections and instantiated as if they
  had been part of the same translation unit.
  .Sp
! To use the link\-time optimizer, \fB\-flto\fR and optimization
  options should be specified at compile time and during the final link.
  It is recommended that you compile all the files participating in the
  same link with the same options and also specify those options at
*************** For example:
*** 13973,14011 ****
  \&        gcc \-o myprog \-flto \-O2 foo.o bar.o
  .Ve
  .Sp
! The first two invocations to \s-1GCC\s0 save a bytecode representation
! of \s-1GIMPLE\s0 into special \s-1ELF\s0 sections inside \fIfoo.o\fR and
! \&\fIbar.o\fR.  The final invocation reads the \s-1GIMPLE\s0 bytecode from
  \&\fIfoo.o\fR and \fIbar.o\fR, merges the two files into a single
  internal image, and compiles the result as usual.  Since both
  \&\fIfoo.o\fR and \fIbar.o\fR are merged into a single image, this
! causes all the interprocedural analyses and optimizations in \s-1GCC\s0 to
  work across the two files as if they were a single one.  This means,
  for example, that the inliner is able to inline functions in
! \&\fIbar.o\fR into functions in \fIfoo.o\fR and vice-versa.
  .Sp
! Another (simpler) way to enable link-time optimization is:
  .Sp
  .Vb 1
  \&        gcc \-o myprog \-flto \-O2 foo.c bar.c
  .Ve
  .Sp
  The above generates bytecode for \fIfoo.c\fR and \fIbar.c\fR,
! merges them together into a single \s-1GIMPLE\s0 representation and optimizes
  them as usual to produce \fImyprog\fR.
  .Sp
! The important thing to keep in mind is that to enable link-time
! optimizations you need to use the \s-1GCC\s0 driver to perform the link step.
! \&\s-1GCC\s0 automatically performs link-time optimization if any of the
! objects involved were compiled with the \fB\-flto\fR command-line option.
  You can always override
! the automatic decision to do link-time optimization
  by passing \fB\-fno\-lto\fR to the link command.
  .Sp
  To make whole program optimization effective, it is necessary to make
  certain whole program assumptions.  The compiler needs to know
  what functions and variables can be accessed by libraries and runtime
! outside of the link-time optimized unit.  When supported by the linker,
  the linker plugin (see \fB\-fuse\-linker\-plugin\fR) passes information
  to the compiler about used and externally visible symbols.  When
  the linker plugin is not available, \fB\-fwhole\-program\fR should be
--- 13906,13944 ----
  \&        gcc \-o myprog \-flto \-O2 foo.o bar.o
  .Ve
  .Sp
! The first two invocations to GCC save a bytecode representation
! of GIMPLE into special ELF sections inside \fIfoo.o\fR and
! \&\fIbar.o\fR.  The final invocation reads the GIMPLE bytecode from
  \&\fIfoo.o\fR and \fIbar.o\fR, merges the two files into a single
  internal image, and compiles the result as usual.  Since both
  \&\fIfoo.o\fR and \fIbar.o\fR are merged into a single image, this
! causes all the interprocedural analyses and optimizations in GCC to
  work across the two files as if they were a single one.  This means,
  for example, that the inliner is able to inline functions in
! \&\fIbar.o\fR into functions in \fIfoo.o\fR and vice\-versa.
  .Sp
! Another (simpler) way to enable link\-time optimization is:
  .Sp
  .Vb 1
  \&        gcc \-o myprog \-flto \-O2 foo.c bar.c
  .Ve
  .Sp
  The above generates bytecode for \fIfoo.c\fR and \fIbar.c\fR,
! merges them together into a single GIMPLE representation and optimizes
  them as usual to produce \fImyprog\fR.
  .Sp
! The important thing to keep in mind is that to enable link\-time
! optimizations you need to use the GCC driver to perform the link step.
! GCC automatically performs link\-time optimization if any of the
! objects involved were compiled with the \fB\-flto\fR command\-line option.
  You can always override
! the automatic decision to do link\-time optimization
  by passing \fB\-fno\-lto\fR to the link command.
  .Sp
  To make whole program optimization effective, it is necessary to make
  certain whole program assumptions.  The compiler needs to know
  what functions and variables can be accessed by libraries and runtime
! outside of the link\-time optimized unit.  When supported by the linker,
  the linker plugin (see \fB\-fuse\-linker\-plugin\fR) passes information
  to the compiler about used and externally visible symbols.  When
  the linker plugin is not available, \fB\-fwhole\-program\fR should be
*************** to more aggressive optimization decision
*** 14014,14040 ****
  .Sp
  When a file is compiled with \fB\-flto\fR without
  \&\fB\-fuse\-linker\-plugin\fR, the generated object file is larger than
! a regular object file because it contains \s-1GIMPLE\s0 bytecodes and the usual
  final code (see \fB\-ffat\-lto\-objects\fR).  This means that
! object files with \s-1LTO\s0 information can be linked as normal object
  files; if \fB\-fno\-lto\fR is passed to the linker, no
  interprocedural optimizations are applied.  Note that when
  \&\fB\-fno\-fat\-lto\-objects\fR is enabled the compile stage is faster
! but you cannot perform a regular, non-LTO link on them.
  .Sp
! When producing the final binary, \s-1GCC\s0 only
! applies link-time optimizations to those files that contain bytecode.
  Therefore, you can mix and match object files and libraries with
! \&\s-1GIMPLE\s0 bytecodes and final object code.  \s-1GCC\s0 automatically selects
! which files to optimize in \s-1LTO\s0 mode and which files to link without
  further processing.
  .Sp
  Generally, options specified at link time override those
! specified at compile time, although in some cases \s-1GCC\s0 attempts to infer
! link-time options from the settings used to compile the input files.
  .Sp
  If you do not specify an optimization level option \fB\-O\fR at
! link time, then \s-1GCC\s0 uses the highest optimization level
  used when compiling the object files.  Note that it is generally
  ineffective to specify an optimization level option only at link time and
  not at compile time, for two reasons.  First, compiling without
--- 13947,13973 ----
  .Sp
  When a file is compiled with \fB\-flto\fR without
  \&\fB\-fuse\-linker\-plugin\fR, the generated object file is larger than
! a regular object file because it contains GIMPLE bytecodes and the usual
  final code (see \fB\-ffat\-lto\-objects\fR).  This means that
! object files with LTO information can be linked as normal object
  files; if \fB\-fno\-lto\fR is passed to the linker, no
  interprocedural optimizations are applied.  Note that when
  \&\fB\-fno\-fat\-lto\-objects\fR is enabled the compile stage is faster
! but you cannot perform a regular, non\-LTO link on them.
  .Sp
! When producing the final binary, GCC only
! applies link\-time optimizations to those files that contain bytecode.
  Therefore, you can mix and match object files and libraries with
! GIMPLE bytecodes and final object code.  GCC automatically selects
! which files to optimize in LTO mode and which files to link without
  further processing.
  .Sp
  Generally, options specified at link time override those
! specified at compile time, although in some cases GCC attempts to infer
! link\-time options from the settings used to compile the input files.
  .Sp
  If you do not specify an optimization level option \fB\-O\fR at
! link time, then GCC uses the highest optimization level
  used when compiling the object files.  Note that it is generally
  ineffective to specify an optimization level option only at link time and
  not at compile time, for two reasons.  First, compiling without
*************** needed for effective optimization at lin
*** 14043,14049 ****
  optimization passes can be performed only at compile time and
  not at link time.
  .Sp
! There are some code generation flags preserved by \s-1GCC\s0 when
  generating bytecodes, as they need to be used during the final link.
  Currently, the following options and their settings are taken from
  the first object file that explicitly specifies them:
--- 13976,13982 ----
  optimization passes can be performed only at compile time and
  not at link time.
  .Sp
! There are some code generation flags preserved by GCC when
  generating bytecodes, as they need to be used during the final link.
  Currently, the following options and their settings are taken from
  the first object file that explicitly specifies them:
*************** The following options \fB\-fPIC\fR, \fB\
*** 14062,14068 ****
  \&        B<\-fPIC/\-fpic> + B<\-fpie> = B<\-fpie>
  .Ve
  .Sp
! Certain ABI-changing flags are required to match in all compilation units,
  and trying to override this at link time with a conflicting value
  is ignored.  This includes options such as \fB\-freg\-struct\-return\fR
  and \fB\-fpcc\-struct\-return\fR.
--- 13995,14001 ----
  \&        B<\-fPIC/\-fpic> + B<\-fpie> = B<\-fpie>
  .Ve
  .Sp
! Certain ABI\-changing flags are required to match in all compilation units,
  and trying to override this at link time with a conflicting value
  is ignored.  This includes options such as \fB\-freg\-struct\-return\fR
  and \fB\-fpcc\-struct\-return\fR.
*************** over \fB\-ffp\-contract=fast\fR.  You ca
*** 14077,14083 ****
  .Sp
  Diagnostic options such as \fB\-Wstringop\-overflow\fR are passed
  through to the link stage and their setting matches that of the
! compile-step at function granularity.  Note that this matters only
  for diagnostics emitted during optimization.  Note that code
  transforms such as inlining can lead to warnings being enabled
  or disabled for regions if code not consistent with the setting
--- 14010,14016 ----
  .Sp
  Diagnostic options such as \fB\-Wstringop\-overflow\fR are passed
  through to the link stage and their setting matches that of the
! compile\-step at function granularity.  Note that this matters only
  for diagnostics emitted during optimization.  Note that code
  transforms such as inlining can lead to warnings being enabled
  or disabled for regions if code not consistent with the setting
*************** When you need to pass options to the ass
*** 14087,14093 ****
  \&\fB\-Xassembler\fR make sure to either compile such translation
  units with \fB\-fno\-lto\fR or consistently use the same assembler
  options on all translation units.  You can alternatively also
! specify assembler options at \s-1LTO\s0 link time.
  .Sp
  To enable debug info generation you need to supply \fB\-g\fR at
  compile time.  If any of the input files at link time were built
--- 14020,14026 ----
  \&\fB\-Xassembler\fR make sure to either compile such translation
  units with \fB\-fno\-lto\fR or consistently use the same assembler
  options on all translation units.  You can alternatively also
! specify assembler options at LTO link time.
  .Sp
  To enable debug info generation you need to supply \fB\-g\fR at
  compile time.  If any of the input files at link time were built
*************** like the dwarf level \fB\-gdwarf\-5\fR n
*** 14097,14109 ****
  at the linker command line and mixing different settings in different
  translation units is discouraged.
  .Sp
! If \s-1LTO\s0 encounters objects with C linkage declared with incompatible
  types in separate translation units to be linked together (undefined
! behavior according to \s-1ISO C99 6.2.7\s0), a non-fatal diagnostic may be
  issued.  The behavior is still undefined at run time.  Similar
  diagnostics may be raised for other languages.
  .Sp
! Another feature of \s-1LTO\s0 is that it is possible to apply interprocedural
  optimizations on files written in different languages:
  .Sp
  .Vb 4
--- 14030,14042 ----
  at the linker command line and mixing different settings in different
  translation units is discouraged.
  .Sp
! If LTO encounters objects with C linkage declared with incompatible
  types in separate translation units to be linked together (undefined
! behavior according to ISO C99 6.2.7), a non\-fatal diagnostic may be
  issued.  The behavior is still undefined at run time.  Similar
  diagnostics may be raised for other languages.
  .Sp
! Another feature of LTO is that it is possible to apply interprocedural
  optimizations on files written in different languages:
  .Sp
  .Vb 4
*************** optimizations on files written in differ
*** 14113,14151 ****
  \&        g++ \-o myprog \-flto \-O3 foo.o bar.o baz.o \-lgfortran
  .Ve
  .Sp
! Notice that the final link is done with \fBg++\fR to get the \*(C+
  runtime libraries and \fB\-lgfortran\fR is added to get the Fortran
! runtime libraries.  In general, when mixing languages in \s-1LTO\s0 mode, you
  should use the same link command options as when mixing languages in a
! regular (non-LTO) compilation.
  .Sp
! If object files containing \s-1GIMPLE\s0 bytecode are stored in a library archive, say
! \&\fIlibfoo.a\fR, it is possible to extract and use them in an \s-1LTO\s0 link if you
  are using a linker with plugin support.  To create static libraries suitable
! for \s-1LTO,\s0 use \fBgcc-ar\fR and \fBgcc-ranlib\fR instead of \fBar\fR
  and \fBranlib\fR;
! to show the symbols of object files with \s-1GIMPLE\s0 bytecode, use
! \&\fBgcc-nm\fR.  Those commands require that \fBar\fR, \fBranlib\fR
  and \fBnm\fR have been compiled with plugin support.  At link time, use the
  flag \fB\-fuse\-linker\-plugin\fR to ensure that the library participates in
! the \s-1LTO\s0 optimization process:
  .Sp
  .Vb 1
  \&        gcc \-o myprog \-O2 \-flto \-fuse\-linker\-plugin a.o b.o \-lfoo
  .Ve
  .Sp
  With the linker plugin enabled, the linker extracts the needed
! \&\s-1GIMPLE\s0 files from \fIlibfoo.a\fR and passes them on to the running \s-1GCC\s0
! to make them part of the aggregated \s-1GIMPLE\s0 image to be optimized.
  .Sp
  If you are not using a linker with plugin support and/or do not
  enable the linker plugin, then the objects inside \fIlibfoo.a\fR
  are extracted and linked as usual, but they do not participate
! in the \s-1LTO\s0 optimization process.  In order to make a static library suitable
! for both \s-1LTO\s0 optimization and usual linkage, compile its object files with
  \&\fB\-flto\fR \fB\-ffat\-lto\-objects\fR.
  .Sp
! Link-time optimizations do not require the presence of the whole program to
  operate.  If the program does not require any symbols to be exported, it is
  possible to combine \fB\-flto\fR and \fB\-fwhole\-program\fR to allow
  the interprocedural optimizers to use more aggressive assumptions which may
--- 14046,14084 ----
  \&        g++ \-o myprog \-flto \-O3 foo.o bar.o baz.o \-lgfortran
  .Ve
  .Sp
! Notice that the final link is done with \fBg++\fR to get the C++
  runtime libraries and \fB\-lgfortran\fR is added to get the Fortran
! runtime libraries.  In general, when mixing languages in LTO mode, you
  should use the same link command options as when mixing languages in a
! regular (non\-LTO) compilation.
  .Sp
! If object files containing GIMPLE bytecode are stored in a library archive, say
! \&\fIlibfoo.a\fR, it is possible to extract and use them in an LTO link if you
  are using a linker with plugin support.  To create static libraries suitable
! for LTO, use \fBgcc\-ar\fR and \fBgcc\-ranlib\fR instead of \fBar\fR
  and \fBranlib\fR;
! to show the symbols of object files with GIMPLE bytecode, use
! \&\fBgcc\-nm\fR.  Those commands require that \fBar\fR, \fBranlib\fR
  and \fBnm\fR have been compiled with plugin support.  At link time, use the
  flag \fB\-fuse\-linker\-plugin\fR to ensure that the library participates in
! the LTO optimization process:
  .Sp
  .Vb 1
  \&        gcc \-o myprog \-O2 \-flto \-fuse\-linker\-plugin a.o b.o \-lfoo
  .Ve
  .Sp
  With the linker plugin enabled, the linker extracts the needed
! GIMPLE files from \fIlibfoo.a\fR and passes them on to the running GCC
! to make them part of the aggregated GIMPLE image to be optimized.
  .Sp
  If you are not using a linker with plugin support and/or do not
  enable the linker plugin, then the objects inside \fIlibfoo.a\fR
  are extracted and linked as usual, but they do not participate
! in the LTO optimization process.  In order to make a static library suitable
! for both LTO optimization and usual linkage, compile its object files with
  \&\fB\-flto\fR \fB\-ffat\-lto\-objects\fR.
  .Sp
! Link\-time optimizations do not require the presence of the whole program to
  operate.  If the program does not require any symbols to be exported, it is
  possible to combine \fB\-flto\fR and \fB\-fwhole\-program\fR to allow
  the interprocedural optimizers to use more aggressive assumptions which may
*************** lead to improved optimization opportunit
*** 14153,14270 ****
  Use of \fB\-fwhole\-program\fR is not needed when linker plugin is
  active (see \fB\-fuse\-linker\-plugin\fR).
  .Sp
! The current implementation of \s-1LTO\s0 makes no
  attempt to generate bytecode that is portable between different
  types of hosts.  The bytecode files are versioned and there is a
  strict version check, so bytecode files generated in one version of
! \&\s-1GCC\s0 do not work with an older or newer version of \s-1GCC.\s0
  .Sp
! Link-time optimization does not work well with generation of debugging
! information on systems other than those using a combination of \s-1ELF\s0 and
! \&\s-1DWARF.\s0
  .Sp
  If you specify the optional \fIn\fR, the optimization and code
  generation done at link time is executed in parallel using \fIn\fR
  parallel jobs by utilizing an installed \fBmake\fR program.  The
! environment variable \fB\s-1MAKE\s0\fR may be used to override the program
  used.
  .Sp
! You can also specify \fB\-flto=jobserver\fR to use \s-1GNU\s0 make's
  job server mode to determine the number of parallel jobs. This
! is useful when the Makefile calling \s-1GCC\s0 is already executing in parallel.
  You must prepend a \fB+\fR to the command recipe in the parent Makefile
! for this to work.  This option likely only works if \fB\s-1MAKE\s0\fR is
! \&\s-1GNU\s0 make.  Even without the option value, \s-1GCC\s0 tries to automatically
! detect a running \s-1GNU\s0 make's job server.
  .Sp
! Use \fB\-flto=auto\fR to use \s-1GNU\s0 make's job server, if available,
! or otherwise fall back to autodetection of the number of \s-1CPU\s0 threads
  present in your system.
! .IP "\fB\-flto\-partition=\fR\fIalg\fR" 4
  .IX Item "-flto-partition=alg"
! Specify the partitioning algorithm used by the link-time optimizer.
  The value is either \fB1to1\fR to specify a partitioning mirroring
  the original source files or \fBbalanced\fR to specify partitioning
  into equally sized chunks (whenever possible) or \fBmax\fR to create
  new partition for every symbol where possible or \fBcache\fR to
  balance chunk sizes while keeping related symbols together for better
! caching in incremental \s-1LTO.\s0  Specifying \fBnone\fR as an algorithm
  disables partitioning and streaming completely.
  The default value is \fBbalanced\fR. While \fB1to1\fR can be used
  as an workaround for various code ordering issues, the \fBmax\fR
  partitioning is intended for internal testing only.
  The value \fBone\fR specifies that exactly one partition should be
  used while the value \fBnone\fR bypasses partitioning and executes
! the link-time optimization step directly from the \s-1WPA\s0 phase.
! .IP "\fB\-flto\-incremental=\fR\fIpath\fR" 4
  .IX Item "-flto-incremental=path"
! Enable incremental \s-1LTO,\s0 with its cache in given existing directory.
! Can significantly shorten edit-compile cycles with \s-1LTO.\s0
  .Sp
! When used with \s-1LTO\s0 (\fB\-flto\fR), the output of translation units
! inside \s-1LTO\s0 is cached. Cached translation units are likely to be
  encountered again when recompiling with small code changes, leading to
  recompile time reduction.
  .Sp
! Multiple \s-1GCC\s0 instances can use the same cache in parallel.
! .IP "\fB\-flto\-incremental\-cache\-size=\fR\fIn\fR" 4
  .IX Item "-flto-incremental-cache-size=n"
! Specifies number of cache entries in incremental \s-1LTO\s0 after which to prune
  old entries. This is a soft limit, temporarily there may be more entries.
! .IP "\fB\-flto\-compression\-level=\fR\fIn\fR" 4
  .IX Item "-flto-compression-level=n"
  This option specifies the level of compression used for intermediate
! language written to \s-1LTO\s0 object files, and is only meaningful in
! conjunction with \s-1LTO\s0 mode (\fB\-flto\fR).  \s-1GCC\s0 currently supports two
! \&\s-1LTO\s0 compression algorithms. For zstd, valid values are 0 (no compression)
  to 19 (maximum compression), while zlib supports values from 0 to 9.
  Values outside this range are clamped to either minimum or maximum
  of the supported values.  If the option is not given,
  a default balanced compression setting is used.
! .IP "\fB\-fuse\-linker\-plugin\fR" 4
  .IX Item "-fuse-linker-plugin"
! Enables the use of a linker plugin during link-time optimization.  This
  option relies on plugin support in the linker, which is available in gold
! or in \s-1GNU\s0 ld 2.21 or newer.
  .Sp
! This option enables the extraction of object files with \s-1GIMPLE\s0 bytecode out
  of library archives. This improves the quality of optimization by exposing
! more code to the link-time optimizer.  This information specifies what
! symbols can be accessed externally (by non-LTO object or during dynamic
  linking).  Resulting code quality improvements on binaries (and shared
  libraries that use hidden visibility) are similar to \fB\-fwhole\-program\fR.
  See \fB\-flto\fR for a description of the effect of this flag and how to
  use it.
  .Sp
! This option is enabled by default when \s-1LTO\s0 support in \s-1GCC\s0 is enabled
! and \s-1GCC\s0 was configured for use with
! a linker supporting plugins (\s-1GNU\s0 ld 2.21 or newer or gold).
! .IP "\fB\-ffat\-lto\-objects\fR" 4
  .IX Item "-ffat-lto-objects"
! Fat \s-1LTO\s0 objects are object files that contain both the intermediate language
! and the object code. This makes them usable for both \s-1LTO\s0 linking and normal
  linking. This option is effective only when compiling with \fB\-flto\fR
  and is ignored at link time.
  .Sp
! \&\fB\-fno\-fat\-lto\-objects\fR improves compilation time over plain \s-1LTO,\s0 but
! requires the complete toolchain to be aware of \s-1LTO.\s0 It requires a linker with
  linker plugin support for basic functionality.  Additionally,
  \&\fBnm\fR, \fBar\fR and \fBranlib\fR
! need to support linker plugins to allow a full-featured build environment
! (capable of building static libraries etc).  \s-1GCC\s0 provides the \fBgcc-ar\fR,
! \&\fBgcc-nm\fR, \fBgcc-ranlib\fR wrappers to pass the right options
! to these tools. With non fat \s-1LTO\s0 makefiles need to be modified to use them.
  .Sp
! Note that modern binutils provide plugin auto-load mechanism.
! Installing the linker plugin into \fI\f(CI$libdir\fI/bfd\-plugins\fR has the same
! effect as usage of the command wrappers (\fBgcc-ar\fR, \fBgcc-nm\fR and
! \&\fBgcc-ranlib\fR).
  .Sp
  The default is \fB\-fno\-fat\-lto\-objects\fR on targets with linker plugin
  support.
! .IP "\fB\-fcompare\-elim\fR" 4
  .IX Item "-fcompare-elim"
! After register allocation and post-register allocation instruction splitting,
  identify arithmetic instructions that compute processor flags similar to a
  comparison operation based on that arithmetic.  If possible, eliminate the
  explicit comparison operation.
--- 14086,14203 ----
  Use of \fB\-fwhole\-program\fR is not needed when linker plugin is
  active (see \fB\-fuse\-linker\-plugin\fR).
  .Sp
! The current implementation of LTO makes no
  attempt to generate bytecode that is portable between different
  types of hosts.  The bytecode files are versioned and there is a
  strict version check, so bytecode files generated in one version of
! GCC do not work with an older or newer version of GCC.
  .Sp
! Link\-time optimization does not work well with generation of debugging
! information on systems other than those using a combination of ELF and
! DWARF.
  .Sp
  If you specify the optional \fIn\fR, the optimization and code
  generation done at link time is executed in parallel using \fIn\fR
  parallel jobs by utilizing an installed \fBmake\fR program.  The
! environment variable \fBMAKE\fR may be used to override the program
  used.
  .Sp
! You can also specify \fB\-flto=jobserver\fR to use GNU make\*(Aqs
  job server mode to determine the number of parallel jobs. This
! is useful when the Makefile calling GCC is already executing in parallel.
  You must prepend a \fB+\fR to the command recipe in the parent Makefile
! for this to work.  This option likely only works if \fBMAKE\fR is
! GNU make.  Even without the option value, GCC tries to automatically
! detect a running GNU make\*(Aqs job server.
  .Sp
! Use \fB\-flto=auto\fR to use GNU make\*(Aqs job server, if available,
! or otherwise fall back to autodetection of the number of CPU threads
  present in your system.
! .IP \fB\-flto\-partition=\fR\fIalg\fR 4
  .IX Item "-flto-partition=alg"
! Specify the partitioning algorithm used by the link\-time optimizer.
  The value is either \fB1to1\fR to specify a partitioning mirroring
  the original source files or \fBbalanced\fR to specify partitioning
  into equally sized chunks (whenever possible) or \fBmax\fR to create
  new partition for every symbol where possible or \fBcache\fR to
  balance chunk sizes while keeping related symbols together for better
! caching in incremental LTO.  Specifying \fBnone\fR as an algorithm
  disables partitioning and streaming completely.
  The default value is \fBbalanced\fR. While \fB1to1\fR can be used
  as an workaround for various code ordering issues, the \fBmax\fR
  partitioning is intended for internal testing only.
  The value \fBone\fR specifies that exactly one partition should be
  used while the value \fBnone\fR bypasses partitioning and executes
! the link\-time optimization step directly from the WPA phase.
! .IP \fB\-flto\-incremental=\fR\fIpath\fR 4
  .IX Item "-flto-incremental=path"
! Enable incremental LTO, with its cache in given existing directory.
! Can significantly shorten edit\-compile cycles with LTO.
  .Sp
! When used with LTO (\fB\-flto\fR), the output of translation units
! inside LTO is cached. Cached translation units are likely to be
  encountered again when recompiling with small code changes, leading to
  recompile time reduction.
  .Sp
! Multiple GCC instances can use the same cache in parallel.
! .IP \fB\-flto\-incremental\-cache\-size=\fR\fIn\fR 4
  .IX Item "-flto-incremental-cache-size=n"
! Specifies number of cache entries in incremental LTO after which to prune
  old entries. This is a soft limit, temporarily there may be more entries.
! .IP \fB\-flto\-compression\-level=\fR\fIn\fR 4
  .IX Item "-flto-compression-level=n"
  This option specifies the level of compression used for intermediate
! language written to LTO object files, and is only meaningful in
! conjunction with LTO mode (\fB\-flto\fR).  GCC currently supports two
! LTO compression algorithms. For zstd, valid values are 0 (no compression)
  to 19 (maximum compression), while zlib supports values from 0 to 9.
  Values outside this range are clamped to either minimum or maximum
  of the supported values.  If the option is not given,
  a default balanced compression setting is used.
! .IP \fB\-fuse\-linker\-plugin\fR 4
  .IX Item "-fuse-linker-plugin"
! Enables the use of a linker plugin during link\-time optimization.  This
  option relies on plugin support in the linker, which is available in gold
! or in GNU ld 2.21 or newer.
  .Sp
! This option enables the extraction of object files with GIMPLE bytecode out
  of library archives. This improves the quality of optimization by exposing
! more code to the link\-time optimizer.  This information specifies what
! symbols can be accessed externally (by non\-LTO object or during dynamic
  linking).  Resulting code quality improvements on binaries (and shared
  libraries that use hidden visibility) are similar to \fB\-fwhole\-program\fR.
  See \fB\-flto\fR for a description of the effect of this flag and how to
  use it.
  .Sp
! This option is enabled by default when LTO support in GCC is enabled
! and GCC was configured for use with
! a linker supporting plugins (GNU ld 2.21 or newer or gold).
! .IP \fB\-ffat\-lto\-objects\fR 4
  .IX Item "-ffat-lto-objects"
! Fat LTO objects are object files that contain both the intermediate language
! and the object code. This makes them usable for both LTO linking and normal
  linking. This option is effective only when compiling with \fB\-flto\fR
  and is ignored at link time.
  .Sp
! \&\fB\-fno\-fat\-lto\-objects\fR improves compilation time over plain LTO, but
! requires the complete toolchain to be aware of LTO. It requires a linker with
  linker plugin support for basic functionality.  Additionally,
  \&\fBnm\fR, \fBar\fR and \fBranlib\fR
! need to support linker plugins to allow a full\-featured build environment
! (capable of building static libraries etc).  GCC provides the \fBgcc\-ar\fR,
! \&\fBgcc\-nm\fR, \fBgcc\-ranlib\fR wrappers to pass the right options
! to these tools. With non fat LTO makefiles need to be modified to use them.
  .Sp
! Note that modern binutils provide plugin auto\-load mechanism.
! Installing the linker plugin into \fR\f(CI$libdir\fR\fI/bfd\-plugins\fR has the same
! effect as usage of the command wrappers (\fBgcc\-ar\fR, \fBgcc\-nm\fR and
! \&\fBgcc\-ranlib\fR).
  .Sp
  The default is \fB\-fno\-fat\-lto\-objects\fR on targets with linker plugin
  support.
! .IP \fB\-fcompare\-elim\fR 4
  .IX Item "-fcompare-elim"
! After register allocation and post\-register allocation instruction splitting,
  identify arithmetic instructions that compute processor flags similar to a
  comparison operation based on that arithmetic.  If possible, eliminate the
  explicit comparison operation.
*************** This pass only applies to certain target
*** 14273,14303 ****
  the comparison operation before register allocation is complete.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-ffold\-mem\-offsets\fR" 4
  .IX Item "-ffold-mem-offsets"
  .PD 0
! .IP "\fB\-fno\-fold\-mem\-offsets\fR" 4
  .IX Item "-fno-fold-mem-offsets"
  .PD
  Try to eliminate add instructions by folding them in memory loads/stores.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP "\fB\-fcprop\-registers\fR" 4
  .IX Item "-fcprop-registers"
! After register allocation and post-register allocation instruction splitting,
! perform a copy-propagation pass to try to reduce scheduling dependencies
  and occasionally eliminate the copy.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-fprofile\-correction\fR" 4
  .IX Item "-fprofile-correction"
! Profiles collected using an instrumented binary for multi-threaded programs may
  be inconsistent due to missed counter updates. When this option is specified,
! \&\s-1GCC\s0 uses heuristics to correct or smooth out such inconsistencies. By
! default, \s-1GCC\s0 emits an error message when an inconsistent profile is detected.
  .Sp
  This option is enabled by \fB\-fauto\-profile\fR.
! .IP "\fB\-fprofile\-partial\-training\fR" 4
  .IX Item "-fprofile-partial-training"
  With \f(CW\*(C`\-fprofile\-use\*(C'\fR all portions of programs not executed during train
  run are optimized aggressively for size rather than speed.  In some cases it is
--- 14206,14236 ----
  the comparison operation before register allocation is complete.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-ffold\-mem\-offsets\fR 4
  .IX Item "-ffold-mem-offsets"
  .PD 0
! .IP \fB\-fno\-fold\-mem\-offsets\fR 4
  .IX Item "-fno-fold-mem-offsets"
  .PD
  Try to eliminate add instructions by folding them in memory loads/stores.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
! .IP \fB\-fcprop\-registers\fR 4
  .IX Item "-fcprop-registers"
! After register allocation and post\-register allocation instruction splitting,
! perform a copy\-propagation pass to try to reduce scheduling dependencies
  and occasionally eliminate the copy.
  .Sp
  Enabled at levels \fB\-O1\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-fprofile\-correction\fR 4
  .IX Item "-fprofile-correction"
! Profiles collected using an instrumented binary for multi\-threaded programs may
  be inconsistent due to missed counter updates. When this option is specified,
! GCC uses heuristics to correct or smooth out such inconsistencies. By
! default, GCC emits an error message when an inconsistent profile is detected.
  .Sp
  This option is enabled by \fB\-fauto\-profile\fR.
! .IP \fB\-fprofile\-partial\-training\fR 4
  .IX Item "-fprofile-partial-training"
  With \f(CW\*(C`\-fprofile\-use\*(C'\fR all portions of programs not executed during train
  run are optimized aggressively for size rather than speed.  In some cases it is
*************** functions not executed during the train
*** 14309,14321 ****
  they were compiled without profile feedback. This leads to better performance
  when train run is not representative but also leads to significantly bigger
  code.
! .IP "\fB\-fprofile\-use\fR" 4
  .IX Item "-fprofile-use"
  .PD 0
! .IP "\fB\-fprofile\-use=\fR\fIpath\fR" 4
  .IX Item "-fprofile-use=path"
  .PD
! Enable profile feedback-directed optimizations,
  and the following optimizations, many of which
  are generally profitable only with profile feedback available:
  .Sp
--- 14242,14254 ----
  they were compiled without profile feedback. This leads to better performance
  when train run is not representative but also leads to significantly bigger
  code.
! .IP \fB\-fprofile\-use\fR 4
  .IX Item "-fprofile-use"
  .PD 0
! .IP \fB\-fprofile\-use=\fR\fIpath\fR 4
  .IX Item "-fprofile-use=path"
  .PD
! Enable profile feedback\-directed optimizations,
  and the following optimizations, many of which
  are generally profitable only with profile feedback available:
  .Sp
*************** are generally profitable only with profi
*** 14329,14349 ****
  .Sp
  Before you can use this option, you must first generate profiling information.
  .Sp
! By default, \s-1GCC\s0 emits an error message if the feedback profiles do not
  match the source code.  This error can be turned into a warning by using
  \&\fB\-Wno\-error=coverage\-mismatch\fR.  Note this may result in poorly
! optimized code.  Additionally, by default, \s-1GCC\s0 also emits a warning message if
  the feedback profiles do not exist (see \fB\-Wmissing\-profile\fR).
  .Sp
! If \fIpath\fR is specified, \s-1GCC\s0 looks at the \fIpath\fR to find
  the profile feedback data files. See \fB\-fprofile\-dir\fR.
! .IP "\fB\-fauto\-profile\fR" 4
  .IX Item "-fauto-profile"
  .PD 0
! .IP "\fB\-fauto\-profile=\fR\fIpath\fR" 4
  .IX Item "-fauto-profile=path"
  .PD
! Enable sampling-based feedback-directed optimizations,
  and the following optimizations,
  many of which are generally profitable only with profile feedback available:
  .Sp
--- 14262,14282 ----
  .Sp
  Before you can use this option, you must first generate profiling information.
  .Sp
! By default, GCC emits an error message if the feedback profiles do not
  match the source code.  This error can be turned into a warning by using
  \&\fB\-Wno\-error=coverage\-mismatch\fR.  Note this may result in poorly
! optimized code.  Additionally, by default, GCC also emits a warning message if
  the feedback profiles do not exist (see \fB\-Wmissing\-profile\fR).
  .Sp
! If \fIpath\fR is specified, GCC looks at the \fIpath\fR to find
  the profile feedback data files. See \fB\-fprofile\-dir\fR.
! .IP \fB\-fauto\-profile\fR 4
  .IX Item "-fauto-profile"
  .PD 0
! .IP \fB\-fauto\-profile=\fR\fIpath\fR 4
  .IX Item "-fauto-profile=path"
  .PD
! Enable sampling\-based feedback\-directed optimizations,
  and the following optimizations,
  many of which are generally profitable only with profile feedback available:
  .Sp
*************** E.g.
*** 14370,14376 ****
  .Ve
  .Sp
  Then use the \fBcreate_gcov\fR tool to convert the raw profile data
! to a format that can be used by \s-1GCC.\s0  You must also supply the
  unstripped binary for your program to this tool.
  See <\fBhttps://github.com/google/autofdo\fR>.
  .Sp
--- 14303,14309 ----
  .Ve
  .Sp
  Then use the \fBcreate_gcov\fR tool to convert the raw profile data
! to a format that can be used by GCC.  You must also supply the
  unstripped binary for your program to this tool.
  See <\fBhttps://github.com/google/autofdo\fR>.
  .Sp
*************** E.g.
*** 14381,14410 ****
  \&            \-\-gcov=profile.afdo
  .Ve
  .PP
! The following options control compiler behavior regarding floating-point
  arithmetic.  These options trade off between speed and
  correctness.  All must be specifically enabled.
! .IP "\fB\-fexcess\-precision=\fR\fIstyle\fR" 4
  .IX Item "-fexcess-precision=style"
  This option allows control over excess precision on machines
! where floating-point operations occur in a format with more precision or
! range than the \s-1IEEE\s0 standard and interchange floating-point types.
  An example of such a target is x87 floating point on x86 processors,
  which uses an 80\-bit representation internally instead of the 64\-bit
! \&\s-1IEEE\s0 format.  For most programs, the excess precision is harmless,
  but some programs may rely on the
! requirements of the C or \*(C+ language standards for handling \s-1IEEE\s0 values.
  .Sp
  By default, \fB\-fexcess\-precision=fast\fR is in effect; this means that
  operations may be carried out in a wider precision than the types specified
  in the source if that would result in faster code, and it is unpredictable
  when rounding to the types specified in the source code takes place.
! When compiling C or \*(C+, if \fB\-fexcess\-precision=standard\fR is specified
! then excess precision follows the rules specified in \s-1ISO C99\s0 or \*(C+;
  in particular,
  both casts and assignments cause values to be rounded to their
  semantic types (whereas \fB\-ffloat\-store\fR only affects
! assignments).  This option is enabled by default for C or \*(C+ if a strict
  conformance option such as \fB\-std=c99\fR or \fB\-std=c++17\fR is used.
  \&\fB\-ffast\-math\fR enables \fB\-fexcess\-precision=fast\fR by default
  regardless of whether a strict conformance option is used.
--- 14314,14343 ----
  \&            \-\-gcov=profile.afdo
  .Ve
  .PP
! The following options control compiler behavior regarding floating\-point
  arithmetic.  These options trade off between speed and
  correctness.  All must be specifically enabled.
! .IP \fB\-fexcess\-precision=\fR\fIstyle\fR 4
  .IX Item "-fexcess-precision=style"
  This option allows control over excess precision on machines
! where floating\-point operations occur in a format with more precision or
! range than the IEEE standard and interchange floating\-point types.
  An example of such a target is x87 floating point on x86 processors,
  which uses an 80\-bit representation internally instead of the 64\-bit
! IEEE format.  For most programs, the excess precision is harmless,
  but some programs may rely on the
! requirements of the C or C++ language standards for handling IEEE values.
  .Sp
  By default, \fB\-fexcess\-precision=fast\fR is in effect; this means that
  operations may be carried out in a wider precision than the types specified
  in the source if that would result in faster code, and it is unpredictable
  when rounding to the types specified in the source code takes place.
! When compiling C or C++, if \fB\-fexcess\-precision=standard\fR is specified
! then excess precision follows the rules specified in ISO C99 or C++;
  in particular,
  both casts and assignments cause values to be rounded to their
  semantic types (whereas \fB\-ffloat\-store\fR only affects
! assignments).  This option is enabled by default for C or C++ if a strict
  conformance option such as \fB\-std=c99\fR or \fB\-std=c++17\fR is used.
  \&\fB\-ffast\-math\fR enables \fB\-fexcess\-precision=fast\fR by default
  regardless of whether a strict conformance option is used.
*************** results of expressions with types \f(CW\
*** 14413,14434 ****
  are computed without excess precision.
  .Sp
  \&\fB\-fexcess\-precision=standard\fR is not implemented for languages
! other than C or \*(C+.  On the x86, it has no effect if \fB\-mfpmath=sse\fR
! or \fB\-mfpmath=sse+387\fR is specified; in the former case, \s-1IEEE\s0
  semantics apply without excess precision, and in the latter, rounding
  is unpredictable.
! .IP "\fB\-ffloat\-store\fR" 4
  .IX Item "-ffloat-store"
! Do not store floating-point variables in registers, and inhibit other
! options that might change whether a floating-point value is taken from a
  register or memory.  This option has generally been subsumed by
  \&\fB\-fexcess\-precision=standard\fR, which is more general.  If you do use
  \&\fB\-ffloat\-store\fR, you may need to modify your program to explicitly
  store intermediate computations in temporary variables since
! \&\fB\-ffloat\-store\fR handles rounding to \s-1IEEE\s0 format
  only on assignments and not casts as \fB\-fexcess\-precision=standard\fR
  does.
! .IP "\fB\-ffast\-math\fR" 4
  .IX Item "-ffast-math"
  Sets the options \fB\-fno\-math\-errno\fR, \fB\-funsafe\-math\-optimizations\fR,
  \&\fB\-ffinite\-math\-only\fR, \fB\-fno\-rounding\-math\fR,
--- 14346,14367 ----
  are computed without excess precision.
  .Sp
  \&\fB\-fexcess\-precision=standard\fR is not implemented for languages
! other than C or C++.  On the x86, it has no effect if \fB\-mfpmath=sse\fR
! or \fB\-mfpmath=sse+387\fR is specified; in the former case, IEEE
  semantics apply without excess precision, and in the latter, rounding
  is unpredictable.
! .IP \fB\-ffloat\-store\fR 4
  .IX Item "-ffloat-store"
! Do not store floating\-point variables in registers, and inhibit other
! options that might change whether a floating\-point value is taken from a
  register or memory.  This option has generally been subsumed by
  \&\fB\-fexcess\-precision=standard\fR, which is more general.  If you do use
  \&\fB\-ffloat\-store\fR, you may need to modify your program to explicitly
  store intermediate computations in temporary variables since
! \&\fB\-ffloat\-store\fR handles rounding to IEEE format
  only on assignments and not casts as \fB\-fexcess\-precision=standard\fR
  does.
! .IP \fB\-ffast\-math\fR 4
  .IX Item "-ffast-math"
  Sets the options \fB\-fno\-math\-errno\fR, \fB\-funsafe\-math\-optimizations\fR,
  \&\fB\-ffinite\-math\-only\fR, \fB\-fno\-rounding\-math\fR,
*************** This option causes the preprocessor macr
*** 14439,14458 ****
  .Sp
  This option is not turned on by any \fB\-O\fR option besides
  \&\fB\-Ofast\fR since it can result in incorrect output for programs
! that depend on an exact implementation of \s-1IEEE\s0 or \s-1ISO\s0 rules/specifications
  for math functions. It may, however, yield faster code for programs
  that do not require the guarantees of these specifications.
! .IP "\fB\-fno\-math\-errno\fR" 4
  .IX Item "-fno-math-errno"
  Do not set \f(CW\*(C`errno\*(C'\fR after calling math functions that are executed
  with a single instruction, e.g., \f(CW\*(C`sqrt\*(C'\fR.  A program that relies on
! \&\s-1IEEE\s0 exceptions for math error handling may want to use this flag
! for speed while maintaining \s-1IEEE\s0 arithmetic compatibility.
  .Sp
  This option is not turned on by any \fB\-O\fR option  besides
  \&\fB\-Ofast\fR since it can result in incorrect output for
! programs that depend on an exact implementation of \s-1IEEE\s0 or
! \&\s-1ISO\s0 rules/specifications for math functions. It may, however,
  yield faster code for programs that do not require the guarantees
  of these specifications.
  .Sp
--- 14372,14391 ----
  .Sp
  This option is not turned on by any \fB\-O\fR option besides
  \&\fB\-Ofast\fR since it can result in incorrect output for programs
! that depend on an exact implementation of IEEE or ISO rules/specifications
  for math functions. It may, however, yield faster code for programs
  that do not require the guarantees of these specifications.
! .IP \fB\-fno\-math\-errno\fR 4
  .IX Item "-fno-math-errno"
  Do not set \f(CW\*(C`errno\*(C'\fR after calling math functions that are executed
  with a single instruction, e.g., \f(CW\*(C`sqrt\*(C'\fR.  A program that relies on
! IEEE exceptions for math error handling may want to use this flag
! for speed while maintaining IEEE arithmetic compatibility.
  .Sp
  This option is not turned on by any \fB\-O\fR option  besides
  \&\fB\-Ofast\fR since it can result in incorrect output for
! programs that depend on an exact implementation of IEEE or
! ISO rules/specifications for math functions. It may, however,
  yield faster code for programs that do not require the guarantees
  of these specifications.
  .Sp
*************** The default is \fB\-fmath\-errno\fR.
*** 14461,14501 ****
  On Darwin systems, the math library never sets \f(CW\*(C`errno\*(C'\fR.  There is
  therefore no reason for the compiler to consider the possibility that
  it might, and \fB\-fno\-math\-errno\fR is the default.
! .IP "\fB\-funsafe\-math\-optimizations\fR" 4
  .IX Item "-funsafe-math-optimizations"
! Allow optimizations for floating-point arithmetic that (a) assume
! that arguments and results are valid and (b) may violate \s-1IEEE\s0 or
! \&\s-1ANSI\s0 standards.  When used at link time, it may include libraries
! or startup files that change the default \s-1FPU\s0 control word or other
  similar optimizations.
  .Sp
  This option is not turned on by any \fB\-O\fR option besides
  \&\fB\-Ofast\fR since it can result in incorrect output
! for programs that depend on an exact implementation of \s-1IEEE\s0
! or \s-1ISO\s0 rules/specifications for math functions. It may, however,
  yield faster code for programs that do not require the guarantees
  of these specifications.
  Enables \fB\-fno\-signed\-zeros\fR, \fB\-fno\-trapping\-math\fR,
  \&\fB\-fassociative\-math\fR and \fB\-freciprocal\-math\fR.
  .Sp
  The default is \fB\-fno\-unsafe\-math\-optimizations\fR.
! .IP "\fB\-fassociative\-math\fR" 4
  .IX Item "-fassociative-math"
! Allow re-association of operands in series of floating-point operations.
! This violates the \s-1ISO C\s0 and \*(C+ language standard by possibly changing
! computation result.  \s-1NOTE:\s0 re-ordering may change the sign of zero as
  well as ignore NaNs and inhibit or create underflow or overflow (and
  thus cannot be used on code that relies on rounding behavior like
! \&\f(CW\*(C`(x + 2**52) \- 2**52\*(C'\fR.  May also reorder floating-point comparisons
  and thus may not be used when ordered comparisons are required.
  This option requires that both \fB\-fno\-signed\-zeros\fR and
! \&\fB\-fno\-trapping\-math\fR be in effect.  Moreover, it doesn't make
  much sense with \fB\-frounding\-math\fR. For Fortran the option
  is automatically enabled when both \fB\-fno\-signed\-zeros\fR and
  \&\fB\-fno\-trapping\-math\fR are in effect.
  .Sp
  The default is \fB\-fno\-associative\-math\fR.
! .IP "\fB\-freciprocal\-math\fR" 4
  .IX Item "-freciprocal-math"
  Allow the reciprocal of a value to be used instead of dividing by
  the value if this enables optimizations.  For example \f(CW\*(C`x / y\*(C'\fR
--- 14394,14434 ----
  On Darwin systems, the math library never sets \f(CW\*(C`errno\*(C'\fR.  There is
  therefore no reason for the compiler to consider the possibility that
  it might, and \fB\-fno\-math\-errno\fR is the default.
! .IP \fB\-funsafe\-math\-optimizations\fR 4
  .IX Item "-funsafe-math-optimizations"
! Allow optimizations for floating\-point arithmetic that (a) assume
! that arguments and results are valid and (b) may violate IEEE or
! ANSI standards.  When used at link time, it may include libraries
! or startup files that change the default FPU control word or other
  similar optimizations.
  .Sp
  This option is not turned on by any \fB\-O\fR option besides
  \&\fB\-Ofast\fR since it can result in incorrect output
! for programs that depend on an exact implementation of IEEE
! or ISO rules/specifications for math functions. It may, however,
  yield faster code for programs that do not require the guarantees
  of these specifications.
  Enables \fB\-fno\-signed\-zeros\fR, \fB\-fno\-trapping\-math\fR,
  \&\fB\-fassociative\-math\fR and \fB\-freciprocal\-math\fR.
  .Sp
  The default is \fB\-fno\-unsafe\-math\-optimizations\fR.
! .IP \fB\-fassociative\-math\fR 4
  .IX Item "-fassociative-math"
! Allow re\-association of operands in series of floating\-point operations.
! This violates the ISO C and C++ language standard by possibly changing
! computation result.  NOTE: re\-ordering may change the sign of zero as
  well as ignore NaNs and inhibit or create underflow or overflow (and
  thus cannot be used on code that relies on rounding behavior like
! \&\f(CW\*(C`(x + 2**52) \- 2**52\*(C'\fR.  May also reorder floating\-point comparisons
  and thus may not be used when ordered comparisons are required.
  This option requires that both \fB\-fno\-signed\-zeros\fR and
! \&\fB\-fno\-trapping\-math\fR be in effect.  Moreover, it doesn\*(Aqt make
  much sense with \fB\-frounding\-math\fR. For Fortran the option
  is automatically enabled when both \fB\-fno\-signed\-zeros\fR and
  \&\fB\-fno\-trapping\-math\fR are in effect.
  .Sp
  The default is \fB\-fno\-associative\-math\fR.
! .IP \fB\-freciprocal\-math\fR 4
  .IX Item "-freciprocal-math"
  Allow the reciprocal of a value to be used instead of dividing by
  the value if this enables optimizations.  For example \f(CW\*(C`x / y\*(C'\fR
*************** is subject to common subexpression elimi
*** 14504,14573 ****
  precision and increases the number of flops operating on the value.
  .Sp
  The default is \fB\-fno\-reciprocal\-math\fR.
! .IP "\fB\-ffinite\-math\-only\fR" 4
  .IX Item "-ffinite-math-only"
! Allow optimizations for floating-point arithmetic that assume
  that arguments and results are not NaNs or +\-Infs.
  .Sp
  This option is not turned on by any \fB\-O\fR option besides
  \&\fB\-Ofast\fR since it can result in incorrect output
! for programs that depend on an exact implementation of \s-1IEEE\s0 or
! \&\s-1ISO\s0 rules/specifications for math functions. It may, however,
  yield faster code for programs that do not require the guarantees
  of these specifications.
  .Sp
  The default is \fB\-fno\-finite\-math\-only\fR.
! .IP "\fB\-fno\-signed\-zeros\fR" 4
  .IX Item "-fno-signed-zeros"
! Allow optimizations for floating-point arithmetic that ignore the
! signedness of zero.  \s-1IEEE\s0 arithmetic specifies the behavior of
  distinct +0.0 and \-0.0 values, which then prohibits simplification
  of expressions such as x+0.0 or 0.0*x (even with \fB\-ffinite\-math\-only\fR).
! This option implies that the sign of a zero result isn't significant.
  .Sp
  The default is \fB\-fsigned\-zeros\fR.
! .IP "\fB\-fno\-trapping\-math\fR" 4
  .IX Item "-fno-trapping-math"
! Compile code assuming that floating-point operations cannot generate
! user-visible traps.  These traps include division by zero, overflow,
  underflow, inexact result and invalid operation.  This option requires
  that \fB\-fno\-signaling\-nans\fR be in effect.  Setting this option may
! allow faster code if one relies on \*(L"non-stop\*(R" \s-1IEEE\s0 arithmetic, for example.
  .Sp
  This option is not turned on by any \fB\-O\fR option besides
  \&\fB\-Ofast\fR since it can result in incorrect output for programs
! that depend on an exact implementation of \s-1IEEE\s0 or \s-1ISO\s0 rules/specifications
  for math functions.
  .Sp
  The default is \fB\-ftrapping\-math\fR.
  .Sp
! Future versions of \s-1GCC\s0 may provide finer control of this setting
! using C99's \f(CW\*(C`FENV_ACCESS\*(C'\fR pragma.  This command-line option
  will be used along with \fB\-frounding\-math\fR to specify the
  default state for \f(CW\*(C`FENV_ACCESS\*(C'\fR.
! .IP "\fB\-frounding\-math\fR" 4
  .IX Item "-frounding-math"
! Disable transformations and optimizations that assume default floating-point
! rounding behavior (round-to-nearest).
  This option should be specified for programs that change
! the \s-1FP\s0 rounding mode dynamically, or that may be executed with a
! non-default rounding mode.  This option disables constant folding of
! floating-point expressions at compile time (which may be affected by
  rounding mode) and arithmetic transformations that are unsafe in the
! presence of sign-dependent rounding modes.
  .Sp
  The default is \fB\-fno\-rounding\-math\fR.
  .Sp
  This option is experimental and does not currently guarantee to
! disable all \s-1GCC\s0 optimizations that are affected by rounding mode.
! Future versions of \s-1GCC\s0 may provide finer control of this setting
! using C99's \f(CW\*(C`FENV_ACCESS\*(C'\fR pragma.  This command-line option
  will be used along with \fB\-ftrapping\-math\fR to specify the
  default state for \f(CW\*(C`FENV_ACCESS\*(C'\fR.
! .IP "\fB\-fsignaling\-nans\fR" 4
  .IX Item "-fsignaling-nans"
! Compile code assuming that \s-1IEEE\s0 signaling NaNs may generate user-visible
! traps during floating-point operations.  Setting this option disables
  optimizations that may change the number of exceptions visible with
  signaling NaNs.  This option implies \fB\-ftrapping\-math\fR.
  .Sp
--- 14437,14506 ----
  precision and increases the number of flops operating on the value.
  .Sp
  The default is \fB\-fno\-reciprocal\-math\fR.
! .IP \fB\-ffinite\-math\-only\fR 4
  .IX Item "-ffinite-math-only"
! Allow optimizations for floating\-point arithmetic that assume
  that arguments and results are not NaNs or +\-Infs.
  .Sp
  This option is not turned on by any \fB\-O\fR option besides
  \&\fB\-Ofast\fR since it can result in incorrect output
! for programs that depend on an exact implementation of IEEE or
! ISO rules/specifications for math functions. It may, however,
  yield faster code for programs that do not require the guarantees
  of these specifications.
  .Sp
  The default is \fB\-fno\-finite\-math\-only\fR.
! .IP \fB\-fno\-signed\-zeros\fR 4
  .IX Item "-fno-signed-zeros"
! Allow optimizations for floating\-point arithmetic that ignore the
! signedness of zero.  IEEE arithmetic specifies the behavior of
  distinct +0.0 and \-0.0 values, which then prohibits simplification
  of expressions such as x+0.0 or 0.0*x (even with \fB\-ffinite\-math\-only\fR).
! This option implies that the sign of a zero result isn\*(Aqt significant.
  .Sp
  The default is \fB\-fsigned\-zeros\fR.
! .IP \fB\-fno\-trapping\-math\fR 4
  .IX Item "-fno-trapping-math"
! Compile code assuming that floating\-point operations cannot generate
! user\-visible traps.  These traps include division by zero, overflow,
  underflow, inexact result and invalid operation.  This option requires
  that \fB\-fno\-signaling\-nans\fR be in effect.  Setting this option may
! allow faster code if one relies on "non\-stop" IEEE arithmetic, for example.
  .Sp
  This option is not turned on by any \fB\-O\fR option besides
  \&\fB\-Ofast\fR since it can result in incorrect output for programs
! that depend on an exact implementation of IEEE or ISO rules/specifications
  for math functions.
  .Sp
  The default is \fB\-ftrapping\-math\fR.
  .Sp
! Future versions of GCC may provide finer control of this setting
! using C99\*(Aqs \f(CW\*(C`FENV_ACCESS\*(C'\fR pragma.  This command\-line option
  will be used along with \fB\-frounding\-math\fR to specify the
  default state for \f(CW\*(C`FENV_ACCESS\*(C'\fR.
! .IP \fB\-frounding\-math\fR 4
  .IX Item "-frounding-math"
! Disable transformations and optimizations that assume default floating\-point
! rounding behavior (round\-to\-nearest).
  This option should be specified for programs that change
! the FP rounding mode dynamically, or that may be executed with a
! non\-default rounding mode.  This option disables constant folding of
! floating\-point expressions at compile time (which may be affected by
  rounding mode) and arithmetic transformations that are unsafe in the
! presence of sign\-dependent rounding modes.
  .Sp
  The default is \fB\-fno\-rounding\-math\fR.
  .Sp
  This option is experimental and does not currently guarantee to
! disable all GCC optimizations that are affected by rounding mode.
! Future versions of GCC may provide finer control of this setting
! using C99\*(Aqs \f(CW\*(C`FENV_ACCESS\*(C'\fR pragma.  This command\-line option
  will be used along with \fB\-ftrapping\-math\fR to specify the
  default state for \f(CW\*(C`FENV_ACCESS\*(C'\fR.
! .IP \fB\-fsignaling\-nans\fR 4
  .IX Item "-fsignaling-nans"
! Compile code assuming that IEEE signaling NaNs may generate user\-visible
! traps during floating\-point operations.  Setting this option disables
  optimizations that may change the number of exceptions visible with
  signaling NaNs.  This option implies \fB\-ftrapping\-math\fR.
  .Sp
*************** be defined.
*** 14577,14605 ****
  The default is \fB\-fno\-signaling\-nans\fR.
  .Sp
  This option is experimental and does not currently guarantee to
! disable all \s-1GCC\s0 optimizations that affect signaling NaN behavior.
! .IP "\fB\-fno\-fp\-int\-builtin\-inexact\fR" 4
  .IX Item "-fno-fp-int-builtin-inexact"
! Do not allow the built-in functions \f(CW\*(C`ceil\*(C'\fR, \f(CW\*(C`floor\*(C'\fR,
  \&\f(CW\*(C`round\*(C'\fR and \f(CW\*(C`trunc\*(C'\fR, and their \f(CW\*(C`float\*(C'\fR and \f(CW\*(C`long
! double\*(C'\fR variants, to generate code that raises the \*(L"inexact\*(R"
! floating-point exception for noninteger arguments.  \s-1ISO C99\s0 and C11
! allow these functions to raise the \*(L"inexact\*(R" exception, but \s-1ISO/IEC
! TS 18661\-1:2014,\s0 the C bindings to \s-1IEEE 754\-2008,\s0 as integrated into
! \&\s-1ISO C23,\s0 does not allow these functions to do so.
  .Sp
  The default is \fB\-ffp\-int\-builtin\-inexact\fR, allowing the
  exception to be raised, unless C23 or a later C standard is selected.
  This option does nothing unless \fB\-ftrapping\-math\fR is in effect.
  .Sp
  Even if \fB\-fno\-fp\-int\-builtin\-inexact\fR is used, if the functions
! generate a call to a library function then the \*(L"inexact\*(R" exception
! may be raised if the library implementation does not follow \s-1TS 18661.\s0
! .IP "\fB\-fsingle\-precision\-constant\fR" 4
  .IX Item "-fsingle-precision-constant"
! Treat floating-point constants as single precision instead of
! implicitly converting them to double-precision constants.
! .IP "\fB\-fcx\-limited\-range\fR" 4
  .IX Item "-fcx-limited-range"
  When enabled, this option states that a range reduction step is not
  needed when performing complex division.  Also, there is no checking
--- 14510,14538 ----
  The default is \fB\-fno\-signaling\-nans\fR.
  .Sp
  This option is experimental and does not currently guarantee to
! disable all GCC optimizations that affect signaling NaN behavior.
! .IP \fB\-fno\-fp\-int\-builtin\-inexact\fR 4
  .IX Item "-fno-fp-int-builtin-inexact"
! Do not allow the built\-in functions \f(CW\*(C`ceil\*(C'\fR, \f(CW\*(C`floor\*(C'\fR,
  \&\f(CW\*(C`round\*(C'\fR and \f(CW\*(C`trunc\*(C'\fR, and their \f(CW\*(C`float\*(C'\fR and \f(CW\*(C`long
! double\*(C'\fR variants, to generate code that raises the "inexact"
! floating\-point exception for noninteger arguments.  ISO C99 and C11
! allow these functions to raise the "inexact" exception, but ISO/IEC
! TS 18661\-1:2014, the C bindings to IEEE 754\-2008, as integrated into
! ISO C23, does not allow these functions to do so.
  .Sp
  The default is \fB\-ffp\-int\-builtin\-inexact\fR, allowing the
  exception to be raised, unless C23 or a later C standard is selected.
  This option does nothing unless \fB\-ftrapping\-math\fR is in effect.
  .Sp
  Even if \fB\-fno\-fp\-int\-builtin\-inexact\fR is used, if the functions
! generate a call to a library function then the "inexact" exception
! may be raised if the library implementation does not follow TS 18661.
! .IP \fB\-fsingle\-precision\-constant\fR 4
  .IX Item "-fsingle-precision-constant"
! Treat floating\-point constants as single precision instead of
! implicitly converting them to double\-precision constants.
! .IP \fB\-fcx\-limited\-range\fR 4
  .IX Item "-fcx-limited-range"
  When enabled, this option states that a range reduction step is not
  needed when performing complex division.  Also, there is no checking
*************** whether the result of a complex multipli
*** 14608,14617 ****
  default is \fB\-fno\-cx\-limited\-range\fR, but is enabled by
  \&\fB\-ffast\-math\fR.
  .Sp
! This option controls the default setting of the \s-1ISO C99\s0
  \&\f(CW\*(C`CX_LIMITED_RANGE\*(C'\fR pragma.  Nevertheless, the option applies to
  all languages.
! .IP "\fB\-fcx\-fortran\-rules\fR" 4
  .IX Item "-fcx-fortran-rules"
  Complex multiplication and division follow Fortran rules.  Range
  reduction is done as part of complex division, but there is no checking
--- 14541,14550 ----
  default is \fB\-fno\-cx\-limited\-range\fR, but is enabled by
  \&\fB\-ffast\-math\fR.
  .Sp
! This option controls the default setting of the ISO C99
  \&\f(CW\*(C`CX_LIMITED_RANGE\*(C'\fR pragma.  Nevertheless, the option applies to
  all languages.
! .IP \fB\-fcx\-fortran\-rules\fR 4
  .IX Item "-fcx-fortran-rules"
  Complex multiplication and division follow Fortran rules.  Range
  reduction is done as part of complex division, but there is no checking
*************** The default is \fB\-fno\-cx\-fortran\-ru
*** 14623,14650 ****
  The following options control optimizations that may improve
  performance, but are not enabled by any \fB\-O\fR options.  This
  section includes experimental options that may produce broken code.
! .IP "\fB\-fbranch\-probabilities\fR" 4
  .IX Item "-fbranch-probabilities"
  After running a program compiled with \fB\-fprofile\-arcs\fR,
  you can compile it a second time using
  \&\fB\-fbranch\-probabilities\fR, to improve optimizations based on
  the number of times each branch was taken.  When a program
  compiled with \fB\-fprofile\-arcs\fR exits, it saves arc execution
! counts to a file called \fI\fIsourcename\fI.gcda\fR for each source
  file.  The information in this data file is very dependent on the
  structure of the generated code, so you must use the same source code
  and the same optimization options for both compilations.
  See details about the file naming in \fB\-fprofile\-arcs\fR.
  .Sp
! With \fB\-fbranch\-probabilities\fR, \s-1GCC\s0 puts a
! \&\fB\s-1REG_BR_PROB\s0\fR note on each \fB\s-1JUMP_INSN\s0\fR and \fB\s-1CALL_INSN\s0\fR.
  These can be used to improve optimization.  Currently, they are only
  used in one place: in \fIreorg.cc\fR, instead of guessing which path a
! branch is most likely to take, the \fB\s-1REG_BR_PROB\s0\fR values are used to
  exactly determine which path is taken more often.
  .Sp
  Enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-fprofile\-values\fR" 4
  .IX Item "-fprofile-values"
  If combined with \fB\-fprofile\-arcs\fR, it adds code so that some
  data about values of expressions in the program is gathered.
--- 14556,14583 ----
  The following options control optimizations that may improve
  performance, but are not enabled by any \fB\-O\fR options.  This
  section includes experimental options that may produce broken code.
! .IP \fB\-fbranch\-probabilities\fR 4
  .IX Item "-fbranch-probabilities"
  After running a program compiled with \fB\-fprofile\-arcs\fR,
  you can compile it a second time using
  \&\fB\-fbranch\-probabilities\fR, to improve optimizations based on
  the number of times each branch was taken.  When a program
  compiled with \fB\-fprofile\-arcs\fR exits, it saves arc execution
! counts to a file called \fIsourcename.gcda\fR for each source
  file.  The information in this data file is very dependent on the
  structure of the generated code, so you must use the same source code
  and the same optimization options for both compilations.
  See details about the file naming in \fB\-fprofile\-arcs\fR.
  .Sp
! With \fB\-fbranch\-probabilities\fR, GCC puts a
! \&\fBREG_BR_PROB\fR note on each \fBJUMP_INSN\fR and \fBCALL_INSN\fR.
  These can be used to improve optimization.  Currently, they are only
  used in one place: in \fIreorg.cc\fR, instead of guessing which path a
! branch is most likely to take, the \fBREG_BR_PROB\fR values are used to
  exactly determine which path is taken more often.
  .Sp
  Enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-fprofile\-values\fR 4
  .IX Item "-fprofile-values"
  If combined with \fB\-fprofile\-arcs\fR, it adds code so that some
  data about values of expressions in the program is gathered.
*************** from profiling values of expressions for
*** 14654,14660 ****
  .Sp
  Enabled by \fB\-fprofile\-generate\fR, \fB\-fprofile\-use\fR, and
  \&\fB\-fauto\-profile\fR.
! .IP "\fB\-fprofile\-reorder\-functions\fR" 4
  .IX Item "-fprofile-reorder-functions"
  Function reordering based on profile instrumentation collects
  first time of execution of a function and orders these functions
--- 14587,14593 ----
  .Sp
  Enabled by \fB\-fprofile\-generate\fR, \fB\-fprofile\-use\fR, and
  \&\fB\-fauto\-profile\fR.
! .IP \fB\-fprofile\-reorder\-functions\fR 4
  .IX Item "-fprofile-reorder-functions"
  Function reordering based on profile instrumentation collects
  first time of execution of a function and orders these functions
*************** in ascending order, aiming to optimize p
*** 14662,14668 ****
  efficient loading of text segments.
  .Sp
  Enabled with \fB\-fprofile\-use\fR.
! .IP "\fB\-fvpt\fR" 4
  .IX Item "-fvpt"
  If combined with \fB\-fprofile\-arcs\fR, this option instructs the compiler
  to add code to gather information about values of expressions.
--- 14595,14601 ----
  efficient loading of text segments.
  .Sp
  Enabled with \fB\-fprofile\-use\fR.
! .IP \fB\-fvpt\fR 4
  .IX Item "-fvpt"
  If combined with \fB\-fprofile\-arcs\fR, this option instructs the compiler
  to add code to gather information about values of expressions.
*************** Currently the optimizations include spec
*** 14673,14703 ****
  using the knowledge about the value of the denominator.
  .Sp
  Enabled with \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-frename\-registers\fR" 4
  .IX Item "-frename-registers"
  Attempt to avoid false dependencies in scheduled code by making use
  of registers left over after register allocation.  This optimization
  most benefits processors with lots of registers.  Depending on the
  debug information format adopted by the target, however, it can
  make debugging impossible, since variables no longer stay in
! a \*(L"home register\*(R".
  .Sp
  Enabled by default with \fB\-funroll\-loops\fR.
! .IP "\fB\-fschedule\-fusion\fR" 4
  .IX Item "-fschedule-fusion"
  Performs a target dependent pass over the instruction stream to schedule
  instructions of same type together because target machine can execute them
  more efficiently if they are adjacent to each other in the instruction flow.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP "\fB\-ftracer\fR" 4
  .IX Item "-ftracer"
  Perform tail duplication to enlarge superblock size.  This transformation
  simplifies the control flow of the function allowing other optimizations to do
  a better job.
  .Sp
  Enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-funroll\-loops\fR" 4
  .IX Item "-funroll-loops"
  Unroll loops whose number of iterations can be determined at compile time or
  upon entry to the loop.  \fB\-funroll\-loops\fR implies
--- 14606,14636 ----
  using the knowledge about the value of the denominator.
  .Sp
  Enabled with \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-frename\-registers\fR 4
  .IX Item "-frename-registers"
  Attempt to avoid false dependencies in scheduled code by making use
  of registers left over after register allocation.  This optimization
  most benefits processors with lots of registers.  Depending on the
  debug information format adopted by the target, however, it can
  make debugging impossible, since variables no longer stay in
! a "home register".
  .Sp
  Enabled by default with \fB\-funroll\-loops\fR.
! .IP \fB\-fschedule\-fusion\fR 4
  .IX Item "-fschedule-fusion"
  Performs a target dependent pass over the instruction stream to schedule
  instructions of same type together because target machine can execute them
  more efficiently if they are adjacent to each other in the instruction flow.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
! .IP \fB\-ftracer\fR 4
  .IX Item "-ftracer"
  Perform tail duplication to enlarge superblock size.  This transformation
  simplifies the control flow of the function allowing other optimizations to do
  a better job.
  .Sp
  Enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-funroll\-loops\fR 4
  .IX Item "-funroll-loops"
  Unroll loops whose number of iterations can be determined at compile time or
  upon entry to the loop.  \fB\-funroll\-loops\fR implies
*************** a small constant number of iterations).
*** 14707,14719 ****
  or may not make it run faster.
  .Sp
  Enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-funroll\-all\-loops\fR" 4
  .IX Item "-funroll-all-loops"
  Unroll all loops, even if their number of iterations is uncertain when
  the loop is entered.  This usually makes programs run more slowly.
  \&\fB\-funroll\-all\-loops\fR implies the same options as
  \&\fB\-funroll\-loops\fR.
! .IP "\fB\-fpeel\-loops\fR" 4
  .IX Item "-fpeel-loops"
  Peels loops for which there is enough information that they do not
  roll much (from profile feedback or static analysis).  It also turns on
--- 14640,14652 ----
  or may not make it run faster.
  .Sp
  Enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-funroll\-all\-loops\fR 4
  .IX Item "-funroll-all-loops"
  Unroll all loops, even if their number of iterations is uncertain when
  the loop is entered.  This usually makes programs run more slowly.
  \&\fB\-funroll\-all\-loops\fR implies the same options as
  \&\fB\-funroll\-loops\fR.
! .IP \fB\-fpeel\-loops\fR 4
  .IX Item "-fpeel-loops"
  Peels loops for which there is enough information that they do not
  roll much (from profile feedback or static analysis).  It also turns on
*************** complete loop peeling (i.e. complete rem
*** 14721,14727 ****
  number of iterations).
  .Sp
  Enabled by \fB\-O3\fR, \fB\-fprofile\-use\fR, and \fB\-fauto\-profile\fR.
! .IP "\fB\-fmalloc\-dce\fR" 4
  .IX Item "-fmalloc-dce"
  Control whether \f(CW\*(C`malloc\*(C'\fR (and its variants such as \f(CW\*(C`calloc\*(C'\fR or
  \&\f(CW\*(C`strdup\*(C'\fR),  can be optimized away provided its return value is only used
--- 14654,14660 ----
  number of iterations).
  .Sp
  Enabled by \fB\-O3\fR, \fB\-fprofile\-use\fR, and \fB\-fauto\-profile\fR.
! .IP \fB\-fmalloc\-dce\fR 4
  .IX Item "-fmalloc-dce"
  Control whether \f(CW\*(C`malloc\*(C'\fR (and its variants such as \f(CW\*(C`calloc\*(C'\fR or
  \&\f(CW\*(C`strdup\*(C'\fR),  can be optimized away provided its return value is only used
*************** with \fB\-fmalloc\-dce=2\fR also compari
*** 14731,14761 ****
  considered safe to remove.
  .Sp
  The default is \fB\-fmalloc\-dce=2\fR.  See also \fB\-fallocation\-dce\fR.
! .IP "\fB\-fmove\-loop\-invariants\fR" 4
  .IX Item "-fmove-loop-invariants"
! Enables the loop invariant motion pass in the \s-1RTL\s0 loop optimizer.  Enabled
  at level \fB\-O1\fR and higher, except for \fB\-Og\fR.
! .IP "\fB\-fmove\-loop\-stores\fR" 4
  .IX Item "-fmove-loop-stores"
! Enables the loop store motion pass in the \s-1GIMPLE\s0 loop optimizer.  This
  moves invariant stores to after the end of the loop in exchange for
  carrying the stored value in a register across the iteration.
  Note for this option to have an effect \fB\-ftree\-loop\-im\fR has to
  be enabled as well.  Enabled at level \fB\-O1\fR and higher, except
  for \fB\-Og\fR.
! .IP "\fB\-fsplit\-loops\fR" 4
  .IX Item "-fsplit-loops"
! Split a loop into two if it contains a condition that's always true
  for one side of the iteration space and false for the other.
  .Sp
  Enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-funswitch\-loops\fR" 4
  .IX Item "-funswitch-loops"
  Move branches with loop invariant conditions out of the loop, with duplicates
  of the loop on both branches (modified according to result of the condition).
  .Sp
  Enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-fversion\-loops\-for\-strides\fR" 4
  .IX Item "-fversion-loops-for-strides"
  If a loop iterates over an array with a variable stride, create another
  version of the loop that assumes the stride is always one.  For example:
--- 14664,14694 ----
  considered safe to remove.
  .Sp
  The default is \fB\-fmalloc\-dce=2\fR.  See also \fB\-fallocation\-dce\fR.
! .IP \fB\-fmove\-loop\-invariants\fR 4
  .IX Item "-fmove-loop-invariants"
! Enables the loop invariant motion pass in the RTL loop optimizer.  Enabled
  at level \fB\-O1\fR and higher, except for \fB\-Og\fR.
! .IP \fB\-fmove\-loop\-stores\fR 4
  .IX Item "-fmove-loop-stores"
! Enables the loop store motion pass in the GIMPLE loop optimizer.  This
  moves invariant stores to after the end of the loop in exchange for
  carrying the stored value in a register across the iteration.
  Note for this option to have an effect \fB\-ftree\-loop\-im\fR has to
  be enabled as well.  Enabled at level \fB\-O1\fR and higher, except
  for \fB\-Og\fR.
! .IP \fB\-fsplit\-loops\fR 4
  .IX Item "-fsplit-loops"
! Split a loop into two if it contains a condition that\*(Aqs always true
  for one side of the iteration space and false for the other.
  .Sp
  Enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-funswitch\-loops\fR 4
  .IX Item "-funswitch-loops"
  Move branches with loop invariant conditions out of the loop, with duplicates
  of the loop on both branches (modified according to result of the condition).
  .Sp
  Enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-fversion\-loops\-for\-strides\fR 4
  .IX Item "-fversion-loops-for-strides"
  If a loop iterates over an array with a variable stride, create another
  version of the loop that assumes the stride is always one.  For example:
*************** becomes:
*** 14776,14807 ****
  \&            x[i * stride] = ...;
  .Ve
  .Sp
! This is particularly useful for assumed-shape arrays in Fortran where
  (for example) it allows better vectorization assuming contiguous accesses.
  This flag is enabled by default at \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP "\fB\-ffunction\-sections\fR" 4
  .IX Item "-ffunction-sections"
  .PD 0
! .IP "\fB\-fdata\-sections\fR" 4
  .IX Item "-fdata-sections"
  .PD
  Place each function or data item into its own section in the output
  file if the target supports arbitrary sections.  The name of the
! function or the name of the data item determines the section's name
  in the output file.
  .Sp
  Use these options on systems where the linker can perform optimizations to
  improve locality of reference in the instruction space.  Most systems using the
! \&\s-1ELF\s0 object format have linkers with such optimizations.  On \s-1AIX,\s0 the linker
  rearranges sections (CSECTs) based on the call graph.  The performance impact
  varies.
  .Sp
  Together with a linker garbage collection (linker \fB\-\-gc\-sections\fR
! option) these options may lead to smaller statically-linked executables (after
  stripping).
  .Sp
! On \s-1ELF/DWARF\s0 systems these options do not degenerate the quality of the debug
  information.  There could be issues with other object files/debug info formats.
  .Sp
  Only use these options when there are significant benefits from doing so.  When
--- 14709,14740 ----
  \&            x[i * stride] = ...;
  .Ve
  .Sp
! This is particularly useful for assumed\-shape arrays in Fortran where
  (for example) it allows better vectorization assuming contiguous accesses.
  This flag is enabled by default at \fB\-O3\fR.
  It is also enabled by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR.
! .IP \fB\-ffunction\-sections\fR 4
  .IX Item "-ffunction-sections"
  .PD 0
! .IP \fB\-fdata\-sections\fR 4
  .IX Item "-fdata-sections"
  .PD
  Place each function or data item into its own section in the output
  file if the target supports arbitrary sections.  The name of the
! function or the name of the data item determines the section\*(Aqs name
  in the output file.
  .Sp
  Use these options on systems where the linker can perform optimizations to
  improve locality of reference in the instruction space.  Most systems using the
! ELF object format have linkers with such optimizations.  On AIX, the linker
  rearranges sections (CSECTs) based on the call graph.  The performance impact
  varies.
  .Sp
  Together with a linker garbage collection (linker \fB\-\-gc\-sections\fR
! option) these options may lead to smaller statically\-linked executables (after
  stripping).
  .Sp
! On ELF/DWARF systems these options do not degenerate the quality of the debug
  information.  There could be issues with other object files/debug info formats.
  .Sp
  Only use these options when there are significant benefits from doing so.  When
*************** They prevent optimizations by the compil
*** 14811,14825 ****
  locations inside a translation unit since the locations are unknown until
  link time.  An example of such an optimization is relaxing calls to short call
  instructions.
! .IP "\fB\-fstdarg\-opt\fR" 4
  .IX Item "-fstdarg-opt"
  Optimize the prologue of variadic argument functions with respect to usage of
  those arguments.
! .IP "\fB\-fsection\-anchors\fR" 4
  .IX Item "-fsection-anchors"
  Try to reduce the number of symbolic address calculations by using
! shared \*(L"anchor\*(R" symbols to address nearby objects.  This transformation
! can help to reduce the number of \s-1GOT\s0 entries and \s-1GOT\s0 accesses on some
  targets.
  .Sp
  For example, the implementation of the following function \f(CW\*(C`foo\*(C'\fR:
--- 14744,14758 ----
  locations inside a translation unit since the locations are unknown until
  link time.  An example of such an optimization is relaxing calls to short call
  instructions.
! .IP \fB\-fstdarg\-opt\fR 4
  .IX Item "-fstdarg-opt"
  Optimize the prologue of variadic argument functions with respect to usage of
  those arguments.
! .IP \fB\-fsection\-anchors\fR 4
  .IX Item "-fsection-anchors"
  Try to reduce the number of symbolic address calculations by using
! shared "anchor" symbols to address nearby objects.  This transformation
! can help to reduce the number of GOT entries and GOT accesses on some
  targets.
  .Sp
  For example, the implementation of the following function \f(CW\*(C`foo\*(C'\fR:
*************** For example, the implementation of the f
*** 14832,14838 ****
  usually calculates the addresses of all three variables, but if you
  compile it with \fB\-fsection\-anchors\fR, it accesses the variables
  from a common anchor point instead.  The effect is similar to the
! following pseudocode (which isn't valid C):
  .Sp
  .Vb 5
  \&        int foo (void)
--- 14765,14771 ----
  usually calculates the addresses of all three variables, but if you
  compile it with \fB\-fsection\-anchors\fR, it accesses the variables
  from a common anchor point instead.  The effect is similar to the
! following pseudocode (which isn\*(Aqt valid C):
  .Sp
  .Vb 5
  \&        int foo (void)
*************** following pseudocode (which isn't valid
*** 14843,14852 ****
  .Ve
  .Sp
  Not all targets support this option.
! .IP "\fB\-fzero\-call\-used\-regs=\fR\fIchoice\fR" 4
  .IX Item "-fzero-call-used-regs=choice"
! Zero call-used registers at function return to increase program
! security by either mitigating Return-Oriented Programming (\s-1ROP\s0)
  attacks or preventing information leakage through registers.
  .Sp
  The possible values of \fIchoice\fR are the same as for the
--- 14776,14785 ----
  .Ve
  .Sp
  Not all targets support this option.
! .IP \fB\-fzero\-call\-used\-regs=\fR\fIchoice\fR 4
  .IX Item "-fzero-call-used-regs=choice"
! Zero call\-used registers at function return to increase program
! security by either mitigating Return\-Oriented Programming (ROP)
  attacks or preventing information leakage through registers.
  .Sp
  The possible values of \fIchoice\fR are the same as for the
*************** You can control this behavior for a spec
*** 14857,14864 ****
  attribute \f(CW\*(C`zero_call_used_regs\*(C'\fR.
  .IP "\fB\-\-param\fR \fIname\fR\fB=\fR\fIvalue\fR" 4
  .IX Item "--param name=value"
! In some places, \s-1GCC\s0 uses various constants to control the amount of
! optimization that is done.  For example, \s-1GCC\s0 does not inline functions
  that contain more than a certain number of instructions.  You can
  control some of these constants on the command line using the
  \&\fB\-\-param\fR option.
--- 14790,14797 ----
  attribute \f(CW\*(C`zero_call_used_regs\*(C'\fR.
  .IP "\fB\-\-param\fR \fIname\fR\fB=\fR\fIvalue\fR" 4
  .IX Item "--param name=value"
! In some places, GCC uses various constants to control the amount of
! optimization that is done.  For example, GCC does not inline functions
  that contain more than a certain number of instructions.  You can
  control some of these constants on the command line using the
  \&\fB\-\-param\fR option.
*************** use the \fB\-\-help=param \-Q\fR options
*** 14873,14940 ****
  In each case, the \fIvalue\fR is an integer.  The following choices
  of \fIname\fR are recognized for all targets:
  .RS 4
! .IP "\fBphiopt-factor-max-stmts-live\fR" 4
  .IX Item "phiopt-factor-max-stmts-live"
  When factoring statements out of if/then/else, this is the max # of statements
  after the defining statement to be allow to extend the lifetime of a name
! .IP "\fBpredictable-branch-outcome\fR" 4
  .IX Item "predictable-branch-outcome"
  When branch is predicted to be taken with probability lower than this threshold
  (in percent), then it is considered well predictable.
! .IP "\fBmax-rtl-if-conversion-insns\fR" 4
  .IX Item "max-rtl-if-conversion-insns"
! \&\s-1RTL\s0 if-conversion tries to remove conditional branches around a block and
  replace them with conditionally executed instructions.  This parameter
  gives the maximum number of instructions in a block which should be
! considered for if-conversion.  The compiler will
! also use other heuristics to decide whether if-conversion is likely to be
  profitable.
! .IP "\fBfile-cache-files\fR" 4
  .IX Item "file-cache-files"
  Max number of files in the file cache.
  The file cache is used to print source lines in diagnostics and do some
  source checks like \fB\-Wmisleading\-indentation\fR.
! .IP "\fBfile-cache-lines\fR" 4
  .IX Item "file-cache-lines"
  Max number of lines to index into file cache. When 0 this is automatically sized.
  The file cache is used to print source lines in diagnostics and do some
  source checks like \fB\-Wmisleading\-indentation\fR.
! .IP "\fBmax-rtl-if-conversion-predictable-cost\fR" 4
  .IX Item "max-rtl-if-conversion-predictable-cost"
! \&\s-1RTL\s0 if-conversion will try to remove conditional branches around a block
  and replace them with conditionally executed instructions.  These parameters
  give the maximum permissible cost for the sequence that would be generated
! by if-conversion depending on whether the branch is statically determined
  to be predictable or not.  The units for this parameter are the same as
! those for the \s-1GCC\s0 internal seq_cost metric.  The compiler will try to
! provide a reasonable default for this parameter using the \s-1BRANCH_COST\s0
  target macro.
! .IP "\fBmax-crossjump-edges\fR" 4
  .IX Item "max-crossjump-edges"
! The maximum number of incoming edges to consider for cross-jumping.
  The algorithm used by \fB\-fcrossjumping\fR is O(N^2) in
  the number of edges incoming to each block.  Increasing values mean
  more aggressive optimization, making the compilation time increase with
  probably small improvement in executable size.
! .IP "\fBmin-crossjump-insns\fR" 4
  .IX Item "min-crossjump-insns"
  The minimum number of instructions that must be matched at the end
! of two blocks before cross-jumping is performed on them.  This
  value is ignored in the case where all instructions in the block being
! cross-jumped from are matched.
! .IP "\fBmax-grow-copy-bb-insns\fR" 4
  .IX Item "max-grow-copy-bb-insns"
  The maximum code size expansion factor when copying basic blocks
  instead of jumping.  The expansion is relative to a jump instruction.
! .IP "\fBmax-goto-duplication-insns\fR" 4
  .IX Item "max-goto-duplication-insns"
  The maximum number of instructions to duplicate to a block that jumps
  to a computed goto.  To avoid O(N^2) behavior in a number of
! passes, \s-1GCC\s0 factors computed gotos early in the compilation process,
  and unfactors them as late as possible.  Only computed jumps at the
! end of a basic blocks with no more than max-goto-duplication-insns are
  unfactored.
! .IP "\fBmax-delay-slot-insn-search\fR" 4
  .IX Item "max-delay-slot-insn-search"
  The maximum number of instructions to consider when looking for an
  instruction to fill a delay slot.  If more than this arbitrary number of
--- 14806,14873 ----
  In each case, the \fIvalue\fR is an integer.  The following choices
  of \fIname\fR are recognized for all targets:
  .RS 4
! .IP \fBphiopt\-factor\-max\-stmts\-live\fR 4
  .IX Item "phiopt-factor-max-stmts-live"
  When factoring statements out of if/then/else, this is the max # of statements
  after the defining statement to be allow to extend the lifetime of a name
! .IP \fBpredictable\-branch\-outcome\fR 4
  .IX Item "predictable-branch-outcome"
  When branch is predicted to be taken with probability lower than this threshold
  (in percent), then it is considered well predictable.
! .IP \fBmax\-rtl\-if\-conversion\-insns\fR 4
  .IX Item "max-rtl-if-conversion-insns"
! RTL if\-conversion tries to remove conditional branches around a block and
  replace them with conditionally executed instructions.  This parameter
  gives the maximum number of instructions in a block which should be
! considered for if\-conversion.  The compiler will
! also use other heuristics to decide whether if\-conversion is likely to be
  profitable.
! .IP \fBfile\-cache\-files\fR 4
  .IX Item "file-cache-files"
  Max number of files in the file cache.
  The file cache is used to print source lines in diagnostics and do some
  source checks like \fB\-Wmisleading\-indentation\fR.
! .IP \fBfile\-cache\-lines\fR 4
  .IX Item "file-cache-lines"
  Max number of lines to index into file cache. When 0 this is automatically sized.
  The file cache is used to print source lines in diagnostics and do some
  source checks like \fB\-Wmisleading\-indentation\fR.
! .IP \fBmax\-rtl\-if\-conversion\-predictable\-cost\fR 4
  .IX Item "max-rtl-if-conversion-predictable-cost"
! RTL if\-conversion will try to remove conditional branches around a block
  and replace them with conditionally executed instructions.  These parameters
  give the maximum permissible cost for the sequence that would be generated
! by if\-conversion depending on whether the branch is statically determined
  to be predictable or not.  The units for this parameter are the same as
! those for the GCC internal seq_cost metric.  The compiler will try to
! provide a reasonable default for this parameter using the BRANCH_COST
  target macro.
! .IP \fBmax\-crossjump\-edges\fR 4
  .IX Item "max-crossjump-edges"
! The maximum number of incoming edges to consider for cross\-jumping.
  The algorithm used by \fB\-fcrossjumping\fR is O(N^2) in
  the number of edges incoming to each block.  Increasing values mean
  more aggressive optimization, making the compilation time increase with
  probably small improvement in executable size.
! .IP \fBmin\-crossjump\-insns\fR 4
  .IX Item "min-crossjump-insns"
  The minimum number of instructions that must be matched at the end
! of two blocks before cross\-jumping is performed on them.  This
  value is ignored in the case where all instructions in the block being
! cross\-jumped from are matched.
! .IP \fBmax\-grow\-copy\-bb\-insns\fR 4
  .IX Item "max-grow-copy-bb-insns"
  The maximum code size expansion factor when copying basic blocks
  instead of jumping.  The expansion is relative to a jump instruction.
! .IP \fBmax\-goto\-duplication\-insns\fR 4
  .IX Item "max-goto-duplication-insns"
  The maximum number of instructions to duplicate to a block that jumps
  to a computed goto.  To avoid O(N^2) behavior in a number of
! passes, GCC factors computed gotos early in the compilation process,
  and unfactors them as late as possible.  Only computed jumps at the
! end of a basic blocks with no more than max\-goto\-duplication\-insns are
  unfactored.
! .IP \fBmax\-delay\-slot\-insn\-search\fR 4
  .IX Item "max-delay-slot-insn-search"
  The maximum number of instructions to consider when looking for an
  instruction to fill a delay slot.  If more than this arbitrary number of
*************** instructions are searched, the time savi
*** 14942,15113 ****
  are minimal, so stop searching.  Increasing values mean more
  aggressive optimization, making the compilation time increase with probably
  small improvement in execution time.
! .IP "\fBmax-delay-slot-live-search\fR" 4
  .IX Item "max-delay-slot-live-search"
  When trying to fill delay slots, the maximum number of instructions to
  consider when searching for a block with valid live register
  information.  Increasing this arbitrarily chosen value means more
  aggressive optimization, increasing the compilation time.  This parameter
  should be removed when the delay slot code is rewritten to maintain the
! control-flow graph.
! .IP "\fBmax-gcse-memory\fR" 4
  .IX Item "max-gcse-memory"
  The approximate maximum amount of memory in \f(CW\*(C`kB\*(C'\fR that can be allocated in
  order to perform the global common subexpression elimination
  optimization.  If more memory than specified is required, the
  optimization is not done.
! .IP "\fBmax-gcse-insertion-ratio\fR" 4
  .IX Item "max-gcse-insertion-ratio"
  If the ratio of expression insertions to deletions is larger than this value
! for any expression, then \s-1RTL PRE\s0 inserts or removes the expression and thus
  leaves partially redundant computations in the instruction stream.
! .IP "\fBmax-pending-list-length\fR" 4
  .IX Item "max-pending-list-length"
  The maximum number of pending dependencies scheduling allows
  before flushing the current state and starting over.  Large functions
  with few branches or calls can create excessively large lists which
  needlessly consume memory and resources.
! .IP "\fBmax-modulo-backtrack-attempts\fR" 4
  .IX Item "max-modulo-backtrack-attempts"
  The maximum number of backtrack attempts the scheduler should make
  when modulo scheduling a loop.  Larger values can exponentially increase
  compilation time.
! .IP "\fBmax-inline-functions-called-once-loop-depth\fR" 4
  .IX Item "max-inline-functions-called-once-loop-depth"
  Maximal loop depth of a call considered by inline heuristics that tries to
  inline all functions called once.
! .IP "\fBmax-inline-functions-called-once-insns\fR" 4
  .IX Item "max-inline-functions-called-once-insns"
  Maximal estimated size of functions produced while inlining functions called
  once.
! .IP "\fBmax-inline-insns-single\fR" 4
  .IX Item "max-inline-insns-single"
! Several parameters control the tree inliner used in \s-1GCC.\s0  This number sets the
! maximum number of instructions (counted in \s-1GCC\s0's internal representation) in a
  single function that the tree inliner considers for inlining.  This only
  affects functions declared inline and methods implemented in a class
! declaration (\*(C+).
! .IP "\fBmax-inline-insns-auto\fR" 4
  .IX Item "max-inline-insns-auto"
  When you use \fB\-finline\-functions\fR (included in \fB\-O3\fR),
  a lot of functions that would otherwise not be considered for inlining
  by the compiler are investigated.  To those functions, a different
  (more restrictive) limit compared to functions declared inline can
! be applied (\fB\-\-param max-inline-insns-auto\fR).
! .IP "\fBmax-inline-insns-small\fR" 4
  .IX Item "max-inline-insns-small"
  This is the bound applied to calls that are considered relevant with
  \&\fB\-finline\-small\-functions\fR.
! .IP "\fBmax-inline-insns-size\fR" 4
  .IX Item "max-inline-insns-size"
  This is the bound applied to calls that are optimized for size. Small growth
  may be desirable to anticipate optimization opportunities exposed by inlining.
! .IP "\fBuninlined-function-insns\fR" 4
  .IX Item "uninlined-function-insns"
  Number of instructions accounted by inliner for function overhead such as
  function prologue and epilogue.
! .IP "\fBuninlined-function-time\fR" 4
  .IX Item "uninlined-function-time"
  Extra time accounted by inliner for function overhead such as time needed to
  execute function prologue and epilogue.
! .IP "\fBinline-heuristics-hint-percent\fR" 4
  .IX Item "inline-heuristics-hint-percent"
! The scale (in percents) applied to \fBinline-insns-single\fR,
! \&\fBinline\-insns\-single\-O2\fR, \fBinline-insns-auto\fR
  when inline heuristics hints that inlining is
  very profitable (will enable later optimizations).
! .IP "\fBuninlined-thunk-insns\fR" 4
  .IX Item "uninlined-thunk-insns"
  .PD 0
! .IP "\fBuninlined-thunk-time\fR" 4
  .IX Item "uninlined-thunk-time"
  .PD
! Same as \fB\-\-param uninlined-function-insns\fR and
! \&\fB\-\-param uninlined-function-time\fR but applied to function thunks.
! .IP "\fBinline-min-speedup\fR" 4
  .IX Item "inline-min-speedup"
  When estimated performance improvement of caller + callee runtime exceeds this
  threshold (in percent), the function can be inlined regardless of the limit on
! \&\fB\-\-param max-inline-insns-single\fR and \fB\-\-param
! max-inline-insns-auto\fR.
! .IP "\fBlarge-function-insns\fR" 4
  .IX Item "large-function-insns"
  The limit specifying really large functions.  For functions larger than this
  limit after inlining, inlining is constrained by
! \&\fB\-\-param large-function-growth\fR.  This parameter is useful primarily
! to avoid extreme compilation time caused by non-linear algorithms used by the
  back end.
! .IP "\fBlarge-function-growth\fR" 4
  .IX Item "large-function-growth"
  Specifies maximal growth of large functions caused by inlining in percents.
  For example, parameter value 100 limits large function growth to 2.0 times
  the original size.
! .IP "\fBlarge-unit-insns\fR" 4
  .IX Item "large-unit-insns"
  The limit specifying large translation unit.  Growth caused by inlining of
! units larger than this limit is limited by \fB\-\-param inline-unit-growth\fR.
  For small units this might be too tight.
  For example, consider a unit consisting of function A
  that is inline and B that just calls A three times.  If B is small relative to
  A, the growth of unit is 300\e% and yet such inlining is very sane.  For very
  large units consisting of small inlineable functions, however, the overall unit
  growth limit is needed to avoid exponential explosion of code size.  Thus for
! smaller units, the size is increased to \fB\-\-param large-unit-insns\fR
! before applying \fB\-\-param inline-unit-growth\fR.
! .IP "\fBlazy-modules\fR" 4
  .IX Item "lazy-modules"
! Maximum number of concurrently open \*(C+ module files when lazy loading.
! .IP "\fBinline-unit-growth\fR" 4
  .IX Item "inline-unit-growth"
  Specifies maximal overall growth of the compilation unit caused by inlining.
  For example, parameter value 20 limits unit growth to 1.2 times the original
  size. Cold functions (either marked cold via an attribute or by profile
  feedback) are not accounted into the unit size.
! .IP "\fBipa-cp-unit-growth\fR" 4
  .IX Item "ipa-cp-unit-growth"
  Specifies maximal overall growth of the compilation unit caused by
  interprocedural constant propagation.  For example, parameter value 10 limits
  unit growth to 1.1 times the original size.
! .IP "\fBipa-cp-large-unit-insns\fR" 4
  .IX Item "ipa-cp-large-unit-insns"
! The size of translation unit that IPA-CP pass considers large.
! .IP "\fBlarge-stack-frame\fR" 4
  .IX Item "large-stack-frame"
  The limit specifying large stack frames.  While inlining the algorithm is trying
  to not grow past this limit too much.
! .IP "\fBlarge-stack-frame-growth\fR" 4
  .IX Item "large-stack-frame-growth"
  Specifies maximal growth of large stack frames caused by inlining in percents.
  For example, parameter value 1000 limits large stack frame growth to 11 times
  the original size.
! .IP "\fBmax-inline-insns-recursive\fR" 4
  .IX Item "max-inline-insns-recursive"
  .PD 0
! .IP "\fBmax-inline-insns-recursive-auto\fR" 4
  .IX Item "max-inline-insns-recursive-auto"
  .PD
! Specifies the maximum number of instructions an out-of-line copy of a
! self-recursive inline
  function can grow into by performing recursive inlining.
  .Sp
! \&\fB\-\-param max-inline-insns-recursive\fR applies to functions
  declared inline.
  For functions not declared inline, recursive inlining
  happens only when \fB\-finline\-functions\fR (included in \fB\-O3\fR) is
! enabled; \fB\-\-param max-inline-insns-recursive-auto\fR applies instead.
! .IP "\fBmax-inline-recursive-depth\fR" 4
  .IX Item "max-inline-recursive-depth"
  .PD 0
! .IP "\fBmax-inline-recursive-depth-auto\fR" 4
  .IX Item "max-inline-recursive-depth-auto"
  .PD
  Specifies the maximum recursion depth used for recursive inlining.
  .Sp
! \&\fB\-\-param max-inline-recursive-depth\fR applies to functions
  declared inline.  For functions not declared inline, recursive inlining
  happens only when \fB\-finline\-functions\fR (included in \fB\-O3\fR) is
! enabled; \fB\-\-param max-inline-recursive-depth-auto\fR applies instead.
! .IP "\fBmin-inline-recursive-probability\fR" 4
  .IX Item "min-inline-recursive-probability"
  Recursive inlining is profitable only for function having deep recursion
  in average and can hurt for function having little recursion depth by
--- 14875,15046 ----
  are minimal, so stop searching.  Increasing values mean more
  aggressive optimization, making the compilation time increase with probably
  small improvement in execution time.
! .IP \fBmax\-delay\-slot\-live\-search\fR 4
  .IX Item "max-delay-slot-live-search"
  When trying to fill delay slots, the maximum number of instructions to
  consider when searching for a block with valid live register
  information.  Increasing this arbitrarily chosen value means more
  aggressive optimization, increasing the compilation time.  This parameter
  should be removed when the delay slot code is rewritten to maintain the
! control\-flow graph.
! .IP \fBmax\-gcse\-memory\fR 4
  .IX Item "max-gcse-memory"
  The approximate maximum amount of memory in \f(CW\*(C`kB\*(C'\fR that can be allocated in
  order to perform the global common subexpression elimination
  optimization.  If more memory than specified is required, the
  optimization is not done.
! .IP \fBmax\-gcse\-insertion\-ratio\fR 4
  .IX Item "max-gcse-insertion-ratio"
  If the ratio of expression insertions to deletions is larger than this value
! for any expression, then RTL PRE inserts or removes the expression and thus
  leaves partially redundant computations in the instruction stream.
! .IP \fBmax\-pending\-list\-length\fR 4
  .IX Item "max-pending-list-length"
  The maximum number of pending dependencies scheduling allows
  before flushing the current state and starting over.  Large functions
  with few branches or calls can create excessively large lists which
  needlessly consume memory and resources.
! .IP \fBmax\-modulo\-backtrack\-attempts\fR 4
  .IX Item "max-modulo-backtrack-attempts"
  The maximum number of backtrack attempts the scheduler should make
  when modulo scheduling a loop.  Larger values can exponentially increase
  compilation time.
! .IP \fBmax\-inline\-functions\-called\-once\-loop\-depth\fR 4
  .IX Item "max-inline-functions-called-once-loop-depth"
  Maximal loop depth of a call considered by inline heuristics that tries to
  inline all functions called once.
! .IP \fBmax\-inline\-functions\-called\-once\-insns\fR 4
  .IX Item "max-inline-functions-called-once-insns"
  Maximal estimated size of functions produced while inlining functions called
  once.
! .IP \fBmax\-inline\-insns\-single\fR 4
  .IX Item "max-inline-insns-single"
! Several parameters control the tree inliner used in GCC.  This number sets the
! maximum number of instructions (counted in GCC\*(Aqs internal representation) in a
  single function that the tree inliner considers for inlining.  This only
  affects functions declared inline and methods implemented in a class
! declaration (C++).
! .IP \fBmax\-inline\-insns\-auto\fR 4
  .IX Item "max-inline-insns-auto"
  When you use \fB\-finline\-functions\fR (included in \fB\-O3\fR),
  a lot of functions that would otherwise not be considered for inlining
  by the compiler are investigated.  To those functions, a different
  (more restrictive) limit compared to functions declared inline can
! be applied (\fB\-\-param max\-inline\-insns\-auto\fR).
! .IP \fBmax\-inline\-insns\-small\fR 4
  .IX Item "max-inline-insns-small"
  This is the bound applied to calls that are considered relevant with
  \&\fB\-finline\-small\-functions\fR.
! .IP \fBmax\-inline\-insns\-size\fR 4
  .IX Item "max-inline-insns-size"
  This is the bound applied to calls that are optimized for size. Small growth
  may be desirable to anticipate optimization opportunities exposed by inlining.
! .IP \fBuninlined\-function\-insns\fR 4
  .IX Item "uninlined-function-insns"
  Number of instructions accounted by inliner for function overhead such as
  function prologue and epilogue.
! .IP \fBuninlined\-function\-time\fR 4
  .IX Item "uninlined-function-time"
  Extra time accounted by inliner for function overhead such as time needed to
  execute function prologue and epilogue.
! .IP \fBinline\-heuristics\-hint\-percent\fR 4
  .IX Item "inline-heuristics-hint-percent"
! The scale (in percents) applied to \fBinline\-insns\-single\fR,
! \&\fBinline\-insns\-single\-O2\fR, \fBinline\-insns\-auto\fR
  when inline heuristics hints that inlining is
  very profitable (will enable later optimizations).
! .IP \fBuninlined\-thunk\-insns\fR 4
  .IX Item "uninlined-thunk-insns"
  .PD 0
! .IP \fBuninlined\-thunk\-time\fR 4
  .IX Item "uninlined-thunk-time"
  .PD
! Same as \fB\-\-param uninlined\-function\-insns\fR and
! \&\fB\-\-param uninlined\-function\-time\fR but applied to function thunks.
! .IP \fBinline\-min\-speedup\fR 4
  .IX Item "inline-min-speedup"
  When estimated performance improvement of caller + callee runtime exceeds this
  threshold (in percent), the function can be inlined regardless of the limit on
! \&\fB\-\-param max\-inline\-insns\-single\fR and \fB\-\-param
! max\-inline\-insns\-auto\fR.
! .IP \fBlarge\-function\-insns\fR 4
  .IX Item "large-function-insns"
  The limit specifying really large functions.  For functions larger than this
  limit after inlining, inlining is constrained by
! \&\fB\-\-param large\-function\-growth\fR.  This parameter is useful primarily
! to avoid extreme compilation time caused by non\-linear algorithms used by the
  back end.
! .IP \fBlarge\-function\-growth\fR 4
  .IX Item "large-function-growth"
  Specifies maximal growth of large functions caused by inlining in percents.
  For example, parameter value 100 limits large function growth to 2.0 times
  the original size.
! .IP \fBlarge\-unit\-insns\fR 4
  .IX Item "large-unit-insns"
  The limit specifying large translation unit.  Growth caused by inlining of
! units larger than this limit is limited by \fB\-\-param inline\-unit\-growth\fR.
  For small units this might be too tight.
  For example, consider a unit consisting of function A
  that is inline and B that just calls A three times.  If B is small relative to
  A, the growth of unit is 300\e% and yet such inlining is very sane.  For very
  large units consisting of small inlineable functions, however, the overall unit
  growth limit is needed to avoid exponential explosion of code size.  Thus for
! smaller units, the size is increased to \fB\-\-param large\-unit\-insns\fR
! before applying \fB\-\-param inline\-unit\-growth\fR.
! .IP \fBlazy\-modules\fR 4
  .IX Item "lazy-modules"
! Maximum number of concurrently open C++ module files when lazy loading.
! .IP \fBinline\-unit\-growth\fR 4
  .IX Item "inline-unit-growth"
  Specifies maximal overall growth of the compilation unit caused by inlining.
  For example, parameter value 20 limits unit growth to 1.2 times the original
  size. Cold functions (either marked cold via an attribute or by profile
  feedback) are not accounted into the unit size.
! .IP \fBipa\-cp\-unit\-growth\fR 4
  .IX Item "ipa-cp-unit-growth"
  Specifies maximal overall growth of the compilation unit caused by
  interprocedural constant propagation.  For example, parameter value 10 limits
  unit growth to 1.1 times the original size.
! .IP \fBipa\-cp\-large\-unit\-insns\fR 4
  .IX Item "ipa-cp-large-unit-insns"
! The size of translation unit that IPA\-CP pass considers large.
! .IP \fBlarge\-stack\-frame\fR 4
  .IX Item "large-stack-frame"
  The limit specifying large stack frames.  While inlining the algorithm is trying
  to not grow past this limit too much.
! .IP \fBlarge\-stack\-frame\-growth\fR 4
  .IX Item "large-stack-frame-growth"
  Specifies maximal growth of large stack frames caused by inlining in percents.
  For example, parameter value 1000 limits large stack frame growth to 11 times
  the original size.
! .IP \fBmax\-inline\-insns\-recursive\fR 4
  .IX Item "max-inline-insns-recursive"
  .PD 0
! .IP \fBmax\-inline\-insns\-recursive\-auto\fR 4
  .IX Item "max-inline-insns-recursive-auto"
  .PD
! Specifies the maximum number of instructions an out\-of\-line copy of a
! self\-recursive inline
  function can grow into by performing recursive inlining.
  .Sp
! \&\fB\-\-param max\-inline\-insns\-recursive\fR applies to functions
  declared inline.
  For functions not declared inline, recursive inlining
  happens only when \fB\-finline\-functions\fR (included in \fB\-O3\fR) is
! enabled; \fB\-\-param max\-inline\-insns\-recursive\-auto\fR applies instead.
! .IP \fBmax\-inline\-recursive\-depth\fR 4
  .IX Item "max-inline-recursive-depth"
  .PD 0
! .IP \fBmax\-inline\-recursive\-depth\-auto\fR 4
  .IX Item "max-inline-recursive-depth-auto"
  .PD
  Specifies the maximum recursion depth used for recursive inlining.
  .Sp
! \&\fB\-\-param max\-inline\-recursive\-depth\fR applies to functions
  declared inline.  For functions not declared inline, recursive inlining
  happens only when \fB\-finline\-functions\fR (included in \fB\-O3\fR) is
! enabled; \fB\-\-param max\-inline\-recursive\-depth\-auto\fR applies instead.
! .IP \fBmin\-inline\-recursive\-probability\fR 4
  .IX Item "min-inline-recursive-probability"
  Recursive inlining is profitable only for function having deep recursion
  in average and can hurt for function having little recursion depth by
*************** When profile feedback is available (see
*** 15118,15336 ****
  recursion depth can be guessed from the probability that function recurses
  via a given call expression.  This parameter limits inlining only to call
  expressions whose probability exceeds the given threshold (in percents).
! .IP "\fBearly-inlining-insns\fR" 4
  .IX Item "early-inlining-insns"
  Specify growth that the early inliner can make.  In effect it increases
  the amount of inlining for code having a large abstraction penalty.
! .IP "\fBmax-early-inliner-iterations\fR" 4
  .IX Item "max-early-inliner-iterations"
  Limit of iterations of the early inliner.  This basically bounds
  the number of nested indirect calls the early inliner can resolve.
  Deeper chains are still handled by late inlining.
! .IP "\fBcomdat-sharing-probability\fR" 4
  .IX Item "comdat-sharing-probability"
! Probability (in percent) that \*(C+ inline function with comdat visibility
  are shared across multiple compilation units.
! .IP "\fBmodref-max-bases\fR" 4
  .IX Item "modref-max-bases"
  .PD 0
! .IP "\fBmodref-max-refs\fR" 4
  .IX Item "modref-max-refs"
! .IP "\fBmodref-max-accesses\fR" 4
  .IX Item "modref-max-accesses"
  .PD
  Specifies the maximal number of base pointers, references and accesses stored
  for a single function by mod/ref analysis.
! .IP "\fBmodref-max-tests\fR" 4
  .IX Item "modref-max-tests"
  Specifies the maxmal number of tests alias oracle can perform to disambiguate
  memory locations using the mod/ref information.  This parameter ought to be
! bigger than \fB\-\-param modref-max-bases\fR and \fB\-\-param
! modref-max-refs\fR.
! .IP "\fBmodref-max-depth\fR" 4
  .IX Item "modref-max-depth"
! Specifies the maximum depth of \s-1DFS\s0 walk used by modref escape analysis.
  Setting to 0 disables the analysis completely.
! .IP "\fBmodref-max-escape-points\fR" 4
  .IX Item "modref-max-escape-points"
! Specifies the maximum number of escape points tracked by modref per SSA-name.
! .IP "\fBmodref-max-adjustments\fR" 4
  .IX Item "modref-max-adjustments"
  Specifies the maximum number the access range is enlarged during modref dataflow
  analysis.
! .IP "\fBprofile-func-internal-id\fR" 4
  .IX Item "profile-func-internal-id"
  A parameter to control whether to use function internal id in profile
  database lookup. If the value is 0, the compiler uses an id that
  is based on function assembler name and filename, which makes old profile
  data more tolerant to source changes such as function reordering etc.
! .IP "\fBmin-vect-loop-bound\fR" 4
  .IX Item "min-vect-loop-bound"
  The minimum number of iterations under which loops are not vectorized
  when \fB\-ftree\-vectorize\fR is used.  The number of iterations after
  vectorization needs to be greater than the value specified by this option
  to allow vectorization.
! .IP "\fBgcse-cost-distance-ratio\fR" 4
  .IX Item "gcse-cost-distance-ratio"
  Scaling factor in calculation of maximum distance an expression
! can be moved by \s-1GCSE\s0 optimizations.  This is currently supported only in the
  code hoisting pass.  The bigger the ratio, the more aggressive code hoisting
  is with simple expressions, i.e., the expressions that have cost
! less than \fBgcse-unrestricted-cost\fR.  Specifying 0 disables
  hoisting of simple expressions.
! .IP "\fBgcse-unrestricted-cost\fR" 4
  .IX Item "gcse-unrestricted-cost"
  Cost, roughly measured as the cost of a single typical machine
! instruction, at which \s-1GCSE\s0 optimizations do not constrain
  the distance an expression can travel.  This is currently
  supported only in the code hoisting pass.  The lesser the cost,
  the more aggressive code hoisting is.  Specifying 0
  allows all expressions to travel unrestricted distances.
! .IP "\fBmax-hoist-depth\fR" 4
  .IX Item "max-hoist-depth"
  The depth of search in the dominator tree for expressions to hoist.
  This is used to avoid quadratic behavior in hoisting algorithm.
  The value of 0 does not limit on the search, but may slow down compilation
  of huge functions.
! .IP "\fBmax-tail-merge-comparisons\fR" 4
  .IX Item "max-tail-merge-comparisons"
  The maximum amount of similar bbs to compare a bb with.  This is used to
  avoid quadratic behavior in tree tail merging.
! .IP "\fBmax-tail-merge-iterations\fR" 4
  .IX Item "max-tail-merge-iterations"
  The maximum amount of iterations of the pass over the function.  This is used to
  limit compilation time in tree tail merging.
! .IP "\fBstore-merging-allow-unaligned\fR" 4
  .IX Item "store-merging-allow-unaligned"
  Allow the store merging pass to introduce unaligned stores if it is legal to
  do so.
! .IP "\fBmax-stores-to-merge\fR" 4
  .IX Item "max-stores-to-merge"
  The maximum number of stores to attempt to merge into wider stores in the store
  merging pass.
! .IP "\fBmax-store-chains-to-track\fR" 4
  .IX Item "max-store-chains-to-track"
  The maximum number of store chains to track at the same time in the attempt
  to merge them into wider stores in the store merging pass.
! .IP "\fBmax-stores-to-track\fR" 4
  .IX Item "max-stores-to-track"
  The maximum number of stores to track at the same time in the attemt to
  to merge them into wider stores in the store merging pass.
! .IP "\fBmax-unrolled-insns\fR" 4
  .IX Item "max-unrolled-insns"
  The maximum number of instructions that a loop may have to be unrolled.
  If a loop is unrolled, this parameter also determines how many times
  the loop code is unrolled.
! .IP "\fBmax-average-unrolled-insns\fR" 4
  .IX Item "max-average-unrolled-insns"
  The maximum number of instructions biased by probabilities of their execution
  that a loop may have to be unrolled.  If a loop is unrolled,
  this parameter also determines how many times the loop code is unrolled.
! .IP "\fBmax-unroll-times\fR" 4
  .IX Item "max-unroll-times"
  The maximum number of unrollings of a single loop.
! .IP "\fBmax-peeled-insns\fR" 4
  .IX Item "max-peeled-insns"
  The maximum number of instructions that a loop may have to be peeled.
  If a loop is peeled, this parameter also determines how many times
  the loop code is peeled.
! .IP "\fBmax-peel-times\fR" 4
  .IX Item "max-peel-times"
  The maximum number of peelings of a single loop.
! .IP "\fBmax-peel-branches\fR" 4
  .IX Item "max-peel-branches"
  The maximum number of branches on the hot path through the peeled sequence.
! .IP "\fBmax-completely-peeled-insns\fR" 4
  .IX Item "max-completely-peeled-insns"
  The maximum number of insns of a completely peeled loop.
! .IP "\fBmax-completely-peel-times\fR" 4
  .IX Item "max-completely-peel-times"
  The maximum number of iterations of a loop to be suitable for complete peeling.
! .IP "\fBmax-completely-peel-loop-nest-depth\fR" 4
  .IX Item "max-completely-peel-loop-nest-depth"
  The maximum depth of a loop nest suitable for complete peeling.
! .IP "\fBmax-unswitch-insns\fR" 4
  .IX Item "max-unswitch-insns"
  The maximum number of insns of an unswitched loop.
! .IP "\fBmax-unswitch-depth\fR" 4
  .IX Item "max-unswitch-depth"
  The maximum depth of a loop nest to be unswitched.
! .IP "\fBlim-expensive\fR" 4
  .IX Item "lim-expensive"
  The minimum cost of an expensive expression in the loop invariant motion.
! .IP "\fBmin-loop-cond-split-prob\fR" 4
  .IX Item "min-loop-cond-split-prob"
! When \s-1FDO\s0 profile information is available, \fBmin-loop-cond-split-prob\fR
! specifies minimum threshold for probability of semi-invariant condition
  statement to trigger loop split.
! .IP "\fBiv-consider-all-candidates-bound\fR" 4
  .IX Item "iv-consider-all-candidates-bound"
  Bound on number of candidates for induction variables, below which
  all candidates are considered for each use in induction variable
  optimizations.  If there are more candidates than this,
  only the most relevant ones are considered to avoid quadratic time complexity.
! .IP "\fBiv-max-considered-uses\fR" 4
  .IX Item "iv-max-considered-uses"
  The induction variable optimizations give up on loops that contain more
  induction variable uses.
! .IP "\fBiv-always-prune-cand-set-bound\fR" 4
  .IX Item "iv-always-prune-cand-set-bound"
  If the number of candidates in the set is smaller than this value,
  always try to remove unnecessary ivs from the set
  when adding a new one.
! .IP "\fBavg-loop-niter\fR" 4
  .IX Item "avg-loop-niter"
  Average number of iterations of a loop.
! .IP "\fBdse-max-object-size\fR" 4
  .IX Item "dse-max-object-size"
  Maximum size (in bytes) of objects tracked bytewise by dead store elimination.
  Larger values may result in larger compilation times.
! .IP "\fBdse-max-alias-queries-per-store\fR" 4
  .IX Item "dse-max-alias-queries-per-store"
  Maximum number of queries into the alias oracle per store.
  Larger values result in larger compilation times and may result in more
  removed dead stores.
! .IP "\fBscev-max-expr-size\fR" 4
  .IX Item "scev-max-expr-size"
  Bound on size of expressions used in the scalar evolutions analyzer.
  Large expressions slow the analyzer.
! .IP "\fBscev-max-expr-complexity\fR" 4
  .IX Item "scev-max-expr-complexity"
  Bound on the complexity of the expressions in the scalar evolutions analyzer.
  Complex expressions slow the analyzer.
! .IP "\fBmax-tree-if-conversion-phi-args\fR" 4
  .IX Item "max-tree-if-conversion-phi-args"
! Maximum number of arguments in a \s-1PHI\s0 supported by \s-1TREE\s0 if conversion
  unless the loop is marked with simd pragma.
! .IP "\fBvect-max-layout-candidates\fR" 4
  .IX Item "vect-max-layout-candidates"
  The maximum number of possible vector layouts (such as permutations)
! to consider when optimizing to-be-vectorized code.
! .IP "\fBvect-max-version-for-alignment-checks\fR" 4
  .IX Item "vect-max-version-for-alignment-checks"
! The maximum number of run-time checks that can be performed when
  doing loop versioning for alignment in the vectorizer.
! .IP "\fBvect-max-version-for-alias-checks\fR" 4
  .IX Item "vect-max-version-for-alias-checks"
! The maximum number of run-time checks that can be performed when
  doing loop versioning for alias in the vectorizer.
! .IP "\fBvect-max-peeling-for-alignment\fR" 4
  .IX Item "vect-max-peeling-for-alignment"
  The maximum number of loop peels to enhance access alignment
  for vectorizer. Value \-1 means no limit.
! .IP "\fBmax-iterations-to-track\fR" 4
  .IX Item "max-iterations-to-track"
! The maximum number of iterations of a loop the brute-force algorithm
  for analysis of the number of iterations of the loop tries to evaluate.
! .IP "\fBhot-bb-count-fraction\fR" 4
  .IX Item "hot-bb-count-fraction"
  The denominator n of fraction 1/n of the maximal execution count of a
  basic block in the entire program that a basic block needs to at least
  have in order to be considered hot.  The default is 10000, which means
  that a basic block is considered hot if its execution count is greater
  than 1/10000 of the maximal execution count.  0 means that it is never
! considered hot.  Used in non-LTO mode.
! .IP "\fBhot-bb-count-ws-permille\fR" 4
  .IX Item "hot-bb-count-ws-permille"
  The number of most executed permilles, ranging from 0 to 1000, of the
  profiled execution of the entire program to which the execution count
--- 15051,15269 ----
  recursion depth can be guessed from the probability that function recurses
  via a given call expression.  This parameter limits inlining only to call
  expressions whose probability exceeds the given threshold (in percents).
! .IP \fBearly\-inlining\-insns\fR 4
  .IX Item "early-inlining-insns"
  Specify growth that the early inliner can make.  In effect it increases
  the amount of inlining for code having a large abstraction penalty.
! .IP \fBmax\-early\-inliner\-iterations\fR 4
  .IX Item "max-early-inliner-iterations"
  Limit of iterations of the early inliner.  This basically bounds
  the number of nested indirect calls the early inliner can resolve.
  Deeper chains are still handled by late inlining.
! .IP \fBcomdat\-sharing\-probability\fR 4
  .IX Item "comdat-sharing-probability"
! Probability (in percent) that C++ inline function with comdat visibility
  are shared across multiple compilation units.
! .IP \fBmodref\-max\-bases\fR 4
  .IX Item "modref-max-bases"
  .PD 0
! .IP \fBmodref\-max\-refs\fR 4
  .IX Item "modref-max-refs"
! .IP \fBmodref\-max\-accesses\fR 4
  .IX Item "modref-max-accesses"
  .PD
  Specifies the maximal number of base pointers, references and accesses stored
  for a single function by mod/ref analysis.
! .IP \fBmodref\-max\-tests\fR 4
  .IX Item "modref-max-tests"
  Specifies the maxmal number of tests alias oracle can perform to disambiguate
  memory locations using the mod/ref information.  This parameter ought to be
! bigger than \fB\-\-param modref\-max\-bases\fR and \fB\-\-param
! modref\-max\-refs\fR.
! .IP \fBmodref\-max\-depth\fR 4
  .IX Item "modref-max-depth"
! Specifies the maximum depth of DFS walk used by modref escape analysis.
  Setting to 0 disables the analysis completely.
! .IP \fBmodref\-max\-escape\-points\fR 4
  .IX Item "modref-max-escape-points"
! Specifies the maximum number of escape points tracked by modref per SSA\-name.
! .IP \fBmodref\-max\-adjustments\fR 4
  .IX Item "modref-max-adjustments"
  Specifies the maximum number the access range is enlarged during modref dataflow
  analysis.
! .IP \fBprofile\-func\-internal\-id\fR 4
  .IX Item "profile-func-internal-id"
  A parameter to control whether to use function internal id in profile
  database lookup. If the value is 0, the compiler uses an id that
  is based on function assembler name and filename, which makes old profile
  data more tolerant to source changes such as function reordering etc.
! .IP \fBmin\-vect\-loop\-bound\fR 4
  .IX Item "min-vect-loop-bound"
  The minimum number of iterations under which loops are not vectorized
  when \fB\-ftree\-vectorize\fR is used.  The number of iterations after
  vectorization needs to be greater than the value specified by this option
  to allow vectorization.
! .IP \fBgcse\-cost\-distance\-ratio\fR 4
  .IX Item "gcse-cost-distance-ratio"
  Scaling factor in calculation of maximum distance an expression
! can be moved by GCSE optimizations.  This is currently supported only in the
  code hoisting pass.  The bigger the ratio, the more aggressive code hoisting
  is with simple expressions, i.e., the expressions that have cost
! less than \fBgcse\-unrestricted\-cost\fR.  Specifying 0 disables
  hoisting of simple expressions.
! .IP \fBgcse\-unrestricted\-cost\fR 4
  .IX Item "gcse-unrestricted-cost"
  Cost, roughly measured as the cost of a single typical machine
! instruction, at which GCSE optimizations do not constrain
  the distance an expression can travel.  This is currently
  supported only in the code hoisting pass.  The lesser the cost,
  the more aggressive code hoisting is.  Specifying 0
  allows all expressions to travel unrestricted distances.
! .IP \fBmax\-hoist\-depth\fR 4
  .IX Item "max-hoist-depth"
  The depth of search in the dominator tree for expressions to hoist.
  This is used to avoid quadratic behavior in hoisting algorithm.
  The value of 0 does not limit on the search, but may slow down compilation
  of huge functions.
! .IP \fBmax\-tail\-merge\-comparisons\fR 4
  .IX Item "max-tail-merge-comparisons"
  The maximum amount of similar bbs to compare a bb with.  This is used to
  avoid quadratic behavior in tree tail merging.
! .IP \fBmax\-tail\-merge\-iterations\fR 4
  .IX Item "max-tail-merge-iterations"
  The maximum amount of iterations of the pass over the function.  This is used to
  limit compilation time in tree tail merging.
! .IP \fBstore\-merging\-allow\-unaligned\fR 4
  .IX Item "store-merging-allow-unaligned"
  Allow the store merging pass to introduce unaligned stores if it is legal to
  do so.
! .IP \fBmax\-stores\-to\-merge\fR 4
  .IX Item "max-stores-to-merge"
  The maximum number of stores to attempt to merge into wider stores in the store
  merging pass.
! .IP \fBmax\-store\-chains\-to\-track\fR 4
  .IX Item "max-store-chains-to-track"
  The maximum number of store chains to track at the same time in the attempt
  to merge them into wider stores in the store merging pass.
! .IP \fBmax\-stores\-to\-track\fR 4
  .IX Item "max-stores-to-track"
  The maximum number of stores to track at the same time in the attemt to
  to merge them into wider stores in the store merging pass.
! .IP \fBmax\-unrolled\-insns\fR 4
  .IX Item "max-unrolled-insns"
  The maximum number of instructions that a loop may have to be unrolled.
  If a loop is unrolled, this parameter also determines how many times
  the loop code is unrolled.
! .IP \fBmax\-average\-unrolled\-insns\fR 4
  .IX Item "max-average-unrolled-insns"
  The maximum number of instructions biased by probabilities of their execution
  that a loop may have to be unrolled.  If a loop is unrolled,
  this parameter also determines how many times the loop code is unrolled.
! .IP \fBmax\-unroll\-times\fR 4
  .IX Item "max-unroll-times"
  The maximum number of unrollings of a single loop.
! .IP \fBmax\-peeled\-insns\fR 4
  .IX Item "max-peeled-insns"
  The maximum number of instructions that a loop may have to be peeled.
  If a loop is peeled, this parameter also determines how many times
  the loop code is peeled.
! .IP \fBmax\-peel\-times\fR 4
  .IX Item "max-peel-times"
  The maximum number of peelings of a single loop.
! .IP \fBmax\-peel\-branches\fR 4
  .IX Item "max-peel-branches"
  The maximum number of branches on the hot path through the peeled sequence.
! .IP \fBmax\-completely\-peeled\-insns\fR 4
  .IX Item "max-completely-peeled-insns"
  The maximum number of insns of a completely peeled loop.
! .IP \fBmax\-completely\-peel\-times\fR 4
  .IX Item "max-completely-peel-times"
  The maximum number of iterations of a loop to be suitable for complete peeling.
! .IP \fBmax\-completely\-peel\-loop\-nest\-depth\fR 4
  .IX Item "max-completely-peel-loop-nest-depth"
  The maximum depth of a loop nest suitable for complete peeling.
! .IP \fBmax\-unswitch\-insns\fR 4
  .IX Item "max-unswitch-insns"
  The maximum number of insns of an unswitched loop.
! .IP \fBmax\-unswitch\-depth\fR 4
  .IX Item "max-unswitch-depth"
  The maximum depth of a loop nest to be unswitched.
! .IP \fBlim\-expensive\fR 4
  .IX Item "lim-expensive"
  The minimum cost of an expensive expression in the loop invariant motion.
! .IP \fBmin\-loop\-cond\-split\-prob\fR 4
  .IX Item "min-loop-cond-split-prob"
! When FDO profile information is available, \fBmin\-loop\-cond\-split\-prob\fR
! specifies minimum threshold for probability of semi\-invariant condition
  statement to trigger loop split.
! .IP \fBiv\-consider\-all\-candidates\-bound\fR 4
  .IX Item "iv-consider-all-candidates-bound"
  Bound on number of candidates for induction variables, below which
  all candidates are considered for each use in induction variable
  optimizations.  If there are more candidates than this,
  only the most relevant ones are considered to avoid quadratic time complexity.
! .IP \fBiv\-max\-considered\-uses\fR 4
  .IX Item "iv-max-considered-uses"
  The induction variable optimizations give up on loops that contain more
  induction variable uses.
! .IP \fBiv\-always\-prune\-cand\-set\-bound\fR 4
  .IX Item "iv-always-prune-cand-set-bound"
  If the number of candidates in the set is smaller than this value,
  always try to remove unnecessary ivs from the set
  when adding a new one.
! .IP \fBavg\-loop\-niter\fR 4
  .IX Item "avg-loop-niter"
  Average number of iterations of a loop.
! .IP \fBdse\-max\-object\-size\fR 4
  .IX Item "dse-max-object-size"
  Maximum size (in bytes) of objects tracked bytewise by dead store elimination.
  Larger values may result in larger compilation times.
! .IP \fBdse\-max\-alias\-queries\-per\-store\fR 4
  .IX Item "dse-max-alias-queries-per-store"
  Maximum number of queries into the alias oracle per store.
  Larger values result in larger compilation times and may result in more
  removed dead stores.
! .IP \fBscev\-max\-expr\-size\fR 4
  .IX Item "scev-max-expr-size"
  Bound on size of expressions used in the scalar evolutions analyzer.
  Large expressions slow the analyzer.
! .IP \fBscev\-max\-expr\-complexity\fR 4
  .IX Item "scev-max-expr-complexity"
  Bound on the complexity of the expressions in the scalar evolutions analyzer.
  Complex expressions slow the analyzer.
! .IP \fBmax\-tree\-if\-conversion\-phi\-args\fR 4
  .IX Item "max-tree-if-conversion-phi-args"
! Maximum number of arguments in a PHI supported by TREE if conversion
  unless the loop is marked with simd pragma.
! .IP \fBvect\-max\-layout\-candidates\fR 4
  .IX Item "vect-max-layout-candidates"
  The maximum number of possible vector layouts (such as permutations)
! to consider when optimizing to\-be\-vectorized code.
! .IP \fBvect\-max\-version\-for\-alignment\-checks\fR 4
  .IX Item "vect-max-version-for-alignment-checks"
! The maximum number of run\-time checks that can be performed when
  doing loop versioning for alignment in the vectorizer.
! .IP \fBvect\-max\-version\-for\-alias\-checks\fR 4
  .IX Item "vect-max-version-for-alias-checks"
! The maximum number of run\-time checks that can be performed when
  doing loop versioning for alias in the vectorizer.
! .IP \fBvect\-max\-peeling\-for\-alignment\fR 4
  .IX Item "vect-max-peeling-for-alignment"
  The maximum number of loop peels to enhance access alignment
  for vectorizer. Value \-1 means no limit.
! .IP \fBmax\-iterations\-to\-track\fR 4
  .IX Item "max-iterations-to-track"
! The maximum number of iterations of a loop the brute\-force algorithm
  for analysis of the number of iterations of the loop tries to evaluate.
! .IP \fBhot\-bb\-count\-fraction\fR 4
  .IX Item "hot-bb-count-fraction"
  The denominator n of fraction 1/n of the maximal execution count of a
  basic block in the entire program that a basic block needs to at least
  have in order to be considered hot.  The default is 10000, which means
  that a basic block is considered hot if its execution count is greater
  than 1/10000 of the maximal execution count.  0 means that it is never
! considered hot.  Used in non\-LTO mode.
! .IP \fBhot\-bb\-count\-ws\-permille\fR 4
  .IX Item "hot-bb-count-ws-permille"
  The number of most executed permilles, ranging from 0 to 1000, of the
  profiled execution of the entire program to which the execution count
*************** of a basic block must be part of in orde
*** 15338,15345 ****
  default is 990, which means that a basic block is considered hot if
  its execution count contributes to the upper 990 permilles, or 99.0%,
  of the profiled execution of the entire program.  0 means that it is
! never considered hot.  Used in \s-1LTO\s0 mode.
! .IP "\fBhot-bb-frequency-fraction\fR" 4
  .IX Item "hot-bb-frequency-fraction"
  The denominator n of fraction 1/n of the execution frequency of the
  entry block of a function that a basic block of this function needs
--- 15271,15278 ----
  default is 990, which means that a basic block is considered hot if
  its execution count contributes to the upper 990 permilles, or 99.0%,
  of the profiled execution of the entire program.  0 means that it is
! never considered hot.  Used in LTO mode.
! .IP \fBhot\-bb\-frequency\-fraction\fR 4
  .IX Item "hot-bb-frequency-fraction"
  The denominator n of fraction 1/n of the execution frequency of the
  entry block of a function that a basic block of this function needs
*************** to at least have in order to be consider
*** 15347,15353 ****
  which means that a basic block is considered hot in a function if it
  is executed more frequently than 1/1000 of the frequency of the entry
  block of the function.  0 means that it is never considered hot.
! .IP "\fBunlikely-bb-count-fraction\fR" 4
  .IX Item "unlikely-bb-count-fraction"
  The denominator n of fraction 1/n of the number of profiled runs of
  the entire program below which the execution count of a basic block
--- 15280,15286 ----
  which means that a basic block is considered hot in a function if it
  is executed more frequently than 1/1000 of the frequency of the entry
  block of the function.  0 means that it is never considered hot.
! .IP \fBunlikely\-bb\-count\-fraction\fR 4
  .IX Item "unlikely-bb-count-fraction"
  The denominator n of fraction 1/n of the number of profiled runs of
  the entire program below which the execution count of a basic block
*************** must be in order for the basic block to
*** 15355,15361 ****
  The default is 20, which means that a basic block is considered unlikely
  executed if it is executed in fewer than 1/20, or 5%, of the runs of
  the program.  0 means that it is always considered unlikely executed.
! .IP "\fBmax-predicted-iterations\fR" 4
  .IX Item "max-predicted-iterations"
  The maximum number of loop iterations we predict statically.  This is useful
  in cases where a function contains a single loop with known bound and
--- 15288,15294 ----
  The default is 20, which means that a basic block is considered unlikely
  executed if it is executed in fewer than 1/20, or 5%, of the runs of
  the program.  0 means that it is always considered unlikely executed.
! .IP \fBmax\-predicted\-iterations\fR 4
  .IX Item "max-predicted-iterations"
  The maximum number of loop iterations we predict statically.  This is useful
  in cases where a function contains a single loop with known bound and
*************** another loop with unknown bound.
*** 15363,15619 ****
  The known number of iterations is predicted correctly, while
  the unknown number of iterations average to roughly 10.  This means that the
  loop without bounds appears artificially cold relative to the other one.
! .IP "\fBbuiltin-expect-probability\fR" 4
  .IX Item "builtin-expect-probability"
  Control the probability of the expression having the specified value. This
  parameter takes a percentage (i.e. 0 ... 100) as input.
! .IP "\fBbuiltin-string-cmp-inline-length\fR" 4
  .IX Item "builtin-string-cmp-inline-length"
  The maximum length of a constant string for a builtin string cmp call
  eligible for inlining.
! .IP "\fBalign-threshold\fR" 4
  .IX Item "align-threshold"
  Select fraction of the maximal frequency of executions of a basic block in
  a function to align the basic block.
! .IP "\fBalign-loop-iterations\fR" 4
  .IX Item "align-loop-iterations"
  A loop expected to iterate at least the selected number of iterations is
  aligned.
! .IP "\fBtracer-dynamic-coverage\fR" 4
  .IX Item "tracer-dynamic-coverage"
  .PD 0
! .IP "\fBtracer-dynamic-coverage-feedback\fR" 4
  .IX Item "tracer-dynamic-coverage-feedback"
  .PD
  This value is used to limit superblock formation once the given percentage of
  executed instructions is covered.  This limits unnecessary code size
  expansion.
  .Sp
! The \fBtracer-dynamic-coverage-feedback\fR parameter
  is used only when profile
  feedback is available.  The real profiles (as opposed to statically estimated
  ones) are much less balanced allowing the threshold to be larger value.
! .IP "\fBtracer-max-code-growth\fR" 4
  .IX Item "tracer-max-code-growth"
  Stop tail duplication once code growth has reached given percentage.  This is
  a rather artificial limit, as most of the duplicates are eliminated later in
  cross jumping, so it may be set to much higher values than is the desired code
  growth.
! .IP "\fBtracer-min-branch-ratio\fR" 4
  .IX Item "tracer-min-branch-ratio"
  Stop reverse growth when the reverse probability of best edge is less than this
  threshold (in percent).
! .IP "\fBtracer-min-branch-probability\fR" 4
  .IX Item "tracer-min-branch-probability"
  .PD 0
! .IP "\fBtracer-min-branch-probability-feedback\fR" 4
  .IX Item "tracer-min-branch-probability-feedback"
  .PD
  Stop forward growth if the best edge has probability lower than this
  threshold.
  .Sp
! Similarly to \fBtracer-dynamic-coverage\fR two parameters are
! provided.  \fBtracer-min-branch-probability-feedback\fR is used for
! compilation with profile feedback and \fBtracer-min-branch-probability\fR
  compilation without.  The value for compilation with profile feedback
  needs to be more conservative (higher) in order to make tracer
  effective.
! .IP "\fBstack-clash-protection-guard-size\fR" 4
  .IX Item "stack-clash-protection-guard-size"
  Specify the size of the operating system provided stack guard as
  2 raised to \fInum\fR bytes.  Higher values may reduce the
  number of explicit probes, but a value larger than the operating system
  provided guard will leave code vulnerable to stack clash style attacks.
! .IP "\fBstack-clash-protection-probe-interval\fR" 4
  .IX Item "stack-clash-protection-probe-interval"
  Stack clash protection involves probing stack space as it is allocated.  This
  param controls the maximum distance between probes into the stack as 2 raised
  to \fInum\fR bytes.  Higher values may reduce the number of explicit probes, but a value
  larger than the operating system provided guard will leave code vulnerable to
  stack clash style attacks.
! .IP "\fBmax-cse-path-length\fR" 4
  .IX Item "max-cse-path-length"
! The maximum number of basic blocks on path that \s-1CSE\s0 considers.
! .IP "\fBmax-cse-insns\fR" 4
  .IX Item "max-cse-insns"
! The maximum number of instructions \s-1CSE\s0 processes before flushing.
! .IP "\fBggc-min-expand\fR" 4
  .IX Item "ggc-min-expand"
! \&\s-1GCC\s0 uses a garbage collector to manage its own memory allocation.  This
  parameter specifies the minimum percentage by which the garbage
! collector's heap should be allowed to expand between collections.
  Tuning this may improve compilation speed; it has no effect on code
  generation.
  .Sp
! The default is 30% + 70% * (\s-1RAM/1GB\s0) with an upper bound of 100% when
! \&\s-1RAM\s0 >= 1GB.  If \f(CW\*(C`getrlimit\*(C'\fR is available, the notion of \*(L"\s-1RAM\*(R"\s0 is
! the smallest of actual \s-1RAM\s0 and \f(CW\*(C`RLIMIT_DATA\*(C'\fR or \f(CW\*(C`RLIMIT_AS\*(C'\fR.  If
! \&\s-1GCC\s0 is not able to calculate \s-1RAM\s0 on a particular platform, the lower
  bound of 30% is used.  Setting this parameter and
! \&\fBggc-min-heapsize\fR to zero causes a full collection to occur at
  every opportunity.  This is extremely slow, but can be useful for
  debugging.
! .IP "\fBggc-min-heapsize\fR" 4
  .IX Item "ggc-min-heapsize"
! Minimum size of the garbage collector's heap before it begins bothering
  to collect garbage.  The first collection occurs after the heap expands
! by \fBggc-min-expand\fR% beyond \fBggc-min-heapsize\fR.  Again,
  tuning this may improve compilation speed, and has no effect on code
  generation.
  .Sp
! The default is the smaller of \s-1RAM/8, RLIMIT_RSS,\s0 or a limit that
! tries to ensure that \s-1RLIMIT_DATA\s0 or \s-1RLIMIT_AS\s0 are not exceeded, but
  with a lower bound of 4096 (four megabytes) and an upper bound of
! 131072 (128 megabytes).  If \s-1GCC\s0 is not able to calculate \s-1RAM\s0 on a
  particular platform, the lower bound is used.  Setting this parameter
  very large effectively disables garbage collection.  Setting this
! parameter and \fBggc-min-expand\fR to zero causes a full collection
  to occur at every opportunity.
! .IP "\fBmax-reload-search-insns\fR" 4
  .IX Item "max-reload-search-insns"
  The maximum number of instruction reload should look backward for equivalent
  register.  Increasing values mean more aggressive optimization, making the
  compilation time increase with probably slightly better performance.
! .IP "\fBmax-cselib-memory-locations\fR" 4
  .IX Item "max-cselib-memory-locations"
  The maximum number of memory locations cselib should take into account.
  Increasing values mean more aggressive optimization, making the compilation time
  increase with probably slightly better performance.
! .IP "\fBmax-sched-ready-insns\fR" 4
  .IX Item "max-sched-ready-insns"
  The maximum number of instructions ready to be issued the scheduler should
  consider at any given time during the first scheduling pass.  Increasing
  values mean more thorough searches, making the compilation time increase
  with probably little benefit.
! .IP "\fBmax-sched-region-blocks\fR" 4
  .IX Item "max-sched-region-blocks"
  The maximum number of blocks in a region to be considered for
  interblock scheduling.
! .IP "\fBmax-pipeline-region-blocks\fR" 4
  .IX Item "max-pipeline-region-blocks"
  The maximum number of blocks in a region to be considered for
  pipelining in the selective scheduler.
! .IP "\fBmax-sched-region-insns\fR" 4
  .IX Item "max-sched-region-insns"
  The maximum number of insns in a region to be considered for
  interblock scheduling.
! .IP "\fBmax-pipeline-region-insns\fR" 4
  .IX Item "max-pipeline-region-insns"
  The maximum number of insns in a region to be considered for
  pipelining in the selective scheduler.
! .IP "\fBmin-spec-prob\fR" 4
  .IX Item "min-spec-prob"
  The minimum probability (in percents) of reaching a source block
  for interblock speculative scheduling.
! .IP "\fBmax-sched-extend-regions-iters\fR" 4
  .IX Item "max-sched-extend-regions-iters"
! The maximum number of iterations through \s-1CFG\s0 to extend regions.
  A value of 0 disables region extensions.
! .IP "\fBmax-sched-insn-conflict-delay\fR" 4
  .IX Item "max-sched-insn-conflict-delay"
  The maximum conflict delay for an insn to be considered for speculative motion.
! .IP "\fBsched-spec-prob-cutoff\fR" 4
  .IX Item "sched-spec-prob-cutoff"
  The minimal probability of speculation success (in percents), so that
  speculative insns are scheduled.
! .IP "\fBsched-state-edge-prob-cutoff\fR" 4
  .IX Item "sched-state-edge-prob-cutoff"
  The minimum probability an edge must have for the scheduler to save its
  state across it.
! .IP "\fBsched-mem-true-dep-cost\fR" 4
  .IX Item "sched-mem-true-dep-cost"
! Minimal distance (in \s-1CPU\s0 cycles) between store and load targeting same
  memory locations.
! .IP "\fBselsched-max-lookahead\fR" 4
  .IX Item "selsched-max-lookahead"
  The maximum size of the lookahead window of selective scheduling.  It is a
  depth of search for available instructions.
! .IP "\fBselsched-max-sched-times\fR" 4
  .IX Item "selsched-max-sched-times"
  The maximum number of times that an instruction is scheduled during
  selective scheduling.  This is the limit on the number of iterations
  through which the instruction may be pipelined.
! .IP "\fBselsched-insns-to-rename\fR" 4
  .IX Item "selsched-insns-to-rename"
  The maximum number of best instructions in the ready list that are considered
  for renaming in the selective scheduler.
! .IP "\fBsms-min-sc\fR" 4
  .IX Item "sms-min-sc"
  The minimum value of stage count that swing modulo scheduler
  generates.
! .IP "\fBmax-last-value-rtl\fR" 4
  .IX Item "max-last-value-rtl"
  The maximum size measured as number of RTLs that can be recorded in an expression
  in combiner for a pseudo register as last known value of that register.
! .IP "\fBmax-combine-insns\fR" 4
  .IX Item "max-combine-insns"
! The maximum number of instructions the \s-1RTL\s0 combiner tries to combine.
! .IP "\fBmax-combine-search-insns\fR" 4
  .IX Item "max-combine-search-insns"
! The maximum number of instructions that the \s-1RTL\s0 combiner searches in order
  to find the next use of a given register definition.  If this limit is reached
  without finding such a use, the combiner will stop trying to optimize the
  definition.
  .Sp
  Currently this limit only applies after certain successful combination
  attempts, but it could be extended to other cases in future.
! .IP "\fBinteger-share-limit\fR" 4
  .IX Item "integer-share-limit"
  Small integer constants can use a shared data structure, reducing the
! compiler's memory usage and increasing its speed.  This sets the maximum
  value of a shared integer constant.
! .IP "\fBssp-buffer-size\fR" 4
  .IX Item "ssp-buffer-size"
  The minimum size of buffers (i.e. arrays) that receive stack smashing
  protection when \fB\-fstack\-protector\fR is used.
! .IP "\fBmin-size-for-stack-sharing\fR" 4
  .IX Item "min-size-for-stack-sharing"
  The minimum size of variables taking part in stack slot sharing when not
  optimizing.
! .IP "\fBmax-jump-thread-duplication-stmts\fR" 4
  .IX Item "max-jump-thread-duplication-stmts"
  Maximum number of statements allowed in a block that needs to be
  duplicated when threading jumps.
! .IP "\fBmax-jump-thread-paths\fR" 4
  .IX Item "max-jump-thread-paths"
  The maximum number of paths to consider when searching for jump threading
  opportunities.  When arriving at a block, incoming edges are only considered
  if the number of paths to be searched so far multiplied by the number of
  incoming edges does not exhaust the specified maximum number of paths to
  consider.
! .IP "\fBmax-fields-for-field-sensitive\fR" 4
  .IX Item "max-fields-for-field-sensitive"
  Maximum number of fields in a structure treated in
  a field sensitive manner during pointer analysis.
! .IP "\fBprefetch-latency\fR" 4
  .IX Item "prefetch-latency"
  Estimate on average number of instructions that are executed before
  prefetch finishes.  The distance prefetched ahead is proportional
  to this constant.  Increasing this number may also lead to less
! streams being prefetched (see \fBsimultaneous-prefetches\fR).
! .IP "\fBsimultaneous-prefetches\fR" 4
  .IX Item "simultaneous-prefetches"
  Maximum number of prefetches that can run at the same time.
! .IP "\fBl1\-cache\-line\-size\fR" 4
  .IX Item "l1-cache-line-size"
  The size of cache line in L1 data cache, in bytes.
! .IP "\fBl1\-cache\-size\fR" 4
  .IX Item "l1-cache-size"
  The size of L1 data cache, in kilobytes.
! .IP "\fBl2\-cache\-size\fR" 4
  .IX Item "l2-cache-size"
  The size of L2 data cache, in kilobytes.
! .IP "\fBprefetch-dynamic-strides\fR" 4
  .IX Item "prefetch-dynamic-strides"
  Whether the loop array prefetch pass should issue software prefetch hints
! for strides that are non-constant.  In some cases this may be
! beneficial, though the fact the stride is non-constant may make it
  hard to predict when there is clear benefit to issuing these hints.
  .Sp
! Set to 1 if the prefetch hints should be issued for non-constant
  strides.  Set to 0 if prefetch hints should be issued only for strides that
! are known to be constant and below \fBprefetch-minimum-stride\fR.
! .IP "\fBprefetch-minimum-stride\fR" 4
  .IX Item "prefetch-minimum-stride"
  Minimum constant stride, in bytes, to start using prefetch hints for.  If
  the stride is less than this threshold, prefetch hints will not be issued.
--- 15296,15552 ----
  The known number of iterations is predicted correctly, while
  the unknown number of iterations average to roughly 10.  This means that the
  loop without bounds appears artificially cold relative to the other one.
! .IP \fBbuiltin\-expect\-probability\fR 4
  .IX Item "builtin-expect-probability"
  Control the probability of the expression having the specified value. This
  parameter takes a percentage (i.e. 0 ... 100) as input.
! .IP \fBbuiltin\-string\-cmp\-inline\-length\fR 4
  .IX Item "builtin-string-cmp-inline-length"
  The maximum length of a constant string for a builtin string cmp call
  eligible for inlining.
! .IP \fBalign\-threshold\fR 4
  .IX Item "align-threshold"
  Select fraction of the maximal frequency of executions of a basic block in
  a function to align the basic block.
! .IP \fBalign\-loop\-iterations\fR 4
  .IX Item "align-loop-iterations"
  A loop expected to iterate at least the selected number of iterations is
  aligned.
! .IP \fBtracer\-dynamic\-coverage\fR 4
  .IX Item "tracer-dynamic-coverage"
  .PD 0
! .IP \fBtracer\-dynamic\-coverage\-feedback\fR 4
  .IX Item "tracer-dynamic-coverage-feedback"
  .PD
  This value is used to limit superblock formation once the given percentage of
  executed instructions is covered.  This limits unnecessary code size
  expansion.
  .Sp
! The \fBtracer\-dynamic\-coverage\-feedback\fR parameter
  is used only when profile
  feedback is available.  The real profiles (as opposed to statically estimated
  ones) are much less balanced allowing the threshold to be larger value.
! .IP \fBtracer\-max\-code\-growth\fR 4
  .IX Item "tracer-max-code-growth"
  Stop tail duplication once code growth has reached given percentage.  This is
  a rather artificial limit, as most of the duplicates are eliminated later in
  cross jumping, so it may be set to much higher values than is the desired code
  growth.
! .IP \fBtracer\-min\-branch\-ratio\fR 4
  .IX Item "tracer-min-branch-ratio"
  Stop reverse growth when the reverse probability of best edge is less than this
  threshold (in percent).
! .IP \fBtracer\-min\-branch\-probability\fR 4
  .IX Item "tracer-min-branch-probability"
  .PD 0
! .IP \fBtracer\-min\-branch\-probability\-feedback\fR 4
  .IX Item "tracer-min-branch-probability-feedback"
  .PD
  Stop forward growth if the best edge has probability lower than this
  threshold.
  .Sp
! Similarly to \fBtracer\-dynamic\-coverage\fR two parameters are
! provided.  \fBtracer\-min\-branch\-probability\-feedback\fR is used for
! compilation with profile feedback and \fBtracer\-min\-branch\-probability\fR
  compilation without.  The value for compilation with profile feedback
  needs to be more conservative (higher) in order to make tracer
  effective.
! .IP \fBstack\-clash\-protection\-guard\-size\fR 4
  .IX Item "stack-clash-protection-guard-size"
  Specify the size of the operating system provided stack guard as
  2 raised to \fInum\fR bytes.  Higher values may reduce the
  number of explicit probes, but a value larger than the operating system
  provided guard will leave code vulnerable to stack clash style attacks.
! .IP \fBstack\-clash\-protection\-probe\-interval\fR 4
  .IX Item "stack-clash-protection-probe-interval"
  Stack clash protection involves probing stack space as it is allocated.  This
  param controls the maximum distance between probes into the stack as 2 raised
  to \fInum\fR bytes.  Higher values may reduce the number of explicit probes, but a value
  larger than the operating system provided guard will leave code vulnerable to
  stack clash style attacks.
! .IP \fBmax\-cse\-path\-length\fR 4
  .IX Item "max-cse-path-length"
! The maximum number of basic blocks on path that CSE considers.
! .IP \fBmax\-cse\-insns\fR 4
  .IX Item "max-cse-insns"
! The maximum number of instructions CSE processes before flushing.
! .IP \fBggc\-min\-expand\fR 4
  .IX Item "ggc-min-expand"
! GCC uses a garbage collector to manage its own memory allocation.  This
  parameter specifies the minimum percentage by which the garbage
! collector\*(Aqs heap should be allowed to expand between collections.
  Tuning this may improve compilation speed; it has no effect on code
  generation.
  .Sp
! The default is 30% + 70% * (RAM/1GB) with an upper bound of 100% when
! RAM >= 1GB.  If \f(CW\*(C`getrlimit\*(C'\fR is available, the notion of "RAM" is
! the smallest of actual RAM and \f(CW\*(C`RLIMIT_DATA\*(C'\fR or \f(CW\*(C`RLIMIT_AS\*(C'\fR.  If
! GCC is not able to calculate RAM on a particular platform, the lower
  bound of 30% is used.  Setting this parameter and
! \&\fBggc\-min\-heapsize\fR to zero causes a full collection to occur at
  every opportunity.  This is extremely slow, but can be useful for
  debugging.
! .IP \fBggc\-min\-heapsize\fR 4
  .IX Item "ggc-min-heapsize"
! Minimum size of the garbage collector\*(Aqs heap before it begins bothering
  to collect garbage.  The first collection occurs after the heap expands
! by \fBggc\-min\-expand\fR% beyond \fBggc\-min\-heapsize\fR.  Again,
  tuning this may improve compilation speed, and has no effect on code
  generation.
  .Sp
! The default is the smaller of RAM/8, RLIMIT_RSS, or a limit that
! tries to ensure that RLIMIT_DATA or RLIMIT_AS are not exceeded, but
  with a lower bound of 4096 (four megabytes) and an upper bound of
! 131072 (128 megabytes).  If GCC is not able to calculate RAM on a
  particular platform, the lower bound is used.  Setting this parameter
  very large effectively disables garbage collection.  Setting this
! parameter and \fBggc\-min\-expand\fR to zero causes a full collection
  to occur at every opportunity.
! .IP \fBmax\-reload\-search\-insns\fR 4
  .IX Item "max-reload-search-insns"
  The maximum number of instruction reload should look backward for equivalent
  register.  Increasing values mean more aggressive optimization, making the
  compilation time increase with probably slightly better performance.
! .IP \fBmax\-cselib\-memory\-locations\fR 4
  .IX Item "max-cselib-memory-locations"
  The maximum number of memory locations cselib should take into account.
  Increasing values mean more aggressive optimization, making the compilation time
  increase with probably slightly better performance.
! .IP \fBmax\-sched\-ready\-insns\fR 4
  .IX Item "max-sched-ready-insns"
  The maximum number of instructions ready to be issued the scheduler should
  consider at any given time during the first scheduling pass.  Increasing
  values mean more thorough searches, making the compilation time increase
  with probably little benefit.
! .IP \fBmax\-sched\-region\-blocks\fR 4
  .IX Item "max-sched-region-blocks"
  The maximum number of blocks in a region to be considered for
  interblock scheduling.
! .IP \fBmax\-pipeline\-region\-blocks\fR 4
  .IX Item "max-pipeline-region-blocks"
  The maximum number of blocks in a region to be considered for
  pipelining in the selective scheduler.
! .IP \fBmax\-sched\-region\-insns\fR 4
  .IX Item "max-sched-region-insns"
  The maximum number of insns in a region to be considered for
  interblock scheduling.
! .IP \fBmax\-pipeline\-region\-insns\fR 4
  .IX Item "max-pipeline-region-insns"
  The maximum number of insns in a region to be considered for
  pipelining in the selective scheduler.
! .IP \fBmin\-spec\-prob\fR 4
  .IX Item "min-spec-prob"
  The minimum probability (in percents) of reaching a source block
  for interblock speculative scheduling.
! .IP \fBmax\-sched\-extend\-regions\-iters\fR 4
  .IX Item "max-sched-extend-regions-iters"
! The maximum number of iterations through CFG to extend regions.
  A value of 0 disables region extensions.
! .IP \fBmax\-sched\-insn\-conflict\-delay\fR 4
  .IX Item "max-sched-insn-conflict-delay"
  The maximum conflict delay for an insn to be considered for speculative motion.
! .IP \fBsched\-spec\-prob\-cutoff\fR 4
  .IX Item "sched-spec-prob-cutoff"
  The minimal probability of speculation success (in percents), so that
  speculative insns are scheduled.
! .IP \fBsched\-state\-edge\-prob\-cutoff\fR 4
  .IX Item "sched-state-edge-prob-cutoff"
  The minimum probability an edge must have for the scheduler to save its
  state across it.
! .IP \fBsched\-mem\-true\-dep\-cost\fR 4
  .IX Item "sched-mem-true-dep-cost"
! Minimal distance (in CPU cycles) between store and load targeting same
  memory locations.
! .IP \fBselsched\-max\-lookahead\fR 4
  .IX Item "selsched-max-lookahead"
  The maximum size of the lookahead window of selective scheduling.  It is a
  depth of search for available instructions.
! .IP \fBselsched\-max\-sched\-times\fR 4
  .IX Item "selsched-max-sched-times"
  The maximum number of times that an instruction is scheduled during
  selective scheduling.  This is the limit on the number of iterations
  through which the instruction may be pipelined.
! .IP \fBselsched\-insns\-to\-rename\fR 4
  .IX Item "selsched-insns-to-rename"
  The maximum number of best instructions in the ready list that are considered
  for renaming in the selective scheduler.
! .IP \fBsms\-min\-sc\fR 4
  .IX Item "sms-min-sc"
  The minimum value of stage count that swing modulo scheduler
  generates.
! .IP \fBmax\-last\-value\-rtl\fR 4
  .IX Item "max-last-value-rtl"
  The maximum size measured as number of RTLs that can be recorded in an expression
  in combiner for a pseudo register as last known value of that register.
! .IP \fBmax\-combine\-insns\fR 4
  .IX Item "max-combine-insns"
! The maximum number of instructions the RTL combiner tries to combine.
! .IP \fBmax\-combine\-search\-insns\fR 4
  .IX Item "max-combine-search-insns"
! The maximum number of instructions that the RTL combiner searches in order
  to find the next use of a given register definition.  If this limit is reached
  without finding such a use, the combiner will stop trying to optimize the
  definition.
  .Sp
  Currently this limit only applies after certain successful combination
  attempts, but it could be extended to other cases in future.
! .IP \fBinteger\-share\-limit\fR 4
  .IX Item "integer-share-limit"
  Small integer constants can use a shared data structure, reducing the
! compiler\*(Aqs memory usage and increasing its speed.  This sets the maximum
  value of a shared integer constant.
! .IP \fBssp\-buffer\-size\fR 4
  .IX Item "ssp-buffer-size"
  The minimum size of buffers (i.e. arrays) that receive stack smashing
  protection when \fB\-fstack\-protector\fR is used.
! .IP \fBmin\-size\-for\-stack\-sharing\fR 4
  .IX Item "min-size-for-stack-sharing"
  The minimum size of variables taking part in stack slot sharing when not
  optimizing.
! .IP \fBmax\-jump\-thread\-duplication\-stmts\fR 4
  .IX Item "max-jump-thread-duplication-stmts"
  Maximum number of statements allowed in a block that needs to be
  duplicated when threading jumps.
! .IP \fBmax\-jump\-thread\-paths\fR 4
  .IX Item "max-jump-thread-paths"
  The maximum number of paths to consider when searching for jump threading
  opportunities.  When arriving at a block, incoming edges are only considered
  if the number of paths to be searched so far multiplied by the number of
  incoming edges does not exhaust the specified maximum number of paths to
  consider.
! .IP \fBmax\-fields\-for\-field\-sensitive\fR 4
  .IX Item "max-fields-for-field-sensitive"
  Maximum number of fields in a structure treated in
  a field sensitive manner during pointer analysis.
! .IP \fBprefetch\-latency\fR 4
  .IX Item "prefetch-latency"
  Estimate on average number of instructions that are executed before
  prefetch finishes.  The distance prefetched ahead is proportional
  to this constant.  Increasing this number may also lead to less
! streams being prefetched (see \fBsimultaneous\-prefetches\fR).
! .IP \fBsimultaneous\-prefetches\fR 4
  .IX Item "simultaneous-prefetches"
  Maximum number of prefetches that can run at the same time.
! .IP \fBl1\-cache\-line\-size\fR 4
  .IX Item "l1-cache-line-size"
  The size of cache line in L1 data cache, in bytes.
! .IP \fBl1\-cache\-size\fR 4
  .IX Item "l1-cache-size"
  The size of L1 data cache, in kilobytes.
! .IP \fBl2\-cache\-size\fR 4
  .IX Item "l2-cache-size"
  The size of L2 data cache, in kilobytes.
! .IP \fBprefetch\-dynamic\-strides\fR 4
  .IX Item "prefetch-dynamic-strides"
  Whether the loop array prefetch pass should issue software prefetch hints
! for strides that are non\-constant.  In some cases this may be
! beneficial, though the fact the stride is non\-constant may make it
  hard to predict when there is clear benefit to issuing these hints.
  .Sp
! Set to 1 if the prefetch hints should be issued for non\-constant
  strides.  Set to 0 if prefetch hints should be issued only for strides that
! are known to be constant and below \fBprefetch\-minimum\-stride\fR.
! .IP \fBprefetch\-minimum\-stride\fR 4
  .IX Item "prefetch-minimum-stride"
  Minimum constant stride, in bytes, to start using prefetch hints for.  If
  the stride is less than this threshold, prefetch hints will not be issued.
*************** the software prefetchers.  If the hardwa
*** 15624,15644 ****
  stride they can handle, it should be used here to improve the use of
  software prefetchers.
  .Sp
! A value of \-1 means we don't have a threshold and therefore
  prefetch hints can be issued for any constant stride.
  .Sp
  This setting is only useful for strides that are known and constant.
! .IP "\fBdestructive-interference-size\fR" 4
  .IX Item "destructive-interference-size"
  .PD 0
! .IP "\fBconstructive-interference-size\fR" 4
  .IX Item "constructive-interference-size"
  .PD
! The values for the \*(C+17 variables
  \&\f(CW\*(C`std::hardware_destructive_interference_size\*(C'\fR and
  \&\f(CW\*(C`std::hardware_constructive_interference_size\*(C'\fR.  The destructive
  interference size is the minimum recommended offset between two
! independent concurrently-accessed objects; the constructive
  interference size is the maximum recommended size of contiguous memory
  accessed together.  Typically both will be the size of an L1 cache
  line for the target, in bytes.  For a generic target covering a range of L1
--- 15557,15577 ----
  stride they can handle, it should be used here to improve the use of
  software prefetchers.
  .Sp
! A value of \-1 means we don\*(Aqt have a threshold and therefore
  prefetch hints can be issued for any constant stride.
  .Sp
  This setting is only useful for strides that are known and constant.
! .IP \fBdestructive\-interference\-size\fR 4
  .IX Item "destructive-interference-size"
  .PD 0
! .IP \fBconstructive\-interference\-size\fR 4
  .IX Item "constructive-interference-size"
  .PD
! The values for the C++17 variables
  \&\f(CW\*(C`std::hardware_destructive_interference_size\*(C'\fR and
  \&\f(CW\*(C`std::hardware_constructive_interference_size\*(C'\fR.  The destructive
  interference size is the minimum recommended offset between two
! independent concurrently\-accessed objects; the constructive
  interference size is the maximum recommended size of contiguous memory
  accessed together.  Typically both will be the size of an L1 cache
  line for the target, in bytes.  For a generic target covering a range of L1
*************** the small end of the range and the destr
*** 15647,15655 ****
  end.
  .Sp
  The destructive interference size is intended to be used for layout,
! and thus has \s-1ABI\s0 impact.  The default value is not expected to be
  stable, and on some targets varies with \fB\-mtune\fR, so use of
! this variable in a context where \s-1ABI\s0 stability is important, such as
  the public interface of a library, is strongly discouraged; if it is
  used in that context, users can stabilize the value using this
  option.
--- 15580,15588 ----
  end.
  .Sp
  The destructive interference size is intended to be used for layout,
! and thus has ABI impact.  The default value is not expected to be
  stable, and on some targets varies with \fB\-mtune\fR, so use of
! this variable in a context where ABI stability is important, such as
  the public interface of a library, is strongly discouraged; if it is
  used in that context, users can stabilize the value using this
  option.
*************** typically only used in a \fBstatic_asser
*** 15659,15694 ****
  fits within a cache line.
  .Sp
  See also \fB\-Winterference\-size\fR.
! .IP "\fBloop-interchange-max-num-stmts\fR" 4
  .IX Item "loop-interchange-max-num-stmts"
  The maximum number of stmts in a loop to be interchanged.
! .IP "\fBloop-interchange-stride-ratio\fR" 4
  .IX Item "loop-interchange-stride-ratio"
  The minimum ratio between stride of two loops for interchange to be profitable.
! .IP "\fBmin-insn-to-prefetch-ratio\fR" 4
  .IX Item "min-insn-to-prefetch-ratio"
  The minimum ratio between the number of instructions and the
  number of prefetches to enable prefetching in a loop.
! .IP "\fBprefetch-min-insn-to-mem-ratio\fR" 4
  .IX Item "prefetch-min-insn-to-mem-ratio"
  The minimum ratio between the number of instructions and the
  number of memory references to enable prefetching in a loop.
! .IP "\fBuse-canonical-types\fR" 4
  .IX Item "use-canonical-types"
! Whether the compiler should use the \*(L"canonical\*(R" type system.
  Should always be 1, which uses a more efficient internal
! mechanism for comparing types in \*(C+ and Objective\-\*(C+.  However, if
  bugs in the canonical type system are causing compilation failures,
  set this value to 0 to disable canonical types.
! .IP "\fBswitch-conversion-max-branch-ratio\fR" 4
  .IX Item "switch-conversion-max-branch-ratio"
  Switch initialization conversion refuses to create arrays that are
! bigger than \fBswitch-conversion-max-branch-ratio\fR times the number of
  branches in the switch.
! .IP "\fBswitch-lower-slow-alg-max-cases\fR" 4
  .IX Item "switch-lower-slow-alg-max-cases"
  Maximum number of cases for slow switch lowering algorithms to be used.
! .IP "\fBmax-partial-antic-length\fR" 4
  .IX Item "max-partial-antic-length"
  Maximum length of the partial antic set computed during the tree
  partial redundancy elimination optimization (\fB\-ftree\-pre\fR) when
--- 15592,15627 ----
  fits within a cache line.
  .Sp
  See also \fB\-Winterference\-size\fR.
! .IP \fBloop\-interchange\-max\-num\-stmts\fR 4
  .IX Item "loop-interchange-max-num-stmts"
  The maximum number of stmts in a loop to be interchanged.
! .IP \fBloop\-interchange\-stride\-ratio\fR 4
  .IX Item "loop-interchange-stride-ratio"
  The minimum ratio between stride of two loops for interchange to be profitable.
! .IP \fBmin\-insn\-to\-prefetch\-ratio\fR 4
  .IX Item "min-insn-to-prefetch-ratio"
  The minimum ratio between the number of instructions and the
  number of prefetches to enable prefetching in a loop.
! .IP \fBprefetch\-min\-insn\-to\-mem\-ratio\fR 4
  .IX Item "prefetch-min-insn-to-mem-ratio"
  The minimum ratio between the number of instructions and the
  number of memory references to enable prefetching in a loop.
! .IP \fBuse\-canonical\-types\fR 4
  .IX Item "use-canonical-types"
! Whether the compiler should use the "canonical" type system.
  Should always be 1, which uses a more efficient internal
! mechanism for comparing types in C++ and Objective\-C++.  However, if
  bugs in the canonical type system are causing compilation failures,
  set this value to 0 to disable canonical types.
! .IP \fBswitch\-conversion\-max\-branch\-ratio\fR 4
  .IX Item "switch-conversion-max-branch-ratio"
  Switch initialization conversion refuses to create arrays that are
! bigger than \fBswitch\-conversion\-max\-branch\-ratio\fR times the number of
  branches in the switch.
! .IP \fBswitch\-lower\-slow\-alg\-max\-cases\fR 4
  .IX Item "switch-lower-slow-alg-max-cases"
  Maximum number of cases for slow switch lowering algorithms to be used.
! .IP \fBmax\-partial\-antic\-length\fR 4
  .IX Item "max-partial-antic-length"
  Maximum length of the partial antic set computed during the tree
  partial redundancy elimination optimization (\fB\-ftree\-pre\fR) when
*************** consuming all of the memory available on
*** 15698,15771 ****
  parameter sets a limit on the length of the sets that are computed,
  which prevents the runaway behavior.  Setting a value of 0 for
  this parameter allows an unlimited set length.
! .IP "\fBrpo-vn-max-loop-depth\fR" 4
  .IX Item "rpo-vn-max-loop-depth"
! Maximum loop depth that is value-numbered optimistically.
  When the limit hits the innermost
! \&\fIrpo-vn-max-loop-depth\fR loops and the outermost loop in the
! loop nest are value-numbered optimistically and the remaining ones not.
! .IP "\fBsccvn-max-alias-queries-per-access\fR" 4
  .IX Item "sccvn-max-alias-queries-per-access"
! Maximum number of alias-oracle queries we perform when looking for
  redundancies for loads and stores.  If this limit is hit the search
  is aborted and the load or store is not considered redundant.  The
  number of queries is algorithmically limited to the number of
  stores on all paths from the load to the function entry.
! .IP "\fBira-max-loops-num\fR" 4
  .IX Item "ira-max-loops-num"
! \&\s-1IRA\s0 uses regional register allocation by default.  If a function
  contains more loops than the number given by this parameter, only at most
! the given number of the most frequently-executed loops form regions
  for regional register allocation.
! .IP "\fBira-max-conflict-table-size\fR" 4
  .IX Item "ira-max-conflict-table-size"
! Although \s-1IRA\s0 uses a sophisticated algorithm to compress the conflict
  table, the table can still require excessive amounts of memory for
  huge functions.  If the conflict table for a function could be more
! than the size in \s-1MB\s0 given by this parameter, the register allocator
! instead uses a faster, simpler, and lower-quality
! algorithm that does not require building a pseudo-register conflict table.
! .IP "\fBira-loop-reserved-regs\fR" 4
  .IX Item "ira-loop-reserved-regs"
! \&\s-1IRA\s0 can be used to evaluate more accurate register pressure in loops
  for decisions to move loop invariants (see \fB\-O3\fR).  The number
  of available registers reserved for some other purposes is given
  by this parameter.  Default of the parameter
  is the best found from numerous experiments.
! .IP "\fBira-consider-dup-in-all-alts\fR" 4
  .IX Item "ira-consider-dup-in-all-alts"
! Make \s-1IRA\s0 to consider matching constraint (duplicated operand number)
  heavily in all available alternatives for preferred register class.
! If it is set as zero, it means \s-1IRA\s0 only respects the matching
! constraint when it's in the only available alternative with an
! appropriate register class.  Otherwise, it means \s-1IRA\s0 will check all
  available alternatives for preferred register class even if it has
  found some choice with an appropriate register class and respect the
  found qualified matching constraint.
! .IP "\fBira-simple-lra-insn-threshold\fR" 4
  .IX Item "ira-simple-lra-insn-threshold"
! Approximate function insn number in 1K units triggering simple local \s-1RA.\s0
! .IP "\fBlra-inheritance-ebb-probability-cutoff\fR" 4
  .IX Item "lra-inheritance-ebb-probability-cutoff"
! \&\s-1LRA\s0 tries to reuse values reloaded in registers in subsequent insns.
! This optimization is called inheritance.  \s-1EBB\s0 is used as a region to
! do this optimization.  The parameter defines a minimal fall-through
! edge probability in percentage used to add \s-1BB\s0 to inheritance \s-1EBB\s0 in
! \&\s-1LRA.\s0  The default value was chosen
! from numerous runs of \s-1SPEC2000\s0 on x86\-64.
! .IP "\fBloop-invariant-max-bbs-in-loop\fR" 4
  .IX Item "loop-invariant-max-bbs-in-loop"
  Loop invariant motion can be very expensive, both in compilation time and
! in amount of needed compile-time memory, with very large loops.  Loops
! with more basic blocks than this parameter won't have loop invariant
  motion optimization performed on them.
! .IP "\fBloop-max-datarefs-for-datadeps\fR" 4
  .IX Item "loop-max-datarefs-for-datadeps"
  Building data dependencies is expensive for very large loops.  This
  parameter limits the number of data references in loops that are
  considered for data dependence analysis.  These large loops are no
  handled by the optimizations using loop data dependencies.
! .IP "\fBmax-vartrack-size\fR" 4
  .IX Item "max-vartrack-size"
  Sets a maximum number of hash table slots to use during variable
  tracking dataflow analysis of any function.  If this limit is exceeded
--- 15631,15704 ----
  parameter sets a limit on the length of the sets that are computed,
  which prevents the runaway behavior.  Setting a value of 0 for
  this parameter allows an unlimited set length.
! .IP \fBrpo\-vn\-max\-loop\-depth\fR 4
  .IX Item "rpo-vn-max-loop-depth"
! Maximum loop depth that is value\-numbered optimistically.
  When the limit hits the innermost
! \&\fIrpo\-vn\-max\-loop\-depth\fR loops and the outermost loop in the
! loop nest are value\-numbered optimistically and the remaining ones not.
! .IP \fBsccvn\-max\-alias\-queries\-per\-access\fR 4
  .IX Item "sccvn-max-alias-queries-per-access"
! Maximum number of alias\-oracle queries we perform when looking for
  redundancies for loads and stores.  If this limit is hit the search
  is aborted and the load or store is not considered redundant.  The
  number of queries is algorithmically limited to the number of
  stores on all paths from the load to the function entry.
! .IP \fBira\-max\-loops\-num\fR 4
  .IX Item "ira-max-loops-num"
! IRA uses regional register allocation by default.  If a function
  contains more loops than the number given by this parameter, only at most
! the given number of the most frequently\-executed loops form regions
  for regional register allocation.
! .IP \fBira\-max\-conflict\-table\-size\fR 4
  .IX Item "ira-max-conflict-table-size"
! Although IRA uses a sophisticated algorithm to compress the conflict
  table, the table can still require excessive amounts of memory for
  huge functions.  If the conflict table for a function could be more
! than the size in MB given by this parameter, the register allocator
! instead uses a faster, simpler, and lower\-quality
! algorithm that does not require building a pseudo\-register conflict table.
! .IP \fBira\-loop\-reserved\-regs\fR 4
  .IX Item "ira-loop-reserved-regs"
! IRA can be used to evaluate more accurate register pressure in loops
  for decisions to move loop invariants (see \fB\-O3\fR).  The number
  of available registers reserved for some other purposes is given
  by this parameter.  Default of the parameter
  is the best found from numerous experiments.
! .IP \fBira\-consider\-dup\-in\-all\-alts\fR 4
  .IX Item "ira-consider-dup-in-all-alts"
! Make IRA to consider matching constraint (duplicated operand number)
  heavily in all available alternatives for preferred register class.
! If it is set as zero, it means IRA only respects the matching
! constraint when it\*(Aqs in the only available alternative with an
! appropriate register class.  Otherwise, it means IRA will check all
  available alternatives for preferred register class even if it has
  found some choice with an appropriate register class and respect the
  found qualified matching constraint.
! .IP \fBira\-simple\-lra\-insn\-threshold\fR 4
  .IX Item "ira-simple-lra-insn-threshold"
! Approximate function insn number in 1K units triggering simple local RA.
! .IP \fBlra\-inheritance\-ebb\-probability\-cutoff\fR 4
  .IX Item "lra-inheritance-ebb-probability-cutoff"
! LRA tries to reuse values reloaded in registers in subsequent insns.
! This optimization is called inheritance.  EBB is used as a region to
! do this optimization.  The parameter defines a minimal fall\-through
! edge probability in percentage used to add BB to inheritance EBB in
! LRA.  The default value was chosen
! from numerous runs of SPEC2000 on x86\-64.
! .IP \fBloop\-invariant\-max\-bbs\-in\-loop\fR 4
  .IX Item "loop-invariant-max-bbs-in-loop"
  Loop invariant motion can be very expensive, both in compilation time and
! in amount of needed compile\-time memory, with very large loops.  Loops
! with more basic blocks than this parameter won\*(Aqt have loop invariant
  motion optimization performed on them.
! .IP \fBloop\-max\-datarefs\-for\-datadeps\fR 4
  .IX Item "loop-max-datarefs-for-datadeps"
  Building data dependencies is expensive for very large loops.  This
  parameter limits the number of data references in loops that are
  considered for data dependence analysis.  These large loops are no
  handled by the optimizations using loop data dependencies.
! .IP \fBmax\-vartrack\-size\fR 4
  .IX Item "max-vartrack-size"
  Sets a maximum number of hash table slots to use during variable
  tracking dataflow analysis of any function.  If this limit is exceeded
*************** function is retried without it, after re
*** 15774,15780 ****
  the function.  If the limit is exceeded even without debug insns, var
  tracking analysis is completely disabled for the function.  Setting
  the parameter to zero makes it unlimited.
! .IP "\fBmax-vartrack-expr-depth\fR" 4
  .IX Item "max-vartrack-expr-depth"
  Sets a maximum number of recursion levels when attempting to map
  variable names or debug temporaries to value expressions.  This trades
--- 15707,15713 ----
  the function.  If the limit is exceeded even without debug insns, var
  tracking analysis is completely disabled for the function.  Setting
  the parameter to zero makes it unlimited.
! .IP \fBmax\-vartrack\-expr\-depth\fR 4
  .IX Item "max-vartrack-expr-depth"
  Sets a maximum number of recursion levels when attempting to map
  variable names or debug temporaries to value expressions.  This trades
*************** low, value expressions that are availabl
*** 15783,16012 ****
  debug information may end up not being used; setting this higher may
  enable the compiler to find more complex debug expressions, but compile
  time and memory use may grow.
! .IP "\fBmax-debug-marker-count\fR" 4
  .IX Item "max-debug-marker-count"
  Sets a threshold on the number of debug markers (e.g. begin stmt
! markers) to avoid complexity explosion at inlining or expanding to \s-1RTL.\s0
  If a function has more such gimple stmts than the set limit, such stmts
! will be dropped from the inlined copy of a function, and from its \s-1RTL\s0
  expansion.
! .IP "\fBmin-nondebug-insn-uid\fR" 4
  .IX Item "min-nondebug-insn-uid"
  Use uids starting at this parameter for nondebug insns.  The range below
  the parameter is reserved exclusively for debug insns created by
  \&\fB\-fvar\-tracking\-assignments\fR, but debug insns may get
! (non-overlapping) uids above it if the reserved range is exhausted.
! .IP "\fBipa-sra-deref-prob-threshold\fR" 4
  .IX Item "ipa-sra-deref-prob-threshold"
! IPA-SRA replaces a pointer which is known not be \s-1NULL\s0 with one or more
  new parameters only when the probability (in percent, relative to
  function entry) of it being dereferenced is higher than this parameter.
! .IP "\fBipa-sra-ptr-growth-factor\fR" 4
  .IX Item "ipa-sra-ptr-growth-factor"
! IPA-SRA replaces a pointer to an aggregate with one or more new
  parameters only when their cumulative size is less or equal to
! \&\fBipa-sra-ptr-growth-factor\fR times the size of the original
  pointer parameter.
! .IP "\fBipa-sra-ptrwrap-growth-factor\fR" 4
  .IX Item "ipa-sra-ptrwrap-growth-factor"
  Additional maximum allowed growth of total size of new parameters
! that ipa-sra replaces a pointer to an aggregate with,
  if it points to a local variable that the caller only writes to and
  passes it as an argument to other functions.
! .IP "\fBipa-sra-max-replacements\fR" 4
  .IX Item "ipa-sra-max-replacements"
! Maximum pieces of an aggregate that IPA-SRA tracks.  As a
  consequence, it is also the maximum number of replacements of a formal
  parameter.
! .IP "\fBsra-max-scalarization-size-Ospeed\fR" 4
  .IX Item "sra-max-scalarization-size-Ospeed"
  .PD 0
! .IP "\fBsra-max-scalarization-size-Osize\fR" 4
  .IX Item "sra-max-scalarization-size-Osize"
  .PD
! The two Scalar Reduction of Aggregates passes (\s-1SRA\s0 and IPA-SRA) aim to
  replace scalar parts of aggregates with uses of independent scalar
  variables.  These parameters control the maximum size, in storage units,
  of aggregate which is considered for replacement when compiling for
  speed
! (\fBsra-max-scalarization-size-Ospeed\fR) or size
! (\fBsra-max-scalarization-size-Osize\fR) respectively.
! .IP "\fBsra-max-propagations\fR" 4
  .IX Item "sra-max-propagations"
  The maximum number of artificial accesses that Scalar Replacement of
! Aggregates (\s-1SRA\s0) will track, per one local variable, in order to
  facilitate copy propagation.
! .IP "\fBtm-max-aggregate-size\fR" 4
  .IX Item "tm-max-aggregate-size"
! When making copies of thread-local variables in a transaction, this
  parameter specifies the size in bytes after which variables are
  saved with the logging functions as opposed to save/restore code
  sequence pairs.  This option only applies when using
  \&\fB\-fgnu\-tm\fR.
! .IP "\fBgraphite-max-nb-scop-params\fR" 4
  .IX Item "graphite-max-nb-scop-params"
  To avoid exponential effects in the Graphite loop transforms, the
  number of parameters in a Static Control Part (SCoP) is bounded.
  A value of zero can be used to lift
  the bound.  A variable whose value is unknown at compilation time and
  defined outside a SCoP is a parameter of the SCoP.
! .IP "\fBhardcfr-max-blocks\fR" 4
  .IX Item "hardcfr-max-blocks"
  Disable \fB\-fharden\-control\-flow\-redundancy\fR for functions with a
  larger number of blocks than the specified value.  Zero removes any
  limit.
! .IP "\fBhardcfr-max-inline-blocks\fR" 4
  .IX Item "hardcfr-max-inline-blocks"
! Force \fB\-fharden\-control\-flow\-redundancy\fR to use out-of-line
  checking for functions with a larger number of basic blocks than the
  specified value.
! .IP "\fBloop-block-tile-size\fR" 4
  .IX Item "loop-block-tile-size"
  Loop blocking or strip mining transforms, enabled with
  \&\fB\-floop\-block\fR or \fB\-floop\-strip\-mine\fR, strip mine each
  loop in the loop nest by a given number of iterations.  The strip
! length can be changed using the \fBloop-block-tile-size\fR
  parameter.
! .IP "\fBipa-jump-function-lookups\fR" 4
  .IX Item "ipa-jump-function-lookups"
  Specifies number of statements visited during jump function offset discovery.
! .IP "\fBipa-cp-value-list-size\fR" 4
  .IX Item "ipa-cp-value-list-size"
! IPA-CP attempts to track all possible values and types passed to a function's
  parameter in order to propagate them and perform devirtualization.
! \&\fBipa-cp-value-list-size\fR is the maximum number of values and types it
  stores per one formal parameter of a function.
! .IP "\fBipa-cp-eval-threshold\fR" 4
  .IX Item "ipa-cp-eval-threshold"
! IPA-CP calculates its own score of cloning profitability heuristics
  and performs those cloning opportunities with scores that exceed
! \&\fBipa-cp-eval-threshold\fR.
! .IP "\fBipa-cp-max-recursive-depth\fR" 4
  .IX Item "ipa-cp-max-recursive-depth"
! Maximum depth of recursive cloning for self-recursive function.
! .IP "\fBipa-cp-min-recursive-probability\fR" 4
  .IX Item "ipa-cp-min-recursive-probability"
  Recursive cloning only when the probability of call being executed exceeds
  the parameter.
! .IP "\fBipa-cp-profile-count-base\fR" 4
  .IX Item "ipa-cp-profile-count-base"
! When using \fB\-fprofile\-use\fR option, IPA-CP will consider the measured
  execution count of a call graph edge at this percentage position in their
  histogram as the basis for its heuristics calculation.
! .IP "\fBipa-cp-recursive-freq-factor\fR" 4
  .IX Item "ipa-cp-recursive-freq-factor"
  The number of times interprocedural copy propagation expects recursive
  functions to call themselves.
! .IP "\fBipa-cp-recursion-penalty\fR" 4
  .IX Item "ipa-cp-recursion-penalty"
  Percentage penalty the recursive functions will receive when they
  are evaluated for cloning.
! .IP "\fBipa-cp-single-call-penalty\fR" 4
  .IX Item "ipa-cp-single-call-penalty"
  Percentage penalty functions containing a single call to another
  function will receive when they are evaluated for cloning.
! .IP "\fBipa-max-agg-items\fR" 4
  .IX Item "ipa-max-agg-items"
! IPA-CP is also capable to propagate a number of scalar values passed
! in an aggregate. \fBipa-max-agg-items\fR controls the maximum
  number of such values per one parameter.
! .IP "\fBipa-cp-loop-hint-bonus\fR" 4
  .IX Item "ipa-cp-loop-hint-bonus"
! When IPA-CP determines that a cloning candidate would make the number
  of iterations of a loop known, it adds a bonus of
! \&\fBipa-cp-loop-hint-bonus\fR to the profitability score of
  the candidate.
! .IP "\fBipa-max-loop-predicates\fR" 4
  .IX Item "ipa-max-loop-predicates"
! The maximum number of different predicates \s-1IPA\s0 will use to describe when
  loops in a function have known properties.
! .IP "\fBipa-max-aa-steps\fR" 4
  .IX Item "ipa-max-aa-steps"
! During its analysis of function bodies, IPA-CP employs alias analysis
  in order to track values pointed to by function parameters.  In order
  not spend too much time analyzing huge functions, it gives up and
  consider all memory clobbered after examining
! \&\fBipa-max-aa-steps\fR statements modifying memory.
! .IP "\fBipa-max-switch-predicate-bounds\fR" 4
  .IX Item "ipa-max-switch-predicate-bounds"
  Maximal number of boundary endpoints of case ranges of switch statement.
! For switch exceeding this limit, IPA-CP will not construct cloning cost
  predicate, which is used to estimate cloning benefit, for default case
  of the switch statement.
! .IP "\fBipa-max-param-expr-ops\fR" 4
  .IX Item "ipa-max-param-expr-ops"
! IPA-CP will analyze conditional statement that references some function
  parameter to estimate benefit for cloning upon certain constant value.
  But if number of operations in a parameter expression exceeds
! \&\fBipa-max-param-expr-ops\fR, the expression is treated as complicated
! one, and is not handled by \s-1IPA\s0 analysis.
! .IP "\fBlto-partitions\fR" 4
  .IX Item "lto-partitions"
! Specify desired number of partitions produced during \s-1WHOPR\s0 compilation.
  The number of partitions should exceed the number of CPUs used for compilation.
! .IP "\fBlto-min-partition\fR" 4
  .IX Item "lto-min-partition"
! Size of minimal partition for \s-1WHOPR\s0 (in estimated instructions).
  This prevents expenses of splitting very small programs into too many
  partitions.
! .IP "\fBlto-max-partition\fR" 4
  .IX Item "lto-max-partition"
! Size of max partition for \s-1WHOPR\s0 (in estimated instructions).
  to provide an upper bound for individual size of partition.
  Meant to be used only with balanced partitioning.
! .IP "\fBlto-partition-locality-frequency-cutoff\fR" 4
  .IX Item "lto-partition-locality-frequency-cutoff"
  The denominator n of fraction 1/n of the execution frequency of callee to be
  cloned for a particular caller. Special value of 0 dictates to always clone
! without a cut-off.
! .IP "\fBlto-partition-locality-size-cutoff\fR" 4
  .IX Item "lto-partition-locality-size-cutoff"
! Size cut-off for callee including inlined calls to be cloned for a particular
  caller.
! .IP "\fBlto-max-locality-partition\fR" 4
  .IX Item "lto-max-locality-partition"
! Maximal size of a locality partition for \s-1LTO\s0 (in estimated instructions).
  Value of 0 results in default value being used.
! .IP "\fBlto-max-streaming-parallelism\fR" 4
  .IX Item "lto-max-streaming-parallelism"
! Maximal number of parallel processes used for \s-1LTO\s0 streaming.
! .IP "\fBcxx-max-namespaces-for-diagnostic-help\fR" 4
  .IX Item "cxx-max-namespaces-for-diagnostic-help"
! The maximum number of namespaces to consult for suggestions when \*(C+
  name lookup fails for an identifier.
! .IP "\fBsink-frequency-threshold\fR" 4
  .IX Item "sink-frequency-threshold"
  The maximum relative execution frequency (in percents) of the target block
! relative to a statement's original block to allow statement sinking of a
  statement.  Larger numbers result in more aggressive statement sinking.
  A small positive adjustment is applied for
  statements with memory operands as those are even more profitable so sink.
! .IP "\fBmax-stores-to-sink\fR" 4
  .IX Item "max-stores-to-sink"
  The maximum number of conditional store pairs that can be sunk.  Set to 0
! if either vectorization (\fB\-ftree\-vectorize\fR) or if-conversion
  (\fB\-ftree\-loop\-if\-convert\fR) is disabled.
! .IP "\fBcase-values-threshold\fR" 4
  .IX Item "case-values-threshold"
  The smallest number of different values for which it is best to use a
! jump-table instead of a tree of conditional branches.  If the value is
  0, use the default for the machine.
! .IP "\fBjump-table-max-growth-ratio-for-size\fR" 4
  .IX Item "jump-table-max-growth-ratio-for-size"
  The maximum code size growth ratio when expanding
  into a jump table (in percent).  The parameter is used when
  optimizing for size.
! .IP "\fBjump-table-max-growth-ratio-for-speed\fR" 4
  .IX Item "jump-table-max-growth-ratio-for-speed"
  The maximum code size growth ratio when expanding
  into a jump table (in percent).  The parameter is used when
  optimizing for speed.
! .IP "\fBtree-reassoc-width\fR" 4
  .IX Item "tree-reassoc-width"
  Set the maximum number of instructions executed in parallel in
  reassociated tree. This parameter overrides target dependent
  heuristics used by default if has non zero value.
! .IP "\fBsched-pressure-algorithm\fR" 4
  .IX Item "sched-pressure-algorithm"
  Choose between the two available implementations of
  \&\fB\-fsched\-pressure\fR.  Algorithm 1 is the original implementation
--- 15716,15945 ----
  debug information may end up not being used; setting this higher may
  enable the compiler to find more complex debug expressions, but compile
  time and memory use may grow.
! .IP \fBmax\-debug\-marker\-count\fR 4
  .IX Item "max-debug-marker-count"
  Sets a threshold on the number of debug markers (e.g. begin stmt
! markers) to avoid complexity explosion at inlining or expanding to RTL.
  If a function has more such gimple stmts than the set limit, such stmts
! will be dropped from the inlined copy of a function, and from its RTL
  expansion.
! .IP \fBmin\-nondebug\-insn\-uid\fR 4
  .IX Item "min-nondebug-insn-uid"
  Use uids starting at this parameter for nondebug insns.  The range below
  the parameter is reserved exclusively for debug insns created by
  \&\fB\-fvar\-tracking\-assignments\fR, but debug insns may get
! (non\-overlapping) uids above it if the reserved range is exhausted.
! .IP \fBipa\-sra\-deref\-prob\-threshold\fR 4
  .IX Item "ipa-sra-deref-prob-threshold"
! IPA\-SRA replaces a pointer which is known not be NULL with one or more
  new parameters only when the probability (in percent, relative to
  function entry) of it being dereferenced is higher than this parameter.
! .IP \fBipa\-sra\-ptr\-growth\-factor\fR 4
  .IX Item "ipa-sra-ptr-growth-factor"
! IPA\-SRA replaces a pointer to an aggregate with one or more new
  parameters only when their cumulative size is less or equal to
! \&\fBipa\-sra\-ptr\-growth\-factor\fR times the size of the original
  pointer parameter.
! .IP \fBipa\-sra\-ptrwrap\-growth\-factor\fR 4
  .IX Item "ipa-sra-ptrwrap-growth-factor"
  Additional maximum allowed growth of total size of new parameters
! that ipa\-sra replaces a pointer to an aggregate with,
  if it points to a local variable that the caller only writes to and
  passes it as an argument to other functions.
! .IP \fBipa\-sra\-max\-replacements\fR 4
  .IX Item "ipa-sra-max-replacements"
! Maximum pieces of an aggregate that IPA\-SRA tracks.  As a
  consequence, it is also the maximum number of replacements of a formal
  parameter.
! .IP \fBsra\-max\-scalarization\-size\-Ospeed\fR 4
  .IX Item "sra-max-scalarization-size-Ospeed"
  .PD 0
! .IP \fBsra\-max\-scalarization\-size\-Osize\fR 4
  .IX Item "sra-max-scalarization-size-Osize"
  .PD
! The two Scalar Reduction of Aggregates passes (SRA and IPA\-SRA) aim to
  replace scalar parts of aggregates with uses of independent scalar
  variables.  These parameters control the maximum size, in storage units,
  of aggregate which is considered for replacement when compiling for
  speed
! (\fBsra\-max\-scalarization\-size\-Ospeed\fR) or size
! (\fBsra\-max\-scalarization\-size\-Osize\fR) respectively.
! .IP \fBsra\-max\-propagations\fR 4
  .IX Item "sra-max-propagations"
  The maximum number of artificial accesses that Scalar Replacement of
! Aggregates (SRA) will track, per one local variable, in order to
  facilitate copy propagation.
! .IP \fBtm\-max\-aggregate\-size\fR 4
  .IX Item "tm-max-aggregate-size"
! When making copies of thread\-local variables in a transaction, this
  parameter specifies the size in bytes after which variables are
  saved with the logging functions as opposed to save/restore code
  sequence pairs.  This option only applies when using
  \&\fB\-fgnu\-tm\fR.
! .IP \fBgraphite\-max\-nb\-scop\-params\fR 4
  .IX Item "graphite-max-nb-scop-params"
  To avoid exponential effects in the Graphite loop transforms, the
  number of parameters in a Static Control Part (SCoP) is bounded.
  A value of zero can be used to lift
  the bound.  A variable whose value is unknown at compilation time and
  defined outside a SCoP is a parameter of the SCoP.
! .IP \fBhardcfr\-max\-blocks\fR 4
  .IX Item "hardcfr-max-blocks"
  Disable \fB\-fharden\-control\-flow\-redundancy\fR for functions with a
  larger number of blocks than the specified value.  Zero removes any
  limit.
! .IP \fBhardcfr\-max\-inline\-blocks\fR 4
  .IX Item "hardcfr-max-inline-blocks"
! Force \fB\-fharden\-control\-flow\-redundancy\fR to use out\-of\-line
  checking for functions with a larger number of basic blocks than the
  specified value.
! .IP \fBloop\-block\-tile\-size\fR 4
  .IX Item "loop-block-tile-size"
  Loop blocking or strip mining transforms, enabled with
  \&\fB\-floop\-block\fR or \fB\-floop\-strip\-mine\fR, strip mine each
  loop in the loop nest by a given number of iterations.  The strip
! length can be changed using the \fBloop\-block\-tile\-size\fR
  parameter.
! .IP \fBipa\-jump\-function\-lookups\fR 4
  .IX Item "ipa-jump-function-lookups"
  Specifies number of statements visited during jump function offset discovery.
! .IP \fBipa\-cp\-value\-list\-size\fR 4
  .IX Item "ipa-cp-value-list-size"
! IPA\-CP attempts to track all possible values and types passed to a function\*(Aqs
  parameter in order to propagate them and perform devirtualization.
! \&\fBipa\-cp\-value\-list\-size\fR is the maximum number of values and types it
  stores per one formal parameter of a function.
! .IP \fBipa\-cp\-eval\-threshold\fR 4
  .IX Item "ipa-cp-eval-threshold"
! IPA\-CP calculates its own score of cloning profitability heuristics
  and performs those cloning opportunities with scores that exceed
! \&\fBipa\-cp\-eval\-threshold\fR.
! .IP \fBipa\-cp\-max\-recursive\-depth\fR 4
  .IX Item "ipa-cp-max-recursive-depth"
! Maximum depth of recursive cloning for self\-recursive function.
! .IP \fBipa\-cp\-min\-recursive\-probability\fR 4
  .IX Item "ipa-cp-min-recursive-probability"
  Recursive cloning only when the probability of call being executed exceeds
  the parameter.
! .IP \fBipa\-cp\-profile\-count\-base\fR 4
  .IX Item "ipa-cp-profile-count-base"
! When using \fB\-fprofile\-use\fR option, IPA\-CP will consider the measured
  execution count of a call graph edge at this percentage position in their
  histogram as the basis for its heuristics calculation.
! .IP \fBipa\-cp\-recursive\-freq\-factor\fR 4
  .IX Item "ipa-cp-recursive-freq-factor"
  The number of times interprocedural copy propagation expects recursive
  functions to call themselves.
! .IP \fBipa\-cp\-recursion\-penalty\fR 4
  .IX Item "ipa-cp-recursion-penalty"
  Percentage penalty the recursive functions will receive when they
  are evaluated for cloning.
! .IP \fBipa\-cp\-single\-call\-penalty\fR 4
  .IX Item "ipa-cp-single-call-penalty"
  Percentage penalty functions containing a single call to another
  function will receive when they are evaluated for cloning.
! .IP \fBipa\-max\-agg\-items\fR 4
  .IX Item "ipa-max-agg-items"
! IPA\-CP is also capable to propagate a number of scalar values passed
! in an aggregate. \fBipa\-max\-agg\-items\fR controls the maximum
  number of such values per one parameter.
! .IP \fBipa\-cp\-loop\-hint\-bonus\fR 4
  .IX Item "ipa-cp-loop-hint-bonus"
! When IPA\-CP determines that a cloning candidate would make the number
  of iterations of a loop known, it adds a bonus of
! \&\fBipa\-cp\-loop\-hint\-bonus\fR to the profitability score of
  the candidate.
! .IP \fBipa\-max\-loop\-predicates\fR 4
  .IX Item "ipa-max-loop-predicates"
! The maximum number of different predicates IPA will use to describe when
  loops in a function have known properties.
! .IP \fBipa\-max\-aa\-steps\fR 4
  .IX Item "ipa-max-aa-steps"
! During its analysis of function bodies, IPA\-CP employs alias analysis
  in order to track values pointed to by function parameters.  In order
  not spend too much time analyzing huge functions, it gives up and
  consider all memory clobbered after examining
! \&\fBipa\-max\-aa\-steps\fR statements modifying memory.
! .IP \fBipa\-max\-switch\-predicate\-bounds\fR 4
  .IX Item "ipa-max-switch-predicate-bounds"
  Maximal number of boundary endpoints of case ranges of switch statement.
! For switch exceeding this limit, IPA\-CP will not construct cloning cost
  predicate, which is used to estimate cloning benefit, for default case
  of the switch statement.
! .IP \fBipa\-max\-param\-expr\-ops\fR 4
  .IX Item "ipa-max-param-expr-ops"
! IPA\-CP will analyze conditional statement that references some function
  parameter to estimate benefit for cloning upon certain constant value.
  But if number of operations in a parameter expression exceeds
! \&\fBipa\-max\-param\-expr\-ops\fR, the expression is treated as complicated
! one, and is not handled by IPA analysis.
! .IP \fBlto\-partitions\fR 4
  .IX Item "lto-partitions"
! Specify desired number of partitions produced during WHOPR compilation.
  The number of partitions should exceed the number of CPUs used for compilation.
! .IP \fBlto\-min\-partition\fR 4
  .IX Item "lto-min-partition"
! Size of minimal partition for WHOPR (in estimated instructions).
  This prevents expenses of splitting very small programs into too many
  partitions.
! .IP \fBlto\-max\-partition\fR 4
  .IX Item "lto-max-partition"
! Size of max partition for WHOPR (in estimated instructions).
  to provide an upper bound for individual size of partition.
  Meant to be used only with balanced partitioning.
! .IP \fBlto\-partition\-locality\-frequency\-cutoff\fR 4
  .IX Item "lto-partition-locality-frequency-cutoff"
  The denominator n of fraction 1/n of the execution frequency of callee to be
  cloned for a particular caller. Special value of 0 dictates to always clone
! without a cut\-off.
! .IP \fBlto\-partition\-locality\-size\-cutoff\fR 4
  .IX Item "lto-partition-locality-size-cutoff"
! Size cut\-off for callee including inlined calls to be cloned for a particular
  caller.
! .IP \fBlto\-max\-locality\-partition\fR 4
  .IX Item "lto-max-locality-partition"
! Maximal size of a locality partition for LTO (in estimated instructions).
  Value of 0 results in default value being used.
! .IP \fBlto\-max\-streaming\-parallelism\fR 4
  .IX Item "lto-max-streaming-parallelism"
! Maximal number of parallel processes used for LTO streaming.
! .IP \fBcxx\-max\-namespaces\-for\-diagnostic\-help\fR 4
  .IX Item "cxx-max-namespaces-for-diagnostic-help"
! The maximum number of namespaces to consult for suggestions when C++
  name lookup fails for an identifier.
! .IP \fBsink\-frequency\-threshold\fR 4
  .IX Item "sink-frequency-threshold"
  The maximum relative execution frequency (in percents) of the target block
! relative to a statement\*(Aqs original block to allow statement sinking of a
  statement.  Larger numbers result in more aggressive statement sinking.
  A small positive adjustment is applied for
  statements with memory operands as those are even more profitable so sink.
! .IP \fBmax\-stores\-to\-sink\fR 4
  .IX Item "max-stores-to-sink"
  The maximum number of conditional store pairs that can be sunk.  Set to 0
! if either vectorization (\fB\-ftree\-vectorize\fR) or if\-conversion
  (\fB\-ftree\-loop\-if\-convert\fR) is disabled.
! .IP \fBcase\-values\-threshold\fR 4
  .IX Item "case-values-threshold"
  The smallest number of different values for which it is best to use a
! jump\-table instead of a tree of conditional branches.  If the value is
  0, use the default for the machine.
! .IP \fBjump\-table\-max\-growth\-ratio\-for\-size\fR 4
  .IX Item "jump-table-max-growth-ratio-for-size"
  The maximum code size growth ratio when expanding
  into a jump table (in percent).  The parameter is used when
  optimizing for size.
! .IP \fBjump\-table\-max\-growth\-ratio\-for\-speed\fR 4
  .IX Item "jump-table-max-growth-ratio-for-speed"
  The maximum code size growth ratio when expanding
  into a jump table (in percent).  The parameter is used when
  optimizing for speed.
! .IP \fBtree\-reassoc\-width\fR 4
  .IX Item "tree-reassoc-width"
  Set the maximum number of instructions executed in parallel in
  reassociated tree. This parameter overrides target dependent
  heuristics used by default if has non zero value.
! .IP \fBsched\-pressure\-algorithm\fR 4
  .IX Item "sched-pressure-algorithm"
  Choose between the two available implementations of
  \&\fB\-fsched\-pressure\fR.  Algorithm 1 is the original implementation
*************** Algorithm 2 was designed to be a comprom
*** 16015,16087 ****
  conservative approach taken by algorithm 1 and the rather aggressive
  approach taken by the default scheduler.  It relies more heavily on
  having a regular register file and accurate register pressure classes.
! See \fIhaifa\-sched.cc\fR in the \s-1GCC\s0 sources for more details.
  .Sp
  The default choice depends on the target.
! .IP "\fBmax-slsr-cand-scan\fR" 4
  .IX Item "max-slsr-cand-scan"
  Set the maximum number of existing candidates that are considered when
! seeking a basis for a new straight-line strength reduction candidate.
! .IP "\fBasan-globals\fR" 4
  .IX Item "asan-globals"
  Enable buffer overflow detection for global objects.  This kind
  of protection is enabled by default if you are using
  \&\fB\-fsanitize=address\fR option.
  To disable global objects protection use \fB\-\-param asan\-globals=0\fR.
! .IP "\fBasan-stack\fR" 4
  .IX Item "asan-stack"
  Enable buffer overflow detection for stack objects.  This kind of
  protection is enabled by default when using \fB\-fsanitize=address\fR.
  To disable stack protection use \fB\-\-param asan\-stack=0\fR option.
! .IP "\fBasan-instrument-reads\fR" 4
  .IX Item "asan-instrument-reads"
  Enable buffer overflow detection for memory reads.  This kind of
  protection is enabled by default when using \fB\-fsanitize=address\fR.
  To disable memory reads protection use
  \&\fB\-\-param asan\-instrument\-reads=0\fR.
! .IP "\fBasan-instrument-writes\fR" 4
  .IX Item "asan-instrument-writes"
  Enable buffer overflow detection for memory writes.  This kind of
  protection is enabled by default when using \fB\-fsanitize=address\fR.
  To disable memory writes protection use
  \&\fB\-\-param asan\-instrument\-writes=0\fR option.
! .IP "\fBasan-memintrin\fR" 4
  .IX Item "asan-memintrin"
! Enable detection for built-in functions.  This kind of protection
  is enabled by default when using \fB\-fsanitize=address\fR.
! To disable built-in functions protection use
  \&\fB\-\-param asan\-memintrin=0\fR.
! .IP "\fBasan-use-after-return\fR" 4
  .IX Item "asan-use-after-return"
! Enable detection of use-after-return.  This kind of protection
  is enabled by default when using the \fB\-fsanitize=address\fR option.
  To disable it use \fB\-\-param asan\-use\-after\-return=0\fR.
  .Sp
  Note: By default the check is disabled at run time.  To enable it,
  add \f(CW\*(C`detect_stack_use_after_return=1\*(C'\fR to the environment variable
! \&\fB\s-1ASAN_OPTIONS\s0\fR.
! .IP "\fBasan-instrumentation-with-call-threshold\fR" 4
  .IX Item "asan-instrumentation-with-call-threshold"
  If number of memory accesses in function being instrumented
  is greater or equal to this number, use callbacks instead of inline checks.
  E.g. to disable inline code use
  \&\fB\-\-param asan\-instrumentation\-with\-call\-threshold=0\fR.
! .IP "\fBasan-kernel-mem-intrinsic-prefix\fR" 4
  .IX Item "asan-kernel-mem-intrinsic-prefix"
  If nonzero, prefix calls to \f(CW\*(C`memcpy\*(C'\fR, \f(CW\*(C`memset\*(C'\fR and \f(CW\*(C`memmove\*(C'\fR
  with \fB_\|_asan_\fR or \fB_\|_hwasan_\fR
  for \fB\-fsanitize=kernel\-address\fR or \fB\-fsanitize=kernel\-hwaddress\fR,
  respectively.
! .IP "\fBhwasan-instrument-stack\fR" 4
  .IX Item "hwasan-instrument-stack"
! Enable hwasan instrumentation of statically sized stack-allocated variables.
  This kind of instrumentation is enabled by default when using
  \&\fB\-fsanitize=hwaddress\fR and disabled by default when using
  \&\fB\-fsanitize=kernel\-hwaddress\fR.
  To disable stack instrumentation use
  \&\fB\-\-param hwasan\-instrument\-stack=0\fR, and to enable it use
  \&\fB\-\-param hwasan\-instrument\-stack=1\fR.
! .IP "\fBhwasan-random-frame-tag\fR" 4
  .IX Item "hwasan-random-frame-tag"
  When using stack instrumentation, decide tags for stack variables using a
  deterministic sequence beginning at a random tag for each frame.  With this
--- 15948,16020 ----
  conservative approach taken by algorithm 1 and the rather aggressive
  approach taken by the default scheduler.  It relies more heavily on
  having a regular register file and accurate register pressure classes.
! See \fIhaifa\-sched.cc\fR in the GCC sources for more details.
  .Sp
  The default choice depends on the target.
! .IP \fBmax\-slsr\-cand\-scan\fR 4
  .IX Item "max-slsr-cand-scan"
  Set the maximum number of existing candidates that are considered when
! seeking a basis for a new straight\-line strength reduction candidate.
! .IP \fBasan\-globals\fR 4
  .IX Item "asan-globals"
  Enable buffer overflow detection for global objects.  This kind
  of protection is enabled by default if you are using
  \&\fB\-fsanitize=address\fR option.
  To disable global objects protection use \fB\-\-param asan\-globals=0\fR.
! .IP \fBasan\-stack\fR 4
  .IX Item "asan-stack"
  Enable buffer overflow detection for stack objects.  This kind of
  protection is enabled by default when using \fB\-fsanitize=address\fR.
  To disable stack protection use \fB\-\-param asan\-stack=0\fR option.
! .IP \fBasan\-instrument\-reads\fR 4
  .IX Item "asan-instrument-reads"
  Enable buffer overflow detection for memory reads.  This kind of
  protection is enabled by default when using \fB\-fsanitize=address\fR.
  To disable memory reads protection use
  \&\fB\-\-param asan\-instrument\-reads=0\fR.
! .IP \fBasan\-instrument\-writes\fR 4
  .IX Item "asan-instrument-writes"
  Enable buffer overflow detection for memory writes.  This kind of
  protection is enabled by default when using \fB\-fsanitize=address\fR.
  To disable memory writes protection use
  \&\fB\-\-param asan\-instrument\-writes=0\fR option.
! .IP \fBasan\-memintrin\fR 4
  .IX Item "asan-memintrin"
! Enable detection for built\-in functions.  This kind of protection
  is enabled by default when using \fB\-fsanitize=address\fR.
! To disable built\-in functions protection use
  \&\fB\-\-param asan\-memintrin=0\fR.
! .IP \fBasan\-use\-after\-return\fR 4
  .IX Item "asan-use-after-return"
! Enable detection of use\-after\-return.  This kind of protection
  is enabled by default when using the \fB\-fsanitize=address\fR option.
  To disable it use \fB\-\-param asan\-use\-after\-return=0\fR.
  .Sp
  Note: By default the check is disabled at run time.  To enable it,
  add \f(CW\*(C`detect_stack_use_after_return=1\*(C'\fR to the environment variable
! \&\fBASAN_OPTIONS\fR.
! .IP \fBasan\-instrumentation\-with\-call\-threshold\fR 4
  .IX Item "asan-instrumentation-with-call-threshold"
  If number of memory accesses in function being instrumented
  is greater or equal to this number, use callbacks instead of inline checks.
  E.g. to disable inline code use
  \&\fB\-\-param asan\-instrumentation\-with\-call\-threshold=0\fR.
! .IP \fBasan\-kernel\-mem\-intrinsic\-prefix\fR 4
  .IX Item "asan-kernel-mem-intrinsic-prefix"
  If nonzero, prefix calls to \f(CW\*(C`memcpy\*(C'\fR, \f(CW\*(C`memset\*(C'\fR and \f(CW\*(C`memmove\*(C'\fR
  with \fB_\|_asan_\fR or \fB_\|_hwasan_\fR
  for \fB\-fsanitize=kernel\-address\fR or \fB\-fsanitize=kernel\-hwaddress\fR,
  respectively.
! .IP \fBhwasan\-instrument\-stack\fR 4
  .IX Item "hwasan-instrument-stack"
! Enable hwasan instrumentation of statically sized stack\-allocated variables.
  This kind of instrumentation is enabled by default when using
  \&\fB\-fsanitize=hwaddress\fR and disabled by default when using
  \&\fB\-fsanitize=kernel\-hwaddress\fR.
  To disable stack instrumentation use
  \&\fB\-\-param hwasan\-instrument\-stack=0\fR, and to enable it use
  \&\fB\-\-param hwasan\-instrument\-stack=1\fR.
! .IP \fBhwasan\-random\-frame\-tag\fR 4
  .IX Item "hwasan-random-frame-tag"
  When using stack instrumentation, decide tags for stack variables using a
  deterministic sequence beginning at a random tag for each frame.  With this
*************** parameter unset tags are chosen using th
*** 16089,16209 ****
  This is enabled by default for \fB\-fsanitize=hwaddress\fR and unavailable
  for \fB\-fsanitize=kernel\-hwaddress\fR.
  To disable it use \fB\-\-param hwasan\-random\-frame\-tag=0\fR.
! .IP "\fBhwasan-instrument-allocas\fR" 4
  .IX Item "hwasan-instrument-allocas"
! Enable hwasan instrumentation of dynamically sized stack-allocated variables.
  This kind of instrumentation is enabled by default when using
  \&\fB\-fsanitize=hwaddress\fR and disabled by default when using
  \&\fB\-fsanitize=kernel\-hwaddress\fR.
  To disable instrumentation of such variables use
  \&\fB\-\-param hwasan\-instrument\-allocas=0\fR, and to enable it use
  \&\fB\-\-param hwasan\-instrument\-allocas=1\fR.
! .IP "\fBhwasan-instrument-reads\fR" 4
  .IX Item "hwasan-instrument-reads"
  Enable hwasan checks on memory reads.  Instrumentation of reads is enabled by
  default for both \fB\-fsanitize=hwaddress\fR and
  \&\fB\-fsanitize=kernel\-hwaddress\fR.
  To disable checking memory reads use
  \&\fB\-\-param hwasan\-instrument\-reads=0\fR.
! .IP "\fBhwasan-instrument-writes\fR" 4
  .IX Item "hwasan-instrument-writes"
  Enable hwasan checks on memory writes.  Instrumentation of writes is enabled by
  default for both \fB\-fsanitize=hwaddress\fR and
  \&\fB\-fsanitize=kernel\-hwaddress\fR.
  To disable checking memory writes use
  \&\fB\-\-param hwasan\-instrument\-writes=0\fR.
! .IP "\fBhwasan-instrument-mem-intrinsics\fR" 4
  .IX Item "hwasan-instrument-mem-intrinsics"
  Enable hwasan instrumentation of builtin functions.  Instrumentation of these
  builtin functions is enabled by default for both \fB\-fsanitize=hwaddress\fR
  and \fB\-fsanitize=kernel\-hwaddress\fR.
  To disable instrumentation of builtin functions use
  \&\fB\-\-param hwasan\-instrument\-mem\-intrinsics=0\fR.
! .IP "\fBuse-after-scope-direct-emission-threshold\fR" 4
  .IX Item "use-after-scope-direct-emission-threshold"
  If the size of a local variable in bytes is smaller or equal to this
  number, directly poison (or unpoison) shadow memory instead of using
! run-time callbacks.
! .IP "\fBtsan-distinguish-volatile\fR" 4
  .IX Item "tsan-distinguish-volatile"
  Emit special instrumentation for accesses to volatiles.
! .IP "\fBtsan-instrument-func-entry-exit\fR" 4
  .IX Item "tsan-instrument-func-entry-exit"
! Emit instrumentation calls to _\|\fI_tsan_func_entry()\fR and _\|\fI_tsan_func_exit()\fR.
! .IP "\fBmax-fsm-thread-path-insns\fR" 4
  .IX Item "max-fsm-thread-path-insns"
  Maximum number of instructions to copy when duplicating blocks on a
  finite state automaton jump thread path.
! .IP "\fBthreader-debug\fR" 4
  .IX Item "threader-debug"
  threader\-debug=[none|all] Enables verbose dumping of the threader solver.
! .IP "\fBparloops-chunk-size\fR" 4
  .IX Item "parloops-chunk-size"
  Chunk size of omp schedule for loops parallelized by parloops.
! .IP "\fBparloops-schedule\fR" 4
  .IX Item "parloops-schedule"
  Schedule type of omp schedule for loops parallelized by parloops (static,
  dynamic, guided, auto, runtime).
! .IP "\fBparloops-min-per-thread\fR" 4
  .IX Item "parloops-min-per-thread"
  The minimum number of iterations per thread of an innermost parallelized
  loop for which the parallelized variant is preferred over the single threaded
  one.  Note that for a parallelized loop nest the
  minimum number of iterations of the outermost loop per thread is two.
! .IP "\fBmax-ssa-name-query-depth\fR" 4
  .IX Item "max-ssa-name-query-depth"
! Maximum depth of recursion when querying properties of \s-1SSA\s0 names in things
  like fold routines.  One level of recursion corresponds to following a
! use-def chain.
! .IP "\fBmax-speculative-devirt-maydefs\fR" 4
  .IX Item "max-speculative-devirt-maydefs"
! The maximum number of may-defs we analyze when looking for a must-def
  specifying the dynamic type of an object that invokes a virtual call
  we may be able to devirtualize speculatively.
! .IP "\fBranger-debug\fR" 4
  .IX Item "ranger-debug"
  Specifies the type of debug output to be issued for ranges.
! .IP "\fBunroll-jam-min-percent\fR" 4
  .IX Item "unroll-jam-min-percent"
  The minimum percentage of memory references that must be optimized
! away for the unroll-and-jam transformation to be considered profitable.
! .IP "\fBunroll-jam-max-unroll\fR" 4
  .IX Item "unroll-jam-max-unroll"
  The maximum number of times the outer loop should be unrolled by
! the unroll-and-jam transformation.
! .IP "\fBmax-rtl-if-conversion-unpredictable-cost\fR" 4
  .IX Item "max-rtl-if-conversion-unpredictable-cost"
  Maximum permissible cost for the sequence that would be generated
! by the \s-1RTL\s0 if-conversion pass for a branch that is considered unpredictable.
! .IP "\fBmax-variable-expansions-in-unroller\fR" 4
  .IX Item "max-variable-expansions-in-unroller"
  If \fB\-fvariable\-expansion\-in\-unroller\fR is used, the maximum number
  of times that an individual variable will be expanded during loop unrolling.
! .IP "\fBpartial-inlining-entry-probability\fR" 4
  .IX Item "partial-inlining-entry-probability"
! Maximum probability of the entry \s-1BB\s0 of split region
! (in percent relative to entry \s-1BB\s0 of the function)
  to make partial inlining happen.
! .IP "\fBmax-tracked-strlens\fR" 4
  .IX Item "max-tracked-strlens"
  Maximum number of strings for which strlen optimization pass will
  track string lengths.
! .IP "\fBgcse-after-reload-partial-fraction\fR" 4
  .IX Item "gcse-after-reload-partial-fraction"
  The threshold ratio for performing partial redundancy
  elimination after reload.
! .IP "\fBgcse-after-reload-critical-fraction\fR" 4
  .IX Item "gcse-after-reload-critical-fraction"
  The threshold ratio of critical edges execution count that
  permit performing redundancy elimination after reload.
! .IP "\fBmax-loop-header-insns\fR" 4
  .IX Item "max-loop-header-insns"
  The maximum number of insns in loop header duplicated
  by the copy loop headers pass.
! .IP "\fBvect-epilogues-nomask\fR" 4
  .IX Item "vect-epilogues-nomask"
  Enable loop epilogue vectorization using smaller vector size.
! .IP "\fBvect-partial-vector-usage\fR" 4
  .IX Item "vect-partial-vector-usage"
  Controls when the loop vectorizer considers using partial vector loads
  and stores as an alternative to falling back to scalar code.  0 stops
--- 16022,16142 ----
  This is enabled by default for \fB\-fsanitize=hwaddress\fR and unavailable
  for \fB\-fsanitize=kernel\-hwaddress\fR.
  To disable it use \fB\-\-param hwasan\-random\-frame\-tag=0\fR.
! .IP \fBhwasan\-instrument\-allocas\fR 4
  .IX Item "hwasan-instrument-allocas"
! Enable hwasan instrumentation of dynamically sized stack\-allocated variables.
  This kind of instrumentation is enabled by default when using
  \&\fB\-fsanitize=hwaddress\fR and disabled by default when using
  \&\fB\-fsanitize=kernel\-hwaddress\fR.
  To disable instrumentation of such variables use
  \&\fB\-\-param hwasan\-instrument\-allocas=0\fR, and to enable it use
  \&\fB\-\-param hwasan\-instrument\-allocas=1\fR.
! .IP \fBhwasan\-instrument\-reads\fR 4
  .IX Item "hwasan-instrument-reads"
  Enable hwasan checks on memory reads.  Instrumentation of reads is enabled by
  default for both \fB\-fsanitize=hwaddress\fR and
  \&\fB\-fsanitize=kernel\-hwaddress\fR.
  To disable checking memory reads use
  \&\fB\-\-param hwasan\-instrument\-reads=0\fR.
! .IP \fBhwasan\-instrument\-writes\fR 4
  .IX Item "hwasan-instrument-writes"
  Enable hwasan checks on memory writes.  Instrumentation of writes is enabled by
  default for both \fB\-fsanitize=hwaddress\fR and
  \&\fB\-fsanitize=kernel\-hwaddress\fR.
  To disable checking memory writes use
  \&\fB\-\-param hwasan\-instrument\-writes=0\fR.
! .IP \fBhwasan\-instrument\-mem\-intrinsics\fR 4
  .IX Item "hwasan-instrument-mem-intrinsics"
  Enable hwasan instrumentation of builtin functions.  Instrumentation of these
  builtin functions is enabled by default for both \fB\-fsanitize=hwaddress\fR
  and \fB\-fsanitize=kernel\-hwaddress\fR.
  To disable instrumentation of builtin functions use
  \&\fB\-\-param hwasan\-instrument\-mem\-intrinsics=0\fR.
! .IP \fBuse\-after\-scope\-direct\-emission\-threshold\fR 4
  .IX Item "use-after-scope-direct-emission-threshold"
  If the size of a local variable in bytes is smaller or equal to this
  number, directly poison (or unpoison) shadow memory instead of using
! run\-time callbacks.
! .IP \fBtsan\-distinguish\-volatile\fR 4
  .IX Item "tsan-distinguish-volatile"
  Emit special instrumentation for accesses to volatiles.
! .IP \fBtsan\-instrument\-func\-entry\-exit\fR 4
  .IX Item "tsan-instrument-func-entry-exit"
! Emit instrumentation calls to _\|\fB_tsan_func_entry()\fR and _\|\fB_tsan_func_exit()\fR.
! .IP \fBmax\-fsm\-thread\-path\-insns\fR 4
  .IX Item "max-fsm-thread-path-insns"
  Maximum number of instructions to copy when duplicating blocks on a
  finite state automaton jump thread path.
! .IP \fBthreader\-debug\fR 4
  .IX Item "threader-debug"
  threader\-debug=[none|all] Enables verbose dumping of the threader solver.
! .IP \fBparloops\-chunk\-size\fR 4
  .IX Item "parloops-chunk-size"
  Chunk size of omp schedule for loops parallelized by parloops.
! .IP \fBparloops\-schedule\fR 4
  .IX Item "parloops-schedule"
  Schedule type of omp schedule for loops parallelized by parloops (static,
  dynamic, guided, auto, runtime).
! .IP \fBparloops\-min\-per\-thread\fR 4
  .IX Item "parloops-min-per-thread"
  The minimum number of iterations per thread of an innermost parallelized
  loop for which the parallelized variant is preferred over the single threaded
  one.  Note that for a parallelized loop nest the
  minimum number of iterations of the outermost loop per thread is two.
! .IP \fBmax\-ssa\-name\-query\-depth\fR 4
  .IX Item "max-ssa-name-query-depth"
! Maximum depth of recursion when querying properties of SSA names in things
  like fold routines.  One level of recursion corresponds to following a
! use\-def chain.
! .IP \fBmax\-speculative\-devirt\-maydefs\fR 4
  .IX Item "max-speculative-devirt-maydefs"
! The maximum number of may\-defs we analyze when looking for a must\-def
  specifying the dynamic type of an object that invokes a virtual call
  we may be able to devirtualize speculatively.
! .IP \fBranger\-debug\fR 4
  .IX Item "ranger-debug"
  Specifies the type of debug output to be issued for ranges.
! .IP \fBunroll\-jam\-min\-percent\fR 4
  .IX Item "unroll-jam-min-percent"
  The minimum percentage of memory references that must be optimized
! away for the unroll\-and\-jam transformation to be considered profitable.
! .IP \fBunroll\-jam\-max\-unroll\fR 4
  .IX Item "unroll-jam-max-unroll"
  The maximum number of times the outer loop should be unrolled by
! the unroll\-and\-jam transformation.
! .IP \fBmax\-rtl\-if\-conversion\-unpredictable\-cost\fR 4
  .IX Item "max-rtl-if-conversion-unpredictable-cost"
  Maximum permissible cost for the sequence that would be generated
! by the RTL if\-conversion pass for a branch that is considered unpredictable.
! .IP \fBmax\-variable\-expansions\-in\-unroller\fR 4
  .IX Item "max-variable-expansions-in-unroller"
  If \fB\-fvariable\-expansion\-in\-unroller\fR is used, the maximum number
  of times that an individual variable will be expanded during loop unrolling.
! .IP \fBpartial\-inlining\-entry\-probability\fR 4
  .IX Item "partial-inlining-entry-probability"
! Maximum probability of the entry BB of split region
! (in percent relative to entry BB of the function)
  to make partial inlining happen.
! .IP \fBmax\-tracked\-strlens\fR 4
  .IX Item "max-tracked-strlens"
  Maximum number of strings for which strlen optimization pass will
  track string lengths.
! .IP \fBgcse\-after\-reload\-partial\-fraction\fR 4
  .IX Item "gcse-after-reload-partial-fraction"
  The threshold ratio for performing partial redundancy
  elimination after reload.
! .IP \fBgcse\-after\-reload\-critical\-fraction\fR 4
  .IX Item "gcse-after-reload-critical-fraction"
  The threshold ratio of critical edges execution count that
  permit performing redundancy elimination after reload.
! .IP \fBmax\-loop\-header\-insns\fR 4
  .IX Item "max-loop-header-insns"
  The maximum number of insns in loop header duplicated
  by the copy loop headers pass.
! .IP \fBvect\-epilogues\-nomask\fR 4
  .IX Item "vect-epilogues-nomask"
  Enable loop epilogue vectorization using smaller vector size.
! .IP \fBvect\-partial\-vector\-usage\fR 4
  .IX Item "vect-partial-vector-usage"
  Controls when the loop vectorizer considers using partial vector loads
  and stores as an alternative to falling back to scalar code.  0 stops
*************** partial vector loads and stores if vecto
*** 16212,16495 ****
  code to iterate.  2 allows partial vector loads and stores in all loops.
  The parameter only has an effect on targets that support partial
  vector loads and stores.
! .IP "\fBvect-inner-loop-cost-factor\fR" 4
  .IX Item "vect-inner-loop-cost-factor"
  The maximum factor which the loop vectorizer applies to the cost of statements
  in an inner loop relative to the loop being vectorized.  The factor applied
  is the maximum of the estimated number of iterations of the inner loop and
  this parameter.  The default value of this parameter is 50.
! .IP "\fBvect-induction-float\fR" 4
  .IX Item "vect-induction-float"
  Enable loop vectorization of floating point inductions.
! .IP "\fBvect-force-slp\fR" 4
  .IX Item "vect-force-slp"
! Force the use of \s-1SLP\s0 when vectorizing, fail if not possible.
! .IP "\fBvrp-block-limit\fR" 4
  .IX Item "vrp-block-limit"
! Maximum number of basic blocks before \s-1VRP\s0 switches to a lower memory algorithm.
! .IP "\fBvrp-sparse-threshold\fR" 4
  .IX Item "vrp-sparse-threshold"
! Maximum number of basic blocks before \s-1VRP\s0 uses a sparse bitmap cache.
! .IP "\fBvrp-switch-limit\fR" 4
  .IX Item "vrp-switch-limit"
! Maximum number of outgoing edges in a switch before \s-1VRP\s0 will not process it.
! .IP "\fBvrp-vector-threshold\fR" 4
  .IX Item "vrp-vector-threshold"
! Maximum number of basic blocks for \s-1VRP\s0 to use a basic cache vector.
! .IP "\fBavoid-fma-max-bits\fR" 4
  .IX Item "avoid-fma-max-bits"
  Maximum number of bits for which we avoid creating FMAs.
! .IP "\fBfully-pipelined-fma\fR" 4
  .IX Item "fully-pipelined-fma"
! Whether the target fully pipelines \s-1FMA\s0 instructions.  If non-zero,
! reassociation considers the benefit of parallelizing \s-1FMA\s0's multiplication
! part and addition part, assuming \s-1FMUL\s0 and \s-1FMA\s0 use the same units that can
! also do \s-1FADD.\s0
! .IP "\fBsms-loop-average-count-threshold\fR" 4
  .IX Item "sms-loop-average-count-threshold"
  A threshold on the average loop count considered by the swing modulo scheduler.
! .IP "\fBsms-dfa-history\fR" 4
  .IX Item "sms-dfa-history"
  The number of cycles the swing modulo scheduler considers when checking
! conflicts using \s-1DFA.\s0
! .IP "\fBgraphite-allow-codegen-errors\fR" 4
  .IX Item "graphite-allow-codegen-errors"
  Whether codegen errors should be ICEs when \fB\-fchecking\fR.
! .IP "\fBsms-max-ii-factor\fR" 4
  .IX Item "sms-max-ii-factor"
  A factor for tuning the upper bound that swing modulo scheduler
  uses for scheduling a loop.
! .IP "\fBlra-max-considered-reload-pseudos\fR" 4
  .IX Item "lra-max-considered-reload-pseudos"
  The max number of reload pseudos which are considered during
! spilling a non-reload pseudo.
! .IP "\fBmax-pow-sqrt-depth\fR" 4
  .IX Item "max-pow-sqrt-depth"
  Maximum depth of sqrt chains to use when synthesizing exponentiation
  by a real constant.
! .IP "\fBmax-dse-active-local-stores\fR" 4
  .IX Item "max-dse-active-local-stores"
! Maximum number of active local stores in \s-1RTL\s0 dead store elimination.
! .IP "\fBasan-instrument-allocas\fR" 4
  .IX Item "asan-instrument-allocas"
  Enable asan allocas/VLAs protection.
! .IP "\fBmax-iterations-computation-cost\fR" 4
  .IX Item "max-iterations-computation-cost"
  Bound on the cost of an expression to compute the number of iterations.
! .IP "\fBmax-isl-operations\fR" 4
  .IX Item "max-isl-operations"
  Maximum number of isl operations, 0 means unlimited.
! .IP "\fBgraphite-max-arrays-per-scop\fR" 4
  .IX Item "graphite-max-arrays-per-scop"
  Maximum number of arrays per scop.
! .IP "\fBmax-vartrack-reverse-op-size\fR" 4
  .IX Item "max-vartrack-reverse-op-size"
  Max. size of loc list for which reverse ops should be added.
! .IP "\fBfsm-scale-path-stmts\fR" 4
  .IX Item "fsm-scale-path-stmts"
  Scale factor to apply to the number of statements in a threading path
  crossing a loop backedge when comparing to
  \&\fB\-\-param=max\-jump\-thread\-duplication\-stmts\fR.
! .IP "\fBuninit-control-dep-attempts\fR" 4
  .IX Item "uninit-control-dep-attempts"
  Maximum number of nested calls to search for control dependencies
  during uninitialized variable analysis.
! .IP "\fBuninit-max-chain-len\fR" 4
  .IX Item "uninit-max-chain-len"
  Maximum number of predicates anded for each predicate ored in the normalized
  predicate chain.
! .IP "\fBuninit-max-num-chains\fR" 4
  .IX Item "uninit-max-num-chains"
  Maximum number of predicates ored in the normalized predicate chain.
! .IP "\fBuninit-max-prune-work\fR" 4
  .IX Item "uninit-max-prune-work"
  Maximum amount of work done to prune paths where the variable is always initialized.
! .IP "\fBsched-autopref-queue-depth\fR" 4
  .IX Item "sched-autopref-queue-depth"
  Hardware autoprefetcher scheduler model control flag.
! Number of lookahead cycles the model looks into; at '
! \&' only enable instruction sorting heuristic.
! .IP "\fBloop-versioning-max-inner-insns\fR" 4
  .IX Item "loop-versioning-max-inner-insns"
  The maximum number of instructions that an inner loop can have
  before the loop versioning pass considers it too big to copy.
! .IP "\fBloop-versioning-max-outer-insns\fR" 4
  .IX Item "loop-versioning-max-outer-insns"
  The maximum number of instructions that an outer loop can have
  before the loop versioning pass considers it too big to copy,
  discounting any instructions in inner loops that directly benefit
  from versioning.
! .IP "\fBssa-name-def-chain-limit\fR" 4
  .IX Item "ssa-name-def-chain-limit"
! The maximum number of \s-1SSA_NAME\s0 assignments to follow in determining
  a property of a variable such as its value.  This limits the number
! of iterations or recursive calls \s-1GCC\s0 performs when optimizing certain
  statements or when determining their validity prior to issuing
  diagnostics.
! .IP "\fBstore-merging-max-size\fR" 4
  .IX Item "store-merging-max-size"
  Maximum size of a single store merging region in bytes.
! .IP "\fBstore-forwarding-max-distance\fR" 4
  .IX Item "store-forwarding-max-distance"
  Maximum number of instruction distance that a small store forwarded to a larger
! load may stall. Value '0' disables the cost checks for the
! avoid-store-forwarding pass.
! .IP "\fBhash-table-verification-limit\fR" 4
  .IX Item "hash-table-verification-limit"
  The number of elements for which hash table verification is done
  for each searched element.
! .IP "\fBmax-find-base-term-values\fR" 4
  .IX Item "max-find-base-term-values"
  Maximum number of VALUEs handled during a single find_base_term call.
! .IP "\fBanalyzer-max-enodes-per-program-point\fR" 4
  .IX Item "analyzer-max-enodes-per-program-point"
  The maximum number of exploded nodes per program point within
  the analyzer, before terminating analysis of that point.
! .IP "\fBanalyzer-max-constraints\fR" 4
  .IX Item "analyzer-max-constraints"
  The maximum number of constraints per state.
! .IP "\fBanalyzer-min-snodes-for-call-summary\fR" 4
  .IX Item "analyzer-min-snodes-for-call-summary"
  The minimum number of supernodes within a function for the
  analyzer to consider summarizing its effects at call sites.
! .IP "\fBanalyzer-max-enodes-for-full-dump\fR" 4
  .IX Item "analyzer-max-enodes-for-full-dump"
  The maximum depth of exploded nodes that should appear in a dot dump
  before switching to a less verbose format.
! .IP "\fBanalyzer-max-recursion-depth\fR" 4
  .IX Item "analyzer-max-recursion-depth"
  The maximum number of times a callsite can appear in a call stack
  within the analyzer, before terminating analysis of a call that would
  recurse deeper.
! .IP "\fBanalyzer-max-svalue-depth\fR" 4
  .IX Item "analyzer-max-svalue-depth"
  The maximum depth of a symbolic value, before approximating
  the value as unknown.
! .IP "\fBanalyzer-max-infeasible-edges\fR" 4
  .IX Item "analyzer-max-infeasible-edges"
  The maximum number of infeasible edges to reject before declaring
  a diagnostic as infeasible.
! .IP "\fBgimple-fe-computed-hot-bb-threshold\fR" 4
  .IX Item "gimple-fe-computed-hot-bb-threshold"
  The number of executions of a basic block which is considered hot.
! The parameter is used only in \s-1GIMPLE FE.\s0
! .IP "\fBanalyzer-bb-explosion-factor\fR" 4
  .IX Item "analyzer-bb-explosion-factor"
! The maximum number of 'after supernode' exploded nodes within the analyzer
  per supernode, before terminating analysis.
! .IP "\fBanalyzer-text-art-string-ellipsis-threshold\fR" 4
  .IX Item "analyzer-text-art-string-ellipsis-threshold"
  The number of bytes at which to ellipsize string literals in analyzer text art diagrams.
! .IP "\fBanalyzer-text-art-ideal-canvas-width\fR" 4
  .IX Item "analyzer-text-art-ideal-canvas-width"
  The ideal width in characters of text art diagrams generated by the analyzer.
! .IP "\fBanalyzer-text-art-string-ellipsis-head-len\fR" 4
  .IX Item "analyzer-text-art-string-ellipsis-head-len"
  The number of literal bytes to show at the head of a string literal in text art when ellipsizing it.
! .IP "\fBanalyzer-text-art-string-ellipsis-tail-len\fR" 4
  .IX Item "analyzer-text-art-string-ellipsis-tail-len"
  The number of literal bytes to show at the tail of a string literal in text art when ellipsizing it.
! .IP "\fBranger-logical-depth\fR" 4
  .IX Item "ranger-logical-depth"
  Maximum depth of logical expression evaluation ranger will look through
  when evaluating outgoing edge ranges.
! .IP "\fBranger-recompute-depth\fR" 4
  .IX Item "ranger-recompute-depth"
  Maximum depth of instruction chains to consider for recomputation
  in the outgoing range calculator.
! .IP "\fBrelation-block-limit\fR" 4
  .IX Item "relation-block-limit"
  Maximum number of relations the oracle will register in a basic block.
! .IP "\fBtransitive-relations-work-bound\fR" 4
  .IX Item "transitive-relations-work-bound"
  Work bound when discovering transitive relations from existing relations.
! .IP "\fBmin-pagesize\fR" 4
  .IX Item "min-pagesize"
  Minimum page size for warning and early break vectorization purposes.
! .IP "\fBopenacc-kernels\fR" 4
  .IX Item "openacc-kernels"
! Specify mode of OpenACC `kernels' constructs handling.
! With \fB\-\-param=openacc\-kernels=decompose\fR, OpenACC `kernels'
  constructs are decomposed into parts, a sequence of compute
  constructs, each then handled individually.
  This is work in progress.
! With \fB\-\-param=openacc\-kernels=parloops\fR, OpenACC `kernels'
  constructs are handled by the \fBparloops\fR pass, en bloc.
  This is the current default.
! .IP "\fBopenacc-privatization\fR" 4
  .IX Item "openacc-privatization"
  Control whether the \fB\-fopt\-info\-omp\-note\fR and applicable
  \&\fB\-fdump\-tree\-*\-details\fR options emit OpenACC privatization diagnostics.
! With \fB\-\-param=openacc\-privatization=quiet\fR, don't diagnose.
  This is the current default.
  With \fB\-\-param=openacc\-privatization=noisy\fR, do diagnose.
! .IP "\fBcycle-accurate-model\fR" 4
  .IX Item "cycle-accurate-model"
! Specifies whether \s-1GCC\s0 should assume that the scheduling description is mostly
! a cycle-accurate model of the target processor the code is intended to
  run on, in the absence of cache misses.  Nonzero means that the selected
! scheduling model is accurate and likely describes an in-order processor,
  and that scheduling should aggressively spill to try and fill any pipeline
  bubbles.  This is the current default.  Zero means the scheduling description
  might not be available/accurate or perhaps not applicable at all, such as for
! modern out-of-order processors.
  .RE
  .RS 4
  .Sp
  The following choices of \fIname\fR are available on AArch64 targets:
! .IP "\fBaarch64\-vect\-compare\-costs\fR" 4
  .IX Item "aarch64-vect-compare-costs"
  When vectorizing, consider using multiple different approaches and use
  the cost model to choose the cheapest one.  This includes:
  .RS 4
! .IP "*" 4
! Trying both \s-1SVE\s0 and Advanced \s-1SIMD,\s0 when \s-1SVE\s0 is available.
! .IP "*" 4
! Trying to use 64\-bit Advanced \s-1SIMD\s0 vectors for the smallest data elements,
  rather than using 128\-bit vectors for everything.
! .IP "*" 4
! Trying to use \*(L"unpacked\*(R" \s-1SVE\s0 vectors for smaller elements.  This includes
  storing smaller elements in larger containers and accessing elements with
  extending loads and truncating stores.
  .RE
  .RS 4
  .RE
! .IP "\fBaarch64\-float\-recp\-precision\fR" 4
  .IX Item "aarch64-float-recp-precision"
  The number of Newton iterations for calculating the reciprocal for float type.
  The precision of division is proportional to this param when division
  approximation is enabled.  The default value is 1.
! .IP "\fBaarch64\-double\-recp\-precision\fR" 4
  .IX Item "aarch64-double-recp-precision"
  The number of Newton iterations for calculating the reciprocal for double type.
  The precision of division is proportional to this param when division
  approximation is enabled.  The default value is 2.
! .IP "\fBaarch64\-autovec\-preference\fR" 4
  .IX Item "aarch64-autovec-preference"
! Force an \s-1ISA\s0 selection strategy for auto-vectorization.
  .RS 4
! .IP "\fBdefault\fR" 4
  .IX Item "default"
  Use the default heuristics.
! .IP "\fBasimd-only\fR" 4
  .IX Item "asimd-only"
! Use only Advanced \s-1SIMD\s0 for auto-vectorization.
! .IP "\fBsve-only\fR" 4
  .IX Item "sve-only"
! Use only \s-1SVE\s0 for auto-vectorization.
! .IP "\fBprefer-asimd\fR" 4
  .IX Item "prefer-asimd"
! Use both Advanced \s-1SIMD\s0 and \s-1SVE.\s0  Prefer Advanced \s-1SIMD\s0 when the costs are
  deemed equal.
! .IP "\fBprefer-sve\fR" 4
  .IX Item "prefer-sve"
! Use both Advanced \s-1SIMD\s0 and \s-1SVE.\s0  Prefer \s-1SVE\s0 when the costs are deemed equal.
  .RE
  .RS 4
  .RE
! .IP "\fBaarch64\-ldp\-policy\fR" 4
  .IX Item "aarch64-ldp-policy"
! Fine-grained policy for load pairs.
  With \fB\-\-param=aarch64\-ldp\-policy=default\fR, use the policy of the
  tuning structure.  This is the current default.
  With \fB\-\-param=aarch64\-ldp\-policy=always\fR, emit ldp regardless
--- 16145,16428 ----
  code to iterate.  2 allows partial vector loads and stores in all loops.
  The parameter only has an effect on targets that support partial
  vector loads and stores.
! .IP \fBvect\-inner\-loop\-cost\-factor\fR 4
  .IX Item "vect-inner-loop-cost-factor"
  The maximum factor which the loop vectorizer applies to the cost of statements
  in an inner loop relative to the loop being vectorized.  The factor applied
  is the maximum of the estimated number of iterations of the inner loop and
  this parameter.  The default value of this parameter is 50.
! .IP \fBvect\-induction\-float\fR 4
  .IX Item "vect-induction-float"
  Enable loop vectorization of floating point inductions.
! .IP \fBvect\-force\-slp\fR 4
  .IX Item "vect-force-slp"
! Force the use of SLP when vectorizing, fail if not possible.
! .IP \fBvrp\-block\-limit\fR 4
  .IX Item "vrp-block-limit"
! Maximum number of basic blocks before VRP switches to a lower memory algorithm.
! .IP \fBvrp\-sparse\-threshold\fR 4
  .IX Item "vrp-sparse-threshold"
! Maximum number of basic blocks before VRP uses a sparse bitmap cache.
! .IP \fBvrp\-switch\-limit\fR 4
  .IX Item "vrp-switch-limit"
! Maximum number of outgoing edges in a switch before VRP will not process it.
! .IP \fBvrp\-vector\-threshold\fR 4
  .IX Item "vrp-vector-threshold"
! Maximum number of basic blocks for VRP to use a basic cache vector.
! .IP \fBavoid\-fma\-max\-bits\fR 4
  .IX Item "avoid-fma-max-bits"
  Maximum number of bits for which we avoid creating FMAs.
! .IP \fBfully\-pipelined\-fma\fR 4
  .IX Item "fully-pipelined-fma"
! Whether the target fully pipelines FMA instructions.  If non\-zero,
! reassociation considers the benefit of parallelizing FMA\*(Aqs multiplication
! part and addition part, assuming FMUL and FMA use the same units that can
! also do FADD.
! .IP \fBsms\-loop\-average\-count\-threshold\fR 4
  .IX Item "sms-loop-average-count-threshold"
  A threshold on the average loop count considered by the swing modulo scheduler.
! .IP \fBsms\-dfa\-history\fR 4
  .IX Item "sms-dfa-history"
  The number of cycles the swing modulo scheduler considers when checking
! conflicts using DFA.
! .IP \fBgraphite\-allow\-codegen\-errors\fR 4
  .IX Item "graphite-allow-codegen-errors"
  Whether codegen errors should be ICEs when \fB\-fchecking\fR.
! .IP \fBsms\-max\-ii\-factor\fR 4
  .IX Item "sms-max-ii-factor"
  A factor for tuning the upper bound that swing modulo scheduler
  uses for scheduling a loop.
! .IP \fBlra\-max\-considered\-reload\-pseudos\fR 4
  .IX Item "lra-max-considered-reload-pseudos"
  The max number of reload pseudos which are considered during
! spilling a non\-reload pseudo.
! .IP \fBmax\-pow\-sqrt\-depth\fR 4
  .IX Item "max-pow-sqrt-depth"
  Maximum depth of sqrt chains to use when synthesizing exponentiation
  by a real constant.
! .IP \fBmax\-dse\-active\-local\-stores\fR 4
  .IX Item "max-dse-active-local-stores"
! Maximum number of active local stores in RTL dead store elimination.
! .IP \fBasan\-instrument\-allocas\fR 4
  .IX Item "asan-instrument-allocas"
  Enable asan allocas/VLAs protection.
! .IP \fBmax\-iterations\-computation\-cost\fR 4
  .IX Item "max-iterations-computation-cost"
  Bound on the cost of an expression to compute the number of iterations.
! .IP \fBmax\-isl\-operations\fR 4
  .IX Item "max-isl-operations"
  Maximum number of isl operations, 0 means unlimited.
! .IP \fBgraphite\-max\-arrays\-per\-scop\fR 4
  .IX Item "graphite-max-arrays-per-scop"
  Maximum number of arrays per scop.
! .IP \fBmax\-vartrack\-reverse\-op\-size\fR 4
  .IX Item "max-vartrack-reverse-op-size"
  Max. size of loc list for which reverse ops should be added.
! .IP \fBfsm\-scale\-path\-stmts\fR 4
  .IX Item "fsm-scale-path-stmts"
  Scale factor to apply to the number of statements in a threading path
  crossing a loop backedge when comparing to
  \&\fB\-\-param=max\-jump\-thread\-duplication\-stmts\fR.
! .IP \fBuninit\-control\-dep\-attempts\fR 4
  .IX Item "uninit-control-dep-attempts"
  Maximum number of nested calls to search for control dependencies
  during uninitialized variable analysis.
! .IP \fBuninit\-max\-chain\-len\fR 4
  .IX Item "uninit-max-chain-len"
  Maximum number of predicates anded for each predicate ored in the normalized
  predicate chain.
! .IP \fBuninit\-max\-num\-chains\fR 4
  .IX Item "uninit-max-num-chains"
  Maximum number of predicates ored in the normalized predicate chain.
! .IP \fBuninit\-max\-prune\-work\fR 4
  .IX Item "uninit-max-prune-work"
  Maximum amount of work done to prune paths where the variable is always initialized.
! .IP \fBsched\-autopref\-queue\-depth\fR 4
  .IX Item "sched-autopref-queue-depth"
  Hardware autoprefetcher scheduler model control flag.
! Number of lookahead cycles the model looks into; at \*(Aq
! \&\*(Aq only enable instruction sorting heuristic.
! .IP \fBloop\-versioning\-max\-inner\-insns\fR 4
  .IX Item "loop-versioning-max-inner-insns"
  The maximum number of instructions that an inner loop can have
  before the loop versioning pass considers it too big to copy.
! .IP \fBloop\-versioning\-max\-outer\-insns\fR 4
  .IX Item "loop-versioning-max-outer-insns"
  The maximum number of instructions that an outer loop can have
  before the loop versioning pass considers it too big to copy,
  discounting any instructions in inner loops that directly benefit
  from versioning.
! .IP \fBssa\-name\-def\-chain\-limit\fR 4
  .IX Item "ssa-name-def-chain-limit"
! The maximum number of SSA_NAME assignments to follow in determining
  a property of a variable such as its value.  This limits the number
! of iterations or recursive calls GCC performs when optimizing certain
  statements or when determining their validity prior to issuing
  diagnostics.
! .IP \fBstore\-merging\-max\-size\fR 4
  .IX Item "store-merging-max-size"
  Maximum size of a single store merging region in bytes.
! .IP \fBstore\-forwarding\-max\-distance\fR 4
  .IX Item "store-forwarding-max-distance"
  Maximum number of instruction distance that a small store forwarded to a larger
! load may stall. Value \*(Aq0\*(Aq disables the cost checks for the
! avoid\-store\-forwarding pass.
! .IP \fBhash\-table\-verification\-limit\fR 4
  .IX Item "hash-table-verification-limit"
  The number of elements for which hash table verification is done
  for each searched element.
! .IP \fBmax\-find\-base\-term\-values\fR 4
  .IX Item "max-find-base-term-values"
  Maximum number of VALUEs handled during a single find_base_term call.
! .IP \fBanalyzer\-max\-enodes\-per\-program\-point\fR 4
  .IX Item "analyzer-max-enodes-per-program-point"
  The maximum number of exploded nodes per program point within
  the analyzer, before terminating analysis of that point.
! .IP \fBanalyzer\-max\-constraints\fR 4
  .IX Item "analyzer-max-constraints"
  The maximum number of constraints per state.
! .IP \fBanalyzer\-min\-snodes\-for\-call\-summary\fR 4
  .IX Item "analyzer-min-snodes-for-call-summary"
  The minimum number of supernodes within a function for the
  analyzer to consider summarizing its effects at call sites.
! .IP \fBanalyzer\-max\-enodes\-for\-full\-dump\fR 4
  .IX Item "analyzer-max-enodes-for-full-dump"
  The maximum depth of exploded nodes that should appear in a dot dump
  before switching to a less verbose format.
! .IP \fBanalyzer\-max\-recursion\-depth\fR 4
  .IX Item "analyzer-max-recursion-depth"
  The maximum number of times a callsite can appear in a call stack
  within the analyzer, before terminating analysis of a call that would
  recurse deeper.
! .IP \fBanalyzer\-max\-svalue\-depth\fR 4
  .IX Item "analyzer-max-svalue-depth"
  The maximum depth of a symbolic value, before approximating
  the value as unknown.
! .IP \fBanalyzer\-max\-infeasible\-edges\fR 4
  .IX Item "analyzer-max-infeasible-edges"
  The maximum number of infeasible edges to reject before declaring
  a diagnostic as infeasible.
! .IP \fBgimple\-fe\-computed\-hot\-bb\-threshold\fR 4
  .IX Item "gimple-fe-computed-hot-bb-threshold"
  The number of executions of a basic block which is considered hot.
! The parameter is used only in GIMPLE FE.
! .IP \fBanalyzer\-bb\-explosion\-factor\fR 4
  .IX Item "analyzer-bb-explosion-factor"
! The maximum number of \*(Aqafter supernode\*(Aq exploded nodes within the analyzer
  per supernode, before terminating analysis.
! .IP \fBanalyzer\-text\-art\-string\-ellipsis\-threshold\fR 4
  .IX Item "analyzer-text-art-string-ellipsis-threshold"
  The number of bytes at which to ellipsize string literals in analyzer text art diagrams.
! .IP \fBanalyzer\-text\-art\-ideal\-canvas\-width\fR 4
  .IX Item "analyzer-text-art-ideal-canvas-width"
  The ideal width in characters of text art diagrams generated by the analyzer.
! .IP \fBanalyzer\-text\-art\-string\-ellipsis\-head\-len\fR 4
  .IX Item "analyzer-text-art-string-ellipsis-head-len"
  The number of literal bytes to show at the head of a string literal in text art when ellipsizing it.
! .IP \fBanalyzer\-text\-art\-string\-ellipsis\-tail\-len\fR 4
  .IX Item "analyzer-text-art-string-ellipsis-tail-len"
  The number of literal bytes to show at the tail of a string literal in text art when ellipsizing it.
! .IP \fBranger\-logical\-depth\fR 4
  .IX Item "ranger-logical-depth"
  Maximum depth of logical expression evaluation ranger will look through
  when evaluating outgoing edge ranges.
! .IP \fBranger\-recompute\-depth\fR 4
  .IX Item "ranger-recompute-depth"
  Maximum depth of instruction chains to consider for recomputation
  in the outgoing range calculator.
! .IP \fBrelation\-block\-limit\fR 4
  .IX Item "relation-block-limit"
  Maximum number of relations the oracle will register in a basic block.
! .IP \fBtransitive\-relations\-work\-bound\fR 4
  .IX Item "transitive-relations-work-bound"
  Work bound when discovering transitive relations from existing relations.
! .IP \fBmin\-pagesize\fR 4
  .IX Item "min-pagesize"
  Minimum page size for warning and early break vectorization purposes.
! .IP \fBopenacc\-kernels\fR 4
  .IX Item "openacc-kernels"
! Specify mode of OpenACC \`kernels\*(Aq constructs handling.
! With \fB\-\-param=openacc\-kernels=decompose\fR, OpenACC \`kernels\*(Aq
  constructs are decomposed into parts, a sequence of compute
  constructs, each then handled individually.
  This is work in progress.
! With \fB\-\-param=openacc\-kernels=parloops\fR, OpenACC \`kernels\*(Aq
  constructs are handled by the \fBparloops\fR pass, en bloc.
  This is the current default.
! .IP \fBopenacc\-privatization\fR 4
  .IX Item "openacc-privatization"
  Control whether the \fB\-fopt\-info\-omp\-note\fR and applicable
  \&\fB\-fdump\-tree\-*\-details\fR options emit OpenACC privatization diagnostics.
! With \fB\-\-param=openacc\-privatization=quiet\fR, don\*(Aqt diagnose.
  This is the current default.
  With \fB\-\-param=openacc\-privatization=noisy\fR, do diagnose.
! .IP \fBcycle\-accurate\-model\fR 4
  .IX Item "cycle-accurate-model"
! Specifies whether GCC should assume that the scheduling description is mostly
! a cycle\-accurate model of the target processor the code is intended to
  run on, in the absence of cache misses.  Nonzero means that the selected
! scheduling model is accurate and likely describes an in\-order processor,
  and that scheduling should aggressively spill to try and fill any pipeline
  bubbles.  This is the current default.  Zero means the scheduling description
  might not be available/accurate or perhaps not applicable at all, such as for
! modern out\-of\-order processors.
  .RE
  .RS 4
  .Sp
  The following choices of \fIname\fR are available on AArch64 targets:
! .IP \fBaarch64\-vect\-compare\-costs\fR 4
  .IX Item "aarch64-vect-compare-costs"
  When vectorizing, consider using multiple different approaches and use
  the cost model to choose the cheapest one.  This includes:
  .RS 4
! .IP * 4
! Trying both SVE and Advanced SIMD, when SVE is available.
! .IP * 4
! Trying to use 64\-bit Advanced SIMD vectors for the smallest data elements,
  rather than using 128\-bit vectors for everything.
! .IP * 4
! Trying to use "unpacked" SVE vectors for smaller elements.  This includes
  storing smaller elements in larger containers and accessing elements with
  extending loads and truncating stores.
  .RE
  .RS 4
  .RE
! .IP \fBaarch64\-float\-recp\-precision\fR 4
  .IX Item "aarch64-float-recp-precision"
  The number of Newton iterations for calculating the reciprocal for float type.
  The precision of division is proportional to this param when division
  approximation is enabled.  The default value is 1.
! .IP \fBaarch64\-double\-recp\-precision\fR 4
  .IX Item "aarch64-double-recp-precision"
  The number of Newton iterations for calculating the reciprocal for double type.
  The precision of division is proportional to this param when division
  approximation is enabled.  The default value is 2.
! .IP \fBaarch64\-autovec\-preference\fR 4
  .IX Item "aarch64-autovec-preference"
! Force an ISA selection strategy for auto\-vectorization.
  .RS 4
! .IP \fBdefault\fR 4
  .IX Item "default"
  Use the default heuristics.
! .IP \fBasimd\-only\fR 4
  .IX Item "asimd-only"
! Use only Advanced SIMD for auto\-vectorization.
! .IP \fBsve\-only\fR 4
  .IX Item "sve-only"
! Use only SVE for auto\-vectorization.
! .IP \fBprefer\-asimd\fR 4
  .IX Item "prefer-asimd"
! Use both Advanced SIMD and SVE.  Prefer Advanced SIMD when the costs are
  deemed equal.
! .IP \fBprefer\-sve\fR 4
  .IX Item "prefer-sve"
! Use both Advanced SIMD and SVE.  Prefer SVE when the costs are deemed equal.
  .RE
  .RS 4
  .RE
! .IP \fBaarch64\-ldp\-policy\fR 4
  .IX Item "aarch64-ldp-policy"
! Fine\-grained policy for load pairs.
  With \fB\-\-param=aarch64\-ldp\-policy=default\fR, use the policy of the
  tuning structure.  This is the current default.
  With \fB\-\-param=aarch64\-ldp\-policy=always\fR, emit ldp regardless
*************** of alignment.
*** 16497,16505 ****
  With \fB\-\-param=aarch64\-ldp\-policy=never\fR, do not emit ldp.
  With \fB\-\-param=aarch64\-ldp\-policy=aligned\fR, emit ldp only if the
  source pointer is aligned to at least double the alignment of the type.
! .IP "\fBaarch64\-stp\-policy\fR" 4
  .IX Item "aarch64-stp-policy"
! Fine-grained policy for store pairs.
  With \fB\-\-param=aarch64\-stp\-policy=default\fR, use the policy of the
  tuning structure.  This is the current default.
  With \fB\-\-param=aarch64\-stp\-policy=always\fR, emit stp regardless
--- 16430,16438 ----
  With \fB\-\-param=aarch64\-ldp\-policy=never\fR, do not emit ldp.
  With \fB\-\-param=aarch64\-ldp\-policy=aligned\fR, emit ldp only if the
  source pointer is aligned to at least double the alignment of the type.
! .IP \fBaarch64\-stp\-policy\fR 4
  .IX Item "aarch64-stp-policy"
! Fine\-grained policy for store pairs.
  With \fB\-\-param=aarch64\-stp\-policy=default\fR, use the policy of the
  tuning structure.  This is the current default.
  With \fB\-\-param=aarch64\-stp\-policy=always\fR, emit stp regardless
*************** of alignment.
*** 16507,16519 ****
  With \fB\-\-param=aarch64\-stp\-policy=never\fR, do not emit stp.
  With \fB\-\-param=aarch64\-stp\-policy=aligned\fR, emit stp only if the
  source pointer is aligned to at least double the alignment of the type.
! .IP "\fBaarch64\-ldp\-alias\-check\-limit\fR" 4
  .IX Item "aarch64-ldp-alias-check-limit"
  Limit on the number of alias checks performed by the AArch64 load/store pair
  fusion pass when attempting to form an ldp/stp.  Higher values make the pass
! more aggressive at re-ordering loads over stores, at the expense of increased
  compile time.
! .IP "\fBaarch64\-ldp\-writeback\fR" 4
  .IX Item "aarch64-ldp-writeback"
  Param to control which writeback opportunities we try to handle in the AArch64
  load/store pair fusion pass.  A value of zero disables writeback handling.  One
--- 16440,16452 ----
  With \fB\-\-param=aarch64\-stp\-policy=never\fR, do not emit stp.
  With \fB\-\-param=aarch64\-stp\-policy=aligned\fR, emit stp only if the
  source pointer is aligned to at least double the alignment of the type.
! .IP \fBaarch64\-ldp\-alias\-check\-limit\fR 4
  .IX Item "aarch64-ldp-alias-check-limit"
  Limit on the number of alias checks performed by the AArch64 load/store pair
  fusion pass when attempting to form an ldp/stp.  Higher values make the pass
! more aggressive at re\-ordering loads over stores, at the expense of increased
  compile time.
! .IP \fBaarch64\-ldp\-writeback\fR 4
  .IX Item "aarch64-ldp-writeback"
  Param to control which writeback opportunities we try to handle in the AArch64
  load/store pair fusion pass.  A value of zero disables writeback handling.  One
*************** means we try to form pairs involving one
*** 16521,16579 ****
  accesses where possible.  A value of two means we also try to opportunistically
  form writeback opportunities by folding in trailing destructive updates of the
  base register used by a pair.
! .IP "\fBaarch64\-loop\-vect\-issue\-rate\-niters\fR" 4
  .IX Item "aarch64-loop-vect-issue-rate-niters"
  The tuning for some AArch64 CPUs tries to take both latencies and issue
  rates into account when deciding whether a loop should be vectorized
! using \s-1SVE,\s0 vectorized using Advanced \s-1SIMD,\s0 or not vectorized at all.
! If this parameter is set to \fIn\fR, \s-1GCC\s0 will not use this heuristic
  for loops that are known to execute in fewer than \fIn\fR Advanced
! \&\s-1SIMD\s0 iterations.
! .IP "\fBaarch64\-vect\-unroll\-limit\fR" 4
  .IX Item "aarch64-vect-unroll-limit"
  The vectorizer will use available tuning information to determine whether it
  would be beneficial to unroll the main vectorized loop and by how much.  This
! parameter set's the upper bound of how much the vectorizer will unroll the main
  loop.  The default value is four.
  .RE
  .RS 4
  .Sp
! The following choices of \fIname\fR are available on \s-1GCN\s0 targets:
! .IP "\fBgcn-preferred-vectorization-factor\fR" 4
  .IX Item "gcn-preferred-vectorization-factor"
  Preferred vectorization factor: \fBdefault\fR, \fB32\fR, \fB64\fR.
  .RE
  .RS 4
  .Sp
  The following choices of \fIname\fR are available on i386 and x86_64 targets:
! .IP "\fBx86\-stlf\-window\-ninsns\fR" 4
  .IX Item "x86-stlf-window-ninsns"
! Instructions number above which \s-1STFL\s0 stall penalty can be compensated.
! .IP "\fBx86\-stv\-max\-visits\fR" 4
  .IX Item "x86-stv-max-visits"
! The maximum number of use and def visits when discovering a \s-1STV\s0 chain before
  the discovery is aborted.
  .RE
  .RS 4
  .RE
  .SS "Program Instrumentation Options"
  .IX Subsection "Program Instrumentation Options"
! \&\s-1GCC\s0 supports a number of command-line options that control adding
! run-time instrumentation to the code it normally generates.
  For example, one purpose of instrumentation is collect profiling
  statistics for use in finding program hot spots, code coverage
! analysis, or profile-guided optimizations.
! Another class of program instrumentation is adding run-time checking
  to detect programming errors like invalid pointer
! dereferences or out-of-bounds array accesses, as well as deliberately
! hostile attacks such as stack smashing or \*(C+ vtable hijacking.
  There is also a general hook which can be used to implement other
! forms of tracing or function-level instrumentation for debug or
  program analysis purposes.
! .IP "\fB\-p\fR" 4
  .IX Item "-p"
  .PD 0
! .IP "\fB\-pg\fR" 4
  .IX Item "-pg"
  .PD
  Generate extra code to write profile information suitable for the
--- 16454,16512 ----
  accesses where possible.  A value of two means we also try to opportunistically
  form writeback opportunities by folding in trailing destructive updates of the
  base register used by a pair.
! .IP \fBaarch64\-loop\-vect\-issue\-rate\-niters\fR 4
  .IX Item "aarch64-loop-vect-issue-rate-niters"
  The tuning for some AArch64 CPUs tries to take both latencies and issue
  rates into account when deciding whether a loop should be vectorized
! using SVE, vectorized using Advanced SIMD, or not vectorized at all.
! If this parameter is set to \fIn\fR, GCC will not use this heuristic
  for loops that are known to execute in fewer than \fIn\fR Advanced
! SIMD iterations.
! .IP \fBaarch64\-vect\-unroll\-limit\fR 4
  .IX Item "aarch64-vect-unroll-limit"
  The vectorizer will use available tuning information to determine whether it
  would be beneficial to unroll the main vectorized loop and by how much.  This
! parameter set\*(Aqs the upper bound of how much the vectorizer will unroll the main
  loop.  The default value is four.
  .RE
  .RS 4
  .Sp
! The following choices of \fIname\fR are available on GCN targets:
! .IP \fBgcn\-preferred\-vectorization\-factor\fR 4
  .IX Item "gcn-preferred-vectorization-factor"
  Preferred vectorization factor: \fBdefault\fR, \fB32\fR, \fB64\fR.
  .RE
  .RS 4
  .Sp
  The following choices of \fIname\fR are available on i386 and x86_64 targets:
! .IP \fBx86\-stlf\-window\-ninsns\fR 4
  .IX Item "x86-stlf-window-ninsns"
! Instructions number above which STFL stall penalty can be compensated.
! .IP \fBx86\-stv\-max\-visits\fR 4
  .IX Item "x86-stv-max-visits"
! The maximum number of use and def visits when discovering a STV chain before
  the discovery is aborted.
  .RE
  .RS 4
  .RE
  .SS "Program Instrumentation Options"
  .IX Subsection "Program Instrumentation Options"
! GCC supports a number of command\-line options that control adding
! run\-time instrumentation to the code it normally generates.
  For example, one purpose of instrumentation is collect profiling
  statistics for use in finding program hot spots, code coverage
! analysis, or profile\-guided optimizations.
! Another class of program instrumentation is adding run\-time checking
  to detect programming errors like invalid pointer
! dereferences or out\-of\-bounds array accesses, as well as deliberately
! hostile attacks such as stack smashing or C++ vtable hijacking.
  There is also a general hook which can be used to implement other
! forms of tracing or function\-level instrumentation for debug or
  program analysis purposes.
! .IP \fB\-p\fR 4
  .IX Item "-p"
  .PD 0
! .IP \fB\-pg\fR 4
  .IX Item "-pg"
  .PD
  Generate extra code to write profile information suitable for the
*************** linking.
*** 16584,16603 ****
  .Sp
  You can use the function attribute \f(CW\*(C`no_instrument_function\*(C'\fR to
  suppress profiling of individual functions when compiling with these options.
! .IP "\fB\-fprofile\-arcs\fR" 4
  .IX Item "-fprofile-arcs"
  Add code so that program flow \fIarcs\fR are instrumented.  During
  execution the program records how many times each branch and call is
  executed and how many times it is taken or returns.  On targets that support
  constructors with priority support, profiling properly handles constructors,
! destructors and \*(C+ constructors (and destructors) of classes which are used
  as a type of a global variable.
  .Sp
  When the compiled
  program exits it saves this data to a file called
! \&\fI\fIauxname\fI.gcda\fR for each source file.  The data may be used for
! profile-directed optimizations (\fB\-fbranch\-probabilities\fR), or for
! test coverage analysis (\fB\-ftest\-coverage\fR).  Each object file's
  \&\fIauxname\fR is generated from the name of the output file, if
  explicitly specified and it is not the final executable, otherwise it is
  the basename of the source file.  In both cases any suffix is removed
--- 16517,16536 ----
  .Sp
  You can use the function attribute \f(CW\*(C`no_instrument_function\*(C'\fR to
  suppress profiling of individual functions when compiling with these options.
! .IP \fB\-fprofile\-arcs\fR 4
  .IX Item "-fprofile-arcs"
  Add code so that program flow \fIarcs\fR are instrumented.  During
  execution the program records how many times each branch and call is
  executed and how many times it is taken or returns.  On targets that support
  constructors with priority support, profiling properly handles constructors,
! destructors and C++ constructors (and destructors) of classes which are used
  as a type of a global variable.
  .Sp
  When the compiled
  program exits it saves this data to a file called
! \&\fIauxname.gcda\fR for each source file.  The data may be used for
! profile\-directed optimizations (\fB\-fbranch\-probabilities\fR), or for
! test coverage analysis (\fB\-ftest\-coverage\fR).  Each object file\*(Aqs
  \&\fIauxname\fR is generated from the name of the output file, if
  explicitly specified and it is not the final executable, otherwise it is
  the basename of the source file.  In both cases any suffix is removed
*************** Note that if a command line directly lin
*** 16608,16681 ****
  \&\fI.gcda\fR files will be prefixed with the unsuffixed name of the output file.
  E.g. \f(CW\*(C`gcc a.c b.c \-o binary\*(C'\fR would generate \fIbinary\-a.gcda\fR and
  \&\fIbinary\-b.gcda\fR files.
! .IP "\fB\-fcondition\-coverage\fR" 4
  .IX Item "-fcondition-coverage"
  Add code so that program conditions are instrumented.  During execution the
  program records what terms in a conditional contributes to a decision, which
  can be used to verify that all terms in a Boolean function are tested and have
  an independent effect on the outcome of a decision.  The result can be read
  with \f(CW\*(C`gcov \-\-conditions\*(C'\fR.
! .IP "\fB\-fpath\-coverage\fR" 4
  .IX Item "-fpath-coverage"
  Add code so that the paths taken are tracked.  During execution the
  program records the prime paths taken.  The number of paths grows very
! fast with complexity, and to avoid exploding compile times \s-1GCC\s0 will give
  up instrumentation if the approximate number of paths exceeds the limit
  controlled by \fB\-fpath\-coverage\-limit\fR.  The result can be read
  with \f(CW\*(C`gcov \-\-prime\-paths \-\-prime\-paths\-lines \-\-prime\-paths\-source\*(C'\fR,
! .IP "\fB\-fpath\-coverage\-limit=\fR\fIlimit\fR" 4
  .IX Item "-fpath-coverage-limit=limit"
  The threshold at which point \fB\-fpath\-coverage\fR gives up on
  instrumenting a function.  This limit is approximate and conservative,
! as \s-1GCC\s0 uses a pessimistic heuristic which slightly overcounts the
  running number of paths, and gives up if the threshold is reached before
  finding all the paths.  This option is not for fine grained control over
  which functions to instrument \- rather it is intended to limit the
  effect of path explosion and keep compile times reasonable.  The default
  is \fI250000\fR.
! .IP "\fB\-\-coverage\fR" 4
  .IX Item "--coverage"
  This option is used to compile and link code instrumented for coverage
  analysis.  The option is a synonym for \fB\-fprofile\-arcs\fR
  \&\fB\-ftest\-coverage\fR (when compiling) and \fB\-lgcov\fR (when
  linking).  See the documentation for those options for more details.
  .RS 4
! .IP "*" 4
  Compile the source files with \fB\-fprofile\-arcs\fR plus optimization
  and code generation options.  For test coverage analysis, use the
  additional \fB\-ftest\-coverage\fR option.  You do not need to profile
  every source file in a program.
! .IP "*" 4
  Compile the source files additionally with \fB\-fprofile\-abs\-path\fR
  to create absolute path names in the \fI.gcno\fR files.  This allows
  \&\fBgcov\fR to find the correct sources in projects where compilations
  occur with different working directories.
! .IP "*" 4
  Link your object files with \fB\-lgcov\fR or \fB\-fprofile\-arcs\fR
  (the latter implies the former).
! .IP "*" 4
  Run the program on a representative workload to generate the arc profile
  information.  This may be repeated any number of times.  You can run
  concurrent instances of your program, and provided that the file system
  supports locking, the data files will be correctly updated.  Unless
! a strict \s-1ISO C\s0 dialect option is in effect, \f(CW\*(C`fork\*(C'\fR calls are
  detected and correctly handled without double counting.
  .Sp
  Moreover, an object file can be recompiled multiple times
  and the corresponding \fI.gcda\fR file merges as long as
  the source file and the compiler options are unchanged.
! .IP "*" 4
! For profile-directed optimizations, compile the source files again with
  the same optimization and code generation options plus
  \&\fB\-fbranch\-probabilities\fR.
! .IP "*" 4
  For test coverage analysis, use \fBgcov\fR to produce human readable
  information from the \fI.gcno\fR and \fI.gcda\fR files.  Refer to the
  \&\fBgcov\fR documentation for further information.
  .RE
  .RS 4
  .Sp
! With \fB\-fprofile\-arcs\fR, for each function of your program \s-1GCC\s0
  creates a program flow graph, then finds a spanning tree for the graph.
  Only arcs that are not on the spanning tree have to be instrumented: the
  compiler adds code to count the number of times that these arcs are
--- 16541,16614 ----
  \&\fI.gcda\fR files will be prefixed with the unsuffixed name of the output file.
  E.g. \f(CW\*(C`gcc a.c b.c \-o binary\*(C'\fR would generate \fIbinary\-a.gcda\fR and
  \&\fIbinary\-b.gcda\fR files.
! .IP \fB\-fcondition\-coverage\fR 4
  .IX Item "-fcondition-coverage"
  Add code so that program conditions are instrumented.  During execution the
  program records what terms in a conditional contributes to a decision, which
  can be used to verify that all terms in a Boolean function are tested and have
  an independent effect on the outcome of a decision.  The result can be read
  with \f(CW\*(C`gcov \-\-conditions\*(C'\fR.
! .IP \fB\-fpath\-coverage\fR 4
  .IX Item "-fpath-coverage"
  Add code so that the paths taken are tracked.  During execution the
  program records the prime paths taken.  The number of paths grows very
! fast with complexity, and to avoid exploding compile times GCC will give
  up instrumentation if the approximate number of paths exceeds the limit
  controlled by \fB\-fpath\-coverage\-limit\fR.  The result can be read
  with \f(CW\*(C`gcov \-\-prime\-paths \-\-prime\-paths\-lines \-\-prime\-paths\-source\*(C'\fR,
! .IP \fB\-fpath\-coverage\-limit=\fR\fIlimit\fR 4
  .IX Item "-fpath-coverage-limit=limit"
  The threshold at which point \fB\-fpath\-coverage\fR gives up on
  instrumenting a function.  This limit is approximate and conservative,
! as GCC uses a pessimistic heuristic which slightly overcounts the
  running number of paths, and gives up if the threshold is reached before
  finding all the paths.  This option is not for fine grained control over
  which functions to instrument \- rather it is intended to limit the
  effect of path explosion and keep compile times reasonable.  The default
  is \fI250000\fR.
! .IP \fB\-\-coverage\fR 4
  .IX Item "--coverage"
  This option is used to compile and link code instrumented for coverage
  analysis.  The option is a synonym for \fB\-fprofile\-arcs\fR
  \&\fB\-ftest\-coverage\fR (when compiling) and \fB\-lgcov\fR (when
  linking).  See the documentation for those options for more details.
  .RS 4
! .IP * 4
  Compile the source files with \fB\-fprofile\-arcs\fR plus optimization
  and code generation options.  For test coverage analysis, use the
  additional \fB\-ftest\-coverage\fR option.  You do not need to profile
  every source file in a program.
! .IP * 4
  Compile the source files additionally with \fB\-fprofile\-abs\-path\fR
  to create absolute path names in the \fI.gcno\fR files.  This allows
  \&\fBgcov\fR to find the correct sources in projects where compilations
  occur with different working directories.
! .IP * 4
  Link your object files with \fB\-lgcov\fR or \fB\-fprofile\-arcs\fR
  (the latter implies the former).
! .IP * 4
  Run the program on a representative workload to generate the arc profile
  information.  This may be repeated any number of times.  You can run
  concurrent instances of your program, and provided that the file system
  supports locking, the data files will be correctly updated.  Unless
! a strict ISO C dialect option is in effect, \f(CW\*(C`fork\*(C'\fR calls are
  detected and correctly handled without double counting.
  .Sp
  Moreover, an object file can be recompiled multiple times
  and the corresponding \fI.gcda\fR file merges as long as
  the source file and the compiler options are unchanged.
! .IP * 4
! For profile\-directed optimizations, compile the source files again with
  the same optimization and code generation options plus
  \&\fB\-fbranch\-probabilities\fR.
! .IP * 4
  For test coverage analysis, use \fBgcov\fR to produce human readable
  information from the \fI.gcno\fR and \fI.gcda\fR files.  Refer to the
  \&\fBgcov\fR documentation for further information.
  .RE
  .RS 4
  .Sp
! With \fB\-fprofile\-arcs\fR, for each function of your program GCC
  creates a program flow graph, then finds a spanning tree for the graph.
  Only arcs that are not on the spanning tree have to be instrumented: the
  compiler adds code to count the number of times that these arcs are
*************** executed.  When an arc is the only exit
*** 16683,16693 ****
  instrumentation code can be added to the block; otherwise, a new basic
  block must be created to hold the instrumentation code.
  .Sp
! With \fB\-fcondition\-coverage\fR, for each conditional in your program \s-1GCC\s0
  creates a bitset and records the exercised boolean values that have an
  independent effect on the outcome of that expression.
  .Sp
! With \fB\-fpath\-coverage\fR, \s-1GCC\s0 finds and enumerates and records the
  taken prime paths of each function, unless the number of paths would
  exceed the limit controlled by \fB\-fpath\-coverage\-limit\fR.  If the
  limit is exceeded the function is not instrumented as if
--- 16616,16626 ----
  instrumentation code can be added to the block; otherwise, a new basic
  block must be created to hold the instrumentation code.
  .Sp
! With \fB\-fcondition\-coverage\fR, for each conditional in your program GCC
  creates a bitset and records the exercised boolean values that have an
  independent effect on the outcome of that expression.
  .Sp
! With \fB\-fpath\-coverage\fR, GCC finds and enumerates and records the
  taken prime paths of each function, unless the number of paths would
  exceed the limit controlled by \fB\-fpath\-coverage\-limit\fR.  If the
  limit is exceeded the function is not instrumented as if
*************** limit is exceeded the function is not in
*** 16695,16746 ****
  sequence of unique blocks, except possibly the first and last, which is
  not a subpath of any other path.
  .RE
! .IP "\fB\-ftest\-coverage\fR" 4
  .IX Item "-ftest-coverage"
! Produce a notes file that the \fBgcov\fR code-coverage utility can use to
! show program coverage.  Each source file's note file is called
! \&\fI\fIauxname\fI.gcno\fR.  Refer to the \fB\-fprofile\-arcs\fR option
  above for a description of \fIauxname\fR and instructions on how to
  generate test coverage data.  Coverage data matches the source files
  more closely if you do not optimize.
! .IP "\fB\-fprofile\-abs\-path\fR" 4
  .IX Item "-fprofile-abs-path"
  Automatically convert relative source file names to absolute path names
  in the \fI.gcno\fR files.  This allows \fBgcov\fR to find the correct
  sources in projects where compilations occur with different working
  directories.
! .IP "\fB\-fprofile\-dir=\fR\fIpath\fR" 4
  .IX Item "-fprofile-dir=path"
  Set the directory to search for the profile data files in to \fIpath\fR.
  This option affects only the profile data generated by
  \&\fB\-fprofile\-generate\fR, \fB\-ftest\-coverage\fR, \fB\-fprofile\-arcs\fR
  and used by \fB\-fprofile\-use\fR and \fB\-fbranch\-probabilities\fR
  and its related options.  Both absolute and relative paths can be used.
! By default, \s-1GCC\s0 uses the current directory as \fIpath\fR, thus the
  profile data file appears in the same directory as the object file.
  In order to prevent the file name clashing, if the object file name is
  not an absolute path, we mangle the absolute path of the
! \&\fI\fIsourcename\fI.gcda\fR file and use it as the file name of a
  \&\fI.gcda\fR file.  See details about the file naming in \fB\-fprofile\-arcs\fR.
  See similar option \fB\-fprofile\-note\fR.
  .Sp
  When an executable is run in a massive parallel environment, it is recommended
  to save profile to different folders.  That can be done with variables
! in \fIpath\fR that are exported during run-time:
  .RS 4
! .IP "\fB\f(CB%p\fB\fR" 4
  .IX Item "%p"
! process \s-1ID.\s0
! .IP "\fB\f(CB%q\fB{\s-1VAR\s0}\fR" 4
  .IX Item "%q{VAR}"
! value of environment variable \fI\s-1VAR\s0\fR
  .RE
  .RS 4
  .RE
! .IP "\fB\-fprofile\-generate\fR" 4
  .IX Item "-fprofile-generate"
  .PD 0
! .IP "\fB\-fprofile\-generate=\fR\fIpath\fR" 4
  .IX Item "-fprofile-generate=path"
  .PD
  Enable options usually used for instrumenting application to produce
--- 16628,16681 ----
  sequence of unique blocks, except possibly the first and last, which is
  not a subpath of any other path.
  .RE
! .IP \fB\-ftest\-coverage\fR 4
  .IX Item "-ftest-coverage"
! Produce a notes file that the \fBgcov\fR code\-coverage utility can use to
! show program coverage.  Each source file\*(Aqs note file is called
! \&\fIauxname.gcno\fR.  Refer to the \fB\-fprofile\-arcs\fR option
  above for a description of \fIauxname\fR and instructions on how to
  generate test coverage data.  Coverage data matches the source files
  more closely if you do not optimize.
! .IP \fB\-fprofile\-abs\-path\fR 4
  .IX Item "-fprofile-abs-path"
  Automatically convert relative source file names to absolute path names
  in the \fI.gcno\fR files.  This allows \fBgcov\fR to find the correct
  sources in projects where compilations occur with different working
  directories.
! .IP \fB\-fprofile\-dir=\fR\fIpath\fR 4
  .IX Item "-fprofile-dir=path"
  Set the directory to search for the profile data files in to \fIpath\fR.
  This option affects only the profile data generated by
  \&\fB\-fprofile\-generate\fR, \fB\-ftest\-coverage\fR, \fB\-fprofile\-arcs\fR
  and used by \fB\-fprofile\-use\fR and \fB\-fbranch\-probabilities\fR
  and its related options.  Both absolute and relative paths can be used.
! By default, GCC uses the current directory as \fIpath\fR, thus the
  profile data file appears in the same directory as the object file.
  In order to prevent the file name clashing, if the object file name is
  not an absolute path, we mangle the absolute path of the
! \&\fIsourcename.gcda\fR file and use it as the file name of a
  \&\fI.gcda\fR file.  See details about the file naming in \fB\-fprofile\-arcs\fR.
  See similar option \fB\-fprofile\-note\fR.
  .Sp
  When an executable is run in a massive parallel environment, it is recommended
  to save profile to different folders.  That can be done with variables
! in \fIpath\fR that are exported during run\-time:
  .RS 4
! .ie n .IP \fR\fB%p\fR\fB\fR 4
! .el .IP \fR\f(CB%p\fR\fB\fR 4
  .IX Item "%p"
! process ID.
! .ie n .IP \fR\fB%q\fR\fB{VAR}\fR 4
! .el .IP \fR\f(CB%q\fR\fB{VAR}\fR 4
  .IX Item "%q{VAR}"
! value of environment variable \fIVAR\fR
  .RE
  .RS 4
  .RE
! .IP \fB\-fprofile\-generate\fR 4
  .IX Item "-fprofile-generate"
  .PD 0
! .IP \fB\-fprofile\-generate=\fR\fIpath\fR 4
  .IX Item "-fprofile-generate=path"
  .PD
  Enable options usually used for instrumenting application to produce
*************** The following options are enabled:
*** 16752,16766 ****
  \&\fB\-fprofile\-arcs\fR, \fB\-fprofile\-values\fR,
  \&\fB\-finline\-functions\fR, and \fB\-fipa\-bit\-cp\fR.
  .Sp
! If \fIpath\fR is specified, \s-1GCC\s0 looks at the \fIpath\fR to find
  the profile feedback data files. See \fB\-fprofile\-dir\fR.
  .Sp
  To optimize the program based on the collected profile information, use
  \&\fB\-fprofile\-use\fR.
! .IP "\fB\-fprofile\-info\-section\fR" 4
  .IX Item "-fprofile-info-section"
  .PD 0
! .IP "\fB\-fprofile\-info\-section=\fR\fIname\fR" 4
  .IX Item "-fprofile-info-section=name"
  .PD
  Register the profile information in the specified section instead of using a
--- 16687,16701 ----
  \&\fB\-fprofile\-arcs\fR, \fB\-fprofile\-values\fR,
  \&\fB\-finline\-functions\fR, and \fB\-fipa\-bit\-cp\fR.
  .Sp
! If \fIpath\fR is specified, GCC looks at the \fIpath\fR to find
  the profile feedback data files. See \fB\-fprofile\-dir\fR.
  .Sp
  To optimize the program based on the collected profile information, use
  \&\fB\-fprofile\-use\fR.
! .IP \fB\-fprofile\-info\-section\fR 4
  .IX Item "-fprofile-info-section"
  .PD 0
! .IP \fB\-fprofile\-info\-section=\fR\fIname\fR 4
  .IX Item "-fprofile-info-section=name"
  .PD
  Register the profile information in the specified section instead of using a
*************** environments (for example embedded syste
*** 16775,16781 ****
  support constructors/destructors or the C library file I/O.
  .Sp
  The linker could collect the input sections in a continuous memory block and
! define start and end symbols.  A \s-1GNU\s0 linker script example which defines a
  linker output section follows:
  .Sp
  .Vb 6
--- 16710,16716 ----
  support constructors/destructors or the C library file I/O.
  .Sp
  The linker could collect the input sections in a continuous memory block and
! define start and end symbols.  A GNU linker script example which defines a
  linker output section follows:
  .Sp
  .Vb 6
*************** for example like this:
*** 16845,16864 ****
  \&        }
  .Ve
  .Sp
! The \fBmerge-stream\fR subcommand of \fBgcov-tool\fR may be used to
  deserialize the data stream generated by the \f(CW\*(C`_\|_gcov_filename_to_gcfn\*(C'\fR and
  \&\f(CW\*(C`_\|_gcov_info_to_gcda\*(C'\fR functions and merge the profile information into
  \&\fI.gcda\fR files on the host filesystem.
! .IP "\fB\-fprofile\-note=\fR\fIpath\fR" 4
  .IX Item "-fprofile-note=path"
! If \fIpath\fR is specified, \s-1GCC\s0 saves \fI.gcno\fR file into \fIpath\fR
  location.  If you combine the option with multiple source files,
  the \fI.gcno\fR file will be overwritten.
! .IP "\fB\-fprofile\-prefix\-path=\fR\fIpath\fR" 4
  .IX Item "-fprofile-prefix-path=path"
  This option can be used in combination with
  \&\fBprofile\-generate=\fR\fIprofile_dir\fR and
! \&\fBprofile\-use=\fR\fIprofile_dir\fR to inform \s-1GCC\s0 where is the base
  directory of built source tree.  By default \fIprofile_dir\fR will contain
  files with mangled absolute paths of all object files in the built project.
  This is not desirable when directory used to build the instrumented binary
--- 16780,16799 ----
  \&        }
  .Ve
  .Sp
! The \fBmerge\-stream\fR subcommand of \fBgcov\-tool\fR may be used to
  deserialize the data stream generated by the \f(CW\*(C`_\|_gcov_filename_to_gcfn\*(C'\fR and
  \&\f(CW\*(C`_\|_gcov_info_to_gcda\*(C'\fR functions and merge the profile information into
  \&\fI.gcda\fR files on the host filesystem.
! .IP \fB\-fprofile\-note=\fR\fIpath\fR 4
  .IX Item "-fprofile-note=path"
! If \fIpath\fR is specified, GCC saves \fI.gcno\fR file into \fIpath\fR
  location.  If you combine the option with multiple source files,
  the \fI.gcno\fR file will be overwritten.
! .IP \fB\-fprofile\-prefix\-path=\fR\fIpath\fR 4
  .IX Item "-fprofile-prefix-path=path"
  This option can be used in combination with
  \&\fBprofile\-generate=\fR\fIprofile_dir\fR and
! \&\fBprofile\-use=\fR\fIprofile_dir\fR to inform GCC where is the base
  directory of built source tree.  By default \fIprofile_dir\fR will contain
  files with mangled absolute paths of all object files in the built project.
  This is not desirable when directory used to build the instrumented binary
*************** feedback because the profile data will n
*** 16867,16904 ****
  In such setups \fB\-fprofile\-prefix\-path=\fR\fIpath\fR with \fIpath\fR
  pointing to the base directory of the build can be used to strip the irrelevant
  part of the path and keep all file names relative to the main build directory.
! .IP "\fB\-fprofile\-prefix\-map=\fR\fIold\fR\fB=\fR\fInew\fR" 4
  .IX Item "-fprofile-prefix-map=old=new"
! When compiling files residing in directory \fI\fIold\fI\fR, record
  profiling information (with \fB\-\-coverage\fR)
  describing them as if the files resided in
! directory \fI\fInew\fI\fR instead.
  See also \fB\-ffile\-prefix\-map\fR and \fB\-fcanon\-prefix\-map\fR.
! .IP "\fB\-fprofile\-update=\fR\fImethod\fR" 4
  .IX Item "-fprofile-update=method"
  Alter the update method for an application instrumented for profile
  feedback based optimization.  The \fImethod\fR argument should be one of
! \&\fBsingle\fR, \fBatomic\fR or \fBprefer-atomic\fR.
! The first one is useful for single-threaded applications,
! while the second one prevents profile corruption by emitting thread-safe code.
  .Sp
  \&\fBWarning:\fR When an application does not properly join all threads
  (or creates an detached thread), a profile file can be still corrupted.
  .Sp
! Using \fBprefer-atomic\fR would be transformed either to \fBatomic\fR,
! when supported by a target, or to \fBsingle\fR otherwise.  The \s-1GCC\s0 driver
! automatically selects \fBprefer-atomic\fR when \fB\-pthread\fR
  is present in the command line, otherwise the default method is \fBsingle\fR.
  .Sp
  If \fBatomic\fR is selected, then the profile information is updated using
! atomic operations on a best-effort basis.  Ideally, the profile information is
  updated through atomic operations in hardware.  If the target platform does not
  support the required atomic operations in hardware, however, \fIlibatomic\fR
  is available, then the profile information is updated through calls to
  \&\fIlibatomic\fR.  If the target platform neither supports the required atomic
  operations in hardware nor \fIlibatomic\fR, then the profile information is
  not atomically updated and a warning is issued.  In this case, the obtained
! profiling information may be corrupt for multi-threaded applications.
  .Sp
  For performance reasons, if 64\-bit counters are used for the profiling
  information and the target platform only supports 32\-bit atomic operations in
--- 16802,16839 ----
  In such setups \fB\-fprofile\-prefix\-path=\fR\fIpath\fR with \fIpath\fR
  pointing to the base directory of the build can be used to strip the irrelevant
  part of the path and keep all file names relative to the main build directory.
! .IP \fB\-fprofile\-prefix\-map=\fR\fIold\fR\fB=\fR\fInew\fR 4
  .IX Item "-fprofile-prefix-map=old=new"
! When compiling files residing in directory \fIold\fR, record
  profiling information (with \fB\-\-coverage\fR)
  describing them as if the files resided in
! directory \fInew\fR instead.
  See also \fB\-ffile\-prefix\-map\fR and \fB\-fcanon\-prefix\-map\fR.
! .IP \fB\-fprofile\-update=\fR\fImethod\fR 4
  .IX Item "-fprofile-update=method"
  Alter the update method for an application instrumented for profile
  feedback based optimization.  The \fImethod\fR argument should be one of
! \&\fBsingle\fR, \fBatomic\fR or \fBprefer\-atomic\fR.
! The first one is useful for single\-threaded applications,
! while the second one prevents profile corruption by emitting thread\-safe code.
  .Sp
  \&\fBWarning:\fR When an application does not properly join all threads
  (or creates an detached thread), a profile file can be still corrupted.
  .Sp
! Using \fBprefer\-atomic\fR would be transformed either to \fBatomic\fR,
! when supported by a target, or to \fBsingle\fR otherwise.  The GCC driver
! automatically selects \fBprefer\-atomic\fR when \fB\-pthread\fR
  is present in the command line, otherwise the default method is \fBsingle\fR.
  .Sp
  If \fBatomic\fR is selected, then the profile information is updated using
! atomic operations on a best\-effort basis.  Ideally, the profile information is
  updated through atomic operations in hardware.  If the target platform does not
  support the required atomic operations in hardware, however, \fIlibatomic\fR
  is available, then the profile information is updated through calls to
  \&\fIlibatomic\fR.  If the target platform neither supports the required atomic
  operations in hardware nor \fIlibatomic\fR, then the profile information is
  not atomically updated and a warning is issued.  In this case, the obtained
! profiling information may be corrupt for multi\-threaded applications.
  .Sp
  For performance reasons, if 64\-bit counters are used for the profiling
  information and the target platform only supports 32\-bit atomic operations in
*************** hardware, then the performance critical
*** 16906,16926 ****
  32\-bit atomic operations for each counter update.  If a signal interrupts these
  two operations updating a counter, then the profiling information may be in an
  inconsistent state.
! .IP "\fB\-fprofile\-filter\-files=\fR\fIregex\fR" 4
  .IX Item "-fprofile-filter-files=regex"
  Instrument only functions from files whose name matches
! any of the regular expressions (separated by semi-colons).
  .Sp
  For example, \fB\-fprofile\-filter\-files=main\e.c;module.*\e.c\fR will instrument
! only \fImain.c\fR and all C files starting with 'module'.
! .IP "\fB\-fprofile\-exclude\-files=\fR\fIregex\fR" 4
  .IX Item "-fprofile-exclude-files=regex"
  Instrument only functions from files whose name does not match
! any of the regular expressions (separated by semi-colons).
  .Sp
  For example, \fB\-fprofile\-exclude\-files=/usr/.*\fR will prevent instrumentation
  of all files that are located in the \fI/usr/\fR folder.
! .IP "\fB\-fprofile\-reproducible=\fR[\fBmultithreaded\fR|\fBparallel-runs\fR|\fBserial\fR]" 4
  .IX Item "-fprofile-reproducible=[multithreaded|parallel-runs|serial]"
  Control level of reproducibility of profile gathered by
  \&\f(CW\*(C`\-fprofile\-generate\*(C'\fR.  This makes it possible to rebuild program
--- 16841,16861 ----
  32\-bit atomic operations for each counter update.  If a signal interrupts these
  two operations updating a counter, then the profiling information may be in an
  inconsistent state.
! .IP \fB\-fprofile\-filter\-files=\fR\fIregex\fR 4
  .IX Item "-fprofile-filter-files=regex"
  Instrument only functions from files whose name matches
! any of the regular expressions (separated by semi\-colons).
  .Sp
  For example, \fB\-fprofile\-filter\-files=main\e.c;module.*\e.c\fR will instrument
! only \fImain.c\fR and all C files starting with \*(Aqmodule\*(Aq.
! .IP \fB\-fprofile\-exclude\-files=\fR\fIregex\fR 4
  .IX Item "-fprofile-exclude-files=regex"
  Instrument only functions from files whose name does not match
! any of the regular expressions (separated by semi\-colons).
  .Sp
  For example, \fB\-fprofile\-exclude\-files=/usr/.*\fR will prevent instrumentation
  of all files that are located in the \fI/usr/\fR folder.
! .IP \fB\-fprofile\-reproducible=\fR[\fBmultithreaded\fR|\fBparallel\-runs\fR|\fBserial\fR] 4
  .IX Item "-fprofile-reproducible=[multithreaded|parallel-runs|serial]"
  Control level of reproducibility of profile gathered by
  \&\f(CW\*(C`\-fprofile\-generate\*(C'\fR.  This makes it possible to rebuild program
*************** packages.
*** 16930,16944 ****
  With \fB\-fprofile\-reproducible=serial\fR the profile gathered by
  \&\fB\-fprofile\-generate\fR is reproducible provided the trained program
  behaves the same at each invocation of the train run, it is not
! multi-threaded and profile data streaming is always done in the same
  order.  Note that profile streaming happens at the end of program run but
  also before \f(CW\*(C`fork\*(C'\fR function is invoked.
  .Sp
  Note that it is quite common that execution counts of some part of
  programs depends, for example, on length of temporary file names or
! memory space randomization (that may affect hash-table collision rate).
! Such non-reproducible part of programs may be annotated by
! \&\f(CW\*(C`no_instrument_function\*(C'\fR function attribute. \fBgcov-dump\fR with
  \&\fB\-l\fR can be used to dump gathered data and verify that they are
  indeed reproducible.
  .Sp
--- 16865,16879 ----
  With \fB\-fprofile\-reproducible=serial\fR the profile gathered by
  \&\fB\-fprofile\-generate\fR is reproducible provided the trained program
  behaves the same at each invocation of the train run, it is not
! multi\-threaded and profile data streaming is always done in the same
  order.  Note that profile streaming happens at the end of program run but
  also before \f(CW\*(C`fork\*(C'\fR function is invoked.
  .Sp
  Note that it is quite common that execution counts of some part of
  programs depends, for example, on length of temporary file names or
! memory space randomization (that may affect hash\-table collision rate).
! Such non\-reproducible part of programs may be annotated by
! \&\f(CW\*(C`no_instrument_function\*(C'\fR function attribute. \fBgcov\-dump\fR with
  \&\fB\-l\fR can be used to dump gathered data and verify that they are
  indeed reproducible.
  .Sp
*************** gcda files.  This setting makes it possi
*** 16948,16962 ****
  instrumented program in parallel (such as with \f(CW\*(C`make \-j\*(C'\fR). This
  reduces quality of gathered data, in particular of indirect call
  profiling.
! .IP "\fB\-fsanitize=address\fR" 4
  .IX Item "-fsanitize=address"
  Enable AddressSanitizer, a fast memory error detector.
  Memory access instructions are instrumented to detect
! out-of-bounds and use-after-free bugs.
  The option enables \fB\-fsanitize\-address\-use\-after\-scope\fR.
  See <\fBhttps://github.com/google/sanitizers/wiki/AddressSanitizer\fR> for
! more details.  The run-time behavior can be influenced using the
! \&\fB\s-1ASAN_OPTIONS\s0\fR environment variable.  When set to \f(CW\*(C`help=1\*(C'\fR,
  the available options are shown at startup of the instrumented program.  See
  <\fBhttps://github.com/google/sanitizers/wiki/AddressSanitizerFlags#run\-time\-flags\fR>
  for a list of supported options.
--- 16883,16897 ----
  instrumented program in parallel (such as with \f(CW\*(C`make \-j\*(C'\fR). This
  reduces quality of gathered data, in particular of indirect call
  profiling.
! .IP \fB\-fsanitize=address\fR 4
  .IX Item "-fsanitize=address"
  Enable AddressSanitizer, a fast memory error detector.
  Memory access instructions are instrumented to detect
! out\-of\-bounds and use\-after\-free bugs.
  The option enables \fB\-fsanitize\-address\-use\-after\-scope\fR.
  See <\fBhttps://github.com/google/sanitizers/wiki/AddressSanitizer\fR> for
! more details.  The run\-time behavior can be influenced using the
! \&\fBASAN_OPTIONS\fR environment variable.  When set to \f(CW\*(C`help=1\*(C'\fR,
  the available options are shown at startup of the instrumented program.  See
  <\fBhttps://github.com/google/sanitizers/wiki/AddressSanitizerFlags#run\-time\-flags\fR>
  for a list of supported options.
*************** optimizing sibling and tail recursive ca
*** 16976,17006 ****
  disables Identical Code Folding for functions).
  Using \fB\-fno\-omit\-frame\-pointer\fR also improves stack traces.
  Since multiple runs of the
! program may yield backtraces with different addresses due to \s-1ASLR\s0 (Address
! Space Layout Randomization), it may be desirable to turn \s-1ASLR\s0 off.  On Linux,
! this can be achieved with \fBsetarch `uname \-m` \-R ./prog\fR.
! .IP "\fB\-fsanitize=kernel\-address\fR" 4
  .IX Item "-fsanitize=kernel-address"
  Enable AddressSanitizer for Linux kernel.
  See <\fBhttps://github.com/google/kernel\-sanitizers\fR> for more details.
! .IP "\fB\-fsanitize=hwaddress\fR" 4
  .IX Item "-fsanitize=hwaddress"
! Enable Hardware-assisted AddressSanitizer, which uses a hardware ability to
  ignore the top byte of a pointer to allow the detection of memory errors with
  a low memory overhead.
! Memory access instructions are instrumented to detect out-of-bounds and
! use-after-free bugs.
  The option enables \fB\-fsanitize\-address\-use\-after\-scope\fR.
  See
  <\fBhttps://clang.llvm.org/docs/HardwareAssistedAddressSanitizerDesign.html\fR>
! for more details.  The run-time behavior can be influenced using the
! \&\fB\s-1HWASAN_OPTIONS\s0\fR environment variable.  When set to \f(CW\*(C`help=1\*(C'\fR,
  the available options are shown at startup of the instrumented program.
  The option cannot be combined with \fB\-fsanitize=thread\fR or
  \&\fB\-fsanitize=address\fR, and is currently only available on AArch64.
! .IP "\fB\-fsanitize=kernel\-hwaddress\fR" 4
  .IX Item "-fsanitize=kernel-hwaddress"
! Enable Hardware-assisted AddressSanitizer for compilation of the Linux kernel.
  Similar to \fB\-fsanitize=kernel\-address\fR but using an alternate
  instrumentation method, and similar to \fB\-fsanitize=hwaddress\fR but with
  instrumentation differences necessary for compiling the Linux kernel.
--- 16911,16941 ----
  disables Identical Code Folding for functions).
  Using \fB\-fno\-omit\-frame\-pointer\fR also improves stack traces.
  Since multiple runs of the
! program may yield backtraces with different addresses due to ASLR (Address
! Space Layout Randomization), it may be desirable to turn ASLR off.  On Linux,
! this can be achieved with \fBsetarch \`uname \-m\` \-R ./prog\fR.
! .IP \fB\-fsanitize=kernel\-address\fR 4
  .IX Item "-fsanitize=kernel-address"
  Enable AddressSanitizer for Linux kernel.
  See <\fBhttps://github.com/google/kernel\-sanitizers\fR> for more details.
! .IP \fB\-fsanitize=hwaddress\fR 4
  .IX Item "-fsanitize=hwaddress"
! Enable Hardware\-assisted AddressSanitizer, which uses a hardware ability to
  ignore the top byte of a pointer to allow the detection of memory errors with
  a low memory overhead.
! Memory access instructions are instrumented to detect out\-of\-bounds and
! use\-after\-free bugs.
  The option enables \fB\-fsanitize\-address\-use\-after\-scope\fR.
  See
  <\fBhttps://clang.llvm.org/docs/HardwareAssistedAddressSanitizerDesign.html\fR>
! for more details.  The run\-time behavior can be influenced using the
! \&\fBHWASAN_OPTIONS\fR environment variable.  When set to \f(CW\*(C`help=1\*(C'\fR,
  the available options are shown at startup of the instrumented program.
  The option cannot be combined with \fB\-fsanitize=thread\fR or
  \&\fB\-fsanitize=address\fR, and is currently only available on AArch64.
! .IP \fB\-fsanitize=kernel\-hwaddress\fR 4
  .IX Item "-fsanitize=kernel-hwaddress"
! Enable Hardware\-assisted AddressSanitizer for compilation of the Linux kernel.
  Similar to \fB\-fsanitize=kernel\-address\fR but using an alternate
  instrumentation method, and similar to \fB\-fsanitize=hwaddress\fR but with
  instrumentation differences necessary for compiling the Linux kernel.
*************** account for the stack pointer having a d
*** 17009,17019 ****
  .Sp
  \&\fINote:\fR This option has different defaults to the \fB\-fsanitize=hwaddress\fR.
  Instrumenting the stack and alloca calls are not on by default but are still
! possible by specifying the command-line options
  \&\fB\-\-param hwasan\-instrument\-stack=1\fR and
  \&\fB\-\-param hwasan\-instrument\-allocas=1\fR respectively. Using a random frame
  tag is not implemented for kernel instrumentation.
! .IP "\fB\-fsanitize=pointer\-compare\fR" 4
  .IX Item "-fsanitize=pointer-compare"
  Instrument comparison operation (<, <=, >, >=) with pointer operands.
  The option must be combined with either \fB\-fsanitize=kernel\-address\fR or
--- 16944,16954 ----
  .Sp
  \&\fINote:\fR This option has different defaults to the \fB\-fsanitize=hwaddress\fR.
  Instrumenting the stack and alloca calls are not on by default but are still
! possible by specifying the command\-line options
  \&\fB\-\-param hwasan\-instrument\-stack=1\fR and
  \&\fB\-\-param hwasan\-instrument\-allocas=1\fR respectively. Using a random frame
  tag is not implemented for kernel instrumentation.
! .IP \fB\-fsanitize=pointer\-compare\fR 4
  .IX Item "-fsanitize=pointer-compare"
  Instrument comparison operation (<, <=, >, >=) with pointer operands.
  The option must be combined with either \fB\-fsanitize=kernel\-address\fR or
*************** The option must be combined with either
*** 17021,17029 ****
  The option cannot be combined with \fB\-fsanitize=thread\fR.
  Note: By default the check is disabled at run time.  To enable it,
  add \f(CW\*(C`detect_invalid_pointer_pairs=2\*(C'\fR to the environment variable
! \&\fB\s-1ASAN_OPTIONS\s0\fR. Using \f(CW\*(C`detect_invalid_pointer_pairs=1\*(C'\fR detects
! invalid operation only when both pointers are non-null.
! .IP "\fB\-fsanitize=pointer\-subtract\fR" 4
  .IX Item "-fsanitize=pointer-subtract"
  Instrument subtraction with pointer operands.
  The option must be combined with either \fB\-fsanitize=kernel\-address\fR or
--- 16956,16964 ----
  The option cannot be combined with \fB\-fsanitize=thread\fR.
  Note: By default the check is disabled at run time.  To enable it,
  add \f(CW\*(C`detect_invalid_pointer_pairs=2\*(C'\fR to the environment variable
! \&\fBASAN_OPTIONS\fR. Using \f(CW\*(C`detect_invalid_pointer_pairs=1\*(C'\fR detects
! invalid operation only when both pointers are non\-null.
! .IP \fB\-fsanitize=pointer\-subtract\fR 4
  .IX Item "-fsanitize=pointer-subtract"
  Instrument subtraction with pointer operands.
  The option must be combined with either \fB\-fsanitize=kernel\-address\fR or
*************** The option must be combined with either
*** 17031,17053 ****
  The option cannot be combined with \fB\-fsanitize=thread\fR.
  Note: By default the check is disabled at run time.  To enable it,
  add \f(CW\*(C`detect_invalid_pointer_pairs=2\*(C'\fR to the environment variable
! \&\fB\s-1ASAN_OPTIONS\s0\fR. Using \f(CW\*(C`detect_invalid_pointer_pairs=1\*(C'\fR detects
! invalid operation only when both pointers are non-null.
! .IP "\fB\-fsanitize=shadow\-call\-stack\fR" 4
  .IX Item "-fsanitize=shadow-call-stack"
  Enable ShadowCallStack, a security enhancement mechanism used to protect
  programs against return address overwrites (e.g. stack buffer overflows.)
! It works by saving a function's return address to a separately allocated
  shadow call stack in the function prologue and restoring the return address
  from the shadow call stack in the function epilogue.  Instrumentation only
  occurs in functions that need to save the return address to the stack.
  .Sp
  Currently it only supports the aarch64 platform.  It is specifically
! designed for linux kernels that enable the \s-1CONFIG_SHADOW_CALL_STACK\s0 option.
  For the user space programs, runtime support is not currently provided
  in libc and libgcc.  Users who want to use this feature in user space need
  to provide their own support for the runtime.  It should be noted that
! this may cause the \s-1ABI\s0 rules to be broken.
  .Sp
  On aarch64, the instrumentation makes use of the platform register \f(CW\*(C`x18\*(C'\fR.
  This generally means that any code that may run on the same thread as code
--- 16966,16988 ----
  The option cannot be combined with \fB\-fsanitize=thread\fR.
  Note: By default the check is disabled at run time.  To enable it,
  add \f(CW\*(C`detect_invalid_pointer_pairs=2\*(C'\fR to the environment variable
! \&\fBASAN_OPTIONS\fR. Using \f(CW\*(C`detect_invalid_pointer_pairs=1\*(C'\fR detects
! invalid operation only when both pointers are non\-null.
! .IP \fB\-fsanitize=shadow\-call\-stack\fR 4
  .IX Item "-fsanitize=shadow-call-stack"
  Enable ShadowCallStack, a security enhancement mechanism used to protect
  programs against return address overwrites (e.g. stack buffer overflows.)
! It works by saving a function\*(Aqs return address to a separately allocated
  shadow call stack in the function prologue and restoring the return address
  from the shadow call stack in the function epilogue.  Instrumentation only
  occurs in functions that need to save the return address to the stack.
  .Sp
  Currently it only supports the aarch64 platform.  It is specifically
! designed for linux kernels that enable the CONFIG_SHADOW_CALL_STACK option.
  For the user space programs, runtime support is not currently provided
  in libc and libgcc.  Users who want to use this feature in user space need
  to provide their own support for the runtime.  It should be noted that
! this may cause the ABI rules to be broken.
  .Sp
  On aarch64, the instrumentation makes use of the platform register \f(CW\*(C`x18\*(C'\fR.
  This generally means that any code that may run on the same thread as code
*************** to turn off exceptions.
*** 17062,17073 ****
  .Sp
  See <\fBhttps://clang.llvm.org/docs/ShadowCallStack.html\fR> for more
  details.
! .IP "\fB\-fsanitize=thread\fR" 4
  .IX Item "-fsanitize=thread"
  Enable ThreadSanitizer, a fast data race detector.
  Memory access instructions are instrumented to detect
  data race bugs.  See <\fBhttps://github.com/google/sanitizers/wiki#threadsanitizer\fR> for more
! details. The run-time behavior can be influenced using the \fB\s-1TSAN_OPTIONS\s0\fR
  environment variable; see
  <\fBhttps://github.com/google/sanitizers/wiki/ThreadSanitizerFlags\fR> for a list of
  supported options.
--- 16997,17008 ----
  .Sp
  See <\fBhttps://clang.llvm.org/docs/ShadowCallStack.html\fR> for more
  details.
! .IP \fB\-fsanitize=thread\fR 4
  .IX Item "-fsanitize=thread"
  Enable ThreadSanitizer, a fast data race detector.
  Memory access instructions are instrumented to detect
  data race bugs.  See <\fBhttps://github.com/google/sanitizers/wiki#threadsanitizer\fR> for more
! details. The run\-time behavior can be influenced using the \fBTSAN_OPTIONS\fR
  environment variable; see
  <\fBhttps://github.com/google/sanitizers/wiki/ThreadSanitizerFlags\fR> for a list of
  supported options.
*************** When compiling with \fB\-fsanitize=threa
*** 17078,17146 ****
  \&\fB\-g\fR to produce more meaningful output.
  .Sp
  Note that sanitized atomic builtins cannot throw exceptions when
! operating on invalid memory addresses with non-call exceptions
  (\fB\-fnon\-call\-exceptions\fR).
! .IP "\fB\-fsanitize=leak\fR" 4
  .IX Item "-fsanitize=leak"
  Enable LeakSanitizer, a memory leak detector.
  This option only matters for linking of executables.
  The executable is linked against a library that overrides \f(CW\*(C`malloc\*(C'\fR
  and other allocator functions.  See
  <\fBhttps://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer\fR> for more
! details.  The run-time behavior can be influenced using the
! \&\fB\s-1LSAN_OPTIONS\s0\fR environment variable.
  The option cannot be combined with \fB\-fsanitize=thread\fR.
! .IP "\fB\-fsanitize=undefined\fR" 4
  .IX Item "-fsanitize=undefined"
  Enable UndefinedBehaviorSanitizer, a fast undefined behavior detector.
  Various computations are instrumented to detect undefined behavior
! at runtime.  See <\fBhttps://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html\fR> for more details.   The run-time behavior can be influenced using the
! \&\fB\s-1UBSAN_OPTIONS\s0\fR environment variable.  Current suboptions are:
  .RS 4
! .IP "\fB\-fsanitize=shift\fR" 4
  .IX Item "-fsanitize=shift"
  This option enables checking that the result of a shift operation is
  not undefined.  Note that what exactly is considered undefined differs
! slightly between C and \*(C+, as well as between \s-1ISO C90\s0 and C99, etc.
  This option has two suboptions, \fB\-fsanitize=shift\-base\fR and
  \&\fB\-fsanitize=shift\-exponent\fR.
! .IP "\fB\-fsanitize=shift\-exponent\fR" 4
  .IX Item "-fsanitize=shift-exponent"
  This option enables checking that the second argument of a shift operation
  is not negative and is smaller than the precision of the promoted first
  argument.
! .IP "\fB\-fsanitize=shift\-base\fR" 4
  .IX Item "-fsanitize=shift-base"
  If the second argument of a shift operation is within range, check that the
  result of a shift operation is not undefined.  Note that what exactly is
! considered undefined differs slightly between C and \*(C+, as well as between
! \&\s-1ISO C90\s0 and C99, etc.
! .IP "\fB\-fsanitize=integer\-divide\-by\-zero\fR" 4
  .IX Item "-fsanitize=integer-divide-by-zero"
  Detect integer division by zero.
! .IP "\fB\-fsanitize=unreachable\fR" 4
  .IX Item "-fsanitize=unreachable"
  With this option, the compiler turns the \f(CW\*(C`_\|_builtin_unreachable\*(C'\fR
  call into a diagnostics message call instead.  When reaching the
  \&\f(CW\*(C`_\|_builtin_unreachable\*(C'\fR call, the behavior is undefined.
! .IP "\fB\-fsanitize=vla\-bound\fR" 4
  .IX Item "-fsanitize=vla-bound"
  This option instructs the compiler to check that the size of a variable
  length array is positive.
! .IP "\fB\-fsanitize=null\fR" 4
  .IX Item "-fsanitize=null"
  This option enables pointer checking.  Particularly, the application
  built with this option turned on will issue an error message when it
! tries to dereference a \s-1NULL\s0 pointer, or if a reference (possibly an
! rvalue reference) is bound to a \s-1NULL\s0 pointer, or if a method is invoked
! on an object pointed by a \s-1NULL\s0 pointer.
! .IP "\fB\-fsanitize=return\fR" 4
  .IX Item "-fsanitize=return"
  This option enables return statement checking.  Programs
  built with this option turned on will issue an error message
! when the end of a non-void function is reached without actually
! returning a value.  This option works in \*(C+ only.
! .IP "\fB\-fsanitize=signed\-integer\-overflow\fR" 4
  .IX Item "-fsanitize=signed-integer-overflow"
  This option enables signed integer overflow checking.  We check that
  the result of \f(CW\*(C`+\*(C'\fR, \f(CW\*(C`*\*(C'\fR, and both unary and binary \f(CW\*(C`\-\*(C'\fR
--- 17013,17081 ----
  \&\fB\-g\fR to produce more meaningful output.
  .Sp
  Note that sanitized atomic builtins cannot throw exceptions when
! operating on invalid memory addresses with non\-call exceptions
  (\fB\-fnon\-call\-exceptions\fR).
! .IP \fB\-fsanitize=leak\fR 4
  .IX Item "-fsanitize=leak"
  Enable LeakSanitizer, a memory leak detector.
  This option only matters for linking of executables.
  The executable is linked against a library that overrides \f(CW\*(C`malloc\*(C'\fR
  and other allocator functions.  See
  <\fBhttps://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer\fR> for more
! details.  The run\-time behavior can be influenced using the
! \&\fBLSAN_OPTIONS\fR environment variable.
  The option cannot be combined with \fB\-fsanitize=thread\fR.
! .IP \fB\-fsanitize=undefined\fR 4
  .IX Item "-fsanitize=undefined"
  Enable UndefinedBehaviorSanitizer, a fast undefined behavior detector.
  Various computations are instrumented to detect undefined behavior
! at runtime.  See <\fBhttps://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html\fR> for more details.   The run\-time behavior can be influenced using the
! \&\fBUBSAN_OPTIONS\fR environment variable.  Current suboptions are:
  .RS 4
! .IP \fB\-fsanitize=shift\fR 4
  .IX Item "-fsanitize=shift"
  This option enables checking that the result of a shift operation is
  not undefined.  Note that what exactly is considered undefined differs
! slightly between C and C++, as well as between ISO C90 and C99, etc.
  This option has two suboptions, \fB\-fsanitize=shift\-base\fR and
  \&\fB\-fsanitize=shift\-exponent\fR.
! .IP \fB\-fsanitize=shift\-exponent\fR 4
  .IX Item "-fsanitize=shift-exponent"
  This option enables checking that the second argument of a shift operation
  is not negative and is smaller than the precision of the promoted first
  argument.
! .IP \fB\-fsanitize=shift\-base\fR 4
  .IX Item "-fsanitize=shift-base"
  If the second argument of a shift operation is within range, check that the
  result of a shift operation is not undefined.  Note that what exactly is
! considered undefined differs slightly between C and C++, as well as between
! ISO C90 and C99, etc.
! .IP \fB\-fsanitize=integer\-divide\-by\-zero\fR 4
  .IX Item "-fsanitize=integer-divide-by-zero"
  Detect integer division by zero.
! .IP \fB\-fsanitize=unreachable\fR 4
  .IX Item "-fsanitize=unreachable"
  With this option, the compiler turns the \f(CW\*(C`_\|_builtin_unreachable\*(C'\fR
  call into a diagnostics message call instead.  When reaching the
  \&\f(CW\*(C`_\|_builtin_unreachable\*(C'\fR call, the behavior is undefined.
! .IP \fB\-fsanitize=vla\-bound\fR 4
  .IX Item "-fsanitize=vla-bound"
  This option instructs the compiler to check that the size of a variable
  length array is positive.
! .IP \fB\-fsanitize=null\fR 4
  .IX Item "-fsanitize=null"
  This option enables pointer checking.  Particularly, the application
  built with this option turned on will issue an error message when it
! tries to dereference a NULL pointer, or if a reference (possibly an
! rvalue reference) is bound to a NULL pointer, or if a method is invoked
! on an object pointed by a NULL pointer.
! .IP \fB\-fsanitize=return\fR 4
  .IX Item "-fsanitize=return"
  This option enables return statement checking.  Programs
  built with this option turned on will issue an error message
! when the end of a non\-void function is reached without actually
! returning a value.  This option works in C++ only.
! .IP \fB\-fsanitize=signed\-integer\-overflow\fR 4
  .IX Item "-fsanitize=signed-integer-overflow"
  This option enables signed integer overflow checking.  We check that
  the result of \f(CW\*(C`+\*(C'\fR, \f(CW\*(C`*\*(C'\fR, and both unary and binary \f(CW\*(C`\-\*(C'\fR
*************** overflow:
*** 17153,17227 ****
  \&        signed char a = SCHAR_MAX;
  \&        a++;
  .Ve
! .IP "\fB\-fsanitize=bounds\fR" 4
  .IX Item "-fsanitize=bounds"
  This option enables instrumentation of array bounds.  Various out of bounds
! accesses are detected.  Flexible array members, flexible array member-like
  arrays, and initializers of variables with static storage are not
! instrumented, with the exception of flexible array member-like arrays
  for which \f(CW\*(C`\-fstrict\-flex\-arrays\*(C'\fR or \f(CW\*(C`\-fstrict\-flex\-arrays=\*(C'\fR
! options or \f(CW\*(C`strict_flex_array\*(C'\fR attributes say they shouldn't be treated
! like flexible array member-like arrays.
! .IP "\fB\-fsanitize=bounds\-strict\fR" 4
  .IX Item "-fsanitize=bounds-strict"
  This option enables strict instrumentation of array bounds.  Most out of bounds
! accesses are detected, including flexible array member-like arrays.
  Initializers of variables with static storage are not instrumented.
! .IP "\fB\-fsanitize=alignment\fR" 4
  .IX Item "-fsanitize=alignment"
  This option enables checking of alignment of pointers when they are
  dereferenced, or when a reference is bound to insufficiently aligned target,
  or when a method or constructor is invoked on insufficiently aligned object.
! .IP "\fB\-fsanitize=object\-size\fR" 4
  .IX Item "-fsanitize=object-size"
  This option enables instrumentation of memory references using the
  \&\f(CW\*(C`_\|_builtin_dynamic_object_size\*(C'\fR function.  Various out of bounds
  pointer accesses are detected.
! .IP "\fB\-fsanitize=float\-divide\-by\-zero\fR" 4
  .IX Item "-fsanitize=float-divide-by-zero"
! Detect floating-point division by zero.  Unlike other similar options,
  \&\fB\-fsanitize=float\-divide\-by\-zero\fR is not enabled by
! \&\fB\-fsanitize=undefined\fR, since floating-point division by zero can
  be a legitimate way of obtaining infinities and NaNs.
! .IP "\fB\-fsanitize=float\-cast\-overflow\fR" 4
  .IX Item "-fsanitize=float-cast-overflow"
! This option enables floating-point type to integer conversion checking.
  We check that the result of the conversion does not overflow.
  Unlike other similar options, \fB\-fsanitize=float\-cast\-overflow\fR is
  not enabled by \fB\-fsanitize=undefined\fR.
  This option does not work well with \f(CW\*(C`FE_INVALID\*(C'\fR exceptions enabled.
! .IP "\fB\-fsanitize=nonnull\-attribute\fR" 4
  .IX Item "-fsanitize=nonnull-attribute"
  This option enables instrumentation of calls, checking whether null values
! are not passed to arguments marked as requiring a non-null value by the
  \&\f(CW\*(C`nonnull\*(C'\fR function attribute.
! .IP "\fB\-fsanitize=returns\-nonnull\-attribute\fR" 4
  .IX Item "-fsanitize=returns-nonnull-attribute"
  This option enables instrumentation of return statements in functions
  marked with \f(CW\*(C`returns_nonnull\*(C'\fR function attribute, to detect returning
  of null values from such functions.
! .IP "\fB\-fsanitize=bool\fR" 4
  .IX Item "-fsanitize=bool"
  This option enables instrumentation of loads from bool.  If a value other
! than 0/1 is loaded, a run-time error is issued.
! .IP "\fB\-fsanitize=enum\fR" 4
  .IX Item "-fsanitize=enum"
  This option enables instrumentation of loads from an enum type.  If
  a value outside the range of values for the enum type is loaded,
! a run-time error is issued.
! .IP "\fB\-fsanitize=vptr\fR" 4
  .IX Item "-fsanitize=vptr"
! This option enables instrumentation of \*(C+ member function calls, member
  accesses and some conversions between pointers to base and derived classes,
  to verify the referenced object has the correct dynamic type.
! .IP "\fB\-fsanitize=pointer\-overflow\fR" 4
  .IX Item "-fsanitize=pointer-overflow"
  This option enables instrumentation of pointer arithmetics.  If the pointer
! arithmetics overflows, a run-time error is issued.
! .IP "\fB\-fsanitize=builtin\fR" 4
  .IX Item "-fsanitize=builtin"
  This option enables instrumentation of arguments to selected builtin
! functions.  If an invalid value is passed to such arguments, a run-time
  error is issued.  E.g. passing 0 as the argument to \f(CW\*(C`_\|_builtin_ctz\*(C'\fR
  or \f(CW\*(C`_\|_builtin_clz\*(C'\fR invokes undefined behavior and is diagnosed
  by this option.
--- 17088,17162 ----
  \&        signed char a = SCHAR_MAX;
  \&        a++;
  .Ve
! .IP \fB\-fsanitize=bounds\fR 4
  .IX Item "-fsanitize=bounds"
  This option enables instrumentation of array bounds.  Various out of bounds
! accesses are detected.  Flexible array members, flexible array member\-like
  arrays, and initializers of variables with static storage are not
! instrumented, with the exception of flexible array member\-like arrays
  for which \f(CW\*(C`\-fstrict\-flex\-arrays\*(C'\fR or \f(CW\*(C`\-fstrict\-flex\-arrays=\*(C'\fR
! options or \f(CW\*(C`strict_flex_array\*(C'\fR attributes say they shouldn\*(Aqt be treated
! like flexible array member\-like arrays.
! .IP \fB\-fsanitize=bounds\-strict\fR 4
  .IX Item "-fsanitize=bounds-strict"
  This option enables strict instrumentation of array bounds.  Most out of bounds
! accesses are detected, including flexible array member\-like arrays.
  Initializers of variables with static storage are not instrumented.
! .IP \fB\-fsanitize=alignment\fR 4
  .IX Item "-fsanitize=alignment"
  This option enables checking of alignment of pointers when they are
  dereferenced, or when a reference is bound to insufficiently aligned target,
  or when a method or constructor is invoked on insufficiently aligned object.
! .IP \fB\-fsanitize=object\-size\fR 4
  .IX Item "-fsanitize=object-size"
  This option enables instrumentation of memory references using the
  \&\f(CW\*(C`_\|_builtin_dynamic_object_size\*(C'\fR function.  Various out of bounds
  pointer accesses are detected.
! .IP \fB\-fsanitize=float\-divide\-by\-zero\fR 4
  .IX Item "-fsanitize=float-divide-by-zero"
! Detect floating\-point division by zero.  Unlike other similar options,
  \&\fB\-fsanitize=float\-divide\-by\-zero\fR is not enabled by
! \&\fB\-fsanitize=undefined\fR, since floating\-point division by zero can
  be a legitimate way of obtaining infinities and NaNs.
! .IP \fB\-fsanitize=float\-cast\-overflow\fR 4
  .IX Item "-fsanitize=float-cast-overflow"
! This option enables floating\-point type to integer conversion checking.
  We check that the result of the conversion does not overflow.
  Unlike other similar options, \fB\-fsanitize=float\-cast\-overflow\fR is
  not enabled by \fB\-fsanitize=undefined\fR.
  This option does not work well with \f(CW\*(C`FE_INVALID\*(C'\fR exceptions enabled.
! .IP \fB\-fsanitize=nonnull\-attribute\fR 4
  .IX Item "-fsanitize=nonnull-attribute"
  This option enables instrumentation of calls, checking whether null values
! are not passed to arguments marked as requiring a non\-null value by the
  \&\f(CW\*(C`nonnull\*(C'\fR function attribute.
! .IP \fB\-fsanitize=returns\-nonnull\-attribute\fR 4
  .IX Item "-fsanitize=returns-nonnull-attribute"
  This option enables instrumentation of return statements in functions
  marked with \f(CW\*(C`returns_nonnull\*(C'\fR function attribute, to detect returning
  of null values from such functions.
! .IP \fB\-fsanitize=bool\fR 4
  .IX Item "-fsanitize=bool"
  This option enables instrumentation of loads from bool.  If a value other
! than 0/1 is loaded, a run\-time error is issued.
! .IP \fB\-fsanitize=enum\fR 4
  .IX Item "-fsanitize=enum"
  This option enables instrumentation of loads from an enum type.  If
  a value outside the range of values for the enum type is loaded,
! a run\-time error is issued.
! .IP \fB\-fsanitize=vptr\fR 4
  .IX Item "-fsanitize=vptr"
! This option enables instrumentation of C++ member function calls, member
  accesses and some conversions between pointers to base and derived classes,
  to verify the referenced object has the correct dynamic type.
! .IP \fB\-fsanitize=pointer\-overflow\fR 4
  .IX Item "-fsanitize=pointer-overflow"
  This option enables instrumentation of pointer arithmetics.  If the pointer
! arithmetics overflows, a run\-time error is issued.
! .IP \fB\-fsanitize=builtin\fR 4
  .IX Item "-fsanitize=builtin"
  This option enables instrumentation of arguments to selected builtin
! functions.  If an invalid value is passed to such arguments, a run\-time
  error is issued.  E.g. passing 0 as the argument to \f(CW\*(C`_\|_builtin_ctz\*(C'\fR
  or \f(CW\*(C`_\|_builtin_clz\*(C'\fR invokes undefined behavior and is diagnosed
  by this option.
*************** While \fB\-ftrapv\fR causes traps for si
*** 17237,17260 ****
  \&\fB\-fsanitize=undefined\fR gives a diagnostic message.
  This currently works only for the C family of languages.
  .RE
! .IP "\fB\-fno\-sanitize=all\fR" 4
  .IX Item "-fno-sanitize=all"
  This option disables all previously enabled sanitizers.
  \&\fB\-fsanitize=all\fR is not allowed, as some sanitizers cannot be used
  together.
! .IP "\fB\-fasan\-shadow\-offset=\fR\fInumber\fR" 4
  .IX Item "-fasan-shadow-offset=number"
! This option forces \s-1GCC\s0 to use custom shadow offset in AddressSanitizer checks.
  It is useful for experimenting with different shadow memory layouts in
  Kernel AddressSanitizer.
! .IP "\fB\-fsanitize\-sections=\fR\fIs1\fR\fB,\fR\fIs2\fR\fB,...\fR" 4
  .IX Item "-fsanitize-sections=s1,s2,..."
! Sanitize global variables in selected user-defined sections.  \fIsi\fR may
  contain wildcards.
! .IP "\fB\-fsanitize\-recover\fR[\fB=\fR\fIopts\fR]" 4
  .IX Item "-fsanitize-recover[=opts]"
  \&\fB\-fsanitize\-recover=\fR controls error recovery mode for sanitizers
! mentioned in comma-separated list of \fIopts\fR.  Enabling this option
  for a sanitizer component causes it to attempt to continue
  running the program as if no error happened.  This means multiple
  runtime errors can be reported in a single program run, and the exit
--- 17172,17195 ----
  \&\fB\-fsanitize=undefined\fR gives a diagnostic message.
  This currently works only for the C family of languages.
  .RE
! .IP \fB\-fno\-sanitize=all\fR 4
  .IX Item "-fno-sanitize=all"
  This option disables all previously enabled sanitizers.
  \&\fB\-fsanitize=all\fR is not allowed, as some sanitizers cannot be used
  together.
! .IP \fB\-fasan\-shadow\-offset=\fR\fInumber\fR 4
  .IX Item "-fasan-shadow-offset=number"
! This option forces GCC to use custom shadow offset in AddressSanitizer checks.
  It is useful for experimenting with different shadow memory layouts in
  Kernel AddressSanitizer.
! .IP \fB\-fsanitize\-sections=\fR\fIs1\fR\fB,\fR\fIs2\fR\fB,...\fR 4
  .IX Item "-fsanitize-sections=s1,s2,..."
! Sanitize global variables in selected user\-defined sections.  \fIsi\fR may
  contain wildcards.
! .IP \fB\-fsanitize\-recover\fR[\fB=\fR\fIopts\fR] 4
  .IX Item "-fsanitize-recover[=opts]"
  \&\fB\-fsanitize\-recover=\fR controls error recovery mode for sanitizers
! mentioned in comma\-separated list of \fIopts\fR.  Enabling this option
  for a sanitizer component causes it to attempt to continue
  running the program as if no error happened.  This means multiple
  runtime errors can be reported in a single program run, and the exit
*************** code of the program may indicate success
*** 17262,17268 ****
  have been reported.  The \fB\-fno\-sanitize\-recover=\fR option
  can be used to alter
  this behavior: only the first detected error is reported
! and program then exits with a non-zero exit code.
  .Sp
  Currently this feature only works for \fB\-fsanitize=undefined\fR (and its suboptions
  except for \fB\-fsanitize=unreachable\fR and \fB\-fsanitize=return\fR),
--- 17197,17203 ----
  have been reported.  The \fB\-fno\-sanitize\-recover=\fR option
  can be used to alter
  this behavior: only the first detected error is reported
! and program then exits with a non\-zero exit code.
  .Sp
  Currently this feature only works for \fB\-fsanitize=undefined\fR (and its suboptions
  except for \fB\-fsanitize=unreachable\fR and \fB\-fsanitize=return\fR),
*************** equivalent to specifying an \fIopts\fR l
*** 17288,17301 ****
  .Vb 1
  \&        undefined,float\-cast\-overflow,float\-divide\-by\-zero,bounds\-strict
  .Ve
! .IP "\fB\-fsanitize\-address\-use\-after\-scope\fR" 4
  .IX Item "-fsanitize-address-use-after-scope"
! Enable sanitization of local variables to detect use-after-scope bugs.
  The option sets \fB\-fstack\-reuse\fR to \fBnone\fR.
! .IP "\fB\-fsanitize\-trap\fR[\fB=\fR\fIopts\fR]" 4
  .IX Item "-fsanitize-trap[=opts]"
  The \fB\-fsanitize\-trap=\fR option instructs the compiler to
! report for sanitizers mentioned in comma-separated list of \fIopts\fR
  undefined behavior using \f(CW\*(C`_\|_builtin_trap\*(C'\fR rather than a \f(CW\*(C`libubsan\*(C'\fR
  library routine.  If this option is enabled for certain sanitizer,
  it takes precedence over the \fB\-fsanitizer\-recover=\fR for that
--- 17223,17236 ----
  .Vb 1
  \&        undefined,float\-cast\-overflow,float\-divide\-by\-zero,bounds\-strict
  .Ve
! .IP \fB\-fsanitize\-address\-use\-after\-scope\fR 4
  .IX Item "-fsanitize-address-use-after-scope"
! Enable sanitization of local variables to detect use\-after\-scope bugs.
  The option sets \fB\-fstack\-reuse\fR to \fBnone\fR.
! .IP \fB\-fsanitize\-trap\fR[\fB=\fR\fIopts\fR] 4
  .IX Item "-fsanitize-trap[=opts]"
  The \fB\-fsanitize\-trap=\fR option instructs the compiler to
! report for sanitizers mentioned in comma\-separated list of \fIopts\fR
  undefined behavior using \f(CW\*(C`_\|_builtin_trap\*(C'\fR rather than a \f(CW\*(C`libubsan\*(C'\fR
  library routine.  If this option is enabled for certain sanitizer,
  it takes precedence over the \fB\-fsanitizer\-recover=\fR for that
*************** If \f(CW\*(C`\-fsanitize\-trap=undefined
*** 17317,17331 ****
  and \f(CW\*(C`\-fsanitize=vptr\*(C'\fR is enabled on the command line, the
  instrumentation is silently ignored as the instrumentation always needs
  \&\f(CW\*(C`libubsan\*(C'\fR support, \fB\-fsanitize\-trap=vptr\fR is not allowed.
! .IP "\fB\-fsanitize\-undefined\-trap\-on\-error\fR" 4
  .IX Item "-fsanitize-undefined-trap-on-error"
  The \fB\-fsanitize\-undefined\-trap\-on\-error\fR option is deprecated
  equivalent of \fB\-fsanitize\-trap=all\fR.
! .IP "\fB\-fsanitize\-coverage=trace\-pc\fR" 4
  .IX Item "-fsanitize-coverage=trace-pc"
! Enable coverage-guided fuzzing code instrumentation.
  Inserts a call to \f(CW\*(C`_\|_sanitizer_cov_trace_pc\*(C'\fR into every basic block.
! .IP "\fB\-fsanitize\-coverage=trace\-cmp\fR" 4
  .IX Item "-fsanitize-coverage=trace-cmp"
  Enable dataflow guided fuzzing code instrumentation.
  Inserts a call to \f(CW\*(C`_\|_sanitizer_cov_trace_cmp1\*(C'\fR,
--- 17252,17266 ----
  and \f(CW\*(C`\-fsanitize=vptr\*(C'\fR is enabled on the command line, the
  instrumentation is silently ignored as the instrumentation always needs
  \&\f(CW\*(C`libubsan\*(C'\fR support, \fB\-fsanitize\-trap=vptr\fR is not allowed.
! .IP \fB\-fsanitize\-undefined\-trap\-on\-error\fR 4
  .IX Item "-fsanitize-undefined-trap-on-error"
  The \fB\-fsanitize\-undefined\-trap\-on\-error\fR option is deprecated
  equivalent of \fB\-fsanitize\-trap=all\fR.
! .IP \fB\-fsanitize\-coverage=trace\-pc\fR 4
  .IX Item "-fsanitize-coverage=trace-pc"
! Enable coverage\-guided fuzzing code instrumentation.
  Inserts a call to \f(CW\*(C`_\|_sanitizer_cov_trace_pc\*(C'\fR into every basic block.
! .IP \fB\-fsanitize\-coverage=trace\-cmp\fR 4
  .IX Item "-fsanitize-coverage=trace-cmp"
  Enable dataflow guided fuzzing code instrumentation.
  Inserts a call to \f(CW\*(C`_\|_sanitizer_cov_trace_cmp1\*(C'\fR,
*************** variable or \f(CW\*(C`_\|_sanitizer_cov_
*** 17338,17361 ****
  operand constant, \f(CW\*(C`_\|_sanitizer_cov_trace_cmpf\*(C'\fR or
  \&\f(CW\*(C`_\|_sanitizer_cov_trace_cmpd\*(C'\fR for float or double comparisons and
  \&\f(CW\*(C`_\|_sanitizer_cov_trace_switch\*(C'\fR for switch statements.
! .IP "\fB\-fcf\-protection=\fR[\fBfull\fR|\fBbranch\fR|\fBreturn\fR|\fBnone\fR|\fBcheck\fR]" 4
  .IX Item "-fcf-protection=[full|branch|return|none|check]"
  .PD 0
! .IP "\fB\-fcf\-protection\fR" 4
  .IX Item "-fcf-protection"
  .PD
  Enable code instrumentation to increase
! program security by checking that target addresses of control-flow
  transfer instructions (such as indirect function call, function return,
  indirect jump) are valid.  This prevents diverting the flow of control
  to an unexpected target.  This is intended to protect against such
! threats as Return-oriented Programming (\s-1ROP\s0), and similarly
! call/jmp\-oriented programming (\s-1COP/JOP\s0).
  .Sp
  The \fB\-fcf\-protection=\fR keywords are interpreted as follows.
  .Sp
  The value \f(CW\*(C`branch\*(C'\fR tells the compiler to implement checking of
! validity of control-flow transfer at the point of indirect branch
  instructions, i.e. call/jmp instructions.
  .Sp
  The value \f(CW\*(C`return\*(C'\fR implements checking of validity at the point of
--- 17273,17296 ----
  operand constant, \f(CW\*(C`_\|_sanitizer_cov_trace_cmpf\*(C'\fR or
  \&\f(CW\*(C`_\|_sanitizer_cov_trace_cmpd\*(C'\fR for float or double comparisons and
  \&\f(CW\*(C`_\|_sanitizer_cov_trace_switch\*(C'\fR for switch statements.
! .IP \fB\-fcf\-protection=\fR[\fBfull\fR|\fBbranch\fR|\fBreturn\fR|\fBnone\fR|\fBcheck\fR] 4
  .IX Item "-fcf-protection=[full|branch|return|none|check]"
  .PD 0
! .IP \fB\-fcf\-protection\fR 4
  .IX Item "-fcf-protection"
  .PD
  Enable code instrumentation to increase
! program security by checking that target addresses of control\-flow
  transfer instructions (such as indirect function call, function return,
  indirect jump) are valid.  This prevents diverting the flow of control
  to an unexpected target.  This is intended to protect against such
! threats as Return\-oriented Programming (ROP), and similarly
! call/jmp\-oriented programming (COP/JOP).
  .Sp
  The \fB\-fcf\-protection=\fR keywords are interpreted as follows.
  .Sp
  The value \f(CW\*(C`branch\*(C'\fR tells the compiler to implement checking of
! validity of control\-flow transfer at the point of indirect branch
  instructions, i.e. call/jmp instructions.
  .Sp
  The value \f(CW\*(C`return\*(C'\fR implements checking of validity at the point of
*************** returning from a function.
*** 17364,17371 ****
  The value \f(CW\*(C`full\*(C'\fR is an alias for specifying both
  \&\f(CW\*(C`branch\*(C'\fR and \f(CW\*(C`return\*(C'\fR.
  .Sp
! The value \f(CW\*(C`check\*(C'\fR is used for the final link with link-time
! optimization (\s-1LTO\s0).  An error is issued if \s-1LTO\s0 object files are
  compiled with different \fB\-fcf\-protection\fR values.  The
  value \f(CW\*(C`check\*(C'\fR is ignored at the compile time.
  .Sp
--- 17299,17306 ----
  The value \f(CW\*(C`full\*(C'\fR is an alias for specifying both
  \&\f(CW\*(C`branch\*(C'\fR and \f(CW\*(C`return\*(C'\fR.
  .Sp
! The value \f(CW\*(C`check\*(C'\fR is used for the final link with link\-time
! optimization (LTO).  An error is issued if LTO object files are
  compiled with different \fB\-fcf\-protection\fR values.  The
  value \f(CW\*(C`check\*(C'\fR is ignored at the compile time.
  .Sp
*************** You can also use the \f(CW\*(C`nocf_chec
*** 17385,17393 ****
  which functions and calls should be skipped from instrumentation.
  .Sp
  Currently the x86 GNU/Linux target provides an implementation based
! on Intel Control-flow Enforcement Technology (\s-1CET\s0) which works for
  i686 processor or newer.
! .IP "\fB\-fharden\-compares\fR" 4
  .IX Item "-fharden-compares"
  For every logical test that survives gimple optimizations and is
  \&\fInot\fR the condition in a conditional branch (for example,
--- 17320,17328 ----
  which functions and calls should be skipped from instrumentation.
  .Sp
  Currently the x86 GNU/Linux target provides an implementation based
! on Intel Control\-flow Enforcement Technology (CET) which works for
  i686 processor or newer.
! .IP \fB\-fharden\-compares\fR 4
  .IX Item "-fharden-compares"
  For every logical test that survives gimple optimizations and is
  \&\fInot\fR the condition in a conditional branch (for example,
*************** variables), emit extra code to compute a
*** 17396,17409 ****
  condition, and to call \f(CW\*(C`_\|_builtin_trap\*(C'\fR if the results do not
  match.  Use with \fB\-fharden\-conditional\-branches\fR to cover all
  conditionals.
! .IP "\fB\-fharden\-conditional\-branches\fR" 4
  .IX Item "-fharden-conditional-branches"
! For every non-vectorized conditional branch that survives gimple
  optimizations, emit extra code to compute and verify the reversed
  condition, and to call \f(CW\*(C`_\|_builtin_trap\*(C'\fR if the result is
  unexpected.  Use with \fB\-fharden\-compares\fR to cover all
  conditionals.
! .IP "\fB\-fharden\-control\-flow\-redundancy\fR" 4
  .IX Item "-fharden-control-flow-redundancy"
  Emit extra code to set booleans when entering basic blocks, and to
  verify and trap, at function exits, when the booleans do not form an
--- 17331,17344 ----
  condition, and to call \f(CW\*(C`_\|_builtin_trap\*(C'\fR if the results do not
  match.  Use with \fB\-fharden\-conditional\-branches\fR to cover all
  conditionals.
! .IP \fB\-fharden\-conditional\-branches\fR 4
  .IX Item "-fharden-conditional-branches"
! For every non\-vectorized conditional branch that survives gimple
  optimizations, emit extra code to compute and verify the reversed
  condition, and to call \f(CW\*(C`_\|_builtin_trap\*(C'\fR if the result is
  unexpected.  Use with \fB\-fharden\-compares\fR to cover all
  conditionals.
! .IP \fB\-fharden\-control\-flow\-redundancy\fR 4
  .IX Item "-fharden-control-flow-redundancy"
  Emit extra code to set booleans when entering basic blocks, and to
  verify and trap, at function exits, when the booleans do not form an
*************** Verification takes place before returns,
*** 17414,17457 ****
  \&\fB\-fhardcfr\-check\-exceptions\fR, before returning calls with
  \&\fB\-fhardcfr\-check\-returning\-calls\fR, and before noreturn calls with
  \&\fB\-fhardcfr\-check\-noreturn\-calls\fR).  Tuning options
! \&\fB\-\-param hardcfr-max-blocks\fR and \fB\-\-param
! hardcfr-max-inline-blocks\fR are available.
  .Sp
  Tail call optimization takes place too late to affect control flow
  redundancy, but calls annotated as mandatory tail calls by language
! front-ends, and any calls marked early enough as potential tail calls
  would also have verification issued before the call, but these
  possibilities are merely theoretical, as these conditions can only be
  met when using custom compiler plugins.
! .IP "\fB\-fhardcfr\-skip\-leaf\fR" 4
  .IX Item "-fhardcfr-skip-leaf"
  Disable \fB\-fharden\-control\-flow\-redundancy\fR in leaf functions.
! .IP "\fB\-fhardcfr\-check\-exceptions\fR" 4
  .IX Item "-fhardcfr-check-exceptions"
  When \fB\-fharden\-control\-flow\-redundancy\fR is active, check the
  recorded execution path against the control flow graph at exception
  escape points, as if the function body was wrapped with a cleanup
  handler that performed the check and reraised.  This option is enabled
  by default; use \fB\-fno\-hardcfr\-check\-exceptions\fR to disable it.
! .IP "\fB\-fhardcfr\-check\-returning\-calls\fR" 4
  .IX Item "-fhardcfr-check-returning-calls"
  When \fB\-fharden\-control\-flow\-redundancy\fR is active, check the
  recorded execution path against the control flow graph before any
  function call immediately followed by a return of its result, if any, so
! as to not prevent tail-call optimization, whether or not it is
  ultimately optimized to a tail call.
  .Sp
  This option is enabled by default whenever sibling call optimizations
  are enabled (see \fB\-foptimize\-sibling\-calls\fR), but it can be
  enabled (or disabled, using its negated form) explicitly, regardless of
  the optimizations.
! .IP "\fB\-fhardcfr\-check\-noreturn\-calls=\fR[\fBalways\fR|\fBno-xthrow\fR|\fBnothrow\fR|\fBnever\fR]" 4
  .IX Item "-fhardcfr-check-noreturn-calls=[always|no-xthrow|nothrow|never]"
  When \fB\-fharden\-control\-flow\-redundancy\fR is active, check the
  recorded execution path against the control flow graph before
  \&\f(CW\*(C`noreturn\*(C'\fR calls, either all of them (\fBalways\fR), those that
! aren't expected to return control to the caller through an exception
! (\fBno-xthrow\fR, the default), those that may not return control to
  the caller through an exception either (\fBnothrow\fR), or none of
  them (\fBnever\fR).
  .Sp
--- 17349,17392 ----
  \&\fB\-fhardcfr\-check\-exceptions\fR, before returning calls with
  \&\fB\-fhardcfr\-check\-returning\-calls\fR, and before noreturn calls with
  \&\fB\-fhardcfr\-check\-noreturn\-calls\fR).  Tuning options
! \&\fB\-\-param hardcfr\-max\-blocks\fR and \fB\-\-param
! hardcfr\-max\-inline\-blocks\fR are available.
  .Sp
  Tail call optimization takes place too late to affect control flow
  redundancy, but calls annotated as mandatory tail calls by language
! front\-ends, and any calls marked early enough as potential tail calls
  would also have verification issued before the call, but these
  possibilities are merely theoretical, as these conditions can only be
  met when using custom compiler plugins.
! .IP \fB\-fhardcfr\-skip\-leaf\fR 4
  .IX Item "-fhardcfr-skip-leaf"
  Disable \fB\-fharden\-control\-flow\-redundancy\fR in leaf functions.
! .IP \fB\-fhardcfr\-check\-exceptions\fR 4
  .IX Item "-fhardcfr-check-exceptions"
  When \fB\-fharden\-control\-flow\-redundancy\fR is active, check the
  recorded execution path against the control flow graph at exception
  escape points, as if the function body was wrapped with a cleanup
  handler that performed the check and reraised.  This option is enabled
  by default; use \fB\-fno\-hardcfr\-check\-exceptions\fR to disable it.
! .IP \fB\-fhardcfr\-check\-returning\-calls\fR 4
  .IX Item "-fhardcfr-check-returning-calls"
  When \fB\-fharden\-control\-flow\-redundancy\fR is active, check the
  recorded execution path against the control flow graph before any
  function call immediately followed by a return of its result, if any, so
! as to not prevent tail\-call optimization, whether or not it is
  ultimately optimized to a tail call.
  .Sp
  This option is enabled by default whenever sibling call optimizations
  are enabled (see \fB\-foptimize\-sibling\-calls\fR), but it can be
  enabled (or disabled, using its negated form) explicitly, regardless of
  the optimizations.
! .IP \fB\-fhardcfr\-check\-noreturn\-calls=\fR[\fBalways\fR|\fBno\-xthrow\fR|\fBnothrow\fR|\fBnever\fR] 4
  .IX Item "-fhardcfr-check-noreturn-calls=[always|no-xthrow|nothrow|never]"
  When \fB\-fharden\-control\-flow\-redundancy\fR is active, check the
  recorded execution path against the control flow graph before
  \&\f(CW\*(C`noreturn\*(C'\fR calls, either all of them (\fBalways\fR), those that
! aren\*(Aqt expected to return control to the caller through an exception
! (\fBno\-xthrow\fR, the default), those that may not return control to
  the caller through an exception either (\fBnothrow\fR), or none of
  them (\fBnever\fR).
  .Sp
*************** the caller through an exception may caus
*** 17460,17466 ****
  than once, if the exception is caught in the caller, whether by a
  handler or a cleanup.  When \fB\-fhardcfr\-check\-exceptions\fR is also
  enabled, the compiler will avoid associating a \f(CW\*(C`noreturn\*(C'\fR call with
! the implicitly-added cleanup handler, since it would be redundant with
  the check performed before the call, but other handlers or cleanups in
  the function, if activated, will modify the recorded execution path and
  check it again when another checkpoint is hit.  The checkpoint may even
--- 17395,17401 ----
  than once, if the exception is caught in the caller, whether by a
  handler or a cleanup.  When \fB\-fhardcfr\-check\-exceptions\fR is also
  enabled, the compiler will avoid associating a \f(CW\*(C`noreturn\*(C'\fR call with
! the implicitly\-added cleanup handler, since it would be redundant with
  the check performed before the call, but other handlers or cleanups in
  the function, if activated, will modify the recorded execution path and
  check it again when another checkpoint is hit.  The checkpoint may even
*************** attributes, which may affect the placeme
*** 17473,17486 ****
  well as the addition of implicit cleanup handlers for them.  This
  unpredictability, and the fact that raising and reraising exceptions
  frequently amounts to implicitly calling \f(CW\*(C`noreturn\*(C'\fR functions, have
! made \fBno-xthrow\fR the default setting for this option: it excludes
  from the \f(CW\*(C`noreturn\*(C'\fR treatment only internal functions used to
  (re)raise exceptions, that are not affected by these optimizations.
! .IP "\fB\-fhardened\fR" 4
  .IX Item "-fhardened"
! Enable a set of flags for C and \*(C+ that improve the security of the
! generated code without affecting its \s-1ABI.\s0  The precise flags enabled
! may change between major releases of \s-1GCC,\s0 but are currently:
  .Sp
  \&\fB\-D_FORTIFY_SOURCE=3
  \&\-D_GLIBCXX_ASSERTIONS
--- 17408,17421 ----
  well as the addition of implicit cleanup handlers for them.  This
  unpredictability, and the fact that raising and reraising exceptions
  frequently amounts to implicitly calling \f(CW\*(C`noreturn\*(C'\fR functions, have
! made \fBno\-xthrow\fR the default setting for this option: it excludes
  from the \f(CW\*(C`noreturn\*(C'\fR treatment only internal functions used to
  (re)raise exceptions, that are not affected by these optimizations.
! .IP \fB\-fhardened\fR 4
  .IX Item "-fhardened"
! Enable a set of flags for C and C++ that improve the security of the
! generated code without affecting its ABI.  The precise flags enabled
! may change between major releases of GCC, but are currently:
  .Sp
  \&\fB\-D_FORTIFY_SOURCE=3
  \&\-D_GLIBCXX_ASSERTIONS
*************** in debug builds.
*** 17501,17511 ****
  .Sp
  Currently, \fB\-fhardened\fR is only supported on GNU/Linux targets.
  .Sp
! \&\fB\-fhardened\fR only enables a particular option if it wasn't
  already specified anywhere on the command line.  For instance,
  \&\fB\-fhardened\fR \fB\-fstack\-protector\fR will only enable
  \&\fB\-fstack\-protector\fR, but not \fB\-fstack\-protector\-strong\fR.
! .IP "\fB\-fstack\-protector\fR" 4
  .IX Item "-fstack-protector"
  Emit extra code to check for buffer overflows, such as stack smashing
  attacks.  This is done by adding a guard variable to functions with
--- 17436,17446 ----
  .Sp
  Currently, \fB\-fhardened\fR is only supported on GNU/Linux targets.
  .Sp
! \&\fB\-fhardened\fR only enables a particular option if it wasn\*(Aqt
  already specified anywhere on the command line.  For instance,
  \&\fB\-fhardened\fR \fB\-fstack\-protector\fR will only enable
  \&\fB\-fstack\-protector\fR, but not \fB\-fstack\-protector\-strong\fR.
! .IP \fB\-fstack\-protector\fR 4
  .IX Item "-fstack-protector"
  Emit extra code to check for buffer overflows, such as stack smashing
  attacks.  This is done by adding a guard variable to functions with
*************** initialized when a function is entered a
*** 17515,17541 ****
  exits.  If a guard check fails, an error message is printed and the program
  exits.  Only variables that are actually allocated on the stack are
  considered, optimized away variables or variables allocated in registers
! don't count.
! .IP "\fB\-fstack\-protector\-all\fR" 4
  .IX Item "-fstack-protector-all"
  Like \fB\-fstack\-protector\fR except that all functions are protected.
! .IP "\fB\-fstack\-protector\-strong\fR" 4
  .IX Item "-fstack-protector-strong"
  Like \fB\-fstack\-protector\fR but includes additional functions to
  be protected \-\-\- those that have local array definitions, or have
  references to local frame addresses.  Only variables that are actually
  allocated on the stack are considered, optimized away variables or variables
! allocated in registers don't count.
! .IP "\fB\-fstack\-protector\-explicit\fR" 4
  .IX Item "-fstack-protector-explicit"
  Like \fB\-fstack\-protector\fR but only protects those functions which
  have the \f(CW\*(C`stack_protect\*(C'\fR attribute.
! .IP "\fB\-fstack\-check\fR" 4
  .IX Item "-fstack-check"
  Generate code to verify that you do not go beyond the boundary of the
  stack.  You should specify this flag if you are running in an
  environment with multiple threads, but you only rarely need to specify it in
! a single-threaded environment since stack overflow is automatically
  detected on nearly all systems if there is only one stack.
  .Sp
  Note that this switch does not actually cause checking to be done; the
--- 17450,17476 ----
  exits.  If a guard check fails, an error message is printed and the program
  exits.  Only variables that are actually allocated on the stack are
  considered, optimized away variables or variables allocated in registers
! don\*(Aqt count.
! .IP \fB\-fstack\-protector\-all\fR 4
  .IX Item "-fstack-protector-all"
  Like \fB\-fstack\-protector\fR except that all functions are protected.
! .IP \fB\-fstack\-protector\-strong\fR 4
  .IX Item "-fstack-protector-strong"
  Like \fB\-fstack\-protector\fR but includes additional functions to
  be protected \-\-\- those that have local array definitions, or have
  references to local frame addresses.  Only variables that are actually
  allocated on the stack are considered, optimized away variables or variables
! allocated in registers don\*(Aqt count.
! .IP \fB\-fstack\-protector\-explicit\fR 4
  .IX Item "-fstack-protector-explicit"
  Like \fB\-fstack\-protector\fR but only protects those functions which
  have the \f(CW\*(C`stack_protect\*(C'\fR attribute.
! .IP \fB\-fstack\-check\fR 4
  .IX Item "-fstack-check"
  Generate code to verify that you do not go beyond the boundary of the
  stack.  You should specify this flag if you are running in an
  environment with multiple threads, but you only rarely need to specify it in
! a single\-threaded environment since stack overflow is automatically
  detected on nearly all systems if there is only one stack.
  .Sp
  Note that this switch does not actually cause checking to be done; the
*************** operating system or the language runtime
*** 17543,17581 ****
  generation of code to ensure that they see the stack being extended.
  .Sp
  You can additionally specify a string parameter: \fBno\fR means no
! checking, \fBgeneric\fR means force the use of old-style checking,
  \&\fBspecific\fR means use the best checking method and is equivalent
  to bare \fB\-fstack\-check\fR.
  .Sp
! Old-style checking is a generic mechanism that requires no specific
  target support in the compiler but comes with the following drawbacks:
  .RS 4
! .IP "1." 4
  .IX Item "1."
  Modified allocation strategy for large objects: they are always
  allocated dynamically if their size exceeds a fixed threshold.  Note this
  may change the semantics of some code.
! .IP "2." 4
  .IX Item "2."
  Fixed limit on the size of the static frame of functions: when it is
  topped by a particular function, stack checking is not reliable and
  a warning is issued by the compiler.
! .IP "3." 4
  .IX Item "3."
  Inefficiency: because of both the modified allocation strategy and the
  generic implementation, code performance is hampered.
  .RE
  .RS 4
  .Sp
! Note that old-style stack checking is also the fallback method for
  \&\fBspecific\fR if no target support has been added in the compiler.
  .Sp
! \&\fB\-fstack\-check=\fR is designed for Ada's needs to detect infinite recursion
  and stack overflows.  \fBspecific\fR is an excellent choice when compiling
! Ada code.  It is not generally sufficient to protect against stack-clash
  attacks.  To protect against those you want \fB\-fstack\-clash\-protection\fR.
  .RE
! .IP "\fB\-fstack\-clash\-protection\fR" 4
  .IX Item "-fstack-clash-protection"
  Generate code to prevent stack clash style attacks.  When this option is
  enabled, the compiler will only allocate one page of stack space at a time
--- 17478,17516 ----
  generation of code to ensure that they see the stack being extended.
  .Sp
  You can additionally specify a string parameter: \fBno\fR means no
! checking, \fBgeneric\fR means force the use of old\-style checking,
  \&\fBspecific\fR means use the best checking method and is equivalent
  to bare \fB\-fstack\-check\fR.
  .Sp
! Old\-style checking is a generic mechanism that requires no specific
  target support in the compiler but comes with the following drawbacks:
  .RS 4
! .IP 1. 4
  .IX Item "1."
  Modified allocation strategy for large objects: they are always
  allocated dynamically if their size exceeds a fixed threshold.  Note this
  may change the semantics of some code.
! .IP 2. 4
  .IX Item "2."
  Fixed limit on the size of the static frame of functions: when it is
  topped by a particular function, stack checking is not reliable and
  a warning is issued by the compiler.
! .IP 3. 4
  .IX Item "3."
  Inefficiency: because of both the modified allocation strategy and the
  generic implementation, code performance is hampered.
  .RE
  .RS 4
  .Sp
! Note that old\-style stack checking is also the fallback method for
  \&\fBspecific\fR if no target support has been added in the compiler.
  .Sp
! \&\fB\-fstack\-check=\fR is designed for Ada\*(Aqs needs to detect infinite recursion
  and stack overflows.  \fBspecific\fR is an excellent choice when compiling
! Ada code.  It is not generally sufficient to protect against stack\-clash
  attacks.  To protect against those you want \fB\-fstack\-clash\-protection\fR.
  .RE
! .IP \fB\-fstack\-clash\-protection\fR 4
  .IX Item "-fstack-clash-protection"
  Generate code to prevent stack clash style attacks.  When this option is
  enabled, the compiler will only allocate one page of stack space at a time
*************** those targets \fB\-fstack\-clash\-protec
*** 17588,17599 ****
  allocations.  \fB\-fstack\-clash\-protection\fR may also provide limited
  protection for static stack allocations if the target supports
  \&\fB\-fstack\-check=specific\fR.
! .IP "\fB\-fstack\-limit\-register=\fR\fIreg\fR" 4
  .IX Item "-fstack-limit-register=reg"
  .PD 0
! .IP "\fB\-fstack\-limit\-symbol=\fR\fIsym\fR" 4
  .IX Item "-fstack-limit-symbol=sym"
! .IP "\fB\-fno\-stack\-limit\fR" 4
  .IX Item "-fno-stack-limit"
  .PD
  Generate code to ensure that the stack does not grow beyond a certain value,
--- 17523,17534 ----
  allocations.  \fB\-fstack\-clash\-protection\fR may also provide limited
  protection for static stack allocations if the target supports
  \&\fB\-fstack\-check=specific\fR.
! .IP \fB\-fstack\-limit\-register=\fR\fIreg\fR 4
  .IX Item "-fstack-limit-register=reg"
  .PD 0
! .IP \fB\-fstack\-limit\-symbol=\fR\fIsym\fR 4
  .IX Item "-fstack-limit-symbol=sym"
! .IP \fB\-fno\-stack\-limit\fR 4
  .IX Item "-fno-stack-limit"
  .PD
  Generate code to ensure that the stack does not grow beyond a certain value,
*************** For instance, if the stack starts at abs
*** 17606,17616 ****
  and grows downwards, you can use the flags
  \&\fB\-fstack\-limit\-symbol=_\|_stack_limit\fR and
  \&\fB\-Wl,\-\-defsym,_\|_stack_limit=0x7ffe0000\fR to enforce a stack limit
! of 128KB.  Note that this may only work with the \s-1GNU\s0 linker.
  .Sp
  You can locally override stack limit checking by using the
  \&\f(CW\*(C`no_stack_limit\*(C'\fR function attribute.
! .IP "\fB\-fsplit\-stack\fR" 4
  .IX Item "-fsplit-stack"
  Generate code to automatically split the stack before it overflows.
  The resulting program has a discontiguous stack which can only
--- 17541,17551 ----
  and grows downwards, you can use the flags
  \&\fB\-fstack\-limit\-symbol=_\|_stack_limit\fR and
  \&\fB\-Wl,\-\-defsym,_\|_stack_limit=0x7ffe0000\fR to enforce a stack limit
! of 128KB.  Note that this may only work with the GNU linker.
  .Sp
  You can locally override stack limit checking by using the
  \&\f(CW\*(C`no_stack_limit\*(C'\fR function attribute.
! .IP \fB\-fsplit\-stack\fR 4
  .IX Item "-fsplit-stack"
  Generate code to automatically split the stack before it overflows.
  The resulting program has a discontiguous stack which can only
*************** available for the latter code to run.  I
*** 17626,17645 ****
  including library code, with \fB\-fsplit\-stack\fR is not an option,
  then the linker can fix up these calls so that the code compiled
  without \fB\-fsplit\-stack\fR always has a large stack.  Support for
! this is implemented in the gold linker in \s-1GNU\s0 binutils release 2.21
  and later.
! .IP "\fB\-fstrub=disable\fR" 4
  .IX Item "-fstrub=disable"
  Disable stack scrubbing entirely, ignoring any \f(CW\*(C`strub\*(C'\fR attributes.
  See
! .IP "\fB\-fstrub=strict\fR" 4
  .IX Item "-fstrub=strict"
  Functions default to \f(CW\*(C`strub\*(C'\fR mode \f(CW\*(C`disabled\*(C'\fR, and apply
  \&\fBstrict\fRly the restriction that only functions associated with
  \&\f(CW\*(C`strub\*(C'\fR\-\f(CW\*(C`callable\*(C'\fR modes (\f(CW\*(C`at\-calls\*(C'\fR, \f(CW\*(C`callable\*(C'\fR and
  \&\f(CW\*(C`always_inline\*(C'\fR \f(CW\*(C`internal\*(C'\fR) are \f(CW\*(C`callable\*(C'\fR by functions
  with \f(CW\*(C`strub\*(C'\fR\-enabled modes (\f(CW\*(C`at\-calls\*(C'\fR and \f(CW\*(C`internal\*(C'\fR).
! .IP "\fB\-fstrub=relaxed\fR" 4
  .IX Item "-fstrub=relaxed"
  Restore the default stack scrub (\f(CW\*(C`strub\*(C'\fR) setting, namely,
  \&\f(CW\*(C`strub\*(C'\fR is only enabled as required by \f(CW\*(C`strub\*(C'\fR attributes
--- 17561,17580 ----
  including library code, with \fB\-fsplit\-stack\fR is not an option,
  then the linker can fix up these calls so that the code compiled
  without \fB\-fsplit\-stack\fR always has a large stack.  Support for
! this is implemented in the gold linker in GNU binutils release 2.21
  and later.
! .IP \fB\-fstrub=disable\fR 4
  .IX Item "-fstrub=disable"
  Disable stack scrubbing entirely, ignoring any \f(CW\*(C`strub\*(C'\fR attributes.
  See
! .IP \fB\-fstrub=strict\fR 4
  .IX Item "-fstrub=strict"
  Functions default to \f(CW\*(C`strub\*(C'\fR mode \f(CW\*(C`disabled\*(C'\fR, and apply
  \&\fBstrict\fRly the restriction that only functions associated with
  \&\f(CW\*(C`strub\*(C'\fR\-\f(CW\*(C`callable\*(C'\fR modes (\f(CW\*(C`at\-calls\*(C'\fR, \f(CW\*(C`callable\*(C'\fR and
  \&\f(CW\*(C`always_inline\*(C'\fR \f(CW\*(C`internal\*(C'\fR) are \f(CW\*(C`callable\*(C'\fR by functions
  with \f(CW\*(C`strub\*(C'\fR\-enabled modes (\f(CW\*(C`at\-calls\*(C'\fR and \f(CW\*(C`internal\*(C'\fR).
! .IP \fB\-fstrub=relaxed\fR 4
  .IX Item "-fstrub=relaxed"
  Restore the default stack scrub (\f(CW\*(C`strub\*(C'\fR) setting, namely,
  \&\f(CW\*(C`strub\*(C'\fR is only enabled as required by \f(CW\*(C`strub\*(C'\fR attributes
*************** strub contexts are only prevented from c
*** 17648,17654 ****
  associated with \f(CW\*(C`strub\*(C'\fR mode \f(CW\*(C`disabled\*(C'\fR.  This option is only
  useful to override other \fB\-fstrub=*\fR options that precede it in
  the command line.
! .IP "\fB\-fstrub=at\-calls\fR" 4
  .IX Item "-fstrub=at-calls"
  Enable \f(CW\*(C`at\-calls\*(C'\fR \f(CW\*(C`strub\*(C'\fR mode where viable.  The primary use
  of this option is for testing.  It exercises the \f(CW\*(C`strub\*(C'\fR machinery
--- 17583,17589 ----
  associated with \f(CW\*(C`strub\*(C'\fR mode \f(CW\*(C`disabled\*(C'\fR.  This option is only
  useful to override other \fB\-fstrub=*\fR options that precede it in
  the command line.
! .IP \fB\-fstrub=at\-calls\fR 4
  .IX Item "-fstrub=at-calls"
  Enable \f(CW\*(C`at\-calls\*(C'\fR \f(CW\*(C`strub\*(C'\fR mode where viable.  The primary use
  of this option is for testing.  It exercises the \f(CW\*(C`strub\*(C'\fR machinery
*************** other translation units, or that has its
*** 17658,17680 ****
  be affected by this option.  Optimization options may also affect
  viability.  See the \f(CW\*(C`strub\*(C'\fR attribute documentation for details on
  viability and eligibility requirements.
! .IP "\fB\-fstrub=internal\fR" 4
  .IX Item "-fstrub=internal"
  Enable \f(CW\*(C`internal\*(C'\fR \f(CW\*(C`strub\*(C'\fR mode where viable.  The primary use
  of this option is for testing.  This option is intended to exercise
  thoroughly parts of the \f(CW\*(C`strub\*(C'\fR machinery that implement the less
! efficient, but interface-preserving \f(CW\*(C`strub\*(C'\fR mode.  Functions that
  would not be affected by this option are quite uncommon.
! .IP "\fB\-fstrub=all\fR" 4
  .IX Item "-fstrub=all"
  Enable some \f(CW\*(C`strub\*(C'\fR mode where viable.  When both strub modes are
  viable, \f(CW\*(C`at\-calls\*(C'\fR is preferred.  \fB\-fdump\-ipa\-strubm\fR adds
  function attributes that tell which mode was selected for each function.
  The primary use of this option is for testing, to exercise thoroughly
  the \f(CW\*(C`strub\*(C'\fR machinery.
! .IP "\fB\-fvtable\-verify=\fR[\fBstd\fR|\fBpreinit\fR|\fBnone\fR]" 4
  .IX Item "-fvtable-verify=[std|preinit|none]"
! This option is only available when compiling \*(C+ code.
  It turns on (or off, if using \fB\-fvtable\-verify=none\fR) the security
  feature that verifies at run time, for every virtual call, that
  the vtable pointer through which the call is made is valid for the type of
--- 17593,17615 ----
  be affected by this option.  Optimization options may also affect
  viability.  See the \f(CW\*(C`strub\*(C'\fR attribute documentation for details on
  viability and eligibility requirements.
! .IP \fB\-fstrub=internal\fR 4
  .IX Item "-fstrub=internal"
  Enable \f(CW\*(C`internal\*(C'\fR \f(CW\*(C`strub\*(C'\fR mode where viable.  The primary use
  of this option is for testing.  This option is intended to exercise
  thoroughly parts of the \f(CW\*(C`strub\*(C'\fR machinery that implement the less
! efficient, but interface\-preserving \f(CW\*(C`strub\*(C'\fR mode.  Functions that
  would not be affected by this option are quite uncommon.
! .IP \fB\-fstrub=all\fR 4
  .IX Item "-fstrub=all"
  Enable some \f(CW\*(C`strub\*(C'\fR mode where viable.  When both strub modes are
  viable, \f(CW\*(C`at\-calls\*(C'\fR is preferred.  \fB\-fdump\-ipa\-strubm\fR adds
  function attributes that tell which mode was selected for each function.
  The primary use of this option is for testing, to exercise thoroughly
  the \f(CW\*(C`strub\*(C'\fR machinery.
! .IP \fB\-fvtable\-verify=\fR[\fBstd\fR|\fBpreinit\fR|\fBnone\fR] 4
  .IX Item "-fvtable-verify=[std|preinit|none]"
! This option is only available when compiling C++ code.
  It turns on (or off, if using \fB\-fvtable\-verify=none\fR) the security
  feature that verifies at run time, for every virtual call, that
  the vtable pointer through which the call is made is valid for the type of
*************** the object, and has not been corrupted o
*** 17682,17688 ****
  pointer is detected at run time, an error is reported and execution of the
  program is immediately halted.
  .Sp
! This option causes run-time data structures to be built at program startup,
  which are used for verifying the vtable pointers.
  The options \fBstd\fR and \fBpreinit\fR
  control the timing of when these data structures are built.  In both cases the
--- 17617,17623 ----
  pointer is detected at run time, an error is reported and execution of the
  program is immediately halted.
  .Sp
! This option causes run\-time data structures to be built at program startup,
  which are used for verifying the vtable pointers.
  The options \fBstd\fR and \fBpreinit\fR
  control the timing of when these data structures are built.  In both cases the
*************** libraries have been loaded and initializ
*** 17695,17701 ****
  If this option appears multiple times in the command line with different
  values specified, \fBnone\fR takes highest priority over both \fBstd\fR and
  \&\fBpreinit\fR; \fBpreinit\fR takes priority over \fBstd\fR.
! .IP "\fB\-fvtv\-debug\fR" 4
  .IX Item "-fvtv-debug"
  When used in conjunction with \fB\-fvtable\-verify=std\fR or
  \&\fB\-fvtable\-verify=preinit\fR, causes debug versions of the
--- 17630,17636 ----
  If this option appears multiple times in the command line with different
  values specified, \fBnone\fR takes highest priority over both \fBstd\fR and
  \&\fBpreinit\fR; \fBpreinit\fR takes priority over \fBstd\fR.
! .IP \fB\-fvtv\-debug\fR 4
  .IX Item "-fvtv-debug"
  When used in conjunction with \fB\-fvtable\-verify=std\fR or
  \&\fB\-fvtable\-verify=preinit\fR, causes debug versions of the
*************** runtime functions for the vtable verific
*** 17703,17731 ****
  This flag also causes the compiler to log information about which
  vtable pointers it finds for each class.
  This information is written to a file named \fIvtv_set_ptr_data.log\fR
! in the directory named by the environment variable \fB\s-1VTV_LOGS_DIR\s0\fR
  if that is defined or the current working directory otherwise.
  .Sp
  Note:  This feature \fIappends\fR data to the log file. If you want a fresh log
  file, be sure to delete any existing one.
! .IP "\fB\-fvtv\-counts\fR" 4
  .IX Item "-fvtv-counts"
  This is a debugging flag.  When used in conjunction with
  \&\fB\-fvtable\-verify=std\fR or \fB\-fvtable\-verify=preinit\fR, this
  causes the compiler to keep track of the total number of virtual calls
  it encounters and the number of verifications it inserts.  It also
! counts the number of calls to certain run-time library functions
  that it inserts and logs this information for each compilation unit.
  The compiler writes this information to a file named
  \&\fIvtv_count_data.log\fR in the directory named by the environment
! variable \fB\s-1VTV_LOGS_DIR\s0\fR if that is defined or the current working
  directory otherwise.  It also counts the size of the vtable pointer sets
  for each class, and writes this information to \fIvtv_class_set_sizes.log\fR
  in the same directory.
  .Sp
  Note:  This feature \fIappends\fR data to the log files.  To get fresh log
  files, be sure to delete any existing ones.
! .IP "\fB\-finstrument\-functions\fR" 4
  .IX Item "-finstrument-functions"
  Generate instrumentation calls for entry and exit to functions.  Just
  after function entry and just before function exit, the following
--- 17638,17666 ----
  This flag also causes the compiler to log information about which
  vtable pointers it finds for each class.
  This information is written to a file named \fIvtv_set_ptr_data.log\fR
! in the directory named by the environment variable \fBVTV_LOGS_DIR\fR
  if that is defined or the current working directory otherwise.
  .Sp
  Note:  This feature \fIappends\fR data to the log file. If you want a fresh log
  file, be sure to delete any existing one.
! .IP \fB\-fvtv\-counts\fR 4
  .IX Item "-fvtv-counts"
  This is a debugging flag.  When used in conjunction with
  \&\fB\-fvtable\-verify=std\fR or \fB\-fvtable\-verify=preinit\fR, this
  causes the compiler to keep track of the total number of virtual calls
  it encounters and the number of verifications it inserts.  It also
! counts the number of calls to certain run\-time library functions
  that it inserts and logs this information for each compilation unit.
  The compiler writes this information to a file named
  \&\fIvtv_count_data.log\fR in the directory named by the environment
! variable \fBVTV_LOGS_DIR\fR if that is defined or the current working
  directory otherwise.  It also counts the size of the vtable pointer sets
  for each class, and writes this information to \fIvtv_class_set_sizes.log\fR
  in the same directory.
  .Sp
  Note:  This feature \fIappends\fR data to the log files.  To get fresh log
  files, be sure to delete any existing ones.
! .IP \fB\-finstrument\-functions\fR 4
  .IX Item "-finstrument-functions"
  Generate instrumentation calls for entry and exit to functions.  Just
  after function entry and just before function exit, the following
*************** providing static copies.)
*** 17758,17768 ****
  .Sp
  A function may be given the attribute \f(CW\*(C`no_instrument_function\*(C'\fR, in
  which case this instrumentation is not done.  This can be used, for
! example, for the profiling functions listed above, high-priority
  interrupt routines, and any functions from which the profiling functions
  cannot safely be called (perhaps signal handlers, if the profiling
  routines generate output or allocate memory).
! .IP "\fB\-finstrument\-functions\-once\fR" 4
  .IX Item "-finstrument-functions-once"
  This is similar to \fB\-finstrument\-functions\fR, but the profiling
  functions are called only once per instrumented function, i.e. the first
--- 17693,17703 ----
  .Sp
  A function may be given the attribute \f(CW\*(C`no_instrument_function\*(C'\fR, in
  which case this instrumentation is not done.  This can be used, for
! example, for the profiling functions listed above, high\-priority
  interrupt routines, and any functions from which the profiling functions
  cannot safely be called (perhaps signal handlers, if the profiling
  routines generate output or allocate memory).
! .IP \fB\-finstrument\-functions\-once\fR 4
  .IX Item "-finstrument-functions-once"
  This is similar to \fB\-finstrument\-functions\fR, but the profiling
  functions are called only once per instrumented function, i.e. the first
*************** functions are called at \fIleast\fR once
*** 17777,17783 ****
  once per thread, but the calls are always paired, that is to say, if a
  thread calls the first function, then it will call the second function,
  unless it never reaches the exit of the instrumented function.
! .IP "\fB\-finstrument\-functions\-exclude\-file\-list=\fR\fIfile\fR\fB,\fR\fIfile\fR\fB,...\fR" 4
  .IX Item "-finstrument-functions-exclude-file-list=file,file,..."
  Set the list of functions that are excluded from instrumentation (see
  the description of \fB\-finstrument\-functions\fR).  If the file that
--- 17712,17718 ----
  once per thread, but the calls are always paired, that is to say, if a
  thread calls the first function, then it will call the second function,
  unless it never reaches the exit of the instrumented function.
! .IP \fB\-finstrument\-functions\-exclude\-file\-list=\fR\fIfile\fR\fB,\fR\fIfile\fR\fB,...\fR 4
  .IX Item "-finstrument-functions-exclude-file-list=file,file,..."
  Set the list of functions that are excluded from instrumentation (see
  the description of \fB\-finstrument\-functions\fR).  If the file that
*************** contain \fI/bits/stl\fR or \fIinclude/sy
*** 17797,17848 ****
  .Sp
  If, for some reason, you want to include letter \fB,\fR in one of
  \&\fIsym\fR, write \fB,\fR. For example,
! \&\fB\-finstrument\-functions\-exclude\-file\-list=',,tmp'\fR
  (note the single quote surrounding the option).
! .IP "\fB\-finstrument\-functions\-exclude\-function\-list=\fR\fIsym\fR\fB,\fR\fIsym\fR\fB,...\fR" 4
  .IX Item "-finstrument-functions-exclude-function-list=sym,sym,..."
  This is similar to \fB\-finstrument\-functions\-exclude\-file\-list\fR,
  but this option sets the list of function names to be excluded from
! instrumentation.  The function name to be matched is its user-visible
  name, such as \f(CW\*(C`vector<int> blah(const vector<int> &)\*(C'\fR, not the
  internal mangled name (e.g., \f(CW\*(C`_Z4blahRSt6vectorIiSaIiEE\*(C'\fR).  The
  match is done on substrings: if the \fIsym\fR parameter is a substring
! of the function name, it is considered to be a match.  For C99 and \*(C+
! extended identifiers, the function name must be given in \s-1UTF\-8,\s0 not
  using universal character names.
! .IP "\fB\-fpatchable\-function\-entry=\fR\fIN\fR\fB[,\fR\fIM\fR\fB]\fR" 4
  .IX Item "-fpatchable-function-entry=N[,M]"
  Generate \fIN\fR NOPs right at the beginning
! of each function, with the function entry point before the \fIM\fRth \s-1NOP.\s0
  If \fIM\fR is omitted, it defaults to \f(CW0\fR so the
! function entry points to the address just at the first \s-1NOP.\s0
! The \s-1NOP\s0 instructions reserve extra space which can be used to patch in
  any desired instrumentation at run time, provided that the code segment
  is writable.  The amount of space is controllable indirectly via
! the number of NOPs; the \s-1NOP\s0 instruction used corresponds to the instruction
! emitted by the internal \s-1GCC\s0 back-end interface \f(CW\*(C`gen_nop\*(C'\fR.  This behavior
! is target-specific and may also depend on the architecture variant and/or
  other compilation options.
  .Sp
! For run-time identification, the starting addresses of these areas,
  which correspond to their respective function entries minus \fIM\fR,
  are additionally collected in the \f(CW\*(C`_\|_patchable_function_entries\*(C'\fR
  section of the resulting binary.
  .Sp
  Note that the value of \f(CW\*(C`_\|_attribute_\|_ ((patchable_function_entry
! (N,M)))\*(C'\fR takes precedence over command-line option
  \&\fB\-fpatchable\-function\-entry=N,M\fR.  This can be used to increase
  the area size or to remove it completely on a single function.
  If \f(CW\*(C`N=0\*(C'\fR, no pad location is recorded.
  .Sp
! The \s-1NOP\s0 instructions are inserted at\-\-\-and maybe before, depending on
  \&\fIM\fR\-\-\-the function entry address, even before the prologue.  On
! PowerPC with the ELFv2 \s-1ABI,\s0 for a function with dual entry points,
  the local entry point is this function entry address by default.  See
  the \fB\-msplit\-patch\-nops\fR option to change this.
  .Sp
  The maximum value of \fIN\fR and \fIM\fR is 65535.  On PowerPC with the
! ELFv2 \s-1ABI,\s0 for a function with dual entry points, the supported values
  for \fIM\fR are 0, 2, 6 and 14 when not using \fB\-msplit\-patch\-nops\fR.
  .SS "Options Controlling the Preprocessor"
  .IX Subsection "Options Controlling the Preprocessor"
--- 17732,17783 ----
  .Sp
  If, for some reason, you want to include letter \fB,\fR in one of
  \&\fIsym\fR, write \fB,\fR. For example,
! \&\fB\-finstrument\-functions\-exclude\-file\-list=\*(Aq,,tmp\*(Aq\fR
  (note the single quote surrounding the option).
! .IP \fB\-finstrument\-functions\-exclude\-function\-list=\fR\fIsym\fR\fB,\fR\fIsym\fR\fB,...\fR 4
  .IX Item "-finstrument-functions-exclude-function-list=sym,sym,..."
  This is similar to \fB\-finstrument\-functions\-exclude\-file\-list\fR,
  but this option sets the list of function names to be excluded from
! instrumentation.  The function name to be matched is its user\-visible
  name, such as \f(CW\*(C`vector<int> blah(const vector<int> &)\*(C'\fR, not the
  internal mangled name (e.g., \f(CW\*(C`_Z4blahRSt6vectorIiSaIiEE\*(C'\fR).  The
  match is done on substrings: if the \fIsym\fR parameter is a substring
! of the function name, it is considered to be a match.  For C99 and C++
! extended identifiers, the function name must be given in UTF\-8, not
  using universal character names.
! .IP \fB\-fpatchable\-function\-entry=\fR\fIN\fR\fB[,\fR\fIM\fR\fB]\fR 4
  .IX Item "-fpatchable-function-entry=N[,M]"
  Generate \fIN\fR NOPs right at the beginning
! of each function, with the function entry point before the \fIM\fRth NOP.
  If \fIM\fR is omitted, it defaults to \f(CW0\fR so the
! function entry points to the address just at the first NOP.
! The NOP instructions reserve extra space which can be used to patch in
  any desired instrumentation at run time, provided that the code segment
  is writable.  The amount of space is controllable indirectly via
! the number of NOPs; the NOP instruction used corresponds to the instruction
! emitted by the internal GCC back\-end interface \f(CW\*(C`gen_nop\*(C'\fR.  This behavior
! is target\-specific and may also depend on the architecture variant and/or
  other compilation options.
  .Sp
! For run\-time identification, the starting addresses of these areas,
  which correspond to their respective function entries minus \fIM\fR,
  are additionally collected in the \f(CW\*(C`_\|_patchable_function_entries\*(C'\fR
  section of the resulting binary.
  .Sp
  Note that the value of \f(CW\*(C`_\|_attribute_\|_ ((patchable_function_entry
! (N,M)))\*(C'\fR takes precedence over command\-line option
  \&\fB\-fpatchable\-function\-entry=N,M\fR.  This can be used to increase
  the area size or to remove it completely on a single function.
  If \f(CW\*(C`N=0\*(C'\fR, no pad location is recorded.
  .Sp
! The NOP instructions are inserted at\-\-\-and maybe before, depending on
  \&\fIM\fR\-\-\-the function entry address, even before the prologue.  On
! PowerPC with the ELFv2 ABI, for a function with dual entry points,
  the local entry point is this function entry address by default.  See
  the \fB\-msplit\-patch\-nops\fR option to change this.
  .Sp
  The maximum value of \fIN\fR and \fIM\fR is 65535.  On PowerPC with the
! ELFv2 ABI, for a function with dual entry points, the supported values
  for \fIM\fR are 0, 2, 6 and 14 when not using \fB\-msplit\-patch\-nops\fR.
  .SS "Options Controlling the Preprocessor"
  .IX Subsection "Options Controlling the Preprocessor"
*************** they appeared during translation phase t
*** 17869,17883 ****
  directive.  In particular, the definition is truncated by
  embedded newline characters.
  .Sp
! If you are invoking the preprocessor from a shell or shell-like
! program you may need to use the shell's quoting syntax to protect
  characters such as spaces that have a meaning in the shell syntax.
  .Sp
! If you wish to define a function-like macro on the command line, write
  its argument list with surrounding parentheses before the equals sign
  (if any).  Parentheses are meaningful to most shells, so you should
  quote the option.  With \fBsh\fR and \fBcsh\fR,
! \&\fB\-D'\fR\fIname\fR\fB(\fR\fIargs...\fR\fB)=\fR\fIdefinition\fR\fB'\fR works.
  .Sp
  \&\fB\-D\fR and \fB\-U\fR options are processed in the order they
  are given on the command line.  All \fB\-imacros\fR \fIfile\fR and
--- 17804,17818 ----
  directive.  In particular, the definition is truncated by
  embedded newline characters.
  .Sp
! If you are invoking the preprocessor from a shell or shell\-like
! program you may need to use the shell\*(Aqs quoting syntax to protect
  characters such as spaces that have a meaning in the shell syntax.
  .Sp
! If you wish to define a function\-like macro on the command line, write
  its argument list with surrounding parentheses before the equals sign
  (if any).  Parentheses are meaningful to most shells, so you should
  quote the option.  With \fBsh\fR and \fBcsh\fR,
! \&\fB\-D\*(Aq\fR\fIname\fR\fB(\fR\fIargs...\fR\fB)=\fR\fIdefinition\fR\fB\*(Aq\fR works.
  .Sp
  \&\fB\-D\fR and \fB\-U\fR options are processed in the order they
  are given on the command line.  All \fB\-imacros\fR \fIfile\fR and
*************** provided with a \fB\-D\fR option.
*** 17891,17897 ****
  .IX Item "-include file"
  Process \fIfile\fR as if \f(CW\*(C`#include "file"\*(C'\fR appeared as the first
  line of the primary source file.  However, the first directory searched
! for \fIfile\fR is the preprocessor's working directory \fIinstead of\fR
  the directory containing the main source file.  If not found there, it
  is searched for in the remainder of the \f(CW\*(C`#include "..."\*(C'\fR search
  chain as normal.
--- 17826,17832 ----
  .IX Item "-include file"
  Process \fIfile\fR as if \f(CW\*(C`#include "file"\*(C'\fR appeared as the first
  line of the primary source file.  However, the first directory searched
! for \fIfile\fR is the preprocessor\*(Aqs working directory \fIinstead of\fR
  the directory containing the main source file.  If not found there, it
  is searched for in the remainder of the \f(CW\*(C`#include "..."\*(C'\fR search
  chain as normal.
*************** processing its declarations.
*** 17907,17930 ****
  .Sp
  All files specified by \fB\-imacros\fR are processed before all files
  specified by \fB\-include\fR.
! .IP "\fB\-undef\fR" 4
  .IX Item "-undef"
! Do not predefine any system-specific or GCC-specific macros.  The
  standard predefined macros remain defined.
! .IP "\fB\-pthread\fR" 4
  .IX Item "-pthread"
! Define additional macros required for using the \s-1POSIX\s0 threads library.
  You should use this option consistently for both compilation and linking.
  This option is supported on GNU/Linux targets, most other Unix derivatives,
  and also on x86 Cygwin and MinGW targets.
! .IP "\fB\-M\fR" 4
  .IX Item "-M"
  Instead of outputting the result of preprocessing, output a rule
  suitable for \fBmake\fR describing the dependencies of the main
  source file.  The preprocessor outputs one \fBmake\fR rule containing
  the object file name for that source file, a colon, and the names of all
  the included files, including those coming from \fB\-include\fR or
! \&\fB\-imacros\fR command-line options.
  .Sp
  Unless specified explicitly (with \fB\-MT\fR or \fB\-MQ\fR), the
  object file name consists of the name of the source file with any
--- 17842,17865 ----
  .Sp
  All files specified by \fB\-imacros\fR are processed before all files
  specified by \fB\-include\fR.
! .IP \fB\-undef\fR 4
  .IX Item "-undef"
! Do not predefine any system\-specific or GCC\-specific macros.  The
  standard predefined macros remain defined.
! .IP \fB\-pthread\fR 4
  .IX Item "-pthread"
! Define additional macros required for using the POSIX threads library.
  You should use this option consistently for both compilation and linking.
  This option is supported on GNU/Linux targets, most other Unix derivatives,
  and also on x86 Cygwin and MinGW targets.
! .IP \fB\-M\fR 4
  .IX Item "-M"
  Instead of outputting the result of preprocessing, output a rule
  suitable for \fBmake\fR describing the dependencies of the main
  source file.  The preprocessor outputs one \fBmake\fR rule containing
  the object file name for that source file, a colon, and the names of all
  the included files, including those coming from \fB\-include\fR or
! \&\fB\-imacros\fR command\-line options.
  .Sp
  Unless specified explicitly (with \fB\-MT\fR or \fB\-MQ\fR), the
  object file name consists of the name of the source file with any
*************** parts removed.  If there are many includ
*** 17933,17948 ****
  split into several lines using \fB\e\fR\-newline.  The rule has no
  commands.
  .Sp
! This option does not suppress the preprocessor's debug output, such as
  \&\fB\-dM\fR.  To avoid mixing such debug output with the dependency
  rules you should explicitly specify the dependency output file with
  \&\fB\-MF\fR, or use an environment variable like
! \&\fB\s-1DEPENDENCIES_OUTPUT\s0\fR.  Debug output
  is still sent to the regular output stream as normal.
  .Sp
  Passing \fB\-M\fR to the driver implies \fB\-E\fR, and suppresses
  warnings with an implicit \fB\-w\fR.
! .IP "\fB\-MM\fR" 4
  .IX Item "-MM"
  Like \fB\-M\fR but do not mention header files that are found in
  system header directories, nor header files that are included,
--- 17868,17883 ----
  split into several lines using \fB\e\fR\-newline.  The rule has no
  commands.
  .Sp
! This option does not suppress the preprocessor\*(Aqs debug output, such as
  \&\fB\-dM\fR.  To avoid mixing such debug output with the dependency
  rules you should explicitly specify the dependency output file with
  \&\fB\-MF\fR, or use an environment variable like
! \&\fBDEPENDENCIES_OUTPUT\fR.  Debug output
  is still sent to the regular output stream as normal.
  .Sp
  Passing \fB\-M\fR to the driver implies \fB\-E\fR, and suppresses
  warnings with an implicit \fB\-w\fR.
! .IP \fB\-MM\fR 4
  .IX Item "-MM"
  Like \fB\-M\fR but do not mention header files that are found in
  system header directories, nor header files that are included,
*************** When used with the driver options \fB\-M
*** 17962,17968 ****
  \&\fB\-MF\fR overrides the default dependency output file.
  .Sp
  If \fIfile\fR is \fI\-\fR, then the dependencies are written to \fIstdout\fR.
! .IP "\fB\-MG\fR" 4
  .IX Item "-MG"
  In conjunction with an option such as \fB\-M\fR requesting
  dependency generation, \fB\-MG\fR assumes missing header files are
--- 17897,17903 ----
  \&\fB\-MF\fR overrides the default dependency output file.
  .Sp
  If \fIfile\fR is \fI\-\fR, then the dependencies are written to \fIstdout\fR.
! .IP \fB\-MG\fR 4
  .IX Item "-MG"
  In conjunction with an option such as \fB\-M\fR requesting
  dependency generation, \fB\-MG\fR assumes missing header files are
*************** also suppresses preprocessed output, as
*** 17973,17984 ****
  this useless.
  .Sp
  This feature is used in automatic updating of makefiles.
! .IP "\fB\-Mno\-modules\fR" 4
  .IX Item "-Mno-modules"
  Disable dependency generation for compiled module interfaces.
! .IP "\fB\-MP\fR" 4
  .IX Item "-MP"
! This option instructs \s-1CPP\s0 to add a phony target for each dependency
  other than the main file, causing each to depend on nothing.  These
  dummy rules work around errors \fBmake\fR gives if you remove header
  files without updating the \fIMakefile\fR to match.
--- 17908,17919 ----
  this useless.
  .Sp
  This feature is used in automatic updating of makefiles.
! .IP \fB\-Mno\-modules\fR 4
  .IX Item "-Mno-modules"
  Disable dependency generation for compiled module interfaces.
! .IP \fB\-MP\fR 4
  .IX Item "-MP"
! This option instructs CPP to add a phony target for each dependency
  other than the main file, causing each to depend on nothing.  These
  dummy rules work around errors \fBmake\fR gives if you remove header
  files without updating the \fIMakefile\fR to match.
*************** This is typical output:
*** 17993,18007 ****
  .IP "\fB\-MT\fR \fItarget\fR" 4
  .IX Item "-MT target"
  Change the target of the rule emitted by dependency generation.  By
! default \s-1CPP\s0 takes the name of the main input file, deletes any
  directory components and any file suffix such as \fB.c\fR, and
! appends the platform's usual object suffix.  The result is the target.
  .Sp
  An \fB\-MT\fR option sets the target to be exactly the string you
  specify.  If you want multiple targets, you can specify them as a single
  argument to \fB\-MT\fR, or use multiple \fB\-MT\fR options.
  .Sp
! For example, \fB\-MT\ '$(objpfx)foo.o'\fR might give
  .Sp
  .Vb 1
  \&        $(objpfx)foo.o: foo.c
--- 17928,17942 ----
  .IP "\fB\-MT\fR \fItarget\fR" 4
  .IX Item "-MT target"
  Change the target of the rule emitted by dependency generation.  By
! default CPP takes the name of the main input file, deletes any
  directory components and any file suffix such as \fB.c\fR, and
! appends the platform\*(Aqs usual object suffix.  The result is the target.
  .Sp
  An \fB\-MT\fR option sets the target to be exactly the string you
  specify.  If you want multiple targets, you can specify them as a single
  argument to \fB\-MT\fR, or use multiple \fB\-MT\fR options.
  .Sp
! For example, \fB\-MT\ \*(Aq$(objpfx)foo.o\*(Aq\fR might give
  .Sp
  .Vb 1
  \&        $(objpfx)foo.o: foo.c
*************** For example, \fB\-MT\ '$(objpfx)foo.o'\f
*** 18009,18015 ****
  .IP "\fB\-MQ\fR \fItarget\fR" 4
  .IX Item "-MQ target"
  Same as \fB\-MT\fR, but it quotes any characters which are special to
! Make.  \fB\-MQ\ '$(objpfx)foo.o'\fR gives
  .Sp
  .Vb 1
  \&        $$(objpfx)foo.o: foo.c
--- 17944,17950 ----
  .IP "\fB\-MQ\fR \fItarget\fR" 4
  .IX Item "-MQ target"
  Same as \fB\-MT\fR, but it quotes any characters which are special to
! Make.  \fB\-MQ\ \*(Aq$(objpfx)foo.o\*(Aq\fR gives
  .Sp
  .Vb 1
  \&        $$(objpfx)foo.o: foo.c
*************** Make.  \fB\-MQ\ '$(objpfx)foo.o'\fR give
*** 18017,18023 ****
  .Sp
  The default target is automatically quoted, as if it were given with
  \&\fB\-MQ\fR.
! .IP "\fB\-MD\fR" 4
  .IX Item "-MD"
  \&\fB\-MD\fR is equivalent to \fB\-M \-MF\fR \fIfile\fR, except that
  \&\fB\-E\fR is not implied.  The driver determines \fIfile\fR based on
--- 17952,17958 ----
  .Sp
  The default target is automatically quoted, as if it were given with
  \&\fB\-MQ\fR.
! .IP \fB\-MD\fR 4
  .IX Item "-MD"
  \&\fB\-MD\fR is equivalent to \fB\-M \-MF\fR \fIfile\fR, except that
  \&\fB\-E\fR is not implied.  The driver determines \fIfile\fR based on
*************** is understood to specify a target object
*** 18032,18042 ****
  .Sp
  Since \fB\-E\fR is not implied, \fB\-MD\fR can be used to generate
  a dependency output file as a side effect of the compilation process.
! .IP "\fB\-MMD\fR" 4
  .IX Item "-MMD"
  Like \fB\-MD\fR except mention only user header files, not system
  header files.
! .IP "\fB\-fpreprocessed\fR" 4
  .IX Item "-fpreprocessed"
  Indicate to the preprocessor that the input file has already been
  preprocessed.  This suppresses things like macro expansion, trigraph
--- 17967,17977 ----
  .Sp
  Since \fB\-E\fR is not implied, \fB\-MD\fR can be used to generate
  a dependency output file as a side effect of the compilation process.
! .IP \fB\-MMD\fR 4
  .IX Item "-MMD"
  Like \fB\-MD\fR except mention only user header files, not system
  header files.
! .IP \fB\-fpreprocessed\fR 4
  .IX Item "-fpreprocessed"
  Indicate to the preprocessor that the input file has already been
  preprocessed.  This suppresses things like macro expansion, trigraph
*************** a tokenizer for the front ends.
*** 18048,18060 ****
  .Sp
  \&\fB\-fpreprocessed\fR is implicit if the input file has one of the
  extensions \fB.i\fR, \fB.ii\fR or \fB.mi\fR.  These are the
! extensions that \s-1GCC\s0 uses for preprocessed files created by
  \&\fB\-save\-temps\fR.
! .IP "\fB\-fdirectives\-only\fR" 4
  .IX Item "-fdirectives-only"
  When preprocessing, handle directives, but do not expand macros.
  .Sp
! The option's behavior depends on the \fB\-E\fR and \fB\-fpreprocessed\fR
  options.
  .Sp
  With \fB\-E\fR, preprocessing is limited to the handling of directives
--- 17983,17995 ----
  .Sp
  \&\fB\-fpreprocessed\fR is implicit if the input file has one of the
  extensions \fB.i\fR, \fB.ii\fR or \fB.mi\fR.  These are the
! extensions that GCC uses for preprocessed files created by
  \&\fB\-save\-temps\fR.
! .IP \fB\-fdirectives\-only\fR 4
  .IX Item "-fdirectives-only"
  When preprocessing, handle directives, but do not expand macros.
  .Sp
! The option\*(Aqs behavior depends on the \fB\-E\fR and \fB\-fpreprocessed\fR
  options.
  .Sp
  With \fB\-E\fR, preprocessing is limited to the handling of directives
*************** files previously preprocessed with \f(CW
*** 18071,18094 ****
  With both \fB\-E\fR and \fB\-fpreprocessed\fR, the rules for
  \&\fB\-fpreprocessed\fR take precedence.  This enables full preprocessing of
  files previously preprocessed with \f(CW\*(C`\-E \-fdirectives\-only\*(C'\fR.
! .IP "\fB\-fdollars\-in\-identifiers\fR" 4
  .IX Item "-fdollars-in-identifiers"
  Accept \fB$\fR in identifiers.
! .IP "\fB\-fextended\-identifiers\fR" 4
  .IX Item "-fextended-identifiers"
  Accept universal character names and extended characters in
  identifiers.  This option is enabled by default for C99 (and later C
! standard versions) and \*(C+.
! .IP "\fB\-fno\-canonical\-system\-headers\fR" 4
  .IX Item "-fno-canonical-system-headers"
  When preprocessing, do not shorten system header paths with canonicalization.
! .IP "\fB\-fmax\-include\-depth=\fR\fIdepth\fR" 4
  .IX Item "-fmax-include-depth=depth"
  Set the maximum depth of the nested #include. The default is 200.
! .IP "\fB\-fsearch\-include\-path\fR[\fB=\fR\fIkind\fR]" 4
  .IX Item "-fsearch-include-path[=kind]"
  Look for input files on the #include path, not just the current
! directory.  This is particularly useful with \*(C+20 modules, for which
  both header units and module interface units need to be compiled
  directly:
  .Sp
--- 18006,18029 ----
  With both \fB\-E\fR and \fB\-fpreprocessed\fR, the rules for
  \&\fB\-fpreprocessed\fR take precedence.  This enables full preprocessing of
  files previously preprocessed with \f(CW\*(C`\-E \-fdirectives\-only\*(C'\fR.
! .IP \fB\-fdollars\-in\-identifiers\fR 4
  .IX Item "-fdollars-in-identifiers"
  Accept \fB$\fR in identifiers.
! .IP \fB\-fextended\-identifiers\fR 4
  .IX Item "-fextended-identifiers"
  Accept universal character names and extended characters in
  identifiers.  This option is enabled by default for C99 (and later C
! standard versions) and C++.
! .IP \fB\-fno\-canonical\-system\-headers\fR 4
  .IX Item "-fno-canonical-system-headers"
  When preprocessing, do not shorten system header paths with canonicalization.
! .IP \fB\-fmax\-include\-depth=\fR\fIdepth\fR 4
  .IX Item "-fmax-include-depth=depth"
  Set the maximum depth of the nested #include. The default is 200.
! .IP \fB\-fsearch\-include\-path\fR[\fB=\fR\fIkind\fR] 4
  .IX Item "-fsearch-include-path[=kind]"
  Look for input files on the #include path, not just the current
! directory.  This is particularly useful with C++20 modules, for which
  both header units and module interface units need to be compiled
  directly:
  .Sp
*************** directly:
*** 18096,18111 ****
  \&        g++ \-c \-std=c++20 \-fmodules \-fsearch\-include\-path bits/stdc++.h bits/std.cc
  .Ve
  .Sp
! \&\fIkind\fR defaults to \fBuser\fR, which looks on the \f(CW\*(C`#include
! "..."\*(C'\fR search path; you can also explicitly specify \fBsystem\fR
  for the \f(CW\*(C`#include <...>\*(C'\fR search path.
! .IP "\fB\-ftabstop=\fR\fIwidth\fR" 4
  .IX Item "-ftabstop=width"
  Set the distance between tab stops.  This helps the preprocessor report
  correct column numbers in warnings or errors, even if tabs appear on the
  line.  If the value is less than 1 or greater than 100, the option is
  ignored.  The default is 8.
! .IP "\fB\-ftrack\-macro\-expansion\fR[\fB=\fR\fIlevel\fR]" 4
  .IX Item "-ftrack-macro-expansion[=level]"
  Track locations of tokens across macro expansions. This allows the
  compiler to emit diagnostic about the current macro expansion stack
--- 18031,18046 ----
  \&        g++ \-c \-std=c++20 \-fmodules \-fsearch\-include\-path bits/stdc++.h bits/std.cc
  .Ve
  .Sp
! \&\fIkind\fR defaults to \fBuser\fR, which looks on the \f(CW#include
! "..."\fR search path; you can also explicitly specify \fBsystem\fR
  for the \f(CW\*(C`#include <...>\*(C'\fR search path.
! .IP \fB\-ftabstop=\fR\fIwidth\fR 4
  .IX Item "-ftabstop=width"
  Set the distance between tab stops.  This helps the preprocessor report
  correct column numbers in warnings or errors, even if tabs appear on the
  line.  If the value is less than 1 or greater than 100, the option is
  ignored.  The default is 8.
! .IP \fB\-ftrack\-macro\-expansion\fR[\fB=\fR\fIlevel\fR] 4
  .IX Item "-ftrack-macro-expansion[=level]"
  Track locations of tokens across macro expansions. This allows the
  compiler to emit diagnostic about the current macro expansion stack
*************** when a compilation error occurs in a mac
*** 18113,18193 ****
  option makes the preprocessor and the compiler consume more
  memory. The \fIlevel\fR parameter can be used to choose the level of
  precision of token location tracking thus decreasing the memory
! consumption if necessary. Value \fB0\fR of \fIlevel\fR de-activates
  this option. Value \fB1\fR tracks tokens locations in a
  degraded mode for the sake of minimal memory overhead. In this mode
  all tokens resulting from the expansion of an argument of a
! function-like macro have the same location. Value \fB2\fR tracks
  tokens locations completely. This value is the most memory hungry.
  When this option is given no argument, the default parameter value is
  \&\fB2\fR.
  .Sp
  Note that \f(CW\*(C`\-ftrack\-macro\-expansion=2\*(C'\fR is activated by default.
! .IP "\fB\-fmacro\-prefix\-map=\fR\fIold\fR\fB=\fR\fInew\fR" 4
  .IX Item "-fmacro-prefix-map=old=new"
! When preprocessing files residing in directory \fI\fIold\fI\fR,
  expand the \f(CW\*(C`_\|_FILE_\|_\*(C'\fR and \f(CW\*(C`_\|_BASE_FILE_\|_\*(C'\fR macros as if the
! files resided in directory \fI\fInew\fI\fR instead.  This can be used
  to change an absolute path to a relative path by using \fI.\fR for
  \&\fInew\fR which can result in more reproducible builds that are
  location independent.  This option also affects
  \&\f(CW\*(C`_\|_builtin_FILE()\*(C'\fR during compilation.  See also
  \&\fB\-ffile\-prefix\-map\fR and \fB\-fcanon\-prefix\-map\fR.
! .IP "\fB\-fexec\-charset=\fR\fIcharset\fR" 4
  .IX Item "-fexec-charset=charset"
  Set the execution character set, used for string and character
! constants.  The default is \s-1UTF\-8.\s0  \fIcharset\fR can be any encoding
! supported by the system's \f(CW\*(C`iconv\*(C'\fR library routine.
! .IP "\fB\-fwide\-exec\-charset=\fR\fIcharset\fR" 4
  .IX Item "-fwide-exec-charset=charset"
  Set the wide execution character set, used for wide string and
! character constants.  The default is one of \s-1UTF\-32BE, UTF\-32LE, UTF\-16BE,\s0
! or \s-1UTF\-16LE,\s0 whichever corresponds to the width of \f(CW\*(C`wchar_t\*(C'\fR and the
! big-endian or little-endian byte order being used for code generation.  As
  with \fB\-fexec\-charset\fR, \fIcharset\fR can be any encoding supported
! by the system's \f(CW\*(C`iconv\*(C'\fR library routine; however, you will have
  problems with encodings that do not fit exactly in \f(CW\*(C`wchar_t\*(C'\fR.
! .IP "\fB\-finput\-charset=\fR\fIcharset\fR" 4
  .IX Item "-finput-charset=charset"
  Set the input character set, used for translation from the character
! set of the input file to the source character set used by \s-1GCC.\s0  If the
! locale does not specify, or \s-1GCC\s0 cannot get this information from the
! locale, the default is \s-1UTF\-8.\s0  This can be overridden by either the locale
! or this command-line option.  Currently the command-line option takes
! precedence if there's a conflict.  \fIcharset\fR can be any encoding
! supported by the system's \f(CW\*(C`iconv\*(C'\fR library routine.
! .IP "\fB\-fpch\-deps\fR" 4
  .IX Item "-fpch-deps"
  When using precompiled headers, this flag
! causes the dependency-output flags to also list the files from the
! precompiled header's dependencies.  If not specified, only the
  precompiled header are listed and not the files that were used to
  create it, because those files are not consulted when a precompiled
  header is used.
! .IP "\fB\-fpch\-preprocess\fR" 4
  .IX Item "-fpch-preprocess"
  This option allows use of a precompiled header together with \fB\-E\fR.  It inserts a special \f(CW\*(C`#pragma\*(C'\fR,
! \&\f(CW\*(C`#pragma GCC pch_preprocess "\f(CIfilename\f(CW"\*(C'\fR in the output to mark
  the place where the precompiled header was found, and its \fIfilename\fR.
! When \fB\-fpreprocessed\fR is in use, \s-1GCC\s0 recognizes this \f(CW\*(C`#pragma\*(C'\fR
! and loads the \s-1PCH.\s0
  .Sp
  This option is off by default, because the resulting preprocessed output
! is only really suitable as input to \s-1GCC.\s0  It is switched on by
  \&\fB\-save\-temps\fR.
  .Sp
  You should not write this \f(CW\*(C`#pragma\*(C'\fR in your own code, but it is
! safe to edit the filename if the \s-1PCH\s0 file is available in a different
! location.  The filename may be absolute or it may be relative to \s-1GCC\s0's
  current directory.
! .IP "\fB\-fworking\-directory\fR" 4
  .IX Item "-fworking-directory"
  Enable generation of linemarkers in the preprocessor output that
  let the compiler know the current working directory at the time of
  preprocessing.  When this option is enabled, the preprocessor
  emits, after the initial linemarker, a second linemarker with the
! current working directory followed by two slashes.  \s-1GCC\s0 uses this
! directory, when it's present in the preprocessed input, as the
  directory emitted as the current working directory in some debugging
  information formats.  This option is implicitly enabled if debugging
  information is enabled, but this can be inhibited with the negated
--- 18048,18128 ----
  option makes the preprocessor and the compiler consume more
  memory. The \fIlevel\fR parameter can be used to choose the level of
  precision of token location tracking thus decreasing the memory
! consumption if necessary. Value \fB0\fR of \fIlevel\fR de\-activates
  this option. Value \fB1\fR tracks tokens locations in a
  degraded mode for the sake of minimal memory overhead. In this mode
  all tokens resulting from the expansion of an argument of a
! function\-like macro have the same location. Value \fB2\fR tracks
  tokens locations completely. This value is the most memory hungry.
  When this option is given no argument, the default parameter value is
  \&\fB2\fR.
  .Sp
  Note that \f(CW\*(C`\-ftrack\-macro\-expansion=2\*(C'\fR is activated by default.
! .IP \fB\-fmacro\-prefix\-map=\fR\fIold\fR\fB=\fR\fInew\fR 4
  .IX Item "-fmacro-prefix-map=old=new"
! When preprocessing files residing in directory \fIold\fR,
  expand the \f(CW\*(C`_\|_FILE_\|_\*(C'\fR and \f(CW\*(C`_\|_BASE_FILE_\|_\*(C'\fR macros as if the
! files resided in directory \fInew\fR instead.  This can be used
  to change an absolute path to a relative path by using \fI.\fR for
  \&\fInew\fR which can result in more reproducible builds that are
  location independent.  This option also affects
  \&\f(CW\*(C`_\|_builtin_FILE()\*(C'\fR during compilation.  See also
  \&\fB\-ffile\-prefix\-map\fR and \fB\-fcanon\-prefix\-map\fR.
! .IP \fB\-fexec\-charset=\fR\fIcharset\fR 4
  .IX Item "-fexec-charset=charset"
  Set the execution character set, used for string and character
! constants.  The default is UTF\-8.  \fIcharset\fR can be any encoding
! supported by the system\*(Aqs \f(CW\*(C`iconv\*(C'\fR library routine.
! .IP \fB\-fwide\-exec\-charset=\fR\fIcharset\fR 4
  .IX Item "-fwide-exec-charset=charset"
  Set the wide execution character set, used for wide string and
! character constants.  The default is one of UTF\-32BE, UTF\-32LE, UTF\-16BE,
! or UTF\-16LE, whichever corresponds to the width of \f(CW\*(C`wchar_t\*(C'\fR and the
! big\-endian or little\-endian byte order being used for code generation.  As
  with \fB\-fexec\-charset\fR, \fIcharset\fR can be any encoding supported
! by the system\*(Aqs \f(CW\*(C`iconv\*(C'\fR library routine; however, you will have
  problems with encodings that do not fit exactly in \f(CW\*(C`wchar_t\*(C'\fR.
! .IP \fB\-finput\-charset=\fR\fIcharset\fR 4
  .IX Item "-finput-charset=charset"
  Set the input character set, used for translation from the character
! set of the input file to the source character set used by GCC.  If the
! locale does not specify, or GCC cannot get this information from the
! locale, the default is UTF\-8.  This can be overridden by either the locale
! or this command\-line option.  Currently the command\-line option takes
! precedence if there\*(Aqs a conflict.  \fIcharset\fR can be any encoding
! supported by the system\*(Aqs \f(CW\*(C`iconv\*(C'\fR library routine.
! .IP \fB\-fpch\-deps\fR 4
  .IX Item "-fpch-deps"
  When using precompiled headers, this flag
! causes the dependency\-output flags to also list the files from the
! precompiled header\*(Aqs dependencies.  If not specified, only the
  precompiled header are listed and not the files that were used to
  create it, because those files are not consulted when a precompiled
  header is used.
! .IP \fB\-fpch\-preprocess\fR 4
  .IX Item "-fpch-preprocess"
  This option allows use of a precompiled header together with \fB\-E\fR.  It inserts a special \f(CW\*(C`#pragma\*(C'\fR,
! \&\f(CW\*(C`#pragma GCC pch_preprocess "\fR\f(CIfilename\fR\f(CW"\*(C'\fR in the output to mark
  the place where the precompiled header was found, and its \fIfilename\fR.
! When \fB\-fpreprocessed\fR is in use, GCC recognizes this \f(CW\*(C`#pragma\*(C'\fR
! and loads the PCH.
  .Sp
  This option is off by default, because the resulting preprocessed output
! is only really suitable as input to GCC.  It is switched on by
  \&\fB\-save\-temps\fR.
  .Sp
  You should not write this \f(CW\*(C`#pragma\*(C'\fR in your own code, but it is
! safe to edit the filename if the PCH file is available in a different
! location.  The filename may be absolute or it may be relative to GCC\*(Aqs
  current directory.
! .IP \fB\-fworking\-directory\fR 4
  .IX Item "-fworking-directory"
  Enable generation of linemarkers in the preprocessor output that
  let the compiler know the current working directory at the time of
  preprocessing.  When this option is enabled, the preprocessor
  emits, after the initial linemarker, a second linemarker with the
! current working directory followed by two slashes.  GCC uses this
! directory, when it\*(Aqs present in the preprocessed input, as the
  directory emitted as the current working directory in some debugging
  information formats.  This option is implicitly enabled if debugging
  information is enabled, but this can be inhibited with the negated
*************** it does not use shell special characters
*** 18204,18210 ****
  .IX Item "-A -predicate=answer"
  Cancel an assertion with the predicate \fIpredicate\fR and answer
  \&\fIanswer\fR.
! .IP "\fB\-C\fR" 4
  .IX Item "-C"
  Do not discard comments.  All comments are passed through to the output
  file, except for comments in processed directives, which are deleted
--- 18139,18145 ----
  .IX Item "-A -predicate=answer"
  Cancel an assertion with the predicate \fIpredicate\fR and answer
  \&\fIanswer\fR.
! .IP \fB\-C\fR 4
  .IX Item "-C"
  Do not discard comments.  All comments are passed through to the output
  file, except for comments in processed directives, which are deleted
*************** causes the preprocessor to treat comment
*** 18215,18258 ****
  For example, comments appearing at the start of what would be a
  directive line have the effect of turning that line into an ordinary
  source line, since the first token on the line is no longer a \fB#\fR.
! .IP "\fB\-CC\fR" 4
  .IX Item "-CC"
  Do not discard comments, including during macro expansion.  This is
  like \fB\-C\fR, except that comments contained within macros are
  also passed through to the output file where the macro is expanded.
  .Sp
  In addition to the side effects of the \fB\-C\fR option, the
! \&\fB\-CC\fR option causes all \*(C+\-style comments inside a macro
  to be converted to C\-style comments.  This is to prevent later use
  of that macro from inadvertently commenting out the remainder of
  the source line.
  .Sp
  The \fB\-CC\fR option is generally used to support lint comments.
! .IP "\fB\-P\fR" 4
  .IX Item "-P"
  Inhibit generation of linemarkers in the output from the preprocessor.
  This might be useful when running the preprocessor on something that is
  not C code, and will be sent to a program which might be confused by the
  linemarkers.
! .IP "\fB\-traditional\fR" 4
  .IX Item "-traditional"
  .PD 0
! .IP "\fB\-traditional\-cpp\fR" 4
  .IX Item "-traditional-cpp"
  .PD
! Try to imitate the behavior of pre-standard C preprocessors, as
! opposed to \s-1ISO C\s0 preprocessors.
! See the \s-1GNU CPP\s0 manual for details.
  .Sp
! Note that \s-1GCC\s0 does not otherwise attempt to emulate a pre-standard 
  C compiler, and these options are only supported with the \fB\-E\fR 
! switch, or when invoking \s-1CPP\s0 explicitly.
! .IP "\fB\-trigraphs\fR" 4
  .IX Item "-trigraphs"
! Support \s-1ISO C\s0 trigraphs.
! These are three-character sequences, all starting with \fB??\fR, that
! are defined by \s-1ISO C\s0 to stand for single characters.  For example,
! \&\fB??/\fR stands for \fB\e\fR, so \fB'??/n'\fR is a character
  constant for a newline.
  .Sp
  The nine trigraphs and their replacements are
--- 18150,18193 ----
  For example, comments appearing at the start of what would be a
  directive line have the effect of turning that line into an ordinary
  source line, since the first token on the line is no longer a \fB#\fR.
! .IP \fB\-CC\fR 4
  .IX Item "-CC"
  Do not discard comments, including during macro expansion.  This is
  like \fB\-C\fR, except that comments contained within macros are
  also passed through to the output file where the macro is expanded.
  .Sp
  In addition to the side effects of the \fB\-C\fR option, the
! \&\fB\-CC\fR option causes all C++\-style comments inside a macro
  to be converted to C\-style comments.  This is to prevent later use
  of that macro from inadvertently commenting out the remainder of
  the source line.
  .Sp
  The \fB\-CC\fR option is generally used to support lint comments.
! .IP \fB\-P\fR 4
  .IX Item "-P"
  Inhibit generation of linemarkers in the output from the preprocessor.
  This might be useful when running the preprocessor on something that is
  not C code, and will be sent to a program which might be confused by the
  linemarkers.
! .IP \fB\-traditional\fR 4
  .IX Item "-traditional"
  .PD 0
! .IP \fB\-traditional\-cpp\fR 4
  .IX Item "-traditional-cpp"
  .PD
! Try to imitate the behavior of pre\-standard C preprocessors, as
! opposed to ISO C preprocessors.
! See the GNU CPP manual for details.
  .Sp
! Note that GCC does not otherwise attempt to emulate a pre\-standard 
  C compiler, and these options are only supported with the \fB\-E\fR 
! switch, or when invoking CPP explicitly.
! .IP \fB\-trigraphs\fR 4
  .IX Item "-trigraphs"
! Support ISO C trigraphs.
! These are three\-character sequences, all starting with \fB??\fR, that
! are defined by ISO C to stand for single characters.  For example,
! \&\fB??/\fR stands for \fB\e\fR, so \fB\*(Aq??/n\*(Aq\fR is a character
  constant for a newline.
  .Sp
  The nine trigraphs and their replacements are
*************** The nine trigraphs and their replacement
*** 18262,18291 ****
  \&        Replacement:      [    ]    {    }    #    \e    ^    |    ~
  .Ve
  .Sp
! By default, \s-1GCC\s0 ignores trigraphs, but in
! standard-conforming modes it converts them.  See the \fB\-std\fR and
  \&\fB\-ansi\fR options.
! .IP "\fB\-remap\fR" 4
  .IX Item "-remap"
  Enable special code to work around file systems which only permit very
! short file names, such as MS-DOS.
! .IP "\fB\-H\fR" 4
  .IX Item "-H"
  Print the name of each header file used, in addition to other normal
  activities.  Each name is indented to show how deep in the
  \&\fB#include\fR stack it is.  Precompiled header files are also
  printed, even if they are found to be invalid; an invalid precompiled
  header file is printed with \fB...x\fR and a valid one with \fB...!\fR .
! .IP "\fB\-d\fR\fIletters\fR" 4
  .IX Item "-dletters"
  Says to make debugging dumps during compilation as specified by
  \&\fIletters\fR.  The flags documented here are those relevant to the
  preprocessor.  Other \fIletters\fR are interpreted
! by the compiler proper, or reserved for future versions of \s-1GCC,\s0 and so
  are silently ignored.  If you specify \fIletters\fR whose behavior
  conflicts, the result is undefined.
  .RS 4
! .IP "\fB\-dM\fR" 4
  .IX Item "-dM"
  Instead of the normal output, generate a list of \fB#define\fR
  directives for all the macros defined during the execution of the
--- 18197,18226 ----
  \&        Replacement:      [    ]    {    }    #    \e    ^    |    ~
  .Ve
  .Sp
! By default, GCC ignores trigraphs, but in
! standard\-conforming modes it converts them.  See the \fB\-std\fR and
  \&\fB\-ansi\fR options.
! .IP \fB\-remap\fR 4
  .IX Item "-remap"
  Enable special code to work around file systems which only permit very
! short file names, such as MS\-DOS.
! .IP \fB\-H\fR 4
  .IX Item "-H"
  Print the name of each header file used, in addition to other normal
  activities.  Each name is indented to show how deep in the
  \&\fB#include\fR stack it is.  Precompiled header files are also
  printed, even if they are found to be invalid; an invalid precompiled
  header file is printed with \fB...x\fR and a valid one with \fB...!\fR .
! .IP \fB\-d\fR\fIletters\fR 4
  .IX Item "-dletters"
  Says to make debugging dumps during compilation as specified by
  \&\fIletters\fR.  The flags documented here are those relevant to the
  preprocessor.  Other \fIletters\fR are interpreted
! by the compiler proper, or reserved for future versions of GCC, and so
  are silently ignored.  If you specify \fIletters\fR whose behavior
  conflicts, the result is undefined.
  .RS 4
! .IP \fB\-dM\fR 4
  .IX Item "-dM"
  Instead of the normal output, generate a list of \fB#define\fR
  directives for all the macros defined during the execution of the
*************** shows all the predefined macros.
*** 18301,18319 ****
  .Sp
  If you use \fB\-dM\fR without the \fB\-E\fR option, \fB\-dM\fR is
  interpreted as a synonym for \fB\-fdump\-rtl\-mach\fR.
! .IP "\fB\-dD\fR" 4
  .IX Item "-dD"
  Like \fB\-dM\fR except that it outputs \fIboth\fR the \fB#define\fR
  directives and the result of preprocessing.  Both kinds of output go to
  the standard output file.
! .IP "\fB\-dN\fR" 4
  .IX Item "-dN"
  Like \fB\-dD\fR, but emit only the macro names, not their expansions.
! .IP "\fB\-dI\fR" 4
  .IX Item "-dI"
  Output \fB#include\fR directives in addition to the result of
  preprocessing.
! .IP "\fB\-dU\fR" 4
  .IX Item "-dU"
  Like \fB\-dD\fR except that only macros that are expanded, or whose
  definedness is tested in preprocessor directives, are output; the
--- 18236,18254 ----
  .Sp
  If you use \fB\-dM\fR without the \fB\-E\fR option, \fB\-dM\fR is
  interpreted as a synonym for \fB\-fdump\-rtl\-mach\fR.
! .IP \fB\-dD\fR 4
  .IX Item "-dD"
  Like \fB\-dM\fR except that it outputs \fIboth\fR the \fB#define\fR
  directives and the result of preprocessing.  Both kinds of output go to
  the standard output file.
! .IP \fB\-dN\fR 4
  .IX Item "-dN"
  Like \fB\-dD\fR, but emit only the macro names, not their expansions.
! .IP \fB\-dI\fR 4
  .IX Item "-dI"
  Output \fB#include\fR directives in addition to the result of
  preprocessing.
! .IP \fB\-dU\fR 4
  .IX Item "-dU"
  Like \fB\-dD\fR except that only macros that are expanded, or whose
  definedness is tested in preprocessor directives, are output; the
*************** undefined at the time.
*** 18323,18363 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-fdebug\-cpp\fR" 4
  .IX Item "-fdebug-cpp"
! This option is only useful for debugging \s-1GCC.\s0  When used from \s-1CPP\s0 or with
  \&\fB\-E\fR, it dumps debugging information about location maps.  Every
  token in the output is preceded by the dump of the map its location
  belongs to.
  .Sp
! When used from \s-1GCC\s0 without \fB\-E\fR, this option has no effect.
! .IP "\fB\-Wp,\fR\fIoption\fR" 4
  .IX Item "-Wp,option"
  You can use \fB\-Wp,\fR\fIoption\fR to bypass the compiler driver
  and pass \fIoption\fR directly through to the preprocessor.  If
  \&\fIoption\fR contains commas, it is split into multiple options at the
  commas.  However, many options are modified, translated or interpreted
  by the compiler driver before being passed to the preprocessor, and
! \&\fB\-Wp\fR forcibly bypasses this phase.  The preprocessor's direct
  interface is undocumented and subject to change, so whenever possible
  you should avoid using \fB\-Wp\fR and let the driver handle the
  options instead.
  .IP "\fB\-Xpreprocessor\fR \fIoption\fR" 4
  .IX Item "-Xpreprocessor option"
  Pass \fIoption\fR as an option to the preprocessor.  You can use this to
! supply system-specific preprocessor options that \s-1GCC\s0 does not
  recognize.
  .Sp
  If you want to pass an option that takes an argument, you must use
  \&\fB\-Xpreprocessor\fR twice, once for the option and once for the argument.
! .IP "\fB\-no\-integrated\-cpp\fR" 4
  .IX Item "-no-integrated-cpp"
  Perform preprocessing as a separate pass before compilation.
! By default, \s-1GCC\s0 performs preprocessing as an integrated part of
  input tokenization and parsing.
  If this option is provided, the appropriate language front end
! (\fBcc1\fR, \fBcc1plus\fR, or \fBcc1obj\fR for C, \*(C+,
! and Objective-C, respectively) is instead invoked twice,
  once for preprocessing only and once for actual compilation
  of the preprocessed input.
  This option may be useful in conjunction with the \fB\-B\fR or
--- 18258,18298 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-fdebug\-cpp\fR 4
  .IX Item "-fdebug-cpp"
! This option is only useful for debugging GCC.  When used from CPP or with
  \&\fB\-E\fR, it dumps debugging information about location maps.  Every
  token in the output is preceded by the dump of the map its location
  belongs to.
  .Sp
! When used from GCC without \fB\-E\fR, this option has no effect.
! .IP \fB\-Wp,\fR\fIoption\fR 4
  .IX Item "-Wp,option"
  You can use \fB\-Wp,\fR\fIoption\fR to bypass the compiler driver
  and pass \fIoption\fR directly through to the preprocessor.  If
  \&\fIoption\fR contains commas, it is split into multiple options at the
  commas.  However, many options are modified, translated or interpreted
  by the compiler driver before being passed to the preprocessor, and
! \&\fB\-Wp\fR forcibly bypasses this phase.  The preprocessor\*(Aqs direct
  interface is undocumented and subject to change, so whenever possible
  you should avoid using \fB\-Wp\fR and let the driver handle the
  options instead.
  .IP "\fB\-Xpreprocessor\fR \fIoption\fR" 4
  .IX Item "-Xpreprocessor option"
  Pass \fIoption\fR as an option to the preprocessor.  You can use this to
! supply system\-specific preprocessor options that GCC does not
  recognize.
  .Sp
  If you want to pass an option that takes an argument, you must use
  \&\fB\-Xpreprocessor\fR twice, once for the option and once for the argument.
! .IP \fB\-no\-integrated\-cpp\fR 4
  .IX Item "-no-integrated-cpp"
  Perform preprocessing as a separate pass before compilation.
! By default, GCC performs preprocessing as an integrated part of
  input tokenization and parsing.
  If this option is provided, the appropriate language front end
! (\fBcc1\fR, \fBcc1plus\fR, or \fBcc1obj\fR for C, C++,
! and Objective\-C, respectively) is instead invoked twice,
  once for preprocessing only and once for actual compilation
  of the preprocessed input.
  This option may be useful in conjunction with the \fB\-B\fR or
*************** normal preprocessing and compilation.
*** 18367,18380 ****
  .SS "Passing Options to the Assembler"
  .IX Subsection "Passing Options to the Assembler"
  You can pass options to the assembler.
! .IP "\fB\-Wa,\fR\fIoption\fR" 4
  .IX Item "-Wa,option"
  Pass \fIoption\fR as an option to the assembler.  If \fIoption\fR
  contains commas, it is split into multiple options at the commas.
  .IP "\fB\-Xassembler\fR \fIoption\fR" 4
  .IX Item "-Xassembler option"
  Pass \fIoption\fR as an option to the assembler.  You can use this to
! supply system-specific assembler options that \s-1GCC\s0 does not
  recognize.
  .Sp
  If you want to pass an option that takes an argument, you must use
--- 18302,18315 ----
  .SS "Passing Options to the Assembler"
  .IX Subsection "Passing Options to the Assembler"
  You can pass options to the assembler.
! .IP \fB\-Wa,\fR\fIoption\fR 4
  .IX Item "-Wa,option"
  Pass \fIoption\fR as an option to the assembler.  If \fIoption\fR
  contains commas, it is split into multiple options at the commas.
  .IP "\fB\-Xassembler\fR \fIoption\fR" 4
  .IX Item "-Xassembler option"
  Pass \fIoption\fR as an option to the assembler.  You can use this to
! supply system\-specific assembler options that GCC does not
  recognize.
  .Sp
  If you want to pass an option that takes an argument, you must use
*************** If you want to pass an option that takes
*** 18384,18412 ****
  These options come into play when the compiler links object files into
  an executable output file.  They are meaningless if the compiler is
  not doing a link step.
! .IP "\fIobject-file-name\fR" 4
  .IX Item "object-file-name"
  A file name that does not end in a special recognized suffix is
  considered to name an object file or library.  (Object files are
  distinguished from libraries by the linker according to the file
  contents.)  If linking is done, these object files are used as input
  to the linker.
! .IP "\fB\-c\fR" 4
  .IX Item "-c"
  .PD 0
! .IP "\fB\-S\fR" 4
  .IX Item "-S"
! .IP "\fB\-E\fR" 4
  .IX Item "-E"
  .PD
  If any of these options is used, then the linker is not run, and
  object file names should not be used as arguments.
! .IP "\fB\-flinker\-output=\fR\fItype\fR" 4
  .IX Item "-flinker-output=type"
! This option controls code generation of the link-time optimizer.  By
  default the linker output is automatically determined by the linker
  plugin.  For debugging the compiler and if incremental linking with a
! non-LTO object file is desired, it may be useful to control the type
  manually.
  .Sp
  If \fItype\fR is \fBexec\fR, code generation produces a static
--- 18319,18347 ----
  These options come into play when the compiler links object files into
  an executable output file.  They are meaningless if the compiler is
  not doing a link step.
! .IP \fIobject\-file\-name\fR 4
  .IX Item "object-file-name"
  A file name that does not end in a special recognized suffix is
  considered to name an object file or library.  (Object files are
  distinguished from libraries by the linker according to the file
  contents.)  If linking is done, these object files are used as input
  to the linker.
! .IP \fB\-c\fR 4
  .IX Item "-c"
  .PD 0
! .IP \fB\-S\fR 4
  .IX Item "-S"
! .IP \fB\-E\fR 4
  .IX Item "-E"
  .PD
  If any of these options is used, then the linker is not run, and
  object file names should not be used as arguments.
! .IP \fB\-flinker\-output=\fR\fItype\fR 4
  .IX Item "-flinker-output=type"
! This option controls code generation of the link\-time optimizer.  By
  default the linker output is automatically determined by the linker
  plugin.  For debugging the compiler and if incremental linking with a
! non\-LTO object file is desired, it may be useful to control the type
  manually.
  .Sp
  If \fItype\fR is \fBexec\fR, code generation produces a static
*************** disabled.
*** 18416,18422 ****
  If \fItype\fR is \fBdyn\fR, code generation produces a shared
  library.  In this case \fB\-fpic\fR or \fB\-fPIC\fR is preserved,
  but not enabled automatically.  This allows to build shared libraries
! without position-independent code on architectures where this is
  possible, i.e. on x86.
  .Sp
  If \fItype\fR is \fBpie\fR, code generation produces an \fB\-fpie\fR
--- 18351,18357 ----
  If \fItype\fR is \fBdyn\fR, code generation produces a shared
  library.  In this case \fB\-fpic\fR or \fB\-fPIC\fR is preserved,
  but not enabled automatically.  This allows to build shared libraries
! without position\-independent code on architectures where this is
  possible, i.e. on x86.
  .Sp
  If \fItype\fR is \fBpie\fR, code generation produces an \fB\-fpie\fR
*************** except that \fB\-fpie\fR is not disabled
*** 18425,18466 ****
  time.
  .Sp
  If \fItype\fR is \fBrel\fR, the compiler assumes that incremental linking is
! done.  The sections containing intermediate code for link-time optimization are
! merged, pre-optimized, and output to the resulting object file. In addition, if
  \&\fB\-ffat\-lto\-objects\fR is specified, binary code is produced for future
! non-LTO linking. The object file produced by incremental linking is smaller
  than a static library produced from the same object files.  At link time the
  result of incremental linking also loads faster than a static
  library assuming that the majority of objects in the library are used.
  .Sp
! Finally \fBnolto-rel\fR configures the compiler for incremental linking where
  code generation is forced, a final binary is produced, and the intermediate
! code for later link-time optimization is stripped. When multiple object files
  are linked together the resulting code is better optimized than with
! link-time optimizations disabled (for example, cross-module inlining
  happens), but most of benefits of whole program optimizations are lost.
  .Sp
  During the incremental link (by \fB\-r\fR) the linker plugin defaults to
! \&\fBrel\fR. With current interfaces to \s-1GNU\s0 Binutils it is however not
! possible to incrementally link \s-1LTO\s0 objects and non-LTO objects into a single
  mixed object file.  If any of object files in incremental link cannot
! be used for link-time optimization, the linker plugin issues a warning and
! uses \fBnolto-rel\fR. To maintain whole program optimization, it is
  recommended to link such objects into static library instead. Alternatively it
! is possible to use H.J. Lu's binutils with support for mixed objects.
! .IP "\fB\-fuse\-ld=bfd\fR" 4
  .IX Item "-fuse-ld=bfd"
  Use the \fBbfd\fR linker instead of the default linker.
! .IP "\fB\-fuse\-ld=gold\fR" 4
  .IX Item "-fuse-ld=gold"
  Use the \fBgold\fR linker instead of the default linker.
! .IP "\fB\-fuse\-ld=lld\fR" 4
  .IX Item "-fuse-ld=lld"
! Use the \s-1LLVM\s0 \fBlld\fR linker instead of the default linker.
! .IP "\fB\-fuse\-ld=mold\fR" 4
  .IX Item "-fuse-ld=mold"
  Use the Modern Linker (\fBmold\fR) instead of the default linker.
! .IP "\fB\-l\fR\fIlibrary\fR" 4
  .IX Item "-llibrary"
  .PD 0
  .IP "\fB\-l\fR \fIlibrary\fR" 4
--- 18360,18401 ----
  time.
  .Sp
  If \fItype\fR is \fBrel\fR, the compiler assumes that incremental linking is
! done.  The sections containing intermediate code for link\-time optimization are
! merged, pre\-optimized, and output to the resulting object file. In addition, if
  \&\fB\-ffat\-lto\-objects\fR is specified, binary code is produced for future
! non\-LTO linking. The object file produced by incremental linking is smaller
  than a static library produced from the same object files.  At link time the
  result of incremental linking also loads faster than a static
  library assuming that the majority of objects in the library are used.
  .Sp
! Finally \fBnolto\-rel\fR configures the compiler for incremental linking where
  code generation is forced, a final binary is produced, and the intermediate
! code for later link\-time optimization is stripped. When multiple object files
  are linked together the resulting code is better optimized than with
! link\-time optimizations disabled (for example, cross\-module inlining
  happens), but most of benefits of whole program optimizations are lost.
  .Sp
  During the incremental link (by \fB\-r\fR) the linker plugin defaults to
! \&\fBrel\fR. With current interfaces to GNU Binutils it is however not
! possible to incrementally link LTO objects and non\-LTO objects into a single
  mixed object file.  If any of object files in incremental link cannot
! be used for link\-time optimization, the linker plugin issues a warning and
! uses \fBnolto\-rel\fR. To maintain whole program optimization, it is
  recommended to link such objects into static library instead. Alternatively it
! is possible to use H.J. Lu\*(Aqs binutils with support for mixed objects.
! .IP \fB\-fuse\-ld=bfd\fR 4
  .IX Item "-fuse-ld=bfd"
  Use the \fBbfd\fR linker instead of the default linker.
! .IP \fB\-fuse\-ld=gold\fR 4
  .IX Item "-fuse-ld=gold"
  Use the \fBgold\fR linker instead of the default linker.
! .IP \fB\-fuse\-ld=lld\fR 4
  .IX Item "-fuse-ld=lld"
! Use the LLVM \fBlld\fR linker instead of the default linker.
! .IP \fB\-fuse\-ld=mold\fR 4
  .IX Item "-fuse-ld=mold"
  Use the Modern Linker (\fBmold\fR) instead of the default linker.
! .IP \fB\-l\fR\fIlibrary\fR 4
  .IX Item "-llibrary"
  .PD 0
  .IP "\fB\-l\fR \fIlibrary\fR" 4
*************** Use the Modern Linker (\fBmold\fR) inste
*** 18468,18486 ****
  .PD
  Search the library named \fIlibrary\fR when linking.  (The second
  alternative with the library as a separate argument is only for
! \&\s-1POSIX\s0 compliance and is not recommended.)
  .Sp
! The \fB\-l\fR option is passed directly to the linker by \s-1GCC.\s0  Refer
  to your linker documentation for exact details.  The general
! description below applies to the \s-1GNU\s0 linker.
  .Sp
  The linker searches a standard list of directories for the library.
  The directories searched include several standard system directories
  plus any that you specify with \fB\-L\fR.
  .Sp
  Static libraries are archives of object files, and have file names
! like \fIlib\fIlibrary\fI.a\fR.  Some targets also support shared
! libraries, which typically have names like \fIlib\fIlibrary\fI.so\fR.
  If both static and shared libraries are found, the linker gives
  preference to linking with the shared library unless the
  \&\fB\-static\fR option is used.
--- 18403,18421 ----
  .PD
  Search the library named \fIlibrary\fR when linking.  (The second
  alternative with the library as a separate argument is only for
! POSIX compliance and is not recommended.)
  .Sp
! The \fB\-l\fR option is passed directly to the linker by GCC.  Refer
  to your linker documentation for exact details.  The general
! description below applies to the GNU linker.
  .Sp
  The linker searches a standard list of directories for the library.
  The directories searched include several standard system directories
  plus any that you specify with \fB\-L\fR.
  .Sp
  Static libraries are archives of object files, and have file names
! like \fIliblibrary.a\fR.  Some targets also support shared
! libraries, which typically have names like \fIliblibrary.so\fR.
  If both static and shared libraries are found, the linker gives
  preference to linking with the shared library unless the
  \&\fB\-static\fR option is used.
*************** linker searches and processes libraries
*** 18490,18505 ****
  are specified.  Thus, \fBfoo.o \-lz bar.o\fR searches library \fBz\fR
  after file \fIfoo.o\fR but before \fIbar.o\fR.  If \fIbar.o\fR refers
  to functions in \fBz\fR, those functions may not be loaded.
! .IP "\fB\-lobjc\fR" 4
  .IX Item "-lobjc"
  You need this special case of the \fB\-l\fR option in order to
! link an Objective-C or Objective\-\*(C+ program.
! .IP "\fB\-nostartfiles\fR" 4
  .IX Item "-nostartfiles"
  Do not use the standard system startup files when linking.
  The standard system libraries are used normally, unless \fB\-nostdlib\fR,
  \&\fB\-nolibc\fR, or \fB\-nodefaultlibs\fR is used.
! .IP "\fB\-nodefaultlibs\fR" 4
  .IX Item "-nodefaultlibs"
  Do not use the standard system libraries when linking.
  Only the libraries you specify are passed to the linker, and options
--- 18425,18440 ----
  are specified.  Thus, \fBfoo.o \-lz bar.o\fR searches library \fBz\fR
  after file \fIfoo.o\fR but before \fIbar.o\fR.  If \fIbar.o\fR refers
  to functions in \fBz\fR, those functions may not be loaded.
! .IP \fB\-lobjc\fR 4
  .IX Item "-lobjc"
  You need this special case of the \fB\-l\fR option in order to
! link an Objective\-C or Objective\-C++ program.
! .IP \fB\-nostartfiles\fR 4
  .IX Item "-nostartfiles"
  Do not use the standard system startup files when linking.
  The standard system libraries are used normally, unless \fB\-nostdlib\fR,
  \&\fB\-nolibc\fR, or \fB\-nodefaultlibs\fR is used.
! .IP \fB\-nodefaultlibs\fR 4
  .IX Item "-nodefaultlibs"
  Do not use the standard system libraries when linking.
  Only the libraries you specify are passed to the linker, and options
*************** The compiler may generate calls to \f(CW
*** 18513,18519 ****
  These entries are usually resolved by entries in
  libc.  These entry points should be supplied through some other
  mechanism when this option is specified.
! .IP "\fB\-nolibc\fR" 4
  .IX Item "-nolibc"
  Do not use the C library or system libraries tightly coupled with it when
  linking.  Still link with the startup files, \fIlibgcc\fR or toolchain
--- 18448,18454 ----
  These entries are usually resolved by entries in
  libc.  These entry points should be supplied through some other
  mechanism when this option is specified.
! .IP \fB\-nolibc\fR 4
  .IX Item "-nolibc"
  Do not use the C library or system libraries tightly coupled with it when
  linking.  Still link with the startup files, \fIlibgcc\fR or toolchain
*************** or \fIlibstdc++\fR unless options preven
*** 18522,18530 ****
  well.  This typically removes \fB\-lc\fR from the link command line, as well
  as system libraries that normally go with it and become meaningless when
  absence of a C library is assumed, for example \fB\-lpthread\fR or
! \&\fB\-lm\fR in some configurations.  This is intended for bare-board
  targets when there is indeed no C library available.
! .IP "\fB\-nostdlib\fR" 4
  .IX Item "-nostdlib"
  Do not use the standard system startup files or libraries when linking.
  No startup files and only the libraries you specify are passed to
--- 18457,18465 ----
  well.  This typically removes \fB\-lc\fR from the link command line, as well
  as system libraries that normally go with it and become meaningless when
  absence of a C library is assumed, for example \fB\-lpthread\fR or
! \&\fB\-lm\fR in some configurations.  This is intended for bare\-board
  targets when there is indeed no C library available.
! .IP \fB\-nostdlib\fR 4
  .IX Item "-nostdlib"
  Do not use the standard system startup files or libraries when linking.
  No startup files and only the libraries you specify are passed to
*************** mechanism when this option is specified.
*** 18539,18576 ****
  .Sp
  One of the standard libraries bypassed by \fB\-nostdlib\fR and
  \&\fB\-nodefaultlibs\fR is \fIlibgcc.a\fR, a library of internal subroutines
! which \s-1GCC\s0 uses to overcome shortcomings of particular machines, or special
  needs for some languages.
  .Sp
  In most cases, you need \fIlibgcc.a\fR even when you want to avoid
  other standard libraries.  In other words, when you specify \fB\-nostdlib\fR
  or \fB\-nodefaultlibs\fR you should usually specify \fB\-lgcc\fR as well.
! This ensures that you have no unresolved references to internal \s-1GCC\s0
  library subroutines.
! (An example of such an internal subroutine is \f(CW\*(C`_\|_main\*(C'\fR, used to ensure \*(C+
  constructors are called.)
! .IP "\fB\-nostdlib++\fR" 4
  .IX Item "-nostdlib++"
! Do not implicitly link with standard \*(C+ libraries.
  .IP "\fB\-e\fR \fIentry\fR" 4
  .IX Item "-e entry"
  .PD 0
! .IP "\fB\-\-entry=\fR\fIentry\fR" 4
  .IX Item "--entry=entry"
  .PD
  Specify that the program entry point is \fIentry\fR.  The argument is
! interpreted by the linker; the \s-1GNU\s0 linker accepts either a symbol name
  or an address.
! .IP "\fB\-pie\fR" 4
  .IX Item "-pie"
  Produce a dynamically linked position independent executable on targets
  that support it.  For predictable results, you must also specify the same
  set of options used for compilation (\fB\-fpie\fR, \fB\-fPIE\fR,
  or model suboptions) when you specify this linker option.
! .IP "\fB\-no\-pie\fR" 4
  .IX Item "-no-pie"
! Don't produce a dynamically linked position independent executable.
! .IP "\fB\-static\-pie\fR" 4
  .IX Item "-static-pie"
  Produce a static position independent executable on targets that support
  it.  A static position independent executable is similar to a static
--- 18474,18511 ----
  .Sp
  One of the standard libraries bypassed by \fB\-nostdlib\fR and
  \&\fB\-nodefaultlibs\fR is \fIlibgcc.a\fR, a library of internal subroutines
! which GCC uses to overcome shortcomings of particular machines, or special
  needs for some languages.
  .Sp
  In most cases, you need \fIlibgcc.a\fR even when you want to avoid
  other standard libraries.  In other words, when you specify \fB\-nostdlib\fR
  or \fB\-nodefaultlibs\fR you should usually specify \fB\-lgcc\fR as well.
! This ensures that you have no unresolved references to internal GCC
  library subroutines.
! (An example of such an internal subroutine is \f(CW\*(C`_\|_main\*(C'\fR, used to ensure C++
  constructors are called.)
! .IP \fB\-nostdlib++\fR 4
  .IX Item "-nostdlib++"
! Do not implicitly link with standard C++ libraries.
  .IP "\fB\-e\fR \fIentry\fR" 4
  .IX Item "-e entry"
  .PD 0
! .IP \fB\-\-entry=\fR\fIentry\fR 4
  .IX Item "--entry=entry"
  .PD
  Specify that the program entry point is \fIentry\fR.  The argument is
! interpreted by the linker; the GNU linker accepts either a symbol name
  or an address.
! .IP \fB\-pie\fR 4
  .IX Item "-pie"
  Produce a dynamically linked position independent executable on targets
  that support it.  For predictable results, you must also specify the same
  set of options used for compilation (\fB\-fpie\fR, \fB\-fPIE\fR,
  or model suboptions) when you specify this linker option.
! .IP \fB\-no\-pie\fR 4
  .IX Item "-no-pie"
! Don\*(Aqt produce a dynamically linked position independent executable.
! .IP \fB\-static\-pie\fR 4
  .IX Item "-static-pie"
  Produce a static position independent executable on targets that support
  it.  A static position independent executable is similar to a static
*************** executable, but can be loaded at any add
*** 18578,18620 ****
  For predictable results, you must also specify the same set of options
  used for compilation (\fB\-fpie\fR, \fB\-fPIE\fR, or model
  suboptions) when you specify this linker option.
! .IP "\fB\-pthread\fR" 4
  .IX Item "-pthread"
! Link with the \s-1POSIX\s0 threads library.  This option is supported on
  GNU/Linux targets, most other Unix derivatives, and also on
  x86 Cygwin and MinGW targets.  On some targets this option also sets
  flags for the preprocessor, so it should be used consistently for both
  compilation and linking.
! .IP "\fB\-r\fR" 4
  .IX Item "-r"
  Produce a relocatable object as output.  This is also known as partial
  linking.
! .IP "\fB\-rdynamic\fR" 4
  .IX Item "-rdynamic"
! Pass the flag \fB\-export\-dynamic\fR to the \s-1ELF\s0 linker, on targets
  that support it. This instructs the linker to add all symbols, not
  only used ones, to the dynamic symbol table. This option is needed
  for some uses of \f(CW\*(C`dlopen\*(C'\fR or to allow obtaining backtraces
  from within a program.
! .IP "\fB\-s\fR" 4
  .IX Item "-s"
  Remove all symbol table and relocation information from the executable.
! .IP "\fB\-static\fR" 4
  .IX Item "-static"
  On systems that support dynamic linking, this overrides \fB\-pie\fR
  and prevents linking with the shared libraries.  On other systems, this
  option has no effect.
! .IP "\fB\-shared\fR" 4
  .IX Item "-shared"
  Produce a shared object which can then be linked with other objects to
  form an executable.  Not all systems support this option.  For predictable
  results, you must also specify the same set of options used for compilation
  (\fB\-fpic\fR, \fB\-fPIC\fR, or model suboptions) when
  you specify this linker option.[1]
! .IP "\fB\-shared\-libgcc\fR" 4
  .IX Item "-shared-libgcc"
  .PD 0
! .IP "\fB\-static\-libgcc\fR" 4
  .IX Item "-static-libgcc"
  .PD
  On systems that provide \fIlibgcc\fR as a shared library, these options
--- 18513,18555 ----
  For predictable results, you must also specify the same set of options
  used for compilation (\fB\-fpie\fR, \fB\-fPIE\fR, or model
  suboptions) when you specify this linker option.
! .IP \fB\-pthread\fR 4
  .IX Item "-pthread"
! Link with the POSIX threads library.  This option is supported on
  GNU/Linux targets, most other Unix derivatives, and also on
  x86 Cygwin and MinGW targets.  On some targets this option also sets
  flags for the preprocessor, so it should be used consistently for both
  compilation and linking.
! .IP \fB\-r\fR 4
  .IX Item "-r"
  Produce a relocatable object as output.  This is also known as partial
  linking.
! .IP \fB\-rdynamic\fR 4
  .IX Item "-rdynamic"
! Pass the flag \fB\-export\-dynamic\fR to the ELF linker, on targets
  that support it. This instructs the linker to add all symbols, not
  only used ones, to the dynamic symbol table. This option is needed
  for some uses of \f(CW\*(C`dlopen\*(C'\fR or to allow obtaining backtraces
  from within a program.
! .IP \fB\-s\fR 4
  .IX Item "-s"
  Remove all symbol table and relocation information from the executable.
! .IP \fB\-static\fR 4
  .IX Item "-static"
  On systems that support dynamic linking, this overrides \fB\-pie\fR
  and prevents linking with the shared libraries.  On other systems, this
  option has no effect.
! .IP \fB\-shared\fR 4
  .IX Item "-shared"
  Produce a shared object which can then be linked with other objects to
  form an executable.  Not all systems support this option.  For predictable
  results, you must also specify the same set of options used for compilation
  (\fB\-fpic\fR, \fB\-fPIC\fR, or model suboptions) when
  you specify this linker option.[1]
! .IP \fB\-shared\-libgcc\fR 4
  .IX Item "-shared-libgcc"
  .PD 0
! .IP \fB\-static\-libgcc\fR 4
  .IX Item "-static-libgcc"
  .PD
  On systems that provide \fIlibgcc\fR as a shared library, these options
*************** across different shared libraries.  In t
*** 18629,18641 ****
  as well as the application itself should use the shared \fIlibgcc\fR.
  .Sp
  Therefore, the G++ driver automatically adds \fB\-shared\-libgcc\fR
! whenever you build a shared library or a main executable, because \*(C+
  programs typically use exceptions, so this is the right thing to do.
  .Sp
! If, instead, you use the \s-1GCC\s0 driver to create shared libraries, you may
  find that they are not always linked with the shared \fIlibgcc\fR.
! If \s-1GCC\s0 finds, at its configuration time, that you have a non-GNU linker
! or a \s-1GNU\s0 linker that does not support option \fB\-\-eh\-frame\-hdr\fR,
  it links the shared version of \fIlibgcc\fR into shared libraries
  by default.  Otherwise, it takes advantage of the linker and optimizes
  away the linking with the shared version of \fIlibgcc\fR, linking with
--- 18564,18576 ----
  as well as the application itself should use the shared \fIlibgcc\fR.
  .Sp
  Therefore, the G++ driver automatically adds \fB\-shared\-libgcc\fR
! whenever you build a shared library or a main executable, because C++
  programs typically use exceptions, so this is the right thing to do.
  .Sp
! If, instead, you use the GCC driver to create shared libraries, you may
  find that they are not always linked with the shared \fIlibgcc\fR.
! If GCC finds, at its configuration time, that you have a non\-GNU linker
! or a GNU linker that does not support option \fB\-\-eh\-frame\-hdr\fR,
  it links the shared version of \fIlibgcc\fR into shared libraries
  by default.  Otherwise, it takes advantage of the linker and optimizes
  away the linking with the shared version of \fIlibgcc\fR, linking with
*************** However, if a library or main executable
*** 18647,18691 ****
  exceptions, you must link it using the G++ driver, or using the option
  \&\fB\-shared\-libgcc\fR, such that it is linked with the shared
  \&\fIlibgcc\fR.
! .IP "\fB\-static\-libasan\fR" 4
  .IX Item "-static-libasan"
  When the \fB\-fsanitize=address\fR option is used to link a program,
! the \s-1GCC\s0 driver automatically links against \fBlibasan\fR.  If
  \&\fIlibasan\fR is available as a shared library, and the \fB\-static\fR
  option is not used, then this links against the shared version of
! \&\fIlibasan\fR.  The \fB\-static\-libasan\fR option directs the \s-1GCC\s0
  driver to link \fIlibasan\fR statically, without necessarily linking
  other libraries statically.
! .IP "\fB\-static\-libtsan\fR" 4
  .IX Item "-static-libtsan"
  When the \fB\-fsanitize=thread\fR option is used to link a program,
! the \s-1GCC\s0 driver automatically links against \fBlibtsan\fR.  If
  \&\fIlibtsan\fR is available as a shared library, and the \fB\-static\fR
  option is not used, then this links against the shared version of
! \&\fIlibtsan\fR.  The \fB\-static\-libtsan\fR option directs the \s-1GCC\s0
  driver to link \fIlibtsan\fR statically, without necessarily linking
  other libraries statically.
! .IP "\fB\-static\-liblsan\fR" 4
  .IX Item "-static-liblsan"
  When the \fB\-fsanitize=leak\fR option is used to link a program,
! the \s-1GCC\s0 driver automatically links against \fBliblsan\fR.  If
  \&\fIliblsan\fR is available as a shared library, and the \fB\-static\fR
  option is not used, then this links against the shared version of
! \&\fIliblsan\fR.  The \fB\-static\-liblsan\fR option directs the \s-1GCC\s0
  driver to link \fIliblsan\fR statically, without necessarily linking
  other libraries statically.
! .IP "\fB\-static\-libubsan\fR" 4
  .IX Item "-static-libubsan"
  When the \fB\-fsanitize=undefined\fR option is used to link a program,
! the \s-1GCC\s0 driver automatically links against \fBlibubsan\fR.  If
  \&\fIlibubsan\fR is available as a shared library, and the \fB\-static\fR
  option is not used, then this links against the shared version of
! \&\fIlibubsan\fR.  The \fB\-static\-libubsan\fR option directs the \s-1GCC\s0
  driver to link \fIlibubsan\fR statically, without necessarily linking
  other libraries statically.
! .IP "\fB\-static\-libstdc++\fR" 4
  .IX Item "-static-libstdc++"
! When the \fBg++\fR program is used to link a \*(C+ program, it
  normally automatically links against \fBlibstdc++\fR.  If
  \&\fIlibstdc++\fR is available as a shared library, and the
  \&\fB\-static\fR option is not used, then this links against the
--- 18582,18626 ----
  exceptions, you must link it using the G++ driver, or using the option
  \&\fB\-shared\-libgcc\fR, such that it is linked with the shared
  \&\fIlibgcc\fR.
! .IP \fB\-static\-libasan\fR 4
  .IX Item "-static-libasan"
  When the \fB\-fsanitize=address\fR option is used to link a program,
! the GCC driver automatically links against \fBlibasan\fR.  If
  \&\fIlibasan\fR is available as a shared library, and the \fB\-static\fR
  option is not used, then this links against the shared version of
! \&\fIlibasan\fR.  The \fB\-static\-libasan\fR option directs the GCC
  driver to link \fIlibasan\fR statically, without necessarily linking
  other libraries statically.
! .IP \fB\-static\-libtsan\fR 4
  .IX Item "-static-libtsan"
  When the \fB\-fsanitize=thread\fR option is used to link a program,
! the GCC driver automatically links against \fBlibtsan\fR.  If
  \&\fIlibtsan\fR is available as a shared library, and the \fB\-static\fR
  option is not used, then this links against the shared version of
! \&\fIlibtsan\fR.  The \fB\-static\-libtsan\fR option directs the GCC
  driver to link \fIlibtsan\fR statically, without necessarily linking
  other libraries statically.
! .IP \fB\-static\-liblsan\fR 4
  .IX Item "-static-liblsan"
  When the \fB\-fsanitize=leak\fR option is used to link a program,
! the GCC driver automatically links against \fBliblsan\fR.  If
  \&\fIliblsan\fR is available as a shared library, and the \fB\-static\fR
  option is not used, then this links against the shared version of
! \&\fIliblsan\fR.  The \fB\-static\-liblsan\fR option directs the GCC
  driver to link \fIliblsan\fR statically, without necessarily linking
  other libraries statically.
! .IP \fB\-static\-libubsan\fR 4
  .IX Item "-static-libubsan"
  When the \fB\-fsanitize=undefined\fR option is used to link a program,
! the GCC driver automatically links against \fBlibubsan\fR.  If
  \&\fIlibubsan\fR is available as a shared library, and the \fB\-static\fR
  option is not used, then this links against the shared version of
! \&\fIlibubsan\fR.  The \fB\-static\-libubsan\fR option directs the GCC
  driver to link \fIlibubsan\fR statically, without necessarily linking
  other libraries statically.
! .IP \fB\-static\-libstdc++\fR 4
  .IX Item "-static-libstdc++"
! When the \fBg++\fR program is used to link a C++ program, it
  normally automatically links against \fBlibstdc++\fR.  If
  \&\fIlibstdc++\fR is available as a shared library, and the
  \&\fB\-static\fR option is not used, then this links against the
*************** the program without going all the way to
*** 18695,18701 ****
  \&\fB\-static\-libstdc++\fR option directs the \fBg++\fR driver to
  link \fIlibstdc++\fR statically, without necessarily linking other
  libraries statically.
! .IP "\fB\-symbolic\fR" 4
  .IX Item "-symbolic"
  Bind references to global symbols when building a shared object.  Warn
  about any unresolved references (unless overridden by the link editor
--- 18630,18636 ----
  \&\fB\-static\-libstdc++\fR option directs the \fBg++\fR driver to
  link \fIlibstdc++\fR statically, without necessarily linking other
  libraries statically.
! .IP \fB\-symbolic\fR 4
  .IX Item "-symbolic"
  Bind references to global symbols when building a shared object.  Warn
  about any unresolved references (unless overridden by the link editor
*************** this option.
*** 18704,18737 ****
  .IP "\fB\-T\fR \fIscript\fR" 4
  .IX Item "-T script"
  Use \fIscript\fR as the linker script.  This option is supported by most
! systems using the \s-1GNU\s0 linker.  On some targets, such as bare-board
  targets without an operating system, the \fB\-T\fR option may be required
  when linking to avoid references to undefined symbols.
  .IP "\fB\-Xlinker\fR \fIoption\fR" 4
  .IX Item "-Xlinker option"
  Pass \fIoption\fR as an option to the linker.  You can use this to
! supply system-specific linker options that \s-1GCC\s0 does not recognize.
  .Sp
  If you want to pass an option that takes a separate argument, you must use
  \&\fB\-Xlinker\fR twice, once for the option and once for the argument.
  For example, to pass \fB\-assert definitions\fR, you must write
  \&\fB\-Xlinker \-assert \-Xlinker definitions\fR.  It does not work to write
! \&\fB\-Xlinker \*(L"\-assert definitions\*(R"\fR, because this passes the entire
  string as a single argument, which is not what the linker expects.
  .Sp
! When using the \s-1GNU\s0 linker, it is usually more convenient to pass
  arguments to linker options using the \fIoption\fR\fB=\fR\fIvalue\fR
  syntax than as separate arguments.  For example, you can specify
  \&\fB\-Xlinker \-Map=output.map\fR rather than
  \&\fB\-Xlinker \-Map \-Xlinker output.map\fR.  Other linkers may not support
! this syntax for command-line options.
! .IP "\fB\-Wl,\fR\fIoption\fR" 4
  .IX Item "-Wl,option"
  Pass \fIoption\fR as an option to the linker.  If \fIoption\fR contains
  commas, it is split into multiple options at the commas.  You can use this
  syntax to pass an argument to the option.
  For example, \fB\-Wl,\-Map,output.map\fR passes \fB\-Map output.map\fR to the
! linker.  When using the \s-1GNU\s0 linker, you can also get the same effect with
  \&\fB\-Wl,\-Map=output.map\fR.
  .IP "\fB\-u\fR \fIsymbol\fR" 4
  .IX Item "-u symbol"
--- 18639,18672 ----
  .IP "\fB\-T\fR \fIscript\fR" 4
  .IX Item "-T script"
  Use \fIscript\fR as the linker script.  This option is supported by most
! systems using the GNU linker.  On some targets, such as bare\-board
  targets without an operating system, the \fB\-T\fR option may be required
  when linking to avoid references to undefined symbols.
  .IP "\fB\-Xlinker\fR \fIoption\fR" 4
  .IX Item "-Xlinker option"
  Pass \fIoption\fR as an option to the linker.  You can use this to
! supply system\-specific linker options that GCC does not recognize.
  .Sp
  If you want to pass an option that takes a separate argument, you must use
  \&\fB\-Xlinker\fR twice, once for the option and once for the argument.
  For example, to pass \fB\-assert definitions\fR, you must write
  \&\fB\-Xlinker \-assert \-Xlinker definitions\fR.  It does not work to write
! \&\fB\-Xlinker "\-assert definitions"\fR, because this passes the entire
  string as a single argument, which is not what the linker expects.
  .Sp
! When using the GNU linker, it is usually more convenient to pass
  arguments to linker options using the \fIoption\fR\fB=\fR\fIvalue\fR
  syntax than as separate arguments.  For example, you can specify
  \&\fB\-Xlinker \-Map=output.map\fR rather than
  \&\fB\-Xlinker \-Map \-Xlinker output.map\fR.  Other linkers may not support
! this syntax for command\-line options.
! .IP \fB\-Wl,\fR\fIoption\fR 4
  .IX Item "-Wl,option"
  Pass \fIoption\fR as an option to the linker.  If \fIoption\fR contains
  commas, it is split into multiple options at the commas.  You can use this
  syntax to pass an argument to the option.
  For example, \fB\-Wl,\-Map,output.map\fR passes \fB\-Map output.map\fR to the
! linker.  When using the GNU linker, you can also get the same effect with
  \&\fB\-Wl,\-Map=output.map\fR.
  .IP "\fB\-u\fR \fIsymbol\fR" 4
  .IX Item "-u symbol"
*************** or \f(CW$SYSROOT\fR is replaced by the s
*** 18764,18803 ****
  \&\fB\-\-sysroot\fR and \fB\-isysroot\fR.
  .Sp
  Directories specified with \fB\-iquote\fR apply only to the quote 
! form of the directive, \f(CW\*(C`#include\ "\f(CIfile\f(CW"\*(C'\fR.
  Directories specified with \fB\-I\fR, \fB\-isystem\fR, 
  or \fB\-idirafter\fR apply to lookup for both the
! \&\f(CW\*(C`#include\ "\f(CIfile\f(CW"\*(C'\fR and
! \&\f(CW\*(C`#include\ <\f(CIfile\f(CW>\*(C'\fR directives.
  .Sp
  You can specify any number or combination of these options on the 
  command line to search for header files in several directories.  
  The lookup order is as follows:
  .RS 4
! .IP "1." 4
  .IX Item "1."
  For the quote form of the include directive, the directory of the current
  file is searched first.
! .IP "2." 4
  .IX Item "2."
  For the quote form of the include directive, the directories specified
! by \fB\-iquote\fR options are searched in left-to-right order,
  as they appear on the command line.
! .IP "3." 4
  .IX Item "3."
  Directories specified with \fB\-I\fR options are scanned in
! left-to-right order.
! .IP "4." 4
  .IX Item "4."
  Directories specified with \fB\-isystem\fR options are scanned in
! left-to-right order.
! .IP "5." 4
  .IX Item "5."
  Standard system directories are scanned.
! .IP "6." 4
  .IX Item "6."
  Directories specified with \fB\-idirafter\fR options are scanned in
! left-to-right order.
  .RE
  .RS 4
  .Sp
--- 18699,18738 ----
  \&\fB\-\-sysroot\fR and \fB\-isysroot\fR.
  .Sp
  Directories specified with \fB\-iquote\fR apply only to the quote 
! form of the directive, \f(CW\*(C`#include\ "\fR\f(CIfile\fR\f(CW"\*(C'\fR.
  Directories specified with \fB\-I\fR, \fB\-isystem\fR, 
  or \fB\-idirafter\fR apply to lookup for both the
! \&\f(CW\*(C`#include\ "\fR\f(CIfile\fR\f(CW"\*(C'\fR and
! \&\f(CW\*(C`#include\ <\fR\f(CIfile\fR\f(CW>\*(C'\fR directives.
  .Sp
  You can specify any number or combination of these options on the 
  command line to search for header files in several directories.  
  The lookup order is as follows:
  .RS 4
! .IP 1. 4
  .IX Item "1."
  For the quote form of the include directive, the directory of the current
  file is searched first.
! .IP 2. 4
  .IX Item "2."
  For the quote form of the include directive, the directories specified
! by \fB\-iquote\fR options are searched in left\-to\-right order,
  as they appear on the command line.
! .IP 3. 4
  .IX Item "3."
  Directories specified with \fB\-I\fR options are scanned in
! left\-to\-right order.
! .IP 4. 4
  .IX Item "4."
  Directories specified with \fB\-isystem\fR options are scanned in
! left\-to\-right order.
! .IP 5. 4
  .IX Item "5."
  Standard system directories are scanned.
! .IP 6. 4
  .IX Item "6."
  Directories specified with \fB\-idirafter\fR options are scanned in
! left\-to\-right order.
  .RE
  .RS 4
  .Sp
*************** You can use \fB\-I\fR to override a syst
*** 18805,18811 ****
  file, substituting your own version, since these directories are
  searched before the standard system header file directories.  
  However, you should
! not use this option to add directories that contain vendor-supplied
  system header files; use \fB\-isystem\fR for that.
  .Sp
  The \fB\-isystem\fR and \fB\-idirafter\fR options also mark the directory
--- 18740,18746 ----
  file, substituting your own version, since these directories are
  searched before the standard system header file directories.  
  However, you should
! not use this option to add directories that contain vendor\-supplied
  system header files; use \fB\-isystem\fR for that.
  .Sp
  The \fB\-isystem\fR and \fB\-idirafter\fR options also mark the directory
*************** If a standard system include directory,
*** 18816,18828 ****
  \&\fB\-isystem\fR, is also specified with \fB\-I\fR, the \fB\-I\fR
  option is ignored.  The directory is still searched but as a
  system directory at its normal position in the system include chain.
! This is to ensure that \s-1GCC\s0's procedure to fix buggy system headers and
  the ordering for the \f(CW\*(C`#include_next\*(C'\fR directive are not inadvertently
  changed.
  If you really need to change the search order for system directories,
  use the \fB\-nostdinc\fR and/or \fB\-isystem\fR options.
  .RE
! .IP "\fB\-I\-\fR" 4
  .IX Item "-I-"
  Split the include path.
  This option has been deprecated.  Please use \fB\-iquote\fR instead for
--- 18751,18763 ----
  \&\fB\-isystem\fR, is also specified with \fB\-I\fR, the \fB\-I\fR
  option is ignored.  The directory is still searched but as a
  system directory at its normal position in the system include chain.
! This is to ensure that GCC\*(Aqs procedure to fix buggy system headers and
  the ordering for the \f(CW\*(C`#include_next\*(C'\fR directive are not inadvertently
  changed.
  If you really need to change the search order for system directories,
  use the \fB\-nostdinc\fR and/or \fB\-isystem\fR options.
  .RE
! .IP \fB\-I\-\fR 4
  .IX Item "-I-"
  Split the include path.
  This option has been deprecated.  Please use \fB\-iquote\fR instead for
*************** option.
*** 18831,18843 ****
  .Sp
  Any directories specified with \fB\-I\fR
  options before \fB\-I\-\fR are searched only for headers requested with
! \&\f(CW\*(C`#include\ "\f(CIfile\f(CW"\*(C'\fR; they are not searched for
! \&\f(CW\*(C`#include\ <\f(CIfile\f(CW>\*(C'\fR.  If additional directories are
  specified with \fB\-I\fR options after the \fB\-I\-\fR, those
  directories are searched for all \fB#include\fR directives.
  .Sp
  In addition, \fB\-I\-\fR inhibits the use of the directory of the current
! file directory as the first search directory for \f(CW\*(C`#include\ "\f(CIfile\f(CW"\*(C'\fR.  There is no way to override this effect of \fB\-I\-\fR.
  .IP "\fB\-iprefix\fR \fIprefix\fR" 4
  .IX Item "-iprefix prefix"
  Specify \fIprefix\fR as the prefix for subsequent \fB\-iwithprefix\fR
--- 18766,18778 ----
  .Sp
  Any directories specified with \fB\-I\fR
  options before \fB\-I\-\fR are searched only for headers requested with
! \&\f(CW\*(C`#include\ "\fR\f(CIfile\fR\f(CW"\*(C'\fR; they are not searched for
! \&\f(CW\*(C`#include\ <\fR\f(CIfile\fR\f(CW>\*(C'\fR.  If additional directories are
  specified with \fB\-I\fR options after the \fB\-I\-\fR, those
  directories are searched for all \fB#include\fR directives.
  .Sp
  In addition, \fB\-I\-\fR inhibits the use of the directory of the current
! file directory as the first search directory for \f(CW\*(C`#include\ "\fR\f(CIfile\fR\f(CW"\*(C'\fR.  There is no way to override this effect of \fB\-I\-\fR.
  .IP "\fB\-iprefix\fR \fIprefix\fR" 4
  .IX Item "-iprefix prefix"
  Specify \fIprefix\fR as the prefix for subsequent \fB\-iwithprefix\fR
*************** information.
*** 18862,18881 ****
  .IP "\fB\-imultilib\fR \fIdir\fR" 4
  .IX Item "-imultilib dir"
  Use \fIdir\fR as a subdirectory of the directory containing
! target-specific \*(C+ headers.
! .IP "\fB\-nostdinc\fR" 4
  .IX Item "-nostdinc"
  Do not search the standard system directories for header files.
  Only the directories explicitly specified with \fB\-I\fR,
  \&\fB\-iquote\fR, \fB\-isystem\fR, and/or \fB\-idirafter\fR
  options (and the directory of the current file, if appropriate) 
  are searched.
! .IP "\fB\-nostdinc++\fR" 4
  .IX Item "-nostdinc++"
! Do not search for header files in the \*(C+\-specific standard directories,
  but do still search the other standard directories.  (This option is
! used when building the \*(C+ library.)
! .IP "\fB\-\-embed\-dir=\fR\fIdir\fR" 4
  .IX Item "--embed-dir=dir"
  Append \fIdir\fR directory to the list of searched directories for
  \&\f(CW\*(C`#embed\*(C'\fR preprocessing directive or \f(CW\*(C`_\|_has_embed\*(C'\fR macro.
--- 18797,18816 ----
  .IP "\fB\-imultilib\fR \fIdir\fR" 4
  .IX Item "-imultilib dir"
  Use \fIdir\fR as a subdirectory of the directory containing
! target\-specific C++ headers.
! .IP \fB\-nostdinc\fR 4
  .IX Item "-nostdinc"
  Do not search the standard system directories for header files.
  Only the directories explicitly specified with \fB\-I\fR,
  \&\fB\-iquote\fR, \fB\-isystem\fR, and/or \fB\-idirafter\fR
  options (and the directory of the current file, if appropriate) 
  are searched.
! .IP \fB\-nostdinc++\fR 4
  .IX Item "-nostdinc++"
! Do not search for header files in the C++\-specific standard directories,
  but do still search the other standard directories.  (This option is
! used when building the C++ library.)
! .IP \fB\-\-embed\-dir=\fR\fIdir\fR 4
  .IX Item "--embed-dir=dir"
  Append \fIdir\fR directory to the list of searched directories for
  \&\f(CW\*(C`#embed\*(C'\fR preprocessing directive or \f(CW\*(C`_\|_has_embed\*(C'\fR macro.
*************** There are no default directories for \f(
*** 18884,18900 ****
  If \fIdir\fR begins with \fB=\fR or \f(CW$SYSROOT\fR, then the \fB=\fR
  or \f(CW$SYSROOT\fR is replaced by the sysroot prefix; see
  \&\fB\-\-sysroot\fR and \fB\-isysroot\fR.
! .IP "\fB\-iplugindir=\fR\fIdir\fR" 4
  .IX Item "-iplugindir=dir"
  Set the directory to search for plugins that are passed
  by \fB\-fplugin=\fR\fIname\fR instead of
  \&\fB\-fplugin=\fR\fIpath\fR\fB/\fR\fIname\fR\fB.so\fR.  This option is not meant
  to be used by the user, but only passed by the driver.
! .IP "\fB\-L\fR\fIdir\fR" 4
  .IX Item "-Ldir"
  Add directory \fIdir\fR to the list of directories to be searched
  for \fB\-l\fR.
! .IP "\fB\-B\fR\fIprefix\fR" 4
  .IX Item "-Bprefix"
  This option specifies where to find the executables, libraries,
  include files, and data files of the compiler itself.
--- 18819,18835 ----
  If \fIdir\fR begins with \fB=\fR or \f(CW$SYSROOT\fR, then the \fB=\fR
  or \f(CW$SYSROOT\fR is replaced by the sysroot prefix; see
  \&\fB\-\-sysroot\fR and \fB\-isysroot\fR.
! .IP \fB\-iplugindir=\fR\fIdir\fR 4
  .IX Item "-iplugindir=dir"
  Set the directory to search for plugins that are passed
  by \fB\-fplugin=\fR\fIname\fR instead of
  \&\fB\-fplugin=\fR\fIpath\fR\fB/\fR\fIname\fR\fB.so\fR.  This option is not meant
  to be used by the user, but only passed by the driver.
! .IP \fB\-L\fR\fIdir\fR 4
  .IX Item "-Ldir"
  Add directory \fIdir\fR to the list of directories to be searched
  for \fB\-l\fR.
! .IP \fB\-B\fR\fIprefix\fR 4
  .IX Item "-Bprefix"
  This option specifies where to find the executables, libraries,
  include files, and data files of the compiler itself.
*************** is not specified, the driver tries two s
*** 18911,18917 ****
  \&\fI/usr/lib/gcc/\fR and \fI/usr/local/lib/gcc/\fR.  If neither of
  those results in a file name that is found, the unmodified program
  name is searched for using the directories specified in your
! \&\fB\s-1PATH\s0\fR environment variable.
  .Sp
  The compiler checks to see if the path provided by \fB\-B\fR
  refers to a directory, and if necessary it adds a directory
--- 18846,18852 ----
  \&\fI/usr/lib/gcc/\fR and \fI/usr/local/lib/gcc/\fR.  If neither of
  those results in a file name that is found, the unmodified program
  name is searched for using the directories specified in your
! \&\fBPATH\fR environment variable.
  .Sp
  The compiler checks to see if the path provided by \fB\-B\fR
  refers to a directory, and if necessary it adds a directory
*************** standard prefixes above are tried, and t
*** 18930,18972 ****
  out of the link if it is not found by those means.
  .Sp
  Another way to specify a prefix much like the \fB\-B\fR prefix is to use
! the environment variable \fB\s-1GCC_EXEC_PREFIX\s0\fR.
  .Sp
  As a special kludge, if the path provided by \fB\-B\fR is
! \&\fI[dir/]stage\fIN\fI/\fR, where \fIN\fR is a number in the range 0 to
  9, then it is replaced by \fI[dir/]include\fR.  This is to help
! with boot-strapping the compiler.
! .IP "\fB\-no\-canonical\-prefixes\fR" 4
  .IX Item "-no-canonical-prefixes"
  Do not expand any symbolic links, resolve references to \fB/../\fR
  or \fB/./\fR, or make the path absolute when generating a relative
  prefix.
! .IP "\fB\-\-sysroot=\fR\fIdir\fR" 4
  .IX Item "--sysroot=dir"
  Use \fIdir\fR as the logical root directory for headers and libraries.
  For example, if the compiler normally searches for headers in
  \&\fI/usr/include\fR and libraries in \fI/usr/lib\fR, it instead
! searches \fI\fIdir\fI/usr/include\fR and \fI\fIdir\fI/usr/lib\fR.
  .Sp
  If you use both this option and the \fB\-isysroot\fR option, then
  the \fB\-\-sysroot\fR option applies to libraries, but the
  \&\fB\-isysroot\fR option applies to header files.
  .Sp
! The \s-1GNU\s0 linker (beginning with version 2.16) has the necessary support
  for this option.  If your linker does not support this option, the
  header file aspect of \fB\-\-sysroot\fR still works, but the
  library aspect does not.
! .IP "\fB\-\-no\-sysroot\-suffix\fR" 4
  .IX Item "--no-sysroot-suffix"
  For some targets, a suffix is added to the root directory specified
  with \fB\-\-sysroot\fR, depending on the other options used, so that
  headers may for example be found in
! \&\fI\fIdir\fI/\fIsuffix\fI/usr/include\fR instead of
! \&\fI\fIdir\fI/usr/include\fR.  This option disables the addition of
  such a suffix.
  .SS "Options for Code Generation Conventions"
  .IX Subsection "Options for Code Generation Conventions"
! These machine-independent options control the interface conventions
  used in code generation.
  .PP
  Most of them have both positive and negative forms; the negative form
--- 18865,18907 ----
  out of the link if it is not found by those means.
  .Sp
  Another way to specify a prefix much like the \fB\-B\fR prefix is to use
! the environment variable \fBGCC_EXEC_PREFIX\fR.
  .Sp
  As a special kludge, if the path provided by \fB\-B\fR is
! \&\fI[dir/]stageN/\fR, where \fIN\fR is a number in the range 0 to
  9, then it is replaced by \fI[dir/]include\fR.  This is to help
! with boot\-strapping the compiler.
! .IP \fB\-no\-canonical\-prefixes\fR 4
  .IX Item "-no-canonical-prefixes"
  Do not expand any symbolic links, resolve references to \fB/../\fR
  or \fB/./\fR, or make the path absolute when generating a relative
  prefix.
! .IP \fB\-\-sysroot=\fR\fIdir\fR 4
  .IX Item "--sysroot=dir"
  Use \fIdir\fR as the logical root directory for headers and libraries.
  For example, if the compiler normally searches for headers in
  \&\fI/usr/include\fR and libraries in \fI/usr/lib\fR, it instead
! searches \fIdir/usr/include\fR and \fIdir/usr/lib\fR.
  .Sp
  If you use both this option and the \fB\-isysroot\fR option, then
  the \fB\-\-sysroot\fR option applies to libraries, but the
  \&\fB\-isysroot\fR option applies to header files.
  .Sp
! The GNU linker (beginning with version 2.16) has the necessary support
  for this option.  If your linker does not support this option, the
  header file aspect of \fB\-\-sysroot\fR still works, but the
  library aspect does not.
! .IP \fB\-\-no\-sysroot\-suffix\fR 4
  .IX Item "--no-sysroot-suffix"
  For some targets, a suffix is added to the root directory specified
  with \fB\-\-sysroot\fR, depending on the other options used, so that
  headers may for example be found in
! \&\fIdir/suffix/usr/include\fR instead of
! \&\fIdir/usr/include\fR.  This option disables the addition of
  such a suffix.
  .SS "Options for Code Generation Conventions"
  .IX Subsection "Options for Code Generation Conventions"
! These machine\-independent options control the interface conventions
  used in code generation.
  .PP
  Most of them have both positive and negative forms; the negative form
*************** of \fB\-ffoo\fR is \fB\-fno\-foo\fR.  In
*** 18974,18980 ****
  one of the forms is listed\-\-\-the one that is not the default.  You
  can figure out the other form by either removing \fBno\-\fR or adding
  it.
! .IP "\fB\-fstack\-reuse=\fR\fIreuse-level\fR" 4
  .IX Item "-fstack-reuse=reuse-level"
  This option controls stack space reuse for user declared local/auto variables
  and compiler generated temporaries.  \fIreuse_level\fR can be \fBall\fR,
--- 18909,18915 ----
  one of the forms is listed\-\-\-the one that is not the default.  You
  can figure out the other form by either removing \fBno\-\fR or adding
  it.
! .IP \fB\-fstack\-reuse=\fR\fIreuse\-level\fR 4
  .IX Item "-fstack-reuse=reuse-level"
  This option controls stack space reuse for user declared local/auto variables
  and compiler generated temporaries.  \fIreuse_level\fR can be \fBall\fR,
*************** Another example:
*** 19042,19130 ****
  \&           }
  .Ve
  .Sp
! The lifetime of a compiler generated temporary is well defined by the \*(C+
  standard. When a lifetime of a temporary ends, and if the temporary lives
  in memory, the optimizing compiler has the freedom to reuse its stack
  space with other temporaries or scoped local variables whose live range
  does not overlap with it. However some of the legacy code relies on
! the behavior of older compilers in which temporaries' stack space is
  not reused, the aggressive stack reuse can lead to runtime errors. This
  option is used to control the temporary stack reuse optimization.
! .IP "\fB\-ftrapv\fR" 4
  .IX Item "-ftrapv"
  This option generates traps for signed overflow on addition, subtraction,
  multiplication operations.
  The options \fB\-ftrapv\fR and \fB\-fwrapv\fR override each other, so using
! \&\fB\-ftrapv\fR \fB\-fwrapv\fR on the command-line results in
  \&\fB\-fwrapv\fR being effective.  Note that only active options override, so
! using \fB\-ftrapv\fR \fB\-fwrapv\fR \fB\-fno\-wrapv\fR on the command-line
  results in \fB\-ftrapv\fR being effective.
! .IP "\fB\-fwrapv\fR" 4
  .IX Item "-fwrapv"
  This option instructs the compiler to assume that signed arithmetic
  overflow of addition, subtraction and multiplication wraps around
! using twos-complement representation.  This flag enables some optimizations
  and disables others.
  The options \fB\-ftrapv\fR and \fB\-fwrapv\fR override each other, so using
! \&\fB\-ftrapv\fR \fB\-fwrapv\fR on the command-line results in
  \&\fB\-fwrapv\fR being effective.  Note that only active options override, so
! using \fB\-ftrapv\fR \fB\-fwrapv\fR \fB\-fno\-wrapv\fR on the command-line
  results in \fB\-ftrapv\fR being effective.
! .IP "\fB\-fwrapv\-pointer\fR" 4
  .IX Item "-fwrapv-pointer"
  This option instructs the compiler to assume that pointer arithmetic
! overflow on addition and subtraction wraps around using twos-complement
  representation.  This flag disables some optimizations which assume
  pointer overflow is invalid.
! .IP "\fB\-fstrict\-overflow\fR" 4
  .IX Item "-fstrict-overflow"
  This option implies \fB\-fno\-wrapv\fR \fB\-fno\-wrapv\-pointer\fR and when
  negated implies \fB\-fwrapv\fR \fB\-fwrapv\-pointer\fR.
! .IP "\fB\-fexceptions\fR" 4
  .IX Item "-fexceptions"
  Enable exception handling.  Generates extra code needed to propagate
! exceptions.  For some targets, this implies \s-1GCC\s0 generates frame
  unwind information for all functions, which can produce significant data
  size overhead, although it does not affect execution.  If you do not
! specify this option, \s-1GCC\s0 enables it by default for languages like
! \&\*(C+ that normally require exception handling, and disables it for
  languages like C that do not normally require it.  However, you may need
  to enable this option when compiling C code that needs to interoperate
! properly with exception handlers written in \*(C+.  You may also wish to
! disable this option if you are compiling older \*(C+ programs that don't
  use exception handling.
! .IP "\fB\-fnon\-call\-exceptions\fR" 4
  .IX Item "-fnon-call-exceptions"
  Generate code that allows trapping instructions to throw exceptions.
! Note that this requires platform-specific runtime support that does
  not exist everywhere.  Moreover, it only allows \fItrapping\fR
! instructions to throw exceptions, i.e. memory references or floating-point
  instructions.  It does not allow exceptions to be thrown from
  arbitrary signal handlers such as \f(CW\*(C`SIGALRM\*(C'\fR.  This enables
  \&\fB\-fexceptions\fR.
! .IP "\fB\-fdelete\-dead\-exceptions\fR" 4
  .IX Item "-fdelete-dead-exceptions"
! Consider that instructions that may throw exceptions but don't otherwise
  contribute to the execution of the program can be optimized away.
  This does not affect calls to functions except those with the
  \&\f(CW\*(C`pure\*(C'\fR or \f(CW\*(C`const\*(C'\fR attributes.
! This option is enabled by default for the Ada and \*(C+ compilers, as permitted by
  the language specifications.
  Optimization passes that cause dead exceptions to be removed are enabled independently at different optimization levels.
! .IP "\fB\-funwind\-tables\fR" 4
  .IX Item "-funwind-tables"
  Similar to \fB\-fexceptions\fR, except that it just generates any needed
  static data, but does not affect the generated code in any other way.
  You normally do not need to enable this option; instead, a language processor
  that needs this handling enables it on your behalf.
! .IP "\fB\-fasynchronous\-unwind\-tables\fR" 4
  .IX Item "-fasynchronous-unwind-tables"
! Generate unwind table in \s-1DWARF\s0 format, if supported by target machine.  The
  table is exact at each instruction boundary, so it can be used for stack
  unwinding from asynchronous events (such as debugger or garbage collector).
! .IP "\fB\-fno\-gnu\-unique\fR" 4
  .IX Item "-fno-gnu-unique"
! On systems with recent \s-1GNU\s0 assembler and C library, the \*(C+ compiler
  uses the \f(CW\*(C`STB_GNU_UNIQUE\*(C'\fR binding to make sure that definitions
  of template static data members and static local variables in inline
  functions are unique even in the presence of \f(CW\*(C`RTLD_LOCAL\*(C'\fR; this
--- 18977,19065 ----
  \&           }
  .Ve
  .Sp
! The lifetime of a compiler generated temporary is well defined by the C++
  standard. When a lifetime of a temporary ends, and if the temporary lives
  in memory, the optimizing compiler has the freedom to reuse its stack
  space with other temporaries or scoped local variables whose live range
  does not overlap with it. However some of the legacy code relies on
! the behavior of older compilers in which temporaries\*(Aq stack space is
  not reused, the aggressive stack reuse can lead to runtime errors. This
  option is used to control the temporary stack reuse optimization.
! .IP \fB\-ftrapv\fR 4
  .IX Item "-ftrapv"
  This option generates traps for signed overflow on addition, subtraction,
  multiplication operations.
  The options \fB\-ftrapv\fR and \fB\-fwrapv\fR override each other, so using
! \&\fB\-ftrapv\fR \fB\-fwrapv\fR on the command\-line results in
  \&\fB\-fwrapv\fR being effective.  Note that only active options override, so
! using \fB\-ftrapv\fR \fB\-fwrapv\fR \fB\-fno\-wrapv\fR on the command\-line
  results in \fB\-ftrapv\fR being effective.
! .IP \fB\-fwrapv\fR 4
  .IX Item "-fwrapv"
  This option instructs the compiler to assume that signed arithmetic
  overflow of addition, subtraction and multiplication wraps around
! using twos\-complement representation.  This flag enables some optimizations
  and disables others.
  The options \fB\-ftrapv\fR and \fB\-fwrapv\fR override each other, so using
! \&\fB\-ftrapv\fR \fB\-fwrapv\fR on the command\-line results in
  \&\fB\-fwrapv\fR being effective.  Note that only active options override, so
! using \fB\-ftrapv\fR \fB\-fwrapv\fR \fB\-fno\-wrapv\fR on the command\-line
  results in \fB\-ftrapv\fR being effective.
! .IP \fB\-fwrapv\-pointer\fR 4
  .IX Item "-fwrapv-pointer"
  This option instructs the compiler to assume that pointer arithmetic
! overflow on addition and subtraction wraps around using twos\-complement
  representation.  This flag disables some optimizations which assume
  pointer overflow is invalid.
! .IP \fB\-fstrict\-overflow\fR 4
  .IX Item "-fstrict-overflow"
  This option implies \fB\-fno\-wrapv\fR \fB\-fno\-wrapv\-pointer\fR and when
  negated implies \fB\-fwrapv\fR \fB\-fwrapv\-pointer\fR.
! .IP \fB\-fexceptions\fR 4
  .IX Item "-fexceptions"
  Enable exception handling.  Generates extra code needed to propagate
! exceptions.  For some targets, this implies GCC generates frame
  unwind information for all functions, which can produce significant data
  size overhead, although it does not affect execution.  If you do not
! specify this option, GCC enables it by default for languages like
! C++ that normally require exception handling, and disables it for
  languages like C that do not normally require it.  However, you may need
  to enable this option when compiling C code that needs to interoperate
! properly with exception handlers written in C++.  You may also wish to
! disable this option if you are compiling older C++ programs that don\*(Aqt
  use exception handling.
! .IP \fB\-fnon\-call\-exceptions\fR 4
  .IX Item "-fnon-call-exceptions"
  Generate code that allows trapping instructions to throw exceptions.
! Note that this requires platform\-specific runtime support that does
  not exist everywhere.  Moreover, it only allows \fItrapping\fR
! instructions to throw exceptions, i.e. memory references or floating\-point
  instructions.  It does not allow exceptions to be thrown from
  arbitrary signal handlers such as \f(CW\*(C`SIGALRM\*(C'\fR.  This enables
  \&\fB\-fexceptions\fR.
! .IP \fB\-fdelete\-dead\-exceptions\fR 4
  .IX Item "-fdelete-dead-exceptions"
! Consider that instructions that may throw exceptions but don\*(Aqt otherwise
  contribute to the execution of the program can be optimized away.
  This does not affect calls to functions except those with the
  \&\f(CW\*(C`pure\*(C'\fR or \f(CW\*(C`const\*(C'\fR attributes.
! This option is enabled by default for the Ada and C++ compilers, as permitted by
  the language specifications.
  Optimization passes that cause dead exceptions to be removed are enabled independently at different optimization levels.
! .IP \fB\-funwind\-tables\fR 4
  .IX Item "-funwind-tables"
  Similar to \fB\-fexceptions\fR, except that it just generates any needed
  static data, but does not affect the generated code in any other way.
  You normally do not need to enable this option; instead, a language processor
  that needs this handling enables it on your behalf.
! .IP \fB\-fasynchronous\-unwind\-tables\fR 4
  .IX Item "-fasynchronous-unwind-tables"
! Generate unwind table in DWARF format, if supported by target machine.  The
  table is exact at each instruction boundary, so it can be used for stack
  unwinding from asynchronous events (such as debugger or garbage collector).
! .IP \fB\-fno\-gnu\-unique\fR 4
  .IX Item "-fno-gnu-unique"
! On systems with recent GNU assembler and C library, the C++ compiler
  uses the \f(CW\*(C`STB_GNU_UNIQUE\*(C'\fR binding to make sure that definitions
  of template static data members and static local variables in inline
  functions are unique even in the presence of \f(CW\*(C`RTLD_LOCAL\*(C'\fR; this
*************** is necessary to avoid problems with a li
*** 19132,19146 ****
  \&\f(CW\*(C`RTLD_LOCAL\*(C'\fR plugins depending on a definition in one of them and
  therefore disagreeing with the other one about the binding of the
  symbol.  But this causes \f(CW\*(C`dlclose\*(C'\fR to be ignored for affected
! DSOs; if your program relies on reinitialization of a \s-1DSO\s0 via
  \&\f(CW\*(C`dlclose\*(C'\fR and \f(CW\*(C`dlopen\*(C'\fR, you can use
  \&\fB\-fno\-gnu\-unique\fR.
! .IP "\fB\-fpcc\-struct\-return\fR" 4
  .IX Item "-fpcc-struct-return"
! Return \*(L"short\*(R" \f(CW\*(C`struct\*(C'\fR and \f(CW\*(C`union\*(C'\fR values in memory like
  longer ones, rather than in registers.  This convention is less
  efficient, but it has the advantage of allowing intercallability between
! GCC-compiled files and files compiled with other compilers, particularly
  the Portable C Compiler (pcc).
  .Sp
  The precise convention for returning structures in memory depends
--- 19067,19081 ----
  \&\f(CW\*(C`RTLD_LOCAL\*(C'\fR plugins depending on a definition in one of them and
  therefore disagreeing with the other one about the binding of the
  symbol.  But this causes \f(CW\*(C`dlclose\*(C'\fR to be ignored for affected
! DSOs; if your program relies on reinitialization of a DSO via
  \&\f(CW\*(C`dlclose\*(C'\fR and \f(CW\*(C`dlopen\*(C'\fR, you can use
  \&\fB\-fno\-gnu\-unique\fR.
! .IP \fB\-fpcc\-struct\-return\fR 4
  .IX Item "-fpcc-struct-return"
! Return "short" \f(CW\*(C`struct\*(C'\fR and \f(CW\*(C`union\*(C'\fR values in memory like
  longer ones, rather than in registers.  This convention is less
  efficient, but it has the advantage of allowing intercallability between
! GCC\-compiled files and files compiled with other compilers, particularly
  the Portable C Compiler (pcc).
  .Sp
  The precise convention for returning structures in memory depends
*************** that of some integer type.
*** 19152,19176 ****
  \&\fBWarning:\fR code compiled with the \fB\-fpcc\-struct\-return\fR
  switch is not binary compatible with code compiled with the
  \&\fB\-freg\-struct\-return\fR switch.
! Use it to conform to a non-default application binary interface.
! .IP "\fB\-freg\-struct\-return\fR" 4
  .IX Item "-freg-struct-return"
  Return \f(CW\*(C`struct\*(C'\fR and \f(CW\*(C`union\*(C'\fR values in registers when possible.
  This is more efficient for small structures than
  \&\fB\-fpcc\-struct\-return\fR.
  .Sp
  If you specify neither \fB\-fpcc\-struct\-return\fR nor
! \&\fB\-freg\-struct\-return\fR, \s-1GCC\s0 defaults to whichever convention is
! standard for the target.  If there is no standard convention, \s-1GCC\s0
! defaults to \fB\-fpcc\-struct\-return\fR, except on targets where \s-1GCC\s0 is
  the principal compiler.  In those cases, we can choose the standard, and
  we chose the more efficient register return alternative.
  .Sp
  \&\fBWarning:\fR code compiled with the \fB\-freg\-struct\-return\fR
  switch is not binary compatible with code compiled with the
  \&\fB\-fpcc\-struct\-return\fR switch.
! Use it to conform to a non-default application binary interface.
! .IP "\fB\-fshort\-enums\fR" 4
  .IX Item "-fshort-enums"
  Allocate to an \f(CW\*(C`enum\*(C'\fR type only as many bytes as it needs for the
  declared range of possible values.  Specifically, the \f(CW\*(C`enum\*(C'\fR type
--- 19087,19111 ----
  \&\fBWarning:\fR code compiled with the \fB\-fpcc\-struct\-return\fR
  switch is not binary compatible with code compiled with the
  \&\fB\-freg\-struct\-return\fR switch.
! Use it to conform to a non\-default application binary interface.
! .IP \fB\-freg\-struct\-return\fR 4
  .IX Item "-freg-struct-return"
  Return \f(CW\*(C`struct\*(C'\fR and \f(CW\*(C`union\*(C'\fR values in registers when possible.
  This is more efficient for small structures than
  \&\fB\-fpcc\-struct\-return\fR.
  .Sp
  If you specify neither \fB\-fpcc\-struct\-return\fR nor
! \&\fB\-freg\-struct\-return\fR, GCC defaults to whichever convention is
! standard for the target.  If there is no standard convention, GCC
! defaults to \fB\-fpcc\-struct\-return\fR, except on targets where GCC is
  the principal compiler.  In those cases, we can choose the standard, and
  we chose the more efficient register return alternative.
  .Sp
  \&\fBWarning:\fR code compiled with the \fB\-freg\-struct\-return\fR
  switch is not binary compatible with code compiled with the
  \&\fB\-fpcc\-struct\-return\fR switch.
! Use it to conform to a non\-default application binary interface.
! .IP \fB\-fshort\-enums\fR 4
  .IX Item "-fshort-enums"
  Allocate to an \f(CW\*(C`enum\*(C'\fR type only as many bytes as it needs for the
  declared range of possible values.  Specifically, the \f(CW\*(C`enum\*(C'\fR type
*************** is equivalent to the smallest integer ty
*** 19178,19196 ****
  This option has no effect for an enumeration type with a fixed underlying
  type.
  .Sp
! \&\fBWarning:\fR the \fB\-fshort\-enums\fR switch causes \s-1GCC\s0 to generate
  code that is not binary compatible with code generated without that switch.
! Use it to conform to a non-default application binary interface.
! .IP "\fB\-fshort\-wchar\fR" 4
  .IX Item "-fshort-wchar"
  Override the underlying type for \f(CW\*(C`wchar_t\*(C'\fR to be \f(CW\*(C`short
  unsigned int\*(C'\fR instead of the default for the target.  This option is
! useful for building programs to run under \s-1WINE.\s0
  .Sp
! \&\fBWarning:\fR the \fB\-fshort\-wchar\fR switch causes \s-1GCC\s0 to generate
  code that is not binary compatible with code generated without that switch.
! Use it to conform to a non-default application binary interface.
! .IP "\fB\-fcommon\fR" 4
  .IX Item "-fcommon"
  In C code, this option controls the placement of global variables
  defined without an initializer, known as \fItentative definitions\fR
--- 19113,19131 ----
  This option has no effect for an enumeration type with a fixed underlying
  type.
  .Sp
! \&\fBWarning:\fR the \fB\-fshort\-enums\fR switch causes GCC to generate
  code that is not binary compatible with code generated without that switch.
! Use it to conform to a non\-default application binary interface.
! .IP \fB\-fshort\-wchar\fR 4
  .IX Item "-fshort-wchar"
  Override the underlying type for \f(CW\*(C`wchar_t\*(C'\fR to be \f(CW\*(C`short
  unsigned int\*(C'\fR instead of the default for the target.  This option is
! useful for building programs to run under WINE.
  .Sp
! \&\fBWarning:\fR the \fB\-fshort\-wchar\fR switch causes GCC to generate
  code that is not binary compatible with code generated without that switch.
! Use it to conform to a non\-default application binary interface.
! .IP \fB\-fcommon\fR 4
  .IX Item "-fcommon"
  In C code, this option controls the placement of global variables
  defined without an initializer, known as \fItentative definitions\fR
*************** in the C standard.  Tentative definition
*** 19198,19225 ****
  of a variable with the \f(CW\*(C`extern\*(C'\fR keyword, which do not allocate storage.
  .Sp
  The default is \fB\-fno\-common\fR, which specifies that the compiler places
! uninitialized global variables in the \s-1BSS\s0 section of the object file.
  This inhibits the merging of tentative definitions by the linker so you get a
! multiple-definition error if the same variable is accidentally defined in more
  than one compilation unit.
  .Sp
  The \fB\-fcommon\fR places uninitialized global variables in a common block.
  This allows the linker to resolve all tentative definitions of the same variable
! in different compilation units to the same object, or to a non-tentative
! definition.  This behavior is inconsistent with \*(C+, and on many targets implies
  a speed and code size penalty on global variable references.  It is mainly
  useful to enable legacy code to link without errors.
! .IP "\fB\-fno\-ident\fR" 4
  .IX Item "-fno-ident"
  Ignore the \f(CW\*(C`#ident\*(C'\fR directive.
! .IP "\fB\-finhibit\-size\-directive\fR" 4
  .IX Item "-finhibit-size-directive"
! Don't output a \f(CW\*(C`.size\*(C'\fR assembler directive, or anything else that
  would cause trouble if the function is split in the middle, and the
  two halves are placed at locations far apart in memory.  This option is
  used when compiling \fIcrtstuff.c\fR; you should not need to use it
  for anything else.
! .IP "\fB\-fverbose\-asm\fR" 4
  .IX Item "-fverbose-asm"
  Put extra commentary information in the generated assembly code to
  make it more readable.  This option is generally only of use to those
--- 19133,19160 ----
  of a variable with the \f(CW\*(C`extern\*(C'\fR keyword, which do not allocate storage.
  .Sp
  The default is \fB\-fno\-common\fR, which specifies that the compiler places
! uninitialized global variables in the BSS section of the object file.
  This inhibits the merging of tentative definitions by the linker so you get a
! multiple\-definition error if the same variable is accidentally defined in more
  than one compilation unit.
  .Sp
  The \fB\-fcommon\fR places uninitialized global variables in a common block.
  This allows the linker to resolve all tentative definitions of the same variable
! in different compilation units to the same object, or to a non\-tentative
! definition.  This behavior is inconsistent with C++, and on many targets implies
  a speed and code size penalty on global variable references.  It is mainly
  useful to enable legacy code to link without errors.
! .IP \fB\-fno\-ident\fR 4
  .IX Item "-fno-ident"
  Ignore the \f(CW\*(C`#ident\*(C'\fR directive.
! .IP \fB\-finhibit\-size\-directive\fR 4
  .IX Item "-finhibit-size-directive"
! Don\*(Aqt output a \f(CW\*(C`.size\*(C'\fR assembler directive, or anything else that
  would cause trouble if the function is split in the middle, and the
  two halves are placed at locations far apart in memory.  This option is
  used when compiling \fIcrtstuff.c\fR; you should not need to use it
  for anything else.
! .IP \fB\-fverbose\-asm\fR 4
  .IX Item "-fverbose-asm"
  Put extra commentary information in the generated assembly code to
  make it more readable.  This option is generally only of use to those
*************** files.
*** 19232,19244 ****
  .Sp
  The added comments include:
  .RS 4
! .IP "*" 4
! information on the compiler version and command-line options,
! .IP "*" 4
  the source code lines associated with the assembly instructions,
! in the form \s-1FILENAME:LINENUMBER:CONTENT OF LINE,\s0
! .IP "*" 4
! hints on which high-level expressions correspond to
  the various assembly instruction operands.
  .RE
  .RS 4
--- 19167,19179 ----
  .Sp
  The added comments include:
  .RS 4
! .IP * 4
! information on the compiler version and command\-line options,
! .IP * 4
  the source code lines associated with the assembly instructions,
! in the form FILENAME:LINENUMBER:CONTENT OF LINE,
! .IP * 4
! hints on which high\-level expressions correspond to
  the various assembly instruction operands.
  .RE
  .RS 4
*************** gives output similar to this:
*** 19309,19413 ****
  The comments are intended for humans rather than machines and hence the
  precise format of the comments is subject to change.
  .RE
! .IP "\fB\-frecord\-gcc\-switches\fR" 4
  .IX Item "-frecord-gcc-switches"
  This switch causes the command line used to invoke the
  compiler to be recorded into the object file that is being created.
  This switch is only implemented on some targets and the exact format
  of the recording is target and binary file format dependent, but it
! usually takes the form of a section containing \s-1ASCII\s0 text.  This
  switch is related to the \fB\-fverbose\-asm\fR switch, but that
  switch only records information in the assembler output file as
  comments, so it never reaches the object file.
  See also \fB\-grecord\-gcc\-switches\fR for another
  way of storing compiler options into the object file.
! .IP "\fB\-fpic\fR" 4
  .IX Item "-fpic"
! Generate position-independent code (\s-1PIC\s0) suitable for use in a shared
  library, if supported for the target machine.  Such code accesses all
! constant addresses through a global offset table (\s-1GOT\s0).  The dynamic
! loader resolves the \s-1GOT\s0 entries when the program starts (the dynamic
! loader is not part of \s-1GCC\s0; it is part of the operating system).  If
! the \s-1GOT\s0 size for the linked executable exceeds a machine-specific
  maximum size, you get an error message from the linker indicating that
  \&\fB\-fpic\fR does not work; in that case, recompile with \fB\-fPIC\fR
! instead.  (These maximums are 8k on the \s-1SPARC,\s0 28k on AArch64 and 32k
! on the m68k and \s-1RS/6000.\s0  The x86 has no such limit.)
  .Sp
! Position-independent code requires special support, and therefore works
! only on certain machines.  For the x86, \s-1GCC\s0 supports \s-1PIC\s0 for System V
! but not for the Sun 386i.  Code generated for the \s-1IBM RS/6000\s0 is always
! position-independent.
  .Sp
  When this flag is set, the macros \f(CW\*(C`_\|_pic_\|_\*(C'\fR and \f(CW\*(C`_\|_PIC_\|_\*(C'\fR
  are defined to 1.
! .IP "\fB\-fPIC\fR" 4
  .IX Item "-fPIC"
! If supported for the target machine, emit position-independent code,
  suitable for dynamic linking and avoiding any limit on the size of the
  global offset table.  This option makes a difference on AArch64, m68k,
! PowerPC and \s-1SPARC.\s0
  .Sp
! Position-independent code requires special support, and therefore works
  only on certain machines.
  .Sp
  When this flag is set, the macros \f(CW\*(C`_\|_pic_\|_\*(C'\fR and \f(CW\*(C`_\|_PIC_\|_\*(C'\fR
  are defined to 2.
! .IP "\fB\-fpie\fR" 4
  .IX Item "-fpie"
  .PD 0
! .IP "\fB\-fPIE\fR" 4
  .IX Item "-fPIE"
  .PD
  These options are similar to \fB\-fpic\fR and \fB\-fPIC\fR, but the
! generated position-independent code can be only linked into executables.
  Usually these options are used to compile code that will be linked using
! the \fB\-pie\fR \s-1GCC\s0 option.
  .Sp
  \&\fB\-fpie\fR and \fB\-fPIE\fR both define the macros
  \&\f(CW\*(C`_\|_pie_\|_\*(C'\fR and \f(CW\*(C`_\|_PIE_\|_\*(C'\fR.  The macros have the value 1
  for \fB\-fpie\fR and 2 for \fB\-fPIE\fR.
! .IP "\fB\-fno\-plt\fR" 4
  .IX Item "-fno-plt"
! Do not use the \s-1PLT\s0 for external function calls in position-independent code.
! Instead, load the callee address at call sites from the \s-1GOT\s0 and branch to it.
! This leads to more efficient code by eliminating \s-1PLT\s0 stubs and exposing
! \&\s-1GOT\s0 loads to optimizations.  On architectures such as 32\-bit x86 where
! \&\s-1PLT\s0 stubs expect the \s-1GOT\s0 pointer in a specific register, this gives more
  register allocation freedom to the compiler.
! Lazy binding requires use of the \s-1PLT\s0;
  with \fB\-fno\-plt\fR all external symbols are resolved at load time.
  .Sp
  Alternatively, the function attribute \f(CW\*(C`noplt\*(C'\fR can be used to avoid calls
! through the \s-1PLT\s0 for specific external functions.
  .Sp
! In position-dependent code, a few targets also convert calls to
! functions that are marked to not use the \s-1PLT\s0 to use the \s-1GOT\s0 instead.
! .IP "\fB\-fno\-jump\-tables\fR" 4
  .IX Item "-fno-jump-tables"
  Do not use jump tables for switch statements even where it would be
  more efficient than other code generation strategies.  This option is
  of use in conjunction with \fB\-fpic\fR or \fB\-fPIC\fR for
  building code that forms part of a dynamic linker and cannot
  reference the address of a jump table.  On some targets, jump tables
! do not require a \s-1GOT\s0 and this option is not needed.
! .IP "\fB\-fno\-bit\-tests\fR" 4
  .IX Item "-fno-bit-tests"
  Do not use bit tests for switch statements even where it would be
  more efficient than other code generation strategies.
! .IP "\fB\-ffixed\-\fR\fIreg\fR" 4
  .IX Item "-ffixed-reg"
  Treat the register named \fIreg\fR as a fixed register; generated code
  should never refer to it (except perhaps as a stack pointer, frame
  pointer or in some other fixed role).
  .Sp
  \&\fIreg\fR must be the name of a register.  The register names accepted
! are machine-specific and are defined in the \f(CW\*(C`REGISTER_NAMES\*(C'\fR
  macro in the machine description macro file.
  .Sp
  This flag does not have a negative form, because it specifies a
! three-way choice.
! .IP "\fB\-fcall\-used\-\fR\fIreg\fR" 4
  .IX Item "-fcall-used-reg"
  Treat the register named \fIreg\fR as an allocable register that is
  clobbered by function calls.  It may be allocated for temporaries or
--- 19244,19348 ----
  The comments are intended for humans rather than machines and hence the
  precise format of the comments is subject to change.
  .RE
! .IP \fB\-frecord\-gcc\-switches\fR 4
  .IX Item "-frecord-gcc-switches"
  This switch causes the command line used to invoke the
  compiler to be recorded into the object file that is being created.
  This switch is only implemented on some targets and the exact format
  of the recording is target and binary file format dependent, but it
! usually takes the form of a section containing ASCII text.  This
  switch is related to the \fB\-fverbose\-asm\fR switch, but that
  switch only records information in the assembler output file as
  comments, so it never reaches the object file.
  See also \fB\-grecord\-gcc\-switches\fR for another
  way of storing compiler options into the object file.
! .IP \fB\-fpic\fR 4
  .IX Item "-fpic"
! Generate position\-independent code (PIC) suitable for use in a shared
  library, if supported for the target machine.  Such code accesses all
! constant addresses through a global offset table (GOT).  The dynamic
! loader resolves the GOT entries when the program starts (the dynamic
! loader is not part of GCC; it is part of the operating system).  If
! the GOT size for the linked executable exceeds a machine\-specific
  maximum size, you get an error message from the linker indicating that
  \&\fB\-fpic\fR does not work; in that case, recompile with \fB\-fPIC\fR
! instead.  (These maximums are 8k on the SPARC, 28k on AArch64 and 32k
! on the m68k and RS/6000.  The x86 has no such limit.)
  .Sp
! Position\-independent code requires special support, and therefore works
! only on certain machines.  For the x86, GCC supports PIC for System V
! but not for the Sun 386i.  Code generated for the IBM RS/6000 is always
! position\-independent.
  .Sp
  When this flag is set, the macros \f(CW\*(C`_\|_pic_\|_\*(C'\fR and \f(CW\*(C`_\|_PIC_\|_\*(C'\fR
  are defined to 1.
! .IP \fB\-fPIC\fR 4
  .IX Item "-fPIC"
! If supported for the target machine, emit position\-independent code,
  suitable for dynamic linking and avoiding any limit on the size of the
  global offset table.  This option makes a difference on AArch64, m68k,
! PowerPC and SPARC.
  .Sp
! Position\-independent code requires special support, and therefore works
  only on certain machines.
  .Sp
  When this flag is set, the macros \f(CW\*(C`_\|_pic_\|_\*(C'\fR and \f(CW\*(C`_\|_PIC_\|_\*(C'\fR
  are defined to 2.
! .IP \fB\-fpie\fR 4
  .IX Item "-fpie"
  .PD 0
! .IP \fB\-fPIE\fR 4
  .IX Item "-fPIE"
  .PD
  These options are similar to \fB\-fpic\fR and \fB\-fPIC\fR, but the
! generated position\-independent code can be only linked into executables.
  Usually these options are used to compile code that will be linked using
! the \fB\-pie\fR GCC option.
  .Sp
  \&\fB\-fpie\fR and \fB\-fPIE\fR both define the macros
  \&\f(CW\*(C`_\|_pie_\|_\*(C'\fR and \f(CW\*(C`_\|_PIE_\|_\*(C'\fR.  The macros have the value 1
  for \fB\-fpie\fR and 2 for \fB\-fPIE\fR.
! .IP \fB\-fno\-plt\fR 4
  .IX Item "-fno-plt"
! Do not use the PLT for external function calls in position\-independent code.
! Instead, load the callee address at call sites from the GOT and branch to it.
! This leads to more efficient code by eliminating PLT stubs and exposing
! GOT loads to optimizations.  On architectures such as 32\-bit x86 where
! PLT stubs expect the GOT pointer in a specific register, this gives more
  register allocation freedom to the compiler.
! Lazy binding requires use of the PLT;
  with \fB\-fno\-plt\fR all external symbols are resolved at load time.
  .Sp
  Alternatively, the function attribute \f(CW\*(C`noplt\*(C'\fR can be used to avoid calls
! through the PLT for specific external functions.
  .Sp
! In position\-dependent code, a few targets also convert calls to
! functions that are marked to not use the PLT to use the GOT instead.
! .IP \fB\-fno\-jump\-tables\fR 4
  .IX Item "-fno-jump-tables"
  Do not use jump tables for switch statements even where it would be
  more efficient than other code generation strategies.  This option is
  of use in conjunction with \fB\-fpic\fR or \fB\-fPIC\fR for
  building code that forms part of a dynamic linker and cannot
  reference the address of a jump table.  On some targets, jump tables
! do not require a GOT and this option is not needed.
! .IP \fB\-fno\-bit\-tests\fR 4
  .IX Item "-fno-bit-tests"
  Do not use bit tests for switch statements even where it would be
  more efficient than other code generation strategies.
! .IP \fB\-ffixed\-\fR\fIreg\fR 4
  .IX Item "-ffixed-reg"
  Treat the register named \fIreg\fR as a fixed register; generated code
  should never refer to it (except perhaps as a stack pointer, frame
  pointer or in some other fixed role).
  .Sp
  \&\fIreg\fR must be the name of a register.  The register names accepted
! are machine\-specific and are defined in the \f(CW\*(C`REGISTER_NAMES\*(C'\fR
  macro in the machine description macro file.
  .Sp
  This flag does not have a negative form, because it specifies a
! three\-way choice.
! .IP \fB\-fcall\-used\-\fR\fIreg\fR 4
  .IX Item "-fcall-used-reg"
  Treat the register named \fIreg\fR as an allocable register that is
  clobbered by function calls.  It may be allocated for temporaries or
*************** do not save and restore the register \fI
*** 19416,19426 ****
  .Sp
  It is an error to use this flag with the frame pointer or stack pointer.
  Use of this flag for other registers that have fixed pervasive roles in
! the machine's execution model produces disastrous results.
  .Sp
  This flag does not have a negative form, because it specifies a
! three-way choice.
! .IP "\fB\-fcall\-saved\-\fR\fIreg\fR" 4
  .IX Item "-fcall-saved-reg"
  Treat the register named \fIreg\fR as an allocable register saved by
  functions.  It may be allocated even for temporaries or variables that
--- 19351,19361 ----
  .Sp
  It is an error to use this flag with the frame pointer or stack pointer.
  Use of this flag for other registers that have fixed pervasive roles in
! the machine\*(Aqs execution model produces disastrous results.
  .Sp
  This flag does not have a negative form, because it specifies a
! three\-way choice.
! .IP \fB\-fcall\-saved\-\fR\fIreg\fR 4
  .IX Item "-fcall-saved-reg"
  Treat the register named \fIreg\fR as an allocable register saved by
  functions.  It may be allocated even for temporaries or variables that
*************** the register \fIreg\fR if they use it.
*** 19429,19442 ****
  .Sp
  It is an error to use this flag with the frame pointer or stack pointer.
  Use of this flag for other registers that have fixed pervasive roles in
! the machine's execution model produces disastrous results.
  .Sp
  A different sort of disaster results from the use of this flag for
  a register in which function values may be returned.
  .Sp
  This flag does not have a negative form, because it specifies a
! three-way choice.
! .IP "\fB\-fpack\-struct[=\fR\fIn\fR\fB]\fR" 4
  .IX Item "-fpack-struct[=n]"
  Without a value specified, pack all structure members together without
  holes.  When a value is specified (which must be a small power of two), pack
--- 19364,19377 ----
  .Sp
  It is an error to use this flag with the frame pointer or stack pointer.
  Use of this flag for other registers that have fixed pervasive roles in
! the machine\*(Aqs execution model produces disastrous results.
  .Sp
  A different sort of disaster results from the use of this flag for
  a register in which function values may be returned.
  .Sp
  This flag does not have a negative form, because it specifies a
! three\-way choice.
! .IP \fB\-fpack\-struct[=\fR\fIn\fR\fB]\fR 4
  .IX Item "-fpack-struct[=n]"
  Without a value specified, pack all structure members together without
  holes.  When a value is specified (which must be a small power of two), pack
*************** structure members according to this valu
*** 19444,19479 ****
  alignment (that is, objects with default alignment requirements larger than
  this are output potentially unaligned at the next fitting location.
  .Sp
! \&\fBWarning:\fR the \fB\-fpack\-struct\fR switch causes \s-1GCC\s0 to generate
  code that is not binary compatible with code generated without that switch.
  Additionally, it makes the code suboptimal.
! Use it to conform to a non-default application binary interface.
! .IP "\fB\-fleading\-underscore\fR" 4
  .IX Item "-fleading-underscore"
  This option and its counterpart, \fB\-fno\-leading\-underscore\fR, forcibly
  change the way C symbols are represented in the object file.  One use
  is to help link with legacy assembly code.
  .Sp
! \&\fBWarning:\fR the \fB\-fleading\-underscore\fR switch causes \s-1GCC\s0 to
  generate code that is not binary compatible with code generated without that
! switch.  Use it to conform to a non-default application binary interface.
  Not all targets provide complete support for this switch.
! .IP "\fB\-ftls\-model=\fR\fImodel\fR" 4
  .IX Item "-ftls-model=model"
! Alter the thread-local storage model to be used.
! The \fImodel\fR argument should be one of \fBglobal-dynamic\fR,
! \&\fBlocal-dynamic\fR, \fBinitial-exec\fR or \fBlocal-exec\fR.
  Note that the choice is subject to optimization: the compiler may use
  a more efficient model for symbols not visible outside of the translation
  unit, or if \fB\-fpic\fR is not given on the command line.
  .Sp
! The default without \fB\-fpic\fR is \fBinitial-exec\fR; with
! \&\fB\-fpic\fR the default is \fBglobal-dynamic\fR.
! .IP "\fB\-ftrampolines\fR" 4
  .IX Item "-ftrampolines"
  For targets that normally need trampolines for nested functions, always
  generate them instead of using descriptors.  Otherwise, for targets that
! do not need them, like for example HP-PA or \s-1IA\-64,\s0 do nothing.
  .Sp
  A trampoline is a small piece of code that is created at run time on the
  stack when the address of a nested function is taken, and is used to call
--- 19379,19414 ----
  alignment (that is, objects with default alignment requirements larger than
  this are output potentially unaligned at the next fitting location.
  .Sp
! \&\fBWarning:\fR the \fB\-fpack\-struct\fR switch causes GCC to generate
  code that is not binary compatible with code generated without that switch.
  Additionally, it makes the code suboptimal.
! Use it to conform to a non\-default application binary interface.
! .IP \fB\-fleading\-underscore\fR 4
  .IX Item "-fleading-underscore"
  This option and its counterpart, \fB\-fno\-leading\-underscore\fR, forcibly
  change the way C symbols are represented in the object file.  One use
  is to help link with legacy assembly code.
  .Sp
! \&\fBWarning:\fR the \fB\-fleading\-underscore\fR switch causes GCC to
  generate code that is not binary compatible with code generated without that
! switch.  Use it to conform to a non\-default application binary interface.
  Not all targets provide complete support for this switch.
! .IP \fB\-ftls\-model=\fR\fImodel\fR 4
  .IX Item "-ftls-model=model"
! Alter the thread\-local storage model to be used.
! The \fImodel\fR argument should be one of \fBglobal\-dynamic\fR,
! \&\fBlocal\-dynamic\fR, \fBinitial\-exec\fR or \fBlocal\-exec\fR.
  Note that the choice is subject to optimization: the compiler may use
  a more efficient model for symbols not visible outside of the translation
  unit, or if \fB\-fpic\fR is not given on the command line.
  .Sp
! The default without \fB\-fpic\fR is \fBinitial\-exec\fR; with
! \&\fB\-fpic\fR the default is \fBglobal\-dynamic\fR.
! .IP \fB\-ftrampolines\fR 4
  .IX Item "-ftrampolines"
  For targets that normally need trampolines for nested functions, always
  generate them instead of using descriptors.  Otherwise, for targets that
! do not need them, like for example HP\-PA or IA\-64, do nothing.
  .Sp
  A trampoline is a small piece of code that is created at run time on the
  stack when the address of a nested function is taken, and is used to call
*************** writing, \fB\-fno\-trampolines\fR is ena
*** 19488,19501 ****
  .Sp
  Moreover, code compiled with \fB\-ftrampolines\fR and code compiled with
  \&\fB\-fno\-trampolines\fR are not binary compatible if nested functions are
! present.  This option must therefore be used on a program-wide basis and be
  manipulated with extreme care.
  .Sp
  For languages other than Ada, the \f(CW\*(C`\-ftrampolines\*(C'\fR and
  \&\f(CW\*(C`\-fno\-trampolines\*(C'\fR options currently have no effect, and
  trampolines are always generated on platforms that need them
  for nested functions.
! .IP "\fB\-ftrampoline\-impl=\fR[\fBstack\fR|\fBheap\fR]" 4
  .IX Item "-ftrampoline-impl=[stack|heap]"
  By default, trampolines are generated on stack.  However, certain platforms
  (such as the Apple M1) do not permit an executable stack.  Compiling with
--- 19423,19436 ----
  .Sp
  Moreover, code compiled with \fB\-ftrampolines\fR and code compiled with
  \&\fB\-fno\-trampolines\fR are not binary compatible if nested functions are
! present.  This option must therefore be used on a program\-wide basis and be
  manipulated with extreme care.
  .Sp
  For languages other than Ada, the \f(CW\*(C`\-ftrampolines\*(C'\fR and
  \&\f(CW\*(C`\-fno\-trampolines\*(C'\fR options currently have no effect, and
  trampolines are always generated on platforms that need them
  for nested functions.
! .IP \fB\-ftrampoline\-impl=\fR[\fBstack\fR|\fBheap\fR] 4
  .IX Item "-ftrampoline-impl=[stack|heap]"
  By default, trampolines are generated on stack.  However, certain platforms
  (such as the Apple M1) do not permit an executable stack.  Compiling with
*************** By default, trampolines are generated on
*** 19504,19533 ****
  \&\f(CW\*(C`_\|_gcc_nested_func_ptr_deleted\*(C'\fR in order to allocate and
  deallocate trampoline space on the executable heap.  These functions are
  implemented in libgcc, and will only be provided on specific targets:
! x86_64 Darwin, x86_64 and aarch64 Linux.  \fI\s-1PLEASE NOTE\s0\fR: Heap
  trampolines are \fInot\fR guaranteed to be correctly deallocated if you
  \&\f(CW\*(C`setjmp\*(C'\fR, instantiate nested functions, and then \f(CW\*(C`longjmp\*(C'\fR back
  to a state prior to having allocated those nested functions.
! .IP "\fB\-fvisibility=\fR[\fBdefault\fR|\fBinternal\fR|\fBhidden\fR|\fBprotected\fR]" 4
  .IX Item "-fvisibility=[default|internal|hidden|protected]"
! Set the default \s-1ELF\s0 image symbol visibility to the specified option\-\-\-all
  symbols are marked with this unless overridden within the code.
  Using this feature can very substantially improve linking and
  load times of shared object libraries, produce more optimized
! code, provide near-perfect \s-1API\s0 export and prevent symbol clashes.
  It is \fBstrongly\fR recommended that you use this in any shared objects
  you distribute.
  .Sp
  Despite the nomenclature, \fBdefault\fR always means public; i.e.,
  available to be linked against from outside the shared object.
! \&\fBprotected\fR and \fBinternal\fR are pretty useless in real-world
  usage so the only other commonly used option is \fBhidden\fR.
! The default if \fB\-fvisibility\fR isn't specified is
  \&\fBdefault\fR, i.e., make every symbol public.
  .Sp
! A good explanation of the benefits offered by ensuring \s-1ELF\s0
! symbols have the correct visibility is given by \*(L"How To Write
! Shared Libraries\*(R" by Ulrich Drepper (which can be found at
  <\fBhttps://www.akkadia.org/drepper/\fR>)\-\-\-however a superior
  solution made possible by this option to marking things hidden when
  the default is public is to make the default hidden and mark things
--- 19439,19468 ----
  \&\f(CW\*(C`_\|_gcc_nested_func_ptr_deleted\*(C'\fR in order to allocate and
  deallocate trampoline space on the executable heap.  These functions are
  implemented in libgcc, and will only be provided on specific targets:
! x86_64 Darwin, x86_64 and aarch64 Linux.  \fIPLEASE NOTE\fR: Heap
  trampolines are \fInot\fR guaranteed to be correctly deallocated if you
  \&\f(CW\*(C`setjmp\*(C'\fR, instantiate nested functions, and then \f(CW\*(C`longjmp\*(C'\fR back
  to a state prior to having allocated those nested functions.
! .IP \fB\-fvisibility=\fR[\fBdefault\fR|\fBinternal\fR|\fBhidden\fR|\fBprotected\fR] 4
  .IX Item "-fvisibility=[default|internal|hidden|protected]"
! Set the default ELF image symbol visibility to the specified option\-\-\-all
  symbols are marked with this unless overridden within the code.
  Using this feature can very substantially improve linking and
  load times of shared object libraries, produce more optimized
! code, provide near\-perfect API export and prevent symbol clashes.
  It is \fBstrongly\fR recommended that you use this in any shared objects
  you distribute.
  .Sp
  Despite the nomenclature, \fBdefault\fR always means public; i.e.,
  available to be linked against from outside the shared object.
! \&\fBprotected\fR and \fBinternal\fR are pretty useless in real\-world
  usage so the only other commonly used option is \fBhidden\fR.
! The default if \fB\-fvisibility\fR isn\*(Aqt specified is
  \&\fBdefault\fR, i.e., make every symbol public.
  .Sp
! A good explanation of the benefits offered by ensuring ELF
! symbols have the correct visibility is given by "How To Write
! Shared Libraries" by Ulrich Drepper (which can be found at
  <\fBhttps://www.akkadia.org/drepper/\fR>)\-\-\-however a superior
  solution made possible by this option to marking things hidden when
  the default is public is to make the default hidden and mark things
*************** public.  This is the norm with DLLs on W
*** 19535,19541 ****
  and \f(CW\*(C`_\|_attribute_\|_ ((visibility("default")))\*(C'\fR instead of
  \&\f(CW\*(C`_\|_declspec(dllexport)\*(C'\fR you get almost identical semantics with
  identical syntax.  This is a great boon to those working with
! cross-platform projects.
  .Sp
  For those adding visibility support to existing code, you may find
  \&\f(CW\*(C`#pragma GCC visibility\*(C'\fR of use.  This works by you enclosing
--- 19470,19476 ----
  and \f(CW\*(C`_\|_attribute_\|_ ((visibility("default")))\*(C'\fR instead of
  \&\f(CW\*(C`_\|_declspec(dllexport)\*(C'\fR you get almost identical semantics with
  identical syntax.  This is a great boon to those working with
! cross\-platform projects.
  .Sp
  For those adding visibility support to existing code, you may find
  \&\f(CW\*(C`#pragma GCC visibility\*(C'\fR of use.  This works by you enclosing
*************** the declarations you wish to set visibil
*** 19543,19554 ****
  \&\f(CW\*(C`#pragma GCC visibility push(hidden)\*(C'\fR and
  \&\f(CW\*(C`#pragma GCC visibility pop\*(C'\fR.
  Bear in mind that symbol visibility should be viewed \fBas
! part of the \s-1API\s0 interface contract\fR and thus all new code should
  always specify visibility when it is not the default; i.e., declarations
! only for use within the local \s-1DSO\s0 should \fBalways\fR be marked explicitly
! as hidden as so to avoid \s-1PLT\s0 indirection overheads\-\-\-making this
! abundantly clear also aids readability and self-documentation of the code.
! Note that due to \s-1ISO \*(C+\s0 specification requirements, \f(CW\*(C`operator new\*(C'\fR and
  \&\f(CW\*(C`operator delete\*(C'\fR must always be of default visibility.
  .Sp
  Be aware that headers from outside your project, in particular system
--- 19478,19489 ----
  \&\f(CW\*(C`#pragma GCC visibility push(hidden)\*(C'\fR and
  \&\f(CW\*(C`#pragma GCC visibility pop\*(C'\fR.
  Bear in mind that symbol visibility should be viewed \fBas
! part of the API interface contract\fR and thus all new code should
  always specify visibility when it is not the default; i.e., declarations
! only for use within the local DSO should \fBalways\fR be marked explicitly
! as hidden as so to avoid PLT indirection overheads\-\-\-making this
! abundantly clear also aids readability and self\-documentation of the code.
! Note that due to ISO C++ specification requirements, \f(CW\*(C`operator new\*(C'\fR and
  \&\f(CW\*(C`operator delete\*(C'\fR must always be of default visibility.
  .Sp
  Be aware that headers from outside your project, in particular system
*************** before including any such headers.
*** 19560,19571 ****
  \&\f(CW\*(C`extern\*(C'\fR declarations are not affected by \fB\-fvisibility\fR, so
  a lot of code can be recompiled with \fB\-fvisibility=hidden\fR with
  no modifications.  However, this means that calls to \f(CW\*(C`extern\*(C'\fR
! functions with no explicit visibility use the \s-1PLT,\s0 so it is more
  effective to use \f(CW\*(C`_\|_attribute ((visibility))\*(C'\fR and/or
  \&\f(CW\*(C`#pragma GCC visibility\*(C'\fR to tell the compiler which \f(CW\*(C`extern\*(C'\fR
  declarations should be treated as hidden.
  .Sp
! Note that \fB\-fvisibility\fR does affect \*(C+ vague linkage
  entities. This means that, for instance, an exception class that is
  be thrown between DSOs must be explicitly marked with default
  visibility so that the \fBtype_info\fR nodes are unified between
--- 19495,19506 ----
  \&\f(CW\*(C`extern\*(C'\fR declarations are not affected by \fB\-fvisibility\fR, so
  a lot of code can be recompiled with \fB\-fvisibility=hidden\fR with
  no modifications.  However, this means that calls to \f(CW\*(C`extern\*(C'\fR
! functions with no explicit visibility use the PLT, so it is more
  effective to use \f(CW\*(C`_\|_attribute ((visibility))\*(C'\fR and/or
  \&\f(CW\*(C`#pragma GCC visibility\*(C'\fR to tell the compiler which \f(CW\*(C`extern\*(C'\fR
  declarations should be treated as hidden.
  .Sp
! Note that \fB\-fvisibility\fR does affect C++ vague linkage
  entities. This means that, for instance, an exception class that is
  be thrown between DSOs must be explicitly marked with default
  visibility so that the \fBtype_info\fR nodes are unified between
*************** the DSOs.
*** 19573,19624 ****
  .Sp
  An overview of these techniques, their benefits and how to use them
  is at <\fBhttps://gcc.gnu.org/wiki/Visibility\fR>.
! .IP "\fB\-fstrict\-volatile\-bitfields\fR" 4
  .IX Item "-fstrict-volatile-bitfields"
! This option should be used if accesses to volatile bit-fields (or other
  structure fields, although the compiler usually honors those types
  anyway) should use a single access of the width of the
! field's type, aligned to a natural alignment if possible.  For
! example, targets with memory-mapped peripheral registers might require
  all such accesses to be 16 bits wide; with this flag you can
! declare all peripheral bit-fields as \f(CW\*(C`unsigned short\*(C'\fR (assuming short
! is 16 bits on these targets) to force \s-1GCC\s0 to use 16\-bit accesses
  instead of, perhaps, a more efficient 32\-bit access.
  .Sp
  If this option is disabled, the compiler uses the most efficient
  instruction.  In the previous example, that might be a 32\-bit load
  instruction, even though that accesses bytes that do not contain
! any portion of the bit-field, or memory-mapped registers unrelated to
  the one being updated.
  .Sp
  In some cases, such as when the \f(CW\*(C`packed\*(C'\fR attribute is applied to a
  structure field, it may not be possible to access the field with a single
  read or write that is correctly aligned for the target machine.  In this
! case \s-1GCC\s0 falls back to generating multiple accesses rather than code that
  will fault or truncate the result at run time.
  .Sp
! Note:  Due to restrictions of the C/\*(C+11 memory model, write accesses are
! not allowed to touch non bit-field members.  It is therefore recommended
! to define all bits of the field's type as bit-field members.
  .Sp
  The default value of this option is determined by the application binary
  interface for the target processor.
! .IP "\fB\-fsync\-libcalls\fR" 4
  .IX Item "-fsync-libcalls"
! This option controls whether any out-of-line instance of the \f(CW\*(C`_\|_sync\*(C'\fR
! family of functions may be used to implement the \*(C+11 \f(CW\*(C`_\|_atomic\*(C'\fR
  family of functions.
  .Sp
  The default value of this option is enabled, thus the only useful form
  of the option is \fB\-fno\-sync\-libcalls\fR.  This option is used in
  the implementation of the \fIlibatomic\fR runtime library.
! .IP "\fB\-fzero\-init\-padding\-bits=\fR\fIvalue\fR" 4
  .IX Item "-fzero-init-padding-bits=value"
  Guarantee zero initialization of padding bits in automatic variable
  initializers.
  Certain languages guarantee zero initialization of padding bits in
  certain cases, e.g. C23 when using empty initializers (\f(CW\*(C`{}\*(C'\fR),
! or \*(C+ when using zero-initialization or C guarantees that fields
  not specified in an initializer have their padding bits zero initialized.
  This option allows to change when padding bits in initializers are
  guaranteed to be zero initialized.
--- 19508,19559 ----
  .Sp
  An overview of these techniques, their benefits and how to use them
  is at <\fBhttps://gcc.gnu.org/wiki/Visibility\fR>.
! .IP \fB\-fstrict\-volatile\-bitfields\fR 4
  .IX Item "-fstrict-volatile-bitfields"
! This option should be used if accesses to volatile bit\-fields (or other
  structure fields, although the compiler usually honors those types
  anyway) should use a single access of the width of the
! field\*(Aqs type, aligned to a natural alignment if possible.  For
! example, targets with memory\-mapped peripheral registers might require
  all such accesses to be 16 bits wide; with this flag you can
! declare all peripheral bit\-fields as \f(CW\*(C`unsigned short\*(C'\fR (assuming short
! is 16 bits on these targets) to force GCC to use 16\-bit accesses
  instead of, perhaps, a more efficient 32\-bit access.
  .Sp
  If this option is disabled, the compiler uses the most efficient
  instruction.  In the previous example, that might be a 32\-bit load
  instruction, even though that accesses bytes that do not contain
! any portion of the bit\-field, or memory\-mapped registers unrelated to
  the one being updated.
  .Sp
  In some cases, such as when the \f(CW\*(C`packed\*(C'\fR attribute is applied to a
  structure field, it may not be possible to access the field with a single
  read or write that is correctly aligned for the target machine.  In this
! case GCC falls back to generating multiple accesses rather than code that
  will fault or truncate the result at run time.
  .Sp
! Note:  Due to restrictions of the C/C++11 memory model, write accesses are
! not allowed to touch non bit\-field members.  It is therefore recommended
! to define all bits of the field\*(Aqs type as bit\-field members.
  .Sp
  The default value of this option is determined by the application binary
  interface for the target processor.
! .IP \fB\-fsync\-libcalls\fR 4
  .IX Item "-fsync-libcalls"
! This option controls whether any out\-of\-line instance of the \f(CW\*(C`_\|_sync\*(C'\fR
! family of functions may be used to implement the C++11 \f(CW\*(C`_\|_atomic\*(C'\fR
  family of functions.
  .Sp
  The default value of this option is enabled, thus the only useful form
  of the option is \fB\-fno\-sync\-libcalls\fR.  This option is used in
  the implementation of the \fIlibatomic\fR runtime library.
! .IP \fB\-fzero\-init\-padding\-bits=\fR\fIvalue\fR 4
  .IX Item "-fzero-init-padding-bits=value"
  Guarantee zero initialization of padding bits in automatic variable
  initializers.
  Certain languages guarantee zero initialization of padding bits in
  certain cases, e.g. C23 when using empty initializers (\f(CW\*(C`{}\*(C'\fR),
! or C++ when using zero\-initialization or C guarantees that fields
  not specified in an initializer have their padding bits zero initialized.
  This option allows to change when padding bits in initializers are
  guaranteed to be zero initialized.
*************** if the initializer of an union is empty
*** 19640,19646 ****
  are zero initialized) or if the initialized member of the union is
  smaller than the size of the union (in that case guarantees padding
  bits outside of the initialized member to be zero initialized).
! This was the \s-1GCC\s0 behavior before \s-1GCC 15\s0 and in the above example guarantees
  zero initialization of last \f(CW\*(C`sizeof (unsigned long long) \- 1\*(C'\fR
  bytes in the union.
  .Sp
--- 19575,19581 ----
  are zero initialized) or if the initialized member of the union is
  smaller than the size of the union (in that case guarantees padding
  bits outside of the initialized member to be zero initialized).
! This was the GCC behavior before GCC 15 and in the above example guarantees
  zero initialization of last \f(CW\*(C`sizeof (unsigned long long) \- 1\*(C'\fR
  bytes in the union.
  .Sp
*************** bytes in the union.
*** 19648,19666 ****
  zero initialization of padding bits of other aggregates, so
  the padding in between \f(CW\*(C`b.a\*(C'\fR and \f(CW\*(C`b.b\*(C'\fR (if any) and
  tail padding in the structure (if any).
! .SS "\s-1GCC\s0 Developer Options"
  .IX Subsection "GCC Developer Options"
! This section describes command-line options that are primarily of
! interest to \s-1GCC\s0 developers, including options to support compiler
! testing and investigation of compiler bugs and compile-time
  performance problems.  This includes options that produce debug dumps
  at various points in the compilation; that print statistics such as
! memory use and execution time; and that print information about \s-1GCC\s0's
  configuration, such as where it searches for libraries.  You should
  rarely need to use any of these options for ordinary compilation and
  linking tasks.
  .PP
! Many developer options that cause \s-1GCC\s0 to dump output to a file take an
  optional \fB=\fR\fIfilename\fR suffix. You can specify \fBstdout\fR
  or \fB\-\fR to dump to standard output, and \fBstderr\fR for standard
  error.
--- 19583,19601 ----
  zero initialization of padding bits of other aggregates, so
  the padding in between \f(CW\*(C`b.a\*(C'\fR and \f(CW\*(C`b.b\*(C'\fR (if any) and
  tail padding in the structure (if any).
! .SS "GCC Developer Options"
  .IX Subsection "GCC Developer Options"
! This section describes command\-line options that are primarily of
! interest to GCC developers, including options to support compiler
! testing and investigation of compiler bugs and compile\-time
  performance problems.  This includes options that produce debug dumps
  at various points in the compilation; that print statistics such as
! memory use and execution time; and that print information about GCC\*(Aqs
  configuration, such as where it searches for libraries.  You should
  rarely need to use any of these options for ordinary compilation and
  linking tasks.
  .PP
! Many developer options that cause GCC to dump output to a file take an
  optional \fB=\fR\fIfilename\fR suffix. You can specify \fBstdout\fR
  or \fB\-\fR to dump to standard output, and \fBstderr\fR for standard
  error.
*************** phase letter, and pass name.  The base d
*** 19671,19694 ****
  output file produced by the compiler if explicitly specified and not
  an executable; otherwise it is the source file name.
  The pass number is determined by the order passes are registered with
! the compiler's pass manager.
  This is generally the same as the order of execution, but passes
! registered by plugins, target-specific passes, or passes that are
  otherwise registered late are numbered higher than the pass named
  \&\fBfinal\fR, even if they are executed earlier.  The phase letter is
! one of \fBi\fR (inter-procedural analysis), \fBl\fR
! (language-specific), \fBr\fR (\s-1RTL\s0), or \fBt\fR (tree).
  The files are created in the directory of the output file.
! .IP "\fB\-fcallgraph\-info\fR" 4
  .IX Item "-fcallgraph-info"
  .PD 0
! .IP "\fB\-fcallgraph\-info=\fR\fI\s-1MARKERS\s0\fR" 4
  .IX Item "-fcallgraph-info=MARKERS"
  .PD
  Makes the compiler output callgraph information for the program, on a
! per-object-file basis.  The information is generated in the common \s-1VCG\s0
! format.  It can be decorated with additional, per-node and/or per-edge
! information, if a list of comma-separated markers is additionally
  specified.  When the \f(CW\*(C`su\*(C'\fR marker is specified, the callgraph is
  decorated with stack usage information; it is equivalent to
  \&\fB\-fstack\-usage\fR.  When the \f(CW\*(C`da\*(C'\fR marker is specified, the
--- 19606,19629 ----
  output file produced by the compiler if explicitly specified and not
  an executable; otherwise it is the source file name.
  The pass number is determined by the order passes are registered with
! the compiler\*(Aqs pass manager.
  This is generally the same as the order of execution, but passes
! registered by plugins, target\-specific passes, or passes that are
  otherwise registered late are numbered higher than the pass named
  \&\fBfinal\fR, even if they are executed earlier.  The phase letter is
! one of \fBi\fR (inter\-procedural analysis), \fBl\fR
! (language\-specific), \fBr\fR (RTL), or \fBt\fR (tree).
  The files are created in the directory of the output file.
! .IP \fB\-fcallgraph\-info\fR 4
  .IX Item "-fcallgraph-info"
  .PD 0
! .IP \fB\-fcallgraph\-info=\fR\fIMARKERS\fR 4
  .IX Item "-fcallgraph-info=MARKERS"
  .PD
  Makes the compiler output callgraph information for the program, on a
! per\-object\-file basis.  The information is generated in the common VCG
! format.  It can be decorated with additional, per\-node and/or per\-edge
! information, if a list of comma\-separated markers is additionally
  specified.  When the \f(CW\*(C`su\*(C'\fR marker is specified, the callgraph is
  decorated with stack usage information; it is equivalent to
  \&\fB\-fstack\-usage\fR.  When the \f(CW\*(C`da\*(C'\fR marker is specified, the
*************** callgraph is decorated with information
*** 19696,19714 ****
  objects.
  .Sp
  When compiling with \fB\-flto\fR, no callgraph information is output
! along with the object file.  At \s-1LTO\s0 link time, \fB\-fcallgraph\-info\fR
  may generate multiple callgraph information files next to intermediate
! \&\s-1LTO\s0 output files.
! .IP "\fB\-d\fR\fIletters\fR" 4
  .IX Item "-dletters"
  .PD 0
! .IP "\fB\-fdump\-rtl\-\fR\fIpass\fR" 4
  .IX Item "-fdump-rtl-pass"
! .IP "\fB\-fdump\-rtl\-\fR\fIpass\fR\fB=\fR\fIfilename\fR" 4
  .IX Item "-fdump-rtl-pass=filename"
  .PD
  Says to make debugging dumps during compilation at times specified by
! \&\fIletters\fR.  This is used for debugging the RTL-based passes of the
  compiler.
  .Sp
  Some \fB\-d\fR\fIletters\fR switches have different meaning when
--- 19631,19649 ----
  objects.
  .Sp
  When compiling with \fB\-flto\fR, no callgraph information is output
! along with the object file.  At LTO link time, \fB\-fcallgraph\-info\fR
  may generate multiple callgraph information files next to intermediate
! LTO output files.
! .IP \fB\-d\fR\fIletters\fR 4
  .IX Item "-dletters"
  .PD 0
! .IP \fB\-fdump\-rtl\-\fR\fIpass\fR 4
  .IX Item "-fdump-rtl-pass"
! .IP \fB\-fdump\-rtl\-\fR\fIpass\fR\fB=\fR\fIfilename\fR 4
  .IX Item "-fdump-rtl-pass=filename"
  .PD
  Says to make debugging dumps during compilation at times specified by
! \&\fIletters\fR.  This is used for debugging the RTL\-based passes of the
  compiler.
  .Sp
  Some \fB\-d\fR\fIletters\fR switches have different meaning when
*************** Debug dumps can be enabled with a \fB\-f
*** 19718,20023 ****
  \&\fB\-d\fR option \fIletters\fR.  Here are the possible
  letters for use in \fIpass\fR and \fIletters\fR, and their meanings:
  .RS 4
! .IP "\fB\-fdump\-rtl\-alignments\fR" 4
  .IX Item "-fdump-rtl-alignments"
  Dump after branch alignments have been computed.
! .IP "\fB\-fdump\-rtl\-asmcons\fR" 4
  .IX Item "-fdump-rtl-asmcons"
  Dump after fixing rtl statements that have unsatisfied in/out constraints.
! .IP "\fB\-fdump\-rtl\-auto_inc_dec\fR" 4
  .IX Item "-fdump-rtl-auto_inc_dec"
! Dump after auto-inc-dec discovery.  This pass is only run on
  architectures that have auto inc or auto dec instructions.
! .IP "\fB\-fdump\-rtl\-barriers\fR" 4
  .IX Item "-fdump-rtl-barriers"
  Dump after cleaning up the barrier instructions.
! .IP "\fB\-fdump\-rtl\-bbpart\fR" 4
  .IX Item "-fdump-rtl-bbpart"
  Dump after partitioning hot and cold basic blocks.
! .IP "\fB\-fdump\-rtl\-bbro\fR" 4
  .IX Item "-fdump-rtl-bbro"
  Dump after block reordering.
! .IP "\fB\-fdump\-rtl\-btl1\fR" 4
  .IX Item "-fdump-rtl-btl1"
  .PD 0
! .IP "\fB\-fdump\-rtl\-btl2\fR" 4
  .IX Item "-fdump-rtl-btl2"
  .PD
  \&\fB\-fdump\-rtl\-btl1\fR and \fB\-fdump\-rtl\-btl2\fR enable dumping
  after the two branch
  target load optimization passes.
! .IP "\fB\-fdump\-rtl\-bypass\fR" 4
  .IX Item "-fdump-rtl-bypass"
  Dump after jump bypassing and control flow optimizations.
! .IP "\fB\-fdump\-rtl\-combine\fR" 4
  .IX Item "-fdump-rtl-combine"
! Dump after the \s-1RTL\s0 instruction combination pass.
! .IP "\fB\-fdump\-rtl\-compgotos\fR" 4
  .IX Item "-fdump-rtl-compgotos"
  Dump after duplicating the computed gotos.
! .IP "\fB\-fdump\-rtl\-ce1\fR" 4
  .IX Item "-fdump-rtl-ce1"
  .PD 0
! .IP "\fB\-fdump\-rtl\-ce2\fR" 4
  .IX Item "-fdump-rtl-ce2"
! .IP "\fB\-fdump\-rtl\-ce3\fR" 4
  .IX Item "-fdump-rtl-ce3"
  .PD
  \&\fB\-fdump\-rtl\-ce1\fR, \fB\-fdump\-rtl\-ce2\fR, and
  \&\fB\-fdump\-rtl\-ce3\fR enable dumping after the three
  if conversion passes.
! .IP "\fB\-fdump\-rtl\-cprop_hardreg\fR" 4
  .IX Item "-fdump-rtl-cprop_hardreg"
  Dump after hard register copy propagation.
! .IP "\fB\-fdump\-rtl\-csa\fR" 4
  .IX Item "-fdump-rtl-csa"
  Dump after combining stack adjustments.
! .IP "\fB\-fdump\-rtl\-cse1\fR" 4
  .IX Item "-fdump-rtl-cse1"
  .PD 0
! .IP "\fB\-fdump\-rtl\-cse2\fR" 4
  .IX Item "-fdump-rtl-cse2"
  .PD
  \&\fB\-fdump\-rtl\-cse1\fR and \fB\-fdump\-rtl\-cse2\fR enable dumping after
  the two common subexpression elimination passes.
! .IP "\fB\-fdump\-rtl\-dce\fR" 4
  .IX Item "-fdump-rtl-dce"
  Dump after the standalone dead code elimination passes.
! .IP "\fB\-fdump\-rtl\-dbr\fR" 4
  .IX Item "-fdump-rtl-dbr"
  Dump after delayed branch scheduling.
! .IP "\fB\-fdump\-rtl\-dce1\fR" 4
  .IX Item "-fdump-rtl-dce1"
  .PD 0
! .IP "\fB\-fdump\-rtl\-dce2\fR" 4
  .IX Item "-fdump-rtl-dce2"
  .PD
  \&\fB\-fdump\-rtl\-dce1\fR and \fB\-fdump\-rtl\-dce2\fR enable dumping after
  the two dead store elimination passes.
! .IP "\fB\-fdump\-rtl\-eh\fR" 4
  .IX Item "-fdump-rtl-eh"
! Dump after finalization of \s-1EH\s0 handling code.
! .IP "\fB\-fdump\-rtl\-eh_ranges\fR" 4
  .IX Item "-fdump-rtl-eh_ranges"
! Dump after conversion of \s-1EH\s0 handling range regions.
! .IP "\fB\-fdump\-rtl\-expand\fR" 4
  .IX Item "-fdump-rtl-expand"
! Dump after \s-1RTL\s0 generation.
! .IP "\fB\-fdump\-rtl\-fwprop1\fR" 4
  .IX Item "-fdump-rtl-fwprop1"
  .PD 0
! .IP "\fB\-fdump\-rtl\-fwprop2\fR" 4
  .IX Item "-fdump-rtl-fwprop2"
  .PD
  \&\fB\-fdump\-rtl\-fwprop1\fR and \fB\-fdump\-rtl\-fwprop2\fR enable
  dumping after the two forward propagation passes.
! .IP "\fB\-fdump\-rtl\-gcse1\fR" 4
  .IX Item "-fdump-rtl-gcse1"
  .PD 0
! .IP "\fB\-fdump\-rtl\-gcse2\fR" 4
  .IX Item "-fdump-rtl-gcse2"
  .PD
  \&\fB\-fdump\-rtl\-gcse1\fR and \fB\-fdump\-rtl\-gcse2\fR enable dumping
  after global common subexpression elimination.
! .IP "\fB\-fdump\-rtl\-init\-regs\fR" 4
  .IX Item "-fdump-rtl-init-regs"
  Dump after the initialization of the registers.
! .IP "\fB\-fdump\-rtl\-initvals\fR" 4
  .IX Item "-fdump-rtl-initvals"
  Dump after the computation of the initial value sets.
! .IP "\fB\-fdump\-rtl\-into_cfglayout\fR" 4
  .IX Item "-fdump-rtl-into_cfglayout"
  Dump after converting to cfglayout mode.
! .IP "\fB\-fdump\-rtl\-ira\fR" 4
  .IX Item "-fdump-rtl-ira"
  Dump after iterated register allocation.
! .IP "\fB\-fdump\-rtl\-jump\fR" 4
  .IX Item "-fdump-rtl-jump"
  Dump after the second jump optimization.
! .IP "\fB\-fdump\-rtl\-loop2\fR" 4
  .IX Item "-fdump-rtl-loop2"
  \&\fB\-fdump\-rtl\-loop2\fR enables dumping after the rtl
  loop optimization passes.
! .IP "\fB\-fdump\-rtl\-mach\fR" 4
  .IX Item "-fdump-rtl-mach"
  Dump after performing the machine dependent reorganization pass, if that
  pass exists.
! .IP "\fB\-fdump\-rtl\-mode_sw\fR" 4
  .IX Item "-fdump-rtl-mode_sw"
  Dump after removing redundant mode switches.
! .IP "\fB\-fdump\-rtl\-rnreg\fR" 4
  .IX Item "-fdump-rtl-rnreg"
  Dump after register renumbering.
! .IP "\fB\-fdump\-rtl\-outof_cfglayout\fR" 4
  .IX Item "-fdump-rtl-outof_cfglayout"
  Dump after converting from cfglayout mode.
! .IP "\fB\-fdump\-rtl\-peephole2\fR" 4
  .IX Item "-fdump-rtl-peephole2"
  Dump after the peephole pass.
! .IP "\fB\-fdump\-rtl\-postreload\fR" 4
  .IX Item "-fdump-rtl-postreload"
! Dump after post-reload optimizations.
! .IP "\fB\-fdump\-rtl\-pro_and_epilogue\fR" 4
  .IX Item "-fdump-rtl-pro_and_epilogue"
  Dump after generating the function prologues and epilogues.
! .IP "\fB\-fdump\-rtl\-sched1\fR" 4
  .IX Item "-fdump-rtl-sched1"
  .PD 0
! .IP "\fB\-fdump\-rtl\-sched2\fR" 4
  .IX Item "-fdump-rtl-sched2"
  .PD
  \&\fB\-fdump\-rtl\-sched1\fR and \fB\-fdump\-rtl\-sched2\fR enable dumping
  after the basic block scheduling passes.
! .IP "\fB\-fdump\-rtl\-ree\fR" 4
  .IX Item "-fdump-rtl-ree"
  Dump after sign/zero extension elimination.
! .IP "\fB\-fdump\-rtl\-seqabstr\fR" 4
  .IX Item "-fdump-rtl-seqabstr"
  Dump after common sequence discovery.
! .IP "\fB\-fdump\-rtl\-shorten\fR" 4
  .IX Item "-fdump-rtl-shorten"
  Dump after shortening branches.
! .IP "\fB\-fdump\-rtl\-split1\fR" 4
  .IX Item "-fdump-rtl-split1"
  .PD 0
! .IP "\fB\-fdump\-rtl\-split2\fR" 4
  .IX Item "-fdump-rtl-split2"
! .IP "\fB\-fdump\-rtl\-split3\fR" 4
  .IX Item "-fdump-rtl-split3"
! .IP "\fB\-fdump\-rtl\-split4\fR" 4
  .IX Item "-fdump-rtl-split4"
! .IP "\fB\-fdump\-rtl\-split5\fR" 4
  .IX Item "-fdump-rtl-split5"
  .PD
  These options enable dumping after five rounds of
  instruction splitting.
! .IP "\fB\-fdump\-rtl\-sms\fR" 4
  .IX Item "-fdump-rtl-sms"
  Dump after modulo scheduling.  This pass is only run on some
  architectures.
! .IP "\fB\-fdump\-rtl\-stack\fR" 4
  .IX Item "-fdump-rtl-stack"
! Dump after conversion from \s-1GCC\s0's \*(L"flat register file\*(R" registers to the
! x87's stack-like registers.  This pass is only run on x86 variants.
! .IP "\fB\-fdump\-rtl\-subreg1\fR" 4
  .IX Item "-fdump-rtl-subreg1"
  .PD 0
! .IP "\fB\-fdump\-rtl\-subreg2\fR" 4
  .IX Item "-fdump-rtl-subreg2"
  .PD
  \&\fB\-fdump\-rtl\-subreg1\fR and \fB\-fdump\-rtl\-subreg2\fR enable dumping after
  the two subreg expansion passes.
! .IP "\fB\-fdump\-rtl\-vartrack\fR" 4
  .IX Item "-fdump-rtl-vartrack"
  Dump after variable tracking.
! .IP "\fB\-fdump\-rtl\-vregs\fR" 4
  .IX Item "-fdump-rtl-vregs"
  Dump after converting virtual registers to hard registers.
! .IP "\fB\-fdump\-rtl\-web\fR" 4
  .IX Item "-fdump-rtl-web"
  Dump after live range splitting.
! .IP "\fB\-fdump\-rtl\-regclass\fR" 4
  .IX Item "-fdump-rtl-regclass"
  .PD 0
! .IP "\fB\-fdump\-rtl\-subregs_of_mode_init\fR" 4
  .IX Item "-fdump-rtl-subregs_of_mode_init"
! .IP "\fB\-fdump\-rtl\-subregs_of_mode_finish\fR" 4
  .IX Item "-fdump-rtl-subregs_of_mode_finish"
! .IP "\fB\-fdump\-rtl\-dfinit\fR" 4
  .IX Item "-fdump-rtl-dfinit"
! .IP "\fB\-fdump\-rtl\-dfinish\fR" 4
  .IX Item "-fdump-rtl-dfinish"
  .PD
  These dumps are defined but always produce empty files.
! .IP "\fB\-da\fR" 4
  .IX Item "-da"
  .PD 0
! .IP "\fB\-fdump\-rtl\-all\fR" 4
  .IX Item "-fdump-rtl-all"
  .PD
  Produce all the dumps listed above.
! .IP "\fB\-dA\fR" 4
  .IX Item "-dA"
  Annotate the assembler output with miscellaneous debugging information.
! .IP "\fB\-dD\fR" 4
  .IX Item "-dD"
  Dump all macro definitions, at the end of preprocessing, in addition to
  normal output.
! .IP "\fB\-dH\fR" 4
  .IX Item "-dH"
  Produce a core dump whenever an error occurs.
! .IP "\fB\-dp\fR" 4
  .IX Item "-dp"
  Annotate the assembler output with a comment indicating which
  pattern and alternative is used.  The length and cost of each instruction are
  also printed.
! .IP "\fB\-dP\fR" 4
  .IX Item "-dP"
! Dump the \s-1RTL\s0 in the assembler output as a comment before each instruction.
  Also turns on \fB\-dp\fR annotation.
! .IP "\fB\-dx\fR" 4
  .IX Item "-dx"
! Just generate \s-1RTL\s0 for a function instead of compiling it.  Usually used
  with \fB\-fdump\-rtl\-expand\fR.
  .RE
  .RS 4
  .RE
! .IP "\fB\-fdump\-debug\fR" 4
  .IX Item "-fdump-debug"
  Dump debugging information generated during the debug
  generation phase.
! .IP "\fB\-fdump\-earlydebug\fR" 4
  .IX Item "-fdump-earlydebug"
  Dump debugging information generated during the early debug
  generation phase.
! .IP "\fB\-fdump\-noaddr\fR" 4
  .IX Item "-fdump-noaddr"
  When doing debugging dumps, suppress address output.  This makes it more
  feasible to use diff on debugging dumps for compiler invocations with
  different compiler binaries and/or different
  text / bss / data / heap / stack / dso start locations.
! .IP "\fB\-freport\-bug\fR" 4
  .IX Item "-freport-bug"
  Collect and dump debug information into a temporary file if an
! internal compiler error (\s-1ICE\s0) occurs.
! .IP "\fB\-fdump\-unnumbered\fR" 4
  .IX Item "-fdump-unnumbered"
  When doing debugging dumps, suppress instruction numbers and address output.
  This makes it more feasible to use diff on debugging dumps for compiler
  invocations with different options, in particular with and without
  \&\fB\-g\fR.
! .IP "\fB\-fdump\-unnumbered\-links\fR" 4
  .IX Item "-fdump-unnumbered-links"
  When doing debugging dumps (see \fB\-d\fR option above), suppress
  instruction numbers for the links to the previous and next instructions
  in a sequence.
! .IP "\fB\-fdump\-ipa\-\fR\fIswitch\fR" 4
  .IX Item "-fdump-ipa-switch"
  .PD 0
! .IP "\fB\-fdump\-ipa\-\fR\fIswitch\fR\fB\-\fR\fIoptions\fR" 4
  .IX Item "-fdump-ipa-switch-options"
  .PD
! Control the dumping at various stages of inter-procedural analysis
  language tree to a file.  The file name is generated by appending a
  switch specific suffix to the source file name, and the file is created
  in the same directory as the output file.  The following dumps are
  possible:
  .RS 4
! .IP "\fBall\fR" 4
  .IX Item "all"
! Enables all inter-procedural analysis dumps.
! .IP "\fBcgraph\fR" 4
  .IX Item "cgraph"
! Dumps information about call-graph optimization, unused function removal,
  and inlining decisions.
! .IP "\fBinline\fR" 4
  .IX Item "inline"
  Dump after function inlining.
! .IP "\fBstrubm\fR" 4
  .IX Item "strubm"
  Dump after selecting \f(CW\*(C`strub\*(C'\fR modes, and recording the selections as
  function attributes.
! .IP "\fBstrub\fR" 4
  .IX Item "strub"
  Dump \f(CW\*(C`strub\*(C'\fR transformations: interface changes, function wrapping,
  and insertion of builtin calls for stack scrubbing and watermarking.
--- 19653,19958 ----
  \&\fB\-d\fR option \fIletters\fR.  Here are the possible
  letters for use in \fIpass\fR and \fIletters\fR, and their meanings:
  .RS 4
! .IP \fB\-fdump\-rtl\-alignments\fR 4
  .IX Item "-fdump-rtl-alignments"
  Dump after branch alignments have been computed.
! .IP \fB\-fdump\-rtl\-asmcons\fR 4
  .IX Item "-fdump-rtl-asmcons"
  Dump after fixing rtl statements that have unsatisfied in/out constraints.
! .IP \fB\-fdump\-rtl\-auto_inc_dec\fR 4
  .IX Item "-fdump-rtl-auto_inc_dec"
! Dump after auto\-inc\-dec discovery.  This pass is only run on
  architectures that have auto inc or auto dec instructions.
! .IP \fB\-fdump\-rtl\-barriers\fR 4
  .IX Item "-fdump-rtl-barriers"
  Dump after cleaning up the barrier instructions.
! .IP \fB\-fdump\-rtl\-bbpart\fR 4
  .IX Item "-fdump-rtl-bbpart"
  Dump after partitioning hot and cold basic blocks.
! .IP \fB\-fdump\-rtl\-bbro\fR 4
  .IX Item "-fdump-rtl-bbro"
  Dump after block reordering.
! .IP \fB\-fdump\-rtl\-btl1\fR 4
  .IX Item "-fdump-rtl-btl1"
  .PD 0
! .IP \fB\-fdump\-rtl\-btl2\fR 4
  .IX Item "-fdump-rtl-btl2"
  .PD
  \&\fB\-fdump\-rtl\-btl1\fR and \fB\-fdump\-rtl\-btl2\fR enable dumping
  after the two branch
  target load optimization passes.
! .IP \fB\-fdump\-rtl\-bypass\fR 4
  .IX Item "-fdump-rtl-bypass"
  Dump after jump bypassing and control flow optimizations.
! .IP \fB\-fdump\-rtl\-combine\fR 4
  .IX Item "-fdump-rtl-combine"
! Dump after the RTL instruction combination pass.
! .IP \fB\-fdump\-rtl\-compgotos\fR 4
  .IX Item "-fdump-rtl-compgotos"
  Dump after duplicating the computed gotos.
! .IP \fB\-fdump\-rtl\-ce1\fR 4
  .IX Item "-fdump-rtl-ce1"
  .PD 0
! .IP \fB\-fdump\-rtl\-ce2\fR 4
  .IX Item "-fdump-rtl-ce2"
! .IP \fB\-fdump\-rtl\-ce3\fR 4
  .IX Item "-fdump-rtl-ce3"
  .PD
  \&\fB\-fdump\-rtl\-ce1\fR, \fB\-fdump\-rtl\-ce2\fR, and
  \&\fB\-fdump\-rtl\-ce3\fR enable dumping after the three
  if conversion passes.
! .IP \fB\-fdump\-rtl\-cprop_hardreg\fR 4
  .IX Item "-fdump-rtl-cprop_hardreg"
  Dump after hard register copy propagation.
! .IP \fB\-fdump\-rtl\-csa\fR 4
  .IX Item "-fdump-rtl-csa"
  Dump after combining stack adjustments.
! .IP \fB\-fdump\-rtl\-cse1\fR 4
  .IX Item "-fdump-rtl-cse1"
  .PD 0
! .IP \fB\-fdump\-rtl\-cse2\fR 4
  .IX Item "-fdump-rtl-cse2"
  .PD
  \&\fB\-fdump\-rtl\-cse1\fR and \fB\-fdump\-rtl\-cse2\fR enable dumping after
  the two common subexpression elimination passes.
! .IP \fB\-fdump\-rtl\-dce\fR 4
  .IX Item "-fdump-rtl-dce"
  Dump after the standalone dead code elimination passes.
! .IP \fB\-fdump\-rtl\-dbr\fR 4
  .IX Item "-fdump-rtl-dbr"
  Dump after delayed branch scheduling.
! .IP \fB\-fdump\-rtl\-dce1\fR 4
  .IX Item "-fdump-rtl-dce1"
  .PD 0
! .IP \fB\-fdump\-rtl\-dce2\fR 4
  .IX Item "-fdump-rtl-dce2"
  .PD
  \&\fB\-fdump\-rtl\-dce1\fR and \fB\-fdump\-rtl\-dce2\fR enable dumping after
  the two dead store elimination passes.
! .IP \fB\-fdump\-rtl\-eh\fR 4
  .IX Item "-fdump-rtl-eh"
! Dump after finalization of EH handling code.
! .IP \fB\-fdump\-rtl\-eh_ranges\fR 4
  .IX Item "-fdump-rtl-eh_ranges"
! Dump after conversion of EH handling range regions.
! .IP \fB\-fdump\-rtl\-expand\fR 4
  .IX Item "-fdump-rtl-expand"
! Dump after RTL generation.
! .IP \fB\-fdump\-rtl\-fwprop1\fR 4
  .IX Item "-fdump-rtl-fwprop1"
  .PD 0
! .IP \fB\-fdump\-rtl\-fwprop2\fR 4
  .IX Item "-fdump-rtl-fwprop2"
  .PD
  \&\fB\-fdump\-rtl\-fwprop1\fR and \fB\-fdump\-rtl\-fwprop2\fR enable
  dumping after the two forward propagation passes.
! .IP \fB\-fdump\-rtl\-gcse1\fR 4
  .IX Item "-fdump-rtl-gcse1"
  .PD 0
! .IP \fB\-fdump\-rtl\-gcse2\fR 4
  .IX Item "-fdump-rtl-gcse2"
  .PD
  \&\fB\-fdump\-rtl\-gcse1\fR and \fB\-fdump\-rtl\-gcse2\fR enable dumping
  after global common subexpression elimination.
! .IP \fB\-fdump\-rtl\-init\-regs\fR 4
  .IX Item "-fdump-rtl-init-regs"
  Dump after the initialization of the registers.
! .IP \fB\-fdump\-rtl\-initvals\fR 4
  .IX Item "-fdump-rtl-initvals"
  Dump after the computation of the initial value sets.
! .IP \fB\-fdump\-rtl\-into_cfglayout\fR 4
  .IX Item "-fdump-rtl-into_cfglayout"
  Dump after converting to cfglayout mode.
! .IP \fB\-fdump\-rtl\-ira\fR 4
  .IX Item "-fdump-rtl-ira"
  Dump after iterated register allocation.
! .IP \fB\-fdump\-rtl\-jump\fR 4
  .IX Item "-fdump-rtl-jump"
  Dump after the second jump optimization.
! .IP \fB\-fdump\-rtl\-loop2\fR 4
  .IX Item "-fdump-rtl-loop2"
  \&\fB\-fdump\-rtl\-loop2\fR enables dumping after the rtl
  loop optimization passes.
! .IP \fB\-fdump\-rtl\-mach\fR 4
  .IX Item "-fdump-rtl-mach"
  Dump after performing the machine dependent reorganization pass, if that
  pass exists.
! .IP \fB\-fdump\-rtl\-mode_sw\fR 4
  .IX Item "-fdump-rtl-mode_sw"
  Dump after removing redundant mode switches.
! .IP \fB\-fdump\-rtl\-rnreg\fR 4
  .IX Item "-fdump-rtl-rnreg"
  Dump after register renumbering.
! .IP \fB\-fdump\-rtl\-outof_cfglayout\fR 4
  .IX Item "-fdump-rtl-outof_cfglayout"
  Dump after converting from cfglayout mode.
! .IP \fB\-fdump\-rtl\-peephole2\fR 4
  .IX Item "-fdump-rtl-peephole2"
  Dump after the peephole pass.
! .IP \fB\-fdump\-rtl\-postreload\fR 4
  .IX Item "-fdump-rtl-postreload"
! Dump after post\-reload optimizations.
! .IP \fB\-fdump\-rtl\-pro_and_epilogue\fR 4
  .IX Item "-fdump-rtl-pro_and_epilogue"
  Dump after generating the function prologues and epilogues.
! .IP \fB\-fdump\-rtl\-sched1\fR 4
  .IX Item "-fdump-rtl-sched1"
  .PD 0
! .IP \fB\-fdump\-rtl\-sched2\fR 4
  .IX Item "-fdump-rtl-sched2"
  .PD
  \&\fB\-fdump\-rtl\-sched1\fR and \fB\-fdump\-rtl\-sched2\fR enable dumping
  after the basic block scheduling passes.
! .IP \fB\-fdump\-rtl\-ree\fR 4
  .IX Item "-fdump-rtl-ree"
  Dump after sign/zero extension elimination.
! .IP \fB\-fdump\-rtl\-seqabstr\fR 4
  .IX Item "-fdump-rtl-seqabstr"
  Dump after common sequence discovery.
! .IP \fB\-fdump\-rtl\-shorten\fR 4
  .IX Item "-fdump-rtl-shorten"
  Dump after shortening branches.
! .IP \fB\-fdump\-rtl\-split1\fR 4
  .IX Item "-fdump-rtl-split1"
  .PD 0
! .IP \fB\-fdump\-rtl\-split2\fR 4
  .IX Item "-fdump-rtl-split2"
! .IP \fB\-fdump\-rtl\-split3\fR 4
  .IX Item "-fdump-rtl-split3"
! .IP \fB\-fdump\-rtl\-split4\fR 4
  .IX Item "-fdump-rtl-split4"
! .IP \fB\-fdump\-rtl\-split5\fR 4
  .IX Item "-fdump-rtl-split5"
  .PD
  These options enable dumping after five rounds of
  instruction splitting.
! .IP \fB\-fdump\-rtl\-sms\fR 4
  .IX Item "-fdump-rtl-sms"
  Dump after modulo scheduling.  This pass is only run on some
  architectures.
! .IP \fB\-fdump\-rtl\-stack\fR 4
  .IX Item "-fdump-rtl-stack"
! Dump after conversion from GCC\*(Aqs "flat register file" registers to the
! x87\*(Aqs stack\-like registers.  This pass is only run on x86 variants.
! .IP \fB\-fdump\-rtl\-subreg1\fR 4
  .IX Item "-fdump-rtl-subreg1"
  .PD 0
! .IP \fB\-fdump\-rtl\-subreg2\fR 4
  .IX Item "-fdump-rtl-subreg2"
  .PD
  \&\fB\-fdump\-rtl\-subreg1\fR and \fB\-fdump\-rtl\-subreg2\fR enable dumping after
  the two subreg expansion passes.
! .IP \fB\-fdump\-rtl\-vartrack\fR 4
  .IX Item "-fdump-rtl-vartrack"
  Dump after variable tracking.
! .IP \fB\-fdump\-rtl\-vregs\fR 4
  .IX Item "-fdump-rtl-vregs"
  Dump after converting virtual registers to hard registers.
! .IP \fB\-fdump\-rtl\-web\fR 4
  .IX Item "-fdump-rtl-web"
  Dump after live range splitting.
! .IP \fB\-fdump\-rtl\-regclass\fR 4
  .IX Item "-fdump-rtl-regclass"
  .PD 0
! .IP \fB\-fdump\-rtl\-subregs_of_mode_init\fR 4
  .IX Item "-fdump-rtl-subregs_of_mode_init"
! .IP \fB\-fdump\-rtl\-subregs_of_mode_finish\fR 4
  .IX Item "-fdump-rtl-subregs_of_mode_finish"
! .IP \fB\-fdump\-rtl\-dfinit\fR 4
  .IX Item "-fdump-rtl-dfinit"
! .IP \fB\-fdump\-rtl\-dfinish\fR 4
  .IX Item "-fdump-rtl-dfinish"
  .PD
  These dumps are defined but always produce empty files.
! .IP \fB\-da\fR 4
  .IX Item "-da"
  .PD 0
! .IP \fB\-fdump\-rtl\-all\fR 4
  .IX Item "-fdump-rtl-all"
  .PD
  Produce all the dumps listed above.
! .IP \fB\-dA\fR 4
  .IX Item "-dA"
  Annotate the assembler output with miscellaneous debugging information.
! .IP \fB\-dD\fR 4
  .IX Item "-dD"
  Dump all macro definitions, at the end of preprocessing, in addition to
  normal output.
! .IP \fB\-dH\fR 4
  .IX Item "-dH"
  Produce a core dump whenever an error occurs.
! .IP \fB\-dp\fR 4
  .IX Item "-dp"
  Annotate the assembler output with a comment indicating which
  pattern and alternative is used.  The length and cost of each instruction are
  also printed.
! .IP \fB\-dP\fR 4
  .IX Item "-dP"
! Dump the RTL in the assembler output as a comment before each instruction.
  Also turns on \fB\-dp\fR annotation.
! .IP \fB\-dx\fR 4
  .IX Item "-dx"
! Just generate RTL for a function instead of compiling it.  Usually used
  with \fB\-fdump\-rtl\-expand\fR.
  .RE
  .RS 4
  .RE
! .IP \fB\-fdump\-debug\fR 4
  .IX Item "-fdump-debug"
  Dump debugging information generated during the debug
  generation phase.
! .IP \fB\-fdump\-earlydebug\fR 4
  .IX Item "-fdump-earlydebug"
  Dump debugging information generated during the early debug
  generation phase.
! .IP \fB\-fdump\-noaddr\fR 4
  .IX Item "-fdump-noaddr"
  When doing debugging dumps, suppress address output.  This makes it more
  feasible to use diff on debugging dumps for compiler invocations with
  different compiler binaries and/or different
  text / bss / data / heap / stack / dso start locations.
! .IP \fB\-freport\-bug\fR 4
  .IX Item "-freport-bug"
  Collect and dump debug information into a temporary file if an
! internal compiler error (ICE) occurs.
! .IP \fB\-fdump\-unnumbered\fR 4
  .IX Item "-fdump-unnumbered"
  When doing debugging dumps, suppress instruction numbers and address output.
  This makes it more feasible to use diff on debugging dumps for compiler
  invocations with different options, in particular with and without
  \&\fB\-g\fR.
! .IP \fB\-fdump\-unnumbered\-links\fR 4
  .IX Item "-fdump-unnumbered-links"
  When doing debugging dumps (see \fB\-d\fR option above), suppress
  instruction numbers for the links to the previous and next instructions
  in a sequence.
! .IP \fB\-fdump\-ipa\-\fR\fIswitch\fR 4
  .IX Item "-fdump-ipa-switch"
  .PD 0
! .IP \fB\-fdump\-ipa\-\fR\fIswitch\fR\fB\-\fR\fIoptions\fR 4
  .IX Item "-fdump-ipa-switch-options"
  .PD
! Control the dumping at various stages of inter\-procedural analysis
  language tree to a file.  The file name is generated by appending a
  switch specific suffix to the source file name, and the file is created
  in the same directory as the output file.  The following dumps are
  possible:
  .RS 4
! .IP \fBall\fR 4
  .IX Item "all"
! Enables all inter\-procedural analysis dumps.
! .IP \fBcgraph\fR 4
  .IX Item "cgraph"
! Dumps information about call\-graph optimization, unused function removal,
  and inlining decisions.
! .IP \fBinline\fR 4
  .IX Item "inline"
  Dump after function inlining.
! .IP \fBstrubm\fR 4
  .IX Item "strubm"
  Dump after selecting \f(CW\*(C`strub\*(C'\fR modes, and recording the selections as
  function attributes.
! .IP \fBstrub\fR 4
  .IX Item "strub"
  Dump \f(CW\*(C`strub\*(C'\fR transformations: interface changes, function wrapping,
  and insertion of builtin calls for stack scrubbing and watermarking.
*************** that were not inlined.
*** 20034,20048 ****
  .Sp
  By default, the dump will contain messages about successful
  optimizations (equivalent to \fB\-optimized\fR) together with
! low-level details about the analysis.
  .RE
! .IP "\fB\-fdump\-ipa\-clones\fR" 4
  .IX Item "-fdump-ipa-clones"
  Create a dump file containing information about creation of call graph
! node clones and removals of call graph nodes during inter-procedural
  optimizations and transformations.  Its main intended use is that tools
! that create live-patches can determine the set of functions that need to
! be live-patched to completely replace a particular function (see
  \&\fB\-flive\-patching\fR).  The file name is generated by appending
  suffix \f(CW\*(C`ipa\-clones\*(C'\fR to the source file name, and the file is
  created in the same directory as the output file.  Each entry in the
--- 19969,19983 ----
  .Sp
  By default, the dump will contain messages about successful
  optimizations (equivalent to \fB\-optimized\fR) together with
! low\-level details about the analysis.
  .RE
! .IP \fB\-fdump\-ipa\-clones\fR 4
  .IX Item "-fdump-ipa-clones"
  Create a dump file containing information about creation of call graph
! node clones and removals of call graph nodes during inter\-procedural
  optimizations and transformations.  Its main intended use is that tools
! that create live\-patches can determine the set of functions that need to
! be live\-patched to completely replace a particular function (see
  \&\fB\-flive\-patching\fR).  The file name is generated by appending
  suffix \f(CW\*(C`ipa\-clones\*(C'\fR to the source file name, and the file is
  created in the same directory as the output file.  Each entry in the
*************** file is on a separate line containing se
*** 20050,20171 ****
  .Sp
  In the case of call graph clone creation, the individual fields are:
  .RS 4
! .IP "1." 4
  .IX Item "1."
  String \f(CW\*(C`Callgraph clone\*(C'\fR.
! .IP "2." 4
  .IX Item "2."
  Name of the function being cloned as it is presented to the assembler.
! .IP "3." 4
  .IX Item "3."
  A number that uniquely represents the function being cloned in the call
  graph.  Note that the number is unique only within a compilation unit or
! within whole-program analysis but is likely to be different in the two
  phases.
! .IP "4." 4
  .IX Item "4."
  The file name of the source file where the function is defined.
! .IP "5." 4
  .IX Item "5."
  The line on which the function definition is located.
! .IP "6." 4
  .IX Item "6."
  The column where the function definition is located.
! .IP "7." 4
  .IX Item "7."
  Name of the new function clone as it is presented to the assembler.
! .IP "8." 4
  .IX Item "8."
  A number that uniquely represents the new function clone in the call
  graph.  Note that the number is unique only within a compilation unit or
! within whole-program analysis but is likely to be different in the two
  phases.
! .IP "9." 4
  .IX Item "9."
  The file name of the source file where the source code location of the
  new clone points to.
! .IP "10." 4
  .IX Item "10."
  The line to which the source code location of the new clone points to.
! .IP "11." 4
  .IX Item "11."
  The column to which the source code location of the new clone points to.
! .IP "12." 4
  .IX Item "12."
  A string that determines the reason for cloning.
  .RE
  .RS 4
  .Sp
  In the case of call graph clone removal, the individual fields are:
! .IP "1." 4
  .IX Item "1."
  String \f(CW\*(C`Callgraph removal\*(C'\fR.
! .IP "2." 4
  .IX Item "2."
  Name of the function being removed as it would be presented to the assembler.
! .IP "3." 4
  .IX Item "3."
  A number that uniquely represents the function being cloned in the call
  graph.  Note that the number is unique only within a compilation unit or
! within whole-program analysis but is likely to be different in the two
  phases.
! .IP "4." 4
  .IX Item "4."
  The file name of the source file where the function is defined.
! .IP "5." 4
  .IX Item "5."
  The line on which the function definition is located.
! .IP "6." 4
  .IX Item "6."
  The column where the function definition is located.
  .RE
  .RS 4
  .RE
! .IP "\fB\-fdump\-lang\fR" 4
  .IX Item "-fdump-lang"
! Dump language-specific information.  The file name is made by appending
  \&\fI.lang\fR to the source file name.
! .IP "\fB\-fdump\-lang\-all\fR" 4
  .IX Item "-fdump-lang-all"
  .PD 0
! .IP "\fB\-fdump\-lang\-\fR\fIswitch\fR" 4
  .IX Item "-fdump-lang-switch"
! .IP "\fB\-fdump\-lang\-\fR\fIswitch\fR\fB\-\fR\fIoptions\fR" 4
  .IX Item "-fdump-lang-switch-options"
! .IP "\fB\-fdump\-lang\-\fR\fIswitch\fR\fB\-\fR\fIoptions\fR\fB=\fR\fIfilename\fR" 4
  .IX Item "-fdump-lang-switch-options=filename"
  .PD
! Control the dumping of language-specific information.  The \fIoptions\fR
  and \fIfilename\fR portions behave as described in the
  \&\fB\-fdump\-tree\fR option.  The following \fIswitch\fR values are
  accepted:
  .RS 4
! .IP "\fBall\fR" 4
  .IX Item "all"
! Enable all language-specific dumps.
! .IP "\fBclass\fR" 4
  .IX Item "class"
  Dump class hierarchy information.  Virtual table information is emitted
! unless '\fBslim\fR' is specified.  This option is applicable to \*(C+ only.
! .IP "\fBmodule\fR" 4
  .IX Item "module"
  Dump module information.  Options \fBlineno\fR (locations),
  \&\fBgraph\fR (reachability), \fBblocks\fR (clusters),
  \&\fBuid\fR (serialization), \fBalias\fR (mergeable),
  \&\fBasmname\fR (Elrond), \fBeh\fR (mapper) & \fBvops\fR
  (macros) may provide additional information.  This option is
! applicable to \*(C+ only.
! .IP "\fBraw\fR" 4
  .IX Item "raw"
! Dump the raw internal tree data.  This option is applicable to \*(C+ only.
  .RE
  .RS 4
  .RE
! .IP "\fB\-fdump\-passes\fR" 4
  .IX Item "-fdump-passes"
  Print on \fIstderr\fR the list of optimization passes that are turned
! on and off by the current command-line options.
! .IP "\fB\-fdump\-statistics\-\fR\fIoption\fR" 4
  .IX Item "-fdump-statistics-option"
  Enable and control dumping of pass statistics in a separate file.  The
  file name is generated by appending a suffix ending in
--- 19985,20106 ----
  .Sp
  In the case of call graph clone creation, the individual fields are:
  .RS 4
! .IP 1. 4
  .IX Item "1."
  String \f(CW\*(C`Callgraph clone\*(C'\fR.
! .IP 2. 4
  .IX Item "2."
  Name of the function being cloned as it is presented to the assembler.
! .IP 3. 4
  .IX Item "3."
  A number that uniquely represents the function being cloned in the call
  graph.  Note that the number is unique only within a compilation unit or
! within whole\-program analysis but is likely to be different in the two
  phases.
! .IP 4. 4
  .IX Item "4."
  The file name of the source file where the function is defined.
! .IP 5. 4
  .IX Item "5."
  The line on which the function definition is located.
! .IP 6. 4
  .IX Item "6."
  The column where the function definition is located.
! .IP 7. 4
  .IX Item "7."
  Name of the new function clone as it is presented to the assembler.
! .IP 8. 4
  .IX Item "8."
  A number that uniquely represents the new function clone in the call
  graph.  Note that the number is unique only within a compilation unit or
! within whole\-program analysis but is likely to be different in the two
  phases.
! .IP 9. 4
  .IX Item "9."
  The file name of the source file where the source code location of the
  new clone points to.
! .IP 10. 4
  .IX Item "10."
  The line to which the source code location of the new clone points to.
! .IP 11. 4
  .IX Item "11."
  The column to which the source code location of the new clone points to.
! .IP 12. 4
  .IX Item "12."
  A string that determines the reason for cloning.
  .RE
  .RS 4
  .Sp
  In the case of call graph clone removal, the individual fields are:
! .IP 1. 4
  .IX Item "1."
  String \f(CW\*(C`Callgraph removal\*(C'\fR.
! .IP 2. 4
  .IX Item "2."
  Name of the function being removed as it would be presented to the assembler.
! .IP 3. 4
  .IX Item "3."
  A number that uniquely represents the function being cloned in the call
  graph.  Note that the number is unique only within a compilation unit or
! within whole\-program analysis but is likely to be different in the two
  phases.
! .IP 4. 4
  .IX Item "4."
  The file name of the source file where the function is defined.
! .IP 5. 4
  .IX Item "5."
  The line on which the function definition is located.
! .IP 6. 4
  .IX Item "6."
  The column where the function definition is located.
  .RE
  .RS 4
  .RE
! .IP \fB\-fdump\-lang\fR 4
  .IX Item "-fdump-lang"
! Dump language\-specific information.  The file name is made by appending
  \&\fI.lang\fR to the source file name.
! .IP \fB\-fdump\-lang\-all\fR 4
  .IX Item "-fdump-lang-all"
  .PD 0
! .IP \fB\-fdump\-lang\-\fR\fIswitch\fR 4
  .IX Item "-fdump-lang-switch"
! .IP \fB\-fdump\-lang\-\fR\fIswitch\fR\fB\-\fR\fIoptions\fR 4
  .IX Item "-fdump-lang-switch-options"
! .IP \fB\-fdump\-lang\-\fR\fIswitch\fR\fB\-\fR\fIoptions\fR\fB=\fR\fIfilename\fR 4
  .IX Item "-fdump-lang-switch-options=filename"
  .PD
! Control the dumping of language\-specific information.  The \fIoptions\fR
  and \fIfilename\fR portions behave as described in the
  \&\fB\-fdump\-tree\fR option.  The following \fIswitch\fR values are
  accepted:
  .RS 4
! .IP \fBall\fR 4
  .IX Item "all"
! Enable all language\-specific dumps.
! .IP \fBclass\fR 4
  .IX Item "class"
  Dump class hierarchy information.  Virtual table information is emitted
! unless \*(Aq\fBslim\fR\*(Aq is specified.  This option is applicable to C++ only.
! .IP \fBmodule\fR 4
  .IX Item "module"
  Dump module information.  Options \fBlineno\fR (locations),
  \&\fBgraph\fR (reachability), \fBblocks\fR (clusters),
  \&\fBuid\fR (serialization), \fBalias\fR (mergeable),
  \&\fBasmname\fR (Elrond), \fBeh\fR (mapper) & \fBvops\fR
  (macros) may provide additional information.  This option is
! applicable to C++ only.
! .IP \fBraw\fR 4
  .IX Item "raw"
! Dump the raw internal tree data.  This option is applicable to C++ only.
  .RE
  .RS 4
  .RE
! .IP \fB\-fdump\-passes\fR 4
  .IX Item "-fdump-passes"
  Print on \fIstderr\fR the list of optimization passes that are turned
! on and off by the current command\-line options.
! .IP \fB\-fdump\-statistics\-\fR\fIoption\fR 4
  .IX Item "-fdump-statistics-option"
  Enable and control dumping of pass statistics in a separate file.  The
  file name is generated by appending a suffix ending in
*************** form is used, \fB\-stats\fR causes count
*** 20175,20188 ****
  whole compilation unit while \fB\-details\fR dumps every event as
  the passes generate them.  The default with no option is to sum
  counters for each function compiled.
! .IP "\fB\-fdump\-tree\-all\fR" 4
  .IX Item "-fdump-tree-all"
  .PD 0
! .IP "\fB\-fdump\-tree\-\fR\fIswitch\fR" 4
  .IX Item "-fdump-tree-switch"
! .IP "\fB\-fdump\-tree\-\fR\fIswitch\fR\fB\-\fR\fIoptions\fR" 4
  .IX Item "-fdump-tree-switch-options"
! .IP "\fB\-fdump\-tree\-\fR\fIswitch\fR\fB\-\fR\fIoptions\fR\fB=\fR\fIfilename\fR" 4
  .IX Item "-fdump-tree-switch-options=filename"
  .PD
  Control the dumping at various stages of processing the intermediate
--- 20110,20123 ----
  whole compilation unit while \fB\-details\fR dumps every event as
  the passes generate them.  The default with no option is to sum
  counters for each function compiled.
! .IP \fB\-fdump\-tree\-all\fR 4
  .IX Item "-fdump-tree-all"
  .PD 0
! .IP \fB\-fdump\-tree\-\fR\fIswitch\fR 4
  .IX Item "-fdump-tree-switch"
! .IP \fB\-fdump\-tree\-\fR\fIswitch\fR\fB\-\fR\fIoptions\fR 4
  .IX Item "-fdump-tree-switch-options"
! .IP \fB\-fdump\-tree\-\fR\fIswitch\fR\fB\-\fR\fIoptions\fR\fB=\fR\fIfilename\fR 4
  .IX Item "-fdump-tree-switch-options=filename"
  .PD
  Control the dumping at various stages of processing the intermediate
*************** which control the details of the dump.
*** 20192,20279 ****
  to all dumps; those that are not meaningful are ignored.  The
  following options are available
  .RS 4
! .IP "\fBaddress\fR" 4
  .IX Item "address"
  Print the address of each node.  Usually this is not meaningful as it
  changes according to the environment and source file.  Its primary use
  is for tying up a dump file with a debug environment.
! .IP "\fBasmname\fR" 4
  .IX Item "asmname"
  If \f(CW\*(C`DECL_ASSEMBLER_NAME\*(C'\fR has been set for a given decl, use that
  in the dump instead of \f(CW\*(C`DECL_NAME\*(C'\fR.  Its primary use is ease of
  use working backward from mangled names in the assembly file.
! .IP "\fBslim\fR" 4
  .IX Item "slim"
! When dumping front-end intermediate representations, inhibit dumping
  of members of a scope or body of a function merely because that scope
  has been reached.  Only dump such items when they are directly reachable
  by some other path.
  .Sp
! When dumping pretty-printed trees, this option inhibits dumping the
  bodies of control structures.
  .Sp
! When dumping \s-1RTL,\s0 print the \s-1RTL\s0 in slim (condensed) form instead of
! the default LISP-like representation.
! .IP "\fBraw\fR" 4
  .IX Item "raw"
  Print a raw representation of the tree.  By default, trees are
! pretty-printed into a C\-like representation.
! .IP "\fBdetails\fR" 4
  .IX Item "details"
  Enable more detailed dumps (not honored by every dump option). Also
  include information from the optimization passes.
! .IP "\fBstats\fR" 4
  .IX Item "stats"
  Enable dumping various statistics about the pass (not honored by every dump
  option).
! .IP "\fBblocks\fR" 4
  .IX Item "blocks"
  Enable showing basic block boundaries (disabled in raw dumps).
! .IP "\fBgraph\fR" 4
  .IX Item "graph"
  For each of the other indicated dump files (\fB\-fdump\-rtl\-\fR\fIpass\fR),
  dump a representation of the control flow graph suitable for viewing with
! GraphViz to \fI\fIfile\fI.\fIpassid\fI.\fIpass\fI.dot\fR.  Each function in
! the file is pretty-printed as a subgraph, so that GraphViz can render them
  all in a single plot.
  .Sp
! This option currently only works for \s-1RTL\s0 dumps, and the \s-1RTL\s0 is always
  dumped in slim form.
! .IP "\fBvops\fR" 4
  .IX Item "vops"
  Enable showing virtual operands for every statement.
! .IP "\fBlineno\fR" 4
  .IX Item "lineno"
  Enable showing line numbers for statements.
! .IP "\fBuid\fR" 4
  .IX Item "uid"
! Enable showing the unique \s-1ID\s0 (\f(CW\*(C`DECL_UID\*(C'\fR) for each variable.
! .IP "\fBverbose\fR" 4
  .IX Item "verbose"
  Enable showing the tree dump for each statement.
! .IP "\fBeh\fR" 4
  .IX Item "eh"
! Enable showing the \s-1EH\s0 region number holding each statement.
! .IP "\fBscev\fR" 4
  .IX Item "scev"
  Enable showing scalar evolution analysis details.
! .IP "\fBoptimized\fR" 4
  .IX Item "optimized"
  Enable showing optimization information (only available in certain
  passes).
! .IP "\fBmissed\fR" 4
  .IX Item "missed"
  Enable showing missed optimization information (only available in certain
  passes).
! .IP "\fBnote\fR" 4
  .IX Item "note"
  Enable other detailed optimization information (only available in
  certain passes).
! .IP "\fBall\fR" 4
  .IX Item "all"
  Turn on all options, except \fBraw\fR, \fBslim\fR, \fBverbose\fR
  and \fBlineno\fR.
! .IP "\fBoptall\fR" 4
  .IX Item "optall"
  Turn on all optimization options, i.e., \fBoptimized\fR,
  \&\fBmissed\fR, and \fBnote\fR.
--- 20127,20214 ----
  to all dumps; those that are not meaningful are ignored.  The
  following options are available
  .RS 4
! .IP \fBaddress\fR 4
  .IX Item "address"
  Print the address of each node.  Usually this is not meaningful as it
  changes according to the environment and source file.  Its primary use
  is for tying up a dump file with a debug environment.
! .IP \fBasmname\fR 4
  .IX Item "asmname"
  If \f(CW\*(C`DECL_ASSEMBLER_NAME\*(C'\fR has been set for a given decl, use that
  in the dump instead of \f(CW\*(C`DECL_NAME\*(C'\fR.  Its primary use is ease of
  use working backward from mangled names in the assembly file.
! .IP \fBslim\fR 4
  .IX Item "slim"
! When dumping front\-end intermediate representations, inhibit dumping
  of members of a scope or body of a function merely because that scope
  has been reached.  Only dump such items when they are directly reachable
  by some other path.
  .Sp
! When dumping pretty\-printed trees, this option inhibits dumping the
  bodies of control structures.
  .Sp
! When dumping RTL, print the RTL in slim (condensed) form instead of
! the default LISP\-like representation.
! .IP \fBraw\fR 4
  .IX Item "raw"
  Print a raw representation of the tree.  By default, trees are
! pretty\-printed into a C\-like representation.
! .IP \fBdetails\fR 4
  .IX Item "details"
  Enable more detailed dumps (not honored by every dump option). Also
  include information from the optimization passes.
! .IP \fBstats\fR 4
  .IX Item "stats"
  Enable dumping various statistics about the pass (not honored by every dump
  option).
! .IP \fBblocks\fR 4
  .IX Item "blocks"
  Enable showing basic block boundaries (disabled in raw dumps).
! .IP \fBgraph\fR 4
  .IX Item "graph"
  For each of the other indicated dump files (\fB\-fdump\-rtl\-\fR\fIpass\fR),
  dump a representation of the control flow graph suitable for viewing with
! GraphViz to \fIfile.passid.pass.dot\fR.  Each function in
! the file is pretty\-printed as a subgraph, so that GraphViz can render them
  all in a single plot.
  .Sp
! This option currently only works for RTL dumps, and the RTL is always
  dumped in slim form.
! .IP \fBvops\fR 4
  .IX Item "vops"
  Enable showing virtual operands for every statement.
! .IP \fBlineno\fR 4
  .IX Item "lineno"
  Enable showing line numbers for statements.
! .IP \fBuid\fR 4
  .IX Item "uid"
! Enable showing the unique ID (\f(CW\*(C`DECL_UID\*(C'\fR) for each variable.
! .IP \fBverbose\fR 4
  .IX Item "verbose"
  Enable showing the tree dump for each statement.
! .IP \fBeh\fR 4
  .IX Item "eh"
! Enable showing the EH region number holding each statement.
! .IP \fBscev\fR 4
  .IX Item "scev"
  Enable showing scalar evolution analysis details.
! .IP \fBoptimized\fR 4
  .IX Item "optimized"
  Enable showing optimization information (only available in certain
  passes).
! .IP \fBmissed\fR 4
  .IX Item "missed"
  Enable showing missed optimization information (only available in certain
  passes).
! .IP \fBnote\fR 4
  .IX Item "note"
  Enable other detailed optimization information (only available in
  certain passes).
! .IP \fBall\fR 4
  .IX Item "all"
  Turn on all options, except \fBraw\fR, \fBslim\fR, \fBverbose\fR
  and \fBlineno\fR.
! .IP \fBoptall\fR 4
  .IX Item "optall"
  Turn on all optimization options, i.e., \fBoptimized\fR,
  \&\fBmissed\fR, and \fBnote\fR.
*************** Turn on all optimization options, i.e.,
*** 20282,20321 ****
  .Sp
  To determine what tree dumps are available or find the dump for a pass
  of interest follow the steps below.
! .IP "1." 4
  .IX Item "1."
! Invoke \s-1GCC\s0 with \fB\-fdump\-passes\fR and in the \fIstderr\fR output
  look for a code that corresponds to the pass you are interested in.
  For example, the codes \f(CW\*(C`tree\-evrp\*(C'\fR, \f(CW\*(C`tree\-vrp1\*(C'\fR, and
  \&\f(CW\*(C`tree\-vrp2\*(C'\fR correspond to the three Value Range Propagation passes.
  The number at the end distinguishes distinct invocations of the same pass.
! .IP "2." 4
  .IX Item "2."
  To enable the creation of the dump file, append the pass code to
! the \fB\-fdump\-\fR option prefix and invoke \s-1GCC\s0 with it.  For example,
  to enable the dump from the Early Value Range Propagation pass, invoke
! \&\s-1GCC\s0 with the \fB\-fdump\-tree\-evrp\fR option.  Optionally, you may
! specify the name of the dump file.  If you don't specify one, \s-1GCC\s0
  creates as described below.
! .IP "3." 4
  .IX Item "3."
  Find the pass dump in a file whose name is composed of three components
! separated by a period: the name of the source file \s-1GCC\s0 was invoked to
  compile, a numeric suffix indicating the pass number followed by the
! letter \fBt\fR for tree passes (and the letter \fBr\fR for \s-1RTL\s0 passes),
! and finally the pass code.  For example, the Early \s-1VRP\s0 pass dump might
  be in a file named \fImyfile.c.038t.evrp\fR in the current working
  directory.  Note that the numeric codes are not stable and may change
! from one version of \s-1GCC\s0 to another.
  .RE
  .RS 4
  .RE
! .IP "\fB\-fopt\-info\fR" 4
  .IX Item "-fopt-info"
  .PD 0
! .IP "\fB\-fopt\-info\-\fR\fIoptions\fR" 4
  .IX Item "-fopt-info-options"
! .IP "\fB\-fopt\-info\-\fR\fIoptions\fR\fB=\fR\fIfilename\fR" 4
  .IX Item "-fopt-info-options=filename"
  .PD
  Controls optimization dumps from various optimization passes. If the
--- 20217,20256 ----
  .Sp
  To determine what tree dumps are available or find the dump for a pass
  of interest follow the steps below.
! .IP 1. 4
  .IX Item "1."
! Invoke GCC with \fB\-fdump\-passes\fR and in the \fIstderr\fR output
  look for a code that corresponds to the pass you are interested in.
  For example, the codes \f(CW\*(C`tree\-evrp\*(C'\fR, \f(CW\*(C`tree\-vrp1\*(C'\fR, and
  \&\f(CW\*(C`tree\-vrp2\*(C'\fR correspond to the three Value Range Propagation passes.
  The number at the end distinguishes distinct invocations of the same pass.
! .IP 2. 4
  .IX Item "2."
  To enable the creation of the dump file, append the pass code to
! the \fB\-fdump\-\fR option prefix and invoke GCC with it.  For example,
  to enable the dump from the Early Value Range Propagation pass, invoke
! GCC with the \fB\-fdump\-tree\-evrp\fR option.  Optionally, you may
! specify the name of the dump file.  If you don\*(Aqt specify one, GCC
  creates as described below.
! .IP 3. 4
  .IX Item "3."
  Find the pass dump in a file whose name is composed of three components
! separated by a period: the name of the source file GCC was invoked to
  compile, a numeric suffix indicating the pass number followed by the
! letter \fBt\fR for tree passes (and the letter \fBr\fR for RTL passes),
! and finally the pass code.  For example, the Early VRP pass dump might
  be in a file named \fImyfile.c.038t.evrp\fR in the current working
  directory.  Note that the numeric codes are not stable and may change
! from one version of GCC to another.
  .RE
  .RS 4
  .RE
! .IP \fB\-fopt\-info\fR 4
  .IX Item "-fopt-info"
  .PD 0
! .IP \fB\-fopt\-info\-\fR\fIoptions\fR 4
  .IX Item "-fopt-info-options"
! .IP \fB\-fopt\-info\-\fR\fIoptions\fR\fB=\fR\fIfilename\fR 4
  .IX Item "-fopt-info-options=filename"
  .PD
  Controls optimization dumps from various optimization passes. If the
*************** optimizations.
*** 20325,20363 ****
  .Sp
  The \fIoptions\fR can be divided into three groups:
  .RS 4
! .IP "1." 4
  .IX Item "1."
  options describing what kinds of messages should be emitted,
! .IP "2." 4
  .IX Item "2."
  options describing the verbosity of the dump, and
! .IP "3." 4
  .IX Item "3."
  options describing which optimizations should be included.
  .RE
  .RS 4
  .Sp
  The options from each group can be freely mixed as they are
! non-overlapping. However, in case of any conflicts,
  the later options override the earlier options on the command
  line.
  .Sp
  The following options control which kinds of messages should be emitted:
! .IP "\fBoptimized\fR" 4
  .IX Item "optimized"
  Print information when an optimization is successfully applied. It is
  up to a pass to decide which information is relevant. For example, the
  vectorizer passes print the source location of loops which are
  successfully vectorized.
! .IP "\fBmissed\fR" 4
  .IX Item "missed"
  Print information about missed optimizations. Individual passes
  control which information to include in the output.
! .IP "\fBnote\fR" 4
  .IX Item "note"
  Print verbose information about optimizations, such as certain
  transformations, more detailed messages about decisions etc.
! .IP "\fBall\fR" 4
  .IX Item "all"
  Print detailed optimization information. This includes
  \&\fBoptimized\fR, \fBmissed\fR, and \fBnote\fR.
--- 20260,20298 ----
  .Sp
  The \fIoptions\fR can be divided into three groups:
  .RS 4
! .IP 1. 4
  .IX Item "1."
  options describing what kinds of messages should be emitted,
! .IP 2. 4
  .IX Item "2."
  options describing the verbosity of the dump, and
! .IP 3. 4
  .IX Item "3."
  options describing which optimizations should be included.
  .RE
  .RS 4
  .Sp
  The options from each group can be freely mixed as they are
! non\-overlapping. However, in case of any conflicts,
  the later options override the earlier options on the command
  line.
  .Sp
  The following options control which kinds of messages should be emitted:
! .IP \fBoptimized\fR 4
  .IX Item "optimized"
  Print information when an optimization is successfully applied. It is
  up to a pass to decide which information is relevant. For example, the
  vectorizer passes print the source location of loops which are
  successfully vectorized.
! .IP \fBmissed\fR 4
  .IX Item "missed"
  Print information about missed optimizations. Individual passes
  control which information to include in the output.
! .IP \fBnote\fR 4
  .IX Item "note"
  Print verbose information about optimizations, such as certain
  transformations, more detailed messages about decisions etc.
! .IP \fBall\fR 4
  .IX Item "all"
  Print detailed optimization information. This includes
  \&\fBoptimized\fR, \fBmissed\fR, and \fBnote\fR.
*************** Print detailed optimization information.
*** 20365,20396 ****
  .RS 4
  .Sp
  The following option controls the dump verbosity:
! .IP "\fBinternals\fR" 4
  .IX Item "internals"
! By default, only \*(L"high-level\*(R" messages are emitted. This option enables
  additional, more detailed, messages, which are likely to only be of interest
! to \s-1GCC\s0 developers.
  .RE
  .RS 4
  .Sp
  One or more of the following option keywords can be used to describe a
  group of optimizations:
! .IP "\fBipa\fR" 4
  .IX Item "ipa"
  Enable dumps from all interprocedural optimizations.
! .IP "\fBloop\fR" 4
  .IX Item "loop"
  Enable dumps from all loop optimizations.
! .IP "\fBinline\fR" 4
  .IX Item "inline"
  Enable dumps from all inlining optimizations.
! .IP "\fBomp\fR" 4
  .IX Item "omp"
! Enable dumps from all \s-1OMP\s0 (Offloading and Multi Processing) optimizations.
! .IP "\fBvec\fR" 4
  .IX Item "vec"
  Enable dumps from all vectorization optimizations.
! .IP "\fBoptall\fR" 4
  .IX Item "optall"
  Enable dumps from all optimizations. This is a superset of
  the optimization groups listed above.
--- 20300,20331 ----
  .RS 4
  .Sp
  The following option controls the dump verbosity:
! .IP \fBinternals\fR 4
  .IX Item "internals"
! By default, only "high\-level" messages are emitted. This option enables
  additional, more detailed, messages, which are likely to only be of interest
! to GCC developers.
  .RE
  .RS 4
  .Sp
  One or more of the following option keywords can be used to describe a
  group of optimizations:
! .IP \fBipa\fR 4
  .IX Item "ipa"
  Enable dumps from all interprocedural optimizations.
! .IP \fBloop\fR 4
  .IX Item "loop"
  Enable dumps from all loop optimizations.
! .IP \fBinline\fR 4
  .IX Item "inline"
  Enable dumps from all inlining optimizations.
! .IP \fBomp\fR 4
  .IX Item "omp"
! Enable dumps from all OMP (Offloading and Multi Processing) optimizations.
! .IP \fBvec\fR 4
  .IX Item "vec"
  Enable dumps from all vectorization optimizations.
! .IP \fBoptall\fR 4
  .IX Item "optall"
  Enable dumps from all optimizations. This is a superset of
  the optimization groups listed above.
*************** the optimization groups listed above.
*** 20398,20406 ****
  .RS 4
  .Sp
  If \fIoptions\fR is
! omitted, it defaults to \fBoptimized-optall\fR, which means to dump messages
  about successful optimizations from all the passes, omitting messages
! that are treated as \*(L"internals\*(R".
  .Sp
  If the \fIfilename\fR is provided, then the dumps from all the
  applicable optimizations are concatenated into the \fIfilename\fR.
--- 20333,20341 ----
  .RS 4
  .Sp
  If \fIoptions\fR is
! omitted, it defaults to \fBoptimized\-optall\fR, which means to dump messages
  about successful optimizations from all the passes, omitting messages
! that are treated as "internals".
  .Sp
  If the \fIfilename\fR is provided, then the dumps from all the
  applicable optimizations are concatenated into the \fIfilename\fR.
*************** the first option takes effect and the su
*** 20462,20498 ****
  ignored. Thus only \fIvec.miss\fR is produced which contains
  dumps from the vectorizer about missed opportunities.
  .RE
! .IP "\fB\-fsave\-optimization\-record\fR" 4
  .IX Item "-fsave-optimization-record"
! Write a \s-1SRCFILE\s0.opt\-record.json.gz file detailing what optimizations
  were performed, for those optimizations that support \fB\-fopt\-info\fR.
  .Sp
  This option is experimental and the format of the data within the
! compressed \s-1JSON\s0 file is subject to change.
  .Sp
! It is roughly equivalent to a machine-readable version of
  \&\fB\-fopt\-info\-all\fR, as a collection of messages with source file,
  line number and column number, with the following additional data for
  each message:
  .RS 4
! .IP "*" 4
  the execution count of the code being optimized, along with metadata about
  whether this was from actual profile data, or just an estimate, allowing
  consumers to prioritize messages by code hotness,
! .IP "*" 4
  the function name of the code being optimized, where applicable,
! .IP "*" 4
! the \*(L"inlining chain\*(R" for the code being optimized, so that when
  a function is inlined into several different places (which might
  themselves be inlined), the reader can distinguish between the copies,
! .IP "*" 4
  objects identifying those parts of the message that refer to expressions,
! statements or symbol-table nodes, which of these categories they are, and,
  when available, their source code location,
! .IP "*" 4
! the \s-1GCC\s0 pass that emitted the message, and
! .IP "*" 4
! the location in \s-1GCC\s0's own code from which the message was emitted
  .RE
  .RS 4
  .Sp
--- 20397,20433 ----
  ignored. Thus only \fIvec.miss\fR is produced which contains
  dumps from the vectorizer about missed opportunities.
  .RE
! .IP \fB\-fsave\-optimization\-record\fR 4
  .IX Item "-fsave-optimization-record"
! Write a SRCFILE.opt\-record.json.gz file detailing what optimizations
  were performed, for those optimizations that support \fB\-fopt\-info\fR.
  .Sp
  This option is experimental and the format of the data within the
! compressed JSON file is subject to change.
  .Sp
! It is roughly equivalent to a machine\-readable version of
  \&\fB\-fopt\-info\-all\fR, as a collection of messages with source file,
  line number and column number, with the following additional data for
  each message:
  .RS 4
! .IP * 4
  the execution count of the code being optimized, along with metadata about
  whether this was from actual profile data, or just an estimate, allowing
  consumers to prioritize messages by code hotness,
! .IP * 4
  the function name of the code being optimized, where applicable,
! .IP * 4
! the "inlining chain" for the code being optimized, so that when
  a function is inlined into several different places (which might
  themselves be inlined), the reader can distinguish between the copies,
! .IP * 4
  objects identifying those parts of the message that refer to expressions,
! statements or symbol\-table nodes, which of these categories they are, and,
  when available, their source code location,
! .IP * 4
! the GCC pass that emitted the message, and
! .IP * 4
! the location in GCC\*(Aqs own code from which the message was emitted
  .RE
  .RS 4
  .Sp
*************** Additionally, some messages are logicall
*** 20500,20506 ****
  messages, reflecting implementation details of the optimization
  passes.
  .RE
! .IP "\fB\-fsched\-verbose=\fR\fIn\fR" 4
  .IX Item "-fsched-verbose=n"
  On targets that use instruction scheduling, this option controls the
  amount of debugging output the scheduler prints to the dump files.
--- 20435,20441 ----
  messages, reflecting implementation details of the optimization
  passes.
  .RE
! .IP \fB\-fsched\-verbose=\fR\fIn\fR 4
  .IX Item "-fsched-verbose=n"
  On targets that use instruction scheduling, this option controls the
  amount of debugging output the scheduler prints to the dump files.
*************** For \fIn\fR greater than zero, \fB\-fsch
*** 20509,20574 ****
  same information as \fB\-fdump\-rtl\-sched1\fR and \fB\-fdump\-rtl\-sched2\fR.
  For \fIn\fR greater than one, it also output basic block probabilities,
  detailed ready list information and unit/insn info.  For \fIn\fR greater
! than two, it includes \s-1RTL\s0 at abort point, control-flow and regions info.
  And for \fIn\fR over four, \fB\-fsched\-verbose\fR also includes
  dependence info.
! .IP "\fB\-fenable\-\fR\fIkind\fR\fB\-\fR\fIpass\fR" 4
  .IX Item "-fenable-kind-pass"
  .PD 0
! .IP "\fB\-fdisable\-\fR\fIkind\fR\fB\-\fR\fIpass\fR\fB=\fR\fIrange-list\fR" 4
  .IX Item "-fdisable-kind-pass=range-list"
  .PD
  This is a set of options that are used to explicitly disable/enable
! optimization passes.  These options are intended for use for debugging \s-1GCC.\s0
  Compiler users should use regular options for enabling/disabling
  passes instead.
  .RS 4
! .IP "\fB\-fdisable\-ipa\-\fR\fIpass\fR" 4
  .IX Item "-fdisable-ipa-pass"
! Disable \s-1IPA\s0 pass \fIpass\fR. \fIpass\fR is the pass name.  If the same pass is
  statically invoked in the compiler multiple times, the pass name should be
  appended with a sequential number starting from 1.
! .IP "\fB\-fdisable\-rtl\-\fR\fIpass\fR" 4
  .IX Item "-fdisable-rtl-pass"
  .PD 0
! .IP "\fB\-fdisable\-rtl\-\fR\fIpass\fR\fB=\fR\fIrange-list\fR" 4
  .IX Item "-fdisable-rtl-pass=range-list"
  .PD
! Disable \s-1RTL\s0 pass \fIpass\fR.  \fIpass\fR is the pass name.  If the same pass is
  statically invoked in the compiler multiple times, the pass name should be
! appended with a sequential number starting from 1.  \fIrange-list\fR is a
! comma-separated list of function ranges or assembler names.  Each range is a number
  pair separated by a colon.  The range is inclusive in both ends.  If the range
  is trivial, the number pair can be simplified as a single number.  If the
! function's call graph node's \fIuid\fR falls within one of the specified ranges,
  the \fIpass\fR is disabled for that function.  The \fIuid\fR is shown in the
  function header of a dump file, and the pass names can be dumped by using
  option \fB\-fdump\-passes\fR.
! .IP "\fB\-fdisable\-tree\-\fR\fIpass\fR" 4
  .IX Item "-fdisable-tree-pass"
  .PD 0
! .IP "\fB\-fdisable\-tree\-\fR\fIpass\fR\fB=\fR\fIrange-list\fR" 4
  .IX Item "-fdisable-tree-pass=range-list"
  .PD
  Disable tree pass \fIpass\fR.  See \fB\-fdisable\-rtl\fR for the description of
  option arguments.
! .IP "\fB\-fenable\-ipa\-\fR\fIpass\fR" 4
  .IX Item "-fenable-ipa-pass"
! Enable \s-1IPA\s0 pass \fIpass\fR.  \fIpass\fR is the pass name.  If the same pass is
  statically invoked in the compiler multiple times, the pass name should be
  appended with a sequential number starting from 1.
! .IP "\fB\-fenable\-rtl\-\fR\fIpass\fR" 4
  .IX Item "-fenable-rtl-pass"
  .PD 0
! .IP "\fB\-fenable\-rtl\-\fR\fIpass\fR\fB=\fR\fIrange-list\fR" 4
  .IX Item "-fenable-rtl-pass=range-list"
  .PD
! Enable \s-1RTL\s0 pass \fIpass\fR.  See \fB\-fdisable\-rtl\fR for option argument
  description and examples.
! .IP "\fB\-fenable\-tree\-\fR\fIpass\fR" 4
  .IX Item "-fenable-tree-pass"
  .PD 0
! .IP "\fB\-fenable\-tree\-\fR\fIpass\fR\fB=\fR\fIrange-list\fR" 4
  .IX Item "-fenable-tree-pass=range-list"
  .PD
  Enable tree pass \fIpass\fR.  See \fB\-fdisable\-rtl\fR for the description
--- 20444,20509 ----
  same information as \fB\-fdump\-rtl\-sched1\fR and \fB\-fdump\-rtl\-sched2\fR.
  For \fIn\fR greater than one, it also output basic block probabilities,
  detailed ready list information and unit/insn info.  For \fIn\fR greater
! than two, it includes RTL at abort point, control\-flow and regions info.
  And for \fIn\fR over four, \fB\-fsched\-verbose\fR also includes
  dependence info.
! .IP \fB\-fenable\-\fR\fIkind\fR\fB\-\fR\fIpass\fR 4
  .IX Item "-fenable-kind-pass"
  .PD 0
! .IP \fB\-fdisable\-\fR\fIkind\fR\fB\-\fR\fIpass\fR\fB=\fR\fIrange\-list\fR 4
  .IX Item "-fdisable-kind-pass=range-list"
  .PD
  This is a set of options that are used to explicitly disable/enable
! optimization passes.  These options are intended for use for debugging GCC.
  Compiler users should use regular options for enabling/disabling
  passes instead.
  .RS 4
! .IP \fB\-fdisable\-ipa\-\fR\fIpass\fR 4
  .IX Item "-fdisable-ipa-pass"
! Disable IPA pass \fIpass\fR. \fIpass\fR is the pass name.  If the same pass is
  statically invoked in the compiler multiple times, the pass name should be
  appended with a sequential number starting from 1.
! .IP \fB\-fdisable\-rtl\-\fR\fIpass\fR 4
  .IX Item "-fdisable-rtl-pass"
  .PD 0
! .IP \fB\-fdisable\-rtl\-\fR\fIpass\fR\fB=\fR\fIrange\-list\fR 4
  .IX Item "-fdisable-rtl-pass=range-list"
  .PD
! Disable RTL pass \fIpass\fR.  \fIpass\fR is the pass name.  If the same pass is
  statically invoked in the compiler multiple times, the pass name should be
! appended with a sequential number starting from 1.  \fIrange\-list\fR is a
! comma\-separated list of function ranges or assembler names.  Each range is a number
  pair separated by a colon.  The range is inclusive in both ends.  If the range
  is trivial, the number pair can be simplified as a single number.  If the
! function\*(Aqs call graph node\*(Aqs \fIuid\fR falls within one of the specified ranges,
  the \fIpass\fR is disabled for that function.  The \fIuid\fR is shown in the
  function header of a dump file, and the pass names can be dumped by using
  option \fB\-fdump\-passes\fR.
! .IP \fB\-fdisable\-tree\-\fR\fIpass\fR 4
  .IX Item "-fdisable-tree-pass"
  .PD 0
! .IP \fB\-fdisable\-tree\-\fR\fIpass\fR\fB=\fR\fIrange\-list\fR 4
  .IX Item "-fdisable-tree-pass=range-list"
  .PD
  Disable tree pass \fIpass\fR.  See \fB\-fdisable\-rtl\fR for the description of
  option arguments.
! .IP \fB\-fenable\-ipa\-\fR\fIpass\fR 4
  .IX Item "-fenable-ipa-pass"
! Enable IPA pass \fIpass\fR.  \fIpass\fR is the pass name.  If the same pass is
  statically invoked in the compiler multiple times, the pass name should be
  appended with a sequential number starting from 1.
! .IP \fB\-fenable\-rtl\-\fR\fIpass\fR 4
  .IX Item "-fenable-rtl-pass"
  .PD 0
! .IP \fB\-fenable\-rtl\-\fR\fIpass\fR\fB=\fR\fIrange\-list\fR 4
  .IX Item "-fenable-rtl-pass=range-list"
  .PD
! Enable RTL pass \fIpass\fR.  See \fB\-fdisable\-rtl\fR for option argument
  description and examples.
! .IP \fB\-fenable\-tree\-\fR\fIpass\fR 4
  .IX Item "-fenable-tree-pass"
  .PD 0
! .IP \fB\-fenable\-tree\-\fR\fIpass\fR\fB=\fR\fIrange\-list\fR 4
  .IX Item "-fenable-tree-pass=range-list"
  .PD
  Enable tree pass \fIpass\fR.  See \fB\-fdisable\-rtl\fR for the description
*************** Here are some examples showing uses of t
*** 20595,20612 ****
  \&           \-fenable\-tree\-unroll
  .Ve
  .RE
! .IP "\fB\-fchecking\fR" 4
  .IX Item "-fchecking"
  .PD 0
! .IP "\fB\-fchecking=\fR\fIn\fR" 4
  .IX Item "-fchecking=n"
  .PD
  Enable internal consistency checking.  The default depends on
  the compiler configuration.  \fB\-fchecking=2\fR enables further
  internal consistency checking that might affect code generation.
! .IP "\fB\-frandom\-seed=\fR\fIstring\fR" 4
  .IX Item "-frandom-seed=string"
! This option provides a seed that \s-1GCC\s0 uses in place of
  random numbers in generating certain symbol names
  that have to be different in every compiled file.  It is also used to
  place unique stamps in coverage data files and the object files that
--- 20530,20547 ----
  \&           \-fenable\-tree\-unroll
  .Ve
  .RE
! .IP \fB\-fchecking\fR 4
  .IX Item "-fchecking"
  .PD 0
! .IP \fB\-fchecking=\fR\fIn\fR 4
  .IX Item "-fchecking=n"
  .PD
  Enable internal consistency checking.  The default depends on
  the compiler configuration.  \fB\-fchecking=2\fR enables further
  internal consistency checking that might affect code generation.
! .IP \fB\-frandom\-seed=\fR\fIstring\fR 4
  .IX Item "-frandom-seed=string"
! This option provides a seed that GCC uses in place of
  random numbers in generating certain symbol names
  that have to be different in every compiled file.  It is also used to
  place unique stamps in coverage data files and the object files that
*************** produce them.  You can use the \fB\-fran
*** 20614,20647 ****
  reproducibly identical object files.
  .Sp
  The \fIstring\fR can either be a number (decimal, octal or hex) or an
! arbitrary string (in which case it's converted to a number by
! computing \s-1CRC32\s0).
  .Sp
  The \fIstring\fR should be different for every file you compile.
! .IP "\fB\-save\-temps\fR" 4
  .IX Item "-save-temps"
! Store the usual \*(L"temporary\*(R" intermediate files permanently; name them
  as auxiliary output files, as specified described under
  \&\fB\-dumpbase\fR and \fB\-dumpdir\fR.
  .Sp
! When used in combination with the \fB\-x\fR command-line option,
  \&\fB\-save\-temps\fR is sensible enough to avoid overwriting an
  input source file with the same extension as an intermediate file.
  The corresponding intermediate file may be obtained by renaming the
  source file before using \fB\-save\-temps\fR.
! .IP "\fB\-save\-temps=cwd\fR" 4
  .IX Item "-save-temps=cwd"
  Equivalent to \fB\-save\-temps \-dumpdir ./\fR.
! .IP "\fB\-save\-temps=obj\fR" 4
  .IX Item "-save-temps=obj"
! Equivalent to \fB\-save\-temps \-dumpdir \f(BIoutdir/\fB\fR, where
  \&\fIoutdir/\fR is the directory of the output file specified after the
  \&\fB\-o\fR option, including any directory separators.  If the
  \&\fB\-o\fR option is not used, the \fB\-save\-temps=obj\fR switch
  behaves like \fB\-save\-temps=cwd\fR.
! .IP "\fB\-time\fR[\fB=\fR\fIfile\fR]" 4
  .IX Item "-time[=file]"
! Report the \s-1CPU\s0 time taken by each subprocess in the compilation
  sequence.  For C source files, this is the compiler proper and assembler
  (plus the linker if linking is done).
  .Sp
--- 20549,20582 ----
  reproducibly identical object files.
  .Sp
  The \fIstring\fR can either be a number (decimal, octal or hex) or an
! arbitrary string (in which case it\*(Aqs converted to a number by
! computing CRC32).
  .Sp
  The \fIstring\fR should be different for every file you compile.
! .IP \fB\-save\-temps\fR 4
  .IX Item "-save-temps"
! Store the usual "temporary" intermediate files permanently; name them
  as auxiliary output files, as specified described under
  \&\fB\-dumpbase\fR and \fB\-dumpdir\fR.
  .Sp
! When used in combination with the \fB\-x\fR command\-line option,
  \&\fB\-save\-temps\fR is sensible enough to avoid overwriting an
  input source file with the same extension as an intermediate file.
  The corresponding intermediate file may be obtained by renaming the
  source file before using \fB\-save\-temps\fR.
! .IP \fB\-save\-temps=cwd\fR 4
  .IX Item "-save-temps=cwd"
  Equivalent to \fB\-save\-temps \-dumpdir ./\fR.
! .IP \fB\-save\-temps=obj\fR 4
  .IX Item "-save-temps=obj"
! Equivalent to \fB\-save\-temps \-dumpdir \fR\f(BIoutdir/\fR, where
  \&\fIoutdir/\fR is the directory of the output file specified after the
  \&\fB\-o\fR option, including any directory separators.  If the
  \&\fB\-o\fR option is not used, the \fB\-save\-temps=obj\fR switch
  behaves like \fB\-save\-temps=cwd\fR.
! .IP \fB\-time\fR[\fB=\fR\fIfile\fR] 4
  .IX Item "-time[=file]"
! Report the CPU time taken by each subprocess in the compilation
  sequence.  For C source files, this is the compiler proper and assembler
  (plus the linker if linking is done).
  .Sp
*************** Without the specification of an output f
*** 20652,20659 ****
  \&        # as 0.00 0.01
  .Ve
  .Sp
! The first number on each line is the \*(L"user time\*(R", that is time spent
! executing the program itself.  The second number is \*(L"system time\*(R",
  time spent executing operating system routines on behalf of the program.
  Both numbers are in seconds.
  .Sp
--- 20587,20594 ----
  \&        # as 0.00 0.01
  .Ve
  .Sp
! The first number on each line is the "user time", that is time spent
! executing the program itself.  The second number is "system time",
  time spent executing operating system routines on behalf of the program.
  Both numbers are in seconds.
  .Sp
*************** named file, and it looks like this:
*** 20665,20680 ****
  \&        0.00 0.01 as <options>
  .Ve
  .Sp
! The \*(L"user time\*(R" and the \*(L"system time\*(R" are moved before the program
  name, and the options passed to the program are displayed, so that one
  can later tell what file was being compiled, and with which options.
! .IP "\fB\-fdump\-final\-insns\fR[\fB=\fR\fIfile\fR]" 4
  .IX Item "-fdump-final-insns[=file]"
! Dump the final internal representation (\s-1RTL\s0) to \fIfile\fR.  If the
  optional argument is omitted (or if \fIfile\fR is \f(CW\*(C`.\*(C'\fR), the name
  of the dump file is determined by appending \f(CW\*(C`.gkd\*(C'\fR to the
  dump base name, see \fB\-dumpbase\fR.
! .IP "\fB\-fcompare\-debug\fR[\fB=\fR\fIopts\fR]" 4
  .IX Item "-fcompare-debug[=opts]"
  If no error occurs during compilation, run the compiler a second time,
  adding \fIopts\fR and \fB\-fcompare\-debug\-second\fR to the arguments
--- 20600,20615 ----
  \&        0.00 0.01 as <options>
  .Ve
  .Sp
! The "user time" and the "system time" are moved before the program
  name, and the options passed to the program are displayed, so that one
  can later tell what file was being compiled, and with which options.
! .IP \fB\-fdump\-final\-insns\fR[\fB=\fR\fIfile\fR] 4
  .IX Item "-fdump-final-insns[=file]"
! Dump the final internal representation (RTL) to \fIfile\fR.  If the
  optional argument is omitted (or if \fIfile\fR is \f(CW\*(C`.\*(C'\fR), the name
  of the dump file is determined by appending \f(CW\*(C`.gkd\*(C'\fR to the
  dump base name, see \fB\-dumpbase\fR.
! .IP \fB\-fcompare\-debug\fR[\fB=\fR\fIopts\fR] 4
  .IX Item "-fcompare-debug[=opts]"
  If no error occurs during compilation, run the compiler a second time,
  adding \fIopts\fR and \fB\-fcompare\-debug\-second\fR to the arguments
*************** representation in both compilations, and
*** 20683,20706 ****
  .Sp
  If the equal sign is omitted, the default \fB\-gtoggle\fR is used.
  .Sp
! The environment variable \fB\s-1GCC_COMPARE_DEBUG\s0\fR, if defined, non-empty
  and nonzero, implicitly enables \fB\-fcompare\-debug\fR.  If
! \&\fB\s-1GCC_COMPARE_DEBUG\s0\fR is defined to a string starting with a dash,
  then it is used for \fIopts\fR, otherwise the default \fB\-gtoggle\fR
  is used.
  .Sp
  \&\fB\-fcompare\-debug=\fR, with the equal sign but without \fIopts\fR,
  is equivalent to \fB\-fno\-compare\-debug\fR, which disables the dumping
  of the final representation and the second compilation, preventing even
! \&\fB\s-1GCC_COMPARE_DEBUG\s0\fR from taking effect.
  .Sp
  To verify full coverage during \fB\-fcompare\-debug\fR testing, set
! \&\fB\s-1GCC_COMPARE_DEBUG\s0\fR to say \fB\-fcompare\-debug\-not\-overridden\fR,
! which \s-1GCC\s0 rejects as an invalid option in any actual compilation
  (rather than preprocessing, assembly or linking).  To get just a
! warning, setting \fB\s-1GCC_COMPARE_DEBUG\s0\fR to \fB\-w%n\-fcompare\-debug
  not overridden\fR will do.
! .IP "\fB\-fcompare\-debug\-second\fR" 4
  .IX Item "-fcompare-debug-second"
  This option is implicitly passed to the compiler for the second
  compilation requested by \fB\-fcompare\-debug\fR, along with options to
--- 20618,20641 ----
  .Sp
  If the equal sign is omitted, the default \fB\-gtoggle\fR is used.
  .Sp
! The environment variable \fBGCC_COMPARE_DEBUG\fR, if defined, non\-empty
  and nonzero, implicitly enables \fB\-fcompare\-debug\fR.  If
! \&\fBGCC_COMPARE_DEBUG\fR is defined to a string starting with a dash,
  then it is used for \fIopts\fR, otherwise the default \fB\-gtoggle\fR
  is used.
  .Sp
  \&\fB\-fcompare\-debug=\fR, with the equal sign but without \fIopts\fR,
  is equivalent to \fB\-fno\-compare\-debug\fR, which disables the dumping
  of the final representation and the second compilation, preventing even
! \&\fBGCC_COMPARE_DEBUG\fR from taking effect.
  .Sp
  To verify full coverage during \fB\-fcompare\-debug\fR testing, set
! \&\fBGCC_COMPARE_DEBUG\fR to say \fB\-fcompare\-debug\-not\-overridden\fR,
! which GCC rejects as an invalid option in any actual compilation
  (rather than preprocessing, assembly or linking).  To get just a
! warning, setting \fBGCC_COMPARE_DEBUG\fR to \fB\-w%n\-fcompare\-debug
  not overridden\fR will do.
! .IP \fB\-fcompare\-debug\-second\fR 4
  .IX Item "-fcompare-debug-second"
  This option is implicitly passed to the compiler for the second
  compilation requested by \fB\-fcompare\-debug\fR, along with options to
*************** overwriting those generated by the first
*** 20713,20719 ****
  When this option is passed to the compiler driver, it causes the
  \&\fIfirst\fR compilation to be skipped, which makes it useful for little
  other than debugging the compiler proper.
! .IP "\fB\-gtoggle\fR" 4
  .IX Item "-gtoggle"
  Turn off generation of debug info, if leaving out this option
  generates it, or turn it on at level 2 otherwise.  The position of this
--- 20648,20654 ----
  When this option is passed to the compiler driver, it causes the
  \&\fIfirst\fR compilation to be skipped, which makes it useful for little
  other than debugging the compiler proper.
! .IP \fB\-gtoggle\fR 4
  .IX Item "-gtoggle"
  Turn off generation of debug info, if leaving out this option
  generates it, or turn it on at level 2 otherwise.  The position of this
*************** argument in the command line does not ma
*** 20721,20731 ****
  other options are processed, and it does so only once, no matter how
  many times it is given.  This is mainly intended to be used with
  \&\fB\-fcompare\-debug\fR.
! .IP "\fB\-fvar\-tracking\-assignments\-toggle\fR" 4
  .IX Item "-fvar-tracking-assignments-toggle"
  Toggle \fB\-fvar\-tracking\-assignments\fR, in the same way that
  \&\fB\-gtoggle\fR toggles \fB\-g\fR.
! .IP "\fB\-Q\fR" 4
  .IX Item "-Q"
  When used on the command line prior to \fB\-\-help=\fR, \fB\-Q\fR
  acts as a modifier to the help output.
--- 20656,20666 ----
  other options are processed, and it does so only once, no matter how
  many times it is given.  This is mainly intended to be used with
  \&\fB\-fcompare\-debug\fR.
! .IP \fB\-fvar\-tracking\-assignments\-toggle\fR 4
  .IX Item "-fvar-tracking-assignments-toggle"
  Toggle \fB\-fvar\-tracking\-assignments\fR, in the same way that
  \&\fB\-gtoggle\fR toggles \fB\-g\fR.
! .IP \fB\-Q\fR 4
  .IX Item "-Q"
  When used on the command line prior to \fB\-\-help=\fR, \fB\-Q\fR
  acts as a modifier to the help output.
*************** acts as a modifier to the help output.
*** 20733,20796 ****
  Otherwise, this option makes the compiler print out each function name
  as it is compiled, and print some statistics about each pass when it
  finishes.
! .IP "\fB\-ftime\-report\fR" 4
  .IX Item "-ftime-report"
  Makes the compiler print some statistics to stderr about the time consumed
  by each pass when it finishes.
  .Sp
! If \s-1SARIF\s0 output of diagnostics was requested via
  \&\fB\-fdiagnostics\-format=sarif\-file\fR or
  \&\fB\-fdiagnostics\-format=sarif\-stderr\fR then the \fB\-ftime\-report\fR
! information is instead emitted in \s-1JSON\s0 form as part of \s-1SARIF\s0 output.  The
! precise format of this \s-1JSON\s0 data is subject to change, and the values may
  not exactly match those emitted to stderr due to being written out at a
  slightly different place within the compiler.
! .IP "\fB\-ftime\-report\-details\fR" 4
  .IX Item "-ftime-report-details"
  Record the time consumed by infrastructure parts separately for each pass.
! .IP "\fB\-fira\-verbose=\fR\fIn\fR" 4
  .IX Item "-fira-verbose=n"
  Control the verbosity of the dump file for the integrated register allocator.
  The default value is 5.  If the value \fIn\fR is greater or equal to 10,
  the dump output is sent to stderr using the same format as \fIn\fR minus 10.
! .IP "\fB\-flto\-report\fR" 4
  .IX Item "-flto-report"
! Prints a report with internal details on the workings of the link-time
  optimizer.  The contents of this report vary from version to version.
! It is meant to be useful to \s-1GCC\s0 developers when processing object
! files in \s-1LTO\s0 mode (via \fB\-flto\fR).
  .Sp
  Disabled by default.
! .IP "\fB\-flto\-report\-wpa\fR" 4
  .IX Item "-flto-report-wpa"
! Like \fB\-flto\-report\fR, but only print for the \s-1WPA\s0 phase of link-time
  optimization.
! .IP "\fB\-fmem\-report\fR" 4
  .IX Item "-fmem-report"
  Makes the compiler print some statistics about permanent memory
  allocation when it finishes.
! .IP "\fB\-fmem\-report\-wpa\fR" 4
  .IX Item "-fmem-report-wpa"
  Makes the compiler print some statistics about permanent memory
! allocation for the \s-1WPA\s0 phase only.
! .IP "\fB\-fpre\-ipa\-mem\-report\fR" 4
  .IX Item "-fpre-ipa-mem-report"
  .PD 0
! .IP "\fB\-fpost\-ipa\-mem\-report\fR" 4
  .IX Item "-fpost-ipa-mem-report"
  .PD
  Makes the compiler print some statistics about permanent memory
  allocation before or after interprocedural optimization.
! .IP "\fB\-fmultiflags\fR" 4
  .IX Item "-fmultiflags"
! This option enables multilib-aware \f(CW\*(C`TFLAGS\*(C'\fR to be used to build
  target libraries with options different from those the compiler is
  configured to use by default, through the use of specs set up by compiler internals, by the target, or by builders at
  configure time.
  .Sp
  Like \f(CW\*(C`TFLAGS\*(C'\fR, this allows the target libraries to be built for
  portable baseline environments, while the compiler defaults to more
! demanding ones.  That's useful because users can easily override the
  defaults the compiler is configured to use to build their own programs,
  if the defaults are not ideal for their target environment, whereas
  rebuilding the runtime libraries is usually not as easy or desirable.
--- 20668,20731 ----
  Otherwise, this option makes the compiler print out each function name
  as it is compiled, and print some statistics about each pass when it
  finishes.
! .IP \fB\-ftime\-report\fR 4
  .IX Item "-ftime-report"
  Makes the compiler print some statistics to stderr about the time consumed
  by each pass when it finishes.
  .Sp
! If SARIF output of diagnostics was requested via
  \&\fB\-fdiagnostics\-format=sarif\-file\fR or
  \&\fB\-fdiagnostics\-format=sarif\-stderr\fR then the \fB\-ftime\-report\fR
! information is instead emitted in JSON form as part of SARIF output.  The
! precise format of this JSON data is subject to change, and the values may
  not exactly match those emitted to stderr due to being written out at a
  slightly different place within the compiler.
! .IP \fB\-ftime\-report\-details\fR 4
  .IX Item "-ftime-report-details"
  Record the time consumed by infrastructure parts separately for each pass.
! .IP \fB\-fira\-verbose=\fR\fIn\fR 4
  .IX Item "-fira-verbose=n"
  Control the verbosity of the dump file for the integrated register allocator.
  The default value is 5.  If the value \fIn\fR is greater or equal to 10,
  the dump output is sent to stderr using the same format as \fIn\fR minus 10.
! .IP \fB\-flto\-report\fR 4
  .IX Item "-flto-report"
! Prints a report with internal details on the workings of the link\-time
  optimizer.  The contents of this report vary from version to version.
! It is meant to be useful to GCC developers when processing object
! files in LTO mode (via \fB\-flto\fR).
  .Sp
  Disabled by default.
! .IP \fB\-flto\-report\-wpa\fR 4
  .IX Item "-flto-report-wpa"
! Like \fB\-flto\-report\fR, but only print for the WPA phase of link\-time
  optimization.
! .IP \fB\-fmem\-report\fR 4
  .IX Item "-fmem-report"
  Makes the compiler print some statistics about permanent memory
  allocation when it finishes.
! .IP \fB\-fmem\-report\-wpa\fR 4
  .IX Item "-fmem-report-wpa"
  Makes the compiler print some statistics about permanent memory
! allocation for the WPA phase only.
! .IP \fB\-fpre\-ipa\-mem\-report\fR 4
  .IX Item "-fpre-ipa-mem-report"
  .PD 0
! .IP \fB\-fpost\-ipa\-mem\-report\fR 4
  .IX Item "-fpost-ipa-mem-report"
  .PD
  Makes the compiler print some statistics about permanent memory
  allocation before or after interprocedural optimization.
! .IP \fB\-fmultiflags\fR 4
  .IX Item "-fmultiflags"
! This option enables multilib\-aware \f(CW\*(C`TFLAGS\*(C'\fR to be used to build
  target libraries with options different from those the compiler is
  configured to use by default, through the use of specs set up by compiler internals, by the target, or by builders at
  configure time.
  .Sp
  Like \f(CW\*(C`TFLAGS\*(C'\fR, this allows the target libraries to be built for
  portable baseline environments, while the compiler defaults to more
! demanding ones.  That\*(Aqs useful because users can easily override the
  defaults the compiler is configured to use to build their own programs,
  if the defaults are not ideal for their target environment, whereas
  rebuilding the runtime libraries is usually not as easy or desirable.
*************** selected for different multilibs.  The w
*** 20800,20830 ****
  build with \fBmake TFLAGS=\-fmultiflags\fR, after configuring
  \&\fB\-\-with\-specs=%{fmultiflags:...}\fR.
  .Sp
! This option is discarded by the driver once it's done processing driver
  self spec.
  .Sp
  It is also useful to check that \f(CW\*(C`TFLAGS\*(C'\fR are being used to build
! all target libraries, by configuring a non-bootstrap compiler
! \&\fB\-\-with\-specs='%{!fmultiflags:%emissing \s-1TFLAGS\s0}'\fR and building
  the compiler and target libraries.
! .IP "\fB\-fprofile\-report\fR" 4
  .IX Item "-fprofile-report"
  Makes the compiler print some statistics about consistency of the
  (estimated) profile and effect of individual passes.
! .IP "\fB\-fstack\-usage\fR" 4
  .IX Item "-fstack-usage"
  Makes the compiler output stack usage information for the program, on a
! per-function basis.  The filename for the dump is made by appending
  \&\fI.su\fR to the \fIauxname\fR.  \fIauxname\fR is generated from the name of
  the output file, if explicitly specified and it is not an executable,
  otherwise it is the basename of the source file.  An entry is made up
  of three fields:
  .RS 4
! .IP "*" 4
  The name of the function.
! .IP "*" 4
  A number of bytes.
! .IP "*" 4
  One or more qualifiers: \f(CW\*(C`static\*(C'\fR, \f(CW\*(C`dynamic\*(C'\fR, \f(CW\*(C`bounded\*(C'\fR.
  .RE
  .RS 4
--- 20735,20765 ----
  build with \fBmake TFLAGS=\-fmultiflags\fR, after configuring
  \&\fB\-\-with\-specs=%{fmultiflags:...}\fR.
  .Sp
! This option is discarded by the driver once it\*(Aqs done processing driver
  self spec.
  .Sp
  It is also useful to check that \f(CW\*(C`TFLAGS\*(C'\fR are being used to build
! all target libraries, by configuring a non\-bootstrap compiler
! \&\fB\-\-with\-specs=\*(Aq%{!fmultiflags:%emissing TFLAGS}\*(Aq\fR and building
  the compiler and target libraries.
! .IP \fB\-fprofile\-report\fR 4
  .IX Item "-fprofile-report"
  Makes the compiler print some statistics about consistency of the
  (estimated) profile and effect of individual passes.
! .IP \fB\-fstack\-usage\fR 4
  .IX Item "-fstack-usage"
  Makes the compiler output stack usage information for the program, on a
! per\-function basis.  The filename for the dump is made by appending
  \&\fI.su\fR to the \fIauxname\fR.  \fIauxname\fR is generated from the name of
  the output file, if explicitly specified and it is not an executable,
  otherwise it is the basename of the source file.  An entry is made up
  of three fields:
  .RS 4
! .IP * 4
  The name of the function.
! .IP * 4
  A number of bytes.
! .IP * 4
  One or more qualifiers: \f(CW\*(C`static\*(C'\fR, \f(CW\*(C`dynamic\*(C'\fR, \f(CW\*(C`bounded\*(C'\fR.
  .RE
  .RS 4
*************** the function.  If it is not present, the
*** 20844,20904 ****
  not bounded at compile time and the second field only represents the
  bounded part.
  .RE
! .IP "\fB\-fstats\fR" 4
  .IX Item "-fstats"
! Emit statistics about front-end processing at the end of the compilation.
! This option is supported only by the \*(C+ front end, and
  the information is generally only useful to the G++ development team.
! .IP "\fB\-fdbg\-cnt\-list\fR" 4
  .IX Item "-fdbg-cnt-list"
  Print the name and the counter upper bound for all debug counters.
! .IP "\fB\-fdbg\-cnt=\fR\fIcounter-value-list\fR" 4
  .IX Item "-fdbg-cnt=counter-value-list"
! Set the internal debug counter lower and upper bound.  \fIcounter-value-list\fR
! is a comma-separated list of \fIname\fR:\fIlower_bound1\fR\-\fIupper_bound1\fR
  [:\fIlower_bound2\fR\-\fIupper_bound2\fR...] tuples which sets
  the name of the counter and list of closed intervals.
  The \fIlower_bound\fR is optional and is zero
  initialized if not set.
  For example, with \fB\-fdbg\-cnt=dce:2\-4:10\-11,tail_call:10\fR,
! \&\f(CW\*(C`dbg_cnt(dce)\*(C'\fR returns true only for second, third, fourth, tenth and
  eleventh invocation.
! For \f(CW\*(C`dbg_cnt(tail_call)\*(C'\fR true is returned for first 10 invocations.
! .IP "\fB\-print\-file\-name=\fR\fIlibrary\fR" 4
  .IX Item "-print-file-name=library"
  Print the full absolute name of the library file \fIlibrary\fR that
! would be used when linking\-\-\-and don't do anything else.  With this
! option, \s-1GCC\s0 does not compile or link anything; it just prints the
  file name.
! .IP "\fB\-print\-multi\-directory\fR" 4
  .IX Item "-print-multi-directory"
  Print the directory name corresponding to the multilib selected by any
  other switches present in the command line.  This directory is supposed
! to exist in \fB\s-1GCC_EXEC_PREFIX\s0\fR.
! .IP "\fB\-print\-multi\-lib\fR" 4
  .IX Item "-print-multi-lib"
  Print the mapping from multilib directory names to compiler switches
  that enable them.  The directory name is separated from the switches by
  \&\fB;\fR, and each switch starts with an \fB@\fR instead of the
  \&\fB\-\fR, without spaces between multiple switches.  This is supposed to
  ease shell processing.
! .IP "\fB\-print\-multi\-os\-directory\fR" 4
  .IX Item "-print-multi-os-directory"
! Print the path to \s-1OS\s0 libraries for the selected
! multilib, relative to some \fIlib\fR subdirectory.  If \s-1OS\s0 libraries are
  present in the \fIlib\fR subdirectory and no multilibs are used, this is
! usually just \fI.\fR, if \s-1OS\s0 libraries are present in \fIlib\fIsuffix\fI\fR
  sibling directories this prints e.g. \fI../lib64\fR, \fI../lib\fR or
! \&\fI../lib32\fR, or if \s-1OS\s0 libraries are present in \fIlib/\fIsubdir\fI\fR
  subdirectories it prints e.g. \fIamd64\fR, \fIsparcv9\fR or \fIev6\fR.
! .IP "\fB\-print\-multiarch\fR" 4
  .IX Item "-print-multiarch"
! Print the path to \s-1OS\s0 libraries for the selected multiarch,
  relative to some \fIlib\fR subdirectory.
! .IP "\fB\-print\-prog\-name=\fR\fIprogram\fR" 4
  .IX Item "-print-prog-name=program"
  Like \fB\-print\-file\-name\fR, but searches for a program such as \fBcpp\fR.
! .IP "\fB\-print\-libgcc\-file\-name\fR" 4
  .IX Item "-print-libgcc-file-name"
  Same as \fB\-print\-file\-name=libgcc.a\fR.
  .Sp
--- 20779,20839 ----
  not bounded at compile time and the second field only represents the
  bounded part.
  .RE
! .IP \fB\-fstats\fR 4
  .IX Item "-fstats"
! Emit statistics about front\-end processing at the end of the compilation.
! This option is supported only by the C++ front end, and
  the information is generally only useful to the G++ development team.
! .IP \fB\-fdbg\-cnt\-list\fR 4
  .IX Item "-fdbg-cnt-list"
  Print the name and the counter upper bound for all debug counters.
! .IP \fB\-fdbg\-cnt=\fR\fIcounter\-value\-list\fR 4
  .IX Item "-fdbg-cnt=counter-value-list"
! Set the internal debug counter lower and upper bound.  \fIcounter\-value\-list\fR
! is a comma\-separated list of \fIname\fR:\fIlower_bound1\fR\-\fIupper_bound1\fR
  [:\fIlower_bound2\fR\-\fIupper_bound2\fR...] tuples which sets
  the name of the counter and list of closed intervals.
  The \fIlower_bound\fR is optional and is zero
  initialized if not set.
  For example, with \fB\-fdbg\-cnt=dce:2\-4:10\-11,tail_call:10\fR,
! \&\f(CWdbg_cnt(dce)\fR returns true only for second, third, fourth, tenth and
  eleventh invocation.
! For \f(CWdbg_cnt(tail_call)\fR true is returned for first 10 invocations.
! .IP \fB\-print\-file\-name=\fR\fIlibrary\fR 4
  .IX Item "-print-file-name=library"
  Print the full absolute name of the library file \fIlibrary\fR that
! would be used when linking\-\-\-and don\*(Aqt do anything else.  With this
! option, GCC does not compile or link anything; it just prints the
  file name.
! .IP \fB\-print\-multi\-directory\fR 4
  .IX Item "-print-multi-directory"
  Print the directory name corresponding to the multilib selected by any
  other switches present in the command line.  This directory is supposed
! to exist in \fBGCC_EXEC_PREFIX\fR.
! .IP \fB\-print\-multi\-lib\fR 4
  .IX Item "-print-multi-lib"
  Print the mapping from multilib directory names to compiler switches
  that enable them.  The directory name is separated from the switches by
  \&\fB;\fR, and each switch starts with an \fB@\fR instead of the
  \&\fB\-\fR, without spaces between multiple switches.  This is supposed to
  ease shell processing.
! .IP \fB\-print\-multi\-os\-directory\fR 4
  .IX Item "-print-multi-os-directory"
! Print the path to OS libraries for the selected
! multilib, relative to some \fIlib\fR subdirectory.  If OS libraries are
  present in the \fIlib\fR subdirectory and no multilibs are used, this is
! usually just \fI.\fR, if OS libraries are present in \fIlibsuffix\fR
  sibling directories this prints e.g. \fI../lib64\fR, \fI../lib\fR or
! \&\fI../lib32\fR, or if OS libraries are present in \fIlib/subdir\fR
  subdirectories it prints e.g. \fIamd64\fR, \fIsparcv9\fR or \fIev6\fR.
! .IP \fB\-print\-multiarch\fR 4
  .IX Item "-print-multiarch"
! Print the path to OS libraries for the selected multiarch,
  relative to some \fIlib\fR subdirectory.
! .IP \fB\-print\-prog\-name=\fR\fIprogram\fR 4
  .IX Item "-print-prog-name=program"
  Like \fB\-print\-file\-name\fR, but searches for a program such as \fBcpp\fR.
! .IP \fB\-print\-libgcc\-file\-name\fR 4
  .IX Item "-print-libgcc-file-name"
  Same as \fB\-print\-file\-name=libgcc.a\fR.
  .Sp
*************** but you do want to link with \fIlibgcc.a
*** 20908,20965 ****
  .Vb 1
  \&        gcc \-nostdlib <files>... \`gcc \-print\-libgcc\-file\-name\`
  .Ve
! .IP "\fB\-print\-search\-dirs\fR" 4
  .IX Item "-print-search-dirs"
  Print the name of the configured installation directory and a list of
! program and library directories \fBgcc\fR searches\-\-\-and don't do anything else.
  .Sp
  This is useful when \fBgcc\fR prints the error message
  \&\fBinstallation problem, cannot exec cpp0: No such file or directory\fR.
  To resolve this you either need to put \fIcpp0\fR and the other compiler
  components where \fBgcc\fR expects to find them, or you can set the environment
! variable \fB\s-1GCC_EXEC_PREFIX\s0\fR to the directory where you installed them.
! Don't forget the trailing \fB/\fR.
! .IP "\fB\-print\-sysroot\fR" 4
  .IX Item "-print-sysroot"
  Print the target sysroot directory that is used during
  compilation.  This is the target sysroot specified either at configure
  time or using the \fB\-\-sysroot\fR option, possibly with an extra
  suffix that depends on compilation options.  If no target sysroot is
  specified, the option prints nothing.
! .IP "\fB\-print\-sysroot\-headers\-suffix\fR" 4
  .IX Item "-print-sysroot-headers-suffix"
  Print the suffix added to the target sysroot when searching for
  headers, or give an error if the compiler is not configured with such
! a suffix\-\-\-and don't do anything else.
! .IP "\fB\-dumpmachine\fR" 4
  .IX Item "-dumpmachine"
! Print the compiler's target machine (for example,
! \&\fBi686\-pc\-linux\-gnu\fR)\-\-\-and don't do anything else.
! .IP "\fB\-dumpversion\fR" 4
  .IX Item "-dumpversion"
! Print the compiler version (for example, \f(CW3.0\fR, \f(CW6.3.0\fR or \f(CW7\fR)\-\-\-and don't do
  anything else.  This is the compiler version used in filesystem paths and
  specs. Depending on how the compiler has been configured it can be just
  a single number (major version), two numbers separated by a dot (major and
  minor version) or three numbers separated by dots (major, minor and patchlevel
  version).
! .IP "\fB\-dumpfullversion\fR" 4
  .IX Item "-dumpfullversion"
! Print the full compiler version\-\-\-and don't do anything else. The output is
  always three numbers separated by dots, major, minor and patchlevel version.
! .IP "\fB\-dumpspecs\fR" 4
  .IX Item "-dumpspecs"
! Print the compiler's built-in specs\-\-\-and don't do anything else.  (This
! is used when \s-1GCC\s0 itself is being built.)
! .SS "Machine-Dependent Options"
  .IX Subsection "Machine-Dependent Options"
! Each target machine supported by \s-1GCC\s0 can have its own options\-\-\-for
  example, to allow you to compile for a particular processor variant or
! \&\s-1ABI,\s0 or to control optimizations specific to that machine.  By
! convention, the names of machine-specific options start with
  \&\fB\-m\fR.
  .PP
! Some configurations of the compiler also support additional target-specific
  options, usually for compatibility with other compilers on the same
  platform.
  .PP
--- 20843,20900 ----
  .Vb 1
  \&        gcc \-nostdlib <files>... \`gcc \-print\-libgcc\-file\-name\`
  .Ve
! .IP \fB\-print\-search\-dirs\fR 4
  .IX Item "-print-search-dirs"
  Print the name of the configured installation directory and a list of
! program and library directories \fBgcc\fR searches\-\-\-and don\*(Aqt do anything else.
  .Sp
  This is useful when \fBgcc\fR prints the error message
  \&\fBinstallation problem, cannot exec cpp0: No such file or directory\fR.
  To resolve this you either need to put \fIcpp0\fR and the other compiler
  components where \fBgcc\fR expects to find them, or you can set the environment
! variable \fBGCC_EXEC_PREFIX\fR to the directory where you installed them.
! Don\*(Aqt forget the trailing \fB/\fR.
! .IP \fB\-print\-sysroot\fR 4
  .IX Item "-print-sysroot"
  Print the target sysroot directory that is used during
  compilation.  This is the target sysroot specified either at configure
  time or using the \fB\-\-sysroot\fR option, possibly with an extra
  suffix that depends on compilation options.  If no target sysroot is
  specified, the option prints nothing.
! .IP \fB\-print\-sysroot\-headers\-suffix\fR 4
  .IX Item "-print-sysroot-headers-suffix"
  Print the suffix added to the target sysroot when searching for
  headers, or give an error if the compiler is not configured with such
! a suffix\-\-\-and don\*(Aqt do anything else.
! .IP \fB\-dumpmachine\fR 4
  .IX Item "-dumpmachine"
! Print the compiler\*(Aqs target machine (for example,
! \&\fBi686\-pc\-linux\-gnu\fR)\-\-\-and don\*(Aqt do anything else.
! .IP \fB\-dumpversion\fR 4
  .IX Item "-dumpversion"
! Print the compiler version (for example, \f(CW3.0\fR, \f(CW6.3.0\fR or \f(CW7\fR)\-\-\-and don\*(Aqt do
  anything else.  This is the compiler version used in filesystem paths and
  specs. Depending on how the compiler has been configured it can be just
  a single number (major version), two numbers separated by a dot (major and
  minor version) or three numbers separated by dots (major, minor and patchlevel
  version).
! .IP \fB\-dumpfullversion\fR 4
  .IX Item "-dumpfullversion"
! Print the full compiler version\-\-\-and don\*(Aqt do anything else. The output is
  always three numbers separated by dots, major, minor and patchlevel version.
! .IP \fB\-dumpspecs\fR 4
  .IX Item "-dumpspecs"
! Print the compiler\*(Aqs built\-in specs\-\-\-and don\*(Aqt do anything else.  (This
! is used when GCC itself is being built.)
! .SS "Machine\-Dependent Options"
  .IX Subsection "Machine-Dependent Options"
! Each target machine supported by GCC can have its own options\-\-\-for
  example, to allow you to compile for a particular processor variant or
! ABI, or to control optimizations specific to that machine.  By
! convention, the names of machine\-specific options start with
  \&\fB\-m\fR.
  .PP
! Some configurations of the compiler also support additional target\-specific
  options, usually for compatibility with other compilers on the same
  platform.
  .PP
*************** platform.
*** 20967,21014 ****
  .IX Subsection "AArch64 Options"
  .PP
  These options are defined for AArch64 implementations:
! .IP "\fB\-mabi=\fR\fIname\fR" 4
  .IX Item "-mabi=name"
  Generate code for the specified data model.  Permissible values
! are \fBilp32\fR for SysV-like data model where int, long int and pointers
! are 32 bits, and \fBlp64\fR for SysV-like data model where int is 32 bits,
  but long int and pointers are 64 bits.
  .Sp
  The default depends on the specific target configuration.  Note that
! the \s-1LP64\s0 and \s-1ILP32\s0 ABIs are not link-compatible; you must compile your
! entire program with the same \s-1ABI,\s0 and link with a compatible set of libraries.
  .Sp
  The \fBilp32\fR model is deprecated.
! .IP "\fB\-mbig\-endian\fR" 4
  .IX Item "-mbig-endian"
! Generate big-endian code.  This is the default when \s-1GCC\s0 is configured for an
  \&\fBaarch64_be\-*\-*\fR target.
! .IP "\fB\-mgeneral\-regs\-only\fR" 4
  .IX Item "-mgeneral-regs-only"
! Generate code which uses only the general-purpose registers.  This will prevent
! the compiler from using floating-point and Advanced \s-1SIMD\s0 registers but will not
  impose any restrictions on the assembler.
! .IP "\fB\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
! Generate little-endian code.  This is the default when \s-1GCC\s0 is configured for an
  \&\fBaarch64\-*\-*\fR but not an \fBaarch64_be\-*\-*\fR target.
! .IP "\fB\-mcmodel=tiny\fR" 4
  .IX Item "-mcmodel=tiny"
  Generate code for the tiny code model.  The program and its statically defined
  symbols must be within 1MB of each other.  Programs can be statically or
  dynamically linked.
! .IP "\fB\-mcmodel=small\fR" 4
  .IX Item "-mcmodel=small"
  Generate code for the small code model.  The program and its statically defined
  symbols must be within 4GB of each other.  Programs can be statically or
  dynamically linked.  This is the default code model.
! .IP "\fB\-mcmodel=large\fR" 4
  .IX Item "-mcmodel=large"
  Generate code for the large code model.  This makes no assumptions about
  addresses and sizes of sections.  Programs can be statically linked only.  The
  \&\fB\-mcmodel=large\fR option is incompatible with \fB\-mabi=ilp32\fR,
  \&\fB\-fpic\fR and \fB\-fPIC\fR.
! .IP "\fB\-mtp=\fR\fIname\fR" 4
  .IX Item "-mtp=name"
  Specify the system register to use as a thread pointer.  The valid values
  are \fBtpidr_el0\fR, \fBtpidrro_el0\fR, \fBtpidr_el1\fR, \fBtpidr_el2\fR,
--- 20902,20949 ----
  .IX Subsection "AArch64 Options"
  .PP
  These options are defined for AArch64 implementations:
! .IP \fB\-mabi=\fR\fIname\fR 4
  .IX Item "-mabi=name"
  Generate code for the specified data model.  Permissible values
! are \fBilp32\fR for SysV\-like data model where int, long int and pointers
! are 32 bits, and \fBlp64\fR for SysV\-like data model where int is 32 bits,
  but long int and pointers are 64 bits.
  .Sp
  The default depends on the specific target configuration.  Note that
! the LP64 and ILP32 ABIs are not link\-compatible; you must compile your
! entire program with the same ABI, and link with a compatible set of libraries.
  .Sp
  The \fBilp32\fR model is deprecated.
! .IP \fB\-mbig\-endian\fR 4
  .IX Item "-mbig-endian"
! Generate big\-endian code.  This is the default when GCC is configured for an
  \&\fBaarch64_be\-*\-*\fR target.
! .IP \fB\-mgeneral\-regs\-only\fR 4
  .IX Item "-mgeneral-regs-only"
! Generate code which uses only the general\-purpose registers.  This will prevent
! the compiler from using floating\-point and Advanced SIMD registers but will not
  impose any restrictions on the assembler.
! .IP \fB\-mlittle\-endian\fR 4
  .IX Item "-mlittle-endian"
! Generate little\-endian code.  This is the default when GCC is configured for an
  \&\fBaarch64\-*\-*\fR but not an \fBaarch64_be\-*\-*\fR target.
! .IP \fB\-mcmodel=tiny\fR 4
  .IX Item "-mcmodel=tiny"
  Generate code for the tiny code model.  The program and its statically defined
  symbols must be within 1MB of each other.  Programs can be statically or
  dynamically linked.
! .IP \fB\-mcmodel=small\fR 4
  .IX Item "-mcmodel=small"
  Generate code for the small code model.  The program and its statically defined
  symbols must be within 4GB of each other.  Programs can be statically or
  dynamically linked.  This is the default code model.
! .IP \fB\-mcmodel=large\fR 4
  .IX Item "-mcmodel=large"
  Generate code for the large code model.  This makes no assumptions about
  addresses and sizes of sections.  Programs can be statically linked only.  The
  \&\fB\-mcmodel=large\fR option is incompatible with \fB\-mabi=ilp32\fR,
  \&\fB\-fpic\fR and \fB\-fPIC\fR.
! .IP \fB\-mtp=\fR\fIname\fR 4
  .IX Item "-mtp=name"
  Specify the system register to use as a thread pointer.  The valid values
  are \fBtpidr_el0\fR, \fBtpidrro_el0\fR, \fBtpidr_el1\fR, \fBtpidr_el2\fR,
*************** are \fBtpidr_el0\fR, \fBtpidrro_el0\fR,
*** 21017,21044 ****
  The default setting is \fBtpidr_el0\fR.  It is recommended to compile all
  code intended to interoperate with the same value of this option to avoid
  accessing a different thread pointer from the wrong exception level.
! .IP "\fB\-mstrict\-align\fR" 4
  .IX Item "-mstrict-align"
  .PD 0
! .IP "\fB\-mno\-strict\-align\fR" 4
  .IX Item "-mno-strict-align"
  .PD
  Avoid or allow generating memory accesses that may not be aligned on a natural
  object boundary as described in the architecture specification.
! .IP "\fB\-momit\-leaf\-frame\-pointer\fR" 4
  .IX Item "-momit-leaf-frame-pointer"
  .PD 0
! .IP "\fB\-mno\-omit\-leaf\-frame\-pointer\fR" 4
  .IX Item "-mno-omit-leaf-frame-pointer"
  .PD
  Omit or keep the frame pointer in leaf functions.  The former behavior is the
  default.
! .IP "\fB\-mstack\-protector\-guard=\fR\fIguard\fR" 4
  .IX Item "-mstack-protector-guard=guard"
  .PD 0
! .IP "\fB\-mstack\-protector\-guard\-reg=\fR\fIreg\fR" 4
  .IX Item "-mstack-protector-guard-reg=reg"
! .IP "\fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR" 4
  .IX Item "-mstack-protector-guard-offset=offset"
  .PD
  Generate stack protection code using canary at \fIguard\fR.  Supported
--- 20952,20979 ----
  The default setting is \fBtpidr_el0\fR.  It is recommended to compile all
  code intended to interoperate with the same value of this option to avoid
  accessing a different thread pointer from the wrong exception level.
! .IP \fB\-mstrict\-align\fR 4
  .IX Item "-mstrict-align"
  .PD 0
! .IP \fB\-mno\-strict\-align\fR 4
  .IX Item "-mno-strict-align"
  .PD
  Avoid or allow generating memory accesses that may not be aligned on a natural
  object boundary as described in the architecture specification.
! .IP \fB\-momit\-leaf\-frame\-pointer\fR 4
  .IX Item "-momit-leaf-frame-pointer"
  .PD 0
! .IP \fB\-mno\-omit\-leaf\-frame\-pointer\fR 4
  .IX Item "-mno-omit-leaf-frame-pointer"
  .PD
  Omit or keep the frame pointer in leaf functions.  The former behavior is the
  default.
! .IP \fB\-mstack\-protector\-guard=\fR\fIguard\fR 4
  .IX Item "-mstack-protector-guard=guard"
  .PD 0
! .IP \fB\-mstack\-protector\-guard\-reg=\fR\fIreg\fR 4
  .IX Item "-mstack-protector-guard-reg=reg"
! .IP \fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR 4
  .IX Item "-mstack-protector-guard-offset=offset"
  .PD
  Generate stack protection code using canary at \fIguard\fR.  Supported
*************** which system register to use as base reg
*** 21052,21095 ****
  and from what offset from that base register. There is no default
  register or offset as this is entirely for use within the Linux
  kernel.
! .IP "\fB\-mtls\-dialect=desc\fR" 4
  .IX Item "-mtls-dialect=desc"
! Use \s-1TLS\s0 descriptors as the thread-local storage mechanism for dynamic accesses
! of \s-1TLS\s0 variables.  This is the default.
! .IP "\fB\-mtls\-dialect=traditional\fR" 4
  .IX Item "-mtls-dialect=traditional"
! Use traditional \s-1TLS\s0 as the thread-local storage mechanism for dynamic accesses
! of \s-1TLS\s0 variables.
! .IP "\fB\-mtls\-size=\fR\fIsize\fR" 4
  .IX Item "-mtls-size=size"
! Specify bit size of immediate \s-1TLS\s0 offsets.  Valid values are 12, 24, 32, 48.
  This option requires binutils 2.26 or newer.
! .IP "\fB\-mfix\-cortex\-a53\-835769\fR" 4
  .IX Item "-mfix-cortex-a53-835769"
  .PD 0
! .IP "\fB\-mno\-fix\-cortex\-a53\-835769\fR" 4
  .IX Item "-mno-fix-cortex-a53-835769"
  .PD
! Enable or disable the workaround for the \s-1ARM\s0 Cortex\-A53 erratum number 835769.
! This involves inserting a \s-1NOP\s0 instruction between memory instructions and
! 64\-bit integer multiply-accumulate instructions.  This flag will be ignored if
  an architecture or cpu is specified on the command line which does not need the
  workaround.
! .IP "\fB\-mfix\-cortex\-a53\-843419\fR" 4
  .IX Item "-mfix-cortex-a53-843419"
  .PD 0
! .IP "\fB\-mno\-fix\-cortex\-a53\-843419\fR" 4
  .IX Item "-mno-fix-cortex-a53-843419"
  .PD
! Enable or disable the workaround for the \s-1ARM\s0 Cortex\-A53 erratum number 843419.
  This erratum workaround is made at link time and this will only pass the
  corresponding flag to the linker.  This flag will be ignored if
  an architecture or cpu is specified on the command line which does not need the
  workaround.
! .IP "\fB\-mlow\-precision\-recip\-sqrt\fR" 4
  .IX Item "-mlow-precision-recip-sqrt"
  .PD 0
! .IP "\fB\-mno\-low\-precision\-recip\-sqrt\fR" 4
  .IX Item "-mno-low-precision-recip-sqrt"
  .PD
  Enable or disable the reciprocal square root approximation.
--- 20987,21030 ----
  and from what offset from that base register. There is no default
  register or offset as this is entirely for use within the Linux
  kernel.
! .IP \fB\-mtls\-dialect=desc\fR 4
  .IX Item "-mtls-dialect=desc"
! Use TLS descriptors as the thread\-local storage mechanism for dynamic accesses
! of TLS variables.  This is the default.
! .IP \fB\-mtls\-dialect=traditional\fR 4
  .IX Item "-mtls-dialect=traditional"
! Use traditional TLS as the thread\-local storage mechanism for dynamic accesses
! of TLS variables.
! .IP \fB\-mtls\-size=\fR\fIsize\fR 4
  .IX Item "-mtls-size=size"
! Specify bit size of immediate TLS offsets.  Valid values are 12, 24, 32, 48.
  This option requires binutils 2.26 or newer.
! .IP \fB\-mfix\-cortex\-a53\-835769\fR 4
  .IX Item "-mfix-cortex-a53-835769"
  .PD 0
! .IP \fB\-mno\-fix\-cortex\-a53\-835769\fR 4
  .IX Item "-mno-fix-cortex-a53-835769"
  .PD
! Enable or disable the workaround for the ARM Cortex\-A53 erratum number 835769.
! This involves inserting a NOP instruction between memory instructions and
! 64\-bit integer multiply\-accumulate instructions.  This flag will be ignored if
  an architecture or cpu is specified on the command line which does not need the
  workaround.
! .IP \fB\-mfix\-cortex\-a53\-843419\fR 4
  .IX Item "-mfix-cortex-a53-843419"
  .PD 0
! .IP \fB\-mno\-fix\-cortex\-a53\-843419\fR 4
  .IX Item "-mno-fix-cortex-a53-843419"
  .PD
! Enable or disable the workaround for the ARM Cortex\-A53 erratum number 843419.
  This erratum workaround is made at link time and this will only pass the
  corresponding flag to the linker.  This flag will be ignored if
  an architecture or cpu is specified on the command line which does not need the
  workaround.
! .IP \fB\-mlow\-precision\-recip\-sqrt\fR 4
  .IX Item "-mlow-precision-recip-sqrt"
  .PD 0
! .IP \fB\-mno\-low\-precision\-recip\-sqrt\fR 4
  .IX Item "-mno-low-precision-recip-sqrt"
  .PD
  Enable or disable the reciprocal square root approximation.
*************** This option only has an effect if \fB\-f
*** 21097,21106 ****
  \&\fB\-funsafe\-math\-optimizations\fR is used as well.  Enabling this reduces
  precision of reciprocal square root results to about 16 bits for
  single precision and to 32 bits for double precision.
! .IP "\fB\-mlow\-precision\-sqrt\fR" 4
  .IX Item "-mlow-precision-sqrt"
  .PD 0
! .IP "\fB\-mno\-low\-precision\-sqrt\fR" 4
  .IX Item "-mno-low-precision-sqrt"
  .PD
  Enable or disable the square root approximation.
--- 21032,21041 ----
  \&\fB\-funsafe\-math\-optimizations\fR is used as well.  Enabling this reduces
  precision of reciprocal square root results to about 16 bits for
  single precision and to 32 bits for double precision.
! .IP \fB\-mlow\-precision\-sqrt\fR 4
  .IX Item "-mlow-precision-sqrt"
  .PD 0
! .IP \fB\-mno\-low\-precision\-sqrt\fR 4
  .IX Item "-mno-low-precision-sqrt"
  .PD
  Enable or disable the square root approximation.
*************** This option only has an effect if \fB\-f
*** 21109,21118 ****
  precision of square root results to about 16 bits for
  single precision and to 32 bits for double precision.
  If enabled, it implies \fB\-mlow\-precision\-recip\-sqrt\fR.
! .IP "\fB\-mlow\-precision\-div\fR" 4
  .IX Item "-mlow-precision-div"
  .PD 0
! .IP "\fB\-mno\-low\-precision\-div\fR" 4
  .IX Item "-mno-low-precision-div"
  .PD
  Enable or disable the division approximation.
--- 21044,21053 ----
  precision of square root results to about 16 bits for
  single precision and to 32 bits for double precision.
  If enabled, it implies \fB\-mlow\-precision\-recip\-sqrt\fR.
! .IP \fB\-mlow\-precision\-div\fR 4
  .IX Item "-mlow-precision-div"
  .PD 0
! .IP \fB\-mno\-low\-precision\-div\fR 4
  .IX Item "-mno-low-precision-div"
  .PD
  Enable or disable the division approximation.
*************** This option only has an effect if \fB\-f
*** 21120,21129 ****
  \&\fB\-funsafe\-math\-optimizations\fR is used as well.  Enabling this reduces
  precision of division results to about 16 bits for
  single precision and to 32 bits for double precision.
! .IP "\fB\-mtrack\-speculation\fR" 4
  .IX Item "-mtrack-speculation"
  .PD 0
! .IP "\fB\-mno\-track\-speculation\fR" 4
  .IX Item "-mno-track-speculation"
  .PD
  Enable or disable generation of additional code to track speculative
--- 21055,21064 ----
  \&\fB\-funsafe\-math\-optimizations\fR is used as well.  Enabling this reduces
  precision of division results to about 16 bits for
  single precision and to 32 bits for double precision.
! .IP \fB\-mtrack\-speculation\fR 4
  .IX Item "-mtrack-speculation"
  .PD 0
! .IP \fB\-mno\-track\-speculation\fR 4
  .IX Item "-mno-track-speculation"
  .PD
  Enable or disable generation of additional code to track speculative
*************** execution through conditional branches.
*** 21131,21146 ****
  be used by the compiler when expanding calls to
  \&\f(CW\*(C`_\|_builtin_speculation_safe_copy\*(C'\fR to permit a more efficient code
  sequence to be generated.
! .IP "\fB\-moutline\-atomics\fR" 4
  .IX Item "-moutline-atomics"
  .PD 0
! .IP "\fB\-mno\-outline\-atomics\fR" 4
  .IX Item "-mno-outline-atomics"
  .PD
! Enable or disable calls to out-of-line helpers to implement atomic operations.
! These helpers will, at runtime, determine if the \s-1LSE\s0 instructions from
  ARMv8.1\-A can be used; if not, they will use the load/store\-exclusive
! instructions that are present in the base ARMv8.0 \s-1ISA.\s0
  .Sp
  This option is only applicable when compiling for the base ARMv8.0
  instruction set.  If using a later revision, e.g. \fB\-march=armv8.1\-a\fR
--- 21066,21081 ----
  be used by the compiler when expanding calls to
  \&\f(CW\*(C`_\|_builtin_speculation_safe_copy\*(C'\fR to permit a more efficient code
  sequence to be generated.
! .IP \fB\-moutline\-atomics\fR 4
  .IX Item "-moutline-atomics"
  .PD 0
! .IP \fB\-mno\-outline\-atomics\fR 4
  .IX Item "-mno-outline-atomics"
  .PD
! Enable or disable calls to out\-of\-line helpers to implement atomic operations.
! These helpers will, at runtime, determine if the LSE instructions from
  ARMv8.1\-A can be used; if not, they will use the load/store\-exclusive
! instructions that are present in the base ARMv8.0 ISA.
  .Sp
  This option is only applicable when compiling for the base ARMv8.0
  instruction set.  If using a later revision, e.g. \fB\-march=armv8.1\-a\fR
*************** or \fB\-march=armv8\-a+lse\fR, the ARMv8
*** 21148,21154 ****
  used directly.  The same applies when using \fB\-mcpu=\fR when the
  selected cpu supports the \fBlse\fR feature.
  This option is on by default.
! .IP "\fB\-march=\fR\fIname\fR" 4
  .IX Item "-march=name"
  Specify the name of the target architecture and, optionally, one or
  more feature modifiers.  This option has the form
--- 21083,21089 ----
  used directly.  The same applies when using \fB\-mcpu=\fR when the
  selected cpu supports the \fBlse\fR feature.
  This option is on by default.
! .IP \fB\-march=\fR\fIname\fR 4
  .IX Item "-march=name"
  Specify the name of the target architecture and, optionally, one or
  more feature modifiers.  This option has the form
*************** and the features that they enable by def
*** 21190,21225 ****
  .IX Item "armv9.3-a : Armv9.3-A : armv9.2-a, +mops"
  .IP "\fBarmv9.4\-a\fR : Armv9.4\-A : \fBarmv9.3\-a\fR, \fB+sve2p1\fR" 4
  .IX Item "armv9.4-a : Armv9.4-A : armv9.3-a, +sve2p1"
! .IP "\fBarmv9.5\-a\fR : Armv9.4\-A : \fBarmv9.4\-a\fR, \fBcpa\fR, \fB+faminmax\fR, \fB+lut\fR" 4
! .IX Item "armv9.5-a : Armv9.4-A : armv9.4-a, cpa, +faminmax, +lut"
  .IP "\fBarmv8\-r\fR : Armv8\-R : \fBarmv8\-r\fR" 4
  .IX Item "armv8-r : Armv8-R : armv8-r"
  .RE
  .RS 4
- .PD
  .Sp
  The value \fBnative\fR is available on native AArch64 GNU/Linux and
  causes the compiler to pick the architecture of the host system.  This
  option has no effect if the compiler is unable to recognize the
  architecture of the host system.  When \fB\-march=native\fR is given and
! no other \fB\-mcpu\fR or \fB\-mtune\fR is given then \s-1GCC\s0 will pick
! the host \s-1CPU\s0 as the \s-1CPU\s0 to tune for as well as select the architecture features
  from.  That is, \fB\-march=native\fR is treated as \fB\-mcpu=native\fR.
  .Sp
! The permissible values for \fIfeature\fR are listed in the sub-section
  on \fBaarch64\-feature\-modifiers,,\fR\fB\-march\fR \fBand\fR \fB\-mcpu\fR
  \&\fBFeature Modifiers\fR.  Where conflicting feature modifiers are
! specified, the right-most feature is used.
  .Sp
! \&\s-1GCC\s0 uses \fIname\fR to determine what kind of instructions it can emit
  when generating assembly code.  If \fB\-march\fR is specified
  without either of \fB\-mtune\fR or \fB\-mcpu\fR also being
  specified, the code is tuned to perform well across a range of target
  processors implementing the target architecture.
  .RE
! .IP "\fB\-mtune=\fR\fIname\fR" 4
  .IX Item "-mtune=name"
! Specify the name of the target processor for which \s-1GCC\s0 should tune the
  performance of the code.  Permissible values for this option are:
  \&\fBgeneric\fR, \fBcortex\-a35\fR, \fBcortex\-a53\fR, \fBcortex\-a55\fR,
  \&\fBcortex\-a57\fR, \fBcortex\-a72\fR, \fBcortex\-a73\fR, \fBcortex\-a75\fR,
--- 21125,21160 ----
  .IX Item "armv9.3-a : Armv9.3-A : armv9.2-a, +mops"
  .IP "\fBarmv9.4\-a\fR : Armv9.4\-A : \fBarmv9.3\-a\fR, \fB+sve2p1\fR" 4
  .IX Item "armv9.4-a : Armv9.4-A : armv9.3-a, +sve2p1"
! .IP "\fBarmv9.5\-a\fR : Armv9.5\-A : \fBarmv9.4\-a\fR, \fBcpa\fR, \fB+faminmax\fR, \fB+lut\fR" 4
! .IX Item "armv9.5-a : Armv9.5-A : armv9.4-a, cpa, +faminmax, +lut"
  .IP "\fBarmv8\-r\fR : Armv8\-R : \fBarmv8\-r\fR" 4
  .IX Item "armv8-r : Armv8-R : armv8-r"
+ .PD
  .RE
  .RS 4
  .Sp
  The value \fBnative\fR is available on native AArch64 GNU/Linux and
  causes the compiler to pick the architecture of the host system.  This
  option has no effect if the compiler is unable to recognize the
  architecture of the host system.  When \fB\-march=native\fR is given and
! no other \fB\-mcpu\fR or \fB\-mtune\fR is given then GCC will pick
! the host CPU as the CPU to tune for as well as select the architecture features
  from.  That is, \fB\-march=native\fR is treated as \fB\-mcpu=native\fR.
  .Sp
! The permissible values for \fIfeature\fR are listed in the sub\-section
  on \fBaarch64\-feature\-modifiers,,\fR\fB\-march\fR \fBand\fR \fB\-mcpu\fR
  \&\fBFeature Modifiers\fR.  Where conflicting feature modifiers are
! specified, the right\-most feature is used.
  .Sp
! GCC uses \fIname\fR to determine what kind of instructions it can emit
  when generating assembly code.  If \fB\-march\fR is specified
  without either of \fB\-mtune\fR or \fB\-mcpu\fR also being
  specified, the code is tuned to perform well across a range of target
  processors implementing the target architecture.
  .RE
! .IP \fB\-mtune=\fR\fIname\fR 4
  .IX Item "-mtune=name"
! Specify the name of the target processor for which GCC should tune the
  performance of the code.  Permissible values for this option are:
  \&\fBgeneric\fR, \fBcortex\-a35\fR, \fBcortex\-a53\fR, \fBcortex\-a55\fR,
  \&\fBcortex\-a57\fR, \fBcortex\-a72\fR, \fBcortex\-a73\fR, \fBcortex\-a75\fR,
*************** performance of the code.  Permissible va
*** 21237,21245 ****
  \&\fBocteontx2\fR, \fBocteontx2t98\fR, \fBocteontx2t96\fR
  \&\fBocteontx2t93\fR, \fBocteontx2f95\fR, \fBocteontx2f95n\fR,
  \&\fBocteontx2f95mm\fR,
! \&\fBa64fx\fR, \fBfujitsu-monaka\fR,
  \&\fBthunderx\fR, \fBthunderxt88\fR,
! \&\fBthunderxt88p1\fR, \fBthunderxt81\fR, \fBtsv110\fR,
  \&\fBthunderxt83\fR, \fBthunderx2t99\fR, \fBthunderx3t110\fR, \fBzeus\fR,
  \&\fBcortex\-a57.cortex\-a53\fR, \fBcortex\-a72.cortex\-a53\fR,
  \&\fBcortex\-a73.cortex\-a35\fR, \fBcortex\-a73.cortex\-a53\fR,
--- 21172,21180 ----
  \&\fBocteontx2\fR, \fBocteontx2t98\fR, \fBocteontx2t96\fR
  \&\fBocteontx2t93\fR, \fBocteontx2f95\fR, \fBocteontx2f95n\fR,
  \&\fBocteontx2f95mm\fR,
! \&\fBa64fx\fR, \fBfujitsu\-monaka\fR,
  \&\fBthunderx\fR, \fBthunderxt88\fR,
! \&\fBthunderxt88p1\fR, \fBthunderxt81\fR, \fBtsv110\fR, \fBhip12\fR,
  \&\fBthunderxt83\fR, \fBthunderx2t99\fR, \fBthunderx3t110\fR, \fBzeus\fR,
  \&\fBcortex\-a57.cortex\-a53\fR, \fBcortex\-a72.cortex\-a53\fR,
  \&\fBcortex\-a73.cortex\-a35\fR, \fBcortex\-a73.cortex\-a53\fR,
*************** performance of the code.  Permissible va
*** 21254,21268 ****
  The values \fBcortex\-a57.cortex\-a53\fR, \fBcortex\-a72.cortex\-a53\fR,
  \&\fBcortex\-a73.cortex\-a35\fR, \fBcortex\-a73.cortex\-a53\fR,
  \&\fBcortex\-a75.cortex\-a55\fR, \fBcortex\-a76.cortex\-a55\fR,
! \&\fBapple\-m1\fR, \fBapple\-m2\fR, \fBapple\-m3\fR, \fBgb10\fR specify that \s-1GCC\s0
  should tune for a big.LITTLE system.
  .Sp
! The value \fBneoverse\-512tvb\fR specifies that \s-1GCC\s0 should tune
! for Neoverse cores that (a) implement \s-1SVE\s0 and (b) have a total vector
! bandwidth of 512 bits per cycle.  In other words, the option tells \s-1GCC\s0 to
! tune for Neoverse cores that can execute 4 128\-bit Advanced \s-1SIMD\s0 arithmetic
! instructions a cycle and that can execute an equivalent number of \s-1SVE\s0
! arithmetic instructions per cycle (2 for 256\-bit \s-1SVE, 4\s0 for 128\-bit \s-1SVE\s0).
  This is more general than tuning for a specific core like Neoverse V1
  but is more specific than the default tuning described below.
  .Sp
--- 21189,21203 ----
  The values \fBcortex\-a57.cortex\-a53\fR, \fBcortex\-a72.cortex\-a53\fR,
  \&\fBcortex\-a73.cortex\-a35\fR, \fBcortex\-a73.cortex\-a53\fR,
  \&\fBcortex\-a75.cortex\-a55\fR, \fBcortex\-a76.cortex\-a55\fR,
! \&\fBapple\-m1\fR, \fBapple\-m2\fR, \fBapple\-m3\fR, \fBgb10\fR specify that GCC
  should tune for a big.LITTLE system.
  .Sp
! The value \fBneoverse\-512tvb\fR specifies that GCC should tune
! for Neoverse cores that (a) implement SVE and (b) have a total vector
! bandwidth of 512 bits per cycle.  In other words, the option tells GCC to
! tune for Neoverse cores that can execute 4 128\-bit Advanced SIMD arithmetic
! instructions a cycle and that can execute an equivalent number of SVE
! arithmetic instructions per cycle (2 for 256\-bit SVE, 4 for 128\-bit SVE).
  This is more general than tuning for a specific core like Neoverse V1
  but is more specific than the default tuning described below.
  .Sp
*************** are specified, the code is tuned to perf
*** 21275,21293 ****
  of target processors.
  .Sp
  This option cannot be suffixed by feature modifiers.
! .IP "\fB\-mcpu=\fR\fIname\fR" 4
  .IX Item "-mcpu=name"
  Specify the name of the target processor, optionally suffixed by one
  or more feature modifiers.  This option has the form
  \&\fB\-mcpu=\fR\fIcpu\fR{\fB+\fR[\fBno\fR]\fIfeature\fR}*, where
  the permissible values for \fIcpu\fR are the same as those available
  for \fB\-mtune\fR.  The permissible values for \fIfeature\fR are
! documented in the sub-section on
  \&\fBaarch64\-feature\-modifiers,,\fR\fB\-march\fR \fBand\fR \fB\-mcpu\fR
  \&\fBFeature Modifiers\fR.  Where conflicting feature modifiers are
! specified, the right-most feature is used.
  .Sp
! \&\s-1GCC\s0 uses \fIname\fR to determine what kind of instructions it can emit when
  generating assembly code (as if by \fB\-march\fR) and to determine
  the target processor for which to tune for performance (as if
  by \fB\-mtune\fR).  Where this option is used in conjunction
--- 21210,21228 ----
  of target processors.
  .Sp
  This option cannot be suffixed by feature modifiers.
! .IP \fB\-mcpu=\fR\fIname\fR 4
  .IX Item "-mcpu=name"
  Specify the name of the target processor, optionally suffixed by one
  or more feature modifiers.  This option has the form
  \&\fB\-mcpu=\fR\fIcpu\fR{\fB+\fR[\fBno\fR]\fIfeature\fR}*, where
  the permissible values for \fIcpu\fR are the same as those available
  for \fB\-mtune\fR.  The permissible values for \fIfeature\fR are
! documented in the sub\-section on
  \&\fBaarch64\-feature\-modifiers,,\fR\fB\-march\fR \fBand\fR \fB\-mcpu\fR
  \&\fBFeature Modifiers\fR.  Where conflicting feature modifiers are
! specified, the right\-most feature is used.
  .Sp
! GCC uses \fIname\fR to determine what kind of instructions it can emit when
  generating assembly code (as if by \fB\-march\fR) and to determine
  the target processor for which to tune for performance (as if
  by \fB\-mtune\fR).  Where this option is used in conjunction
*************** over the appropriate part of this option
*** 21296,21339 ****
  .Sp
  \&\fB\-mcpu=neoverse\-512tvb\fR is special in that it does not refer
  to a specific core, but instead refers to all Neoverse cores that
! (a) implement \s-1SVE\s0 and (b) have a total vector bandwidth of 512 bits
  a cycle.  Unless overridden by \fB\-march\fR,
  \&\fB\-mcpu=neoverse\-512tvb\fR generates code that can run on a
  Neoverse V1 core, since Neoverse V1 is the first Neoverse core with
  these properties.  Unless overridden by \fB\-mtune\fR,
  \&\fB\-mcpu=neoverse\-512tvb\fR tunes code in the same way as for
  \&\fB\-mtune=neoverse\-512tvb\fR.
! .IP "\fB\-moverride=\fR\fIstring\fR" 4
  .IX Item "-moverride=string"
! Override tuning decisions made by the back-end in response to a
  \&\fB\-mtune=\fR switch.  The syntax, semantics, and accepted values
  for \fIstring\fR in this option are not guaranteed to be consistent
  across releases.
  .Sp
! This option is only intended to be useful when developing \s-1GCC.\s0
! .IP "\fB\-mverbose\-cost\-dump\fR" 4
  .IX Item "-mverbose-cost-dump"
  Enable verbose cost model dumping in the debug dump files.  This option is
  provided for use in debugging the compiler.
! .IP "\fB\-mpc\-relative\-literal\-loads\fR" 4
  .IX Item "-mpc-relative-literal-loads"
  .PD 0
! .IP "\fB\-mno\-pc\-relative\-literal\-loads\fR" 4
  .IX Item "-mno-pc-relative-literal-loads"
  .PD
! Enable or disable PC-relative literal loads.  With this option literal pools are
  accessed using a single instruction and emitted after each function.  This
  limits the maximum size of functions to 1MB.  This is enabled by default for
  \&\fB\-mcmodel=tiny\fR.
! .IP "\fB\-msign\-return\-address=\fR\fIscope\fR" 4
  .IX Item "-msign-return-address=scope"
  Select the function scope on which return address signing will be applied.
  Permissible values are \fBnone\fR, which disables return address signing,
! \&\fBnon-leaf\fR, which enables pointer signing for functions which are not leaf
  functions, and \fBall\fR, which enables pointer signing for all functions.  The
  default value is \fBnone\fR. This option has been deprecated by
  \&\-mbranch\-protection.
! .IP "\fB\-mbranch\-protection=\fR\fInone\fR\fB|\fR\fIstandard\fR\fB|\fR\fIpac-ret\fR\fB[+\fR\fIleaf\fR\fB+\fR\fIb\-key\fR\fB]|\fR\fIbti\fR\fB|\fR\fIgcs\fR" 4
  .IX Item "-mbranch-protection=none|standard|pac-ret[+leaf+b-key]|bti|gcs"
  Select the branch protection features to use.
  \&\fBnone\fR is the default and turns off all types of branch protection.
--- 21231,21274 ----
  .Sp
  \&\fB\-mcpu=neoverse\-512tvb\fR is special in that it does not refer
  to a specific core, but instead refers to all Neoverse cores that
! (a) implement SVE and (b) have a total vector bandwidth of 512 bits
  a cycle.  Unless overridden by \fB\-march\fR,
  \&\fB\-mcpu=neoverse\-512tvb\fR generates code that can run on a
  Neoverse V1 core, since Neoverse V1 is the first Neoverse core with
  these properties.  Unless overridden by \fB\-mtune\fR,
  \&\fB\-mcpu=neoverse\-512tvb\fR tunes code in the same way as for
  \&\fB\-mtune=neoverse\-512tvb\fR.
! .IP \fB\-moverride=\fR\fIstring\fR 4
  .IX Item "-moverride=string"
! Override tuning decisions made by the back\-end in response to a
  \&\fB\-mtune=\fR switch.  The syntax, semantics, and accepted values
  for \fIstring\fR in this option are not guaranteed to be consistent
  across releases.
  .Sp
! This option is only intended to be useful when developing GCC.
! .IP \fB\-mverbose\-cost\-dump\fR 4
  .IX Item "-mverbose-cost-dump"
  Enable verbose cost model dumping in the debug dump files.  This option is
  provided for use in debugging the compiler.
! .IP \fB\-mpc\-relative\-literal\-loads\fR 4
  .IX Item "-mpc-relative-literal-loads"
  .PD 0
! .IP \fB\-mno\-pc\-relative\-literal\-loads\fR 4
  .IX Item "-mno-pc-relative-literal-loads"
  .PD
! Enable or disable PC\-relative literal loads.  With this option literal pools are
  accessed using a single instruction and emitted after each function.  This
  limits the maximum size of functions to 1MB.  This is enabled by default for
  \&\fB\-mcmodel=tiny\fR.
! .IP \fB\-msign\-return\-address=\fR\fIscope\fR 4
  .IX Item "-msign-return-address=scope"
  Select the function scope on which return address signing will be applied.
  Permissible values are \fBnone\fR, which disables return address signing,
! \&\fBnon\-leaf\fR, which enables pointer signing for functions which are not leaf
  functions, and \fBall\fR, which enables pointer signing for all functions.  The
  default value is \fBnone\fR. This option has been deprecated by
  \&\-mbranch\-protection.
! .IP \fB\-mbranch\-protection=\fR\fInone\fR\fB|\fR\fIstandard\fR\fB|\fR\fIpac\-ret\fR\fB[+\fR\fIleaf\fR\fB+\fR\fIb\-key\fR\fB]|\fR\fIbti\fR\fB|\fR\fIgcs\fR 4
  .IX Item "-mbranch-protection=none|standard|pac-ret[+leaf+b-key]|bti|gcs"
  Select the branch protection features to use.
  \&\fBnone\fR is the default and turns off all types of branch protection.
*************** Select the branch protection features to
*** 21341,21418 ****
  has additional tuning options, then \fBstandard\fR sets it to its standard
  level.
  \&\fBpac\-ret[+\fR\fIleaf\fR\fB]\fR turns on return address signing to its standard
! level: signing functions that save the return address to memory (non-leaf
  functions will practically always do this) using the a\-key.  The optional
  argument \fBleaf\fR can be used to extend the signing to include leaf
  functions.  The optional argument \fBb\-key\fR can be used to sign the functions
  with the B\-key instead of the A\-key.
  \&\fBbti\fR turns on branch target identification mechanism.
  \&\fBgcs\fR turns on guarded control stack compatible code generation.
! .IP "\fB\-mharden\-sls=\fR\fIopts\fR" 4
  .IX Item "-mharden-sls=opts"
! Enable compiler hardening against straight line speculation (\s-1SLS\s0).
! \&\fIopts\fR is a comma-separated list of the following options:
  .RS 4
! .IP "\fBretbr\fR" 4
  .IX Item "retbr"
  .PD 0
! .IP "\fBblr\fR" 4
  .IX Item "blr"
  .RE
  .RS 4
- .PD
  .Sp
! In addition, \fB\-mharden\-sls=all\fR enables all \s-1SLS\s0 hardening while
! \&\fB\-mharden\-sls=none\fR disables all \s-1SLS\s0 hardening.
  .RE
! .IP "\fB\-mearly\-ra=\fR\fIscope\fR" 4
  .IX Item "-mearly-ra=scope"
  Determine when to enable an early register allocation pass.  This pass runs
! before instruction scheduling and tries to find a spill-free allocation of
! floating-point and vector code.  It also tries to make use of strided
! multi-register instructions, such as \s-1SME2\s0's strided \s-1LD1\s0 and \s-1ST1.\s0
  .Sp
  The possible values of \fIscope\fR are: \fIall\fR, which runs the pass on
  all functions; \fIstrided\fR, which runs the pass on functions that have
! access to strided multi-register instructions; and \fInone\fR, which
  disables the pass.
  .Sp
  \&\fB\-mearly\-ra=all\fR is the default for \fB\-O2\fR and above, and for
  \&\fB\-Os\fR.  \fB\-mearly\-ra=none\fR is the default otherwise.
! .IP "\fB\-mearly\-ldp\-fusion\fR" 4
  .IX Item "-mearly-ldp-fusion"
  Enable the copy of the AArch64 load/store pair fusion pass that runs before
  register allocation.  Enabled by default at \fB\-O\fR and above.
! .IP "\fB\-mlate\-ldp\-fusion\fR" 4
  .IX Item "-mlate-ldp-fusion"
  Enable the copy of the AArch64 load/store pair fusion pass that runs after
  register allocation.  Enabled by default at \fB\-O\fR and above.
! .IP "\fB\-msve\-vector\-bits=\fR\fIbits\fR" 4
  .IX Item "-msve-vector-bits=bits"
! Specify the number of bits in an \s-1SVE\s0 vector register.  This option only has
! an effect when \s-1SVE\s0 is enabled.
  .Sp
! \&\s-1GCC\s0 supports two forms of \s-1SVE\s0 code generation: \*(L"vector-length
! agnostic\*(R" output that works with any size of vector register and
! \&\*(L"vector-length specific\*(R" output that allows \s-1GCC\s0 to make assumptions
  about the vector length when it is useful for optimization reasons.
  The possible values of \fBbits\fR are: \fBscalable\fR, \fB128\fR,
  \&\fB256\fR, \fB512\fR, \fB1024\fR and \fB2048\fR.
! Specifying \fBscalable\fR selects vector-length agnostic
! output.  At present \fB\-msve\-vector\-bits=128\fR also generates vector-length
! agnostic output for big-endian targets.  All other values generate
! vector-length specific code.  The behavior of these values may change
  in future releases and no value except \fBscalable\fR should be
  relied on for producing code that is portable across different
! hardware \s-1SVE\s0 vector lengths.
  .Sp
  The default is \fB\-msve\-vector\-bits=scalable\fR, which produces
! vector-length agnostic code.
! .IP "\fB\-Wexperimental\-fmv\-target\fR" 4
  .IX Item "-Wexperimental-fmv-target"
  Warn about use of experimental Function Multi Versioning.
  The Arm C Language Extension specification for Function Multi Versioning
! is beta and subject to change. Any usage of \s-1FMV\s0 is caveated that future
  behavior change and incompatibility is likely.
  .PP
  \fB\-march\fR and \fB\-mcpu\fR Feature Modifiers
--- 21276,21353 ----
  has additional tuning options, then \fBstandard\fR sets it to its standard
  level.
  \&\fBpac\-ret[+\fR\fIleaf\fR\fB]\fR turns on return address signing to its standard
! level: signing functions that save the return address to memory (non\-leaf
  functions will practically always do this) using the a\-key.  The optional
  argument \fBleaf\fR can be used to extend the signing to include leaf
  functions.  The optional argument \fBb\-key\fR can be used to sign the functions
  with the B\-key instead of the A\-key.
  \&\fBbti\fR turns on branch target identification mechanism.
  \&\fBgcs\fR turns on guarded control stack compatible code generation.
! .IP \fB\-mharden\-sls=\fR\fIopts\fR 4
  .IX Item "-mharden-sls=opts"
! Enable compiler hardening against straight line speculation (SLS).
! \&\fIopts\fR is a comma\-separated list of the following options:
  .RS 4
! .IP \fBretbr\fR 4
  .IX Item "retbr"
  .PD 0
! .IP \fBblr\fR 4
  .IX Item "blr"
+ .PD
  .RE
  .RS 4
  .Sp
! In addition, \fB\-mharden\-sls=all\fR enables all SLS hardening while
! \&\fB\-mharden\-sls=none\fR disables all SLS hardening.
  .RE
! .IP \fB\-mearly\-ra=\fR\fIscope\fR 4
  .IX Item "-mearly-ra=scope"
  Determine when to enable an early register allocation pass.  This pass runs
! before instruction scheduling and tries to find a spill\-free allocation of
! floating\-point and vector code.  It also tries to make use of strided
! multi\-register instructions, such as SME2\*(Aqs strided LD1 and ST1.
  .Sp
  The possible values of \fIscope\fR are: \fIall\fR, which runs the pass on
  all functions; \fIstrided\fR, which runs the pass on functions that have
! access to strided multi\-register instructions; and \fInone\fR, which
  disables the pass.
  .Sp
  \&\fB\-mearly\-ra=all\fR is the default for \fB\-O2\fR and above, and for
  \&\fB\-Os\fR.  \fB\-mearly\-ra=none\fR is the default otherwise.
! .IP \fB\-mearly\-ldp\-fusion\fR 4
  .IX Item "-mearly-ldp-fusion"
  Enable the copy of the AArch64 load/store pair fusion pass that runs before
  register allocation.  Enabled by default at \fB\-O\fR and above.
! .IP \fB\-mlate\-ldp\-fusion\fR 4
  .IX Item "-mlate-ldp-fusion"
  Enable the copy of the AArch64 load/store pair fusion pass that runs after
  register allocation.  Enabled by default at \fB\-O\fR and above.
! .IP \fB\-msve\-vector\-bits=\fR\fIbits\fR 4
  .IX Item "-msve-vector-bits=bits"
! Specify the number of bits in an SVE vector register.  This option only has
! an effect when SVE is enabled.
  .Sp
! GCC supports two forms of SVE code generation: "vector\-length
! agnostic" output that works with any size of vector register and
! "vector\-length specific" output that allows GCC to make assumptions
  about the vector length when it is useful for optimization reasons.
  The possible values of \fBbits\fR are: \fBscalable\fR, \fB128\fR,
  \&\fB256\fR, \fB512\fR, \fB1024\fR and \fB2048\fR.
! Specifying \fBscalable\fR selects vector\-length agnostic
! output.  At present \fB\-msve\-vector\-bits=128\fR also generates vector\-length
! agnostic output for big\-endian targets.  All other values generate
! vector\-length specific code.  The behavior of these values may change
  in future releases and no value except \fBscalable\fR should be
  relied on for producing code that is portable across different
! hardware SVE vector lengths.
  .Sp
  The default is \fB\-msve\-vector\-bits=scalable\fR, which produces
! vector\-length agnostic code.
! .IP \fB\-Wexperimental\-fmv\-target\fR 4
  .IX Item "-Wexperimental-fmv-target"
  Warn about use of experimental Function Multi Versioning.
  The Arm C Language Extension specification for Function Multi Versioning
! is beta and subject to change. Any usage of FMV is caveated that future
  behavior change and incompatibility is likely.
  .PP
  \fB\-march\fR and \fB\-mcpu\fR Feature Modifiers
*************** behavior change and incompatibility is l
*** 21420,21677 ****
  .PP
  Feature modifiers used with \fB\-march\fR and \fB\-mcpu\fR can be any of
  the following and their inverses \fBno\fR\fIfeature\fR:
! .IP "\fBcrc\fR" 4
  .IX Item "crc"
! Enable \s-1CRC\s0 extension.  This is on by default for
  \&\fB\-march=armv8.1\-a\fR.
! .IP "\fBcrypto\fR" 4
  .IX Item "crypto"
! Enable Crypto extension.  This also enables Advanced \s-1SIMD\s0 and floating-point
  instructions.
! .IP "\fBfp\fR" 4
  .IX Item "fp"
! Enable floating-point instructions.  This is on by default for all possible
  values for options \fB\-march\fR and \fB\-mcpu\fR.
! .IP "\fBsimd\fR" 4
  .IX Item "simd"
! Enable Advanced \s-1SIMD\s0 instructions.  This also enables floating-point
  instructions.  This is on by default for all possible values for options
  \&\fB\-march\fR and \fB\-mcpu\fR.
! .IP "\fBsve\fR" 4
  .IX Item "sve"
  Enable Scalable Vector Extension instructions.  This also enables Advanced
! \&\s-1SIMD\s0 and floating-point instructions.
! .IP "\fBlse\fR" 4
  .IX Item "lse"
  Enable Large System Extension instructions.  This is on by default for
  \&\fB\-march=armv8.1\-a\fR.
! .IP "\fBrdma\fR" 4
  .IX Item "rdma"
  Enable Round Double Multiply Accumulate instructions.  This is on by default
  for \fB\-march=armv8.1\-a\fR.
! .IP "\fBfp16\fR" 4
  .IX Item "fp16"
! Enable \s-1FP16\s0 extension.  This also enables floating-point instructions.
! .IP "\fBfp16fml\fR" 4
  .IX Item "fp16fml"
! Enable \s-1FP16\s0 fmla extension.  This also enables \s-1FP16\s0 extensions and
! floating-point instructions. This option is enabled by default for \fB\-march=armv8.4\-a\fR. Use of this option with architectures prior to Armv8.2\-A is not supported.
! .IP "\fBrcpc\fR" 4
  .IX Item "rcpc"
! Enable the RCpc extension.  This enables the use of the \s-1LDAPR\s0 instructions for
! load-acquire atomic semantics, and passes it on to the assembler, enabling
  inline asm statements to use instructions from the RCpc extension.
! .IP "\fBdotprod\fR" 4
  .IX Item "dotprod"
! Enable the Dot Product extension.  This also enables Advanced \s-1SIMD\s0 instructions.
! .IP "\fBaes\fR" 4
  .IX Item "aes"
  Enable the Armv8\-a aes and pmull crypto extension.  This also enables Advanced
! \&\s-1SIMD\s0 instructions.
! .IP "\fBsha2\fR" 4
  .IX Item "sha2"
! Enable the Armv8\-a sha2 crypto extension.  This also enables Advanced \s-1SIMD\s0 instructions.
! .IP "\fBsha3\fR" 4
  .IX Item "sha3"
! Enable the sha512 and sha3 crypto extension.  This also enables Advanced \s-1SIMD\s0
  instructions. Use of this option with architectures prior to Armv8.2\-A is not supported.
! .IP "\fBsm4\fR" 4
  .IX Item "sm4"
! Enable the sm3 and sm4 crypto extension.  This also enables Advanced \s-1SIMD\s0 instructions.
  Use of this option with architectures prior to Armv8.2\-A is not supported.
! .IP "\fBprofile\fR" 4
  .IX Item "profile"
  Enable the Statistical Profiling extension.  This option is only to enable the
  extension at the assembler level and does not affect code generation.
! .IP "\fBrng\fR" 4
  .IX Item "rng"
  Enable the Armv8.5\-a Random Number instructions.  This option is only to
  enable the extension at the assembler level and does not affect code
  generation.
! .IP "\fBmemtag\fR" 4
  .IX Item "memtag"
  Enable the Armv8.5\-a Memory Tagging Extensions.
  Use of this option with architectures prior to Armv8.5\-A is not supported.
! .IP "\fBsb\fR" 4
  .IX Item "sb"
  Enable the Armv8\-a Speculation Barrier instruction.  This option is only to
  enable the extension at the assembler level and does not affect code
  generation.  This option is enabled by default for \fB\-march=armv8.5\-a\fR.
! .IP "\fBssbs\fR" 4
  .IX Item "ssbs"
  Enable the Armv8\-a Speculative Store Bypass Safe instruction.  This option
  is only to enable the extension at the assembler level and does not affect code
  generation.  This option is enabled by default for \fB\-march=armv8.5\-a\fR.
! .IP "\fBpredres\fR" 4
  .IX Item "predres"
  Enable the Armv8\-a Execution and Data Prediction Restriction instructions.
  This option is only to enable the extension at the assembler level and does
  not affect code generation.  This option is enabled by default for
  \&\fB\-march=armv8.5\-a\fR.
! .IP "\fBsve2\fR" 4
  .IX Item "sve2"
! Enable the Armv8\-a Scalable Vector Extension 2.  This also enables \s-1SVE\s0
  instructions.
! .IP "\fBsve2\-bitperm\fR" 4
  .IX Item "sve2-bitperm"
! Enable \s-1SVE2\s0 bitperm instructions.  This also enables \s-1SVE2\s0 instructions.
! .IP "\fBsve2\-sm4\fR" 4
  .IX Item "sve2-sm4"
! Enable \s-1SVE2\s0 sm4 instructions.  This also enables \s-1SVE2\s0 instructions.
! .IP "\fBsve2\-aes\fR" 4
  .IX Item "sve2-aes"
! Enable \s-1SVE2\s0 aes instructions.  This also enables \s-1SVE2\s0 instructions.
! .IP "\fBsve2\-sha3\fR" 4
  .IX Item "sve2-sha3"
! Enable \s-1SVE2\s0 sha3 instructions.  This also enables \s-1SVE2\s0 instructions.
! .IP "\fBsve2p1\fR" 4
  .IX Item "sve2p1"
! Enable \s-1SVE2.1\s0 instructions.  This also enables \s-1SVE2\s0 instructions.
! .IP "\fBtme\fR" 4
  .IX Item "tme"
  Enable the Transactional Memory Extension.
! .IP "\fBi8mm\fR" 4
  .IX Item "i8mm"
  Enable 8\-bit Integer Matrix Multiply instructions.  This also enables
! Advanced \s-1SIMD\s0 and floating-point instructions.  This option is enabled by
  default for \fB\-march=armv8.6\-a\fR.  Use of this option with architectures
  prior to Armv8.2\-A is not supported.
! .IP "\fBf32mm\fR" 4
  .IX Item "f32mm"
  Enable 32\-bit Floating point Matrix Multiply instructions.  This also enables
! \&\s-1SVE\s0 instructions.  Use of this option with architectures prior to Armv8.2\-A is
  not supported.
! .IP "\fBf64mm\fR" 4
  .IX Item "f64mm"
  Enable 64\-bit Floating point Matrix Multiply instructions.  This also enables
! \&\s-1SVE\s0 instructions.  Use of this option with architectures prior to Armv8.2\-A is
  not supported.
! .IP "\fBbf16\fR" 4
  .IX Item "bf16"
! Enable brain half-precision floating-point instructions.  This also enables
! Advanced \s-1SIMD\s0 and floating-point instructions.  This option is enabled by
  default for \fB\-march=armv8.6\-a\fR.  Use of this option with architectures
  prior to Armv8.2\-A is not supported.
! .IP "\fBls64\fR" 4
  .IX Item "ls64"
  Enable the 64\-byte atomic load and store instructions for accelerators.
! .IP "\fBmops\fR" 4
  .IX Item "mops"
  Enable the instructions to accelerate memory operations like \f(CW\*(C`memcpy\*(C'\fR,
  \&\f(CW\*(C`memmove\*(C'\fR, \f(CW\*(C`memset\*(C'\fR.  This option is enabled by default for
  \&\fB\-march=armv8.8\-a\fR
! .IP "\fBflagm\fR" 4
  .IX Item "flagm"
  Enable the Flag Manipulation instructions Extension.
! .IP "\fBflagm2\fR" 4
  .IX Item "flagm2"
  Enable the FlagM2 flag conversion instructions.
! .IP "\fBpauth\fR" 4
  .IX Item "pauth"
  Enable the Pointer Authentication Extension.
! .IP "\fBcssc\fR" 4
  .IX Item "cssc"
  Enable the Common Short Sequence Compression instructions.
! .IP "\fBsme\fR" 4
  .IX Item "sme"
! Enable the Scalable Matrix Extension.  This is only supported when \s-1SVE2\s0 is also
  enabled.
! .IP "\fBsme\-i16i64\fR" 4
  .IX Item "sme-i16i64"
! Enable the \s-1FEAT_SME_I16I64\s0 extension to \s-1SME.\s0  This also enables \s-1SME\s0
  instructions.
! .IP "\fBsme\-f64f64\fR" 4
  .IX Item "sme-f64f64"
! Enable the \s-1FEAT_SME_F64F64\s0 extension to \s-1SME.\s0  This also enables \s-1SME\s0
  instructions.
! .IP "\fBsme2\fR" 4
  .IX Item "sme2"
! Enable the Scalable Matrix Extension 2.  This also enables \s-1SME\s0 instructions.
! .IP "\fBsme\-b16b16\fR" 4
  .IX Item "sme-b16b16"
! Enable the \s-1FEAT_SME_B16B16\s0 extension to \s-1SME.\s0  This also enables \s-1SME2\s0
! and \s-1SVE_B16B16\s0 instructions.
! .IP "\fBsme\-f16f16\fR" 4
  .IX Item "sme-f16f16"
! Enable the \s-1FEAT_SME_F16F16\s0 extension to \s-1SME.\s0  This also enables \s-1SME2\s0
  instructions.
! .IP "\fBsme2p1\fR" 4
  .IX Item "sme2p1"
! Enable the Scalable Matrix Extension version 2.1.  This also enables \s-1SME2\s0
  instructions.
! .IP "\fBfcma\fR" 4
  .IX Item "fcma"
! Enable the complex number \s-1SIMD\s0 extensions.
! .IP "\fBjscvt\fR" 4
  .IX Item "jscvt"
  Enable the \f(CW\*(C`fjcvtzs\*(C'\fR JavaScript conversion instruction.
! .IP "\fBfrintts\fR" 4
  .IX Item "frintts"
! Enable floating-point round to integral value instructions.
! .IP "\fBwfxt\fR" 4
  .IX Item "wfxt"
  Enable \f(CW\*(C`wfet\*(C'\fR and \f(CW\*(C`wfit\*(C'\fR instructions.
! .IP "\fBxs\fR" 4
  .IX Item "xs"
! Enable the \s-1XS\s0 memory attribute extension.
! .IP "\fBlse128\fR" 4
  .IX Item "lse128"
! Enable the \s-1LSE128\s0 128\-bit atomic instructions extension.  This also
! enables \s-1LSE\s0 instructions.
! .IP "\fBd128\fR" 4
  .IX Item "d128"
  Enable support for 128\-bit system register read/write instructions.
! This also enables the \s-1LSE128\s0 extension.
! .IP "\fBgcs\fR" 4
  .IX Item "gcs"
  Enable support for Armv9.4\-a Guarded Control Stack extension.
! .IP "\fBthe\fR" 4
  .IX Item "the"
  Enable support for Armv8.9\-a/9.4\-a translation hardening extension.
! .IP "\fBrcpc2\fR" 4
  .IX Item "rcpc2"
  Enable the RCpc2 extension.
! .IP "\fBrcpc3\fR" 4
  .IX Item "rcpc3"
  Enable the RCpc3 (Release Consistency) extension.
! .IP "\fBfp8\fR" 4
  .IX Item "fp8"
  Enable the fp8 (8\-bit floating point) extension.
! .IP "\fBfp8fma\fR" 4
  .IX Item "fp8fma"
  Enable the fp8 (8\-bit floating point) multiply accumulate extension.
! .IP "\fBssve\-fp8fma\fR" 4
  .IX Item "ssve-fp8fma"
  Enable the fp8 (8\-bit floating point) multiply accumulate extension in streaming
  mode.
! .IP "\fBfp8dot4\fR" 4
  .IX Item "fp8dot4"
! Enable the fp8 (8\-bit floating point) to single-precision 4\-way dot product
  extension.
! .IP "\fBssve\-fp8dot4\fR" 4
  .IX Item "ssve-fp8dot4"
! Enable the fp8 (8\-bit floating point) to single-precision 4\-way dot product
  extension in streaming mode.
! .IP "\fBfp8dot2\fR" 4
  .IX Item "fp8dot2"
! Enable the fp8 (8\-bit floating point) to half-precision 2\-way dot product
  extension.
! .IP "\fBssve\-fp8dot2\fR" 4
  .IX Item "ssve-fp8dot2"
! Enable the fp8 (8\-bit floating point) to half-precision 2\-way dot product
  extension in streaming mode.
! .IP "\fBfaminmax\fR" 4
  .IX Item "faminmax"
  Enable the Floating Point Absolute Maximum/Minimum extension.
! .IP "\fBlut\fR" 4
  .IX Item "lut"
  Enable the Lookup Table extension.
! .IP "\fBcpa\fR" 4
  .IX Item "cpa"
  Enable the Checked Pointer Arithmetic instructions.
! .IP "\fBsve\-b16b16\fR" 4
  .IX Item "sve-b16b16"
! Enable the \s-1SVE\s0 non-widening brain floating-point (\f(CW\*(C`bf16\*(C'\fR) extension.
  This only has an effect when \f(CW\*(C`sve2\*(C'\fR or \f(CW\*(C`sme2\*(C'\fR are also enabled.
  .PP
  Feature \fBcrypto\fR implies \fBaes\fR, \fBsha2\fR, and \fBsimd\fR,
--- 21355,21612 ----
  .PP
  Feature modifiers used with \fB\-march\fR and \fB\-mcpu\fR can be any of
  the following and their inverses \fBno\fR\fIfeature\fR:
! .IP \fBcrc\fR 4
  .IX Item "crc"
! Enable CRC extension.  This is on by default for
  \&\fB\-march=armv8.1\-a\fR.
! .IP \fBcrypto\fR 4
  .IX Item "crypto"
! Enable Crypto extension.  This also enables Advanced SIMD and floating\-point
  instructions.
! .IP \fBfp\fR 4
  .IX Item "fp"
! Enable floating\-point instructions.  This is on by default for all possible
  values for options \fB\-march\fR and \fB\-mcpu\fR.
! .IP \fBsimd\fR 4
  .IX Item "simd"
! Enable Advanced SIMD instructions.  This also enables floating\-point
  instructions.  This is on by default for all possible values for options
  \&\fB\-march\fR and \fB\-mcpu\fR.
! .IP \fBsve\fR 4
  .IX Item "sve"
  Enable Scalable Vector Extension instructions.  This also enables Advanced
! SIMD and floating\-point instructions.
! .IP \fBlse\fR 4
  .IX Item "lse"
  Enable Large System Extension instructions.  This is on by default for
  \&\fB\-march=armv8.1\-a\fR.
! .IP \fBrdma\fR 4
  .IX Item "rdma"
  Enable Round Double Multiply Accumulate instructions.  This is on by default
  for \fB\-march=armv8.1\-a\fR.
! .IP \fBfp16\fR 4
  .IX Item "fp16"
! Enable FP16 extension.  This also enables floating\-point instructions.
! .IP \fBfp16fml\fR 4
  .IX Item "fp16fml"
! Enable FP16 fmla extension.  This also enables FP16 extensions and
! floating\-point instructions. This option is enabled by default for \fB\-march=armv8.4\-a\fR. Use of this option with architectures prior to Armv8.2\-A is not supported.
! .IP \fBrcpc\fR 4
  .IX Item "rcpc"
! Enable the RCpc extension.  This enables the use of the LDAPR instructions for
! load\-acquire atomic semantics, and passes it on to the assembler, enabling
  inline asm statements to use instructions from the RCpc extension.
! .IP \fBdotprod\fR 4
  .IX Item "dotprod"
! Enable the Dot Product extension.  This also enables Advanced SIMD instructions.
! .IP \fBaes\fR 4
  .IX Item "aes"
  Enable the Armv8\-a aes and pmull crypto extension.  This also enables Advanced
! SIMD instructions.
! .IP \fBsha2\fR 4
  .IX Item "sha2"
! Enable the Armv8\-a sha2 crypto extension.  This also enables Advanced SIMD instructions.
! .IP \fBsha3\fR 4
  .IX Item "sha3"
! Enable the sha512 and sha3 crypto extension.  This also enables Advanced SIMD
  instructions. Use of this option with architectures prior to Armv8.2\-A is not supported.
! .IP \fBsm4\fR 4
  .IX Item "sm4"
! Enable the sm3 and sm4 crypto extension.  This also enables Advanced SIMD instructions.
  Use of this option with architectures prior to Armv8.2\-A is not supported.
! .IP \fBprofile\fR 4
  .IX Item "profile"
  Enable the Statistical Profiling extension.  This option is only to enable the
  extension at the assembler level and does not affect code generation.
! .IP \fBrng\fR 4
  .IX Item "rng"
  Enable the Armv8.5\-a Random Number instructions.  This option is only to
  enable the extension at the assembler level and does not affect code
  generation.
! .IP \fBmemtag\fR 4
  .IX Item "memtag"
  Enable the Armv8.5\-a Memory Tagging Extensions.
  Use of this option with architectures prior to Armv8.5\-A is not supported.
! .IP \fBsb\fR 4
  .IX Item "sb"
  Enable the Armv8\-a Speculation Barrier instruction.  This option is only to
  enable the extension at the assembler level and does not affect code
  generation.  This option is enabled by default for \fB\-march=armv8.5\-a\fR.
! .IP \fBssbs\fR 4
  .IX Item "ssbs"
  Enable the Armv8\-a Speculative Store Bypass Safe instruction.  This option
  is only to enable the extension at the assembler level and does not affect code
  generation.  This option is enabled by default for \fB\-march=armv8.5\-a\fR.
! .IP \fBpredres\fR 4
  .IX Item "predres"
  Enable the Armv8\-a Execution and Data Prediction Restriction instructions.
  This option is only to enable the extension at the assembler level and does
  not affect code generation.  This option is enabled by default for
  \&\fB\-march=armv8.5\-a\fR.
! .IP \fBsve2\fR 4
  .IX Item "sve2"
! Enable the Armv8\-a Scalable Vector Extension 2.  This also enables SVE
  instructions.
! .IP \fBsve2\-bitperm\fR 4
  .IX Item "sve2-bitperm"
! Enable SVE2 bitperm instructions.  This also enables SVE2 instructions.
! .IP \fBsve2\-sm4\fR 4
  .IX Item "sve2-sm4"
! Enable SVE2 sm4 instructions.  This also enables SVE2 instructions.
! .IP \fBsve2\-aes\fR 4
  .IX Item "sve2-aes"
! Enable SVE2 aes instructions.  This also enables SVE2 instructions.
! .IP \fBsve2\-sha3\fR 4
  .IX Item "sve2-sha3"
! Enable SVE2 sha3 instructions.  This also enables SVE2 instructions.
! .IP \fBsve2p1\fR 4
  .IX Item "sve2p1"
! Enable SVE2.1 instructions.  This also enables SVE2 instructions.
! .IP \fBtme\fR 4
  .IX Item "tme"
  Enable the Transactional Memory Extension.
! .IP \fBi8mm\fR 4
  .IX Item "i8mm"
  Enable 8\-bit Integer Matrix Multiply instructions.  This also enables
! Advanced SIMD and floating\-point instructions.  This option is enabled by
  default for \fB\-march=armv8.6\-a\fR.  Use of this option with architectures
  prior to Armv8.2\-A is not supported.
! .IP \fBf32mm\fR 4
  .IX Item "f32mm"
  Enable 32\-bit Floating point Matrix Multiply instructions.  This also enables
! SVE instructions.  Use of this option with architectures prior to Armv8.2\-A is
  not supported.
! .IP \fBf64mm\fR 4
  .IX Item "f64mm"
  Enable 64\-bit Floating point Matrix Multiply instructions.  This also enables
! SVE instructions.  Use of this option with architectures prior to Armv8.2\-A is
  not supported.
! .IP \fBbf16\fR 4
  .IX Item "bf16"
! Enable brain half\-precision floating\-point instructions.  This also enables
! Advanced SIMD and floating\-point instructions.  This option is enabled by
  default for \fB\-march=armv8.6\-a\fR.  Use of this option with architectures
  prior to Armv8.2\-A is not supported.
! .IP \fBls64\fR 4
  .IX Item "ls64"
  Enable the 64\-byte atomic load and store instructions for accelerators.
! .IP \fBmops\fR 4
  .IX Item "mops"
  Enable the instructions to accelerate memory operations like \f(CW\*(C`memcpy\*(C'\fR,
  \&\f(CW\*(C`memmove\*(C'\fR, \f(CW\*(C`memset\*(C'\fR.  This option is enabled by default for
  \&\fB\-march=armv8.8\-a\fR
! .IP \fBflagm\fR 4
  .IX Item "flagm"
  Enable the Flag Manipulation instructions Extension.
! .IP \fBflagm2\fR 4
  .IX Item "flagm2"
  Enable the FlagM2 flag conversion instructions.
! .IP \fBpauth\fR 4
  .IX Item "pauth"
  Enable the Pointer Authentication Extension.
! .IP \fBcssc\fR 4
  .IX Item "cssc"
  Enable the Common Short Sequence Compression instructions.
! .IP \fBsme\fR 4
  .IX Item "sme"
! Enable the Scalable Matrix Extension.  This is only supported when SVE2 is also
  enabled.
! .IP \fBsme\-i16i64\fR 4
  .IX Item "sme-i16i64"
! Enable the FEAT_SME_I16I64 extension to SME.  This also enables SME
  instructions.
! .IP \fBsme\-f64f64\fR 4
  .IX Item "sme-f64f64"
! Enable the FEAT_SME_F64F64 extension to SME.  This also enables SME
  instructions.
! .IP \fBsme2\fR 4
  .IX Item "sme2"
! Enable the Scalable Matrix Extension 2.  This also enables SME instructions.
! .IP \fBsme\-b16b16\fR 4
  .IX Item "sme-b16b16"
! Enable the FEAT_SME_B16B16 extension to SME.  This also enables SME2
! and SVE_B16B16 instructions.
! .IP \fBsme\-f16f16\fR 4
  .IX Item "sme-f16f16"
! Enable the FEAT_SME_F16F16 extension to SME.  This also enables SME2
  instructions.
! .IP \fBsme2p1\fR 4
  .IX Item "sme2p1"
! Enable the Scalable Matrix Extension version 2.1.  This also enables SME2
  instructions.
! .IP \fBfcma\fR 4
  .IX Item "fcma"
! Enable the complex number SIMD extensions.
! .IP \fBjscvt\fR 4
  .IX Item "jscvt"
  Enable the \f(CW\*(C`fjcvtzs\*(C'\fR JavaScript conversion instruction.
! .IP \fBfrintts\fR 4
  .IX Item "frintts"
! Enable floating\-point round to integral value instructions.
! .IP \fBwfxt\fR 4
  .IX Item "wfxt"
  Enable \f(CW\*(C`wfet\*(C'\fR and \f(CW\*(C`wfit\*(C'\fR instructions.
! .IP \fBxs\fR 4
  .IX Item "xs"
! Enable the XS memory attribute extension.
! .IP \fBlse128\fR 4
  .IX Item "lse128"
! Enable the LSE128 128\-bit atomic instructions extension.  This also
! enables LSE instructions.
! .IP \fBd128\fR 4
  .IX Item "d128"
  Enable support for 128\-bit system register read/write instructions.
! This also enables the LSE128 extension.
! .IP \fBgcs\fR 4
  .IX Item "gcs"
  Enable support for Armv9.4\-a Guarded Control Stack extension.
! .IP \fBthe\fR 4
  .IX Item "the"
  Enable support for Armv8.9\-a/9.4\-a translation hardening extension.
! .IP \fBrcpc2\fR 4
  .IX Item "rcpc2"
  Enable the RCpc2 extension.
! .IP \fBrcpc3\fR 4
  .IX Item "rcpc3"
  Enable the RCpc3 (Release Consistency) extension.
! .IP \fBfp8\fR 4
  .IX Item "fp8"
  Enable the fp8 (8\-bit floating point) extension.
! .IP \fBfp8fma\fR 4
  .IX Item "fp8fma"
  Enable the fp8 (8\-bit floating point) multiply accumulate extension.
! .IP \fBssve\-fp8fma\fR 4
  .IX Item "ssve-fp8fma"
  Enable the fp8 (8\-bit floating point) multiply accumulate extension in streaming
  mode.
! .IP \fBfp8dot4\fR 4
  .IX Item "fp8dot4"
! Enable the fp8 (8\-bit floating point) to single\-precision 4\-way dot product
  extension.
! .IP \fBssve\-fp8dot4\fR 4
  .IX Item "ssve-fp8dot4"
! Enable the fp8 (8\-bit floating point) to single\-precision 4\-way dot product
  extension in streaming mode.
! .IP \fBfp8dot2\fR 4
  .IX Item "fp8dot2"
! Enable the fp8 (8\-bit floating point) to half\-precision 2\-way dot product
  extension.
! .IP \fBssve\-fp8dot2\fR 4
  .IX Item "ssve-fp8dot2"
! Enable the fp8 (8\-bit floating point) to half\-precision 2\-way dot product
  extension in streaming mode.
! .IP \fBfaminmax\fR 4
  .IX Item "faminmax"
  Enable the Floating Point Absolute Maximum/Minimum extension.
! .IP \fBlut\fR 4
  .IX Item "lut"
  Enable the Lookup Table extension.
! .IP \fBcpa\fR 4
  .IX Item "cpa"
  Enable the Checked Pointer Arithmetic instructions.
! .IP \fBsve\-b16b16\fR 4
  .IX Item "sve-b16b16"
! Enable the SVE non\-widening brain floating\-point (\f(CW\*(C`bf16\*(C'\fR) extension.
  This only has an effect when \f(CW\*(C`sve2\*(C'\fR or \f(CW\*(C`sme2\*(C'\fR are also enabled.
  .PP
  Feature \fBcrypto\fR implies \fBaes\fR, \fBsha2\fR, and \fBsimd\fR,
*************** Conversely, \fBnofp\fR implies \fBnosimd
*** 21683,21816 ****
  .IX Subsection "Adapteva Epiphany Options"
  .PP
  These \fB\-m\fR options are defined for Adapteva Epiphany:
! .IP "\fB\-mhalf\-reg\-file\fR" 4
  .IX Item "-mhalf-reg-file"
! Don't allocate any register in the range \f(CW\*(C`r32\*(C'\fR...\f(CW\*(C`r63\*(C'\fR.
  That allows code to run on hardware variants that lack these registers.
! .IP "\fB\-mprefer\-short\-insn\-regs\fR" 4
  .IX Item "-mprefer-short-insn-regs"
  Preferentially allocate registers that allow short instruction generation.
  This can result in increased instruction count, so this may either reduce or
  increase overall code size.
! .IP "\fB\-mbranch\-cost=\fR\fInum\fR" 4
  .IX Item "-mbranch-cost=num"
! Set the cost of branches to roughly \fInum\fR \*(L"simple\*(R" instructions.
  This cost is only a heuristic and is not guaranteed to produce
  consistent results across releases.
! .IP "\fB\-mcmove\fR" 4
  .IX Item "-mcmove"
  Enable the generation of conditional moves.
! .IP "\fB\-mnops=\fR\fInum\fR" 4
  .IX Item "-mnops=num"
  Emit \fInum\fR NOPs before every other generated instruction.
! .IP "\fB\-mno\-soft\-cmpsf\fR" 4
  .IX Item "-mno-soft-cmpsf"
! For single-precision floating-point comparisons, emit an \f(CW\*(C`fsub\*(C'\fR instruction
  and test the flags.  This is faster than a software comparison, but can
  get incorrect results in the presence of NaNs, or when two different small
  numbers are compared such that their difference is calculated as zero.
! The default is \fB\-msoft\-cmpsf\fR, which uses slower, but IEEE-compliant,
  software comparisons.
! .IP "\fB\-mstack\-offset=\fR\fInum\fR" 4
  .IX Item "-mstack-offset=num"
  Set the offset between the top of the stack and the stack pointer.
  E.g., a value of 8 means that the eight bytes in the range \f(CW\*(C`sp+0...sp+7\*(C'\fR
  can be used by leaf functions without stack allocation.
  Values other than \fB8\fR or \fB16\fR are untested and unlikely to work.
! Note also that this option changes the \s-1ABI\s0; compiling a program with a
  different stack offset than the libraries have been compiled with
  generally does not work.
  This option can be useful if you want to evaluate if a different stack
  offset would give you better code, but to actually use a different stack
  offset to build working programs, it is recommended to configure the
  toolchain with the appropriate \fB\-\-with\-stack\-offset=\fR\fInum\fR option.
! .IP "\fB\-mno\-round\-nearest\fR" 4
  .IX Item "-mno-round-nearest"
  Make the scheduler assume that the rounding mode has been set to
  truncating.  The default is \fB\-mround\-nearest\fR.
! .IP "\fB\-mlong\-calls\fR" 4
  .IX Item "-mlong-calls"
  If not otherwise specified by an attribute, assume all calls might be beyond
  the offset range of the \f(CW\*(C`b\*(C'\fR / \f(CW\*(C`bl\*(C'\fR instructions, and therefore load the
  function address into a register before performing a (otherwise direct) call.
  This is the default.
! .IP "\fB\-mshort\-calls\fR" 4
  .IX Item "-mshort-calls"
  If not otherwise specified by an attribute, assume all direct calls are
  in the range of the \f(CW\*(C`b\*(C'\fR / \f(CW\*(C`bl\*(C'\fR instructions, so use these instructions
  for direct calls.  The default is \fB\-mlong\-calls\fR.
! .IP "\fB\-msmall16\fR" 4
  .IX Item "-msmall16"
  Assume addresses can be loaded as 16\-bit unsigned values.  This does not
  apply to function addresses for which \fB\-mlong\-calls\fR semantics
  are in effect.
! .IP "\fB\-mfp\-mode=\fR\fImode\fR" 4
  .IX Item "-mfp-mode=mode"
! Set the prevailing mode of the floating-point unit.
! This determines the floating-point mode that is provided and expected
  at function call and return time.  Making this mode match the mode you
  predominantly need at function start can make your programs smaller and
  faster by avoiding unnecessary mode switches.
  .Sp
  \&\fImode\fR can be set to one the following values:
  .RS 4
! .IP "\fBcaller\fR" 4
  .IX Item "caller"
  Any mode at function entry is valid, and retained or restored when
  the function returns, and when it calls other functions.
  This mode is useful for compiling libraries or other compilation units
  you might want to incorporate into different programs with different
! prevailing \s-1FPU\s0 modes, and the convenience of being able to use a single
  object file outweighs the size and speed overhead for any extra
  mode switching that might be needed, compared with what would be needed
! with a more specific choice of prevailing \s-1FPU\s0 mode.
! .IP "\fBtruncate\fR" 4
  .IX Item "truncate"
! This is the mode used for floating-point calculations with
  truncating (i.e. round towards zero) rounding mode.  That includes
  conversion from floating point to integer.
! .IP "\fBround-nearest\fR" 4
  .IX Item "round-nearest"
! This is the mode used for floating-point calculations with
! round-to-nearest-or-even rounding mode.
! .IP "\fBint\fR" 4
  .IX Item "int"
! This is the mode used to perform integer calculations in the \s-1FPU,\s0 e.g.
! integer multiply, or integer multiply-and-accumulate.
  .RE
  .RS 4
  .Sp
  The default is \fB\-mfp\-mode=caller\fR
  .RE
! .IP "\fB\-mno\-split\-lohi\fR" 4
  .IX Item "-mno-split-lohi"
  .PD 0
! .IP "\fB\-mno\-postinc\fR" 4
  .IX Item "-mno-postinc"
! .IP "\fB\-mno\-postmodify\fR" 4
  .IX Item "-mno-postmodify"
  .PD
  Code generation tweaks that disable, respectively, splitting of 32\-bit
! loads, generation of post-increment addresses, and generation of
! post-modify addresses.  The defaults are \fBmsplit-lohi\fR,
  \&\fB\-mpost\-inc\fR, and \fB\-mpost\-modify\fR.
! .IP "\fB\-mnovect\-double\fR" 4
  .IX Item "-mnovect-double"
! Change the preferred \s-1SIMD\s0 mode to SImode.  The default is
! \&\fB\-mvect\-double\fR, which uses DImode as preferred \s-1SIMD\s0 mode.
! .IP "\fB\-max\-vect\-align=\fR\fInum\fR" 4
  .IX Item "-max-vect-align=num"
! The maximum alignment for \s-1SIMD\s0 vector mode types.
  \&\fInum\fR may be 4 or 8.  The default is 8.
! Note that this is an \s-1ABI\s0 change, even though many library function
! interfaces are unaffected if they don't use \s-1SIMD\s0 vector modes
  in places that affect size and/or alignment of relevant types.
! .IP "\fB\-msplit\-vecmove\-early\fR" 4
  .IX Item "-msplit-vecmove-early"
  Split vector moves into single word moves before reload.  In theory this
  can give better register allocation, but so far the reverse seems to be
  generally the case.
! .IP "\fB\-m1reg\-\fR\fIreg\fR" 4
  .IX Item "-m1reg-reg"
  Specify a register to hold the constant \-1, which makes loading small negative
  constants and certain bitmasks faster.
--- 21618,21751 ----
  .IX Subsection "Adapteva Epiphany Options"
  .PP
  These \fB\-m\fR options are defined for Adapteva Epiphany:
! .IP \fB\-mhalf\-reg\-file\fR 4
  .IX Item "-mhalf-reg-file"
! Don\*(Aqt allocate any register in the range \f(CW\*(C`r32\*(C'\fR...\f(CW\*(C`r63\*(C'\fR.
  That allows code to run on hardware variants that lack these registers.
! .IP \fB\-mprefer\-short\-insn\-regs\fR 4
  .IX Item "-mprefer-short-insn-regs"
  Preferentially allocate registers that allow short instruction generation.
  This can result in increased instruction count, so this may either reduce or
  increase overall code size.
! .IP \fB\-mbranch\-cost=\fR\fInum\fR 4
  .IX Item "-mbranch-cost=num"
! Set the cost of branches to roughly \fInum\fR "simple" instructions.
  This cost is only a heuristic and is not guaranteed to produce
  consistent results across releases.
! .IP \fB\-mcmove\fR 4
  .IX Item "-mcmove"
  Enable the generation of conditional moves.
! .IP \fB\-mnops=\fR\fInum\fR 4
  .IX Item "-mnops=num"
  Emit \fInum\fR NOPs before every other generated instruction.
! .IP \fB\-mno\-soft\-cmpsf\fR 4
  .IX Item "-mno-soft-cmpsf"
! For single\-precision floating\-point comparisons, emit an \f(CW\*(C`fsub\*(C'\fR instruction
  and test the flags.  This is faster than a software comparison, but can
  get incorrect results in the presence of NaNs, or when two different small
  numbers are compared such that their difference is calculated as zero.
! The default is \fB\-msoft\-cmpsf\fR, which uses slower, but IEEE\-compliant,
  software comparisons.
! .IP \fB\-mstack\-offset=\fR\fInum\fR 4
  .IX Item "-mstack-offset=num"
  Set the offset between the top of the stack and the stack pointer.
  E.g., a value of 8 means that the eight bytes in the range \f(CW\*(C`sp+0...sp+7\*(C'\fR
  can be used by leaf functions without stack allocation.
  Values other than \fB8\fR or \fB16\fR are untested and unlikely to work.
! Note also that this option changes the ABI; compiling a program with a
  different stack offset than the libraries have been compiled with
  generally does not work.
  This option can be useful if you want to evaluate if a different stack
  offset would give you better code, but to actually use a different stack
  offset to build working programs, it is recommended to configure the
  toolchain with the appropriate \fB\-\-with\-stack\-offset=\fR\fInum\fR option.
! .IP \fB\-mno\-round\-nearest\fR 4
  .IX Item "-mno-round-nearest"
  Make the scheduler assume that the rounding mode has been set to
  truncating.  The default is \fB\-mround\-nearest\fR.
! .IP \fB\-mlong\-calls\fR 4
  .IX Item "-mlong-calls"
  If not otherwise specified by an attribute, assume all calls might be beyond
  the offset range of the \f(CW\*(C`b\*(C'\fR / \f(CW\*(C`bl\*(C'\fR instructions, and therefore load the
  function address into a register before performing a (otherwise direct) call.
  This is the default.
! .IP \fB\-mshort\-calls\fR 4
  .IX Item "-mshort-calls"
  If not otherwise specified by an attribute, assume all direct calls are
  in the range of the \f(CW\*(C`b\*(C'\fR / \f(CW\*(C`bl\*(C'\fR instructions, so use these instructions
  for direct calls.  The default is \fB\-mlong\-calls\fR.
! .IP \fB\-msmall16\fR 4
  .IX Item "-msmall16"
  Assume addresses can be loaded as 16\-bit unsigned values.  This does not
  apply to function addresses for which \fB\-mlong\-calls\fR semantics
  are in effect.
! .IP \fB\-mfp\-mode=\fR\fImode\fR 4
  .IX Item "-mfp-mode=mode"
! Set the prevailing mode of the floating\-point unit.
! This determines the floating\-point mode that is provided and expected
  at function call and return time.  Making this mode match the mode you
  predominantly need at function start can make your programs smaller and
  faster by avoiding unnecessary mode switches.
  .Sp
  \&\fImode\fR can be set to one the following values:
  .RS 4
! .IP \fBcaller\fR 4
  .IX Item "caller"
  Any mode at function entry is valid, and retained or restored when
  the function returns, and when it calls other functions.
  This mode is useful for compiling libraries or other compilation units
  you might want to incorporate into different programs with different
! prevailing FPU modes, and the convenience of being able to use a single
  object file outweighs the size and speed overhead for any extra
  mode switching that might be needed, compared with what would be needed
! with a more specific choice of prevailing FPU mode.
! .IP \fBtruncate\fR 4
  .IX Item "truncate"
! This is the mode used for floating\-point calculations with
  truncating (i.e. round towards zero) rounding mode.  That includes
  conversion from floating point to integer.
! .IP \fBround\-nearest\fR 4
  .IX Item "round-nearest"
! This is the mode used for floating\-point calculations with
! round\-to\-nearest\-or\-even rounding mode.
! .IP \fBint\fR 4
  .IX Item "int"
! This is the mode used to perform integer calculations in the FPU, e.g.
! integer multiply, or integer multiply\-and\-accumulate.
  .RE
  .RS 4
  .Sp
  The default is \fB\-mfp\-mode=caller\fR
  .RE
! .IP \fB\-mno\-split\-lohi\fR 4
  .IX Item "-mno-split-lohi"
  .PD 0
! .IP \fB\-mno\-postinc\fR 4
  .IX Item "-mno-postinc"
! .IP \fB\-mno\-postmodify\fR 4
  .IX Item "-mno-postmodify"
  .PD
  Code generation tweaks that disable, respectively, splitting of 32\-bit
! loads, generation of post\-increment addresses, and generation of
! post\-modify addresses.  The defaults are \fBmsplit\-lohi\fR,
  \&\fB\-mpost\-inc\fR, and \fB\-mpost\-modify\fR.
! .IP \fB\-mnovect\-double\fR 4
  .IX Item "-mnovect-double"
! Change the preferred SIMD mode to SImode.  The default is
! \&\fB\-mvect\-double\fR, which uses DImode as preferred SIMD mode.
! .IP \fB\-max\-vect\-align=\fR\fInum\fR 4
  .IX Item "-max-vect-align=num"
! The maximum alignment for SIMD vector mode types.
  \&\fInum\fR may be 4 or 8.  The default is 8.
! Note that this is an ABI change, even though many library function
! interfaces are unaffected if they don\*(Aqt use SIMD vector modes
  in places that affect size and/or alignment of relevant types.
! .IP \fB\-msplit\-vecmove\-early\fR 4
  .IX Item "-msplit-vecmove-early"
  Split vector moves into single word moves before reload.  In theory this
  can give better register allocation, but so far the reverse seems to be
  generally the case.
! .IP \fB\-m1reg\-\fR\fIreg\fR 4
  .IX Item "-m1reg-reg"
  Specify a register to hold the constant \-1, which makes loading small negative
  constants and certain bitmasks faster.
*************** which specify use of that register as a
*** 21819,22400 ****
  and \fBnone\fR, which means that no register is used for this
  purpose.  The default is \fB\-m1reg\-none\fR.
  .PP
! \fI\s-1AMD GCN\s0 Options\fR
  .IX Subsection "AMD GCN Options"
  .PP
! These options are defined specifically for the \s-1AMD GCN\s0 port.
! .IP "\fB\-march=\fR\fIgpu\fR" 4
  .IX Item "-march=gpu"
  .PD 0
! .IP "\fB\-mtune=\fR\fIgpu\fR" 4
  .IX Item "-mtune=gpu"
  .PD
  Set architecture type or tuning for \fIgpu\fR. Supported values for \fIgpu\fR
  are
  .RS 4
! .IP "\fBgfx900\fR" 4
  .IX Item "gfx900"
! Compile for \s-1GCN5\s0 Vega 10 devices (gfx900).
! .IP "\fBgfx902\fR" 4
  .IX Item "gfx902"
! Compile for \s-1GCN5\s0 Vega gfx902 devices. (Experimental)
! .IP "\fBgfx904\fR" 4
  .IX Item "gfx904"
! Compile for \s-1GCN5\s0 Vega gfx904 devices. (Experimental)
! .IP "\fBgfx906\fR" 4
  .IX Item "gfx906"
! Compile for \s-1GCN5\s0 Vega 20 devices (gfx906).
! .IP "\fBgfx908\fR" 4
  .IX Item "gfx908"
! Compile for \s-1CDNA1\s0 Instinct \s-1MI100\s0 series devices (gfx908).
! .IP "\fBgfx909\fR" 4
  .IX Item "gfx909"
! Compile for \s-1GCN5\s0 Vega gfx909 devices. (Experimental)
! .IP "\fBgfx90a\fR" 4
  .IX Item "gfx90a"
! Compile for \s-1CDNA2\s0 Instinct \s-1MI200\s0 series devices (gfx90a).
! .IP "\fBgfx90c\fR" 4
  .IX Item "gfx90c"
! Compile for \s-1GCN5\s0 Vega 7 devices (gfx90c).
! .IP "\fBgfx9\-generic\fR" 4
  .IX Item "gfx9-generic"
  Compile generic code for Vega devices, executable on the following subset of
! \&\s-1GFX9\s0 devices: gfx900, gfx902, gfx904, gfx906, gfx909 and gfx90c. (Experimental)
! .IP "\fBgfx1030\fR" 4
  .IX Item "gfx1030"
! Compile for \s-1RDNA2\s0 gfx1030 devices (\s-1GFX10\s0 series).
! .IP "\fBgfx1031\fR" 4
  .IX Item "gfx1031"
! Compile for \s-1RDNA2\s0 gfx1031 devices (\s-1GFX10\s0 series). (Experimental)
! .IP "\fBgfx1032\fR" 4
  .IX Item "gfx1032"
! Compile for \s-1RDNA2\s0 gfx1032 devices (\s-1GFX10\s0 series). (Experimental)
! .IP "\fBgfx1033\fR" 4
  .IX Item "gfx1033"
! Compile for \s-1RDNA2\s0 gfx1033 devices (\s-1GFX10\s0 series). (Experimental)
! .IP "\fBgfx1034\fR" 4
  .IX Item "gfx1034"
! Compile for \s-1RDNA2\s0 gfx1034 devices (\s-1GFX10\s0 series). (Experimental)
! .IP "\fBgfx1035\fR" 4
  .IX Item "gfx1035"
! Compile for \s-1RDNA2\s0 gfx1035 devices (\s-1GFX10\s0 series). (Experimental)
! .IP "\fBgfx1036\fR" 4
  .IX Item "gfx1036"
! Compile for \s-1RDNA2\s0 gfx1036 devices (\s-1GFX10\s0 series).
! .IP "\fBgfx10\-3\-generic\fR" 4
  .IX Item "gfx10-3-generic"
! Compile generic code for \s-1GFX10\-3\s0 devices, executable on gfx1030,
  gfx1031, gfx1032, gfx1033, gfx1034, gfx1035, and gfx1036. (Experimental)
! .IP "\fBgfx1100\fR" 4
  .IX Item "gfx1100"
! Compile for \s-1RDNA3\s0 gfx1100 devices (\s-1GFX11\s0 series).
! .IP "\fBgfx1101\fR" 4
  .IX Item "gfx1101"
! Compile for \s-1RDNA3\s0 gfx1101 devices (\s-1GFX11\s0 series). (Experimental)
! .IP "\fBgfx1102\fR" 4
  .IX Item "gfx1102"
! Compile for \s-1RDNA3\s0 gfx1102 devices (\s-1GFX11\s0 series). (Experimental)
! .IP "\fBgfx1103\fR" 4
  .IX Item "gfx1103"
! Compile for \s-1RDNA3\s0 gfx1103 devices (\s-1GFX11\s0 series).
! .IP "\fBgfx1150\fR" 4
  .IX Item "gfx1150"
! Compile for \s-1RDNA3\s0 gfx1150 devices (\s-1GFX11\s0 series). (Experimental)
! .IP "\fBgfx1151\fR" 4
  .IX Item "gfx1151"
! Compile for \s-1RDNA3\s0 gfx1151 devices (\s-1GFX11\s0 series). (Experimental)
! .IP "\fBgfx1152\fR" 4
  .IX Item "gfx1152"
! Compile for \s-1RDNA3\s0 gfx1152 devices (\s-1GFX11\s0 series). (Experimental)
! .IP "\fBgfx1153\fR" 4
  .IX Item "gfx1153"
! Compile for \s-1RDNA3\s0 gfx1153 devices (\s-1GFX11\s0 series). (Experimental)
! .IP "\fBgfx11\-generic\fR" 4
  .IX Item "gfx11-generic"
! Compile generic code for \s-1GFX11\s0 devices, executable on gfx1100, gfx1101,
  gfx1102, gfx1103, gfx1150, gfx1151, gfx1152, and gfx1153. (Experimental)
  .RE
  .RS 4
  .RE
! .IP "\fB\-msram\-ecc=on\fR" 4
  .IX Item "-msram-ecc=on"
  .PD 0
! .IP "\fB\-msram\-ecc=off\fR" 4
  .IX Item "-msram-ecc=off"
! .IP "\fB\-msram\-ecc=any\fR" 4
  .IX Item "-msram-ecc=any"
  .PD
! Compile binaries suitable for devices with the SRAM-ECC feature enabled,
! disabled, or either mode.  This feature can be enabled per-process on some
  devices.  The compiled code must match the device mode. The default is
  \&\fBany\fR, for devices that support it.
! .IP "\fB\-mstack\-size=\fR\fIbytes\fR" 4
  .IX Item "-mstack-size=bytes"
! Specify how many \fIbytes\fR of stack space will be requested for each \s-1GPU\s0
! thread (wave-front).  Beware that there may be many threads and limited memory
  available.  The size of the stack allocation may also have an impact on
! run-time performance.  The default is 32KB when using OpenACC or OpenMP, and
  1MB otherwise.
! .IP "\fB\-mxnack=on\fR" 4
  .IX Item "-mxnack=on"
  .PD 0
! .IP "\fB\-mxnack=off\fR" 4
  .IX Item "-mxnack=off"
! .IP "\fB\-mxnack=any\fR" 4
  .IX Item "-mxnack=any"
  .PD
! Compile binaries suitable for devices with the \s-1XNACK\s0 feature enabled, disabled,
! or either mode.  Some devices always require \s-1XNACK\s0 and some allow the user to
! configure \s-1XNACK.\s0  The compiled code must match the device mode.
  The default is \fB\-mxnack=any\fR on devices that support Unified Shared
  Memory, and \fB\-mxnack=no\fR otherwise.
  .PP
! \fI\s-1ARC\s0 Options\fR
  .IX Subsection "ARC Options"
  .PP
  The following options control the architecture variant for which code
  is being compiled:
! .IP "\fB\-mbarrel\-shifter\fR" 4
  .IX Item "-mbarrel-shifter"
  Generate instructions supported by barrel shifter.  This is the default
  unless \fB\-mcpu=ARC601\fR or \fB\-mcpu=ARCEM\fR is in effect.
! .IP "\fB\-mjli\-always\fR" 4
  .IX Item "-mjli-always"
  Force to call a function using jli_s instruction.  This option is
  valid only for ARCv2 architecture.
! .IP "\fB\-mcpu=\fR\fIcpu\fR" 4
  .IX Item "-mcpu=cpu"
  Set architecture type, register usage, and instruction scheduling
  parameters for \fIcpu\fR.  There are also shortcut alias options
  available for backward compatibility and convenience.  Supported
  values for \fIcpu\fR are
  .RS 4
! .IP "\fBarc600\fR" 4
  .IX Item "arc600"
! Compile for \s-1ARC600.\s0  Aliases: \fB\-mA6\fR, \fB\-mARC600\fR.
! .IP "\fBarc601\fR" 4
  .IX Item "arc601"
! Compile for \s-1ARC601.\s0  Alias: \fB\-mARC601\fR.
! .IP "\fBarc700\fR" 4
  .IX Item "arc700"
! Compile for \s-1ARC700.\s0  Aliases: \fB\-mA7\fR, \fB\-mARC700\fR.
  This is the default when configured with \fB\-\-with\-cpu=arc700\fR.
! .IP "\fBarcem\fR" 4
  .IX Item "arcem"
! Compile for \s-1ARC EM.\s0
! .IP "\fBarchs\fR" 4
  .IX Item "archs"
! Compile for \s-1ARC HS.\s0
! .IP "\fBem\fR" 4
  .IX Item "em"
! Compile for \s-1ARC EM CPU\s0 with no hardware extensions.
! .IP "\fBem4\fR" 4
  .IX Item "em4"
! Compile for \s-1ARC EM4 CPU.\s0
! .IP "\fBem4_dmips\fR" 4
  .IX Item "em4_dmips"
! Compile for \s-1ARC EM4 DMIPS CPU.\s0
! .IP "\fBem4_fpus\fR" 4
  .IX Item "em4_fpus"
! Compile for \s-1ARC EM4 DMIPS CPU\s0 with the single-precision floating-point
  extension.
! .IP "\fBem4_fpuda\fR" 4
  .IX Item "em4_fpuda"
! Compile for \s-1ARC EM4 DMIPS CPU\s0 with single-precision floating-point and
  double assist instructions.
! .IP "\fBhs\fR" 4
  .IX Item "hs"
! Compile for \s-1ARC HS CPU\s0 with no hardware extensions except the atomic
  instructions.
! .IP "\fBhs34\fR" 4
  .IX Item "hs34"
! Compile for \s-1ARC HS34 CPU.\s0
! .IP "\fBhs38\fR" 4
  .IX Item "hs38"
! Compile for \s-1ARC HS38 CPU.\s0
! .IP "\fBhs38_linux\fR" 4
  .IX Item "hs38_linux"
! Compile for \s-1ARC HS38 CPU\s0 with all hardware extensions on.
! .IP "\fBhs4x\fR" 4
  .IX Item "hs4x"
! Compile for \s-1ARC\s0 HS4x \s-1CPU.\s0
! .IP "\fBhs4xd\fR" 4
  .IX Item "hs4xd"
! Compile for \s-1ARC\s0 HS4xD \s-1CPU.\s0
! .IP "\fBhs4x_rel31\fR" 4
  .IX Item "hs4x_rel31"
! Compile for \s-1ARC\s0 HS4x \s-1CPU\s0 release 3.10a.
! .IP "\fBarc600_norm\fR" 4
  .IX Item "arc600_norm"
! Compile for \s-1ARC 600 CPU\s0 with \f(CW\*(C`norm\*(C'\fR instructions enabled.
! .IP "\fBarc600_mul32x16\fR" 4
  .IX Item "arc600_mul32x16"
! Compile for \s-1ARC 600 CPU\s0 with \f(CW\*(C`norm\*(C'\fR and 32x16\-bit multiply
  instructions enabled.
! .IP "\fBarc600_mul64\fR" 4
  .IX Item "arc600_mul64"
! Compile for \s-1ARC 600 CPU\s0 with \f(CW\*(C`norm\*(C'\fR and \f(CW\*(C`mul64\*(C'\fR\-family
  instructions enabled.
! .IP "\fBarc601_norm\fR" 4
  .IX Item "arc601_norm"
! Compile for \s-1ARC 601 CPU\s0 with \f(CW\*(C`norm\*(C'\fR instructions enabled.
! .IP "\fBarc601_mul32x16\fR" 4
  .IX Item "arc601_mul32x16"
! Compile for \s-1ARC 601 CPU\s0 with \f(CW\*(C`norm\*(C'\fR and 32x16\-bit multiply
  instructions enabled.
! .IP "\fBarc601_mul64\fR" 4
  .IX Item "arc601_mul64"
! Compile for \s-1ARC 601 CPU\s0 with \f(CW\*(C`norm\*(C'\fR and \f(CW\*(C`mul64\*(C'\fR\-family
  instructions enabled.
! .IP "\fBnps400\fR" 4
  .IX Item "nps400"
! Compile for \s-1ARC 700\s0 on \s-1NPS400\s0 chip.
! .IP "\fBem_mini\fR" 4
  .IX Item "em_mini"
! Compile for \s-1ARC EM\s0 minimalist configuration featuring reduced register
  set.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mdpfp\fR" 4
  .IX Item "-mdpfp"
  .PD 0
! .IP "\fB\-mdpfp\-compact\fR" 4
  .IX Item "-mdpfp-compact"
  .PD
! Generate double-precision \s-1FPX\s0 instructions, tuned for the compact
  implementation.
! .IP "\fB\-mdpfp\-fast\fR" 4
  .IX Item "-mdpfp-fast"
! Generate double-precision \s-1FPX\s0 instructions, tuned for the fast
  implementation.
! .IP "\fB\-mno\-dpfp\-lrsr\fR" 4
  .IX Item "-mno-dpfp-lrsr"
! Disable \f(CW\*(C`lr\*(C'\fR and \f(CW\*(C`sr\*(C'\fR instructions from using \s-1FPX\s0 extension
  aux registers.
! .IP "\fB\-mea\fR" 4
  .IX Item "-mea"
  Generate extended arithmetic instructions.  Currently only
  \&\f(CW\*(C`divaw\*(C'\fR, \f(CW\*(C`adds\*(C'\fR, \f(CW\*(C`subs\*(C'\fR, and \f(CW\*(C`sat16\*(C'\fR are
  supported.  Only valid for \fB\-mcpu=ARC700\fR.
! .IP "\fB\-mno\-mpy\fR" 4
  .IX Item "-mno-mpy"
! Do not generate \f(CW\*(C`mpy\*(C'\fR\-family instructions for \s-1ARC700.\s0  This option is
  deprecated.
! .IP "\fB\-mmul32x16\fR" 4
  .IX Item "-mmul32x16"
! Generate 32x16\-bit multiply and multiply-accumulate instructions.
! .IP "\fB\-mmul64\fR" 4
  .IX Item "-mmul64"
  Generate \f(CW\*(C`mul64\*(C'\fR and \f(CW\*(C`mulu64\*(C'\fR instructions.
  Only valid for \fB\-mcpu=ARC600\fR.
! .IP "\fB\-mnorm\fR" 4
  .IX Item "-mnorm"
  Generate \f(CW\*(C`norm\*(C'\fR instructions.  This is the default if \fB\-mcpu=ARC700\fR
  is in effect.
! .IP "\fB\-mspfp\fR" 4
  .IX Item "-mspfp"
  .PD 0
! .IP "\fB\-mspfp\-compact\fR" 4
  .IX Item "-mspfp-compact"
  .PD
! Generate single-precision \s-1FPX\s0 instructions, tuned for the compact
  implementation.
! .IP "\fB\-mspfp\-fast\fR" 4
  .IX Item "-mspfp-fast"
! Generate single-precision \s-1FPX\s0 instructions, tuned for the fast
  implementation.
! .IP "\fB\-msimd\fR" 4
  .IX Item "-msimd"
! Enable generation of \s-1ARC SIMD\s0 instructions via target-specific
  builtins.  Only valid for \fB\-mcpu=ARC700\fR.
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  This option ignored; it is provided for compatibility purposes only.
! Software floating-point code is emitted by default, and this default
! can overridden by \s-1FPX\s0 options; \fB\-mspfp\fR, \fB\-mspfp\-compact\fR, or
  \&\fB\-mspfp\-fast\fR for single precision, and \fB\-mdpfp\fR,
  \&\fB\-mdpfp\-compact\fR, or \fB\-mdpfp\-fast\fR for double precision.
! .IP "\fB\-mswap\fR" 4
  .IX Item "-mswap"
  Generate \f(CW\*(C`swap\*(C'\fR instructions.
! .IP "\fB\-matomic\fR" 4
  .IX Item "-matomic"
  This enables use of the locked load/store conditional extension to implement
! atomic memory built-in functions.  Not available for \s-1ARC\s0 6xx or \s-1ARC
! EM\s0 cores.
! .IP "\fB\-mdiv\-rem\fR" 4
  .IX Item "-mdiv-rem"
  Enable \f(CW\*(C`div\*(C'\fR and \f(CW\*(C`rem\*(C'\fR instructions for ARCv2 cores.
! .IP "\fB\-mcode\-density\fR" 4
  .IX Item "-mcode-density"
! Enable code density instructions for \s-1ARC EM.\s0
! This option is on by default for \s-1ARC HS.\s0
! .IP "\fB\-mll64\fR" 4
  .IX Item "-mll64"
! Enable double load/store operations for \s-1ARC HS\s0 cores.
! .IP "\fB\-mtp\-regno=\fR\fIregno\fR" 4
  .IX Item "-mtp-regno=regno"
  Specify thread pointer register number.
! .IP "\fB\-mmpy\-option=\fR\fImulto\fR" 4
  .IX Item "-mmpy-option=multo"
  Compile ARCv2 code with a multiplier design option.  You can specify
  the option using either a string or numeric value for \fImulto\fR.
  \&\fBwlh1\fR is the default value.  The recognized values are:
  .RS 4
! .IP "\fB0\fR" 4
  .IX Item "0"
  .PD 0
! .IP "\fBnone\fR" 4
  .IX Item "none"
  .PD
  No multiplier available.
! .IP "\fB1\fR" 4
  .IX Item "1"
  .PD 0
! .IP "\fBw\fR" 4
  .IX Item "w"
  .PD
  16x16 multiplier, fully pipelined.
  The following instructions are enabled: \f(CW\*(C`mpyw\*(C'\fR and \f(CW\*(C`mpyuw\*(C'\fR.
! .IP "\fB2\fR" 4
  .IX Item "2"
  .PD 0
! .IP "\fBwlh1\fR" 4
  .IX Item "wlh1"
  .PD
  32x32 multiplier, fully
  pipelined (1 stage).  The following instructions are additionally
  enabled: \f(CW\*(C`mpy\*(C'\fR, \f(CW\*(C`mpyu\*(C'\fR, \f(CW\*(C`mpym\*(C'\fR, \f(CW\*(C`mpymu\*(C'\fR, and \f(CW\*(C`mpy_s\*(C'\fR.
! .IP "\fB3\fR" 4
  .IX Item "3"
  .PD 0
! .IP "\fBwlh2\fR" 4
  .IX Item "wlh2"
  .PD
  32x32 multiplier, fully pipelined
  (2 stages).  The following instructions are additionally enabled: \f(CW\*(C`mpy\*(C'\fR,
  \&\f(CW\*(C`mpyu\*(C'\fR, \f(CW\*(C`mpym\*(C'\fR, \f(CW\*(C`mpymu\*(C'\fR, and \f(CW\*(C`mpy_s\*(C'\fR.
! .IP "\fB4\fR" 4
  .IX Item "4"
  .PD 0
! .IP "\fBwlh3\fR" 4
  .IX Item "wlh3"
  .PD
  Two 16x16 multipliers, blocking,
  sequential.  The following instructions are additionally enabled: \f(CW\*(C`mpy\*(C'\fR,
  \&\f(CW\*(C`mpyu\*(C'\fR, \f(CW\*(C`mpym\*(C'\fR, \f(CW\*(C`mpymu\*(C'\fR, and \f(CW\*(C`mpy_s\*(C'\fR.
! .IP "\fB5\fR" 4
  .IX Item "5"
  .PD 0
! .IP "\fBwlh4\fR" 4
  .IX Item "wlh4"
  .PD
  One 16x16 multiplier, blocking,
  sequential.  The following instructions are additionally enabled: \f(CW\*(C`mpy\*(C'\fR,
  \&\f(CW\*(C`mpyu\*(C'\fR, \f(CW\*(C`mpym\*(C'\fR, \f(CW\*(C`mpymu\*(C'\fR, and \f(CW\*(C`mpy_s\*(C'\fR.
! .IP "\fB6\fR" 4
  .IX Item "6"
  .PD 0
! .IP "\fBwlh5\fR" 4
  .IX Item "wlh5"
  .PD
  One 32x4 multiplier, blocking,
  sequential.  The following instructions are additionally enabled: \f(CW\*(C`mpy\*(C'\fR,
  \&\f(CW\*(C`mpyu\*(C'\fR, \f(CW\*(C`mpym\*(C'\fR, \f(CW\*(C`mpymu\*(C'\fR, and \f(CW\*(C`mpy_s\*(C'\fR.
! .IP "\fB7\fR" 4
  .IX Item "7"
  .PD 0
! .IP "\fBplus_dmpy\fR" 4
  .IX Item "plus_dmpy"
  .PD
! \&\s-1ARC HS SIMD\s0 support.
! .IP "\fB8\fR" 4
  .IX Item "8"
  .PD 0
! .IP "\fBplus_macd\fR" 4
  .IX Item "plus_macd"
  .PD
! \&\s-1ARC HS SIMD\s0 support.
! .IP "\fB9\fR" 4
  .IX Item "9"
  .PD 0
! .IP "\fBplus_qmacw\fR" 4
  .IX Item "plus_qmacw"
  .PD
! \&\s-1ARC HS SIMD\s0 support.
  .RE
  .RS 4
  .Sp
  This option is only available for ARCv2 cores.
  .RE
! .IP "\fB\-mfpu=\fR\fIfpu\fR" 4
  .IX Item "-mfpu=fpu"
! Enables support for specific floating-point hardware extensions for ARCv2
  cores.  Supported values for \fIfpu\fR are:
  .RS 4
! .IP "\fBfpus\fR" 4
  .IX Item "fpus"
! Enables support for single-precision floating-point hardware
  extensions.
! .IP "\fBfpud\fR" 4
  .IX Item "fpud"
! Enables support for double-precision floating-point hardware
! extensions.  The single-precision floating-point extension is also
! enabled.  Not available for \s-1ARC EM.\s0
! .IP "\fBfpuda\fR" 4
  .IX Item "fpuda"
! Enables support for double-precision floating-point hardware
! extensions using double-precision assist instructions.  The single-precision
! floating-point extension is also enabled.  This option is
! only available for \s-1ARC EM.\s0
! .IP "\fBfpuda_div\fR" 4
  .IX Item "fpuda_div"
! Enables support for double-precision floating-point hardware
! extensions using double-precision assist instructions.
! The single-precision floating-point, square-root, and divide
  extensions are also enabled.  This option is
! only available for \s-1ARC EM.\s0
! .IP "\fBfpuda_fma\fR" 4
  .IX Item "fpuda_fma"
! Enables support for double-precision floating-point hardware
! extensions using double-precision assist instructions.
! The single-precision floating-point and fused multiply and add
  hardware extensions are also enabled.  This option is
! only available for \s-1ARC EM.\s0
! .IP "\fBfpuda_all\fR" 4
  .IX Item "fpuda_all"
! Enables support for double-precision floating-point hardware
! extensions using double-precision assist instructions.
! All single-precision floating-point hardware extensions are also
! enabled.  This option is only available for \s-1ARC EM.\s0
! .IP "\fBfpus_div\fR" 4
  .IX Item "fpus_div"
! Enables support for single-precision floating-point, square-root and divide
  hardware extensions.
! .IP "\fBfpud_div\fR" 4
  .IX Item "fpud_div"
! Enables support for double-precision floating-point, square-root and divide
  hardware extensions.  This option
! includes option \fBfpus_div\fR. Not available for \s-1ARC EM.\s0
! .IP "\fBfpus_fma\fR" 4
  .IX Item "fpus_fma"
! Enables support for single-precision floating-point and
  fused multiply and add hardware extensions.
! .IP "\fBfpud_fma\fR" 4
  .IX Item "fpud_fma"
! Enables support for double-precision floating-point and
  fused multiply and add hardware extensions.  This option
! includes option \fBfpus_fma\fR.  Not available for \s-1ARC EM.\s0
! .IP "\fBfpus_all\fR" 4
  .IX Item "fpus_all"
! Enables support for all single-precision floating-point hardware
  extensions.
! .IP "\fBfpud_all\fR" 4
  .IX Item "fpud_all"
! Enables support for all single\- and double-precision floating-point
! hardware extensions.  Not available for \s-1ARC EM.\s0
  .RE
  .RS 4
  .RE
! .IP "\fB\-mirq\-ctrl\-saved=\fR\fIregister-range\fR\fB,\fR \fIblink\fR\fB,\fR \fIlp_count\fR" 4
  .IX Item "-mirq-ctrl-saved=register-range, blink, lp_count"
! Specifies general-purposes registers that the processor automatically
! saves/restores on interrupt entry and exit.  \fIregister-range\fR is
  specified as two registers separated by a dash.  The register range
  always starts with \f(CW\*(C`r0\*(C'\fR, the upper limit is \f(CW\*(C`fp\*(C'\fR register.
  \&\fIblink\fR and \fIlp_count\fR are optional.  This option is only
! valid for \s-1ARC EM\s0 and \s-1ARC HS\s0 cores.
! .IP "\fB\-mrgf\-banked\-regs=\fR\fInumber\fR" 4
  .IX Item "-mrgf-banked-regs=number"
  Specifies the number of registers replicated in second register bank
  on entry to fast interrupt.  Fast interrupts are interrupts with the
! highest priority level P0.  These interrupts save only \s-1PC\s0 and \s-1STATUS32\s0
  registers to avoid memory transactions during interrupt entry and exit
  sequences.  Use this option when you are using fast interrupts in an
! \&\s-1ARC V2\s0 family processor.  Permitted values are 4, 8, 16, and 32.
! .IP "\fB\-mlpc\-width=\fR\fIwidth\fR" 4
  .IX Item "-mlpc-width=width"
  Specify the width of the \f(CW\*(C`lp_count\*(C'\fR register.  Valid values for
  \&\fIwidth\fR are 8, 16, 20, 24, 28 and 32 bits.  The default width is
  fixed to 32 bits.  If the width is less than 32, the compiler does not
! attempt to transform loops in your program to use the zero-delay loop
  mechanism unless it is known that the \f(CW\*(C`lp_count\*(C'\fR register can
! hold the required loop-counter value.  Depending on the width
! specified, the compiler and run-time library might continue to use the
  loop mechanism for various needs.  This option defines macro
  \&\f(CW\*(C`_\|_ARC_LPC_WIDTH_\|_\*(C'\fR with the value of \fIwidth\fR.
! .IP "\fB\-mrf16\fR" 4
  .IX Item "-mrf16"
  This option instructs the compiler to generate code for a 16\-entry
  register file.  This option defines the \f(CW\*(C`_\|_ARC_RF16_\|_\*(C'\fR
  preprocessor macro.
! .IP "\fB\-mbranch\-index\fR" 4
  .IX Item "-mbranch-index"
  Enable use of \f(CW\*(C`bi\*(C'\fR or \f(CW\*(C`bih\*(C'\fR instructions to implement jump
  tables.
  .PP
  The following options are passed through to the assembler, and also
  define preprocessor macro symbols.
! .IP "\fB\-mdsp\-packa\fR" 4
  .IX Item "-mdsp-packa"
! Passed down to the assembler to enable the \s-1DSP\s0 Pack A extensions.
  Also sets the preprocessor symbol \f(CW\*(C`_\|_Xdsp_packa\*(C'\fR.  This option is
  deprecated.
! .IP "\fB\-mdvbf\fR" 4
  .IX Item "-mdvbf"
  Passed down to the assembler to enable the dual Viterbi butterfly
  extension.  Also sets the preprocessor symbol \f(CW\*(C`_\|_Xdvbf\*(C'\fR.  This
  option is deprecated.
! .IP "\fB\-mlock\fR" 4
  .IX Item "-mlock"
  Passed down to the assembler to enable the locked load/store
  conditional extension.  Also sets the preprocessor symbol
  \&\f(CW\*(C`_\|_Xlock\*(C'\fR.
! .IP "\fB\-mmac\-d16\fR" 4
  .IX Item "-mmac-d16"
  Passed down to the assembler.  Also sets the preprocessor symbol
  \&\f(CW\*(C`_\|_Xxmac_d16\*(C'\fR.  This option is deprecated.
! .IP "\fB\-mmac\-24\fR" 4
  .IX Item "-mmac-24"
  Passed down to the assembler.  Also sets the preprocessor symbol
  \&\f(CW\*(C`_\|_Xxmac_24\*(C'\fR.  This option is deprecated.
! .IP "\fB\-mrtsc\fR" 4
  .IX Item "-mrtsc"
! Passed down to the assembler to enable the 64\-bit time-stamp counter
  extension instruction.  Also sets the preprocessor symbol
  \&\f(CW\*(C`_\|_Xrtsc\*(C'\fR.  This option is deprecated.
! .IP "\fB\-mswape\fR" 4
  .IX Item "-mswape"
  Passed down to the assembler to enable the swap byte ordering
  extension instruction.  Also sets the preprocessor symbol
  \&\f(CW\*(C`_\|_Xswape\*(C'\fR.
! .IP "\fB\-mtelephony\fR" 4
  .IX Item "-mtelephony"
! Passed down to the assembler to enable dual\- and single-operand
  instructions for telephony.  Also sets the preprocessor symbol
  \&\f(CW\*(C`_\|_Xtelephony\*(C'\fR.  This option is deprecated.
! .IP "\fB\-mxy\fR" 4
  .IX Item "-mxy"
! Passed down to the assembler to enable the \s-1XY\s0 memory extension.  Also
  sets the preprocessor symbol \f(CW\*(C`_\|_Xxy\*(C'\fR.
  .PP
  The following options control how the assembly code is annotated:
! .IP "\fB\-misize\fR" 4
  .IX Item "-misize"
  Annotate assembler instructions with estimated addresses.
! .IP "\fB\-mannotate\-align\fR" 4
  .IX Item "-mannotate-align"
  Does nothing.  Preserved for backward compatibility.
  .PP
  The following options are passed through to the linker:
! .IP "\fB\-marclinux\fR" 4
  .IX Item "-marclinux"
  Passed through to the linker, to specify use of the \f(CW\*(C`arclinux\*(C'\fR emulation.
  This option is enabled by default in tool chains built for
  \&\f(CW\*(C`arc\-linux\-uclibc\*(C'\fR and \f(CW\*(C`arceb\-linux\-uclibc\*(C'\fR targets
  when profiling is not requested.
! .IP "\fB\-marclinux_prof\fR" 4
  .IX Item "-marclinux_prof"
  Passed through to the linker, to specify use of the
  \&\f(CW\*(C`arclinux_prof\*(C'\fR emulation.  This option is enabled by default in
--- 21754,22335 ----
  and \fBnone\fR, which means that no register is used for this
  purpose.  The default is \fB\-m1reg\-none\fR.
  .PP
! \fIAMD GCN Options\fR
  .IX Subsection "AMD GCN Options"
  .PP
! These options are defined specifically for the AMD GCN port.
! .IP \fB\-march=\fR\fIgpu\fR 4
  .IX Item "-march=gpu"
  .PD 0
! .IP \fB\-mtune=\fR\fIgpu\fR 4
  .IX Item "-mtune=gpu"
  .PD
  Set architecture type or tuning for \fIgpu\fR. Supported values for \fIgpu\fR
  are
  .RS 4
! .IP \fBgfx900\fR 4
  .IX Item "gfx900"
! Compile for GCN5 Vega 10 devices (gfx900).
! .IP \fBgfx902\fR 4
  .IX Item "gfx902"
! Compile for GCN5 Vega gfx902 devices. (Experimental)
! .IP \fBgfx904\fR 4
  .IX Item "gfx904"
! Compile for GCN5 Vega gfx904 devices. (Experimental)
! .IP \fBgfx906\fR 4
  .IX Item "gfx906"
! Compile for GCN5 Vega 20 devices (gfx906).
! .IP \fBgfx908\fR 4
  .IX Item "gfx908"
! Compile for CDNA1 Instinct MI100 series devices (gfx908).
! .IP \fBgfx909\fR 4
  .IX Item "gfx909"
! Compile for GCN5 Vega gfx909 devices. (Experimental)
! .IP \fBgfx90a\fR 4
  .IX Item "gfx90a"
! Compile for CDNA2 Instinct MI200 series devices (gfx90a).
! .IP \fBgfx90c\fR 4
  .IX Item "gfx90c"
! Compile for GCN5 Vega 7 devices (gfx90c).
! .IP \fBgfx9\-generic\fR 4
  .IX Item "gfx9-generic"
  Compile generic code for Vega devices, executable on the following subset of
! GFX9 devices: gfx900, gfx902, gfx904, gfx906, gfx909 and gfx90c. (Experimental)
! .IP \fBgfx1030\fR 4
  .IX Item "gfx1030"
! Compile for RDNA2 gfx1030 devices (GFX10 series).
! .IP \fBgfx1031\fR 4
  .IX Item "gfx1031"
! Compile for RDNA2 gfx1031 devices (GFX10 series). (Experimental)
! .IP \fBgfx1032\fR 4
  .IX Item "gfx1032"
! Compile for RDNA2 gfx1032 devices (GFX10 series). (Experimental)
! .IP \fBgfx1033\fR 4
  .IX Item "gfx1033"
! Compile for RDNA2 gfx1033 devices (GFX10 series). (Experimental)
! .IP \fBgfx1034\fR 4
  .IX Item "gfx1034"
! Compile for RDNA2 gfx1034 devices (GFX10 series). (Experimental)
! .IP \fBgfx1035\fR 4
  .IX Item "gfx1035"
! Compile for RDNA2 gfx1035 devices (GFX10 series). (Experimental)
! .IP \fBgfx1036\fR 4
  .IX Item "gfx1036"
! Compile for RDNA2 gfx1036 devices (GFX10 series).
! .IP \fBgfx10\-3\-generic\fR 4
  .IX Item "gfx10-3-generic"
! Compile generic code for GFX10\-3 devices, executable on gfx1030,
  gfx1031, gfx1032, gfx1033, gfx1034, gfx1035, and gfx1036. (Experimental)
! .IP \fBgfx1100\fR 4
  .IX Item "gfx1100"
! Compile for RDNA3 gfx1100 devices (GFX11 series).
! .IP \fBgfx1101\fR 4
  .IX Item "gfx1101"
! Compile for RDNA3 gfx1101 devices (GFX11 series). (Experimental)
! .IP \fBgfx1102\fR 4
  .IX Item "gfx1102"
! Compile for RDNA3 gfx1102 devices (GFX11 series). (Experimental)
! .IP \fBgfx1103\fR 4
  .IX Item "gfx1103"
! Compile for RDNA3 gfx1103 devices (GFX11 series).
! .IP \fBgfx1150\fR 4
  .IX Item "gfx1150"
! Compile for RDNA3 gfx1150 devices (GFX11 series). (Experimental)
! .IP \fBgfx1151\fR 4
  .IX Item "gfx1151"
! Compile for RDNA3 gfx1151 devices (GFX11 series). (Experimental)
! .IP \fBgfx1152\fR 4
  .IX Item "gfx1152"
! Compile for RDNA3 gfx1152 devices (GFX11 series). (Experimental)
! .IP \fBgfx1153\fR 4
  .IX Item "gfx1153"
! Compile for RDNA3 gfx1153 devices (GFX11 series). (Experimental)
! .IP \fBgfx11\-generic\fR 4
  .IX Item "gfx11-generic"
! Compile generic code for GFX11 devices, executable on gfx1100, gfx1101,
  gfx1102, gfx1103, gfx1150, gfx1151, gfx1152, and gfx1153. (Experimental)
  .RE
  .RS 4
  .RE
! .IP \fB\-msram\-ecc=on\fR 4
  .IX Item "-msram-ecc=on"
  .PD 0
! .IP \fB\-msram\-ecc=off\fR 4
  .IX Item "-msram-ecc=off"
! .IP \fB\-msram\-ecc=any\fR 4
  .IX Item "-msram-ecc=any"
  .PD
! Compile binaries suitable for devices with the SRAM\-ECC feature enabled,
! disabled, or either mode.  This feature can be enabled per\-process on some
  devices.  The compiled code must match the device mode. The default is
  \&\fBany\fR, for devices that support it.
! .IP \fB\-mstack\-size=\fR\fIbytes\fR 4
  .IX Item "-mstack-size=bytes"
! Specify how many \fIbytes\fR of stack space will be requested for each GPU
! thread (wave\-front).  Beware that there may be many threads and limited memory
  available.  The size of the stack allocation may also have an impact on
! run\-time performance.  The default is 32KB when using OpenACC or OpenMP, and
  1MB otherwise.
! .IP \fB\-mxnack=on\fR 4
  .IX Item "-mxnack=on"
  .PD 0
! .IP \fB\-mxnack=off\fR 4
  .IX Item "-mxnack=off"
! .IP \fB\-mxnack=any\fR 4
  .IX Item "-mxnack=any"
  .PD
! Compile binaries suitable for devices with the XNACK feature enabled, disabled,
! or either mode.  Some devices always require XNACK and some allow the user to
! configure XNACK.  The compiled code must match the device mode.
  The default is \fB\-mxnack=any\fR on devices that support Unified Shared
  Memory, and \fB\-mxnack=no\fR otherwise.
  .PP
! \fIARC Options\fR
  .IX Subsection "ARC Options"
  .PP
  The following options control the architecture variant for which code
  is being compiled:
! .IP \fB\-mbarrel\-shifter\fR 4
  .IX Item "-mbarrel-shifter"
  Generate instructions supported by barrel shifter.  This is the default
  unless \fB\-mcpu=ARC601\fR or \fB\-mcpu=ARCEM\fR is in effect.
! .IP \fB\-mjli\-always\fR 4
  .IX Item "-mjli-always"
  Force to call a function using jli_s instruction.  This option is
  valid only for ARCv2 architecture.
! .IP \fB\-mcpu=\fR\fIcpu\fR 4
  .IX Item "-mcpu=cpu"
  Set architecture type, register usage, and instruction scheduling
  parameters for \fIcpu\fR.  There are also shortcut alias options
  available for backward compatibility and convenience.  Supported
  values for \fIcpu\fR are
  .RS 4
! .IP \fBarc600\fR 4
  .IX Item "arc600"
! Compile for ARC600.  Aliases: \fB\-mA6\fR, \fB\-mARC600\fR.
! .IP \fBarc601\fR 4
  .IX Item "arc601"
! Compile for ARC601.  Alias: \fB\-mARC601\fR.
! .IP \fBarc700\fR 4
  .IX Item "arc700"
! Compile for ARC700.  Aliases: \fB\-mA7\fR, \fB\-mARC700\fR.
  This is the default when configured with \fB\-\-with\-cpu=arc700\fR.
! .IP \fBarcem\fR 4
  .IX Item "arcem"
! Compile for ARC EM.
! .IP \fBarchs\fR 4
  .IX Item "archs"
! Compile for ARC HS.
! .IP \fBem\fR 4
  .IX Item "em"
! Compile for ARC EM CPU with no hardware extensions.
! .IP \fBem4\fR 4
  .IX Item "em4"
! Compile for ARC EM4 CPU.
! .IP \fBem4_dmips\fR 4
  .IX Item "em4_dmips"
! Compile for ARC EM4 DMIPS CPU.
! .IP \fBem4_fpus\fR 4
  .IX Item "em4_fpus"
! Compile for ARC EM4 DMIPS CPU with the single\-precision floating\-point
  extension.
! .IP \fBem4_fpuda\fR 4
  .IX Item "em4_fpuda"
! Compile for ARC EM4 DMIPS CPU with single\-precision floating\-point and
  double assist instructions.
! .IP \fBhs\fR 4
  .IX Item "hs"
! Compile for ARC HS CPU with no hardware extensions except the atomic
  instructions.
! .IP \fBhs34\fR 4
  .IX Item "hs34"
! Compile for ARC HS34 CPU.
! .IP \fBhs38\fR 4
  .IX Item "hs38"
! Compile for ARC HS38 CPU.
! .IP \fBhs38_linux\fR 4
  .IX Item "hs38_linux"
! Compile for ARC HS38 CPU with all hardware extensions on.
! .IP \fBhs4x\fR 4
  .IX Item "hs4x"
! Compile for ARC HS4x CPU.
! .IP \fBhs4xd\fR 4
  .IX Item "hs4xd"
! Compile for ARC HS4xD CPU.
! .IP \fBhs4x_rel31\fR 4
  .IX Item "hs4x_rel31"
! Compile for ARC HS4x CPU release 3.10a.
! .IP \fBarc600_norm\fR 4
  .IX Item "arc600_norm"
! Compile for ARC 600 CPU with \f(CW\*(C`norm\*(C'\fR instructions enabled.
! .IP \fBarc600_mul32x16\fR 4
  .IX Item "arc600_mul32x16"
! Compile for ARC 600 CPU with \f(CW\*(C`norm\*(C'\fR and 32x16\-bit multiply
  instructions enabled.
! .IP \fBarc600_mul64\fR 4
  .IX Item "arc600_mul64"
! Compile for ARC 600 CPU with \f(CW\*(C`norm\*(C'\fR and \f(CW\*(C`mul64\*(C'\fR\-family
  instructions enabled.
! .IP \fBarc601_norm\fR 4
  .IX Item "arc601_norm"
! Compile for ARC 601 CPU with \f(CW\*(C`norm\*(C'\fR instructions enabled.
! .IP \fBarc601_mul32x16\fR 4
  .IX Item "arc601_mul32x16"
! Compile for ARC 601 CPU with \f(CW\*(C`norm\*(C'\fR and 32x16\-bit multiply
  instructions enabled.
! .IP \fBarc601_mul64\fR 4
  .IX Item "arc601_mul64"
! Compile for ARC 601 CPU with \f(CW\*(C`norm\*(C'\fR and \f(CW\*(C`mul64\*(C'\fR\-family
  instructions enabled.
! .IP \fBnps400\fR 4
  .IX Item "nps400"
! Compile for ARC 700 on NPS400 chip.
! .IP \fBem_mini\fR 4
  .IX Item "em_mini"
! Compile for ARC EM minimalist configuration featuring reduced register
  set.
  .RE
  .RS 4
  .RE
! .IP \fB\-mdpfp\fR 4
  .IX Item "-mdpfp"
  .PD 0
! .IP \fB\-mdpfp\-compact\fR 4
  .IX Item "-mdpfp-compact"
  .PD
! Generate double\-precision FPX instructions, tuned for the compact
  implementation.
! .IP \fB\-mdpfp\-fast\fR 4
  .IX Item "-mdpfp-fast"
! Generate double\-precision FPX instructions, tuned for the fast
  implementation.
! .IP \fB\-mno\-dpfp\-lrsr\fR 4
  .IX Item "-mno-dpfp-lrsr"
! Disable \f(CW\*(C`lr\*(C'\fR and \f(CW\*(C`sr\*(C'\fR instructions from using FPX extension
  aux registers.
! .IP \fB\-mea\fR 4
  .IX Item "-mea"
  Generate extended arithmetic instructions.  Currently only
  \&\f(CW\*(C`divaw\*(C'\fR, \f(CW\*(C`adds\*(C'\fR, \f(CW\*(C`subs\*(C'\fR, and \f(CW\*(C`sat16\*(C'\fR are
  supported.  Only valid for \fB\-mcpu=ARC700\fR.
! .IP \fB\-mno\-mpy\fR 4
  .IX Item "-mno-mpy"
! Do not generate \f(CW\*(C`mpy\*(C'\fR\-family instructions for ARC700.  This option is
  deprecated.
! .IP \fB\-mmul32x16\fR 4
  .IX Item "-mmul32x16"
! Generate 32x16\-bit multiply and multiply\-accumulate instructions.
! .IP \fB\-mmul64\fR 4
  .IX Item "-mmul64"
  Generate \f(CW\*(C`mul64\*(C'\fR and \f(CW\*(C`mulu64\*(C'\fR instructions.
  Only valid for \fB\-mcpu=ARC600\fR.
! .IP \fB\-mnorm\fR 4
  .IX Item "-mnorm"
  Generate \f(CW\*(C`norm\*(C'\fR instructions.  This is the default if \fB\-mcpu=ARC700\fR
  is in effect.
! .IP \fB\-mspfp\fR 4
  .IX Item "-mspfp"
  .PD 0
! .IP \fB\-mspfp\-compact\fR 4
  .IX Item "-mspfp-compact"
  .PD
! Generate single\-precision FPX instructions, tuned for the compact
  implementation.
! .IP \fB\-mspfp\-fast\fR 4
  .IX Item "-mspfp-fast"
! Generate single\-precision FPX instructions, tuned for the fast
  implementation.
! .IP \fB\-msimd\fR 4
  .IX Item "-msimd"
! Enable generation of ARC SIMD instructions via target\-specific
  builtins.  Only valid for \fB\-mcpu=ARC700\fR.
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  This option ignored; it is provided for compatibility purposes only.
! Software floating\-point code is emitted by default, and this default
! can overridden by FPX options; \fB\-mspfp\fR, \fB\-mspfp\-compact\fR, or
  \&\fB\-mspfp\-fast\fR for single precision, and \fB\-mdpfp\fR,
  \&\fB\-mdpfp\-compact\fR, or \fB\-mdpfp\-fast\fR for double precision.
! .IP \fB\-mswap\fR 4
  .IX Item "-mswap"
  Generate \f(CW\*(C`swap\*(C'\fR instructions.
! .IP \fB\-matomic\fR 4
  .IX Item "-matomic"
  This enables use of the locked load/store conditional extension to implement
! atomic memory built\-in functions.  Not available for ARC 6xx or ARC
! EM cores.
! .IP \fB\-mdiv\-rem\fR 4
  .IX Item "-mdiv-rem"
  Enable \f(CW\*(C`div\*(C'\fR and \f(CW\*(C`rem\*(C'\fR instructions for ARCv2 cores.
! .IP \fB\-mcode\-density\fR 4
  .IX Item "-mcode-density"
! Enable code density instructions for ARC EM.
! This option is on by default for ARC HS.
! .IP \fB\-mll64\fR 4
  .IX Item "-mll64"
! Enable double load/store operations for ARC HS cores.
! .IP \fB\-mtp\-regno=\fR\fIregno\fR 4
  .IX Item "-mtp-regno=regno"
  Specify thread pointer register number.
! .IP \fB\-mmpy\-option=\fR\fImulto\fR 4
  .IX Item "-mmpy-option=multo"
  Compile ARCv2 code with a multiplier design option.  You can specify
  the option using either a string or numeric value for \fImulto\fR.
  \&\fBwlh1\fR is the default value.  The recognized values are:
  .RS 4
! .IP \fB0\fR 4
  .IX Item "0"
  .PD 0
! .IP \fBnone\fR 4
  .IX Item "none"
  .PD
  No multiplier available.
! .IP \fB1\fR 4
  .IX Item "1"
  .PD 0
! .IP \fBw\fR 4
  .IX Item "w"
  .PD
  16x16 multiplier, fully pipelined.
  The following instructions are enabled: \f(CW\*(C`mpyw\*(C'\fR and \f(CW\*(C`mpyuw\*(C'\fR.
! .IP \fB2\fR 4
  .IX Item "2"
  .PD 0
! .IP \fBwlh1\fR 4
  .IX Item "wlh1"
  .PD
  32x32 multiplier, fully
  pipelined (1 stage).  The following instructions are additionally
  enabled: \f(CW\*(C`mpy\*(C'\fR, \f(CW\*(C`mpyu\*(C'\fR, \f(CW\*(C`mpym\*(C'\fR, \f(CW\*(C`mpymu\*(C'\fR, and \f(CW\*(C`mpy_s\*(C'\fR.
! .IP \fB3\fR 4
  .IX Item "3"
  .PD 0
! .IP \fBwlh2\fR 4
  .IX Item "wlh2"
  .PD
  32x32 multiplier, fully pipelined
  (2 stages).  The following instructions are additionally enabled: \f(CW\*(C`mpy\*(C'\fR,
  \&\f(CW\*(C`mpyu\*(C'\fR, \f(CW\*(C`mpym\*(C'\fR, \f(CW\*(C`mpymu\*(C'\fR, and \f(CW\*(C`mpy_s\*(C'\fR.
! .IP \fB4\fR 4
  .IX Item "4"
  .PD 0
! .IP \fBwlh3\fR 4
  .IX Item "wlh3"
  .PD
  Two 16x16 multipliers, blocking,
  sequential.  The following instructions are additionally enabled: \f(CW\*(C`mpy\*(C'\fR,
  \&\f(CW\*(C`mpyu\*(C'\fR, \f(CW\*(C`mpym\*(C'\fR, \f(CW\*(C`mpymu\*(C'\fR, and \f(CW\*(C`mpy_s\*(C'\fR.
! .IP \fB5\fR 4
  .IX Item "5"
  .PD 0
! .IP \fBwlh4\fR 4
  .IX Item "wlh4"
  .PD
  One 16x16 multiplier, blocking,
  sequential.  The following instructions are additionally enabled: \f(CW\*(C`mpy\*(C'\fR,
  \&\f(CW\*(C`mpyu\*(C'\fR, \f(CW\*(C`mpym\*(C'\fR, \f(CW\*(C`mpymu\*(C'\fR, and \f(CW\*(C`mpy_s\*(C'\fR.
! .IP \fB6\fR 4
  .IX Item "6"
  .PD 0
! .IP \fBwlh5\fR 4
  .IX Item "wlh5"
  .PD
  One 32x4 multiplier, blocking,
  sequential.  The following instructions are additionally enabled: \f(CW\*(C`mpy\*(C'\fR,
  \&\f(CW\*(C`mpyu\*(C'\fR, \f(CW\*(C`mpym\*(C'\fR, \f(CW\*(C`mpymu\*(C'\fR, and \f(CW\*(C`mpy_s\*(C'\fR.
! .IP \fB7\fR 4
  .IX Item "7"
  .PD 0
! .IP \fBplus_dmpy\fR 4
  .IX Item "plus_dmpy"
  .PD
! ARC HS SIMD support.
! .IP \fB8\fR 4
  .IX Item "8"
  .PD 0
! .IP \fBplus_macd\fR 4
  .IX Item "plus_macd"
  .PD
! ARC HS SIMD support.
! .IP \fB9\fR 4
  .IX Item "9"
  .PD 0
! .IP \fBplus_qmacw\fR 4
  .IX Item "plus_qmacw"
  .PD
! ARC HS SIMD support.
  .RE
  .RS 4
  .Sp
  This option is only available for ARCv2 cores.
  .RE
! .IP \fB\-mfpu=\fR\fIfpu\fR 4
  .IX Item "-mfpu=fpu"
! Enables support for specific floating\-point hardware extensions for ARCv2
  cores.  Supported values for \fIfpu\fR are:
  .RS 4
! .IP \fBfpus\fR 4
  .IX Item "fpus"
! Enables support for single\-precision floating\-point hardware
  extensions.
! .IP \fBfpud\fR 4
  .IX Item "fpud"
! Enables support for double\-precision floating\-point hardware
! extensions.  The single\-precision floating\-point extension is also
! enabled.  Not available for ARC EM.
! .IP \fBfpuda\fR 4
  .IX Item "fpuda"
! Enables support for double\-precision floating\-point hardware
! extensions using double\-precision assist instructions.  The single\-precision
! floating\-point extension is also enabled.  This option is
! only available for ARC EM.
! .IP \fBfpuda_div\fR 4
  .IX Item "fpuda_div"
! Enables support for double\-precision floating\-point hardware
! extensions using double\-precision assist instructions.
! The single\-precision floating\-point, square\-root, and divide
  extensions are also enabled.  This option is
! only available for ARC EM.
! .IP \fBfpuda_fma\fR 4
  .IX Item "fpuda_fma"
! Enables support for double\-precision floating\-point hardware
! extensions using double\-precision assist instructions.
! The single\-precision floating\-point and fused multiply and add
  hardware extensions are also enabled.  This option is
! only available for ARC EM.
! .IP \fBfpuda_all\fR 4
  .IX Item "fpuda_all"
! Enables support for double\-precision floating\-point hardware
! extensions using double\-precision assist instructions.
! All single\-precision floating\-point hardware extensions are also
! enabled.  This option is only available for ARC EM.
! .IP \fBfpus_div\fR 4
  .IX Item "fpus_div"
! Enables support for single\-precision floating\-point, square\-root and divide
  hardware extensions.
! .IP \fBfpud_div\fR 4
  .IX Item "fpud_div"
! Enables support for double\-precision floating\-point, square\-root and divide
  hardware extensions.  This option
! includes option \fBfpus_div\fR. Not available for ARC EM.
! .IP \fBfpus_fma\fR 4
  .IX Item "fpus_fma"
! Enables support for single\-precision floating\-point and
  fused multiply and add hardware extensions.
! .IP \fBfpud_fma\fR 4
  .IX Item "fpud_fma"
! Enables support for double\-precision floating\-point and
  fused multiply and add hardware extensions.  This option
! includes option \fBfpus_fma\fR.  Not available for ARC EM.
! .IP \fBfpus_all\fR 4
  .IX Item "fpus_all"
! Enables support for all single\-precision floating\-point hardware
  extensions.
! .IP \fBfpud_all\fR 4
  .IX Item "fpud_all"
! Enables support for all single\- and double\-precision floating\-point
! hardware extensions.  Not available for ARC EM.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mirq\-ctrl\-saved=\fR\fIregister\-range\fR\fB,\fR \fIblink\fR\fB,\fR \fIlp_count\fR" 4
  .IX Item "-mirq-ctrl-saved=register-range, blink, lp_count"
! Specifies general\-purposes registers that the processor automatically
! saves/restores on interrupt entry and exit.  \fIregister\-range\fR is
  specified as two registers separated by a dash.  The register range
  always starts with \f(CW\*(C`r0\*(C'\fR, the upper limit is \f(CW\*(C`fp\*(C'\fR register.
  \&\fIblink\fR and \fIlp_count\fR are optional.  This option is only
! valid for ARC EM and ARC HS cores.
! .IP \fB\-mrgf\-banked\-regs=\fR\fInumber\fR 4
  .IX Item "-mrgf-banked-regs=number"
  Specifies the number of registers replicated in second register bank
  on entry to fast interrupt.  Fast interrupts are interrupts with the
! highest priority level P0.  These interrupts save only PC and STATUS32
  registers to avoid memory transactions during interrupt entry and exit
  sequences.  Use this option when you are using fast interrupts in an
! ARC V2 family processor.  Permitted values are 4, 8, 16, and 32.
! .IP \fB\-mlpc\-width=\fR\fIwidth\fR 4
  .IX Item "-mlpc-width=width"
  Specify the width of the \f(CW\*(C`lp_count\*(C'\fR register.  Valid values for
  \&\fIwidth\fR are 8, 16, 20, 24, 28 and 32 bits.  The default width is
  fixed to 32 bits.  If the width is less than 32, the compiler does not
! attempt to transform loops in your program to use the zero\-delay loop
  mechanism unless it is known that the \f(CW\*(C`lp_count\*(C'\fR register can
! hold the required loop\-counter value.  Depending on the width
! specified, the compiler and run\-time library might continue to use the
  loop mechanism for various needs.  This option defines macro
  \&\f(CW\*(C`_\|_ARC_LPC_WIDTH_\|_\*(C'\fR with the value of \fIwidth\fR.
! .IP \fB\-mrf16\fR 4
  .IX Item "-mrf16"
  This option instructs the compiler to generate code for a 16\-entry
  register file.  This option defines the \f(CW\*(C`_\|_ARC_RF16_\|_\*(C'\fR
  preprocessor macro.
! .IP \fB\-mbranch\-index\fR 4
  .IX Item "-mbranch-index"
  Enable use of \f(CW\*(C`bi\*(C'\fR or \f(CW\*(C`bih\*(C'\fR instructions to implement jump
  tables.
  .PP
  The following options are passed through to the assembler, and also
  define preprocessor macro symbols.
! .IP \fB\-mdsp\-packa\fR 4
  .IX Item "-mdsp-packa"
! Passed down to the assembler to enable the DSP Pack A extensions.
  Also sets the preprocessor symbol \f(CW\*(C`_\|_Xdsp_packa\*(C'\fR.  This option is
  deprecated.
! .IP \fB\-mdvbf\fR 4
  .IX Item "-mdvbf"
  Passed down to the assembler to enable the dual Viterbi butterfly
  extension.  Also sets the preprocessor symbol \f(CW\*(C`_\|_Xdvbf\*(C'\fR.  This
  option is deprecated.
! .IP \fB\-mlock\fR 4
  .IX Item "-mlock"
  Passed down to the assembler to enable the locked load/store
  conditional extension.  Also sets the preprocessor symbol
  \&\f(CW\*(C`_\|_Xlock\*(C'\fR.
! .IP \fB\-mmac\-d16\fR 4
  .IX Item "-mmac-d16"
  Passed down to the assembler.  Also sets the preprocessor symbol
  \&\f(CW\*(C`_\|_Xxmac_d16\*(C'\fR.  This option is deprecated.
! .IP \fB\-mmac\-24\fR 4
  .IX Item "-mmac-24"
  Passed down to the assembler.  Also sets the preprocessor symbol
  \&\f(CW\*(C`_\|_Xxmac_24\*(C'\fR.  This option is deprecated.
! .IP \fB\-mrtsc\fR 4
  .IX Item "-mrtsc"
! Passed down to the assembler to enable the 64\-bit time\-stamp counter
  extension instruction.  Also sets the preprocessor symbol
  \&\f(CW\*(C`_\|_Xrtsc\*(C'\fR.  This option is deprecated.
! .IP \fB\-mswape\fR 4
  .IX Item "-mswape"
  Passed down to the assembler to enable the swap byte ordering
  extension instruction.  Also sets the preprocessor symbol
  \&\f(CW\*(C`_\|_Xswape\*(C'\fR.
! .IP \fB\-mtelephony\fR 4
  .IX Item "-mtelephony"
! Passed down to the assembler to enable dual\- and single\-operand
  instructions for telephony.  Also sets the preprocessor symbol
  \&\f(CW\*(C`_\|_Xtelephony\*(C'\fR.  This option is deprecated.
! .IP \fB\-mxy\fR 4
  .IX Item "-mxy"
! Passed down to the assembler to enable the XY memory extension.  Also
  sets the preprocessor symbol \f(CW\*(C`_\|_Xxy\*(C'\fR.
  .PP
  The following options control how the assembly code is annotated:
! .IP \fB\-misize\fR 4
  .IX Item "-misize"
  Annotate assembler instructions with estimated addresses.
! .IP \fB\-mannotate\-align\fR 4
  .IX Item "-mannotate-align"
  Does nothing.  Preserved for backward compatibility.
  .PP
  The following options are passed through to the linker:
! .IP \fB\-marclinux\fR 4
  .IX Item "-marclinux"
  Passed through to the linker, to specify use of the \f(CW\*(C`arclinux\*(C'\fR emulation.
  This option is enabled by default in tool chains built for
  \&\f(CW\*(C`arc\-linux\-uclibc\*(C'\fR and \f(CW\*(C`arceb\-linux\-uclibc\*(C'\fR targets
  when profiling is not requested.
! .IP \fB\-marclinux_prof\fR 4
  .IX Item "-marclinux_prof"
  Passed through to the linker, to specify use of the
  \&\f(CW\*(C`arclinux_prof\*(C'\fR emulation.  This option is enabled by default in
*************** tool chains built for \f(CW\*(C`arc\-lin
*** 22402,22471 ****
  \&\f(CW\*(C`arceb\-linux\-uclibc\*(C'\fR targets when profiling is requested.
  .PP
  The following options control the semantics of generated code:
! .IP "\fB\-mlong\-calls\fR" 4
  .IX Item "-mlong-calls"
  Generate calls as register indirect calls, thus providing access
  to the full 32\-bit address range.
! .IP "\fB\-mmedium\-calls\fR" 4
  .IX Item "-mmedium-calls"
! Don't use less than 25\-bit addressing range for calls, which is the
! offset available for an unconditional branch-and-link
  instruction.  Conditional execution of function calls is suppressed, to
  allow use of the 25\-bit range, rather than the 21\-bit range with
! conditional branch-and-link.  This is the default for tool chains built
  for \f(CW\*(C`arc\-linux\-uclibc\*(C'\fR and \f(CW\*(C`arceb\-linux\-uclibc\*(C'\fR targets.
  .IP "\fB\-G\fR \fInum\fR" 4
  .IX Item "-G num"
! Put definitions of externally-visible data in a small data section if
  that data is no bigger than \fInum\fR bytes.  The default value of
! \&\fInum\fR is 4 for any \s-1ARC\s0 configuration, or 8 when we have double
  load/store operations.
! .IP "\fB\-mno\-sdata\fR" 4
  .IX Item "-mno-sdata"
  Do not generate sdata references.  This is the default for tool chains
  built for \f(CW\*(C`arc\-linux\-uclibc\*(C'\fR and \f(CW\*(C`arceb\-linux\-uclibc\*(C'\fR
  targets.
! .IP "\fB\-mvolatile\-cache\fR" 4
  .IX Item "-mvolatile-cache"
  Use ordinarily cached memory accesses for volatile references.  This is the
  default.
! .IP "\fB\-mno\-volatile\-cache\fR" 4
  .IX Item "-mno-volatile-cache"
  Enable cache bypass for volatile references.
  .PP
  The following options fine tune code generation:
! .IP "\fB\-malign\-call\fR" 4
  .IX Item "-malign-call"
  Does nothing.  Preserved for backward compatibility.
! .IP "\fB\-mauto\-modify\-reg\fR" 4
  .IX Item "-mauto-modify-reg"
  Enable the use of pre/post modify with register displacement.
! .IP "\fB\-mbbit\-peephole\fR" 4
  .IX Item "-mbbit-peephole"
  Does nothing.  Preserved for backward compatibility.
! .IP "\fB\-mno\-brcc\fR" 4
  .IX Item "-mno-brcc"
! This option disables a target-specific pass in \fIarc_reorg\fR to
! generate compare-and-branch (\f(CW\*(C`br\f(CIcc\f(CW\*(C'\fR) instructions.
  It has no effect on
  generation of these instructions driven by the combiner pass.
! .IP "\fB\-mcase\-vector\-pcrel\fR" 4
  .IX Item "-mcase-vector-pcrel"
! Use PC-relative switch case tables to enable case table shortening.
  This is the default for \fB\-Os\fR.
! .IP "\fB\-mcompact\-casesi\fR" 4
  .IX Item "-mcompact-casesi"
  Enable compact \f(CW\*(C`casesi\*(C'\fR pattern.  This is the default for \fB\-Os\fR,
  and only available for ARCv1 cores.  This option is deprecated.
! .IP "\fB\-mno\-cond\-exec\fR" 4
  .IX Item "-mno-cond-exec"
! Disable the ARCompact-specific pass to generate conditional
  execution instructions.
  .Sp
  Due to delay slot scheduling and interactions between operand numbers,
  literal sizes, instruction lengths, and the support for conditional execution,
! the target-independent pass to generate conditional execution is often lacking,
! so the \s-1ARC\s0 port has kept a special pass around that tries to find more
  conditional execution generation opportunities after register allocation,
  branch shortening, and delay slot scheduling have been done.  This pass
  generally, but not always, improves performance and code size, at the cost of
--- 22337,22406 ----
  \&\f(CW\*(C`arceb\-linux\-uclibc\*(C'\fR targets when profiling is requested.
  .PP
  The following options control the semantics of generated code:
! .IP \fB\-mlong\-calls\fR 4
  .IX Item "-mlong-calls"
  Generate calls as register indirect calls, thus providing access
  to the full 32\-bit address range.
! .IP \fB\-mmedium\-calls\fR 4
  .IX Item "-mmedium-calls"
! Don\*(Aqt use less than 25\-bit addressing range for calls, which is the
! offset available for an unconditional branch\-and\-link
  instruction.  Conditional execution of function calls is suppressed, to
  allow use of the 25\-bit range, rather than the 21\-bit range with
! conditional branch\-and\-link.  This is the default for tool chains built
  for \f(CW\*(C`arc\-linux\-uclibc\*(C'\fR and \f(CW\*(C`arceb\-linux\-uclibc\*(C'\fR targets.
  .IP "\fB\-G\fR \fInum\fR" 4
  .IX Item "-G num"
! Put definitions of externally\-visible data in a small data section if
  that data is no bigger than \fInum\fR bytes.  The default value of
! \&\fInum\fR is 4 for any ARC configuration, or 8 when we have double
  load/store operations.
! .IP \fB\-mno\-sdata\fR 4
  .IX Item "-mno-sdata"
  Do not generate sdata references.  This is the default for tool chains
  built for \f(CW\*(C`arc\-linux\-uclibc\*(C'\fR and \f(CW\*(C`arceb\-linux\-uclibc\*(C'\fR
  targets.
! .IP \fB\-mvolatile\-cache\fR 4
  .IX Item "-mvolatile-cache"
  Use ordinarily cached memory accesses for volatile references.  This is the
  default.
! .IP \fB\-mno\-volatile\-cache\fR 4
  .IX Item "-mno-volatile-cache"
  Enable cache bypass for volatile references.
  .PP
  The following options fine tune code generation:
! .IP \fB\-malign\-call\fR 4
  .IX Item "-malign-call"
  Does nothing.  Preserved for backward compatibility.
! .IP \fB\-mauto\-modify\-reg\fR 4
  .IX Item "-mauto-modify-reg"
  Enable the use of pre/post modify with register displacement.
! .IP \fB\-mbbit\-peephole\fR 4
  .IX Item "-mbbit-peephole"
  Does nothing.  Preserved for backward compatibility.
! .IP \fB\-mno\-brcc\fR 4
  .IX Item "-mno-brcc"
! This option disables a target\-specific pass in \fIarc_reorg\fR to
! generate compare\-and\-branch (\f(CW\*(C`br\fR\f(CIcc\fR\f(CW\*(C'\fR) instructions.
  It has no effect on
  generation of these instructions driven by the combiner pass.
! .IP \fB\-mcase\-vector\-pcrel\fR 4
  .IX Item "-mcase-vector-pcrel"
! Use PC\-relative switch case tables to enable case table shortening.
  This is the default for \fB\-Os\fR.
! .IP \fB\-mcompact\-casesi\fR 4
  .IX Item "-mcompact-casesi"
  Enable compact \f(CW\*(C`casesi\*(C'\fR pattern.  This is the default for \fB\-Os\fR,
  and only available for ARCv1 cores.  This option is deprecated.
! .IP \fB\-mno\-cond\-exec\fR 4
  .IX Item "-mno-cond-exec"
! Disable the ARCompact\-specific pass to generate conditional
  execution instructions.
  .Sp
  Due to delay slot scheduling and interactions between operand numbers,
  literal sizes, instruction lengths, and the support for conditional execution,
! the target\-independent pass to generate conditional execution is often lacking,
! so the ARC port has kept a special pass around that tries to find more
  conditional execution generation opportunities after register allocation,
  branch shortening, and delay slot scheduling have been done.  This pass
  generally, but not always, improves performance and code size, at the cost of
*************** extra compilation time, which is why the
*** 22473,22503 ****
  If you have a problem with call instructions exceeding their allowable
  offset range because they are conditionalized, you should consider using
  \&\fB\-mmedium\-calls\fR instead.
! .IP "\fB\-mearly\-cbranchsi\fR" 4
  .IX Item "-mearly-cbranchsi"
! Enable pre-reload use of the \f(CW\*(C`cbranchsi\*(C'\fR pattern.
! .IP "\fB\-mexpand\-adddi\fR" 4
  .IX Item "-mexpand-adddi"
! Expand \f(CW\*(C`adddi3\*(C'\fR and \f(CW\*(C`subdi3\*(C'\fR at \s-1RTL\s0 generation time into
  \&\f(CW\*(C`add.f\*(C'\fR, \f(CW\*(C`adc\*(C'\fR etc.  This option is deprecated.
! .IP "\fB\-mindexed\-loads\fR" 4
  .IX Item "-mindexed-loads"
  Enable the use of indexed loads.  This can be problematic because some
  optimizers then assume that indexed stores exist, which is not
  the case.
! .IP "\fB\-mlra\fR" 4
  .IX Item "-mlra"
  Does nothing.  Preserved for backward compatibility.
! .IP "\fB\-mlra\-priority\-none\fR" 4
  .IX Item "-mlra-priority-none"
! Don't indicate any priority for target registers.
! .IP "\fB\-mlra\-priority\-compact\fR" 4
  .IX Item "-mlra-priority-compact"
  Indicate target register priority for r0..r3 / r12..r15.
! .IP "\fB\-mlra\-priority\-noncompact\fR" 4
  .IX Item "-mlra-priority-noncompact"
  Reduce target register priority for r0..r3 / r12..r15.
! .IP "\fB\-mmillicode\fR" 4
  .IX Item "-mmillicode"
  When optimizing for size (using \fB\-Os\fR), prologues and epilogues
  that have to save or restore a large number of registers are often
--- 22408,22438 ----
  If you have a problem with call instructions exceeding their allowable
  offset range because they are conditionalized, you should consider using
  \&\fB\-mmedium\-calls\fR instead.
! .IP \fB\-mearly\-cbranchsi\fR 4
  .IX Item "-mearly-cbranchsi"
! Enable pre\-reload use of the \f(CW\*(C`cbranchsi\*(C'\fR pattern.
! .IP \fB\-mexpand\-adddi\fR 4
  .IX Item "-mexpand-adddi"
! Expand \f(CW\*(C`adddi3\*(C'\fR and \f(CW\*(C`subdi3\*(C'\fR at RTL generation time into
  \&\f(CW\*(C`add.f\*(C'\fR, \f(CW\*(C`adc\*(C'\fR etc.  This option is deprecated.
! .IP \fB\-mindexed\-loads\fR 4
  .IX Item "-mindexed-loads"
  Enable the use of indexed loads.  This can be problematic because some
  optimizers then assume that indexed stores exist, which is not
  the case.
! .IP \fB\-mlra\fR 4
  .IX Item "-mlra"
  Does nothing.  Preserved for backward compatibility.
! .IP \fB\-mlra\-priority\-none\fR 4
  .IX Item "-mlra-priority-none"
! Don\*(Aqt indicate any priority for target registers.
! .IP \fB\-mlra\-priority\-compact\fR 4
  .IX Item "-mlra-priority-compact"
  Indicate target register priority for r0..r3 / r12..r15.
! .IP \fB\-mlra\-priority\-noncompact\fR 4
  .IX Item "-mlra-priority-noncompact"
  Reduce target register priority for r0..r3 / r12..r15.
! .IP \fB\-mmillicode\fR 4
  .IX Item "-mmillicode"
  When optimizing for size (using \fB\-Os\fR), prologues and epilogues
  that have to save or restore a large number of registers are often
*************** referred to as a \fImillicode\fR call.
*** 22506,22544 ****
  performance issues, and/or cause linking issues when linking in a
  nonstandard way, this option is provided to turn on or off millicode
  call generation.
! .IP "\fB\-mcode\-density\-frame\fR" 4
  .IX Item "-mcode-density-frame"
  This option enable the compiler to emit \f(CW\*(C`enter\*(C'\fR and \f(CW\*(C`leave\*(C'\fR
  instructions.  These instructions are only valid for CPUs with
! code-density feature.
! .IP "\fB\-mmixed\-code\fR" 4
  .IX Item "-mmixed-code"
  Does nothing.  Preserved for backward compatibility.
! .IP "\fB\-mq\-class\fR" 4
  .IX Item "-mq-class"
  Ths option is deprecated.  Enable \fBq\fR instruction alternatives.
  This is the default for \fB\-Os\fR.
! .IP "\fB\-mRcq\fR" 4
  .IX Item "-mRcq"
  Does nothing.  Preserved for backward compatibility.
! .IP "\fB\-mRcw\fR" 4
  .IX Item "-mRcw"
  Does nothing.  Preserved for backward compatibility.
! .IP "\fB\-msize\-level=\fR\fIlevel\fR" 4
  .IX Item "-msize-level=level"
! Fine-tune size optimization with regards to instruction lengths and alignment.
  The recognized values for \fIlevel\fR are:
  .RS 4
! .IP "\fB0\fR" 4
  .IX Item "0"
  No size optimization.  This level is deprecated and treated like \fB1\fR.
! .IP "\fB1\fR" 4
  .IX Item "1"
  Short instructions are used opportunistically.
! .IP "\fB2\fR" 4
  .IX Item "2"
  In addition, alignment of loops and of code after barriers are dropped.
! .IP "\fB3\fR" 4
  .IX Item "3"
  In addition, optional data alignment is dropped, and the option \fBOs\fR is enabled.
  .RE
--- 22441,22479 ----
  performance issues, and/or cause linking issues when linking in a
  nonstandard way, this option is provided to turn on or off millicode
  call generation.
! .IP \fB\-mcode\-density\-frame\fR 4
  .IX Item "-mcode-density-frame"
  This option enable the compiler to emit \f(CW\*(C`enter\*(C'\fR and \f(CW\*(C`leave\*(C'\fR
  instructions.  These instructions are only valid for CPUs with
! code\-density feature.
! .IP \fB\-mmixed\-code\fR 4
  .IX Item "-mmixed-code"
  Does nothing.  Preserved for backward compatibility.
! .IP \fB\-mq\-class\fR 4
  .IX Item "-mq-class"
  Ths option is deprecated.  Enable \fBq\fR instruction alternatives.
  This is the default for \fB\-Os\fR.
! .IP \fB\-mRcq\fR 4
  .IX Item "-mRcq"
  Does nothing.  Preserved for backward compatibility.
! .IP \fB\-mRcw\fR 4
  .IX Item "-mRcw"
  Does nothing.  Preserved for backward compatibility.
! .IP \fB\-msize\-level=\fR\fIlevel\fR 4
  .IX Item "-msize-level=level"
! Fine\-tune size optimization with regards to instruction lengths and alignment.
  The recognized values for \fIlevel\fR are:
  .RS 4
! .IP \fB0\fR 4
  .IX Item "0"
  No size optimization.  This level is deprecated and treated like \fB1\fR.
! .IP \fB1\fR 4
  .IX Item "1"
  Short instructions are used opportunistically.
! .IP \fB2\fR 4
  .IX Item "2"
  In addition, alignment of loops and of code after barriers are dropped.
! .IP \fB3\fR 4
  .IX Item "3"
  In addition, optional data alignment is dropped, and the option \fBOs\fR is enabled.
  .RE
*************** In addition, optional data alignment is
*** 22547,22735 ****
  This defaults to \fB3\fR when \fB\-Os\fR is in effect.  Otherwise,
  the behavior when this is not set is equivalent to level \fB1\fR.
  .RE
! .IP "\fB\-mtune=\fR\fIcpu\fR" 4
  .IX Item "-mtune=cpu"
  Set instruction scheduling parameters for \fIcpu\fR, overriding any implied
  by \fB\-mcpu=\fR.
  .Sp
  Supported values for \fIcpu\fR are
  .RS 4
! .IP "\fB\s-1ARC600\s0\fR" 4
  .IX Item "ARC600"
! Tune for \s-1ARC600 CPU.\s0
! .IP "\fB\s-1ARC601\s0\fR" 4
  .IX Item "ARC601"
! Tune for \s-1ARC601 CPU.\s0
! .IP "\fB\s-1ARC700\s0\fR" 4
  .IX Item "ARC700"
! Tune for \s-1ARC700 CPU\s0 with standard multiplier block.
! .IP "\fBARC700\-xmac\fR" 4
  .IX Item "ARC700-xmac"
! Tune for \s-1ARC700 CPU\s0 with \s-1XMAC\s0 block.
! .IP "\fB\s-1ARC725D\s0\fR" 4
  .IX Item "ARC725D"
! Tune for \s-1ARC725D CPU.\s0
! .IP "\fB\s-1ARC750D\s0\fR" 4
  .IX Item "ARC750D"
! Tune for \s-1ARC750D CPU.\s0
! .IP "\fBcore3\fR" 4
  .IX Item "core3"
! Tune for ARCv2 core3 type \s-1CPU.\s0  This option enable usage of
  \&\f(CW\*(C`dbnz\*(C'\fR instruction.
! .IP "\fBrelease31a\fR" 4
  .IX Item "release31a"
  Tune for ARC4x release 3.10a.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mmultcost=\fR\fInum\fR" 4
  .IX Item "-mmultcost=num"
  Cost to assume for a multiply instruction, with \fB4\fR being equal to a
  normal instruction.
! .IP "\fB\-munalign\-prob\-threshold=\fR\fIprobability\fR" 4
  .IX Item "-munalign-prob-threshold=probability"
  Does nothing.  Preserved for backward compatibility.
  .PP
  The following options are maintained for backward compatibility, but
  are now deprecated and will be removed in a future release:
! .IP "\fB\-margonaut\fR" 4
  .IX Item "-margonaut"
! Obsolete \s-1FPX.\s0
! .IP "\fB\-mbig\-endian\fR" 4
  .IX Item "-mbig-endian"
  .PD 0
! .IP "\fB\-EB\fR" 4
  .IX Item "-EB"
  .PD
! Compile code for big-endian targets.  Use of these options is now
! deprecated.  Big-endian code is supported by configuring \s-1GCC\s0 to build
  \&\f(CW\*(C`arceb\-elf32\*(C'\fR and \f(CW\*(C`arceb\-linux\-uclibc\*(C'\fR targets,
  for which big endian is the default.
! .IP "\fB\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
  .PD 0
! .IP "\fB\-EL\fR" 4
  .IX Item "-EL"
  .PD
! Compile code for little-endian targets.  Use of these options is now
! deprecated.  Little-endian code is supported by configuring \s-1GCC\s0 to build
  \&\f(CW\*(C`arc\-elf32\*(C'\fR and \f(CW\*(C`arc\-linux\-uclibc\*(C'\fR targets,
  for which little endian is the default.
! .IP "\fB\-mbarrel_shifter\fR" 4
  .IX Item "-mbarrel_shifter"
  Replaced by \fB\-mbarrel\-shifter\fR.
! .IP "\fB\-mdpfp_compact\fR" 4
  .IX Item "-mdpfp_compact"
  Replaced by \fB\-mdpfp\-compact\fR.
! .IP "\fB\-mdpfp_fast\fR" 4
  .IX Item "-mdpfp_fast"
  Replaced by \fB\-mdpfp\-fast\fR.
! .IP "\fB\-mdsp_packa\fR" 4
  .IX Item "-mdsp_packa"
  Replaced by \fB\-mdsp\-packa\fR.
! .IP "\fB\-mEA\fR" 4
  .IX Item "-mEA"
  Replaced by \fB\-mea\fR.
! .IP "\fB\-mmac_24\fR" 4
  .IX Item "-mmac_24"
  Replaced by \fB\-mmac\-24\fR.
! .IP "\fB\-mmac_d16\fR" 4
  .IX Item "-mmac_d16"
  Replaced by \fB\-mmac\-d16\fR.
! .IP "\fB\-mspfp_compact\fR" 4
  .IX Item "-mspfp_compact"
  Replaced by \fB\-mspfp\-compact\fR.
! .IP "\fB\-mspfp_fast\fR" 4
  .IX Item "-mspfp_fast"
  Replaced by \fB\-mspfp\-fast\fR.
! .IP "\fB\-mtune=\fR\fIcpu\fR" 4
  .IX Item "-mtune=cpu"
  Values \fBarc600\fR, \fBarc601\fR, \fBarc700\fR and
! \&\fBarc700\-xmac\fR for \fIcpu\fR are replaced by \fB\s-1ARC600\s0\fR,
! \&\fB\s-1ARC601\s0\fR, \fB\s-1ARC700\s0\fR and \fBARC700\-xmac\fR respectively.
! .IP "\fB\-multcost=\fR\fInum\fR" 4
  .IX Item "-multcost=num"
  Replaced by \fB\-mmultcost\fR.
  .PP
! \fI\s-1ARM\s0 Options\fR
  .IX Subsection "ARM Options"
  .PP
! These \fB\-m\fR options are defined for the \s-1ARM\s0 port:
! .IP "\fB\-mabi=\fR\fIname\fR" 4
  .IX Item "-mabi=name"
! Generate code for the specified \s-1ABI.\s0  Permissible values are: \fBapcs-gnu\fR,
! \&\fBatpcs\fR, \fBaapcs\fR, \fBaapcs-linux\fR and \fBiwmmxt\fR.
! .IP "\fB\-mapcs\-frame\fR" 4
  .IX Item "-mapcs-frame"
! Generate a stack frame that is compliant with the \s-1ARM\s0 Procedure Call
  Standard for all functions, even if this is not strictly necessary for
  correct execution of the code.  Specifying \fB\-fomit\-frame\-pointer\fR
  with this option causes the stack frames not to be generated for
  leaf functions.  The default is \fB\-mno\-apcs\-frame\fR.
  This option is deprecated.
! .IP "\fB\-mapcs\fR" 4
  .IX Item "-mapcs"
  This is a synonym for \fB\-mapcs\-frame\fR and is deprecated.
! .IP "\fB\-mthumb\-interwork\fR" 4
  .IX Item "-mthumb-interwork"
! Generate code that supports calling between the \s-1ARM\s0 and Thumb
  instruction sets.  Without this option, on pre\-v5 architectures, the
  two instruction sets cannot be reliably used inside one program.  The
  default is \fB\-mno\-thumb\-interwork\fR, since slightly larger code
! is generated when \fB\-mthumb\-interwork\fR is specified.  In \s-1AAPCS\s0
  configurations this option is meaningless.
! .IP "\fB\-mno\-sched\-prolog\fR" 4
  .IX Item "-mno-sched-prolog"
  Prevent the reordering of instructions in the function prologue, or the
! merging of those instruction with the instructions in the function's
  body.  This means that all functions start with a recognizable set
  of instructions (or in fact one of a choice from a small set of
  different function prologues), and this information can be used to
  locate the start of functions inside an executable piece of code.  The
  default is \fB\-msched\-prolog\fR.
! .IP "\fB\-mfloat\-abi=\fR\fIname\fR" 4
  .IX Item "-mfloat-abi=name"
! Specifies which floating-point \s-1ABI\s0 to use.  Permissible values
  are: \fBsoft\fR, \fBsoftfp\fR and \fBhard\fR.
  .Sp
! Specifying \fBsoft\fR causes \s-1GCC\s0 to generate output containing
! library calls for floating-point operations.
! \&\fBsoftfp\fR allows the generation of code using hardware floating-point
! instructions, but still uses the soft-float calling conventions.
! \&\fBhard\fR allows generation of floating-point instructions
! and uses FPU-specific calling conventions.
  .Sp
  The default depends on the specific target configuration.  Note that
! the hard-float and soft-float ABIs are not link-compatible; you must
! compile your entire program with the same \s-1ABI,\s0 and link with a
  compatible set of libraries.
! .IP "\fB\-mgeneral\-regs\-only\fR" 4
  .IX Item "-mgeneral-regs-only"
! Generate code which uses only the general-purpose registers.  This will prevent
! the compiler from using floating-point and Advanced \s-1SIMD\s0 registers but will not
  impose any restrictions on the assembler.
! .IP "\fB\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
! Generate code for a processor running in little-endian mode.  This is
  the default for all standard configurations.
! .IP "\fB\-mbig\-endian\fR" 4
  .IX Item "-mbig-endian"
! Generate code for a processor running in big-endian mode; the default is
! to compile code for a little-endian processor.
! .IP "\fB\-mbe8\fR" 4
  .IX Item "-mbe8"
  .PD 0
! .IP "\fB\-mbe32\fR" 4
  .IX Item "-mbe32"
  .PD
! When linking a big-endian image select between \s-1BE8\s0 and \s-1BE32\s0 formats.
! The option has no effect for little-endian images and is ignored.  The
  default is dependent on the selected target architecture.  For ARMv6
! and later architectures the default is \s-1BE8,\s0 for older architectures
! the default is \s-1BE32.\s0  \s-1BE32\s0 format has been deprecated by \s-1ARM.\s0
! .IP "\fB\-march=\fR\fIname\fR[\fB+extension...\fR]" 4
  .IX Item "-march=name[+extension...]"
! This specifies the name of the target \s-1ARM\s0 architecture.  \s-1GCC\s0 uses this
  name to determine what kind of instructions it can emit when generating
  assembly code.  This option can be used in conjunction with or instead
  of the \fB\-mcpu=\fR option.
--- 22482,22670 ----
  This defaults to \fB3\fR when \fB\-Os\fR is in effect.  Otherwise,
  the behavior when this is not set is equivalent to level \fB1\fR.
  .RE
! .IP \fB\-mtune=\fR\fIcpu\fR 4
  .IX Item "-mtune=cpu"
  Set instruction scheduling parameters for \fIcpu\fR, overriding any implied
  by \fB\-mcpu=\fR.
  .Sp
  Supported values for \fIcpu\fR are
  .RS 4
! .IP \fBARC600\fR 4
  .IX Item "ARC600"
! Tune for ARC600 CPU.
! .IP \fBARC601\fR 4
  .IX Item "ARC601"
! Tune for ARC601 CPU.
! .IP \fBARC700\fR 4
  .IX Item "ARC700"
! Tune for ARC700 CPU with standard multiplier block.
! .IP \fBARC700\-xmac\fR 4
  .IX Item "ARC700-xmac"
! Tune for ARC700 CPU with XMAC block.
! .IP \fBARC725D\fR 4
  .IX Item "ARC725D"
! Tune for ARC725D CPU.
! .IP \fBARC750D\fR 4
  .IX Item "ARC750D"
! Tune for ARC750D CPU.
! .IP \fBcore3\fR 4
  .IX Item "core3"
! Tune for ARCv2 core3 type CPU.  This option enable usage of
  \&\f(CW\*(C`dbnz\*(C'\fR instruction.
! .IP \fBrelease31a\fR 4
  .IX Item "release31a"
  Tune for ARC4x release 3.10a.
  .RE
  .RS 4
  .RE
! .IP \fB\-mmultcost=\fR\fInum\fR 4
  .IX Item "-mmultcost=num"
  Cost to assume for a multiply instruction, with \fB4\fR being equal to a
  normal instruction.
! .IP \fB\-munalign\-prob\-threshold=\fR\fIprobability\fR 4
  .IX Item "-munalign-prob-threshold=probability"
  Does nothing.  Preserved for backward compatibility.
  .PP
  The following options are maintained for backward compatibility, but
  are now deprecated and will be removed in a future release:
! .IP \fB\-margonaut\fR 4
  .IX Item "-margonaut"
! Obsolete FPX.
! .IP \fB\-mbig\-endian\fR 4
  .IX Item "-mbig-endian"
  .PD 0
! .IP \fB\-EB\fR 4
  .IX Item "-EB"
  .PD
! Compile code for big\-endian targets.  Use of these options is now
! deprecated.  Big\-endian code is supported by configuring GCC to build
  \&\f(CW\*(C`arceb\-elf32\*(C'\fR and \f(CW\*(C`arceb\-linux\-uclibc\*(C'\fR targets,
  for which big endian is the default.
! .IP \fB\-mlittle\-endian\fR 4
  .IX Item "-mlittle-endian"
  .PD 0
! .IP \fB\-EL\fR 4
  .IX Item "-EL"
  .PD
! Compile code for little\-endian targets.  Use of these options is now
! deprecated.  Little\-endian code is supported by configuring GCC to build
  \&\f(CW\*(C`arc\-elf32\*(C'\fR and \f(CW\*(C`arc\-linux\-uclibc\*(C'\fR targets,
  for which little endian is the default.
! .IP \fB\-mbarrel_shifter\fR 4
  .IX Item "-mbarrel_shifter"
  Replaced by \fB\-mbarrel\-shifter\fR.
! .IP \fB\-mdpfp_compact\fR 4
  .IX Item "-mdpfp_compact"
  Replaced by \fB\-mdpfp\-compact\fR.
! .IP \fB\-mdpfp_fast\fR 4
  .IX Item "-mdpfp_fast"
  Replaced by \fB\-mdpfp\-fast\fR.
! .IP \fB\-mdsp_packa\fR 4
  .IX Item "-mdsp_packa"
  Replaced by \fB\-mdsp\-packa\fR.
! .IP \fB\-mEA\fR 4
  .IX Item "-mEA"
  Replaced by \fB\-mea\fR.
! .IP \fB\-mmac_24\fR 4
  .IX Item "-mmac_24"
  Replaced by \fB\-mmac\-24\fR.
! .IP \fB\-mmac_d16\fR 4
  .IX Item "-mmac_d16"
  Replaced by \fB\-mmac\-d16\fR.
! .IP \fB\-mspfp_compact\fR 4
  .IX Item "-mspfp_compact"
  Replaced by \fB\-mspfp\-compact\fR.
! .IP \fB\-mspfp_fast\fR 4
  .IX Item "-mspfp_fast"
  Replaced by \fB\-mspfp\-fast\fR.
! .IP \fB\-mtune=\fR\fIcpu\fR 4
  .IX Item "-mtune=cpu"
  Values \fBarc600\fR, \fBarc601\fR, \fBarc700\fR and
! \&\fBarc700\-xmac\fR for \fIcpu\fR are replaced by \fBARC600\fR,
! \&\fBARC601\fR, \fBARC700\fR and \fBARC700\-xmac\fR respectively.
! .IP \fB\-multcost=\fR\fInum\fR 4
  .IX Item "-multcost=num"
  Replaced by \fB\-mmultcost\fR.
  .PP
! \fIARM Options\fR
  .IX Subsection "ARM Options"
  .PP
! These \fB\-m\fR options are defined for the ARM port:
! .IP \fB\-mabi=\fR\fIname\fR 4
  .IX Item "-mabi=name"
! Generate code for the specified ABI.  Permissible values are: \fBapcs\-gnu\fR,
! \&\fBatpcs\fR, \fBaapcs\fR, \fBaapcs\-linux\fR and \fBiwmmxt\fR.
! .IP \fB\-mapcs\-frame\fR 4
  .IX Item "-mapcs-frame"
! Generate a stack frame that is compliant with the ARM Procedure Call
  Standard for all functions, even if this is not strictly necessary for
  correct execution of the code.  Specifying \fB\-fomit\-frame\-pointer\fR
  with this option causes the stack frames not to be generated for
  leaf functions.  The default is \fB\-mno\-apcs\-frame\fR.
  This option is deprecated.
! .IP \fB\-mapcs\fR 4
  .IX Item "-mapcs"
  This is a synonym for \fB\-mapcs\-frame\fR and is deprecated.
! .IP \fB\-mthumb\-interwork\fR 4
  .IX Item "-mthumb-interwork"
! Generate code that supports calling between the ARM and Thumb
  instruction sets.  Without this option, on pre\-v5 architectures, the
  two instruction sets cannot be reliably used inside one program.  The
  default is \fB\-mno\-thumb\-interwork\fR, since slightly larger code
! is generated when \fB\-mthumb\-interwork\fR is specified.  In AAPCS
  configurations this option is meaningless.
! .IP \fB\-mno\-sched\-prolog\fR 4
  .IX Item "-mno-sched-prolog"
  Prevent the reordering of instructions in the function prologue, or the
! merging of those instruction with the instructions in the function\*(Aqs
  body.  This means that all functions start with a recognizable set
  of instructions (or in fact one of a choice from a small set of
  different function prologues), and this information can be used to
  locate the start of functions inside an executable piece of code.  The
  default is \fB\-msched\-prolog\fR.
! .IP \fB\-mfloat\-abi=\fR\fIname\fR 4
  .IX Item "-mfloat-abi=name"
! Specifies which floating\-point ABI to use.  Permissible values
  are: \fBsoft\fR, \fBsoftfp\fR and \fBhard\fR.
  .Sp
! Specifying \fBsoft\fR causes GCC to generate output containing
! library calls for floating\-point operations.
! \&\fBsoftfp\fR allows the generation of code using hardware floating\-point
! instructions, but still uses the soft\-float calling conventions.
! \&\fBhard\fR allows generation of floating\-point instructions
! and uses FPU\-specific calling conventions.
  .Sp
  The default depends on the specific target configuration.  Note that
! the hard\-float and soft\-float ABIs are not link\-compatible; you must
! compile your entire program with the same ABI, and link with a
  compatible set of libraries.
! .IP \fB\-mgeneral\-regs\-only\fR 4
  .IX Item "-mgeneral-regs-only"
! Generate code which uses only the general\-purpose registers.  This will prevent
! the compiler from using floating\-point and Advanced SIMD registers but will not
  impose any restrictions on the assembler.
! .IP \fB\-mlittle\-endian\fR 4
  .IX Item "-mlittle-endian"
! Generate code for a processor running in little\-endian mode.  This is
  the default for all standard configurations.
! .IP \fB\-mbig\-endian\fR 4
  .IX Item "-mbig-endian"
! Generate code for a processor running in big\-endian mode; the default is
! to compile code for a little\-endian processor.
! .IP \fB\-mbe8\fR 4
  .IX Item "-mbe8"
  .PD 0
! .IP \fB\-mbe32\fR 4
  .IX Item "-mbe32"
  .PD
! When linking a big\-endian image select between BE8 and BE32 formats.
! The option has no effect for little\-endian images and is ignored.  The
  default is dependent on the selected target architecture.  For ARMv6
! and later architectures the default is BE8, for older architectures
! the default is BE32.  BE32 format has been deprecated by ARM.
! .IP \fB\-march=\fR\fIname\fR[\fB+extension...\fR] 4
  .IX Item "-march=name[+extension...]"
! This specifies the name of the target ARM architecture.  GCC uses this
  name to determine what kind of instructions it can emit when generating
  assembly code.  This option can be used in conjunction with or instead
  of the \fB\-mcpu=\fR option.
*************** Most extension names are generically nam
*** 22775,23321 ****
  dependent upon the architecture to which it is applied.  For example,
  the \fB+simd\fR option can be applied to both \fBarmv7\-a\fR and
  \&\fBarmv8\-a\fR architectures, but will enable the original ARMv7\-A
! Advanced \s-1SIMD\s0 (Neon) extensions for \fBarmv7\-a\fR and the ARMv8\-A
  variant for \fBarmv8\-a\fR.
  .Sp
  The table below lists the supported extensions for each architecture.
  Architectures not mentioned do not support any extensions.
  .RS 4
! .IP "\fBarmv5te\fR" 4
  .IX Item "armv5te"
  .PD 0
! .IP "\fBarmv6\fR" 4
  .IX Item "armv6"
! .IP "\fBarmv6j\fR" 4
  .IX Item "armv6j"
! .IP "\fBarmv6k\fR" 4
  .IX Item "armv6k"
! .IP "\fBarmv6kz\fR" 4
  .IX Item "armv6kz"
! .IP "\fBarmv6t2\fR" 4
  .IX Item "armv6t2"
! .IP "\fBarmv6z\fR" 4
  .IX Item "armv6z"
! .IP "\fBarmv6zk\fR" 4
  .IX Item "armv6zk"
  .RS 4
! .IP "\fB+fp\fR" 4
  .IX Item "+fp"
  .PD
! The VFPv2 floating-point instructions.  The extension \fB+vfpv2\fR can be
  used as an alias for this extension.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point instructions.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv7\fR" 4
  .IX Item "armv7"
  The common subset of the ARMv7\-A, ARMv7\-R and ARMv7\-M architectures.
  .RS 4
! .IP "\fB+fp\fR" 4
  .IX Item "+fp"
! The VFPv3 floating-point instructions, with 16 double-precision
  registers.  The extension \fB+vfpv3\-d16\fR can be used as an alias
! for this extension.  Note that floating-point is not supported by the
  base ARMv7\-M architecture, but is compatible with both the ARMv7\-A and
  ARMv7\-R architectures.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point instructions.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv7\-a\fR" 4
  .IX Item "armv7-a"
  .RS 4
  .PD 0
! .IP "\fB+mp\fR" 4
  .IX Item "+mp"
  .PD
  The multiprocessing extension.
! .IP "\fB+sec\fR" 4
  .IX Item "+sec"
  The security extension.
! .IP "\fB+fp\fR" 4
  .IX Item "+fp"
! The VFPv3 floating-point instructions, with 16 double-precision
  registers.  The extension \fB+vfpv3\-d16\fR can be used as an alias
  for this extension.
! .IP "\fB+simd\fR" 4
  .IX Item "+simd"
! The Advanced \s-1SIMD\s0 (Neon) v1 and the VFPv3 floating-point instructions.
  The extensions \fB+neon\fR and \fB+neon\-vfpv3\fR can be used as aliases
  for this extension.
! .IP "\fB+vfpv3\fR" 4
  .IX Item "+vfpv3"
! The VFPv3 floating-point instructions, with 32 double-precision
  registers.
! .IP "\fB+vfpv3\-d16\-fp16\fR" 4
  .IX Item "+vfpv3-d16-fp16"
! The VFPv3 floating-point instructions, with 16 double-precision
! registers and the half-precision floating-point conversion operations.
! .IP "\fB+vfpv3\-fp16\fR" 4
  .IX Item "+vfpv3-fp16"
! The VFPv3 floating-point instructions, with 32 double-precision
! registers and the half-precision floating-point conversion operations.
! .IP "\fB+vfpv4\-d16\fR" 4
  .IX Item "+vfpv4-d16"
! The VFPv4 floating-point instructions, with 16 double-precision
  registers.
! .IP "\fB+vfpv4\fR" 4
  .IX Item "+vfpv4"
! The VFPv4 floating-point instructions, with 32 double-precision
  registers.
! .IP "\fB+neon\-fp16\fR" 4
  .IX Item "+neon-fp16"
! The Advanced \s-1SIMD\s0 (Neon) v1 and the VFPv3 floating-point instructions, with
! the half-precision floating-point conversion operations.
! .IP "\fB+neon\-vfpv4\fR" 4
  .IX Item "+neon-vfpv4"
! The Advanced \s-1SIMD\s0 (Neon) v2 and the VFPv4 floating-point instructions.
! .IP "\fB+nosimd\fR" 4
  .IX Item "+nosimd"
! Disable the Advanced \s-1SIMD\s0 instructions (does not disable floating point).
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point and Advanced \s-1SIMD\s0 instructions.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv7ve\fR" 4
  .IX Item "armv7ve"
  The extended version of the ARMv7\-A architecture with support for
  virtualization.
  .RS 4
! .IP "\fB+fp\fR" 4
  .IX Item "+fp"
! The VFPv4 floating-point instructions, with 16 double-precision registers.
  The extension \fB+vfpv4\-d16\fR can be used as an alias for this extension.
! .IP "\fB+simd\fR" 4
  .IX Item "+simd"
! The Advanced \s-1SIMD\s0 (Neon) v2 and the VFPv4 floating-point instructions.  The
  extension \fB+neon\-vfpv4\fR can be used as an alias for this extension.
! .IP "\fB+vfpv3\-d16\fR" 4
  .IX Item "+vfpv3-d16"
! The VFPv3 floating-point instructions, with 16 double-precision
  registers.
! .IP "\fB+vfpv3\fR" 4
  .IX Item "+vfpv3"
! The VFPv3 floating-point instructions, with 32 double-precision
  registers.
! .IP "\fB+vfpv3\-d16\-fp16\fR" 4
  .IX Item "+vfpv3-d16-fp16"
! The VFPv3 floating-point instructions, with 16 double-precision
! registers and the half-precision floating-point conversion operations.
! .IP "\fB+vfpv3\-fp16\fR" 4
  .IX Item "+vfpv3-fp16"
! The VFPv3 floating-point instructions, with 32 double-precision
! registers and the half-precision floating-point conversion operations.
! .IP "\fB+vfpv4\-d16\fR" 4
  .IX Item "+vfpv4-d16"
! The VFPv4 floating-point instructions, with 16 double-precision
  registers.
! .IP "\fB+vfpv4\fR" 4
  .IX Item "+vfpv4"
! The VFPv4 floating-point instructions, with 32 double-precision
  registers.
! .IP "\fB+neon\fR" 4
  .IX Item "+neon"
! The Advanced \s-1SIMD\s0 (Neon) v1 and the VFPv3 floating-point instructions.
  The extension \fB+neon\-vfpv3\fR can be used as an alias for this extension.
! .IP "\fB+neon\-fp16\fR" 4
  .IX Item "+neon-fp16"
! The Advanced \s-1SIMD\s0 (Neon) v1 and the VFPv3 floating-point instructions, with
! the half-precision floating-point conversion operations.
! .IP "\fB+nosimd\fR" 4
  .IX Item "+nosimd"
! Disable the Advanced \s-1SIMD\s0 instructions (does not disable floating point).
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point and Advanced \s-1SIMD\s0 instructions.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv8\-a\fR" 4
  .IX Item "armv8-a"
  .RS 4
  .PD 0
! .IP "\fB+crc\fR" 4
  .IX Item "+crc"
  .PD
! The Cyclic Redundancy Check (\s-1CRC\s0) instructions.
! .IP "\fB+simd\fR" 4
  .IX Item "+simd"
! The ARMv8\-A Advanced \s-1SIMD\s0 and floating-point instructions.
! .IP "\fB+crypto\fR" 4
  .IX Item "+crypto"
  The cryptographic instructions.
! .IP "\fB+nocrypto\fR" 4
  .IX Item "+nocrypto"
  Disable the cryptographic instructions.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point, Advanced \s-1SIMD\s0 and cryptographic instructions.
! .IP "\fB+sb\fR" 4
  .IX Item "+sb"
  Speculation Barrier Instruction.
! .IP "\fB+predres\fR" 4
  .IX Item "+predres"
  Execution and Data Prediction Restriction Instructions.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv8.1\-a\fR" 4
  .IX Item "armv8.1-a"
  .RS 4
  .PD 0
! .IP "\fB+simd\fR" 4
  .IX Item "+simd"
  .PD
! The ARMv8.1\-A Advanced \s-1SIMD\s0 and floating-point instructions.
! .IP "\fB+crypto\fR" 4
  .IX Item "+crypto"
! The cryptographic instructions.  This also enables the Advanced \s-1SIMD\s0 and
! floating-point instructions.
! .IP "\fB+nocrypto\fR" 4
  .IX Item "+nocrypto"
  Disable the cryptographic instructions.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point, Advanced \s-1SIMD\s0 and cryptographic instructions.
! .IP "\fB+sb\fR" 4
  .IX Item "+sb"
  Speculation Barrier Instruction.
! .IP "\fB+predres\fR" 4
  .IX Item "+predres"
  Execution and Data Prediction Restriction Instructions.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv8.2\-a\fR" 4
  .IX Item "armv8.2-a"
  .PD 0
! .IP "\fBarmv8.3\-a\fR" 4
  .IX Item "armv8.3-a"
  .RS 4
! .IP "\fB+fp16\fR" 4
  .IX Item "+fp16"
  .PD
! The half-precision floating-point data processing instructions.
! This also enables the Advanced \s-1SIMD\s0 and floating-point instructions.
! .IP "\fB+fp16fml\fR" 4
  .IX Item "+fp16fml"
! The half-precision floating-point fmla extension.  This also enables
! the half-precision floating-point extension and Advanced \s-1SIMD\s0 and
! floating-point instructions.
! .IP "\fB+simd\fR" 4
  .IX Item "+simd"
! The ARMv8.1\-A Advanced \s-1SIMD\s0 and floating-point instructions.
! .IP "\fB+crypto\fR" 4
  .IX Item "+crypto"
! The cryptographic instructions.  This also enables the Advanced \s-1SIMD\s0 and
! floating-point instructions.
! .IP "\fB+dotprod\fR" 4
  .IX Item "+dotprod"
! Enable the Dot Product extension.  This also enables Advanced \s-1SIMD\s0 instructions.
! .IP "\fB+nocrypto\fR" 4
  .IX Item "+nocrypto"
  Disable the cryptographic extension.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point, Advanced \s-1SIMD\s0 and cryptographic instructions.
! .IP "\fB+sb\fR" 4
  .IX Item "+sb"
  Speculation Barrier Instruction.
! .IP "\fB+predres\fR" 4
  .IX Item "+predres"
  Execution and Data Prediction Restriction Instructions.
! .IP "\fB+i8mm\fR" 4
  .IX Item "+i8mm"
  8\-bit Integer Matrix Multiply instructions.
! This also enables Advanced \s-1SIMD\s0 and floating-point instructions.
! .IP "\fB+bf16\fR" 4
  .IX Item "+bf16"
! Brain half-precision floating-point instructions.
! This also enables Advanced \s-1SIMD\s0 and floating-point instructions.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv8.4\-a\fR" 4
  .IX Item "armv8.4-a"
  .RS 4
  .PD 0
! .IP "\fB+fp16\fR" 4
  .IX Item "+fp16"
  .PD
! The half-precision floating-point data processing instructions.
! This also enables the Advanced \s-1SIMD\s0 and floating-point instructions as well
! as the Dot Product extension and the half-precision floating-point fmla
  extension.
! .IP "\fB+simd\fR" 4
  .IX Item "+simd"
! The ARMv8.3\-A Advanced \s-1SIMD\s0 and floating-point instructions as well as the
  Dot Product extension.
! .IP "\fB+crypto\fR" 4
  .IX Item "+crypto"
! The cryptographic instructions.  This also enables the Advanced \s-1SIMD\s0 and
! floating-point instructions as well as the Dot Product extension.
! .IP "\fB+nocrypto\fR" 4
  .IX Item "+nocrypto"
  Disable the cryptographic extension.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point, Advanced \s-1SIMD\s0 and cryptographic instructions.
! .IP "\fB+sb\fR" 4
  .IX Item "+sb"
  Speculation Barrier Instruction.
! .IP "\fB+predres\fR" 4
  .IX Item "+predres"
  Execution and Data Prediction Restriction Instructions.
! .IP "\fB+i8mm\fR" 4
  .IX Item "+i8mm"
  8\-bit Integer Matrix Multiply instructions.
! This also enables Advanced \s-1SIMD\s0 and floating-point instructions.
! .IP "\fB+bf16\fR" 4
  .IX Item "+bf16"
! Brain half-precision floating-point instructions.
! This also enables Advanced \s-1SIMD\s0 and floating-point instructions.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv8.5\-a\fR" 4
  .IX Item "armv8.5-a"
  .RS 4
  .PD 0
! .IP "\fB+fp16\fR" 4
  .IX Item "+fp16"
  .PD
! The half-precision floating-point data processing instructions.
! This also enables the Advanced \s-1SIMD\s0 and floating-point instructions as well
! as the Dot Product extension and the half-precision floating-point fmla
  extension.
! .IP "\fB+simd\fR" 4
  .IX Item "+simd"
! The ARMv8.3\-A Advanced \s-1SIMD\s0 and floating-point instructions as well as the
  Dot Product extension.
! .IP "\fB+crypto\fR" 4
  .IX Item "+crypto"
! The cryptographic instructions.  This also enables the Advanced \s-1SIMD\s0 and
! floating-point instructions as well as the Dot Product extension.
! .IP "\fB+nocrypto\fR" 4
  .IX Item "+nocrypto"
  Disable the cryptographic extension.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point, Advanced \s-1SIMD\s0 and cryptographic instructions.
! .IP "\fB+i8mm\fR" 4
  .IX Item "+i8mm"
  8\-bit Integer Matrix Multiply instructions.
! This also enables Advanced \s-1SIMD\s0 and floating-point instructions.
! .IP "\fB+bf16\fR" 4
  .IX Item "+bf16"
! Brain half-precision floating-point instructions.
! This also enables Advanced \s-1SIMD\s0 and floating-point instructions.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv8.6\-a\fR" 4
  .IX Item "armv8.6-a"
  .RS 4
  .PD 0
! .IP "\fB+fp16\fR" 4
  .IX Item "+fp16"
  .PD
! The half-precision floating-point data processing instructions.
! This also enables the Advanced \s-1SIMD\s0 and floating-point instructions as well
! as the Dot Product extension and the half-precision floating-point fmla
  extension.
! .IP "\fB+simd\fR" 4
  .IX Item "+simd"
! The ARMv8.3\-A Advanced \s-1SIMD\s0 and floating-point instructions as well as the
  Dot Product extension.
! .IP "\fB+crypto\fR" 4
  .IX Item "+crypto"
! The cryptographic instructions.  This also enables the Advanced \s-1SIMD\s0 and
! floating-point instructions as well as the Dot Product extension.
! .IP "\fB+nocrypto\fR" 4
  .IX Item "+nocrypto"
  Disable the cryptographic extension.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point, Advanced \s-1SIMD\s0 and cryptographic instructions.
! .IP "\fB+i8mm\fR" 4
  .IX Item "+i8mm"
  8\-bit Integer Matrix Multiply instructions.
! This also enables Advanced \s-1SIMD\s0 and floating-point instructions.
! .IP "\fB+bf16\fR" 4
  .IX Item "+bf16"
! Brain half-precision floating-point instructions.
! This also enables Advanced \s-1SIMD\s0 and floating-point instructions.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv7\-r\fR" 4
  .IX Item "armv7-r"
  .RS 4
  .PD 0
! .IP "\fB+fp.sp\fR" 4
  .IX Item "+fp.sp"
  .PD
! The single-precision VFPv3 floating-point instructions.  The extension
  \&\fB+vfpv3xd\fR can be used as an alias for this extension.
! .IP "\fB+fp\fR" 4
  .IX Item "+fp"
! The VFPv3 floating-point instructions with 16 double-precision registers.
  The extension +vfpv3\-d16 can be used as an alias for this extension.
! .IP "\fB+vfpv3xd\-d16\-fp16\fR" 4
  .IX Item "+vfpv3xd-d16-fp16"
! The single-precision VFPv3 floating-point instructions with 16 double-precision
! registers and the half-precision floating-point conversion operations.
! .IP "\fB+vfpv3\-d16\-fp16\fR" 4
  .IX Item "+vfpv3-d16-fp16"
! The VFPv3 floating-point instructions with 16 double-precision
! registers and the half-precision floating-point conversion operations.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point extension.
! .IP "\fB+idiv\fR" 4
  .IX Item "+idiv"
! The ARM-state integer division instructions.
! .IP "\fB+noidiv\fR" 4
  .IX Item "+noidiv"
! Disable the ARM-state integer division extension.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv7e\-m\fR" 4
  .IX Item "armv7e-m"
  .RS 4
  .PD 0
! .IP "\fB+fp\fR" 4
  .IX Item "+fp"
  .PD
! The single-precision VFPv4 floating-point instructions.
! .IP "\fB+fpv5\fR" 4
  .IX Item "+fpv5"
! The single-precision FPv5 floating-point instructions.
! .IP "\fB+fp.dp\fR" 4
  .IX Item "+fp.dp"
! The single\- and double-precision FPv5 floating-point instructions.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point extensions.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv8.1\-m.main\fR" 4
  .IX Item "armv8.1-m.main"
  .RS 4
  .PD 0
! .IP "\fB+dsp\fR" 4
  .IX Item "+dsp"
  .PD
! The \s-1DSP\s0 instructions.
! .IP "\fB+mve\fR" 4
  .IX Item "+mve"
! The M\-Profile Vector Extension (\s-1MVE\s0) integer instructions.
! .IP "\fB+mve.fp\fR" 4
  .IX Item "+mve.fp"
! The M\-Profile Vector Extension (\s-1MVE\s0) integer and single precision
! floating-point instructions.
! .IP "\fB+fp\fR" 4
  .IX Item "+fp"
! The single-precision floating-point instructions.
! .IP "\fB+fp.dp\fR" 4
  .IX Item "+fp.dp"
! The single\- and double-precision floating-point instructions.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point extension.
  .IP "\fB+cdecp0, +cdecp1, ... , +cdecp7\fR" 4
  .IX Item "+cdecp0, +cdecp1, ... , +cdecp7"
! Enable the Custom Datapath Extension (\s-1CDE\s0) on selected coprocessors according
  to the numbers given in the options in the range 0 to 7.
! .IP "\fB+pacbti\fR" 4
  .IX Item "+pacbti"
  Enable the Pointer Authentication and Branch Target Identification Extension.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv8\-m.main\fR" 4
  .IX Item "armv8-m.main"
  .RS 4
  .PD 0
! .IP "\fB+dsp\fR" 4
  .IX Item "+dsp"
  .PD
! The \s-1DSP\s0 instructions.
! .IP "\fB+nodsp\fR" 4
  .IX Item "+nodsp"
! Disable the \s-1DSP\s0 extension.
! .IP "\fB+fp\fR" 4
  .IX Item "+fp"
! The single-precision floating-point instructions.
! .IP "\fB+fp.dp\fR" 4
  .IX Item "+fp.dp"
! The single\- and double-precision floating-point instructions.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point extension.
  .IP "\fB+cdecp0, +cdecp1, ... , +cdecp7\fR" 4
  .IX Item "+cdecp0, +cdecp1, ... , +cdecp7"
! Enable the Custom Datapath Extension (\s-1CDE\s0) on selected coprocessors according
  to the numbers given in the options in the range 0 to 7.
  .RE
  .RS 4
  .RE
! .IP "\fBarmv8\-r\fR" 4
  .IX Item "armv8-r"
  .RS 4
  .PD 0
! .IP "\fB+crc\fR" 4
  .IX Item "+crc"
  .PD
! The Cyclic Redundancy Check (\s-1CRC\s0) instructions.
! .IP "\fB+fp.sp\fR" 4
  .IX Item "+fp.sp"
! The single-precision FPv5 floating-point instructions.
! .IP "\fB+simd\fR" 4
  .IX Item "+simd"
! The ARMv8\-A Advanced \s-1SIMD\s0 and floating-point instructions.
! .IP "\fB+crypto\fR" 4
  .IX Item "+crypto"
  The cryptographic instructions.
! .IP "\fB+nocrypto\fR" 4
  .IX Item "+nocrypto"
  Disable the cryptographic instructions.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disable the floating-point, Advanced \s-1SIMD\s0 and cryptographic instructions.
  .RE
  .RS 4
  .RE
  .RE
  .RS 4
  .Sp
! \&\fB\-march=native\fR causes the compiler to auto-detect the architecture
  of the build computer.  At present, this feature is only supported on
! GNU/Linux, and not all architectures are recognized.  If the auto-detect
  is unsuccessful the option has no effect.
  .Sp
  \&\fB\-march=unset\fR causes the compiler to ignore any
  \&\fB\-march=...\fR options that appear earlier on the command line
  and behave as if the option was never passed.  This is useful to avoid
! warnings about conflicting \s-1CPU\s0 and architecture options when the two
  produce different architecture specifications.
  .RE
! .IP "\fB\-mtune=\fR\fIname\fR" 4
  .IX Item "-mtune=name"
! This option specifies the name of the target \s-1ARM\s0 processor for
! which \s-1GCC\s0 should tune the performance of the code.
! For some \s-1ARM\s0 implementations better performance can be obtained by using
  this option.
  Permissible names are: \fBarm7tdmi\fR, \fBarm7tdmi\-s\fR, \fBarm710t\fR,
  \&\fBarm720t\fR, \fBarm740t\fR, \fBstrongarm\fR, \fBstrongarm110\fR,
--- 22710,23256 ----
  dependent upon the architecture to which it is applied.  For example,
  the \fB+simd\fR option can be applied to both \fBarmv7\-a\fR and
  \&\fBarmv8\-a\fR architectures, but will enable the original ARMv7\-A
! Advanced SIMD (Neon) extensions for \fBarmv7\-a\fR and the ARMv8\-A
  variant for \fBarmv8\-a\fR.
  .Sp
  The table below lists the supported extensions for each architecture.
  Architectures not mentioned do not support any extensions.
  .RS 4
! .IP \fBarmv5te\fR 4
  .IX Item "armv5te"
  .PD 0
! .IP \fBarmv6\fR 4
  .IX Item "armv6"
! .IP \fBarmv6j\fR 4
  .IX Item "armv6j"
! .IP \fBarmv6k\fR 4
  .IX Item "armv6k"
! .IP \fBarmv6kz\fR 4
  .IX Item "armv6kz"
! .IP \fBarmv6t2\fR 4
  .IX Item "armv6t2"
! .IP \fBarmv6z\fR 4
  .IX Item "armv6z"
! .IP \fBarmv6zk\fR 4
  .IX Item "armv6zk"
  .RS 4
! .IP \fB+fp\fR 4
  .IX Item "+fp"
  .PD
! The VFPv2 floating\-point instructions.  The extension \fB+vfpv2\fR can be
  used as an alias for this extension.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point instructions.
  .RE
  .RS 4
  .RE
! .IP \fBarmv7\fR 4
  .IX Item "armv7"
  The common subset of the ARMv7\-A, ARMv7\-R and ARMv7\-M architectures.
  .RS 4
! .IP \fB+fp\fR 4
  .IX Item "+fp"
! The VFPv3 floating\-point instructions, with 16 double\-precision
  registers.  The extension \fB+vfpv3\-d16\fR can be used as an alias
! for this extension.  Note that floating\-point is not supported by the
  base ARMv7\-M architecture, but is compatible with both the ARMv7\-A and
  ARMv7\-R architectures.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point instructions.
  .RE
  .RS 4
  .RE
! .IP \fBarmv7\-a\fR 4
  .IX Item "armv7-a"
  .RS 4
  .PD 0
! .IP \fB+mp\fR 4
  .IX Item "+mp"
  .PD
  The multiprocessing extension.
! .IP \fB+sec\fR 4
  .IX Item "+sec"
  The security extension.
! .IP \fB+fp\fR 4
  .IX Item "+fp"
! The VFPv3 floating\-point instructions, with 16 double\-precision
  registers.  The extension \fB+vfpv3\-d16\fR can be used as an alias
  for this extension.
! .IP \fB+simd\fR 4
  .IX Item "+simd"
! The Advanced SIMD (Neon) v1 and the VFPv3 floating\-point instructions.
  The extensions \fB+neon\fR and \fB+neon\-vfpv3\fR can be used as aliases
  for this extension.
! .IP \fB+vfpv3\fR 4
  .IX Item "+vfpv3"
! The VFPv3 floating\-point instructions, with 32 double\-precision
  registers.
! .IP \fB+vfpv3\-d16\-fp16\fR 4
  .IX Item "+vfpv3-d16-fp16"
! The VFPv3 floating\-point instructions, with 16 double\-precision
! registers and the half\-precision floating\-point conversion operations.
! .IP \fB+vfpv3\-fp16\fR 4
  .IX Item "+vfpv3-fp16"
! The VFPv3 floating\-point instructions, with 32 double\-precision
! registers and the half\-precision floating\-point conversion operations.
! .IP \fB+vfpv4\-d16\fR 4
  .IX Item "+vfpv4-d16"
! The VFPv4 floating\-point instructions, with 16 double\-precision
  registers.
! .IP \fB+vfpv4\fR 4
  .IX Item "+vfpv4"
! The VFPv4 floating\-point instructions, with 32 double\-precision
  registers.
! .IP \fB+neon\-fp16\fR 4
  .IX Item "+neon-fp16"
! The Advanced SIMD (Neon) v1 and the VFPv3 floating\-point instructions, with
! the half\-precision floating\-point conversion operations.
! .IP \fB+neon\-vfpv4\fR 4
  .IX Item "+neon-vfpv4"
! The Advanced SIMD (Neon) v2 and the VFPv4 floating\-point instructions.
! .IP \fB+nosimd\fR 4
  .IX Item "+nosimd"
! Disable the Advanced SIMD instructions (does not disable floating point).
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point and Advanced SIMD instructions.
  .RE
  .RS 4
  .RE
! .IP \fBarmv7ve\fR 4
  .IX Item "armv7ve"
  The extended version of the ARMv7\-A architecture with support for
  virtualization.
  .RS 4
! .IP \fB+fp\fR 4
  .IX Item "+fp"
! The VFPv4 floating\-point instructions, with 16 double\-precision registers.
  The extension \fB+vfpv4\-d16\fR can be used as an alias for this extension.
! .IP \fB+simd\fR 4
  .IX Item "+simd"
! The Advanced SIMD (Neon) v2 and the VFPv4 floating\-point instructions.  The
  extension \fB+neon\-vfpv4\fR can be used as an alias for this extension.
! .IP \fB+vfpv3\-d16\fR 4
  .IX Item "+vfpv3-d16"
! The VFPv3 floating\-point instructions, with 16 double\-precision
  registers.
! .IP \fB+vfpv3\fR 4
  .IX Item "+vfpv3"
! The VFPv3 floating\-point instructions, with 32 double\-precision
  registers.
! .IP \fB+vfpv3\-d16\-fp16\fR 4
  .IX Item "+vfpv3-d16-fp16"
! The VFPv3 floating\-point instructions, with 16 double\-precision
! registers and the half\-precision floating\-point conversion operations.
! .IP \fB+vfpv3\-fp16\fR 4
  .IX Item "+vfpv3-fp16"
! The VFPv3 floating\-point instructions, with 32 double\-precision
! registers and the half\-precision floating\-point conversion operations.
! .IP \fB+vfpv4\-d16\fR 4
  .IX Item "+vfpv4-d16"
! The VFPv4 floating\-point instructions, with 16 double\-precision
  registers.
! .IP \fB+vfpv4\fR 4
  .IX Item "+vfpv4"
! The VFPv4 floating\-point instructions, with 32 double\-precision
  registers.
! .IP \fB+neon\fR 4
  .IX Item "+neon"
! The Advanced SIMD (Neon) v1 and the VFPv3 floating\-point instructions.
  The extension \fB+neon\-vfpv3\fR can be used as an alias for this extension.
! .IP \fB+neon\-fp16\fR 4
  .IX Item "+neon-fp16"
! The Advanced SIMD (Neon) v1 and the VFPv3 floating\-point instructions, with
! the half\-precision floating\-point conversion operations.
! .IP \fB+nosimd\fR 4
  .IX Item "+nosimd"
! Disable the Advanced SIMD instructions (does not disable floating point).
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point and Advanced SIMD instructions.
  .RE
  .RS 4
  .RE
! .IP \fBarmv8\-a\fR 4
  .IX Item "armv8-a"
  .RS 4
  .PD 0
! .IP \fB+crc\fR 4
  .IX Item "+crc"
  .PD
! The Cyclic Redundancy Check (CRC) instructions.
! .IP \fB+simd\fR 4
  .IX Item "+simd"
! The ARMv8\-A Advanced SIMD and floating\-point instructions.
! .IP \fB+crypto\fR 4
  .IX Item "+crypto"
  The cryptographic instructions.
! .IP \fB+nocrypto\fR 4
  .IX Item "+nocrypto"
  Disable the cryptographic instructions.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point, Advanced SIMD and cryptographic instructions.
! .IP \fB+sb\fR 4
  .IX Item "+sb"
  Speculation Barrier Instruction.
! .IP \fB+predres\fR 4
  .IX Item "+predres"
  Execution and Data Prediction Restriction Instructions.
  .RE
  .RS 4
  .RE
! .IP \fBarmv8.1\-a\fR 4
  .IX Item "armv8.1-a"
  .RS 4
  .PD 0
! .IP \fB+simd\fR 4
  .IX Item "+simd"
  .PD
! The ARMv8.1\-A Advanced SIMD and floating\-point instructions.
! .IP \fB+crypto\fR 4
  .IX Item "+crypto"
! The cryptographic instructions.  This also enables the Advanced SIMD and
! floating\-point instructions.
! .IP \fB+nocrypto\fR 4
  .IX Item "+nocrypto"
  Disable the cryptographic instructions.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point, Advanced SIMD and cryptographic instructions.
! .IP \fB+sb\fR 4
  .IX Item "+sb"
  Speculation Barrier Instruction.
! .IP \fB+predres\fR 4
  .IX Item "+predres"
  Execution and Data Prediction Restriction Instructions.
  .RE
  .RS 4
  .RE
! .IP \fBarmv8.2\-a\fR 4
  .IX Item "armv8.2-a"
  .PD 0
! .IP \fBarmv8.3\-a\fR 4
  .IX Item "armv8.3-a"
  .RS 4
! .IP \fB+fp16\fR 4
  .IX Item "+fp16"
  .PD
! The half\-precision floating\-point data processing instructions.
! This also enables the Advanced SIMD and floating\-point instructions.
! .IP \fB+fp16fml\fR 4
  .IX Item "+fp16fml"
! The half\-precision floating\-point fmla extension.  This also enables
! the half\-precision floating\-point extension and Advanced SIMD and
! floating\-point instructions.
! .IP \fB+simd\fR 4
  .IX Item "+simd"
! The ARMv8.1\-A Advanced SIMD and floating\-point instructions.
! .IP \fB+crypto\fR 4
  .IX Item "+crypto"
! The cryptographic instructions.  This also enables the Advanced SIMD and
! floating\-point instructions.
! .IP \fB+dotprod\fR 4
  .IX Item "+dotprod"
! Enable the Dot Product extension.  This also enables Advanced SIMD instructions.
! .IP \fB+nocrypto\fR 4
  .IX Item "+nocrypto"
  Disable the cryptographic extension.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point, Advanced SIMD and cryptographic instructions.
! .IP \fB+sb\fR 4
  .IX Item "+sb"
  Speculation Barrier Instruction.
! .IP \fB+predres\fR 4
  .IX Item "+predres"
  Execution and Data Prediction Restriction Instructions.
! .IP \fB+i8mm\fR 4
  .IX Item "+i8mm"
  8\-bit Integer Matrix Multiply instructions.
! This also enables Advanced SIMD and floating\-point instructions.
! .IP \fB+bf16\fR 4
  .IX Item "+bf16"
! Brain half\-precision floating\-point instructions.
! This also enables Advanced SIMD and floating\-point instructions.
  .RE
  .RS 4
  .RE
! .IP \fBarmv8.4\-a\fR 4
  .IX Item "armv8.4-a"
  .RS 4
  .PD 0
! .IP \fB+fp16\fR 4
  .IX Item "+fp16"
  .PD
! The half\-precision floating\-point data processing instructions.
! This also enables the Advanced SIMD and floating\-point instructions as well
! as the Dot Product extension and the half\-precision floating\-point fmla
  extension.
! .IP \fB+simd\fR 4
  .IX Item "+simd"
! The ARMv8.3\-A Advanced SIMD and floating\-point instructions as well as the
  Dot Product extension.
! .IP \fB+crypto\fR 4
  .IX Item "+crypto"
! The cryptographic instructions.  This also enables the Advanced SIMD and
! floating\-point instructions as well as the Dot Product extension.
! .IP \fB+nocrypto\fR 4
  .IX Item "+nocrypto"
  Disable the cryptographic extension.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point, Advanced SIMD and cryptographic instructions.
! .IP \fB+sb\fR 4
  .IX Item "+sb"
  Speculation Barrier Instruction.
! .IP \fB+predres\fR 4
  .IX Item "+predres"
  Execution and Data Prediction Restriction Instructions.
! .IP \fB+i8mm\fR 4
  .IX Item "+i8mm"
  8\-bit Integer Matrix Multiply instructions.
! This also enables Advanced SIMD and floating\-point instructions.
! .IP \fB+bf16\fR 4
  .IX Item "+bf16"
! Brain half\-precision floating\-point instructions.
! This also enables Advanced SIMD and floating\-point instructions.
  .RE
  .RS 4
  .RE
! .IP \fBarmv8.5\-a\fR 4
  .IX Item "armv8.5-a"
  .RS 4
  .PD 0
! .IP \fB+fp16\fR 4
  .IX Item "+fp16"
  .PD
! The half\-precision floating\-point data processing instructions.
! This also enables the Advanced SIMD and floating\-point instructions as well
! as the Dot Product extension and the half\-precision floating\-point fmla
  extension.
! .IP \fB+simd\fR 4
  .IX Item "+simd"
! The ARMv8.3\-A Advanced SIMD and floating\-point instructions as well as the
  Dot Product extension.
! .IP \fB+crypto\fR 4
  .IX Item "+crypto"
! The cryptographic instructions.  This also enables the Advanced SIMD and
! floating\-point instructions as well as the Dot Product extension.
! .IP \fB+nocrypto\fR 4
  .IX Item "+nocrypto"
  Disable the cryptographic extension.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point, Advanced SIMD and cryptographic instructions.
! .IP \fB+i8mm\fR 4
  .IX Item "+i8mm"
  8\-bit Integer Matrix Multiply instructions.
! This also enables Advanced SIMD and floating\-point instructions.
! .IP \fB+bf16\fR 4
  .IX Item "+bf16"
! Brain half\-precision floating\-point instructions.
! This also enables Advanced SIMD and floating\-point instructions.
  .RE
  .RS 4
  .RE
! .IP \fBarmv8.6\-a\fR 4
  .IX Item "armv8.6-a"
  .RS 4
  .PD 0
! .IP \fB+fp16\fR 4
  .IX Item "+fp16"
  .PD
! The half\-precision floating\-point data processing instructions.
! This also enables the Advanced SIMD and floating\-point instructions as well
! as the Dot Product extension and the half\-precision floating\-point fmla
  extension.
! .IP \fB+simd\fR 4
  .IX Item "+simd"
! The ARMv8.3\-A Advanced SIMD and floating\-point instructions as well as the
  Dot Product extension.
! .IP \fB+crypto\fR 4
  .IX Item "+crypto"
! The cryptographic instructions.  This also enables the Advanced SIMD and
! floating\-point instructions as well as the Dot Product extension.
! .IP \fB+nocrypto\fR 4
  .IX Item "+nocrypto"
  Disable the cryptographic extension.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point, Advanced SIMD and cryptographic instructions.
! .IP \fB+i8mm\fR 4
  .IX Item "+i8mm"
  8\-bit Integer Matrix Multiply instructions.
! This also enables Advanced SIMD and floating\-point instructions.
! .IP \fB+bf16\fR 4
  .IX Item "+bf16"
! Brain half\-precision floating\-point instructions.
! This also enables Advanced SIMD and floating\-point instructions.
  .RE
  .RS 4
  .RE
! .IP \fBarmv7\-r\fR 4
  .IX Item "armv7-r"
  .RS 4
  .PD 0
! .IP \fB+fp.sp\fR 4
  .IX Item "+fp.sp"
  .PD
! The single\-precision VFPv3 floating\-point instructions.  The extension
  \&\fB+vfpv3xd\fR can be used as an alias for this extension.
! .IP \fB+fp\fR 4
  .IX Item "+fp"
! The VFPv3 floating\-point instructions with 16 double\-precision registers.
  The extension +vfpv3\-d16 can be used as an alias for this extension.
! .IP \fB+vfpv3xd\-d16\-fp16\fR 4
  .IX Item "+vfpv3xd-d16-fp16"
! The single\-precision VFPv3 floating\-point instructions with 16 double\-precision
! registers and the half\-precision floating\-point conversion operations.
! .IP \fB+vfpv3\-d16\-fp16\fR 4
  .IX Item "+vfpv3-d16-fp16"
! The VFPv3 floating\-point instructions with 16 double\-precision
! registers and the half\-precision floating\-point conversion operations.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point extension.
! .IP \fB+idiv\fR 4
  .IX Item "+idiv"
! The ARM\-state integer division instructions.
! .IP \fB+noidiv\fR 4
  .IX Item "+noidiv"
! Disable the ARM\-state integer division extension.
  .RE
  .RS 4
  .RE
! .IP \fBarmv7e\-m\fR 4
  .IX Item "armv7e-m"
  .RS 4
  .PD 0
! .IP \fB+fp\fR 4
  .IX Item "+fp"
  .PD
! The single\-precision VFPv4 floating\-point instructions.
! .IP \fB+fpv5\fR 4
  .IX Item "+fpv5"
! The single\-precision FPv5 floating\-point instructions.
! .IP \fB+fp.dp\fR 4
  .IX Item "+fp.dp"
! The single\- and double\-precision FPv5 floating\-point instructions.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point extensions.
  .RE
  .RS 4
  .RE
! .IP \fBarmv8.1\-m.main\fR 4
  .IX Item "armv8.1-m.main"
  .RS 4
  .PD 0
! .IP \fB+dsp\fR 4
  .IX Item "+dsp"
  .PD
! The DSP instructions.
! .IP \fB+mve\fR 4
  .IX Item "+mve"
! The M\-Profile Vector Extension (MVE) integer instructions.
! .IP \fB+mve.fp\fR 4
  .IX Item "+mve.fp"
! The M\-Profile Vector Extension (MVE) integer and single precision
! floating\-point instructions.
! .IP \fB+fp\fR 4
  .IX Item "+fp"
! The single\-precision floating\-point instructions.
! .IP \fB+fp.dp\fR 4
  .IX Item "+fp.dp"
! The single\- and double\-precision floating\-point instructions.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point extension.
  .IP "\fB+cdecp0, +cdecp1, ... , +cdecp7\fR" 4
  .IX Item "+cdecp0, +cdecp1, ... , +cdecp7"
! Enable the Custom Datapath Extension (CDE) on selected coprocessors according
  to the numbers given in the options in the range 0 to 7.
! .IP \fB+pacbti\fR 4
  .IX Item "+pacbti"
  Enable the Pointer Authentication and Branch Target Identification Extension.
  .RE
  .RS 4
  .RE
! .IP \fBarmv8\-m.main\fR 4
  .IX Item "armv8-m.main"
  .RS 4
  .PD 0
! .IP \fB+dsp\fR 4
  .IX Item "+dsp"
  .PD
! The DSP instructions.
! .IP \fB+nodsp\fR 4
  .IX Item "+nodsp"
! Disable the DSP extension.
! .IP \fB+fp\fR 4
  .IX Item "+fp"
! The single\-precision floating\-point instructions.
! .IP \fB+fp.dp\fR 4
  .IX Item "+fp.dp"
! The single\- and double\-precision floating\-point instructions.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point extension.
  .IP "\fB+cdecp0, +cdecp1, ... , +cdecp7\fR" 4
  .IX Item "+cdecp0, +cdecp1, ... , +cdecp7"
! Enable the Custom Datapath Extension (CDE) on selected coprocessors according
  to the numbers given in the options in the range 0 to 7.
  .RE
  .RS 4
  .RE
! .IP \fBarmv8\-r\fR 4
  .IX Item "armv8-r"
  .RS 4
  .PD 0
! .IP \fB+crc\fR 4
  .IX Item "+crc"
  .PD
! The Cyclic Redundancy Check (CRC) instructions.
! .IP \fB+fp.sp\fR 4
  .IX Item "+fp.sp"
! The single\-precision FPv5 floating\-point instructions.
! .IP \fB+simd\fR 4
  .IX Item "+simd"
! The ARMv8\-A Advanced SIMD and floating\-point instructions.
! .IP \fB+crypto\fR 4
  .IX Item "+crypto"
  The cryptographic instructions.
! .IP \fB+nocrypto\fR 4
  .IX Item "+nocrypto"
  Disable the cryptographic instructions.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disable the floating\-point, Advanced SIMD and cryptographic instructions.
  .RE
  .RS 4
  .RE
  .RE
  .RS 4
  .Sp
! \&\fB\-march=native\fR causes the compiler to auto\-detect the architecture
  of the build computer.  At present, this feature is only supported on
! GNU/Linux, and not all architectures are recognized.  If the auto\-detect
  is unsuccessful the option has no effect.
  .Sp
  \&\fB\-march=unset\fR causes the compiler to ignore any
  \&\fB\-march=...\fR options that appear earlier on the command line
  and behave as if the option was never passed.  This is useful to avoid
! warnings about conflicting CPU and architecture options when the two
  produce different architecture specifications.
  .RE
! .IP \fB\-mtune=\fR\fIname\fR 4
  .IX Item "-mtune=name"
! This option specifies the name of the target ARM processor for
! which GCC should tune the performance of the code.
! For some ARM implementations better performance can be obtained by using
  this option.
  Permissible names are: \fBarm7tdmi\fR, \fBarm7tdmi\-s\fR, \fBarm710t\fR,
  \&\fBarm720t\fR, \fBarm740t\fR, \fBstrongarm\fR, \fBstrongarm110\fR,
*************** Permissible names are: \fBarm7tdmi\fR, \
*** 23344,23375 ****
  \&\fBfa606te\fR, \fBfa626te\fR, \fBfmp626\fR, \fBfa726te\fR, \fBstar\-mc1\fR,
  \&\fBxgene1\fR.
  .Sp
! Additionally, this option can specify that \s-1GCC\s0 should tune the performance
  of the code for a big.LITTLE system.  Permissible names are:
  \&\fBcortex\-a15.cortex\-a7\fR, \fBcortex\-a17.cortex\-a7\fR,
  \&\fBcortex\-a57.cortex\-a53\fR, \fBcortex\-a72.cortex\-a53\fR,
  \&\fBcortex\-a72.cortex\-a35\fR, \fBcortex\-a73.cortex\-a53\fR,
  \&\fBcortex\-a75.cortex\-a55\fR, \fBcortex\-a76.cortex\-a55\fR.
  .Sp
! \&\fB\-mtune=generic\-\fR\fIarch\fR specifies that \s-1GCC\s0 should tune the
  performance for a blend of processors within architecture \fIarch\fR.
  The aim is to generate code that run well on the current most popular
  processors, balancing between optimizations that benefit some CPUs in the
  range, and avoiding performance pitfalls of other CPUs.  The effects of
! this option may change in future \s-1GCC\s0 versions as \s-1CPU\s0 models come and go.
  .Sp
  \&\fB\-mtune\fR permits the same extension options as \fB\-mcpu\fR, but
  the extension options do not affect the tuning of the generated code.
  .Sp
! \&\fB\-mtune=native\fR causes the compiler to auto-detect the \s-1CPU\s0
  of the build computer.  At present, this feature is only supported on
! GNU/Linux, and not all architectures are recognized.  If the auto-detect is
  unsuccessful the option has no effect.
! .IP "\fB\-mcpu=\fR\fIname\fR[\fB+extension...\fR]" 4
  .IX Item "-mcpu=name[+extension...]"
! This specifies the name of the target \s-1ARM\s0 processor.  \s-1GCC\s0 uses this name
! to derive the name of the target \s-1ARM\s0 architecture (as if specified
! by \fB\-march\fR) and the \s-1ARM\s0 processor type for which to tune for
  performance (as if specified by \fB\-mtune\fR).  Where this option
  is used in conjunction with \fB\-march\fR or \fB\-mtune\fR,
  those options take precedence over the appropriate part of this option.
--- 23279,23310 ----
  \&\fBfa606te\fR, \fBfa626te\fR, \fBfmp626\fR, \fBfa726te\fR, \fBstar\-mc1\fR,
  \&\fBxgene1\fR.
  .Sp
! Additionally, this option can specify that GCC should tune the performance
  of the code for a big.LITTLE system.  Permissible names are:
  \&\fBcortex\-a15.cortex\-a7\fR, \fBcortex\-a17.cortex\-a7\fR,
  \&\fBcortex\-a57.cortex\-a53\fR, \fBcortex\-a72.cortex\-a53\fR,
  \&\fBcortex\-a72.cortex\-a35\fR, \fBcortex\-a73.cortex\-a53\fR,
  \&\fBcortex\-a75.cortex\-a55\fR, \fBcortex\-a76.cortex\-a55\fR.
  .Sp
! \&\fB\-mtune=generic\-\fR\fIarch\fR specifies that GCC should tune the
  performance for a blend of processors within architecture \fIarch\fR.
  The aim is to generate code that run well on the current most popular
  processors, balancing between optimizations that benefit some CPUs in the
  range, and avoiding performance pitfalls of other CPUs.  The effects of
! this option may change in future GCC versions as CPU models come and go.
  .Sp
  \&\fB\-mtune\fR permits the same extension options as \fB\-mcpu\fR, but
  the extension options do not affect the tuning of the generated code.
  .Sp
! \&\fB\-mtune=native\fR causes the compiler to auto\-detect the CPU
  of the build computer.  At present, this feature is only supported on
! GNU/Linux, and not all architectures are recognized.  If the auto\-detect is
  unsuccessful the option has no effect.
! .IP \fB\-mcpu=\fR\fIname\fR[\fB+extension...\fR] 4
  .IX Item "-mcpu=name[+extension...]"
! This specifies the name of the target ARM processor.  GCC uses this name
! to derive the name of the target ARM architecture (as if specified
! by \fB\-march\fR) and the ARM processor type for which to tune for
  performance (as if specified by \fB\-mtune\fR).  Where this option
  is used in conjunction with \fB\-march\fR or \fB\-mtune\fR,
  those options take precedence over the appropriate part of this option.
*************** Many of the supported CPUs implement opt
*** 23378,23396 ****
  extensions.  Where this is so the architectural extensions are
  normally enabled by default.  If implementations that lack the
  extension exist, then the extension syntax can be used to disable
! those extensions that have been omitted.  For floating-point and
! Advanced \s-1SIMD\s0 (Neon) instructions, the settings of the options
  \&\fB\-mfloat\-abi\fR and \fB\-mfpu\fR must also be considered:
! floating-point and Advanced \s-1SIMD\s0 instructions will only be used if
  \&\fB\-mfloat\-abi\fR is not set to \fBsoft\fR; and any setting of
  \&\fB\-mfpu\fR other than \fBauto\fR will override the available
! floating-point and \s-1SIMD\s0 extension instructions.
  .Sp
  For example, \fBcortex\-a9\fR can be found in three major
! configurations: integer only, with just a floating-point unit or with
! floating-point and Advanced \s-1SIMD.\s0  The default is to enable all the
  instructions, but the extensions \fB+nosimd\fR and \fB+nofp\fR can
! be used to disable just the \s-1SIMD\s0 or both the \s-1SIMD\s0 and floating-point
  instructions respectively.
  .Sp
  Permissible names for this option are the same as those for
--- 23313,23331 ----
  extensions.  Where this is so the architectural extensions are
  normally enabled by default.  If implementations that lack the
  extension exist, then the extension syntax can be used to disable
! those extensions that have been omitted.  For floating\-point and
! Advanced SIMD (Neon) instructions, the settings of the options
  \&\fB\-mfloat\-abi\fR and \fB\-mfpu\fR must also be considered:
! floating\-point and Advanced SIMD instructions will only be used if
  \&\fB\-mfloat\-abi\fR is not set to \fBsoft\fR; and any setting of
  \&\fB\-mfpu\fR other than \fBauto\fR will override the available
! floating\-point and SIMD extension instructions.
  .Sp
  For example, \fBcortex\-a9\fR can be found in three major
! configurations: integer only, with just a floating\-point unit or with
! floating\-point and Advanced SIMD.  The default is to enable all the
  instructions, but the extensions \fB+nosimd\fR and \fB+nofp\fR can
! be used to disable just the SIMD or both the SIMD and floating\-point
  instructions respectively.
  .Sp
  Permissible names for this option are the same as those for
*************** Permissible names for this option are th
*** 23398,23453 ****
  .Sp
  The following extension options are common to the listed CPUs:
  .RS 4
! .IP "\fB+nodsp\fR" 4
  .IX Item "+nodsp"
! Disable the \s-1DSP\s0 instructions on \fBcortex\-m33\fR, \fBcortex\-m35p\fR,
  \&\fBcortex\-m52\fR, \fBcortex\-m55\fR and \fBcortex\-m85\fR.
! Also disable the M\-Profile Vector Extension (\s-1MVE\s0) integer and
! single precision floating-point instructions on
  \&\fBcortex\-m52\fR, \fBcortex\-m55\fR and \fBcortex\-m85\fR.
! .IP "\fB+nopacbti\fR" 4
  .IX Item "+nopacbti"
  Disable the Pointer Authentication and Branch Target Identification Extension
  on \fBcortex\-m52\fR and \fBcortex\-m85\fR.
! .IP "\fB+nomve\fR" 4
  .IX Item "+nomve"
! Disable the M\-Profile Vector Extension (\s-1MVE\s0) integer and single precision
! floating-point instructions on \fBcortex\-m52\fR, \fBcortex\-m55\fR and
  \&\fBcortex\-m85\fR.
! .IP "\fB+nomve.fp\fR" 4
  .IX Item "+nomve.fp"
! Disable the M\-Profile Vector Extension (\s-1MVE\s0) single precision floating-point
  instructions on \fBcortex\-m52\fR, \fBcortex\-m55\fR and \fBcortex\-m85\fR.
  .IP "\fB+cdecp0, +cdecp1, ... , +cdecp7\fR" 4
  .IX Item "+cdecp0, +cdecp1, ... , +cdecp7"
! Enable the Custom Datapath Extension (\s-1CDE\s0) on selected coprocessors according
  to the numbers given in the options in the range 0 to 7 on \fBcortex\-m52\fR,
  \&\fBcortex\-m55\fR and \fBstar\-mc1\fR.
! .IP "\fB+nofp\fR" 4
  .IX Item "+nofp"
! Disables the floating-point instructions on \fBarm9e\fR,
  \&\fBarm946e\-s\fR, \fBarm966e\-s\fR, \fBarm968e\-s\fR, \fBarm10e\fR,
  \&\fBarm1020e\fR, \fBarm1022e\fR, \fBarm926ej\-s\fR,
  \&\fBarm1026ej\-s\fR, \fBcortex\-r5\fR, \fBcortex\-r7\fR, \fBcortex\-r8\fR,
  \&\fBcortex\-m4\fR, \fBcortex\-m7\fR, \fBcortex\-m33\fR, \fBcortex\-m35p\fR,
  \&\fBcortex\-m52\fR, \fBcortex\-m55\fR and \fBcortex\-m85\fR.
! Disables the floating-point and \s-1SIMD\s0 instructions on
  \&\fBgeneric\-armv7\-a\fR, \fBcortex\-a5\fR, \fBcortex\-a7\fR,
  \&\fBcortex\-a8\fR, \fBcortex\-a9\fR, \fBcortex\-a12\fR,
  \&\fBcortex\-a15\fR, \fBcortex\-a17\fR, \fBcortex\-a15.cortex\-a7\fR,
  \&\fBcortex\-a17.cortex\-a7\fR, \fBcortex\-a32\fR, \fBcortex\-a35\fR,
  \&\fBcortex\-a53\fR and \fBcortex\-a55\fR.
! .IP "\fB+nofp.dp\fR" 4
  .IX Item "+nofp.dp"
! Disables the double-precision component of the floating-point instructions
  on \fBcortex\-r5\fR, \fBcortex\-r7\fR, \fBcortex\-r8\fR, \fBcortex\-r52\fR,
  \&\fBcortex\-r52plus\fR and \fBcortex\-m7\fR.
! .IP "\fB+nosimd\fR" 4
  .IX Item "+nosimd"
! Disables the \s-1SIMD\s0 (but not floating-point) instructions on
  \&\fBgeneric\-armv7\-a\fR, \fBcortex\-a5\fR, \fBcortex\-a7\fR
  and \fBcortex\-a9\fR.
! .IP "\fB+crypto\fR" 4
  .IX Item "+crypto"
  Enables the cryptographic instructions on \fBcortex\-a32\fR,
  \&\fBcortex\-a35\fR, \fBcortex\-a53\fR, \fBcortex\-a55\fR, \fBcortex\-a57\fR,
--- 23333,23388 ----
  .Sp
  The following extension options are common to the listed CPUs:
  .RS 4
! .IP \fB+nodsp\fR 4
  .IX Item "+nodsp"
! Disable the DSP instructions on \fBcortex\-m33\fR, \fBcortex\-m35p\fR,
  \&\fBcortex\-m52\fR, \fBcortex\-m55\fR and \fBcortex\-m85\fR.
! Also disable the M\-Profile Vector Extension (MVE) integer and
! single precision floating\-point instructions on
  \&\fBcortex\-m52\fR, \fBcortex\-m55\fR and \fBcortex\-m85\fR.
! .IP \fB+nopacbti\fR 4
  .IX Item "+nopacbti"
  Disable the Pointer Authentication and Branch Target Identification Extension
  on \fBcortex\-m52\fR and \fBcortex\-m85\fR.
! .IP \fB+nomve\fR 4
  .IX Item "+nomve"
! Disable the M\-Profile Vector Extension (MVE) integer and single precision
! floating\-point instructions on \fBcortex\-m52\fR, \fBcortex\-m55\fR and
  \&\fBcortex\-m85\fR.
! .IP \fB+nomve.fp\fR 4
  .IX Item "+nomve.fp"
! Disable the M\-Profile Vector Extension (MVE) single precision floating\-point
  instructions on \fBcortex\-m52\fR, \fBcortex\-m55\fR and \fBcortex\-m85\fR.
  .IP "\fB+cdecp0, +cdecp1, ... , +cdecp7\fR" 4
  .IX Item "+cdecp0, +cdecp1, ... , +cdecp7"
! Enable the Custom Datapath Extension (CDE) on selected coprocessors according
  to the numbers given in the options in the range 0 to 7 on \fBcortex\-m52\fR,
  \&\fBcortex\-m55\fR and \fBstar\-mc1\fR.
! .IP \fB+nofp\fR 4
  .IX Item "+nofp"
! Disables the floating\-point instructions on \fBarm9e\fR,
  \&\fBarm946e\-s\fR, \fBarm966e\-s\fR, \fBarm968e\-s\fR, \fBarm10e\fR,
  \&\fBarm1020e\fR, \fBarm1022e\fR, \fBarm926ej\-s\fR,
  \&\fBarm1026ej\-s\fR, \fBcortex\-r5\fR, \fBcortex\-r7\fR, \fBcortex\-r8\fR,
  \&\fBcortex\-m4\fR, \fBcortex\-m7\fR, \fBcortex\-m33\fR, \fBcortex\-m35p\fR,
  \&\fBcortex\-m52\fR, \fBcortex\-m55\fR and \fBcortex\-m85\fR.
! Disables the floating\-point and SIMD instructions on
  \&\fBgeneric\-armv7\-a\fR, \fBcortex\-a5\fR, \fBcortex\-a7\fR,
  \&\fBcortex\-a8\fR, \fBcortex\-a9\fR, \fBcortex\-a12\fR,
  \&\fBcortex\-a15\fR, \fBcortex\-a17\fR, \fBcortex\-a15.cortex\-a7\fR,
  \&\fBcortex\-a17.cortex\-a7\fR, \fBcortex\-a32\fR, \fBcortex\-a35\fR,
  \&\fBcortex\-a53\fR and \fBcortex\-a55\fR.
! .IP \fB+nofp.dp\fR 4
  .IX Item "+nofp.dp"
! Disables the double\-precision component of the floating\-point instructions
  on \fBcortex\-r5\fR, \fBcortex\-r7\fR, \fBcortex\-r8\fR, \fBcortex\-r52\fR,
  \&\fBcortex\-r52plus\fR and \fBcortex\-m7\fR.
! .IP \fB+nosimd\fR 4
  .IX Item "+nosimd"
! Disables the SIMD (but not floating\-point) instructions on
  \&\fBgeneric\-armv7\-a\fR, \fBcortex\-a5\fR, \fBcortex\-a7\fR
  and \fBcortex\-a9\fR.
! .IP \fB+crypto\fR 4
  .IX Item "+crypto"
  Enables the cryptographic instructions on \fBcortex\-a32\fR,
  \&\fBcortex\-a35\fR, \fBcortex\-a53\fR, \fBcortex\-a55\fR, \fBcortex\-a57\fR,
*************** Enables the cryptographic instructions o
*** 23459,23465 ****
  .RS 4
  .Sp
  Additionally the \fBgeneric\-armv7\-a\fR pseudo target defaults to
! VFPv3 with 16 double-precision registers.  It supports the following
  extension options: \fBmp\fR, \fBsec\fR, \fBvfpv3\-d16\fR,
  \&\fBvfpv3\fR, \fBvfpv3\-d16\-fp16\fR, \fBvfpv3\-fp16\fR,
  \&\fBvfpv4\-d16\fR, \fBvfpv4\fR, \fBneon\fR, \fBneon\-vfpv3\fR,
--- 23394,23400 ----
  .RS 4
  .Sp
  Additionally the \fBgeneric\-armv7\-a\fR pseudo target defaults to
! VFPv3 with 16 double\-precision registers.  It supports the following
  extension options: \fBmp\fR, \fBsec\fR, \fBvfpv3\-d16\fR,
  \&\fBvfpv3\fR, \fBvfpv3\-d16\-fp16\fR, \fBvfpv3\-fp16\fR,
  \&\fBvfpv4\-d16\fR, \fBvfpv4\fR, \fBneon\fR, \fBneon\-vfpv3\fR,
*************** the extensions to \fB\-march=armv7\-a\fR
*** 23470,23489 ****
  equivalent to \fB\-march=\fR\fIarch\fR \fB\-mtune=generic\-\fR\fIarch\fR.
  See \fB\-mtune\fR for more information.
  .Sp
! \&\fB\-mcpu=native\fR causes the compiler to auto-detect the \s-1CPU\s0
  of the build computer.  At present, this feature is only supported on
! GNU/Linux, and not all architectures are recognized.  If the auto-detect
  is unsuccessful the option has no effect.
  .Sp
  \&\fB\-mcpu=unset\fR causes the compiler to ignore any
  \&\fB\-mcpu=...\fR options that appear earlier on the command line
  and behave as if the option was never passed.  This is useful to avoid
! warnings about conflicting \s-1CPU\s0 and architecture options when the two
  produce different architecture specifications.
  .RE
! .IP "\fB\-mfpu=\fR\fIname\fR" 4
  .IX Item "-mfpu=name"
! This specifies what floating-point hardware (or hardware emulation) is
  available on the target.  Permissible names are: \fBauto\fR, \fBvfpv2\fR,
  \&\fBvfpv3\fR,
  \&\fBvfpv3\-fp16\fR, \fBvfpv3\-d16\fR, \fBvfpv3\-d16\-fp16\fR, \fBvfpv3xd\fR,
--- 23405,23424 ----
  equivalent to \fB\-march=\fR\fIarch\fR \fB\-mtune=generic\-\fR\fIarch\fR.
  See \fB\-mtune\fR for more information.
  .Sp
! \&\fB\-mcpu=native\fR causes the compiler to auto\-detect the CPU
  of the build computer.  At present, this feature is only supported on
! GNU/Linux, and not all architectures are recognized.  If the auto\-detect
  is unsuccessful the option has no effect.
  .Sp
  \&\fB\-mcpu=unset\fR causes the compiler to ignore any
  \&\fB\-mcpu=...\fR options that appear earlier on the command line
  and behave as if the option was never passed.  This is useful to avoid
! warnings about conflicting CPU and architecture options when the two
  produce different architecture specifications.
  .RE
! .IP \fB\-mfpu=\fR\fIname\fR 4
  .IX Item "-mfpu=name"
! This specifies what floating\-point hardware (or hardware emulation) is
  available on the target.  Permissible names are: \fBauto\fR, \fBvfpv2\fR,
  \&\fBvfpv3\fR,
  \&\fBvfpv3\-fp16\fR, \fBvfpv3\-d16\fR, \fBvfpv3\-d16\-fp16\fR, \fBvfpv3xd\fR,
*************** Note that \fBneon\fR is an alias for \fB
*** 23495,23525 ****
  is an alias for \fBvfpv2\fR.
  .Sp
  The setting \fBauto\fR is the default and is special.  It causes the
! compiler to select the floating-point and Advanced \s-1SIMD\s0 instructions
  based on the settings of \fB\-mcpu\fR and \fB\-march\fR.
  .Sp
! If the selected floating-point hardware includes the \s-1NEON\s0 extension
! (e.g. \fB\-mfpu=neon\fR), note that floating-point
! operations are not generated by \s-1GCC\s0's auto-vectorization pass unless
  \&\fB\-funsafe\-math\-optimizations\fR is also specified.  This is
! because \s-1NEON\s0 hardware does not fully implement the \s-1IEEE 754\s0 standard for
! floating-point arithmetic (in particular denormal values are treated as
! zero), so the use of \s-1NEON\s0 instructions may lead to a loss of precision.
  .Sp
! You can also set the fpu name at function level by using the \f(CW\*(C`target("fpu=")\*(C'\fR function attributes or pragmas.
! .IP "\fB\-mfp16\-format=\fR\fIname\fR" 4
  .IX Item "-mfp16-format=name"
! Specify the format of the \f(CW\*(C`_\|_fp16\*(C'\fR half-precision floating-point type.
  Permissible names are \fBnone\fR, \fBieee\fR, and \fBalternative\fR;
  the default is \fBnone\fR, in which case the \f(CW\*(C`_\|_fp16\*(C'\fR type is not
  defined.
! .IP "\fB\-mstructure\-size\-boundary=\fR\fIn\fR" 4
  .IX Item "-mstructure-size-boundary=n"
  The sizes of all structures and unions are rounded up to a multiple
  of the number of bits set by this option.  Permissible values are 8, 32
! and 64.  The default value varies for different toolchains.  For the \s-1COFF\s0
  targeted toolchain the default value is 8.  A value of 64 is only allowed
! if the underlying \s-1ABI\s0 supports it.
  .Sp
  Specifying a larger number can produce faster, more efficient code, but
  can also increase the size of the program.  Different values are potentially
--- 23430,23460 ----
  is an alias for \fBvfpv2\fR.
  .Sp
  The setting \fBauto\fR is the default and is special.  It causes the
! compiler to select the floating\-point and Advanced SIMD instructions
  based on the settings of \fB\-mcpu\fR and \fB\-march\fR.
  .Sp
! If the selected floating\-point hardware includes the NEON extension
! (e.g. \fB\-mfpu=neon\fR), note that floating\-point
! operations are not generated by GCC\*(Aqs auto\-vectorization pass unless
  \&\fB\-funsafe\-math\-optimizations\fR is also specified.  This is
! because NEON hardware does not fully implement the IEEE 754 standard for
! floating\-point arithmetic (in particular denormal values are treated as
! zero), so the use of NEON instructions may lead to a loss of precision.
  .Sp
! You can also set the fpu name at function level by using the \f(CWtarget("fpu=")\fR function attributes or pragmas.
! .IP \fB\-mfp16\-format=\fR\fIname\fR 4
  .IX Item "-mfp16-format=name"
! Specify the format of the \f(CW\*(C`_\|_fp16\*(C'\fR half\-precision floating\-point type.
  Permissible names are \fBnone\fR, \fBieee\fR, and \fBalternative\fR;
  the default is \fBnone\fR, in which case the \f(CW\*(C`_\|_fp16\*(C'\fR type is not
  defined.
! .IP \fB\-mstructure\-size\-boundary=\fR\fIn\fR 4
  .IX Item "-mstructure-size-boundary=n"
  The sizes of all structures and unions are rounded up to a multiple
  of the number of bits set by this option.  Permissible values are 8, 32
! and 64.  The default value varies for different toolchains.  For the COFF
  targeted toolchain the default value is 8.  A value of 64 is only allowed
! if the underlying ABI supports it.
  .Sp
  Specifying a larger number can produce faster, more efficient code, but
  can also increase the size of the program.  Different values are potentially
*************** work with code or libraries compiled wit
*** 23528,23548 ****
  information using structures or unions.
  .Sp
  This option is deprecated.
! .IP "\fB\-mabort\-on\-noreturn\fR" 4
  .IX Item "-mabort-on-noreturn"
  Generate a call to the function \f(CW\*(C`abort\*(C'\fR at the end of a
  \&\f(CW\*(C`noreturn\*(C'\fR function.  It is executed if the function tries to
  return.
! .IP "\fB\-mlong\-calls\fR" 4
  .IX Item "-mlong-calls"
  .PD 0
! .IP "\fB\-mno\-long\-calls\fR" 4
  .IX Item "-mno-long-calls"
  .PD
  Tells the compiler to perform function calls by first loading the
  address of the function into a register and then performing a subroutine
  call on this register.  This switch is needed if the target function
! lies outside of the 64\-megabyte addressing range of the offset-based
  version of subroutine call instruction.
  .Sp
  Even if this switch is enabled, not all function calls are turned
--- 23463,23483 ----
  information using structures or unions.
  .Sp
  This option is deprecated.
! .IP \fB\-mabort\-on\-noreturn\fR 4
  .IX Item "-mabort-on-noreturn"
  Generate a call to the function \f(CW\*(C`abort\*(C'\fR at the end of a
  \&\f(CW\*(C`noreturn\*(C'\fR function.  It is executed if the function tries to
  return.
! .IP \fB\-mlong\-calls\fR 4
  .IX Item "-mlong-calls"
  .PD 0
! .IP \fB\-mno\-long\-calls\fR 4
  .IX Item "-mno-long-calls"
  .PD
  Tells the compiler to perform function calls by first loading the
  address of the function into a register and then performing a subroutine
  call on this register.  This switch is needed if the target function
! lies outside of the 64\-megabyte addressing range of the offset\-based
  version of subroutine call instruction.
  .Sp
  Even if this switch is enabled, not all function calls are turned
*************** placing the function calls within the sc
*** 23562,23589 ****
  long_calls_off\*(C'\fR directive.  Note these switches have no effect on how
  the compiler generates code to handle function calls via function
  pointers.
! .IP "\fB\-msingle\-pic\-base\fR" 4
  .IX Item "-msingle-pic-base"
! Treat the register used for \s-1PIC\s0 addressing as read-only, rather than
  loading it in the prologue for each function.  The runtime system is
  responsible for initializing this register with an appropriate value
  before execution begins.
! .IP "\fB\-mpic\-register=\fR\fIreg\fR" 4
  .IX Item "-mpic-register=reg"
! Specify the register to be used for \s-1PIC\s0 addressing.
! For standard \s-1PIC\s0 base case, the default is any suitable register
! determined by compiler.  For single \s-1PIC\s0 base case, the default is
! \&\fBR9\fR if target is \s-1EABI\s0 based or stack-checking is enabled,
  otherwise the default is \fBR10\fR.
! .IP "\fB\-mpic\-data\-is\-text\-relative\fR" 4
  .IX Item "-mpic-data-is-text-relative"
  Assume that the displacement between the text and data segments is fixed
! at static link time.  This permits using PC-relative addressing
  operations to access data known to be in the data segment.  For
! non-VxWorks \s-1RTP\s0 targets, this option is enabled by default.  When
  disabled on such targets, it will enable \fB\-msingle\-pic\-base\fR by
  default.
! .IP "\fB\-mpoke\-function\-name\fR" 4
  .IX Item "-mpoke-function-name"
  Write the name of each function into the text section, directly
  preceding the function prologue.  The generated code is similar to this:
--- 23497,23524 ----
  long_calls_off\*(C'\fR directive.  Note these switches have no effect on how
  the compiler generates code to handle function calls via function
  pointers.
! .IP \fB\-msingle\-pic\-base\fR 4
  .IX Item "-msingle-pic-base"
! Treat the register used for PIC addressing as read\-only, rather than
  loading it in the prologue for each function.  The runtime system is
  responsible for initializing this register with an appropriate value
  before execution begins.
! .IP \fB\-mpic\-register=\fR\fIreg\fR 4
  .IX Item "-mpic-register=reg"
! Specify the register to be used for PIC addressing.
! For standard PIC base case, the default is any suitable register
! determined by compiler.  For single PIC base case, the default is
! \&\fBR9\fR if target is EABI based or stack\-checking is enabled,
  otherwise the default is \fBR10\fR.
! .IP \fB\-mpic\-data\-is\-text\-relative\fR 4
  .IX Item "-mpic-data-is-text-relative"
  Assume that the displacement between the text and data segments is fixed
! at static link time.  This permits using PC\-relative addressing
  operations to access data known to be in the data segment.  For
! non\-VxWorks RTP targets, this option is enabled by default.  When
  disabled on such targets, it will enable \fB\-msingle\-pic\-base\fR by
  default.
! .IP \fB\-mpoke\-function\-name\fR 4
  .IX Item "-mpoke-function-name"
  Write the name of each function into the text section, directly
  preceding the function prologue.  The generated code is similar to this:
*************** When performing a stack backtrace, code
*** 23605,23706 ****
  location \f(CW\*(C`pc \- 12\*(C'\fR and the top 8 bits are set, then we know that
  there is a function name embedded immediately preceding this location
  and has length \f(CW\*(C`((pc[\-3]) & 0xff000000)\*(C'\fR.
! .IP "\fB\-mthumb\fR" 4
  .IX Item "-mthumb"
  .PD 0
! .IP "\fB\-marm\fR" 4
  .IX Item "-marm"
  .PD
! Select between generating code that executes in \s-1ARM\s0 and Thumb
  states.  The default for most configurations is to generate code
! that executes in \s-1ARM\s0 state, but the default can be changed by
! configuring \s-1GCC\s0 with the \fB\-\-with\-mode=\fR\fIstate\fR
  configure option.
  .Sp
! You can also override the \s-1ARM\s0 and Thumb mode for each function
! by using the \f(CW\*(C`target("thumb")\*(C'\fR and \f(CW\*(C`target("arm")\*(C'\fR function attributes or pragmas.
! .IP "\fB\-mflip\-thumb\fR" 4
  .IX Item "-mflip-thumb"
  Switch ARM/Thumb modes on alternating functions.
  This option is provided for regression testing of mixed Thumb/ARM code
  generation, and is not intended for ordinary use in compiling code.
! .IP "\fB\-mtpcs\-frame\fR" 4
  .IX Item "-mtpcs-frame"
  Generate a stack frame that is compliant with the Thumb Procedure Call
! Standard for all non-leaf functions.  (A leaf function is one that does
  not call any other functions.)  The default is \fB\-mno\-tpcs\-frame\fR.
! .IP "\fB\-mtpcs\-leaf\-frame\fR" 4
  .IX Item "-mtpcs-leaf-frame"
  Generate a stack frame that is compliant with the Thumb Procedure Call
  Standard for all leaf functions.  (A leaf function is one that does
  not call any other functions.)  The default is \fB\-mno\-apcs\-leaf\-frame\fR.
! .IP "\fB\-mcallee\-super\-interworking\fR" 4
  .IX Item "-mcallee-super-interworking"
! Gives all externally visible functions in the file being compiled an \s-1ARM\s0
  instruction set header which switches to Thumb mode before executing the
  rest of the function.  This allows these functions to be called from
! non-interworking code.  This option is not valid in \s-1AAPCS\s0 configurations
  because interworking is enabled by default.
! .IP "\fB\-mcaller\-super\-interworking\fR" 4
  .IX Item "-mcaller-super-interworking"
  Allows calls via function pointers (including virtual functions) to
  execute correctly regardless of whether the target code has been
  compiled for interworking or not.  There is a small overhead in the cost
  of executing a function pointer if this option is enabled.  This option
! is not valid in \s-1AAPCS\s0 configurations because interworking is enabled
  by default.
! .IP "\fB\-mtp=\fR\fIname\fR" 4
  .IX Item "-mtp=name"
  Specify the access model for the thread local storage pointer.  The model
  \&\fBsoft\fR generates calls to \f(CW\*(C`_\|_aeabi_read_tp\*(C'\fR.  Other accepted
  models are \fBtpidrurw\fR, \fBtpidruro\fR and \fBtpidrprw\fR which fetch
  the thread pointer from the corresponding system register directly
  (supported from the arm6k architecture and later).  These system registers
! are accessed through the \s-1CP15\s0 co-processor interface and the argument
  \&\fBcp15\fR is also accepted as a convenience alias of \fBtpidruro\fR.
  The argument \fBauto\fR uses the best available method for the selected
  processor.  The default setting is \fBauto\fR.
! .IP "\fB\-mtls\-dialect=\fR\fIdialect\fR" 4
  .IX Item "-mtls-dialect=dialect"
  Specify the dialect to use for accessing thread local storage.  Two
  \&\fIdialect\fRs are supported\-\-\-\fBgnu\fR and \fBgnu2\fR.  The
! \&\fBgnu\fR dialect selects the original \s-1GNU\s0 scheme for supporting
! local and global dynamic \s-1TLS\s0 models.  The \fBgnu2\fR dialect
! selects the \s-1GNU\s0 descriptor scheme, which provides better performance
! for shared libraries.  The \s-1GNU\s0 descriptor scheme is compatible with
  the original scheme, but does require new assembler, linker and
! library support.  Initial and local exec \s-1TLS\s0 models are unaffected by
  this option and always use the original scheme.
! .IP "\fB\-mword\-relocations\fR" 4
  .IX Item "-mword-relocations"
! Only generate absolute relocations on word-sized values (i.e. R_ARM_ABS32).
  This is enabled by default on targets (uClinux, SymbianOS) where the runtime
  loader imposes this restriction, and when \fB\-fpic\fR or \fB\-fPIC\fR
  is specified. This option conflicts with \fB\-mslow\-flash\-data\fR.
! .IP "\fB\-mfix\-cortex\-m3\-ldrd\fR" 4
  .IX Item "-mfix-cortex-m3-ldrd"
  Some Cortex\-M3 cores can cause data corruption when \f(CW\*(C`ldrd\*(C'\fR instructions
  with overlapping destination and base registers are used.  This option avoids
  generating these instructions.  This option is enabled by default when
  \&\fB\-mcpu=cortex\-m3\fR is specified.
! .IP "\fB\-mfix\-cortex\-a57\-aes\-1742098\fR" 4
  .IX Item "-mfix-cortex-a57-aes-1742098"
  .PD 0
! .IP "\fB\-mno\-fix\-cortex\-a57\-aes\-1742098\fR" 4
  .IX Item "-mno-fix-cortex-a57-aes-1742098"
! .IP "\fB\-mfix\-cortex\-a72\-aes\-1655431\fR" 4
  .IX Item "-mfix-cortex-a72-aes-1655431"
! .IP "\fB\-mno\-fix\-cortex\-a72\-aes\-1655431\fR" 4
  .IX Item "-mno-fix-cortex-a72-aes-1655431"
  .PD
  Enable (disable) mitigation for an erratum on Cortex\-A57 and
! Cortex\-A72 that affects the \s-1AES\s0 cryptographic instructions.  This
  option is enabled by default when either \fB\-mcpu=cortex\-a57\fR or
  \&\fB\-mcpu=cortex\-a72\fR is specified.
! .IP "\fB\-munaligned\-access\fR" 4
  .IX Item "-munaligned-access"
  .PD 0
! .IP "\fB\-mno\-unaligned\-access\fR" 4
  .IX Item "-mno-unaligned-access"
  .PD
  Enables (or disables) reading and writing of 16\- and 32\- bit values
--- 23540,23641 ----
  location \f(CW\*(C`pc \- 12\*(C'\fR and the top 8 bits are set, then we know that
  there is a function name embedded immediately preceding this location
  and has length \f(CW\*(C`((pc[\-3]) & 0xff000000)\*(C'\fR.
! .IP \fB\-mthumb\fR 4
  .IX Item "-mthumb"
  .PD 0
! .IP \fB\-marm\fR 4
  .IX Item "-marm"
  .PD
! Select between generating code that executes in ARM and Thumb
  states.  The default for most configurations is to generate code
! that executes in ARM state, but the default can be changed by
! configuring GCC with the \fB\-\-with\-mode=\fR\fIstate\fR
  configure option.
  .Sp
! You can also override the ARM and Thumb mode for each function
! by using the \f(CWtarget("thumb")\fR and \f(CWtarget("arm")\fR function attributes or pragmas.
! .IP \fB\-mflip\-thumb\fR 4
  .IX Item "-mflip-thumb"
  Switch ARM/Thumb modes on alternating functions.
  This option is provided for regression testing of mixed Thumb/ARM code
  generation, and is not intended for ordinary use in compiling code.
! .IP \fB\-mtpcs\-frame\fR 4
  .IX Item "-mtpcs-frame"
  Generate a stack frame that is compliant with the Thumb Procedure Call
! Standard for all non\-leaf functions.  (A leaf function is one that does
  not call any other functions.)  The default is \fB\-mno\-tpcs\-frame\fR.
! .IP \fB\-mtpcs\-leaf\-frame\fR 4
  .IX Item "-mtpcs-leaf-frame"
  Generate a stack frame that is compliant with the Thumb Procedure Call
  Standard for all leaf functions.  (A leaf function is one that does
  not call any other functions.)  The default is \fB\-mno\-apcs\-leaf\-frame\fR.
! .IP \fB\-mcallee\-super\-interworking\fR 4
  .IX Item "-mcallee-super-interworking"
! Gives all externally visible functions in the file being compiled an ARM
  instruction set header which switches to Thumb mode before executing the
  rest of the function.  This allows these functions to be called from
! non\-interworking code.  This option is not valid in AAPCS configurations
  because interworking is enabled by default.
! .IP \fB\-mcaller\-super\-interworking\fR 4
  .IX Item "-mcaller-super-interworking"
  Allows calls via function pointers (including virtual functions) to
  execute correctly regardless of whether the target code has been
  compiled for interworking or not.  There is a small overhead in the cost
  of executing a function pointer if this option is enabled.  This option
! is not valid in AAPCS configurations because interworking is enabled
  by default.
! .IP \fB\-mtp=\fR\fIname\fR 4
  .IX Item "-mtp=name"
  Specify the access model for the thread local storage pointer.  The model
  \&\fBsoft\fR generates calls to \f(CW\*(C`_\|_aeabi_read_tp\*(C'\fR.  Other accepted
  models are \fBtpidrurw\fR, \fBtpidruro\fR and \fBtpidrprw\fR which fetch
  the thread pointer from the corresponding system register directly
  (supported from the arm6k architecture and later).  These system registers
! are accessed through the CP15 co\-processor interface and the argument
  \&\fBcp15\fR is also accepted as a convenience alias of \fBtpidruro\fR.
  The argument \fBauto\fR uses the best available method for the selected
  processor.  The default setting is \fBauto\fR.
! .IP \fB\-mtls\-dialect=\fR\fIdialect\fR 4
  .IX Item "-mtls-dialect=dialect"
  Specify the dialect to use for accessing thread local storage.  Two
  \&\fIdialect\fRs are supported\-\-\-\fBgnu\fR and \fBgnu2\fR.  The
! \&\fBgnu\fR dialect selects the original GNU scheme for supporting
! local and global dynamic TLS models.  The \fBgnu2\fR dialect
! selects the GNU descriptor scheme, which provides better performance
! for shared libraries.  The GNU descriptor scheme is compatible with
  the original scheme, but does require new assembler, linker and
! library support.  Initial and local exec TLS models are unaffected by
  this option and always use the original scheme.
! .IP \fB\-mword\-relocations\fR 4
  .IX Item "-mword-relocations"
! Only generate absolute relocations on word\-sized values (i.e. R_ARM_ABS32).
  This is enabled by default on targets (uClinux, SymbianOS) where the runtime
  loader imposes this restriction, and when \fB\-fpic\fR or \fB\-fPIC\fR
  is specified. This option conflicts with \fB\-mslow\-flash\-data\fR.
! .IP \fB\-mfix\-cortex\-m3\-ldrd\fR 4
  .IX Item "-mfix-cortex-m3-ldrd"
  Some Cortex\-M3 cores can cause data corruption when \f(CW\*(C`ldrd\*(C'\fR instructions
  with overlapping destination and base registers are used.  This option avoids
  generating these instructions.  This option is enabled by default when
  \&\fB\-mcpu=cortex\-m3\fR is specified.
! .IP \fB\-mfix\-cortex\-a57\-aes\-1742098\fR 4
  .IX Item "-mfix-cortex-a57-aes-1742098"
  .PD 0
! .IP \fB\-mno\-fix\-cortex\-a57\-aes\-1742098\fR 4
  .IX Item "-mno-fix-cortex-a57-aes-1742098"
! .IP \fB\-mfix\-cortex\-a72\-aes\-1655431\fR 4
  .IX Item "-mfix-cortex-a72-aes-1655431"
! .IP \fB\-mno\-fix\-cortex\-a72\-aes\-1655431\fR 4
  .IX Item "-mno-fix-cortex-a72-aes-1655431"
  .PD
  Enable (disable) mitigation for an erratum on Cortex\-A57 and
! Cortex\-A72 that affects the AES cryptographic instructions.  This
  option is enabled by default when either \fB\-mcpu=cortex\-a57\fR or
  \&\fB\-mcpu=cortex\-a72\fR is specified.
! .IP \fB\-munaligned\-access\fR 4
  .IX Item "-munaligned-access"
  .PD 0
! .IP \fB\-mno\-unaligned\-access\fR 4
  .IX Item "-mno-unaligned-access"
  .PD
  Enables (or disables) reading and writing of 16\- and 32\- bit values
*************** ARMv8\-M Baseline architectures, and ena
*** 23710,23802 ****
  architectures.  If unaligned access is not enabled then words in packed
  data structures are accessed a byte at a time.
  .Sp
! The \s-1ARM\s0 attribute \f(CW\*(C`Tag_CPU_unaligned_access\*(C'\fR is set in the
  generated object file to either true or false, depending upon the
  setting of this option.  If unaligned access is enabled then the
  preprocessor symbol \f(CW\*(C`_\|_ARM_FEATURE_UNALIGNED\*(C'\fR is also
  defined.
! .IP "\fB\-mneon\-for\-64bits\fR" 4
  .IX Item "-mneon-for-64bits"
  This option is deprecated and has no effect.
! .IP "\fB\-mslow\-flash\-data\fR" 4
  .IX Item "-mslow-flash-data"
  Assume loading data from flash is slower than fetching instruction.
  Therefore literal load is minimized for better performance.
  This option is only supported when compiling for ARMv7 M\-profile and
  off by default. It conflicts with \fB\-mword\-relocations\fR.
! .IP "\fB\-masm\-syntax\-unified\fR" 4
  .IX Item "-masm-syntax-unified"
  Assume inline assembler is using unified asm syntax.  The default is
  currently off which implies divided syntax.  This option has no impact
! on Thumb2. However, this may change in future releases of \s-1GCC.\s0
  Divided syntax should be considered deprecated.
! .IP "\fB\-mrestrict\-it\fR" 4
  .IX Item "-mrestrict-it"
! Restricts generation of \s-1IT\s0 blocks to conform to the rules of ARMv8\-A.
! \&\s-1IT\s0 blocks can only contain a single 16\-bit instruction from a select
  set of instructions. This option is on by default for ARMv8\-A Thumb mode.
! .IP "\fB\-mprint\-tune\-info\fR" 4
  .IX Item "-mprint-tune-info"
! Print \s-1CPU\s0 tuning information as comment in assembler file.  This is
  an option used only for regression testing of the compiler and not
  intended for ordinary use in compiling code.  This option is disabled
  by default.
! .IP "\fB\-mverbose\-cost\-dump\fR" 4
  .IX Item "-mverbose-cost-dump"
  Enable verbose cost model dumping in the debug dump files.  This option is
  provided for use in debugging the compiler.
! .IP "\fB\-mpure\-code\fR" 4
  .IX Item "-mpure-code"
  Do not allow constant data to be placed in code sections.
! Additionally, when compiling for \s-1ELF\s0 object format give all text sections the
! \&\s-1ELF\s0 processor-specific section attribute \f(CW\*(C`SHF_ARM_PURECODE\*(C'\fR.  This option
! is only available when generating non-pic code for M\-profile targets.
! .IP "\fB\-mcmse\fR" 4
  .IX Item "-mcmse"
! Generate secure code as per the \*(L"ARMv8\-M Security Extensions: Requirements on
! Development Tools Engineering Specification\*(R", which can be found on
  <\fBhttps://developer.arm.com/documentation/ecm0359818/latest/\fR>.
! .IP "\fB\-mfix\-cmse\-cve\-2021\-35465\fR" 4
  .IX Item "-mfix-cmse-cve-2021-35465"
  Mitigate against a potential security issue with the \f(CW\*(C`VLLDM\*(C'\fR instruction
! in some M\-profile devices when using \s-1CMSE\s0 (\s-1CVE\-2021\-365465\s0).  This option is
  enabled by default when the option \fB\-mcpu=\fR is used with
  \&\f(CW\*(C`cortex\-m33\*(C'\fR, \f(CW\*(C`cortex\-m35p\*(C'\fR, \f(CW\*(C`cortex\-m52\*(C'\fR, \f(CW\*(C`cortex\-m55\*(C'\fR,
  \&\f(CW\*(C`cortex\-m85\*(C'\fR or \f(CW\*(C`star\-mc1\*(C'\fR. The option \fB\-mno\-fix\-cmse\-cve\-2021\-35465\fR
  can be used to disable the mitigation.
! .IP "\fB\-mstack\-protector\-guard=\fR\fIguard\fR" 4
  .IX Item "-mstack-protector-guard=guard"
  .PD 0
! .IP "\fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR" 4
  .IX Item "-mstack-protector-guard-offset=offset"
  .PD
  Generate stack protection code using canary at \fIguard\fR.  Supported
  locations are \fBglobal\fR for a global canary or \fBtls\fR for a
! canary accessible via the \s-1TLS\s0 register. The option
  \&\fB\-mstack\-protector\-guard\-offset=\fR is for use with
! \&\fB\-fstack\-protector\-guard=tls\fR and not for use in user-land code.
! .IP "\fB\-mfdpic\fR" 4
  .IX Item "-mfdpic"
  .PD 0
! .IP "\fB\-mno\-fdpic\fR" 4
  .IX Item "-mno-fdpic"
  .PD
! Select the \s-1FDPIC ABI,\s0 which uses 64\-bit function descriptors to
  represent pointers to functions.  When the compiler is configured for
  \&\f(CW\*(C`arm\-*\-uclinuxfdpiceabi\*(C'\fR targets, this option is on by default
  and implies \fB\-fPIE\fR if none of the PIC/PIE\-related options is
! provided.  On other targets, it only enables the FDPIC-specific code
  generation features, and the user should explicitly provide the
  PIC/PIE\-related options as needed.
  .Sp
  Note that static linking is not supported because it would still
! involve the dynamic linker when the program self-relocates.  If such
  behavior is acceptable, use \-static and \-Wl,\-dynamic\-linker options.
  .Sp
  The opposite \fB\-mno\-fdpic\fR option is useful (and required) to
  build the Linux kernel using the same (\f(CW\*(C`arm\-*\-uclinuxfdpiceabi\*(C'\fR)
  toolchain as the one used to build the userland programs.
! .IP "\fB\-mbranch\-protection=\fR\fInone\fR\fB|\fR\fIstandard\fR\fB|\fR\fIpac-ret\fR\fB[+\fR\fIleaf\fR\fB][+\fR\fIbti\fR\fB]|\fR\fIbti\fR\fB[+\fR\fIpac-ret\fR\fB[+\fR\fIleaf\fR\fB]]\fR" 4
  .IX Item "-mbranch-protection=none|standard|pac-ret[+leaf][+bti]|bti[+pac-ret[+leaf]]"
  Enable branch protection features (armv8.1\-m.main only).
  \&\fBnone\fR generate code without branch protection or return address
--- 23645,23737 ----
  architectures.  If unaligned access is not enabled then words in packed
  data structures are accessed a byte at a time.
  .Sp
! The ARM attribute \f(CW\*(C`Tag_CPU_unaligned_access\*(C'\fR is set in the
  generated object file to either true or false, depending upon the
  setting of this option.  If unaligned access is enabled then the
  preprocessor symbol \f(CW\*(C`_\|_ARM_FEATURE_UNALIGNED\*(C'\fR is also
  defined.
! .IP \fB\-mneon\-for\-64bits\fR 4
  .IX Item "-mneon-for-64bits"
  This option is deprecated and has no effect.
! .IP \fB\-mslow\-flash\-data\fR 4
  .IX Item "-mslow-flash-data"
  Assume loading data from flash is slower than fetching instruction.
  Therefore literal load is minimized for better performance.
  This option is only supported when compiling for ARMv7 M\-profile and
  off by default. It conflicts with \fB\-mword\-relocations\fR.
! .IP \fB\-masm\-syntax\-unified\fR 4
  .IX Item "-masm-syntax-unified"
  Assume inline assembler is using unified asm syntax.  The default is
  currently off which implies divided syntax.  This option has no impact
! on Thumb2. However, this may change in future releases of GCC.
  Divided syntax should be considered deprecated.
! .IP \fB\-mrestrict\-it\fR 4
  .IX Item "-mrestrict-it"
! Restricts generation of IT blocks to conform to the rules of ARMv8\-A.
! IT blocks can only contain a single 16\-bit instruction from a select
  set of instructions. This option is on by default for ARMv8\-A Thumb mode.
! .IP \fB\-mprint\-tune\-info\fR 4
  .IX Item "-mprint-tune-info"
! Print CPU tuning information as comment in assembler file.  This is
  an option used only for regression testing of the compiler and not
  intended for ordinary use in compiling code.  This option is disabled
  by default.
! .IP \fB\-mverbose\-cost\-dump\fR 4
  .IX Item "-mverbose-cost-dump"
  Enable verbose cost model dumping in the debug dump files.  This option is
  provided for use in debugging the compiler.
! .IP \fB\-mpure\-code\fR 4
  .IX Item "-mpure-code"
  Do not allow constant data to be placed in code sections.
! Additionally, when compiling for ELF object format give all text sections the
! ELF processor\-specific section attribute \f(CW\*(C`SHF_ARM_PURECODE\*(C'\fR.  This option
! is only available when generating non\-pic code for M\-profile targets.
! .IP \fB\-mcmse\fR 4
  .IX Item "-mcmse"
! Generate secure code as per the "ARMv8\-M Security Extensions: Requirements on
! Development Tools Engineering Specification", which can be found on
  <\fBhttps://developer.arm.com/documentation/ecm0359818/latest/\fR>.
! .IP \fB\-mfix\-cmse\-cve\-2021\-35465\fR 4
  .IX Item "-mfix-cmse-cve-2021-35465"
  Mitigate against a potential security issue with the \f(CW\*(C`VLLDM\*(C'\fR instruction
! in some M\-profile devices when using CMSE (CVE\-2021\-365465).  This option is
  enabled by default when the option \fB\-mcpu=\fR is used with
  \&\f(CW\*(C`cortex\-m33\*(C'\fR, \f(CW\*(C`cortex\-m35p\*(C'\fR, \f(CW\*(C`cortex\-m52\*(C'\fR, \f(CW\*(C`cortex\-m55\*(C'\fR,
  \&\f(CW\*(C`cortex\-m85\*(C'\fR or \f(CW\*(C`star\-mc1\*(C'\fR. The option \fB\-mno\-fix\-cmse\-cve\-2021\-35465\fR
  can be used to disable the mitigation.
! .IP \fB\-mstack\-protector\-guard=\fR\fIguard\fR 4
  .IX Item "-mstack-protector-guard=guard"
  .PD 0
! .IP \fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR 4
  .IX Item "-mstack-protector-guard-offset=offset"
  .PD
  Generate stack protection code using canary at \fIguard\fR.  Supported
  locations are \fBglobal\fR for a global canary or \fBtls\fR for a
! canary accessible via the TLS register. The option
  \&\fB\-mstack\-protector\-guard\-offset=\fR is for use with
! \&\fB\-fstack\-protector\-guard=tls\fR and not for use in user\-land code.
! .IP \fB\-mfdpic\fR 4
  .IX Item "-mfdpic"
  .PD 0
! .IP \fB\-mno\-fdpic\fR 4
  .IX Item "-mno-fdpic"
  .PD
! Select the FDPIC ABI, which uses 64\-bit function descriptors to
  represent pointers to functions.  When the compiler is configured for
  \&\f(CW\*(C`arm\-*\-uclinuxfdpiceabi\*(C'\fR targets, this option is on by default
  and implies \fB\-fPIE\fR if none of the PIC/PIE\-related options is
! provided.  On other targets, it only enables the FDPIC\-specific code
  generation features, and the user should explicitly provide the
  PIC/PIE\-related options as needed.
  .Sp
  Note that static linking is not supported because it would still
! involve the dynamic linker when the program self\-relocates.  If such
  behavior is acceptable, use \-static and \-Wl,\-dynamic\-linker options.
  .Sp
  The opposite \fB\-mno\-fdpic\fR option is useful (and required) to
  build the Linux kernel using the same (\f(CW\*(C`arm\-*\-uclinuxfdpiceabi\*(C'\fR)
  toolchain as the one used to build the userland programs.
! .IP \fB\-mbranch\-protection=\fR\fInone\fR\fB|\fR\fIstandard\fR\fB|\fR\fIpac\-ret\fR\fB[+\fR\fIleaf\fR\fB][+\fR\fIbti\fR\fB]|\fR\fIbti\fR\fB[+\fR\fIpac\-ret\fR\fB[+\fR\fIleaf\fR\fB]]\fR 4
  .IX Item "-mbranch-protection=none|standard|pac-ret[+leaf][+bti]|bti[+pac-ret[+leaf]]"
  Enable branch protection features (armv8.1\-m.main only).
  \&\fBnone\fR generate code without branch protection or return address
*************** set to its standard level, which is to s
*** 23808,23825 ****
  the return address to memory.
  \&\fBleaf\fR When return address signing is enabled, also sign leaf
  functions even if they do not write the return address to memory.
! +\fBbti\fR Add landing-pad instructions at the permitted targets of
  indirect branch instructions.
  .Sp
  If the \fB+pacbti\fR architecture extension is not enabled, then all
  branch protection and return address signing operations are
  constrained to use only the instructions defined in the
! architectural-NOP space. The generated code will remain
! backwards-compatible with earlier versions of the architecture, but
  the additional security can be enabled at run time on processors that
! support the \fB\s-1PACBTI\s0\fR extension.
  .Sp
! Branch target enforcement using \s-1BTI\s0 can only be enabled at runtime if
  all code in the application has been compiled with at least
  \&\fB\-mbranch\-protection=bti\fR.
  .Sp
--- 23743,23760 ----
  the return address to memory.
  \&\fBleaf\fR When return address signing is enabled, also sign leaf
  functions even if they do not write the return address to memory.
! +\fBbti\fR Add landing\-pad instructions at the permitted targets of
  indirect branch instructions.
  .Sp
  If the \fB+pacbti\fR architecture extension is not enabled, then all
  branch protection and return address signing operations are
  constrained to use only the instructions defined in the
! architectural\-NOP space. The generated code will remain
! backwards\-compatible with earlier versions of the architecture, but
  the additional security can be enabled at run time on processors that
! support the \fBPACBTI\fR extension.
  .Sp
! Branch target enforcement using BTI can only be enabled at runtime if
  all code in the application has been compiled with at least
  \&\fB\-mbranch\-protection=bti\fR.
  .Sp
*************** or later.
*** 23829,23968 ****
  The default is to generate code without branch protection or return
  address signing.
  .PP
! \fI\s-1AVR\s0 Options\fR
  .IX Subsection "AVR Options"
  .PP
! These options are defined for \s-1AVR\s0 implementations:
! .IP "\fB\-mmcu=\fR\fImcu\fR" 4
  .IX Item "-mmcu=mcu"
! Specify the \s-1AVR\s0 instruction set architecture (\s-1ISA\s0) or device type.
  The default for this option is \f(CW\*(C`avr2\*(C'\fR.
  .Sp
! The following \s-1AVR\s0 devices and ISAs are supported.
  \&\fINote:\fR A complete device support consists of
! startup code \f(CW\*(C`crt\f(CImcu\f(CW.o\*(C'\fR, a device header \f(CW\*(C`avr/io*.h\*(C'\fR,
! a device library \f(CW\*(C`lib\f(CImcu\f(CW.a\*(C'\fR and a
! device-specs (\f(CW\*(C`https://gcc.gnu.org/wiki/avr\-gcc#spec\-files\*(C'\fR) file
! \&\f(CW\*(C`specs\-\f(CImcu\f(CW\*(C'\fR. Only the latter is provided by the compiler
! according the supported \f(CW\*(C`\f(CImcu\f(CW\*(C'\fRs below.  The rest is supported
! by AVR-LibC (\f(CW\*(C`https://github.com/avrdudes/avr\-libc/\*(C'\fR), or by means of
  \&\f(CW\*(C`atpack\*(C'\fR (\f(CW\*(C`https://gcc.gnu.org/wiki/avr\-gcc#atpack\*(C'\fR) files
  from the hardware manufacturer.
  .RS 4
  .ie n .IP """avr2""" 4
! .el .IP "\f(CWavr2\fR" 4
  .IX Item "avr2"
! \&\*(L"Classic\*(R" devices with up to 8 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`attiny22\*(C'\fR, \f(CW\*(C`attiny26\*(C'\fR, \f(CW\*(C`at90s2313\*(C'\fR, \f(CW\*(C`at90s2323\*(C'\fR, \f(CW\*(C`at90s2333\*(C'\fR, \f(CW\*(C`at90s2343\*(C'\fR, \f(CW\*(C`at90s4414\*(C'\fR, \f(CW\*(C`at90s4433\*(C'\fR, \f(CW\*(C`at90s4434\*(C'\fR, \f(CW\*(C`at90c8534\*(C'\fR, \f(CW\*(C`at90s8515\*(C'\fR, \f(CW\*(C`at90s8535\*(C'\fR.
  .ie n .IP """avr25""" 4
! .el .IP "\f(CWavr25\fR" 4
  .IX Item "avr25"
! \&\*(L"Classic\*(R" devices with up to 8 KiB of program memory and with the \f(CW\*(C`MOVW\*(C'\fR instruction.
  \&\fImcu\fR = \f(CW\*(C`attiny13\*(C'\fR, \f(CW\*(C`attiny13a\*(C'\fR, \f(CW\*(C`attiny24\*(C'\fR, \f(CW\*(C`attiny24a\*(C'\fR, \f(CW\*(C`attiny25\*(C'\fR, \f(CW\*(C`attiny261\*(C'\fR, \f(CW\*(C`attiny261a\*(C'\fR, \f(CW\*(C`attiny2313\*(C'\fR, \f(CW\*(C`attiny2313a\*(C'\fR, \f(CW\*(C`attiny43u\*(C'\fR, \f(CW\*(C`attiny44\*(C'\fR, \f(CW\*(C`attiny44a\*(C'\fR, \f(CW\*(C`attiny45\*(C'\fR, \f(CW\*(C`attiny48\*(C'\fR, \f(CW\*(C`attiny441\*(C'\fR, \f(CW\*(C`attiny461\*(C'\fR, \f(CW\*(C`attiny461a\*(C'\fR, \f(CW\*(C`attiny4313\*(C'\fR, \f(CW\*(C`attiny84\*(C'\fR, \f(CW\*(C`attiny84a\*(C'\fR, \f(CW\*(C`attiny85\*(C'\fR, \f(CW\*(C`attiny87\*(C'\fR, \f(CW\*(C`attiny88\*(C'\fR, \f(CW\*(C`attiny828\*(C'\fR, \f(CW\*(C`attiny841\*(C'\fR, \f(CW\*(C`attiny861\*(C'\fR, \f(CW\*(C`attiny861a\*(C'\fR, \f(CW\*(C`ata5272\*(C'\fR, \f(CW\*(C`ata6616c\*(C'\fR, \f(CW\*(C`at86rf401\*(C'\fR.
  .ie n .IP """avr3""" 4
! .el .IP "\f(CWavr3\fR" 4
  .IX Item "avr3"
! \&\*(L"Classic\*(R" devices with 16 KiB up to 64 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`at76c711\*(C'\fR, \f(CW\*(C`at43usb355\*(C'\fR.
  .ie n .IP """avr31""" 4
! .el .IP "\f(CWavr31\fR" 4
  .IX Item "avr31"
! \&\*(L"Classic\*(R" devices with 128 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atmega103\*(C'\fR, \f(CW\*(C`at43usb320\*(C'\fR.
  .ie n .IP """avr35""" 4
! .el .IP "\f(CWavr35\fR" 4
  .IX Item "avr35"
! \&\*(L"Classic\*(R" devices with 16 KiB up to 64 KiB of program memory and with the \f(CW\*(C`MOVW\*(C'\fR instruction.
  \&\fImcu\fR = \f(CW\*(C`attiny167\*(C'\fR, \f(CW\*(C`attiny1634\*(C'\fR, \f(CW\*(C`atmega8u2\*(C'\fR, \f(CW\*(C`atmega16u2\*(C'\fR, \f(CW\*(C`atmega32u2\*(C'\fR, \f(CW\*(C`ata5505\*(C'\fR, \f(CW\*(C`ata6617c\*(C'\fR, \f(CW\*(C`ata664251\*(C'\fR, \f(CW\*(C`at90usb82\*(C'\fR, \f(CW\*(C`at90usb162\*(C'\fR.
  .ie n .IP """avr4""" 4
! .el .IP "\f(CWavr4\fR" 4
  .IX Item "avr4"
! \&\*(L"Enhanced\*(R" devices with up to 8 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atmega48\*(C'\fR, \f(CW\*(C`atmega48a\*(C'\fR, \f(CW\*(C`atmega48p\*(C'\fR, \f(CW\*(C`atmega48pa\*(C'\fR, \f(CW\*(C`atmega48pb\*(C'\fR, \f(CW\*(C`atmega8\*(C'\fR, \f(CW\*(C`atmega8a\*(C'\fR, \f(CW\*(C`atmega8hva\*(C'\fR, \f(CW\*(C`atmega88\*(C'\fR, \f(CW\*(C`atmega88a\*(C'\fR, \f(CW\*(C`atmega88p\*(C'\fR, \f(CW\*(C`atmega88pa\*(C'\fR, \f(CW\*(C`atmega88pb\*(C'\fR, \f(CW\*(C`atmega8515\*(C'\fR, \f(CW\*(C`atmega8535\*(C'\fR, \f(CW\*(C`ata5795\*(C'\fR, \f(CW\*(C`ata6285\*(C'\fR, \f(CW\*(C`ata6286\*(C'\fR, \f(CW\*(C`ata6289\*(C'\fR, \f(CW\*(C`ata6612c\*(C'\fR, \f(CW\*(C`at90pwm1\*(C'\fR, \f(CW\*(C`at90pwm2\*(C'\fR, \f(CW\*(C`at90pwm2b\*(C'\fR, \f(CW\*(C`at90pwm3\*(C'\fR, \f(CW\*(C`at90pwm3b\*(C'\fR, \f(CW\*(C`at90pwm81\*(C'\fR.
  .ie n .IP """avr5""" 4
! .el .IP "\f(CWavr5\fR" 4
  .IX Item "avr5"
! \&\*(L"Enhanced\*(R" devices with 16 KiB up to 64 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atmega16\*(C'\fR, \f(CW\*(C`atmega16a\*(C'\fR, \f(CW\*(C`atmega16hva\*(C'\fR, \f(CW\*(C`atmega16hva2\*(C'\fR, \f(CW\*(C`atmega16hvb\*(C'\fR, \f(CW\*(C`atmega16hvbrevb\*(C'\fR, \f(CW\*(C`atmega16m1\*(C'\fR, \f(CW\*(C`atmega16u4\*(C'\fR, \f(CW\*(C`atmega161\*(C'\fR, \f(CW\*(C`atmega162\*(C'\fR, \f(CW\*(C`atmega163\*(C'\fR, \f(CW\*(C`atmega164a\*(C'\fR, \f(CW\*(C`atmega164p\*(C'\fR, \f(CW\*(C`atmega164pa\*(C'\fR, \f(CW\*(C`atmega165\*(C'\fR, \f(CW\*(C`atmega165a\*(C'\fR, \f(CW\*(C`atmega165p\*(C'\fR, \f(CW\*(C`atmega165pa\*(C'\fR, \f(CW\*(C`atmega168\*(C'\fR, \f(CW\*(C`atmega168a\*(C'\fR, \f(CW\*(C`atmega168p\*(C'\fR, \f(CW\*(C`atmega168pa\*(C'\fR, \f(CW\*(C`atmega168pb\*(C'\fR, \f(CW\*(C`atmega169\*(C'\fR, \f(CW\*(C`atmega169a\*(C'\fR, \f(CW\*(C`atmega169p\*(C'\fR, \f(CW\*(C`atmega169pa\*(C'\fR, \f(CW\*(C`atmega32\*(C'\fR, \f(CW\*(C`atmega32a\*(C'\fR, \f(CW\*(C`atmega32c1\*(C'\fR, \f(CW\*(C`atmega32hvb\*(C'\fR, \f(CW\*(C`atmega32hvbrevb\*(C'\fR, \f(CW\*(C`atmega32m1\*(C'\fR, \f(CW\*(C`atmega32u4\*(C'\fR, \f(CW\*(C`atmega32u6\*(C'\fR, \f(CW\*(C`atmega323\*(C'\fR, \f(CW\*(C`atmega324a\*(C'\fR, \f(CW\*(C`atmega324p\*(C'\fR, \f(CW\*(C`atmega324pa\*(C'\fR, \f(CW\*(C`atmega324pb\*(C'\fR, \f(CW\*(C`atmega325\*(C'\fR, \f(CW\*(C`atmega325a\*(C'\fR, \f(CW\*(C`atmega325p\*(C'\fR, \f(CW\*(C`atmega325pa\*(C'\fR, \f(CW\*(C`atmega328\*(C'\fR, \f(CW\*(C`atmega328p\*(C'\fR, \f(CW\*(C`atmega328pb\*(C'\fR, \f(CW\*(C`atmega329\*(C'\fR, \f(CW\*(C`atmega329a\*(C'\fR, \f(CW\*(C`atmega329p\*(C'\fR, \f(CW\*(C`atmega329pa\*(C'\fR, \f(CW\*(C`atmega3250\*(C'\fR, \f(CW\*(C`atmega3250a\*(C'\fR, \f(CW\*(C`atmega3250p\*(C'\fR, \f(CW\*(C`atmega3250pa\*(C'\fR, \f(CW\*(C`atmega3290\*(C'\fR, \f(CW\*(C`atmega3290a\*(C'\fR, \f(CW\*(C`atmega3290p\*(C'\fR, \f(CW\*(C`atmega3290pa\*(C'\fR, \f(CW\*(C`atmega406\*(C'\fR, \f(CW\*(C`atmega64\*(C'\fR, \f(CW\*(C`atmega64a\*(C'\fR, \f(CW\*(C`atmega64c1\*(C'\fR, \f(CW\*(C`atmega64hve\*(C'\fR, \f(CW\*(C`atmega64hve2\*(C'\fR, \f(CW\*(C`atmega64m1\*(C'\fR, \f(CW\*(C`atmega64rfr2\*(C'\fR, \f(CW\*(C`atmega640\*(C'\fR, \f(CW\*(C`atmega644\*(C'\fR, \f(CW\*(C`atmega644a\*(C'\fR, \f(CW\*(C`atmega644p\*(C'\fR, \f(CW\*(C`atmega644pa\*(C'\fR, \f(CW\*(C`atmega644rfr2\*(C'\fR, \f(CW\*(C`atmega645\*(C'\fR, \f(CW\*(C`atmega645a\*(C'\fR, \f(CW\*(C`atmega645p\*(C'\fR, \f(CW\*(C`atmega649\*(C'\fR, \f(CW\*(C`atmega649a\*(C'\fR, \f(CW\*(C`atmega649p\*(C'\fR, \f(CW\*(C`atmega6450\*(C'\fR, \f(CW\*(C`atmega6450a\*(C'\fR, \f(CW\*(C`atmega6450p\*(C'\fR, \f(CW\*(C`atmega6490\*(C'\fR, \f(CW\*(C`atmega6490a\*(C'\fR, \f(CW\*(C`atmega6490p\*(C'\fR, \f(CW\*(C`ata5790\*(C'\fR, \f(CW\*(C`ata5790n\*(C'\fR, \f(CW\*(C`ata5791\*(C'\fR, \f(CW\*(C`ata6613c\*(C'\fR, \f(CW\*(C`ata6614q\*(C'\fR, \f(CW\*(C`ata5782\*(C'\fR, \f(CW\*(C`ata5831\*(C'\fR, \f(CW\*(C`ata8210\*(C'\fR, \f(CW\*(C`ata8510\*(C'\fR, \f(CW\*(C`ata5787\*(C'\fR, \f(CW\*(C`ata5835\*(C'\fR, \f(CW\*(C`ata5700m322\*(C'\fR, \f(CW\*(C`ata5702m322\*(C'\fR, \f(CW\*(C`at90pwm161\*(C'\fR, \f(CW\*(C`at90pwm216\*(C'\fR, \f(CW\*(C`at90pwm316\*(C'\fR, \f(CW\*(C`at90can32\*(C'\fR, \f(CW\*(C`at90can64\*(C'\fR, \f(CW\*(C`at90scr100\*(C'\fR, \f(CW\*(C`at90usb646\*(C'\fR, \f(CW\*(C`at90usb647\*(C'\fR, \f(CW\*(C`at94k\*(C'\fR, \f(CW\*(C`m3000\*(C'\fR.
  .ie n .IP """avr51""" 4
! .el .IP "\f(CWavr51\fR" 4
  .IX Item "avr51"
! \&\*(L"Enhanced\*(R" devices with 128 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atmega128\*(C'\fR, \f(CW\*(C`atmega128a\*(C'\fR, \f(CW\*(C`atmega128rfa1\*(C'\fR, \f(CW\*(C`atmega128rfr2\*(C'\fR, \f(CW\*(C`atmega1280\*(C'\fR, \f(CW\*(C`atmega1281\*(C'\fR, \f(CW\*(C`atmega1284\*(C'\fR, \f(CW\*(C`atmega1284p\*(C'\fR, \f(CW\*(C`atmega1284rfr2\*(C'\fR, \f(CW\*(C`at90can128\*(C'\fR, \f(CW\*(C`at90usb1286\*(C'\fR, \f(CW\*(C`at90usb1287\*(C'\fR.
  .ie n .IP """avr6""" 4
! .el .IP "\f(CWavr6\fR" 4
  .IX Item "avr6"
! \&\*(L"Enhanced\*(R" devices with 3\-byte \s-1PC,\s0 i.e. with more than 128 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atmega256rfr2\*(C'\fR, \f(CW\*(C`atmega2560\*(C'\fR, \f(CW\*(C`atmega2561\*(C'\fR, \f(CW\*(C`atmega2564rfr2\*(C'\fR.
  .ie n .IP """avrxmega2""" 4
! .el .IP "\f(CWavrxmega2\fR" 4
  .IX Item "avrxmega2"
! \&\*(L"\s-1XMEGA\*(R"\s0 devices with more than 8 KiB and up to 64 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atxmega8e5\*(C'\fR, \f(CW\*(C`atxmega16a4\*(C'\fR, \f(CW\*(C`atxmega16a4u\*(C'\fR, \f(CW\*(C`atxmega16c4\*(C'\fR, \f(CW\*(C`atxmega16d4\*(C'\fR, \f(CW\*(C`atxmega16e5\*(C'\fR, \f(CW\*(C`atxmega32a4\*(C'\fR, \f(CW\*(C`atxmega32a4u\*(C'\fR, \f(CW\*(C`atxmega32c3\*(C'\fR, \f(CW\*(C`atxmega32c4\*(C'\fR, \f(CW\*(C`atxmega32d3\*(C'\fR, \f(CW\*(C`atxmega32d4\*(C'\fR, \f(CW\*(C`atxmega32e5\*(C'\fR, \f(CW\*(C`avr64da28\*(C'\fR, \f(CW\*(C`avr64da28s\*(C'\fR, \f(CW\*(C`avr64da32\*(C'\fR, \f(CW\*(C`avr64da32s\*(C'\fR, \f(CW\*(C`avr64da48\*(C'\fR, \f(CW\*(C`avr64da48s\*(C'\fR, \f(CW\*(C`avr64da64\*(C'\fR, \f(CW\*(C`avr64da64s\*(C'\fR, \f(CW\*(C`avr64db28\*(C'\fR, \f(CW\*(C`avr64db32\*(C'\fR, \f(CW\*(C`avr64db48\*(C'\fR, \f(CW\*(C`avr64db64\*(C'\fR, \f(CW\*(C`avr64dd14\*(C'\fR, \f(CW\*(C`avr64dd20\*(C'\fR, \f(CW\*(C`avr64dd28\*(C'\fR, \f(CW\*(C`avr64dd32\*(C'\fR, \f(CW\*(C`avr64du28\*(C'\fR, \f(CW\*(C`avr64du32\*(C'\fR, \f(CW\*(C`avr64ea28\*(C'\fR, \f(CW\*(C`avr64ea32\*(C'\fR, \f(CW\*(C`avr64ea48\*(C'\fR, \f(CW\*(C`avr64sd28\*(C'\fR, \f(CW\*(C`avr64sd32\*(C'\fR, \f(CW\*(C`avr64sd48\*(C'\fR.
  .ie n .IP """avrxmega3""" 4
! .el .IP "\f(CWavrxmega3\fR" 4
  .IX Item "avrxmega3"
! \&\*(L"\s-1XMEGA\*(R"\s0 devices with up to 64 KiB of combined program memory and \s-1RAM,\s0 and with program memory visible in the \s-1RAM\s0 address space.
! \&\fImcu\fR = \f(CW\*(C`attiny202\*(C'\fR, \f(CW\*(C`attiny204\*(C'\fR, \f(CW\*(C`attiny212\*(C'\fR, \f(CW\*(C`attiny214\*(C'\fR, \f(CW\*(C`attiny402\*(C'\fR, \f(CW\*(C`attiny404\*(C'\fR, \f(CW\*(C`attiny406\*(C'\fR, \f(CW\*(C`attiny412\*(C'\fR, \f(CW\*(C`attiny414\*(C'\fR, \f(CW\*(C`attiny416\*(C'\fR, \f(CW\*(C`attiny416auto\*(C'\fR, \f(CW\*(C`attiny417\*(C'\fR, \f(CW\*(C`attiny424\*(C'\fR, \f(CW\*(C`attiny426\*(C'\fR, \f(CW\*(C`attiny427\*(C'\fR, \f(CW\*(C`attiny804\*(C'\fR, \f(CW\*(C`attiny806\*(C'\fR, \f(CW\*(C`attiny807\*(C'\fR, \f(CW\*(C`attiny814\*(C'\fR, \f(CW\*(C`attiny816\*(C'\fR, \f(CW\*(C`attiny817\*(C'\fR, \f(CW\*(C`attiny824\*(C'\fR, \f(CW\*(C`attiny826\*(C'\fR, \f(CW\*(C`attiny827\*(C'\fR, \f(CW\*(C`attiny1604\*(C'\fR, \f(CW\*(C`attiny1606\*(C'\fR, \f(CW\*(C`attiny1607\*(C'\fR, \f(CW\*(C`attiny1614\*(C'\fR, \f(CW\*(C`attiny1616\*(C'\fR, \f(CW\*(C`attiny1617\*(C'\fR, \f(CW\*(C`attiny1624\*(C'\fR, \f(CW\*(C`attiny1626\*(C'\fR, \f(CW\*(C`attiny1627\*(C'\fR, \f(CW\*(C`attiny3214\*(C'\fR, \f(CW\*(C`attiny3216\*(C'\fR, \f(CW\*(C`attiny3217\*(C'\fR, \f(CW\*(C`attiny3224\*(C'\fR, \f(CW\*(C`attiny3226\*(C'\fR, \f(CW\*(C`attiny3227\*(C'\fR, \f(CW\*(C`atmega808\*(C'\fR, \f(CW\*(C`atmega809\*(C'\fR, \f(CW\*(C`atmega1608\*(C'\fR, \f(CW\*(C`atmega1609\*(C'\fR, \f(CW\*(C`atmega3208\*(C'\fR, \f(CW\*(C`atmega3209\*(C'\fR, \f(CW\*(C`atmega4808\*(C'\fR, \f(CW\*(C`atmega4809\*(C'\fR, \f(CW\*(C`avr16dd14\*(C'\fR, \f(CW\*(C`avr16dd20\*(C'\fR, \f(CW\*(C`avr16dd28\*(C'\fR, \f(CW\*(C`avr16dd32\*(C'\fR, \f(CW\*(C`avr16du14\*(C'\fR, \f(CW\*(C`avr16du20\*(C'\fR, \f(CW\*(C`avr16du28\*(C'\fR, \f(CW\*(C`avr16du32\*(C'\fR, \f(CW\*(C`avr16ea28\*(C'\fR, \f(CW\*(C`avr16ea32\*(C'\fR, \f(CW\*(C`avr16ea48\*(C'\fR, \f(CW\*(C`avr16eb14\*(C'\fR, \f(CW\*(C`avr16eb20\*(C'\fR, \f(CW\*(C`avr16eb28\*(C'\fR, \f(CW\*(C`avr16eb32\*(C'\fR, \f(CW\*(C`avr32da28\*(C'\fR, \f(CW\*(C`avr32da28s\*(C'\fR, \f(CW\*(C`avr32da32\*(C'\fR, \f(CW\*(C`avr32da32s\*(C'\fR, \f(CW\*(C`avr32da48\*(C'\fR, \f(CW\*(C`avr32da48s\*(C'\fR, \f(CW\*(C`avr32db28\*(C'\fR, \f(CW\*(C`avr32db32\*(C'\fR, \f(CW\*(C`avr32db48\*(C'\fR, \f(CW\*(C`avr32dd14\*(C'\fR, \f(CW\*(C`avr32dd20\*(C'\fR, \f(CW\*(C`avr32dd28\*(C'\fR, \f(CW\*(C`avr32dd32\*(C'\fR, \f(CW\*(C`avr32du14\*(C'\fR, \f(CW\*(C`avr32du20\*(C'\fR, \f(CW\*(C`avr32du28\*(C'\fR, \f(CW\*(C`avr32du32\*(C'\fR, \f(CW\*(C`avr32ea28\*(C'\fR, \f(CW\*(C`avr32ea32\*(C'\fR, \f(CW\*(C`avr32ea48\*(C'\fR, \f(CW\*(C`avr32sd20\*(C'\fR, \f(CW\*(C`avr32sd28\*(C'\fR, \f(CW\*(C`avr32sd32\*(C'\fR.
  .ie n .IP """avrxmega4""" 4
! .el .IP "\f(CWavrxmega4\fR" 4
  .IX Item "avrxmega4"
! \&\*(L"\s-1XMEGA\*(R"\s0 devices with more than 64 KiB and up to 128 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atxmega64a3\*(C'\fR, \f(CW\*(C`atxmega64a3u\*(C'\fR, \f(CW\*(C`atxmega64a4u\*(C'\fR, \f(CW\*(C`atxmega64b1\*(C'\fR, \f(CW\*(C`atxmega64b3\*(C'\fR, \f(CW\*(C`atxmega64c3\*(C'\fR, \f(CW\*(C`atxmega64d3\*(C'\fR, \f(CW\*(C`atxmega64d4\*(C'\fR, \f(CW\*(C`avr128da28\*(C'\fR, \f(CW\*(C`avr128da28s\*(C'\fR, \f(CW\*(C`avr128da32\*(C'\fR, \f(CW\*(C`avr128da32s\*(C'\fR, \f(CW\*(C`avr128da48\*(C'\fR, \f(CW\*(C`avr128da48s\*(C'\fR, \f(CW\*(C`avr128da64\*(C'\fR, \f(CW\*(C`avr128da64s\*(C'\fR, \f(CW\*(C`avr128db28\*(C'\fR, \f(CW\*(C`avr128db32\*(C'\fR, \f(CW\*(C`avr128db48\*(C'\fR, \f(CW\*(C`avr128db64\*(C'\fR.
  .ie n .IP """avrxmega5""" 4
! .el .IP "\f(CWavrxmega5\fR" 4
  .IX Item "avrxmega5"
! \&\*(L"\s-1XMEGA\*(R"\s0 devices with more than 64 KiB and up to 128 KiB of program memory and more than 64 KiB of \s-1RAM.\s0
  \&\fImcu\fR = \f(CW\*(C`atxmega64a1\*(C'\fR, \f(CW\*(C`atxmega64a1u\*(C'\fR.
  .ie n .IP """avrxmega6""" 4
! .el .IP "\f(CWavrxmega6\fR" 4
  .IX Item "avrxmega6"
! \&\*(L"\s-1XMEGA\*(R"\s0 devices with more than 128 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atxmega128a3\*(C'\fR, \f(CW\*(C`atxmega128a3u\*(C'\fR, \f(CW\*(C`atxmega128b1\*(C'\fR, \f(CW\*(C`atxmega128b3\*(C'\fR, \f(CW\*(C`atxmega128c3\*(C'\fR, \f(CW\*(C`atxmega128d3\*(C'\fR, \f(CW\*(C`atxmega128d4\*(C'\fR, \f(CW\*(C`atxmega192a3\*(C'\fR, \f(CW\*(C`atxmega192a3u\*(C'\fR, \f(CW\*(C`atxmega192c3\*(C'\fR, \f(CW\*(C`atxmega192d3\*(C'\fR, \f(CW\*(C`atxmega256a3\*(C'\fR, \f(CW\*(C`atxmega256a3b\*(C'\fR, \f(CW\*(C`atxmega256a3bu\*(C'\fR, \f(CW\*(C`atxmega256a3u\*(C'\fR, \f(CW\*(C`atxmega256c3\*(C'\fR, \f(CW\*(C`atxmega256d3\*(C'\fR, \f(CW\*(C`atxmega384c3\*(C'\fR, \f(CW\*(C`atxmega384d3\*(C'\fR.
  .ie n .IP """avrxmega7""" 4
! .el .IP "\f(CWavrxmega7\fR" 4
  .IX Item "avrxmega7"
! \&\*(L"\s-1XMEGA\*(R"\s0 devices with more than 128 KiB of program memory and more than 64 KiB of \s-1RAM.\s0
  \&\fImcu\fR = \f(CW\*(C`atxmega128a1\*(C'\fR, \f(CW\*(C`atxmega128a1u\*(C'\fR, \f(CW\*(C`atxmega128a4u\*(C'\fR.
  .ie n .IP """avrtiny""" 4
! .el .IP "\f(CWavrtiny\fR" 4
  .IX Item "avrtiny"
! \&\*(L"Reduced Tiny\*(R" Tiny core devices with only 16 general purpose registers and 512 B up to 4 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`attiny4\*(C'\fR, \f(CW\*(C`attiny5\*(C'\fR, \f(CW\*(C`attiny9\*(C'\fR, \f(CW\*(C`attiny10\*(C'\fR, \f(CW\*(C`attiny102\*(C'\fR, \f(CW\*(C`attiny104\*(C'\fR, \f(CW\*(C`attiny20\*(C'\fR, \f(CW\*(C`attiny40\*(C'\fR.
  .ie n .IP """avr1""" 4
! .el .IP "\f(CWavr1\fR" 4
  .IX Item "avr1"
! This \s-1ISA\s0 is implemented by the minimal \s-1AVR\s0 core and supported for assembler only.
  \&\fImcu\fR = \f(CW\*(C`attiny11\*(C'\fR, \f(CW\*(C`attiny12\*(C'\fR, \f(CW\*(C`attiny15\*(C'\fR, \f(CW\*(C`attiny28\*(C'\fR, \f(CW\*(C`at90s1200\*(C'\fR.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mabsdata\fR" 4
  .IX Item "-mabsdata"
! Assume that all data in static storage can be accessed by \s-1LDS / STS\s0
  instructions.  This option has only an effect on reduced Tiny devices like
  ATtiny40.  See also the \f(CW\*(C`absdata\*(C'\fR
! \&\fB\s-1AVR\s0 Variable Attributes,variable attribute\fR.
! .IP "\fB\-mcvt\fR" 4
  .IX Item "-mcvt"
! Use a \fIcompact vector table\fR.  Some devices support a \s-1CVT\s0
! with only four entries: 0=Reset, 1=NMI, 2=Prio1 \s-1IRQ,\s0 3=Prio0 IRQs.
! This option will link startup code from \f(CW\*(C`crt\f(CImcu\f(CW\-cvt.o\*(C'\fR
! instead of the usual \f(CW\*(C`crt\f(CImcu\f(CW.o\*(C'\fR.
  Apart from providing a compact vector table, the startup code will set bit
! \&\f(CW\*(C`CPUINT_CTRLA.CPUINT_CVT\*(C'\fR which enables the \s-1CVT\s0 on the device.
  .Sp
  When you do not want the startup code to set \f(CW\*(C`CPUINT_CTRLA.CPUINT_CVT\*(C'\fR,
  then you can satisfy symbol \f(CW\*(C`_\|_init_cvt\*(C'\fR so that the respective
! code is no more pulled in from \f(CW\*(C`lib\f(CImcu\f(CW.a\*(C'\fR.
  For example, you can link with \f(CW\*(C`\-Wl,\-\-defsym,_\|_init_cvt=0\*(C'\fR.
  .Sp
! The \s-1CVT\s0 startup code is available since
! AVR-LibC\ v2.3 (\f(CW\*(C`https://github.com/avrdudes/avr\-libc/issues/1010\*(C'\fR).
! .IP "\fB\-mdouble=\fR\fIbits\fR" 4
  .IX Item "-mdouble=bits"
  .PD 0
! .IP "\fB\-mlong\-double=\fR\fIbits\fR" 4
  .IX Item "-mlong-double=bits"
  .PD
  Set the size (in bits) of the \f(CW\*(C`double\*(C'\fR or \f(CW\*(C`long double\*(C'\fR type,
--- 23764,23903 ----
  The default is to generate code without branch protection or return
  address signing.
  .PP
! \fIAVR Options\fR
  .IX Subsection "AVR Options"
  .PP
! These options are defined for AVR implementations:
! .IP \fB\-mmcu=\fR\fImcu\fR 4
  .IX Item "-mmcu=mcu"
! Specify the AVR instruction set architecture (ISA) or device type.
  The default for this option is \f(CW\*(C`avr2\*(C'\fR.
  .Sp
! The following AVR devices and ISAs are supported.
  \&\fINote:\fR A complete device support consists of
! startup code \f(CW\*(C`crt\fR\f(CImcu\fR\f(CW.o\*(C'\fR, a device header \f(CW\*(C`avr/io*.h\*(C'\fR,
! a device library \f(CW\*(C`lib\fR\f(CImcu\fR\f(CW.a\*(C'\fR and a
! device\-specs (\f(CW\*(C`https://gcc.gnu.org/wiki/avr\-gcc#spec\-files\*(C'\fR) file
! \&\f(CW\*(C`specs\-\fR\f(CImcu\fR\f(CW\*(C'\fR. Only the latter is provided by the compiler
! according the supported \f(CW\*(C`\fR\f(CImcu\fR\f(CW\*(C'\fRs below.  The rest is supported
! by AVR\-LibC (\f(CW\*(C`https://github.com/avrdudes/avr\-libc/\*(C'\fR), or by means of
  \&\f(CW\*(C`atpack\*(C'\fR (\f(CW\*(C`https://gcc.gnu.org/wiki/avr\-gcc#atpack\*(C'\fR) files
  from the hardware manufacturer.
  .RS 4
  .ie n .IP """avr2""" 4
! .el .IP \f(CWavr2\fR 4
  .IX Item "avr2"
! "Classic" devices with up to 8 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`attiny22\*(C'\fR, \f(CW\*(C`attiny26\*(C'\fR, \f(CW\*(C`at90s2313\*(C'\fR, \f(CW\*(C`at90s2323\*(C'\fR, \f(CW\*(C`at90s2333\*(C'\fR, \f(CW\*(C`at90s2343\*(C'\fR, \f(CW\*(C`at90s4414\*(C'\fR, \f(CW\*(C`at90s4433\*(C'\fR, \f(CW\*(C`at90s4434\*(C'\fR, \f(CW\*(C`at90c8534\*(C'\fR, \f(CW\*(C`at90s8515\*(C'\fR, \f(CW\*(C`at90s8535\*(C'\fR.
  .ie n .IP """avr25""" 4
! .el .IP \f(CWavr25\fR 4
  .IX Item "avr25"
! "Classic" devices with up to 8 KiB of program memory and with the \f(CW\*(C`MOVW\*(C'\fR instruction.
  \&\fImcu\fR = \f(CW\*(C`attiny13\*(C'\fR, \f(CW\*(C`attiny13a\*(C'\fR, \f(CW\*(C`attiny24\*(C'\fR, \f(CW\*(C`attiny24a\*(C'\fR, \f(CW\*(C`attiny25\*(C'\fR, \f(CW\*(C`attiny261\*(C'\fR, \f(CW\*(C`attiny261a\*(C'\fR, \f(CW\*(C`attiny2313\*(C'\fR, \f(CW\*(C`attiny2313a\*(C'\fR, \f(CW\*(C`attiny43u\*(C'\fR, \f(CW\*(C`attiny44\*(C'\fR, \f(CW\*(C`attiny44a\*(C'\fR, \f(CW\*(C`attiny45\*(C'\fR, \f(CW\*(C`attiny48\*(C'\fR, \f(CW\*(C`attiny441\*(C'\fR, \f(CW\*(C`attiny461\*(C'\fR, \f(CW\*(C`attiny461a\*(C'\fR, \f(CW\*(C`attiny4313\*(C'\fR, \f(CW\*(C`attiny84\*(C'\fR, \f(CW\*(C`attiny84a\*(C'\fR, \f(CW\*(C`attiny85\*(C'\fR, \f(CW\*(C`attiny87\*(C'\fR, \f(CW\*(C`attiny88\*(C'\fR, \f(CW\*(C`attiny828\*(C'\fR, \f(CW\*(C`attiny841\*(C'\fR, \f(CW\*(C`attiny861\*(C'\fR, \f(CW\*(C`attiny861a\*(C'\fR, \f(CW\*(C`ata5272\*(C'\fR, \f(CW\*(C`ata6616c\*(C'\fR, \f(CW\*(C`at86rf401\*(C'\fR.
  .ie n .IP """avr3""" 4
! .el .IP \f(CWavr3\fR 4
  .IX Item "avr3"
! "Classic" devices with 16 KiB up to 64 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`at76c711\*(C'\fR, \f(CW\*(C`at43usb355\*(C'\fR.
  .ie n .IP """avr31""" 4
! .el .IP \f(CWavr31\fR 4
  .IX Item "avr31"
! "Classic" devices with 128 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atmega103\*(C'\fR, \f(CW\*(C`at43usb320\*(C'\fR.
  .ie n .IP """avr35""" 4
! .el .IP \f(CWavr35\fR 4
  .IX Item "avr35"
! "Classic" devices with 16 KiB up to 64 KiB of program memory and with the \f(CW\*(C`MOVW\*(C'\fR instruction.
  \&\fImcu\fR = \f(CW\*(C`attiny167\*(C'\fR, \f(CW\*(C`attiny1634\*(C'\fR, \f(CW\*(C`atmega8u2\*(C'\fR, \f(CW\*(C`atmega16u2\*(C'\fR, \f(CW\*(C`atmega32u2\*(C'\fR, \f(CW\*(C`ata5505\*(C'\fR, \f(CW\*(C`ata6617c\*(C'\fR, \f(CW\*(C`ata664251\*(C'\fR, \f(CW\*(C`at90usb82\*(C'\fR, \f(CW\*(C`at90usb162\*(C'\fR.
  .ie n .IP """avr4""" 4
! .el .IP \f(CWavr4\fR 4
  .IX Item "avr4"
! "Enhanced" devices with up to 8 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atmega48\*(C'\fR, \f(CW\*(C`atmega48a\*(C'\fR, \f(CW\*(C`atmega48p\*(C'\fR, \f(CW\*(C`atmega48pa\*(C'\fR, \f(CW\*(C`atmega48pb\*(C'\fR, \f(CW\*(C`atmega8\*(C'\fR, \f(CW\*(C`atmega8a\*(C'\fR, \f(CW\*(C`atmega8hva\*(C'\fR, \f(CW\*(C`atmega88\*(C'\fR, \f(CW\*(C`atmega88a\*(C'\fR, \f(CW\*(C`atmega88p\*(C'\fR, \f(CW\*(C`atmega88pa\*(C'\fR, \f(CW\*(C`atmega88pb\*(C'\fR, \f(CW\*(C`atmega8515\*(C'\fR, \f(CW\*(C`atmega8535\*(C'\fR, \f(CW\*(C`ata5795\*(C'\fR, \f(CW\*(C`ata6285\*(C'\fR, \f(CW\*(C`ata6286\*(C'\fR, \f(CW\*(C`ata6289\*(C'\fR, \f(CW\*(C`ata6612c\*(C'\fR, \f(CW\*(C`at90pwm1\*(C'\fR, \f(CW\*(C`at90pwm2\*(C'\fR, \f(CW\*(C`at90pwm2b\*(C'\fR, \f(CW\*(C`at90pwm3\*(C'\fR, \f(CW\*(C`at90pwm3b\*(C'\fR, \f(CW\*(C`at90pwm81\*(C'\fR.
  .ie n .IP """avr5""" 4
! .el .IP \f(CWavr5\fR 4
  .IX Item "avr5"
! "Enhanced" devices with 16 KiB up to 64 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atmega16\*(C'\fR, \f(CW\*(C`atmega16a\*(C'\fR, \f(CW\*(C`atmega16hva\*(C'\fR, \f(CW\*(C`atmega16hva2\*(C'\fR, \f(CW\*(C`atmega16hvb\*(C'\fR, \f(CW\*(C`atmega16hvbrevb\*(C'\fR, \f(CW\*(C`atmega16m1\*(C'\fR, \f(CW\*(C`atmega16u4\*(C'\fR, \f(CW\*(C`atmega161\*(C'\fR, \f(CW\*(C`atmega162\*(C'\fR, \f(CW\*(C`atmega163\*(C'\fR, \f(CW\*(C`atmega164a\*(C'\fR, \f(CW\*(C`atmega164p\*(C'\fR, \f(CW\*(C`atmega164pa\*(C'\fR, \f(CW\*(C`atmega165\*(C'\fR, \f(CW\*(C`atmega165a\*(C'\fR, \f(CW\*(C`atmega165p\*(C'\fR, \f(CW\*(C`atmega165pa\*(C'\fR, \f(CW\*(C`atmega168\*(C'\fR, \f(CW\*(C`atmega168a\*(C'\fR, \f(CW\*(C`atmega168p\*(C'\fR, \f(CW\*(C`atmega168pa\*(C'\fR, \f(CW\*(C`atmega168pb\*(C'\fR, \f(CW\*(C`atmega169\*(C'\fR, \f(CW\*(C`atmega169a\*(C'\fR, \f(CW\*(C`atmega169p\*(C'\fR, \f(CW\*(C`atmega169pa\*(C'\fR, \f(CW\*(C`atmega32\*(C'\fR, \f(CW\*(C`atmega32a\*(C'\fR, \f(CW\*(C`atmega32c1\*(C'\fR, \f(CW\*(C`atmega32hvb\*(C'\fR, \f(CW\*(C`atmega32hvbrevb\*(C'\fR, \f(CW\*(C`atmega32m1\*(C'\fR, \f(CW\*(C`atmega32u4\*(C'\fR, \f(CW\*(C`atmega32u6\*(C'\fR, \f(CW\*(C`atmega323\*(C'\fR, \f(CW\*(C`atmega324a\*(C'\fR, \f(CW\*(C`atmega324p\*(C'\fR, \f(CW\*(C`atmega324pa\*(C'\fR, \f(CW\*(C`atmega324pb\*(C'\fR, \f(CW\*(C`atmega325\*(C'\fR, \f(CW\*(C`atmega325a\*(C'\fR, \f(CW\*(C`atmega325p\*(C'\fR, \f(CW\*(C`atmega325pa\*(C'\fR, \f(CW\*(C`atmega328\*(C'\fR, \f(CW\*(C`atmega328p\*(C'\fR, \f(CW\*(C`atmega328pb\*(C'\fR, \f(CW\*(C`atmega329\*(C'\fR, \f(CW\*(C`atmega329a\*(C'\fR, \f(CW\*(C`atmega329p\*(C'\fR, \f(CW\*(C`atmega329pa\*(C'\fR, \f(CW\*(C`atmega3250\*(C'\fR, \f(CW\*(C`atmega3250a\*(C'\fR, \f(CW\*(C`atmega3250p\*(C'\fR, \f(CW\*(C`atmega3250pa\*(C'\fR, \f(CW\*(C`atmega3290\*(C'\fR, \f(CW\*(C`atmega3290a\*(C'\fR, \f(CW\*(C`atmega3290p\*(C'\fR, \f(CW\*(C`atmega3290pa\*(C'\fR, \f(CW\*(C`atmega406\*(C'\fR, \f(CW\*(C`atmega64\*(C'\fR, \f(CW\*(C`atmega64a\*(C'\fR, \f(CW\*(C`atmega64c1\*(C'\fR, \f(CW\*(C`atmega64hve\*(C'\fR, \f(CW\*(C`atmega64hve2\*(C'\fR, \f(CW\*(C`atmega64m1\*(C'\fR, \f(CW\*(C`atmega64rfr2\*(C'\fR, \f(CW\*(C`atmega640\*(C'\fR, \f(CW\*(C`atmega644\*(C'\fR, \f(CW\*(C`atmega644a\*(C'\fR, \f(CW\*(C`atmega644p\*(C'\fR, \f(CW\*(C`atmega644pa\*(C'\fR, \f(CW\*(C`atmega644rfr2\*(C'\fR, \f(CW\*(C`atmega645\*(C'\fR, \f(CW\*(C`atmega645a\*(C'\fR, \f(CW\*(C`atmega645p\*(C'\fR, \f(CW\*(C`atmega649\*(C'\fR, \f(CW\*(C`atmega649a\*(C'\fR, \f(CW\*(C`atmega649p\*(C'\fR, \f(CW\*(C`atmega6450\*(C'\fR, \f(CW\*(C`atmega6450a\*(C'\fR, \f(CW\*(C`atmega6450p\*(C'\fR, \f(CW\*(C`atmega6490\*(C'\fR, \f(CW\*(C`atmega6490a\*(C'\fR, \f(CW\*(C`atmega6490p\*(C'\fR, \f(CW\*(C`ata5790\*(C'\fR, \f(CW\*(C`ata5790n\*(C'\fR, \f(CW\*(C`ata5791\*(C'\fR, \f(CW\*(C`ata6613c\*(C'\fR, \f(CW\*(C`ata6614q\*(C'\fR, \f(CW\*(C`ata5782\*(C'\fR, \f(CW\*(C`ata5831\*(C'\fR, \f(CW\*(C`ata8210\*(C'\fR, \f(CW\*(C`ata8510\*(C'\fR, \f(CW\*(C`ata5787\*(C'\fR, \f(CW\*(C`ata5835\*(C'\fR, \f(CW\*(C`ata5700m322\*(C'\fR, \f(CW\*(C`ata5702m322\*(C'\fR, \f(CW\*(C`at90pwm161\*(C'\fR, \f(CW\*(C`at90pwm216\*(C'\fR, \f(CW\*(C`at90pwm316\*(C'\fR, \f(CW\*(C`at90can32\*(C'\fR, \f(CW\*(C`at90can64\*(C'\fR, \f(CW\*(C`at90scr100\*(C'\fR, \f(CW\*(C`at90usb646\*(C'\fR, \f(CW\*(C`at90usb647\*(C'\fR, \f(CW\*(C`at94k\*(C'\fR, \f(CW\*(C`m3000\*(C'\fR.
  .ie n .IP """avr51""" 4
! .el .IP \f(CWavr51\fR 4
  .IX Item "avr51"
! "Enhanced" devices with 128 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atmega128\*(C'\fR, \f(CW\*(C`atmega128a\*(C'\fR, \f(CW\*(C`atmega128rfa1\*(C'\fR, \f(CW\*(C`atmega128rfr2\*(C'\fR, \f(CW\*(C`atmega1280\*(C'\fR, \f(CW\*(C`atmega1281\*(C'\fR, \f(CW\*(C`atmega1284\*(C'\fR, \f(CW\*(C`atmega1284p\*(C'\fR, \f(CW\*(C`atmega1284rfr2\*(C'\fR, \f(CW\*(C`at90can128\*(C'\fR, \f(CW\*(C`at90usb1286\*(C'\fR, \f(CW\*(C`at90usb1287\*(C'\fR.
  .ie n .IP """avr6""" 4
! .el .IP \f(CWavr6\fR 4
  .IX Item "avr6"
! "Enhanced" devices with 3\-byte PC, i.e. with more than 128 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atmega256rfr2\*(C'\fR, \f(CW\*(C`atmega2560\*(C'\fR, \f(CW\*(C`atmega2561\*(C'\fR, \f(CW\*(C`atmega2564rfr2\*(C'\fR.
  .ie n .IP """avrxmega2""" 4
! .el .IP \f(CWavrxmega2\fR 4
  .IX Item "avrxmega2"
! "XMEGA" devices with more than 8 KiB and up to 64 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atxmega8e5\*(C'\fR, \f(CW\*(C`atxmega16a4\*(C'\fR, \f(CW\*(C`atxmega16a4u\*(C'\fR, \f(CW\*(C`atxmega16c4\*(C'\fR, \f(CW\*(C`atxmega16d4\*(C'\fR, \f(CW\*(C`atxmega16e5\*(C'\fR, \f(CW\*(C`atxmega32a4\*(C'\fR, \f(CW\*(C`atxmega32a4u\*(C'\fR, \f(CW\*(C`atxmega32c3\*(C'\fR, \f(CW\*(C`atxmega32c4\*(C'\fR, \f(CW\*(C`atxmega32d3\*(C'\fR, \f(CW\*(C`atxmega32d4\*(C'\fR, \f(CW\*(C`atxmega32e5\*(C'\fR, \f(CW\*(C`avr64da28\*(C'\fR, \f(CW\*(C`avr64da28s\*(C'\fR, \f(CW\*(C`avr64da32\*(C'\fR, \f(CW\*(C`avr64da32s\*(C'\fR, \f(CW\*(C`avr64da48\*(C'\fR, \f(CW\*(C`avr64da48s\*(C'\fR, \f(CW\*(C`avr64da64\*(C'\fR, \f(CW\*(C`avr64da64s\*(C'\fR, \f(CW\*(C`avr64db28\*(C'\fR, \f(CW\*(C`avr64db32\*(C'\fR, \f(CW\*(C`avr64db48\*(C'\fR, \f(CW\*(C`avr64db64\*(C'\fR, \f(CW\*(C`avr64dd14\*(C'\fR, \f(CW\*(C`avr64dd20\*(C'\fR, \f(CW\*(C`avr64dd28\*(C'\fR, \f(CW\*(C`avr64dd32\*(C'\fR, \f(CW\*(C`avr64du28\*(C'\fR, \f(CW\*(C`avr64du32\*(C'\fR, \f(CW\*(C`avr64ea28\*(C'\fR, \f(CW\*(C`avr64ea32\*(C'\fR, \f(CW\*(C`avr64ea48\*(C'\fR, \f(CW\*(C`avr64sd28\*(C'\fR, \f(CW\*(C`avr64sd32\*(C'\fR, \f(CW\*(C`avr64sd48\*(C'\fR.
  .ie n .IP """avrxmega3""" 4
! .el .IP \f(CWavrxmega3\fR 4
  .IX Item "avrxmega3"
! "XMEGA" devices with up to 64 KiB of combined program memory and RAM, and with program memory visible in the RAM address space.
! \&\fImcu\fR = \f(CW\*(C`attiny202\*(C'\fR, \f(CW\*(C`attiny204\*(C'\fR, \f(CW\*(C`attiny212\*(C'\fR, \f(CW\*(C`attiny214\*(C'\fR, \f(CW\*(C`attiny402\*(C'\fR, \f(CW\*(C`attiny404\*(C'\fR, \f(CW\*(C`attiny406\*(C'\fR, \f(CW\*(C`attiny412\*(C'\fR, \f(CW\*(C`attiny414\*(C'\fR, \f(CW\*(C`attiny416\*(C'\fR, \f(CW\*(C`attiny416auto\*(C'\fR, \f(CW\*(C`attiny417\*(C'\fR, \f(CW\*(C`attiny424\*(C'\fR, \f(CW\*(C`attiny426\*(C'\fR, \f(CW\*(C`attiny427\*(C'\fR, \f(CW\*(C`attiny804\*(C'\fR, \f(CW\*(C`attiny806\*(C'\fR, \f(CW\*(C`attiny807\*(C'\fR, \f(CW\*(C`attiny814\*(C'\fR, \f(CW\*(C`attiny816\*(C'\fR, \f(CW\*(C`attiny817\*(C'\fR, \f(CW\*(C`attiny824\*(C'\fR, \f(CW\*(C`attiny826\*(C'\fR, \f(CW\*(C`attiny827\*(C'\fR, \f(CW\*(C`attiny1604\*(C'\fR, \f(CW\*(C`attiny1606\*(C'\fR, \f(CW\*(C`attiny1607\*(C'\fR, \f(CW\*(C`attiny1614\*(C'\fR, \f(CW\*(C`attiny1616\*(C'\fR, \f(CW\*(C`attiny1617\*(C'\fR, \f(CW\*(C`attiny1624\*(C'\fR, \f(CW\*(C`attiny1626\*(C'\fR, \f(CW\*(C`attiny1627\*(C'\fR, \f(CW\*(C`attiny3214\*(C'\fR, \f(CW\*(C`attiny3216\*(C'\fR, \f(CW\*(C`attiny3217\*(C'\fR, \f(CW\*(C`attiny3224\*(C'\fR, \f(CW\*(C`attiny3226\*(C'\fR, \f(CW\*(C`attiny3227\*(C'\fR, \f(CW\*(C`atmega808\*(C'\fR, \f(CW\*(C`atmega809\*(C'\fR, \f(CW\*(C`atmega1608\*(C'\fR, \f(CW\*(C`atmega1609\*(C'\fR, \f(CW\*(C`atmega3208\*(C'\fR, \f(CW\*(C`atmega3209\*(C'\fR, \f(CW\*(C`atmega4808\*(C'\fR, \f(CW\*(C`atmega4809\*(C'\fR, \f(CW\*(C`avr16dd14\*(C'\fR, \f(CW\*(C`avr16dd20\*(C'\fR, \f(CW\*(C`avr16dd28\*(C'\fR, \f(CW\*(C`avr16dd32\*(C'\fR, \f(CW\*(C`avr16du14\*(C'\fR, \f(CW\*(C`avr16du20\*(C'\fR, \f(CW\*(C`avr16du28\*(C'\fR, \f(CW\*(C`avr16du32\*(C'\fR, \f(CW\*(C`avr16ea28\*(C'\fR, \f(CW\*(C`avr16ea32\*(C'\fR, \f(CW\*(C`avr16ea48\*(C'\fR, \f(CW\*(C`avr16eb14\*(C'\fR, \f(CW\*(C`avr16eb20\*(C'\fR, \f(CW\*(C`avr16eb28\*(C'\fR, \f(CW\*(C`avr16eb32\*(C'\fR, \f(CW\*(C`avr16la14\*(C'\fR, \f(CW\*(C`avr16la20\*(C'\fR, \f(CW\*(C`avr16la28\*(C'\fR, \f(CW\*(C`avr16la32\*(C'\fR, \f(CW\*(C`avr32da28\*(C'\fR, \f(CW\*(C`avr32da28s\*(C'\fR, \f(CW\*(C`avr32da32\*(C'\fR, \f(CW\*(C`avr32da32s\*(C'\fR, \f(CW\*(C`avr32da48\*(C'\fR, \f(CW\*(C`avr32da48s\*(C'\fR, \f(CW\*(C`avr32db28\*(C'\fR, \f(CW\*(C`avr32db32\*(C'\fR, \f(CW\*(C`avr32db48\*(C'\fR, \f(CW\*(C`avr32dd14\*(C'\fR, \f(CW\*(C`avr32dd20\*(C'\fR, \f(CW\*(C`avr32dd28\*(C'\fR, \f(CW\*(C`avr32dd32\*(C'\fR, \f(CW\*(C`avr32du14\*(C'\fR, \f(CW\*(C`avr32du20\*(C'\fR, \f(CW\*(C`avr32du28\*(C'\fR, \f(CW\*(C`avr32du32\*(C'\fR, \f(CW\*(C`avr32ea28\*(C'\fR, \f(CW\*(C`avr32ea32\*(C'\fR, \f(CW\*(C`avr32ea48\*(C'\fR, \f(CW\*(C`avr32eb14\*(C'\fR, \f(CW\*(C`avr32eb20\*(C'\fR, \f(CW\*(C`avr32eb28\*(C'\fR, \f(CW\*(C`avr32eb32\*(C'\fR, \f(CW\*(C`avr32la14\*(C'\fR, \f(CW\*(C`avr32la20\*(C'\fR, \f(CW\*(C`avr32la28\*(C'\fR, \f(CW\*(C`avr32la32\*(C'\fR, \f(CW\*(C`avr32sd20\*(C'\fR, \f(CW\*(C`avr32sd28\*(C'\fR, \f(CW\*(C`avr32sd32\*(C'\fR.
  .ie n .IP """avrxmega4""" 4
! .el .IP \f(CWavrxmega4\fR 4
  .IX Item "avrxmega4"
! "XMEGA" devices with more than 64 KiB and up to 128 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atxmega64a3\*(C'\fR, \f(CW\*(C`atxmega64a3u\*(C'\fR, \f(CW\*(C`atxmega64a4u\*(C'\fR, \f(CW\*(C`atxmega64b1\*(C'\fR, \f(CW\*(C`atxmega64b3\*(C'\fR, \f(CW\*(C`atxmega64c3\*(C'\fR, \f(CW\*(C`atxmega64d3\*(C'\fR, \f(CW\*(C`atxmega64d4\*(C'\fR, \f(CW\*(C`avr128da28\*(C'\fR, \f(CW\*(C`avr128da28s\*(C'\fR, \f(CW\*(C`avr128da32\*(C'\fR, \f(CW\*(C`avr128da32s\*(C'\fR, \f(CW\*(C`avr128da48\*(C'\fR, \f(CW\*(C`avr128da48s\*(C'\fR, \f(CW\*(C`avr128da64\*(C'\fR, \f(CW\*(C`avr128da64s\*(C'\fR, \f(CW\*(C`avr128db28\*(C'\fR, \f(CW\*(C`avr128db32\*(C'\fR, \f(CW\*(C`avr128db48\*(C'\fR, \f(CW\*(C`avr128db64\*(C'\fR.
  .ie n .IP """avrxmega5""" 4
! .el .IP \f(CWavrxmega5\fR 4
  .IX Item "avrxmega5"
! "XMEGA" devices with more than 64 KiB and up to 128 KiB of program memory and more than 64 KiB of RAM.
  \&\fImcu\fR = \f(CW\*(C`atxmega64a1\*(C'\fR, \f(CW\*(C`atxmega64a1u\*(C'\fR.
  .ie n .IP """avrxmega6""" 4
! .el .IP \f(CWavrxmega6\fR 4
  .IX Item "avrxmega6"
! "XMEGA" devices with more than 128 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`atxmega128a3\*(C'\fR, \f(CW\*(C`atxmega128a3u\*(C'\fR, \f(CW\*(C`atxmega128b1\*(C'\fR, \f(CW\*(C`atxmega128b3\*(C'\fR, \f(CW\*(C`atxmega128c3\*(C'\fR, \f(CW\*(C`atxmega128d3\*(C'\fR, \f(CW\*(C`atxmega128d4\*(C'\fR, \f(CW\*(C`atxmega192a3\*(C'\fR, \f(CW\*(C`atxmega192a3u\*(C'\fR, \f(CW\*(C`atxmega192c3\*(C'\fR, \f(CW\*(C`atxmega192d3\*(C'\fR, \f(CW\*(C`atxmega256a3\*(C'\fR, \f(CW\*(C`atxmega256a3b\*(C'\fR, \f(CW\*(C`atxmega256a3bu\*(C'\fR, \f(CW\*(C`atxmega256a3u\*(C'\fR, \f(CW\*(C`atxmega256c3\*(C'\fR, \f(CW\*(C`atxmega256d3\*(C'\fR, \f(CW\*(C`atxmega384c3\*(C'\fR, \f(CW\*(C`atxmega384d3\*(C'\fR.
  .ie n .IP """avrxmega7""" 4
! .el .IP \f(CWavrxmega7\fR 4
  .IX Item "avrxmega7"
! "XMEGA" devices with more than 128 KiB of program memory and more than 64 KiB of RAM.
  \&\fImcu\fR = \f(CW\*(C`atxmega128a1\*(C'\fR, \f(CW\*(C`atxmega128a1u\*(C'\fR, \f(CW\*(C`atxmega128a4u\*(C'\fR.
  .ie n .IP """avrtiny""" 4
! .el .IP \f(CWavrtiny\fR 4
  .IX Item "avrtiny"
! "Reduced Tiny" Tiny core devices with only 16 general purpose registers and 512 B up to 4 KiB of program memory.
  \&\fImcu\fR = \f(CW\*(C`attiny4\*(C'\fR, \f(CW\*(C`attiny5\*(C'\fR, \f(CW\*(C`attiny9\*(C'\fR, \f(CW\*(C`attiny10\*(C'\fR, \f(CW\*(C`attiny102\*(C'\fR, \f(CW\*(C`attiny104\*(C'\fR, \f(CW\*(C`attiny20\*(C'\fR, \f(CW\*(C`attiny40\*(C'\fR.
  .ie n .IP """avr1""" 4
! .el .IP \f(CWavr1\fR 4
  .IX Item "avr1"
! This ISA is implemented by the minimal AVR core and supported for assembler only.
  \&\fImcu\fR = \f(CW\*(C`attiny11\*(C'\fR, \f(CW\*(C`attiny12\*(C'\fR, \f(CW\*(C`attiny15\*(C'\fR, \f(CW\*(C`attiny28\*(C'\fR, \f(CW\*(C`at90s1200\*(C'\fR.
  .RE
  .RS 4
  .RE
! .IP \fB\-mabsdata\fR 4
  .IX Item "-mabsdata"
! Assume that all data in static storage can be accessed by LDS / STS
  instructions.  This option has only an effect on reduced Tiny devices like
  ATtiny40.  See also the \f(CW\*(C`absdata\*(C'\fR
! \&\fBAVR Variable Attributes,variable attribute\fR.
! .IP \fB\-mcvt\fR 4
  .IX Item "-mcvt"
! Use a \fIcompact vector table\fR.  Some devices support a CVT
! with only four entries: 0=Reset, 1=NMI, 2=Prio1 IRQ, 3=Prio0 IRQs.
! This option will link startup code from \f(CW\*(C`crt\fR\f(CImcu\fR\f(CW\-cvt.o\*(C'\fR
! instead of the usual \f(CW\*(C`crt\fR\f(CImcu\fR\f(CW.o\*(C'\fR.
  Apart from providing a compact vector table, the startup code will set bit
! \&\f(CW\*(C`CPUINT_CTRLA.CPUINT_CVT\*(C'\fR which enables the CVT on the device.
  .Sp
  When you do not want the startup code to set \f(CW\*(C`CPUINT_CTRLA.CPUINT_CVT\*(C'\fR,
  then you can satisfy symbol \f(CW\*(C`_\|_init_cvt\*(C'\fR so that the respective
! code is no more pulled in from \f(CW\*(C`lib\fR\f(CImcu\fR\f(CW.a\*(C'\fR.
  For example, you can link with \f(CW\*(C`\-Wl,\-\-defsym,_\|_init_cvt=0\*(C'\fR.
  .Sp
! The CVT startup code is available since
! AVR\-LibC\ v2.3 (\f(CW\*(C`https://github.com/avrdudes/avr\-libc/issues/1010\*(C'\fR).
! .IP \fB\-mdouble=\fR\fIbits\fR 4
  .IX Item "-mdouble=bits"
  .PD 0
! .IP \fB\-mlong\-double=\fR\fIbits\fR 4
  .IX Item "-mlong-double=bits"
  .PD
  Set the size (in bits) of the \f(CW\*(C`double\*(C'\fR or \f(CW\*(C`long double\*(C'\fR type,
*************** Whether or not a specific value for \fIb
*** 23971,24000 ****
  the \f(CW\*(C`\-\-with\-double=\*(C'\fR and \f(CW\*(C`\-\-with\-long\-double=\*(C'\fR
  configure\ options (\f(CW\*(C`https://gcc.gnu.org/install/configure.html#avr\*(C'\fR),
  and the same applies for the default values of the options.
! .IP "\fB\-mgas\-isr\-prologues\fR" 4
  .IX Item "-mgas-isr-prologues"
  Interrupt service routines (ISRs) may use the \f(CW\*(C`_\|_gcc_isr\*(C'\fR pseudo
! instruction supported by \s-1GNU\s0 Binutils.
  If this option is on, the feature can still be disabled for individual
! ISRs by means of the \fB\s-1AVR\s0 Function Attributes,,\f(CB\*(C`no_gccisr\*(C'\fB\fR
  function attribute.  This feature is activated per default
  if optimization is on (but not with \fB\-Og\fR, \f(CW@pxref\fR{Optimize Options}),
! and if \s-1GNU\s0 Binutils support \s-1PR21683\s0 (\f(CW\*(C`https://sourceware.org/PR21683\*(C'\fR).
! .IP "\fB\-mint8\fR" 4
  .IX Item "-mint8"
  Assume \f(CW\*(C`int\*(C'\fR to be 8\-bit integer.  This affects the sizes of all types: a
  \&\f(CW\*(C`char\*(C'\fR is 1 byte, an \f(CW\*(C`int\*(C'\fR is 1 byte, a \f(CW\*(C`long\*(C'\fR is 2 bytes,
  and \f(CW\*(C`long long\*(C'\fR is 4 bytes.  Please note that this option does not
  conform to the C standards, but it results in smaller code
  size.
! .IP "\fB\-mmain\-is\-OS_task\fR" 4
  .IX Item "-mmain-is-OS_task"
  Do not save registers in \f(CW\*(C`main\*(C'\fR.  The effect is the same like
! attaching attribute \fB\s-1AVR\s0 Function Attributes,,\f(CB\*(C`OS_task\*(C'\fB\fR
  to \f(CW\*(C`main\*(C'\fR. It is activated per default if optimization is on.
! .IP "\fB\-mno\-call\-main\fR" 4
  .IX Item "-mno-call-main"
! Don't run \f(CW\*(C`main\*(C'\fR by means of
  .Sp
  .Vb 2
  \&        XCALL  main
--- 23906,23935 ----
  the \f(CW\*(C`\-\-with\-double=\*(C'\fR and \f(CW\*(C`\-\-with\-long\-double=\*(C'\fR
  configure\ options (\f(CW\*(C`https://gcc.gnu.org/install/configure.html#avr\*(C'\fR),
  and the same applies for the default values of the options.
! .IP \fB\-mgas\-isr\-prologues\fR 4
  .IX Item "-mgas-isr-prologues"
  Interrupt service routines (ISRs) may use the \f(CW\*(C`_\|_gcc_isr\*(C'\fR pseudo
! instruction supported by GNU Binutils.
  If this option is on, the feature can still be disabled for individual
! ISRs by means of the \fBAVR Function Attributes,,\fR\f(CB\*(C`no_gccisr\*(C'\fR
  function attribute.  This feature is activated per default
  if optimization is on (but not with \fB\-Og\fR, \f(CW@pxref\fR{Optimize Options}),
! and if GNU Binutils support PR21683 (\f(CW\*(C`https://sourceware.org/PR21683\*(C'\fR).
! .IP \fB\-mint8\fR 4
  .IX Item "-mint8"
  Assume \f(CW\*(C`int\*(C'\fR to be 8\-bit integer.  This affects the sizes of all types: a
  \&\f(CW\*(C`char\*(C'\fR is 1 byte, an \f(CW\*(C`int\*(C'\fR is 1 byte, a \f(CW\*(C`long\*(C'\fR is 2 bytes,
  and \f(CW\*(C`long long\*(C'\fR is 4 bytes.  Please note that this option does not
  conform to the C standards, but it results in smaller code
  size.
! .IP \fB\-mmain\-is\-OS_task\fR 4
  .IX Item "-mmain-is-OS_task"
  Do not save registers in \f(CW\*(C`main\*(C'\fR.  The effect is the same like
! attaching attribute \fBAVR Function Attributes,,\fR\f(CB\*(C`OS_task\*(C'\fR
  to \f(CW\*(C`main\*(C'\fR. It is activated per default if optimization is on.
! .IP \fB\-mno\-call\-main\fR 4
  .IX Item "-mno-call-main"
! Don\*(Aqt run \f(CW\*(C`main\*(C'\fR by means of
  .Sp
  .Vb 2
  \&        XCALL  main
*************** By setting this option the user asserts
*** 24008,24026 ****
  .Sp
  This option can be used for devices with very limited resources in order
  to save a few bytes of code and stack space.  It will work as expected since
! AVR-LibC\ v2.3 (\f(CW\*(C`https://github.com/avrdudes/avr\-libc/issues/1012\*(C'\fR).
  With older versions, there will be no performance gain.
! .IP "\fB\-mno\-interrupts\fR" 4
  .IX Item "-mno-interrupts"
  Generated code is not compatible with hardware interrupts.
  Code size is smaller.
! .IP "\fB\-mrelax\fR" 4
  .IX Item "-mrelax"
  Try to replace \f(CW\*(C`CALL\*(C'\fR resp. \f(CW\*(C`JMP\*(C'\fR instruction by the shorter
  \&\f(CW\*(C`RCALL\*(C'\fR resp. \f(CW\*(C`RJMP\*(C'\fR instruction if applicable.
  Setting \fB\-mrelax\fR just adds the \fB\-\-mlink\-relax\fR option to
! the assembler's command line and the \fB\-\-relax\fR option to the
! linker's command line.
  .Sp
  Jump relaxing is performed by the linker because jump offsets are not
  known before code is located. Therefore, the assembler code generated by the
--- 23943,23961 ----
  .Sp
  This option can be used for devices with very limited resources in order
  to save a few bytes of code and stack space.  It will work as expected since
! AVR\-LibC\ v2.3 (\f(CW\*(C`https://github.com/avrdudes/avr\-libc/issues/1012\*(C'\fR).
  With older versions, there will be no performance gain.
! .IP \fB\-mno\-interrupts\fR 4
  .IX Item "-mno-interrupts"
  Generated code is not compatible with hardware interrupts.
  Code size is smaller.
! .IP \fB\-mrelax\fR 4
  .IX Item "-mrelax"
  Try to replace \f(CW\*(C`CALL\*(C'\fR resp. \f(CW\*(C`JMP\*(C'\fR instruction by the shorter
  \&\f(CW\*(C`RCALL\*(C'\fR resp. \f(CW\*(C`RJMP\*(C'\fR instruction if applicable.
  Setting \fB\-mrelax\fR just adds the \fB\-\-mlink\-relax\fR option to
! the assembler\*(Aqs command line and the \fB\-\-relax\fR option to the
! linker\*(Aqs command line.
  .Sp
  Jump relaxing is performed by the linker because jump offsets are not
  known before code is located. Therefore, the assembler code generated by the
*************** differ from instructions in the assemble
*** 24029,24061 ****
  .Sp
  Relaxing must be turned on if linker stubs are needed, see the
  section on \f(CW\*(C`EIND\*(C'\fR and linker stubs below.
! .IP "\fB\-mrodata\-in\-ram\fR" 4
  .IX Item "-mrodata-in-ram"
  .PD 0
! .IP "\fB\-mno\-rodata\-in\-ram\fR" 4
  .IX Item "-mno-rodata-in-ram"
  .PD
! Locate the \f(CW\*(C`.rodata\*(C'\fR sections for read-only data in \s-1RAM\s0 resp.
  in program memory.
  For most devices, there is no choice and this option acts rather
  like an assertion.
  .Sp
  Since v14 and for the AVR64* and AVR128* devices, \f(CW\*(C`.rodata\*(C'\fR
! is located in flash memory per default, provided the required \s-1GNU\s0 Binutils
! support (\s-1PR31124\s0 (\f(CW\*(C`https://sourceware.org/PR31124\*(C'\fR)) is available.
  In that case, \fB\-mrodata\-in\-ram\fR can be used to return to the old
! layout with \f(CW\*(C`.rodata\*(C'\fR in \s-1RAM.\s0
! .IP "\fB\-mtiny\-stack\fR" 4
  .IX Item "-mtiny-stack"
  Only change the lower 8 bits of the stack pointer.
! .IP "\fB\-mfract\-convert\-truncate\fR" 4
  .IX Item "-mfract-convert-truncate"
! Allow to use truncation instead of rounding towards zero for fractional fixed-point types.
! .IP "\fB\-nodevicelib\fR" 4
  .IX Item "-nodevicelib"
! Don't link against AVR-LibC's device specific library \f(CW\*(C`lib\f(CImcu\f(CW.a\*(C'\fR.
  .Sp
! Notice that since AVR-LibC v2.3, that library contains code that is
  essential for the correct functioning of a program.  In particular,
  it contains parts of the startup code like:
  \&\f(CW\*(C`_\|_init_sp\*(C'\fR (\f(CW\*(C`https://github.com/avrdudes/avr\-libc/issues/1011\*(C'\fR)
--- 23964,23996 ----
  .Sp
  Relaxing must be turned on if linker stubs are needed, see the
  section on \f(CW\*(C`EIND\*(C'\fR and linker stubs below.
! .IP \fB\-mrodata\-in\-ram\fR 4
  .IX Item "-mrodata-in-ram"
  .PD 0
! .IP \fB\-mno\-rodata\-in\-ram\fR 4
  .IX Item "-mno-rodata-in-ram"
  .PD
! Locate the \f(CW\*(C`.rodata\*(C'\fR sections for read\-only data in RAM resp.
  in program memory.
  For most devices, there is no choice and this option acts rather
  like an assertion.
  .Sp
  Since v14 and for the AVR64* and AVR128* devices, \f(CW\*(C`.rodata\*(C'\fR
! is located in flash memory per default, provided the required GNU Binutils
! support (PR31124 (\f(CW\*(C`https://sourceware.org/PR31124\*(C'\fR)) is available.
  In that case, \fB\-mrodata\-in\-ram\fR can be used to return to the old
! layout with \f(CW\*(C`.rodata\*(C'\fR in RAM.
! .IP \fB\-mtiny\-stack\fR 4
  .IX Item "-mtiny-stack"
  Only change the lower 8 bits of the stack pointer.
! .IP \fB\-mfract\-convert\-truncate\fR 4
  .IX Item "-mfract-convert-truncate"
! Allow to use truncation instead of rounding towards zero for fractional fixed\-point types.
! .IP \fB\-nodevicelib\fR 4
  .IX Item "-nodevicelib"
! Don\*(Aqt link against AVR\-LibC\*(Aqs device specific library \f(CW\*(C`lib\fR\f(CImcu\fR\f(CW.a\*(C'\fR.
  .Sp
! Notice that since AVR\-LibC v2.3, that library contains code that is
  essential for the correct functioning of a program.  In particular,
  it contains parts of the startup code like:
  \&\f(CW\*(C`_\|_init_sp\*(C'\fR (\f(CW\*(C`https://github.com/avrdudes/avr\-libc/issues/1011\*(C'\fR)
*************** to set up the hardware to use a compact
*** 24065,24094 ****
  \&\f(CW\*(C`_\|_call_main\*(C'\fR (\f(CW\*(C`https://github.com/avrdudes/avr\-libc/issues/1012\*(C'\fR)
  to call \f(CW\*(C`main\*(C'\fR and \f(CW\*(C`exit\*(C'\fR, and
  \&\f(CW\*(C`_\|_do_flmap_init\*(C'\fR (\f(CW\*(C`https://github.com/avrdudes/avr\-libc/issues/931\*(C'\fR)
! to set up \s-1FLMAP\s0 according to symbol \f(CW\*(C`_\|_flmap\*(C'\fR.
! .IP "\fB\-nodevicespecs\fR" 4
  .IX Item "-nodevicespecs"
! Don't add \fB\-specs=device\-specs/specs\-\fR\fImcu\fR to the compiler driver's
! command line.  The user takes responsibility for supplying the sub-processes
  like compiler proper, assembler and linker with appropriate command line
  options.  This means that the user has to supply her private device specs
! file by means of \fB\-specs=\fR\fIpath-to-specs-file\fR.  There is no
  more need for option \fB\-mmcu=\fR\fImcu\fR.
  .Sp
  This option can also serve as a replacement for the older way of
! specifying custom device-specs files that needed \fB\-B\fR \fIsome-path\fR to point to a directory
  which contains a folder named \f(CW\*(C`device\-specs\*(C'\fR which contains a specs file named
! \&\f(CW\*(C`specs\-\f(CImcu\f(CW\*(C'\fR, where \fImcu\fR was specified by \fB\-mmcu=\fR\fImcu\fR.
! .IP "\fB\-Waddr\-space\-convert\fR" 4
  .IX Item "-Waddr-space-convert"
  Warn about conversions between address spaces in the case where the
  resulting address space is not contained in the incoming address space.
! .IP "\fB\-Wmisspelled\-isr\fR" 4
  .IX Item "-Wmisspelled-isr"
! Warn if the \s-1ISR\s0 is misspelled, i.e. without _\|_vector prefix.
  Enabled by default.
  .PP
! \s-1AVR\s0 Optimization Options
  .IX Subsection "AVR Optimization Options"
  .PP
  The following options are pure optimization options.
--- 24000,24029 ----
  \&\f(CW\*(C`_\|_call_main\*(C'\fR (\f(CW\*(C`https://github.com/avrdudes/avr\-libc/issues/1012\*(C'\fR)
  to call \f(CW\*(C`main\*(C'\fR and \f(CW\*(C`exit\*(C'\fR, and
  \&\f(CW\*(C`_\|_do_flmap_init\*(C'\fR (\f(CW\*(C`https://github.com/avrdudes/avr\-libc/issues/931\*(C'\fR)
! to set up FLMAP according to symbol \f(CW\*(C`_\|_flmap\*(C'\fR.
! .IP \fB\-nodevicespecs\fR 4
  .IX Item "-nodevicespecs"
! Don\*(Aqt add \fB\-specs=device\-specs/specs\-\fR\fImcu\fR to the compiler driver\*(Aqs
! command line.  The user takes responsibility for supplying the sub\-processes
  like compiler proper, assembler and linker with appropriate command line
  options.  This means that the user has to supply her private device specs
! file by means of \fB\-specs=\fR\fIpath\-to\-specs\-file\fR.  There is no
  more need for option \fB\-mmcu=\fR\fImcu\fR.
  .Sp
  This option can also serve as a replacement for the older way of
! specifying custom device\-specs files that needed \fB\-B\fR \fIsome\-path\fR to point to a directory
  which contains a folder named \f(CW\*(C`device\-specs\*(C'\fR which contains a specs file named
! \&\f(CW\*(C`specs\-\fR\f(CImcu\fR\f(CW\*(C'\fR, where \fImcu\fR was specified by \fB\-mmcu=\fR\fImcu\fR.
! .IP \fB\-Waddr\-space\-convert\fR 4
  .IX Item "-Waddr-space-convert"
  Warn about conversions between address spaces in the case where the
  resulting address space is not contained in the incoming address space.
! .IP \fB\-Wmisspelled\-isr\fR 4
  .IX Item "-Wmisspelled-isr"
! Warn if the ISR is misspelled, i.e. without _\|_vector prefix.
  Enabled by default.
  .PP
! AVR Optimization Options
  .IX Subsection "AVR Optimization Options"
  .PP
  The following options are pure optimization options.
*************** Options \fB\-mgas\-isr\-prologues\fR, \f
*** 24096,24102 ****
  \&\fB\-mno\-call\-main\fR and \fB\-mrelax\fR from above are only
  \&\fIalmost\fR optimization options, since there are rare occasions
  where their different code generation matters.
! .IP "\fB\-maccumulate\-args\fR" 4
  .IX Item "-maccumulate-args"
  Accumulate outgoing function arguments and acquire/release the needed
  stack space for outgoing function arguments once in function
--- 24031,24037 ----
  \&\fB\-mno\-call\-main\fR and \fB\-mrelax\fR from above are only
  \&\fIalmost\fR optimization options, since there are rare occasions
  where their different code generation matters.
! .IP \fB\-maccumulate\-args\fR 4
  .IX Item "-maccumulate-args"
  Accumulate outgoing function arguments and acquire/release the needed
  stack space for outgoing function arguments once in function
*************** See also the \fB\-fdefer\-pop\fR
*** 24106,24168 ****
  \&\fBOptimize Options,,optimization option\fR.
  .Sp
  Popping the arguments after the function call can be expensive on
! \&\s-1AVR\s0 so that accumulating the stack space might lead to smaller
  executables because arguments need not be removed from the
  stack after such a function call.
  .Sp
  This option can lead to reduced code size for functions that perform
  several calls to functions that get their arguments on the stack like
! calls to printf-like functions.
! .IP "\fB\-mbranch\-cost=\fR\fIcost\fR" 4
  .IX Item "-mbranch-cost=cost"
  Set the branch costs for conditional branch instructions to
! \&\fIcost\fR.  Reasonable values for \fIcost\fR are small, non-negative
  integers. The default branch cost is 0.
! .IP "\fB\-mcall\-prologues\fR" 4
  .IX Item "-mcall-prologues"
  Functions prologues/epilogues are expanded as calls to appropriate
  subroutines.  Code size is smaller.
! .IP "\fB\-mfuse\-add\fR" 4
  .IX Item "-mfuse-add"
  .PD 0
! .IP "\fB\-mno\-fuse\-add\fR" 4
  .IX Item "-mno-fuse-add"
! .IP "\fB\-mfuse\-add=\fR\fIlevel\fR" 4
  .IX Item "-mfuse-add=level"
  .PD
  Optimize indirect memory accesses on reduced Tiny devices.
! The default uses \f(CW\*(C`\f(CIlevel\f(CW=1\*(C'\fR for optimizations \fB\-Og\fR
! and \fB\-O1\fR, and \f(CW\*(C`\f(CIlevel\f(CW=2\*(C'\fR for higher optimizations.
  Valid values for \fIlevel\fR are \f(CW0\fR, \f(CW1\fR and \f(CW2\fR.
! .IP "\fB\-mfuse\-move\fR" 4
  .IX Item "-mfuse-move"
  .PD 0
! .IP "\fB\-mno\-fuse\-move\fR" 4
  .IX Item "-mno-fuse-move"
! .IP "\fB\-mfuse\-move=\fR\fIlevel\fR" 4
  .IX Item "-mfuse-move=level"
  .PD
  Run a post reload optimization pass that tries to fuse move instructions
! and to split multi-byte instructions into 8\-bit operations.
! The default uses \f(CW\*(C`\f(CIlevel\f(CW=3\*(C'\fR for optimization \fB\-O1\fR,
! and \f(CW\*(C`\f(CIlevel\f(CW=23\*(C'\fR for higher optimizations.
  Valid values for \fIlevel\fR are in the range \f(CW0\fR ... \f(CW23\fR
  which is a 3:2:2:2 mixed radix value.  Each digit controls some
  aspect of the optimization.
! .IP "\fB\-mfuse\-move2\fR" 4
  .IX Item "-mfuse-move2"
  Run a post combine optimization pass that tries to fuse move instructions.
! .IP "\fB\-mstrict\-X\fR" 4
  .IX Item "-mstrict-X"
  Use address register \f(CW\*(C`X\*(C'\fR in a way proposed by the hardware.  This means
! that \f(CW\*(C`X\*(C'\fR is only used in indirect, post-increment or
! pre-decrement addressing.
  .Sp
  Without this option, the \f(CW\*(C`X\*(C'\fR register may be used in the same way
  as \f(CW\*(C`Y\*(C'\fR or \f(CW\*(C`Z\*(C'\fR which then is emulated by additional
  instructions.
  For example, loading a value with \f(CW\*(C`X+const\*(C'\fR addressing with a
! small non-negative \f(CW\*(C`const < 64\*(C'\fR to a register \fIRn\fR is
  performed as
  .Sp
  .Vb 3
--- 24041,24103 ----
  \&\fBOptimize Options,,optimization option\fR.
  .Sp
  Popping the arguments after the function call can be expensive on
! AVR so that accumulating the stack space might lead to smaller
  executables because arguments need not be removed from the
  stack after such a function call.
  .Sp
  This option can lead to reduced code size for functions that perform
  several calls to functions that get their arguments on the stack like
! calls to printf\-like functions.
! .IP \fB\-mbranch\-cost=\fR\fIcost\fR 4
  .IX Item "-mbranch-cost=cost"
  Set the branch costs for conditional branch instructions to
! \&\fIcost\fR.  Reasonable values for \fIcost\fR are small, non\-negative
  integers. The default branch cost is 0.
! .IP \fB\-mcall\-prologues\fR 4
  .IX Item "-mcall-prologues"
  Functions prologues/epilogues are expanded as calls to appropriate
  subroutines.  Code size is smaller.
! .IP \fB\-mfuse\-add\fR 4
  .IX Item "-mfuse-add"
  .PD 0
! .IP \fB\-mno\-fuse\-add\fR 4
  .IX Item "-mno-fuse-add"
! .IP \fB\-mfuse\-add=\fR\fIlevel\fR 4
  .IX Item "-mfuse-add=level"
  .PD
  Optimize indirect memory accesses on reduced Tiny devices.
! The default uses \f(CW\*(C`\fR\f(CIlevel\fR\f(CW=1\*(C'\fR for optimizations \fB\-Og\fR
! and \fB\-O1\fR, and \f(CW\*(C`\fR\f(CIlevel\fR\f(CW=2\*(C'\fR for higher optimizations.
  Valid values for \fIlevel\fR are \f(CW0\fR, \f(CW1\fR and \f(CW2\fR.
! .IP \fB\-mfuse\-move\fR 4
  .IX Item "-mfuse-move"
  .PD 0
! .IP \fB\-mno\-fuse\-move\fR 4
  .IX Item "-mno-fuse-move"
! .IP \fB\-mfuse\-move=\fR\fIlevel\fR 4
  .IX Item "-mfuse-move=level"
  .PD
  Run a post reload optimization pass that tries to fuse move instructions
! and to split multi\-byte instructions into 8\-bit operations.
! The default uses \f(CW\*(C`\fR\f(CIlevel\fR\f(CW=3\*(C'\fR for optimization \fB\-O1\fR,
! and \f(CW\*(C`\fR\f(CIlevel\fR\f(CW=23\*(C'\fR for higher optimizations.
  Valid values for \fIlevel\fR are in the range \f(CW0\fR ... \f(CW23\fR
  which is a 3:2:2:2 mixed radix value.  Each digit controls some
  aspect of the optimization.
! .IP \fB\-mfuse\-move2\fR 4
  .IX Item "-mfuse-move2"
  Run a post combine optimization pass that tries to fuse move instructions.
! .IP \fB\-mstrict\-X\fR 4
  .IX Item "-mstrict-X"
  Use address register \f(CW\*(C`X\*(C'\fR in a way proposed by the hardware.  This means
! that \f(CW\*(C`X\*(C'\fR is only used in indirect, post\-increment or
! pre\-decrement addressing.
  .Sp
  Without this option, the \f(CW\*(C`X\*(C'\fR register may be used in the same way
  as \f(CW\*(C`Y\*(C'\fR or \f(CW\*(C`Z\*(C'\fR which then is emulated by additional
  instructions.
  For example, loading a value with \f(CW\*(C`X+const\*(C'\fR addressing with a
! small non\-negative \f(CW\*(C`const < 64\*(C'\fR to a register \fIRn\fR is
  performed as
  .Sp
  .Vb 3
*************** performed as
*** 24170,24188 ****
  \&        ld   <Rn>, X        ; <Rn> = *X
  \&        sbiw r26, const   ; X \-= const
  .Ve
! .IP "\fB\-msplit\-bit\-shift\fR" 4
  .IX Item "-msplit-bit-shift"
! Split multi-byte shifts with a constant offset into a shift with
! a byte offset and a residual shift with a non-byte offset.
  This optimization is turned on per default for \fB\-O2\fR and higher,
  including \fB\-Os\fR but excluding \fB\-Oz\fR.
  Splitting of shifts with a constant offset that is
  a multiple of 8 is controlled by \fB\-mfuse\-move\fR.
! .IP "\fB\-msplit\-ldst\fR" 4
  .IX Item "-msplit-ldst"
! Split multi-byte loads and stores into several byte loads and stores.
  This optimization is turned on per default for \fB\-O2\fR and higher.
! .IP "\fB\-muse\-nonzero\-bits\fR" 4
  .IX Item "-muse-nonzero-bits"
  Enable optimizations that are only possible when some bits in a
  register are always zero.
--- 24105,24123 ----
  \&        ld   <Rn>, X        ; <Rn> = *X
  \&        sbiw r26, const   ; X \-= const
  .Ve
! .IP \fB\-msplit\-bit\-shift\fR 4
  .IX Item "-msplit-bit-shift"
! Split multi\-byte shifts with a constant offset into a shift with
! a byte offset and a residual shift with a non\-byte offset.
  This optimization is turned on per default for \fB\-O2\fR and higher,
  including \fB\-Os\fR but excluding \fB\-Oz\fR.
  Splitting of shifts with a constant offset that is
  a multiple of 8 is controlled by \fB\-mfuse\-move\fR.
! .IP \fB\-msplit\-ldst\fR 4
  .IX Item "-msplit-ldst"
! Split multi\-byte loads and stores into several byte loads and stores.
  This optimization is turned on per default for \fB\-O2\fR and higher.
! .IP \fB\-muse\-nonzero\-bits\fR 4
  .IX Item "-muse-nonzero-bits"
  Enable optimizations that are only possible when some bits in a
  register are always zero.
*************** when \f(CW\*(C`EICALL\*(C'\fR or \f(CW\*
*** 24203,24247 ****
  .PP
  Indirect jumps and calls on these devices are handled as follows by
  the compiler and are subject to some limitations:
! .IP "*" 4
  The compiler never sets \f(CW\*(C`EIND\*(C'\fR.
! .IP "*" 4
  The compiler uses \f(CW\*(C`EIND\*(C'\fR implicitly in \f(CW\*(C`EICALL\*(C'\fR/\f(CW\*(C`EIJMP\*(C'\fR
  instructions or might read \f(CW\*(C`EIND\*(C'\fR directly in order to emulate an
  indirect call/jump by means of a \f(CW\*(C`RET\*(C'\fR instruction.
! .IP "*" 4
  The compiler assumes that \f(CW\*(C`EIND\*(C'\fR never changes during the startup
  code or during the application. In particular, \f(CW\*(C`EIND\*(C'\fR is not
  saved/restored in function or interrupt service routine
  prologue/epilogue.
! .IP "*" 4
  For indirect calls to functions and computed goto, the linker
  generates \fIstubs\fR. Stubs are jump pads sometimes also called
  \&\fItrampolines\fR. Thus, the indirect call/jump jumps to such a stub.
  The stub contains a direct jump to the desired address.
! .IP "*" 4
  Linker relaxation must be turned on so that the linker generates
  the stubs correctly in all situations. See the compiler option
  \&\fB\-mrelax\fR and the linker option \fB\-\-relax\fR.
  There are corner cases where the linker is supposed to generate stubs
  but aborts without relaxation and without a helpful error message.
! .IP "*" 4
  The default linker script is arranged for code with \f(CW\*(C`EIND = 0\*(C'\fR.
  If code is supposed to work for a setup with \f(CW\*(C`EIND != 0\*(C'\fR, a custom
  linker script has to be used in order to place the sections whose
  name start with \f(CW\*(C`.trampolines\*(C'\fR into the segment where \f(CW\*(C`EIND\*(C'\fR
  points to.
! .IP "*" 4
  The startup code from libgcc never sets \f(CW\*(C`EIND\*(C'\fR.
! Notice that startup code is a blend of code from libgcc and AVR-LibC.
! For the impact of AVR-LibC on \f(CW\*(C`EIND\*(C'\fR, see the
! AVR-LibC\ user\ manual (\f(CW\*(C`https://avrdudes.github.io/avr\-libc/avr\-libc\-user\-manual/\*(C'\fR).
! .IP "*" 4
! It is legitimate for user-specific startup code to set up \f(CW\*(C`EIND\*(C'\fR
  early, for example by means of initialization code located in
  section \f(CW\*(C`.init3\*(C'\fR. Such code runs prior to general startup code
! that initializes \s-1RAM\s0 and calls constructors, but after the bit
! of startup code from AVR-LibC that sets \f(CW\*(C`EIND\*(C'\fR to the segment
  where the vector table is located.
  .Sp
  .Vb 1
--- 24138,24182 ----
  .PP
  Indirect jumps and calls on these devices are handled as follows by
  the compiler and are subject to some limitations:
! .IP * 4
  The compiler never sets \f(CW\*(C`EIND\*(C'\fR.
! .IP * 4
  The compiler uses \f(CW\*(C`EIND\*(C'\fR implicitly in \f(CW\*(C`EICALL\*(C'\fR/\f(CW\*(C`EIJMP\*(C'\fR
  instructions or might read \f(CW\*(C`EIND\*(C'\fR directly in order to emulate an
  indirect call/jump by means of a \f(CW\*(C`RET\*(C'\fR instruction.
! .IP * 4
  The compiler assumes that \f(CW\*(C`EIND\*(C'\fR never changes during the startup
  code or during the application. In particular, \f(CW\*(C`EIND\*(C'\fR is not
  saved/restored in function or interrupt service routine
  prologue/epilogue.
! .IP * 4
  For indirect calls to functions and computed goto, the linker
  generates \fIstubs\fR. Stubs are jump pads sometimes also called
  \&\fItrampolines\fR. Thus, the indirect call/jump jumps to such a stub.
  The stub contains a direct jump to the desired address.
! .IP * 4
  Linker relaxation must be turned on so that the linker generates
  the stubs correctly in all situations. See the compiler option
  \&\fB\-mrelax\fR and the linker option \fB\-\-relax\fR.
  There are corner cases where the linker is supposed to generate stubs
  but aborts without relaxation and without a helpful error message.
! .IP * 4
  The default linker script is arranged for code with \f(CW\*(C`EIND = 0\*(C'\fR.
  If code is supposed to work for a setup with \f(CW\*(C`EIND != 0\*(C'\fR, a custom
  linker script has to be used in order to place the sections whose
  name start with \f(CW\*(C`.trampolines\*(C'\fR into the segment where \f(CW\*(C`EIND\*(C'\fR
  points to.
! .IP * 4
  The startup code from libgcc never sets \f(CW\*(C`EIND\*(C'\fR.
! Notice that startup code is a blend of code from libgcc and AVR\-LibC.
! For the impact of AVR\-LibC on \f(CW\*(C`EIND\*(C'\fR, see the
! AVR\-LibC\ user\ manual (\f(CW\*(C`https://avrdudes.github.io/avr\-libc/avr\-libc\-user\-manual/\*(C'\fR).
! .IP * 4
! It is legitimate for user\-specific startup code to set up \f(CW\*(C`EIND\*(C'\fR
  early, for example by means of initialization code located in
  section \f(CW\*(C`.init3\*(C'\fR. Such code runs prior to general startup code
! that initializes RAM and calls constructors, but after the bit
! of startup code from AVR\-LibC that sets \f(CW\*(C`EIND\*(C'\fR to the segment
  where the vector table is located.
  .Sp
  .Vb 1
*************** where the vector table is located.
*** 24257,24263 ****
  .Ve
  .Sp
  The \f(CW\*(C`_\|_trampolines_start\*(C'\fR symbol is defined in the linker script.
! .IP "*" 4
  Stubs are generated automatically by the linker if
  the following two conditions are met:
  .RS 4
--- 24192,24198 ----
  .Ve
  .Sp
  The \f(CW\*(C`_\|_trampolines_start\*(C'\fR symbol is defined in the linker script.
! .IP * 4
  Stubs are generated automatically by the linker if
  the following two conditions are met:
  .RS 4
*************** the following two conditions are met:
*** 24276,24282 ****
  .RE
  .RS 4
  .RE
! .IP "*" 4
  The compiler emits such \f(CW\*(C`gs\*(C'\fR modifiers for code labels in the
  following situations:
  .RS 4
--- 24211,24217 ----
  .RE
  .RS 4
  .RE
! .IP * 4
  The compiler emits such \f(CW\*(C`gs\*(C'\fR modifiers for code labels in the
  following situations:
  .RS 4
*************** following situations:
*** 24285,24309 ****
  .PD 0
  .IP "\-<Computed goto.>" 4
  .IX Item "-<Computed goto.>"
! .IP "\-<If prologue-save function is used, see \fB\-mcall\-prologues\fR>" 4
  .IX Item "-<If prologue-save function is used, see -mcall-prologues>"
  .PD
! command-line option.
  .IP "\-<Switch/case dispatch tables. If you do not want such dispatch>" 4
  .IX Item "-<Switch/case dispatch tables. If you do not want such dispatch>"
! tables you can specify the \fB\-fno\-jump\-tables\fR command-line option.
! .IP "\-<C and \*(C+ constructors/destructors called during startup/shutdown.>" 4
! .IX Item "-<C and constructors/destructors called during startup/shutdown.>"
  .PD 0
! .ie n .IP "\-<If the tools hit a ""gs()"" modifier explained above.>" 4
  .el .IP "\-<If the tools hit a \f(CWgs()\fR modifier explained above.>" 4
  .IX Item "-<If the tools hit a gs() modifier explained above.>"
  .RE
  .RS 4
  .RE
! .IP "*" 4
! .PD
! Jumping to non-symbolic addresses like so is \fInot\fR supported:
  .Sp
  .Vb 5
  \&        int main (void)
--- 24220,24244 ----
  .PD 0
  .IP "\-<Computed goto.>" 4
  .IX Item "-<Computed goto.>"
! .IP "\-<If prologue\-save function is used, see \fB\-mcall\-prologues\fR>" 4
  .IX Item "-<If prologue-save function is used, see -mcall-prologues>"
  .PD
! command\-line option.
  .IP "\-<Switch/case dispatch tables. If you do not want such dispatch>" 4
  .IX Item "-<Switch/case dispatch tables. If you do not want such dispatch>"
! tables you can specify the \fB\-fno\-jump\-tables\fR command\-line option.
! .IP "\-<C and C++ constructors/destructors called during startup/shutdown.>" 4
! .IX Item "-<C and C++ constructors/destructors called during startup/shutdown.>"
  .PD 0
! .ie n .IP "\-<If the tools hit a gs() modifier explained above.>" 4
  .el .IP "\-<If the tools hit a \f(CWgs()\fR modifier explained above.>" 4
  .IX Item "-<If the tools hit a gs() modifier explained above.>"
+ .PD
  .RE
  .RS 4
  .RE
! .IP * 4
! Jumping to non\-symbolic addresses like so is \fInot\fR supported:
  .Sp
  .Vb 5
  \&        int main (void)
*************** Alternatively, \f(CW\*(C`func_4\*(C'\fR
*** 24332,24338 ****
  Handling of the \f(CW\*(C`RAMPD\*(C'\fR, \f(CW\*(C`RAMPX\*(C'\fR, \f(CW\*(C`RAMPY\*(C'\fR and \f(CW\*(C`RAMPZ\*(C'\fR Special Function Registers
  .IX Subsection "Handling of the RAMPD, RAMPX, RAMPY and RAMPZ Special Function Registers"
  .PP
! Some \s-1AVR\s0 devices support memories larger than the 64 KiB range
  that can be accessed with 16\-bit pointers.  To access memory locations
  outside this 64 KiB range, the content of a \f(CW\*(C`RAMP\*(C'\fR
  register is used as high part of the address:
--- 24267,24273 ----
  Handling of the \f(CW\*(C`RAMPD\*(C'\fR, \f(CW\*(C`RAMPX\*(C'\fR, \f(CW\*(C`RAMPY\*(C'\fR and \f(CW\*(C`RAMPZ\*(C'\fR Special Function Registers
  .IX Subsection "Handling of the RAMPD, RAMPX, RAMPY and RAMPZ Special Function Registers"
  .PP
! Some AVR devices support memories larger than the 64 KiB range
  that can be accessed with 16\-bit pointers.  To access memory locations
  outside this 64 KiB range, the content of a \f(CW\*(C`RAMP\*(C'\fR
  register is used as high part of the address:
*************** The \f(CW\*(C`X\*(C'\fR, \f(CW\*(C`Y\*(C
*** 24340,24380 ****
  with the \f(CW\*(C`RAMPX\*(C'\fR, \f(CW\*(C`RAMPY\*(C'\fR, \f(CW\*(C`RAMPZ\*(C'\fR special function
  register, respectively, to get a wide address. Similarly,
  \&\f(CW\*(C`RAMPD\*(C'\fR is used together with direct addressing.
! .IP "*" 4
  The startup code initializes the \f(CW\*(C`RAMP\*(C'\fR special function
  registers with zero.
! .IP "*" 4
! If a \fB\s-1AVR\s0 Named Address Spaces,named address space\fR other than
  generic or \f(CW\*(C`_\|_flash\*(C'\fR is used, then \f(CW\*(C`RAMPZ\*(C'\fR is set
  as needed before the operation.
! .IP "*" 4
! If the device supports \s-1RAM\s0 larger than 64 KiB and the compiler
  needs to change \f(CW\*(C`RAMPZ\*(C'\fR to accomplish an operation, \f(CW\*(C`RAMPZ\*(C'\fR
  is reset to zero after the operation.
! .IP "*" 4
! If the device comes with a specific \f(CW\*(C`RAMP\*(C'\fR register, the \s-1ISR\s0
! prologue/epilogue saves/restores that \s-1SFR\s0 and initializes it with
! zero in case the \s-1ISR\s0 code might (implicitly) use it.
! .IP "*" 4
! \&\s-1RAM\s0 larger than 64 KiB is not supported by \s-1GCC\s0 for \s-1AVR\s0 targets.
  If you use inline assembler to read from locations outside the
  16\-bit address range and change one of the \f(CW\*(C`RAMP\*(C'\fR registers,
  you must reset it to zero after the access.
  .PP
! \s-1AVR\s0 Built-in Macros
  .IX Subsection "AVR Built-in Macros"
  .PP
! \&\s-1GCC\s0 defines several built-in macros so that the user code can test
  for the presence or absence of features.  Almost any of the following
! built-in macros are deduced from device capabilities and thus
! triggered by the \fB\-mmcu=\fR command-line option.
  .PP
! For even more AVR-specific built-in macros see
! \&\fB\s-1AVR\s0 Named Address Spaces\fR and \fB\s-1AVR\s0 Built-in Functions\fR.
  .ie n .IP """_\|_AVR_ARCH_\|_""" 4
! .el .IP "\f(CW_\|_AVR_ARCH_\|_\fR" 4
  .IX Item "__AVR_ARCH__"
! Build-in macro that resolves to a decimal number that identifies the
  architecture and depends on the \fB\-mmcu=\fR\fImcu\fR option.
  Possible values are:
  .Sp
--- 24275,24315 ----
  with the \f(CW\*(C`RAMPX\*(C'\fR, \f(CW\*(C`RAMPY\*(C'\fR, \f(CW\*(C`RAMPZ\*(C'\fR special function
  register, respectively, to get a wide address. Similarly,
  \&\f(CW\*(C`RAMPD\*(C'\fR is used together with direct addressing.
! .IP * 4
  The startup code initializes the \f(CW\*(C`RAMP\*(C'\fR special function
  registers with zero.
! .IP * 4
! If a \fBAVR Named Address Spaces,named address space\fR other than
  generic or \f(CW\*(C`_\|_flash\*(C'\fR is used, then \f(CW\*(C`RAMPZ\*(C'\fR is set
  as needed before the operation.
! .IP * 4
! If the device supports RAM larger than 64 KiB and the compiler
  needs to change \f(CW\*(C`RAMPZ\*(C'\fR to accomplish an operation, \f(CW\*(C`RAMPZ\*(C'\fR
  is reset to zero after the operation.
! .IP * 4
! If the device comes with a specific \f(CW\*(C`RAMP\*(C'\fR register, the ISR
! prologue/epilogue saves/restores that SFR and initializes it with
! zero in case the ISR code might (implicitly) use it.
! .IP * 4
! RAM larger than 64 KiB is not supported by GCC for AVR targets.
  If you use inline assembler to read from locations outside the
  16\-bit address range and change one of the \f(CW\*(C`RAMP\*(C'\fR registers,
  you must reset it to zero after the access.
  .PP
! AVR Built\-in Macros
  .IX Subsection "AVR Built-in Macros"
  .PP
! GCC defines several built\-in macros so that the user code can test
  for the presence or absence of features.  Almost any of the following
! built\-in macros are deduced from device capabilities and thus
! triggered by the \fB\-mmcu=\fR command\-line option.
  .PP
! For even more AVR\-specific built\-in macros see
! \&\fBAVR Named Address Spaces\fR and \fBAVR Built\-in Functions\fR.
  .ie n .IP """_\|_AVR_ARCH_\|_""" 4
! .el .IP \f(CW_\|_AVR_ARCH_\|_\fR 4
  .IX Item "__AVR_ARCH__"
! Build\-in macro that resolves to a decimal number that identifies the
  architecture and depends on the \fB\-mmcu=\fR\fImcu\fR option.
  Possible values are:
  .Sp
*************** respectively and
*** 24393,24574 ****
  for \fImcu\fR=\f(CW\*(C`avrtiny\*(C'\fR,
  \&\f(CW\*(C`avrxmega2\*(C'\fR, \f(CW\*(C`avrxmega3\*(C'\fR, \f(CW\*(C`avrxmega4\*(C'\fR,
  \&\f(CW\*(C`avrxmega5\*(C'\fR, \f(CW\*(C`avrxmega6\*(C'\fR, \f(CW\*(C`avrxmega7\*(C'\fR, respectively.
! If \fImcu\fR specifies a device, this built-in macro is set
  accordingly. For example, with \fB\-mmcu=atmega8\fR the macro is
  defined to \f(CW4\fR.
! .ie n .IP """_\|_AVR_\fIDevice\fP_\|_""" 4
! .el .IP "\f(CW_\|_AVR_\f(CIDevice\f(CW_\|_\fR" 4
  .IX Item "__AVR_Device__"
! Setting \fB\-mmcu=\fR\fIdevice\fR defines this built-in macro which reflects
! the device's name. For example, \fB\-mmcu=atmega8\fR defines the
! built-in macro \f(CW\*(C`_\|_AVR_ATmega8_\|_\*(C'\fR, \fB\-mmcu=attiny261a\fR defines
  \&\f(CW\*(C`_\|_AVR_ATtiny261A_\|_\*(C'\fR, etc.
  .Sp
! The built-in macros' names follow
! the scheme \f(CW\*(C`_\|_AVR_\f(CIDevice\f(CW_\|_\*(C'\fR where \fIDevice\fR is
! the device name as from the \s-1AVR\s0 user manual. The difference between
! \&\fIDevice\fR in the built-in macro and \fIdevice\fR in
  \&\fB\-mmcu=\fR\fIdevice\fR is that the latter is always lowercase.
  .Sp
  If \fIdevice\fR is not a device but only a core architecture like
  \&\fBavr51\fR, this macro is not defined.
  .ie n .IP """_\|_AVR_DEVICE_NAME_\|_""" 4
! .el .IP "\f(CW_\|_AVR_DEVICE_NAME_\|_\fR" 4
  .IX Item "__AVR_DEVICE_NAME__"
! Setting \fB\-mmcu=\fR\fIdevice\fR defines this built-in macro to
! the device's name. For example, with \fB\-mmcu=atmega8\fR the macro
  is defined to \f(CW\*(C`atmega8\*(C'\fR.
  .Sp
  If \fIdevice\fR is not a device but only a core architecture like
  \&\fBavr51\fR, this macro is not defined.
  .ie n .IP """_\|_AVR_CVT_\|_""" 4
! .el .IP "\f(CW_\|_AVR_CVT_\|_\fR" 4
  .IX Item "__AVR_CVT__"
  The code is being compiled with option \f(CW\*(C`\-mcvt\*(C'\fR to use a
  \&\fIcompact vector table\fR.
  .ie n .IP """_\|_AVR_XMEGA_\|_""" 4
! .el .IP "\f(CW_\|_AVR_XMEGA_\|_\fR" 4
  .IX Item "__AVR_XMEGA__"
! The device / architecture belongs to the \s-1XMEGA\s0 family of devices.
  .ie n .IP """_\|_AVR_HAVE_ADIW_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_ADIW_\|_\fR" 4
  .IX Item "__AVR_HAVE_ADIW__"
  The device has the \f(CW\*(C`ADIW\*(C'\fR and \f(CW\*(C`SBIW\*(C'\fR instructions.
  .ie n .IP """_\|_AVR_HAVE_ELPM_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_ELPM_\|_\fR" 4
  .IX Item "__AVR_HAVE_ELPM__"
  The device has the \f(CW\*(C`ELPM\*(C'\fR instruction.
  .ie n .IP """_\|_AVR_HAVE_ELPMX_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_ELPMX_\|_\fR" 4
  .IX Item "__AVR_HAVE_ELPMX__"
! The device has the \f(CW\*(C`ELPM R\f(CIn\f(CW,Z\*(C'\fR and \f(CW\*(C`ELPM
! R\f(CIn\f(CW,Z+\*(C'\fR instructions.
  .ie n .IP """_\|_AVR_HAVE_LPMX_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_LPMX_\|_\fR" 4
  .IX Item "__AVR_HAVE_LPMX__"
! The device has the \f(CW\*(C`LPM R\f(CIn\f(CW,Z\*(C'\fR and
! \&\f(CW\*(C`LPM R\f(CIn\f(CW,Z+\*(C'\fR instructions.
  .ie n .IP """_\|_AVR_HAVE_MOVW_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_MOVW_\|_\fR" 4
  .IX Item "__AVR_HAVE_MOVW__"
  The device has the \f(CW\*(C`MOVW\*(C'\fR instruction to perform 16\-bit
! register-register moves.
  .ie n .IP """_\|_AVR_HAVE_MUL_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_MUL_\|_\fR" 4
  .IX Item "__AVR_HAVE_MUL__"
  The device has a hardware multiplier.
  .ie n .IP """_\|_AVR_HAVE_JMP_CALL_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_JMP_CALL_\|_\fR" 4
  .IX Item "__AVR_HAVE_JMP_CALL__"
  The device has the \f(CW\*(C`JMP\*(C'\fR and \f(CW\*(C`CALL\*(C'\fR instructions.
  This is the case for devices with more than 8 KiB of program
  memory.
  .ie n .IP """_\|_AVR_HAVE_EIJMP_EICALL_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_EIJMP_EICALL_\|_\fR" 4
  .IX Item "__AVR_HAVE_EIJMP_EICALL__"
  .PD 0
  .ie n .IP """_\|_AVR_3_BYTE_PC_\|_""" 4
! .el .IP "\f(CW_\|_AVR_3_BYTE_PC_\|_\fR" 4
  .IX Item "__AVR_3_BYTE_PC__"
  .PD
  The device has the \f(CW\*(C`EIJMP\*(C'\fR and \f(CW\*(C`EICALL\*(C'\fR instructions.
  This is the case for devices with more than 128 KiB of program memory.
  This also means that the program counter
! (\s-1PC\s0) is 3 bytes wide.
  .ie n .IP """_\|_AVR_2_BYTE_PC_\|_""" 4
! .el .IP "\f(CW_\|_AVR_2_BYTE_PC_\|_\fR" 4
  .IX Item "__AVR_2_BYTE_PC__"
! The program counter (\s-1PC\s0) is 2 bytes wide. This is the case for devices
  with up to 128 KiB of program memory.
  .ie n .IP """_\|_AVR_HAVE_8BIT_SP_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_8BIT_SP_\|_\fR" 4
  .IX Item "__AVR_HAVE_8BIT_SP__"
  .PD 0
  .ie n .IP """_\|_AVR_HAVE_16BIT_SP_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_16BIT_SP_\|_\fR" 4
  .IX Item "__AVR_HAVE_16BIT_SP__"
  .PD
! The stack pointer (\s-1SP\s0) register is treated as 8\-bit respectively
  16\-bit register by the compiler.
  The definition of these macros is affected by \fB\-mtiny\-stack\fR.
  .ie n .IP """_\|_AVR_HAVE_SPH_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_SPH_\|_\fR" 4
  .IX Item "__AVR_HAVE_SPH__"
  .PD 0
  .ie n .IP """_\|_AVR_SP8_\|_""" 4
! .el .IP "\f(CW_\|_AVR_SP8_\|_\fR" 4
  .IX Item "__AVR_SP8__"
  .PD
! The device has the \s-1SPH\s0 (high part of stack pointer) special function
  register or has an 8\-bit stack pointer, respectively.
  The definition of these macros is affected by \fB\-mmcu=\fR and
  in the cases of \fB\-mmcu=avr2\fR and \fB\-mmcu=avr25\fR also
  by \fB\-msp8\fR.
  .ie n .IP """_\|_AVR_HAVE_RAMPD_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_RAMPD_\|_\fR" 4
  .IX Item "__AVR_HAVE_RAMPD__"
  .PD 0
  .ie n .IP """_\|_AVR_HAVE_RAMPX_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_RAMPX_\|_\fR" 4
  .IX Item "__AVR_HAVE_RAMPX__"
  .ie n .IP """_\|_AVR_HAVE_RAMPY_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_RAMPY_\|_\fR" 4
  .IX Item "__AVR_HAVE_RAMPY__"
  .ie n .IP """_\|_AVR_HAVE_RAMPZ_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_RAMPZ_\|_\fR" 4
  .IX Item "__AVR_HAVE_RAMPZ__"
  .PD
  The device has the \f(CW\*(C`RAMPD\*(C'\fR, \f(CW\*(C`RAMPX\*(C'\fR, \f(CW\*(C`RAMPY\*(C'\fR,
  \&\f(CW\*(C`RAMPZ\*(C'\fR special function register, respectively.
  .ie n .IP """_\|_NO_INTERRUPTS_\|_""" 4
! .el .IP "\f(CW_\|_NO_INTERRUPTS_\|_\fR" 4
  .IX Item "__NO_INTERRUPTS__"
! This macro reflects the \fB\-mno\-interrupts\fR command-line option.
  .ie n .IP """_\|_AVR_ERRATA_SKIP_\|_""" 4
! .el .IP "\f(CW_\|_AVR_ERRATA_SKIP_\|_\fR" 4
  .IX Item "__AVR_ERRATA_SKIP__"
  .PD 0
  .ie n .IP """_\|_AVR_ERRATA_SKIP_JMP_CALL_\|_""" 4
! .el .IP "\f(CW_\|_AVR_ERRATA_SKIP_JMP_CALL_\|_\fR" 4
  .IX Item "__AVR_ERRATA_SKIP_JMP_CALL__"
  .PD
! Some \s-1AVR\s0 devices (\s-1AT90S8515,\s0 ATmega103) must not skip 32\-bit
  instructions because of a hardware erratum.  Skip instructions are
  \&\f(CW\*(C`SBRS\*(C'\fR, \f(CW\*(C`SBRC\*(C'\fR, \f(CW\*(C`SBIS\*(C'\fR, \f(CW\*(C`SBIC\*(C'\fR and \f(CW\*(C`CPSE\*(C'\fR.
  The second macro is only defined if \f(CW\*(C`_\|_AVR_HAVE_JMP_CALL_\|_\*(C'\fR is also
  set.
  .ie n .IP """_\|_AVR_ISA_RMW_\|_""" 4
! .el .IP "\f(CW_\|_AVR_ISA_RMW_\|_\fR" 4
  .IX Item "__AVR_ISA_RMW__"
! The device has Read-Modify-Write instructions (\s-1XCH, LAC, LAS\s0 and \s-1LAT\s0).
! .ie n .IP """_\|_AVR_SFR_OFFSET_\|_=\fIoffset\fP""" 4
! .el .IP "\f(CW_\|_AVR_SFR_OFFSET_\|_=\f(CIoffset\f(CW\fR" 4
  .IX Item "__AVR_SFR_OFFSET__=offset"
  Instructions that can address I/O special function registers directly
  like \f(CW\*(C`IN\*(C'\fR, \f(CW\*(C`OUT\*(C'\fR, \f(CW\*(C`SBI\*(C'\fR, etc. may use a different
! address as if addressed by an instruction to access \s-1RAM\s0 like \f(CW\*(C`LD\*(C'\fR
  or \f(CW\*(C`STS\*(C'\fR. This offset depends on the device architecture and has
! to be subtracted from the \s-1RAM\s0 address in order to get the
  respective I/O address.
  .ie n .IP """_\|_AVR_SHORT_CALLS_\|_""" 4
! .el .IP "\f(CW_\|_AVR_SHORT_CALLS_\|_\fR" 4
  .IX Item "__AVR_SHORT_CALLS__"
  The \fB\-mshort\-calls\fR command line option is set.
! .ie n .IP """_\|_AVR_PM_BASE_ADDRESS_\|_=\fIaddr\fP""" 4
! .el .IP "\f(CW_\|_AVR_PM_BASE_ADDRESS_\|_=\f(CIaddr\f(CW\fR" 4
  .IX Item "__AVR_PM_BASE_ADDRESS__=addr"
  Some devices support reading from flash memory by means of \f(CW\*(C`LD*\*(C'\fR
  instructions.  The flash memory is seen in the data address space
  at an offset of \f(CW\*(C`_\|_AVR_PM_BASE_ADDRESS_\|_\*(C'\fR.  If this macro
  is not defined, this feature is not available.  If defined,
  the address space is linear and there is no need to put
! \&\f(CW\*(C`.rodata\*(C'\fR into \s-1RAM.\s0  This is handled by the default linker
  description file, and is currently available for
  \&\f(CW\*(C`avrtiny\*(C'\fR and \f(CW\*(C`avrxmega3\*(C'\fR.  Even more convenient,
  there is no need to use address spaces like \f(CW\*(C`_\|_flash\*(C'\fR or
  features like attribute \f(CW\*(C`progmem\*(C'\fR and \f(CW\*(C`pgm_read_*\*(C'\fR.
  .ie n .IP """_\|_AVR_HAVE_FLMAP_\|_""" 4
! .el .IP "\f(CW_\|_AVR_HAVE_FLMAP_\|_\fR" 4
  .IX Item "__AVR_HAVE_FLMAP__"
  This macro is defined provided the following conditions are met:
  .RS 4
--- 24328,24509 ----
  for \fImcu\fR=\f(CW\*(C`avrtiny\*(C'\fR,
  \&\f(CW\*(C`avrxmega2\*(C'\fR, \f(CW\*(C`avrxmega3\*(C'\fR, \f(CW\*(C`avrxmega4\*(C'\fR,
  \&\f(CW\*(C`avrxmega5\*(C'\fR, \f(CW\*(C`avrxmega6\*(C'\fR, \f(CW\*(C`avrxmega7\*(C'\fR, respectively.
! If \fImcu\fR specifies a device, this built\-in macro is set
  accordingly. For example, with \fB\-mmcu=atmega8\fR the macro is
  defined to \f(CW4\fR.
! .ie n .IP """_\|_AVR_\fIDevice\fR_\|_""" 4
! .el .IP \f(CW_\|_AVR_\fR\f(CIDevice\fR\f(CW_\|_\fR 4
  .IX Item "__AVR_Device__"
! Setting \fB\-mmcu=\fR\fIdevice\fR defines this built\-in macro which reflects
! the device\*(Aqs name. For example, \fB\-mmcu=atmega8\fR defines the
! built\-in macro \f(CW\*(C`_\|_AVR_ATmega8_\|_\*(C'\fR, \fB\-mmcu=attiny261a\fR defines
  \&\f(CW\*(C`_\|_AVR_ATtiny261A_\|_\*(C'\fR, etc.
  .Sp
! The built\-in macros\*(Aq names follow
! the scheme \f(CW\*(C`_\|_AVR_\fR\f(CIDevice\fR\f(CW_\|_\*(C'\fR where \fIDevice\fR is
! the device name as from the AVR user manual. The difference between
! \&\fIDevice\fR in the built\-in macro and \fIdevice\fR in
  \&\fB\-mmcu=\fR\fIdevice\fR is that the latter is always lowercase.
  .Sp
  If \fIdevice\fR is not a device but only a core architecture like
  \&\fBavr51\fR, this macro is not defined.
  .ie n .IP """_\|_AVR_DEVICE_NAME_\|_""" 4
! .el .IP \f(CW_\|_AVR_DEVICE_NAME_\|_\fR 4
  .IX Item "__AVR_DEVICE_NAME__"
! Setting \fB\-mmcu=\fR\fIdevice\fR defines this built\-in macro to
! the device\*(Aqs name. For example, with \fB\-mmcu=atmega8\fR the macro
  is defined to \f(CW\*(C`atmega8\*(C'\fR.
  .Sp
  If \fIdevice\fR is not a device but only a core architecture like
  \&\fBavr51\fR, this macro is not defined.
  .ie n .IP """_\|_AVR_CVT_\|_""" 4
! .el .IP \f(CW_\|_AVR_CVT_\|_\fR 4
  .IX Item "__AVR_CVT__"
  The code is being compiled with option \f(CW\*(C`\-mcvt\*(C'\fR to use a
  \&\fIcompact vector table\fR.
  .ie n .IP """_\|_AVR_XMEGA_\|_""" 4
! .el .IP \f(CW_\|_AVR_XMEGA_\|_\fR 4
  .IX Item "__AVR_XMEGA__"
! The device / architecture belongs to the XMEGA family of devices.
  .ie n .IP """_\|_AVR_HAVE_ADIW_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_ADIW_\|_\fR 4
  .IX Item "__AVR_HAVE_ADIW__"
  The device has the \f(CW\*(C`ADIW\*(C'\fR and \f(CW\*(C`SBIW\*(C'\fR instructions.
  .ie n .IP """_\|_AVR_HAVE_ELPM_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_ELPM_\|_\fR 4
  .IX Item "__AVR_HAVE_ELPM__"
  The device has the \f(CW\*(C`ELPM\*(C'\fR instruction.
  .ie n .IP """_\|_AVR_HAVE_ELPMX_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_ELPMX_\|_\fR 4
  .IX Item "__AVR_HAVE_ELPMX__"
! The device has the \f(CW\*(C`ELPM R\fR\f(CIn\fR\f(CW,Z\*(C'\fR and \f(CW\*(C`ELPM
! R\fR\f(CIn\fR\f(CW,Z+\*(C'\fR instructions.
  .ie n .IP """_\|_AVR_HAVE_LPMX_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_LPMX_\|_\fR 4
  .IX Item "__AVR_HAVE_LPMX__"
! The device has the \f(CW\*(C`LPM R\fR\f(CIn\fR\f(CW,Z\*(C'\fR and
! \&\f(CW\*(C`LPM R\fR\f(CIn\fR\f(CW,Z+\*(C'\fR instructions.
  .ie n .IP """_\|_AVR_HAVE_MOVW_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_MOVW_\|_\fR 4
  .IX Item "__AVR_HAVE_MOVW__"
  The device has the \f(CW\*(C`MOVW\*(C'\fR instruction to perform 16\-bit
! register\-register moves.
  .ie n .IP """_\|_AVR_HAVE_MUL_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_MUL_\|_\fR 4
  .IX Item "__AVR_HAVE_MUL__"
  The device has a hardware multiplier.
  .ie n .IP """_\|_AVR_HAVE_JMP_CALL_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_JMP_CALL_\|_\fR 4
  .IX Item "__AVR_HAVE_JMP_CALL__"
  The device has the \f(CW\*(C`JMP\*(C'\fR and \f(CW\*(C`CALL\*(C'\fR instructions.
  This is the case for devices with more than 8 KiB of program
  memory.
  .ie n .IP """_\|_AVR_HAVE_EIJMP_EICALL_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_EIJMP_EICALL_\|_\fR 4
  .IX Item "__AVR_HAVE_EIJMP_EICALL__"
  .PD 0
  .ie n .IP """_\|_AVR_3_BYTE_PC_\|_""" 4
! .el .IP \f(CW_\|_AVR_3_BYTE_PC_\|_\fR 4
  .IX Item "__AVR_3_BYTE_PC__"
  .PD
  The device has the \f(CW\*(C`EIJMP\*(C'\fR and \f(CW\*(C`EICALL\*(C'\fR instructions.
  This is the case for devices with more than 128 KiB of program memory.
  This also means that the program counter
! (PC) is 3 bytes wide.
  .ie n .IP """_\|_AVR_2_BYTE_PC_\|_""" 4
! .el .IP \f(CW_\|_AVR_2_BYTE_PC_\|_\fR 4
  .IX Item "__AVR_2_BYTE_PC__"
! The program counter (PC) is 2 bytes wide. This is the case for devices
  with up to 128 KiB of program memory.
  .ie n .IP """_\|_AVR_HAVE_8BIT_SP_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_8BIT_SP_\|_\fR 4
  .IX Item "__AVR_HAVE_8BIT_SP__"
  .PD 0
  .ie n .IP """_\|_AVR_HAVE_16BIT_SP_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_16BIT_SP_\|_\fR 4
  .IX Item "__AVR_HAVE_16BIT_SP__"
  .PD
! The stack pointer (SP) register is treated as 8\-bit respectively
  16\-bit register by the compiler.
  The definition of these macros is affected by \fB\-mtiny\-stack\fR.
  .ie n .IP """_\|_AVR_HAVE_SPH_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_SPH_\|_\fR 4
  .IX Item "__AVR_HAVE_SPH__"
  .PD 0
  .ie n .IP """_\|_AVR_SP8_\|_""" 4
! .el .IP \f(CW_\|_AVR_SP8_\|_\fR 4
  .IX Item "__AVR_SP8__"
  .PD
! The device has the SPH (high part of stack pointer) special function
  register or has an 8\-bit stack pointer, respectively.
  The definition of these macros is affected by \fB\-mmcu=\fR and
  in the cases of \fB\-mmcu=avr2\fR and \fB\-mmcu=avr25\fR also
  by \fB\-msp8\fR.
  .ie n .IP """_\|_AVR_HAVE_RAMPD_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_RAMPD_\|_\fR 4
  .IX Item "__AVR_HAVE_RAMPD__"
  .PD 0
  .ie n .IP """_\|_AVR_HAVE_RAMPX_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_RAMPX_\|_\fR 4
  .IX Item "__AVR_HAVE_RAMPX__"
  .ie n .IP """_\|_AVR_HAVE_RAMPY_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_RAMPY_\|_\fR 4
  .IX Item "__AVR_HAVE_RAMPY__"
  .ie n .IP """_\|_AVR_HAVE_RAMPZ_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_RAMPZ_\|_\fR 4
  .IX Item "__AVR_HAVE_RAMPZ__"
  .PD
  The device has the \f(CW\*(C`RAMPD\*(C'\fR, \f(CW\*(C`RAMPX\*(C'\fR, \f(CW\*(C`RAMPY\*(C'\fR,
  \&\f(CW\*(C`RAMPZ\*(C'\fR special function register, respectively.
  .ie n .IP """_\|_NO_INTERRUPTS_\|_""" 4
! .el .IP \f(CW_\|_NO_INTERRUPTS_\|_\fR 4
  .IX Item "__NO_INTERRUPTS__"
! This macro reflects the \fB\-mno\-interrupts\fR command\-line option.
  .ie n .IP """_\|_AVR_ERRATA_SKIP_\|_""" 4
! .el .IP \f(CW_\|_AVR_ERRATA_SKIP_\|_\fR 4
  .IX Item "__AVR_ERRATA_SKIP__"
  .PD 0
  .ie n .IP """_\|_AVR_ERRATA_SKIP_JMP_CALL_\|_""" 4
! .el .IP \f(CW_\|_AVR_ERRATA_SKIP_JMP_CALL_\|_\fR 4
  .IX Item "__AVR_ERRATA_SKIP_JMP_CALL__"
  .PD
! Some AVR devices (AT90S8515, ATmega103) must not skip 32\-bit
  instructions because of a hardware erratum.  Skip instructions are
  \&\f(CW\*(C`SBRS\*(C'\fR, \f(CW\*(C`SBRC\*(C'\fR, \f(CW\*(C`SBIS\*(C'\fR, \f(CW\*(C`SBIC\*(C'\fR and \f(CW\*(C`CPSE\*(C'\fR.
  The second macro is only defined if \f(CW\*(C`_\|_AVR_HAVE_JMP_CALL_\|_\*(C'\fR is also
  set.
  .ie n .IP """_\|_AVR_ISA_RMW_\|_""" 4
! .el .IP \f(CW_\|_AVR_ISA_RMW_\|_\fR 4
  .IX Item "__AVR_ISA_RMW__"
! The device has Read\-Modify\-Write instructions (XCH, LAC, LAS and LAT).
! .ie n .IP """_\|_AVR_SFR_OFFSET_\|_=\fIoffset\fR""" 4
! .el .IP \f(CW_\|_AVR_SFR_OFFSET_\|_=\fR\f(CIoffset\fR\f(CW\fR 4
  .IX Item "__AVR_SFR_OFFSET__=offset"
  Instructions that can address I/O special function registers directly
  like \f(CW\*(C`IN\*(C'\fR, \f(CW\*(C`OUT\*(C'\fR, \f(CW\*(C`SBI\*(C'\fR, etc. may use a different
! address as if addressed by an instruction to access RAM like \f(CW\*(C`LD\*(C'\fR
  or \f(CW\*(C`STS\*(C'\fR. This offset depends on the device architecture and has
! to be subtracted from the RAM address in order to get the
  respective I/O address.
  .ie n .IP """_\|_AVR_SHORT_CALLS_\|_""" 4
! .el .IP \f(CW_\|_AVR_SHORT_CALLS_\|_\fR 4
  .IX Item "__AVR_SHORT_CALLS__"
  The \fB\-mshort\-calls\fR command line option is set.
! .ie n .IP """_\|_AVR_PM_BASE_ADDRESS_\|_=\fIaddr\fR""" 4
! .el .IP \f(CW_\|_AVR_PM_BASE_ADDRESS_\|_=\fR\f(CIaddr\fR\f(CW\fR 4
  .IX Item "__AVR_PM_BASE_ADDRESS__=addr"
  Some devices support reading from flash memory by means of \f(CW\*(C`LD*\*(C'\fR
  instructions.  The flash memory is seen in the data address space
  at an offset of \f(CW\*(C`_\|_AVR_PM_BASE_ADDRESS_\|_\*(C'\fR.  If this macro
  is not defined, this feature is not available.  If defined,
  the address space is linear and there is no need to put
! \&\f(CW\*(C`.rodata\*(C'\fR into RAM.  This is handled by the default linker
  description file, and is currently available for
  \&\f(CW\*(C`avrtiny\*(C'\fR and \f(CW\*(C`avrxmega3\*(C'\fR.  Even more convenient,
  there is no need to use address spaces like \f(CW\*(C`_\|_flash\*(C'\fR or
  features like attribute \f(CW\*(C`progmem\*(C'\fR and \f(CW\*(C`pgm_read_*\*(C'\fR.
  .ie n .IP """_\|_AVR_HAVE_FLMAP_\|_""" 4
! .el .IP \f(CW_\|_AVR_HAVE_FLMAP_\|_\fR 4
  .IX Item "__AVR_HAVE_FLMAP__"
  This macro is defined provided the following conditions are met:
  .RS 4
*************** This macro is defined provided the follo
*** 24576,24698 ****
  .el .IP "*<The device has the \f(CWNVMCTRL_CTRLB.FLMAP\fR bitfield.>" 4
  .IX Item "*<The device has the NVMCTRL_CTRLB.FLMAP bitfield.>"
  This applies to the AVR64* and AVR128* devices.
! .IP "*<It's not known at assembler-time which emulation will be used.>" 4
  .IX Item "*<It's not known at assembler-time which emulation will be used.>"
  .RE
  .RS 4
  .Sp
! This implies the compiler was configured with \s-1GNU\s0 Binutils that implement
! \&\s-1PR31124\s0 (\f(CW\*(C`https://sourceware.org/PR31124\*(C'\fR).
  .RE
  .ie n .IP """_\|_AVR_RODATA_IN_RAM_\|_""" 4
! .el .IP "\f(CW_\|_AVR_RODATA_IN_RAM_\|_\fR" 4
  .IX Item "__AVR_RODATA_IN_RAM__"
  This macro is undefined when the code is compiled for a core architecture.
  .Sp
  When the code is compiled for a device, the macro is defined to 1
! when the \f(CW\*(C`.rodata\*(C'\fR sections for read-only data is located in \s-1RAM\s0;
  and defined to 0, otherwise.
  .ie n .IP """_\|_WITH_AVRLIBC_\|_""" 4
! .el .IP "\f(CW_\|_WITH_AVRLIBC_\|_\fR" 4
  .IX Item "__WITH_AVRLIBC__"
! The compiler is configured to be used together with AVR-LibC.
  See the \fB\-\-with\-avrlibc\fR configure option.
  .ie n .IP """_\|_HAVE_SIGNAL_N_\|_""" 4
! .el .IP "\f(CW_\|_HAVE_SIGNAL_N_\|_\fR" 4
  .IX Item "__HAVE_SIGNAL_N__"
! The compiler supports the \f(CW\*(C`signal(\f(CInum\f(CW)\*(C'\fR and
! \&\f(CW\*(C`interrupt(\f(CInum\f(CW)\*(C'\fR
! \&\fB\s-1AVR\s0 Function Attributes,,function attributes\fR
  with an argument \fInum\fR that specifies the number of the
  interrupt service routine.
  .ie n .IP """_\|_HAVE_DOUBLE_MULTILIB_\|_""" 4
! .el .IP "\f(CW_\|_HAVE_DOUBLE_MULTILIB_\|_\fR" 4
  .IX Item "__HAVE_DOUBLE_MULTILIB__"
  Defined if \fB\-mdouble=\fR acts as a multilib option.
  .ie n .IP """_\|_HAVE_DOUBLE32_\|_""" 4
! .el .IP "\f(CW_\|_HAVE_DOUBLE32_\|_\fR" 4
  .IX Item "__HAVE_DOUBLE32__"
  .PD 0
  .ie n .IP """_\|_HAVE_DOUBLE64_\|_""" 4
! .el .IP "\f(CW_\|_HAVE_DOUBLE64_\|_\fR" 4
  .IX Item "__HAVE_DOUBLE64__"
  .PD
  Defined if the compiler supports 32\-bit double resp. 64\-bit double.
  The actual layout is specified by option \fB\-mdouble=\fR.
  .ie n .IP """_\|_DEFAULT_DOUBLE_\|_""" 4
! .el .IP "\f(CW_\|_DEFAULT_DOUBLE_\|_\fR" 4
  .IX Item "__DEFAULT_DOUBLE__"
  The size in bits of \f(CW\*(C`double\*(C'\fR if \fB\-mdouble=\fR is not set.
! To test the layout of \f(CW\*(C`double\*(C'\fR in a program, use the built-in
  macro \f(CW\*(C`_\|_SIZEOF_DOUBLE_\|_\*(C'\fR.
  .ie n .IP """_\|_HAVE_LONG_DOUBLE32_\|_""" 4
! .el .IP "\f(CW_\|_HAVE_LONG_DOUBLE32_\|_\fR" 4
  .IX Item "__HAVE_LONG_DOUBLE32__"
  .PD 0
  .ie n .IP """_\|_HAVE_LONG_DOUBLE64_\|_""" 4
! .el .IP "\f(CW_\|_HAVE_LONG_DOUBLE64_\|_\fR" 4
  .IX Item "__HAVE_LONG_DOUBLE64__"
  .ie n .IP """_\|_HAVE_LONG_DOUBLE_MULTILIB_\|_""" 4
! .el .IP "\f(CW_\|_HAVE_LONG_DOUBLE_MULTILIB_\|_\fR" 4
  .IX Item "__HAVE_LONG_DOUBLE_MULTILIB__"
  .ie n .IP """_\|_DEFAULT_LONG_DOUBLE_\|_""" 4
! .el .IP "\f(CW_\|_DEFAULT_LONG_DOUBLE_\|_\fR" 4
  .IX Item "__DEFAULT_LONG_DOUBLE__"
  .PD
  Same as above, but for \f(CW\*(C`long double\*(C'\fR instead of \f(CW\*(C`double\*(C'\fR.
  .ie n .IP """_\|_WITH_DOUBLE_COMPARISON_\|_""" 4
! .el .IP "\f(CW_\|_WITH_DOUBLE_COMPARISON_\|_\fR" 4
  .IX Item "__WITH_DOUBLE_COMPARISON__"
  Reflects the \f(CW\*(C`\-\-with\-double\-comparison={tristate|bool|libf7}\*(C'\fR
  configure\ option (\f(CW\*(C`https://gcc.gnu.org/install/configure.html#avr\*(C'\fR)
  and is defined to \f(CW2\fR or \f(CW3\fR.
  .ie n .IP """_\|_WITH_LIBF7_LIBGCC_\|_""" 4
! .el .IP "\f(CW_\|_WITH_LIBF7_LIBGCC_\|_\fR" 4
  .IX Item "__WITH_LIBF7_LIBGCC__"
  .PD 0
  .ie n .IP """_\|_WITH_LIBF7_MATH_\|_""" 4
! .el .IP "\f(CW_\|_WITH_LIBF7_MATH_\|_\fR" 4
  .IX Item "__WITH_LIBF7_MATH__"
  .ie n .IP """_\|_WITH_LIBF7_MATH_SYMBOLS_\|_""" 4
! .el .IP "\f(CW_\|_WITH_LIBF7_MATH_SYMBOLS_\|_\fR" 4
  .IX Item "__WITH_LIBF7_MATH_SYMBOLS__"
  .PD
  Reflects the \f(CW\*(C`\-\-with\-libf7={libgcc|math|math\-symbols}\*(C'\fR
  configure\ option (\f(CW\*(C`https://gcc.gnu.org/install/configure.html#avr\*(C'\fR).
  .PP
! \s-1AVR\s0 Internal Options
  .IX Subsection "AVR Internal Options"
  .PP
  The following options are used internally by the compiler and to communicate
! between device specs files and the compiler proper. You don't need to set these
  options by hand, in particular they are not optimization options.
! Using these options in the wrong way may lead to sub-optimal or wrong code.
  They are documented for completeness, and in order to get a better
  understanding of
  device\ specs (\f(CW\*(C`https://gcc.gnu.org/wiki/avr\-gcc#spec\-files\*(C'\fR)
  files.
! .IP "\fB\-mn\-flash=\fR\fInum\fR" 4
  .IX Item "-mn-flash=num"
  Assume that the flash memory has a size of \fInum\fR times 64 KiB.
! This determines which \f(CW\*(C`_\|_flash\f(CIN\f(CW\*(C'\fR address spaces are available.
! .IP "\fB\-mflmap\fR" 4
  .IX Item "-mflmap"
  The device has the \f(CW\*(C`FLMAP\*(C'\fR bit field located in special function
  register \f(CW\*(C`NVMCTRL_CTRLB\*(C'\fR.
! .IP "\fB\-mrmw\fR" 4
  .IX Item "-mrmw"
! Assume that the device supports the Read-Modify-Write
  instructions \f(CW\*(C`XCH\*(C'\fR, \f(CW\*(C`LAC\*(C'\fR, \f(CW\*(C`LAS\*(C'\fR and \f(CW\*(C`LAT\*(C'\fR.
! .IP "\fB\-mshort\-calls\fR" 4
  .IX Item "-mshort-calls"
  Assume that \f(CW\*(C`RJMP\*(C'\fR and \f(CW\*(C`RCALL\*(C'\fR can target the whole
  program memory. This option is used for multilib generation and selection
  for the devices from architecture \f(CW\*(C`avrxmega3\*(C'\fR.
! .IP "\fB\-mskip\-bug\fR" 4
  .IX Item "-mskip-bug"
  Generate code without skips (\f(CW\*(C`CPSE\*(C'\fR, \f(CW\*(C`SBRS\*(C'\fR,
  \&\f(CW\*(C`SBRC\*(C'\fR, \f(CW\*(C`SBIS\*(C'\fR, \f(CW\*(C`SBIC\*(C'\fR) over 32\-bit instructions.
! .IP "\fB\-msp8\fR" 4
  .IX Item "-msp8"
  Treat the stack pointer register as an 8\-bit register,
  i.e. assume the high byte of the stack pointer is zero.
--- 24511,24633 ----
  .el .IP "*<The device has the \f(CWNVMCTRL_CTRLB.FLMAP\fR bitfield.>" 4
  .IX Item "*<The device has the NVMCTRL_CTRLB.FLMAP bitfield.>"
  This applies to the AVR64* and AVR128* devices.
! .IP "*<It\*(Aqs not known at assembler\-time which emulation will be used.>" 4
  .IX Item "*<It's not known at assembler-time which emulation will be used.>"
  .RE
  .RS 4
  .Sp
! This implies the compiler was configured with GNU Binutils that implement
! PR31124 (\f(CW\*(C`https://sourceware.org/PR31124\*(C'\fR).
  .RE
  .ie n .IP """_\|_AVR_RODATA_IN_RAM_\|_""" 4
! .el .IP \f(CW_\|_AVR_RODATA_IN_RAM_\|_\fR 4
  .IX Item "__AVR_RODATA_IN_RAM__"
  This macro is undefined when the code is compiled for a core architecture.
  .Sp
  When the code is compiled for a device, the macro is defined to 1
! when the \f(CW\*(C`.rodata\*(C'\fR sections for read\-only data is located in RAM;
  and defined to 0, otherwise.
  .ie n .IP """_\|_WITH_AVRLIBC_\|_""" 4
! .el .IP \f(CW_\|_WITH_AVRLIBC_\|_\fR 4
  .IX Item "__WITH_AVRLIBC__"
! The compiler is configured to be used together with AVR\-LibC.
  See the \fB\-\-with\-avrlibc\fR configure option.
  .ie n .IP """_\|_HAVE_SIGNAL_N_\|_""" 4
! .el .IP \f(CW_\|_HAVE_SIGNAL_N_\|_\fR 4
  .IX Item "__HAVE_SIGNAL_N__"
! The compiler supports the \f(CWsignal(\fR\f(CInum\fR\f(CW)\fR and
! \&\f(CWinterrupt(\fR\f(CInum\fR\f(CW)\fR
! \&\fBAVR Function Attributes,,function attributes\fR
  with an argument \fInum\fR that specifies the number of the
  interrupt service routine.
  .ie n .IP """_\|_HAVE_DOUBLE_MULTILIB_\|_""" 4
! .el .IP \f(CW_\|_HAVE_DOUBLE_MULTILIB_\|_\fR 4
  .IX Item "__HAVE_DOUBLE_MULTILIB__"
  Defined if \fB\-mdouble=\fR acts as a multilib option.
  .ie n .IP """_\|_HAVE_DOUBLE32_\|_""" 4
! .el .IP \f(CW_\|_HAVE_DOUBLE32_\|_\fR 4
  .IX Item "__HAVE_DOUBLE32__"
  .PD 0
  .ie n .IP """_\|_HAVE_DOUBLE64_\|_""" 4
! .el .IP \f(CW_\|_HAVE_DOUBLE64_\|_\fR 4
  .IX Item "__HAVE_DOUBLE64__"
  .PD
  Defined if the compiler supports 32\-bit double resp. 64\-bit double.
  The actual layout is specified by option \fB\-mdouble=\fR.
  .ie n .IP """_\|_DEFAULT_DOUBLE_\|_""" 4
! .el .IP \f(CW_\|_DEFAULT_DOUBLE_\|_\fR 4
  .IX Item "__DEFAULT_DOUBLE__"
  The size in bits of \f(CW\*(C`double\*(C'\fR if \fB\-mdouble=\fR is not set.
! To test the layout of \f(CW\*(C`double\*(C'\fR in a program, use the built\-in
  macro \f(CW\*(C`_\|_SIZEOF_DOUBLE_\|_\*(C'\fR.
  .ie n .IP """_\|_HAVE_LONG_DOUBLE32_\|_""" 4
! .el .IP \f(CW_\|_HAVE_LONG_DOUBLE32_\|_\fR 4
  .IX Item "__HAVE_LONG_DOUBLE32__"
  .PD 0
  .ie n .IP """_\|_HAVE_LONG_DOUBLE64_\|_""" 4
! .el .IP \f(CW_\|_HAVE_LONG_DOUBLE64_\|_\fR 4
  .IX Item "__HAVE_LONG_DOUBLE64__"
  .ie n .IP """_\|_HAVE_LONG_DOUBLE_MULTILIB_\|_""" 4
! .el .IP \f(CW_\|_HAVE_LONG_DOUBLE_MULTILIB_\|_\fR 4
  .IX Item "__HAVE_LONG_DOUBLE_MULTILIB__"
  .ie n .IP """_\|_DEFAULT_LONG_DOUBLE_\|_""" 4
! .el .IP \f(CW_\|_DEFAULT_LONG_DOUBLE_\|_\fR 4
  .IX Item "__DEFAULT_LONG_DOUBLE__"
  .PD
  Same as above, but for \f(CW\*(C`long double\*(C'\fR instead of \f(CW\*(C`double\*(C'\fR.
  .ie n .IP """_\|_WITH_DOUBLE_COMPARISON_\|_""" 4
! .el .IP \f(CW_\|_WITH_DOUBLE_COMPARISON_\|_\fR 4
  .IX Item "__WITH_DOUBLE_COMPARISON__"
  Reflects the \f(CW\*(C`\-\-with\-double\-comparison={tristate|bool|libf7}\*(C'\fR
  configure\ option (\f(CW\*(C`https://gcc.gnu.org/install/configure.html#avr\*(C'\fR)
  and is defined to \f(CW2\fR or \f(CW3\fR.
  .ie n .IP """_\|_WITH_LIBF7_LIBGCC_\|_""" 4
! .el .IP \f(CW_\|_WITH_LIBF7_LIBGCC_\|_\fR 4
  .IX Item "__WITH_LIBF7_LIBGCC__"
  .PD 0
  .ie n .IP """_\|_WITH_LIBF7_MATH_\|_""" 4
! .el .IP \f(CW_\|_WITH_LIBF7_MATH_\|_\fR 4
  .IX Item "__WITH_LIBF7_MATH__"
  .ie n .IP """_\|_WITH_LIBF7_MATH_SYMBOLS_\|_""" 4
! .el .IP \f(CW_\|_WITH_LIBF7_MATH_SYMBOLS_\|_\fR 4
  .IX Item "__WITH_LIBF7_MATH_SYMBOLS__"
  .PD
  Reflects the \f(CW\*(C`\-\-with\-libf7={libgcc|math|math\-symbols}\*(C'\fR
  configure\ option (\f(CW\*(C`https://gcc.gnu.org/install/configure.html#avr\*(C'\fR).
  .PP
! AVR Internal Options
  .IX Subsection "AVR Internal Options"
  .PP
  The following options are used internally by the compiler and to communicate
! between device specs files and the compiler proper. You don\*(Aqt need to set these
  options by hand, in particular they are not optimization options.
! Using these options in the wrong way may lead to sub\-optimal or wrong code.
  They are documented for completeness, and in order to get a better
  understanding of
  device\ specs (\f(CW\*(C`https://gcc.gnu.org/wiki/avr\-gcc#spec\-files\*(C'\fR)
  files.
! .IP \fB\-mn\-flash=\fR\fInum\fR 4
  .IX Item "-mn-flash=num"
  Assume that the flash memory has a size of \fInum\fR times 64 KiB.
! This determines which \f(CW\*(C`_\|_flash\fR\f(CIN\fR\f(CW\*(C'\fR address spaces are available.
! .IP \fB\-mflmap\fR 4
  .IX Item "-mflmap"
  The device has the \f(CW\*(C`FLMAP\*(C'\fR bit field located in special function
  register \f(CW\*(C`NVMCTRL_CTRLB\*(C'\fR.
! .IP \fB\-mrmw\fR 4
  .IX Item "-mrmw"
! Assume that the device supports the Read\-Modify\-Write
  instructions \f(CW\*(C`XCH\*(C'\fR, \f(CW\*(C`LAC\*(C'\fR, \f(CW\*(C`LAS\*(C'\fR and \f(CW\*(C`LAT\*(C'\fR.
! .IP \fB\-mshort\-calls\fR 4
  .IX Item "-mshort-calls"
  Assume that \f(CW\*(C`RJMP\*(C'\fR and \f(CW\*(C`RCALL\*(C'\fR can target the whole
  program memory. This option is used for multilib generation and selection
  for the devices from architecture \f(CW\*(C`avrxmega3\*(C'\fR.
! .IP \fB\-mskip\-bug\fR 4
  .IX Item "-mskip-bug"
  Generate code without skips (\f(CW\*(C`CPSE\*(C'\fR, \f(CW\*(C`SBRS\*(C'\fR,
  \&\f(CW\*(C`SBRC\*(C'\fR, \f(CW\*(C`SBIS\*(C'\fR, \f(CW\*(C`SBIC\*(C'\fR) over 32\-bit instructions.
! .IP \fB\-msp8\fR 4
  .IX Item "-msp8"
  Treat the stack pointer register as an 8\-bit register,
  i.e. assume the high byte of the stack pointer is zero.
*************** These architectures mix devices with and
*** 24702,24708 ****
  .PP
  \fIBlackfin Options\fR
  .IX Subsection "Blackfin Options"
! .IP "\fB\-mcpu=\fR\fIcpu\fR[\fB\-\fR\fIsirevision\fR]" 4
  .IX Item "-mcpu=cpu[-sirevision]"
  Specifies the name of the target Blackfin processor.  Currently, \fIcpu\fR
  can be one of \fBbf512\fR, \fBbf514\fR, \fBbf516\fR, \fBbf518\fR,
--- 24637,24643 ----
  .PP
  \fIBlackfin Options\fR
  .IX Subsection "Blackfin Options"
! .IP \fB\-mcpu=\fR\fIcpu\fR[\fB\-\fR\fIsirevision\fR] 4
  .IX Item "-mcpu=cpu[-sirevision]"
  Specifies the name of the target Blackfin processor.  Currently, \fIcpu\fR
  can be one of \fBbf512\fR, \fBbf514\fR, \fBbf516\fR, \fBbf518\fR,
*************** hexadecimal digits representing the majo
*** 24722,24840 ****
  revision.  If \fIsirevision\fR is \fBnone\fR, the \f(CW\*(C`_\|_SILICON_REVISION_\|_\*(C'\fR
  is not defined.  If \fIsirevision\fR is \fBany\fR, the
  \&\f(CW\*(C`_\|_SILICON_REVISION_\|_\*(C'\fR is defined to be \f(CW0xffff\fR.
! If this optional \fIsirevision\fR is not used, \s-1GCC\s0 assumes the latest known
  silicon revision of the targeted Blackfin processor.
  .Sp
! \&\s-1GCC\s0 defines a preprocessor macro for the specified \fIcpu\fR.
! For the \fBbfin-elf\fR toolchain, this option causes the hardware \s-1BSP\s0
  provided by libgloss to be linked in if \fB\-msim\fR is not given.
  .Sp
  Without this option, \fBbf532\fR is used as the processor by default.
  .Sp
  Note that support for \fBbf561\fR is incomplete.  For \fBbf561\fR,
  only the preprocessor macro is defined.
! .IP "\fB\-msim\fR" 4
  .IX Item "-msim"
  Specifies that the program will be run on the simulator.  This causes
! the simulator \s-1BSP\s0 provided by libgloss to be linked in.  This option
! has effect only for \fBbfin-elf\fR toolchain.
  Certain other options, such as \fB\-mid\-shared\-library\fR and
  \&\fB\-mfdpic\fR, imply \fB\-msim\fR.
! .IP "\fB\-momit\-leaf\-frame\-pointer\fR" 4
  .IX Item "-momit-leaf-frame-pointer"
! Don't keep the frame pointer in a register for leaf functions.  This
  avoids the instructions to save, set up and restore frame pointers and
  makes an extra register available in leaf functions.
! .IP "\fB\-mspecld\-anomaly\fR" 4
  .IX Item "-mspecld-anomaly"
  When enabled, the compiler ensures that the generated code does not
  contain speculative loads after jump instructions. If this option is used,
  \&\f(CW\*(C`_\|_WORKAROUND_SPECULATIVE_LOADS\*(C'\fR is defined.
! .IP "\fB\-mno\-specld\-anomaly\fR" 4
  .IX Item "-mno-specld-anomaly"
! Don't generate extra code to prevent speculative loads from occurring.
! .IP "\fB\-mcsync\-anomaly\fR" 4
  .IX Item "-mcsync-anomaly"
  When enabled, the compiler ensures that the generated code does not
! contain \s-1CSYNC\s0 or \s-1SSYNC\s0 instructions too soon after conditional branches.
  If this option is used, \f(CW\*(C`_\|_WORKAROUND_SPECULATIVE_SYNCS\*(C'\fR is defined.
! .IP "\fB\-mno\-csync\-anomaly\fR" 4
  .IX Item "-mno-csync-anomaly"
! Don't generate extra code to prevent \s-1CSYNC\s0 or \s-1SSYNC\s0 instructions from
  occurring too soon after a conditional branch.
! .IP "\fB\-mlow64k\fR" 4
  .IX Item "-mlow64k"
  When enabled, the compiler is free to take advantage of the knowledge that
  the entire program fits into the low 64k of memory.
! .IP "\fB\-mno\-low64k\fR" 4
  .IX Item "-mno-low64k"
  Assume that the program is arbitrarily large.  This is the default.
! .IP "\fB\-mstack\-check\-l1\fR" 4
  .IX Item "-mstack-check-l1"
  Do stack checking using information placed into L1 scratchpad memory by the
  uClinux kernel.
! .IP "\fB\-mid\-shared\-library\fR" 4
  .IX Item "-mid-shared-library"
! Generate code that supports shared libraries via the library \s-1ID\s0 method.
  This allows for execute in place and shared libraries in an environment
  without virtual memory management.  This option implies \fB\-fPIC\fR.
! With a \fBbfin-elf\fR target, this option implies \fB\-msim\fR.
! .IP "\fB\-mno\-id\-shared\-library\fR" 4
  .IX Item "-mno-id-shared-library"
! Generate code that doesn't assume ID-based shared libraries are being used.
  This is the default.
! .IP "\fB\-mleaf\-id\-shared\-library\fR" 4
  .IX Item "-mleaf-id-shared-library"
! Generate code that supports shared libraries via the library \s-1ID\s0 method,
! but assumes that this library or executable won't link against any other
! \&\s-1ID\s0 shared libraries.  That allows the compiler to use faster code for jumps
  and calls.
! .IP "\fB\-mno\-leaf\-id\-shared\-library\fR" 4
  .IX Item "-mno-leaf-id-shared-library"
! Do not assume that the code being compiled won't link against any \s-1ID\s0 shared
  libraries.  Slower code is generated for jump and call insns.
! .IP "\fB\-mshared\-library\-id=n\fR" 4
  .IX Item "-mshared-library-id=n"
! Specifies the identification number of the ID-based shared library being
  compiled.  Specifying a value of 0 generates more compact code; specifying
  other values forces the allocation of that number to the current
! library but is no more space\- or time-efficient than omitting this option.
! .IP "\fB\-msep\-data\fR" 4
  .IX Item "-msep-data"
  Generate code that allows the data segment to be located in a different
  area of memory from the text segment.  This allows for execute in place in
  an environment without virtual memory management by eliminating relocations
  against the text section.
! .IP "\fB\-mno\-sep\-data\fR" 4
  .IX Item "-mno-sep-data"
  Generate code that assumes that the data segment follows the text segment.
  This is the default.
! .IP "\fB\-mlong\-calls\fR" 4
  .IX Item "-mlong-calls"
  .PD 0
! .IP "\fB\-mno\-long\-calls\fR" 4
  .IX Item "-mno-long-calls"
  .PD
  Tells the compiler to perform function calls by first loading the
  address of the function into a register and then performing a subroutine
  call on this register.  This switch is needed if the target function
! lies outside of the 24\-bit addressing range of the offset-based
  version of subroutine call instruction.
  .Sp
  This feature is not enabled by default.  Specifying
  \&\fB\-mno\-long\-calls\fR restores the default behavior.  Note these
  switches have no effect on how the compiler generates code to handle
  function calls via function pointers.
! .IP "\fB\-mfast\-fp\fR" 4
  .IX Item "-mfast-fp"
! Link with the fast floating-point library. This library relaxes some of
! the \s-1IEEE\s0 floating-point standard's rules for checking inputs against
! Not-a-Number (\s-1NAN\s0), in the interest of performance.
! .IP "\fB\-minline\-plt\fR" 4
  .IX Item "-minline-plt"
! Enable inlining of \s-1PLT\s0 entries in function calls to functions that are
  not known to bind locally.  It has no effect without \fB\-mfdpic\fR.
! .IP "\fB\-mmulticore\fR" 4
  .IX Item "-mmulticore"
  Build a standalone application for multicore Blackfin processors.
  This option causes proper start files and link scripts supporting
--- 24657,24775 ----
  revision.  If \fIsirevision\fR is \fBnone\fR, the \f(CW\*(C`_\|_SILICON_REVISION_\|_\*(C'\fR
  is not defined.  If \fIsirevision\fR is \fBany\fR, the
  \&\f(CW\*(C`_\|_SILICON_REVISION_\|_\*(C'\fR is defined to be \f(CW0xffff\fR.
! If this optional \fIsirevision\fR is not used, GCC assumes the latest known
  silicon revision of the targeted Blackfin processor.
  .Sp
! GCC defines a preprocessor macro for the specified \fIcpu\fR.
! For the \fBbfin\-elf\fR toolchain, this option causes the hardware BSP
  provided by libgloss to be linked in if \fB\-msim\fR is not given.
  .Sp
  Without this option, \fBbf532\fR is used as the processor by default.
  .Sp
  Note that support for \fBbf561\fR is incomplete.  For \fBbf561\fR,
  only the preprocessor macro is defined.
! .IP \fB\-msim\fR 4
  .IX Item "-msim"
  Specifies that the program will be run on the simulator.  This causes
! the simulator BSP provided by libgloss to be linked in.  This option
! has effect only for \fBbfin\-elf\fR toolchain.
  Certain other options, such as \fB\-mid\-shared\-library\fR and
  \&\fB\-mfdpic\fR, imply \fB\-msim\fR.
! .IP \fB\-momit\-leaf\-frame\-pointer\fR 4
  .IX Item "-momit-leaf-frame-pointer"
! Don\*(Aqt keep the frame pointer in a register for leaf functions.  This
  avoids the instructions to save, set up and restore frame pointers and
  makes an extra register available in leaf functions.
! .IP \fB\-mspecld\-anomaly\fR 4
  .IX Item "-mspecld-anomaly"
  When enabled, the compiler ensures that the generated code does not
  contain speculative loads after jump instructions. If this option is used,
  \&\f(CW\*(C`_\|_WORKAROUND_SPECULATIVE_LOADS\*(C'\fR is defined.
! .IP \fB\-mno\-specld\-anomaly\fR 4
  .IX Item "-mno-specld-anomaly"
! Don\*(Aqt generate extra code to prevent speculative loads from occurring.
! .IP \fB\-mcsync\-anomaly\fR 4
  .IX Item "-mcsync-anomaly"
  When enabled, the compiler ensures that the generated code does not
! contain CSYNC or SSYNC instructions too soon after conditional branches.
  If this option is used, \f(CW\*(C`_\|_WORKAROUND_SPECULATIVE_SYNCS\*(C'\fR is defined.
! .IP \fB\-mno\-csync\-anomaly\fR 4
  .IX Item "-mno-csync-anomaly"
! Don\*(Aqt generate extra code to prevent CSYNC or SSYNC instructions from
  occurring too soon after a conditional branch.
! .IP \fB\-mlow64k\fR 4
  .IX Item "-mlow64k"
  When enabled, the compiler is free to take advantage of the knowledge that
  the entire program fits into the low 64k of memory.
! .IP \fB\-mno\-low64k\fR 4
  .IX Item "-mno-low64k"
  Assume that the program is arbitrarily large.  This is the default.
! .IP \fB\-mstack\-check\-l1\fR 4
  .IX Item "-mstack-check-l1"
  Do stack checking using information placed into L1 scratchpad memory by the
  uClinux kernel.
! .IP \fB\-mid\-shared\-library\fR 4
  .IX Item "-mid-shared-library"
! Generate code that supports shared libraries via the library ID method.
  This allows for execute in place and shared libraries in an environment
  without virtual memory management.  This option implies \fB\-fPIC\fR.
! With a \fBbfin\-elf\fR target, this option implies \fB\-msim\fR.
! .IP \fB\-mno\-id\-shared\-library\fR 4
  .IX Item "-mno-id-shared-library"
! Generate code that doesn\*(Aqt assume ID\-based shared libraries are being used.
  This is the default.
! .IP \fB\-mleaf\-id\-shared\-library\fR 4
  .IX Item "-mleaf-id-shared-library"
! Generate code that supports shared libraries via the library ID method,
! but assumes that this library or executable won\*(Aqt link against any other
! ID shared libraries.  That allows the compiler to use faster code for jumps
  and calls.
! .IP \fB\-mno\-leaf\-id\-shared\-library\fR 4
  .IX Item "-mno-leaf-id-shared-library"
! Do not assume that the code being compiled won\*(Aqt link against any ID shared
  libraries.  Slower code is generated for jump and call insns.
! .IP \fB\-mshared\-library\-id=n\fR 4
  .IX Item "-mshared-library-id=n"
! Specifies the identification number of the ID\-based shared library being
  compiled.  Specifying a value of 0 generates more compact code; specifying
  other values forces the allocation of that number to the current
! library but is no more space\- or time\-efficient than omitting this option.
! .IP \fB\-msep\-data\fR 4
  .IX Item "-msep-data"
  Generate code that allows the data segment to be located in a different
  area of memory from the text segment.  This allows for execute in place in
  an environment without virtual memory management by eliminating relocations
  against the text section.
! .IP \fB\-mno\-sep\-data\fR 4
  .IX Item "-mno-sep-data"
  Generate code that assumes that the data segment follows the text segment.
  This is the default.
! .IP \fB\-mlong\-calls\fR 4
  .IX Item "-mlong-calls"
  .PD 0
! .IP \fB\-mno\-long\-calls\fR 4
  .IX Item "-mno-long-calls"
  .PD
  Tells the compiler to perform function calls by first loading the
  address of the function into a register and then performing a subroutine
  call on this register.  This switch is needed if the target function
! lies outside of the 24\-bit addressing range of the offset\-based
  version of subroutine call instruction.
  .Sp
  This feature is not enabled by default.  Specifying
  \&\fB\-mno\-long\-calls\fR restores the default behavior.  Note these
  switches have no effect on how the compiler generates code to handle
  function calls via function pointers.
! .IP \fB\-mfast\-fp\fR 4
  .IX Item "-mfast-fp"
! Link with the fast floating\-point library. This library relaxes some of
! the IEEE floating\-point standard\*(Aqs rules for checking inputs against
! Not\-a\-Number (NAN), in the interest of performance.
! .IP \fB\-minline\-plt\fR 4
  .IX Item "-minline-plt"
! Enable inlining of PLT entries in function calls to functions that are
  not known to bind locally.  It has no effect without \fB\-mfdpic\fR.
! .IP \fB\-mmulticore\fR 4
  .IX Item "-mmulticore"
  Build a standalone application for multicore Blackfin processors.
  This option causes proper start files and link scripts supporting
*************** multicore to be used, and defines the ma
*** 24842,24876 ****
  It can only be used with \fB\-mcpu=bf561\fR[\fB\-\fR\fIsirevision\fR].
  .Sp
  This option can be used with \fB\-mcorea\fR or \fB\-mcoreb\fR, which
! selects the one-application-per-core programming model.  Without
  \&\fB\-mcorea\fR or \fB\-mcoreb\fR, the single\-application/dual\-core
  programming model is used. In this model, the main function of Core B
  should be named as \f(CW\*(C`coreb_main\*(C'\fR.
  .Sp
! If this option is not used, the single-core application programming
  model is used.
! .IP "\fB\-mcorea\fR" 4
  .IX Item "-mcorea"
! Build a standalone application for Core A of \s-1BF561\s0 when using
! the one-application-per-core programming model. Proper start files
  and link scripts are used to support Core A, and the macro
  \&\f(CW\*(C`_\|_BFIN_COREA\*(C'\fR is defined.
  This option can only be used in conjunction with \fB\-mmulticore\fR.
! .IP "\fB\-mcoreb\fR" 4
  .IX Item "-mcoreb"
! Build a standalone application for Core B of \s-1BF561\s0 when using
! the one-application-per-core programming model. Proper start files
  and link scripts are used to support Core B, and the macro
  \&\f(CW\*(C`_\|_BFIN_COREB\*(C'\fR is defined. When this option is used, \f(CW\*(C`coreb_main\*(C'\fR
  should be used instead of \f(CW\*(C`main\*(C'\fR.
  This option can only be used in conjunction with \fB\-mmulticore\fR.
! .IP "\fB\-msdram\fR" 4
  .IX Item "-msdram"
! Build a standalone application for \s-1SDRAM.\s0 Proper start files and
! link scripts are used to put the application into \s-1SDRAM,\s0 and the macro
  \&\f(CW\*(C`_\|_BFIN_SDRAM\*(C'\fR is defined.
! The loader should initialize \s-1SDRAM\s0 before loading the application.
! .IP "\fB\-micplb\fR" 4
  .IX Item "-micplb"
  Assume that ICPLBs are enabled at run time.  This has an effect on certain
  anomaly workarounds.  For Linux targets, the default is to assume ICPLBs
--- 24777,24811 ----
  It can only be used with \fB\-mcpu=bf561\fR[\fB\-\fR\fIsirevision\fR].
  .Sp
  This option can be used with \fB\-mcorea\fR or \fB\-mcoreb\fR, which
! selects the one\-application\-per\-core programming model.  Without
  \&\fB\-mcorea\fR or \fB\-mcoreb\fR, the single\-application/dual\-core
  programming model is used. In this model, the main function of Core B
  should be named as \f(CW\*(C`coreb_main\*(C'\fR.
  .Sp
! If this option is not used, the single\-core application programming
  model is used.
! .IP \fB\-mcorea\fR 4
  .IX Item "-mcorea"
! Build a standalone application for Core A of BF561 when using
! the one\-application\-per\-core programming model. Proper start files
  and link scripts are used to support Core A, and the macro
  \&\f(CW\*(C`_\|_BFIN_COREA\*(C'\fR is defined.
  This option can only be used in conjunction with \fB\-mmulticore\fR.
! .IP \fB\-mcoreb\fR 4
  .IX Item "-mcoreb"
! Build a standalone application for Core B of BF561 when using
! the one\-application\-per\-core programming model. Proper start files
  and link scripts are used to support Core B, and the macro
  \&\f(CW\*(C`_\|_BFIN_COREB\*(C'\fR is defined. When this option is used, \f(CW\*(C`coreb_main\*(C'\fR
  should be used instead of \f(CW\*(C`main\*(C'\fR.
  This option can only be used in conjunction with \fB\-mmulticore\fR.
! .IP \fB\-msdram\fR 4
  .IX Item "-msdram"
! Build a standalone application for SDRAM. Proper start files and
! link scripts are used to put the application into SDRAM, and the macro
  \&\f(CW\*(C`_\|_BFIN_SDRAM\*(C'\fR is defined.
! The loader should initialize SDRAM before loading the application.
! .IP \fB\-micplb\fR 4
  .IX Item "-micplb"
  Assume that ICPLBs are enabled at run time.  This has an effect on certain
  anomaly workarounds.  For Linux targets, the default is to assume ICPLBs
*************** are enabled; for standalone applications
*** 24878,24912 ****
  .PP
  \fIC6X Options\fR
  .IX Subsection "C6X Options"
! .IP "\fB\-march=\fR\fIname\fR" 4
  .IX Item "-march=name"
! This specifies the name of the target architecture.  \s-1GCC\s0 uses this
  name to determine what kind of instructions it can emit when generating
  assembly code.  Permissible names are: \fBc62x\fR,
  \&\fBc64x\fR, \fBc64x+\fR, \fBc67x\fR, \fBc67x+\fR, \fBc674x\fR.
! .IP "\fB\-mbig\-endian\fR" 4
  .IX Item "-mbig-endian"
! Generate code for a big-endian target.
! .IP "\fB\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
! Generate code for a little-endian target.  This is the default.
! .IP "\fB\-msim\fR" 4
  .IX Item "-msim"
  Choose startup files and linker script suitable for the simulator.
! .IP "\fB\-msdata=default\fR" 4
  .IX Item "-msdata=default"
  Put small global and static data in the \f(CW\*(C`.neardata\*(C'\fR section,
  which is pointed to by register \f(CW\*(C`B14\*(C'\fR.  Put small uninitialized
  global and static data in the \f(CW\*(C`.bss\*(C'\fR section, which is adjacent
! to the \f(CW\*(C`.neardata\*(C'\fR section.  Put small read-only data into the
  \&\f(CW\*(C`.rodata\*(C'\fR section.  The corresponding sections used for large
  pieces of data are \f(CW\*(C`.fardata\*(C'\fR, \f(CW\*(C`.far\*(C'\fR and \f(CW\*(C`.const\*(C'\fR.
! .IP "\fB\-msdata=all\fR" 4
  .IX Item "-msdata=all"
  Put all data, not just small objects, into the sections reserved for
  small data, and use addressing relative to the \f(CW\*(C`B14\*(C'\fR register to
  access them.
! .IP "\fB\-msdata=none\fR" 4
  .IX Item "-msdata=none"
  Make no use of the sections reserved for small data, and use absolute
  addresses to access all data.  Put all initialized global and static
--- 24813,24847 ----
  .PP
  \fIC6X Options\fR
  .IX Subsection "C6X Options"
! .IP \fB\-march=\fR\fIname\fR 4
  .IX Item "-march=name"
! This specifies the name of the target architecture.  GCC uses this
  name to determine what kind of instructions it can emit when generating
  assembly code.  Permissible names are: \fBc62x\fR,
  \&\fBc64x\fR, \fBc64x+\fR, \fBc67x\fR, \fBc67x+\fR, \fBc674x\fR.
! .IP \fB\-mbig\-endian\fR 4
  .IX Item "-mbig-endian"
! Generate code for a big\-endian target.
! .IP \fB\-mlittle\-endian\fR 4
  .IX Item "-mlittle-endian"
! Generate code for a little\-endian target.  This is the default.
! .IP \fB\-msim\fR 4
  .IX Item "-msim"
  Choose startup files and linker script suitable for the simulator.
! .IP \fB\-msdata=default\fR 4
  .IX Item "-msdata=default"
  Put small global and static data in the \f(CW\*(C`.neardata\*(C'\fR section,
  which is pointed to by register \f(CW\*(C`B14\*(C'\fR.  Put small uninitialized
  global and static data in the \f(CW\*(C`.bss\*(C'\fR section, which is adjacent
! to the \f(CW\*(C`.neardata\*(C'\fR section.  Put small read\-only data into the
  \&\f(CW\*(C`.rodata\*(C'\fR section.  The corresponding sections used for large
  pieces of data are \f(CW\*(C`.fardata\*(C'\fR, \f(CW\*(C`.far\*(C'\fR and \f(CW\*(C`.const\*(C'\fR.
! .IP \fB\-msdata=all\fR 4
  .IX Item "-msdata=all"
  Put all data, not just small objects, into the sections reserved for
  small data, and use addressing relative to the \f(CW\*(C`B14\*(C'\fR register to
  access them.
! .IP \fB\-msdata=none\fR 4
  .IX Item "-msdata=none"
  Make no use of the sections reserved for small data, and use absolute
  addresses to access all data.  Put all initialized global and static
*************** data in the \f(CW\*(C`.fardata\*(C'\fR s
*** 24914,25037 ****
  \&\f(CW\*(C`.far\*(C'\fR section.  Put all constant data into the \f(CW\*(C`.const\*(C'\fR
  section.
  .PP
! \fI\s-1CRIS\s0 Options\fR
  .IX Subsection "CRIS Options"
  .PP
! These options are defined specifically for the \s-1CRIS\s0 ports.
! .IP "\fB\-march=\fR\fIarchitecture-type\fR" 4
  .IX Item "-march=architecture-type"
  .PD 0
! .IP "\fB\-mcpu=\fR\fIarchitecture-type\fR" 4
  .IX Item "-mcpu=architecture-type"
  .PD
  Generate code for the specified architecture.  The choices for
! \&\fIarchitecture-type\fR are \fBv3\fR, \fBv8\fR and \fBv10\fR for
! respectively \s-1ETRAX\s0\ 4, \s-1ETRAX\s0\ 100, and \s-1ETRAX\s0\ 100\ \s-1LX.\s0
  Default is \fBv0\fR.
! .IP "\fB\-mtune=\fR\fIarchitecture-type\fR" 4
  .IX Item "-mtune=architecture-type"
! Tune to \fIarchitecture-type\fR everything applicable about the generated
! code, except for the \s-1ABI\s0 and the set of available instructions.  The
! choices for \fIarchitecture-type\fR are the same as for
! \&\fB\-march=\fR\fIarchitecture-type\fR.
! .IP "\fB\-mmax\-stack\-frame=\fR\fIn\fR" 4
  .IX Item "-mmax-stack-frame=n"
  Warn when the stack frame of a function exceeds \fIn\fR bytes.
! .IP "\fB\-metrax4\fR" 4
  .IX Item "-metrax4"
  .PD 0
! .IP "\fB\-metrax100\fR" 4
  .IX Item "-metrax100"
  .PD
  The options \fB\-metrax4\fR and \fB\-metrax100\fR are synonyms for
  \&\fB\-march=v3\fR and \fB\-march=v8\fR respectively.
! .IP "\fB\-mmul\-bug\-workaround\fR" 4
  .IX Item "-mmul-bug-workaround"
  .PD 0
! .IP "\fB\-mno\-mul\-bug\-workaround\fR" 4
  .IX Item "-mno-mul-bug-workaround"
  .PD
! Work around a bug in the \f(CW\*(C`muls\*(C'\fR and \f(CW\*(C`mulu\*(C'\fR instructions for \s-1CPU\s0
  models where it applies.  This option is disabled by default.
! .IP "\fB\-mpdebug\fR" 4
  .IX Item "-mpdebug"
! Enable CRIS-specific verbose debug-related information in the assembly
  code.  This option also has the effect of turning off the \fB#NO_APP\fR
! formatted-code indicator to the assembler at the beginning of the
  assembly file.
! .IP "\fB\-mcc\-init\fR" 4
  .IX Item "-mcc-init"
! Do not use condition-code results from previous instruction; always emit
  compare and test instructions before use of condition codes.
! .IP "\fB\-mno\-side\-effects\fR" 4
  .IX Item "-mno-side-effects"
  Do not emit instructions with side effects in addressing modes other than
! post-increment.
! .IP "\fB\-mstack\-align\fR" 4
  .IX Item "-mstack-align"
  .PD 0
! .IP "\fB\-mno\-stack\-align\fR" 4
  .IX Item "-mno-stack-align"
! .IP "\fB\-mdata\-align\fR" 4
  .IX Item "-mdata-align"
! .IP "\fB\-mno\-data\-align\fR" 4
  .IX Item "-mno-data-align"
! .IP "\fB\-mconst\-align\fR" 4
  .IX Item "-mconst-align"
! .IP "\fB\-mno\-const\-align\fR" 4
  .IX Item "-mno-const-align"
  .PD
  These options (\fBno\-\fR options) arrange (eliminate arrangements) for the
  stack frame, individual data and constants to be aligned for the maximum
! single data access size for the chosen \s-1CPU\s0 model.  The default is to
! arrange for 32\-bit alignment.  \s-1ABI\s0 details such as structure layout are
  not affected by these options.
! .IP "\fB\-m32\-bit\fR" 4
  .IX Item "-m32-bit"
  .PD 0
! .IP "\fB\-m16\-bit\fR" 4
  .IX Item "-m16-bit"
! .IP "\fB\-m8\-bit\fR" 4
  .IX Item "-m8-bit"
  .PD
! Similar to the stack\- data\- and const-align options above, these options
  arrange for stack frame, writable data and constants to all be 32\-bit,
  16\-bit or 8\-bit aligned.  The default is 32\-bit alignment.
! .IP "\fB\-mno\-prologue\-epilogue\fR" 4
  .IX Item "-mno-prologue-epilogue"
  .PD 0
! .IP "\fB\-mprologue\-epilogue\fR" 4
  .IX Item "-mprologue-epilogue"
  .PD
  With \fB\-mno\-prologue\-epilogue\fR, the normal function prologue and
  epilogue which set up the stack frame are omitted and no return
  instructions or return sequences are generated in the code.  Use this
  option only together with visual inspection of the compiled code: no
! warnings or errors are generated when call-saved registers must be saved,
  or storage for local variables needs to be allocated.
! .IP "\fB\-melf\fR" 4
  .IX Item "-melf"
! Legacy no-op option.
! .IP "\fB\-sim\fR" 4
  .IX Item "-sim"
  This option arranges
! to link with input-output functions from a simulator library.  Code,
! initialized data and zero-initialized data are allocated consecutively.
! .IP "\fB\-sim2\fR" 4
  .IX Item "-sim2"
  Like \fB\-sim\fR, but pass linker options to locate initialized data at
! 0x40000000 and zero-initialized data at 0x80000000.
  .PP
  \fIC\-SKY Options\fR
  .IX Subsection "C-SKY Options"
  .PP
! \&\s-1GCC\s0 supports these options when compiling for C\-SKY V2 processors.
! .IP "\fB\-march=\fR\fIarch\fR" 4
  .IX Item "-march=arch"
  Specify the C\-SKY target architecture.  Valid values for \fIarch\fR are:
  \&\fBck801\fR, \fBck802\fR, \fBck803\fR, \fBck807\fR, and \fBck810\fR.
  The default is \fBck810\fR.
! .IP "\fB\-mcpu=\fR\fIcpu\fR" 4
  .IX Item "-mcpu=cpu"
  Specify the C\-SKY target processor.  Valid values for \fIcpu\fR are:
  \&\fBck801\fR, \fBck801t\fR,
--- 24849,24972 ----
  \&\f(CW\*(C`.far\*(C'\fR section.  Put all constant data into the \f(CW\*(C`.const\*(C'\fR
  section.
  .PP
! \fICRIS Options\fR
  .IX Subsection "CRIS Options"
  .PP
! These options are defined specifically for the CRIS ports.
! .IP \fB\-march=\fR\fIarchitecture\-type\fR 4
  .IX Item "-march=architecture-type"
  .PD 0
! .IP \fB\-mcpu=\fR\fIarchitecture\-type\fR 4
  .IX Item "-mcpu=architecture-type"
  .PD
  Generate code for the specified architecture.  The choices for
! \&\fIarchitecture\-type\fR are \fBv3\fR, \fBv8\fR and \fBv10\fR for
! respectively ETRAX\ 4, ETRAX\ 100, and ETRAX\ 100\ LX.
  Default is \fBv0\fR.
! .IP \fB\-mtune=\fR\fIarchitecture\-type\fR 4
  .IX Item "-mtune=architecture-type"
! Tune to \fIarchitecture\-type\fR everything applicable about the generated
! code, except for the ABI and the set of available instructions.  The
! choices for \fIarchitecture\-type\fR are the same as for
! \&\fB\-march=\fR\fIarchitecture\-type\fR.
! .IP \fB\-mmax\-stack\-frame=\fR\fIn\fR 4
  .IX Item "-mmax-stack-frame=n"
  Warn when the stack frame of a function exceeds \fIn\fR bytes.
! .IP \fB\-metrax4\fR 4
  .IX Item "-metrax4"
  .PD 0
! .IP \fB\-metrax100\fR 4
  .IX Item "-metrax100"
  .PD
  The options \fB\-metrax4\fR and \fB\-metrax100\fR are synonyms for
  \&\fB\-march=v3\fR and \fB\-march=v8\fR respectively.
! .IP \fB\-mmul\-bug\-workaround\fR 4
  .IX Item "-mmul-bug-workaround"
  .PD 0
! .IP \fB\-mno\-mul\-bug\-workaround\fR 4
  .IX Item "-mno-mul-bug-workaround"
  .PD
! Work around a bug in the \f(CW\*(C`muls\*(C'\fR and \f(CW\*(C`mulu\*(C'\fR instructions for CPU
  models where it applies.  This option is disabled by default.
! .IP \fB\-mpdebug\fR 4
  .IX Item "-mpdebug"
! Enable CRIS\-specific verbose debug\-related information in the assembly
  code.  This option also has the effect of turning off the \fB#NO_APP\fR
! formatted\-code indicator to the assembler at the beginning of the
  assembly file.
! .IP \fB\-mcc\-init\fR 4
  .IX Item "-mcc-init"
! Do not use condition\-code results from previous instruction; always emit
  compare and test instructions before use of condition codes.
! .IP \fB\-mno\-side\-effects\fR 4
  .IX Item "-mno-side-effects"
  Do not emit instructions with side effects in addressing modes other than
! post\-increment.
! .IP \fB\-mstack\-align\fR 4
  .IX Item "-mstack-align"
  .PD 0
! .IP \fB\-mno\-stack\-align\fR 4
  .IX Item "-mno-stack-align"
! .IP \fB\-mdata\-align\fR 4
  .IX Item "-mdata-align"
! .IP \fB\-mno\-data\-align\fR 4
  .IX Item "-mno-data-align"
! .IP \fB\-mconst\-align\fR 4
  .IX Item "-mconst-align"
! .IP \fB\-mno\-const\-align\fR 4
  .IX Item "-mno-const-align"
  .PD
  These options (\fBno\-\fR options) arrange (eliminate arrangements) for the
  stack frame, individual data and constants to be aligned for the maximum
! single data access size for the chosen CPU model.  The default is to
! arrange for 32\-bit alignment.  ABI details such as structure layout are
  not affected by these options.
! .IP \fB\-m32\-bit\fR 4
  .IX Item "-m32-bit"
  .PD 0
! .IP \fB\-m16\-bit\fR 4
  .IX Item "-m16-bit"
! .IP \fB\-m8\-bit\fR 4
  .IX Item "-m8-bit"
  .PD
! Similar to the stack\- data\- and const\-align options above, these options
  arrange for stack frame, writable data and constants to all be 32\-bit,
  16\-bit or 8\-bit aligned.  The default is 32\-bit alignment.
! .IP \fB\-mno\-prologue\-epilogue\fR 4
  .IX Item "-mno-prologue-epilogue"
  .PD 0
! .IP \fB\-mprologue\-epilogue\fR 4
  .IX Item "-mprologue-epilogue"
  .PD
  With \fB\-mno\-prologue\-epilogue\fR, the normal function prologue and
  epilogue which set up the stack frame are omitted and no return
  instructions or return sequences are generated in the code.  Use this
  option only together with visual inspection of the compiled code: no
! warnings or errors are generated when call\-saved registers must be saved,
  or storage for local variables needs to be allocated.
! .IP \fB\-melf\fR 4
  .IX Item "-melf"
! Legacy no\-op option.
! .IP \fB\-sim\fR 4
  .IX Item "-sim"
  This option arranges
! to link with input\-output functions from a simulator library.  Code,
! initialized data and zero\-initialized data are allocated consecutively.
! .IP \fB\-sim2\fR 4
  .IX Item "-sim2"
  Like \fB\-sim\fR, but pass linker options to locate initialized data at
! 0x40000000 and zero\-initialized data at 0x80000000.
  .PP
  \fIC\-SKY Options\fR
  .IX Subsection "C-SKY Options"
  .PP
! GCC supports these options when compiling for C\-SKY V2 processors.
! .IP \fB\-march=\fR\fIarch\fR 4
  .IX Item "-march=arch"
  Specify the C\-SKY target architecture.  Valid values for \fIarch\fR are:
  \&\fBck801\fR, \fBck802\fR, \fBck803\fR, \fBck807\fR, and \fBck810\fR.
  The default is \fBck810\fR.
! .IP \fB\-mcpu=\fR\fIcpu\fR 4
  .IX Item "-mcpu=cpu"
  Specify the C\-SKY target processor.  Valid values for \fIcpu\fR are:
  \&\fBck801\fR, \fBck801t\fR,
*************** Specify the C\-SKY target processor.  Va
*** 25050,25274 ****
  \&\fBck810e\fR, \fBck810et\fR, \fBck810ef\fR, \fBck810eft\fR,
  \&\fBck810\fR, \fBck810v\fR, \fBck810f\fR, \fBck810t\fR, \fBck810fv\fR,
  \&\fBck810tv\fR, \fBck810ft\fR, and \fBck810ftv\fR.
! .IP "\fB\-mbig\-endian\fR" 4
  .IX Item "-mbig-endian"
  .PD 0
! .IP "\fB\-EB\fR" 4
  .IX Item "-EB"
! .IP "\fB\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
! .IP "\fB\-EL\fR" 4
  .IX Item "-EL"
  .PD
! Select big\- or little-endian code.  The default is little-endian.
! .IP "\fB\-mfloat\-abi=\fR\fIname\fR" 4
  .IX Item "-mfloat-abi=name"
! Specifies which floating-point \s-1ABI\s0 to use.  Permissible values
  are: \fBsoft\fR, \fBsoftfp\fR and \fBhard\fR.
  .Sp
! Specifying \fBsoft\fR causes \s-1GCC\s0 to generate output containing
! library calls for floating-point operations.
! \&\fBsoftfp\fR allows the generation of code using hardware floating-point
! instructions, but still uses the soft-float calling conventions.
! \&\fBhard\fR allows generation of floating-point instructions
! and uses FPU-specific calling conventions.
  .Sp
  The default depends on the specific target configuration.  Note that
! the hard-float and soft-float ABIs are not link-compatible; you must
! compile your entire program with the same \s-1ABI,\s0 and link with a
  compatible set of libraries.
! .IP "\fB\-mhard\-float\fR" 4
  .IX Item "-mhard-float"
  .PD 0
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  .PD
! Select hardware or software floating-point implementations.
  The default is soft float.
! .IP "\fB\-mdouble\-float\fR" 4
  .IX Item "-mdouble-float"
  .PD 0
! .IP "\fB\-mno\-double\-float\fR" 4
  .IX Item "-mno-double-float"
  .PD
  When \fB\-mhard\-float\fR is in effect, enable generation of
! double-precision float instructions.  This is the default except
! when compiling for \s-1CK803.\s0
! .IP "\fB\-mfdivdu\fR" 4
  .IX Item "-mfdivdu"
  .PD 0
! .IP "\fB\-mno\-fdivdu\fR" 4
  .IX Item "-mno-fdivdu"
  .PD
  When \fB\-mhard\-float\fR is in effect, enable generation of
  \&\f(CW\*(C`frecipd\*(C'\fR, \f(CW\*(C`fsqrtd\*(C'\fR, and \f(CW\*(C`fdivd\*(C'\fR instructions.
! This is the default except when compiling for \s-1CK803.\s0
! .IP "\fB\-mfpu=\fR\fIfpu\fR" 4
  .IX Item "-mfpu=fpu"
! Select the floating-point processor.  This option can only be used with
  \&\fB\-mhard\-float\fR.
  Values for \fIfpu\fR are
  \&\fBfpv2_sf\fR (equivalent to \fB\-mno\-double\-float \-mno\-fdivdu\fR),
  \&\fBfpv2\fR (\fB\-mdouble\-float \-mno\-divdu\fR), and
  \&\fBfpv2_divd\fR (\fB\-mdouble\-float \-mdivdu\fR).
! .IP "\fB\-melrw\fR" 4
  .IX Item "-melrw"
  .PD 0
! .IP "\fB\-mno\-elrw\fR" 4
  .IX Item "-mno-elrw"
  .PD
  Enable the extended \f(CW\*(C`lrw\*(C'\fR instruction.  This option defaults to on
! for \s-1CK801\s0 and off otherwise.
! .IP "\fB\-mistack\fR" 4
  .IX Item "-mistack"
  .PD 0
! .IP "\fB\-mno\-istack\fR" 4
  .IX Item "-mno-istack"
  .PD
  Enable interrupt stack instructions; the default is off.
  .Sp
  The \fB\-mistack\fR option is required to handle the
  \&\f(CW\*(C`interrupt\*(C'\fR and \f(CW\*(C`isr\*(C'\fR function attributes.
! .IP "\fB\-mmp\fR" 4
  .IX Item "-mmp"
  Enable multiprocessor instructions; the default is off.
! .IP "\fB\-mcp\fR" 4
  .IX Item "-mcp"
  Enable coprocessor instructions; the default is off.
! .IP "\fB\-mcache\fR" 4
  .IX Item "-mcache"
  Enable coprocessor instructions; the default is off.
! .IP "\fB\-msecurity\fR" 4
  .IX Item "-msecurity"
  Enable C\-SKY security instructions; the default is off.
! .IP "\fB\-mtrust\fR" 4
  .IX Item "-mtrust"
  Enable C\-SKY trust instructions; the default is off.
! .IP "\fB\-mdsp\fR" 4
  .IX Item "-mdsp"
  .PD 0
! .IP "\fB\-medsp\fR" 4
  .IX Item "-medsp"
! .IP "\fB\-mvdsp\fR" 4
  .IX Item "-mvdsp"
  .PD
! Enable C\-SKY \s-1DSP,\s0 Enhanced \s-1DSP,\s0 or Vector \s-1DSP\s0 instructions, respectively.
  All of these options default to off.
! .IP "\fB\-mdiv\fR" 4
  .IX Item "-mdiv"
  .PD 0
! .IP "\fB\-mno\-div\fR" 4
  .IX Item "-mno-div"
  .PD
  Generate divide instructions.  Default is off.
! .IP "\fB\-msmart\fR" 4
  .IX Item "-msmart"
  .PD 0
! .IP "\fB\-mno\-smart\fR" 4
  .IX Item "-mno-smart"
  .PD
  Generate code for Smart Mode, using only registers numbered 0\-7 to allow
! use of 16\-bit instructions.  This option is ignored for \s-1CK801\s0 where this
! is the required behavior, and it defaults to on for \s-1CK802.\s0
  For other targets, the default is off.
! .IP "\fB\-mhigh\-registers\fR" 4
  .IX Item "-mhigh-registers"
  .PD 0
! .IP "\fB\-mno\-high\-registers\fR" 4
  .IX Item "-mno-high-registers"
  .PD
  Generate code using the high registers numbered 16\-31.  This option
! is not supported on \s-1CK801, CK802,\s0 or \s-1CK803,\s0 and is enabled by default
  for other processors.
! .IP "\fB\-manchor\fR" 4
  .IX Item "-manchor"
  .PD 0
! .IP "\fB\-mno\-anchor\fR" 4
  .IX Item "-mno-anchor"
  .PD
  Generate code using global anchor symbol addresses.
! .IP "\fB\-mpushpop\fR" 4
  .IX Item "-mpushpop"
  .PD 0
! .IP "\fB\-mno\-pushpop\fR" 4
  .IX Item "-mno-pushpop"
  .PD
  Generate code using \f(CW\*(C`push\*(C'\fR and \f(CW\*(C`pop\*(C'\fR instructions.  This option
  defaults to on.
! .IP "\fB\-mmultiple\-stld\fR" 4
  .IX Item "-mmultiple-stld"
  .PD 0
! .IP "\fB\-mstm\fR" 4
  .IX Item "-mstm"
! .IP "\fB\-mno\-multiple\-stld\fR" 4
  .IX Item "-mno-multiple-stld"
! .IP "\fB\-mno\-stm\fR" 4
  .IX Item "-mno-stm"
  .PD
  Generate code using \f(CW\*(C`stm\*(C'\fR and \f(CW\*(C`ldm\*(C'\fR instructions.  This option
! isn't supported on \s-1CK801\s0 but is enabled by default on other processors.
! .IP "\fB\-mconstpool\fR" 4
  .IX Item "-mconstpool"
  .PD 0
! .IP "\fB\-mno\-constpool\fR" 4
  .IX Item "-mno-constpool"
  .PD
  Create constant pools in the compiler instead of deferring it to the
  assembler.  This option is the default and required for correct code
! generation on \s-1CK801\s0 and \s-1CK802,\s0 and is optional on other processors.
! .IP "\fB\-mstack\-size\fR" 4
  .IX Item "-mstack-size"
  .PD 0
! .IP "\fB\-mno\-stack\-size\fR" 4
  .IX Item "-mno-stack-size"
  .PD
  Emit \f(CW\*(C`.stack_size\*(C'\fR directives for each function in the assembly
  output.  This option defaults to off.
! .IP "\fB\-mccrt\fR" 4
  .IX Item "-mccrt"
  .PD 0
! .IP "\fB\-mno\-ccrt\fR" 4
  .IX Item "-mno-ccrt"
  .PD
  Generate code for the C\-SKY compiler runtime instead of libgcc.  This
  option defaults to off.
! .IP "\fB\-mbranch\-cost=\fR\fIn\fR" 4
  .IX Item "-mbranch-cost=n"
  Set the branch costs to roughly \f(CW\*(C`n\*(C'\fR instructions.  The default is 1.
! .IP "\fB\-msched\-prolog\fR" 4
  .IX Item "-msched-prolog"
  .PD 0
! .IP "\fB\-mno\-sched\-prolog\fR" 4
  .IX Item "-mno-sched-prolog"
  .PD
  Permit scheduling of function prologue and epilogue sequences.  Using
! this option can result in code that is not compliant with the C\-SKY V2 \s-1ABI\s0
  prologue requirements and that cannot be debugged or backtraced.
  It is disabled by default.
! .IP "\fB\-msim\fR" 4
  .IX Item "-msim"
  Links the library libsemi.a which is in compatible with simulator. Applicable
! to \s-1ELF\s0 compiler only.
  .PP
  \fICygwin and MinGW Options\fR
  .IX Subsection "Cygwin and MinGW Options"
  .PP
  These additional options are available for Microsoft Windows targets:
! .IP "\fB\-mconsole\fR" 4
  .IX Item "-mconsole"
  This option
  specifies that a console application is to be generated, by
! instructing the linker to set the \s-1PE\s0 header subsystem type
  required for console applications.
  This option is available for Cygwin and MinGW targets and is
  enabled by default on those targets.
! .IP "\fB\-mcrtdll=\fR\fIlibrary\fR" 4
  .IX Item "-mcrtdll=library"
! Preprocess, compile or link with specified C RunTime \s-1DLL\s0 \fIlibrary\fR.
  This option adjust predefined macros \f(CW\*(C`_\|_CRTDLL_\|_\*(C'\fR, \f(CW\*(C`_\|_MSVCRT_\|_\*(C'\fR,
! \&\f(CW\*(C`_UCRT\*(C'\fR and \f(CW\*(C`_\|_MSVCRT_VERSION_\|_\*(C'\fR for specified \s-1CRT\s0 \fIlibrary\fR,
! choose start file for \s-1CRT\s0 \fIlibrary\fR and link with \s-1CRT\s0 \fIlibrary\fR.
! Recognized \s-1CRT\s0 library names for proprocessor are:
  \&\f(CW\*(C`crtdll*\*(C'\fR, \f(CW\*(C`msvcrt10*\*(C'\fR, \f(CW\*(C`msvcrt20*\*(C'\fR, \f(CW\*(C`msvcrt40*\*(C'\fR,
  \&\f(CW\*(C`msvcr40*\*(C'\fR, \f(CW\*(C`msvcrtd*\*(C'\fR, \f(CW\*(C`msvcrt\-os*\*(C'\fR,
  \&\f(CW\*(C`msvcr70*\*(C'\fR, \f(CW\*(C`msvcr71*\*(C'\fR, \f(CW\*(C`msvcr80*\*(C'\fR, \f(CW\*(C`msvcr90*\*(C'\fR,
--- 24985,25209 ----
  \&\fBck810e\fR, \fBck810et\fR, \fBck810ef\fR, \fBck810eft\fR,
  \&\fBck810\fR, \fBck810v\fR, \fBck810f\fR, \fBck810t\fR, \fBck810fv\fR,
  \&\fBck810tv\fR, \fBck810ft\fR, and \fBck810ftv\fR.
! .IP \fB\-mbig\-endian\fR 4
  .IX Item "-mbig-endian"
  .PD 0
! .IP \fB\-EB\fR 4
  .IX Item "-EB"
! .IP \fB\-mlittle\-endian\fR 4
  .IX Item "-mlittle-endian"
! .IP \fB\-EL\fR 4
  .IX Item "-EL"
  .PD
! Select big\- or little\-endian code.  The default is little\-endian.
! .IP \fB\-mfloat\-abi=\fR\fIname\fR 4
  .IX Item "-mfloat-abi=name"
! Specifies which floating\-point ABI to use.  Permissible values
  are: \fBsoft\fR, \fBsoftfp\fR and \fBhard\fR.
  .Sp
! Specifying \fBsoft\fR causes GCC to generate output containing
! library calls for floating\-point operations.
! \&\fBsoftfp\fR allows the generation of code using hardware floating\-point
! instructions, but still uses the soft\-float calling conventions.
! \&\fBhard\fR allows generation of floating\-point instructions
! and uses FPU\-specific calling conventions.
  .Sp
  The default depends on the specific target configuration.  Note that
! the hard\-float and soft\-float ABIs are not link\-compatible; you must
! compile your entire program with the same ABI, and link with a
  compatible set of libraries.
! .IP \fB\-mhard\-float\fR 4
  .IX Item "-mhard-float"
  .PD 0
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  .PD
! Select hardware or software floating\-point implementations.
  The default is soft float.
! .IP \fB\-mdouble\-float\fR 4
  .IX Item "-mdouble-float"
  .PD 0
! .IP \fB\-mno\-double\-float\fR 4
  .IX Item "-mno-double-float"
  .PD
  When \fB\-mhard\-float\fR is in effect, enable generation of
! double\-precision float instructions.  This is the default except
! when compiling for CK803.
! .IP \fB\-mfdivdu\fR 4
  .IX Item "-mfdivdu"
  .PD 0
! .IP \fB\-mno\-fdivdu\fR 4
  .IX Item "-mno-fdivdu"
  .PD
  When \fB\-mhard\-float\fR is in effect, enable generation of
  \&\f(CW\*(C`frecipd\*(C'\fR, \f(CW\*(C`fsqrtd\*(C'\fR, and \f(CW\*(C`fdivd\*(C'\fR instructions.
! This is the default except when compiling for CK803.
! .IP \fB\-mfpu=\fR\fIfpu\fR 4
  .IX Item "-mfpu=fpu"
! Select the floating\-point processor.  This option can only be used with
  \&\fB\-mhard\-float\fR.
  Values for \fIfpu\fR are
  \&\fBfpv2_sf\fR (equivalent to \fB\-mno\-double\-float \-mno\-fdivdu\fR),
  \&\fBfpv2\fR (\fB\-mdouble\-float \-mno\-divdu\fR), and
  \&\fBfpv2_divd\fR (\fB\-mdouble\-float \-mdivdu\fR).
! .IP \fB\-melrw\fR 4
  .IX Item "-melrw"
  .PD 0
! .IP \fB\-mno\-elrw\fR 4
  .IX Item "-mno-elrw"
  .PD
  Enable the extended \f(CW\*(C`lrw\*(C'\fR instruction.  This option defaults to on
! for CK801 and off otherwise.
! .IP \fB\-mistack\fR 4
  .IX Item "-mistack"
  .PD 0
! .IP \fB\-mno\-istack\fR 4
  .IX Item "-mno-istack"
  .PD
  Enable interrupt stack instructions; the default is off.
  .Sp
  The \fB\-mistack\fR option is required to handle the
  \&\f(CW\*(C`interrupt\*(C'\fR and \f(CW\*(C`isr\*(C'\fR function attributes.
! .IP \fB\-mmp\fR 4
  .IX Item "-mmp"
  Enable multiprocessor instructions; the default is off.
! .IP \fB\-mcp\fR 4
  .IX Item "-mcp"
  Enable coprocessor instructions; the default is off.
! .IP \fB\-mcache\fR 4
  .IX Item "-mcache"
  Enable coprocessor instructions; the default is off.
! .IP \fB\-msecurity\fR 4
  .IX Item "-msecurity"
  Enable C\-SKY security instructions; the default is off.
! .IP \fB\-mtrust\fR 4
  .IX Item "-mtrust"
  Enable C\-SKY trust instructions; the default is off.
! .IP \fB\-mdsp\fR 4
  .IX Item "-mdsp"
  .PD 0
! .IP \fB\-medsp\fR 4
  .IX Item "-medsp"
! .IP \fB\-mvdsp\fR 4
  .IX Item "-mvdsp"
  .PD
! Enable C\-SKY DSP, Enhanced DSP, or Vector DSP instructions, respectively.
  All of these options default to off.
! .IP \fB\-mdiv\fR 4
  .IX Item "-mdiv"
  .PD 0
! .IP \fB\-mno\-div\fR 4
  .IX Item "-mno-div"
  .PD
  Generate divide instructions.  Default is off.
! .IP \fB\-msmart\fR 4
  .IX Item "-msmart"
  .PD 0
! .IP \fB\-mno\-smart\fR 4
  .IX Item "-mno-smart"
  .PD
  Generate code for Smart Mode, using only registers numbered 0\-7 to allow
! use of 16\-bit instructions.  This option is ignored for CK801 where this
! is the required behavior, and it defaults to on for CK802.
  For other targets, the default is off.
! .IP \fB\-mhigh\-registers\fR 4
  .IX Item "-mhigh-registers"
  .PD 0
! .IP \fB\-mno\-high\-registers\fR 4
  .IX Item "-mno-high-registers"
  .PD
  Generate code using the high registers numbered 16\-31.  This option
! is not supported on CK801, CK802, or CK803, and is enabled by default
  for other processors.
! .IP \fB\-manchor\fR 4
  .IX Item "-manchor"
  .PD 0
! .IP \fB\-mno\-anchor\fR 4
  .IX Item "-mno-anchor"
  .PD
  Generate code using global anchor symbol addresses.
! .IP \fB\-mpushpop\fR 4
  .IX Item "-mpushpop"
  .PD 0
! .IP \fB\-mno\-pushpop\fR 4
  .IX Item "-mno-pushpop"
  .PD
  Generate code using \f(CW\*(C`push\*(C'\fR and \f(CW\*(C`pop\*(C'\fR instructions.  This option
  defaults to on.
! .IP \fB\-mmultiple\-stld\fR 4
  .IX Item "-mmultiple-stld"
  .PD 0
! .IP \fB\-mstm\fR 4
  .IX Item "-mstm"
! .IP \fB\-mno\-multiple\-stld\fR 4
  .IX Item "-mno-multiple-stld"
! .IP \fB\-mno\-stm\fR 4
  .IX Item "-mno-stm"
  .PD
  Generate code using \f(CW\*(C`stm\*(C'\fR and \f(CW\*(C`ldm\*(C'\fR instructions.  This option
! isn\*(Aqt supported on CK801 but is enabled by default on other processors.
! .IP \fB\-mconstpool\fR 4
  .IX Item "-mconstpool"
  .PD 0
! .IP \fB\-mno\-constpool\fR 4
  .IX Item "-mno-constpool"
  .PD
  Create constant pools in the compiler instead of deferring it to the
  assembler.  This option is the default and required for correct code
! generation on CK801 and CK802, and is optional on other processors.
! .IP \fB\-mstack\-size\fR 4
  .IX Item "-mstack-size"
  .PD 0
! .IP \fB\-mno\-stack\-size\fR 4
  .IX Item "-mno-stack-size"
  .PD
  Emit \f(CW\*(C`.stack_size\*(C'\fR directives for each function in the assembly
  output.  This option defaults to off.
! .IP \fB\-mccrt\fR 4
  .IX Item "-mccrt"
  .PD 0
! .IP \fB\-mno\-ccrt\fR 4
  .IX Item "-mno-ccrt"
  .PD
  Generate code for the C\-SKY compiler runtime instead of libgcc.  This
  option defaults to off.
! .IP \fB\-mbranch\-cost=\fR\fIn\fR 4
  .IX Item "-mbranch-cost=n"
  Set the branch costs to roughly \f(CW\*(C`n\*(C'\fR instructions.  The default is 1.
! .IP \fB\-msched\-prolog\fR 4
  .IX Item "-msched-prolog"
  .PD 0
! .IP \fB\-mno\-sched\-prolog\fR 4
  .IX Item "-mno-sched-prolog"
  .PD
  Permit scheduling of function prologue and epilogue sequences.  Using
! this option can result in code that is not compliant with the C\-SKY V2 ABI
  prologue requirements and that cannot be debugged or backtraced.
  It is disabled by default.
! .IP \fB\-msim\fR 4
  .IX Item "-msim"
  Links the library libsemi.a which is in compatible with simulator. Applicable
! to ELF compiler only.
  .PP
  \fICygwin and MinGW Options\fR
  .IX Subsection "Cygwin and MinGW Options"
  .PP
  These additional options are available for Microsoft Windows targets:
! .IP \fB\-mconsole\fR 4
  .IX Item "-mconsole"
  This option
  specifies that a console application is to be generated, by
! instructing the linker to set the PE header subsystem type
  required for console applications.
  This option is available for Cygwin and MinGW targets and is
  enabled by default on those targets.
! .IP \fB\-mcrtdll=\fR\fIlibrary\fR 4
  .IX Item "-mcrtdll=library"
! Preprocess, compile or link with specified C RunTime DLL \fIlibrary\fR.
  This option adjust predefined macros \f(CW\*(C`_\|_CRTDLL_\|_\*(C'\fR, \f(CW\*(C`_\|_MSVCRT_\|_\*(C'\fR,
! \&\f(CW\*(C`_UCRT\*(C'\fR and \f(CW\*(C`_\|_MSVCRT_VERSION_\|_\*(C'\fR for specified CRT \fIlibrary\fR,
! choose start file for CRT \fIlibrary\fR and link with CRT \fIlibrary\fR.
! Recognized CRT library names for proprocessor are:
  \&\f(CW\*(C`crtdll*\*(C'\fR, \f(CW\*(C`msvcrt10*\*(C'\fR, \f(CW\*(C`msvcrt20*\*(C'\fR, \f(CW\*(C`msvcrt40*\*(C'\fR,
  \&\f(CW\*(C`msvcr40*\*(C'\fR, \f(CW\*(C`msvcrtd*\*(C'\fR, \f(CW\*(C`msvcrt\-os*\*(C'\fR,
  \&\f(CW\*(C`msvcr70*\*(C'\fR, \f(CW\*(C`msvcr71*\*(C'\fR, \f(CW\*(C`msvcr80*\*(C'\fR, \f(CW\*(C`msvcr90*\*(C'\fR,
*************** Recognized \s-1CRT\s0 library names for
*** 25276,25340 ****
  If this options is not specified then the default MinGW import library
  \&\f(CW\*(C`msvcrt\*(C'\fR is used for linking and no other adjustment for
  preprocessor is done. MinGW import library \f(CW\*(C`msvcrt\*(C'\fR is just a
! symlink to (or a copy of) another MinGW \s-1CRT\s0 import library
  chosen during MinGW compilation. MinGW import library \f(CW\*(C`msvcrt\-os\*(C'\fR
! is for Windows system \s-1CRT DLL\s0 library \f(CW\*(C`msvcrt.dll\*(C'\fR and
  in most cases is the default MinGW import library.
! Generally speaking, changing the \s-1CRT DLL\s0 requires recompiling
! the entire MinGW \s-1CRT.\s0 This option is for experimental and testing
  purposes only.
  This option is available for MinGW targets.
! .IP "\fB\-mdll\fR" 4
  .IX Item "-mdll"
  This option is available for Cygwin and MinGW targets.  It
  specifies that a DLL\-\-\-a dynamic link library\-\-\-is to be
  generated, enabling the selection of the required runtime
  startup object and entry point.
! .IP "\fB\-mnop\-fun\-dllimport\fR" 4
  .IX Item "-mnop-fun-dllimport"
  This option is available for Cygwin and MinGW targets.  It
  specifies that the \f(CW\*(C`dllimport\*(C'\fR attribute should be ignored.
! .IP "\fB\-mthreads\fR" 4
  .IX Item "-mthreads"
  This option is available for MinGW targets. It specifies
! that MinGW-specific thread support is to be used.
! .IP "\fB\-municode\fR" 4
  .IX Item "-municode"
  This option is available for MinGW\-w64 targets.  It causes
  the \f(CW\*(C`UNICODE\*(C'\fR preprocessor macro to be predefined, and
! chooses Unicode-capable runtime startup code.
! .IP "\fB\-mwin32\fR" 4
  .IX Item "-mwin32"
  This option is available for Cygwin and MinGW targets.  It
  specifies that the typical Microsoft Windows predefined macros are to
! be set in the pre-processor, but does not influence the choice
  of runtime library/startup code.
! .IP "\fB\-mwindows\fR" 4
  .IX Item "-mwindows"
  This option is available for Cygwin and MinGW targets.  It
! specifies that a \s-1GUI\s0 application is to be generated by
! instructing the linker to set the \s-1PE\s0 header subsystem type
  appropriately.
! .IP "\fB\-fno\-set\-stack\-executable\fR" 4
  .IX Item "-fno-set-stack-executable"
  This option is available for MinGW targets. It specifies that
! the executable flag for the stack used by nested functions isn't
  set. This is necessary for binaries running in kernel mode of
! Microsoft Windows, as there the User32 \s-1API,\s0 which is used to set executable
! privileges, isn't available.
! .IP "\fB\-fwritable\-relocated\-rdata\fR" 4
  .IX Item "-fwritable-relocated-rdata"
  This option is available for MinGW and Cygwin targets.  It specifies
! that relocated-data in read-only section is put into the \f(CW\*(C`.data\*(C'\fR
  section.  This is a necessary for older runtimes not supporting
! modification of \f(CW\*(C`.rdata\*(C'\fR sections for pseudo-relocation.
! .IP "\fB\-mpe\-aligned\-commons\fR" 4
  .IX Item "-mpe-aligned-commons"
  This option is available for Cygwin and MinGW targets.  It
! specifies that the \s-1GNU\s0 extension to the \s-1PE\s0 file format that
! permits the correct alignment of \s-1COMMON\s0 variables should be
  used when generating code.  It is enabled by default if
! \&\s-1GCC\s0 detects that the target assembler found during configuration
  supports the feature.
  .PP
  See also under \fBx86 Options\fR for standard options.
--- 25211,25275 ----
  If this options is not specified then the default MinGW import library
  \&\f(CW\*(C`msvcrt\*(C'\fR is used for linking and no other adjustment for
  preprocessor is done. MinGW import library \f(CW\*(C`msvcrt\*(C'\fR is just a
! symlink to (or a copy of) another MinGW CRT import library
  chosen during MinGW compilation. MinGW import library \f(CW\*(C`msvcrt\-os\*(C'\fR
! is for Windows system CRT DLL library \f(CW\*(C`msvcrt.dll\*(C'\fR and
  in most cases is the default MinGW import library.
! Generally speaking, changing the CRT DLL requires recompiling
! the entire MinGW CRT. This option is for experimental and testing
  purposes only.
  This option is available for MinGW targets.
! .IP \fB\-mdll\fR 4
  .IX Item "-mdll"
  This option is available for Cygwin and MinGW targets.  It
  specifies that a DLL\-\-\-a dynamic link library\-\-\-is to be
  generated, enabling the selection of the required runtime
  startup object and entry point.
! .IP \fB\-mnop\-fun\-dllimport\fR 4
  .IX Item "-mnop-fun-dllimport"
  This option is available for Cygwin and MinGW targets.  It
  specifies that the \f(CW\*(C`dllimport\*(C'\fR attribute should be ignored.
! .IP \fB\-mthreads\fR 4
  .IX Item "-mthreads"
  This option is available for MinGW targets. It specifies
! that MinGW\-specific thread support is to be used.
! .IP \fB\-municode\fR 4
  .IX Item "-municode"
  This option is available for MinGW\-w64 targets.  It causes
  the \f(CW\*(C`UNICODE\*(C'\fR preprocessor macro to be predefined, and
! chooses Unicode\-capable runtime startup code.
! .IP \fB\-mwin32\fR 4
  .IX Item "-mwin32"
  This option is available for Cygwin and MinGW targets.  It
  specifies that the typical Microsoft Windows predefined macros are to
! be set in the pre\-processor, but does not influence the choice
  of runtime library/startup code.
! .IP \fB\-mwindows\fR 4
  .IX Item "-mwindows"
  This option is available for Cygwin and MinGW targets.  It
! specifies that a GUI application is to be generated by
! instructing the linker to set the PE header subsystem type
  appropriately.
! .IP \fB\-fno\-set\-stack\-executable\fR 4
  .IX Item "-fno-set-stack-executable"
  This option is available for MinGW targets. It specifies that
! the executable flag for the stack used by nested functions isn\*(Aqt
  set. This is necessary for binaries running in kernel mode of
! Microsoft Windows, as there the User32 API, which is used to set executable
! privileges, isn\*(Aqt available.
! .IP \fB\-fwritable\-relocated\-rdata\fR 4
  .IX Item "-fwritable-relocated-rdata"
  This option is available for MinGW and Cygwin targets.  It specifies
! that relocated\-data in read\-only section is put into the \f(CW\*(C`.data\*(C'\fR
  section.  This is a necessary for older runtimes not supporting
! modification of \f(CW\*(C`.rdata\*(C'\fR sections for pseudo\-relocation.
! .IP \fB\-mpe\-aligned\-commons\fR 4
  .IX Item "-mpe-aligned-commons"
  This option is available for Cygwin and MinGW targets.  It
! specifies that the GNU extension to the PE file format that
! permits the correct alignment of COMMON variables should be
  used when generating code.  It is enabled by default if
! GCC detects that the target assembler found during configuration
  supports the feature.
  .PP
  See also under \fBx86 Options\fR for standard options.
*************** See also under \fBx86 Options\fR for sta
*** 25345,25363 ****
  These options are defined for all architectures running the Darwin operating
  system.
  .PP
! \&\s-1FSF GCC\s0 on Darwin does not create \*(L"fat\*(R" object files; it creates
! an object file for the single architecture that \s-1GCC\s0 was built to
! target.  Apple's \s-1GCC\s0 on Darwin does create \*(L"fat\*(R" files if multiple
  \&\fB\-arch\fR options are used; it does so by running the compiler or
  linker multiple times and joining the results together with
  \&\fIlipo\fR.
  .PP
  The subtype of the file created (like \fBppc7400\fR or \fBppc970\fR or
! \&\fBi686\fR) is determined by the flags that specify the \s-1ISA\s0
! that \s-1GCC\s0 is targeting, like \fB\-mcpu\fR or \fB\-march\fR.  The
  \&\fB\-force_cpusubtype_ALL\fR option can be used to override this.
  .PP
! The Darwin tools vary in their behavior when presented with an \s-1ISA\s0
  mismatch.  The assembler, \fIas\fR, only permits instructions to
  be used that are valid for the subtype of the file it is generating,
  so you cannot put 64\-bit instructions in a \fBppc750\fR object file.
--- 25280,25298 ----
  These options are defined for all architectures running the Darwin operating
  system.
  .PP
! FSF GCC on Darwin does not create "fat" object files; it creates
! an object file for the single architecture that GCC was built to
! target.  Apple\*(Aqs GCC on Darwin does create "fat" files if multiple
  \&\fB\-arch\fR options are used; it does so by running the compiler or
  linker multiple times and joining the results together with
  \&\fIlipo\fR.
  .PP
  The subtype of the file created (like \fBppc7400\fR or \fBppc970\fR or
! \&\fBi686\fR) is determined by the flags that specify the ISA
! that GCC is targeting, like \fB\-mcpu\fR or \fB\-march\fR.  The
  \&\fB\-force_cpusubtype_ALL\fR option can be used to override this.
  .PP
! The Darwin tools vary in their behavior when presented with an ISA
  mismatch.  The assembler, \fIas\fR, only permits instructions to
  be used that are valid for the subtype of the file it is generating,
  so you cannot put 64\-bit instructions in a \fBppc750\fR object file.
*************** restrictive subtype than its input files
*** 25367,25378 ****
  a \fBppc970\fR object file in a \fBppc7400\fR library).  The linker
  for executables, \fBld\fR, quietly gives the executable the most
  restrictive subtype of any of its input files.
! .IP "\fB\-F\fR\fIdir\fR" 4
  .IX Item "-Fdir"
  Add the framework directory \fIdir\fR to the head of the list of
  directories to be searched for header files.  These directories are
  interleaved with those specified by \fB\-I\fR options and are
! scanned in a left-to-right order.
  .Sp
  A framework directory is a directory with frameworks in it.  A
  framework is a directory with a \fIHeaders\fR and/or
--- 25302,25313 ----
  a \fBppc970\fR object file in a \fBppc7400\fR library).  The linker
  for executables, \fBld\fR, quietly gives the executable the most
  restrictive subtype of any of its input files.
! .IP \fB\-F\fR\fIdir\fR 4
  .IX Item "-Fdir"
  Add the framework directory \fIdir\fR to the head of the list of
  directories to be searched for header files.  These directories are
  interleaved with those specified by \fB\-I\fR options and are
! scanned in a left\-to\-right order.
  .Sp
  A framework directory is a directory with frameworks in it.  A
  framework is a directory with a \fIHeaders\fR and/or
*************** in \fI.framework\fR.  The name of a fram
*** 25381,25387 ****
  directory excluding the \fI.framework\fR.  Headers associated with
  the framework are found in one of those two directories, with
  \&\fIHeaders\fR being searched first.  A subframework is a framework
! directory that is in a framework's \fIFrameworks\fR directory.
  Includes of subframework headers can only appear in a header of a
  framework that contains the subframework, or in a sibling subframework
  header.  Two subframeworks are siblings if they occur in the same
--- 25316,25322 ----
  directory excluding the \fI.framework\fR.  Headers associated with
  the framework are found in one of those two directories, with
  \&\fIHeaders\fR being searched first.  A subframework is a framework
! directory that is in a framework\*(Aqs \fIFrameworks\fR directory.
  Includes of subframework headers can only appear in a header of a
  framework that contains the subframework, or in a sibling subframework
  header.  Two subframeworks are siblings if they occur in the same
*************** in \fI/System/Library/Frameworks\fR and
*** 25394,25433 ****
  \&\f(CW\*(C`#include <Framework/header.h>\*(C'\fR, where \fIFramework\fR denotes
  the name of the framework and \fIheader.h\fR is found in the
  \&\fIPrivateHeaders\fR or \fIHeaders\fR directory.
! .IP "\fB\-iframework\fR\fIdir\fR" 4
  .IX Item "-iframeworkdir"
  Like \fB\-F\fR except the directory is a treated as a system
  directory.  The main difference between this \fB\-iframework\fR and
  \&\fB\-F\fR is that with \fB\-iframework\fR the compiler does not
  warn about constructs contained within header files found via
  \&\fIdir\fR.  This option is valid only for the C family of languages.
! .IP "\fB\-gused\fR" 4
  .IX Item "-gused"
  Emit debugging information for symbols that are used.  For stabs
  debugging format, this enables \fB\-feliminate\-unused\-debug\-symbols\fR.
! This is by default \s-1ON.\s0
! .IP "\fB\-gfull\fR" 4
  .IX Item "-gfull"
  Emit debugging information for all symbols and types.
! .IP "\fB\-fconstant\-cfstrings\fR" 4
  .IX Item "-fconstant-cfstrings"
  The \fB\-fconstant\-cfstrings\fR is an alias for \fB\-mconstant\-cfstrings\fR.
! .IP "\fB\-mconstant\-cfstrings\fR" 4
  .IX Item "-mconstant-cfstrings"
  When the NeXT runtime is being used (the default on these systems), override
  any \fB\-fconstant\-string\-class\fR setting and cause \f(CW\*(C`@"..."\*(C'\fR
  literals to be laid out as constant CoreFoundation strings.
! .IP "\fB\-mmacosx\-version\-min=\fR\fIversion\fR" 4
  .IX Item "-mmacosx-version-min=version"
  The earliest version of MacOS X that this executable will run on is
  \&\fIversion\fR.  Typical values supported for \fIversion\fR include \f(CW12\fR,
  \&\f(CW10.12\fR, and \f(CW10.5.8\fR.
  .Sp
! If the compiler was built to use the system's headers by default,
  then the default for this option is the system version on which the
  compiler is running, otherwise the default is to make choices that
  are compatible with as many systems and code bases as possible.
! .IP "\fB\-mkernel\fR" 4
  .IX Item "-mkernel"
  Enable kernel development mode.  The \fB\-mkernel\fR option sets
  \&\fB\-static\fR, \fB\-fno\-common\fR, \fB\-fno\-use\-cxa\-atexit\fR,
--- 25329,25368 ----
  \&\f(CW\*(C`#include <Framework/header.h>\*(C'\fR, where \fIFramework\fR denotes
  the name of the framework and \fIheader.h\fR is found in the
  \&\fIPrivateHeaders\fR or \fIHeaders\fR directory.
! .IP \fB\-iframework\fR\fIdir\fR 4
  .IX Item "-iframeworkdir"
  Like \fB\-F\fR except the directory is a treated as a system
  directory.  The main difference between this \fB\-iframework\fR and
  \&\fB\-F\fR is that with \fB\-iframework\fR the compiler does not
  warn about constructs contained within header files found via
  \&\fIdir\fR.  This option is valid only for the C family of languages.
! .IP \fB\-gused\fR 4
  .IX Item "-gused"
  Emit debugging information for symbols that are used.  For stabs
  debugging format, this enables \fB\-feliminate\-unused\-debug\-symbols\fR.
! This is by default ON.
! .IP \fB\-gfull\fR 4
  .IX Item "-gfull"
  Emit debugging information for all symbols and types.
! .IP \fB\-fconstant\-cfstrings\fR 4
  .IX Item "-fconstant-cfstrings"
  The \fB\-fconstant\-cfstrings\fR is an alias for \fB\-mconstant\-cfstrings\fR.
! .IP \fB\-mconstant\-cfstrings\fR 4
  .IX Item "-mconstant-cfstrings"
  When the NeXT runtime is being used (the default on these systems), override
  any \fB\-fconstant\-string\-class\fR setting and cause \f(CW\*(C`@"..."\*(C'\fR
  literals to be laid out as constant CoreFoundation strings.
! .IP \fB\-mmacosx\-version\-min=\fR\fIversion\fR 4
  .IX Item "-mmacosx-version-min=version"
  The earliest version of MacOS X that this executable will run on is
  \&\fIversion\fR.  Typical values supported for \fIversion\fR include \f(CW12\fR,
  \&\f(CW10.12\fR, and \f(CW10.5.8\fR.
  .Sp
! If the compiler was built to use the system\*(Aqs headers by default,
  then the default for this option is the system version on which the
  compiler is running, otherwise the default is to make choices that
  are compatible with as many systems and code bases as possible.
! .IP \fB\-mkernel\fR 4
  .IX Item "-mkernel"
  Enable kernel development mode.  The \fB\-mkernel\fR option sets
  \&\fB\-static\fR, \fB\-fno\-common\fR, \fB\-fno\-use\-cxa\-atexit\fR,
*************** Enable kernel development mode.  The \fB
*** 25436,25494 ****
  applicable.  This mode also sets \fB\-mno\-altivec\fR,
  \&\fB\-msoft\-float\fR, \fB\-fno\-builtin\fR and
  \&\fB\-mlong\-branch\fR for PowerPC targets.
! .IP "\fB\-mone\-byte\-bool\fR" 4
  .IX Item "-mone-byte-bool"
  Override the defaults for \f(CW\*(C`bool\*(C'\fR so that \f(CW\*(C`sizeof(bool)==1\*(C'\fR.
! By default \f(CW\*(C`sizeof(bool)\*(C'\fR is \f(CW4\fR when compiling for
  Darwin/PowerPC and \f(CW1\fR when compiling for Darwin/x86, so this
  option has no effect on x86.
  .Sp
! \&\fBWarning:\fR The \fB\-mone\-byte\-bool\fR switch causes \s-1GCC\s0
  to generate code that is not binary compatible with code generated
  without that switch.  Using this switch may require recompiling all
  other modules in a program, including system libraries.  Use this
! switch to conform to a non-default data model.
! .IP "\fB\-mfix\-and\-continue\fR" 4
  .IX Item "-mfix-and-continue"
  .PD 0
! .IP "\fB\-ffix\-and\-continue\fR" 4
  .IX Item "-ffix-and-continue"
! .IP "\fB\-findirect\-data\fR" 4
  .IX Item "-findirect-data"
  .PD
  Generate code suitable for fast turnaround development, such as to
! allow \s-1GDB\s0 to dynamically load \fI.o\fR files into already-running
  programs.  \fB\-findirect\-data\fR and \fB\-ffix\-and\-continue\fR
  are provided for backwards compatibility.
! .IP "\fB\-all_load\fR" 4
  .IX Item "-all_load"
  Loads all members of static archive libraries.
! See man \fIld\fR\|(1) for more information.
! .IP "\fB\-arch_errors_fatal\fR" 4
  .IX Item "-arch_errors_fatal"
  Cause the errors having to do with files that have the wrong architecture
  to be fatal.
! .IP "\fB\-bind_at_load\fR" 4
  .IX Item "-bind_at_load"
  Causes the output file to be marked such that the dynamic linker will
  bind all undefined references when the file is loaded or launched.
! .IP "\fB\-bundle\fR" 4
  .IX Item "-bundle"
! Produce a Mach-o bundle format file.
! See man \fIld\fR\|(1) for more information.
  .IP "\fB\-bundle_loader\fR \fIexecutable\fR" 4
  .IX Item "-bundle_loader executable"
  This option specifies the \fIexecutable\fR that will load the build
! output file being linked.  See man \fIld\fR\|(1) for more information.
! .IP "\fB\-dynamiclib\fR" 4
  .IX Item "-dynamiclib"
! When passed this option, \s-1GCC\s0 produces a dynamic library instead of
  an executable when linking, using the Darwin \fIlibtool\fR command.
! .IP "\fB\-force_cpusubtype_ALL\fR" 4
  .IX Item "-force_cpusubtype_ALL"
! This causes \s-1GCC\s0's output file to have the \fB\s-1ALL\s0\fR subtype, instead of
  one controlled by the \fB\-mcpu\fR or \fB\-march\fR option.
! .IP "\fB\-nodefaultrpaths\fR" 4
  .IX Item "-nodefaultrpaths"
  Do not add default run paths for the compiler library directories to
  executables, modules or dynamic libraries. On macOS 10.5 and later,
--- 25371,25429 ----
  applicable.  This mode also sets \fB\-mno\-altivec\fR,
  \&\fB\-msoft\-float\fR, \fB\-fno\-builtin\fR and
  \&\fB\-mlong\-branch\fR for PowerPC targets.
! .IP \fB\-mone\-byte\-bool\fR 4
  .IX Item "-mone-byte-bool"
  Override the defaults for \f(CW\*(C`bool\*(C'\fR so that \f(CW\*(C`sizeof(bool)==1\*(C'\fR.
! By default \f(CWsizeof(bool)\fR is \f(CW4\fR when compiling for
  Darwin/PowerPC and \f(CW1\fR when compiling for Darwin/x86, so this
  option has no effect on x86.
  .Sp
! \&\fBWarning:\fR The \fB\-mone\-byte\-bool\fR switch causes GCC
  to generate code that is not binary compatible with code generated
  without that switch.  Using this switch may require recompiling all
  other modules in a program, including system libraries.  Use this
! switch to conform to a non\-default data model.
! .IP \fB\-mfix\-and\-continue\fR 4
  .IX Item "-mfix-and-continue"
  .PD 0
! .IP \fB\-ffix\-and\-continue\fR 4
  .IX Item "-ffix-and-continue"
! .IP \fB\-findirect\-data\fR 4
  .IX Item "-findirect-data"
  .PD
  Generate code suitable for fast turnaround development, such as to
! allow GDB to dynamically load \fI.o\fR files into already\-running
  programs.  \fB\-findirect\-data\fR and \fB\-ffix\-and\-continue\fR
  are provided for backwards compatibility.
! .IP \fB\-all_load\fR 4
  .IX Item "-all_load"
  Loads all members of static archive libraries.
! See man \fBld\fR\|(1) for more information.
! .IP \fB\-arch_errors_fatal\fR 4
  .IX Item "-arch_errors_fatal"
  Cause the errors having to do with files that have the wrong architecture
  to be fatal.
! .IP \fB\-bind_at_load\fR 4
  .IX Item "-bind_at_load"
  Causes the output file to be marked such that the dynamic linker will
  bind all undefined references when the file is loaded or launched.
! .IP \fB\-bundle\fR 4
  .IX Item "-bundle"
! Produce a Mach\-o bundle format file.
! See man \fBld\fR\|(1) for more information.
  .IP "\fB\-bundle_loader\fR \fIexecutable\fR" 4
  .IX Item "-bundle_loader executable"
  This option specifies the \fIexecutable\fR that will load the build
! output file being linked.  See man \fBld\fR\|(1) for more information.
! .IP \fB\-dynamiclib\fR 4
  .IX Item "-dynamiclib"
! When passed this option, GCC produces a dynamic library instead of
  an executable when linking, using the Darwin \fIlibtool\fR command.
! .IP \fB\-force_cpusubtype_ALL\fR 4
  .IX Item "-force_cpusubtype_ALL"
! This causes GCC\*(Aqs output file to have the \fBALL\fR subtype, instead of
  one controlled by the \fB\-mcpu\fR or \fB\-march\fR option.
! .IP \fB\-nodefaultrpaths\fR 4
  .IX Item "-nodefaultrpaths"
  Do not add default run paths for the compiler library directories to
  executables, modules or dynamic libraries. On macOS 10.5 and later,
*************** the embedded runpath is added by default
*** 25498,25728 ****
  .IP "\fB\-allowable_client\fR  \fIclient_name\fR" 4
  .IX Item "-allowable_client client_name"
  .PD 0
! .IP "\fB\-client_name\fR" 4
  .IX Item "-client_name"
! .IP "\fB\-compatibility_version\fR" 4
  .IX Item "-compatibility_version"
! .IP "\fB\-current_version\fR" 4
  .IX Item "-current_version"
! .IP "\fB\-dead_strip\fR" 4
  .IX Item "-dead_strip"
! .IP "\fB\-dependency\-file\fR" 4
  .IX Item "-dependency-file"
! .IP "\fB\-dylib_file\fR" 4
  .IX Item "-dylib_file"
! .IP "\fB\-dylinker_install_name\fR" 4
  .IX Item "-dylinker_install_name"
! .IP "\fB\-dynamic\fR" 4
  .IX Item "-dynamic"
! .IP "\fB\-exported_symbols_list\fR" 4
  .IX Item "-exported_symbols_list"
! .IP "\fB\-filelist\fR" 4
  .IX Item "-filelist"
! .IP "\fB\-flat_namespace\fR" 4
  .IX Item "-flat_namespace"
! .IP "\fB\-force_flat_namespace\fR" 4
  .IX Item "-force_flat_namespace"
! .IP "\fB\-headerpad_max_install_names\fR" 4
  .IX Item "-headerpad_max_install_names"
! .IP "\fB\-image_base\fR" 4
  .IX Item "-image_base"
! .IP "\fB\-init\fR" 4
  .IX Item "-init"
! .IP "\fB\-install_name\fR" 4
  .IX Item "-install_name"
! .IP "\fB\-keep_private_externs\fR" 4
  .IX Item "-keep_private_externs"
! .IP "\fB\-multi_module\fR" 4
  .IX Item "-multi_module"
! .IP "\fB\-multiply_defined\fR" 4
  .IX Item "-multiply_defined"
! .IP "\fB\-multiply_defined_unused\fR" 4
  .IX Item "-multiply_defined_unused"
! .IP "\fB\-noall_load\fR" 4
  .IX Item "-noall_load"
! .IP "\fB\-no_dead_strip_inits_and_terms\fR" 4
  .IX Item "-no_dead_strip_inits_and_terms"
! .IP "\fB\-nofixprebinding\fR" 4
  .IX Item "-nofixprebinding"
! .IP "\fB\-nomultidefs\fR" 4
  .IX Item "-nomultidefs"
! .IP "\fB\-noprebind\fR" 4
  .IX Item "-noprebind"
! .IP "\fB\-noseglinkedit\fR" 4
  .IX Item "-noseglinkedit"
! .IP "\fB\-pagezero_size\fR" 4
  .IX Item "-pagezero_size"
! .IP "\fB\-prebind\fR" 4
  .IX Item "-prebind"
! .IP "\fB\-prebind_all_twolevel_modules\fR" 4
  .IX Item "-prebind_all_twolevel_modules"
! .IP "\fB\-private_bundle\fR" 4
  .IX Item "-private_bundle"
! .IP "\fB\-read_only_relocs\fR" 4
  .IX Item "-read_only_relocs"
! .IP "\fB\-sectalign\fR" 4
  .IX Item "-sectalign"
! .IP "\fB\-sectobjectsymbols\fR" 4
  .IX Item "-sectobjectsymbols"
! .IP "\fB\-whyload\fR" 4
  .IX Item "-whyload"
! .IP "\fB\-seg1addr\fR" 4
  .IX Item "-seg1addr"
! .IP "\fB\-sectcreate\fR" 4
  .IX Item "-sectcreate"
! .IP "\fB\-sectobjectsymbols\fR" 4
  .IX Item "-sectobjectsymbols"
! .IP "\fB\-sectorder\fR" 4
  .IX Item "-sectorder"
! .IP "\fB\-segaddr\fR" 4
  .IX Item "-segaddr"
! .IP "\fB\-segs_read_only_addr\fR" 4
  .IX Item "-segs_read_only_addr"
! .IP "\fB\-segs_read_write_addr\fR" 4
  .IX Item "-segs_read_write_addr"
! .IP "\fB\-seg_addr_table\fR" 4
  .IX Item "-seg_addr_table"
! .IP "\fB\-seg_addr_table_filename\fR" 4
  .IX Item "-seg_addr_table_filename"
! .IP "\fB\-seglinkedit\fR" 4
  .IX Item "-seglinkedit"
! .IP "\fB\-segprot\fR" 4
  .IX Item "-segprot"
! .IP "\fB\-segs_read_only_addr\fR" 4
  .IX Item "-segs_read_only_addr"
! .IP "\fB\-segs_read_write_addr\fR" 4
  .IX Item "-segs_read_write_addr"
! .IP "\fB\-single_module\fR" 4
  .IX Item "-single_module"
! .IP "\fB\-static\fR" 4
  .IX Item "-static"
! .IP "\fB\-sub_library\fR" 4
  .IX Item "-sub_library"
! .IP "\fB\-sub_umbrella\fR" 4
  .IX Item "-sub_umbrella"
! .IP "\fB\-twolevel_namespace\fR" 4
  .IX Item "-twolevel_namespace"
! .IP "\fB\-umbrella\fR" 4
  .IX Item "-umbrella"
! .IP "\fB\-undefined\fR" 4
  .IX Item "-undefined"
! .IP "\fB\-unexported_symbols_list\fR" 4
  .IX Item "-unexported_symbols_list"
! .IP "\fB\-weak_reference_mismatches\fR" 4
  .IX Item "-weak_reference_mismatches"
! .IP "\fB\-whatsloaded\fR" 4
  .IX Item "-whatsloaded"
  .PD
  These options are passed to the Darwin linker.  The Darwin linker man page
  describes them in detail.
  .PP
! \fI\s-1DEC\s0 Alpha Options\fR
  .IX Subsection "DEC Alpha Options"
  .PP
! These \fB\-m\fR options are defined for the \s-1DEC\s0 Alpha implementations:
! .IP "\fB\-mno\-soft\-float\fR" 4
  .IX Item "-mno-soft-float"
  .PD 0
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  .PD
! Use (do not use) the hardware floating-point instructions for
! floating-point operations.  When \fB\-msoft\-float\fR is specified,
! functions in \fIlibgcc.a\fR are used to perform floating-point
  operations.  Unless they are replaced by routines that emulate the
! floating-point operations, or compiled in such a way as to call such
! emulations routines, these routines issue floating-point
! operations.   If you are compiling for an Alpha without floating-point
  operations, you must ensure that the library is built so as not to call
  them.
  .Sp
! Note that Alpha implementations without floating-point operations are
! required to have floating-point registers.
! .IP "\fB\-mfp\-reg\fR" 4
  .IX Item "-mfp-reg"
  .PD 0
! .IP "\fB\-mno\-fp\-regs\fR" 4
  .IX Item "-mno-fp-regs"
  .PD
! Generate code that uses (does not use) the floating-point register set.
! \&\fB\-mno\-fp\-regs\fR implies \fB\-msoft\-float\fR.  If the floating-point
! register set is not used, floating-point operands are passed in integer
! registers as if they were integers and floating-point results are passed
! in \f(CW$0\fR instead of \f(CW$f0\fR.  This is a non-standard calling sequence,
! so any function with a floating-point argument or return value called by code
  compiled with \fB\-mno\-fp\-regs\fR must also be compiled with that
  option.
  .Sp
  A typical use of this option is building a kernel that does not use,
! and hence need not save and restore, any floating-point registers.
! .IP "\fB\-mieee\fR" 4
  .IX Item "-mieee"
! The Alpha architecture implements floating-point hardware optimized for
! maximum performance.  It is mostly compliant with the \s-1IEEE\s0 floating-point
  standard.  However, for full compliance, software assistance is
! required.  This option generates code fully IEEE-compliant code
! \&\fIexcept\fR that the \fIinexact-flag\fR is not maintained (see below).
  If this option is turned on, the preprocessor macro \f(CW\*(C`_IEEE_FP\*(C'\fR is
  defined during compilation.  The resulting code is less efficient but is
! able to correctly support denormalized numbers and exceptional \s-1IEEE\s0
! values such as not-a-number and plus/minus infinity.  Other Alpha
  compilers call this option \fB\-ieee_with_no_inexact\fR.
! .IP "\fB\-mieee\-with\-inexact\fR" 4
  .IX Item "-mieee-with-inexact"
  This is like \fB\-mieee\fR except the generated code also maintains
! the \s-1IEEE\s0 \fIinexact-flag\fR.  Turning on this option causes the
! generated code to implement fully-compliant \s-1IEEE\s0 math.  In addition to
  \&\f(CW\*(C`_IEEE_FP\*(C'\fR, \f(CW\*(C`_IEEE_FP_EXACT\*(C'\fR is defined as a preprocessor
  macro.  On some Alpha implementations the resulting code may execute
  significantly slower than the code generated by default.  Since there is
! very little code that depends on the \fIinexact-flag\fR, you should
  normally not specify this option.  Other Alpha compilers call this
  option \fB\-ieee_with_inexact\fR.
! .IP "\fB\-mfp\-trap\-mode=\fR\fItrap-mode\fR" 4
  .IX Item "-mfp-trap-mode=trap-mode"
! This option controls what floating-point related traps are enabled.
! Other Alpha compilers call this option \fB\-fptm\fR \fItrap-mode\fR.
  The trap mode can be set to one of four values:
  .RS 4
! .IP "\fBn\fR" 4
  .IX Item "n"
  This is the default (normal) setting.  The only traps that are enabled
  are the ones that cannot be disabled in software (e.g., division by zero
  trap).
! .IP "\fBu\fR" 4
  .IX Item "u"
  In addition to the traps enabled by \fBn\fR, underflow traps are enabled
  as well.
! .IP "\fBsu\fR" 4
  .IX Item "su"
  Like \fBu\fR, but the instructions are marked to be safe for software
  completion (see Alpha architecture manual for details).
! .IP "\fBsui\fR" 4
  .IX Item "sui"
  Like \fBsu\fR, but inexact traps are enabled as well.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mfp\-rounding\-mode=\fR\fIrounding-mode\fR" 4
  .IX Item "-mfp-rounding-mode=rounding-mode"
! Selects the \s-1IEEE\s0 rounding mode.  Other Alpha compilers call this option
! \&\fB\-fprm\fR \fIrounding-mode\fR.  The \fIrounding-mode\fR can be one
  of:
  .RS 4
! .IP "\fBn\fR" 4
  .IX Item "n"
! Normal \s-1IEEE\s0 rounding mode.  Floating-point numbers are rounded towards
  the nearest machine number or towards the even machine number in case
  of a tie.
! .IP "\fBm\fR" 4
  .IX Item "m"
  Round towards minus infinity.
! .IP "\fBc\fR" 4
  .IX Item "c"
! Chopped rounding mode.  Floating-point numbers are rounded towards zero.
! .IP "\fBd\fR" 4
  .IX Item "d"
! Dynamic rounding mode.  A field in the floating-point control register
  (\fIfpcr\fR, see Alpha architecture reference manual) controls the
  rounding mode in effect.  The C library initializes this register for
  rounding towards plus infinity.  Thus, unless your program modifies the
--- 25433,25663 ----
  .IP "\fB\-allowable_client\fR  \fIclient_name\fR" 4
  .IX Item "-allowable_client client_name"
  .PD 0
! .IP \fB\-client_name\fR 4
  .IX Item "-client_name"
! .IP \fB\-compatibility_version\fR 4
  .IX Item "-compatibility_version"
! .IP \fB\-current_version\fR 4
  .IX Item "-current_version"
! .IP \fB\-dead_strip\fR 4
  .IX Item "-dead_strip"
! .IP \fB\-dependency\-file\fR 4
  .IX Item "-dependency-file"
! .IP \fB\-dylib_file\fR 4
  .IX Item "-dylib_file"
! .IP \fB\-dylinker_install_name\fR 4
  .IX Item "-dylinker_install_name"
! .IP \fB\-dynamic\fR 4
  .IX Item "-dynamic"
! .IP \fB\-exported_symbols_list\fR 4
  .IX Item "-exported_symbols_list"
! .IP \fB\-filelist\fR 4
  .IX Item "-filelist"
! .IP \fB\-flat_namespace\fR 4
  .IX Item "-flat_namespace"
! .IP \fB\-force_flat_namespace\fR 4
  .IX Item "-force_flat_namespace"
! .IP \fB\-headerpad_max_install_names\fR 4
  .IX Item "-headerpad_max_install_names"
! .IP \fB\-image_base\fR 4
  .IX Item "-image_base"
! .IP \fB\-init\fR 4
  .IX Item "-init"
! .IP \fB\-install_name\fR 4
  .IX Item "-install_name"
! .IP \fB\-keep_private_externs\fR 4
  .IX Item "-keep_private_externs"
! .IP \fB\-multi_module\fR 4
  .IX Item "-multi_module"
! .IP \fB\-multiply_defined\fR 4
  .IX Item "-multiply_defined"
! .IP \fB\-multiply_defined_unused\fR 4
  .IX Item "-multiply_defined_unused"
! .IP \fB\-noall_load\fR 4
  .IX Item "-noall_load"
! .IP \fB\-no_dead_strip_inits_and_terms\fR 4
  .IX Item "-no_dead_strip_inits_and_terms"
! .IP \fB\-nofixprebinding\fR 4
  .IX Item "-nofixprebinding"
! .IP \fB\-nomultidefs\fR 4
  .IX Item "-nomultidefs"
! .IP \fB\-noprebind\fR 4
  .IX Item "-noprebind"
! .IP \fB\-noseglinkedit\fR 4
  .IX Item "-noseglinkedit"
! .IP \fB\-pagezero_size\fR 4
  .IX Item "-pagezero_size"
! .IP \fB\-prebind\fR 4
  .IX Item "-prebind"
! .IP \fB\-prebind_all_twolevel_modules\fR 4
  .IX Item "-prebind_all_twolevel_modules"
! .IP \fB\-private_bundle\fR 4
  .IX Item "-private_bundle"
! .IP \fB\-read_only_relocs\fR 4
  .IX Item "-read_only_relocs"
! .IP \fB\-sectalign\fR 4
  .IX Item "-sectalign"
! .IP \fB\-sectobjectsymbols\fR 4
  .IX Item "-sectobjectsymbols"
! .IP \fB\-whyload\fR 4
  .IX Item "-whyload"
! .IP \fB\-seg1addr\fR 4
  .IX Item "-seg1addr"
! .IP \fB\-sectcreate\fR 4
  .IX Item "-sectcreate"
! .IP \fB\-sectobjectsymbols\fR 4
  .IX Item "-sectobjectsymbols"
! .IP \fB\-sectorder\fR 4
  .IX Item "-sectorder"
! .IP \fB\-segaddr\fR 4
  .IX Item "-segaddr"
! .IP \fB\-segs_read_only_addr\fR 4
  .IX Item "-segs_read_only_addr"
! .IP \fB\-segs_read_write_addr\fR 4
  .IX Item "-segs_read_write_addr"
! .IP \fB\-seg_addr_table\fR 4
  .IX Item "-seg_addr_table"
! .IP \fB\-seg_addr_table_filename\fR 4
  .IX Item "-seg_addr_table_filename"
! .IP \fB\-seglinkedit\fR 4
  .IX Item "-seglinkedit"
! .IP \fB\-segprot\fR 4
  .IX Item "-segprot"
! .IP \fB\-segs_read_only_addr\fR 4
  .IX Item "-segs_read_only_addr"
! .IP \fB\-segs_read_write_addr\fR 4
  .IX Item "-segs_read_write_addr"
! .IP \fB\-single_module\fR 4
  .IX Item "-single_module"
! .IP \fB\-static\fR 4
  .IX Item "-static"
! .IP \fB\-sub_library\fR 4
  .IX Item "-sub_library"
! .IP \fB\-sub_umbrella\fR 4
  .IX Item "-sub_umbrella"
! .IP \fB\-twolevel_namespace\fR 4
  .IX Item "-twolevel_namespace"
! .IP \fB\-umbrella\fR 4
  .IX Item "-umbrella"
! .IP \fB\-undefined\fR 4
  .IX Item "-undefined"
! .IP \fB\-unexported_symbols_list\fR 4
  .IX Item "-unexported_symbols_list"
! .IP \fB\-weak_reference_mismatches\fR 4
  .IX Item "-weak_reference_mismatches"
! .IP \fB\-whatsloaded\fR 4
  .IX Item "-whatsloaded"
  .PD
  These options are passed to the Darwin linker.  The Darwin linker man page
  describes them in detail.
  .PP
! \fIDEC Alpha Options\fR
  .IX Subsection "DEC Alpha Options"
  .PP
! These \fB\-m\fR options are defined for the DEC Alpha implementations:
! .IP \fB\-mno\-soft\-float\fR 4
  .IX Item "-mno-soft-float"
  .PD 0
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  .PD
! Use (do not use) the hardware floating\-point instructions for
! floating\-point operations.  When \fB\-msoft\-float\fR is specified,
! functions in \fIlibgcc.a\fR are used to perform floating\-point
  operations.  Unless they are replaced by routines that emulate the
! floating\-point operations, or compiled in such a way as to call such
! emulations routines, these routines issue floating\-point
! operations.   If you are compiling for an Alpha without floating\-point
  operations, you must ensure that the library is built so as not to call
  them.
  .Sp
! Note that Alpha implementations without floating\-point operations are
! required to have floating\-point registers.
! .IP \fB\-mfp\-reg\fR 4
  .IX Item "-mfp-reg"
  .PD 0
! .IP \fB\-mno\-fp\-regs\fR 4
  .IX Item "-mno-fp-regs"
  .PD
! Generate code that uses (does not use) the floating\-point register set.
! \&\fB\-mno\-fp\-regs\fR implies \fB\-msoft\-float\fR.  If the floating\-point
! register set is not used, floating\-point operands are passed in integer
! registers as if they were integers and floating\-point results are passed
! in \f(CW$0\fR instead of \f(CW$f0\fR.  This is a non\-standard calling sequence,
! so any function with a floating\-point argument or return value called by code
  compiled with \fB\-mno\-fp\-regs\fR must also be compiled with that
  option.
  .Sp
  A typical use of this option is building a kernel that does not use,
! and hence need not save and restore, any floating\-point registers.
! .IP \fB\-mieee\fR 4
  .IX Item "-mieee"
! The Alpha architecture implements floating\-point hardware optimized for
! maximum performance.  It is mostly compliant with the IEEE floating\-point
  standard.  However, for full compliance, software assistance is
! required.  This option generates code fully IEEE\-compliant code
! \&\fIexcept\fR that the \fIinexact\-flag\fR is not maintained (see below).
  If this option is turned on, the preprocessor macro \f(CW\*(C`_IEEE_FP\*(C'\fR is
  defined during compilation.  The resulting code is less efficient but is
! able to correctly support denormalized numbers and exceptional IEEE
! values such as not\-a\-number and plus/minus infinity.  Other Alpha
  compilers call this option \fB\-ieee_with_no_inexact\fR.
! .IP \fB\-mieee\-with\-inexact\fR 4
  .IX Item "-mieee-with-inexact"
  This is like \fB\-mieee\fR except the generated code also maintains
! the IEEE \fIinexact\-flag\fR.  Turning on this option causes the
! generated code to implement fully\-compliant IEEE math.  In addition to
  \&\f(CW\*(C`_IEEE_FP\*(C'\fR, \f(CW\*(C`_IEEE_FP_EXACT\*(C'\fR is defined as a preprocessor
  macro.  On some Alpha implementations the resulting code may execute
  significantly slower than the code generated by default.  Since there is
! very little code that depends on the \fIinexact\-flag\fR, you should
  normally not specify this option.  Other Alpha compilers call this
  option \fB\-ieee_with_inexact\fR.
! .IP \fB\-mfp\-trap\-mode=\fR\fItrap\-mode\fR 4
  .IX Item "-mfp-trap-mode=trap-mode"
! This option controls what floating\-point related traps are enabled.
! Other Alpha compilers call this option \fB\-fptm\fR \fItrap\-mode\fR.
  The trap mode can be set to one of four values:
  .RS 4
! .IP \fBn\fR 4
  .IX Item "n"
  This is the default (normal) setting.  The only traps that are enabled
  are the ones that cannot be disabled in software (e.g., division by zero
  trap).
! .IP \fBu\fR 4
  .IX Item "u"
  In addition to the traps enabled by \fBn\fR, underflow traps are enabled
  as well.
! .IP \fBsu\fR 4
  .IX Item "su"
  Like \fBu\fR, but the instructions are marked to be safe for software
  completion (see Alpha architecture manual for details).
! .IP \fBsui\fR 4
  .IX Item "sui"
  Like \fBsu\fR, but inexact traps are enabled as well.
  .RE
  .RS 4
  .RE
! .IP \fB\-mfp\-rounding\-mode=\fR\fIrounding\-mode\fR 4
  .IX Item "-mfp-rounding-mode=rounding-mode"
! Selects the IEEE rounding mode.  Other Alpha compilers call this option
! \&\fB\-fprm\fR \fIrounding\-mode\fR.  The \fIrounding\-mode\fR can be one
  of:
  .RS 4
! .IP \fBn\fR 4
  .IX Item "n"
! Normal IEEE rounding mode.  Floating\-point numbers are rounded towards
  the nearest machine number or towards the even machine number in case
  of a tie.
! .IP \fBm\fR 4
  .IX Item "m"
  Round towards minus infinity.
! .IP \fBc\fR 4
  .IX Item "c"
! Chopped rounding mode.  Floating\-point numbers are rounded towards zero.
! .IP \fBd\fR 4
  .IX Item "d"
! Dynamic rounding mode.  A field in the floating\-point control register
  (\fIfpcr\fR, see Alpha architecture reference manual) controls the
  rounding mode in effect.  The C library initializes this register for
  rounding towards plus infinity.  Thus, unless your program modifies the
*************** rounding towards plus infinity.  Thus, u
*** 25730,25854 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-mtrap\-precision=\fR\fItrap-precision\fR" 4
  .IX Item "-mtrap-precision=trap-precision"
! In the Alpha architecture, floating-point traps are imprecise.  This
  means without software assistance it is impossible to recover from a
  floating trap and program execution normally needs to be terminated.
! \&\s-1GCC\s0 can generate code that can assist operating system trap handlers
! in determining the exact location that caused a floating-point trap.
  Depending on the requirements of an application, different levels of
  precisions can be selected:
  .RS 4
! .IP "\fBp\fR" 4
  .IX Item "p"
  Program precision.  This option is the default and means a trap handler
! can only identify which program caused a floating-point exception.
! .IP "\fBf\fR" 4
  .IX Item "f"
  Function precision.  The trap handler can determine the function that
! caused a floating-point exception.
! .IP "\fBi\fR" 4
  .IX Item "i"
  Instruction precision.  The trap handler can determine the exact
! instruction that caused a floating-point exception.
  .RE
  .RS 4
  .Sp
  Other Alpha compilers provide the equivalent options called
  \&\fB\-scope_safe\fR and \fB\-resumption_safe\fR.
  .RE
! .IP "\fB\-mieee\-conformant\fR" 4
  .IX Item "-mieee-conformant"
! This option marks the generated code as \s-1IEEE\s0 conformant.  You must not
  use this option unless you also specify \fB\-mtrap\-precision=i\fR and either
  \&\fB\-mfp\-trap\-mode=su\fR or \fB\-mfp\-trap\-mode=sui\fR.  Its only effect
  is to emit the line \fB.eflag 48\fR in the function prologue of the
  generated assembly file.
! .IP "\fB\-mbuild\-constants\fR" 4
  .IX Item "-mbuild-constants"
! Normally \s-1GCC\s0 examines a 32\- or 64\-bit integer constant to
  see if it can construct it from smaller constants in two or three
  instructions.  If it cannot, it outputs the constant as a literal and
  generates code to load it from the data segment at run time.
  .Sp
! Use this option to require \s-1GCC\s0 to construct \fIall\fR integer constants
  using code, even if it takes more instructions (the maximum is six).
  .Sp
  You typically use this option to build a shared library dynamic
  loader.  Itself a shared library, it must relocate itself in memory
  before it can find the variables and constants in its own data segment.
! .IP "\fB\-mbwx\fR" 4
  .IX Item "-mbwx"
  .PD 0
! .IP "\fB\-mno\-bwx\fR" 4
  .IX Item "-mno-bwx"
! .IP "\fB\-mcix\fR" 4
  .IX Item "-mcix"
! .IP "\fB\-mno\-cix\fR" 4
  .IX Item "-mno-cix"
! .IP "\fB\-mfix\fR" 4
  .IX Item "-mfix"
! .IP "\fB\-mno\-fix\fR" 4
  .IX Item "-mno-fix"
! .IP "\fB\-mmax\fR" 4
  .IX Item "-mmax"
! .IP "\fB\-mno\-max\fR" 4
  .IX Item "-mno-max"
  .PD
! Indicate whether \s-1GCC\s0 should generate code to use the optional \s-1BWX,
! CIX, FIX\s0 and \s-1MAX\s0 instruction sets.  The default is to use the instruction
! sets supported by the \s-1CPU\s0 type specified via \fB\-mcpu=\fR option or that
! of the \s-1CPU\s0 on which \s-1GCC\s0 was built if none is specified.
! .IP "\fB\-msafe\-bwa\fR" 4
  .IX Item "-msafe-bwa"
  .PD 0
! .IP "\fB\-mno\-safe\-bwa\fR" 4
  .IX Item "-mno-safe-bwa"
  .PD
! Indicate whether in the absence of the optional \s-1BWX\s0 instruction set
! \&\s-1GCC\s0 should generate multi-thread and async-signal safe code for byte
  and aligned word memory accesses.
! .IP "\fB\-msafe\-partial\fR" 4
  .IX Item "-msafe-partial"
  .PD 0
! .IP "\fB\-mno\-safe\-partial\fR" 4
  .IX Item "-mno-safe-partial"
  .PD
! Indicate whether \s-1GCC\s0 should generate multi-thread and async-signal
  safe code for partial memory accesses, including piecemeal accesses
  to unaligned data as well as block accesses to leading and trailing
  parts of aggregate types or other objects in memory that do not
  respectively start and end on an aligned 64\-bit data boundary.
! .IP "\fB\-mfloat\-vax\fR" 4
  .IX Item "-mfloat-vax"
  .PD 0
! .IP "\fB\-mfloat\-ieee\fR" 4
  .IX Item "-mfloat-ieee"
  .PD
! Generate code that uses (does not use) \s-1VAX F\s0 and G floating-point
! arithmetic instead of \s-1IEEE\s0 single and double precision.
! .IP "\fB\-mexplicit\-relocs\fR" 4
  .IX Item "-mexplicit-relocs"
  .PD 0
! .IP "\fB\-mno\-explicit\-relocs\fR" 4
  .IX Item "-mno-explicit-relocs"
  .PD
  Older Alpha assemblers provided no way to generate symbol relocations
  except via assembler macros.  Use of these macros does not allow
! optimal instruction scheduling.  \s-1GNU\s0 binutils as of version 2.12
  supports a new syntax that allows the compiler to explicitly mark
  which relocations should apply to which instructions.  This option
! is mostly useful for debugging, as \s-1GCC\s0 detects the capabilities of
  the assembler when it is built and sets the default accordingly.
! .IP "\fB\-msmall\-data\fR" 4
  .IX Item "-msmall-data"
  .PD 0
! .IP "\fB\-mlarge\-data\fR" 4
  .IX Item "-mlarge-data"
  .PD
  When \fB\-mexplicit\-relocs\fR is in effect, static data is
! accessed via \fIgp-relative\fR relocations.  When \fB\-msmall\-data\fR
  is used, objects 8 bytes long or smaller are placed in a \fIsmall data area\fR
  (the \f(CW\*(C`.sdata\*(C'\fR and \f(CW\*(C`.sbss\*(C'\fR sections) and are accessed via
  16\-bit relocations off of the \f(CW$gp\fR register.  This limits the
--- 25665,25789 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-mtrap\-precision=\fR\fItrap\-precision\fR 4
  .IX Item "-mtrap-precision=trap-precision"
! In the Alpha architecture, floating\-point traps are imprecise.  This
  means without software assistance it is impossible to recover from a
  floating trap and program execution normally needs to be terminated.
! GCC can generate code that can assist operating system trap handlers
! in determining the exact location that caused a floating\-point trap.
  Depending on the requirements of an application, different levels of
  precisions can be selected:
  .RS 4
! .IP \fBp\fR 4
  .IX Item "p"
  Program precision.  This option is the default and means a trap handler
! can only identify which program caused a floating\-point exception.
! .IP \fBf\fR 4
  .IX Item "f"
  Function precision.  The trap handler can determine the function that
! caused a floating\-point exception.
! .IP \fBi\fR 4
  .IX Item "i"
  Instruction precision.  The trap handler can determine the exact
! instruction that caused a floating\-point exception.
  .RE
  .RS 4
  .Sp
  Other Alpha compilers provide the equivalent options called
  \&\fB\-scope_safe\fR and \fB\-resumption_safe\fR.
  .RE
! .IP \fB\-mieee\-conformant\fR 4
  .IX Item "-mieee-conformant"
! This option marks the generated code as IEEE conformant.  You must not
  use this option unless you also specify \fB\-mtrap\-precision=i\fR and either
  \&\fB\-mfp\-trap\-mode=su\fR or \fB\-mfp\-trap\-mode=sui\fR.  Its only effect
  is to emit the line \fB.eflag 48\fR in the function prologue of the
  generated assembly file.
! .IP \fB\-mbuild\-constants\fR 4
  .IX Item "-mbuild-constants"
! Normally GCC examines a 32\- or 64\-bit integer constant to
  see if it can construct it from smaller constants in two or three
  instructions.  If it cannot, it outputs the constant as a literal and
  generates code to load it from the data segment at run time.
  .Sp
! Use this option to require GCC to construct \fIall\fR integer constants
  using code, even if it takes more instructions (the maximum is six).
  .Sp
  You typically use this option to build a shared library dynamic
  loader.  Itself a shared library, it must relocate itself in memory
  before it can find the variables and constants in its own data segment.
! .IP \fB\-mbwx\fR 4
  .IX Item "-mbwx"
  .PD 0
! .IP \fB\-mno\-bwx\fR 4
  .IX Item "-mno-bwx"
! .IP \fB\-mcix\fR 4
  .IX Item "-mcix"
! .IP \fB\-mno\-cix\fR 4
  .IX Item "-mno-cix"
! .IP \fB\-mfix\fR 4
  .IX Item "-mfix"
! .IP \fB\-mno\-fix\fR 4
  .IX Item "-mno-fix"
! .IP \fB\-mmax\fR 4
  .IX Item "-mmax"
! .IP \fB\-mno\-max\fR 4
  .IX Item "-mno-max"
  .PD
! Indicate whether GCC should generate code to use the optional BWX,
! CIX, FIX and MAX instruction sets.  The default is to use the instruction
! sets supported by the CPU type specified via \fB\-mcpu=\fR option or that
! of the CPU on which GCC was built if none is specified.
! .IP \fB\-msafe\-bwa\fR 4
  .IX Item "-msafe-bwa"
  .PD 0
! .IP \fB\-mno\-safe\-bwa\fR 4
  .IX Item "-mno-safe-bwa"
  .PD
! Indicate whether in the absence of the optional BWX instruction set
! GCC should generate multi\-thread and async\-signal safe code for byte
  and aligned word memory accesses.
! .IP \fB\-msafe\-partial\fR 4
  .IX Item "-msafe-partial"
  .PD 0
! .IP \fB\-mno\-safe\-partial\fR 4
  .IX Item "-mno-safe-partial"
  .PD
! Indicate whether GCC should generate multi\-thread and async\-signal
  safe code for partial memory accesses, including piecemeal accesses
  to unaligned data as well as block accesses to leading and trailing
  parts of aggregate types or other objects in memory that do not
  respectively start and end on an aligned 64\-bit data boundary.
! .IP \fB\-mfloat\-vax\fR 4
  .IX Item "-mfloat-vax"
  .PD 0
! .IP \fB\-mfloat\-ieee\fR 4
  .IX Item "-mfloat-ieee"
  .PD
! Generate code that uses (does not use) VAX F and G floating\-point
! arithmetic instead of IEEE single and double precision.
! .IP \fB\-mexplicit\-relocs\fR 4
  .IX Item "-mexplicit-relocs"
  .PD 0
! .IP \fB\-mno\-explicit\-relocs\fR 4
  .IX Item "-mno-explicit-relocs"
  .PD
  Older Alpha assemblers provided no way to generate symbol relocations
  except via assembler macros.  Use of these macros does not allow
! optimal instruction scheduling.  GNU binutils as of version 2.12
  supports a new syntax that allows the compiler to explicitly mark
  which relocations should apply to which instructions.  This option
! is mostly useful for debugging, as GCC detects the capabilities of
  the assembler when it is built and sets the default accordingly.
! .IP \fB\-msmall\-data\fR 4
  .IX Item "-msmall-data"
  .PD 0
! .IP \fB\-mlarge\-data\fR 4
  .IX Item "-mlarge-data"
  .PD
  When \fB\-mexplicit\-relocs\fR is in effect, static data is
! accessed via \fIgp\-relative\fR relocations.  When \fB\-msmall\-data\fR
  is used, objects 8 bytes long or smaller are placed in a \fIsmall data area\fR
  (the \f(CW\*(C`.sdata\*(C'\fR and \f(CW\*(C`.sbss\*(C'\fR sections) and are accessed via
  16\-bit relocations off of the \f(CW$gp\fR register.  This limits the
*************** directly accessed via a single instructi
*** 25858,25871 ****
  The default is \fB\-mlarge\-data\fR.  With this option the data area
  is limited to just below 2GB.  Programs that require more than 2GB of
  data must use \f(CW\*(C`malloc\*(C'\fR or \f(CW\*(C`mmap\*(C'\fR to allocate the data in the
! heap instead of in the program's data segment.
  .Sp
  When generating code for shared libraries, \fB\-fpic\fR implies
  \&\fB\-msmall\-data\fR and \fB\-fPIC\fR implies \fB\-mlarge\-data\fR.
! .IP "\fB\-msmall\-text\fR" 4
  .IX Item "-msmall-text"
  .PD 0
! .IP "\fB\-mlarge\-text\fR" 4
  .IX Item "-mlarge-text"
  .PD
  When \fB\-msmall\-text\fR is used, the compiler assumes that the
--- 25793,25806 ----
  The default is \fB\-mlarge\-data\fR.  With this option the data area
  is limited to just below 2GB.  Programs that require more than 2GB of
  data must use \f(CW\*(C`malloc\*(C'\fR or \f(CW\*(C`mmap\*(C'\fR to allocate the data in the
! heap instead of in the program\*(Aqs data segment.
  .Sp
  When generating code for shared libraries, \fB\-fpic\fR implies
  \&\fB\-msmall\-data\fR and \fB\-fPIC\fR implies \fB\-mlarge\-data\fR.
! .IP \fB\-msmall\-text\fR 4
  .IX Item "-msmall-text"
  .PD 0
! .IP \fB\-mlarge\-text\fR 4
  .IX Item "-mlarge-text"
  .PD
  When \fB\-msmall\-text\fR is used, the compiler assumes that the
*************** same \f(CW$gp\fR value, and thus reduce
*** 25876,25957 ****
  required for a function call from 4 to 1.
  .Sp
  The default is \fB\-mlarge\-text\fR.
! .IP "\fB\-mcpu=\fR\fIcpu_type\fR" 4
  .IX Item "-mcpu=cpu_type"
  Set the instruction set and instruction scheduling parameters for
! machine type \fIcpu_type\fR.  You can specify either the \fB\s-1EV\s0\fR
! style name or the corresponding chip number.  \s-1GCC\s0 supports scheduling
! parameters for the \s-1EV4, EV5\s0 and \s-1EV6\s0 family of processors and
  chooses the default values for the instruction set from the processor
! you specify.  If you do not specify a processor type, \s-1GCC\s0 defaults
  to the processor on which the compiler was built.
  .Sp
  Supported values for \fIcpu_type\fR are
  .RS 4
! .IP "\fBev4\fR" 4
  .IX Item "ev4"
  .PD 0
! .IP "\fBev45\fR" 4
  .IX Item "ev45"
! .IP "\fB21064\fR" 4
  .IX Item "21064"
  .PD
! Schedules as an \s-1EV4\s0 and has no instruction set extensions.
! .IP "\fBev5\fR" 4
  .IX Item "ev5"
  .PD 0
! .IP "\fB21164\fR" 4
  .IX Item "21164"
  .PD
! Schedules as an \s-1EV5\s0 and has no instruction set extensions.
! .IP "\fBev56\fR" 4
  .IX Item "ev56"
  .PD 0
! .IP "\fB21164a\fR" 4
  .IX Item "21164a"
  .PD
! Schedules as an \s-1EV5\s0 and supports the \s-1BWX\s0 extension.
! .IP "\fBpca56\fR" 4
  .IX Item "pca56"
  .PD 0
! .IP "\fB21164pc\fR" 4
  .IX Item "21164pc"
! .IP "\fB21164PC\fR" 4
  .IX Item "21164PC"
  .PD
! Schedules as an \s-1EV5\s0 and supports the \s-1BWX\s0 and \s-1MAX\s0 extensions.
! .IP "\fBev6\fR" 4
  .IX Item "ev6"
  .PD 0
! .IP "\fB21264\fR" 4
  .IX Item "21264"
  .PD
! Schedules as an \s-1EV6\s0 and supports the \s-1BWX, FIX,\s0 and \s-1MAX\s0 extensions.
! .IP "\fBev67\fR" 4
  .IX Item "ev67"
  .PD 0
! .IP "\fB21264a\fR" 4
  .IX Item "21264a"
  .PD
! Schedules as an \s-1EV6\s0 and supports the \s-1BWX, CIX, FIX,\s0 and \s-1MAX\s0 extensions.
  .RE
  .RS 4
  .Sp
  Native toolchains also support the value \fBnative\fR,
  which selects the best architecture option for the host processor.
! \&\fB\-mcpu=native\fR has no effect if \s-1GCC\s0 does not recognize
  the processor.
  .RE
! .IP "\fB\-mtune=\fR\fIcpu_type\fR" 4
  .IX Item "-mtune=cpu_type"
  Set only the instruction scheduling parameters for machine type
  \&\fIcpu_type\fR.  The instruction set is not changed.
  .Sp
  Native toolchains also support the value \fBnative\fR,
  which selects the best architecture option for the host processor.
! \&\fB\-mtune=native\fR has no effect if \s-1GCC\s0 does not recognize
  the processor.
! .IP "\fB\-mmemory\-latency=\fR\fItime\fR" 4
  .IX Item "-mmemory-latency=time"
  Sets the latency the scheduler should assume for typical memory
  references as seen by the application.  This number is highly
--- 25811,25892 ----
  required for a function call from 4 to 1.
  .Sp
  The default is \fB\-mlarge\-text\fR.
! .IP \fB\-mcpu=\fR\fIcpu_type\fR 4
  .IX Item "-mcpu=cpu_type"
  Set the instruction set and instruction scheduling parameters for
! machine type \fIcpu_type\fR.  You can specify either the \fBEV\fR
! style name or the corresponding chip number.  GCC supports scheduling
! parameters for the EV4, EV5 and EV6 family of processors and
  chooses the default values for the instruction set from the processor
! you specify.  If you do not specify a processor type, GCC defaults
  to the processor on which the compiler was built.
  .Sp
  Supported values for \fIcpu_type\fR are
  .RS 4
! .IP \fBev4\fR 4
  .IX Item "ev4"
  .PD 0
! .IP \fBev45\fR 4
  .IX Item "ev45"
! .IP \fB21064\fR 4
  .IX Item "21064"
  .PD
! Schedules as an EV4 and has no instruction set extensions.
! .IP \fBev5\fR 4
  .IX Item "ev5"
  .PD 0
! .IP \fB21164\fR 4
  .IX Item "21164"
  .PD
! Schedules as an EV5 and has no instruction set extensions.
! .IP \fBev56\fR 4
  .IX Item "ev56"
  .PD 0
! .IP \fB21164a\fR 4
  .IX Item "21164a"
  .PD
! Schedules as an EV5 and supports the BWX extension.
! .IP \fBpca56\fR 4
  .IX Item "pca56"
  .PD 0
! .IP \fB21164pc\fR 4
  .IX Item "21164pc"
! .IP \fB21164PC\fR 4
  .IX Item "21164PC"
  .PD
! Schedules as an EV5 and supports the BWX and MAX extensions.
! .IP \fBev6\fR 4
  .IX Item "ev6"
  .PD 0
! .IP \fB21264\fR 4
  .IX Item "21264"
  .PD
! Schedules as an EV6 and supports the BWX, FIX, and MAX extensions.
! .IP \fBev67\fR 4
  .IX Item "ev67"
  .PD 0
! .IP \fB21264a\fR 4
  .IX Item "21264a"
  .PD
! Schedules as an EV6 and supports the BWX, CIX, FIX, and MAX extensions.
  .RE
  .RS 4
  .Sp
  Native toolchains also support the value \fBnative\fR,
  which selects the best architecture option for the host processor.
! \&\fB\-mcpu=native\fR has no effect if GCC does not recognize
  the processor.
  .RE
! .IP \fB\-mtune=\fR\fIcpu_type\fR 4
  .IX Item "-mtune=cpu_type"
  Set only the instruction scheduling parameters for machine type
  \&\fIcpu_type\fR.  The instruction set is not changed.
  .Sp
  Native toolchains also support the value \fBnative\fR,
  which selects the best architecture option for the host processor.
! \&\fB\-mtune=native\fR has no effect if GCC does not recognize
  the processor.
! .IP \fB\-mmemory\-latency=\fR\fItime\fR 4
  .IX Item "-mmemory-latency=time"
  Sets the latency the scheduler should assume for typical memory
  references as seen by the application.  This number is highly
*************** and the size of the external cache on th
*** 25960,26085 ****
  .Sp
  Valid options for \fItime\fR are
  .RS 4
! .IP "\fInumber\fR" 4
  .IX Item "number"
  A decimal number representing clock cycles.
! .IP "\fBL1\fR" 4
  .IX Item "L1"
  .PD 0
! .IP "\fBL2\fR" 4
  .IX Item "L2"
! .IP "\fBL3\fR" 4
  .IX Item "L3"
! .IP "\fBmain\fR" 4
  .IX Item "main"
  .PD
  The compiler contains estimates of the number of clock cycles for
! \&\*(L"typical\*(R" \s-1EV4 & EV5\s0 hardware for the Level 1, 2 & 3 caches
  (also called Dcache, Scache, and Bcache), as well as to main memory.
! Note that L3 is only valid for \s-1EV5.\s0
  .RE
  .RS 4
  .RE
  .PP
  \fIeBPF Options\fR
  .IX Subsection "eBPF Options"
! .IP "\fB\-mframe\-limit=\fR\fIbytes\fR" 4
  .IX Item "-mframe-limit=bytes"
  This specifies the hard limit for frame sizes, in bytes.  Currently,
  the value that can be specified should be less than or equal to
  \&\fB32767\fR.  Defaults to whatever limit is imposed by the version of
  the Linux kernel targeted.
! .IP "\fB\-mbig\-endian\fR" 4
  .IX Item "-mbig-endian"
! Generate code for a big-endian target.
! .IP "\fB\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
! Generate code for a little-endian target.  This is the default.
! .IP "\fB\-mjmpext\fR" 4
  .IX Item "-mjmpext"
  .PD 0
! .IP "\fB\-mno\-jmpext\fR" 4
  .IX Item "-mno-jmpext"
  .PD
! Enable or disable generation of extra conditional-branch instructions.
! Enabled for \s-1CPU\s0 v2 and above.
! .IP "\fB\-mjmp32\fR" 4
  .IX Item "-mjmp32"
  .PD 0
! .IP "\fB\-mno\-jmp32\fR" 4
  .IX Item "-mno-jmp32"
  .PD
  Enable or disable generation of 32\-bit jump instructions.
! Enabled for \s-1CPU\s0 v3 and above.
! .IP "\fB\-malu32\fR" 4
  .IX Item "-malu32"
  .PD 0
! .IP "\fB\-mno\-alu32\fR" 4
  .IX Item "-mno-alu32"
  .PD
! Enable or disable generation of 32\-bit \s-1ALU\s0 instructions.
! Enabled for \s-1CPU\s0 v3 and above.
! .IP "\fB\-mv3\-atomics\fR" 4
  .IX Item "-mv3-atomics"
  .PD 0
! .IP "\fB\-mno\-v3\-atomics\fR" 4
  .IX Item "-mno-v3-atomics"
  .PD
  Enable or disable instructions for general atomic operations introduced
! in \s-1CPU\s0 v3.  Enabled for \s-1CPU\s0 v3 and above.
! .IP "\fB\-mbswap\fR" 4
  .IX Item "-mbswap"
  .PD 0
! .IP "\fB\-mno\-bswap\fR" 4
  .IX Item "-mno-bswap"
  .PD
! Enable or disable byte swap instructions.  Enabled for \s-1CPU\s0 v4 and above.
! .IP "\fB\-msdiv\fR" 4
  .IX Item "-msdiv"
  .PD 0
! .IP "\fB\-mno\-sdiv\fR" 4
  .IX Item "-mno-sdiv"
  .PD
  Enable or disable signed division and modulus instructions.  Enabled for
! \&\s-1CPU\s0 v4 and above.
! .IP "\fB\-msmov\fR" 4
  .IX Item "-msmov"
  .PD 0
! .IP "\fB\-mno\-smov\fR" 4
  .IX Item "-mno-smov"
  .PD
! Enable or disable sign-extending move and memory load instructions.
! Enabled for \s-1CPU\s0 v4 and above.
! .IP "\fB\-mcpu=\fR\fIversion\fR" 4
  .IX Item "-mcpu=version"
! This specifies which version of the eBPF \s-1ISA\s0 to target. Newer versions
  may not be supported by all kernels. The default is \fBv4\fR.
  .Sp
  Supported values for \fIversion\fR are:
  .RS 4
! .IP "\fBv1\fR" 4
  .IX Item "v1"
! The first stable eBPF \s-1ISA\s0 with no special features or extensions.
! .IP "\fBv2\fR" 4
  .IX Item "v2"
  Supports the jump extensions, as in \fB\-mjmpext\fR.
! .IP "\fBv3\fR" 4
  .IX Item "v3"
  All features of v2, plus:
  .RS 4
  .IP "\-<32\-bit jump operations, as in \fB\-mjmp32\fR>" 4
  .IX Item "-<32-bit jump operations, as in -mjmp32>"
  .PD 0
! .IP "\-<32\-bit \s-1ALU\s0 operations, as in \fB\-malu32\fR>" 4
  .IX Item "-<32-bit ALU operations, as in -malu32>"
  .IP "\-<general atomic operations, as in \fB\-mv3\-atomics\fR>" 4
  .IX Item "-<general atomic operations, as in -mv3-atomics>"
  .RE
  .RS 4
  .RE
! .IP "\fBv4\fR" 4
  .IX Item "v4"
- .PD
  All features of v3, plus:
  .RS 4
  .IP "\-<Byte swap instructions, as in \fB\-mbswap\fR>" 4
--- 25895,26020 ----
  .Sp
  Valid options for \fItime\fR are
  .RS 4
! .IP \fInumber\fR 4
  .IX Item "number"
  A decimal number representing clock cycles.
! .IP \fBL1\fR 4
  .IX Item "L1"
  .PD 0
! .IP \fBL2\fR 4
  .IX Item "L2"
! .IP \fBL3\fR 4
  .IX Item "L3"
! .IP \fBmain\fR 4
  .IX Item "main"
  .PD
  The compiler contains estimates of the number of clock cycles for
! "typical" EV4 & EV5 hardware for the Level 1, 2 & 3 caches
  (also called Dcache, Scache, and Bcache), as well as to main memory.
! Note that L3 is only valid for EV5.
  .RE
  .RS 4
  .RE
  .PP
  \fIeBPF Options\fR
  .IX Subsection "eBPF Options"
! .IP \fB\-mframe\-limit=\fR\fIbytes\fR 4
  .IX Item "-mframe-limit=bytes"
  This specifies the hard limit for frame sizes, in bytes.  Currently,
  the value that can be specified should be less than or equal to
  \&\fB32767\fR.  Defaults to whatever limit is imposed by the version of
  the Linux kernel targeted.
! .IP \fB\-mbig\-endian\fR 4
  .IX Item "-mbig-endian"
! Generate code for a big\-endian target.
! .IP \fB\-mlittle\-endian\fR 4
  .IX Item "-mlittle-endian"
! Generate code for a little\-endian target.  This is the default.
! .IP \fB\-mjmpext\fR 4
  .IX Item "-mjmpext"
  .PD 0
! .IP \fB\-mno\-jmpext\fR 4
  .IX Item "-mno-jmpext"
  .PD
! Enable or disable generation of extra conditional\-branch instructions.
! Enabled for CPU v2 and above.
! .IP \fB\-mjmp32\fR 4
  .IX Item "-mjmp32"
  .PD 0
! .IP \fB\-mno\-jmp32\fR 4
  .IX Item "-mno-jmp32"
  .PD
  Enable or disable generation of 32\-bit jump instructions.
! Enabled for CPU v3 and above.
! .IP \fB\-malu32\fR 4
  .IX Item "-malu32"
  .PD 0
! .IP \fB\-mno\-alu32\fR 4
  .IX Item "-mno-alu32"
  .PD
! Enable or disable generation of 32\-bit ALU instructions.
! Enabled for CPU v3 and above.
! .IP \fB\-mv3\-atomics\fR 4
  .IX Item "-mv3-atomics"
  .PD 0
! .IP \fB\-mno\-v3\-atomics\fR 4
  .IX Item "-mno-v3-atomics"
  .PD
  Enable or disable instructions for general atomic operations introduced
! in CPU v3.  Enabled for CPU v3 and above.
! .IP \fB\-mbswap\fR 4
  .IX Item "-mbswap"
  .PD 0
! .IP \fB\-mno\-bswap\fR 4
  .IX Item "-mno-bswap"
  .PD
! Enable or disable byte swap instructions.  Enabled for CPU v4 and above.
! .IP \fB\-msdiv\fR 4
  .IX Item "-msdiv"
  .PD 0
! .IP \fB\-mno\-sdiv\fR 4
  .IX Item "-mno-sdiv"
  .PD
  Enable or disable signed division and modulus instructions.  Enabled for
! CPU v4 and above.
! .IP \fB\-msmov\fR 4
  .IX Item "-msmov"
  .PD 0
! .IP \fB\-mno\-smov\fR 4
  .IX Item "-mno-smov"
  .PD
! Enable or disable sign\-extending move and memory load instructions.
! Enabled for CPU v4 and above.
! .IP \fB\-mcpu=\fR\fIversion\fR 4
  .IX Item "-mcpu=version"
! This specifies which version of the eBPF ISA to target. Newer versions
  may not be supported by all kernels. The default is \fBv4\fR.
  .Sp
  Supported values for \fIversion\fR are:
  .RS 4
! .IP \fBv1\fR 4
  .IX Item "v1"
! The first stable eBPF ISA with no special features or extensions.
! .IP \fBv2\fR 4
  .IX Item "v2"
  Supports the jump extensions, as in \fB\-mjmpext\fR.
! .IP \fBv3\fR 4
  .IX Item "v3"
  All features of v2, plus:
  .RS 4
  .IP "\-<32\-bit jump operations, as in \fB\-mjmp32\fR>" 4
  .IX Item "-<32-bit jump operations, as in -mjmp32>"
  .PD 0
! .IP "\-<32\-bit ALU operations, as in \fB\-malu32\fR>" 4
  .IX Item "-<32-bit ALU operations, as in -malu32>"
  .IP "\-<general atomic operations, as in \fB\-mv3\-atomics\fR>" 4
  .IX Item "-<general atomic operations, as in -mv3-atomics>"
+ .PD
  .RE
  .RS 4
  .RE
! .IP \fBv4\fR 4
  .IX Item "v4"
  All features of v3, plus:
  .RS 4
  .IP "\-<Byte swap instructions, as in \fB\-mbswap\fR>" 4
*************** All features of v3, plus:
*** 26089,26397 ****
  .IX Item "-<Signed division and modulus instructions, as in -msdiv>"
  .IP "\-<Sign\-extending move and memory load instructions, as in \fB\-msmov\fR>" 4
  .IX Item "-<Sign-extending move and memory load instructions, as in -msmov>"
  .RE
  .RS 4
  .RE
  .RE
  .RS 4
  .RE
! .IP "\fB\-mco\-re\fR" 4
  .IX Item "-mco-re"
! .PD
! Enable \s-1BPF\s0 Compile Once \- Run Everywhere (CO-RE) support. Requires and
  is implied by \fB\-gbtf\fR.
! .IP "\fB\-mno\-co\-re\fR" 4
  .IX Item "-mno-co-re"
! Disable \s-1BPF\s0 Compile Once \- Run Everywhere (CO-RE) support. \s-1BPF\s0 CO-RE
! support is enabled by default when generating \s-1BTF\s0 debug information for
! the \s-1BPF\s0 target.
! .IP "\fB\-mxbpf\fR" 4
  .IX Item "-mxbpf"
! Generate code for an expanded version of \s-1BPF,\s0 which relaxes some of
! the restrictions imposed by the \s-1BPF\s0 architecture:
  .RS 4
! .IP "\-<Save and restore callee-saved registers at function entry and>" 4
  .IX Item "-<Save and restore callee-saved registers at function entry and>"
  exit, respectively.
  .RE
  .RS 4
  .RE
! .IP "\fB\-masm=\fR\fIdialect\fR" 4
  .IX Item "-masm=dialect"
  Outputs assembly instructions using eBPF selected \fIdialect\fR.  The default
  is \fBpseudoc\fR.
  .Sp
  Supported values for \fIdialect\fR are:
  .RS 4
! .IP "\fBnormal\fR" 4
  .IX Item "normal"
  Outputs normal assembly dialect.
! .IP "\fBpseudoc\fR" 4
  .IX Item "pseudoc"
! Outputs pseudo-c assembly dialect.
  .RE
  .RS 4
  .RE
! .IP "\fB\-minline\-memops\-threshold=\fR\fIbytes\fR" 4
  .IX Item "-minline-memops-threshold=bytes"
  Specifies a size threshold in bytes at or below which memmove, memcpy
  and memset shall always be expanded inline.  Operations dealing with
  sizes larger than this threshold would have to be implemented using
! a library call instead of being expanded inline, but since \s-1BPF\s0 doesn't
! allow libcalls, exceeding this threshold results in a compile-time
  error.  The default is \fB1024\fR bytes.
  .PP
! \fI\s-1FR30\s0 Options\fR
  .IX Subsection "FR30 Options"
  .PP
! These options are defined specifically for the \s-1FR30\s0 port.
! .IP "\fB\-msmall\-model\fR" 4
  .IX Item "-msmall-model"
  Use the small address space model.  This can produce smaller code, but
  it does assume that all symbolic values and addresses fit into a
  20\-bit range.
! .IP "\fB\-mno\-lsim\fR" 4
  .IX Item "-mno-lsim"
  Assume that runtime support has been provided and so there is no need
  to include the simulator library (\fIlibsim.a\fR) on the linker
  command line.
  .PP
! \fI\s-1FT32\s0 Options\fR
  .IX Subsection "FT32 Options"
  .PP
! These options are defined specifically for the \s-1FT32\s0 port.
! .IP "\fB\-msim\fR" 4
  .IX Item "-msim"
  Specifies that the program will be run on the simulator.  This causes
  an alternate runtime startup and library to be linked.
  You must not use this option when generating programs that will run on
  real hardware; you must provide your own runtime library for whatever
  I/O functions are needed.
! .IP "\fB\-mlra\fR" 4
  .IX Item "-mlra"
  Does nothing.  Preserved for backward compatibility.
! .IP "\fB\-mnodiv\fR" 4
  .IX Item "-mnodiv"
  Do not use div and mod instructions.
! .IP "\fB\-mft32b\fR" 4
  .IX Item "-mft32b"
! Enable use of the extended instructions of the \s-1FT32B\s0 processor.
! .IP "\fB\-mcompress\fR" 4
  .IX Item "-mcompress"
  Compress all code using the Ft32B code compression scheme.
! .IP "\fB\-mnopm\fR" 4
  .IX Item "-mnopm"
  Do not generate code that reads program memory.
  .PP
! \fI\s-1FRV\s0 Options\fR
  .IX Subsection "FRV Options"
! .IP "\fB\-mgpr\-32\fR" 4
  .IX Item "-mgpr-32"
! Only use the first 32 general-purpose registers.
! .IP "\fB\-mgpr\-64\fR" 4
  .IX Item "-mgpr-64"
! Use all 64 general-purpose registers.
! .IP "\fB\-mfpr\-32\fR" 4
  .IX Item "-mfpr-32"
! Use only the first 32 floating-point registers.
! .IP "\fB\-mfpr\-64\fR" 4
  .IX Item "-mfpr-64"
! Use all 64 floating-point registers.
! .IP "\fB\-mhard\-float\fR" 4
  .IX Item "-mhard-float"
! Use hardware instructions for floating-point operations.
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
! Use library routines for floating-point operations.
! .IP "\fB\-malloc\-cc\fR" 4
  .IX Item "-malloc-cc"
  Dynamically allocate condition code registers.
! .IP "\fB\-mfixed\-cc\fR" 4
  .IX Item "-mfixed-cc"
  Do not try to dynamically allocate condition code registers, only
  use \f(CW\*(C`icc0\*(C'\fR and \f(CW\*(C`fcc0\*(C'\fR.
! .IP "\fB\-mdword\fR" 4
  .IX Item "-mdword"
! Change \s-1ABI\s0 to use double word insns.
! .IP "\fB\-mno\-dword\fR" 4
  .IX Item "-mno-dword"
  Do not use double word instructions.
! .IP "\fB\-mdouble\fR" 4
  .IX Item "-mdouble"
! Use floating-point double instructions.
! .IP "\fB\-mno\-double\fR" 4
  .IX Item "-mno-double"
! Do not use floating-point double instructions.
! .IP "\fB\-mmedia\fR" 4
  .IX Item "-mmedia"
  Use media instructions.
! .IP "\fB\-mno\-media\fR" 4
  .IX Item "-mno-media"
  Do not use media instructions.
! .IP "\fB\-mmuladd\fR" 4
  .IX Item "-mmuladd"
  Use multiply and add/subtract instructions.
! .IP "\fB\-mno\-muladd\fR" 4
  .IX Item "-mno-muladd"
  Do not use multiply and add/subtract instructions.
! .IP "\fB\-mfdpic\fR" 4
  .IX Item "-mfdpic"
! Select the \s-1FDPIC ABI,\s0 which uses function descriptors to represent
  pointers to functions.  Without any PIC/PIE\-related options, it
  implies \fB\-fPIE\fR.  With \fB\-fpic\fR or \fB\-fpie\fR, it
! assumes \s-1GOT\s0 entries and small data are within a 12\-bit range from the
! \&\s-1GOT\s0 base address; with \fB\-fPIC\fR or \fB\-fPIE\fR, \s-1GOT\s0 offsets
  are computed with 32 bits.
! With a \fBbfin-elf\fR target, this option implies \fB\-msim\fR.
! .IP "\fB\-minline\-plt\fR" 4
  .IX Item "-minline-plt"
! Enable inlining of \s-1PLT\s0 entries in function calls to functions that are
  not known to bind locally.  It has no effect without \fB\-mfdpic\fR.
! It's enabled by default if optimizing for speed and compiling for
  shared libraries (i.e., \fB\-fPIC\fR or \fB\-fpic\fR), or when an
  optimization option such as \fB\-O3\fR or above is present in the
  command line.
! .IP "\fB\-mTLS\fR" 4
  .IX Item "-mTLS"
! Assume a large \s-1TLS\s0 segment when generating thread-local code.
! .IP "\fB\-mtls\fR" 4
  .IX Item "-mtls"
! Do not assume a large \s-1TLS\s0 segment when generating thread-local code.
! .IP "\fB\-mgprel\-ro\fR" 4
  .IX Item "-mgprel-ro"
! Enable the use of \f(CW\*(C`GPREL\*(C'\fR relocations in the \s-1FDPIC ABI\s0 for data
! that is known to be in read-only sections.  It's enabled by default,
  except for \fB\-fpic\fR or \fB\-fpie\fR: even though it may help
  make the global offset table smaller, it trades 1 instruction for 4.
  With \fB\-fPIC\fR or \fB\-fPIE\fR, it trades 3 instructions for 4,
  one of which may be shared by multiple symbols, and it avoids the need
! for a \s-1GOT\s0 entry for the referenced symbol, so it's more likely to be a
  win.  If it is not, \fB\-mno\-gprel\-ro\fR can be used to disable it.
! .IP "\fB\-multilib\-library\-pic\fR" 4
  .IX Item "-multilib-library-pic"
! Link with the (library, not \s-1FD\s0) pic libraries.  It's implied by
  \&\fB\-mlibrary\-pic\fR, as well as by \fB\-fPIC\fR and
  \&\fB\-fpic\fR without \fB\-mfdpic\fR.  You should never have to use
  it explicitly.
! .IP "\fB\-mlinked\-fp\fR" 4
  .IX Item "-mlinked-fp"
! Follow the \s-1EABI\s0 requirement of always creating a frame pointer whenever
  a stack frame is allocated.  This option is enabled by default and can
  be disabled with \fB\-mno\-linked\-fp\fR.
! .IP "\fB\-mlong\-calls\fR" 4
  .IX Item "-mlong-calls"
  Use indirect addressing to call functions outside the current
  compilation unit.  This allows the functions to be placed anywhere
  within the 32\-bit address space.
! .IP "\fB\-malign\-labels\fR" 4
  .IX Item "-malign-labels"
  Try to align labels to an 8\-byte boundary by inserting NOPs into the
! previous packet.  This option only has an effect when \s-1VLIW\s0 packing
! is enabled.  It doesn't create new packets; it merely adds NOPs to
  existing ones.
! .IP "\fB\-mlibrary\-pic\fR" 4
  .IX Item "-mlibrary-pic"
! Generate position-independent \s-1EABI\s0 code.
! .IP "\fB\-macc\-4\fR" 4
  .IX Item "-macc-4"
  Use only the first four media accumulator registers.
! .IP "\fB\-macc\-8\fR" 4
  .IX Item "-macc-8"
  Use all eight media accumulator registers.
! .IP "\fB\-mpack\fR" 4
  .IX Item "-mpack"
! Pack \s-1VLIW\s0 instructions.
! .IP "\fB\-mno\-pack\fR" 4
  .IX Item "-mno-pack"
! Do not pack \s-1VLIW\s0 instructions.
! .IP "\fB\-mno\-eflags\fR" 4
  .IX Item "-mno-eflags"
! Do not mark \s-1ABI\s0 switches in e_flags.
! .IP "\fB\-mcond\-move\fR" 4
  .IX Item "-mcond-move"
! Enable the use of conditional-move instructions (default).
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP "\fB\-mno\-cond\-move\fR" 4
  .IX Item "-mno-cond-move"
! Disable the use of conditional-move instructions.
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP "\fB\-mscc\fR" 4
  .IX Item "-mscc"
  Enable the use of conditional set instructions (default).
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP "\fB\-mno\-scc\fR" 4
  .IX Item "-mno-scc"
  Disable the use of conditional set instructions.
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP "\fB\-mcond\-exec\fR" 4
  .IX Item "-mcond-exec"
  Enable the use of conditional execution (default).
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP "\fB\-mno\-cond\-exec\fR" 4
  .IX Item "-mno-cond-exec"
  Disable the use of conditional execution.
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP "\fB\-mvliw\-branch\fR" 4
  .IX Item "-mvliw-branch"
! Run a pass to pack branches into \s-1VLIW\s0 instructions (default).
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP "\fB\-mno\-vliw\-branch\fR" 4
  .IX Item "-mno-vliw-branch"
! Do not run a pass to pack branches into \s-1VLIW\s0 instructions.
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP "\fB\-mmulti\-cond\-exec\fR" 4
  .IX Item "-mmulti-cond-exec"
  Enable optimization of \f(CW\*(C`&&\*(C'\fR and \f(CW\*(C`||\*(C'\fR in conditional execution
  (default).
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP "\fB\-mno\-multi\-cond\-exec\fR" 4
  .IX Item "-mno-multi-cond-exec"
  Disable optimization of \f(CW\*(C`&&\*(C'\fR and \f(CW\*(C`||\*(C'\fR in conditional execution.
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP "\fB\-mnested\-cond\-exec\fR" 4
  .IX Item "-mnested-cond-exec"
  Enable nested conditional execution optimizations (default).
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP "\fB\-mno\-nested\-cond\-exec\fR" 4
  .IX Item "-mno-nested-cond-exec"
  Disable nested conditional execution optimizations.
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP "\fB\-moptimize\-membar\fR" 4
  .IX Item "-moptimize-membar"
  This switch removes redundant \f(CW\*(C`membar\*(C'\fR instructions from the
! compiler-generated code.  It is enabled by default.
! .IP "\fB\-mno\-optimize\-membar\fR" 4
  .IX Item "-mno-optimize-membar"
  This switch disables the automatic removal of redundant \f(CW\*(C`membar\*(C'\fR
  instructions from the generated code.
! .IP "\fB\-mtomcat\-stats\fR" 4
  .IX Item "-mtomcat-stats"
  Cause gas to print out tomcat statistics.
! .IP "\fB\-mcpu=\fR\fIcpu\fR" 4
  .IX Item "-mcpu=cpu"
  Select the processor type for which to generate code.  Possible values are
  \&\fBfrv\fR, \fBfr550\fR, \fBtomcat\fR, \fBfr500\fR, \fBfr450\fR,
--- 26024,26332 ----
  .IX Item "-<Signed division and modulus instructions, as in -msdiv>"
  .IP "\-<Sign\-extending move and memory load instructions, as in \fB\-msmov\fR>" 4
  .IX Item "-<Sign-extending move and memory load instructions, as in -msmov>"
+ .PD
  .RE
  .RS 4
  .RE
  .RE
  .RS 4
  .RE
! .IP \fB\-mco\-re\fR 4
  .IX Item "-mco-re"
! Enable BPF Compile Once \- Run Everywhere (CO\-RE) support. Requires and
  is implied by \fB\-gbtf\fR.
! .IP \fB\-mno\-co\-re\fR 4
  .IX Item "-mno-co-re"
! Disable BPF Compile Once \- Run Everywhere (CO\-RE) support. BPF CO\-RE
! support is enabled by default when generating BTF debug information for
! the BPF target.
! .IP \fB\-mxbpf\fR 4
  .IX Item "-mxbpf"
! Generate code for an expanded version of BPF, which relaxes some of
! the restrictions imposed by the BPF architecture:
  .RS 4
! .IP "\-<Save and restore callee\-saved registers at function entry and>" 4
  .IX Item "-<Save and restore callee-saved registers at function entry and>"
  exit, respectively.
  .RE
  .RS 4
  .RE
! .IP \fB\-masm=\fR\fIdialect\fR 4
  .IX Item "-masm=dialect"
  Outputs assembly instructions using eBPF selected \fIdialect\fR.  The default
  is \fBpseudoc\fR.
  .Sp
  Supported values for \fIdialect\fR are:
  .RS 4
! .IP \fBnormal\fR 4
  .IX Item "normal"
  Outputs normal assembly dialect.
! .IP \fBpseudoc\fR 4
  .IX Item "pseudoc"
! Outputs pseudo\-c assembly dialect.
  .RE
  .RS 4
  .RE
! .IP \fB\-minline\-memops\-threshold=\fR\fIbytes\fR 4
  .IX Item "-minline-memops-threshold=bytes"
  Specifies a size threshold in bytes at or below which memmove, memcpy
  and memset shall always be expanded inline.  Operations dealing with
  sizes larger than this threshold would have to be implemented using
! a library call instead of being expanded inline, but since BPF doesn\*(Aqt
! allow libcalls, exceeding this threshold results in a compile\-time
  error.  The default is \fB1024\fR bytes.
  .PP
! \fIFR30 Options\fR
  .IX Subsection "FR30 Options"
  .PP
! These options are defined specifically for the FR30 port.
! .IP \fB\-msmall\-model\fR 4
  .IX Item "-msmall-model"
  Use the small address space model.  This can produce smaller code, but
  it does assume that all symbolic values and addresses fit into a
  20\-bit range.
! .IP \fB\-mno\-lsim\fR 4
  .IX Item "-mno-lsim"
  Assume that runtime support has been provided and so there is no need
  to include the simulator library (\fIlibsim.a\fR) on the linker
  command line.
  .PP
! \fIFT32 Options\fR
  .IX Subsection "FT32 Options"
  .PP
! These options are defined specifically for the FT32 port.
! .IP \fB\-msim\fR 4
  .IX Item "-msim"
  Specifies that the program will be run on the simulator.  This causes
  an alternate runtime startup and library to be linked.
  You must not use this option when generating programs that will run on
  real hardware; you must provide your own runtime library for whatever
  I/O functions are needed.
! .IP \fB\-mlra\fR 4
  .IX Item "-mlra"
  Does nothing.  Preserved for backward compatibility.
! .IP \fB\-mnodiv\fR 4
  .IX Item "-mnodiv"
  Do not use div and mod instructions.
! .IP \fB\-mft32b\fR 4
  .IX Item "-mft32b"
! Enable use of the extended instructions of the FT32B processor.
! .IP \fB\-mcompress\fR 4
  .IX Item "-mcompress"
  Compress all code using the Ft32B code compression scheme.
! .IP \fB\-mnopm\fR 4
  .IX Item "-mnopm"
  Do not generate code that reads program memory.
  .PP
! \fIFRV Options\fR
  .IX Subsection "FRV Options"
! .IP \fB\-mgpr\-32\fR 4
  .IX Item "-mgpr-32"
! Only use the first 32 general\-purpose registers.
! .IP \fB\-mgpr\-64\fR 4
  .IX Item "-mgpr-64"
! Use all 64 general\-purpose registers.
! .IP \fB\-mfpr\-32\fR 4
  .IX Item "-mfpr-32"
! Use only the first 32 floating\-point registers.
! .IP \fB\-mfpr\-64\fR 4
  .IX Item "-mfpr-64"
! Use all 64 floating\-point registers.
! .IP \fB\-mhard\-float\fR 4
  .IX Item "-mhard-float"
! Use hardware instructions for floating\-point operations.
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
! Use library routines for floating\-point operations.
! .IP \fB\-malloc\-cc\fR 4
  .IX Item "-malloc-cc"
  Dynamically allocate condition code registers.
! .IP \fB\-mfixed\-cc\fR 4
  .IX Item "-mfixed-cc"
  Do not try to dynamically allocate condition code registers, only
  use \f(CW\*(C`icc0\*(C'\fR and \f(CW\*(C`fcc0\*(C'\fR.
! .IP \fB\-mdword\fR 4
  .IX Item "-mdword"
! Change ABI to use double word insns.
! .IP \fB\-mno\-dword\fR 4
  .IX Item "-mno-dword"
  Do not use double word instructions.
! .IP \fB\-mdouble\fR 4
  .IX Item "-mdouble"
! Use floating\-point double instructions.
! .IP \fB\-mno\-double\fR 4
  .IX Item "-mno-double"
! Do not use floating\-point double instructions.
! .IP \fB\-mmedia\fR 4
  .IX Item "-mmedia"
  Use media instructions.
! .IP \fB\-mno\-media\fR 4
  .IX Item "-mno-media"
  Do not use media instructions.
! .IP \fB\-mmuladd\fR 4
  .IX Item "-mmuladd"
  Use multiply and add/subtract instructions.
! .IP \fB\-mno\-muladd\fR 4
  .IX Item "-mno-muladd"
  Do not use multiply and add/subtract instructions.
! .IP \fB\-mfdpic\fR 4
  .IX Item "-mfdpic"
! Select the FDPIC ABI, which uses function descriptors to represent
  pointers to functions.  Without any PIC/PIE\-related options, it
  implies \fB\-fPIE\fR.  With \fB\-fpic\fR or \fB\-fpie\fR, it
! assumes GOT entries and small data are within a 12\-bit range from the
! GOT base address; with \fB\-fPIC\fR or \fB\-fPIE\fR, GOT offsets
  are computed with 32 bits.
! With a \fBbfin\-elf\fR target, this option implies \fB\-msim\fR.
! .IP \fB\-minline\-plt\fR 4
  .IX Item "-minline-plt"
! Enable inlining of PLT entries in function calls to functions that are
  not known to bind locally.  It has no effect without \fB\-mfdpic\fR.
! It\*(Aqs enabled by default if optimizing for speed and compiling for
  shared libraries (i.e., \fB\-fPIC\fR or \fB\-fpic\fR), or when an
  optimization option such as \fB\-O3\fR or above is present in the
  command line.
! .IP \fB\-mTLS\fR 4
  .IX Item "-mTLS"
! Assume a large TLS segment when generating thread\-local code.
! .IP \fB\-mtls\fR 4
  .IX Item "-mtls"
! Do not assume a large TLS segment when generating thread\-local code.
! .IP \fB\-mgprel\-ro\fR 4
  .IX Item "-mgprel-ro"
! Enable the use of \f(CW\*(C`GPREL\*(C'\fR relocations in the FDPIC ABI for data
! that is known to be in read\-only sections.  It\*(Aqs enabled by default,
  except for \fB\-fpic\fR or \fB\-fpie\fR: even though it may help
  make the global offset table smaller, it trades 1 instruction for 4.
  With \fB\-fPIC\fR or \fB\-fPIE\fR, it trades 3 instructions for 4,
  one of which may be shared by multiple symbols, and it avoids the need
! for a GOT entry for the referenced symbol, so it\*(Aqs more likely to be a
  win.  If it is not, \fB\-mno\-gprel\-ro\fR can be used to disable it.
! .IP \fB\-multilib\-library\-pic\fR 4
  .IX Item "-multilib-library-pic"
! Link with the (library, not FD) pic libraries.  It\*(Aqs implied by
  \&\fB\-mlibrary\-pic\fR, as well as by \fB\-fPIC\fR and
  \&\fB\-fpic\fR without \fB\-mfdpic\fR.  You should never have to use
  it explicitly.
! .IP \fB\-mlinked\-fp\fR 4
  .IX Item "-mlinked-fp"
! Follow the EABI requirement of always creating a frame pointer whenever
  a stack frame is allocated.  This option is enabled by default and can
  be disabled with \fB\-mno\-linked\-fp\fR.
! .IP \fB\-mlong\-calls\fR 4
  .IX Item "-mlong-calls"
  Use indirect addressing to call functions outside the current
  compilation unit.  This allows the functions to be placed anywhere
  within the 32\-bit address space.
! .IP \fB\-malign\-labels\fR 4
  .IX Item "-malign-labels"
  Try to align labels to an 8\-byte boundary by inserting NOPs into the
! previous packet.  This option only has an effect when VLIW packing
! is enabled.  It doesn\*(Aqt create new packets; it merely adds NOPs to
  existing ones.
! .IP \fB\-mlibrary\-pic\fR 4
  .IX Item "-mlibrary-pic"
! Generate position\-independent EABI code.
! .IP \fB\-macc\-4\fR 4
  .IX Item "-macc-4"
  Use only the first four media accumulator registers.
! .IP \fB\-macc\-8\fR 4
  .IX Item "-macc-8"
  Use all eight media accumulator registers.
! .IP \fB\-mpack\fR 4
  .IX Item "-mpack"
! Pack VLIW instructions.
! .IP \fB\-mno\-pack\fR 4
  .IX Item "-mno-pack"
! Do not pack VLIW instructions.
! .IP \fB\-mno\-eflags\fR 4
  .IX Item "-mno-eflags"
! Do not mark ABI switches in e_flags.
! .IP \fB\-mcond\-move\fR 4
  .IX Item "-mcond-move"
! Enable the use of conditional\-move instructions (default).
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP \fB\-mno\-cond\-move\fR 4
  .IX Item "-mno-cond-move"
! Disable the use of conditional\-move instructions.
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP \fB\-mscc\fR 4
  .IX Item "-mscc"
  Enable the use of conditional set instructions (default).
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP \fB\-mno\-scc\fR 4
  .IX Item "-mno-scc"
  Disable the use of conditional set instructions.
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP \fB\-mcond\-exec\fR 4
  .IX Item "-mcond-exec"
  Enable the use of conditional execution (default).
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP \fB\-mno\-cond\-exec\fR 4
  .IX Item "-mno-cond-exec"
  Disable the use of conditional execution.
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP \fB\-mvliw\-branch\fR 4
  .IX Item "-mvliw-branch"
! Run a pass to pack branches into VLIW instructions (default).
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP \fB\-mno\-vliw\-branch\fR 4
  .IX Item "-mno-vliw-branch"
! Do not run a pass to pack branches into VLIW instructions.
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP \fB\-mmulti\-cond\-exec\fR 4
  .IX Item "-mmulti-cond-exec"
  Enable optimization of \f(CW\*(C`&&\*(C'\fR and \f(CW\*(C`||\*(C'\fR in conditional execution
  (default).
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP \fB\-mno\-multi\-cond\-exec\fR 4
  .IX Item "-mno-multi-cond-exec"
  Disable optimization of \f(CW\*(C`&&\*(C'\fR and \f(CW\*(C`||\*(C'\fR in conditional execution.
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP \fB\-mnested\-cond\-exec\fR 4
  .IX Item "-mnested-cond-exec"
  Enable nested conditional execution optimizations (default).
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP \fB\-mno\-nested\-cond\-exec\fR 4
  .IX Item "-mno-nested-cond-exec"
  Disable nested conditional execution optimizations.
  .Sp
  This switch is mainly for debugging the compiler and will likely be removed
  in a future version.
! .IP \fB\-moptimize\-membar\fR 4
  .IX Item "-moptimize-membar"
  This switch removes redundant \f(CW\*(C`membar\*(C'\fR instructions from the
! compiler\-generated code.  It is enabled by default.
! .IP \fB\-mno\-optimize\-membar\fR 4
  .IX Item "-mno-optimize-membar"
  This switch disables the automatic removal of redundant \f(CW\*(C`membar\*(C'\fR
  instructions from the generated code.
! .IP \fB\-mtomcat\-stats\fR 4
  .IX Item "-mtomcat-stats"
  Cause gas to print out tomcat statistics.
! .IP \fB\-mcpu=\fR\fIcpu\fR 4
  .IX Item "-mcpu=cpu"
  Select the processor type for which to generate code.  Possible values are
  \&\fBfrv\fR, \fBfr550\fR, \fBtomcat\fR, \fBfr500\fR, \fBfr450\fR,
*************** Select the processor type for which to g
*** 26401,26439 ****
  .IX Subsection "GNU/Linux Options"
  .PP
  These \fB\-m\fR options are defined for GNU/Linux targets:
! .IP "\fB\-mglibc\fR" 4
  .IX Item "-mglibc"
! Use the \s-1GNU C\s0 library.  This is the default except
  on \fB*\-*\-linux\-*uclibc*\fR, \fB*\-*\-linux\-*musl*\fR and
  \&\fB*\-*\-linux\-*android*\fR targets.
! .IP "\fB\-muclibc\fR" 4
  .IX Item "-muclibc"
  Use uClibc C library.  This is the default on
  \&\fB*\-*\-linux\-*uclibc*\fR targets.
! .IP "\fB\-mmusl\fR" 4
  .IX Item "-mmusl"
  Use the musl C library.  This is the default on
  \&\fB*\-*\-linux\-*musl*\fR targets.
! .IP "\fB\-mbionic\fR" 4
  .IX Item "-mbionic"
  Use Bionic C library.  This is the default on
  \&\fB*\-*\-linux\-*android*\fR targets.
! .IP "\fB\-mandroid\fR" 4
  .IX Item "-mandroid"
  Compile code compatible with Android platform.  This is the default on
  \&\fB*\-*\-linux\-*android*\fR targets.
  .Sp
  When compiling, this option enables \fB\-mbionic\fR, \fB\-fPIC\fR,
  \&\fB\-fno\-exceptions\fR and \fB\-fno\-rtti\fR by default.  When linking,
! this option makes the \s-1GCC\s0 driver pass Android-specific options to the linker.
  Finally, this option causes the preprocessor macro \f(CW\*(C`_\|_ANDROID_\|_\*(C'\fR
  to be defined.
! .IP "\fB\-tno\-android\-cc\fR" 4
  .IX Item "-tno-android-cc"
  Disable compilation effects of \fB\-mandroid\fR, i.e., do not enable
  \&\fB\-mbionic\fR, \fB\-fPIC\fR, \fB\-fno\-exceptions\fR and
  \&\fB\-fno\-rtti\fR by default.
! .IP "\fB\-tno\-android\-ld\fR" 4
  .IX Item "-tno-android-ld"
  Disable linking effects of \fB\-mandroid\fR, i.e., pass standard Linux
  linking options to the linker.
--- 26336,26374 ----
  .IX Subsection "GNU/Linux Options"
  .PP
  These \fB\-m\fR options are defined for GNU/Linux targets:
! .IP \fB\-mglibc\fR 4
  .IX Item "-mglibc"
! Use the GNU C library.  This is the default except
  on \fB*\-*\-linux\-*uclibc*\fR, \fB*\-*\-linux\-*musl*\fR and
  \&\fB*\-*\-linux\-*android*\fR targets.
! .IP \fB\-muclibc\fR 4
  .IX Item "-muclibc"
  Use uClibc C library.  This is the default on
  \&\fB*\-*\-linux\-*uclibc*\fR targets.
! .IP \fB\-mmusl\fR 4
  .IX Item "-mmusl"
  Use the musl C library.  This is the default on
  \&\fB*\-*\-linux\-*musl*\fR targets.
! .IP \fB\-mbionic\fR 4
  .IX Item "-mbionic"
  Use Bionic C library.  This is the default on
  \&\fB*\-*\-linux\-*android*\fR targets.
! .IP \fB\-mandroid\fR 4
  .IX Item "-mandroid"
  Compile code compatible with Android platform.  This is the default on
  \&\fB*\-*\-linux\-*android*\fR targets.
  .Sp
  When compiling, this option enables \fB\-mbionic\fR, \fB\-fPIC\fR,
  \&\fB\-fno\-exceptions\fR and \fB\-fno\-rtti\fR by default.  When linking,
! this option makes the GCC driver pass Android\-specific options to the linker.
  Finally, this option causes the preprocessor macro \f(CW\*(C`_\|_ANDROID_\|_\*(C'\fR
  to be defined.
! .IP \fB\-tno\-android\-cc\fR 4
  .IX Item "-tno-android-cc"
  Disable compilation effects of \fB\-mandroid\fR, i.e., do not enable
  \&\fB\-mbionic\fR, \fB\-fPIC\fR, \fB\-fno\-exceptions\fR and
  \&\fB\-fno\-rtti\fR by default.
! .IP \fB\-tno\-android\-ld\fR 4
  .IX Item "-tno-android-ld"
  Disable linking effects of \fB\-mandroid\fR, i.e., pass standard Linux
  linking options to the linker.
*************** linking options to the linker.
*** 26442,26478 ****
  .IX Subsection "H8/300 Options"
  .PP
  These \fB\-m\fR options are defined for the H8/300 implementations:
! .IP "\fB\-mrelax\fR" 4
  .IX Item "-mrelax"
  Shorten some address references at link time, when possible; uses the
  linker option \fB\-relax\fR.
! .IP "\fB\-mh\fR" 4
  .IX Item "-mh"
  Generate code for the H8/300H.
! .IP "\fB\-ms\fR" 4
  .IX Item "-ms"
  Generate code for the H8S.
! .IP "\fB\-mn\fR" 4
  .IX Item "-mn"
  Generate code for the H8S and H8/300H in the normal mode.  This switch
  must be used either with \fB\-mh\fR or \fB\-ms\fR.
! .IP "\fB\-ms2600\fR" 4
  .IX Item "-ms2600"
  Generate code for the H8S/2600.  This switch must be used with \fB\-ms\fR.
! .IP "\fB\-mexr\fR" 4
  .IX Item "-mexr"
  Extended registers are stored on stack before execution of function
  with monitor attribute. Default option is \fB\-mexr\fR.
  This option is valid only for H8S targets.
! .IP "\fB\-mno\-exr\fR" 4
  .IX Item "-mno-exr"
  Extended registers are not stored on stack before execution of function
  with monitor attribute. Default option is \fB\-mno\-exr\fR.
  This option is valid only for H8S targets.
! .IP "\fB\-mint32\fR" 4
  .IX Item "-mint32"
  Make \f(CW\*(C`int\*(C'\fR data 32 bits by default.
! .IP "\fB\-malign\-300\fR" 4
  .IX Item "-malign-300"
  On the H8/300H and H8S, use the same alignment rules as for the H8/300.
  The default for the H8/300H and H8S is to align longs and floats on
--- 26377,26413 ----
  .IX Subsection "H8/300 Options"
  .PP
  These \fB\-m\fR options are defined for the H8/300 implementations:
! .IP \fB\-mrelax\fR 4
  .IX Item "-mrelax"
  Shorten some address references at link time, when possible; uses the
  linker option \fB\-relax\fR.
! .IP \fB\-mh\fR 4
  .IX Item "-mh"
  Generate code for the H8/300H.
! .IP \fB\-ms\fR 4
  .IX Item "-ms"
  Generate code for the H8S.
! .IP \fB\-mn\fR 4
  .IX Item "-mn"
  Generate code for the H8S and H8/300H in the normal mode.  This switch
  must be used either with \fB\-mh\fR or \fB\-ms\fR.
! .IP \fB\-ms2600\fR 4
  .IX Item "-ms2600"
  Generate code for the H8S/2600.  This switch must be used with \fB\-ms\fR.
! .IP \fB\-mexr\fR 4
  .IX Item "-mexr"
  Extended registers are stored on stack before execution of function
  with monitor attribute. Default option is \fB\-mexr\fR.
  This option is valid only for H8S targets.
! .IP \fB\-mno\-exr\fR 4
  .IX Item "-mno-exr"
  Extended registers are not stored on stack before execution of function
  with monitor attribute. Default option is \fB\-mno\-exr\fR.
  This option is valid only for H8S targets.
! .IP \fB\-mint32\fR 4
  .IX Item "-mint32"
  Make \f(CW\*(C`int\*(C'\fR data 32 bits by default.
! .IP \fB\-malign\-300\fR 4
  .IX Item "-malign-300"
  On the H8/300H and H8S, use the same alignment rules as for the H8/300.
  The default for the H8/300H and H8S is to align longs and floats on
*************** The default for the H8/300H and H8S is t
*** 26480,26512 ****
  \&\fB\-malign\-300\fR causes them to be aligned on 2\-byte boundaries.
  This option has no effect on the H8/300.
  .PP
! \fI\s-1HPPA\s0 Options\fR
  .IX Subsection "HPPA Options"
  .PP
! These \fB\-m\fR options are defined for the \s-1HPPA\s0 family of computers:
! .IP "\fB\-march=\fR\fIarchitecture-type\fR" 4
  .IX Item "-march=architecture-type"
  Generate code for the specified architecture.  The choices for
! \&\fIarchitecture-type\fR are \fB1.0\fR for \s-1PA 1.0,\s0 \fB1.1\fR for \s-1PA
! 1.1,\s0 and \fB2.0\fR for \s-1PA 2.0\s0 processors.  Refer to
! \&\fI/usr/lib/sched.models\fR on an HP-UX system to determine the proper
  architecture option for your machine.  Code compiled for lower numbered
  architectures runs on higher numbered architectures, but not the
  other way around.
! .IP "\fB\-mpa\-risc\-1\-0\fR" 4
  .IX Item "-mpa-risc-1-0"
  .PD 0
! .IP "\fB\-mpa\-risc\-1\-1\fR" 4
  .IX Item "-mpa-risc-1-1"
! .IP "\fB\-mpa\-risc\-2\-0\fR" 4
  .IX Item "-mpa-risc-2-0"
  .PD
  Synonyms for \fB\-march=1.0\fR, \fB\-march=1.1\fR, and \fB\-march=2.0\fR respectively.
! .IP "\fB\-matomic\-libcalls\fR" 4
  .IX Item "-matomic-libcalls"
  Generate libcalls for atomic loads and stores when sync libcalls are disabled.
  This option is enabled by default.  It only affects the generation of
! atomic libcalls by the \s-1HPPA\s0 backend.
  .Sp
  Both the sync and \fIlibatomic\fR libcall implementations use locking.
  As a result, processor stores are not atomic with respect to other
--- 26415,26447 ----
  \&\fB\-malign\-300\fR causes them to be aligned on 2\-byte boundaries.
  This option has no effect on the H8/300.
  .PP
! \fIHPPA Options\fR
  .IX Subsection "HPPA Options"
  .PP
! These \fB\-m\fR options are defined for the HPPA family of computers:
! .IP \fB\-march=\fR\fIarchitecture\-type\fR 4
  .IX Item "-march=architecture-type"
  Generate code for the specified architecture.  The choices for
! \&\fIarchitecture\-type\fR are \fB1.0\fR for PA 1.0, \fB1.1\fR for PA
! 1.1, and \fB2.0\fR for PA 2.0 processors.  Refer to
! \&\fI/usr/lib/sched.models\fR on an HP\-UX system to determine the proper
  architecture option for your machine.  Code compiled for lower numbered
  architectures runs on higher numbered architectures, but not the
  other way around.
! .IP \fB\-mpa\-risc\-1\-0\fR 4
  .IX Item "-mpa-risc-1-0"
  .PD 0
! .IP \fB\-mpa\-risc\-1\-1\fR 4
  .IX Item "-mpa-risc-1-1"
! .IP \fB\-mpa\-risc\-2\-0\fR 4
  .IX Item "-mpa-risc-2-0"
  .PD
  Synonyms for \fB\-march=1.0\fR, \fB\-march=1.1\fR, and \fB\-march=2.0\fR respectively.
! .IP \fB\-matomic\-libcalls\fR 4
  .IX Item "-matomic-libcalls"
  Generate libcalls for atomic loads and stores when sync libcalls are disabled.
  This option is enabled by default.  It only affects the generation of
! atomic libcalls by the HPPA backend.
  .Sp
  Both the sync and \fIlibatomic\fR libcall implementations use locking.
  As a result, processor stores are not atomic with respect to other
*************** atomic operations.  Processor loads up t
*** 26514,26520 ****
  respect to other atomic operations provided they are implemented as
  a single access.
  .Sp
! The PA-RISC architecture does not support any atomic operations in
  hardware except for the \f(CW\*(C`ldcw\*(C'\fR instruction.  Thus, all atomic
  support is implemented using sync and atomic libcalls.  Sync libcall
  support is in \fIlibgcc.a\fR.  Atomic libcall support is in
--- 26449,26455 ----
  respect to other atomic operations provided they are implemented as
  a single access.
  .Sp
! The PA\-RISC architecture does not support any atomic operations in
  hardware except for the \f(CW\*(C`ldcw\*(C'\fR instruction.  Thus, all atomic
  support is implemented using sync and atomic libcalls.  Sync libcall
  support is in \fIlibgcc.a\fR.  Atomic libcall support is in
*************** support is in \fIlibgcc.a\fR.  Atomic li
*** 26523,26597 ****
  This option generates \f(CW\*(C`_\|_atomic_exchange\*(C'\fR calls for atomic stores.
  It also provides special handling for atomic DImode accesses on 32\-bit
  targets.
! .IP "\fB\-mbig\-switch\fR" 4
  .IX Item "-mbig-switch"
  Does nothing.  Preserved for backward compatibility.
! .IP "\fB\-mcaller\-copies\fR" 4
  .IX Item "-mcaller-copies"
  The caller copies function arguments passed by hidden reference.  This
  option should be used with care as it is not compatible with the default
  32\-bit runtime.  However, only aggregates larger than eight bytes are
  passed by hidden reference and the option provides better compatibility
  with OpenMP.
! .IP "\fB\-mcoherent\-ldcw\fR" 4
  .IX Item "-mcoherent-ldcw"
! Use ldcw/ldcd coherent cache-control hint.
! .IP "\fB\-mdisable\-fpregs\fR" 4
  .IX Item "-mdisable-fpregs"
! Disable floating-point registers.  Equivalent to \f(CW\*(C`\-msoft\-float\*(C'\fR.
! .IP "\fB\-mdisable\-indexing\fR" 4
  .IX Item "-mdisable-indexing"
  Prevent the compiler from using indexing address modes.  This avoids some
! rather obscure problems when compiling \s-1MIG\s0 generated code under \s-1MACH.\s0
! .IP "\fB\-mfast\-indirect\-calls\fR" 4
  .IX Item "-mfast-indirect-calls"
  Generate code that assumes calls never cross space boundaries.  This
! allows \s-1GCC\s0 to emit code that performs faster indirect calls.
  .Sp
  This option does not work in the presence of shared libraries or nested
  functions.
! .IP "\fB\-mfixed\-range=\fR\fIregister-range\fR" 4
  .IX Item "-mfixed-range=register-range"
  Generate code treating the given register range as fixed registers.
  A fixed register is one that the register allocator cannot use.  This is
  useful when compiling kernel code.  A register range is specified as
  two registers separated by a dash.  Multiple register ranges can be
  specified separated by a comma.
! .IP "\fB\-mgas\fR" 4
  .IX Item "-mgas"
! Enable the use of assembler directives only \s-1GAS\s0 understands.
! .IP "\fB\-mgnu\-ld\fR" 4
  .IX Item "-mgnu-ld"
! Use options specific to \s-1GNU\s0 \fBld\fR.
  This passes \fB\-shared\fR to \fBld\fR when
! building a shared library.  It is the default when \s-1GCC\s0 is configured,
! explicitly or implicitly, with the \s-1GNU\s0 linker.  This option does not
  affect which \fBld\fR is called; it only changes what parameters
  are passed to that \fBld\fR.
  The \fBld\fR that is called is determined by the
! \&\fB\-\-with\-ld\fR configure option, \s-1GCC\s0's program search path, and
! finally by the user's \fB\s-1PATH\s0\fR.  The linker used by \s-1GCC\s0 can be printed
! using \fBwhich `gcc \-print\-prog\-name=ld`\fR.  This option is only available
! on the 64\-bit HP-UX \s-1GCC,\s0 i.e. configured with \fBhppa*64*\-*\-hpux*\fR.
! .IP "\fB\-mhp\-ld\fR" 4
  .IX Item "-mhp-ld"
! Use options specific to \s-1HP\s0 \fBld\fR.
  This passes \fB\-b\fR to \fBld\fR when building
  a shared library and passes \fB+Accept TypeMismatch\fR to \fBld\fR on all
! links.  It is the default when \s-1GCC\s0 is configured, explicitly or
! implicitly, with the \s-1HP\s0 linker.  This option does not affect
  which \fBld\fR is called; it only changes what parameters are passed to that
  \&\fBld\fR.
  The \fBld\fR that is called is determined by the \fB\-\-with\-ld\fR
! configure option, \s-1GCC\s0's program search path, and finally by the user's
! \&\fB\s-1PATH\s0\fR.  The linker used by \s-1GCC\s0 can be printed using \fBwhich
! `gcc \-print\-prog\-name=ld`\fR.  This option is only available on the 64\-bit
! HP-UX \s-1GCC,\s0 i.e. configured with \fBhppa*64*\-*\-hpux*\fR.
! .IP "\fB\-mlinker\-opt\fR" 4
  .IX Item "-mlinker-opt"
! Enable the optimization pass in the HP-UX linker.  Note this makes symbolic
  debugging impossible.
! .IP "\fB\-mlong\-calls\fR" 4
  .IX Item "-mlong-calls"
  Generate code that uses long call sequences.  This ensures that a call
  is always able to reach linker generated stubs.  The default is to generate
--- 26458,26532 ----
  This option generates \f(CW\*(C`_\|_atomic_exchange\*(C'\fR calls for atomic stores.
  It also provides special handling for atomic DImode accesses on 32\-bit
  targets.
! .IP \fB\-mbig\-switch\fR 4
  .IX Item "-mbig-switch"
  Does nothing.  Preserved for backward compatibility.
! .IP \fB\-mcaller\-copies\fR 4
  .IX Item "-mcaller-copies"
  The caller copies function arguments passed by hidden reference.  This
  option should be used with care as it is not compatible with the default
  32\-bit runtime.  However, only aggregates larger than eight bytes are
  passed by hidden reference and the option provides better compatibility
  with OpenMP.
! .IP \fB\-mcoherent\-ldcw\fR 4
  .IX Item "-mcoherent-ldcw"
! Use ldcw/ldcd coherent cache\-control hint.
! .IP \fB\-mdisable\-fpregs\fR 4
  .IX Item "-mdisable-fpregs"
! Disable floating\-point registers.  Equivalent to \f(CW\*(C`\-msoft\-float\*(C'\fR.
! .IP \fB\-mdisable\-indexing\fR 4
  .IX Item "-mdisable-indexing"
  Prevent the compiler from using indexing address modes.  This avoids some
! rather obscure problems when compiling MIG generated code under MACH.
! .IP \fB\-mfast\-indirect\-calls\fR 4
  .IX Item "-mfast-indirect-calls"
  Generate code that assumes calls never cross space boundaries.  This
! allows GCC to emit code that performs faster indirect calls.
  .Sp
  This option does not work in the presence of shared libraries or nested
  functions.
! .IP \fB\-mfixed\-range=\fR\fIregister\-range\fR 4
  .IX Item "-mfixed-range=register-range"
  Generate code treating the given register range as fixed registers.
  A fixed register is one that the register allocator cannot use.  This is
  useful when compiling kernel code.  A register range is specified as
  two registers separated by a dash.  Multiple register ranges can be
  specified separated by a comma.
! .IP \fB\-mgas\fR 4
  .IX Item "-mgas"
! Enable the use of assembler directives only GAS understands.
! .IP \fB\-mgnu\-ld\fR 4
  .IX Item "-mgnu-ld"
! Use options specific to GNU \fBld\fR.
  This passes \fB\-shared\fR to \fBld\fR when
! building a shared library.  It is the default when GCC is configured,
! explicitly or implicitly, with the GNU linker.  This option does not
  affect which \fBld\fR is called; it only changes what parameters
  are passed to that \fBld\fR.
  The \fBld\fR that is called is determined by the
! \&\fB\-\-with\-ld\fR configure option, GCC\*(Aqs program search path, and
! finally by the user\*(Aqs \fBPATH\fR.  The linker used by GCC can be printed
! using \fBwhich \`gcc \-print\-prog\-name=ld\`\fR.  This option is only available
! on the 64\-bit HP\-UX GCC, i.e. configured with \fBhppa*64*\-*\-hpux*\fR.
! .IP \fB\-mhp\-ld\fR 4
  .IX Item "-mhp-ld"
! Use options specific to HP \fBld\fR.
  This passes \fB\-b\fR to \fBld\fR when building
  a shared library and passes \fB+Accept TypeMismatch\fR to \fBld\fR on all
! links.  It is the default when GCC is configured, explicitly or
! implicitly, with the HP linker.  This option does not affect
  which \fBld\fR is called; it only changes what parameters are passed to that
  \&\fBld\fR.
  The \fBld\fR that is called is determined by the \fB\-\-with\-ld\fR
! configure option, GCC\*(Aqs program search path, and finally by the user\*(Aqs
! \&\fBPATH\fR.  The linker used by GCC can be printed using \fBwhich
! \&\`gcc \-print\-prog\-name=ld\`\fR.  This option is only available on the 64\-bit
! HP\-UX GCC, i.e. configured with \fBhppa*64*\-*\-hpux*\fR.
! .IP \fB\-mlinker\-opt\fR 4
  .IX Item "-mlinker-opt"
! Enable the optimization pass in the HP\-UX linker.  Note this makes symbolic
  debugging impossible.
! .IP \fB\-mlong\-calls\fR 4
  .IX Item "-mlong-calls"
  Generate code that uses long call sequences.  This ensures that a call
  is always able to reach linker generated stubs.  The default is to generate
*************** long calls only when the distance from t
*** 26599,26611 ****
  of the function or translation unit, as the case may be, exceeds a
  predefined limit set by the branch type being used.  The limits for
  normal calls are 7,600,000 and 240,000 bytes, respectively for the
! \&\s-1PA 2.0\s0 and \s-1PA 1.X\s0 architectures.  Sibcalls are always limited at
  240,000 bytes.
  .Sp
  Distances are measured from the beginning of functions when using the
  \&\fB\-ffunction\-sections\fR option, or when using the \fB\-mgas\fR
! and \fB\-mno\-portable\-runtime\fR options together under HP-UX with
! the \s-1SOM\s0 linker.
  .Sp
  It is normally not desirable to use this option as it degrades
  performance.  However, it may be useful in large applications,
--- 26534,26546 ----
  of the function or translation unit, as the case may be, exceeds a
  predefined limit set by the branch type being used.  The limits for
  normal calls are 7,600,000 and 240,000 bytes, respectively for the
! PA 2.0 and PA 1.X architectures.  Sibcalls are always limited at
  240,000 bytes.
  .Sp
  Distances are measured from the beginning of functions when using the
  \&\fB\-ffunction\-sections\fR option, or when using the \fB\-mgas\fR
! and \fB\-mno\-portable\-runtime\fR options together under HP\-UX with
! the SOM linker.
  .Sp
  It is normally not desirable to use this option as it degrades
  performance.  However, it may be useful in large applications,
*************** particularly when partial linking is use
*** 26614,26686 ****
  The types of long calls used depends on the capabilities of the
  assembler and linker, and the type of code being generated.  The
  impact on systems that support long absolute calls, and long pic
! symbol-difference or pc-relative calls should be relatively small.
! However, an indirect call is used on 32\-bit \s-1ELF\s0 systems in pic code
  and it is quite long.
! .IP "\fB\-mlong\-load\-store\fR" 4
  .IX Item "-mlong-load-store"
  Generate 3\-instruction load and store sequences as sometimes required by
! the HP-UX 10 linker.  This is equivalent to the \fB+k\fR option to
! the \s-1HP\s0 compilers.
! .IP "\fB\-mjump\-in\-delay\fR" 4
  .IX Item "-mjump-in-delay"
  This option is ignored and provided for compatibility purposes only.
! .IP "\fB\-mno\-space\-regs\fR" 4
  .IX Item "-mno-space-regs"
  Generate code that assumes the target has no space registers.  This allows
! \&\s-1GCC\s0 to generate faster indirect calls and use unscaled index address modes.
  .Sp
! Such code is suitable for level 0 \s-1PA\s0 systems and kernels.
! .IP "\fB\-mordered\fR" 4
  .IX Item "-mordered"
  Assume memory references are ordered and barriers are not needed.
! .IP "\fB\-mportable\-runtime\fR" 4
  .IX Item "-mportable-runtime"
! Use the portable calling conventions proposed by \s-1HP\s0 for \s-1ELF\s0 systems.
! .IP "\fB\-mschedule=\fR\fIcpu-type\fR" 4
  .IX Item "-mschedule=cpu-type"
  Schedule code according to the constraints for the machine type
! \&\fIcpu-type\fR.  The choices for \fIcpu-type\fR are \fB700\fR
  \&\fB7100\fR, \fB7100LC\fR, \fB7200\fR, \fB7300\fR and \fB8000\fR.  Refer
! to \fI/usr/lib/sched.models\fR on an HP-UX system to determine the
  proper scheduling option for your machine.  The default scheduling is
  \&\fB8000\fR.
! .IP "\fB\-msio\fR" 4
  .IX Item "-msio"
! Generate the predefine, \f(CW\*(C`_SIO\*(C'\fR, for server \s-1IO.\s0  The default is
  \&\fB\-mwsio\fR.  This generates the predefines, \f(CW\*(C`_\|_hp9000s700\*(C'\fR,
! \&\f(CW\*(C`_\|_hp9000s700_\|_\*(C'\fR and \f(CW\*(C`_WSIO\*(C'\fR, for workstation \s-1IO.\s0  These
! options are available under HP-UX and HI-UX.
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  Generate output containing library calls for floating point.
! \&\fBWarning:\fR the requisite libraries are not available for all \s-1HPPA\s0
! targets.  Normally the facilities of the machine's usual C compiler are
! used, but this cannot be done directly in cross-compilation.  You must make
  your own arrangements to provide suitable library functions for
! cross-compilation.
  .Sp
  \&\fB\-msoft\-float\fR changes the calling convention in the output file;
  therefore, it is only useful if you compile \fIall\fR of a program with
  this option.  In particular, you need to compile \fIlibgcc.a\fR, the
! library that comes with \s-1GCC,\s0 with \fB\-msoft\-float\fR in order for
  this to work.
! .IP "\fB\-msoft\-mult\fR" 4
  .IX Item "-msoft-mult"
  Use software integer multiplication.
  .Sp
  This disables the use of the \f(CW\*(C`xmpyu\*(C'\fR instruction.
! .IP "\fB\-munix=\fR\fIunix-std\fR" 4
  .IX Item "-munix=unix-std"
  Generate compiler predefines and select a startfile for the specified
! \&\s-1UNIX\s0 standard.  The choices for \fIunix-std\fR are \fB93\fR, \fB95\fR
! and \fB98\fR.  \fB93\fR is supported on all HP-UX versions.  \fB95\fR
! is available on HP-UX 10.10 and later.  \fB98\fR is available on HP-UX
! 11.11 and later.  The default values are \fB93\fR for HP-UX 10.00,
! \&\fB95\fR for HP-UX 10.10 though to 11.00, and \fB98\fR for HP-UX 11.11
  and later.
  .Sp
! \&\fB\-munix=93\fR provides the same predefines as \s-1GCC 3.3\s0 and 3.4.
  \&\fB\-munix=95\fR provides additional predefines for \f(CW\*(C`XOPEN_UNIX\*(C'\fR
  and \f(CW\*(C`_XOPEN_SOURCE_EXTENDED\*(C'\fR, and the startfile \fIunix95.o\fR.
  \&\fB\-munix=98\fR provides additional predefines for \f(CW\*(C`_XOPEN_UNIX\*(C'\fR,
--- 26549,26621 ----
  The types of long calls used depends on the capabilities of the
  assembler and linker, and the type of code being generated.  The
  impact on systems that support long absolute calls, and long pic
! symbol\-difference or pc\-relative calls should be relatively small.
! However, an indirect call is used on 32\-bit ELF systems in pic code
  and it is quite long.
! .IP \fB\-mlong\-load\-store\fR 4
  .IX Item "-mlong-load-store"
  Generate 3\-instruction load and store sequences as sometimes required by
! the HP\-UX 10 linker.  This is equivalent to the \fB+k\fR option to
! the HP compilers.
! .IP \fB\-mjump\-in\-delay\fR 4
  .IX Item "-mjump-in-delay"
  This option is ignored and provided for compatibility purposes only.
! .IP \fB\-mno\-space\-regs\fR 4
  .IX Item "-mno-space-regs"
  Generate code that assumes the target has no space registers.  This allows
! GCC to generate faster indirect calls and use unscaled index address modes.
  .Sp
! Such code is suitable for level 0 PA systems and kernels.
! .IP \fB\-mordered\fR 4
  .IX Item "-mordered"
  Assume memory references are ordered and barriers are not needed.
! .IP \fB\-mportable\-runtime\fR 4
  .IX Item "-mportable-runtime"
! Use the portable calling conventions proposed by HP for ELF systems.
! .IP \fB\-mschedule=\fR\fIcpu\-type\fR 4
  .IX Item "-mschedule=cpu-type"
  Schedule code according to the constraints for the machine type
! \&\fIcpu\-type\fR.  The choices for \fIcpu\-type\fR are \fB700\fR
  \&\fB7100\fR, \fB7100LC\fR, \fB7200\fR, \fB7300\fR and \fB8000\fR.  Refer
! to \fI/usr/lib/sched.models\fR on an HP\-UX system to determine the
  proper scheduling option for your machine.  The default scheduling is
  \&\fB8000\fR.
! .IP \fB\-msio\fR 4
  .IX Item "-msio"
! Generate the predefine, \f(CW\*(C`_SIO\*(C'\fR, for server IO.  The default is
  \&\fB\-mwsio\fR.  This generates the predefines, \f(CW\*(C`_\|_hp9000s700\*(C'\fR,
! \&\f(CW\*(C`_\|_hp9000s700_\|_\*(C'\fR and \f(CW\*(C`_WSIO\*(C'\fR, for workstation IO.  These
! options are available under HP\-UX and HI\-UX.
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  Generate output containing library calls for floating point.
! \&\fBWarning:\fR the requisite libraries are not available for all HPPA
! targets.  Normally the facilities of the machine\*(Aqs usual C compiler are
! used, but this cannot be done directly in cross\-compilation.  You must make
  your own arrangements to provide suitable library functions for
! cross\-compilation.
  .Sp
  \&\fB\-msoft\-float\fR changes the calling convention in the output file;
  therefore, it is only useful if you compile \fIall\fR of a program with
  this option.  In particular, you need to compile \fIlibgcc.a\fR, the
! library that comes with GCC, with \fB\-msoft\-float\fR in order for
  this to work.
! .IP \fB\-msoft\-mult\fR 4
  .IX Item "-msoft-mult"
  Use software integer multiplication.
  .Sp
  This disables the use of the \f(CW\*(C`xmpyu\*(C'\fR instruction.
! .IP \fB\-munix=\fR\fIunix\-std\fR 4
  .IX Item "-munix=unix-std"
  Generate compiler predefines and select a startfile for the specified
! UNIX standard.  The choices for \fIunix\-std\fR are \fB93\fR, \fB95\fR
! and \fB98\fR.  \fB93\fR is supported on all HP\-UX versions.  \fB95\fR
! is available on HP\-UX 10.10 and later.  \fB98\fR is available on HP\-UX
! 11.11 and later.  The default values are \fB93\fR for HP\-UX 10.00,
! \&\fB95\fR for HP\-UX 10.10 though to 11.00, and \fB98\fR for HP\-UX 11.11
  and later.
  .Sp
! \&\fB\-munix=93\fR provides the same predefines as GCC 3.3 and 3.4.
  \&\fB\-munix=95\fR provides additional predefines for \f(CW\*(C`XOPEN_UNIX\*(C'\fR
  and \f(CW\*(C`_XOPEN_SOURCE_EXTENDED\*(C'\fR, and the startfile \fIunix95.o\fR.
  \&\fB\-munix=98\fR provides additional predefines for \f(CW\*(C`_XOPEN_UNIX\*(C'\fR,
*************** for various library routines.  It also a
*** 26692,26892 ****
  of the C library.  Thus, \fIextreme\fR care is needed in using this
  option.
  .Sp
! Library code that is intended to operate with more than one \s-1UNIX\s0
  standard must test, set and restore the variable \f(CW\*(C`_\|_xpg4_extended_mask\*(C'\fR
! as appropriate.  Most \s-1GNU\s0 software doesn't provide this capability.
! .IP "\fB\-nolibdld\fR" 4
  .IX Item "-nolibdld"
  Suppress the generation of link options to search libdld.sl when the
! \&\fB\-static\fR option is specified on HP-UX 10 and later.
! .IP "\fB\-static\fR" 4
  .IX Item "-static"
! The HP-UX implementation of setlocale in libc has a dependency on
! libdld.sl.  There isn't an archive version of libdld.sl.  Thus,
  when the \fB\-static\fR option is specified, special link options
  are needed to resolve this dependency.
  .Sp
! On HP-UX 10 and later, the \s-1GCC\s0 driver adds the necessary options to
  link with libdld.sl when the \fB\-static\fR option is specified.
  This causes the resulting binary to be dynamic.  On the 64\-bit port,
  the linkers generate dynamic binaries by default in any case.  The
! \&\fB\-nolibdld\fR option can be used to prevent the \s-1GCC\s0 driver from
  adding these link options.
! .IP "\fB\-threads\fR" 4
  .IX Item "-threads"
  Add support for multithreading with the \fIdce thread\fR library
! under HP-UX.  This option sets flags for both the preprocessor and
  linker.
  .PP
! \fI\s-1IA\-64\s0 Options\fR
  .IX Subsection "IA-64 Options"
  .PP
! These are the \fB\-m\fR options defined for the Intel \s-1IA\-64\s0 architecture.
! .IP "\fB\-mbig\-endian\fR" 4
  .IX Item "-mbig-endian"
! Generate code for a big-endian target.  This is the default for HP-UX.
! .IP "\fB\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
! Generate code for a little-endian target.  This is the default for \s-1AIX5\s0
  and GNU/Linux.
! .IP "\fB\-mgnu\-as\fR" 4
  .IX Item "-mgnu-as"
  .PD 0
! .IP "\fB\-mno\-gnu\-as\fR" 4
  .IX Item "-mno-gnu-as"
  .PD
! Generate (or don't) code for the \s-1GNU\s0 assembler.  This is the default.
! .IP "\fB\-mgnu\-ld\fR" 4
  .IX Item "-mgnu-ld"
  .PD 0
! .IP "\fB\-mno\-gnu\-ld\fR" 4
  .IX Item "-mno-gnu-ld"
  .PD
! Generate (or don't) code for the \s-1GNU\s0 linker.  This is the default.
! .IP "\fB\-mno\-pic\fR" 4
  .IX Item "-mno-pic"
  Generate code that does not use a global pointer register.  The result
! is not position independent code, and violates the \s-1IA\-64 ABI.\s0
! .IP "\fB\-mvolatile\-asm\-stop\fR" 4
  .IX Item "-mvolatile-asm-stop"
  .PD 0
! .IP "\fB\-mno\-volatile\-asm\-stop\fR" 4
  .IX Item "-mno-volatile-asm-stop"
  .PD
! Generate (or don't) a stop bit immediately before and after volatile asm
  statements.
! .IP "\fB\-mregister\-names\fR" 4
  .IX Item "-mregister-names"
  .PD 0
! .IP "\fB\-mno\-register\-names\fR" 4
  .IX Item "-mno-register-names"
  .PD
! Generate (or don't) \fBin\fR, \fBloc\fR, and \fBout\fR register names for
  the stacked registers.  This may make assembler output more readable.
! .IP "\fB\-mno\-sdata\fR" 4
  .IX Item "-mno-sdata"
  .PD 0
! .IP "\fB\-msdata\fR" 4
  .IX Item "-msdata"
  .PD
  Disable (or enable) optimizations that use the small data section.  This may
  be useful for working around optimizer bugs.
! .IP "\fB\-mconstant\-gp\fR" 4
  .IX Item "-mconstant-gp"
  Generate code that uses a single constant global pointer value.  This is
  useful when compiling kernel code.
! .IP "\fB\-mauto\-pic\fR" 4
  .IX Item "-mauto-pic"
! Generate code that is self-relocatable.  This implies \fB\-mconstant\-gp\fR.
  This is useful when compiling firmware code.
! .IP "\fB\-minline\-float\-divide\-min\-latency\fR" 4
  .IX Item "-minline-float-divide-min-latency"
! Generate code for inline divides of floating-point values
  using the minimum latency algorithm.
! .IP "\fB\-minline\-float\-divide\-max\-throughput\fR" 4
  .IX Item "-minline-float-divide-max-throughput"
! Generate code for inline divides of floating-point values
  using the maximum throughput algorithm.
! .IP "\fB\-mno\-inline\-float\-divide\fR" 4
  .IX Item "-mno-inline-float-divide"
! Do not generate inline code for divides of floating-point values.
! .IP "\fB\-minline\-int\-divide\-min\-latency\fR" 4
  .IX Item "-minline-int-divide-min-latency"
  Generate code for inline divides of integer values
  using the minimum latency algorithm.
! .IP "\fB\-minline\-int\-divide\-max\-throughput\fR" 4
  .IX Item "-minline-int-divide-max-throughput"
  Generate code for inline divides of integer values
  using the maximum throughput algorithm.
! .IP "\fB\-mno\-inline\-int\-divide\fR" 4
  .IX Item "-mno-inline-int-divide"
  Do not generate inline code for divides of integer values.
! .IP "\fB\-minline\-sqrt\-min\-latency\fR" 4
  .IX Item "-minline-sqrt-min-latency"
  Generate code for inline square roots
  using the minimum latency algorithm.
! .IP "\fB\-minline\-sqrt\-max\-throughput\fR" 4
  .IX Item "-minline-sqrt-max-throughput"
  Generate code for inline square roots
  using the maximum throughput algorithm.
! .IP "\fB\-mno\-inline\-sqrt\fR" 4
  .IX Item "-mno-inline-sqrt"
  Do not generate inline code for \f(CW\*(C`sqrt\*(C'\fR.
! .IP "\fB\-mfused\-madd\fR" 4
  .IX Item "-mfused-madd"
  .PD 0
! .IP "\fB\-mno\-fused\-madd\fR" 4
  .IX Item "-mno-fused-madd"
  .PD
! Do (don't) generate code that uses the fused multiply/add or multiply/subtract
  instructions.  The default is to use these instructions.
! .IP "\fB\-mno\-dwarf2\-asm\fR" 4
  .IX Item "-mno-dwarf2-asm"
  .PD 0
! .IP "\fB\-mdwarf2\-asm\fR" 4
  .IX Item "-mdwarf2-asm"
  .PD
! Don't (or do) generate assembler code for the \s-1DWARF\s0 line number debugging
! info.  This may be useful when not using the \s-1GNU\s0 assembler.
! .IP "\fB\-mearly\-stop\-bits\fR" 4
  .IX Item "-mearly-stop-bits"
  .PD 0
! .IP "\fB\-mno\-early\-stop\-bits\fR" 4
  .IX Item "-mno-early-stop-bits"
  .PD
  Allow stop bits to be placed earlier than immediately preceding the
  instruction that triggered the stop bit.  This can improve instruction
  scheduling, but does not always do so.
! .IP "\fB\-mfixed\-range=\fR\fIregister-range\fR" 4
  .IX Item "-mfixed-range=register-range"
  Generate code treating the given register range as fixed registers.
  A fixed register is one that the register allocator cannot use.  This is
  useful when compiling kernel code.  A register range is specified as
  two registers separated by a dash.  Multiple register ranges can be
  specified separated by a comma.
! .IP "\fB\-mtls\-size=\fR\fItls-size\fR" 4
  .IX Item "-mtls-size=tls-size"
! Specify bit size of immediate \s-1TLS\s0 offsets.  Valid values are 14, 22, and
  64.
! .IP "\fB\-mtune=\fR\fIcpu-type\fR" 4
  .IX Item "-mtune=cpu-type"
! Tune the instruction scheduling for a particular \s-1CPU,\s0 Valid values are
  \&\fBitanium\fR, \fBitanium1\fR, \fBmerced\fR, \fBitanium2\fR,
  and \fBmckinley\fR.
! .IP "\fB\-milp32\fR" 4
  .IX Item "-milp32"
  .PD 0
! .IP "\fB\-mlp64\fR" 4
  .IX Item "-mlp64"
  .PD
  Generate code for a 32\-bit or 64\-bit environment.
  The 32\-bit environment sets int, long and pointer to 32 bits.
  The 64\-bit environment sets int to 32 bits and long and pointer
! to 64 bits.  These are HP-UX specific flags.
! .IP "\fB\-mno\-sched\-br\-data\-spec\fR" 4
  .IX Item "-mno-sched-br-data-spec"
  .PD 0
! .IP "\fB\-msched\-br\-data\-spec\fR" 4
  .IX Item "-msched-br-data-spec"
  .PD
  (Dis/En)able data speculative scheduling before reload.
  This results in generation of \f(CW\*(C`ld.a\*(C'\fR instructions and
  the corresponding check instructions (\f(CW\*(C`ld.c\*(C'\fR / \f(CW\*(C`chk.a\*(C'\fR).
  The default setting is disabled.
! .IP "\fB\-msched\-ar\-data\-spec\fR" 4
  .IX Item "-msched-ar-data-spec"
  .PD 0
! .IP "\fB\-mno\-sched\-ar\-data\-spec\fR" 4
  .IX Item "-mno-sched-ar-data-spec"
  .PD
  (En/Dis)able data speculative scheduling after reload.
  This results in generation of \f(CW\*(C`ld.a\*(C'\fR instructions and
  the corresponding check instructions (\f(CW\*(C`ld.c\*(C'\fR / \f(CW\*(C`chk.a\*(C'\fR).
  The default setting is enabled.
! .IP "\fB\-mno\-sched\-control\-spec\fR" 4
  .IX Item "-mno-sched-control-spec"
  .PD 0
! .IP "\fB\-msched\-control\-spec\fR" 4
  .IX Item "-msched-control-spec"
  .PD
  (Dis/En)able control speculative scheduling.  This feature is
--- 26627,26827 ----
  of the C library.  Thus, \fIextreme\fR care is needed in using this
  option.
  .Sp
! Library code that is intended to operate with more than one UNIX
  standard must test, set and restore the variable \f(CW\*(C`_\|_xpg4_extended_mask\*(C'\fR
! as appropriate.  Most GNU software doesn\*(Aqt provide this capability.
! .IP \fB\-nolibdld\fR 4
  .IX Item "-nolibdld"
  Suppress the generation of link options to search libdld.sl when the
! \&\fB\-static\fR option is specified on HP\-UX 10 and later.
! .IP \fB\-static\fR 4
  .IX Item "-static"
! The HP\-UX implementation of setlocale in libc has a dependency on
! libdld.sl.  There isn\*(Aqt an archive version of libdld.sl.  Thus,
  when the \fB\-static\fR option is specified, special link options
  are needed to resolve this dependency.
  .Sp
! On HP\-UX 10 and later, the GCC driver adds the necessary options to
  link with libdld.sl when the \fB\-static\fR option is specified.
  This causes the resulting binary to be dynamic.  On the 64\-bit port,
  the linkers generate dynamic binaries by default in any case.  The
! \&\fB\-nolibdld\fR option can be used to prevent the GCC driver from
  adding these link options.
! .IP \fB\-threads\fR 4
  .IX Item "-threads"
  Add support for multithreading with the \fIdce thread\fR library
! under HP\-UX.  This option sets flags for both the preprocessor and
  linker.
  .PP
! \fIIA\-64 Options\fR
  .IX Subsection "IA-64 Options"
  .PP
! These are the \fB\-m\fR options defined for the Intel IA\-64 architecture.
! .IP \fB\-mbig\-endian\fR 4
  .IX Item "-mbig-endian"
! Generate code for a big\-endian target.  This is the default for HP\-UX.
! .IP \fB\-mlittle\-endian\fR 4
  .IX Item "-mlittle-endian"
! Generate code for a little\-endian target.  This is the default for AIX5
  and GNU/Linux.
! .IP \fB\-mgnu\-as\fR 4
  .IX Item "-mgnu-as"
  .PD 0
! .IP \fB\-mno\-gnu\-as\fR 4
  .IX Item "-mno-gnu-as"
  .PD
! Generate (or don\*(Aqt) code for the GNU assembler.  This is the default.
! .IP \fB\-mgnu\-ld\fR 4
  .IX Item "-mgnu-ld"
  .PD 0
! .IP \fB\-mno\-gnu\-ld\fR 4
  .IX Item "-mno-gnu-ld"
  .PD
! Generate (or don\*(Aqt) code for the GNU linker.  This is the default.
! .IP \fB\-mno\-pic\fR 4
  .IX Item "-mno-pic"
  Generate code that does not use a global pointer register.  The result
! is not position independent code, and violates the IA\-64 ABI.
! .IP \fB\-mvolatile\-asm\-stop\fR 4
  .IX Item "-mvolatile-asm-stop"
  .PD 0
! .IP \fB\-mno\-volatile\-asm\-stop\fR 4
  .IX Item "-mno-volatile-asm-stop"
  .PD
! Generate (or don\*(Aqt) a stop bit immediately before and after volatile asm
  statements.
! .IP \fB\-mregister\-names\fR 4
  .IX Item "-mregister-names"
  .PD 0
! .IP \fB\-mno\-register\-names\fR 4
  .IX Item "-mno-register-names"
  .PD
! Generate (or don\*(Aqt) \fBin\fR, \fBloc\fR, and \fBout\fR register names for
  the stacked registers.  This may make assembler output more readable.
! .IP \fB\-mno\-sdata\fR 4
  .IX Item "-mno-sdata"
  .PD 0
! .IP \fB\-msdata\fR 4
  .IX Item "-msdata"
  .PD
  Disable (or enable) optimizations that use the small data section.  This may
  be useful for working around optimizer bugs.
! .IP \fB\-mconstant\-gp\fR 4
  .IX Item "-mconstant-gp"
  Generate code that uses a single constant global pointer value.  This is
  useful when compiling kernel code.
! .IP \fB\-mauto\-pic\fR 4
  .IX Item "-mauto-pic"
! Generate code that is self\-relocatable.  This implies \fB\-mconstant\-gp\fR.
  This is useful when compiling firmware code.
! .IP \fB\-minline\-float\-divide\-min\-latency\fR 4
  .IX Item "-minline-float-divide-min-latency"
! Generate code for inline divides of floating\-point values
  using the minimum latency algorithm.
! .IP \fB\-minline\-float\-divide\-max\-throughput\fR 4
  .IX Item "-minline-float-divide-max-throughput"
! Generate code for inline divides of floating\-point values
  using the maximum throughput algorithm.
! .IP \fB\-mno\-inline\-float\-divide\fR 4
  .IX Item "-mno-inline-float-divide"
! Do not generate inline code for divides of floating\-point values.
! .IP \fB\-minline\-int\-divide\-min\-latency\fR 4
  .IX Item "-minline-int-divide-min-latency"
  Generate code for inline divides of integer values
  using the minimum latency algorithm.
! .IP \fB\-minline\-int\-divide\-max\-throughput\fR 4
  .IX Item "-minline-int-divide-max-throughput"
  Generate code for inline divides of integer values
  using the maximum throughput algorithm.
! .IP \fB\-mno\-inline\-int\-divide\fR 4
  .IX Item "-mno-inline-int-divide"
  Do not generate inline code for divides of integer values.
! .IP \fB\-minline\-sqrt\-min\-latency\fR 4
  .IX Item "-minline-sqrt-min-latency"
  Generate code for inline square roots
  using the minimum latency algorithm.
! .IP \fB\-minline\-sqrt\-max\-throughput\fR 4
  .IX Item "-minline-sqrt-max-throughput"
  Generate code for inline square roots
  using the maximum throughput algorithm.
! .IP \fB\-mno\-inline\-sqrt\fR 4
  .IX Item "-mno-inline-sqrt"
  Do not generate inline code for \f(CW\*(C`sqrt\*(C'\fR.
! .IP \fB\-mfused\-madd\fR 4
  .IX Item "-mfused-madd"
  .PD 0
! .IP \fB\-mno\-fused\-madd\fR 4
  .IX Item "-mno-fused-madd"
  .PD
! Do (don\*(Aqt) generate code that uses the fused multiply/add or multiply/subtract
  instructions.  The default is to use these instructions.
! .IP \fB\-mno\-dwarf2\-asm\fR 4
  .IX Item "-mno-dwarf2-asm"
  .PD 0
! .IP \fB\-mdwarf2\-asm\fR 4
  .IX Item "-mdwarf2-asm"
  .PD
! Don\*(Aqt (or do) generate assembler code for the DWARF line number debugging
! info.  This may be useful when not using the GNU assembler.
! .IP \fB\-mearly\-stop\-bits\fR 4
  .IX Item "-mearly-stop-bits"
  .PD 0
! .IP \fB\-mno\-early\-stop\-bits\fR 4
  .IX Item "-mno-early-stop-bits"
  .PD
  Allow stop bits to be placed earlier than immediately preceding the
  instruction that triggered the stop bit.  This can improve instruction
  scheduling, but does not always do so.
! .IP \fB\-mfixed\-range=\fR\fIregister\-range\fR 4
  .IX Item "-mfixed-range=register-range"
  Generate code treating the given register range as fixed registers.
  A fixed register is one that the register allocator cannot use.  This is
  useful when compiling kernel code.  A register range is specified as
  two registers separated by a dash.  Multiple register ranges can be
  specified separated by a comma.
! .IP \fB\-mtls\-size=\fR\fItls\-size\fR 4
  .IX Item "-mtls-size=tls-size"
! Specify bit size of immediate TLS offsets.  Valid values are 14, 22, and
  64.
! .IP \fB\-mtune=\fR\fIcpu\-type\fR 4
  .IX Item "-mtune=cpu-type"
! Tune the instruction scheduling for a particular CPU, Valid values are
  \&\fBitanium\fR, \fBitanium1\fR, \fBmerced\fR, \fBitanium2\fR,
  and \fBmckinley\fR.
! .IP \fB\-milp32\fR 4
  .IX Item "-milp32"
  .PD 0
! .IP \fB\-mlp64\fR 4
  .IX Item "-mlp64"
  .PD
  Generate code for a 32\-bit or 64\-bit environment.
  The 32\-bit environment sets int, long and pointer to 32 bits.
  The 64\-bit environment sets int to 32 bits and long and pointer
! to 64 bits.  These are HP\-UX specific flags.
! .IP \fB\-mno\-sched\-br\-data\-spec\fR 4
  .IX Item "-mno-sched-br-data-spec"
  .PD 0
! .IP \fB\-msched\-br\-data\-spec\fR 4
  .IX Item "-msched-br-data-spec"
  .PD
  (Dis/En)able data speculative scheduling before reload.
  This results in generation of \f(CW\*(C`ld.a\*(C'\fR instructions and
  the corresponding check instructions (\f(CW\*(C`ld.c\*(C'\fR / \f(CW\*(C`chk.a\*(C'\fR).
  The default setting is disabled.
! .IP \fB\-msched\-ar\-data\-spec\fR 4
  .IX Item "-msched-ar-data-spec"
  .PD 0
! .IP \fB\-mno\-sched\-ar\-data\-spec\fR 4
  .IX Item "-mno-sched-ar-data-spec"
  .PD
  (En/Dis)able data speculative scheduling after reload.
  This results in generation of \f(CW\*(C`ld.a\*(C'\fR instructions and
  the corresponding check instructions (\f(CW\*(C`ld.c\*(C'\fR / \f(CW\*(C`chk.a\*(C'\fR).
  The default setting is enabled.
! .IP \fB\-mno\-sched\-control\-spec\fR 4
  .IX Item "-mno-sched-control-spec"
  .PD 0
! .IP \fB\-msched\-control\-spec\fR 4
  .IX Item "-msched-control-spec"
  .PD
  (Dis/En)able control speculative scheduling.  This feature is
*************** available only during region scheduling
*** 26894,27216 ****
  This results in generation of the \f(CW\*(C`ld.s\*(C'\fR instructions and
  the corresponding check instructions \f(CW\*(C`chk.s\*(C'\fR.
  The default setting is disabled.
! .IP "\fB\-msched\-br\-in\-data\-spec\fR" 4
  .IX Item "-msched-br-in-data-spec"
  .PD 0
! .IP "\fB\-mno\-sched\-br\-in\-data\-spec\fR" 4
  .IX Item "-mno-sched-br-in-data-spec"
  .PD
  (En/Dis)able speculative scheduling of the instructions that
  are dependent on the data speculative loads before reload.
  This is effective only with \fB\-msched\-br\-data\-spec\fR enabled.
  The default setting is enabled.
! .IP "\fB\-msched\-ar\-in\-data\-spec\fR" 4
  .IX Item "-msched-ar-in-data-spec"
  .PD 0
! .IP "\fB\-mno\-sched\-ar\-in\-data\-spec\fR" 4
  .IX Item "-mno-sched-ar-in-data-spec"
  .PD
  (En/Dis)able speculative scheduling of the instructions that
  are dependent on the data speculative loads after reload.
  This is effective only with \fB\-msched\-ar\-data\-spec\fR enabled.
  The default setting is enabled.
! .IP "\fB\-msched\-in\-control\-spec\fR" 4
  .IX Item "-msched-in-control-spec"
  .PD 0
! .IP "\fB\-mno\-sched\-in\-control\-spec\fR" 4
  .IX Item "-mno-sched-in-control-spec"
  .PD
  (En/Dis)able speculative scheduling of the instructions that
  are dependent on the control speculative loads.
  This is effective only with \fB\-msched\-control\-spec\fR enabled.
  The default setting is enabled.
! .IP "\fB\-mno\-sched\-prefer\-non\-data\-spec\-insns\fR" 4
  .IX Item "-mno-sched-prefer-non-data-spec-insns"
  .PD 0
! .IP "\fB\-msched\-prefer\-non\-data\-spec\-insns\fR" 4
  .IX Item "-msched-prefer-non-data-spec-insns"
  .PD
! If enabled, data-speculative instructions are chosen for schedule
  only if there are no other choices at the moment.  This makes
  the use of the data speculation much more conservative.
  The default setting is disabled.
! .IP "\fB\-mno\-sched\-prefer\-non\-control\-spec\-insns\fR" 4
  .IX Item "-mno-sched-prefer-non-control-spec-insns"
  .PD 0
! .IP "\fB\-msched\-prefer\-non\-control\-spec\-insns\fR" 4
  .IX Item "-msched-prefer-non-control-spec-insns"
  .PD
! If enabled, control-speculative instructions are chosen for schedule
  only if there are no other choices at the moment.  This makes
  the use of the control speculation much more conservative.
  The default setting is disabled.
! .IP "\fB\-mno\-sched\-count\-spec\-in\-critical\-path\fR" 4
  .IX Item "-mno-sched-count-spec-in-critical-path"
  .PD 0
! .IP "\fB\-msched\-count\-spec\-in\-critical\-path\fR" 4
  .IX Item "-msched-count-spec-in-critical-path"
  .PD
  If enabled, speculative dependencies are considered during
  computation of the instructions priorities.  This makes the use of the
  speculation a bit more conservative.
  The default setting is disabled.
! .IP "\fB\-msched\-spec\-ldc\fR" 4
  .IX Item "-msched-spec-ldc"
  Use a simple data speculation check.  This option is on by default.
! .IP "\fB\-msched\-control\-spec\-ldc\fR" 4
  .IX Item "-msched-control-spec-ldc"
  Use a simple check for control speculation.  This option is on by default.
! .IP "\fB\-msched\-stop\-bits\-after\-every\-cycle\fR" 4
  .IX Item "-msched-stop-bits-after-every-cycle"
  Place a stop bit after every cycle when scheduling.  This option is on
  by default.
! .IP "\fB\-msched\-fp\-mem\-deps\-zero\-cost\fR" 4
  .IX Item "-msched-fp-mem-deps-zero-cost"
! Assume that floating-point stores and loads are not likely to cause a conflict
  when placed into the same instruction group.  This option is disabled by
  default.
! .IP "\fB\-msel\-sched\-dont\-check\-control\-spec\fR" 4
  .IX Item "-msel-sched-dont-check-control-spec"
  Generate checks for control speculation in selective scheduling.
  This flag is disabled by default.
! .IP "\fB\-msched\-max\-memory\-insns=\fR\fImax-insns\fR" 4
  .IX Item "-msched-max-memory-insns=max-insns"
  Limit on the number of memory insns per instruction group, giving lower
  priority to subsequent memory insns attempting to schedule in the same
  instruction group. Frequently useful to prevent cache bank conflicts.
  The default value is 1.
! .IP "\fB\-msched\-max\-memory\-insns\-hard\-limit\fR" 4
  .IX Item "-msched-max-memory-insns-hard-limit"
! Makes the limit specified by \fBmsched-max-memory-insns\fR a hard limit,
  disallowing more than that number in an instruction group.
! Otherwise, the limit is \*(L"soft\*(R", meaning that non-memory operations
  are preferred when the limit is reached, but memory operations may still
  be scheduled.
  .PP
! \fI\s-1LM32\s0 Options\fR
  .IX Subsection "LM32 Options"
  .PP
  These \fB\-m\fR options are defined for the LatticeMico32 architecture:
! .IP "\fB\-mbarrel\-shift\-enabled\fR" 4
  .IX Item "-mbarrel-shift-enabled"
! Enable barrel-shift instructions.
! .IP "\fB\-mdivide\-enabled\fR" 4
  .IX Item "-mdivide-enabled"
  Enable divide and modulus instructions.
! .IP "\fB\-mmultiply\-enabled\fR" 4
  .IX Item "-mmultiply-enabled"
  Enable multiply instructions.
! .IP "\fB\-msign\-extend\-enabled\fR" 4
  .IX Item "-msign-extend-enabled"
  Enable sign extend instructions.
! .IP "\fB\-muser\-enabled\fR" 4
  .IX Item "-muser-enabled"
! Enable user-defined instructions.
  .PP
  \fILoongArch Options\fR
  .IX Subsection "LoongArch Options"
  .PP
! These command-line options are defined for LoongArch targets:
! .IP "\fB\-march=\fR\fIarch-type\fR" 4
  .IX Item "-march=arch-type"
! Generate instructions for the machine type \fIarch-type\fR.
! \&\fB\-march=\fR\fIarch-type\fR allows \s-1GCC\s0 to generate code that
  may not run at all on processors other than the one indicated.
  .Sp
! The choices for \fIarch-type\fR are:
  .RS 4
! .IP "\fBnative\fR" 4
  .IX Item "native"
  Local processor type detected by the native compiler.
! .IP "\fBloongarch64\fR" 4
  .IX Item "loongarch64"
  Generic LoongArch 64\-bit processor.
! .IP "\fBla464\fR" 4
  .IX Item "la464"
! LoongArch LA464\-based processor with \s-1LSX, LASX.\s0
! .IP "\fBla664\fR" 4
  .IX Item "la664"
! LoongArch LA664\-based processor with \s-1LSX, LASX\s0
  and all LoongArch v1.1 instructions.
! .IP "\fBla64v1.0\fR" 4
  .IX Item "la64v1.0"
! LoongArch64 \s-1ISA\s0 version 1.0.
! .IP "\fBla64v1.1\fR" 4
  .IX Item "la64v1.1"
! LoongArch64 \s-1ISA\s0 version 1.1.
  .RE
  .RS 4
  .Sp
! More information about LoongArch \s-1ISA\s0 versions can be found at
  <\fBhttps://github.com/loongson/la\-toolchain\-conventions\fR>.
  .RE
! .IP "\fB\-mtune=\fR\fItune-type\fR" 4
  .IX Item "-mtune=tune-type"
  Optimize the generated code for the given processor target.
  .Sp
! The choices for \fItune-type\fR are:
  .RS 4
! .IP "\fBnative\fR" 4
  .IX Item "native"
  Local processor type detected by the native compiler.
! .IP "\fBgeneric\fR" 4
  .IX Item "generic"
  Generic LoongArch processor.
! .IP "\fBloongarch64\fR" 4
  .IX Item "loongarch64"
  Generic LoongArch 64\-bit processor.
! .IP "\fBla464\fR" 4
  .IX Item "la464"
! LoongArch \s-1LA464\s0 core.
! .IP "\fBla664\fR" 4
  .IX Item "la664"
! LoongArch \s-1LA664\s0 core.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mabi=\fR\fIbase-abi-type\fR" 4
  .IX Item "-mabi=base-abi-type"
  Generate code for the specified calling convention.
! \&\fIbase-abi-type\fR can be one of:
  .RS 4
! .IP "\fBlp64d\fR" 4
  .IX Item "lp64d"
! Uses 64\-bit general purpose registers and 32/64\-bit floating-point
! registers for parameter passing.  Data model is \s-1LP64,\s0 where \fBint\fR
  is 32 bits, while \fBlong int\fR and pointers are 64 bits.
! .IP "\fBlp64f\fR" 4
  .IX Item "lp64f"
! Uses 64\-bit general purpose registers and 32\-bit floating-point
! registers for parameter passing.  Data model is \s-1LP64,\s0 where \fBint\fR
  is 32 bits, while \fBlong int\fR and pointers are 64 bits.
! .IP "\fBlp64s\fR" 4
  .IX Item "lp64s"
! Uses 64\-bit general purpose registers and no floating-point
! registers for parameter passing.  Data model is \s-1LP64,\s0 where \fBint\fR
  is 32 bits, while \fBlong int\fR and pointers are 64 bits.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mfpu=\fR\fIfpu-type\fR" 4
  .IX Item "-mfpu=fpu-type"
! Generate code for the specified \s-1FPU\s0 type, which can be one of:
  .RS 4
! .IP "\fB64\fR" 4
  .IX Item "64"
! Allow the use of hardware floating-point instructions for 32\-bit
  and 64\-bit operations.
! .IP "\fB32\fR" 4
  .IX Item "32"
! Allow the use of hardware floating-point instructions for 32\-bit
  operations.
! .IP "\fBnone\fR" 4
  .IX Item "none"
  .PD 0
! .IP "\fB0\fR" 4
  .IX Item "0"
  .PD
! Prevent the use of hardware floating-point instructions.
  .RE
  .RS 4
  .RE
! .IP "\fB\-msimd=\fR\fIsimd-type\fR" 4
  .IX Item "-msimd=simd-type"
! Enable generation of LoongArch \s-1SIMD\s0 instructions for vectorization
  and via builtin functions.  The value can be one of:
  .RS 4
! .IP "\fBlasx\fR" 4
  .IX Item "lasx"
  Enable generating instructions from the 256\-bit LoongArch Advanced
! \&\s-1SIMD\s0 Extension (\s-1LASX\s0) and the 128\-bit LoongArch \s-1SIMD\s0 Extension (\s-1LSX\s0).
! .IP "\fBlsx\fR" 4
  .IX Item "lsx"
! Enable generating instructions from the 128\-bit LoongArch \s-1SIMD\s0
! Extension (\s-1LSX\s0).
! .IP "\fBnone\fR" 4
  .IX Item "none"
! No LoongArch \s-1SIMD\s0 instruction may be generated.
  .RE
  .RS 4
  .RE
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
! Force \fB\-mfpu=none\fR and prevents the use of floating-point
  registers for parameter passing.  This option may change the target
! \&\s-1ABI.\s0
! .IP "\fB\-msingle\-float\fR" 4
  .IX Item "-msingle-float"
! Force \fB\-mfpu=32\fR and allow the use of 32\-bit floating-point
  registers for parameter passing.  This option may change the target
! \&\s-1ABI.\s0
! .IP "\fB\-mdouble\-float\fR" 4
  .IX Item "-mdouble-float"
! Force \fB\-mfpu=64\fR and allow the use of 32/64\-bit floating-point
  registers for parameter passing.  This option may change the target
! \&\s-1ABI.\s0
! .IP "\fB\-mlasx\fR" 4
  .IX Item "-mlasx"
  .PD 0
! .IP "\fB\-mno\-lasx\fR" 4
  .IX Item "-mno-lasx"
! .IP "\fB\-mlsx\fR" 4
  .IX Item "-mlsx"
! .IP "\fB\-mno\-lsx\fR" 4
  .IX Item "-mno-lsx"
  .PD
! Incrementally adjust the scope of the \s-1SIMD\s0 extensions (none / \s-1LSX / LASX\s0)
! that can be used by the compiler for code generation.  Enabling \s-1LASX\s0 with
! \&\fBmlasx\fR automatically enables \s-1LSX,\s0 and diabling \s-1LSX\s0 with \fBmno-lsx\fR
! automatically disables \s-1LASX.\s0  These driver-only options act upon the final
  \&\fBmsimd\fR configuration state and make incremental changes in the order
! they appear on the \s-1GCC\s0 driver's command line, deriving the final / canonicalized
  \&\fBmsimd\fR option that is passed to the compiler proper.
! .IP "\fB\-mbranch\-cost=\fR\fIn\fR" 4
  .IX Item "-mbranch-cost=n"
  Set the cost of branches to roughly \fIn\fR instructions.
! .IP "\fB\-maddr\-reg\-reg\-cost=\fR\fIn\fR" 4
  .IX Item "-maddr-reg-reg-cost=n"
! Set the cost of \s-1ADDRESS_REG_REG\s0 to the value calculated by \fIn\fR.
! .IP "\fB\-mcheck\-zero\-division\fR" 4
  .IX Item "-mcheck-zero-division"
  .PD 0
! .IP "\fB\-mno\-check\-zero\-divison\fR" 4
  .IX Item "-mno-check-zero-divison"
  .PD
  Trap (do not trap) on integer division by zero.  The default is
  \&\fB\-mcheck\-zero\-division\fR for \fB\-O0\fR or \fB\-Og\fR, and
  \&\fB\-mno\-check\-zero\-division\fR for other optimization levels.
! .IP "\fB\-mcond\-move\-int\fR" 4
  .IX Item "-mcond-move-int"
  .PD 0
! .IP "\fB\-mno\-cond\-move\-int\fR" 4
  .IX Item "-mno-cond-move-int"
  .PD
! Conditional moves for integral data in general-purpose registers
  are enabled (disabled).  The default is \fB\-mcond\-move\-int\fR.
! .IP "\fB\-mcond\-move\-float\fR" 4
  .IX Item "-mcond-move-float"
  .PD 0
! .IP "\fB\-mno\-cond\-move\-float\fR" 4
  .IX Item "-mno-cond-move-float"
  .PD
! Conditional moves for floating-point registers are enabled (disabled).
  The default is \fB\-mcond\-move\-float\fR.
! .IP "\fB\-mmemcpy\fR" 4
  .IX Item "-mmemcpy"
  .PD 0
! .IP "\fB\-mno\-memcpy\fR" 4
  .IX Item "-mno-memcpy"
  .PD
! Force (do not force) the use of \f(CW\*(C`memcpy\*(C'\fR for non-trivial block moves.
! The default is \fB\-mno\-memcpy\fR, which allows \s-1GCC\s0 to inline most
! constant-sized copies.  Setting optimization level to \fB\-Os\fR also
  forces the use of \f(CW\*(C`memcpy\*(C'\fR, but \fB\-mno\-memcpy\fR may override this
  behavior if explicitly specified, regardless of the order these options on
  the command line.
! .IP "\fB\-mstrict\-align\fR" 4
  .IX Item "-mstrict-align"
  .PD 0
! .IP "\fB\-mno\-strict\-align\fR" 4
  .IX Item "-mno-strict-align"
  .PD
  Avoid or allow generating memory accesses that may not be aligned on a natural
--- 26829,27151 ----
  This results in generation of the \f(CW\*(C`ld.s\*(C'\fR instructions and
  the corresponding check instructions \f(CW\*(C`chk.s\*(C'\fR.
  The default setting is disabled.
! .IP \fB\-msched\-br\-in\-data\-spec\fR 4
  .IX Item "-msched-br-in-data-spec"
  .PD 0
! .IP \fB\-mno\-sched\-br\-in\-data\-spec\fR 4
  .IX Item "-mno-sched-br-in-data-spec"
  .PD
  (En/Dis)able speculative scheduling of the instructions that
  are dependent on the data speculative loads before reload.
  This is effective only with \fB\-msched\-br\-data\-spec\fR enabled.
  The default setting is enabled.
! .IP \fB\-msched\-ar\-in\-data\-spec\fR 4
  .IX Item "-msched-ar-in-data-spec"
  .PD 0
! .IP \fB\-mno\-sched\-ar\-in\-data\-spec\fR 4
  .IX Item "-mno-sched-ar-in-data-spec"
  .PD
  (En/Dis)able speculative scheduling of the instructions that
  are dependent on the data speculative loads after reload.
  This is effective only with \fB\-msched\-ar\-data\-spec\fR enabled.
  The default setting is enabled.
! .IP \fB\-msched\-in\-control\-spec\fR 4
  .IX Item "-msched-in-control-spec"
  .PD 0
! .IP \fB\-mno\-sched\-in\-control\-spec\fR 4
  .IX Item "-mno-sched-in-control-spec"
  .PD
  (En/Dis)able speculative scheduling of the instructions that
  are dependent on the control speculative loads.
  This is effective only with \fB\-msched\-control\-spec\fR enabled.
  The default setting is enabled.
! .IP \fB\-mno\-sched\-prefer\-non\-data\-spec\-insns\fR 4
  .IX Item "-mno-sched-prefer-non-data-spec-insns"
  .PD 0
! .IP \fB\-msched\-prefer\-non\-data\-spec\-insns\fR 4
  .IX Item "-msched-prefer-non-data-spec-insns"
  .PD
! If enabled, data\-speculative instructions are chosen for schedule
  only if there are no other choices at the moment.  This makes
  the use of the data speculation much more conservative.
  The default setting is disabled.
! .IP \fB\-mno\-sched\-prefer\-non\-control\-spec\-insns\fR 4
  .IX Item "-mno-sched-prefer-non-control-spec-insns"
  .PD 0
! .IP \fB\-msched\-prefer\-non\-control\-spec\-insns\fR 4
  .IX Item "-msched-prefer-non-control-spec-insns"
  .PD
! If enabled, control\-speculative instructions are chosen for schedule
  only if there are no other choices at the moment.  This makes
  the use of the control speculation much more conservative.
  The default setting is disabled.
! .IP \fB\-mno\-sched\-count\-spec\-in\-critical\-path\fR 4
  .IX Item "-mno-sched-count-spec-in-critical-path"
  .PD 0
! .IP \fB\-msched\-count\-spec\-in\-critical\-path\fR 4
  .IX Item "-msched-count-spec-in-critical-path"
  .PD
  If enabled, speculative dependencies are considered during
  computation of the instructions priorities.  This makes the use of the
  speculation a bit more conservative.
  The default setting is disabled.
! .IP \fB\-msched\-spec\-ldc\fR 4
  .IX Item "-msched-spec-ldc"
  Use a simple data speculation check.  This option is on by default.
! .IP \fB\-msched\-control\-spec\-ldc\fR 4
  .IX Item "-msched-control-spec-ldc"
  Use a simple check for control speculation.  This option is on by default.
! .IP \fB\-msched\-stop\-bits\-after\-every\-cycle\fR 4
  .IX Item "-msched-stop-bits-after-every-cycle"
  Place a stop bit after every cycle when scheduling.  This option is on
  by default.
! .IP \fB\-msched\-fp\-mem\-deps\-zero\-cost\fR 4
  .IX Item "-msched-fp-mem-deps-zero-cost"
! Assume that floating\-point stores and loads are not likely to cause a conflict
  when placed into the same instruction group.  This option is disabled by
  default.
! .IP \fB\-msel\-sched\-dont\-check\-control\-spec\fR 4
  .IX Item "-msel-sched-dont-check-control-spec"
  Generate checks for control speculation in selective scheduling.
  This flag is disabled by default.
! .IP \fB\-msched\-max\-memory\-insns=\fR\fImax\-insns\fR 4
  .IX Item "-msched-max-memory-insns=max-insns"
  Limit on the number of memory insns per instruction group, giving lower
  priority to subsequent memory insns attempting to schedule in the same
  instruction group. Frequently useful to prevent cache bank conflicts.
  The default value is 1.
! .IP \fB\-msched\-max\-memory\-insns\-hard\-limit\fR 4
  .IX Item "-msched-max-memory-insns-hard-limit"
! Makes the limit specified by \fBmsched\-max\-memory\-insns\fR a hard limit,
  disallowing more than that number in an instruction group.
! Otherwise, the limit is "soft", meaning that non\-memory operations
  are preferred when the limit is reached, but memory operations may still
  be scheduled.
  .PP
! \fILM32 Options\fR
  .IX Subsection "LM32 Options"
  .PP
  These \fB\-m\fR options are defined for the LatticeMico32 architecture:
! .IP \fB\-mbarrel\-shift\-enabled\fR 4
  .IX Item "-mbarrel-shift-enabled"
! Enable barrel\-shift instructions.
! .IP \fB\-mdivide\-enabled\fR 4
  .IX Item "-mdivide-enabled"
  Enable divide and modulus instructions.
! .IP \fB\-mmultiply\-enabled\fR 4
  .IX Item "-mmultiply-enabled"
  Enable multiply instructions.
! .IP \fB\-msign\-extend\-enabled\fR 4
  .IX Item "-msign-extend-enabled"
  Enable sign extend instructions.
! .IP \fB\-muser\-enabled\fR 4
  .IX Item "-muser-enabled"
! Enable user\-defined instructions.
  .PP
  \fILoongArch Options\fR
  .IX Subsection "LoongArch Options"
  .PP
! These command\-line options are defined for LoongArch targets:
! .IP \fB\-march=\fR\fIarch\-type\fR 4
  .IX Item "-march=arch-type"
! Generate instructions for the machine type \fIarch\-type\fR.
! \&\fB\-march=\fR\fIarch\-type\fR allows GCC to generate code that
  may not run at all on processors other than the one indicated.
  .Sp
! The choices for \fIarch\-type\fR are:
  .RS 4
! .IP \fBnative\fR 4
  .IX Item "native"
  Local processor type detected by the native compiler.
! .IP \fBloongarch64\fR 4
  .IX Item "loongarch64"
  Generic LoongArch 64\-bit processor.
! .IP \fBla464\fR 4
  .IX Item "la464"
! LoongArch LA464\-based processor with LSX, LASX.
! .IP \fBla664\fR 4
  .IX Item "la664"
! LoongArch LA664\-based processor with LSX, LASX
  and all LoongArch v1.1 instructions.
! .IP \fBla64v1.0\fR 4
  .IX Item "la64v1.0"
! LoongArch64 ISA version 1.0.
! .IP \fBla64v1.1\fR 4
  .IX Item "la64v1.1"
! LoongArch64 ISA version 1.1.
  .RE
  .RS 4
  .Sp
! More information about LoongArch ISA versions can be found at
  <\fBhttps://github.com/loongson/la\-toolchain\-conventions\fR>.
  .RE
! .IP \fB\-mtune=\fR\fItune\-type\fR 4
  .IX Item "-mtune=tune-type"
  Optimize the generated code for the given processor target.
  .Sp
! The choices for \fItune\-type\fR are:
  .RS 4
! .IP \fBnative\fR 4
  .IX Item "native"
  Local processor type detected by the native compiler.
! .IP \fBgeneric\fR 4
  .IX Item "generic"
  Generic LoongArch processor.
! .IP \fBloongarch64\fR 4
  .IX Item "loongarch64"
  Generic LoongArch 64\-bit processor.
! .IP \fBla464\fR 4
  .IX Item "la464"
! LoongArch LA464 core.
! .IP \fBla664\fR 4
  .IX Item "la664"
! LoongArch LA664 core.
  .RE
  .RS 4
  .RE
! .IP \fB\-mabi=\fR\fIbase\-abi\-type\fR 4
  .IX Item "-mabi=base-abi-type"
  Generate code for the specified calling convention.
! \&\fIbase\-abi\-type\fR can be one of:
  .RS 4
! .IP \fBlp64d\fR 4
  .IX Item "lp64d"
! Uses 64\-bit general purpose registers and 32/64\-bit floating\-point
! registers for parameter passing.  Data model is LP64, where \fBint\fR
  is 32 bits, while \fBlong int\fR and pointers are 64 bits.
! .IP \fBlp64f\fR 4
  .IX Item "lp64f"
! Uses 64\-bit general purpose registers and 32\-bit floating\-point
! registers for parameter passing.  Data model is LP64, where \fBint\fR
  is 32 bits, while \fBlong int\fR and pointers are 64 bits.
! .IP \fBlp64s\fR 4
  .IX Item "lp64s"
! Uses 64\-bit general purpose registers and no floating\-point
! registers for parameter passing.  Data model is LP64, where \fBint\fR
  is 32 bits, while \fBlong int\fR and pointers are 64 bits.
  .RE
  .RS 4
  .RE
! .IP \fB\-mfpu=\fR\fIfpu\-type\fR 4
  .IX Item "-mfpu=fpu-type"
! Generate code for the specified FPU type, which can be one of:
  .RS 4
! .IP \fB64\fR 4
  .IX Item "64"
! Allow the use of hardware floating\-point instructions for 32\-bit
  and 64\-bit operations.
! .IP \fB32\fR 4
  .IX Item "32"
! Allow the use of hardware floating\-point instructions for 32\-bit
  operations.
! .IP \fBnone\fR 4
  .IX Item "none"
  .PD 0
! .IP \fB0\fR 4
  .IX Item "0"
  .PD
! Prevent the use of hardware floating\-point instructions.
  .RE
  .RS 4
  .RE
! .IP \fB\-msimd=\fR\fIsimd\-type\fR 4
  .IX Item "-msimd=simd-type"
! Enable generation of LoongArch SIMD instructions for vectorization
  and via builtin functions.  The value can be one of:
  .RS 4
! .IP \fBlasx\fR 4
  .IX Item "lasx"
  Enable generating instructions from the 256\-bit LoongArch Advanced
! SIMD Extension (LASX) and the 128\-bit LoongArch SIMD Extension (LSX).
! .IP \fBlsx\fR 4
  .IX Item "lsx"
! Enable generating instructions from the 128\-bit LoongArch SIMD
! Extension (LSX).
! .IP \fBnone\fR 4
  .IX Item "none"
! No LoongArch SIMD instruction may be generated.
  .RE
  .RS 4
  .RE
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
! Force \fB\-mfpu=none\fR and prevents the use of floating\-point
  registers for parameter passing.  This option may change the target
! ABI.
! .IP \fB\-msingle\-float\fR 4
  .IX Item "-msingle-float"
! Force \fB\-mfpu=32\fR and allow the use of 32\-bit floating\-point
  registers for parameter passing.  This option may change the target
! ABI.
! .IP \fB\-mdouble\-float\fR 4
  .IX Item "-mdouble-float"
! Force \fB\-mfpu=64\fR and allow the use of 32/64\-bit floating\-point
  registers for parameter passing.  This option may change the target
! ABI.
! .IP \fB\-mlasx\fR 4
  .IX Item "-mlasx"
  .PD 0
! .IP \fB\-mno\-lasx\fR 4
  .IX Item "-mno-lasx"
! .IP \fB\-mlsx\fR 4
  .IX Item "-mlsx"
! .IP \fB\-mno\-lsx\fR 4
  .IX Item "-mno-lsx"
  .PD
! Incrementally adjust the scope of the SIMD extensions (none / LSX / LASX)
! that can be used by the compiler for code generation.  Enabling LASX with
! \&\fBmlasx\fR automatically enables LSX, and diabling LSX with \fBmno\-lsx\fR
! automatically disables LASX.  These driver\-only options act upon the final
  \&\fBmsimd\fR configuration state and make incremental changes in the order
! they appear on the GCC driver\*(Aqs command line, deriving the final / canonicalized
  \&\fBmsimd\fR option that is passed to the compiler proper.
! .IP \fB\-mbranch\-cost=\fR\fIn\fR 4
  .IX Item "-mbranch-cost=n"
  Set the cost of branches to roughly \fIn\fR instructions.
! .IP \fB\-maddr\-reg\-reg\-cost=\fR\fIn\fR 4
  .IX Item "-maddr-reg-reg-cost=n"
! Set the cost of ADDRESS_REG_REG to the value calculated by \fIn\fR.
! .IP \fB\-mcheck\-zero\-division\fR 4
  .IX Item "-mcheck-zero-division"
  .PD 0
! .IP \fB\-mno\-check\-zero\-divison\fR 4
  .IX Item "-mno-check-zero-divison"
  .PD
  Trap (do not trap) on integer division by zero.  The default is
  \&\fB\-mcheck\-zero\-division\fR for \fB\-O0\fR or \fB\-Og\fR, and
  \&\fB\-mno\-check\-zero\-division\fR for other optimization levels.
! .IP \fB\-mcond\-move\-int\fR 4
  .IX Item "-mcond-move-int"
  .PD 0
! .IP \fB\-mno\-cond\-move\-int\fR 4
  .IX Item "-mno-cond-move-int"
  .PD
! Conditional moves for integral data in general\-purpose registers
  are enabled (disabled).  The default is \fB\-mcond\-move\-int\fR.
! .IP \fB\-mcond\-move\-float\fR 4
  .IX Item "-mcond-move-float"
  .PD 0
! .IP \fB\-mno\-cond\-move\-float\fR 4
  .IX Item "-mno-cond-move-float"
  .PD
! Conditional moves for floating\-point registers are enabled (disabled).
  The default is \fB\-mcond\-move\-float\fR.
! .IP \fB\-mmemcpy\fR 4
  .IX Item "-mmemcpy"
  .PD 0
! .IP \fB\-mno\-memcpy\fR 4
  .IX Item "-mno-memcpy"
  .PD
! Force (do not force) the use of \f(CW\*(C`memcpy\*(C'\fR for non\-trivial block moves.
! The default is \fB\-mno\-memcpy\fR, which allows GCC to inline most
! constant\-sized copies.  Setting optimization level to \fB\-Os\fR also
  forces the use of \f(CW\*(C`memcpy\*(C'\fR, but \fB\-mno\-memcpy\fR may override this
  behavior if explicitly specified, regardless of the order these options on
  the command line.
! .IP \fB\-mstrict\-align\fR 4
  .IX Item "-mstrict-align"
  .PD 0
! .IP \fB\-mno\-strict\-align\fR 4
  .IX Item "-mno-strict-align"
  .PD
  Avoid or allow generating memory accesses that may not be aligned on a natural
*************** object boundary as described in the arch
*** 27220,27250 ****
  .IX Item "-G num"
  Put global and static data smaller than \fInum\fR bytes into a small data
  section.  The default value is 0.
! .IP "\fB\-mmax\-inline\-memcpy\-size=\fR\fIn\fR" 4
  .IX Item "-mmax-inline-memcpy-size=n"
  Inline all block moves (such as calls to \f(CW\*(C`memcpy\*(C'\fR or structure copies)
  less than or equal to \fIn\fR bytes.  The default value of \fIn\fR is 1024.
! .IP "\fB\-mcmodel=\fR\fIcode-model\fR" 4
  .IX Item "-mcmodel=code-model"
  Set the code model to one of:
  .RS 4
! .IP "\fBtiny-static (Not implemented yet)\fR" 4
  .IX Item "tiny-static (Not implemented yet)"
  .PD 0
  .IP "\fBtiny (Not implemented yet)\fR" 4
  .IX Item "tiny (Not implemented yet)"
! .IP "\fBnormal\fR" 4
  .IX Item "normal"
  .PD
  The text segment must be within 128MB addressing space.  The data segment must
  be within 2GB addressing space.
! .IP "\fBmedium\fR" 4
  .IX Item "medium"
  The text segment and data segment must be within 2GB addressing space.
  .IP "\fBlarge (Not implemented yet)\fR" 4
  .IX Item "large (Not implemented yet)"
  .PD 0
! .IP "\fBextreme\fR" 4
  .IX Item "extreme"
  .PD
  This mode does not limit the size of the code segment and data segment.
--- 27155,27185 ----
  .IX Item "-G num"
  Put global and static data smaller than \fInum\fR bytes into a small data
  section.  The default value is 0.
! .IP \fB\-mmax\-inline\-memcpy\-size=\fR\fIn\fR 4
  .IX Item "-mmax-inline-memcpy-size=n"
  Inline all block moves (such as calls to \f(CW\*(C`memcpy\*(C'\fR or structure copies)
  less than or equal to \fIn\fR bytes.  The default value of \fIn\fR is 1024.
! .IP \fB\-mcmodel=\fR\fIcode\-model\fR 4
  .IX Item "-mcmodel=code-model"
  Set the code model to one of:
  .RS 4
! .IP "\fBtiny\-static (Not implemented yet)\fR" 4
  .IX Item "tiny-static (Not implemented yet)"
  .PD 0
  .IP "\fBtiny (Not implemented yet)\fR" 4
  .IX Item "tiny (Not implemented yet)"
! .IP \fBnormal\fR 4
  .IX Item "normal"
  .PD
  The text segment must be within 128MB addressing space.  The data segment must
  be within 2GB addressing space.
! .IP \fBmedium\fR 4
  .IX Item "medium"
  The text segment and data segment must be within 2GB addressing space.
  .IP "\fBlarge (Not implemented yet)\fR" 4
  .IX Item "large (Not implemented yet)"
  .PD 0
! .IP \fBextreme\fR 4
  .IX Item "extreme"
  .PD
  This mode does not limit the size of the code segment and data segment.
*************** and/or \fB\-mexplicit\-relocs=none\fR.
*** 27255,27261 ****
  .Sp
  The default code model is \f(CW\*(C`normal\*(C'\fR.
  .RE
! .IP "\fB\-mexplicit\-relocs=\fR\fIstyle\fR" 4
  .IX Item "-mexplicit-relocs=style"
  Set when to use assembler relocation operators when dealing with symbolic
  addresses.  The alternative is to use assembler macros instead, which may
--- 27190,27196 ----
  .Sp
  The default code model is \f(CW\*(C`normal\*(C'\fR.
  .RE
! .IP \fB\-mexplicit\-relocs=\fR\fIstyle\fR 4
  .IX Item "-mexplicit-relocs=style"
  Set when to use assembler relocation operators when dealing with symbolic
  addresses.  The alternative is to use assembler macros instead, which may
*************** are always used, with \fB\-mexplicit\-re
*** 27266,27373 ****
  use the relocation operators where the linker relaxation is impossible to
  improve the code quality, and macros elsewhere.  The default
  value for the option is determined with the assembler capability detected
! during \s-1GCC\s0 build-time and the setting of \fB\-mrelax\fR:
  \&\fB\-mexplicit\-relocs=none\fR if the assembler does not support
  relocation operators at all,
  \&\fB\-mexplicit\-relocs=always\fR if the assembler supports relocation
  operators but \fB\-mrelax\fR is not enabled,
  \&\fB\-mexplicit\-relocs=auto\fR if the assembler supports relocation
  operators and \fB\-mrelax\fR is enabled.
! .IP "\fB\-mexplicit\-relocs\fR" 4
  .IX Item "-mexplicit-relocs"
  An alias of \fB\-mexplicit\-relocs=always\fR for backward compatibility.
! .IP "\fB\-mno\-explicit\-relocs\fR" 4
  .IX Item "-mno-explicit-relocs"
  An alias of \fB\-mexplicit\-relocs=none\fR for backward compatibility.
! .IP "\fB\-mdirect\-extern\-access\fR" 4
  .IX Item "-mdirect-extern-access"
  .PD 0
! .IP "\fB\-mno\-direct\-extern\-access\fR" 4
  .IX Item "-mno-direct-extern-access"
  .PD
! Do not use or use \s-1GOT\s0 to access external symbols.  The default is
! \&\fB\-mno\-direct\-extern\-access\fR: \s-1GOT\s0 is used for external symbols with
  default visibility, but not used for other external symbols.
  .Sp
! With \fB\-mdirect\-extern\-access\fR, \s-1GOT\s0 is not used and all external
! symbols are PC-relatively addressed.  It is \fBonly\fR suitable for
! environments where no dynamic link is performed, like firmwares, \s-1OS\s0
  kernels, executables linked with \fB\-static\fR or \fB\-static\-pie\fR.
  \&\fB\-mdirect\-extern\-access\fR is not compatible with \fB\-fPIC\fR or
  \&\fB\-fpic\fR.
! .IP "\fB\-mrelax\fR" 4
  .IX Item "-mrelax"
  .PD 0
! .IP "\fB\-mno\-relax\fR" 4
  .IX Item "-mno-relax"
  .PD
  Take (do not take) advantage of linker relaxations.  If
  \&\fB\-mpass\-mrelax\-to\-as\fR is enabled, this option is also passed to
! the assembler.  The default is determined during \s-1GCC\s0 build-time by
  detecting corresponding assembler support:
  \&\fB\-mrelax\fR if the assembler supports both the \fB\-mrelax\fR
! option and the conditional branch relaxation (it's required or the
  \&\f(CW\*(C`.align\*(C'\fR directives and conditional branch instructions in the
! assembly code outputted by \s-1GCC\s0 may be rejected by the assembler because
  of a relocation overflow), \fB\-mno\-relax\fR otherwise.
! .IP "\fB\-mpass\-mrelax\-to\-as\fR" 4
  .IX Item "-mpass-mrelax-to-as"
  .PD 0
! .IP "\fB\-mno\-pass\-mrelax\-to\-as\fR" 4
  .IX Item "-mno-pass-mrelax-to-as"
  .PD
  Pass (do not pass) the \fB\-mrelax\fR or \fB\-mno\-relax\fR option
! to the assembler.  The default is determined during \s-1GCC\s0 build-time by
  detecting corresponding assembler support:
  \&\fB\-mpass\-mrelax\-to\-as\fR if the assembler supports the
  \&\fB\-mrelax\fR option, \fB\-mno\-pass\-mrelax\-to\-as\fR otherwise.
  This option is mostly useful for debugging, or interoperation with
! assemblers different from the build-time one.
! .IP "\fB\-mrecip\fR" 4
  .IX Item "-mrecip"
  This option enables use of the reciprocal estimate and reciprocal square
! root estimate instructions with additional Newton-Raphson steps to increase
  precision instead of doing a divide or square root and divide for
! floating-point arguments.
  These instructions are generated only when \fB\-funsafe\-math\-optimizations\fR
  is enabled together with \fB\-ffinite\-math\-only\fR and
  \&\fB\-fno\-trapping\-math\fR.
  This option is off by default. Before you can use this option, you must sure the
! target \s-1CPU\s0 supports frecipe and frsqrte instructions.
  Note that while the throughput of the sequence is higher than the throughput of
! the non-reciprocal instruction, the precision of the sequence can be decreased
  by up to 2 ulp (i.e. the inverse of 1.0 equals 0.99999994).
! .IP "\fB\-mrecip=\fR\fIopt\fR" 4
  .IX Item "-mrecip=opt"
  This option controls which reciprocal estimate instructions
! may be used.  \fIopt\fR is a comma-separated list of options, which may
  be preceded by a \fB!\fR to invert the option:
  .RS 4
! .IP "\fBall\fR" 4
  .IX Item "all"
  Enable all estimate instructions.
! .IP "\fBdefault\fR" 4
  .IX Item "default"
  Enable the default instructions, equivalent to \fB\-mrecip\fR.
! .IP "\fBnone\fR" 4
  .IX Item "none"
  Disable all estimate instructions, equivalent to \fB\-mno\-recip\fR.
! .IP "\fBdiv\fR" 4
  .IX Item "div"
  Enable the approximation for scalar division.
! .IP "\fBvec-div\fR" 4
  .IX Item "vec-div"
  Enable the approximation for vectorized division.
! .IP "\fBsqrt\fR" 4
  .IX Item "sqrt"
  Enable the approximation for scalar square root.
! .IP "\fBvec-sqrt\fR" 4
  .IX Item "vec-sqrt"
  Enable the approximation for vectorized square root.
! .IP "\fBrsqrt\fR" 4
  .IX Item "rsqrt"
  Enable the approximation for scalar reciprocal square root.
! .IP "\fBvec-rsqrt\fR" 4
  .IX Item "vec-rsqrt"
  Enable the approximation for vectorized reciprocal square root.
  .RE
--- 27201,27308 ----
  use the relocation operators where the linker relaxation is impossible to
  improve the code quality, and macros elsewhere.  The default
  value for the option is determined with the assembler capability detected
! during GCC build\-time and the setting of \fB\-mrelax\fR:
  \&\fB\-mexplicit\-relocs=none\fR if the assembler does not support
  relocation operators at all,
  \&\fB\-mexplicit\-relocs=always\fR if the assembler supports relocation
  operators but \fB\-mrelax\fR is not enabled,
  \&\fB\-mexplicit\-relocs=auto\fR if the assembler supports relocation
  operators and \fB\-mrelax\fR is enabled.
! .IP \fB\-mexplicit\-relocs\fR 4
  .IX Item "-mexplicit-relocs"
  An alias of \fB\-mexplicit\-relocs=always\fR for backward compatibility.
! .IP \fB\-mno\-explicit\-relocs\fR 4
  .IX Item "-mno-explicit-relocs"
  An alias of \fB\-mexplicit\-relocs=none\fR for backward compatibility.
! .IP \fB\-mdirect\-extern\-access\fR 4
  .IX Item "-mdirect-extern-access"
  .PD 0
! .IP \fB\-mno\-direct\-extern\-access\fR 4
  .IX Item "-mno-direct-extern-access"
  .PD
! Do not use or use GOT to access external symbols.  The default is
! \&\fB\-mno\-direct\-extern\-access\fR: GOT is used for external symbols with
  default visibility, but not used for other external symbols.
  .Sp
! With \fB\-mdirect\-extern\-access\fR, GOT is not used and all external
! symbols are PC\-relatively addressed.  It is \fBonly\fR suitable for
! environments where no dynamic link is performed, like firmwares, OS
  kernels, executables linked with \fB\-static\fR or \fB\-static\-pie\fR.
  \&\fB\-mdirect\-extern\-access\fR is not compatible with \fB\-fPIC\fR or
  \&\fB\-fpic\fR.
! .IP \fB\-mrelax\fR 4
  .IX Item "-mrelax"
  .PD 0
! .IP \fB\-mno\-relax\fR 4
  .IX Item "-mno-relax"
  .PD
  Take (do not take) advantage of linker relaxations.  If
  \&\fB\-mpass\-mrelax\-to\-as\fR is enabled, this option is also passed to
! the assembler.  The default is determined during GCC build\-time by
  detecting corresponding assembler support:
  \&\fB\-mrelax\fR if the assembler supports both the \fB\-mrelax\fR
! option and the conditional branch relaxation (it\*(Aqs required or the
  \&\f(CW\*(C`.align\*(C'\fR directives and conditional branch instructions in the
! assembly code outputted by GCC may be rejected by the assembler because
  of a relocation overflow), \fB\-mno\-relax\fR otherwise.
! .IP \fB\-mpass\-mrelax\-to\-as\fR 4
  .IX Item "-mpass-mrelax-to-as"
  .PD 0
! .IP \fB\-mno\-pass\-mrelax\-to\-as\fR 4
  .IX Item "-mno-pass-mrelax-to-as"
  .PD
  Pass (do not pass) the \fB\-mrelax\fR or \fB\-mno\-relax\fR option
! to the assembler.  The default is determined during GCC build\-time by
  detecting corresponding assembler support:
  \&\fB\-mpass\-mrelax\-to\-as\fR if the assembler supports the
  \&\fB\-mrelax\fR option, \fB\-mno\-pass\-mrelax\-to\-as\fR otherwise.
  This option is mostly useful for debugging, or interoperation with
! assemblers different from the build\-time one.
! .IP \fB\-mrecip\fR 4
  .IX Item "-mrecip"
  This option enables use of the reciprocal estimate and reciprocal square
! root estimate instructions with additional Newton\-Raphson steps to increase
  precision instead of doing a divide or square root and divide for
! floating\-point arguments.
  These instructions are generated only when \fB\-funsafe\-math\-optimizations\fR
  is enabled together with \fB\-ffinite\-math\-only\fR and
  \&\fB\-fno\-trapping\-math\fR.
  This option is off by default. Before you can use this option, you must sure the
! target CPU supports frecipe and frsqrte instructions.
  Note that while the throughput of the sequence is higher than the throughput of
! the non\-reciprocal instruction, the precision of the sequence can be decreased
  by up to 2 ulp (i.e. the inverse of 1.0 equals 0.99999994).
! .IP \fB\-mrecip=\fR\fIopt\fR 4
  .IX Item "-mrecip=opt"
  This option controls which reciprocal estimate instructions
! may be used.  \fIopt\fR is a comma\-separated list of options, which may
  be preceded by a \fB!\fR to invert the option:
  .RS 4
! .IP \fBall\fR 4
  .IX Item "all"
  Enable all estimate instructions.
! .IP \fBdefault\fR 4
  .IX Item "default"
  Enable the default instructions, equivalent to \fB\-mrecip\fR.
! .IP \fBnone\fR 4
  .IX Item "none"
  Disable all estimate instructions, equivalent to \fB\-mno\-recip\fR.
! .IP \fBdiv\fR 4
  .IX Item "div"
  Enable the approximation for scalar division.
! .IP \fBvec\-div\fR 4
  .IX Item "vec-div"
  Enable the approximation for vectorized division.
! .IP \fBsqrt\fR 4
  .IX Item "sqrt"
  Enable the approximation for scalar square root.
! .IP \fBvec\-sqrt\fR 4
  .IX Item "vec-sqrt"
  Enable the approximation for vectorized square root.
! .IP \fBrsqrt\fR 4
  .IX Item "rsqrt"
  Enable the approximation for scalar reciprocal square root.
! .IP \fBvec\-rsqrt\fR 4
  .IX Item "vec-rsqrt"
  Enable the approximation for vectorized reciprocal square root.
  .RE
*************** Enable the approximation for vectorized
*** 27376,27444 ****
  So, for example, \fB\-mrecip=all,!sqrt\fR enables
  all of the reciprocal approximations, except for scalar square root.
  .RE
! .IP "\fB\-mfrecipe\fR" 4
  .IX Item "-mfrecipe"
  .PD 0
! .IP "\fB\-mno\-frecipe\fR" 4
  .IX Item "-mno-frecipe"
  .PD
  Use (do not use) \f(CW\*(C`frecipe.{s/d}\*(C'\fR and \f(CW\*(C`frsqrte.{s/d}\*(C'\fR
  instructions.  When build with \fB\-march=la664\fR, it is enabled by default.
  The default is \fB\-mno\-frecipe\fR.
! .IP "\fB\-mdiv32\fR" 4
  .IX Item "-mdiv32"
  .PD 0
! .IP "\fB\-mno\-div32\fR" 4
  .IX Item "-mno-div32"
  .PD
  Use (do not use) \f(CW\*(C`div.w[u]\*(C'\fR and \f(CW\*(C`mod.w[u]\*(C'\fR instructions with input
! not sign-extended.  When build with \fB\-march=la664\fR, it is enabled by
  default.  The default is \fB\-mno\-div32\fR.
! .IP "\fB\-mlam\-bh\fR" 4
  .IX Item "-mlam-bh"
  .PD 0
! .IP "\fB\-mno\-lam\-bh\fR" 4
  .IX Item "-mno-lam-bh"
  .PD
  Use (do not use) \f(CW\*(C`am{swap/add}[_db].{b/h}\*(C'\fR instructions.  When build
  with \fB\-march=la664\fR, it is enabled by default.  The default is
  \&\fB\-mno\-lam\-bh\fR.
! .IP "\fB\-mlamcas\fR" 4
  .IX Item "-mlamcas"
  .PD 0
! .IP "\fB\-mno\-lamcas\fR" 4
  .IX Item "-mno-lamcas"
  .PD
  Use (do not use) \f(CW\*(C`amcas[_db].{b/h/w/d}\*(C'\fR instructions.  When build with
  \&\fB\-march=la664\fR, it is enabled by default.  The default is
  \&\fB\-mno\-lamcas\fR.
! .IP "\fB\-mld\-seq\-sa\fR" 4
  .IX Item "-mld-seq-sa"
  .PD 0
! .IP "\fB\-mno\-ld\-seq\-sa\fR" 4
  .IX Item "-mno-ld-seq-sa"
  .PD
! Whether a same-address load-load barrier (\f(CW\*(C`dbar 0x700\*(C'\fR) is needed.  When
  build with \fB\-march=la664\fR, it is enabled by default.  The default is
! \&\fB\-mno\-ld\-seq\-sa\fR, the load-load barrier is needed.
! .IP "\fB\-mtls\-dialect=\fR\fIopt\fR" 4
  .IX Item "-mtls-dialect=opt"
  This option controls which tls dialect may be used for general dynamic and
! local dynamic \s-1TLS\s0 models.
  .RS 4
! .IP "\fBtrad\fR" 4
  .IX Item "trad"
! Use traditional \s-1TLS.\s0 This is the default.
! .IP "\fBdesc\fR" 4
  .IX Item "desc"
! Use \s-1TLS\s0 descriptors.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mannotate\-tablejump\fR" 4
  .IX Item "-mannotate-tablejump"
  .PD 0
! .IP "\fB\-mno\-annotate\-tablejump\fR" 4
  .IX Item "-mno-annotate-tablejump"
  .PD
  Create an annotation section \f(CW\*(C`.discard.tablejump_annotate\*(C'\fR to
--- 27311,27379 ----
  So, for example, \fB\-mrecip=all,!sqrt\fR enables
  all of the reciprocal approximations, except for scalar square root.
  .RE
! .IP \fB\-mfrecipe\fR 4
  .IX Item "-mfrecipe"
  .PD 0
! .IP \fB\-mno\-frecipe\fR 4
  .IX Item "-mno-frecipe"
  .PD
  Use (do not use) \f(CW\*(C`frecipe.{s/d}\*(C'\fR and \f(CW\*(C`frsqrte.{s/d}\*(C'\fR
  instructions.  When build with \fB\-march=la664\fR, it is enabled by default.
  The default is \fB\-mno\-frecipe\fR.
! .IP \fB\-mdiv32\fR 4
  .IX Item "-mdiv32"
  .PD 0
! .IP \fB\-mno\-div32\fR 4
  .IX Item "-mno-div32"
  .PD
  Use (do not use) \f(CW\*(C`div.w[u]\*(C'\fR and \f(CW\*(C`mod.w[u]\*(C'\fR instructions with input
! not sign\-extended.  When build with \fB\-march=la664\fR, it is enabled by
  default.  The default is \fB\-mno\-div32\fR.
! .IP \fB\-mlam\-bh\fR 4
  .IX Item "-mlam-bh"
  .PD 0
! .IP \fB\-mno\-lam\-bh\fR 4
  .IX Item "-mno-lam-bh"
  .PD
  Use (do not use) \f(CW\*(C`am{swap/add}[_db].{b/h}\*(C'\fR instructions.  When build
  with \fB\-march=la664\fR, it is enabled by default.  The default is
  \&\fB\-mno\-lam\-bh\fR.
! .IP \fB\-mlamcas\fR 4
  .IX Item "-mlamcas"
  .PD 0
! .IP \fB\-mno\-lamcas\fR 4
  .IX Item "-mno-lamcas"
  .PD
  Use (do not use) \f(CW\*(C`amcas[_db].{b/h/w/d}\*(C'\fR instructions.  When build with
  \&\fB\-march=la664\fR, it is enabled by default.  The default is
  \&\fB\-mno\-lamcas\fR.
! .IP \fB\-mld\-seq\-sa\fR 4
  .IX Item "-mld-seq-sa"
  .PD 0
! .IP \fB\-mno\-ld\-seq\-sa\fR 4
  .IX Item "-mno-ld-seq-sa"
  .PD
! Whether a same\-address load\-load barrier (\f(CW\*(C`dbar 0x700\*(C'\fR) is needed.  When
  build with \fB\-march=la664\fR, it is enabled by default.  The default is
! \&\fB\-mno\-ld\-seq\-sa\fR, the load\-load barrier is needed.
! .IP \fB\-mtls\-dialect=\fR\fIopt\fR 4
  .IX Item "-mtls-dialect=opt"
  This option controls which tls dialect may be used for general dynamic and
! local dynamic TLS models.
  .RS 4
! .IP \fBtrad\fR 4
  .IX Item "trad"
! Use traditional TLS. This is the default.
! .IP \fBdesc\fR 4
  .IX Item "desc"
! Use TLS descriptors.
  .RE
  .RS 4
  .RE
! .IP \fB\-mannotate\-tablejump\fR 4
  .IX Item "-mannotate-tablejump"
  .PD 0
! .IP \fB\-mno\-annotate\-tablejump\fR 4
  .IX Item "-mno-annotate-tablejump"
  .PD
  Create an annotation section \f(CW\*(C`.discard.tablejump_annotate\*(C'\fR to
*************** need the annotation to analysis the cont
*** 27451,27498 ****
  .IX Item "--param loongarch-vect-unroll-limit=n"
  The vectorizer will use available tuning information to determine whether it
  would be beneficial to unroll the main vectorized loop and by how much.  This
! parameter set's the upper bound of how much the vectorizer will unroll the main
  loop.  The default value is six.
  .PP
  \fIM32C Options\fR
  .IX Subsection "M32C Options"
! .IP "\fB\-mcpu=\fR\fIname\fR" 4
  .IX Item "-mcpu=name"
! Select the \s-1CPU\s0 for which code is generated.  \fIname\fR may be one of
  \&\fBr8c\fR for the R8C/Tiny series, \fBm16c\fR for the M16C (up to
  /60) series, \fBm32cm\fR for the M16C/80 series, or \fBm32c\fR for
  the M32C/80 series.
! .IP "\fB\-msim\fR" 4
  .IX Item "-msim"
  Specifies that the program will be run on the simulator.  This causes
  an alternate runtime library to be linked in which supports, for
  example, file I/O.  You must not use this option when generating
  programs that will run on real hardware; you must provide your own
  runtime library for whatever I/O functions are needed.
! .IP "\fB\-memregs=\fR\fInumber\fR" 4
  .IX Item "-memregs=number"
! Specifies the number of memory-based pseudo-registers \s-1GCC\s0 uses
! during code generation.  These pseudo-registers are used like real
! registers, so there is a tradeoff between \s-1GCC\s0's ability to fit the
  code into available registers, and the performance penalty of using
  memory instead of registers.  Note that all modules in a program must
  be compiled with the same value for this option.  Because of that, you
! must not use this option with \s-1GCC\s0's default runtime libraries.
  .PP
  \fIM32R/D Options\fR
  .IX Subsection "M32R/D Options"
  .PP
  These \fB\-m\fR options are defined for Renesas M32R/D architectures:
! .IP "\fB\-m32r2\fR" 4
  .IX Item "-m32r2"
  Generate code for the M32R/2.
! .IP "\fB\-m32rx\fR" 4
  .IX Item "-m32rx"
  Generate code for the M32R/X.
! .IP "\fB\-m32r\fR" 4
  .IX Item "-m32r"
  Generate code for the M32R.  This is the default.
! .IP "\fB\-mmodel=small\fR" 4
  .IX Item "-mmodel=small"
  Assume all objects live in the lower 16MB of memory (so that their addresses
  can be loaded with the \f(CW\*(C`ld24\*(C'\fR instruction), and assume all subroutines
--- 27386,27433 ----
  .IX Item "--param loongarch-vect-unroll-limit=n"
  The vectorizer will use available tuning information to determine whether it
  would be beneficial to unroll the main vectorized loop and by how much.  This
! parameter set\*(Aqs the upper bound of how much the vectorizer will unroll the main
  loop.  The default value is six.
  .PP
  \fIM32C Options\fR
  .IX Subsection "M32C Options"
! .IP \fB\-mcpu=\fR\fIname\fR 4
  .IX Item "-mcpu=name"
! Select the CPU for which code is generated.  \fIname\fR may be one of
  \&\fBr8c\fR for the R8C/Tiny series, \fBm16c\fR for the M16C (up to
  /60) series, \fBm32cm\fR for the M16C/80 series, or \fBm32c\fR for
  the M32C/80 series.
! .IP \fB\-msim\fR 4
  .IX Item "-msim"
  Specifies that the program will be run on the simulator.  This causes
  an alternate runtime library to be linked in which supports, for
  example, file I/O.  You must not use this option when generating
  programs that will run on real hardware; you must provide your own
  runtime library for whatever I/O functions are needed.
! .IP \fB\-memregs=\fR\fInumber\fR 4
  .IX Item "-memregs=number"
! Specifies the number of memory\-based pseudo\-registers GCC uses
! during code generation.  These pseudo\-registers are used like real
! registers, so there is a tradeoff between GCC\*(Aqs ability to fit the
  code into available registers, and the performance penalty of using
  memory instead of registers.  Note that all modules in a program must
  be compiled with the same value for this option.  Because of that, you
! must not use this option with GCC\*(Aqs default runtime libraries.
  .PP
  \fIM32R/D Options\fR
  .IX Subsection "M32R/D Options"
  .PP
  These \fB\-m\fR options are defined for Renesas M32R/D architectures:
! .IP \fB\-m32r2\fR 4
  .IX Item "-m32r2"
  Generate code for the M32R/2.
! .IP \fB\-m32rx\fR 4
  .IX Item "-m32rx"
  Generate code for the M32R/X.
! .IP \fB\-m32r\fR 4
  .IX Item "-m32r"
  Generate code for the M32R.  This is the default.
! .IP \fB\-mmodel=small\fR 4
  .IX Item "-mmodel=small"
  Assume all objects live in the lower 16MB of memory (so that their addresses
  can be loaded with the \f(CW\*(C`ld24\*(C'\fR instruction), and assume all subroutines
*************** This is the default.
*** 27501,27519 ****
  .Sp
  The addressability of a particular object can be set with the
  \&\f(CW\*(C`model\*(C'\fR attribute.
! .IP "\fB\-mmodel=medium\fR" 4
  .IX Item "-mmodel=medium"
  Assume objects may be anywhere in the 32\-bit address space (the compiler
  generates \f(CW\*(C`seth/add3\*(C'\fR instructions to load their addresses), and
  assume all subroutines are reachable with the \f(CW\*(C`bl\*(C'\fR instruction.
! .IP "\fB\-mmodel=large\fR" 4
  .IX Item "-mmodel=large"
  Assume objects may be anywhere in the 32\-bit address space (the compiler
  generates \f(CW\*(C`seth/add3\*(C'\fR instructions to load their addresses), and
  assume subroutines may not be reachable with the \f(CW\*(C`bl\*(C'\fR instruction
  (the compiler generates the much slower \f(CW\*(C`seth/add3/jl\*(C'\fR
  instruction sequence).
! .IP "\fB\-msdata=none\fR" 4
  .IX Item "-msdata=none"
  Disable use of the small data area.  Variables are put into
  one of \f(CW\*(C`.data\*(C'\fR, \f(CW\*(C`.bss\*(C'\fR, or \f(CW\*(C`.rodata\*(C'\fR (unless the
--- 27436,27454 ----
  .Sp
  The addressability of a particular object can be set with the
  \&\f(CW\*(C`model\*(C'\fR attribute.
! .IP \fB\-mmodel=medium\fR 4
  .IX Item "-mmodel=medium"
  Assume objects may be anywhere in the 32\-bit address space (the compiler
  generates \f(CW\*(C`seth/add3\*(C'\fR instructions to load their addresses), and
  assume all subroutines are reachable with the \f(CW\*(C`bl\*(C'\fR instruction.
! .IP \fB\-mmodel=large\fR 4
  .IX Item "-mmodel=large"
  Assume objects may be anywhere in the 32\-bit address space (the compiler
  generates \f(CW\*(C`seth/add3\*(C'\fR instructions to load their addresses), and
  assume subroutines may not be reachable with the \f(CW\*(C`bl\*(C'\fR instruction
  (the compiler generates the much slower \f(CW\*(C`seth/add3/jl\*(C'\fR
  instruction sequence).
! .IP \fB\-msdata=none\fR 4
  .IX Item "-msdata=none"
  Disable use of the small data area.  Variables are put into
  one of \f(CW\*(C`.data\*(C'\fR, \f(CW\*(C`.bss\*(C'\fR, or \f(CW\*(C`.rodata\*(C'\fR (unless the
*************** This is the default.
*** 27523,27581 ****
  The small data area consists of sections \f(CW\*(C`.sdata\*(C'\fR and \f(CW\*(C`.sbss\*(C'\fR.
  Objects may be explicitly put in the small data area with the
  \&\f(CW\*(C`section\*(C'\fR attribute using one of these sections.
! .IP "\fB\-msdata=sdata\fR" 4
  .IX Item "-msdata=sdata"
  Put small global and static data in the small data area, but do not
  generate special code to reference them.
! .IP "\fB\-msdata=use\fR" 4
  .IX Item "-msdata=use"
  Put small global and static data in the small data area, and generate
  special instructions to reference them.
  .IP "\fB\-G\fR \fInum\fR" 4
  .IX Item "-G num"
  Put global and static objects less than or equal to \fInum\fR bytes
! into the small data or \s-1BSS\s0 sections instead of the normal data or \s-1BSS\s0
  sections.  The default value of \fInum\fR is 8.
  The \fB\-msdata\fR option must be set to one of \fBsdata\fR or \fBuse\fR
  for this option to have any effect.
  .Sp
  All modules should be compiled with the same \fB\-G\fR \fInum\fR value.
  Compiling with different values of \fInum\fR may or may not work; if it
! doesn't the linker gives an error message\-\-\-incorrect code is not
  generated.
! .IP "\fB\-mdebug\fR" 4
  .IX Item "-mdebug"
  Makes the M32R\-specific code in the compiler display some statistics
  that might help in debugging programs.
! .IP "\fB\-malign\-loops\fR" 4
  .IX Item "-malign-loops"
  Align all loops to a 32\-byte boundary.
! .IP "\fB\-mno\-align\-loops\fR" 4
  .IX Item "-mno-align-loops"
  Do not enforce a 32\-byte alignment for loops.  This is the default.
! .IP "\fB\-missue\-rate=\fR\fInumber\fR" 4
  .IX Item "-missue-rate=number"
  Issue \fInumber\fR instructions per cycle.  \fInumber\fR can only be 1
  or 2.
! .IP "\fB\-mbranch\-cost=\fR\fInumber\fR" 4
  .IX Item "-mbranch-cost=number"
  \&\fInumber\fR can only be 1 or 2.  If it is 1 then branches are
  preferred over conditional code, if it is 2, then the opposite applies.
! .IP "\fB\-mflush\-trap=\fR\fInumber\fR" 4
  .IX Item "-mflush-trap=number"
  Specifies the trap number to use to flush the cache.  The default is
  12.  Valid numbers are between 0 and 15 inclusive.
! .IP "\fB\-mno\-flush\-trap\fR" 4
  .IX Item "-mno-flush-trap"
  Specifies that the cache cannot be flushed by using a trap.
! .IP "\fB\-mflush\-func=\fR\fIname\fR" 4
  .IX Item "-mflush-func=name"
  Specifies the name of the operating system function to call to flush
  the cache.  The default is \fB_flush_cache\fR, but a function call
  is only used if a trap is not available.
! .IP "\fB\-mno\-flush\-func\fR" 4
  .IX Item "-mno-flush-func"
! Indicates that there is no \s-1OS\s0 function for flushing the cache.
  .PP
  \fIM680x0 Options\fR
  .IX Subsection "M680x0 Options"
--- 27458,27516 ----
  The small data area consists of sections \f(CW\*(C`.sdata\*(C'\fR and \f(CW\*(C`.sbss\*(C'\fR.
  Objects may be explicitly put in the small data area with the
  \&\f(CW\*(C`section\*(C'\fR attribute using one of these sections.
! .IP \fB\-msdata=sdata\fR 4
  .IX Item "-msdata=sdata"
  Put small global and static data in the small data area, but do not
  generate special code to reference them.
! .IP \fB\-msdata=use\fR 4
  .IX Item "-msdata=use"
  Put small global and static data in the small data area, and generate
  special instructions to reference them.
  .IP "\fB\-G\fR \fInum\fR" 4
  .IX Item "-G num"
  Put global and static objects less than or equal to \fInum\fR bytes
! into the small data or BSS sections instead of the normal data or BSS
  sections.  The default value of \fInum\fR is 8.
  The \fB\-msdata\fR option must be set to one of \fBsdata\fR or \fBuse\fR
  for this option to have any effect.
  .Sp
  All modules should be compiled with the same \fB\-G\fR \fInum\fR value.
  Compiling with different values of \fInum\fR may or may not work; if it
! doesn\*(Aqt the linker gives an error message\-\-\-incorrect code is not
  generated.
! .IP \fB\-mdebug\fR 4
  .IX Item "-mdebug"
  Makes the M32R\-specific code in the compiler display some statistics
  that might help in debugging programs.
! .IP \fB\-malign\-loops\fR 4
  .IX Item "-malign-loops"
  Align all loops to a 32\-byte boundary.
! .IP \fB\-mno\-align\-loops\fR 4
  .IX Item "-mno-align-loops"
  Do not enforce a 32\-byte alignment for loops.  This is the default.
! .IP \fB\-missue\-rate=\fR\fInumber\fR 4
  .IX Item "-missue-rate=number"
  Issue \fInumber\fR instructions per cycle.  \fInumber\fR can only be 1
  or 2.
! .IP \fB\-mbranch\-cost=\fR\fInumber\fR 4
  .IX Item "-mbranch-cost=number"
  \&\fInumber\fR can only be 1 or 2.  If it is 1 then branches are
  preferred over conditional code, if it is 2, then the opposite applies.
! .IP \fB\-mflush\-trap=\fR\fInumber\fR 4
  .IX Item "-mflush-trap=number"
  Specifies the trap number to use to flush the cache.  The default is
  12.  Valid numbers are between 0 and 15 inclusive.
! .IP \fB\-mno\-flush\-trap\fR 4
  .IX Item "-mno-flush-trap"
  Specifies that the cache cannot be flushed by using a trap.
! .IP \fB\-mflush\-func=\fR\fIname\fR 4
  .IX Item "-mflush-func=name"
  Specifies the name of the operating system function to call to flush
  the cache.  The default is \fB_flush_cache\fR, but a function call
  is only used if a trap is not available.
! .IP \fB\-mno\-flush\-func\fR 4
  .IX Item "-mno-flush-func"
! Indicates that there is no OS function for flushing the cache.
  .PP
  \fIM680x0 Options\fR
  .IX Subsection "M680x0 Options"
*************** These are the \fB\-m\fR options defined
*** 27584,27607 ****
  The default settings depend on which architecture was selected when
  the compiler was configured; the defaults for the most common choices
  are given below.
! .IP "\fB\-march=\fR\fIarch\fR" 4
  .IX Item "-march=arch"
  Generate code for a specific M680x0 or ColdFire instruction set
  architecture.  Permissible values of \fIarch\fR for M680x0
  architectures are: \fB68000\fR, \fB68010\fR, \fB68020\fR,
  \&\fB68030\fR, \fB68040\fR, \fB68060\fR and \fBcpu32\fR.  ColdFire
! architectures are selected according to Freescale's \s-1ISA\s0 classification
  and the permissible values are: \fBisaa\fR, \fBisaaplus\fR,
  \&\fBisab\fR and \fBisac\fR.
  .Sp
! \&\s-1GCC\s0 defines a macro \f(CW\*(C`_\|_mcf\f(CIarch\f(CW_\|_\*(C'\fR whenever it is generating
  code for a ColdFire target.  The \fIarch\fR in this macro is one of the
  \&\fB\-march\fR arguments given above.
  .Sp
  When used together, \fB\-march\fR and \fB\-mtune\fR select code
  that runs on a family of similar processors but that is optimized
  for a particular microarchitecture.
! .IP "\fB\-mcpu=\fR\fIcpu\fR" 4
  .IX Item "-mcpu=cpu"
  Generate code for a specific M680x0 or ColdFire processor.
  The M680x0 \fIcpu\fRs are: \fB68000\fR, \fB68010\fR, \fB68020\fR,
--- 27519,27542 ----
  The default settings depend on which architecture was selected when
  the compiler was configured; the defaults for the most common choices
  are given below.
! .IP \fB\-march=\fR\fIarch\fR 4
  .IX Item "-march=arch"
  Generate code for a specific M680x0 or ColdFire instruction set
  architecture.  Permissible values of \fIarch\fR for M680x0
  architectures are: \fB68000\fR, \fB68010\fR, \fB68020\fR,
  \&\fB68030\fR, \fB68040\fR, \fB68060\fR and \fBcpu32\fR.  ColdFire
! architectures are selected according to Freescale\*(Aqs ISA classification
  and the permissible values are: \fBisaa\fR, \fBisaaplus\fR,
  \&\fBisab\fR and \fBisac\fR.
  .Sp
! GCC defines a macro \f(CW\*(C`_\|_mcf\fR\f(CIarch\fR\f(CW_\|_\*(C'\fR whenever it is generating
  code for a ColdFire target.  The \fIarch\fR in this macro is one of the
  \&\fB\-march\fR arguments given above.
  .Sp
  When used together, \fB\-march\fR and \fB\-mtune\fR select code
  that runs on a family of similar processors but that is optimized
  for a particular microarchitecture.
! .IP \fB\-mcpu=\fR\fIcpu\fR 4
  .IX Item "-mcpu=cpu"
  Generate code for a specific M680x0 or ColdFire processor.
  The M680x0 \fIcpu\fRs are: \fB68000\fR, \fB68010\fR, \fB68020\fR,
*************** below, which also classifies the CPUs in
*** 27658,27676 ****
  .IX Item "5407 : 5407"
  .IP "\fB5475\fR : \fB5470\fR \fB5471\fR \fB5472\fR \fB5473\fR \fB5474\fR \fB5475\fR \fB547x\fR \fB5480\fR \fB5481\fR \fB5482\fR \fB5483\fR \fB5484\fR \fB5485\fR" 4
  .IX Item "5475 : 5470 5471 5472 5473 5474 5475 547x 5480 5481 5482 5483 5484 5485"
  .RE
  .RS 4
- .PD
  .Sp
  \&\fB\-mcpu=\fR\fIcpu\fR overrides \fB\-march=\fR\fIarch\fR if
  \&\fIarch\fR is compatible with \fIcpu\fR.  Other combinations of
  \&\fB\-mcpu\fR and \fB\-march\fR are rejected.
  .Sp
! \&\s-1GCC\s0 defines the macro \f(CW\*(C`_\|_mcf_cpu_\f(CIcpu\f(CW\*(C'\fR when ColdFire target
! \&\fIcpu\fR is selected.  It also defines \f(CW\*(C`_\|_mcf_family_\f(CIfamily\f(CW\*(C'\fR,
  where the value of \fIfamily\fR is given by the table above.
  .RE
! .IP "\fB\-mtune=\fR\fItune\fR" 4
  .IX Item "-mtune=tune"
  Tune the code for a particular microarchitecture within the
  constraints set by \fB\-march\fR and \fB\-mcpu\fR.
--- 27593,27611 ----
  .IX Item "5407 : 5407"
  .IP "\fB5475\fR : \fB5470\fR \fB5471\fR \fB5472\fR \fB5473\fR \fB5474\fR \fB5475\fR \fB547x\fR \fB5480\fR \fB5481\fR \fB5482\fR \fB5483\fR \fB5484\fR \fB5485\fR" 4
  .IX Item "5475 : 5470 5471 5472 5473 5474 5475 547x 5480 5481 5482 5483 5484 5485"
+ .PD
  .RE
  .RS 4
  .Sp
  \&\fB\-mcpu=\fR\fIcpu\fR overrides \fB\-march=\fR\fIarch\fR if
  \&\fIarch\fR is compatible with \fIcpu\fR.  Other combinations of
  \&\fB\-mcpu\fR and \fB\-march\fR are rejected.
  .Sp
! GCC defines the macro \f(CW\*(C`_\|_mcf_cpu_\fR\f(CIcpu\fR\f(CW\*(C'\fR when ColdFire target
! \&\fIcpu\fR is selected.  It also defines \f(CW\*(C`_\|_mcf_family_\fR\f(CIfamily\fR\f(CW\*(C'\fR,
  where the value of \fIfamily\fR is given by the table above.
  .RE
! .IP \fB\-mtune=\fR\fItune\fR 4
  .IX Item "-mtune=tune"
  Tune the code for a particular microarchitecture within the
  constraints set by \fB\-march\fR and \fB\-mcpu\fR.
*************** to run relatively well on 68020, 68030 a
*** 27685,27732 ****
  as well.  These two options select the same tuning decisions as
  \&\fB\-m68020\-40\fR and \fB\-m68020\-60\fR respectively.
  .Sp
! \&\s-1GCC\s0 defines the macros \f(CW\*(C`_\|_mc\f(CIarch\f(CW\*(C'\fR and \f(CW\*(C`_\|_mc\f(CIarch\f(CW_\|_\*(C'\fR
  when tuning for 680x0 architecture \fIarch\fR.  It also defines
! \&\f(CW\*(C`mc\f(CIarch\f(CW\*(C'\fR unless either \fB\-ansi\fR or a non-GNU \fB\-std\fR
! option is used.  If \s-1GCC\s0 is tuning for a range of architectures,
  as selected by \fB\-mtune=68020\-40\fR or \fB\-mtune=68020\-60\fR,
  it defines the macros for every architecture in the range.
  .Sp
! \&\s-1GCC\s0 also defines the macro \f(CW\*(C`_\|_m\f(CIuarch\f(CW_\|_\*(C'\fR when tuning for
  ColdFire microarchitecture \fIuarch\fR, where \fIuarch\fR is one
  of the arguments given above.
! .IP "\fB\-m68000\fR" 4
  .IX Item "-m68000"
  .PD 0
! .IP "\fB\-mc68000\fR" 4
  .IX Item "-mc68000"
  .PD
  Generate output for a 68000.  This is the default
  when the compiler is configured for 68000\-based systems.
  It is equivalent to \fB\-march=68000\fR.
  .Sp
! Use this option for microcontrollers with a 68000 or \s-1EC000\s0 core,
  including the 68008, 68302, 68306, 68307, 68322, 68328 and 68356.
! .IP "\fB\-m68010\fR" 4
  .IX Item "-m68010"
  Generate output for a 68010.  This is the default
  when the compiler is configured for 68010\-based systems.
  It is equivalent to \fB\-march=68010\fR.
! .IP "\fB\-m68020\fR" 4
  .IX Item "-m68020"
  .PD 0
! .IP "\fB\-mc68020\fR" 4
  .IX Item "-mc68020"
  .PD
  Generate output for a 68020.  This is the default
  when the compiler is configured for 68020\-based systems.
  It is equivalent to \fB\-march=68020\fR.
! .IP "\fB\-m68030\fR" 4
  .IX Item "-m68030"
  Generate output for a 68030.  This is the default when the compiler is
  configured for 68030\-based systems.  It is equivalent to
  \&\fB\-march=68030\fR.
! .IP "\fB\-m68040\fR" 4
  .IX Item "-m68040"
  Generate output for a 68040.  This is the default when the compiler is
  configured for 68040\-based systems.  It is equivalent to
--- 27620,27667 ----
  as well.  These two options select the same tuning decisions as
  \&\fB\-m68020\-40\fR and \fB\-m68020\-60\fR respectively.
  .Sp
! GCC defines the macros \f(CW\*(C`_\|_mc\fR\f(CIarch\fR\f(CW\*(C'\fR and \f(CW\*(C`_\|_mc\fR\f(CIarch\fR\f(CW_\|_\*(C'\fR
  when tuning for 680x0 architecture \fIarch\fR.  It also defines
! \&\f(CW\*(C`mc\fR\f(CIarch\fR\f(CW\*(C'\fR unless either \fB\-ansi\fR or a non\-GNU \fB\-std\fR
! option is used.  If GCC is tuning for a range of architectures,
  as selected by \fB\-mtune=68020\-40\fR or \fB\-mtune=68020\-60\fR,
  it defines the macros for every architecture in the range.
  .Sp
! GCC also defines the macro \f(CW\*(C`_\|_m\fR\f(CIuarch\fR\f(CW_\|_\*(C'\fR when tuning for
  ColdFire microarchitecture \fIuarch\fR, where \fIuarch\fR is one
  of the arguments given above.
! .IP \fB\-m68000\fR 4
  .IX Item "-m68000"
  .PD 0
! .IP \fB\-mc68000\fR 4
  .IX Item "-mc68000"
  .PD
  Generate output for a 68000.  This is the default
  when the compiler is configured for 68000\-based systems.
  It is equivalent to \fB\-march=68000\fR.
  .Sp
! Use this option for microcontrollers with a 68000 or EC000 core,
  including the 68008, 68302, 68306, 68307, 68322, 68328 and 68356.
! .IP \fB\-m68010\fR 4
  .IX Item "-m68010"
  Generate output for a 68010.  This is the default
  when the compiler is configured for 68010\-based systems.
  It is equivalent to \fB\-march=68010\fR.
! .IP \fB\-m68020\fR 4
  .IX Item "-m68020"
  .PD 0
! .IP \fB\-mc68020\fR 4
  .IX Item "-mc68020"
  .PD
  Generate output for a 68020.  This is the default
  when the compiler is configured for 68020\-based systems.
  It is equivalent to \fB\-march=68020\fR.
! .IP \fB\-m68030\fR 4
  .IX Item "-m68030"
  Generate output for a 68030.  This is the default when the compiler is
  configured for 68030\-based systems.  It is equivalent to
  \&\fB\-march=68030\fR.
! .IP \fB\-m68040\fR 4
  .IX Item "-m68040"
  Generate output for a 68040.  This is the default when the compiler is
  configured for 68040\-based systems.  It is equivalent to
*************** configured for 68040\-based systems.  It
*** 27735,27741 ****
  This option inhibits the use of 68881/68882 instructions that have to be
  emulated by software on the 68040.  Use this option if your 68040 does not
  have code to emulate those instructions.
! .IP "\fB\-m68060\fR" 4
  .IX Item "-m68060"
  Generate output for a 68060.  This is the default when the compiler is
  configured for 68060\-based systems.  It is equivalent to
--- 27670,27676 ----
  This option inhibits the use of 68881/68882 instructions that have to be
  emulated by software on the 68040.  Use this option if your 68040 does not
  have code to emulate those instructions.
! .IP \fB\-m68060\fR 4
  .IX Item "-m68060"
  Generate output for a 68060.  This is the default when the compiler is
  configured for 68060\-based systems.  It is equivalent to
*************** configured for 68060\-based systems.  It
*** 27744,27791 ****
  This option inhibits the use of 68020 and 68881/68882 instructions that
  have to be emulated by software on the 68060.  Use this option if your 68060
  does not have code to emulate those instructions.
! .IP "\fB\-mcpu32\fR" 4
  .IX Item "-mcpu32"
! Generate output for a \s-1CPU32.\s0  This is the default
  when the compiler is configured for CPU32\-based systems.
  It is equivalent to \fB\-march=cpu32\fR.
  .Sp
  Use this option for microcontrollers with a
! \&\s-1CPU32\s0 or \s-1CPU32+\s0 core, including the 68330, 68331, 68332, 68333, 68334,
  68336, 68340, 68341, 68349 and 68360.
! .IP "\fB\-m5200\fR" 4
  .IX Item "-m5200"
! Generate output for a 520X ColdFire \s-1CPU.\s0  This is the default
  when the compiler is configured for 520X\-based systems.
  It is equivalent to \fB\-mcpu=5206\fR, and is now deprecated
  in favor of that option.
  .Sp
  Use this option for microcontroller with a 5200 core, including
! the \s-1MCF5202, MCF5203, MCF5204\s0 and \s-1MCF5206.\s0
! .IP "\fB\-m5206e\fR" 4
  .IX Item "-m5206e"
! Generate output for a 5206e ColdFire \s-1CPU.\s0  The option is now
  deprecated in favor of the equivalent \fB\-mcpu=5206e\fR.
! .IP "\fB\-m528x\fR" 4
  .IX Item "-m528x"
  Generate output for a member of the ColdFire 528X family.
  The option is now deprecated in favor of the equivalent
  \&\fB\-mcpu=528x\fR.
! .IP "\fB\-m5307\fR" 4
  .IX Item "-m5307"
! Generate output for a ColdFire 5307 \s-1CPU.\s0  The option is now deprecated
  in favor of the equivalent \fB\-mcpu=5307\fR.
! .IP "\fB\-m5407\fR" 4
  .IX Item "-m5407"
! Generate output for a ColdFire 5407 \s-1CPU.\s0  The option is now deprecated
  in favor of the equivalent \fB\-mcpu=5407\fR.
! .IP "\fB\-mcfv4e\fR" 4
  .IX Item "-mcfv4e"
! Generate output for a ColdFire V4e family \s-1CPU\s0 (e.g. 547x/548x).
! This includes use of hardware floating-point instructions.
  The option is equivalent to \fB\-mcpu=547x\fR, and is now
  deprecated in favor of that option.
! .IP "\fB\-m68020\-40\fR" 4
  .IX Item "-m68020-40"
  Generate output for a 68040, without using any of the new instructions.
  This results in code that can run relatively efficiently on either a
--- 27679,27726 ----
  This option inhibits the use of 68020 and 68881/68882 instructions that
  have to be emulated by software on the 68060.  Use this option if your 68060
  does not have code to emulate those instructions.
! .IP \fB\-mcpu32\fR 4
  .IX Item "-mcpu32"
! Generate output for a CPU32.  This is the default
  when the compiler is configured for CPU32\-based systems.
  It is equivalent to \fB\-march=cpu32\fR.
  .Sp
  Use this option for microcontrollers with a
! CPU32 or CPU32+ core, including the 68330, 68331, 68332, 68333, 68334,
  68336, 68340, 68341, 68349 and 68360.
! .IP \fB\-m5200\fR 4
  .IX Item "-m5200"
! Generate output for a 520X ColdFire CPU.  This is the default
  when the compiler is configured for 520X\-based systems.
  It is equivalent to \fB\-mcpu=5206\fR, and is now deprecated
  in favor of that option.
  .Sp
  Use this option for microcontroller with a 5200 core, including
! the MCF5202, MCF5203, MCF5204 and MCF5206.
! .IP \fB\-m5206e\fR 4
  .IX Item "-m5206e"
! Generate output for a 5206e ColdFire CPU.  The option is now
  deprecated in favor of the equivalent \fB\-mcpu=5206e\fR.
! .IP \fB\-m528x\fR 4
  .IX Item "-m528x"
  Generate output for a member of the ColdFire 528X family.
  The option is now deprecated in favor of the equivalent
  \&\fB\-mcpu=528x\fR.
! .IP \fB\-m5307\fR 4
  .IX Item "-m5307"
! Generate output for a ColdFire 5307 CPU.  The option is now deprecated
  in favor of the equivalent \fB\-mcpu=5307\fR.
! .IP \fB\-m5407\fR 4
  .IX Item "-m5407"
! Generate output for a ColdFire 5407 CPU.  The option is now deprecated
  in favor of the equivalent \fB\-mcpu=5407\fR.
! .IP \fB\-mcfv4e\fR 4
  .IX Item "-mcfv4e"
! Generate output for a ColdFire V4e family CPU (e.g. 547x/548x).
! This includes use of hardware floating\-point instructions.
  The option is equivalent to \fB\-mcpu=547x\fR, and is now
  deprecated in favor of that option.
! .IP \fB\-m68020\-40\fR 4
  .IX Item "-m68020-40"
  Generate output for a 68040, without using any of the new instructions.
  This results in code that can run relatively efficiently on either a
*************** This results in code that can run relati
*** 27793,27799 ****
  68881 instructions that are emulated on the 68040.
  .Sp
  The option is equivalent to \fB\-march=68020\fR \fB\-mtune=68020\-40\fR.
! .IP "\fB\-m68020\-60\fR" 4
  .IX Item "-m68020-60"
  Generate output for a 68060, without using any of the new instructions.
  This results in code that can run relatively efficiently on either a
--- 27728,27734 ----
  68881 instructions that are emulated on the 68040.
  .Sp
  The option is equivalent to \fB\-march=68020\fR \fB\-mtune=68020\-40\fR.
! .IP \fB\-m68020\-60\fR 4
  .IX Item "-m68020-60"
  Generate output for a 68060, without using any of the new instructions.
  This results in code that can run relatively efficiently on either a
*************** This results in code that can run relati
*** 27801,27860 ****
  68881 instructions that are emulated on the 68060.
  .Sp
  The option is equivalent to \fB\-march=68020\fR \fB\-mtune=68020\-60\fR.
! .IP "\fB\-mhard\-float\fR" 4
  .IX Item "-mhard-float"
  .PD 0
! .IP "\fB\-m68881\fR" 4
  .IX Item "-m68881"
  .PD
! Generate floating-point instructions.  This is the default for 68020
! and above, and for ColdFire devices that have an \s-1FPU.\s0  It defines the
  macro \f(CW\*(C`_\|_HAVE_68881_\|_\*(C'\fR on M680x0 targets and \f(CW\*(C`_\|_mcffpu_\|_\*(C'\fR
  on ColdFire targets.
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
! Do not generate floating-point instructions; use library calls instead.
  This is the default for 68000, 68010, and 68832 targets.  It is also
! the default for ColdFire devices that have no \s-1FPU.\s0
! .IP "\fB\-mdiv\fR" 4
  .IX Item "-mdiv"
  .PD 0
! .IP "\fB\-mno\-div\fR" 4
  .IX Item "-mno-div"
  .PD
  Generate (do not generate) ColdFire hardware divide and remainder
  instructions.  If \fB\-march\fR is used without \fB\-mcpu\fR,
! the default is \*(L"on\*(R" for ColdFire architectures and \*(L"off\*(R" for M680x0
! architectures.  Otherwise, the default is taken from the target \s-1CPU\s0
! (either the default \s-1CPU,\s0 or the one specified by \fB\-mcpu\fR).  For
! example, the default is \*(L"off\*(R" for \fB\-mcpu=5206\fR and \*(L"on\*(R" for
  \&\fB\-mcpu=5206e\fR.
  .Sp
! \&\s-1GCC\s0 defines the macro \f(CW\*(C`_\|_mcfhwdiv_\|_\*(C'\fR when this option is enabled.
! .IP "\fB\-mshort\fR" 4
  .IX Item "-mshort"
  Consider type \f(CW\*(C`int\*(C'\fR to be 16 bits wide, like \f(CW\*(C`short int\*(C'\fR.
  Additionally, parameters passed on the stack are also aligned to a
! 16\-bit boundary even on targets whose \s-1API\s0 mandates promotion to 32\-bit.
! .IP "\fB\-mno\-short\fR" 4
  .IX Item "-mno-short"
  Do not consider type \f(CW\*(C`int\*(C'\fR to be 16 bits wide.  This is the default.
! .IP "\fB\-mnobitfield\fR" 4
  .IX Item "-mnobitfield"
  .PD 0
! .IP "\fB\-mno\-bitfield\fR" 4
  .IX Item "-mno-bitfield"
  .PD
! Do not use the bit-field instructions.  The \fB\-m68000\fR, \fB\-mcpu32\fR
  and \fB\-m5200\fR options imply \fB\-mnobitfield\fR.
! .IP "\fB\-mbitfield\fR" 4
  .IX Item "-mbitfield"
! Do use the bit-field instructions.  The \fB\-m68020\fR option implies
  \&\fB\-mbitfield\fR.  This is the default if you use a configuration
  designed for a 68020.
! .IP "\fB\-mrtd\fR" 4
  .IX Item "-mrtd"
! Use a different function-calling convention, in which functions
  that take a fixed number of arguments return with the \f(CW\*(C`rtd\*(C'\fR
  instruction, which pops their arguments while returning.  This
  saves one instruction in the caller since there is no need to pop
--- 27736,27795 ----
  68881 instructions that are emulated on the 68060.
  .Sp
  The option is equivalent to \fB\-march=68020\fR \fB\-mtune=68020\-60\fR.
! .IP \fB\-mhard\-float\fR 4
  .IX Item "-mhard-float"
  .PD 0
! .IP \fB\-m68881\fR 4
  .IX Item "-m68881"
  .PD
! Generate floating\-point instructions.  This is the default for 68020
! and above, and for ColdFire devices that have an FPU.  It defines the
  macro \f(CW\*(C`_\|_HAVE_68881_\|_\*(C'\fR on M680x0 targets and \f(CW\*(C`_\|_mcffpu_\|_\*(C'\fR
  on ColdFire targets.
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
! Do not generate floating\-point instructions; use library calls instead.
  This is the default for 68000, 68010, and 68832 targets.  It is also
! the default for ColdFire devices that have no FPU.
! .IP \fB\-mdiv\fR 4
  .IX Item "-mdiv"
  .PD 0
! .IP \fB\-mno\-div\fR 4
  .IX Item "-mno-div"
  .PD
  Generate (do not generate) ColdFire hardware divide and remainder
  instructions.  If \fB\-march\fR is used without \fB\-mcpu\fR,
! the default is "on" for ColdFire architectures and "off" for M680x0
! architectures.  Otherwise, the default is taken from the target CPU
! (either the default CPU, or the one specified by \fB\-mcpu\fR).  For
! example, the default is "off" for \fB\-mcpu=5206\fR and "on" for
  \&\fB\-mcpu=5206e\fR.
  .Sp
! GCC defines the macro \f(CW\*(C`_\|_mcfhwdiv_\|_\*(C'\fR when this option is enabled.
! .IP \fB\-mshort\fR 4
  .IX Item "-mshort"
  Consider type \f(CW\*(C`int\*(C'\fR to be 16 bits wide, like \f(CW\*(C`short int\*(C'\fR.
  Additionally, parameters passed on the stack are also aligned to a
! 16\-bit boundary even on targets whose API mandates promotion to 32\-bit.
! .IP \fB\-mno\-short\fR 4
  .IX Item "-mno-short"
  Do not consider type \f(CW\*(C`int\*(C'\fR to be 16 bits wide.  This is the default.
! .IP \fB\-mnobitfield\fR 4
  .IX Item "-mnobitfield"
  .PD 0
! .IP \fB\-mno\-bitfield\fR 4
  .IX Item "-mno-bitfield"
  .PD
! Do not use the bit\-field instructions.  The \fB\-m68000\fR, \fB\-mcpu32\fR
  and \fB\-m5200\fR options imply \fB\-mnobitfield\fR.
! .IP \fB\-mbitfield\fR 4
  .IX Item "-mbitfield"
! Do use the bit\-field instructions.  The \fB\-m68020\fR option implies
  \&\fB\-mbitfield\fR.  This is the default if you use a configuration
  designed for a 68020.
! .IP \fB\-mrtd\fR 4
  .IX Item "-mrtd"
! Use a different function\-calling convention, in which functions
  that take a fixed number of arguments return with the \f(CW\*(C`rtd\*(C'\fR
  instruction, which pops their arguments while returning.  This
  saves one instruction in the caller since there is no need to pop
*************** function with too many arguments.  (Norm
*** 27874,27949 ****
  harmlessly ignored.)
  .Sp
  The \f(CW\*(C`rtd\*(C'\fR instruction is supported by the 68010, 68020, 68030,
! 68040, 68060 and \s-1CPU32\s0 processors, but not by the 68000 or 5200.
  .Sp
  The default is \fB\-mno\-rtd\fR.
! .IP "\fB\-malign\-int\fR" 4
  .IX Item "-malign-int"
  .PD 0
! .IP "\fB\-mno\-align\-int\fR" 4
  .IX Item "-mno-align-int"
  .PD
! Control whether \s-1GCC\s0 aligns \f(CW\*(C`int\*(C'\fR, \f(CW\*(C`long\*(C'\fR, \f(CW\*(C`long long\*(C'\fR,
  \&\f(CW\*(C`float\*(C'\fR, \f(CW\*(C`double\*(C'\fR, and \f(CW\*(C`long double\*(C'\fR variables on a 32\-bit
  boundary (\fB\-malign\-int\fR) or a 16\-bit boundary (\fB\-mno\-align\-int\fR).
  Aligning variables on 32\-bit boundaries produces code that runs somewhat
  faster on processors with 32\-bit busses at the expense of more memory.
  .Sp
! \&\fBWarning:\fR if you use the \fB\-malign\-int\fR switch, \s-1GCC\s0
  aligns structures containing the above types differently than
  most published application binary interface specifications for the m68k.
  .Sp
! Use the pc-relative addressing mode of the 68000 directly, instead of
  using a global offset table.  At present, this option implies \fB\-fpic\fR,
! allowing at most a 16\-bit offset for pc-relative addressing.  \fB\-fPIC\fR is
  not presently supported with \fB\-mpcrel\fR, though this could be supported for
  68020 and higher processors.
! .IP "\fB\-mno\-strict\-align\fR" 4
  .IX Item "-mno-strict-align"
  .PD 0
! .IP "\fB\-mstrict\-align\fR" 4
  .IX Item "-mstrict-align"
  .PD
  Do not (do) assume that unaligned memory references are handled by
  the system.
! .IP "\fB\-msep\-data\fR" 4
  .IX Item "-msep-data"
  Generate code that allows the data segment to be located in a different
! area of memory from the text segment.  This allows for execute-in-place in
  an environment without virtual memory management.  This option implies
  \&\fB\-fPIC\fR.
! .IP "\fB\-mno\-sep\-data\fR" 4
  .IX Item "-mno-sep-data"
  Generate code that assumes that the data segment follows the text segment.
  This is the default.
! .IP "\fB\-mid\-shared\-library\fR" 4
  .IX Item "-mid-shared-library"
! Generate code that supports shared libraries via the library \s-1ID\s0 method.
! This allows for execute-in-place and shared libraries in an environment
  without virtual memory management.  This option implies \fB\-fPIC\fR.
! .IP "\fB\-mno\-id\-shared\-library\fR" 4
  .IX Item "-mno-id-shared-library"
! Generate code that doesn't assume ID-based shared libraries are being used.
  This is the default.
! .IP "\fB\-mshared\-library\-id=n\fR" 4
  .IX Item "-mshared-library-id=n"
! Specifies the identification number of the ID-based shared library being
  compiled.  Specifying a value of 0 generates more compact code; specifying
  other values forces the allocation of that number to the current
! library, but is no more space\- or time-efficient than omitting this option.
! .IP "\fB\-mxgot\fR" 4
  .IX Item "-mxgot"
  .PD 0
! .IP "\fB\-mno\-xgot\fR" 4
  .IX Item "-mno-xgot"
  .PD
! When generating position-independent code for ColdFire, generate code
! that works if the \s-1GOT\s0 has more than 8192 entries.  This code is
  larger and slower than code generated without this option.  On M680x0
  processors, this option is not needed; \fB\-fPIC\fR suffices.
  .Sp
! \&\s-1GCC\s0 normally uses a single instruction to load values from the \s-1GOT.\s0
! While this is relatively efficient, it only works if the \s-1GOT\s0
  is smaller than about 64k.  Anything larger causes the linker
  to report an error such as:
  .Sp
--- 27809,27884 ----
  harmlessly ignored.)
  .Sp
  The \f(CW\*(C`rtd\*(C'\fR instruction is supported by the 68010, 68020, 68030,
! 68040, 68060 and CPU32 processors, but not by the 68000 or 5200.
  .Sp
  The default is \fB\-mno\-rtd\fR.
! .IP \fB\-malign\-int\fR 4
  .IX Item "-malign-int"
  .PD 0
! .IP \fB\-mno\-align\-int\fR 4
  .IX Item "-mno-align-int"
  .PD
! Control whether GCC aligns \f(CW\*(C`int\*(C'\fR, \f(CW\*(C`long\*(C'\fR, \f(CW\*(C`long long\*(C'\fR,
  \&\f(CW\*(C`float\*(C'\fR, \f(CW\*(C`double\*(C'\fR, and \f(CW\*(C`long double\*(C'\fR variables on a 32\-bit
  boundary (\fB\-malign\-int\fR) or a 16\-bit boundary (\fB\-mno\-align\-int\fR).
  Aligning variables on 32\-bit boundaries produces code that runs somewhat
  faster on processors with 32\-bit busses at the expense of more memory.
  .Sp
! \&\fBWarning:\fR if you use the \fB\-malign\-int\fR switch, GCC
  aligns structures containing the above types differently than
  most published application binary interface specifications for the m68k.
  .Sp
! Use the pc\-relative addressing mode of the 68000 directly, instead of
  using a global offset table.  At present, this option implies \fB\-fpic\fR,
! allowing at most a 16\-bit offset for pc\-relative addressing.  \fB\-fPIC\fR is
  not presently supported with \fB\-mpcrel\fR, though this could be supported for
  68020 and higher processors.
! .IP \fB\-mno\-strict\-align\fR 4
  .IX Item "-mno-strict-align"
  .PD 0
! .IP \fB\-mstrict\-align\fR 4
  .IX Item "-mstrict-align"
  .PD
  Do not (do) assume that unaligned memory references are handled by
  the system.
! .IP \fB\-msep\-data\fR 4
  .IX Item "-msep-data"
  Generate code that allows the data segment to be located in a different
! area of memory from the text segment.  This allows for execute\-in\-place in
  an environment without virtual memory management.  This option implies
  \&\fB\-fPIC\fR.
! .IP \fB\-mno\-sep\-data\fR 4
  .IX Item "-mno-sep-data"
  Generate code that assumes that the data segment follows the text segment.
  This is the default.
! .IP \fB\-mid\-shared\-library\fR 4
  .IX Item "-mid-shared-library"
! Generate code that supports shared libraries via the library ID method.
! This allows for execute\-in\-place and shared libraries in an environment
  without virtual memory management.  This option implies \fB\-fPIC\fR.
! .IP \fB\-mno\-id\-shared\-library\fR 4
  .IX Item "-mno-id-shared-library"
! Generate code that doesn\*(Aqt assume ID\-based shared libraries are being used.
  This is the default.
! .IP \fB\-mshared\-library\-id=n\fR 4
  .IX Item "-mshared-library-id=n"
! Specifies the identification number of the ID\-based shared library being
  compiled.  Specifying a value of 0 generates more compact code; specifying
  other values forces the allocation of that number to the current
! library, but is no more space\- or time\-efficient than omitting this option.
! .IP \fB\-mxgot\fR 4
  .IX Item "-mxgot"
  .PD 0
! .IP \fB\-mno\-xgot\fR 4
  .IX Item "-mno-xgot"
  .PD
! When generating position\-independent code for ColdFire, generate code
! that works if the GOT has more than 8192 entries.  This code is
  larger and slower than code generated without this option.  On M680x0
  processors, this option is not needed; \fB\-fPIC\fR suffices.
  .Sp
! GCC normally uses a single instruction to load values from the GOT.
! While this is relatively efficient, it only works if the GOT
  is smaller than about 64k.  Anything larger causes the linker
  to report an error such as:
  .Sp
*************** It should then work with very large GOTs
*** 27956,27969 ****
  \&\fB\-mxgot\fR is less efficient, since it takes 4 instructions to fetch
  the value of a global symbol.
  .Sp
! Note that some linkers, including newer versions of the \s-1GNU\s0 linker,
! can create multiple GOTs and sort \s-1GOT\s0 entries.  If you have such a linker,
  you should only need to use \fB\-mxgot\fR when compiling a single
! object file that accesses more than 8192 \s-1GOT\s0 entries.  Very few do.
  .Sp
! These options have no effect unless \s-1GCC\s0 is generating
! position-independent code.
! .IP "\fB\-mlong\-jump\-table\-offsets\fR" 4
  .IX Item "-mlong-jump-table-offsets"
  Use 32\-bit offsets in \f(CW\*(C`switch\*(C'\fR tables.  The default is to use
  16\-bit offsets.
--- 27891,27904 ----
  \&\fB\-mxgot\fR is less efficient, since it takes 4 instructions to fetch
  the value of a global symbol.
  .Sp
! Note that some linkers, including newer versions of the GNU linker,
! can create multiple GOTs and sort GOT entries.  If you have such a linker,
  you should only need to use \fB\-mxgot\fR when compiling a single
! object file that accesses more than 8192 GOT entries.  Very few do.
  .Sp
! These options have no effect unless GCC is generating
! position\-independent code.
! .IP \fB\-mlong\-jump\-table\-offsets\fR 4
  .IX Item "-mlong-jump-table-offsets"
  Use 32\-bit offsets in \f(CW\*(C`switch\*(C'\fR tables.  The default is to use
  16\-bit offsets.
*************** Use 32\-bit offsets in \f(CW\*(C`switch\
*** 27973,28047 ****
  .PP
  These are the \fB\-m\fR options defined for the Motorola M*Core
  processors.
! .IP "\fB\-mhardlit\fR" 4
  .IX Item "-mhardlit"
  .PD 0
! .IP "\fB\-mno\-hardlit\fR" 4
  .IX Item "-mno-hardlit"
  .PD
  Inline constants into the code stream if it can be done in two
  instructions or less.
! .IP "\fB\-mdiv\fR" 4
  .IX Item "-mdiv"
  .PD 0
! .IP "\fB\-mno\-div\fR" 4
  .IX Item "-mno-div"
  .PD
  Use the divide instruction.  (Enabled by default).
! .IP "\fB\-mrelax\-immediate\fR" 4
  .IX Item "-mrelax-immediate"
  .PD 0
! .IP "\fB\-mno\-relax\-immediate\fR" 4
  .IX Item "-mno-relax-immediate"
  .PD
! Allow arbitrary-sized immediates in bit operations.
! .IP "\fB\-mwide\-bitfields\fR" 4
  .IX Item "-mwide-bitfields"
  .PD 0
! .IP "\fB\-mno\-wide\-bitfields\fR" 4
  .IX Item "-mno-wide-bitfields"
  .PD
! Always treat bit-fields as \f(CW\*(C`int\*(C'\fR\-sized.
! .IP "\fB\-m4byte\-functions\fR" 4
  .IX Item "-m4byte-functions"
  .PD 0
! .IP "\fB\-mno\-4byte\-functions\fR" 4
  .IX Item "-mno-4byte-functions"
  .PD
  Force all functions to be aligned to a 4\-byte boundary.
! .IP "\fB\-mcallgraph\-data\fR" 4
  .IX Item "-mcallgraph-data"
  .PD 0
! .IP "\fB\-mno\-callgraph\-data\fR" 4
  .IX Item "-mno-callgraph-data"
  .PD
  Emit callgraph information.
! .IP "\fB\-mslow\-bytes\fR" 4
  .IX Item "-mslow-bytes"
  .PD 0
! .IP "\fB\-mno\-slow\-bytes\fR" 4
  .IX Item "-mno-slow-bytes"
  .PD
  Prefer word access when reading byte quantities.
! .IP "\fB\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
  .PD 0
! .IP "\fB\-mbig\-endian\fR" 4
  .IX Item "-mbig-endian"
  .PD
! Generate code for a little-endian target.
! .IP "\fB\-m210\fR" 4
  .IX Item "-m210"
  .PD 0
! .IP "\fB\-m340\fR" 4
  .IX Item "-m340"
  .PD
  Generate code for the 210 processor.
! .IP "\fB\-mno\-lsim\fR" 4
  .IX Item "-mno-lsim"
  Assume that runtime support has been provided and so omit the
  simulator library (\fIlibsim.a)\fR from the linker command line.
! .IP "\fB\-mstack\-increment=\fR\fIsize\fR" 4
  .IX Item "-mstack-increment=size"
  Set the maximum amount for a single stack increment operation.  Large
  values can increase the speed of programs that contain functions
--- 27908,27982 ----
  .PP
  These are the \fB\-m\fR options defined for the Motorola M*Core
  processors.
! .IP \fB\-mhardlit\fR 4
  .IX Item "-mhardlit"
  .PD 0
! .IP \fB\-mno\-hardlit\fR 4
  .IX Item "-mno-hardlit"
  .PD
  Inline constants into the code stream if it can be done in two
  instructions or less.
! .IP \fB\-mdiv\fR 4
  .IX Item "-mdiv"
  .PD 0
! .IP \fB\-mno\-div\fR 4
  .IX Item "-mno-div"
  .PD
  Use the divide instruction.  (Enabled by default).
! .IP \fB\-mrelax\-immediate\fR 4
  .IX Item "-mrelax-immediate"
  .PD 0
! .IP \fB\-mno\-relax\-immediate\fR 4
  .IX Item "-mno-relax-immediate"
  .PD
! Allow arbitrary\-sized immediates in bit operations.
! .IP \fB\-mwide\-bitfields\fR 4
  .IX Item "-mwide-bitfields"
  .PD 0
! .IP \fB\-mno\-wide\-bitfields\fR 4
  .IX Item "-mno-wide-bitfields"
  .PD
! Always treat bit\-fields as \f(CW\*(C`int\*(C'\fR\-sized.
! .IP \fB\-m4byte\-functions\fR 4
  .IX Item "-m4byte-functions"
  .PD 0
! .IP \fB\-mno\-4byte\-functions\fR 4
  .IX Item "-mno-4byte-functions"
  .PD
  Force all functions to be aligned to a 4\-byte boundary.
! .IP \fB\-mcallgraph\-data\fR 4
  .IX Item "-mcallgraph-data"
  .PD 0
! .IP \fB\-mno\-callgraph\-data\fR 4
  .IX Item "-mno-callgraph-data"
  .PD
  Emit callgraph information.
! .IP \fB\-mslow\-bytes\fR 4
  .IX Item "-mslow-bytes"
  .PD 0
! .IP \fB\-mno\-slow\-bytes\fR 4
  .IX Item "-mno-slow-bytes"
  .PD
  Prefer word access when reading byte quantities.
! .IP \fB\-mlittle\-endian\fR 4
  .IX Item "-mlittle-endian"
  .PD 0
! .IP \fB\-mbig\-endian\fR 4
  .IX Item "-mbig-endian"
  .PD
! Generate code for a little\-endian target.
! .IP \fB\-m210\fR 4
  .IX Item "-m210"
  .PD 0
! .IP \fB\-m340\fR 4
  .IX Item "-m340"
  .PD
  Generate code for the 210 processor.
! .IP \fB\-mno\-lsim\fR 4
  .IX Item "-mno-lsim"
  Assume that runtime support has been provided and so omit the
  simulator library (\fIlibsim.a)\fR from the linker command line.
! .IP \fB\-mstack\-increment=\fR\fIsize\fR 4
  .IX Item "-mstack-increment=size"
  Set the maximum amount for a single stack increment operation.  Large
  values can increase the speed of programs that contain functions
*************** value is 0x1000.
*** 28051,28133 ****
  .PP
  \fIMicroBlaze Options\fR
  .IX Subsection "MicroBlaze Options"
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  Use software emulation for floating point (default).
! .IP "\fB\-mhard\-float\fR" 4
  .IX Item "-mhard-float"
! Use hardware floating-point instructions.
! .IP "\fB\-mmemcpy\fR" 4
  .IX Item "-mmemcpy"
  Do not optimize block moves, use \f(CW\*(C`memcpy\*(C'\fR.
! .IP "\fB\-mno\-clearbss\fR" 4
  .IX Item "-mno-clearbss"
  This option is deprecated.  Use \fB\-fno\-zero\-initialized\-in\-bss\fR instead.
! .IP "\fB\-mcpu=\fR\fIcpu-type\fR" 4
  .IX Item "-mcpu=cpu-type"
! Use features of, and schedule code for, the given \s-1CPU.\s0
! Supported values are in the format \fBv\fR\fIX\fR\fB.\fR\fI\s-1YY\s0\fR\fB.\fR\fIZ\fR,
! where \fIX\fR is a major version, \fI\s-1YY\s0\fR is the minor version, and
  \&\fIZ\fR is compatibility code.  Example values are \fBv3.00.a\fR,
  \&\fBv4.00.b\fR, \fBv5.00.a\fR, \fBv5.00.b\fR, \fBv6.00.a\fR.
! .IP "\fB\-mxl\-soft\-mul\fR" 4
  .IX Item "-mxl-soft-mul"
  Use software multiply emulation (default).
! .IP "\fB\-mxl\-soft\-div\fR" 4
  .IX Item "-mxl-soft-div"
  Use software emulation for divides (default).
! .IP "\fB\-mxl\-barrel\-shift\fR" 4
  .IX Item "-mxl-barrel-shift"
  Use the hardware barrel shifter.
! .IP "\fB\-mxl\-pattern\-compare\fR" 4
  .IX Item "-mxl-pattern-compare"
  Use pattern compare instructions.
! .IP "\fB\-msmall\-divides\fR" 4
  .IX Item "-msmall-divides"
  Use table lookup optimization for small signed integer divisions.
! .IP "\fB\-mxl\-stack\-check\fR" 4
  .IX Item "-mxl-stack-check"
  This option is deprecated.  Use \fB\-fstack\-check\fR instead.
! .IP "\fB\-mxl\-gp\-opt\fR" 4
  .IX Item "-mxl-gp-opt"
! Use GP-relative \f(CW\*(C`.sdata\*(C'\fR/\f(CW\*(C`.sbss\*(C'\fR sections.
! .IP "\fB\-mxl\-multiply\-high\fR" 4
  .IX Item "-mxl-multiply-high"
  Use multiply high instructions for high part of 32x32 multiply.
! .IP "\fB\-mxl\-float\-convert\fR" 4
  .IX Item "-mxl-float-convert"
! Use hardware floating-point conversion instructions.
! .IP "\fB\-mxl\-float\-sqrt\fR" 4
  .IX Item "-mxl-float-sqrt"
! Use hardware floating-point square root instruction.
! .IP "\fB\-mbig\-endian\fR" 4
  .IX Item "-mbig-endian"
! Generate code for a big-endian target.
! .IP "\fB\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
! Generate code for a little-endian target.
! .IP "\fB\-mxl\-reorder\fR" 4
  .IX Item "-mxl-reorder"
  Use reorder instructions (swap and byte reversed load/store).
! .IP "\fB\-mxl\-mode\-\fR\fIapp-model\fR" 4
  .IX Item "-mxl-mode-app-model"
! Select application model \fIapp-model\fR.  Valid models are
  .RS 4
! .IP "\fBexecutable\fR" 4
  .IX Item "executable"
  normal executable (default), uses startup code \fIcrt0.o\fR.
! .IP "\fBxmdstub\fR" 4
  .IX Item "xmdstub"
! for use with Xilinx Microprocessor Debugger (\s-1XMD\s0) based
  software intrusive debug agent called xmdstub. This uses startup file
  \&\fIcrt1.o\fR and sets the start address of the program to 0x800.
! .IP "\fBbootstrap\fR" 4
  .IX Item "bootstrap"
  for applications that are loaded using a bootloader.
  This model uses startup file \fIcrt2.o\fR which does not contain a processor
  reset vector handler. This is suitable for transferring control on a
  processor reset to the bootloader rather than the application.
! .IP "\fBnovectors\fR" 4
  .IX Item "novectors"
  for applications that do not require any of the
  MicroBlaze vectors. This option may be useful for applications running
--- 27986,28068 ----
  .PP
  \fIMicroBlaze Options\fR
  .IX Subsection "MicroBlaze Options"
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  Use software emulation for floating point (default).
! .IP \fB\-mhard\-float\fR 4
  .IX Item "-mhard-float"
! Use hardware floating\-point instructions.
! .IP \fB\-mmemcpy\fR 4
  .IX Item "-mmemcpy"
  Do not optimize block moves, use \f(CW\*(C`memcpy\*(C'\fR.
! .IP \fB\-mno\-clearbss\fR 4
  .IX Item "-mno-clearbss"
  This option is deprecated.  Use \fB\-fno\-zero\-initialized\-in\-bss\fR instead.
! .IP \fB\-mcpu=\fR\fIcpu\-type\fR 4
  .IX Item "-mcpu=cpu-type"
! Use features of, and schedule code for, the given CPU.
! Supported values are in the format \fBv\fR\fIX\fR\fB.\fR\fIYY\fR\fB.\fR\fIZ\fR,
! where \fIX\fR is a major version, \fIYY\fR is the minor version, and
  \&\fIZ\fR is compatibility code.  Example values are \fBv3.00.a\fR,
  \&\fBv4.00.b\fR, \fBv5.00.a\fR, \fBv5.00.b\fR, \fBv6.00.a\fR.
! .IP \fB\-mxl\-soft\-mul\fR 4
  .IX Item "-mxl-soft-mul"
  Use software multiply emulation (default).
! .IP \fB\-mxl\-soft\-div\fR 4
  .IX Item "-mxl-soft-div"
  Use software emulation for divides (default).
! .IP \fB\-mxl\-barrel\-shift\fR 4
  .IX Item "-mxl-barrel-shift"
  Use the hardware barrel shifter.
! .IP \fB\-mxl\-pattern\-compare\fR 4
  .IX Item "-mxl-pattern-compare"
  Use pattern compare instructions.
! .IP \fB\-msmall\-divides\fR 4
  .IX Item "-msmall-divides"
  Use table lookup optimization for small signed integer divisions.
! .IP \fB\-mxl\-stack\-check\fR 4
  .IX Item "-mxl-stack-check"
  This option is deprecated.  Use \fB\-fstack\-check\fR instead.
! .IP \fB\-mxl\-gp\-opt\fR 4
  .IX Item "-mxl-gp-opt"
! Use GP\-relative \f(CW\*(C`.sdata\*(C'\fR/\f(CW\*(C`.sbss\*(C'\fR sections.
! .IP \fB\-mxl\-multiply\-high\fR 4
  .IX Item "-mxl-multiply-high"
  Use multiply high instructions for high part of 32x32 multiply.
! .IP \fB\-mxl\-float\-convert\fR 4
  .IX Item "-mxl-float-convert"
! Use hardware floating\-point conversion instructions.
! .IP \fB\-mxl\-float\-sqrt\fR 4
  .IX Item "-mxl-float-sqrt"
! Use hardware floating\-point square root instruction.
! .IP \fB\-mbig\-endian\fR 4
  .IX Item "-mbig-endian"
! Generate code for a big\-endian target.
! .IP \fB\-mlittle\-endian\fR 4
  .IX Item "-mlittle-endian"
! Generate code for a little\-endian target.
! .IP \fB\-mxl\-reorder\fR 4
  .IX Item "-mxl-reorder"
  Use reorder instructions (swap and byte reversed load/store).
! .IP \fB\-mxl\-mode\-\fR\fIapp\-model\fR 4
  .IX Item "-mxl-mode-app-model"
! Select application model \fIapp\-model\fR.  Valid models are
  .RS 4
! .IP \fBexecutable\fR 4
  .IX Item "executable"
  normal executable (default), uses startup code \fIcrt0.o\fR.
! .IP \fBxmdstub\fR 4
  .IX Item "xmdstub"
! for use with Xilinx Microprocessor Debugger (XMD) based
  software intrusive debug agent called xmdstub. This uses startup file
  \&\fIcrt1.o\fR and sets the start address of the program to 0x800.
! .IP \fBbootstrap\fR 4
  .IX Item "bootstrap"
  for applications that are loaded using a bootloader.
  This model uses startup file \fIcrt2.o\fR which does not contain a processor
  reset vector handler. This is suitable for transferring control on a
  processor reset to the bootloader rather than the application.
! .IP \fBnovectors\fR 4
  .IX Item "novectors"
  for applications that do not require any of the
  MicroBlaze vectors. This option may be useful for applications running
*************** within a monitoring application. This mo
*** 28135,28163 ****
  .RE
  .RS 4
  .Sp
! Option \fB\-xl\-mode\-\fR\fIapp-model\fR is a deprecated alias for
! \&\fB\-mxl\-mode\-\fR\fIapp-model\fR.
  .RE
! .IP "\fB\-mpic\-data\-is\-text\-relative\fR" 4
  .IX Item "-mpic-data-is-text-relative"
  Assume that the displacement between the text and data segments is fixed
  at static link time.  This allows data to be referenced by offset from start of
! text address instead of \s-1GOT\s0 since PC-relative addressing is not supported.
  .PP
! \fI\s-1MIPS\s0 Options\fR
  .IX Subsection "MIPS Options"
! .IP "\fB\-EB\fR" 4
  .IX Item "-EB"
! Generate big-endian code.
! .IP "\fB\-EL\fR" 4
  .IX Item "-EL"
! Generate little-endian code.  This is the default for \fBmips*el\-*\-*\fR
  configurations.
! .IP "\fB\-march=\fR\fIarch\fR" 4
  .IX Item "-march=arch"
  Generate code that runs on \fIarch\fR, which can be the name of a
! generic \s-1MIPS ISA,\s0 or the name of a particular processor.
! The \s-1ISA\s0 names are:
  \&\fBmips1\fR, \fBmips2\fR, \fBmips3\fR, \fBmips4\fR,
  \&\fBmips32\fR, \fBmips32r2\fR, \fBmips32r3\fR, \fBmips32r5\fR,
  \&\fBmips32r6\fR, \fBmips64\fR, \fBmips64r2\fR, \fBmips64r3\fR,
--- 28070,28098 ----
  .RE
  .RS 4
  .Sp
! Option \fB\-xl\-mode\-\fR\fIapp\-model\fR is a deprecated alias for
! \&\fB\-mxl\-mode\-\fR\fIapp\-model\fR.
  .RE
! .IP \fB\-mpic\-data\-is\-text\-relative\fR 4
  .IX Item "-mpic-data-is-text-relative"
  Assume that the displacement between the text and data segments is fixed
  at static link time.  This allows data to be referenced by offset from start of
! text address instead of GOT since PC\-relative addressing is not supported.
  .PP
! \fIMIPS Options\fR
  .IX Subsection "MIPS Options"
! .IP \fB\-EB\fR 4
  .IX Item "-EB"
! Generate big\-endian code.
! .IP \fB\-EL\fR 4
  .IX Item "-EL"
! Generate little\-endian code.  This is the default for \fBmips*el\-*\-*\fR
  configurations.
! .IP \fB\-march=\fR\fIarch\fR 4
  .IX Item "-march=arch"
  Generate code that runs on \fIarch\fR, which can be the name of a
! generic MIPS ISA, or the name of a particular processor.
! The ISA names are:
  \&\fBmips1\fR, \fBmips2\fR, \fBmips3\fR, \fBmips4\fR,
  \&\fBmips32\fR, \fBmips32r2\fR, \fBmips32r3\fR, \fBmips32r5\fR,
  \&\fBmips32r6\fR, \fBmips64\fR, \fBmips64r2\fR, \fBmips64r3\fR,
*************** The processor names are:
*** 28192,28204 ****
  \&\fBvr4100\fR, \fBvr4111\fR, \fBvr4120\fR, \fBvr4130\fR, \fBvr4300\fR,
  \&\fBvr5000\fR, \fBvr5400\fR, \fBvr5500\fR,
  \&\fBxlr\fR and \fBxlp\fR.
! The special value \fBfrom-abi\fR selects the
! most compatible architecture for the selected \s-1ABI\s0 (that is,
  \&\fBmips1\fR for 32\-bit ABIs and \fBmips3\fR for 64\-bit ABIs).
  .Sp
  The native Linux/GNU toolchain also supports the value \fBnative\fR,
  which selects the best architecture option for the host processor.
! \&\fB\-march=native\fR has no effect if \s-1GCC\s0 does not recognize
  the processor.
  .Sp
  In processor names, a final \fB000\fR can be abbreviated as \fBk\fR
--- 28127,28139 ----
  \&\fBvr4100\fR, \fBvr4111\fR, \fBvr4120\fR, \fBvr4130\fR, \fBvr4300\fR,
  \&\fBvr5000\fR, \fBvr5400\fR, \fBvr5500\fR,
  \&\fBxlr\fR and \fBxlp\fR.
! The special value \fBfrom\-abi\fR selects the
! most compatible architecture for the selected ABI (that is,
  \&\fBmips1\fR for 32\-bit ABIs and \fBmips3\fR for 64\-bit ABIs).
  .Sp
  The native Linux/GNU toolchain also supports the value \fBnative\fR,
  which selects the best architecture option for the host processor.
! \&\fB\-march=native\fR has no effect if GCC does not recognize
  the processor.
  .Sp
  In processor names, a final \fB000\fR can be abbreviated as \fBk\fR
*************** For compatibility reasons, \fIn\fR\fBf\f
*** 28214,28437 ****
  for \fIn\fR\fBf2_1\fR while \fIn\fR\fBx\fR and \fIb\fR\fBfx\fR are
  accepted as synonyms for \fIn\fR\fBf1_1\fR.
  .Sp
! \&\s-1GCC\s0 defines two macros based on the value of this option.  The first
  is \f(CW\*(C`_MIPS_ARCH\*(C'\fR, which gives the name of target architecture, as
! a string.  The second has the form \f(CW\*(C`_MIPS_ARCH_\f(CIfoo\f(CW\*(C'\fR,
  where \fIfoo\fR is the capitalized value of \f(CW\*(C`_MIPS_ARCH\*(C'\fR.
  For example, \fB\-march=r2000\fR sets \f(CW\*(C`_MIPS_ARCH\*(C'\fR
  to \f(CW"r2000"\fR and defines the macro \f(CW\*(C`_MIPS_ARCH_R2000\*(C'\fR.
  .Sp
  Note that the \f(CW\*(C`_MIPS_ARCH\*(C'\fR macro uses the processor names given
  above.  In other words, it has the full prefix and does not
! abbreviate \fB000\fR as \fBk\fR.  In the case of \fBfrom-abi\fR,
  the macro names the resolved architecture (either \f(CW"mips1"\fR or
  \&\f(CW"mips3"\fR).  It names the default architecture when no
  \&\fB\-march\fR option is given.
! .IP "\fB\-mtune=\fR\fIarch\fR" 4
  .IX Item "-mtune=arch"
  Optimize for \fIarch\fR.  Among other things, this option controls
  the way instructions are scheduled, and the perceived cost of arithmetic
  operations.  The list of \fIarch\fR values is the same as for
  \&\fB\-march\fR.
  .Sp
! When this option is not used, \s-1GCC\s0 optimizes for the processor
  specified by \fB\-march\fR.  By using \fB\-march\fR and
  \&\fB\-mtune\fR together, it is possible to generate code that
  runs on a family of processors, but optimize the code for one
  particular member of that family.
  .Sp
  \&\fB\-mtune\fR defines the macros \f(CW\*(C`_MIPS_TUNE\*(C'\fR and
! \&\f(CW\*(C`_MIPS_TUNE_\f(CIfoo\f(CW\*(C'\fR, which work in the same way as the
  \&\fB\-march\fR ones described above.
! .IP "\fB\-mips1\fR" 4
  .IX Item "-mips1"
  Equivalent to \fB\-march=mips1\fR.
! .IP "\fB\-mips2\fR" 4
  .IX Item "-mips2"
  Equivalent to \fB\-march=mips2\fR.
! .IP "\fB\-mips3\fR" 4
  .IX Item "-mips3"
  Equivalent to \fB\-march=mips3\fR.
! .IP "\fB\-mips4\fR" 4
  .IX Item "-mips4"
  Equivalent to \fB\-march=mips4\fR.
! .IP "\fB\-mips32\fR" 4
  .IX Item "-mips32"
  Equivalent to \fB\-march=mips32\fR.
! .IP "\fB\-mips32r3\fR" 4
  .IX Item "-mips32r3"
  Equivalent to \fB\-march=mips32r3\fR.
! .IP "\fB\-mips32r5\fR" 4
  .IX Item "-mips32r5"
  Equivalent to \fB\-march=mips32r5\fR.
! .IP "\fB\-mips32r6\fR" 4
  .IX Item "-mips32r6"
  Equivalent to \fB\-march=mips32r6\fR.
! .IP "\fB\-mips64\fR" 4
  .IX Item "-mips64"
  Equivalent to \fB\-march=mips64\fR.
! .IP "\fB\-mips64r2\fR" 4
  .IX Item "-mips64r2"
  Equivalent to \fB\-march=mips64r2\fR.
! .IP "\fB\-mips64r3\fR" 4
  .IX Item "-mips64r3"
  Equivalent to \fB\-march=mips64r3\fR.
! .IP "\fB\-mips64r5\fR" 4
  .IX Item "-mips64r5"
  Equivalent to \fB\-march=mips64r5\fR.
! .IP "\fB\-mips64r6\fR" 4
  .IX Item "-mips64r6"
  Equivalent to \fB\-march=mips64r6\fR.
! .IP "\fB\-mips16\fR" 4
  .IX Item "-mips16"
  .PD 0
! .IP "\fB\-mno\-mips16\fR" 4
  .IX Item "-mno-mips16"
  .PD
! Generate (do not generate) \s-1MIPS16\s0 code.  If \s-1GCC\s0 is targeting a
! \&\s-1MIPS32\s0 or \s-1MIPS64\s0 architecture, it makes use of the MIPS16e \s-1ASE.\s0
  .Sp
! \&\s-1MIPS16\s0 code generation can also be controlled on a per-function basis
  by means of \f(CW\*(C`mips16\*(C'\fR and \f(CW\*(C`nomips16\*(C'\fR attributes.
! .IP "\fB\-mmips16e2\fR" 4
  .IX Item "-mmips16e2"
  .PD 0
! .IP "\fB\-mno\-mips16e2\fR" 4
  .IX Item "-mno-mips16e2"
  .PD
! Use (do not use) the MIPS16e2 \s-1ASE.\s0  This option modifies the behavior
! of the \fB\-mips16\fR option such that it targets the MIPS16e2 \s-1ASE.\s0
! .IP "\fB\-mflip\-mips16\fR" 4
  .IX Item "-mflip-mips16"
! Generate \s-1MIPS16\s0 code on alternating functions.  This option is provided
  for regression testing of mixed MIPS16/non\-MIPS16 code generation, and is
  not intended for ordinary use in compiling user code.
! .IP "\fB\-minterlink\-compressed\fR" 4
  .IX Item "-minterlink-compressed"
  .PD 0
! .IP "\fB\-mno\-interlink\-compressed\fR" 4
  .IX Item "-mno-interlink-compressed"
  .PD
! Require (do not require) that code using the standard (uncompressed) \s-1MIPS ISA\s0
! be link-compatible with \s-1MIPS16\s0 and microMIPS code, and vice versa.
  .Sp
! For example, code using the standard \s-1ISA\s0 encoding cannot jump directly
! to \s-1MIPS16\s0 or microMIPS code; it must either use a call or an indirect jump.
! \&\fB\-minterlink\-compressed\fR therefore disables direct jumps unless \s-1GCC\s0
  knows that the target of the jump is not compressed.
! .IP "\fB\-minterlink\-mips16\fR" 4
  .IX Item "-minterlink-mips16"
  .PD 0
! .IP "\fB\-mno\-interlink\-mips16\fR" 4
  .IX Item "-mno-interlink-mips16"
  .PD
  Aliases of \fB\-minterlink\-compressed\fR and
! \&\fB\-mno\-interlink\-compressed\fR.  These options predate the microMIPS \s-1ASE\s0
  and are retained for backwards compatibility.
! .IP "\fB\-mabi=32\fR" 4
  .IX Item "-mabi=32"
  .PD 0
! .IP "\fB\-mabi=o64\fR" 4
  .IX Item "-mabi=o64"
! .IP "\fB\-mabi=n32\fR" 4
  .IX Item "-mabi=n32"
! .IP "\fB\-mabi=64\fR" 4
  .IX Item "-mabi=64"
! .IP "\fB\-mabi=eabi\fR" 4
  .IX Item "-mabi=eabi"
  .PD
! Generate code for the given \s-1ABI.\s0
  .Sp
! Note that the \s-1EABI\s0 has a 32\-bit and a 64\-bit variant.  \s-1GCC\s0 normally
  generates 64\-bit code when you select a 64\-bit architecture, but you
  can use \fB\-mgp32\fR to get 32\-bit code instead.
  .Sp
! For information about the O64 \s-1ABI,\s0 see
  <\fBhttps://gcc.gnu.org/projects/mipso64\-abi.html\fR>.
  .Sp
! \&\s-1GCC\s0 supports a variant of the o32 \s-1ABI\s0 in which floating-point registers
  are 64 rather than 32 bits wide.  You can select this combination with
! \&\fB\-mabi=32\fR \fB\-mfp64\fR.  This \s-1ABI\s0 relies on the \f(CW\*(C`mthc1\*(C'\fR
  and \f(CW\*(C`mfhc1\*(C'\fR instructions and is therefore only supported for
! \&\s-1MIPS32R2, MIPS32R3\s0 and \s-1MIPS32R5\s0 processors.
  .Sp
  The register assignments for arguments and return values remain the
  same, but each scalar value is passed in a single 64\-bit register
  rather than a pair of 32\-bit registers.  For example, scalar
! floating-point values are returned in \fB\f(CB$f0\fB\fR only, not a
! \&\fB\f(CB$f0\fB\fR/\fB\f(CB$f1\fB\fR pair.  The set of call-saved registers also
! remains the same in that the even-numbered double-precision registers
  are saved.
  .Sp
! Two additional variants of the o32 \s-1ABI\s0 are supported to enable
! a transition from 32\-bit to 64\-bit registers.  These are \s-1FPXX\s0
! (\fB\-mfpxx\fR) and \s-1FP64A\s0 (\fB\-mfp64\fR \fB\-mno\-odd\-spreg\fR).
! The \s-1FPXX\s0 extension mandates that all code must execute correctly
  when run using 32\-bit or 64\-bit registers.  The code can be interlinked
! with either \s-1FP32\s0 or \s-1FP64,\s0 but not both.
! The \s-1FP64A\s0 extension is similar to the \s-1FP64\s0 extension but forbids the
! use of odd-numbered single-precision registers.  This can be used
! in conjunction with the \f(CW\*(C`FRE\*(C'\fR mode of FPUs in \s-1MIPS32R5\s0
! processors and allows both \s-1FP32\s0 and \s-1FP64A\s0 code to interlink and
! run in the same process without changing \s-1FPU\s0 modes.
! .IP "\fB\-mabicalls\fR" 4
  .IX Item "-mabicalls"
  .PD 0
! .IP "\fB\-mno\-abicalls\fR" 4
  .IX Item "-mno-abicalls"
  .PD
  Generate (do not generate) code that is suitable for SVR4\-style
  dynamic objects.  \fB\-mabicalls\fR is the default for SVR4\-based
  systems.
! .IP "\fB\-mshared\fR" 4
  .IX Item "-mshared"
  .PD 0
! .IP "\fB\-mno\-shared\fR" 4
  .IX Item "-mno-shared"
  .PD
! Generate (do not generate) code that is fully position-independent,
  and that can therefore be linked into shared libraries.  This option
  only affects \fB\-mabicalls\fR.
  .Sp
! All \fB\-mabicalls\fR code has traditionally been position-independent,
  regardless of options like \fB\-fPIC\fR and \fB\-fpic\fR.  However,
! as an extension, the \s-1GNU\s0 toolchain allows executables to use absolute
! accesses for locally-binding symbols.  It can also use shorter \s-1GP\s0
! initialization sequences and generate direct calls to locally-defined
  functions.  This mode is selected by \fB\-mno\-shared\fR.
  .Sp
  \&\fB\-mno\-shared\fR depends on binutils 2.16 or higher and generates
! objects that can only be linked by the \s-1GNU\s0 linker.  However, the option
! does not affect the \s-1ABI\s0 of the final executable; it only affects the \s-1ABI\s0
  of relocatable objects.  Using \fB\-mno\-shared\fR generally makes
  executables both smaller and quicker.
  .Sp
  \&\fB\-mshared\fR is the default.
! .IP "\fB\-mplt\fR" 4
  .IX Item "-mplt"
  .PD 0
! .IP "\fB\-mno\-plt\fR" 4
  .IX Item "-mno-plt"
  .PD
  Assume (do not assume) that the static and dynamic linkers
  support PLTs and copy relocations.  This option only affects
! \&\fB\-mno\-shared \-mabicalls\fR.  For the n64 \s-1ABI,\s0 this option
  has no effect without \fB\-msym32\fR.
  .Sp
  You can make \fB\-mplt\fR the default by configuring
! \&\s-1GCC\s0 with \fB\-\-with\-mips\-plt\fR.  The default is
  \&\fB\-mno\-plt\fR otherwise.
! .IP "\fB\-mxgot\fR" 4
  .IX Item "-mxgot"
  .PD 0
! .IP "\fB\-mno\-xgot\fR" 4
  .IX Item "-mno-xgot"
  .PD
  Lift (do not lift) the usual restrictions on the size of the global
  offset table.
  .Sp
! \&\s-1GCC\s0 normally uses a single instruction to load values from the \s-1GOT.\s0
! While this is relatively efficient, it only works if the \s-1GOT\s0
  is smaller than about 64k.  Anything larger causes the linker
  to report an error such as:
  .Sp
--- 28149,28372 ----
  for \fIn\fR\fBf2_1\fR while \fIn\fR\fBx\fR and \fIb\fR\fBfx\fR are
  accepted as synonyms for \fIn\fR\fBf1_1\fR.
  .Sp
! GCC defines two macros based on the value of this option.  The first
  is \f(CW\*(C`_MIPS_ARCH\*(C'\fR, which gives the name of target architecture, as
! a string.  The second has the form \f(CW\*(C`_MIPS_ARCH_\fR\f(CIfoo\fR\f(CW\*(C'\fR,
  where \fIfoo\fR is the capitalized value of \f(CW\*(C`_MIPS_ARCH\*(C'\fR.
  For example, \fB\-march=r2000\fR sets \f(CW\*(C`_MIPS_ARCH\*(C'\fR
  to \f(CW"r2000"\fR and defines the macro \f(CW\*(C`_MIPS_ARCH_R2000\*(C'\fR.
  .Sp
  Note that the \f(CW\*(C`_MIPS_ARCH\*(C'\fR macro uses the processor names given
  above.  In other words, it has the full prefix and does not
! abbreviate \fB000\fR as \fBk\fR.  In the case of \fBfrom\-abi\fR,
  the macro names the resolved architecture (either \f(CW"mips1"\fR or
  \&\f(CW"mips3"\fR).  It names the default architecture when no
  \&\fB\-march\fR option is given.
! .IP \fB\-mtune=\fR\fIarch\fR 4
  .IX Item "-mtune=arch"
  Optimize for \fIarch\fR.  Among other things, this option controls
  the way instructions are scheduled, and the perceived cost of arithmetic
  operations.  The list of \fIarch\fR values is the same as for
  \&\fB\-march\fR.
  .Sp
! When this option is not used, GCC optimizes for the processor
  specified by \fB\-march\fR.  By using \fB\-march\fR and
  \&\fB\-mtune\fR together, it is possible to generate code that
  runs on a family of processors, but optimize the code for one
  particular member of that family.
  .Sp
  \&\fB\-mtune\fR defines the macros \f(CW\*(C`_MIPS_TUNE\*(C'\fR and
! \&\f(CW\*(C`_MIPS_TUNE_\fR\f(CIfoo\fR\f(CW\*(C'\fR, which work in the same way as the
  \&\fB\-march\fR ones described above.
! .IP \fB\-mips1\fR 4
  .IX Item "-mips1"
  Equivalent to \fB\-march=mips1\fR.
! .IP \fB\-mips2\fR 4
  .IX Item "-mips2"
  Equivalent to \fB\-march=mips2\fR.
! .IP \fB\-mips3\fR 4
  .IX Item "-mips3"
  Equivalent to \fB\-march=mips3\fR.
! .IP \fB\-mips4\fR 4
  .IX Item "-mips4"
  Equivalent to \fB\-march=mips4\fR.
! .IP \fB\-mips32\fR 4
  .IX Item "-mips32"
  Equivalent to \fB\-march=mips32\fR.
! .IP \fB\-mips32r3\fR 4
  .IX Item "-mips32r3"
  Equivalent to \fB\-march=mips32r3\fR.
! .IP \fB\-mips32r5\fR 4
  .IX Item "-mips32r5"
  Equivalent to \fB\-march=mips32r5\fR.
! .IP \fB\-mips32r6\fR 4
  .IX Item "-mips32r6"
  Equivalent to \fB\-march=mips32r6\fR.
! .IP \fB\-mips64\fR 4
  .IX Item "-mips64"
  Equivalent to \fB\-march=mips64\fR.
! .IP \fB\-mips64r2\fR 4
  .IX Item "-mips64r2"
  Equivalent to \fB\-march=mips64r2\fR.
! .IP \fB\-mips64r3\fR 4
  .IX Item "-mips64r3"
  Equivalent to \fB\-march=mips64r3\fR.
! .IP \fB\-mips64r5\fR 4
  .IX Item "-mips64r5"
  Equivalent to \fB\-march=mips64r5\fR.
! .IP \fB\-mips64r6\fR 4
  .IX Item "-mips64r6"
  Equivalent to \fB\-march=mips64r6\fR.
! .IP \fB\-mips16\fR 4
  .IX Item "-mips16"
  .PD 0
! .IP \fB\-mno\-mips16\fR 4
  .IX Item "-mno-mips16"
  .PD
! Generate (do not generate) MIPS16 code.  If GCC is targeting a
! MIPS32 or MIPS64 architecture, it makes use of the MIPS16e ASE.
  .Sp
! MIPS16 code generation can also be controlled on a per\-function basis
  by means of \f(CW\*(C`mips16\*(C'\fR and \f(CW\*(C`nomips16\*(C'\fR attributes.
! .IP \fB\-mmips16e2\fR 4
  .IX Item "-mmips16e2"
  .PD 0
! .IP \fB\-mno\-mips16e2\fR 4
  .IX Item "-mno-mips16e2"
  .PD
! Use (do not use) the MIPS16e2 ASE.  This option modifies the behavior
! of the \fB\-mips16\fR option such that it targets the MIPS16e2 ASE.
! .IP \fB\-mflip\-mips16\fR 4
  .IX Item "-mflip-mips16"
! Generate MIPS16 code on alternating functions.  This option is provided
  for regression testing of mixed MIPS16/non\-MIPS16 code generation, and is
  not intended for ordinary use in compiling user code.
! .IP \fB\-minterlink\-compressed\fR 4
  .IX Item "-minterlink-compressed"
  .PD 0
! .IP \fB\-mno\-interlink\-compressed\fR 4
  .IX Item "-mno-interlink-compressed"
  .PD
! Require (do not require) that code using the standard (uncompressed) MIPS ISA
! be link\-compatible with MIPS16 and microMIPS code, and vice versa.
  .Sp
! For example, code using the standard ISA encoding cannot jump directly
! to MIPS16 or microMIPS code; it must either use a call or an indirect jump.
! \&\fB\-minterlink\-compressed\fR therefore disables direct jumps unless GCC
  knows that the target of the jump is not compressed.
! .IP \fB\-minterlink\-mips16\fR 4
  .IX Item "-minterlink-mips16"
  .PD 0
! .IP \fB\-mno\-interlink\-mips16\fR 4
  .IX Item "-mno-interlink-mips16"
  .PD
  Aliases of \fB\-minterlink\-compressed\fR and
! \&\fB\-mno\-interlink\-compressed\fR.  These options predate the microMIPS ASE
  and are retained for backwards compatibility.
! .IP \fB\-mabi=32\fR 4
  .IX Item "-mabi=32"
  .PD 0
! .IP \fB\-mabi=o64\fR 4
  .IX Item "-mabi=o64"
! .IP \fB\-mabi=n32\fR 4
  .IX Item "-mabi=n32"
! .IP \fB\-mabi=64\fR 4
  .IX Item "-mabi=64"
! .IP \fB\-mabi=eabi\fR 4
  .IX Item "-mabi=eabi"
  .PD
! Generate code for the given ABI.
  .Sp
! Note that the EABI has a 32\-bit and a 64\-bit variant.  GCC normally
  generates 64\-bit code when you select a 64\-bit architecture, but you
  can use \fB\-mgp32\fR to get 32\-bit code instead.
  .Sp
! For information about the O64 ABI, see
  <\fBhttps://gcc.gnu.org/projects/mipso64\-abi.html\fR>.
  .Sp
! GCC supports a variant of the o32 ABI in which floating\-point registers
  are 64 rather than 32 bits wide.  You can select this combination with
! \&\fB\-mabi=32\fR \fB\-mfp64\fR.  This ABI relies on the \f(CW\*(C`mthc1\*(C'\fR
  and \f(CW\*(C`mfhc1\*(C'\fR instructions and is therefore only supported for
! MIPS32R2, MIPS32R3 and MIPS32R5 processors.
  .Sp
  The register assignments for arguments and return values remain the
  same, but each scalar value is passed in a single 64\-bit register
  rather than a pair of 32\-bit registers.  For example, scalar
! floating\-point values are returned in \fR\f(CB$f0\fR\fB\fR only, not a
! \&\fB\fR\f(CB$f0\fR\fB\fR/\fB\fR\f(CB$f1\fR\fB\fR pair.  The set of call\-saved registers also
! remains the same in that the even\-numbered double\-precision registers
  are saved.
  .Sp
! Two additional variants of the o32 ABI are supported to enable
! a transition from 32\-bit to 64\-bit registers.  These are FPXX
! (\fB\-mfpxx\fR) and FP64A (\fB\-mfp64\fR \fB\-mno\-odd\-spreg\fR).
! The FPXX extension mandates that all code must execute correctly
  when run using 32\-bit or 64\-bit registers.  The code can be interlinked
! with either FP32 or FP64, but not both.
! The FP64A extension is similar to the FP64 extension but forbids the
! use of odd\-numbered single\-precision registers.  This can be used
! in conjunction with the \f(CW\*(C`FRE\*(C'\fR mode of FPUs in MIPS32R5
! processors and allows both FP32 and FP64A code to interlink and
! run in the same process without changing FPU modes.
! .IP \fB\-mabicalls\fR 4
  .IX Item "-mabicalls"
  .PD 0
! .IP \fB\-mno\-abicalls\fR 4
  .IX Item "-mno-abicalls"
  .PD
  Generate (do not generate) code that is suitable for SVR4\-style
  dynamic objects.  \fB\-mabicalls\fR is the default for SVR4\-based
  systems.
! .IP \fB\-mshared\fR 4
  .IX Item "-mshared"
  .PD 0
! .IP \fB\-mno\-shared\fR 4
  .IX Item "-mno-shared"
  .PD
! Generate (do not generate) code that is fully position\-independent,
  and that can therefore be linked into shared libraries.  This option
  only affects \fB\-mabicalls\fR.
  .Sp
! All \fB\-mabicalls\fR code has traditionally been position\-independent,
  regardless of options like \fB\-fPIC\fR and \fB\-fpic\fR.  However,
! as an extension, the GNU toolchain allows executables to use absolute
! accesses for locally\-binding symbols.  It can also use shorter GP
! initialization sequences and generate direct calls to locally\-defined
  functions.  This mode is selected by \fB\-mno\-shared\fR.
  .Sp
  \&\fB\-mno\-shared\fR depends on binutils 2.16 or higher and generates
! objects that can only be linked by the GNU linker.  However, the option
! does not affect the ABI of the final executable; it only affects the ABI
  of relocatable objects.  Using \fB\-mno\-shared\fR generally makes
  executables both smaller and quicker.
  .Sp
  \&\fB\-mshared\fR is the default.
! .IP \fB\-mplt\fR 4
  .IX Item "-mplt"
  .PD 0
! .IP \fB\-mno\-plt\fR 4
  .IX Item "-mno-plt"
  .PD
  Assume (do not assume) that the static and dynamic linkers
  support PLTs and copy relocations.  This option only affects
! \&\fB\-mno\-shared \-mabicalls\fR.  For the n64 ABI, this option
  has no effect without \fB\-msym32\fR.
  .Sp
  You can make \fB\-mplt\fR the default by configuring
! GCC with \fB\-\-with\-mips\-plt\fR.  The default is
  \&\fB\-mno\-plt\fR otherwise.
! .IP \fB\-mxgot\fR 4
  .IX Item "-mxgot"
  .PD 0
! .IP \fB\-mno\-xgot\fR 4
  .IX Item "-mno-xgot"
  .PD
  Lift (do not lift) the usual restrictions on the size of the global
  offset table.
  .Sp
! GCC normally uses a single instruction to load values from the GOT.
! While this is relatively efficient, it only works if the GOT
  is smaller than about 64k.  Anything larger causes the linker
  to report an error such as:
  .Sp
*************** value of a global symbol.
*** 28446,28735 ****
  .Sp
  Note that some linkers can create multiple GOTs.  If you have such a
  linker, you should only need to use \fB\-mxgot\fR when a single object
! file accesses more than 64k's worth of \s-1GOT\s0 entries.  Very few do.
  .Sp
! These options have no effect unless \s-1GCC\s0 is generating position
  independent code.
! .IP "\fB\-mgp32\fR" 4
  .IX Item "-mgp32"
! Assume that general-purpose registers are 32 bits wide.
! .IP "\fB\-mgp64\fR" 4
  .IX Item "-mgp64"
! Assume that general-purpose registers are 64 bits wide.
! .IP "\fB\-mfp32\fR" 4
  .IX Item "-mfp32"
! Assume that floating-point registers are 32 bits wide.
! .IP "\fB\-mfp64\fR" 4
  .IX Item "-mfp64"
! Assume that floating-point registers are 64 bits wide.
! .IP "\fB\-mfpxx\fR" 4
  .IX Item "-mfpxx"
! Do not assume the width of floating-point registers.
! .IP "\fB\-mhard\-float\fR" 4
  .IX Item "-mhard-float"
! Use floating-point coprocessor instructions.
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
! Do not use floating-point coprocessor instructions.  Implement
! floating-point calculations using library calls instead.
! .IP "\fB\-mno\-float\fR" 4
  .IX Item "-mno-float"
  Equivalent to \fB\-msoft\-float\fR, but additionally asserts that the
! program being compiled does not perform any floating-point operations.
! This option is presently supported only by some bare-metal \s-1MIPS\s0
  configurations, where it may select a special set of libraries
! that lack all floating-point support (including, for example, the
! floating-point \f(CW\*(C`printf\*(C'\fR formats).
  If code compiled with \fB\-mno\-float\fR accidentally contains
! floating-point operations, it is likely to suffer a link-time
! or run-time failure.
! .IP "\fB\-msingle\-float\fR" 4
  .IX Item "-msingle-float"
! Assume that the floating-point coprocessor only supports single-precision
  operations.
! .IP "\fB\-mdouble\-float\fR" 4
  .IX Item "-mdouble-float"
! Assume that the floating-point coprocessor supports double-precision
  operations.  This is the default.
! .IP "\fB\-modd\-spreg\fR" 4
  .IX Item "-modd-spreg"
  .PD 0
! .IP "\fB\-mno\-odd\-spreg\fR" 4
  .IX Item "-mno-odd-spreg"
  .PD
! Enable the use of odd-numbered single-precision floating-point registers
! for the o32 \s-1ABI.\s0  This is the default for processors that are known to
! support these registers.  When using the o32 \s-1FPXX ABI,\s0 \fB\-mno\-odd\-spreg\fR
  is set by default.
! .IP "\fB\-mabs=2008\fR" 4
  .IX Item "-mabs=2008"
  .PD 0
! .IP "\fB\-mabs=legacy\fR" 4
  .IX Item "-mabs=legacy"
  .PD
! These options control the treatment of the special not-a-number (NaN)
! \&\s-1IEEE 754\s0 floating-point data with the \f(CW\*(C`abs.\f(CIfmt\f(CW\*(C'\fR and
! \&\f(CW\*(C`neg.\f(CIfmt\f(CW\*(C'\fR machine instructions.
  .Sp
  By default or when \fB\-mabs=legacy\fR is used the legacy
  treatment is selected.  In this case these instructions are considered
  arithmetic and avoided where correct operation is required and the
  input operand might be a NaN.  A longer sequence of instructions that
! manipulate the sign bit of floating-point datum manually is used
  instead unless the \fB\-ffinite\-math\-only\fR option has also been
  specified.
  .Sp
! The \fB\-mabs=2008\fR option selects the \s-1IEEE 754\-2008\s0 treatment.  In
! this case these instructions are considered non-arithmetic and therefore
  operating correctly in all cases, including in particular where the
  input operand is a NaN.  These instructions are therefore always used
  for the respective operations.
! .IP "\fB\-mnan=2008\fR" 4
  .IX Item "-mnan=2008"
  .PD 0
! .IP "\fB\-mnan=legacy\fR" 4
  .IX Item "-mnan=legacy"
  .PD
! These options control the encoding of the special not-a-number (NaN)
! \&\s-1IEEE 754\s0 floating-point data.
  .Sp
  The \fB\-mnan=legacy\fR option selects the legacy encoding.  In this
  case quiet NaNs (qNaNs) are denoted by the first bit of their trailing
  significand field being 0, whereas signaling NaNs (sNaNs) are denoted
  by the first bit of their trailing significand field being 1.
  .Sp
! The \fB\-mnan=2008\fR option selects the \s-1IEEE 754\-2008\s0 encoding.  In
  this case qNaNs are denoted by the first bit of their trailing
  significand field being 1, whereas sNaNs are denoted by the first bit of
  their trailing significand field being 0.
  .Sp
! The default is \fB\-mnan=legacy\fR unless \s-1GCC\s0 has been configured with
  \&\fB\-\-with\-nan=2008\fR.
! .IP "\fB\-mllsc\fR" 4
  .IX Item "-mllsc"
  .PD 0
! .IP "\fB\-mno\-llsc\fR" 4
  .IX Item "-mno-llsc"
  .PD
  Use (do not use) \fBll\fR, \fBsc\fR, and \fBsync\fR instructions to
! implement atomic memory built-in functions.  When neither option is
! specified, \s-1GCC\s0 uses the instructions if the target architecture
  supports them.
  .Sp
  \&\fB\-mllsc\fR is useful if the runtime environment can emulate the
  instructions and \fB\-mno\-llsc\fR can be useful when compiling for
  nonstandard ISAs.  You can make either option the default by
! configuring \s-1GCC\s0 with \fB\-\-with\-llsc\fR and \fB\-\-without\-llsc\fR
  respectively.  \fB\-\-with\-llsc\fR is the default for some
  configurations; see the installation documentation for details.
! .IP "\fB\-mdsp\fR" 4
  .IX Item "-mdsp"
  .PD 0
! .IP "\fB\-mno\-dsp\fR" 4
  .IX Item "-mno-dsp"
  .PD
! Use (do not use) revision 1 of the \s-1MIPS DSP ASE.\s0
    This option defines the
  preprocessor macro \f(CW\*(C`_\|_mips_dsp\*(C'\fR.  It also defines
  \&\f(CW\*(C`_\|_mips_dsp_rev\*(C'\fR to 1.
! .IP "\fB\-mdspr2\fR" 4
  .IX Item "-mdspr2"
  .PD 0
! .IP "\fB\-mno\-dspr2\fR" 4
  .IX Item "-mno-dspr2"
  .PD
! Use (do not use) revision 2 of the \s-1MIPS DSP ASE.\s0
    This option defines the
  preprocessor macros \f(CW\*(C`_\|_mips_dsp\*(C'\fR and \f(CW\*(C`_\|_mips_dspr2\*(C'\fR.
  It also defines \f(CW\*(C`_\|_mips_dsp_rev\*(C'\fR to 2.
! .IP "\fB\-msmartmips\fR" 4
  .IX Item "-msmartmips"
  .PD 0
! .IP "\fB\-mno\-smartmips\fR" 4
  .IX Item "-mno-smartmips"
  .PD
! Use (do not use) the \s-1MIPS\s0 SmartMIPS \s-1ASE.\s0
! .IP "\fB\-mpaired\-single\fR" 4
  .IX Item "-mpaired-single"
  .PD 0
! .IP "\fB\-mno\-paired\-single\fR" 4
  .IX Item "-mno-paired-single"
  .PD
! Use (do not use) paired-single floating-point instructions.
    This option requires
! hardware floating-point support to be enabled.
! .IP "\fB\-mdmx\fR" 4
  .IX Item "-mdmx"
  .PD 0
! .IP "\fB\-mno\-mdmx\fR" 4
  .IX Item "-mno-mdmx"
  .PD
! Use (do not use) \s-1MIPS\s0 Digital Media Extension instructions.
  This option can only be used when generating 64\-bit code and requires
! hardware floating-point support to be enabled.
! .IP "\fB\-mips3d\fR" 4
  .IX Item "-mips3d"
  .PD 0
! .IP "\fB\-mno\-mips3d\fR" 4
  .IX Item "-mno-mips3d"
  .PD
! Use (do not use) the \s-1MIPS\-3D ASE.\s0  
  The option \fB\-mips3d\fR implies \fB\-mpaired\-single\fR.
! .IP "\fB\-mmicromips\fR" 4
  .IX Item "-mmicromips"
  .PD 0
! .IP "\fB\-mno\-micromips\fR" 4
  .IX Item "-mno-micromips"
  .PD
  Generate (do not generate) microMIPS code.
  .Sp
! MicroMIPS code generation can also be controlled on a per-function basis
  by means of \f(CW\*(C`micromips\*(C'\fR and \f(CW\*(C`nomicromips\*(C'\fR attributes.
! .IP "\fB\-mmt\fR" 4
  .IX Item "-mmt"
  .PD 0
! .IP "\fB\-mno\-mt\fR" 4
  .IX Item "-mno-mt"
  .PD
! Use (do not use) \s-1MT\s0 Multithreading instructions.
! .IP "\fB\-mmcu\fR" 4
  .IX Item "-mmcu"
  .PD 0
! .IP "\fB\-mno\-mcu\fR" 4
  .IX Item "-mno-mcu"
  .PD
! Use (do not use) the \s-1MIPS MCU ASE\s0 instructions.
! .IP "\fB\-meva\fR" 4
  .IX Item "-meva"
  .PD 0
! .IP "\fB\-mno\-eva\fR" 4
  .IX Item "-mno-eva"
  .PD
! Use (do not use) the \s-1MIPS\s0 Enhanced Virtual Addressing instructions.
! .IP "\fB\-mvirt\fR" 4
  .IX Item "-mvirt"
  .PD 0
! .IP "\fB\-mno\-virt\fR" 4
  .IX Item "-mno-virt"
  .PD
! Use (do not use) the \s-1MIPS\s0 Virtualization (\s-1VZ\s0) instructions.
! .IP "\fB\-mxpa\fR" 4
  .IX Item "-mxpa"
  .PD 0
! .IP "\fB\-mno\-xpa\fR" 4
  .IX Item "-mno-xpa"
  .PD
! Use (do not use) the \s-1MIPS\s0 eXtended Physical Address (\s-1XPA\s0) instructions.
! .IP "\fB\-mcrc\fR" 4
  .IX Item "-mcrc"
  .PD 0
! .IP "\fB\-mno\-crc\fR" 4
  .IX Item "-mno-crc"
  .PD
! Use (do not use) the \s-1MIPS\s0 Cyclic Redundancy Check (\s-1CRC\s0) instructions.
! .IP "\fB\-mginv\fR" 4
  .IX Item "-mginv"
  .PD 0
! .IP "\fB\-mno\-ginv\fR" 4
  .IX Item "-mno-ginv"
  .PD
! Use (do not use) the \s-1MIPS\s0 Global INValidate (\s-1GINV\s0) instructions.
! .IP "\fB\-mloongson\-mmi\fR" 4
  .IX Item "-mloongson-mmi"
  .PD 0
! .IP "\fB\-mno\-loongson\-mmi\fR" 4
  .IX Item "-mno-loongson-mmi"
  .PD
! Use (do not use) the \s-1MIPS\s0 Loongson MultiMedia extensions Instructions (\s-1MMI\s0).
! .IP "\fB\-mloongson\-ext\fR" 4
  .IX Item "-mloongson-ext"
  .PD 0
! .IP "\fB\-mno\-loongson\-ext\fR" 4
  .IX Item "-mno-loongson-ext"
  .PD
! Use (do not use) the \s-1MIPS\s0 Loongson EXTensions (\s-1EXT\s0) instructions.
! .IP "\fB\-mloongson\-ext2\fR" 4
  .IX Item "-mloongson-ext2"
  .PD 0
! .IP "\fB\-mno\-loongson\-ext2\fR" 4
  .IX Item "-mno-loongson-ext2"
  .PD
! Use (do not use) the \s-1MIPS\s0 Loongson EXTensions r2 (\s-1EXT2\s0) instructions.
! .IP "\fB\-mlong64\fR" 4
  .IX Item "-mlong64"
  Force \f(CW\*(C`long\*(C'\fR types to be 64 bits wide.  See \fB\-mlong32\fR for
  an explanation of the default and the way that the pointer size is
  determined.
! .IP "\fB\-mlong32\fR" 4
  .IX Item "-mlong32"
  Force \f(CW\*(C`long\*(C'\fR, \f(CW\*(C`int\*(C'\fR, and pointer types to be 32 bits wide.
  .Sp
  The default size of \f(CW\*(C`int\*(C'\fRs, \f(CW\*(C`long\*(C'\fRs and pointers depends on
! the \s-1ABI.\s0  All the supported ABIs use 32\-bit \f(CW\*(C`int\*(C'\fRs.  The n64 \s-1ABI\s0
! uses 64\-bit \f(CW\*(C`long\*(C'\fRs, as does the 64\-bit \s-1EABI\s0; the others use
  32\-bit \f(CW\*(C`long\*(C'\fRs.  Pointers are the same size as \f(CW\*(C`long\*(C'\fRs,
  or the same size as integer registers, whichever is smaller.
! .IP "\fB\-msym32\fR" 4
  .IX Item "-msym32"
  .PD 0
! .IP "\fB\-mno\-sym32\fR" 4
  .IX Item "-mno-sym32"
  .PD
  Assume (do not assume) that all symbols have 32\-bit values, regardless
! of the selected \s-1ABI.\s0  This option is useful in combination with
! \&\fB\-mabi=64\fR and \fB\-mno\-abicalls\fR because it allows \s-1GCC\s0
  to generate shorter and faster references to symbolic addresses.
  .IP "\fB\-G\fR \fInum\fR" 4
  .IX Item "-G num"
! Put definitions of externally-visible data in a small data section
! if that data is no bigger than \fInum\fR bytes.  \s-1GCC\s0 can then generate
  more efficient accesses to the data; see \fB\-mgpopt\fR for details.
  .Sp
  The default \fB\-G\fR option depends on the configuration.
! .IP "\fB\-mlocal\-sdata\fR" 4
  .IX Item "-mlocal-sdata"
  .PD 0
! .IP "\fB\-mno\-local\-sdata\fR" 4
  .IX Item "-mno-local-sdata"
  .PD
  Extend (do not extend) the \fB\-G\fR behavior to local data too,
--- 28381,28670 ----
  .Sp
  Note that some linkers can create multiple GOTs.  If you have such a
  linker, you should only need to use \fB\-mxgot\fR when a single object
! file accesses more than 64k\*(Aqs worth of GOT entries.  Very few do.
  .Sp
! These options have no effect unless GCC is generating position
  independent code.
! .IP \fB\-mgp32\fR 4
  .IX Item "-mgp32"
! Assume that general\-purpose registers are 32 bits wide.
! .IP \fB\-mgp64\fR 4
  .IX Item "-mgp64"
! Assume that general\-purpose registers are 64 bits wide.
! .IP \fB\-mfp32\fR 4
  .IX Item "-mfp32"
! Assume that floating\-point registers are 32 bits wide.
! .IP \fB\-mfp64\fR 4
  .IX Item "-mfp64"
! Assume that floating\-point registers are 64 bits wide.
! .IP \fB\-mfpxx\fR 4
  .IX Item "-mfpxx"
! Do not assume the width of floating\-point registers.
! .IP \fB\-mhard\-float\fR 4
  .IX Item "-mhard-float"
! Use floating\-point coprocessor instructions.
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
! Do not use floating\-point coprocessor instructions.  Implement
! floating\-point calculations using library calls instead.
! .IP \fB\-mno\-float\fR 4
  .IX Item "-mno-float"
  Equivalent to \fB\-msoft\-float\fR, but additionally asserts that the
! program being compiled does not perform any floating\-point operations.
! This option is presently supported only by some bare\-metal MIPS
  configurations, where it may select a special set of libraries
! that lack all floating\-point support (including, for example, the
! floating\-point \f(CW\*(C`printf\*(C'\fR formats).
  If code compiled with \fB\-mno\-float\fR accidentally contains
! floating\-point operations, it is likely to suffer a link\-time
! or run\-time failure.
! .IP \fB\-msingle\-float\fR 4
  .IX Item "-msingle-float"
! Assume that the floating\-point coprocessor only supports single\-precision
  operations.
! .IP \fB\-mdouble\-float\fR 4
  .IX Item "-mdouble-float"
! Assume that the floating\-point coprocessor supports double\-precision
  operations.  This is the default.
! .IP \fB\-modd\-spreg\fR 4
  .IX Item "-modd-spreg"
  .PD 0
! .IP \fB\-mno\-odd\-spreg\fR 4
  .IX Item "-mno-odd-spreg"
  .PD
! Enable the use of odd\-numbered single\-precision floating\-point registers
! for the o32 ABI.  This is the default for processors that are known to
! support these registers.  When using the o32 FPXX ABI, \fB\-mno\-odd\-spreg\fR
  is set by default.
! .IP \fB\-mabs=2008\fR 4
  .IX Item "-mabs=2008"
  .PD 0
! .IP \fB\-mabs=legacy\fR 4
  .IX Item "-mabs=legacy"
  .PD
! These options control the treatment of the special not\-a\-number (NaN)
! IEEE 754 floating\-point data with the \f(CW\*(C`abs.\fR\f(CIfmt\fR\f(CW\*(C'\fR and
! \&\f(CW\*(C`neg.\fR\f(CIfmt\fR\f(CW\*(C'\fR machine instructions.
  .Sp
  By default or when \fB\-mabs=legacy\fR is used the legacy
  treatment is selected.  In this case these instructions are considered
  arithmetic and avoided where correct operation is required and the
  input operand might be a NaN.  A longer sequence of instructions that
! manipulate the sign bit of floating\-point datum manually is used
  instead unless the \fB\-ffinite\-math\-only\fR option has also been
  specified.
  .Sp
! The \fB\-mabs=2008\fR option selects the IEEE 754\-2008 treatment.  In
! this case these instructions are considered non\-arithmetic and therefore
  operating correctly in all cases, including in particular where the
  input operand is a NaN.  These instructions are therefore always used
  for the respective operations.
! .IP \fB\-mnan=2008\fR 4
  .IX Item "-mnan=2008"
  .PD 0
! .IP \fB\-mnan=legacy\fR 4
  .IX Item "-mnan=legacy"
  .PD
! These options control the encoding of the special not\-a\-number (NaN)
! IEEE 754 floating\-point data.
  .Sp
  The \fB\-mnan=legacy\fR option selects the legacy encoding.  In this
  case quiet NaNs (qNaNs) are denoted by the first bit of their trailing
  significand field being 0, whereas signaling NaNs (sNaNs) are denoted
  by the first bit of their trailing significand field being 1.
  .Sp
! The \fB\-mnan=2008\fR option selects the IEEE 754\-2008 encoding.  In
  this case qNaNs are denoted by the first bit of their trailing
  significand field being 1, whereas sNaNs are denoted by the first bit of
  their trailing significand field being 0.
  .Sp
! The default is \fB\-mnan=legacy\fR unless GCC has been configured with
  \&\fB\-\-with\-nan=2008\fR.
! .IP \fB\-mllsc\fR 4
  .IX Item "-mllsc"
  .PD 0
! .IP \fB\-mno\-llsc\fR 4
  .IX Item "-mno-llsc"
  .PD
  Use (do not use) \fBll\fR, \fBsc\fR, and \fBsync\fR instructions to
! implement atomic memory built\-in functions.  When neither option is
! specified, GCC uses the instructions if the target architecture
  supports them.
  .Sp
  \&\fB\-mllsc\fR is useful if the runtime environment can emulate the
  instructions and \fB\-mno\-llsc\fR can be useful when compiling for
  nonstandard ISAs.  You can make either option the default by
! configuring GCC with \fB\-\-with\-llsc\fR and \fB\-\-without\-llsc\fR
  respectively.  \fB\-\-with\-llsc\fR is the default for some
  configurations; see the installation documentation for details.
! .IP \fB\-mdsp\fR 4
  .IX Item "-mdsp"
  .PD 0
! .IP \fB\-mno\-dsp\fR 4
  .IX Item "-mno-dsp"
  .PD
! Use (do not use) revision 1 of the MIPS DSP ASE.
    This option defines the
  preprocessor macro \f(CW\*(C`_\|_mips_dsp\*(C'\fR.  It also defines
  \&\f(CW\*(C`_\|_mips_dsp_rev\*(C'\fR to 1.
! .IP \fB\-mdspr2\fR 4
  .IX Item "-mdspr2"
  .PD 0
! .IP \fB\-mno\-dspr2\fR 4
  .IX Item "-mno-dspr2"
  .PD
! Use (do not use) revision 2 of the MIPS DSP ASE.
    This option defines the
  preprocessor macros \f(CW\*(C`_\|_mips_dsp\*(C'\fR and \f(CW\*(C`_\|_mips_dspr2\*(C'\fR.
  It also defines \f(CW\*(C`_\|_mips_dsp_rev\*(C'\fR to 2.
! .IP \fB\-msmartmips\fR 4
  .IX Item "-msmartmips"
  .PD 0
! .IP \fB\-mno\-smartmips\fR 4
  .IX Item "-mno-smartmips"
  .PD
! Use (do not use) the MIPS SmartMIPS ASE.
! .IP \fB\-mpaired\-single\fR 4
  .IX Item "-mpaired-single"
  .PD 0
! .IP \fB\-mno\-paired\-single\fR 4
  .IX Item "-mno-paired-single"
  .PD
! Use (do not use) paired\-single floating\-point instructions.
    This option requires
! hardware floating\-point support to be enabled.
! .IP \fB\-mdmx\fR 4
  .IX Item "-mdmx"
  .PD 0
! .IP \fB\-mno\-mdmx\fR 4
  .IX Item "-mno-mdmx"
  .PD
! Use (do not use) MIPS Digital Media Extension instructions.
  This option can only be used when generating 64\-bit code and requires
! hardware floating\-point support to be enabled.
! .IP \fB\-mips3d\fR 4
  .IX Item "-mips3d"
  .PD 0
! .IP \fB\-mno\-mips3d\fR 4
  .IX Item "-mno-mips3d"
  .PD
! Use (do not use) the MIPS\-3D ASE.  
  The option \fB\-mips3d\fR implies \fB\-mpaired\-single\fR.
! .IP \fB\-mmicromips\fR 4
  .IX Item "-mmicromips"
  .PD 0
! .IP \fB\-mno\-micromips\fR 4
  .IX Item "-mno-micromips"
  .PD
  Generate (do not generate) microMIPS code.
  .Sp
! MicroMIPS code generation can also be controlled on a per\-function basis
  by means of \f(CW\*(C`micromips\*(C'\fR and \f(CW\*(C`nomicromips\*(C'\fR attributes.
! .IP \fB\-mmt\fR 4
  .IX Item "-mmt"
  .PD 0
! .IP \fB\-mno\-mt\fR 4
  .IX Item "-mno-mt"
  .PD
! Use (do not use) MT Multithreading instructions.
! .IP \fB\-mmcu\fR 4
  .IX Item "-mmcu"
  .PD 0
! .IP \fB\-mno\-mcu\fR 4
  .IX Item "-mno-mcu"
  .PD
! Use (do not use) the MIPS MCU ASE instructions.
! .IP \fB\-meva\fR 4
  .IX Item "-meva"
  .PD 0
! .IP \fB\-mno\-eva\fR 4
  .IX Item "-mno-eva"
  .PD
! Use (do not use) the MIPS Enhanced Virtual Addressing instructions.
! .IP \fB\-mvirt\fR 4
  .IX Item "-mvirt"
  .PD 0
! .IP \fB\-mno\-virt\fR 4
  .IX Item "-mno-virt"
  .PD
! Use (do not use) the MIPS Virtualization (VZ) instructions.
! .IP \fB\-mxpa\fR 4
  .IX Item "-mxpa"
  .PD 0
! .IP \fB\-mno\-xpa\fR 4
  .IX Item "-mno-xpa"
  .PD
! Use (do not use) the MIPS eXtended Physical Address (XPA) instructions.
! .IP \fB\-mcrc\fR 4
  .IX Item "-mcrc"
  .PD 0
! .IP \fB\-mno\-crc\fR 4
  .IX Item "-mno-crc"
  .PD
! Use (do not use) the MIPS Cyclic Redundancy Check (CRC) instructions.
! .IP \fB\-mginv\fR 4
  .IX Item "-mginv"
  .PD 0
! .IP \fB\-mno\-ginv\fR 4
  .IX Item "-mno-ginv"
  .PD
! Use (do not use) the MIPS Global INValidate (GINV) instructions.
! .IP \fB\-mloongson\-mmi\fR 4
  .IX Item "-mloongson-mmi"
  .PD 0
! .IP \fB\-mno\-loongson\-mmi\fR 4
  .IX Item "-mno-loongson-mmi"
  .PD
! Use (do not use) the MIPS Loongson MultiMedia extensions Instructions (MMI).
! .IP \fB\-mloongson\-ext\fR 4
  .IX Item "-mloongson-ext"
  .PD 0
! .IP \fB\-mno\-loongson\-ext\fR 4
  .IX Item "-mno-loongson-ext"
  .PD
! Use (do not use) the MIPS Loongson EXTensions (EXT) instructions.
! .IP \fB\-mloongson\-ext2\fR 4
  .IX Item "-mloongson-ext2"
  .PD 0
! .IP \fB\-mno\-loongson\-ext2\fR 4
  .IX Item "-mno-loongson-ext2"
  .PD
! Use (do not use) the MIPS Loongson EXTensions r2 (EXT2) instructions.
! .IP \fB\-mlong64\fR 4
  .IX Item "-mlong64"
  Force \f(CW\*(C`long\*(C'\fR types to be 64 bits wide.  See \fB\-mlong32\fR for
  an explanation of the default and the way that the pointer size is
  determined.
! .IP \fB\-mlong32\fR 4
  .IX Item "-mlong32"
  Force \f(CW\*(C`long\*(C'\fR, \f(CW\*(C`int\*(C'\fR, and pointer types to be 32 bits wide.
  .Sp
  The default size of \f(CW\*(C`int\*(C'\fRs, \f(CW\*(C`long\*(C'\fRs and pointers depends on
! the ABI.  All the supported ABIs use 32\-bit \f(CW\*(C`int\*(C'\fRs.  The n64 ABI
! uses 64\-bit \f(CW\*(C`long\*(C'\fRs, as does the 64\-bit EABI; the others use
  32\-bit \f(CW\*(C`long\*(C'\fRs.  Pointers are the same size as \f(CW\*(C`long\*(C'\fRs,
  or the same size as integer registers, whichever is smaller.
! .IP \fB\-msym32\fR 4
  .IX Item "-msym32"
  .PD 0
! .IP \fB\-mno\-sym32\fR 4
  .IX Item "-mno-sym32"
  .PD
  Assume (do not assume) that all symbols have 32\-bit values, regardless
! of the selected ABI.  This option is useful in combination with
! \&\fB\-mabi=64\fR and \fB\-mno\-abicalls\fR because it allows GCC
  to generate shorter and faster references to symbolic addresses.
  .IP "\fB\-G\fR \fInum\fR" 4
  .IX Item "-G num"
! Put definitions of externally\-visible data in a small data section
! if that data is no bigger than \fInum\fR bytes.  GCC can then generate
  more efficient accesses to the data; see \fB\-mgpopt\fR for details.
  .Sp
  The default \fB\-G\fR option depends on the configuration.
! .IP \fB\-mlocal\-sdata\fR 4
  .IX Item "-mlocal-sdata"
  .PD 0
! .IP \fB\-mno\-local\-sdata\fR 4
  .IX Item "-mno-local-sdata"
  .PD
  Extend (do not extend) the \fB\-G\fR behavior to local data too,
*************** such as to static variables in C.  \fB\-
*** 28737,28753 ****
  default for all configurations.
  .Sp
  If the linker complains that an application is using too much small data,
! you might want to try rebuilding the less performance-critical parts with
  \&\fB\-mno\-local\-sdata\fR.  You might also want to build large
  libraries with \fB\-mno\-local\-sdata\fR, so that the libraries leave
  more room for the main program.
! .IP "\fB\-mextern\-sdata\fR" 4
  .IX Item "-mextern-sdata"
  .PD 0
! .IP "\fB\-mno\-extern\-sdata\fR" 4
  .IX Item "-mno-extern-sdata"
  .PD
! Assume (do not assume) that externally-defined data is in
  a small data section if the size of that data is within the \fB\-G\fR limit.
  \&\fB\-mextern\-sdata\fR is the default for all configurations.
  .Sp
--- 28672,28688 ----
  default for all configurations.
  .Sp
  If the linker complains that an application is using too much small data,
! you might want to try rebuilding the less performance\-critical parts with
  \&\fB\-mno\-local\-sdata\fR.  You might also want to build large
  libraries with \fB\-mno\-local\-sdata\fR, so that the libraries leave
  more room for the main program.
! .IP \fB\-mextern\-sdata\fR 4
  .IX Item "-mextern-sdata"
  .PD 0
! .IP \fB\-mno\-extern\-sdata\fR 4
  .IX Item "-mno-extern-sdata"
  .PD
! Assume (do not assume) that externally\-defined data is in
  a small data section if the size of that data is within the \fB\-G\fR limit.
  \&\fB\-mextern\-sdata\fR is the default for all configurations.
  .Sp
*************** If you compile a module \fIMod\fR with \
*** 28755,28764 ****
  \&\fInum\fR \fB\-mgpopt\fR, and \fIMod\fR references a variable \fIVar\fR
  that is no bigger than \fInum\fR bytes, you must make sure that \fIVar\fR
  is placed in a small data section.  If \fIVar\fR is defined by another
! module, you must either compile that module with a high-enough
! \&\fB\-G\fR setting or attach a \f(CW\*(C`section\*(C'\fR attribute to \fIVar\fR's
  definition.  If \fIVar\fR is common, you must link the application
! with a high-enough \fB\-G\fR setting.
  .Sp
  The easiest way of satisfying these restrictions is to compile
  and link every module with the same \fB\-G\fR option.  However,
--- 28690,28699 ----
  \&\fInum\fR \fB\-mgpopt\fR, and \fIMod\fR references a variable \fIVar\fR
  that is no bigger than \fInum\fR bytes, you must make sure that \fIVar\fR
  is placed in a small data section.  If \fIVar\fR is defined by another
! module, you must either compile that module with a high\-enough
! \&\fB\-G\fR setting or attach a \f(CW\*(C`section\*(C'\fR attribute to \fIVar\fR\*(Aqs
  definition.  If \fIVar\fR is common, you must link the application
! with a high\-enough \fB\-G\fR setting.
  .Sp
  The easiest way of satisfying these restrictions is to compile
  and link every module with the same \fB\-G\fR option.  However,
*************** you may wish to build a library that sup
*** 28766,28779 ****
  small data limits.  You can do this by compiling the library with
  the highest supported \fB\-G\fR setting and additionally using
  \&\fB\-mno\-extern\-sdata\fR to stop the library from making assumptions
! about externally-defined data.
! .IP "\fB\-mgpopt\fR" 4
  .IX Item "-mgpopt"
  .PD 0
! .IP "\fB\-mno\-gpopt\fR" 4
  .IX Item "-mno-gpopt"
  .PD
! Use (do not use) GP-relative accesses for symbols that are known to be
  in a small data section; see \fB\-G\fR, \fB\-mlocal\-sdata\fR and
  \&\fB\-mextern\-sdata\fR.  \fB\-mgpopt\fR is the default for all
  configurations.
--- 28701,28714 ----
  small data limits.  You can do this by compiling the library with
  the highest supported \fB\-G\fR setting and additionally using
  \&\fB\-mno\-extern\-sdata\fR to stop the library from making assumptions
! about externally\-defined data.
! .IP \fB\-mgpopt\fR 4
  .IX Item "-mgpopt"
  .PD 0
! .IP \fB\-mno\-gpopt\fR 4
  .IX Item "-mno-gpopt"
  .PD
! Use (do not use) GP\-relative accesses for symbols that are known to be
  in a small data section; see \fB\-G\fR, \fB\-mlocal\-sdata\fR and
  \&\fB\-mextern\-sdata\fR.  \fB\-mgpopt\fR is the default for all
  configurations.
*************** with \fB\-G0\fR.)
*** 28787,28881 ****
  .Sp
  \&\fB\-mno\-gpopt\fR implies \fB\-mno\-local\-sdata\fR and
  \&\fB\-mno\-extern\-sdata\fR.
! .IP "\fB\-membedded\-data\fR" 4
  .IX Item "-membedded-data"
  .PD 0
! .IP "\fB\-mno\-embedded\-data\fR" 4
  .IX Item "-mno-embedded-data"
  .PD
! Allocate variables to the read-only data section first if possible, then
  next in the small data section if possible, otherwise in data.  This gives
! slightly slower code than the default, but reduces the amount of \s-1RAM\s0 required
  when executing, and thus may be preferred for some embedded systems.
! .IP "\fB\-muninit\-const\-in\-rodata\fR" 4
  .IX Item "-muninit-const-in-rodata"
  .PD 0
! .IP "\fB\-mno\-uninit\-const\-in\-rodata\fR" 4
  .IX Item "-mno-uninit-const-in-rodata"
  .PD
! Put uninitialized \f(CW\*(C`const\*(C'\fR variables in the read-only data section.
  This option is only meaningful in conjunction with \fB\-membedded\-data\fR.
! .IP "\fB\-mcode\-readable=\fR\fIsetting\fR" 4
  .IX Item "-mcode-readable=setting"
! Specify whether \s-1GCC\s0 may generate code that reads from executable sections.
  There are three possible settings:
  .RS 4
! .IP "\fB\-mcode\-readable=yes\fR" 4
  .IX Item "-mcode-readable=yes"
  Instructions may freely access executable sections.  This is the
  default setting.
! .IP "\fB\-mcode\-readable=pcrel\fR" 4
  .IX Item "-mcode-readable=pcrel"
! \&\s-1MIPS16\s0 PC-relative load instructions can access executable sections,
  but other instructions must not do so.  This option is useful on 4KSc
  and 4KSd processors when the code TLBs have the Read Inhibit bit set.
  It is also useful on processors that can be configured to have a dual
! instruction/data \s-1SRAM\s0 interface and that, like the M4K, automatically
! redirect PC-relative loads to the instruction \s-1RAM.\s0
! .IP "\fB\-mcode\-readable=no\fR" 4
  .IX Item "-mcode-readable=no"
  Instructions must not access executable sections.  This option can be
  useful on targets that are configured to have a dual instruction/data
! \&\s-1SRAM\s0 interface but that (unlike the M4K) do not automatically redirect
! PC-relative loads to the instruction \s-1RAM.\s0
  .RE
  .RS 4
  .RE
! .IP "\fB\-msplit\-addresses\fR" 4
  .IX Item "-msplit-addresses"
  .PD 0
! .IP "\fB\-mno\-split\-addresses\fR" 4
  .IX Item "-mno-split-addresses"
  .PD
! Enable (disable) use of the \f(CW\*(C`%hi()\*(C'\fR and \f(CW\*(C`%lo()\*(C'\fR assembler
  relocation operators.  This option has been superseded by
  \&\fB\-mexplicit\-relocs\fR but is retained for backwards compatibility.
! .IP "\fB\-mexplicit\-relocs=none\fR" 4
  .IX Item "-mexplicit-relocs=none"
  .PD 0
! .IP "\fB\-mexplicit\-relocs=base\fR" 4
  .IX Item "-mexplicit-relocs=base"
! .IP "\fB\-mexplicit\-relocs=pcrel\fR" 4
  .IX Item "-mexplicit-relocs=pcrel"
! .IP "\fB\-mexplicit\-relocs\fR" 4
  .IX Item "-mexplicit-relocs"
! .IP "\fB\-mno\-explicit\-relocs\fR" 4
  .IX Item "-mno-explicit-relocs"
  .PD
  These options control whether explicit relocs (such as \f(CW%gp_rel\fR) are used.
! The default value depends on the version of \s-1GAS\s0 when \s-1GCC\s0 itself was built.
  .Sp
! The \f(CW\*(C`base\*(C'\fR explicit-relocs support was introduced into \s-1GAS\s0 in 2001.
! The \f(CW\*(C`pcrel\*(C'\fR explicit-relocs support was introduced into \s-1GAS\s0 in 2014,
  which supports \f(CW%pcrel_hi\fR and \f(CW%pcrel_lo\fR.
! .IP "\fB\-mcheck\-zero\-division\fR" 4
  .IX Item "-mcheck-zero-division"
  .PD 0
! .IP "\fB\-mno\-check\-zero\-division\fR" 4
  .IX Item "-mno-check-zero-division"
  .PD
  Trap (do not trap) on integer division by zero.
  .Sp
  The default is \fB\-mcheck\-zero\-division\fR.
! .IP "\fB\-mdivide\-traps\fR" 4
  .IX Item "-mdivide-traps"
  .PD 0
! .IP "\fB\-mdivide\-breaks\fR" 4
  .IX Item "-mdivide-breaks"
  .PD
! \&\s-1MIPS\s0 systems check for division by zero by generating either a
  conditional trap or a break instruction.  Using traps results in
! smaller code, but is only supported on \s-1MIPS II\s0 and later.  Also, some
  versions of the Linux kernel have a bug that prevents trap from
  generating the proper signal (\f(CW\*(C`SIGFPE\*(C'\fR).  Use \fB\-mdivide\-traps\fR to
  allow conditional traps on architectures that support them and
--- 28722,28816 ----
  .Sp
  \&\fB\-mno\-gpopt\fR implies \fB\-mno\-local\-sdata\fR and
  \&\fB\-mno\-extern\-sdata\fR.
! .IP \fB\-membedded\-data\fR 4
  .IX Item "-membedded-data"
  .PD 0
! .IP \fB\-mno\-embedded\-data\fR 4
  .IX Item "-mno-embedded-data"
  .PD
! Allocate variables to the read\-only data section first if possible, then
  next in the small data section if possible, otherwise in data.  This gives
! slightly slower code than the default, but reduces the amount of RAM required
  when executing, and thus may be preferred for some embedded systems.
! .IP \fB\-muninit\-const\-in\-rodata\fR 4
  .IX Item "-muninit-const-in-rodata"
  .PD 0
! .IP \fB\-mno\-uninit\-const\-in\-rodata\fR 4
  .IX Item "-mno-uninit-const-in-rodata"
  .PD
! Put uninitialized \f(CW\*(C`const\*(C'\fR variables in the read\-only data section.
  This option is only meaningful in conjunction with \fB\-membedded\-data\fR.
! .IP \fB\-mcode\-readable=\fR\fIsetting\fR 4
  .IX Item "-mcode-readable=setting"
! Specify whether GCC may generate code that reads from executable sections.
  There are three possible settings:
  .RS 4
! .IP \fB\-mcode\-readable=yes\fR 4
  .IX Item "-mcode-readable=yes"
  Instructions may freely access executable sections.  This is the
  default setting.
! .IP \fB\-mcode\-readable=pcrel\fR 4
  .IX Item "-mcode-readable=pcrel"
! MIPS16 PC\-relative load instructions can access executable sections,
  but other instructions must not do so.  This option is useful on 4KSc
  and 4KSd processors when the code TLBs have the Read Inhibit bit set.
  It is also useful on processors that can be configured to have a dual
! instruction/data SRAM interface and that, like the M4K, automatically
! redirect PC\-relative loads to the instruction RAM.
! .IP \fB\-mcode\-readable=no\fR 4
  .IX Item "-mcode-readable=no"
  Instructions must not access executable sections.  This option can be
  useful on targets that are configured to have a dual instruction/data
! SRAM interface but that (unlike the M4K) do not automatically redirect
! PC\-relative loads to the instruction RAM.
  .RE
  .RS 4
  .RE
! .IP \fB\-msplit\-addresses\fR 4
  .IX Item "-msplit-addresses"
  .PD 0
! .IP \fB\-mno\-split\-addresses\fR 4
  .IX Item "-mno-split-addresses"
  .PD
! Enable (disable) use of the \f(CW%hi()\fR and \f(CW%lo()\fR assembler
  relocation operators.  This option has been superseded by
  \&\fB\-mexplicit\-relocs\fR but is retained for backwards compatibility.
! .IP \fB\-mexplicit\-relocs=none\fR 4
  .IX Item "-mexplicit-relocs=none"
  .PD 0
! .IP \fB\-mexplicit\-relocs=base\fR 4
  .IX Item "-mexplicit-relocs=base"
! .IP \fB\-mexplicit\-relocs=pcrel\fR 4
  .IX Item "-mexplicit-relocs=pcrel"
! .IP \fB\-mexplicit\-relocs\fR 4
  .IX Item "-mexplicit-relocs"
! .IP \fB\-mno\-explicit\-relocs\fR 4
  .IX Item "-mno-explicit-relocs"
  .PD
  These options control whether explicit relocs (such as \f(CW%gp_rel\fR) are used.
! The default value depends on the version of GAS when GCC itself was built.
  .Sp
! The \f(CW\*(C`base\*(C'\fR explicit\-relocs support was introduced into GAS in 2001.
! The \f(CW\*(C`pcrel\*(C'\fR explicit\-relocs support was introduced into GAS in 2014,
  which supports \f(CW%pcrel_hi\fR and \f(CW%pcrel_lo\fR.
! .IP \fB\-mcheck\-zero\-division\fR 4
  .IX Item "-mcheck-zero-division"
  .PD 0
! .IP \fB\-mno\-check\-zero\-division\fR 4
  .IX Item "-mno-check-zero-division"
  .PD
  Trap (do not trap) on integer division by zero.
  .Sp
  The default is \fB\-mcheck\-zero\-division\fR.
! .IP \fB\-mdivide\-traps\fR 4
  .IX Item "-mdivide-traps"
  .PD 0
! .IP \fB\-mdivide\-breaks\fR 4
  .IX Item "-mdivide-breaks"
  .PD
! MIPS systems check for division by zero by generating either a
  conditional trap or a break instruction.  Using traps results in
! smaller code, but is only supported on MIPS II and later.  Also, some
  versions of the Linux kernel have a bug that prevents trap from
  generating the proper signal (\f(CW\*(C`SIGFPE\*(C'\fR).  Use \fB\-mdivide\-traps\fR to
  allow conditional traps on architectures that support them and
*************** allow conditional traps on architectures
*** 28883,28928 ****
  .Sp
  The default is usually \fB\-mdivide\-traps\fR, but this can be
  overridden at configure time using \fB\-\-with\-divide=breaks\fR.
! Divide-by-zero checks can be completely disabled using
  \&\fB\-mno\-check\-zero\-division\fR.
! .IP "\fB\-mload\-store\-pairs\fR" 4
  .IX Item "-mload-store-pairs"
  .PD 0
! .IP "\fB\-mno\-load\-store\-pairs\fR" 4
  .IX Item "-mno-load-store-pairs"
  .PD
  Enable (disable) an optimization that pairs consecutive load or store
  instructions to enable load/store bonding.  This option is enabled by
  default but only takes effect when the selected architecture is known
  to support bonding.
! .IP "\fB\-mstrict\-align\fR" 4
  .IX Item "-mstrict-align"
  .PD 0
! .IP "\fB\-mno\-strict\-align\fR" 4
  .IX Item "-mno-strict-align"
! .IP "\fB\-munaligned\-access\fR" 4
  .IX Item "-munaligned-access"
! .IP "\fB\-mno\-unaligned\-access\fR" 4
  .IX Item "-mno-unaligned-access"
  .PD
! Disable (enable) direct unaligned access for \s-1MIPS\s0 Release 6.
! MIPSr6 requires load/store unaligned-access support, by hardware or
  trap&emulate.  So \fB\-mstrict\-align\fR may be needed by kernel.  The
  options \fB\-munaligned\-access\fR and \fB\-mno\-unaligned\-access\fR
! are obsoleted, and only for backward-compatible.
! .IP "\fB\-mmemcpy\fR" 4
  .IX Item "-mmemcpy"
  .PD 0
! .IP "\fB\-mno\-memcpy\fR" 4
  .IX Item "-mno-memcpy"
  .PD
! Force (do not force) the use of \f(CW\*(C`memcpy\*(C'\fR for non-trivial block
! moves.  The default is \fB\-mno\-memcpy\fR, which allows \s-1GCC\s0 to inline
! most constant-sized copies.
! .IP "\fB\-mlong\-calls\fR" 4
  .IX Item "-mlong-calls"
  .PD 0
! .IP "\fB\-mno\-long\-calls\fR" 4
  .IX Item "-mno-long-calls"
  .PD
  Disable (do not disable) use of the \f(CW\*(C`jal\*(C'\fR instruction.  Calling
--- 28818,28863 ----
  .Sp
  The default is usually \fB\-mdivide\-traps\fR, but this can be
  overridden at configure time using \fB\-\-with\-divide=breaks\fR.
! Divide\-by\-zero checks can be completely disabled using
  \&\fB\-mno\-check\-zero\-division\fR.
! .IP \fB\-mload\-store\-pairs\fR 4
  .IX Item "-mload-store-pairs"
  .PD 0
! .IP \fB\-mno\-load\-store\-pairs\fR 4
  .IX Item "-mno-load-store-pairs"
  .PD
  Enable (disable) an optimization that pairs consecutive load or store
  instructions to enable load/store bonding.  This option is enabled by
  default but only takes effect when the selected architecture is known
  to support bonding.
! .IP \fB\-mstrict\-align\fR 4
  .IX Item "-mstrict-align"
  .PD 0
! .IP \fB\-mno\-strict\-align\fR 4
  .IX Item "-mno-strict-align"
! .IP \fB\-munaligned\-access\fR 4
  .IX Item "-munaligned-access"
! .IP \fB\-mno\-unaligned\-access\fR 4
  .IX Item "-mno-unaligned-access"
  .PD
! Disable (enable) direct unaligned access for MIPS Release 6.
! MIPSr6 requires load/store unaligned\-access support, by hardware or
  trap&emulate.  So \fB\-mstrict\-align\fR may be needed by kernel.  The
  options \fB\-munaligned\-access\fR and \fB\-mno\-unaligned\-access\fR
! are obsoleted, and only for backward\-compatible.
! .IP \fB\-mmemcpy\fR 4
  .IX Item "-mmemcpy"
  .PD 0
! .IP \fB\-mno\-memcpy\fR 4
  .IX Item "-mno-memcpy"
  .PD
! Force (do not force) the use of \f(CW\*(C`memcpy\*(C'\fR for non\-trivial block
! moves.  The default is \fB\-mno\-memcpy\fR, which allows GCC to inline
! most constant\-sized copies.
! .IP \fB\-mlong\-calls\fR 4
  .IX Item "-mlong-calls"
  .PD 0
! .IP \fB\-mno\-long\-calls\fR 4
  .IX Item "-mno-long-calls"
  .PD
  Disable (do not disable) use of the \f(CW\*(C`jal\*(C'\fR instruction.  Calling
*************** and callee to be in the same 256 megabyt
*** 28931,29039 ****
  .Sp
  This option has no effect on abicalls code.  The default is
  \&\fB\-mno\-long\-calls\fR.
! .IP "\fB\-mmad\fR" 4
  .IX Item "-mmad"
  .PD 0
! .IP "\fB\-mno\-mad\fR" 4
  .IX Item "-mno-mad"
  .PD
  Enable (disable) use of the \f(CW\*(C`mad\*(C'\fR, \f(CW\*(C`madu\*(C'\fR and \f(CW\*(C`mul\*(C'\fR
! instructions, as provided by the R4650 \s-1ISA.\s0
! .IP "\fB\-mimadd\fR" 4
  .IX Item "-mimadd"
  .PD 0
! .IP "\fB\-mno\-imadd\fR" 4
  .IX Item "-mno-imadd"
  .PD
  Enable (disable) use of the \f(CW\*(C`madd\*(C'\fR and \f(CW\*(C`msub\*(C'\fR integer
  instructions.  The default is \fB\-mimadd\fR on architectures
  that support \f(CW\*(C`madd\*(C'\fR and \f(CW\*(C`msub\*(C'\fR except for the 74k
  architecture where it was found to generate slower code.
! .IP "\fB\-mfused\-madd\fR" 4
  .IX Item "-mfused-madd"
  .PD 0
! .IP "\fB\-mno\-fused\-madd\fR" 4
  .IX Item "-mno-fused-madd"
  .PD
! Enable (disable) use of the floating-point multiply-accumulate
  instructions, when they are available.  The default is
  \&\fB\-mfused\-madd\fR.
  .Sp
! On the R8000 \s-1CPU\s0 when multiply-accumulate instructions are used,
  the intermediate product is calculated to infinite precision
! and is not subject to the \s-1FCSR\s0 Flush to Zero bit.  This may be
  undesirable in some circumstances.  On other processors the result
  is numerically identical to the equivalent computation using
  separate multiply, add, subtract and negate instructions.
! .IP "\fB\-nocpp\fR" 4
  .IX Item "-nocpp"
! Tell the \s-1MIPS\s0 assembler to not run its preprocessor over user
  assembler files (with a \fB.s\fR suffix) when assembling them.
! .IP "\fB\-mfix\-24k\fR" 4
  .IX Item "-mfix-24k"
  .PD 0
! .IP "\fB\-mno\-fix\-24k\fR" 4
  .IX Item "-mno-fix-24k"
  .PD
  Work around the 24K E48 (lost data on stores during refill) errata.
! The workarounds are implemented by the assembler rather than by \s-1GCC.\s0
! .IP "\fB\-mfix\-r4000\fR" 4
  .IX Item "-mfix-r4000"
  .PD 0
! .IP "\fB\-mno\-fix\-r4000\fR" 4
  .IX Item "-mno-fix-r4000"
  .PD
! Work around certain R4000 \s-1CPU\s0 errata:
  .RS 4
! .IP "\-" 4
! A double-word or a variable shift may give an incorrect result if executed
  immediately after starting an integer division.
! .IP "\-" 4
! A double-word or a variable shift may give an incorrect result if executed
  while an integer multiplication is in progress.
! .IP "\-" 4
  An integer division may give an incorrect result if started in a delay slot
  of a taken branch or a jump.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mfix\-r4400\fR" 4
  .IX Item "-mfix-r4400"
  .PD 0
! .IP "\fB\-mno\-fix\-r4400\fR" 4
  .IX Item "-mno-fix-r4400"
  .PD
! Work around certain R4400 \s-1CPU\s0 errata:
  .RS 4
! .IP "\-" 4
! A double-word or a variable shift may give an incorrect result if executed
  immediately after starting an integer division.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mfix\-r10000\fR" 4
  .IX Item "-mfix-r10000"
  .PD 0
! .IP "\fB\-mno\-fix\-r10000\fR" 4
  .IX Item "-mno-fix-r10000"
  .PD
  Work around certain R10000 errata:
  .RS 4
! .IP "\-" 4
  \&\f(CW\*(C`ll\*(C'\fR/\f(CW\*(C`sc\*(C'\fR sequences may not behave atomically on revisions
  prior to 3.0.  They may deadlock on revisions 2.6 and earlier.
  .RE
  .RS 4
  .Sp
  This option can only be used if the target architecture supports
! branch-likely instructions.  \fB\-mfix\-r10000\fR is the default when
  \&\fB\-march=r10000\fR is used; \fB\-mno\-fix\-r10000\fR is the default
  otherwise.
  .RE
! .IP "\fB\-mfix\-r5900\fR" 4
  .IX Item "-mfix-r5900"
  .PD 0
! .IP "\fB\-mno\-fix\-r5900\fR" 4
  .IX Item "-mno-fix-r5900"
  .PD
  Do not attempt to schedule the preceding instruction into the delay slot
--- 28866,28974 ----
  .Sp
  This option has no effect on abicalls code.  The default is
  \&\fB\-mno\-long\-calls\fR.
! .IP \fB\-mmad\fR 4
  .IX Item "-mmad"
  .PD 0
! .IP \fB\-mno\-mad\fR 4
  .IX Item "-mno-mad"
  .PD
  Enable (disable) use of the \f(CW\*(C`mad\*(C'\fR, \f(CW\*(C`madu\*(C'\fR and \f(CW\*(C`mul\*(C'\fR
! instructions, as provided by the R4650 ISA.
! .IP \fB\-mimadd\fR 4
  .IX Item "-mimadd"
  .PD 0
! .IP \fB\-mno\-imadd\fR 4
  .IX Item "-mno-imadd"
  .PD
  Enable (disable) use of the \f(CW\*(C`madd\*(C'\fR and \f(CW\*(C`msub\*(C'\fR integer
  instructions.  The default is \fB\-mimadd\fR on architectures
  that support \f(CW\*(C`madd\*(C'\fR and \f(CW\*(C`msub\*(C'\fR except for the 74k
  architecture where it was found to generate slower code.
! .IP \fB\-mfused\-madd\fR 4
  .IX Item "-mfused-madd"
  .PD 0
! .IP \fB\-mno\-fused\-madd\fR 4
  .IX Item "-mno-fused-madd"
  .PD
! Enable (disable) use of the floating\-point multiply\-accumulate
  instructions, when they are available.  The default is
  \&\fB\-mfused\-madd\fR.
  .Sp
! On the R8000 CPU when multiply\-accumulate instructions are used,
  the intermediate product is calculated to infinite precision
! and is not subject to the FCSR Flush to Zero bit.  This may be
  undesirable in some circumstances.  On other processors the result
  is numerically identical to the equivalent computation using
  separate multiply, add, subtract and negate instructions.
! .IP \fB\-nocpp\fR 4
  .IX Item "-nocpp"
! Tell the MIPS assembler to not run its preprocessor over user
  assembler files (with a \fB.s\fR suffix) when assembling them.
! .IP \fB\-mfix\-24k\fR 4
  .IX Item "-mfix-24k"
  .PD 0
! .IP \fB\-mno\-fix\-24k\fR 4
  .IX Item "-mno-fix-24k"
  .PD
  Work around the 24K E48 (lost data on stores during refill) errata.
! The workarounds are implemented by the assembler rather than by GCC.
! .IP \fB\-mfix\-r4000\fR 4
  .IX Item "-mfix-r4000"
  .PD 0
! .IP \fB\-mno\-fix\-r4000\fR 4
  .IX Item "-mno-fix-r4000"
  .PD
! Work around certain R4000 CPU errata:
  .RS 4
! .IP \- 4
! A double\-word or a variable shift may give an incorrect result if executed
  immediately after starting an integer division.
! .IP \- 4
! A double\-word or a variable shift may give an incorrect result if executed
  while an integer multiplication is in progress.
! .IP \- 4
  An integer division may give an incorrect result if started in a delay slot
  of a taken branch or a jump.
  .RE
  .RS 4
  .RE
! .IP \fB\-mfix\-r4400\fR 4
  .IX Item "-mfix-r4400"
  .PD 0
! .IP \fB\-mno\-fix\-r4400\fR 4
  .IX Item "-mno-fix-r4400"
  .PD
! Work around certain R4400 CPU errata:
  .RS 4
! .IP \- 4
! A double\-word or a variable shift may give an incorrect result if executed
  immediately after starting an integer division.
  .RE
  .RS 4
  .RE
! .IP \fB\-mfix\-r10000\fR 4
  .IX Item "-mfix-r10000"
  .PD 0
! .IP \fB\-mno\-fix\-r10000\fR 4
  .IX Item "-mno-fix-r10000"
  .PD
  Work around certain R10000 errata:
  .RS 4
! .IP \- 4
  \&\f(CW\*(C`ll\*(C'\fR/\f(CW\*(C`sc\*(C'\fR sequences may not behave atomically on revisions
  prior to 3.0.  They may deadlock on revisions 2.6 and earlier.
  .RE
  .RS 4
  .Sp
  This option can only be used if the target architecture supports
! branch\-likely instructions.  \fB\-mfix\-r10000\fR is the default when
  \&\fB\-march=r10000\fR is used; \fB\-mno\-fix\-r10000\fR is the default
  otherwise.
  .RE
! .IP \fB\-mfix\-r5900\fR 4
  .IX Item "-mfix-r5900"
  .PD 0
! .IP \fB\-mno\-fix\-r5900\fR 4
  .IX Item "-mno-fix-r5900"
  .PD
  Do not attempt to schedule the preceding instruction into the delay slot
*************** of a branch instruction placed at the en
*** 29041,29066 ****
  instructions or fewer and always schedule a \f(CW\*(C`nop\*(C'\fR instruction there
  instead.  The short loop bug under certain conditions causes loops to
  execute only once or twice, due to a hardware bug in the R5900 chip.  The
! workaround is implemented by the assembler rather than by \s-1GCC.\s0
! .IP "\fB\-mfix\-rm7000\fR" 4
  .IX Item "-mfix-rm7000"
  .PD 0
! .IP "\fB\-mno\-fix\-rm7000\fR" 4
  .IX Item "-mno-fix-rm7000"
  .PD
! Work around the \s-1RM7000\s0 \f(CW\*(C`dmult\*(C'\fR/\f(CW\*(C`dmultu\*(C'\fR errata.  The
! workarounds are implemented by the assembler rather than by \s-1GCC.\s0
! .IP "\fB\-mfix\-vr4120\fR" 4
  .IX Item "-mfix-vr4120"
  .PD 0
! .IP "\fB\-mno\-fix\-vr4120\fR" 4
  .IX Item "-mno-fix-vr4120"
  .PD
! Work around certain \s-1VR4120\s0 errata:
  .RS 4
! .IP "\-" 4
  \&\f(CW\*(C`dmultu\*(C'\fR does not always produce the correct result.
! .IP "\-" 4
  \&\f(CW\*(C`div\*(C'\fR and \f(CW\*(C`ddiv\*(C'\fR do not always produce the correct result if one
  of the operands is negative.
  .RE
--- 28976,29001 ----
  instructions or fewer and always schedule a \f(CW\*(C`nop\*(C'\fR instruction there
  instead.  The short loop bug under certain conditions causes loops to
  execute only once or twice, due to a hardware bug in the R5900 chip.  The
! workaround is implemented by the assembler rather than by GCC.
! .IP \fB\-mfix\-rm7000\fR 4
  .IX Item "-mfix-rm7000"
  .PD 0
! .IP \fB\-mno\-fix\-rm7000\fR 4
  .IX Item "-mno-fix-rm7000"
  .PD
! Work around the RM7000 \f(CW\*(C`dmult\*(C'\fR/\f(CW\*(C`dmultu\*(C'\fR errata.  The
! workarounds are implemented by the assembler rather than by GCC.
! .IP \fB\-mfix\-vr4120\fR 4
  .IX Item "-mfix-vr4120"
  .PD 0
! .IP \fB\-mno\-fix\-vr4120\fR 4
  .IX Item "-mno-fix-vr4120"
  .PD
! Work around certain VR4120 errata:
  .RS 4
! .IP \- 4
  \&\f(CW\*(C`dmultu\*(C'\fR does not always produce the correct result.
! .IP \- 4
  \&\f(CW\*(C`div\*(C'\fR and \f(CW\*(C`ddiv\*(C'\fR do not always produce the correct result if one
  of the operands is negative.
  .RE
*************** The workarounds for the division errata
*** 29070,29133 ****
  \&\fIlibgcc.a\fR.  At present, these functions are only provided by
  the \f(CW\*(C`mips64vr*\-elf\*(C'\fR configurations.
  .Sp
! Other \s-1VR4120\s0 errata require a \s-1NOP\s0 to be inserted between certain pairs of
! instructions.  These errata are handled by the assembler, not by \s-1GCC\s0 itself.
  .RE
! .IP "\fB\-mfix\-vr4130\fR" 4
  .IX Item "-mfix-vr4130"
! Work around the \s-1VR4130\s0 \f(CW\*(C`mflo\*(C'\fR/\f(CW\*(C`mfhi\*(C'\fR errata.  The
! workarounds are implemented by the assembler rather than by \s-1GCC,\s0
! although \s-1GCC\s0 avoids using \f(CW\*(C`mflo\*(C'\fR and \f(CW\*(C`mfhi\*(C'\fR if the
! \&\s-1VR4130\s0 \f(CW\*(C`macc\*(C'\fR, \f(CW\*(C`macchi\*(C'\fR, \f(CW\*(C`dmacc\*(C'\fR and \f(CW\*(C`dmacchi\*(C'\fR
  instructions are available instead.
! .IP "\fB\-mfix\-sb1\fR" 4
  .IX Item "-mfix-sb1"
  .PD 0
! .IP "\fB\-mno\-fix\-sb1\fR" 4
  .IX Item "-mno-fix-sb1"
  .PD
! Work around certain \s-1SB\-1 CPU\s0 core errata.
! (This flag currently works around the \s-1SB\-1\s0 revision 2
! \&\*(L"F1\*(R" and \*(L"F2\*(R" floating-point errata.)
! .IP "\fB\-mr10k\-cache\-barrier=\fR\fIsetting\fR" 4
  .IX Item "-mr10k-cache-barrier=setting"
! Specify whether \s-1GCC\s0 should insert cache barriers to avoid the
  side effects of speculation on R10K processors.
  .Sp
  In common with many processors, the R10K tries to predict the outcome
  of a conditional branch and speculatively executes instructions from
! the \*(L"taken\*(R" branch.  It later aborts these instructions if the
  predicted outcome is wrong.  However, on the R10K, even aborted
  instructions can have side effects.
  .Sp
  This problem only affects kernel stores and, depending on the system,
! kernel loads.  As an example, a speculatively-executed store may load
  the target memory into cache and mark the cache line as dirty, even if
! the store itself is later aborted.  If a \s-1DMA\s0 operation writes to the
! same area of memory before the \*(L"dirty\*(R" line is flushed, the cached
! data overwrites the DMA-ed data.  See the R10K processor manual
  for a full description, including other potential problems.
  .Sp
  One workaround is to insert cache barrier instructions before every memory
  access that might be speculatively executed and that might have side
  effects even if aborted.  \fB\-mr10k\-cache\-barrier=\fR\fIsetting\fR
! controls \s-1GCC\s0's implementation of this workaround.  It assumes that
  aborted accesses to any byte in the following regions does not have
  side effects:
  .RS 4
! .IP "1." 4
  .IX Item "1."
! the memory occupied by the current function's stack frame;
! .IP "2." 4
  .IX Item "2."
  the memory occupied by an incoming stack argument;
! .IP "3." 4
  .IX Item "3."
! the memory occupied by an object with a link-time-constant address.
  .RE
  .RS 4
  .Sp
! It is the kernel's responsibility to ensure that speculative
  accesses to these regions are indeed safe.
  .Sp
  If the input program contains a function declaration such as:
--- 29005,29068 ----
  \&\fIlibgcc.a\fR.  At present, these functions are only provided by
  the \f(CW\*(C`mips64vr*\-elf\*(C'\fR configurations.
  .Sp
! Other VR4120 errata require a NOP to be inserted between certain pairs of
! instructions.  These errata are handled by the assembler, not by GCC itself.
  .RE
! .IP \fB\-mfix\-vr4130\fR 4
  .IX Item "-mfix-vr4130"
! Work around the VR4130 \f(CW\*(C`mflo\*(C'\fR/\f(CW\*(C`mfhi\*(C'\fR errata.  The
! workarounds are implemented by the assembler rather than by GCC,
! although GCC avoids using \f(CW\*(C`mflo\*(C'\fR and \f(CW\*(C`mfhi\*(C'\fR if the
! VR4130 \f(CW\*(C`macc\*(C'\fR, \f(CW\*(C`macchi\*(C'\fR, \f(CW\*(C`dmacc\*(C'\fR and \f(CW\*(C`dmacchi\*(C'\fR
  instructions are available instead.
! .IP \fB\-mfix\-sb1\fR 4
  .IX Item "-mfix-sb1"
  .PD 0
! .IP \fB\-mno\-fix\-sb1\fR 4
  .IX Item "-mno-fix-sb1"
  .PD
! Work around certain SB\-1 CPU core errata.
! (This flag currently works around the SB\-1 revision 2
! "F1" and "F2" floating\-point errata.)
! .IP \fB\-mr10k\-cache\-barrier=\fR\fIsetting\fR 4
  .IX Item "-mr10k-cache-barrier=setting"
! Specify whether GCC should insert cache barriers to avoid the
  side effects of speculation on R10K processors.
  .Sp
  In common with many processors, the R10K tries to predict the outcome
  of a conditional branch and speculatively executes instructions from
! the "taken" branch.  It later aborts these instructions if the
  predicted outcome is wrong.  However, on the R10K, even aborted
  instructions can have side effects.
  .Sp
  This problem only affects kernel stores and, depending on the system,
! kernel loads.  As an example, a speculatively\-executed store may load
  the target memory into cache and mark the cache line as dirty, even if
! the store itself is later aborted.  If a DMA operation writes to the
! same area of memory before the "dirty" line is flushed, the cached
! data overwrites the DMA\-ed data.  See the R10K processor manual
  for a full description, including other potential problems.
  .Sp
  One workaround is to insert cache barrier instructions before every memory
  access that might be speculatively executed and that might have side
  effects even if aborted.  \fB\-mr10k\-cache\-barrier=\fR\fIsetting\fR
! controls GCC\*(Aqs implementation of this workaround.  It assumes that
  aborted accesses to any byte in the following regions does not have
  side effects:
  .RS 4
! .IP 1. 4
  .IX Item "1."
! the memory occupied by the current function\*(Aqs stack frame;
! .IP 2. 4
  .IX Item "2."
  the memory occupied by an incoming stack argument;
! .IP 3. 4
  .IX Item "3."
! the memory occupied by an object with a link\-time\-constant address.
  .RE
  .RS 4
  .Sp
! It is the kernel\*(Aqs responsibility to ensure that speculative
  accesses to these regions are indeed safe.
  .Sp
  If the input program contains a function declaration such as:
*************** If the input program contains a function
*** 29137,29166 ****
  .Ve
  .Sp
  then the implementation of \f(CW\*(C`foo\*(C'\fR must allow \f(CW\*(C`j foo\*(C'\fR and
! \&\f(CW\*(C`jal foo\*(C'\fR to be executed speculatively.  \s-1GCC\s0 honors this
! restriction for functions it compiles itself.  It expects non-GCC
! functions (such as hand-written assembly code) to do the same.
  .Sp
  The option has three forms:
! .IP "\fB\-mr10k\-cache\-barrier=load\-store\fR" 4
  .IX Item "-mr10k-cache-barrier=load-store"
  Insert a cache barrier before a load or store that might be
  speculatively executed and that might have side effects even
  if aborted.
! .IP "\fB\-mr10k\-cache\-barrier=store\fR" 4
  .IX Item "-mr10k-cache-barrier=store"
  Insert a cache barrier before a store that might be speculatively
  executed and that might have side effects even if aborted.
! .IP "\fB\-mr10k\-cache\-barrier=none\fR" 4
  .IX Item "-mr10k-cache-barrier=none"
  Disable the insertion of cache barriers.  This is the default setting.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mflush\-func=\fR\fIfunc\fR" 4
  .IX Item "-mflush-func=func"
  .PD 0
! .IP "\fB\-mno\-flush\-func\fR" 4
  .IX Item "-mno-flush-func"
  .PD
  Specifies the function to call to flush the I and D caches, or to not
--- 29072,29101 ----
  .Ve
  .Sp
  then the implementation of \f(CW\*(C`foo\*(C'\fR must allow \f(CW\*(C`j foo\*(C'\fR and
! \&\f(CW\*(C`jal foo\*(C'\fR to be executed speculatively.  GCC honors this
! restriction for functions it compiles itself.  It expects non\-GCC
! functions (such as hand\-written assembly code) to do the same.
  .Sp
  The option has three forms:
! .IP \fB\-mr10k\-cache\-barrier=load\-store\fR 4
  .IX Item "-mr10k-cache-barrier=load-store"
  Insert a cache barrier before a load or store that might be
  speculatively executed and that might have side effects even
  if aborted.
! .IP \fB\-mr10k\-cache\-barrier=store\fR 4
  .IX Item "-mr10k-cache-barrier=store"
  Insert a cache barrier before a store that might be speculatively
  executed and that might have side effects even if aborted.
! .IP \fB\-mr10k\-cache\-barrier=none\fR 4
  .IX Item "-mr10k-cache-barrier=none"
  Disable the insertion of cache barriers.  This is the default setting.
  .RE
  .RS 4
  .RE
! .IP \fB\-mflush\-func=\fR\fIfunc\fR 4
  .IX Item "-mflush-func=func"
  .PD 0
! .IP \fB\-mno\-flush\-func\fR 4
  .IX Item "-mno-flush-func"
  .PD
  Specifies the function to call to flush the I and D caches, or to not
*************** call any such function.  If called, the
*** 29168,29200 ****
  arguments as the common \f(CW\*(C`_flush_func\*(C'\fR, that is, the address of the
  memory range for which the cache is being flushed, the size of the
  memory range, and the number 3 (to flush both caches).  The default
! depends on the target \s-1GCC\s0 was configured for, but commonly is either
  \&\f(CW\*(C`_flush_func\*(C'\fR or \f(CW\*(C`_\|_cpu_flush\*(C'\fR.
! .IP "\fB\-mbranch\-cost=\fR\fInum\fR" 4
  .IX Item "-mbranch-cost=num"
! Set the cost of branches to roughly \fInum\fR \*(L"simple\*(R" instructions.
  This cost is only a heuristic and is not guaranteed to produce
  consistent results across releases.  A zero cost redundantly selects
  the default, which is based on the \fB\-mtune\fR setting.
! .IP "\fB\-mbranch\-likely\fR" 4
  .IX Item "-mbranch-likely"
  .PD 0
! .IP "\fB\-mno\-branch\-likely\fR" 4
  .IX Item "-mno-branch-likely"
  .PD
  Enable or disable use of Branch Likely instructions, regardless of the
  default for the selected architecture.  By default, Branch Likely
  instructions may be generated if they are supported by the selected
! architecture.  An exception is for the \s-1MIPS32\s0 and \s-1MIPS64\s0 architectures
  and processors that implement those architectures; for those, Branch
! Likely instructions are not be generated by default because the \s-1MIPS32\s0
! and \s-1MIPS64\s0 architectures specifically deprecate their use.
! .IP "\fB\-mcompact\-branches=never\fR" 4
  .IX Item "-mcompact-branches=never"
  .PD 0
! .IP "\fB\-mcompact\-branches=optimal\fR" 4
  .IX Item "-mcompact-branches=optimal"
! .IP "\fB\-mcompact\-branches=always\fR" 4
  .IX Item "-mcompact-branches=always"
  .PD
  These options control which form of branches will be generated.  The
--- 29103,29135 ----
  arguments as the common \f(CW\*(C`_flush_func\*(C'\fR, that is, the address of the
  memory range for which the cache is being flushed, the size of the
  memory range, and the number 3 (to flush both caches).  The default
! depends on the target GCC was configured for, but commonly is either
  \&\f(CW\*(C`_flush_func\*(C'\fR or \f(CW\*(C`_\|_cpu_flush\*(C'\fR.
! .IP \fB\-mbranch\-cost=\fR\fInum\fR 4
  .IX Item "-mbranch-cost=num"
! Set the cost of branches to roughly \fInum\fR "simple" instructions.
  This cost is only a heuristic and is not guaranteed to produce
  consistent results across releases.  A zero cost redundantly selects
  the default, which is based on the \fB\-mtune\fR setting.
! .IP \fB\-mbranch\-likely\fR 4
  .IX Item "-mbranch-likely"
  .PD 0
! .IP \fB\-mno\-branch\-likely\fR 4
  .IX Item "-mno-branch-likely"
  .PD
  Enable or disable use of Branch Likely instructions, regardless of the
  default for the selected architecture.  By default, Branch Likely
  instructions may be generated if they are supported by the selected
! architecture.  An exception is for the MIPS32 and MIPS64 architectures
  and processors that implement those architectures; for those, Branch
! Likely instructions are not be generated by default because the MIPS32
! and MIPS64 architectures specifically deprecate their use.
! .IP \fB\-mcompact\-branches=never\fR 4
  .IX Item "-mcompact-branches=never"
  .PD 0
! .IP \fB\-mcompact\-branches=optimal\fR 4
  .IX Item "-mcompact-branches=optimal"
! .IP \fB\-mcompact\-branches=always\fR 4
  .IX Item "-mcompact-branches=always"
  .PD
  These options control which form of branches will be generated.  The
*************** The \fB\-mcompact\-branches=never\fR opt
*** 29204,29210 ****
  instructions will never be generated.
  .Sp
  The \fB\-mcompact\-branches=always\fR option ensures that a compact
! branch instruction will be generated if available for \s-1MIPS\s0 Release 6 onwards.
  If a compact branch instruction is not available (or pre\-R6),
  a delay slot form of the branch will be used instead.
  .Sp
--- 29139,29145 ----
  instructions will never be generated.
  .Sp
  The \fB\-mcompact\-branches=always\fR option ensures that a compact
! branch instruction will be generated if available for MIPS Release 6 onwards.
  If a compact branch instruction is not available (or pre\-R6),
  a delay slot form of the branch will be used instead.
  .Sp
*************** The behavior for MIPS16/microMIPS may ch
*** 29213,29253 ****
  since they do have some compact branch instructions.
  .Sp
  The \fB\-mcompact\-branches=optimal\fR option will cause a delay slot
! branch to be used if one is available in the current \s-1ISA\s0 and the delay
  slot is successfully filled.  If the delay slot is not filled, a compact
  branch will be chosen if one is available.
! .IP "\fB\-mfp\-exceptions\fR" 4
  .IX Item "-mfp-exceptions"
  .PD 0
! .IP "\fB\-mno\-fp\-exceptions\fR" 4
  .IX Item "-mno-fp-exceptions"
  .PD
! Specifies whether \s-1FP\s0 exceptions are enabled.  This affects how
! \&\s-1FP\s0 instructions are scheduled for some processors.
! The default is that \s-1FP\s0 exceptions are
  enabled.
  .Sp
! For instance, on the \s-1SB\-1,\s0 if \s-1FP\s0 exceptions are disabled, and we are emitting
! 64\-bit code, then we can use both \s-1FP\s0 pipes.  Otherwise, we can only use one
! \&\s-1FP\s0 pipe.
! .IP "\fB\-mvr4130\-align\fR" 4
  .IX Item "-mvr4130-align"
  .PD 0
! .IP "\fB\-mno\-vr4130\-align\fR" 4
  .IX Item "-mno-vr4130-align"
  .PD
! The \s-1VR4130\s0 pipeline is two-way superscalar, but can only issue two
  instructions together if the first one is 8\-byte aligned.  When this
! option is enabled, \s-1GCC\s0 aligns pairs of instructions that it
  thinks should execute in parallel.
  .Sp
! This option only has an effect when optimizing for the \s-1VR4130.\s0
  It normally makes code faster, but at the expense of making it bigger.
  It is enabled by default at optimization level \fB\-O3\fR.
! .IP "\fB\-msynci\fR" 4
  .IX Item "-msynci"
  .PD 0
! .IP "\fB\-mno\-synci\fR" 4
  .IX Item "-mno-synci"
  .PD
  Enable (disable) generation of \f(CW\*(C`synci\*(C'\fR instructions on
--- 29148,29188 ----
  since they do have some compact branch instructions.
  .Sp
  The \fB\-mcompact\-branches=optimal\fR option will cause a delay slot
! branch to be used if one is available in the current ISA and the delay
  slot is successfully filled.  If the delay slot is not filled, a compact
  branch will be chosen if one is available.
! .IP \fB\-mfp\-exceptions\fR 4
  .IX Item "-mfp-exceptions"
  .PD 0
! .IP \fB\-mno\-fp\-exceptions\fR 4
  .IX Item "-mno-fp-exceptions"
  .PD
! Specifies whether FP exceptions are enabled.  This affects how
! FP instructions are scheduled for some processors.
! The default is that FP exceptions are
  enabled.
  .Sp
! For instance, on the SB\-1, if FP exceptions are disabled, and we are emitting
! 64\-bit code, then we can use both FP pipes.  Otherwise, we can only use one
! FP pipe.
! .IP \fB\-mvr4130\-align\fR 4
  .IX Item "-mvr4130-align"
  .PD 0
! .IP \fB\-mno\-vr4130\-align\fR 4
  .IX Item "-mno-vr4130-align"
  .PD
! The VR4130 pipeline is two\-way superscalar, but can only issue two
  instructions together if the first one is 8\-byte aligned.  When this
! option is enabled, GCC aligns pairs of instructions that it
  thinks should execute in parallel.
  .Sp
! This option only has an effect when optimizing for the VR4130.
  It normally makes code faster, but at the expense of making it bigger.
  It is enabled by default at optimization level \fB\-O3\fR.
! .IP \fB\-msynci\fR 4
  .IX Item "-msynci"
  .PD 0
! .IP \fB\-mno\-synci\fR 4
  .IX Item "-mno-synci"
  .PD
  Enable (disable) generation of \f(CW\*(C`synci\*(C'\fR instructions on
*************** enabled) are generated when \f(CW\*(C`_\
*** 29256,29408 ****
  compiled.
  .Sp
  This option defaults to \fB\-mno\-synci\fR, but the default can be
! overridden by configuring \s-1GCC\s0 with \fB\-\-with\-synci\fR.
  .Sp
  When compiling code for single processor systems, it is generally safe
! to use \f(CW\*(C`synci\*(C'\fR.  However, on many multi-core (\s-1SMP\s0) systems, it
  does not invalidate the instruction caches on all cores and may lead
  to undefined behavior.
! .IP "\fB\-mrelax\-pic\-calls\fR" 4
  .IX Item "-mrelax-pic-calls"
  .PD 0
! .IP "\fB\-mno\-relax\-pic\-calls\fR" 4
  .IX Item "-mno-relax-pic-calls"
  .PD
! Try to turn \s-1PIC\s0 calls that are normally dispatched via register
  \&\f(CW$25\fR into direct calls.  This is only possible if the linker can
  resolve the destination at link time and if the destination is within
  range for a direct call.
  .Sp
! \&\fB\-mrelax\-pic\-calls\fR is the default if \s-1GCC\s0 was configured to use
  an assembler and a linker that support the \f(CW\*(C`.reloc\*(C'\fR assembly
  directive and \fB\-mexplicit\-relocs\fR is in effect.  With
  \&\fB\-mno\-explicit\-relocs\fR, this optimization can be performed by the
  assembler and the linker alone without help from the compiler.
! .IP "\fB\-mmcount\-ra\-address\fR" 4
  .IX Item "-mmcount-ra-address"
  .PD 0
! .IP "\fB\-mno\-mcount\-ra\-address\fR" 4
  .IX Item "-mno-mcount-ra-address"
  .PD
  Emit (do not emit) code that allows \f(CW\*(C`_mcount\*(C'\fR to modify the
! calling function's return address.  When enabled, this option extends
! the usual \f(CW\*(C`_mcount\*(C'\fR interface with a new \fIra-address\fR
  parameter, which has type \f(CW\*(C`intptr_t *\*(C'\fR and is passed in register
  \&\f(CW$12\fR.  \f(CW\*(C`_mcount\*(C'\fR can then modify the return address by
  doing both of the following:
  .RS 4
! .IP "*" 4
  Returning the new address in register \f(CW$31\fR.
! .IP "*" 4
! Storing the new address in \f(CW\*(C`*\f(CIra\-address\f(CW\*(C'\fR,
! if \fIra-address\fR is nonnull.
  .RE
  .RS 4
  .Sp
  The default is \fB\-mno\-mcount\-ra\-address\fR.
  .RE
! .IP "\fB\-mframe\-header\-opt\fR" 4
  .IX Item "-mframe-header-opt"
  .PD 0
! .IP "\fB\-mno\-frame\-header\-opt\fR" 4
  .IX Item "-mno-frame-header-opt"
  .PD
! Enable (disable) frame header optimization in the o32 \s-1ABI.\s0  When using the
! o32 \s-1ABI,\s0 calling functions will allocate 16 bytes on the stack for the called
  function to write out register arguments.  When enabled, this optimization
  will suppress the allocation of the frame header if it can be determined that
  it is unused.
  .Sp
  This optimization is off by default at all optimization levels.
! .IP "\fB\-mlxc1\-sxc1\fR" 4
  .IX Item "-mlxc1-sxc1"
  .PD 0
! .IP "\fB\-mno\-lxc1\-sxc1\fR" 4
  .IX Item "-mno-lxc1-sxc1"
  .PD
  When applicable, enable (disable) the generation of \f(CW\*(C`lwxc1\*(C'\fR,
  \&\f(CW\*(C`swxc1\*(C'\fR, \f(CW\*(C`ldxc1\*(C'\fR, \f(CW\*(C`sdxc1\*(C'\fR instructions.  Enabled by default.
! .IP "\fB\-mmadd4\fR" 4
  .IX Item "-mmadd4"
  .PD 0
! .IP "\fB\-mno\-madd4\fR" 4
  .IX Item "-mno-madd4"
  .PD
  When applicable, enable (disable) the generation of 4\-operand \f(CW\*(C`madd.s\*(C'\fR,
  \&\f(CW\*(C`madd.d\*(C'\fR and related instructions.  Enabled by default.
  .PP
! \fI\s-1MMIX\s0 Options\fR
  .IX Subsection "MMIX Options"
  .PP
! These options are defined for the \s-1MMIX:\s0
! .IP "\fB\-mlibfuncs\fR" 4
  .IX Item "-mlibfuncs"
  .PD 0
! .IP "\fB\-mno\-libfuncs\fR" 4
  .IX Item "-mno-libfuncs"
  .PD
  Specify that intrinsic library functions are being compiled, passing all
  values in registers, no matter the size.
! .IP "\fB\-mepsilon\fR" 4
  .IX Item "-mepsilon"
  .PD 0
! .IP "\fB\-mno\-epsilon\fR" 4
  .IX Item "-mno-epsilon"
  .PD
! Generate floating-point comparison instructions that compare with respect
  to the \f(CW\*(C`rE\*(C'\fR epsilon register.
! .IP "\fB\-mabi=mmixware\fR" 4
  .IX Item "-mabi=mmixware"
  .PD 0
! .IP "\fB\-mabi=gnu\fR" 4
  .IX Item "-mabi=gnu"
  .PD
  Generate code that passes function parameters and return values that (in
  the called function) are seen as registers \f(CW$0\fR and up, as opposed to
! the \s-1GNU ABI\s0 which uses global registers \f(CW$231\fR and up.
! .IP "\fB\-mzero\-extend\fR" 4
  .IX Item "-mzero-extend"
  .PD 0
! .IP "\fB\-mno\-zero\-extend\fR" 4
  .IX Item "-mno-zero-extend"
  .PD
  When reading data from memory in sizes shorter than 64 bits, use (do not
! use) zero-extending load instructions by default, rather than
! sign-extending ones.
! .IP "\fB\-mknuthdiv\fR" 4
  .IX Item "-mknuthdiv"
  .PD 0
! .IP "\fB\-mno\-knuthdiv\fR" 4
  .IX Item "-mno-knuthdiv"
  .PD
  Make the result of a division yielding a remainder have the same sign as
  the divisor.  With the default, \fB\-mno\-knuthdiv\fR, the sign of the
  remainder follows the sign of the dividend.  Both methods are
  arithmetically valid, the latter being almost exclusively used.
! .IP "\fB\-mtoplevel\-symbols\fR" 4
  .IX Item "-mtoplevel-symbols"
  .PD 0
! .IP "\fB\-mno\-toplevel\-symbols\fR" 4
  .IX Item "-mno-toplevel-symbols"
  .PD
  Prepend (do not prepend) a \fB:\fR to all global symbols, so the assembly
  code can be used with the \f(CW\*(C`PREFIX\*(C'\fR assembly directive.
! .IP "\fB\-melf\fR" 4
  .IX Item "-melf"
! Generate an executable in the \s-1ELF\s0 format, rather than the default
  \&\fBmmo\fR format used by the \fBmmix\fR simulator.
! .IP "\fB\-mbranch\-predict\fR" 4
  .IX Item "-mbranch-predict"
  .PD 0
! .IP "\fB\-mno\-branch\-predict\fR" 4
  .IX Item "-mno-branch-predict"
  .PD
! Use (do not use) the probable-branch instructions, when static branch
  prediction indicates a probable branch.
! .IP "\fB\-mbase\-addresses\fR" 4
  .IX Item "-mbase-addresses"
  .PD 0
! .IP "\fB\-mno\-base\-addresses\fR" 4
  .IX Item "-mno-base-addresses"
  .PD
  Generate (do not generate) code that uses \fIbase addresses\fR.  Using a
--- 29191,29343 ----
  compiled.
  .Sp
  This option defaults to \fB\-mno\-synci\fR, but the default can be
! overridden by configuring GCC with \fB\-\-with\-synci\fR.
  .Sp
  When compiling code for single processor systems, it is generally safe
! to use \f(CW\*(C`synci\*(C'\fR.  However, on many multi\-core (SMP) systems, it
  does not invalidate the instruction caches on all cores and may lead
  to undefined behavior.
! .IP \fB\-mrelax\-pic\-calls\fR 4
  .IX Item "-mrelax-pic-calls"
  .PD 0
! .IP \fB\-mno\-relax\-pic\-calls\fR 4
  .IX Item "-mno-relax-pic-calls"
  .PD
! Try to turn PIC calls that are normally dispatched via register
  \&\f(CW$25\fR into direct calls.  This is only possible if the linker can
  resolve the destination at link time and if the destination is within
  range for a direct call.
  .Sp
! \&\fB\-mrelax\-pic\-calls\fR is the default if GCC was configured to use
  an assembler and a linker that support the \f(CW\*(C`.reloc\*(C'\fR assembly
  directive and \fB\-mexplicit\-relocs\fR is in effect.  With
  \&\fB\-mno\-explicit\-relocs\fR, this optimization can be performed by the
  assembler and the linker alone without help from the compiler.
! .IP \fB\-mmcount\-ra\-address\fR 4
  .IX Item "-mmcount-ra-address"
  .PD 0
! .IP \fB\-mno\-mcount\-ra\-address\fR 4
  .IX Item "-mno-mcount-ra-address"
  .PD
  Emit (do not emit) code that allows \f(CW\*(C`_mcount\*(C'\fR to modify the
! calling function\*(Aqs return address.  When enabled, this option extends
! the usual \f(CW\*(C`_mcount\*(C'\fR interface with a new \fIra\-address\fR
  parameter, which has type \f(CW\*(C`intptr_t *\*(C'\fR and is passed in register
  \&\f(CW$12\fR.  \f(CW\*(C`_mcount\*(C'\fR can then modify the return address by
  doing both of the following:
  .RS 4
! .IP * 4
  Returning the new address in register \f(CW$31\fR.
! .IP * 4
! Storing the new address in \f(CW\*(C`*\fR\f(CIra\-address\fR\f(CW\*(C'\fR,
! if \fIra\-address\fR is nonnull.
  .RE
  .RS 4
  .Sp
  The default is \fB\-mno\-mcount\-ra\-address\fR.
  .RE
! .IP \fB\-mframe\-header\-opt\fR 4
  .IX Item "-mframe-header-opt"
  .PD 0
! .IP \fB\-mno\-frame\-header\-opt\fR 4
  .IX Item "-mno-frame-header-opt"
  .PD
! Enable (disable) frame header optimization in the o32 ABI.  When using the
! o32 ABI, calling functions will allocate 16 bytes on the stack for the called
  function to write out register arguments.  When enabled, this optimization
  will suppress the allocation of the frame header if it can be determined that
  it is unused.
  .Sp
  This optimization is off by default at all optimization levels.
! .IP \fB\-mlxc1\-sxc1\fR 4
  .IX Item "-mlxc1-sxc1"
  .PD 0
! .IP \fB\-mno\-lxc1\-sxc1\fR 4
  .IX Item "-mno-lxc1-sxc1"
  .PD
  When applicable, enable (disable) the generation of \f(CW\*(C`lwxc1\*(C'\fR,
  \&\f(CW\*(C`swxc1\*(C'\fR, \f(CW\*(C`ldxc1\*(C'\fR, \f(CW\*(C`sdxc1\*(C'\fR instructions.  Enabled by default.
! .IP \fB\-mmadd4\fR 4
  .IX Item "-mmadd4"
  .PD 0
! .IP \fB\-mno\-madd4\fR 4
  .IX Item "-mno-madd4"
  .PD
  When applicable, enable (disable) the generation of 4\-operand \f(CW\*(C`madd.s\*(C'\fR,
  \&\f(CW\*(C`madd.d\*(C'\fR and related instructions.  Enabled by default.
  .PP
! \fIMMIX Options\fR
  .IX Subsection "MMIX Options"
  .PP
! These options are defined for the MMIX:
! .IP \fB\-mlibfuncs\fR 4
  .IX Item "-mlibfuncs"
  .PD 0
! .IP \fB\-mno\-libfuncs\fR 4
  .IX Item "-mno-libfuncs"
  .PD
  Specify that intrinsic library functions are being compiled, passing all
  values in registers, no matter the size.
! .IP \fB\-mepsilon\fR 4
  .IX Item "-mepsilon"
  .PD 0
! .IP \fB\-mno\-epsilon\fR 4
  .IX Item "-mno-epsilon"
  .PD
! Generate floating\-point comparison instructions that compare with respect
  to the \f(CW\*(C`rE\*(C'\fR epsilon register.
! .IP \fB\-mabi=mmixware\fR 4
  .IX Item "-mabi=mmixware"
  .PD 0
! .IP \fB\-mabi=gnu\fR 4
  .IX Item "-mabi=gnu"
  .PD
  Generate code that passes function parameters and return values that (in
  the called function) are seen as registers \f(CW$0\fR and up, as opposed to
! the GNU ABI which uses global registers \f(CW$231\fR and up.
! .IP \fB\-mzero\-extend\fR 4
  .IX Item "-mzero-extend"
  .PD 0
! .IP \fB\-mno\-zero\-extend\fR 4
  .IX Item "-mno-zero-extend"
  .PD
  When reading data from memory in sizes shorter than 64 bits, use (do not
! use) zero\-extending load instructions by default, rather than
! sign\-extending ones.
! .IP \fB\-mknuthdiv\fR 4
  .IX Item "-mknuthdiv"
  .PD 0
! .IP \fB\-mno\-knuthdiv\fR 4
  .IX Item "-mno-knuthdiv"
  .PD
  Make the result of a division yielding a remainder have the same sign as
  the divisor.  With the default, \fB\-mno\-knuthdiv\fR, the sign of the
  remainder follows the sign of the dividend.  Both methods are
  arithmetically valid, the latter being almost exclusively used.
! .IP \fB\-mtoplevel\-symbols\fR 4
  .IX Item "-mtoplevel-symbols"
  .PD 0
! .IP \fB\-mno\-toplevel\-symbols\fR 4
  .IX Item "-mno-toplevel-symbols"
  .PD
  Prepend (do not prepend) a \fB:\fR to all global symbols, so the assembly
  code can be used with the \f(CW\*(C`PREFIX\*(C'\fR assembly directive.
! .IP \fB\-melf\fR 4
  .IX Item "-melf"
! Generate an executable in the ELF format, rather than the default
  \&\fBmmo\fR format used by the \fBmmix\fR simulator.
! .IP \fB\-mbranch\-predict\fR 4
  .IX Item "-mbranch-predict"
  .PD 0
! .IP \fB\-mno\-branch\-predict\fR 4
  .IX Item "-mno-branch-predict"
  .PD
! Use (do not use) the probable\-branch instructions, when static branch
  prediction indicates a probable branch.
! .IP \fB\-mbase\-addresses\fR 4
  .IX Item "-mbase-addresses"
  .PD 0
! .IP \fB\-mno\-base\-addresses\fR 4
  .IX Item "-mno-base-addresses"
  .PD
  Generate (do not generate) code that uses \fIbase addresses\fR.  Using a
*************** to 255 from the value held in the regist
*** 29413,29547 ****
  and fast code, but the number of different data items that can be
  addressed is limited.  This means that a program that uses lots of static
  data may require \fB\-mno\-base\-addresses\fR.
! .IP "\fB\-msingle\-exit\fR" 4
  .IX Item "-msingle-exit"
  .PD 0
! .IP "\fB\-mno\-single\-exit\fR" 4
  .IX Item "-mno-single-exit"
  .PD
  Force (do not force) generated code to have a single exit point in each
  function.
  .PP
! \fI\s-1MN10300\s0 Options\fR
  .IX Subsection "MN10300 Options"
  .PP
! These \fB\-m\fR options are defined for Matsushita \s-1MN10300\s0 architectures:
! .IP "\fB\-mmult\-bug\fR" 4
  .IX Item "-mmult-bug"
! Generate code to avoid bugs in the multiply instructions for the \s-1MN10300\s0
  processors.  This is the default.
! .IP "\fB\-mno\-mult\-bug\fR" 4
  .IX Item "-mno-mult-bug"
  Do not generate code to avoid bugs in the multiply instructions for the
! \&\s-1MN10300\s0 processors.
! .IP "\fB\-mam33\fR" 4
  .IX Item "-mam33"
! Generate code using features specific to the \s-1AM33\s0 processor.
! .IP "\fB\-mno\-am33\fR" 4
  .IX Item "-mno-am33"
! Do not generate code using features specific to the \s-1AM33\s0 processor.  This
  is the default.
! .IP "\fB\-mam33\-2\fR" 4
  .IX Item "-mam33-2"
! Generate code using features specific to the \s-1AM33/2.0\s0 processor.
! .IP "\fB\-mam34\fR" 4
  .IX Item "-mam34"
! Generate code using features specific to the \s-1AM34\s0 processor.
! .IP "\fB\-mtune=\fR\fIcpu-type\fR" 4
  .IX Item "-mtune=cpu-type"
! Use the timing characteristics of the indicated \s-1CPU\s0 type when
  scheduling instructions.  This does not change the targeted processor
! type.  The \s-1CPU\s0 type must be one of \fBmn10300\fR, \fBam33\fR,
  \&\fBam33\-2\fR or \fBam34\fR.
! .IP "\fB\-mreturn\-pointer\-on\-d0\fR" 4
  .IX Item "-mreturn-pointer-on-d0"
  When generating a function that returns a pointer, return the pointer
  in both \f(CW\*(C`a0\*(C'\fR and \f(CW\*(C`d0\*(C'\fR.  Otherwise, the pointer is returned
  only in \f(CW\*(C`a0\*(C'\fR, and attempts to call such functions without a prototype
  result in errors.  Note that this option is on by default; use
  \&\fB\-mno\-return\-pointer\-on\-d0\fR to disable it.
! .IP "\fB\-mno\-crt0\fR" 4
  .IX Item "-mno-crt0"
! Do not link in the C run-time initialization object file.
! .IP "\fB\-mrelax\fR" 4
  .IX Item "-mrelax"
  Indicate to the linker that it should perform a relaxation optimization pass
  to shorten branches, calls and absolute memory addresses.  This option only
  has an effect when used on the command line for the final link step.
  .Sp
  This option makes symbolic debugging impossible.
! .IP "\fB\-mliw\fR" 4
  .IX Item "-mliw"
  Allow the compiler to generate \fILong Instruction Word\fR
! instructions if the target is the \fB\s-1AM33\s0\fR or later.  This is the
  default.  This option defines the preprocessor macro \f(CW\*(C`_\|_LIW_\|_\*(C'\fR.
! .IP "\fB\-mno\-liw\fR" 4
  .IX Item "-mno-liw"
  Do not allow the compiler to generate \fILong Instruction Word\fR
  instructions.  This option defines the preprocessor macro
  \&\f(CW\*(C`_\|_NO_LIW_\|_\*(C'\fR.
! .IP "\fB\-msetlb\fR" 4
  .IX Item "-msetlb"
! Allow the compiler to generate the \fI\s-1SETLB\s0\fR and \fILcc\fR
! instructions if the target is the \fB\s-1AM33\s0\fR or later.  This is the
  default.  This option defines the preprocessor macro \f(CW\*(C`_\|_SETLB_\|_\*(C'\fR.
! .IP "\fB\-mno\-setlb\fR" 4
  .IX Item "-mno-setlb"
! Do not allow the compiler to generate \fI\s-1SETLB\s0\fR or \fILcc\fR
  instructions.  This option defines the preprocessor macro
  \&\f(CW\*(C`_\|_NO_SETLB_\|_\*(C'\fR.
  .PP
  \fIMoxie Options\fR
  .IX Subsection "Moxie Options"
! .IP "\fB\-meb\fR" 4
  .IX Item "-meb"
! Generate big-endian code.  This is the default for \fBmoxie\-*\-*\fR
  configurations.
! .IP "\fB\-mel\fR" 4
  .IX Item "-mel"
! Generate little-endian code.
! .IP "\fB\-mmul.x\fR" 4
  .IX Item "-mmul.x"
  Generate mul.x and umul.x instructions.  This is the default for
  \&\fBmoxiebox\-*\-*\fR configurations.
! .IP "\fB\-mno\-crt0\fR" 4
  .IX Item "-mno-crt0"
! Do not link in the C run-time initialization object file.
  .PP
! \fI\s-1MSP430\s0 Options\fR
  .IX Subsection "MSP430 Options"
  .PP
! These options are defined for the \s-1MSP430:\s0
! .IP "\fB\-masm\-hex\fR" 4
  .IX Item "-masm-hex"
  Force assembly output to always use hex constants.  Normally such
  constants are signed decimals, but this option is available for
  testsuite and/or aesthetic purposes.
! .IP "\fB\-mmcu=\fR" 4
  .IX Item "-mmcu="
! Select the \s-1MCU\s0 to target.  This is used to create a C preprocessor
! symbol based upon the \s-1MCU\s0 name, converted to upper case and pre\- and
! post-fixed with \fB_\|_\fR.  This in turn is used by the
! \&\fImsp430.h\fR header file to select an MCU-specific supplementary
  header file.
  .Sp
! The option also sets the \s-1ISA\s0 to use.  If the \s-1MCU\s0 name is one that is
! known to only support the 430 \s-1ISA\s0 then that is selected, otherwise the
! 430X \s-1ISA\s0 is selected.  A generic \s-1MCU\s0 name of \fBmsp430\fR can also be
! used to select the 430 \s-1ISA.\s0  Similarly the generic \fBmsp430x\fR \s-1MCU\s0
! name selects the 430X \s-1ISA.\s0
  .Sp
! In addition an MCU-specific linker script is added to the linker
! command line.  The script's name is the name of the \s-1MCU\s0 with
  \&\fI.ld\fR appended.  Thus specifying \fB\-mmcu=xxx\fR on the \fBgcc\fR
  command line defines the C preprocessor symbol \f(CW\*(C`_\|_XXX_\|_\*(C'\fR and
  cause the linker to search for a script called \fIxxx.ld\fR.
  .Sp
! The \s-1ISA\s0 and hardware multiply supported for the different MCUs is hard-coded
! into \s-1GCC.\s0  However, an external \fBdevices.csv\fR file can be used to
! extend device support beyond those that have been hard-coded.
  .Sp
! \&\s-1GCC\s0 searches for the \fBdevices.csv\fR file using the following methods in the
  given precedence order, where the first method takes precedence over the
  second which takes precedence over the third.
  .RS 4
--- 29348,29482 ----
  and fast code, but the number of different data items that can be
  addressed is limited.  This means that a program that uses lots of static
  data may require \fB\-mno\-base\-addresses\fR.
! .IP \fB\-msingle\-exit\fR 4
  .IX Item "-msingle-exit"
  .PD 0
! .IP \fB\-mno\-single\-exit\fR 4
  .IX Item "-mno-single-exit"
  .PD
  Force (do not force) generated code to have a single exit point in each
  function.
  .PP
! \fIMN10300 Options\fR
  .IX Subsection "MN10300 Options"
  .PP
! These \fB\-m\fR options are defined for Matsushita MN10300 architectures:
! .IP \fB\-mmult\-bug\fR 4
  .IX Item "-mmult-bug"
! Generate code to avoid bugs in the multiply instructions for the MN10300
  processors.  This is the default.
! .IP \fB\-mno\-mult\-bug\fR 4
  .IX Item "-mno-mult-bug"
  Do not generate code to avoid bugs in the multiply instructions for the
! MN10300 processors.
! .IP \fB\-mam33\fR 4
  .IX Item "-mam33"
! Generate code using features specific to the AM33 processor.
! .IP \fB\-mno\-am33\fR 4
  .IX Item "-mno-am33"
! Do not generate code using features specific to the AM33 processor.  This
  is the default.
! .IP \fB\-mam33\-2\fR 4
  .IX Item "-mam33-2"
! Generate code using features specific to the AM33/2.0 processor.
! .IP \fB\-mam34\fR 4
  .IX Item "-mam34"
! Generate code using features specific to the AM34 processor.
! .IP \fB\-mtune=\fR\fIcpu\-type\fR 4
  .IX Item "-mtune=cpu-type"
! Use the timing characteristics of the indicated CPU type when
  scheduling instructions.  This does not change the targeted processor
! type.  The CPU type must be one of \fBmn10300\fR, \fBam33\fR,
  \&\fBam33\-2\fR or \fBam34\fR.
! .IP \fB\-mreturn\-pointer\-on\-d0\fR 4
  .IX Item "-mreturn-pointer-on-d0"
  When generating a function that returns a pointer, return the pointer
  in both \f(CW\*(C`a0\*(C'\fR and \f(CW\*(C`d0\*(C'\fR.  Otherwise, the pointer is returned
  only in \f(CW\*(C`a0\*(C'\fR, and attempts to call such functions without a prototype
  result in errors.  Note that this option is on by default; use
  \&\fB\-mno\-return\-pointer\-on\-d0\fR to disable it.
! .IP \fB\-mno\-crt0\fR 4
  .IX Item "-mno-crt0"
! Do not link in the C run\-time initialization object file.
! .IP \fB\-mrelax\fR 4
  .IX Item "-mrelax"
  Indicate to the linker that it should perform a relaxation optimization pass
  to shorten branches, calls and absolute memory addresses.  This option only
  has an effect when used on the command line for the final link step.
  .Sp
  This option makes symbolic debugging impossible.
! .IP \fB\-mliw\fR 4
  .IX Item "-mliw"
  Allow the compiler to generate \fILong Instruction Word\fR
! instructions if the target is the \fBAM33\fR or later.  This is the
  default.  This option defines the preprocessor macro \f(CW\*(C`_\|_LIW_\|_\*(C'\fR.
! .IP \fB\-mno\-liw\fR 4
  .IX Item "-mno-liw"
  Do not allow the compiler to generate \fILong Instruction Word\fR
  instructions.  This option defines the preprocessor macro
  \&\f(CW\*(C`_\|_NO_LIW_\|_\*(C'\fR.
! .IP \fB\-msetlb\fR 4
  .IX Item "-msetlb"
! Allow the compiler to generate the \fISETLB\fR and \fILcc\fR
! instructions if the target is the \fBAM33\fR or later.  This is the
  default.  This option defines the preprocessor macro \f(CW\*(C`_\|_SETLB_\|_\*(C'\fR.
! .IP \fB\-mno\-setlb\fR 4
  .IX Item "-mno-setlb"
! Do not allow the compiler to generate \fISETLB\fR or \fILcc\fR
  instructions.  This option defines the preprocessor macro
  \&\f(CW\*(C`_\|_NO_SETLB_\|_\*(C'\fR.
  .PP
  \fIMoxie Options\fR
  .IX Subsection "Moxie Options"
! .IP \fB\-meb\fR 4
  .IX Item "-meb"
! Generate big\-endian code.  This is the default for \fBmoxie\-*\-*\fR
  configurations.
! .IP \fB\-mel\fR 4
  .IX Item "-mel"
! Generate little\-endian code.
! .IP \fB\-mmul.x\fR 4
  .IX Item "-mmul.x"
  Generate mul.x and umul.x instructions.  This is the default for
  \&\fBmoxiebox\-*\-*\fR configurations.
! .IP \fB\-mno\-crt0\fR 4
  .IX Item "-mno-crt0"
! Do not link in the C run\-time initialization object file.
  .PP
! \fIMSP430 Options\fR
  .IX Subsection "MSP430 Options"
  .PP
! These options are defined for the MSP430:
! .IP \fB\-masm\-hex\fR 4
  .IX Item "-masm-hex"
  Force assembly output to always use hex constants.  Normally such
  constants are signed decimals, but this option is available for
  testsuite and/or aesthetic purposes.
! .IP \fB\-mmcu=\fR 4
  .IX Item "-mmcu="
! Select the MCU to target.  This is used to create a C preprocessor
! symbol based upon the MCU name, converted to upper case and pre\- and
! post\-fixed with \fB_\|_\fR.  This in turn is used by the
! \&\fImsp430.h\fR header file to select an MCU\-specific supplementary
  header file.
  .Sp
! The option also sets the ISA to use.  If the MCU name is one that is
! known to only support the 430 ISA then that is selected, otherwise the
! 430X ISA is selected.  A generic MCU name of \fBmsp430\fR can also be
! used to select the 430 ISA.  Similarly the generic \fBmsp430x\fR MCU
! name selects the 430X ISA.
  .Sp
! In addition an MCU\-specific linker script is added to the linker
! command line.  The script\*(Aqs name is the name of the MCU with
  \&\fI.ld\fR appended.  Thus specifying \fB\-mmcu=xxx\fR on the \fBgcc\fR
  command line defines the C preprocessor symbol \f(CW\*(C`_\|_XXX_\|_\*(C'\fR and
  cause the linker to search for a script called \fIxxx.ld\fR.
  .Sp
! The ISA and hardware multiply supported for the different MCUs is hard\-coded
! into GCC.  However, an external \fBdevices.csv\fR file can be used to
! extend device support beyond those that have been hard\-coded.
  .Sp
! GCC searches for the \fBdevices.csv\fR file using the following methods in the
  given precedence order, where the first method takes precedence over the
  second which takes precedence over the third.
  .RS 4
*************** second which takes precedence over the t
*** 29550,29619 ****
  .IX Item "Include path specified with -I and -L"
  \&\fBdevices.csv\fR is searched for in each of the directories specified by
  include paths and linker library search paths.
! .IP "Path specified by the environment variable \fB\s-1MSP430_GCC_INCLUDE_DIR\s0\fR" 4
  .IX Item "Path specified by the environment variable MSP430_GCC_INCLUDE_DIR"
  Define the value of the global environment variable
! \&\fB\s-1MSP430_GCC_INCLUDE_DIR\s0\fR
! to the full path to the directory containing devices.csv, and \s-1GCC\s0 will search
  this directory for devices.csv.  If devices.csv is found, this directory is
  also registered as an include path and linker library path.  Header files
  and linker scripts in this directory can therefore be used without manually
  specifying \f(CW\*(C`\-I\*(C'\fR and \f(CW\*(C`\-L\*(C'\fR on the command line.
  .IP "The \fBmsp430\-elf{,bare}/include/devices\fR directory" 4
  .IX Item "The msp430-elf{,bare}/include/devices directory"
! Finally, \s-1GCC\s0 examines \fBmsp430\-elf{,bare}/include/devices\fR from the
  toolchain root directory.  This directory does not exist in a default
  installation, but if the user has created it and copied \fBdevices.csv\fR
! there, then the \s-1MCU\s0 data is read.  As above, this directory is
  also registered as an include path and linker library path.
  .RE
  .RS 4
  .Sp
  If none of the above search methods find \fBdevices.csv\fR, then the
! hard-coded \s-1MCU\s0 data is used.
  .RE
! .IP "\fB\-mwarn\-mcu\fR" 4
  .IX Item "-mwarn-mcu"
  .PD 0
! .IP "\fB\-mno\-warn\-mcu\fR" 4
  .IX Item "-mno-warn-mcu"
  .PD
  This option enables or disables warnings about conflicts between the
! \&\s-1MCU\s0 name specified by the \fB\-mmcu\fR option and the \s-1ISA\s0 set by the
  \&\fB\-mcpu\fR option and/or the hardware multiply support set by the
  \&\fB\-mhwmult\fR option.  It also toggles warnings about unrecognized
! \&\s-1MCU\s0 names.  This option is on by default.
! .IP "\fB\-mcpu=\fR" 4
  .IX Item "-mcpu="
! Specifies the \s-1ISA\s0 to use.  Accepted values are \fBmsp430\fR,
  \&\fBmsp430x\fR and \fBmsp430xv2\fR.  This option is deprecated.  The
! \&\fB\-mmcu=\fR option should be used to select the \s-1ISA.\s0
! .IP "\fB\-msim\fR" 4
  .IX Item "-msim"
  Link to the simulator runtime libraries and linker script.  Overrides
  any scripts that would be selected by the \fB\-mmcu=\fR option.
! .IP "\fB\-mlarge\fR" 4
  .IX Item "-mlarge"
! Use large-model addressing (20\-bit pointers, 20\-bit \f(CW\*(C`size_t\*(C'\fR).
! .IP "\fB\-msmall\fR" 4
  .IX Item "-msmall"
! Use small-model addressing (16\-bit pointers, 16\-bit \f(CW\*(C`size_t\*(C'\fR).
! .IP "\fB\-mrelax\fR" 4
  .IX Item "-mrelax"
  This option is passed to the assembler and linker, and allows the
  linker to perform certain optimizations that cannot be done until
  the final link.
! .IP "\fBmhwmult=\fR" 4
  .IX Item "mhwmult="
  Describes the type of hardware multiply supported by the target.
  Accepted values are \fBnone\fR for no hardware multiply, \fB16bit\fR
  for the original 16\-bit\-only multiply supported by early MCUs.
  \&\fB32bit\fR for the 16/32\-bit multiply supported by later MCUs and
  \&\fBf5series\fR for the 16/32\-bit multiply supported by F5\-series MCUs.
! A value of \fBauto\fR can also be given.  This tells \s-1GCC\s0 to deduce
! the hardware multiply support based upon the \s-1MCU\s0 name provided by the
  \&\fB\-mmcu\fR option.  If no \fB\-mmcu\fR option is specified or if
! the \s-1MCU\s0 name is not recognized then no hardware multiply support is
  assumed.  \f(CW\*(C`auto\*(C'\fR is the default setting.
  .Sp
  Hardware multiplies are normally performed by calling a library
--- 29485,29554 ----
  .IX Item "Include path specified with -I and -L"
  \&\fBdevices.csv\fR is searched for in each of the directories specified by
  include paths and linker library search paths.
! .IP "Path specified by the environment variable \fBMSP430_GCC_INCLUDE_DIR\fR" 4
  .IX Item "Path specified by the environment variable MSP430_GCC_INCLUDE_DIR"
  Define the value of the global environment variable
! \&\fBMSP430_GCC_INCLUDE_DIR\fR
! to the full path to the directory containing devices.csv, and GCC will search
  this directory for devices.csv.  If devices.csv is found, this directory is
  also registered as an include path and linker library path.  Header files
  and linker scripts in this directory can therefore be used without manually
  specifying \f(CW\*(C`\-I\*(C'\fR and \f(CW\*(C`\-L\*(C'\fR on the command line.
  .IP "The \fBmsp430\-elf{,bare}/include/devices\fR directory" 4
  .IX Item "The msp430-elf{,bare}/include/devices directory"
! Finally, GCC examines \fBmsp430\-elf{,bare}/include/devices\fR from the
  toolchain root directory.  This directory does not exist in a default
  installation, but if the user has created it and copied \fBdevices.csv\fR
! there, then the MCU data is read.  As above, this directory is
  also registered as an include path and linker library path.
  .RE
  .RS 4
  .Sp
  If none of the above search methods find \fBdevices.csv\fR, then the
! hard\-coded MCU data is used.
  .RE
! .IP \fB\-mwarn\-mcu\fR 4
  .IX Item "-mwarn-mcu"
  .PD 0
! .IP \fB\-mno\-warn\-mcu\fR 4
  .IX Item "-mno-warn-mcu"
  .PD
  This option enables or disables warnings about conflicts between the
! MCU name specified by the \fB\-mmcu\fR option and the ISA set by the
  \&\fB\-mcpu\fR option and/or the hardware multiply support set by the
  \&\fB\-mhwmult\fR option.  It also toggles warnings about unrecognized
! MCU names.  This option is on by default.
! .IP \fB\-mcpu=\fR 4
  .IX Item "-mcpu="
! Specifies the ISA to use.  Accepted values are \fBmsp430\fR,
  \&\fBmsp430x\fR and \fBmsp430xv2\fR.  This option is deprecated.  The
! \&\fB\-mmcu=\fR option should be used to select the ISA.
! .IP \fB\-msim\fR 4
  .IX Item "-msim"
  Link to the simulator runtime libraries and linker script.  Overrides
  any scripts that would be selected by the \fB\-mmcu=\fR option.
! .IP \fB\-mlarge\fR 4
  .IX Item "-mlarge"
! Use large\-model addressing (20\-bit pointers, 20\-bit \f(CW\*(C`size_t\*(C'\fR).
! .IP \fB\-msmall\fR 4
  .IX Item "-msmall"
! Use small\-model addressing (16\-bit pointers, 16\-bit \f(CW\*(C`size_t\*(C'\fR).
! .IP \fB\-mrelax\fR 4
  .IX Item "-mrelax"
  This option is passed to the assembler and linker, and allows the
  linker to perform certain optimizations that cannot be done until
  the final link.
! .IP \fBmhwmult=\fR 4
  .IX Item "mhwmult="
  Describes the type of hardware multiply supported by the target.
  Accepted values are \fBnone\fR for no hardware multiply, \fB16bit\fR
  for the original 16\-bit\-only multiply supported by early MCUs.
  \&\fB32bit\fR for the 16/32\-bit multiply supported by later MCUs and
  \&\fBf5series\fR for the 16/32\-bit multiply supported by F5\-series MCUs.
! A value of \fBauto\fR can also be given.  This tells GCC to deduce
! the hardware multiply support based upon the MCU name provided by the
  \&\fB\-mmcu\fR option.  If no \fB\-mmcu\fR option is specified or if
! the MCU name is not recognized then no hardware multiply support is
  assumed.  \f(CW\*(C`auto\*(C'\fR is the default setting.
  .Sp
  Hardware multiplies are normally performed by calling a library
*************** inline.  This makes for bigger, but fast
*** 29624,29648 ****
  The hardware multiply routines disable interrupts whilst running and
  restore the previous interrupt state when they finish.  This makes
  them safe to use inside interrupt handlers as well as in normal code.
! .IP "\fB\-minrt\fR" 4
  .IX Item "-minrt"
  Enable the use of a minimum runtime environment \- no static
! initializers or constructors.  This is intended for memory-constrained
  devices.  The compiler includes special symbols in some objects
  that tell the linker and runtime which code fragments are required.
! .IP "\fB\-mtiny\-printf\fR" 4
  .IX Item "-mtiny-printf"
  Enable reduced code size \f(CW\*(C`printf\*(C'\fR and \f(CW\*(C`puts\*(C'\fR library functions.
  The \fBtiny\fR implementations of these functions are not reentrant, so
! must be used with caution in multi-threaded applications.
  .Sp
  Support for streams has been removed and the string to be printed will
  always be sent to stdout via the \f(CW\*(C`write\*(C'\fR syscall.  The string is not
  buffered before it is sent to write.
  .Sp
! This option requires Newlib Nano \s-1IO,\s0 so \s-1GCC\s0 must be configured with
  \&\fB\-\-enable\-newlib\-nano\-formatted\-io\fR.
! .IP "\fB\-mmax\-inline\-shift=\fR" 4
  .IX Item "-mmax-inline-shift="
  This option takes an integer between 0 and 64 inclusive, and sets
  the maximum number of inline shift instructions which should be emitted to
--- 29559,29583 ----
  The hardware multiply routines disable interrupts whilst running and
  restore the previous interrupt state when they finish.  This makes
  them safe to use inside interrupt handlers as well as in normal code.
! .IP \fB\-minrt\fR 4
  .IX Item "-minrt"
  Enable the use of a minimum runtime environment \- no static
! initializers or constructors.  This is intended for memory\-constrained
  devices.  The compiler includes special symbols in some objects
  that tell the linker and runtime which code fragments are required.
! .IP \fB\-mtiny\-printf\fR 4
  .IX Item "-mtiny-printf"
  Enable reduced code size \f(CW\*(C`printf\*(C'\fR and \f(CW\*(C`puts\*(C'\fR library functions.
  The \fBtiny\fR implementations of these functions are not reentrant, so
! must be used with caution in multi\-threaded applications.
  .Sp
  Support for streams has been removed and the string to be printed will
  always be sent to stdout via the \f(CW\*(C`write\*(C'\fR syscall.  The string is not
  buffered before it is sent to write.
  .Sp
! This option requires Newlib Nano IO, so GCC must be configured with
  \&\fB\-\-enable\-newlib\-nano\-formatted\-io\fR.
! .IP \fB\-mmax\-inline\-shift=\fR 4
  .IX Item "-mmax-inline-shift="
  This option takes an integer between 0 and 64 inclusive, and sets
  the maximum number of inline shift instructions which should be emitted to
*************** perform a shift operation by a constant
*** 29650,29663 ****
  exceeded, an mspabi helper function is used instead.  The default value is 4.
  .Sp
  This only affects cases where a shift by multiple positions cannot be
! completed with a single instruction (e.g. all shifts >1 on the 430 \s-1ISA\s0).
  .Sp
  Shifts of a 32\-bit value are at least twice as costly, so the value passed for
  this option is divided by 2 and the resulting value used instead.
! .IP "\fB\-mcode\-region=\fR" 4
  .IX Item "-mcode-region="
  .PD 0
! .IP "\fB\-mdata\-region=\fR" 4
  .IX Item "-mdata-region="
  .PD
  These options tell the compiler where to place functions and data that
--- 29585,29598 ----
  exceeded, an mspabi helper function is used instead.  The default value is 4.
  .Sp
  This only affects cases where a shift by multiple positions cannot be
! completed with a single instruction (e.g. all shifts >1 on the 430 ISA).
  .Sp
  Shifts of a 32\-bit value are at least twice as costly, so the value passed for
  this option is divided by 2 and the resulting value used instead.
! .IP \fB\-mcode\-region=\fR 4
  .IX Item "-mcode-region="
  .PD 0
! .IP \fB\-mdata\-region=\fR 4
  .IX Item "-mdata-region="
  .PD
  These options tell the compiler where to place functions and data that
*************** like the corresponding attribute.  The f
*** 29668,29789 ****
  \&\f(CW\*(C`any\*(C'\fR \- is the default.  It leaves placement entirely up to the
  linker script and how it assigns the standard sections
  (\f(CW\*(C`.text\*(C'\fR, \f(CW\*(C`.data\*(C'\fR, etc) to the memory regions.
! .IP "\fB\-msilicon\-errata=\fR" 4
  .IX Item "-msilicon-errata="
  This option passes on a request to assembler to enable the fixes for
  the named silicon errata.
! .IP "\fB\-msilicon\-errata\-warn=\fR" 4
  .IX Item "-msilicon-errata-warn="
  This option passes on a request to the assembler to enable warning
  messages when a silicon errata might need to be applied.
! .IP "\fB\-mwarn\-devices\-csv\fR" 4
  .IX Item "-mwarn-devices-csv"
  .PD 0
! .IP "\fB\-mno\-warn\-devices\-csv\fR" 4
  .IX Item "-mno-warn-devices-csv"
  .PD
  Warn if \fBdevices.csv\fR is not found or there are problem parsing it
  (default: on).
  .PP
! \fI\s-1NDS32\s0 Options\fR
  .IX Subsection "NDS32 Options"
  .PP
! These options are defined for \s-1NDS32\s0 implementations:
! .IP "\fB\-mbig\-endian\fR" 4
  .IX Item "-mbig-endian"
! Generate code in big-endian mode.
! .IP "\fB\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
! Generate code in little-endian mode.
! .IP "\fB\-mreduced\-regs\fR" 4
  .IX Item "-mreduced-regs"
! Use reduced-set registers for register allocation.
! .IP "\fB\-mfull\-regs\fR" 4
  .IX Item "-mfull-regs"
! Use full-set registers for register allocation.
! .IP "\fB\-mcmov\fR" 4
  .IX Item "-mcmov"
  Generate conditional move instructions.
! .IP "\fB\-mno\-cmov\fR" 4
  .IX Item "-mno-cmov"
  Do not generate conditional move instructions.
! .IP "\fB\-mext\-perf\fR" 4
  .IX Item "-mext-perf"
  Generate performance extension instructions.
! .IP "\fB\-mno\-ext\-perf\fR" 4
  .IX Item "-mno-ext-perf"
  Do not generate performance extension instructions.
! .IP "\fB\-mext\-perf2\fR" 4
  .IX Item "-mext-perf2"
  Generate performance extension 2 instructions.
! .IP "\fB\-mno\-ext\-perf2\fR" 4
  .IX Item "-mno-ext-perf2"
  Do not generate performance extension 2 instructions.
! .IP "\fB\-mext\-string\fR" 4
  .IX Item "-mext-string"
  Generate string extension instructions.
! .IP "\fB\-mno\-ext\-string\fR" 4
  .IX Item "-mno-ext-string"
  Do not generate string extension instructions.
! .IP "\fB\-mv3push\fR" 4
  .IX Item "-mv3push"
  Generate v3 push25/pop25 instructions.
! .IP "\fB\-mno\-v3push\fR" 4
  .IX Item "-mno-v3push"
  Do not generate v3 push25/pop25 instructions.
! .IP "\fB\-m16\-bit\fR" 4
  .IX Item "-m16-bit"
  Generate 16\-bit instructions.
! .IP "\fB\-mno\-16\-bit\fR" 4
  .IX Item "-mno-16-bit"
  Do not generate 16\-bit instructions.
! .IP "\fB\-misr\-vector\-size=\fR\fInum\fR" 4
  .IX Item "-misr-vector-size=num"
  Specify the size of each interrupt vector, which must be 4 or 16.
! .IP "\fB\-mcache\-block\-size=\fR\fInum\fR" 4
  .IX Item "-mcache-block-size=num"
  Specify the size of each cache block,
  which must be a power of 2 between 4 and 512.
! .IP "\fB\-march=\fR\fIarch\fR" 4
  .IX Item "-march=arch"
  Specify the name of the target architecture.
! .IP "\fB\-mcmodel=\fR\fIcode-model\fR" 4
  .IX Item "-mcmodel=code-model"
  Set the code model to one of
  .RS 4
! .IP "\fBsmall\fR" 4
  .IX Item "small"
! All the data and read-only data segments must be within 512KB addressing space.
  The text segment must be within 16MB addressing space.
! .IP "\fBmedium\fR" 4
  .IX Item "medium"
! The data segment must be within 512KB while the read-only data segment can be
  within 4GB addressing space.  The text segment should be still within 16MB
  addressing space.
! .IP "\fBlarge\fR" 4
  .IX Item "large"
  All the text and data segments can be within 4GB addressing space.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mctor\-dtor\fR" 4
  .IX Item "-mctor-dtor"
  Enable constructor/destructor feature.
! .IP "\fB\-mrelax\fR" 4
  .IX Item "-mrelax"
  Guide linker to relax instructions.
  .PP
! \fINvidia \s-1PTX\s0 Options\fR
  .IX Subsection "Nvidia PTX Options"
  .PP
! These options are defined for Nvidia \s-1PTX:\s0
! .IP "\fB\-m64\fR" 4
  .IX Item "-m64"
! Ignored, but preserved for backward compatibility.  Only 64\-bit \s-1ABI\s0 is
  supported.
! .IP "\fB\-march=\fR\fIarchitecture-string\fR" 4
  .IX Item "-march=architecture-string"
! Generate code for the specified \s-1PTX ISA\s0 target architecture.
  Valid architecture strings are
  \&\fBsm_30\fR, \fBsm_35\fR, \fBsm_37\fR,
  \&\fBsm_52\fR, \fBsm_53\fR,
--- 29603,29724 ----
  \&\f(CW\*(C`any\*(C'\fR \- is the default.  It leaves placement entirely up to the
  linker script and how it assigns the standard sections
  (\f(CW\*(C`.text\*(C'\fR, \f(CW\*(C`.data\*(C'\fR, etc) to the memory regions.
! .IP \fB\-msilicon\-errata=\fR 4
  .IX Item "-msilicon-errata="
  This option passes on a request to assembler to enable the fixes for
  the named silicon errata.
! .IP \fB\-msilicon\-errata\-warn=\fR 4
  .IX Item "-msilicon-errata-warn="
  This option passes on a request to the assembler to enable warning
  messages when a silicon errata might need to be applied.
! .IP \fB\-mwarn\-devices\-csv\fR 4
  .IX Item "-mwarn-devices-csv"
  .PD 0
! .IP \fB\-mno\-warn\-devices\-csv\fR 4
  .IX Item "-mno-warn-devices-csv"
  .PD
  Warn if \fBdevices.csv\fR is not found or there are problem parsing it
  (default: on).
  .PP
! \fINDS32 Options\fR
  .IX Subsection "NDS32 Options"
  .PP
! These options are defined for NDS32 implementations:
! .IP \fB\-mbig\-endian\fR 4
  .IX Item "-mbig-endian"
! Generate code in big\-endian mode.
! .IP \fB\-mlittle\-endian\fR 4
  .IX Item "-mlittle-endian"
! Generate code in little\-endian mode.
! .IP \fB\-mreduced\-regs\fR 4
  .IX Item "-mreduced-regs"
! Use reduced\-set registers for register allocation.
! .IP \fB\-mfull\-regs\fR 4
  .IX Item "-mfull-regs"
! Use full\-set registers for register allocation.
! .IP \fB\-mcmov\fR 4
  .IX Item "-mcmov"
  Generate conditional move instructions.
! .IP \fB\-mno\-cmov\fR 4
  .IX Item "-mno-cmov"
  Do not generate conditional move instructions.
! .IP \fB\-mext\-perf\fR 4
  .IX Item "-mext-perf"
  Generate performance extension instructions.
! .IP \fB\-mno\-ext\-perf\fR 4
  .IX Item "-mno-ext-perf"
  Do not generate performance extension instructions.
! .IP \fB\-mext\-perf2\fR 4
  .IX Item "-mext-perf2"
  Generate performance extension 2 instructions.
! .IP \fB\-mno\-ext\-perf2\fR 4
  .IX Item "-mno-ext-perf2"
  Do not generate performance extension 2 instructions.
! .IP \fB\-mext\-string\fR 4
  .IX Item "-mext-string"
  Generate string extension instructions.
! .IP \fB\-mno\-ext\-string\fR 4
  .IX Item "-mno-ext-string"
  Do not generate string extension instructions.
! .IP \fB\-mv3push\fR 4
  .IX Item "-mv3push"
  Generate v3 push25/pop25 instructions.
! .IP \fB\-mno\-v3push\fR 4
  .IX Item "-mno-v3push"
  Do not generate v3 push25/pop25 instructions.
! .IP \fB\-m16\-bit\fR 4
  .IX Item "-m16-bit"
  Generate 16\-bit instructions.
! .IP \fB\-mno\-16\-bit\fR 4
  .IX Item "-mno-16-bit"
  Do not generate 16\-bit instructions.
! .IP \fB\-misr\-vector\-size=\fR\fInum\fR 4
  .IX Item "-misr-vector-size=num"
  Specify the size of each interrupt vector, which must be 4 or 16.
! .IP \fB\-mcache\-block\-size=\fR\fInum\fR 4
  .IX Item "-mcache-block-size=num"
  Specify the size of each cache block,
  which must be a power of 2 between 4 and 512.
! .IP \fB\-march=\fR\fIarch\fR 4
  .IX Item "-march=arch"
  Specify the name of the target architecture.
! .IP \fB\-mcmodel=\fR\fIcode\-model\fR 4
  .IX Item "-mcmodel=code-model"
  Set the code model to one of
  .RS 4
! .IP \fBsmall\fR 4
  .IX Item "small"
! All the data and read\-only data segments must be within 512KB addressing space.
  The text segment must be within 16MB addressing space.
! .IP \fBmedium\fR 4
  .IX Item "medium"
! The data segment must be within 512KB while the read\-only data segment can be
  within 4GB addressing space.  The text segment should be still within 16MB
  addressing space.
! .IP \fBlarge\fR 4
  .IX Item "large"
  All the text and data segments can be within 4GB addressing space.
  .RE
  .RS 4
  .RE
! .IP \fB\-mctor\-dtor\fR 4
  .IX Item "-mctor-dtor"
  Enable constructor/destructor feature.
! .IP \fB\-mrelax\fR 4
  .IX Item "-mrelax"
  Guide linker to relax instructions.
  .PP
! \fINvidia PTX Options\fR
  .IX Subsection "Nvidia PTX Options"
  .PP
! These options are defined for Nvidia PTX:
! .IP \fB\-m64\fR 4
  .IX Item "-m64"
! Ignored, but preserved for backward compatibility.  Only 64\-bit ABI is
  supported.
! .IP \fB\-march=\fR\fIarchitecture\-string\fR 4
  .IX Item "-march=architecture-string"
! Generate code for the specified PTX ISA target architecture.
  Valid architecture strings are
  \&\fBsm_30\fR, \fBsm_35\fR, \fBsm_37\fR,
  \&\fBsm_52\fR, \fBsm_53\fR,
*************** The default depends on how the compiler
*** 29796,29873 ****
  This option sets the value of the preprocessor macro
  \&\f(CW\*(C`_\|_PTX_SM_\|_\*(C'\fR; for instance, for \fBsm_35\fR, it has the value
  \&\fB350\fR.
! .IP "\fB\-misa=\fR\fIarchitecture-string\fR" 4
  .IX Item "-misa=architecture-string"
  Alias of \fB\-march=\fR.
! .IP "\fB\-march\-map=\fR\fIarchitecture-string\fR" 4
  .IX Item "-march-map=architecture-string"
  Select the closest available \fB\-march=\fR value that is not more
  capable.  For instance, for \fB\-march\-map=sm_50\fR select
  \&\fB\-march=sm_37\fR, and for \fB\-march\-map=sm_53\fR select
  \&\fB\-march=sm_53\fR.
! .IP "\fB\-mptx=\fR\fIversion-string\fR" 4
  .IX Item "-mptx=version-string"
! Generate code for the specified \s-1PTX ISA\s0 version.
  Valid version strings are
  \&\fB3.1\fR,
  \&\fB4.1\fR, \fB4.2\fR,
  \&\fB5.0\fR,
  \&\fB6.0\fR, \fB6.3\fR,
  \&\fB7.0\fR, \fB7.3\fR, and \fB7.8\fR.
! The default \s-1PTX ISA\s0 version is the one that added support for the
! selected \s-1PTX ISA\s0 target architecture, see \fB\-march=\fR, but at
  least \fB6.3\fR, or \fB7.3\fR for \fB\-march=sm_52\fR and higher.
  .Sp
  This option sets the values of the preprocessor macros
  \&\f(CW\*(C`_\|_PTX_ISA_VERSION_MAJOR_\|_\*(C'\fR and \f(CW\*(C`_\|_PTX_ISA_VERSION_MINOR_\|_\*(C'\fR;
  for instance, for \fB3.1\fR the macros have the values \fB3\fR and
  \&\fB1\fR, respectively.
! .IP "\fB\-mmainkernel\fR" 4
  .IX Item "-mmainkernel"
! Link in code for a _\|_main kernel.  This is for stand-alone instead of
  offloading execution.
! .IP "\fB\-moptimize\fR" 4
  .IX Item "-moptimize"
  Apply partitioned execution optimizations.  This is the default when any
  level of optimization is selected.
! .IP "\fB\-msoft\-stack\fR" 4
  .IX Item "-msoft-stack"
  .PD 0
! .IP "\fB\-mno\-soft\-stack\fR" 4
  .IX Item "-mno-soft-stack"
  .PD
  For \fB\-mno\-soft\-stack\fR (the default, unless \fB\-mgomp\fR has
! been specified), use \s-1PTX\s0 \*(L"native\*(R" stacks, that is,
! generate code that uses \f(CW\*(C`.local\*(C'\fR memory or \s-1PTX\s0 \f(CW\*(C`alloca\*(C'\fR
  directly for stack storage.
  Unless \fB\-mptx=7.3\fR or higher and \fB\-march=sm_52\fR or
! higher are active, variable-length arrays and dynamically allocating
  memory on the stack with \f(CW\*(C`alloca\*(C'\fR are not supported.
  .Sp
  For \fB\-msoft\-stack\fR (implied by \fB\-mgomp\fR),
! generate code that does not use \f(CW\*(C`.local\*(C'\fR memory or \s-1PTX\s0 \f(CW\*(C`alloca\*(C'\fR
! directly for stack storage. Instead, a per-warp stack pointer is
! maintained explicitly. This enables variable-length stack allocation (with
! variable-length arrays or \f(CW\*(C`alloca\*(C'\fR), and when global memory is used for
  underlying storage, makes it possible to access automatic variables from other
  threads, or with atomic instructions. This code generation variant is used
  for OpenMP offloading, but the option is exposed on its own for the purpose
  of testing the compiler; to generate code suitable for linking into programs
  using OpenMP offloading, use option \fB\-mgomp\fR.
! .IP "\fB\-muniform\-simt\fR" 4
  .IX Item "-muniform-simt"
  Switch to code generation variant that allows to execute all threads in each
  warp, while maintaining memory state and side effects as if only one thread
! in each warp was active outside of OpenMP \s-1SIMD\s0 regions.  All atomic operations
  and calls to runtime (malloc, free, vprintf) are conditionally executed (iff
  current lane index equals the master lane index), and the register being
  assigned is copied via a shuffle instruction from the master lane.  Outside of
! \&\s-1SIMD\s0 regions lane 0 is the master; inside, each thread sees itself as the
! master.  Shared memory array \f(CW\*(C`int _\|_nvptx_uni[]\*(C'\fR stores all-zeros or
! all-ones bitmasks for each warp, indicating current mode (0 outside of \s-1SIMD\s0
! regions).  Each thread can bitwise-and the bitmask at position \f(CW\*(C`tid.y\*(C'\fR
  with current lane index to compute the master lane index.
! .IP "\fB\-mgomp\fR" 4
  .IX Item "-mgomp"
  Generate code for use in OpenMP offloading: enables \fB\-msoft\-stack\fR and
  \&\fB\-muniform\-simt\fR options, and selects corresponding multilib variant.
--- 29731,29808 ----
  This option sets the value of the preprocessor macro
  \&\f(CW\*(C`_\|_PTX_SM_\|_\*(C'\fR; for instance, for \fBsm_35\fR, it has the value
  \&\fB350\fR.
! .IP \fB\-misa=\fR\fIarchitecture\-string\fR 4
  .IX Item "-misa=architecture-string"
  Alias of \fB\-march=\fR.
! .IP \fB\-march\-map=\fR\fIarchitecture\-string\fR 4
  .IX Item "-march-map=architecture-string"
  Select the closest available \fB\-march=\fR value that is not more
  capable.  For instance, for \fB\-march\-map=sm_50\fR select
  \&\fB\-march=sm_37\fR, and for \fB\-march\-map=sm_53\fR select
  \&\fB\-march=sm_53\fR.
! .IP \fB\-mptx=\fR\fIversion\-string\fR 4
  .IX Item "-mptx=version-string"
! Generate code for the specified PTX ISA version.
  Valid version strings are
  \&\fB3.1\fR,
  \&\fB4.1\fR, \fB4.2\fR,
  \&\fB5.0\fR,
  \&\fB6.0\fR, \fB6.3\fR,
  \&\fB7.0\fR, \fB7.3\fR, and \fB7.8\fR.
! The default PTX ISA version is the one that added support for the
! selected PTX ISA target architecture, see \fB\-march=\fR, but at
  least \fB6.3\fR, or \fB7.3\fR for \fB\-march=sm_52\fR and higher.
  .Sp
  This option sets the values of the preprocessor macros
  \&\f(CW\*(C`_\|_PTX_ISA_VERSION_MAJOR_\|_\*(C'\fR and \f(CW\*(C`_\|_PTX_ISA_VERSION_MINOR_\|_\*(C'\fR;
  for instance, for \fB3.1\fR the macros have the values \fB3\fR and
  \&\fB1\fR, respectively.
! .IP \fB\-mmainkernel\fR 4
  .IX Item "-mmainkernel"
! Link in code for a _\|_main kernel.  This is for stand\-alone instead of
  offloading execution.
! .IP \fB\-moptimize\fR 4
  .IX Item "-moptimize"
  Apply partitioned execution optimizations.  This is the default when any
  level of optimization is selected.
! .IP \fB\-msoft\-stack\fR 4
  .IX Item "-msoft-stack"
  .PD 0
! .IP \fB\-mno\-soft\-stack\fR 4
  .IX Item "-mno-soft-stack"
  .PD
  For \fB\-mno\-soft\-stack\fR (the default, unless \fB\-mgomp\fR has
! been specified), use PTX "native" stacks, that is,
! generate code that uses \f(CW\*(C`.local\*(C'\fR memory or PTX \f(CW\*(C`alloca\*(C'\fR
  directly for stack storage.
  Unless \fB\-mptx=7.3\fR or higher and \fB\-march=sm_52\fR or
! higher are active, variable\-length arrays and dynamically allocating
  memory on the stack with \f(CW\*(C`alloca\*(C'\fR are not supported.
  .Sp
  For \fB\-msoft\-stack\fR (implied by \fB\-mgomp\fR),
! generate code that does not use \f(CW\*(C`.local\*(C'\fR memory or PTX \f(CW\*(C`alloca\*(C'\fR
! directly for stack storage. Instead, a per\-warp stack pointer is
! maintained explicitly. This enables variable\-length stack allocation (with
! variable\-length arrays or \f(CW\*(C`alloca\*(C'\fR), and when global memory is used for
  underlying storage, makes it possible to access automatic variables from other
  threads, or with atomic instructions. This code generation variant is used
  for OpenMP offloading, but the option is exposed on its own for the purpose
  of testing the compiler; to generate code suitable for linking into programs
  using OpenMP offloading, use option \fB\-mgomp\fR.
! .IP \fB\-muniform\-simt\fR 4
  .IX Item "-muniform-simt"
  Switch to code generation variant that allows to execute all threads in each
  warp, while maintaining memory state and side effects as if only one thread
! in each warp was active outside of OpenMP SIMD regions.  All atomic operations
  and calls to runtime (malloc, free, vprintf) are conditionally executed (iff
  current lane index equals the master lane index), and the register being
  assigned is copied via a shuffle instruction from the master lane.  Outside of
! SIMD regions lane 0 is the master; inside, each thread sees itself as the
! master.  Shared memory array \f(CW\*(C`int _\|_nvptx_uni[]\*(C'\fR stores all\-zeros or
! all\-ones bitmasks for each warp, indicating current mode (0 outside of SIMD
! regions).  Each thread can bitwise\-and the bitmask at position \f(CW\*(C`tid.y\*(C'\fR
  with current lane index to compute the master lane index.
! .IP \fB\-mgomp\fR 4
  .IX Item "-mgomp"
  Generate code for use in OpenMP offloading: enables \fB\-msoft\-stack\fR and
  \&\fB\-muniform\-simt\fR options, and selects corresponding multilib variant.
*************** Generate code for use in OpenMP offloadi
*** 29876,30014 ****
  .IX Subsection "OpenRISC Options"
  .PP
  These options are defined for OpenRISC:
! .IP "\fB\-mboard=\fR\fIname\fR" 4
  .IX Item "-mboard=name"
  Configure a board specific runtime.  This will be passed to the linker for
  newlib board library linking.  The default is \f(CW\*(C`or1ksim\*(C'\fR.
! .IP "\fB\-mnewlib\fR" 4
  .IX Item "-mnewlib"
  This option is ignored; it is for compatibility purposes only.  This used to
  select linker and preprocessor options for use with newlib.
! .IP "\fB\-msoft\-div\fR" 4
  .IX Item "-msoft-div"
  .PD 0
! .IP "\fB\-mhard\-div\fR" 4
  .IX Item "-mhard-div"
  .PD
  Select software or hardware divide (\f(CW\*(C`l.div\*(C'\fR, \f(CW\*(C`l.divu\*(C'\fR) instructions.
  This default is hardware divide.
! .IP "\fB\-msoft\-mul\fR" 4
  .IX Item "-msoft-mul"
  .PD 0
! .IP "\fB\-mhard\-mul\fR" 4
  .IX Item "-mhard-mul"
  .PD
  Select software or hardware multiply (\f(CW\*(C`l.mul\*(C'\fR, \f(CW\*(C`l.muli\*(C'\fR) instructions.
  This default is hardware multiply.
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  .PD 0
! .IP "\fB\-mhard\-float\fR" 4
  .IX Item "-mhard-float"
  .PD
  Select software or hardware for floating point operations.
  The default is software.
! .IP "\fB\-mdouble\-float\fR" 4
  .IX Item "-mdouble-float"
! When \fB\-mhard\-float\fR is selected, enables generation of double-precision
  floating point instructions.  By default functions from \fIlibgcc\fR are used
! to perform double-precision floating point operations.
! .IP "\fB\-munordered\-float\fR" 4
  .IX Item "-munordered-float"
  When \fB\-mhard\-float\fR is selected, enables generation of unordered
  floating point compare and set flag (\f(CW\*(C`lf.sfun*\*(C'\fR) instructions.  By default
  functions from \fIlibgcc\fR are used to perform unordered floating point
  compare and set flag operations.
! .IP "\fB\-mcmov\fR" 4
  .IX Item "-mcmov"
  Enable generation of conditional move (\f(CW\*(C`l.cmov\*(C'\fR) instructions.  By
  default the equivalent will be generated using set and branch.
! .IP "\fB\-mror\fR" 4
  .IX Item "-mror"
  Enable generation of rotate right (\f(CW\*(C`l.ror\*(C'\fR) instructions.  By default
  functions from \fIlibgcc\fR are used to perform rotate right operations.
! .IP "\fB\-mrori\fR" 4
  .IX Item "-mrori"
  Enable generation of rotate right with immediate (\f(CW\*(C`l.rori\*(C'\fR) instructions.
  By default functions from \fIlibgcc\fR are used to perform rotate right with
  immediate operations.
! .IP "\fB\-msext\fR" 4
  .IX Item "-msext"
  Enable generation of sign extension (\f(CW\*(C`l.ext*\*(C'\fR) instructions.  By default
  memory loads are used to perform sign extension.
! .IP "\fB\-msfimm\fR" 4
  .IX Item "-msfimm"
  Enable generation of compare and set flag with immediate (\f(CW\*(C`l.sf*i\*(C'\fR)
  instructions.  By default extra instructions will be generated to store the
  immediate to a register first.
! .IP "\fB\-mshftimm\fR" 4
  .IX Item "-mshftimm"
  Enable generation of shift with immediate (\f(CW\*(C`l.srai\*(C'\fR, \f(CW\*(C`l.srli\*(C'\fR,
  \&\f(CW\*(C`l.slli\*(C'\fR) instructions.  By default extra instructions will be generated
  to store the immediate to a register first.
! .IP "\fB\-mcmodel=small\fR" 4
  .IX Item "-mcmodel=small"
! Generate OpenRISC code for the small model: The \s-1GOT\s0 is limited to 64k. This is
  the default model.
! .IP "\fB\-mcmodel=large\fR" 4
  .IX Item "-mcmodel=large"
! Generate OpenRISC code for the large model: The \s-1GOT\s0 may grow up to 4G in size.
  .PP
! \fI\s-1PDP\-11\s0 Options\fR
  .IX Subsection "PDP-11 Options"
  .PP
! These options are defined for the \s-1PDP\-11:\s0
! .IP "\fB\-mfpu\fR" 4
  .IX Item "-mfpu"
! Use hardware \s-1FPP\s0 floating point.  This is the default.  (\s-1FIS\s0 floating
! point on the \s-1PDP\-11/40\s0 is not supported.)  Implies \-m45.
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  Do not use hardware floating point.
! .IP "\fB\-mac0\fR" 4
  .IX Item "-mac0"
! Return floating-point results in ac0 (fr0 in Unix assembler syntax).
! .IP "\fB\-mno\-ac0\fR" 4
  .IX Item "-mno-ac0"
! Return floating-point results in memory.  This is the default.
! .IP "\fB\-m40\fR" 4
  .IX Item "-m40"
! Generate code for a \s-1PDP\-11/40.\s0  Implies \-msoft\-float \-mno\-split.
! .IP "\fB\-m45\fR" 4
  .IX Item "-m45"
! Generate code for a \s-1PDP\-11/45.\s0  This is the default.
! .IP "\fB\-m10\fR" 4
  .IX Item "-m10"
! Generate code for a \s-1PDP\-11/10.\s0  Implies \-msoft\-float \-mno\-split.
! .IP "\fB\-mint16\fR" 4
  .IX Item "-mint16"
  .PD 0
! .IP "\fB\-mno\-int32\fR" 4
  .IX Item "-mno-int32"
  .PD
  Use 16\-bit \f(CW\*(C`int\*(C'\fR.  This is the default.
! .IP "\fB\-mint32\fR" 4
  .IX Item "-mint32"
  .PD 0
! .IP "\fB\-mno\-int16\fR" 4
  .IX Item "-mno-int16"
  .PD
  Use 32\-bit \f(CW\*(C`int\*(C'\fR.
! .IP "\fB\-msplit\fR" 4
  .IX Item "-msplit"
  Target has split instruction and data space.  Implies \-m45.
! .IP "\fB\-munix\-asm\fR" 4
  .IX Item "-munix-asm"
  Use Unix assembler syntax.
! .IP "\fB\-mdec\-asm\fR" 4
  .IX Item "-mdec-asm"
! Use \s-1DEC\s0 assembler syntax.
! .IP "\fB\-mgnu\-asm\fR" 4
  .IX Item "-mgnu-asm"
! Use \s-1GNU\s0 assembler syntax.  This is the default.
! .IP "\fB\-mlra\fR" 4
  .IX Item "-mlra"
! Use the new \s-1LRA\s0 register allocator.  By default, the old \*(L"reload\*(R"
  allocator is used.
  .PP
  \fIPowerPC Options\fR
--- 29811,29949 ----
  .IX Subsection "OpenRISC Options"
  .PP
  These options are defined for OpenRISC:
! .IP \fB\-mboard=\fR\fIname\fR 4
  .IX Item "-mboard=name"
  Configure a board specific runtime.  This will be passed to the linker for
  newlib board library linking.  The default is \f(CW\*(C`or1ksim\*(C'\fR.
! .IP \fB\-mnewlib\fR 4
  .IX Item "-mnewlib"
  This option is ignored; it is for compatibility purposes only.  This used to
  select linker and preprocessor options for use with newlib.
! .IP \fB\-msoft\-div\fR 4
  .IX Item "-msoft-div"
  .PD 0
! .IP \fB\-mhard\-div\fR 4
  .IX Item "-mhard-div"
  .PD
  Select software or hardware divide (\f(CW\*(C`l.div\*(C'\fR, \f(CW\*(C`l.divu\*(C'\fR) instructions.
  This default is hardware divide.
! .IP \fB\-msoft\-mul\fR 4
  .IX Item "-msoft-mul"
  .PD 0
! .IP \fB\-mhard\-mul\fR 4
  .IX Item "-mhard-mul"
  .PD
  Select software or hardware multiply (\f(CW\*(C`l.mul\*(C'\fR, \f(CW\*(C`l.muli\*(C'\fR) instructions.
  This default is hardware multiply.
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  .PD 0
! .IP \fB\-mhard\-float\fR 4
  .IX Item "-mhard-float"
  .PD
  Select software or hardware for floating point operations.
  The default is software.
! .IP \fB\-mdouble\-float\fR 4
  .IX Item "-mdouble-float"
! When \fB\-mhard\-float\fR is selected, enables generation of double\-precision
  floating point instructions.  By default functions from \fIlibgcc\fR are used
! to perform double\-precision floating point operations.
! .IP \fB\-munordered\-float\fR 4
  .IX Item "-munordered-float"
  When \fB\-mhard\-float\fR is selected, enables generation of unordered
  floating point compare and set flag (\f(CW\*(C`lf.sfun*\*(C'\fR) instructions.  By default
  functions from \fIlibgcc\fR are used to perform unordered floating point
  compare and set flag operations.
! .IP \fB\-mcmov\fR 4
  .IX Item "-mcmov"
  Enable generation of conditional move (\f(CW\*(C`l.cmov\*(C'\fR) instructions.  By
  default the equivalent will be generated using set and branch.
! .IP \fB\-mror\fR 4
  .IX Item "-mror"
  Enable generation of rotate right (\f(CW\*(C`l.ror\*(C'\fR) instructions.  By default
  functions from \fIlibgcc\fR are used to perform rotate right operations.
! .IP \fB\-mrori\fR 4
  .IX Item "-mrori"
  Enable generation of rotate right with immediate (\f(CW\*(C`l.rori\*(C'\fR) instructions.
  By default functions from \fIlibgcc\fR are used to perform rotate right with
  immediate operations.
! .IP \fB\-msext\fR 4
  .IX Item "-msext"
  Enable generation of sign extension (\f(CW\*(C`l.ext*\*(C'\fR) instructions.  By default
  memory loads are used to perform sign extension.
! .IP \fB\-msfimm\fR 4
  .IX Item "-msfimm"
  Enable generation of compare and set flag with immediate (\f(CW\*(C`l.sf*i\*(C'\fR)
  instructions.  By default extra instructions will be generated to store the
  immediate to a register first.
! .IP \fB\-mshftimm\fR 4
  .IX Item "-mshftimm"
  Enable generation of shift with immediate (\f(CW\*(C`l.srai\*(C'\fR, \f(CW\*(C`l.srli\*(C'\fR,
  \&\f(CW\*(C`l.slli\*(C'\fR) instructions.  By default extra instructions will be generated
  to store the immediate to a register first.
! .IP \fB\-mcmodel=small\fR 4
  .IX Item "-mcmodel=small"
! Generate OpenRISC code for the small model: The GOT is limited to 64k. This is
  the default model.
! .IP \fB\-mcmodel=large\fR 4
  .IX Item "-mcmodel=large"
! Generate OpenRISC code for the large model: The GOT may grow up to 4G in size.
  .PP
! \fIPDP\-11 Options\fR
  .IX Subsection "PDP-11 Options"
  .PP
! These options are defined for the PDP\-11:
! .IP \fB\-mfpu\fR 4
  .IX Item "-mfpu"
! Use hardware FPP floating point.  This is the default.  (FIS floating
! point on the PDP\-11/40 is not supported.)  Implies \-m45.
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  Do not use hardware floating point.
! .IP \fB\-mac0\fR 4
  .IX Item "-mac0"
! Return floating\-point results in ac0 (fr0 in Unix assembler syntax).
! .IP \fB\-mno\-ac0\fR 4
  .IX Item "-mno-ac0"
! Return floating\-point results in memory.  This is the default.
! .IP \fB\-m40\fR 4
  .IX Item "-m40"
! Generate code for a PDP\-11/40.  Implies \-msoft\-float \-mno\-split.
! .IP \fB\-m45\fR 4
  .IX Item "-m45"
! Generate code for a PDP\-11/45.  This is the default.
! .IP \fB\-m10\fR 4
  .IX Item "-m10"
! Generate code for a PDP\-11/10.  Implies \-msoft\-float \-mno\-split.
! .IP \fB\-mint16\fR 4
  .IX Item "-mint16"
  .PD 0
! .IP \fB\-mno\-int32\fR 4
  .IX Item "-mno-int32"
  .PD
  Use 16\-bit \f(CW\*(C`int\*(C'\fR.  This is the default.
! .IP \fB\-mint32\fR 4
  .IX Item "-mint32"
  .PD 0
! .IP \fB\-mno\-int16\fR 4
  .IX Item "-mno-int16"
  .PD
  Use 32\-bit \f(CW\*(C`int\*(C'\fR.
! .IP \fB\-msplit\fR 4
  .IX Item "-msplit"
  Target has split instruction and data space.  Implies \-m45.
! .IP \fB\-munix\-asm\fR 4
  .IX Item "-munix-asm"
  Use Unix assembler syntax.
! .IP \fB\-mdec\-asm\fR 4
  .IX Item "-mdec-asm"
! Use DEC assembler syntax.
! .IP \fB\-mgnu\-asm\fR 4
  .IX Item "-mgnu-asm"
! Use GNU assembler syntax.  This is the default.
! .IP \fB\-mlra\fR 4
  .IX Item "-mlra"
! Use the new LRA register allocator.  By default, the old "reload"
  allocator is used.
  .PP
  \fIPowerPC Options\fR
*************** allocator is used.
*** 30016,30029 ****
  .PP
  These are listed under
  .PP
! \fI\s-1PRU\s0 Options\fR
  .IX Subsection "PRU Options"
  .PP
! These command-line options are defined for \s-1PRU\s0 target:
! .IP "\fB\-minrt\fR" 4
  .IX Item "-minrt"
  Link with a minimum runtime environment.  This can significantly reduce
! the size of the final \s-1ELF\s0 binary, but some standard C runtime features
  are removed.
  .Sp
  This option disables support for static initializers and constructors.
--- 29951,29964 ----
  .PP
  These are listed under
  .PP
! \fIPRU Options\fR
  .IX Subsection "PRU Options"
  .PP
! These command\-line options are defined for PRU target:
! .IP \fB\-minrt\fR 4
  .IX Item "-minrt"
  Link with a minimum runtime environment.  This can significantly reduce
! the size of the final ELF binary, but some standard C runtime features
  are removed.
  .Sp
  This option disables support for static initializers and constructors.
*************** program will not use those features.
*** 30034,30072 ****
  The minimal startup code would not pass \f(CW\*(C`argc\*(C'\fR and \f(CW\*(C`argv\*(C'\fR arguments
  to \f(CW\*(C`main\*(C'\fR, so the latter must be declared as \f(CW\*(C`int main (void)\*(C'\fR.
  This is already the norm for most firmware projects.
! .IP "\fB\-mmcu=\fR\fImcu\fR" 4
  .IX Item "-mmcu=mcu"
! Specify the \s-1PRU\s0 hardware variant to use.  A correspondingly named
  spec file would be loaded, passing the memory region sizes to
! the linker and defining hardware-specific C macros.
  .Sp
  Newlib provides only the \f(CW\*(C`sim\*(C'\fR spec, intended for running
  regression tests using a simulator.  Specs for real hardware can be
  obtained by installing the
  GnuPruMcu (\f(CW\*(C`https://github.com/dinuxbg/gnuprumcu/\*(C'\fR) package.
! .IP "\fB\-mno\-relax\fR" 4
  .IX Item "-mno-relax"
! Make \s-1GCC\s0 pass the \fB\-\-no\-relax\fR command-line option to the linker
  instead of the \fB\-\-relax\fR option.
! .IP "\fB\-mloop\fR" 4
  .IX Item "-mloop"
! Allow (or do not allow) \s-1GCC\s0 to use the \s-1LOOP\s0 instruction.
! .IP "\fB\-mabi=\fR\fIvariant\fR" 4
  .IX Item "-mabi=variant"
! Specify the \s-1ABI\s0 variant to output code for.  \fB\-mabi=ti\fR selects the
! unmodified \s-1TI ABI\s0 while \fB\-mabi=gnu\fR selects a \s-1GNU\s0 variant that copes
! more naturally with certain \s-1GCC\s0 assumptions.  These are the differences:
  .RS 4
  .IP "\fBFunction Pointer Size\fR" 4
  .IX Item "Function Pointer Size"
! \&\s-1TI ABI\s0 specifies that function (code) pointers are 16\-bit, whereas \s-1GNU\s0
  supports only 32\-bit data and code pointers.
  .IP "\fBOptional Return Value Pointer\fR" 4
  .IX Item "Optional Return Value Pointer"
  Function return values larger than 64 bits are passed by using a hidden
! pointer as the first argument of the function.  \s-1TI ABI,\s0 though, mandates that
! the pointer can be \s-1NULL\s0 in case the caller is not using the returned value.
! \&\s-1GNU\s0 always passes and expects a valid return value pointer.
  .RE
  .RS 4
  .Sp
--- 29969,30007 ----
  The minimal startup code would not pass \f(CW\*(C`argc\*(C'\fR and \f(CW\*(C`argv\*(C'\fR arguments
  to \f(CW\*(C`main\*(C'\fR, so the latter must be declared as \f(CW\*(C`int main (void)\*(C'\fR.
  This is already the norm for most firmware projects.
! .IP \fB\-mmcu=\fR\fImcu\fR 4
  .IX Item "-mmcu=mcu"
! Specify the PRU hardware variant to use.  A correspondingly named
  spec file would be loaded, passing the memory region sizes to
! the linker and defining hardware\-specific C macros.
  .Sp
  Newlib provides only the \f(CW\*(C`sim\*(C'\fR spec, intended for running
  regression tests using a simulator.  Specs for real hardware can be
  obtained by installing the
  GnuPruMcu (\f(CW\*(C`https://github.com/dinuxbg/gnuprumcu/\*(C'\fR) package.
! .IP \fB\-mno\-relax\fR 4
  .IX Item "-mno-relax"
! Make GCC pass the \fB\-\-no\-relax\fR command\-line option to the linker
  instead of the \fB\-\-relax\fR option.
! .IP \fB\-mloop\fR 4
  .IX Item "-mloop"
! Allow (or do not allow) GCC to use the LOOP instruction.
! .IP \fB\-mabi=\fR\fIvariant\fR 4
  .IX Item "-mabi=variant"
! Specify the ABI variant to output code for.  \fB\-mabi=ti\fR selects the
! unmodified TI ABI while \fB\-mabi=gnu\fR selects a GNU variant that copes
! more naturally with certain GCC assumptions.  These are the differences:
  .RS 4
  .IP "\fBFunction Pointer Size\fR" 4
  .IX Item "Function Pointer Size"
! TI ABI specifies that function (code) pointers are 16\-bit, whereas GNU
  supports only 32\-bit data and code pointers.
  .IP "\fBOptional Return Value Pointer\fR" 4
  .IX Item "Optional Return Value Pointer"
  Function return values larger than 64 bits are passed by using a hidden
! pointer as the first argument of the function.  TI ABI, though, mandates that
! the pointer can be NULL in case the caller is not using the returned value.
! GNU always passes and expects a valid return value pointer.
  .RE
  .RS 4
  .Sp
*************** when any of the above code constructs is
*** 30075,30112 ****
  the standard C library cannot be built and it is omitted when linking with
  \&\fB\-mabi=ti\fR.
  .Sp
! Relaxation is a \s-1GNU\s0 feature and for safety reasons is disabled when using
! \&\fB\-mabi=ti\fR.  The \s-1TI\s0 toolchain does not emit relocations for QBBx
! instructions, so the \s-1GNU\s0 linker cannot adjust them when shortening adjacent
! \&\s-1LDI32\s0 pseudo instructions.
  .RE
  .PP
! \fIRISC-V Options\fR
  .IX Subsection "RISC-V Options"
  .PP
! These command-line options are defined for RISC-V targets:
! .IP "\fB\-mbranch\-cost=\fR\fIn\fR" 4
  .IX Item "-mbranch-cost=n"
  Set the cost of branches to roughly \fIn\fR instructions.
! .IP "\fB\-mplt\fR" 4
  .IX Item "-mplt"
  .PD 0
! .IP "\fB\-mno\-plt\fR" 4
  .IX Item "-mno-plt"
  .PD
! When generating \s-1PIC\s0 code, do or don't allow the use of PLTs. Ignored for
! non-PIC.  The default is \fB\-mplt\fR.
! .IP "\fB\-mabi=\fR\fIABI-string\fR" 4
  .IX Item "-mabi=ABI-string"
! Specify integer and floating-point calling convention.  \fIABI-string\fR
  contains two parts: the size of integer types and the registers used for
! floating-point types.  For example \fB\-march=rv64ifd \-mabi=lp64d\fR means that
  \&\fBlong\fR and pointers are 64\-bit (implicitly defining \fBint\fR to be
! 32\-bit), and that floating-point values up to 64 bits wide are passed in F
  registers.  Contrast this with \fB\-march=rv64ifd \-mabi=lp64f\fR, which still
  allows the compiler to generate code that uses the F and D extensions but only
! allows floating-point values up to 32 bits long to be passed in registers; or
! \&\fB\-march=rv64ifd \-mabi=lp64\fR, in which no floating-point arguments will be
  passed in registers.
  .Sp
  The default for this argument is system dependent, users who want a specific
--- 30010,30047 ----
  the standard C library cannot be built and it is omitted when linking with
  \&\fB\-mabi=ti\fR.
  .Sp
! Relaxation is a GNU feature and for safety reasons is disabled when using
! \&\fB\-mabi=ti\fR.  The TI toolchain does not emit relocations for QBBx
! instructions, so the GNU linker cannot adjust them when shortening adjacent
! LDI32 pseudo instructions.
  .RE
  .PP
! \fIRISC\-V Options\fR
  .IX Subsection "RISC-V Options"
  .PP
! These command\-line options are defined for RISC\-V targets:
! .IP \fB\-mbranch\-cost=\fR\fIn\fR 4
  .IX Item "-mbranch-cost=n"
  Set the cost of branches to roughly \fIn\fR instructions.
! .IP \fB\-mplt\fR 4
  .IX Item "-mplt"
  .PD 0
! .IP \fB\-mno\-plt\fR 4
  .IX Item "-mno-plt"
  .PD
! When generating PIC code, do or don\*(Aqt allow the use of PLTs. Ignored for
! non\-PIC.  The default is \fB\-mplt\fR.
! .IP \fB\-mabi=\fR\fIABI\-string\fR 4
  .IX Item "-mabi=ABI-string"
! Specify integer and floating\-point calling convention.  \fIABI\-string\fR
  contains two parts: the size of integer types and the registers used for
! floating\-point types.  For example \fB\-march=rv64ifd \-mabi=lp64d\fR means that
  \&\fBlong\fR and pointers are 64\-bit (implicitly defining \fBint\fR to be
! 32\-bit), and that floating\-point values up to 64 bits wide are passed in F
  registers.  Contrast this with \fB\-march=rv64ifd \-mabi=lp64f\fR, which still
  allows the compiler to generate code that uses the F and D extensions but only
! allows floating\-point values up to 32 bits long to be passed in registers; or
! \&\fB\-march=rv64ifd \-mabi=lp64\fR, in which no floating\-point arguments will be
  passed in registers.
  .Sp
  The default for this argument is system dependent, users who want a specific
*************** calling convention should specify one ex
*** 30114,30194 ****
  conventions are: \fBilp32\fR, \fBilp32f\fR, \fBilp32d\fR, \fBlp64\fR,
  \&\fBlp64f\fR, and \fBlp64d\fR.  Some calling conventions are impossible to
  implement on some ISAs: for example, \fB\-march=rv32if \-mabi=ilp32d\fR is
! invalid because the \s-1ABI\s0 requires 64\-bit values be passed in F registers, but F
! registers are only 32 bits wide.  There are also the \fBilp32e\fR \s-1ABI\s0 that can
! only be used with the \fBrv32e\fR architecture and the \fBlp64e\fR \s-1ABI\s0 that
  can only be used with the \fBrv64e\fR.  Those ABIs are not well specified at
  present, and are subject to change.
! .IP "\fB\-mfdiv\fR" 4
  .IX Item "-mfdiv"
  .PD 0
! .IP "\fB\-mno\-fdiv\fR" 4
  .IX Item "-mno-fdiv"
  .PD
! Do or don't use hardware floating-point divide and square root instructions.
! This requires the F or D extensions for floating-point registers.  The default
  is to use them if the specified architecture has these instructions.
! .IP "\fB\-mfence\-tso\fR" 4
  .IX Item "-mfence-tso"
  .PD 0
! .IP "\fB\-mno\-fence\-tso\fR" 4
  .IX Item "-mno-fence-tso"
  .PD
! Do or don't use the \fBfence.tso\fR instruction, which is unimplemented on
  some processors (including those from T\-Head).  If the \fBfence.tso\fR
  instruction is not available then a stronger fence is used instead.
! .IP "\fB\-mdiv\fR" 4
  .IX Item "-mdiv"
  .PD 0
! .IP "\fB\-mno\-div\fR" 4
  .IX Item "-mno-div"
  .PD
! Do or don't use hardware instructions for integer division.  This requires the
  M extension.  The default is to use them if the specified architecture has
  these instructions.
! .IP "\fB\-misa\-spec=\fR\fIISA-spec-string\fR" 4
  .IX Item "-misa-spec=ISA-spec-string"
! Specify the version of the RISC-V Unprivileged (formerly User-Level)
! \&\s-1ISA\s0 specification to produce code conforming to.  The possibilities
! for \fIISA-spec-string\fR are:
  .RS 4
! .ie n .IP "2.2" 4
! .el .IP "\f(CW2.2\fR" 4
  .IX Item "2.2"
  Produce code conforming to version 2.2.
! .ie n .IP "20190608" 4
! .el .IP "\f(CW20190608\fR" 4
  .IX Item "20190608"
  Produce code conforming to version 20190608.
! .ie n .IP "20191213" 4
! .el .IP "\f(CW20191213\fR" 4
  .IX Item "20191213"
  Produce code conforming to version 20191213.
  .RE
  .RS 4
  .Sp
! The default is \fB\-misa\-spec=20191213\fR unless \s-1GCC\s0 has been configured
  with \fB\-\-with\-isa\-spec=\fR specifying a different default version.
  .RE
! .IP "\fB\-march=\fR\fIISA-string\fR" 4
  .IX Item "-march=ISA-string"
! Generate code for given RISC-V \s-1ISA\s0 (e.g. \fBrv64im\fR).  \s-1ISA\s0 strings must be
! lower-case.  Examples include \fBrv64i\fR, \fBrv32g\fR, \fBrv32e\fR, and
  \&\fBrv32imaf\fR. Additionally, a special value \fBhelp\fR
  (\fB\-march=help\fR) is accepted to list all supported extensions.
  .Sp
! The syntax of the \s-1ISA\s0 string is defined as follows:
  .RS 4
! .ie n .IP """The string must start with \fBrv32\fP or \fBrv64\fP, followed by""" 4
! .el .IP "\f(CWThe string must start with \f(CBrv32\f(CW or \f(CBrv64\f(CW, followed by\fR" 4
  .IX Item "The string must start with rv32 or rv64, followed by"
! \&\fBi\fR, \fBe\fR, or \fBg\fR, referred to as the base \s-1ISA.\s0
  .ie n .IP """The subsequent part of the string is a list of extension names. Extension""" 4
  .el .IP "\f(CWThe subsequent part of the string is a list of extension names. Extension\fR" 4
  .IX Item "The subsequent part of the string is a list of extension names. Extension"
! names can be categorized as multi-letter (e.g. \fBzba\fR) and single-letter
! (e.g. \fBv\fR). Single-letter extensions can appear consecutively,
! but multi-letter extensions must be separated by underscores.
  .ie n .IP """An underscore can appear anywhere after the base ISA. It has no specific""" 4
  .el .IP "\f(CWAn underscore can appear anywhere after the base ISA. It has no specific\fR" 4
  .IX Item "An underscore can appear anywhere after the base ISA. It has no specific"
--- 30049,30129 ----
  conventions are: \fBilp32\fR, \fBilp32f\fR, \fBilp32d\fR, \fBlp64\fR,
  \&\fBlp64f\fR, and \fBlp64d\fR.  Some calling conventions are impossible to
  implement on some ISAs: for example, \fB\-march=rv32if \-mabi=ilp32d\fR is
! invalid because the ABI requires 64\-bit values be passed in F registers, but F
! registers are only 32 bits wide.  There are also the \fBilp32e\fR ABI that can
! only be used with the \fBrv32e\fR architecture and the \fBlp64e\fR ABI that
  can only be used with the \fBrv64e\fR.  Those ABIs are not well specified at
  present, and are subject to change.
! .IP \fB\-mfdiv\fR 4
  .IX Item "-mfdiv"
  .PD 0
! .IP \fB\-mno\-fdiv\fR 4
  .IX Item "-mno-fdiv"
  .PD
! Do or don\*(Aqt use hardware floating\-point divide and square root instructions.
! This requires the F or D extensions for floating\-point registers.  The default
  is to use them if the specified architecture has these instructions.
! .IP \fB\-mfence\-tso\fR 4
  .IX Item "-mfence-tso"
  .PD 0
! .IP \fB\-mno\-fence\-tso\fR 4
  .IX Item "-mno-fence-tso"
  .PD
! Do or don\*(Aqt use the \fBfence.tso\fR instruction, which is unimplemented on
  some processors (including those from T\-Head).  If the \fBfence.tso\fR
  instruction is not available then a stronger fence is used instead.
! .IP \fB\-mdiv\fR 4
  .IX Item "-mdiv"
  .PD 0
! .IP \fB\-mno\-div\fR 4
  .IX Item "-mno-div"
  .PD
! Do or don\*(Aqt use hardware instructions for integer division.  This requires the
  M extension.  The default is to use them if the specified architecture has
  these instructions.
! .IP \fB\-misa\-spec=\fR\fIISA\-spec\-string\fR 4
  .IX Item "-misa-spec=ISA-spec-string"
! Specify the version of the RISC\-V Unprivileged (formerly User\-Level)
! ISA specification to produce code conforming to.  The possibilities
! for \fIISA\-spec\-string\fR are:
  .RS 4
! .ie n .IP 2.2 4
! .el .IP \f(CW2.2\fR 4
  .IX Item "2.2"
  Produce code conforming to version 2.2.
! .ie n .IP 20190608 4
! .el .IP \f(CW20190608\fR 4
  .IX Item "20190608"
  Produce code conforming to version 20190608.
! .ie n .IP 20191213 4
! .el .IP \f(CW20191213\fR 4
  .IX Item "20191213"
  Produce code conforming to version 20191213.
  .RE
  .RS 4
  .Sp
! The default is \fB\-misa\-spec=20191213\fR unless GCC has been configured
  with \fB\-\-with\-isa\-spec=\fR specifying a different default version.
  .RE
! .IP \fB\-march=\fR\fIISA\-string\fR 4
  .IX Item "-march=ISA-string"
! Generate code for given RISC\-V ISA (e.g. \fBrv64im\fR).  ISA strings must be
! lower\-case.  Examples include \fBrv64i\fR, \fBrv32g\fR, \fBrv32e\fR, and
  \&\fBrv32imaf\fR. Additionally, a special value \fBhelp\fR
  (\fB\-march=help\fR) is accepted to list all supported extensions.
  .Sp
! The syntax of the ISA string is defined as follows:
  .RS 4
! .ie n .IP """The string must start with \fBrv32\fR or \fBrv64\fR, followed by""" 4
! .el .IP "\f(CWThe string must start with \fR\f(CBrv32\fR\f(CW or \fR\f(CBrv64\fR\f(CW, followed by\fR" 4
  .IX Item "The string must start with rv32 or rv64, followed by"
! \&\fBi\fR, \fBe\fR, or \fBg\fR, referred to as the base ISA.
  .ie n .IP """The subsequent part of the string is a list of extension names. Extension""" 4
  .el .IP "\f(CWThe subsequent part of the string is a list of extension names. Extension\fR" 4
  .IX Item "The subsequent part of the string is a list of extension names. Extension"
! names can be categorized as multi\-letter (e.g. \fBzba\fR) and single\-letter
! (e.g. \fBv\fR). Single\-letter extensions can appear consecutively,
! but multi\-letter extensions must be separated by underscores.
  .ie n .IP """An underscore can appear anywhere after the base ISA. It has no specific""" 4
  .el .IP "\f(CWAn underscore can appear anywhere after the base ISA. It has no specific\fR" 4
  .IX Item "An underscore can appear anywhere after the base ISA. It has no specific"
*************** Supported extension are listed below:
*** 30205,30692 ****
  .IP "\fIExtension Name\fR : \fISupported Version\fR : \fIDescription\fR" 4
  .IX Item "Extension Name : Supported Version : Description"
  .PD 0
! .IP "i" 4
  .IX Item "i"
  .PD
  \&\f(CW@tab\fR 2.0, 2.1
  \&\f(CW@tab\fR Base integer extension.
! .IP "e" 4
  .IX Item "e"
  \&\f(CW@tab\fR 2.0
  \&\f(CW@tab\fR Reduced base integer extension.
! .IP "g" 4
  .IX Item "g"
  \&\f(CW@tab\fR \-
! \&\f(CW@tab\fR General-purpose computing base extension, \fBg\fR will expand to
  \&\fBi\fR, \fBm\fR, \fBa\fR, \fBf\fR, \fBd\fR, \fBzicsr\fR and
  \&\fBzifencei\fR.
! .IP "m" 4
  .IX Item "m"
  \&\f(CW@tab\fR 2.0
  \&\f(CW@tab\fR Integer multiplication and division extension.
! .IP "a" 4
  .IX Item "a"
  \&\f(CW@tab\fR 2.0, 2.1
  \&\f(CW@tab\fR Atomic extension.
! .IP "f" 4
  .IX Item "f"
  \&\f(CW@tab\fR 2.0, 2.2
! \&\f(CW@tab\fR Single-precision floating-point extension.
! .IP "d" 4
  .IX Item "d"
  \&\f(CW@tab\fR 2.0, 2.2
! \&\f(CW@tab\fR Double-precision floating-point extension.
! .IP "c" 4
  .IX Item "c"
  \&\f(CW@tab\fR 2.0
  \&\f(CW@tab\fR Compressed extension.
! .IP "h" 4
  .IX Item "h"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Hypervisor extension.
! .IP "v" 4
  .IX Item "v"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector extension.
! .IP "zicsr" 4
  .IX Item "zicsr"
  \&\f(CW@tab\fR 2.0
  \&\f(CW@tab\fR Control and status register access extension.
! .IP "zifencei" 4
  .IX Item "zifencei"
  \&\f(CW@tab\fR 2.0
! \&\f(CW@tab\fR Instruction-fetch fence extension.
! .IP "zicond" 4
  .IX Item "zicond"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Integer conditional operations extension.
! .IP "za64rs" 4
  .IX Item "za64rs"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Reservation set size of 64 bytes.
! .IP "za128rs" 4
  .IX Item "za128rs"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Reservation set size of 128 bytes.
! .IP "zawrs" 4
  .IX Item "zawrs"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Wait-on-reservation-set extension.
! .IP "zba" 4
  .IX Item "zba"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Address calculation extension.
! .IP "zbb" 4
  .IX Item "zbb"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Basic bit manipulation extension.
! .IP "zbc" 4
  .IX Item "zbc"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Carry-less multiplication extension.
! .IP "zbs" 4
  .IX Item "zbs"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Single-bit operation extension.
! .IP "zfinx" 4
  .IX Item "zfinx"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Single-precision floating-point in integer registers extension.
! .IP "zdinx" 4
  .IX Item "zdinx"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Double-precision floating-point in integer registers extension.
! .IP "zhinx" 4
  .IX Item "zhinx"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Half-precision floating-point in integer registers extension.
! .IP "zhinxmin" 4
  .IX Item "zhinxmin"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Minimal half-precision floating-point in integer registers extension.
! .IP "zbkb" 4
  .IX Item "zbkb"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Cryptography bit-manipulation extension.
! .IP "zbkc" 4
  .IX Item "zbkc"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Cryptography carry-less multiply extension.
! .IP "zbkx" 4
  .IX Item "zbkx"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Cryptography crossbar permutation extension.
! .IP "zkne" 4
  .IX Item "zkne"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR \s-1AES\s0 Encryption extension.
! .IP "zknd" 4
  .IX Item "zknd"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR \s-1AES\s0 Decryption extension.
! .IP "zknh" 4
  .IX Item "zknh"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Hash function extension.
! .IP "zkr" 4
  .IX Item "zkr"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Entropy source extension.
! .IP "zksed" 4
  .IX Item "zksed"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR \s-1SM4\s0 block cipher extension.
! .IP "zksh" 4
  .IX Item "zksh"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR \s-1SM3\s0 hash function extension.
! .IP "zkt" 4
  .IX Item "zkt"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Data independent execution latency extension.
! .IP "zk" 4
  .IX Item "zk"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Standard scalar cryptography extension.
! .IP "zkn" 4
  .IX Item "zkn"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR \s-1NIST\s0 algorithm suite extension.
! .IP "zks" 4
  .IX Item "zks"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR ShangMi algorithm suite extension.
! .IP "zihintntl" 4
  .IX Item "zihintntl"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Non-temporal locality hints extension.
! .IP "zihintpause" 4
  .IX Item "zihintpause"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Pause hint extension.
! .IP "zicboz" 4
  .IX Item "zicboz"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Cache-block zero extension.
! .IP "zicbom" 4
  .IX Item "zicbom"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Cache-block management extension.
! .IP "zicbop" 4
  .IX Item "zicbop"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Cache-block prefetch extension.
! .IP "zic64b" 4
  .IX Item "zic64b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Cache block size isf 64 bytes.
! .IP "ziccamoa" 4
  .IX Item "ziccamoa"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Main memory supports all atomics in A.
! .IP "ziccif" 4
  .IX Item "ziccif"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Main memory supports instruction fetch with atomicity requirement.
! .IP "zicclsm" 4
  .IX Item "zicclsm"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Main memory supports misaligned loads/stores.
! .IP "ziccrse" 4
  .IX Item "ziccrse"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Main memory supports forward progress on \s-1LR/SC\s0 sequences.
! .IP "zicntr" 4
  .IX Item "zicntr"
  \&\f(CW@tab\fR 2.0
  \&\f(CW@tab\fR Standard extension for base counters and timers.
! .IP "zihpm" 4
  .IX Item "zihpm"
  \&\f(CW@tab\fR 2.0
  \&\f(CW@tab\fR Standard extension for hardware performance counters.
! .IP "ztso" 4
  .IX Item "ztso"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Total store ordering extension.
! .IP "zve32x" 4
  .IX Item "zve32x"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector extensions for embedded processors.
! .IP "zve32f" 4
  .IX Item "zve32f"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector extensions for embedded processors.
! .IP "zve64x" 4
  .IX Item "zve64x"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector extensions for embedded processors.
! .IP "zve64f" 4
  .IX Item "zve64f"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector extensions for embedded processors.
! .IP "zve64d" 4
  .IX Item "zve64d"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector extensions for embedded processors.
! .IP "zvl32b" 4
  .IX Item "zvl32b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP "zvl64b" 4
  .IX Item "zvl64b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP "zvl128b" 4
  .IX Item "zvl128b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP "zvl256b" 4
  .IX Item "zvl256b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP "zvl512b" 4
  .IX Item "zvl512b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP "zvl1024b" 4
  .IX Item "zvl1024b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP "zvl2048b" 4
  .IX Item "zvl2048b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP "zvl4096b" 4
  .IX Item "zvl4096b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP "zvbb" 4
  .IX Item "zvbb"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector basic bit-manipulation extension.
! .IP "zvbc" 4
  .IX Item "zvbc"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector carryless multiplication extension.
! .IP "zvkb" 4
  .IX Item "zvkb"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector cryptography bit-manipulation extension.
! .IP "zvkg" 4
  .IX Item "zvkg"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector \s-1GCM/GMAC\s0 extension.
! .IP "zvkned" 4
  .IX Item "zvkned"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector \s-1AES\s0 block cipher extension.
! .IP "zvknha" 4
  .IX Item "zvknha"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector \s-1SHA\-2\s0 secure hash extension.
! .IP "zvknhb" 4
  .IX Item "zvknhb"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector \s-1SHA\-2\s0 secure hash extension.
! .IP "zvksed" 4
  .IX Item "zvksed"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector \s-1SM4\s0 Block Cipher extension.
! .IP "zvksh" 4
  .IX Item "zvksh"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector \s-1SM3\s0 Secure Hash extension.
! .IP "zvkn" 4
  .IX Item "zvkn"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector \s-1NIST\s0 Algorithm Suite extension, \fBzvkn\fR will expand to
  \&\fBzvkned\fR, \fBzvknhb\fR, \fBzvkb\fR and \fBzvkt\fR.
! .IP "zvknc" 4
  .IX Item "zvknc"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector \s-1NIST\s0 Algorithm Suite with carryless multiply extension, \fBzvknc\fR
  will expand to \fBzvkn\fR and \fBzvbc\fR.
! .IP "zvkng" 4
  .IX Item "zvkng"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector \s-1NIST\s0 Algorithm Suite with \s-1GCM\s0 extension, \fBzvkng\fR will expand
  to \fBzvkn\fR and \fBzvkg\fR.
! .IP "zvks" 4
  .IX Item "zvks"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector ShangMi algorithm suite extension, \fBzvks\fR will expand
  to \fBzvksed\fR, \fBzvksh\fR, \fBzvkb\fR and \fBzvkt\fR.
! .IP "zvksc" 4
  .IX Item "zvksc"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector ShangMi algorithm suite with carryless multiplication extension,
  \&\fBzvksc\fR will expand to \fBzvks\fR and \fBzvbc\fR.
! .IP "zvksg" 4
  .IX Item "zvksg"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector ShangMi algorithm suite with \s-1GCM\s0 extension, \fBzvksg\fR will expand
  to \fBzvks\fR and \fBzvkg\fR.
! .IP "zvkt" 4
  .IX Item "zvkt"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector data independent execution latency extension.
! .IP "zfh" 4
  .IX Item "zfh"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Half-precision floating-point extension.
! .IP "zfhmin" 4
  .IX Item "zfhmin"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Minimal half-precision floating-point extension.
! .IP "zvfh" 4
  .IX Item "zvfh"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector half-precision floating-point extension.
! .IP "zvfhmin" 4
  .IX Item "zvfhmin"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector minimal half-precision floating-point extension.
! .IP "zvfbfmin" 4
  .IX Item "zvfbfmin"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector \s-1BF16\s0 converts extension.
! .IP "zfa" 4
  .IX Item "zfa"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Additional floating-point extension.
! .IP "zmmul" 4
  .IX Item "zmmul"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Integer multiplication extension.
! .IP "zca" 4
  .IX Item "zca"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Integer compressed instruction extension.
! .IP "zcf" 4
  .IX Item "zcf"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Compressed single-precision floating point loads and stores extension.
! .IP "zcd" 4
  .IX Item "zcd"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Compressed double-precision floating point loads and stores extension.
! .IP "zcb" 4
  .IX Item "zcb"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Simple compressed instruction extension.
! .IP "zce" 4
  .IX Item "zce"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Compressed instruction extensions for embedded processors.
! .IP "zcmp" 4
  .IX Item "zcmp"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Compressed push pop extension.
! .IP "zcmt" 4
  .IX Item "zcmt"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Table jump instruction extension.
! .IP "smaia" 4
  .IX Item "smaia"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Advanced interrupt architecture extension.
! .IP "smepmp" 4
  .IX Item "smepmp"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR \s-1PMP\s0 Enhancements for memory access and execution prevention on Machine mode.
! .IP "smstateen" 4
  .IX Item "smstateen"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR State enable extension.
! .IP "ssaia" 4
  .IX Item "ssaia"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Advanced interrupt architecture extension for supervisor-mode.
! .IP "sscofpmf" 4
  .IX Item "sscofpmf"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Count overflow & filtering extension.
! .IP "ssstateen" 4
  .IX Item "ssstateen"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR State-enable extension for supervisor-mode.
! .IP "sstc" 4
  .IX Item "sstc"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Supervisor-mode timer interrupts extension.
! .IP "svinval" 4
  .IX Item "svinval"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Fine-grained address-translation cache invalidation extension.
! .IP "svnapot" 4
  .IX Item "svnapot"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR \s-1NAPOT\s0 translation contiguity extension.
! .IP "svpbmt" 4
  .IX Item "svpbmt"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Page-based memory types extension.
! .IP "xcvmac" 4
  .IX Item "xcvmac"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Core-V multiply-accumulate extension.
! .IP "xcvalu" 4
  .IX Item "xcvalu"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Core-V miscellaneous \s-1ALU\s0 extension.
! .IP "xcvelw" 4
  .IX Item "xcvelw"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Core-V event load word extension.
! .IP "xtheadba" 4
  .IX Item "xtheadba"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR T\-head address calculation extension.
! .IP "xtheadbb" 4
  .IX Item "xtheadbb"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head basic bit-manipulation extension.
! .IP "xtheadbs" 4
  .IX Item "xtheadbs"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head single-bit instructions extension.
! .IP "xtheadcmo" 4
  .IX Item "xtheadcmo"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR T\-head cache management operations extension.
! .IP "xtheadcondmov" 4
  .IX Item "xtheadcondmov"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR T\-head conditional move extension.
! .IP "xtheadfmemidx" 4
  .IX Item "xtheadfmemidx"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head indexed memory operations for floating-point registers extension.
! .IP "xtheadfmv" 4
  .IX Item "xtheadfmv"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head double floating-point high-bit data transmission extension.
! .IP "xtheadint" 4
  .IX Item "xtheadint"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR T\-head acceleration interruption extension.
! .IP "xtheadmac" 4
  .IX Item "xtheadmac"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head multiply-accumulate extension.
! .IP "xtheadmemidx" 4
  .IX Item "xtheadmemidx"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR T\-head indexed memory operation extension.
! .IP "xtheadmempair" 4
  .IX Item "xtheadmempair"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head two-GPR memory operation extension.
! .IP "xtheadsync" 4
  .IX Item "xtheadsync"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head multi-core synchronization extension.
! .IP "xventanacondops" 4
  .IX Item "xventanacondops"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Ventana integer conditional operations extension.
--- 30140,30627 ----
  .IP "\fIExtension Name\fR : \fISupported Version\fR : \fIDescription\fR" 4
  .IX Item "Extension Name : Supported Version : Description"
  .PD 0
! .IP i 4
  .IX Item "i"
  .PD
  \&\f(CW@tab\fR 2.0, 2.1
  \&\f(CW@tab\fR Base integer extension.
! .IP e 4
  .IX Item "e"
  \&\f(CW@tab\fR 2.0
  \&\f(CW@tab\fR Reduced base integer extension.
! .IP g 4
  .IX Item "g"
  \&\f(CW@tab\fR \-
! \&\f(CW@tab\fR General\-purpose computing base extension, \fBg\fR will expand to
  \&\fBi\fR, \fBm\fR, \fBa\fR, \fBf\fR, \fBd\fR, \fBzicsr\fR and
  \&\fBzifencei\fR.
! .IP m 4
  .IX Item "m"
  \&\f(CW@tab\fR 2.0
  \&\f(CW@tab\fR Integer multiplication and division extension.
! .IP a 4
  .IX Item "a"
  \&\f(CW@tab\fR 2.0, 2.1
  \&\f(CW@tab\fR Atomic extension.
! .IP f 4
  .IX Item "f"
  \&\f(CW@tab\fR 2.0, 2.2
! \&\f(CW@tab\fR Single\-precision floating\-point extension.
! .IP d 4
  .IX Item "d"
  \&\f(CW@tab\fR 2.0, 2.2
! \&\f(CW@tab\fR Double\-precision floating\-point extension.
! .IP c 4
  .IX Item "c"
  \&\f(CW@tab\fR 2.0
  \&\f(CW@tab\fR Compressed extension.
! .IP h 4
  .IX Item "h"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Hypervisor extension.
! .IP v 4
  .IX Item "v"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector extension.
! .IP zicsr 4
  .IX Item "zicsr"
  \&\f(CW@tab\fR 2.0
  \&\f(CW@tab\fR Control and status register access extension.
! .IP zifencei 4
  .IX Item "zifencei"
  \&\f(CW@tab\fR 2.0
! \&\f(CW@tab\fR Instruction\-fetch fence extension.
! .IP zicond 4
  .IX Item "zicond"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Integer conditional operations extension.
! .IP za64rs 4
  .IX Item "za64rs"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Reservation set size of 64 bytes.
! .IP za128rs 4
  .IX Item "za128rs"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Reservation set size of 128 bytes.
! .IP zawrs 4
  .IX Item "zawrs"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Wait\-on\-reservation\-set extension.
! .IP zba 4
  .IX Item "zba"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Address calculation extension.
! .IP zbb 4
  .IX Item "zbb"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Basic bit manipulation extension.
! .IP zbc 4
  .IX Item "zbc"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Carry\-less multiplication extension.
! .IP zbs 4
  .IX Item "zbs"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Single\-bit operation extension.
! .IP zfinx 4
  .IX Item "zfinx"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Single\-precision floating\-point in integer registers extension.
! .IP zdinx 4
  .IX Item "zdinx"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Double\-precision floating\-point in integer registers extension.
! .IP zhinx 4
  .IX Item "zhinx"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Half\-precision floating\-point in integer registers extension.
! .IP zhinxmin 4
  .IX Item "zhinxmin"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Minimal half\-precision floating\-point in integer registers extension.
! .IP zbkb 4
  .IX Item "zbkb"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Cryptography bit\-manipulation extension.
! .IP zbkc 4
  .IX Item "zbkc"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Cryptography carry\-less multiply extension.
! .IP zbkx 4
  .IX Item "zbkx"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Cryptography crossbar permutation extension.
! .IP zkne 4
  .IX Item "zkne"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR AES Encryption extension.
! .IP zknd 4
  .IX Item "zknd"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR AES Decryption extension.
! .IP zknh 4
  .IX Item "zknh"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Hash function extension.
! .IP zkr 4
  .IX Item "zkr"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Entropy source extension.
! .IP zksed 4
  .IX Item "zksed"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR SM4 block cipher extension.
! .IP zksh 4
  .IX Item "zksh"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR SM3 hash function extension.
! .IP zkt 4
  .IX Item "zkt"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Data independent execution latency extension.
! .IP zk 4
  .IX Item "zk"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Standard scalar cryptography extension.
! .IP zkn 4
  .IX Item "zkn"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR NIST algorithm suite extension.
! .IP zks 4
  .IX Item "zks"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR ShangMi algorithm suite extension.
! .IP zihintntl 4
  .IX Item "zihintntl"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Non\-temporal locality hints extension.
! .IP zihintpause 4
  .IX Item "zihintpause"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Pause hint extension.
! .IP zicboz 4
  .IX Item "zicboz"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Cache\-block zero extension.
! .IP zicbom 4
  .IX Item "zicbom"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Cache\-block management extension.
! .IP zicbop 4
  .IX Item "zicbop"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Cache\-block prefetch extension.
! .IP zic64b 4
  .IX Item "zic64b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Cache block size isf 64 bytes.
! .IP ziccamoa 4
  .IX Item "ziccamoa"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Main memory supports all atomics in A.
! .IP ziccif 4
  .IX Item "ziccif"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Main memory supports instruction fetch with atomicity requirement.
! .IP zicclsm 4
  .IX Item "zicclsm"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Main memory supports misaligned loads/stores.
! .IP ziccrse 4
  .IX Item "ziccrse"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Main memory supports forward progress on LR/SC sequences.
! .IP zicntr 4
  .IX Item "zicntr"
  \&\f(CW@tab\fR 2.0
  \&\f(CW@tab\fR Standard extension for base counters and timers.
! .IP zihpm 4
  .IX Item "zihpm"
  \&\f(CW@tab\fR 2.0
  \&\f(CW@tab\fR Standard extension for hardware performance counters.
! .IP ztso 4
  .IX Item "ztso"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Total store ordering extension.
! .IP zve32x 4
  .IX Item "zve32x"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector extensions for embedded processors.
! .IP zve32f 4
  .IX Item "zve32f"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector extensions for embedded processors.
! .IP zve64x 4
  .IX Item "zve64x"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector extensions for embedded processors.
! .IP zve64f 4
  .IX Item "zve64f"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector extensions for embedded processors.
! .IP zve64d 4
  .IX Item "zve64d"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector extensions for embedded processors.
! .IP zvl32b 4
  .IX Item "zvl32b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP zvl64b 4
  .IX Item "zvl64b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP zvl128b 4
  .IX Item "zvl128b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP zvl256b 4
  .IX Item "zvl256b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP zvl512b 4
  .IX Item "zvl512b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP zvl1024b 4
  .IX Item "zvl1024b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP zvl2048b 4
  .IX Item "zvl2048b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP zvl4096b 4
  .IX Item "zvl4096b"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Minimum vector length standard extensions
! .IP zvbb 4
  .IX Item "zvbb"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector basic bit\-manipulation extension.
! .IP zvbc 4
  .IX Item "zvbc"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector carryless multiplication extension.
! .IP zvkb 4
  .IX Item "zvkb"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector cryptography bit\-manipulation extension.
! .IP zvkg 4
  .IX Item "zvkg"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector GCM/GMAC extension.
! .IP zvkned 4
  .IX Item "zvkned"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector AES block cipher extension.
! .IP zvknha 4
  .IX Item "zvknha"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector SHA\-2 secure hash extension.
! .IP zvknhb 4
  .IX Item "zvknhb"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector SHA\-2 secure hash extension.
! .IP zvksed 4
  .IX Item "zvksed"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector SM4 Block Cipher extension.
! .IP zvksh 4
  .IX Item "zvksh"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector SM3 Secure Hash extension.
! .IP zvkn 4
  .IX Item "zvkn"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector NIST Algorithm Suite extension, \fBzvkn\fR will expand to
  \&\fBzvkned\fR, \fBzvknhb\fR, \fBzvkb\fR and \fBzvkt\fR.
! .IP zvknc 4
  .IX Item "zvknc"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector NIST Algorithm Suite with carryless multiply extension, \fBzvknc\fR
  will expand to \fBzvkn\fR and \fBzvbc\fR.
! .IP zvkng 4
  .IX Item "zvkng"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector NIST Algorithm Suite with GCM extension, \fBzvkng\fR will expand
  to \fBzvkn\fR and \fBzvkg\fR.
! .IP zvks 4
  .IX Item "zvks"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector ShangMi algorithm suite extension, \fBzvks\fR will expand
  to \fBzvksed\fR, \fBzvksh\fR, \fBzvkb\fR and \fBzvkt\fR.
! .IP zvksc 4
  .IX Item "zvksc"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector ShangMi algorithm suite with carryless multiplication extension,
  \&\fBzvksc\fR will expand to \fBzvks\fR and \fBzvbc\fR.
! .IP zvksg 4
  .IX Item "zvksg"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector ShangMi algorithm suite with GCM extension, \fBzvksg\fR will expand
  to \fBzvks\fR and \fBzvkg\fR.
! .IP zvkt 4
  .IX Item "zvkt"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Vector data independent execution latency extension.
! .IP zfh 4
  .IX Item "zfh"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Half\-precision floating\-point extension.
! .IP zfhmin 4
  .IX Item "zfhmin"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Minimal half\-precision floating\-point extension.
! .IP zvfh 4
  .IX Item "zvfh"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector half\-precision floating\-point extension.
! .IP zvfhmin 4
  .IX Item "zvfhmin"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector minimal half\-precision floating\-point extension.
! .IP zvfbfmin 4
  .IX Item "zvfbfmin"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Vector BF16 converts extension.
! .IP zfa 4
  .IX Item "zfa"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Additional floating\-point extension.
! .IP zmmul 4
  .IX Item "zmmul"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Integer multiplication extension.
! .IP zca 4
  .IX Item "zca"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Integer compressed instruction extension.
! .IP zcf 4
  .IX Item "zcf"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Compressed single\-precision floating point loads and stores extension.
! .IP zcd 4
  .IX Item "zcd"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Compressed double\-precision floating point loads and stores extension.
! .IP zcb 4
  .IX Item "zcb"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Simple compressed instruction extension.
! .IP zce 4
  .IX Item "zce"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Compressed instruction extensions for embedded processors.
! .IP zcmp 4
  .IX Item "zcmp"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Compressed push pop extension.
! .IP zcmt 4
  .IX Item "zcmt"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Table jump instruction extension.
! .IP smaia 4
  .IX Item "smaia"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Advanced interrupt architecture extension.
! .IP smepmp 4
  .IX Item "smepmp"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR PMP Enhancements for memory access and execution prevention on Machine mode.
! .IP smstateen 4
  .IX Item "smstateen"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR State enable extension.
! .IP ssaia 4
  .IX Item "ssaia"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Advanced interrupt architecture extension for supervisor\-mode.
! .IP sscofpmf 4
  .IX Item "sscofpmf"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Count overflow & filtering extension.
! .IP ssstateen 4
  .IX Item "ssstateen"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR State\-enable extension for supervisor\-mode.
! .IP sstc 4
  .IX Item "sstc"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Supervisor\-mode timer interrupts extension.
! .IP svinval 4
  .IX Item "svinval"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Fine\-grained address\-translation cache invalidation extension.
! .IP svnapot 4
  .IX Item "svnapot"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR NAPOT translation contiguity extension.
! .IP svpbmt 4
  .IX Item "svpbmt"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Page\-based memory types extension.
! .IP xcvmac 4
  .IX Item "xcvmac"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Core\-V multiply\-accumulate extension.
! .IP xcvalu 4
  .IX Item "xcvalu"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Core\-V miscellaneous ALU extension.
! .IP xcvelw 4
  .IX Item "xcvelw"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR Core\-V event load word extension.
! .IP xtheadba 4
  .IX Item "xtheadba"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR T\-head address calculation extension.
! .IP xtheadbb 4
  .IX Item "xtheadbb"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head basic bit\-manipulation extension.
! .IP xtheadbs 4
  .IX Item "xtheadbs"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head single\-bit instructions extension.
! .IP xtheadcmo 4
  .IX Item "xtheadcmo"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR T\-head cache management operations extension.
! .IP xtheadcondmov 4
  .IX Item "xtheadcondmov"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR T\-head conditional move extension.
! .IP xtheadfmemidx 4
  .IX Item "xtheadfmemidx"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head indexed memory operations for floating\-point registers extension.
! .IP xtheadfmv 4
  .IX Item "xtheadfmv"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head double floating\-point high\-bit data transmission extension.
! .IP xtheadint 4
  .IX Item "xtheadint"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR T\-head acceleration interruption extension.
! .IP xtheadmac 4
  .IX Item "xtheadmac"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head multiply\-accumulate extension.
! .IP xtheadmemidx 4
  .IX Item "xtheadmemidx"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR T\-head indexed memory operation extension.
! .IP xtheadmempair 4
  .IX Item "xtheadmempair"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head two\-GPR memory operation extension.
! .IP xtheadsync 4
  .IX Item "xtheadsync"
  \&\f(CW@tab\fR 1.0
! \&\f(CW@tab\fR T\-head multi\-core synchronization extension.
! .IP xventanacondops 4
  .IX Item "xventanacondops"
  \&\f(CW@tab\fR 1.0
  \&\f(CW@tab\fR Ventana integer conditional operations extension.
*************** If both \fB\-march\fR and \fB\-mcpu=\fR
*** 30699,30725 ****
  this argument is system dependent, users who want a specific architecture
  extensions should specify one explicitly.
  .Sp
! When the RISC-V specifications define an extension as depending on other
! extensions, \s-1GCC\s0 will implicitly add the dependent extensions to the enabled
! extension set if they weren't added explicitly.
  .RE
! .IP "\fB\-mcpu=\fR\fIprocessor-string\fR" 4
  .IX Item "-mcpu=processor-string"
  Use architecture of and optimize the output for the given processor, specified
! by particular \s-1CPU\s0 name.
  Permissible values for this option are: \fBsifive\-e20\fR, \fBsifive\-e21\fR,
  \&\fBsifive\-e24\fR, \fBsifive\-e31\fR, \fBsifive\-e34\fR, \fBsifive\-e76\fR,
  \&\fBsifive\-s21\fR, \fBsifive\-s51\fR, \fBsifive\-s54\fR, \fBsifive\-s76\fR,
  \&\fBsifive\-u54\fR, \fBsifive\-u74\fR, \fBsifive\-x280\fR, \fBsifive\-xp450\fR,
  \&\fBsifive\-x670\fR, \fBthead\-c906\fR, \fBtt\-ascalon\-d8\fR,
! \&\fBxiangshan-nanhu\fR.
  .Sp
  Note that \fB\-mcpu\fR does not override \fB\-march\fR or \fB\-mtune\fR.
! .IP "\fB\-mtune=\fR\fIprocessor-string\fR" 4
  .IX Item "-mtune=processor-string"
  Optimize the output for the given processor, specified by microarchitecture or
! particular \s-1CPU\s0 name.  Permissible values for this option are:
! \&\fBgeneric-ooo\fR, \fBrocket\fR, \fBsifive\-3\-series\fR,
  \&\fBsifive\-5\-series\fR, \fBsifive\-7\-series\fR, \fBsize\fR,
  \&\fBsifive\-p400\-series\fR, \fBsifive\-p600\-series\fR, and all valid options for
  \&\fB\-mcpu=\fR.
--- 30634,30660 ----
  this argument is system dependent, users who want a specific architecture
  extensions should specify one explicitly.
  .Sp
! When the RISC\-V specifications define an extension as depending on other
! extensions, GCC will implicitly add the dependent extensions to the enabled
! extension set if they weren\*(Aqt added explicitly.
  .RE
! .IP \fB\-mcpu=\fR\fIprocessor\-string\fR 4
  .IX Item "-mcpu=processor-string"
  Use architecture of and optimize the output for the given processor, specified
! by particular CPU name.
  Permissible values for this option are: \fBsifive\-e20\fR, \fBsifive\-e21\fR,
  \&\fBsifive\-e24\fR, \fBsifive\-e31\fR, \fBsifive\-e34\fR, \fBsifive\-e76\fR,
  \&\fBsifive\-s21\fR, \fBsifive\-s51\fR, \fBsifive\-s54\fR, \fBsifive\-s76\fR,
  \&\fBsifive\-u54\fR, \fBsifive\-u74\fR, \fBsifive\-x280\fR, \fBsifive\-xp450\fR,
  \&\fBsifive\-x670\fR, \fBthead\-c906\fR, \fBtt\-ascalon\-d8\fR,
! \&\fBxiangshan\-nanhu\fR.
  .Sp
  Note that \fB\-mcpu\fR does not override \fB\-march\fR or \fB\-mtune\fR.
! .IP \fB\-mtune=\fR\fIprocessor\-string\fR 4
  .IX Item "-mtune=processor-string"
  Optimize the output for the given processor, specified by microarchitecture or
! particular CPU name.  Permissible values for this option are:
! \&\fBgeneric\-ooo\fR, \fBrocket\fR, \fBsifive\-3\-series\fR,
  \&\fBsifive\-5\-series\fR, \fBsifive\-7\-series\fR, \fBsize\fR,
  \&\fBsifive\-p400\-series\fR, \fBsifive\-p600\-series\fR, and all valid options for
  \&\fB\-mcpu=\fR.
*************** particular \s-1CPU\s0 name.  Permissible
*** 30727,30737 ****
  When \fB\-mtune=\fR is not specified, use the setting from \fB\-mcpu\fR,
  the default is \fBrocket\fR if both are not specified.
  .Sp
! The \fBsize\fR choice is not intended for use by end-users.  This is used
  when \fB\-Os\fR is specified.  It overrides the instruction cost info
  provided by \fB\-mtune=\fR, but does not override the pipeline info.  This
  helps reduce code size while still giving good performance.
! .IP "\fB\-mpreferred\-stack\-boundary=\fR\fInum\fR" 4
  .IX Item "-mpreferred-stack-boundary=num"
  Attempt to keep the stack boundary aligned to a 2 raised to \fInum\fR
  byte boundary.  If \fB\-mpreferred\-stack\-boundary\fR is not specified,
--- 30662,30672 ----
  When \fB\-mtune=\fR is not specified, use the setting from \fB\-mcpu\fR,
  the default is \fBrocket\fR if both are not specified.
  .Sp
! The \fBsize\fR choice is not intended for use by end\-users.  This is used
  when \fB\-Os\fR is specified.  It overrides the instruction cost info
  provided by \fB\-mtune=\fR, but does not override the pipeline info.  This
  helps reduce code size while still giving good performance.
! .IP \fB\-mpreferred\-stack\-boundary=\fR\fInum\fR 4
  .IX Item "-mpreferred-stack-boundary=num"
  Attempt to keep the stack boundary aligned to a 2 raised to \fInum\fR
  byte boundary.  If \fB\-mpreferred\-stack\-boundary\fR is not specified,
*************** the default is 4 (16 bytes or 128\-bits)
*** 30740,30791 ****
  \&\fBWarning:\fR If you use this switch, then you must build all modules with
  the same value, including any libraries.  This includes the system libraries
  and startup modules.
! .IP "\fB\-msmall\-data\-limit=\fR\fIn\fR" 4
  .IX Item "-msmall-data-limit=n"
  Put global and static data smaller than \fIn\fR bytes into a special section
  (on some targets).
! .IP "\fB\-msave\-restore\fR" 4
  .IX Item "-msave-restore"
  .PD 0
! .IP "\fB\-mno\-save\-restore\fR" 4
  .IX Item "-mno-save-restore"
  .PD
! Do or don't use smaller but slower prologue and epilogue code that uses
  library function calls.  The default is to use fast inline prologues and
  epilogues.
! .IP "\fB\-mmovcc\fR" 4
  .IX Item "-mmovcc"
  .PD 0
! .IP "\fB\-mno\-movcc\fR" 4
  .IX Item "-mno-movcc"
  .PD
! Do or don't produce branchless conditional-move code sequences even with
  targets that do not have specific instructions for conditional operations.
! If enabled, sequences of \s-1ALU\s0 operations are produced using base integer
! \&\s-1ISA\s0 instructions where profitable.
! .IP "\fB\-minline\-atomics\fR" 4
  .IX Item "-minline-atomics"
  .PD 0
! .IP "\fB\-mno\-inline\-atomics\fR" 4
  .IX Item "-mno-inline-atomics"
  .PD
! Do or don't use smaller but slower subword atomic emulation code that uses
  libatomic function calls.  The default is to use fast inline subword atomics
  that do not require libatomic.
! .IP "\fB\-minline\-strlen\fR" 4
  .IX Item "-minline-strlen"
  .PD 0
! .IP "\fB\-mno\-inline\-strlen\fR" 4
  .IX Item "-mno-inline-strlen"
  .PD
  Do or do not attempt to inline strlen calls if possible.
  Inlining will only be done if the string is properly aligned
  and instructions for accelerated processing are available.
  The default is to not inline strlen calls.
! .IP "\fB\-minline\-strcmp\fR" 4
  .IX Item "-minline-strcmp"
  .PD 0
! .IP "\fB\-mno\-inline\-strcmp\fR" 4
  .IX Item "-mno-inline-strcmp"
  .PD
  Do or do not attempt to inline strcmp calls if possible.
--- 30675,30726 ----
  \&\fBWarning:\fR If you use this switch, then you must build all modules with
  the same value, including any libraries.  This includes the system libraries
  and startup modules.
! .IP \fB\-msmall\-data\-limit=\fR\fIn\fR 4
  .IX Item "-msmall-data-limit=n"
  Put global and static data smaller than \fIn\fR bytes into a special section
  (on some targets).
! .IP \fB\-msave\-restore\fR 4
  .IX Item "-msave-restore"
  .PD 0
! .IP \fB\-mno\-save\-restore\fR 4
  .IX Item "-mno-save-restore"
  .PD
! Do or don\*(Aqt use smaller but slower prologue and epilogue code that uses
  library function calls.  The default is to use fast inline prologues and
  epilogues.
! .IP \fB\-mmovcc\fR 4
  .IX Item "-mmovcc"
  .PD 0
! .IP \fB\-mno\-movcc\fR 4
  .IX Item "-mno-movcc"
  .PD
! Do or don\*(Aqt produce branchless conditional\-move code sequences even with
  targets that do not have specific instructions for conditional operations.
! If enabled, sequences of ALU operations are produced using base integer
! ISA instructions where profitable.
! .IP \fB\-minline\-atomics\fR 4
  .IX Item "-minline-atomics"
  .PD 0
! .IP \fB\-mno\-inline\-atomics\fR 4
  .IX Item "-mno-inline-atomics"
  .PD
! Do or don\*(Aqt use smaller but slower subword atomic emulation code that uses
  libatomic function calls.  The default is to use fast inline subword atomics
  that do not require libatomic.
! .IP \fB\-minline\-strlen\fR 4
  .IX Item "-minline-strlen"
  .PD 0
! .IP \fB\-mno\-inline\-strlen\fR 4
  .IX Item "-mno-inline-strlen"
  .PD
  Do or do not attempt to inline strlen calls if possible.
  Inlining will only be done if the string is properly aligned
  and instructions for accelerated processing are available.
  The default is to not inline strlen calls.
! .IP \fB\-minline\-strcmp\fR 4
  .IX Item "-minline-strcmp"
  .PD 0
! .IP \fB\-mno\-inline\-strcmp\fR 4
  .IX Item "-mno-inline-strcmp"
  .PD
  Do or do not attempt to inline strcmp calls if possible.
*************** The default is to not inline strcmp call
*** 30796,30805 ****
  The \fB\-\-param riscv\-strcmp\-inline\-limit=\fR\fIn\fR parameter controls
  the maximum number of bytes compared by the inlined code.
  The default value is 64.
! .IP "\fB\-minline\-strncmp\fR" 4
  .IX Item "-minline-strncmp"
  .PD 0
! .IP "\fB\-mno\-inline\-strncmp\fR" 4
  .IX Item "-mno-inline-strncmp"
  .PD
  Do or do not attempt to inline strncmp calls if possible.
--- 30731,30740 ----
  The \fB\-\-param riscv\-strcmp\-inline\-limit=\fR\fIn\fR parameter controls
  the maximum number of bytes compared by the inlined code.
  The default value is 64.
! .IP \fB\-minline\-strncmp\fR 4
  .IX Item "-minline-strncmp"
  .PD 0
! .IP \fB\-mno\-inline\-strncmp\fR 4
  .IX Item "-mno-inline-strncmp"
  .PD
  Do or do not attempt to inline strncmp calls if possible.
*************** The default is to not inline strncmp cal
*** 30810,30933 ****
  The \fB\-\-param riscv\-strcmp\-inline\-limit=\fR\fIn\fR parameter controls
  the maximum number of bytes compared by the inlined code.
  The default value is 64.
! .IP "\fB\-mshorten\-memrefs\fR" 4
  .IX Item "-mshorten-memrefs"
  .PD 0
! .IP "\fB\-mno\-shorten\-memrefs\fR" 4
  .IX Item "-mno-shorten-memrefs"
  .PD
  Do or do not attempt to make more use of compressed load/store instructions by
! replacing a load/store of 'base register + large offset' with a new load/store
! of 'new base + small offset'.  If the new base gets stored in a compressed
  register, then the new load/store can be compressed.  Currently targets 32\-bit
  integer load/stores only.
! .IP "\fB\-mstrict\-align\fR" 4
  .IX Item "-mstrict-align"
  .PD 0
! .IP "\fB\-mno\-strict\-align\fR" 4
  .IX Item "-mno-strict-align"
  .PD
  Do not or do generate unaligned memory accesses.  The default is set depending
  on whether the processor we are optimizing for supports fast unaligned access
  or not.
! .IP "\fB\-mscalar\-strict\-align\fR" 4
  .IX Item "-mscalar-strict-align"
  .PD 0
! .IP "\fB\-mno\-scalar\-strict\-align\fR" 4
  .IX Item "-mno-scalar-strict-align"
  .PD
  Do not or do generate unaligned memory accesses.  The default is set depending
  on whether the processor we are optimizing for supports fast unaligned access
  or not.  This is an alias for \fB\-mstrict\-align\fR.
! .IP "\fB\-mvector\-strict\-align\fR" 4
  .IX Item "-mvector-strict-align"
  .PD 0
! .IP "\fB\-mno\-vector\-strict\-align\fR" 4
  .IX Item "-mno-vector-strict-align"
  .PD
  Do not or do generate unaligned vector memory accesses.  The default is set
  to off unless the processor we are optimizing for explicitly supports
! element-misaligned vector memory access.
! .IP "\fB\-mcmodel=medlow\fR" 4
  .IX Item "-mcmodel=medlow"
! Generate code for the medium-low code model. The program and its statically
  defined symbols must lie within a single 2 GiB address range and must lie
  between absolute addresses \-2 GiB and +2 GiB. Programs can be statically
! or dynamically linked. This is the default code model unless \s-1GCC\s0 has been
  configured with \fB\-\-with\-cmodel=\fR specifying a different default code
  model.
! .IP "\fB\-mcmodel=medany\fR" 4
  .IX Item "-mcmodel=medany"
! Generate code for the medium-any code model. The program and its statically
  defined symbols must be within any single 2 GiB address range. Programs can be
  statically or dynamically linked.
  .Sp
! The code generated by the medium-any code model is position-independent, but is
! not guaranteed to function correctly when linked into position-independent
  executables or libraries.
! .IP "\fB\-mcmodel=large\fR" 4
  .IX Item "-mcmodel=large"
  Generate code for a large code model, which has no restrictions on size or
  placement of symbols.
! .IP "\fB\-mexplicit\-relocs\fR" 4
  .IX Item "-mexplicit-relocs"
  .PD 0
! .IP "\fB\-mno\-exlicit\-relocs\fR" 4
  .IX Item "-mno-exlicit-relocs"
  .PD
  Use or do not use assembler relocation operators when dealing with symbolic
  addresses.  The alternative is to use assembler macros instead, which may
  limit optimization.
! .IP "\fB\-mrelax\fR" 4
  .IX Item "-mrelax"
  .PD 0
! .IP "\fB\-mno\-relax\fR" 4
  .IX Item "-mno-relax"
  .PD
  Take advantage of linker relaxations to reduce the number of instructions
  required to materialize symbol addresses. The default is to take advantage of
  linker relaxations.
! .IP "\fB\-mriscv\-attribute\fR" 4
  .IX Item "-mriscv-attribute"
  .PD 0
! .IP "\fB\-mno\-riscv\-attribute\fR" 4
  .IX Item "-mno-riscv-attribute"
  .PD
! Emit (do not emit) RISC-V attribute to record extra information into \s-1ELF\s0
  objects.  This feature requires at least binutils 2.32.
! .IP "\fB\-mcsr\-check\fR" 4
  .IX Item "-mcsr-check"
  .PD 0
! .IP "\fB\-mno\-csr\-check\fR" 4
  .IX Item "-mno-csr-check"
  .PD
! Enables or disables the \s-1CSR\s0 checking.
! .IP "\fB\-malign\-data=\fR\fItype\fR" 4
  .IX Item "-malign-data=type"
! Control how \s-1GCC\s0 aligns variables and constants of array, structure, or union
  types.  Supported values for \fItype\fR are \fBxlen\fR which uses x register
  width as the alignment value, and \fBnatural\fR which uses natural alignment.
  \&\fBxlen\fR is the default.
! .IP "\fB\-mbig\-endian\fR" 4
  .IX Item "-mbig-endian"
! Generate big-endian code.  This is the default when \s-1GCC\s0 is configured for a
  \&\fBriscv64be\-*\-*\fR or \fBriscv32be\-*\-*\fR target.
! .IP "\fB\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
! Generate little-endian code.  This is the default when \s-1GCC\s0 is configured for a
  \&\fBriscv64\-*\-*\fR or \fBriscv32\-*\-*\fR but not a \fBriscv64be\-*\-*\fR or
  \&\fBriscv32be\-*\-*\fR target.
! .IP "\fB\-mstack\-protector\-guard=\fR\fIguard\fR" 4
  .IX Item "-mstack-protector-guard=guard"
  .PD 0
! .IP "\fB\-mstack\-protector\-guard\-reg=\fR\fIreg\fR" 4
  .IX Item "-mstack-protector-guard-reg=reg"
! .IP "\fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR" 4
  .IX Item "-mstack-protector-guard-offset=offset"
  .PD
  Generate stack protection code using canary at \fIguard\fR.  Supported
! locations are \fBglobal\fR for a global canary or \fBtls\fR for per-thread
! canary in the \s-1TLS\s0 block.
  .Sp
  With the latter choice the options
  \&\fB\-mstack\-protector\-guard\-reg=\fR\fIreg\fR and
--- 30745,30868 ----
  The \fB\-\-param riscv\-strcmp\-inline\-limit=\fR\fIn\fR parameter controls
  the maximum number of bytes compared by the inlined code.
  The default value is 64.
! .IP \fB\-mshorten\-memrefs\fR 4
  .IX Item "-mshorten-memrefs"
  .PD 0
! .IP \fB\-mno\-shorten\-memrefs\fR 4
  .IX Item "-mno-shorten-memrefs"
  .PD
  Do or do not attempt to make more use of compressed load/store instructions by
! replacing a load/store of \*(Aqbase register + large offset\*(Aq with a new load/store
! of \*(Aqnew base + small offset\*(Aq.  If the new base gets stored in a compressed
  register, then the new load/store can be compressed.  Currently targets 32\-bit
  integer load/stores only.
! .IP \fB\-mstrict\-align\fR 4
  .IX Item "-mstrict-align"
  .PD 0
! .IP \fB\-mno\-strict\-align\fR 4
  .IX Item "-mno-strict-align"
  .PD
  Do not or do generate unaligned memory accesses.  The default is set depending
  on whether the processor we are optimizing for supports fast unaligned access
  or not.
! .IP \fB\-mscalar\-strict\-align\fR 4
  .IX Item "-mscalar-strict-align"
  .PD 0
! .IP \fB\-mno\-scalar\-strict\-align\fR 4
  .IX Item "-mno-scalar-strict-align"
  .PD
  Do not or do generate unaligned memory accesses.  The default is set depending
  on whether the processor we are optimizing for supports fast unaligned access
  or not.  This is an alias for \fB\-mstrict\-align\fR.
! .IP \fB\-mvector\-strict\-align\fR 4
  .IX Item "-mvector-strict-align"
  .PD 0
! .IP \fB\-mno\-vector\-strict\-align\fR 4
  .IX Item "-mno-vector-strict-align"
  .PD
  Do not or do generate unaligned vector memory accesses.  The default is set
  to off unless the processor we are optimizing for explicitly supports
! element\-misaligned vector memory access.
! .IP \fB\-mcmodel=medlow\fR 4
  .IX Item "-mcmodel=medlow"
! Generate code for the medium\-low code model. The program and its statically
  defined symbols must lie within a single 2 GiB address range and must lie
  between absolute addresses \-2 GiB and +2 GiB. Programs can be statically
! or dynamically linked. This is the default code model unless GCC has been
  configured with \fB\-\-with\-cmodel=\fR specifying a different default code
  model.
! .IP \fB\-mcmodel=medany\fR 4
  .IX Item "-mcmodel=medany"
! Generate code for the medium\-any code model. The program and its statically
  defined symbols must be within any single 2 GiB address range. Programs can be
  statically or dynamically linked.
  .Sp
! The code generated by the medium\-any code model is position\-independent, but is
! not guaranteed to function correctly when linked into position\-independent
  executables or libraries.
! .IP \fB\-mcmodel=large\fR 4
  .IX Item "-mcmodel=large"
  Generate code for a large code model, which has no restrictions on size or
  placement of symbols.
! .IP \fB\-mexplicit\-relocs\fR 4
  .IX Item "-mexplicit-relocs"
  .PD 0
! .IP \fB\-mno\-exlicit\-relocs\fR 4
  .IX Item "-mno-exlicit-relocs"
  .PD
  Use or do not use assembler relocation operators when dealing with symbolic
  addresses.  The alternative is to use assembler macros instead, which may
  limit optimization.
! .IP \fB\-mrelax\fR 4
  .IX Item "-mrelax"
  .PD 0
! .IP \fB\-mno\-relax\fR 4
  .IX Item "-mno-relax"
  .PD
  Take advantage of linker relaxations to reduce the number of instructions
  required to materialize symbol addresses. The default is to take advantage of
  linker relaxations.
! .IP \fB\-mriscv\-attribute\fR 4
  .IX Item "-mriscv-attribute"
  .PD 0
! .IP \fB\-mno\-riscv\-attribute\fR 4
  .IX Item "-mno-riscv-attribute"
  .PD
! Emit (do not emit) RISC\-V attribute to record extra information into ELF
  objects.  This feature requires at least binutils 2.32.
! .IP \fB\-mcsr\-check\fR 4
  .IX Item "-mcsr-check"
  .PD 0
! .IP \fB\-mno\-csr\-check\fR 4
  .IX Item "-mno-csr-check"
  .PD
! Enables or disables the CSR checking.
! .IP \fB\-malign\-data=\fR\fItype\fR 4
  .IX Item "-malign-data=type"
! Control how GCC aligns variables and constants of array, structure, or union
  types.  Supported values for \fItype\fR are \fBxlen\fR which uses x register
  width as the alignment value, and \fBnatural\fR which uses natural alignment.
  \&\fBxlen\fR is the default.
! .IP \fB\-mbig\-endian\fR 4
  .IX Item "-mbig-endian"
! Generate big\-endian code.  This is the default when GCC is configured for a
  \&\fBriscv64be\-*\-*\fR or \fBriscv32be\-*\-*\fR target.
! .IP \fB\-mlittle\-endian\fR 4
  .IX Item "-mlittle-endian"
! Generate little\-endian code.  This is the default when GCC is configured for a
  \&\fBriscv64\-*\-*\fR or \fBriscv32\-*\-*\fR but not a \fBriscv64be\-*\-*\fR or
  \&\fBriscv32be\-*\-*\fR target.
! .IP \fB\-mstack\-protector\-guard=\fR\fIguard\fR 4
  .IX Item "-mstack-protector-guard=guard"
  .PD 0
! .IP \fB\-mstack\-protector\-guard\-reg=\fR\fIreg\fR 4
  .IX Item "-mstack-protector-guard-reg=reg"
! .IP \fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR 4
  .IX Item "-mstack-protector-guard-offset=offset"
  .PD
  Generate stack protection code using canary at \fIguard\fR.  Supported
! locations are \fBglobal\fR for a global canary or \fBtls\fR for per\-thread
! canary in the TLS block.
  .Sp
  With the latter choice the options
  \&\fB\-mstack\-protector\-guard\-reg=\fR\fIreg\fR and
*************** which register to use as base register f
*** 30936,30992 ****
  and from what offset from that base register. There is no default
  register or offset as this is entirely for use within the Linux
  kernel.
! .IP "\fB\-mtls\-dialect=desc\fR" 4
  .IX Item "-mtls-dialect=desc"
! Use \s-1TLS\s0 descriptors as the thread-local storage mechanism for dynamic accesses
! of \s-1TLS\s0 variables.
! .IP "\fB\-mtls\-dialect=trad\fR" 4
  .IX Item "-mtls-dialect=trad"
! Use traditional \s-1TLS\s0 as the thread-local storage mechanism for dynamic accesses
! of \s-1TLS\s0 variables.  This is the default.
  .PP
! \fI\s-1RL78\s0 Options\fR
  .IX Subsection "RL78 Options"
! .IP "\fB\-msim\fR" 4
  .IX Item "-msim"
  Links in additional target libraries to support operation within a
  simulator.
! .IP "\fB\-mmul=none\fR" 4
  .IX Item "-mmul=none"
  .PD 0
! .IP "\fB\-mmul=g10\fR" 4
  .IX Item "-mmul=g10"
! .IP "\fB\-mmul=g13\fR" 4
  .IX Item "-mmul=g13"
! .IP "\fB\-mmul=g14\fR" 4
  .IX Item "-mmul=g14"
! .IP "\fB\-mmul=rl78\fR" 4
  .IX Item "-mmul=rl78"
  .PD
  Specifies the type of hardware multiplication and division support to
  be used.  The simplest is \f(CW\*(C`none\*(C'\fR, which uses software for both
  multiplication and division.  This is the default.  The \f(CW\*(C`g13\*(C'\fR
  value is for the hardware multiply/divide peripheral found on the
! \&\s-1RL78/G13\s0 (S2 core) targets.  The \f(CW\*(C`g14\*(C'\fR value selects the use of
! the multiplication and division instructions supported by the \s-1RL78/G14\s0
  (S3 core) parts.  The value \f(CW\*(C`rl78\*(C'\fR is an alias for \f(CW\*(C`g14\*(C'\fR and
  the value \f(CW\*(C`mg10\*(C'\fR is an alias for \f(CW\*(C`none\*(C'\fR.
  .Sp
  In addition a C preprocessor macro is defined, based upon the setting
  of this option.  Possible values are: \f(CW\*(C`_\|_RL78_MUL_NONE_\|_\*(C'\fR,
  \&\f(CW\*(C`_\|_RL78_MUL_G13_\|_\*(C'\fR or \f(CW\*(C`_\|_RL78_MUL_G14_\|_\*(C'\fR.
! .IP "\fB\-mcpu=g10\fR" 4
  .IX Item "-mcpu=g10"
  .PD 0
! .IP "\fB\-mcpu=g13\fR" 4
  .IX Item "-mcpu=g13"
! .IP "\fB\-mcpu=g14\fR" 4
  .IX Item "-mcpu=g14"
! .IP "\fB\-mcpu=rl78\fR" 4
  .IX Item "-mcpu=rl78"
  .PD
! Specifies the \s-1RL78\s0 core to target.  The default is the G14 core, also
! known as an S3 core or just \s-1RL78.\s0  The G13 or S2 core does not have
  multiply or divide instructions, instead it uses a hardware peripheral
  for these operations.  The G10 or S1 core does not have register
  banks, so it uses a different calling convention.
--- 30871,30927 ----
  and from what offset from that base register. There is no default
  register or offset as this is entirely for use within the Linux
  kernel.
! .IP \fB\-mtls\-dialect=desc\fR 4
  .IX Item "-mtls-dialect=desc"
! Use TLS descriptors as the thread\-local storage mechanism for dynamic accesses
! of TLS variables.
! .IP \fB\-mtls\-dialect=trad\fR 4
  .IX Item "-mtls-dialect=trad"
! Use traditional TLS as the thread\-local storage mechanism for dynamic accesses
! of TLS variables.  This is the default.
  .PP
! \fIRL78 Options\fR
  .IX Subsection "RL78 Options"
! .IP \fB\-msim\fR 4
  .IX Item "-msim"
  Links in additional target libraries to support operation within a
  simulator.
! .IP \fB\-mmul=none\fR 4
  .IX Item "-mmul=none"
  .PD 0
! .IP \fB\-mmul=g10\fR 4
  .IX Item "-mmul=g10"
! .IP \fB\-mmul=g13\fR 4
  .IX Item "-mmul=g13"
! .IP \fB\-mmul=g14\fR 4
  .IX Item "-mmul=g14"
! .IP \fB\-mmul=rl78\fR 4
  .IX Item "-mmul=rl78"
  .PD
  Specifies the type of hardware multiplication and division support to
  be used.  The simplest is \f(CW\*(C`none\*(C'\fR, which uses software for both
  multiplication and division.  This is the default.  The \f(CW\*(C`g13\*(C'\fR
  value is for the hardware multiply/divide peripheral found on the
! RL78/G13 (S2 core) targets.  The \f(CW\*(C`g14\*(C'\fR value selects the use of
! the multiplication and division instructions supported by the RL78/G14
  (S3 core) parts.  The value \f(CW\*(C`rl78\*(C'\fR is an alias for \f(CW\*(C`g14\*(C'\fR and
  the value \f(CW\*(C`mg10\*(C'\fR is an alias for \f(CW\*(C`none\*(C'\fR.
  .Sp
  In addition a C preprocessor macro is defined, based upon the setting
  of this option.  Possible values are: \f(CW\*(C`_\|_RL78_MUL_NONE_\|_\*(C'\fR,
  \&\f(CW\*(C`_\|_RL78_MUL_G13_\|_\*(C'\fR or \f(CW\*(C`_\|_RL78_MUL_G14_\|_\*(C'\fR.
! .IP \fB\-mcpu=g10\fR 4
  .IX Item "-mcpu=g10"
  .PD 0
! .IP \fB\-mcpu=g13\fR 4
  .IX Item "-mcpu=g13"
! .IP \fB\-mcpu=g14\fR 4
  .IX Item "-mcpu=g14"
! .IP \fB\-mcpu=rl78\fR 4
  .IX Item "-mcpu=rl78"
  .PD
! Specifies the RL78 core to target.  The default is the G14 core, also
! known as an S3 core or just RL78.  The G13 or S2 core does not have
  multiply or divide instructions, instead it uses a hardware peripheral
  for these operations.  The G10 or S1 core does not have register
  banks, so it uses a different calling convention.
*************** support to use, unless this is overridde
*** 30998,31139 ****
  peripheral and specifying \fB\-mcpu=g10\fR disables the use of
  hardware multiplications altogether.
  .Sp
! Note, although the \s-1RL78/G14\s0 core is the default target, specifying
  \&\fB\-mcpu=g14\fR or \fB\-mcpu=rl78\fR on the command line does
  change the behavior of the toolchain since it also enables G14
  hardware multiply support.  If these options are not specified on the
  command line then software multiplication routines will be used even
! though the code targets the \s-1RL78\s0 core.  This is for backwards
  compatibility with older toolchains which did not have hardware
  multiply and divide support.
  .Sp
  In addition a C preprocessor macro is defined, based upon the setting
  of this option.  Possible values are: \f(CW\*(C`_\|_RL78_G10_\|_\*(C'\fR,
  \&\f(CW\*(C`_\|_RL78_G13_\|_\*(C'\fR or \f(CW\*(C`_\|_RL78_G14_\|_\*(C'\fR.
! .IP "\fB\-mg10\fR" 4
  .IX Item "-mg10"
  .PD 0
! .IP "\fB\-mg13\fR" 4
  .IX Item "-mg13"
! .IP "\fB\-mg14\fR" 4
  .IX Item "-mg14"
! .IP "\fB\-mrl78\fR" 4
  .IX Item "-mrl78"
  .PD
  These are aliases for the corresponding \fB\-mcpu=\fR option.  They
  are provided for backwards compatibility.
! .IP "\fB\-mallregs\fR" 4
  .IX Item "-mallregs"
  Allow the compiler to use all of the available registers.  By default
  registers \f(CW\*(C`r24..r31\*(C'\fR are reserved for use in interrupt handlers.
  With this option enabled these registers can be used in ordinary
  functions as well.
! .IP "\fB\-m64bit\-doubles\fR" 4
  .IX Item "-m64bit-doubles"
  .PD 0
! .IP "\fB\-m32bit\-doubles\fR" 4
  .IX Item "-m32bit-doubles"
  .PD
  Make the \f(CW\*(C`double\*(C'\fR data type be 64 bits (\fB\-m64bit\-doubles\fR)
  or 32 bits (\fB\-m32bit\-doubles\fR) in size.  The default is
  \&\fB\-m32bit\-doubles\fR.
! .IP "\fB\-msave\-mduc\-in\-interrupts\fR" 4
  .IX Item "-msave-mduc-in-interrupts"
  .PD 0
! .IP "\fB\-mno\-save\-mduc\-in\-interrupts\fR" 4
  .IX Item "-mno-save-mduc-in-interrupts"
  .PD
  Specifies that interrupt handler functions should preserve the
! \&\s-1MDUC\s0 registers.  This is only necessary if normal code might use
! the \s-1MDUC\s0 registers, for example because it performs multiplication
! and division operations.  The default is to ignore the \s-1MDUC\s0 registers
  as this makes the interrupt handlers faster.  The target option \-mg13
  needs to be passed for this to work as this feature is only available
! on the G13 target (S2 core).  The \s-1MDUC\s0 registers will only be saved
  if the interrupt handler performs a multiplication or division
  operation or it calls another function.
  .PP
! \fI\s-1IBM RS/6000\s0 and PowerPC Options\fR
  .IX Subsection "IBM RS/6000 and PowerPC Options"
  .PP
! These \fB\-m\fR options are defined for the \s-1IBM RS/6000\s0 and PowerPC:
! .IP "\fB\-mpowerpc\-gpopt\fR" 4
  .IX Item "-mpowerpc-gpopt"
  .PD 0
! .IP "\fB\-mno\-powerpc\-gpopt\fR" 4
  .IX Item "-mno-powerpc-gpopt"
! .IP "\fB\-mpowerpc\-gfxopt\fR" 4
  .IX Item "-mpowerpc-gfxopt"
! .IP "\fB\-mno\-powerpc\-gfxopt\fR" 4
  .IX Item "-mno-powerpc-gfxopt"
! .IP "\fB\-mpowerpc64\fR" 4
  .IX Item "-mpowerpc64"
! .IP "\fB\-mno\-powerpc64\fR" 4
  .IX Item "-mno-powerpc64"
! .IP "\fB\-mmfcrf\fR" 4
  .IX Item "-mmfcrf"
! .IP "\fB\-mno\-mfcrf\fR" 4
  .IX Item "-mno-mfcrf"
! .IP "\fB\-mpopcntb\fR" 4
  .IX Item "-mpopcntb"
! .IP "\fB\-mno\-popcntb\fR" 4
  .IX Item "-mno-popcntb"
! .IP "\fB\-mpopcntd\fR" 4
  .IX Item "-mpopcntd"
! .IP "\fB\-mno\-popcntd\fR" 4
  .IX Item "-mno-popcntd"
! .IP "\fB\-mfprnd\fR" 4
  .IX Item "-mfprnd"
! .IP "\fB\-mno\-fprnd\fR" 4
  .IX Item "-mno-fprnd"
! .IP "\fB\-mcmpb\fR" 4
  .IX Item "-mcmpb"
! .IP "\fB\-mno\-cmpb\fR" 4
  .IX Item "-mno-cmpb"
! .IP "\fB\-mhard\-dfp\fR" 4
  .IX Item "-mhard-dfp"
! .IP "\fB\-mno\-hard\-dfp\fR" 4
  .IX Item "-mno-hard-dfp"
  .PD
  You use these options to specify which instructions are available on the
  processor you are using.  The default value of these options is
! determined when configuring \s-1GCC.\s0  Specifying the
  \&\fB\-mcpu=\fR\fIcpu_type\fR overrides the specification of these
  options.  We recommend you use the \fB\-mcpu=\fR\fIcpu_type\fR option
  rather than the options listed above.
  .Sp
  Specifying \fB\-mpowerpc\-gpopt\fR allows
! \&\s-1GCC\s0 to use the optional PowerPC architecture instructions in the
! General Purpose group, including floating-point square root.  Specifying
! \&\fB\-mpowerpc\-gfxopt\fR allows \s-1GCC\s0 to
  use the optional PowerPC architecture instructions in the Graphics
! group, including floating-point select.
  .Sp
! The \fB\-mmfcrf\fR option allows \s-1GCC\s0 to generate the move from
! condition register field instruction implemented on the \s-1POWER4\s0
  processor and other processors that support the PowerPC V2.01
  architecture.
! The \fB\-mpopcntb\fR option allows \s-1GCC\s0 to generate the popcount and
! double-precision \s-1FP\s0 reciprocal estimate instruction implemented on the
! \&\s-1POWER5\s0 processor and other processors that support the PowerPC V2.02
  architecture.
! The \fB\-mpopcntd\fR option allows \s-1GCC\s0 to generate the popcount
! instruction implemented on the \s-1POWER7\s0 processor and other processors
  that support the PowerPC V2.06 architecture.
! The \fB\-mfprnd\fR option allows \s-1GCC\s0 to generate the \s-1FP\s0 round to
! integer instructions implemented on the \s-1POWER5+\s0 processor and other
  processors that support the PowerPC V2.03 architecture.
! The \fB\-mcmpb\fR option allows \s-1GCC\s0 to generate the compare bytes
! instruction implemented on the \s-1POWER6\s0 processor and other processors
  that support the PowerPC V2.05 architecture.
! The \fB\-mhard\-dfp\fR option allows \s-1GCC\s0 to generate the decimal
! floating-point instructions implemented on some \s-1POWER\s0 processors.
  .Sp
! The \fB\-mpowerpc64\fR option allows \s-1GCC\s0 to generate the additional
  64\-bit instructions that are found in the full PowerPC64 architecture
! and to treat GPRs as 64\-bit, doubleword quantities.  \s-1GCC\s0 defaults to
  \&\fB\-mno\-powerpc64\fR.
! .IP "\fB\-mcpu=\fR\fIcpu_type\fR" 4
  .IX Item "-mcpu=cpu_type"
  Set architecture type, register usage, and
  instruction scheduling parameters for machine type \fIcpu_type\fR.
--- 30933,31074 ----
  peripheral and specifying \fB\-mcpu=g10\fR disables the use of
  hardware multiplications altogether.
  .Sp
! Note, although the RL78/G14 core is the default target, specifying
  \&\fB\-mcpu=g14\fR or \fB\-mcpu=rl78\fR on the command line does
  change the behavior of the toolchain since it also enables G14
  hardware multiply support.  If these options are not specified on the
  command line then software multiplication routines will be used even
! though the code targets the RL78 core.  This is for backwards
  compatibility with older toolchains which did not have hardware
  multiply and divide support.
  .Sp
  In addition a C preprocessor macro is defined, based upon the setting
  of this option.  Possible values are: \f(CW\*(C`_\|_RL78_G10_\|_\*(C'\fR,
  \&\f(CW\*(C`_\|_RL78_G13_\|_\*(C'\fR or \f(CW\*(C`_\|_RL78_G14_\|_\*(C'\fR.
! .IP \fB\-mg10\fR 4
  .IX Item "-mg10"
  .PD 0
! .IP \fB\-mg13\fR 4
  .IX Item "-mg13"
! .IP \fB\-mg14\fR 4
  .IX Item "-mg14"
! .IP \fB\-mrl78\fR 4
  .IX Item "-mrl78"
  .PD
  These are aliases for the corresponding \fB\-mcpu=\fR option.  They
  are provided for backwards compatibility.
! .IP \fB\-mallregs\fR 4
  .IX Item "-mallregs"
  Allow the compiler to use all of the available registers.  By default
  registers \f(CW\*(C`r24..r31\*(C'\fR are reserved for use in interrupt handlers.
  With this option enabled these registers can be used in ordinary
  functions as well.
! .IP \fB\-m64bit\-doubles\fR 4
  .IX Item "-m64bit-doubles"
  .PD 0
! .IP \fB\-m32bit\-doubles\fR 4
  .IX Item "-m32bit-doubles"
  .PD
  Make the \f(CW\*(C`double\*(C'\fR data type be 64 bits (\fB\-m64bit\-doubles\fR)
  or 32 bits (\fB\-m32bit\-doubles\fR) in size.  The default is
  \&\fB\-m32bit\-doubles\fR.
! .IP \fB\-msave\-mduc\-in\-interrupts\fR 4
  .IX Item "-msave-mduc-in-interrupts"
  .PD 0
! .IP \fB\-mno\-save\-mduc\-in\-interrupts\fR 4
  .IX Item "-mno-save-mduc-in-interrupts"
  .PD
  Specifies that interrupt handler functions should preserve the
! MDUC registers.  This is only necessary if normal code might use
! the MDUC registers, for example because it performs multiplication
! and division operations.  The default is to ignore the MDUC registers
  as this makes the interrupt handlers faster.  The target option \-mg13
  needs to be passed for this to work as this feature is only available
! on the G13 target (S2 core).  The MDUC registers will only be saved
  if the interrupt handler performs a multiplication or division
  operation or it calls another function.
  .PP
! \fIIBM RS/6000 and PowerPC Options\fR
  .IX Subsection "IBM RS/6000 and PowerPC Options"
  .PP
! These \fB\-m\fR options are defined for the IBM RS/6000 and PowerPC:
! .IP \fB\-mpowerpc\-gpopt\fR 4
  .IX Item "-mpowerpc-gpopt"
  .PD 0
! .IP \fB\-mno\-powerpc\-gpopt\fR 4
  .IX Item "-mno-powerpc-gpopt"
! .IP \fB\-mpowerpc\-gfxopt\fR 4
  .IX Item "-mpowerpc-gfxopt"
! .IP \fB\-mno\-powerpc\-gfxopt\fR 4
  .IX Item "-mno-powerpc-gfxopt"
! .IP \fB\-mpowerpc64\fR 4
  .IX Item "-mpowerpc64"
! .IP \fB\-mno\-powerpc64\fR 4
  .IX Item "-mno-powerpc64"
! .IP \fB\-mmfcrf\fR 4
  .IX Item "-mmfcrf"
! .IP \fB\-mno\-mfcrf\fR 4
  .IX Item "-mno-mfcrf"
! .IP \fB\-mpopcntb\fR 4
  .IX Item "-mpopcntb"
! .IP \fB\-mno\-popcntb\fR 4
  .IX Item "-mno-popcntb"
! .IP \fB\-mpopcntd\fR 4
  .IX Item "-mpopcntd"
! .IP \fB\-mno\-popcntd\fR 4
  .IX Item "-mno-popcntd"
! .IP \fB\-mfprnd\fR 4
  .IX Item "-mfprnd"
! .IP \fB\-mno\-fprnd\fR 4
  .IX Item "-mno-fprnd"
! .IP \fB\-mcmpb\fR 4
  .IX Item "-mcmpb"
! .IP \fB\-mno\-cmpb\fR 4
  .IX Item "-mno-cmpb"
! .IP \fB\-mhard\-dfp\fR 4
  .IX Item "-mhard-dfp"
! .IP \fB\-mno\-hard\-dfp\fR 4
  .IX Item "-mno-hard-dfp"
  .PD
  You use these options to specify which instructions are available on the
  processor you are using.  The default value of these options is
! determined when configuring GCC.  Specifying the
  \&\fB\-mcpu=\fR\fIcpu_type\fR overrides the specification of these
  options.  We recommend you use the \fB\-mcpu=\fR\fIcpu_type\fR option
  rather than the options listed above.
  .Sp
  Specifying \fB\-mpowerpc\-gpopt\fR allows
! GCC to use the optional PowerPC architecture instructions in the
! General Purpose group, including floating\-point square root.  Specifying
! \&\fB\-mpowerpc\-gfxopt\fR allows GCC to
  use the optional PowerPC architecture instructions in the Graphics
! group, including floating\-point select.
  .Sp
! The \fB\-mmfcrf\fR option allows GCC to generate the move from
! condition register field instruction implemented on the POWER4
  processor and other processors that support the PowerPC V2.01
  architecture.
! The \fB\-mpopcntb\fR option allows GCC to generate the popcount and
! double\-precision FP reciprocal estimate instruction implemented on the
! POWER5 processor and other processors that support the PowerPC V2.02
  architecture.
! The \fB\-mpopcntd\fR option allows GCC to generate the popcount
! instruction implemented on the POWER7 processor and other processors
  that support the PowerPC V2.06 architecture.
! The \fB\-mfprnd\fR option allows GCC to generate the FP round to
! integer instructions implemented on the POWER5+ processor and other
  processors that support the PowerPC V2.03 architecture.
! The \fB\-mcmpb\fR option allows GCC to generate the compare bytes
! instruction implemented on the POWER6 processor and other processors
  that support the PowerPC V2.05 architecture.
! The \fB\-mhard\-dfp\fR option allows GCC to generate the decimal
! floating\-point instructions implemented on some POWER processors.
  .Sp
! The \fB\-mpowerpc64\fR option allows GCC to generate the additional
  64\-bit instructions that are found in the full PowerPC64 architecture
! and to treat GPRs as 64\-bit, doubleword quantities.  GCC defaults to
  \&\fB\-mno\-powerpc64\fR.
! .IP \fB\-mcpu=\fR\fIcpu_type\fR 4
  .IX Item "-mcpu=cpu_type"
  Set architecture type, register usage, and
  instruction scheduling parameters for machine type \fIcpu_type\fR.
*************** model assumed for scheduling purposes.
*** 31159,31165 ****
  Specifying \fBnative\fR as cpu type detects and selects the
  architecture option that corresponds to the host processor of the
  system performing the compilation.
! \&\fB\-mcpu=native\fR has no effect if \s-1GCC\s0 does not recognize the
  processor.
  .Sp
  The other options specify a specific processor.  Code generated under
--- 31094,31100 ----
  Specifying \fBnative\fR as cpu type detects and selects the
  architecture option that corresponds to the host processor of the
  system performing the compilation.
! \&\fB\-mcpu=native\fR has no effect if GCC does not recognize the
  processor.
  .Sp
  The other options specify a specific processor.  Code generated under
*************** following options:
*** 31178,31196 ****
  \&\-mfloat128\-hardware \-mprefixed \-mpcrel \-mmma
  \&\-mrop\-protect\fR
  .Sp
! The particular options set for any particular \s-1CPU\s0 varies between
  compiler versions, depending on what setting seems to produce optimal
! code for that \s-1CPU\s0; it doesn't necessarily reflect the actual hardware's
  capabilities.  If you wish to set an individual option to a particular
  value, you may specify it after the \fB\-mcpu\fR option, like
  \&\fB\-mcpu=970 \-mno\-altivec\fR.
  .Sp
! On \s-1AIX,\s0 the \fB\-maltivec\fR and \fB\-mpowerpc64\fR options are
  not enabled or disabled by the \fB\-mcpu\fR option at present because
! \&\s-1AIX\s0 does not have full support for these options.  You may still
! enable or disable them individually if you're sure it'll work in your
  environment.
! .IP "\fB\-mtune=\fR\fIcpu_type\fR" 4
  .IX Item "-mtune=cpu_type"
  Set the instruction scheduling parameters for machine type
  \&\fIcpu_type\fR, but do not set the architecture type or register usage,
--- 31113,31131 ----
  \&\-mfloat128\-hardware \-mprefixed \-mpcrel \-mmma
  \&\-mrop\-protect\fR
  .Sp
! The particular options set for any particular CPU varies between
  compiler versions, depending on what setting seems to produce optimal
! code for that CPU; it doesn\*(Aqt necessarily reflect the actual hardware\*(Aqs
  capabilities.  If you wish to set an individual option to a particular
  value, you may specify it after the \fB\-mcpu\fR option, like
  \&\fB\-mcpu=970 \-mno\-altivec\fR.
  .Sp
! On AIX, the \fB\-maltivec\fR and \fB\-mpowerpc64\fR options are
  not enabled or disabled by the \fB\-mcpu\fR option at present because
! AIX does not have full support for these options.  You may still
! enable or disable them individually if you\*(Aqre sure it\*(Aqll work in your
  environment.
! .IP \fB\-mtune=\fR\fIcpu_type\fR 4
  .IX Item "-mtune=cpu_type"
  Set the instruction scheduling parameters for machine type
  \&\fIcpu_type\fR, but do not set the architecture type or register usage,
*************** values for \fIcpu_type\fR are used for \
*** 31199,31493 ****
  \&\fB\-mcpu\fR.  If both are specified, the code generated uses the
  architecture and registers set by \fB\-mcpu\fR, but the
  scheduling parameters set by \fB\-mtune\fR.
! .IP "\fB\-mcmodel=small\fR" 4
  .IX Item "-mcmodel=small"
! Generate PowerPC64 code for the small model: The \s-1TOC\s0 is limited to
  64k.
! .IP "\fB\-mcmodel=medium\fR" 4
  .IX Item "-mcmodel=medium"
! Generate PowerPC64 code for the medium model: The \s-1TOC\s0 and other static
  data may be up to a total of 4G in size.  This is the default for 64\-bit
  Linux.
! .IP "\fB\-mcmodel=large\fR" 4
  .IX Item "-mcmodel=large"
! Generate PowerPC64 code for the large model: The \s-1TOC\s0 may be up to 4G
  in size.  Other data and code is only limited by the 64\-bit address
  space.
! .IP "\fB\-maltivec\fR" 4
  .IX Item "-maltivec"
  .PD 0
! .IP "\fB\-mno\-altivec\fR" 4
  .IX Item "-mno-altivec"
  .PD
  Generate code that uses (does not use) AltiVec instructions, and also
! enable the use of built-in functions that allow more direct access to
  the AltiVec instruction set.  You may also need to set
! \&\fB\-mabi=altivec\fR to adjust the current \s-1ABI\s0 with AltiVec \s-1ABI\s0
  enhancements.
  .Sp
  When \fB\-maltivec\fR is used, the element order for AltiVec intrinsics
  such as \f(CW\*(C`vec_splat\*(C'\fR, \f(CW\*(C`vec_extract\*(C'\fR, and \f(CW\*(C`vec_insert\*(C'\fR
  match array element order corresponding to the endianness of the
  target.  That is, element zero identifies the leftmost element in a
! vector register when targeting a big-endian platform, and identifies
  the rightmost element in a vector register when targeting a
! little-endian platform.
! .IP "\fB\-mvrsave\fR" 4
  .IX Item "-mvrsave"
  .PD 0
! .IP "\fB\-mno\-vrsave\fR" 4
  .IX Item "-mno-vrsave"
  .PD
! Generate \s-1VRSAVE\s0 instructions when generating AltiVec code.
! .IP "\fB\-msecure\-plt\fR" 4
  .IX Item "-msecure-plt"
  Generate code that allows \fBld\fR and \fBld.so\fR
  to build executables and shared
! libraries with non-executable \f(CW\*(C`.plt\*(C'\fR and \f(CW\*(C`.got\*(C'\fR sections.
  This is a PowerPC
! 32\-bit \s-1SYSV ABI\s0 option.
! .IP "\fB\-mbss\-plt\fR" 4
  .IX Item "-mbss-plt"
! Generate code that uses a \s-1BSS\s0 \f(CW\*(C`.plt\*(C'\fR section that \fBld.so\fR
  fills in, and
  requires \f(CW\*(C`.plt\*(C'\fR and \f(CW\*(C`.got\*(C'\fR
  sections that are both writable and executable.
! This is a PowerPC 32\-bit \s-1SYSV ABI\s0 option.
! .IP "\fB\-msplit\-patch\-nops\fR" 4
  .IX Item "-msplit-patch-nops"
  When adding NOPs for a patchable area via the
! \&\fB\-fpatchable\-function\-entry\fR option emit the \*(L"before\*(R" NOPs in front
! of the global entry point and the \*(L"after\*(R" NOPs after the local entry point.
  This makes the sequence of NOPs not consecutive when a global entry point
  is generated.  Without this option the NOPs are emitted directly before and
  after the local entry point, making them consecutive but moving global and
  local entry point further apart.  If only a single entry point is generated
  this option has no effect.
! .IP "\fB\-misel\fR" 4
  .IX Item "-misel"
  .PD 0
! .IP "\fB\-mno\-isel\fR" 4
  .IX Item "-mno-isel"
  .PD
! This switch enables or disables the generation of \s-1ISEL\s0 instructions.
! .IP "\fB\-mvsx\fR" 4
  .IX Item "-mvsx"
  .PD 0
! .IP "\fB\-mno\-vsx\fR" 4
  .IX Item "-mno-vsx"
  .PD
! Generate code that uses (does not use) vector/scalar (\s-1VSX\s0)
! instructions, and also enable the use of built-in functions that allow
! more direct access to the \s-1VSX\s0 instruction set.
! .IP "\fB\-mcrypto\fR" 4
  .IX Item "-mcrypto"
  .PD 0
! .IP "\fB\-mno\-crypto\fR" 4
  .IX Item "-mno-crypto"
  .PD
! Enable the use (disable) of the built-in functions that allow direct
  access to the cryptographic instructions that were added in version
! 2.07 of the PowerPC \s-1ISA.\s0
! .IP "\fB\-mhtm\fR" 4
  .IX Item "-mhtm"
  .PD 0
! .IP "\fB\-mno\-htm\fR" 4
  .IX Item "-mno-htm"
  .PD
! Enable (disable) the use of the built-in functions that allow direct
! access to the Hardware Transactional Memory (\s-1HTM\s0) instructions that
! were added in version 2.07 of the PowerPC \s-1ISA.\s0
! .IP "\fB\-mpower8\-fusion\fR" 4
  .IX Item "-mpower8-fusion"
  .PD 0
! .IP "\fB\-mno\-power8\-fusion\fR" 4
  .IX Item "-mno-power8-fusion"
  .PD
  Generate code that keeps (does not keeps) some integer operations
  adjacent so that the instructions can be fused together on power8 and
  later processors.
! .IP "\fB\-mquad\-memory\fR" 4
  .IX Item "-mquad-memory"
  .PD 0
! .IP "\fB\-mno\-quad\-memory\fR" 4
  .IX Item "-mno-quad-memory"
  .PD
! Generate code that uses (does not use) the non-atomic quad word memory
  instructions.  The \fB\-mquad\-memory\fR option requires use of
  64\-bit mode.
! .IP "\fB\-mquad\-memory\-atomic\fR" 4
  .IX Item "-mquad-memory-atomic"
  .PD 0
! .IP "\fB\-mno\-quad\-memory\-atomic\fR" 4
  .IX Item "-mno-quad-memory-atomic"
  .PD
  Generate code that uses (does not use) the atomic quad word memory
  instructions.  The \fB\-mquad\-memory\-atomic\fR option requires use of
  64\-bit mode.
! .IP "\fB\-mfloat128\fR" 4
  .IX Item "-mfloat128"
  .PD 0
! .IP "\fB\-mno\-float128\fR" 4
  .IX Item "-mno-float128"
  .PD
! Enable/disable the \fI_\|_float128\fR keyword for \s-1IEEE\s0 128\-bit floating point
! and use either software emulation for \s-1IEEE\s0 128\-bit floating point or
  hardware instructions.
  .Sp
! The \s-1VSX\s0 instruction set (\fB\-mvsx\fR) must be enabled to use the \s-1IEEE\s0
! 128\-bit floating point support.  The \s-1IEEE\s0 128\-bit floating point is only
  supported on Linux.
  .Sp
  The default for \fB\-mfloat128\fR is enabled on PowerPC Linux
! systems using the \s-1VSX\s0 instruction set, and disabled on other systems.
  .Sp
! If you use the \s-1ISA 3.0\s0 instruction set (\fB\-mcpu=power9\fR) on a
! 64\-bit system, the \s-1IEEE\s0 128\-bit floating point support will also enable
! the generation of \s-1ISA 3.0 IEEE\s0 128\-bit floating point instructions.
! Otherwise, if you do not specify to generate \s-1ISA 3.0\s0 instructions or you
! are targeting a 32\-bit big endian system, \s-1IEEE\s0 128\-bit floating point
  will be done with software emulation.
! .IP "\fB\-mfloat128\-hardware\fR" 4
  .IX Item "-mfloat128-hardware"
  .PD 0
! .IP "\fB\-mno\-float128\-hardware\fR" 4
  .IX Item "-mno-float128-hardware"
  .PD
! Enable/disable using \s-1ISA 3.0\s0 hardware instructions to support the
  \&\fI_\|_float128\fR data type.
  .Sp
  The default for \fB\-mfloat128\-hardware\fR is enabled on PowerPC
! Linux systems using the \s-1ISA 3.0\s0 instruction set, and disabled on other
  systems.
! .IP "\fB\-m32\fR" 4
  .IX Item "-m32"
  .PD 0
! .IP "\fB\-m64\fR" 4
  .IX Item "-m64"
  .PD
! Generate code for 32\-bit or 64\-bit environments of Darwin and \s-1SVR4\s0
  targets (including GNU/Linux).  The 32\-bit environment sets int, long
  and pointer to 32 bits and generates code that runs on any PowerPC
  variant.  The 64\-bit environment sets int to 32 bits and long and
  pointer to 64 bits, and generates code for PowerPC64, as for
  \&\fB\-mpowerpc64\fR.
! .IP "\fB\-mfull\-toc\fR" 4
  .IX Item "-mfull-toc"
  .PD 0
! .IP "\fB\-mno\-fp\-in\-toc\fR" 4
  .IX Item "-mno-fp-in-toc"
! .IP "\fB\-mno\-sum\-in\-toc\fR" 4
  .IX Item "-mno-sum-in-toc"
! .IP "\fB\-mminimal\-toc\fR" 4
  .IX Item "-mminimal-toc"
  .PD
! Modify generation of the \s-1TOC\s0 (Table Of Contents), which is created for
  every executable file.  The \fB\-mfull\-toc\fR option is selected by
! default.  In that case, \s-1GCC\s0 allocates at least one \s-1TOC\s0 entry for
! each unique non-automatic variable reference in your program.  \s-1GCC\s0
! also places floating-point constants in the \s-1TOC.\s0  However, only
! 16,384 entries are available in the \s-1TOC.\s0
  .Sp
  If you receive a linker error message that saying you have overflowed
! the available \s-1TOC\s0 space, you can reduce the amount of \s-1TOC\s0 space used
  with the \fB\-mno\-fp\-in\-toc\fR and \fB\-mno\-sum\-in\-toc\fR options.
! \&\fB\-mno\-fp\-in\-toc\fR prevents \s-1GCC\s0 from putting floating-point
! constants in the \s-1TOC\s0 and \fB\-mno\-sum\-in\-toc\fR forces \s-1GCC\s0 to
  generate code to calculate the sum of an address and a constant at
! run time instead of putting that sum into the \s-1TOC.\s0  You may specify one
! or both of these options.  Each causes \s-1GCC\s0 to produce very slightly
! slower and larger code at the expense of conserving \s-1TOC\s0 space.
  .Sp
! If you still run out of space in the \s-1TOC\s0 even when you specify both of
  these options, specify \fB\-mminimal\-toc\fR instead.  This option causes
! \&\s-1GCC\s0 to make only one \s-1TOC\s0 entry for every file.  When you specify this
! option, \s-1GCC\s0 produces code that is slower and larger but which
! uses extremely little \s-1TOC\s0 space.  You may wish to use this option
! only on files that contain less frequently-executed code.
! .IP "\fB\-maix64\fR" 4
  .IX Item "-maix64"
  .PD 0
! .IP "\fB\-maix32\fR" 4
  .IX Item "-maix32"
  .PD
! Enable 64\-bit \s-1AIX ABI\s0 and calling convention: 64\-bit pointers, 64\-bit
  \&\f(CW\*(C`long\*(C'\fR type, and the infrastructure needed to support them.
  Specifying \fB\-maix64\fR implies \fB\-mpowerpc64\fR,
! while \fB\-maix32\fR disables the 64\-bit \s-1ABI\s0 and
! implies \fB\-mno\-powerpc64\fR.  \s-1GCC\s0 defaults to \fB\-maix32\fR.
! .IP "\fB\-mxl\-compat\fR" 4
  .IX Item "-mxl-compat"
  .PD 0
! .IP "\fB\-mno\-xl\-compat\fR" 4
  .IX Item "-mno-xl-compat"
  .PD
! Produce code that conforms more closely to \s-1IBM XL\s0 compiler semantics
! when using AIX-compatible \s-1ABI.\s0  Pass floating-point arguments to
! prototyped functions beyond the register save area (\s-1RSA\s0) on the stack
  in addition to argument FPRs.  Do not assume that most significant
  double in 128\-bit long double value is properly rounded when comparing
! values and converting to double.  Use \s-1XL\s0 symbol names for long double
  support routines.
  .Sp
! The \s-1AIX\s0 calling convention was extended but not initially documented to
  handle an obscure K&R C case of calling a function that takes the
! address of its arguments with fewer arguments than declared.  \s-1IBM XL\s0
! compilers access floating-point arguments that do not fit in the
! \&\s-1RSA\s0 from the stack when a subroutine is compiled without
! optimization.  Because always storing floating-point arguments on the
  stack is inefficient and rarely needed, this option is not enabled by
! default and only is necessary when calling subroutines compiled by \s-1IBM
! XL\s0 compilers without optimization.
! .IP "\fB\-mpe\fR" 4
  .IX Item "-mpe"
! Support \fI\s-1IBM RS/6000 SP\s0\fR \fIParallel Environment\fR (\s-1PE\s0).  Link an
  application written to use message passing with special startup code to
! enable the application to run.  The system must have \s-1PE\s0 installed in the
  standard location (\fI/usr/lpp/ppe.poe/\fR), or the \fIspecs\fR file
  must be overridden with the \fB\-specs=\fR option to specify the
  appropriate directory location.  The Parallel Environment does not
  support threads, so the \fB\-mpe\fR option and the \fB\-pthread\fR
  option are incompatible.
! .IP "\fB\-malign\-natural\fR" 4
  .IX Item "-malign-natural"
  .PD 0
! .IP "\fB\-malign\-power\fR" 4
  .IX Item "-malign-power"
  .PD
! On \s-1AIX,\s0 32\-bit Darwin, and 64\-bit PowerPC GNU/Linux, the option
! \&\fB\-malign\-natural\fR overrides the ABI-defined alignment of larger
! types, such as floating-point doubles, on their natural size-based boundary.
! The option \fB\-malign\-power\fR instructs \s-1GCC\s0 to follow the ABI-specified
! alignment rules.  \s-1GCC\s0 defaults to the standard alignment defined in the \s-1ABI.\s0
  .Sp
  On 64\-bit Darwin, natural alignment is the default, and \fB\-malign\-power\fR
  is not supported.
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  .PD 0
! .IP "\fB\-mhard\-float\fR" 4
  .IX Item "-mhard-float"
  .PD
! Generate code that does not use (uses) the floating-point register set.
! Software floating-point emulation is provided if you use the
! \&\fB\-msoft\-float\fR option, and pass the option to \s-1GCC\s0 when linking.
! .IP "\fB\-mmultiple\fR" 4
  .IX Item "-mmultiple"
  .PD 0
! .IP "\fB\-mno\-multiple\fR" 4
  .IX Item "-mno-multiple"
  .PD
  Generate code that uses (does not use) the load multiple word
  instructions and the store multiple word instructions.  These
! instructions are generated by default on \s-1POWER\s0 systems, and not
! generated on PowerPC systems.  Do not use \fB\-mmultiple\fR on little-endian
  PowerPC systems, since those instructions do not work when the
! processor is in little-endian mode.  The exceptions are \s-1PPC740\s0 and
! \&\s-1PPC750\s0 which permit these instructions in little-endian mode.
! .IP "\fB\-mupdate\fR" 4
  .IX Item "-mupdate"
  .PD 0
! .IP "\fB\-mno\-update\fR" 4
  .IX Item "-mno-update"
  .PD
  Generate code that uses (does not use) the load or store instructions
--- 31134,31428 ----
  \&\fB\-mcpu\fR.  If both are specified, the code generated uses the
  architecture and registers set by \fB\-mcpu\fR, but the
  scheduling parameters set by \fB\-mtune\fR.
! .IP \fB\-mcmodel=small\fR 4
  .IX Item "-mcmodel=small"
! Generate PowerPC64 code for the small model: The TOC is limited to
  64k.
! .IP \fB\-mcmodel=medium\fR 4
  .IX Item "-mcmodel=medium"
! Generate PowerPC64 code for the medium model: The TOC and other static
  data may be up to a total of 4G in size.  This is the default for 64\-bit
  Linux.
! .IP \fB\-mcmodel=large\fR 4
  .IX Item "-mcmodel=large"
! Generate PowerPC64 code for the large model: The TOC may be up to 4G
  in size.  Other data and code is only limited by the 64\-bit address
  space.
! .IP \fB\-maltivec\fR 4
  .IX Item "-maltivec"
  .PD 0
! .IP \fB\-mno\-altivec\fR 4
  .IX Item "-mno-altivec"
  .PD
  Generate code that uses (does not use) AltiVec instructions, and also
! enable the use of built\-in functions that allow more direct access to
  the AltiVec instruction set.  You may also need to set
! \&\fB\-mabi=altivec\fR to adjust the current ABI with AltiVec ABI
  enhancements.
  .Sp
  When \fB\-maltivec\fR is used, the element order for AltiVec intrinsics
  such as \f(CW\*(C`vec_splat\*(C'\fR, \f(CW\*(C`vec_extract\*(C'\fR, and \f(CW\*(C`vec_insert\*(C'\fR
  match array element order corresponding to the endianness of the
  target.  That is, element zero identifies the leftmost element in a
! vector register when targeting a big\-endian platform, and identifies
  the rightmost element in a vector register when targeting a
! little\-endian platform.
! .IP \fB\-mvrsave\fR 4
  .IX Item "-mvrsave"
  .PD 0
! .IP \fB\-mno\-vrsave\fR 4
  .IX Item "-mno-vrsave"
  .PD
! Generate VRSAVE instructions when generating AltiVec code.
! .IP \fB\-msecure\-plt\fR 4
  .IX Item "-msecure-plt"
  Generate code that allows \fBld\fR and \fBld.so\fR
  to build executables and shared
! libraries with non\-executable \f(CW\*(C`.plt\*(C'\fR and \f(CW\*(C`.got\*(C'\fR sections.
  This is a PowerPC
! 32\-bit SYSV ABI option.
! .IP \fB\-mbss\-plt\fR 4
  .IX Item "-mbss-plt"
! Generate code that uses a BSS \f(CW\*(C`.plt\*(C'\fR section that \fBld.so\fR
  fills in, and
  requires \f(CW\*(C`.plt\*(C'\fR and \f(CW\*(C`.got\*(C'\fR
  sections that are both writable and executable.
! This is a PowerPC 32\-bit SYSV ABI option.
! .IP \fB\-msplit\-patch\-nops\fR 4
  .IX Item "-msplit-patch-nops"
  When adding NOPs for a patchable area via the
! \&\fB\-fpatchable\-function\-entry\fR option emit the "before" NOPs in front
! of the global entry point and the "after" NOPs after the local entry point.
  This makes the sequence of NOPs not consecutive when a global entry point
  is generated.  Without this option the NOPs are emitted directly before and
  after the local entry point, making them consecutive but moving global and
  local entry point further apart.  If only a single entry point is generated
  this option has no effect.
! .IP \fB\-misel\fR 4
  .IX Item "-misel"
  .PD 0
! .IP \fB\-mno\-isel\fR 4
  .IX Item "-mno-isel"
  .PD
! This switch enables or disables the generation of ISEL instructions.
! .IP \fB\-mvsx\fR 4
  .IX Item "-mvsx"
  .PD 0
! .IP \fB\-mno\-vsx\fR 4
  .IX Item "-mno-vsx"
  .PD
! Generate code that uses (does not use) vector/scalar (VSX)
! instructions, and also enable the use of built\-in functions that allow
! more direct access to the VSX instruction set.
! .IP \fB\-mcrypto\fR 4
  .IX Item "-mcrypto"
  .PD 0
! .IP \fB\-mno\-crypto\fR 4
  .IX Item "-mno-crypto"
  .PD
! Enable the use (disable) of the built\-in functions that allow direct
  access to the cryptographic instructions that were added in version
! 2.07 of the PowerPC ISA.
! .IP \fB\-mhtm\fR 4
  .IX Item "-mhtm"
  .PD 0
! .IP \fB\-mno\-htm\fR 4
  .IX Item "-mno-htm"
  .PD
! Enable (disable) the use of the built\-in functions that allow direct
! access to the Hardware Transactional Memory (HTM) instructions that
! were added in version 2.07 of the PowerPC ISA.
! .IP \fB\-mpower8\-fusion\fR 4
  .IX Item "-mpower8-fusion"
  .PD 0
! .IP \fB\-mno\-power8\-fusion\fR 4
  .IX Item "-mno-power8-fusion"
  .PD
  Generate code that keeps (does not keeps) some integer operations
  adjacent so that the instructions can be fused together on power8 and
  later processors.
! .IP \fB\-mquad\-memory\fR 4
  .IX Item "-mquad-memory"
  .PD 0
! .IP \fB\-mno\-quad\-memory\fR 4
  .IX Item "-mno-quad-memory"
  .PD
! Generate code that uses (does not use) the non\-atomic quad word memory
  instructions.  The \fB\-mquad\-memory\fR option requires use of
  64\-bit mode.
! .IP \fB\-mquad\-memory\-atomic\fR 4
  .IX Item "-mquad-memory-atomic"
  .PD 0
! .IP \fB\-mno\-quad\-memory\-atomic\fR 4
  .IX Item "-mno-quad-memory-atomic"
  .PD
  Generate code that uses (does not use) the atomic quad word memory
  instructions.  The \fB\-mquad\-memory\-atomic\fR option requires use of
  64\-bit mode.
! .IP \fB\-mfloat128\fR 4
  .IX Item "-mfloat128"
  .PD 0
! .IP \fB\-mno\-float128\fR 4
  .IX Item "-mno-float128"
  .PD
! Enable/disable the \fI_\|_float128\fR keyword for IEEE 128\-bit floating point
! and use either software emulation for IEEE 128\-bit floating point or
  hardware instructions.
  .Sp
! The VSX instruction set (\fB\-mvsx\fR) must be enabled to use the IEEE
! 128\-bit floating point support.  The IEEE 128\-bit floating point is only
  supported on Linux.
  .Sp
  The default for \fB\-mfloat128\fR is enabled on PowerPC Linux
! systems using the VSX instruction set, and disabled on other systems.
  .Sp
! If you use the ISA 3.0 instruction set (\fB\-mcpu=power9\fR) on a
! 64\-bit system, the IEEE 128\-bit floating point support will also enable
! the generation of ISA 3.0 IEEE 128\-bit floating point instructions.
! Otherwise, if you do not specify to generate ISA 3.0 instructions or you
! are targeting a 32\-bit big endian system, IEEE 128\-bit floating point
  will be done with software emulation.
! .IP \fB\-mfloat128\-hardware\fR 4
  .IX Item "-mfloat128-hardware"
  .PD 0
! .IP \fB\-mno\-float128\-hardware\fR 4
  .IX Item "-mno-float128-hardware"
  .PD
! Enable/disable using ISA 3.0 hardware instructions to support the
  \&\fI_\|_float128\fR data type.
  .Sp
  The default for \fB\-mfloat128\-hardware\fR is enabled on PowerPC
! Linux systems using the ISA 3.0 instruction set, and disabled on other
  systems.
! .IP \fB\-m32\fR 4
  .IX Item "-m32"
  .PD 0
! .IP \fB\-m64\fR 4
  .IX Item "-m64"
  .PD
! Generate code for 32\-bit or 64\-bit environments of Darwin and SVR4
  targets (including GNU/Linux).  The 32\-bit environment sets int, long
  and pointer to 32 bits and generates code that runs on any PowerPC
  variant.  The 64\-bit environment sets int to 32 bits and long and
  pointer to 64 bits, and generates code for PowerPC64, as for
  \&\fB\-mpowerpc64\fR.
! .IP \fB\-mfull\-toc\fR 4
  .IX Item "-mfull-toc"
  .PD 0
! .IP \fB\-mno\-fp\-in\-toc\fR 4
  .IX Item "-mno-fp-in-toc"
! .IP \fB\-mno\-sum\-in\-toc\fR 4
  .IX Item "-mno-sum-in-toc"
! .IP \fB\-mminimal\-toc\fR 4
  .IX Item "-mminimal-toc"
  .PD
! Modify generation of the TOC (Table Of Contents), which is created for
  every executable file.  The \fB\-mfull\-toc\fR option is selected by
! default.  In that case, GCC allocates at least one TOC entry for
! each unique non\-automatic variable reference in your program.  GCC
! also places floating\-point constants in the TOC.  However, only
! 16,384 entries are available in the TOC.
  .Sp
  If you receive a linker error message that saying you have overflowed
! the available TOC space, you can reduce the amount of TOC space used
  with the \fB\-mno\-fp\-in\-toc\fR and \fB\-mno\-sum\-in\-toc\fR options.
! \&\fB\-mno\-fp\-in\-toc\fR prevents GCC from putting floating\-point
! constants in the TOC and \fB\-mno\-sum\-in\-toc\fR forces GCC to
  generate code to calculate the sum of an address and a constant at
! run time instead of putting that sum into the TOC.  You may specify one
! or both of these options.  Each causes GCC to produce very slightly
! slower and larger code at the expense of conserving TOC space.
  .Sp
! If you still run out of space in the TOC even when you specify both of
  these options, specify \fB\-mminimal\-toc\fR instead.  This option causes
! GCC to make only one TOC entry for every file.  When you specify this
! option, GCC produces code that is slower and larger but which
! uses extremely little TOC space.  You may wish to use this option
! only on files that contain less frequently\-executed code.
! .IP \fB\-maix64\fR 4
  .IX Item "-maix64"
  .PD 0
! .IP \fB\-maix32\fR 4
  .IX Item "-maix32"
  .PD
! Enable 64\-bit AIX ABI and calling convention: 64\-bit pointers, 64\-bit
  \&\f(CW\*(C`long\*(C'\fR type, and the infrastructure needed to support them.
  Specifying \fB\-maix64\fR implies \fB\-mpowerpc64\fR,
! while \fB\-maix32\fR disables the 64\-bit ABI and
! implies \fB\-mno\-powerpc64\fR.  GCC defaults to \fB\-maix32\fR.
! .IP \fB\-mxl\-compat\fR 4
  .IX Item "-mxl-compat"
  .PD 0
! .IP \fB\-mno\-xl\-compat\fR 4
  .IX Item "-mno-xl-compat"
  .PD
! Produce code that conforms more closely to IBM XL compiler semantics
! when using AIX\-compatible ABI.  Pass floating\-point arguments to
! prototyped functions beyond the register save area (RSA) on the stack
  in addition to argument FPRs.  Do not assume that most significant
  double in 128\-bit long double value is properly rounded when comparing
! values and converting to double.  Use XL symbol names for long double
  support routines.
  .Sp
! The AIX calling convention was extended but not initially documented to
  handle an obscure K&R C case of calling a function that takes the
! address of its arguments with fewer arguments than declared.  IBM XL
! compilers access floating\-point arguments that do not fit in the
! RSA from the stack when a subroutine is compiled without
! optimization.  Because always storing floating\-point arguments on the
  stack is inefficient and rarely needed, this option is not enabled by
! default and only is necessary when calling subroutines compiled by IBM
! XL compilers without optimization.
! .IP \fB\-mpe\fR 4
  .IX Item "-mpe"
! Support \fIIBM RS/6000 SP\fR \fIParallel Environment\fR (PE).  Link an
  application written to use message passing with special startup code to
! enable the application to run.  The system must have PE installed in the
  standard location (\fI/usr/lpp/ppe.poe/\fR), or the \fIspecs\fR file
  must be overridden with the \fB\-specs=\fR option to specify the
  appropriate directory location.  The Parallel Environment does not
  support threads, so the \fB\-mpe\fR option and the \fB\-pthread\fR
  option are incompatible.
! .IP \fB\-malign\-natural\fR 4
  .IX Item "-malign-natural"
  .PD 0
! .IP \fB\-malign\-power\fR 4
  .IX Item "-malign-power"
  .PD
! On AIX, 32\-bit Darwin, and 64\-bit PowerPC GNU/Linux, the option
! \&\fB\-malign\-natural\fR overrides the ABI\-defined alignment of larger
! types, such as floating\-point doubles, on their natural size\-based boundary.
! The option \fB\-malign\-power\fR instructs GCC to follow the ABI\-specified
! alignment rules.  GCC defaults to the standard alignment defined in the ABI.
  .Sp
  On 64\-bit Darwin, natural alignment is the default, and \fB\-malign\-power\fR
  is not supported.
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  .PD 0
! .IP \fB\-mhard\-float\fR 4
  .IX Item "-mhard-float"
  .PD
! Generate code that does not use (uses) the floating\-point register set.
! Software floating\-point emulation is provided if you use the
! \&\fB\-msoft\-float\fR option, and pass the option to GCC when linking.
! .IP \fB\-mmultiple\fR 4
  .IX Item "-mmultiple"
  .PD 0
! .IP \fB\-mno\-multiple\fR 4
  .IX Item "-mno-multiple"
  .PD
  Generate code that uses (does not use) the load multiple word
  instructions and the store multiple word instructions.  These
! instructions are generated by default on POWER systems, and not
! generated on PowerPC systems.  Do not use \fB\-mmultiple\fR on little\-endian
  PowerPC systems, since those instructions do not work when the
! processor is in little\-endian mode.  The exceptions are PPC740 and
! PPC750 which permit these instructions in little\-endian mode.
! .IP \fB\-mupdate\fR 4
  .IX Item "-mupdate"
  .PD 0
! .IP \fB\-mno\-update\fR 4
  .IX Item "-mno-update"
  .PD
  Generate code that uses (does not use) the load or store instructions
*************** location.  These instructions are genera
*** 31497,31506 ****
  stack pointer is updated and the address of the previous frame is
  stored, which means code that walks the stack frame across interrupts or
  signals may get corrupted data.
! .IP "\fB\-mavoid\-indexed\-addresses\fR" 4
  .IX Item "-mavoid-indexed-addresses"
  .PD 0
! .IP "\fB\-mno\-avoid\-indexed\-addresses\fR" 4
  .IX Item "-mno-avoid-indexed-addresses"
  .PD
  Generate code that tries to avoid (not avoid) the use of indexed load
--- 31432,31441 ----
  stack pointer is updated and the address of the previous frame is
  stored, which means code that walks the stack frame across interrupts or
  signals may get corrupted data.
! .IP \fB\-mavoid\-indexed\-addresses\fR 4
  .IX Item "-mavoid-indexed-addresses"
  .PD 0
! .IP \fB\-mno\-avoid\-indexed\-addresses\fR 4
  .IX Item "-mno-avoid-indexed-addresses"
  .PD
  Generate code that tries to avoid (not avoid) the use of indexed load
*************** or store instructions. These instruction
*** 31508,31571 ****
  penalty on Power6 processors in certain situations, such as when
  stepping through large arrays that cross a 16M boundary.  This option
  is enabled by default when targeting Power6 and disabled otherwise.
! .IP "\fB\-mfused\-madd\fR" 4
  .IX Item "-mfused-madd"
  .PD 0
! .IP "\fB\-mno\-fused\-madd\fR" 4
  .IX Item "-mno-fused-madd"
  .PD
! Generate code that uses (does not use) the floating-point multiply and
  accumulate instructions.  These instructions are generated by default
! if hardware floating point is used.  The machine-dependent
! \&\fB\-mfused\-madd\fR option is now mapped to the machine-independent
  \&\fB\-ffp\-contract=fast\fR option, and \fB\-mno\-fused\-madd\fR is
  mapped to \fB\-ffp\-contract=off\fR.
! .IP "\fB\-mmulhw\fR" 4
  .IX Item "-mmulhw"
  .PD 0
! .IP "\fB\-mno\-mulhw\fR" 4
  .IX Item "-mno-mulhw"
  .PD
! Generate code that uses (does not use) the half-word multiply and
! multiply-accumulate instructions on the \s-1IBM 405, 440, 464\s0 and 476 processors.
  These instructions are generated by default when targeting those
  processors.
! .IP "\fB\-mdlmzb\fR" 4
  .IX Item "-mdlmzb"
  .PD 0
! .IP "\fB\-mno\-dlmzb\fR" 4
  .IX Item "-mno-dlmzb"
  .PD
! Generate code that uses (does not use) the string-search \fBdlmzb\fR
! instruction on the \s-1IBM 405, 440, 464\s0 and 476 processors.  This instruction is
  generated by default when targeting those processors.
! .IP "\fB\-mno\-bit\-align\fR" 4
  .IX Item "-mno-bit-align"
  .PD 0
! .IP "\fB\-mbit\-align\fR" 4
  .IX Item "-mbit-align"
  .PD
  On System V.4 and embedded PowerPC systems do not (do) force structures
! and unions that contain bit-fields to be aligned to the base type of the
! bit-field.
  .Sp
  For example, by default a structure containing nothing but 8
! \&\f(CW\*(C`unsigned\*(C'\fR bit-fields of length 1 is aligned to a 4\-byte
  boundary and has a size of 4 bytes.  By using \fB\-mno\-bit\-align\fR,
  the structure is aligned to a 1\-byte boundary and is 1 byte in
  size.
! .IP "\fB\-mno\-strict\-align\fR" 4
  .IX Item "-mno-strict-align"
  .PD 0
! .IP "\fB\-mstrict\-align\fR" 4
  .IX Item "-mstrict-align"
  .PD
  On System V.4 and embedded PowerPC systems do not (do) assume that
  unaligned memory references are handled by the system.
! .IP "\fB\-mrelocatable\fR" 4
  .IX Item "-mrelocatable"
  .PD 0
! .IP "\fB\-mno\-relocatable\fR" 4
  .IX Item "-mno-relocatable"
  .PD
  Generate code that allows (does not allow) a static executable to be
--- 31443,31506 ----
  penalty on Power6 processors in certain situations, such as when
  stepping through large arrays that cross a 16M boundary.  This option
  is enabled by default when targeting Power6 and disabled otherwise.
! .IP \fB\-mfused\-madd\fR 4
  .IX Item "-mfused-madd"
  .PD 0
! .IP \fB\-mno\-fused\-madd\fR 4
  .IX Item "-mno-fused-madd"
  .PD
! Generate code that uses (does not use) the floating\-point multiply and
  accumulate instructions.  These instructions are generated by default
! if hardware floating point is used.  The machine\-dependent
! \&\fB\-mfused\-madd\fR option is now mapped to the machine\-independent
  \&\fB\-ffp\-contract=fast\fR option, and \fB\-mno\-fused\-madd\fR is
  mapped to \fB\-ffp\-contract=off\fR.
! .IP \fB\-mmulhw\fR 4
  .IX Item "-mmulhw"
  .PD 0
! .IP \fB\-mno\-mulhw\fR 4
  .IX Item "-mno-mulhw"
  .PD
! Generate code that uses (does not use) the half\-word multiply and
! multiply\-accumulate instructions on the IBM 405, 440, 464 and 476 processors.
  These instructions are generated by default when targeting those
  processors.
! .IP \fB\-mdlmzb\fR 4
  .IX Item "-mdlmzb"
  .PD 0
! .IP \fB\-mno\-dlmzb\fR 4
  .IX Item "-mno-dlmzb"
  .PD
! Generate code that uses (does not use) the string\-search \fBdlmzb\fR
! instruction on the IBM 405, 440, 464 and 476 processors.  This instruction is
  generated by default when targeting those processors.
! .IP \fB\-mno\-bit\-align\fR 4
  .IX Item "-mno-bit-align"
  .PD 0
! .IP \fB\-mbit\-align\fR 4
  .IX Item "-mbit-align"
  .PD
  On System V.4 and embedded PowerPC systems do not (do) force structures
! and unions that contain bit\-fields to be aligned to the base type of the
! bit\-field.
  .Sp
  For example, by default a structure containing nothing but 8
! \&\f(CW\*(C`unsigned\*(C'\fR bit\-fields of length 1 is aligned to a 4\-byte
  boundary and has a size of 4 bytes.  By using \fB\-mno\-bit\-align\fR,
  the structure is aligned to a 1\-byte boundary and is 1 byte in
  size.
! .IP \fB\-mno\-strict\-align\fR 4
  .IX Item "-mno-strict-align"
  .PD 0
! .IP \fB\-mstrict\-align\fR 4
  .IX Item "-mstrict-align"
  .PD
  On System V.4 and embedded PowerPC systems do not (do) assume that
  unaligned memory references are handled by the system.
! .IP \fB\-mrelocatable\fR 4
  .IX Item "-mrelocatable"
  .PD 0
! .IP \fB\-mno\-relocatable\fR 4
  .IX Item "-mno-relocatable"
  .PD
  Generate code that allows (does not allow) a static executable to be
*************** a table of 32\-bit addresses generated b
*** 31576,31585 ****
  work, all objects linked together must be compiled with
  \&\fB\-mrelocatable\fR or \fB\-mrelocatable\-lib\fR.
  \&\fB\-mrelocatable\fR code aligns the stack to an 8\-byte boundary.
! .IP "\fB\-mrelocatable\-lib\fR" 4
  .IX Item "-mrelocatable-lib"
  .PD 0
! .IP "\fB\-mno\-relocatable\-lib\fR" 4
  .IX Item "-mno-relocatable-lib"
  .PD
  Like \fB\-mrelocatable\fR, \fB\-mrelocatable\-lib\fR generates a
--- 31511,31520 ----
  work, all objects linked together must be compiled with
  \&\fB\-mrelocatable\fR or \fB\-mrelocatable\-lib\fR.
  \&\fB\-mrelocatable\fR code aligns the stack to an 8\-byte boundary.
! .IP \fB\-mrelocatable\-lib\fR 4
  .IX Item "-mrelocatable-lib"
  .PD 0
! .IP \fB\-mno\-relocatable\-lib\fR 4
  .IX Item "-mno-relocatable-lib"
  .PD
  Like \fB\-mrelocatable\fR, \fB\-mrelocatable\-lib\fR generates a
*************** run time, but \fB\-mrelocatable\-lib\fR
*** 31588,31843 ****
  alignment of \fB\-mrelocatable\fR.  Objects compiled with
  \&\fB\-mrelocatable\-lib\fR may be linked with objects compiled with
  any combination of the \fB\-mrelocatable\fR options.
! .IP "\fB\-mno\-toc\fR" 4
  .IX Item "-mno-toc"
  .PD 0
! .IP "\fB\-mtoc\fR" 4
  .IX Item "-mtoc"
  .PD
  On System V.4 and embedded PowerPC systems do not (do) assume that
  register 2 contains a pointer to a global area pointing to the addresses
  used in the program.
! .IP "\fB\-mlittle\fR" 4
  .IX Item "-mlittle"
  .PD 0
! .IP "\fB\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
  .PD
  On System V.4 and embedded PowerPC systems compile code for the
! processor in little-endian mode.  The \fB\-mlittle\-endian\fR option is
  the same as \fB\-mlittle\fR.
! .IP "\fB\-mbig\fR" 4
  .IX Item "-mbig"
  .PD 0
! .IP "\fB\-mbig\-endian\fR" 4
  .IX Item "-mbig-endian"
  .PD
  On System V.4 and embedded PowerPC systems compile code for the
! processor in big-endian mode.  The \fB\-mbig\-endian\fR option is
  the same as \fB\-mbig\fR.
! .IP "\fB\-mdynamic\-no\-pic\fR" 4
  .IX Item "-mdynamic-no-pic"
  On Darwin / macOS systems, compile code so that it is not
  relocatable, but that its external references are relocatable.  The
  resulting code is suitable for applications, but not shared
  libraries.
! .IP "\fB\-msingle\-pic\-base\fR" 4
  .IX Item "-msingle-pic-base"
! Treat the register used for \s-1PIC\s0 addressing as read-only, rather than
  loading it in the prologue for each function.  The runtime system is
  responsible for initializing this register with an appropriate value
  before execution begins.
! .IP "\fB\-mprioritize\-restricted\-insns=\fR\fIpriority\fR" 4
  .IX Item "-mprioritize-restricted-insns=priority"
  This option controls the priority that is assigned to
! dispatch-slot restricted instructions during the second scheduling
  pass.  The argument \fIpriority\fR takes the value \fB0\fR, \fB1\fR,
! or \fB2\fR to assign no, highest, or second-highest (respectively)
! priority to dispatch-slot restricted
  instructions.
! .IP "\fB\-msched\-costly\-dep=\fR\fIdependence_type\fR" 4
  .IX Item "-msched-costly-dep=dependence_type"
  This option controls which dependences are considered costly
  by the target during instruction scheduling.  The argument
  \&\fIdependence_type\fR takes one of the following values:
  .RS 4
! .IP "\fBno\fR" 4
  .IX Item "no"
  No dependence is costly.
! .IP "\fBall\fR" 4
  .IX Item "all"
  All dependences are costly.
! .IP "\fBtrue_store_to_load\fR" 4
  .IX Item "true_store_to_load"
  A true dependence from store to load is costly.
! .IP "\fBstore_to_load\fR" 4
  .IX Item "store_to_load"
  Any dependence from store to load is costly.
! .IP "\fInumber\fR" 4
  .IX Item "number"
  Any dependence for which the latency is greater than or equal to
  \&\fInumber\fR is costly.
  .RE
  .RS 4
  .RE
! .IP "\fB\-minsert\-sched\-nops=\fR\fIscheme\fR" 4
  .IX Item "-minsert-sched-nops=scheme"
! This option controls which \s-1NOP\s0 insertion scheme is used during
  the second scheduling pass.  The argument \fIscheme\fR takes one of the
  following values:
  .RS 4
! .IP "\fBno\fR" 4
  .IX Item "no"
! Don't insert NOPs.
! .IP "\fBpad\fR" 4
  .IX Item "pad"
  Pad with NOPs any dispatch group that has vacant issue slots,
! according to the scheduler's grouping.
! .IP "\fBregroup_exact\fR" 4
  .IX Item "regroup_exact"
  Insert NOPs to force costly dependent insns into
  separate groups.  Insert exactly as many NOPs as needed to force an insn
  to a new group, according to the estimated processor grouping.
! .IP "\fInumber\fR" 4
  .IX Item "number"
  Insert NOPs to force costly dependent insns into
  separate groups.  Insert \fInumber\fR NOPs to force an insn to a new group.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mcall\-sysv\fR" 4
  .IX Item "-mcall-sysv"
  On System V.4 and embedded PowerPC systems compile code using calling
  conventions that adhere to the March 1995 draft of the System V
  Application Binary Interface, PowerPC processor supplement.  This is the
! default unless you configured \s-1GCC\s0 using \fBpowerpc\-*\-eabiaix\fR.
! .IP "\fB\-mcall\-sysv\-eabi\fR" 4
  .IX Item "-mcall-sysv-eabi"
  .PD 0
! .IP "\fB\-mcall\-eabi\fR" 4
  .IX Item "-mcall-eabi"
  .PD
  Specify both \fB\-mcall\-sysv\fR and \fB\-meabi\fR options.
! .IP "\fB\-mcall\-sysv\-noeabi\fR" 4
  .IX Item "-mcall-sysv-noeabi"
  Specify both \fB\-mcall\-sysv\fR and \fB\-mno\-eabi\fR options.
! .IP "\fB\-mcall\-aixdesc\fR" 4
  .IX Item "-mcall-aixdesc"
! On System V.4 and embedded PowerPC systems compile code for the \s-1AIX\s0
  operating system.
! .IP "\fB\-mcall\-linux\fR" 4
  .IX Item "-mcall-linux"
  On System V.4 and embedded PowerPC systems compile code for the
! Linux-based \s-1GNU\s0 system.
! .IP "\fB\-mcall\-freebsd\fR" 4
  .IX Item "-mcall-freebsd"
  On System V.4 and embedded PowerPC systems compile code for the
  FreeBSD operating system.
! .IP "\fB\-mcall\-netbsd\fR" 4
  .IX Item "-mcall-netbsd"
  On System V.4 and embedded PowerPC systems compile code for the
  NetBSD operating system.
! .IP "\fB\-mcall\-openbsd\fR" 4
  .IX Item "-mcall-openbsd"
  On System V.4 and embedded PowerPC systems compile code for the
  OpenBSD operating system.
! .IP "\fB\-mtraceback=\fR\fItraceback_type\fR" 4
  .IX Item "-mtraceback=traceback_type"
  Select the type of traceback table. Valid values for \fItraceback_type\fR
  are \fBfull\fR, \fBpart\fR, and \fBno\fR.
! .IP "\fB\-maix\-struct\-return\fR" 4
  .IX Item "-maix-struct-return"
! Return all structures in memory (as specified by the \s-1AIX ABI\s0).
! .IP "\fB\-msvr4\-struct\-return\fR" 4
  .IX Item "-msvr4-struct-return"
  Return structures smaller than 8 bytes in registers (as specified by the
! \&\s-1SVR4 ABI\s0).
! .IP "\fB\-mabi=\fR\fIabi-type\fR" 4
  .IX Item "-mabi=abi-type"
! Extend the current \s-1ABI\s0 with a particular extension, or remove such extension.
! Valid values are: \fBaltivec\fR, \fBno-altivec\fR,
  \&\fBibmlongdouble\fR, \fBieeelongdouble\fR,
  \&\fBelfv1\fR, \fBelfv2\fR,
! and for \s-1AIX:\s0 \fBvec-extabi\fR, \fBvec-default\fR.
! .IP "\fB\-mabi=ibmlongdouble\fR" 4
  .IX Item "-mabi=ibmlongdouble"
! Change the current \s-1ABI\s0 to use \s-1IBM\s0 extended-precision long double.
! This is not likely to work if your system defaults to using \s-1IEEE\s0
! extended-precision long double.  If you change the long double type
! from \s-1IEEE\s0 extended-precision, the compiler issues a warning unless
  you use the \fB\-Wno\-psabi\fR option.
  Requires \fB\-mlong\-double\-128\fR to be enabled.
! .IP "\fB\-mabi=ieeelongdouble\fR" 4
  .IX Item "-mabi=ieeelongdouble"
! Change the current \s-1ABI\s0 to use \s-1IEEE\s0 extended-precision long double.
! This is not likely to work if your system defaults to using \s-1IBM\s0
! extended-precision long double.  If you change the long double type
! from \s-1IBM\s0 extended-precision, the compiler issues a warning unless
  you use the \fB\-Wno\-psabi\fR option.
  Requires \fB\-mlong\-double\-128\fR to be enabled.
! .IP "\fB\-mabi=elfv1\fR" 4
  .IX Item "-mabi=elfv1"
! Change the current \s-1ABI\s0 to use the ELFv1 \s-1ABI.\s0
! This is the default \s-1ABI\s0 for big-endian PowerPC 64\-bit Linux.
! Overriding the default \s-1ABI\s0 requires special system support and is
  likely to fail in spectacular ways.
! .IP "\fB\-mabi=elfv2\fR" 4
  .IX Item "-mabi=elfv2"
! Change the current \s-1ABI\s0 to use the ELFv2 \s-1ABI.\s0
! This is the default \s-1ABI\s0 for little-endian PowerPC 64\-bit Linux.
! Overriding the default \s-1ABI\s0 requires special system support and is
  likely to fail in spectacular ways.
! .IP "\fB\-mgnu\-attribute\fR" 4
  .IX Item "-mgnu-attribute"
  .PD 0
! .IP "\fB\-mno\-gnu\-attribute\fR" 4
  .IX Item "-mno-gnu-attribute"
  .PD
  Emit .gnu_attribute assembly directives to set tag/value pairs in a
! \&.gnu.attributes section that specify \s-1ABI\s0 variations in function
  parameters or return values.
! .IP "\fB\-mprototype\fR" 4
  .IX Item "-mprototype"
  .PD 0
! .IP "\fB\-mno\-prototype\fR" 4
  .IX Item "-mno-prototype"
  .PD
  On System V.4 and embedded PowerPC systems assume that all calls to
  variable argument functions are properly prototyped.  Otherwise, the
! compiler must insert an instruction before every non-prototyped call to
  set or clear bit 6 of the condition code register (\f(CW\*(C`CR\*(C'\fR) to
! indicate whether floating-point values are passed in the floating-point
  registers in case the function takes variable arguments.  With
  \&\fB\-mprototype\fR, only calls to prototyped variable argument functions
  set or clear the bit.
! .IP "\fB\-msim\fR" 4
  .IX Item "-msim"
  On embedded PowerPC systems, assume that the startup module is called
  \&\fIsim\-crt0.o\fR and that the standard C libraries are \fIlibsim.a\fR and
  \&\fIlibc.a\fR.  This is the default for \fBpowerpc\-*\-eabisim\fR
  configurations.
! .IP "\fB\-mmvme\fR" 4
  .IX Item "-mmvme"
  On embedded PowerPC systems, assume that the startup module is called
  \&\fIcrt0.o\fR and the standard C libraries are \fIlibmvme.a\fR and
  \&\fIlibc.a\fR.
! .IP "\fB\-mads\fR" 4
  .IX Item "-mads"
  On embedded PowerPC systems, assume that the startup module is called
  \&\fIcrt0.o\fR and the standard C libraries are \fIlibads.a\fR and
  \&\fIlibc.a\fR.
! .IP "\fB\-myellowknife\fR" 4
  .IX Item "-myellowknife"
  On embedded PowerPC systems, assume that the startup module is called
  \&\fIcrt0.o\fR and the standard C libraries are \fIlibyk.a\fR and
  \&\fIlibc.a\fR.
! .IP "\fB\-mvxworks\fR" 4
  .IX Item "-mvxworks"
  On System V.4 and embedded PowerPC systems, specify that you are
  compiling for a VxWorks system.
! .IP "\fB\-memb\fR" 4
  .IX Item "-memb"
! On embedded PowerPC systems, set the \f(CW\*(C`PPC_EMB\*(C'\fR bit in the \s-1ELF\s0 flags
  header to indicate that \fBeabi\fR extended relocations are used.
! .IP "\fB\-meabi\fR" 4
  .IX Item "-meabi"
  .PD 0
! .IP "\fB\-mno\-eabi\fR" 4
  .IX Item "-mno-eabi"
  .PD
  On System V.4 and embedded PowerPC systems do (do not) adhere to the
! Embedded Applications Binary Interface (\s-1EABI\s0), which is a set of
  modifications to the System V.4 specifications.  Selecting \fB\-meabi\fR
  means that the stack is aligned to an 8\-byte boundary, a function
! \&\f(CW\*(C`_\|_eabi\*(C'\fR is called from \f(CW\*(C`main\*(C'\fR to set up the \s-1EABI\s0
  environment, and the \fB\-msdata\fR option can use both \f(CW\*(C`r2\*(C'\fR and
  \&\f(CW\*(C`r13\*(C'\fR to point to two separate small data areas.  Selecting
  \&\fB\-mno\-eabi\fR means that the stack is aligned to a 16\-byte boundary,
! no \s-1EABI\s0 initialization function is called from \f(CW\*(C`main\*(C'\fR, and the
  \&\fB\-msdata\fR option only uses \f(CW\*(C`r13\*(C'\fR to point to a single
  small data area.  The \fB\-meabi\fR option is on by default if you
! configured \s-1GCC\s0 using one of the \fBpowerpc*\-*\-eabi*\fR options.
! .IP "\fB\-msdata=eabi\fR" 4
  .IX Item "-msdata=eabi"
  On System V.4 and embedded PowerPC systems, put small initialized
  \&\f(CW\*(C`const\*(C'\fR global and static data in the \f(CW\*(C`.sdata2\*(C'\fR section, which
--- 31523,31778 ----
  alignment of \fB\-mrelocatable\fR.  Objects compiled with
  \&\fB\-mrelocatable\-lib\fR may be linked with objects compiled with
  any combination of the \fB\-mrelocatable\fR options.
! .IP \fB\-mno\-toc\fR 4
  .IX Item "-mno-toc"
  .PD 0
! .IP \fB\-mtoc\fR 4
  .IX Item "-mtoc"
  .PD
  On System V.4 and embedded PowerPC systems do not (do) assume that
  register 2 contains a pointer to a global area pointing to the addresses
  used in the program.
! .IP \fB\-mlittle\fR 4
  .IX Item "-mlittle"
  .PD 0
! .IP \fB\-mlittle\-endian\fR 4
  .IX Item "-mlittle-endian"
  .PD
  On System V.4 and embedded PowerPC systems compile code for the
! processor in little\-endian mode.  The \fB\-mlittle\-endian\fR option is
  the same as \fB\-mlittle\fR.
! .IP \fB\-mbig\fR 4
  .IX Item "-mbig"
  .PD 0
! .IP \fB\-mbig\-endian\fR 4
  .IX Item "-mbig-endian"
  .PD
  On System V.4 and embedded PowerPC systems compile code for the
! processor in big\-endian mode.  The \fB\-mbig\-endian\fR option is
  the same as \fB\-mbig\fR.
! .IP \fB\-mdynamic\-no\-pic\fR 4
  .IX Item "-mdynamic-no-pic"
  On Darwin / macOS systems, compile code so that it is not
  relocatable, but that its external references are relocatable.  The
  resulting code is suitable for applications, but not shared
  libraries.
! .IP \fB\-msingle\-pic\-base\fR 4
  .IX Item "-msingle-pic-base"
! Treat the register used for PIC addressing as read\-only, rather than
  loading it in the prologue for each function.  The runtime system is
  responsible for initializing this register with an appropriate value
  before execution begins.
! .IP \fB\-mprioritize\-restricted\-insns=\fR\fIpriority\fR 4
  .IX Item "-mprioritize-restricted-insns=priority"
  This option controls the priority that is assigned to
! dispatch\-slot restricted instructions during the second scheduling
  pass.  The argument \fIpriority\fR takes the value \fB0\fR, \fB1\fR,
! or \fB2\fR to assign no, highest, or second\-highest (respectively)
! priority to dispatch\-slot restricted
  instructions.
! .IP \fB\-msched\-costly\-dep=\fR\fIdependence_type\fR 4
  .IX Item "-msched-costly-dep=dependence_type"
  This option controls which dependences are considered costly
  by the target during instruction scheduling.  The argument
  \&\fIdependence_type\fR takes one of the following values:
  .RS 4
! .IP \fBno\fR 4
  .IX Item "no"
  No dependence is costly.
! .IP \fBall\fR 4
  .IX Item "all"
  All dependences are costly.
! .IP \fBtrue_store_to_load\fR 4
  .IX Item "true_store_to_load"
  A true dependence from store to load is costly.
! .IP \fBstore_to_load\fR 4
  .IX Item "store_to_load"
  Any dependence from store to load is costly.
! .IP \fInumber\fR 4
  .IX Item "number"
  Any dependence for which the latency is greater than or equal to
  \&\fInumber\fR is costly.
  .RE
  .RS 4
  .RE
! .IP \fB\-minsert\-sched\-nops=\fR\fIscheme\fR 4
  .IX Item "-minsert-sched-nops=scheme"
! This option controls which NOP insertion scheme is used during
  the second scheduling pass.  The argument \fIscheme\fR takes one of the
  following values:
  .RS 4
! .IP \fBno\fR 4
  .IX Item "no"
! Don\*(Aqt insert NOPs.
! .IP \fBpad\fR 4
  .IX Item "pad"
  Pad with NOPs any dispatch group that has vacant issue slots,
! according to the scheduler\*(Aqs grouping.
! .IP \fBregroup_exact\fR 4
  .IX Item "regroup_exact"
  Insert NOPs to force costly dependent insns into
  separate groups.  Insert exactly as many NOPs as needed to force an insn
  to a new group, according to the estimated processor grouping.
! .IP \fInumber\fR 4
  .IX Item "number"
  Insert NOPs to force costly dependent insns into
  separate groups.  Insert \fInumber\fR NOPs to force an insn to a new group.
  .RE
  .RS 4
  .RE
! .IP \fB\-mcall\-sysv\fR 4
  .IX Item "-mcall-sysv"
  On System V.4 and embedded PowerPC systems compile code using calling
  conventions that adhere to the March 1995 draft of the System V
  Application Binary Interface, PowerPC processor supplement.  This is the
! default unless you configured GCC using \fBpowerpc\-*\-eabiaix\fR.
! .IP \fB\-mcall\-sysv\-eabi\fR 4
  .IX Item "-mcall-sysv-eabi"
  .PD 0
! .IP \fB\-mcall\-eabi\fR 4
  .IX Item "-mcall-eabi"
  .PD
  Specify both \fB\-mcall\-sysv\fR and \fB\-meabi\fR options.
! .IP \fB\-mcall\-sysv\-noeabi\fR 4
  .IX Item "-mcall-sysv-noeabi"
  Specify both \fB\-mcall\-sysv\fR and \fB\-mno\-eabi\fR options.
! .IP \fB\-mcall\-aixdesc\fR 4
  .IX Item "-mcall-aixdesc"
! On System V.4 and embedded PowerPC systems compile code for the AIX
  operating system.
! .IP \fB\-mcall\-linux\fR 4
  .IX Item "-mcall-linux"
  On System V.4 and embedded PowerPC systems compile code for the
! Linux\-based GNU system.
! .IP \fB\-mcall\-freebsd\fR 4
  .IX Item "-mcall-freebsd"
  On System V.4 and embedded PowerPC systems compile code for the
  FreeBSD operating system.
! .IP \fB\-mcall\-netbsd\fR 4
  .IX Item "-mcall-netbsd"
  On System V.4 and embedded PowerPC systems compile code for the
  NetBSD operating system.
! .IP \fB\-mcall\-openbsd\fR 4
  .IX Item "-mcall-openbsd"
  On System V.4 and embedded PowerPC systems compile code for the
  OpenBSD operating system.
! .IP \fB\-mtraceback=\fR\fItraceback_type\fR 4
  .IX Item "-mtraceback=traceback_type"
  Select the type of traceback table. Valid values for \fItraceback_type\fR
  are \fBfull\fR, \fBpart\fR, and \fBno\fR.
! .IP \fB\-maix\-struct\-return\fR 4
  .IX Item "-maix-struct-return"
! Return all structures in memory (as specified by the AIX ABI).
! .IP \fB\-msvr4\-struct\-return\fR 4
  .IX Item "-msvr4-struct-return"
  Return structures smaller than 8 bytes in registers (as specified by the
! SVR4 ABI).
! .IP \fB\-mabi=\fR\fIabi\-type\fR 4
  .IX Item "-mabi=abi-type"
! Extend the current ABI with a particular extension, or remove such extension.
! Valid values are: \fBaltivec\fR, \fBno\-altivec\fR,
  \&\fBibmlongdouble\fR, \fBieeelongdouble\fR,
  \&\fBelfv1\fR, \fBelfv2\fR,
! and for AIX: \fBvec\-extabi\fR, \fBvec\-default\fR.
! .IP \fB\-mabi=ibmlongdouble\fR 4
  .IX Item "-mabi=ibmlongdouble"
! Change the current ABI to use IBM extended\-precision long double.
! This is not likely to work if your system defaults to using IEEE
! extended\-precision long double.  If you change the long double type
! from IEEE extended\-precision, the compiler issues a warning unless
  you use the \fB\-Wno\-psabi\fR option.
  Requires \fB\-mlong\-double\-128\fR to be enabled.
! .IP \fB\-mabi=ieeelongdouble\fR 4
  .IX Item "-mabi=ieeelongdouble"
! Change the current ABI to use IEEE extended\-precision long double.
! This is not likely to work if your system defaults to using IBM
! extended\-precision long double.  If you change the long double type
! from IBM extended\-precision, the compiler issues a warning unless
  you use the \fB\-Wno\-psabi\fR option.
  Requires \fB\-mlong\-double\-128\fR to be enabled.
! .IP \fB\-mabi=elfv1\fR 4
  .IX Item "-mabi=elfv1"
! Change the current ABI to use the ELFv1 ABI.
! This is the default ABI for big\-endian PowerPC 64\-bit Linux.
! Overriding the default ABI requires special system support and is
  likely to fail in spectacular ways.
! .IP \fB\-mabi=elfv2\fR 4
  .IX Item "-mabi=elfv2"
! Change the current ABI to use the ELFv2 ABI.
! This is the default ABI for little\-endian PowerPC 64\-bit Linux.
! Overriding the default ABI requires special system support and is
  likely to fail in spectacular ways.
! .IP \fB\-mgnu\-attribute\fR 4
  .IX Item "-mgnu-attribute"
  .PD 0
! .IP \fB\-mno\-gnu\-attribute\fR 4
  .IX Item "-mno-gnu-attribute"
  .PD
  Emit .gnu_attribute assembly directives to set tag/value pairs in a
! \&.gnu.attributes section that specify ABI variations in function
  parameters or return values.
! .IP \fB\-mprototype\fR 4
  .IX Item "-mprototype"
  .PD 0
! .IP \fB\-mno\-prototype\fR 4
  .IX Item "-mno-prototype"
  .PD
  On System V.4 and embedded PowerPC systems assume that all calls to
  variable argument functions are properly prototyped.  Otherwise, the
! compiler must insert an instruction before every non\-prototyped call to
  set or clear bit 6 of the condition code register (\f(CW\*(C`CR\*(C'\fR) to
! indicate whether floating\-point values are passed in the floating\-point
  registers in case the function takes variable arguments.  With
  \&\fB\-mprototype\fR, only calls to prototyped variable argument functions
  set or clear the bit.
! .IP \fB\-msim\fR 4
  .IX Item "-msim"
  On embedded PowerPC systems, assume that the startup module is called
  \&\fIsim\-crt0.o\fR and that the standard C libraries are \fIlibsim.a\fR and
  \&\fIlibc.a\fR.  This is the default for \fBpowerpc\-*\-eabisim\fR
  configurations.
! .IP \fB\-mmvme\fR 4
  .IX Item "-mmvme"
  On embedded PowerPC systems, assume that the startup module is called
  \&\fIcrt0.o\fR and the standard C libraries are \fIlibmvme.a\fR and
  \&\fIlibc.a\fR.
! .IP \fB\-mads\fR 4
  .IX Item "-mads"
  On embedded PowerPC systems, assume that the startup module is called
  \&\fIcrt0.o\fR and the standard C libraries are \fIlibads.a\fR and
  \&\fIlibc.a\fR.
! .IP \fB\-myellowknife\fR 4
  .IX Item "-myellowknife"
  On embedded PowerPC systems, assume that the startup module is called
  \&\fIcrt0.o\fR and the standard C libraries are \fIlibyk.a\fR and
  \&\fIlibc.a\fR.
! .IP \fB\-mvxworks\fR 4
  .IX Item "-mvxworks"
  On System V.4 and embedded PowerPC systems, specify that you are
  compiling for a VxWorks system.
! .IP \fB\-memb\fR 4
  .IX Item "-memb"
! On embedded PowerPC systems, set the \f(CW\*(C`PPC_EMB\*(C'\fR bit in the ELF flags
  header to indicate that \fBeabi\fR extended relocations are used.
! .IP \fB\-meabi\fR 4
  .IX Item "-meabi"
  .PD 0
! .IP \fB\-mno\-eabi\fR 4
  .IX Item "-mno-eabi"
  .PD
  On System V.4 and embedded PowerPC systems do (do not) adhere to the
! Embedded Applications Binary Interface (EABI), which is a set of
  modifications to the System V.4 specifications.  Selecting \fB\-meabi\fR
  means that the stack is aligned to an 8\-byte boundary, a function
! \&\f(CW\*(C`_\|_eabi\*(C'\fR is called from \f(CW\*(C`main\*(C'\fR to set up the EABI
  environment, and the \fB\-msdata\fR option can use both \f(CW\*(C`r2\*(C'\fR and
  \&\f(CW\*(C`r13\*(C'\fR to point to two separate small data areas.  Selecting
  \&\fB\-mno\-eabi\fR means that the stack is aligned to a 16\-byte boundary,
! no EABI initialization function is called from \f(CW\*(C`main\*(C'\fR, and the
  \&\fB\-msdata\fR option only uses \f(CW\*(C`r13\*(C'\fR to point to a single
  small data area.  The \fB\-meabi\fR option is on by default if you
! configured GCC using one of the \fBpowerpc*\-*\-eabi*\fR options.
! .IP \fB\-msdata=eabi\fR 4
  .IX Item "-msdata=eabi"
  On System V.4 and embedded PowerPC systems, put small initialized
  \&\f(CW\*(C`const\*(C'\fR global and static data in the \f(CW\*(C`.sdata2\*(C'\fR section, which
*************** global and static data in the \f(CW\*(C`
*** 31848,31854 ****
  the \f(CW\*(C`.sdata\*(C'\fR section.  The \fB\-msdata=eabi\fR option is
  incompatible with the \fB\-mrelocatable\fR option.  The
  \&\fB\-msdata=eabi\fR option also sets the \fB\-memb\fR option.
! .IP "\fB\-msdata=sysv\fR" 4
  .IX Item "-msdata=sysv"
  On System V.4 and embedded PowerPC systems, put small global and static
  data in the \f(CW\*(C`.sdata\*(C'\fR section, which is pointed to by register
--- 31783,31789 ----
  the \f(CW\*(C`.sdata\*(C'\fR section.  The \fB\-msdata=eabi\fR option is
  incompatible with the \fB\-mrelocatable\fR option.  The
  \&\fB\-msdata=eabi\fR option also sets the \fB\-memb\fR option.
! .IP \fB\-msdata=sysv\fR 4
  .IX Item "-msdata=sysv"
  On System V.4 and embedded PowerPC systems, put small global and static
  data in the \f(CW\*(C`.sdata\*(C'\fR section, which is pointed to by register
*************** data in the \f(CW\*(C`.sdata\*(C'\fR sec
*** 31856,31911 ****
  \&\f(CW\*(C`.sbss\*(C'\fR section, which is adjacent to the \f(CW\*(C`.sdata\*(C'\fR section.
  The \fB\-msdata=sysv\fR option is incompatible with the
  \&\fB\-mrelocatable\fR option.
! .IP "\fB\-msdata=default\fR" 4
  .IX Item "-msdata=default"
  .PD 0
! .IP "\fB\-msdata\fR" 4
  .IX Item "-msdata"
  .PD
  On System V.4 and embedded PowerPC systems, if \fB\-meabi\fR is used,
  compile code the same as \fB\-msdata=eabi\fR, otherwise compile code the
  same as \fB\-msdata=sysv\fR.
! .IP "\fB\-msdata=data\fR" 4
  .IX Item "-msdata=data"
  On System V.4 and embedded PowerPC systems, put small global
  data in the \f(CW\*(C`.sdata\*(C'\fR section.  Put small uninitialized global
  data in the \f(CW\*(C`.sbss\*(C'\fR section.  Do not use register \f(CW\*(C`r13\*(C'\fR
  to address small data however.  This is the default behavior unless
  other \fB\-msdata\fR options are used.
! .IP "\fB\-msdata=none\fR" 4
  .IX Item "-msdata=none"
  .PD 0
! .IP "\fB\-mno\-sdata\fR" 4
  .IX Item "-mno-sdata"
  .PD
  On embedded PowerPC systems, put all initialized global and static data
  in the \f(CW\*(C`.data\*(C'\fR section, and all uninitialized data in the
  \&\f(CW\*(C`.bss\*(C'\fR section.
! .IP "\fB\-mreadonly\-in\-sdata\fR" 4
  .IX Item "-mreadonly-in-sdata"
! Put read-only objects in the \f(CW\*(C`.sdata\*(C'\fR section as well.  This is the
  default.
! .IP "\fB\-mblock\-move\-inline\-limit=\fR\fInum\fR" 4
  .IX Item "-mblock-move-inline-limit=num"
  Inline all block moves (such as calls to \f(CW\*(C`memcpy\*(C'\fR or structure
  copies) less than or equal to \fInum\fR bytes.  The minimum value for
  \&\fInum\fR is 32 bytes on 32\-bit targets and 64 bytes on 64\-bit
! targets.  The default value is target-specific.
! .IP "\fB\-mblock\-compare\-inline\-limit=\fR\fInum\fR" 4
  .IX Item "-mblock-compare-inline-limit=num"
! Generate non-looping inline code for all block compares (such as calls
  to \f(CW\*(C`memcmp\*(C'\fR or structure compares) less than or equal to \fInum\fR
! bytes. If \fInum\fR is 0, all inline expansion (non-loop and loop) of
! block compare is disabled. The default value is target-specific.
! .IP "\fB\-mblock\-compare\-inline\-loop\-limit=\fR\fInum\fR" 4
  .IX Item "-mblock-compare-inline-loop-limit=num"
  Generate an inline expansion using loop code for all block compares that
  are less than or equal to \fInum\fR bytes, but greater than the limit
! for non-loop inline block compare expansion. If the block length is not
  constant, at most \fInum\fR bytes will be compared before \f(CW\*(C`memcmp\*(C'\fR
  is called to compare the remainder of the block. The default value is
! target-specific.
! .IP "\fB\-mstring\-compare\-inline\-limit=\fR\fInum\fR" 4
  .IX Item "-mstring-compare-inline-limit=num"
  Compare at most \fInum\fR string bytes with inline code.
  If the difference or end of string is not found at the
--- 31791,31846 ----
  \&\f(CW\*(C`.sbss\*(C'\fR section, which is adjacent to the \f(CW\*(C`.sdata\*(C'\fR section.
  The \fB\-msdata=sysv\fR option is incompatible with the
  \&\fB\-mrelocatable\fR option.
! .IP \fB\-msdata=default\fR 4
  .IX Item "-msdata=default"
  .PD 0
! .IP \fB\-msdata\fR 4
  .IX Item "-msdata"
  .PD
  On System V.4 and embedded PowerPC systems, if \fB\-meabi\fR is used,
  compile code the same as \fB\-msdata=eabi\fR, otherwise compile code the
  same as \fB\-msdata=sysv\fR.
! .IP \fB\-msdata=data\fR 4
  .IX Item "-msdata=data"
  On System V.4 and embedded PowerPC systems, put small global
  data in the \f(CW\*(C`.sdata\*(C'\fR section.  Put small uninitialized global
  data in the \f(CW\*(C`.sbss\*(C'\fR section.  Do not use register \f(CW\*(C`r13\*(C'\fR
  to address small data however.  This is the default behavior unless
  other \fB\-msdata\fR options are used.
! .IP \fB\-msdata=none\fR 4
  .IX Item "-msdata=none"
  .PD 0
! .IP \fB\-mno\-sdata\fR 4
  .IX Item "-mno-sdata"
  .PD
  On embedded PowerPC systems, put all initialized global and static data
  in the \f(CW\*(C`.data\*(C'\fR section, and all uninitialized data in the
  \&\f(CW\*(C`.bss\*(C'\fR section.
! .IP \fB\-mreadonly\-in\-sdata\fR 4
  .IX Item "-mreadonly-in-sdata"
! Put read\-only objects in the \f(CW\*(C`.sdata\*(C'\fR section as well.  This is the
  default.
! .IP \fB\-mblock\-move\-inline\-limit=\fR\fInum\fR 4
  .IX Item "-mblock-move-inline-limit=num"
  Inline all block moves (such as calls to \f(CW\*(C`memcpy\*(C'\fR or structure
  copies) less than or equal to \fInum\fR bytes.  The minimum value for
  \&\fInum\fR is 32 bytes on 32\-bit targets and 64 bytes on 64\-bit
! targets.  The default value is target\-specific.
! .IP \fB\-mblock\-compare\-inline\-limit=\fR\fInum\fR 4
  .IX Item "-mblock-compare-inline-limit=num"
! Generate non\-looping inline code for all block compares (such as calls
  to \f(CW\*(C`memcmp\*(C'\fR or structure compares) less than or equal to \fInum\fR
! bytes. If \fInum\fR is 0, all inline expansion (non\-loop and loop) of
! block compare is disabled. The default value is target\-specific.
! .IP \fB\-mblock\-compare\-inline\-loop\-limit=\fR\fInum\fR 4
  .IX Item "-mblock-compare-inline-loop-limit=num"
  Generate an inline expansion using loop code for all block compares that
  are less than or equal to \fInum\fR bytes, but greater than the limit
! for non\-loop inline block compare expansion. If the block length is not
  constant, at most \fInum\fR bytes will be compared before \f(CW\*(C`memcmp\*(C'\fR
  is called to compare the remainder of the block. The default value is
! target\-specific.
! .IP \fB\-mstring\-compare\-inline\-limit=\fR\fInum\fR 4
  .IX Item "-mstring-compare-inline-limit=num"
  Compare at most \fInum\fR string bytes with inline code.
  If the difference or end of string is not found at the
*************** take care of the rest of the comparison.
*** 31914,31935 ****
  .IP "\fB\-G\fR \fInum\fR" 4
  .IX Item "-G num"
  On embedded PowerPC systems, put global and static items less than or
! equal to \fInum\fR bytes into the small data or \s-1BSS\s0 sections instead of
! the normal data or \s-1BSS\s0 section.  By default, \fInum\fR is 8.  The
  \&\fB\-G\fR \fInum\fR switch is also passed to the linker.
  All modules should be compiled with the same \fB\-G\fR \fInum\fR value.
! .IP "\fB\-mregnames\fR" 4
  .IX Item "-mregnames"
  .PD 0
! .IP "\fB\-mno\-regnames\fR" 4
  .IX Item "-mno-regnames"
  .PD
  On System V.4 and embedded PowerPC systems do (do not) emit register
  names in the assembly language output using symbolic forms.
! .IP "\fB\-mlongcall\fR" 4
  .IX Item "-mlongcall"
  .PD 0
! .IP "\fB\-mno\-longcall\fR" 4
  .IX Item "-mno-longcall"
  .PD
  By default assume that all calls are far away so that a longer and more
--- 31849,31870 ----
  .IP "\fB\-G\fR \fInum\fR" 4
  .IX Item "-G num"
  On embedded PowerPC systems, put global and static items less than or
! equal to \fInum\fR bytes into the small data or BSS sections instead of
! the normal data or BSS section.  By default, \fInum\fR is 8.  The
  \&\fB\-G\fR \fInum\fR switch is also passed to the linker.
  All modules should be compiled with the same \fB\-G\fR \fInum\fR value.
! .IP \fB\-mregnames\fR 4
  .IX Item "-mregnames"
  .PD 0
! .IP \fB\-mno\-regnames\fR 4
  .IX Item "-mno-regnames"
  .PD
  On System V.4 and embedded PowerPC systems do (do not) emit register
  names in the assembly language output using symbolic forms.
! .IP \fB\-mlongcall\fR 4
  .IX Item "-mlongcall"
  .PD 0
! .IP \fB\-mno\-longcall\fR 4
  .IX Item "-mno-longcall"
  .PD
  By default assume that all calls are far away so that a longer and more
*************** expensive calling sequence is required.
*** 31937,32079 ****
  farther than 32 megabytes (33,554,432 bytes) from the current location.
  A short call is generated if the compiler knows
  the call cannot be that far away.  This setting can be overridden by
! the \f(CW\*(C`shortcall\*(C'\fR function attribute, or by \f(CW\*(C`#pragma
! longcall(0)\*(C'\fR.
  .Sp
! Some linkers are capable of detecting out-of-range calls and generating
  glue code on the fly.  On these systems, long calls are unnecessary and
! generate slower code.  As of this writing, the \s-1AIX\s0 linker can do this,
! as can the \s-1GNU\s0 linker for PowerPC/64.  It is planned to add this feature
! to the \s-1GNU\s0 linker for 32\-bit PowerPC systems as well.
  .Sp
! On PowerPC64 ELFv2 and 32\-bit PowerPC systems with newer \s-1GNU\s0 linkers,
! \&\s-1GCC\s0 can generate long calls using an inline \s-1PLT\s0 call sequence (see
  \&\fB\-mpltseq\fR).  PowerPC with \fB\-mbss\-plt\fR and PowerPC64
! ELFv1 (big-endian) do not support inline \s-1PLT\s0 calls.
  .Sp
  On Darwin/PPC systems, \f(CW\*(C`#pragma longcall\*(C'\fR generates \f(CW\*(C`jbsr
  callee, L42\*(C'\fR, plus a \fIbranch island\fR (glue code).  The two target
  addresses represent the callee and the branch island.  The
  Darwin/PPC linker prefers the first address and generates a \f(CW\*(C`bl
! callee\*(C'\fR if the \s-1PPC\s0 \f(CW\*(C`bl\*(C'\fR instruction reaches the callee directly;
  otherwise, the linker generates \f(CW\*(C`bl L42\*(C'\fR to call the branch
  island.  The branch island is appended to the body of the
  calling function; it computes the full 32\-bit address of the callee
  and jumps to it.
  .Sp
! On Mach-O (Darwin) systems, this option directs the compiler emit to
  the glue for every direct call, and the Darwin linker decides whether
  to use or discard it.
  .Sp
! In the future, \s-1GCC\s0 may ignore all longcall specifications
  when the linker is known to generate glue.
! .IP "\fB\-mpltseq\fR" 4
  .IX Item "-mpltseq"
  .PD 0
! .IP "\fB\-mno\-pltseq\fR" 4
  .IX Item "-mno-pltseq"
  .PD
  Implement (do not implement) \-fno\-plt and long calls using an inline
! \&\s-1PLT\s0 call sequence that supports lazy linking and long calls to
! functions in dlopen'd shared libraries.  Inline \s-1PLT\s0 calls are only
! supported on PowerPC64 ELFv2 and 32\-bit PowerPC systems with newer \s-1GNU\s0
  linkers, and are enabled by default if the support is detected when
! configuring \s-1GCC,\s0 and, in the case of 32\-bit PowerPC, if \s-1GCC\s0 is
  configured with \fB\-\-enable\-secureplt\fR.  \fB\-mpltseq\fR code
  and \fB\-mbss\-plt\fR 32\-bit PowerPC relocatable objects may not be
  linked together.
! .IP "\fB\-mtls\-markers\fR" 4
  .IX Item "-mtls-markers"
  .PD 0
! .IP "\fB\-mno\-tls\-markers\fR" 4
  .IX Item "-mno-tls-markers"
  .PD
  Mark (do not mark) calls to \f(CW\*(C`_\|_tls_get_addr\*(C'\fR with a relocation
  specifying the function argument.  The relocation allows the linker to
  reliably associate function call with argument setup instructions for
! \&\s-1TLS\s0 optimization, which in turn allows \s-1GCC\s0 to better schedule the
  sequence.
! .IP "\fB\-mrecip\fR" 4
  .IX Item "-mrecip"
  .PD 0
! .IP "\fB\-mno\-recip\fR" 4
  .IX Item "-mno-recip"
  .PD
  This option enables use of the reciprocal estimate and
  reciprocal square root estimate instructions with additional
! Newton-Raphson steps to increase precision instead of doing a divide or
! square root and divide for floating-point arguments.  You should use
  the \fB\-ffast\-math\fR option when using \fB\-mrecip\fR (or at
  least \fB\-funsafe\-math\-optimizations\fR,
  \&\fB\-ffinite\-math\-only\fR, \fB\-freciprocal\-math\fR and
  \&\fB\-fno\-trapping\-math\fR).  Note that while the throughput of the
! sequence is generally higher than the throughput of the non-reciprocal
  instruction, the precision of the sequence can be decreased by up to 2
  ulp (i.e. the inverse of 1.0 equals 0.99999994) for reciprocal square
  roots.
! .IP "\fB\-mrecip=\fR\fIopt\fR" 4
  .IX Item "-mrecip=opt"
  This option controls which reciprocal estimate instructions
! may be used.  \fIopt\fR is a comma-separated list of options, which may
  be preceded by a \f(CW\*(C`!\*(C'\fR to invert the option:
  .RS 4
! .IP "\fBall\fR" 4
  .IX Item "all"
  Enable all estimate instructions.
! .IP "\fBdefault\fR" 4
  .IX Item "default"
  Enable the default instructions, equivalent to \fB\-mrecip\fR.
! .IP "\fBnone\fR" 4
  .IX Item "none"
  Disable all estimate instructions, equivalent to \fB\-mno\-recip\fR.
! .IP "\fBdiv\fR" 4
  .IX Item "div"
  Enable the reciprocal approximation instructions for both
  single and double precision.
! .IP "\fBdivf\fR" 4
  .IX Item "divf"
! Enable the single-precision reciprocal approximation instructions.
! .IP "\fBdivd\fR" 4
  .IX Item "divd"
! Enable the double-precision reciprocal approximation instructions.
! .IP "\fBrsqrt\fR" 4
  .IX Item "rsqrt"
  Enable the reciprocal square root approximation instructions for both
  single and double precision.
! .IP "\fBrsqrtf\fR" 4
  .IX Item "rsqrtf"
! Enable the single-precision reciprocal square root approximation instructions.
! .IP "\fBrsqrtd\fR" 4
  .IX Item "rsqrtd"
! Enable the double-precision reciprocal square root approximation instructions.
  .RE
  .RS 4
  .Sp
  So, for example, \fB\-mrecip=all,!rsqrtd\fR enables
  all of the reciprocal estimate instructions, except for the
  \&\f(CW\*(C`FRSQRTE\*(C'\fR, \f(CW\*(C`XSRSQRTEDP\*(C'\fR, and \f(CW\*(C`XVRSQRTEDP\*(C'\fR instructions
! which handle the double-precision reciprocal square root calculations.
  .RE
! .IP "\fB\-mrecip\-precision\fR" 4
  .IX Item "-mrecip-precision"
  .PD 0
! .IP "\fB\-mno\-recip\-precision\fR" 4
  .IX Item "-mno-recip-precision"
  .PD
  Assume (do not assume) that the reciprocal estimate instructions
! provide higher-precision estimates than is mandated by the PowerPC
! \&\s-1ABI.\s0  Selecting \fB\-mcpu=power6\fR, \fB\-mcpu=power7\fR or
  \&\fB\-mcpu=power8\fR automatically selects \fB\-mrecip\-precision\fR.
! The double-precision square root estimate instructions are not generated by
! default on low-precision machines, since they do not provide an
  estimate that converges after three steps.
! .IP "\fB\-mveclibabi=\fR\fItype\fR" 4
  .IX Item "-mveclibabi=type"
! Specifies the \s-1ABI\s0 type to use for vectorizing intrinsics using an
  external library.  The only type supported at present is \fBmass\fR,
! which specifies to use \s-1IBM\s0's Mathematical Acceleration Subsystem
! (\s-1MASS\s0) libraries for vectorizing intrinsics using external libraries.
! \&\s-1GCC\s0 currently emits calls to \f(CW\*(C`acosd2\*(C'\fR, \f(CW\*(C`acosf4\*(C'\fR,
  \&\f(CW\*(C`acoshd2\*(C'\fR, \f(CW\*(C`acoshf4\*(C'\fR, \f(CW\*(C`asind2\*(C'\fR, \f(CW\*(C`asinf4\*(C'\fR,
  \&\f(CW\*(C`asinhd2\*(C'\fR, \f(CW\*(C`asinhf4\*(C'\fR, \f(CW\*(C`atan2d2\*(C'\fR, \f(CW\*(C`atan2f4\*(C'\fR,
  \&\f(CW\*(C`atand2\*(C'\fR, \f(CW\*(C`atanf4\*(C'\fR, \f(CW\*(C`atanhd2\*(C'\fR, \f(CW\*(C`atanhf4\*(C'\fR,
--- 31872,32014 ----
  farther than 32 megabytes (33,554,432 bytes) from the current location.
  A short call is generated if the compiler knows
  the call cannot be that far away.  This setting can be overridden by
! the \f(CW\*(C`shortcall\*(C'\fR function attribute, or by \f(CW#pragma
! longcall(0)\fR.
  .Sp
! Some linkers are capable of detecting out\-of\-range calls and generating
  glue code on the fly.  On these systems, long calls are unnecessary and
! generate slower code.  As of this writing, the AIX linker can do this,
! as can the GNU linker for PowerPC/64.  It is planned to add this feature
! to the GNU linker for 32\-bit PowerPC systems as well.
  .Sp
! On PowerPC64 ELFv2 and 32\-bit PowerPC systems with newer GNU linkers,
! GCC can generate long calls using an inline PLT call sequence (see
  \&\fB\-mpltseq\fR).  PowerPC with \fB\-mbss\-plt\fR and PowerPC64
! ELFv1 (big\-endian) do not support inline PLT calls.
  .Sp
  On Darwin/PPC systems, \f(CW\*(C`#pragma longcall\*(C'\fR generates \f(CW\*(C`jbsr
  callee, L42\*(C'\fR, plus a \fIbranch island\fR (glue code).  The two target
  addresses represent the callee and the branch island.  The
  Darwin/PPC linker prefers the first address and generates a \f(CW\*(C`bl
! callee\*(C'\fR if the PPC \f(CW\*(C`bl\*(C'\fR instruction reaches the callee directly;
  otherwise, the linker generates \f(CW\*(C`bl L42\*(C'\fR to call the branch
  island.  The branch island is appended to the body of the
  calling function; it computes the full 32\-bit address of the callee
  and jumps to it.
  .Sp
! On Mach\-O (Darwin) systems, this option directs the compiler emit to
  the glue for every direct call, and the Darwin linker decides whether
  to use or discard it.
  .Sp
! In the future, GCC may ignore all longcall specifications
  when the linker is known to generate glue.
! .IP \fB\-mpltseq\fR 4
  .IX Item "-mpltseq"
  .PD 0
! .IP \fB\-mno\-pltseq\fR 4
  .IX Item "-mno-pltseq"
  .PD
  Implement (do not implement) \-fno\-plt and long calls using an inline
! PLT call sequence that supports lazy linking and long calls to
! functions in dlopen\*(Aqd shared libraries.  Inline PLT calls are only
! supported on PowerPC64 ELFv2 and 32\-bit PowerPC systems with newer GNU
  linkers, and are enabled by default if the support is detected when
! configuring GCC, and, in the case of 32\-bit PowerPC, if GCC is
  configured with \fB\-\-enable\-secureplt\fR.  \fB\-mpltseq\fR code
  and \fB\-mbss\-plt\fR 32\-bit PowerPC relocatable objects may not be
  linked together.
! .IP \fB\-mtls\-markers\fR 4
  .IX Item "-mtls-markers"
  .PD 0
! .IP \fB\-mno\-tls\-markers\fR 4
  .IX Item "-mno-tls-markers"
  .PD
  Mark (do not mark) calls to \f(CW\*(C`_\|_tls_get_addr\*(C'\fR with a relocation
  specifying the function argument.  The relocation allows the linker to
  reliably associate function call with argument setup instructions for
! TLS optimization, which in turn allows GCC to better schedule the
  sequence.
! .IP \fB\-mrecip\fR 4
  .IX Item "-mrecip"
  .PD 0
! .IP \fB\-mno\-recip\fR 4
  .IX Item "-mno-recip"
  .PD
  This option enables use of the reciprocal estimate and
  reciprocal square root estimate instructions with additional
! Newton\-Raphson steps to increase precision instead of doing a divide or
! square root and divide for floating\-point arguments.  You should use
  the \fB\-ffast\-math\fR option when using \fB\-mrecip\fR (or at
  least \fB\-funsafe\-math\-optimizations\fR,
  \&\fB\-ffinite\-math\-only\fR, \fB\-freciprocal\-math\fR and
  \&\fB\-fno\-trapping\-math\fR).  Note that while the throughput of the
! sequence is generally higher than the throughput of the non\-reciprocal
  instruction, the precision of the sequence can be decreased by up to 2
  ulp (i.e. the inverse of 1.0 equals 0.99999994) for reciprocal square
  roots.
! .IP \fB\-mrecip=\fR\fIopt\fR 4
  .IX Item "-mrecip=opt"
  This option controls which reciprocal estimate instructions
! may be used.  \fIopt\fR is a comma\-separated list of options, which may
  be preceded by a \f(CW\*(C`!\*(C'\fR to invert the option:
  .RS 4
! .IP \fBall\fR 4
  .IX Item "all"
  Enable all estimate instructions.
! .IP \fBdefault\fR 4
  .IX Item "default"
  Enable the default instructions, equivalent to \fB\-mrecip\fR.
! .IP \fBnone\fR 4
  .IX Item "none"
  Disable all estimate instructions, equivalent to \fB\-mno\-recip\fR.
! .IP \fBdiv\fR 4
  .IX Item "div"
  Enable the reciprocal approximation instructions for both
  single and double precision.
! .IP \fBdivf\fR 4
  .IX Item "divf"
! Enable the single\-precision reciprocal approximation instructions.
! .IP \fBdivd\fR 4
  .IX Item "divd"
! Enable the double\-precision reciprocal approximation instructions.
! .IP \fBrsqrt\fR 4
  .IX Item "rsqrt"
  Enable the reciprocal square root approximation instructions for both
  single and double precision.
! .IP \fBrsqrtf\fR 4
  .IX Item "rsqrtf"
! Enable the single\-precision reciprocal square root approximation instructions.
! .IP \fBrsqrtd\fR 4
  .IX Item "rsqrtd"
! Enable the double\-precision reciprocal square root approximation instructions.
  .RE
  .RS 4
  .Sp
  So, for example, \fB\-mrecip=all,!rsqrtd\fR enables
  all of the reciprocal estimate instructions, except for the
  \&\f(CW\*(C`FRSQRTE\*(C'\fR, \f(CW\*(C`XSRSQRTEDP\*(C'\fR, and \f(CW\*(C`XVRSQRTEDP\*(C'\fR instructions
! which handle the double\-precision reciprocal square root calculations.
  .RE
! .IP \fB\-mrecip\-precision\fR 4
  .IX Item "-mrecip-precision"
  .PD 0
! .IP \fB\-mno\-recip\-precision\fR 4
  .IX Item "-mno-recip-precision"
  .PD
  Assume (do not assume) that the reciprocal estimate instructions
! provide higher\-precision estimates than is mandated by the PowerPC
! ABI.  Selecting \fB\-mcpu=power6\fR, \fB\-mcpu=power7\fR or
  \&\fB\-mcpu=power8\fR automatically selects \fB\-mrecip\-precision\fR.
! The double\-precision square root estimate instructions are not generated by
! default on low\-precision machines, since they do not provide an
  estimate that converges after three steps.
! .IP \fB\-mveclibabi=\fR\fItype\fR 4
  .IX Item "-mveclibabi=type"
! Specifies the ABI type to use for vectorizing intrinsics using an
  external library.  The only type supported at present is \fBmass\fR,
! which specifies to use IBM\*(Aqs Mathematical Acceleration Subsystem
! (MASS) libraries for vectorizing intrinsics using external libraries.
! GCC currently emits calls to \f(CW\*(C`acosd2\*(C'\fR, \f(CW\*(C`acosf4\*(C'\fR,
  \&\f(CW\*(C`acoshd2\*(C'\fR, \f(CW\*(C`acoshf4\*(C'\fR, \f(CW\*(C`asind2\*(C'\fR, \f(CW\*(C`asinf4\*(C'\fR,
  \&\f(CW\*(C`asinhd2\*(C'\fR, \f(CW\*(C`asinhf4\*(C'\fR, \f(CW\*(C`atan2d2\*(C'\fR, \f(CW\*(C`atan2f4\*(C'\fR,
  \&\f(CW\*(C`atand2\*(C'\fR, \f(CW\*(C`atanf4\*(C'\fR, \f(CW\*(C`atanhd2\*(C'\fR, \f(CW\*(C`atanhf4\*(C'\fR,
*************** which specifies to use \s-1IBM\s0's Math
*** 32088,32215 ****
  \&\f(CW\*(C`sinhf4\*(C'\fR, \f(CW\*(C`sqrtd2\*(C'\fR, \f(CW\*(C`sqrtf4\*(C'\fR, \f(CW\*(C`tand2\*(C'\fR,
  \&\f(CW\*(C`tanf4\*(C'\fR, \f(CW\*(C`tanhd2\*(C'\fR, and \f(CW\*(C`tanhf4\*(C'\fR when generating code
  for power7.  Both \fB\-ftree\-vectorize\fR and
! \&\fB\-funsafe\-math\-optimizations\fR must also be enabled.  The \s-1MASS\s0
  libraries must be specified at link time.
! .IP "\fB\-mfriz\fR" 4
  .IX Item "-mfriz"
  .PD 0
! .IP "\fB\-mno\-friz\fR" 4
  .IX Item "-mno-friz"
  .PD
  Generate (do not generate) the \f(CW\*(C`friz\*(C'\fR instruction when the
  \&\fB\-funsafe\-math\-optimizations\fR option is used to optimize
! rounding of floating-point values to 64\-bit integer and back to floating
  point.  The \f(CW\*(C`friz\*(C'\fR instruction does not return the same value if
! the floating-point number is too large to fit in an integer.
! .IP "\fB\-mpointers\-to\-nested\-functions\fR" 4
  .IX Item "-mpointers-to-nested-functions"
  .PD 0
! .IP "\fB\-mno\-pointers\-to\-nested\-functions\fR" 4
  .IX Item "-mno-pointers-to-nested-functions"
  .PD
  Generate (do not generate) code to load up the static chain register
! (\f(CW\*(C`r11\*(C'\fR) when calling through a pointer on \s-1AIX\s0 and 64\-bit Linux
  systems where a function pointer points to a 3\-word descriptor giving
! the function address, \s-1TOC\s0 value to be loaded in register \f(CW\*(C`r2\*(C'\fR, and
  static chain value to be loaded in register \f(CW\*(C`r11\*(C'\fR.  The
  \&\fB\-mpointers\-to\-nested\-functions\fR is on by default.  You cannot
  call through pointers to nested functions or pointers
  to functions compiled in other languages that use the static chain if
  you use \fB\-mno\-pointers\-to\-nested\-functions\fR.
! .IP "\fB\-msave\-toc\-indirect\fR" 4
  .IX Item "-msave-toc-indirect"
  .PD 0
! .IP "\fB\-mno\-save\-toc\-indirect\fR" 4
  .IX Item "-mno-save-toc-indirect"
  .PD
! Generate (do not generate) code to save the \s-1TOC\s0 value in the reserved
  stack location in the function prologue if the function calls through
! a pointer on \s-1AIX\s0 and 64\-bit Linux systems.  If the \s-1TOC\s0 value is not
  saved in the prologue, it is saved just before the call through the
  pointer.  The \fB\-mno\-save\-toc\-indirect\fR option is the default.
! .IP "\fB\-mcompat\-align\-parm\fR" 4
  .IX Item "-mcompat-align-parm"
  .PD 0
! .IP "\fB\-mno\-compat\-align\-parm\fR" 4
  .IX Item "-mno-compat-align-parm"
  .PD
  Generate (do not generate) code to pass structure parameters with a
  maximum alignment of 64 bits, for compatibility with older versions
! of \s-1GCC.\s0
  .Sp
! Older versions of \s-1GCC\s0 (prior to 4.9.0) incorrectly did not align a
  structure parameter on a 128\-bit boundary when that structure contained
  a member requiring 128\-bit alignment.  This is corrected in more
! recent versions of \s-1GCC.\s0  This option may be used to generate code
  that is compatible with functions compiled with older versions of
! \&\s-1GCC.\s0
  .Sp
  The \fB\-mno\-compat\-align\-parm\fR option is the default.
! .IP "\fB\-mstack\-protector\-guard=\fR\fIguard\fR" 4
  .IX Item "-mstack-protector-guard=guard"
  .PD 0
! .IP "\fB\-mstack\-protector\-guard\-reg=\fR\fIreg\fR" 4
  .IX Item "-mstack-protector-guard-reg=reg"
! .IP "\fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR" 4
  .IX Item "-mstack-protector-guard-offset=offset"
  .PD
  Generate stack protection code using canary at \fIguard\fR.  Supported
! locations are \fBglobal\fR for global canary or \fBtls\fR for per-thread
! canary in the \s-1TLS\s0 block (the default with \s-1GNU\s0 libc version 2.4 or later).
  .Sp
  With the latter choice the options
  \&\fB\-mstack\-protector\-guard\-reg=\fR\fIreg\fR and
  \&\fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR furthermore specify
  which register to use as base register for reading the canary, and from what
  offset from that base register. The default for those is as specified in the
! relevant \s-1ABI.\s0
! .IP "\fB\-mpcrel\fR" 4
  .IX Item "-mpcrel"
  .PD 0
! .IP "\fB\-mno\-pcrel\fR" 4
  .IX Item "-mno-pcrel"
  .PD
! Generate (do not generate) pc-relative addressing.  The \fB\-mpcrel\fR
  option requires that the medium code model (\fB\-mcmodel=medium\fR)
  and prefixed addressing (\fB\-mprefixed\fR) options are enabled.
! .IP "\fB\-mprefixed\fR" 4
  .IX Item "-mprefixed"
  .PD 0
! .IP "\fB\-mno\-prefixed\fR" 4
  .IX Item "-mno-prefixed"
  .PD
  Generate (do not generate) addressing modes using prefixed load and
  store instructions.  The \fB\-mprefixed\fR option requires that
  the option \fB\-mcpu=power10\fR (or later) is enabled.
! .IP "\fB\-mmma\fR" 4
  .IX Item "-mmma"
  .PD 0
! .IP "\fB\-mno\-mma\fR" 4
  .IX Item "-mno-mma"
  .PD
! Generate (do not generate) the \s-1MMA\s0 instructions.  The \fB\-mma\fR
  option requires that the option \fB\-mcpu=power10\fR (or later)
  is enabled.
! .IP "\fB\-mrop\-protect\fR" 4
  .IX Item "-mrop-protect"
  .PD 0
! .IP "\fB\-mno\-rop\-protect\fR" 4
  .IX Item "-mno-rop-protect"
  .PD
! Generate (do not generate) \s-1ROP\s0 protection instructions when the target
! processor supports them.  Currently this option disables the shrink-wrap
  optimization (\fB\-fshrink\-wrap\fR).
! .IP "\fB\-mprivileged\fR" 4
  .IX Item "-mprivileged"
  .PD 0
! .IP "\fB\-mno\-privileged\fR" 4
  .IX Item "-mno-privileged"
  .PD
  Generate (do not generate) code that will run in privileged state.
! .IP "\fB\-mblock\-ops\-unaligned\-vsx\fR" 4
  .IX Item "-mblock-ops-unaligned-vsx"
  .PD 0
! .IP "\fB\-mno\-block\-ops\-unaligned\-vsx\fR" 4
  .IX Item "-mno-block-ops-unaligned-vsx"
  .PD
  Generate (do not generate) unaligned vsx loads and stores for
--- 32023,32150 ----
  \&\f(CW\*(C`sinhf4\*(C'\fR, \f(CW\*(C`sqrtd2\*(C'\fR, \f(CW\*(C`sqrtf4\*(C'\fR, \f(CW\*(C`tand2\*(C'\fR,
  \&\f(CW\*(C`tanf4\*(C'\fR, \f(CW\*(C`tanhd2\*(C'\fR, and \f(CW\*(C`tanhf4\*(C'\fR when generating code
  for power7.  Both \fB\-ftree\-vectorize\fR and
! \&\fB\-funsafe\-math\-optimizations\fR must also be enabled.  The MASS
  libraries must be specified at link time.
! .IP \fB\-mfriz\fR 4
  .IX Item "-mfriz"
  .PD 0
! .IP \fB\-mno\-friz\fR 4
  .IX Item "-mno-friz"
  .PD
  Generate (do not generate) the \f(CW\*(C`friz\*(C'\fR instruction when the
  \&\fB\-funsafe\-math\-optimizations\fR option is used to optimize
! rounding of floating\-point values to 64\-bit integer and back to floating
  point.  The \f(CW\*(C`friz\*(C'\fR instruction does not return the same value if
! the floating\-point number is too large to fit in an integer.
! .IP \fB\-mpointers\-to\-nested\-functions\fR 4
  .IX Item "-mpointers-to-nested-functions"
  .PD 0
! .IP \fB\-mno\-pointers\-to\-nested\-functions\fR 4
  .IX Item "-mno-pointers-to-nested-functions"
  .PD
  Generate (do not generate) code to load up the static chain register
! (\f(CW\*(C`r11\*(C'\fR) when calling through a pointer on AIX and 64\-bit Linux
  systems where a function pointer points to a 3\-word descriptor giving
! the function address, TOC value to be loaded in register \f(CW\*(C`r2\*(C'\fR, and
  static chain value to be loaded in register \f(CW\*(C`r11\*(C'\fR.  The
  \&\fB\-mpointers\-to\-nested\-functions\fR is on by default.  You cannot
  call through pointers to nested functions or pointers
  to functions compiled in other languages that use the static chain if
  you use \fB\-mno\-pointers\-to\-nested\-functions\fR.
! .IP \fB\-msave\-toc\-indirect\fR 4
  .IX Item "-msave-toc-indirect"
  .PD 0
! .IP \fB\-mno\-save\-toc\-indirect\fR 4
  .IX Item "-mno-save-toc-indirect"
  .PD
! Generate (do not generate) code to save the TOC value in the reserved
  stack location in the function prologue if the function calls through
! a pointer on AIX and 64\-bit Linux systems.  If the TOC value is not
  saved in the prologue, it is saved just before the call through the
  pointer.  The \fB\-mno\-save\-toc\-indirect\fR option is the default.
! .IP \fB\-mcompat\-align\-parm\fR 4
  .IX Item "-mcompat-align-parm"
  .PD 0
! .IP \fB\-mno\-compat\-align\-parm\fR 4
  .IX Item "-mno-compat-align-parm"
  .PD
  Generate (do not generate) code to pass structure parameters with a
  maximum alignment of 64 bits, for compatibility with older versions
! of GCC.
  .Sp
! Older versions of GCC (prior to 4.9.0) incorrectly did not align a
  structure parameter on a 128\-bit boundary when that structure contained
  a member requiring 128\-bit alignment.  This is corrected in more
! recent versions of GCC.  This option may be used to generate code
  that is compatible with functions compiled with older versions of
! GCC.
  .Sp
  The \fB\-mno\-compat\-align\-parm\fR option is the default.
! .IP \fB\-mstack\-protector\-guard=\fR\fIguard\fR 4
  .IX Item "-mstack-protector-guard=guard"
  .PD 0
! .IP \fB\-mstack\-protector\-guard\-reg=\fR\fIreg\fR 4
  .IX Item "-mstack-protector-guard-reg=reg"
! .IP \fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR 4
  .IX Item "-mstack-protector-guard-offset=offset"
  .PD
  Generate stack protection code using canary at \fIguard\fR.  Supported
! locations are \fBglobal\fR for global canary or \fBtls\fR for per\-thread
! canary in the TLS block (the default with GNU libc version 2.4 or later).
  .Sp
  With the latter choice the options
  \&\fB\-mstack\-protector\-guard\-reg=\fR\fIreg\fR and
  \&\fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR furthermore specify
  which register to use as base register for reading the canary, and from what
  offset from that base register. The default for those is as specified in the
! relevant ABI.
! .IP \fB\-mpcrel\fR 4
  .IX Item "-mpcrel"
  .PD 0
! .IP \fB\-mno\-pcrel\fR 4
  .IX Item "-mno-pcrel"
  .PD
! Generate (do not generate) pc\-relative addressing.  The \fB\-mpcrel\fR
  option requires that the medium code model (\fB\-mcmodel=medium\fR)
  and prefixed addressing (\fB\-mprefixed\fR) options are enabled.
! .IP \fB\-mprefixed\fR 4
  .IX Item "-mprefixed"
  .PD 0
! .IP \fB\-mno\-prefixed\fR 4
  .IX Item "-mno-prefixed"
  .PD
  Generate (do not generate) addressing modes using prefixed load and
  store instructions.  The \fB\-mprefixed\fR option requires that
  the option \fB\-mcpu=power10\fR (or later) is enabled.
! .IP \fB\-mmma\fR 4
  .IX Item "-mmma"
  .PD 0
! .IP \fB\-mno\-mma\fR 4
  .IX Item "-mno-mma"
  .PD
! Generate (do not generate) the MMA instructions.  The \fB\-mma\fR
  option requires that the option \fB\-mcpu=power10\fR (or later)
  is enabled.
! .IP \fB\-mrop\-protect\fR 4
  .IX Item "-mrop-protect"
  .PD 0
! .IP \fB\-mno\-rop\-protect\fR 4
  .IX Item "-mno-rop-protect"
  .PD
! Generate (do not generate) ROP protection instructions when the target
! processor supports them.  Currently this option disables the shrink\-wrap
  optimization (\fB\-fshrink\-wrap\fR).
! .IP \fB\-mprivileged\fR 4
  .IX Item "-mprivileged"
  .PD 0
! .IP \fB\-mno\-privileged\fR 4
  .IX Item "-mno-privileged"
  .PD
  Generate (do not generate) code that will run in privileged state.
! .IP \fB\-mblock\-ops\-unaligned\-vsx\fR 4
  .IX Item "-mblock-ops-unaligned-vsx"
  .PD 0
! .IP \fB\-mno\-block\-ops\-unaligned\-vsx\fR 4
  .IX Item "-mno-block-ops-unaligned-vsx"
  .PD
  Generate (do not generate) unaligned vsx loads and stores for
*************** would be beneficial to unroll the main v
*** 32221,32286 ****
  parameter sets the upper bound of how much the vectorizer will unroll the main
  loop.  The default value is four.
  .PP
! \fI\s-1RX\s0 Options\fR
  .IX Subsection "RX Options"
  .PP
! These command-line options are defined for \s-1RX\s0 targets:
! .IP "\fB\-m64bit\-doubles\fR" 4
  .IX Item "-m64bit-doubles"
  .PD 0
! .IP "\fB\-m32bit\-doubles\fR" 4
  .IX Item "-m32bit-doubles"
  .PD
  Make the \f(CW\*(C`double\*(C'\fR data type be 64 bits (\fB\-m64bit\-doubles\fR)
  or 32 bits (\fB\-m32bit\-doubles\fR) in size.  The default is
! \&\fB\-m32bit\-doubles\fR.  \fINote\fR \s-1RX\s0 floating-point hardware only
  works on 32\-bit values, which is why the default is
  \&\fB\-m32bit\-doubles\fR.
! .IP "\fB\-fpu\fR" 4
  .IX Item "-fpu"
  .PD 0
! .IP "\fB\-nofpu\fR" 4
  .IX Item "-nofpu"
  .PD
! Enables (\fB\-fpu\fR) or disables (\fB\-nofpu\fR) the use of \s-1RX\s0
! floating-point hardware.  The default is enabled for the \s-1RX600\s0
! series and disabled for the \s-1RX200\s0 series.
  .Sp
! Floating-point instructions are only generated for 32\-bit floating-point
! values, however, so the \s-1FPU\s0 hardware is not used for doubles if the
  \&\fB\-m64bit\-doubles\fR option is used.
  .Sp
  \&\fINote\fR If the \fB\-fpu\fR option is enabled then
  \&\fB\-funsafe\-math\-optimizations\fR is also enabled automatically.
! This is because the \s-1RX FPU\s0 instructions are themselves unsafe.
! .IP "\fB\-mcpu=\fR\fIname\fR" 4
  .IX Item "-mcpu=name"
! Selects the type of \s-1RX CPU\s0 to be targeted.  Currently three types are
! supported, the generic \fB\s-1RX600\s0\fR and \fB\s-1RX200\s0\fR series hardware and
! the specific \fB\s-1RX610\s0\fR \s-1CPU.\s0  The default is \fB\s-1RX600\s0\fR.
  .Sp
! The only difference between \fB\s-1RX600\s0\fR and \fB\s-1RX610\s0\fR is that the
! \&\fB\s-1RX610\s0\fR does not support the \f(CW\*(C`MVTIPL\*(C'\fR instruction.
  .Sp
! The \fB\s-1RX200\s0\fR series does not have a hardware floating-point unit
  and so \fB\-nofpu\fR is enabled by default when this type is
  selected.
! .IP "\fB\-mbig\-endian\-data\fR" 4
  .IX Item "-mbig-endian-data"
  .PD 0
! .IP "\fB\-mlittle\-endian\-data\fR" 4
  .IX Item "-mlittle-endian-data"
  .PD
! Store data (but not code) in the big-endian format.  The default is
! \&\fB\-mlittle\-endian\-data\fR, i.e. to store data in the little-endian
  format.
! .IP "\fB\-msmall\-data\-limit=\fR\fIN\fR" 4
  .IX Item "-msmall-data-limit=N"
  Specifies the maximum size in bytes of global and static variables
  which can be placed into the small data area.  Using the small data
  area can lead to smaller and faster code, but the size of area is
  limited and it is up to the programmer to ensure that the area does
! not overflow.  Also when the small data area is used one of the \s-1RX\s0's
  registers (usually \f(CW\*(C`r13\*(C'\fR) is reserved for use pointing to this
  area, so it is no longer available for use by the compiler.  This
  could result in slower and/or larger code if variables are pushed onto
--- 32156,32221 ----
  parameter sets the upper bound of how much the vectorizer will unroll the main
  loop.  The default value is four.
  .PP
! \fIRX Options\fR
  .IX Subsection "RX Options"
  .PP
! These command\-line options are defined for RX targets:
! .IP \fB\-m64bit\-doubles\fR 4
  .IX Item "-m64bit-doubles"
  .PD 0
! .IP \fB\-m32bit\-doubles\fR 4
  .IX Item "-m32bit-doubles"
  .PD
  Make the \f(CW\*(C`double\*(C'\fR data type be 64 bits (\fB\-m64bit\-doubles\fR)
  or 32 bits (\fB\-m32bit\-doubles\fR) in size.  The default is
! \&\fB\-m32bit\-doubles\fR.  \fINote\fR RX floating\-point hardware only
  works on 32\-bit values, which is why the default is
  \&\fB\-m32bit\-doubles\fR.
! .IP \fB\-fpu\fR 4
  .IX Item "-fpu"
  .PD 0
! .IP \fB\-nofpu\fR 4
  .IX Item "-nofpu"
  .PD
! Enables (\fB\-fpu\fR) or disables (\fB\-nofpu\fR) the use of RX
! floating\-point hardware.  The default is enabled for the RX600
! series and disabled for the RX200 series.
  .Sp
! Floating\-point instructions are only generated for 32\-bit floating\-point
! values, however, so the FPU hardware is not used for doubles if the
  \&\fB\-m64bit\-doubles\fR option is used.
  .Sp
  \&\fINote\fR If the \fB\-fpu\fR option is enabled then
  \&\fB\-funsafe\-math\-optimizations\fR is also enabled automatically.
! This is because the RX FPU instructions are themselves unsafe.
! .IP \fB\-mcpu=\fR\fIname\fR 4
  .IX Item "-mcpu=name"
! Selects the type of RX CPU to be targeted.  Currently three types are
! supported, the generic \fBRX600\fR and \fBRX200\fR series hardware and
! the specific \fBRX610\fR CPU.  The default is \fBRX600\fR.
  .Sp
! The only difference between \fBRX600\fR and \fBRX610\fR is that the
! \&\fBRX610\fR does not support the \f(CW\*(C`MVTIPL\*(C'\fR instruction.
  .Sp
! The \fBRX200\fR series does not have a hardware floating\-point unit
  and so \fB\-nofpu\fR is enabled by default when this type is
  selected.
! .IP \fB\-mbig\-endian\-data\fR 4
  .IX Item "-mbig-endian-data"
  .PD 0
! .IP \fB\-mlittle\-endian\-data\fR 4
  .IX Item "-mlittle-endian-data"
  .PD
! Store data (but not code) in the big\-endian format.  The default is
! \&\fB\-mlittle\-endian\-data\fR, i.e. to store data in the little\-endian
  format.
! .IP \fB\-msmall\-data\-limit=\fR\fIN\fR 4
  .IX Item "-msmall-data-limit=N"
  Specifies the maximum size in bytes of global and static variables
  which can be placed into the small data area.  Using the small data
  area can lead to smaller and faster code, but the size of area is
  limited and it is up to the programmer to ensure that the area does
! not overflow.  Also when the small data area is used one of the RX\*(Aqs
  registers (usually \f(CW\*(C`r13\*(C'\fR) is reserved for use pointing to this
  area, so it is no longer available for use by the compiler.  This
  could result in slower and/or larger code if variables are pushed onto
*************** reserving a register.  It is up to the p
*** 32297,32323 ****
  discover whether this feature is of benefit to their program.  See the
  description of the \fB\-mpid\fR option for a description of how the
  actual register to hold the small data area pointer is chosen.
! .IP "\fB\-msim\fR" 4
  .IX Item "-msim"
  .PD 0
! .IP "\fB\-mno\-sim\fR" 4
  .IX Item "-mno-sim"
  .PD
  Use the simulator runtime.  The default is to use the libgloss
! board-specific runtime.
! .IP "\fB\-mas100\-syntax\fR" 4
  .IX Item "-mas100-syntax"
  .PD 0
! .IP "\fB\-mno\-as100\-syntax\fR" 4
  .IX Item "-mno-as100-syntax"
  .PD
  When generating assembler output use a syntax that is compatible with
! Renesas's \s-1AS100\s0 assembler.  This syntax can also be handled by the \s-1GAS\s0
  assembler, but it has some restrictions so it is not generated by default.
! .IP "\fB\-mmax\-constant\-size=\fR\fIN\fR" 4
  .IX Item "-mmax-constant-size=N"
  Specifies the maximum size, in bytes, of a constant that can be used as
! an operand in a \s-1RX\s0 instruction.  Although the \s-1RX\s0 instruction set does
  allow constants of up to 4 bytes in length to be used in instructions,
  a longer value equates to a longer instruction.  Thus in some
  circumstances it can be beneficial to restrict the size of constants
--- 32232,32258 ----
  discover whether this feature is of benefit to their program.  See the
  description of the \fB\-mpid\fR option for a description of how the
  actual register to hold the small data area pointer is chosen.
! .IP \fB\-msim\fR 4
  .IX Item "-msim"
  .PD 0
! .IP \fB\-mno\-sim\fR 4
  .IX Item "-mno-sim"
  .PD
  Use the simulator runtime.  The default is to use the libgloss
! board\-specific runtime.
! .IP \fB\-mas100\-syntax\fR 4
  .IX Item "-mas100-syntax"
  .PD 0
! .IP \fB\-mno\-as100\-syntax\fR 4
  .IX Item "-mno-as100-syntax"
  .PD
  When generating assembler output use a syntax that is compatible with
! Renesas\*(Aqs AS100 assembler.  This syntax can also be handled by the GAS
  assembler, but it has some restrictions so it is not generated by default.
! .IP \fB\-mmax\-constant\-size=\fR\fIN\fR 4
  .IX Item "-mmax-constant-size=N"
  Specifies the maximum size, in bytes, of a constant that can be used as
! an operand in a RX instruction.  Although the RX instruction set does
  allow constants of up to 4 bytes in length to be used in instructions,
  a longer value equates to a longer instruction.  Thus in some
  circumstances it can be beneficial to restrict the size of constants
*************** placed into a constant pool and referenc
*** 32326,32337 ****
  .Sp
  The value \fIN\fR can be between 0 and 4.  A value of 0 (the default)
  or 4 means that constants of any size are allowed.
! .IP "\fB\-mrelax\fR" 4
  .IX Item "-mrelax"
  Enable linker relaxation.  Linker relaxation is a process whereby the
  linker attempts to reduce the size of a program by finding shorter
  versions of various instructions.  Disabled by default.
! .IP "\fB\-mint\-register=\fR\fIN\fR" 4
  .IX Item "-mint-register=N"
  Specify the number of registers to reserve for fast interrupt handler
  functions.  The value \fIN\fR can be between 0 and 4.  A value of 1
--- 32261,32272 ----
  .Sp
  The value \fIN\fR can be between 0 and 4.  A value of 0 (the default)
  or 4 means that constants of any size are allowed.
! .IP \fB\-mrelax\fR 4
  .IX Item "-mrelax"
  Enable linker relaxation.  Linker relaxation is a process whereby the
  linker attempts to reduce the size of a program by finding shorter
  versions of various instructions.  Disabled by default.
! .IP \fB\-mint\-register=\fR\fIN\fR 4
  .IX Item "-mint-register=N"
  Specify the number of registers to reserve for fast interrupt handler
  functions.  The value \fIN\fR can be between 0 and 4.  A value of 1
*************** of fast interrupt handlers.  A value of
*** 32340,32356 ****
  \&\f(CW\*(C`r12\*(C'\fR.  A value of 3 reserves \f(CW\*(C`r13\*(C'\fR, \f(CW\*(C`r12\*(C'\fR and
  \&\f(CW\*(C`r11\*(C'\fR, and a value of 4 reserves \f(CW\*(C`r13\*(C'\fR through \f(CW\*(C`r10\*(C'\fR.
  A value of 0, the default, does not reserve any registers.
! .IP "\fB\-msave\-acc\-in\-interrupts\fR" 4
  .IX Item "-msave-acc-in-interrupts"
  Specifies that interrupt handler functions should preserve the
  accumulator register.  This is only necessary if normal code might use
  the accumulator register, for example because it performs 64\-bit
  multiplications.  The default is to ignore the accumulator as this
  makes the interrupt handlers faster.
! .IP "\fB\-mpid\fR" 4
  .IX Item "-mpid"
  .PD 0
! .IP "\fB\-mno\-pid\fR" 4
  .IX Item "-mno-pid"
  .PD
  Enables the generation of position independent data.  When enabled any
--- 32275,32291 ----
  \&\f(CW\*(C`r12\*(C'\fR.  A value of 3 reserves \f(CW\*(C`r13\*(C'\fR, \f(CW\*(C`r12\*(C'\fR and
  \&\f(CW\*(C`r11\*(C'\fR, and a value of 4 reserves \f(CW\*(C`r13\*(C'\fR through \f(CW\*(C`r10\*(C'\fR.
  A value of 0, the default, does not reserve any registers.
! .IP \fB\-msave\-acc\-in\-interrupts\fR 4
  .IX Item "-msave-acc-in-interrupts"
  Specifies that interrupt handler functions should preserve the
  accumulator register.  This is only necessary if normal code might use
  the accumulator register, for example because it performs 64\-bit
  multiplications.  The default is to ignore the accumulator as this
  makes the interrupt handlers faster.
! .IP \fB\-mpid\fR 4
  .IX Item "-mpid"
  .PD 0
! .IP \fB\-mno\-pid\fR 4
  .IX Item "-mno-pid"
  .PD
  Enables the generation of position independent data.  When enabled any
*************** larger code, especially in complicated f
*** 32367,32373 ****
  .Sp
  The actual register chosen to hold the constant data base address
  depends upon whether the \fB\-msmall\-data\-limit\fR and/or the
! \&\fB\-mint\-register\fR command-line options are enabled.  Starting
  with register \f(CW\*(C`r13\*(C'\fR and proceeding downwards, registers are
  allocated first to satisfy the requirements of \fB\-mint\-register\fR,
  then \fB\-mpid\fR and finally \fB\-msmall\-data\-limit\fR.  Thus it
--- 32302,32308 ----
  .Sp
  The actual register chosen to hold the constant data base address
  depends upon whether the \fB\-msmall\-data\-limit\fR and/or the
! \&\fB\-mint\-register\fR command\-line options are enabled.  Starting
  with register \f(CW\*(C`r13\*(C'\fR and proceeding downwards, registers are
  allocated first to satisfy the requirements of \fB\-mint\-register\fR,
  then \fB\-mpid\fR and finally \fB\-msmall\-data\-limit\fR.  Thus it
*************** is possible for the small data area regi
*** 32376,32419 ****
  command line.
  .Sp
  By default this feature is not enabled.  The default can be restored
! via the \fB\-mno\-pid\fR command-line option.
! .IP "\fB\-mno\-warn\-multiple\-fast\-interrupts\fR" 4
  .IX Item "-mno-warn-multiple-fast-interrupts"
  .PD 0
! .IP "\fB\-mwarn\-multiple\-fast\-interrupts\fR" 4
  .IX Item "-mwarn-multiple-fast-interrupts"
  .PD
! Prevents \s-1GCC\s0 from issuing a warning message if it finds more than one
  fast interrupt handler when it is compiling a file.  The default is to
! issue a warning for each extra fast interrupt handler found, as the \s-1RX\s0
  only supports one such interrupt.
! .IP "\fB\-mallow\-string\-insns\fR" 4
  .IX Item "-mallow-string-insns"
  .PD 0
! .IP "\fB\-mno\-allow\-string\-insns\fR" 4
  .IX Item "-mno-allow-string-insns"
  .PD
  Enables or disables the use of the string manipulation instructions
  \&\f(CW\*(C`SMOVF\*(C'\fR, \f(CW\*(C`SCMPU\*(C'\fR, \f(CW\*(C`SMOVB\*(C'\fR, \f(CW\*(C`SMOVU\*(C'\fR, \f(CW\*(C`SUNTIL\*(C'\fR
  \&\f(CW\*(C`SWHILE\*(C'\fR and also the \f(CW\*(C`RMPA\*(C'\fR instruction.  These
  instructions may prefetch data, which is not safe to do if accessing
! an I/O register.  (See section 12.2.7 of the \s-1RX62N\s0 Group User's Manual
  for more information).
  .Sp
  The default is to allow these instructions, but it is not possible for
! \&\s-1GCC\s0 to reliably detect all circumstances where a string instruction
  might be used to access an I/O register, so their use cannot be
  disabled automatically.  Instead it is reliant upon the programmer to
  use the \fB\-mno\-allow\-string\-insns\fR option if their program
  accesses I/O space.
  .Sp
! When the instructions are enabled \s-1GCC\s0 defines the C preprocessor
  symbol \f(CW\*(C`_\|_RX_ALLOW_STRING_INSNS_\|_\*(C'\fR, otherwise it defines the
  symbol \f(CW\*(C`_\|_RX_DISALLOW_STRING_INSNS_\|_\*(C'\fR.
! .IP "\fB\-mjsr\fR" 4
  .IX Item "-mjsr"
  .PD 0
! .IP "\fB\-mno\-jsr\fR" 4
  .IX Item "-mno-jsr"
  .PD
  Use only (or not only) \f(CW\*(C`JSR\*(C'\fR instructions to access functions.
--- 32311,32354 ----
  command line.
  .Sp
  By default this feature is not enabled.  The default can be restored
! via the \fB\-mno\-pid\fR command\-line option.
! .IP \fB\-mno\-warn\-multiple\-fast\-interrupts\fR 4
  .IX Item "-mno-warn-multiple-fast-interrupts"
  .PD 0
! .IP \fB\-mwarn\-multiple\-fast\-interrupts\fR 4
  .IX Item "-mwarn-multiple-fast-interrupts"
  .PD
! Prevents GCC from issuing a warning message if it finds more than one
  fast interrupt handler when it is compiling a file.  The default is to
! issue a warning for each extra fast interrupt handler found, as the RX
  only supports one such interrupt.
! .IP \fB\-mallow\-string\-insns\fR 4
  .IX Item "-mallow-string-insns"
  .PD 0
! .IP \fB\-mno\-allow\-string\-insns\fR 4
  .IX Item "-mno-allow-string-insns"
  .PD
  Enables or disables the use of the string manipulation instructions
  \&\f(CW\*(C`SMOVF\*(C'\fR, \f(CW\*(C`SCMPU\*(C'\fR, \f(CW\*(C`SMOVB\*(C'\fR, \f(CW\*(C`SMOVU\*(C'\fR, \f(CW\*(C`SUNTIL\*(C'\fR
  \&\f(CW\*(C`SWHILE\*(C'\fR and also the \f(CW\*(C`RMPA\*(C'\fR instruction.  These
  instructions may prefetch data, which is not safe to do if accessing
! an I/O register.  (See section 12.2.7 of the RX62N Group User\*(Aqs Manual
  for more information).
  .Sp
  The default is to allow these instructions, but it is not possible for
! GCC to reliably detect all circumstances where a string instruction
  might be used to access an I/O register, so their use cannot be
  disabled automatically.  Instead it is reliant upon the programmer to
  use the \fB\-mno\-allow\-string\-insns\fR option if their program
  accesses I/O space.
  .Sp
! When the instructions are enabled GCC defines the C preprocessor
  symbol \f(CW\*(C`_\|_RX_ALLOW_STRING_INSNS_\|_\*(C'\fR, otherwise it defines the
  symbol \f(CW\*(C`_\|_RX_DISALLOW_STRING_INSNS_\|_\*(C'\fR.
! .IP \fB\-mjsr\fR 4
  .IX Item "-mjsr"
  .PD 0
! .IP \fB\-mno\-jsr\fR 4
  .IX Item "-mno-jsr"
  .PD
  Use only (or not only) \f(CW\*(C`JSR\*(C'\fR instructions to access functions.
*************** This option can be used when code size e
*** 32421,32488 ****
  instructions.  Note that \fB\-mno\-jsr\fR does not mean to not use
  \&\f(CW\*(C`JSR\*(C'\fR but instead means that any type of branch may be used.
  .PP
! \&\fINote:\fR The generic \s-1GCC\s0 command-line option \fB\-ffixed\-\fR\fIreg\fR
! has special significance to the \s-1RX\s0 port when used with the
  \&\f(CW\*(C`interrupt\*(C'\fR function attribute.  This attribute indicates a
! function intended to process fast interrupts.  \s-1GCC\s0 ensures
  that it only uses the registers \f(CW\*(C`r10\*(C'\fR, \f(CW\*(C`r11\*(C'\fR, \f(CW\*(C`r12\*(C'\fR
  and/or \f(CW\*(C`r13\*(C'\fR and only provided that the normal use of the
  corresponding registers have been restricted via the
! \&\fB\-ffixed\-\fR\fIreg\fR or \fB\-mint\-register\fR command-line
  options.
  .PP
  \fIS/390 and zSeries Options\fR
  .IX Subsection "S/390 and zSeries Options"
  .PP
  These are the \fB\-m\fR options defined for the S/390 and zSeries architecture.
! .IP "\fB\-mhard\-float\fR" 4
  .IX Item "-mhard-float"
  .PD 0
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  .PD
! Use (do not use) the hardware floating-point instructions and registers
! for floating-point operations.  When \fB\-msoft\-float\fR is specified,
! functions in \fIlibgcc.a\fR are used to perform floating-point
  operations.  When \fB\-mhard\-float\fR is specified, the compiler
! generates \s-1IEEE\s0 floating-point instructions.  This is the default.
! .IP "\fB\-mhard\-dfp\fR" 4
  .IX Item "-mhard-dfp"
  .PD 0
! .IP "\fB\-mno\-hard\-dfp\fR" 4
  .IX Item "-mno-hard-dfp"
  .PD
! Use (do not use) the hardware decimal-floating-point instructions for
! decimal-floating-point operations.  When \fB\-mno\-hard\-dfp\fR is
  specified, functions in \fIlibgcc.a\fR are used to perform
! decimal-floating-point operations.  When \fB\-mhard\-dfp\fR is
! specified, the compiler generates decimal-floating-point hardware
  instructions.  This is the default for \fB\-march=z9\-ec\fR or higher.
! .IP "\fB\-mlong\-double\-64\fR" 4
  .IX Item "-mlong-double-64"
  .PD 0
! .IP "\fB\-mlong\-double\-128\fR" 4
  .IX Item "-mlong-double-128"
  .PD
  These switches control the size of \f(CW\*(C`long double\*(C'\fR type. A size
  of 64 bits makes the \f(CW\*(C`long double\*(C'\fR type equivalent to the \f(CW\*(C`double\*(C'\fR
  type. This is the default.
! .IP "\fB\-mbackchain\fR" 4
  .IX Item "-mbackchain"
  .PD 0
! .IP "\fB\-mno\-backchain\fR" 4
  .IX Item "-mno-backchain"
  .PD
! Store (do not store) the address of the caller's frame as backchain pointer
! into the callee's stack frame.
  A backchain may be needed to allow debugging using tools that do not understand
! \&\s-1DWARF\s0 call frame information.
  When \fB\-mno\-packed\-stack\fR is in effect, the backchain pointer is stored
  at the bottom of the stack frame; when \fB\-mpacked\-stack\fR is in effect,
  the backchain is placed into the topmost word of the 96/160 byte register
  save area.
  .Sp
! In general, code compiled with \fB\-mbackchain\fR is call-compatible with
  code compiled with \fB\-mno\-backchain\fR; however, use of the backchain
  for debugging purposes usually requires that the whole binary is built with
  \&\fB\-mbackchain\fR.  Note that the combination of \fB\-mbackchain\fR,
--- 32356,32423 ----
  instructions.  Note that \fB\-mno\-jsr\fR does not mean to not use
  \&\f(CW\*(C`JSR\*(C'\fR but instead means that any type of branch may be used.
  .PP
! \&\fINote:\fR The generic GCC command\-line option \fB\-ffixed\-\fR\fIreg\fR
! has special significance to the RX port when used with the
  \&\f(CW\*(C`interrupt\*(C'\fR function attribute.  This attribute indicates a
! function intended to process fast interrupts.  GCC ensures
  that it only uses the registers \f(CW\*(C`r10\*(C'\fR, \f(CW\*(C`r11\*(C'\fR, \f(CW\*(C`r12\*(C'\fR
  and/or \f(CW\*(C`r13\*(C'\fR and only provided that the normal use of the
  corresponding registers have been restricted via the
! \&\fB\-ffixed\-\fR\fIreg\fR or \fB\-mint\-register\fR command\-line
  options.
  .PP
  \fIS/390 and zSeries Options\fR
  .IX Subsection "S/390 and zSeries Options"
  .PP
  These are the \fB\-m\fR options defined for the S/390 and zSeries architecture.
! .IP \fB\-mhard\-float\fR 4
  .IX Item "-mhard-float"
  .PD 0
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  .PD
! Use (do not use) the hardware floating\-point instructions and registers
! for floating\-point operations.  When \fB\-msoft\-float\fR is specified,
! functions in \fIlibgcc.a\fR are used to perform floating\-point
  operations.  When \fB\-mhard\-float\fR is specified, the compiler
! generates IEEE floating\-point instructions.  This is the default.
! .IP \fB\-mhard\-dfp\fR 4
  .IX Item "-mhard-dfp"
  .PD 0
! .IP \fB\-mno\-hard\-dfp\fR 4
  .IX Item "-mno-hard-dfp"
  .PD
! Use (do not use) the hardware decimal\-floating\-point instructions for
! decimal\-floating\-point operations.  When \fB\-mno\-hard\-dfp\fR is
  specified, functions in \fIlibgcc.a\fR are used to perform
! decimal\-floating\-point operations.  When \fB\-mhard\-dfp\fR is
! specified, the compiler generates decimal\-floating\-point hardware
  instructions.  This is the default for \fB\-march=z9\-ec\fR or higher.
! .IP \fB\-mlong\-double\-64\fR 4
  .IX Item "-mlong-double-64"
  .PD 0
! .IP \fB\-mlong\-double\-128\fR 4
  .IX Item "-mlong-double-128"
  .PD
  These switches control the size of \f(CW\*(C`long double\*(C'\fR type. A size
  of 64 bits makes the \f(CW\*(C`long double\*(C'\fR type equivalent to the \f(CW\*(C`double\*(C'\fR
  type. This is the default.
! .IP \fB\-mbackchain\fR 4
  .IX Item "-mbackchain"
  .PD 0
! .IP \fB\-mno\-backchain\fR 4
  .IX Item "-mno-backchain"
  .PD
! Store (do not store) the address of the caller\*(Aqs frame as backchain pointer
! into the callee\*(Aqs stack frame.
  A backchain may be needed to allow debugging using tools that do not understand
! DWARF call frame information.
  When \fB\-mno\-packed\-stack\fR is in effect, the backchain pointer is stored
  at the bottom of the stack frame; when \fB\-mpacked\-stack\fR is in effect,
  the backchain is placed into the topmost word of the 96/160 byte register
  save area.
  .Sp
! In general, code compiled with \fB\-mbackchain\fR is call\-compatible with
  code compiled with \fB\-mno\-backchain\fR; however, use of the backchain
  for debugging purposes usually requires that the whole binary is built with
  \&\fB\-mbackchain\fR.  Note that the combination of \fB\-mbackchain\fR,
*************** for debugging purposes usually requires
*** 32490,32499 ****
  to build a linux kernel use \fB\-msoft\-float\fR.
  .Sp
  The default is to not maintain the backchain.
! .IP "\fB\-mpacked\-stack\fR" 4
  .IX Item "-mpacked-stack"
  .PD 0
! .IP "\fB\-mno\-packed\-stack\fR" 4
  .IX Item "-mno-packed-stack"
  .PD
  Use (do not use) the packed stack layout.  When \fB\-mno\-packed\-stack\fR is
--- 32425,32434 ----
  to build a linux kernel use \fB\-msoft\-float\fR.
  .Sp
  The default is to not maintain the backchain.
! .IP \fB\-mpacked\-stack\fR 4
  .IX Item "-mpacked-stack"
  .PD 0
! .IP \fB\-mno\-packed\-stack\fR 4
  .IX Item "-mno-packed-stack"
  .PD
  Use (do not use) the packed stack layout.  When \fB\-mno\-packed\-stack\fR is
*************** the save area is always used to store th
*** 32507,32526 ****
  register is always saved two words below the backchain.
  .Sp
  As long as the stack frame backchain is not used, code generated with
! \&\fB\-mpacked\-stack\fR is call-compatible with code generated with
! \&\fB\-mno\-packed\-stack\fR.  Note that some non-FSF releases of \s-1GCC 2.95\s0 for
  S/390 or zSeries generated code that uses the stack frame backchain at run
! time, not just for debugging purposes.  Such code is not call-compatible
  with code compiled with \fB\-mpacked\-stack\fR.  Also, note that the
  combination of \fB\-mbackchain\fR,
  \&\fB\-mpacked\-stack\fR and \fB\-mhard\-float\fR is not supported.  In order
  to build a linux kernel use \fB\-msoft\-float\fR.
  .Sp
  The default is to not use the packed stack layout.
! .IP "\fB\-msmall\-exec\fR" 4
  .IX Item "-msmall-exec"
  .PD 0
! .IP "\fB\-mno\-small\-exec\fR" 4
  .IX Item "-mno-small-exec"
  .PD
  Generate (or do not generate) code using the \f(CW\*(C`bras\*(C'\fR instruction
--- 32442,32461 ----
  register is always saved two words below the backchain.
  .Sp
  As long as the stack frame backchain is not used, code generated with
! \&\fB\-mpacked\-stack\fR is call\-compatible with code generated with
! \&\fB\-mno\-packed\-stack\fR.  Note that some non\-FSF releases of GCC 2.95 for
  S/390 or zSeries generated code that uses the stack frame backchain at run
! time, not just for debugging purposes.  Such code is not call\-compatible
  with code compiled with \fB\-mpacked\-stack\fR.  Also, note that the
  combination of \fB\-mbackchain\fR,
  \&\fB\-mpacked\-stack\fR and \fB\-mhard\-float\fR is not supported.  In order
  to build a linux kernel use \fB\-msoft\-float\fR.
  .Sp
  The default is to not use the packed stack layout.
! .IP \fB\-msmall\-exec\fR 4
  .IX Item "-msmall-exec"
  .PD 0
! .IP \fB\-mno\-small\-exec\fR 4
  .IX Item "-mno-small-exec"
  .PD
  Generate (or do not generate) code using the \f(CW\*(C`bras\*(C'\fR instruction
*************** to do subroutine calls.
*** 32528,32625 ****
  This only works reliably if the total executable size does not
  exceed 64k.  The default is to use the \f(CW\*(C`basr\*(C'\fR instruction instead,
  which does not have this limitation.
! .IP "\fB\-m64\fR" 4
  .IX Item "-m64"
  .PD 0
! .IP "\fB\-m31\fR" 4
  .IX Item "-m31"
  .PD
  When \fB\-m31\fR is specified, generate code compliant to the
! GNU/Linux for S/390 \s-1ABI.\s0  When \fB\-m64\fR is specified, generate
! code compliant to the GNU/Linux for zSeries \s-1ABI.\s0  This allows \s-1GCC\s0 in
  particular to generate 64\-bit instructions.  For the \fBs390\fR
  targets, the default is \fB\-m31\fR, while the \fBs390x\fR
  targets default to \fB\-m64\fR.
! .IP "\fB\-mzarch\fR" 4
  .IX Item "-mzarch"
  .PD 0
! .IP "\fB\-mesa\fR" 4
  .IX Item "-mesa"
  .PD
  When \fB\-mzarch\fR is specified, generate code using the
  instructions available on z/Architecture.
  When \fB\-mesa\fR is specified, generate code using the
! instructions available on \s-1ESA/390.\s0  Note that \fB\-mesa\fR is
  not possible with \fB\-m64\fR.
! When generating code compliant to the GNU/Linux for S/390 \s-1ABI,\s0
  the default is \fB\-mesa\fR.  When generating code compliant
! to the GNU/Linux for zSeries \s-1ABI,\s0 the default is \fB\-mzarch\fR.
! .IP "\fB\-mhtm\fR" 4
  .IX Item "-mhtm"
  .PD 0
! .IP "\fB\-mno\-htm\fR" 4
  .IX Item "-mno-htm"
  .PD
  The \fB\-mhtm\fR option enables a set of builtins making use of
  instructions available with the transactional execution facility
! introduced with the \s-1IBM\s0 zEnterprise \s-1EC12\s0 machine generation
! \&\fBS/390 System z Built-in Functions\fR.
  \&\fB\-mhtm\fR is enabled by default when using \fB\-march=zEC12\fR.
! .IP "\fB\-mvx\fR" 4
  .IX Item "-mvx"
  .PD 0
! .IP "\fB\-mno\-vx\fR" 4
  .IX Item "-mno-vx"
  .PD
  When \fB\-mvx\fR is specified, generate code using the instructions
! available with the vector extension facility introduced with the \s-1IBM\s0
  z13 machine generation.
! This option changes the \s-1ABI\s0 for some vector type values with regard to
  alignment and calling conventions.  In case vector type values are
! being used in an ABI-relevant context a \s-1GAS\s0 \fB.gnu_attribute\fR
! command will be added to mark the resulting binary with the \s-1ABI\s0 used.
  \&\fB\-mvx\fR is enabled by default when using \fB\-march=z13\fR.
! .IP "\fB\-mzvector\fR" 4
  .IX Item "-mzvector"
  .PD 0
! .IP "\fB\-mno\-zvector\fR" 4
  .IX Item "-mno-zvector"
  .PD
  The \fB\-mzvector\fR option enables vector language extensions and
  builtins using instructions available with the vector extension
! facility introduced with the \s-1IBM\s0 z13 machine generation.
  This option adds support for \fBvector\fR to be used as a keyword to
  define vector type variables and arguments.  \fBvector\fR is only
! available when \s-1GNU\s0 extensions are enabled.  It will not be expanded
  when requesting strict standard compliance e.g. with \fB\-std=c99\fR.
! In addition to the \s-1GCC\s0 low-level builtins \fB\-mzvector\fR enables
! a set of builtins added for compatibility with AltiVec-style
  implementations like Power and Cell.  In order to make use of these
  builtins the header file \fIvecintrin.h\fR needs to be included.
  \&\fB\-mzvector\fR is disabled by default.
! .IP "\fB\-mmvcle\fR" 4
  .IX Item "-mmvcle"
  .PD 0
! .IP "\fB\-mno\-mvcle\fR" 4
  .IX Item "-mno-mvcle"
  .PD
  Generate (or do not generate) code using the \f(CW\*(C`mvcle\*(C'\fR instruction
  to perform block moves.  When \fB\-mno\-mvcle\fR is specified,
  use a \f(CW\*(C`mvc\*(C'\fR loop instead.  This is the default unless optimizing for
  size.
! .IP "\fB\-mdebug\fR" 4
  .IX Item "-mdebug"
  .PD 0
! .IP "\fB\-mno\-debug\fR" 4
  .IX Item "-mno-debug"
  .PD
  Print (or do not print) additional debug information when compiling.
  The default is to not print debug information.
! .IP "\fB\-march=\fR\fIcpu-type\fR" 4
  .IX Item "-march=cpu-type"
! Generate code that runs on \fIcpu-type\fR, which is the name of a
  system representing a certain processor type.  Possible values for
! \&\fIcpu-type\fR are \fBz900\fR/\fBarch5\fR, \fBz990\fR/\fBarch6\fR,
  \&\fBz9\-109\fR, \fBz9\-ec\fR/\fBarch7\fR, \fBz10\fR/\fBarch8\fR,
  \&\fBz196\fR/\fBarch9\fR, \fBzEC12\fR, \fBz13\fR/\fBarch11\fR,
  \&\fBz14\fR/\fBarch12\fR, \fBz15\fR/\fBarch13\fR,
--- 32463,32560 ----
  This only works reliably if the total executable size does not
  exceed 64k.  The default is to use the \f(CW\*(C`basr\*(C'\fR instruction instead,
  which does not have this limitation.
! .IP \fB\-m64\fR 4
  .IX Item "-m64"
  .PD 0
! .IP \fB\-m31\fR 4
  .IX Item "-m31"
  .PD
  When \fB\-m31\fR is specified, generate code compliant to the
! GNU/Linux for S/390 ABI.  When \fB\-m64\fR is specified, generate
! code compliant to the GNU/Linux for zSeries ABI.  This allows GCC in
  particular to generate 64\-bit instructions.  For the \fBs390\fR
  targets, the default is \fB\-m31\fR, while the \fBs390x\fR
  targets default to \fB\-m64\fR.
! .IP \fB\-mzarch\fR 4
  .IX Item "-mzarch"
  .PD 0
! .IP \fB\-mesa\fR 4
  .IX Item "-mesa"
  .PD
  When \fB\-mzarch\fR is specified, generate code using the
  instructions available on z/Architecture.
  When \fB\-mesa\fR is specified, generate code using the
! instructions available on ESA/390.  Note that \fB\-mesa\fR is
  not possible with \fB\-m64\fR.
! When generating code compliant to the GNU/Linux for S/390 ABI,
  the default is \fB\-mesa\fR.  When generating code compliant
! to the GNU/Linux for zSeries ABI, the default is \fB\-mzarch\fR.
! .IP \fB\-mhtm\fR 4
  .IX Item "-mhtm"
  .PD 0
! .IP \fB\-mno\-htm\fR 4
  .IX Item "-mno-htm"
  .PD
  The \fB\-mhtm\fR option enables a set of builtins making use of
  instructions available with the transactional execution facility
! introduced with the IBM zEnterprise EC12 machine generation
! \&\fBS/390 System z Built\-in Functions\fR.
  \&\fB\-mhtm\fR is enabled by default when using \fB\-march=zEC12\fR.
! .IP \fB\-mvx\fR 4
  .IX Item "-mvx"
  .PD 0
! .IP \fB\-mno\-vx\fR 4
  .IX Item "-mno-vx"
  .PD
  When \fB\-mvx\fR is specified, generate code using the instructions
! available with the vector extension facility introduced with the IBM
  z13 machine generation.
! This option changes the ABI for some vector type values with regard to
  alignment and calling conventions.  In case vector type values are
! being used in an ABI\-relevant context a GAS \fB.gnu_attribute\fR
! command will be added to mark the resulting binary with the ABI used.
  \&\fB\-mvx\fR is enabled by default when using \fB\-march=z13\fR.
! .IP \fB\-mzvector\fR 4
  .IX Item "-mzvector"
  .PD 0
! .IP \fB\-mno\-zvector\fR 4
  .IX Item "-mno-zvector"
  .PD
  The \fB\-mzvector\fR option enables vector language extensions and
  builtins using instructions available with the vector extension
! facility introduced with the IBM z13 machine generation.
  This option adds support for \fBvector\fR to be used as a keyword to
  define vector type variables and arguments.  \fBvector\fR is only
! available when GNU extensions are enabled.  It will not be expanded
  when requesting strict standard compliance e.g. with \fB\-std=c99\fR.
! In addition to the GCC low\-level builtins \fB\-mzvector\fR enables
! a set of builtins added for compatibility with AltiVec\-style
  implementations like Power and Cell.  In order to make use of these
  builtins the header file \fIvecintrin.h\fR needs to be included.
  \&\fB\-mzvector\fR is disabled by default.
! .IP \fB\-mmvcle\fR 4
  .IX Item "-mmvcle"
  .PD 0
! .IP \fB\-mno\-mvcle\fR 4
  .IX Item "-mno-mvcle"
  .PD
  Generate (or do not generate) code using the \f(CW\*(C`mvcle\*(C'\fR instruction
  to perform block moves.  When \fB\-mno\-mvcle\fR is specified,
  use a \f(CW\*(C`mvc\*(C'\fR loop instead.  This is the default unless optimizing for
  size.
! .IP \fB\-mdebug\fR 4
  .IX Item "-mdebug"
  .PD 0
! .IP \fB\-mno\-debug\fR 4
  .IX Item "-mno-debug"
  .PD
  Print (or do not print) additional debug information when compiling.
  The default is to not print debug information.
! .IP \fB\-march=\fR\fIcpu\-type\fR 4
  .IX Item "-march=cpu-type"
! Generate code that runs on \fIcpu\-type\fR, which is the name of a
  system representing a certain processor type.  Possible values for
! \&\fIcpu\-type\fR are \fBz900\fR/\fBarch5\fR, \fBz990\fR/\fBarch6\fR,
  \&\fBz9\-109\fR, \fBz9\-ec\fR/\fBarch7\fR, \fBz10\fR/\fBarch8\fR,
  \&\fBz196\fR/\fBarch9\fR, \fBzEC12\fR, \fBz13\fR/\fBarch11\fR,
  \&\fBz14\fR/\fBarch12\fR, \fBz15\fR/\fBarch13\fR,
*************** The default is \fB\-march=z900\fR.
*** 32629,32709 ****
  .Sp
  Specifying \fBnative\fR as cpu type can be used to select the best
  architecture option for the host processor.
! \&\fB\-march=native\fR has no effect if \s-1GCC\s0 does not recognize the
  processor.
! .IP "\fB\-mtune=\fR\fIcpu-type\fR" 4
  .IX Item "-mtune=cpu-type"
! Tune to \fIcpu-type\fR everything applicable about the generated code,
! except for the \s-1ABI\s0 and the set of available instructions.
! The list of \fIcpu-type\fR values is the same as for \fB\-march\fR.
  The default is the value used for \fB\-march\fR.
! .IP "\fB\-mtpf\-trace\fR" 4
  .IX Item "-mtpf-trace"
  .PD 0
! .IP "\fB\-mno\-tpf\-trace\fR" 4
  .IX Item "-mno-tpf-trace"
  .PD
! Generate code that adds (does not add) in \s-1TPF OS\s0 specific branches to trace
  routines in the operating system.  This option is off by default, even
! when compiling for the \s-1TPF OS.\s0
! .IP "\fB\-mtpf\-trace\-skip\fR" 4
  .IX Item "-mtpf-trace-skip"
  .PD 0
! .IP "\fB\-mno\-tpf\-trace\-skip\fR" 4
  .IX Item "-mno-tpf-trace-skip"
  .PD
  Generate code that changes (does not change) the default branch
  targets enabled by \fB\-mtpf\-trace\fR to point to specialized trace
  routines providing the ability of selectively skipping function trace
! entries for the \s-1TPF OS.\s0  This option is off by default, even when
! compiling for the \s-1TPF OS\s0 and specifying \fB\-mtpf\-trace\fR.
! .IP "\fB\-mfused\-madd\fR" 4
  .IX Item "-mfused-madd"
  .PD 0
! .IP "\fB\-mno\-fused\-madd\fR" 4
  .IX Item "-mno-fused-madd"
  .PD
! Generate code that uses (does not use) the floating-point multiply and
  accumulate instructions.  These instructions are generated by default if
  hardware floating point is used.
! .IP "\fB\-mwarn\-framesize=\fR\fIframesize\fR" 4
  .IX Item "-mwarn-framesize=framesize"
  Emit a warning if the current function exceeds the given frame size.  Because
! this is a compile-time check it doesn't need to be a real problem when the program
  runs.  It is intended to identify functions that most probably cause
  a stack overflow.  It is useful to be used in an environment with limited stack
  size e.g. the linux kernel.
! .IP "\fB\-mwarn\-dynamicstack\fR" 4
  .IX Item "-mwarn-dynamicstack"
! Emit a warning if the function calls \f(CW\*(C`alloca\*(C'\fR or uses dynamically-sized
  arrays.  This is generally a bad idea with a limited stack size.
! .IP "\fB\-mstack\-guard=\fR\fIstack-guard\fR" 4
  .IX Item "-mstack-guard=stack-guard"
  .PD 0
! .IP "\fB\-mstack\-size=\fR\fIstack-size\fR" 4
  .IX Item "-mstack-size=stack-size"
  .PD
  If these options are provided the S/390 back end emits additional instructions in
! the function prologue that trigger a trap if the stack size is \fIstack-guard\fR
! bytes above the \fIstack-size\fR (remember that the stack on S/390 grows downward).
! If the \fIstack-guard\fR option is omitted the smallest power of 2 larger than
  the frame size of the compiled function is chosen.
  These options are intended to be used to help debugging stack overflow problems.
  The additionally emitted code causes only little overhead and hence can also be
! used in production-like systems without greater performance degradation.  The given
! values have to be exact powers of 2 and \fIstack-size\fR has to be greater than
! \&\fIstack-guard\fR without exceeding 64k.
  In order to be efficient the extra code makes the assumption that the stack starts
! at an address aligned to the value given by \fIstack-size\fR.
! The \fIstack-guard\fR option can only be used in conjunction with \fIstack-size\fR.
! .IP "\fB\-mhotpatch=\fR\fIpre-halfwords\fR\fB,\fR\fIpost-halfwords\fR" 4
  .IX Item "-mhotpatch=pre-halfwords,post-halfwords"
! If the hotpatch option is enabled, a \*(L"hot-patching\*(R" function
  prologue is generated for all functions in the compilation unit.
! The funtion label is prepended with the given number of two-byte
! \&\s-1NOP\s0 instructions (\fIpre-halfwords\fR, maximum 1000000).  After
! the label, 2 * \fIpost-halfwords\fR bytes are appended, using the
! largest \s-1NOP\s0 like instructions the architecture allows (maximum
  1000000).
  .Sp
  If both arguments are zero, hotpatching is disabled.
--- 32564,32644 ----
  .Sp
  Specifying \fBnative\fR as cpu type can be used to select the best
  architecture option for the host processor.
! \&\fB\-march=native\fR has no effect if GCC does not recognize the
  processor.
! .IP \fB\-mtune=\fR\fIcpu\-type\fR 4
  .IX Item "-mtune=cpu-type"
! Tune to \fIcpu\-type\fR everything applicable about the generated code,
! except for the ABI and the set of available instructions.
! The list of \fIcpu\-type\fR values is the same as for \fB\-march\fR.
  The default is the value used for \fB\-march\fR.
! .IP \fB\-mtpf\-trace\fR 4
  .IX Item "-mtpf-trace"
  .PD 0
! .IP \fB\-mno\-tpf\-trace\fR 4
  .IX Item "-mno-tpf-trace"
  .PD
! Generate code that adds (does not add) in TPF OS specific branches to trace
  routines in the operating system.  This option is off by default, even
! when compiling for the TPF OS.
! .IP \fB\-mtpf\-trace\-skip\fR 4
  .IX Item "-mtpf-trace-skip"
  .PD 0
! .IP \fB\-mno\-tpf\-trace\-skip\fR 4
  .IX Item "-mno-tpf-trace-skip"
  .PD
  Generate code that changes (does not change) the default branch
  targets enabled by \fB\-mtpf\-trace\fR to point to specialized trace
  routines providing the ability of selectively skipping function trace
! entries for the TPF OS.  This option is off by default, even when
! compiling for the TPF OS and specifying \fB\-mtpf\-trace\fR.
! .IP \fB\-mfused\-madd\fR 4
  .IX Item "-mfused-madd"
  .PD 0
! .IP \fB\-mno\-fused\-madd\fR 4
  .IX Item "-mno-fused-madd"
  .PD
! Generate code that uses (does not use) the floating\-point multiply and
  accumulate instructions.  These instructions are generated by default if
  hardware floating point is used.
! .IP \fB\-mwarn\-framesize=\fR\fIframesize\fR 4
  .IX Item "-mwarn-framesize=framesize"
  Emit a warning if the current function exceeds the given frame size.  Because
! this is a compile\-time check it doesn\*(Aqt need to be a real problem when the program
  runs.  It is intended to identify functions that most probably cause
  a stack overflow.  It is useful to be used in an environment with limited stack
  size e.g. the linux kernel.
! .IP \fB\-mwarn\-dynamicstack\fR 4
  .IX Item "-mwarn-dynamicstack"
! Emit a warning if the function calls \f(CW\*(C`alloca\*(C'\fR or uses dynamically\-sized
  arrays.  This is generally a bad idea with a limited stack size.
! .IP \fB\-mstack\-guard=\fR\fIstack\-guard\fR 4
  .IX Item "-mstack-guard=stack-guard"
  .PD 0
! .IP \fB\-mstack\-size=\fR\fIstack\-size\fR 4
  .IX Item "-mstack-size=stack-size"
  .PD
  If these options are provided the S/390 back end emits additional instructions in
! the function prologue that trigger a trap if the stack size is \fIstack\-guard\fR
! bytes above the \fIstack\-size\fR (remember that the stack on S/390 grows downward).
! If the \fIstack\-guard\fR option is omitted the smallest power of 2 larger than
  the frame size of the compiled function is chosen.
  These options are intended to be used to help debugging stack overflow problems.
  The additionally emitted code causes only little overhead and hence can also be
! used in production\-like systems without greater performance degradation.  The given
! values have to be exact powers of 2 and \fIstack\-size\fR has to be greater than
! \&\fIstack\-guard\fR without exceeding 64k.
  In order to be efficient the extra code makes the assumption that the stack starts
! at an address aligned to the value given by \fIstack\-size\fR.
! The \fIstack\-guard\fR option can only be used in conjunction with \fIstack\-size\fR.
! .IP \fB\-mhotpatch=\fR\fIpre\-halfwords\fR\fB,\fR\fIpost\-halfwords\fR 4
  .IX Item "-mhotpatch=pre-halfwords,post-halfwords"
! If the hotpatch option is enabled, a "hot\-patching" function
  prologue is generated for all functions in the compilation unit.
! The funtion label is prepended with the given number of two\-byte
! NOP instructions (\fIpre\-halfwords\fR, maximum 1000000).  After
! the label, 2 * \fIpost\-halfwords\fR bytes are appended, using the
! largest NOP like instructions the architecture allows (maximum
  1000000).
  .Sp
  If both arguments are zero, hotpatching is disabled.
*************** If both arguments are zero, hotpatching
*** 32711,32888 ****
  This option can be overridden for individual functions with the
  \&\f(CW\*(C`hotpatch\*(C'\fR attribute.
  .PP
! \fI\s-1SH\s0 Options\fR
  .IX Subsection "SH Options"
  .PP
! These \fB\-m\fR options are defined for the \s-1SH\s0 implementations:
! .IP "\fB\-m1\fR" 4
  .IX Item "-m1"
! Generate code for the \s-1SH1.\s0
! .IP "\fB\-m2\fR" 4
  .IX Item "-m2"
! Generate code for the \s-1SH2.\s0
! .IP "\fB\-m2e\fR" 4
  .IX Item "-m2e"
  Generate code for the SH2e.
! .IP "\fB\-m2a\-nofpu\fR" 4
  .IX Item "-m2a-nofpu"
! Generate code for the SH2a without \s-1FPU,\s0 or for a SH2a\-FPU in such a way
! that the floating-point unit is not used.
! .IP "\fB\-m2a\-single\-only\fR" 4
  .IX Item "-m2a-single-only"
! Generate code for the SH2a\-FPU, in such a way that no double-precision
! floating-point operations are used.
! .IP "\fB\-m2a\-single\fR" 4
  .IX Item "-m2a-single"
! Generate code for the SH2a\-FPU assuming the floating-point unit is in
! single-precision mode by default.
! .IP "\fB\-m2a\fR" 4
  .IX Item "-m2a"
! Generate code for the SH2a\-FPU assuming the floating-point unit is in
! double-precision mode by default.
! .IP "\fB\-m3\fR" 4
  .IX Item "-m3"
! Generate code for the \s-1SH3.\s0
! .IP "\fB\-m3e\fR" 4
  .IX Item "-m3e"
  Generate code for the SH3e.
! .IP "\fB\-m4\-nofpu\fR" 4
  .IX Item "-m4-nofpu"
! Generate code for the \s-1SH4\s0 without a floating-point unit.
! .IP "\fB\-m4\-single\-only\fR" 4
  .IX Item "-m4-single-only"
! Generate code for the \s-1SH4\s0 with a floating-point unit that only
! supports single-precision arithmetic.
! .IP "\fB\-m4\-single\fR" 4
  .IX Item "-m4-single"
! Generate code for the \s-1SH4\s0 assuming the floating-point unit is in
! single-precision mode by default.
! .IP "\fB\-m4\fR" 4
  .IX Item "-m4"
! Generate code for the \s-1SH4.\s0
! .IP "\fB\-m4\-100\fR" 4
  .IX Item "-m4-100"
! Generate code for \s-1SH4\-100.\s0
! .IP "\fB\-m4\-100\-nofpu\fR" 4
  .IX Item "-m4-100-nofpu"
! Generate code for \s-1SH4\-100\s0 in such a way that the
! floating-point unit is not used.
! .IP "\fB\-m4\-100\-single\fR" 4
  .IX Item "-m4-100-single"
! Generate code for \s-1SH4\-100\s0 assuming the floating-point unit is in
! single-precision mode by default.
! .IP "\fB\-m4\-100\-single\-only\fR" 4
  .IX Item "-m4-100-single-only"
! Generate code for \s-1SH4\-100\s0 in such a way that no double-precision
! floating-point operations are used.
! .IP "\fB\-m4\-200\fR" 4
  .IX Item "-m4-200"
! Generate code for \s-1SH4\-200.\s0
! .IP "\fB\-m4\-200\-nofpu\fR" 4
  .IX Item "-m4-200-nofpu"
! Generate code for \s-1SH4\-200\s0 without in such a way that the
! floating-point unit is not used.
! .IP "\fB\-m4\-200\-single\fR" 4
  .IX Item "-m4-200-single"
! Generate code for \s-1SH4\-200\s0 assuming the floating-point unit is in
! single-precision mode by default.
! .IP "\fB\-m4\-200\-single\-only\fR" 4
  .IX Item "-m4-200-single-only"
! Generate code for \s-1SH4\-200\s0 in such a way that no double-precision
! floating-point operations are used.
! .IP "\fB\-m4\-300\fR" 4
  .IX Item "-m4-300"
! Generate code for \s-1SH4\-300.\s0
! .IP "\fB\-m4\-300\-nofpu\fR" 4
  .IX Item "-m4-300-nofpu"
! Generate code for \s-1SH4\-300\s0 without in such a way that the
! floating-point unit is not used.
! .IP "\fB\-m4\-300\-single\fR" 4
  .IX Item "-m4-300-single"
! Generate code for \s-1SH4\-300\s0 in such a way that no double-precision
! floating-point operations are used.
! .IP "\fB\-m4\-300\-single\-only\fR" 4
  .IX Item "-m4-300-single-only"
! Generate code for \s-1SH4\-300\s0 in such a way that no double-precision
! floating-point operations are used.
! .IP "\fB\-m4\-340\fR" 4
  .IX Item "-m4-340"
! Generate code for \s-1SH4\-340\s0 (no \s-1MMU,\s0 no \s-1FPU\s0).
! .IP "\fB\-m4\-500\fR" 4
  .IX Item "-m4-500"
! Generate code for \s-1SH4\-500\s0 (no \s-1FPU\s0).  Passes \fB\-isa=sh4\-nofpu\fR to the
  assembler.
! .IP "\fB\-m4a\-nofpu\fR" 4
  .IX Item "-m4a-nofpu"
  Generate code for the SH4al\-dsp, or for a SH4a in such a way that the
! floating-point unit is not used.
! .IP "\fB\-m4a\-single\-only\fR" 4
  .IX Item "-m4a-single-only"
! Generate code for the SH4a, in such a way that no double-precision
! floating-point operations are used.
! .IP "\fB\-m4a\-single\fR" 4
  .IX Item "-m4a-single"
! Generate code for the SH4a assuming the floating-point unit is in
! single-precision mode by default.
! .IP "\fB\-m4a\fR" 4
  .IX Item "-m4a"
  Generate code for the SH4a.
! .IP "\fB\-m4al\fR" 4
  .IX Item "-m4al"
  Same as \fB\-m4a\-nofpu\fR, except that it implicitly passes
! \&\fB\-dsp\fR to the assembler.  \s-1GCC\s0 doesn't generate any \s-1DSP\s0
  instructions at the moment.
! .IP "\fB\-mb\fR" 4
  .IX Item "-mb"
! Compile code for the processor in big-endian mode.
! .IP "\fB\-ml\fR" 4
  .IX Item "-ml"
! Compile code for the processor in little-endian mode.
! .IP "\fB\-mdalign\fR" 4
  .IX Item "-mdalign"
  Align doubles at 64\-bit boundaries.  Note that this changes the calling
  conventions, and thus some functions from the standard C library do
  not work unless you recompile it first with \fB\-mdalign\fR.
! .IP "\fB\-mrelax\fR" 4
  .IX Item "-mrelax"
  Shorten some address references at link time, when possible; uses the
  linker option \fB\-relax\fR.
! .IP "\fB\-mbigtable\fR" 4
  .IX Item "-mbigtable"
  Use 32\-bit offsets in \f(CW\*(C`switch\*(C'\fR tables.  The default is to use
  16\-bit offsets.
! .IP "\fB\-mbitops\fR" 4
  .IX Item "-mbitops"
! Enable the use of bit manipulation instructions on \s-1SH2A.\s0
! .IP "\fB\-mfmovd\fR" 4
  .IX Item "-mfmovd"
  Enable the use of the instruction \f(CW\*(C`fmovd\*(C'\fR.  Check \fB\-mdalign\fR for
  alignment constraints.
! .IP "\fB\-mrenesas\fR" 4
  .IX Item "-mrenesas"
  Comply with the calling conventions defined by Renesas.
! .IP "\fB\-mno\-renesas\fR" 4
  .IX Item "-mno-renesas"
! Comply with the calling conventions defined for \s-1GCC\s0 before the Renesas
  conventions were available.  This option is the default for all
! targets of the \s-1SH\s0 toolchain.
! .IP "\fB\-mnomacsave\fR" 4
  .IX Item "-mnomacsave"
! Mark the \f(CW\*(C`MAC\*(C'\fR register as call-clobbered, even if
  \&\fB\-mrenesas\fR is given.
! .IP "\fB\-mieee\fR" 4
  .IX Item "-mieee"
  .PD 0
! .IP "\fB\-mno\-ieee\fR" 4
  .IX Item "-mno-ieee"
  .PD
! Control the \s-1IEEE\s0 compliance of floating-point comparisons, which affects the
  handling of cases where the result of a comparison is unordered.  By default
  \&\fB\-mieee\fR is implicitly enabled.  If \fB\-ffinite\-math\-only\fR is
  enabled \fB\-mno\-ieee\fR is implicitly set, which results in faster
! floating-point greater-equal and less-equal comparisons.  The implicit settings
  can be overridden by specifying either \fB\-mieee\fR or \fB\-mno\-ieee\fR.
! .IP "\fB\-minline\-ic_invalidate\fR" 4
  .IX Item "-minline-ic_invalidate"
  Inline code to invalidate instruction cache entries after setting up
  nested function trampolines.
--- 32646,32823 ----
  This option can be overridden for individual functions with the
  \&\f(CW\*(C`hotpatch\*(C'\fR attribute.
  .PP
! \fISH Options\fR
  .IX Subsection "SH Options"
  .PP
! These \fB\-m\fR options are defined for the SH implementations:
! .IP \fB\-m1\fR 4
  .IX Item "-m1"
! Generate code for the SH1.
! .IP \fB\-m2\fR 4
  .IX Item "-m2"
! Generate code for the SH2.
! .IP \fB\-m2e\fR 4
  .IX Item "-m2e"
  Generate code for the SH2e.
! .IP \fB\-m2a\-nofpu\fR 4
  .IX Item "-m2a-nofpu"
! Generate code for the SH2a without FPU, or for a SH2a\-FPU in such a way
! that the floating\-point unit is not used.
! .IP \fB\-m2a\-single\-only\fR 4
  .IX Item "-m2a-single-only"
! Generate code for the SH2a\-FPU, in such a way that no double\-precision
! floating\-point operations are used.
! .IP \fB\-m2a\-single\fR 4
  .IX Item "-m2a-single"
! Generate code for the SH2a\-FPU assuming the floating\-point unit is in
! single\-precision mode by default.
! .IP \fB\-m2a\fR 4
  .IX Item "-m2a"
! Generate code for the SH2a\-FPU assuming the floating\-point unit is in
! double\-precision mode by default.
! .IP \fB\-m3\fR 4
  .IX Item "-m3"
! Generate code for the SH3.
! .IP \fB\-m3e\fR 4
  .IX Item "-m3e"
  Generate code for the SH3e.
! .IP \fB\-m4\-nofpu\fR 4
  .IX Item "-m4-nofpu"
! Generate code for the SH4 without a floating\-point unit.
! .IP \fB\-m4\-single\-only\fR 4
  .IX Item "-m4-single-only"
! Generate code for the SH4 with a floating\-point unit that only
! supports single\-precision arithmetic.
! .IP \fB\-m4\-single\fR 4
  .IX Item "-m4-single"
! Generate code for the SH4 assuming the floating\-point unit is in
! single\-precision mode by default.
! .IP \fB\-m4\fR 4
  .IX Item "-m4"
! Generate code for the SH4.
! .IP \fB\-m4\-100\fR 4
  .IX Item "-m4-100"
! Generate code for SH4\-100.
! .IP \fB\-m4\-100\-nofpu\fR 4
  .IX Item "-m4-100-nofpu"
! Generate code for SH4\-100 in such a way that the
! floating\-point unit is not used.
! .IP \fB\-m4\-100\-single\fR 4
  .IX Item "-m4-100-single"
! Generate code for SH4\-100 assuming the floating\-point unit is in
! single\-precision mode by default.
! .IP \fB\-m4\-100\-single\-only\fR 4
  .IX Item "-m4-100-single-only"
! Generate code for SH4\-100 in such a way that no double\-precision
! floating\-point operations are used.
! .IP \fB\-m4\-200\fR 4
  .IX Item "-m4-200"
! Generate code for SH4\-200.
! .IP \fB\-m4\-200\-nofpu\fR 4
  .IX Item "-m4-200-nofpu"
! Generate code for SH4\-200 without in such a way that the
! floating\-point unit is not used.
! .IP \fB\-m4\-200\-single\fR 4
  .IX Item "-m4-200-single"
! Generate code for SH4\-200 assuming the floating\-point unit is in
! single\-precision mode by default.
! .IP \fB\-m4\-200\-single\-only\fR 4
  .IX Item "-m4-200-single-only"
! Generate code for SH4\-200 in such a way that no double\-precision
! floating\-point operations are used.
! .IP \fB\-m4\-300\fR 4
  .IX Item "-m4-300"
! Generate code for SH4\-300.
! .IP \fB\-m4\-300\-nofpu\fR 4
  .IX Item "-m4-300-nofpu"
! Generate code for SH4\-300 without in such a way that the
! floating\-point unit is not used.
! .IP \fB\-m4\-300\-single\fR 4
  .IX Item "-m4-300-single"
! Generate code for SH4\-300 in such a way that no double\-precision
! floating\-point operations are used.
! .IP \fB\-m4\-300\-single\-only\fR 4
  .IX Item "-m4-300-single-only"
! Generate code for SH4\-300 in such a way that no double\-precision
! floating\-point operations are used.
! .IP \fB\-m4\-340\fR 4
  .IX Item "-m4-340"
! Generate code for SH4\-340 (no MMU, no FPU).
! .IP \fB\-m4\-500\fR 4
  .IX Item "-m4-500"
! Generate code for SH4\-500 (no FPU).  Passes \fB\-isa=sh4\-nofpu\fR to the
  assembler.
! .IP \fB\-m4a\-nofpu\fR 4
  .IX Item "-m4a-nofpu"
  Generate code for the SH4al\-dsp, or for a SH4a in such a way that the
! floating\-point unit is not used.
! .IP \fB\-m4a\-single\-only\fR 4
  .IX Item "-m4a-single-only"
! Generate code for the SH4a, in such a way that no double\-precision
! floating\-point operations are used.
! .IP \fB\-m4a\-single\fR 4
  .IX Item "-m4a-single"
! Generate code for the SH4a assuming the floating\-point unit is in
! single\-precision mode by default.
! .IP \fB\-m4a\fR 4
  .IX Item "-m4a"
  Generate code for the SH4a.
! .IP \fB\-m4al\fR 4
  .IX Item "-m4al"
  Same as \fB\-m4a\-nofpu\fR, except that it implicitly passes
! \&\fB\-dsp\fR to the assembler.  GCC doesn\*(Aqt generate any DSP
  instructions at the moment.
! .IP \fB\-mb\fR 4
  .IX Item "-mb"
! Compile code for the processor in big\-endian mode.
! .IP \fB\-ml\fR 4
  .IX Item "-ml"
! Compile code for the processor in little\-endian mode.
! .IP \fB\-mdalign\fR 4
  .IX Item "-mdalign"
  Align doubles at 64\-bit boundaries.  Note that this changes the calling
  conventions, and thus some functions from the standard C library do
  not work unless you recompile it first with \fB\-mdalign\fR.
! .IP \fB\-mrelax\fR 4
  .IX Item "-mrelax"
  Shorten some address references at link time, when possible; uses the
  linker option \fB\-relax\fR.
! .IP \fB\-mbigtable\fR 4
  .IX Item "-mbigtable"
  Use 32\-bit offsets in \f(CW\*(C`switch\*(C'\fR tables.  The default is to use
  16\-bit offsets.
! .IP \fB\-mbitops\fR 4
  .IX Item "-mbitops"
! Enable the use of bit manipulation instructions on SH2A.
! .IP \fB\-mfmovd\fR 4
  .IX Item "-mfmovd"
  Enable the use of the instruction \f(CW\*(C`fmovd\*(C'\fR.  Check \fB\-mdalign\fR for
  alignment constraints.
! .IP \fB\-mrenesas\fR 4
  .IX Item "-mrenesas"
  Comply with the calling conventions defined by Renesas.
! .IP \fB\-mno\-renesas\fR 4
  .IX Item "-mno-renesas"
! Comply with the calling conventions defined for GCC before the Renesas
  conventions were available.  This option is the default for all
! targets of the SH toolchain.
! .IP \fB\-mnomacsave\fR 4
  .IX Item "-mnomacsave"
! Mark the \f(CW\*(C`MAC\*(C'\fR register as call\-clobbered, even if
  \&\fB\-mrenesas\fR is given.
! .IP \fB\-mieee\fR 4
  .IX Item "-mieee"
  .PD 0
! .IP \fB\-mno\-ieee\fR 4
  .IX Item "-mno-ieee"
  .PD
! Control the IEEE compliance of floating\-point comparisons, which affects the
  handling of cases where the result of a comparison is unordered.  By default
  \&\fB\-mieee\fR is implicitly enabled.  If \fB\-ffinite\-math\-only\fR is
  enabled \fB\-mno\-ieee\fR is implicitly set, which results in faster
! floating\-point greater\-equal and less\-equal comparisons.  The implicit settings
  can be overridden by specifying either \fB\-mieee\fR or \fB\-mno\-ieee\fR.
! .IP \fB\-minline\-ic_invalidate\fR 4
  .IX Item "-minline-ic_invalidate"
  Inline code to invalidate instruction cache entries after setting up
  nested function trampolines.
*************** If the selected code generation option d
*** 32893,32960 ****
  instruction, and \fB\-musermode\fR is not in effect, the inlined code
  manipulates the instruction cache address array directly with an associative
  write.  This not only requires privileged mode at run time, but it also
! fails if the cache line had been mapped via the \s-1TLB\s0 and has become unmapped.
! .IP "\fB\-misize\fR" 4
  .IX Item "-misize"
  Dump instruction size and location in the assembly code.
! .IP "\fB\-mpadstruct\fR" 4
  .IX Item "-mpadstruct"
  This option is deprecated.  It pads structures to multiple of 4 bytes,
! which is incompatible with the \s-1SH ABI.\s0
! .IP "\fB\-matomic\-model=\fR\fImodel\fR" 4
  .IX Item "-matomic-model=model"
  Sets the model of atomic operations and additional parameters as a comma
! separated list.  For details on the atomic built-in functions see
  \&\fB_\|_atomic Builtins\fR.  The following models and parameters are supported:
  .RS 4
! .IP "\fBnone\fR" 4
  .IX Item "none"
  Disable compiler generated atomic sequences and emit library calls for atomic
  operations.  This is the default if the target is not \f(CW\*(C`sh*\-*\-linux*\*(C'\fR.
! .IP "\fBsoft-gusa\fR" 4
  .IX Item "soft-gusa"
  Generate GNU/Linux compatible gUSA software atomic sequences for the atomic
! built-in functions.  The generated atomic sequences require additional support
  from the interrupt/exception handling code of the system and are only suitable
! for SH3* and SH4* single-core systems.  This option is enabled by default when
! the target is \f(CW\*(C`sh*\-*\-linux*\*(C'\fR and SH3* or SH4*.  When the target is \s-1SH4A,\s0
  this option also partially utilizes the hardware atomic instructions
  \&\f(CW\*(C`movli.l\*(C'\fR and \f(CW\*(C`movco.l\*(C'\fR to create more efficient code, unless
  \&\fBstrict\fR is specified.
! .IP "\fBsoft-tcb\fR" 4
  .IX Item "soft-tcb"
  Generate software atomic sequences that use a variable in the thread control
  block.  This is a variation of the gUSA sequences which can also be used on
  SH1* and SH2* targets.  The generated atomic sequences require additional
  support from the interrupt/exception handling code of the system and are only
! suitable for single-core systems.  When using this model, the \fBgbr\-offset=\fR
  parameter has to be specified as well.
! .IP "\fBsoft-imask\fR" 4
  .IX Item "soft-imask"
  Generate software atomic sequences that temporarily disable interrupts by
  setting \f(CW\*(C`SR.IMASK = 1111\*(C'\fR.  This model works only when the program runs
! in privileged mode and is only suitable for single-core systems.  Additional
  support from the interrupt/exception handling code of the system is not
  required.  This model is enabled by default when the target is
  \&\f(CW\*(C`sh*\-*\-linux*\*(C'\fR and SH1* or SH2*.
! .IP "\fBhard-llcs\fR" 4
  .IX Item "hard-llcs"
  Generate hardware atomic sequences using the \f(CW\*(C`movli.l\*(C'\fR and \f(CW\*(C`movco.l\*(C'\fR
! instructions only.  This is only available on \s-1SH4A\s0 and is suitable for
! multi-core systems.  Since the hardware instructions support only 32 bit atomic
  variables access to 8 or 16 bit variables is emulated with 32 bit accesses.
  Code compiled with this option is also compatible with other software
! atomic model interrupt/exception handling systems if executed on an \s-1SH4A\s0
  system.  Additional support from the interrupt/exception handling code of the
  system is not required for this model.
! .IP "\fBgbr\-offset=\fR" 4
  .IX Item "gbr-offset="
  This parameter specifies the offset in bytes of the variable in the thread
  control block structure that should be used by the generated atomic sequences
! when the \fBsoft-tcb\fR model has been selected.  For other models this
  parameter is ignored.  The specified value must be an integer multiple of four
  and in the range 0\-1020.
! .IP "\fBstrict\fR" 4
  .IX Item "strict"
  This parameter prevents mixed usage of multiple atomic models, even if they
  are compatible, and makes the compiler generate atomic sequences of the
--- 32828,32895 ----
  instruction, and \fB\-musermode\fR is not in effect, the inlined code
  manipulates the instruction cache address array directly with an associative
  write.  This not only requires privileged mode at run time, but it also
! fails if the cache line had been mapped via the TLB and has become unmapped.
! .IP \fB\-misize\fR 4
  .IX Item "-misize"
  Dump instruction size and location in the assembly code.
! .IP \fB\-mpadstruct\fR 4
  .IX Item "-mpadstruct"
  This option is deprecated.  It pads structures to multiple of 4 bytes,
! which is incompatible with the SH ABI.
! .IP \fB\-matomic\-model=\fR\fImodel\fR 4
  .IX Item "-matomic-model=model"
  Sets the model of atomic operations and additional parameters as a comma
! separated list.  For details on the atomic built\-in functions see
  \&\fB_\|_atomic Builtins\fR.  The following models and parameters are supported:
  .RS 4
! .IP \fBnone\fR 4
  .IX Item "none"
  Disable compiler generated atomic sequences and emit library calls for atomic
  operations.  This is the default if the target is not \f(CW\*(C`sh*\-*\-linux*\*(C'\fR.
! .IP \fBsoft\-gusa\fR 4
  .IX Item "soft-gusa"
  Generate GNU/Linux compatible gUSA software atomic sequences for the atomic
! built\-in functions.  The generated atomic sequences require additional support
  from the interrupt/exception handling code of the system and are only suitable
! for SH3* and SH4* single\-core systems.  This option is enabled by default when
! the target is \f(CW\*(C`sh*\-*\-linux*\*(C'\fR and SH3* or SH4*.  When the target is SH4A,
  this option also partially utilizes the hardware atomic instructions
  \&\f(CW\*(C`movli.l\*(C'\fR and \f(CW\*(C`movco.l\*(C'\fR to create more efficient code, unless
  \&\fBstrict\fR is specified.
! .IP \fBsoft\-tcb\fR 4
  .IX Item "soft-tcb"
  Generate software atomic sequences that use a variable in the thread control
  block.  This is a variation of the gUSA sequences which can also be used on
  SH1* and SH2* targets.  The generated atomic sequences require additional
  support from the interrupt/exception handling code of the system and are only
! suitable for single\-core systems.  When using this model, the \fBgbr\-offset=\fR
  parameter has to be specified as well.
! .IP \fBsoft\-imask\fR 4
  .IX Item "soft-imask"
  Generate software atomic sequences that temporarily disable interrupts by
  setting \f(CW\*(C`SR.IMASK = 1111\*(C'\fR.  This model works only when the program runs
! in privileged mode and is only suitable for single\-core systems.  Additional
  support from the interrupt/exception handling code of the system is not
  required.  This model is enabled by default when the target is
  \&\f(CW\*(C`sh*\-*\-linux*\*(C'\fR and SH1* or SH2*.
! .IP \fBhard\-llcs\fR 4
  .IX Item "hard-llcs"
  Generate hardware atomic sequences using the \f(CW\*(C`movli.l\*(C'\fR and \f(CW\*(C`movco.l\*(C'\fR
! instructions only.  This is only available on SH4A and is suitable for
! multi\-core systems.  Since the hardware instructions support only 32 bit atomic
  variables access to 8 or 16 bit variables is emulated with 32 bit accesses.
  Code compiled with this option is also compatible with other software
! atomic model interrupt/exception handling systems if executed on an SH4A
  system.  Additional support from the interrupt/exception handling code of the
  system is not required for this model.
! .IP \fBgbr\-offset=\fR 4
  .IX Item "gbr-offset="
  This parameter specifies the offset in bytes of the variable in the thread
  control block structure that should be used by the generated atomic sequences
! when the \fBsoft\-tcb\fR model has been selected.  For other models this
  parameter is ignored.  The specified value must be an integer multiple of four
  and in the range 0\-1020.
! .IP \fBstrict\fR 4
  .IX Item "strict"
  This parameter prevents mixed usage of multiple atomic models, even if they
  are compatible, and makes the compiler generate atomic sequences of the
*************** specified model only.
*** 32962,33265 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-mtas\fR" 4
  .IX Item "-mtas"
  Generate the \f(CW\*(C`tas.b\*(C'\fR opcode for \f(CW\*(C`_\|_atomic_test_and_set\*(C'\fR.
  Notice that depending on the particular hardware and software configuration
  this can degrade overall performance due to the operand cache line flushes
! that are implied by the \f(CW\*(C`tas.b\*(C'\fR instruction.  On multi-core \s-1SH4A\s0
  processors the \f(CW\*(C`tas.b\*(C'\fR instruction must be used with caution since it
  can result in data corruption for certain cache configurations.
! .IP "\fB\-mprefergot\fR" 4
  .IX Item "-mprefergot"
! When generating position-independent code, emit function calls using
  the Global Offset Table instead of the Procedure Linkage Table.
! .IP "\fB\-musermode\fR" 4
  .IX Item "-musermode"
  .PD 0
! .IP "\fB\-mno\-usermode\fR" 4
  .IX Item "-mno-usermode"
  .PD
! Don't allow (allow) the compiler generating privileged mode code.  Specifying
  \&\fB\-musermode\fR also implies \fB\-mno\-inline\-ic_invalidate\fR if the
  inlined code would not work in user mode.  \fB\-musermode\fR is the default
  when the target is \f(CW\*(C`sh*\-*\-linux*\*(C'\fR.  If the target is SH1* or SH2*
  \&\fB\-musermode\fR has no effect, since there is no user mode.
! .IP "\fB\-multcost=\fR\fInumber\fR" 4
  .IX Item "-multcost=number"
  Set the cost to assume for a multiply insn.
! .IP "\fB\-mdiv=\fR\fIstrategy\fR" 4
  .IX Item "-mdiv=strategy"
  Set the division strategy to be used for integer division operations.
  \&\fIstrategy\fR can be one of:
  .RS 4
! .IP "\fBcall\-div1\fR" 4
  .IX Item "call-div1"
! Calls a library function that uses the single-step division instruction
  \&\f(CW\*(C`div1\*(C'\fR to perform the operation.  Division by zero calculates an
! unspecified result and does not trap.  This is the default except for \s-1SH4,
! SH2A\s0 and SHcompact.
! .IP "\fBcall-fp\fR" 4
  .IX Item "call-fp"
  Calls a library function that performs the operation in double precision
! floating point.  Division by zero causes a floating-point exception.  This is
! the default for SHcompact with \s-1FPU.\s0  Specifying this for targets that do not
! have a double precision \s-1FPU\s0 defaults to \f(CW\*(C`call\-div1\*(C'\fR.
! .IP "\fBcall-table\fR" 4
  .IX Item "call-table"
  Calls a library function that uses a lookup table for small divisors and
  the \f(CW\*(C`div1\*(C'\fR instruction with case distinction for larger divisors.  Division
  by zero calculates an unspecified result and does not trap.  This is the default
! for \s-1SH4.\s0  Specifying this for targets that do not have dynamic shift
  instructions defaults to \f(CW\*(C`call\-div1\*(C'\fR.
  .RE
  .RS 4
  .Sp
  When a division strategy has not been specified the default strategy is
! selected based on the current target.  For \s-1SH2A\s0 the default strategy is to
  use the \f(CW\*(C`divs\*(C'\fR and \f(CW\*(C`divu\*(C'\fR instructions instead of library function
  calls.
  .RE
! .IP "\fB\-maccumulate\-outgoing\-args\fR" 4
  .IX Item "-maccumulate-outgoing-args"
  Reserve space once for outgoing arguments in the function prologue rather
  than around each call.  Generally beneficial for performance and size.  Also
  needed for unwinding to avoid changing the stack frame around conditional code.
! .IP "\fB\-mdivsi3_libfunc=\fR\fIname\fR" 4
  .IX Item "-mdivsi3_libfunc=name"
  Set the name of the library function used for 32\-bit signed division to
  \&\fIname\fR.
  This only affects the name used in the \fBcall\fR division strategies, and
  the compiler still expects the same sets of input/output/clobbered registers as
  if this option were not present.
! .IP "\fB\-mfixed\-range=\fR\fIregister-range\fR" 4
  .IX Item "-mfixed-range=register-range"
  Generate code treating the given register range as fixed registers.
  A fixed register is one that the register allocator cannot use.  This is
  useful when compiling kernel code.  A register range is specified as
  two registers separated by a dash.  Multiple register ranges can be
  specified separated by a comma.
! .IP "\fB\-mbranch\-cost=\fR\fInum\fR" 4
  .IX Item "-mbranch-cost=num"
  Assume \fInum\fR to be the cost for a branch instruction.  Higher numbers
! make the compiler try to generate more branch-free code if possible.
  If not specified the value is selected depending on the processor type that
  is being compiled for.
! .IP "\fB\-mzdcbranch\fR" 4
  .IX Item "-mzdcbranch"
  .PD 0
! .IP "\fB\-mno\-zdcbranch\fR" 4
  .IX Item "-mno-zdcbranch"
  .PD
  Assume (do not assume) that zero displacement conditional branch instructions
  \&\f(CW\*(C`bt\*(C'\fR and \f(CW\*(C`bf\*(C'\fR are fast.  If \fB\-mzdcbranch\fR is specified, the
  compiler prefers zero displacement branch code sequences.  This is
! enabled by default when generating code for \s-1SH4\s0 and \s-1SH4A.\s0  It can be explicitly
  disabled by specifying \fB\-mno\-zdcbranch\fR.
! .IP "\fB\-mcbranch\-force\-delay\-slot\fR" 4
  .IX Item "-mcbranch-force-delay-slot"
  Force the usage of delay slots for conditional branches, which stuffs the delay
  slot with a \f(CW\*(C`nop\*(C'\fR if a suitable instruction cannot be found.  By default
  this option is disabled.  It can be enabled to work around hardware bugs as
! found in the original \s-1SH7055.\s0
! .IP "\fB\-mfused\-madd\fR" 4
  .IX Item "-mfused-madd"
  .PD 0
! .IP "\fB\-mno\-fused\-madd\fR" 4
  .IX Item "-mno-fused-madd"
  .PD
! Generate code that uses (does not use) the floating-point multiply and
  accumulate instructions.  These instructions are generated by default
! if hardware floating point is used.  The machine-dependent
! \&\fB\-mfused\-madd\fR option is now mapped to the machine-independent
  \&\fB\-ffp\-contract=fast\fR option, and \fB\-mno\-fused\-madd\fR is
  mapped to \fB\-ffp\-contract=off\fR.
! .IP "\fB\-mfsca\fR" 4
  .IX Item "-mfsca"
  .PD 0
! .IP "\fB\-mno\-fsca\fR" 4
  .IX Item "-mno-fsca"
  .PD
  Allow or disallow the compiler to emit the \f(CW\*(C`fsca\*(C'\fR instruction for sine
  and cosine approximations.  The option \fB\-mfsca\fR must be used in
  combination with \fB\-funsafe\-math\-optimizations\fR.  It is enabled by default
! when generating code for \s-1SH4A.\s0  Using \fB\-mno\-fsca\fR disables sine and cosine
  approximations even if \fB\-funsafe\-math\-optimizations\fR is in effect.
! .IP "\fB\-mfsrra\fR" 4
  .IX Item "-mfsrra"
  .PD 0
! .IP "\fB\-mno\-fsrra\fR" 4
  .IX Item "-mno-fsrra"
  .PD
  Allow or disallow the compiler to emit the \f(CW\*(C`fsrra\*(C'\fR instruction for
  reciprocal square root approximations.  The option \fB\-mfsrra\fR must be used
  in combination with \fB\-funsafe\-math\-optimizations\fR and
  \&\fB\-ffinite\-math\-only\fR.  It is enabled by default when generating code for
! \&\s-1SH4A.\s0  Using \fB\-mno\-fsrra\fR disables reciprocal square root approximations
  even if \fB\-funsafe\-math\-optimizations\fR and \fB\-ffinite\-math\-only\fR are
  in effect.
! .IP "\fB\-mpretend\-cmove\fR" 4
  .IX Item "-mpretend-cmove"
! Prefer zero-displacement conditional branches for conditional move instruction
! patterns.  This can result in faster code on the \s-1SH4\s0 processor.
! .IP "\fB\-mfdpic\fR" 4
  .IX Item "-mfdpic"
! Generate code using the \s-1FDPIC ABI.\s0
  .PP
  \fISolaris 2 Options\fR
  .IX Subsection "Solaris 2 Options"
  .PP
  These \fB\-m\fR options are supported on Solaris 2:
! .IP "\fB\-mclear\-hwcap\fR" 4
  .IX Item "-mclear-hwcap"
  \&\fB\-mclear\-hwcap\fR tells the compiler to remove the hardware
  capabilities generated by the Solaris assembler.  This is only necessary
! when object files use \s-1ISA\s0 extensions not supported by the current
  machine, but check at runtime whether or not to use them.
! .IP "\fB\-mimpure\-text\fR" 4
  .IX Item "-mimpure-text"
  \&\fB\-mimpure\-text\fR, used in addition to \fB\-shared\fR, tells
  the compiler to not pass \fB\-z text\fR to the linker when linking a
! shared object.  Using this option, you can link position-dependent
  code into a shared object.
  .Sp
! \&\fB\-mimpure\-text\fR suppresses the \*(L"relocations remain against
! allocatable but non-writable sections\*(R" linker error message.
! However, the necessary relocations trigger copy-on-write, and the
  shared object is not actually shared across processes.  Instead of
  using \fB\-mimpure\-text\fR, you should compile all source code with
  \&\fB\-fpic\fR or \fB\-fPIC\fR.
  .PP
  These switches are supported in addition to the above on Solaris 2:
! .IP "\fB\-pthreads\fR" 4
  .IX Item "-pthreads"
  This is a synonym for \fB\-pthread\fR.
  .PP
! \fI\s-1SPARC\s0 Options\fR
  .IX Subsection "SPARC Options"
  .PP
! These \fB\-m\fR options are supported on the \s-1SPARC:\s0
! .IP "\fB\-mno\-app\-regs\fR" 4
  .IX Item "-mno-app-regs"
  .PD 0
! .IP "\fB\-mapp\-regs\fR" 4
  .IX Item "-mapp-regs"
  .PD
  Specify \fB\-mapp\-regs\fR to generate output using the global registers
! 2 through 4, which the \s-1SPARC SVR4 ABI\s0 reserves for applications.  Like the
  global register 1, each global register 2 through 4 is then treated as an
  allocable register that is clobbered by function calls.  This is the default.
  .Sp
! To be fully \s-1SVR4\s0 ABI-compliant at the cost of some performance loss,
  specify \fB\-mno\-app\-regs\fR.  You should compile libraries and system
  software with this option.
! .IP "\fB\-mflat\fR" 4
  .IX Item "-mflat"
  .PD 0
! .IP "\fB\-mno\-flat\fR" 4
  .IX Item "-mno-flat"
  .PD
  With \fB\-mflat\fR, the compiler does not generate save/restore instructions
! and uses a \*(L"flat\*(R" or single register window model.  This model is compatible
  with the regular register window model.  The local registers and the input
! registers (0\-\-5) are still treated as \*(L"call-saved\*(R" registers and are
  saved on the stack as needed.
  .Sp
  With \fB\-mno\-flat\fR (the default), the compiler generates save/restore
  instructions (except for leaf functions).  This is the normal operating mode.
! .IP "\fB\-mfpu\fR" 4
  .IX Item "-mfpu"
  .PD 0
! .IP "\fB\-mhard\-float\fR" 4
  .IX Item "-mhard-float"
  .PD
! Generate output containing floating-point instructions.  This is the
  default.
! .IP "\fB\-mno\-fpu\fR" 4
  .IX Item "-mno-fpu"
  .PD 0
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  .PD
  Generate output containing library calls for floating point.
! \&\fBWarning:\fR the requisite libraries are not available for all \s-1SPARC\s0
! targets.  Normally the facilities of the machine's usual C compiler are
! used, but this cannot be done directly in cross-compilation.  You must make
  your own arrangements to provide suitable library functions for
! cross-compilation.  The embedded targets \fBsparc\-*\-aout\fR and
! \&\fBsparclite\-*\-*\fR do provide software floating-point support.
  .Sp
  \&\fB\-msoft\-float\fR changes the calling convention in the output file;
  therefore, it is only useful if you compile \fIall\fR of a program with
  this option.  In particular, you need to compile \fIlibgcc.a\fR, the
! library that comes with \s-1GCC,\s0 with \fB\-msoft\-float\fR in order for
  this to work.
! .IP "\fB\-mhard\-quad\-float\fR" 4
  .IX Item "-mhard-quad-float"
! Generate output containing quad-word (long double) floating-point
  instructions.
! .IP "\fB\-msoft\-quad\-float\fR" 4
  .IX Item "-msoft-quad-float"
! Generate output containing library calls for quad-word (long double)
! floating-point instructions.  The functions called are those specified
! in the \s-1SPARC ABI.\s0  This is the default.
  .Sp
! As of this writing, there are no \s-1SPARC\s0 implementations that have hardware
! support for the quad-word floating-point instructions.  They all invoke
  a trap handler for one of these instructions, and then the trap handler
  emulates the effect of the instruction.  Because of the trap handler overhead,
! this is much slower than calling the \s-1ABI\s0 library routines.  Thus the
  \&\fB\-msoft\-quad\-float\fR option is the default.
! .IP "\fB\-mno\-unaligned\-doubles\fR" 4
  .IX Item "-mno-unaligned-doubles"
  .PD 0
! .IP "\fB\-munaligned\-doubles\fR" 4
  .IX Item "-munaligned-doubles"
  .PD
  Assume that doubles have 8\-byte alignment.  This is the default.
  .Sp
! With \fB\-munaligned\-doubles\fR, \s-1GCC\s0 assumes that doubles have 8\-byte
  alignment only if they are contained in another type, or if they have an
  absolute address.  Otherwise, it assumes they have 4\-byte alignment.
  Specifying this option avoids some rare compatibility problems with code
  generated by other compilers.  It is not the default because it results
! in a performance loss, especially for floating-point code.
! .IP "\fB\-muser\-mode\fR" 4
  .IX Item "-muser-mode"
  .PD 0
! .IP "\fB\-mno\-user\-mode\fR" 4
  .IX Item "-mno-user-mode"
  .PD
  Do not generate code that can only run in supervisor mode.  This is relevant
! only for the \f(CW\*(C`casa\*(C'\fR instruction emitted for the \s-1LEON3\s0 processor.  This
  is the default.
! .IP "\fB\-mfaster\-structs\fR" 4
  .IX Item "-mfaster-structs"
  .PD 0
! .IP "\fB\-mno\-faster\-structs\fR" 4
  .IX Item "-mno-faster-structs"
  .PD
  With \fB\-mfaster\-structs\fR, the compiler assumes that structures
  should have 8\-byte alignment.  This enables the use of pairs of
  \&\f(CW\*(C`ldd\*(C'\fR and \f(CW\*(C`std\*(C'\fR instructions for copies in structure
  assignment, in place of twice as many \f(CW\*(C`ld\*(C'\fR and \f(CW\*(C`st\*(C'\fR pairs.
! However, the use of this changed alignment directly violates the \s-1SPARC
! ABI.\s0  Thus, it's intended only for use on targets where the developer
  acknowledges that their resulting code is not directly in line with
! the rules of the \s-1ABI.\s0
! .IP "\fB\-mstd\-struct\-return\fR" 4
  .IX Item "-mstd-struct-return"
  .PD 0
! .IP "\fB\-mno\-std\-struct\-return\fR" 4
  .IX Item "-mno-std-struct-return"
  .PD
  With \fB\-mstd\-struct\-return\fR, the compiler generates checking code
  in functions returning structures or unions to detect size mismatches
! between the two sides of function calls, as per the 32\-bit \s-1ABI.\s0
  .Sp
  The default is \fB\-mno\-std\-struct\-return\fR.  This option has no effect
  in 64\-bit mode.
! .IP "\fB\-mcpu=\fR\fIcpu_type\fR" 4
  .IX Item "-mcpu=cpu_type"
  Set the instruction set, register set, and instruction scheduling parameters
  for machine type \fIcpu_type\fR.  Supported values for \fIcpu_type\fR are
--- 32897,33200 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-mtas\fR 4
  .IX Item "-mtas"
  Generate the \f(CW\*(C`tas.b\*(C'\fR opcode for \f(CW\*(C`_\|_atomic_test_and_set\*(C'\fR.
  Notice that depending on the particular hardware and software configuration
  this can degrade overall performance due to the operand cache line flushes
! that are implied by the \f(CW\*(C`tas.b\*(C'\fR instruction.  On multi\-core SH4A
  processors the \f(CW\*(C`tas.b\*(C'\fR instruction must be used with caution since it
  can result in data corruption for certain cache configurations.
! .IP \fB\-mprefergot\fR 4
  .IX Item "-mprefergot"
! When generating position\-independent code, emit function calls using
  the Global Offset Table instead of the Procedure Linkage Table.
! .IP \fB\-musermode\fR 4
  .IX Item "-musermode"
  .PD 0
! .IP \fB\-mno\-usermode\fR 4
  .IX Item "-mno-usermode"
  .PD
! Don\*(Aqt allow (allow) the compiler generating privileged mode code.  Specifying
  \&\fB\-musermode\fR also implies \fB\-mno\-inline\-ic_invalidate\fR if the
  inlined code would not work in user mode.  \fB\-musermode\fR is the default
  when the target is \f(CW\*(C`sh*\-*\-linux*\*(C'\fR.  If the target is SH1* or SH2*
  \&\fB\-musermode\fR has no effect, since there is no user mode.
! .IP \fB\-multcost=\fR\fInumber\fR 4
  .IX Item "-multcost=number"
  Set the cost to assume for a multiply insn.
! .IP \fB\-mdiv=\fR\fIstrategy\fR 4
  .IX Item "-mdiv=strategy"
  Set the division strategy to be used for integer division operations.
  \&\fIstrategy\fR can be one of:
  .RS 4
! .IP \fBcall\-div1\fR 4
  .IX Item "call-div1"
! Calls a library function that uses the single\-step division instruction
  \&\f(CW\*(C`div1\*(C'\fR to perform the operation.  Division by zero calculates an
! unspecified result and does not trap.  This is the default except for SH4,
! SH2A and SHcompact.
! .IP \fBcall\-fp\fR 4
  .IX Item "call-fp"
  Calls a library function that performs the operation in double precision
! floating point.  Division by zero causes a floating\-point exception.  This is
! the default for SHcompact with FPU.  Specifying this for targets that do not
! have a double precision FPU defaults to \f(CW\*(C`call\-div1\*(C'\fR.
! .IP \fBcall\-table\fR 4
  .IX Item "call-table"
  Calls a library function that uses a lookup table for small divisors and
  the \f(CW\*(C`div1\*(C'\fR instruction with case distinction for larger divisors.  Division
  by zero calculates an unspecified result and does not trap.  This is the default
! for SH4.  Specifying this for targets that do not have dynamic shift
  instructions defaults to \f(CW\*(C`call\-div1\*(C'\fR.
  .RE
  .RS 4
  .Sp
  When a division strategy has not been specified the default strategy is
! selected based on the current target.  For SH2A the default strategy is to
  use the \f(CW\*(C`divs\*(C'\fR and \f(CW\*(C`divu\*(C'\fR instructions instead of library function
  calls.
  .RE
! .IP \fB\-maccumulate\-outgoing\-args\fR 4
  .IX Item "-maccumulate-outgoing-args"
  Reserve space once for outgoing arguments in the function prologue rather
  than around each call.  Generally beneficial for performance and size.  Also
  needed for unwinding to avoid changing the stack frame around conditional code.
! .IP \fB\-mdivsi3_libfunc=\fR\fIname\fR 4
  .IX Item "-mdivsi3_libfunc=name"
  Set the name of the library function used for 32\-bit signed division to
  \&\fIname\fR.
  This only affects the name used in the \fBcall\fR division strategies, and
  the compiler still expects the same sets of input/output/clobbered registers as
  if this option were not present.
! .IP \fB\-mfixed\-range=\fR\fIregister\-range\fR 4
  .IX Item "-mfixed-range=register-range"
  Generate code treating the given register range as fixed registers.
  A fixed register is one that the register allocator cannot use.  This is
  useful when compiling kernel code.  A register range is specified as
  two registers separated by a dash.  Multiple register ranges can be
  specified separated by a comma.
! .IP \fB\-mbranch\-cost=\fR\fInum\fR 4
  .IX Item "-mbranch-cost=num"
  Assume \fInum\fR to be the cost for a branch instruction.  Higher numbers
! make the compiler try to generate more branch\-free code if possible.
  If not specified the value is selected depending on the processor type that
  is being compiled for.
! .IP \fB\-mzdcbranch\fR 4
  .IX Item "-mzdcbranch"
  .PD 0
! .IP \fB\-mno\-zdcbranch\fR 4
  .IX Item "-mno-zdcbranch"
  .PD
  Assume (do not assume) that zero displacement conditional branch instructions
  \&\f(CW\*(C`bt\*(C'\fR and \f(CW\*(C`bf\*(C'\fR are fast.  If \fB\-mzdcbranch\fR is specified, the
  compiler prefers zero displacement branch code sequences.  This is
! enabled by default when generating code for SH4 and SH4A.  It can be explicitly
  disabled by specifying \fB\-mno\-zdcbranch\fR.
! .IP \fB\-mcbranch\-force\-delay\-slot\fR 4
  .IX Item "-mcbranch-force-delay-slot"
  Force the usage of delay slots for conditional branches, which stuffs the delay
  slot with a \f(CW\*(C`nop\*(C'\fR if a suitable instruction cannot be found.  By default
  this option is disabled.  It can be enabled to work around hardware bugs as
! found in the original SH7055.
! .IP \fB\-mfused\-madd\fR 4
  .IX Item "-mfused-madd"
  .PD 0
! .IP \fB\-mno\-fused\-madd\fR 4
  .IX Item "-mno-fused-madd"
  .PD
! Generate code that uses (does not use) the floating\-point multiply and
  accumulate instructions.  These instructions are generated by default
! if hardware floating point is used.  The machine\-dependent
! \&\fB\-mfused\-madd\fR option is now mapped to the machine\-independent
  \&\fB\-ffp\-contract=fast\fR option, and \fB\-mno\-fused\-madd\fR is
  mapped to \fB\-ffp\-contract=off\fR.
! .IP \fB\-mfsca\fR 4
  .IX Item "-mfsca"
  .PD 0
! .IP \fB\-mno\-fsca\fR 4
  .IX Item "-mno-fsca"
  .PD
  Allow or disallow the compiler to emit the \f(CW\*(C`fsca\*(C'\fR instruction for sine
  and cosine approximations.  The option \fB\-mfsca\fR must be used in
  combination with \fB\-funsafe\-math\-optimizations\fR.  It is enabled by default
! when generating code for SH4A.  Using \fB\-mno\-fsca\fR disables sine and cosine
  approximations even if \fB\-funsafe\-math\-optimizations\fR is in effect.
! .IP \fB\-mfsrra\fR 4
  .IX Item "-mfsrra"
  .PD 0
! .IP \fB\-mno\-fsrra\fR 4
  .IX Item "-mno-fsrra"
  .PD
  Allow or disallow the compiler to emit the \f(CW\*(C`fsrra\*(C'\fR instruction for
  reciprocal square root approximations.  The option \fB\-mfsrra\fR must be used
  in combination with \fB\-funsafe\-math\-optimizations\fR and
  \&\fB\-ffinite\-math\-only\fR.  It is enabled by default when generating code for
! SH4A.  Using \fB\-mno\-fsrra\fR disables reciprocal square root approximations
  even if \fB\-funsafe\-math\-optimizations\fR and \fB\-ffinite\-math\-only\fR are
  in effect.
! .IP \fB\-mpretend\-cmove\fR 4
  .IX Item "-mpretend-cmove"
! Prefer zero\-displacement conditional branches for conditional move instruction
! patterns.  This can result in faster code on the SH4 processor.
! .IP \fB\-mfdpic\fR 4
  .IX Item "-mfdpic"
! Generate code using the FDPIC ABI.
  .PP
  \fISolaris 2 Options\fR
  .IX Subsection "Solaris 2 Options"
  .PP
  These \fB\-m\fR options are supported on Solaris 2:
! .IP \fB\-mclear\-hwcap\fR 4
  .IX Item "-mclear-hwcap"
  \&\fB\-mclear\-hwcap\fR tells the compiler to remove the hardware
  capabilities generated by the Solaris assembler.  This is only necessary
! when object files use ISA extensions not supported by the current
  machine, but check at runtime whether or not to use them.
! .IP \fB\-mimpure\-text\fR 4
  .IX Item "-mimpure-text"
  \&\fB\-mimpure\-text\fR, used in addition to \fB\-shared\fR, tells
  the compiler to not pass \fB\-z text\fR to the linker when linking a
! shared object.  Using this option, you can link position\-dependent
  code into a shared object.
  .Sp
! \&\fB\-mimpure\-text\fR suppresses the "relocations remain against
! allocatable but non\-writable sections" linker error message.
! However, the necessary relocations trigger copy\-on\-write, and the
  shared object is not actually shared across processes.  Instead of
  using \fB\-mimpure\-text\fR, you should compile all source code with
  \&\fB\-fpic\fR or \fB\-fPIC\fR.
  .PP
  These switches are supported in addition to the above on Solaris 2:
! .IP \fB\-pthreads\fR 4
  .IX Item "-pthreads"
  This is a synonym for \fB\-pthread\fR.
  .PP
! \fISPARC Options\fR
  .IX Subsection "SPARC Options"
  .PP
! These \fB\-m\fR options are supported on the SPARC:
! .IP \fB\-mno\-app\-regs\fR 4
  .IX Item "-mno-app-regs"
  .PD 0
! .IP \fB\-mapp\-regs\fR 4
  .IX Item "-mapp-regs"
  .PD
  Specify \fB\-mapp\-regs\fR to generate output using the global registers
! 2 through 4, which the SPARC SVR4 ABI reserves for applications.  Like the
  global register 1, each global register 2 through 4 is then treated as an
  allocable register that is clobbered by function calls.  This is the default.
  .Sp
! To be fully SVR4 ABI\-compliant at the cost of some performance loss,
  specify \fB\-mno\-app\-regs\fR.  You should compile libraries and system
  software with this option.
! .IP \fB\-mflat\fR 4
  .IX Item "-mflat"
  .PD 0
! .IP \fB\-mno\-flat\fR 4
  .IX Item "-mno-flat"
  .PD
  With \fB\-mflat\fR, the compiler does not generate save/restore instructions
! and uses a "flat" or single register window model.  This model is compatible
  with the regular register window model.  The local registers and the input
! registers (0\-\-5) are still treated as "call\-saved" registers and are
  saved on the stack as needed.
  .Sp
  With \fB\-mno\-flat\fR (the default), the compiler generates save/restore
  instructions (except for leaf functions).  This is the normal operating mode.
! .IP \fB\-mfpu\fR 4
  .IX Item "-mfpu"
  .PD 0
! .IP \fB\-mhard\-float\fR 4
  .IX Item "-mhard-float"
  .PD
! Generate output containing floating\-point instructions.  This is the
  default.
! .IP \fB\-mno\-fpu\fR 4
  .IX Item "-mno-fpu"
  .PD 0
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  .PD
  Generate output containing library calls for floating point.
! \&\fBWarning:\fR the requisite libraries are not available for all SPARC
! targets.  Normally the facilities of the machine\*(Aqs usual C compiler are
! used, but this cannot be done directly in cross\-compilation.  You must make
  your own arrangements to provide suitable library functions for
! cross\-compilation.  The embedded targets \fBsparc\-*\-aout\fR and
! \&\fBsparclite\-*\-*\fR do provide software floating\-point support.
  .Sp
  \&\fB\-msoft\-float\fR changes the calling convention in the output file;
  therefore, it is only useful if you compile \fIall\fR of a program with
  this option.  In particular, you need to compile \fIlibgcc.a\fR, the
! library that comes with GCC, with \fB\-msoft\-float\fR in order for
  this to work.
! .IP \fB\-mhard\-quad\-float\fR 4
  .IX Item "-mhard-quad-float"
! Generate output containing quad\-word (long double) floating\-point
  instructions.
! .IP \fB\-msoft\-quad\-float\fR 4
  .IX Item "-msoft-quad-float"
! Generate output containing library calls for quad\-word (long double)
! floating\-point instructions.  The functions called are those specified
! in the SPARC ABI.  This is the default.
  .Sp
! As of this writing, there are no SPARC implementations that have hardware
! support for the quad\-word floating\-point instructions.  They all invoke
  a trap handler for one of these instructions, and then the trap handler
  emulates the effect of the instruction.  Because of the trap handler overhead,
! this is much slower than calling the ABI library routines.  Thus the
  \&\fB\-msoft\-quad\-float\fR option is the default.
! .IP \fB\-mno\-unaligned\-doubles\fR 4
  .IX Item "-mno-unaligned-doubles"
  .PD 0
! .IP \fB\-munaligned\-doubles\fR 4
  .IX Item "-munaligned-doubles"
  .PD
  Assume that doubles have 8\-byte alignment.  This is the default.
  .Sp
! With \fB\-munaligned\-doubles\fR, GCC assumes that doubles have 8\-byte
  alignment only if they are contained in another type, or if they have an
  absolute address.  Otherwise, it assumes they have 4\-byte alignment.
  Specifying this option avoids some rare compatibility problems with code
  generated by other compilers.  It is not the default because it results
! in a performance loss, especially for floating\-point code.
! .IP \fB\-muser\-mode\fR 4
  .IX Item "-muser-mode"
  .PD 0
! .IP \fB\-mno\-user\-mode\fR 4
  .IX Item "-mno-user-mode"
  .PD
  Do not generate code that can only run in supervisor mode.  This is relevant
! only for the \f(CW\*(C`casa\*(C'\fR instruction emitted for the LEON3 processor.  This
  is the default.
! .IP \fB\-mfaster\-structs\fR 4
  .IX Item "-mfaster-structs"
  .PD 0
! .IP \fB\-mno\-faster\-structs\fR 4
  .IX Item "-mno-faster-structs"
  .PD
  With \fB\-mfaster\-structs\fR, the compiler assumes that structures
  should have 8\-byte alignment.  This enables the use of pairs of
  \&\f(CW\*(C`ldd\*(C'\fR and \f(CW\*(C`std\*(C'\fR instructions for copies in structure
  assignment, in place of twice as many \f(CW\*(C`ld\*(C'\fR and \f(CW\*(C`st\*(C'\fR pairs.
! However, the use of this changed alignment directly violates the SPARC
! ABI.  Thus, it\*(Aqs intended only for use on targets where the developer
  acknowledges that their resulting code is not directly in line with
! the rules of the ABI.
! .IP \fB\-mstd\-struct\-return\fR 4
  .IX Item "-mstd-struct-return"
  .PD 0
! .IP \fB\-mno\-std\-struct\-return\fR 4
  .IX Item "-mno-std-struct-return"
  .PD
  With \fB\-mstd\-struct\-return\fR, the compiler generates checking code
  in functions returning structures or unions to detect size mismatches
! between the two sides of function calls, as per the 32\-bit ABI.
  .Sp
  The default is \fB\-mno\-std\-struct\-return\fR.  This option has no effect
  in 64\-bit mode.
! .IP \fB\-mcpu=\fR\fIcpu_type\fR 4
  .IX Item "-mcpu=cpu_type"
  Set the instruction set, register set, and instruction scheduling parameters
  for machine type \fIcpu_type\fR.  Supported values for \fIcpu_type\fR are
*************** for machine type \fIcpu_type\fR.  Suppor
*** 33272,33278 ****
  .Sp
  Native Solaris and GNU/Linux toolchains also support the value \fBnative\fR,
  which selects the best architecture option for the host processor.
! \&\fB\-mcpu=native\fR has no effect if \s-1GCC\s0 does not recognize
  the processor.
  .Sp
  Default instruction scheduling parameters are used for values that select
--- 33207,33213 ----
  .Sp
  Native Solaris and GNU/Linux toolchains also support the value \fBnative\fR,
  which selects the best architecture option for the host processor.
! \&\fB\-mcpu=native\fR has no effect if GCC does not recognize
  the processor.
  .Sp
  Default instruction scheduling parameters are used for values that select
*************** an architecture and not an implementatio
*** 33282,33336 ****
  Here is a list of each supported architecture and their supported
  implementations.
  .RS 4
! .IP "v7" 4
  .IX Item "v7"
  cypress, leon3v7
! .IP "v8" 4
  .IX Item "v8"
  supersparc, hypersparc, leon, leon3, leon5
! .IP "sparclite" 4
  .IX Item "sparclite"
  f930, f934, sparclite86x
! .IP "sparclet" 4
  .IX Item "sparclet"
  tsc701
! .IP "v9" 4
  .IX Item "v9"
  ultrasparc, ultrasparc3, niagara, niagara2, niagara3, niagara4,
  niagara7, m8
  .RE
  .RS 4
  .Sp
! By default (unless configured otherwise), \s-1GCC\s0 generates code for the V7
! variant of the \s-1SPARC\s0 architecture.  With \fB\-mcpu=cypress\fR, the compiler
! additionally optimizes it for the Cypress \s-1CY7C602\s0 chip, as used in the
  SPARCStation/SPARCServer 3xx series.  This is also appropriate for the older
! SPARCStation 1, 2, \s-1IPX\s0 etc.
  .Sp
! With \fB\-mcpu=v8\fR, \s-1GCC\s0 generates code for the V8 variant of the \s-1SPARC\s0
  architecture.  The only difference from V7 code is that the compiler emits
! the integer multiply and integer divide instructions which exist in \s-1SPARC\-V8\s0
! but not in \s-1SPARC\-V7.\s0  With \fB\-mcpu=supersparc\fR, the compiler additionally
  optimizes it for the SuperSPARC chip, as used in the SPARCStation 10, 1000 and
  2000 series.
  .Sp
! With \fB\-mcpu=sparclite\fR, \s-1GCC\s0 generates code for the SPARClite variant of
! the \s-1SPARC\s0 architecture.  This adds the integer multiply, integer divide step
! and scan (\f(CW\*(C`ffs\*(C'\fR) instructions which exist in SPARClite but not in \s-1SPARC\-V7.\s0
  With \fB\-mcpu=f930\fR, the compiler additionally optimizes it for the
! Fujitsu \s-1MB86930\s0 chip, which is the original SPARClite, with no \s-1FPU.\s0  With
  \&\fB\-mcpu=f934\fR, the compiler additionally optimizes it for the Fujitsu
! \&\s-1MB86934\s0 chip, which is the more recent SPARClite with \s-1FPU.\s0
  .Sp
! With \fB\-mcpu=sparclet\fR, \s-1GCC\s0 generates code for the SPARClet variant of
! the \s-1SPARC\s0 architecture.  This adds the integer multiply, multiply/accumulate,
  integer divide step and scan (\f(CW\*(C`ffs\*(C'\fR) instructions which exist in SPARClet
! but not in \s-1SPARC\-V7.\s0  With \fB\-mcpu=tsc701\fR, the compiler additionally
! optimizes it for the \s-1TEMIC\s0 SPARClet chip.
  .Sp
! With \fB\-mcpu=v9\fR, \s-1GCC\s0 generates code for the V9 variant of the \s-1SPARC\s0
! architecture.  This adds 64\-bit integer and floating-point move instructions,
! 3 additional floating-point condition code registers and conditional move
  instructions.  With \fB\-mcpu=ultrasparc\fR, the compiler additionally
  optimizes it for the Sun UltraSPARC I/II/IIi chips.  With
  \&\fB\-mcpu=ultrasparc3\fR, the compiler additionally optimizes it for the
--- 33217,33271 ----
  Here is a list of each supported architecture and their supported
  implementations.
  .RS 4
! .IP v7 4
  .IX Item "v7"
  cypress, leon3v7
! .IP v8 4
  .IX Item "v8"
  supersparc, hypersparc, leon, leon3, leon5
! .IP sparclite 4
  .IX Item "sparclite"
  f930, f934, sparclite86x
! .IP sparclet 4
  .IX Item "sparclet"
  tsc701
! .IP v9 4
  .IX Item "v9"
  ultrasparc, ultrasparc3, niagara, niagara2, niagara3, niagara4,
  niagara7, m8
  .RE
  .RS 4
  .Sp
! By default (unless configured otherwise), GCC generates code for the V7
! variant of the SPARC architecture.  With \fB\-mcpu=cypress\fR, the compiler
! additionally optimizes it for the Cypress CY7C602 chip, as used in the
  SPARCStation/SPARCServer 3xx series.  This is also appropriate for the older
! SPARCStation 1, 2, IPX etc.
  .Sp
! With \fB\-mcpu=v8\fR, GCC generates code for the V8 variant of the SPARC
  architecture.  The only difference from V7 code is that the compiler emits
! the integer multiply and integer divide instructions which exist in SPARC\-V8
! but not in SPARC\-V7.  With \fB\-mcpu=supersparc\fR, the compiler additionally
  optimizes it for the SuperSPARC chip, as used in the SPARCStation 10, 1000 and
  2000 series.
  .Sp
! With \fB\-mcpu=sparclite\fR, GCC generates code for the SPARClite variant of
! the SPARC architecture.  This adds the integer multiply, integer divide step
! and scan (\f(CW\*(C`ffs\*(C'\fR) instructions which exist in SPARClite but not in SPARC\-V7.
  With \fB\-mcpu=f930\fR, the compiler additionally optimizes it for the
! Fujitsu MB86930 chip, which is the original SPARClite, with no FPU.  With
  \&\fB\-mcpu=f934\fR, the compiler additionally optimizes it for the Fujitsu
! MB86934 chip, which is the more recent SPARClite with FPU.
  .Sp
! With \fB\-mcpu=sparclet\fR, GCC generates code for the SPARClet variant of
! the SPARC architecture.  This adds the integer multiply, multiply/accumulate,
  integer divide step and scan (\f(CW\*(C`ffs\*(C'\fR) instructions which exist in SPARClet
! but not in SPARC\-V7.  With \fB\-mcpu=tsc701\fR, the compiler additionally
! optimizes it for the TEMIC SPARClet chip.
  .Sp
! With \fB\-mcpu=v9\fR, GCC generates code for the V9 variant of the SPARC
! architecture.  This adds 64\-bit integer and floating\-point move instructions,
! 3 additional floating\-point condition code registers and conditional move
  instructions.  With \fB\-mcpu=ultrasparc\fR, the compiler additionally
  optimizes it for the Sun UltraSPARC I/II/IIi chips.  With
  \&\fB\-mcpu=ultrasparc3\fR, the compiler additionally optimizes it for the
*************** additionally optimizes it for Sun UltraS
*** 33342,33351 ****
  UltraSPARC T3 chips.  With \fB\-mcpu=niagara4\fR, the compiler
  additionally optimizes it for Sun UltraSPARC T4 chips.  With
  \&\fB\-mcpu=niagara7\fR, the compiler additionally optimizes it for
! Oracle \s-1SPARC M7\s0 chips.  With \fB\-mcpu=m8\fR, the compiler
  additionally optimizes it for Oracle M8 chips.
  .RE
! .IP "\fB\-mtune=\fR\fIcpu_type\fR" 4
  .IX Item "-mtune=cpu_type"
  Set the instruction scheduling parameters for machine type
  \&\fIcpu_type\fR, but do not set the instruction set or register set that the
--- 33277,33286 ----
  UltraSPARC T3 chips.  With \fB\-mcpu=niagara4\fR, the compiler
  additionally optimizes it for Sun UltraSPARC T4 chips.  With
  \&\fB\-mcpu=niagara7\fR, the compiler additionally optimizes it for
! Oracle SPARC M7 chips.  With \fB\-mcpu=m8\fR, the compiler
  additionally optimizes it for Oracle M8 chips.
  .RE
! .IP \fB\-mtune=\fR\fIcpu_type\fR 4
  .IX Item "-mtune=cpu_type"
  Set the instruction scheduling parameters for machine type
  \&\fIcpu_type\fR, but do not set the instruction set or register set that the
*************** option \fB\-mcpu=\fR\fIcpu_type\fR does.
*** 33353,33585 ****
  .Sp
  The same values for \fB\-mcpu=\fR\fIcpu_type\fR can be used for
  \&\fB\-mtune=\fR\fIcpu_type\fR, but the only useful values are those
! that select a particular \s-1CPU\s0 implementation.  Those are
  \&\fBcypress\fR, \fBsupersparc\fR, \fBhypersparc\fR, \fBleon\fR,
  \&\fBleon3\fR, \fBleon3v7\fR, \fBleon5\fR, \fBf930\fR, \fBf934\fR,
  \&\fBsparclite86x\fR, \fBtsc701\fR, \fBultrasparc\fR,
  \&\fBultrasparc3\fR, \fBniagara\fR, \fBniagara2\fR, \fBniagara3\fR,
  \&\fBniagara4\fR, \fBniagara7\fR and \fBm8\fR.  With native Solaris
  and GNU/Linux toolchains, \fBnative\fR can also be used.
! .IP "\fB\-mv8plus\fR" 4
  .IX Item "-mv8plus"
  .PD 0
! .IP "\fB\-mno\-v8plus\fR" 4
  .IX Item "-mno-v8plus"
  .PD
! With \fB\-mv8plus\fR, \s-1GCC\s0 generates code for the \s-1SPARC\-V8+ ABI.\s0  The
! difference from the V8 \s-1ABI\s0 is that the global and out registers are
  considered 64 bits wide.  This is enabled by default on Solaris in 32\-bit
! mode for all \s-1SPARC\-V9\s0 processors.
! .IP "\fB\-mvis\fR" 4
  .IX Item "-mvis"
  .PD 0
! .IP "\fB\-mno\-vis\fR" 4
  .IX Item "-mno-vis"
  .PD
! With \fB\-mvis\fR, \s-1GCC\s0 generates code that takes advantage of the UltraSPARC
  Visual Instruction Set extensions.  The default is \fB\-mno\-vis\fR.
! .IP "\fB\-mvis2\fR" 4
  .IX Item "-mvis2"
  .PD 0
! .IP "\fB\-mno\-vis2\fR" 4
  .IX Item "-mno-vis2"
  .PD
! With \fB\-mvis2\fR, \s-1GCC\s0 generates code that takes advantage of
  version 2.0 of the UltraSPARC Visual Instruction Set extensions.  The
  default is \fB\-mvis2\fR when targeting a cpu that supports such
! instructions, such as UltraSPARC-III and later.  Setting \fB\-mvis2\fR
  also sets \fB\-mvis\fR.
! .IP "\fB\-mvis3\fR" 4
  .IX Item "-mvis3"
  .PD 0
! .IP "\fB\-mno\-vis3\fR" 4
  .IX Item "-mno-vis3"
  .PD
! With \fB\-mvis3\fR, \s-1GCC\s0 generates code that takes advantage of
  version 3.0 of the UltraSPARC Visual Instruction Set extensions.  The
  default is \fB\-mvis3\fR when targeting a cpu that supports such
  instructions, such as niagara\-3 and later.  Setting \fB\-mvis3\fR
  also sets \fB\-mvis2\fR and \fB\-mvis\fR.
! .IP "\fB\-mvis3b\fR" 4
  .IX Item "-mvis3b"
  .PD 0
! .IP "\fB\-mno\-vis3b\fR" 4
  .IX Item "-mno-vis3b"
  .PD
! With \fB\-mvis3b\fR, \s-1GCC\s0 generates code that takes advantage of
  version 3.0 of the UltraSPARC Visual Instruction Set extensions, plus
! the additional \s-1VIS\s0 instructions introduced in the Oracle \s-1SPARC\s0
  Architecture 2011. The default is \fB\-mvis3b\fR when targeting
  a cpu that supports such instructions, such as niagara\-7 and later.
  Setting \fB\-mvis3b\fR also sets \fB\-mvis3\fR, \fB\-mvis2\fR
  and \fB\-mvis\fR.
! .IP "\fB\-mvis4\fR" 4
  .IX Item "-mvis4"
  .PD 0
! .IP "\fB\-mno\-vis4\fR" 4
  .IX Item "-mno-vis4"
  .PD
! With \fB\-mvis4\fR, \s-1GCC\s0 generates code that takes advantage of
  version 4.0 of the UltraSPARC Visual Instruction Set extensions.  The
  default is \fB\-mvis4\fR when targeting a cpu that supports such
  instructions, such as niagara\-7 and later.  Setting \fB\-mvis4\fR
  also sets \fB\-mvis3b\fR, \fB\-mvis3\fR, \fB\-mvis2\fR and
  \&\fB\-mvis\fR.
! .IP "\fB\-mvis4b\fR" 4
  .IX Item "-mvis4b"
  .PD 0
! .IP "\fB\-mno\-vis4b\fR" 4
  .IX Item "-mno-vis4b"
  .PD
! With \fB\-mvis4b\fR, \s-1GCC\s0 generates code that takes advantage of
  version 4.0 of the UltraSPARC Visual Instruction Set extensions, plus
! the additional \s-1VIS\s0 instructions introduced in the Oracle \s-1SPARC\s0
  Architecture 2017.  The default is \fB\-mvis4b\fR when targeting a
  cpu that supports such instructions, such as m8 and later.  Setting
  \&\fB\-mvis4b\fR also sets \fB\-mvis4\fR, \fB\-mvis3b\fR,
  \&\fB\-mvis3\fR, \fB\-mvis2\fR and \fB\-mvis\fR.
! .IP "\fB\-mcbcond\fR" 4
  .IX Item "-mcbcond"
  .PD 0
! .IP "\fB\-mno\-cbcond\fR" 4
  .IX Item "-mno-cbcond"
  .PD
! With \fB\-mcbcond\fR, \s-1GCC\s0 generates code that takes advantage of the UltraSPARC
! Compare-and-Branch-on-Condition instructions.  The default is \fB\-mcbcond\fR
! when targeting a \s-1CPU\s0 that supports such instructions, such as Niagara\-4 and
  later.
! .IP "\fB\-mfmaf\fR" 4
  .IX Item "-mfmaf"
  .PD 0
! .IP "\fB\-mno\-fmaf\fR" 4
  .IX Item "-mno-fmaf"
  .PD
! With \fB\-mfmaf\fR, \s-1GCC\s0 generates code that takes advantage of the UltraSPARC
! Fused Multiply-Add Floating-point instructions.  The default is \fB\-mfmaf\fR
! when targeting a \s-1CPU\s0 that supports such instructions, such as Niagara\-3 and
  later.
! .IP "\fB\-mfsmuld\fR" 4
  .IX Item "-mfsmuld"
  .PD 0
! .IP "\fB\-mno\-fsmuld\fR" 4
  .IX Item "-mno-fsmuld"
  .PD
! With \fB\-mfsmuld\fR, \s-1GCC\s0 generates code that takes advantage of the
! Floating-point Multiply Single to Double (FsMULd) instruction.  The default is
! \&\fB\-mfsmuld\fR when targeting a \s-1CPU\s0 supporting the architecture versions V8
! or V9 with \s-1FPU\s0 except \fB\-mcpu=leon\fR.
! .IP "\fB\-mpopc\fR" 4
  .IX Item "-mpopc"
  .PD 0
! .IP "\fB\-mno\-popc\fR" 4
  .IX Item "-mno-popc"
  .PD
! With \fB\-mpopc\fR, \s-1GCC\s0 generates code that takes advantage of the UltraSPARC
  Population Count instruction.  The default is \fB\-mpopc\fR
! when targeting a \s-1CPU\s0 that supports such an instruction, such as Niagara\-2 and
  later.
! .IP "\fB\-msubxc\fR" 4
  .IX Item "-msubxc"
  .PD 0
! .IP "\fB\-mno\-subxc\fR" 4
  .IX Item "-mno-subxc"
  .PD
! With \fB\-msubxc\fR, \s-1GCC\s0 generates code that takes advantage of the UltraSPARC
! Subtract-Extended-with-Carry instruction.  The default is \fB\-msubxc\fR
! when targeting a \s-1CPU\s0 that supports such an instruction, such as Niagara\-7 and
  later.
! .IP "\fB\-mfix\-at697f\fR" 4
  .IX Item "-mfix-at697f"
! Enable the documented workaround for the single erratum of the Atmel \s-1AT697F\s0
! processor (which corresponds to erratum #13 of the \s-1AT697E\s0 processor).
! .IP "\fB\-mfix\-ut699\fR" 4
  .IX Item "-mfix-ut699"
! Enable the documented workarounds for the floating-point errata and the data
! cache nullify errata of the \s-1UT699\s0 processor.
! .IP "\fB\-mfix\-ut700\fR" 4
  .IX Item "-mfix-ut700"
! Enable the documented workaround for the back-to-back store errata of
! the \s-1UT699E/UT700\s0 processor.
! .IP "\fB\-mfix\-gr712rc\fR" 4
  .IX Item "-mfix-gr712rc"
! Enable the documented workaround for the back-to-back store errata of
! the \s-1GR712RC\s0 processor.
  .PP
  These \fB\-m\fR options are supported in addition to the above
! on \s-1SPARC\-V9\s0 processors in 64\-bit environments:
! .IP "\fB\-m32\fR" 4
  .IX Item "-m32"
  .PD 0
! .IP "\fB\-m64\fR" 4
  .IX Item "-m64"
  .PD
  Generate code for a 32\-bit or 64\-bit environment.
  The 32\-bit environment sets int, long and pointer to 32 bits.
  The 64\-bit environment sets int to 32 bits and long and pointer
  to 64 bits.
! .IP "\fB\-mcmodel=\fR\fIwhich\fR" 4
  .IX Item "-mcmodel=which"
  Set the code model to one of
  .RS 4
! .IP "\fBmedlow\fR" 4
  .IX Item "medlow"
  The Medium/Low code model: 64\-bit addresses, programs
  must be linked in the low 32 bits of memory.  Programs can be statically
  or dynamically linked.
! .IP "\fBmedmid\fR" 4
  .IX Item "medmid"
  The Medium/Middle code model: 64\-bit addresses, programs
  must be linked in the low 44 bits of memory, the text and data segments must
  be less than 2GB in size and the data segment must be located within 2GB of
  the text segment.
! .IP "\fBmedany\fR" 4
  .IX Item "medany"
  The Medium/Anywhere code model: 64\-bit addresses, programs
  may be linked anywhere in memory, the text and data segments must be less
  than 2GB in size and the data segment must be located within 2GB of the
  text segment.
! .IP "\fBembmedany\fR" 4
  .IX Item "embmedany"
  The Medium/Anywhere code model for embedded systems:
  64\-bit addresses, the text and data segments must be less than 2GB in
  size, both starting anywhere in memory (determined at link time).  The
  global register \f(CW%g4\fR points to the base of the data segment.  Programs
! are statically linked and \s-1PIC\s0 is not supported.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mmemory\-model=\fR\fImem-model\fR" 4
  .IX Item "-mmemory-model=mem-model"
  Set the memory model in force on the processor to one of
  .RS 4
! .IP "\fBdefault\fR" 4
  .IX Item "default"
  The default memory model for the processor and operating system.
! .IP "\fBrmo\fR" 4
  .IX Item "rmo"
  Relaxed Memory Order
! .IP "\fBpso\fR" 4
  .IX Item "pso"
  Partial Store Order
! .IP "\fBtso\fR" 4
  .IX Item "tso"
  Total Store Order
! .IP "\fBsc\fR" 4
  .IX Item "sc"
  Sequential Consistency
  .RE
  .RS 4
  .Sp
! These memory models are formally defined in Appendix D of the \s-1SPARC\-V9\s0
! architecture manual, as set in the processor's \f(CW\*(C`PSTATE.MM\*(C'\fR field.
  .RE
! .IP "\fB\-mstack\-bias\fR" 4
  .IX Item "-mstack-bias"
  .PD 0
! .IP "\fB\-mno\-stack\-bias\fR" 4
  .IX Item "-mno-stack-bias"
  .PD
! With \fB\-mstack\-bias\fR, \s-1GCC\s0 assumes that the stack pointer, and
  frame pointer if present, are offset by \-2047 which must be added back
  when making stack frame references.  This is the default in 64\-bit mode.
  Otherwise, assume no such offset is present.
--- 33288,33520 ----
  .Sp
  The same values for \fB\-mcpu=\fR\fIcpu_type\fR can be used for
  \&\fB\-mtune=\fR\fIcpu_type\fR, but the only useful values are those
! that select a particular CPU implementation.  Those are
  \&\fBcypress\fR, \fBsupersparc\fR, \fBhypersparc\fR, \fBleon\fR,
  \&\fBleon3\fR, \fBleon3v7\fR, \fBleon5\fR, \fBf930\fR, \fBf934\fR,
  \&\fBsparclite86x\fR, \fBtsc701\fR, \fBultrasparc\fR,
  \&\fBultrasparc3\fR, \fBniagara\fR, \fBniagara2\fR, \fBniagara3\fR,
  \&\fBniagara4\fR, \fBniagara7\fR and \fBm8\fR.  With native Solaris
  and GNU/Linux toolchains, \fBnative\fR can also be used.
! .IP \fB\-mv8plus\fR 4
  .IX Item "-mv8plus"
  .PD 0
! .IP \fB\-mno\-v8plus\fR 4
  .IX Item "-mno-v8plus"
  .PD
! With \fB\-mv8plus\fR, GCC generates code for the SPARC\-V8+ ABI.  The
! difference from the V8 ABI is that the global and out registers are
  considered 64 bits wide.  This is enabled by default on Solaris in 32\-bit
! mode for all SPARC\-V9 processors.
! .IP \fB\-mvis\fR 4
  .IX Item "-mvis"
  .PD 0
! .IP \fB\-mno\-vis\fR 4
  .IX Item "-mno-vis"
  .PD
! With \fB\-mvis\fR, GCC generates code that takes advantage of the UltraSPARC
  Visual Instruction Set extensions.  The default is \fB\-mno\-vis\fR.
! .IP \fB\-mvis2\fR 4
  .IX Item "-mvis2"
  .PD 0
! .IP \fB\-mno\-vis2\fR 4
  .IX Item "-mno-vis2"
  .PD
! With \fB\-mvis2\fR, GCC generates code that takes advantage of
  version 2.0 of the UltraSPARC Visual Instruction Set extensions.  The
  default is \fB\-mvis2\fR when targeting a cpu that supports such
! instructions, such as UltraSPARC\-III and later.  Setting \fB\-mvis2\fR
  also sets \fB\-mvis\fR.
! .IP \fB\-mvis3\fR 4
  .IX Item "-mvis3"
  .PD 0
! .IP \fB\-mno\-vis3\fR 4
  .IX Item "-mno-vis3"
  .PD
! With \fB\-mvis3\fR, GCC generates code that takes advantage of
  version 3.0 of the UltraSPARC Visual Instruction Set extensions.  The
  default is \fB\-mvis3\fR when targeting a cpu that supports such
  instructions, such as niagara\-3 and later.  Setting \fB\-mvis3\fR
  also sets \fB\-mvis2\fR and \fB\-mvis\fR.
! .IP \fB\-mvis3b\fR 4
  .IX Item "-mvis3b"
  .PD 0
! .IP \fB\-mno\-vis3b\fR 4
  .IX Item "-mno-vis3b"
  .PD
! With \fB\-mvis3b\fR, GCC generates code that takes advantage of
  version 3.0 of the UltraSPARC Visual Instruction Set extensions, plus
! the additional VIS instructions introduced in the Oracle SPARC
  Architecture 2011. The default is \fB\-mvis3b\fR when targeting
  a cpu that supports such instructions, such as niagara\-7 and later.
  Setting \fB\-mvis3b\fR also sets \fB\-mvis3\fR, \fB\-mvis2\fR
  and \fB\-mvis\fR.
! .IP \fB\-mvis4\fR 4
  .IX Item "-mvis4"
  .PD 0
! .IP \fB\-mno\-vis4\fR 4
  .IX Item "-mno-vis4"
  .PD
! With \fB\-mvis4\fR, GCC generates code that takes advantage of
  version 4.0 of the UltraSPARC Visual Instruction Set extensions.  The
  default is \fB\-mvis4\fR when targeting a cpu that supports such
  instructions, such as niagara\-7 and later.  Setting \fB\-mvis4\fR
  also sets \fB\-mvis3b\fR, \fB\-mvis3\fR, \fB\-mvis2\fR and
  \&\fB\-mvis\fR.
! .IP \fB\-mvis4b\fR 4
  .IX Item "-mvis4b"
  .PD 0
! .IP \fB\-mno\-vis4b\fR 4
  .IX Item "-mno-vis4b"
  .PD
! With \fB\-mvis4b\fR, GCC generates code that takes advantage of
  version 4.0 of the UltraSPARC Visual Instruction Set extensions, plus
! the additional VIS instructions introduced in the Oracle SPARC
  Architecture 2017.  The default is \fB\-mvis4b\fR when targeting a
  cpu that supports such instructions, such as m8 and later.  Setting
  \&\fB\-mvis4b\fR also sets \fB\-mvis4\fR, \fB\-mvis3b\fR,
  \&\fB\-mvis3\fR, \fB\-mvis2\fR and \fB\-mvis\fR.
! .IP \fB\-mcbcond\fR 4
  .IX Item "-mcbcond"
  .PD 0
! .IP \fB\-mno\-cbcond\fR 4
  .IX Item "-mno-cbcond"
  .PD
! With \fB\-mcbcond\fR, GCC generates code that takes advantage of the UltraSPARC
! Compare\-and\-Branch\-on\-Condition instructions.  The default is \fB\-mcbcond\fR
! when targeting a CPU that supports such instructions, such as Niagara\-4 and
  later.
! .IP \fB\-mfmaf\fR 4
  .IX Item "-mfmaf"
  .PD 0
! .IP \fB\-mno\-fmaf\fR 4
  .IX Item "-mno-fmaf"
  .PD
! With \fB\-mfmaf\fR, GCC generates code that takes advantage of the UltraSPARC
! Fused Multiply\-Add Floating\-point instructions.  The default is \fB\-mfmaf\fR
! when targeting a CPU that supports such instructions, such as Niagara\-3 and
  later.
! .IP \fB\-mfsmuld\fR 4
  .IX Item "-mfsmuld"
  .PD 0
! .IP \fB\-mno\-fsmuld\fR 4
  .IX Item "-mno-fsmuld"
  .PD
! With \fB\-mfsmuld\fR, GCC generates code that takes advantage of the
! Floating\-point Multiply Single to Double (FsMULd) instruction.  The default is
! \&\fB\-mfsmuld\fR when targeting a CPU supporting the architecture versions V8
! or V9 with FPU except \fB\-mcpu=leon\fR.
! .IP \fB\-mpopc\fR 4
  .IX Item "-mpopc"
  .PD 0
! .IP \fB\-mno\-popc\fR 4
  .IX Item "-mno-popc"
  .PD
! With \fB\-mpopc\fR, GCC generates code that takes advantage of the UltraSPARC
  Population Count instruction.  The default is \fB\-mpopc\fR
! when targeting a CPU that supports such an instruction, such as Niagara\-2 and
  later.
! .IP \fB\-msubxc\fR 4
  .IX Item "-msubxc"
  .PD 0
! .IP \fB\-mno\-subxc\fR 4
  .IX Item "-mno-subxc"
  .PD
! With \fB\-msubxc\fR, GCC generates code that takes advantage of the UltraSPARC
! Subtract\-Extended\-with\-Carry instruction.  The default is \fB\-msubxc\fR
! when targeting a CPU that supports such an instruction, such as Niagara\-7 and
  later.
! .IP \fB\-mfix\-at697f\fR 4
  .IX Item "-mfix-at697f"
! Enable the documented workaround for the single erratum of the Atmel AT697F
! processor (which corresponds to erratum #13 of the AT697E processor).
! .IP \fB\-mfix\-ut699\fR 4
  .IX Item "-mfix-ut699"
! Enable the documented workarounds for the floating\-point errata and the data
! cache nullify errata of the UT699 processor.
! .IP \fB\-mfix\-ut700\fR 4
  .IX Item "-mfix-ut700"
! Enable the documented workaround for the back\-to\-back store errata of
! the UT699E/UT700 processor.
! .IP \fB\-mfix\-gr712rc\fR 4
  .IX Item "-mfix-gr712rc"
! Enable the documented workaround for the back\-to\-back store errata of
! the GR712RC processor.
  .PP
  These \fB\-m\fR options are supported in addition to the above
! on SPARC\-V9 processors in 64\-bit environments:
! .IP \fB\-m32\fR 4
  .IX Item "-m32"
  .PD 0
! .IP \fB\-m64\fR 4
  .IX Item "-m64"
  .PD
  Generate code for a 32\-bit or 64\-bit environment.
  The 32\-bit environment sets int, long and pointer to 32 bits.
  The 64\-bit environment sets int to 32 bits and long and pointer
  to 64 bits.
! .IP \fB\-mcmodel=\fR\fIwhich\fR 4
  .IX Item "-mcmodel=which"
  Set the code model to one of
  .RS 4
! .IP \fBmedlow\fR 4
  .IX Item "medlow"
  The Medium/Low code model: 64\-bit addresses, programs
  must be linked in the low 32 bits of memory.  Programs can be statically
  or dynamically linked.
! .IP \fBmedmid\fR 4
  .IX Item "medmid"
  The Medium/Middle code model: 64\-bit addresses, programs
  must be linked in the low 44 bits of memory, the text and data segments must
  be less than 2GB in size and the data segment must be located within 2GB of
  the text segment.
! .IP \fBmedany\fR 4
  .IX Item "medany"
  The Medium/Anywhere code model: 64\-bit addresses, programs
  may be linked anywhere in memory, the text and data segments must be less
  than 2GB in size and the data segment must be located within 2GB of the
  text segment.
! .IP \fBembmedany\fR 4
  .IX Item "embmedany"
  The Medium/Anywhere code model for embedded systems:
  64\-bit addresses, the text and data segments must be less than 2GB in
  size, both starting anywhere in memory (determined at link time).  The
  global register \f(CW%g4\fR points to the base of the data segment.  Programs
! are statically linked and PIC is not supported.
  .RE
  .RS 4
  .RE
! .IP \fB\-mmemory\-model=\fR\fImem\-model\fR 4
  .IX Item "-mmemory-model=mem-model"
  Set the memory model in force on the processor to one of
  .RS 4
! .IP \fBdefault\fR 4
  .IX Item "default"
  The default memory model for the processor and operating system.
! .IP \fBrmo\fR 4
  .IX Item "rmo"
  Relaxed Memory Order
! .IP \fBpso\fR 4
  .IX Item "pso"
  Partial Store Order
! .IP \fBtso\fR 4
  .IX Item "tso"
  Total Store Order
! .IP \fBsc\fR 4
  .IX Item "sc"
  Sequential Consistency
  .RE
  .RS 4
  .Sp
! These memory models are formally defined in Appendix D of the SPARC\-V9
! architecture manual, as set in the processor\*(Aqs \f(CW\*(C`PSTATE.MM\*(C'\fR field.
  .RE
! .IP \fB\-mstack\-bias\fR 4
  .IX Item "-mstack-bias"
  .PD 0
! .IP \fB\-mno\-stack\-bias\fR 4
  .IX Item "-mno-stack-bias"
  .PD
! With \fB\-mstack\-bias\fR, GCC assumes that the stack pointer, and
  frame pointer if present, are offset by \-2047 which must be added back
  when making stack frame references.  This is the default in 64\-bit mode.
  Otherwise, assume no such offset is present.
*************** Otherwise, assume no such offset is pres
*** 33589,33611 ****
  .PP
  These additional options are available on System V Release 4 for
  compatibility with other compilers on those systems:
! .IP "\fB\-G\fR" 4
  .IX Item "-G"
  Create a shared object.
  It is recommended that \fB\-symbolic\fR or \fB\-shared\fR be used instead.
! .IP "\fB\-Qy\fR" 4
  .IX Item "-Qy"
  Identify the versions of each tool used by the compiler, in a
  \&\f(CW\*(C`.ident\*(C'\fR assembler directive in the output.
! .IP "\fB\-Qn\fR" 4
  .IX Item "-Qn"
  Refrain from adding \f(CW\*(C`.ident\*(C'\fR directives to the output file (this is
  the default).
! .IP "\fB\-YP,\fR\fIdirs\fR" 4
  .IX Item "-YP,dirs"
  Search the directories \fIdirs\fR, and no others, for libraries
  specified with \fB\-l\fR.
! .IP "\fB\-Ym,\fR\fIdir\fR" 4
  .IX Item "-Ym,dir"
  Look in the directory \fIdir\fR to find the M4 preprocessor.
  The assembler uses this option.
--- 33524,33546 ----
  .PP
  These additional options are available on System V Release 4 for
  compatibility with other compilers on those systems:
! .IP \fB\-G\fR 4
  .IX Item "-G"
  Create a shared object.
  It is recommended that \fB\-symbolic\fR or \fB\-shared\fR be used instead.
! .IP \fB\-Qy\fR 4
  .IX Item "-Qy"
  Identify the versions of each tool used by the compiler, in a
  \&\f(CW\*(C`.ident\*(C'\fR assembler directive in the output.
! .IP \fB\-Qn\fR 4
  .IX Item "-Qn"
  Refrain from adding \f(CW\*(C`.ident\*(C'\fR directives to the output file (this is
  the default).
! .IP \fB\-YP,\fR\fIdirs\fR 4
  .IX Item "-YP,dirs"
  Search the directories \fIdirs\fR, and no others, for libraries
  specified with \fB\-l\fR.
! .IP \fB\-Ym,\fR\fIdir\fR 4
  .IX Item "-Ym,dir"
  Look in the directory \fIdir\fR to find the M4 preprocessor.
  The assembler uses this option.
*************** The assembler uses this option.
*** 33614,33642 ****
  .IX Subsection "V850 Options"
  .PP
  These \fB\-m\fR options are defined for V850 implementations:
! .IP "\fB\-mlong\-calls\fR" 4
  .IX Item "-mlong-calls"
  .PD 0
! .IP "\fB\-mno\-long\-calls\fR" 4
  .IX Item "-mno-long-calls"
  .PD
  Treat all calls as being far away (near).  If calls are assumed to be
! far away, the compiler always loads the function's address into a
  register, and calls indirect through the pointer.
! .IP "\fB\-mno\-ep\fR" 4
  .IX Item "-mno-ep"
  .PD 0
! .IP "\fB\-mep\fR" 4
  .IX Item "-mep"
  .PD
  Do not optimize (do optimize) basic blocks that use the same index
  pointer 4 or more times to copy pointer into the \f(CW\*(C`ep\*(C'\fR register, and
  use the shorter \f(CW\*(C`sld\*(C'\fR and \f(CW\*(C`sst\*(C'\fR instructions.  The \fB\-mep\fR
  option is on by default if you optimize.
! .IP "\fB\-mno\-prolog\-function\fR" 4
  .IX Item "-mno-prolog-function"
  .PD 0
! .IP "\fB\-mprolog\-function\fR" 4
  .IX Item "-mprolog-function"
  .PD
  Do not use (do use) external functions to save and restore registers
--- 33549,33577 ----
  .IX Subsection "V850 Options"
  .PP
  These \fB\-m\fR options are defined for V850 implementations:
! .IP \fB\-mlong\-calls\fR 4
  .IX Item "-mlong-calls"
  .PD 0
! .IP \fB\-mno\-long\-calls\fR 4
  .IX Item "-mno-long-calls"
  .PD
  Treat all calls as being far away (near).  If calls are assumed to be
! far away, the compiler always loads the function\*(Aqs address into a
  register, and calls indirect through the pointer.
! .IP \fB\-mno\-ep\fR 4
  .IX Item "-mno-ep"
  .PD 0
! .IP \fB\-mep\fR 4
  .IX Item "-mep"
  .PD
  Do not optimize (do optimize) basic blocks that use the same index
  pointer 4 or more times to copy pointer into the \f(CW\*(C`ep\*(C'\fR register, and
  use the shorter \f(CW\*(C`sld\*(C'\fR and \f(CW\*(C`sst\*(C'\fR instructions.  The \fB\-mep\fR
  option is on by default if you optimize.
! .IP \fB\-mno\-prolog\-function\fR 4
  .IX Item "-mno-prolog-function"
  .PD 0
! .IP \fB\-mprolog\-function\fR 4
  .IX Item "-mprolog-function"
  .PD
  Do not use (do use) external functions to save and restore registers
*************** at the prologue and epilogue of a functi
*** 33644,33696 ****
  are slower, but use less code space if more than one function saves
  the same number of registers.  The \fB\-mprolog\-function\fR option
  is on by default if you optimize.
! .IP "\fB\-mspace\fR" 4
  .IX Item "-mspace"
  Try to make the code as small as possible.  At present, this just turns
  on the \fB\-mep\fR and \fB\-mprolog\-function\fR options.
! .IP "\fB\-mtda=\fR\fIn\fR" 4
  .IX Item "-mtda=n"
  Put static or global variables whose size is \fIn\fR bytes or less into
  the tiny data area that register \f(CW\*(C`ep\*(C'\fR points to.  The tiny data
  area can hold up to 256 bytes in total (128 bytes for byte references).
! .IP "\fB\-msda=\fR\fIn\fR" 4
  .IX Item "-msda=n"
  Put static or global variables whose size is \fIn\fR bytes or less into
  the small data area that register \f(CW\*(C`gp\*(C'\fR points to.  The small data
  area can hold up to 64 kilobytes.
! .IP "\fB\-mzda=\fR\fIn\fR" 4
  .IX Item "-mzda=n"
  Put static or global variables whose size is \fIn\fR bytes or less into
  the first 32 kilobytes of memory.
! .IP "\fB\-mv850\fR" 4
  .IX Item "-mv850"
  Specify that the target processor is the V850.
! .IP "\fB\-mv850e3v5\fR" 4
  .IX Item "-mv850e3v5"
  Specify that the target processor is the V850E3V5.  The preprocessor
  constant \f(CW\*(C`_\|_v850e3v5_\|_\*(C'\fR is defined if this option is used.
! .IP "\fB\-mv850e2v4\fR" 4
  .IX Item "-mv850e2v4"
  Specify that the target processor is the V850E3V5.  This is an alias for
  the \fB\-mv850e3v5\fR option.
! .IP "\fB\-mv850e2v3\fR" 4
  .IX Item "-mv850e2v3"
  Specify that the target processor is the V850E2V3.  The preprocessor
  constant \f(CW\*(C`_\|_v850e2v3_\|_\*(C'\fR is defined if this option is used.
! .IP "\fB\-mv850e2\fR" 4
  .IX Item "-mv850e2"
  Specify that the target processor is the V850E2.  The preprocessor
  constant \f(CW\*(C`_\|_v850e2_\|_\*(C'\fR is defined if this option is used.
! .IP "\fB\-mv850e1\fR" 4
  .IX Item "-mv850e1"
  Specify that the target processor is the V850E1.  The preprocessor
  constants \f(CW\*(C`_\|_v850e1_\|_\*(C'\fR and \f(CW\*(C`_\|_v850e_\|_\*(C'\fR are defined if
  this option is used.
! .IP "\fB\-mv850es\fR" 4
  .IX Item "-mv850es"
  Specify that the target processor is the V850ES.  This is an alias for
  the \fB\-mv850e1\fR option.
! .IP "\fB\-mv850e\fR" 4
  .IX Item "-mv850e"
  Specify that the target processor is the V850E.  The preprocessor
  constant \f(CW\*(C`_\|_v850e_\|_\*(C'\fR is defined if this option is used.
--- 33579,33631 ----
  are slower, but use less code space if more than one function saves
  the same number of registers.  The \fB\-mprolog\-function\fR option
  is on by default if you optimize.
! .IP \fB\-mspace\fR 4
  .IX Item "-mspace"
  Try to make the code as small as possible.  At present, this just turns
  on the \fB\-mep\fR and \fB\-mprolog\-function\fR options.
! .IP \fB\-mtda=\fR\fIn\fR 4
  .IX Item "-mtda=n"
  Put static or global variables whose size is \fIn\fR bytes or less into
  the tiny data area that register \f(CW\*(C`ep\*(C'\fR points to.  The tiny data
  area can hold up to 256 bytes in total (128 bytes for byte references).
! .IP \fB\-msda=\fR\fIn\fR 4
  .IX Item "-msda=n"
  Put static or global variables whose size is \fIn\fR bytes or less into
  the small data area that register \f(CW\*(C`gp\*(C'\fR points to.  The small data
  area can hold up to 64 kilobytes.
! .IP \fB\-mzda=\fR\fIn\fR 4
  .IX Item "-mzda=n"
  Put static or global variables whose size is \fIn\fR bytes or less into
  the first 32 kilobytes of memory.
! .IP \fB\-mv850\fR 4
  .IX Item "-mv850"
  Specify that the target processor is the V850.
! .IP \fB\-mv850e3v5\fR 4
  .IX Item "-mv850e3v5"
  Specify that the target processor is the V850E3V5.  The preprocessor
  constant \f(CW\*(C`_\|_v850e3v5_\|_\*(C'\fR is defined if this option is used.
! .IP \fB\-mv850e2v4\fR 4
  .IX Item "-mv850e2v4"
  Specify that the target processor is the V850E3V5.  This is an alias for
  the \fB\-mv850e3v5\fR option.
! .IP \fB\-mv850e2v3\fR 4
  .IX Item "-mv850e2v3"
  Specify that the target processor is the V850E2V3.  The preprocessor
  constant \f(CW\*(C`_\|_v850e2v3_\|_\*(C'\fR is defined if this option is used.
! .IP \fB\-mv850e2\fR 4
  .IX Item "-mv850e2"
  Specify that the target processor is the V850E2.  The preprocessor
  constant \f(CW\*(C`_\|_v850e2_\|_\*(C'\fR is defined if this option is used.
! .IP \fB\-mv850e1\fR 4
  .IX Item "-mv850e1"
  Specify that the target processor is the V850E1.  The preprocessor
  constants \f(CW\*(C`_\|_v850e1_\|_\*(C'\fR and \f(CW\*(C`_\|_v850e_\|_\*(C'\fR are defined if
  this option is used.
! .IP \fB\-mv850es\fR 4
  .IX Item "-mv850es"
  Specify that the target processor is the V850ES.  This is an alias for
  the \fB\-mv850e1\fR option.
! .IP \fB\-mv850e\fR 4
  .IX Item "-mv850e"
  Specify that the target processor is the V850E.  The preprocessor
  constant \f(CW\*(C`_\|_v850e_\|_\*(C'\fR is defined if this option is used.
*************** relevant \fB_\|_v850*_\|_\fR preprocesso
*** 33702,33810 ****
  .Sp
  The preprocessor constants \f(CW\*(C`_\|_v850\*(C'\fR and \f(CW\*(C`_\|_v851_\|_\*(C'\fR are always
  defined, regardless of which processor variant is the target.
! .IP "\fB\-mdisable\-callt\fR" 4
  .IX Item "-mdisable-callt"
  .PD 0
! .IP "\fB\-mno\-disable\-callt\fR" 4
  .IX Item "-mno-disable-callt"
  .PD
  This option suppresses generation of the \f(CW\*(C`CALLT\*(C'\fR instruction for the
  v850e, v850e1, v850e2, v850e2v3 and v850e3v5 flavors of the v850
  architecture.
  .Sp
! This option is enabled by default when the \s-1RH850 ABI\s0 is
  in use (see \fB\-mrh850\-abi\fR), and disabled by default when the
! \&\s-1GCC ABI\s0 is in use.  If \f(CW\*(C`CALLT\*(C'\fR instructions are being generated
  then the C preprocessor symbol \f(CW\*(C`_\|_V850_CALLT_\|_\*(C'\fR is defined.
! .IP "\fB\-mrelax\fR" 4
  .IX Item "-mrelax"
  .PD 0
! .IP "\fB\-mno\-relax\fR" 4
  .IX Item "-mno-relax"
  .PD
! Pass on (or do not pass on) the \fB\-mrelax\fR command-line option
  to the assembler.
! .IP "\fB\-mlong\-jumps\fR" 4
  .IX Item "-mlong-jumps"
  .PD 0
! .IP "\fB\-mno\-long\-jumps\fR" 4
  .IX Item "-mno-long-jumps"
  .PD
! Disable (or re-enable) the generation of PC-relative jump instructions.
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  .PD 0
! .IP "\fB\-mhard\-float\fR" 4
  .IX Item "-mhard-float"
  .PD
! Disable (or re-enable) the generation of hardware floating point
  instructions.  This option is only significant when the target
  architecture is \fBV850E2V3\fR or higher.  If hardware floating point
  instructions are being generated then the C preprocessor symbol
  \&\f(CW\*(C`_\|_FPU_OK_\|_\*(C'\fR is defined, otherwise the symbol
  \&\f(CW\*(C`_\|_NO_FPU_\|_\*(C'\fR is defined.
! .IP "\fB\-mloop\fR" 4
  .IX Item "-mloop"
! Enables the use of the e3v5 \s-1LOOP\s0 instruction.  The use of this
  instruction is not enabled by default when the e3v5 architecture is
  selected because its use is still experimental.
! .IP "\fB\-mrh850\-abi\fR" 4
  .IX Item "-mrh850-abi"
  .PD 0
! .IP "\fB\-mghs\fR" 4
  .IX Item "-mghs"
  .PD
! Enables support for the \s-1RH850\s0 version of the V850 \s-1ABI.\s0  This is the
! default.  With this version of the \s-1ABI\s0 the following rules apply:
  .RS 4
! .IP "*" 4
  Integer sized structures and unions are returned via a memory pointer
  rather than a register.
! .IP "*" 4
  Large structures and unions (more than 8 bytes in size) are passed by
  value.
! .IP "*" 4
  Functions are aligned to 16\-bit boundaries.
! .IP "*" 4
! The \fB\-m8byte\-align\fR command-line option is supported.
! .IP "*" 4
! The \fB\-mdisable\-callt\fR command-line option is enabled by
! default.  The \fB\-mno\-disable\-callt\fR command-line option is not
  supported.
  .RE
  .RS 4
  .Sp
! When this version of the \s-1ABI\s0 is enabled the C preprocessor symbol
  \&\f(CW\*(C`_\|_V850_RH850_ABI_\|_\*(C'\fR is defined.
  .RE
! .IP "\fB\-mgcc\-abi\fR" 4
  .IX Item "-mgcc-abi"
! Enables support for the old \s-1GCC\s0 version of the V850 \s-1ABI.\s0  With this
! version of the \s-1ABI\s0 the following rules apply:
  .RS 4
! .IP "*" 4
  Integer sized structures and unions are returned in register \f(CW\*(C`r10\*(C'\fR.
! .IP "*" 4
  Large structures and unions (more than 8 bytes in size) are passed by
  reference.
! .IP "*" 4
  Functions are aligned to 32\-bit boundaries, unless optimizing for
  size.
! .IP "*" 4
! The \fB\-m8byte\-align\fR command-line option is not supported.
! .IP "*" 4
! The \fB\-mdisable\-callt\fR command-line option is supported but not
  enabled by default.
  .RE
  .RS 4
  .Sp
! When this version of the \s-1ABI\s0 is enabled the C preprocessor symbol
  \&\f(CW\*(C`_\|_V850_GCC_ABI_\|_\*(C'\fR is defined.
  .RE
! .IP "\fB\-m8byte\-align\fR" 4
  .IX Item "-m8byte-align"
  .PD 0
! .IP "\fB\-mno\-8byte\-align\fR" 4
  .IX Item "-mno-8byte-align"
  .PD
  Enables support for \f(CW\*(C`double\*(C'\fR and \f(CW\*(C`long long\*(C'\fR types to be
--- 33637,33745 ----
  .Sp
  The preprocessor constants \f(CW\*(C`_\|_v850\*(C'\fR and \f(CW\*(C`_\|_v851_\|_\*(C'\fR are always
  defined, regardless of which processor variant is the target.
! .IP \fB\-mdisable\-callt\fR 4
  .IX Item "-mdisable-callt"
  .PD 0
! .IP \fB\-mno\-disable\-callt\fR 4
  .IX Item "-mno-disable-callt"
  .PD
  This option suppresses generation of the \f(CW\*(C`CALLT\*(C'\fR instruction for the
  v850e, v850e1, v850e2, v850e2v3 and v850e3v5 flavors of the v850
  architecture.
  .Sp
! This option is enabled by default when the RH850 ABI is
  in use (see \fB\-mrh850\-abi\fR), and disabled by default when the
! GCC ABI is in use.  If \f(CW\*(C`CALLT\*(C'\fR instructions are being generated
  then the C preprocessor symbol \f(CW\*(C`_\|_V850_CALLT_\|_\*(C'\fR is defined.
! .IP \fB\-mrelax\fR 4
  .IX Item "-mrelax"
  .PD 0
! .IP \fB\-mno\-relax\fR 4
  .IX Item "-mno-relax"
  .PD
! Pass on (or do not pass on) the \fB\-mrelax\fR command\-line option
  to the assembler.
! .IP \fB\-mlong\-jumps\fR 4
  .IX Item "-mlong-jumps"
  .PD 0
! .IP \fB\-mno\-long\-jumps\fR 4
  .IX Item "-mno-long-jumps"
  .PD
! Disable (or re\-enable) the generation of PC\-relative jump instructions.
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  .PD 0
! .IP \fB\-mhard\-float\fR 4
  .IX Item "-mhard-float"
  .PD
! Disable (or re\-enable) the generation of hardware floating point
  instructions.  This option is only significant when the target
  architecture is \fBV850E2V3\fR or higher.  If hardware floating point
  instructions are being generated then the C preprocessor symbol
  \&\f(CW\*(C`_\|_FPU_OK_\|_\*(C'\fR is defined, otherwise the symbol
  \&\f(CW\*(C`_\|_NO_FPU_\|_\*(C'\fR is defined.
! .IP \fB\-mloop\fR 4
  .IX Item "-mloop"
! Enables the use of the e3v5 LOOP instruction.  The use of this
  instruction is not enabled by default when the e3v5 architecture is
  selected because its use is still experimental.
! .IP \fB\-mrh850\-abi\fR 4
  .IX Item "-mrh850-abi"
  .PD 0
! .IP \fB\-mghs\fR 4
  .IX Item "-mghs"
  .PD
! Enables support for the RH850 version of the V850 ABI.  This is the
! default.  With this version of the ABI the following rules apply:
  .RS 4
! .IP * 4
  Integer sized structures and unions are returned via a memory pointer
  rather than a register.
! .IP * 4
  Large structures and unions (more than 8 bytes in size) are passed by
  value.
! .IP * 4
  Functions are aligned to 16\-bit boundaries.
! .IP * 4
! The \fB\-m8byte\-align\fR command\-line option is supported.
! .IP * 4
! The \fB\-mdisable\-callt\fR command\-line option is enabled by
! default.  The \fB\-mno\-disable\-callt\fR command\-line option is not
  supported.
  .RE
  .RS 4
  .Sp
! When this version of the ABI is enabled the C preprocessor symbol
  \&\f(CW\*(C`_\|_V850_RH850_ABI_\|_\*(C'\fR is defined.
  .RE
! .IP \fB\-mgcc\-abi\fR 4
  .IX Item "-mgcc-abi"
! Enables support for the old GCC version of the V850 ABI.  With this
! version of the ABI the following rules apply:
  .RS 4
! .IP * 4
  Integer sized structures and unions are returned in register \f(CW\*(C`r10\*(C'\fR.
! .IP * 4
  Large structures and unions (more than 8 bytes in size) are passed by
  reference.
! .IP * 4
  Functions are aligned to 32\-bit boundaries, unless optimizing for
  size.
! .IP * 4
! The \fB\-m8byte\-align\fR command\-line option is not supported.
! .IP * 4
! The \fB\-mdisable\-callt\fR command\-line option is supported but not
  enabled by default.
  .RE
  .RS 4
  .Sp
! When this version of the ABI is enabled the C preprocessor symbol
  \&\f(CW\*(C`_\|_V850_GCC_ABI_\|_\*(C'\fR is defined.
  .RE
! .IP \fB\-m8byte\-align\fR 4
  .IX Item "-m8byte-align"
  .PD 0
! .IP \fB\-mno\-8byte\-align\fR 4
  .IX Item "-mno-8byte-align"
  .PD
  Enables support for \f(CW\*(C`double\*(C'\fR and \f(CW\*(C`long long\*(C'\fR types to be
*************** aligned on 8\-byte boundaries.  The defa
*** 33812,33903 ****
  alignment of all objects to at most 4\-bytes.  When
  \&\fB\-m8byte\-align\fR is in effect the C preprocessor symbol
  \&\f(CW\*(C`_\|_V850_8BYTE_ALIGN_\|_\*(C'\fR is defined.
! .IP "\fB\-mbig\-switch\fR" 4
  .IX Item "-mbig-switch"
  Generate code suitable for big switch tables.  Use this option only if
  the assembler/linker complain about out of range branches within a switch
  table.
! .IP "\fB\-mapp\-regs\fR" 4
  .IX Item "-mapp-regs"
  This option causes r2 and r5 to be used in the code generated by
  the compiler.  This setting is the default.
! .IP "\fB\-mno\-app\-regs\fR" 4
  .IX Item "-mno-app-regs"
  This option causes r2 and r5 to be treated as fixed registers.
  .PP
! \fI\s-1VAX\s0 Options\fR
  .IX Subsection "VAX Options"
  .PP
! These \fB\-m\fR options are defined for the \s-1VAX:\s0
! .IP "\fB\-munix\fR" 4
  .IX Item "-munix"
  Do not output certain jump instructions (\f(CW\*(C`aobleq\*(C'\fR and so on)
! that the Unix assembler for the \s-1VAX\s0 cannot handle across long
  ranges.
! .IP "\fB\-mgnu\fR" 4
  .IX Item "-mgnu"
  Do output those jump instructions, on the assumption that the
! \&\s-1GNU\s0 assembler is being used.
! .IP "\fB\-md\fR" 4
  .IX Item "-md"
  .PD 0
! .IP "\fB\-md\-float\fR" 4
  .IX Item "-md-float"
  .PD
! Use the D_floating data format for double-precision floating-point numbers
  instead of G_floating.
! .IP "\fB\-mg\fR" 4
  .IX Item "-mg"
  .PD 0
! .IP "\fB\-mg\-float\fR" 4
  .IX Item "-mg-float"
  .PD
! Use the G_floating data format for double-precision floating-point numbers
  instead of D_floating.
! .IP "\fB\-mlra\fR" 4
  .IX Item "-mlra"
  .PD 0
! .IP "\fB\-mno\-lra\fR" 4
  .IX Item "-mno-lra"
  .PD
! Enable Local Register Allocation.  This is still experimental for the \s-1VAX,\s0
  so by default the compiler uses standard reload.
  .PP
  \fIVisium Options\fR
  .IX Subsection "Visium Options"
! .IP "\fB\-mdebug\fR" 4
  .IX Item "-mdebug"
! A program which performs file I/O and is destined to run on an \s-1MCM\s0 target
  should be linked with this option.  It causes the libraries libc.a and
  libdebug.a to be linked.  The program should be run on the target under
! the control of the \s-1GDB\s0 remote debugging stub.
! .IP "\fB\-msim\fR" 4
  .IX Item "-msim"
  A program which performs file I/O and is destined to run on the simulator
  should be linked with option.  This causes libraries libc.a and libsim.a to
  be linked.
! .IP "\fB\-mfpu\fR" 4
  .IX Item "-mfpu"
  .PD 0
! .IP "\fB\-mhard\-float\fR" 4
  .IX Item "-mhard-float"
  .PD
! Generate code containing floating-point instructions.  This is the
  default.
! .IP "\fB\-mno\-fpu\fR" 4
  .IX Item "-mno-fpu"
  .PD 0
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  .PD
! Generate code containing library calls for floating-point.
  .Sp
  \&\fB\-msoft\-float\fR changes the calling convention in the output file;
  therefore, it is only useful if you compile \fIall\fR of a program with
  this option.  In particular, you need to compile \fIlibgcc.a\fR, the
! library that comes with \s-1GCC,\s0 with \fB\-msoft\-float\fR in order for
  this to work.
! .IP "\fB\-mcpu=\fR\fIcpu_type\fR" 4
  .IX Item "-mcpu=cpu_type"
  Set the instruction set, register set, and instruction scheduling parameters
  for machine type \fIcpu_type\fR.  Supported values for \fIcpu_type\fR are
--- 33747,33838 ----
  alignment of all objects to at most 4\-bytes.  When
  \&\fB\-m8byte\-align\fR is in effect the C preprocessor symbol
  \&\f(CW\*(C`_\|_V850_8BYTE_ALIGN_\|_\*(C'\fR is defined.
! .IP \fB\-mbig\-switch\fR 4
  .IX Item "-mbig-switch"
  Generate code suitable for big switch tables.  Use this option only if
  the assembler/linker complain about out of range branches within a switch
  table.
! .IP \fB\-mapp\-regs\fR 4
  .IX Item "-mapp-regs"
  This option causes r2 and r5 to be used in the code generated by
  the compiler.  This setting is the default.
! .IP \fB\-mno\-app\-regs\fR 4
  .IX Item "-mno-app-regs"
  This option causes r2 and r5 to be treated as fixed registers.
  .PP
! \fIVAX Options\fR
  .IX Subsection "VAX Options"
  .PP
! These \fB\-m\fR options are defined for the VAX:
! .IP \fB\-munix\fR 4
  .IX Item "-munix"
  Do not output certain jump instructions (\f(CW\*(C`aobleq\*(C'\fR and so on)
! that the Unix assembler for the VAX cannot handle across long
  ranges.
! .IP \fB\-mgnu\fR 4
  .IX Item "-mgnu"
  Do output those jump instructions, on the assumption that the
! GNU assembler is being used.
! .IP \fB\-md\fR 4
  .IX Item "-md"
  .PD 0
! .IP \fB\-md\-float\fR 4
  .IX Item "-md-float"
  .PD
! Use the D_floating data format for double\-precision floating\-point numbers
  instead of G_floating.
! .IP \fB\-mg\fR 4
  .IX Item "-mg"
  .PD 0
! .IP \fB\-mg\-float\fR 4
  .IX Item "-mg-float"
  .PD
! Use the G_floating data format for double\-precision floating\-point numbers
  instead of D_floating.
! .IP \fB\-mlra\fR 4
  .IX Item "-mlra"
  .PD 0
! .IP \fB\-mno\-lra\fR 4
  .IX Item "-mno-lra"
  .PD
! Enable Local Register Allocation.  This is still experimental for the VAX,
  so by default the compiler uses standard reload.
  .PP
  \fIVisium Options\fR
  .IX Subsection "Visium Options"
! .IP \fB\-mdebug\fR 4
  .IX Item "-mdebug"
! A program which performs file I/O and is destined to run on an MCM target
  should be linked with this option.  It causes the libraries libc.a and
  libdebug.a to be linked.  The program should be run on the target under
! the control of the GDB remote debugging stub.
! .IP \fB\-msim\fR 4
  .IX Item "-msim"
  A program which performs file I/O and is destined to run on the simulator
  should be linked with option.  This causes libraries libc.a and libsim.a to
  be linked.
! .IP \fB\-mfpu\fR 4
  .IX Item "-mfpu"
  .PD 0
! .IP \fB\-mhard\-float\fR 4
  .IX Item "-mhard-float"
  .PD
! Generate code containing floating\-point instructions.  This is the
  default.
! .IP \fB\-mno\-fpu\fR 4
  .IX Item "-mno-fpu"
  .PD 0
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  .PD
! Generate code containing library calls for floating\-point.
  .Sp
  \&\fB\-msoft\-float\fR changes the calling convention in the output file;
  therefore, it is only useful if you compile \fIall\fR of a program with
  this option.  In particular, you need to compile \fIlibgcc.a\fR, the
! library that comes with GCC, with \fB\-msoft\-float\fR in order for
  this to work.
! .IP \fB\-mcpu=\fR\fIcpu_type\fR 4
  .IX Item "-mcpu=cpu_type"
  Set the instruction set, register set, and instruction scheduling parameters
  for machine type \fIcpu_type\fR.  Supported values for \fIcpu_type\fR are
*************** for machine type \fIcpu_type\fR.  Suppor
*** 33905,33947 ****
  .Sp
  \&\fBmcm\fR is a synonym of \fBgr5\fR present for backward compatibility.
  .Sp
! By default (unless configured otherwise), \s-1GCC\s0 generates code for the \s-1GR5\s0
  variant of the Visium architecture.
  .Sp
! With \fB\-mcpu=gr6\fR, \s-1GCC\s0 generates code for the \s-1GR6\s0 variant of the Visium
! architecture.  The only difference from \s-1GR5\s0 code is that the compiler will
  generate block move instructions.
! .IP "\fB\-mtune=\fR\fIcpu_type\fR" 4
  .IX Item "-mtune=cpu_type"
  Set the instruction scheduling parameters for machine type \fIcpu_type\fR,
  but do not set the instruction set or register set that the option
  \&\fB\-mcpu=\fR\fIcpu_type\fR would.
! .IP "\fB\-msv\-mode\fR" 4
  .IX Item "-msv-mode"
  Generate code for the supervisor mode, where there are no restrictions on
  the access to general registers.  This is the default.
! .IP "\fB\-muser\-mode\fR" 4
  .IX Item "-muser-mode"
  Generate code for the user mode, where the access to some general registers
! is forbidden: on the \s-1GR5,\s0 registers r24 to r31 cannot be accessed in this
! mode; on the \s-1GR6,\s0 only registers r29 to r31 are affected.
  .PP
! \fI\s-1VMS\s0 Options\fR
  .IX Subsection "VMS Options"
  .PP
! These \fB\-m\fR options are defined for the \s-1VMS\s0 implementations:
! .IP "\fB\-mvms\-return\-codes\fR" 4
  .IX Item "-mvms-return-codes"
! Return \s-1VMS\s0 condition codes from \f(CW\*(C`main\*(C'\fR. The default is to return POSIX-style
  condition (e.g. error) codes.
! .IP "\fB\-mdebug\-main=\fR\fIprefix\fR" 4
  .IX Item "-mdebug-main=prefix"
  Flag the first routine whose name starts with \fIprefix\fR as the main
  routine for the debugger.
! .IP "\fB\-mmalloc64\fR" 4
  .IX Item "-mmalloc64"
  Default to 64\-bit memory allocation routines.
! .IP "\fB\-mpointer\-size=\fR\fIsize\fR" 4
  .IX Item "-mpointer-size=size"
  Set the default size of pointers. Possible options for \fIsize\fR are
  \&\fB32\fR or \fBshort\fR for 32 bit pointers, \fB64\fR or \fBlong\fR
--- 33840,33882 ----
  .Sp
  \&\fBmcm\fR is a synonym of \fBgr5\fR present for backward compatibility.
  .Sp
! By default (unless configured otherwise), GCC generates code for the GR5
  variant of the Visium architecture.
  .Sp
! With \fB\-mcpu=gr6\fR, GCC generates code for the GR6 variant of the Visium
! architecture.  The only difference from GR5 code is that the compiler will
  generate block move instructions.
! .IP \fB\-mtune=\fR\fIcpu_type\fR 4
  .IX Item "-mtune=cpu_type"
  Set the instruction scheduling parameters for machine type \fIcpu_type\fR,
  but do not set the instruction set or register set that the option
  \&\fB\-mcpu=\fR\fIcpu_type\fR would.
! .IP \fB\-msv\-mode\fR 4
  .IX Item "-msv-mode"
  Generate code for the supervisor mode, where there are no restrictions on
  the access to general registers.  This is the default.
! .IP \fB\-muser\-mode\fR 4
  .IX Item "-muser-mode"
  Generate code for the user mode, where the access to some general registers
! is forbidden: on the GR5, registers r24 to r31 cannot be accessed in this
! mode; on the GR6, only registers r29 to r31 are affected.
  .PP
! \fIVMS Options\fR
  .IX Subsection "VMS Options"
  .PP
! These \fB\-m\fR options are defined for the VMS implementations:
! .IP \fB\-mvms\-return\-codes\fR 4
  .IX Item "-mvms-return-codes"
! Return VMS condition codes from \f(CW\*(C`main\*(C'\fR. The default is to return POSIX\-style
  condition (e.g. error) codes.
! .IP \fB\-mdebug\-main=\fR\fIprefix\fR 4
  .IX Item "-mdebug-main=prefix"
  Flag the first routine whose name starts with \fIprefix\fR as the main
  routine for the debugger.
! .IP \fB\-mmalloc64\fR 4
  .IX Item "-mmalloc64"
  Default to 64\-bit memory allocation routines.
! .IP \fB\-mpointer\-size=\fR\fIsize\fR 4
  .IX Item "-mpointer-size=size"
  Set the default size of pointers. Possible options for \fIsize\fR are
  \&\fB32\fR or \fBshort\fR for 32 bit pointers, \fB64\fR or \fBlong\fR
*************** The later option disables \f(CW\*(C`prag
*** 33954,33989 ****
  The options in this section are defined for all VxWorks targets.
  Options specific to the target hardware are listed with the other
  options for that target.
! .IP "\fB\-mrtp\fR" 4
  .IX Item "-mrtp"
! \&\s-1GCC\s0 can generate code for both VxWorks kernels and real time processes
  (RTPs).  This option switches from the former to the latter.  It also
  defines the preprocessor macro \f(CW\*(C`_\|_RTP_\|_\*(C'\fR.
! .IP "\fB\-msmp\fR" 4
  .IX Item "-msmp"
! Select \s-1SMP\s0 runtimes for linking.  Not available on architectures other
  than PowerPC, nor on VxWorks version 7 or later, in which the selection
  is part of the VxWorks build configuration and the library paths are the
  same for either choice.
! .IP "\fB\-non\-static\fR" 4
  .IX Item "-non-static"
! Link an \s-1RTP\s0 executable against shared libraries rather than static
  libraries.  The options \fB\-static\fR and \fB\-shared\fR can
  also be used for RTPs; \fB\-static\fR
  is the default.
! .IP "\fB\-Bstatic\fR" 4
  .IX Item "-Bstatic"
  .PD 0
! .IP "\fB\-Bdynamic\fR" 4
  .IX Item "-Bdynamic"
  .PD
  These options are passed down to the linker.  They are defined for
  compatibility with Diab.
! .IP "\fB\-Xbind\-lazy\fR" 4
  .IX Item "-Xbind-lazy"
  Enable lazy binding of function calls.  This option is equivalent to
  \&\fB\-Wl,\-z,now\fR and is defined for compatibility with Diab.
! .IP "\fB\-Xbind\-now\fR" 4
  .IX Item "-Xbind-now"
  Disable lazy binding of function calls.  This option is the default and
  is defined for compatibility with Diab.
--- 33889,33924 ----
  The options in this section are defined for all VxWorks targets.
  Options specific to the target hardware are listed with the other
  options for that target.
! .IP \fB\-mrtp\fR 4
  .IX Item "-mrtp"
! GCC can generate code for both VxWorks kernels and real time processes
  (RTPs).  This option switches from the former to the latter.  It also
  defines the preprocessor macro \f(CW\*(C`_\|_RTP_\|_\*(C'\fR.
! .IP \fB\-msmp\fR 4
  .IX Item "-msmp"
! Select SMP runtimes for linking.  Not available on architectures other
  than PowerPC, nor on VxWorks version 7 or later, in which the selection
  is part of the VxWorks build configuration and the library paths are the
  same for either choice.
! .IP \fB\-non\-static\fR 4
  .IX Item "-non-static"
! Link an RTP executable against shared libraries rather than static
  libraries.  The options \fB\-static\fR and \fB\-shared\fR can
  also be used for RTPs; \fB\-static\fR
  is the default.
! .IP \fB\-Bstatic\fR 4
  .IX Item "-Bstatic"
  .PD 0
! .IP \fB\-Bdynamic\fR 4
  .IX Item "-Bdynamic"
  .PD
  These options are passed down to the linker.  They are defined for
  compatibility with Diab.
! .IP \fB\-Xbind\-lazy\fR 4
  .IX Item "-Xbind-lazy"
  Enable lazy binding of function calls.  This option is equivalent to
  \&\fB\-Wl,\-z,now\fR and is defined for compatibility with Diab.
! .IP \fB\-Xbind\-now\fR 4
  .IX Item "-Xbind-now"
  Disable lazy binding of function calls.  This option is the default and
  is defined for compatibility with Diab.
*************** is defined for compatibility with Diab.
*** 33992,34642 ****
  .IX Subsection "x86 Options"
  .PP
  These \fB\-m\fR options are defined for the x86 family of computers.
! .IP "\fB\-march=\fR\fIcpu-type\fR" 4
  .IX Item "-march=cpu-type"
! Generate instructions for the machine type \fIcpu-type\fR.  In contrast to
! \&\fB\-mtune=\fR\fIcpu-type\fR, which merely tunes the generated code
! for the specified \fIcpu-type\fR, \fB\-march=\fR\fIcpu-type\fR allows \s-1GCC\s0
  to generate code that may not run at all on processors other than the one
! indicated.  Specifying \fB\-march=\fR\fIcpu-type\fR implies
! \&\fB\-mtune=\fR\fIcpu-type\fR, except where noted otherwise.
  .Sp
! The choices for \fIcpu-type\fR are:
  .RS 4
! .IP "\fBnative\fR" 4
  .IX Item "native"
! This selects the \s-1CPU\s0 to generate code for at compilation time by determining
  the processor type of the compiling machine.  Using \fB\-march=native\fR
  enables all instruction subsets supported by the local machine (hence
  the result might not run on different machines).  Using \fB\-mtune=native\fR
  produces code optimized for the local machine under the constraints
  of the selected instruction set.
! .IP "\fBx86\-64\fR" 4
  .IX Item "x86-64"
! A generic \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2,\s0 and \s-1FXSR\s0 instruction set
  support.
! .IP "\fBx86\-64\-v2\fR" 4
  .IX Item "x86-64-v2"
  .PD 0
! .IP "\fBx86\-64\-v3\fR" 4
  .IX Item "x86-64-v3"
! .IP "\fBx86\-64\-v4\fR" 4
  .IX Item "x86-64-v4"
  .PD
! These choices for \fIcpu-type\fR select the corresponding
! micro-architecture level from the x86\-64 psABI.  On ABIs other than
! the x86\-64 psABI they select the same \s-1CPU\s0 features as the x86\-64 psABI
! documents for the particular micro-architecture level.
  .Sp
! Since these \fIcpu-type\fR values do not have a corresponding
  \&\fB\-mtune\fR setting, using \fB\-march\fR with these values enables
  generic tuning.  Specific tuning can be enabled using the
! \&\fB\-mtune=\fR\fIother-cpu-type\fR option with an appropriate
! \&\fIother-cpu-type\fR value.
! .IP "\fBi386\fR" 4
  .IX Item "i386"
! Original Intel i386 \s-1CPU.\s0
! .IP "\fBi486\fR" 4
  .IX Item "i486"
! Intel i486 \s-1CPU.\s0  (No scheduling is implemented for this chip.)
! .IP "\fBi586\fR" 4
  .IX Item "i586"
  .PD 0
! .IP "\fBpentium\fR" 4
  .IX Item "pentium"
  .PD
! Intel Pentium \s-1CPU\s0 with no \s-1MMX\s0 support.
! .IP "\fBlakemont\fR" 4
  .IX Item "lakemont"
! Intel Lakemont \s-1MCU,\s0 based on Intel Pentium \s-1CPU.\s0
! .IP "\fBpentium-mmx\fR" 4
  .IX Item "pentium-mmx"
! Intel Pentium \s-1MMX CPU,\s0 based on Pentium core with \s-1MMX\s0 instruction set support.
! .IP "\fBpentiumpro\fR" 4
  .IX Item "pentiumpro"
! Intel Pentium Pro \s-1CPU\s0 with no \s-1MMX\s0 support.
! .IP "\fBi686\fR" 4
  .IX Item "i686"
  When used with \fB\-march\fR, the Pentium Pro
  instruction set is used, so the code runs on all i686 family chips.
  When used with \fB\-mtune\fR, it has the same meaning as \fBgeneric\fR.
! .IP "\fBpentium2\fR" 4
  .IX Item "pentium2"
! Intel Pentium \s-1II CPU,\s0 based on Pentium Pro core with \s-1MMX\s0 and \s-1FXSR\s0 instruction
  set support.
! .IP "\fBpentium3\fR" 4
  .IX Item "pentium3"
  .PD 0
! .IP "\fBpentium3m\fR" 4
  .IX Item "pentium3m"
  .PD
! Intel Pentium \s-1III CPU,\s0 based on Pentium Pro core with \s-1MMX, FXSR\s0 and \s-1SSE\s0
  instruction set support.
! .IP "\fBpentium-m\fR" 4
  .IX Item "pentium-m"
! Intel Pentium M; low-power version of Intel Pentium \s-1III CPU\s0
! with \s-1MMX, SSE, SSE2\s0 and \s-1FXSR\s0 instruction set support.  Used by Centrino
  notebooks.
! .IP "\fBpentium4\fR" 4
  .IX Item "pentium4"
  .PD 0
! .IP "\fBpentium4m\fR" 4
  .IX Item "pentium4m"
  .PD
! Intel Pentium 4 \s-1CPU\s0 with \s-1MMX, SSE, SSE2\s0 and \s-1FXSR\s0 instruction set support.
! .IP "\fBprescott\fR" 4
  .IX Item "prescott"
! Improved version of Intel Pentium 4 \s-1CPU\s0 with \s-1MMX, SSE, SSE2, SSE3\s0 and \s-1FXSR\s0
  instruction set support.
! .IP "\fBnocona\fR" 4
  .IX Item "nocona"
! Improved version of Intel Pentium 4 \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE,
! SSE2, SSE3\s0 and \s-1FXSR\s0 instruction set support.
! .IP "\fBcore2\fR" 4
  .IX Item "core2"
! Intel Core 2 \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3, CX16,
! SAHF\s0 and \s-1FXSR\s0 instruction set support.
! .IP "\fBnehalem\fR" 4
  .IX Item "nehalem"
  .PD 0
! .IP "\fBcorei7\fR" 4
  .IX Item "corei7"
  .PD
! Intel Nehalem \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, CX16, SAHF\s0 and \s-1FXSR\s0 instruction set support.
! .IP "\fBwestmere\fR" 4
  .IX Item "westmere"
! Intel Westmere \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR\s0 and \s-1PCLMUL\s0 instruction set support.
! .IP "\fBsandybridge\fR" 4
  .IX Item "sandybridge"
  .PD 0
! .IP "\fBcorei7\-avx\fR" 4
  .IX Item "corei7-avx"
  .PD
! Intel Sandy Bridge \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE\s0 and \s-1PCLMUL\s0 instruction set
  support.
! .IP "\fBivybridge\fR" 4
  .IX Item "ivybridge"
  .PD 0
! .IP "\fBcore-avx-i\fR" 4
  .IX Item "core-avx-i"
  .PD
! Intel Ivy Bridge \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND\s0
  and F16C instruction set support.
! .IP "\fBhaswell\fR" 4
  .IX Item "haswell"
  .PD 0
! .IP "\fBcore\-avx2\fR" 4
  .IX Item "core-avx2"
  .PD
! Intel Haswell \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
! F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE\s0 and \s-1HLE\s0 instruction set support.
! .IP "\fBbroadwell\fR" 4
  .IX Item "broadwell"
! Intel Broadwell \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
! F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX\s0 and \s-1PREFETCHW\s0
  instruction set support.
! .IP "\fBskylake\fR" 4
  .IX Item "skylake"
! Intel Skylake \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
  F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES,
! CLFLUSHOPT, XSAVEC, XSAVES\s0 and \s-1SGX\s0 instruction set support.
! .IP "\fBskylake\-avx512\fR" 4
  .IX Item "skylake-avx512"
! Intel Skylake Server \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
  RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
  AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, CLWB, AVX512VL, AVX512BW,
! AVX512DQ\s0 and \s-1AVX512CD\s0 instruction set support.
! .IP "\fBcascadelake\fR" 4
  .IX Item "cascadelake"
! Intel Cascade Lake \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
  F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES,
  CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ,
! AVX512CD\s0 and \s-1AVX512VNNI\s0 instruction set support.
! .IP "\fBcannonlake\fR" 4
  .IX Item "cannonlake"
! Intel Cannon Lake Server \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2,
  SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL,
  FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX,
  PREFETCHW, AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW,
! AVX512DQ, AVX512CD, PKU, AVX512VBMI, AVX512IFMA\s0 and \s-1SHA\s0 instruction set
  support.
! .IP "\fBcooperlake\fR" 4
  .IX Item "cooperlake"
! Intel Cooper Lake \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
  F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES,
  CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ,
! AVX512CD, AVX512VNNI\s0 and \s-1AVX512BF16\s0 instruction set support.
! .IP "\fBicelake-client\fR" 4
  .IX Item "icelake-client"
! Intel Ice Lake Client \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
  RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
  AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ,
  AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2
! , VPCLMULQDQ, AVX512BITALG, RDPID\s0 and \s-1AVX512VPOPCNTDQ\s0 instruction set support.
! .IP "\fBicelake-server\fR" 4
  .IX Item "icelake-server"
! Intel Ice Lake Server \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
  RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
  AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ,
  AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2
! , VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD\s0 and \s-1CLWB\s0
  instruction set support.
! .IP "\fBtigerlake\fR" 4
  .IX Item "tigerlake"
! Intel Tiger Lake \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
  F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES,
  CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD
  PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2,
  VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, MOVDIRI, MOVDIR64B, CLWB,
! AVX512VP2INTERSECT\s0 and \s-1KEYLOCKER\s0 instruction set support.
! .IP "\fBrocketlake\fR" 4
  .IX Item "rocketlake"
! Intel Rocket Lake \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
  F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES,
  CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD
  PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2,
! VPCLMULQDQ, AVX512BITALG, RDPID\s0 and \s-1AVX512VPOPCNTDQ\s0 instruction set support.
! .IP "\fBalderlake\fR" 4
  .IX Item "alderlake"
  .PD 0
! .IP "\fBraptorlake\fR" 4
  .IX Item "raptorlake"
! .IP "\fBmeteorlake\fR" 4
  .IX Item "meteorlake"
! .IP "\fBgracemont\fR" 4
  .IX Item "gracemont"
  .PD
! Intel Alder Lake/Raptor Lake/Meteor Lake/Gracemont \s-1CPU\s0 with 64\-bit extensions,
! \&\s-1MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW,
! PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX,\s0
! GFNI-SSE, \s-1CLWB, MOVDIRI, MOVDIR64B, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C,
! FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL\s0 and
! AVX-VNNI instruction set support.
! .IP "\fBarrowlake\fR" 4
  .IX Item "arrowlake"
! Intel Arrow Lake \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC,
! XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX,\s0 GFNI-SSE, \s-1CLWB, MOVDIRI,
  MOVDIR64B, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU,
! VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL,\s0 AVX-VNNI, \s-1UINTR, AVXIFMA,
! AVXVNNIINT8, AVXNECONVERT\s0 and \s-1CMPCCXADD\s0 instruction set support.
! .IP "\fBarrowlake-s\fR" 4
  .IX Item "arrowlake-s"
  .PD 0
! .IP "\fBlunarlake\fR" 4
  .IX Item "lunarlake"
  .PD
! Intel Arrow Lake S/Lunar Lake \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE,
  SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND,
! XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX,\s0 GFNI-SSE, \s-1CLWB,
  MOVDIRI, MOVDIR64B, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT,
! PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL,\s0 AVX-VNNI, \s-1UINTR,
! AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3\s0 and
! \&\s-1SM4\s0 instruction set support.
! .IP "\fBpantherlake\fR" 4
  .IX Item "pantherlake"
! Intel Panther Lake \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC,
! XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX,\s0 GFNI-SSE, \s-1CLWB, MOVDIRI,
  MOVDIR64B, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU,
! VAES, VPCLMULQDQ, SERIALIZE, HRESET,\s0 AVX-VNNI, \s-1UINTR, AVXIFMA, AVXVNNIINT8,
! AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4\s0 and \s-1PREFETCHI\s0
! instruction set support.
! .IP "\fBsapphirerapids\fR" 4
  .IX Item "sapphirerapids"
  .PD 0
! .IP "\fBemeraldrapids\fR" 4
  .IX Item "emeraldrapids"
  .PD
! Intel Sapphire Rapids/Emerald Rapids \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE,
  SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL,
  FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX,
  PREFETCHW, AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW,
  AVX512DQ, AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES,
  AVX512VBMI2, VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG,
  WBNOINVD, CLWB, MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG,
! SERIALIZE, TSXLDTRK, UINTR, AMX\-BF16,\s0 AMX-TILE, \s-1AMX\-INT8,\s0 AVX-VNNI, \s-1AVX512\-FP16\s0
! and \s-1AVX512BF16\s0 instruction set support.
! .IP "\fBgraniterapids\fR" 4
  .IX Item "graniterapids"
! Intel Granite Rapids \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
  RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
  AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ,
  AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2,
  VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD, CLWB,
  MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK,
! UINTR, AMX\-BF16,\s0 AMX-TILE, \s-1AMX\-INT8,\s0 AVX-VNNI, \s-1AVX512\-FP16, AVX512BF16, AMX\-FP16\s0
! and \s-1PREFETCHI\s0 instruction set support.
! .IP "\fBgraniterapids-d\fR" 4
  .IX Item "graniterapids-d"
! Intel Granite Rapids D \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
  RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
  AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ,
  AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2,
  VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD, CLWB,
  MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK,
! UINTR, AMX\-BF16,\s0 AMX-TILE, \s-1AMX\-INT8,\s0 AVX-VNNI, \s-1AVX512FP16, AVX512BF16, AMX\-FP16,
! PREFETCHI\s0 and AMX-COMPLEX instruction set support.
! .IP "\fBdiamondrapids\fR" 4
  .IX Item "diamondrapids"
! Intel Diamond Rapids \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
  RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
  AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ,
  AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2,
  VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD, CLWB,
  MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK,
! UINTR, AMX\-BF16,\s0 AMX-TILE, \s-1AMX\-INT8,\s0 AVX-VNNI, \s-1AVX512FP16, AVX512BF16, AMX\-FP16,
! PREFETCHI,\s0 AMX-COMPLEX, \s-1AVX10.1\-512,\s0 AVX-IFMA, AVX-NE-CONVERT, \s-1AVX\-VNNI\-INT16,
! AVX\-VNNI\-INT8,\s0 CMPccXADD, \s-1SHA512, SM3, SM4, AVX10.2\-512, APX_F, AMX\-AVX512,
! AMX\-FP8, AMX\-TF32,\s0 AMX-TRANSPOSE, \s-1MOVRS,\s0 AMX-MOVRS and \s-1USER_MSR\s0 instruction set
! support.
! .IP "\fBbonnell\fR" 4
  .IX Item "bonnell"
  .PD 0
! .IP "\fBatom\fR" 4
  .IX Item "atom"
  .PD
! Intel Bonnell \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3\s0 and \s-1SSSE3\s0
  instruction set support.
! .IP "\fBsilvermont\fR" 4
  .IX Item "silvermont"
  .PD 0
! .IP "\fBslm\fR" 4
  .IX Item "slm"
  .PD
! Intel Silvermont \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, PCLMUL, PREFETCHW\s0 and \s-1RDRND\s0
  instruction set support.
! .IP "\fBgoldmont\fR" 4
  .IX Item "goldmont"
! Intel Goldmont \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, PCLMUL, PREFETCHW, RDRND, AES, SHA,
! RDSEED, XSAVE, XSAVEC, XSAVES, XSAVEOPT, CLFLUSHOPT\s0 and \s-1FSGSBASE\s0 instruction
  set support.
! .IP "\fBgoldmont-plus\fR" 4
  .IX Item "goldmont-plus"
! Intel Goldmont Plus \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, PCLMUL, PREFETCHW, RDRND, AES,
  SHA, RDSEED, XSAVE, XSAVEC, XSAVES, XSAVEOPT, CLFLUSHOPT, FSGSBASE, PTWRITE,
! RDPID\s0 and \s-1SGX\s0 instruction set support.
! .IP "\fBtremont\fR" 4
  .IX Item "tremont"
! Intel Tremont \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, PCLMUL, PREFETCHW, RDRND, AES, SHA,
  RDSEED, XSAVE, XSAVEC, XSAVES, XSAVEOPT, CLFLUSHOPT, FSGSBASE, PTWRITE, RDPID,
! SGX, CLWB,\s0 GFNI-SSE, \s-1MOVDIRI, MOVDIR64B, CLDEMOTE\s0 and \s-1WAITPKG\s0 instruction set
  support.
! .IP "\fBsierraforest\fR" 4
  .IX Item "sierraforest"
! Intel Sierra Forest \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC,
! XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX,\s0 GFNI-SSE, \s-1CLWB, MOVDIRI,
  MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT,
! PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL,\s0 AVX-VNNI,
! \&\s-1AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, ENQCMD\s0 and \s-1UINTR\s0 instruction set
  support.
! .IP "\fBgrandridge\fR" 4
  .IX Item "grandridge"
! Intel Grand Ridge \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC,
! XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX,\s0 GFNI-SSE, \s-1CLWB, MOVDIRI,
  MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT,
! PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL,\s0 AVX-VNNI,
! \&\s-1AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, ENQCMD\s0 and \s-1UINTR\s0 instruction set
  support.
! .IP "\fBclearwaterforest\fR" 4
  .IX Item "clearwaterforest"
! Intel Clearwater Forest \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2,
  SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE,
! XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX,\s0 GFNI-SSE, \s-1CLWB,
  MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA,
! LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET,\s0 AVX-VNNI, \s-1ENQCMD,
  UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512,
! SM3, SM4, USER_MSR\s0 and \s-1PREFETCHI\s0 instruction set support.
! .IP "\fBk6\fR" 4
  .IX Item "k6"
! \&\s-1AMD K6 CPU\s0 with \s-1MMX\s0 instruction set support.
! .IP "\fBk6\-2\fR" 4
  .IX Item "k6-2"
  .PD 0
! .IP "\fBk6\-3\fR" 4
  .IX Item "k6-3"
  .PD
! Improved versions of \s-1AMD K6 CPU\s0 with \s-1MMX\s0 and 3DNow! instruction set support.
! .IP "\fBathlon\fR" 4
  .IX Item "athlon"
  .PD 0
! .IP "\fBathlon-tbird\fR" 4
  .IX Item "athlon-tbird"
  .PD
! \&\s-1AMD\s0 Athlon \s-1CPU\s0 with \s-1MMX,\s0 3dNOW!, enhanced 3DNow! and \s-1SSE\s0 prefetch instructions
  support.
! .IP "\fBathlon\-4\fR" 4
  .IX Item "athlon-4"
  .PD 0
! .IP "\fBathlon-xp\fR" 4
  .IX Item "athlon-xp"
! .IP "\fBathlon-mp\fR" 4
  .IX Item "athlon-mp"
  .PD
! Improved \s-1AMD\s0 Athlon \s-1CPU\s0 with \s-1MMX,\s0 3DNow!, enhanced 3DNow! and full \s-1SSE\s0
  instruction set support.
! .IP "\fBk8\fR" 4
  .IX Item "k8"
  .PD 0
! .IP "\fBopteron\fR" 4
  .IX Item "opteron"
! .IP "\fBathlon64\fR" 4
  .IX Item "athlon64"
! .IP "\fBathlon-fx\fR" 4
  .IX Item "athlon-fx"
  .PD
! Processors based on the \s-1AMD K8\s0 core with x86\-64 instruction set support,
! including the \s-1AMD\s0 Opteron, Athlon 64, and Athlon 64 \s-1FX\s0 processors.
! (This supersets \s-1MMX, SSE, SSE2,\s0 3DNow!, enhanced 3DNow! and 64\-bit
  instruction set extensions.)
! .IP "\fBk8\-sse3\fR" 4
  .IX Item "k8-sse3"
  .PD 0
! .IP "\fBopteron\-sse3\fR" 4
  .IX Item "opteron-sse3"
! .IP "\fBathlon64\-sse3\fR" 4
  .IX Item "athlon64-sse3"
  .PD
! Improved versions of \s-1AMD K8\s0 cores with \s-1SSE3\s0 instruction set support.
! .IP "\fBamdfam10\fR" 4
  .IX Item "amdfam10"
  .PD 0
! .IP "\fBbarcelona\fR" 4
  .IX Item "barcelona"
  .PD
! CPUs based on \s-1AMD\s0 Family 10h cores with x86\-64 instruction set support.  (This
! supersets \s-1MMX, SSE, SSE2, SSE3, SSE4A,\s0 3DNow!, enhanced 3DNow!, \s-1ABM\s0 and 64\-bit
  instruction set extensions.)
! .IP "\fBbdver1\fR" 4
  .IX Item "bdver1"
! CPUs based on \s-1AMD\s0 Family 15h cores with x86\-64 instruction set support.  (This
! supersets \s-1FMA4, AVX, XOP, LWP, AES, PCLMUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A,
! SSSE3, SSE4.1, SSE4.2, ABM\s0 and 64\-bit instruction set extensions.)
! .IP "\fBbdver2\fR" 4
  .IX Item "bdver2"
! \&\s-1AMD\s0 Family 15h core based CPUs with x86\-64 instruction set support.  (This
! supersets \s-1BMI, TBM, F16C, FMA, FMA4, AVX, XOP, LWP, AES, PCLMUL, CX16, MMX,
! SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM\s0 and 64\-bit instruction set
  extensions.)
! .IP "\fBbdver3\fR" 4
  .IX Item "bdver3"
! \&\s-1AMD\s0 Family 15h core based CPUs with x86\-64 instruction set support.  (This
! supersets \s-1BMI, TBM, F16C, FMA, FMA4, FSGSBASE, AVX, XOP, LWP, AES,
! PCLMUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM\s0 and
  64\-bit instruction set extensions.)
! .IP "\fBbdver4\fR" 4
  .IX Item "bdver4"
! \&\s-1AMD\s0 Family 15h core based CPUs with x86\-64 instruction set support.  (This
! supersets \s-1BMI, BMI2, TBM, F16C, FMA, FMA4, FSGSBASE, AVX, AVX2, XOP, LWP,
  AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1,
! SSE4.2, ABM\s0 and 64\-bit instruction set extensions.)
! .IP "\fBznver1\fR" 4
  .IX Item "znver1"
! \&\s-1AMD\s0 Family 17h core based CPUs with x86\-64 instruction set support.  (This
! supersets \s-1BMI, BMI2, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX,
  SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3,
! SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT,\s0 and 64\-bit
  instruction set extensions.)
! .IP "\fBznver2\fR" 4
  .IX Item "znver2"
! \&\s-1AMD\s0 Family 17h core based CPUs with x86\-64 instruction set support. (This
! supersets \s-1BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED,
  MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A,
  SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID,
! WBNOINVD,\s0 and 64\-bit instruction set extensions.)
! .IP "\fBznver3\fR" 4
  .IX Item "znver3"
! \&\s-1AMD\s0 Family 19h core based CPUs with x86\-64 instruction set support. (This
! supersets \s-1BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED,
  MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A,
  SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID,
! WBNOINVD, PKU, VPCLMULQDQ, VAES,\s0 and 64\-bit instruction set extensions.)
! .IP "\fBznver4\fR" 4
  .IX Item "znver4"
! \&\s-1AMD\s0 Family 19h core based CPUs with x86\-64 instruction set support. (This
! supersets \s-1BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED,
  MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A,
  SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID,
  WBNOINVD, PKU, VPCLMULQDQ, VAES, AVX512F, AVX512DQ, AVX512IFMA, AVX512CD,
  AVX512BW, AVX512VL, AVX512BF16, AVX512VBMI, AVX512VBMI2, AVX512VNNI,
! AVX512BITALG, AVX512VPOPCNTDQ, GFNI\s0 and 64\-bit instruction set extensions.)
! .IP "\fBznver5\fR" 4
  .IX Item "znver5"
! \&\s-1AMD\s0 Family 1ah core based CPUs with x86\-64 instruction set support. (This
! supersets \s-1BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED,
  MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A,
  SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID,
  WBNOINVD, PKU, VPCLMULQDQ, VAES, AVX512F, AVX512DQ, AVX512IFMA, AVX512CD,
  AVX512BW, AVX512VL, AVX512BF16, AVX512VBMI, AVX512VBMI2, AVX512VNNI,
  AVX512BITALG, AVX512VPOPCNTDQ, GFNI, AVXVNNI, MOVDIRI, MOVDIR64B,
! AVX512VP2INTERSECT, PREFETCHI\s0 and 64\-bit instruction set extensions.)
! .IP "\fBbtver1\fR" 4
  .IX Item "btver1"
! CPUs based on \s-1AMD\s0 Family 14h cores with x86\-64 instruction set support.  (This
! supersets \s-1MMX, SSE, SSE2, SSE3, SSSE3, SSE4A, CX16, ABM\s0 and 64\-bit
  instruction set extensions.)
! .IP "\fBbtver2\fR" 4
  .IX Item "btver2"
! CPUs based on \s-1AMD\s0 Family 16h cores with x86\-64 instruction set support. This
! includes \s-1MOVBE, F16C, BMI, AVX, PCLMUL, AES, SSE4.2, SSE4.1, CX16, ABM,
! SSE4A, SSSE3, SSE3, SSE2, SSE, MMX\s0 and 64\-bit instruction set extensions.
! .IP "\fBwinchip\-c6\fR" 4
  .IX Item "winchip-c6"
! \&\s-1IDT\s0 WinChip C6 \s-1CPU,\s0 dealt in same way as i486 with additional \s-1MMX\s0 instruction
  set support.
! .IP "\fBwinchip2\fR" 4
  .IX Item "winchip2"
! \&\s-1IDT\s0 WinChip 2 \s-1CPU,\s0 dealt in same way as i486 with additional \s-1MMX\s0 and 3DNow!
  instruction set support.
! .IP "\fBc3\fR" 4
  .IX Item "c3"
! \&\s-1VIA C3 CPU\s0 with \s-1MMX\s0 and 3DNow! instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBc3\-2\fR" 4
  .IX Item "c3-2"
! \&\s-1VIA C3\-2\s0 (Nehemiah/C5XL) \s-1CPU\s0 with \s-1MMX\s0 and \s-1SSE\s0 instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBc7\fR" 4
  .IX Item "c7"
! \&\s-1VIA C7\s0 (Esther) \s-1CPU\s0 with \s-1MMX, SSE, SSE2\s0 and \s-1SSE3\s0 instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBsamuel\-2\fR" 4
  .IX Item "samuel-2"
! \&\s-1VIA\s0 Eden Samuel 2 \s-1CPU\s0 with \s-1MMX\s0 and 3DNow! instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBnehemiah\fR" 4
  .IX Item "nehemiah"
! \&\s-1VIA\s0 Eden Nehemiah \s-1CPU\s0 with \s-1MMX\s0 and \s-1SSE\s0 instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBesther\fR" 4
  .IX Item "esther"
! \&\s-1VIA\s0 Eden Esther \s-1CPU\s0 with \s-1MMX, SSE, SSE2\s0 and \s-1SSE3\s0 instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBeden\-x2\fR" 4
  .IX Item "eden-x2"
! \&\s-1VIA\s0 Eden X2 \s-1CPU\s0 with x86\-64, \s-1MMX, SSE, SSE2\s0 and \s-1SSE3\s0 instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBeden\-x4\fR" 4
  .IX Item "eden-x4"
! \&\s-1VIA\s0 Eden X4 \s-1CPU\s0 with x86\-64, \s-1MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2,
! AVX\s0 and \s-1AVX2\s0 instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBnano\fR" 4
  .IX Item "nano"
! Generic \s-1VIA\s0 Nano \s-1CPU\s0 with x86\-64, \s-1MMX, SSE, SSE2, SSE3\s0 and \s-1SSSE3\s0
  instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBnano\-1000\fR" 4
  .IX Item "nano-1000"
! \&\s-1VIA\s0 Nano 1xxx \s-1CPU\s0 with x86\-64, \s-1MMX, SSE, SSE2, SSE3\s0 and \s-1SSSE3\s0
  instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBnano\-2000\fR" 4
  .IX Item "nano-2000"
! \&\s-1VIA\s0 Nano 2xxx \s-1CPU\s0 with x86\-64, \s-1MMX, SSE, SSE2, SSE3\s0 and \s-1SSSE3\s0
  instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBnano\-3000\fR" 4
  .IX Item "nano-3000"
! \&\s-1VIA\s0 Nano 3xxx \s-1CPU\s0 with x86\-64, \s-1MMX, SSE, SSE2, SSE3, SSSE3\s0 and \s-1SSE4.1\s0
  instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBnano\-x2\fR" 4
  .IX Item "nano-x2"
! \&\s-1VIA\s0 Nano Dual Core \s-1CPU\s0 with x86\-64, \s-1MMX, SSE, SSE2, SSE3, SSSE3\s0 and \s-1SSE4.1\s0
  instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBnano\-x4\fR" 4
  .IX Item "nano-x4"
! \&\s-1VIA\s0 Nano Quad Core \s-1CPU\s0 with x86\-64, \s-1MMX, SSE, SSE2, SSE3, SSSE3\s0 and \s-1SSE4.1\s0
  instruction set support.
  (No scheduling is implemented for this chip.)
! .IP "\fBlujiazui\fR" 4
  .IX Item "lujiazui"
! \&\s-1ZHAOXIN\s0 lujiazui \s-1CPU\s0 with x86\-64, \s-1MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
  SSE4.2, POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE, CX16,
! ABM, BMI, BMI2, FXSR, RDSEED\s0 instruction set support.  While the CPUs
! do support \s-1AVX\s0 and F16C, these aren't enabled by \f(CW\*(C`\-march=lujiazui\*(C'\fR
  for performance reasons.
! .IP "\fByongfeng\fR" 4
  .IX Item "yongfeng"
! \&\s-1ZHAOXIN\s0 yongfeng \s-1CPU\s0 with x86\-64, \s-1MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
  SSE4.2, AVX, POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE, CX16,
! ABM, BMI, BMI2, F16C, FXSR, RDSEED, AVX2, FMA, SHA, LZCNT\s0
  instruction set support.
! .IP "\fBshijidadao\fR" 4
  .IX Item "shijidadao"
! \&\s-1ZHAOXIN\s0 shijidadao \s-1CPU\s0 with x86\-64, \s-1MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
  SSE4.2, AVX, POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE, CX16,
! ABM, BMI, BMI2, F16C, FXSR, RDSEED, AVX2, FMA, SHA, LZCNT\s0
  instruction set support.
! .IP "\fBgeode\fR" 4
  .IX Item "geode"
! \&\s-1AMD\s0 Geode embedded processor with \s-1MMX\s0 and 3DNow! instruction set support.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mtune=\fR\fIcpu-type\fR" 4
  .IX Item "-mtune=cpu-type"
! Tune to \fIcpu-type\fR everything applicable about the generated code, except
! for the \s-1ABI\s0 and the set of available instructions.
! While picking a specific \fIcpu-type\fR schedules things appropriately
  for that particular chip, the compiler does not generate any code that
  cannot run on the default machine type unless you use a
! \&\fB\-march=\fR\fIcpu-type\fR option.
! For example, if \s-1GCC\s0 is configured for i686\-pc\-linux\-gnu
  then \fB\-mtune=pentium4\fR generates code that is tuned for Pentium 4
  but still runs on i686 machines.
  .Sp
! The choices for \fIcpu-type\fR are the same as for \fB\-march\fR.
! In addition, \fB\-mtune\fR supports 2 extra choices for \fIcpu-type\fR:
  .RS 4
! .IP "\fBgeneric\fR" 4
  .IX Item "generic"
! Produce code optimized for the most common \s-1IA32/AMD64/EM64T\s0 processors.
! If you know the \s-1CPU\s0 on which your code will run, then you should use
  the corresponding \fB\-mtune\fR or \fB\-march\fR option instead of
! \&\fB\-mtune=generic\fR.  But, if you do not know exactly what \s-1CPU\s0 users
  of your application will have, then you should use this option.
  .Sp
  As new processors are deployed in the marketplace, the behavior of this
  option will change.  Therefore, if you upgrade to a newer version of
! \&\s-1GCC,\s0 code generation controlled by this option will change to reflect
  the processors
! that are most common at the time that version of \s-1GCC\s0 is released.
  .Sp
  There is no \fB\-march=generic\fR option because \fB\-march\fR
  indicates the instruction set the compiler can use, and there is no
  generic instruction set applicable to all processors.  In contrast,
  \&\fB\-mtune\fR indicates the processor (or, in this case, collection of
  processors) for which the code is optimized.
! .IP "\fBintel\fR" 4
  .IX Item "intel"
  Produce code optimized for the most current Intel processors, which are
! Haswell and Silvermont for this version of \s-1GCC.\s0  If you know the \s-1CPU\s0
  on which your code will run, then you should use the corresponding
  \&\fB\-mtune\fR or \fB\-march\fR option instead of \fB\-mtune=intel\fR.
  But, if you want your application performs better on both Haswell and
--- 33927,34576 ----
  .IX Subsection "x86 Options"
  .PP
  These \fB\-m\fR options are defined for the x86 family of computers.
! .IP \fB\-march=\fR\fIcpu\-type\fR 4
  .IX Item "-march=cpu-type"
! Generate instructions for the machine type \fIcpu\-type\fR.  In contrast to
! \&\fB\-mtune=\fR\fIcpu\-type\fR, which merely tunes the generated code
! for the specified \fIcpu\-type\fR, \fB\-march=\fR\fIcpu\-type\fR allows GCC
  to generate code that may not run at all on processors other than the one
! indicated.  Specifying \fB\-march=\fR\fIcpu\-type\fR implies
! \&\fB\-mtune=\fR\fIcpu\-type\fR, except where noted otherwise.
  .Sp
! The choices for \fIcpu\-type\fR are:
  .RS 4
! .IP \fBnative\fR 4
  .IX Item "native"
! This selects the CPU to generate code for at compilation time by determining
  the processor type of the compiling machine.  Using \fB\-march=native\fR
  enables all instruction subsets supported by the local machine (hence
  the result might not run on different machines).  Using \fB\-mtune=native\fR
  produces code optimized for the local machine under the constraints
  of the selected instruction set.
! .IP \fBx86\-64\fR 4
  .IX Item "x86-64"
! A generic CPU with 64\-bit extensions, MMX, SSE, SSE2, and FXSR instruction set
  support.
! .IP \fBx86\-64\-v2\fR 4
  .IX Item "x86-64-v2"
  .PD 0
! .IP \fBx86\-64\-v3\fR 4
  .IX Item "x86-64-v3"
! .IP \fBx86\-64\-v4\fR 4
  .IX Item "x86-64-v4"
  .PD
! These choices for \fIcpu\-type\fR select the corresponding
! micro\-architecture level from the x86\-64 psABI.  On ABIs other than
! the x86\-64 psABI they select the same CPU features as the x86\-64 psABI
! documents for the particular micro\-architecture level.
  .Sp
! Since these \fIcpu\-type\fR values do not have a corresponding
  \&\fB\-mtune\fR setting, using \fB\-march\fR with these values enables
  generic tuning.  Specific tuning can be enabled using the
! \&\fB\-mtune=\fR\fIother\-cpu\-type\fR option with an appropriate
! \&\fIother\-cpu\-type\fR value.
! .IP \fBi386\fR 4
  .IX Item "i386"
! Original Intel i386 CPU.
! .IP \fBi486\fR 4
  .IX Item "i486"
! Intel i486 CPU.  (No scheduling is implemented for this chip.)
! .IP \fBi586\fR 4
  .IX Item "i586"
  .PD 0
! .IP \fBpentium\fR 4
  .IX Item "pentium"
  .PD
! Intel Pentium CPU with no MMX support.
! .IP \fBlakemont\fR 4
  .IX Item "lakemont"
! Intel Lakemont MCU, based on Intel Pentium CPU.
! .IP \fBpentium\-mmx\fR 4
  .IX Item "pentium-mmx"
! Intel Pentium MMX CPU, based on Pentium core with MMX instruction set support.
! .IP \fBpentiumpro\fR 4
  .IX Item "pentiumpro"
! Intel Pentium Pro CPU with no MMX support.
! .IP \fBi686\fR 4
  .IX Item "i686"
  When used with \fB\-march\fR, the Pentium Pro
  instruction set is used, so the code runs on all i686 family chips.
  When used with \fB\-mtune\fR, it has the same meaning as \fBgeneric\fR.
! .IP \fBpentium2\fR 4
  .IX Item "pentium2"
! Intel Pentium II CPU, based on Pentium Pro core with MMX and FXSR instruction
  set support.
! .IP \fBpentium3\fR 4
  .IX Item "pentium3"
  .PD 0
! .IP \fBpentium3m\fR 4
  .IX Item "pentium3m"
  .PD
! Intel Pentium III CPU, based on Pentium Pro core with MMX, FXSR and SSE
  instruction set support.
! .IP \fBpentium\-m\fR 4
  .IX Item "pentium-m"
! Intel Pentium M; low\-power version of Intel Pentium III CPU
! with MMX, SSE, SSE2 and FXSR instruction set support.  Used by Centrino
  notebooks.
! .IP \fBpentium4\fR 4
  .IX Item "pentium4"
  .PD 0
! .IP \fBpentium4m\fR 4
  .IX Item "pentium4m"
  .PD
! Intel Pentium 4 CPU with MMX, SSE, SSE2 and FXSR instruction set support.
! .IP \fBprescott\fR 4
  .IX Item "prescott"
! Improved version of Intel Pentium 4 CPU with MMX, SSE, SSE2, SSE3 and FXSR
  instruction set support.
! .IP \fBnocona\fR 4
  .IX Item "nocona"
! Improved version of Intel Pentium 4 CPU with 64\-bit extensions, MMX, SSE,
! SSE2, SSE3 and FXSR instruction set support.
! .IP \fBcore2\fR 4
  .IX Item "core2"
! Intel Core 2 CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, CX16,
! SAHF and FXSR instruction set support.
! .IP \fBnehalem\fR 4
  .IX Item "nehalem"
  .PD 0
! .IP \fBcorei7\fR 4
  .IX Item "corei7"
  .PD
! Intel Nehalem CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, CX16, SAHF and FXSR instruction set support.
! .IP \fBwestmere\fR 4
  .IX Item "westmere"
! Intel Westmere CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR and PCLMUL instruction set support.
! .IP \fBsandybridge\fR 4
  .IX Item "sandybridge"
  .PD 0
! .IP \fBcorei7\-avx\fR 4
  .IX Item "corei7-avx"
  .PD
! Intel Sandy Bridge CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE and PCLMUL instruction set
  support.
! .IP \fBivybridge\fR 4
  .IX Item "ivybridge"
  .PD 0
! .IP \fBcore\-avx\-i\fR 4
  .IX Item "core-avx-i"
  .PD
! Intel Ivy Bridge CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND
  and F16C instruction set support.
! .IP \fBhaswell\fR 4
  .IX Item "haswell"
  .PD 0
! .IP \fBcore\-avx2\fR 4
  .IX Item "core-avx2"
  .PD
! Intel Haswell CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
! F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE and HLE instruction set support.
! .IP \fBbroadwell\fR 4
  .IX Item "broadwell"
! Intel Broadwell CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
! F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX and PREFETCHW
  instruction set support.
! .IP \fBskylake\fR 4
  .IX Item "skylake"
! Intel Skylake CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
  F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES,
! CLFLUSHOPT, XSAVEC, XSAVES and SGX instruction set support.
! .IP \fBskylake\-avx512\fR 4
  .IX Item "skylake-avx512"
! Intel Skylake Server CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
  RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
  AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, CLWB, AVX512VL, AVX512BW,
! AVX512DQ and AVX512CD instruction set support.
! .IP \fBcascadelake\fR 4
  .IX Item "cascadelake"
! Intel Cascade Lake CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
  F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES,
  CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ,
! AVX512CD and AVX512VNNI instruction set support.
! .IP \fBcannonlake\fR 4
  .IX Item "cannonlake"
! Intel Cannon Lake Server CPU with 64\-bit extensions, MMX, SSE, SSE2,
  SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL,
  FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX,
  PREFETCHW, AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW,
! AVX512DQ, AVX512CD, PKU, AVX512VBMI, AVX512IFMA and SHA instruction set
  support.
! .IP \fBcooperlake\fR 4
  .IX Item "cooperlake"
! Intel Cooper Lake CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
  F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES,
  CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ,
! AVX512CD, AVX512VNNI and AVX512BF16 instruction set support.
! .IP \fBicelake\-client\fR 4
  .IX Item "icelake-client"
! Intel Ice Lake Client CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
  RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
  AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ,
  AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2
! , VPCLMULQDQ, AVX512BITALG, RDPID and AVX512VPOPCNTDQ instruction set support.
! .IP \fBicelake\-server\fR 4
  .IX Item "icelake-server"
! Intel Ice Lake Server CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
  RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
  AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ,
  AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2
! , VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD and CLWB
  instruction set support.
! .IP \fBtigerlake\fR 4
  .IX Item "tigerlake"
! Intel Tiger Lake CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
  F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES,
  CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD
  PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2,
  VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, MOVDIRI, MOVDIR64B, CLWB,
! AVX512VP2INTERSECT and KEYLOCKER instruction set support.
! .IP \fBrocketlake\fR 4
  .IX Item "rocketlake"
! Intel Rocket Lake CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
  F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES,
  CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD
  PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2,
! VPCLMULQDQ, AVX512BITALG, RDPID and AVX512VPOPCNTDQ instruction set support.
! .IP \fBalderlake\fR 4
  .IX Item "alderlake"
  .PD 0
! .IP \fBraptorlake\fR 4
  .IX Item "raptorlake"
! .IP \fBmeteorlake\fR 4
  .IX Item "meteorlake"
! .IP \fBgracemont\fR 4
  .IX Item "gracemont"
  .PD
! Intel Alder Lake/Raptor Lake/Meteor Lake/Gracemont CPU with 64\-bit extensions,
! MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW,
! PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX,
! GFNI\-SSE, CLWB, MOVDIRI, MOVDIR64B, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C,
! FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL and
! AVX\-VNNI instruction set support.
! .IP \fBarrowlake\fR 4
  .IX Item "arrowlake"
! Intel Arrow Lake CPU with 64\-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC,
! XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI\-SSE, CLWB, MOVDIRI,
  MOVDIR64B, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU,
! VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX\-VNNI, UINTR, AVXIFMA,
! AVXVNNIINT8, AVXNECONVERT and CMPCCXADD instruction set support.
! .IP \fBarrowlake\-s\fR 4
  .IX Item "arrowlake-s"
  .PD 0
! .IP \fBlunarlake\fR 4
  .IX Item "lunarlake"
  .PD
! Intel Arrow Lake S/Lunar Lake CPU with 64\-bit extensions, MOVBE, MMX, SSE,
  SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND,
! XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI\-SSE, CLWB,
  MOVDIRI, MOVDIR64B, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT,
! PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX\-VNNI, UINTR,
! AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3 and
! SM4 instruction set support.
! .IP \fBpantherlake\fR 4
  .IX Item "pantherlake"
! Intel Panther Lake CPU with 64\-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC,
! XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI\-SSE, CLWB, MOVDIRI,
  MOVDIR64B, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU,
! VAES, VPCLMULQDQ, SERIALIZE, HRESET, AVX\-VNNI, UINTR, AVXIFMA, AVXVNNIINT8,
! AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3 and SM4 instruction set
! support.
! .IP \fBsapphirerapids\fR 4
  .IX Item "sapphirerapids"
  .PD 0
! .IP \fBemeraldrapids\fR 4
  .IX Item "emeraldrapids"
  .PD
! Intel Sapphire Rapids/Emerald Rapids CPU with 64\-bit extensions, MMX, SSE,
  SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL,
  FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX,
  PREFETCHW, AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW,
  AVX512DQ, AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES,
  AVX512VBMI2, VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG,
  WBNOINVD, CLWB, MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG,
! SERIALIZE, TSXLDTRK, UINTR, AMX\-BF16, AMX\-TILE, AMX\-INT8, AVX\-VNNI, AVX512\-FP16
! and AVX512BF16 instruction set support.
! .IP \fBgraniterapids\fR 4
  .IX Item "graniterapids"
! Intel Granite Rapids CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
  RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
  AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ,
  AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2,
  VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD, CLWB,
  MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK,
! UINTR, AMX\-BF16, AMX\-TILE, AMX\-INT8, AVX\-VNNI, AVX512\-FP16, AVX512BF16, AMX\-FP16
! and PREFETCHI instruction set support.
! .IP \fBgraniterapids\-d\fR 4
  .IX Item "graniterapids-d"
! Intel Granite Rapids D CPU with 64\-bit extensions, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
  RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
  AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ,
  AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2,
  VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD, CLWB,
  MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK,
! UINTR, AMX\-BF16, AMX\-TILE, AMX\-INT8, AVX\-VNNI, AVX512FP16, AVX512BF16, AMX\-FP16,
! PREFETCHI and AMX\-COMPLEX instruction set support.
! .IP \fBdiamondrapids\fR 4
  .IX Item "diamondrapids"
! Intel Diamond Rapids CPU with 64\-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
  RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
  AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ,
  AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2,
  VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD, CLWB,
  MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK,
! UINTR, AMX\-BF16, AMX\-TILE, AMX\-INT8, AVX\-VNNI, AVX512FP16, AVX512BF16, AMX\-FP16,
! PREFETCHI, AMX\-COMPLEX, AVX10.1\-512, AVX\-IFMA, AVX\-NE\-CONVERT, AVX\-VNNI\-INT16,
! AVX\-VNNI\-INT8, CMPccXADD, SHA512, SM3, SM4, AVX10.2\-512, APX_F, AMX\-AVX512,
! AMX\-FP8, AMX\-TF32, MOVRS and AMX\-MOVRS instruction set support.
! .IP \fBbonnell\fR 4
  .IX Item "bonnell"
  .PD 0
! .IP \fBatom\fR 4
  .IX Item "atom"
  .PD
! Intel Bonnell CPU with 64\-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3 and SSSE3
  instruction set support.
! .IP \fBsilvermont\fR 4
  .IX Item "silvermont"
  .PD 0
! .IP \fBslm\fR 4
  .IX Item "slm"
  .PD
! Intel Silvermont CPU with 64\-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, PCLMUL, PREFETCHW and RDRND
  instruction set support.
! .IP \fBgoldmont\fR 4
  .IX Item "goldmont"
! Intel Goldmont CPU with 64\-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, PCLMUL, PREFETCHW, RDRND, AES, SHA,
! RDSEED, XSAVE, XSAVEC, XSAVES, XSAVEOPT, CLFLUSHOPT and FSGSBASE instruction
  set support.
! .IP \fBgoldmont\-plus\fR 4
  .IX Item "goldmont-plus"
! Intel Goldmont Plus CPU with 64\-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, PCLMUL, PREFETCHW, RDRND, AES,
  SHA, RDSEED, XSAVE, XSAVEC, XSAVES, XSAVEOPT, CLFLUSHOPT, FSGSBASE, PTWRITE,
! RDPID and SGX instruction set support.
! .IP \fBtremont\fR 4
  .IX Item "tremont"
! Intel Tremont CPU with 64\-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, PCLMUL, PREFETCHW, RDRND, AES, SHA,
  RDSEED, XSAVE, XSAVEC, XSAVES, XSAVEOPT, CLFLUSHOPT, FSGSBASE, PTWRITE, RDPID,
! SGX, CLWB, GFNI\-SSE, MOVDIRI, MOVDIR64B, CLDEMOTE and WAITPKG instruction set
  support.
! .IP \fBsierraforest\fR 4
  .IX Item "sierraforest"
! Intel Sierra Forest CPU with 64\-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC,
! XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI\-SSE, CLWB, MOVDIRI,
  MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT,
! PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX\-VNNI,
! AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, ENQCMD and UINTR instruction set
  support.
! .IP \fBgrandridge\fR 4
  .IX Item "grandridge"
! Intel Grand Ridge CPU with 64\-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3,
  SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC,
! XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI\-SSE, CLWB, MOVDIRI,
  MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT,
! PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX\-VNNI,
! AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, ENQCMD and UINTR instruction set
  support.
! .IP \fBclearwaterforest\fR 4
  .IX Item "clearwaterforest"
! Intel Clearwater Forest CPU with 64\-bit extensions, MOVBE, MMX, SSE, SSE2,
  SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE,
! XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI\-SSE, CLWB,
  MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA,
! LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, AVX\-VNNI, ENQCMD,
  UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512,
! SM3, SM4, USER_MSR and PREFETCHI instruction set support.
! .IP \fBk6\fR 4
  .IX Item "k6"
! AMD K6 CPU with MMX instruction set support.
! .IP \fBk6\-2\fR 4
  .IX Item "k6-2"
  .PD 0
! .IP \fBk6\-3\fR 4
  .IX Item "k6-3"
  .PD
! Improved versions of AMD K6 CPU with MMX and 3DNow! instruction set support.
! .IP \fBathlon\fR 4
  .IX Item "athlon"
  .PD 0
! .IP \fBathlon\-tbird\fR 4
  .IX Item "athlon-tbird"
  .PD
! AMD Athlon CPU with MMX, 3dNOW!, enhanced 3DNow! and SSE prefetch instructions
  support.
! .IP \fBathlon\-4\fR 4
  .IX Item "athlon-4"
  .PD 0
! .IP \fBathlon\-xp\fR 4
  .IX Item "athlon-xp"
! .IP \fBathlon\-mp\fR 4
  .IX Item "athlon-mp"
  .PD
! Improved AMD Athlon CPU with MMX, 3DNow!, enhanced 3DNow! and full SSE
  instruction set support.
! .IP \fBk8\fR 4
  .IX Item "k8"
  .PD 0
! .IP \fBopteron\fR 4
  .IX Item "opteron"
! .IP \fBathlon64\fR 4
  .IX Item "athlon64"
! .IP \fBathlon\-fx\fR 4
  .IX Item "athlon-fx"
  .PD
! Processors based on the AMD K8 core with x86\-64 instruction set support,
! including the AMD Opteron, Athlon 64, and Athlon 64 FX processors.
! (This supersets MMX, SSE, SSE2, 3DNow!, enhanced 3DNow! and 64\-bit
  instruction set extensions.)
! .IP \fBk8\-sse3\fR 4
  .IX Item "k8-sse3"
  .PD 0
! .IP \fBopteron\-sse3\fR 4
  .IX Item "opteron-sse3"
! .IP \fBathlon64\-sse3\fR 4
  .IX Item "athlon64-sse3"
  .PD
! Improved versions of AMD K8 cores with SSE3 instruction set support.
! .IP \fBamdfam10\fR 4
  .IX Item "amdfam10"
  .PD 0
! .IP \fBbarcelona\fR 4
  .IX Item "barcelona"
  .PD
! CPUs based on AMD Family 10h cores with x86\-64 instruction set support.  (This
! supersets MMX, SSE, SSE2, SSE3, SSE4A, 3DNow!, enhanced 3DNow!, ABM and 64\-bit
  instruction set extensions.)
! .IP \fBbdver1\fR 4
  .IX Item "bdver1"
! CPUs based on AMD Family 15h cores with x86\-64 instruction set support.  (This
! supersets FMA4, AVX, XOP, LWP, AES, PCLMUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A,
! SSSE3, SSE4.1, SSE4.2, ABM and 64\-bit instruction set extensions.)
! .IP \fBbdver2\fR 4
  .IX Item "bdver2"
! AMD Family 15h core based CPUs with x86\-64 instruction set support.  (This
! supersets BMI, TBM, F16C, FMA, FMA4, AVX, XOP, LWP, AES, PCLMUL, CX16, MMX,
! SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM and 64\-bit instruction set
  extensions.)
! .IP \fBbdver3\fR 4
  .IX Item "bdver3"
! AMD Family 15h core based CPUs with x86\-64 instruction set support.  (This
! supersets BMI, TBM, F16C, FMA, FMA4, FSGSBASE, AVX, XOP, LWP, AES,
! PCLMUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM and
  64\-bit instruction set extensions.)
! .IP \fBbdver4\fR 4
  .IX Item "bdver4"
! AMD Family 15h core based CPUs with x86\-64 instruction set support.  (This
! supersets BMI, BMI2, TBM, F16C, FMA, FMA4, FSGSBASE, AVX, AVX2, XOP, LWP,
  AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1,
! SSE4.2, ABM and 64\-bit instruction set extensions.)
! .IP \fBznver1\fR 4
  .IX Item "znver1"
! AMD Family 17h core based CPUs with x86\-64 instruction set support.  (This
! supersets BMI, BMI2, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX,
  SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3,
! SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, and 64\-bit
  instruction set extensions.)
! .IP \fBznver2\fR 4
  .IX Item "znver2"
! AMD Family 17h core based CPUs with x86\-64 instruction set support. (This
! supersets BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED,
  MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A,
  SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID,
! WBNOINVD, and 64\-bit instruction set extensions.)
! .IP \fBznver3\fR 4
  .IX Item "znver3"
! AMD Family 19h core based CPUs with x86\-64 instruction set support. (This
! supersets BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED,
  MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A,
  SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID,
! WBNOINVD, PKU, VPCLMULQDQ, VAES, and 64\-bit instruction set extensions.)
! .IP \fBznver4\fR 4
  .IX Item "znver4"
! AMD Family 19h core based CPUs with x86\-64 instruction set support. (This
! supersets BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED,
  MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A,
  SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID,
  WBNOINVD, PKU, VPCLMULQDQ, VAES, AVX512F, AVX512DQ, AVX512IFMA, AVX512CD,
  AVX512BW, AVX512VL, AVX512BF16, AVX512VBMI, AVX512VBMI2, AVX512VNNI,
! AVX512BITALG, AVX512VPOPCNTDQ, GFNI and 64\-bit instruction set extensions.)
! .IP \fBznver5\fR 4
  .IX Item "znver5"
! AMD Family 1ah core based CPUs with x86\-64 instruction set support. (This
! supersets BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED,
  MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A,
  SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID,
  WBNOINVD, PKU, VPCLMULQDQ, VAES, AVX512F, AVX512DQ, AVX512IFMA, AVX512CD,
  AVX512BW, AVX512VL, AVX512BF16, AVX512VBMI, AVX512VBMI2, AVX512VNNI,
  AVX512BITALG, AVX512VPOPCNTDQ, GFNI, AVXVNNI, MOVDIRI, MOVDIR64B,
! AVX512VP2INTERSECT, PREFETCHI and 64\-bit instruction set extensions.)
! .IP \fBbtver1\fR 4
  .IX Item "btver1"
! CPUs based on AMD Family 14h cores with x86\-64 instruction set support.  (This
! supersets MMX, SSE, SSE2, SSE3, SSSE3, SSE4A, CX16, ABM and 64\-bit
  instruction set extensions.)
! .IP \fBbtver2\fR 4
  .IX Item "btver2"
! CPUs based on AMD Family 16h cores with x86\-64 instruction set support. This
! includes MOVBE, F16C, BMI, AVX, PCLMUL, AES, SSE4.2, SSE4.1, CX16, ABM,
! SSE4A, SSSE3, SSE3, SSE2, SSE, MMX and 64\-bit instruction set extensions.
! .IP \fBwinchip\-c6\fR 4
  .IX Item "winchip-c6"
! IDT WinChip C6 CPU, dealt in same way as i486 with additional MMX instruction
  set support.
! .IP \fBwinchip2\fR 4
  .IX Item "winchip2"
! IDT WinChip 2 CPU, dealt in same way as i486 with additional MMX and 3DNow!
  instruction set support.
! .IP \fBc3\fR 4
  .IX Item "c3"
! VIA C3 CPU with MMX and 3DNow! instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBc3\-2\fR 4
  .IX Item "c3-2"
! VIA C3\-2 (Nehemiah/C5XL) CPU with MMX and SSE instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBc7\fR 4
  .IX Item "c7"
! VIA C7 (Esther) CPU with MMX, SSE, SSE2 and SSE3 instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBsamuel\-2\fR 4
  .IX Item "samuel-2"
! VIA Eden Samuel 2 CPU with MMX and 3DNow! instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBnehemiah\fR 4
  .IX Item "nehemiah"
! VIA Eden Nehemiah CPU with MMX and SSE instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBesther\fR 4
  .IX Item "esther"
! VIA Eden Esther CPU with MMX, SSE, SSE2 and SSE3 instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBeden\-x2\fR 4
  .IX Item "eden-x2"
! VIA Eden X2 CPU with x86\-64, MMX, SSE, SSE2 and SSE3 instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBeden\-x4\fR 4
  .IX Item "eden-x4"
! VIA Eden X4 CPU with x86\-64, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2,
! AVX and AVX2 instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBnano\fR 4
  .IX Item "nano"
! Generic VIA Nano CPU with x86\-64, MMX, SSE, SSE2, SSE3 and SSSE3
  instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBnano\-1000\fR 4
  .IX Item "nano-1000"
! VIA Nano 1xxx CPU with x86\-64, MMX, SSE, SSE2, SSE3 and SSSE3
  instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBnano\-2000\fR 4
  .IX Item "nano-2000"
! VIA Nano 2xxx CPU with x86\-64, MMX, SSE, SSE2, SSE3 and SSSE3
  instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBnano\-3000\fR 4
  .IX Item "nano-3000"
! VIA Nano 3xxx CPU with x86\-64, MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1
  instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBnano\-x2\fR 4
  .IX Item "nano-x2"
! VIA Nano Dual Core CPU with x86\-64, MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1
  instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBnano\-x4\fR 4
  .IX Item "nano-x4"
! VIA Nano Quad Core CPU with x86\-64, MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1
  instruction set support.
  (No scheduling is implemented for this chip.)
! .IP \fBlujiazui\fR 4
  .IX Item "lujiazui"
! ZHAOXIN lujiazui CPU with x86\-64, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
  SSE4.2, POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE, CX16,
! ABM, BMI, BMI2, FXSR, RDSEED instruction set support.  While the CPUs
! do support AVX and F16C, these aren\*(Aqt enabled by \f(CW\*(C`\-march=lujiazui\*(C'\fR
  for performance reasons.
! .IP \fByongfeng\fR 4
  .IX Item "yongfeng"
! ZHAOXIN yongfeng CPU with x86\-64, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
  SSE4.2, AVX, POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE, CX16,
! ABM, BMI, BMI2, F16C, FXSR, RDSEED, AVX2, FMA, SHA, LZCNT
  instruction set support.
! .IP \fBshijidadao\fR 4
  .IX Item "shijidadao"
! ZHAOXIN shijidadao CPU with x86\-64, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
  SSE4.2, AVX, POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE, CX16,
! ABM, BMI, BMI2, F16C, FXSR, RDSEED, AVX2, FMA, SHA, LZCNT
  instruction set support.
! .IP \fBgeode\fR 4
  .IX Item "geode"
! AMD Geode embedded processor with MMX and 3DNow! instruction set support.
  .RE
  .RS 4
  .RE
! .IP \fB\-mtune=\fR\fIcpu\-type\fR 4
  .IX Item "-mtune=cpu-type"
! Tune to \fIcpu\-type\fR everything applicable about the generated code, except
! for the ABI and the set of available instructions.
! While picking a specific \fIcpu\-type\fR schedules things appropriately
  for that particular chip, the compiler does not generate any code that
  cannot run on the default machine type unless you use a
! \&\fB\-march=\fR\fIcpu\-type\fR option.
! For example, if GCC is configured for i686\-pc\-linux\-gnu
  then \fB\-mtune=pentium4\fR generates code that is tuned for Pentium 4
  but still runs on i686 machines.
  .Sp
! The choices for \fIcpu\-type\fR are the same as for \fB\-march\fR.
! In addition, \fB\-mtune\fR supports 2 extra choices for \fIcpu\-type\fR:
  .RS 4
! .IP \fBgeneric\fR 4
  .IX Item "generic"
! Produce code optimized for the most common IA32/AMD64/EM64T processors.
! If you know the CPU on which your code will run, then you should use
  the corresponding \fB\-mtune\fR or \fB\-march\fR option instead of
! \&\fB\-mtune=generic\fR.  But, if you do not know exactly what CPU users
  of your application will have, then you should use this option.
  .Sp
  As new processors are deployed in the marketplace, the behavior of this
  option will change.  Therefore, if you upgrade to a newer version of
! GCC, code generation controlled by this option will change to reflect
  the processors
! that are most common at the time that version of GCC is released.
  .Sp
  There is no \fB\-march=generic\fR option because \fB\-march\fR
  indicates the instruction set the compiler can use, and there is no
  generic instruction set applicable to all processors.  In contrast,
  \&\fB\-mtune\fR indicates the processor (or, in this case, collection of
  processors) for which the code is optimized.
! .IP \fBintel\fR 4
  .IX Item "intel"
  Produce code optimized for the most current Intel processors, which are
! Haswell and Silvermont for this version of GCC.  If you know the CPU
  on which your code will run, then you should use the corresponding
  \&\fB\-mtune\fR or \fB\-march\fR option instead of \fB\-mtune=intel\fR.
  But, if you want your application performs better on both Haswell and
*************** Silvermont, then you should use this opt
*** 34644,34651 ****
  .Sp
  As new Intel processors are deployed in the marketplace, the behavior of
  this option will change.  Therefore, if you upgrade to a newer version of
! \&\s-1GCC,\s0 code generation controlled by this option will change to reflect
! the most current Intel processors at the time that version of \s-1GCC\s0 is
  released.
  .Sp
  There is no \fB\-march=intel\fR option because \fB\-march\fR indicates
--- 34578,34585 ----
  .Sp
  As new Intel processors are deployed in the marketplace, the behavior of
  this option will change.  Therefore, if you upgrade to a newer version of
! GCC, code generation controlled by this option will change to reflect
! the most current Intel processors at the time that version of GCC is
  released.
  .Sp
  There is no \fB\-march=intel\fR option because \fB\-march\fR indicates
*************** processors) for which the code is optimi
*** 34656,34691 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-mcpu=\fR\fIcpu-type\fR" 4
  .IX Item "-mcpu=cpu-type"
  A deprecated synonym for \fB\-mtune\fR.
! .IP "\fB\-mfpmath=\fR\fIunit\fR" 4
  .IX Item "-mfpmath=unit"
! Generate floating-point arithmetic for selected unit \fIunit\fR.  The choices
  for \fIunit\fR are:
  .RS 4
! .IP "\fB387\fR" 4
  .IX Item "387"
! Use the standard 387 floating-point coprocessor present on the majority of chips and
  emulated otherwise.  Code compiled with this option runs almost everywhere.
  The temporary results are computed in 80\-bit precision instead of the precision
  specified by the type, resulting in slightly different results compared to most
  of other chips.  See \fB\-ffloat\-store\fR for more detailed description.
  .Sp
! This is the default choice for non-Darwin x86\-32 targets.
! .IP "\fBsse\fR" 4
  .IX Item "sse"
! Use scalar floating-point instructions present in the \s-1SSE\s0 instruction set.
! This instruction set is supported by Pentium \s-1III\s0 and newer chips,
! and in the \s-1AMD\s0 line
! by Athlon\-4, Athlon \s-1XP\s0 and Athlon \s-1MP\s0 chips.  The earlier version of the \s-1SSE\s0
! instruction set supports only single-precision arithmetic, thus the double and
! extended-precision arithmetic are still done using 387.  A later version, present
! only in Pentium 4 and \s-1AMD\s0 x86\-64 chips, supports double-precision
  arithmetic too.
  .Sp
! For the x86\-32 compiler, you must use \fB\-march=\fR\fIcpu-type\fR, \fB\-msse\fR
! or \fB\-msse2\fR switches to enable \s-1SSE\s0 extensions and make this option
  effective.  For the x86\-64 compiler, these extensions are enabled by default.
  .Sp
  The resulting code should be considerably faster in the majority of cases and avoid
--- 34590,34625 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-mcpu=\fR\fIcpu\-type\fR 4
  .IX Item "-mcpu=cpu-type"
  A deprecated synonym for \fB\-mtune\fR.
! .IP \fB\-mfpmath=\fR\fIunit\fR 4
  .IX Item "-mfpmath=unit"
! Generate floating\-point arithmetic for selected unit \fIunit\fR.  The choices
  for \fIunit\fR are:
  .RS 4
! .IP \fB387\fR 4
  .IX Item "387"
! Use the standard 387 floating\-point coprocessor present on the majority of chips and
  emulated otherwise.  Code compiled with this option runs almost everywhere.
  The temporary results are computed in 80\-bit precision instead of the precision
  specified by the type, resulting in slightly different results compared to most
  of other chips.  See \fB\-ffloat\-store\fR for more detailed description.
  .Sp
! This is the default choice for non\-Darwin x86\-32 targets.
! .IP \fBsse\fR 4
  .IX Item "sse"
! Use scalar floating\-point instructions present in the SSE instruction set.
! This instruction set is supported by Pentium III and newer chips,
! and in the AMD line
! by Athlon\-4, Athlon XP and Athlon MP chips.  The earlier version of the SSE
! instruction set supports only single\-precision arithmetic, thus the double and
! extended\-precision arithmetic are still done using 387.  A later version, present
! only in Pentium 4 and AMD x86\-64 chips, supports double\-precision
  arithmetic too.
  .Sp
! For the x86\-32 compiler, you must use \fB\-march=\fR\fIcpu\-type\fR, \fB\-msse\fR
! or \fB\-msse2\fR switches to enable SSE extensions and make this option
  effective.  For the x86\-64 compiler, these extensions are enabled by default.
  .Sp
  The resulting code should be considerably faster in the majority of cases and avoid
*************** the numerical instability problems of 38
*** 34693,34786 ****
  code that expects temporaries to be 80 bits.
  .Sp
  This is the default choice for the x86\-64 compiler, Darwin x86\-32 targets,
! and the default choice for x86\-32 targets with the \s-1SSE2\s0 instruction set
  when \fB\-ffast\-math\fR is enabled.
! .IP "\fBsse,387\fR" 4
  .IX Item "sse,387"
  .PD 0
! .IP "\fBsse+387\fR" 4
  .IX Item "sse+387"
! .IP "\fBboth\fR" 4
  .IX Item "both"
  .PD
  Attempt to utilize both instruction sets at once.  This effectively doubles the
  amount of available registers, and on chips with separate execution units for
! 387 and \s-1SSE\s0 the execution resources too.  Use this option with care, as it is
! still experimental, because the \s-1GCC\s0 register allocator does not model separate
  functional units well, resulting in unstable performance.
  .RE
  .RS 4
  .RE
! .IP "\fB\-masm=\fR\fIdialect\fR" 4
  .IX Item "-masm=dialect"
  Output assembly instructions using selected \fIdialect\fR.  Also affects
  which dialect is used for basic \f(CW\*(C`asm\*(C'\fR and
  extended \f(CW\*(C`asm\*(C'\fR. Supported choices (in dialect
  order) are \fBatt\fR or \fBintel\fR. The default is \fBatt\fR. Darwin does
  not support \fBintel\fR.
! .IP "\fB\-mieee\-fp\fR" 4
  .IX Item "-mieee-fp"
  .PD 0
! .IP "\fB\-mno\-ieee\-fp\fR" 4
  .IX Item "-mno-ieee-fp"
  .PD
! Control whether or not the compiler uses \s-1IEEE\s0 floating-point
  comparisons.  These correctly handle the case where the result of a
  comparison is unordered.
! .IP "\fB\-m80387\fR" 4
  .IX Item "-m80387"
  .PD 0
! .IP "\fB\-mhard\-float\fR" 4
  .IX Item "-mhard-float"
  .PD
  Generate output containing 80387 instructions for floating point.
! .IP "\fB\-mno\-80387\fR" 4
  .IX Item "-mno-80387"
  .PD 0
! .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
  .PD
  Generate output containing library calls for floating point.
  .Sp
! \&\fBWarning:\fR the requisite libraries are not part of \s-1GCC.\s0
! Normally the facilities of the machine's usual C compiler are used, but
! this cannot be done directly in cross-compilation.  You must make your
  own arrangements to provide suitable library functions for
! cross-compilation.
  .Sp
! On machines where a function returns floating-point results in the 80387
! register stack, some floating-point opcodes may be emitted even if
  \&\fB\-msoft\-float\fR is used.
! .IP "\fB\-mno\-fp\-ret\-in\-387\fR" 4
  .IX Item "-mno-fp-ret-in-387"
! Do not use the \s-1FPU\s0 registers for return values of functions.
  .Sp
  The usual calling convention has functions return values of types
! \&\f(CW\*(C`float\*(C'\fR and \f(CW\*(C`double\*(C'\fR in an \s-1FPU\s0 register, even if there
! is no \s-1FPU.\s0  The idea is that the operating system should emulate
! an \s-1FPU.\s0
  .Sp
  The option \fB\-mno\-fp\-ret\-in\-387\fR causes such values to be returned
! in ordinary \s-1CPU\s0 registers instead.
! .IP "\fB\-mno\-fancy\-math\-387\fR" 4
  .IX Item "-mno-fancy-math-387"
  Some 387 emulators do not support the \f(CW\*(C`sin\*(C'\fR, \f(CW\*(C`cos\*(C'\fR and
  \&\f(CW\*(C`sqrt\*(C'\fR instructions for the 387.  Specify this option to avoid
  generating those instructions.
  This option is overridden when \fB\-march\fR
! indicates that the target \s-1CPU\s0 always has an \s-1FPU\s0 and so the
  instruction does not need emulation.  These
  instructions are not generated unless you also use the
  \&\fB\-funsafe\-math\-optimizations\fR switch.
! .IP "\fB\-malign\-double\fR" 4
  .IX Item "-malign-double"
  .PD 0
! .IP "\fB\-mno\-align\-double\fR" 4
  .IX Item "-mno-align-double"
  .PD
! Control whether \s-1GCC\s0 aligns \f(CW\*(C`double\*(C'\fR, \f(CW\*(C`long double\*(C'\fR, and
! \&\f(CW\*(C`long long\*(C'\fR variables on a two-word boundary or a one-word
! boundary.  Aligning \f(CW\*(C`double\*(C'\fR variables on a two-word boundary
  produces code that runs somewhat faster on a Pentium at the
  expense of more memory.
  .Sp
--- 34627,34720 ----
  code that expects temporaries to be 80 bits.
  .Sp
  This is the default choice for the x86\-64 compiler, Darwin x86\-32 targets,
! and the default choice for x86\-32 targets with the SSE2 instruction set
  when \fB\-ffast\-math\fR is enabled.
! .IP \fBsse,387\fR 4
  .IX Item "sse,387"
  .PD 0
! .IP \fBsse+387\fR 4
  .IX Item "sse+387"
! .IP \fBboth\fR 4
  .IX Item "both"
  .PD
  Attempt to utilize both instruction sets at once.  This effectively doubles the
  amount of available registers, and on chips with separate execution units for
! 387 and SSE the execution resources too.  Use this option with care, as it is
! still experimental, because the GCC register allocator does not model separate
  functional units well, resulting in unstable performance.
  .RE
  .RS 4
  .RE
! .IP \fB\-masm=\fR\fIdialect\fR 4
  .IX Item "-masm=dialect"
  Output assembly instructions using selected \fIdialect\fR.  Also affects
  which dialect is used for basic \f(CW\*(C`asm\*(C'\fR and
  extended \f(CW\*(C`asm\*(C'\fR. Supported choices (in dialect
  order) are \fBatt\fR or \fBintel\fR. The default is \fBatt\fR. Darwin does
  not support \fBintel\fR.
! .IP \fB\-mieee\-fp\fR 4
  .IX Item "-mieee-fp"
  .PD 0
! .IP \fB\-mno\-ieee\-fp\fR 4
  .IX Item "-mno-ieee-fp"
  .PD
! Control whether or not the compiler uses IEEE floating\-point
  comparisons.  These correctly handle the case where the result of a
  comparison is unordered.
! .IP \fB\-m80387\fR 4
  .IX Item "-m80387"
  .PD 0
! .IP \fB\-mhard\-float\fR 4
  .IX Item "-mhard-float"
  .PD
  Generate output containing 80387 instructions for floating point.
! .IP \fB\-mno\-80387\fR 4
  .IX Item "-mno-80387"
  .PD 0
! .IP \fB\-msoft\-float\fR 4
  .IX Item "-msoft-float"
  .PD
  Generate output containing library calls for floating point.
  .Sp
! \&\fBWarning:\fR the requisite libraries are not part of GCC.
! Normally the facilities of the machine\*(Aqs usual C compiler are used, but
! this cannot be done directly in cross\-compilation.  You must make your
  own arrangements to provide suitable library functions for
! cross\-compilation.
  .Sp
! On machines where a function returns floating\-point results in the 80387
! register stack, some floating\-point opcodes may be emitted even if
  \&\fB\-msoft\-float\fR is used.
! .IP \fB\-mno\-fp\-ret\-in\-387\fR 4
  .IX Item "-mno-fp-ret-in-387"
! Do not use the FPU registers for return values of functions.
  .Sp
  The usual calling convention has functions return values of types
! \&\f(CW\*(C`float\*(C'\fR and \f(CW\*(C`double\*(C'\fR in an FPU register, even if there
! is no FPU.  The idea is that the operating system should emulate
! an FPU.
  .Sp
  The option \fB\-mno\-fp\-ret\-in\-387\fR causes such values to be returned
! in ordinary CPU registers instead.
! .IP \fB\-mno\-fancy\-math\-387\fR 4
  .IX Item "-mno-fancy-math-387"
  Some 387 emulators do not support the \f(CW\*(C`sin\*(C'\fR, \f(CW\*(C`cos\*(C'\fR and
  \&\f(CW\*(C`sqrt\*(C'\fR instructions for the 387.  Specify this option to avoid
  generating those instructions.
  This option is overridden when \fB\-march\fR
! indicates that the target CPU always has an FPU and so the
  instruction does not need emulation.  These
  instructions are not generated unless you also use the
  \&\fB\-funsafe\-math\-optimizations\fR switch.
! .IP \fB\-malign\-double\fR 4
  .IX Item "-malign-double"
  .PD 0
! .IP \fB\-mno\-align\-double\fR 4
  .IX Item "-mno-align-double"
  .PD
! Control whether GCC aligns \f(CW\*(C`double\*(C'\fR, \f(CW\*(C`long double\*(C'\fR, and
! \&\f(CW\*(C`long long\*(C'\fR variables on a two\-word boundary or a one\-word
! boundary.  Aligning \f(CW\*(C`double\*(C'\fR variables on a two\-word boundary
  produces code that runs somewhat faster on a Pentium at the
  expense of more memory.
  .Sp
*************** structures containing the above types ar
*** 34791,34800 ****
  the published application binary interface specifications for the x86\-32
  and are not binary compatible with structures in code compiled
  without that switch.
! .IP "\fB\-m96bit\-long\-double\fR" 4
  .IX Item "-m96bit-long-double"
  .PD 0
! .IP "\fB\-m128bit\-long\-double\fR" 4
  .IX Item "-m128bit-long-double"
  .PD
  These switches control the size of \f(CW\*(C`long double\*(C'\fR type.  The x86\-32
--- 34725,34734 ----
  the published application binary interface specifications for the x86\-32
  and are not binary compatible with structures in code compiled
  without that switch.
! .IP \fB\-m96bit\-long\-double\fR 4
  .IX Item "-m96bit-long-double"
  .PD 0
! .IP \fB\-m128bit\-long\-double\fR 4
  .IX Item "-m128bit-long-double"
  .PD
  These switches control the size of \f(CW\*(C`long double\*(C'\fR type.  The x86\-32
*************** so \fB\-m96bit\-long\-double\fR is the d
*** 34803,34831 ****
  .Sp
  Modern architectures (Pentium and newer) prefer \f(CW\*(C`long double\*(C'\fR
  to be aligned to an 8\- or 16\-byte boundary.  In arrays or structures
! conforming to the \s-1ABI,\s0 this is not possible.  So specifying
  \&\fB\-m128bit\-long\-double\fR aligns \f(CW\*(C`long double\*(C'\fR
  to a 16\-byte boundary by padding the \f(CW\*(C`long double\*(C'\fR with an additional
  32\-bit zero.
  .Sp
  In the x86\-64 compiler, \fB\-m128bit\-long\-double\fR is the default choice as
! its \s-1ABI\s0 specifies that \f(CW\*(C`long double\*(C'\fR is aligned on 16\-byte boundary.
  .Sp
  Notice that neither of these options enable any extra precision over the x87
  standard of 80 bits for a \f(CW\*(C`long double\*(C'\fR.
  .Sp
! \&\fBWarning:\fR if you override the default value for your target \s-1ABI,\s0 this
  changes the size of
  structures and arrays containing \f(CW\*(C`long double\*(C'\fR variables,
  as well as modifying the function calling convention for functions taking
! \&\f(CW\*(C`long double\*(C'\fR.  Hence they are not binary-compatible
  with code compiled without that switch.
! .IP "\fB\-mlong\-double\-64\fR" 4
  .IX Item "-mlong-double-64"
  .PD 0
! .IP "\fB\-mlong\-double\-80\fR" 4
  .IX Item "-mlong-double-80"
! .IP "\fB\-mlong\-double\-128\fR" 4
  .IX Item "-mlong-double-128"
  .PD
  These switches control the size of \f(CW\*(C`long double\*(C'\fR type. A size
--- 34737,34765 ----
  .Sp
  Modern architectures (Pentium and newer) prefer \f(CW\*(C`long double\*(C'\fR
  to be aligned to an 8\- or 16\-byte boundary.  In arrays or structures
! conforming to the ABI, this is not possible.  So specifying
  \&\fB\-m128bit\-long\-double\fR aligns \f(CW\*(C`long double\*(C'\fR
  to a 16\-byte boundary by padding the \f(CW\*(C`long double\*(C'\fR with an additional
  32\-bit zero.
  .Sp
  In the x86\-64 compiler, \fB\-m128bit\-long\-double\fR is the default choice as
! its ABI specifies that \f(CW\*(C`long double\*(C'\fR is aligned on 16\-byte boundary.
  .Sp
  Notice that neither of these options enable any extra precision over the x87
  standard of 80 bits for a \f(CW\*(C`long double\*(C'\fR.
  .Sp
! \&\fBWarning:\fR if you override the default value for your target ABI, this
  changes the size of
  structures and arrays containing \f(CW\*(C`long double\*(C'\fR variables,
  as well as modifying the function calling convention for functions taking
! \&\f(CW\*(C`long double\*(C'\fR.  Hence they are not binary\-compatible
  with code compiled without that switch.
! .IP \fB\-mlong\-double\-64\fR 4
  .IX Item "-mlong-double-64"
  .PD 0
! .IP \fB\-mlong\-double\-80\fR 4
  .IX Item "-mlong-double-80"
! .IP \fB\-mlong\-double\-128\fR 4
  .IX Item "-mlong-double-128"
  .PD
  These switches control the size of \f(CW\*(C`long double\*(C'\fR type. A size
*************** type. This is the default for 32\-bit Bi
*** 34834,34861 ****
  of 128 bits makes the \f(CW\*(C`long double\*(C'\fR type equivalent to the
  \&\f(CW\*(C`_\|_float128\*(C'\fR type. This is the default for 64\-bit Bionic C library.
  .Sp
! \&\fBWarning:\fR if you override the default value for your target \s-1ABI,\s0 this
  changes the size of
  structures and arrays containing \f(CW\*(C`long double\*(C'\fR variables,
  as well as modifying the function calling convention for functions taking
! \&\f(CW\*(C`long double\*(C'\fR.  Hence they are not binary-compatible
  with code compiled without that switch.
! .IP "\fB\-malign\-data=\fR\fItype\fR" 4
  .IX Item "-malign-data=type"
! Control how \s-1GCC\s0 aligns variables.  Supported values for \fItype\fR are
! \&\fBcompat\fR uses increased alignment value compatible uses \s-1GCC 4.8\s0
  and earlier, \fBabi\fR uses alignment value as specified by the
  psABI, and \fBcacheline\fR uses increased alignment value to match
  the cache line size.  \fBcompat\fR is the default.
! .IP "\fB\-mlarge\-data\-threshold=\fR\fIthreshold\fR" 4
  .IX Item "-mlarge-data-threshold=threshold"
  When \fB\-mcmodel=medium\fR or \fB\-mcmodel=large\fR is specified, data
  objects larger than \fIthreshold\fR are placed in large data sections.  The
  default is 65535.
! .IP "\fB\-mrtd\fR" 4
  .IX Item "-mrtd"
! Use a different function-calling convention, in which functions that
! take a fixed number of arguments return with the \f(CW\*(C`ret \f(CInum\f(CW\*(C'\fR
  instruction, which pops their arguments while returning.  This saves one
  instruction in the caller since there is no need to pop the arguments
  there.
--- 34768,34795 ----
  of 128 bits makes the \f(CW\*(C`long double\*(C'\fR type equivalent to the
  \&\f(CW\*(C`_\|_float128\*(C'\fR type. This is the default for 64\-bit Bionic C library.
  .Sp
! \&\fBWarning:\fR if you override the default value for your target ABI, this
  changes the size of
  structures and arrays containing \f(CW\*(C`long double\*(C'\fR variables,
  as well as modifying the function calling convention for functions taking
! \&\f(CW\*(C`long double\*(C'\fR.  Hence they are not binary\-compatible
  with code compiled without that switch.
! .IP \fB\-malign\-data=\fR\fItype\fR 4
  .IX Item "-malign-data=type"
! Control how GCC aligns variables.  Supported values for \fItype\fR are
! \&\fBcompat\fR uses increased alignment value compatible uses GCC 4.8
  and earlier, \fBabi\fR uses alignment value as specified by the
  psABI, and \fBcacheline\fR uses increased alignment value to match
  the cache line size.  \fBcompat\fR is the default.
! .IP \fB\-mlarge\-data\-threshold=\fR\fIthreshold\fR 4
  .IX Item "-mlarge-data-threshold=threshold"
  When \fB\-mcmodel=medium\fR or \fB\-mcmodel=large\fR is specified, data
  objects larger than \fIthreshold\fR are placed in large data sections.  The
  default is 65535.
! .IP \fB\-mrtd\fR 4
  .IX Item "-mrtd"
! Use a different function\-calling convention, in which functions that
! take a fixed number of arguments return with the \f(CW\*(C`ret \fR\f(CInum\fR\f(CW\*(C'\fR
  instruction, which pops their arguments while returning.  This saves one
  instruction in the caller since there is no need to pop the arguments
  there.
*************** functions.
*** 34877,34883 ****
  In addition, seriously incorrect code results if you call a
  function with too many arguments.  (Normally, extra arguments are
  harmlessly ignored.)
! .IP "\fB\-mregparm=\fR\fInum\fR" 4
  .IX Item "-mregparm=num"
  Control how many registers are used to pass integer arguments.  By
  default, no registers are used to pass arguments, and at most 3
--- 34811,34817 ----
  In addition, seriously incorrect code results if you call a
  function with too many arguments.  (Normally, extra arguments are
  harmlessly ignored.)
! .IP \fB\-mregparm=\fR\fInum\fR 4
  .IX Item "-mregparm=num"
  Control how many registers are used to pass integer arguments.  By
  default, no registers are used to pass arguments, and at most 3
*************** function by using the function attribute
*** 34888,34970 ****
  \&\fInum\fR is nonzero, then you must build all modules with the same
  value, including any libraries.  This includes the system libraries and
  startup modules.
! .IP "\fB\-msseregparm\fR" 4
  .IX Item "-msseregparm"
! Use \s-1SSE\s0 register passing conventions for float and double arguments
  and return values.  You can control this behavior for a specific
  function by using the function attribute \f(CW\*(C`sseregparm\*(C'\fR.
  .Sp
  \&\fBWarning:\fR if you use this switch then you must build all
  modules with the same value, including any libraries.  This includes
  the system libraries and startup modules.
! .IP "\fB\-mvect8\-ret\-in\-mem\fR" 4
  .IX Item "-mvect8-ret-in-mem"
! Return 8\-byte vectors in memory instead of \s-1MMX\s0 registers.  This is the
! default on VxWorks to match the \s-1ABI\s0 of the Sun Studio compilers until
  version 12.  \fIOnly\fR use this option if you need to remain
  compatible with existing code produced by those previous compiler
! versions or older versions of \s-1GCC.\s0
! .IP "\fB\-mpc32\fR" 4
  .IX Item "-mpc32"
  .PD 0
! .IP "\fB\-mpc64\fR" 4
  .IX Item "-mpc64"
! .IP "\fB\-mpc80\fR" 4
  .IX Item "-mpc80"
  .PD
! Set 80387 floating-point precision to 32, 64 or 80 bits.  When \fB\-mpc32\fR
! is specified, the significands of results of floating-point operations are
  rounded to 24 bits (single precision); \fB\-mpc64\fR rounds the
! significands of results of floating-point operations to 53 bits (double
  precision) and \fB\-mpc80\fR rounds the significands of results of
! floating-point operations to 64 bits (extended double precision), which is
! the default.  When this option is used, floating-point operations in higher
! precisions are not available to the programmer without setting the \s-1FPU\s0
  control word explicitly.
  .Sp
! Setting the rounding of floating-point operations to less than the default
  80 bits can speed some programs by 2% or more.  Note that some mathematical
! libraries assume that extended-precision (80\-bit) floating-point operations
  are enabled by default; routines in such libraries could suffer significant
! loss of accuracy, typically through so-called \*(L"catastrophic cancellation\*(R",
  when this option is used to set the precision to less than extended precision.
! .IP "\fB\-mdaz\-ftz\fR" 4
  .IX Item "-mdaz-ftz"
! The flush-to-zero (\s-1FTZ\s0) and denormals-are-zero (\s-1DAZ\s0) flags in the \s-1MXCSR\s0 register
! are used to control floating-point calculations.SSE and \s-1AVX\s0 instructions
! including scalar and vector instructions could benefit from enabling the \s-1FTZ\s0
! and \s-1DAZ\s0 flags when \fB\-mdaz\-ftz\fR is specified. Don't set \s-1FTZ/DAZ\s0 flags
  when \fB\-mno\-daz\-ftz\fR or \fB\-shared\fR is specified, \fB\-mdaz\-ftz\fR
! will set \s-1FTZ/DAZ\s0 flags even with \fB\-shared\fR.
! .IP "\fB\-mstackrealign\fR" 4
  .IX Item "-mstackrealign"
  Realign the stack at entry.  On the x86, the \fB\-mstackrealign\fR
  option generates an alternate prologue and epilogue that realigns the
! run-time stack if necessary.  This supports mixing legacy codes that keep
  4\-byte stack alignment with modern codes that keep 16\-byte stack alignment for
! \&\s-1SSE\s0 compatibility.  See also the attribute \f(CW\*(C`force_align_arg_pointer\*(C'\fR,
  applicable to individual functions.
! .IP "\fB\-mpreferred\-stack\-boundary=\fR\fInum\fR" 4
  .IX Item "-mpreferred-stack-boundary=num"
  Attempt to keep the stack boundary aligned to a 2 raised to \fInum\fR
  byte boundary.  If \fB\-mpreferred\-stack\-boundary\fR is not specified,
  the default is 4 (16 bytes or 128 bits).
  .Sp
  \&\fBWarning:\fR When generating code for the x86\-64 architecture with
! \&\s-1SSE\s0 extensions disabled, \fB\-mpreferred\-stack\-boundary=3\fR can be
  used to keep the stack boundary aligned to 8 byte boundary.  Since
! x86\-64 \s-1ABI\s0 require 16 byte stack alignment, this is \s-1ABI\s0 incompatible and
  intended to be used in controlled environment where stack space is
  important limitation.  This option leads to wrong code when functions
  compiled with 16 byte stack alignment (such as functions from a standard
! library) are called with misaligned stack.  In this case, \s-1SSE\s0
  instructions may lead to misaligned memory access traps.  In addition,
  variable arguments are handled incorrectly for 16 byte aligned
  objects (including x87 long double and _\|_int128), leading to wrong
  results.  You must build all modules with
  \&\fB\-mpreferred\-stack\-boundary=3\fR, including any libraries.  This
  includes the system libraries and startup modules.
! .IP "\fB\-mincoming\-stack\-boundary=\fR\fInum\fR" 4
  .IX Item "-mincoming-stack-boundary=num"
  Assume the incoming stack is aligned to a 2 raised to \fInum\fR byte
  boundary.  If \fB\-mincoming\-stack\-boundary\fR is not specified,
--- 34822,34904 ----
  \&\fInum\fR is nonzero, then you must build all modules with the same
  value, including any libraries.  This includes the system libraries and
  startup modules.
! .IP \fB\-msseregparm\fR 4
  .IX Item "-msseregparm"
! Use SSE register passing conventions for float and double arguments
  and return values.  You can control this behavior for a specific
  function by using the function attribute \f(CW\*(C`sseregparm\*(C'\fR.
  .Sp
  \&\fBWarning:\fR if you use this switch then you must build all
  modules with the same value, including any libraries.  This includes
  the system libraries and startup modules.
! .IP \fB\-mvect8\-ret\-in\-mem\fR 4
  .IX Item "-mvect8-ret-in-mem"
! Return 8\-byte vectors in memory instead of MMX registers.  This is the
! default on VxWorks to match the ABI of the Sun Studio compilers until
  version 12.  \fIOnly\fR use this option if you need to remain
  compatible with existing code produced by those previous compiler
! versions or older versions of GCC.
! .IP \fB\-mpc32\fR 4
  .IX Item "-mpc32"
  .PD 0
! .IP \fB\-mpc64\fR 4
  .IX Item "-mpc64"
! .IP \fB\-mpc80\fR 4
  .IX Item "-mpc80"
  .PD
! Set 80387 floating\-point precision to 32, 64 or 80 bits.  When \fB\-mpc32\fR
! is specified, the significands of results of floating\-point operations are
  rounded to 24 bits (single precision); \fB\-mpc64\fR rounds the
! significands of results of floating\-point operations to 53 bits (double
  precision) and \fB\-mpc80\fR rounds the significands of results of
! floating\-point operations to 64 bits (extended double precision), which is
! the default.  When this option is used, floating\-point operations in higher
! precisions are not available to the programmer without setting the FPU
  control word explicitly.
  .Sp
! Setting the rounding of floating\-point operations to less than the default
  80 bits can speed some programs by 2% or more.  Note that some mathematical
! libraries assume that extended\-precision (80\-bit) floating\-point operations
  are enabled by default; routines in such libraries could suffer significant
! loss of accuracy, typically through so\-called "catastrophic cancellation",
  when this option is used to set the precision to less than extended precision.
! .IP \fB\-mdaz\-ftz\fR 4
  .IX Item "-mdaz-ftz"
! The flush\-to\-zero (FTZ) and denormals\-are\-zero (DAZ) flags in the MXCSR register
! are used to control floating\-point calculations.SSE and AVX instructions
! including scalar and vector instructions could benefit from enabling the FTZ
! and DAZ flags when \fB\-mdaz\-ftz\fR is specified. Don\*(Aqt set FTZ/DAZ flags
  when \fB\-mno\-daz\-ftz\fR or \fB\-shared\fR is specified, \fB\-mdaz\-ftz\fR
! will set FTZ/DAZ flags even with \fB\-shared\fR.
! .IP \fB\-mstackrealign\fR 4
  .IX Item "-mstackrealign"
  Realign the stack at entry.  On the x86, the \fB\-mstackrealign\fR
  option generates an alternate prologue and epilogue that realigns the
! run\-time stack if necessary.  This supports mixing legacy codes that keep
  4\-byte stack alignment with modern codes that keep 16\-byte stack alignment for
! SSE compatibility.  See also the attribute \f(CW\*(C`force_align_arg_pointer\*(C'\fR,
  applicable to individual functions.
! .IP \fB\-mpreferred\-stack\-boundary=\fR\fInum\fR 4
  .IX Item "-mpreferred-stack-boundary=num"
  Attempt to keep the stack boundary aligned to a 2 raised to \fInum\fR
  byte boundary.  If \fB\-mpreferred\-stack\-boundary\fR is not specified,
  the default is 4 (16 bytes or 128 bits).
  .Sp
  \&\fBWarning:\fR When generating code for the x86\-64 architecture with
! SSE extensions disabled, \fB\-mpreferred\-stack\-boundary=3\fR can be
  used to keep the stack boundary aligned to 8 byte boundary.  Since
! x86\-64 ABI require 16 byte stack alignment, this is ABI incompatible and
  intended to be used in controlled environment where stack space is
  important limitation.  This option leads to wrong code when functions
  compiled with 16 byte stack alignment (such as functions from a standard
! library) are called with misaligned stack.  In this case, SSE
  instructions may lead to misaligned memory access traps.  In addition,
  variable arguments are handled incorrectly for 16 byte aligned
  objects (including x87 long double and _\|_int128), leading to wrong
  results.  You must build all modules with
  \&\fB\-mpreferred\-stack\-boundary=3\fR, including any libraries.  This
  includes the system libraries and startup modules.
! .IP \fB\-mincoming\-stack\-boundary=\fR\fInum\fR 4
  .IX Item "-mincoming-stack-boundary=num"
  Assume the incoming stack is aligned to a 2 raised to \fInum\fR byte
  boundary.  If \fB\-mincoming\-stack\-boundary\fR is not specified,
*************** the one specified by \fB\-mpreferred\-st
*** 34972,34979 ****
  .Sp
  On Pentium and Pentium Pro, \f(CW\*(C`double\*(C'\fR and \f(CW\*(C`long double\*(C'\fR values
  should be aligned to an 8\-byte boundary (see \fB\-malign\-double\fR) or
! suffer significant run time performance penalties.  On Pentium \s-1III,\s0 the
! Streaming \s-1SIMD\s0 Extension (\s-1SSE\s0) data type \f(CW\*(C`_\|_m128\*(C'\fR may not work
  properly if it is not 16\-byte aligned.
  .Sp
  To ensure proper alignment of this values on the stack, the stack boundary
--- 34906,34913 ----
  .Sp
  On Pentium and Pentium Pro, \f(CW\*(C`double\*(C'\fR and \f(CW\*(C`long double\*(C'\fR values
  should be aligned to an 8\-byte boundary (see \fB\-malign\-double\fR) or
! suffer significant run time performance penalties.  On Pentium III, the
! Streaming SIMD Extension (SSE) data type \f(CW\*(C`_\|_m128\*(C'\fR may not work
  properly if it is not 16\-byte aligned.
  .Sp
  To ensure proper alignment of this values on the stack, the stack boundary
*************** This extra alignment does consume extra
*** 34988,35420 ****
  increases code size.  Code that is sensitive to stack space usage, such
  as embedded systems and operating system kernels, may want to reduce the
  preferred alignment to \fB\-mpreferred\-stack\-boundary=2\fR.
! .IP "\fB\-mmmx\fR" 4
  .IX Item "-mmmx"
  .PD 0
! .IP "\fB\-msse\fR" 4
  .IX Item "-msse"
! .IP "\fB\-msse2\fR" 4
  .IX Item "-msse2"
! .IP "\fB\-msse3\fR" 4
  .IX Item "-msse3"
! .IP "\fB\-mssse3\fR" 4
  .IX Item "-mssse3"
! .IP "\fB\-msse4\fR" 4
  .IX Item "-msse4"
! .IP "\fB\-msse4a\fR" 4
  .IX Item "-msse4a"
! .IP "\fB\-msse4.1\fR" 4
  .IX Item "-msse4.1"
! .IP "\fB\-msse4.2\fR" 4
  .IX Item "-msse4.2"
! .IP "\fB\-mavx\fR" 4
  .IX Item "-mavx"
! .IP "\fB\-mavx2\fR" 4
  .IX Item "-mavx2"
! .IP "\fB\-mavx512f\fR" 4
  .IX Item "-mavx512f"
! .IP "\fB\-mavx512cd\fR" 4
  .IX Item "-mavx512cd"
! .IP "\fB\-mavx512vl\fR" 4
  .IX Item "-mavx512vl"
! .IP "\fB\-mavx512bw\fR" 4
  .IX Item "-mavx512bw"
! .IP "\fB\-mavx512dq\fR" 4
  .IX Item "-mavx512dq"
! .IP "\fB\-mavx512ifma\fR" 4
  .IX Item "-mavx512ifma"
! .IP "\fB\-mavx512vbmi\fR" 4
  .IX Item "-mavx512vbmi"
! .IP "\fB\-msha\fR" 4
  .IX Item "-msha"
! .IP "\fB\-maes\fR" 4
  .IX Item "-maes"
! .IP "\fB\-mpclmul\fR" 4
  .IX Item "-mpclmul"
! .IP "\fB\-mclflushopt\fR" 4
  .IX Item "-mclflushopt"
! .IP "\fB\-mclwb\fR" 4
  .IX Item "-mclwb"
! .IP "\fB\-mfsgsbase\fR" 4
  .IX Item "-mfsgsbase"
! .IP "\fB\-mptwrite\fR" 4
  .IX Item "-mptwrite"
! .IP "\fB\-mrdrnd\fR" 4
  .IX Item "-mrdrnd"
! .IP "\fB\-mf16c\fR" 4
  .IX Item "-mf16c"
! .IP "\fB\-mfma\fR" 4
  .IX Item "-mfma"
! .IP "\fB\-mpconfig\fR" 4
  .IX Item "-mpconfig"
! .IP "\fB\-mwbnoinvd\fR" 4
  .IX Item "-mwbnoinvd"
! .IP "\fB\-mfma4\fR" 4
  .IX Item "-mfma4"
! .IP "\fB\-mprfchw\fR" 4
  .IX Item "-mprfchw"
! .IP "\fB\-mrdpid\fR" 4
  .IX Item "-mrdpid"
! .IP "\fB\-mrdseed\fR" 4
  .IX Item "-mrdseed"
! .IP "\fB\-msgx\fR" 4
  .IX Item "-msgx"
! .IP "\fB\-mxop\fR" 4
  .IX Item "-mxop"
! .IP "\fB\-mlwp\fR" 4
  .IX Item "-mlwp"
! .IP "\fB\-m3dnow\fR" 4
  .IX Item "-m3dnow"
! .IP "\fB\-m3dnowa\fR" 4
  .IX Item "-m3dnowa"
! .IP "\fB\-mpopcnt\fR" 4
  .IX Item "-mpopcnt"
! .IP "\fB\-mabm\fR" 4
  .IX Item "-mabm"
! .IP "\fB\-madx\fR" 4
  .IX Item "-madx"
! .IP "\fB\-mbmi\fR" 4
  .IX Item "-mbmi"
! .IP "\fB\-mbmi2\fR" 4
  .IX Item "-mbmi2"
! .IP "\fB\-mlzcnt\fR" 4
  .IX Item "-mlzcnt"
! .IP "\fB\-mfxsr\fR" 4
  .IX Item "-mfxsr"
! .IP "\fB\-mxsave\fR" 4
  .IX Item "-mxsave"
! .IP "\fB\-mxsaveopt\fR" 4
  .IX Item "-mxsaveopt"
! .IP "\fB\-mxsavec\fR" 4
  .IX Item "-mxsavec"
! .IP "\fB\-mxsaves\fR" 4
  .IX Item "-mxsaves"
! .IP "\fB\-mrtm\fR" 4
  .IX Item "-mrtm"
! .IP "\fB\-mhle\fR" 4
  .IX Item "-mhle"
! .IP "\fB\-mtbm\fR" 4
  .IX Item "-mtbm"
! .IP "\fB\-mmwaitx\fR" 4
  .IX Item "-mmwaitx"
! .IP "\fB\-mclzero\fR" 4
  .IX Item "-mclzero"
! .IP "\fB\-mpku\fR" 4
  .IX Item "-mpku"
! .IP "\fB\-mavx512vbmi2\fR" 4
  .IX Item "-mavx512vbmi2"
! .IP "\fB\-mavx512bf16\fR" 4
  .IX Item "-mavx512bf16"
! .IP "\fB\-mavx512fp16\fR" 4
  .IX Item "-mavx512fp16"
! .IP "\fB\-mgfni\fR" 4
  .IX Item "-mgfni"
! .IP "\fB\-mvaes\fR" 4
  .IX Item "-mvaes"
! .IP "\fB\-mwaitpkg\fR" 4
  .IX Item "-mwaitpkg"
! .IP "\fB\-mvpclmulqdq\fR" 4
  .IX Item "-mvpclmulqdq"
! .IP "\fB\-mavx512bitalg\fR" 4
  .IX Item "-mavx512bitalg"
! .IP "\fB\-mmovdiri\fR" 4
  .IX Item "-mmovdiri"
! .IP "\fB\-mmovdir64b\fR" 4
  .IX Item "-mmovdir64b"
! .IP "\fB\-menqcmd\fR" 4
  .IX Item "-menqcmd"
! .IP "\fB\-muintr\fR" 4
  .IX Item "-muintr"
! .IP "\fB\-mtsxldtrk\fR" 4
  .IX Item "-mtsxldtrk"
! .IP "\fB\-mavx512vpopcntdq\fR" 4
  .IX Item "-mavx512vpopcntdq"
! .IP "\fB\-mavx512vp2intersect\fR" 4
  .IX Item "-mavx512vp2intersect"
! .IP "\fB\-mavx512vnni\fR" 4
  .IX Item "-mavx512vnni"
! .IP "\fB\-mavxvnni\fR" 4
  .IX Item "-mavxvnni"
! .IP "\fB\-mcldemote\fR" 4
  .IX Item "-mcldemote"
! .IP "\fB\-mserialize\fR" 4
  .IX Item "-mserialize"
! .IP "\fB\-mamx\-tile\fR" 4
  .IX Item "-mamx-tile"
! .IP "\fB\-mamx\-int8\fR" 4
  .IX Item "-mamx-int8"
! .IP "\fB\-mamx\-bf16\fR" 4
  .IX Item "-mamx-bf16"
! .IP "\fB\-mhreset\fR" 4
  .IX Item "-mhreset"
! .IP "\fB\-mkl\fR" 4
  .IX Item "-mkl"
! .IP "\fB\-mwidekl\fR" 4
  .IX Item "-mwidekl"
! .IP "\fB\-mavxifma\fR" 4
  .IX Item "-mavxifma"
! .IP "\fB\-mavxvnniint8\fR" 4
  .IX Item "-mavxvnniint8"
! .IP "\fB\-mavxneconvert\fR" 4
  .IX Item "-mavxneconvert"
! .IP "\fB\-mcmpccxadd\fR" 4
  .IX Item "-mcmpccxadd"
! .IP "\fB\-mamx\-fp16\fR" 4
  .IX Item "-mamx-fp16"
! .IP "\fB\-mprefetchi\fR" 4
  .IX Item "-mprefetchi"
! .IP "\fB\-mraoint\fR" 4
  .IX Item "-mraoint"
! .IP "\fB\-mamx\-complex\fR" 4
  .IX Item "-mamx-complex"
! .IP "\fB\-mavxvnniint16\fR" 4
  .IX Item "-mavxvnniint16"
! .IP "\fB\-msm3\fR" 4
  .IX Item "-msm3"
! .IP "\fB\-msha512\fR" 4
  .IX Item "-msha512"
! .IP "\fB\-msm4\fR" 4
  .IX Item "-msm4"
! .IP "\fB\-mapxf\fR" 4
  .IX Item "-mapxf"
! .IP "\fB\-musermsr\fR" 4
  .IX Item "-musermsr"
! .IP "\fB\-mavx10.1\fR" 4
  .IX Item "-mavx10.1"
! .IP "\fB\-mavx10.1\-256\fR" 4
  .IX Item "-mavx10.1-256"
! .IP "\fB\-mavx10.1\-512\fR" 4
  .IX Item "-mavx10.1-512"
! .IP "\fB\-mavx10.2\fR" 4
  .IX Item "-mavx10.2"
! .IP "\fB\-mamx\-avx512\fR" 4
  .IX Item "-mamx-avx512"
! .IP "\fB\-mamx\-tf32\fR" 4
  .IX Item "-mamx-tf32"
! .IP "\fB\-mamx\-transpose\fR" 4
  .IX Item "-mamx-transpose"
! .IP "\fB\-mamx\-fp8\fR" 4
  .IX Item "-mamx-fp8"
! .IP "\fB\-mmovrs\fR" 4
  .IX Item "-mmovrs"
! .IP "\fB\-mamx\-movrs\fR" 4
  .IX Item "-mamx-movrs"
  .PD
! These switches enable the use of instructions in the \s-1MMX, SSE,
  AVX512CD, AVX512VL, AVX512BW, AVX512DQ, AVX512IFMA, AVX512VBMI, SHA, AES,
  PCLMUL, CLFLUSHOPT, CLWB, FSGSBASE, PTWRITE, RDRND, F16C, FMA, PCONFIG,
! WBNOINVD, FMA4, PREFETCHW, RDPID, RDSEED, SGX, XOP, LWP,\s0 3DNow!,
! enhanced 3DNow!, \s-1POPCNT, ABM, ADX, BMI, BMI2, LZCNT, FXSR, XSAVE, XSAVEOPT,
  XSAVEC, XSAVES, RTM, HLE, TBM, MWAITX, CLZERO, PKU, AVX512VBMI2, GFNI, VAES,
  WAITPKG, VPCLMULQDQ, AVX512BITALG, MOVDIRI, MOVDIR64B, AVX512BF16, ENQCMD,
  AVX512VPOPCNTDQ, AVX512VNNI, SERIALIZE, UINTR, HRESET, AMXTILE, AMXINT8,
  AMXBF16, KL, WIDEKL, AVXVNNI, AVX512\-FP16, AVXIFMA, AVXVNNIINT8, AVXNECONVERT,
! CMPCCXADD, AMX\-FP16, PREFETCHI, RAOINT,\s0 AMX-COMPLEX, \s-1AVXVNNIINT16, SM3, SHA512,
! SM4, APX_F, USER_MSR, AVX10.1, AVX10.2, AMX\-AVX512, AMX\-TF32,\s0 AMX-TRANSPOSE,
! \&\s-1AMX\-FP8, MOVRS,\s0 AMX-MOVRS or \s-1CLDEMOTE\s0 extended instruction sets. Each has a
  corresponding \fB\-mno\-\fR option to disable use of these instructions.
  .Sp
! These extensions are also available as built-in functions: see
! \&\fBx86 Built-in Functions\fR, for details of the functions enabled and
  disabled by these switches.
  .Sp
! Note that \fB\-msse4\fR enables both \s-1SSE4.1\s0 and \s-1SSE4.2\s0 support,
  while \fB\-mno\-sse4\fR turns off those features; neither form of the
! option affects \s-1SSE4A\s0 support, controlled separately by
  \&\fB\-msse4a\fR.
  .Sp
! To generate \s-1SSE/SSE2\s0 instructions automatically from floating-point
  code (as opposed to 387 instructions), see \fB\-mfpmath=sse\fR.
  .Sp
! \&\s-1GCC\s0 depresses SSEx instructions when \fB\-mavx\fR is used. Instead, it
! generates new \s-1AVX\s0 instructions or \s-1AVX\s0 equivalence for all SSEx instructions
  when needed.
  .Sp
! These options enable \s-1GCC\s0 to use these extended instructions in
  generated code, even without \fB\-mfpmath=sse\fR.  Applications that
! perform run-time \s-1CPU\s0 detection must compile separate files for each
  supported architecture, using the appropriate flags.  In particular,
! the file containing the \s-1CPU\s0 detection code should be compiled without
  these options.
! .IP "\fB\-mdump\-tune\-features\fR" 4
  .IX Item "-mdump-tune-features"
! This option instructs \s-1GCC\s0 to dump the names of the x86 performance
  tuning features and default settings. The names can be used in
! \&\fB\-mtune\-ctrl=\fR\fIfeature-list\fR.
! .IP "\fB\-mtune\-ctrl=\fR\fIfeature-list\fR" 4
  .IX Item "-mtune-ctrl=feature-list"
  This option is used to do fine grain control of x86 code generation features.
! \&\fIfeature-list\fR is a comma separated list of \fIfeature\fR names. See also
  \&\fB\-mdump\-tune\-features\fR. When specified, the \fIfeature\fR is turned
  on if it is not preceded with \fB^\fR, otherwise, it is turned off.
! \&\fB\-mtune\-ctrl=\fR\fIfeature-list\fR is intended to be used by \s-1GCC\s0
  developers. Using it may lead to code paths not covered by testing and can
  potentially result in compiler ICEs or runtime errors.
! .IP "\fB\-mno\-default\fR" 4
  .IX Item "-mno-default"
! This option instructs \s-1GCC\s0 to turn off all tunable features. See also
! \&\fB\-mtune\-ctrl=\fR\fIfeature-list\fR and \fB\-mdump\-tune\-features\fR.
! .IP "\fB\-mcld\fR" 4
  .IX Item "-mcld"
! This option instructs \s-1GCC\s0 to emit a \f(CW\*(C`cld\*(C'\fR instruction in the prologue
  of functions that use string instructions.  String instructions depend on
! the \s-1DF\s0 flag to select between autoincrement or autodecrement mode.  While the
! \&\s-1ABI\s0 specifies the \s-1DF\s0 flag to be cleared on function entry, some operating
! systems violate this specification by not clearing the \s-1DF\s0 flag in their
! exception dispatchers.  The exception handler can be invoked with the \s-1DF\s0 flag
  set, which leads to wrong direction mode when string instructions are used.
  This option can be enabled by default on 32\-bit x86 targets by configuring
! \&\s-1GCC\s0 with the \fB\-\-enable\-cld\fR configure option.  Generation of \f(CW\*(C`cld\*(C'\fR
  instructions can be suppressed with the \fB\-mno\-cld\fR compiler option
  in this case.
! .IP "\fB\-mvzeroupper\fR" 4
  .IX Item "-mvzeroupper"
! This option instructs \s-1GCC\s0 to emit a \f(CW\*(C`vzeroupper\*(C'\fR instruction
  before a transfer of control flow out of the function to minimize
! the \s-1AVX\s0 to \s-1SSE\s0 transition penalty as well as remove unnecessary \f(CW\*(C`zeroupper\*(C'\fR
  intrinsics.
! .IP "\fB\-mprefer\-avx128\fR" 4
  .IX Item "-mprefer-avx128"
! This option instructs \s-1GCC\s0 to use 128\-bit \s-1AVX\s0 instructions instead of
! 256\-bit \s-1AVX\s0 instructions in the auto-vectorizer.
! .IP "\fB\-mprefer\-vector\-width=\fR\fIopt\fR" 4
  .IX Item "-mprefer-vector-width=opt"
! This option instructs \s-1GCC\s0 to use \fIopt\fR\-bit vector width in instructions
  instead of default on the selected platform.
! .IP "\fB\-mpartial\-vector\-fp\-math\fR" 4
  .IX Item "-mpartial-vector-fp-math"
! This option enables \s-1GCC\s0 to generate floating-point operations that might
! affect the set of floating-point status flags on partial vectors, where
! vector elements reside in the low part of the 128\-bit \s-1SSE\s0 register.  Unless
  \&\fB\-fno\-trapping\-math\fR is specified, the compiler guarantees correct
  behavior by sanitizing all input operands to have zeroes in the unused
! upper part of the vector register.  Note that by using built-in functions
  or inline assembly with partial vector arguments, NaNs, denormal or invalid
  values can leak into the upper part of the vector, causing possible
  performance issues when \fB\-fno\-trapping\-math\fR is in effect.  These
  issues can be mitigated by manually sanitizing the upper part of the partial
  vector argument register or by using \fB\-mdaz\-ftz\fR to set
! denormals-are-zero (\s-1DAZ\s0) flag in the \s-1MXCSR\s0 register.
  .Sp
  This option is enabled by default.
! .IP "\fB\-mmove\-max=\fR\fIbits\fR" 4
  .IX Item "-mmove-max=bits"
! This option instructs \s-1GCC\s0 to set the maximum number of bits can be
  moved from memory to memory efficiently to \fIbits\fR.  The valid
  \&\fIbits\fR are 128, 256 and 512.
! .IP "\fB\-mstore\-max=\fR\fIbits\fR" 4
  .IX Item "-mstore-max=bits"
! This option instructs \s-1GCC\s0 to set the maximum number of bits can be
  stored to memory efficiently to \fIbits\fR.  The valid \fIbits\fR are
  128, 256 and 512.
  .RS 4
! .IP "\fBnone\fR" 4
  .IX Item "none"
! No extra limitations applied to \s-1GCC\s0 other than defined by the selected platform.
! .IP "\fB128\fR" 4
  .IX Item "128"
  Prefer 128\-bit vector width for instructions.
! .IP "\fB256\fR" 4
  .IX Item "256"
  Prefer 256\-bit vector width for instructions.
! .IP "\fB512\fR" 4
  .IX Item "512"
  Prefer 512\-bit vector width for instructions.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mnoreturn\-no\-callee\-saved\-registers\fR" 4
  .IX Item "-mnoreturn-no-callee-saved-registers"
  This option optimizes functions with \f(CW\*(C`noreturn\*(C'\fR attribute or
! \&\f(CW\*(C`_Noreturn\*(C'\fR specifier by not saving in the function prologue callee-saved
  registers which are used in the function (except for the \f(CW\*(C`BP\*(C'\fR
  register).  This option can interfere with debugging of the caller of the
  \&\f(CW\*(C`noreturn\*(C'\fR function or any function further up in the call stack, so it
  is not enabled by default.
! .IP "\fB\-mcx16\fR" 4
  .IX Item "-mcx16"
! This option enables \s-1GCC\s0 to generate \f(CW\*(C`CMPXCHG16B\*(C'\fR instructions in 64\-bit
! code to implement compare-and-exchange operations on 16\-byte aligned 128\-bit
  objects.  This is useful for atomic updates of data structures exceeding one
  machine word in size.  The compiler uses this instruction to implement
  \&\fB_\|_sync Builtins\fR.  However, for \fB_\|_atomic Builtins\fR operating on
  128\-bit integers, a library call is always used.
! .IP "\fB\-msahf\fR" 4
  .IX Item "-msahf"
  This option enables generation of \f(CW\*(C`SAHF\*(C'\fR instructions in 64\-bit code.
  Early Intel Pentium 4 CPUs with Intel 64 support,
  prior to the introduction of Pentium 4 G1 step in December 2005,
  lacked the \f(CW\*(C`LAHF\*(C'\fR and \f(CW\*(C`SAHF\*(C'\fR instructions
! which are supported by \s-1AMD64.\s0
  These are load and store instructions, respectively, for certain status flags.
  In 64\-bit mode, the \f(CW\*(C`SAHF\*(C'\fR instruction is used to optimize \f(CW\*(C`fmod\*(C'\fR,
! \&\f(CW\*(C`drem\*(C'\fR, and \f(CW\*(C`remainder\*(C'\fR built-in functions;
  see \fBOther Builtins\fR for details.
! .IP "\fB\-mmovbe\fR" 4
  .IX Item "-mmovbe"
  This option enables use of the \f(CW\*(C`movbe\*(C'\fR instruction to optimize
  byte swapping of four and eight byte entities.
! .IP "\fB\-mshstk\fR" 4
  .IX Item "-mshstk"
! The \fB\-mshstk\fR option enables shadow stack built-in functions
! from x86 Control-flow Enforcement Technology (\s-1CET\s0).
! .IP "\fB\-mcrc32\fR" 4
  .IX Item "-mcrc32"
! This option enables built-in functions \f(CW\*(C`_\|_builtin_ia32_crc32qi\*(C'\fR,
  \&\f(CW\*(C`_\|_builtin_ia32_crc32hi\*(C'\fR, \f(CW\*(C`_\|_builtin_ia32_crc32si\*(C'\fR and
  \&\f(CW\*(C`_\|_builtin_ia32_crc32di\*(C'\fR to generate the \f(CW\*(C`crc32\*(C'\fR machine instruction.
! .IP "\fB\-mmwait\fR" 4
  .IX Item "-mmwait"
! This option enables built-in functions \f(CW\*(C`_\|_builtin_ia32_monitor\*(C'\fR,
  and \f(CW\*(C`_\|_builtin_ia32_mwait\*(C'\fR to generate the \f(CW\*(C`monitor\*(C'\fR and
  \&\f(CW\*(C`mwait\*(C'\fR machine instructions.
! .IP "\fB\-mrecip\fR" 4
  .IX Item "-mrecip"
  This option enables use of \f(CW\*(C`RCPSS\*(C'\fR and \f(CW\*(C`RSQRTSS\*(C'\fR instructions
  (and their vectorized variants \f(CW\*(C`RCPPS\*(C'\fR and \f(CW\*(C`RSQRTPS\*(C'\fR)
! with an additional Newton-Raphson step
  to increase precision instead of \f(CW\*(C`DIVSS\*(C'\fR and \f(CW\*(C`SQRTSS\*(C'\fR
  (and their vectorized
! variants) for single-precision floating-point arguments.  These instructions
  are generated only when \fB\-funsafe\-math\-optimizations\fR is enabled
  together with \fB\-ffinite\-math\-only\fR and \fB\-fno\-trapping\-math\fR.
  Note that while the throughput of the sequence is higher than the throughput
! of the non-reciprocal instruction, the precision of the sequence can be
  decreased by up to 2 ulp (i.e. the inverse of 1.0 equals 0.99999994).
  .Sp
! Note that \s-1GCC\s0 implements \f(CW\*(C`1.0f/sqrtf(\f(CIx\f(CW)\*(C'\fR in terms of \f(CW\*(C`RSQRTSS\*(C'\fR
  (or \f(CW\*(C`RSQRTPS\*(C'\fR) already with \fB\-ffast\-math\fR (or the above option
! combination), and doesn't need \fB\-mrecip\fR.
  .Sp
! Also note that \s-1GCC\s0 emits the above sequence with additional Newton-Raphson step
! for vectorized single-float division and vectorized \f(CW\*(C`sqrtf(\f(CIx\f(CW)\*(C'\fR
  already with \fB\-ffast\-math\fR (or the above option combination), and
! doesn't need \fB\-mrecip\fR.
! .IP "\fB\-mrecip=\fR\fIopt\fR" 4
  .IX Item "-mrecip=opt"
  This option controls which reciprocal estimate instructions
! may be used.  \fIopt\fR is a comma-separated list of options, which may
  be preceded by a \fB!\fR to invert the option:
  .RS 4
! .IP "\fBall\fR" 4
  .IX Item "all"
  Enable all estimate instructions.
! .IP "\fBdefault\fR" 4
  .IX Item "default"
  Enable the default instructions, equivalent to \fB\-mrecip\fR.
! .IP "\fBnone\fR" 4
  .IX Item "none"
  Disable all estimate instructions, equivalent to \fB\-mno\-recip\fR.
! .IP "\fBdiv\fR" 4
  .IX Item "div"
  Enable the approximation for scalar division.
! .IP "\fBvec-div\fR" 4
  .IX Item "vec-div"
  Enable the approximation for vectorized division.
! .IP "\fBsqrt\fR" 4
  .IX Item "sqrt"
  Enable the approximation for scalar square root.
! .IP "\fBvec-sqrt\fR" 4
  .IX Item "vec-sqrt"
  Enable the approximation for vectorized square root.
  .RE
--- 34922,35354 ----
  increases code size.  Code that is sensitive to stack space usage, such
  as embedded systems and operating system kernels, may want to reduce the
  preferred alignment to \fB\-mpreferred\-stack\-boundary=2\fR.
! .IP \fB\-mmmx\fR 4
  .IX Item "-mmmx"
  .PD 0
! .IP \fB\-msse\fR 4
  .IX Item "-msse"
! .IP \fB\-msse2\fR 4
  .IX Item "-msse2"
! .IP \fB\-msse3\fR 4
  .IX Item "-msse3"
! .IP \fB\-mssse3\fR 4
  .IX Item "-mssse3"
! .IP \fB\-msse4\fR 4
  .IX Item "-msse4"
! .IP \fB\-msse4a\fR 4
  .IX Item "-msse4a"
! .IP \fB\-msse4.1\fR 4
  .IX Item "-msse4.1"
! .IP \fB\-msse4.2\fR 4
  .IX Item "-msse4.2"
! .IP \fB\-mavx\fR 4
  .IX Item "-mavx"
! .IP \fB\-mavx2\fR 4
  .IX Item "-mavx2"
! .IP \fB\-mavx512f\fR 4
  .IX Item "-mavx512f"
! .IP \fB\-mavx512cd\fR 4
  .IX Item "-mavx512cd"
! .IP \fB\-mavx512vl\fR 4
  .IX Item "-mavx512vl"
! .IP \fB\-mavx512bw\fR 4
  .IX Item "-mavx512bw"
! .IP \fB\-mavx512dq\fR 4
  .IX Item "-mavx512dq"
! .IP \fB\-mavx512ifma\fR 4
  .IX Item "-mavx512ifma"
! .IP \fB\-mavx512vbmi\fR 4
  .IX Item "-mavx512vbmi"
! .IP \fB\-msha\fR 4
  .IX Item "-msha"
! .IP \fB\-maes\fR 4
  .IX Item "-maes"
! .IP \fB\-mpclmul\fR 4
  .IX Item "-mpclmul"
! .IP \fB\-mclflushopt\fR 4
  .IX Item "-mclflushopt"
! .IP \fB\-mclwb\fR 4
  .IX Item "-mclwb"
! .IP \fB\-mfsgsbase\fR 4
  .IX Item "-mfsgsbase"
! .IP \fB\-mptwrite\fR 4
  .IX Item "-mptwrite"
! .IP \fB\-mrdrnd\fR 4
  .IX Item "-mrdrnd"
! .IP \fB\-mf16c\fR 4
  .IX Item "-mf16c"
! .IP \fB\-mfma\fR 4
  .IX Item "-mfma"
! .IP \fB\-mpconfig\fR 4
  .IX Item "-mpconfig"
! .IP \fB\-mwbnoinvd\fR 4
  .IX Item "-mwbnoinvd"
! .IP \fB\-mfma4\fR 4
  .IX Item "-mfma4"
! .IP \fB\-mprfchw\fR 4
  .IX Item "-mprfchw"
! .IP \fB\-mrdpid\fR 4
  .IX Item "-mrdpid"
! .IP \fB\-mrdseed\fR 4
  .IX Item "-mrdseed"
! .IP \fB\-msgx\fR 4
  .IX Item "-msgx"
! .IP \fB\-mxop\fR 4
  .IX Item "-mxop"
! .IP \fB\-mlwp\fR 4
  .IX Item "-mlwp"
! .IP \fB\-m3dnow\fR 4
  .IX Item "-m3dnow"
! .IP \fB\-m3dnowa\fR 4
  .IX Item "-m3dnowa"
! .IP \fB\-mpopcnt\fR 4
  .IX Item "-mpopcnt"
! .IP \fB\-mabm\fR 4
  .IX Item "-mabm"
! .IP \fB\-madx\fR 4
  .IX Item "-madx"
! .IP \fB\-mbmi\fR 4
  .IX Item "-mbmi"
! .IP \fB\-mbmi2\fR 4
  .IX Item "-mbmi2"
! .IP \fB\-mlzcnt\fR 4
  .IX Item "-mlzcnt"
! .IP \fB\-mfxsr\fR 4
  .IX Item "-mfxsr"
! .IP \fB\-mxsave\fR 4
  .IX Item "-mxsave"
! .IP \fB\-mxsaveopt\fR 4
  .IX Item "-mxsaveopt"
! .IP \fB\-mxsavec\fR 4
  .IX Item "-mxsavec"
! .IP \fB\-mxsaves\fR 4
  .IX Item "-mxsaves"
! .IP \fB\-mrtm\fR 4
  .IX Item "-mrtm"
! .IP \fB\-mhle\fR 4
  .IX Item "-mhle"
! .IP \fB\-mtbm\fR 4
  .IX Item "-mtbm"
! .IP \fB\-mmwaitx\fR 4
  .IX Item "-mmwaitx"
! .IP \fB\-mclzero\fR 4
  .IX Item "-mclzero"
! .IP \fB\-mpku\fR 4
  .IX Item "-mpku"
! .IP \fB\-mavx512vbmi2\fR 4
  .IX Item "-mavx512vbmi2"
! .IP \fB\-mavx512bf16\fR 4
  .IX Item "-mavx512bf16"
! .IP \fB\-mavx512fp16\fR 4
  .IX Item "-mavx512fp16"
! .IP \fB\-mgfni\fR 4
  .IX Item "-mgfni"
! .IP \fB\-mvaes\fR 4
  .IX Item "-mvaes"
! .IP \fB\-mwaitpkg\fR 4
  .IX Item "-mwaitpkg"
! .IP \fB\-mvpclmulqdq\fR 4
  .IX Item "-mvpclmulqdq"
! .IP \fB\-mavx512bitalg\fR 4
  .IX Item "-mavx512bitalg"
! .IP \fB\-mmovdiri\fR 4
  .IX Item "-mmovdiri"
! .IP \fB\-mmovdir64b\fR 4
  .IX Item "-mmovdir64b"
! .IP \fB\-menqcmd\fR 4
  .IX Item "-menqcmd"
! .IP \fB\-muintr\fR 4
  .IX Item "-muintr"
! .IP \fB\-mtsxldtrk\fR 4
  .IX Item "-mtsxldtrk"
! .IP \fB\-mavx512vpopcntdq\fR 4
  .IX Item "-mavx512vpopcntdq"
! .IP \fB\-mavx512vp2intersect\fR 4
  .IX Item "-mavx512vp2intersect"
! .IP \fB\-mavx512vnni\fR 4
  .IX Item "-mavx512vnni"
! .IP \fB\-mavxvnni\fR 4
  .IX Item "-mavxvnni"
! .IP \fB\-mcldemote\fR 4
  .IX Item "-mcldemote"
! .IP \fB\-mserialize\fR 4
  .IX Item "-mserialize"
! .IP \fB\-mamx\-tile\fR 4
  .IX Item "-mamx-tile"
! .IP \fB\-mamx\-int8\fR 4
  .IX Item "-mamx-int8"
! .IP \fB\-mamx\-bf16\fR 4
  .IX Item "-mamx-bf16"
! .IP \fB\-mhreset\fR 4
  .IX Item "-mhreset"
! .IP \fB\-mkl\fR 4
  .IX Item "-mkl"
! .IP \fB\-mwidekl\fR 4
  .IX Item "-mwidekl"
! .IP \fB\-mavxifma\fR 4
  .IX Item "-mavxifma"
! .IP \fB\-mavxvnniint8\fR 4
  .IX Item "-mavxvnniint8"
! .IP \fB\-mavxneconvert\fR 4
  .IX Item "-mavxneconvert"
! .IP \fB\-mcmpccxadd\fR 4
  .IX Item "-mcmpccxadd"
! .IP \fB\-mamx\-fp16\fR 4
  .IX Item "-mamx-fp16"
! .IP \fB\-mprefetchi\fR 4
  .IX Item "-mprefetchi"
! .IP \fB\-mraoint\fR 4
  .IX Item "-mraoint"
! .IP \fB\-mamx\-complex\fR 4
  .IX Item "-mamx-complex"
! .IP \fB\-mavxvnniint16\fR 4
  .IX Item "-mavxvnniint16"
! .IP \fB\-msm3\fR 4
  .IX Item "-msm3"
! .IP \fB\-msha512\fR 4
  .IX Item "-msha512"
! .IP \fB\-msm4\fR 4
  .IX Item "-msm4"
! .IP \fB\-mapxf\fR 4
  .IX Item "-mapxf"
! .IP \fB\-musermsr\fR 4
  .IX Item "-musermsr"
! .IP \fB\-mavx10.1\fR 4
  .IX Item "-mavx10.1"
! .IP \fB\-mavx10.1\-256\fR 4
  .IX Item "-mavx10.1-256"
! .IP \fB\-mavx10.1\-512\fR 4
  .IX Item "-mavx10.1-512"
! .IP \fB\-mavx10.2\fR 4
  .IX Item "-mavx10.2"
! .IP \fB\-mamx\-avx512\fR 4
  .IX Item "-mamx-avx512"
! .IP \fB\-mamx\-tf32\fR 4
  .IX Item "-mamx-tf32"
! .IP \fB\-mamx\-transpose\fR 4
  .IX Item "-mamx-transpose"
! .IP \fB\-mamx\-fp8\fR 4
  .IX Item "-mamx-fp8"
! .IP \fB\-mmovrs\fR 4
  .IX Item "-mmovrs"
! .IP \fB\-mamx\-movrs\fR 4
  .IX Item "-mamx-movrs"
  .PD
! These switches enable the use of instructions in the MMX, SSE,
  AVX512CD, AVX512VL, AVX512BW, AVX512DQ, AVX512IFMA, AVX512VBMI, SHA, AES,
  PCLMUL, CLFLUSHOPT, CLWB, FSGSBASE, PTWRITE, RDRND, F16C, FMA, PCONFIG,
! WBNOINVD, FMA4, PREFETCHW, RDPID, RDSEED, SGX, XOP, LWP, 3DNow!,
! enhanced 3DNow!, POPCNT, ABM, ADX, BMI, BMI2, LZCNT, FXSR, XSAVE, XSAVEOPT,
  XSAVEC, XSAVES, RTM, HLE, TBM, MWAITX, CLZERO, PKU, AVX512VBMI2, GFNI, VAES,
  WAITPKG, VPCLMULQDQ, AVX512BITALG, MOVDIRI, MOVDIR64B, AVX512BF16, ENQCMD,
  AVX512VPOPCNTDQ, AVX512VNNI, SERIALIZE, UINTR, HRESET, AMXTILE, AMXINT8,
  AMXBF16, KL, WIDEKL, AVXVNNI, AVX512\-FP16, AVXIFMA, AVXVNNIINT8, AVXNECONVERT,
! CMPCCXADD, AMX\-FP16, PREFETCHI, RAOINT, AMX\-COMPLEX, AVXVNNIINT16, SM3, SHA512,
! SM4, APX_F, USER_MSR, AVX10.1, AVX10.2, AMX\-AVX512, AMX\-TF32, AMX\-TRANSPOSE,
! AMX\-FP8, MOVRS, AMX\-MOVRS or CLDEMOTE extended instruction sets. Each has a
  corresponding \fB\-mno\-\fR option to disable use of these instructions.
  .Sp
! These extensions are also available as built\-in functions: see
! \&\fBx86 Built\-in Functions\fR, for details of the functions enabled and
  disabled by these switches.
  .Sp
! Note that \fB\-msse4\fR enables both SSE4.1 and SSE4.2 support,
  while \fB\-mno\-sse4\fR turns off those features; neither form of the
! option affects SSE4A support, controlled separately by
  \&\fB\-msse4a\fR.
  .Sp
! To generate SSE/SSE2 instructions automatically from floating\-point
  code (as opposed to 387 instructions), see \fB\-mfpmath=sse\fR.
  .Sp
! GCC depresses SSEx instructions when \fB\-mavx\fR is used. Instead, it
! generates new AVX instructions or AVX equivalence for all SSEx instructions
  when needed.
  .Sp
! These options enable GCC to use these extended instructions in
  generated code, even without \fB\-mfpmath=sse\fR.  Applications that
! perform run\-time CPU detection must compile separate files for each
  supported architecture, using the appropriate flags.  In particular,
! the file containing the CPU detection code should be compiled without
  these options.
! .IP \fB\-mdump\-tune\-features\fR 4
  .IX Item "-mdump-tune-features"
! This option instructs GCC to dump the names of the x86 performance
  tuning features and default settings. The names can be used in
! \&\fB\-mtune\-ctrl=\fR\fIfeature\-list\fR.
! .IP \fB\-mtune\-ctrl=\fR\fIfeature\-list\fR 4
  .IX Item "-mtune-ctrl=feature-list"
  This option is used to do fine grain control of x86 code generation features.
! \&\fIfeature\-list\fR is a comma separated list of \fIfeature\fR names. See also
  \&\fB\-mdump\-tune\-features\fR. When specified, the \fIfeature\fR is turned
  on if it is not preceded with \fB^\fR, otherwise, it is turned off.
! \&\fB\-mtune\-ctrl=\fR\fIfeature\-list\fR is intended to be used by GCC
  developers. Using it may lead to code paths not covered by testing and can
  potentially result in compiler ICEs or runtime errors.
! .IP \fB\-mno\-default\fR 4
  .IX Item "-mno-default"
! This option instructs GCC to turn off all tunable features. See also
! \&\fB\-mtune\-ctrl=\fR\fIfeature\-list\fR and \fB\-mdump\-tune\-features\fR.
! .IP \fB\-mcld\fR 4
  .IX Item "-mcld"
! This option instructs GCC to emit a \f(CW\*(C`cld\*(C'\fR instruction in the prologue
  of functions that use string instructions.  String instructions depend on
! the DF flag to select between autoincrement or autodecrement mode.  While the
! ABI specifies the DF flag to be cleared on function entry, some operating
! systems violate this specification by not clearing the DF flag in their
! exception dispatchers.  The exception handler can be invoked with the DF flag
  set, which leads to wrong direction mode when string instructions are used.
  This option can be enabled by default on 32\-bit x86 targets by configuring
! GCC with the \fB\-\-enable\-cld\fR configure option.  Generation of \f(CW\*(C`cld\*(C'\fR
  instructions can be suppressed with the \fB\-mno\-cld\fR compiler option
  in this case.
! .IP \fB\-mvzeroupper\fR 4
  .IX Item "-mvzeroupper"
! This option instructs GCC to emit a \f(CW\*(C`vzeroupper\*(C'\fR instruction
  before a transfer of control flow out of the function to minimize
! the AVX to SSE transition penalty as well as remove unnecessary \f(CW\*(C`zeroupper\*(C'\fR
  intrinsics.
! .IP \fB\-mprefer\-avx128\fR 4
  .IX Item "-mprefer-avx128"
! This option instructs GCC to use 128\-bit AVX instructions instead of
! 256\-bit AVX instructions in the auto\-vectorizer.
! .IP \fB\-mprefer\-vector\-width=\fR\fIopt\fR 4
  .IX Item "-mprefer-vector-width=opt"
! This option instructs GCC to use \fIopt\fR\-bit vector width in instructions
  instead of default on the selected platform.
! .IP \fB\-mpartial\-vector\-fp\-math\fR 4
  .IX Item "-mpartial-vector-fp-math"
! This option enables GCC to generate floating\-point operations that might
! affect the set of floating\-point status flags on partial vectors, where
! vector elements reside in the low part of the 128\-bit SSE register.  Unless
  \&\fB\-fno\-trapping\-math\fR is specified, the compiler guarantees correct
  behavior by sanitizing all input operands to have zeroes in the unused
! upper part of the vector register.  Note that by using built\-in functions
  or inline assembly with partial vector arguments, NaNs, denormal or invalid
  values can leak into the upper part of the vector, causing possible
  performance issues when \fB\-fno\-trapping\-math\fR is in effect.  These
  issues can be mitigated by manually sanitizing the upper part of the partial
  vector argument register or by using \fB\-mdaz\-ftz\fR to set
! denormals\-are\-zero (DAZ) flag in the MXCSR register.
  .Sp
  This option is enabled by default.
! .IP \fB\-mmove\-max=\fR\fIbits\fR 4
  .IX Item "-mmove-max=bits"
! This option instructs GCC to set the maximum number of bits can be
  moved from memory to memory efficiently to \fIbits\fR.  The valid
  \&\fIbits\fR are 128, 256 and 512.
! .IP \fB\-mstore\-max=\fR\fIbits\fR 4
  .IX Item "-mstore-max=bits"
! This option instructs GCC to set the maximum number of bits can be
  stored to memory efficiently to \fIbits\fR.  The valid \fIbits\fR are
  128, 256 and 512.
  .RS 4
! .IP \fBnone\fR 4
  .IX Item "none"
! No extra limitations applied to GCC other than defined by the selected platform.
! .IP \fB128\fR 4
  .IX Item "128"
  Prefer 128\-bit vector width for instructions.
! .IP \fB256\fR 4
  .IX Item "256"
  Prefer 256\-bit vector width for instructions.
! .IP \fB512\fR 4
  .IX Item "512"
  Prefer 512\-bit vector width for instructions.
  .RE
  .RS 4
  .RE
! .IP \fB\-mnoreturn\-no\-callee\-saved\-registers\fR 4
  .IX Item "-mnoreturn-no-callee-saved-registers"
  This option optimizes functions with \f(CW\*(C`noreturn\*(C'\fR attribute or
! \&\f(CW\*(C`_Noreturn\*(C'\fR specifier by not saving in the function prologue callee\-saved
  registers which are used in the function (except for the \f(CW\*(C`BP\*(C'\fR
  register).  This option can interfere with debugging of the caller of the
  \&\f(CW\*(C`noreturn\*(C'\fR function or any function further up in the call stack, so it
  is not enabled by default.
! .IP \fB\-mcx16\fR 4
  .IX Item "-mcx16"
! This option enables GCC to generate \f(CW\*(C`CMPXCHG16B\*(C'\fR instructions in 64\-bit
! code to implement compare\-and\-exchange operations on 16\-byte aligned 128\-bit
  objects.  This is useful for atomic updates of data structures exceeding one
  machine word in size.  The compiler uses this instruction to implement
  \&\fB_\|_sync Builtins\fR.  However, for \fB_\|_atomic Builtins\fR operating on
  128\-bit integers, a library call is always used.
! .IP \fB\-msahf\fR 4
  .IX Item "-msahf"
  This option enables generation of \f(CW\*(C`SAHF\*(C'\fR instructions in 64\-bit code.
  Early Intel Pentium 4 CPUs with Intel 64 support,
  prior to the introduction of Pentium 4 G1 step in December 2005,
  lacked the \f(CW\*(C`LAHF\*(C'\fR and \f(CW\*(C`SAHF\*(C'\fR instructions
! which are supported by AMD64.
  These are load and store instructions, respectively, for certain status flags.
  In 64\-bit mode, the \f(CW\*(C`SAHF\*(C'\fR instruction is used to optimize \f(CW\*(C`fmod\*(C'\fR,
! \&\f(CW\*(C`drem\*(C'\fR, and \f(CW\*(C`remainder\*(C'\fR built\-in functions;
  see \fBOther Builtins\fR for details.
! .IP \fB\-mmovbe\fR 4
  .IX Item "-mmovbe"
  This option enables use of the \f(CW\*(C`movbe\*(C'\fR instruction to optimize
  byte swapping of four and eight byte entities.
! .IP \fB\-mshstk\fR 4
  .IX Item "-mshstk"
! The \fB\-mshstk\fR option enables shadow stack built\-in functions
! from x86 Control\-flow Enforcement Technology (CET).
! .IP \fB\-mcrc32\fR 4
  .IX Item "-mcrc32"
! This option enables built\-in functions \f(CW\*(C`_\|_builtin_ia32_crc32qi\*(C'\fR,
  \&\f(CW\*(C`_\|_builtin_ia32_crc32hi\*(C'\fR, \f(CW\*(C`_\|_builtin_ia32_crc32si\*(C'\fR and
  \&\f(CW\*(C`_\|_builtin_ia32_crc32di\*(C'\fR to generate the \f(CW\*(C`crc32\*(C'\fR machine instruction.
! .IP \fB\-mmwait\fR 4
  .IX Item "-mmwait"
! This option enables built\-in functions \f(CW\*(C`_\|_builtin_ia32_monitor\*(C'\fR,
  and \f(CW\*(C`_\|_builtin_ia32_mwait\*(C'\fR to generate the \f(CW\*(C`monitor\*(C'\fR and
  \&\f(CW\*(C`mwait\*(C'\fR machine instructions.
! .IP \fB\-mrecip\fR 4
  .IX Item "-mrecip"
  This option enables use of \f(CW\*(C`RCPSS\*(C'\fR and \f(CW\*(C`RSQRTSS\*(C'\fR instructions
  (and their vectorized variants \f(CW\*(C`RCPPS\*(C'\fR and \f(CW\*(C`RSQRTPS\*(C'\fR)
! with an additional Newton\-Raphson step
  to increase precision instead of \f(CW\*(C`DIVSS\*(C'\fR and \f(CW\*(C`SQRTSS\*(C'\fR
  (and their vectorized
! variants) for single\-precision floating\-point arguments.  These instructions
  are generated only when \fB\-funsafe\-math\-optimizations\fR is enabled
  together with \fB\-ffinite\-math\-only\fR and \fB\-fno\-trapping\-math\fR.
  Note that while the throughput of the sequence is higher than the throughput
! of the non\-reciprocal instruction, the precision of the sequence can be
  decreased by up to 2 ulp (i.e. the inverse of 1.0 equals 0.99999994).
  .Sp
! Note that GCC implements \f(CW\*(C`1.0f/sqrtf(\fR\f(CIx\fR\f(CW)\*(C'\fR in terms of \f(CW\*(C`RSQRTSS\*(C'\fR
  (or \f(CW\*(C`RSQRTPS\*(C'\fR) already with \fB\-ffast\-math\fR (or the above option
! combination), and doesn\*(Aqt need \fB\-mrecip\fR.
  .Sp
! Also note that GCC emits the above sequence with additional Newton\-Raphson step
! for vectorized single\-float division and vectorized \f(CWsqrtf(\fR\f(CIx\fR\f(CW)\fR
  already with \fB\-ffast\-math\fR (or the above option combination), and
! doesn\*(Aqt need \fB\-mrecip\fR.
! .IP \fB\-mrecip=\fR\fIopt\fR 4
  .IX Item "-mrecip=opt"
  This option controls which reciprocal estimate instructions
! may be used.  \fIopt\fR is a comma\-separated list of options, which may
  be preceded by a \fB!\fR to invert the option:
  .RS 4
! .IP \fBall\fR 4
  .IX Item "all"
  Enable all estimate instructions.
! .IP \fBdefault\fR 4
  .IX Item "default"
  Enable the default instructions, equivalent to \fB\-mrecip\fR.
! .IP \fBnone\fR 4
  .IX Item "none"
  Disable all estimate instructions, equivalent to \fB\-mno\-recip\fR.
! .IP \fBdiv\fR 4
  .IX Item "div"
  Enable the approximation for scalar division.
! .IP \fBvec\-div\fR 4
  .IX Item "vec-div"
  Enable the approximation for vectorized division.
! .IP \fBsqrt\fR 4
  .IX Item "sqrt"
  Enable the approximation for scalar square root.
! .IP \fBvec\-sqrt\fR 4
  .IX Item "vec-sqrt"
  Enable the approximation for vectorized square root.
  .RE
*************** Enable the approximation for vectorized
*** 35423,35440 ****
  So, for example, \fB\-mrecip=all,!sqrt\fR enables
  all of the reciprocal approximations, except for square root.
  .RE
! .IP "\fB\-mveclibabi=\fR\fItype\fR" 4
  .IX Item "-mveclibabi=type"
! Specifies the \s-1ABI\s0 type to use for vectorizing intrinsics using an external
  library.  Supported values for \fItype\fR are \fBsvml\fR for the Intel short
! vector math library, \fBaocl\fR for the math library (LibM) from \s-1AMD\s0
! Optimizing \s-1CPU\s0 Libraries (\s-1AOCL\s0) and \fBacml\fR for the end-of-life \s-1AMD\s0 core
! math library (to which AOCL-LibM is the successor).
  To use this option, both \fB\-ftree\-vectorize\fR and
! \&\fB\-funsafe\-math\-optimizations\fR have to be enabled, and an \s-1SVML\s0 or \s-1ACML\s0
! ABI-compatible library must be specified at link time.
  .Sp
! \&\s-1GCC\s0 currently emits calls to \f(CW\*(C`vmldExp2\*(C'\fR, \f(CW\*(C`vmldLn2\*(C'\fR,
  \&\f(CW\*(C`vmldLog102\*(C'\fR, \f(CW\*(C`vmldPow2\*(C'\fR, \f(CW\*(C`vmldTanh2\*(C'\fR, \f(CW\*(C`vmldTan2\*(C'\fR,
  \&\f(CW\*(C`vmldAtan2\*(C'\fR, \f(CW\*(C`vmldAtanh2\*(C'\fR, \f(CW\*(C`vmldCbrt2\*(C'\fR, \f(CW\*(C`vmldSinh2\*(C'\fR,
  \&\f(CW\*(C`vmldSin2\*(C'\fR, \f(CW\*(C`vmldAsinh2\*(C'\fR, \f(CW\*(C`vmldAsin2\*(C'\fR, \f(CW\*(C`vmldCosh2\*(C'\fR,
--- 35357,35374 ----
  So, for example, \fB\-mrecip=all,!sqrt\fR enables
  all of the reciprocal approximations, except for square root.
  .RE
! .IP \fB\-mveclibabi=\fR\fItype\fR 4
  .IX Item "-mveclibabi=type"
! Specifies the ABI type to use for vectorizing intrinsics using an external
  library.  Supported values for \fItype\fR are \fBsvml\fR for the Intel short
! vector math library, \fBaocl\fR for the math library (LibM) from AMD
! Optimizing CPU Libraries (AOCL) and \fBacml\fR for the end\-of\-life AMD core
! math library (to which AOCL\-LibM is the successor).
  To use this option, both \fB\-ftree\-vectorize\fR and
! \&\fB\-funsafe\-math\-optimizations\fR have to be enabled, and an SVML or ACML
! ABI\-compatible library must be specified at link time.
  .Sp
! GCC currently emits calls to \f(CW\*(C`vmldExp2\*(C'\fR, \f(CW\*(C`vmldLn2\*(C'\fR,
  \&\f(CW\*(C`vmldLog102\*(C'\fR, \f(CW\*(C`vmldPow2\*(C'\fR, \f(CW\*(C`vmldTanh2\*(C'\fR, \f(CW\*(C`vmldTan2\*(C'\fR,
  \&\f(CW\*(C`vmldAtan2\*(C'\fR, \f(CW\*(C`vmldAtanh2\*(C'\fR, \f(CW\*(C`vmldCbrt2\*(C'\fR, \f(CW\*(C`vmldSinh2\*(C'\fR,
  \&\f(CW\*(C`vmldSin2\*(C'\fR, \f(CW\*(C`vmldAsinh2\*(C'\fR, \f(CW\*(C`vmldAsin2\*(C'\fR, \f(CW\*(C`vmldCosh2\*(C'\fR,
*************** type when \fB\-mveclibabi=aocl\fR is use
*** 35476,35562 ****
  \&\f(CW\*(C`_\|_vrs4_expf\*(C'\fR, \f(CW\*(C`_\|_vrs4_logf\*(C'\fR, \f(CW\*(C`_\|_vrs4_log2f\*(C'\fR,
  \&\f(CW\*(C`_\|_vrs4_log10f\*(C'\fR and \f(CW\*(C`_\|_vrs4_powf\*(C'\fR for the corresponding function type
  when \fB\-mveclibabi=acml\fR is used.
! .IP "\fB\-mabi=\fR\fIname\fR" 4
  .IX Item "-mabi=name"
  Generate code for the specified calling convention.  Permissible values
! are \fBsysv\fR for the \s-1ABI\s0 used on GNU/Linux and other systems, and
! \&\fBms\fR for the Microsoft \s-1ABI.\s0  The default is to use the Microsoft
! \&\s-1ABI\s0 when targeting Microsoft Windows and the SysV \s-1ABI\s0 on all other systems.
  You can control this behavior for specific functions by
  using the function attributes \f(CW\*(C`ms_abi\*(C'\fR and \f(CW\*(C`sysv_abi\*(C'\fR.
! .IP "\fB\-mforce\-indirect\-call\fR" 4
  .IX Item "-mforce-indirect-call"
  Force all calls to functions to be indirect. This is useful
  when using Intel Processor Trace where it generates more precise timing
  information for function calls.
! .IP "\fB\-mmanual\-endbr\fR" 4
  .IX Item "-mmanual-endbr"
! Insert \s-1ENDBR\s0 instruction at function entry only via the \f(CW\*(C`cf_check\*(C'\fR
  function attribute. This is useful when used with the option
! \&\fB\-fcf\-protection=branch\fR to control \s-1ENDBR\s0 insertion at the
  function entry.
! .IP "\fB\-mcet\-switch\fR" 4
  .IX Item "-mcet-switch"
! By default, \s-1CET\s0 instrumentation is turned off on switch statements that
  use a jump table and indirect branch track is disabled.  Since jump
! tables are stored in read-only memory, this does not result in a direct
! loss of hardening.  But if the jump table index is attacker-controlled,
! the indirect jump may not be constrained by \s-1CET.\s0  This option turns on
! \&\s-1CET\s0 instrumentation to enable indirect branch track for switch statements
  with jump tables which leads to the jump targets reachable via any indirect
  jumps.
! .IP "\fB\-mcall\-ms2sysv\-xlogues\fR" 4
  .IX Item "-mcall-ms2sysv-xlogues"
! Due to differences in 64\-bit ABIs, any Microsoft \s-1ABI\s0 function that calls a
! System V \s-1ABI\s0 function must consider \s-1RSI, RDI\s0 and \s-1XMM6\-15\s0 as clobbered.  By
  default, the code for saving and restoring these registers is emitted inline,
  resulting in fairly lengthy prologues and epilogues.  Using
  \&\fB\-mcall\-ms2sysv\-xlogues\fR emits prologues and epilogues that
  use stubs in the static portion of libgcc to perform these saves and restores,
  thus reducing function size at the cost of a few extra instructions.
! .IP "\fB\-mtls\-dialect=\fR\fItype\fR" 4
  .IX Item "-mtls-dialect=type"
! Generate code to access thread-local storage using the \fBgnu\fR or
  \&\fBgnu2\fR conventions.  \fBgnu\fR is the conservative default;
! \&\fBgnu2\fR is more efficient, but it may add compile\- and run-time
  requirements that cannot be satisfied on all systems.
! .IP "\fB\-mpush\-args\fR" 4
  .IX Item "-mpush-args"
  .PD 0
! .IP "\fB\-mno\-push\-args\fR" 4
  .IX Item "-mno-push-args"
  .PD
! Use \s-1PUSH\s0 operations to store outgoing parameters.  This method is shorter
! and usually equally fast as method using \s-1SUB/MOV\s0 operations and is enabled
  by default.  In some cases disabling it may improve performance because of
  improved scheduling and reduced dependencies.
! .IP "\fB\-maccumulate\-outgoing\-args\fR" 4
  .IX Item "-maccumulate-outgoing-args"
  If enabled, the maximum amount of space required for outgoing arguments is
  computed in the function prologue.  This is faster on most modern CPUs
  because of reduced dependencies, improved scheduling and reduced stack usage
  when the preferred stack boundary is not equal to 2.  The drawback is a notable
  increase in code size.  This switch implies \fB\-mno\-push\-args\fR.
! .IP "\fB\-mthreads\fR" 4
  .IX Item "-mthreads"
! Support thread-safe exception handling on MinGW.  Programs that rely
! on thread-safe exception handling must compile and link all code with the
  \&\fB\-mthreads\fR option.  When compiling, \fB\-mthreads\fR defines
  \&\fB\-D_MT\fR; when linking, it links in a special thread helper library
! \&\fB\-lmingwthrd\fR which cleans up per-thread exception-handling data.
! .IP "\fB\-mms\-bitfields\fR" 4
  .IX Item "-mms-bitfields"
  .PD 0
! .IP "\fB\-mno\-ms\-bitfields\fR" 4
  .IX Item "-mno-ms-bitfields"
  .PD
! Enable/disable bit-field layout compatible with the native Microsoft
  Windows compiler.
  .Sp
! If \f(CW\*(C`packed\*(C'\fR is used on a structure, or if bit-fields are used,
! it may be that the Microsoft \s-1ABI\s0 lays out the structure differently
! than the way \s-1GCC\s0 normally does.  Particularly when moving packed
! data between functions compiled with \s-1GCC\s0 and the native Microsoft compiler
  (either via function call or as data in a file), it may be necessary to access
  either format.
  .Sp
--- 35410,35496 ----
  \&\f(CW\*(C`_\|_vrs4_expf\*(C'\fR, \f(CW\*(C`_\|_vrs4_logf\*(C'\fR, \f(CW\*(C`_\|_vrs4_log2f\*(C'\fR,
  \&\f(CW\*(C`_\|_vrs4_log10f\*(C'\fR and \f(CW\*(C`_\|_vrs4_powf\*(C'\fR for the corresponding function type
  when \fB\-mveclibabi=acml\fR is used.
! .IP \fB\-mabi=\fR\fIname\fR 4
  .IX Item "-mabi=name"
  Generate code for the specified calling convention.  Permissible values
! are \fBsysv\fR for the ABI used on GNU/Linux and other systems, and
! \&\fBms\fR for the Microsoft ABI.  The default is to use the Microsoft
! ABI when targeting Microsoft Windows and the SysV ABI on all other systems.
  You can control this behavior for specific functions by
  using the function attributes \f(CW\*(C`ms_abi\*(C'\fR and \f(CW\*(C`sysv_abi\*(C'\fR.
! .IP \fB\-mforce\-indirect\-call\fR 4
  .IX Item "-mforce-indirect-call"
  Force all calls to functions to be indirect. This is useful
  when using Intel Processor Trace where it generates more precise timing
  information for function calls.
! .IP \fB\-mmanual\-endbr\fR 4
  .IX Item "-mmanual-endbr"
! Insert ENDBR instruction at function entry only via the \f(CW\*(C`cf_check\*(C'\fR
  function attribute. This is useful when used with the option
! \&\fB\-fcf\-protection=branch\fR to control ENDBR insertion at the
  function entry.
! .IP \fB\-mcet\-switch\fR 4
  .IX Item "-mcet-switch"
! By default, CET instrumentation is turned off on switch statements that
  use a jump table and indirect branch track is disabled.  Since jump
! tables are stored in read\-only memory, this does not result in a direct
! loss of hardening.  But if the jump table index is attacker\-controlled,
! the indirect jump may not be constrained by CET.  This option turns on
! CET instrumentation to enable indirect branch track for switch statements
  with jump tables which leads to the jump targets reachable via any indirect
  jumps.
! .IP \fB\-mcall\-ms2sysv\-xlogues\fR 4
  .IX Item "-mcall-ms2sysv-xlogues"
! Due to differences in 64\-bit ABIs, any Microsoft ABI function that calls a
! System V ABI function must consider RSI, RDI and XMM6\-15 as clobbered.  By
  default, the code for saving and restoring these registers is emitted inline,
  resulting in fairly lengthy prologues and epilogues.  Using
  \&\fB\-mcall\-ms2sysv\-xlogues\fR emits prologues and epilogues that
  use stubs in the static portion of libgcc to perform these saves and restores,
  thus reducing function size at the cost of a few extra instructions.
! .IP \fB\-mtls\-dialect=\fR\fItype\fR 4
  .IX Item "-mtls-dialect=type"
! Generate code to access thread\-local storage using the \fBgnu\fR or
  \&\fBgnu2\fR conventions.  \fBgnu\fR is the conservative default;
! \&\fBgnu2\fR is more efficient, but it may add compile\- and run\-time
  requirements that cannot be satisfied on all systems.
! .IP \fB\-mpush\-args\fR 4
  .IX Item "-mpush-args"
  .PD 0
! .IP \fB\-mno\-push\-args\fR 4
  .IX Item "-mno-push-args"
  .PD
! Use PUSH operations to store outgoing parameters.  This method is shorter
! and usually equally fast as method using SUB/MOV operations and is enabled
  by default.  In some cases disabling it may improve performance because of
  improved scheduling and reduced dependencies.
! .IP \fB\-maccumulate\-outgoing\-args\fR 4
  .IX Item "-maccumulate-outgoing-args"
  If enabled, the maximum amount of space required for outgoing arguments is
  computed in the function prologue.  This is faster on most modern CPUs
  because of reduced dependencies, improved scheduling and reduced stack usage
  when the preferred stack boundary is not equal to 2.  The drawback is a notable
  increase in code size.  This switch implies \fB\-mno\-push\-args\fR.
! .IP \fB\-mthreads\fR 4
  .IX Item "-mthreads"
! Support thread\-safe exception handling on MinGW.  Programs that rely
! on thread\-safe exception handling must compile and link all code with the
  \&\fB\-mthreads\fR option.  When compiling, \fB\-mthreads\fR defines
  \&\fB\-D_MT\fR; when linking, it links in a special thread helper library
! \&\fB\-lmingwthrd\fR which cleans up per\-thread exception\-handling data.
! .IP \fB\-mms\-bitfields\fR 4
  .IX Item "-mms-bitfields"
  .PD 0
! .IP \fB\-mno\-ms\-bitfields\fR 4
  .IX Item "-mno-ms-bitfields"
  .PD
! Enable/disable bit\-field layout compatible with the native Microsoft
  Windows compiler.
  .Sp
! If \f(CW\*(C`packed\*(C'\fR is used on a structure, or if bit\-fields are used,
! it may be that the Microsoft ABI lays out the structure differently
! than the way GCC normally does.  Particularly when moving packed
! data between functions compiled with GCC and the native Microsoft compiler
  (either via function call or as data in a file), it may be necessary to access
  either format.
  .Sp
*************** or type attributes.  For more informatio
*** 35566,35574 ****
  and \fBx86 Type Attributes\fR.
  .Sp
  The Microsoft structure layout algorithm is fairly simple with the exception
! of the bit-field packing.
! The padding and alignment of members of structures and whether a bit-field
! can straddle a storage-unit boundary are determine by these rules:
  .RS 4
  .IP "1. Structure members are stored sequentially in the order in which they are" 4
  .IX Item "1. Structure members are stored sequentially in the order in which they are"
--- 35500,35508 ----
  and \fBx86 Type Attributes\fR.
  .Sp
  The Microsoft structure layout algorithm is fairly simple with the exception
! of the bit\-field packing.
! The padding and alignment of members of structures and whether a bit\-field
! can straddle a storage\-unit boundary are determine by these rules:
  .RS 4
  .IP "1. Structure members are stored sequentially in the order in which they are" 4
  .IX Item "1. Structure members are stored sequentially in the order in which they are"
*************** Every object is allocated an offset so t
*** 35586,35603 ****
  .Vb 1
  \&        offset % alignment_requirement == 0
  .Ve
! .IP "3. Adjacent bit-fields are packed into the same 1\-, 2\-, or 4\-byte allocation" 4
  .IX Item "3. Adjacent bit-fields are packed into the same 1-, 2-, or 4-byte allocation"
! unit if the integral types are the same size and if the next bit-field fits
  into the current allocation unit without crossing the boundary imposed by the
! common alignment requirements of the bit-fields.
  .RE
  .RS 4
  .Sp
! \&\s-1MSVC\s0 interprets zero-length bit-fields in the following ways:
! .IP "1. If a zero-length bit-field is inserted between two bit-fields that" 4
  .IX Item "1. If a zero-length bit-field is inserted between two bit-fields that"
! are normally coalesced, the bit-fields are not coalesced.
  .Sp
  For example:
  .Sp
--- 35520,35537 ----
  .Vb 1
  \&        offset % alignment_requirement == 0
  .Ve
! .IP "3. Adjacent bit\-fields are packed into the same 1\-, 2\-, or 4\-byte allocation" 4
  .IX Item "3. Adjacent bit-fields are packed into the same 1-, 2-, or 4-byte allocation"
! unit if the integral types are the same size and if the next bit\-field fits
  into the current allocation unit without crossing the boundary imposed by the
! common alignment requirements of the bit\-fields.
  .RE
  .RS 4
  .Sp
! MSVC interprets zero\-length bit\-fields in the following ways:
! .IP "1. If a zero\-length bit\-field is inserted between two bit\-fields that" 4
  .IX Item "1. If a zero-length bit-field is inserted between two bit-fields that"
! are normally coalesced, the bit\-fields are not coalesced.
  .Sp
  For example:
  .Sp
*************** For example:
*** 35610,35622 ****
  \&         } t1;
  .Ve
  .Sp
! The size of \f(CW\*(C`t1\*(C'\fR is 8 bytes with the zero-length bit-field.  If the
! zero-length bit-field were removed, \f(CW\*(C`t1\*(C'\fR's size would be 4 bytes.
! .ie n .IP "2. If a zero-length bit-field is inserted after a bit-field, ""foo"", and the" 4
! .el .IP "2. If a zero-length bit-field is inserted after a bit-field, \f(CWfoo\fR, and the" 4
  .IX Item "2. If a zero-length bit-field is inserted after a bit-field, foo, and the"
! alignment of the zero-length bit-field is greater than the member that follows it,
! \&\f(CW\*(C`bar\*(C'\fR, \f(CW\*(C`bar\*(C'\fR is aligned as the type of the zero-length bit-field.
  .Sp
  For example:
  .Sp
--- 35544,35556 ----
  \&         } t1;
  .Ve
  .Sp
! The size of \f(CW\*(C`t1\*(C'\fR is 8 bytes with the zero\-length bit\-field.  If the
! zero\-length bit\-field were removed, \f(CW\*(C`t1\*(C'\fR\*(Aqs size would be 4 bytes.
! .ie n .IP "2. If a zero\-length bit\-field is inserted after a bit\-field, ""foo"", and the" 4
! .el .IP "2. If a zero\-length bit\-field is inserted after a bit\-field, \f(CWfoo\fR, and the" 4
  .IX Item "2. If a zero-length bit-field is inserted after a bit-field, foo, and the"
! alignment of the zero\-length bit\-field is greater than the member that follows it,
! \&\f(CW\*(C`bar\*(C'\fR, \f(CW\*(C`bar\*(C'\fR is aligned as the type of the zero\-length bit\-field.
  .Sp
  For example:
  .Sp
*************** For example:
*** 35637,35654 ****
  .Ve
  .Sp
  For \f(CW\*(C`t2\*(C'\fR, \f(CW\*(C`bar\*(C'\fR is placed at offset 2, rather than offset 1.
! Accordingly, the size of \f(CW\*(C`t2\*(C'\fR is 4.  For \f(CW\*(C`t3\*(C'\fR, the zero-length
! bit-field does not affect the alignment of \f(CW\*(C`bar\*(C'\fR or, as a result, the size
  of the structure.
  .Sp
  Taking this into account, it is important to note the following:
  .RS 4
! .IP "1. If a zero-length bit-field follows a normal bit-field, the type of the" 4
  .IX Item "1. If a zero-length bit-field follows a normal bit-field, the type of the"
! zero-length bit-field may affect the alignment of the structure as whole. For
! example, \f(CW\*(C`t2\*(C'\fR has a size of 4 bytes, since the zero-length bit-field follows a
! normal bit-field, and is of type short.
! .IP "2. Even if a zero-length bit-field is not followed by a normal bit-field, it may" 4
  .IX Item "2. Even if a zero-length bit-field is not followed by a normal bit-field, it may"
  still affect the alignment of the structure:
  .Sp
--- 35571,35588 ----
  .Ve
  .Sp
  For \f(CW\*(C`t2\*(C'\fR, \f(CW\*(C`bar\*(C'\fR is placed at offset 2, rather than offset 1.
! Accordingly, the size of \f(CW\*(C`t2\*(C'\fR is 4.  For \f(CW\*(C`t3\*(C'\fR, the zero\-length
! bit\-field does not affect the alignment of \f(CW\*(C`bar\*(C'\fR or, as a result, the size
  of the structure.
  .Sp
  Taking this into account, it is important to note the following:
  .RS 4
! .IP "1. If a zero\-length bit\-field follows a normal bit\-field, the type of the" 4
  .IX Item "1. If a zero-length bit-field follows a normal bit-field, the type of the"
! zero\-length bit\-field may affect the alignment of the structure as whole. For
! example, \f(CW\*(C`t2\*(C'\fR has a size of 4 bytes, since the zero\-length bit\-field follows a
! normal bit\-field, and is of type short.
! .IP "2. Even if a zero\-length bit\-field is not followed by a normal bit\-field, it may" 4
  .IX Item "2. Even if a zero-length bit-field is not followed by a normal bit-field, it may"
  still affect the alignment of the structure:
  .Sp
*************** Here, \f(CW\*(C`t4\*(C'\fR takes up 4 by
*** 35664,35670 ****
  .RE
  .RS 4
  .RE
! .IP "3. Zero-length bit-fields following non-bit-field members are ignored:" 4
  .IX Item "3. Zero-length bit-fields following non-bit-field members are ignored:"
  .Vb 6
  \&        struct
--- 35598,35604 ----
  .RE
  .RS 4
  .RE
! .IP "3. Zero\-length bit\-fields following non\-bit\-field members are ignored:" 4
  .IX Item "3. Zero-length bit-fields following non-bit-field members are ignored:"
  .Vb 6
  \&        struct
*************** Here, \f(CW\*(C`t5\*(C'\fR takes up 2 by
*** 35679,35870 ****
  .RE
  .RS 4
  .RE
! .IP "\fB\-mno\-align\-stringops\fR" 4
  .IX Item "-mno-align-stringops"
  Do not align the destination of inlined string operations.  This switch reduces
  code size and improves performance in case the destination is already aligned,
! but \s-1GCC\s0 doesn't know about it.
! .IP "\fB\-minline\-all\-stringops\fR" 4
  .IX Item "-minline-all-stringops"
! By default \s-1GCC\s0 inlines string operations only when the destination is
  known to be aligned to least a 4\-byte boundary.
  This enables more inlining and increases code
  size, but may improve performance of code that depends on fast
  \&\f(CW\*(C`memcpy\*(C'\fR and \f(CW\*(C`memset\*(C'\fR for short lengths.
  The option enables inline expansion of \f(CW\*(C`strlen\*(C'\fR for all
  pointer alignments.
! .IP "\fB\-minline\-stringops\-dynamically\fR" 4
  .IX Item "-minline-stringops-dynamically"
! For string operations of unknown size, use run-time checks with
  inline code for small blocks and a library call for large blocks.
! .IP "\fB\-mstringop\-strategy=\fR\fIalg\fR" 4
  .IX Item "-mstringop-strategy=alg"
  Override the internal decision heuristic for the particular algorithm to use
  for inlining string operations.  The allowed values for \fIalg\fR are:
  .RS 4
! .IP "\fBrep_byte\fR" 4
  .IX Item "rep_byte"
  .PD 0
! .IP "\fBrep_4byte\fR" 4
  .IX Item "rep_4byte"
! .IP "\fBrep_8byte\fR" 4
  .IX Item "rep_8byte"
  .PD
  Expand using i386 \f(CW\*(C`rep\*(C'\fR prefix of the specified size.
! .IP "\fBbyte_loop\fR" 4
  .IX Item "byte_loop"
  .PD 0
! .IP "\fBloop\fR" 4
  .IX Item "loop"
! .IP "\fBunrolled_loop\fR" 4
  .IX Item "unrolled_loop"
  .PD
  Expand into an inline loop.
! .IP "\fBlibcall\fR" 4
  .IX Item "libcall"
  Always use a library call.
  .RE
  .RS 4
  .RE
! .IP "\fB\-mmemcpy\-strategy=\fR\fIstrategy\fR" 4
  .IX Item "-mmemcpy-strategy=strategy"
  Override the internal decision heuristic to decide if \f(CW\*(C`_\|_builtin_memcpy\*(C'\fR
  should be inlined and what inline algorithm to use when the expected size
  of the copy operation is known. \fIstrategy\fR
! is a comma-separated list of \fIalg\fR:\fImax_size\fR:\fIdest_align\fR triplets.
  \&\fIalg\fR is specified in \fB\-mstringop\-strategy\fR, \fImax_size\fR specifies
  the max byte size with which inline algorithm \fIalg\fR is allowed.  For the last
! triplet, the \fImax_size\fR must be \f(CW\*(C`\-1\*(C'\fR. The \fImax_size\fR of the triplets
  in the list must be specified in increasing order.  The minimal byte size for
! \&\fIalg\fR is \f(CW0\fR for the first triplet and \f(CW\*(C`\f(CImax_size\f(CW + 1\*(C'\fR of the
  preceding range.
! .IP "\fB\-mmemset\-strategy=\fR\fIstrategy\fR" 4
  .IX Item "-mmemset-strategy=strategy"
  The option is similar to \fB\-mmemcpy\-strategy=\fR except that it is to control
  \&\f(CW\*(C`_\|_builtin_memset\*(C'\fR expansion.
! .IP "\fB\-momit\-leaf\-frame\-pointer\fR" 4
  .IX Item "-momit-leaf-frame-pointer"
! Don't keep the frame pointer in a register for leaf functions.  This
  avoids the instructions to save, set up, and restore frame pointers and
  makes an extra register available in leaf functions.  The option
  \&\fB\-fomit\-leaf\-frame\-pointer\fR removes the frame pointer for leaf functions,
  which might make debugging harder.
! .IP "\fB\-mtls\-direct\-seg\-refs\fR" 4
  .IX Item "-mtls-direct-seg-refs"
  .PD 0
! .IP "\fB\-mno\-tls\-direct\-seg\-refs\fR" 4
  .IX Item "-mno-tls-direct-seg-refs"
  .PD
! Controls whether \s-1TLS\s0 variables may be accessed with offsets from the
! \&\s-1TLS\s0 segment register (\f(CW%gs\fR for 32\-bit, \f(CW%fs\fR for 64\-bit),
  or whether the thread base pointer must be added.  Whether or not this
  is valid depends on the operating system, and whether it maps the
! segment to cover the entire \s-1TLS\s0 area.
  .Sp
! For systems that use the \s-1GNU C\s0 Library, the default is on.
! .IP "\fB\-msse2avx\fR" 4
  .IX Item "-msse2avx"
  .PD 0
! .IP "\fB\-mno\-sse2avx\fR" 4
  .IX Item "-mno-sse2avx"
  .PD
! Specify that the assembler should encode \s-1SSE\s0 instructions with \s-1VEX\s0
  prefix.  The option \fB\-mavx\fR turns this on by default.
! .IP "\fB\-mfentry\fR" 4
  .IX Item "-mfentry"
  .PD 0
! .IP "\fB\-mno\-fentry\fR" 4
  .IX Item "-mno-fentry"
  .PD
  If profiling is active (\fB\-pg\fR), put the profiling
  counter call before the prologue.
  Note: On x86 architectures the attribute \f(CW\*(C`ms_hook_prologue\*(C'\fR
! isn't possible at the moment for \fB\-mfentry\fR and \fB\-pg\fR.
! .IP "\fB\-mrecord\-mcount\fR" 4
  .IX Item "-mrecord-mcount"
  .PD 0
! .IP "\fB\-mno\-record\-mcount\fR" 4
  .IX Item "-mno-record-mcount"
  .PD
  If profiling is active (\fB\-pg\fR), generate a _\|_mcount_loc section
  that contains pointers to each profiling call. This is useful for
  automatically patching and out calls.
! .IP "\fB\-mnop\-mcount\fR" 4
  .IX Item "-mnop-mcount"
  .PD 0
! .IP "\fB\-mno\-nop\-mcount\fR" 4
  .IX Item "-mno-nop-mcount"
  .PD
  If profiling is active (\fB\-pg\fR), generate the calls to
  the profiling functions as NOPs. This is useful when they
  should be patched in later dynamically. This is likely only
  useful together with \fB\-mrecord\-mcount\fR.
! .IP "\fB\-minstrument\-return=\fR\fItype\fR" 4
  .IX Item "-minstrument-return=type"
  Instrument function exit in \-pg \-mfentry instrumented functions with
  call to specified function. This only instruments true returns ending
  with ret, but not sibling calls ending with jump. Valid types
  are \fInone\fR to not instrument, \fIcall\fR to generate a call to _\|_return_\|_,
  or \fInop5\fR to generate a 5 byte nop.
! .IP "\fB\-mrecord\-return\fR" 4
  .IX Item "-mrecord-return"
  .PD 0
! .IP "\fB\-mno\-record\-return\fR" 4
  .IX Item "-mno-record-return"
  .PD
  Generate a _\|_return_loc section pointing to all return instrumentation code.
! .IP "\fB\-mfentry\-name=\fR\fIname\fR" 4
  .IX Item "-mfentry-name=name"
  Set name of _\|_fentry_\|_ symbol called at function entry for \-pg \-mfentry functions.
! .IP "\fB\-mfentry\-section=\fR\fIname\fR" 4
  .IX Item "-mfentry-section=name"
  Set name of section to record \-mrecord\-mcount calls (default _\|_mcount_loc).
! .IP "\fB\-mskip\-rax\-setup\fR" 4
  .IX Item "-mskip-rax-setup"
  .PD 0
! .IP "\fB\-mno\-skip\-rax\-setup\fR" 4
  .IX Item "-mno-skip-rax-setup"
  .PD
! When generating code for the x86\-64 architecture with \s-1SSE\s0 extensions
! disabled, \fB\-mskip\-rax\-setup\fR can be used to skip setting up \s-1RAX\s0
  register when there are no variable arguments passed in vector registers.
  .Sp
! \&\fBWarning:\fR Since \s-1RAX\s0 register is used to avoid unnecessarily
  saving vector registers on stack when passing variable arguments, the
  impacts of this option are callees may waste some stack space,
! misbehave or jump to a random location.  \s-1GCC 4.4\s0 or newer don't have
! those issues, regardless the \s-1RAX\s0 register value.
! .IP "\fB\-m8bit\-idiv\fR" 4
  .IX Item "-m8bit-idiv"
  .PD 0
! .IP "\fB\-mno\-8bit\-idiv\fR" 4
  .IX Item "-mno-8bit-idiv"
  .PD
  On some processors, like Intel Atom, 8\-bit unsigned integer divide is
  much faster than 32\-bit/64\-bit integer divide.  This option generates a
! run-time check.  If both dividend and divisor are within range of 0
  to 255, 8\-bit unsigned integer divide is used instead of
  32\-bit/64\-bit integer divide.
! .IP "\fB\-mavx256\-split\-unaligned\-load\fR" 4
  .IX Item "-mavx256-split-unaligned-load"
  .PD 0
! .IP "\fB\-mavx256\-split\-unaligned\-store\fR" 4
  .IX Item "-mavx256-split-unaligned-store"
  .PD
! Split 32\-byte \s-1AVX\s0 unaligned load and store.
! .IP "\fB\-mstack\-protector\-guard=\fR\fIguard\fR" 4
  .IX Item "-mstack-protector-guard=guard"
  .PD 0
! .IP "\fB\-mstack\-protector\-guard\-reg=\fR\fIreg\fR" 4
  .IX Item "-mstack-protector-guard-reg=reg"
! .IP "\fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR" 4
  .IX Item "-mstack-protector-guard-offset=offset"
! .IP "\fB\-mstack\-protector\-guard\-symbol=\fR\fIsymbol\fR" 4
  .IX Item "-mstack-protector-guard-symbol=symbol"
  .PD
  Generate stack protection code using canary at \fIguard\fR.  Supported
! locations are \fBglobal\fR for global canary or \fBtls\fR for per-thread
! canary in the \s-1TLS\s0 block (the default).  This option has effect only when
  \&\fB\-fstack\-protector\fR or \fB\-fstack\-protector\-all\fR is specified.
  .Sp
  With the latter choice the options
--- 35613,35804 ----
  .RE
  .RS 4
  .RE
! .IP \fB\-mno\-align\-stringops\fR 4
  .IX Item "-mno-align-stringops"
  Do not align the destination of inlined string operations.  This switch reduces
  code size and improves performance in case the destination is already aligned,
! but GCC doesn\*(Aqt know about it.
! .IP \fB\-minline\-all\-stringops\fR 4
  .IX Item "-minline-all-stringops"
! By default GCC inlines string operations only when the destination is
  known to be aligned to least a 4\-byte boundary.
  This enables more inlining and increases code
  size, but may improve performance of code that depends on fast
  \&\f(CW\*(C`memcpy\*(C'\fR and \f(CW\*(C`memset\*(C'\fR for short lengths.
  The option enables inline expansion of \f(CW\*(C`strlen\*(C'\fR for all
  pointer alignments.
! .IP \fB\-minline\-stringops\-dynamically\fR 4
  .IX Item "-minline-stringops-dynamically"
! For string operations of unknown size, use run\-time checks with
  inline code for small blocks and a library call for large blocks.
! .IP \fB\-mstringop\-strategy=\fR\fIalg\fR 4
  .IX Item "-mstringop-strategy=alg"
  Override the internal decision heuristic for the particular algorithm to use
  for inlining string operations.  The allowed values for \fIalg\fR are:
  .RS 4
! .IP \fBrep_byte\fR 4
  .IX Item "rep_byte"
  .PD 0
! .IP \fBrep_4byte\fR 4
  .IX Item "rep_4byte"
! .IP \fBrep_8byte\fR 4
  .IX Item "rep_8byte"
  .PD
  Expand using i386 \f(CW\*(C`rep\*(C'\fR prefix of the specified size.
! .IP \fBbyte_loop\fR 4
  .IX Item "byte_loop"
  .PD 0
! .IP \fBloop\fR 4
  .IX Item "loop"
! .IP \fBunrolled_loop\fR 4
  .IX Item "unrolled_loop"
  .PD
  Expand into an inline loop.
! .IP \fBlibcall\fR 4
  .IX Item "libcall"
  Always use a library call.
  .RE
  .RS 4
  .RE
! .IP \fB\-mmemcpy\-strategy=\fR\fIstrategy\fR 4
  .IX Item "-mmemcpy-strategy=strategy"
  Override the internal decision heuristic to decide if \f(CW\*(C`_\|_builtin_memcpy\*(C'\fR
  should be inlined and what inline algorithm to use when the expected size
  of the copy operation is known. \fIstrategy\fR
! is a comma\-separated list of \fIalg\fR:\fImax_size\fR:\fIdest_align\fR triplets.
  \&\fIalg\fR is specified in \fB\-mstringop\-strategy\fR, \fImax_size\fR specifies
  the max byte size with which inline algorithm \fIalg\fR is allowed.  For the last
! triplet, the \fImax_size\fR must be \f(CW\-1\fR. The \fImax_size\fR of the triplets
  in the list must be specified in increasing order.  The minimal byte size for
! \&\fIalg\fR is \f(CW0\fR for the first triplet and \f(CW\*(C`\fR\f(CImax_size\fR\f(CW + 1\*(C'\fR of the
  preceding range.
! .IP \fB\-mmemset\-strategy=\fR\fIstrategy\fR 4
  .IX Item "-mmemset-strategy=strategy"
  The option is similar to \fB\-mmemcpy\-strategy=\fR except that it is to control
  \&\f(CW\*(C`_\|_builtin_memset\*(C'\fR expansion.
! .IP \fB\-momit\-leaf\-frame\-pointer\fR 4
  .IX Item "-momit-leaf-frame-pointer"
! Don\*(Aqt keep the frame pointer in a register for leaf functions.  This
  avoids the instructions to save, set up, and restore frame pointers and
  makes an extra register available in leaf functions.  The option
  \&\fB\-fomit\-leaf\-frame\-pointer\fR removes the frame pointer for leaf functions,
  which might make debugging harder.
! .IP \fB\-mtls\-direct\-seg\-refs\fR 4
  .IX Item "-mtls-direct-seg-refs"
  .PD 0
! .IP \fB\-mno\-tls\-direct\-seg\-refs\fR 4
  .IX Item "-mno-tls-direct-seg-refs"
  .PD
! Controls whether TLS variables may be accessed with offsets from the
! TLS segment register (\f(CW%gs\fR for 32\-bit, \f(CW%fs\fR for 64\-bit),
  or whether the thread base pointer must be added.  Whether or not this
  is valid depends on the operating system, and whether it maps the
! segment to cover the entire TLS area.
  .Sp
! For systems that use the GNU C Library, the default is on.
! .IP \fB\-msse2avx\fR 4
  .IX Item "-msse2avx"
  .PD 0
! .IP \fB\-mno\-sse2avx\fR 4
  .IX Item "-mno-sse2avx"
  .PD
! Specify that the assembler should encode SSE instructions with VEX
  prefix.  The option \fB\-mavx\fR turns this on by default.
! .IP \fB\-mfentry\fR 4
  .IX Item "-mfentry"
  .PD 0
! .IP \fB\-mno\-fentry\fR 4
  .IX Item "-mno-fentry"
  .PD
  If profiling is active (\fB\-pg\fR), put the profiling
  counter call before the prologue.
  Note: On x86 architectures the attribute \f(CW\*(C`ms_hook_prologue\*(C'\fR
! isn\*(Aqt possible at the moment for \fB\-mfentry\fR and \fB\-pg\fR.
! .IP \fB\-mrecord\-mcount\fR 4
  .IX Item "-mrecord-mcount"
  .PD 0
! .IP \fB\-mno\-record\-mcount\fR 4
  .IX Item "-mno-record-mcount"
  .PD
  If profiling is active (\fB\-pg\fR), generate a _\|_mcount_loc section
  that contains pointers to each profiling call. This is useful for
  automatically patching and out calls.
! .IP \fB\-mnop\-mcount\fR 4
  .IX Item "-mnop-mcount"
  .PD 0
! .IP \fB\-mno\-nop\-mcount\fR 4
  .IX Item "-mno-nop-mcount"
  .PD
  If profiling is active (\fB\-pg\fR), generate the calls to
  the profiling functions as NOPs. This is useful when they
  should be patched in later dynamically. This is likely only
  useful together with \fB\-mrecord\-mcount\fR.
! .IP \fB\-minstrument\-return=\fR\fItype\fR 4
  .IX Item "-minstrument-return=type"
  Instrument function exit in \-pg \-mfentry instrumented functions with
  call to specified function. This only instruments true returns ending
  with ret, but not sibling calls ending with jump. Valid types
  are \fInone\fR to not instrument, \fIcall\fR to generate a call to _\|_return_\|_,
  or \fInop5\fR to generate a 5 byte nop.
! .IP \fB\-mrecord\-return\fR 4
  .IX Item "-mrecord-return"
  .PD 0
! .IP \fB\-mno\-record\-return\fR 4
  .IX Item "-mno-record-return"
  .PD
  Generate a _\|_return_loc section pointing to all return instrumentation code.
! .IP \fB\-mfentry\-name=\fR\fIname\fR 4
  .IX Item "-mfentry-name=name"
  Set name of _\|_fentry_\|_ symbol called at function entry for \-pg \-mfentry functions.
! .IP \fB\-mfentry\-section=\fR\fIname\fR 4
  .IX Item "-mfentry-section=name"
  Set name of section to record \-mrecord\-mcount calls (default _\|_mcount_loc).
! .IP \fB\-mskip\-rax\-setup\fR 4
  .IX Item "-mskip-rax-setup"
  .PD 0
! .IP \fB\-mno\-skip\-rax\-setup\fR 4
  .IX Item "-mno-skip-rax-setup"
  .PD
! When generating code for the x86\-64 architecture with SSE extensions
! disabled, \fB\-mskip\-rax\-setup\fR can be used to skip setting up RAX
  register when there are no variable arguments passed in vector registers.
  .Sp
! \&\fBWarning:\fR Since RAX register is used to avoid unnecessarily
  saving vector registers on stack when passing variable arguments, the
  impacts of this option are callees may waste some stack space,
! misbehave or jump to a random location.  GCC 4.4 or newer don\*(Aqt have
! those issues, regardless the RAX register value.
! .IP \fB\-m8bit\-idiv\fR 4
  .IX Item "-m8bit-idiv"
  .PD 0
! .IP \fB\-mno\-8bit\-idiv\fR 4
  .IX Item "-mno-8bit-idiv"
  .PD
  On some processors, like Intel Atom, 8\-bit unsigned integer divide is
  much faster than 32\-bit/64\-bit integer divide.  This option generates a
! run\-time check.  If both dividend and divisor are within range of 0
  to 255, 8\-bit unsigned integer divide is used instead of
  32\-bit/64\-bit integer divide.
! .IP \fB\-mavx256\-split\-unaligned\-load\fR 4
  .IX Item "-mavx256-split-unaligned-load"
  .PD 0
! .IP \fB\-mavx256\-split\-unaligned\-store\fR 4
  .IX Item "-mavx256-split-unaligned-store"
  .PD
! Split 32\-byte AVX unaligned load and store.
! .IP \fB\-mstack\-protector\-guard=\fR\fIguard\fR 4
  .IX Item "-mstack-protector-guard=guard"
  .PD 0
! .IP \fB\-mstack\-protector\-guard\-reg=\fR\fIreg\fR 4
  .IX Item "-mstack-protector-guard-reg=reg"
! .IP \fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR 4
  .IX Item "-mstack-protector-guard-offset=offset"
! .IP \fB\-mstack\-protector\-guard\-symbol=\fR\fIsymbol\fR 4
  .IX Item "-mstack-protector-guard-symbol=symbol"
  .PD
  Generate stack protection code using canary at \fIguard\fR.  Supported
! locations are \fBglobal\fR for global canary or \fBtls\fR for per\-thread
! canary in the TLS block (the default).  This option has effect only when
  \&\fB\-fstack\-protector\fR or \fB\-fstack\-protector\-all\fR is specified.
  .Sp
  With the latter choice the options
*************** With the latter choice the options
*** 35872,35900 ****
  \&\fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR furthermore specify
  which segment register (\f(CW%fs\fR or \f(CW%gs\fR) to use as base register
  for reading the canary, and from what offset from that base register.
! The default for those is as specified in the relevant \s-1ABI.\s0
  .Sp
  \&\fB\-mstack\-protector\-guard\-symbol=\fR\fIsymbol\fR overrides
! the offset with a symbol reference to a canary in the \s-1TLS\s0 block.
! .IP "\fB\-mgeneral\-regs\-only\fR" 4
  .IX Item "-mgeneral-regs-only"
! Generate code that uses only the general-purpose registers.  This
! prevents the compiler from using floating-point, vector, mask and bound
  registers.
! .IP "\fB\-mrelax\-cmpxchg\-loop\fR" 4
  .IX Item "-mrelax-cmpxchg-loop"
! When emitting a compare-and-swap loop for \fB_\|_sync Builtins\fR
  and \fB_\|_atomic Builtins\fR lacking a native instruction, optimize
  for the highly contended case by issuing an atomic load before the
  \&\f(CW\*(C`CMPXCHG\*(C'\fR instruction, and using the \f(CW\*(C`PAUSE\*(C'\fR instruction
! to save \s-1CPU\s0 power when restarting the loop.
! .IP "\fB\-mindirect\-branch=\fR\fIchoice\fR" 4
  .IX Item "-mindirect-branch=choice"
  Convert indirect call and jump with \fIchoice\fR.  The default is
  \&\fBkeep\fR, which keeps indirect call and jump unmodified.
  \&\fBthunk\fR converts indirect call and jump to call and return thunk.
! \&\fBthunk-inline\fR converts indirect call and jump to inlined call
! and return thunk.  \fBthunk-extern\fR converts indirect call and jump
  to external call and return thunk provided in a separate object file.
  You can control this behavior for a specific function by using the
  function attribute \f(CW\*(C`indirect_branch\*(C'\fR.
--- 35806,35834 ----
  \&\fB\-mstack\-protector\-guard\-offset=\fR\fIoffset\fR furthermore specify
  which segment register (\f(CW%fs\fR or \f(CW%gs\fR) to use as base register
  for reading the canary, and from what offset from that base register.
! The default for those is as specified in the relevant ABI.
  .Sp
  \&\fB\-mstack\-protector\-guard\-symbol=\fR\fIsymbol\fR overrides
! the offset with a symbol reference to a canary in the TLS block.
! .IP \fB\-mgeneral\-regs\-only\fR 4
  .IX Item "-mgeneral-regs-only"
! Generate code that uses only the general\-purpose registers.  This
! prevents the compiler from using floating\-point, vector, mask and bound
  registers.
! .IP \fB\-mrelax\-cmpxchg\-loop\fR 4
  .IX Item "-mrelax-cmpxchg-loop"
! When emitting a compare\-and\-swap loop for \fB_\|_sync Builtins\fR
  and \fB_\|_atomic Builtins\fR lacking a native instruction, optimize
  for the highly contended case by issuing an atomic load before the
  \&\f(CW\*(C`CMPXCHG\*(C'\fR instruction, and using the \f(CW\*(C`PAUSE\*(C'\fR instruction
! to save CPU power when restarting the loop.
! .IP \fB\-mindirect\-branch=\fR\fIchoice\fR 4
  .IX Item "-mindirect-branch=choice"
  Convert indirect call and jump with \fIchoice\fR.  The default is
  \&\fBkeep\fR, which keeps indirect call and jump unmodified.
  \&\fBthunk\fR converts indirect call and jump to call and return thunk.
! \&\fBthunk\-inline\fR converts indirect call and jump to inlined call
! and return thunk.  \fBthunk\-extern\fR converts indirect call and jump
  to external call and return thunk provided in a separate object file.
  You can control this behavior for a specific function by using the
  function attribute \f(CW\*(C`indirect_branch\*(C'\fR.
*************** not be reachable in the large code model
*** 35906,35973 ****
  .Sp
  Note that \fB\-mindirect\-branch=thunk\-extern\fR is compatible with
  \&\fB\-fcf\-protection=branch\fR since the external thunk can be made
! to enable control-flow check.
! .IP "\fB\-mfunction\-return=\fR\fIchoice\fR" 4
  .IX Item "-mfunction-return=choice"
  Convert function return with \fIchoice\fR.  The default is \fBkeep\fR,
  which keeps function return unmodified.  \fBthunk\fR converts function
! return to call and return thunk.  \fBthunk-inline\fR converts function
! return to inlined call and return thunk.  \fBthunk-extern\fR converts
  function return to external call and return thunk provided in a separate
  object file.  You can control this behavior for a specific function by
  using the function attribute \f(CW\*(C`function_return\*(C'\fR.
  .Sp
  Note that \fB\-mindirect\-return=thunk\-extern\fR is compatible with
  \&\fB\-fcf\-protection=branch\fR since the external thunk can be made
! to enable control-flow check.
  .Sp
  Note that \fB\-mcmodel=large\fR is incompatible with
  \&\fB\-mfunction\-return=thunk\fR and
  \&\fB\-mfunction\-return=thunk\-extern\fR since the thunk function may
  not be reachable in the large code model.
! .IP "\fB\-mindirect\-branch\-register\fR" 4
  .IX Item "-mindirect-branch-register"
  Force indirect call and jump via register.
! .IP "\fB\-mharden\-sls=\fR\fIchoice\fR" 4
  .IX Item "-mharden-sls=choice"
! Generate code to mitigate against straight line speculation (\s-1SLS\s0) with
! \&\fIchoice\fR.  The default is \fBnone\fR which disables all \s-1SLS\s0
! hardening.  \fBreturn\fR enables \s-1SLS\s0 hardening for function returns.
! \&\fBindirect-jmp\fR enables \s-1SLS\s0 hardening for indirect jumps.
! \&\fBall\fR enables all \s-1SLS\s0 hardening.
! .IP "\fB\-mindirect\-branch\-cs\-prefix\fR" 4
  .IX Item "-mindirect-branch-cs-prefix"
! Add \s-1CS\s0 prefix to call and jmp to indirect thunk with branch target in
  r8\-r15 registers so that the call and jmp instruction length is 6 bytes
  to allow them to be replaced with \fBlfence; call *%r8\-r15\fR or
! \&\fBlfence; jmp *%r8\-r15\fR at run-time.
! .IP "\fB\-mapx\-inline\-asm\-use\-gpr32\fR" 4
  .IX Item "-mapx-inline-asm-use-gpr32"
! For inline asm support with \s-1APX,\s0 by default the \s-1EGPR\s0 feature was
! disabled to prevent potential illegal instruction with \s-1EGPR\s0 occurs.
  To invoke egpr usage in inline asm, use new compiler option
  \&\-mapx\-inline\-asm\-use\-gpr32 and user should ensure the instruction
! supports \s-1EGPR.\s0
! .IP "\fB\-mevex512\fR" 4
  .IX Item "-mevex512"
  .PD 0
! .IP "\fB\-mno\-evex512\fR" 4
  .IX Item "-mno-evex512"
  .PD
! Enables/disables 512\-bit vector. It will be default on if \s-1AVX512F\s0 is enabled.
  .PP
  These \fB\-m\fR switches are supported in addition to the above
  on x86\-64 processors in 64\-bit environments.
! .IP "\fB\-m32\fR" 4
  .IX Item "-m32"
  .PD 0
! .IP "\fB\-m64\fR" 4
  .IX Item "-m64"
! .IP "\fB\-mx32\fR" 4
  .IX Item "-mx32"
! .IP "\fB\-m16\fR" 4
  .IX Item "-m16"
! .IP "\fB\-miamcu\fR" 4
  .IX Item "-miamcu"
  .PD
  Generate code for a 16\-bit, 32\-bit or 64\-bit environment.
--- 35840,35907 ----
  .Sp
  Note that \fB\-mindirect\-branch=thunk\-extern\fR is compatible with
  \&\fB\-fcf\-protection=branch\fR since the external thunk can be made
! to enable control\-flow check.
! .IP \fB\-mfunction\-return=\fR\fIchoice\fR 4
  .IX Item "-mfunction-return=choice"
  Convert function return with \fIchoice\fR.  The default is \fBkeep\fR,
  which keeps function return unmodified.  \fBthunk\fR converts function
! return to call and return thunk.  \fBthunk\-inline\fR converts function
! return to inlined call and return thunk.  \fBthunk\-extern\fR converts
  function return to external call and return thunk provided in a separate
  object file.  You can control this behavior for a specific function by
  using the function attribute \f(CW\*(C`function_return\*(C'\fR.
  .Sp
  Note that \fB\-mindirect\-return=thunk\-extern\fR is compatible with
  \&\fB\-fcf\-protection=branch\fR since the external thunk can be made
! to enable control\-flow check.
  .Sp
  Note that \fB\-mcmodel=large\fR is incompatible with
  \&\fB\-mfunction\-return=thunk\fR and
  \&\fB\-mfunction\-return=thunk\-extern\fR since the thunk function may
  not be reachable in the large code model.
! .IP \fB\-mindirect\-branch\-register\fR 4
  .IX Item "-mindirect-branch-register"
  Force indirect call and jump via register.
! .IP \fB\-mharden\-sls=\fR\fIchoice\fR 4
  .IX Item "-mharden-sls=choice"
! Generate code to mitigate against straight line speculation (SLS) with
! \&\fIchoice\fR.  The default is \fBnone\fR which disables all SLS
! hardening.  \fBreturn\fR enables SLS hardening for function returns.
! \&\fBindirect\-jmp\fR enables SLS hardening for indirect jumps.
! \&\fBall\fR enables all SLS hardening.
! .IP \fB\-mindirect\-branch\-cs\-prefix\fR 4
  .IX Item "-mindirect-branch-cs-prefix"
! Add CS prefix to call and jmp to indirect thunk with branch target in
  r8\-r15 registers so that the call and jmp instruction length is 6 bytes
  to allow them to be replaced with \fBlfence; call *%r8\-r15\fR or
! \&\fBlfence; jmp *%r8\-r15\fR at run\-time.
! .IP \fB\-mapx\-inline\-asm\-use\-gpr32\fR 4
  .IX Item "-mapx-inline-asm-use-gpr32"
! For inline asm support with APX, by default the EGPR feature was
! disabled to prevent potential illegal instruction with EGPR occurs.
  To invoke egpr usage in inline asm, use new compiler option
  \&\-mapx\-inline\-asm\-use\-gpr32 and user should ensure the instruction
! supports EGPR.
! .IP \fB\-mevex512\fR 4
  .IX Item "-mevex512"
  .PD 0
! .IP \fB\-mno\-evex512\fR 4
  .IX Item "-mno-evex512"
  .PD
! Enables/disables 512\-bit vector. It will be default on if AVX512F is enabled.
  .PP
  These \fB\-m\fR switches are supported in addition to the above
  on x86\-64 processors in 64\-bit environments.
! .IP \fB\-m32\fR 4
  .IX Item "-m32"
  .PD 0
! .IP \fB\-m64\fR 4
  .IX Item "-m64"
! .IP \fB\-mx32\fR 4
  .IX Item "-mx32"
! .IP \fB\-m16\fR 4
  .IX Item "-m16"
! .IP \fB\-miamcu\fR 4
  .IX Item "-miamcu"
  .PD
  Generate code for a 16\-bit, 32\-bit or 64\-bit environment.
*************** The \fB\-m16\fR option is the same as \f
*** 35988,36045 ****
  it outputs the \f(CW\*(C`.code16gcc\*(C'\fR assembly directive at the beginning of
  the assembly output so that the binary can run in 16\-bit mode.
  .Sp
! The \fB\-miamcu\fR option generates code which conforms to Intel \s-1MCU\s0
  psABI.  It requires the \fB\-m32\fR option to be turned on.
! .IP "\fB\-mno\-red\-zone\fR" 4
  .IX Item "-mno-red-zone"
! Do not use a so-called \*(L"red zone\*(R" for x86\-64 code.  The red zone is mandated
! by the x86\-64 \s-1ABI\s0; it is a 128\-byte area beyond the location of the
  stack pointer that is not modified by signal or interrupt handlers
  and therefore can be used for temporary data without adjusting the stack
  pointer.  The flag \fB\-mno\-red\-zone\fR disables this red zone.
! .IP "\fB\-mcmodel=small\fR" 4
  .IX Item "-mcmodel=small"
  Generate code for the small code model: the program and its symbols must
! be linked in the lower 2 \s-1GB\s0 of the address space.  Pointers are 64 bits.
  Programs can be statically or dynamically linked.  This is the default
  code model.
! .IP "\fB\-mcmodel=kernel\fR" 4
  .IX Item "-mcmodel=kernel"
  Generate code for the kernel code model.  The kernel runs in the
! negative 2 \s-1GB\s0 of the address space.
  This model has to be used for Linux kernel code.
! .IP "\fB\-mcmodel=medium\fR" 4
  .IX Item "-mcmodel=medium"
  Generate code for the medium model: the program is linked in the lower 2
! \&\s-1GB\s0 of the address space.  Small symbols are also placed there.  Symbols
  with sizes larger than \fB\-mlarge\-data\-threshold\fR are put into
! large data or \s-1BSS\s0 sections and can be located above 2GB.  Programs can
  be statically or dynamically linked.
! .IP "\fB\-mcmodel=large\fR" 4
  .IX Item "-mcmodel=large"
  Generate code for the large model.  This model makes no assumptions
  about addresses and sizes of sections.
! .IP "\fB\-maddress\-mode=long\fR" 4
  .IX Item "-maddress-mode=long"
  Generate code for long address mode.  This is only supported for 64\-bit
  and x32 environments.  It is the default address mode for 64\-bit
  environments.
! .IP "\fB\-maddress\-mode=short\fR" 4
  .IX Item "-maddress-mode=short"
  Generate code for short address mode.  This is only supported for 32\-bit
  and x32 environments.  It is the default address mode for 32\-bit and
  x32 environments.
! .IP "\fB\-mneeded\fR" 4
  .IX Item "-mneeded"
  .PD 0
! .IP "\fB\-mno\-needed\fR" 4
  .IX Item "-mno-needed"
  .PD
! Emit \s-1GNU_PROPERTY_X86_ISA_1_NEEDED GNU\s0 property for Linux target to
! indicate the micro-architecture \s-1ISA\s0 level required to execute the binary.
! .IP "\fB\-mno\-direct\-extern\-access\fR" 4
  .IX Item "-mno-direct-extern-access"
! Without \fB\-fpic\fR nor \fB\-fPIC\fR, always use the \s-1GOT\s0 pointer
  to access external symbols.  With \fB\-fpic\fR or \fB\-fPIC\fR,
  treat access to protected symbols as local symbols.  The default is
  \&\fB\-mdirect\-extern\-access\fR.
--- 35922,35979 ----
  it outputs the \f(CW\*(C`.code16gcc\*(C'\fR assembly directive at the beginning of
  the assembly output so that the binary can run in 16\-bit mode.
  .Sp
! The \fB\-miamcu\fR option generates code which conforms to Intel MCU
  psABI.  It requires the \fB\-m32\fR option to be turned on.
! .IP \fB\-mno\-red\-zone\fR 4
  .IX Item "-mno-red-zone"
! Do not use a so\-called "red zone" for x86\-64 code.  The red zone is mandated
! by the x86\-64 ABI; it is a 128\-byte area beyond the location of the
  stack pointer that is not modified by signal or interrupt handlers
  and therefore can be used for temporary data without adjusting the stack
  pointer.  The flag \fB\-mno\-red\-zone\fR disables this red zone.
! .IP \fB\-mcmodel=small\fR 4
  .IX Item "-mcmodel=small"
  Generate code for the small code model: the program and its symbols must
! be linked in the lower 2 GB of the address space.  Pointers are 64 bits.
  Programs can be statically or dynamically linked.  This is the default
  code model.
! .IP \fB\-mcmodel=kernel\fR 4
  .IX Item "-mcmodel=kernel"
  Generate code for the kernel code model.  The kernel runs in the
! negative 2 GB of the address space.
  This model has to be used for Linux kernel code.
! .IP \fB\-mcmodel=medium\fR 4
  .IX Item "-mcmodel=medium"
  Generate code for the medium model: the program is linked in the lower 2
! GB of the address space.  Small symbols are also placed there.  Symbols
  with sizes larger than \fB\-mlarge\-data\-threshold\fR are put into
! large data or BSS sections and can be located above 2GB.  Programs can
  be statically or dynamically linked.
! .IP \fB\-mcmodel=large\fR 4
  .IX Item "-mcmodel=large"
  Generate code for the large model.  This model makes no assumptions
  about addresses and sizes of sections.
! .IP \fB\-maddress\-mode=long\fR 4
  .IX Item "-maddress-mode=long"
  Generate code for long address mode.  This is only supported for 64\-bit
  and x32 environments.  It is the default address mode for 64\-bit
  environments.
! .IP \fB\-maddress\-mode=short\fR 4
  .IX Item "-maddress-mode=short"
  Generate code for short address mode.  This is only supported for 32\-bit
  and x32 environments.  It is the default address mode for 32\-bit and
  x32 environments.
! .IP \fB\-mneeded\fR 4
  .IX Item "-mneeded"
  .PD 0
! .IP \fB\-mno\-needed\fR 4
  .IX Item "-mno-needed"
  .PD
! Emit GNU_PROPERTY_X86_ISA_1_NEEDED GNU property for Linux target to
! indicate the micro\-architecture ISA level required to execute the binary.
! .IP \fB\-mno\-direct\-extern\-access\fR 4
  .IX Item "-mno-direct-extern-access"
! Without \fB\-fpic\fR nor \fB\-fPIC\fR, always use the GOT pointer
  to access external symbols.  With \fB\-fpic\fR or \fB\-fPIC\fR,
  treat access to protected symbols as local symbols.  The default is
  \&\fB\-mdirect\-extern\-access\fR.
*************** treat access to protected symbols as loc
*** 36048,36062 ****
  \&\fB\-mno\-direct\-extern\-access\fR and executable compiled with
  \&\fB\-mdirect\-extern\-access\fR may not be binary compatible if
  protected symbols are used in shared libraries and executable.
! .IP "\fB\-munroll\-only\-small\-loops\fR" 4
  .IX Item "-munroll-only-small-loops"
  Controls conservative small loop unrolling. It is default enabled by
  O2, and unrolls loop with less than 4 insns by 1 time. Explicit
  \&\-f[no\-]unroll\-[all\-]loops would disable this flag to avoid any
  unintended unrolling behavior that user does not want.
! .IP "\fB\-mlam=\fR\fIchoice\fR" 4
  .IX Item "-mlam=choice"
! \&\s-1LAM\s0(linear\-address masking) allows special bits in the pointer to be used
  for metadata. The default is \fBnone\fR. With \fBu48\fR, pointer bits in
  positions 62:48 can be used for metadata; With \fBu57\fR, pointer bits in
  positions 62:57 can be used for metadata.
--- 35982,35996 ----
  \&\fB\-mno\-direct\-extern\-access\fR and executable compiled with
  \&\fB\-mdirect\-extern\-access\fR may not be binary compatible if
  protected symbols are used in shared libraries and executable.
! .IP \fB\-munroll\-only\-small\-loops\fR 4
  .IX Item "-munroll-only-small-loops"
  Controls conservative small loop unrolling. It is default enabled by
  O2, and unrolls loop with less than 4 insns by 1 time. Explicit
  \&\-f[no\-]unroll\-[all\-]loops would disable this flag to avoid any
  unintended unrolling behavior that user does not want.
! .IP \fB\-mlam=\fR\fIchoice\fR 4
  .IX Item "-mlam=choice"
! LAM(linear\-address masking) allows special bits in the pointer to be used
  for metadata. The default is \fBnone\fR. With \fBu48\fR, pointer bits in
  positions 62:48 can be used for metadata; With \fBu57\fR, pointer bits in
  positions 62:57 can be used for metadata.
*************** positions 62:57 can be used for metadata
*** 36068,36074 ****
  .IX Subsection "Xstormy16 Options"
  .PP
  These options are defined for Xstormy16:
! .IP "\fB\-msim\fR" 4
  .IX Item "-msim"
  Choose startup files and linker script suitable for the simulator.
  .PP
--- 36002,36008 ----
  .IX Subsection "Xstormy16 Options"
  .PP
  These options are defined for Xstormy16:
! .IP \fB\-msim\fR 4
  .IX Item "-msim"
  Choose startup files and linker script suitable for the simulator.
  .PP
*************** Choose startup files and linker script s
*** 36076,36085 ****
  .IX Subsection "Xtensa Options"
  .PP
  These options are supported for Xtensa targets:
! .IP "\fB\-mconst16\fR" 4
  .IX Item "-mconst16"
  .PD 0
! .IP "\fB\-mno\-const16\fR" 4
  .IX Item "-mno-const16"
  .PD
  Enable or disable use of \f(CW\*(C`CONST16\*(C'\fR instructions for loading
--- 36010,36019 ----
  .IX Subsection "Xtensa Options"
  .PP
  These options are supported for Xtensa targets:
! .IP \fB\-mconst16\fR 4
  .IX Item "-mconst16"
  .PD 0
! .IP \fB\-mno\-const16\fR 4
  .IX Item "-mno-const16"
  .PD
  Enable or disable use of \f(CW\*(C`CONST16\*(C'\fR instructions for loading
*************** standard option from Tensilica.  When en
*** 36088,36145 ****
  instructions are always used in place of the standard \f(CW\*(C`L32R\*(C'\fR
  instructions.  The use of \f(CW\*(C`CONST16\*(C'\fR is enabled by default only if
  the \f(CW\*(C`L32R\*(C'\fR instruction is not available.
! .IP "\fB\-mfused\-madd\fR" 4
  .IX Item "-mfused-madd"
  .PD 0
! .IP "\fB\-mno\-fused\-madd\fR" 4
  .IX Item "-mno-fused-madd"
  .PD
  Enable or disable use of fused multiply/add and multiply/subtract
! instructions in the floating-point option.  This has no effect if the
! floating-point option is not also enabled.  Disabling fused multiply/add
  and multiply/subtract instructions forces the compiler to use separate
  instructions for the multiply and add/subtract operations.  This may be
! desirable in some cases where strict \s-1IEEE\s0 754\-compliant results are
  required: the fused multiply add/subtract instructions do not round the
  intermediate result, thereby producing results with \fImore\fR bits of
! precision than specified by the \s-1IEEE\s0 standard.  Disabling fused multiply
  add/subtract instructions also ensures that the program output is not
! sensitive to the compiler's ability to combine multiply and add/subtract
  operations.
! .IP "\fB\-mserialize\-volatile\fR" 4
  .IX Item "-mserialize-volatile"
  .PD 0
! .IP "\fB\-mno\-serialize\-volatile\fR" 4
  .IX Item "-mno-serialize-volatile"
  .PD
! When this option is enabled, \s-1GCC\s0 inserts \f(CW\*(C`MEMW\*(C'\fR instructions before
  \&\f(CW\*(C`volatile\*(C'\fR memory references to guarantee sequential consistency.
  The default is \fB\-mserialize\-volatile\fR.  Use
  \&\fB\-mno\-serialize\-volatile\fR to omit the \f(CW\*(C`MEMW\*(C'\fR instructions.
! .IP "\fB\-mforce\-no\-pic\fR" 4
  .IX Item "-mforce-no-pic"
! For targets, like GNU/Linux, where all user-mode Xtensa code must be
! position-independent code (\s-1PIC\s0), this option disables \s-1PIC\s0 for compiling
  kernel code.
! .IP "\fB\-mtext\-section\-literals\fR" 4
  .IX Item "-mtext-section-literals"
  .PD 0
! .IP "\fB\-mno\-text\-section\-literals\fR" 4
  .IX Item "-mno-text-section-literals"
  .PD
  These options control the treatment of literal pools.  The default is
  \&\fB\-mno\-text\-section\-literals\fR, which places literals in a separate
  section in the output file.  This allows the literal pool to be placed
! in a data \s-1RAM/ROM,\s0 and it also allows the linker to combine literal
  pools from separate object files to remove redundant literals and
  improve code size.  With \fB\-mtext\-section\-literals\fR, the literals
  are interspersed in the text section in order to keep them as close as
  possible to their references.  This may be necessary for large assembly
  files.  Literals for each function are placed right before that function.
! .IP "\fB\-mauto\-litpools\fR" 4
  .IX Item "-mauto-litpools"
  .PD 0
! .IP "\fB\-mno\-auto\-litpools\fR" 4
  .IX Item "-mno-auto-litpools"
  .PD
  These options control the treatment of literal pools.  The default is
--- 36022,36079 ----
  instructions are always used in place of the standard \f(CW\*(C`L32R\*(C'\fR
  instructions.  The use of \f(CW\*(C`CONST16\*(C'\fR is enabled by default only if
  the \f(CW\*(C`L32R\*(C'\fR instruction is not available.
! .IP \fB\-mfused\-madd\fR 4
  .IX Item "-mfused-madd"
  .PD 0
! .IP \fB\-mno\-fused\-madd\fR 4
  .IX Item "-mno-fused-madd"
  .PD
  Enable or disable use of fused multiply/add and multiply/subtract
! instructions in the floating\-point option.  This has no effect if the
! floating\-point option is not also enabled.  Disabling fused multiply/add
  and multiply/subtract instructions forces the compiler to use separate
  instructions for the multiply and add/subtract operations.  This may be
! desirable in some cases where strict IEEE 754\-compliant results are
  required: the fused multiply add/subtract instructions do not round the
  intermediate result, thereby producing results with \fImore\fR bits of
! precision than specified by the IEEE standard.  Disabling fused multiply
  add/subtract instructions also ensures that the program output is not
! sensitive to the compiler\*(Aqs ability to combine multiply and add/subtract
  operations.
! .IP \fB\-mserialize\-volatile\fR 4
  .IX Item "-mserialize-volatile"
  .PD 0
! .IP \fB\-mno\-serialize\-volatile\fR 4
  .IX Item "-mno-serialize-volatile"
  .PD
! When this option is enabled, GCC inserts \f(CW\*(C`MEMW\*(C'\fR instructions before
  \&\f(CW\*(C`volatile\*(C'\fR memory references to guarantee sequential consistency.
  The default is \fB\-mserialize\-volatile\fR.  Use
  \&\fB\-mno\-serialize\-volatile\fR to omit the \f(CW\*(C`MEMW\*(C'\fR instructions.
! .IP \fB\-mforce\-no\-pic\fR 4
  .IX Item "-mforce-no-pic"
! For targets, like GNU/Linux, where all user\-mode Xtensa code must be
! position\-independent code (PIC), this option disables PIC for compiling
  kernel code.
! .IP \fB\-mtext\-section\-literals\fR 4
  .IX Item "-mtext-section-literals"
  .PD 0
! .IP \fB\-mno\-text\-section\-literals\fR 4
  .IX Item "-mno-text-section-literals"
  .PD
  These options control the treatment of literal pools.  The default is
  \&\fB\-mno\-text\-section\-literals\fR, which places literals in a separate
  section in the output file.  This allows the literal pool to be placed
! in a data RAM/ROM, and it also allows the linker to combine literal
  pools from separate object files to remove redundant literals and
  improve code size.  With \fB\-mtext\-section\-literals\fR, the literals
  are interspersed in the text section in order to keep them as close as
  possible to their references.  This may be necessary for large assembly
  files.  Literals for each function are placed right before that function.
! .IP \fB\-mauto\-litpools\fR 4
  .IX Item "-mauto-litpools"
  .PD 0
! .IP \fB\-mno\-auto\-litpools\fR 4
  .IX Item "-mno-auto-litpools"
  .PD
  These options control the treatment of literal pools.  The default is
*************** do relaxation and place literals as nece
*** 36153,36181 ****
  assembler to create several literal pools per function and assemble
  very big functions, which may not be possible with
  \&\fB\-mtext\-section\-literals\fR.
! .IP "\fB\-mtarget\-align\fR" 4
  .IX Item "-mtarget-align"
  .PD 0
! .IP "\fB\-mno\-target\-align\fR" 4
  .IX Item "-mno-target-align"
  .PD
! When this option is enabled, \s-1GCC\s0 instructs the assembler to
  automatically align instructions to reduce branch penalties at the
  expense of some code density.  The assembler attempts to widen density
  instructions to align branch targets and the instructions following call
  instructions.  If there are not enough preceding safe density
  instructions to align a target, no widening is performed.  The
  default is \fB\-mtarget\-align\fR.  These options do not affect the
! treatment of auto-aligned instructions like \f(CW\*(C`LOOP\*(C'\fR, which the
  assembler always aligns, either by widening density instructions or
! by inserting \s-1NOP\s0 instructions.
! .IP "\fB\-mlongcalls\fR" 4
  .IX Item "-mlongcalls"
  .PD 0
! .IP "\fB\-mno\-longcalls\fR" 4
  .IX Item "-mno-longcalls"
  .PD
! When this option is enabled, \s-1GCC\s0 instructs the assembler to translate
  direct calls to indirect calls unless it can determine that the target
  of a direct call is in the range allowed by the call instruction.  This
  translation typically occurs for calls to functions in other source
--- 36087,36115 ----
  assembler to create several literal pools per function and assemble
  very big functions, which may not be possible with
  \&\fB\-mtext\-section\-literals\fR.
! .IP \fB\-mtarget\-align\fR 4
  .IX Item "-mtarget-align"
  .PD 0
! .IP \fB\-mno\-target\-align\fR 4
  .IX Item "-mno-target-align"
  .PD
! When this option is enabled, GCC instructs the assembler to
  automatically align instructions to reduce branch penalties at the
  expense of some code density.  The assembler attempts to widen density
  instructions to align branch targets and the instructions following call
  instructions.  If there are not enough preceding safe density
  instructions to align a target, no widening is performed.  The
  default is \fB\-mtarget\-align\fR.  These options do not affect the
! treatment of auto\-aligned instructions like \f(CW\*(C`LOOP\*(C'\fR, which the
  assembler always aligns, either by widening density instructions or
! by inserting NOP instructions.
! .IP \fB\-mlongcalls\fR 4
  .IX Item "-mlongcalls"
  .PD 0
! .IP \fB\-mno\-longcalls\fR 4
  .IX Item "-mno-longcalls"
  .PD
! When this option is enabled, GCC instructs the assembler to translate
  direct calls to indirect calls unless it can determine that the target
  of a direct call is in the range allowed by the call instruction.  This
  translation typically occurs for calls to functions in other source
*************** instruction into an \f(CW\*(C`L32R\*(C'\
*** 36184,36224 ****
  The default is \fB\-mno\-longcalls\fR.  This option should be used in
  programs where the call target can potentially be out of range.  This
  option is implemented in the assembler, not the compiler, so the
! assembly code generated by \s-1GCC\s0 still shows direct call
  instructions\-\-\-look at the disassembled object code to see the actual
  instructions.  Note that the assembler uses an indirect call for
! every cross-file call, not just those that really are out of range.
! .IP "\fB\-mabi=\fR\fIname\fR" 4
  .IX Item "-mabi=name"
! Generate code for the specified \s-1ABI.\s0  Permissible values are: \fBcall0\fR,
! \&\fBwindowed\fR.  Default \s-1ABI\s0 is chosen by the Xtensa core configuration.
! .IP "\fB\-mabi=call0\fR" 4
  .IX Item "-mabi=call0"
  When this option is enabled function parameters are passed in registers
  \&\f(CW\*(C`a2\*(C'\fR through \f(CW\*(C`a7\*(C'\fR, registers \f(CW\*(C`a12\*(C'\fR through \f(CW\*(C`a15\*(C'\fR are
! caller-saved, and register \f(CW\*(C`a15\*(C'\fR may be used as a frame pointer.
! When this version of the \s-1ABI\s0 is enabled the C preprocessor symbol
  \&\f(CW\*(C`_\|_XTENSA_CALL0_ABI_\|_\*(C'\fR is defined.
! .IP "\fB\-mabi=windowed\fR" 4
  .IX Item "-mabi=windowed"
  When this option is enabled function parameters are passed in registers
  \&\f(CW\*(C`a10\*(C'\fR through \f(CW\*(C`a15\*(C'\fR, and called function rotates register window
  by 8 registers on entry so that its arguments are found in registers
  \&\f(CW\*(C`a2\*(C'\fR through \f(CW\*(C`a7\*(C'\fR.  Register \f(CW\*(C`a7\*(C'\fR may be used as a frame
  pointer.  Register window is rotated 8 registers back upon return.
! When this version of the \s-1ABI\s0 is enabled the C preprocessor symbol
  \&\f(CW\*(C`_\|_XTENSA_WINDOWED_ABI_\|_\*(C'\fR is defined.
! .IP "\fB\-mextra\-l32r\-costs=\fR\fIn\fR" 4
  .IX Item "-mextra-l32r-costs=n"
! Specify an extra cost of instruction \s-1RAM/ROM\s0 access for \f(CW\*(C`L32R\*(C'\fR
  instructions, in clock cycles.  This affects, when optimizing for speed,
  whether loading a constant from literal pool using \f(CW\*(C`L32R\*(C'\fR or
  synthesizing the constant from a small one with a couple of arithmetic
  instructions.  The default value is 0.
! .IP "\fB\-mstrict\-align\fR" 4
  .IX Item "-mstrict-align"
  .PD 0
! .IP "\fB\-mno\-strict\-align\fR" 4
  .IX Item "-mno-strict-align"
  .PD
  Avoid or allow generating memory accesses that may not be aligned on a natural
--- 36118,36158 ----
  The default is \fB\-mno\-longcalls\fR.  This option should be used in
  programs where the call target can potentially be out of range.  This
  option is implemented in the assembler, not the compiler, so the
! assembly code generated by GCC still shows direct call
  instructions\-\-\-look at the disassembled object code to see the actual
  instructions.  Note that the assembler uses an indirect call for
! every cross\-file call, not just those that really are out of range.
! .IP \fB\-mabi=\fR\fIname\fR 4
  .IX Item "-mabi=name"
! Generate code for the specified ABI.  Permissible values are: \fBcall0\fR,
! \&\fBwindowed\fR.  Default ABI is chosen by the Xtensa core configuration.
! .IP \fB\-mabi=call0\fR 4
  .IX Item "-mabi=call0"
  When this option is enabled function parameters are passed in registers
  \&\f(CW\*(C`a2\*(C'\fR through \f(CW\*(C`a7\*(C'\fR, registers \f(CW\*(C`a12\*(C'\fR through \f(CW\*(C`a15\*(C'\fR are
! caller\-saved, and register \f(CW\*(C`a15\*(C'\fR may be used as a frame pointer.
! When this version of the ABI is enabled the C preprocessor symbol
  \&\f(CW\*(C`_\|_XTENSA_CALL0_ABI_\|_\*(C'\fR is defined.
! .IP \fB\-mabi=windowed\fR 4
  .IX Item "-mabi=windowed"
  When this option is enabled function parameters are passed in registers
  \&\f(CW\*(C`a10\*(C'\fR through \f(CW\*(C`a15\*(C'\fR, and called function rotates register window
  by 8 registers on entry so that its arguments are found in registers
  \&\f(CW\*(C`a2\*(C'\fR through \f(CW\*(C`a7\*(C'\fR.  Register \f(CW\*(C`a7\*(C'\fR may be used as a frame
  pointer.  Register window is rotated 8 registers back upon return.
! When this version of the ABI is enabled the C preprocessor symbol
  \&\f(CW\*(C`_\|_XTENSA_WINDOWED_ABI_\|_\*(C'\fR is defined.
! .IP \fB\-mextra\-l32r\-costs=\fR\fIn\fR 4
  .IX Item "-mextra-l32r-costs=n"
! Specify an extra cost of instruction RAM/ROM access for \f(CW\*(C`L32R\*(C'\fR
  instructions, in clock cycles.  This affects, when optimizing for speed,
  whether loading a constant from literal pool using \f(CW\*(C`L32R\*(C'\fR or
  synthesizing the constant from a small one with a couple of arithmetic
  instructions.  The default value is 0.
! .IP \fB\-mstrict\-align\fR 4
  .IX Item "-mstrict-align"
  .PD 0
! .IP \fB\-mno\-strict\-align\fR 4
  .IX Item "-mno-strict-align"
  .PD
  Avoid or allow generating memory accesses that may not be aligned on a natural
*************** other cores.
*** 36231,36239 ****
  .IX Subsection "zSeries Options"
  .PP
  These are listed under
! .SH "ENVIRONMENT"
  .IX Header "ENVIRONMENT"
! This section describes several environment variables that affect how \s-1GCC\s0
  operates.  Some of them work by specifying directories or prefixes to use
  when searching for various kinds of files.  Some are used to specify other
  aspects of the compilation environment.
--- 36165,36173 ----
  .IX Subsection "zSeries Options"
  .PP
  These are listed under
! .SH ENVIRONMENT
  .IX Header "ENVIRONMENT"
! This section describes several environment variables that affect how GCC
  operates.  Some of them work by specifying directories or prefixes to use
  when searching for various kinds of files.  Some are used to specify other
  aspects of the compilation environment.
*************** aspects of the compilation environment.
*** 36241,36306 ****
  Note that you can also specify places to search using options such as
  \&\fB\-B\fR, \fB\-I\fR and \fB\-L\fR.  These
  take precedence over places specified using environment variables, which
! in turn take precedence over those specified by the configuration of \s-1GCC.\s0
! .IP "\fB\s-1LANG\s0\fR" 4
  .IX Item "LANG"
  .PD 0
! .IP "\fB\s-1LC_CTYPE\s0\fR" 4
  .IX Item "LC_CTYPE"
! .IP "\fB\s-1LC_MESSAGES\s0\fR" 4
  .IX Item "LC_MESSAGES"
! .IP "\fB\s-1LC_ALL\s0\fR" 4
  .IX Item "LC_ALL"
  .PD
! These environment variables control the way that \s-1GCC\s0 uses
! localization information which allows \s-1GCC\s0 to work with different
! national conventions.  \s-1GCC\s0 inspects the locale categories
! \&\fB\s-1LC_CTYPE\s0\fR and \fB\s-1LC_MESSAGES\s0\fR if it has been configured to do
  so.  These locale categories can be set to any value supported by your
  installation.  A typical value is \fBen_GB.UTF\-8\fR for English in the United
! Kingdom encoded in \s-1UTF\-8.\s0
  .Sp
! The \fB\s-1LC_CTYPE\s0\fR environment variable specifies character
! classification.  \s-1GCC\s0 uses it to determine the character boundaries in
  a string; this is needed for some multibyte encodings that contain quote
  and escape characters that are otherwise interpreted as a string
  end or escape.
  .Sp
! The \fB\s-1LC_MESSAGES\s0\fR environment variable specifies the language to
  use in diagnostic messages.
  .Sp
! If the \fB\s-1LC_ALL\s0\fR environment variable is set, it overrides the value
! of \fB\s-1LC_CTYPE\s0\fR and \fB\s-1LC_MESSAGES\s0\fR; otherwise, \fB\s-1LC_CTYPE\s0\fR
! and \fB\s-1LC_MESSAGES\s0\fR default to the value of the \fB\s-1LANG\s0\fR
! environment variable.  If none of these variables are set, \s-1GCC\s0
  defaults to traditional C English behavior.
! .IP "\fB\s-1TMPDIR\s0\fR" 4
  .IX Item "TMPDIR"
! If \fB\s-1TMPDIR\s0\fR is set, it specifies the directory to use for temporary
! files.  \s-1GCC\s0 uses temporary files to hold the output of one stage of
  compilation which is to be used as input to the next stage: for example,
  the output of the preprocessor, which is the input to the compiler
  proper.
! .IP "\fB\s-1GCC_COMPARE_DEBUG\s0\fR" 4
  .IX Item "GCC_COMPARE_DEBUG"
! Setting \fB\s-1GCC_COMPARE_DEBUG\s0\fR is nearly equivalent to passing
  \&\fB\-fcompare\-debug\fR to the compiler driver.  See the documentation
  of this option for more details.
! .IP "\fB\s-1GCC_EXEC_PREFIX\s0\fR" 4
  .IX Item "GCC_EXEC_PREFIX"
! If \fB\s-1GCC_EXEC_PREFIX\s0\fR is set, it specifies a prefix to use in the
  names of the subprograms executed by the compiler.  No slash is added
  when this prefix is combined with the name of a subprogram, but you can
  specify a prefix that ends with a slash if you wish.
  .Sp
! If \fB\s-1GCC_EXEC_PREFIX\s0\fR is not set, \s-1GCC\s0 attempts to figure out
  an appropriate prefix to use based on the pathname it is invoked with.
  .Sp
! If \s-1GCC\s0 cannot find the subprogram using the specified prefix, it
  tries looking in the usual places for the subprogram.
  .Sp
! The default value of \fB\s-1GCC_EXEC_PREFIX\s0\fR is
! \&\fI\fIprefix\fI/lib/gcc/\fR where \fIprefix\fR is the prefix to
  the installed compiler. In many cases \fIprefix\fR is the value
  of \f(CW\*(C`prefix\*(C'\fR when you ran the \fIconfigure\fR script.
  .Sp
--- 36175,36240 ----
  Note that you can also specify places to search using options such as
  \&\fB\-B\fR, \fB\-I\fR and \fB\-L\fR.  These
  take precedence over places specified using environment variables, which
! in turn take precedence over those specified by the configuration of GCC.
! .IP \fBLANG\fR 4
  .IX Item "LANG"
  .PD 0
! .IP \fBLC_CTYPE\fR 4
  .IX Item "LC_CTYPE"
! .IP \fBLC_MESSAGES\fR 4
  .IX Item "LC_MESSAGES"
! .IP \fBLC_ALL\fR 4
  .IX Item "LC_ALL"
  .PD
! These environment variables control the way that GCC uses
! localization information which allows GCC to work with different
! national conventions.  GCC inspects the locale categories
! \&\fBLC_CTYPE\fR and \fBLC_MESSAGES\fR if it has been configured to do
  so.  These locale categories can be set to any value supported by your
  installation.  A typical value is \fBen_GB.UTF\-8\fR for English in the United
! Kingdom encoded in UTF\-8.
  .Sp
! The \fBLC_CTYPE\fR environment variable specifies character
! classification.  GCC uses it to determine the character boundaries in
  a string; this is needed for some multibyte encodings that contain quote
  and escape characters that are otherwise interpreted as a string
  end or escape.
  .Sp
! The \fBLC_MESSAGES\fR environment variable specifies the language to
  use in diagnostic messages.
  .Sp
! If the \fBLC_ALL\fR environment variable is set, it overrides the value
! of \fBLC_CTYPE\fR and \fBLC_MESSAGES\fR; otherwise, \fBLC_CTYPE\fR
! and \fBLC_MESSAGES\fR default to the value of the \fBLANG\fR
! environment variable.  If none of these variables are set, GCC
  defaults to traditional C English behavior.
! .IP \fBTMPDIR\fR 4
  .IX Item "TMPDIR"
! If \fBTMPDIR\fR is set, it specifies the directory to use for temporary
! files.  GCC uses temporary files to hold the output of one stage of
  compilation which is to be used as input to the next stage: for example,
  the output of the preprocessor, which is the input to the compiler
  proper.
! .IP \fBGCC_COMPARE_DEBUG\fR 4
  .IX Item "GCC_COMPARE_DEBUG"
! Setting \fBGCC_COMPARE_DEBUG\fR is nearly equivalent to passing
  \&\fB\-fcompare\-debug\fR to the compiler driver.  See the documentation
  of this option for more details.
! .IP \fBGCC_EXEC_PREFIX\fR 4
  .IX Item "GCC_EXEC_PREFIX"
! If \fBGCC_EXEC_PREFIX\fR is set, it specifies a prefix to use in the
  names of the subprograms executed by the compiler.  No slash is added
  when this prefix is combined with the name of a subprogram, but you can
  specify a prefix that ends with a slash if you wish.
  .Sp
! If \fBGCC_EXEC_PREFIX\fR is not set, GCC attempts to figure out
  an appropriate prefix to use based on the pathname it is invoked with.
  .Sp
! If GCC cannot find the subprogram using the specified prefix, it
  tries looking in the usual places for the subprogram.
  .Sp
! The default value of \fBGCC_EXEC_PREFIX\fR is
! \&\fIprefix/lib/gcc/\fR where \fIprefix\fR is the prefix to
  the installed compiler. In many cases \fIprefix\fR is the value
  of \f(CW\*(C`prefix\*(C'\fR when you ran the \fIconfigure\fR script.
  .Sp
*************** used for linking.
*** 36312,36378 ****
  In addition, the prefix is used in an unusual way in finding the
  directories to search for header files.  For each of the standard
  directories whose name normally begins with \fB/usr/local/lib/gcc\fR
! (more precisely, with the value of \fB\s-1GCC_INCLUDE_DIR\s0\fR), \s-1GCC\s0 tries
  replacing that beginning with the specified prefix to produce an
! alternate directory name.  Thus, with \fB\-Bfoo/\fR, \s-1GCC\s0 searches
  \&\fIfoo/bar\fR just before it searches the standard directory
  \&\fI/usr/local/lib/bar\fR.
  If a standard directory begins with the configured
  \&\fIprefix\fR then the value of \fIprefix\fR is replaced by
! \&\fB\s-1GCC_EXEC_PREFIX\s0\fR when looking for header files.
! .IP "\fB\s-1COMPILER_PATH\s0\fR" 4
  .IX Item "COMPILER_PATH"
! The value of \fB\s-1COMPILER_PATH\s0\fR is a colon-separated list of
! directories, much like \fB\s-1PATH\s0\fR.  \s-1GCC\s0 tries the directories thus
  specified when searching for subprograms, if it cannot find the
! subprograms using \fB\s-1GCC_EXEC_PREFIX\s0\fR.
! .IP "\fB\s-1LIBRARY_PATH\s0\fR" 4
  .IX Item "LIBRARY_PATH"
! The value of \fB\s-1LIBRARY_PATH\s0\fR is a colon-separated list of
! directories, much like \fB\s-1PATH\s0\fR.  When configured as a native compiler,
! \&\s-1GCC\s0 tries the directories thus specified when searching for special
! linker files, if it cannot find them using \fB\s-1GCC_EXEC_PREFIX\s0\fR.  Linking
! using \s-1GCC\s0 also uses these directories when searching for ordinary
  libraries for the \fB\-l\fR option (but directories specified with
  \&\fB\-L\fR come first).
! .IP "\fB\s-1LANG\s0\fR" 4
  .IX Item "LANG"
  This variable is used to pass locale information to the compiler.  One way in
  which this information is used is to determine the character set to be used
! when character literals, string literals and comments are parsed in C and \*(C+.
  When the compiler is configured to allow multibyte characters,
! the following values for \fB\s-1LANG\s0\fR are recognized:
  .RS 4
! .IP "\fBC\-JIS\fR" 4
  .IX Item "C-JIS"
! Recognize \s-1JIS\s0 characters.
! .IP "\fBC\-SJIS\fR" 4
  .IX Item "C-SJIS"
! Recognize \s-1SJIS\s0 characters.
! .IP "\fBC\-EUCJP\fR" 4
  .IX Item "C-EUCJP"
! Recognize \s-1EUCJP\s0 characters.
  .RE
  .RS 4
  .Sp
! If \fB\s-1LANG\s0\fR is not defined, or if it has some other value, then the
  compiler uses \f(CW\*(C`mblen\*(C'\fR and \f(CW\*(C`mbtowc\*(C'\fR as defined by the default locale to
  recognize and translate multibyte characters.
  .RE
! .IP "\fB\s-1GCC_EXTRA_DIAGNOSTIC_OUTPUT\s0\fR" 4
  .IX Item "GCC_EXTRA_DIAGNOSTIC_OUTPUT"
! If \fB\s-1GCC_EXTRA_DIAGNOSTIC_OUTPUT\s0\fR is set to one of the following values,
! then additional text will be emitted to stderr when fix-it hints are
  emitted.  \fB\-fdiagnostics\-parseable\-fixits\fR and
  \&\fB\-fno\-diagnostics\-parseable\-fixits\fR take precedence over this
  environment variable.
  .RS 4
! .IP "\fBfixits\-v1\fR" 4
  .IX Item "fixits-v1"
! Emit parseable fix-it hints, equivalent to
  \&\fB\-fdiagnostics\-parseable\-fixits\fR.  In particular, columns are
  expressed as a count of bytes, starting at byte 1 for the initial column.
! .IP "\fBfixits\-v2\fR" 4
  .IX Item "fixits-v2"
  As \f(CW\*(C`fixits\-v1\*(C'\fR, but columns are expressed as display columns,
  as per \fB\-fdiagnostics\-column\-unit=display\fR.
--- 36246,36312 ----
  In addition, the prefix is used in an unusual way in finding the
  directories to search for header files.  For each of the standard
  directories whose name normally begins with \fB/usr/local/lib/gcc\fR
! (more precisely, with the value of \fBGCC_INCLUDE_DIR\fR), GCC tries
  replacing that beginning with the specified prefix to produce an
! alternate directory name.  Thus, with \fB\-Bfoo/\fR, GCC searches
  \&\fIfoo/bar\fR just before it searches the standard directory
  \&\fI/usr/local/lib/bar\fR.
  If a standard directory begins with the configured
  \&\fIprefix\fR then the value of \fIprefix\fR is replaced by
! \&\fBGCC_EXEC_PREFIX\fR when looking for header files.
! .IP \fBCOMPILER_PATH\fR 4
  .IX Item "COMPILER_PATH"
! The value of \fBCOMPILER_PATH\fR is a colon\-separated list of
! directories, much like \fBPATH\fR.  GCC tries the directories thus
  specified when searching for subprograms, if it cannot find the
! subprograms using \fBGCC_EXEC_PREFIX\fR.
! .IP \fBLIBRARY_PATH\fR 4
  .IX Item "LIBRARY_PATH"
! The value of \fBLIBRARY_PATH\fR is a colon\-separated list of
! directories, much like \fBPATH\fR.  When configured as a native compiler,
! GCC tries the directories thus specified when searching for special
! linker files, if it cannot find them using \fBGCC_EXEC_PREFIX\fR.  Linking
! using GCC also uses these directories when searching for ordinary
  libraries for the \fB\-l\fR option (but directories specified with
  \&\fB\-L\fR come first).
! .IP \fBLANG\fR 4
  .IX Item "LANG"
  This variable is used to pass locale information to the compiler.  One way in
  which this information is used is to determine the character set to be used
! when character literals, string literals and comments are parsed in C and C++.
  When the compiler is configured to allow multibyte characters,
! the following values for \fBLANG\fR are recognized:
  .RS 4
! .IP \fBC\-JIS\fR 4
  .IX Item "C-JIS"
! Recognize JIS characters.
! .IP \fBC\-SJIS\fR 4
  .IX Item "C-SJIS"
! Recognize SJIS characters.
! .IP \fBC\-EUCJP\fR 4
  .IX Item "C-EUCJP"
! Recognize EUCJP characters.
  .RE
  .RS 4
  .Sp
! If \fBLANG\fR is not defined, or if it has some other value, then the
  compiler uses \f(CW\*(C`mblen\*(C'\fR and \f(CW\*(C`mbtowc\*(C'\fR as defined by the default locale to
  recognize and translate multibyte characters.
  .RE
! .IP \fBGCC_EXTRA_DIAGNOSTIC_OUTPUT\fR 4
  .IX Item "GCC_EXTRA_DIAGNOSTIC_OUTPUT"
! If \fBGCC_EXTRA_DIAGNOSTIC_OUTPUT\fR is set to one of the following values,
! then additional text will be emitted to stderr when fix\-it hints are
  emitted.  \fB\-fdiagnostics\-parseable\-fixits\fR and
  \&\fB\-fno\-diagnostics\-parseable\-fixits\fR take precedence over this
  environment variable.
  .RS 4
! .IP \fBfixits\-v1\fR 4
  .IX Item "fixits-v1"
! Emit parseable fix\-it hints, equivalent to
  \&\fB\-fdiagnostics\-parseable\-fixits\fR.  In particular, columns are
  expressed as a count of bytes, starting at byte 1 for the initial column.
! .IP \fBfixits\-v2\fR 4
  .IX Item "fixits-v2"
  As \f(CW\*(C`fixits\-v1\*(C'\fR, but columns are expressed as display columns,
  as per \fB\-fdiagnostics\-column\-unit=display\fR.
*************** as per \fB\-fdiagnostics\-column\-unit=d
*** 36382,36404 ****
  .PP
  Some additional environment variables affect the behavior of the
  preprocessor.
! .IP "\fB\s-1CPATH\s0\fR" 4
  .IX Item "CPATH"
  .PD 0
! .IP "\fBC_INCLUDE_PATH\fR" 4
  .IX Item "C_INCLUDE_PATH"
! .IP "\fB\s-1CPLUS_INCLUDE_PATH\s0\fR" 4
  .IX Item "CPLUS_INCLUDE_PATH"
! .IP "\fB\s-1OBJC_INCLUDE_PATH\s0\fR" 4
  .IX Item "OBJC_INCLUDE_PATH"
  .PD
! Each variable's value is a list of directories separated by a special
! character, much like \fB\s-1PATH\s0\fR, in which to look for header files.
! The special character, \f(CW\*(C`PATH_SEPARATOR\*(C'\fR, is target-dependent and
! determined at \s-1GCC\s0 build time.  For Microsoft Windows-based targets it is a
  semicolon, and for almost all other targets it is a colon.
  .Sp
! \&\fB\s-1CPATH\s0\fR specifies a list of directories to be searched as if
  specified with \fB\-I\fR, but after any paths given with \fB\-I\fR
  options on the command line.  This environment variable is used
  regardless of which language is being preprocessed.
--- 36316,36338 ----
  .PP
  Some additional environment variables affect the behavior of the
  preprocessor.
! .IP \fBCPATH\fR 4
  .IX Item "CPATH"
  .PD 0
! .IP \fBC_INCLUDE_PATH\fR 4
  .IX Item "C_INCLUDE_PATH"
! .IP \fBCPLUS_INCLUDE_PATH\fR 4
  .IX Item "CPLUS_INCLUDE_PATH"
! .IP \fBOBJC_INCLUDE_PATH\fR 4
  .IX Item "OBJC_INCLUDE_PATH"
  .PD
! Each variable\*(Aqs value is a list of directories separated by a special
! character, much like \fBPATH\fR, in which to look for header files.
! The special character, \f(CW\*(C`PATH_SEPARATOR\*(C'\fR, is target\-dependent and
! determined at GCC build time.  For Microsoft Windows\-based targets it is a
  semicolon, and for almost all other targets it is a colon.
  .Sp
! \&\fBCPATH\fR specifies a list of directories to be searched as if
  specified with \fB\-I\fR, but after any paths given with \fB\-I\fR
  options on the command line.  This environment variable is used
  regardless of which language is being preprocessed.
*************** paths given with \fB\-isystem\fR options
*** 36411,36426 ****
  In all these variables, an empty element instructs the compiler to
  search its current working directory.  Empty elements can appear at the
  beginning or end of a path.  For instance, if the value of
! \&\fB\s-1CPATH\s0\fR is \f(CW\*(C`:/special/include\*(C'\fR, that has the same
  effect as \fB\-I.\ \-I/special/include\fR.
! .IP "\fB\s-1DEPENDENCIES_OUTPUT\s0\fR" 4
  .IX Item "DEPENDENCIES_OUTPUT"
  If this variable is set, its value specifies how to output
! dependencies for Make based on the non-system header files processed
  by the compiler.  System header files are ignored in the dependency
  output.
  .Sp
! The value of \fB\s-1DEPENDENCIES_OUTPUT\s0\fR can be just a file name, in
  which case the Make rules are written to that file, guessing the target
  name from the source file name.  Or the value can have the form
  \&\fIfile\fR\fB \fR\fItarget\fR, in which case the rules are written to
--- 36345,36360 ----
  In all these variables, an empty element instructs the compiler to
  search its current working directory.  Empty elements can appear at the
  beginning or end of a path.  For instance, if the value of
! \&\fBCPATH\fR is \f(CW\*(C`:/special/include\*(C'\fR, that has the same
  effect as \fB\-I.\ \-I/special/include\fR.
! .IP \fBDEPENDENCIES_OUTPUT\fR 4
  .IX Item "DEPENDENCIES_OUTPUT"
  If this variable is set, its value specifies how to output
! dependencies for Make based on the non\-system header files processed
  by the compiler.  System header files are ignored in the dependency
  output.
  .Sp
! The value of \fBDEPENDENCIES_OUTPUT\fR can be just a file name, in
  which case the Make rules are written to that file, guessing the target
  name from the source file name.  Or the value can have the form
  \&\fIfile\fR\fB \fR\fItarget\fR, in which case the rules are written to
*************** file \fIfile\fR using \fItarget\fR as th
*** 36429,36501 ****
  In other words, this environment variable is equivalent to combining
  the options \fB\-MM\fR and \fB\-MF\fR,
  with an optional \fB\-MT\fR switch too.
! .IP "\fB\s-1SUNPRO_DEPENDENCIES\s0\fR" 4
  .IX Item "SUNPRO_DEPENDENCIES"
! This variable is the same as \fB\s-1DEPENDENCIES_OUTPUT\s0\fR (see above),
  except that system header files are not ignored, so it implies
  \&\fB\-M\fR rather than \fB\-MM\fR.  However, the dependence on the
  main input file is omitted.
! .IP "\fB\s-1SOURCE_DATE_EPOCH\s0\fR" 4
  .IX Item "SOURCE_DATE_EPOCH"
! If this variable is set, its value specifies a \s-1UNIX\s0 timestamp to be
  used in replacement of the current date and time in the \f(CW\*(C`_\|_DATE_\|_\*(C'\fR
  and \f(CW\*(C`_\|_TIME_\|_\*(C'\fR macros, so that the embedded timestamps become
  reproducible.
  .Sp
! The value of \fB\s-1SOURCE_DATE_EPOCH\s0\fR must be a \s-1UNIX\s0 timestamp,
  defined as the number of seconds (excluding leap seconds) since
! 01 Jan 1970 00:00:00 represented in \s-1ASCII\s0; identical to the output of
  \&\f(CW\*(C`date +%s\*(C'\fR on GNU/Linux and other systems that support the
  \&\f(CW%s\fR extension in the \f(CW\*(C`date\*(C'\fR command.
  .Sp
  The value should be a known timestamp such as the last modification
  time of the source or package and it should be set by the build
  process.
! .SH "BUGS"
  .IX Header "BUGS"
  For instructions on reporting bugs, see
  <\fBhttps://gcc.gnu.org/bugs/\fR>.
! .SH "FOOTNOTES"
  .IX Header "FOOTNOTES"
! .IP "1." 4
  On some systems, \fBgcc \-shared\fR
  needs to build supplementary stub code for constructors to work.  On
! multi-libbed systems, \fBgcc \-shared\fR must select the correct support
  libraries to link against.  Failing to supply the correct flags may lead
  to subtle defects.  Supplying them in cases where they are not necessary
  is innocuous.  \fB\-shared\fR suppresses the addition of startup code
! to alter the floating-point environment as done with \fB\-ffast\-math\fR,
  \&\fB\-Ofast\fR or \fB\-funsafe\-math\-optimizations\fR on some targets.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf\-funding\fR\|(7),
! \&\fIcpp\fR\|(1), \fIgcov\fR\|(1), \fIas\fR\|(1), \fIld\fR\|(1), \fIgdb\fR\|(1)
  and the Info entries for \fIgcc\fR, \fIcpp\fR, \fIas\fR,
  \&\fIld\fR, \fIbinutils\fR and \fIgdb\fR.
! .SH "AUTHOR"
  .IX Header "AUTHOR"
  See the Info entry for \fBgcc\fR, or
  <\fBhttps://gcc.gnu.org/onlinedocs/gcc/Contributors.html\fR>,
! for contributors to \s-1GCC.\s0
! .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 1988\-2025 Free Software Foundation, Inc.
  .PP
  Permission is granted to copy, distribute and/or modify this document
! under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 or
  any later version published by the Free Software Foundation; with the
! Invariant Sections being \*(L"\s-1GNU\s0 General Public License\*(R" and \*(L"Funding
! Free Software\*(R", the Front-Cover texts being (a) (see below), and with
! the Back-Cover Texts being (b) (see below).  A copy of the license is
! included in the \fIgfdl\fR\|(7) man page.
  .PP
! (a) The \s-1FSF\s0's Front-Cover Text is:
  .PP
  .Vb 1
  \&     A GNU Manual
  .Ve
  .PP
! (b) The \s-1FSF\s0's Back-Cover Text is:
  .PP
  .Vb 3
  \&     You have freedom to copy and modify this GNU Manual, like GNU
--- 36363,36435 ----
  In other words, this environment variable is equivalent to combining
  the options \fB\-MM\fR and \fB\-MF\fR,
  with an optional \fB\-MT\fR switch too.
! .IP \fBSUNPRO_DEPENDENCIES\fR 4
  .IX Item "SUNPRO_DEPENDENCIES"
! This variable is the same as \fBDEPENDENCIES_OUTPUT\fR (see above),
  except that system header files are not ignored, so it implies
  \&\fB\-M\fR rather than \fB\-MM\fR.  However, the dependence on the
  main input file is omitted.
! .IP \fBSOURCE_DATE_EPOCH\fR 4
  .IX Item "SOURCE_DATE_EPOCH"
! If this variable is set, its value specifies a UNIX timestamp to be
  used in replacement of the current date and time in the \f(CW\*(C`_\|_DATE_\|_\*(C'\fR
  and \f(CW\*(C`_\|_TIME_\|_\*(C'\fR macros, so that the embedded timestamps become
  reproducible.
  .Sp
! The value of \fBSOURCE_DATE_EPOCH\fR must be a UNIX timestamp,
  defined as the number of seconds (excluding leap seconds) since
! 01 Jan 1970 00:00:00 represented in ASCII; identical to the output of
  \&\f(CW\*(C`date +%s\*(C'\fR on GNU/Linux and other systems that support the
  \&\f(CW%s\fR extension in the \f(CW\*(C`date\*(C'\fR command.
  .Sp
  The value should be a known timestamp such as the last modification
  time of the source or package and it should be set by the build
  process.
! .SH BUGS
  .IX Header "BUGS"
  For instructions on reporting bugs, see
  <\fBhttps://gcc.gnu.org/bugs/\fR>.
! .SH FOOTNOTES
  .IX Header "FOOTNOTES"
! .IP 1. 4
  On some systems, \fBgcc \-shared\fR
  needs to build supplementary stub code for constructors to work.  On
! multi\-libbed systems, \fBgcc \-shared\fR must select the correct support
  libraries to link against.  Failing to supply the correct flags may lead
  to subtle defects.  Supplying them in cases where they are not necessary
  is innocuous.  \fB\-shared\fR suppresses the addition of startup code
! to alter the floating\-point environment as done with \fB\-ffast\-math\fR,
  \&\fB\-Ofast\fR or \fB\-funsafe\-math\-optimizations\fR on some targets.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fBgpl\fR\|(7), \fBgfdl\fR\|(7), \fBfsf\-funding\fR\|(7),
! \&\fBcpp\fR\|(1), \fBgcov\fR\|(1), \fBas\fR\|(1), \fBld\fR\|(1), \fBgdb\fR\|(1)
  and the Info entries for \fIgcc\fR, \fIcpp\fR, \fIas\fR,
  \&\fIld\fR, \fIbinutils\fR and \fIgdb\fR.
! .SH AUTHOR
  .IX Header "AUTHOR"
  See the Info entry for \fBgcc\fR, or
  <\fBhttps://gcc.gnu.org/onlinedocs/gcc/Contributors.html\fR>,
! for contributors to GCC.
! .SH COPYRIGHT
  .IX Header "COPYRIGHT"
  Copyright (c) 1988\-2025 Free Software Foundation, Inc.
  .PP
  Permission is granted to copy, distribute and/or modify this document
! under the terms of the GNU Free Documentation License, Version 1.3 or
  any later version published by the Free Software Foundation; with the
! Invariant Sections being "GNU General Public License" and "Funding
! Free Software", the Front\-Cover texts being (a) (see below), and with
! the Back\-Cover Texts being (b) (see below).  A copy of the license is
! included in the \fBgfdl\fR\|(7) man page.
  .PP
! (a) The FSF\*(Aqs Front\-Cover Text is:
  .PP
  .Vb 1
  \&     A GNU Manual
  .Ve
  .PP
! (b) The FSF\*(Aqs Back\-Cover Text is:
  .PP
  .Vb 3
  \&     You have freedom to copy and modify this GNU Manual, like GNU
diff -Nrcpad gcc-15.2.0/gcc/doc/gcc.info gcc-15.3.0/gcc/doc/gcc.info
*** gcc-15.2.0/gcc/doc/gcc.info	Fri Aug  8 07:10:05 2025
--- gcc-15.3.0/gcc/doc/gcc.info	Fri Jun 12 06:28:41 2026
***************
*** 1,8 ****
! This is gcc.info, produced by makeinfo version 6.5 from gcc.texi.
  
  This file documents the use of the GNU compilers.
  
!  Copyright (C) 1988-2025 Free Software Foundation, Inc.
  
   Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,8 ----
! This is gcc.info, produced by makeinfo version 7.1 from gcc.texi.
  
  This file documents the use of the GNU compilers.
  
!  Copyright Â© 1988-2025 Free Software Foundation, Inc.
  
   Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** INFO-DIR-SECTION Software development
*** 25,41 ****
  START-INFO-DIR-ENTRY
  * gcc: (gcc).                  The GNU Compiler Collection.
  * g++: (gcc).                  The GNU C++ compiler.
! * gcov: (gcc) Gcov.            'gcov'--a test coverage program.
! * gcov-tool: (gcc) Gcov-tool.  'gcov-tool'--an offline gcda profile processing program.
! * gcov-dump: (gcc) Gcov-dump.  'gcov-dump'--an offline gcda and gcno profile dump tool.
! * lto-dump: (gcc) lto-dump.    'lto-dump'--Tool for
  dumping LTO object files.
  END-INFO-DIR-ENTRY
  
  
   This file documents the use of the GNU compilers.
  
!  Copyright (C) 1988-2025 Free Software Foundation, Inc.
  
   Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 25,41 ----
  START-INFO-DIR-ENTRY
  * gcc: (gcc).                  The GNU Compiler Collection.
  * g++: (gcc).                  The GNU C++ compiler.
! * gcov: (gcc) Gcov.            â€˜gcovâ€™--a test coverage program.
! * gcov-tool: (gcc) Gcov-tool.  â€˜gcov-toolâ€™--an offline gcda profile processing program.
! * gcov-dump: (gcc) Gcov-dump.  â€˜gcov-dumpâ€™--an offline gcda and gcno profile dump tool.
! * lto-dump: (gcc) lto-dump.    â€˜lto-dumpâ€™--Tool for
  dumping LTO object files.
  END-INFO-DIR-ENTRY
  
  
   This file documents the use of the GNU compilers.
  
!  Copyright Â© 1988-2025 Free Software Foundation, Inc.
  
   Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** Free Documentation License".
*** 56,69 ****
       funds for GNU development.
  
  
! File: gcc.info,  Node: Top,  Next: G++ and GCC
  
  Introduction
  ************
  
  This manual documents how to use the GNU compilers, as well as their
  features and incompatibilities, and how to report bugs.  It corresponds
! to the compilers (GCC) version 15.2.0.  The internals of the GNU
  compilers, including how to port them to new targets and some
  information about how to write front ends for new languages, are
  documented in a separate manual.  *Note Introduction: (gccint)Top.
--- 56,69 ----
       funds for GNU development.
  
  
! File: gcc.info,  Node: Top,  Next: G++ and GCC,  Up: (dir)
  
  Introduction
  ************
  
  This manual documents how to use the GNU compilers, as well as their
  features and incompatibilities, and how to report bugs.  It corresponds
! to the compilers (GCC) version 15.3.0.  The internals of the GNU
  compilers, including how to port them to new targets and some
  information about how to write front ends for new languages, are
  documented in a separate manual.  *Note Introduction: (gccint)Top.
*************** documented in a separate manual.  *Note
*** 72,78 ****
  
  * G++ and GCC::     You can compile C or C++ programs.
  * Standards::       Language standards supported by GCC.
! * Invoking GCC::    Command options supported by 'gcc'.
  * C Implementation:: How GCC implements the ISO C specification.
  * C++ Implementation:: How GCC implements the ISO C++ specification.
  * C Extensions::    GNU extensions to the C language family.
--- 72,78 ----
  
  * G++ and GCC::     You can compile C or C++ programs.
  * Standards::       Language standards supported by GCC.
! * Invoking GCC::    Command options supported by â€˜gccâ€™.
  * C Implementation:: How GCC implements the ISO C specification.
  * C++ Implementation:: How GCC implements the ISO C++ specification.
  * C Extensions::    GNU extensions to the C language family.
*************** documented in a separate manual.  *Note
*** 80,89 ****
  * C++ Extensions::  GNU extensions to the C++ language.
  * Objective-C::     GNU Objective-C runtime features.
  * Compatibility::   Binary Compatibility
! * Gcov::            'gcov'--a test coverage program.
! * Gcov-tool::       'gcov-tool'--an offline gcda profile processing program.
! * Gcov-dump::       'gcov-dump'--an offline gcda and gcno profile dump tool.
! * lto-dump::        'lto-dump'--Tool for dumping LTO
  object files.
  * Trouble::         If you have trouble using GCC.
  * Bugs::            How, why and where to report bugs.
--- 80,89 ----
  * C++ Extensions::  GNU extensions to the C++ language.
  * Objective-C::     GNU Objective-C runtime features.
  * Compatibility::   Binary Compatibility
! * Gcov::            â€˜gcovâ€™--a test coverage program.
! * Gcov-tool::       â€˜gcov-toolâ€™--an offline gcda profile processing program.
! * Gcov-dump::       â€˜gcov-dumpâ€™--an offline gcda and gcno profile dump tool.
! * lto-dump::        â€˜lto-dumpâ€™--Tool for dumping LTO
  object files.
  * Trouble::         If you have trouble using GCC.
  * Bugs::            How, why and where to report bugs.
*************** distribution of compilers for several ma
*** 111,122 ****
  These languages currently include C, C++, Objective-C, Objective-C++,
  Fortran, Ada, D, and Go.
  
!  The abbreviation "GCC" has multiple meanings in common use.  The
  current official meaning is "GNU Compiler Collection", which refers
  generically to the complete suite of tools.  The name historically stood
  for "GNU C Compiler", and this usage is still common when the emphasis
  is on compiling C programs.  Finally, the name is also used when
! speaking of the "language-independent" component of GCC: code shared
  among the compilers for all supported languages.
  
   The language-independent component of GCC includes the majority of the
--- 111,122 ----
  These languages currently include C, C++, Objective-C, Objective-C++,
  Fortran, Ada, D, and Go.
  
!  The abbreviation â€œGCCâ€� has multiple meanings in common use.  The
  current official meaning is "GNU Compiler Collection", which refers
  generically to the complete suite of tools.  The name historically stood
  for "GNU C Compiler", and this usage is still common when the emphasis
  is on compiling C programs.  Finally, the name is also used when
! speaking of the â€œlanguage-independentâ€� component of GCC: code shared
  among the compilers for all supported languages.
  
   The language-independent component of GCC includes the majority of the
*************** Either is correct.
*** 139,145 ****
  have been implemented as "preprocessors" which emit another high level
  language such as C.  None of the compilers included in GCC are
  implemented this way; they all generate machine code directly.  This
! sort of preprocessor should not be confused with the "C preprocessor",
  which is an integral feature of the C, C++, Objective-C and
  Objective-C++ languages.
  
--- 139,145 ----
  have been implemented as "preprocessors" which emit another high level
  language such as C.  None of the compilers included in GCC are
  implemented this way; they all generate machine code directly.  This
! sort of preprocessor should not be confused with the â€œC preprocessorâ€�,
  which is an integral feature of the C, C++, Objective-C and
  Objective-C++ languages.
  
*************** published in 1990.  This standard was ra
*** 162,172 ****
  between these publications, although the sections of the ANSI standard
  were renumbered and became clauses in the ISO standard.  The ANSI
  standard, but not the ISO standard, also came with a Rationale document.
! This standard, in both its forms, is commonly known as "C89", or
! occasionally as "C90", from the dates of ratification.  To select this
! standard in GCC, use one of the options '-ansi', '-std=c90' or
! '-std=iso9899:1990'; to obtain all the diagnostics required by the
! standard, you should also specify '-pedantic' (or '-pedantic-errors' if
  you want them to be errors rather than warnings).  *Note Options
  Controlling C Dialect: C Dialect Options.
  
--- 162,172 ----
  between these publications, although the sections of the ANSI standard
  were renumbered and became clauses in the ISO standard.  The ANSI
  standard, but not the ISO standard, also came with a Rationale document.
! This standard, in both its forms, is commonly known as â€œC89â€�, or
! occasionally as â€œC90â€�, from the dates of ratification.  To select this
! standard in GCC, use one of the options â€˜-ansiâ€™, â€˜-std=c90â€™ or
! â€˜-std=iso9899:1990â€™; to obtain all the diagnostics required by the
! standard, you should also specify â€˜-pedanticâ€™ (or â€˜-pedantic-errorsâ€™ if
  you want them to be errors rather than warnings).  *Note Options
  Controlling C Dialect: C Dialect Options.
  
*************** Corrigenda published in 1994 and 1996.
*** 175,250 ****
  uncorrected version.
  
   An amendment to the 1990 standard was published in 1995.  This
! amendment added digraphs and '__STDC_VERSION__' to the language, but
  otherwise concerned the library.  This amendment is commonly known as
! "AMD1"; the amended standard is sometimes known as "C94" or "C95".  To
! select this standard in GCC, use the option '-std=iso9899:199409' (with,
! as for other standard versions, '-pedantic' to receive all required
  diagnostics).
  
   A new edition of the ISO C standard was published in 1999 as ISO/IEC
! 9899:1999, and is commonly known as "C99".  (While in development,
! drafts of this standard version were referred to as "C9X".) GCC has
  substantially complete support for this standard version; see
  <https://gcc.gnu.org/c99status.html> for details.  To select this
! standard, use '-std=c99' or '-std=iso9899:1999'.
  
   Errors in the 1999 ISO C standard were corrected in three Technical
  Corrigenda published in 2001, 2004 and 2007.  GCC does not support the
  uncorrected version.
  
!  A fourth version of the C standard, known as "C11", was published in
  2011 as ISO/IEC 9899:2011.  (While in development, drafts of this
! standard version were referred to as "C1X".) GCC has substantially
! complete support for this standard, enabled with '-std=c11' or
! '-std=iso9899:2011'.  A version with corrections integrated was prepared
! in 2017 and published in 2018 as ISO/IEC 9899:2018; it is known as "C17"
! and is supported with '-std=c17' or '-std=iso9899:2017'; the corrections
! are also applied with '-std=c11', and the only difference between the
! options is the value of '__STDC_VERSION__'.
  
!  A fifth version of the C standard, known as "C23", was published in
  2024 as ISO/IEC 9899:2024.  (While in development, drafts of this
! standard version were referred to as "C2X".) Support for this is enabled
! with '-std=c23' or '-std=iso9899:2024'.
  
!  A further version of the C standard, known as "C2Y", is under
  development; experimental and incomplete support for this is enabled
! with '-std=c2y'.
  
   By default, GCC provides some extensions to the C language that, on
  rare occasions conflict with the C standard.  *Note Extensions to the C
  Language Family: C Extensions.  Some features that are part of the C99
  standard are accepted as extensions in C90 mode, and some features that
  are part of the C11 standard are accepted as extensions in C90 and C99
! modes.  Use of the '-std' options listed above disables these extensions
  where they conflict with the C standard version selected.  You may also
  select an extended version of the C language explicitly with
! '-std=gnu90' (for C90 with GNU extensions), '-std=gnu99' (for C99 with
! GNU extensions), '-std=gnu11' (for C11 with GNU extensions),
! '-std=gnu17' (for C17 with GNU extensions) or '-std=gnu23' (for C23 with
  GNU extensions).
  
   The default, if no C language dialect options are given, is
! '-std=gnu23'.
  
   The ISO C standard defines (in clause 4) two classes of conforming
! implementation.  A "conforming hosted implementation" supports the whole
! standard including all the library facilities; a "conforming
! freestanding implementation" is only required to provide certain library
! facilities: those in '<float.h>', '<limits.h>', '<stdarg.h>', and
! '<stddef.h>'; since AMD1, also those in '<iso646.h>'; since C99, also
! those in '<stdbool.h>' and '<stdint.h>'; and since C11, also those in
! '<stdalign.h>' and '<stdnoreturn.h>'.  In addition, complex types, added
  in C99, are not required for freestanding implementations.
  
   The standard also defines two environments for programs, a
! "freestanding environment", required of all implementations and which
  may not have library facilities beyond those required of freestanding
  implementations, where the handling of program startup and termination
! are implementation-defined; and a "hosted environment", which is not
  required, in which all the library facilities are provided and startup
! is through a function 'int main (void)' or 'int main (int, char *[])'.
  An OS kernel is an example of a program running in a freestanding
  environment; a program using the facilities of an operating system is an
  example of a program running in a hosted environment.
--- 175,250 ----
  uncorrected version.
  
   An amendment to the 1990 standard was published in 1995.  This
! amendment added digraphs and â€˜__STDC_VERSION__â€™ to the language, but
  otherwise concerned the library.  This amendment is commonly known as
! â€œAMD1â€�; the amended standard is sometimes known as â€œC94â€� or â€œC95â€�.  To
! select this standard in GCC, use the option â€˜-std=iso9899:199409â€™ (with,
! as for other standard versions, â€˜-pedanticâ€™ to receive all required
  diagnostics).
  
   A new edition of the ISO C standard was published in 1999 as ISO/IEC
! 9899:1999, and is commonly known as â€œC99â€�.  (While in development,
! drafts of this standard version were referred to as â€œC9Xâ€�.) GCC has
  substantially complete support for this standard version; see
  <https://gcc.gnu.org/c99status.html> for details.  To select this
! standard, use â€˜-std=c99â€™ or â€˜-std=iso9899:1999â€™.
  
   Errors in the 1999 ISO C standard were corrected in three Technical
  Corrigenda published in 2001, 2004 and 2007.  GCC does not support the
  uncorrected version.
  
!  A fourth version of the C standard, known as â€œC11â€�, was published in
  2011 as ISO/IEC 9899:2011.  (While in development, drafts of this
! standard version were referred to as â€œC1Xâ€�.) GCC has substantially
! complete support for this standard, enabled with â€˜-std=c11â€™ or
! â€˜-std=iso9899:2011â€™.  A version with corrections integrated was prepared
! in 2017 and published in 2018 as ISO/IEC 9899:2018; it is known as â€œC17â€�
! and is supported with â€˜-std=c17â€™ or â€˜-std=iso9899:2017â€™; the corrections
! are also applied with â€˜-std=c11â€™, and the only difference between the
! options is the value of â€˜__STDC_VERSION__â€™.
  
!  A fifth version of the C standard, known as â€œC23â€�, was published in
  2024 as ISO/IEC 9899:2024.  (While in development, drafts of this
! standard version were referred to as â€œC2Xâ€�.) Support for this is enabled
! with â€˜-std=c23â€™ or â€˜-std=iso9899:2024â€™.
  
!  A further version of the C standard, known as â€œC2Yâ€�, is under
  development; experimental and incomplete support for this is enabled
! with â€˜-std=c2yâ€™.
  
   By default, GCC provides some extensions to the C language that, on
  rare occasions conflict with the C standard.  *Note Extensions to the C
  Language Family: C Extensions.  Some features that are part of the C99
  standard are accepted as extensions in C90 mode, and some features that
  are part of the C11 standard are accepted as extensions in C90 and C99
! modes.  Use of the â€˜-stdâ€™ options listed above disables these extensions
  where they conflict with the C standard version selected.  You may also
  select an extended version of the C language explicitly with
! â€˜-std=gnu90â€™ (for C90 with GNU extensions), â€˜-std=gnu99â€™ (for C99 with
! GNU extensions), â€˜-std=gnu11â€™ (for C11 with GNU extensions),
! â€˜-std=gnu17â€™ (for C17 with GNU extensions) or â€˜-std=gnu23â€™ (for C23 with
  GNU extensions).
  
   The default, if no C language dialect options are given, is
! â€˜-std=gnu23â€™.
  
   The ISO C standard defines (in clause 4) two classes of conforming
! implementation.  A â€œconforming hosted implementationâ€� supports the whole
! standard including all the library facilities; a â€œconforming
! freestanding implementationâ€� is only required to provide certain library
! facilities: those in â€˜<float.h>â€™, â€˜<limits.h>â€™, â€˜<stdarg.h>â€™, and
! â€˜<stddef.h>â€™; since AMD1, also those in â€˜<iso646.h>â€™; since C99, also
! those in â€˜<stdbool.h>â€™ and â€˜<stdint.h>â€™; and since C11, also those in
! â€˜<stdalign.h>â€™ and â€˜<stdnoreturn.h>â€™.  In addition, complex types, added
  in C99, are not required for freestanding implementations.
  
   The standard also defines two environments for programs, a
! â€œfreestanding environmentâ€�, required of all implementations and which
  may not have library facilities beyond those required of freestanding
  implementations, where the handling of program startup and termination
! are implementation-defined; and a â€œhosted environmentâ€�, which is not
  required, in which all the library facilities are provided and startup
! is through a function â€˜int main (void)â€™ or â€˜int main (int, char *[])â€™.
  An OS kernel is an example of a program running in a freestanding
  environment; a program using the facilities of an operating system is an
  example of a program running in a hosted environment.
*************** example of a program running in a hosted
*** 252,262 ****
   GCC aims towards being usable as a conforming freestanding
  implementation, or as the compiler for a conforming hosted
  implementation.  By default, it acts as the compiler for a hosted
! implementation, defining '__STDC_HOSTED__' as '1' and presuming that
  when the names of ISO C functions are used, they have the semantics
  defined in the standard.  To make it act as a conforming freestanding
  implementation for a freestanding environment, use the option
! '-ffreestanding'; it then defines '__STDC_HOSTED__' to '0' and does not
  make assumptions about the meanings of function names from the standard
  library, with exceptions noted below.  To build an OS kernel, you may
  well still need to make your own arrangements for linking and startup.
--- 252,262 ----
   GCC aims towards being usable as a conforming freestanding
  implementation, or as the compiler for a conforming hosted
  implementation.  By default, it acts as the compiler for a hosted
! implementation, defining â€˜__STDC_HOSTED__â€™ as â€˜1â€™ and presuming that
  when the names of ISO C functions are used, they have the semantics
  defined in the standard.  To make it act as a conforming freestanding
  implementation for a freestanding environment, use the option
! â€˜-ffreestandingâ€™; it then defines â€˜__STDC_HOSTED__â€™ to â€˜0â€™ and does not
  make assumptions about the meanings of function names from the standard
  library, with exceptions noted below.  To build an OS kernel, you may
  well still need to make your own arrangements for linking and startup.
*************** a hosted environment, you need to find t
*** 269,280 ****
  the GNU C library).  *Note Standard Libraries: Standard Libraries.
  
   Most of the compiler support routines used by GCC are present in
! 'libgcc', but there are a few exceptions.  GCC requires the freestanding
! environment provide 'memcpy', 'memmove', 'memset' and 'memcmp'.
! Contrary to the standards covering 'memcpy' GCC expects the case of an
  exact overlap of source and destination to work and not invoke undefined
! behavior.  Finally, if '__builtin_trap' is used, and the target does not
! implement the 'trap' pattern, then GCC emits a call to 'abort'.
  
   For references to Technical Corrigenda, Rationale documents and
  information concerning the history of C that is available online, see
--- 269,280 ----
  the GNU C library).  *Note Standard Libraries: Standard Libraries.
  
   Most of the compiler support routines used by GCC are present in
! â€˜libgccâ€™, but there are a few exceptions.  GCC requires the freestanding
! environment provide â€˜memcpyâ€™, â€˜memmoveâ€™, â€˜memsetâ€™ and â€˜memcmpâ€™.
! Contrary to the standards covering â€˜memcpyâ€™ GCC expects the case of an
  exact overlap of source and destination to work and not invoke undefined
! behavior.  Finally, if â€˜__builtin_trapâ€™ is used, and the target does not
! implement the â€˜trapâ€™ pattern, then GCC emits a call to â€˜abortâ€™.
  
   For references to Technical Corrigenda, Rationale documents and
  information concerning the history of C that is available online, see
*************** GCC supports the original ISO C++ standa
*** 289,299 ****
   The original ISO C++ standard was published as the ISO standard
  (ISO/IEC 14882:1998) and amended by a Technical Corrigenda published in
  2003 (ISO/IEC 14882:2003).  These standards are referred to as C++98 and
! C++03, respectively.  GCC implements the majority of C++98 ('export' is
  a notable exception) and most of the changes in C++03.  To select this
! standard in GCC, use one of the options '-ansi', '-std=c++98', or
! '-std=c++03'; to obtain all the diagnostics required by the standard,
! you should also specify '-pedantic' (or '-pedantic-errors' if you want
  them to be errors rather than warnings).
  
   A revised ISO C++ standard was published in 2011 as ISO/IEC 14882:2011,
--- 289,299 ----
   The original ISO C++ standard was published as the ISO standard
  (ISO/IEC 14882:1998) and amended by a Technical Corrigenda published in
  2003 (ISO/IEC 14882:2003).  These standards are referred to as C++98 and
! C++03, respectively.  GCC implements the majority of C++98 (â€˜exportâ€™ is
  a notable exception) and most of the changes in C++03.  To select this
! standard in GCC, use one of the options â€˜-ansiâ€™, â€˜-std=c++98â€™, or
! â€˜-std=c++03â€™; to obtain all the diagnostics required by the standard,
! you should also specify â€˜-pedanticâ€™ (or â€˜-pedantic-errorsâ€™ if you want
  them to be errors rather than warnings).
  
   A revised ISO C++ standard was published in 2011 as ISO/IEC 14882:2011,
*************** and is referred to as C++11; before its
*** 301,357 ****
  referred to as C++0x.  C++11 contains several changes to the C++
  language, all of which have been implemented in GCC.  For details see
  <https://gcc.gnu.org/projects/cxx-status.html#cxx11>.  To select this
! standard in GCC, use the option '-std=c++11'.
  
   Another revised ISO C++ standard was published in 2014 as ISO/IEC
  14882:2014, and is referred to as C++14; before its publication it was
  sometimes referred to as C++1y.  C++14 contains several further changes
  to the C++ language, all of which have been implemented in GCC.  For
  details see <https://gcc.gnu.org/projects/cxx-status.html#cxx14>.  To
! select this standard in GCC, use the option '-std=c++14'.
  
   The C++ language was further revised in 2017 and ISO/IEC 14882:2017 was
  published.  This is referred to as C++17, and before publication was
  often referred to as C++1z.  GCC supports all the changes in that
  specification.  For further details see
  <https://gcc.gnu.org/projects/cxx-status.html#cxx17>.  Use the option
! '-std=c++17' to select this variant of C++.
  
   Another revised ISO C++ standard was published in 2020 as ISO/IEC
  14882:2020, and is referred to as C++20; before its publication it was
  sometimes referred to as C++2a.  GCC supports most of the changes in the
  new specification.  For further details see
  <https://gcc.gnu.org/projects/cxx-status.html#cxx20>.  To select this
! standard in GCC, use the option '-std=c++20'.
  
   Yet another revised ISO C++ standard was published in 2024 as ISO/IEC
  14882:2024, and is referred to as C++23; before its publication it was
  sometimes referred to as C++2b.  GCC supports most of the changes in the
  new specification.  For further details see
  <https://gcc.gnu.org/projects/cxx-status.html#cxx23>.  To select this
! standard in GCC, use the option '-std=c++23'.
  
   More information about the C++ standards is available on the ISO C++
  committee's web site at <https://www.open-std.org/jtc1/sc22/wg21/>.
  
   To obtain all the diagnostics required by any of the standard versions
! described above you should specify '-pedantic' or '-pedantic-errors',
  otherwise GCC will allow some non-ISO C++ features as extensions.  *Note
  Warning Options::.
  
   By default, GCC also provides some additional extensions to the C++
  language that on rare occasions conflict with the C++ standard.  *Note
! Options Controlling C++ Dialect: C++ Dialect Options.  Use of the '-std'
  options listed above disables these extensions where they they conflict
  with the C++ standard version selected.  You may also select an extended
! version of the C++ language explicitly with '-std=gnu++98' (for C++98
! with GNU extensions), or '-std=gnu++11' (for C++11 with GNU extensions),
! or '-std=gnu++14' (for C++14 with GNU extensions), or '-std=gnu++17'
! (for C++17 with GNU extensions), or '-std=gnu++20' (for C++20 with GNU
! extensions), or '-std=gnu++23' (for C++23 with GNU extensions).
  
   The default, if no C++ language dialect options are given, is
! '-std=gnu++17'.
  
  2.3 Objective-C and Objective-C++ Languages
  ===========================================
--- 301,357 ----
  referred to as C++0x.  C++11 contains several changes to the C++
  language, all of which have been implemented in GCC.  For details see
  <https://gcc.gnu.org/projects/cxx-status.html#cxx11>.  To select this
! standard in GCC, use the option â€˜-std=c++11â€™.
  
   Another revised ISO C++ standard was published in 2014 as ISO/IEC
  14882:2014, and is referred to as C++14; before its publication it was
  sometimes referred to as C++1y.  C++14 contains several further changes
  to the C++ language, all of which have been implemented in GCC.  For
  details see <https://gcc.gnu.org/projects/cxx-status.html#cxx14>.  To
! select this standard in GCC, use the option â€˜-std=c++14â€™.
  
   The C++ language was further revised in 2017 and ISO/IEC 14882:2017 was
  published.  This is referred to as C++17, and before publication was
  often referred to as C++1z.  GCC supports all the changes in that
  specification.  For further details see
  <https://gcc.gnu.org/projects/cxx-status.html#cxx17>.  Use the option
! â€˜-std=c++17â€™ to select this variant of C++.
  
   Another revised ISO C++ standard was published in 2020 as ISO/IEC
  14882:2020, and is referred to as C++20; before its publication it was
  sometimes referred to as C++2a.  GCC supports most of the changes in the
  new specification.  For further details see
  <https://gcc.gnu.org/projects/cxx-status.html#cxx20>.  To select this
! standard in GCC, use the option â€˜-std=c++20â€™.
  
   Yet another revised ISO C++ standard was published in 2024 as ISO/IEC
  14882:2024, and is referred to as C++23; before its publication it was
  sometimes referred to as C++2b.  GCC supports most of the changes in the
  new specification.  For further details see
  <https://gcc.gnu.org/projects/cxx-status.html#cxx23>.  To select this
! standard in GCC, use the option â€˜-std=c++23â€™.
  
   More information about the C++ standards is available on the ISO C++
  committee's web site at <https://www.open-std.org/jtc1/sc22/wg21/>.
  
   To obtain all the diagnostics required by any of the standard versions
! described above you should specify â€˜-pedanticâ€™ or â€˜-pedantic-errorsâ€™,
  otherwise GCC will allow some non-ISO C++ features as extensions.  *Note
  Warning Options::.
  
   By default, GCC also provides some additional extensions to the C++
  language that on rare occasions conflict with the C++ standard.  *Note
! Options Controlling C++ Dialect: C++ Dialect Options.  Use of the â€˜-stdâ€™
  options listed above disables these extensions where they they conflict
  with the C++ standard version selected.  You may also select an extended
! version of the C++ language explicitly with â€˜-std=gnu++98â€™ (for C++98
! with GNU extensions), or â€˜-std=gnu++11â€™ (for C++11 with GNU extensions),
! or â€˜-std=gnu++14â€™ (for C++14 with GNU extensions), or â€˜-std=gnu++17â€™
! (for C++17 with GNU extensions), or â€˜-std=gnu++20â€™ (for C++20 with GNU
! extensions), or â€˜-std=gnu++23â€™ (for C++23 with GNU extensions).
  
   The default, if no C++ language dialect options are given, is
! â€˜-std=gnu++17â€™.
  
  2.3 Objective-C and Objective-C++ Languages
  ===========================================
*************** Objective-C are also available in Object
*** 367,373 ****
   GCC by default uses the GNU Objective-C runtime library, which is part
  of GCC and is not the same as the Apple/NeXT Objective-C runtime library
  used on Apple systems.  There are a number of differences documented in
! this manual.  The options '-fgnu-runtime' and '-fnext-runtime' allow you
  to switch between producing output that works with the GNU Objective-C
  runtime library and output that works with the Apple/NeXT Objective-C
  runtime library.
--- 367,373 ----
   GCC by default uses the GNU Objective-C runtime library, which is part
  of GCC and is not the same as the Apple/NeXT Objective-C runtime library
  used on Apple systems.  There are a number of differences documented in
! this manual.  The options â€˜-fgnu-runtimeâ€™ and â€˜-fnext-runtimeâ€™ allow you
  to switch between producing output that works with the GNU Objective-C
  runtime library and output that works with the Apple/NeXT Objective-C
  runtime library.
*************** The authoritative manual on traditional
*** 379,404 ****
  the original NeXTstep document.
  
   The Objective-C exception and synchronization syntax (that is, the
! keywords '@try', '@throw', '@catch', '@finally' and '@synchronized') is
! supported by GCC and is enabled with the option '-fobjc-exceptions'.
  The syntax is briefly documented in this manual and in the Objective-C
  2.0 manuals from Apple.
  
   The Objective-C 2.0 language extensions and features are automatically
! enabled; they include properties (via the '@property', '@synthesize' and
! '@dynamic keywords'), fast enumeration (not available in Objective-C++),
! attributes for methods (such as 'deprecated', 'noreturn', 'sentinel',
! 'format'), the 'unused' attribute for method arguments, the '@package'
! keyword for instance variables and the '@optional' and '@required'
  keywords in protocols.  You can disable all these Objective-C 2.0
! language extensions with the option '-fobjc-std=objc1', which causes the
  compiler to recognize the same Objective-C language syntax recognized by
  GCC 4.0, and to produce an error if one of the new features is used.
  
   GCC has currently no support for non-fragile instance variables.
  
   The authoritative manual on Objective-C 2.0 is available from Apple:
!    * 
       <https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html>
  
   For more information concerning the history of Objective-C that is
--- 379,404 ----
  the original NeXTstep document.
  
   The Objective-C exception and synchronization syntax (that is, the
! keywords â€˜@tryâ€™, â€˜@throwâ€™, â€˜@catchâ€™, â€˜@finallyâ€™ and â€˜@synchronizedâ€™) is
! supported by GCC and is enabled with the option â€˜-fobjc-exceptionsâ€™.
  The syntax is briefly documented in this manual and in the Objective-C
  2.0 manuals from Apple.
  
   The Objective-C 2.0 language extensions and features are automatically
! enabled; they include properties (via the â€˜@propertyâ€™, â€˜@synthesizeâ€™ and
! â€˜@dynamic keywordsâ€™), fast enumeration (not available in Objective-C++),
! attributes for methods (such as â€˜deprecatedâ€™, â€˜noreturnâ€™, â€˜sentinelâ€™,
! â€˜formatâ€™), the â€˜unusedâ€™ attribute for method arguments, the â€˜@packageâ€™
! keyword for instance variables and the â€˜@optionalâ€™ and â€˜@requiredâ€™
  keywords in protocols.  You can disable all these Objective-C 2.0
! language extensions with the option â€˜-fobjc-std=objc1â€™, which causes the
  compiler to recognize the same Objective-C language syntax recognized by
  GCC 4.0, and to produce an error if one of the new features is used.
  
   GCC has currently no support for non-fragile instance variables.
  
   The authoritative manual on Objective-C 2.0 is available from Apple:
!    â€¢ 
       <https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html>
  
   For more information concerning the history of Objective-C that is
*************** available online, see <https://gcc.gnu.o
*** 409,415 ****
  
  As of the GCC 15 release, GCC supports the ISO COBOL language standard
  (ISO/IEC 1989:2023).  It includes some support for compatibility with
! other COBOL compilers via the '-dialect' option.
  
  2.5 Go Language
  ===============
--- 409,415 ----
  
  As of the GCC 15 release, GCC supports the ISO COBOL language standard
  (ISO/IEC 1989:2023).  It includes some support for compatibility with
! other COBOL compilers via the â€˜-dialectâ€™ option.
  
  2.5 Go Language
  ===============
*************** File: gcc.info,  Node: Invoking GCC,  Ne
*** 453,459 ****
  
  When you invoke GCC, it normally does preprocessing, compilation,
  assembly and linking.  The "overall options" allow you to stop this
! process at an intermediate stage.  For example, the '-c' option says not
  to run the linker.  Then the output consists of object files output by
  the assembler.  *Note Options Controlling the Kind of Output: Overall
  Options.
--- 453,459 ----
  
  When you invoke GCC, it normally does preprocessing, compilation,
  assembly and linking.  The "overall options" allow you to stop this
! process at an intermediate stage.  For example, the â€˜-câ€™ option says not
  to run the linker.  Then the output consists of object files output by
  the assembler.  *Note Options Controlling the Kind of Output: Overall
  Options.
*************** for C programs; when an option is only u
*** 469,507 ****
  for a particular option does not mention a source language, you can use
  that option with all supported languages.
  
!  The usual way to run GCC is to run the executable called 'gcc', or
! 'MACHINE-gcc' when cross-compiling, or 'MACHINE-gcc-VERSION' to run a
  specific version of GCC. When you compile C++ programs, you should
! invoke GCC as 'g++' instead.  *Note Compiling C++ Programs: Invoking
! G++, for information about the differences in behavior between 'gcc' and
! 'g++' when compiling C++ programs.
  
!  The 'gcc' program accepts options and file names as operands.  Many
  options have multi-letter names; therefore multiple single-letter
! options may _not_ be grouped: '-dv' is very different from '-d -v'.
  
   You can mix options and other arguments.  For the most part, the order
  you use doesn't matter.  Order does matter when you use several options
! of the same kind; for example, if you specify '-L' more than once, the
  directories are searched in the order specified.  Also, the placement of
! the '-l' option is significant.
  
!  Many options have long names starting with '-f' or with '-W'--for
! example, '-fmove-loop-invariants', '-Wformat' and so on.  Most of these
! have both positive and negative forms; the negative form of '-ffoo' is
! '-fno-foo'.  This manual documents only one of these two forms,
  whichever one is not the default.
  
   Some options take one or more arguments typically separated either by a
! space or by the equals sign ('=') from the option name.  Unless
  documented otherwise, an argument can be either numeric or a string.
  Numeric arguments must typically be small unsigned decimal or
! hexadecimal integers.  Hexadecimal arguments must begin with the '0x'
  prefix.  Arguments to options that specify a size threshold of some sort
  may be arbitrarily large decimal or hexadecimal integers followed by a
! byte size suffix designating a multiple of bytes such as 'kB' and 'KiB'
! for kilobyte and kibibyte, respectively, 'MB' and 'MiB' for megabyte and
! mebibyte, 'GB' and 'GiB' for gigabyte and gigibyte, and so on.  Such
  arguments are designated by BYTE-SIZE in the following text.  Refer to
  the NIST, IEC, and other relevant national and international standards
  for the full listing and explanation of the binary and decimal byte size
--- 469,507 ----
  for a particular option does not mention a source language, you can use
  that option with all supported languages.
  
!  The usual way to run GCC is to run the executable called â€˜gccâ€™, or
! â€˜MACHINE-gccâ€™ when cross-compiling, or â€˜MACHINE-gcc-VERSIONâ€™ to run a
  specific version of GCC. When you compile C++ programs, you should
! invoke GCC as â€˜g++â€™ instead.  *Note Compiling C++ Programs: Invoking
! G++, for information about the differences in behavior between â€˜gccâ€™ and
! â€˜g++â€™ when compiling C++ programs.
  
!  The â€˜gccâ€™ program accepts options and file names as operands.  Many
  options have multi-letter names; therefore multiple single-letter
! options may _not_ be grouped: â€˜-dvâ€™ is very different from â€˜-d -vâ€™.
  
   You can mix options and other arguments.  For the most part, the order
  you use doesn't matter.  Order does matter when you use several options
! of the same kind; for example, if you specify â€˜-Lâ€™ more than once, the
  directories are searched in the order specified.  Also, the placement of
! the â€˜-lâ€™ option is significant.
  
!  Many options have long names starting with â€˜-fâ€™ or with â€˜-Wâ€™--for
! example, â€˜-fmove-loop-invariantsâ€™, â€˜-Wformatâ€™ and so on.  Most of these
! have both positive and negative forms; the negative form of â€˜-ffooâ€™ is
! â€˜-fno-fooâ€™.  This manual documents only one of these two forms,
  whichever one is not the default.
  
   Some options take one or more arguments typically separated either by a
! space or by the equals sign (â€˜=â€™) from the option name.  Unless
  documented otherwise, an argument can be either numeric or a string.
  Numeric arguments must typically be small unsigned decimal or
! hexadecimal integers.  Hexadecimal arguments must begin with the â€˜0xâ€™
  prefix.  Arguments to options that specify a size threshold of some sort
  may be arbitrarily large decimal or hexadecimal integers followed by a
! byte size suffix designating a multiple of bytes such as â€˜kBâ€™ and â€˜KiBâ€™
! for kilobyte and kibibyte, respectively, â€˜MBâ€™ and â€˜MiBâ€™ for megabyte and
! mebibyte, â€˜GBâ€™ and â€˜GiBâ€™ for gigabyte and gigibyte, and so on.  Such
  arguments are designated by BYTE-SIZE in the following text.  Refer to
  the NIST, IEC, and other relevant national and international standards
  for the full listing and explanation of the binary and decimal byte size
*************** file.
*** 1925,2130 ****
   For any given input file, the file name suffix determines what kind of
  compilation is done:
  
! 'FILE.c'
       C source code that must be preprocessed.
  
! 'FILE.i'
       C source code that should not be preprocessed.
  
! 'FILE.ii'
       C++ source code that should not be preprocessed.
  
! 'FILE.m'
       Objective-C source code.  Note that you must link with the
!      'libobjc' library to make an Objective-C program work.
  
! 'FILE.mi'
       Objective-C source code that should not be preprocessed.
  
! 'FILE.mm'
! 'FILE.M'
       Objective-C++ source code.  Note that you must link with the
!      'libobjc' library to make an Objective-C++ program work.  Note that
!      '.M' refers to a literal capital M.
  
! 'FILE.mii'
       Objective-C++ source code that should not be preprocessed.
  
! 'FILE.h'
       C, C++, Objective-C or Objective-C++ header file to be turned into
       a precompiled header (default), or C, C++ header file to be turned
!      into an Ada spec (via the '-fdump-ada-spec' switch).
  
! 'FILE.cc'
! 'FILE.cp'
! 'FILE.cxx'
! 'FILE.cpp'
! 'FILE.CPP'
! 'FILE.c++'
! 'FILE.C'
!      C++ source code that must be preprocessed.  Note that in '.cxx',
!      the last two letters must both be literally 'x'.  Likewise, '.C'
       refers to a literal capital C.
  
! 'FILE.mm'
! 'FILE.M'
       Objective-C++ source code that must be preprocessed.
  
! 'FILE.mii'
       Objective-C++ source code that should not be preprocessed.
  
! 'FILE.hh'
! 'FILE.H'
! 'FILE.hp'
! 'FILE.hxx'
! 'FILE.hpp'
! 'FILE.HPP'
! 'FILE.h++'
! 'FILE.tcc'
       C++ header file to be turned into a precompiled header or Ada spec.
  
! 'FILE.f'
! 'FILE.for'
! 'FILE.ftn'
! 'FILE.fi'
       Fixed form Fortran source code that should not be preprocessed.
  
! 'FILE.F'
! 'FILE.FOR'
! 'FILE.fpp'
! 'FILE.FPP'
! 'FILE.FTN'
       Fixed form Fortran source code that must be preprocessed (with the
       traditional preprocessor).
  
! 'FILE.f90'
! 'FILE.f95'
! 'FILE.f03'
! 'FILE.f08'
! 'FILE.fii'
       Free form Fortran source code that should not be preprocessed.
  
! 'FILE.F90'
! 'FILE.F95'
! 'FILE.F03'
! 'FILE.F08'
       Free form Fortran source code that must be preprocessed (with the
       traditional preprocessor).
  
! 'FILE.cob'
! 'FILE.COB'
! 'FILE.cbl'
! 'FILE.CBL'
       COBOL source code.
  
! 'FILE.go'
       Go source code.
  
! 'FILE.d'
       D source code.
  
! 'FILE.di'
       D interface file.
  
! 'FILE.dd'
       D documentation code (Ddoc).
  
! 'FILE.ads'
       Ada source code file that contains a library unit declaration (a
       declaration of a package, subprogram, or generic, or a generic
       instantiation), or a library unit renaming declaration (a package,
       generic, or subprogram renaming declaration).  Such files are also
!      called "specs".
  
! 'FILE.adb'
       Ada source code file containing a library unit body (a subprogram
!      or package body).  Such files are also called "bodies".
  
! 'FILE.s'
       Assembler code.
  
! 'FILE.S'
! 'FILE.sx'
       Assembler code that must be preprocessed.
  
! 'OTHER'
       An object file to be fed straight into linking.  Any file name with
       no recognized suffix is treated this way.
  
!  You can specify the input language explicitly with the '-x' option:
  
! '-x LANGUAGE'
       Specify explicitly the LANGUAGE for the following input files
       (rather than letting the compiler choose a default based on the
       file name suffix).  This option applies to all following input
!      files until the next '-x' option.  Possible values for LANGUAGE
       are:
            c  c-header  cpp-output
            c++  c++-header  c++-system-header c++-user-header c++-cpp-output
!           objective-c  objective-c-header  objective-c-cpp-output
!           objective-c++ objective-c++-header objective-c++-cpp-output
            assembler  assembler-with-cpp
!           ada
            cobol
            d
!           f77  f77-cpp-input f95  f95-cpp-input
            go
  
!      Note that '-x' does not imply a particular language standard.  For
!      example '-x f77' may also require '-std=legacy' for some older
       source codes.
  
! '-x none'
       Turn off any specification of a language, so that subsequent files
!      are handled according to their file name suffixes (as if '-x' has
       not been used at all).
  
!  If you only want some of the stages of compilation, you can use '-x'
! (or filename suffixes) to tell 'gcc' where to start, and one of the
! options '-c', '-S', or '-E' to say where 'gcc' is to stop.  Note that
! some combinations (for example, '-x cpp-output -E') instruct 'gcc' to do
  nothing at all.
  
! '-c'
       Compile or assemble the source files, but do not link.  The linking
       stage simply is not done.  The ultimate output is in the form of an
       object file for each source file.
  
       By default, the object file name for a source file is made by
!      replacing the suffix '.c', '.i', '.s', etc., with '.o'.
  
       Unrecognized input files, not requiring compilation or assembly,
       are ignored.
  
! '-S'
       Stop after the stage of compilation proper; do not assemble.  The
       output is in the form of an assembler code file for each
       non-assembler input file specified.
  
       By default, the assembler file name for a source file is made by
!      replacing the suffix '.c', '.i', etc., with '.s'.
  
       Input files that don't require compilation are ignored.
  
! '-E'
       Stop after the preprocessing stage; do not run the compiler proper.
       The output is in the form of preprocessed source code, which is
       sent to the standard output.
  
       Input files that don't require preprocessing are ignored.
  
! '-o FILE'
       Place the primary output in file FILE.  This applies to whatever
       sort of output is being produced, whether it be an executable file,
       an object file, an assembler file or preprocessed C code.
  
!      If '-o' is not specified, the default is to put an executable file
!      in 'a.out', the object file for 'SOURCE.SUFFIX' in 'SOURCE.o', its
!      assembler file in 'SOURCE.s', a precompiled header file in
!      'SOURCE.SUFFIX.gch', and all preprocessed C source on standard
       output.
  
!      Though '-o' names only the primary output, it also affects the
       naming of auxiliary and dump outputs.  See the examples below.
       Unless overridden, both auxiliary outputs and dump outputs are
       placed in the same directory as the primary output.  In auxiliary
--- 1925,2134 ----
   For any given input file, the file name suffix determines what kind of
  compilation is done:
  
! â€˜FILE.câ€™
       C source code that must be preprocessed.
  
! â€˜FILE.iâ€™
       C source code that should not be preprocessed.
  
! â€˜FILE.iiâ€™
       C++ source code that should not be preprocessed.
  
! â€˜FILE.mâ€™
       Objective-C source code.  Note that you must link with the
!      â€˜libobjcâ€™ library to make an Objective-C program work.
  
! â€˜FILE.miâ€™
       Objective-C source code that should not be preprocessed.
  
! â€˜FILE.mmâ€™
! â€˜FILE.Mâ€™
       Objective-C++ source code.  Note that you must link with the
!      â€˜libobjcâ€™ library to make an Objective-C++ program work.  Note that
!      â€˜.Mâ€™ refers to a literal capital M.
  
! â€˜FILE.miiâ€™
       Objective-C++ source code that should not be preprocessed.
  
! â€˜FILE.hâ€™
       C, C++, Objective-C or Objective-C++ header file to be turned into
       a precompiled header (default), or C, C++ header file to be turned
!      into an Ada spec (via the â€˜-fdump-ada-specâ€™ switch).
  
! â€˜FILE.ccâ€™
! â€˜FILE.cpâ€™
! â€˜FILE.cxxâ€™
! â€˜FILE.cppâ€™
! â€˜FILE.CPPâ€™
! â€˜FILE.c++â€™
! â€˜FILE.Câ€™
!      C++ source code that must be preprocessed.  Note that in â€˜.cxxâ€™,
!      the last two letters must both be literally â€˜xâ€™.  Likewise, â€˜.Câ€™
       refers to a literal capital C.
  
! â€˜FILE.mmâ€™
! â€˜FILE.Mâ€™
       Objective-C++ source code that must be preprocessed.
  
! â€˜FILE.miiâ€™
       Objective-C++ source code that should not be preprocessed.
  
! â€˜FILE.hhâ€™
! â€˜FILE.Hâ€™
! â€˜FILE.hpâ€™
! â€˜FILE.hxxâ€™
! â€˜FILE.hppâ€™
! â€˜FILE.HPPâ€™
! â€˜FILE.h++â€™
! â€˜FILE.tccâ€™
       C++ header file to be turned into a precompiled header or Ada spec.
  
! â€˜FILE.fâ€™
! â€˜FILE.forâ€™
! â€˜FILE.ftnâ€™
! â€˜FILE.fiâ€™
       Fixed form Fortran source code that should not be preprocessed.
  
! â€˜FILE.Fâ€™
! â€˜FILE.FORâ€™
! â€˜FILE.fppâ€™
! â€˜FILE.FPPâ€™
! â€˜FILE.FTNâ€™
       Fixed form Fortran source code that must be preprocessed (with the
       traditional preprocessor).
  
! â€˜FILE.f90â€™
! â€˜FILE.f95â€™
! â€˜FILE.f03â€™
! â€˜FILE.f08â€™
! â€˜FILE.fiiâ€™
       Free form Fortran source code that should not be preprocessed.
  
! â€˜FILE.F90â€™
! â€˜FILE.F95â€™
! â€˜FILE.F03â€™
! â€˜FILE.F08â€™
       Free form Fortran source code that must be preprocessed (with the
       traditional preprocessor).
  
! â€˜FILE.cobâ€™
! â€˜FILE.COBâ€™
! â€˜FILE.cblâ€™
! â€˜FILE.CBLâ€™
       COBOL source code.
  
! â€˜FILE.goâ€™
       Go source code.
  
! â€˜FILE.dâ€™
       D source code.
  
! â€˜FILE.diâ€™
       D interface file.
  
! â€˜FILE.ddâ€™
       D documentation code (Ddoc).
  
! â€˜FILE.adsâ€™
       Ada source code file that contains a library unit declaration (a
       declaration of a package, subprogram, or generic, or a generic
       instantiation), or a library unit renaming declaration (a package,
       generic, or subprogram renaming declaration).  Such files are also
!      called â€œspecsâ€�.
  
! â€˜FILE.adbâ€™
       Ada source code file containing a library unit body (a subprogram
!      or package body).  Such files are also called â€œbodiesâ€�.
  
! â€˜FILE.sâ€™
       Assembler code.
  
! â€˜FILE.Sâ€™
! â€˜FILE.sxâ€™
       Assembler code that must be preprocessed.
  
! â€˜OTHERâ€™
       An object file to be fed straight into linking.  Any file name with
       no recognized suffix is treated this way.
  
!  You can specify the input language explicitly with the â€˜-xâ€™ option:
  
! â€˜-x LANGUAGEâ€™
       Specify explicitly the LANGUAGE for the following input files
       (rather than letting the compiler choose a default based on the
       file name suffix).  This option applies to all following input
!      files until the next â€˜-xâ€™ option.  Possible values for LANGUAGE
       are:
            c  c-header  cpp-output
            c++  c++-header  c++-system-header c++-user-header c++-cpp-output
!           objective-c  objective-c-header  objective-c-cpp-output  objc-cpp-output
!           objective-c++  objective-c++-header  objective-c++-cpp-output
!           objc++-cpp-output
            assembler  assembler-with-cpp
!           ada  adascil  adawhy
            cobol
            d
!           f77  f77-cpp-input  f95  f95-cpp-input
            go
+           modula-2  modula-2-cpp-output
+           rust
+           lto
  
!      Note that â€˜-xâ€™ does not imply a particular language standard.  For
!      example â€˜-x f77â€™ may also require â€˜-std=legacyâ€™ for some older
       source codes.
  
! â€˜-x noneâ€™
       Turn off any specification of a language, so that subsequent files
!      are handled according to their file name suffixes (as if â€˜-xâ€™ has
       not been used at all).
  
!  If you only want some of the stages of compilation, you can use â€˜-xâ€™
! (or filename suffixes) to tell â€˜gccâ€™ where to start, and one of the
! options â€˜-câ€™, â€˜-Sâ€™, or â€˜-Eâ€™ to say where â€˜gccâ€™ is to stop.  Note that
! some combinations (for example, â€˜-x cpp-output -Eâ€™) instruct â€˜gccâ€™ to do
  nothing at all.
  
! â€˜-câ€™
       Compile or assemble the source files, but do not link.  The linking
       stage simply is not done.  The ultimate output is in the form of an
       object file for each source file.
  
       By default, the object file name for a source file is made by
!      replacing the suffix â€˜.câ€™, â€˜.iâ€™, â€˜.sâ€™, etc., with â€˜.oâ€™.
  
       Unrecognized input files, not requiring compilation or assembly,
       are ignored.
  
! â€˜-Sâ€™
       Stop after the stage of compilation proper; do not assemble.  The
       output is in the form of an assembler code file for each
       non-assembler input file specified.
  
       By default, the assembler file name for a source file is made by
!      replacing the suffix â€˜.câ€™, â€˜.iâ€™, etc., with â€˜.sâ€™.
  
       Input files that don't require compilation are ignored.
  
! â€˜-Eâ€™
       Stop after the preprocessing stage; do not run the compiler proper.
       The output is in the form of preprocessed source code, which is
       sent to the standard output.
  
       Input files that don't require preprocessing are ignored.
  
! â€˜-o FILEâ€™
       Place the primary output in file FILE.  This applies to whatever
       sort of output is being produced, whether it be an executable file,
       an object file, an assembler file or preprocessed C code.
  
!      If â€˜-oâ€™ is not specified, the default is to put an executable file
!      in â€˜a.outâ€™, the object file for â€˜SOURCE.SUFFIXâ€™ in â€˜SOURCE.oâ€™, its
!      assembler file in â€˜SOURCE.sâ€™, a precompiled header file in
!      â€˜SOURCE.SUFFIX.gchâ€™, and all preprocessed C source on standard
       output.
  
!      Though â€˜-oâ€™ names only the primary output, it also affects the
       naming of auxiliary and dump outputs.  See the examples below.
       Unless overridden, both auxiliary outputs and dump outputs are
       placed in the same directory as the primary output.  In auxiliary
*************** nothing at all.
*** 2140,2178 ****
  
            gcc -c foo.c ...
  
!      will use 'foo.o' as the primary output, and place aux outputs and
!      dumps next to it, e.g., aux file 'foo.dwo' for '-gsplit-dwarf', and
!      dump file 'foo.c.???r.final' for '-fdump-rtl-final'.
  
       If a non-linker output file is explicitly specified, aux and dump
       files by default take the same base name:
  
            gcc -c foo.c -o dir/foobar.o ...
  
!      will name aux outputs 'dir/foobar.*' and dump outputs
!      'dir/foobar.c.*'.
  
       A linker output will instead prefix aux and dump outputs:
  
            gcc foo.c bar.c -o dir/foobar ...
  
!      will generally name aux outputs 'dir/foobar-foo.*' and
!      'dir/foobar-bar.*', and dump outputs 'dir/foobar-foo.c.*' and
!      'dir/foobar-bar.c.*'.
  
       The one exception to the above is when the executable shares the
       base name with the single input:
  
            gcc foo.c -o dir/foo ...
  
!      in which case aux outputs are named 'dir/foo.*' and dump outputs
!      named 'dir/foo.c.*'.
  
       The location and the names of auxiliary and dump outputs can be
!      adjusted by the options '-dumpbase', '-dumpbase-ext', '-dumpdir',
!      '-save-temps=cwd', and '-save-temps=obj'.
  
! '-dumpbase DUMPBASE'
       This option sets the base name for auxiliary and dump output files.
       It does not affect the name of the primary output file.
       Intermediate outputs, when preserved, are not regarded as primary
--- 2144,2182 ----
  
            gcc -c foo.c ...
  
!      will use â€˜foo.oâ€™ as the primary output, and place aux outputs and
!      dumps next to it, e.g., aux file â€˜foo.dwoâ€™ for â€˜-gsplit-dwarfâ€™, and
!      dump file â€˜foo.c.???r.finalâ€™ for â€˜-fdump-rtl-finalâ€™.
  
       If a non-linker output file is explicitly specified, aux and dump
       files by default take the same base name:
  
            gcc -c foo.c -o dir/foobar.o ...
  
!      will name aux outputs â€˜dir/foobar.*â€™ and dump outputs
!      â€˜dir/foobar.c.*â€™.
  
       A linker output will instead prefix aux and dump outputs:
  
            gcc foo.c bar.c -o dir/foobar ...
  
!      will generally name aux outputs â€˜dir/foobar-foo.*â€™ and
!      â€˜dir/foobar-bar.*â€™, and dump outputs â€˜dir/foobar-foo.c.*â€™ and
!      â€˜dir/foobar-bar.c.*â€™.
  
       The one exception to the above is when the executable shares the
       base name with the single input:
  
            gcc foo.c -o dir/foo ...
  
!      in which case aux outputs are named â€˜dir/foo.*â€™ and dump outputs
!      named â€˜dir/foo.c.*â€™.
  
       The location and the names of auxiliary and dump outputs can be
!      adjusted by the options â€˜-dumpbaseâ€™, â€˜-dumpbase-extâ€™, â€˜-dumpdirâ€™,
!      â€˜-save-temps=cwdâ€™, and â€˜-save-temps=objâ€™.
  
! â€˜-dumpbase DUMPBASEâ€™
       This option sets the base name for auxiliary and dump output files.
       It does not affect the name of the primary output file.
       Intermediate outputs, when preserved, are not regarded as primary
*************** nothing at all.
*** 2180,2229 ****
  
            gcc -save-temps -S foo.c
  
!      saves the (no longer) temporary preprocessed file in 'foo.i', and
!      then compiles to the (implied) output file 'foo.s', whereas:
  
            gcc -save-temps -dumpbase save-foo -c foo.c
  
!      preprocesses to in 'save-foo.i', compiles to 'save-foo.s' (now an
       intermediate, thus auxiliary output), and then assembles to the
!      (implied) output file 'foo.o'.
  
       Absent this option, dump and aux files take their names from the
       input file, or from the (non-linker) output file, if one is
       explicitly specified: dump output files (e.g.  those requested by
!      '-fdump-*' options) with the input name suffix, and aux output
       files (those requested by other non-dump options, e.g.
!      '-save-temps', '-gsplit-dwarf', '-fcallgraph-info') without it.
  
       Similar suffix differentiation of dump and aux outputs can be
!      attained for explicitly-given '-dumpbase basename.suf' by also
!      specifying '-dumpbase-ext .suf'.
  
       If DUMPBASE is explicitly specified with any directory component,
!      any DUMPPFX specification (e.g.  '-dumpdir' or '-save-temps=*') is
       ignored, and instead of appending to it, DUMPBASE fully overrides
       it:
  
            gcc foo.c -c -o dir/foo.o -dumpbase alt/foo \
              -dumpdir pfx- -save-temps=cwd ...
  
!      creates auxiliary and dump outputs named 'alt/foo.*', disregarding
!      'dir/' in '-o', the './' prefix implied by '-save-temps=cwd', and
!      'pfx-' in '-dumpdir'.
  
!      When '-dumpbase' is specified in a command that compiles multiple
       inputs, or that compiles and then links, it may be combined with
!      DUMPPFX, as specified under '-dumpdir'.  Then, each input file is
       compiled using the combined DUMPPFX, and default values for
       DUMPBASE and AUXDROPSUF are computed for each input file:
  
            gcc foo.c bar.c -c -dumpbase main ...
  
!      creates 'foo.o' and 'bar.o' as primary outputs, and avoids
       overwriting the auxiliary and dump outputs by using the DUMPBASE as
!      a prefix, creating auxiliary and dump outputs named 'main-foo.*'
!      and 'main-bar.*'.
  
       An empty string specified as DUMPBASE avoids the influence of the
       output basename in the naming of auxiliary and dump outputs during
--- 2184,2233 ----
  
            gcc -save-temps -S foo.c
  
!      saves the (no longer) temporary preprocessed file in â€˜foo.iâ€™, and
!      then compiles to the (implied) output file â€˜foo.sâ€™, whereas:
  
            gcc -save-temps -dumpbase save-foo -c foo.c
  
!      preprocesses to in â€˜save-foo.iâ€™, compiles to â€˜save-foo.sâ€™ (now an
       intermediate, thus auxiliary output), and then assembles to the
!      (implied) output file â€˜foo.oâ€™.
  
       Absent this option, dump and aux files take their names from the
       input file, or from the (non-linker) output file, if one is
       explicitly specified: dump output files (e.g.  those requested by
!      â€˜-fdump-*â€™ options) with the input name suffix, and aux output
       files (those requested by other non-dump options, e.g.
!      â€˜-save-tempsâ€™, â€˜-gsplit-dwarfâ€™, â€˜-fcallgraph-infoâ€™) without it.
  
       Similar suffix differentiation of dump and aux outputs can be
!      attained for explicitly-given â€˜-dumpbase basename.sufâ€™ by also
!      specifying â€˜-dumpbase-ext .sufâ€™.
  
       If DUMPBASE is explicitly specified with any directory component,
!      any DUMPPFX specification (e.g.  â€˜-dumpdirâ€™ or â€˜-save-temps=*â€™) is
       ignored, and instead of appending to it, DUMPBASE fully overrides
       it:
  
            gcc foo.c -c -o dir/foo.o -dumpbase alt/foo \
              -dumpdir pfx- -save-temps=cwd ...
  
!      creates auxiliary and dump outputs named â€˜alt/foo.*â€™, disregarding
!      â€˜dir/â€™ in â€˜-oâ€™, the â€˜./â€™ prefix implied by â€˜-save-temps=cwdâ€™, and
!      â€˜pfx-â€™ in â€˜-dumpdirâ€™.
  
!      When â€˜-dumpbaseâ€™ is specified in a command that compiles multiple
       inputs, or that compiles and then links, it may be combined with
!      DUMPPFX, as specified under â€˜-dumpdirâ€™.  Then, each input file is
       compiled using the combined DUMPPFX, and default values for
       DUMPBASE and AUXDROPSUF are computed for each input file:
  
            gcc foo.c bar.c -c -dumpbase main ...
  
!      creates â€˜foo.oâ€™ and â€˜bar.oâ€™ as primary outputs, and avoids
       overwriting the auxiliary and dump outputs by using the DUMPBASE as
!      a prefix, creating auxiliary and dump outputs named â€˜main-foo.*â€™
!      and â€˜main-bar.*â€™.
  
       An empty string specified as DUMPBASE avoids the influence of the
       output basename in the naming of auxiliary and dump outputs during
*************** nothing at all.
*** 2231,2237 ****
  
            gcc -c foo.c -o dir/foobar.o -dumpbase '' ...
  
!      will name aux outputs 'dir/foo.*' and dump outputs 'dir/foo.c.*'.
       Note how their basenames are taken from the input name, but the
       directory still defaults to that of the output.
  
--- 2235,2241 ----
  
            gcc -c foo.c -o dir/foobar.o -dumpbase '' ...
  
!      will name aux outputs â€˜dir/foo.*â€™ and dump outputs â€˜dir/foo.c.*â€™.
       Note how their basenames are taken from the input name, but the
       directory still defaults to that of the output.
  
*************** nothing at all.
*** 2241,2264 ****
            gcc foo.c bar.c -o dir/foobar -dumpbase '' -flto ...
  
       The compilation of the source files will name auxiliary outputs
!      'dir/foo.*' and 'dir/bar.*', and dump outputs 'dir/foo.c.*' and
!      'dir/bar.c.*'.  LTO recompilation during linking will use
!      'dir/foobar.' as the prefix for dumps and auxiliary files.
  
! '-dumpbase-ext AUXDROPSUF'
       When forming the name of an auxiliary (but not a dump) output file,
       drop trailing AUXDROPSUF from DUMPBASE before appending any
       suffixes.  If not specified, this option defaults to the suffix of
       a default DUMPBASE, i.e., the suffix of the input file when
!      '-dumpbase' is not present in the command line, or DUMPBASE is
       combined with DUMPPFX.
  
            gcc foo.c -c -o dir/foo.o -dumpbase x-foo.c -dumpbase-ext .c ...
  
!      creates 'dir/foo.o' as the main output, and generates auxiliary
!      outputs in 'dir/x-foo.*', taking the location of the primary
!      output, and dropping the '.c' suffix from the DUMPBASE.  Dump
!      outputs retain the suffix: 'dir/x-foo.c.*'.
  
       This option is disregarded if it does not match the suffix of a
       specified DUMPBASE, except as an alternative to the executable
--- 2245,2268 ----
            gcc foo.c bar.c -o dir/foobar -dumpbase '' -flto ...
  
       The compilation of the source files will name auxiliary outputs
!      â€˜dir/foo.*â€™ and â€˜dir/bar.*â€™, and dump outputs â€˜dir/foo.c.*â€™ and
!      â€˜dir/bar.c.*â€™.  LTO recompilation during linking will use
!      â€˜dir/foobar.â€™ as the prefix for dumps and auxiliary files.
  
! â€˜-dumpbase-ext AUXDROPSUFâ€™
       When forming the name of an auxiliary (but not a dump) output file,
       drop trailing AUXDROPSUF from DUMPBASE before appending any
       suffixes.  If not specified, this option defaults to the suffix of
       a default DUMPBASE, i.e., the suffix of the input file when
!      â€˜-dumpbaseâ€™ is not present in the command line, or DUMPBASE is
       combined with DUMPPFX.
  
            gcc foo.c -c -o dir/foo.o -dumpbase x-foo.c -dumpbase-ext .c ...
  
!      creates â€˜dir/foo.oâ€™ as the main output, and generates auxiliary
!      outputs in â€˜dir/x-foo.*â€™, taking the location of the primary
!      output, and dropping the â€˜.câ€™ suffix from the DUMPBASE.  Dump
!      outputs retain the suffix: â€˜dir/x-foo.c.*â€™.
  
       This option is disregarded if it does not match the suffix of a
       specified DUMPBASE, except as an alternative to the executable
*************** nothing at all.
*** 2267,2315 ****
  
            gcc foo.c bar.c -o main.out -dumpbase-ext .out ...
  
!      creates 'main.out' as the primary output, and avoids overwriting
       the auxiliary and dump outputs by using the executable name minus
       AUXDROPSUF as a prefix, creating auxiliary outputs named
!      'main-foo.*' and 'main-bar.*' and dump outputs named 'main-foo.c.*'
!      and 'main-bar.c.*'.
  
! '-dumpdir DUMPPFX'
       When forming the name of an auxiliary or dump output file, use
       DUMPPFX as a prefix:
  
            gcc -dumpdir pfx- -c foo.c ...
  
!      creates 'foo.o' as the primary output, and auxiliary outputs named
!      'pfx-foo.*', combining the given DUMPPFX with the default DUMPBASE
       derived from the default primary output, derived in turn from the
       input name.  Dump outputs also take the input name suffix:
!      'pfx-foo.c.*'.
  
       If DUMPPFX is to be used as a directory name, it must end with a
       directory separator:
  
            gcc -dumpdir dir/ -c foo.c -o obj/bar.o ...
  
!      creates 'obj/bar.o' as the primary output, and auxiliary outputs
!      named 'dir/bar.*', combining the given DUMPPFX with the default
       DUMPBASE derived from the primary output name.  Dump outputs also
!      take the input name suffix: 'dir/bar.c.*'.
  
       It defaults to the location of the output file, unless the output
!      file is a special file like '/dev/null'.  Options '-save-temps=cwd'
!      and '-save-temps=obj' override this default, just like an explicit
!      '-dumpdir' option.  In case multiple such options are given, the
       last one prevails:
  
            gcc -dumpdir pfx- -c foo.c -save-temps=obj ...
  
!      outputs 'foo.o', with auxiliary outputs named 'foo.*' because
!      '-save-temps=*' overrides the DUMPPFX given by the earlier
!      '-dumpdir' option.  It does not matter that '=obj' is the default
!      for '-save-temps', nor that the output directory is implicitly the
!      current directory.  Dump outputs are named 'foo.c.*'.
  
!      When compiling from multiple input files, if '-dumpbase' is
       specified, DUMPBASE, minus a AUXDROPSUF suffix, and a dash are
       appended to (or override, if containing any directory components)
       an explicit or defaulted DUMPPFX, so that each of the multiple
--- 2271,2319 ----
  
            gcc foo.c bar.c -o main.out -dumpbase-ext .out ...
  
!      creates â€˜main.outâ€™ as the primary output, and avoids overwriting
       the auxiliary and dump outputs by using the executable name minus
       AUXDROPSUF as a prefix, creating auxiliary outputs named
!      â€˜main-foo.*â€™ and â€˜main-bar.*â€™ and dump outputs named â€˜main-foo.c.*â€™
!      and â€˜main-bar.c.*â€™.
  
! â€˜-dumpdir DUMPPFXâ€™
       When forming the name of an auxiliary or dump output file, use
       DUMPPFX as a prefix:
  
            gcc -dumpdir pfx- -c foo.c ...
  
!      creates â€˜foo.oâ€™ as the primary output, and auxiliary outputs named
!      â€˜pfx-foo.*â€™, combining the given DUMPPFX with the default DUMPBASE
       derived from the default primary output, derived in turn from the
       input name.  Dump outputs also take the input name suffix:
!      â€˜pfx-foo.c.*â€™.
  
       If DUMPPFX is to be used as a directory name, it must end with a
       directory separator:
  
            gcc -dumpdir dir/ -c foo.c -o obj/bar.o ...
  
!      creates â€˜obj/bar.oâ€™ as the primary output, and auxiliary outputs
!      named â€˜dir/bar.*â€™, combining the given DUMPPFX with the default
       DUMPBASE derived from the primary output name.  Dump outputs also
!      take the input name suffix: â€˜dir/bar.c.*â€™.
  
       It defaults to the location of the output file, unless the output
!      file is a special file like â€˜/dev/nullâ€™.  Options â€˜-save-temps=cwdâ€™
!      and â€˜-save-temps=objâ€™ override this default, just like an explicit
!      â€˜-dumpdirâ€™ option.  In case multiple such options are given, the
       last one prevails:
  
            gcc -dumpdir pfx- -c foo.c -save-temps=obj ...
  
!      outputs â€˜foo.oâ€™, with auxiliary outputs named â€˜foo.*â€™ because
!      â€˜-save-temps=*â€™ overrides the DUMPPFX given by the earlier
!      â€˜-dumpdirâ€™ option.  It does not matter that â€˜=objâ€™ is the default
!      for â€˜-save-tempsâ€™, nor that the output directory is implicitly the
!      current directory.  Dump outputs are named â€˜foo.c.*â€™.
  
!      When compiling from multiple input files, if â€˜-dumpbaseâ€™ is
       specified, DUMPBASE, minus a AUXDROPSUF suffix, and a dash are
       appended to (or override, if containing any directory components)
       an explicit or defaulted DUMPPFX, so that each of the multiple
*************** nothing at all.
*** 2317,2370 ****
  
            gcc foo.c bar.c -c -dumpdir dir/pfx- -dumpbase main ...
  
!      outputs auxiliary dumps to 'dir/pfx-main-foo.*' and
!      'dir/pfx-main-bar.*', appending DUMPBASE- to DUMPPFX.  Dump outputs
!      retain the input file suffix: 'dir/pfx-main-foo.c.*' and
!      'dir/pfx-main-bar.c.*', respectively.  Contrast with the
       single-input compilation:
  
            gcc foo.c -c -dumpdir dir/pfx- -dumpbase main ...
  
!      that, applying '-dumpbase' to a single source, does not compute and
       append a separate DUMPBASE per input file.  Its auxiliary and dump
!      outputs go in 'dir/pfx-main.*'.
  
       When compiling and then linking from multiple input files, a
       defaulted or explicitly specified DUMPPFX also undergoes the
!      DUMPBASE- transformation above (e.g.  the compilation of 'foo.c'
!      and 'bar.c' above, but without '-c').  If neither '-dumpdir' nor
!      '-dumpbase' are given, the linker output base name, minus
       AUXDROPSUF, if specified, or the executable suffix otherwise, plus
       a dash is appended to the default DUMPPFX instead.  Note, however,
       that unlike earlier cases of linking:
  
            gcc foo.c bar.c -dumpdir dir/pfx- -o main ...
  
!      does not append the output name 'main' to DUMPPFX, because
!      '-dumpdir' is explicitly specified.  The goal is that the
       explicitly-specified DUMPPFX may contain the specified output name
       as part of the prefix, if desired; only an explicitly-specified
!      '-dumpbase' would be combined with it, in order to avoid simply
       discarding a meaningful option.
  
       When compiling and then linking from a single input file, the
       linker output base name will only be appended to the default
       DUMPPFX as above if it does not share the base name with the single
       input file name.  This has been covered in single-input linking
!      cases above, but not with an explicit '-dumpdir' that inhibits the
!      combination, even if overridden by '-save-temps=*':
  
            gcc foo.c -dumpdir alt/pfx- -o dir/main.exe -save-temps=cwd ...
  
!      Auxiliary outputs are named 'foo.*', and dump outputs 'foo.c.*', in
       the current working directory as ultimately requested by
!      '-save-temps=cwd'.
  
       Summing it all up for an intuitive though slightly imprecise data
       flow: the primary output name is broken into a directory part and a
       basename part; DUMPPFX is set to the former, unless overridden by
!      '-dumpdir' or '-save-temps=*', and DUMPBASE is set to the latter,
!      unless overriden by '-dumpbase'.  If there are multiple inputs or
       linking, this DUMPBASE may be combined with DUMPPFX and taken from
       each input file.  Auxiliary output names for each input are formed
       by combining DUMPPFX, DUMPBASE minus suffix, and the auxiliary
--- 2321,2374 ----
  
            gcc foo.c bar.c -c -dumpdir dir/pfx- -dumpbase main ...
  
!      outputs auxiliary dumps to â€˜dir/pfx-main-foo.*â€™ and
!      â€˜dir/pfx-main-bar.*â€™, appending DUMPBASE- to DUMPPFX.  Dump outputs
!      retain the input file suffix: â€˜dir/pfx-main-foo.c.*â€™ and
!      â€˜dir/pfx-main-bar.c.*â€™, respectively.  Contrast with the
       single-input compilation:
  
            gcc foo.c -c -dumpdir dir/pfx- -dumpbase main ...
  
!      that, applying â€˜-dumpbaseâ€™ to a single source, does not compute and
       append a separate DUMPBASE per input file.  Its auxiliary and dump
!      outputs go in â€˜dir/pfx-main.*â€™.
  
       When compiling and then linking from multiple input files, a
       defaulted or explicitly specified DUMPPFX also undergoes the
!      DUMPBASE- transformation above (e.g.  the compilation of â€˜foo.câ€™
!      and â€˜bar.câ€™ above, but without â€˜-câ€™).  If neither â€˜-dumpdirâ€™ nor
!      â€˜-dumpbaseâ€™ are given, the linker output base name, minus
       AUXDROPSUF, if specified, or the executable suffix otherwise, plus
       a dash is appended to the default DUMPPFX instead.  Note, however,
       that unlike earlier cases of linking:
  
            gcc foo.c bar.c -dumpdir dir/pfx- -o main ...
  
!      does not append the output name â€˜mainâ€™ to DUMPPFX, because
!      â€˜-dumpdirâ€™ is explicitly specified.  The goal is that the
       explicitly-specified DUMPPFX may contain the specified output name
       as part of the prefix, if desired; only an explicitly-specified
!      â€˜-dumpbaseâ€™ would be combined with it, in order to avoid simply
       discarding a meaningful option.
  
       When compiling and then linking from a single input file, the
       linker output base name will only be appended to the default
       DUMPPFX as above if it does not share the base name with the single
       input file name.  This has been covered in single-input linking
!      cases above, but not with an explicit â€˜-dumpdirâ€™ that inhibits the
!      combination, even if overridden by â€˜-save-temps=*â€™:
  
            gcc foo.c -dumpdir alt/pfx- -o dir/main.exe -save-temps=cwd ...
  
!      Auxiliary outputs are named â€˜foo.*â€™, and dump outputs â€˜foo.c.*â€™, in
       the current working directory as ultimately requested by
!      â€˜-save-temps=cwdâ€™.
  
       Summing it all up for an intuitive though slightly imprecise data
       flow: the primary output name is broken into a directory part and a
       basename part; DUMPPFX is set to the former, unless overridden by
!      â€˜-dumpdirâ€™ or â€˜-save-temps=*â€™, and DUMPBASE is set to the latter,
!      unless overriden by â€˜-dumpbaseâ€™.  If there are multiple inputs or
       linking, this DUMPBASE may be combined with DUMPPFX and taken from
       each input file.  Auxiliary output names for each input are formed
       by combining DUMPPFX, DUMPBASE minus suffix, and the auxiliary
*************** nothing at all.
*** 2376,2461 ****
       as derived from the linker output name but not from inputs, even in
       cases in which this combination would not otherwise be used as
       such, is passed down with a trailing period replacing the
!      compiler-added dash, if any, as a '-dumpdir' option to
!      'lto-wrapper'; being involved in linking, this program does not
!      normally get any '-dumpbase' and '-dumpbase-ext', and it ignores
       them.
  
!      When running sub-compilers, 'lto-wrapper' appends LTO stage names
       to the received DUMPPFX, ensures it contains a directory component
!      so that it overrides any '-dumpdir', and passes that as '-dumpbase'
       to sub-compilers.
  
! '-v'
       Print (on standard error output) the commands executed to run the
       stages of compilation.  Also print the version number of the
       compiler driver program and of the preprocessor and the compiler
       proper.
  
! '-###'
!      Like '-v' except the commands are not executed and arguments are
!      quoted unless they contain only alphanumeric characters or './-_'.
       This is useful for shell scripts to capture the driver-generated
       command lines.
  
! '--help'
       Print (on the standard output) a description of the command-line
!      options understood by 'gcc'.  If the '-v' option is also specified
!      then '--help' is also passed on to the various processes invoked by
!      'gcc', so that they can display the command-line options they
!      accept.  If the '-Wextra' option has also been specified (prior to
!      the '--help' option), then command-line options that have no
       documentation associated with them are also displayed.
  
! '--target-help'
       Print (on the standard output) a description of target-specific
       command-line options for each tool.  For some targets extra
       target-specific information may also be printed.
  
! '--help={CLASS|[^]QUALIFIER}[,...]'
       Print (on the standard output) a description of the command-line
       options understood by the compiler that fit into all specified
       classes and qualifiers.  These are the supported classes:
  
!      'optimizers'
            Display all of the optimization options supported by the
            compiler.
  
!      'warnings'
            Display all of the options controlling warning messages
            produced by the compiler.
  
!      'target'
!           Display target-specific options.  Unlike the '--target-help'
            option however, target-specific options of the linker and
            assembler are not displayed.  This is because those tools do
!           not currently support the extended '--help=' syntax.
  
!      'params'
!           Display the values recognized by the '--param' option.
  
       LANGUAGE
            Display the options supported for LANGUAGE, where LANGUAGE is
            the name of one of the languages supported in this version of
            GCC.  If an option is supported by all languages, one needs to
!           select 'common' class.
  
!      'common'
            Display the options that are common to all languages.
  
       These are the supported qualifiers:
  
!      'undocumented'
            Display only those options that are undocumented.
  
!      'joined'
            Display options taking an argument that appears after an equal
            sign in the same continuous piece of text, such as:
!           '--help=target'.
  
!      'separate'
            Display options taking an argument that appears as a separate
!           word following the original option, such as: '-o output-file'.
  
       Thus for example to display all the undocumented target-specific
       switches supported by the compiler, use:
--- 2380,2465 ----
       as derived from the linker output name but not from inputs, even in
       cases in which this combination would not otherwise be used as
       such, is passed down with a trailing period replacing the
!      compiler-added dash, if any, as a â€˜-dumpdirâ€™ option to
!      â€˜lto-wrapperâ€™; being involved in linking, this program does not
!      normally get any â€˜-dumpbaseâ€™ and â€˜-dumpbase-extâ€™, and it ignores
       them.
  
!      When running sub-compilers, â€˜lto-wrapperâ€™ appends LTO stage names
       to the received DUMPPFX, ensures it contains a directory component
!      so that it overrides any â€˜-dumpdirâ€™, and passes that as â€˜-dumpbaseâ€™
       to sub-compilers.
  
! â€˜-vâ€™
       Print (on standard error output) the commands executed to run the
       stages of compilation.  Also print the version number of the
       compiler driver program and of the preprocessor and the compiler
       proper.
  
! â€˜-###â€™
!      Like â€˜-vâ€™ except the commands are not executed and arguments are
!      quoted unless they contain only alphanumeric characters or â€˜./-_â€™.
       This is useful for shell scripts to capture the driver-generated
       command lines.
  
! â€˜--helpâ€™
       Print (on the standard output) a description of the command-line
!      options understood by â€˜gccâ€™.  If the â€˜-vâ€™ option is also specified
!      then â€˜--helpâ€™ is also passed on to the various processes invoked by
!      â€˜gccâ€™, so that they can display the command-line options they
!      accept.  If the â€˜-Wextraâ€™ option has also been specified (prior to
!      the â€˜--helpâ€™ option), then command-line options that have no
       documentation associated with them are also displayed.
  
! â€˜--target-helpâ€™
       Print (on the standard output) a description of target-specific
       command-line options for each tool.  For some targets extra
       target-specific information may also be printed.
  
! â€˜--help={CLASS|[^]QUALIFIER}[,...]â€™
       Print (on the standard output) a description of the command-line
       options understood by the compiler that fit into all specified
       classes and qualifiers.  These are the supported classes:
  
!      â€˜optimizersâ€™
            Display all of the optimization options supported by the
            compiler.
  
!      â€˜warningsâ€™
            Display all of the options controlling warning messages
            produced by the compiler.
  
!      â€˜targetâ€™
!           Display target-specific options.  Unlike the â€˜--target-helpâ€™
            option however, target-specific options of the linker and
            assembler are not displayed.  This is because those tools do
!           not currently support the extended â€˜--help=â€™ syntax.
  
!      â€˜paramsâ€™
!           Display the values recognized by the â€˜--paramâ€™ option.
  
       LANGUAGE
            Display the options supported for LANGUAGE, where LANGUAGE is
            the name of one of the languages supported in this version of
            GCC.  If an option is supported by all languages, one needs to
!           select â€˜commonâ€™ class.
  
!      â€˜commonâ€™
            Display the options that are common to all languages.
  
       These are the supported qualifiers:
  
!      â€˜undocumentedâ€™
            Display only those options that are undocumented.
  
!      â€˜joinedâ€™
            Display options taking an argument that appears after an equal
            sign in the same continuous piece of text, such as:
!           â€˜--help=targetâ€™.
  
!      â€˜separateâ€™
            Display options taking an argument that appears as a separate
!           word following the original option, such as: â€˜-o output-fileâ€™.
  
       Thus for example to display all the undocumented target-specific
       switches supported by the compiler, use:
*************** nothing at all.
*** 2463,2475 ****
            --help=target,undocumented
  
       The sense of a qualifier can be inverted by prefixing it with the
!      '^' character, so for example to display all binary warning options
       (i.e., ones that are either on or off and that do not take an
       argument) that have a description, use:
  
            --help=warnings,^joined,^undocumented
  
!      The argument to '--help=' should not consist solely of inverted
       qualifiers.
  
       Combining several classes is possible, although this usually
--- 2467,2479 ----
            --help=target,undocumented
  
       The sense of a qualifier can be inverted by prefixing it with the
!      â€˜^â€™ character, so for example to display all binary warning options
       (i.e., ones that are either on or off and that do not take an
       argument) that have a description, use:
  
            --help=warnings,^joined,^undocumented
  
!      The argument to â€˜--help=â€™ should not consist solely of inverted
       qualifiers.
  
       Combining several classes is possible, although this usually
*************** nothing at all.
*** 2480,2499 ****
  
            --help=target,optimizers
  
!      The '--help=' option can be repeated on the command line.  Each
       successive use displays its requested class of options, skipping
!      those that have already been displayed.  If '--help' is also
       specified anywhere on the command line then this takes precedence
!      over any '--help=' option.
  
!      If the '-Q' option appears on the command line before the '--help='
!      option, then the descriptive text displayed by '--help=' is
       changed.  Instead of describing the displayed options, an
       indication is given as to whether the option is enabled, disabled
       or set to a specific value (assuming that the compiler knows this
!      at the point where the '--help=' option is used).
  
!      Here is a truncated example from the ARM port of 'gcc':
  
              % gcc -Q -mabi=2 --help=target -c
              The following options are target specific:
--- 2484,2503 ----
  
            --help=target,optimizers
  
!      The â€˜--help=â€™ option can be repeated on the command line.  Each
       successive use displays its requested class of options, skipping
!      those that have already been displayed.  If â€˜--helpâ€™ is also
       specified anywhere on the command line then this takes precedence
!      over any â€˜--help=â€™ option.
  
!      If the â€˜-Qâ€™ option appears on the command line before the â€˜--help=â€™
!      option, then the descriptive text displayed by â€˜--help=â€™ is
       changed.  Instead of describing the displayed options, an
       indication is given as to whether the option is enabled, disabled
       or set to a specific value (assuming that the compiler knows this
!      at the point where the â€˜--help=â€™ option is used).
  
!      Here is a truncated example from the ARM port of â€˜gccâ€™:
  
              % gcc -Q -mabi=2 --help=target -c
              The following options are target specific:
*************** nothing at all.
*** 2503,2603 ****
  
       The output is sensitive to the effects of previous command-line
       options, so for example it is possible to find out which
!      optimizations are enabled at '-O2' by using:
  
            -Q -O2 --help=optimizers
  
       Alternatively you can discover which binary optimizations are
!      enabled by '-O3' by using:
  
            gcc -c -Q -O3 --help=optimizers > /tmp/O3-opts
            gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts
            diff /tmp/O2-opts /tmp/O3-opts | grep enabled
  
! '--version'
       Display the version number and copyrights of the invoked GCC.
  
! '-pass-exit-codes'
!      Normally the 'gcc' program exits with the code of 1 if any phase of
       the compiler returns a non-success return code.  If you specify
!      '-pass-exit-codes', the 'gcc' program instead returns with the
       numerically highest error produced by any phase returning an error
       indication.  The C, C++, and Fortran front ends return 4 if an
       internal compiler error is encountered.
  
! '-pipe'
       Use pipes rather than temporary files for communication between the
       various stages of compilation.  This fails to work on some systems
       where the assembler is unable to read from a pipe; but the GNU
       assembler has no trouble.
  
! '-specs=FILE'
!      Process FILE after the compiler reads in the standard 'specs' file,
!      in order to override the defaults which the 'gcc' driver program
!      uses when determining what switches to pass to 'cc1', 'cc1plus',
!      'as', 'ld', etc.  More than one '-specs=FILE' can be specified on
       the command line, and they are processed in order, from left to
       right.  *Note Spec Files::, for information about the format of the
       FILE.
  
! '-wrapper'
       Invoke all subcommands under a wrapper program.  The name of the
       wrapper program and its parameters are passed as a comma separated
       list.
  
            gcc -c t.c -wrapper gdb,--args
  
!      This invokes all subprograms of 'gcc' under 'gdb --args', thus the
!      invocation of 'cc1' is 'gdb --args cc1 ...'.
  
! '-ffile-prefix-map=OLD=NEW'
!      When compiling files residing in directory 'OLD', record any
       references to them in the result of the compilation as if the files
!      resided in directory 'NEW' instead.  Specifying this option is
!      equivalent to specifying all the individual '-f*-prefix-map'
       options.  This can be used to make reproducible builds that are
       location independent.  Directories referenced by directives are not
!      affected by these options.  See also '-fmacro-prefix-map',
!      '-fdebug-prefix-map', '-fprofile-prefix-map' and
!      '-fcanon-prefix-map'.
  
! '-fcanon-prefix-map'
!      For the '-f*-prefix-map' options normally comparison of 'OLD'
       prefix against the filename that would be normally referenced in
       the result of the compilation is done using textual comparison of
       the prefixes, or ignoring character case for case insensitive
       filesystems and considering slashes and backslashes as equal on DOS
!      based filesystems.  The '-fcanon-prefix-map' causes such
!      comparisons to be done on canonicalized paths of 'OLD' and the
       referenced filename.
  
! '-fplugin=NAME.so'
       Load the plugin code in file NAME.so, assumed to be a shared object
       to be dlopen'd by the compiler.  The base name of the shared object
       file is used to identify the plugin for the purposes of argument
!      parsing (See '-fplugin-arg-NAME-KEY=VALUE' below).  Each plugin
       should define the callback functions specified in the Plugins API.
  
! '-fplugin-arg-NAME-KEY=VALUE'
       Define an argument called KEY with a value of VALUE for the plugin
       called NAME.
  
! '-fdump-ada-spec[-slim]'
       For C and C++ source and include files, generate corresponding Ada
       specs.  *Note (gnat_ugn)Generating Ada Bindings for C and C++
       headers::, which provides detailed documentation on this feature.
  
! '-fada-spec-parent=UNIT'
!      In conjunction with '-fdump-ada-spec[-slim]' above, generate Ada
       specs as child units of parent UNIT.
  
! '-fdump-go-spec=FILE'
       For input files in any language, generate corresponding Go
!      declarations in FILE.  This generates Go 'const', 'type', 'var',
!      and 'func' declarations which may be a useful way to start writing
       a Go interface to code written in some other language.
  
! '@FILE'
       Read command-line options from FILE.  The options read are inserted
       in place of the original @FILE option.  If FILE does not exist, or
       cannot be read, then the option will be treated literally, and not
--- 2507,2607 ----
  
       The output is sensitive to the effects of previous command-line
       options, so for example it is possible to find out which
!      optimizations are enabled at â€˜-O2â€™ by using:
  
            -Q -O2 --help=optimizers
  
       Alternatively you can discover which binary optimizations are
!      enabled by â€˜-O3â€™ by using:
  
            gcc -c -Q -O3 --help=optimizers > /tmp/O3-opts
            gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts
            diff /tmp/O2-opts /tmp/O3-opts | grep enabled
  
! â€˜--versionâ€™
       Display the version number and copyrights of the invoked GCC.
  
! â€˜-pass-exit-codesâ€™
!      Normally the â€˜gccâ€™ program exits with the code of 1 if any phase of
       the compiler returns a non-success return code.  If you specify
!      â€˜-pass-exit-codesâ€™, the â€˜gccâ€™ program instead returns with the
       numerically highest error produced by any phase returning an error
       indication.  The C, C++, and Fortran front ends return 4 if an
       internal compiler error is encountered.
  
! â€˜-pipeâ€™
       Use pipes rather than temporary files for communication between the
       various stages of compilation.  This fails to work on some systems
       where the assembler is unable to read from a pipe; but the GNU
       assembler has no trouble.
  
! â€˜-specs=FILEâ€™
!      Process FILE after the compiler reads in the standard â€˜specsâ€™ file,
!      in order to override the defaults which the â€˜gccâ€™ driver program
!      uses when determining what switches to pass to â€˜cc1â€™, â€˜cc1plusâ€™,
!      â€˜asâ€™, â€˜ldâ€™, etc.  More than one â€˜-specs=FILEâ€™ can be specified on
       the command line, and they are processed in order, from left to
       right.  *Note Spec Files::, for information about the format of the
       FILE.
  
! â€˜-wrapperâ€™
       Invoke all subcommands under a wrapper program.  The name of the
       wrapper program and its parameters are passed as a comma separated
       list.
  
            gcc -c t.c -wrapper gdb,--args
  
!      This invokes all subprograms of â€˜gccâ€™ under â€˜gdb --argsâ€™, thus the
!      invocation of â€˜cc1â€™ is â€˜gdb --args cc1 ...â€™.
  
! â€˜-ffile-prefix-map=OLD=NEWâ€™
!      When compiling files residing in directory â€˜OLDâ€™, record any
       references to them in the result of the compilation as if the files
!      resided in directory â€˜NEWâ€™ instead.  Specifying this option is
!      equivalent to specifying all the individual â€˜-f*-prefix-mapâ€™
       options.  This can be used to make reproducible builds that are
       location independent.  Directories referenced by directives are not
!      affected by these options.  See also â€˜-fmacro-prefix-mapâ€™,
!      â€˜-fdebug-prefix-mapâ€™, â€˜-fprofile-prefix-mapâ€™ and
!      â€˜-fcanon-prefix-mapâ€™.
  
! â€˜-fcanon-prefix-mapâ€™
!      For the â€˜-f*-prefix-mapâ€™ options normally comparison of â€˜OLDâ€™
       prefix against the filename that would be normally referenced in
       the result of the compilation is done using textual comparison of
       the prefixes, or ignoring character case for case insensitive
       filesystems and considering slashes and backslashes as equal on DOS
!      based filesystems.  The â€˜-fcanon-prefix-mapâ€™ causes such
!      comparisons to be done on canonicalized paths of â€˜OLDâ€™ and the
       referenced filename.
  
! â€˜-fplugin=NAME.soâ€™
       Load the plugin code in file NAME.so, assumed to be a shared object
       to be dlopen'd by the compiler.  The base name of the shared object
       file is used to identify the plugin for the purposes of argument
!      parsing (See â€˜-fplugin-arg-NAME-KEY=VALUEâ€™ below).  Each plugin
       should define the callback functions specified in the Plugins API.
  
! â€˜-fplugin-arg-NAME-KEY=VALUEâ€™
       Define an argument called KEY with a value of VALUE for the plugin
       called NAME.
  
! â€˜-fdump-ada-spec[-slim]â€™
       For C and C++ source and include files, generate corresponding Ada
       specs.  *Note (gnat_ugn)Generating Ada Bindings for C and C++
       headers::, which provides detailed documentation on this feature.
  
! â€˜-fada-spec-parent=UNITâ€™
!      In conjunction with â€˜-fdump-ada-spec[-slim]â€™ above, generate Ada
       specs as child units of parent UNIT.
  
! â€˜-fdump-go-spec=FILEâ€™
       For input files in any language, generate corresponding Go
!      declarations in FILE.  This generates Go â€˜constâ€™, â€˜typeâ€™, â€˜varâ€™,
!      and â€˜funcâ€™ declarations which may be a useful way to start writing
       a Go interface to code written in some other language.
  
! â€˜@FILEâ€™
       Read command-line options from FILE.  The options read are inserted
       in place of the original @FILE option.  If FILE does not exist, or
       cannot be read, then the option will be treated literally, and not
*************** File: gcc.info,  Node: Invoking G++,  Ne
*** 2616,2638 ****
  3.3 Compiling C++ Programs
  ==========================
  
! C++ source files conventionally use one of the suffixes '.C', '.cc',
! '.cpp', '.CPP', '.c++', '.cp', or '.cxx'; C++ header files often use
! '.hh', '.hpp', '.H', or (for shared template code) '.tcc'; preprocessed
! C++ files use the suffix '.ii'; and C++20 module interface units
! sometimes use '.ixx', '.cppm', '.cxxm', '.c++m', or '.ccm'.
  
   GCC recognizes files with these names and compiles them as C++ programs
  even if you call the compiler the same way as for compiling C programs
! (usually with the name 'gcc').
  
!  However, the use of 'gcc' does not add the C++ library.  'g++' is a
  program that calls GCC and automatically specifies linking against the
! C++ library.  It treats '.c', '.h' and '.i' files as C++ source files
! instead of C source files unless '-x' is used.  This program is also
! useful when precompiling a C header file with a '.h' extension for use
! in C++ compilations.  On many systems, 'g++' is also installed with the
! name 'c++'.
  
   When you compile C++ programs, you may specify many of the same
  command-line options that you use for compiling programs in any
--- 2620,2642 ----
  3.3 Compiling C++ Programs
  ==========================
  
! C++ source files conventionally use one of the suffixes â€˜.Câ€™, â€˜.ccâ€™,
! â€˜.cppâ€™, â€˜.CPPâ€™, â€˜.c++â€™, â€˜.cpâ€™, or â€˜.cxxâ€™; C++ header files often use
! â€˜.hhâ€™, â€˜.hppâ€™, â€˜.Hâ€™, or (for shared template code) â€˜.tccâ€™; preprocessed
! C++ files use the suffix â€˜.iiâ€™; and C++20 module interface units
! sometimes use â€˜.ixxâ€™, â€˜.cppmâ€™, â€˜.cxxmâ€™, â€˜.c++mâ€™, or â€˜.ccmâ€™.
  
   GCC recognizes files with these names and compiles them as C++ programs
  even if you call the compiler the same way as for compiling C programs
! (usually with the name â€˜gccâ€™).
  
!  However, the use of â€˜gccâ€™ does not add the C++ library.  â€˜g++â€™ is a
  program that calls GCC and automatically specifies linking against the
! C++ library.  It treats â€˜.câ€™, â€˜.hâ€™ and â€˜.iâ€™ files as C++ source files
! instead of C source files unless â€˜-xâ€™ is used.  This program is also
! useful when precompiling a C header file with a â€˜.hâ€™ extension for use
! in C++ compilations.  On many systems, â€˜g++â€™ is also installed with the
! name â€˜c++â€™.
  
   When you compile C++ programs, you may specify many of the same
  command-line options that you use for compiling programs in any
*************** The following options control the dialec
*** 2653,2843 ****
  from C, such as C++, Objective-C and Objective-C++) that the compiler
  accepts:
  
! '-ansi'
!      In C mode, this is equivalent to '-std=c90'.  In C++ mode, it is
!      equivalent to '-std=c++98'.
  
! '-std='
       Determine the language standard.  *Note Language Standards
       Supported by GCC: Standards, for details of these standard
       versions.  This option is currently only supported when compiling C
       or C++.
  
!      The compiler can accept several base standards, such as 'c90' or
!      'c++98', and GNU dialects of those standards, such as 'gnu90' or
!      'gnu++98'.  When a base standard is specified, the compiler accepts
       all programs following that standard plus those using GNU
!      extensions that do not contradict it.  For example, '-std=c90'
       turns off certain features of GCC that are incompatible with ISO
!      C90, such as the 'asm' and 'typeof' keywords, but not other GNU
       extensions that do not have a meaning in ISO C90, such as omitting
!      the middle term of a '?:' expression.  On the other hand, when a
       GNU dialect of a standard is specified, all features supported by
       the compiler are enabled, even when those features change the
       meaning of the base standard.  As a result, some strict-conforming
       programs may be rejected.  The particular standard is used by
!      '-Wpedantic' to identify which features are GNU extensions given
!      that version of the standard.  For example '-std=gnu90 -Wpedantic'
!      warns about C++ style '//' comments, while '-std=gnu99 -Wpedantic'
       does not.
  
       A value for this option must be provided; possible values are
  
!      'c90'
!      'c89'
!      'iso9899:1990'
            Support all ISO C90 programs (certain GNU extensions that
!           conflict with ISO C90 are disabled).  Same as '-ansi' for C
            code.
  
!      'iso9899:199409'
            ISO C90 as modified in amendment 1.
  
!      'c99'
!      'c9x'
!      'iso9899:1999'
!      'iso9899:199x'
            ISO C99.  This standard is substantially completely supported,
            modulo bugs and floating-point issues (mainly but not entirely
            relating to optional C99 features from Annexes F and G). See
            <https://gcc.gnu.org/c99status.html> for more information.
!           The names 'c9x' and 'iso9899:199x' are deprecated.
  
!      'c11'
!      'c1x'
!      'iso9899:2011'
            ISO C11, the 2011 revision of the ISO C standard.  This
            standard is substantially completely supported, modulo bugs,
            floating-point issues (mainly but not entirely relating to
            optional C11 features from Annexes F and G) and the optional
            Annexes K (Bounds-checking interfaces) and L (Analyzability).
!           The name 'c1x' is deprecated.
  
!      'c17'
!      'c18'
!      'iso9899:2017'
!      'iso9899:2018'
            ISO C17, the 2017 revision of the ISO C standard (published in
            2018).  This standard is same as C11 except for corrections of
!           defects (all of which are also applied with '-std=c11') and a
!           new value of '__STDC_VERSION__', and so is supported to the
            same extent as C11.
  
!      'c23'
!      'c2x'
!      'iso9899:2024'
            ISO C23, the 2023 revision of the ISO C standard (published in
!           2024).  The name 'c2x' is deprecated.
  
!      'c2y'
            The next version of the ISO C standard, still under
            development.  The support for this version is experimental and
            incomplete.
  
!      'gnu90'
!      'gnu89'
            GNU dialect of ISO C90 (including some C99 features).
  
!      'gnu99'
!      'gnu9x'
!           GNU dialect of ISO C99.  The name 'gnu9x' is deprecated.
  
!      'gnu11'
!      'gnu1x'
!           GNU dialect of ISO C11.  The name 'gnu1x' is deprecated.
  
!      'gnu17'
!      'gnu18'
            GNU dialect of ISO C17.
  
!      'gnu23'
!      'gnu2x'
            GNU dialect of ISO C23.  This is the default for C code.  The
!           name 'gnu2x' is deprecated.
  
!      'gnu2y'
            The next version of the ISO C standard, still under
            development, plus GNU extensions.  The support for this
!           version is experimental and incomplete.  The name 'gnu2x' is
            deprecated.
  
!      'c++98'
!      'c++03'
            The 1998 ISO C++ standard plus the 2003 technical corrigendum
!           and some additional defect reports.  Same as '-ansi' for C++
            code.
  
!      'gnu++98'
!      'gnu++03'
!           GNU dialect of '-std=c++98'.
  
!      'c++11'
!      'c++0x'
!           The 2011 ISO C++ standard plus amendments.  The name 'c++0x'
            is deprecated.
  
!      'gnu++11'
!      'gnu++0x'
!           GNU dialect of '-std=c++11'.  The name 'gnu++0x' is
            deprecated.
  
!      'c++14'
!      'c++1y'
!           The 2014 ISO C++ standard plus amendments.  The name 'c++1y'
            is deprecated.
  
!      'gnu++14'
!      'gnu++1y'
!           GNU dialect of '-std=c++14'.  The name 'gnu++1y' is
            deprecated.
  
!      'c++17'
!      'c++1z'
!           The 2017 ISO C++ standard plus amendments.  The name 'c++1z'
            is deprecated.
  
!      'gnu++17'
!      'gnu++1z'
!           GNU dialect of '-std=c++17'.  This is the default for C++
!           code.  The name 'gnu++1z' is deprecated.
  
!      'c++20'
!      'c++2a'
            The 2020 ISO C++ standard plus amendments.  Support is
            experimental, and could change in incompatible ways in future
!           releases.  The name 'c++2a' is deprecated.
  
!      'gnu++20'
!      'gnu++2a'
!           GNU dialect of '-std=c++20'.  Support is experimental, and
            could change in incompatible ways in future releases.  The
!           name 'gnu++2a' is deprecated.
  
!      'c++23'
!      'c++2b'
            The 2023 ISO C++ standard plus amendments (published in 2024).
            Support is experimental, and could change in incompatible ways
!           in future releases.  The name 'c++2b' is deprecated.
  
!      'gnu++23'
!      'gnu++2b'
!           GNU dialect of '-std=c++23'.  Support is experimental, and
            could change in incompatible ways in future releases.  The
!           name 'gnu++2b' is deprecated.
  
!      'c++2c'
!      'c++26'
            The next revision of the ISO C++ standard, planned for 2026.
            Support is highly experimental, and will almost certainly
            change in incompatible ways in future releases.
  
!      'gnu++2c'
!      'gnu++26'
!           GNU dialect of '-std=c++2c'.  Support is highly experimental,
            and will almost certainly change in incompatible ways in
            future releases.
  
! '-aux-info FILENAME'
       Output to the given filename prototyped declarations for all
       functions declared and/or defined in a translation unit, including
       those in header files.  This option is silently ignored in any
--- 2657,2847 ----
  from C, such as C++, Objective-C and Objective-C++) that the compiler
  accepts:
  
! â€˜-ansiâ€™
!      In C mode, this is equivalent to â€˜-std=c90â€™.  In C++ mode, it is
!      equivalent to â€˜-std=c++98â€™.
  
! â€˜-std=â€™
       Determine the language standard.  *Note Language Standards
       Supported by GCC: Standards, for details of these standard
       versions.  This option is currently only supported when compiling C
       or C++.
  
!      The compiler can accept several base standards, such as â€˜c90â€™ or
!      â€˜c++98â€™, and GNU dialects of those standards, such as â€˜gnu90â€™ or
!      â€˜gnu++98â€™.  When a base standard is specified, the compiler accepts
       all programs following that standard plus those using GNU
!      extensions that do not contradict it.  For example, â€˜-std=c90â€™
       turns off certain features of GCC that are incompatible with ISO
!      C90, such as the â€˜asmâ€™ and â€˜typeofâ€™ keywords, but not other GNU
       extensions that do not have a meaning in ISO C90, such as omitting
!      the middle term of a â€˜?:â€™ expression.  On the other hand, when a
       GNU dialect of a standard is specified, all features supported by
       the compiler are enabled, even when those features change the
       meaning of the base standard.  As a result, some strict-conforming
       programs may be rejected.  The particular standard is used by
!      â€˜-Wpedanticâ€™ to identify which features are GNU extensions given
!      that version of the standard.  For example â€˜-std=gnu90 -Wpedanticâ€™
!      warns about C++ style â€˜//â€™ comments, while â€˜-std=gnu99 -Wpedanticâ€™
       does not.
  
       A value for this option must be provided; possible values are
  
!      â€˜c90â€™
!      â€˜c89â€™
!      â€˜iso9899:1990â€™
            Support all ISO C90 programs (certain GNU extensions that
!           conflict with ISO C90 are disabled).  Same as â€˜-ansiâ€™ for C
            code.
  
!      â€˜iso9899:199409â€™
            ISO C90 as modified in amendment 1.
  
!      â€˜c99â€™
!      â€˜c9xâ€™
!      â€˜iso9899:1999â€™
!      â€˜iso9899:199xâ€™
            ISO C99.  This standard is substantially completely supported,
            modulo bugs and floating-point issues (mainly but not entirely
            relating to optional C99 features from Annexes F and G). See
            <https://gcc.gnu.org/c99status.html> for more information.
!           The names â€˜c9xâ€™ and â€˜iso9899:199xâ€™ are deprecated.
  
!      â€˜c11â€™
!      â€˜c1xâ€™
!      â€˜iso9899:2011â€™
            ISO C11, the 2011 revision of the ISO C standard.  This
            standard is substantially completely supported, modulo bugs,
            floating-point issues (mainly but not entirely relating to
            optional C11 features from Annexes F and G) and the optional
            Annexes K (Bounds-checking interfaces) and L (Analyzability).
!           The name â€˜c1xâ€™ is deprecated.
  
!      â€˜c17â€™
!      â€˜c18â€™
!      â€˜iso9899:2017â€™
!      â€˜iso9899:2018â€™
            ISO C17, the 2017 revision of the ISO C standard (published in
            2018).  This standard is same as C11 except for corrections of
!           defects (all of which are also applied with â€˜-std=c11â€™) and a
!           new value of â€˜__STDC_VERSION__â€™, and so is supported to the
            same extent as C11.
  
!      â€˜c23â€™
!      â€˜c2xâ€™
!      â€˜iso9899:2024â€™
            ISO C23, the 2023 revision of the ISO C standard (published in
!           2024).  The name â€˜c2xâ€™ is deprecated.
  
!      â€˜c2yâ€™
            The next version of the ISO C standard, still under
            development.  The support for this version is experimental and
            incomplete.
  
!      â€˜gnu90â€™
!      â€˜gnu89â€™
            GNU dialect of ISO C90 (including some C99 features).
  
!      â€˜gnu99â€™
!      â€˜gnu9xâ€™
!           GNU dialect of ISO C99.  The name â€˜gnu9xâ€™ is deprecated.
  
!      â€˜gnu11â€™
!      â€˜gnu1xâ€™
!           GNU dialect of ISO C11.  The name â€˜gnu1xâ€™ is deprecated.
  
!      â€˜gnu17â€™
!      â€˜gnu18â€™
            GNU dialect of ISO C17.
  
!      â€˜gnu23â€™
!      â€˜gnu2xâ€™
            GNU dialect of ISO C23.  This is the default for C code.  The
!           name â€˜gnu2xâ€™ is deprecated.
  
!      â€˜gnu2yâ€™
            The next version of the ISO C standard, still under
            development, plus GNU extensions.  The support for this
!           version is experimental and incomplete.  The name â€˜gnu2xâ€™ is
            deprecated.
  
!      â€˜c++98â€™
!      â€˜c++03â€™
            The 1998 ISO C++ standard plus the 2003 technical corrigendum
!           and some additional defect reports.  Same as â€˜-ansiâ€™ for C++
            code.
  
!      â€˜gnu++98â€™
!      â€˜gnu++03â€™
!           GNU dialect of â€˜-std=c++98â€™.
  
!      â€˜c++11â€™
!      â€˜c++0xâ€™
!           The 2011 ISO C++ standard plus amendments.  The name â€˜c++0xâ€™
            is deprecated.
  
!      â€˜gnu++11â€™
!      â€˜gnu++0xâ€™
!           GNU dialect of â€˜-std=c++11â€™.  The name â€˜gnu++0xâ€™ is
            deprecated.
  
!      â€˜c++14â€™
!      â€˜c++1yâ€™
!           The 2014 ISO C++ standard plus amendments.  The name â€˜c++1yâ€™
            is deprecated.
  
!      â€˜gnu++14â€™
!      â€˜gnu++1yâ€™
!           GNU dialect of â€˜-std=c++14â€™.  The name â€˜gnu++1yâ€™ is
            deprecated.
  
!      â€˜c++17â€™
!      â€˜c++1zâ€™
!           The 2017 ISO C++ standard plus amendments.  The name â€˜c++1zâ€™
            is deprecated.
  
!      â€˜gnu++17â€™
!      â€˜gnu++1zâ€™
!           GNU dialect of â€˜-std=c++17â€™.  This is the default for C++
!           code.  The name â€˜gnu++1zâ€™ is deprecated.
  
!      â€˜c++20â€™
!      â€˜c++2aâ€™
            The 2020 ISO C++ standard plus amendments.  Support is
            experimental, and could change in incompatible ways in future
!           releases.  The name â€˜c++2aâ€™ is deprecated.
  
!      â€˜gnu++20â€™
!      â€˜gnu++2aâ€™
!           GNU dialect of â€˜-std=c++20â€™.  Support is experimental, and
            could change in incompatible ways in future releases.  The
!           name â€˜gnu++2aâ€™ is deprecated.
  
!      â€˜c++23â€™
!      â€˜c++2bâ€™
            The 2023 ISO C++ standard plus amendments (published in 2024).
            Support is experimental, and could change in incompatible ways
!           in future releases.  The name â€˜c++2bâ€™ is deprecated.
  
!      â€˜gnu++23â€™
!      â€˜gnu++2bâ€™
!           GNU dialect of â€˜-std=c++23â€™.  Support is experimental, and
            could change in incompatible ways in future releases.  The
!           name â€˜gnu++2bâ€™ is deprecated.
  
!      â€˜c++2câ€™
!      â€˜c++26â€™
            The next revision of the ISO C++ standard, planned for 2026.
            Support is highly experimental, and will almost certainly
            change in incompatible ways in future releases.
  
!      â€˜gnu++2câ€™
!      â€˜gnu++26â€™
!           GNU dialect of â€˜-std=c++2câ€™.  Support is highly experimental,
            and will almost certainly change in incompatible ways in
            future releases.
  
! â€˜-aux-info FILENAMEâ€™
       Output to the given filename prototyped declarations for all
       functions declared and/or defined in a translation unit, including
       those in header files.  This option is silently ignored in any
*************** accepts:
*** 2845,2886 ****
  
       Besides declarations, the file indicates, in comments, the origin
       of each declaration (source file and line), whether the declaration
!      was implicit, prototyped or unprototyped ('I', 'N' for new or 'O'
       for old, respectively, in the first character after the line number
       and the colon), and whether it came from a declaration or a
!      definition ('C' or 'F', respectively, in the following character).
       In the case of function definitions, a K&R-style list of arguments
       followed by their declarations is also provided, inside comments,
       after the declaration.
  
! '-fno-asm'
!      Do not recognize 'asm', 'inline' or 'typeof' as a keyword, so that
       code can use these words as identifiers.  You can use the keywords
!      '__asm__', '__inline__' and '__typeof__' instead.  In C, '-ansi'
!      implies '-fno-asm'.
  
!      In C++, 'inline' is a standard keyword and is not affected by this
!      switch.  You may want to use the '-fno-gnu-keywords' flag instead,
!      which disables 'typeof' but not 'asm' and 'inline'.  In C99 mode
!      ('-std=c99' or '-std=gnu99'), this switch only affects the 'asm'
!      and 'typeof' keywords, since 'inline' is a standard keyword in ISO
!      C99.  In C23 mode ('-std=c23' or '-std=gnu23'), this switch only
!      affects the 'asm' keyword, since 'typeof' is a standard keyword in
       ISO C23.
  
! '-fno-builtin'
! '-fno-builtin-FUNCTION'
       Don't recognize built-in functions that do not begin with
!      '__builtin_' as prefix.  *Note Library Builtins::, for details of
       the functions affected, including those which are not built-in
!      functions when '-ansi' or '-std' options for strict ISO C
       conformance are used because they do not have an ISO standard
       meaning.
  
       GCC normally generates special code to handle certain built-in
!      functions more efficiently; for instance, calls to 'alloca' may
       become single instructions which adjust the stack directly, and
!      calls to 'memcpy' may become inline copy loops.  The resulting code
       is often both smaller and faster, but since the function calls no
       longer appear as such, you cannot set a breakpoint on those calls,
       nor can you change the behavior of the functions by linking with a
--- 2849,2890 ----
  
       Besides declarations, the file indicates, in comments, the origin
       of each declaration (source file and line), whether the declaration
!      was implicit, prototyped or unprototyped (â€˜Iâ€™, â€˜Nâ€™ for new or â€˜Oâ€™
       for old, respectively, in the first character after the line number
       and the colon), and whether it came from a declaration or a
!      definition (â€˜Câ€™ or â€˜Fâ€™, respectively, in the following character).
       In the case of function definitions, a K&R-style list of arguments
       followed by their declarations is also provided, inside comments,
       after the declaration.
  
! â€˜-fno-asmâ€™
!      Do not recognize â€˜asmâ€™, â€˜inlineâ€™ or â€˜typeofâ€™ as a keyword, so that
       code can use these words as identifiers.  You can use the keywords
!      â€˜__asm__â€™, â€˜__inline__â€™ and â€˜__typeof__â€™ instead.  In C, â€˜-ansiâ€™
!      implies â€˜-fno-asmâ€™.
  
!      In C++, â€˜inlineâ€™ is a standard keyword and is not affected by this
!      switch.  You may want to use the â€˜-fno-gnu-keywordsâ€™ flag instead,
!      which disables â€˜typeofâ€™ but not â€˜asmâ€™ and â€˜inlineâ€™.  In C99 mode
!      (â€˜-std=c99â€™ or â€˜-std=gnu99â€™), this switch only affects the â€˜asmâ€™
!      and â€˜typeofâ€™ keywords, since â€˜inlineâ€™ is a standard keyword in ISO
!      C99.  In C23 mode (â€˜-std=c23â€™ or â€˜-std=gnu23â€™), this switch only
!      affects the â€˜asmâ€™ keyword, since â€˜typeofâ€™ is a standard keyword in
       ISO C23.
  
! â€˜-fno-builtinâ€™
! â€˜-fno-builtin-FUNCTIONâ€™
       Don't recognize built-in functions that do not begin with
!      â€˜__builtin_â€™ as prefix.  *Note Library Builtins::, for details of
       the functions affected, including those which are not built-in
!      functions when â€˜-ansiâ€™ or â€˜-stdâ€™ options for strict ISO C
       conformance are used because they do not have an ISO standard
       meaning.
  
       GCC normally generates special code to handle certain built-in
!      functions more efficiently; for instance, calls to â€˜allocaâ€™ may
       become single instructions which adjust the stack directly, and
!      calls to â€˜memcpyâ€™ may become inline copy loops.  The resulting code
       is often both smaller and faster, but since the function calls no
       longer appear as such, you cannot set a breakpoint on those calls,
       nor can you change the behavior of the functions by linking with a
*************** accepts:
*** 2889,2932 ****
       warn about problems with calls to that function, or to generate
       more efficient code, even if the resulting code still contains
       calls to that function.  For example, warnings are given with
!      '-Wformat' for bad calls to 'printf' when 'printf' is built in and
!      'strlen' is known not to modify global memory.
  
!      With the '-fno-builtin-FUNCTION' option only the built-in function
!      FUNCTION is disabled.  FUNCTION must not begin with '__builtin_'.
       If a function is named that is not built-in in this version of GCC,
       this option is ignored.  There is no corresponding
!      '-fbuiltin-FUNCTION' option; if you wish to enable built-in
!      functions selectively when using '-fno-builtin' or
!      '-ffreestanding', you may define macros such as:
  
            #define abs(n)          __builtin_abs ((n))
            #define strcpy(d, s)    __builtin_strcpy ((d), (s))
  
! '-fcond-mismatch'
       Allow conditional expressions with mismatched types in the second
       and third arguments.  The value of such an expression is void.
       This option is not supported for C++.
  
! '-ffreestanding'
  
       Assert that compilation targets a freestanding environment.  This
!      implies '-fno-builtin'.  A freestanding environment is one in which
       the standard library may not exist, and program startup may not
!      necessarily be at 'main'.  The most obvious example is an OS
!      kernel.  This is equivalent to '-fno-hosted'.
  
       *Note Language Standards Supported by GCC: Standards, for details
       of freestanding and hosted environments.
  
! '-fgimple'
  
!      Enable parsing of function definitions marked with '__GIMPLE'.
       This is an experimental feature that allows unit testing of GIMPLE
       passes.
  
! '-fgnu-tm'
!      When the option '-fgnu-tm' is specified, the compiler generates
       code for the Linux variant of Intel's current Transactional Memory
       ABI specification document (Revision 1.1, May 6 2009).  This is an
       experimental feature whose interface may change in future versions
--- 2893,2936 ----
       warn about problems with calls to that function, or to generate
       more efficient code, even if the resulting code still contains
       calls to that function.  For example, warnings are given with
!      â€˜-Wformatâ€™ for bad calls to â€˜printfâ€™ when â€˜printfâ€™ is built in and
!      â€˜strlenâ€™ is known not to modify global memory.
  
!      With the â€˜-fno-builtin-FUNCTIONâ€™ option only the built-in function
!      FUNCTION is disabled.  FUNCTION must not begin with â€˜__builtin_â€™.
       If a function is named that is not built-in in this version of GCC,
       this option is ignored.  There is no corresponding
!      â€˜-fbuiltin-FUNCTIONâ€™ option; if you wish to enable built-in
!      functions selectively when using â€˜-fno-builtinâ€™ or
!      â€˜-ffreestandingâ€™, you may define macros such as:
  
            #define abs(n)          __builtin_abs ((n))
            #define strcpy(d, s)    __builtin_strcpy ((d), (s))
  
! â€˜-fcond-mismatchâ€™
       Allow conditional expressions with mismatched types in the second
       and third arguments.  The value of such an expression is void.
       This option is not supported for C++.
  
! â€˜-ffreestandingâ€™
  
       Assert that compilation targets a freestanding environment.  This
!      implies â€˜-fno-builtinâ€™.  A freestanding environment is one in which
       the standard library may not exist, and program startup may not
!      necessarily be at â€˜mainâ€™.  The most obvious example is an OS
!      kernel.  This is equivalent to â€˜-fno-hostedâ€™.
  
       *Note Language Standards Supported by GCC: Standards, for details
       of freestanding and hosted environments.
  
! â€˜-fgimpleâ€™
  
!      Enable parsing of function definitions marked with â€˜__GIMPLEâ€™.
       This is an experimental feature that allows unit testing of GIMPLE
       passes.
  
! â€˜-fgnu-tmâ€™
!      When the option â€˜-fgnu-tmâ€™ is specified, the compiler generates
       code for the Linux variant of Intel's current Transactional Memory
       ABI specification document (Revision 1.1, May 6 2009).  This is an
       experimental feature whose interface may change in future versions
*************** accepts:
*** 2938,2976 ****
       libitm.
  
       Note that the transactional memory feature is not supported with
!      non-call exceptions ('-fnon-call-exceptions').
  
! '-fgnu89-inline'
!      The option '-fgnu89-inline' tells GCC to use the traditional GNU
!      semantics for 'inline' functions when in C99 mode.  *Note An Inline
       Function is As Fast As a Macro: Inline.  Using this option is
!      roughly equivalent to adding the 'gnu_inline' function attribute to
       all inline functions (*note Function Attributes::).
  
!      The option '-fno-gnu89-inline' explicitly tells GCC to use the C99
!      semantics for 'inline' when in C99 or gnu99 mode (i.e., it
       specifies the default behavior).  This option is not supported in
!      '-std=c90' or '-std=gnu90' mode.
  
!      The preprocessor macros '__GNUC_GNU_INLINE__' and
!      '__GNUC_STDC_INLINE__' may be used to check which semantics are in
!      effect for 'inline' functions.  *Note (cpp)Common Predefined
       Macros::.
  
! '-fhosted'
  
       Assert that compilation targets a hosted environment.  This implies
!      '-fbuiltin'.  A hosted environment is one in which the entire
!      standard library is available, and in which 'main' has a return
!      type of 'int'.  Examples are nearly everything except a kernel.
!      This is equivalent to '-fno-freestanding'.
  
! '-flax-vector-conversions'
       Allow implicit conversions between vectors with differing numbers
       of elements and/or incompatible element types.  This option should
       not be used for new code.
  
! '-fms-extensions'
       Accept some non-standard constructs used in Microsoft header files.
  
       In C++ code, this allows member names in structures to be similar
--- 2942,2980 ----
       libitm.
  
       Note that the transactional memory feature is not supported with
!      non-call exceptions (â€˜-fnon-call-exceptionsâ€™).
  
! â€˜-fgnu89-inlineâ€™
!      The option â€˜-fgnu89-inlineâ€™ tells GCC to use the traditional GNU
!      semantics for â€˜inlineâ€™ functions when in C99 mode.  *Note An Inline
       Function is As Fast As a Macro: Inline.  Using this option is
!      roughly equivalent to adding the â€˜gnu_inlineâ€™ function attribute to
       all inline functions (*note Function Attributes::).
  
!      The option â€˜-fno-gnu89-inlineâ€™ explicitly tells GCC to use the C99
!      semantics for â€˜inlineâ€™ when in C99 or gnu99 mode (i.e., it
       specifies the default behavior).  This option is not supported in
!      â€˜-std=c90â€™ or â€˜-std=gnu90â€™ mode.
  
!      The preprocessor macros â€˜__GNUC_GNU_INLINE__â€™ and
!      â€˜__GNUC_STDC_INLINE__â€™ may be used to check which semantics are in
!      effect for â€˜inlineâ€™ functions.  *Note (cpp)Common Predefined
       Macros::.
  
! â€˜-fhostedâ€™
  
       Assert that compilation targets a hosted environment.  This implies
!      â€˜-fbuiltinâ€™.  A hosted environment is one in which the entire
!      standard library is available, and in which â€˜mainâ€™ has a return
!      type of â€˜intâ€™.  Examples are nearly everything except a kernel.
!      This is equivalent to â€˜-fno-freestandingâ€™.
  
! â€˜-flax-vector-conversionsâ€™
       Allow implicit conversions between vectors with differing numbers
       of elements and/or incompatible element types.  This option should
       not be used for new code.
  
! â€˜-fms-extensionsâ€™
       Accept some non-standard constructs used in Microsoft header files.
  
       In C++ code, this allows member names in structures to be similar
*************** accepts:
*** 2988,3016 ****
       Note that this option is off for all targets except for x86 targets
       using ms-abi.
  
! '-fpermitted-flt-eval-methods=STYLE'
       ISO/IEC TS 18661-3 defines new permissible values for
!      'FLT_EVAL_METHOD' that indicate that operations and constants with
       a semantic type that is an interchange or extended format should be
       evaluated to the precision and range of that type.  These new
       values are a superset of those permitted under C99/C11, which does
       not specify the meaning of other positive values of
!      'FLT_EVAL_METHOD'.  As such, code conforming to C11 may not have
       been written expecting the possibility of the new values.
  
!      '-fpermitted-flt-eval-methods' specifies whether the compiler
!      should allow only the values of 'FLT_EVAL_METHOD' specified in
       C99/C11, or the extended set of values specified in ISO/IEC TS
       18661-3.
  
!      STYLE is either 'c11' or 'ts-18661-3' as appropriate.
  
!      The default when in a standards compliant mode ('-std=c11' or
!      similar) is '-fpermitted-flt-eval-methods=c11'.  The default when
!      in a GNU dialect ('-std=gnu11' or similar) is
!      '-fpermitted-flt-eval-methods=ts-18661-3'.
  
!      The '-fdeps-*' options are used to extract structured dependency
       information for a source.  This involves determining what resources
       provided by other source files will be required to compile the
       source as well as what resources are provided by the source.  This
--- 2992,3020 ----
       Note that this option is off for all targets except for x86 targets
       using ms-abi.
  
! â€˜-fpermitted-flt-eval-methods=STYLEâ€™
       ISO/IEC TS 18661-3 defines new permissible values for
!      â€˜FLT_EVAL_METHODâ€™ that indicate that operations and constants with
       a semantic type that is an interchange or extended format should be
       evaluated to the precision and range of that type.  These new
       values are a superset of those permitted under C99/C11, which does
       not specify the meaning of other positive values of
!      â€˜FLT_EVAL_METHODâ€™.  As such, code conforming to C11 may not have
       been written expecting the possibility of the new values.
  
!      â€˜-fpermitted-flt-eval-methodsâ€™ specifies whether the compiler
!      should allow only the values of â€˜FLT_EVAL_METHODâ€™ specified in
       C99/C11, or the extended set of values specified in ISO/IEC TS
       18661-3.
  
!      STYLE is either â€˜c11â€™ or â€˜ts-18661-3â€™ as appropriate.
  
!      The default when in a standards compliant mode (â€˜-std=c11â€™ or
!      similar) is â€˜-fpermitted-flt-eval-methods=c11â€™.  The default when
!      in a GNU dialect (â€˜-std=gnu11â€™ or similar) is
!      â€˜-fpermitted-flt-eval-methods=ts-18661-3â€™.
  
!      The â€˜-fdeps-*â€™ options are used to extract structured dependency
       information for a source.  This involves determining what resources
       provided by other source files will be required to compile the
       source as well as what resources are provided by the source.  This
*************** accepts:
*** 3019,3124 ****
       rather than requiring such information be reflected within the
       build tools as well.
  
! '-fdeps-file=FILE'
       Where to write structured dependency information.
  
! '-fdeps-format=FORMAT'
!      The format to use for structured dependency information.  'p1689r5'
       is the only supported format right now.  Note that when this
!      argument is specified, the output of '-MF' is stripped of some
       information (namely C++ modules) so that it does not use extended
       makefile syntax not understood by most tools.
  
! '-fdeps-target=FILE'
!      Analogous to '-MT' but for structured dependency information.  This
       indicates the target which will ultimately need any required
       resources and provide any resources extracted from the source that
       may be required by other sources.
  
! '-fplan9-extensions'
       Accept some non-standard constructs used in Plan 9 code.
  
!      This enables '-fms-extensions', permits passing pointers to
       structures with anonymous fields to functions that expect pointers
       to elements of the type of the field, and permits referring to
       anonymous fields declared using a typedef.  *Note Unnamed
       struct/union fields within structs/unions: Unnamed Fields, for
       details.  This is only supported for C, not C++.
  
! '-fsigned-bitfields'
! '-funsigned-bitfields'
! '-fno-signed-bitfields'
! '-fno-unsigned-bitfields'
       These options control whether a bit-field is signed or unsigned,
!      when the declaration does not use either 'signed' or 'unsigned'.
       By default, such a bit-field is signed, because this is consistent:
!      the basic integer types such as 'int' are signed types.
  
! '-fsigned-char'
!      Let the type 'char' be signed, like 'signed char'.
  
!      Note that this is equivalent to '-fno-unsigned-char', which is the
!      negative form of '-funsigned-char'.  Likewise, the option
!      '-fno-signed-char' is equivalent to '-funsigned-char'.
  
! '-funsigned-char'
!      Let the type 'char' be unsigned, like 'unsigned char'.
  
!      Each kind of machine has a default for what 'char' should be.  It
!      is either like 'unsigned char' by default or like 'signed char' by
       default.
  
!      Ideally, a portable program should always use 'signed char' or
!      'unsigned char' when it depends on the signedness of an object.
!      But many programs have been written to use plain 'char' and expect
       it to be signed, or expect it to be unsigned, depending on the
       machines they were written for.  This option, and its inverse, let
       you make such a program work with the opposite default.
  
!      The type 'char' is always a distinct type from each of 'signed
!      char' or 'unsigned char', even though its behavior is always just
       like one of those two.
  
! '-fstrict-flex-arrays (C and C++ only)'
! '-fstrict-flex-arrays=LEVEL (C and C++ only)'
       Control when to treat the trailing array of a structure as a
       flexible array member for the purpose of accessing the elements of
       such an array.  The value of LEVEL controls the level of
       strictness.
  
!      '-fstrict-flex-arrays' is equivalent to '-fstrict-flex-arrays=3',
       which is the strictest; a trailing array is treated as a flexible
       array member only when it is declared as a flexible array member
       per C99 standard onwards.
  
!      The negative form '-fno-strict-flex-arrays' is equivalent to
!      '-fstrict-flex-arrays=0', which is the least strict.  In this case
       all trailing arrays of structures are treated as flexible array
       members.
  
       There are two more levels in between 0 and 3, which are provided to
       support older code that uses the GCC zero-length array extension
!      ('[0]') or one-element array as flexible array members ('[1]').
       When LEVEL is 1, the trailing array is treated as a flexible array
!      member when it is declared as either '[]', '[0]', or '[1]'.  When
       LEVEL is 2, the trailing array is treated as a flexible array
!      member when it is declared as either '[]', or '[0]'.
  
       You can control this behavior for a specific trailing array field
!      of a structure by using the variable attribute 'strict_flex_array'
       attribute (*note Variable Attributes::).
  
!      The '-fstrict_flex_arrays' option interacts with the
!      '-Wstrict-flex-arrays' option.  *Note Warning Options::, for more
       information.
  
! '-fsso-struct=ENDIANNESS'
       Set the default scalar storage order of structures and unions to
!      the specified endianness.  The accepted values are 'big-endian',
!      'little-endian' and 'native' for the native endianness of the
       target (the default).  This option is not supported for C++.
  
!      *Warning:* the '-fsso-struct' switch causes GCC to generate code
       that is not binary compatible with code generated without it if the
       specified endianness is not the native endianness of the target.
  
--- 3023,3128 ----
       rather than requiring such information be reflected within the
       build tools as well.
  
! â€˜-fdeps-file=FILEâ€™
       Where to write structured dependency information.
  
! â€˜-fdeps-format=FORMATâ€™
!      The format to use for structured dependency information.  â€˜p1689r5â€™
       is the only supported format right now.  Note that when this
!      argument is specified, the output of â€˜-MFâ€™ is stripped of some
       information (namely C++ modules) so that it does not use extended
       makefile syntax not understood by most tools.
  
! â€˜-fdeps-target=FILEâ€™
!      Analogous to â€˜-MTâ€™ but for structured dependency information.  This
       indicates the target which will ultimately need any required
       resources and provide any resources extracted from the source that
       may be required by other sources.
  
! â€˜-fplan9-extensionsâ€™
       Accept some non-standard constructs used in Plan 9 code.
  
!      This enables â€˜-fms-extensionsâ€™, permits passing pointers to
       structures with anonymous fields to functions that expect pointers
       to elements of the type of the field, and permits referring to
       anonymous fields declared using a typedef.  *Note Unnamed
       struct/union fields within structs/unions: Unnamed Fields, for
       details.  This is only supported for C, not C++.
  
! â€˜-fsigned-bitfieldsâ€™
! â€˜-funsigned-bitfieldsâ€™
! â€˜-fno-signed-bitfieldsâ€™
! â€˜-fno-unsigned-bitfieldsâ€™
       These options control whether a bit-field is signed or unsigned,
!      when the declaration does not use either â€˜signedâ€™ or â€˜unsignedâ€™.
       By default, such a bit-field is signed, because this is consistent:
!      the basic integer types such as â€˜intâ€™ are signed types.
  
! â€˜-fsigned-charâ€™
!      Let the type â€˜charâ€™ be signed, like â€˜signed charâ€™.
  
!      Note that this is equivalent to â€˜-fno-unsigned-charâ€™, which is the
!      negative form of â€˜-funsigned-charâ€™.  Likewise, the option
!      â€˜-fno-signed-charâ€™ is equivalent to â€˜-funsigned-charâ€™.
  
! â€˜-funsigned-charâ€™
!      Let the type â€˜charâ€™ be unsigned, like â€˜unsigned charâ€™.
  
!      Each kind of machine has a default for what â€˜charâ€™ should be.  It
!      is either like â€˜unsigned charâ€™ by default or like â€˜signed charâ€™ by
       default.
  
!      Ideally, a portable program should always use â€˜signed charâ€™ or
!      â€˜unsigned charâ€™ when it depends on the signedness of an object.
!      But many programs have been written to use plain â€˜charâ€™ and expect
       it to be signed, or expect it to be unsigned, depending on the
       machines they were written for.  This option, and its inverse, let
       you make such a program work with the opposite default.
  
!      The type â€˜charâ€™ is always a distinct type from each of â€˜signed
!      charâ€™ or â€˜unsigned charâ€™, even though its behavior is always just
       like one of those two.
  
! â€˜-fstrict-flex-arrays (C and C++ only)â€™
! â€˜-fstrict-flex-arrays=LEVEL (C and C++ only)â€™
       Control when to treat the trailing array of a structure as a
       flexible array member for the purpose of accessing the elements of
       such an array.  The value of LEVEL controls the level of
       strictness.
  
!      â€˜-fstrict-flex-arraysâ€™ is equivalent to â€˜-fstrict-flex-arrays=3â€™,
       which is the strictest; a trailing array is treated as a flexible
       array member only when it is declared as a flexible array member
       per C99 standard onwards.
  
!      The negative form â€˜-fno-strict-flex-arraysâ€™ is equivalent to
!      â€˜-fstrict-flex-arrays=0â€™, which is the least strict.  In this case
       all trailing arrays of structures are treated as flexible array
       members.
  
       There are two more levels in between 0 and 3, which are provided to
       support older code that uses the GCC zero-length array extension
!      (â€˜[0]â€™) or one-element array as flexible array members (â€˜[1]â€™).
       When LEVEL is 1, the trailing array is treated as a flexible array
!      member when it is declared as either â€˜[]â€™, â€˜[0]â€™, or â€˜[1]â€™.  When
       LEVEL is 2, the trailing array is treated as a flexible array
!      member when it is declared as either â€˜[]â€™, or â€˜[0]â€™.
  
       You can control this behavior for a specific trailing array field
!      of a structure by using the variable attribute â€˜strict_flex_arrayâ€™
       attribute (*note Variable Attributes::).
  
!      The â€˜-fstrict_flex_arraysâ€™ option interacts with the
!      â€˜-Wstrict-flex-arraysâ€™ option.  *Note Warning Options::, for more
       information.
  
! â€˜-fsso-struct=ENDIANNESSâ€™
       Set the default scalar storage order of structures and unions to
!      the specified endianness.  The accepted values are â€˜big-endianâ€™,
!      â€˜little-endianâ€™ and â€˜nativeâ€™ for the native endianness of the
       target (the default).  This option is not supported for C++.
  
!      *Warning:* the â€˜-fsso-structâ€™ switch causes GCC to generate code
       that is not binary compatible with code generated without it if the
       specified endianness is not the native endianness of the target.
  
*************** File: gcc.info,  Node: C++ Dialect Optio
*** 3131,3151 ****
  This section describes the command-line options that are only meaningful
  for C++ programs.  You can also use most of the GNU compiler options
  regardless of what language your program is in.  For example, you might
! compile a file 'firstClass.C' like this:
  
       g++ -g -fstrict-enums -O -c firstClass.C
  
! In this example, only '-fstrict-enums' is an option meant only for C++
  programs; you can use the other options with any language supported by
  GCC.
  
!  Some options for compiling C programs, such as '-std', are also
  relevant for C++ programs.  *Note Options Controlling C Dialect: C
  Dialect Options.
  
   Here is a list of options that are _only_ for compiling C++ programs:
  
! '-fabi-version=N'
       Use version N of the C++ ABI.  The default is version 0.
  
       Version 0 refers to the version conforming most closely to the C++
--- 3135,3155 ----
  This section describes the command-line options that are only meaningful
  for C++ programs.  You can also use most of the GNU compiler options
  regardless of what language your program is in.  For example, you might
! compile a file â€˜firstClass.Câ€™ like this:
  
       g++ -g -fstrict-enums -O -c firstClass.C
  
! In this example, only â€˜-fstrict-enumsâ€™ is an option meant only for C++
  programs; you can use the other options with any language supported by
  GCC.
  
!  Some options for compiling C programs, such as â€˜-stdâ€™, are also
  relevant for C++ programs.  *Note Options Controlling C Dialect: C
  Dialect Options.
  
   Here is a list of options that are _only_ for compiling C++ programs:
  
! â€˜-fabi-version=Nâ€™
       Use version N of the C++ ABI.  The default is version 0.
  
       Version 0 refers to the version conforming most closely to the C++
*************** Dialect Options.
*** 3183,3199 ****
       function-cv-qualifiers.
  
       Version 9, which first appeared in G++ 5.2, corrects the alignment
!      of 'nullptr_t'.
  
       Version 10, which first appeared in G++ 6.1, adds mangling of
       attributes that affect type identity, such as ia32 calling
!      convention attributes (e.g. 'stdcall').
  
       Version 11, which first appeared in G++ 7, corrects the mangling of
       sizeof...  expressions and operator names.  For multiple entities
       with the same name within a function, that are declared in
       different scopes, the mangling now changes starting with the
!      twelfth occurrence.  It also implies '-fnew-inheriting-ctors'.
  
       Version 12, which first appeared in G++ 8, corrects the calling
       conventions for empty classes on the x86_64 target and for classes
--- 3187,3203 ----
       function-cv-qualifiers.
  
       Version 9, which first appeared in G++ 5.2, corrects the alignment
!      of â€˜nullptr_tâ€™.
  
       Version 10, which first appeared in G++ 6.1, adds mangling of
       attributes that affect type identity, such as ia32 calling
!      convention attributes (e.g. â€˜stdcallâ€™).
  
       Version 11, which first appeared in G++ 7, corrects the mangling of
       sizeof...  expressions and operator names.  For multiple entities
       with the same name within a function, that are declared in
       different scopes, the mangling now changes starting with the
!      twelfth occurrence.  It also implies â€˜-fnew-inheriting-ctorsâ€™.
  
       Version 12, which first appeared in G++ 8, corrects the calling
       conventions for empty classes on the x86_64 target and for classes
*************** Dialect Options.
*** 3211,3217 ****
       tag regression.
  
       Version 16, which first appeared in G++ 11, changes the mangling of
!      '__alignof__' to be distinct from that of 'alignof', and dependent
       operator names.
  
       Version 17, which first appeared in G++ 12, fixes layout of classes
--- 3215,3221 ----
       tag regression.
  
       Version 16, which first appeared in G++ 11, changes the mangling of
!      â€˜__alignof__â€™ to be distinct from that of â€˜alignofâ€™, and dependent
       operator names.
  
       Version 17, which first appeared in G++ 12, fixes layout of classes
*************** Dialect Options.
*** 3227,3297 ****
       Version 20, which first appeared in G++ 15, fixes manglings of
       lambdas in static data member initializers.
  
!      See also '-Wabi'.
  
! '-fabi-compat-version=N'
       On targets that support strong aliases, G++ works around mangling
       changes by creating an alias with the correct mangled name when
       defining a symbol with an incorrect mangled name.  This switch
       specifies which ABI version to use for the alias.
  
!      With '-fabi-version=0' (the default), this defaults to 13 (GCC 8.2
       compatibility).  If another ABI version is explicitly selected,
       this defaults to 0.  For compatibility with GCC versions 3.2
!      through 4.9, use '-fabi-compat-version=2'.
  
!      If this option is not provided but '-Wabi=N' is, that version is
       used for compatibility aliases.  If this option is provided along
!      with '-Wabi' (without the version), the version from this option is
       used for the warning.
  
! '-fno-access-control'
       Turn off all access checking.  This switch is mainly useful for
       working around bugs in the access control code.
  
! '-faligned-new'
!      Enable support for C++17 'new' of types that require more alignment
!      than 'void* ::operator new(std::size_t)' provides.  A numeric
!      argument such as '-faligned-new=32' can be used to specify how much
       alignment (in bytes) is provided by that function, but few users
!      will need to override the default of 'alignof(std::max_align_t)'.
  
!      This flag is enabled by default for '-std=c++17'.
  
! '-fno-assume-sane-operators-new'
!      The C++ standard allows replacing the global 'new', 'new[]',
!      'delete' and 'delete[]' operators, though a lot of C++ programs
       don't replace them and just use the implementation provided
       version.  Furthermore, the C++ standard allows omitting those calls
       if they are made from new or delete expressions (and by extension
!      the same is assumed if '__builtin_operator_new' or
!      '__builtin_operator_delete' functions are used).  This option
       allows control over some optimizations around calls to those
!      operators.  With '-fassume-sane-operators-new-delete' option GCC
       may assume that calls to the replaceable global operators from new
!      or delete expressions or from '__builtin_operator_new' or
!      '__builtin_operator_delete' calls don't read or modify any global
       variables or variables whose address could escape to the operators
!      (global state; except for 'errno' for the 'new' and 'new[]'
       operators).  This allows most optimizations across those calls and
       is something that the implementation provided operators satisfy
!      unless 'malloc' implementation details are observable in the code
!      or unless 'malloc' hooks are used, but might not be satisfied if a
       program replaces those operators.  This behavior is enabled by
!      default.  With '-fno-assume-sane-operators-new-delete' option GCC
       must assume all these calls (whether from new or delete expressions
       or called directly) may read and write global state unless proven
       otherwise (e.g. when GCC compiles their implementation).  Use this
       option if those operators are or may be replaced and code needs to
       expect such behavior.
  
! '-fchar8_t'
! '-fno-char8_t'
!      Enable support for 'char8_t' as adopted for C++20.  This includes
!      the addition of a new 'char8_t' fundamental type, changes to the
       types of UTF-8 string and character literals, new signatures for
       user-defined literals, associated standard library updates, and new
!      '__cpp_char8_t' and '__cpp_lib_char8_t' feature test macros.
  
       This option enables functions to be overloaded for ordinary and
       UTF-8 strings:
--- 3231,3301 ----
       Version 20, which first appeared in G++ 15, fixes manglings of
       lambdas in static data member initializers.
  
!      See also â€˜-Wabiâ€™.
  
! â€˜-fabi-compat-version=Nâ€™
       On targets that support strong aliases, G++ works around mangling
       changes by creating an alias with the correct mangled name when
       defining a symbol with an incorrect mangled name.  This switch
       specifies which ABI version to use for the alias.
  
!      With â€˜-fabi-version=0â€™ (the default), this defaults to 13 (GCC 8.2
       compatibility).  If another ABI version is explicitly selected,
       this defaults to 0.  For compatibility with GCC versions 3.2
!      through 4.9, use â€˜-fabi-compat-version=2â€™.
  
!      If this option is not provided but â€˜-Wabi=Nâ€™ is, that version is
       used for compatibility aliases.  If this option is provided along
!      with â€˜-Wabiâ€™ (without the version), the version from this option is
       used for the warning.
  
! â€˜-fno-access-controlâ€™
       Turn off all access checking.  This switch is mainly useful for
       working around bugs in the access control code.
  
! â€˜-faligned-newâ€™
!      Enable support for C++17 â€˜newâ€™ of types that require more alignment
!      than â€˜void* ::operator new(std::size_t)â€™ provides.  A numeric
!      argument such as â€˜-faligned-new=32â€™ can be used to specify how much
       alignment (in bytes) is provided by that function, but few users
!      will need to override the default of â€˜alignof(std::max_align_t)â€™.
  
!      This flag is enabled by default for â€˜-std=c++17â€™.
  
! â€˜-fno-assume-sane-operators-newâ€™
!      The C++ standard allows replacing the global â€˜newâ€™, â€˜new[]â€™,
!      â€˜deleteâ€™ and â€˜delete[]â€™ operators, though a lot of C++ programs
       don't replace them and just use the implementation provided
       version.  Furthermore, the C++ standard allows omitting those calls
       if they are made from new or delete expressions (and by extension
!      the same is assumed if â€˜__builtin_operator_newâ€™ or
!      â€˜__builtin_operator_deleteâ€™ functions are used).  This option
       allows control over some optimizations around calls to those
!      operators.  With â€˜-fassume-sane-operators-new-deleteâ€™ option GCC
       may assume that calls to the replaceable global operators from new
!      or delete expressions or from â€˜__builtin_operator_newâ€™ or
!      â€˜__builtin_operator_deleteâ€™ calls don't read or modify any global
       variables or variables whose address could escape to the operators
!      (global state; except for â€˜errnoâ€™ for the â€˜newâ€™ and â€˜new[]â€™
       operators).  This allows most optimizations across those calls and
       is something that the implementation provided operators satisfy
!      unless â€˜mallocâ€™ implementation details are observable in the code
!      or unless â€˜mallocâ€™ hooks are used, but might not be satisfied if a
       program replaces those operators.  This behavior is enabled by
!      default.  With â€˜-fno-assume-sane-operators-new-deleteâ€™ option GCC
       must assume all these calls (whether from new or delete expressions
       or called directly) may read and write global state unless proven
       otherwise (e.g. when GCC compiles their implementation).  Use this
       option if those operators are or may be replaced and code needs to
       expect such behavior.
  
! â€˜-fchar8_tâ€™
! â€˜-fno-char8_tâ€™
!      Enable support for â€˜char8_tâ€™ as adopted for C++20.  This includes
!      the addition of a new â€˜char8_tâ€™ fundamental type, changes to the
       types of UTF-8 string and character literals, new signatures for
       user-defined literals, associated standard library updates, and new
!      â€˜__cpp_char8_tâ€™ and â€˜__cpp_lib_char8_tâ€™ feature test macros.
  
       This option enables functions to be overloaded for ordinary and
       UTF-8 strings:
*************** Dialect Options.
*** 3313,3319 ****
       The change to the types of UTF-8 string and character literals
       introduces incompatibilities with ISO C++11 and later standards.
       For example, the following code is well-formed under ISO C++11, but
!      is ill-formed when '-fchar8_t' is specified.
  
            const char *cp = u8"xx";// error: invalid conversion from
                                    //        `const char8_t*' to `const char*'
--- 3317,3323 ----
       The change to the types of UTF-8 string and character literals
       introduces incompatibilities with ISO C++11 and later standards.
       For example, the following code is well-formed under ISO C++11, but
!      is ill-formed when â€˜-fchar8_tâ€™ is specified.
  
            const char *cp = u8"xx";// error: invalid conversion from
                                    //        `const char8_t*' to `const char*'
*************** Dialect Options.
*** 3327,3361 ****
                                    //        `basic_string<char8_t>' to non-scalar
                                    //        type `basic_string<char>' requested
  
! '-fcheck-new'
!      Check that the pointer returned by 'operator new' is non-null
       before attempting to modify the storage allocated.  This check is
       normally unnecessary because the C++ standard specifies that
!      'operator new' only returns '0' if it is declared 'throw()', in
       which case the compiler always checks the return value even without
!      this option.  In all other cases, when 'operator new' has a
       non-empty exception specification, memory exhaustion is signalled
!      by throwing 'std::bad_alloc'.  See also 'new (nothrow)'.
  
! '-fconcepts'
       Enable support for the C++ Concepts feature for constraining
!      template arguments.  With '-std=c++20' and above, Concepts are part
!      of the language standard, so '-fconcepts' defaults to on.
  
       Some constructs that were allowed by the earlier C++ Extensions for
       Concepts Technical Specification, ISO 19217 (2015), but didn't make
       it into the standard, could additionally be enabled by
!      '-fconcepts-ts'.  The option '-fconcepts-ts' was deprecated in GCC
       14 and removed in GCC 15; users are expected to convert their code
       to C++20 concepts.
  
! '-fconstexpr-depth=N'
       Set the maximum nested evaluation depth for C++11 constexpr
       functions to N.  A limit is needed to detect endless recursion
       during constant expression evaluation.  The minimum specified by
       the standard is 512.
  
! '-fconstexpr-cache-depth=N'
       Set the maximum level of nested evaluation depth for C++11
       constexpr functions that will be cached to N.  This is a heuristic
       that trades off compilation speed (when the cache avoids repeated
--- 3331,3365 ----
                                    //        `basic_string<char8_t>' to non-scalar
                                    //        type `basic_string<char>' requested
  
! â€˜-fcheck-newâ€™
!      Check that the pointer returned by â€˜operator newâ€™ is non-null
       before attempting to modify the storage allocated.  This check is
       normally unnecessary because the C++ standard specifies that
!      â€˜operator newâ€™ only returns â€˜0â€™ if it is declared â€˜throw()â€™, in
       which case the compiler always checks the return value even without
!      this option.  In all other cases, when â€˜operator newâ€™ has a
       non-empty exception specification, memory exhaustion is signalled
!      by throwing â€˜std::bad_allocâ€™.  See also â€˜new (nothrow)â€™.
  
! â€˜-fconceptsâ€™
       Enable support for the C++ Concepts feature for constraining
!      template arguments.  With â€˜-std=c++20â€™ and above, Concepts are part
!      of the language standard, so â€˜-fconceptsâ€™ defaults to on.
  
       Some constructs that were allowed by the earlier C++ Extensions for
       Concepts Technical Specification, ISO 19217 (2015), but didn't make
       it into the standard, could additionally be enabled by
!      â€˜-fconcepts-tsâ€™.  The option â€˜-fconcepts-tsâ€™ was deprecated in GCC
       14 and removed in GCC 15; users are expected to convert their code
       to C++20 concepts.
  
! â€˜-fconstexpr-depth=Nâ€™
       Set the maximum nested evaluation depth for C++11 constexpr
       functions to N.  A limit is needed to detect endless recursion
       during constant expression evaluation.  The minimum specified by
       the standard is 512.
  
! â€˜-fconstexpr-cache-depth=Nâ€™
       Set the maximum level of nested evaluation depth for C++11
       constexpr functions that will be cached to N.  This is a heuristic
       that trades off compilation speed (when the cache avoids repeated
*************** Dialect Options.
*** 3365,3371 ****
       heavy constexpr calculations you might want to experiment to find
       which value works best for you.
  
! '-fconstexpr-fp-except'
       Annex F of the C standard specifies that IEC559 floating point
       exceptions encountered at compile time should not stop compilation.
       C++ compilers have historically not followed this guidance, instead
--- 3369,3375 ----
       heavy constexpr calculations you might want to experiment to find
       which value works best for you.
  
! â€˜-fconstexpr-fp-exceptâ€™
       Annex F of the C standard specifies that IEC559 floating point
       exceptions encountered at compile time should not stop compilation.
       C++ compilers have historically not followed this guidance, instead
*************** Dialect Options.
*** 3376,3387 ****
  
            constexpr float inf = 1./0.; // OK with -fconstexpr-fp-except
  
! '-fconstexpr-loop-limit=N'
       Set the maximum number of iterations for a loop in C++14 constexpr
       functions to N.  A limit is needed to detect infinite loops during
       constant expression evaluation.  The default is 262144 (1<<18).
  
! '-fconstexpr-ops-limit=N'
       Set the maximum number of operations during a single constexpr
       evaluation.  Even when number of iterations of a single loop is
       limited with the above limit, if there are several nested loops and
--- 3380,3391 ----
  
            constexpr float inf = 1./0.; // OK with -fconstexpr-fp-except
  
! â€˜-fconstexpr-loop-limit=Nâ€™
       Set the maximum number of iterations for a loop in C++14 constexpr
       functions to N.  A limit is needed to detect infinite loops during
       constant expression evaluation.  The default is 262144 (1<<18).
  
! â€˜-fconstexpr-ops-limit=Nâ€™
       Set the maximum number of operations during a single constexpr
       evaluation.  Even when number of iterations of a single loop is
       limited with the above limit, if there are several nested loops and
*************** Dialect Options.
*** 3390,3396 ****
       many expressions need to be evaluated, the resulting constexpr
       evaluation might take too long.  The default is 33554432 (1<<25).
  
! '-fcontracts'
       Enable experimental support for the C++ Contracts feature, as
       briefly added to and then removed from the C++20 working paper
       (N4820).  The implementation also includes proposed enhancements
--- 3394,3400 ----
       many expressions need to be evaluated, the resulting constexpr
       evaluation might take too long.  The default is 33554432 (1<<25).
  
! â€˜-fcontractsâ€™
       Enable experimental support for the C++ Contracts feature, as
       briefly added to and then removed from the C++20 working paper
       (N4820).  The implementation also includes proposed enhancements
*************** Dialect Options.
*** 3409,3474 ****
       N4820 contracts, P1332 contracts, or P1429 contracts; these sets
       cannot be used together.
  
!      '-fcontract-mode=[on|off]'
            Control whether any contracts have any semantics at all.
            Defaults to on.
  
!      '-fcontract-assumption-mode=[on|off]'
!           [N4820] Control whether contracts with level 'axiom' should
            have the assume semantic.  Defaults to on.
  
!      '-fcontract-build-level=[off|default|audit]'
            [N4820] Specify which level of contracts to generate checks
!           for.  Defaults to 'default'.
  
!      '-fcontract-continuation-mode=[on|off]'
            [N4820] Control whether to allow the program to continue
            executing after a contract violation.  That is, do checked
!           contracts have the 'maybe' semantic described below rather
!           than the 'never' semantic.  Defaults to off.
  
!      '-fcontract-role=<name>:<default>,<audit>,<axiom>'
            [P1332] Specify the concrete semantics for each contract level
            of a particular contract role.
  
!      '-fcontract-semantic=[default|audit|axiom]:<semantic>'
            [P1429] Specify the concrete semantic for a particular
            contract level.
  
!      '-fcontract-strict-declarations=[on|off]'
            Control whether to reject adding contracts to a function after
            its first declaration.  Defaults to off.
  
       The possible concrete semantics for that can be specified with
!      '-fcontract-role' or '-fcontract-semantic' are:
  
!      'ignore'
            This contract has no effect.
  
!      'assume'
!           This contract is treated like C++23 '[[assume]]'.
  
!      'check_never_continue'
!      'never'
!      'abort'
            This contract is checked.  If it fails, the violation handler
!           is called.  If the handler returns, 'std::terminate' is
            called.
  
!      'check_maybe_continue'
!      'maybe'
            This contract is checked.  If it fails, the violation handler
            is called.  If the handler returns, execution continues
            normally.
  
! '-fcoroutines'
       Enable support for the C++ coroutines extension (experimental).
  
! '-fdiagnostics-all-candidates'
       Permit the C++ front end to note all candidates during overload
       resolution failure, including when a deleted function is selected.
  
! '-fno-elide-constructors'
       The C++ standard allows an implementation to omit creating a
       temporary that is only used to initialize another object of the
       same type.  Specifying this option disables that optimization, and
--- 3413,3478 ----
       N4820 contracts, P1332 contracts, or P1429 contracts; these sets
       cannot be used together.
  
!      â€˜-fcontract-mode=[on|off]â€™
            Control whether any contracts have any semantics at all.
            Defaults to on.
  
!      â€˜-fcontract-assumption-mode=[on|off]â€™
!           [N4820] Control whether contracts with level â€˜axiomâ€™ should
            have the assume semantic.  Defaults to on.
  
!      â€˜-fcontract-build-level=[off|default|audit]â€™
            [N4820] Specify which level of contracts to generate checks
!           for.  Defaults to â€˜defaultâ€™.
  
!      â€˜-fcontract-continuation-mode=[on|off]â€™
            [N4820] Control whether to allow the program to continue
            executing after a contract violation.  That is, do checked
!           contracts have the â€˜maybeâ€™ semantic described below rather
!           than the â€˜neverâ€™ semantic.  Defaults to off.
  
!      â€˜-fcontract-role=<name>:<default>,<audit>,<axiom>â€™
            [P1332] Specify the concrete semantics for each contract level
            of a particular contract role.
  
!      â€˜-fcontract-semantic=[default|audit|axiom]:<semantic>â€™
            [P1429] Specify the concrete semantic for a particular
            contract level.
  
!      â€˜-fcontract-strict-declarations=[on|off]â€™
            Control whether to reject adding contracts to a function after
            its first declaration.  Defaults to off.
  
       The possible concrete semantics for that can be specified with
!      â€˜-fcontract-roleâ€™ or â€˜-fcontract-semanticâ€™ are:
  
!      â€˜ignoreâ€™
            This contract has no effect.
  
!      â€˜assumeâ€™
!           This contract is treated like C++23 â€˜[[assume]]â€™.
  
!      â€˜check_never_continueâ€™
!      â€˜neverâ€™
!      â€˜abortâ€™
            This contract is checked.  If it fails, the violation handler
!           is called.  If the handler returns, â€˜std::terminateâ€™ is
            called.
  
!      â€˜check_maybe_continueâ€™
!      â€˜maybeâ€™
            This contract is checked.  If it fails, the violation handler
            is called.  If the handler returns, execution continues
            normally.
  
! â€˜-fcoroutinesâ€™
       Enable support for the C++ coroutines extension (experimental).
  
! â€˜-fdiagnostics-all-candidatesâ€™
       Permit the C++ front end to note all candidates during overload
       resolution failure, including when a deleted function is selected.
  
! â€˜-fno-elide-constructorsâ€™
       The C++ standard allows an implementation to omit creating a
       temporary that is only used to initialize another object of the
       same type.  Specifying this option disables that optimization, and
*************** Dialect Options.
*** 3479,3497 ****
       In C++17, the compiler is required to omit these temporaries, but
       this option still affects trivial member functions.
  
! '-fno-enforce-eh-specs'
       Don't generate code to check for violation of exception
       specifications at run time.  This option violates the C++ standard,
       but may be useful for reducing code size in production builds, much
!      like defining 'NDEBUG'.  This does not give user code permission to
       throw exceptions in violation of the exception specifications; the
       compiler still optimizes based on the specifications, so throwing
       an unexpected exception results in undefined behavior at run time.
  
! '-fextern-tls-init'
! '-fno-extern-tls-init'
!      The C++11 and OpenMP standards allow 'thread_local' and
!      'threadprivate' variables to have dynamic (runtime) initialization.
       To support this, any use of such a variable goes through a wrapper
       function that performs any necessary initialization.  When the use
       and definition of the variable are in the same translation unit,
--- 3483,3501 ----
       In C++17, the compiler is required to omit these temporaries, but
       this option still affects trivial member functions.
  
! â€˜-fno-enforce-eh-specsâ€™
       Don't generate code to check for violation of exception
       specifications at run time.  This option violates the C++ standard,
       but may be useful for reducing code size in production builds, much
!      like defining â€˜NDEBUGâ€™.  This does not give user code permission to
       throw exceptions in violation of the exception specifications; the
       compiler still optimizes based on the specifications, so throwing
       an unexpected exception results in undefined behavior at run time.
  
! â€˜-fextern-tls-initâ€™
! â€˜-fno-extern-tls-initâ€™
!      The C++11 and OpenMP standards allow â€˜thread_localâ€™ and
!      â€˜threadprivateâ€™ variables to have dynamic (runtime) initialization.
       To support this, any use of such a variable goes through a wrapper
       function that performs any necessary initialization.  When the use
       and definition of the variable are in the same translation unit,
*************** Dialect Options.
*** 3503,3529 ****
       because the variable is statically initialized, or a use of the
       variable in the defining TU will be executed before any uses in
       another TU), they can avoid this overhead with the
!      '-fno-extern-tls-init' option.
  
       On targets that support symbol aliases, the default is
!      '-fextern-tls-init'.  On targets that do not support symbol
!      aliases, the default is '-fno-extern-tls-init'.
  
! '-ffold-simple-inlines'
! '-fno-fold-simple-inlines'
!      Permit the C++ frontend to fold calls to 'std::move',
!      'std::forward', 'std::addressof' and 'std::as_const'.  In contrast
       to inlining, this means no debug information will be generated for
       such calls.  Since these functions are rarely interesting to debug,
!      this flag is enabled by default unless '-fno-inline' is active.
  
! '-fno-gnu-keywords'
!      Do not recognize 'typeof' as a keyword, so that code can use this
!      word as an identifier.  You can use the keyword '__typeof__'
       instead.  This option is implied by the strict ISO C++ dialects:
!      '-ansi', '-std=c++98', '-std=c++11', etc.
  
! '-fno-immediate-escalation'
       Do not enable immediate function escalation whereby certain
       functions can be promoted to consteval, as specified in P2564R3.
       For example:
--- 3507,3533 ----
       because the variable is statically initialized, or a use of the
       variable in the defining TU will be executed before any uses in
       another TU), they can avoid this overhead with the
!      â€˜-fno-extern-tls-initâ€™ option.
  
       On targets that support symbol aliases, the default is
!      â€˜-fextern-tls-initâ€™.  On targets that do not support symbol
!      aliases, the default is â€˜-fno-extern-tls-initâ€™.
  
! â€˜-ffold-simple-inlinesâ€™
! â€˜-fno-fold-simple-inlinesâ€™
!      Permit the C++ frontend to fold calls to â€˜std::moveâ€™,
!      â€˜std::forwardâ€™, â€˜std::addressofâ€™ and â€˜std::as_constâ€™.  In contrast
       to inlining, this means no debug information will be generated for
       such calls.  Since these functions are rarely interesting to debug,
!      this flag is enabled by default unless â€˜-fno-inlineâ€™ is active.
  
! â€˜-fno-gnu-keywordsâ€™
!      Do not recognize â€˜typeofâ€™ as a keyword, so that code can use this
!      word as an identifier.  You can use the keyword â€˜__typeof__â€™
       instead.  This option is implied by the strict ISO C++ dialects:
!      â€˜-ansiâ€™, â€˜-std=c++98â€™, â€˜-std=c++11â€™, etc.
  
! â€˜-fno-immediate-escalationâ€™
       Do not enable immediate function escalation whereby certain
       functions can be promoted to consteval, as specified in P2564R3.
       For example:
*************** Dialect Options.
*** 3540,3565 ****
              f (3);
            }
  
!      compiles in C++20: 'f' is an immediate-escalating function (due to
!      the 'auto' it is a function template and is declared 'constexpr')
!      and 'id(t)' is an immediate-escalating expression, so 'f' is
!      promoted to 'consteval'.  Consequently, the call to 'id(t)' is in
       an immediate context, so doesn't have to produce a constant (that
       is the mechanism allowing consteval function composition).
!      However, with '-fno-immediate-escalation', 'f' is not promoted to
!      'consteval', and since the call to consteval function 'id(t)' is
       not a constant expression, the compiler rejects the code.
  
       This option is turned on by default; it is only effective in C++20
       mode or later.
  
! '-fimplicit-constexpr'
       Make inline functions implicitly constexpr, if they satisfy the
       requirements for a constexpr function.  This option can be used in
       C++14 mode or later.  This can result in initialization changing
       from dynamic to static and other optimizations.
  
! '-fno-implicit-templates'
       Never emit code for non-inline templates that are instantiated
       implicitly (i.e. by use); only emit code for explicit
       instantiations.  If you use this option, you must take care to
--- 3544,3569 ----
              f (3);
            }
  
!      compiles in C++20: â€˜fâ€™ is an immediate-escalating function (due to
!      the â€˜autoâ€™ it is a function template and is declared â€˜constexprâ€™)
!      and â€˜id(t)â€™ is an immediate-escalating expression, so â€˜fâ€™ is
!      promoted to â€˜constevalâ€™.  Consequently, the call to â€˜id(t)â€™ is in
       an immediate context, so doesn't have to produce a constant (that
       is the mechanism allowing consteval function composition).
!      However, with â€˜-fno-immediate-escalationâ€™, â€˜fâ€™ is not promoted to
!      â€˜constevalâ€™, and since the call to consteval function â€˜id(t)â€™ is
       not a constant expression, the compiler rejects the code.
  
       This option is turned on by default; it is only effective in C++20
       mode or later.
  
! â€˜-fimplicit-constexprâ€™
       Make inline functions implicitly constexpr, if they satisfy the
       requirements for a constexpr function.  This option can be used in
       C++14 mode or later.  This can result in initialization changing
       from dynamic to static and other optimizations.
  
! â€˜-fno-implicit-templatesâ€™
       Never emit code for non-inline templates that are instantiated
       implicitly (i.e. by use); only emit code for explicit
       instantiations.  If you use this option, you must take care to
*************** Dialect Options.
*** 3567,3596 ****
       instantiations to avoid getting undefined symbols at link time.
       *Note Template Instantiation::, for more information.
  
! '-fno-implicit-inline-templates'
       Don't emit code for implicit instantiations of inline templates,
       either.  The default is to handle inlines differently so that
       compiles with and without optimization need the same set of
       explicit instantiations.
  
! '-fno-implement-inlines'
       To save space, do not emit out-of-line copies of inline functions
!      controlled by '#pragma implementation'.  This causes linker errors
       if these functions are not inlined everywhere they are called.
  
! '-fmodules'
! '-fno-modules'
       Enable support for C++20 modules (*note C++ Modules::).  The
!      '-fno-modules' is usually not needed, as that is the default.  Even
       though this is a C++20 feature, it is not currently implicitly
       enabled by selecting that standard version.
  
! '-fmodule-header'
! '-fmodule-header=user'
! '-fmodule-header=system'
       Compile a header file to create an importable header unit.
  
! '-fmodule-implicit-inline'
       Member functions defined in their class definitions are not
       implicitly inline for modular code.  This is different to
       traditional C++ behavior, for good reasons.  However, it may result
--- 3571,3600 ----
       instantiations to avoid getting undefined symbols at link time.
       *Note Template Instantiation::, for more information.
  
! â€˜-fno-implicit-inline-templatesâ€™
       Don't emit code for implicit instantiations of inline templates,
       either.  The default is to handle inlines differently so that
       compiles with and without optimization need the same set of
       explicit instantiations.
  
! â€˜-fno-implement-inlinesâ€™
       To save space, do not emit out-of-line copies of inline functions
!      controlled by â€˜#pragma implementationâ€™.  This causes linker errors
       if these functions are not inlined everywhere they are called.
  
! â€˜-fmodulesâ€™
! â€˜-fno-modulesâ€™
       Enable support for C++20 modules (*note C++ Modules::).  The
!      â€˜-fno-modulesâ€™ is usually not needed, as that is the default.  Even
       though this is a C++20 feature, it is not currently implicitly
       enabled by selecting that standard version.
  
! â€˜-fmodule-headerâ€™
! â€˜-fmodule-header=userâ€™
! â€˜-fmodule-header=systemâ€™
       Compile a header file to create an importable header unit.
  
! â€˜-fmodule-implicit-inlineâ€™
       Member functions defined in their class definitions are not
       implicitly inline for modular code.  This is different to
       traditional C++ behavior, for good reasons.  However, it may result
*************** Dialect Options.
*** 3600,3710 ****
       (Such definitions outside of a named module remain implicitly
       inline, regardless.)
  
! '-fno-module-lazy'
       Disable lazy module importing and module mapper creation.
  
! '-fmodule-mapper=[HOSTNAME]:PORT[?IDENT]'
! '-fmodule-mapper=|PROGRAM[?IDENT] ARGS...'
! '-fmodule-mapper==SOCKET[?IDENT]'
! '-fmodule-mapper=<>[INOUT][?IDENT]'
! '-fmodule-mapper=<IN>OUT[?IDENT]'
! '-fmodule-mapper=FILE[?IDENT]'
       An oracle to query for module name to filename mappings.  If
!      unspecified the 'CXX_MODULE_MAPPER' environment variable is used,
       and if that is unset, an in-process default is provided.
  
! '-fmodule-only'
       Only emit the Compiled Module Interface, inhibiting any object
       file.
  
! '-fms-extensions'
       Disable Wpedantic warnings about constructs used in MFC, such as
       implicit int and getting a pointer to member function via
       non-standard syntax.
  
! '-fnew-inheriting-ctors'
       Enable the P0136 adjustment to the semantics of C++11 constructor
       inheritance.  This is part of C++17 but also considered to be a
       Defect Report against C++11 and C++14.  This flag is enabled by
!      default unless '-fabi-version=10' or lower is specified.
  
! '-fnew-ttp-matching'
       Enable the P0522 resolution to Core issue 150, template template
       parameters and default arguments: this allows a template with
       default template arguments as an argument for a template template
       parameter with fewer template parameters.  This flag is enabled by
!      default for '-std=c++17'.
  
! '-fno-nonansi-builtins'
       Disable built-in declarations of functions that are not mandated by
!      ANSI/ISO C.  These include 'ffs', 'alloca', '_exit', 'index',
!      'bzero', 'conjf', and other related functions.
  
! '-fnothrow-opt'
!      Treat a 'throw()' exception specification as if it were a
!      'noexcept' specification to reduce or eliminate the text size
       overhead relative to a function with no exception specification.
       If the function has local variables of types with non-trivial
       destructors, the exception specification actually makes the
       function smaller because the EH cleanups for those variables can be
       optimized away.  The semantic effect is that an exception thrown
       out of a function with such an exception specification results in a
!      call to 'terminate' rather than 'unexpected'.
  
! '-fno-operator-names'
!      Do not treat the operator name keywords 'and', 'bitand', 'bitor',
!      'compl', 'not', 'or' and 'xor' as synonyms as keywords.
  
! '-fno-optional-diags'
       Disable diagnostics that the standard says a compiler does not need
       to issue.  Currently, the only such diagnostic issued by G++ is the
       one for a name having multiple meanings within a class.
  
! '-fno-pretty-templates'
       When an error message refers to a specialization of a function
       template, the compiler normally prints the signature of the
       template followed by the template arguments and any typedefs or
!      typenames in the signature (e.g. 'void f(T) [with T = int]' rather
!      than 'void f(int)') so that it's clear which template is involved.
       When an error message refers to a specialization of a class
       template, the compiler omits any template arguments that match the
       default template arguments for that template.  If either of these
       behaviors make it harder to understand the error message rather
!      than easier, you can use '-fno-pretty-templates' to disable them.
  
! '-frange-for-ext-temps'
       Enable lifetime extension of C++ range based for temporaries.  With
!      '-std=c++23' and above this is part of the language standard, so
       lifetime of the temporaries is extended until the end of the loop
       by default.  This option allows enabling that behavior also in
       earlier versions of the standard.
  
! '-fno-rtti'
       Disable generation of information about every class with virtual
       functions for use by the C++ run-time type identification features
!      ('dynamic_cast' and 'typeid').  If you don't use those parts of the
       language, you can save some space by using this flag.  Note that
       exception handling uses the same information, but G++ generates it
!      as needed.  The 'dynamic_cast' operator can still be used for casts
!      that do not require run-time type information, i.e. casts to 'void
!      *' or to unambiguous base classes.
  
!      Mixing code compiled with '-frtti' with that compiled with
!      '-fno-rtti' may not work.  For example, programs may fail to link
!      if a class compiled with '-fno-rtti' is used as a base for a class
!      compiled with '-frtti'.
  
! '-fsized-deallocation'
       Enable the built-in global declarations
            void operator delete (void *, std::size_t) noexcept;
            void operator delete[] (void *, std::size_t) noexcept;
       as introduced in C++14.  This is useful for user-defined
       replacement deallocation functions that, for example, use the size
       of the object to make deallocation faster.  Enabled by default
!      under '-std=c++14' and above.  The flag '-Wsized-deallocation'
       warns about places that might want to add a definition.
  
! '-fstrict-enums'
       Allow the compiler to optimize using the assumption that a value of
       enumerated type can only be one of the values of the enumeration
       (as defined in the C++ standard; basically, a value that can be
--- 3604,3714 ----
       (Such definitions outside of a named module remain implicitly
       inline, regardless.)
  
! â€˜-fno-module-lazyâ€™
       Disable lazy module importing and module mapper creation.
  
! â€˜-fmodule-mapper=[HOSTNAME]:PORT[?IDENT]â€™
! â€˜-fmodule-mapper=|PROGRAM[?IDENT] ARGS...â€™
! â€˜-fmodule-mapper==SOCKET[?IDENT]â€™
! â€˜-fmodule-mapper=<>[INOUT][?IDENT]â€™
! â€˜-fmodule-mapper=<IN>OUT[?IDENT]â€™
! â€˜-fmodule-mapper=FILE[?IDENT]â€™
       An oracle to query for module name to filename mappings.  If
!      unspecified the â€˜CXX_MODULE_MAPPERâ€™ environment variable is used,
       and if that is unset, an in-process default is provided.
  
! â€˜-fmodule-onlyâ€™
       Only emit the Compiled Module Interface, inhibiting any object
       file.
  
! â€˜-fms-extensionsâ€™
       Disable Wpedantic warnings about constructs used in MFC, such as
       implicit int and getting a pointer to member function via
       non-standard syntax.
  
! â€˜-fnew-inheriting-ctorsâ€™
       Enable the P0136 adjustment to the semantics of C++11 constructor
       inheritance.  This is part of C++17 but also considered to be a
       Defect Report against C++11 and C++14.  This flag is enabled by
!      default unless â€˜-fabi-version=10â€™ or lower is specified.
  
! â€˜-fnew-ttp-matchingâ€™
       Enable the P0522 resolution to Core issue 150, template template
       parameters and default arguments: this allows a template with
       default template arguments as an argument for a template template
       parameter with fewer template parameters.  This flag is enabled by
!      default for â€˜-std=c++17â€™.
  
! â€˜-fno-nonansi-builtinsâ€™
       Disable built-in declarations of functions that are not mandated by
!      ANSI/ISO C.  These include â€˜ffsâ€™, â€˜allocaâ€™, â€˜_exitâ€™, â€˜indexâ€™,
!      â€˜bzeroâ€™, â€˜conjfâ€™, and other related functions.
  
! â€˜-fnothrow-optâ€™
!      Treat a â€˜throw()â€™ exception specification as if it were a
!      â€˜noexceptâ€™ specification to reduce or eliminate the text size
       overhead relative to a function with no exception specification.
       If the function has local variables of types with non-trivial
       destructors, the exception specification actually makes the
       function smaller because the EH cleanups for those variables can be
       optimized away.  The semantic effect is that an exception thrown
       out of a function with such an exception specification results in a
!      call to â€˜terminateâ€™ rather than â€˜unexpectedâ€™.
  
! â€˜-fno-operator-namesâ€™
!      Do not treat the operator name keywords â€˜andâ€™, â€˜bitandâ€™, â€˜bitorâ€™,
!      â€˜complâ€™, â€˜notâ€™, â€˜orâ€™ and â€˜xorâ€™ as synonyms as keywords.
  
! â€˜-fno-optional-diagsâ€™
       Disable diagnostics that the standard says a compiler does not need
       to issue.  Currently, the only such diagnostic issued by G++ is the
       one for a name having multiple meanings within a class.
  
! â€˜-fno-pretty-templatesâ€™
       When an error message refers to a specialization of a function
       template, the compiler normally prints the signature of the
       template followed by the template arguments and any typedefs or
!      typenames in the signature (e.g. â€˜void f(T) [with T = int]â€™ rather
!      than â€˜void f(int)â€™) so that it's clear which template is involved.
       When an error message refers to a specialization of a class
       template, the compiler omits any template arguments that match the
       default template arguments for that template.  If either of these
       behaviors make it harder to understand the error message rather
!      than easier, you can use â€˜-fno-pretty-templatesâ€™ to disable them.
  
! â€˜-frange-for-ext-tempsâ€™
       Enable lifetime extension of C++ range based for temporaries.  With
!      â€˜-std=c++23â€™ and above this is part of the language standard, so
       lifetime of the temporaries is extended until the end of the loop
       by default.  This option allows enabling that behavior also in
       earlier versions of the standard.
  
! â€˜-fno-rttiâ€™
       Disable generation of information about every class with virtual
       functions for use by the C++ run-time type identification features
!      (â€˜dynamic_castâ€™ and â€˜typeidâ€™).  If you don't use those parts of the
       language, you can save some space by using this flag.  Note that
       exception handling uses the same information, but G++ generates it
!      as needed.  The â€˜dynamic_castâ€™ operator can still be used for casts
!      that do not require run-time type information, i.e. casts to â€˜void
!      *â€™ or to unambiguous base classes.
  
!      Mixing code compiled with â€˜-frttiâ€™ with that compiled with
!      â€˜-fno-rttiâ€™ may not work.  For example, programs may fail to link
!      if a class compiled with â€˜-fno-rttiâ€™ is used as a base for a class
!      compiled with â€˜-frttiâ€™.
  
! â€˜-fsized-deallocationâ€™
       Enable the built-in global declarations
            void operator delete (void *, std::size_t) noexcept;
            void operator delete[] (void *, std::size_t) noexcept;
       as introduced in C++14.  This is useful for user-defined
       replacement deallocation functions that, for example, use the size
       of the object to make deallocation faster.  Enabled by default
!      under â€˜-std=c++14â€™ and above.  The flag â€˜-Wsized-deallocationâ€™
       warns about places that might want to add a definition.
  
! â€˜-fstrict-enumsâ€™
       Allow the compiler to optimize using the assumption that a value of
       enumerated type can only be one of the values of the enumeration
       (as defined in the C++ standard; basically, a value that can be
*************** Dialect Options.
*** 3714,3739 ****
       type.  This option has no effect for an enumeration type with a
       fixed underlying type.
  
! '-fstrong-eval-order'
! '-fstrong-eval-order=KIND'
       Evaluate member access, array subscripting, and shift expressions
       in left-to-right order, and evaluate assignment in right-to-left
!      order, as adopted for C++17.  '-fstrong-eval-order' is equivalent
!      to '-fstrong-eval-order=all', and is enabled by default with
!      '-std=c++17' or later.
  
!      '-fstrong-eval-order=some' enables just the ordering of member
       access and shift expressions, and is the default for C++ dialects
       prior to C++17.
  
!      '-fstrong-eval-order=none' is equivalent to
!      '-fno-strong-eval-order'.
  
! '-ftemplate-backtrace-limit=N'
       Set the maximum number of template instantiation notes for a single
       warning or error to N.  The default value is 10.
  
! '-ftemplate-depth=N'
       Set the maximum instantiation depth for template classes to N.  A
       limit on the template instantiation depth is needed to detect
       endless recursions during template class instantiation.  ANSI/ISO
--- 3718,3743 ----
       type.  This option has no effect for an enumeration type with a
       fixed underlying type.
  
! â€˜-fstrong-eval-orderâ€™
! â€˜-fstrong-eval-order=KINDâ€™
       Evaluate member access, array subscripting, and shift expressions
       in left-to-right order, and evaluate assignment in right-to-left
!      order, as adopted for C++17.  â€˜-fstrong-eval-orderâ€™ is equivalent
!      to â€˜-fstrong-eval-order=allâ€™, and is enabled by default with
!      â€˜-std=c++17â€™ or later.
  
!      â€˜-fstrong-eval-order=someâ€™ enables just the ordering of member
       access and shift expressions, and is the default for C++ dialects
       prior to C++17.
  
!      â€˜-fstrong-eval-order=noneâ€™ is equivalent to
!      â€˜-fno-strong-eval-orderâ€™.
  
! â€˜-ftemplate-backtrace-limit=Nâ€™
       Set the maximum number of template instantiation notes for a single
       warning or error to N.  The default value is 10.
  
! â€˜-ftemplate-depth=Nâ€™
       Set the maximum instantiation depth for template classes to N.  A
       limit on the template instantiation depth is needed to detect
       endless recursions during template class instantiation.  ANSI/ISO
*************** Dialect Options.
*** 3742,3772 ****
       the compiler can run out of stack space before hitting 1024 in some
       situations.
  
! '-fno-threadsafe-statics'
       Do not emit the extra code to use the routines specified in the C++
       ABI for thread-safe initialization of local statics.  You can use
       this option to reduce code size slightly in code that doesn't need
       to be thread-safe.
  
! '-fuse-cxa-atexit'
       Register destructors for objects with static storage duration with
!      the '__cxa_atexit' function rather than the 'atexit' function.
       This option is required for fully standards-compliant handling of
       static destructors, but only works if your C library supports
!      '__cxa_atexit'.
  
! '-fno-use-cxa-get-exception-ptr'
!      Don't use the '__cxa_get_exception_ptr' runtime routine.  This
!      causes 'std::uncaught_exception' to be incorrect, but is necessary
       if the runtime routine is not available.
  
! '-fvisibility-inlines-hidden'
       This switch declares that the user does not attempt to compare
       pointers to inline functions or methods where the addresses of the
       two functions are taken in different shared objects.
  
       The effect of this is that GCC may, effectively, mark inline
!      methods with '__attribute__ ((visibility ("hidden")))' so that they
       do not appear in the export table of a DSO and do not require a PLT
       indirection when used within the DSO.  Enabling this option can
       have a dramatic effect on load and link times of a DSO as it
--- 3746,3776 ----
       the compiler can run out of stack space before hitting 1024 in some
       situations.
  
! â€˜-fno-threadsafe-staticsâ€™
       Do not emit the extra code to use the routines specified in the C++
       ABI for thread-safe initialization of local statics.  You can use
       this option to reduce code size slightly in code that doesn't need
       to be thread-safe.
  
! â€˜-fuse-cxa-atexitâ€™
       Register destructors for objects with static storage duration with
!      the â€˜__cxa_atexitâ€™ function rather than the â€˜atexitâ€™ function.
       This option is required for fully standards-compliant handling of
       static destructors, but only works if your C library supports
!      â€˜__cxa_atexitâ€™.
  
! â€˜-fno-use-cxa-get-exception-ptrâ€™
!      Don't use the â€˜__cxa_get_exception_ptrâ€™ runtime routine.  This
!      causes â€˜std::uncaught_exceptionâ€™ to be incorrect, but is necessary
       if the runtime routine is not available.
  
! â€˜-fvisibility-inlines-hiddenâ€™
       This switch declares that the user does not attempt to compare
       pointers to inline functions or methods where the addresses of the
       two functions are taken in different shared objects.
  
       The effect of this is that GCC may, effectively, mark inline
!      methods with â€˜__attribute__ ((visibility ("hidden")))â€™ so that they
       do not appear in the export table of a DSO and do not require a PLT
       indirection when used within the DSO.  Enabling this option can
       have a dramatic effect on load and link times of a DSO as it
*************** Dialect Options.
*** 3788,3801 ****
       option as their linkage might otherwise cross a shared library
       boundary.  *Note Template Instantiation::.
  
! '-fvisibility-ms-compat'
       This flag attempts to use visibility settings to make GCC's C++
       linkage model compatible with that of Microsoft Visual Studio.
  
       The flag makes these changes to GCC's linkage model:
  
!        1. It sets the default visibility to 'hidden', like
!           '-fvisibility=hidden'.
  
         2. Types, but not their members, are not hidden by default.
  
--- 3792,3805 ----
       option as their linkage might otherwise cross a shared library
       boundary.  *Note Template Instantiation::.
  
! â€˜-fvisibility-ms-compatâ€™
       This flag attempts to use visibility settings to make GCC's C++
       linkage model compatible with that of Microsoft Visual Studio.
  
       The flag makes these changes to GCC's linkage model:
  
!        1. It sets the default visibility to â€˜hiddenâ€™, like
!           â€˜-fvisibility=hiddenâ€™.
  
         2. Types, but not their members, are not hidden by default.
  
*************** Dialect Options.
*** 3804,3810 ****
            shared object: those declarations are permitted if they are
            permitted when this option is not used.
  
!      In new code it is better to use '-fvisibility=hidden' and export
       those classes that are intended to be externally visible.
       Unfortunately it is possible for code to rely, perhaps
       accidentally, on the Visual Studio behavior.
--- 3808,3814 ----
            shared object: those declarations are permitted if they are
            permitted when this option is not used.
  
!      In new code it is better to use â€˜-fvisibility=hiddenâ€™ and export
       those classes that are intended to be externally visible.
       Unfortunately it is possible for code to rely, perhaps
       accidentally, on the Visual Studio behavior.
*************** Dialect Options.
*** 3817,3882 ****
       given, it is a violation of the ODR to define types with the same
       name differently.
  
! '-fno-weak'
       Do not use weak symbol support, even if it is provided by the
       linker.  By default, G++ uses weak symbols if they are available.
       This option exists only for testing, and should not be used by
       end-users; it results in inferior code and has no benefits.  This
       option may be removed in a future release of G++.
  
! '-fext-numeric-literals (C++ and Objective-C++ only)'
       Accept imaginary, fixed-point, or machine-defined literal number
       suffixes as GNU extensions.  When this option is turned off these
       suffixes are treated as C++11 user-defined literal numeric
       suffixes.  This is on by default for all pre-C++11 dialects and all
!      GNU dialects: '-std=c++98', '-std=gnu++98', '-std=gnu++11',
!      '-std=gnu++14'.  This option is off by default for ISO C++11
!      onwards ('-std=c++11', ...).
  
! '-nostdinc++'
       Do not search for header files in the standard directories specific
       to C++, but do still search the other standard directories.  (This
       option is used when building the C++ library.)
  
! '-flang-info-include-translate'
! '-flang-info-include-translate-not'
! '-flang-info-include-translate=HEADER'
       Inform of include translation events.  The first will note accepted
       include translations, the second will note declined include
       translations.  The HEADER form will inform of include translations
       relating to that specific header.  If HEADER is of the form
!      '"user"' or '<system>' it will be resolved to a specific user or
       system header using the include path.
  
! '-flang-info-module-cmi'
! '-flang-info-module-cmi=MODULE'
       Inform of Compiled Module Interface pathnames.  The first will note
       all read CMI pathnames.  The MODULE form will not reading a
       specific module's CMI. MODULE may be a named module or a
       header-unit (the latter indicated by either being a pathname
!      containing directory separators or enclosed in '<>' or '""').
  
! '-stdlib=LIBSTDC++,LIBC++'
       When G++ is configured to support this option, it allows
       specification of alternate C++ runtime libraries.  Two options are
       available: LIBSTDC++ (the default, native C++ runtime for G++) and
       LIBC++ which is the C++ runtime installed on some operating systems
       (e.g.  Darwin versions from Darwin11 onwards).  The option switches
       G++ to use the headers from the specified library and to emit
!      '-lstdc++' or '-lc++' respectively, when a C++ runtime is required
       for linking.
  
   In addition, these warning options have meanings only for C++ programs:
  
! '-Wabi-tag (C++ and Objective-C++ only)'
       Warn when a type with an ABI tag is used in a context that does not
       have that ABI tag.  See *note C++ Attributes:: for more information
       about ABI tags.
  
! '-Wcomma-subscript (C++ and Objective-C++ only)'
       Warn about uses of a comma expression within a subscripting
       expression.  This usage was deprecated in C++20 and is going to be
!      removed in C++23.  However, a comma expression wrapped in '( )' is
       not deprecated.  Example:
  
            void f(int *a, int b, int c) {
--- 3821,3886 ----
       given, it is a violation of the ODR to define types with the same
       name differently.
  
! â€˜-fno-weakâ€™
       Do not use weak symbol support, even if it is provided by the
       linker.  By default, G++ uses weak symbols if they are available.
       This option exists only for testing, and should not be used by
       end-users; it results in inferior code and has no benefits.  This
       option may be removed in a future release of G++.
  
! â€˜-fext-numeric-literals (C++ and Objective-C++ only)â€™
       Accept imaginary, fixed-point, or machine-defined literal number
       suffixes as GNU extensions.  When this option is turned off these
       suffixes are treated as C++11 user-defined literal numeric
       suffixes.  This is on by default for all pre-C++11 dialects and all
!      GNU dialects: â€˜-std=c++98â€™, â€˜-std=gnu++98â€™, â€˜-std=gnu++11â€™,
!      â€˜-std=gnu++14â€™.  This option is off by default for ISO C++11
!      onwards (â€˜-std=c++11â€™, ...).
  
! â€˜-nostdinc++â€™
       Do not search for header files in the standard directories specific
       to C++, but do still search the other standard directories.  (This
       option is used when building the C++ library.)
  
! â€˜-flang-info-include-translateâ€™
! â€˜-flang-info-include-translate-notâ€™
! â€˜-flang-info-include-translate=HEADERâ€™
       Inform of include translation events.  The first will note accepted
       include translations, the second will note declined include
       translations.  The HEADER form will inform of include translations
       relating to that specific header.  If HEADER is of the form
!      â€˜"user"â€™ or â€˜<system>â€™ it will be resolved to a specific user or
       system header using the include path.
  
! â€˜-flang-info-module-cmiâ€™
! â€˜-flang-info-module-cmi=MODULEâ€™
       Inform of Compiled Module Interface pathnames.  The first will note
       all read CMI pathnames.  The MODULE form will not reading a
       specific module's CMI. MODULE may be a named module or a
       header-unit (the latter indicated by either being a pathname
!      containing directory separators or enclosed in â€˜<>â€™ or â€˜""â€™).
  
! â€˜-stdlib=LIBSTDC++,LIBC++â€™
       When G++ is configured to support this option, it allows
       specification of alternate C++ runtime libraries.  Two options are
       available: LIBSTDC++ (the default, native C++ runtime for G++) and
       LIBC++ which is the C++ runtime installed on some operating systems
       (e.g.  Darwin versions from Darwin11 onwards).  The option switches
       G++ to use the headers from the specified library and to emit
!      â€˜-lstdc++â€™ or â€˜-lc++â€™ respectively, when a C++ runtime is required
       for linking.
  
   In addition, these warning options have meanings only for C++ programs:
  
! â€˜-Wabi-tag (C++ and Objective-C++ only)â€™
       Warn when a type with an ABI tag is used in a context that does not
       have that ABI tag.  See *note C++ Attributes:: for more information
       about ABI tags.
  
! â€˜-Wcomma-subscript (C++ and Objective-C++ only)â€™
       Warn about uses of a comma expression within a subscripting
       expression.  This usage was deprecated in C++20 and is going to be
!      removed in C++23.  However, a comma expression wrapped in â€˜( )â€™ is
       not deprecated.  Example:
  
            void f(int *a, int b, int c) {
*************** Dialect Options.
*** 3889,3904 ****
       supports the right number and types of arguments.  G++ will accept
       the formerly valid syntax for code that is not valid in C++23 but
       used to be valid but deprecated in C++20 with a pedantic warning
!      that can be disabled with '-Wno-comma-subscript'.
  
!      Enabled by default with '-std=c++20' unless '-Wno-deprecated', and
!      after '-std=c++23' regardless of '-Wno-deprecated'.  Before
!      '-std=c++20', enabled with explicit '-Wdeprecated'.
  
!      This warning is upgraded to an error by '-pedantic-errors' in C++23
       mode or later.
  
! '-Wctad-maybe-unsupported (C++ and Objective-C++ only)'
       Warn when performing class template argument deduction (CTAD) on a
       type with no explicitly written deduction guides.  This warning
       will point out cases where CTAD succeeded only because the compiler
--- 3893,3908 ----
       supports the right number and types of arguments.  G++ will accept
       the formerly valid syntax for code that is not valid in C++23 but
       used to be valid but deprecated in C++20 with a pedantic warning
!      that can be disabled with â€˜-Wno-comma-subscriptâ€™.
  
!      Enabled by default with â€˜-std=c++20â€™ unless â€˜-Wno-deprecatedâ€™, and
!      after â€˜-std=c++23â€™ regardless of â€˜-Wno-deprecatedâ€™.  Before
!      â€˜-std=c++20â€™, enabled with explicit â€˜-Wdeprecatedâ€™.
  
!      This warning is upgraded to an error by â€˜-pedantic-errorsâ€™ in C++23
       mode or later.
  
! â€˜-Wctad-maybe-unsupported (C++ and Objective-C++ only)â€™
       Warn when performing class template argument deduction (CTAD) on a
       type with no explicitly written deduction guides.  This warning
       will point out cases where CTAD succeeded only because the compiler
*************** Dialect Options.
*** 3915,3928 ****
            // Guide with incomplete parameter type will never be considered.
            S(allow_ctad_t) -> S<void>;
  
! '-Wctor-dtor-privacy (C++ and Objective-C++ only)'
       Warn when a class seems unusable because all the constructors or
       destructors in that class are private, and it has neither friends
       nor public static member functions.  Also warn if there are no
       non-private methods, and there's at least one private member
       function that isn't a constructor or destructor.
  
! '-Wdangling-reference (C++ and Objective-C++ only)'
       Warn when a reference is bound to a temporary whose lifetime has
       ended.  For example:
  
--- 3919,3932 ----
            // Guide with incomplete parameter type will never be considered.
            S(allow_ctad_t) -> S<void>;
  
! â€˜-Wctor-dtor-privacy (C++ and Objective-C++ only)â€™
       Warn when a class seems unusable because all the constructors or
       destructors in that class are private, and it has neither friends
       nor public static member functions.  Also warn if there are no
       non-private methods, and there's at least one private member
       function that isn't a constructor or destructor.
  
! â€˜-Wdangling-reference (C++ and Objective-C++ only)â€™
       Warn when a reference is bound to a temporary whose lifetime has
       ended.  For example:
  
*************** Dialect Options.
*** 3932,3938 ****
       In the example above, two temporaries are created, one for each
       argument, and a reference to one of the temporaries is returned.
       However, both temporaries are destroyed at the end of the full
!      expression, so the reference 'r' is dangling.  This warning also
       detects dangling references in member initializer lists:
  
            const int& f(const int& i) { return i; }
--- 3936,3942 ----
       In the example above, two temporaries are created, one for each
       argument, and a reference to one of the temporaries is returned.
       However, both temporaries are destroyed at the end of the full
!      expression, so the reference â€˜râ€™ is dangling.  This warning also
       detects dangling references in member initializer lists:
  
            const int& f(const int& i) { return i; }
*************** Dialect Options.
*** 3950,3977 ****
            const S& s = S().self(); // s is dangling
  
       Certain functions are safe in this respect, for example
!      'std::use_facet': they take and return a reference, but they don't
       return one of its arguments, which can fool the warning.  Such
       functions can be excluded from the warning by wrapping them in a
!      '#pragma':
  
            #pragma GCC diagnostic push
            #pragma GCC diagnostic ignored "-Wdangling-reference"
            const T& foo (const T&) { ... }
            #pragma GCC diagnostic pop
  
!      The '#pragma' can also surround the class; in that case, the
       warning will be disabled for all the member functions.
  
!      '-Wdangling-reference' also warns about code like
  
            auto p = std::minmax(1, 2);
  
!      where 'std::minmax' returns 'std::pair<const int&, const int&>',
       and both references dangle after the end of the full expression
!      that contains the call to 'std::minmax'.
  
!      The warning does not warn for 'std::span'-like classes.  We
       consider classes of the form:
  
            template<typename T>
--- 3954,3981 ----
            const S& s = S().self(); // s is dangling
  
       Certain functions are safe in this respect, for example
!      â€˜std::use_facetâ€™: they take and return a reference, but they don't
       return one of its arguments, which can fool the warning.  Such
       functions can be excluded from the warning by wrapping them in a
!      â€˜#pragmaâ€™:
  
            #pragma GCC diagnostic push
            #pragma GCC diagnostic ignored "-Wdangling-reference"
            const T& foo (const T&) { ... }
            #pragma GCC diagnostic pop
  
!      The â€˜#pragmaâ€™ can also surround the class; in that case, the
       warning will be disabled for all the member functions.
  
!      â€˜-Wdangling-referenceâ€™ also warns about code like
  
            auto p = std::minmax(1, 2);
  
!      where â€˜std::minmaxâ€™ returns â€˜std::pair<const int&, const int&>â€™,
       and both references dangle after the end of the full expression
!      that contains the call to â€˜std::minmaxâ€™.
  
!      The warning does not warn for â€˜std::spanâ€™-like classes.  We
       consider classes of the form:
  
            template<typename T>
*************** Dialect Options.
*** 3980,4009 ****
              std::size len_;
            };
  
!      as 'std::span'-like; that is, the class is a non-union class that
       has a pointer data member and a trivial destructor.
  
!      The warning can be disabled by using the 'gnu::no_dangling'
       attribute (*note C++ Attributes::).
  
!      This warning is enabled by '-Wextra'.
  
! '-Wdelete-non-virtual-dtor (C++ and Objective-C++ only)'
!      Warn when 'delete' is used to destroy an instance of a class that
       has virtual functions and non-virtual destructor.  It is unsafe to
       delete an instance of a derived class through a pointer to a base
       class if the base class does not have a virtual destructor.  This
!      warning is enabled by '-Wall'.
  
! '-Wdeprecated-copy (C++ and Objective-C++ only)'
       Warn that the implicit declaration of a copy constructor or copy
       assignment operator is deprecated if the class has a user-provided
       copy constructor or copy assignment operator, in C++11 and up.
!      This warning is enabled by '-Wextra'.  With
!      '-Wdeprecated-copy-dtor', also deprecate if the class has a
       user-provided destructor.
  
! '-Wno-deprecated-enum-enum-conversion (C++ and Objective-C++ only)'
       Disable the warning about the case when the usual arithmetic
       conversions are applied on operands where one is of enumeration
       type and the other is of a different enumeration type.  This
--- 3984,4013 ----
              std::size len_;
            };
  
!      as â€˜std::spanâ€™-like; that is, the class is a non-union class that
       has a pointer data member and a trivial destructor.
  
!      The warning can be disabled by using the â€˜gnu::no_danglingâ€™
       attribute (*note C++ Attributes::).
  
!      This warning is enabled by â€˜-Wextraâ€™.
  
! â€˜-Wdelete-non-virtual-dtor (C++ and Objective-C++ only)â€™
!      Warn when â€˜deleteâ€™ is used to destroy an instance of a class that
       has virtual functions and non-virtual destructor.  It is unsafe to
       delete an instance of a derived class through a pointer to a base
       class if the base class does not have a virtual destructor.  This
!      warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Wdeprecated-copy (C++ and Objective-C++ only)â€™
       Warn that the implicit declaration of a copy constructor or copy
       assignment operator is deprecated if the class has a user-provided
       copy constructor or copy assignment operator, in C++11 and up.
!      This warning is enabled by â€˜-Wextraâ€™.  With
!      â€˜-Wdeprecated-copy-dtorâ€™, also deprecate if the class has a
       user-provided destructor.
  
! â€˜-Wno-deprecated-enum-enum-conversion (C++ and Objective-C++ only)â€™
       Disable the warning about the case when the usual arithmetic
       conversions are applied on operands where one is of enumeration
       type and the other is of a different enumeration type.  This
*************** Dialect Options.
*** 4013,4023 ****
            enum E2 { f };
            int k = f - e;
  
!      '-Wdeprecated-enum-enum-conversion' is enabled by default with
!      '-std=c++20'.  In pre-C++20 dialects, this warning can be enabled
!      by '-Wenum-conversion' or '-Wdeprecated'.
  
! '-Wno-deprecated-enum-float-conversion (C++ and Objective-C++ only)'
       Disable the warning about the case when the usual arithmetic
       conversions are applied on operands where one is of enumeration
       type and the other is of a floating-point type.  This conversion
--- 4017,4027 ----
            enum E2 { f };
            int k = f - e;
  
!      â€˜-Wdeprecated-enum-enum-conversionâ€™ is enabled by default with
!      â€˜-std=c++20â€™.  In pre-C++20 dialects, this warning can be enabled
!      by â€˜-Wenum-conversionâ€™ or â€˜-Wdeprecatedâ€™.
  
! â€˜-Wno-deprecated-enum-float-conversion (C++ and Objective-C++ only)â€™
       Disable the warning about the case when the usual arithmetic
       conversions are applied on operands where one is of enumeration
       type and the other is of a floating-point type.  This conversion
*************** Dialect Options.
*** 4027,4048 ****
            enum E2 { f };
            bool b = e <= 3.7;
  
!      '-Wdeprecated-enum-float-conversion' is enabled by default with
!      '-std=c++20'.  In pre-C++20 dialects, this warning can be enabled
!      by '-Wenum-conversion' or '-Wdeprecated'.
  
! '-Wdeprecated-literal-operator (C++ and Objective-C++ only)'
       Warn that the declaration of a user-defined literal operator with a
       space before the suffix is deprecated.  This warning is enabled by
!      default in C++23, or with explicit '-Wdeprecated'.
  
            string operator "" _i18n(const char*, std::size_t); // deprecated
            string operator ""_i18n(const char*, std::size_t); // preferred
  
! '-Wdeprecated-variadic-comma-omission (C++ and Objective-C++ only)'
!      Warn that omitting a comma before the varargs '...' at the end of a
       function parameter list is deprecated.  This warning is enabled by
!      default in C++26, or with explicit '-Wdeprecated'.
  
            void f1(int...); // deprecated
            void f1(int, ...); // preferred
--- 4031,4052 ----
            enum E2 { f };
            bool b = e <= 3.7;
  
!      â€˜-Wdeprecated-enum-float-conversionâ€™ is enabled by default with
!      â€˜-std=c++20â€™.  In pre-C++20 dialects, this warning can be enabled
!      by â€˜-Wenum-conversionâ€™ or â€˜-Wdeprecatedâ€™.
  
! â€˜-Wdeprecated-literal-operator (C++ and Objective-C++ only)â€™
       Warn that the declaration of a user-defined literal operator with a
       space before the suffix is deprecated.  This warning is enabled by
!      default in C++23, or with explicit â€˜-Wdeprecatedâ€™.
  
            string operator "" _i18n(const char*, std::size_t); // deprecated
            string operator ""_i18n(const char*, std::size_t); // preferred
  
! â€˜-Wdeprecated-variadic-comma-omission (C++ and Objective-C++ only)â€™
!      Warn that omitting a comma before the varargs â€˜...â€™ at the end of a
       function parameter list is deprecated.  This warning is enabled by
!      default in C++26, or with explicit â€˜-Wdeprecatedâ€™.
  
            void f1(int...); // deprecated
            void f1(int, ...); // preferred
*************** Dialect Options.
*** 4051,4057 ****
            template <typename ...T>
            void f3(T......); // deprecated
  
! '-Wno-elaborated-enum-base'
       For C++11 and above, warn if an (invalid) additional enum-base is
       used in an elaborated-type-specifier.  That is, if an enum with
       given underlying type and no enumerator list is used in a
--- 4055,4061 ----
            template <typename ...T>
            void f3(T......); // deprecated
  
! â€˜-Wno-elaborated-enum-baseâ€™
       For C++11 and above, warn if an (invalid) additional enum-base is
       used in an elaborated-type-specifier.  That is, if an enum with
       given underlying type and no enumerator list is used in a
*************** Dialect Options.
*** 4059,4085 ****
       Enabled by default.  This warning is upgraded to an error with
       -pedantic-errors.
  
! '-Wno-init-list-lifetime (C++ and Objective-C++ only)'
!      Do not warn about uses of 'std::initializer_list' that are likely
       to result in dangling pointers.  Since the underlying array for an
!      'initializer_list' is handled like a normal C++ temporary object,
       it is easy to inadvertently keep a pointer to the array past the
       end of the array's lifetime.  For example:
  
!         * If a function returns a temporary 'initializer_list', or a
!           local 'initializer_list' variable, the array's lifetime ends
            at the end of the return statement, so the value returned has
            a dangling pointer.
  
!         * If a new-expression creates an 'initializer_list', the array
            only lives until the end of the enclosing full-expression, so
!           the 'initializer_list' in the heap has a dangling pointer.
  
!         * When an 'initializer_list' variable is assigned from a
            brace-enclosed initializer list, the temporary array created
            for the right side of the assignment only lives until the end
            of the full-expression, so at the next statement the
!           'initializer_list' variable has a dangling pointer.
  
                 // li's initial underlying array lives as long as li
                 std::initializer_list<int> li = { 1,2,3 };
--- 4063,4089 ----
       Enabled by default.  This warning is upgraded to an error with
       -pedantic-errors.
  
! â€˜-Wno-init-list-lifetime (C++ and Objective-C++ only)â€™
!      Do not warn about uses of â€˜std::initializer_listâ€™ that are likely
       to result in dangling pointers.  Since the underlying array for an
!      â€˜initializer_listâ€™ is handled like a normal C++ temporary object,
       it is easy to inadvertently keep a pointer to the array past the
       end of the array's lifetime.  For example:
  
!         â€¢ If a function returns a temporary â€˜initializer_listâ€™, or a
!           local â€˜initializer_listâ€™ variable, the array's lifetime ends
            at the end of the return statement, so the value returned has
            a dangling pointer.
  
!         â€¢ If a new-expression creates an â€˜initializer_listâ€™, the array
            only lives until the end of the enclosing full-expression, so
!           the â€˜initializer_listâ€™ in the heap has a dangling pointer.
  
!         â€¢ When an â€˜initializer_listâ€™ variable is assigned from a
            brace-enclosed initializer list, the temporary array created
            for the right side of the assignment only lives until the end
            of the full-expression, so at the next statement the
!           â€˜initializer_listâ€™ variable has a dangling pointer.
  
                 // li's initial underlying array lives as long as li
                 std::initializer_list<int> li = { 1,2,3 };
*************** Dialect Options.
*** 4088,4113 ****
                 // now the temporary is gone and li has a dangling pointer
                 int i = li.begin()[0] // undefined behavior
  
!         * When a list constructor stores the 'begin' pointer from the
!           'initializer_list' argument, this doesn't extend the lifetime
            of the array, so if a class variable is constructed from a
!           temporary 'initializer_list', the pointer is left dangling by
            the end of the variable declaration statement.
  
! '-Winvalid-constexpr'
  
       Warn when a function never produces a constant expression.  In
!      C++20 and earlier, for every 'constexpr' function and function
       template, there must be at least one set of function arguments in
       at least one instantiation such that an invocation of the function
       or constructor could be an evaluated subexpression of a core
       constant expression.  C++23 removed this restriction, so it's
       possible to have a function or a function template marked
!      'constexpr' for which no invocation satisfies the requirements of a
       core constant expression.
  
       This warning is enabled as a pedantic warning by default in C++20
!      and earlier.  In C++23, '-Winvalid-constexpr' can be turned on, in
       which case it will be an ordinary warning.  For example:
  
            void f (int& i);
--- 4092,4117 ----
                 // now the temporary is gone and li has a dangling pointer
                 int i = li.begin()[0] // undefined behavior
  
!         â€¢ When a list constructor stores the â€˜beginâ€™ pointer from the
!           â€˜initializer_listâ€™ argument, this doesn't extend the lifetime
            of the array, so if a class variable is constructed from a
!           temporary â€˜initializer_listâ€™, the pointer is left dangling by
            the end of the variable declaration statement.
  
! â€˜-Winvalid-constexprâ€™
  
       Warn when a function never produces a constant expression.  In
!      C++20 and earlier, for every â€˜constexprâ€™ function and function
       template, there must be at least one set of function arguments in
       at least one instantiation such that an invocation of the function
       or constructor could be an evaluated subexpression of a core
       constant expression.  C++23 removed this restriction, so it's
       possible to have a function or a function template marked
!      â€˜constexprâ€™ for which no invocation satisfies the requirements of a
       core constant expression.
  
       This warning is enabled as a pedantic warning by default in C++20
!      and earlier.  In C++23, â€˜-Winvalid-constexprâ€™ can be turned on, in
       which case it will be an ordinary warning.  For example:
  
            void f (int& i);
*************** Dialect Options.
*** 4118,4135 ****
              f(i);
            }
  
! '-Winvalid-imported-macros'
       Verify all imported macro definitions are valid at the end of
       compilation.  This is not enabled by default, as it requires
       additional processing to determine.  It may be useful when
       preparing sets of header-units to ensure consistent macros.
  
! '-Wno-literal-suffix (C++ and Objective-C++ only)'
       Do not warn when a string or character literal is followed by a
       ud-suffix which does not begin with an underscore.  As a conforming
       extension, GCC treats such suffixes as separate preprocessing
       tokens in order to maintain backwards compatibility with code that
!      uses formatting macros from '<inttypes.h>'.  For example:
  
            #define __STDC_FORMAT_MACROS
            #include <inttypes.h>
--- 4122,4139 ----
              f(i);
            }
  
! â€˜-Winvalid-imported-macrosâ€™
       Verify all imported macro definitions are valid at the end of
       compilation.  This is not enabled by default, as it requires
       additional processing to determine.  It may be useful when
       preparing sets of header-units to ensure consistent macros.
  
! â€˜-Wno-literal-suffix (C++ and Objective-C++ only)â€™
       Do not warn when a string or character literal is followed by a
       ud-suffix which does not begin with an underscore.  As a conforming
       extension, GCC treats such suffixes as separate preprocessing
       tokens in order to maintain backwards compatibility with code that
!      uses formatting macros from â€˜<inttypes.h>â€™.  For example:
  
            #define __STDC_FORMAT_MACROS
            #include <inttypes.h>
*************** Dialect Options.
*** 4140,4146 ****
              printf("My int64: %" PRId64"\n", i64);
            }
  
!      In this case, 'PRId64' is treated as a separate preprocessing
       token.
  
       This option also controls warnings when a user-defined literal
--- 4144,4150 ----
              printf("My int64: %" PRId64"\n", i64);
            }
  
!      In this case, â€˜PRId64â€™ is treated as a separate preprocessing
       token.
  
       This option also controls warnings when a user-defined literal
*************** Dialect Options.
*** 4150,4181 ****
  
       These warnings are enabled by default.
  
! '-Wno-narrowing (C++ and Objective-C++ only)'
       For C++11 and later standards, narrowing conversions are diagnosed
       by default, as required by the standard.  A narrowing conversion
       from a constant produces an error, and a narrowing conversion from
!      a non-constant produces a warning, but '-Wno-narrowing' suppresses
       the diagnostic.  Note that this does not affect the meaning of
       well-formed code; narrowing conversions are still considered
       ill-formed in SFINAE contexts.
  
!      With '-Wnarrowing' in C++98, warn when a narrowing conversion
!      prohibited by C++11 occurs within '{ }', e.g.
  
            int i = { 2.2 }; // error: narrowing from double to int
  
!      This flag is included in '-Wall' and '-Wc++11-compat'.
  
! '-Wnoexcept (C++ and Objective-C++ only)'
       Warn when a noexcept-expression evaluates to false because of a
       call to a function that does not have a non-throwing exception
!      specification (i.e.  'throw()' or 'noexcept') but is known by the
       compiler to never throw an exception.
  
! '-Wnoexcept-type (C++ and Objective-C++ only)'
!      Warn if the C++17 feature making 'noexcept' part of a function type
       changes the mangled name of a symbol relative to C++14.  Enabled by
!      '-Wabi' and '-Wc++17-compat'.
  
       As an example:
  
--- 4154,4185 ----
  
       These warnings are enabled by default.
  
! â€˜-Wno-narrowing (C++ and Objective-C++ only)â€™
       For C++11 and later standards, narrowing conversions are diagnosed
       by default, as required by the standard.  A narrowing conversion
       from a constant produces an error, and a narrowing conversion from
!      a non-constant produces a warning, but â€˜-Wno-narrowingâ€™ suppresses
       the diagnostic.  Note that this does not affect the meaning of
       well-formed code; narrowing conversions are still considered
       ill-formed in SFINAE contexts.
  
!      With â€˜-Wnarrowingâ€™ in C++98, warn when a narrowing conversion
!      prohibited by C++11 occurs within â€˜{ }â€™, e.g.
  
            int i = { 2.2 }; // error: narrowing from double to int
  
!      This flag is included in â€˜-Wallâ€™ and â€˜-Wc++11-compatâ€™.
  
! â€˜-Wnoexcept (C++ and Objective-C++ only)â€™
       Warn when a noexcept-expression evaluates to false because of a
       call to a function that does not have a non-throwing exception
!      specification (i.e.  â€˜throw()â€™ or â€˜noexceptâ€™) but is known by the
       compiler to never throw an exception.
  
! â€˜-Wnoexcept-type (C++ and Objective-C++ only)â€™
!      Warn if the C++17 feature making â€˜noexceptâ€™ part of a function type
       changes the mangled name of a symbol relative to C++14.  Enabled by
!      â€˜-Wabiâ€™ and â€˜-Wc++17-compatâ€™.
  
       As an example:
  
*************** Dialect Options.
*** 4183,4199 ****
            void g() noexcept;
            void h() { f(g); }
  
!      In C++14, 'f' calls 'f<void(*)()>', but in C++17 it calls
!      'f<void(*)()noexcept>'.
  
! '-Wclass-memaccess (C++ and Objective-C++ only)'
       Warn when the destination of a call to a raw memory function such
!      as 'memset' or 'memcpy' is an object of class type, and when
       writing into such an object might bypass the class non-trivial or
       deleted constructor or copy assignment, violate const-correctness
       or encapsulation, or corrupt virtual table pointers.  Modifying the
       representation of such objects may violate invariants maintained by
!      member functions of the class.  For example, the call to 'memset'
       below is undefined because it modifies a non-trivial class object
       and is, therefore, diagnosed.  The safe way to either initialize or
       clear the storage of objects of such types is by using the
--- 4187,4203 ----
            void g() noexcept;
            void h() { f(g); }
  
!      In C++14, â€˜fâ€™ calls â€˜f<void(*)()>â€™, but in C++17 it calls
!      â€˜f<void(*)()noexcept>â€™.
  
! â€˜-Wclass-memaccess (C++ and Objective-C++ only)â€™
       Warn when the destination of a call to a raw memory function such
!      as â€˜memsetâ€™ or â€˜memcpyâ€™ is an object of class type, and when
       writing into such an object might bypass the class non-trivial or
       deleted constructor or copy assignment, violate const-correctness
       or encapsulation, or corrupt virtual table pointers.  Modifying the
       representation of such objects may violate invariants maintained by
!      member functions of the class.  For example, the call to â€˜memsetâ€™
       below is undefined because it modifies a non-trivial class object
       and is, therefore, diagnosed.  The safe way to either initialize or
       clear the storage of objects of such types is by using the
*************** Dialect Options.
*** 4201,4229 ****
       available.
            std::string str = "abc";
            memset (&str, 0, sizeof str);
!      The '-Wclass-memaccess' option is enabled by '-Wall'.  Explicitly
!      casting the pointer to the class object to 'void *' or to a type
       that can be safely accessed by the raw memory function suppresses
       the warning.
  
! '-Wnon-virtual-dtor (C++ and Objective-C++ only)'
       Warn when a class has virtual functions and an accessible
       non-virtual destructor itself or in an accessible polymorphic base
       class, in which case it is possible but unsafe to delete an
       instance of a derived class through a pointer to the class itself
!      or base class.  This warning is automatically enabled if '-Weffc++'
!      is specified.  The '-Wdelete-non-virtual-dtor' option (enabled by
!      '-Wall') should be preferred because it warns about the unsafe
       cases without false positives.
  
! '-Wregister (C++ and Objective-C++ only)'
!      Warn on uses of the 'register' storage class specifier, except when
       it is part of the GNU *note Explicit Register Variables::
!      extension.  The use of the 'register' keyword as storage class
       specifier has been deprecated in C++11 and removed in C++17.
!      Enabled by default with '-std=c++17'.
  
! '-Wreorder (C++ and Objective-C++ only)'
       Warn when the order of member initializers given in the code does
       not match the order in which they must be executed.  For instance:
  
--- 4205,4233 ----
       available.
            std::string str = "abc";
            memset (&str, 0, sizeof str);
!      The â€˜-Wclass-memaccessâ€™ option is enabled by â€˜-Wallâ€™.  Explicitly
!      casting the pointer to the class object to â€˜void *â€™ or to a type
       that can be safely accessed by the raw memory function suppresses
       the warning.
  
! â€˜-Wnon-virtual-dtor (C++ and Objective-C++ only)â€™
       Warn when a class has virtual functions and an accessible
       non-virtual destructor itself or in an accessible polymorphic base
       class, in which case it is possible but unsafe to delete an
       instance of a derived class through a pointer to the class itself
!      or base class.  This warning is automatically enabled if â€˜-Weffc++â€™
!      is specified.  The â€˜-Wdelete-non-virtual-dtorâ€™ option (enabled by
!      â€˜-Wallâ€™) should be preferred because it warns about the unsafe
       cases without false positives.
  
! â€˜-Wregister (C++ and Objective-C++ only)â€™
!      Warn on uses of the â€˜registerâ€™ storage class specifier, except when
       it is part of the GNU *note Explicit Register Variables::
!      extension.  The use of the â€˜registerâ€™ keyword as storage class
       specifier has been deprecated in C++11 and removed in C++17.
!      Enabled by default with â€˜-std=c++17â€™.
  
! â€˜-Wreorder (C++ and Objective-C++ only)â€™
       Warn when the order of member initializers given in the code does
       not match the order in which they must be executed.  For instance:
  
*************** Dialect Options.
*** 4233,4244 ****
              A(): j (0), i (1) { }
            };
  
!      The compiler rearranges the member initializers for 'i' and 'j' to
       match the declaration order of the members, emitting a warning to
!      that effect.  This warning is enabled by '-Wall'.
  
! '-Wno-pessimizing-move (C++ and Objective-C++ only)'
!      This warning warns when a call to 'std::move' prevents copy
       elision.  A typical scenario when copy elision can occur is when
       returning in a function with a class return type, when the
       expression being returned is the name of a non-volatile automatic
--- 4237,4248 ----
              A(): j (0), i (1) { }
            };
  
!      The compiler rearranges the member initializers for â€˜iâ€™ and â€˜jâ€™ to
       match the declaration order of the members, emitting a warning to
!      that effect.  This warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Wno-pessimizing-move (C++ and Objective-C++ only)â€™
!      This warning warns when a call to â€˜std::moveâ€™ prevents copy
       elision.  A typical scenario when copy elision can occur is when
       returning in a function with a class return type, when the
       expression being returned is the name of a non-volatile automatic
*************** Dialect Options.
*** 4255,4268 ****
              return std::move (t);
            }
  
!      But in this example, the 'std::move' call prevents copy elision.
  
!      This warning is enabled by '-Wall'.
  
! '-Wno-redundant-move (C++ and Objective-C++ only)'
!      This warning warns about redundant calls to 'std::move'; that is,
       when a move operation would have been performed even without the
!      'std::move' call.  This happens because the compiler is forced to
       treat the object as if it were an rvalue in certain situations such
       as returning a local variable, where copy elision isn't applicable.
       Consider:
--- 4259,4272 ----
              return std::move (t);
            }
  
!      But in this example, the â€˜std::moveâ€™ call prevents copy elision.
  
!      This warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Wno-redundant-move (C++ and Objective-C++ only)â€™
!      This warning warns about redundant calls to â€˜std::moveâ€™; that is,
       when a move operation would have been performed even without the
!      â€˜std::moveâ€™ call.  This happens because the compiler is forced to
       treat the object as if it were an rvalue in certain situations such
       as returning a local variable, where copy elision isn't applicable.
       Consider:
*************** Dialect Options.
*** 4276,4282 ****
              return std::move (t);
            }
  
!      Here, the 'std::move' call is redundant.  Because G++ implements
       Core Issue 1579, another example is:
  
            struct T { // convertible to U
--- 4280,4286 ----
              return std::move (t);
            }
  
!      Here, the â€˜std::moveâ€™ call is redundant.  Because G++ implements
       Core Issue 1579, another example is:
  
            struct T { // convertible to U
*************** Dialect Options.
*** 4296,4304 ****
       yet G++ treats the return value as if it were designated by an
       rvalue.
  
!      This warning is enabled by '-Wextra'.
  
! '-Wrange-loop-construct (C++ and Objective-C++ only)'
       This warning warns when a C++ range-based for-loop is creating an
       unnecessary copy.  This can happen when the range declaration is
       not a reference, but probably should be.  For example:
--- 4300,4308 ----
       yet G++ treats the return value as if it were designated by an
       rvalue.
  
!      This warning is enabled by â€˜-Wextraâ€™.
  
! â€˜-Wrange-loop-construct (C++ and Objective-C++ only)â€™
       This warning warns when a C++ range-based for-loop is creating an
       unnecessary copy.  This can happen when the range declaration is
       not a reference, but probably should be.  For example:
*************** Dialect Options.
*** 4322,4333 ****
            }
  
       In the example above, in every iteration of the loop a temporary
!      value of type 'double' is created and destroyed, to which the
!      reference 'const double &' is bound.
  
!      This warning is enabled by '-Wall'.
  
! '-Wredundant-tags (C++ and Objective-C++ only)'
       Warn about redundant class-key and enum-key in references to class
       types and enumerated types in contexts where the key can be
       eliminated without causing an ambiguity.  For example:
--- 4326,4337 ----
            }
  
       In the example above, in every iteration of the loop a temporary
!      value of type â€˜doubleâ€™ is created and destroyed, to which the
!      reference â€˜const double &â€™ is bound.
  
!      This warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Wredundant-tags (C++ and Objective-C++ only)â€™
       Warn about redundant class-key and enum-key in references to class
       types and enumerated types in contexts where the key can be
       eliminated without causing an ambiguity.  For example:
*************** Dialect Options.
*** 4341,4347 ****
            void foo ();   // "hides" struct foo
            void bar (struct foo&);  // no warning, keyword struct is necessary
  
! '-Wno-subobject-linkage (C++ and Objective-C++ only)'
       Do not warn if a class type has a base or a field whose type uses
       the anonymous namespace or depends on a type with no linkage.  If a
       type A depends on a type B with no or internal linkage, defining it
--- 4345,4351 ----
            void foo ();   // "hides" struct foo
            void bar (struct foo&);  // no warning, keyword struct is necessary
  
! â€˜-Wno-subobject-linkage (C++ and Objective-C++ only)â€™
       Do not warn if a class type has a base or a field whose type uses
       the anonymous namespace or depends on a type with no linkage.  If a
       type A depends on a type B with no or internal linkage, defining it
*************** Dialect Options.
*** 4351,4416 ****
       warning is to give it internal linkage by putting it in an
       anonymous namespace as well.  The compiler doesn't give this
       warning for types defined in the main .C file, as those are
!      unlikely to have multiple definitions.  '-Wsubobject-linkage' is
       enabled by default.
  
! '-Weffc++ (C++ and Objective-C++ only)'
       Warn about violations of the following style guidelines from Scott
!      Meyers' 'Effective C++' series of books:
  
!         * Define a copy constructor and an assignment operator for
            classes with dynamically-allocated memory.
  
!         * Prefer initialization to assignment in constructors.
  
!         * Have 'operator=' return a reference to '*this'.
  
!         * Don't try to return a reference when you must return an
            object.
  
!         * Distinguish between prefix and postfix forms of increment and
            decrement operators.
  
!         * Never overload '&&', '||', or ','.
  
!      This option also enables '-Wnon-virtual-dtor', which is also one of
       the effective C++ recommendations.  However, the check is extended
       to warn about the lack of virtual destructor in accessible
       non-polymorphic bases classes too.
  
       When selecting this option, be aware that the standard library
!      headers do not obey all of these guidelines; use 'grep -v' to
       filter out those warnings.
  
! '-Wno-exceptions (C++ and Objective-C++ only)'
       Disable the warning about the case when an exception handler is
       shadowed by another handler, which can point out a wrong ordering
       of exception handlers.
  
! '-Wstrict-null-sentinel (C++ and Objective-C++ only)'
!      Warn about the use of an uncasted 'NULL' as sentinel.  When
!      compiling only with GCC this is a valid sentinel, as 'NULL' is
!      defined to '__null'.  Although it is a null pointer constant rather
       than a null pointer, it is guaranteed to be of the same size as a
       pointer.  But this use is not portable across different compilers.
  
! '-Wno-non-template-friend (C++ and Objective-C++ only)'
       Disable warnings when non-template friend functions are declared
       within a template.  In very old versions of GCC that predate
!      implementation of the ISO standard, declarations such as 'friend
!      int foo(int)', where the name of the friend is an unqualified-id,
       could be interpreted as a particular specialization of a template
       function; the warning exists to diagnose compatibility problems,
       and is enabled by default.
  
! '-Wold-style-cast (C++ and Objective-C++ only)'
       Warn if an old-style (C-style) cast to a non-void type is used
!      within a C++ program.  The new-style casts ('dynamic_cast',
!      'static_cast', 'reinterpret_cast', and 'const_cast') are less
       vulnerable to unintended effects and much easier to search for.
  
! '-Woverloaded-virtual (C++ and Objective-C++ only)'
! '-Woverloaded-virtual=N'
       Warn when a function declaration hides virtual functions from a
       base class.  For example, in:
  
--- 4355,4420 ----
       warning is to give it internal linkage by putting it in an
       anonymous namespace as well.  The compiler doesn't give this
       warning for types defined in the main .C file, as those are
!      unlikely to have multiple definitions.  â€˜-Wsubobject-linkageâ€™ is
       enabled by default.
  
! â€˜-Weffc++ (C++ and Objective-C++ only)â€™
       Warn about violations of the following style guidelines from Scott
!      Meyers' â€˜Effective C++â€™ series of books:
  
!         â€¢ Define a copy constructor and an assignment operator for
            classes with dynamically-allocated memory.
  
!         â€¢ Prefer initialization to assignment in constructors.
  
!         â€¢ Have â€˜operator=â€™ return a reference to â€˜*thisâ€™.
  
!         â€¢ Don't try to return a reference when you must return an
            object.
  
!         â€¢ Distinguish between prefix and postfix forms of increment and
            decrement operators.
  
!         â€¢ Never overload â€˜&&â€™, â€˜||â€™, or â€˜,â€™.
  
!      This option also enables â€˜-Wnon-virtual-dtorâ€™, which is also one of
       the effective C++ recommendations.  However, the check is extended
       to warn about the lack of virtual destructor in accessible
       non-polymorphic bases classes too.
  
       When selecting this option, be aware that the standard library
!      headers do not obey all of these guidelines; use â€˜grep -vâ€™ to
       filter out those warnings.
  
! â€˜-Wno-exceptions (C++ and Objective-C++ only)â€™
       Disable the warning about the case when an exception handler is
       shadowed by another handler, which can point out a wrong ordering
       of exception handlers.
  
! â€˜-Wstrict-null-sentinel (C++ and Objective-C++ only)â€™
!      Warn about the use of an uncasted â€˜NULLâ€™ as sentinel.  When
!      compiling only with GCC this is a valid sentinel, as â€˜NULLâ€™ is
!      defined to â€˜__nullâ€™.  Although it is a null pointer constant rather
       than a null pointer, it is guaranteed to be of the same size as a
       pointer.  But this use is not portable across different compilers.
  
! â€˜-Wno-non-template-friend (C++ and Objective-C++ only)â€™
       Disable warnings when non-template friend functions are declared
       within a template.  In very old versions of GCC that predate
!      implementation of the ISO standard, declarations such as â€˜friend
!      int foo(int)â€™, where the name of the friend is an unqualified-id,
       could be interpreted as a particular specialization of a template
       function; the warning exists to diagnose compatibility problems,
       and is enabled by default.
  
! â€˜-Wold-style-cast (C++ and Objective-C++ only)â€™
       Warn if an old-style (C-style) cast to a non-void type is used
!      within a C++ program.  The new-style casts (â€˜dynamic_castâ€™,
!      â€˜static_castâ€™, â€˜reinterpret_castâ€™, and â€˜const_castâ€™) are less
       vulnerable to unintended effects and much easier to search for.
  
! â€˜-Woverloaded-virtual (C++ and Objective-C++ only)â€™
! â€˜-Woverloaded-virtual=Nâ€™
       Warn when a function declaration hides virtual functions from a
       base class.  For example, in:
  
*************** Dialect Options.
*** 4422,4428 ****
              void f(int); // does not override
            };
  
!      the 'A' class version of 'f' is hidden in 'B', and code like:
  
            B* b;
            b->f();
--- 4426,4432 ----
              void f(int); // does not override
            };
  
!      the â€˜Aâ€™ class version of â€˜fâ€™ is hidden in â€˜Bâ€™, and code like:
  
            B* b;
            b->f();
*************** Dialect Options.
*** 4431,4437 ****
  
       In cases where the different signatures are not an accident, the
       simplest solution is to add a using-declaration to the derived
!      class to un-hide the base function, e.g.  add 'using A::f;' to 'B'.
  
       The optional level suffix controls the behavior when all the
       declarations in the derived class override virtual functions in the
--- 4435,4441 ----
  
       In cases where the different signatures are not an accident, the
       simplest solution is to add a using-declaration to the derived
!      class to un-hide the base function, e.g.  add â€˜using A::f;â€™ to â€˜Bâ€™.
  
       The optional level suffix controls the behavior when all the
       declarations in the derived class override virtual functions in the
*************** Dialect Options.
*** 4451,4491 ****
       semantics for some of the overloads are fine.
  
       At level 1, this case does not warn; at level 2, it does.
!      '-Woverloaded-virtual' by itself selects level 2.  Level 1 is
!      included in '-Wall'.
  
! '-Wno-pmf-conversions (C++ and Objective-C++ only)'
       Disable the diagnostic for converting a bound pointer to member
       function to a plain pointer.
  
! '-Wsign-promo (C++ and Objective-C++ only)'
       Warn when overload resolution chooses a promotion from unsigned or
       enumerated type to a signed type, over a conversion to an unsigned
       type of the same size.  Previous versions of G++ tried to preserve
       unsignedness, but the standard mandates the current behavior.
  
! '-Wtemplates (C++ and Objective-C++ only)'
       Warn when a primary template declaration is encountered.  Some
       coding rules disallow templates, and this may be used to enforce
       that rule.  The warning is inactive inside a system header file,
       such as the STL, so one can still use the STL. One may also
       instantiate or specialize templates.
  
! '-Wmismatched-new-delete (C++ and Objective-C++ only)'
!      Warn for mismatches between calls to 'operator new' or 'operator
!      delete' and the corresponding call to the allocation or
!      deallocation function.  This includes invocations of C++ 'operator
!      delete' with pointers returned from either mismatched forms of
!      'operator new', or from other functions that allocate objects for
!      which the 'operator delete' isn't a suitable deallocator, as well
       as calls to other deallocation functions with pointers returned
!      from 'operator new' for which the deallocation function isn't
       suitable.
  
!      For example, the 'delete' expression in the function below is
!      diagnosed because it doesn't match the array form of the 'new'
       expression the pointer argument was returned from.  Similarly, the
!      call to 'free' is also diagnosed.
  
            void f ()
            {
--- 4455,4495 ----
       semantics for some of the overloads are fine.
  
       At level 1, this case does not warn; at level 2, it does.
!      â€˜-Woverloaded-virtualâ€™ by itself selects level 2.  Level 1 is
!      included in â€˜-Wallâ€™.
  
! â€˜-Wno-pmf-conversions (C++ and Objective-C++ only)â€™
       Disable the diagnostic for converting a bound pointer to member
       function to a plain pointer.
  
! â€˜-Wsign-promo (C++ and Objective-C++ only)â€™
       Warn when overload resolution chooses a promotion from unsigned or
       enumerated type to a signed type, over a conversion to an unsigned
       type of the same size.  Previous versions of G++ tried to preserve
       unsignedness, but the standard mandates the current behavior.
  
! â€˜-Wtemplates (C++ and Objective-C++ only)â€™
       Warn when a primary template declaration is encountered.  Some
       coding rules disallow templates, and this may be used to enforce
       that rule.  The warning is inactive inside a system header file,
       such as the STL, so one can still use the STL. One may also
       instantiate or specialize templates.
  
! â€˜-Wmismatched-new-delete (C++ and Objective-C++ only)â€™
!      Warn for mismatches between calls to â€˜operator newâ€™ or â€˜operator
!      deleteâ€™ and the corresponding call to the allocation or
!      deallocation function.  This includes invocations of C++ â€˜operator
!      deleteâ€™ with pointers returned from either mismatched forms of
!      â€˜operator newâ€™, or from other functions that allocate objects for
!      which the â€˜operator deleteâ€™ isn't a suitable deallocator, as well
       as calls to other deallocation functions with pointers returned
!      from â€˜operator newâ€™ for which the deallocation function isn't
       suitable.
  
!      For example, the â€˜deleteâ€™ expression in the function below is
!      diagnosed because it doesn't match the array form of the â€˜newâ€™
       expression the pointer argument was returned from.  Similarly, the
!      call to â€˜freeâ€™ is also diagnosed.
  
            void f ()
            {
*************** Dialect Options.
*** 4496,4516 ****
              free (p);   // warning: mismatch between new and free
            }
  
!      The related option '-Wmismatched-dealloc' diagnoses mismatches
       involving allocation and deallocation functions other than
!      'operator new' and 'operator delete'.
  
!      '-Wmismatched-new-delete' is included in '-Wall'.
  
! '-Wmismatched-tags (C++ and Objective-C++ only)'
       Warn for declarations of structs, classes, and class templates and
       their specializations with a class-key that does not match either
       the definition or the first declaration if no definition is
       provided.
  
!      For example, the declaration of 'struct Object' in the argument
!      list of 'draw' triggers the warning.  To avoid it, either remove
!      the redundant class-key 'struct' or replace it with 'class' to
       match its definition.
            class Object {
            public:
--- 4500,4520 ----
              free (p);   // warning: mismatch between new and free
            }
  
!      The related option â€˜-Wmismatched-deallocâ€™ diagnoses mismatches
       involving allocation and deallocation functions other than
!      â€˜operator newâ€™ and â€˜operator deleteâ€™.
  
!      â€˜-Wmismatched-new-deleteâ€™ is included in â€˜-Wallâ€™.
  
! â€˜-Wmismatched-tags (C++ and Objective-C++ only)â€™
       Warn for declarations of structs, classes, and class templates and
       their specializations with a class-key that does not match either
       the definition or the first declaration if no definition is
       provided.
  
!      For example, the declaration of â€˜struct Objectâ€™ in the argument
!      list of â€˜drawâ€™ triggers the warning.  To avoid it, either remove
!      the redundant class-key â€˜structâ€™ or replace it with â€˜classâ€™ to
       match its definition.
            class Object {
            public:
*************** Dialect Options.
*** 4518,4547 ****
            };
            void draw (struct Object*);
  
!      It is not wrong to declare a class with the class-key 'struct' as
!      the example above shows.  The '-Wmismatched-tags' option is
       intended to help achieve a consistent style of class declarations.
       In code that is intended to be portable to Windows-based compilers
       the warning helps prevent unresolved references due to the
       difference in the mangling of symbols declared with different
       class-keys.  The option can be used either on its own or in
!      conjunction with '-Wredundant-tags'.
  
! '-Wmultiple-inheritance (C++ and Objective-C++ only)'
       Warn when a class is defined with multiple direct base classes.
       Some coding rules disallow multiple inheritance, and this may be
       used to enforce that rule.  The warning is inactive inside a system
       header file, such as the STL, so one can still use the STL. One may
       also define classes that indirectly use multiple inheritance.
  
! '-Wvirtual-inheritance'
       Warn when a class is defined with a virtual direct base class.
       Some coding rules disallow multiple inheritance, and this may be
       used to enforce that rule.  The warning is inactive inside a system
       header file, such as the STL, so one can still use the STL. One may
       also define classes that indirectly use virtual inheritance.
  
! '-Wno-virtual-move-assign'
       Suppress warnings about inheriting from a virtual base with a
       non-trivial C++11 move assignment operator.  This is dangerous
       because if the virtual base is reachable along more than one path,
--- 4522,4551 ----
            };
            void draw (struct Object*);
  
!      It is not wrong to declare a class with the class-key â€˜structâ€™ as
!      the example above shows.  The â€˜-Wmismatched-tagsâ€™ option is
       intended to help achieve a consistent style of class declarations.
       In code that is intended to be portable to Windows-based compilers
       the warning helps prevent unresolved references due to the
       difference in the mangling of symbols declared with different
       class-keys.  The option can be used either on its own or in
!      conjunction with â€˜-Wredundant-tagsâ€™.
  
! â€˜-Wmultiple-inheritance (C++ and Objective-C++ only)â€™
       Warn when a class is defined with multiple direct base classes.
       Some coding rules disallow multiple inheritance, and this may be
       used to enforce that rule.  The warning is inactive inside a system
       header file, such as the STL, so one can still use the STL. One may
       also define classes that indirectly use multiple inheritance.
  
! â€˜-Wvirtual-inheritanceâ€™
       Warn when a class is defined with a virtual direct base class.
       Some coding rules disallow multiple inheritance, and this may be
       used to enforce that rule.  The warning is inactive inside a system
       header file, such as the STL, so one can still use the STL. One may
       also define classes that indirectly use virtual inheritance.
  
! â€˜-Wno-virtual-move-assignâ€™
       Suppress warnings about inheriting from a virtual base with a
       non-trivial C++11 move assignment operator.  This is dangerous
       because if the virtual base is reachable along more than one path,
*************** Dialect Options.
*** 4550,4569 ****
       to avoid moving from a moved-from object, this warning can be
       disabled.
  
! '-Wnamespaces'
       Warn when a namespace definition is opened.  Some coding rules
       disallow namespaces, and this may be used to enforce that rule.
       The warning is inactive inside a system header file, such as the
       STL, so one can still use the STL. One may also use using
       directives and qualified names.
  
! '-Wno-template-body (C++ and Objective-C++ only)'
       Disable diagnosing errors when parsing a template, and instead
       issue an error only upon instantiation of the template.  This flag
       can also be used to downgrade such errors into warnings with
!      'Wno-error=' or '-fpermissive'.
  
! '-Wno-template-id-cdtor (C++ and Objective-C++ only)'
       Disable the warning about the use of simple-template-id as the
       declarator-id of a constructor or destructor, which became invalid
       in C++20 via DR 2237.  For example:
--- 4554,4573 ----
       to avoid moving from a moved-from object, this warning can be
       disabled.
  
! â€˜-Wnamespacesâ€™
       Warn when a namespace definition is opened.  Some coding rules
       disallow namespaces, and this may be used to enforce that rule.
       The warning is inactive inside a system header file, such as the
       STL, so one can still use the STL. One may also use using
       directives and qualified names.
  
! â€˜-Wno-template-body (C++ and Objective-C++ only)â€™
       Disable diagnosing errors when parsing a template, and instead
       issue an error only upon instantiation of the template.  This flag
       can also be used to downgrade such errors into warnings with
!      â€˜Wno-error=â€™ or â€˜-fpermissiveâ€™.
  
! â€˜-Wno-template-id-cdtor (C++ and Objective-C++ only)â€™
       Disable the warning about the use of simple-template-id as the
       declarator-id of a constructor or destructor, which became invalid
       in C++20 via DR 2237.  For example:
*************** Dialect Options.
*** 4573,4582 ****
              ~S<T>();  // should be ~S();
            };
  
!      '-Wtemplate-id-cdtor' is enabled by default with '-std=c++20'; it
!      is also enabled by '-Wc++20-compat'.
  
! '-Wtemplate-names-tu-local'
       Warn when a template body hides an exposure of a
       translation-unit-local entity.  In most cases, referring to a
       translation-unit-local entity (such as an internal linkage
--- 4577,4586 ----
              ~S<T>();  // should be ~S();
            };
  
!      â€˜-Wtemplate-id-cdtorâ€™ is enabled by default with â€˜-std=c++20â€™; it
!      is also enabled by â€˜-Wc++20-compatâ€™.
  
! â€˜-Wtemplate-names-tu-localâ€™
       Warn when a template body hides an exposure of a
       translation-unit-local entity.  In most cases, referring to a
       translation-unit-local entity (such as an internal linkage
*************** Dialect Options.
*** 4592,4604 ****
       might occur.  The presence of an explicit instantiation silences
       the warning.
  
!      This flag is enabled by '-Wextra'.
  
! '-Wno-terminate (C++ and Objective-C++ only)'
       Disable the warning about a throw-expression that will immediately
!      result in a call to 'terminate'.
  
! '-Wno-vexing-parse (C++ and Objective-C++ only)'
       Warn about the most vexing parse syntactic ambiguity.  This warns
       about the cases when a declaration looks like a variable
       definition, but the C++ language requires it to be interpreted as a
--- 4596,4608 ----
       might occur.  The presence of an explicit instantiation silences
       the warning.
  
!      This flag is enabled by â€˜-Wextraâ€™.
  
! â€˜-Wno-terminate (C++ and Objective-C++ only)â€™
       Disable the warning about a throw-expression that will immediately
!      result in a call to â€˜terminateâ€™.
  
! â€˜-Wno-vexing-parse (C++ and Objective-C++ only)â€™
       Warn about the most vexing parse syntactic ambiguity.  This warns
       about the cases when a declaration looks like a variable
       definition, but the C++ language requires it to be interpreted as a
*************** Dialect Options.
*** 4624,4660 ****
  
       This warning is enabled by default.
  
! '-Wno-class-conversion (C++ and Objective-C++ only)'
       Do not warn when a conversion function converts an object to the
       same type, to a base class of that type, or to void; such a
       conversion function will never be called.
  
! '-Wvolatile (C++ and Objective-C++ only)'
!      Warn about deprecated uses of the 'volatile' qualifier.  This
!      includes postfix and prefix '++' and '--' expressions of
!      'volatile'-qualified types, using simple assignments where the left
!      operand is a 'volatile'-qualified non-class type for their value,
       compound assignments where the left operand is a
!      'volatile'-qualified non-class type, 'volatile'-qualified function
!      return type, 'volatile'-qualified parameter type, and structured
!      bindings of a 'volatile'-qualified type.  This usage was deprecated
       in C++20.
  
!      Enabled by default with '-std=c++20'.  Before '-std=c++20', enabled
!      with explicit '-Wdeprecated'.
  
! '-Waligned-new'
       Warn about a new-expression of a type that requires greater
!      alignment than the 'alignof(std::max_align_t)' but uses an
       allocation function without an explicit alignment parameter.  This
!      option is enabled by '-Wall'.
  
       Normally this only warns about global allocation functions, but
!      '-Waligned-new=all' also warns about class member allocation
       functions.
  
! '-Wno-placement-new'
! '-Wplacement-new=N'
       Warn about placement new expressions with undefined behavior, such
       as constructing an object in a buffer that is smaller than the type
       of the object.  For example, the placement new expression below is
--- 4628,4664 ----
  
       This warning is enabled by default.
  
! â€˜-Wno-class-conversion (C++ and Objective-C++ only)â€™
       Do not warn when a conversion function converts an object to the
       same type, to a base class of that type, or to void; such a
       conversion function will never be called.
  
! â€˜-Wvolatile (C++ and Objective-C++ only)â€™
!      Warn about deprecated uses of the â€˜volatileâ€™ qualifier.  This
!      includes postfix and prefix â€˜++â€™ and â€˜--â€™ expressions of
!      â€˜volatileâ€™-qualified types, using simple assignments where the left
!      operand is a â€˜volatileâ€™-qualified non-class type for their value,
       compound assignments where the left operand is a
!      â€˜volatileâ€™-qualified non-class type, â€˜volatileâ€™-qualified function
!      return type, â€˜volatileâ€™-qualified parameter type, and structured
!      bindings of a â€˜volatileâ€™-qualified type.  This usage was deprecated
       in C++20.
  
!      Enabled by default with â€˜-std=c++20â€™.  Before â€˜-std=c++20â€™, enabled
!      with explicit â€˜-Wdeprecatedâ€™.
  
! â€˜-Waligned-newâ€™
       Warn about a new-expression of a type that requires greater
!      alignment than the â€˜alignof(std::max_align_t)â€™ but uses an
       allocation function without an explicit alignment parameter.  This
!      option is enabled by â€˜-Wallâ€™.
  
       Normally this only warns about global allocation functions, but
!      â€˜-Waligned-new=allâ€™ also warns about class member allocation
       functions.
  
! â€˜-Wno-placement-newâ€™
! â€˜-Wplacement-new=Nâ€™
       Warn about placement new expressions with undefined behavior, such
       as constructing an object in a buffer that is smaller than the type
       of the object.  For example, the placement new expression below is
*************** Dialect Options.
*** 4664,4682 ****
            new (buf) int[64];
       This warning is enabled by default.
  
!      '-Wplacement-new=1'
!           This is the default warning level of '-Wplacement-new'.  At
            this level the warning is not issued for some strictly
            undefined constructs that GCC allows as extensions for
            compatibility with legacy code.  For example, the following
!           'new' expression is not diagnosed at this level even though it
            has undefined behavior according to the C++ standard because
            it writes past the end of the one-element array.
                 struct S { int n, a[1]; };
                 S *s = (S *)malloc (sizeof *s + 31 * sizeof s->a[0]);
                 new (s->a)int [32]();
  
!      '-Wplacement-new=2'
            At this level, in addition to diagnosing all the same
            constructs as at level 1, a diagnostic is also issued for
            placement new expressions that construct an object in the last
--- 4668,4686 ----
            new (buf) int[64];
       This warning is enabled by default.
  
!      â€˜-Wplacement-new=1â€™
!           This is the default warning level of â€˜-Wplacement-newâ€™.  At
            this level the warning is not issued for some strictly
            undefined constructs that GCC allows as extensions for
            compatibility with legacy code.  For example, the following
!           â€˜newâ€™ expression is not diagnosed at this level even though it
            has undefined behavior according to the C++ standard because
            it writes past the end of the one-element array.
                 struct S { int n, a[1]; };
                 S *s = (S *)malloc (sizeof *s + 31 * sizeof s->a[0]);
                 new (s->a)int [32]();
  
!      â€˜-Wplacement-new=2â€™
            At this level, in addition to diagnosing all the same
            constructs as at level 1, a diagnostic is also issued for
            placement new expressions that construct an object in the last
*************** Dialect Options.
*** 4689,4718 ****
                 S *s = (S *)malloc (sizeof *s + 32 * sizeof s->a[0]);
                 new (s->a)int [32]();
  
! '-Wcatch-value'
! '-Wcatch-value=N (C++ and Objective-C++ only)'
       Warn about catch handlers that do not catch via reference.  With
!      '-Wcatch-value=1' (or '-Wcatch-value' for short) warn about
       polymorphic class types that are caught by value.  With
!      '-Wcatch-value=2' warn about all class types that are caught by
!      value.  With '-Wcatch-value=3' warn about all types that are not
!      caught by reference.  '-Wcatch-value' is enabled by '-Wall'.
  
! '-Wconditionally-supported (C++ and Objective-C++ only)'
       Warn for conditionally-supported (C++11 [intro.defs]) constructs.
  
! '-Wno-defaulted-function-deleted (C++ and Objective-C++ only)'
       Warn when an explicitly defaulted function is deleted by the
       compiler.  That can occur when the function's declared type does
       not match the type of the function that would have been implicitly
       declared.  This warning is enabled by default.
  
! '-Wno-delete-incomplete (C++ and Objective-C++ only)'
       Do not warn when deleting a pointer to incomplete type, which may
       cause undefined behavior at runtime.  This warning is enabled by
       default.
  
! '-Wextra-semi (C++, Objective-C++ only)'
       Warn about redundant semicolons.  There are various contexts in
       which an extra semicolon can occur.  One is a semicolon after
       in-class function definitions, which is valid in all C++ dialects
--- 4693,4722 ----
                 S *s = (S *)malloc (sizeof *s + 32 * sizeof s->a[0]);
                 new (s->a)int [32]();
  
! â€˜-Wcatch-valueâ€™
! â€˜-Wcatch-value=N (C++ and Objective-C++ only)â€™
       Warn about catch handlers that do not catch via reference.  With
!      â€˜-Wcatch-value=1â€™ (or â€˜-Wcatch-valueâ€™ for short) warn about
       polymorphic class types that are caught by value.  With
!      â€˜-Wcatch-value=2â€™ warn about all class types that are caught by
!      value.  With â€˜-Wcatch-value=3â€™ warn about all types that are not
!      caught by reference.  â€˜-Wcatch-valueâ€™ is enabled by â€˜-Wallâ€™.
  
! â€˜-Wconditionally-supported (C++ and Objective-C++ only)â€™
       Warn for conditionally-supported (C++11 [intro.defs]) constructs.
  
! â€˜-Wno-defaulted-function-deleted (C++ and Objective-C++ only)â€™
       Warn when an explicitly defaulted function is deleted by the
       compiler.  That can occur when the function's declared type does
       not match the type of the function that would have been implicitly
       declared.  This warning is enabled by default.
  
! â€˜-Wno-delete-incomplete (C++ and Objective-C++ only)â€™
       Do not warn when deleting a pointer to incomplete type, which may
       cause undefined behavior at runtime.  This warning is enabled by
       default.
  
! â€˜-Wextra-semi (C++, Objective-C++ only)â€™
       Warn about redundant semicolons.  There are various contexts in
       which an extra semicolon can occur.  One is a semicolon after
       in-class function definitions, which is valid in all C++ dialects
*************** Dialect Options.
*** 4737,4775 ****
              ;
            };
  
! '-Wno-global-module (C++ and Objective-C++ only)'
       Disable the diagnostic for when the global module fragment of a
       module unit does not consist only of preprocessor directives.
  
! '-Wno-inaccessible-base (C++, Objective-C++ only)'
       This option controls warnings when a base class is inaccessible in
       a class derived from it due to ambiguity.  The warning is enabled
       by default.  Note that the warning for ambiguous virtual bases is
!      enabled by the '-Wextra' option.
            struct A { int a; };
  
            struct B : A { };
  
            struct C : B, A { };
  
! '-Wno-inherited-variadic-ctor'
       Suppress warnings about use of C++11 inheriting constructors when
       the base class inherited from has a C variadic constructor; the
       warning is on by default because the ellipsis is not inherited.
  
! '-Wno-invalid-offsetof (C++ and Objective-C++ only)'
!      Suppress warnings from applying the 'offsetof' macro to a non-POD
!      type.  According to the 2014 ISO C++ standard, applying 'offsetof'
       to a non-standard-layout type is undefined.  In existing C++
!      implementations, however, 'offsetof' typically gives meaningful
       results.  This flag is for users who are aware that they are
       writing nonportable code and who have deliberately chosen to ignore
       the warning about it.
  
!      The restrictions on 'offsetof' may be relaxed in a future version
       of the C++ standard.
  
! '-Wsized-deallocation (C++ and Objective-C++ only)'
       Warn about a definition of an unsized deallocation function
            void operator delete (void *) noexcept;
            void operator delete[] (void *) noexcept;
--- 4741,4779 ----
              ;
            };
  
! â€˜-Wno-global-module (C++ and Objective-C++ only)â€™
       Disable the diagnostic for when the global module fragment of a
       module unit does not consist only of preprocessor directives.
  
! â€˜-Wno-inaccessible-base (C++, Objective-C++ only)â€™
       This option controls warnings when a base class is inaccessible in
       a class derived from it due to ambiguity.  The warning is enabled
       by default.  Note that the warning for ambiguous virtual bases is
!      enabled by the â€˜-Wextraâ€™ option.
            struct A { int a; };
  
            struct B : A { };
  
            struct C : B, A { };
  
! â€˜-Wno-inherited-variadic-ctorâ€™
       Suppress warnings about use of C++11 inheriting constructors when
       the base class inherited from has a C variadic constructor; the
       warning is on by default because the ellipsis is not inherited.
  
! â€˜-Wno-invalid-offsetof (C++ and Objective-C++ only)â€™
!      Suppress warnings from applying the â€˜offsetofâ€™ macro to a non-POD
!      type.  According to the 2014 ISO C++ standard, applying â€˜offsetofâ€™
       to a non-standard-layout type is undefined.  In existing C++
!      implementations, however, â€˜offsetofâ€™ typically gives meaningful
       results.  This flag is for users who are aware that they are
       writing nonportable code and who have deliberately chosen to ignore
       the warning about it.
  
!      The restrictions on â€˜offsetofâ€™ may be relaxed in a future version
       of the C++ standard.
  
! â€˜-Wsized-deallocation (C++ and Objective-C++ only)â€™
       Warn about a definition of an unsized deallocation function
            void operator delete (void *) noexcept;
            void operator delete[] (void *) noexcept;
*************** Dialect Options.
*** 4777,4811 ****
       function
            void operator delete (void *, std::size_t) noexcept;
            void operator delete[] (void *, std::size_t) noexcept;
!      or vice versa.  Enabled by '-Wextra' along with
!      '-fsized-deallocation'.
  
! '-Wsuggest-final-types'
       Warn about types with virtual methods where code quality would be
!      improved if the type were declared with the C++11 'final'
       specifier, or, if possible, declared in an anonymous namespace.
       This allows GCC to more aggressively devirtualize the polymorphic
       calls.  This warning is more effective with link-time optimization,
       where the information about the class hierarchy graph is more
       complete.
  
! '-Wsuggest-final-methods'
       Warn about virtual methods where code quality would be improved if
!      the method were declared with the C++11 'final' specifier, or, if
       possible, its type were declared in an anonymous namespace or with
!      the 'final' specifier.  This warning is more effective with
       link-time optimization, where the information about the class
       hierarchy graph is more complete.  It is recommended to first
!      consider suggestions of '-Wsuggest-final-types' and then rebuild
       with new annotations.
  
! '-Wsuggest-override'
       Warn about overriding virtual functions that are not marked with
!      the 'override' keyword.
  
! '-Wno-conversion-null (C++ and Objective-C++ only)'
!      Do not warn for conversions between 'NULL' and non-pointer types.
!      '-Wconversion-null' is enabled by default.
  
  
  File: gcc.info,  Node: Objective-C and Objective-C++ Dialect Options,  Next: OpenMP and OpenACC Options,  Prev: C++ Dialect Options,  Up: Invoking GCC
--- 4781,4815 ----
       function
            void operator delete (void *, std::size_t) noexcept;
            void operator delete[] (void *, std::size_t) noexcept;
!      or vice versa.  Enabled by â€˜-Wextraâ€™ along with
!      â€˜-fsized-deallocationâ€™.
  
! â€˜-Wsuggest-final-typesâ€™
       Warn about types with virtual methods where code quality would be
!      improved if the type were declared with the C++11 â€˜finalâ€™
       specifier, or, if possible, declared in an anonymous namespace.
       This allows GCC to more aggressively devirtualize the polymorphic
       calls.  This warning is more effective with link-time optimization,
       where the information about the class hierarchy graph is more
       complete.
  
! â€˜-Wsuggest-final-methodsâ€™
       Warn about virtual methods where code quality would be improved if
!      the method were declared with the C++11 â€˜finalâ€™ specifier, or, if
       possible, its type were declared in an anonymous namespace or with
!      the â€˜finalâ€™ specifier.  This warning is more effective with
       link-time optimization, where the information about the class
       hierarchy graph is more complete.  It is recommended to first
!      consider suggestions of â€˜-Wsuggest-final-typesâ€™ and then rebuild
       with new annotations.
  
! â€˜-Wsuggest-overrideâ€™
       Warn about overriding virtual functions that are not marked with
!      the â€˜overrideâ€™ keyword.
  
! â€˜-Wno-conversion-null (C++ and Objective-C++ only)â€™
!      Do not warn for conversions between â€˜NULLâ€™ and non-pointer types.
!      â€˜-Wconversion-nullâ€™ is enabled by default.
  
  
  File: gcc.info,  Node: Objective-C and Objective-C++ Dialect Options,  Next: OpenMP and OpenACC Options,  Prev: C++ Dialect Options,  Up: Invoking GCC
*************** Standards, for references.)
*** 4820,4870 ****
   This section describes the command-line options that are only
  meaningful for Objective-C and Objective-C++ programs.  You can also use
  most of the language-independent GNU compiler options.  For example, you
! might compile a file 'some_class.m' like this:
  
       gcc -g -fgnu-runtime -O -c some_class.m
  
! In this example, '-fgnu-runtime' is an option meant only for Objective-C
  and Objective-C++ programs; you can use the other options with any
  language supported by GCC.
  
   Note that since Objective-C is an extension of the C language,
  Objective-C compilations may also use options specific to the C
! front-end (e.g., '-Wtraditional').  Similarly, Objective-C++
! compilations may use C++-specific options (e.g., '-Wabi').
  
   Here is a list of options that are _only_ for compiling Objective-C and
  Objective-C++ programs:
  
! '-fconstant-string-class=CLASS-NAME'
       Use CLASS-NAME as the name of the class to instantiate for each
!      literal string specified with the syntax '@"..."'.  The default
!      class name is 'NXConstantString' if the GNU runtime is being used,
!      and 'NSConstantString' if the NeXT runtime is being used (see
!      below).  On Darwin / macOS platforms, the '-fconstant-cfstrings'
!      option, if also present, overrides the '-fconstant-string-class'
!      setting and cause '@"..."' literals to be laid out as constant
!      CoreFoundation strings.  Note that '-fconstant-cfstrings' is an
!      alias for the target-specific '-mconstant-cfstrings' equivalent.
  
! '-fgnu-runtime'
       Generate object code compatible with the standard GNU Objective-C
       runtime.  This is the default for most types of systems.
  
! '-fnext-runtime'
       Generate output compatible with the NeXT runtime.  This is the
       default for NeXT-based systems, including Darwin / macOS. The macro
!      '__NEXT_RUNTIME__' is predefined if (and only if) this option is
       used.
  
! '-fno-nil-receivers'
!      Assume that all Objective-C message dispatches ('[receiver
!      message:arg]') in this translation unit ensure that the receiver is
!      not 'nil'.  This allows for more efficient entry points in the
       runtime to be used.  This option is only available in conjunction
       with the NeXT runtime and ABI version 0 or 1.
  
! '-fobjc-abi-version=N'
       Use version N of the Objective-C ABI for the selected runtime.
       This option is currently supported only for the NeXT runtime.  In
       that case, Version 0 is the traditional (32-bit) ABI without
--- 4824,4874 ----
   This section describes the command-line options that are only
  meaningful for Objective-C and Objective-C++ programs.  You can also use
  most of the language-independent GNU compiler options.  For example, you
! might compile a file â€˜some_class.mâ€™ like this:
  
       gcc -g -fgnu-runtime -O -c some_class.m
  
! In this example, â€˜-fgnu-runtimeâ€™ is an option meant only for Objective-C
  and Objective-C++ programs; you can use the other options with any
  language supported by GCC.
  
   Note that since Objective-C is an extension of the C language,
  Objective-C compilations may also use options specific to the C
! front-end (e.g., â€˜-Wtraditionalâ€™).  Similarly, Objective-C++
! compilations may use C++-specific options (e.g., â€˜-Wabiâ€™).
  
   Here is a list of options that are _only_ for compiling Objective-C and
  Objective-C++ programs:
  
! â€˜-fconstant-string-class=CLASS-NAMEâ€™
       Use CLASS-NAME as the name of the class to instantiate for each
!      literal string specified with the syntax â€˜@"..."â€™.  The default
!      class name is â€˜NXConstantStringâ€™ if the GNU runtime is being used,
!      and â€˜NSConstantStringâ€™ if the NeXT runtime is being used (see
!      below).  On Darwin / macOS platforms, the â€˜-fconstant-cfstringsâ€™
!      option, if also present, overrides the â€˜-fconstant-string-classâ€™
!      setting and cause â€˜@"..."â€™ literals to be laid out as constant
!      CoreFoundation strings.  Note that â€˜-fconstant-cfstringsâ€™ is an
!      alias for the target-specific â€˜-mconstant-cfstringsâ€™ equivalent.
  
! â€˜-fgnu-runtimeâ€™
       Generate object code compatible with the standard GNU Objective-C
       runtime.  This is the default for most types of systems.
  
! â€˜-fnext-runtimeâ€™
       Generate output compatible with the NeXT runtime.  This is the
       default for NeXT-based systems, including Darwin / macOS. The macro
!      â€˜__NEXT_RUNTIME__â€™ is predefined if (and only if) this option is
       used.
  
! â€˜-fno-nil-receiversâ€™
!      Assume that all Objective-C message dispatches (â€˜[receiver
!      message:arg]â€™) in this translation unit ensure that the receiver is
!      not â€˜nilâ€™.  This allows for more efficient entry points in the
       runtime to be used.  This option is only available in conjunction
       with the NeXT runtime and ABI version 0 or 1.
  
! â€˜-fobjc-abi-version=Nâ€™
       Use version N of the Objective-C ABI for the selected runtime.
       This option is currently supported only for the NeXT runtime.  In
       that case, Version 0 is the traditional (32-bit) ABI without
*************** Objective-C++ programs:
*** 4875,4933 ****
       Version 0 on 32-bit target machines, and Version 2 on 64-bit target
       machines.
  
! '-fobjc-call-cxx-cdtors'
       For each Objective-C class, check if any of its instance variables
       is a C++ object with a non-trivial default constructor.  If so,
!      synthesize a special '- (id) .cxx_construct' instance method which
       runs non-trivial default constructors on any such instance
!      variables, in order, and then return 'self'.  Similarly, check if
       any instance variable is a C++ object with a non-trivial
!      destructor, and if so, synthesize a special '- (void)
!      .cxx_destruct' method which runs all such default destructors, in
       reverse order.
  
!      The '- (id) .cxx_construct' and '- (void) .cxx_destruct' methods
       thusly generated only operate on instance variables declared in the
       current Objective-C class, and not those inherited from
       superclasses.  It is the responsibility of the Objective-C runtime
       to invoke all such methods in an object's inheritance hierarchy.
!      The '- (id) .cxx_construct' methods are invoked by the runtime
!      immediately after a new object instance is allocated; the '- (void)
!      .cxx_destruct' methods are invoked immediately before the runtime
       deallocates an object instance.
  
       As of this writing, only the NeXT runtime on Mac OS X 10.4 and
!      later has support for invoking the '- (id) .cxx_construct' and '-
!      (void) .cxx_destruct' methods.
  
! '-fobjc-direct-dispatch'
       Allow fast jumps to the message dispatcher.  On Darwin this is
       accomplished via the comm page.
  
! '-fobjc-exceptions'
       Enable syntactic support for structured exception handling in
       Objective-C, similar to what is offered by C++.  This option is
!      required to use the Objective-C keywords '@try', '@throw',
!      '@catch', '@finally' and '@synchronized'.  This option is available
       with both the GNU runtime and the NeXT runtime (but not available
       in conjunction with the NeXT runtime on Mac OS X 10.2 and earlier).
  
! '-fobjc-gc'
       Enable garbage collection (GC) in Objective-C and Objective-C++
       programs.  This option is only available with the NeXT runtime; the
       GNU runtime has a different garbage collection implementation that
       does not require special compiler flags.
  
! '-fobjc-nilcheck'
       For the NeXT runtime with version 2 of the ABI, check for a nil
       receiver in method invocations before doing the actual method call.
!      This is the default and can be disabled using '-fno-objc-nilcheck'.
       Class methods and super calls are never checked for nil in this way
       no matter what this flag is set to.  Currently this flag does
       nothing when the GNU runtime, or an older version of the NeXT
       runtime ABI, is used.
  
! '-fobjc-std=objc1'
       Conform to the language syntax of Objective-C 1.0, the language
       recognized by GCC 4.0.  This only affects the Objective-C additions
       to the C/C++ language; it does not affect conformance to C/C++
--- 4879,4937 ----
       Version 0 on 32-bit target machines, and Version 2 on 64-bit target
       machines.
  
! â€˜-fobjc-call-cxx-cdtorsâ€™
       For each Objective-C class, check if any of its instance variables
       is a C++ object with a non-trivial default constructor.  If so,
!      synthesize a special â€˜- (id) .cxx_constructâ€™ instance method which
       runs non-trivial default constructors on any such instance
!      variables, in order, and then return â€˜selfâ€™.  Similarly, check if
       any instance variable is a C++ object with a non-trivial
!      destructor, and if so, synthesize a special â€˜- (void)
!      .cxx_destructâ€™ method which runs all such default destructors, in
       reverse order.
  
!      The â€˜- (id) .cxx_constructâ€™ and â€˜- (void) .cxx_destructâ€™ methods
       thusly generated only operate on instance variables declared in the
       current Objective-C class, and not those inherited from
       superclasses.  It is the responsibility of the Objective-C runtime
       to invoke all such methods in an object's inheritance hierarchy.
!      The â€˜- (id) .cxx_constructâ€™ methods are invoked by the runtime
!      immediately after a new object instance is allocated; the â€˜- (void)
!      .cxx_destructâ€™ methods are invoked immediately before the runtime
       deallocates an object instance.
  
       As of this writing, only the NeXT runtime on Mac OS X 10.4 and
!      later has support for invoking the â€˜- (id) .cxx_constructâ€™ and â€˜-
!      (void) .cxx_destructâ€™ methods.
  
! â€˜-fobjc-direct-dispatchâ€™
       Allow fast jumps to the message dispatcher.  On Darwin this is
       accomplished via the comm page.
  
! â€˜-fobjc-exceptionsâ€™
       Enable syntactic support for structured exception handling in
       Objective-C, similar to what is offered by C++.  This option is
!      required to use the Objective-C keywords â€˜@tryâ€™, â€˜@throwâ€™,
!      â€˜@catchâ€™, â€˜@finallyâ€™ and â€˜@synchronizedâ€™.  This option is available
       with both the GNU runtime and the NeXT runtime (but not available
       in conjunction with the NeXT runtime on Mac OS X 10.2 and earlier).
  
! â€˜-fobjc-gcâ€™
       Enable garbage collection (GC) in Objective-C and Objective-C++
       programs.  This option is only available with the NeXT runtime; the
       GNU runtime has a different garbage collection implementation that
       does not require special compiler flags.
  
! â€˜-fobjc-nilcheckâ€™
       For the NeXT runtime with version 2 of the ABI, check for a nil
       receiver in method invocations before doing the actual method call.
!      This is the default and can be disabled using â€˜-fno-objc-nilcheckâ€™.
       Class methods and super calls are never checked for nil in this way
       no matter what this flag is set to.  Currently this flag does
       nothing when the GNU runtime, or an older version of the NeXT
       runtime ABI, is used.
  
! â€˜-fobjc-std=objc1â€™
       Conform to the language syntax of Objective-C 1.0, the language
       recognized by GCC 4.0.  This only affects the Objective-C additions
       to the C/C++ language; it does not affect conformance to C/C++
*************** Objective-C++ programs:
*** 4938,4946 ****
       make sure that your Objective-C code can be compiled with older
       versions of GCC.
  
! '-freplace-objc-classes'
!      Emit a special marker instructing 'ld(1)' not to statically link in
!      the resulting object file, and allow 'dyld(1)' to load it in at run
       time instead.  This is used in conjunction with the
       Fix-and-Continue debugging mode, where the object file in question
       may be recompiled and dynamically reloaded in the course of program
--- 4942,4950 ----
       make sure that your Objective-C code can be compiled with older
       versions of GCC.
  
! â€˜-freplace-objc-classesâ€™
!      Emit a special marker instructing â€˜ld(1)â€™ not to statically link in
!      the resulting object file, and allow â€˜dyld(1)â€™ to load it in at run
       time instead.  This is used in conjunction with the
       Fix-and-Continue debugging mode, where the object file in question
       may be recompiled and dynamically reloaded in the course of program
*************** Objective-C++ programs:
*** 4948,5041 ****
       Currently, Fix-and-Continue functionality is only available in
       conjunction with the NeXT runtime on Mac OS X 10.3 and later.
  
! '-fzero-link'
       When compiling for the NeXT runtime, the compiler ordinarily
!      replaces calls to 'objc_getClass("...")' (when the name of the
       class is known at compile time) with static class references that
       get initialized at load time, which improves run-time performance.
!      Specifying the '-fzero-link' flag suppresses this behavior and
!      causes calls to 'objc_getClass("...")' to be retained.  This is
       useful in Zero-Link debugging mode, since it allows for individual
       class implementations to be modified during program execution.  The
       GNU runtime currently always retains calls to
!      'objc_get_class("...")' regardless of command-line options.
  
! '-fno-local-ivars'
       By default instance variables in Objective-C can be accessed as if
       they were local variables from within the methods of the class
       they're declared in.  This can lead to shadowing between instance
       variables and other variables declared either locally inside a
       class method or globally with the same name.  Specifying the
!      '-fno-local-ivars' flag disables this behavior thus avoiding
       variable shadowing issues.
  
! '-fivar-visibility=[public|protected|private|package]'
       Set the default instance variable visibility to the specified
       option so that instance variables declared outside the scope of any
       access modifier directives default to the specified visibility.
  
! '-gen-decls'
       Dump interface declarations for all classes seen in the source file
!      to a file named 'SOURCENAME.decl'.
  
! '-Wassign-intercept (Objective-C and Objective-C++ only)'
       Warn whenever an Objective-C assignment is being intercepted by the
       garbage collector.
  
! '-Wno-property-assign-default (Objective-C and Objective-C++ only)'
       Do not warn if a property for an Objective-C object has no assign
       semantics specified.
  
! '-Wno-protocol (Objective-C and Objective-C++ only)'
       If a class is declared to implement a protocol, a warning is issued
       for every method in the protocol that is not implemented by the
       class.  The default behavior is to issue a warning for every method
       not explicitly implemented in the class, even if a method
       implementation is inherited from the superclass.  If you use the
!      '-Wno-protocol' option, then methods inherited from the superclass
       are considered to be implemented, and no warning is issued for
       them.
  
! '-Wobjc-root-class (Objective-C and Objective-C++ only)'
       Warn if a class interface lacks a superclass.  Most classes will
!      inherit from 'NSObject' (or 'Object') for example.  When declaring
       classes intended to be root classes, the warning can be suppressed
       by marking their interfaces with
!      '__attribute__((objc_root_class))'.
  
! '-Wselector (Objective-C and Objective-C++ only)'
       Warn if multiple methods of different types for the same selector
       are found during compilation.  The check is performed on the list
       of methods in the final stage of compilation.  Additionally, a
       check is performed for each selector appearing in a
!      '@selector(...)' expression, and a corresponding method for that
       selector has been found during compilation.  Because these checks
       scan the method table only at the end of compilation, these
       warnings are not produced if the final stage of compilation is not
       reached, for example because an error is found during compilation,
!      or because the '-fsyntax-only' option is being used.
  
! '-Wstrict-selector-match (Objective-C and Objective-C++ only)'
       Warn if multiple methods with differing argument and/or return
       types are found for a given selector when attempting to send a
!      message using this selector to a receiver of type 'id' or 'Class'.
       When this flag is off (which is the default behavior), the compiler
       omits such warnings if any differences found are confined to types
       that share the same size and alignment.
  
! '-Wundeclared-selector (Objective-C and Objective-C++ only)'
!      Warn if a '@selector(...)' expression referring to an undeclared
       selector is found.  A selector is considered undeclared if no
!      method with that name has been declared before the '@selector(...)'
!      expression, either explicitly in an '@interface' or '@protocol'
!      declaration, or implicitly in an '@implementation' section.  This
!      option always performs its checks as soon as a '@selector(...)'
!      expression is found, while '-Wselector' only performs its checks in
       the final stage of compilation.  This also enforces the coding
       style convention that methods and selectors must be declared before
       being used.
  
! '-print-objc-runtime-info'
       Generate C header describing the largest structure that is passed
       by value, if any.
  
--- 4952,5045 ----
       Currently, Fix-and-Continue functionality is only available in
       conjunction with the NeXT runtime on Mac OS X 10.3 and later.
  
! â€˜-fzero-linkâ€™
       When compiling for the NeXT runtime, the compiler ordinarily
!      replaces calls to â€˜objc_getClass("...")â€™ (when the name of the
       class is known at compile time) with static class references that
       get initialized at load time, which improves run-time performance.
!      Specifying the â€˜-fzero-linkâ€™ flag suppresses this behavior and
!      causes calls to â€˜objc_getClass("...")â€™ to be retained.  This is
       useful in Zero-Link debugging mode, since it allows for individual
       class implementations to be modified during program execution.  The
       GNU runtime currently always retains calls to
!      â€˜objc_get_class("...")â€™ regardless of command-line options.
  
! â€˜-fno-local-ivarsâ€™
       By default instance variables in Objective-C can be accessed as if
       they were local variables from within the methods of the class
       they're declared in.  This can lead to shadowing between instance
       variables and other variables declared either locally inside a
       class method or globally with the same name.  Specifying the
!      â€˜-fno-local-ivarsâ€™ flag disables this behavior thus avoiding
       variable shadowing issues.
  
! â€˜-fivar-visibility=[public|protected|private|package]â€™
       Set the default instance variable visibility to the specified
       option so that instance variables declared outside the scope of any
       access modifier directives default to the specified visibility.
  
! â€˜-gen-declsâ€™
       Dump interface declarations for all classes seen in the source file
!      to a file named â€˜SOURCENAME.declâ€™.
  
! â€˜-Wassign-intercept (Objective-C and Objective-C++ only)â€™
       Warn whenever an Objective-C assignment is being intercepted by the
       garbage collector.
  
! â€˜-Wno-property-assign-default (Objective-C and Objective-C++ only)â€™
       Do not warn if a property for an Objective-C object has no assign
       semantics specified.
  
! â€˜-Wno-protocol (Objective-C and Objective-C++ only)â€™
       If a class is declared to implement a protocol, a warning is issued
       for every method in the protocol that is not implemented by the
       class.  The default behavior is to issue a warning for every method
       not explicitly implemented in the class, even if a method
       implementation is inherited from the superclass.  If you use the
!      â€˜-Wno-protocolâ€™ option, then methods inherited from the superclass
       are considered to be implemented, and no warning is issued for
       them.
  
! â€˜-Wobjc-root-class (Objective-C and Objective-C++ only)â€™
       Warn if a class interface lacks a superclass.  Most classes will
!      inherit from â€˜NSObjectâ€™ (or â€˜Objectâ€™) for example.  When declaring
       classes intended to be root classes, the warning can be suppressed
       by marking their interfaces with
!      â€˜__attribute__((objc_root_class))â€™.
  
! â€˜-Wselector (Objective-C and Objective-C++ only)â€™
       Warn if multiple methods of different types for the same selector
       are found during compilation.  The check is performed on the list
       of methods in the final stage of compilation.  Additionally, a
       check is performed for each selector appearing in a
!      â€˜@selector(...)â€™ expression, and a corresponding method for that
       selector has been found during compilation.  Because these checks
       scan the method table only at the end of compilation, these
       warnings are not produced if the final stage of compilation is not
       reached, for example because an error is found during compilation,
!      or because the â€˜-fsyntax-onlyâ€™ option is being used.
  
! â€˜-Wstrict-selector-match (Objective-C and Objective-C++ only)â€™
       Warn if multiple methods with differing argument and/or return
       types are found for a given selector when attempting to send a
!      message using this selector to a receiver of type â€˜idâ€™ or â€˜Classâ€™.
       When this flag is off (which is the default behavior), the compiler
       omits such warnings if any differences found are confined to types
       that share the same size and alignment.
  
! â€˜-Wundeclared-selector (Objective-C and Objective-C++ only)â€™
!      Warn if a â€˜@selector(...)â€™ expression referring to an undeclared
       selector is found.  A selector is considered undeclared if no
!      method with that name has been declared before the â€˜@selector(...)â€™
!      expression, either explicitly in an â€˜@interfaceâ€™ or â€˜@protocolâ€™
!      declaration, or implicitly in an â€˜@implementationâ€™ section.  This
!      option always performs its checks as soon as a â€˜@selector(...)â€™
!      expression is found, while â€˜-Wselectorâ€™ only performs its checks in
       the final stage of compilation.  This also enforces the coding
       style convention that methods and selectors must be declared before
       being used.
  
! â€˜-print-objc-runtime-infoâ€™
       Generate C header describing the largest structure that is passed
       by value, if any.
  
*************** File: gcc.info,  Node: OpenMP and OpenAC
*** 5046,5078 ****
  ==========================================
  
  GCC supports OpenMP extensions to the C, C++, and Fortran languages with
! the '-fopenmp' option.  Similarly, OpenACC extensions are supported in
! all three languages with '-fopenacc'.  *Note OpenMP:: and *note
  OpenACC:: for an overview of these extensions.
  
! '-foffload=disable'
! '-foffload=default'
! '-foffload=TARGET-LIST'
       Specify for which OpenMP and OpenACC offload targets code should be
       generated.  The default behavior, equivalent to
!      '-foffload=default', is to generate code for all supported offload
!      targets.  The '-foffload=disable' form generates code only for the
!      host fallback, while '-foffload=TARGET-LIST' generates code only
       for the specified comma-separated list of offload targets.
  
       Offload targets are specified in GCC's internal target-triplet
!      format.  You can run the compiler with '-v' to show the list of
!      configured offload targets under 'OFFLOAD_TARGET_NAMES'.
  
! '-foffload-options=OPTIONS'
! '-foffload-options=TARGET-TRIPLET-LIST=OPTIONS'
  
!      With '-foffload-options=OPTIONS', GCC passes the specified OPTIONS
       to the compilers for all enabled offloading targets.  You can
       specify options that apply only to a specific target or targets by
!      using the '-foffload-options=TARGET-LIST=OPTIONS' form.  The
       TARGET-LIST is a comma-separated list in the same format as for the
!      '-foffload=' option.
  
       Typical command lines are
  
--- 5050,5082 ----
  ==========================================
  
  GCC supports OpenMP extensions to the C, C++, and Fortran languages with
! the â€˜-fopenmpâ€™ option.  Similarly, OpenACC extensions are supported in
! all three languages with â€˜-fopenaccâ€™.  *Note OpenMP:: and *note
  OpenACC:: for an overview of these extensions.
  
! â€˜-foffload=disableâ€™
! â€˜-foffload=defaultâ€™
! â€˜-foffload=TARGET-LISTâ€™
       Specify for which OpenMP and OpenACC offload targets code should be
       generated.  The default behavior, equivalent to
!      â€˜-foffload=defaultâ€™, is to generate code for all supported offload
!      targets.  The â€˜-foffload=disableâ€™ form generates code only for the
!      host fallback, while â€˜-foffload=TARGET-LISTâ€™ generates code only
       for the specified comma-separated list of offload targets.
  
       Offload targets are specified in GCC's internal target-triplet
!      format.  You can run the compiler with â€˜-vâ€™ to show the list of
!      configured offload targets under â€˜OFFLOAD_TARGET_NAMESâ€™.
  
! â€˜-foffload-options=OPTIONSâ€™
! â€˜-foffload-options=TARGET-TRIPLET-LIST=OPTIONSâ€™
  
!      With â€˜-foffload-options=OPTIONSâ€™, GCC passes the specified OPTIONS
       to the compilers for all enabled offloading targets.  You can
       specify options that apply only to a specific target or targets by
!      using the â€˜-foffload-options=TARGET-LIST=OPTIONSâ€™ form.  The
       TARGET-LIST is a comma-separated list in the same format as for the
!      â€˜-foffload=â€™ option.
  
       Typical command lines are
  
*************** OpenACC:: for an overview of these exten
*** 5080,5137 ****
                    -foffload-options=nvptx-none=-latomic
            -foffload-options=amdgcn-amdhsa=-march=gfx906
  
! '-fopenacc'
!      Enable handling of OpenACC directives '#pragma acc' in C/C++ and
!      '!$acc' in free-form Fortran and '!$acc', 'c$acc' and '*$acc' in
!      fixed-form Fortran.  This option implies '-pthread', and thus is
!      only supported on targets that have support for '-pthread'.
  
! '-fopenacc-dim=GEOM'
       Specify default compute dimensions for parallel offload regions
       that do not explicitly specify them.  The GEOM value is a triple of
!      ':'-separated sizes, in order GANG, WORKER, and VECTOR.  A size can
       be omitted, to use a target-specific default value.
  
! '-fopenmp'
!      Enable handling of OpenMP directives '#pragma omp',
!      '[[omp::directive(...)]]', '[[omp::decl(...)]]', and
!      '[[omp::sequence(...)]]' in C/C++.  In Fortran, it enables '!$omp'
!      and the conditional compilation sentinel '!$'.  In fixed source
!      form Fortran, the sentinels can also start with 'c' or '*'.
  
!      This option implies '-pthread', and thus is only supported on
!      targets that have support for '-pthread'.  '-fopenmp' implies
!      '-fopenmp-simd'.
  
! '-fopenmp-simd'
!      Enable handling of OpenMP's 'simd', 'declare simd', 'declare
!      reduction', 'assume', 'ordered', 'scan' and 'loop' directive, and
!      of combined or composite directives with 'simd' as constituent with
!      '#pragma omp', '[[omp::directive(...)]]', '[[omp::sequence(...)]]'
!      and '[[omp::decl(...)]]' in C/C++ and '!$omp' in Fortran.  It
!      additionally enables the conditional compilation sentinel '!$' in
       Fortran.  In fixed source form Fortran, the sentinels can also
!      start with 'c' or '*'.  Other OpenMP directives are ignored.
!      Unless '-fopenmp' is additionally specified, the 'loop' region
       binds to the current task region, independent of the specified
!      'bind' clause.
  
! '-fopenmp-target-simd-clone'
! '-fopenmp-target-simd-clone=DEVICE-TYPE'
       In addition to generating SIMD clones for functions marked with the
!      'declare simd' directive, GCC also generates clones for functions
!      marked with the OpenMP 'declare target' directive that are suitable
       for vectorization when this option is in effect.  The DEVICE-TYPE
!      may be one of 'none', 'host', 'nohost', and 'any', which correspond
!      to keywords for the 'device_type' clause of the 'declare target'
       directive; clones are generated for the intersection of devices
!      specified.  '-fopenmp-target-simd-clone' is equivalent to
!      '-fopenmp-target-simd-clone=any' and
!      '-fno-openmp-target-simd-clone' is equivalent to
!      '-fopenmp-target-simd-clone=none'.
  
!      At '-O2' and higher (but not '-Os' or '-Og') this optimization
!      defaults to '-fopenmp-target-simd-clone=nohost'; otherwise it is
       disabled by default.
  
  
--- 5084,5141 ----
                    -foffload-options=nvptx-none=-latomic
            -foffload-options=amdgcn-amdhsa=-march=gfx906
  
! â€˜-fopenaccâ€™
!      Enable handling of OpenACC directives â€˜#pragma accâ€™ in C/C++ and
!      â€˜!$accâ€™ in free-form Fortran and â€˜!$accâ€™, â€˜c$accâ€™ and â€˜*$accâ€™ in
!      fixed-form Fortran.  This option implies â€˜-pthreadâ€™, and thus is
!      only supported on targets that have support for â€˜-pthreadâ€™.
  
! â€˜-fopenacc-dim=GEOMâ€™
       Specify default compute dimensions for parallel offload regions
       that do not explicitly specify them.  The GEOM value is a triple of
!      â€˜:â€™-separated sizes, in order GANG, WORKER, and VECTOR.  A size can
       be omitted, to use a target-specific default value.
  
! â€˜-fopenmpâ€™
!      Enable handling of OpenMP directives â€˜#pragma ompâ€™,
!      â€˜[[omp::directive(...)]]â€™, â€˜[[omp::decl(...)]]â€™, and
!      â€˜[[omp::sequence(...)]]â€™ in C/C++.  In Fortran, it enables â€˜!$ompâ€™
!      and the conditional compilation sentinel â€˜!$â€™.  In fixed source
!      form Fortran, the sentinels can also start with â€˜câ€™ or â€˜*â€™.
  
!      This option implies â€˜-pthreadâ€™, and thus is only supported on
!      targets that have support for â€˜-pthreadâ€™.  â€˜-fopenmpâ€™ implies
!      â€˜-fopenmp-simdâ€™.
  
! â€˜-fopenmp-simdâ€™
!      Enable handling of OpenMP's â€˜simdâ€™, â€˜declare simdâ€™, â€˜declare
!      reductionâ€™, â€˜assumeâ€™, â€˜orderedâ€™, â€˜scanâ€™ and â€˜loopâ€™ directive, and
!      of combined or composite directives with â€˜simdâ€™ as constituent with
!      â€˜#pragma ompâ€™, â€˜[[omp::directive(...)]]â€™, â€˜[[omp::sequence(...)]]â€™
!      and â€˜[[omp::decl(...)]]â€™ in C/C++ and â€˜!$ompâ€™ in Fortran.  It
!      additionally enables the conditional compilation sentinel â€˜!$â€™ in
       Fortran.  In fixed source form Fortran, the sentinels can also
!      start with â€˜câ€™ or â€˜*â€™.  Other OpenMP directives are ignored.
!      Unless â€˜-fopenmpâ€™ is additionally specified, the â€˜loopâ€™ region
       binds to the current task region, independent of the specified
!      â€˜bindâ€™ clause.
  
! â€˜-fopenmp-target-simd-cloneâ€™
! â€˜-fopenmp-target-simd-clone=DEVICE-TYPEâ€™
       In addition to generating SIMD clones for functions marked with the
!      â€˜declare simdâ€™ directive, GCC also generates clones for functions
!      marked with the OpenMP â€˜declare targetâ€™ directive that are suitable
       for vectorization when this option is in effect.  The DEVICE-TYPE
!      may be one of â€˜noneâ€™, â€˜hostâ€™, â€˜nohostâ€™, and â€˜anyâ€™, which correspond
!      to keywords for the â€˜device_typeâ€™ clause of the â€˜declare targetâ€™
       directive; clones are generated for the intersection of devices
!      specified.  â€˜-fopenmp-target-simd-cloneâ€™ is equivalent to
!      â€˜-fopenmp-target-simd-clone=anyâ€™ and
!      â€˜-fno-openmp-target-simd-cloneâ€™ is equivalent to
!      â€˜-fopenmp-target-simd-clone=noneâ€™.
  
!      At â€˜-O2â€™ and higher (but not â€˜-Osâ€™ or â€˜-Ogâ€™) this optimization
!      defaults to â€˜-fopenmp-target-simd-clone=nohostâ€™; otherwise it is
       disabled by default.
  
  
*************** diagnostic messages, e.g. how many chara
*** 5147,5168 ****
  location information should be reported.  Note that some language front
  ends may not honor these options.
  
! '-fmessage-length=N'
       Try to format error messages so that they fit on lines of about N
       characters.  If N is zero, then no line-wrapping is done; each
       error message appears on a single line.  This is the default for
       all front ends.
  
!      Note - this option also affects the display of the '#error' and
!      '#warning' pre-processor directives, and the 'deprecated'
       function/type/variable attribute.  It does not however affect the
!      'pragma GCC warning' and 'pragma GCC error' pragmas.
  
! '-fdiagnostics-plain-output'
       This option requests that diagnostic output look as plain as
!      possible, which may be useful when running 'dejagnu' or other
       utilities that need to parse diagnostics output and prefer that it
!      remain more stable over time.  '-fdiagnostics-plain-output' is
       currently equivalent to the following options:
            -fno-diagnostics-show-caret
            -fno-diagnostics-show-line-numbers
--- 5151,5172 ----
  location information should be reported.  Note that some language front
  ends may not honor these options.
  
! â€˜-fmessage-length=Nâ€™
       Try to format error messages so that they fit on lines of about N
       characters.  If N is zero, then no line-wrapping is done; each
       error message appears on a single line.  This is the default for
       all front ends.
  
!      Note - this option also affects the display of the â€˜#errorâ€™ and
!      â€˜#warningâ€™ pre-processor directives, and the â€˜deprecatedâ€™
       function/type/variable attribute.  It does not however affect the
!      â€˜pragma GCC warningâ€™ and â€˜pragma GCC errorâ€™ pragmas.
  
! â€˜-fdiagnostics-plain-outputâ€™
       This option requests that diagnostic output look as plain as
!      possible, which may be useful when running â€˜dejagnuâ€™ or other
       utilities that need to parse diagnostics output and prefer that it
!      remain more stable over time.  â€˜-fdiagnostics-plain-outputâ€™ is
       currently equivalent to the following options:
            -fno-diagnostics-show-caret
            -fno-diagnostics-show-line-numbers
*************** ends may not honor these options.
*** 5175,5181 ****
       diagnostics, the corresponding option to disable the new behavior
       will be added to this list.
  
! '-fdiagnostics-show-location=once'
       Only meaningful in line-wrapping mode.  Instructs the diagnostic
       messages reporter to emit source location information _once_; that
       is, in case the message is too long to fit on a single physical
--- 5179,5185 ----
       diagnostics, the corresponding option to disable the new behavior
       will be added to this list.
  
! â€˜-fdiagnostics-show-location=onceâ€™
       Only meaningful in line-wrapping mode.  Instructs the diagnostic
       messages reporter to emit source location information _once_; that
       is, in case the message is too long to fit on a single physical
*************** ends may not honor these options.
*** 5183,5312 ****
       (as prefix) again, over and over, in subsequent continuation lines.
       This is the default behavior.
  
! '-fdiagnostics-show-location=every-line'
       Only meaningful in line-wrapping mode.  Instructs the diagnostic
       messages reporter to emit the same source location information (as
       prefix) for physical lines that result from the process of breaking
       a message which is too long to fit on a single line.
  
! '-fdiagnostics-color[=WHEN]'
! '-fno-diagnostics-color'
!      Use color in diagnostics.  WHEN is 'never', 'always', or 'auto'.
       The default depends on how the compiler has been configured, it can
!      be any of the above WHEN options or also 'never' if 'GCC_COLORS'
!      environment variable isn't present in the environment, and 'auto'
!      otherwise.  'auto' makes GCC use color only when the standard error
       is a terminal, and when not executing in an emacs shell.  The forms
!      '-fdiagnostics-color' and '-fno-diagnostics-color' are aliases for
!      '-fdiagnostics-color=always' and '-fdiagnostics-color=never',
       respectively.
  
!      The colors are defined by the environment variable 'GCC_COLORS'.
       Its value is a colon-separated list of capabilities and Select
       Graphic Rendition (SGR) substrings.  SGR commands are interpreted
       by the terminal or terminal emulator.  (See the section in the
       documentation of your text terminal for permitted values and their
       meanings as character attributes.)  These substring values are
       integers in decimal representation and can be concatenated with
!      semicolons.  Common values to concatenate include '1' for bold, '4'
!      for underline, '5' for blink, '7' for inverse, '39' for default
!      foreground color, '30' to '37' for foreground colors, '90' to '97'
!      for 16-color mode foreground colors, '38;5;0' to '38;5;255' for
!      88-color and 256-color modes foreground colors, '49' for default
!      background color, '40' to '47' for background colors, '100' to
!      '107' for 16-color mode background colors, and '48;5;0' to
!      '48;5;255' for 88-color and 256-color modes background colors.
  
!      The default 'GCC_COLORS' is
            error=01;31:warning=01;35:note=01;36:range1=32:range2=34:locus=01:\
            quote=01:path=01;36:fixit-insert=32:fixit-delete=31:\
            diff-filename=01:diff-hunk=32:diff-delete=31:diff-insert=32:\
            type-diff=01;32:fnname=01;32:targs=35:valid=01;31:invalid=01;32\
            highlight-a=01;32:highlight-b=01;34
!      where '01;31' is bold red, '01;35' is bold magenta, '01;36' is bold
!      cyan, '32' is green, '34' is blue, '01' is bold, and '31' is red.
!      Setting 'GCC_COLORS' to the empty string disables colors.
       Supported capabilities are as follows.
  
!      'error='
            SGR substring for error: markers.
  
!      'warning='
            SGR substring for warning: markers.
  
!      'note='
            SGR substring for note: markers.
  
!      'path='
            SGR substring for colorizing paths of control-flow events as
!           printed via '-fdiagnostics-path-format=', such as the
            identifiers of individual events and lines indicating
            interprocedural calls and returns.
  
!      'range1='
            SGR substring for first additional range.
  
!      'range2='
            SGR substring for second additional range.
  
!      'locus='
!           SGR substring for location information, 'file:line' or
!           'file:line:column' etc.
  
!      'quote='
            SGR substring for information printed within quotes.
  
!      'fnname='
            SGR substring for names of C++ functions.
  
!      'targs='
            SGR substring for C++ function template parameter bindings.
  
!      'fixit-insert='
            SGR substring for fix-it hints suggesting text to be inserted
            or replaced.
  
!      'fixit-delete='
            SGR substring for fix-it hints suggesting text to be deleted.
  
!      'diff-filename='
            SGR substring for filename headers within generated patches.
  
!      'diff-hunk='
            SGR substring for the starts of hunks within generated
            patches.
  
!      'diff-delete='
            SGR substring for deleted lines within generated patches.
  
!      'diff-insert='
            SGR substring for inserted lines within generated patches.
  
!      'type-diff='
            SGR substring for highlighting mismatching types within
            template arguments in the C++ frontend.
  
!      'valid='
            SGR substring for highlighting valid elements within text art
            diagrams.
  
!      'invalid='
            SGR substring for highlighting invalid elements within text
            art diagrams.
  
!      'highlight-a='
!      'highlight-b='
            SGR substrings for contrasting two different things within
            diagnostics, such as a pair of mismatching types.  See
!           '-fdiagnostics-show-highlight-colors'.
  
! '-fdiagnostics-urls[=WHEN]'
       Use escape sequences to embed URLs in diagnostics.  For example,
!      when '-fdiagnostics-show-option' emits text showing the
       command-line option controlling a diagnostic, embed a URL for
       documentation of that option.
  
!      WHEN is 'never', 'always', or 'auto'.  'auto' makes GCC use URL
       escape sequences only when the standard error is a terminal, and
       when not executing in an emacs shell or any graphical terminal
       which is known to be incompatible with this feature, see below.
--- 5187,5316 ----
       (as prefix) again, over and over, in subsequent continuation lines.
       This is the default behavior.
  
! â€˜-fdiagnostics-show-location=every-lineâ€™
       Only meaningful in line-wrapping mode.  Instructs the diagnostic
       messages reporter to emit the same source location information (as
       prefix) for physical lines that result from the process of breaking
       a message which is too long to fit on a single line.
  
! â€˜-fdiagnostics-color[=WHEN]â€™
! â€˜-fno-diagnostics-colorâ€™
!      Use color in diagnostics.  WHEN is â€˜neverâ€™, â€˜alwaysâ€™, or â€˜autoâ€™.
       The default depends on how the compiler has been configured, it can
!      be any of the above WHEN options or also â€˜neverâ€™ if â€˜GCC_COLORSâ€™
!      environment variable isn't present in the environment, and â€˜autoâ€™
!      otherwise.  â€˜autoâ€™ makes GCC use color only when the standard error
       is a terminal, and when not executing in an emacs shell.  The forms
!      â€˜-fdiagnostics-colorâ€™ and â€˜-fno-diagnostics-colorâ€™ are aliases for
!      â€˜-fdiagnostics-color=alwaysâ€™ and â€˜-fdiagnostics-color=neverâ€™,
       respectively.
  
!      The colors are defined by the environment variable â€˜GCC_COLORSâ€™.
       Its value is a colon-separated list of capabilities and Select
       Graphic Rendition (SGR) substrings.  SGR commands are interpreted
       by the terminal or terminal emulator.  (See the section in the
       documentation of your text terminal for permitted values and their
       meanings as character attributes.)  These substring values are
       integers in decimal representation and can be concatenated with
!      semicolons.  Common values to concatenate include â€˜1â€™ for bold, â€˜4â€™
!      for underline, â€˜5â€™ for blink, â€˜7â€™ for inverse, â€˜39â€™ for default
!      foreground color, â€˜30â€™ to â€˜37â€™ for foreground colors, â€˜90â€™ to â€˜97â€™
!      for 16-color mode foreground colors, â€˜38;5;0â€™ to â€˜38;5;255â€™ for
!      88-color and 256-color modes foreground colors, â€˜49â€™ for default
!      background color, â€˜40â€™ to â€˜47â€™ for background colors, â€˜100â€™ to
!      â€˜107â€™ for 16-color mode background colors, and â€˜48;5;0â€™ to
!      â€˜48;5;255â€™ for 88-color and 256-color modes background colors.
  
!      The default â€˜GCC_COLORSâ€™ is
            error=01;31:warning=01;35:note=01;36:range1=32:range2=34:locus=01:\
            quote=01:path=01;36:fixit-insert=32:fixit-delete=31:\
            diff-filename=01:diff-hunk=32:diff-delete=31:diff-insert=32:\
            type-diff=01;32:fnname=01;32:targs=35:valid=01;31:invalid=01;32\
            highlight-a=01;32:highlight-b=01;34
!      where â€˜01;31â€™ is bold red, â€˜01;35â€™ is bold magenta, â€˜01;36â€™ is bold
!      cyan, â€˜32â€™ is green, â€˜34â€™ is blue, â€˜01â€™ is bold, and â€˜31â€™ is red.
!      Setting â€˜GCC_COLORSâ€™ to the empty string disables colors.
       Supported capabilities are as follows.
  
!      â€˜error=â€™
            SGR substring for error: markers.
  
!      â€˜warning=â€™
            SGR substring for warning: markers.
  
!      â€˜note=â€™
            SGR substring for note: markers.
  
!      â€˜path=â€™
            SGR substring for colorizing paths of control-flow events as
!           printed via â€˜-fdiagnostics-path-format=â€™, such as the
            identifiers of individual events and lines indicating
            interprocedural calls and returns.
  
!      â€˜range1=â€™
            SGR substring for first additional range.
  
!      â€˜range2=â€™
            SGR substring for second additional range.
  
!      â€˜locus=â€™
!           SGR substring for location information, â€˜file:lineâ€™ or
!           â€˜file:line:columnâ€™ etc.
  
!      â€˜quote=â€™
            SGR substring for information printed within quotes.
  
!      â€˜fnname=â€™
            SGR substring for names of C++ functions.
  
!      â€˜targs=â€™
            SGR substring for C++ function template parameter bindings.
  
!      â€˜fixit-insert=â€™
            SGR substring for fix-it hints suggesting text to be inserted
            or replaced.
  
!      â€˜fixit-delete=â€™
            SGR substring for fix-it hints suggesting text to be deleted.
  
!      â€˜diff-filename=â€™
            SGR substring for filename headers within generated patches.
  
!      â€˜diff-hunk=â€™
            SGR substring for the starts of hunks within generated
            patches.
  
!      â€˜diff-delete=â€™
            SGR substring for deleted lines within generated patches.
  
!      â€˜diff-insert=â€™
            SGR substring for inserted lines within generated patches.
  
!      â€˜type-diff=â€™
            SGR substring for highlighting mismatching types within
            template arguments in the C++ frontend.
  
!      â€˜valid=â€™
            SGR substring for highlighting valid elements within text art
            diagrams.
  
!      â€˜invalid=â€™
            SGR substring for highlighting invalid elements within text
            art diagrams.
  
!      â€˜highlight-a=â€™
!      â€˜highlight-b=â€™
            SGR substrings for contrasting two different things within
            diagnostics, such as a pair of mismatching types.  See
!           â€˜-fdiagnostics-show-highlight-colorsâ€™.
  
! â€˜-fdiagnostics-urls[=WHEN]â€™
       Use escape sequences to embed URLs in diagnostics.  For example,
!      when â€˜-fdiagnostics-show-optionâ€™ emits text showing the
       command-line option controlling a diagnostic, embed a URL for
       documentation of that option.
  
!      WHEN is â€˜neverâ€™, â€˜alwaysâ€™, or â€˜autoâ€™.  â€˜autoâ€™ makes GCC use URL
       escape sequences only when the standard error is a terminal, and
       when not executing in an emacs shell or any graphical terminal
       which is known to be incompatible with this feature, see below.
*************** ends may not honor these options.
*** 5315,5333 ****
       can be any of the above WHEN options.
  
       GCC can also be configured (via the
!      '--with-diagnostics-urls=auto-if-env' configure-time option) so
       that the default is affected by environment variables.  Under such
!      a configuration, GCC defaults to using 'auto' if either 'GCC_URLS'
!      or 'TERM_URLS' environment variables are present and non-empty in
!      the environment of the compiler, or 'never' if neither are.
  
!      However, even with '-fdiagnostics-urls=always' the behavior is
!      dependent on those environment variables: If 'GCC_URLS' is set to
!      empty or 'no', do not embed URLs in diagnostics.  If set to 'st',
!      URLs use ST escape sequences.  If set to 'bel', the default, URLs
       use BEL escape sequences.  Any other non-empty value enables the
!      feature.  If 'GCC_URLS' is not set, use 'TERM_URLS' as a fallback.
!      Note: ST is an ANSI escape sequence, string terminator 'ESC \', BEL
       is an ASCII character, CTRL-G that usually sounds like a beep.
  
       At this time GCC tries to detect also a few terminals that are
--- 5319,5337 ----
       can be any of the above WHEN options.
  
       GCC can also be configured (via the
!      â€˜--with-diagnostics-urls=auto-if-envâ€™ configure-time option) so
       that the default is affected by environment variables.  Under such
!      a configuration, GCC defaults to using â€˜autoâ€™ if either â€˜GCC_URLSâ€™
!      or â€˜TERM_URLSâ€™ environment variables are present and non-empty in
!      the environment of the compiler, or â€˜neverâ€™ if neither are.
  
!      However, even with â€˜-fdiagnostics-urls=alwaysâ€™ the behavior is
!      dependent on those environment variables: If â€˜GCC_URLSâ€™ is set to
!      empty or â€˜noâ€™, do not embed URLs in diagnostics.  If set to â€˜stâ€™,
!      URLs use ST escape sequences.  If set to â€˜belâ€™, the default, URLs
       use BEL escape sequences.  Any other non-empty value enables the
!      feature.  If â€˜GCC_URLSâ€™ is not set, use â€˜TERM_URLSâ€™ as a fallback.
!      Note: ST is an ANSI escape sequence, string terminator â€˜ESC \â€™, BEL
       is an ASCII character, CTRL-G that usually sounds like a beep.
  
       At this time GCC tries to detect also a few terminals that are
*************** ends may not honor these options.
*** 5336,5361 ****
       escapes are likely to misbehave, i.e.  print garbage on the screen.
       That list is currently xfce4-terminal, certain known to be buggy
       gnome-terminal versions, the linux console, and mingw.  This check
!      can be skipped with the '-fdiagnostics-urls=always'.
  
! '-fno-diagnostics-show-option'
       By default, each diagnostic emitted includes text indicating the
       command-line option that directly controls the diagnostic (if such
       an option is known to the diagnostic machinery).  Specifying the
!      '-fno-diagnostics-show-option' flag suppresses that behavior.
  
! '-fno-diagnostics-show-caret'
       By default, each diagnostic emitted includes the original source
!      line and a caret '^' indicating the column.  This option suppresses
       this information.  The source line is truncated to N characters, if
!      the '-fmessage-length=n' option is given.  When the output is done
       to the terminal, the width is limited to the width given by the
!      'COLUMNS' environment variable or, if not set, to the terminal
       width.
  
! '-fno-diagnostics-show-labels'
       By default, when printing source code (via
!      '-fdiagnostics-show-caret'), diagnostics can label ranges of source
       code with pertinent information, such as the types of expressions:
  
                printf ("foo %s bar", long_i + long_j);
--- 5340,5365 ----
       escapes are likely to misbehave, i.e.  print garbage on the screen.
       That list is currently xfce4-terminal, certain known to be buggy
       gnome-terminal versions, the linux console, and mingw.  This check
!      can be skipped with the â€˜-fdiagnostics-urls=alwaysâ€™.
  
! â€˜-fno-diagnostics-show-optionâ€™
       By default, each diagnostic emitted includes text indicating the
       command-line option that directly controls the diagnostic (if such
       an option is known to the diagnostic machinery).  Specifying the
!      â€˜-fno-diagnostics-show-optionâ€™ flag suppresses that behavior.
  
! â€˜-fno-diagnostics-show-caretâ€™
       By default, each diagnostic emitted includes the original source
!      line and a caret â€˜^â€™ indicating the column.  This option suppresses
       this information.  The source line is truncated to N characters, if
!      the â€˜-fmessage-length=nâ€™ option is given.  When the output is done
       to the terminal, the width is limited to the width given by the
!      â€˜COLUMNSâ€™ environment variable or, if not set, to the terminal
       width.
  
! â€˜-fno-diagnostics-show-labelsâ€™
       By default, when printing source code (via
!      â€˜-fdiagnostics-show-caretâ€™), diagnostics can label ranges of source
       code with pertinent information, such as the types of expressions:
  
                printf ("foo %s bar", long_i + long_j);
*************** ends may not honor these options.
*** 5366,5374 ****
       This option suppresses the printing of these labels (in the example
       above, the vertical bars and the "char *" and "long int" text).
  
! '-fno-diagnostics-show-event-links'
       By default, when printing execution paths (via
!      '-fdiagnostics-path-format=inline-events'), GCC will print lines
       connecting related events, such as the line connecting events 1 and
       2 in:
  
--- 5370,5378 ----
       This option suppresses the printing of these labels (in the example
       above, the vertical bars and the "char *" and "long int" text).
  
! â€˜-fno-diagnostics-show-event-linksâ€™
       By default, when printing execution paths (via
!      â€˜-fdiagnostics-path-format=inline-eventsâ€™), GCC will print lines
       connecting related events, such as the line connecting events 1 and
       2 in:
  
*************** ends may not honor these options.
*** 5388,5403 ****
  
       This option suppresses the printing of such connector lines.
  
! '-fno-diagnostics-show-cwe'
       Diagnostic messages can optionally have an associated CWE
       (https://cwe.mitre.org/index.html) identifier.  GCC itself only
!      provides such metadata for some of the '-fanalyzer' diagnostics.
       GCC plugins may also provide diagnostics with such metadata.  By
       default, if this information is present, it will be printed with
       the diagnostic.  This option suppresses the printing of this
       metadata.
  
! '-fno-diagnostics-show-rules'
       Diagnostic messages can optionally have rules associated with them,
       such as from a coding standard, or a specification.  GCC itself
       does not do this for any of its diagnostics, but plugins may do so.
--- 5392,5407 ----
  
       This option suppresses the printing of such connector lines.
  
! â€˜-fno-diagnostics-show-cweâ€™
       Diagnostic messages can optionally have an associated CWE
       (https://cwe.mitre.org/index.html) identifier.  GCC itself only
!      provides such metadata for some of the â€˜-fanalyzerâ€™ diagnostics.
       GCC plugins may also provide diagnostics with such metadata.  By
       default, if this information is present, it will be printed with
       the diagnostic.  This option suppresses the printing of this
       metadata.
  
! â€˜-fno-diagnostics-show-rulesâ€™
       Diagnostic messages can optionally have rules associated with them,
       such as from a coding standard, or a specification.  GCC itself
       does not do this for any of its diagnostics, but plugins may do so.
*************** ends may not honor these options.
*** 5405,5411 ****
       the diagnostic.  This option suppresses the printing of this
       metadata.
  
! '-fno-diagnostics-show-highlight-colors'
  
       GCC can use color for emphasis and contrast when printing
       diagnostic messages and quoting the user's source.
--- 5409,5415 ----
       the diagnostic.  This option suppresses the printing of this
       metadata.
  
! â€˜-fno-diagnostics-show-highlight-colorsâ€™
  
       GCC can use color for emphasis and contrast when printing
       diagnostic messages and quoting the user's source.
*************** ends may not honor these options.
*** 5420,5430 ****
                  |                  int const char *
                  |                 %s
  
!         * the '%i' and 'int' in the message and the 'int' in the quoted
!           source are colored using 'highlight-a' (bold green by
            default), and
!         * the 'const char *' in the message and in the quoted source are
!           both colored using 'highlight-b' (bold blue by default).
  
       The intent is to draw the reader's eyes to the relationships
       between the various aspects of the diagnostic message and the
--- 5424,5434 ----
                  |                  int const char *
                  |                 %s
  
!         â€¢ the â€˜%iâ€™ and â€˜intâ€™ in the message and the â€˜intâ€™ in the quoted
!           source are colored using â€˜highlight-aâ€™ (bold green by
            default), and
!         â€¢ the â€˜const char *â€™ in the message and in the quoted source are
!           both colored using â€˜highlight-bâ€™ (bold blue by default).
  
       The intent is to draw the reader's eyes to the relationships
       between the various aspects of the diagnostic message and the
*************** ends may not honor these options.
*** 5432,5450 ****
       between mismatching ones.
  
       This additional colorization is enabled by default if color
!      printing is enabled (as per '-fdiagnostics-color='), but it can be
!      separately disabled via '-fno-diagnostics-show-highlight-colors'.
  
! '-fno-diagnostics-show-line-numbers'
       By default, when printing source code (via
!      '-fdiagnostics-show-caret'), a left margin is printed, showing line
       numbers.  This option suppresses this left margin.
  
! '-fdiagnostics-minimum-margin-width=WIDTH'
       This option controls the minimum width of the left margin printed
!      by '-fdiagnostics-show-line-numbers'.  It defaults to 6.
  
! '-fdiagnostics-parseable-fixits'
       Emit fix-it hints in a machine-parseable format, suitable for
       consumption by IDEs.  For each fix-it, a line will be printed after
       the relevant diagnostic, starting with the string "fix-it:".  For
--- 5436,5454 ----
       between mismatching ones.
  
       This additional colorization is enabled by default if color
!      printing is enabled (as per â€˜-fdiagnostics-color=â€™), but it can be
!      separately disabled via â€˜-fno-diagnostics-show-highlight-colorsâ€™.
  
! â€˜-fno-diagnostics-show-line-numbersâ€™
       By default, when printing source code (via
!      â€˜-fdiagnostics-show-caretâ€™), a left margin is printed, showing line
       numbers.  This option suppresses this left margin.
  
! â€˜-fdiagnostics-minimum-margin-width=WIDTHâ€™
       This option controls the minimum width of the left margin printed
!      by â€˜-fdiagnostics-show-line-numbersâ€™.  It defaults to 6.
  
! â€˜-fdiagnostics-parseable-fixitsâ€™
       Emit fix-it hints in a machine-parseable format, suitable for
       consumption by IDEs.  For each fix-it, a line will be printed after
       the relevant diagnostic, starting with the string "fix-it:".  For
*************** ends may not honor these options.
*** 5471,5477 ****
       removed.  An empty range (e.g.  "45:3-45:3") indicates that the
       string is to be inserted at the given position.
  
! '-fdiagnostics-generate-patch'
       Print fix-it hints to stderr in unified diff format, after any
       diagnostics are printed.  For example:
  
--- 5475,5481 ----
       removed.  An empty range (e.g.  "45:3-45:3") indicates that the
       string is to be inserted at the given position.
  
! â€˜-fdiagnostics-generate-patchâ€™
       Print fix-it hints to stderr in unified diff format, after any
       diagnostics are printed.  For example:
  
*************** ends may not honor these options.
*** 5487,5495 ****
  
  
       The diff may or may not be colorized, following the same rules as
!      for diagnostics (see '-fdiagnostics-color').
  
! '-fdiagnostics-show-template-tree'
  
       In the C++ frontend, when printing diagnostics showing mismatching
       template types, such as:
--- 5491,5499 ----
  
  
       The diff may or may not be colorized, following the same rules as
!      for diagnostics (see â€˜-fdiagnostics-colorâ€™).
  
! â€˜-fdiagnostics-show-template-treeâ€™
  
       In the C++ frontend, when printing diagnostics showing mismatching
       template types, such as:
*************** ends may not honor these options.
*** 5497,5503 ****
              could not convert 'std::map<int, std::vector<double> >()'
                from 'map<[...],vector<double>>' to 'map<[...],vector<float>>
  
!      the '-fdiagnostics-show-template-tree' flag enables printing a
       tree-like structure showing the common and differing parts of the
       types, such as:
  
--- 5501,5507 ----
              could not convert 'std::map<int, std::vector<double> >()'
                from 'map<[...],vector<double>>' to 'map<[...],vector<float>>
  
!      the â€˜-fdiagnostics-show-template-treeâ€™ flag enables printing a
       tree-like structure showing the common and differing parts of the
       types, such as:
  
*************** ends may not honor these options.
*** 5509,5515 ****
       The parts that differ are highlighted with color ("double" and
       "float" in this case).
  
! '-fno-elide-type'
       By default when the C++ frontend prints diagnostics showing
       mismatching template types, common parts of the types are printed
       as "[...]"  to simplify the error message.  For example:
--- 5513,5519 ----
       The parts that differ are highlighted with color ("double" and
       "float" in this case).
  
! â€˜-fno-elide-typeâ€™
       By default when the C++ frontend prints diagnostics showing
       mismatching template types, common parts of the types are printed
       as "[...]"  to simplify the error message.  For example:
*************** ends may not honor these options.
*** 5517,5535 ****
              could not convert 'std::map<int, std::vector<double> >()'
                from 'map<[...],vector<double>>' to 'map<[...],vector<float>>
  
!      Specifying the '-fno-elide-type' flag suppresses that behavior.
       This flag also affects the output of the
!      '-fdiagnostics-show-template-tree' flag.
  
! '-fdiagnostics-path-format=KIND'
       Specify how to print paths of control-flow events for diagnostics
       that have such a path associated with them.
  
!      KIND is 'none', 'separate-events', or 'inline-events', the default.
  
!      'none' means to not print diagnostic paths.
  
!      'separate-events' means to print a separate "note" diagnostic for
       each event within the diagnostic.  For example:
  
            test.c:29:5: error: passing NULL as argument 1 to 'PyList_Append' which requires a non-NULL parameter
--- 5521,5539 ----
              could not convert 'std::map<int, std::vector<double> >()'
                from 'map<[...],vector<double>>' to 'map<[...],vector<float>>
  
!      Specifying the â€˜-fno-elide-typeâ€™ flag suppresses that behavior.
       This flag also affects the output of the
!      â€˜-fdiagnostics-show-template-treeâ€™ flag.
  
! â€˜-fdiagnostics-path-format=KINDâ€™
       Specify how to print paths of control-flow events for diagnostics
       that have such a path associated with them.
  
!      KIND is â€˜noneâ€™, â€˜separate-eventsâ€™, or â€˜inline-eventsâ€™, the default.
  
!      â€˜noneâ€™ means to not print diagnostic paths.
  
!      â€˜separate-eventsâ€™ means to print a separate "note" diagnostic for
       each event within the diagnostic.  For example:
  
            test.c:29:5: error: passing NULL as argument 1 to 'PyList_Append' which requires a non-NULL parameter
*************** ends may not honor these options.
*** 5537,5543 ****
            test.c:27:3: note: (2) when 'i < count'
            test.c:29:5: note: (3) when calling 'PyList_Append', passing NULL from (1) as argument 1
  
!      'inline-events' means to print the events "inline" within the
       source code.  This view attempts to consolidate the events into
       runs of sufficiently-close events, printing them as labelled ranges
       within the source.
--- 5541,5547 ----
            test.c:27:3: note: (2) when 'i < count'
            test.c:29:5: note: (3) when calling 'PyList_Append', passing NULL from (1) as argument 1
  
!      â€˜inline-eventsâ€™ means to print the events "inline" within the
       source code.  This view attempts to consolidate the events into
       runs of sufficiently-close events, printing them as labelled ranges
       within the source.
*************** ends may not honor these options.
*** 5610,5640 ****
                |
            (etc)
  
! '-fdiagnostics-show-path-depths'
       This option provides additional information when printing
       control-flow paths associated with a diagnostic.
  
       If this is option is provided then the stack depth will be printed
       for each run of events within
!      '-fdiagnostics-path-format=inline-events'.  If provided with
!      '-fdiagnostics-path-format=separate-events', then the stack depth
       and function declaration will be appended when printing each event.
  
       This is intended for use by GCC developers and plugin developers
       when debugging diagnostics that report interprocedural control
       flow.
  
! '-fno-show-column'
       Do not print column numbers in diagnostics.  This may be necessary
       if diagnostics are being scanned by a program that does not
!      understand the column numbers, such as 'dejagnu'.
  
! '-fdiagnostics-column-unit=UNIT'
       Select the units for the column number.  This affects traditional
!      diagnostics (in the absence of '-fno-show-column'), as well as JSON
       format diagnostics if requested.
  
!      The default UNIT, 'display', considers the number of display
       columns occupied by each character.  This may be larger than the
       number of bytes required to encode the character, in the case of
       tab characters, or it may be smaller, in the case of multibyte
--- 5614,5644 ----
                |
            (etc)
  
! â€˜-fdiagnostics-show-path-depthsâ€™
       This option provides additional information when printing
       control-flow paths associated with a diagnostic.
  
       If this is option is provided then the stack depth will be printed
       for each run of events within
!      â€˜-fdiagnostics-path-format=inline-eventsâ€™.  If provided with
!      â€˜-fdiagnostics-path-format=separate-eventsâ€™, then the stack depth
       and function declaration will be appended when printing each event.
  
       This is intended for use by GCC developers and plugin developers
       when debugging diagnostics that report interprocedural control
       flow.
  
! â€˜-fno-show-columnâ€™
       Do not print column numbers in diagnostics.  This may be necessary
       if diagnostics are being scanned by a program that does not
!      understand the column numbers, such as â€˜dejagnuâ€™.
  
! â€˜-fdiagnostics-column-unit=UNITâ€™
       Select the units for the column number.  This affects traditional
!      diagnostics (in the absence of â€˜-fno-show-columnâ€™), as well as JSON
       format diagnostics if requested.
  
!      The default UNIT, â€˜displayâ€™, considers the number of display
       columns occupied by each character.  This may be larger than the
       number of bytes required to encode the character, in the case of
       tab characters, or it may be smaller, in the case of multibyte
*************** ends may not honor these options.
*** 5644,5661 ****
       occupies two display columns, and its UTF-8 encoding requires four
       bytes.
  
!      Setting UNIT to 'byte' changes the column number to the raw byte
       count in all cases, as was traditionally output by GCC prior to
       version 11.1.0.
  
! '-fdiagnostics-column-origin=ORIGIN'
       Select the origin for column numbers, i.e.  the column number
       assigned to the first column.  The default value of 1 corresponds
       to traditional GCC behavior and to the GNU style guide.  Some
       utilities may perform better with an origin of 0; any non-negative
       value may be specified.
  
! '-fdiagnostics-escape-format=FORMAT'
       When GCC prints pertinent source lines for a diagnostic it normally
       attempts to print the source bytes directly.  However, some
       diagnostics relate to encoding issues in the source file, such as
--- 5648,5665 ----
       occupies two display columns, and its UTF-8 encoding requires four
       bytes.
  
!      Setting UNIT to â€˜byteâ€™ changes the column number to the raw byte
       count in all cases, as was traditionally output by GCC prior to
       version 11.1.0.
  
! â€˜-fdiagnostics-column-origin=ORIGINâ€™
       Select the origin for column numbers, i.e.  the column number
       assigned to the first column.  The default value of 1 corresponds
       to traditional GCC behavior and to the GNU style guide.  Some
       utilities may perform better with an origin of 0; any non-negative
       value may be specified.
  
! â€˜-fdiagnostics-escape-format=FORMATâ€™
       When GCC prints pertinent source lines for a diagnostic it normally
       attempts to print the source bytes directly.  However, some
       diagnostics relate to encoding issues in the source file, such as
*************** ends may not honor these options.
*** 5665,5736 ****
  
       This option controls how such bytes should be escaped.
  
!      The default FORMAT, 'unicode' displays Unicode characters that are
!      not printable ASCII in the form '<U+XXXX>', and bytes that do not
       correspond to a Unicode character validly-encoded in UTF-8-encoded
!      will be displayed as hexadecimal in the form '<XX>'.
  
!      For example, a source line containing the string 'before' followed
       by the Unicode character U+03C0 ("GREEK SMALL LETTER PI", with
       UTF-8 encoding 0xCF 0x80) followed by the byte 0xBF (a stray UTF-8
!      trailing byte), followed by the string 'after' will be printed for
       such a diagnostic as:
  
             before<U+03C0><BF>after
  
!      Setting FORMAT to 'bytes' will display all non-printable-ASCII
!      bytes in the form '<XX>', thus showing the underlying encoding of
       non-ASCII Unicode characters.  For the example above, the following
       will be printed:
  
             before<CF><80><BF>after
  
! '-fdiagnostics-text-art-charset=CHARSET'
       Some diagnostics can contain "text art" diagrams: visualizations
       created from text, intended to be viewed in a monospaced font.
  
       This option selects which characters should be used for printing
!      such diagrams, if any.  CHARSET is 'none', 'ascii', 'unicode', or
!      'emoji'.
  
!      The 'none' value suppresses the printing of such diagrams.  The
!      'ascii' value will ensure that such diagrams are pure ASCII ("ASCII
!      art").  The 'unicode' value will allow for conservative use of
       unicode drawing characters (such as box-drawing characters).  The
!      'emoji' value further adds the possibility of emoji in the output
       (such as emitting U+26A0 WARNING SIGN followed by U+FE0F VARIATION
       SELECTOR-16 to select the emoji variant of the character).
  
!      The default is 'emoji', except when the environment variable 'LANG'
!      is set to 'C', in which case the default is 'ascii'.
  
! '-fdiagnostics-format=FORMAT'
       Select a different format for printing diagnostics.  FORMAT is
!      'text', 'sarif-stderr', 'sarif-file', 'json', 'json-stderr', or
!      'json-file'.
  
       Using this option replaces any additional "output sinks" added by
!      '-fdiagnostics-add-output=', or that set by
!      '-fdiagnostics-set-output='.
  
!      The default is 'text'.
  
!      The 'sarif-stderr' and 'sarif-file' formats both emit diagnostics
       in SARIF Version 2.1.0 format, either to stderr, or to a file named
!      'SOURCE.sarif', respectively.
  
!      The various 'json', 'json-stderr', and 'json-file' values are
       deprecated and refer to a legacy JSON-based output format.  The
!      'json' format is a synonym for 'json-stderr'.  The 'json-stderr'
!      and 'json-file' formats are identical, apart from where the JSON is
!      emitted to.  With 'json-stderr', the JSON is emitted to stderr,
!      whereas with 'json-file' it is written to 'SOURCE.gcc.json'.
  
! '-fdiagnostics-add-output=DIAGNOSTICS-OUTPUT-SPEC'
       Add an additional "output sink" for emitting diagnostics.
  
       DIAGNOSTICS-OUTPUT-SPEC should specify a scheme, optionally
!      followed by ':' and one or more KEY=VALUE pairs, in this form:
  
            SCHEME
            SCHEME:KEY=VALUE
--- 5669,5740 ----
  
       This option controls how such bytes should be escaped.
  
!      The default FORMAT, â€˜unicodeâ€™ displays Unicode characters that are
!      not printable ASCII in the form â€˜<U+XXXX>â€™, and bytes that do not
       correspond to a Unicode character validly-encoded in UTF-8-encoded
!      will be displayed as hexadecimal in the form â€˜<XX>â€™.
  
!      For example, a source line containing the string â€˜beforeâ€™ followed
       by the Unicode character U+03C0 ("GREEK SMALL LETTER PI", with
       UTF-8 encoding 0xCF 0x80) followed by the byte 0xBF (a stray UTF-8
!      trailing byte), followed by the string â€˜afterâ€™ will be printed for
       such a diagnostic as:
  
             before<U+03C0><BF>after
  
!      Setting FORMAT to â€˜bytesâ€™ will display all non-printable-ASCII
!      bytes in the form â€˜<XX>â€™, thus showing the underlying encoding of
       non-ASCII Unicode characters.  For the example above, the following
       will be printed:
  
             before<CF><80><BF>after
  
! â€˜-fdiagnostics-text-art-charset=CHARSETâ€™
       Some diagnostics can contain "text art" diagrams: visualizations
       created from text, intended to be viewed in a monospaced font.
  
       This option selects which characters should be used for printing
!      such diagrams, if any.  CHARSET is â€˜noneâ€™, â€˜asciiâ€™, â€˜unicodeâ€™, or
!      â€˜emojiâ€™.
  
!      The â€˜noneâ€™ value suppresses the printing of such diagrams.  The
!      â€˜asciiâ€™ value will ensure that such diagrams are pure ASCII ("ASCII
!      art").  The â€˜unicodeâ€™ value will allow for conservative use of
       unicode drawing characters (such as box-drawing characters).  The
!      â€˜emojiâ€™ value further adds the possibility of emoji in the output
       (such as emitting U+26A0 WARNING SIGN followed by U+FE0F VARIATION
       SELECTOR-16 to select the emoji variant of the character).
  
!      The default is â€˜emojiâ€™, except when the environment variable â€˜LANGâ€™
!      is set to â€˜Câ€™, in which case the default is â€˜asciiâ€™.
  
! â€˜-fdiagnostics-format=FORMATâ€™
       Select a different format for printing diagnostics.  FORMAT is
!      â€˜textâ€™, â€˜sarif-stderrâ€™, â€˜sarif-fileâ€™, â€˜jsonâ€™, â€˜json-stderrâ€™, or
!      â€˜json-fileâ€™.
  
       Using this option replaces any additional "output sinks" added by
!      â€˜-fdiagnostics-add-output=â€™, or that set by
!      â€˜-fdiagnostics-set-output=â€™.
  
!      The default is â€˜textâ€™.
  
!      The â€˜sarif-stderrâ€™ and â€˜sarif-fileâ€™ formats both emit diagnostics
       in SARIF Version 2.1.0 format, either to stderr, or to a file named
!      â€˜SOURCE.sarifâ€™, respectively.
  
!      The various â€˜jsonâ€™, â€˜json-stderrâ€™, and â€˜json-fileâ€™ values are
       deprecated and refer to a legacy JSON-based output format.  The
!      â€˜jsonâ€™ format is a synonym for â€˜json-stderrâ€™.  The â€˜json-stderrâ€™
!      and â€˜json-fileâ€™ formats are identical, apart from where the JSON is
!      emitted to.  With â€˜json-stderrâ€™, the JSON is emitted to stderr,
!      whereas with â€˜json-fileâ€™ it is written to â€˜SOURCE.gcc.jsonâ€™.
  
! â€˜-fdiagnostics-add-output=DIAGNOSTICS-OUTPUT-SPECâ€™
       Add an additional "output sink" for emitting diagnostics.
  
       DIAGNOSTICS-OUTPUT-SPEC should specify a scheme, optionally
!      followed by â€˜:â€™ and one or more KEY=VALUE pairs, in this form:
  
            SCHEME
            SCHEME:KEY=VALUE
*************** ends may not honor these options.
*** 5743,5788 ****
  
       SCHEME can be
  
!      'text'
            Emit diagnostics to stderr using GCC's classic text output
            format.
  
            Supported keys are:
  
!           'color=[yes|no]'
!                Override colorization settings from '-fdiagnostics-color'
                 for this text output.
  
!           'experimental-nesting=[yes|no]'
                 Enable an experimental mode that emphasizes hierarchical
                 relationships within diagnostics messages, displaying
                 location information on separate lines.
  
!           'experimental-nesting-show-locations=[yes|no]'
!                If 'experimental-nesting=yes', then by default locations
!                are shown; set this key to 'no' to disable printing such
                 locations.  This exists for use by GCC developers, for
                 writing DejaGnu test cases.
  
!           'experimental-nesting-show-levels=[yes|no]'
                 This is a debugging option for use with
!                'experimental-nesting=yes'.  Set this key to 'yes' to
                 print explicit nesting levels in the output.  This exists
                 for use by GCC developers.
  
!      'sarif'
            Emit diagnostics to a file in SARIF format.
  
            Supported keys are:
  
!           'file=FILENAME'
                 Specify the filename to write the SARIF output to,
                 potentially with a leading absolute or relative path.  If
!                not specified, it defaults to 'SOURCE.sarif'.
  
!           'version=[2.1|2.2-prerelease]'
                 Specify the version of SARIF to use for the output.  If
!                not specified, defaults to 2.1.  '2.2-prerelease' uses an
                 unofficial draft of the future SARIF 2.2 specification
                 and should only be used for experimentation in this
                 release.
--- 5747,5792 ----
  
       SCHEME can be
  
!      â€˜textâ€™
            Emit diagnostics to stderr using GCC's classic text output
            format.
  
            Supported keys are:
  
!           â€˜color=[yes|no]â€™
!                Override colorization settings from â€˜-fdiagnostics-colorâ€™
                 for this text output.
  
!           â€˜experimental-nesting=[yes|no]â€™
                 Enable an experimental mode that emphasizes hierarchical
                 relationships within diagnostics messages, displaying
                 location information on separate lines.
  
!           â€˜experimental-nesting-show-locations=[yes|no]â€™
!                If â€˜experimental-nesting=yesâ€™, then by default locations
!                are shown; set this key to â€˜noâ€™ to disable printing such
                 locations.  This exists for use by GCC developers, for
                 writing DejaGnu test cases.
  
!           â€˜experimental-nesting-show-levels=[yes|no]â€™
                 This is a debugging option for use with
!                â€˜experimental-nesting=yesâ€™.  Set this key to â€˜yesâ€™ to
                 print explicit nesting levels in the output.  This exists
                 for use by GCC developers.
  
!      â€˜sarifâ€™
            Emit diagnostics to a file in SARIF format.
  
            Supported keys are:
  
!           â€˜file=FILENAMEâ€™
                 Specify the filename to write the SARIF output to,
                 potentially with a leading absolute or relative path.  If
!                not specified, it defaults to â€˜SOURCE.sarifâ€™.
  
!           â€˜version=[2.1|2.2-prerelease]â€™
                 Specify the version of SARIF to use for the output.  If
!                not specified, defaults to 2.1.  â€˜2.2-prereleaseâ€™ uses an
                 unofficial draft of the future SARIF 2.2 specification
                 and should only be used for experimentation in this
                 release.
*************** ends may not honor these options.
*** 5812,5834 ****
            VALUE = ? string without a ',' ? ;
  
  
! '-fdiagnostics-set-output=DIAGNOSTICS-OUTPUT-SPEC'
!      This works in a similar way to '-fdiagnostics-add-output=' except
       that instead of adding an additional "output sink" for diagnostics,
       it replaces all existing output sinks, such as from
!      '-fdiagnostics-format=', '-fdiagnostics-add-output=', or a prior
!      call to '-fdiagnostics-set-output='.
  
! '-fno-diagnostics-json-formatting'
       By default, when JSON is emitted for diagnostics (via
!      '-fdiagnostics-format=sarif-stderr',
!      '-fdiagnostics-format=sarif-file', '-fdiagnostics-format=json',
!      '-fdiagnostics-format=json-stderr',
!      '-fdiagnostics-format=json-file'), GCC will add newlines and
       indentation to visually emphasize the hierarchical structure of the
       JSON.
  
!      Use '-fno-diagnostics-json-formatting' to suppress this whitespace.
       It must be passed before the option it is to affect.
  
       This is intended for compatibility with tools that do not expect
--- 5816,5838 ----
            VALUE = ? string without a ',' ? ;
  
  
! â€˜-fdiagnostics-set-output=DIAGNOSTICS-OUTPUT-SPECâ€™
!      This works in a similar way to â€˜-fdiagnostics-add-output=â€™ except
       that instead of adding an additional "output sink" for diagnostics,
       it replaces all existing output sinks, such as from
!      â€˜-fdiagnostics-format=â€™, â€˜-fdiagnostics-add-output=â€™, or a prior
!      call to â€˜-fdiagnostics-set-output=â€™.
  
! â€˜-fno-diagnostics-json-formattingâ€™
       By default, when JSON is emitted for diagnostics (via
!      â€˜-fdiagnostics-format=sarif-stderrâ€™,
!      â€˜-fdiagnostics-format=sarif-fileâ€™, â€˜-fdiagnostics-format=jsonâ€™,
!      â€˜-fdiagnostics-format=json-stderrâ€™,
!      â€˜-fdiagnostics-format=json-fileâ€™), GCC will add newlines and
       indentation to visually emphasize the hierarchical structure of the
       JSON.
  
!      Use â€˜-fno-diagnostics-json-formattingâ€™ to suppress this whitespace.
       It must be passed before the option it is to affect.
  
       This is intended for compatibility with tools that do not expect
*************** an error.
*** 5848,5906 ****
   The following language-independent options do not enable specific
  warnings but control the kinds of diagnostics produced by GCC.
  
! '-fsyntax-only'
       Check the code for syntax errors, but don't do anything beyond
       that.
  
! '-fmax-errors=N'
       Limits the maximum number of error messages to N, at which point
       GCC bails out rather than attempting to continue processing the
       source code.  If N is 0 (the default), there is no limit on the
!      number of error messages produced.  If '-Wfatal-errors' is also
!      specified, then '-Wfatal-errors' takes precedence over this option.
  
! '-w'
       Inhibit all warning messages.
  
! '-Werror'
       Turn all warnings into errors.
  
! '-Werror='
       Turn the specified warning into an error.  The specifier for a
!      warning is appended; for example '-Werror=switch' turns the
!      warnings controlled by '-Wswitch' into errors.  This switch takes a
!      negative form, to be used to negate '-Werror' for specific
!      warnings; for example '-Wno-error=switch' makes '-Wswitch' warnings
!      not be errors, even when '-Werror' is in effect.
  
       The warning message for each controllable warning includes the
       option that controls the warning.  That option can then be used
!      with '-Werror=' and '-Wno-error=' as described above.  (Printing of
       the option in the warning message can be disabled using the
!      '-fno-diagnostics-show-option' flag.)
  
!      Note that specifying '-Werror='FOO automatically implies '-W'FOO.
!      However, '-Wno-error='FOO does not imply anything.
  
! '-Wfatal-errors'
       This option causes the compiler to abort compilation on the first
       error occurred rather than trying to keep going and printing
       further error messages.
  
   You can request many specific warnings with options beginning with
! '-W', for example '-Wunused-variable' to request warnings on
  declarations of variables that are never used.  Each of these specific
! warning options also has a negative form beginning with '-Wno-' to turn
! off warnings; for example, '-Wno-unused-variable'.  This manual lists
  only one of the two forms, whichever is not the default.  For further
  language-specific options also refer to *note C++ Dialect Options:: and
  *note Objective-C and Objective-C++ Dialect Options::.  Additional
  warnings can be produced by enabling the static analyzer; *Note Static
  Analyzer Options::.
  
!  Some options, such as '-Wall' and '-Wextra', turn on other options,
! such as '-Wunused', which may turn on further options, such as
! '-Wunused-variable'.  The combined effect of positive and negative forms
  is that more specific options have priority over less specific ones,
  independently of their position in the command line.  For options of the
  same specificity, the last one takes effect.  Options enabled or
--- 5852,5910 ----
   The following language-independent options do not enable specific
  warnings but control the kinds of diagnostics produced by GCC.
  
! â€˜-fsyntax-onlyâ€™
       Check the code for syntax errors, but don't do anything beyond
       that.
  
! â€˜-fmax-errors=Nâ€™
       Limits the maximum number of error messages to N, at which point
       GCC bails out rather than attempting to continue processing the
       source code.  If N is 0 (the default), there is no limit on the
!      number of error messages produced.  If â€˜-Wfatal-errorsâ€™ is also
!      specified, then â€˜-Wfatal-errorsâ€™ takes precedence over this option.
  
! â€˜-wâ€™
       Inhibit all warning messages.
  
! â€˜-Werrorâ€™
       Turn all warnings into errors.
  
! â€˜-Werror=â€™
       Turn the specified warning into an error.  The specifier for a
!      warning is appended; for example â€˜-Werror=switchâ€™ turns the
!      warnings controlled by â€˜-Wswitchâ€™ into errors.  This switch takes a
!      negative form, to be used to negate â€˜-Werrorâ€™ for specific
!      warnings; for example â€˜-Wno-error=switchâ€™ makes â€˜-Wswitchâ€™ warnings
!      not be errors, even when â€˜-Werrorâ€™ is in effect.
  
       The warning message for each controllable warning includes the
       option that controls the warning.  That option can then be used
!      with â€˜-Werror=â€™ and â€˜-Wno-error=â€™ as described above.  (Printing of
       the option in the warning message can be disabled using the
!      â€˜-fno-diagnostics-show-optionâ€™ flag.)
  
!      Note that specifying â€˜-Werror=â€™FOO automatically implies â€˜-Wâ€™FOO.
!      However, â€˜-Wno-error=â€™FOO does not imply anything.
  
! â€˜-Wfatal-errorsâ€™
       This option causes the compiler to abort compilation on the first
       error occurred rather than trying to keep going and printing
       further error messages.
  
   You can request many specific warnings with options beginning with
! â€˜-Wâ€™, for example â€˜-Wunused-variableâ€™ to request warnings on
  declarations of variables that are never used.  Each of these specific
! warning options also has a negative form beginning with â€˜-Wno-â€™ to turn
! off warnings; for example, â€˜-Wno-unused-variableâ€™.  This manual lists
  only one of the two forms, whichever is not the default.  For further
  language-specific options also refer to *note C++ Dialect Options:: and
  *note Objective-C and Objective-C++ Dialect Options::.  Additional
  warnings can be produced by enabling the static analyzer; *Note Static
  Analyzer Options::.
  
!  Some options, such as â€˜-Wallâ€™ and â€˜-Wextraâ€™, turn on other options,
! such as â€˜-Wunusedâ€™, which may turn on further options, such as
! â€˜-Wunused-variableâ€™.  The combined effect of positive and negative forms
  is that more specific options have priority over less specific ones,
  independently of their position in the command line.  For options of the
  same specificity, the last one takes effect.  Options enabled or
*************** disabled via pragmas (*note Diagnostic P
*** 5908,5990 ****
  appeared at the end of the command line.
  
   When an unrecognized warning option is requested (e.g.,
! '-Wunknown-warning'), GCC gives an error stating that the option is not
! recognized.  However, if the '-Wno-' form is used, the behavior is
! slightly different: no diagnostic is produced for '-Wno-unknown-warning'
  unless other diagnostics are being produced.  This allows the use of new
! '-Wno-' options with old compilers, but if something goes wrong, the
  compiler warns that an unrecognized option is present.
  
   The effectiveness of some warnings depends on optimizations also being
! enabled.  For example, '-Wsuggest-final-types' is more effective with
  link-time optimization.  Some other warnings may not be issued at all
  unless optimization is enabled.  While optimization in general improves
  the efficacy of warnings about control and data-flow problems, in some
  cases it may also cause false positives.
  
! '-Wpedantic'
! '-pedantic'
       Issue all the warnings demanded by strict ISO C and ISO C++;
       diagnose all programs that use forbidden extensions, and some other
       programs that do not follow ISO C and ISO C++.  This follows the
!      version of the ISO C or C++ standard specified by any '-std' option
       used.
  
       Valid ISO C and ISO C++ programs should compile properly with or
!      without this option (though a rare few require '-ansi' or a '-std'
       option specifying the version of the standard).  However, without
       this option, certain GNU extensions and traditional C and C++
       features are supported as well.  With this option, they are
!      diagnosed (or rejected with '-pedantic-errors').
  
!      '-Wpedantic' does not cause warning messages for use of the
!      alternate keywords whose names begin and end with '__'.  This
       alternate format can also be used to disable warnings for non-ISO
!      '__intN' types, i.e.  '__intN__'.  Pedantic warnings are also
!      disabled in the expression that follows '__extension__'.  However,
       only system header files should use these escape routes;
       application programs should avoid them.  *Note Alternate
       Keywords::.
  
       Some warnings about non-conforming programs are controlled by
!      options other than '-Wpedantic'; in many cases they are implied by
!      '-Wpedantic' but can be disabled separately by their specific
!      option, e.g.  '-Wpedantic -Wno-pointer-sign'.
  
!      Where the standard specified with '-std' represents a GNU extended
!      dialect of C, such as 'gnu90' or 'gnu99', there is a corresponding
!      "base standard", the version of ISO C on which the GNU extended
!      dialect is based.  Warnings from '-Wpedantic' are given where they
       are required by the base standard.  (It does not make sense for
       such warnings to be given only for features not in the specified
       GNU C dialect, since by definition the GNU dialects of C include
       all features the compiler supports with the given option, and there
       would be nothing to warn about.)
  
! '-pedantic-errors'
!      Give an error whenever the "base standard" (see '-Wpedantic')
       requires a diagnostic, in some cases where there is undefined
       behavior at compile-time and in some other cases that do not
       prevent compilation of programs that are valid according to the
!      standard.  This is not equivalent to '-Werror=pedantic': the latter
       option is unlikely to be useful, as it only makes errors of the
!      diagnostics that are controlled by '-Wpedantic', whereas this
       option also affects required diagnostics that are always enabled or
!      controlled by options other than '-Wpedantic'.
  
       If you want the required diagnostics that are warnings by default
       to be errors instead, but don't also want to enable the
!      '-Wpedantic' diagnostics, you can specify '-pedantic-errors
!      -Wno-pedantic' (or '-pedantic-errors -Wno-error=pedantic' to enable
       them but only as warnings).
  
       Some required diagnostics are errors by default, but can be reduced
!      to warnings using '-fpermissive' or their specific warning option,
!      e.g.  '-Wno-error=narrowing'.
  
       Some diagnostics for non-ISO practices are controlled by specific
!      warning options other than '-Wpedantic', but are also made errors
!      by '-pedantic-errors'.  For instance:
  
            -Wattributes (for standard attributes)
            -Wchanges-meaning (C++)
--- 5912,5994 ----
  appeared at the end of the command line.
  
   When an unrecognized warning option is requested (e.g.,
! â€˜-Wunknown-warningâ€™), GCC gives an error stating that the option is not
! recognized.  However, if the â€˜-Wno-â€™ form is used, the behavior is
! slightly different: no diagnostic is produced for â€˜-Wno-unknown-warningâ€™
  unless other diagnostics are being produced.  This allows the use of new
! â€˜-Wno-â€™ options with old compilers, but if something goes wrong, the
  compiler warns that an unrecognized option is present.
  
   The effectiveness of some warnings depends on optimizations also being
! enabled.  For example, â€˜-Wsuggest-final-typesâ€™ is more effective with
  link-time optimization.  Some other warnings may not be issued at all
  unless optimization is enabled.  While optimization in general improves
  the efficacy of warnings about control and data-flow problems, in some
  cases it may also cause false positives.
  
! â€˜-Wpedanticâ€™
! â€˜-pedanticâ€™
       Issue all the warnings demanded by strict ISO C and ISO C++;
       diagnose all programs that use forbidden extensions, and some other
       programs that do not follow ISO C and ISO C++.  This follows the
!      version of the ISO C or C++ standard specified by any â€˜-stdâ€™ option
       used.
  
       Valid ISO C and ISO C++ programs should compile properly with or
!      without this option (though a rare few require â€˜-ansiâ€™ or a â€˜-stdâ€™
       option specifying the version of the standard).  However, without
       this option, certain GNU extensions and traditional C and C++
       features are supported as well.  With this option, they are
!      diagnosed (or rejected with â€˜-pedantic-errorsâ€™).
  
!      â€˜-Wpedanticâ€™ does not cause warning messages for use of the
!      alternate keywords whose names begin and end with â€˜__â€™.  This
       alternate format can also be used to disable warnings for non-ISO
!      â€˜__intNâ€™ types, i.e.  â€˜__intN__â€™.  Pedantic warnings are also
!      disabled in the expression that follows â€˜__extension__â€™.  However,
       only system header files should use these escape routes;
       application programs should avoid them.  *Note Alternate
       Keywords::.
  
       Some warnings about non-conforming programs are controlled by
!      options other than â€˜-Wpedanticâ€™; in many cases they are implied by
!      â€˜-Wpedanticâ€™ but can be disabled separately by their specific
!      option, e.g.  â€˜-Wpedantic -Wno-pointer-signâ€™.
  
!      Where the standard specified with â€˜-stdâ€™ represents a GNU extended
!      dialect of C, such as â€˜gnu90â€™ or â€˜gnu99â€™, there is a corresponding
!      â€œbase standardâ€�, the version of ISO C on which the GNU extended
!      dialect is based.  Warnings from â€˜-Wpedanticâ€™ are given where they
       are required by the base standard.  (It does not make sense for
       such warnings to be given only for features not in the specified
       GNU C dialect, since by definition the GNU dialects of C include
       all features the compiler supports with the given option, and there
       would be nothing to warn about.)
  
! â€˜-pedantic-errorsâ€™
!      Give an error whenever the â€œbase standardâ€� (see â€˜-Wpedanticâ€™)
       requires a diagnostic, in some cases where there is undefined
       behavior at compile-time and in some other cases that do not
       prevent compilation of programs that are valid according to the
!      standard.  This is not equivalent to â€˜-Werror=pedanticâ€™: the latter
       option is unlikely to be useful, as it only makes errors of the
!      diagnostics that are controlled by â€˜-Wpedanticâ€™, whereas this
       option also affects required diagnostics that are always enabled or
!      controlled by options other than â€˜-Wpedanticâ€™.
  
       If you want the required diagnostics that are warnings by default
       to be errors instead, but don't also want to enable the
!      â€˜-Wpedanticâ€™ diagnostics, you can specify â€˜-pedantic-errors
!      -Wno-pedanticâ€™ (or â€˜-pedantic-errors -Wno-error=pedanticâ€™ to enable
       them but only as warnings).
  
       Some required diagnostics are errors by default, but can be reduced
!      to warnings using â€˜-fpermissiveâ€™ or their specific warning option,
!      e.g.  â€˜-Wno-error=narrowingâ€™.
  
       Some diagnostics for non-ISO practices are controlled by specific
!      warning options other than â€˜-Wpedanticâ€™, but are also made errors
!      by â€˜-pedantic-errorsâ€™.  For instance:
  
            -Wattributes (for standard attributes)
            -Wchanges-meaning (C++)
*************** cases it may also cause false positives.
*** 6006,6014 ****
            -Wwrite-strings (C++11 or later)
  
  
! '-fpermissive'
       Downgrade some required diagnostics about nonconformant code from
!      errors to warnings.  Thus, using '-fpermissive' allows some
       nonconforming code to compile.  Some C++ diagnostics are controlled
       only by this flag, but it also downgrades some C and C++
       diagnostics that have their own flag:
--- 6010,6018 ----
            -Wwrite-strings (C++11 or later)
  
  
! â€˜-fpermissiveâ€™
       Downgrade some required diagnostics about nonconformant code from
!      errors to warnings.  Thus, using â€˜-fpermissiveâ€™ allows some
       nonconforming code to compile.  Some C++ diagnostics are controlled
       only by this flag, but it also downgrades some C and C++
       diagnostics that have their own flag:
*************** cases it may also cause false positives.
*** 6023,6032 ****
            -Wtemplate-body (C++ and Objective-C++ only)
  
  
!      The '-fpermissive' option is the default for historic C language
!      modes ('-std=c89', '-std=gnu89', '-std=c90', '-std=gnu90').
  
! '-Wall'
       This enables all the warnings about constructions that some users
       consider questionable, and that are easy to avoid (or modify to
       prevent the warning), even in conjunction with macros.  This also
--- 6027,6036 ----
            -Wtemplate-body (C++ and Objective-C++ only)
  
  
!      The â€˜-fpermissiveâ€™ option is the default for historic C language
!      modes (â€˜-std=c89â€™, â€˜-std=gnu89â€™, â€˜-std=c90â€™, â€˜-std=gnu90â€™).
  
! â€˜-Wallâ€™
       This enables all the warnings about constructions that some users
       consider questionable, and that are easy to avoid (or modify to
       prevent the warning), even in conjunction with macros.  This also
*************** cases it may also cause false positives.
*** 6034,6040 ****
       Dialect Options:: and *note Objective-C and Objective-C++ Dialect
       Options::.
  
!      '-Wall' turns on the following warning flags:
  
            -Waddress
            -Waligned-new (C++ and Objective-C++ only)
--- 6038,6044 ----
       Dialect Options:: and *note Objective-C and Objective-C++ Dialect
       Options::.
  
!      â€˜-Wallâ€™ turns on the following warning flags:
  
            -Waddress
            -Waligned-new (C++ and Objective-C++ only)
*************** cases it may also cause false positives.
*** 6118,6134 ****
            -Wvolatile-register-var
            -Wzero-length-bounds
  
!      Note that some warning flags are not implied by '-Wall'.  Some of
       them warn about constructions that users generally do not consider
       questionable, but which occasionally you might wish to check for;
       others warn about constructions that are necessary or hard to avoid
       in some cases, and there is no simple way to modify the code to
!      suppress the warning.  Some of them are enabled by '-Wextra' but
       many of them must be enabled individually.
  
! '-Wextra'
       This enables some extra warning flags that are not enabled by
!      '-Wall'.  (This option used to be called '-W'.  The older name is
       still supported, but the newer name is more descriptive.)
  
            -Wabsolute-value (only for C/ObjC)
--- 6122,6138 ----
            -Wvolatile-register-var
            -Wzero-length-bounds
  
!      Note that some warning flags are not implied by â€˜-Wallâ€™.  Some of
       them warn about constructions that users generally do not consider
       questionable, but which occasionally you might wish to check for;
       others warn about constructions that are necessary or hard to avoid
       in some cases, and there is no simple way to modify the code to
!      suppress the warning.  Some of them are enabled by â€˜-Wextraâ€™ but
       many of them must be enabled individually.
  
! â€˜-Wextraâ€™
       This enables some extra warning flags that are not enabled by
!      â€˜-Wallâ€™.  (This option used to be called â€˜-Wâ€™.  The older name is
       still supported, but the newer name is more descriptive.)
  
            -Wabsolute-value (only for C/ObjC)
*************** cases it may also cause false positives.
*** 6160,6209 ****
            -Wunused-parameter (only with -Wunused or -Wall)
            -Wunused-but-set-parameter (only with -Wunused or -Wall)
  
!      The option '-Wextra' also prints warning messages for the following
       cases:
  
!         * A pointer is compared against integer zero with '<', '<=',
!           '>', or '>='.
  
!         * (C++ only) An enumerator and a non-enumerator both appear in a
            conditional expression.
  
!         * (C++ only) Ambiguous virtual bases.
  
!         * (C++ only) Subscripting an array that has been declared
!           'register'.
  
!         * (C++ only) Taking the address of a variable that has been
!           declared 'register'.
  
!         * (C++ only) A base class is not initialized in the copy
            constructor of a derived class.
  
! '-Wabi (C, Objective-C, C++ and Objective-C++ only)'
  
       Warn about code affected by ABI changes.  This includes code that
       may not be compatible with the vendor-neutral C++ ABI as well as
       the psABI for the particular target.  The latter warnings are also
!      controlled separately by '-Wpsabi', which is implied by '-Wabi'.
  
       Since G++ now defaults to updating the ABI with each major release,
!      normally '-Wabi' warns only about C++ ABI compatibility problems if
       there is a check added later in a release series for an ABI issue
!      discovered since the initial release.  '-Wabi' warns about more
       things if an older ABI version is selected (with
!      '-fabi-version=N').
  
!      '-Wabi' can also be used with an explicit version number to warn
!      about C++ ABI compatibility with a particular '-fabi-version'
!      level, e.g. '-Wabi=2' to warn about changes relative to
!      '-fabi-version=2'.
  
       If an explicit version number is provided and
!      '-fabi-compat-version' is not specified, the version number from
       this option is used for compatibility aliases.  If no explicit
       version number is provided with this option, but
!      '-fabi-compat-version' is specified, that version number is used
       for C++ ABI warnings.
  
       Although an effort has been made to warn about all such cases,
--- 6164,6213 ----
            -Wunused-parameter (only with -Wunused or -Wall)
            -Wunused-but-set-parameter (only with -Wunused or -Wall)
  
!      The option â€˜-Wextraâ€™ also prints warning messages for the following
       cases:
  
!         â€¢ A pointer is compared against integer zero with â€˜<â€™, â€˜<=â€™,
!           â€˜>â€™, or â€˜>=â€™.
  
!         â€¢ (C++ only) An enumerator and a non-enumerator both appear in a
            conditional expression.
  
!         â€¢ (C++ only) Ambiguous virtual bases.
  
!         â€¢ (C++ only) Subscripting an array that has been declared
!           â€˜registerâ€™.
  
!         â€¢ (C++ only) Taking the address of a variable that has been
!           declared â€˜registerâ€™.
  
!         â€¢ (C++ only) A base class is not initialized in the copy
            constructor of a derived class.
  
! â€˜-Wabi (C, Objective-C, C++ and Objective-C++ only)â€™
  
       Warn about code affected by ABI changes.  This includes code that
       may not be compatible with the vendor-neutral C++ ABI as well as
       the psABI for the particular target.  The latter warnings are also
!      controlled separately by â€˜-Wpsabiâ€™, which is implied by â€˜-Wabiâ€™.
  
       Since G++ now defaults to updating the ABI with each major release,
!      normally â€˜-Wabiâ€™ warns only about C++ ABI compatibility problems if
       there is a check added later in a release series for an ABI issue
!      discovered since the initial release.  â€˜-Wabiâ€™ warns about more
       things if an older ABI version is selected (with
!      â€˜-fabi-version=Nâ€™).
  
!      â€˜-Wabiâ€™ can also be used with an explicit version number to warn
!      about C++ ABI compatibility with a particular â€˜-fabi-versionâ€™
!      level, e.g. â€˜-Wabi=2â€™ to warn about changes relative to
!      â€˜-fabi-version=2â€™.
  
       If an explicit version number is provided and
!      â€˜-fabi-compat-versionâ€™ is not specified, the version number from
       this option is used for compatibility aliases.  If no explicit
       version number is provided with this option, but
!      â€˜-fabi-compat-versionâ€™ is specified, that version number is used
       for C++ ABI warnings.
  
       Although an effort has been made to warn about all such cases,
*************** cases it may also cause false positives.
*** 6216,6296 ****
       concerned about the fact that code generated by G++ may not be
       binary compatible with code generated by other compilers.
  
!      Known incompatibilities in '-fabi-version=2' (which was the default
       from GCC 3.4 to 4.9) include:
  
!         * A template with a non-type template parameter of reference
            type was mangled incorrectly:
                 extern int N;
                 template <int &> struct S {};
                 void n (S<N>) {2}
  
!           This was fixed in '-fabi-version=3'.
  
!         * SIMD vector types declared using '__attribute ((vector_size))'
            were mangled in a non-standard way that does not allow for
            overloading of functions taking vectors of different sizes.
  
!           The mangling was changed in '-fabi-version=4'.
  
!         * '__attribute ((const))' and 'noreturn' were mangled as type
!           qualifiers, and 'decltype' of a plain declaration was folded
            away.
  
!           These mangling issues were fixed in '-fabi-version=5'.
  
!         * Scoped enumerators passed as arguments to a variadic function
!           are promoted like unscoped enumerators, causing 'va_arg' to
            complain.  On most targets this does not actually affect the
            parameter passing ABI, as there is no way to pass an argument
!           smaller than 'int'.
  
            Also, the ABI changed the mangling of template argument packs,
!           'const_cast', 'static_cast', prefix increment/decrement, and a
            class scope function used as a template argument.
  
!           These issues were corrected in '-fabi-version=6'.
  
!         * Lambdas in default argument scope were mangled incorrectly,
!           and the ABI changed the mangling of 'nullptr_t'.
  
!           These issues were corrected in '-fabi-version=7'.
  
!         * When mangling a function type with function-cv-qualifiers, the
            un-qualified function type was incorrectly treated as a
            substitution candidate.
  
!           This was fixed in '-fabi-version=8', the default for GCC 5.1.
  
!         * 'decltype(nullptr)' incorrectly had an alignment of 1, leading
            to unaligned accesses.  Note that this did not affect the ABI
!           of a function with a 'nullptr_t' parameter, as parameters have
            a minimum alignment.
  
!           This was fixed in '-fabi-version=9', the default for GCC 5.2.
  
!         * Target-specific attributes that affect the identity of a type,
            such as ia32 calling conventions on a function type (stdcall,
            regparm, etc.), did not affect the mangled name, leading to
            name collisions when function pointers were used as template
            arguments.
  
!           This was fixed in '-fabi-version=10', the default for GCC 6.1.
  
! '-Wpsabi (C, Objective-C, C++ and Objective-C++ only)'
  
!      '-Wpsabi' enables warnings about processor-specific ABI changes,
       such as changes in alignment requirements or how function arguments
       are passed.  On several targets, including AArch64, ARM, x86, MIPS,
       RS6000/PowerPC, and S/390, these details have changed between
       different versions of GCC and/or different versions of the C or C++
       language standards in ways that affect binary compatibility of
!      compiled code.  With '-Wpsabi', GCC can detect potentially
       incompatible usages and warn you about them.
  
!      '-Wpsabi' is enabled by default, and is also implied by '-Wabi'.
  
! '-Wno-changes-meaning (C++ and Objective-C++ only)'
       C++ requires that unqualified uses of a name within a class have
       the same meaning in the complete scope of the class, so declaring
       the name after using it is ill-formed:
--- 6220,6300 ----
       concerned about the fact that code generated by G++ may not be
       binary compatible with code generated by other compilers.
  
!      Known incompatibilities in â€˜-fabi-version=2â€™ (which was the default
       from GCC 3.4 to 4.9) include:
  
!         â€¢ A template with a non-type template parameter of reference
            type was mangled incorrectly:
                 extern int N;
                 template <int &> struct S {};
                 void n (S<N>) {2}
  
!           This was fixed in â€˜-fabi-version=3â€™.
  
!         â€¢ SIMD vector types declared using â€˜__attribute ((vector_size))â€™
            were mangled in a non-standard way that does not allow for
            overloading of functions taking vectors of different sizes.
  
!           The mangling was changed in â€˜-fabi-version=4â€™.
  
!         â€¢ â€˜__attribute ((const))â€™ and â€˜noreturnâ€™ were mangled as type
!           qualifiers, and â€˜decltypeâ€™ of a plain declaration was folded
            away.
  
!           These mangling issues were fixed in â€˜-fabi-version=5â€™.
  
!         â€¢ Scoped enumerators passed as arguments to a variadic function
!           are promoted like unscoped enumerators, causing â€˜va_argâ€™ to
            complain.  On most targets this does not actually affect the
            parameter passing ABI, as there is no way to pass an argument
!           smaller than â€˜intâ€™.
  
            Also, the ABI changed the mangling of template argument packs,
!           â€˜const_castâ€™, â€˜static_castâ€™, prefix increment/decrement, and a
            class scope function used as a template argument.
  
!           These issues were corrected in â€˜-fabi-version=6â€™.
  
!         â€¢ Lambdas in default argument scope were mangled incorrectly,
!           and the ABI changed the mangling of â€˜nullptr_tâ€™.
  
!           These issues were corrected in â€˜-fabi-version=7â€™.
  
!         â€¢ When mangling a function type with function-cv-qualifiers, the
            un-qualified function type was incorrectly treated as a
            substitution candidate.
  
!           This was fixed in â€˜-fabi-version=8â€™, the default for GCC 5.1.
  
!         â€¢ â€˜decltype(nullptr)â€™ incorrectly had an alignment of 1, leading
            to unaligned accesses.  Note that this did not affect the ABI
!           of a function with a â€˜nullptr_tâ€™ parameter, as parameters have
            a minimum alignment.
  
!           This was fixed in â€˜-fabi-version=9â€™, the default for GCC 5.2.
  
!         â€¢ Target-specific attributes that affect the identity of a type,
            such as ia32 calling conventions on a function type (stdcall,
            regparm, etc.), did not affect the mangled name, leading to
            name collisions when function pointers were used as template
            arguments.
  
!           This was fixed in â€˜-fabi-version=10â€™, the default for GCC 6.1.
  
! â€˜-Wpsabi (C, Objective-C, C++ and Objective-C++ only)â€™
  
!      â€˜-Wpsabiâ€™ enables warnings about processor-specific ABI changes,
       such as changes in alignment requirements or how function arguments
       are passed.  On several targets, including AArch64, ARM, x86, MIPS,
       RS6000/PowerPC, and S/390, these details have changed between
       different versions of GCC and/or different versions of the C or C++
       language standards in ways that affect binary compatibility of
!      compiled code.  With â€˜-Wpsabiâ€™, GCC can detect potentially
       incompatible usages and warn you about them.
  
!      â€˜-Wpsabiâ€™ is enabled by default, and is also implied by â€˜-Wabiâ€™.
  
! â€˜-Wno-changes-meaning (C++ and Objective-C++ only)â€™
       C++ requires that unqualified uses of a name within a class have
       the same meaning in the complete scope of the class, so declaring
       the name after using it is ill-formed:
*************** cases it may also cause false positives.
*** 6299,6388 ****
            struct B2 { A a; struct A { }; }; // error, 'A' changes meaning
       By default, the B1 case is only a warning because the two
       declarations have the same type, while the B2 case is an error.
!      Both diagnostics can be disabled with '-Wno-changes-meaning'.
       Alternately, the error case can be reduced to a warning with
!      '-Wno-error=changes-meaning' or '-fpermissive'.
  
!      Both diagnostics are also suppressed by '-fms-extensions'.
  
! '-Wchar-subscripts'
!      Warn if an array subscript has type 'char'.  This is a common cause
       of error, as programmers often forget that this type is signed on
!      some machines.  This warning is enabled by '-Wall'.
  
! '-Wno-coverage-mismatch'
       Warn if feedback profiles do not match when using the
!      '-fprofile-use' option.  If a source file is changed between
!      compiling with '-fprofile-generate' and with '-fprofile-use', the
       files with the profile feedback can fail to match the source file
       and GCC cannot use the profile feedback information.  By default,
       this warning is enabled and is treated as an error.
!      '-Wno-coverage-mismatch' can be used to disable the warning or
!      '-Wno-error=coverage-mismatch' can be used to disable the error.
       Disabling the error for this warning can result in poorly optimized
       code and is useful only in the case of very minor changes such as
       bug fixes to an existing code-base.  Completely disabling the
       warning is not recommended.
  
! '-Wno-coverage-too-many-conditions'
!      Warn if '-fcondition-coverage' is used and an expression have too
       many terms and GCC gives up coverage.  Coverage is given up when
       there are more terms in the conditional than there are bits in a
!      'gcov_type_unsigned'.  This warning is enabled by default.
  
! '-Wno-coverage-too-many-paths'
!      Warn if '-fpath-coverage' is used and a function has too many paths
       and GCC gives up coverage.  Giving up is controlled by
!      '-fpath-coverage-limit'.  This warning is enabled by default.
  
! '-Wno-coverage-invalid-line-number'
       Warn in case a function ends earlier than it begins due to an
       invalid linenum macros.  The warning is emitted only with
!      '--coverage' enabled.
  
       By default, this warning is enabled and is treated as an error.
!      '-Wno-coverage-invalid-line-number' can be used to disable the
!      warning or '-Wno-error=coverage-invalid-line-number' can be used to
       disable the error.
  
! '-Wno-cpp (C, Objective-C, C++, Objective-C++ and Fortran only)'
!      Suppress warning messages emitted by '#warning' directives.
  
! '-Wdouble-promotion (C, C++, Objective-C and Objective-C++ only)'
!      Give a warning when a value of type 'float' is implicitly promoted
!      to 'double'.  CPUs with a 32-bit "single-precision" floating-point
!      unit implement 'float' in hardware, but emulate 'double' in
!      software.  On such a machine, doing computations using 'double'
       values is much more expensive because of the overhead required for
       software emulation.
  
!      It is easy to accidentally do computations with 'double' because
!      floating-point literals are implicitly of type 'double'.  For
       example, in:
            float area(float radius)
            {
               return 3.14159 * radius * radius;
            }
!      the compiler performs the entire computation with 'double' because
!      the floating-point literal is a 'double'.
  
! '-Wduplicate-decl-specifier (C and Objective-C only)'
!      Warn if a declaration has duplicate 'const', 'volatile', 'restrict'
!      or '_Atomic' specifier.  This warning is enabled by '-Wall'.
  
! '-Wformat'
! '-Wformat=N'
!      Check calls to 'printf' and 'scanf', etc., to make sure that the
       arguments supplied have types appropriate to the format string
       specified, and that the conversions specified in the format string
       make sense.  This includes standard functions, and others specified
       by format attributes (*note Function Attributes::), in the
!      'printf', 'scanf', 'strftime' and 'strfmon' (an X/Open extension,
       not in the C standard) families (or other target-specific
       families).  Which functions are checked without format attributes
       having been specified depends on the standard version selected, and
       such checks of functions without the attribute specified are
!      disabled by '-ffreestanding' or '-fno-builtin'.
  
       The formats are checked against the format features supported by
       GNU libc version 2.2.  These include all ISO C90 and C99 features,
--- 6303,6392 ----
            struct B2 { A a; struct A { }; }; // error, 'A' changes meaning
       By default, the B1 case is only a warning because the two
       declarations have the same type, while the B2 case is an error.
!      Both diagnostics can be disabled with â€˜-Wno-changes-meaningâ€™.
       Alternately, the error case can be reduced to a warning with
!      â€˜-Wno-error=changes-meaningâ€™ or â€˜-fpermissiveâ€™.
  
!      Both diagnostics are also suppressed by â€˜-fms-extensionsâ€™.
  
! â€˜-Wchar-subscriptsâ€™
!      Warn if an array subscript has type â€˜charâ€™.  This is a common cause
       of error, as programmers often forget that this type is signed on
!      some machines.  This warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Wno-coverage-mismatchâ€™
       Warn if feedback profiles do not match when using the
!      â€˜-fprofile-useâ€™ option.  If a source file is changed between
!      compiling with â€˜-fprofile-generateâ€™ and with â€˜-fprofile-useâ€™, the
       files with the profile feedback can fail to match the source file
       and GCC cannot use the profile feedback information.  By default,
       this warning is enabled and is treated as an error.
!      â€˜-Wno-coverage-mismatchâ€™ can be used to disable the warning or
!      â€˜-Wno-error=coverage-mismatchâ€™ can be used to disable the error.
       Disabling the error for this warning can result in poorly optimized
       code and is useful only in the case of very minor changes such as
       bug fixes to an existing code-base.  Completely disabling the
       warning is not recommended.
  
! â€˜-Wno-coverage-too-many-conditionsâ€™
!      Warn if â€˜-fcondition-coverageâ€™ is used and an expression have too
       many terms and GCC gives up coverage.  Coverage is given up when
       there are more terms in the conditional than there are bits in a
!      â€˜gcov_type_unsignedâ€™.  This warning is enabled by default.
  
! â€˜-Wno-coverage-too-many-pathsâ€™
!      Warn if â€˜-fpath-coverageâ€™ is used and a function has too many paths
       and GCC gives up coverage.  Giving up is controlled by
!      â€˜-fpath-coverage-limitâ€™.  This warning is enabled by default.
  
! â€˜-Wno-coverage-invalid-line-numberâ€™
       Warn in case a function ends earlier than it begins due to an
       invalid linenum macros.  The warning is emitted only with
!      â€˜--coverageâ€™ enabled.
  
       By default, this warning is enabled and is treated as an error.
!      â€˜-Wno-coverage-invalid-line-numberâ€™ can be used to disable the
!      warning or â€˜-Wno-error=coverage-invalid-line-numberâ€™ can be used to
       disable the error.
  
! â€˜-Wno-cpp (C, Objective-C, C++, Objective-C++ and Fortran only)â€™
!      Suppress warning messages emitted by â€˜#warningâ€™ directives.
  
! â€˜-Wdouble-promotion (C, C++, Objective-C and Objective-C++ only)â€™
!      Give a warning when a value of type â€˜floatâ€™ is implicitly promoted
!      to â€˜doubleâ€™.  CPUs with a 32-bit "single-precision" floating-point
!      unit implement â€˜floatâ€™ in hardware, but emulate â€˜doubleâ€™ in
!      software.  On such a machine, doing computations using â€˜doubleâ€™
       values is much more expensive because of the overhead required for
       software emulation.
  
!      It is easy to accidentally do computations with â€˜doubleâ€™ because
!      floating-point literals are implicitly of type â€˜doubleâ€™.  For
       example, in:
            float area(float radius)
            {
               return 3.14159 * radius * radius;
            }
!      the compiler performs the entire computation with â€˜doubleâ€™ because
!      the floating-point literal is a â€˜doubleâ€™.
  
! â€˜-Wduplicate-decl-specifier (C and Objective-C only)â€™
!      Warn if a declaration has duplicate â€˜constâ€™, â€˜volatileâ€™, â€˜restrictâ€™
!      or â€˜_Atomicâ€™ specifier.  This warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Wformatâ€™
! â€˜-Wformat=Nâ€™
!      Check calls to â€˜printfâ€™ and â€˜scanfâ€™, etc., to make sure that the
       arguments supplied have types appropriate to the format string
       specified, and that the conversions specified in the format string
       make sense.  This includes standard functions, and others specified
       by format attributes (*note Function Attributes::), in the
!      â€˜printfâ€™, â€˜scanfâ€™, â€˜strftimeâ€™ and â€˜strfmonâ€™ (an X/Open extension,
       not in the C standard) families (or other target-specific
       families).  Which functions are checked without format attributes
       having been specified depends on the standard version selected, and
       such checks of functions without the attribute specified are
!      disabled by â€˜-ffreestandingâ€™ or â€˜-fno-builtinâ€™.
  
       The formats are checked against the format features supported by
       GNU libc version 2.2.  These include all ISO C90 and C99 features,
*************** cases it may also cause false positives.
*** 6390,6436 ****
       and GNU extensions.  Other library implementations may not support
       all these features; GCC does not support warning about features
       that go beyond a particular library's limitations.  However, if
!      '-Wpedantic' is used with '-Wformat', warnings are given about
       format features not in the selected standard version (but not for
!      'strfmon' formats, since those are not in any version of the C
       standard).  *Note Options Controlling C Dialect: C Dialect Options.
  
!      '-Wformat=1'
!      '-Wformat'
!           Option '-Wformat' is equivalent to '-Wformat=1', and
!           '-Wno-format' is equivalent to '-Wformat=0'.  Since '-Wformat'
            also checks for null format arguments for several functions,
!           '-Wformat' also implies '-Wnonnull'.  Some aspects of this
            level of format checking can be disabled by the options:
!           '-Wno-format-contains-nul', '-Wno-format-extra-args', and
!           '-Wno-format-zero-length'.  '-Wformat' is enabled by '-Wall'.
  
!      '-Wformat=2'
!           Enable '-Wformat' plus additional format checks.  Currently
!           equivalent to '-Wformat -Wformat-nonliteral -Wformat-security
!           -Wformat-y2k'.
  
! '-Wno-format-contains-nul'
!      If '-Wformat' is specified, do not warn about format strings that
       contain NUL bytes.
  
! '-Wno-format-extra-args'
!      If '-Wformat' is specified, do not warn about excess arguments to a
!      'printf' or 'scanf' format function.  The C standard specifies that
       such arguments are ignored.
  
       Where the unused arguments lie between used arguments that are
!      specified with '$' operand number specifications, normally warnings
       are still given, since the implementation could not know what type
!      to pass to 'va_arg' to skip the unused arguments.  However, in the
!      case of 'scanf' formats, this option suppresses the warning if the
       unused arguments are all pointers, since the Single Unix
       Specification says that such unused arguments are allowed.
  
! '-Wformat-overflow'
! '-Wformat-overflow=LEVEL'
       Warn about calls to formatted input/output functions such as
!      'sprintf' and 'vsprintf' that might overflow the destination
       buffer.  When the exact number of bytes written by a format
       directive cannot be determined at compile-time it is estimated
       based on heuristics that depend on the LEVEL argument and on
--- 6394,6440 ----
       and GNU extensions.  Other library implementations may not support
       all these features; GCC does not support warning about features
       that go beyond a particular library's limitations.  However, if
!      â€˜-Wpedanticâ€™ is used with â€˜-Wformatâ€™, warnings are given about
       format features not in the selected standard version (but not for
!      â€˜strfmonâ€™ formats, since those are not in any version of the C
       standard).  *Note Options Controlling C Dialect: C Dialect Options.
  
!      â€˜-Wformat=1â€™
!      â€˜-Wformatâ€™
!           Option â€˜-Wformatâ€™ is equivalent to â€˜-Wformat=1â€™, and
!           â€˜-Wno-formatâ€™ is equivalent to â€˜-Wformat=0â€™.  Since â€˜-Wformatâ€™
            also checks for null format arguments for several functions,
!           â€˜-Wformatâ€™ also implies â€˜-Wnonnullâ€™.  Some aspects of this
            level of format checking can be disabled by the options:
!           â€˜-Wno-format-contains-nulâ€™, â€˜-Wno-format-extra-argsâ€™, and
!           â€˜-Wno-format-zero-lengthâ€™.  â€˜-Wformatâ€™ is enabled by â€˜-Wallâ€™.
  
!      â€˜-Wformat=2â€™
!           Enable â€˜-Wformatâ€™ plus additional format checks.  Currently
!           equivalent to â€˜-Wformat -Wformat-nonliteral -Wformat-security
!           -Wformat-y2kâ€™.
  
! â€˜-Wno-format-contains-nulâ€™
!      If â€˜-Wformatâ€™ is specified, do not warn about format strings that
       contain NUL bytes.
  
! â€˜-Wno-format-extra-argsâ€™
!      If â€˜-Wformatâ€™ is specified, do not warn about excess arguments to a
!      â€˜printfâ€™ or â€˜scanfâ€™ format function.  The C standard specifies that
       such arguments are ignored.
  
       Where the unused arguments lie between used arguments that are
!      specified with â€˜$â€™ operand number specifications, normally warnings
       are still given, since the implementation could not know what type
!      to pass to â€˜va_argâ€™ to skip the unused arguments.  However, in the
!      case of â€˜scanfâ€™ formats, this option suppresses the warning if the
       unused arguments are all pointers, since the Single Unix
       Specification says that such unused arguments are allowed.
  
! â€˜-Wformat-overflowâ€™
! â€˜-Wformat-overflow=LEVELâ€™
       Warn about calls to formatted input/output functions such as
!      â€˜sprintfâ€™ and â€˜vsprintfâ€™ that might overflow the destination
       buffer.  When the exact number of bytes written by a format
       directive cannot be determined at compile-time it is estimated
       based on heuristics that depend on the LEVEL argument and on
*************** cases it may also cause false positives.
*** 6438,6446 ****
       improve the accuracy of the warning, it may also result in false
       positives.
  
!      '-Wformat-overflow'
!      '-Wformat-overflow=1'
!           Level 1 of '-Wformat-overflow' enabled by '-Wformat' employs a
            conservative approach that warns only about calls that most
            likely overflow the buffer.  At this level, numeric arguments
            to format directives with unknown values are assumed to have
--- 6442,6450 ----
       improve the accuracy of the warning, it may also result in false
       positives.
  
!      â€˜-Wformat-overflowâ€™
!      â€˜-Wformat-overflow=1â€™
!           Level 1 of â€˜-Wformat-overflowâ€™ enabled by â€˜-Wformatâ€™ employs a
            conservative approach that warns only about calls that most
            likely overflow the buffer.  At this level, numeric arguments
            to format directives with unknown values are assumed to have
*************** cases it may also cause false positives.
*** 6450,6458 ****
            either by their directive's precision or by a finite set of
            string literals, are assumed to take on the value within the
            range that results in the most bytes on output.  For example,
!           the call to 'sprintf' below is diagnosed because even with
            both A and B equal to zero, the terminating NUL character
!           (''\0'') appended by the function to the destination buffer
            will be written past its end.  Increasing the size of the
            buffer by a single byte is sufficient to avoid the warning,
            though it may not be sufficient to avoid the overflow.
--- 6454,6462 ----
            either by their directive's precision or by a finite set of
            string literals, are assumed to take on the value within the
            range that results in the most bytes on output.  For example,
!           the call to â€˜sprintfâ€™ below is diagnosed because even with
            both A and B equal to zero, the terminating NUL character
!           (â€˜'\0'â€™) appended by the function to the destination buffer
            will be written past its end.  Increasing the size of the
            buffer by a single byte is sufficient to avoid the warning,
            though it may not be sufficient to avoid the overflow.
*************** cases it may also cause false positives.
*** 6463,6469 ****
                   sprintf (buf, "a = %i, b = %i\n", a, b);
                 }
  
!      '-Wformat-overflow=2'
            Level 2 warns also about calls that might overflow the
            destination buffer given an argument of sufficient length or
            magnitude.  At level 2, unknown numeric arguments are assumed
--- 6467,6473 ----
                   sprintf (buf, "a = %i, b = %i\n", a, b);
                 }
  
!      â€˜-Wformat-overflow=2â€™
            Level 2 warns also about calls that might overflow the
            destination buffer given an argument of sufficient length or
            magnitude.  At level 2, unknown numeric arguments are assumed
*************** cases it may also cause false positives.
*** 6476,6483 ****
            character long.
  
            At level 2, the call in the example above is again diagnosed,
!           but this time because with A equal to a 32-bit 'INT_MIN' the
!           first '%i' directive will write some of its digits beyond the
            end of the destination buffer.  To make the call safe
            regardless of the values of the two variables, the size of the
            destination buffer must be increased to at least 34 bytes.
--- 6480,6487 ----
            character long.
  
            At level 2, the call in the example above is again diagnosed,
!           but this time because with A equal to a 32-bit â€˜INT_MINâ€™ the
!           first â€˜%iâ€™ directive will write some of its digits beyond the
            end of the destination buffer.  To make the call safe
            regardless of the values of the two variables, the size of the
            destination buffer must be increased to at least 34 bytes.
*************** cases it may also cause false positives.
*** 6493,6500 ****
            appropriate length modifier to the format specifier will
            reduce the required buffer size.  For example, if A and B in
            the example above can be assumed to be within the precision of
!           the 'short int' type then using either the '%hi' format
!           directive or casting the argument to 'short' reduces the
            maximum required size of the buffer to 24 bytes.
  
                 void f (int a, int b)
--- 6497,6504 ----
            appropriate length modifier to the format specifier will
            reduce the required buffer size.  For example, if A and B in
            the example above can be assumed to be within the precision of
!           the â€˜short intâ€™ type then using either the â€˜%hiâ€™ format
!           directive or casting the argument to â€˜shortâ€™ reduces the
            maximum required size of the buffer to 24 bytes.
  
                 void f (int a, int b)
*************** cases it may also cause false positives.
*** 6503,6589 ****
                   sprintf (buf, "a = %hi, b = %i\n", a, (short)b);
                 }
  
! '-Wno-format-zero-length'
!      If '-Wformat' is specified, do not warn about zero-length formats.
       The C standard specifies that zero-length formats are allowed.
  
! '-Wformat-nonliteral'
!      If '-Wformat' is specified, also warn if the format string is not a
       string literal and so cannot be checked, unless the format function
!      takes its format arguments as a 'va_list'.
  
! '-Wformat-security'
!      If '-Wformat' is specified, also warn about uses of format
       functions that represent possible security problems.  At present,
!      this warns about calls to 'printf' and 'scanf' functions where the
       format string is not a string literal and there are no format
!      arguments, as in 'printf (foo);'.  This may be a security hole if
!      the format string came from untrusted input and contains '%n'.
!      (This is currently a subset of what '-Wformat-nonliteral' warns
!      about, but in future warnings may be added to '-Wformat-security'
!      that are not included in '-Wformat-nonliteral'.)
  
! '-Wformat-signedness'
!      If '-Wformat' is specified, also warn if the format string requires
       an unsigned argument and the argument is signed and vice versa.
  
! '-Wformat-truncation'
! '-Wformat-truncation=LEVEL'
       Warn about calls to formatted input/output functions such as
!      'snprintf' and 'vsnprintf' that might result in output truncation.
       When the exact number of bytes written by a format directive cannot
       be determined at compile-time it is estimated based on heuristics
       that depend on the LEVEL argument and on optimization.  While
       enabling optimization will in most cases improve the accuracy of
       the warning, it may also result in false positives.  Except as
       noted otherwise, the option uses the same logic
!      '-Wformat-overflow'.
  
!      '-Wformat-truncation'
!      '-Wformat-truncation=1'
!           Level 1 of '-Wformat-truncation' enabled by '-Wformat' employs
            a conservative approach that warns only about calls to bounded
            functions whose return value is unused and that will most
            likely result in output truncation.
  
!      '-Wformat-truncation=2'
            Level 2 warns also about calls to bounded functions whose
            return value is used and that might result in truncation given
            an argument of sufficient length or magnitude.
  
! '-Wformat-y2k'
!      If '-Wformat' is specified, also warn about 'strftime' formats that
       may yield only a two-digit year.
  
! '-Wnonnull'
       Warn about passing a null pointer for arguments marked as requiring
!      a non-null value by the 'nonnull' function attribute.
  
!      '-Wnonnull' is included in '-Wall' and '-Wformat'.  It can be
!      disabled with the '-Wno-nonnull' option.
  
! '-Wnonnull-compare'
!      Warn when comparing an argument marked with the 'nonnull' function
       attribute against null inside the function.
  
!      '-Wnonnull-compare' is included in '-Wall'.  It can be disabled
!      with the '-Wno-nonnull-compare' option.
  
! '-Wnull-dereference'
       Warn if the compiler detects paths that trigger erroneous or
       undefined behavior due to dereferencing a null pointer.  This
!      option is only active when '-fdelete-null-pointer-checks' is
       active, which is enabled by optimizations in most targets.  The
       precision of the warnings depends on the optimization options used.
  
! '-Wno-musttail-local-addr'
       Do not warn about passing a pointer (or in C++, a reference) to a
!      local variable or label to argument of a 'musttail' call.  Those
       variables go out of scope before the tail call instruction.
  
! '-Wmaybe-musttail-local-addr'
!      Warn when address of a local variable can escape to a 'musttail'
!      call, unless it goes out of scope already before the 'musttail'
       call.
  
            int foo (int *);
--- 6507,6593 ----
                   sprintf (buf, "a = %hi, b = %i\n", a, (short)b);
                 }
  
! â€˜-Wno-format-zero-lengthâ€™
!      If â€˜-Wformatâ€™ is specified, do not warn about zero-length formats.
       The C standard specifies that zero-length formats are allowed.
  
! â€˜-Wformat-nonliteralâ€™
!      If â€˜-Wformatâ€™ is specified, also warn if the format string is not a
       string literal and so cannot be checked, unless the format function
!      takes its format arguments as a â€˜va_listâ€™.
  
! â€˜-Wformat-securityâ€™
!      If â€˜-Wformatâ€™ is specified, also warn about uses of format
       functions that represent possible security problems.  At present,
!      this warns about calls to â€˜printfâ€™ and â€˜scanfâ€™ functions where the
       format string is not a string literal and there are no format
!      arguments, as in â€˜printf (foo);â€™.  This may be a security hole if
!      the format string came from untrusted input and contains â€˜%nâ€™.
!      (This is currently a subset of what â€˜-Wformat-nonliteralâ€™ warns
!      about, but in future warnings may be added to â€˜-Wformat-securityâ€™
!      that are not included in â€˜-Wformat-nonliteralâ€™.)
  
! â€˜-Wformat-signednessâ€™
!      If â€˜-Wformatâ€™ is specified, also warn if the format string requires
       an unsigned argument and the argument is signed and vice versa.
  
! â€˜-Wformat-truncationâ€™
! â€˜-Wformat-truncation=LEVELâ€™
       Warn about calls to formatted input/output functions such as
!      â€˜snprintfâ€™ and â€˜vsnprintfâ€™ that might result in output truncation.
       When the exact number of bytes written by a format directive cannot
       be determined at compile-time it is estimated based on heuristics
       that depend on the LEVEL argument and on optimization.  While
       enabling optimization will in most cases improve the accuracy of
       the warning, it may also result in false positives.  Except as
       noted otherwise, the option uses the same logic
!      â€˜-Wformat-overflowâ€™.
  
!      â€˜-Wformat-truncationâ€™
!      â€˜-Wformat-truncation=1â€™
!           Level 1 of â€˜-Wformat-truncationâ€™ enabled by â€˜-Wformatâ€™ employs
            a conservative approach that warns only about calls to bounded
            functions whose return value is unused and that will most
            likely result in output truncation.
  
!      â€˜-Wformat-truncation=2â€™
            Level 2 warns also about calls to bounded functions whose
            return value is used and that might result in truncation given
            an argument of sufficient length or magnitude.
  
! â€˜-Wformat-y2kâ€™
!      If â€˜-Wformatâ€™ is specified, also warn about â€˜strftimeâ€™ formats that
       may yield only a two-digit year.
  
! â€˜-Wnonnullâ€™
       Warn about passing a null pointer for arguments marked as requiring
!      a non-null value by the â€˜nonnullâ€™ function attribute.
  
!      â€˜-Wnonnullâ€™ is included in â€˜-Wallâ€™ and â€˜-Wformatâ€™.  It can be
!      disabled with the â€˜-Wno-nonnullâ€™ option.
  
! â€˜-Wnonnull-compareâ€™
!      Warn when comparing an argument marked with the â€˜nonnullâ€™ function
       attribute against null inside the function.
  
!      â€˜-Wnonnull-compareâ€™ is included in â€˜-Wallâ€™.  It can be disabled
!      with the â€˜-Wno-nonnull-compareâ€™ option.
  
! â€˜-Wnull-dereferenceâ€™
       Warn if the compiler detects paths that trigger erroneous or
       undefined behavior due to dereferencing a null pointer.  This
!      option is only active when â€˜-fdelete-null-pointer-checksâ€™ is
       active, which is enabled by optimizations in most targets.  The
       precision of the warnings depends on the optimization options used.
  
! â€˜-Wno-musttail-local-addrâ€™
       Do not warn about passing a pointer (or in C++, a reference) to a
!      local variable or label to argument of a â€˜musttailâ€™ call.  Those
       variables go out of scope before the tail call instruction.
  
! â€˜-Wmaybe-musttail-local-addrâ€™
!      Warn when address of a local variable can escape to a â€˜musttailâ€™
!      call, unless it goes out of scope already before the â€˜musttailâ€™
       call.
  
            int foo (int *);
*************** cases it may also cause false positives.
*** 6617,6625 ****
                }
            }
  
!      This warning is enabled by '-Wextra'.
  
! '-Wnrvo (C++ and Objective-C++ only)'
       Warn if the compiler does not elide the copy from a local variable
       to the return value of a function in a context where it is allowed
       by [class.copy.elision].  This elision is commonly known as the
--- 6621,6629 ----
                }
            }
  
!      This warning is enabled by â€˜-Wextraâ€™.
  
! â€˜-Wnrvo (C++ and Objective-C++ only)â€™
       Warn if the compiler does not elide the copy from a local variable
       to the return value of a function in a context where it is allowed
       by [class.copy.elision].  This elision is commonly known as the
*************** cases it may also cause false positives.
*** 6635,6705 ****
              else return v2; // warning: not eliding copy
            }
  
! '-Winfinite-recursion'
       Warn about infinitely recursive calls.  The warning is effective at
       all optimization levels but requires optimization in order to
       detect infinite recursion in calls between two or more functions.
!      '-Winfinite-recursion' is included in '-Wall'.
  
!      Compare with '-Wanalyzer-infinite-recursion' which provides a
       similar diagnostic, but is implemented in a different way (as part
!      of '-fanalyzer').
  
! '-Winit-self (C, C++, Objective-C and Objective-C++ only)'
       Warn about uninitialized variables that are initialized with
       themselves.  Note this option can only be used with the
!      '-Wuninitialized' option.
  
!      For example, GCC warns about 'i' being uninitialized in the
!      following snippet only when '-Winit-self' has been specified:
            int f()
            {
              int i = i;
              return i;
            }
  
!      This warning is enabled by '-Wall' in C++.
  
! '-Wno-implicit-int (C and Objective-C only)'
       This option controls warnings when a declaration does not specify a
       type.  This warning is enabled by default, as an error, in C99 and
!      later dialects of C, and also by '-Wall'.  The error can be
!      downgraded to a warning using '-fpermissive' (along with certain
       other errors), or for this error alone, with
!      '-Wno-error=implicit-int'.
  
!      This warning is upgraded to an error by '-pedantic-errors'.
  
! '-Wno-implicit-function-declaration (C and Objective-C only)'
       This option controls warnings when a function is used before being
       declared.  This warning is enabled by default, as an error, in C99
!      and later dialects of C, and also by '-Wall'.  The error can be
!      downgraded to a warning using '-fpermissive' (along with certain
       other errors), or for this error alone, with
!      '-Wno-error=implicit-function-declaration'.
  
!      This warning is upgraded to an error by '-pedantic-errors'.
  
! '-Wimplicit (C and Objective-C only)'
!      Same as '-Wimplicit-int' and '-Wimplicit-function-declaration'.
!      This warning is enabled by '-Wall'.
  
! '-Whardened'
!      Warn when '-fhardened' did not enable an option from its set (for
!      which see '-fhardened').  For instance, using '-fhardened' and
!      '-fstack-protector' at the same time on the command line causes
!      '-Whardened' to warn because '-fstack-protector-strong' will not be
!      enabled by '-fhardened'.
  
       This warning is enabled by default and has effect only when
!      '-fhardened' is enabled.
  
! '-Wimplicit-fallthrough'
!      '-Wimplicit-fallthrough' is the same as '-Wimplicit-fallthrough=3'
!      and '-Wno-implicit-fallthrough' is the same as
!      '-Wimplicit-fallthrough=0'.
  
! '-Wimplicit-fallthrough=N'
       Warn when a switch case falls through.  For example:
  
            switch (cond)
--- 6639,6709 ----
              else return v2; // warning: not eliding copy
            }
  
! â€˜-Winfinite-recursionâ€™
       Warn about infinitely recursive calls.  The warning is effective at
       all optimization levels but requires optimization in order to
       detect infinite recursion in calls between two or more functions.
!      â€˜-Winfinite-recursionâ€™ is included in â€˜-Wallâ€™.
  
!      Compare with â€˜-Wanalyzer-infinite-recursionâ€™ which provides a
       similar diagnostic, but is implemented in a different way (as part
!      of â€˜-fanalyzerâ€™).
  
! â€˜-Winit-self (C, C++, Objective-C and Objective-C++ only)â€™
       Warn about uninitialized variables that are initialized with
       themselves.  Note this option can only be used with the
!      â€˜-Wuninitializedâ€™ option.
  
!      For example, GCC warns about â€˜iâ€™ being uninitialized in the
!      following snippet only when â€˜-Winit-selfâ€™ has been specified:
            int f()
            {
              int i = i;
              return i;
            }
  
!      This warning is enabled by â€˜-Wallâ€™ in C++.
  
! â€˜-Wno-implicit-int (C and Objective-C only)â€™
       This option controls warnings when a declaration does not specify a
       type.  This warning is enabled by default, as an error, in C99 and
!      later dialects of C, and also by â€˜-Wallâ€™.  The error can be
!      downgraded to a warning using â€˜-fpermissiveâ€™ (along with certain
       other errors), or for this error alone, with
!      â€˜-Wno-error=implicit-intâ€™.
  
!      This warning is upgraded to an error by â€˜-pedantic-errorsâ€™.
  
! â€˜-Wno-implicit-function-declaration (C and Objective-C only)â€™
       This option controls warnings when a function is used before being
       declared.  This warning is enabled by default, as an error, in C99
!      and later dialects of C, and also by â€˜-Wallâ€™.  The error can be
!      downgraded to a warning using â€˜-fpermissiveâ€™ (along with certain
       other errors), or for this error alone, with
!      â€˜-Wno-error=implicit-function-declarationâ€™.
  
!      This warning is upgraded to an error by â€˜-pedantic-errorsâ€™.
  
! â€˜-Wimplicit (C and Objective-C only)â€™
!      Same as â€˜-Wimplicit-intâ€™ and â€˜-Wimplicit-function-declarationâ€™.
!      This warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Whardenedâ€™
!      Warn when â€˜-fhardenedâ€™ did not enable an option from its set (for
!      which see â€˜-fhardenedâ€™).  For instance, using â€˜-fhardenedâ€™ and
!      â€˜-fstack-protectorâ€™ at the same time on the command line causes
!      â€˜-Whardenedâ€™ to warn because â€˜-fstack-protector-strongâ€™ will not be
!      enabled by â€˜-fhardenedâ€™.
  
       This warning is enabled by default and has effect only when
!      â€˜-fhardenedâ€™ is enabled.
  
! â€˜-Wimplicit-fallthroughâ€™
!      â€˜-Wimplicit-fallthroughâ€™ is the same as â€˜-Wimplicit-fallthrough=3â€™
!      and â€˜-Wno-implicit-fallthroughâ€™ is the same as
!      â€˜-Wimplicit-fallthrough=0â€™.
  
! â€˜-Wimplicit-fallthrough=Nâ€™
       Warn when a switch case falls through.  For example:
  
            switch (cond)
*************** cases it may also cause false positives.
*** 6717,6723 ****
       This warning does not warn when the last statement of a case cannot
       fall through, e.g.  when there is a return statement or a call to
       function declared with the noreturn attribute.
!      '-Wimplicit-fallthrough=' also takes into account control flow
       statements, such as ifs, and only warns when appropriate.  E.g.
  
            switch (cond)
--- 6721,6727 ----
       This warning does not warn when the last statement of a case cannot
       fall through, e.g.  when there is a return statement or a call to
       function declared with the noreturn attribute.
!      â€˜-Wimplicit-fallthrough=â€™ also takes into account control flow
       statements, such as ifs, and only warns when appropriate.  E.g.
  
            switch (cond)
*************** cases it may also cause false positives.
*** 6735,6742 ****
              }
  
       Since there are occasions where a switch case fall through is
!      desirable, GCC provides an attribute, '__attribute__
!      ((fallthrough))', that is to be used along with a null statement to
       suppress this warning that would normally occur:
  
            switch (cond)
--- 6739,6746 ----
              }
  
       Since there are occasions where a switch case fall through is
!      desirable, GCC provides an attribute, â€˜__attribute__
!      ((fallthrough))â€™, that is to be used along with a null statement to
       suppress this warning that would normally occur:
  
            switch (cond)
*************** cases it may also cause false positives.
*** 6748,6805 ****
                ...
              }
  
!      C++17 provides a standard way to suppress the
!      '-Wimplicit-fallthrough' warning using '[[fallthrough]];' instead
       of the GNU attribute.  In C++11 or C++14 users can use
!      '[[gnu::fallthrough]];', which is a GNU extension.  Instead of
       these attributes, it is also possible to add a fallthrough comment
       to silence the warning.  The whole body of the C or C++ style
       comment should match the given regular expressions listed below.
       The option argument N specifies what kind of comments are accepted:
  
!         * '-Wimplicit-fallthrough=0' disables the warning altogether.
  
!         * '-Wimplicit-fallthrough=1' matches '.*' regular expression,
            any comment is used as fallthrough comment.
  
!         * '-Wimplicit-fallthrough=2' case insensitively matches
!           '.*falls?[ \t-]*thr(ough|u).*' regular expression.
  
!         * '-Wimplicit-fallthrough=3' case sensitively matches one of the
            following regular expressions:
  
!              * '-fallthrough'
  
!              * '@fallthrough@'
  
!              * 'lint -fallthrough[ \t]*'
  
!              * '[ \t.!]*(ELSE,? |INTENTIONAL(LY)? )?
!                FALL(S | |-)?THR(OUGH|U)[ \t.!]*(-[^\n\r]*)?'
  
!              * '[ \t.!]*(Else,? |Intentional(ly)? )?
!                Fall((s | |-)[Tt]|t)hr(ough|u)[ \t.!]*(-[^\n\r]*)?'
  
!              * '[ \t.!]*([Ee]lse,? |[Ii]ntentional(ly)? )?
!                fall(s | |-)?thr(ough|u)[ \t.!]*(-[^\n\r]*)?'
  
!         * '-Wimplicit-fallthrough=4' case sensitively matches one of the
            following regular expressions:
  
!              * '-fallthrough'
  
!              * '@fallthrough@'
  
!              * 'lint -fallthrough[ \t]*'
  
!              * '[ \t]*FALLTHR(OUGH|U)[ \t]*'
  
!         * '-Wimplicit-fallthrough=5' doesn't recognize any comments as
            fallthrough comments, only attributes disable the warning.
  
       The comment needs to be followed after optional whitespace and
!      other comments by 'case' or 'default' keywords or by a user label
!      that precedes some 'case' or 'default' label.
  
            switch (cond)
              {
--- 6752,6809 ----
                ...
              }
  
!      C++17 and C23 provide a standard way to suppress the
!      â€˜-Wimplicit-fallthroughâ€™ warning using â€˜[[fallthrough]];â€™ instead
       of the GNU attribute.  In C++11 or C++14 users can use
!      â€˜[[gnu::fallthrough]];â€™, which is a GNU extension.  Instead of
       these attributes, it is also possible to add a fallthrough comment
       to silence the warning.  The whole body of the C or C++ style
       comment should match the given regular expressions listed below.
       The option argument N specifies what kind of comments are accepted:
  
!         â€¢ â€˜-Wimplicit-fallthrough=0â€™ disables the warning altogether.
  
!         â€¢ â€˜-Wimplicit-fallthrough=1â€™ matches â€˜.*â€™ regular expression,
            any comment is used as fallthrough comment.
  
!         â€¢ â€˜-Wimplicit-fallthrough=2â€™ case insensitively matches
!           â€˜.*falls?[ \t-]*thr(ough|u).*â€™ regular expression.
  
!         â€¢ â€˜-Wimplicit-fallthrough=3â€™ case sensitively matches one of the
            following regular expressions:
  
!              â€¢ â€˜-fallthroughâ€™
  
!              â€¢ â€˜@fallthrough@â€™
  
!              â€¢ â€˜lint -fallthrough[ \t]*â€™
  
!              â€¢ â€˜[ \t.!]*(ELSE,? |INTENTIONAL(LY)? )?
!                FALL(S | |-)?THR(OUGH|U)[ \t.!]*(-[^\n\r]*)?â€™
  
!              â€¢ â€˜[ \t.!]*(Else,? |Intentional(ly)? )?
!                Fall((s | |-)[Tt]|t)hr(ough|u)[ \t.!]*(-[^\n\r]*)?â€™
  
!              â€¢ â€˜[ \t.!]*([Ee]lse,? |[Ii]ntentional(ly)? )?
!                fall(s | |-)?thr(ough|u)[ \t.!]*(-[^\n\r]*)?â€™
  
!         â€¢ â€˜-Wimplicit-fallthrough=4â€™ case sensitively matches one of the
            following regular expressions:
  
!              â€¢ â€˜-fallthroughâ€™
  
!              â€¢ â€˜@fallthrough@â€™
  
!              â€¢ â€˜lint -fallthrough[ \t]*â€™
  
!              â€¢ â€˜[ \t]*FALLTHR(OUGH|U)[ \t]*â€™
  
!         â€¢ â€˜-Wimplicit-fallthrough=5â€™ doesn't recognize any comments as
            fallthrough comments, only attributes disable the warning.
  
       The comment needs to be followed after optional whitespace and
!      other comments by â€˜caseâ€™ or â€˜defaultâ€™ keywords or by a user label
!      that precedes some â€˜caseâ€™ or â€˜defaultâ€™ label.
  
            switch (cond)
              {
*************** cases it may also cause false positives.
*** 6810,6852 ****
                ...
              }
  
!      The '-Wimplicit-fallthrough=3' warning is enabled by '-Wextra'.
  
! '-Wno-if-not-aligned (C, C++, Objective-C and Objective-C++ only)'
!      Control if warnings triggered by the 'warn_if_not_aligned'
       attribute should be issued.  These warnings are enabled by default.
  
! '-Wignored-qualifiers (C and C++ only)'
       Warn if the return type of a function has a type qualifier such as
!      'const'.  For ISO C such a type qualifier has no effect, since the
       value returned by a function is not an lvalue.  For C++, the
!      warning is only emitted for scalar types or 'void'.  ISO C
!      prohibits qualified 'void' return types on function definitions, so
       such return types always receive a warning even without this
       option.
  
!      This warning is also enabled by '-Wextra'.
  
! '-Wno-ignored-attributes (C and C++ only)'
       This option controls warnings when an attribute is ignored.  This
!      is different from the '-Wattributes' option in that it warns
       whenever the compiler decides to drop an attribute, not that the
       attribute is either unknown, used in a wrong place, etc.  This
       warning is enabled by default.
  
! '-Wmain'
!      Warn if the type of 'main' is suspicious.  'main' should be a
       function with external linkage, returning int, taking either zero
       arguments, two, or three arguments of appropriate types.  This
       warning is enabled by default in C++ and is enabled by either
!      '-Wall' or '-Wpedantic'.
  
!      This warning is upgraded to an error by '-pedantic-errors'.
  
! '-Wmisleading-indentation (C and C++ only)'
       Warn when the indentation of the code does not reflect the block
!      structure.  Specifically, a warning is issued for 'if', 'else',
!      'while', and 'for' clauses with a guarded statement that does not
       use braces, followed by an unguarded statement with the same
       indentation.
  
--- 6814,6856 ----
                ...
              }
  
!      The â€˜-Wimplicit-fallthrough=3â€™ warning is enabled by â€˜-Wextraâ€™.
  
! â€˜-Wno-if-not-aligned (C, C++, Objective-C and Objective-C++ only)â€™
!      Control if warnings triggered by the â€˜warn_if_not_alignedâ€™
       attribute should be issued.  These warnings are enabled by default.
  
! â€˜-Wignored-qualifiers (C and C++ only)â€™
       Warn if the return type of a function has a type qualifier such as
!      â€˜constâ€™.  For ISO C such a type qualifier has no effect, since the
       value returned by a function is not an lvalue.  For C++, the
!      warning is only emitted for scalar types or â€˜voidâ€™.  ISO C
!      prohibits qualified â€˜voidâ€™ return types on function definitions, so
       such return types always receive a warning even without this
       option.
  
!      This warning is also enabled by â€˜-Wextraâ€™.
  
! â€˜-Wno-ignored-attributes (C and C++ only)â€™
       This option controls warnings when an attribute is ignored.  This
!      is different from the â€˜-Wattributesâ€™ option in that it warns
       whenever the compiler decides to drop an attribute, not that the
       attribute is either unknown, used in a wrong place, etc.  This
       warning is enabled by default.
  
! â€˜-Wmainâ€™
!      Warn if the type of â€˜mainâ€™ is suspicious.  â€˜mainâ€™ should be a
       function with external linkage, returning int, taking either zero
       arguments, two, or three arguments of appropriate types.  This
       warning is enabled by default in C++ and is enabled by either
!      â€˜-Wallâ€™ or â€˜-Wpedanticâ€™.
  
!      This warning is upgraded to an error by â€˜-pedantic-errorsâ€™.
  
! â€˜-Wmisleading-indentation (C and C++ only)â€™
       Warn when the indentation of the code does not reflect the block
!      structure.  Specifically, a warning is issued for â€˜ifâ€™, â€˜elseâ€™,
!      â€˜whileâ€™, and â€˜forâ€™ clauses with a guarded statement that does not
       use braces, followed by an unguarded statement with the same
       indentation.
  
*************** cases it may also cause false positives.
*** 6858,6864 ****
                bar ();  /* Gotcha: this is not guarded by the "if".  */
  
       In the case of mixed tabs and spaces, the warning uses the
!      '-ftabstop=' option to determine if the statements line up
       (defaulting to 8).
  
       The warning is not issued for code involving multiline preprocessor
--- 6862,6868 ----
                bar ();  /* Gotcha: this is not guarded by the "if".  */
  
       In the case of mixed tabs and spaces, the warning uses the
!      â€˜-ftabstop=â€™ option to determine if the statements line up
       (defaulting to 8).
  
       The warning is not issued for code involving multiline preprocessor
*************** cases it may also cause false positives.
*** 6871,6883 ****
            #endif
                foo (1);
  
!      The warning is not issued after a '#line' directive, since this
       typically indicates autogenerated code, and no assumptions can be
       made about the layout of the file that the directive references.
  
!      This warning is enabled by '-Wall' in C and C++.
  
! '-Wmissing-attributes'
       Warn when a declaration of a function is missing one or more
       attributes that a related function is declared with and whose
       absence may adversely affect the correctness or efficiency of
--- 6875,6887 ----
            #endif
                foo (1);
  
!      The warning is not issued after a â€˜#lineâ€™ directive, since this
       typically indicates autogenerated code, and no assumptions can be
       made about the layout of the file that the directive references.
  
!      This warning is enabled by â€˜-Wallâ€™ in C and C++.
  
! â€˜-Wmissing-attributesâ€™
       Warn when a declaration of a function is missing one or more
       attributes that a related function is declared with and whose
       absence may adversely affect the correctness or efficiency of
*************** cases it may also cause false positives.
*** 6885,6915 ****
       declarations of aliases that use attributes to specify less
       restrictive requirements than those of their targets.  This
       typically represents a potential optimization opportunity.  By
!      contrast, the '-Wattribute-alias=2' option controls warnings issued
       when the alias is more restrictive than the target, which could
       lead to incorrect code generation.  Attributes considered include
!      'alloc_align', 'alloc_size', 'cold', 'const', 'hot', 'leaf',
!      'malloc', 'nonnull', 'noreturn', 'nothrow', 'pure',
!      'returns_nonnull', and 'returns_twice'.
  
       In C++, the warning is issued when an explicit specialization of a
!      primary template declared with attribute 'alloc_align',
!      'alloc_size', 'assume_aligned', 'format', 'format_arg', 'malloc',
!      or 'nonnull' is declared without it.  Attributes 'deprecated',
!      'error', and 'warning' suppress the warning.  (*note Function
       Attributes::).
  
!      You can use the 'copy' attribute to apply the same set of
       attributes to a declaration as that on another declaration without
       explicitly enumerating the attributes.  This attribute can be
       applied to declarations of functions (*note Common Function
       Attributes::), variables (*note Common Variable Attributes::), or
       types (*note Common Type Attributes::).
  
!      '-Wmissing-attributes' is enabled by '-Wall'.
  
       For example, since the declaration of the primary function template
!      below makes use of both attribute 'malloc' and 'alloc_size' the
       declaration of the explicit specialization of the template is
       diagnosed because it is missing one of the attributes.
  
--- 6889,6919 ----
       declarations of aliases that use attributes to specify less
       restrictive requirements than those of their targets.  This
       typically represents a potential optimization opportunity.  By
!      contrast, the â€˜-Wattribute-alias=2â€™ option controls warnings issued
       when the alias is more restrictive than the target, which could
       lead to incorrect code generation.  Attributes considered include
!      â€˜alloc_alignâ€™, â€˜alloc_sizeâ€™, â€˜coldâ€™, â€˜constâ€™, â€˜hotâ€™, â€˜leafâ€™,
!      â€˜mallocâ€™, â€˜nonnullâ€™, â€˜noreturnâ€™, â€˜nothrowâ€™, â€˜pureâ€™,
!      â€˜returns_nonnullâ€™, and â€˜returns_twiceâ€™.
  
       In C++, the warning is issued when an explicit specialization of a
!      primary template declared with attribute â€˜alloc_alignâ€™,
!      â€˜alloc_sizeâ€™, â€˜assume_alignedâ€™, â€˜formatâ€™, â€˜format_argâ€™, â€˜mallocâ€™,
!      or â€˜nonnullâ€™ is declared without it.  Attributes â€˜deprecatedâ€™,
!      â€˜errorâ€™, and â€˜warningâ€™ suppress the warning.  (*note Function
       Attributes::).
  
!      You can use the â€˜copyâ€™ attribute to apply the same set of
       attributes to a declaration as that on another declaration without
       explicitly enumerating the attributes.  This attribute can be
       applied to declarations of functions (*note Common Function
       Attributes::), variables (*note Common Variable Attributes::), or
       types (*note Common Type Attributes::).
  
!      â€˜-Wmissing-attributesâ€™ is enabled by â€˜-Wallâ€™.
  
       For example, since the declaration of the primary function template
!      below makes use of both attribute â€˜mallocâ€™ and â€˜alloc_sizeâ€™ the
       declaration of the explicit specialization of the template is
       diagnosed because it is missing one of the attributes.
  
*************** cases it may also cause false positives.
*** 6921,6947 ****
            void* __attribute__ ((malloc))   // missing alloc_size
            allocate<void> (size_t);
  
! '-Wmissing-braces'
       Warn if an aggregate or union initializer is not fully bracketed.
!      In the following example, the initializer for 'a' is not fully
!      bracketed, but that for 'b' is fully bracketed.
  
            int a[2][2] = { 0, 1, 2, 3 };
            int b[2][2] = { { 0, 1 }, { 2, 3 } };
  
!      This warning is enabled by '-Wall'.
  
! '-Wmissing-include-dirs (C, C++, Objective-C, Objective-C++ and Fortran only)'
       Warn if a user-supplied include directory does not exist.  This
       option is disabled by default for C, C++, Objective-C and
       Objective-C++.  For Fortran, it is partially enabled by default by
       warning for -I and -J, only.
  
! '-Wno-missing-profile'
       This option controls warnings if feedback profiles are missing when
!      using the '-fprofile-use' option.  This option diagnoses those
       cases where a new function or a new file is added between compiling
!      with '-fprofile-generate' and with '-fprofile-use', without
       regenerating the profiles.  In these cases, the profile feedback
       data files do not contain any profile feedback information for the
       newly added function or file respectively.  Also, in the case when
--- 6925,6951 ----
            void* __attribute__ ((malloc))   // missing alloc_size
            allocate<void> (size_t);
  
! â€˜-Wmissing-bracesâ€™
       Warn if an aggregate or union initializer is not fully bracketed.
!      In the following example, the initializer for â€˜aâ€™ is not fully
!      bracketed, but that for â€˜bâ€™ is fully bracketed.
  
            int a[2][2] = { 0, 1, 2, 3 };
            int b[2][2] = { { 0, 1 }, { 2, 3 } };
  
!      This warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Wmissing-include-dirs (C, C++, Objective-C, Objective-C++ and Fortran only)â€™
       Warn if a user-supplied include directory does not exist.  This
       option is disabled by default for C, C++, Objective-C and
       Objective-C++.  For Fortran, it is partially enabled by default by
       warning for -I and -J, only.
  
! â€˜-Wno-missing-profileâ€™
       This option controls warnings if feedback profiles are missing when
!      using the â€˜-fprofile-useâ€™ option.  This option diagnoses those
       cases where a new function or a new file is added between compiling
!      with â€˜-fprofile-generateâ€™ and with â€˜-fprofile-useâ€™, without
       regenerating the profiles.  In these cases, the profile feedback
       data files do not contain any profile feedback information for the
       newly added function or file respectively.  Also, in the case when
*************** cases it may also cause false positives.
*** 6949,6970 ****
       profile feedback information.  In all these cases, warnings are
       issued to inform you that a profile generation step is due.
       Ignoring the warning can result in poorly optimized code.
!      '-Wno-missing-profile' can be used to disable the warning, but this
       is not recommended and should be done only when non-existent
       profile data is justified.
  
! '-Wmismatched-dealloc'
  
       Warn for calls to deallocation functions with pointer arguments
       returned from allocation functions for which the former isn't a
       suitable deallocator.  A pair of functions can be associated as
!      matching allocators and deallocators by use of attribute 'malloc'.
!      Unless disabled by the '-fno-builtin' option the standard functions
!      'calloc', 'malloc', 'realloc', and 'free', as well as the
!      corresponding forms of C++ 'operator new' and 'operator delete' are
       implicitly associated as matching allocators and deallocators.  In
!      the following example 'mydealloc' is the deallocator for pointers
!      returned from 'myalloc'.
  
            void mydealloc (void*);
  
--- 6953,6974 ----
       profile feedback information.  In all these cases, warnings are
       issued to inform you that a profile generation step is due.
       Ignoring the warning can result in poorly optimized code.
!      â€˜-Wno-missing-profileâ€™ can be used to disable the warning, but this
       is not recommended and should be done only when non-existent
       profile data is justified.
  
! â€˜-Wmismatched-deallocâ€™
  
       Warn for calls to deallocation functions with pointer arguments
       returned from allocation functions for which the former isn't a
       suitable deallocator.  A pair of functions can be associated as
!      matching allocators and deallocators by use of attribute â€˜mallocâ€™.
!      Unless disabled by the â€˜-fno-builtinâ€™ option the standard functions
!      â€˜callocâ€™, â€˜mallocâ€™, â€˜reallocâ€™, and â€˜freeâ€™, as well as the
!      corresponding forms of C++ â€˜operator newâ€™ and â€˜operator deleteâ€™ are
       implicitly associated as matching allocators and deallocators.  In
!      the following example â€˜mydeallocâ€™ is the deallocator for pointers
!      returned from â€˜myallocâ€™.
  
            void mydealloc (void*);
  
*************** cases it may also cause false positives.
*** 6979,6993 ****
              mydealloc (p);   // ok
            }
  
!      In C++, the related option '-Wmismatched-new-delete' diagnoses
!      mismatches involving either 'operator new' or 'operator delete'.
  
!      Option '-Wmismatched-dealloc' is included in '-Wall'.
  
! '-Wmultistatement-macros'
       Warn about unsafe multiple statement macros that appear to be
!      guarded by a clause such as 'if', 'else', 'for', 'switch', or
!      'while', in which only the first statement is actually guarded
       after the macro is expanded.
  
       For example:
--- 6983,6997 ----
              mydealloc (p);   // ok
            }
  
!      In C++, the related option â€˜-Wmismatched-new-deleteâ€™ diagnoses
!      mismatches involving either â€˜operator newâ€™ or â€˜operator deleteâ€™.
  
!      Option â€˜-Wmismatched-deallocâ€™ is included in â€˜-Wallâ€™.
  
! â€˜-Wmultistatement-macrosâ€™
       Warn about unsafe multiple statement macros that appear to be
!      guarded by a clause such as â€˜ifâ€™, â€˜elseâ€™, â€˜forâ€™, â€˜switchâ€™, or
!      â€˜whileâ€™, in which only the first statement is actually guarded
       after the macro is expanded.
  
       For example:
*************** cases it may also cause false positives.
*** 6996,7021 ****
            if (c)
              DOIT;
  
!      will increment 'y' unconditionally, not just when 'c' holds.  The
       can usually be fixed by wrapping the macro in a do-while loop:
            #define DOIT do { x++; y++; } while (0)
            if (c)
              DOIT;
  
!      This warning is enabled by '-Wall' in C and C++.
  
! '-Wparentheses'
       Warn if parentheses are omitted in certain contexts, such as when
       there is an assignment in a context where a truth value is
       expected, or when operators are nested whose precedence people
       often get confused about.
  
!      Also warn if a comparison like 'x<=y<=z' appears; this is
!      equivalent to '(x<=y ? 1 : 0) <= z', which is a different
       interpretation from that of ordinary mathematical notation.
  
!      Also warn for dangerous uses of the GNU extension to '?:' with
!      omitted middle operand.  When the condition in the '?': operator is
       a boolean expression, the omitted value is always 1.  Often
       programmers expect it to be a value computed inside the conditional
       expression instead.
--- 7000,7025 ----
            if (c)
              DOIT;
  
!      will increment â€˜yâ€™ unconditionally, not just when â€˜câ€™ holds.  The
       can usually be fixed by wrapping the macro in a do-while loop:
            #define DOIT do { x++; y++; } while (0)
            if (c)
              DOIT;
  
!      This warning is enabled by â€˜-Wallâ€™ in C and C++.
  
! â€˜-Wparenthesesâ€™
       Warn if parentheses are omitted in certain contexts, such as when
       there is an assignment in a context where a truth value is
       expected, or when operators are nested whose precedence people
       often get confused about.
  
!      Also warn if a comparison like â€˜x<=y<=zâ€™ appears; this is
!      equivalent to â€˜(x<=y ? 1 : 0) <= zâ€™, which is a different
       interpretation from that of ordinary mathematical notation.
  
!      Also warn for dangerous uses of the GNU extension to â€˜?:â€™ with
!      omitted middle operand.  When the condition in the â€˜?â€™: operator is
       a boolean expression, the omitted value is always 1.  Often
       programmers expect it to be a value computed inside the conditional
       expression instead.
*************** cases it may also cause false positives.
*** 7029,7039 ****
              // User meant std::unique_lock<std::mutex> lock (mymutex);
            }
  
!      This warning is enabled by '-Wall'.
  
! '-Wno-self-move (C++ and Objective-C++ only)'
       This warning warns when a value is moved to itself with
!      'std::move'.  Such a 'std::move' typically has no effect.
  
            struct T {
            ...
--- 7033,7043 ----
              // User meant std::unique_lock<std::mutex> lock (mymutex);
            }
  
!      This warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Wno-self-move (C++ and Objective-C++ only)â€™
       This warning warns when a value is moved to itself with
!      â€˜std::moveâ€™.  Such a â€˜std::moveâ€™ typically has no effect.
  
            struct T {
            ...
*************** cases it may also cause false positives.
*** 7045,7063 ****
              t = std::move (t);
            }
  
!      This warning is enabled by '-Wall'.
  
! '-Wsequence-point'
       Warn about code that may have undefined semantics because of
       violations of sequence point rules in the C and C++ standards.
  
       The C and C++ standards define the order in which expressions in a
!      C/C++ program are evaluated in terms of "sequence points", which
       represent a partial ordering between the execution of parts of the
       program: those executed before the sequence point, and those
       executed after it.  These occur after the evaluation of a full
       expression (one which is not part of a larger expression), after
!      the evaluation of the first operand of a '&&', '||', '? :' or ','
       (comma) operator, before a function is called (but after the
       evaluation of its arguments and the expression denoting the called
       function), and in certain other places.  Other than as expressed by
--- 7049,7067 ----
              t = std::move (t);
            }
  
!      This warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Wsequence-pointâ€™
       Warn about code that may have undefined semantics because of
       violations of sequence point rules in the C and C++ standards.
  
       The C and C++ standards define the order in which expressions in a
!      C/C++ program are evaluated in terms of â€œsequence pointsâ€�, which
       represent a partial ordering between the execution of parts of the
       program: those executed before the sequence point, and those
       executed after it.  These occur after the evaluation of a full
       expression (one which is not part of a larger expression), after
!      the evaluation of the first operand of a â€˜&&â€™, â€˜||â€™, â€˜? :â€™ or â€˜,â€™
       (comma) operator, before a function is called (but after the
       evaluation of its arguments and the expression denoting the called
       function), and in certain other places.  Other than as expressed by
*************** cases it may also cause false positives.
*** 7079,7086 ****
       rules, the results on any particular implementation are entirely
       unpredictable.
  
!      Examples of code with undefined behavior are 'a = a++;', 'a[n] =
!      b[n++]' and 'a[i++] = i;'.  Some more complicated cases are not
       diagnosed by this option, and it may give an occasional false
       positive result, but in general it has been found fairly effective
       at detecting this sort of problem in programs.
--- 7083,7090 ----
       rules, the results on any particular implementation are entirely
       unpredictable.
  
!      Examples of code with undefined behavior are â€˜a = a++;â€™, â€˜a[n] =
!      b[n++]â€™ and â€˜a[i++] = i;â€™.  Some more complicated cases are not
       diagnosed by this option, and it may give an occasional false
       positive result, but in general it has been found fairly effective
       at detecting this sort of problem in programs.
*************** cases it may also cause false positives.
*** 7098,7162 ****
       formal definitions, may be found on the GCC readings page, at
       <https://gcc.gnu.org/readings.html>.
  
!      This warning is enabled by '-Wall' for C and C++.
  
! '-Wno-return-local-addr'
       Do not warn about returning a pointer (or in C++, a reference) to a
       variable that goes out of scope after the function returns.
  
! '-Wreturn-mismatch'
       Warn about return statements without an expressions in functions
!      which do not return 'void'.  Also warn about a 'return' statement
!      with an expression in a function whose return type is 'void',
!      unless the expression type is also 'void'.  As a GNU extension, the
!      latter case is accepted without a warning unless '-Wpedantic' is
       used.
  
!      Attempting to use the return value of a non-'void' function other
!      than 'main' that flows off the end by reaching the closing curly
       brace that terminates the function is undefined.
  
       This warning is specific to C and enabled by default.  In C99 and
       later language dialects, it is treated as an error.  It can be
!      downgraded to a warning using '-fpermissive' (along with other
       warnings), or for just this warning, with
!      '-Wno-error=return-mismatch'.
  
! '-Wreturn-type'
       Warn whenever a function is defined with a return type that
!      defaults to 'int' (unless '-Wimplicit-int' is active, which takes
       precedence).  Also warn if execution may reach the end of the
       function body, or if the function does not contain any return
       statement at all.
  
!      Attempting to use the return value of a non-'void' function other
!      than 'main' that flows off the end by reaching the closing curly
       brace that terminates the function is undefined.
  
!      Unlike in C, in C++, flowing off the end of a non-'void' function
!      other than 'main' results in undefined behavior even when the value
       of the function is not used.
  
!      This warning is enabled by default in C++ and by '-Wall' otherwise.
  
! '-Wno-shift-count-negative'
       Controls warnings if a shift count is negative.  This warning is
       enabled by default.
  
! '-Wno-shift-count-overflow'
       Controls warnings if a shift count is greater than or equal to the
       bit width of the type.  This warning is enabled by default.
  
! '-Wshift-negative-value'
       Warn if left shifting a negative value.  This warning is enabled by
!      '-Wextra' in C99 (and newer) and C++11 to C++17 modes.
  
! '-Wno-shift-overflow'
! '-Wshift-overflow=N'
       These options control warnings about left shift overflows.
  
!      '-Wshift-overflow=1'
!           This is the warning level of '-Wshift-overflow' and is enabled
            by default in C99 and C++11 modes (and newer).  This warning
            level does not warn about left-shifting 1 into the sign bit.
            (However, in C, such an overflow is still rejected in contexts
--- 7102,7166 ----
       formal definitions, may be found on the GCC readings page, at
       <https://gcc.gnu.org/readings.html>.
  
!      This warning is enabled by â€˜-Wallâ€™ for C and C++.
  
! â€˜-Wno-return-local-addrâ€™
       Do not warn about returning a pointer (or in C++, a reference) to a
       variable that goes out of scope after the function returns.
  
! â€˜-Wreturn-mismatchâ€™
       Warn about return statements without an expressions in functions
!      which do not return â€˜voidâ€™.  Also warn about a â€˜returnâ€™ statement
!      with an expression in a function whose return type is â€˜voidâ€™,
!      unless the expression type is also â€˜voidâ€™.  As a GNU extension, the
!      latter case is accepted without a warning unless â€˜-Wpedanticâ€™ is
       used.
  
!      Attempting to use the return value of a non-â€˜voidâ€™ function other
!      than â€˜mainâ€™ that flows off the end by reaching the closing curly
       brace that terminates the function is undefined.
  
       This warning is specific to C and enabled by default.  In C99 and
       later language dialects, it is treated as an error.  It can be
!      downgraded to a warning using â€˜-fpermissiveâ€™ (along with other
       warnings), or for just this warning, with
!      â€˜-Wno-error=return-mismatchâ€™.
  
! â€˜-Wreturn-typeâ€™
       Warn whenever a function is defined with a return type that
!      defaults to â€˜intâ€™ (unless â€˜-Wimplicit-intâ€™ is active, which takes
       precedence).  Also warn if execution may reach the end of the
       function body, or if the function does not contain any return
       statement at all.
  
!      Attempting to use the return value of a non-â€˜voidâ€™ function other
!      than â€˜mainâ€™ that flows off the end by reaching the closing curly
       brace that terminates the function is undefined.
  
!      Unlike in C, in C++, flowing off the end of a non-â€˜voidâ€™ function
!      other than â€˜mainâ€™ results in undefined behavior even when the value
       of the function is not used.
  
!      This warning is enabled by default in C++ and by â€˜-Wallâ€™ otherwise.
  
! â€˜-Wno-shift-count-negativeâ€™
       Controls warnings if a shift count is negative.  This warning is
       enabled by default.
  
! â€˜-Wno-shift-count-overflowâ€™
       Controls warnings if a shift count is greater than or equal to the
       bit width of the type.  This warning is enabled by default.
  
! â€˜-Wshift-negative-valueâ€™
       Warn if left shifting a negative value.  This warning is enabled by
!      â€˜-Wextraâ€™ in C99 (and newer) and C++11 to C++17 modes.
  
! â€˜-Wno-shift-overflowâ€™
! â€˜-Wshift-overflow=Nâ€™
       These options control warnings about left shift overflows.
  
!      â€˜-Wshift-overflow=1â€™
!           This is the warning level of â€˜-Wshift-overflowâ€™ and is enabled
            by default in C99 and C++11 modes (and newer).  This warning
            level does not warn about left-shifting 1 into the sign bit.
            (However, in C, such an overflow is still rejected in contexts
*************** cases it may also cause false positives.
*** 7164,7213 ****
            is emitted in C++20 mode (and newer), as signed left shifts
            always wrap.
  
!      '-Wshift-overflow=2'
            This warning level also warns about left-shifting 1 into the
            sign bit, unless C++14 mode (or newer) is active.
  
! '-Wswitch'
!      Warn whenever a 'switch' statement has an index of enumerated type
!      and lacks a 'case' for one or more of the named codes of that
!      enumeration.  (The presence of a 'default' label prevents this
!      warning.)  'case' labels that do not correspond to enumerators also
       provoke warnings when this option is used, unless the enumeration
!      is marked with the 'flag_enum' attribute.  This warning is enabled
!      by '-Wall'.
  
! '-Wswitch-default'
!      Warn whenever a 'switch' statement does not have a 'default' case.
  
! '-Wswitch-enum'
!      Warn whenever a 'switch' statement has an index of enumerated type
!      and lacks a 'case' for one or more of the named codes of that
!      enumeration.  'case' labels that do not correspond to enumerators
       also provoke warnings when this option is used, unless the
!      enumeration is marked with the 'flag_enum' attribute.  The only
!      difference between '-Wswitch' and this option is that this option
       gives a warning about an omitted enumeration code even if there is
!      a 'default' label.
  
! '-Wno-switch-bool'
!      Do not warn when a 'switch' statement has an index of boolean type
       and the case values are outside the range of a boolean type.  It is
       possible to suppress this warning by casting the controlling
!      expression to a type other than 'bool'.  For example:
            switch ((int) (a == 4))
              {
              ...
              }
       This warning is enabled by default for C and C++ programs.
  
! '-Wno-switch-outside-range'
!      This option controls warnings when a 'switch' case has a value that
       is outside of its respective type range.  This warning is enabled
       by default for C and C++ programs.
  
! '-Wno-switch-unreachable'
!      Do not warn when a 'switch' statement contains statements between
       the controlling expression and the first case label, which will
       never be executed.  For example:
            switch (cond)
--- 7168,7217 ----
            is emitted in C++20 mode (and newer), as signed left shifts
            always wrap.
  
!      â€˜-Wshift-overflow=2â€™
            This warning level also warns about left-shifting 1 into the
            sign bit, unless C++14 mode (or newer) is active.
  
! â€˜-Wswitchâ€™
!      Warn whenever a â€˜switchâ€™ statement has an index of enumerated type
!      and lacks a â€˜caseâ€™ for one or more of the named codes of that
!      enumeration.  (The presence of a â€˜defaultâ€™ label prevents this
!      warning.)  â€˜caseâ€™ labels that do not correspond to enumerators also
       provoke warnings when this option is used, unless the enumeration
!      is marked with the â€˜flag_enumâ€™ attribute.  This warning is enabled
!      by â€˜-Wallâ€™.
  
! â€˜-Wswitch-defaultâ€™
!      Warn whenever a â€˜switchâ€™ statement does not have a â€˜defaultâ€™ case.
  
! â€˜-Wswitch-enumâ€™
!      Warn whenever a â€˜switchâ€™ statement has an index of enumerated type
!      and lacks a â€˜caseâ€™ for one or more of the named codes of that
!      enumeration.  â€˜caseâ€™ labels that do not correspond to enumerators
       also provoke warnings when this option is used, unless the
!      enumeration is marked with the â€˜flag_enumâ€™ attribute.  The only
!      difference between â€˜-Wswitchâ€™ and this option is that this option
       gives a warning about an omitted enumeration code even if there is
!      a â€˜defaultâ€™ label.
  
! â€˜-Wno-switch-boolâ€™
!      Do not warn when a â€˜switchâ€™ statement has an index of boolean type
       and the case values are outside the range of a boolean type.  It is
       possible to suppress this warning by casting the controlling
!      expression to a type other than â€˜boolâ€™.  For example:
            switch ((int) (a == 4))
              {
              ...
              }
       This warning is enabled by default for C and C++ programs.
  
! â€˜-Wno-switch-outside-rangeâ€™
!      This option controls warnings when a â€˜switchâ€™ case has a value that
       is outside of its respective type range.  This warning is enabled
       by default for C and C++ programs.
  
! â€˜-Wno-switch-unreachableâ€™
!      Do not warn when a â€˜switchâ€™ statement contains statements between
       the controlling expression and the first case label, which will
       never be executed.  For example:
            switch (cond)
*************** cases it may also cause false positives.
*** 7217,7223 ****
               case 5:
              ...
              }
!      '-Wswitch-unreachable' does not warn if the statement between the
       controlling expression and the first case label is just a
       declaration:
            switch (cond)
--- 7221,7227 ----
               case 5:
              ...
              }
!      â€˜-Wswitch-unreachableâ€™ does not warn if the statement between the
       controlling expression and the first case label is just a
       declaration:
            switch (cond)
*************** cases it may also cause false positives.
*** 7230,7371 ****
              }
       This warning is enabled by default for C and C++ programs.
  
! '-Wsync-nand (C and C++ only)'
!      Warn when '__sync_fetch_and_nand' and '__sync_nand_and_fetch'
       built-in functions are used.  These functions changed semantics in
       GCC 4.4.
  
! '-Wtrivial-auto-var-init'
!      Warn when '-ftrivial-auto-var-init' cannot initialize the automatic
       variable.  A common situation is an automatic variable that is
       declared between the controlling expression and the first case
!      label of a 'switch' statement.
  
! '-Wunused-but-set-parameter'
       Warn whenever a function parameter is assigned to, but otherwise
       unused (aside from its declaration).
  
!      To suppress this warning use the 'unused' attribute (*note Variable
       Attributes::).
  
!      This warning is also enabled by '-Wunused' together with '-Wextra'.
  
! '-Wunused-but-set-variable'
       Warn whenever a local variable is assigned to, but otherwise unused
!      (aside from its declaration).  This warning is enabled by '-Wall'.
  
!      To suppress this warning use the 'unused' attribute (*note Variable
       Attributes::).
  
!      This warning is also enabled by '-Wunused', which is enabled by
!      '-Wall'.
  
! '-Wunused-function'
       Warn whenever a static function is declared but not defined or a
       non-inline static function is unused.  This warning is enabled by
!      '-Wall'.
  
! '-Wunused-label'
       Warn whenever a label is declared but not used.  This warning is
!      enabled by '-Wall'.
  
!      To suppress this warning use the 'unused' attribute (*note Variable
       Attributes::).
  
! '-Wunused-local-typedefs (C, Objective-C, C++ and Objective-C++ only)'
       Warn when a typedef locally defined in a function is not used.
!      This warning is enabled by '-Wall'.
  
! '-Wunused-parameter'
       Warn whenever a function parameter is unused aside from its
!      declaration.  This option is not enabled by '-Wunused' unless
!      '-Wextra' is also specified.
  
!      To suppress this warning use the 'unused' attribute (*note Variable
       Attributes::).
  
! '-Wno-unused-result'
       Do not warn if a caller of a function marked with attribute
!      'warn_unused_result' (*note Function Attributes::) does not use its
!      return value.  The default is '-Wunused-result'.
  
! '-Wunused-variable'
       Warn whenever a local or static variable is unused aside from its
!      declaration.  This option implies '-Wunused-const-variable=1' for
!      C, but not for C++.  This warning is enabled by '-Wall'.
  
!      To suppress this warning use the 'unused' attribute (*note Variable
       Attributes::).
  
! '-Wunused-const-variable'
! '-Wunused-const-variable=N'
       Warn whenever a constant static variable is unused aside from its
       declaration.
  
!      To suppress this warning use the 'unused' attribute (*note Variable
       Attributes::).
  
!      '-Wunused-const-variable=1'
            Warn about unused static const variables defined in the main
            compilation unit, but not about static const variables
            declared in any header included.
  
!           '-Wunused-const-variable=1' is enabled by either
!           '-Wunused-variable' or '-Wunused' for C, but not for C++.  In
            C this declares variable storage, but in C++ this is not an
!           error since const variables take the place of '#define's.
  
!      '-Wunused-const-variable=2'
            This warning level also warns for unused constant static
            variables in headers (excluding system headers).  It is
!           equivalent to the short form '-Wunused-const-variable'.  This
            level must be explicitly requested in both C and C++ because
            it might be hard to clean up all headers included.
  
! '-Wunused-value'
       Warn whenever a statement computes a result that is explicitly not
       used.  To suppress this warning cast the unused expression to
!      'void'.  This includes an expression-statement or the left-hand
       side of a comma expression that contains no side effects.  For
!      example, an expression such as 'x[i,j]' causes a warning, while
!      'x[(void)i,j]' does not.
  
!      This warning is enabled by '-Wall'.
  
! '-Wunused'
!      All the above '-Wunused' options combined, except those documented
       as needing to be specified explicitly.
  
       In order to get a warning about an unused function parameter, you
!      must either specify '-Wextra -Wunused' (note that '-Wall' implies
!      '-Wunused'), or separately specify '-Wunused-parameter' and/or
!      '-Wunused-but-set-parameter'.
  
!      '-Wunused' enables only '-Wunused-const-variable=1' rather than
!      '-Wunused-const-variable', and only for C, not C++.
  
! '-Wuse-after-free (C, Objective-C, C++ and Objective-C++ only)'
! '-Wuse-after-free=N'
       Warn about uses of pointers to dynamically allocated objects that
       have been rendered indeterminate by a call to a deallocation
       function.  The warning is enabled at all optimization levels but
       may yield different results with optimization than without.
  
!      '-Wuse-after-free=1'
            At level 1 the warning attempts to diagnose only unconditional
            uses of pointers made indeterminate by a deallocation call or
!           a successful call to 'realloc', regardless of whether or not
            the call resulted in an actual reallocation of memory.  This
!           includes double-'free' calls as well as uses in arithmetic and
            relational expressions.  Although undefined, uses of
            indeterminate pointers in equality (or inequality) expressions
            are not diagnosed at this level.
!      '-Wuse-after-free=2'
            At level 2, in addition to unconditional uses, the warning
            also diagnoses conditional uses of pointers made indeterminate
            by a deallocation call.  As at level 2, uses in equality (or
            inequality) expressions are not diagnosed.  For example, the
!           second call to 'free' in the following function is diagnosed
            at this level:
                 struct A { int refcount; void *data; };
  
--- 7234,7375 ----
              }
       This warning is enabled by default for C and C++ programs.
  
! â€˜-Wsync-nand (C and C++ only)â€™
!      Warn when â€˜__sync_fetch_and_nandâ€™ and â€˜__sync_nand_and_fetchâ€™
       built-in functions are used.  These functions changed semantics in
       GCC 4.4.
  
! â€˜-Wtrivial-auto-var-initâ€™
!      Warn when â€˜-ftrivial-auto-var-initâ€™ cannot initialize the automatic
       variable.  A common situation is an automatic variable that is
       declared between the controlling expression and the first case
!      label of a â€˜switchâ€™ statement.
  
! â€˜-Wunused-but-set-parameterâ€™
       Warn whenever a function parameter is assigned to, but otherwise
       unused (aside from its declaration).
  
!      To suppress this warning use the â€˜unusedâ€™ attribute (*note Variable
       Attributes::).
  
!      This warning is also enabled by â€˜-Wunusedâ€™ together with â€˜-Wextraâ€™.
  
! â€˜-Wunused-but-set-variableâ€™
       Warn whenever a local variable is assigned to, but otherwise unused
!      (aside from its declaration).  This warning is enabled by â€˜-Wallâ€™.
  
!      To suppress this warning use the â€˜unusedâ€™ attribute (*note Variable
       Attributes::).
  
!      This warning is also enabled by â€˜-Wunusedâ€™, which is enabled by
!      â€˜-Wallâ€™.
  
! â€˜-Wunused-functionâ€™
       Warn whenever a static function is declared but not defined or a
       non-inline static function is unused.  This warning is enabled by
!      â€˜-Wallâ€™.
  
! â€˜-Wunused-labelâ€™
       Warn whenever a label is declared but not used.  This warning is
!      enabled by â€˜-Wallâ€™.
  
!      To suppress this warning use the â€˜unusedâ€™ attribute (*note Variable
       Attributes::).
  
! â€˜-Wunused-local-typedefs (C, Objective-C, C++ and Objective-C++ only)â€™
       Warn when a typedef locally defined in a function is not used.
!      This warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Wunused-parameterâ€™
       Warn whenever a function parameter is unused aside from its
!      declaration.  This option is not enabled by â€˜-Wunusedâ€™ unless
!      â€˜-Wextraâ€™ is also specified.
  
!      To suppress this warning use the â€˜unusedâ€™ attribute (*note Variable
       Attributes::).
  
! â€˜-Wno-unused-resultâ€™
       Do not warn if a caller of a function marked with attribute
!      â€˜warn_unused_resultâ€™ (*note Function Attributes::) does not use its
!      return value.  The default is â€˜-Wunused-resultâ€™.
  
! â€˜-Wunused-variableâ€™
       Warn whenever a local or static variable is unused aside from its
!      declaration.  This option implies â€˜-Wunused-const-variable=1â€™ for
!      C, but not for C++.  This warning is enabled by â€˜-Wallâ€™.
  
!      To suppress this warning use the â€˜unusedâ€™ attribute (*note Variable
       Attributes::).
  
! â€˜-Wunused-const-variableâ€™
! â€˜-Wunused-const-variable=Nâ€™
       Warn whenever a constant static variable is unused aside from its
       declaration.
  
!      To suppress this warning use the â€˜unusedâ€™ attribute (*note Variable
       Attributes::).
  
!      â€˜-Wunused-const-variable=1â€™
            Warn about unused static const variables defined in the main
            compilation unit, but not about static const variables
            declared in any header included.
  
!           â€˜-Wunused-const-variable=1â€™ is enabled by either
!           â€˜-Wunused-variableâ€™ or â€˜-Wunusedâ€™ for C, but not for C++.  In
            C this declares variable storage, but in C++ this is not an
!           error since const variables take the place of â€˜#defineâ€™s.
  
!      â€˜-Wunused-const-variable=2â€™
            This warning level also warns for unused constant static
            variables in headers (excluding system headers).  It is
!           equivalent to the short form â€˜-Wunused-const-variableâ€™.  This
            level must be explicitly requested in both C and C++ because
            it might be hard to clean up all headers included.
  
! â€˜-Wunused-valueâ€™
       Warn whenever a statement computes a result that is explicitly not
       used.  To suppress this warning cast the unused expression to
!      â€˜voidâ€™.  This includes an expression-statement or the left-hand
       side of a comma expression that contains no side effects.  For
!      example, an expression such as â€˜x[i,j]â€™ causes a warning, while
!      â€˜x[(void)i,j]â€™ does not.
  
!      This warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Wunusedâ€™
!      All the above â€˜-Wunusedâ€™ options combined, except those documented
       as needing to be specified explicitly.
  
       In order to get a warning about an unused function parameter, you
!      must either specify â€˜-Wextra -Wunusedâ€™ (note that â€˜-Wallâ€™ implies
!      â€˜-Wunusedâ€™), or separately specify â€˜-Wunused-parameterâ€™ and/or
!      â€˜-Wunused-but-set-parameterâ€™.
  
!      â€˜-Wunusedâ€™ enables only â€˜-Wunused-const-variable=1â€™ rather than
!      â€˜-Wunused-const-variableâ€™, and only for C, not C++.
  
! â€˜-Wuse-after-free (C, Objective-C, C++ and Objective-C++ only)â€™
! â€˜-Wuse-after-free=Nâ€™
       Warn about uses of pointers to dynamically allocated objects that
       have been rendered indeterminate by a call to a deallocation
       function.  The warning is enabled at all optimization levels but
       may yield different results with optimization than without.
  
!      â€˜-Wuse-after-free=1â€™
            At level 1 the warning attempts to diagnose only unconditional
            uses of pointers made indeterminate by a deallocation call or
!           a successful call to â€˜reallocâ€™, regardless of whether or not
            the call resulted in an actual reallocation of memory.  This
!           includes double-â€˜freeâ€™ calls as well as uses in arithmetic and
            relational expressions.  Although undefined, uses of
            indeterminate pointers in equality (or inequality) expressions
            are not diagnosed at this level.
!      â€˜-Wuse-after-free=2â€™
            At level 2, in addition to unconditional uses, the warning
            also diagnoses conditional uses of pointers made indeterminate
            by a deallocation call.  As at level 2, uses in equality (or
            inequality) expressions are not diagnosed.  For example, the
!           second call to â€˜freeâ€™ in the following function is diagnosed
            at this level:
                 struct A { int refcount; void *data; };
  
*************** cases it may also cause false positives.
*** 7376,7386 ****
                   if (refcount == 0)
                     free (p->data);   // warning: p may be used after free
                 }
!      '-Wuse-after-free=3'
            At level 3, the warning also diagnoses uses of indeterminate
            pointers in equality expressions.  All uses of indeterminate
            pointers are undefined but equality tests sometimes appear
!           after calls to 'realloc' as an attempt to determine whether
            the call resulted in relocating the object to a different
            address.  They are diagnosed at a separate level to aid
            gradually transitioning legacy code to safe alternatives.  For
--- 7380,7390 ----
                   if (refcount == 0)
                     free (p->data);   // warning: p may be used after free
                 }
!      â€˜-Wuse-after-free=3â€™
            At level 3, the warning also diagnoses uses of indeterminate
            pointers in equality expressions.  All uses of indeterminate
            pointers are undefined but equality tests sometimes appear
!           after calls to â€˜reallocâ€™ as an attempt to determine whether
            the call resulted in relocating the object to a different
            address.  They are diagnosed at a separate level to aid
            gradually transitioning legacy code to safe alternatives.  For
*************** cases it may also cause false positives.
*** 7399,7407 ****
            allocated memory instead of pointers.  This approach obviates
            needing to adjust the stored pointers after reallocation.
  
!      '-Wuse-after-free=2' is included in '-Wall'.
  
! '-Wuseless-cast (C, Objective-C, C++ and Objective-C++ only)'
       Warn when an expression is cast to its own type.  This warning does
       not occur when a class object is converted to a non-reference type
       as that is a way to create a temporary:
--- 7403,7411 ----
            allocated memory instead of pointers.  This approach obviates
            needing to adjust the stored pointers after reallocation.
  
!      â€˜-Wuse-after-free=2â€™ is included in â€˜-Wallâ€™.
  
! â€˜-Wuseless-cast (C, Objective-C, C++ and Objective-C++ only)â€™
       Warn when an expression is cast to its own type.  This warning does
       not occur when a class object is converted to a non-reference type
       as that is a way to create a temporary:
*************** cases it may also cause false positives.
*** 7413,7437 ****
              g (S(arg)); // make arg prvalue so that it can bind to S&&
            }
  
! '-Wuninitialized'
       Warn if an object with automatic or allocated storage duration is
       used without having been initialized.  In C++, also warn if a
!      non-static reference or non-static 'const' member appears in a
       class without constructors.
  
       In addition, passing a pointer (or in C++, a reference) to an
!      uninitialized object to a 'const'-qualified argument of a built-in
       function known to read the object is also diagnosed by this
!      warning.  ('-Wmaybe-uninitialized' is issued for ordinary
       functions.)
  
       If you want to warn about code that uses the uninitialized value of
!      the variable in its own initializer, use the '-Winit-self' option.
  
       These warnings occur for individual uninitialized elements of
       structure, union or array variables as well as for variables that
       are uninitialized as a whole.  They do not occur for variables or
!      elements declared 'volatile'.  Because these warnings depend on
       optimization, the exact variables or elements for which there are
       warnings depend on the precise optimization options and version of
       GCC used.
--- 7417,7441 ----
              g (S(arg)); // make arg prvalue so that it can bind to S&&
            }
  
! â€˜-Wuninitializedâ€™
       Warn if an object with automatic or allocated storage duration is
       used without having been initialized.  In C++, also warn if a
!      non-static reference or non-static â€˜constâ€™ member appears in a
       class without constructors.
  
       In addition, passing a pointer (or in C++, a reference) to an
!      uninitialized object to a â€˜constâ€™-qualified argument of a built-in
       function known to read the object is also diagnosed by this
!      warning.  (â€˜-Wmaybe-uninitializedâ€™ is issued for ordinary
       functions.)
  
       If you want to warn about code that uses the uninitialized value of
!      the variable in its own initializer, use the â€˜-Winit-selfâ€™ option.
  
       These warnings occur for individual uninitialized elements of
       structure, union or array variables as well as for variables that
       are uninitialized as a whole.  They do not occur for variables or
!      elements declared â€˜volatileâ€™.  Because these warnings depend on
       optimization, the exact variables or elements for which there are
       warnings depend on the precise optimization options and version of
       GCC used.
*************** cases it may also cause false positives.
*** 7442,7448 ****
       warnings are printed.
  
       In C++, this warning also warns about using uninitialized objects
!      in member-initializer-lists.  For example, GCC warns about 'b'
       being uninitialized in the following snippet:
  
            struct A {
--- 7446,7452 ----
       warnings are printed.
  
       In C++, this warning also warns about using uninitialized objects
!      in member-initializer-lists.  For example, GCC warns about â€˜bâ€™
       being uninitialized in the following snippet:
  
            struct A {
*************** cases it may also cause false positives.
*** 7451,7463 ****
              A() : a(b) { }
            };
  
! '-Wno-invalid-memory-model'
       This option controls warnings for invocations of *note __atomic
       Builtins::, *note __sync Builtins::, and the C11 atomic generic
       functions with a memory consistency argument that is either invalid
       for the operation or outside the range of values of the
!      'memory_order' enumeration.  For example, since the
!      '__atomic_store' and '__atomic_store_n' built-ins are only defined
       for the relaxed, release, and sequentially consistent memory orders
       the following code is diagnosed:
  
--- 7455,7467 ----
              A() : a(b) { }
            };
  
! â€˜-Wno-invalid-memory-modelâ€™
       This option controls warnings for invocations of *note __atomic
       Builtins::, *note __sync Builtins::, and the C11 atomic generic
       functions with a memory consistency argument that is either invalid
       for the operation or outside the range of values of the
!      â€˜memory_orderâ€™ enumeration.  For example, since the
!      â€˜__atomic_storeâ€™ and â€˜__atomic_store_nâ€™ built-ins are only defined
       for the relaxed, release, and sequentially consistent memory orders
       the following code is diagnosed:
  
*************** cases it may also cause false positives.
*** 7466,7474 ****
              __atomic_store_n (i, 0, memory_order_consume);
            }
  
!      '-Winvalid-memory-model' is enabled by default.
  
! '-Wmaybe-uninitialized'
       For an object with automatic or allocated storage duration, if
       there exists a path from the function entry to a use of the object
       that is initialized, but there exist some other paths for which the
--- 7470,7478 ----
              __atomic_store_n (i, 0, memory_order_consume);
            }
  
!      â€˜-Winvalid-memory-modelâ€™ is enabled by default.
  
! â€˜-Wmaybe-uninitializedâ€™
       For an object with automatic or allocated storage duration, if
       there exists a path from the function entry to a use of the object
       that is initialized, but there exist some other paths for which the
*************** cases it may also cause false positives.
*** 7476,7485 ****
       cannot prove the uninitialized paths are not executed at run time.
  
       In addition, passing a pointer (or in C++, a reference) to an
!      uninitialized object to a 'const'-qualified function argument is
!      also diagnosed by this warning.  ('-Wuninitialized' is issued for
       built-in functions known to read the object.)  Annotating the
!      function with attribute 'access (none)' indicates that the argument
       isn't used to access the object and avoids the warning (*note
       Common Function Attributes::).
  
--- 7480,7489 ----
       cannot prove the uninitialized paths are not executed at run time.
  
       In addition, passing a pointer (or in C++, a reference) to an
!      uninitialized object to a â€˜constâ€™-qualified function argument is
!      also diagnosed by this warning.  (â€˜-Wuninitializedâ€™ is issued for
       built-in functions known to read the object.)  Annotating the
!      function with attribute â€˜access (none)â€™ indicates that the argument
       isn't used to access the object and avoids the warning (*note
       Common Function Attributes::).
  
*************** cases it may also cause false positives.
*** 7503,7567 ****
              foo (x);
            }
  
!      If the value of 'y' is always 1, 2 or 3, then 'x' is always
       initialized, but GCC doesn't know this.  To suppress the warning,
       you need to provide a default case with assert(0) or similar code.
  
       This option also warns when a non-volatile automatic variable might
!      be changed by a call to 'longjmp'.  The compiler sees only the
!      calls to 'setjmp'.  It cannot know where 'longjmp' will be called;
       in fact, a signal handler could call it at any point in the code.
       As a result, you may get a warning even when there is in fact no
!      problem because 'longjmp' cannot in fact be called at the place
       that would cause a problem.
  
       Some spurious warnings can be avoided if you declare all the
!      functions you use that never return as 'noreturn'.  *Note Function
       Attributes::.
  
!      This warning is enabled by '-Wall' or '-Wextra'.
  
! '-Wunknown-pragmas'
!      Warn when a '#pragma' directive is encountered that is not
       understood by GCC.  If this command-line option is used, warnings
       are even issued for unknown pragmas in system header files.  This
!      is not the case if the warnings are only enabled by the '-Wall'
       command-line option.
  
! '-Wno-pragmas'
       Do not warn about misuses of pragmas, such as incorrect parameters,
       invalid syntax, or conflicts between pragmas.  See also
!      '-Wunknown-pragmas'.
  
! '-Wno-pragma-once-outside-header'
!      Do not warn when '#pragma once' is used in a file that is not a
       header file, such as a main file.
  
! '-Wno-prio-ctor-dtor'
       Do not warn if a priority from 0 to 100 is used for constructor or
       destructor.  The use of constructor and destructor attributes allow
       you to assign a priority to the constructor/destructor to control
!      its order of execution before 'main' is called or after it returns.
       The priority values must be greater than 100 as the compiler
       reserves priority values between 0-100 for the implementation.
  
! '-Wstrict-aliasing'
!      This option is only active when '-fstrict-aliasing' is active.  It
       warns about code that might break the strict aliasing rules that
       the compiler is using for optimization.  The warning does not catch
       all cases, but does attempt to catch the more common pitfalls.  It
!      is included in '-Wall'.  It is equivalent to '-Wstrict-aliasing=3'
  
! '-Wstrict-aliasing=n'
!      This option is only active when '-fstrict-aliasing' is active.  It
       warns about code that might break the strict aliasing rules that
       the compiler is using for optimization.  Higher levels correspond
       to higher accuracy (fewer false positives).  Higher levels also
!      correspond to more effort, similar to the way '-O' works.
!      '-Wstrict-aliasing' is equivalent to '-Wstrict-aliasing=3'.
  
       Level 1: Most aggressive, quick, least accurate.  Possibly useful
!      when higher levels do not warn but '-fstrict-aliasing' still breaks
       the code, as it has very few false negatives.  However, it has many
       false positives.  Warns for all pointer conversions between
       possibly incompatible types, even if never dereferenced.  Runs in
--- 7507,7571 ----
              foo (x);
            }
  
!      If the value of â€˜yâ€™ is always 1, 2 or 3, then â€˜xâ€™ is always
       initialized, but GCC doesn't know this.  To suppress the warning,
       you need to provide a default case with assert(0) or similar code.
  
       This option also warns when a non-volatile automatic variable might
!      be changed by a call to â€˜longjmpâ€™.  The compiler sees only the
!      calls to â€˜setjmpâ€™.  It cannot know where â€˜longjmpâ€™ will be called;
       in fact, a signal handler could call it at any point in the code.
       As a result, you may get a warning even when there is in fact no
!      problem because â€˜longjmpâ€™ cannot in fact be called at the place
       that would cause a problem.
  
       Some spurious warnings can be avoided if you declare all the
!      functions you use that never return as â€˜noreturnâ€™.  *Note Function
       Attributes::.
  
!      This warning is enabled by â€˜-Wallâ€™ or â€˜-Wextraâ€™.
  
! â€˜-Wunknown-pragmasâ€™
!      Warn when a â€˜#pragmaâ€™ directive is encountered that is not
       understood by GCC.  If this command-line option is used, warnings
       are even issued for unknown pragmas in system header files.  This
!      is not the case if the warnings are only enabled by the â€˜-Wallâ€™
       command-line option.
  
! â€˜-Wno-pragmasâ€™
       Do not warn about misuses of pragmas, such as incorrect parameters,
       invalid syntax, or conflicts between pragmas.  See also
!      â€˜-Wunknown-pragmasâ€™.
  
! â€˜-Wno-pragma-once-outside-headerâ€™
!      Do not warn when â€˜#pragma onceâ€™ is used in a file that is not a
       header file, such as a main file.
  
! â€˜-Wno-prio-ctor-dtorâ€™
       Do not warn if a priority from 0 to 100 is used for constructor or
       destructor.  The use of constructor and destructor attributes allow
       you to assign a priority to the constructor/destructor to control
!      its order of execution before â€˜mainâ€™ is called or after it returns.
       The priority values must be greater than 100 as the compiler
       reserves priority values between 0-100 for the implementation.
  
! â€˜-Wstrict-aliasingâ€™
!      This option is only active when â€˜-fstrict-aliasingâ€™ is active.  It
       warns about code that might break the strict aliasing rules that
       the compiler is using for optimization.  The warning does not catch
       all cases, but does attempt to catch the more common pitfalls.  It
!      is included in â€˜-Wallâ€™.  It is equivalent to â€˜-Wstrict-aliasing=3â€™
  
! â€˜-Wstrict-aliasing=nâ€™
!      This option is only active when â€˜-fstrict-aliasingâ€™ is active.  It
       warns about code that might break the strict aliasing rules that
       the compiler is using for optimization.  Higher levels correspond
       to higher accuracy (fewer false positives).  Higher levels also
!      correspond to more effort, similar to the way â€˜-Oâ€™ works.
!      â€˜-Wstrict-aliasingâ€™ is equivalent to â€˜-Wstrict-aliasing=3â€™.
  
       Level 1: Most aggressive, quick, least accurate.  Possibly useful
!      when higher levels do not warn but â€˜-fstrict-aliasingâ€™ still breaks
       the code, as it has very few false negatives.  However, it has many
       false positives.  Warns for all pointer conversions between
       possibly incompatible types, even if never dereferenced.  Runs in
*************** cases it may also cause false positives.
*** 7573,7590 ****
       only warns when an address is taken.  Warns about incomplete types.
       Runs in the front end only.
  
!      Level 3 (default for '-Wstrict-aliasing'): Should have very few
       false positives and few false negatives.  Slightly slower than
       levels 1 or 2 when optimization is enabled.  Takes care of the
       common pun+dereference pattern in the front end:
!      '*(int*)&some_float'.  If optimization is enabled, it also runs in
       the back end, where it deals with multiple statement cases using
       flow-sensitive points-to information.  Only warns when the
       converted pointer is dereferenced.  Does not warn about incomplete
       types.
  
! '-Wstrict-overflow'
! '-Wstrict-overflow=N'
       This option is only active when signed overflow is undefined.  It
       warns about cases where the compiler optimizes based on the
       assumption that signed overflow does not occur.  Note that it does
--- 7577,7594 ----
       only warns when an address is taken.  Warns about incomplete types.
       Runs in the front end only.
  
!      Level 3 (default for â€˜-Wstrict-aliasingâ€™): Should have very few
       false positives and few false negatives.  Slightly slower than
       levels 1 or 2 when optimization is enabled.  Takes care of the
       common pun+dereference pattern in the front end:
!      â€˜*(int*)&some_floatâ€™.  If optimization is enabled, it also runs in
       the back end, where it deals with multiple statement cases using
       flow-sensitive points-to information.  Only warns when the
       converted pointer is dereferenced.  Does not warn about incomplete
       types.
  
! â€˜-Wstrict-overflowâ€™
! â€˜-Wstrict-overflow=Nâ€™
       This option is only active when signed overflow is undefined.  It
       warns about cases where the compiler optimizes based on the
       assumption that signed overflow does not occur.  Note that it does
*************** cases it may also cause false positives.
*** 7602,7645 ****
       loop requires, in particular when determining whether a loop will
       be executed at all.
  
!      '-Wstrict-overflow=1'
            Warn about cases that are both questionable and easy to avoid.
!           For example the compiler simplifies 'x + 1 > x' to '1'.  This
!           level of '-Wstrict-overflow' is enabled by '-Wall'; higher
            levels are not, and must be explicitly requested.
  
!      '-Wstrict-overflow=2'
            Also warn about other cases where a comparison is simplified
!           to a constant.  For example: 'abs (x) >= 0'.  This can only be
            simplified when signed integer overflow is undefined, because
!           'abs (INT_MIN)' overflows to 'INT_MIN', which is less than
!           zero.  '-Wstrict-overflow' (with no level) is the same as
!           '-Wstrict-overflow=2'.
  
!      '-Wstrict-overflow=3'
            Also warn about other cases where a comparison is simplified.
!           For example: 'x + 1 > 1' is simplified to 'x > 0'.
  
!      '-Wstrict-overflow=4'
            Also warn about other simplifications not covered by the above
!           cases.  For example: '(x * 10) / 5' is simplified to 'x * 2'.
  
!      '-Wstrict-overflow=5'
            Also warn about cases where the compiler reduces the magnitude
!           of a constant involved in a comparison.  For example: 'x + 2 >
!           y' is simplified to 'x + 1 >= y'.  This is reported only at
            the highest warning level because this simplification applies
            to many comparisons, so this warning level gives a very large
            number of false positives.
  
! '-Wstring-compare'
!      Warn for calls to 'strcmp' and 'strncmp' whose result is determined
       to be either zero or non-zero in tests for such equality owing to
       the length of one argument being greater than the size of the array
       the other argument is stored in (or the bound in the case of
!      'strncmp').  Such calls could be mistakes.  For example, the call
!      to 'strcmp' below is diagnosed because its result is necessarily
!      non-zero irrespective of the contents of the array 'a'.
  
            extern char a[4];
            void f (char *d)
--- 7606,7649 ----
       loop requires, in particular when determining whether a loop will
       be executed at all.
  
!      â€˜-Wstrict-overflow=1â€™
            Warn about cases that are both questionable and easy to avoid.
!           For example the compiler simplifies â€˜x + 1 > xâ€™ to â€˜1â€™.  This
!           level of â€˜-Wstrict-overflowâ€™ is enabled by â€˜-Wallâ€™; higher
            levels are not, and must be explicitly requested.
  
!      â€˜-Wstrict-overflow=2â€™
            Also warn about other cases where a comparison is simplified
!           to a constant.  For example: â€˜abs (x) >= 0â€™.  This can only be
            simplified when signed integer overflow is undefined, because
!           â€˜abs (INT_MIN)â€™ overflows to â€˜INT_MINâ€™, which is less than
!           zero.  â€˜-Wstrict-overflowâ€™ (with no level) is the same as
!           â€˜-Wstrict-overflow=2â€™.
  
!      â€˜-Wstrict-overflow=3â€™
            Also warn about other cases where a comparison is simplified.
!           For example: â€˜x + 1 > 1â€™ is simplified to â€˜x > 0â€™.
  
!      â€˜-Wstrict-overflow=4â€™
            Also warn about other simplifications not covered by the above
!           cases.  For example: â€˜(x * 10) / 5â€™ is simplified to â€˜x * 2â€™.
  
!      â€˜-Wstrict-overflow=5â€™
            Also warn about cases where the compiler reduces the magnitude
!           of a constant involved in a comparison.  For example: â€˜x + 2 >
!           yâ€™ is simplified to â€˜x + 1 >= yâ€™.  This is reported only at
            the highest warning level because this simplification applies
            to many comparisons, so this warning level gives a very large
            number of false positives.
  
! â€˜-Wstring-compareâ€™
!      Warn for calls to â€˜strcmpâ€™ and â€˜strncmpâ€™ whose result is determined
       to be either zero or non-zero in tests for such equality owing to
       the length of one argument being greater than the size of the array
       the other argument is stored in (or the bound in the case of
!      â€˜strncmpâ€™).  Such calls could be mistakes.  For example, the call
!      to â€˜strcmpâ€™ below is diagnosed because its result is necessarily
!      non-zero irrespective of the contents of the array â€˜aâ€™.
  
            extern char a[4];
            void f (char *d)
*************** cases it may also cause false positives.
*** 7650,7683 ****
                puts ("a and d are the same");
            }
  
!      '-Wstring-compare' is enabled by '-Wextra'.
  
! '-Wno-stringop-overflow'
! '-Wstringop-overflow'
! '-Wstringop-overflow=TYPE'
       Warn for code that can be statically determined to cause buffer
!      overflows or memory overruns, such as calls to 'memcpy' and
!      'strcpy' that overflow the destination buffer.  The optional
       argument is one greater than the type of Object Size Checking to
       perform to determine the size of the destination.  *Note Object
       Size Checking::.  The argument is meaningful only for string
       functions that operate on character arrays; raw memory functions
!      like 'memcpy' always use type-zero Object Size Checking.
  
       The option also warns for calls that specify a size in excess of
!      the largest possible object or at most 'SIZE_MAX / 2' bytes.
  
       The option produces the best results with optimization enabled but
       can detect a small subset of simple buffer overflows even without
       optimization in calls to the GCC built-in functions like
!      '__builtin_memcpy' that correspond to the standard functions.  In
       any case, the option warns about just a subset of buffer overflows
       detected by the corresponding overflow checking built-ins, such as
!      '__builtin___memcpy_chk', which can perform run-time checking if
       the access cannot be identified as safe at compile time.
  
!      For example, the option issues a warning for the 'strcpy' call
!      below because it copies at least 5 characters (the string '"blue"'
       including the terminating NUL) into the buffer of size 4.
  
            enum Color { blue, purple, yellow };
--- 7654,7687 ----
                puts ("a and d are the same");
            }
  
!      â€˜-Wstring-compareâ€™ is enabled by â€˜-Wextraâ€™.
  
! â€˜-Wno-stringop-overflowâ€™
! â€˜-Wstringop-overflowâ€™
! â€˜-Wstringop-overflow=TYPEâ€™
       Warn for code that can be statically determined to cause buffer
!      overflows or memory overruns, such as calls to â€˜memcpyâ€™ and
!      â€˜strcpyâ€™ that overflow the destination buffer.  The optional
       argument is one greater than the type of Object Size Checking to
       perform to determine the size of the destination.  *Note Object
       Size Checking::.  The argument is meaningful only for string
       functions that operate on character arrays; raw memory functions
!      like â€˜memcpyâ€™ always use type-zero Object Size Checking.
  
       The option also warns for calls that specify a size in excess of
!      the largest possible object or at most â€˜SIZE_MAX / 2â€™ bytes.
  
       The option produces the best results with optimization enabled but
       can detect a small subset of simple buffer overflows even without
       optimization in calls to the GCC built-in functions like
!      â€˜__builtin_memcpyâ€™ that correspond to the standard functions.  In
       any case, the option warns about just a subset of buffer overflows
       detected by the corresponding overflow checking built-ins, such as
!      â€˜__builtin___memcpy_chkâ€™, which can perform run-time checking if
       the access cannot be identified as safe at compile time.
  
!      For example, the option issues a warning for the â€˜strcpyâ€™ call
!      below because it copies at least 5 characters (the string â€˜"blue"â€™
       including the terminating NUL) into the buffer of size 4.
  
            enum Color { blue, purple, yellow };
*************** cases it may also cause false positives.
*** 7708,7718 ****
              f (p);   // warning here
            }
  
!      Option '-Wstringop-overflow=2' is enabled by default.
  
!      '-Wstringop-overflow'
!      '-Wstringop-overflow=1'
!           The '-Wstringop-overflow=1' option uses type-zero Object Size
            Checking to determine the sizes of destination objects.  At
            this setting the option does not warn for writes past the end
            of subobjects of larger objects accessed by pointers unless
--- 7712,7722 ----
              f (p);   // warning here
            }
  
!      Option â€˜-Wstringop-overflow=2â€™ is enabled by default.
  
!      â€˜-Wstringop-overflowâ€™
!      â€˜-Wstringop-overflow=1â€™
!           The â€˜-Wstringop-overflow=1â€™ option uses type-zero Object Size
            Checking to determine the sizes of destination objects.  At
            this setting the option does not warn for writes past the end
            of subobjects of larger objects accessed by pointers unless
*************** cases it may also cause false positives.
*** 7720,7730 ****
            destination may be one of several objects it is assumed to be
            the largest one of them.  On Linux systems, when optimization
            is enabled at this setting the option warns for the same code
!           as when the '_FORTIFY_SOURCE' macro is defined to a non-zero
            value.
  
!      '-Wstringop-overflow=2'
!           The '-Wstringop-overflow=2' option uses type-one Object Size
            Checking to determine the sizes of destination objects.  At
            this setting the option warns about overflows when writing to
            members of the largest complete objects whose exact size is
--- 7724,7734 ----
            destination may be one of several objects it is assumed to be
            the largest one of them.  On Linux systems, when optimization
            is enabled at this setting the option warns for the same code
!           as when the â€˜_FORTIFY_SOURCEâ€™ macro is defined to a non-zero
            value.
  
!      â€˜-Wstringop-overflow=2â€™
!           The â€˜-Wstringop-overflow=2â€™ option uses type-one Object Size
            Checking to determine the sizes of destination objects.  At
            this setting the option warns about overflows when writing to
            members of the largest complete objects whose exact size is
*************** cases it may also cause false positives.
*** 7733,7770 ****
            they may point to arrays containing unknown numbers of
            elements.  This is the default setting of the option.
  
!      '-Wstringop-overflow=3'
!           The '-Wstringop-overflow=3' option uses type-two Object Size
            Checking to determine the sizes of destination objects.  At
            this setting the option warns about overflowing the smallest
            object or data member.  This is the most restrictive setting
            of the option that may result in warnings for safe code.
  
!      '-Wstringop-overflow=4'
!           The '-Wstringop-overflow=4' option uses type-three Object Size
            Checking to determine the sizes of destination objects.  At
            this setting the option warns about overflowing any data
            members, and when the destination is one of several objects it
            uses the size of the largest of them to decide whether to
!           issue a warning.  Similarly to '-Wstringop-overflow=3' this
            setting of the option may result in warnings for benign code.
  
! '-Wno-stringop-overread'
!      Warn for calls to string manipulation functions such as 'memchr',
!      or 'strcpy' that are determined to read past the end of the source
       sequence.
  
!      Option '-Wstringop-overread' is enabled by default.
  
! '-Wno-stringop-truncation'
       Do not warn for calls to bounded string manipulation functions such
!      as 'strncat', 'strncpy', and 'stpncpy' that may either truncate the
       copied string or leave the destination unchanged.
  
!      In the following example, the call to 'strncat' specifies a bound
       that is less than the length of the source string.  As a result,
       the copy of the source will be truncated and so the call is
!      diagnosed.  To avoid the warning use 'bufsize - strlen (buf) - 1)'
       as the bound.
  
            void append (char *buf, size_t bufsize)
--- 7737,7774 ----
            they may point to arrays containing unknown numbers of
            elements.  This is the default setting of the option.
  
!      â€˜-Wstringop-overflow=3â€™
!           The â€˜-Wstringop-overflow=3â€™ option uses type-two Object Size
            Checking to determine the sizes of destination objects.  At
            this setting the option warns about overflowing the smallest
            object or data member.  This is the most restrictive setting
            of the option that may result in warnings for safe code.
  
!      â€˜-Wstringop-overflow=4â€™
!           The â€˜-Wstringop-overflow=4â€™ option uses type-three Object Size
            Checking to determine the sizes of destination objects.  At
            this setting the option warns about overflowing any data
            members, and when the destination is one of several objects it
            uses the size of the largest of them to decide whether to
!           issue a warning.  Similarly to â€˜-Wstringop-overflow=3â€™ this
            setting of the option may result in warnings for benign code.
  
! â€˜-Wno-stringop-overreadâ€™
!      Warn for calls to string manipulation functions such as â€˜memchrâ€™,
!      or â€˜strcpyâ€™ that are determined to read past the end of the source
       sequence.
  
!      Option â€˜-Wstringop-overreadâ€™ is enabled by default.
  
! â€˜-Wno-stringop-truncationâ€™
       Do not warn for calls to bounded string manipulation functions such
!      as â€˜strncatâ€™, â€˜strncpyâ€™, and â€˜stpncpyâ€™ that may either truncate the
       copied string or leave the destination unchanged.
  
!      In the following example, the call to â€˜strncatâ€™ specifies a bound
       that is less than the length of the source string.  As a result,
       the copy of the source will be truncated and so the call is
!      diagnosed.  To avoid the warning use â€˜bufsize - strlen (buf) - 1)â€™
       as the bound.
  
            void append (char *buf, size_t bufsize)
*************** cases it may also cause false positives.
*** 7772,7783 ****
              strncat (buf, ".txt", 3);
            }
  
!      As another example, the following call to 'strncpy' results in
!      copying to 'd' just the characters preceding the terminating NUL,
       without appending the NUL to the end.  Assuming the result of
!      'strncpy' is necessarily a NUL-terminated string is a common
       mistake, and so the call is diagnosed.  To avoid the warning when
!      the result is not expected to be NUL-terminated, call 'memcpy'
       instead.
  
            void copy (char *d, const char *s)
--- 7776,7787 ----
              strncat (buf, ".txt", 3);
            }
  
!      As another example, the following call to â€˜strncpyâ€™ results in
!      copying to â€˜dâ€™ just the characters preceding the terminating NUL,
       without appending the NUL to the end.  Assuming the result of
!      â€˜strncpyâ€™ is necessarily a NUL-terminated string is a common
       mistake, and so the call is diagnosed.  To avoid the warning when
!      the result is not expected to be NUL-terminated, call â€˜memcpyâ€™
       instead.
  
            void copy (char *d, const char *s)
*************** cases it may also cause false positives.
*** 7785,7796 ****
              strncpy (d, s, strlen (s));
            }
  
!      In the following example, the call to 'strncpy' specifies the size
       of the destination buffer as the bound.  If the length of the
       source string is equal to or greater than this size the result of
       the copy will not be NUL-terminated.  Therefore, the call is also
!      diagnosed.  To avoid the warning, specify 'sizeof buf - 1' as the
!      bound and set the last element of the buffer to 'NUL'.
  
            void copy (const char *s)
            {
--- 7789,7800 ----
              strncpy (d, s, strlen (s));
            }
  
!      In the following example, the call to â€˜strncpyâ€™ specifies the size
       of the destination buffer as the bound.  If the length of the
       source string is equal to or greater than this size the result of
       the copy will not be NUL-terminated.  Therefore, the call is also
!      diagnosed.  To avoid the warning, specify â€˜sizeof buf - 1â€™ as the
!      bound and set the last element of the buffer to â€˜NULâ€™.
  
            void copy (const char *s)
            {
*************** cases it may also cause false positives.
*** 7800,7821 ****
            }
  
       In situations where a character array is intended to store a
!      sequence of bytes with no terminating 'NUL' such an array may be
!      annotated with attribute 'nonstring' to avoid this warning.  Such
       arrays, however, are not suitable arguments to functions that
!      expect 'NUL'-terminated strings.  To help detect accidental misuses
       of such arrays GCC issues warnings unless it can prove that the use
       is safe.  *Note Common Variable Attributes::.
  
! '-Wstrict-flex-arrays (C and C++ only)'
       Warn about improper usages of flexible array members according to
!      the LEVEL of the 'strict_flex_array (LEVEL)' attribute attached to
       the trailing array field of a structure if it's available,
       otherwise according to the LEVEL of the option
!      '-fstrict-flex-arrays=LEVEL'.  *Note Common Variable Attributes::,
       for more information about the attribute, and *note C Dialect
       Options:: for more information about the option.
!      '-Wstrict-flex-arrays' is effective only when LEVEL is greater than
       0.
  
       When LEVEL=1, warnings are issued for a trailing array reference of
--- 7804,7825 ----
            }
  
       In situations where a character array is intended to store a
!      sequence of bytes with no terminating â€˜NULâ€™ such an array may be
!      annotated with attribute â€˜nonstringâ€™ to avoid this warning.  Such
       arrays, however, are not suitable arguments to functions that
!      expect â€˜NULâ€™-terminated strings.  To help detect accidental misuses
       of such arrays GCC issues warnings unless it can prove that the use
       is safe.  *Note Common Variable Attributes::.
  
! â€˜-Wstrict-flex-arrays (C and C++ only)â€™
       Warn about improper usages of flexible array members according to
!      the LEVEL of the â€˜strict_flex_array (LEVEL)â€™ attribute attached to
       the trailing array field of a structure if it's available,
       otherwise according to the LEVEL of the option
!      â€˜-fstrict-flex-arrays=LEVELâ€™.  *Note Common Variable Attributes::,
       for more information about the attribute, and *note C Dialect
       Options:: for more information about the option.
!      â€˜-Wstrict-flex-arraysâ€™ is effective only when LEVEL is greater than
       0.
  
       When LEVEL=1, warnings are issued for a trailing array reference of
*************** cases it may also cause false positives.
*** 7830,7948 ****
       issued for a trailing zero-length array reference of a structure if
       the array is referenced as a flexible array member.
  
!      This option is more effective when '-ftree-vrp' is active (the
!      default for '-O2' and above) but some warnings may be diagnosed
       even without optimization.
  
! '-Wsuggest-attribute=ATTRIBUTE-NAME'
       Warn for cases where adding an attribute may be beneficial.  The
       ATTRIBUTE-NAMEs currently supported are listed below.
  
!      '-Wsuggest-attribute=pure'
!      '-Wsuggest-attribute=const'
!      '-Wsuggest-attribute=noreturn'
!      '-Wmissing-noreturn'
!      '-Wsuggest-attribute=malloc'
!      '-Wsuggest-attribute=returns_nonnull'
  
            Warn about functions that might be candidates for attributes
!           'pure', 'const', 'noreturn', 'malloc' or 'returns_nonnull'.
            The compiler only warns for functions visible in other
!           compilation units or (in the case of 'pure' and 'const') if it
            cannot prove that the function returns normally.  A function
            returns normally if it doesn't contain an infinite loop or
!           return abnormally by throwing, calling 'abort' or trapping.
!           This analysis requires option '-fipa-pure-const', which is
!           enabled by default at '-O' and higher.  Higher optimization
            levels improve the accuracy of the analysis.
  
!      '-Wsuggest-attribute=format'
!      '-Wmissing-format-attribute'
  
            Warn about function pointers that might be candidates for
!           'format' attributes.  Note these are only possible candidates,
            not absolute ones.  GCC guesses that function pointers with
!           'format' attributes that are used in assignment,
            initialization, parameter passing or return statements should
!           have a corresponding 'format' attribute in the resulting type.
            I.e. the left-hand side of the assignment or initialization,
            the type of the parameter variable, or the return type of the
!           containing function respectively should also have a 'format'
            attribute to avoid the warning.
  
            GCC also warns about function definitions that might be
!           candidates for 'format' attributes.  Again, these are only
!           possible candidates.  GCC guesses that 'format' attributes
            might be appropriate for any function that calls a function
!           like 'vprintf' or 'vscanf', but this might not always be the
!           case, and some functions for which 'format' attributes are
            appropriate may not be detected.
  
!      '-Wsuggest-attribute=cold'
  
!           Warn about functions that might be candidates for 'cold'
            attribute.  This is based on static detection and generally
            only warns about functions which always leads to a call to
!           another 'cold' function such as wrappers of C++ 'throw' or
!           fatal error reporting functions leading to 'abort'.
  
! '-Walloc-size'
       Warn about calls to allocation functions decorated with attribute
!      'alloc_size' that specify insufficient size for the target type of
       the pointer the result is assigned to, including those to the
!      built-in forms of the functions 'aligned_alloc', 'alloca',
!      'calloc', 'malloc', and 'realloc'.
  
! '-Walloc-zero'
       Warn about calls to allocation functions decorated with attribute
!      'alloc_size' that specify zero bytes, including those to the
!      built-in forms of the functions 'aligned_alloc', 'alloca',
!      'calloc', 'malloc', and 'realloc'.  Because the behavior of these
       functions when called with a zero size differs among
!      implementations (and in the case of 'realloc' has been deprecated)
       relying on it may result in subtle portability bugs and should be
       avoided.
  
! '-Wcalloc-transposed-args'
       Warn about calls to allocation functions decorated with attribute
!      'alloc_size' with two arguments, which use 'sizeof' operator as the
       earlier size argument and don't use it as the later size argument.
!      This is a coding style warning.  The first argument to 'calloc' is
       documented to be number of elements in array, while the second
!      argument is size of each element, so 'calloc (N, sizeof (int))' is
!      preferred over 'calloc (sizeof (int), N)'.  If 'sizeof' in the
       earlier argument and not the latter is intentional, the warning can
!      be suppressed by using 'calloc (sizeof (struct S) + 0, n)' or
!      'calloc (1 * sizeof (struct S), 4)' or using 'sizeof' in the later
       argument as well.
  
! '-Walloc-size-larger-than=BYTE-SIZE'
!      Warn about calls to functions decorated with attribute 'alloc_size'
       that attempt to allocate objects larger than the specified number
       of bytes, or where the result of the size computation in an integer
       type with infinite precision would exceed the value of
!      'PTRDIFF_MAX' on the target.
!      '-Walloc-size-larger-than=''PTRDIFF_MAX' is enabled by default.
       Warnings controlled by the option can be disabled either by
!      specifying BYTE-SIZE of 'SIZE_MAX' or more or by
!      '-Wno-alloc-size-larger-than'.  *Note Function Attributes::.
  
! '-Wno-alloc-size-larger-than'
!      Disable '-Walloc-size-larger-than=' warnings.  The option is
!      equivalent to '-Walloc-size-larger-than=''SIZE_MAX' or larger.
  
! '-Walloca'
!      This option warns on all uses of 'alloca' in the source.
  
! '-Walloca-larger-than=BYTE-SIZE'
!      This option warns on calls to 'alloca' with an integer argument
       whose value is either zero, or that is not bounded by a controlling
       predicate that limits its value to at most BYTE-SIZE.  It also
!      warns for calls to 'alloca' where the bound value is unknown.
       Arguments of non-integer types are considered unbounded even if
       they appear to be constrained to the expected range.
  
!      For example, a bounded case of 'alloca' could be:
  
            void func (size_t n)
            {
--- 7834,7952 ----
       issued for a trailing zero-length array reference of a structure if
       the array is referenced as a flexible array member.
  
!      This option is more effective when â€˜-ftree-vrpâ€™ is active (the
!      default for â€˜-O2â€™ and above) but some warnings may be diagnosed
       even without optimization.
  
! â€˜-Wsuggest-attribute=ATTRIBUTE-NAMEâ€™
       Warn for cases where adding an attribute may be beneficial.  The
       ATTRIBUTE-NAMEs currently supported are listed below.
  
!      â€˜-Wsuggest-attribute=pureâ€™
!      â€˜-Wsuggest-attribute=constâ€™
!      â€˜-Wsuggest-attribute=noreturnâ€™
!      â€˜-Wmissing-noreturnâ€™
!      â€˜-Wsuggest-attribute=mallocâ€™
!      â€˜-Wsuggest-attribute=returns_nonnullâ€™
  
            Warn about functions that might be candidates for attributes
!           â€˜pureâ€™, â€˜constâ€™, â€˜noreturnâ€™, â€˜mallocâ€™ or â€˜returns_nonnullâ€™.
            The compiler only warns for functions visible in other
!           compilation units or (in the case of â€˜pureâ€™ and â€˜constâ€™) if it
            cannot prove that the function returns normally.  A function
            returns normally if it doesn't contain an infinite loop or
!           return abnormally by throwing, calling â€˜abortâ€™ or trapping.
!           This analysis requires option â€˜-fipa-pure-constâ€™, which is
!           enabled by default at â€˜-Oâ€™ and higher.  Higher optimization
            levels improve the accuracy of the analysis.
  
!      â€˜-Wsuggest-attribute=formatâ€™
!      â€˜-Wmissing-format-attributeâ€™
  
            Warn about function pointers that might be candidates for
!           â€˜formatâ€™ attributes.  Note these are only possible candidates,
            not absolute ones.  GCC guesses that function pointers with
!           â€˜formatâ€™ attributes that are used in assignment,
            initialization, parameter passing or return statements should
!           have a corresponding â€˜formatâ€™ attribute in the resulting type.
            I.e. the left-hand side of the assignment or initialization,
            the type of the parameter variable, or the return type of the
!           containing function respectively should also have a â€˜formatâ€™
            attribute to avoid the warning.
  
            GCC also warns about function definitions that might be
!           candidates for â€˜formatâ€™ attributes.  Again, these are only
!           possible candidates.  GCC guesses that â€˜formatâ€™ attributes
            might be appropriate for any function that calls a function
!           like â€˜vprintfâ€™ or â€˜vscanfâ€™, but this might not always be the
!           case, and some functions for which â€˜formatâ€™ attributes are
            appropriate may not be detected.
  
!      â€˜-Wsuggest-attribute=coldâ€™
  
!           Warn about functions that might be candidates for â€˜coldâ€™
            attribute.  This is based on static detection and generally
            only warns about functions which always leads to a call to
!           another â€˜coldâ€™ function such as wrappers of C++ â€˜throwâ€™ or
!           fatal error reporting functions leading to â€˜abortâ€™.
  
! â€˜-Walloc-sizeâ€™
       Warn about calls to allocation functions decorated with attribute
!      â€˜alloc_sizeâ€™ that specify insufficient size for the target type of
       the pointer the result is assigned to, including those to the
!      built-in forms of the functions â€˜aligned_allocâ€™, â€˜allocaâ€™,
!      â€˜callocâ€™, â€˜mallocâ€™, and â€˜reallocâ€™.
  
! â€˜-Walloc-zeroâ€™
       Warn about calls to allocation functions decorated with attribute
!      â€˜alloc_sizeâ€™ that specify zero bytes, including those to the
!      built-in forms of the functions â€˜aligned_allocâ€™, â€˜allocaâ€™,
!      â€˜callocâ€™, â€˜mallocâ€™, and â€˜reallocâ€™.  Because the behavior of these
       functions when called with a zero size differs among
!      implementations (and in the case of â€˜reallocâ€™ has been deprecated)
       relying on it may result in subtle portability bugs and should be
       avoided.
  
! â€˜-Wcalloc-transposed-argsâ€™
       Warn about calls to allocation functions decorated with attribute
!      â€˜alloc_sizeâ€™ with two arguments, which use â€˜sizeofâ€™ operator as the
       earlier size argument and don't use it as the later size argument.
!      This is a coding style warning.  The first argument to â€˜callocâ€™ is
       documented to be number of elements in array, while the second
!      argument is size of each element, so â€˜calloc (N, sizeof (int))â€™ is
!      preferred over â€˜calloc (sizeof (int), N)â€™.  If â€˜sizeofâ€™ in the
       earlier argument and not the latter is intentional, the warning can
!      be suppressed by using â€˜calloc (sizeof (struct S) + 0, n)â€™ or
!      â€˜calloc (1 * sizeof (struct S), 4)â€™ or using â€˜sizeofâ€™ in the later
       argument as well.
  
! â€˜-Walloc-size-larger-than=BYTE-SIZEâ€™
!      Warn about calls to functions decorated with attribute â€˜alloc_sizeâ€™
       that attempt to allocate objects larger than the specified number
       of bytes, or where the result of the size computation in an integer
       type with infinite precision would exceed the value of
!      â€˜PTRDIFF_MAXâ€™ on the target.
!      â€˜-Walloc-size-larger-than=â€™â€˜PTRDIFF_MAXâ€™ is enabled by default.
       Warnings controlled by the option can be disabled either by
!      specifying BYTE-SIZE of â€˜SIZE_MAXâ€™ or more or by
!      â€˜-Wno-alloc-size-larger-thanâ€™.  *Note Function Attributes::.
  
! â€˜-Wno-alloc-size-larger-thanâ€™
!      Disable â€˜-Walloc-size-larger-than=â€™ warnings.  The option is
!      equivalent to â€˜-Walloc-size-larger-than=â€™â€˜SIZE_MAXâ€™ or larger.
  
! â€˜-Wallocaâ€™
!      This option warns on all uses of â€˜allocaâ€™ in the source.
  
! â€˜-Walloca-larger-than=BYTE-SIZEâ€™
!      This option warns on calls to â€˜allocaâ€™ with an integer argument
       whose value is either zero, or that is not bounded by a controlling
       predicate that limits its value to at most BYTE-SIZE.  It also
!      warns for calls to â€˜allocaâ€™ where the bound value is unknown.
       Arguments of non-integer types are considered unbounded even if
       they appear to be constrained to the expected range.
  
!      For example, a bounded case of â€˜allocaâ€™ could be:
  
            void func (size_t n)
            {
*************** cases it may also cause false positives.
*** 7954,7965 ****
              f (p);
            }
  
!      In the above example, passing '-Walloca-larger-than=1000' would not
!      issue a warning because the call to 'alloca' is known to be at most
!      1000 bytes.  However, if '-Walloca-larger-than=500' were passed,
       the compiler would emit a warning.
  
!      Unbounded uses, on the other hand, are uses of 'alloca' with no
       controlling predicate constraining its integer argument.  For
       example:
  
--- 7958,7969 ----
              f (p);
            }
  
!      In the above example, passing â€˜-Walloca-larger-than=1000â€™ would not
!      issue a warning because the call to â€˜allocaâ€™ is known to be at most
!      1000 bytes.  However, if â€˜-Walloca-larger-than=500â€™ were passed,
       the compiler would emit a warning.
  
!      Unbounded uses, on the other hand, are uses of â€˜allocaâ€™ with no
       controlling predicate constraining its integer argument.  For
       example:
  
*************** cases it may also cause false positives.
*** 7969,7975 ****
              f (p);
            }
  
!      If '-Walloca-larger-than=500' were passed, the above would trigger
       a warning, but this time because of the lack of bounds checking.
  
       Note, that even seemingly correct code involving signed integers
--- 7973,7979 ----
              f (p);
            }
  
!      If â€˜-Walloca-larger-than=500â€™ were passed, the above would trigger
       a warning, but this time because of the lack of bounds checking.
  
       Note, that even seemingly correct code involving signed integers
*************** cases it may also cause false positives.
*** 7985,8009 ****
            }
  
       In the above example, N could be negative, causing a larger than
!      expected argument to be implicitly cast into the 'alloca' call.
  
!      This option also warns when 'alloca' is used in a loop.
  
!      '-Walloca-larger-than=''PTRDIFF_MAX' is enabled by default but is
!      usually only effective when '-ftree-vrp' is active (default for
!      '-O2' and above).
  
!      See also '-Wvla-larger-than=''byte-size'.
  
! '-Wno-alloca-larger-than'
!      Disable '-Walloca-larger-than=' warnings.  The option is equivalent
!      to '-Walloca-larger-than=''SIZE_MAX' or larger.
  
! '-Warith-conversion'
       Do warn about implicit conversions from arithmetic operations even
       when conversion of the operands to the same type cannot change
!      their values.  This affects warnings from '-Wconversion',
!      '-Wfloat-conversion', and '-Wsign-conversion'.
  
            void f (char c, int i)
            {
--- 7989,8013 ----
            }
  
       In the above example, N could be negative, causing a larger than
!      expected argument to be implicitly cast into the â€˜allocaâ€™ call.
  
!      This option also warns when â€˜allocaâ€™ is used in a loop.
  
!      â€˜-Walloca-larger-than=â€™â€˜PTRDIFF_MAXâ€™ is enabled by default but is
!      usually only effective when â€˜-ftree-vrpâ€™ is active (default for
!      â€˜-O2â€™ and above).
  
!      See also â€˜-Wvla-larger-than=â€™â€˜byte-sizeâ€™.
  
! â€˜-Wno-alloca-larger-thanâ€™
!      Disable â€˜-Walloca-larger-than=â€™ warnings.  The option is equivalent
!      to â€˜-Walloca-larger-than=â€™â€˜SIZE_MAXâ€™ or larger.
  
! â€˜-Warith-conversionâ€™
       Do warn about implicit conversions from arithmetic operations even
       when conversion of the operands to the same type cannot change
!      their values.  This affects warnings from â€˜-Wconversionâ€™,
!      â€˜-Wfloat-conversionâ€™, and â€˜-Wsign-conversionâ€™.
  
            void f (char c, int i)
            {
*************** cases it may also cause false positives.
*** 8011,8033 ****
              c = c + 1; // only warns with -Warith-conversion
            }
  
! '-Warray-bounds'
! '-Warray-bounds=N'
       Warn about out of bounds subscripts or offsets into arrays.  This
!      warning is enabled by '-Wall'.  It is more effective when
!      '-ftree-vrp' is active (the default for '-O2' and above) but a
       subset of instances are issued even without optimization.
  
       By default, the trailing array of a structure will be treated as a
!      flexible array member by '-Warray-bounds' or '-Warray-bounds=N' if
       it is declared as either a flexible array member per C99 standard
!      onwards ('[]'), a GCC zero-length array extension ('[0]'), or an
!      one-element array ('[1]').  As a result, out of bounds subscripts
       or offsets into zero-length arrays or one-element arrays are not
       warned by default.
  
!      You can add the option '-fstrict-flex-arrays' or
!      '-fstrict-flex-arrays=LEVEL' to control how this option treat
       trailing array of a structure as a flexible array member:
  
       when LEVEL<=1, no change to the default behavior.
--- 8015,8037 ----
              c = c + 1; // only warns with -Warith-conversion
            }
  
! â€˜-Warray-boundsâ€™
! â€˜-Warray-bounds=Nâ€™
       Warn about out of bounds subscripts or offsets into arrays.  This
!      warning is enabled by â€˜-Wallâ€™.  It is more effective when
!      â€˜-ftree-vrpâ€™ is active (the default for â€˜-O2â€™ and above) but a
       subset of instances are issued even without optimization.
  
       By default, the trailing array of a structure will be treated as a
!      flexible array member by â€˜-Warray-boundsâ€™ or â€˜-Warray-bounds=Nâ€™ if
       it is declared as either a flexible array member per C99 standard
!      onwards (â€˜[]â€™), a GCC zero-length array extension (â€˜[0]â€™), or an
!      one-element array (â€˜[1]â€™).  As a result, out of bounds subscripts
       or offsets into zero-length arrays or one-element arrays are not
       warned by default.
  
!      You can add the option â€˜-fstrict-flex-arraysâ€™ or
!      â€˜-fstrict-flex-arrays=LEVELâ€™ to control how this option treat
       trailing array of a structure as a flexible array member:
  
       when LEVEL<=1, no change to the default behavior.
*************** cases it may also cause false positives.
*** 8039,8069 ****
       issued for out of bounds subscripts or offsets into zero-length
       arrays.
  
!      '-Warray-bounds=1'
!           This is the default warning level of '-Warray-bounds' and is
!           enabled by '-Wall'; higher levels are not, and must be
            explicitly requested.
  
!      '-Warray-bounds=2'
            This warning level also warns about the intermediate results
            of pointer arithmetic that may yield out of bounds values.
            This warning level may give a larger number of false positives
            and is deactivated by default.
  
! '-Wunterminated-string-initialization (C and Objective-C only)'
       Warn about character arrays initialized as unterminated character
       sequences with a string literal, unless the declaration being
!      initialized has the 'nonstring' attribute.  For example:
  
            char arr[3] = "foo"; /* Warning.  */
            char arr2[3] __attribute__((nonstring)) = "bar"; /* No warning.  */
  
!      This warning is enabled by '-Wextra'.  If '-Wc++-compat' is
       enabled, the warning has slightly different wording and warns even
!      if the declaration being initialized has the 'nonstring' warning,
       as in C++ such initializations are an error.
  
! '-Warray-compare'
       Warn about equality and relational comparisons between two operands
       of array type.  This comparison was deprecated in C++20.  For
       example:
--- 8043,8073 ----
       issued for out of bounds subscripts or offsets into zero-length
       arrays.
  
!      â€˜-Warray-bounds=1â€™
!           This is the default warning level of â€˜-Warray-boundsâ€™ and is
!           enabled by â€˜-Wallâ€™; higher levels are not, and must be
            explicitly requested.
  
!      â€˜-Warray-bounds=2â€™
            This warning level also warns about the intermediate results
            of pointer arithmetic that may yield out of bounds values.
            This warning level may give a larger number of false positives
            and is deactivated by default.
  
! â€˜-Wunterminated-string-initialization (C and Objective-C only)â€™
       Warn about character arrays initialized as unterminated character
       sequences with a string literal, unless the declaration being
!      initialized has the â€˜nonstringâ€™ attribute.  For example:
  
            char arr[3] = "foo"; /* Warning.  */
            char arr2[3] __attribute__((nonstring)) = "bar"; /* No warning.  */
  
!      This warning is enabled by â€˜-Wextraâ€™.  If â€˜-Wc++-compatâ€™ is
       enabled, the warning has slightly different wording and warns even
!      if the declaration being initialized has the â€˜nonstringâ€™ warning,
       as in C++ such initializations are an error.
  
! â€˜-Warray-compareâ€™
       Warn about equality and relational comparisons between two operands
       of array type.  This comparison was deprecated in C++20.  For
       example:
*************** cases it may also cause false positives.
*** 8072,8085 ****
            int arr2[5];
            bool same = arr1 == arr2;
  
!      '-Warray-compare' is enabled by '-Wall'.
  
! '-Warray-parameter'
! '-Warray-parameter=N'
       Warn about redeclarations of functions involving parameters of
       array or pointer types of inconsistent kinds or forms, and enable
       the detection of out-of-bounds accesses to such parameters by
!      warnings such as '-Warray-bounds'.
  
       If the first function declaration uses the array form for a
       parameter declaration, the bound specified in the array is assumed
--- 8076,8089 ----
            int arr2[5];
            bool same = arr1 == arr2;
  
!      â€˜-Warray-compareâ€™ is enabled by â€˜-Wallâ€™.
  
! â€˜-Warray-parameterâ€™
! â€˜-Warray-parameter=Nâ€™
       Warn about redeclarations of functions involving parameters of
       array or pointer types of inconsistent kinds or forms, and enable
       the detection of out-of-bounds accesses to such parameters by
!      warnings such as â€˜-Warray-boundsâ€™.
  
       If the first function declaration uses the array form for a
       parameter declaration, the bound specified in the array is assumed
*************** cases it may also cause false positives.
*** 8087,8100 ****
       calls to the function and the maximum number of elements accessed
       by it.  Failing to provide arguments of sufficient size or
       accessing more than the maximum number of elements may be diagnosed
!      by warnings such as '-Warray-bounds' or '-Wstringop-overflow'.  At
       level 1, the warning diagnoses inconsistencies involving array
!      parameters declared using the 'T[static N]' form.
  
!      For example, the warning triggers for the second declaration of 'f'
!      because the first one with the keyword 'static' specifies that the
       array argument must have at least four elements, while the second
!      allows an array of any size to be passed to 'f'.
  
            void f (int[static 4]);
            void f (int[]);           // warning (inconsistent array form)
--- 8091,8104 ----
       calls to the function and the maximum number of elements accessed
       by it.  Failing to provide arguments of sufficient size or
       accessing more than the maximum number of elements may be diagnosed
!      by warnings such as â€˜-Warray-boundsâ€™ or â€˜-Wstringop-overflowâ€™.  At
       level 1, the warning diagnoses inconsistencies involving array
!      parameters declared using the â€˜T[static N]â€™ form.
  
!      For example, the warning triggers for the second declaration of â€˜fâ€™
!      because the first one with the keyword â€˜staticâ€™ specifies that the
       array argument must have at least four elements, while the second
!      allows an array of any size to be passed to â€˜fâ€™.
  
            void f (int[static 4]);
            void f (int[]);           // warning (inconsistent array form)
*************** cases it may also cause false positives.
*** 8115,8162 ****
            void g (int[]);     // no warning
            void g (int[8]);    // warning (inconsistent array bound)
  
!      '-Warray-parameter=2' is included in '-Wall'.  The
!      '-Wvla-parameter' option triggers warnings for similar
       inconsistencies involving Variable Length Array arguments.
  
!      The short form of the option '-Warray-parameter' is equivalent to
!      '-Warray-parameter=2'.  The negative form '-Wno-array-parameter' is
!      equivalent to '-Warray-parameter=0'.
  
! '-Wattribute-alias=N'
! '-Wno-attribute-alias'
!      Warn about declarations using the 'alias' and similar attributes
       whose target is incompatible with the type of the alias.  *Note
       Declaring Attributes of Functions: Function Attributes.
  
!      '-Wattribute-alias=1'
!           The default warning level of the '-Wattribute-alias' option
            diagnoses incompatibilities between the type of the alias
            declaration and that of its target.  Such incompatibilities
            are typically indicative of bugs.
  
!      '-Wattribute-alias=2'
  
!           At this level '-Wattribute-alias' also diagnoses cases where
            the attributes of the alias declaration are more restrictive
            than the attributes applied to its target.  These mismatches
            can potentially result in incorrect code generation.  In other
            cases they may be benign and could be resolved simply by
            adding the missing attribute to the target.  For comparison,
!           see the '-Wmissing-attributes' option, which controls
            diagnostics when the alias declaration is less restrictive
            than the target, rather than more restrictive.
  
!           Attributes considered include 'alloc_align', 'alloc_size',
!           'cold', 'const', 'hot', 'leaf', 'malloc', 'nonnull',
!           'noreturn', 'nothrow', 'pure', 'returns_nonnull', and
!           'returns_twice'.
  
!      '-Wattribute-alias' is equivalent to '-Wattribute-alias=1'.  This
       is the default.  You can disable these warnings with either
!      '-Wno-attribute-alias' or '-Wattribute-alias=0'.
  
! '-Wbidi-chars=[none|unpaired|any|ucn]'
       Warn about possibly misleading UTF-8 bidirectional control
       characters in comments, string literals, character constants, and
       identifiers.  Such characters can change left-to-right writing
--- 8119,8166 ----
            void g (int[]);     // no warning
            void g (int[8]);    // warning (inconsistent array bound)
  
!      â€˜-Warray-parameter=2â€™ is included in â€˜-Wallâ€™.  The
!      â€˜-Wvla-parameterâ€™ option triggers warnings for similar
       inconsistencies involving Variable Length Array arguments.
  
!      The short form of the option â€˜-Warray-parameterâ€™ is equivalent to
!      â€˜-Warray-parameter=2â€™.  The negative form â€˜-Wno-array-parameterâ€™ is
!      equivalent to â€˜-Warray-parameter=0â€™.
  
! â€˜-Wattribute-alias=Nâ€™
! â€˜-Wno-attribute-aliasâ€™
!      Warn about declarations using the â€˜aliasâ€™ and similar attributes
       whose target is incompatible with the type of the alias.  *Note
       Declaring Attributes of Functions: Function Attributes.
  
!      â€˜-Wattribute-alias=1â€™
!           The default warning level of the â€˜-Wattribute-aliasâ€™ option
            diagnoses incompatibilities between the type of the alias
            declaration and that of its target.  Such incompatibilities
            are typically indicative of bugs.
  
!      â€˜-Wattribute-alias=2â€™
  
!           At this level â€˜-Wattribute-aliasâ€™ also diagnoses cases where
            the attributes of the alias declaration are more restrictive
            than the attributes applied to its target.  These mismatches
            can potentially result in incorrect code generation.  In other
            cases they may be benign and could be resolved simply by
            adding the missing attribute to the target.  For comparison,
!           see the â€˜-Wmissing-attributesâ€™ option, which controls
            diagnostics when the alias declaration is less restrictive
            than the target, rather than more restrictive.
  
!           Attributes considered include â€˜alloc_alignâ€™, â€˜alloc_sizeâ€™,
!           â€˜coldâ€™, â€˜constâ€™, â€˜hotâ€™, â€˜leafâ€™, â€˜mallocâ€™, â€˜nonnullâ€™,
!           â€˜noreturnâ€™, â€˜nothrowâ€™, â€˜pureâ€™, â€˜returns_nonnullâ€™, and
!           â€˜returns_twiceâ€™.
  
!      â€˜-Wattribute-aliasâ€™ is equivalent to â€˜-Wattribute-alias=1â€™.  This
       is the default.  You can disable these warnings with either
!      â€˜-Wno-attribute-aliasâ€™ or â€˜-Wattribute-alias=0â€™.
  
! â€˜-Wbidi-chars=[none|unpaired|any|ucn]â€™
       Warn about possibly misleading UTF-8 bidirectional control
       characters in comments, string literals, character constants, and
       identifiers.  Such characters can change left-to-right writing
*************** cases it may also cause false positives.
*** 8166,8193 ****
       commented out, whereas it in fact is.
  
       There are three levels of warning supported by GCC.  The default is
!      '-Wbidi-chars=unpaired', which warns about improperly terminated
!      bidi contexts.  '-Wbidi-chars=none' turns the warning off.
!      '-Wbidi-chars=any' warns about any use of bidirectional control
       characters.
  
       By default, this warning does not warn about UCNs.  It is, however,
       possible to turn on such checking by using
!      '-Wbidi-chars=unpaired,ucn' or '-Wbidi-chars=any,ucn'.  Using
!      '-Wbidi-chars=ucn' is valid, and is equivalent to
!      '-Wbidi-chars=unpaired,ucn', if no previous '-Wbidi-chars=any' was
       specified.
  
! '-Wbool-compare'
       Warn about boolean expression compared with an integer value
!      different from 'true'/'false'.  For instance, the following
       comparison is always false:
            int n = 5;
            ...
            if ((n > 1) == 2) { ... }
!      This warning is enabled by '-Wall'.
  
! '-Wbool-operation'
       Warn about suspicious operations on expressions of a boolean type.
       For instance, bitwise negation of a boolean is very likely a bug in
       the program.  For C, this warning also warns about incrementing or
--- 8170,8197 ----
       commented out, whereas it in fact is.
  
       There are three levels of warning supported by GCC.  The default is
!      â€˜-Wbidi-chars=unpairedâ€™, which warns about improperly terminated
!      bidi contexts.  â€˜-Wbidi-chars=noneâ€™ turns the warning off.
!      â€˜-Wbidi-chars=anyâ€™ warns about any use of bidirectional control
       characters.
  
       By default, this warning does not warn about UCNs.  It is, however,
       possible to turn on such checking by using
!      â€˜-Wbidi-chars=unpaired,ucnâ€™ or â€˜-Wbidi-chars=any,ucnâ€™.  Using
!      â€˜-Wbidi-chars=ucnâ€™ is valid, and is equivalent to
!      â€˜-Wbidi-chars=unpaired,ucnâ€™, if no previous â€˜-Wbidi-chars=anyâ€™ was
       specified.
  
! â€˜-Wbool-compareâ€™
       Warn about boolean expression compared with an integer value
!      different from â€˜trueâ€™/â€˜falseâ€™.  For instance, the following
       comparison is always false:
            int n = 5;
            ...
            if ((n > 1) == 2) { ... }
!      This warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Wbool-operationâ€™
       Warn about suspicious operations on expressions of a boolean type.
       For instance, bitwise negation of a boolean is very likely a bug in
       the program.  For C, this warning also warns about incrementing or
*************** cases it may also cause false positives.
*** 8195,8203 ****
       decrementing a boolean is always invalid.  Incrementing a boolean
       is invalid in C++17, and deprecated otherwise.)
  
!      This warning is enabled by '-Wall'.
  
! '-Wduplicated-branches'
       Warn when an if-else has identical branches.  This warning detects
       cases like
            if (p != NULL)
--- 8199,8207 ----
       decrementing a boolean is always invalid.  Incrementing a boolean
       is invalid in C++17, and deprecated otherwise.)
  
!      This warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Wduplicated-branchesâ€™
       Warn when an if-else has identical branches.  This warning detects
       cases like
            if (p != NULL)
*************** cases it may also cause false positives.
*** 8208,8275 ****
       This warning also warn for conditional operators:
              int i = x ? *p : *p;
  
! '-Wduplicated-cond'
       Warn about duplicated conditions in an if-else-if chain.  For
       instance, warn for the following code:
            if (p->q != NULL) { ... }
            else if (p->q != NULL) { ... }
  
! '-Wframe-address'
!      Warn when the '__builtin_frame_address' or
!      '__builtin_return_address' is called with an argument greater than
       0.  Such calls may return indeterminate values or crash the
!      program.  The warning is included in '-Wall'.
  
! '-Wno-discarded-qualifiers (C and Objective-C only)'
       Do not warn if type qualifiers on pointers are being discarded.
!      Typically, the compiler warns if a 'const char *' variable is
!      passed to a function that takes a 'char *' parameter.  This option
       can be used to suppress such a warning.
  
! '-Wno-discarded-array-qualifiers (C and Objective-C only)'
       Do not warn if type qualifiers on arrays which are pointer targets
!      are being discarded.  Typically, the compiler warns if a 'const int
!      (*)[]' variable is passed to a function that takes a 'int (*)[]'
       parameter.  This option can be used to suppress such a warning.
  
! '-Wno-incompatible-pointer-types (C and Objective-C only)'
       Do not warn when there is a conversion between pointers that have
       incompatible types.  This warning is for cases not covered by
!      '-Wno-pointer-sign', which warns for pointer argument passing or
       assignment with different signedness.
  
       By default, in C99 and later dialects of C, GCC treats this issue
       as an error.  The error can be downgraded to a warning using
!      '-fpermissive' (along with certain other errors), or for this error
!      alone, with '-Wno-error=incompatible-pointer-types'.
  
!      This warning is upgraded to an error by '-pedantic-errors'.
  
! '-Wno-int-conversion (C and Objective-C only)'
       Do not warn about incompatible integer to pointer and pointer to
       integer conversions.  This warning is about implicit conversions;
!      for explicit conversions the warnings '-Wno-int-to-pointer-cast'
!      and '-Wno-pointer-to-int-cast' may be used.
  
       By default, in C99 and later dialects of C, GCC treats this issue
       as an error.  The error can be downgraded to a warning using
!      '-fpermissive' (along with certain other errors), or for this error
!      alone, with '-Wno-error=int-conversion'.
  
!      This warning is upgraded to an error by '-pedantic-errors'.
  
! '-Wzero-as-null-pointer-constant'
!      Warn when a literal '0' is used as null pointer constant.
  
! '-Wzero-length-bounds'
       Warn about accesses to elements of zero-length array members that
       might overlap other members of the same object.  Declaring interior
       zero-length arrays is discouraged because accesses to them are
       undefined.  *Note Zero Length::.
  
!      For example, the first two stores in function 'bad' are diagnosed
!      because the array elements overlap the subsequent members 'b' and
!      'c'.  The third store is diagnosed by '-Warray-bounds' because it
       is beyond the bounds of the enclosing object.
  
            struct X { int a[0]; int b, c; };
--- 8212,8279 ----
       This warning also warn for conditional operators:
              int i = x ? *p : *p;
  
! â€˜-Wduplicated-condâ€™
       Warn about duplicated conditions in an if-else-if chain.  For
       instance, warn for the following code:
            if (p->q != NULL) { ... }
            else if (p->q != NULL) { ... }
  
! â€˜-Wframe-addressâ€™
!      Warn when the â€˜__builtin_frame_addressâ€™ or
!      â€˜__builtin_return_addressâ€™ is called with an argument greater than
       0.  Such calls may return indeterminate values or crash the
!      program.  The warning is included in â€˜-Wallâ€™.
  
! â€˜-Wno-discarded-qualifiers (C and Objective-C only)â€™
       Do not warn if type qualifiers on pointers are being discarded.
!      Typically, the compiler warns if a â€˜const char *â€™ variable is
!      passed to a function that takes a â€˜char *â€™ parameter.  This option
       can be used to suppress such a warning.
  
! â€˜-Wno-discarded-array-qualifiers (C and Objective-C only)â€™
       Do not warn if type qualifiers on arrays which are pointer targets
!      are being discarded.  Typically, the compiler warns if a â€˜const int
!      (*)[]â€™ variable is passed to a function that takes a â€˜int (*)[]â€™
       parameter.  This option can be used to suppress such a warning.
  
! â€˜-Wno-incompatible-pointer-types (C and Objective-C only)â€™
       Do not warn when there is a conversion between pointers that have
       incompatible types.  This warning is for cases not covered by
!      â€˜-Wno-pointer-signâ€™, which warns for pointer argument passing or
       assignment with different signedness.
  
       By default, in C99 and later dialects of C, GCC treats this issue
       as an error.  The error can be downgraded to a warning using
!      â€˜-fpermissiveâ€™ (along with certain other errors), or for this error
!      alone, with â€˜-Wno-error=incompatible-pointer-typesâ€™.
  
!      This warning is upgraded to an error by â€˜-pedantic-errorsâ€™.
  
! â€˜-Wno-int-conversion (C and Objective-C only)â€™
       Do not warn about incompatible integer to pointer and pointer to
       integer conversions.  This warning is about implicit conversions;
!      for explicit conversions the warnings â€˜-Wno-int-to-pointer-castâ€™
!      and â€˜-Wno-pointer-to-int-castâ€™ may be used.
  
       By default, in C99 and later dialects of C, GCC treats this issue
       as an error.  The error can be downgraded to a warning using
!      â€˜-fpermissiveâ€™ (along with certain other errors), or for this error
!      alone, with â€˜-Wno-error=int-conversionâ€™.
  
!      This warning is upgraded to an error by â€˜-pedantic-errorsâ€™.
  
! â€˜-Wzero-as-null-pointer-constantâ€™
!      Warn when a literal â€˜0â€™ is used as null pointer constant.
  
! â€˜-Wzero-length-boundsâ€™
       Warn about accesses to elements of zero-length array members that
       might overlap other members of the same object.  Declaring interior
       zero-length arrays is discouraged because accesses to them are
       undefined.  *Note Zero Length::.
  
!      For example, the first two stores in function â€˜badâ€™ are diagnosed
!      because the array elements overlap the subsequent members â€˜bâ€™ and
!      â€˜câ€™.  The third store is diagnosed by â€˜-Warray-boundsâ€™ because it
       is beyond the bounds of the enclosing object.
  
            struct X { int a[0]; int b, c; };
*************** cases it may also cause false positives.
*** 8282,8306 ****
              x.a[2] = 2;   // -Warray-bounds
            }
  
!      Option '-Wzero-length-bounds' is enabled by '-Warray-bounds'.
  
! '-Wno-div-by-zero'
       Do not warn about compile-time integer division by zero.
       Floating-point division by zero is not warned about, as it can be a
       legitimate way of obtaining infinities and NaNs.
  
! '-Wsystem-headers'
       Print warning messages for constructs found in system header files.
       Warnings from system headers are normally suppressed, on the
       assumption that they usually do not indicate real problems and
       would only make the compiler output harder to read.  Using this
       command-line option tells GCC to emit warnings from system headers
!      as if they occurred in user code.  However, note that using '-Wall'
       in conjunction with this option does _not_ warn about unknown
!      pragmas in system headers--for that, '-Wunknown-pragmas' must also
       be used.
  
! '-Wtautological-compare'
       Warn if a self-comparison always evaluates to true or false.  This
       warning detects various mistakes such as:
            int i = 1;
--- 8286,8310 ----
              x.a[2] = 2;   // -Warray-bounds
            }
  
!      Option â€˜-Wzero-length-boundsâ€™ is enabled by â€˜-Warray-boundsâ€™.
  
! â€˜-Wno-div-by-zeroâ€™
       Do not warn about compile-time integer division by zero.
       Floating-point division by zero is not warned about, as it can be a
       legitimate way of obtaining infinities and NaNs.
  
! â€˜-Wsystem-headersâ€™
       Print warning messages for constructs found in system header files.
       Warnings from system headers are normally suppressed, on the
       assumption that they usually do not indicate real problems and
       would only make the compiler output harder to read.  Using this
       command-line option tells GCC to emit warnings from system headers
!      as if they occurred in user code.  However, note that using â€˜-Wallâ€™
       in conjunction with this option does _not_ warn about unknown
!      pragmas in system headers--for that, â€˜-Wunknown-pragmasâ€™ must also
       be used.
  
! â€˜-Wtautological-compareâ€™
       Warn if a self-comparison always evaluates to true or false.  This
       warning detects various mistakes such as:
            int i = 1;
*************** cases it may also cause false positives.
*** 8312,8352 ****
            if ((a & 16) == 10) { ... }
       will always be false.
  
!      This warning is enabled by '-Wall'.
  
! '-Wtrailing-whitespace'
! '-Wtrailing-whitespace=KIND'
       Warn about trailing whitespace at the end of lines, including
       inside of comments, but excluding trailing whitespace in raw string
!      literals.  '-Wtrailing-whitespace' is equivalent to
!      '-Wtrailing-whitespace=blanks' and warns just about trailing space
!      and horizontal tab characters.  '-Wtrailing-whitespace=any' warns
       about those or trailing form feed or vertical tab characters.
!      '-Wno-trailing-whitespace' or '-Wtrailing-whitespace=none' disables
       the warning, which is the default.  This is a coding style warning.
  
! '-Wleading-whitespace=KIND'
       Warn about style issues in leading whitespace, but not about the
       amount of indentation.  Some projects use coding styles where only
       spaces are used for indentation, others use only tabs, others use
!      zero or more tabs (for multiples of '-ftabstop=N') followed by zero
       or fewer than N spaces.  No warning is emitted on lines which
!      contain solely whitespace (although '-Wtrailing-whitespace='
       warning might be emitted), no warnings are emitted inside of raw
       string literals.  Warnings are also emitted for leading whitespace
!      inside of multi-line comments.  '-Wleading-whitespace=spaces' warns
       about leading whitespace other than spaces for projects which want
!      to indent just by spaces.  '-Wleading-whitespace=tabs' warns about
       leading whitespace other than horizontal tabs for projects which
       want to indent just by horizontal tabs.
!      '-Wleading-whitespace=blanks' warns about leading whitespace other
       than spaces and horizontal tabs, or about horizontal tab after a
       space in the leading whitespace, or about N or more consecutive
!      spaces in leading whitespace (where N is argument of '-ftabstop=N',
!      8 by default).  '-Wleading-whitespace=none' disables the warning,
       which is the default.  This is a coding style warning.
  
! '-Wtrampolines'
       Warn about trampolines generated for pointers to nested functions.
       A trampoline is a small piece of data or code that is created at
       run time on the stack when the address of a nested function is
--- 8316,8356 ----
            if ((a & 16) == 10) { ... }
       will always be false.
  
!      This warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Wtrailing-whitespaceâ€™
! â€˜-Wtrailing-whitespace=KINDâ€™
       Warn about trailing whitespace at the end of lines, including
       inside of comments, but excluding trailing whitespace in raw string
!      literals.  â€˜-Wtrailing-whitespaceâ€™ is equivalent to
!      â€˜-Wtrailing-whitespace=blanksâ€™ and warns just about trailing space
!      and horizontal tab characters.  â€˜-Wtrailing-whitespace=anyâ€™ warns
       about those or trailing form feed or vertical tab characters.
!      â€˜-Wno-trailing-whitespaceâ€™ or â€˜-Wtrailing-whitespace=noneâ€™ disables
       the warning, which is the default.  This is a coding style warning.
  
! â€˜-Wleading-whitespace=KINDâ€™
       Warn about style issues in leading whitespace, but not about the
       amount of indentation.  Some projects use coding styles where only
       spaces are used for indentation, others use only tabs, others use
!      zero or more tabs (for multiples of â€˜-ftabstop=Nâ€™) followed by zero
       or fewer than N spaces.  No warning is emitted on lines which
!      contain solely whitespace (although â€˜-Wtrailing-whitespace=â€™
       warning might be emitted), no warnings are emitted inside of raw
       string literals.  Warnings are also emitted for leading whitespace
!      inside of multi-line comments.  â€˜-Wleading-whitespace=spacesâ€™ warns
       about leading whitespace other than spaces for projects which want
!      to indent just by spaces.  â€˜-Wleading-whitespace=tabsâ€™ warns about
       leading whitespace other than horizontal tabs for projects which
       want to indent just by horizontal tabs.
!      â€˜-Wleading-whitespace=blanksâ€™ warns about leading whitespace other
       than spaces and horizontal tabs, or about horizontal tab after a
       space in the leading whitespace, or about N or more consecutive
!      spaces in leading whitespace (where N is argument of â€˜-ftabstop=Nâ€™,
!      8 by default).  â€˜-Wleading-whitespace=noneâ€™ disables the warning,
       which is the default.  This is a coding style warning.
  
! â€˜-Wtrampolinesâ€™
       Warn about trampolines generated for pointers to nested functions.
       A trampoline is a small piece of data or code that is created at
       run time on the stack when the address of a nested function is
*************** cases it may also cause false positives.
*** 8356,8362 ****
       and thus requires the stack to be made executable in order for the
       program to work properly.
  
! '-Wfloat-equal'
       Warn if floating-point values are used in equality comparisons.
  
       The idea behind this is that sometimes it is convenient (for the
--- 8360,8366 ----
       and thus requires the stack to be made executable in order for the
       program to work properly.
  
! â€˜-Wfloat-equalâ€™
       Warn if floating-point values are used in equality comparisons.
  
       The idea behind this is that sometimes it is convenient (for the
*************** cases it may also cause false positives.
*** 8371,8454 ****
       relational operators, so equality comparisons are probably
       mistaken.
  
! '-Wtraditional (C and Objective-C only)'
       Warn about certain constructs that behave differently in
       traditional and ISO C.  Also warn about ISO C constructs that have
       no traditional C equivalent, and/or problematic constructs that
       should be avoided.
  
!         * Macro parameters that appear within string literals in the
            macro body.  In traditional C macro replacement takes place
            within string literals, but in ISO C it does not.
  
!         * In traditional C, some preprocessor directives did not exist.
            Traditional preprocessors only considered a line to be a
!           directive if the '#' appeared in column 1 on the line.
!           Therefore '-Wtraditional' warns about directives that
!           traditional C understands but ignores because the '#' does not
            appear as the first character on the line.  It also suggests
!           you hide directives like '#pragma' not understood by
            traditional C by indenting them.  Some traditional
!           implementations do not recognize '#elif', so this option
            suggests avoiding it altogether.
  
!         * A function-like macro that appears without arguments.
  
!         * The unary plus operator.
  
!         * The 'U' integer constant suffix, or the 'F' or 'L'
            floating-point constant suffixes.  (Traditional C does support
!           the 'L' suffix on integer constants.)  Note, these suffixes
            appear in macros defined in the system headers of most modern
!           systems, e.g. the '_MIN'/'_MAX' macros in '<limits.h>'.  Use
            of these macros in user code might normally lead to spurious
            warnings, however GCC's integrated preprocessor has enough
            context to avoid warning in these cases.
  
!         * A function declared external in one block and then used after
            the end of the block.
  
!         * A 'switch' statement has an operand of type 'long'.
  
!         * A non-'static' function declaration follows a 'static' one.
            This construct is not accepted by some traditional C
            compilers.
  
!         * The ISO type of an integer constant has a different width or
            signedness from its traditional type.  This warning is only
            issued if the base of the constant is ten.  I.e. hexadecimal
            or octal values, which typically represent bit patterns, are
            not warned about.
  
!         * Usage of ISO string concatenation is detected.
  
!         * Initialization of automatic aggregates.
  
!         * Identifier conflicts with labels.  Traditional C lacks a
            separate namespace for labels.
  
!         * Initialization of unions.  If the initializer is zero, the
            warning is omitted.  This is done under the assumption that
            the zero initializer in user code appears conditioned on e.g.
!           '__STDC__' to avoid missing initializer warnings and relies on
            default initialization to zero in the traditional C case.
  
!         * Conversions by prototypes between fixed/floating-point values
            and vice versa.  The absence of these prototypes when
            compiling with traditional C causes serious problems.  This is
            a subset of the possible conversion warnings; for the full set
!           use '-Wtraditional-conversion'.
  
!         * Use of ISO C style function definitions.  This warning
            intentionally is _not_ issued for prototype declarations or
            variadic functions because these ISO C features appear in your
            code when using libiberty's traditional C compatibility
!           macros, 'PARAMS' and 'VPARAMS'.  This warning is also bypassed
            for nested functions because that feature is already a GCC
            extension and thus not relevant to traditional C
            compatibility.
  
! '-Wtraditional-conversion (C and Objective-C only)'
       Warn if a prototype causes a type conversion that is different from
       what would happen to the same argument in the absence of a
       prototype.  This includes conversions of fixed point to floating
--- 8375,8458 ----
       relational operators, so equality comparisons are probably
       mistaken.
  
! â€˜-Wtraditional (C and Objective-C only)â€™
       Warn about certain constructs that behave differently in
       traditional and ISO C.  Also warn about ISO C constructs that have
       no traditional C equivalent, and/or problematic constructs that
       should be avoided.
  
!         â€¢ Macro parameters that appear within string literals in the
            macro body.  In traditional C macro replacement takes place
            within string literals, but in ISO C it does not.
  
!         â€¢ In traditional C, some preprocessor directives did not exist.
            Traditional preprocessors only considered a line to be a
!           directive if the â€˜#â€™ appeared in column 1 on the line.
!           Therefore â€˜-Wtraditionalâ€™ warns about directives that
!           traditional C understands but ignores because the â€˜#â€™ does not
            appear as the first character on the line.  It also suggests
!           you hide directives like â€˜#pragmaâ€™ not understood by
            traditional C by indenting them.  Some traditional
!           implementations do not recognize â€˜#elifâ€™, so this option
            suggests avoiding it altogether.
  
!         â€¢ A function-like macro that appears without arguments.
  
!         â€¢ The unary plus operator.
  
!         â€¢ The â€˜Uâ€™ integer constant suffix, or the â€˜Fâ€™ or â€˜Lâ€™
            floating-point constant suffixes.  (Traditional C does support
!           the â€˜Lâ€™ suffix on integer constants.)  Note, these suffixes
            appear in macros defined in the system headers of most modern
!           systems, e.g. the â€˜_MINâ€™/â€˜_MAXâ€™ macros in â€˜<limits.h>â€™.  Use
            of these macros in user code might normally lead to spurious
            warnings, however GCC's integrated preprocessor has enough
            context to avoid warning in these cases.
  
!         â€¢ A function declared external in one block and then used after
            the end of the block.
  
!         â€¢ A â€˜switchâ€™ statement has an operand of type â€˜longâ€™.
  
!         â€¢ A non-â€˜staticâ€™ function declaration follows a â€˜staticâ€™ one.
            This construct is not accepted by some traditional C
            compilers.
  
!         â€¢ The ISO type of an integer constant has a different width or
            signedness from its traditional type.  This warning is only
            issued if the base of the constant is ten.  I.e. hexadecimal
            or octal values, which typically represent bit patterns, are
            not warned about.
  
!         â€¢ Usage of ISO string concatenation is detected.
  
!         â€¢ Initialization of automatic aggregates.
  
!         â€¢ Identifier conflicts with labels.  Traditional C lacks a
            separate namespace for labels.
  
!         â€¢ Initialization of unions.  If the initializer is zero, the
            warning is omitted.  This is done under the assumption that
            the zero initializer in user code appears conditioned on e.g.
!           â€˜__STDC__â€™ to avoid missing initializer warnings and relies on
            default initialization to zero in the traditional C case.
  
!         â€¢ Conversions by prototypes between fixed/floating-point values
            and vice versa.  The absence of these prototypes when
            compiling with traditional C causes serious problems.  This is
            a subset of the possible conversion warnings; for the full set
!           use â€˜-Wtraditional-conversionâ€™.
  
!         â€¢ Use of ISO C style function definitions.  This warning
            intentionally is _not_ issued for prototype declarations or
            variadic functions because these ISO C features appear in your
            code when using libiberty's traditional C compatibility
!           macros, â€˜PARAMSâ€™ and â€˜VPARAMSâ€™.  This warning is also bypassed
            for nested functions because that feature is already a GCC
            extension and thus not relevant to traditional C
            compatibility.
  
! â€˜-Wtraditional-conversion (C and Objective-C only)â€™
       Warn if a prototype causes a type conversion that is different from
       what would happen to the same argument in the absence of a
       prototype.  This includes conversions of fixed point to floating
*************** cases it may also cause false positives.
*** 8456,8470 ****
       a fixed-point argument except when the same as the default
       promotion.
  
! '-Wdeclaration-after-statement (C and Objective-C only)'
       Warn when a declaration is found after a statement in a block.
       This construct, known from C++, was introduced with ISO C99 and is
       by default allowed in GCC.  It is not supported by ISO C90.  *Note
       Mixed Labels and Declarations::.
  
!      This warning is upgraded to an error by '-pedantic-errors'.
  
! '-Wshadow'
       Warn whenever a local variable or type declaration shadows another
       variable, parameter, type, class member (in C++), or instance
       variable (in Objective-C) or whenever a built-in function is
--- 8460,8474 ----
       a fixed-point argument except when the same as the default
       promotion.
  
! â€˜-Wdeclaration-after-statement (C and Objective-C only)â€™
       Warn when a declaration is found after a statement in a block.
       This construct, known from C++, was introduced with ISO C99 and is
       by default allowed in GCC.  It is not supported by ISO C90.  *Note
       Mixed Labels and Declarations::.
  
!      This warning is upgraded to an error by â€˜-pedantic-errorsâ€™.
  
! â€˜-Wshadowâ€™
       Warn whenever a local variable or type declaration shadows another
       variable, parameter, type, class member (in C++), or instance
       variable (in Objective-C) or whenever a built-in function is
*************** cases it may also cause false positives.
*** 8472,8498 ****
       shadows an explicit typedef, but not if it shadows a
       struct/class/enum.  If this warning is enabled, it includes also
       all instances of local shadowing.  This means that
!      '-Wno-shadow=local' and '-Wno-shadow=compatible-local' are ignored
!      when '-Wshadow' is used.  Same as '-Wshadow=global'.
  
! '-Wno-shadow-ivar (Objective-C only)'
       Do not warn whenever a local variable shadows an instance variable
       in an Objective-C method.
  
! '-Wshadow=global'
!      Warn for any shadowing.  Same as '-Wshadow'.
  
! '-Wshadow=local'
       Warn when a local variable shadows another local variable or
       parameter.
  
! '-Wshadow=compatible-local'
       Warn when a local variable shadows another local variable or
       parameter whose type is compatible with that of the shadowing
       variable.  In C++, type compatibility here means the type of the
       shadowing variable can be converted to that of the shadowed
       variable.  The creation of this flag (in addition to
!      '-Wshadow=local') is based on the idea that when a local variable
       shadows another one of incompatible type, it is most likely
       intentional, not a bug or typo, as shown in the following example:
  
--- 8476,8502 ----
       shadows an explicit typedef, but not if it shadows a
       struct/class/enum.  If this warning is enabled, it includes also
       all instances of local shadowing.  This means that
!      â€˜-Wno-shadow=localâ€™ and â€˜-Wno-shadow=compatible-localâ€™ are ignored
!      when â€˜-Wshadowâ€™ is used.  Same as â€˜-Wshadow=globalâ€™.
  
! â€˜-Wno-shadow-ivar (Objective-C only)â€™
       Do not warn whenever a local variable shadows an instance variable
       in an Objective-C method.
  
! â€˜-Wshadow=globalâ€™
!      Warn for any shadowing.  Same as â€˜-Wshadowâ€™.
  
! â€˜-Wshadow=localâ€™
       Warn when a local variable shadows another local variable or
       parameter.
  
! â€˜-Wshadow=compatible-localâ€™
       Warn when a local variable shadows another local variable or
       parameter whose type is compatible with that of the shadowing
       variable.  In C++, type compatibility here means the type of the
       shadowing variable can be converted to that of the shadowed
       variable.  The creation of this flag (in addition to
!      â€˜-Wshadow=localâ€™) is based on the idea that when a local variable
       shadows another one of incompatible type, it is most likely
       intentional, not a bug or typo, as shown in the following example:
  
*************** cases it may also cause false positives.
*** 8505,8561 ****
              ...
            }
  
!      Since the two variable 'i' in the example above have incompatible
!      types, enabling only '-Wshadow=compatible-local' does not emit a
       warning.  Because their types are incompatible, if a programmer
       accidentally uses one in place of the other, type checking is
       expected to catch that and emit an error or warning.  Use of this
!      flag instead of '-Wshadow=local' can possibly reduce the number of
       warnings triggered by intentional shadowing.  Note that this also
!      means that shadowing 'const char *i' by 'char *i' does not emit a
       warning.
  
!      This warning is also enabled by '-Wshadow=local'.
  
! '-Wlarger-than=BYTE-SIZE'
       Warn whenever an object is defined whose size exceeds BYTE-SIZE.
!      '-Wlarger-than=''PTRDIFF_MAX' is enabled by default.  Warnings
       controlled by the option can be disabled either by specifying
!      BYTE-SIZE of 'SIZE_MAX' or more or by '-Wno-larger-than'.
  
!      Also warn for calls to bounded functions such as 'memchr' or
!      'strnlen' that specify a bound greater than the largest possible
!      object, which is 'PTRDIFF_MAX' bytes by default.  These warnings
!      can only be disabled by '-Wno-larger-than'.
  
! '-Wno-larger-than'
!      Disable '-Wlarger-than=' warnings.  The option is equivalent to
!      '-Wlarger-than=''SIZE_MAX' or larger.
  
! '-Wframe-larger-than=BYTE-SIZE'
       Warn if the size of a function frame exceeds BYTE-SIZE.  The
       computation done to determine the stack frame size is approximate
       and not conservative.  The actual requirements may be somewhat
       greater than BYTE-SIZE even if you do not get a warning.  In
!      addition, any space allocated via 'alloca', variable-length arrays,
       or related constructs is not included by the compiler when
       determining whether or not to issue a warning.
!      '-Wframe-larger-than=''PTRDIFF_MAX' is enabled by default.
       Warnings controlled by the option can be disabled either by
!      specifying BYTE-SIZE of 'SIZE_MAX' or more or by
!      '-Wno-frame-larger-than'.
  
! '-Wno-frame-larger-than'
!      Disable '-Wframe-larger-than=' warnings.  The option is equivalent
!      to '-Wframe-larger-than=''SIZE_MAX' or larger.
  
! '-Wfree-nonheap-object'
       Warn when attempting to deallocate an object that was either not
       allocated on the heap, or by using a pointer that was not returned
       from a prior call to the corresponding allocation function.  For
!      example, because the call to 'stpcpy' returns a pointer to the
       terminating nul character and not to the beginning of the object,
!      the call to 'free' below is diagnosed.
  
            void f (char *p)
            {
--- 8509,8565 ----
              ...
            }
  
!      Since the two variable â€˜iâ€™ in the example above have incompatible
!      types, enabling only â€˜-Wshadow=compatible-localâ€™ does not emit a
       warning.  Because their types are incompatible, if a programmer
       accidentally uses one in place of the other, type checking is
       expected to catch that and emit an error or warning.  Use of this
!      flag instead of â€˜-Wshadow=localâ€™ can possibly reduce the number of
       warnings triggered by intentional shadowing.  Note that this also
!      means that shadowing â€˜const char *iâ€™ by â€˜char *iâ€™ does not emit a
       warning.
  
!      This warning is also enabled by â€˜-Wshadow=localâ€™.
  
! â€˜-Wlarger-than=BYTE-SIZEâ€™
       Warn whenever an object is defined whose size exceeds BYTE-SIZE.
!      â€˜-Wlarger-than=â€™â€˜PTRDIFF_MAXâ€™ is enabled by default.  Warnings
       controlled by the option can be disabled either by specifying
!      BYTE-SIZE of â€˜SIZE_MAXâ€™ or more or by â€˜-Wno-larger-thanâ€™.
  
!      Also warn for calls to bounded functions such as â€˜memchrâ€™ or
!      â€˜strnlenâ€™ that specify a bound greater than the largest possible
!      object, which is â€˜PTRDIFF_MAXâ€™ bytes by default.  These warnings
!      can only be disabled by â€˜-Wno-larger-thanâ€™.
  
! â€˜-Wno-larger-thanâ€™
!      Disable â€˜-Wlarger-than=â€™ warnings.  The option is equivalent to
!      â€˜-Wlarger-than=â€™â€˜SIZE_MAXâ€™ or larger.
  
! â€˜-Wframe-larger-than=BYTE-SIZEâ€™
       Warn if the size of a function frame exceeds BYTE-SIZE.  The
       computation done to determine the stack frame size is approximate
       and not conservative.  The actual requirements may be somewhat
       greater than BYTE-SIZE even if you do not get a warning.  In
!      addition, any space allocated via â€˜allocaâ€™, variable-length arrays,
       or related constructs is not included by the compiler when
       determining whether or not to issue a warning.
!      â€˜-Wframe-larger-than=â€™â€˜PTRDIFF_MAXâ€™ is enabled by default.
       Warnings controlled by the option can be disabled either by
!      specifying BYTE-SIZE of â€˜SIZE_MAXâ€™ or more or by
!      â€˜-Wno-frame-larger-thanâ€™.
  
! â€˜-Wno-frame-larger-thanâ€™
!      Disable â€˜-Wframe-larger-than=â€™ warnings.  The option is equivalent
!      to â€˜-Wframe-larger-than=â€™â€˜SIZE_MAXâ€™ or larger.
  
! â€˜-Wfree-nonheap-objectâ€™
       Warn when attempting to deallocate an object that was either not
       allocated on the heap, or by using a pointer that was not returned
       from a prior call to the corresponding allocation function.  For
!      example, because the call to â€˜stpcpyâ€™ returns a pointer to the
       terminating nul character and not to the beginning of the object,
!      the call to â€˜freeâ€™ below is diagnosed.
  
            void f (char *p)
            {
*************** cases it may also cause false positives.
*** 8564,8621 ****
              free (p);   // warning
            }
  
!      '-Wfree-nonheap-object' is included in '-Wall'.
  
! '-Wstack-usage=BYTE-SIZE'
       Warn if the stack usage of a function might exceed BYTE-SIZE.  The
       computation done to determine the stack usage is conservative.  Any
!      space allocated via 'alloca', variable-length arrays, or related
       constructs is included by the compiler when determining whether or
       not to issue a warning.
  
!      The message is in keeping with the output of '-fstack-usage'.
  
!         * If the stack usage is fully static but exceeds the specified
            amount, it's:
  
                   warning: stack usage is 1120 bytes
!         * If the stack usage is (partly) dynamic but bounded, it's:
  
                   warning: stack usage might be 1648 bytes
!         * If the stack usage is (partly) dynamic and not bounded, it's:
  
                   warning: stack usage might be unbounded
  
!      '-Wstack-usage=''PTRDIFF_MAX' is enabled by default.  Warnings
       controlled by the option can be disabled either by specifying
!      BYTE-SIZE of 'SIZE_MAX' or more or by '-Wno-stack-usage'.
  
! '-Wno-stack-usage'
!      Disable '-Wstack-usage=' warnings.  The option is equivalent to
!      '-Wstack-usage=''SIZE_MAX' or larger.
  
! '-Wunsafe-loop-optimizations'
       Warn if the loop cannot be optimized because the compiler cannot
       assume anything on the bounds of the loop indices.  With
!      '-funsafe-loop-optimizations' warn if the compiler makes such
       assumptions.
  
! '-Wno-pedantic-ms-format (MinGW targets only)'
!      When used in combination with '-Wformat' and '-pedantic' without
       GNU extensions, this option disables the warnings about non-ISO
!      'printf' / 'scanf' format width specifiers 'I32', 'I64', and 'I'
       used on Windows targets, which depend on the MS runtime.
  
! '-Wpointer-arith'
       Warn about anything that depends on the "size of" a function type
!      or of 'void'.  GNU C assigns these types a size of 1, for
!      convenience in calculations with 'void *' pointers and pointers to
       functions.  In C++, warn also when an arithmetic operation involves
!      'NULL'.  This warning is also enabled by '-Wpedantic'.
  
!      This warning is upgraded to an error by '-pedantic-errors'.
  
! '-Wno-pointer-compare'
       Do not warn if a pointer is compared with a zero character
       constant.  This usually means that the pointer was meant to be
       dereferenced.  For example:
--- 8568,8625 ----
              free (p);   // warning
            }
  
!      â€˜-Wfree-nonheap-objectâ€™ is included in â€˜-Wallâ€™.
  
! â€˜-Wstack-usage=BYTE-SIZEâ€™
       Warn if the stack usage of a function might exceed BYTE-SIZE.  The
       computation done to determine the stack usage is conservative.  Any
!      space allocated via â€˜allocaâ€™, variable-length arrays, or related
       constructs is included by the compiler when determining whether or
       not to issue a warning.
  
!      The message is in keeping with the output of â€˜-fstack-usageâ€™.
  
!         â€¢ If the stack usage is fully static but exceeds the specified
            amount, it's:
  
                   warning: stack usage is 1120 bytes
!         â€¢ If the stack usage is (partly) dynamic but bounded, it's:
  
                   warning: stack usage might be 1648 bytes
!         â€¢ If the stack usage is (partly) dynamic and not bounded, it's:
  
                   warning: stack usage might be unbounded
  
!      â€˜-Wstack-usage=â€™â€˜PTRDIFF_MAXâ€™ is enabled by default.  Warnings
       controlled by the option can be disabled either by specifying
!      BYTE-SIZE of â€˜SIZE_MAXâ€™ or more or by â€˜-Wno-stack-usageâ€™.
  
! â€˜-Wno-stack-usageâ€™
!      Disable â€˜-Wstack-usage=â€™ warnings.  The option is equivalent to
!      â€˜-Wstack-usage=â€™â€˜SIZE_MAXâ€™ or larger.
  
! â€˜-Wunsafe-loop-optimizationsâ€™
       Warn if the loop cannot be optimized because the compiler cannot
       assume anything on the bounds of the loop indices.  With
!      â€˜-funsafe-loop-optimizationsâ€™ warn if the compiler makes such
       assumptions.
  
! â€˜-Wno-pedantic-ms-format (MinGW targets only)â€™
!      When used in combination with â€˜-Wformatâ€™ and â€˜-pedanticâ€™ without
       GNU extensions, this option disables the warnings about non-ISO
!      â€˜printfâ€™ / â€˜scanfâ€™ format width specifiers â€˜I32â€™, â€˜I64â€™, and â€˜Iâ€™
       used on Windows targets, which depend on the MS runtime.
  
! â€˜-Wpointer-arithâ€™
       Warn about anything that depends on the "size of" a function type
!      or of â€˜voidâ€™.  GNU C assigns these types a size of 1, for
!      convenience in calculations with â€˜void *â€™ pointers and pointers to
       functions.  In C++, warn also when an arithmetic operation involves
!      â€˜NULLâ€™.  This warning is also enabled by â€˜-Wpedanticâ€™.
  
!      This warning is upgraded to an error by â€˜-pedantic-errorsâ€™.
  
! â€˜-Wno-pointer-compareâ€™
       Do not warn if a pointer is compared with a zero character
       constant.  This usually means that the pointer was meant to be
       dereferenced.  For example:
*************** cases it may also cause false positives.
*** 8628,8686 ****
  
       This warning is enabled by default.
  
! '-Wno-tsan'
  
       Disable warnings about unsupported features in ThreadSanitizer.
  
!      ThreadSanitizer does not support 'std::atomic_thread_fence' and can
       report false positives.
  
! '-Wtype-limits'
       Warn if a comparison is always true or always false due to the
       limited range of the data type, but do not warn for constant
       expressions.  For example, warn if an unsigned variable is compared
!      against zero with '<' or '>='.  This warning is also enabled by
!      '-Wextra'.
  
! '-Wabsolute-value (C and Objective-C only)'
       Warn for calls to standard functions that compute the absolute
       value of an argument when a more appropriate standard function is
!      available.  For example, calling 'abs(3.14)' triggers the warning
       because the appropriate function to call to compute the absolute
!      value of a double argument is 'fabs'.  The option also triggers
       warnings when the argument in a call to such a function has an
       unsigned type.  This warning can be suppressed with an explicit
!      type cast and it is also enabled by '-Wextra'.
  
! '-Wcomment'
! '-Wcomments'
!      Warn whenever a comment-start sequence '/*' appears in a '/*'
!      comment, or whenever a backslash-newline appears in a '//' comment.
!      This warning is enabled by '-Wall'.
  
! '-Wtrigraphs'
       Warn if any trigraphs are encountered that might change the meaning
       of the program.  Trigraphs within comments are not warned about,
       except those that would form escaped newlines.
  
!      This option is implied by '-Wall'.  If '-Wall' is not given, this
       option is still enabled unless trigraphs are enabled.  To get
!      trigraph conversion without warnings, but get the other '-Wall'
!      warnings, use '-trigraphs -Wall -Wno-trigraphs'.
  
! '-Wundef'
!      Warn if an undefined identifier is evaluated in an '#if' directive.
       Such identifiers are replaced with zero.
  
! '-Wexpansion-to-defined'
!      Warn whenever 'defined' is encountered in the expansion of a macro
!      (including the case where the macro is expanded by an '#if'
       directive).  Such usage is not portable.  This warning is also
!      enabled by '-Wpedantic' and '-Wextra'.
  
! '-Wunused-macros'
       Warn about macros defined in the main file that are unused.  A
!      macro is "used" if it is expanded or tested for existence at least
       once.  The preprocessor also warns if the macro has not been used
       at the time it is redefined or undefined.
  
--- 8632,8690 ----
  
       This warning is enabled by default.
  
! â€˜-Wno-tsanâ€™
  
       Disable warnings about unsupported features in ThreadSanitizer.
  
!      ThreadSanitizer does not support â€˜std::atomic_thread_fenceâ€™ and can
       report false positives.
  
! â€˜-Wtype-limitsâ€™
       Warn if a comparison is always true or always false due to the
       limited range of the data type, but do not warn for constant
       expressions.  For example, warn if an unsigned variable is compared
!      against zero with â€˜<â€™ or â€˜>=â€™.  This warning is also enabled by
!      â€˜-Wextraâ€™.
  
! â€˜-Wabsolute-value (C and Objective-C only)â€™
       Warn for calls to standard functions that compute the absolute
       value of an argument when a more appropriate standard function is
!      available.  For example, calling â€˜abs(3.14)â€™ triggers the warning
       because the appropriate function to call to compute the absolute
!      value of a double argument is â€˜fabsâ€™.  The option also triggers
       warnings when the argument in a call to such a function has an
       unsigned type.  This warning can be suppressed with an explicit
!      type cast and it is also enabled by â€˜-Wextraâ€™.
  
! â€˜-Wcommentâ€™
! â€˜-Wcommentsâ€™
!      Warn whenever a comment-start sequence â€˜/*â€™ appears in a â€˜/*â€™
!      comment, or whenever a backslash-newline appears in a â€˜//â€™ comment.
!      This warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Wtrigraphsâ€™
       Warn if any trigraphs are encountered that might change the meaning
       of the program.  Trigraphs within comments are not warned about,
       except those that would form escaped newlines.
  
!      This option is implied by â€˜-Wallâ€™.  If â€˜-Wallâ€™ is not given, this
       option is still enabled unless trigraphs are enabled.  To get
!      trigraph conversion without warnings, but get the other â€˜-Wallâ€™
!      warnings, use â€˜-trigraphs -Wall -Wno-trigraphsâ€™.
  
! â€˜-Wundefâ€™
!      Warn if an undefined identifier is evaluated in an â€˜#ifâ€™ directive.
       Such identifiers are replaced with zero.
  
! â€˜-Wexpansion-to-definedâ€™
!      Warn whenever â€˜definedâ€™ is encountered in the expansion of a macro
!      (including the case where the macro is expanded by an â€˜#ifâ€™
       directive).  Such usage is not portable.  This warning is also
!      enabled by â€˜-Wpedanticâ€™ and â€˜-Wextraâ€™.
  
! â€˜-Wunused-macrosâ€™
       Warn about macros defined in the main file that are unused.  A
!      macro is â€œusedâ€� if it is expanded or tested for existence at least
       once.  The preprocessor also warns if the macro has not been used
       at the time it is redefined or undefined.
  
*************** cases it may also cause false positives.
*** 8697,8704 ****
            #if defined the_macro_causing_the_warning
            #endif
  
! '-Wno-endif-labels'
!      Do not warn whenever an '#else' or an '#endif' are followed by
       text.  This sometimes happens in older programs with code of the
       form
  
--- 8701,8708 ----
            #if defined the_macro_causing_the_warning
            #endif
  
! â€˜-Wno-endif-labelsâ€™
!      Do not warn whenever an â€˜#elseâ€™ or an â€˜#endifâ€™ are followed by
       text.  This sometimes happens in older programs with code of the
       form
  
*************** cases it may also cause false positives.
*** 8708,8819 ****
            ...
            #endif FOO
  
!      The second and third 'FOO' should be in comments.  This warning is
       on by default.
  
! '-Wbad-function-cast (C and Objective-C only)'
       Warn when a function call is cast to a non-matching type.  For
       example, warn if a call to a function returning an integer type is
       cast to a pointer type.
  
! '-Wc90-c99-compat (C and Objective-C only)'
       Warn about features not present in ISO C90, but present in ISO C99.
!      For instance, warn about use of variable length arrays, 'long long'
!      type, 'bool' type, compound literals, designated initializers, and
       so on.  This option is independent of the standards mode.  Warnings
!      are disabled in the expression that follows '__extension__'.
  
! '-Wc99-c11-compat (C and Objective-C only)'
       Warn about features not present in ISO C99, but present in ISO C11.
       For instance, warn about use of anonymous structures and unions,
!      '_Atomic' type qualifier, '_Thread_local' storage-class specifier,
!      '_Alignas' specifier, 'Alignof' operator, '_Generic' keyword, and
       so on.  This option is independent of the standards mode.  Warnings
!      are disabled in the expression that follows '__extension__'.
  
! '-Wc11-c23-compat (C and Objective-C only)'
! '-Wc11-c2x-compat (C and Objective-C only)'
       Warn about features not present in ISO C11, but present in ISO C23.
!      For instance, warn about omitting the string in '_Static_assert',
!      use of '[[]]' syntax for attributes, use of decimal floating-point
       types, and so on.  This option is independent of the standards
       mode.  Warnings are disabled in the expression that follows
!      '__extension__'.  The name '-Wc11-c2x-compat' is deprecated.
  
       When not compiling in C23 mode, these warnings are upgraded to
!      errors by '-pedantic-errors'.
  
! '-Wc23-c2y-compat (C and Objective-C only)'
! '-Wc23-c2y-compat (C and Objective-C only)'
       Warn about features not present in ISO C23, but present in ISO C2Y.
!      For instance, warn about '_Generic' selecting with a type name
       instead of an expression.  This option is independent of the
       standards mode.  Warnings are disabled in the expression that
!      follows '__extension__'.
  
       When not compiling in C2Y mode, these warnings are upgraded to
!      errors by '-pedantic-errors'.
  
! '-Wc++-compat (C and Objective-C only)'
       Warn about ISO C constructs that are outside of the common subset
       of ISO C and ISO C++, e.g. request for implicit conversion from
!      'void *' to a pointer to non-'void' type.
  
! '-Wc++11-compat (C++ and Objective-C++ only)'
       Warn about C++ constructs whose meaning differs between ISO C++
       1998 and ISO C++ 2011, e.g., identifiers in ISO C++ 1998 that are
!      keywords in ISO C++ 2011.  This warning turns on '-Wnarrowing' and
!      is enabled by '-Wall'.
  
! '-Wc++14-compat (C++ and Objective-C++ only)'
       Warn about C++ constructs whose meaning differs between ISO C++
!      2011 and ISO C++ 2014.  This warning is enabled by '-Wall'.
  
! '-Wc++17-compat (C++ and Objective-C++ only)'
       Warn about C++ constructs whose meaning differs between ISO C++
!      2014 and ISO C++ 2017.  This warning is enabled by '-Wall'.
  
! '-Wc++20-compat (C++ and Objective-C++ only)'
       Warn about C++ constructs whose meaning differs between ISO C++
!      2017 and ISO C++ 2020.  This warning is enabled by '-Wall'.
  
! '-Wno-c++11-extensions (C++ and Objective-C++ only)'
       Do not warn about C++11 constructs in code being compiled using an
       older C++ standard.  Even without this option, some C++11
!      constructs will only be diagnosed if '-Wpedantic' is used.
  
! '-Wno-c++14-extensions (C++ and Objective-C++ only)'
       Do not warn about C++14 constructs in code being compiled using an
       older C++ standard.  Even without this option, some C++14
!      constructs will only be diagnosed if '-Wpedantic' is used.
  
! '-Wno-c++17-extensions (C++ and Objective-C++ only)'
       Do not warn about C++17 constructs in code being compiled using an
       older C++ standard.  Even without this option, some C++17
!      constructs will only be diagnosed if '-Wpedantic' is used.
  
! '-Wno-c++20-extensions (C++ and Objective-C++ only)'
       Do not warn about C++20 constructs in code being compiled using an
       older C++ standard.  Even without this option, some C++20
!      constructs will only be diagnosed if '-Wpedantic' is used.
  
! '-Wno-c++23-extensions (C++ and Objective-C++ only)'
       Do not warn about C++23 constructs in code being compiled using an
       older C++ standard.  Even without this option, some C++23
!      constructs will only be diagnosed if '-Wpedantic' is used.
  
! '-Wno-c++26-extensions (C++ and Objective-C++ only)'
       Do not warn about C++26 constructs in code being compiled using an
       older C++ standard.  Even without this option, some C++26
!      constructs will only be diagnosed if '-Wpedantic' is used.
  
! '-Wcast-qual'
       Warn whenever a pointer is cast so as to remove a type qualifier
!      from the target type.  For example, warn if a 'const char *' is
!      cast to an ordinary 'char *'.
  
       Also warn when making a cast that introduces a type qualifier in an
!      unsafe way.  For example, casting 'char **' to 'const char **' is
       unsafe, as in this example:
  
              /* p is char ** value.  */
--- 8712,8823 ----
            ...
            #endif FOO
  
!      The second and third â€˜FOOâ€™ should be in comments.  This warning is
       on by default.
  
! â€˜-Wbad-function-cast (C and Objective-C only)â€™
       Warn when a function call is cast to a non-matching type.  For
       example, warn if a call to a function returning an integer type is
       cast to a pointer type.
  
! â€˜-Wc90-c99-compat (C and Objective-C only)â€™
       Warn about features not present in ISO C90, but present in ISO C99.
!      For instance, warn about use of variable length arrays, â€˜long longâ€™
!      type, â€˜boolâ€™ type, compound literals, designated initializers, and
       so on.  This option is independent of the standards mode.  Warnings
!      are disabled in the expression that follows â€˜__extension__â€™.
  
! â€˜-Wc99-c11-compat (C and Objective-C only)â€™
       Warn about features not present in ISO C99, but present in ISO C11.
       For instance, warn about use of anonymous structures and unions,
!      â€˜_Atomicâ€™ type qualifier, â€˜_Thread_localâ€™ storage-class specifier,
!      â€˜_Alignasâ€™ specifier, â€˜Alignofâ€™ operator, â€˜_Genericâ€™ keyword, and
       so on.  This option is independent of the standards mode.  Warnings
!      are disabled in the expression that follows â€˜__extension__â€™.
  
! â€˜-Wc11-c23-compat (C and Objective-C only)â€™
! â€˜-Wc11-c2x-compat (C and Objective-C only)â€™
       Warn about features not present in ISO C11, but present in ISO C23.
!      For instance, warn about omitting the string in â€˜_Static_assertâ€™,
!      use of â€˜[[]]â€™ syntax for attributes, use of decimal floating-point
       types, and so on.  This option is independent of the standards
       mode.  Warnings are disabled in the expression that follows
!      â€˜__extension__â€™.  The name â€˜-Wc11-c2x-compatâ€™ is deprecated.
  
       When not compiling in C23 mode, these warnings are upgraded to
!      errors by â€˜-pedantic-errorsâ€™.
  
! â€˜-Wc23-c2y-compat (C and Objective-C only)â€™
! â€˜-Wc23-c2y-compat (C and Objective-C only)â€™
       Warn about features not present in ISO C23, but present in ISO C2Y.
!      For instance, warn about â€˜_Genericâ€™ selecting with a type name
       instead of an expression.  This option is independent of the
       standards mode.  Warnings are disabled in the expression that
!      follows â€˜__extension__â€™.
  
       When not compiling in C2Y mode, these warnings are upgraded to
!      errors by â€˜-pedantic-errorsâ€™.
  
! â€˜-Wc++-compat (C and Objective-C only)â€™
       Warn about ISO C constructs that are outside of the common subset
       of ISO C and ISO C++, e.g. request for implicit conversion from
!      â€˜void *â€™ to a pointer to non-â€˜voidâ€™ type.
  
! â€˜-Wc++11-compat (C++ and Objective-C++ only)â€™
       Warn about C++ constructs whose meaning differs between ISO C++
       1998 and ISO C++ 2011, e.g., identifiers in ISO C++ 1998 that are
!      keywords in ISO C++ 2011.  This warning turns on â€˜-Wnarrowingâ€™ and
!      is enabled by â€˜-Wallâ€™.
  
! â€˜-Wc++14-compat (C++ and Objective-C++ only)â€™
       Warn about C++ constructs whose meaning differs between ISO C++
!      2011 and ISO C++ 2014.  This warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Wc++17-compat (C++ and Objective-C++ only)â€™
       Warn about C++ constructs whose meaning differs between ISO C++
!      2014 and ISO C++ 2017.  This warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Wc++20-compat (C++ and Objective-C++ only)â€™
       Warn about C++ constructs whose meaning differs between ISO C++
!      2017 and ISO C++ 2020.  This warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Wno-c++11-extensions (C++ and Objective-C++ only)â€™
       Do not warn about C++11 constructs in code being compiled using an
       older C++ standard.  Even without this option, some C++11
!      constructs will only be diagnosed if â€˜-Wpedanticâ€™ is used.
  
! â€˜-Wno-c++14-extensions (C++ and Objective-C++ only)â€™
       Do not warn about C++14 constructs in code being compiled using an
       older C++ standard.  Even without this option, some C++14
!      constructs will only be diagnosed if â€˜-Wpedanticâ€™ is used.
  
! â€˜-Wno-c++17-extensions (C++ and Objective-C++ only)â€™
       Do not warn about C++17 constructs in code being compiled using an
       older C++ standard.  Even without this option, some C++17
!      constructs will only be diagnosed if â€˜-Wpedanticâ€™ is used.
  
! â€˜-Wno-c++20-extensions (C++ and Objective-C++ only)â€™
       Do not warn about C++20 constructs in code being compiled using an
       older C++ standard.  Even without this option, some C++20
!      constructs will only be diagnosed if â€˜-Wpedanticâ€™ is used.
  
! â€˜-Wno-c++23-extensions (C++ and Objective-C++ only)â€™
       Do not warn about C++23 constructs in code being compiled using an
       older C++ standard.  Even without this option, some C++23
!      constructs will only be diagnosed if â€˜-Wpedanticâ€™ is used.
  
! â€˜-Wno-c++26-extensions (C++ and Objective-C++ only)â€™
       Do not warn about C++26 constructs in code being compiled using an
       older C++ standard.  Even without this option, some C++26
!      constructs will only be diagnosed if â€˜-Wpedanticâ€™ is used.
  
! â€˜-Wcast-qualâ€™
       Warn whenever a pointer is cast so as to remove a type qualifier
!      from the target type.  For example, warn if a â€˜const char *â€™ is
!      cast to an ordinary â€˜char *â€™.
  
       Also warn when making a cast that introduces a type qualifier in an
!      unsafe way.  For example, casting â€˜char **â€™ to â€˜const char **â€™ is
       unsafe, as in this example:
  
              /* p is char ** value.  */
*************** cases it may also cause false positives.
*** 8823,8853 ****
              /* Now char** pointer points to read-only memory.  */
              **p = 'b';
  
! '-Wcast-align'
       Warn whenever a pointer is cast such that the required alignment of
!      the target is increased.  For example, warn if a 'char *' is cast
!      to an 'int *' on machines where integers can only be accessed at
       two- or four-byte boundaries.
  
! '-Wcast-align=strict'
       Warn whenever a pointer is cast such that the required alignment of
!      the target is increased.  For example, warn if a 'char *' is cast
!      to an 'int *' regardless of the target machine.
  
! '-Wcast-function-type'
       Warn when a function pointer is cast to an incompatible function
       pointer.  In a cast involving function types with a variable
       argument list only the types of initial arguments that are provided
       are considered.  Any parameter of pointer-type matches any other
       pointer-type.  Any benign differences in integral types are
!      ignored, like 'int' vs. 'long' on ILP32 targets.  Likewise type
!      qualifiers are ignored.  The function type 'void (*) (void)' is
       special and matches everything, which can be used to suppress this
       warning.  In a cast involving pointer to member types this warning
       warns whenever the type cast is changing the pointer to member
!      type.  This warning is enabled by '-Wextra'.
  
! '-Wcast-user-defined'
       Warn when a cast to reference type does not involve a user-defined
       conversion that the programmer might expect to be called.
  
--- 8827,8857 ----
              /* Now char** pointer points to read-only memory.  */
              **p = 'b';
  
! â€˜-Wcast-alignâ€™
       Warn whenever a pointer is cast such that the required alignment of
!      the target is increased.  For example, warn if a â€˜char *â€™ is cast
!      to an â€˜int *â€™ on machines where integers can only be accessed at
       two- or four-byte boundaries.
  
! â€˜-Wcast-align=strictâ€™
       Warn whenever a pointer is cast such that the required alignment of
!      the target is increased.  For example, warn if a â€˜char *â€™ is cast
!      to an â€˜int *â€™ regardless of the target machine.
  
! â€˜-Wcast-function-typeâ€™
       Warn when a function pointer is cast to an incompatible function
       pointer.  In a cast involving function types with a variable
       argument list only the types of initial arguments that are provided
       are considered.  Any parameter of pointer-type matches any other
       pointer-type.  Any benign differences in integral types are
!      ignored, like â€˜intâ€™ vs. â€˜longâ€™ on ILP32 targets.  Likewise type
!      qualifiers are ignored.  The function type â€˜void (*) (void)â€™ is
       special and matches everything, which can be used to suppress this
       warning.  In a cast involving pointer to member types this warning
       warns whenever the type cast is changing the pointer to member
!      type.  This warning is enabled by â€˜-Wextraâ€™.
  
! â€˜-Wcast-user-definedâ€™
       Warn when a cast to reference type does not involve a user-defined
       conversion that the programmer might expect to be called.
  
*************** cases it may also cause false positives.
*** 8856,8924 ****
  
       This warning is enabled by default.
  
! '-Wwrite-strings'
!      When compiling C, give string constants the type 'const
!      char[LENGTH]' so that copying the address of one into a non-'const'
!      'char *' pointer produces a warning.  These warnings help you find
       at compile time code that can try to write into a string constant,
!      but only if you have been very careful about using 'const' in
       declarations and prototypes.  Otherwise, it is just a nuisance.
!      This is why we did not make '-Wall' request these warnings.
  
       When compiling C++, warn about the deprecated conversion from
!      string literals to 'char *'.  This warning is enabled by default
       for C++ programs.
  
!      This warning is upgraded to an error by '-pedantic-errors' in C++11
       mode or later.
  
! '-Wclobbered'
!      Warn for variables that might be changed by 'longjmp' or 'vfork'.
!      This warning is also enabled by '-Wextra'.
  
! '-Wno-complain-wrong-lang'
       By default, language front ends complain when a command-line option
       is valid, but not applicable to that front end.  This may be
!      disabled with '-Wno-complain-wrong-lang', which is mostly useful
       when invoking a single compiler driver for multiple source files
       written in different languages, for example:
  
            $ g++ -fno-rtti a.cc b.f90
  
!      The driver 'g++' invokes the C++ front end to compile 'a.cc' and
!      the Fortran front end to compile 'b.f90'.  The latter front end
!      diagnoses 'f951: Warning: command-line option '-fno-rtti' is valid
!      for C++/D/ObjC++ but not for Fortran', which may be disabled with
!      '-Wno-complain-wrong-lang'.
  
! '-Wcompare-distinct-pointer-types (C and Objective-C only)'
       Warn if pointers of distinct types are compared without a cast.
       This warning is enabled by default.
  
! '-Wconversion'
       Warn for implicit conversions that may alter a value.  This
!      includes conversions between real and integer, like 'abs (x)' when
!      'x' is 'double'; conversions between signed and unsigned, like
!      'unsigned ui = -1'; and conversions to smaller types, like 'sqrtf
!      (M_PI)'.  Do not warn for explicit casts like 'abs ((int) x)' and
!      'ui = (unsigned) -1', or if the value is not changed by the
!      conversion like in 'abs (2.0)'.  Warnings about conversions between
       signed and unsigned integers can be disabled by using
!      '-Wno-sign-conversion'.
  
       For C++, also warn for confusing overload resolution for
       user-defined conversions; and conversions that never use a type
!      conversion operator: conversions to 'void', the same type, a base
       class or a reference to them.  Warnings about conversions between
       signed and unsigned integers are disabled by default in C++ unless
!      '-Wsign-conversion' is explicitly enabled.
  
       Warnings about conversion from arithmetic on a small type back to
!      that type are only given with '-Warith-conversion'.
  
! '-Wdangling-else'
!      Warn about constructions where there may be confusion to which 'if'
!      statement an 'else' branch belongs.  Here is an example of such a
       case:
  
            {
--- 8860,8928 ----
  
       This warning is enabled by default.
  
! â€˜-Wwrite-stringsâ€™
!      When compiling C, give string constants the type â€˜const
!      char[LENGTH]â€™ so that copying the address of one into a non-â€˜constâ€™
!      â€˜char *â€™ pointer produces a warning.  These warnings help you find
       at compile time code that can try to write into a string constant,
!      but only if you have been very careful about using â€˜constâ€™ in
       declarations and prototypes.  Otherwise, it is just a nuisance.
!      This is why we did not make â€˜-Wallâ€™ request these warnings.
  
       When compiling C++, warn about the deprecated conversion from
!      string literals to â€˜char *â€™.  This warning is enabled by default
       for C++ programs.
  
!      This warning is upgraded to an error by â€˜-pedantic-errorsâ€™ in C++11
       mode or later.
  
! â€˜-Wclobberedâ€™
!      Warn for variables that might be changed by â€˜longjmpâ€™ or â€˜vforkâ€™.
!      This warning is also enabled by â€˜-Wextraâ€™.
  
! â€˜-Wno-complain-wrong-langâ€™
       By default, language front ends complain when a command-line option
       is valid, but not applicable to that front end.  This may be
!      disabled with â€˜-Wno-complain-wrong-langâ€™, which is mostly useful
       when invoking a single compiler driver for multiple source files
       written in different languages, for example:
  
            $ g++ -fno-rtti a.cc b.f90
  
!      The driver â€˜g++â€™ invokes the C++ front end to compile â€˜a.ccâ€™ and
!      the Fortran front end to compile â€˜b.f90â€™.  The latter front end
!      diagnoses â€˜f951: Warning: command-line option '-fno-rtti' is valid
!      for C++/D/ObjC++ but not for Fortranâ€™, which may be disabled with
!      â€˜-Wno-complain-wrong-langâ€™.
  
! â€˜-Wcompare-distinct-pointer-types (C and Objective-C only)â€™
       Warn if pointers of distinct types are compared without a cast.
       This warning is enabled by default.
  
! â€˜-Wconversionâ€™
       Warn for implicit conversions that may alter a value.  This
!      includes conversions between real and integer, like â€˜abs (x)â€™ when
!      â€˜xâ€™ is â€˜doubleâ€™; conversions between signed and unsigned, like
!      â€˜unsigned ui = -1â€™; and conversions to smaller types, like â€˜sqrtf
!      (M_PI)â€™.  Do not warn for explicit casts like â€˜abs ((int) x)â€™ and
!      â€˜ui = (unsigned) -1â€™, or if the value is not changed by the
!      conversion like in â€˜abs (2.0)â€™.  Warnings about conversions between
       signed and unsigned integers can be disabled by using
!      â€˜-Wno-sign-conversionâ€™.
  
       For C++, also warn for confusing overload resolution for
       user-defined conversions; and conversions that never use a type
!      conversion operator: conversions to â€˜voidâ€™, the same type, a base
       class or a reference to them.  Warnings about conversions between
       signed and unsigned integers are disabled by default in C++ unless
!      â€˜-Wsign-conversionâ€™ is explicitly enabled.
  
       Warnings about conversion from arithmetic on a small type back to
!      that type are only given with â€˜-Warith-conversionâ€™.
  
! â€˜-Wdangling-elseâ€™
!      Warn about constructions where there may be confusion to which â€˜ifâ€™
!      statement an â€˜elseâ€™ branch belongs.  Here is an example of such a
       case:
  
            {
*************** cases it may also cause false positives.
*** 8929,8942 ****
                bar ();
            }
  
!      In C/C++, every 'else' branch belongs to the innermost possible
!      'if' statement, which in this example is 'if (b)'.  This is often
       not what the programmer expected, as illustrated in the above
       example by indentation the programmer chose.  When there is the
       potential for this confusion, GCC issues a warning when this flag
       is specified.  To eliminate the warning, add explicit braces around
!      the innermost 'if' statement so there is no way the 'else' can
!      belong to the enclosing 'if'.  The resulting code looks like this:
  
            {
              if (a)
--- 8933,8946 ----
                bar ();
            }
  
!      In C/C++, every â€˜elseâ€™ branch belongs to the innermost possible
!      â€˜ifâ€™ statement, which in this example is â€˜if (b)â€™.  This is often
       not what the programmer expected, as illustrated in the above
       example by indentation the programmer chose.  When there is the
       potential for this confusion, GCC issues a warning when this flag
       is specified.  To eliminate the warning, add explicit braces around
!      the innermost â€˜ifâ€™ statement so there is no way the â€˜elseâ€™ can
!      belong to the enclosing â€˜ifâ€™.  The resulting code looks like this:
  
            {
              if (a)
*************** cases it may also cause false positives.
*** 8948,8957 ****
                }
            }
  
!      This warning is enabled by '-Wparentheses'.
  
! '-Wdangling-pointer'
! '-Wdangling-pointer=N'
       Warn about uses of pointers (or C++ references) to objects with
       automatic storage duration after their lifetime has ended.  This
       includes local variables declared in nested blocks, compound
--- 8952,8961 ----
                }
            }
  
!      This warning is enabled by â€˜-Wparenthesesâ€™.
  
! â€˜-Wdangling-pointerâ€™
! â€˜-Wdangling-pointer=Nâ€™
       Warn about uses of pointers (or C++ references) to objects with
       automatic storage duration after their lifetime has ended.  This
       includes local variables declared in nested blocks, compound
*************** cases it may also cause false positives.
*** 8960,8977 ****
       warning is enabled at all optimization levels but may yield
       different results with optimization than without.
  
!      '-Wdangling-pointer=1'
            At level 1, the warning diagnoses only unconditional uses of
            dangling pointers.
  
!      '-Wdangling-pointer=2'
            At level 2, in addition to unconditional uses the warning also
            diagnoses conditional uses of dangling pointers.
  
!      The short form '-Wdangling-pointer' is equivalent to
!      '-Wdangling-pointer=2', while '-Wno-dangling-pointer' and
!      '-Wdangling-pointer=0' have the same effect of disabling the
!      warnings.  '-Wdangling-pointer=2' is included in '-Wall'.
  
       This example triggers the warning at level 1; the address of the
       unnamed temporary is unconditionally referenced outside of its
--- 8964,8981 ----
       warning is enabled at all optimization levels but may yield
       different results with optimization than without.
  
!      â€˜-Wdangling-pointer=1â€™
            At level 1, the warning diagnoses only unconditional uses of
            dangling pointers.
  
!      â€˜-Wdangling-pointer=2â€™
            At level 2, in addition to unconditional uses the warning also
            diagnoses conditional uses of dangling pointers.
  
!      The short form â€˜-Wdangling-pointerâ€™ is equivalent to
!      â€˜-Wdangling-pointer=2â€™, while â€˜-Wno-dangling-pointerâ€™ and
!      â€˜-Wdangling-pointer=0â€™ have the same effect of disabling the
!      warnings.  â€˜-Wdangling-pointer=2â€™ is included in â€˜-Wallâ€™.
  
       This example triggers the warning at level 1; the address of the
       unnamed temporary is unconditionally referenced outside of its
*************** cases it may also cause false positives.
*** 8988,8994 ****
            }
  
       In the following function the store of the address of the local
!      variable 'x' in the escaped pointer '*p' triggers the warning at
       level 1.
  
            void g (int **p)
--- 8992,8998 ----
            }
  
       In the following function the store of the address of the local
!      variable â€˜xâ€™ in the escaped pointer â€˜*pâ€™ triggers the warning at
       level 1.
  
            void g (int **p)
*************** cases it may also cause false positives.
*** 8999,9005 ****
            }
  
       In this example, the array A is out of scope when the pointer S is
!      used.  Since the code that sets 's' is conditional, the warning
       triggers at level 2.
  
            extern void frob (const char *);
--- 9003,9009 ----
            }
  
       In this example, the array A is out of scope when the pointer S is
!      used.  Since the code that sets â€˜sâ€™ is conditional, the warning
       triggers at level 2.
  
            extern void frob (const char *);
*************** cases it may also cause false positives.
*** 9014,9043 ****
              frob (s);
            }
  
! '-Wdate-time'
!      Warn when macros '__TIME__', '__DATE__' or '__TIMESTAMP__' are
       encountered as they might prevent bit-wise-identical reproducible
       compilations.
  
! '-Wempty-body'
!      Warn if an empty body occurs in an 'if', 'else' or 'do while'
!      statement.  This warning is also enabled by '-Wextra'.
  
! '-Wno-endif-labels'
!      Do not warn about stray tokens after '#else' and '#endif'.
  
! '-Wenum-compare'
       Warn about a comparison between values of different enumerated
       types.  In C++ enumerated type mismatches in conditional
       expressions are also diagnosed and the warning is enabled by
!      default.  In C this warning is enabled by '-Wall'.
  
! '-Wenum-conversion'
       Warn when a value of enumerated type is implicitly converted to a
!      different enumerated type.  This warning is enabled by '-Wextra' in
       C.
  
! '-Wenum-int-mismatch (C and Objective-C only)'
       Warn about mismatches between an enumerated type and an integer
       type in declarations.  For example:
  
--- 9018,9047 ----
              frob (s);
            }
  
! â€˜-Wdate-timeâ€™
!      Warn when macros â€˜__TIME__â€™, â€˜__DATE__â€™ or â€˜__TIMESTAMP__â€™ are
       encountered as they might prevent bit-wise-identical reproducible
       compilations.
  
! â€˜-Wempty-bodyâ€™
!      Warn if an empty body occurs in an â€˜ifâ€™, â€˜elseâ€™ or â€˜do whileâ€™
!      statement.  This warning is also enabled by â€˜-Wextraâ€™.
  
! â€˜-Wno-endif-labelsâ€™
!      Do not warn about stray tokens after â€˜#elseâ€™ and â€˜#endifâ€™.
  
! â€˜-Wenum-compareâ€™
       Warn about a comparison between values of different enumerated
       types.  In C++ enumerated type mismatches in conditional
       expressions are also diagnosed and the warning is enabled by
!      default.  In C this warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Wenum-conversionâ€™
       Warn when a value of enumerated type is implicitly converted to a
!      different enumerated type.  This warning is enabled by â€˜-Wextraâ€™ in
       C.
  
! â€˜-Wenum-int-mismatch (C and Objective-C only)â€™
       Warn about mismatches between an enumerated type and an integer
       type in declarations.  For example:
  
*************** cases it may also cause false positives.
*** 9045,9081 ****
            int foo(void);
            enum E foo(void);
  
!      In C, an enumerated type is compatible with 'char', a signed
       integer type, or an unsigned integer type.  However, since the
       choice of the underlying type of an enumerated type is
       implementation-defined, such mismatches may cause portability
       issues.  In C++, such mismatches are an error.  In C, this warning
!      is enabled by '-Wall' and '-Wc++-compat'.
  
! '-Wjump-misses-init (C, Objective-C only)'
!      Warn if a 'goto' statement or a 'switch' statement jumps forward
       across the initialization of a variable, or jumps backward to a
       label after the variable has been initialized.  This only warns
       about variables that are initialized when they are declared.  This
       warning is only supported for C and Objective-C; in C++ this sort
       of branch is an error in any case.
  
!      '-Wjump-misses-init' is included in '-Wc++-compat'.  It can be
!      disabled with the '-Wno-jump-misses-init' option.
  
! '-Wsign-compare'
       Warn when a comparison between signed and unsigned values could
       produce an incorrect result when the signed value is converted to
!      unsigned.  In C++, this warning is also enabled by '-Wall'.  In C,
!      it is also enabled by '-Wextra'.
  
! '-Wsign-conversion'
       Warn for implicit conversions that may change the sign of an
       integer value, like assigning a signed integer expression to an
       unsigned integer variable.  An explicit cast silences the warning.
!      In C, this option is enabled also by '-Wconversion'.
  
! '-Wflex-array-member-not-at-end (C and C++ only)'
       Warn when a structure containing a C99 flexible array member as the
       last field is not at the end of another structure.  This warning
       warns e.g.  about
--- 9049,9085 ----
            int foo(void);
            enum E foo(void);
  
!      In C, an enumerated type is compatible with â€˜charâ€™, a signed
       integer type, or an unsigned integer type.  However, since the
       choice of the underlying type of an enumerated type is
       implementation-defined, such mismatches may cause portability
       issues.  In C++, such mismatches are an error.  In C, this warning
!      is enabled by â€˜-Wallâ€™ and â€˜-Wc++-compatâ€™.
  
! â€˜-Wjump-misses-init (C, Objective-C only)â€™
!      Warn if a â€˜gotoâ€™ statement or a â€˜switchâ€™ statement jumps forward
       across the initialization of a variable, or jumps backward to a
       label after the variable has been initialized.  This only warns
       about variables that are initialized when they are declared.  This
       warning is only supported for C and Objective-C; in C++ this sort
       of branch is an error in any case.
  
!      â€˜-Wjump-misses-initâ€™ is included in â€˜-Wc++-compatâ€™.  It can be
!      disabled with the â€˜-Wno-jump-misses-initâ€™ option.
  
! â€˜-Wsign-compareâ€™
       Warn when a comparison between signed and unsigned values could
       produce an incorrect result when the signed value is converted to
!      unsigned.  In C++, this warning is also enabled by â€˜-Wallâ€™.  In C,
!      it is also enabled by â€˜-Wextraâ€™.
  
! â€˜-Wsign-conversionâ€™
       Warn for implicit conversions that may change the sign of an
       integer value, like assigning a signed integer expression to an
       unsigned integer variable.  An explicit cast silences the warning.
!      In C, this option is enabled also by â€˜-Wconversionâ€™.
  
! â€˜-Wflex-array-member-not-at-end (C and C++ only)â€™
       Warn when a structure containing a C99 flexible array member as the
       last field is not at the end of another structure.  This warning
       warns e.g.  about
*************** cases it may also cause false positives.
*** 9083,9099 ****
            struct flex  { int length; char data[]; };
            struct mid_flex { int m; struct flex flex_data; int n; };
  
! '-Wfloat-conversion'
       Warn for implicit conversions that reduce the precision of a real
       value.  This includes conversions from real to integer, and from
       higher precision real to lower precision real values.  This option
!      is also enabled by '-Wconversion'.
  
! '-Wno-scalar-storage-order'
       Do not warn on suspicious constructs involving reverse scalar
       storage order.
  
! '-Wsizeof-array-div'
       Warn about divisions of two sizeof operators when the first one is
       applied to an array and the divisor does not equal the size of the
       array element.  In such a case, the computation will not yield the
--- 9087,9103 ----
            struct flex  { int length; char data[]; };
            struct mid_flex { int m; struct flex flex_data; int n; };
  
! â€˜-Wfloat-conversionâ€™
       Warn for implicit conversions that reduce the precision of a real
       value.  This includes conversions from real to integer, and from
       higher precision real to lower precision real values.  This option
!      is also enabled by â€˜-Wconversionâ€™.
  
! â€˜-Wno-scalar-storage-orderâ€™
       Do not warn on suspicious constructs involving reverse scalar
       storage order.
  
! â€˜-Wsizeof-array-divâ€™
       Warn about divisions of two sizeof operators when the first one is
       applied to an array and the divisor does not equal the size of the
       array element.  In such a case, the computation will not yield the
*************** cases it may also cause false positives.
*** 9105,9130 ****
              return sizeof (arr) / sizeof (short);
            }
  
!      This warning is enabled by '-Wall'.
  
! '-Wsizeof-pointer-div'
       Warn for suspicious divisions of two sizeof expressions that divide
       the pointer size by the element size, which is the usual way to
       compute the array size but won't work out correctly with pointers.
!      This warning warns e.g. about 'sizeof (ptr) / sizeof (ptr[0])' if
!      'ptr' is not an array, but a pointer.  This warning is enabled by
!      '-Wall'.
  
! '-Wsizeof-pointer-memaccess'
       Warn for suspicious length parameters to certain string and memory
!      built-in functions if the argument uses 'sizeof'.  This warning
!      triggers for example for 'memset (ptr, 0, sizeof (ptr));' if 'ptr'
       is not an array, but a pointer, and suggests a possible fix, or
!      about 'memcpy (&foo, ptr, sizeof (&foo));'.
!      '-Wsizeof-pointer-memaccess' also warns about calls to bounded
!      string copy functions like 'strncat' or 'strncpy' that specify as
!      the bound a 'sizeof' expression of the source array.  For example,
!      in the following function the call to 'strncat' specifies the size
       of the source string as the bound.  That is almost certainly a
       mistake and so the call is diagnosed.
            void make_file (const char *name)
--- 9109,9134 ----
              return sizeof (arr) / sizeof (short);
            }
  
!      This warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Wsizeof-pointer-divâ€™
       Warn for suspicious divisions of two sizeof expressions that divide
       the pointer size by the element size, which is the usual way to
       compute the array size but won't work out correctly with pointers.
!      This warning warns e.g. about â€˜sizeof (ptr) / sizeof (ptr[0])â€™ if
!      â€˜ptrâ€™ is not an array, but a pointer.  This warning is enabled by
!      â€˜-Wallâ€™.
  
! â€˜-Wsizeof-pointer-memaccessâ€™
       Warn for suspicious length parameters to certain string and memory
!      built-in functions if the argument uses â€˜sizeofâ€™.  This warning
!      triggers for example for â€˜memset (ptr, 0, sizeof (ptr));â€™ if â€˜ptrâ€™
       is not an array, but a pointer, and suggests a possible fix, or
!      about â€˜memcpy (&foo, ptr, sizeof (&foo));â€™.
!      â€˜-Wsizeof-pointer-memaccessâ€™ also warns about calls to bounded
!      string copy functions like â€˜strncatâ€™ or â€˜strncpyâ€™ that specify as
!      the bound a â€˜sizeofâ€™ expression of the source array.  For example,
!      in the following function the call to â€˜strncatâ€™ specifies the size
       of the source string as the bound.  That is almost certainly a
       mistake and so the call is diagnosed.
            void make_file (const char *name)
*************** cases it may also cause false positives.
*** 9135,9167 ****
              ...
            }
  
!      The '-Wsizeof-pointer-memaccess' option is enabled by '-Wall'.
  
! '-Wno-sizeof-array-argument'
!      Do not warn when the 'sizeof' operator is applied to a parameter
       that is declared as an array in a function definition.  This
       warning is enabled by default for C and C++ programs.
  
! '-Wmemset-elt-size'
!      Warn for suspicious calls to the 'memset' built-in function, if the
       first argument references an array, and the third argument is a
       number equal to the number of elements, but not equal to the size
       of the array in memory.  This indicates that the user has omitted a
       multiplication by the element size.  This warning is enabled by
!      '-Wall'.
  
! '-Wmemset-transposed-args'
!      Warn for suspicious calls to the 'memset' built-in function where
       the second argument is not zero and the third argument is zero.
!      For example, the call 'memset (buf, sizeof buf, 0)' is diagnosed
!      because 'memset (buf, 0, sizeof buf)' was meant instead.  The
       diagnostic is only emitted if the third argument is a literal zero.
       Otherwise, if it is an expression that is folded to zero, or a cast
       of zero to some type, it is far less likely that the arguments have
       been mistakenly transposed and no warning is emitted.  This warning
!      is enabled by '-Wall'.
  
! '-Waddress'
       Warn about suspicious uses of address expressions.  These include
       comparing the address of a function or a declared object to the
       null pointer constant such as in
--- 9139,9171 ----
              ...
            }
  
!      The â€˜-Wsizeof-pointer-memaccessâ€™ option is enabled by â€˜-Wallâ€™.
  
! â€˜-Wno-sizeof-array-argumentâ€™
!      Do not warn when the â€˜sizeofâ€™ operator is applied to a parameter
       that is declared as an array in a function definition.  This
       warning is enabled by default for C and C++ programs.
  
! â€˜-Wmemset-elt-sizeâ€™
!      Warn for suspicious calls to the â€˜memsetâ€™ built-in function, if the
       first argument references an array, and the third argument is a
       number equal to the number of elements, but not equal to the size
       of the array in memory.  This indicates that the user has omitted a
       multiplication by the element size.  This warning is enabled by
!      â€˜-Wallâ€™.
  
! â€˜-Wmemset-transposed-argsâ€™
!      Warn for suspicious calls to the â€˜memsetâ€™ built-in function where
       the second argument is not zero and the third argument is zero.
!      For example, the call â€˜memset (buf, sizeof buf, 0)â€™ is diagnosed
!      because â€˜memset (buf, 0, sizeof buf)â€™ was meant instead.  The
       diagnostic is only emitted if the third argument is a literal zero.
       Otherwise, if it is an expression that is folded to zero, or a cast
       of zero to some type, it is far less likely that the arguments have
       been mistakenly transposed and no warning is emitted.  This warning
!      is enabled by â€˜-Wallâ€™.
  
! â€˜-Waddressâ€™
       Warn about suspicious uses of address expressions.  These include
       comparing the address of a function or a declared object to the
       null pointer constant such as in
*************** cases it may also cause false positives.
*** 9189,9206 ****
       indicate missing parentheses in a function call or a missing
       dereference in an array expression.  The subset of the warning for
       object pointers can be suppressed by casting the pointer operand to
!      an integer type such as 'intptr_t' or 'uintptr_t'.  Comparisons
       against string literals result in unspecified behavior and are not
!      portable, and suggest the intent was to call 'strcmp'.  The warning
       is suppressed if the suspicious expression is the result of macro
!      expansion.  '-Waddress' warning is enabled by '-Wall'.
  
! '-Wno-address-of-packed-member'
       Do not warn when the address of packed member of struct or union is
       taken, which usually results in an unaligned pointer value.  This
       is enabled by default.
  
! '-Wlogical-op'
       Warn about suspicious uses of logical operators in expressions.
       This includes using logical operators in contexts where a bit-wise
       operator is likely to be expected.  Also warns when the operands of
--- 9193,9210 ----
       indicate missing parentheses in a function call or a missing
       dereference in an array expression.  The subset of the warning for
       object pointers can be suppressed by casting the pointer operand to
!      an integer type such as â€˜intptr_tâ€™ or â€˜uintptr_tâ€™.  Comparisons
       against string literals result in unspecified behavior and are not
!      portable, and suggest the intent was to call â€˜strcmpâ€™.  The warning
       is suppressed if the suspicious expression is the result of macro
!      expansion.  â€˜-Waddressâ€™ warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Wno-address-of-packed-memberâ€™
       Do not warn when the address of packed member of struct or union is
       taken, which usually results in an unaligned pointer value.  This
       is enabled by default.
  
! â€˜-Wlogical-opâ€™
       Warn about suspicious uses of logical operators in expressions.
       This includes using logical operators in contexts where a bit-wise
       operator is likely to be expected.  Also warns when the operands of
*************** cases it may also cause false positives.
*** 9208,9214 ****
            extern int a;
            if (a < 0 && a < 0) { ... }
  
! '-Wlogical-not-parentheses'
       Warn about logical not used on the left hand side operand of a
       comparison.  This option does not warn if the right operand is
       considered to be a boolean expression.  Its purpose is to detect
--- 9212,9218 ----
            extern int a;
            if (a < 0 && a < 0) { ... }
  
! â€˜-Wlogical-not-parenthesesâ€™
       Warn about logical not used on the left hand side operand of a
       comparison.  This option does not warn if the right operand is
       considered to be a boolean expression.  Its purpose is to detect
*************** cases it may also cause false positives.
*** 9221,9277 ****
       parentheses:
            if ((!a) > 1) { ... }
  
!      This warning is enabled by '-Wall'.
  
! '-Waggregate-return'
       Warn if any functions that return structures or unions are defined
       or called.  (In languages where you can return an array, this also
       elicits a warning.)
  
! '-Wno-aggressive-loop-optimizations'
       Do not warn if the compiler detects undefined behavior in a loop
       with a constant number of iterations.
!      '-Waggressive-loop-optimizations' is enabled by default.
  
! '-Wno-attributes'
!      Do not warn if an unexpected '__attribute__' is used, such as
       unrecognized attributes, function attributes applied to variables,
       etc.  This does not stop errors for incorrect use of supported
       attributes.
  
       Warnings about ill-formed uses of standard attributes are upgraded
!      to errors by '-pedantic-errors'.
  
!      Additionally, using '-Wno-attributes=', it is possible to suppress
       warnings about unknown scoped attributes (in C++11 and C23).  For
!      example, '-Wno-attributes=vendor::attr' disables warning about the
       following declaration:
  
            [[vendor::attr]] void f();
  
       It is also possible to disable warning about all attributes in a
!      namespace using '-Wno-attributes=vendor::' which prevents warning
       about both of these declarations:
  
            [[vendor::safe]] void f();
            [[vendor::unsafe]] void f2();
  
!      Note that '-Wno-attributes=' does not imply '-Wno-attributes'.
  
! '-Wno-builtin-declaration-mismatch'
       Warn if a built-in function is declared with an incompatible
       signature or as a non-function, or when a built-in function
       declared with a type that does not include a prototype is called
       with arguments whose promoted types do not match those expected by
!      the function.  When '-Wextra' is specified, also warn when a
       built-in function that takes arguments is declared without a
!      prototype.  The '-Wbuiltin-declaration-mismatch' warning is enabled
       by default.  To avoid the warning include the appropriate header to
       bring the prototypes of built-in functions into scope.
  
!      For example, the call to 'memset' below is diagnosed by the warning
!      because the function expects a value of type 'size_t' as its
!      argument but the type of '32' is 'int'.  With '-Wextra', the
       declaration of the function is diagnosed as well.
            extern void* memset ();
            void f (void *d)
--- 9225,9281 ----
       parentheses:
            if ((!a) > 1) { ... }
  
!      This warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Waggregate-returnâ€™
       Warn if any functions that return structures or unions are defined
       or called.  (In languages where you can return an array, this also
       elicits a warning.)
  
! â€˜-Wno-aggressive-loop-optimizationsâ€™
       Do not warn if the compiler detects undefined behavior in a loop
       with a constant number of iterations.
!      â€˜-Waggressive-loop-optimizationsâ€™ is enabled by default.
  
! â€˜-Wno-attributesâ€™
!      Do not warn if an unexpected â€˜__attribute__â€™ is used, such as
       unrecognized attributes, function attributes applied to variables,
       etc.  This does not stop errors for incorrect use of supported
       attributes.
  
       Warnings about ill-formed uses of standard attributes are upgraded
!      to errors by â€˜-pedantic-errorsâ€™.
  
!      Additionally, using â€˜-Wno-attributes=â€™, it is possible to suppress
       warnings about unknown scoped attributes (in C++11 and C23).  For
!      example, â€˜-Wno-attributes=vendor::attrâ€™ disables warning about the
       following declaration:
  
            [[vendor::attr]] void f();
  
       It is also possible to disable warning about all attributes in a
!      namespace using â€˜-Wno-attributes=vendor::â€™ which prevents warning
       about both of these declarations:
  
            [[vendor::safe]] void f();
            [[vendor::unsafe]] void f2();
  
!      Note that â€˜-Wno-attributes=â€™ does not imply â€˜-Wno-attributesâ€™.
  
! â€˜-Wno-builtin-declaration-mismatchâ€™
       Warn if a built-in function is declared with an incompatible
       signature or as a non-function, or when a built-in function
       declared with a type that does not include a prototype is called
       with arguments whose promoted types do not match those expected by
!      the function.  When â€˜-Wextraâ€™ is specified, also warn when a
       built-in function that takes arguments is declared without a
!      prototype.  The â€˜-Wbuiltin-declaration-mismatchâ€™ warning is enabled
       by default.  To avoid the warning include the appropriate header to
       bring the prototypes of built-in functions into scope.
  
!      For example, the call to â€˜memsetâ€™ below is diagnosed by the warning
!      because the function expects a value of type â€˜size_tâ€™ as its
!      argument but the type of â€˜32â€™ is â€˜intâ€™.  With â€˜-Wextraâ€™, the
       declaration of the function is diagnosed as well.
            extern void* memset ();
            void f (void *d)
*************** cases it may also cause false positives.
*** 9279,9358 ****
              memset (d, '\0', 32);
            }
  
! '-Wno-builtin-macro-redefined'
       Do not warn if certain built-in macros are redefined.  This
!      suppresses warnings for redefinition of '__TIMESTAMP__',
!      '__TIME__', '__DATE__', '__FILE__', and '__BASE_FILE__'.
  
! '-Wfree-labels (C and Objective-C only)'
       Warn if a label is applied to a non-statement, or occurs at the end
       of a compound statement.  Such labels are allowed by C23 and later
       dialects of C, and are available as a GCC extension in all other
       dialects.
  
!      This warning is also enabled by '-Wc11-c23-compat'.  It is turned
       into an error if building for a C version before C23 by
!      '-pedantic-errors'.
  
! '-Wheader-guard'
       Warn if a valid preprocessor header multiple inclusion guard has a
!      '#define' directive right after '#ifndef' or '#if !defined'
       directive for the multiple inclusion guard, which defines a
       different macro from the guard macro with a similar name, the
       actual multiple inclusion guard macro isn't defined at the
!      corresponding '#ifndef' directive at the end of the header, and the
!      '#define' directive defines an object-like macro with empty
       definition.  In such case, it often is just a misspelled guard
!      name, either in the '#ifndef' or '#if !defined' directive or in the
!      subsequent '#define' directive.  This warning is enabled by
!      '-Wall'.
  
! '-Wstrict-prototypes (C and Objective-C only)'
       Warn if a function is declared or defined without specifying the
       argument types.  (An old-style function definition is permitted
       without a warning if preceded by a declaration that specifies the
       argument types.)
  
! '-Wold-style-declaration (C and Objective-C only)'
       Warn for obsolescent usages, according to the C Standard, in a
       declaration.  For example, warn if storage-class specifiers like
!      'static' are not the first things in a declaration.  This warning
!      is also enabled by '-Wextra'.
  
! '-Wold-style-definition (C and Objective-C only)'
       Warn if an old-style function definition is used.  A warning is
       given even if there is a previous prototype.  A definition using
!      '()' is not considered an old-style definition in C23 mode, because
!      it is equivalent to '(void)' in that case, but is considered an
       old-style definition for older standards.
  
! '-Wdeprecated-non-prototype (C and Objective-C only)'
!      Warn if a function declared with an empty parameter list '()' is
       called with one or more arguments, or if a function definition with
       one or more parameters is encountered after such a declaration.
       Both cases are errors in C23 and later dialects of C.
  
!      This warning is also enabled by '-Wc11-c23-compat'.
  
! '-Wmissing-parameter-name (C and Objective-C only)'
       Warn if a function definition omits a parameter name, specifying
       only its type.  This can be used to document that a parameter is
       unused in the definition.  It is part of C23 and later dialects of
       C, and available as a GCC extension in all other dialects.
  
!      This warning is also enabled by '-Wc11-c23-compat'.  It is turned
       into an error if building for a C version before C23 by
!      '-pedantic-errors'.
  
! '-Wmissing-parameter-type (C and Objective-C only)'
       A function parameter is declared without a type specifier in
       K&R-style functions:
  
            void foo(bar) { }
  
!      This warning is also enabled by '-Wextra'.
  
! '-Wno-declaration-missing-parameter-type (C and Objective-C only)'
       Do not warn if a function declaration contains a parameter name
       without a type.  Such function declarations do not provide a
       function prototype and prevent most type checking in function
--- 9283,9362 ----
              memset (d, '\0', 32);
            }
  
! â€˜-Wno-builtin-macro-redefinedâ€™
       Do not warn if certain built-in macros are redefined.  This
!      suppresses warnings for redefinition of â€˜__TIMESTAMP__â€™,
!      â€˜__TIME__â€™, â€˜__DATE__â€™, â€˜__FILE__â€™, and â€˜__BASE_FILE__â€™.
  
! â€˜-Wfree-labels (C and Objective-C only)â€™
       Warn if a label is applied to a non-statement, or occurs at the end
       of a compound statement.  Such labels are allowed by C23 and later
       dialects of C, and are available as a GCC extension in all other
       dialects.
  
!      This warning is also enabled by â€˜-Wc11-c23-compatâ€™.  It is turned
       into an error if building for a C version before C23 by
!      â€˜-pedantic-errorsâ€™.
  
! â€˜-Wheader-guardâ€™
       Warn if a valid preprocessor header multiple inclusion guard has a
!      â€˜#defineâ€™ directive right after â€˜#ifndefâ€™ or â€˜#if !definedâ€™
       directive for the multiple inclusion guard, which defines a
       different macro from the guard macro with a similar name, the
       actual multiple inclusion guard macro isn't defined at the
!      corresponding â€˜#ifndefâ€™ directive at the end of the header, and the
!      â€˜#defineâ€™ directive defines an object-like macro with empty
       definition.  In such case, it often is just a misspelled guard
!      name, either in the â€˜#ifndefâ€™ or â€˜#if !definedâ€™ directive or in the
!      subsequent â€˜#defineâ€™ directive.  This warning is enabled by
!      â€˜-Wallâ€™.
  
! â€˜-Wstrict-prototypes (C and Objective-C only)â€™
       Warn if a function is declared or defined without specifying the
       argument types.  (An old-style function definition is permitted
       without a warning if preceded by a declaration that specifies the
       argument types.)
  
! â€˜-Wold-style-declaration (C and Objective-C only)â€™
       Warn for obsolescent usages, according to the C Standard, in a
       declaration.  For example, warn if storage-class specifiers like
!      â€˜staticâ€™ are not the first things in a declaration.  This warning
!      is also enabled by â€˜-Wextraâ€™.
  
! â€˜-Wold-style-definition (C and Objective-C only)â€™
       Warn if an old-style function definition is used.  A warning is
       given even if there is a previous prototype.  A definition using
!      â€˜()â€™ is not considered an old-style definition in C23 mode, because
!      it is equivalent to â€˜(void)â€™ in that case, but is considered an
       old-style definition for older standards.
  
! â€˜-Wdeprecated-non-prototype (C and Objective-C only)â€™
!      Warn if a function declared with an empty parameter list â€˜()â€™ is
       called with one or more arguments, or if a function definition with
       one or more parameters is encountered after such a declaration.
       Both cases are errors in C23 and later dialects of C.
  
!      This warning is also enabled by â€˜-Wc11-c23-compatâ€™.
  
! â€˜-Wmissing-parameter-name (C and Objective-C only)â€™
       Warn if a function definition omits a parameter name, specifying
       only its type.  This can be used to document that a parameter is
       unused in the definition.  It is part of C23 and later dialects of
       C, and available as a GCC extension in all other dialects.
  
!      This warning is also enabled by â€˜-Wc11-c23-compatâ€™.  It is turned
       into an error if building for a C version before C23 by
!      â€˜-pedantic-errorsâ€™.
  
! â€˜-Wmissing-parameter-type (C and Objective-C only)â€™
       A function parameter is declared without a type specifier in
       K&R-style functions:
  
            void foo(bar) { }
  
!      This warning is also enabled by â€˜-Wextraâ€™.
  
! â€˜-Wno-declaration-missing-parameter-type (C and Objective-C only)â€™
       Do not warn if a function declaration contains a parameter name
       without a type.  Such function declarations do not provide a
       function prototype and prevent most type checking in function
*************** cases it may also cause false positives.
*** 9360,9372 ****
  
       This warning is enabled by default.  In C99 and later dialects of
       C, it is treated as an error.  The error can be downgraded to a
!      warning using '-fpermissive' (along with certain other errors), or
       for this error alone, with
!      '-Wno-error=declaration-missing-parameter-type'.
  
!      This warning is upgraded to an error by '-pedantic-errors'.
  
! '-Wmissing-prototypes (C and Objective-C only)'
       Warn if a global function is defined without a previous prototype
       declaration.  This warning is issued even if the definition itself
       provides a prototype.  Use this option to detect global functions
--- 9364,9376 ----
  
       This warning is enabled by default.  In C99 and later dialects of
       C, it is treated as an error.  The error can be downgraded to a
!      warning using â€˜-fpermissiveâ€™ (along with certain other errors), or
       for this error alone, with
!      â€˜-Wno-error=declaration-missing-parameter-typeâ€™.
  
!      This warning is upgraded to an error by â€˜-pedantic-errorsâ€™.
  
! â€˜-Wmissing-prototypes (C and Objective-C only)â€™
       Warn if a global function is defined without a previous prototype
       declaration.  This warning is issued even if the definition itself
       provides a prototype.  Use this option to detect global functions
*************** cases it may also cause false positives.
*** 9374,9399 ****
       This option is not valid for C++ because all function declarations
       provide prototypes and a non-matching declaration declares an
       overload rather than conflict with an earlier declaration.  Use
!      '-Wmissing-declarations' to detect missing declarations in C++.
  
! '-Wmissing-variable-declarations (C and Objective-C only)'
       Warn if a global variable is defined without a previous
       declaration.  Use this option to detect global variables that do
       not have a matching extern declaration in a header file.
  
! '-Wmissing-declarations'
       Warn if a global function is defined without a previous
       declaration.  Do so even if the definition itself provides a
       prototype.  Use this option to detect global functions that are not
       declared in header files.  In C, no warnings are issued for
       functions with previous non-prototype declarations; use
!      '-Wmissing-prototypes' to detect missing prototypes.  In C++, no
       warnings are issued for function templates, or for inline
       functions, or for functions in anonymous namespaces.
  
! '-Wmissing-field-initializers'
       Warn if a structure's initializer has some fields missing.  For
!      example, the following code causes such a warning, because 'x.h' is
       implicitly zero:
  
            struct s { int f, g, h; };
--- 9378,9403 ----
       This option is not valid for C++ because all function declarations
       provide prototypes and a non-matching declaration declares an
       overload rather than conflict with an earlier declaration.  Use
!      â€˜-Wmissing-declarationsâ€™ to detect missing declarations in C++.
  
! â€˜-Wmissing-variable-declarations (C and Objective-C only)â€™
       Warn if a global variable is defined without a previous
       declaration.  Use this option to detect global variables that do
       not have a matching extern declaration in a header file.
  
! â€˜-Wmissing-declarationsâ€™
       Warn if a global function is defined without a previous
       declaration.  Do so even if the definition itself provides a
       prototype.  Use this option to detect global functions that are not
       declared in header files.  In C, no warnings are issued for
       functions with previous non-prototype declarations; use
!      â€˜-Wmissing-prototypesâ€™ to detect missing prototypes.  In C++, no
       warnings are issued for function templates, or for inline
       functions, or for functions in anonymous namespaces.
  
! â€˜-Wmissing-field-initializersâ€™
       Warn if a structure's initializer has some fields missing.  For
!      example, the following code causes such a warning, because â€˜x.hâ€™ is
       implicitly zero:
  
            struct s { int f, g, h; };
*************** cases it may also cause false positives.
*** 9406,9412 ****
            struct s x = { .f = 3, .g = 4 };
  
       In C this option does not warn about the universal zero initializer
!      '{ 0 }':
  
            struct s { int f, g, h; };
            struct s x = { 0 };
--- 9410,9416 ----
            struct s x = { .f = 3, .g = 4 };
  
       In C this option does not warn about the universal zero initializer
!      â€˜{ 0 }â€™:
  
            struct s { int f, g, h; };
            struct s x = { 0 };
*************** cases it may also cause false positives.
*** 9417,9447 ****
            struct s { int f, g, h; };
            s x = { };
  
!      This warning is included in '-Wextra'.  To get other '-Wextra'
!      warnings without this one, use '-Wextra
!      -Wno-missing-field-initializers'.
  
! '-Wno-missing-requires'
  
       By default, the compiler warns about a concept-id appearing as a
       C++20 simple-requirement:
  
            bool satisfied = requires { C<T> };
  
!      Here 'satisfied' will be true if 'C<T>' is a valid expression,
       which it is for all T. Presumably the user meant to write
  
            bool satisfied = requires { requires C<T> };
  
!      so 'satisfied' is only true if concept 'C' is satisfied for type
!      'T'.
  
!      This warning can be disabled with '-Wno-missing-requires'.
  
! '-Wno-missing-template-keyword'
  
       The member access tokens ., -> and :: must be followed by the
!      'template' keyword if the parent object is dependent and the member
       being named is a template.
  
            template <class X>
--- 9421,9451 ----
            struct s { int f, g, h; };
            s x = { };
  
!      This warning is included in â€˜-Wextraâ€™.  To get other â€˜-Wextraâ€™
!      warnings without this one, use â€˜-Wextra
!      -Wno-missing-field-initializersâ€™.
  
! â€˜-Wno-missing-requiresâ€™
  
       By default, the compiler warns about a concept-id appearing as a
       C++20 simple-requirement:
  
            bool satisfied = requires { C<T> };
  
!      Here â€˜satisfiedâ€™ will be true if â€˜C<T>â€™ is a valid expression,
       which it is for all T. Presumably the user meant to write
  
            bool satisfied = requires { requires C<T> };
  
!      so â€˜satisfiedâ€™ is only true if concept â€˜Câ€™ is satisfied for type
!      â€˜Tâ€™.
  
!      This warning can be disabled with â€˜-Wno-missing-requiresâ€™.
  
! â€˜-Wno-missing-template-keywordâ€™
  
       The member access tokens ., -> and :: must be followed by the
!      â€˜templateâ€™ keyword if the parent object is dependent and the member
       being named is a template.
  
            template <class X>
*************** cases it may also cause false positives.
*** 9464,9583 ****
              test = (t.m < N) > (0); // Same meaning, but not treated as a template.
            }
  
!      This warning can be disabled with '-Wno-missing-template-keyword'.
  
! '-Wno-multichar'
!      Do not warn if a multicharacter constant (''FOOF'') is used.
       Usually they indicate a typo in the user's code, as they have
       implementation-defined values, and should not be used in portable
       code.
  
! '-Wnormalized=[none|id|nfc|nfkc]'
       In ISO C and ISO C++, two identifiers are different if they are
       different sequences of characters.  However, sometimes when
       characters outside the basic ASCII character set are used, you can
       have two different character sequences that look the same.  To
       avoid confusion, the ISO 10646 standard sets out some
!      "normalization rules" which when applied ensure that two sequences
       that look the same are turned into the same sequence.  GCC can warn
       you if you are using identifiers that have not been normalized;
       this option controls that warning.
  
       There are four levels of warning supported by GCC.  The default is
!      '-Wnormalized=nfc', which warns about any identifier that is not in
!      the ISO 10646 "C" normalized form, "NFC". NFC is the recommended
!      form for most uses.  It is equivalent to '-Wnormalized'.
  
       Unfortunately, there are some characters allowed in identifiers by
       ISO C and ISO C++ that, when turned into NFC, are not allowed in
       identifiers.  That is, there's no way to use these symbols in
       portable ISO C or C++ and have all your identifiers in NFC.
!      '-Wnormalized=id' suppresses the warning for these characters.  It
       is hoped that future versions of the standards involved will
       correct this, which is why this option is not the default.
  
       You can switch the warning off for all characters by writing
!      '-Wnormalized=none' or '-Wno-normalized'.  You should only do this
       if you are using some other normalization scheme (like "D"),
       because otherwise you can easily create bugs that are literally
       impossible to see.
  
       Some characters in ISO 10646 have distinct meanings but look
       identical in some fonts or display methodologies, especially once
!      formatting has been applied.  For instance '\u207F', "SUPERSCRIPT
!      LATIN SMALL LETTER N", displays just like a regular 'n' that has
!      been placed in a superscript.  ISO 10646 defines the "NFKC"
       normalization scheme to convert all these into a standard form as
       well, and GCC warns if your code is not in NFKC if you use
!      '-Wnormalized=nfkc'.  This warning is comparable to warning about
       every identifier that contains the letter O because it might be
       confused with the digit 0, and so is not the default, but may be
       useful as a local coding convention if the programming environment
       cannot be fixed to display these characters distinctly.
  
! '-Wno-attribute-warning'
       Do not warn about usage of functions (*note Function Attributes::)
!      declared with 'warning' attribute.  By default, this warning is
!      enabled.  '-Wno-attribute-warning' can be used to disable the
!      warning or '-Wno-error=attribute-warning' can be used to disable
!      the error when compiled with '-Werror' flag.
  
! '-Wno-deprecated'
       Do not warn about usage of deprecated features.  *Note Deprecated
       Features::.
  
!      In C++, explicitly specifying '-Wdeprecated' also enables warnings
       about some features that are deprecated in later language
!      standards, specifically '-Wcomma-subscript', '-Wvolatile',
!      '-Wdeprecated-enum-float-conversion',
!      '-Wdeprecated-enum-enum-conversion',
!      '-Wdeprecated-literal-operator', and
!      '-Wdeprecated-variadic-comma-omission'.
  
! '-Wno-deprecated-declarations'
       Do not warn about uses of functions (*note Function Attributes::),
       variables (*note Variable Attributes::), and types (*note Type
!      Attributes::) marked as deprecated by using the 'deprecated'
       attribute.
  
! '-Wno-overflow'
       Do not warn about compile-time overflow in constant expressions.
  
! '-Wno-odr'
       Warn about One Definition Rule violations during link-time
       optimization.  Enabled by default.
  
! '-Wopenacc-parallelism'
       Warn about potentially suboptimal choices related to OpenACC
       parallelism.
  
! '-Wno-openmp'
       Warn about suspicious OpenMP code.
  
! '-Wopenmp-simd'
       Warn if the vectorizer cost model overrides the OpenMP simd
!      directive set by user.  The '-fsimd-cost-model=unlimited' option
       can be used to relax the cost model.
  
! '-Woverride-init (C and Objective-C only)'
       Warn if an initialized field without side effects is overridden
       when using designated initializers (*note Designated Initializers:
       Designated Inits.).
  
!      This warning is included in '-Wextra'.  To get other '-Wextra'
!      warnings without this one, use '-Wextra -Wno-override-init'.
  
! '-Wno-override-init-side-effects (C and Objective-C only)'
       Do not warn if an initialized field with side effects is overridden
       when using designated initializers (*note Designated Initializers:
       Designated Inits.).  This warning is enabled by default.
  
! '-Wpacked'
       Warn if a structure is given the packed attribute, but the packed
       attribute has no effect on the layout or size of the structure.
       Such structures may be mis-aligned for little benefit.  For
!      instance, in this code, the variable 'f.x' in 'struct bar' is
!      misaligned even though 'struct bar' does not itself have the packed
       attribute:
  
            struct foo {
--- 9468,9587 ----
              test = (t.m < N) > (0); // Same meaning, but not treated as a template.
            }
  
!      This warning can be disabled with â€˜-Wno-missing-template-keywordâ€™.
  
! â€˜-Wno-multicharâ€™
!      Do not warn if a multicharacter constant (â€˜'FOOF'â€™) is used.
       Usually they indicate a typo in the user's code, as they have
       implementation-defined values, and should not be used in portable
       code.
  
! â€˜-Wnormalized=[none|id|nfc|nfkc]â€™
       In ISO C and ISO C++, two identifiers are different if they are
       different sequences of characters.  However, sometimes when
       characters outside the basic ASCII character set are used, you can
       have two different character sequences that look the same.  To
       avoid confusion, the ISO 10646 standard sets out some
!      â€œnormalization rulesâ€� which when applied ensure that two sequences
       that look the same are turned into the same sequence.  GCC can warn
       you if you are using identifiers that have not been normalized;
       this option controls that warning.
  
       There are four levels of warning supported by GCC.  The default is
!      â€˜-Wnormalized=nfcâ€™, which warns about any identifier that is not in
!      the ISO 10646 "C" normalized form, â€œNFCâ€�. NFC is the recommended
!      form for most uses.  It is equivalent to â€˜-Wnormalizedâ€™.
  
       Unfortunately, there are some characters allowed in identifiers by
       ISO C and ISO C++ that, when turned into NFC, are not allowed in
       identifiers.  That is, there's no way to use these symbols in
       portable ISO C or C++ and have all your identifiers in NFC.
!      â€˜-Wnormalized=idâ€™ suppresses the warning for these characters.  It
       is hoped that future versions of the standards involved will
       correct this, which is why this option is not the default.
  
       You can switch the warning off for all characters by writing
!      â€˜-Wnormalized=noneâ€™ or â€˜-Wno-normalizedâ€™.  You should only do this
       if you are using some other normalization scheme (like "D"),
       because otherwise you can easily create bugs that are literally
       impossible to see.
  
       Some characters in ISO 10646 have distinct meanings but look
       identical in some fonts or display methodologies, especially once
!      formatting has been applied.  For instance â€˜\u207Fâ€™, "SUPERSCRIPT
!      LATIN SMALL LETTER N", displays just like a regular â€˜nâ€™ that has
!      been placed in a superscript.  ISO 10646 defines the â€œNFKCâ€�
       normalization scheme to convert all these into a standard form as
       well, and GCC warns if your code is not in NFKC if you use
!      â€˜-Wnormalized=nfkcâ€™.  This warning is comparable to warning about
       every identifier that contains the letter O because it might be
       confused with the digit 0, and so is not the default, but may be
       useful as a local coding convention if the programming environment
       cannot be fixed to display these characters distinctly.
  
! â€˜-Wno-attribute-warningâ€™
       Do not warn about usage of functions (*note Function Attributes::)
!      declared with â€˜warningâ€™ attribute.  By default, this warning is
!      enabled.  â€˜-Wno-attribute-warningâ€™ can be used to disable the
!      warning or â€˜-Wno-error=attribute-warningâ€™ can be used to disable
!      the error when compiled with â€˜-Werrorâ€™ flag.
  
! â€˜-Wno-deprecatedâ€™
       Do not warn about usage of deprecated features.  *Note Deprecated
       Features::.
  
!      In C++, explicitly specifying â€˜-Wdeprecatedâ€™ also enables warnings
       about some features that are deprecated in later language
!      standards, specifically â€˜-Wcomma-subscriptâ€™, â€˜-Wvolatileâ€™,
!      â€˜-Wdeprecated-enum-float-conversionâ€™,
!      â€˜-Wdeprecated-enum-enum-conversionâ€™,
!      â€˜-Wdeprecated-literal-operatorâ€™, and
!      â€˜-Wdeprecated-variadic-comma-omissionâ€™.
  
! â€˜-Wno-deprecated-declarationsâ€™
       Do not warn about uses of functions (*note Function Attributes::),
       variables (*note Variable Attributes::), and types (*note Type
!      Attributes::) marked as deprecated by using the â€˜deprecatedâ€™
       attribute.
  
! â€˜-Wno-overflowâ€™
       Do not warn about compile-time overflow in constant expressions.
  
! â€˜-Wno-odrâ€™
       Warn about One Definition Rule violations during link-time
       optimization.  Enabled by default.
  
! â€˜-Wopenacc-parallelismâ€™
       Warn about potentially suboptimal choices related to OpenACC
       parallelism.
  
! â€˜-Wno-openmpâ€™
       Warn about suspicious OpenMP code.
  
! â€˜-Wopenmp-simdâ€™
       Warn if the vectorizer cost model overrides the OpenMP simd
!      directive set by user.  The â€˜-fsimd-cost-model=unlimitedâ€™ option
       can be used to relax the cost model.
  
! â€˜-Woverride-init (C and Objective-C only)â€™
       Warn if an initialized field without side effects is overridden
       when using designated initializers (*note Designated Initializers:
       Designated Inits.).
  
!      This warning is included in â€˜-Wextraâ€™.  To get other â€˜-Wextraâ€™
!      warnings without this one, use â€˜-Wextra -Wno-override-initâ€™.
  
! â€˜-Wno-override-init-side-effects (C and Objective-C only)â€™
       Do not warn if an initialized field with side effects is overridden
       when using designated initializers (*note Designated Initializers:
       Designated Inits.).  This warning is enabled by default.
  
! â€˜-Wpackedâ€™
       Warn if a structure is given the packed attribute, but the packed
       attribute has no effect on the layout or size of the structure.
       Such structures may be mis-aligned for little benefit.  For
!      instance, in this code, the variable â€˜f.xâ€™ in â€˜struct barâ€™ is
!      misaligned even though â€˜struct barâ€™ does not itself have the packed
       attribute:
  
            struct foo {
*************** cases it may also cause false positives.
*** 9589,9601 ****
              struct foo f;
            };
  
! '-Wnopacked-bitfield-compat'
!      The 4.1, 4.2 and 4.3 series of GCC ignore the 'packed' attribute on
!      bit-fields of type 'char'.  This was fixed in GCC 4.4 but the
       change can lead to differences in the structure layout.  GCC
       informs you when the offset of such a field has changed in GCC 4.4.
!      For example there is no longer a 4-bit padding between field 'a'
!      and 'b' in this structure:
  
            struct foo
            {
--- 9593,9605 ----
              struct foo f;
            };
  
! â€˜-Wnopacked-bitfield-compatâ€™
!      The 4.1, 4.2 and 4.3 series of GCC ignore the â€˜packedâ€™ attribute on
!      bit-fields of type â€˜charâ€™.  This was fixed in GCC 4.4 but the
       change can lead to differences in the structure layout.  GCC
       informs you when the offset of such a field has changed in GCC 4.4.
!      For example there is no longer a 4-bit padding between field â€˜aâ€™
!      and â€˜bâ€™ in this structure:
  
            struct foo
            {
*************** cases it may also cause false positives.
*** 9604,9643 ****
            } __attribute__ ((packed));
  
       This warning is enabled by default.  Use
!      '-Wno-packed-bitfield-compat' to disable this warning.
  
! '-Wpacked-not-aligned (C, C++, Objective-C and Objective-C++ only)'
       Warn if a structure field with explicitly specified alignment in a
       packed struct or union is misaligned.  For example, a warning will
!      be issued on 'struct S', like, 'warning: alignment 1 of 'struct S'
!      is less than 8', in this code:
  
            struct __attribute__ ((aligned (8))) S8 { char a[8]; };
            struct __attribute__ ((packed)) S {
              struct S8 s8;
            };
  
!      This warning is enabled by '-Wall'.
  
! '-Wpadded'
       Warn if padding is included in a structure, either to align an
       element of the structure or to align the whole structure.
       Sometimes when this happens it is possible to rearrange the fields
       of the structure to reduce the padding and so make the structure
       smaller.
  
! '-Wredundant-decls'
       Warn if anything is declared more than once in the same scope, even
       in cases where multiple declaration is valid and changes nothing.
  
! '-Wrestrict'
!      Warn when an object referenced by a 'restrict'-qualified parameter
!      (or, in C++, a '__restrict'-qualified parameter) is aliased by
       another argument, or when copies between such objects overlap.  For
!      example, the call to the 'strcpy' function below attempts to
       truncate the string by replacing its initial characters with the
       last four.  However, because the call writes the terminating NUL
!      into 'a[4]', the copies overlap and the call is diagnosed.
  
            void foo (void)
            {
--- 9608,9647 ----
            } __attribute__ ((packed));
  
       This warning is enabled by default.  Use
!      â€˜-Wno-packed-bitfield-compatâ€™ to disable this warning.
  
! â€˜-Wpacked-not-aligned (C, C++, Objective-C and Objective-C++ only)â€™
       Warn if a structure field with explicitly specified alignment in a
       packed struct or union is misaligned.  For example, a warning will
!      be issued on â€˜struct Sâ€™, like, â€˜warning: alignment 1 of 'struct S'
!      is less than 8â€™, in this code:
  
            struct __attribute__ ((aligned (8))) S8 { char a[8]; };
            struct __attribute__ ((packed)) S {
              struct S8 s8;
            };
  
!      This warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Wpaddedâ€™
       Warn if padding is included in a structure, either to align an
       element of the structure or to align the whole structure.
       Sometimes when this happens it is possible to rearrange the fields
       of the structure to reduce the padding and so make the structure
       smaller.
  
! â€˜-Wredundant-declsâ€™
       Warn if anything is declared more than once in the same scope, even
       in cases where multiple declaration is valid and changes nothing.
  
! â€˜-Wrestrictâ€™
!      Warn when an object referenced by a â€˜restrictâ€™-qualified parameter
!      (or, in C++, a â€˜__restrictâ€™-qualified parameter) is aliased by
       another argument, or when copies between such objects overlap.  For
!      example, the call to the â€˜strcpyâ€™ function below attempts to
       truncate the string by replacing its initial characters with the
       last four.  However, because the call writes the terminating NUL
!      into â€˜a[4]â€™, the copies overlap and the call is diagnosed.
  
            void foo (void)
            {
*************** cases it may also cause false positives.
*** 9645,9658 ****
              strcpy (a, a + 4);
              ...
            }
!      The '-Wrestrict' option detects some instances of simple overlap
!      even without optimization but works best at '-O2' and above.  It is
!      included in '-Wall'.
  
! '-Wnested-externs (C and Objective-C only)'
!      Warn if an 'extern' declaration is encountered within a function.
  
! '-Winline'
       Warn if a function that is declared as inline cannot be inlined.
       Even with this option, the compiler does not warn about failures to
       inline functions declared in system headers.
--- 9649,9662 ----
              strcpy (a, a + 4);
              ...
            }
!      The â€˜-Wrestrictâ€™ option detects some instances of simple overlap
!      even without optimization but works best at â€˜-O2â€™ and above.  It is
!      included in â€˜-Wallâ€™.
  
! â€˜-Wnested-externs (C and Objective-C only)â€™
!      Warn if an â€˜externâ€™ declaration is encountered within a function.
  
! â€˜-Winlineâ€™
       Warn if a function that is declared as inline cannot be inlined.
       Even with this option, the compiler does not warn about failures to
       inline functions declared in system headers.
*************** cases it may also cause false positives.
*** 9662,9674 ****
       account the size of the function being inlined and the amount of
       inlining that has already been done in the current function.
       Therefore, seemingly insignificant changes in the source program
!      can cause the warnings produced by '-Winline' to appear or
       disappear.
  
! '-Winterference-size'
       Warn about use of C++17
!      'std::hardware_destructive_interference_size' without specifying
!      its value with '--param destructive-interference-size'.  Also warn
       about questionable values for that option.
  
       This variable is intended to be used for controlling class layout,
--- 9666,9678 ----
       account the size of the function being inlined and the amount of
       inlining that has already been done in the current function.
       Therefore, seemingly insignificant changes in the source program
!      can cause the warnings produced by â€˜-Winlineâ€™ to appear or
       disappear.
  
! â€˜-Winterference-sizeâ€™
       Warn about use of C++17
!      â€˜std::hardware_destructive_interference_sizeâ€™ without specifying
!      its value with â€˜--param destructive-interference-sizeâ€™.  Also warn
       about questionable values for that option.
  
       This variable is intended to be used for controlling class layout,
*************** cases it may also cause false positives.
*** 9681,9798 ****
                std::atomic<int> two;
            };
  
!      Here 'one' and 'two' are intended to be far enough apart that
       stores to one won't require accesses to the other to reload the
       cache line.
  
!      By default, '--param destructive-interference-size' and '--param
!      constructive-interference-size' are set based on the current
!      '-mtune' option, typically to the L1 cache line size for the
       particular target CPU, sometimes to a range if tuning for a generic
       target.  So all translation units that depend on ABI compatibility
       for the use of these variables must be compiled with the same
!      '-mtune' (or '-mcpu').
  
       If ABI stability is important, such as if the use is in a header
       for a library, you should probably not use the hardware
       interference size variables at all.  Alternatively, you can force a
!      particular value with '--param'.
  
       If you are confident that your use of the variable does not affect
       ABI outside a single build of your project, you can turn off the
!      warning with '-Wno-interference-size'.
  
! '-Wint-in-bool-context'
       Warn for suspicious use of integer values where boolean values are
       expected, such as conditional expressions (?:) using non-boolean
!      integer constants in boolean context, like 'if (a <= b ? 2 : 3)'.
!      Or left shifting of signed integers in boolean context, like 'for
!      (a = 0; 1 << a; a++);'.  Likewise for all kinds of multiplications
!      regardless of the data type.  This warning is enabled by '-Wall'.
  
! '-Wno-int-to-pointer-cast'
       Suppress warnings from casts to pointer type of an integer of a
       different size.  In C++, casting to a pointer type of smaller size
!      is an error.  'Wint-to-pointer-cast' is enabled by default.
  
! '-Wno-pointer-to-int-cast (C and Objective-C only)'
       Suppress warnings from casts from a pointer to an integer type of a
       different size.
  
! '-Winvalid-pch'
       Warn if a precompiled header (*note Precompiled Headers::) is found
       in the search path but cannot be used.
  
! '-Winvalid-utf8'
       Warn if an invalid UTF-8 character is found.  This warning is on by
!      default for C++23 if '-finput-charset=UTF-8' is used and turned
!      into error with '-pedantic-errors'.
  
! '-Wno-unicode'
       Don't diagnose invalid forms of delimited or named escape sequences
!      which are treated as separate tokens.  'Wunicode' is enabled by
       default.
  
! '-Wlong-long'
!      Warn if 'long long' type is used.  This is enabled by either
!      '-Wpedantic' or '-Wtraditional' in ISO C90 and C++98 modes.  To
!      inhibit the warning messages, use '-Wno-long-long'.
  
!      This warning is upgraded to an error by '-pedantic-errors'.
  
! '-Wvariadic-macros'
       Warn if variadic macros are used in ISO C90 mode, or if the GNU
       alternate syntax is used in ISO C99 mode.  This is enabled by
!      either '-Wpedantic' or '-Wtraditional'.  To inhibit the warning
!      messages, use '-Wno-variadic-macros'.
  
! '-Wno-varargs'
       Do not warn upon questionable usage of the macros used to handle
!      variable arguments like 'va_start'.  These warnings are enabled by
       default.
  
! '-Wvector-operation-performance'
       Warn if vector operation is not implemented via SIMD capabilities
       of the architecture.  Mainly useful for the performance tuning.
!      Vector operation can be implemented 'piecewise', which means that
!      the scalar operation is performed on every vector element; 'in
!      parallel', which means that the vector operation is implemented
       using scalars of wider type, which normally is more performance
!      efficient; and 'as a single scalar', which means that vector fits
       into a scalar type.
  
! '-Wvla'
!      Warn if a variable-length array is used in the code.  '-Wno-vla'
!      prevents the '-Wpedantic' warning of the variable-length array.
  
!      This warning is upgraded to an error by '-pedantic-errors'.
  
! '-Wvla-larger-than=BYTE-SIZE'
       If this option is used, the compiler warns for declarations of
       variable-length arrays whose size is either unbounded, or bounded
       by an argument that allows the array size to exceed BYTE-SIZE
!      bytes.  This is similar to how '-Walloca-larger-than='BYTE-SIZE
       works, but with variable-length arrays.
  
       Note that GCC may optimize small variable-length arrays of a known
       value into plain arrays, so this warning may not get triggered for
       such arrays.
  
!      '-Wvla-larger-than=''PTRDIFF_MAX' is enabled by default but is
!      typically only effective when '-ftree-vrp' is active (default for
!      '-O2' and above).
  
!      See also '-Walloca-larger-than=BYTE-SIZE'.
  
! '-Wno-vla-larger-than'
!      Disable '-Wvla-larger-than=' warnings.  The option is equivalent to
!      '-Wvla-larger-than=''SIZE_MAX' or larger.
  
! '-Wvla-parameter'
       Warn about redeclarations of functions involving arguments of
       Variable Length Array types of inconsistent kinds or forms, and
       enable the detection of out-of-bounds accesses to such parameters
!      by warnings such as '-Warray-bounds'.
  
       If the first function declaration uses the VLA form the bound
       specified in the array is assumed to be the minimum number of
--- 9685,9802 ----
                std::atomic<int> two;
            };
  
!      Here â€˜oneâ€™ and â€˜twoâ€™ are intended to be far enough apart that
       stores to one won't require accesses to the other to reload the
       cache line.
  
!      By default, â€˜--param destructive-interference-sizeâ€™ and â€˜--param
!      constructive-interference-sizeâ€™ are set based on the current
!      â€˜-mtuneâ€™ option, typically to the L1 cache line size for the
       particular target CPU, sometimes to a range if tuning for a generic
       target.  So all translation units that depend on ABI compatibility
       for the use of these variables must be compiled with the same
!      â€˜-mtuneâ€™ (or â€˜-mcpuâ€™).
  
       If ABI stability is important, such as if the use is in a header
       for a library, you should probably not use the hardware
       interference size variables at all.  Alternatively, you can force a
!      particular value with â€˜--paramâ€™.
  
       If you are confident that your use of the variable does not affect
       ABI outside a single build of your project, you can turn off the
!      warning with â€˜-Wno-interference-sizeâ€™.
  
! â€˜-Wint-in-bool-contextâ€™
       Warn for suspicious use of integer values where boolean values are
       expected, such as conditional expressions (?:) using non-boolean
!      integer constants in boolean context, like â€˜if (a <= b ? 2 : 3)â€™.
!      Or left shifting of signed integers in boolean context, like â€˜for
!      (a = 0; 1 << a; a++);â€™.  Likewise for all kinds of multiplications
!      regardless of the data type.  This warning is enabled by â€˜-Wallâ€™.
  
! â€˜-Wno-int-to-pointer-castâ€™
       Suppress warnings from casts to pointer type of an integer of a
       different size.  In C++, casting to a pointer type of smaller size
!      is an error.  â€˜Wint-to-pointer-castâ€™ is enabled by default.
  
! â€˜-Wno-pointer-to-int-cast (C and Objective-C only)â€™
       Suppress warnings from casts from a pointer to an integer type of a
       different size.
  
! â€˜-Winvalid-pchâ€™
       Warn if a precompiled header (*note Precompiled Headers::) is found
       in the search path but cannot be used.
  
! â€˜-Winvalid-utf8â€™
       Warn if an invalid UTF-8 character is found.  This warning is on by
!      default for C++23 if â€˜-finput-charset=UTF-8â€™ is used and turned
!      into error with â€˜-pedantic-errorsâ€™.
  
! â€˜-Wno-unicodeâ€™
       Don't diagnose invalid forms of delimited or named escape sequences
!      which are treated as separate tokens.  â€˜Wunicodeâ€™ is enabled by
       default.
  
! â€˜-Wlong-longâ€™
!      Warn if â€˜long longâ€™ type is used.  This is enabled by either
!      â€˜-Wpedanticâ€™ or â€˜-Wtraditionalâ€™ in ISO C90 and C++98 modes.  To
!      inhibit the warning messages, use â€˜-Wno-long-longâ€™.
  
!      This warning is upgraded to an error by â€˜-pedantic-errorsâ€™.
  
! â€˜-Wvariadic-macrosâ€™
       Warn if variadic macros are used in ISO C90 mode, or if the GNU
       alternate syntax is used in ISO C99 mode.  This is enabled by
!      either â€˜-Wpedanticâ€™ or â€˜-Wtraditionalâ€™.  To inhibit the warning
!      messages, use â€˜-Wno-variadic-macrosâ€™.
  
! â€˜-Wno-varargsâ€™
       Do not warn upon questionable usage of the macros used to handle
!      variable arguments like â€˜va_startâ€™.  These warnings are enabled by
       default.
  
! â€˜-Wvector-operation-performanceâ€™
       Warn if vector operation is not implemented via SIMD capabilities
       of the architecture.  Mainly useful for the performance tuning.
!      Vector operation can be implemented â€˜piecewiseâ€™, which means that
!      the scalar operation is performed on every vector element; â€˜in
!      parallelâ€™, which means that the vector operation is implemented
       using scalars of wider type, which normally is more performance
!      efficient; and â€˜as a single scalarâ€™, which means that vector fits
       into a scalar type.
  
! â€˜-Wvlaâ€™
!      Warn if a variable-length array is used in the code.  â€˜-Wno-vlaâ€™
!      prevents the â€˜-Wpedanticâ€™ warning of the variable-length array.
  
!      This warning is upgraded to an error by â€˜-pedantic-errorsâ€™.
  
! â€˜-Wvla-larger-than=BYTE-SIZEâ€™
       If this option is used, the compiler warns for declarations of
       variable-length arrays whose size is either unbounded, or bounded
       by an argument that allows the array size to exceed BYTE-SIZE
!      bytes.  This is similar to how â€˜-Walloca-larger-than=â€™BYTE-SIZE
       works, but with variable-length arrays.
  
       Note that GCC may optimize small variable-length arrays of a known
       value into plain arrays, so this warning may not get triggered for
       such arrays.
  
!      â€˜-Wvla-larger-than=â€™â€˜PTRDIFF_MAXâ€™ is enabled by default but is
!      typically only effective when â€˜-ftree-vrpâ€™ is active (default for
!      â€˜-O2â€™ and above).
  
!      See also â€˜-Walloca-larger-than=BYTE-SIZEâ€™.
  
! â€˜-Wno-vla-larger-thanâ€™
!      Disable â€˜-Wvla-larger-than=â€™ warnings.  The option is equivalent to
!      â€˜-Wvla-larger-than=â€™â€˜SIZE_MAXâ€™ or larger.
  
! â€˜-Wvla-parameterâ€™
       Warn about redeclarations of functions involving arguments of
       Variable Length Array types of inconsistent kinds or forms, and
       enable the detection of out-of-bounds accesses to such parameters
!      by warnings such as â€˜-Warray-boundsâ€™.
  
       If the first function declaration uses the VLA form the bound
       specified in the array is assumed to be the minimum number of
*************** cases it may also cause false positives.
*** 9803,9810 ****
  
       For example, the warning triggers for the following redeclarations
       because the first one allows an array of any size to be passed to
!      'f' while the second one specifies that the array argument must
!      have at least 'n' elements.  In addition, calling 'f' with the
       associated VLA bound parameter in excess of the actual VLA bound
       triggers a warning as well.
  
--- 9807,9814 ----
  
       For example, the warning triggers for the following redeclarations
       because the first one allows an array of any size to be passed to
!      â€˜fâ€™ while the second one specifies that the array argument must
!      have at least â€˜nâ€™ elements.  In addition, calling â€˜fâ€™ with the
       associated VLA bound parameter in excess of the actual VLA bound
       triggers a warning as well.
  
*************** cases it may also cause false positives.
*** 9823,9852 ****
            }
  
  
!      '-Wvla-parameter' is included in '-Wall'.  The '-Warray-parameter'
       option triggers warnings for similar problems involving ordinary
       array arguments.
  
! '-Wvolatile-register-var'
       Warn if a register variable is declared volatile.  The volatile
       modifier does not inhibit all optimizations that may eliminate
       reads and/or writes to register variables.  This warning is enabled
!      by '-Wall'.
  
! '-Wno-xor-used-as-pow (C, C++, Objective-C and Objective-C++ only)'
!      Disable warnings about uses of '^', the exclusive or operator,
       where it appears the code meant exponentiation.  Specifically, the
       warning occurs when the left-hand side is the decimal constant 2 or
       10 and the right-hand side is also a decimal constant.
  
!      In C and C++, '^' means exclusive or, whereas in some other
       languages (e.g.  TeX and some versions of BASIC) it means
       exponentiation.
  
       This warning can be silenced by converting one of the operands to
!      hexadecimal as well as by compiling with '-Wno-xor-used-as-pow'.
  
! '-Wdisabled-optimization'
       Warn if a requested optimization pass is disabled.  This warning
       does not generally indicate that there is anything wrong with your
       code; it merely indicates that GCC's optimizers are unable to
--- 9827,9856 ----
            }
  
  
!      â€˜-Wvla-parameterâ€™ is included in â€˜-Wallâ€™.  The â€˜-Warray-parameterâ€™
       option triggers warnings for similar problems involving ordinary
       array arguments.
  
! â€˜-Wvolatile-register-varâ€™
       Warn if a register variable is declared volatile.  The volatile
       modifier does not inhibit all optimizations that may eliminate
       reads and/or writes to register variables.  This warning is enabled
!      by â€˜-Wallâ€™.
  
! â€˜-Wno-xor-used-as-pow (C, C++, Objective-C and Objective-C++ only)â€™
!      Disable warnings about uses of â€˜^â€™, the exclusive or operator,
       where it appears the code meant exponentiation.  Specifically, the
       warning occurs when the left-hand side is the decimal constant 2 or
       10 and the right-hand side is also a decimal constant.
  
!      In C and C++, â€˜^â€™ means exclusive or, whereas in some other
       languages (e.g.  TeX and some versions of BASIC) it means
       exponentiation.
  
       This warning can be silenced by converting one of the operands to
!      hexadecimal as well as by compiling with â€˜-Wno-xor-used-as-powâ€™.
  
! â€˜-Wdisabled-optimizationâ€™
       Warn if a requested optimization pass is disabled.  This warning
       does not generally indicate that there is anything wrong with your
       code; it merely indicates that GCC's optimizers are unable to
*************** cases it may also cause false positives.
*** 9855,9874 ****
       the optimization itself is likely to take inordinate amounts of
       time.
  
! '-Wpointer-sign (C and Objective-C only)'
       Warn for pointer argument passing or assignment with different
       signedness.  This option is only supported for C and Objective-C.
!      It is implied by '-Wall' and by '-Wpedantic', which can be disabled
!      with '-Wno-pointer-sign'.
  
!      This warning is upgraded to an error by '-pedantic-errors'.
  
! '-Wstack-protector'
!      This option is only active when '-fstack-protector' is active.  It
       warns about functions that are not protected against stack
       smashing.
  
! '-Woverlength-strings'
       Warn about string constants that are longer than the "minimum
       maximum" length specified in the C standard.  Modern compilers
       generally allow string constants that are much longer than the
--- 9859,9878 ----
       the optimization itself is likely to take inordinate amounts of
       time.
  
! â€˜-Wpointer-sign (C and Objective-C only)â€™
       Warn for pointer argument passing or assignment with different
       signedness.  This option is only supported for C and Objective-C.
!      It is implied by â€˜-Wallâ€™ and by â€˜-Wpedanticâ€™, which can be disabled
!      with â€˜-Wno-pointer-signâ€™.
  
!      This warning is upgraded to an error by â€˜-pedantic-errorsâ€™.
  
! â€˜-Wstack-protectorâ€™
!      This option is only active when â€˜-fstack-protectorâ€™ is active.  It
       warns about functions that are not protected against stack
       smashing.
  
! â€˜-Woverlength-stringsâ€™
       Warn about string constants that are longer than the "minimum
       maximum" length specified in the C standard.  Modern compilers
       generally allow string constants that are much longer than the
*************** cases it may also cause false positives.
*** 9880,9906 ****
       in C99, it was raised to 4095.  C++98 does not specify a normative
       minimum maximum, so we do not diagnose overlength strings in C++.
  
!      This option is implied by '-Wpedantic', and can be disabled with
!      '-Wno-overlength-strings'.
  
! '-Wunsuffixed-float-constants (C and Objective-C only)'
  
       Issue a warning for any floating constant that does not have a
!      suffix.  When used together with '-Wsystem-headers' it warns about
       such constants in system header files.  This can be useful when
!      preparing code to use with the 'FLOAT_CONST_DECIMAL64' pragma from
       the decimal floating-point extension to C99.
  
! '-Wno-lto-type-mismatch'
  
       During the link-time optimization, do not warn about type
       mismatches in global declarations from different compilation units.
!      Requires '-flto' to be enabled.  Enabled by default.
  
! '-Wno-designated-init (C and Objective-C only)'
       Suppress warnings when a positional initializer is used to
       initialize a structure that has been marked with the
!      'designated_init' attribute.
  
  
  File: gcc.info,  Node: Static Analyzer Options,  Next: Debugging Options,  Prev: Warning Options,  Up: Invoking GCC
--- 9884,9910 ----
       in C99, it was raised to 4095.  C++98 does not specify a normative
       minimum maximum, so we do not diagnose overlength strings in C++.
  
!      This option is implied by â€˜-Wpedanticâ€™, and can be disabled with
!      â€˜-Wno-overlength-stringsâ€™.
  
! â€˜-Wunsuffixed-float-constants (C and Objective-C only)â€™
  
       Issue a warning for any floating constant that does not have a
!      suffix.  When used together with â€˜-Wsystem-headersâ€™ it warns about
       such constants in system header files.  This can be useful when
!      preparing code to use with the â€˜FLOAT_CONST_DECIMAL64â€™ pragma from
       the decimal floating-point extension to C99.
  
! â€˜-Wno-lto-type-mismatchâ€™
  
       During the link-time optimization, do not warn about type
       mismatches in global declarations from different compilation units.
!      Requires â€˜-fltoâ€™ to be enabled.  Enabled by default.
  
! â€˜-Wno-designated-init (C and Objective-C only)â€™
       Suppress warnings when a positional initializer is used to
       initialize a structure that has been marked with the
!      â€˜designated_initâ€™ attribute.
  
  
  File: gcc.info,  Node: Static Analyzer Options,  Next: Debugging Options,  Prev: Warning Options,  Up: Invoking GCC
*************** File: gcc.info,  Node: Static Analyzer O
*** 9908,9914 ****
  3.10 Options That Control Static Analysis
  =========================================
  
! '-fanalyzer'
       This option enables an static analysis of program flow which looks
       for "interesting" interprocedural paths through the code, and
       issues warnings for problems found on them.
--- 9912,9918 ----
  3.10 Options That Control Static Analysis
  =========================================
  
! â€˜-fanalyzerâ€™
       This option enables an static analysis of program flow which looks
       for "interesting" interprocedural paths through the code, and
       issues warnings for problems found on them.
*************** File: gcc.info,  Node: Static Analyzer O
*** 9978,10028 ****
       This option is only available if GCC was configured with analyzer
       support enabled.
  
! '-Wanalyzer-symbol-too-complex'
!      If '-fanalyzer' is enabled, the analyzer uses various heuristics to
       attempt to track the state of memory, but these can be defeated by
       sufficiently complicated code.
  
       By default, the analysis silently stops tracking values of
!      expressions if they exceed the threshold defined by '--param
!      analyzer-max-svalue-depth=VALUE', and falls back to an imprecise
       representation for such expressions.  The
!      '-Wanalyzer-symbol-too-complex' option warns if this occurs.
  
! '-Wanalyzer-too-complex'
!      If '-fanalyzer' is enabled, the analyzer uses various heuristics to
       attempt to explore the control flow and data flow in the program,
       but these can be defeated by sufficiently complicated code.
  
       By default, the analysis silently stops if the code is too
       complicated for the analyzer to fully explore and it reaches an
!      internal limit.  The '-Wanalyzer-too-complex' option warns if this
       occurs.
  
! '-Wno-analyzer-allocation-size'
!      This warning requires '-fanalyzer', which enables it; to disable
!      it, use '-Wno-analyzer-allocation-size'.
  
       This diagnostic warns for paths through the code in which a pointer
       to a buffer is assigned to point at a buffer with a size that is
!      not a multiple of 'sizeof (*pointer)'.
  
       See CWE-131: Incorrect Calculation of Buffer Size
       (https://cwe.mitre.org/data/definitions/131.html).
  
! '-Wno-analyzer-deref-before-check'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-deref-before-check' to disable it.
  
       This diagnostic warns for paths through the code in which a pointer
!      is checked for 'NULL' *after* it has already been dereferenced,
       suggesting that the pointer could have been NULL. Such cases
       suggest that the check for NULL is either redundant, or that it
       needs to be moved to before the pointer is dereferenced.
  
       This diagnostic also considers values passed to a function argument
!      marked with '__attribute__((nonnull))' as requiring a non-NULL
!      value, and thus will complain if such values are checked for 'NULL'
       after returning from such a function call.
  
       This diagnostic is unlikely to be reported when any level of
--- 9982,10032 ----
       This option is only available if GCC was configured with analyzer
       support enabled.
  
! â€˜-Wanalyzer-symbol-too-complexâ€™
!      If â€˜-fanalyzerâ€™ is enabled, the analyzer uses various heuristics to
       attempt to track the state of memory, but these can be defeated by
       sufficiently complicated code.
  
       By default, the analysis silently stops tracking values of
!      expressions if they exceed the threshold defined by â€˜--param
!      analyzer-max-svalue-depth=VALUEâ€™, and falls back to an imprecise
       representation for such expressions.  The
!      â€˜-Wanalyzer-symbol-too-complexâ€™ option warns if this occurs.
  
! â€˜-Wanalyzer-too-complexâ€™
!      If â€˜-fanalyzerâ€™ is enabled, the analyzer uses various heuristics to
       attempt to explore the control flow and data flow in the program,
       but these can be defeated by sufficiently complicated code.
  
       By default, the analysis silently stops if the code is too
       complicated for the analyzer to fully explore and it reaches an
!      internal limit.  The â€˜-Wanalyzer-too-complexâ€™ option warns if this
       occurs.
  
! â€˜-Wno-analyzer-allocation-sizeâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; to disable
!      it, use â€˜-Wno-analyzer-allocation-sizeâ€™.
  
       This diagnostic warns for paths through the code in which a pointer
       to a buffer is assigned to point at a buffer with a size that is
!      not a multiple of â€˜sizeof (*pointer)â€™.
  
       See CWE-131: Incorrect Calculation of Buffer Size
       (https://cwe.mitre.org/data/definitions/131.html).
  
! â€˜-Wno-analyzer-deref-before-checkâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-deref-before-checkâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which a pointer
!      is checked for â€˜NULLâ€™ *after* it has already been dereferenced,
       suggesting that the pointer could have been NULL. Such cases
       suggest that the check for NULL is either redundant, or that it
       needs to be moved to before the pointer is dereferenced.
  
       This diagnostic also considers values passed to a function argument
!      marked with â€˜__attribute__((nonnull))â€™ as requiring a non-NULL
!      value, and thus will complain if such values are checked for â€˜NULLâ€™
       after returning from such a function call.
  
       This diagnostic is unlikely to be reported when any level of
*************** File: gcc.info,  Node: Static Analyzer O
*** 10031,10060 ****
       away before the analyzer "sees" them.  Hence optimization should be
       disabled when attempting to trigger this diagnostic.
  
! '-Wno-analyzer-double-fclose'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-double-fclose' to disable it.
  
!      This diagnostic warns for paths through the code in which a 'FILE
!      *' can have 'fclose' called on it more than once.
  
       See CWE-1341: Multiple Releases of Same Resource or Handle
       (https://cwe.mitre.org/data/definitions/1341.html).
  
! '-Wno-analyzer-double-free'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-double-free' to disable it.
  
       This diagnostic warns for paths through the code in which a pointer
!      can have a deallocator called on it more than once, either 'free',
!      or a deallocator referenced by attribute 'malloc'.
  
       See CWE-415: Double Free
       (https://cwe.mitre.org/data/definitions/415.html).
  
! '-Wno-analyzer-exposure-through-output-file'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-exposure-through-output-file' to disable it.
  
       This diagnostic warns for paths through the code in which a
       security-sensitive value is written to an output file (such as
--- 10035,10064 ----
       away before the analyzer "sees" them.  Hence optimization should be
       disabled when attempting to trigger this diagnostic.
  
! â€˜-Wno-analyzer-double-fcloseâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-double-fcloseâ€™ to disable it.
  
!      This diagnostic warns for paths through the code in which a â€˜FILE
!      *â€™ can have â€˜fcloseâ€™ called on it more than once.
  
       See CWE-1341: Multiple Releases of Same Resource or Handle
       (https://cwe.mitre.org/data/definitions/1341.html).
  
! â€˜-Wno-analyzer-double-freeâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-double-freeâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which a pointer
!      can have a deallocator called on it more than once, either â€˜freeâ€™,
!      or a deallocator referenced by attribute â€˜mallocâ€™.
  
       See CWE-415: Double Free
       (https://cwe.mitre.org/data/definitions/415.html).
  
! â€˜-Wno-analyzer-exposure-through-output-fileâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-exposure-through-output-fileâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which a
       security-sensitive value is written to an output file (such as
*************** File: gcc.info,  Node: Static Analyzer O
*** 10063,10072 ****
       See CWE-532: Information Exposure Through Log Files
       (https://cwe.mitre.org/data/definitions/532.html).
  
! '-Wanalyzer-exposure-through-uninit-copy'
!      This warning requires both '-fanalyzer' and the use of a plugin to
       specify a function that copies across a "trust boundary".  Use
!      '-Wno-analyzer-exposure-through-uninit-copy' to disable it.
  
       This diagnostic warns for "infoleaks" - paths through the code in
       which uninitialized values are copied across a security boundary
--- 10067,10076 ----
       See CWE-532: Information Exposure Through Log Files
       (https://cwe.mitre.org/data/definitions/532.html).
  
! â€˜-Wanalyzer-exposure-through-uninit-copyâ€™
!      This warning requires both â€˜-fanalyzerâ€™ and the use of a plugin to
       specify a function that copies across a "trust boundary".  Use
!      â€˜-Wno-analyzer-exposure-through-uninit-copyâ€™ to disable it.
  
       This diagnostic warns for "infoleaks" - paths through the code in
       which uninitialized values are copied across a security boundary
*************** File: gcc.info,  Node: Static Analyzer O
*** 10076,10097 ****
       See CWE-200: Exposure of Sensitive Information to an Unauthorized
       Actor (https://cwe.mitre.org/data/definitions/200.html).
  
! '-Wno-analyzer-fd-access-mode-mismatch'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-fd-access-mode-mismatch' to disable it.
  
!      This diagnostic warns for paths through code in which a 'read' on a
       write-only file descriptor is attempted, or vice versa.
  
       This diagnostic also warns for code paths in a which a function
!      with attribute 'fd_arg_read (N)' is called with a file descriptor
!      opened with 'O_WRONLY' at referenced argument 'N' or a function
!      with attribute 'fd_arg_write (N)' is called with a file descriptor
!      opened with 'O_RDONLY' at referenced argument N.
  
! '-Wno-analyzer-fd-double-close'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-fd-double-close' to disable it.
  
       This diagnostic warns for paths through code in which a file
       descriptor can be closed more than once.
--- 10080,10101 ----
       See CWE-200: Exposure of Sensitive Information to an Unauthorized
       Actor (https://cwe.mitre.org/data/definitions/200.html).
  
! â€˜-Wno-analyzer-fd-access-mode-mismatchâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-fd-access-mode-mismatchâ€™ to disable it.
  
!      This diagnostic warns for paths through code in which a â€˜readâ€™ on a
       write-only file descriptor is attempted, or vice versa.
  
       This diagnostic also warns for code paths in a which a function
!      with attribute â€˜fd_arg_read (N)â€™ is called with a file descriptor
!      opened with â€˜O_WRONLYâ€™ at referenced argument â€˜Nâ€™ or a function
!      with attribute â€˜fd_arg_write (N)â€™ is called with a file descriptor
!      opened with â€˜O_RDONLYâ€™ at referenced argument N.
  
! â€˜-Wno-analyzer-fd-double-closeâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-fd-double-closeâ€™ to disable it.
  
       This diagnostic warns for paths through code in which a file
       descriptor can be closed more than once.
*************** File: gcc.info,  Node: Static Analyzer O
*** 10099,10107 ****
       See CWE-1341: Multiple Releases of Same Resource or Handle
       (https://cwe.mitre.org/data/definitions/1341.html).
  
! '-Wno-analyzer-fd-leak'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-fd-leak' to disable it.
  
       This diagnostic warns for paths through code in which an open file
       descriptor is leaked.
--- 10103,10111 ----
       See CWE-1341: Multiple Releases of Same Resource or Handle
       (https://cwe.mitre.org/data/definitions/1341.html).
  
! â€˜-Wno-analyzer-fd-leakâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-fd-leakâ€™ to disable it.
  
       This diagnostic warns for paths through code in which an open file
       descriptor is leaked.
*************** File: gcc.info,  Node: Static Analyzer O
*** 10110,10186 ****
       Effective Lifetime
       (https://cwe.mitre.org/data/definitions/775.html).
  
! '-Wno-analyzer-fd-phase-mismatch'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-fd-phase-mismatch' to disable it.
  
       This diagnostic warns for paths through code in which an operation
       is attempted in the wrong phase of a file descriptor's lifetime.
!      For example, it will warn on attempts to call 'accept' on a stream
!      socket that has not yet had 'listen' successfully called on it.
  
       See CWE-666: Operation on Resource in Wrong Phase of Lifetime
       (https://cwe.mitre.org/data/definitions/666.html).
  
! '-Wno-analyzer-fd-type-mismatch'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-fd-type-mismatch' to disable it.
  
       This diagnostic warns for paths through code in which an operation
       is attempted on the wrong type of file descriptor.  For example, it
       will warn on attempts to use socket operations on a file descriptor
!      obtained via 'open', or when attempting to use a stream socket
       operation on a datagram socket.
  
! '-Wno-analyzer-fd-use-after-close'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-fd-use-after-close' to disable it.
  
       This diagnostic warns for paths through code in which a read or
       write is called on a closed file descriptor.
  
       This diagnostic also warns for paths through code in which a
!      function with attribute 'fd_arg (N)' or 'fd_arg_read (N)' or
!      'fd_arg_write (N)' is called with a closed file descriptor at
!      referenced argument 'N'.
  
! '-Wno-analyzer-fd-use-without-check'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-fd-use-without-check' to disable it.
  
       This diagnostic warns for paths through code in which a file
       descriptor is used without being checked for validity.
  
       This diagnostic also warns for paths through code in which a
!      function with attribute 'fd_arg (N)' or 'fd_arg_read (N)' or
!      'fd_arg_write (N)' is called with a file descriptor, at referenced
!      argument 'N', without being checked for validity.
  
! '-Wno-analyzer-file-leak'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-file-leak' to disable it.
  
       This diagnostic warns for paths through the code in which a
!      '<stdio.h>' 'FILE *' stream object is leaked.
  
       See CWE-775: Missing Release of File Descriptor or Handle after
       Effective Lifetime
       (https://cwe.mitre.org/data/definitions/775.html).
  
! '-Wno-analyzer-free-of-non-heap'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-free-of-non-heap' to disable it.
  
!      This diagnostic warns for paths through the code in which 'free' is
       called on a non-heap pointer (e.g.  an on-stack buffer, or a
       global).
  
       See CWE-590: Free of Memory not on the Heap
       (https://cwe.mitre.org/data/definitions/590.html).
  
! '-Wno-analyzer-imprecise-fp-arithmetic'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-imprecise-fp-arithmetic' to disable it.
  
       This diagnostic warns for paths through the code in which
       floating-point arithmetic is used in locations where precise
--- 10114,10190 ----
       Effective Lifetime
       (https://cwe.mitre.org/data/definitions/775.html).
  
! â€˜-Wno-analyzer-fd-phase-mismatchâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-fd-phase-mismatchâ€™ to disable it.
  
       This diagnostic warns for paths through code in which an operation
       is attempted in the wrong phase of a file descriptor's lifetime.
!      For example, it will warn on attempts to call â€˜acceptâ€™ on a stream
!      socket that has not yet had â€˜listenâ€™ successfully called on it.
  
       See CWE-666: Operation on Resource in Wrong Phase of Lifetime
       (https://cwe.mitre.org/data/definitions/666.html).
  
! â€˜-Wno-analyzer-fd-type-mismatchâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-fd-type-mismatchâ€™ to disable it.
  
       This diagnostic warns for paths through code in which an operation
       is attempted on the wrong type of file descriptor.  For example, it
       will warn on attempts to use socket operations on a file descriptor
!      obtained via â€˜openâ€™, or when attempting to use a stream socket
       operation on a datagram socket.
  
! â€˜-Wno-analyzer-fd-use-after-closeâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-fd-use-after-closeâ€™ to disable it.
  
       This diagnostic warns for paths through code in which a read or
       write is called on a closed file descriptor.
  
       This diagnostic also warns for paths through code in which a
!      function with attribute â€˜fd_arg (N)â€™ or â€˜fd_arg_read (N)â€™ or
!      â€˜fd_arg_write (N)â€™ is called with a closed file descriptor at
!      referenced argument â€˜Nâ€™.
  
! â€˜-Wno-analyzer-fd-use-without-checkâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-fd-use-without-checkâ€™ to disable it.
  
       This diagnostic warns for paths through code in which a file
       descriptor is used without being checked for validity.
  
       This diagnostic also warns for paths through code in which a
!      function with attribute â€˜fd_arg (N)â€™ or â€˜fd_arg_read (N)â€™ or
!      â€˜fd_arg_write (N)â€™ is called with a file descriptor, at referenced
!      argument â€˜Nâ€™, without being checked for validity.
  
! â€˜-Wno-analyzer-file-leakâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-file-leakâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which a
!      â€˜<stdio.h>â€™ â€˜FILE *â€™ stream object is leaked.
  
       See CWE-775: Missing Release of File Descriptor or Handle after
       Effective Lifetime
       (https://cwe.mitre.org/data/definitions/775.html).
  
! â€˜-Wno-analyzer-free-of-non-heapâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-free-of-non-heapâ€™ to disable it.
  
!      This diagnostic warns for paths through the code in which â€˜freeâ€™ is
       called on a non-heap pointer (e.g.  an on-stack buffer, or a
       global).
  
       See CWE-590: Free of Memory not on the Heap
       (https://cwe.mitre.org/data/definitions/590.html).
  
! â€˜-Wno-analyzer-imprecise-fp-arithmeticâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-imprecise-fp-arithmeticâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which
       floating-point arithmetic is used in locations where precise
*************** File: gcc.info,  Node: Static Analyzer O
*** 10188,10205 ****
       floating-point operands inside the calculation of an allocation
       size at the moment.
  
! '-Wno-analyzer-infinite-loop'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-infinite-loop' to disable it.
  
       This diagnostics warns for paths through the code which appear to
       lead to an infinite loop.
  
       Specifically, the analyzer will issue this warning when it "sees" a
       loop in which:
!         * no externally-visible work could be being done within the loop
!         * there is no way to escape from the loop
!         * the analyzer is sufficiently confident about the program state
            throughout the loop to know that the above are true
  
       One way for this warning to be emitted is when there is an
--- 10192,10209 ----
       floating-point operands inside the calculation of an allocation
       size at the moment.
  
! â€˜-Wno-analyzer-infinite-loopâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-infinite-loopâ€™ to disable it.
  
       This diagnostics warns for paths through the code which appear to
       lead to an infinite loop.
  
       Specifically, the analyzer will issue this warning when it "sees" a
       loop in which:
!         â€¢ no externally-visible work could be being done within the loop
!         â€¢ there is no way to escape from the loop
!         â€¢ the analyzer is sufficiently confident about the program state
            throughout the loop to know that the above are true
  
       One way for this warning to be emitted is when there is an
*************** File: gcc.info,  Node: Static Analyzer O
*** 10223,10240 ****
                   }
                }
  
!      The analyzer will complain for the above case because if 'opcode'
!      ever matches none of the cases, the 'switch' will follow the
!      implicit 'default' case, making the body of the loop be a "no-op"
!      with 'cpu_state.pc' unchanged, and thus using the same value of
!      'opcode' on all subseqent iterations, leading to an infinite loop.
  
       See CWE-835: Loop with Unreachable Exit Condition ('Infinite Loop')
       (https://cwe.mitre.org/data/definitions/835.html).
  
! '-Wno-analyzer-infinite-recursion'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-infinite-recursion' to disable it.
  
       This diagnostics warns for paths through the code which appear to
       lead to infinite recursion.
--- 10227,10244 ----
                   }
                }
  
!      The analyzer will complain for the above case because if â€˜opcodeâ€™
!      ever matches none of the cases, the â€˜switchâ€™ will follow the
!      implicit â€˜defaultâ€™ case, making the body of the loop be a "no-op"
!      with â€˜cpu_state.pcâ€™ unchanged, and thus using the same value of
!      â€˜opcodeâ€™ on all subseqent iterations, leading to an infinite loop.
  
       See CWE-835: Loop with Unreachable Exit Condition ('Infinite Loop')
       (https://cwe.mitre.org/data/definitions/835.html).
  
! â€˜-Wno-analyzer-infinite-recursionâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-infinite-recursionâ€™ to disable it.
  
       This diagnostics warns for paths through the code which appear to
       lead to infinite recursion.
*************** File: gcc.info,  Node: Static Analyzer O
*** 10251,10297 ****
       "sees" them.  Hence optimization should be disabled when attempting
       to trigger this diagnostic.
  
!      Compare with '-Winfinite-recursion', which provides a similar
       diagnostic, but is implemented in a different way.
  
       See CWE-674: Uncontrolled Recursion
       (https://cwe.mitre.org/data/definitions/674.html).
  
! '-Wno-analyzer-jump-through-null'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-jump-through-null' to disable it.
  
!      This diagnostic warns for paths through the code in which a 'NULL'
       function pointer is called.
  
! '-Wno-analyzer-malloc-leak'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-malloc-leak' to disable it.
  
       This diagnostic warns for paths through the code in which a pointer
!      allocated via an allocator is leaked: either 'malloc', or a
!      function marked with attribute 'malloc'.
  
       See CWE-401: Missing Release of Memory after Effective Lifetime
       (https://cwe.mitre.org/data/definitions/401.html).
  
! '-Wno-analyzer-mismatching-deallocation'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-mismatching-deallocation' to disable it.
  
       This diagnostic warns for paths through the code in which the wrong
       deallocation function is called on a pointer value, based on which
       function was used to allocate the pointer value.  The diagnostic
!      will warn about mismatches between 'free', scalar 'delete' and
!      vector 'delete[]', and those marked as allocator/deallocator pairs
!      using attribute 'malloc'.
  
       See CWE-762: Mismatched Memory Management Routines
       (https://cwe.mitre.org/data/definitions/762.html).
  
! '-Wno-analyzer-out-of-bounds'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-out-of-bounds' to disable it.
  
       This diagnostic warns for paths through the code in which a buffer
       is definitely read or written out-of-bounds.  The diagnostic
--- 10255,10301 ----
       "sees" them.  Hence optimization should be disabled when attempting
       to trigger this diagnostic.
  
!      Compare with â€˜-Winfinite-recursionâ€™, which provides a similar
       diagnostic, but is implemented in a different way.
  
       See CWE-674: Uncontrolled Recursion
       (https://cwe.mitre.org/data/definitions/674.html).
  
! â€˜-Wno-analyzer-jump-through-nullâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-jump-through-nullâ€™ to disable it.
  
!      This diagnostic warns for paths through the code in which a â€˜NULLâ€™
       function pointer is called.
  
! â€˜-Wno-analyzer-malloc-leakâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-malloc-leakâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which a pointer
!      allocated via an allocator is leaked: either â€˜mallocâ€™, or a
!      function marked with attribute â€˜mallocâ€™.
  
       See CWE-401: Missing Release of Memory after Effective Lifetime
       (https://cwe.mitre.org/data/definitions/401.html).
  
! â€˜-Wno-analyzer-mismatching-deallocationâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-mismatching-deallocationâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which the wrong
       deallocation function is called on a pointer value, based on which
       function was used to allocate the pointer value.  The diagnostic
!      will warn about mismatches between â€˜freeâ€™, scalar â€˜deleteâ€™ and
!      vector â€˜delete[]â€™, and those marked as allocator/deallocator pairs
!      using attribute â€˜mallocâ€™.
  
       See CWE-762: Mismatched Memory Management Routines
       (https://cwe.mitre.org/data/definitions/762.html).
  
! â€˜-Wno-analyzer-out-of-boundsâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-out-of-boundsâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which a buffer
       is definitely read or written out-of-bounds.  The diagnostic
*************** File: gcc.info,  Node: Static Analyzer O
*** 10313,10323 ****
       memory, the relative sizes involved, the direction of the access
       (read vs write), and, in some cases, the values of data involved.
       This diagram can be suppressed using
!      '-fdiagnostics-text-art-charset=none'.
  
! '-Wno-analyzer-overlapping-buffers'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-overlapping-buffers' to disable it.
  
       This diagnostic warns for paths through the code in which
       overlapping buffers are passed to an API for which the behavior on
--- 10317,10327 ----
       memory, the relative sizes involved, the direction of the access
       (read vs write), and, in some cases, the values of data involved.
       This diagram can be suppressed using
!      â€˜-fdiagnostics-text-art-charset=noneâ€™.
  
! â€˜-Wno-analyzer-overlapping-buffersâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-overlapping-buffersâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which
       overlapping buffers are passed to an API for which the behavior on
*************** File: gcc.info,  Node: Static Analyzer O
*** 10325,10349 ****
  
       Specifically, the diagnostic occurs on calls to the following
       functions
!         * 'memcpy'
!         * 'strcat'
!         * 'strcpy'
       for cases where the buffers are known to overlap.
  
! '-Wno-analyzer-possible-null-argument'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-possible-null-argument' to disable it.
  
       This diagnostic warns for paths through the code in which a
       possibly-NULL value is passed to a function argument marked with
!      '__attribute__((nonnull))' as requiring a non-NULL value.
  
       See CWE-690: Unchecked Return Value to NULL Pointer Dereference
       (https://cwe.mitre.org/data/definitions/690.html).
  
! '-Wno-analyzer-possible-null-dereference'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-possible-null-dereference' to disable it.
  
       This diagnostic warns for paths through the code in which a
       possibly-NULL value is dereferenced.
--- 10329,10353 ----
  
       Specifically, the diagnostic occurs on calls to the following
       functions
!         â€¢ â€˜memcpyâ€™
!         â€¢ â€˜strcatâ€™
!         â€¢ â€˜strcpyâ€™
       for cases where the buffers are known to overlap.
  
! â€˜-Wno-analyzer-possible-null-argumentâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-possible-null-argumentâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which a
       possibly-NULL value is passed to a function argument marked with
!      â€˜__attribute__((nonnull))â€™ as requiring a non-NULL value.
  
       See CWE-690: Unchecked Return Value to NULL Pointer Dereference
       (https://cwe.mitre.org/data/definitions/690.html).
  
! â€˜-Wno-analyzer-possible-null-dereferenceâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-possible-null-dereferenceâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which a
       possibly-NULL value is dereferenced.
*************** File: gcc.info,  Node: Static Analyzer O
*** 10351,10370 ****
       See CWE-690: Unchecked Return Value to NULL Pointer Dereference
       (https://cwe.mitre.org/data/definitions/690.html).
  
! '-Wno-analyzer-null-argument'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-null-argument' to disable it.
  
       This diagnostic warns for paths through the code in which a value
       known to be NULL is passed to a function argument marked with
!      '__attribute__((nonnull))' as requiring a non-NULL value.
  
       See CWE-476: NULL Pointer Dereference
       (https://cwe.mitre.org/data/definitions/476.html).
  
! '-Wno-analyzer-null-dereference'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-null-dereference' to disable it.
  
       This diagnostic warns for paths through the code in which a value
       known to be NULL is dereferenced.
--- 10355,10374 ----
       See CWE-690: Unchecked Return Value to NULL Pointer Dereference
       (https://cwe.mitre.org/data/definitions/690.html).
  
! â€˜-Wno-analyzer-null-argumentâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-null-argumentâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which a value
       known to be NULL is passed to a function argument marked with
!      â€˜__attribute__((nonnull))â€™ as requiring a non-NULL value.
  
       See CWE-476: NULL Pointer Dereference
       (https://cwe.mitre.org/data/definitions/476.html).
  
! â€˜-Wno-analyzer-null-dereferenceâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-null-dereferenceâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which a value
       known to be NULL is dereferenced.
*************** File: gcc.info,  Node: Static Analyzer O
*** 10372,10431 ****
       See CWE-476: NULL Pointer Dereference
       (https://cwe.mitre.org/data/definitions/476.html).
  
! '-Wno-analyzer-putenv-of-auto-var'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-putenv-of-auto-var' to disable it.
  
       This diagnostic warns for paths through the code in which a call to
!      'putenv' is passed a pointer to an automatic variable or an
       on-stack buffer.
  
       See POS34-C. Do not call putenv() with a pointer to an automatic
       variable as the argument
       (https://wiki.sei.cmu.edu/confluence/x/6NYxBQ).
  
! '-Wno-analyzer-shift-count-negative'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-shift-count-negative' to disable it.
  
       This diagnostic warns for paths through the code in which a shift
       is attempted with a negative count.  It is analogous to the
!      '-Wshift-count-negative' diagnostic implemented in the C/C++ front
       ends, but is implemented based on analyzing interprocedural paths,
       rather than merely parsing the syntax tree.  However, the analyzer
       does not prioritize detection of such paths, so false negatives are
       more likely relative to other warnings.
  
! '-Wno-analyzer-shift-count-overflow'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-shift-count-overflow' to disable it.
  
       This diagnostic warns for paths through the code in which a shift
       is attempted with a count greater than or equal to the precision of
       the operand's type.  It is analogous to the
!      '-Wshift-count-overflow' diagnostic implemented in the C/C++ front
       ends, but is implemented based on analyzing interprocedural paths,
       rather than merely parsing the syntax tree.  However, the analyzer
       does not prioritize detection of such paths, so false negatives are
       more likely relative to other warnings.
  
! '-Wno-analyzer-stale-setjmp-buffer'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-stale-setjmp-buffer' to disable it.
  
!      This diagnostic warns for paths through the code in which 'longjmp'
!      is called to rewind to a 'jmp_buf' relating to a 'setjmp' call in a
       function that has returned.
  
!      When 'setjmp' is called on a 'jmp_buf' to record a rewind location,
       it records the stack frame.  The stack frame becomes invalid when
!      the function containing the 'setjmp' call returns.  Attempting to
!      rewind to it via 'longjmp' would reference a stack frame that no
       longer exists, and likely lead to a crash (or worse).
  
! '-Wno-analyzer-tainted-allocation-size'
!      This warning requires '-fanalyzer' which enables it; use
!      '-Wno-analyzer-tainted-allocation-size' to disable it.
  
       This diagnostic warns for paths through the code in which a value
       that could be under an attacker's control is used as the size of an
--- 10376,10435 ----
       See CWE-476: NULL Pointer Dereference
       (https://cwe.mitre.org/data/definitions/476.html).
  
! â€˜-Wno-analyzer-putenv-of-auto-varâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-putenv-of-auto-varâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which a call to
!      â€˜putenvâ€™ is passed a pointer to an automatic variable or an
       on-stack buffer.
  
       See POS34-C. Do not call putenv() with a pointer to an automatic
       variable as the argument
       (https://wiki.sei.cmu.edu/confluence/x/6NYxBQ).
  
! â€˜-Wno-analyzer-shift-count-negativeâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-shift-count-negativeâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which a shift
       is attempted with a negative count.  It is analogous to the
!      â€˜-Wshift-count-negativeâ€™ diagnostic implemented in the C/C++ front
       ends, but is implemented based on analyzing interprocedural paths,
       rather than merely parsing the syntax tree.  However, the analyzer
       does not prioritize detection of such paths, so false negatives are
       more likely relative to other warnings.
  
! â€˜-Wno-analyzer-shift-count-overflowâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-shift-count-overflowâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which a shift
       is attempted with a count greater than or equal to the precision of
       the operand's type.  It is analogous to the
!      â€˜-Wshift-count-overflowâ€™ diagnostic implemented in the C/C++ front
       ends, but is implemented based on analyzing interprocedural paths,
       rather than merely parsing the syntax tree.  However, the analyzer
       does not prioritize detection of such paths, so false negatives are
       more likely relative to other warnings.
  
! â€˜-Wno-analyzer-stale-setjmp-bufferâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-stale-setjmp-bufferâ€™ to disable it.
  
!      This diagnostic warns for paths through the code in which â€˜longjmpâ€™
!      is called to rewind to a â€˜jmp_bufâ€™ relating to a â€˜setjmpâ€™ call in a
       function that has returned.
  
!      When â€˜setjmpâ€™ is called on a â€˜jmp_bufâ€™ to record a rewind location,
       it records the stack frame.  The stack frame becomes invalid when
!      the function containing the â€˜setjmpâ€™ call returns.  Attempting to
!      rewind to it via â€˜longjmpâ€™ would reference a stack frame that no
       longer exists, and likely lead to a crash (or worse).
  
! â€˜-Wno-analyzer-tainted-allocation-sizeâ€™
!      This warning requires â€˜-fanalyzerâ€™ which enables it; use
!      â€˜-Wno-analyzer-tainted-allocation-sizeâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which a value
       that could be under an attacker's control is used as the size of an
*************** File: gcc.info,  Node: Static Analyzer O
*** 10436,10451 ****
       See CWE-789: Memory Allocation with Excessive Size Value
       (https://cwe.mitre.org/data/definitions/789.html).
  
! '-Wno-analyzer-tainted-assertion'
  
!      This warning requires '-fanalyzer' which enables it; use
!      '-Wno-analyzer-tainted-assertion' to disable it.
  
       This diagnostic warns for paths through the code in which a value
       that could be under an attacker's control is used as part of a
       condition without being first sanitized, and that condition guards
!      a call to a function marked with attribute 'noreturn' (such as the
!      function '__builtin_unreachable').  Such functions typically
       indicate abnormal termination of the program, such as for assertion
       failure handlers.  For example:
  
--- 10440,10455 ----
       See CWE-789: Memory Allocation with Excessive Size Value
       (https://cwe.mitre.org/data/definitions/789.html).
  
! â€˜-Wno-analyzer-tainted-assertionâ€™
  
!      This warning requires â€˜-fanalyzerâ€™ which enables it; use
!      â€˜-Wno-analyzer-tainted-assertionâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which a value
       that could be under an attacker's control is used as part of a
       condition without being first sanitized, and that condition guards
!      a call to a function marked with attribute â€˜noreturnâ€™ (such as the
!      function â€˜__builtin_unreachableâ€™).  Such functions typically
       indicate abnormal termination of the program, such as for assertion
       failure handlers.  For example:
  
*************** File: gcc.info,  Node: Static Analyzer O
*** 10453,10463 ****
  
       In such cases:
  
!         * when assertion-checking is enabled: an attacker could trigger
            a denial of service by injecting an assertion failure
  
!         * when assertion-checking is disabled, such as by defining
!           'NDEBUG', an attacker could inject data that subverts the
            process, since it presumably violates a precondition that is
            being assumed by the code.
  
--- 10457,10467 ----
  
       In such cases:
  
!         â€¢ when assertion-checking is enabled: an attacker could trigger
            a denial of service by injecting an assertion failure
  
!         â€¢ when assertion-checking is disabled, such as by defining
!           â€˜NDEBUGâ€™, an attacker could inject data that subverts the
            process, since it presumably violates a precondition that is
            being assumed by the code.
  
*************** File: gcc.info,  Node: Static Analyzer O
*** 10467,10474 ****
       on builds in which assertion-checking is enabled.
  
       For the purpose of this warning, any function marked with attribute
!      'noreturn' is considered as a possible assertion failure handler,
!      including '__builtin_unreachable'.  Note that these functions are
       sometimes removed by the optimizer before the analyzer "sees" them.
       Hence optimization should be disabled when attempting to trigger
       this diagnostic.
--- 10471,10478 ----
       on builds in which assertion-checking is enabled.
  
       For the purpose of this warning, any function marked with attribute
!      â€˜noreturnâ€™ is considered as a possible assertion failure handler,
!      including â€˜__builtin_unreachableâ€™.  Note that these functions are
       sometimes removed by the optimizer before the analyzer "sees" them.
       Hence optimization should be disabled when attempting to trigger
       this diagnostic.
*************** File: gcc.info,  Node: Static Analyzer O
*** 10490,10498 ****
       despite the above not being an assertion failure, strictly
       speaking.
  
! '-Wno-analyzer-tainted-array-index'
!      This warning requires '-fanalyzer' which enables it; use
!      '-Wno-analyzer-tainted-array-index' to disable it.
  
       This diagnostic warns for paths through the code in which a value
       that could be under an attacker's control is used as the index of
--- 10494,10502 ----
       despite the above not being an assertion failure, strictly
       speaking.
  
! â€˜-Wno-analyzer-tainted-array-indexâ€™
!      This warning requires â€˜-fanalyzerâ€™ which enables it; use
!      â€˜-Wno-analyzer-tainted-array-indexâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which a value
       that could be under an attacker's control is used as the index of
*************** File: gcc.info,  Node: Static Analyzer O
*** 10502,10510 ****
       See CWE-129: Improper Validation of Array Index
       (https://cwe.mitre.org/data/definitions/129.html).
  
! '-Wno-analyzer-tainted-divisor'
!      This warning requires '-fanalyzer' which enables it; use
!      '-Wno-analyzer-tainted-divisor' to disable it.
  
       This diagnostic warns for paths through the code in which a value
       that could be under an attacker's control is used as the divisor in
--- 10506,10514 ----
       See CWE-129: Improper Validation of Array Index
       (https://cwe.mitre.org/data/definitions/129.html).
  
! â€˜-Wno-analyzer-tainted-divisorâ€™
!      This warning requires â€˜-fanalyzerâ€™ which enables it; use
!      â€˜-Wno-analyzer-tainted-divisorâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which a value
       that could be under an attacker's control is used as the divisor in
*************** File: gcc.info,  Node: Static Analyzer O
*** 10514,10522 ****
       See CWE-369: Divide By Zero
       (https://cwe.mitre.org/data/definitions/369.html).
  
! '-Wno-analyzer-tainted-offset'
!      This warning requires '-fanalyzer' which enables it; use
!      '-Wno-analyzer-tainted-offset' to disable it.
  
       This diagnostic warns for paths through the code in which a value
       that could be under an attacker's control is used as a pointer
--- 10518,10526 ----
       See CWE-369: Divide By Zero
       (https://cwe.mitre.org/data/definitions/369.html).
  
! â€˜-Wno-analyzer-tainted-offsetâ€™
!      This warning requires â€˜-fanalyzerâ€™ which enables it; use
!      â€˜-Wno-analyzer-tainted-offsetâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which a value
       that could be under an attacker's control is used as a pointer
*************** File: gcc.info,  Node: Static Analyzer O
*** 10526,10546 ****
       See CWE-823: Use of Out-of-range Pointer Offset
       (https://cwe.mitre.org/data/definitions/823.html).
  
! '-Wno-analyzer-tainted-size'
!      This warning requires '-fanalyzer' which enables it; use
!      '-Wno-analyzer-tainted-size' to disable it.
  
       This diagnostic warns for paths through the code in which a value
       that could be under an attacker's control is used as the size of an
!      operation such as 'memset' without being sanitized, so that an
       attacker could inject an out-of-bounds access.
  
       See CWE-129: Improper Validation of Array Index
       (https://cwe.mitre.org/data/definitions/129.html).
  
! '-Wno-analyzer-undefined-behavior-ptrdiff'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-undefined-behavior-ptrdiff' to disable it.
  
       This diagnostic warns for paths through the code in which a pointer
       subtraction occurs where the pointers refer to different chunks of
--- 10530,10550 ----
       See CWE-823: Use of Out-of-range Pointer Offset
       (https://cwe.mitre.org/data/definitions/823.html).
  
! â€˜-Wno-analyzer-tainted-sizeâ€™
!      This warning requires â€˜-fanalyzerâ€™ which enables it; use
!      â€˜-Wno-analyzer-tainted-sizeâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which a value
       that could be under an attacker's control is used as the size of an
!      operation such as â€˜memsetâ€™ without being sanitized, so that an
       attacker could inject an out-of-bounds access.
  
       See CWE-129: Improper Validation of Array Index
       (https://cwe.mitre.org/data/definitions/129.html).
  
! â€˜-Wno-analyzer-undefined-behavior-ptrdiffâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-undefined-behavior-ptrdiffâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which a pointer
       subtraction occurs where the pointers refer to different chunks of
*************** File: gcc.info,  Node: Static Analyzer O
*** 10551,10649 ****
       See CWE-469: Use of Pointer Subtraction to Determine Size
       (https://cwe.mitre.org/data/definitions/469.html).
  
! '-Wno-analyzer-undefined-behavior-strtok'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-undefined-behavior-strtok' to disable it.
  
       This diagnostic warns for paths through the code in which a call is
!      made to 'strtok' with undefined behavior.
  
       Specifically, passing NULL as the first parameter for the initial
!      call to 'strtok' within a process has undefined behavior.
  
! '-Wno-analyzer-unsafe-call-within-signal-handler'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-unsafe-call-within-signal-handler' to disable it.
  
       This diagnostic warns for paths through the code in which a
!      function known to be async-signal-unsafe (such as 'fprintf') is
       called from a signal handler.
  
       See CWE-479: Signal Handler Use of a Non-reentrant Function
       (https://cwe.mitre.org/data/definitions/479.html).
  
! '-Wno-analyzer-use-after-free'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-use-after-free' to disable it.
  
       This diagnostic warns for paths through the code in which a pointer
!      is used after a deallocator is called on it: either 'free', or a
!      deallocator referenced by attribute 'malloc'.
  
       See CWE-416: Use After Free
       (https://cwe.mitre.org/data/definitions/416.html).
  
! '-Wno-analyzer-use-of-pointer-in-stale-stack-frame'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-use-of-pointer-in-stale-stack-frame' to disable it.
  
       This diagnostic warns for paths through the code in which a pointer
       is dereferenced that points to a variable in a stale stack frame.
  
! '-Wno-analyzer-va-arg-type-mismatch'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-va-arg-type-mismatch' to disable it.
  
       This diagnostic warns for interprocedural paths through the code
!      for which the analyzer detects an attempt to use 'va_arg' to
       extract a value passed to a variadic call, but uses a type that
       does not match that of the expression passed to the call.
  
       See CWE-686: Function Call With Incorrect Argument Type
       (https://cwe.mitre.org/data/definitions/686.html).
  
! '-Wno-analyzer-va-list-exhausted'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-va-list-exhausted' to disable it.
  
       This diagnostic warns for interprocedural paths through the code
!      for which the analyzer detects an attempt to use 'va_arg' to access
       the next value passed to a variadic call, but all of the values in
!      the 'va_list' have already been consumed.
  
       See CWE-685: Function Call With Incorrect Number of Arguments
       (https://cwe.mitre.org/data/definitions/685.html).
  
! '-Wno-analyzer-va-list-leak'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-va-list-leak' to disable it.
  
       This diagnostic warns for interprocedural paths through the code
!      for which the analyzer detects that 'va_start' or 'va_copy' has
!      been called on a 'va_list' without a corresponding call to
!      'va_end'.
  
! '-Wno-analyzer-va-list-use-after-va-end'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-va-list-use-after-va-end' to disable it.
  
       This diagnostic warns for interprocedural paths through the code
!      for which the analyzer detects an attempt to use a 'va_list' after
!      'va_end' has been called on it.  'va_list'.
  
! '-Wno-analyzer-write-to-const'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-write-to-const' to disable it.
  
       This diagnostic warns for paths through the code in which the
!      analyzer detects an attempt to write through a pointer to a 'const'
       object.  However, the analyzer does not prioritize detection of
       such paths, so false negatives are more likely relative to other
       warnings.
  
! '-Wno-analyzer-write-to-string-literal'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-write-to-string-literal' to disable it.
  
       This diagnostic warns for paths through the code in which the
       analyzer detects an attempt to write through a pointer to a string
--- 10555,10653 ----
       See CWE-469: Use of Pointer Subtraction to Determine Size
       (https://cwe.mitre.org/data/definitions/469.html).
  
! â€˜-Wno-analyzer-undefined-behavior-strtokâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-undefined-behavior-strtokâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which a call is
!      made to â€˜strtokâ€™ with undefined behavior.
  
       Specifically, passing NULL as the first parameter for the initial
!      call to â€˜strtokâ€™ within a process has undefined behavior.
  
! â€˜-Wno-analyzer-unsafe-call-within-signal-handlerâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-unsafe-call-within-signal-handlerâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which a
!      function known to be async-signal-unsafe (such as â€˜fprintfâ€™) is
       called from a signal handler.
  
       See CWE-479: Signal Handler Use of a Non-reentrant Function
       (https://cwe.mitre.org/data/definitions/479.html).
  
! â€˜-Wno-analyzer-use-after-freeâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-use-after-freeâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which a pointer
!      is used after a deallocator is called on it: either â€˜freeâ€™, or a
!      deallocator referenced by attribute â€˜mallocâ€™.
  
       See CWE-416: Use After Free
       (https://cwe.mitre.org/data/definitions/416.html).
  
! â€˜-Wno-analyzer-use-of-pointer-in-stale-stack-frameâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-use-of-pointer-in-stale-stack-frameâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which a pointer
       is dereferenced that points to a variable in a stale stack frame.
  
! â€˜-Wno-analyzer-va-arg-type-mismatchâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-va-arg-type-mismatchâ€™ to disable it.
  
       This diagnostic warns for interprocedural paths through the code
!      for which the analyzer detects an attempt to use â€˜va_argâ€™ to
       extract a value passed to a variadic call, but uses a type that
       does not match that of the expression passed to the call.
  
       See CWE-686: Function Call With Incorrect Argument Type
       (https://cwe.mitre.org/data/definitions/686.html).
  
! â€˜-Wno-analyzer-va-list-exhaustedâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-va-list-exhaustedâ€™ to disable it.
  
       This diagnostic warns for interprocedural paths through the code
!      for which the analyzer detects an attempt to use â€˜va_argâ€™ to access
       the next value passed to a variadic call, but all of the values in
!      the â€˜va_listâ€™ have already been consumed.
  
       See CWE-685: Function Call With Incorrect Number of Arguments
       (https://cwe.mitre.org/data/definitions/685.html).
  
! â€˜-Wno-analyzer-va-list-leakâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-va-list-leakâ€™ to disable it.
  
       This diagnostic warns for interprocedural paths through the code
!      for which the analyzer detects that â€˜va_startâ€™ or â€˜va_copyâ€™ has
!      been called on a â€˜va_listâ€™ without a corresponding call to
!      â€˜va_endâ€™.
  
! â€˜-Wno-analyzer-va-list-use-after-va-endâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-va-list-use-after-va-endâ€™ to disable it.
  
       This diagnostic warns for interprocedural paths through the code
!      for which the analyzer detects an attempt to use a â€˜va_listâ€™ after
!      â€˜va_endâ€™ has been called on it.  â€˜va_listâ€™.
  
! â€˜-Wno-analyzer-write-to-constâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-write-to-constâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which the
!      analyzer detects an attempt to write through a pointer to a â€˜constâ€™
       object.  However, the analyzer does not prioritize detection of
       such paths, so false negatives are more likely relative to other
       warnings.
  
! â€˜-Wno-analyzer-write-to-string-literalâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-write-to-string-literalâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which the
       analyzer detects an attempt to write through a pointer to a string
*************** File: gcc.info,  Node: Static Analyzer O
*** 10651,10659 ****
       such paths, so false negatives are more likely relative to other
       warnings.
  
! '-Wno-analyzer-use-of-uninitialized-value'
!      This warning requires '-fanalyzer', which enables it; use
!      '-Wno-analyzer-use-of-uninitialized-value' to disable it.
  
       This diagnostic warns for paths through the code in which an
       uninitialized value is used.
--- 10655,10663 ----
       such paths, so false negatives are more likely relative to other
       warnings.
  
! â€˜-Wno-analyzer-use-of-uninitialized-valueâ€™
!      This warning requires â€˜-fanalyzerâ€™, which enables it; use
!      â€˜-Wno-analyzer-use-of-uninitialized-valueâ€™ to disable it.
  
       This diagnostic warns for paths through the code in which an
       uninitialized value is used.
*************** File: gcc.info,  Node: Static Analyzer O
*** 10664,10779 ****
   The analyzer has hardcoded knowledge about the behavior of the
  following memory-management functions:
  
!    * 'alloca'
!    * The built-in functions '__builtin_alloc',
!      '__builtin_alloc_with_align',
!    * '__builtin_calloc', '__builtin_free', '__builtin_malloc',
!      '__builtin_memcpy', '__builtin_memcpy_chk', '__builtin_memset',
!      '__builtin_memset_chk', '__builtin_realloc',
!      '__builtin_stack_restore', and '__builtin_stack_save'
!    * 'calloc'
!    * 'free'
!    * 'malloc'
!    * 'memset'
!    * 'operator delete'
!    * 'operator delete []'
!    * 'operator new'
!    * 'operator new []'
!    * 'realloc'
!    * 'strdup'
!    * 'strndup'
  
  of the following functions for working with file descriptors:
  
!    * 'open'
!    * 'close'
!    * 'creat'
!    * 'dup', 'dup2' and 'dup3'
!    * 'isatty'
!    * 'pipe', and 'pipe2'
!    * 'read'
!    * 'write'
!    * 'socket', 'bind', 'listen', 'accept', and 'connect'
  
! of the following functions for working with '<stdio.h>' streams:
!    * The built-in functions '__builtin_fprintf',
!      '__builtin_fprintf_unlocked', '__builtin_fputc',
!      '__builtin_fputc_unlocked', '__builtin_fputs',
!      '__builtin_fputs_unlocked', '__builtin_fwrite',
!      '__builtin_fwrite_unlocked', '__builtin_printf',
!      '__builtin_printf_unlocked', '__builtin_putc', '__builtin_putchar',
!      '__builtin_putchar_unlocked', '__builtin_putc_unlocked',
!      '__builtin_puts', '__builtin_puts_unlocked', '__builtin_vfprintf',
!      and '__builtin_vprintf'
!    * 'fopen'
!    * 'fclose'
!    * 'ferror'
!    * 'fgets'
!    * 'fgets_unlocked'
!    * 'fileno'
!    * 'fread'
!    * 'getc'
!    * 'getchar'
!    * 'fprintf'
!    * 'printf'
!    * 'fwrite'
  
  and of the following functions:
  
!    * The built-in functions '__builtin_expect',
!      '__builtin_expect_with_probability', '__builtin_strchr',
!      '__builtin_strcpy', '__builtin_strcpy_chk', '__builtin_strlen',
!      '__builtin_va_copy', and '__builtin_va_start'
!    * The GNU extensions 'error' and 'error_at_line'
!    * 'getpass'
!    * 'longjmp'
!    * 'putenv'
!    * 'setjmp'
!    * 'siglongjmp'
!    * 'signal'
!    * 'sigsetjmp'
!    * 'strcat'
!    * 'strchr'
!    * 'strlen'
  
!  In addition, various functions with an '__analyzer_' prefix have
  special meaning to the analyzer, described in the GCC Internals manual.
  
   Pertinent parameters for controlling the exploration are:
!    * '--param analyzer-bb-explosion-factor=VALUE'
!    * '--param analyzer-max-enodes-per-program-point=VALUE'
!    * '--param analyzer-max-recursion-depth=VALUE'
!    * '--param analyzer-min-snodes-for-call-summary=VALUE'
  
   The following options control the analyzer.
  
! '-fanalyzer-call-summaries'
       Simplify interprocedural analysis by computing the effect of
       certain calls, rather than exploring all paths through the function
       from callsite to each possible return.
  
       If enabled, call summaries are only used for functions with more
       than one call site, and that are sufficiently complicated (as per
!      '--param analyzer-min-snodes-for-call-summary=VALUE').
  
! '-fanalyzer-checker=NAME'
       Restrict the analyzer to run just the named checker, and enable it.
  
! '-fanalyzer-debug-text-art-headings'
       This option is intended for analyzer developers.  If enabled, the
       analyzer will add extra annotations to any diagrams it generates.
  
! '-fno-analyzer-feasibility'
       This option is intended for analyzer developers.
  
       By default the analyzer verifies that there is a feasible control
       flow path for each diagnostic it emits: that the conditions that
       hold are not mutually exclusive.  Diagnostics for which no feasible
       path can be found are rejected.  This filtering can be suppressed
!      with '-fno-analyzer-feasibility', for debugging issues in this
       code.
  
! '-fanalyzer-fine-grained'
       This option is intended for analyzer developers.
  
       Internally the analyzer builds an "exploded graph" that combines
--- 10668,10783 ----
   The analyzer has hardcoded knowledge about the behavior of the
  following memory-management functions:
  
!    â€¢ â€˜allocaâ€™
!    â€¢ The built-in functions â€˜__builtin_allocâ€™,
!      â€˜__builtin_alloc_with_alignâ€™,
!    â€¢ â€˜__builtin_callocâ€™, â€˜__builtin_freeâ€™, â€˜__builtin_mallocâ€™,
!      â€˜__builtin_memcpyâ€™, â€˜__builtin_memcpy_chkâ€™, â€˜__builtin_memsetâ€™,
!      â€˜__builtin_memset_chkâ€™, â€˜__builtin_reallocâ€™,
!      â€˜__builtin_stack_restoreâ€™, and â€˜__builtin_stack_saveâ€™
!    â€¢ â€˜callocâ€™
!    â€¢ â€˜freeâ€™
!    â€¢ â€˜mallocâ€™
!    â€¢ â€˜memsetâ€™
!    â€¢ â€˜operator deleteâ€™
!    â€¢ â€˜operator delete []â€™
!    â€¢ â€˜operator newâ€™
!    â€¢ â€˜operator new []â€™
!    â€¢ â€˜reallocâ€™
!    â€¢ â€˜strdupâ€™
!    â€¢ â€˜strndupâ€™
  
  of the following functions for working with file descriptors:
  
!    â€¢ â€˜openâ€™
!    â€¢ â€˜closeâ€™
!    â€¢ â€˜creatâ€™
!    â€¢ â€˜dupâ€™, â€˜dup2â€™ and â€˜dup3â€™
!    â€¢ â€˜isattyâ€™
!    â€¢ â€˜pipeâ€™, and â€˜pipe2â€™
!    â€¢ â€˜readâ€™
!    â€¢ â€˜writeâ€™
!    â€¢ â€˜socketâ€™, â€˜bindâ€™, â€˜listenâ€™, â€˜acceptâ€™, and â€˜connectâ€™
  
! of the following functions for working with â€˜<stdio.h>â€™ streams:
!    â€¢ The built-in functions â€˜__builtin_fprintfâ€™,
!      â€˜__builtin_fprintf_unlockedâ€™, â€˜__builtin_fputcâ€™,
!      â€˜__builtin_fputc_unlockedâ€™, â€˜__builtin_fputsâ€™,
!      â€˜__builtin_fputs_unlockedâ€™, â€˜__builtin_fwriteâ€™,
!      â€˜__builtin_fwrite_unlockedâ€™, â€˜__builtin_printfâ€™,
!      â€˜__builtin_printf_unlockedâ€™, â€˜__builtin_putcâ€™, â€˜__builtin_putcharâ€™,
!      â€˜__builtin_putchar_unlockedâ€™, â€˜__builtin_putc_unlockedâ€™,
!      â€˜__builtin_putsâ€™, â€˜__builtin_puts_unlockedâ€™, â€˜__builtin_vfprintfâ€™,
!      and â€˜__builtin_vprintfâ€™
!    â€¢ â€˜fopenâ€™
!    â€¢ â€˜fcloseâ€™
!    â€¢ â€˜ferrorâ€™
!    â€¢ â€˜fgetsâ€™
!    â€¢ â€˜fgets_unlockedâ€™
!    â€¢ â€˜filenoâ€™
!    â€¢ â€˜freadâ€™
!    â€¢ â€˜getcâ€™
!    â€¢ â€˜getcharâ€™
!    â€¢ â€˜fprintfâ€™
!    â€¢ â€˜printfâ€™
!    â€¢ â€˜fwriteâ€™
  
  and of the following functions:
  
!    â€¢ The built-in functions â€˜__builtin_expectâ€™,
!      â€˜__builtin_expect_with_probabilityâ€™, â€˜__builtin_strchrâ€™,
!      â€˜__builtin_strcpyâ€™, â€˜__builtin_strcpy_chkâ€™, â€˜__builtin_strlenâ€™,
!      â€˜__builtin_va_copyâ€™, and â€˜__builtin_va_startâ€™
!    â€¢ The GNU extensions â€˜errorâ€™ and â€˜error_at_lineâ€™
!    â€¢ â€˜getpassâ€™
!    â€¢ â€˜longjmpâ€™
!    â€¢ â€˜putenvâ€™
!    â€¢ â€˜setjmpâ€™
!    â€¢ â€˜siglongjmpâ€™
!    â€¢ â€˜signalâ€™
!    â€¢ â€˜sigsetjmpâ€™
!    â€¢ â€˜strcatâ€™
!    â€¢ â€˜strchrâ€™
!    â€¢ â€˜strlenâ€™
  
!  In addition, various functions with an â€˜__analyzer_â€™ prefix have
  special meaning to the analyzer, described in the GCC Internals manual.
  
   Pertinent parameters for controlling the exploration are:
!    â€¢ â€˜--param analyzer-bb-explosion-factor=VALUEâ€™
!    â€¢ â€˜--param analyzer-max-enodes-per-program-point=VALUEâ€™
!    â€¢ â€˜--param analyzer-max-recursion-depth=VALUEâ€™
!    â€¢ â€˜--param analyzer-min-snodes-for-call-summary=VALUEâ€™
  
   The following options control the analyzer.
  
! â€˜-fanalyzer-call-summariesâ€™
       Simplify interprocedural analysis by computing the effect of
       certain calls, rather than exploring all paths through the function
       from callsite to each possible return.
  
       If enabled, call summaries are only used for functions with more
       than one call site, and that are sufficiently complicated (as per
!      â€˜--param analyzer-min-snodes-for-call-summary=VALUEâ€™).
  
! â€˜-fanalyzer-checker=NAMEâ€™
       Restrict the analyzer to run just the named checker, and enable it.
  
! â€˜-fanalyzer-debug-text-art-headingsâ€™
       This option is intended for analyzer developers.  If enabled, the
       analyzer will add extra annotations to any diagrams it generates.
  
! â€˜-fno-analyzer-feasibilityâ€™
       This option is intended for analyzer developers.
  
       By default the analyzer verifies that there is a feasible control
       flow path for each diagnostic it emits: that the conditions that
       hold are not mutually exclusive.  Diagnostics for which no feasible
       path can be found are rejected.  This filtering can be suppressed
!      with â€˜-fno-analyzer-feasibilityâ€™, for debugging issues in this
       code.
  
! â€˜-fanalyzer-fine-grainedâ€™
       This option is intended for analyzer developers.
  
       Internally the analyzer builds an "exploded graph" that combines
*************** special meaning to the analyzer, describ
*** 10781,10810 ****
  
       By default, an edge in this graph can contain the effects of a run
       of multiple statements within a basic block.  With
!      '-fanalyzer-fine-grained', each statement gets its own edge.
  
! '-fanalyzer-show-duplicate-count'
       This option is intended for analyzer developers: if multiple
       diagnostics have been detected as being duplicates of each other,
       it emits a note when reporting the best diagnostic, giving the
       number of additional diagnostics that were suppressed by the
       deduplication logic.
  
! '-fanalyzer-show-events-in-system-headers'
       By default the analyzer emits simplified diagnostics paths by
       hiding events fully located within a system header.  With
!      '-fanalyzer-show-events-in-system-headers' such events are no
       longer suppressed.
  
! '-fno-analyzer-state-merge'
       This option is intended for analyzer developers.
  
       By default the analyzer attempts to simplify analysis by merging
       sufficiently similar states at each program point as it builds its
!      "exploded graph".  With '-fno-analyzer-state-merge' this merging
       can be suppressed, for debugging state-handling issues.
  
! '-fno-analyzer-state-purge'
       This option is intended for analyzer developers.
  
       By default the analyzer attempts to simplify analysis by purging
--- 10785,10814 ----
  
       By default, an edge in this graph can contain the effects of a run
       of multiple statements within a basic block.  With
!      â€˜-fanalyzer-fine-grainedâ€™, each statement gets its own edge.
  
! â€˜-fanalyzer-show-duplicate-countâ€™
       This option is intended for analyzer developers: if multiple
       diagnostics have been detected as being duplicates of each other,
       it emits a note when reporting the best diagnostic, giving the
       number of additional diagnostics that were suppressed by the
       deduplication logic.
  
! â€˜-fanalyzer-show-events-in-system-headersâ€™
       By default the analyzer emits simplified diagnostics paths by
       hiding events fully located within a system header.  With
!      â€˜-fanalyzer-show-events-in-system-headersâ€™ such events are no
       longer suppressed.
  
! â€˜-fno-analyzer-state-mergeâ€™
       This option is intended for analyzer developers.
  
       By default the analyzer attempts to simplify analysis by merging
       sufficiently similar states at each program point as it builds its
!      "exploded graph".  With â€˜-fno-analyzer-state-mergeâ€™ this merging
       can be suppressed, for debugging state-handling issues.
  
! â€˜-fno-analyzer-state-purgeâ€™
       This option is intended for analyzer developers.
  
       By default the analyzer attempts to simplify analysis by purging
*************** special meaning to the analyzer, describ
*** 10812,10821 ****
       relevant e.g.  the values of locals that aren't accessed later in
       the function and which aren't relevant to leak analysis.
  
!      With '-fno-analyzer-state-purge' this purging of state can be
       suppressed, for debugging state-handling issues.
  
! '-fno-analyzer-suppress-followups'
       This option is intended for analyzer developers.
  
       By default the analyzer will stop exploring an execution path after
--- 10816,10825 ----
       relevant e.g.  the values of locals that aren't accessed later in
       the function and which aren't relevant to leak analysis.
  
!      With â€˜-fno-analyzer-state-purgeâ€™ this purging of state can be
       suppressed, for debugging state-handling issues.
  
! â€˜-fno-analyzer-suppress-followupsâ€™
       This option is intended for analyzer developers.
  
       By default the analyzer will stop exploring an execution path after
*************** special meaning to the analyzer, describ
*** 10824,10848 ****
  
       The diagnostics that terminate analysis along a path are:
  
!         * '-Wanalyzer-null-argument'
!         * '-Wanalyzer-null-dereference'
!         * '-Wanalyzer-use-after-free'
!         * '-Wanalyzer-use-of-pointer-in-stale-stack-frame'
!         * '-Wanalyzer-use-of-uninitialized-value'
  
!      With '-fno-analyzer-suppress-followups' the analyzer will continue
       to explore such paths even after such diagnostics, which may be
       helpful for debugging issues in the analyzer, or for
       microbenchmarks for detecting undefined behavior.
  
! '-fanalyzer-transitivity'
       This option enables transitivity of constraints within the
       analyzer.
  
! '-fno-analyzer-undo-inlining'
       This option is intended for analyzer developers.
  
!      '-fanalyzer' runs relatively late compared to other code analysis
       tools, and some optimizations have already been applied to the
       code.  In particular function inlining may have occurred, leading
       to the interprocedural execution paths emitted by the analyzer
--- 10828,10852 ----
  
       The diagnostics that terminate analysis along a path are:
  
!         â€¢ â€˜-Wanalyzer-null-argumentâ€™
!         â€¢ â€˜-Wanalyzer-null-dereferenceâ€™
!         â€¢ â€˜-Wanalyzer-use-after-freeâ€™
!         â€¢ â€˜-Wanalyzer-use-of-pointer-in-stale-stack-frameâ€™
!         â€¢ â€˜-Wanalyzer-use-of-uninitialized-valueâ€™
  
!      With â€˜-fno-analyzer-suppress-followupsâ€™ the analyzer will continue
       to explore such paths even after such diagnostics, which may be
       helpful for debugging issues in the analyzer, or for
       microbenchmarks for detecting undefined behavior.
  
! â€˜-fanalyzer-transitivityâ€™
       This option enables transitivity of constraints within the
       analyzer.
  
! â€˜-fno-analyzer-undo-inliningâ€™
       This option is intended for analyzer developers.
  
!      â€˜-fanalyzerâ€™ runs relatively late compared to other code analysis
       tools, and some optimizations have already been applied to the
       code.  In particular function inlining may have occurred, leading
       to the interprocedural execution paths emitted by the analyzer
*************** special meaning to the analyzer, describ
*** 10852,10967 ****
       By default the analyzer attempts to reconstruct the original
       function frames, and to emit events showing the inlined calls.
  
!      With '-fno-analyzer-undo-inlining' this attempt to reconstruct the
       original frame information can be disabled, which may be of help
       when debugging issues in the analyzer.
  
! '-fanalyzer-verbose-edges'
       This option is intended for analyzer developers.  It enables more
       verbose, lower-level detail in the descriptions of control flow
       within diagnostic paths.
  
! '-fanalyzer-verbose-state-changes'
       This option is intended for analyzer developers.  It enables more
       verbose, lower-level detail in the descriptions of events relating
       to state machines within diagnostic paths.
  
! '-fanalyzer-verbosity=LEVEL'
       This option controls the complexity of the control flow paths that
       are emitted for analyzer diagnostics.
  
       The LEVEL can be one of:
  
!      '0'
            At this level, interprocedural call and return events are
            displayed, along with the most pertinent state-change events
!           relating to a diagnostic.  For example, for a double-'free'
!           diagnostic, both calls to 'free' will be shown.
  
!      '1'
            As per the previous level, but also show events for the entry
            to each function.
  
!      '2'
            As per the previous level, but also show events relating to
            control flow that are significant to triggering the issue
            (e.g.  "true path taken" at a conditional).
  
            This level is the default.
  
!      '3'
            As per the previous level, but show all control flow events,
            not just significant ones.
  
!      '4'
            This level is intended for analyzer developers; it adds
            various other events intended for debugging the analyzer.
  
! '-fdump-analyzer'
       Dump internal details about what the analyzer is doing to
!      'FILE.analyzer.txt'.  '-fdump-analyzer-stderr' overrides this
       option.
  
! '-fdump-analyzer-stderr'
       Dump internal details about what the analyzer is doing to stderr.
!      This option overrides '-fdump-analyzer'.
  
! '-fdump-analyzer-callgraph'
       Dump a representation of the call graph suitable for viewing with
!      GraphViz to 'FILE.callgraph.dot'.
  
! '-fdump-analyzer-exploded-graph'
       Dump a representation of the "exploded graph" suitable for viewing
!      with GraphViz to 'FILE.eg.dot'.  Nodes are color-coded based on
       state-machine states to emphasize state changes.
  
! '-fdump-analyzer-exploded-nodes'
       Emit diagnostics showing where nodes in the "exploded graph" are in
       relation to the program source.
  
! '-fdump-analyzer-exploded-nodes-2'
       Dump a textual representation of the "exploded graph" to
!      'FILE.eg.txt'.
  
! '-fdump-analyzer-exploded-nodes-3'
       Dump a textual representation of the "exploded graph" to one dump
!      file per node, to 'FILE.eg-ID.txt'.  This is typically a large
       number of dump files.
  
! '-fdump-analyzer-exploded-paths'
       Dump a textual representation of the "exploded path" for each
!      diagnostic to 'FILE.IDX.KIND.epath.txt'.
  
! '-fdump-analyzer-feasibility'
       Dump internal details about the analyzer's search for feasible
       paths.  The details are written in a form suitable for viewing with
!      GraphViz to filenames of the form 'FILE.*.fg.dot', 'FILE.*.tg.dot',
!      and 'FILE.*.fpath.txt'.
  
! '-fdump-analyzer-infinite-loop'
       Dump internal details about the analyzer's search for infinite
       loops.  The details are written in a form suitable for viewing with
!      GraphViz to filenames of the form 'FILE.*.infinite-loop.dot'.
  
! '-fdump-analyzer-json'
       Dump a compressed JSON representation of analyzer internals to
!      'FILE.analyzer.json.gz'.  The precise format is subject to change.
  
! '-fdump-analyzer-state-purge'
!      As per '-fdump-analyzer-supergraph', dump a representation of the
       "supergraph" suitable for viewing with GraphViz, but annotate the
       graph with information on what state will be purged at each node.
!      The graph is written to 'FILE.state-purge.dot'.
  
! '-fdump-analyzer-supergraph'
       Dump representations of the "supergraph" suitable for viewing with
!      GraphViz to 'FILE.supergraph.dot' and to 'FILE.supergraph-eg.dot'.
       These show all of the control flow graphs in the program, with
       interprocedural edges for calls and returns.  The second dump
       contains annotations showing nodes in the "exploded graph" and
       diagnostics associated with them.
  
! '-fdump-analyzer-untracked'
       Emit custom warnings with internal details intended for analyzer
       developers.
  
--- 10856,10971 ----
       By default the analyzer attempts to reconstruct the original
       function frames, and to emit events showing the inlined calls.
  
!      With â€˜-fno-analyzer-undo-inliningâ€™ this attempt to reconstruct the
       original frame information can be disabled, which may be of help
       when debugging issues in the analyzer.
  
! â€˜-fanalyzer-verbose-edgesâ€™
       This option is intended for analyzer developers.  It enables more
       verbose, lower-level detail in the descriptions of control flow
       within diagnostic paths.
  
! â€˜-fanalyzer-verbose-state-changesâ€™
       This option is intended for analyzer developers.  It enables more
       verbose, lower-level detail in the descriptions of events relating
       to state machines within diagnostic paths.
  
! â€˜-fanalyzer-verbosity=LEVELâ€™
       This option controls the complexity of the control flow paths that
       are emitted for analyzer diagnostics.
  
       The LEVEL can be one of:
  
!      â€˜0â€™
            At this level, interprocedural call and return events are
            displayed, along with the most pertinent state-change events
!           relating to a diagnostic.  For example, for a double-â€˜freeâ€™
!           diagnostic, both calls to â€˜freeâ€™ will be shown.
  
!      â€˜1â€™
            As per the previous level, but also show events for the entry
            to each function.
  
!      â€˜2â€™
            As per the previous level, but also show events relating to
            control flow that are significant to triggering the issue
            (e.g.  "true path taken" at a conditional).
  
            This level is the default.
  
!      â€˜3â€™
            As per the previous level, but show all control flow events,
            not just significant ones.
  
!      â€˜4â€™
            This level is intended for analyzer developers; it adds
            various other events intended for debugging the analyzer.
  
! â€˜-fdump-analyzerâ€™
       Dump internal details about what the analyzer is doing to
!      â€˜FILE.analyzer.txtâ€™.  â€˜-fdump-analyzer-stderrâ€™ overrides this
       option.
  
! â€˜-fdump-analyzer-stderrâ€™
       Dump internal details about what the analyzer is doing to stderr.
!      This option overrides â€˜-fdump-analyzerâ€™.
  
! â€˜-fdump-analyzer-callgraphâ€™
       Dump a representation of the call graph suitable for viewing with
!      GraphViz to â€˜FILE.callgraph.dotâ€™.
  
! â€˜-fdump-analyzer-exploded-graphâ€™
       Dump a representation of the "exploded graph" suitable for viewing
!      with GraphViz to â€˜FILE.eg.dotâ€™.  Nodes are color-coded based on
       state-machine states to emphasize state changes.
  
! â€˜-fdump-analyzer-exploded-nodesâ€™
       Emit diagnostics showing where nodes in the "exploded graph" are in
       relation to the program source.
  
! â€˜-fdump-analyzer-exploded-nodes-2â€™
       Dump a textual representation of the "exploded graph" to
!      â€˜FILE.eg.txtâ€™.
  
! â€˜-fdump-analyzer-exploded-nodes-3â€™
       Dump a textual representation of the "exploded graph" to one dump
!      file per node, to â€˜FILE.eg-ID.txtâ€™.  This is typically a large
       number of dump files.
  
! â€˜-fdump-analyzer-exploded-pathsâ€™
       Dump a textual representation of the "exploded path" for each
!      diagnostic to â€˜FILE.IDX.KIND.epath.txtâ€™.
  
! â€˜-fdump-analyzer-feasibilityâ€™
       Dump internal details about the analyzer's search for feasible
       paths.  The details are written in a form suitable for viewing with
!      GraphViz to filenames of the form â€˜FILE.*.fg.dotâ€™, â€˜FILE.*.tg.dotâ€™,
!      and â€˜FILE.*.fpath.txtâ€™.
  
! â€˜-fdump-analyzer-infinite-loopâ€™
       Dump internal details about the analyzer's search for infinite
       loops.  The details are written in a form suitable for viewing with
!      GraphViz to filenames of the form â€˜FILE.*.infinite-loop.dotâ€™.
  
! â€˜-fdump-analyzer-jsonâ€™
       Dump a compressed JSON representation of analyzer internals to
!      â€˜FILE.analyzer.json.gzâ€™.  The precise format is subject to change.
  
! â€˜-fdump-analyzer-state-purgeâ€™
!      As per â€˜-fdump-analyzer-supergraphâ€™, dump a representation of the
       "supergraph" suitable for viewing with GraphViz, but annotate the
       graph with information on what state will be purged at each node.
!      The graph is written to â€˜FILE.state-purge.dotâ€™.
  
! â€˜-fdump-analyzer-supergraphâ€™
       Dump representations of the "supergraph" suitable for viewing with
!      GraphViz to â€˜FILE.supergraph.dotâ€™ and to â€˜FILE.supergraph-eg.dotâ€™.
       These show all of the control flow graphs in the program, with
       interprocedural edges for calls and returns.  The second dump
       contains annotations showing nodes in the "exploded graph" and
       diagnostics associated with them.
  
! â€˜-fdump-analyzer-untrackedâ€™
       Emit custom warnings with internal details intended for analyzer
       developers.
  
*************** File: gcc.info,  Node: Debugging Options
*** 10972,10983 ****
  =======================================
  
  To tell GCC to emit extra information for use by a debugger, in almost
! all cases you need only to add '-g' to your other options.  Some debug
  formats can co-exist (like DWARF with CTF) when each of them is enabled
  explicitly by adding the respective command line option to your other
  options.
  
!  GCC allows you to use '-g' with '-O'.  The shortcuts taken by optimized
  code may occasionally be surprising: some variables you declared may not
  exist at all; flow of control may briefly move where you did not expect
  it; some statements may not be executed because they compute constant
--- 10976,10987 ----
  =======================================
  
  To tell GCC to emit extra information for use by a debugger, in almost
! all cases you need only to add â€˜-gâ€™ to your other options.  Some debug
  formats can co-exist (like DWARF with CTF) when each of them is enabled
  explicitly by adding the respective command line option to your other
  options.
  
!  GCC allows you to use â€˜-gâ€™ with â€˜-Oâ€™.  The shortcuts taken by optimized
  code may occasionally be surprising: some variables you declared may not
  exist at all; flow of control may briefly move where you did not expect
  it; some statements may not be executed because they compute constant
*************** Nevertheless it is possible to debug opt
*** 10987,11017 ****
  reasonable to use the optimizer for programs that might have bugs.
  
   If you are not using some other optimization option, consider using
! '-Og' (*note Optimize Options::) with '-g'.  With no '-O' option at all,
  some compiler passes that collect information useful for debugging do
! not run at all, so that '-Og' may result in a better debugging
  experience.
  
! '-g'
       Produce debugging information in the operating system's native
       format (stabs, COFF, XCOFF, or DWARF).  GDB can work with this
       debugging information.
  
!      On most systems that use stabs format, '-g' enables use of extra
       debugging information that only GDB can use; this extra information
       makes debugging work better in GDB but probably makes other
       debuggers crash or refuse to read the program.  If you want to
       control for certain whether to generate the extra information, use
!      '-gvms' (see below).
  
! '-ggdb'
       Produce debugging information for use by GDB.  This means to use
       the most expressive format available (DWARF, stabs, or the native
       format if neither of those are supported), including GDB extensions
       if at all possible.
  
! '-gdwarf'
! '-gdwarf-VERSION'
       Produce debugging information in DWARF format (if that is
       supported).  The value of VERSION may be either 2, 3, 4 or 5; the
       default version for most targets is 5 (with the exception of
--- 10991,11021 ----
  reasonable to use the optimizer for programs that might have bugs.
  
   If you are not using some other optimization option, consider using
! â€˜-Ogâ€™ (*note Optimize Options::) with â€˜-gâ€™.  With no â€˜-Oâ€™ option at all,
  some compiler passes that collect information useful for debugging do
! not run at all, so that â€˜-Ogâ€™ may result in a better debugging
  experience.
  
! â€˜-gâ€™
       Produce debugging information in the operating system's native
       format (stabs, COFF, XCOFF, or DWARF).  GDB can work with this
       debugging information.
  
!      On most systems that use stabs format, â€˜-gâ€™ enables use of extra
       debugging information that only GDB can use; this extra information
       makes debugging work better in GDB but probably makes other
       debuggers crash or refuse to read the program.  If you want to
       control for certain whether to generate the extra information, use
!      â€˜-gvmsâ€™ (see below).
  
! â€˜-ggdbâ€™
       Produce debugging information for use by GDB.  This means to use
       the most expressive format available (DWARF, stabs, or the native
       format if neither of those are supported), including GDB extensions
       if at all possible.
  
! â€˜-gdwarfâ€™
! â€˜-gdwarf-VERSIONâ€™
       Produce debugging information in DWARF format (if that is
       supported).  The value of VERSION may be either 2, 3, 4 or 5; the
       default version for most targets is 5 (with the exception of
*************** experience.
*** 11021,11044 ****
       Note that with DWARF Version 2, some ports require and always use
       some non-conflicting DWARF 3 extensions in the unwind tables.
  
!      Version 4 may require GDB 7.0 and '-fvar-tracking-assignments' for
       maximum benefit.  Version 5 requires GDB 8.0 or higher.
  
       GCC no longer supports DWARF Version 1, which is substantially
       different than Version 2 and later.  For historical reasons, some
!      other DWARF-related options such as '-fno-dwarf2-cfi-asm') retain a
       reference to DWARF Version 2 in their names, but apply to all
       currently-supported versions of DWARF.
  
! '-gbtf'
       Request BTF debug information.  BTF is the default debugging format
       for the eBPF target.  On other targets, like x86, BTF debug
       information can be generated along with DWARF debug information
       when both of the debug formats are enabled explicitly via their
       respective command line options.
  
! '-gprune-btf'
! '-gno-prune-btf'
       Prune BTF information before emission.  When pruning, only type
       information for types used by global variables and file-scope
       functions will be emitted.  If compiling for the BPF target with
--- 11025,11048 ----
       Note that with DWARF Version 2, some ports require and always use
       some non-conflicting DWARF 3 extensions in the unwind tables.
  
!      Version 4 may require GDB 7.0 and â€˜-fvar-tracking-assignmentsâ€™ for
       maximum benefit.  Version 5 requires GDB 8.0 or higher.
  
       GCC no longer supports DWARF Version 1, which is substantially
       different than Version 2 and later.  For historical reasons, some
!      other DWARF-related options such as â€˜-fno-dwarf2-cfi-asmâ€™) retain a
       reference to DWARF Version 2 in their names, but apply to all
       currently-supported versions of DWARF.
  
! â€˜-gbtfâ€™
       Request BTF debug information.  BTF is the default debugging format
       for the eBPF target.  On other targets, like x86, BTF debug
       information can be generated along with DWARF debug information
       when both of the debug formats are enabled explicitly via their
       respective command line options.
  
! â€˜-gprune-btfâ€™
! â€˜-gno-prune-btfâ€™
       Prune BTF information before emission.  When pruning, only type
       information for types used by global variables and file-scope
       functions will be emitted.  If compiling for the BPF target with
*************** experience.
*** 11059,11068 ****
       This option is enabled by default for the BPF target when
       generating BTF information.
  
! '-gctf'
! '-gctfLEVEL'
       Request CTF debug information and use level to specify how much CTF
!      debug information should be produced.  If '-gctf' is specified
       without a value for level, the default level of CTF debug
       information is 2.
  
--- 11063,11072 ----
       This option is enabled by default for the BPF target when
       generating BTF information.
  
! â€˜-gctfâ€™
! â€˜-gctfLEVELâ€™
       Request CTF debug information and use level to specify how much CTF
!      debug information should be produced.  If â€˜-gctfâ€™ is specified
       without a value for level, the default level of CTF debug
       information is 2.
  
*************** experience.
*** 11070,11077 ****
       information when both of the debug formats are enabled explicitly
       via their respective command line options.
  
!      Level 0 produces no CTF debug information at all.  Thus, '-gctf0'
!      negates '-gctf'.
  
       Level 1 produces CTF information for tracebacks only.  This
       includes callsite information, but does not include type
--- 11074,11081 ----
       information when both of the debug formats are enabled explicitly
       via their respective command line options.
  
!      Level 0 produces no CTF debug information at all.  Thus, â€˜-gctf0â€™
!      negates â€˜-gctfâ€™.
  
       Level 1 produces CTF information for tracebacks only.  This
       includes callsite information, but does not include type
*************** experience.
*** 11080,11102 ****
       Level 2 produces type information for entities (functions, data
       objects etc.)  at file-scope or global-scope only.
  
! '-gvms'
       Produce debugging information in Alpha/VMS debug format (if that is
       supported).  This is the format used by DEBUG on Alpha/VMS systems.
  
! '-gcodeview'
       Produce debugging information in CodeView debug format (if that is
       supported).  This is the format used by Microsoft Visual C++ on
       Windows.
  
! '-gLEVEL'
! '-ggdbLEVEL'
! '-gvmsLEVEL'
       Request debugging information and also use LEVEL to specify how
       much information.  The default level is 2.
  
!      Level 0 produces no debug information at all.  Thus, '-g0' negates
!      '-g'.
  
       Level 1 produces minimal information, enough for making backtraces
       in parts of the program that you don't plan to debug.  This
--- 11084,11106 ----
       Level 2 produces type information for entities (functions, data
       objects etc.)  at file-scope or global-scope only.
  
! â€˜-gvmsâ€™
       Produce debugging information in Alpha/VMS debug format (if that is
       supported).  This is the format used by DEBUG on Alpha/VMS systems.
  
! â€˜-gcodeviewâ€™
       Produce debugging information in CodeView debug format (if that is
       supported).  This is the format used by Microsoft Visual C++ on
       Windows.
  
! â€˜-gLEVELâ€™
! â€˜-ggdbLEVELâ€™
! â€˜-gvmsLEVELâ€™
       Request debugging information and also use LEVEL to specify how
       much information.  The default level is 2.
  
!      Level 0 produces no debug information at all.  Thus, â€˜-g0â€™ negates
!      â€˜-gâ€™.
  
       Level 1 produces minimal information, enough for making backtraces
       in parts of the program that you don't plan to debug.  This
*************** experience.
*** 11105,11125 ****
  
       Level 3 includes extra information, such as all the macro
       definitions present in the program.  Some debuggers support macro
!      expansion when you use '-g3'.
  
!      If you use multiple '-g' options, with or without level numbers,
       the last such option is the one that is effective.
  
!      '-gdwarf' does not accept a concatenated debug level, to avoid
!      confusion with '-gdwarf-LEVEL'.  Instead use an additional
!      '-gLEVEL' option to change the debug level for DWARF.
  
! '-fno-eliminate-unused-debug-symbols'
       By default, no debug information is produced for symbols that are
       not actually used.  Use this option if you want debug information
       for all symbols.
  
! '-femit-class-debug-always'
       Instead of emitting debugging information for a C++ class in only
       one object file, emit it in all object files using the class.  This
       option should be used only with debuggers that are unable to handle
--- 11109,11129 ----
  
       Level 3 includes extra information, such as all the macro
       definitions present in the program.  Some debuggers support macro
!      expansion when you use â€˜-g3â€™.
  
!      If you use multiple â€˜-gâ€™ options, with or without level numbers,
       the last such option is the one that is effective.
  
!      â€˜-gdwarfâ€™ does not accept a concatenated debug level, to avoid
!      confusion with â€˜-gdwarf-LEVELâ€™.  Instead use an additional
!      â€˜-gLEVELâ€™ option to change the debug level for DWARF.
  
! â€˜-fno-eliminate-unused-debug-symbolsâ€™
       By default, no debug information is produced for symbols that are
       not actually used.  Use this option if you want debug information
       for all symbols.
  
! â€˜-femit-class-debug-alwaysâ€™
       Instead of emitting debugging information for a C++ class in only
       one object file, emit it in all object files using the class.  This
       option should be used only with debuggers that are unable to handle
*************** experience.
*** 11127,11233 ****
       because using this option increases the size of debugging
       information by as much as a factor of two.
  
! '-fno-merge-debug-strings'
       Direct the linker to not merge together strings in the debugging
       information that are identical in different object files.  Merging
       is not supported by all assemblers or linkers.  Merging decreases
       the size of the debug information in the output file at the cost of
       increasing link processing time.  Merging is enabled by default.
  
! '-fdebug-prefix-map=OLD=NEW'
!      When compiling files residing in directory 'OLD', record debugging
       information describing them as if the files resided in directory
!      'NEW' instead.  This can be used to replace a build-time path with
       an install-time path in the debug info.  It can also be used to
!      change an absolute path to a relative path by using '.' for NEW.
       This can give more reproducible builds, which are location
       independent, but may require an extra command to tell GDB where to
!      find the source files.  See also '-ffile-prefix-map' and
!      '-fcanon-prefix-map'.
  
! '-fvar-tracking'
       Run variable tracking pass.  It computes where variables are stored
       at each position in code.  Better debugging information is then
       generated (if the debugging information format supports this
       information).
  
!      It is enabled by default when compiling with optimization ('-Os',
!      '-O', '-O2', ...), debugging information ('-g') and the debug info
       format supports it.
  
! '-fvar-tracking-assignments'
       Annotate assignments to user variables early in the compilation and
       attempt to carry the annotations over throughout the compilation
       all the way to the end, in an attempt to improve debug information
!      while optimizing.  Use of '-gdwarf-4' is recommended along with it.
  
       It can be enabled even if var-tracking is disabled, in which case
       annotations are created and maintained, but discarded at the end.
!      By default, this flag is enabled together with '-fvar-tracking',
       except when selective scheduling is enabled.
  
! '-gsplit-dwarf'
       If DWARF debugging information is enabled, separate as much
       debugging information as possible into a separate output file with
!      the extension '.dwo'.  This option allows the build system to avoid
       linking files with debug information.  To be useful, this option
!      requires a debugger capable of reading '.dwo' files.
  
! '-gdwarf32'
! '-gdwarf64'
!      If DWARF debugging information is enabled, the '-gdwarf32' selects
!      the 32-bit DWARF format and the '-gdwarf64' selects the 64-bit
       DWARF format.  The default is target specific, on most targets it
!      is '-gdwarf32' though.  The 32-bit DWARF format is smaller, but
       can't support more than 2GiB of debug information in any of the
       DWARF debug information sections.  The 64-bit DWARF format allows
       larger debug information and might not be well supported by all
       consumers yet.
  
! '-gdescribe-dies'
       Add description attributes to some DWARF DIEs that have no name
       attribute, such as artificial variables, external references and
       call site parameter DIEs.
  
! '-gpubnames'
!      Generate DWARF '.debug_pubnames' and '.debug_pubtypes' sections.
  
! '-ggnu-pubnames'
!      Generate '.debug_pubnames' and '.debug_pubtypes' sections in a
       format suitable for conversion into a GDB index.  This option is
       only useful with a linker that can produce GDB index version 7.
  
! '-fdebug-types-section'
       When using DWARF Version 4 or higher, type DIEs can be put into
!      their own '.debug_types' section instead of making them part of the
!      '.debug_info' section.  It is more efficient to put them in a
       separate comdat section since the linker can then remove
!      duplicates.  But not all DWARF consumers support '.debug_types'
!      sections yet and on some objects '.debug_types' produces larger
       instead of smaller debugging information.
  
! '-grecord-gcc-switches'
! '-gno-record-gcc-switches'
       This switch causes the command-line options used to invoke the
       compiler that may affect code generation to be appended to the
       DW_AT_producer attribute in DWARF debugging information.  The
       options are concatenated with spaces separating them from each
       other and from the compiler version.  It is enabled by default.
!      See also '-frecord-gcc-switches' for another way of storing
       compiler options into the object file.
  
! '-gstrict-dwarf'
       Disallow using extensions of later DWARF standard version than
!      selected with '-gdwarf-VERSION'.  On most targets using
       non-conflicting DWARF extensions from later standard versions is
       allowed.
  
! '-gno-strict-dwarf'
       Allow using extensions of later DWARF standard version than
!      selected with '-gdwarf-VERSION'.
  
! '-gas-loc-support'
!      Inform the compiler that the assembler supports '.loc' directives.
       It may then use them for the assembler to generate DWARF2+ line
       number tables.
  
--- 11131,11237 ----
       because using this option increases the size of debugging
       information by as much as a factor of two.
  
! â€˜-fno-merge-debug-stringsâ€™
       Direct the linker to not merge together strings in the debugging
       information that are identical in different object files.  Merging
       is not supported by all assemblers or linkers.  Merging decreases
       the size of the debug information in the output file at the cost of
       increasing link processing time.  Merging is enabled by default.
  
! â€˜-fdebug-prefix-map=OLD=NEWâ€™
!      When compiling files residing in directory â€˜OLDâ€™, record debugging
       information describing them as if the files resided in directory
!      â€˜NEWâ€™ instead.  This can be used to replace a build-time path with
       an install-time path in the debug info.  It can also be used to
!      change an absolute path to a relative path by using â€˜.â€™ for NEW.
       This can give more reproducible builds, which are location
       independent, but may require an extra command to tell GDB where to
!      find the source files.  See also â€˜-ffile-prefix-mapâ€™ and
!      â€˜-fcanon-prefix-mapâ€™.
  
! â€˜-fvar-trackingâ€™
       Run variable tracking pass.  It computes where variables are stored
       at each position in code.  Better debugging information is then
       generated (if the debugging information format supports this
       information).
  
!      It is enabled by default when compiling with optimization (â€˜-Osâ€™,
!      â€˜-Oâ€™, â€˜-O2â€™, ...), debugging information (â€˜-gâ€™) and the debug info
       format supports it.
  
! â€˜-fvar-tracking-assignmentsâ€™
       Annotate assignments to user variables early in the compilation and
       attempt to carry the annotations over throughout the compilation
       all the way to the end, in an attempt to improve debug information
!      while optimizing.  Use of â€˜-gdwarf-4â€™ is recommended along with it.
  
       It can be enabled even if var-tracking is disabled, in which case
       annotations are created and maintained, but discarded at the end.
!      By default, this flag is enabled together with â€˜-fvar-trackingâ€™,
       except when selective scheduling is enabled.
  
! â€˜-gsplit-dwarfâ€™
       If DWARF debugging information is enabled, separate as much
       debugging information as possible into a separate output file with
!      the extension â€˜.dwoâ€™.  This option allows the build system to avoid
       linking files with debug information.  To be useful, this option
!      requires a debugger capable of reading â€˜.dwoâ€™ files.
  
! â€˜-gdwarf32â€™
! â€˜-gdwarf64â€™
!      If DWARF debugging information is enabled, the â€˜-gdwarf32â€™ selects
!      the 32-bit DWARF format and the â€˜-gdwarf64â€™ selects the 64-bit
       DWARF format.  The default is target specific, on most targets it
!      is â€˜-gdwarf32â€™ though.  The 32-bit DWARF format is smaller, but
       can't support more than 2GiB of debug information in any of the
       DWARF debug information sections.  The 64-bit DWARF format allows
       larger debug information and might not be well supported by all
       consumers yet.
  
! â€˜-gdescribe-diesâ€™
       Add description attributes to some DWARF DIEs that have no name
       attribute, such as artificial variables, external references and
       call site parameter DIEs.
  
! â€˜-gpubnamesâ€™
!      Generate DWARF â€˜.debug_pubnamesâ€™ and â€˜.debug_pubtypesâ€™ sections.
  
! â€˜-ggnu-pubnamesâ€™
!      Generate â€˜.debug_pubnamesâ€™ and â€˜.debug_pubtypesâ€™ sections in a
       format suitable for conversion into a GDB index.  This option is
       only useful with a linker that can produce GDB index version 7.
  
! â€˜-fdebug-types-sectionâ€™
       When using DWARF Version 4 or higher, type DIEs can be put into
!      their own â€˜.debug_typesâ€™ section instead of making them part of the
!      â€˜.debug_infoâ€™ section.  It is more efficient to put them in a
       separate comdat section since the linker can then remove
!      duplicates.  But not all DWARF consumers support â€˜.debug_typesâ€™
!      sections yet and on some objects â€˜.debug_typesâ€™ produces larger
       instead of smaller debugging information.
  
! â€˜-grecord-gcc-switchesâ€™
! â€˜-gno-record-gcc-switchesâ€™
       This switch causes the command-line options used to invoke the
       compiler that may affect code generation to be appended to the
       DW_AT_producer attribute in DWARF debugging information.  The
       options are concatenated with spaces separating them from each
       other and from the compiler version.  It is enabled by default.
!      See also â€˜-frecord-gcc-switchesâ€™ for another way of storing
       compiler options into the object file.
  
! â€˜-gstrict-dwarfâ€™
       Disallow using extensions of later DWARF standard version than
!      selected with â€˜-gdwarf-VERSIONâ€™.  On most targets using
       non-conflicting DWARF extensions from later standard versions is
       allowed.
  
! â€˜-gno-strict-dwarfâ€™
       Allow using extensions of later DWARF standard version than
!      selected with â€˜-gdwarf-VERSIONâ€™.
  
! â€˜-gas-loc-supportâ€™
!      Inform the compiler that the assembler supports â€˜.locâ€™ directives.
       It may then use them for the assembler to generate DWARF2+ line
       number tables.
  
*************** experience.
*** 11238,11276 ****
       This option will be enabled by default if, at GCC configure time,
       the assembler was found to support such directives.
  
! '-gno-as-loc-support'
       Force GCC to generate DWARF2+ line number tables internally, if
       DWARF2+ line number tables are to be generated.
  
! '-gas-locview-support'
!      Inform the compiler that the assembler supports 'view' assignment
!      and reset assertion checking in '.loc' directives.
  
       This option will be enabled by default if, at GCC configure time,
       the assembler was found to support them.
  
! '-gno-as-locview-support'
       Force GCC to assign view numbers internally, if
!      '-gvariable-location-views' are explicitly requested.
  
! '-gcolumn-info'
! '-gno-column-info'
       Emit location column information into DWARF debugging information,
       rather than just file and line.  This option is enabled by default.
  
! '-gstatement-frontiers'
! '-gno-statement-frontiers'
       This option causes GCC to create markers in the internal
       representation at the beginning of statements, and to keep them
       roughly in place throughout compilation, using them to guide the
!      output of 'is_stmt' markers in the line number table.  This is
!      enabled by default when compiling with optimization ('-Os', '-O1',
!      '-O2', ...), and outputting DWARF 2 debug information at the normal
       level.
  
! '-gvariable-location-views'
! '-gvariable-location-views=incompat5'
! '-gno-variable-location-views'
       Augment variable location lists with progressive view numbers
       implied from the line number table.  This enables debug information
       consumers to inspect state at certain points of the program, even
--- 11242,11280 ----
       This option will be enabled by default if, at GCC configure time,
       the assembler was found to support such directives.
  
! â€˜-gno-as-loc-supportâ€™
       Force GCC to generate DWARF2+ line number tables internally, if
       DWARF2+ line number tables are to be generated.
  
! â€˜-gas-locview-supportâ€™
!      Inform the compiler that the assembler supports â€˜viewâ€™ assignment
!      and reset assertion checking in â€˜.locâ€™ directives.
  
       This option will be enabled by default if, at GCC configure time,
       the assembler was found to support them.
  
! â€˜-gno-as-locview-supportâ€™
       Force GCC to assign view numbers internally, if
!      â€˜-gvariable-location-viewsâ€™ are explicitly requested.
  
! â€˜-gcolumn-infoâ€™
! â€˜-gno-column-infoâ€™
       Emit location column information into DWARF debugging information,
       rather than just file and line.  This option is enabled by default.
  
! â€˜-gstatement-frontiersâ€™
! â€˜-gno-statement-frontiersâ€™
       This option causes GCC to create markers in the internal
       representation at the beginning of statements, and to keep them
       roughly in place throughout compilation, using them to guide the
!      output of â€˜is_stmtâ€™ markers in the line number table.  This is
!      enabled by default when compiling with optimization (â€˜-Osâ€™, â€˜-O1â€™,
!      â€˜-O2â€™, ...), and outputting DWARF 2 debug information at the normal
       level.
  
! â€˜-gvariable-location-viewsâ€™
! â€˜-gvariable-location-views=incompat5â€™
! â€˜-gno-variable-location-viewsâ€™
       Augment variable location lists with progressive view numbers
       implied from the line number table.  This enables debug information
       consumers to inspect state at certain points of the program, even
*************** experience.
*** 11285,11319 ****
  
       This is enabled by default when outputting DWARF 2 debug
       information at the normal level, as long as there is assembler
!      support, '-fvar-tracking-assignments' is enabled and
!      '-gstrict-dwarf' is not.  When assembler support is not available,
       this may still be enabled, but it will force GCC to output internal
!      line number tables, and if '-ginternal-reset-location-views' is not
       enabled, that will most certainly lead to silently mismatching
       location views.
  
       There is a proposed representation for view numbers that is not
       backward compatible with the location list format introduced in
       DWARF 5, that can be enabled with
!      '-gvariable-location-views=incompat5'.  This option may be removed
       in the future, is only provided as a reference implementation of
       the proposed representation.  Debug information consumers are not
       expected to support this extended format, and they would be
       rendered unable to decode location lists using it.
  
! '-ginternal-reset-location-views'
! '-gno-internal-reset-location-views'
       Attempt to determine location views that can be omitted from
       location view lists.  This requires the compiler to have very
       accurate insn length estimates, which isn't always the case, and it
       may cause incorrect view lists to be generated silently when using
       an assembler that does not support location view lists.  The GNU
!      assembler will flag any such error as a 'view number mismatch'.
       This is only enabled on ports that define a reliable estimation
       function.
  
! '-ginline-points'
! '-gno-inline-points'
       Generate extended debug information for inlined functions.
       Location view tracking markers are inserted at inlined entry
       points, so that address and view numbers can be computed and output
--- 11289,11323 ----
  
       This is enabled by default when outputting DWARF 2 debug
       information at the normal level, as long as there is assembler
!      support, â€˜-fvar-tracking-assignmentsâ€™ is enabled and
!      â€˜-gstrict-dwarfâ€™ is not.  When assembler support is not available,
       this may still be enabled, but it will force GCC to output internal
!      line number tables, and if â€˜-ginternal-reset-location-viewsâ€™ is not
       enabled, that will most certainly lead to silently mismatching
       location views.
  
       There is a proposed representation for view numbers that is not
       backward compatible with the location list format introduced in
       DWARF 5, that can be enabled with
!      â€˜-gvariable-location-views=incompat5â€™.  This option may be removed
       in the future, is only provided as a reference implementation of
       the proposed representation.  Debug information consumers are not
       expected to support this extended format, and they would be
       rendered unable to decode location lists using it.
  
! â€˜-ginternal-reset-location-viewsâ€™
! â€˜-gno-internal-reset-location-viewsâ€™
       Attempt to determine location views that can be omitted from
       location view lists.  This requires the compiler to have very
       accurate insn length estimates, which isn't always the case, and it
       may cause incorrect view lists to be generated silently when using
       an assembler that does not support location view lists.  The GNU
!      assembler will flag any such error as a â€˜view number mismatchâ€™.
       This is only enabled on ports that define a reliable estimation
       function.
  
! â€˜-ginline-pointsâ€™
! â€˜-gno-inline-pointsâ€™
       Generate extended debug information for inlined functions.
       Location view tracking markers are inserted at inlined entry
       points, so that address and view numbers can be computed and output
*************** experience.
*** 11322,11351 ****
       it can only be enabled along with statement frontiers, and it is
       only enabled by default if location views are enabled.
  
! '-gz[=TYPE]'
       Produce compressed debug sections in DWARF format, if that is
       supported.  If TYPE is not given, the default type depends on the
       capabilities of the assembler and linker used.  TYPE may be one of
!      'none' (don't compress debug sections), or 'zlib' (use zlib
       compression in ELF gABI format).  If the linker doesn't support
       writing compressed debug sections, the option is rejected.
!      Otherwise, if the assembler does not support them, '-gz' is
       silently ignored when producing object files.
  
! '-femit-struct-debug-baseonly'
       Emit debug information for struct-like types only when the base
       name of the compilation source file matches the base name of file
       in which the struct is defined.
  
       This option substantially reduces the size of debugging
       information, but at significant potential loss in type information
!      to the debugger.  See '-femit-struct-debug-reduced' for a less
!      aggressive option.  See '-femit-struct-debug-detailed' for more
       detailed control.
  
       This option works only with DWARF debug output.
  
! '-femit-struct-debug-reduced'
       Emit debug information for struct-like types only when the base
       name of the compilation source file matches the base name of file
       in which the type is defined, unless the struct is a template or
--- 11326,11355 ----
       it can only be enabled along with statement frontiers, and it is
       only enabled by default if location views are enabled.
  
! â€˜-gz[=TYPE]â€™
       Produce compressed debug sections in DWARF format, if that is
       supported.  If TYPE is not given, the default type depends on the
       capabilities of the assembler and linker used.  TYPE may be one of
!      â€˜noneâ€™ (don't compress debug sections), or â€˜zlibâ€™ (use zlib
       compression in ELF gABI format).  If the linker doesn't support
       writing compressed debug sections, the option is rejected.
!      Otherwise, if the assembler does not support them, â€˜-gzâ€™ is
       silently ignored when producing object files.
  
! â€˜-femit-struct-debug-baseonlyâ€™
       Emit debug information for struct-like types only when the base
       name of the compilation source file matches the base name of file
       in which the struct is defined.
  
       This option substantially reduces the size of debugging
       information, but at significant potential loss in type information
!      to the debugger.  See â€˜-femit-struct-debug-reducedâ€™ for a less
!      aggressive option.  See â€˜-femit-struct-debug-detailedâ€™ for more
       detailed control.
  
       This option works only with DWARF debug output.
  
! â€˜-femit-struct-debug-reducedâ€™
       Emit debug information for struct-like types only when the base
       name of the compilation source file matches the base name of file
       in which the type is defined, unless the struct is a template or
*************** experience.
*** 11353,11411 ****
  
       This option significantly reduces the size of debugging
       information, with some potential loss in type information to the
!      debugger.  See '-femit-struct-debug-baseonly' for a more aggressive
!      option.  See '-femit-struct-debug-detailed' for more detailed
       control.
  
       This option works only with DWARF debug output.
  
! '-femit-struct-debug-detailed[=SPEC-LIST]'
       Specify the struct-like types for which the compiler generates
       debug information.  The intent is to reduce duplicate struct debug
       information between different object files within the same program.
  
!      This option is a detailed version of '-femit-struct-debug-reduced'
!      and '-femit-struct-debug-baseonly', which serves for most needs.
  
       A specification has the syntax
!      ['dir:'|'ind:']['ord:'|'gen:']('any'|'sys'|'base'|'none')
  
       The optional first word limits the specification to structs that
!      are used directly ('dir:') or used indirectly ('ind:').  A struct
       type is used directly when it is the type of a variable, member.
       Indirect uses arise through pointers to structs.  That is, when use
       of an incomplete struct is valid, the use is indirect.  An example
!      is 'struct one direct; struct two * indirect;'.
  
       The optional second word limits the specification to ordinary
!      structs ('ord:') or generic structs ('gen:').  Generic structs are
       a bit complicated to explain.  For C++, these are non-explicit
       specializations of template classes, or non-template classes within
       the above.  Other programming languages have generics, but
!      '-femit-struct-debug-detailed' does not yet implement them.
  
       The third word specifies the source files for those structs for
       which the compiler should emit debug information.  The values
!      'none' and 'any' have the normal meaning.  The value 'base' means
       that the base of name of the file in which the type declaration
       appears must match the base of the name of the main compilation
!      file.  In practice, this means that when compiling 'foo.c', debug
       information is generated for types declared in that file and
!      'foo.h', but not other header files.  The value 'sys' means those
!      types satisfying 'base' or declared in system or compiler headers.
  
       You may need to experiment to determine the best settings for your
       application.
  
!      The default is '-femit-struct-debug-detailed=all'.
  
       This option works only with DWARF debug output.
  
! '-fno-dwarf2-cfi-asm'
!      Emit DWARF unwind info as compiler generated '.eh_frame' section
!      instead of using GAS '.cfi_*' directives.
  
! '-fno-eliminate-unused-debug-types'
       Normally, when producing DWARF output, GCC avoids producing debug
       symbol output for types that are nowhere used in the source file
       being compiled.  Sometimes it is useful to have GCC emit debugging
--- 11357,11415 ----
  
       This option significantly reduces the size of debugging
       information, with some potential loss in type information to the
!      debugger.  See â€˜-femit-struct-debug-baseonlyâ€™ for a more aggressive
!      option.  See â€˜-femit-struct-debug-detailedâ€™ for more detailed
       control.
  
       This option works only with DWARF debug output.
  
! â€˜-femit-struct-debug-detailed[=SPEC-LIST]â€™
       Specify the struct-like types for which the compiler generates
       debug information.  The intent is to reduce duplicate struct debug
       information between different object files within the same program.
  
!      This option is a detailed version of â€˜-femit-struct-debug-reducedâ€™
!      and â€˜-femit-struct-debug-baseonlyâ€™, which serves for most needs.
  
       A specification has the syntax
!      [â€˜dir:â€™|â€˜ind:â€™][â€˜ord:â€™|â€˜gen:â€™](â€˜anyâ€™|â€˜sysâ€™|â€˜baseâ€™|â€˜noneâ€™)
  
       The optional first word limits the specification to structs that
!      are used directly (â€˜dir:â€™) or used indirectly (â€˜ind:â€™).  A struct
       type is used directly when it is the type of a variable, member.
       Indirect uses arise through pointers to structs.  That is, when use
       of an incomplete struct is valid, the use is indirect.  An example
!      is â€˜struct one direct; struct two * indirect;â€™.
  
       The optional second word limits the specification to ordinary
!      structs (â€˜ord:â€™) or generic structs (â€˜gen:â€™).  Generic structs are
       a bit complicated to explain.  For C++, these are non-explicit
       specializations of template classes, or non-template classes within
       the above.  Other programming languages have generics, but
!      â€˜-femit-struct-debug-detailedâ€™ does not yet implement them.
  
       The third word specifies the source files for those structs for
       which the compiler should emit debug information.  The values
!      â€˜noneâ€™ and â€˜anyâ€™ have the normal meaning.  The value â€˜baseâ€™ means
       that the base of name of the file in which the type declaration
       appears must match the base of the name of the main compilation
!      file.  In practice, this means that when compiling â€˜foo.câ€™, debug
       information is generated for types declared in that file and
!      â€˜foo.hâ€™, but not other header files.  The value â€˜sysâ€™ means those
!      types satisfying â€˜baseâ€™ or declared in system or compiler headers.
  
       You may need to experiment to determine the best settings for your
       application.
  
!      The default is â€˜-femit-struct-debug-detailed=allâ€™.
  
       This option works only with DWARF debug output.
  
! â€˜-fno-dwarf2-cfi-asmâ€™
!      Emit DWARF unwind info as compiler generated â€˜.eh_frameâ€™ section
!      instead of using GAS â€˜.cfi_*â€™ directives.
  
! â€˜-fno-eliminate-unused-debug-typesâ€™
       Normally, when producing DWARF output, GCC avoids producing debug
       symbol output for types that are nowhere used in the source file
       being compiled.  Sometimes it is useful to have GCC emit debugging
*************** compiling each of them.
*** 11443,11473 ****
   Not all optimizations are controlled directly by a flag.  Only
  optimizations that have a flag are listed in this section.
  
!  Most optimizations are completely disabled at '-O0' or if an '-O' level
  is not set on the command line, even if individual optimization flags
! are specified.  Similarly, '-Og' suppresses many optimization passes.
  
   Depending on the target and how GCC was configured, a slightly
! different set of optimizations may be enabled at each '-O' level than
! those listed here.  You can invoke GCC with '-Q --help=optimizers' to
  find out the exact set of optimizations that are enabled at each level.
  *Note Overall Options::, for examples.
  
! '-O'
! '-O1'
       Optimize.  Optimizing compilation takes somewhat more time, and a
       lot more memory for a large function.
  
!      With '-O', the compiler tries to reduce code size and execution
       time, without performing any optimizations that take a great deal
       of compilation time.
  
!      '-O' is the recommended optimization level for large
       machine-generated code as a sensible balance between time taken to
       compile and memory use: higher optimization levels perform
!      optimizations with greater algorithmic complexity than at '-O'.
  
!      '-O' turns on the following optimization flags:
  
            -fauto-inc-dec
            -fbranch-count-reg
--- 11447,11477 ----
   Not all optimizations are controlled directly by a flag.  Only
  optimizations that have a flag are listed in this section.
  
!  Most optimizations are completely disabled at â€˜-O0â€™ or if an â€˜-Oâ€™ level
  is not set on the command line, even if individual optimization flags
! are specified.  Similarly, â€˜-Ogâ€™ suppresses many optimization passes.
  
   Depending on the target and how GCC was configured, a slightly
! different set of optimizations may be enabled at each â€˜-Oâ€™ level than
! those listed here.  You can invoke GCC with â€˜-Q --help=optimizersâ€™ to
  find out the exact set of optimizations that are enabled at each level.
  *Note Overall Options::, for examples.
  
! â€˜-Oâ€™
! â€˜-O1â€™
       Optimize.  Optimizing compilation takes somewhat more time, and a
       lot more memory for a large function.
  
!      With â€˜-Oâ€™, the compiler tries to reduce code size and execution
       time, without performing any optimizations that take a great deal
       of compilation time.
  
!      â€˜-Oâ€™ is the recommended optimization level for large
       machine-generated code as a sensible balance between time taken to
       compile and memory use: higher optimization levels perform
!      optimizations with greater algorithmic complexity than at â€˜-Oâ€™.
  
!      â€˜-Oâ€™ turns on the following optimization flags:
  
            -fauto-inc-dec
            -fbranch-count-reg
*************** find out the exact set of optimizations
*** 11518,11530 ****
            -ftree-ter
            -funit-at-a-time
  
! '-O2'
       Optimize even more.  GCC performs nearly all supported
       optimizations that do not involve a space-speed tradeoff.  As
!      compared to '-O', this option increases both compilation time and
       the performance of the generated code.
  
!      '-O2' turns on all optimization flags specified by '-O1'.  It also
       turns on the following optimization flags:
  
            -falign-functions  -falign-jumps
--- 11522,11534 ----
            -ftree-ter
            -funit-at-a-time
  
! â€˜-O2â€™
       Optimize even more.  GCC performs nearly all supported
       optimizations that do not involve a space-speed tradeoff.  As
!      compared to â€˜-Oâ€™, this option increases both compilation time and
       the performance of the generated code.
  
!      â€˜-O2â€™ turns on all optimization flags specified by â€˜-O1â€™.  It also
       turns on the following optimization flags:
  
            -falign-functions  -falign-jumps
*************** find out the exact set of optimizations
*** 11567,11578 ****
            -ftree-vrp
            -fvect-cost-model=very-cheap
  
!      Please note the warning under '-fgcse' about invoking '-O2' on
       programs that use computed gotos.
  
! '-O3'
!      Optimize yet more.  '-O3' turns on all optimizations specified by
!      '-O2' and also turns on the following optimization flags:
  
            -fgcse-after-reload
            -fipa-cp-clone
--- 11571,11582 ----
            -ftree-vrp
            -fvect-cost-model=very-cheap
  
!      Please note the warning under â€˜-fgcseâ€™ about invoking â€˜-O2â€™ on
       programs that use computed gotos.
  
! â€˜-O3â€™
!      Optimize yet more.  â€˜-O3â€™ turns on all optimizations specified by
!      â€˜-O2â€™ and also turns on the following optimization flags:
  
            -fgcse-after-reload
            -fipa-cp-clone
*************** find out the exact set of optimizations
*** 11588,11636 ****
            -fvect-cost-model=dynamic
            -fversion-loops-for-strides
  
! '-O0'
       Reduce compilation time and make debugging produce the expected
       results.  This is the default.
  
!      At '-O0', GCC completely disables most optimization passes; they
       are not run even if you explicitly enable them on the command line,
!      or are listed by '-Q --help=optimizers' as being enabled by
       default.  Many optimizations performed by GCC depend on code
!      analysis or canonicalization passes that are enabled by '-O', and
       it would not be useful to run individual optimization passes in
       isolation.
  
! '-Os'
!      Optimize for size.  '-Os' enables all '-O2' optimizations except
       those that often increase code size:
  
            -falign-functions  -falign-jumps
            -falign-labels  -falign-loops
            -fprefetch-loop-arrays  -freorder-blocks-algorithm=stc
  
!      It also enables '-finline-functions', causes the compiler to tune
       for code size rather than execution speed, and performs further
       optimizations designed to reduce code size.
  
! '-Ofast'
!      Disregard strict standards compliance.  '-Ofast' enables all '-O3'
       optimizations.  It also enables optimizations that are not valid
!      for all standard-compliant programs.  It turns on '-ffast-math',
!      '-fallow-store-data-races' and the Fortran-specific
!      '-fstack-arrays', unless '-fmax-stack-var-size' is specified, and
!      '-fno-protect-parens'.  It turns off '-fsemantic-interposition'.
  
! '-Og'
!      Optimize debugging experience.  '-Og' should be the optimization
       level of choice for the standard edit-compile-debug cycle, offering
       a reasonable level of optimization while maintaining fast
       compilation and a good debugging experience.  It is a better choice
!      than '-O0' for producing debuggable code because some compiler
!      passes that collect debug information are disabled at '-O0'.
  
!      Like '-O0', '-Og' completely disables a number of optimization
       passes so that individual options controlling them have no effect.
!      Otherwise '-Og' enables all '-O1' optimization flags except for
       those that may interfere with debugging:
  
            -fbranch-count-reg  -fdelayed-branch
--- 11592,11640 ----
            -fvect-cost-model=dynamic
            -fversion-loops-for-strides
  
! â€˜-O0â€™
       Reduce compilation time and make debugging produce the expected
       results.  This is the default.
  
!      At â€˜-O0â€™, GCC completely disables most optimization passes; they
       are not run even if you explicitly enable them on the command line,
!      or are listed by â€˜-Q --help=optimizersâ€™ as being enabled by
       default.  Many optimizations performed by GCC depend on code
!      analysis or canonicalization passes that are enabled by â€˜-Oâ€™, and
       it would not be useful to run individual optimization passes in
       isolation.
  
! â€˜-Osâ€™
!      Optimize for size.  â€˜-Osâ€™ enables all â€˜-O2â€™ optimizations except
       those that often increase code size:
  
            -falign-functions  -falign-jumps
            -falign-labels  -falign-loops
            -fprefetch-loop-arrays  -freorder-blocks-algorithm=stc
  
!      It also enables â€˜-finline-functionsâ€™, causes the compiler to tune
       for code size rather than execution speed, and performs further
       optimizations designed to reduce code size.
  
! â€˜-Ofastâ€™
!      Disregard strict standards compliance.  â€˜-Ofastâ€™ enables all â€˜-O3â€™
       optimizations.  It also enables optimizations that are not valid
!      for all standard-compliant programs.  It turns on â€˜-ffast-mathâ€™,
!      â€˜-fallow-store-data-racesâ€™ and the Fortran-specific
!      â€˜-fstack-arraysâ€™, unless â€˜-fmax-stack-var-sizeâ€™ is specified, and
!      â€˜-fno-protect-parensâ€™.  It turns off â€˜-fsemantic-interpositionâ€™.
  
! â€˜-Ogâ€™
!      Optimize debugging experience.  â€˜-Ogâ€™ should be the optimization
       level of choice for the standard edit-compile-debug cycle, offering
       a reasonable level of optimization while maintaining fast
       compilation and a good debugging experience.  It is a better choice
!      than â€˜-O0â€™ for producing debuggable code because some compiler
!      passes that collect debug information are disabled at â€˜-O0â€™.
  
!      Like â€˜-O0â€™, â€˜-Ogâ€™ completely disables a number of optimization
       passes so that individual options controlling them have no effect.
!      Otherwise â€˜-Ogâ€™ enables all â€˜-O1â€™ optimization flags except for
       those that may interfere with debugging:
  
            -fbranch-count-reg  -fdelayed-branch
*************** find out the exact set of optimizations
*** 11639,11682 ****
            -fmove-loop-invariants  -fmove-loop-stores  -fssa-phiopt
            -ftree-bit-ccp  -ftree-dse  -ftree-pta  -ftree-sra
  
! '-Oz'
       Optimize aggressively for size rather than speed.  This may
       increase the number of instructions executed if those instructions
!      require fewer bytes to encode.  '-Oz' behaves similarly to '-Os'
!      including enabling most '-O2' optimizations.
  
!  If you use multiple '-O' options, with or without level numbers, the
  last such option is the one that is effective.
  
!  Options of the form '-fFLAG' specify machine-independent flags.  Most
  flags have both positive and negative forms; the negative form of
! '-ffoo' is '-fno-foo'.  In the table below, only one of the forms is
  listed--the one you typically use.  You can figure out the other form by
! either removing 'no-' or adding it.
  
   The following options control specific optimizations.  They are either
! activated by '-O' options or are related to ones that are.  You can use
  the following flags in the rare cases when "fine-tuning" of
  optimizations to be performed is desired.
  
! '-fno-defer-pop'
       For machines that must pop arguments after a function call, always
       pop the arguments as soon as each function returns.  At levels
!      '-O1' and higher, '-fdefer-pop' is the default; this allows the
       compiler to let arguments accumulate on the stack for several
       function calls and pop them all at once.
  
! '-fforward-propagate'
       Perform a forward propagation pass on RTL.  The pass tries to
       combine two instructions and checks if the result can be
       simplified.  If loop unrolling is active, two passes are performed
       and the second is scheduled after loop unrolling.
  
!      This option is enabled by default at optimization levels '-O1',
!      '-O2', '-O3', '-Os'.
  
! '-favoid-store-forwarding'
! '-fno-avoid-store-forwarding'
       Many CPUs will stall for many cycles when a load partially depends
       on previous smaller stores.  This pass tries to detect such cases
       and avoid the penalty by changing the order of the load and store
--- 11643,11686 ----
            -fmove-loop-invariants  -fmove-loop-stores  -fssa-phiopt
            -ftree-bit-ccp  -ftree-dse  -ftree-pta  -ftree-sra
  
! â€˜-Ozâ€™
       Optimize aggressively for size rather than speed.  This may
       increase the number of instructions executed if those instructions
!      require fewer bytes to encode.  â€˜-Ozâ€™ behaves similarly to â€˜-Osâ€™
!      including enabling most â€˜-O2â€™ optimizations.
  
!  If you use multiple â€˜-Oâ€™ options, with or without level numbers, the
  last such option is the one that is effective.
  
!  Options of the form â€˜-fFLAGâ€™ specify machine-independent flags.  Most
  flags have both positive and negative forms; the negative form of
! â€˜-ffooâ€™ is â€˜-fno-fooâ€™.  In the table below, only one of the forms is
  listed--the one you typically use.  You can figure out the other form by
! either removing â€˜no-â€™ or adding it.
  
   The following options control specific optimizations.  They are either
! activated by â€˜-Oâ€™ options or are related to ones that are.  You can use
  the following flags in the rare cases when "fine-tuning" of
  optimizations to be performed is desired.
  
! â€˜-fno-defer-popâ€™
       For machines that must pop arguments after a function call, always
       pop the arguments as soon as each function returns.  At levels
!      â€˜-O1â€™ and higher, â€˜-fdefer-popâ€™ is the default; this allows the
       compiler to let arguments accumulate on the stack for several
       function calls and pop them all at once.
  
! â€˜-fforward-propagateâ€™
       Perform a forward propagation pass on RTL.  The pass tries to
       combine two instructions and checks if the result can be
       simplified.  If loop unrolling is active, two passes are performed
       and the second is scheduled after loop unrolling.
  
!      This option is enabled by default at optimization levels â€˜-O1â€™,
!      â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-favoid-store-forwardingâ€™
! â€˜-fno-avoid-store-forwardingâ€™
       Many CPUs will stall for many cycles when a load partially depends
       on previous smaller stores.  This pass tries to detect such cases
       and avoid the penalty by changing the order of the load and store
*************** optimizations to be performed is desired
*** 11684,11702 ****
  
       Disabled by default.
  
! '-ffp-contract=STYLE'
!      '-ffp-contract=off' disables floating-point expression contraction.
!      '-ffp-contract=fast' enables floating-point expression contraction
       such as forming of fused multiply-add operations if the target has
!      native support for them.  '-ffp-contract=on' enables floating-point
       expression contraction if allowed by the language standard.  This
       is implemented for C and C++, where it enables contraction within
       one expression, but not across different statements.
  
!      The default is '-ffp-contract=off' for C in a standards compliant
!      mode ('-std=c11' or similar), '-ffp-contract=fast' otherwise.
  
! '-fomit-frame-pointer'
       Omit the frame pointer in functions that don't need one.  This
       avoids the instructions to save, set up and restore the frame
       pointer; on many targets it also makes an extra register available.
--- 11688,11706 ----
  
       Disabled by default.
  
! â€˜-ffp-contract=STYLEâ€™
!      â€˜-ffp-contract=offâ€™ disables floating-point expression contraction.
!      â€˜-ffp-contract=fastâ€™ enables floating-point expression contraction
       such as forming of fused multiply-add operations if the target has
!      native support for them.  â€˜-ffp-contract=onâ€™ enables floating-point
       expression contraction if allowed by the language standard.  This
       is implemented for C and C++, where it enables contraction within
       one expression, but not across different statements.
  
!      The default is â€˜-ffp-contract=offâ€™ for C in a standards compliant
!      mode (â€˜-std=c11â€™ or similar), â€˜-ffp-contract=fastâ€™ otherwise.
  
! â€˜-fomit-frame-pointerâ€™
       Omit the frame pointer in functions that don't need one.  This
       avoids the instructions to save, set up and restore the frame
       pointer; on many targets it also makes an extra register available.
*************** optimizations to be performed is desired
*** 11705,11717 ****
       calling sequence always uses a frame pointer, so it cannot be
       omitted.
  
!      Note that '-fno-omit-frame-pointer' doesn't guarantee the frame
       pointer is used in all functions.  Several targets always omit the
       frame pointer in leaf functions.
  
!      Enabled by default at '-O1' and higher.
  
! '-foptimize-crc'
       Detect loops calculating CRC (performing polynomial long division)
       and replace them with a faster implementation.  Detect 8, 16, 32,
       and 64 bit CRC, with a constant polynomial without the leading 1
--- 11709,11721 ----
       calling sequence always uses a frame pointer, so it cannot be
       omitted.
  
!      Note that â€˜-fno-omit-frame-pointerâ€™ doesn't guarantee the frame
       pointer is used in all functions.  Several targets always omit the
       frame pointer in leaf functions.
  
!      Enabled by default at â€˜-O1â€™ and higher.
  
! â€˜-foptimize-crcâ€™
       Detect loops calculating CRC (performing polynomial long division)
       and replace them with a faster implementation.  Detect 8, 16, 32,
       and 64 bit CRC, with a constant polynomial without the leading 1
*************** optimizations to be performed is desired
*** 11722,11746 ****
       carry-less-multiplication instruction, generate CRC using it;
       otherwise generate table-based CRC.
  
!      Enabled by default at '-O2' and higher.
  
! '-foptimize-sibling-calls'
       Optimize sibling and tail recursive calls.
  
!      Enabled at levels '-O2', '-O3', '-Os'.
  
! '-foptimize-strlen'
!      Optimize various standard C string functions (e.g. 'strlen',
!      'strchr' or 'strcpy') and their '_FORTIFY_SOURCE' counterparts into
       faster alternatives.
  
!      Enabled at levels '-O2', '-O3'.
  
! '-finline-stringops[=FN]'
!      Expand memory and string operations (for now, only 'memset')
       inline, even when the length is variable or big enough as to
!      require looping.  This is most useful along with '-ffreestanding'
!      and '-fno-builtin'.
  
       In some circumstances, it enables the compiler to generate code
       that takes advantage of known alignment and length multipliers, but
--- 11726,11750 ----
       carry-less-multiplication instruction, generate CRC using it;
       otherwise generate table-based CRC.
  
!      Enabled by default at â€˜-O2â€™ and higher.
  
! â€˜-foptimize-sibling-callsâ€™
       Optimize sibling and tail recursive calls.
  
!      Enabled at levels â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-foptimize-strlenâ€™
!      Optimize various standard C string functions (e.g. â€˜strlenâ€™,
!      â€˜strchrâ€™ or â€˜strcpyâ€™) and their â€˜_FORTIFY_SOURCEâ€™ counterparts into
       faster alternatives.
  
!      Enabled at levels â€˜-O2â€™, â€˜-O3â€™.
  
! â€˜-finline-stringops[=FN]â€™
!      Expand memory and string operations (for now, only â€˜memsetâ€™)
       inline, even when the length is variable or big enough as to
!      require looping.  This is most useful along with â€˜-ffreestandingâ€™
!      and â€˜-fno-builtinâ€™.
  
       In some circumstances, it enables the compiler to generate code
       that takes advantage of known alignment and length multipliers, but
*************** optimizations to be performed is desired
*** 11749,11833 ****
       performant but shared implementation runs faster due to better use
       of code caches.  This option is disabled by default.
  
! '-fno-inline'
       Do not expand any functions inline apart from those marked with the
!      'always_inline' attribute.  This is the default when not
       optimizing.
  
       Single functions can be exempted from inlining by marking them with
!      the 'noinline' attribute.
  
! '-finline-small-functions'
       Integrate functions into their callers when their body is smaller
       than expected function call code (so overall size of program gets
       smaller).  The compiler heuristically decides which functions are
       simple enough to be worth integrating in this way.  This inlining
       applies to all functions, even those not declared inline.
  
!      Enabled at levels '-O2', '-O3', '-Os'.
  
! '-findirect-inlining'
       Inline also indirect calls that are discovered to be known at
       compile time thanks to previous inlining.  This option has any
       effect only when inlining itself is turned on by the
!      '-finline-functions' or '-finline-small-functions' options.
  
!      Enabled at levels '-O2', '-O3', '-Os'.
  
! '-finline-functions'
       Consider all functions for inlining, even if they are not declared
       inline.  The compiler heuristically decides which functions are
       worth integrating in this way.
  
       If all calls to a given function are integrated, and the function
!      is declared 'static', then the function is normally not output as
       assembler code in its own right.
  
!      Enabled at levels '-O2', '-O3', '-Os'.  Also enabled by
!      '-fprofile-use' and '-fauto-profile'.
  
! '-finline-functions-called-once'
!      Consider all 'static' functions called once for inlining into their
!      caller even if they are not marked 'inline'.  If a call to a given
       function is integrated, then the function is not output as
       assembler code in its own right.
  
!      Enabled at levels '-O1', '-O2', '-O3' and '-Os', but not '-Og'.
  
! '-fearly-inlining'
!      Inline functions marked by 'always_inline' and functions whose body
       seems smaller than the function call overhead early before doing
!      '-fprofile-generate' instrumentation and real inlining pass.  Doing
       so makes profiling significantly cheaper and usually inlining
       faster on programs having large chains of nested wrapper functions.
  
       Enabled by default.
  
! '-fipa-sra'
       Perform interprocedural scalar replacement of aggregates, removal
       of unused parameters and replacement of parameters passed by
       reference by parameters passed by value.
  
!      Enabled at levels '-O2', '-O3' and '-Os'.
  
! '-finline-limit=N'
       By default, GCC limits the size of functions that can be inlined.
       This flag allows coarse control of this limit.  N is the size of
       functions that can be inlined in number of pseudo instructions.
  
       Inlining is actually controlled by a number of parameters, which
!      may be specified individually by using '--param NAME=VALUE'.  The
!      '-finline-limit=N' option sets some of these parameters as follows:
  
!      'max-inline-insns-single'
            is set to N/2.
!      'max-inline-insns-auto'
            is set to N/2.
  
       See below for a documentation of the individual parameters
       controlling inlining and for the defaults of these parameters.
  
!      _Note:_ there may be no value to '-finline-limit' that results in
       default behavior.
  
       _Note:_ pseudo instruction represents, in this particular context,
--- 11753,11837 ----
       performant but shared implementation runs faster due to better use
       of code caches.  This option is disabled by default.
  
! â€˜-fno-inlineâ€™
       Do not expand any functions inline apart from those marked with the
!      â€˜always_inlineâ€™ attribute.  This is the default when not
       optimizing.
  
       Single functions can be exempted from inlining by marking them with
!      the â€˜noinlineâ€™ attribute.
  
! â€˜-finline-small-functionsâ€™
       Integrate functions into their callers when their body is smaller
       than expected function call code (so overall size of program gets
       smaller).  The compiler heuristically decides which functions are
       simple enough to be worth integrating in this way.  This inlining
       applies to all functions, even those not declared inline.
  
!      Enabled at levels â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-findirect-inliningâ€™
       Inline also indirect calls that are discovered to be known at
       compile time thanks to previous inlining.  This option has any
       effect only when inlining itself is turned on by the
!      â€˜-finline-functionsâ€™ or â€˜-finline-small-functionsâ€™ options.
  
!      Enabled at levels â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-finline-functionsâ€™
       Consider all functions for inlining, even if they are not declared
       inline.  The compiler heuristically decides which functions are
       worth integrating in this way.
  
       If all calls to a given function are integrated, and the function
!      is declared â€˜staticâ€™, then the function is normally not output as
       assembler code in its own right.
  
!      Enabled at levels â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.  Also enabled by
!      â€˜-fprofile-useâ€™ and â€˜-fauto-profileâ€™.
  
! â€˜-finline-functions-called-onceâ€™
!      Consider all â€˜staticâ€™ functions called once for inlining into their
!      caller even if they are not marked â€˜inlineâ€™.  If a call to a given
       function is integrated, then the function is not output as
       assembler code in its own right.
  
!      Enabled at levels â€˜-O1â€™, â€˜-O2â€™, â€˜-O3â€™ and â€˜-Osâ€™, but not â€˜-Ogâ€™.
  
! â€˜-fearly-inliningâ€™
!      Inline functions marked by â€˜always_inlineâ€™ and functions whose body
       seems smaller than the function call overhead early before doing
!      â€˜-fprofile-generateâ€™ instrumentation and real inlining pass.  Doing
       so makes profiling significantly cheaper and usually inlining
       faster on programs having large chains of nested wrapper functions.
  
       Enabled by default.
  
! â€˜-fipa-sraâ€™
       Perform interprocedural scalar replacement of aggregates, removal
       of unused parameters and replacement of parameters passed by
       reference by parameters passed by value.
  
!      Enabled at levels â€˜-O2â€™, â€˜-O3â€™ and â€˜-Osâ€™.
  
! â€˜-finline-limit=Nâ€™
       By default, GCC limits the size of functions that can be inlined.
       This flag allows coarse control of this limit.  N is the size of
       functions that can be inlined in number of pseudo instructions.
  
       Inlining is actually controlled by a number of parameters, which
!      may be specified individually by using â€˜--param NAME=VALUEâ€™.  The
!      â€˜-finline-limit=Nâ€™ option sets some of these parameters as follows:
  
!      â€˜max-inline-insns-singleâ€™
            is set to N/2.
!      â€˜max-inline-insns-autoâ€™
            is set to N/2.
  
       See below for a documentation of the individual parameters
       controlling inlining and for the defaults of these parameters.
  
!      _Note:_ there may be no value to â€˜-finline-limitâ€™ that results in
       default behavior.
  
       _Note:_ pseudo instruction represents, in this particular context,
*************** optimizations to be performed is desired
*** 11835,11914 ****
       represent a count of assembly instructions and as such its exact
       meaning might change from one release to an another.
  
! '-fno-keep-inline-dllexport'
!      This is a more fine-grained version of '-fkeep-inline-functions',
       which applies only to functions that are declared using the
!      'dllexport' attribute or declspec.  *Note Declaring Attributes of
       Functions: Function Attributes.
  
! '-fkeep-inline-functions'
!      In C, emit 'static' functions that are declared 'inline' into the
       object file, even if the function has been inlined into all of its
!      callers.  This switch does not affect functions using the 'extern
!      inline' extension in GNU C90.  In C++, emit any and all inline
       functions into the object file.
  
! '-fkeep-static-functions'
!      Emit 'static' functions into the object file, even if the function
       is never used.
  
! '-fkeep-static-consts'
!      Emit variables declared 'static const' when optimization isn't
       turned on, even if the variables aren't referenced.
  
       GCC enables this option by default.  If you want to force the
       compiler to check if a variable is referenced, regardless of
       whether or not optimization is turned on, use the
!      '-fno-keep-static-consts' option.
  
! '-fmerge-constants'
       Attempt to merge identical constants (string constants and
       floating-point constants) across compilation units.
  
       This option is the default for optimized compilation if the
!      assembler and linker support it.  Use '-fno-merge-constants' to
       inhibit this behavior.
  
!      Enabled at levels '-O1', '-O2', '-O3', '-Os'.
  
! '-fmerge-all-constants'
       Attempt to merge identical constants and identical variables.
  
!      This option implies '-fmerge-constants'.  In addition to
!      '-fmerge-constants' this considers e.g. even constant initialized
       arrays or initialized constant variables with integral or
       floating-point types.  Languages like C or C++ require each
       variable, including multiple instances of the same variable in
       recursive calls, to have distinct locations, so using this option
       results in non-conforming behavior.
  
! '-fmodulo-sched'
       Perform swing modulo scheduling immediately before the first
       scheduling pass.  This pass looks at innermost loops and reorders
       their instructions by overlapping different iterations.
  
! '-fmodulo-sched-allow-regmoves'
       Perform more aggressive SMS-based modulo scheduling with register
       moves allowed.  By setting this flag certain anti-dependences edges
       are deleted, which triggers the generation of reg-moves based on
       the life-range analysis.  This option is effective only with
!      '-fmodulo-sched' enabled.
  
! '-fno-branch-count-reg'
       Disable the optimization pass that scans for opportunities to use
       "decrement and branch" instructions on a count register instead of
       instruction sequences that decrement a register, compare it against
       zero, and then branch based upon the result.  This option is only
       meaningful on architectures that support such instructions, which
       include x86, PowerPC, IA-64 and S/390.  Note that the
!      '-fno-branch-count-reg' option doesn't remove the decrement and
       branch instructions from the generated instruction stream
       introduced by other optimization passes.
  
!      The default is '-fbranch-count-reg' at '-O1' and higher, except for
!      '-Og'.
  
! '-fno-function-cse'
       Do not put function addresses in registers; make each instruction
       that calls a constant function contain the function's address
       explicitly.
--- 11839,11918 ----
       represent a count of assembly instructions and as such its exact
       meaning might change from one release to an another.
  
! â€˜-fno-keep-inline-dllexportâ€™
!      This is a more fine-grained version of â€˜-fkeep-inline-functionsâ€™,
       which applies only to functions that are declared using the
!      â€˜dllexportâ€™ attribute or declspec.  *Note Declaring Attributes of
       Functions: Function Attributes.
  
! â€˜-fkeep-inline-functionsâ€™
!      In C, emit â€˜staticâ€™ functions that are declared â€˜inlineâ€™ into the
       object file, even if the function has been inlined into all of its
!      callers.  This switch does not affect functions using the â€˜extern
!      inlineâ€™ extension in GNU C90.  In C++, emit any and all inline
       functions into the object file.
  
! â€˜-fkeep-static-functionsâ€™
!      Emit â€˜staticâ€™ functions into the object file, even if the function
       is never used.
  
! â€˜-fkeep-static-constsâ€™
!      Emit variables declared â€˜static constâ€™ when optimization isn't
       turned on, even if the variables aren't referenced.
  
       GCC enables this option by default.  If you want to force the
       compiler to check if a variable is referenced, regardless of
       whether or not optimization is turned on, use the
!      â€˜-fno-keep-static-constsâ€™ option.
  
! â€˜-fmerge-constantsâ€™
       Attempt to merge identical constants (string constants and
       floating-point constants) across compilation units.
  
       This option is the default for optimized compilation if the
!      assembler and linker support it.  Use â€˜-fno-merge-constantsâ€™ to
       inhibit this behavior.
  
!      Enabled at levels â€˜-O1â€™, â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-fmerge-all-constantsâ€™
       Attempt to merge identical constants and identical variables.
  
!      This option implies â€˜-fmerge-constantsâ€™.  In addition to
!      â€˜-fmerge-constantsâ€™ this considers e.g. even constant initialized
       arrays or initialized constant variables with integral or
       floating-point types.  Languages like C or C++ require each
       variable, including multiple instances of the same variable in
       recursive calls, to have distinct locations, so using this option
       results in non-conforming behavior.
  
! â€˜-fmodulo-schedâ€™
       Perform swing modulo scheduling immediately before the first
       scheduling pass.  This pass looks at innermost loops and reorders
       their instructions by overlapping different iterations.
  
! â€˜-fmodulo-sched-allow-regmovesâ€™
       Perform more aggressive SMS-based modulo scheduling with register
       moves allowed.  By setting this flag certain anti-dependences edges
       are deleted, which triggers the generation of reg-moves based on
       the life-range analysis.  This option is effective only with
!      â€˜-fmodulo-schedâ€™ enabled.
  
! â€˜-fno-branch-count-regâ€™
       Disable the optimization pass that scans for opportunities to use
       "decrement and branch" instructions on a count register instead of
       instruction sequences that decrement a register, compare it against
       zero, and then branch based upon the result.  This option is only
       meaningful on architectures that support such instructions, which
       include x86, PowerPC, IA-64 and S/390.  Note that the
!      â€˜-fno-branch-count-regâ€™ option doesn't remove the decrement and
       branch instructions from the generated instruction stream
       introduced by other optimization passes.
  
!      The default is â€˜-fbranch-count-regâ€™ at â€˜-O1â€™ and higher, except for
!      â€˜-Ogâ€™.
  
! â€˜-fno-function-cseâ€™
       Do not put function addresses in registers; make each instruction
       that calls a constant function contain the function's address
       explicitly.
*************** optimizations to be performed is desired
*** 11917,11925 ****
       that alter the assembler output may be confused by the
       optimizations performed when this option is not used.
  
!      The default is '-ffunction-cse'
  
! '-fno-zero-initialized-in-bss'
       If the target supports a BSS section, GCC by default puts variables
       that are initialized to zero into BSS.  This can save space in the
       resulting code.
--- 11921,11929 ----
       that alter the assembler output may be confused by the
       optimizations performed when this option is not used.
  
!      The default is â€˜-ffunction-cseâ€™
  
! â€˜-fno-zero-initialized-in-bssâ€™
       If the target supports a BSS section, GCC by default puts variables
       that are initialized to zero into BSS.  This can save space in the
       resulting code.
*************** optimizations to be performed is desired
*** 11929,12026 ****
       that the resulting executable can find the beginning of that
       section and/or make assumptions based on that.
  
!      The default is '-fzero-initialized-in-bss' except in Ada.
  
! '-fthread-jumps'
       Perform optimizations that check to see if a jump branches to a
       location where another comparison subsumed by the first is found.
       If so, the first branch is redirected to either the destination of
       the second branch or a point immediately following it, depending on
       whether the condition is known to be true or false.
  
!      Enabled at levels '-O1', '-O2', '-O3', '-Os'.
  
! '-fsplit-wide-types'
!      When using a type that occupies multiple registers, such as 'long
!      long' on a 32-bit system, split the registers apart and allocate
       them independently.  This normally generates better code for those
       types, but may make debugging more difficult.
  
!      Enabled at levels '-O1', '-O2', '-O3', '-Os'.
  
! '-fsplit-wide-types-early'
       Fully split wide types early, instead of very late.  This option
!      has no effect unless '-fsplit-wide-types' is turned on.
  
       This is the default on some targets.
  
! '-fcse-follow-jumps'
       In common subexpression elimination (CSE), scan through jump
       instructions when the target of the jump is not reached by any
!      other path.  For example, when CSE encounters an 'if' statement
!      with an 'else' clause, CSE follows the jump when the condition
       tested is false.
  
!      Enabled at levels '-O2', '-O3', '-Os'.
  
! '-fcse-skip-blocks'
!      This is similar to '-fcse-follow-jumps', but causes CSE to follow
       jumps that conditionally skip over blocks.  When CSE encounters a
!      simple 'if' statement with no else clause, '-fcse-skip-blocks'
!      causes CSE to follow the jump around the body of the 'if'.
  
!      Enabled at levels '-O2', '-O3', '-Os'.
  
! '-frerun-cse-after-loop'
       Re-run common subexpression elimination after loop optimizations
       are performed.
  
!      Enabled at levels '-O2', '-O3', '-Os'.
  
! '-fgcse'
       Perform a global common subexpression elimination pass.  This pass
       also performs global constant and copy propagation.
  
       _Note:_ When compiling a program using computed gotos, a GCC
       extension, you may get better run-time performance if you disable
       the global common subexpression elimination pass by adding
!      '-fno-gcse' to the command line.
  
!      Enabled at levels '-O2', '-O3', '-Os'.
  
! '-fgcse-lm'
!      When '-fgcse-lm' is enabled, global common subexpression
       elimination attempts to move loads that are only killed by stores
       into themselves.  This allows a loop containing a load/store
       sequence to be changed to a load outside the loop, and a copy/store
       within the loop.
  
!      Enabled by default when '-fgcse' is enabled.
  
! '-fgcse-sm'
!      When '-fgcse-sm' is enabled, a store motion pass is run after
       global common subexpression elimination.  This pass attempts to
       move stores out of loops.  When used in conjunction with
!      '-fgcse-lm', loops containing a load/store sequence can be changed
       to a load before the loop and a store after the loop.
  
       Not enabled at any optimization level.
  
! '-fgcse-las'
!      When '-fgcse-las' is enabled, the global common subexpression
       elimination pass eliminates redundant loads that come after stores
       to the same memory location (both partial and full redundancies).
  
       Not enabled at any optimization level.
  
! '-fgcse-after-reload'
!      When '-fgcse-after-reload' is enabled, a redundant load elimination
       pass is performed after reload.  The purpose of this pass is to
       clean up redundant spilling.
  
!      Enabled by '-O3', '-fprofile-use' and '-fauto-profile'.
  
! '-faggressive-loop-optimizations'
       This option tells the loop optimizer to use language constraints to
       derive bounds for the number of iterations of a loop.  This assumes
       that loop code does not invoke undefined behavior by for example
--- 11933,12030 ----
       that the resulting executable can find the beginning of that
       section and/or make assumptions based on that.
  
!      The default is â€˜-fzero-initialized-in-bssâ€™ except in Ada.
  
! â€˜-fthread-jumpsâ€™
       Perform optimizations that check to see if a jump branches to a
       location where another comparison subsumed by the first is found.
       If so, the first branch is redirected to either the destination of
       the second branch or a point immediately following it, depending on
       whether the condition is known to be true or false.
  
!      Enabled at levels â€˜-O1â€™, â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-fsplit-wide-typesâ€™
!      When using a type that occupies multiple registers, such as â€˜long
!      longâ€™ on a 32-bit system, split the registers apart and allocate
       them independently.  This normally generates better code for those
       types, but may make debugging more difficult.
  
!      Enabled at levels â€˜-O1â€™, â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-fsplit-wide-types-earlyâ€™
       Fully split wide types early, instead of very late.  This option
!      has no effect unless â€˜-fsplit-wide-typesâ€™ is turned on.
  
       This is the default on some targets.
  
! â€˜-fcse-follow-jumpsâ€™
       In common subexpression elimination (CSE), scan through jump
       instructions when the target of the jump is not reached by any
!      other path.  For example, when CSE encounters an â€˜ifâ€™ statement
!      with an â€˜elseâ€™ clause, CSE follows the jump when the condition
       tested is false.
  
!      Enabled at levels â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-fcse-skip-blocksâ€™
!      This is similar to â€˜-fcse-follow-jumpsâ€™, but causes CSE to follow
       jumps that conditionally skip over blocks.  When CSE encounters a
!      simple â€˜ifâ€™ statement with no else clause, â€˜-fcse-skip-blocksâ€™
!      causes CSE to follow the jump around the body of the â€˜ifâ€™.
  
!      Enabled at levels â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-frerun-cse-after-loopâ€™
       Re-run common subexpression elimination after loop optimizations
       are performed.
  
!      Enabled at levels â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-fgcseâ€™
       Perform a global common subexpression elimination pass.  This pass
       also performs global constant and copy propagation.
  
       _Note:_ When compiling a program using computed gotos, a GCC
       extension, you may get better run-time performance if you disable
       the global common subexpression elimination pass by adding
!      â€˜-fno-gcseâ€™ to the command line.
  
!      Enabled at levels â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-fgcse-lmâ€™
!      When â€˜-fgcse-lmâ€™ is enabled, global common subexpression
       elimination attempts to move loads that are only killed by stores
       into themselves.  This allows a loop containing a load/store
       sequence to be changed to a load outside the loop, and a copy/store
       within the loop.
  
!      Enabled by default when â€˜-fgcseâ€™ is enabled.
  
! â€˜-fgcse-smâ€™
!      When â€˜-fgcse-smâ€™ is enabled, a store motion pass is run after
       global common subexpression elimination.  This pass attempts to
       move stores out of loops.  When used in conjunction with
!      â€˜-fgcse-lmâ€™, loops containing a load/store sequence can be changed
       to a load before the loop and a store after the loop.
  
       Not enabled at any optimization level.
  
! â€˜-fgcse-lasâ€™
!      When â€˜-fgcse-lasâ€™ is enabled, the global common subexpression
       elimination pass eliminates redundant loads that come after stores
       to the same memory location (both partial and full redundancies).
  
       Not enabled at any optimization level.
  
! â€˜-fgcse-after-reloadâ€™
!      When â€˜-fgcse-after-reloadâ€™ is enabled, a redundant load elimination
       pass is performed after reload.  The purpose of this pass is to
       clean up redundant spilling.
  
!      Enabled by â€˜-O3â€™, â€˜-fprofile-useâ€™ and â€˜-fauto-profileâ€™.
  
! â€˜-faggressive-loop-optimizationsâ€™
       This option tells the loop optimizer to use language constraints to
       derive bounds for the number of iterations of a loop.  This assumes
       that loop code does not invoke undefined behavior by for example
*************** optimizations to be performed is desired
*** 12029,12077 ****
       loop unrolling and peeling and loop exit test optimizations.  This
       option is enabled by default.
  
! '-funconstrained-commons'
       This option tells the compiler that variables declared in common
       blocks (e.g. Fortran) may later be overridden with longer trailing
       arrays.  This prevents certain optimizations that depend on knowing
       the array bounds.
  
! '-fcrossjumping'
       Perform cross-jumping transformation.  This transformation unifies
       equivalent code and saves code size.  The resulting code may or may
       not perform better than without cross-jumping.
  
!      Enabled at levels '-O2', '-O3', '-Os'.
  
! '-fauto-inc-dec'
       Combine increments or decrements of addresses with memory accesses.
       This pass is always skipped on architectures that do not have
!      instructions to support this.  Enabled by default at '-O1' and
       higher on architectures that support this.
  
! '-fdce'
       Perform dead code elimination (DCE) on RTL.  Enabled by default at
!      '-O1' and higher.
  
! '-fdse'
       Perform dead store elimination (DSE) on RTL.  Enabled by default at
!      '-O1' and higher.
  
! '-fif-conversion'
       Attempt to transform conditional jumps into branch-less
       equivalents.  This includes use of conditional moves, min, max, set
       flags and abs instructions, and some tricks doable by standard
       arithmetics.  The use of conditional execution on chips where it is
!      available is controlled by '-fif-conversion2'.
  
!      Enabled at levels '-O1', '-O2', '-O3', '-Os', but not with '-Og'.
  
! '-fif-conversion2'
       Use conditional execution (where available) to transform
       conditional jumps into branch-less equivalents.
  
!      Enabled at levels '-O1', '-O2', '-O3', '-Os', but not with '-Og'.
  
! '-fdeclone-ctor-dtor'
       The C++ ABI requires multiple entry points for constructors and
       destructors: one for a base subobject, one for a complete object,
       and one for a virtual destructor that calls operator delete
--- 12033,12081 ----
       loop unrolling and peeling and loop exit test optimizations.  This
       option is enabled by default.
  
! â€˜-funconstrained-commonsâ€™
       This option tells the compiler that variables declared in common
       blocks (e.g. Fortran) may later be overridden with longer trailing
       arrays.  This prevents certain optimizations that depend on knowing
       the array bounds.
  
! â€˜-fcrossjumpingâ€™
       Perform cross-jumping transformation.  This transformation unifies
       equivalent code and saves code size.  The resulting code may or may
       not perform better than without cross-jumping.
  
!      Enabled at levels â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-fauto-inc-decâ€™
       Combine increments or decrements of addresses with memory accesses.
       This pass is always skipped on architectures that do not have
!      instructions to support this.  Enabled by default at â€˜-O1â€™ and
       higher on architectures that support this.
  
! â€˜-fdceâ€™
       Perform dead code elimination (DCE) on RTL.  Enabled by default at
!      â€˜-O1â€™ and higher.
  
! â€˜-fdseâ€™
       Perform dead store elimination (DSE) on RTL.  Enabled by default at
!      â€˜-O1â€™ and higher.
  
! â€˜-fif-conversionâ€™
       Attempt to transform conditional jumps into branch-less
       equivalents.  This includes use of conditional moves, min, max, set
       flags and abs instructions, and some tricks doable by standard
       arithmetics.  The use of conditional execution on chips where it is
!      available is controlled by â€˜-fif-conversion2â€™.
  
!      Enabled at levels â€˜-O1â€™, â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™, but not with â€˜-Ogâ€™.
  
! â€˜-fif-conversion2â€™
       Use conditional execution (where available) to transform
       conditional jumps into branch-less equivalents.
  
!      Enabled at levels â€˜-O1â€™, â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™, but not with â€˜-Ogâ€™.
  
! â€˜-fdeclone-ctor-dtorâ€™
       The C++ ABI requires multiple entry points for constructors and
       destructors: one for a base subobject, one for a complete object,
       and one for a virtual destructor that calls operator delete
*************** optimizations to be performed is desired
*** 12080,12088 ****
       function.  With this option, the base and complete variants are
       changed to be thunks that call a common implementation.
  
!      Enabled by '-Os'.
  
! '-fdelete-null-pointer-checks'
       Assume that programs cannot safely dereference null pointers, and
       that no code or data element resides at address zero.  This option
       enables simple constant folding optimizations at all optimization
--- 12084,12092 ----
       function.  With this option, the base and complete variants are
       changed to be thunks that call a common implementation.
  
!      Enabled by â€˜-Osâ€™.
  
! â€˜-fdelete-null-pointer-checksâ€™
       Assume that programs cannot safely dereference null pointers, and
       that no code or data element resides at address zero.  This option
       enables simple constant folding optimizations at all optimization
*************** optimizations to be performed is desired
*** 12093,12099 ****
       checked after it has already been dereferenced, it cannot be null.
  
       Note however that in some environments this assumption is not true.
!      Use '-fno-delete-null-pointer-checks' to disable this optimization
       for programs that depend on that behavior.
  
       This option is enabled by default on most targets.  On AVR and
--- 12097,12103 ----
       checked after it has already been dereferenced, it cannot be null.
  
       Note however that in some environments this assumption is not true.
!      Use â€˜-fno-delete-null-pointer-checksâ€™ to disable this optimization
       for programs that depend on that behavior.
  
       This option is enabled by default on most targets.  On AVR and
*************** optimizations to be performed is desired
*** 12102,12115 ****
       Passes that use the dataflow information are enabled independently
       at different optimization levels.
  
! '-fdevirtualize'
       Attempt to convert calls to virtual functions to direct calls.
       This is done both within a procedure and interprocedurally as part
!      of indirect inlining ('-findirect-inlining') and interprocedural
!      constant propagation ('-fipa-cp').  Enabled at levels '-O2', '-O3',
!      '-Os'.
  
! '-fdevirtualize-speculatively'
       Attempt to convert calls to virtual functions to speculative direct
       calls.  Based on the analysis of the type inheritance graph,
       determine for a given call the set of likely targets.  If the set
--- 12106,12119 ----
       Passes that use the dataflow information are enabled independently
       at different optimization levels.
  
! â€˜-fdevirtualizeâ€™
       Attempt to convert calls to virtual functions to direct calls.
       This is done both within a procedure and interprocedurally as part
!      of indirect inlining (â€˜-findirect-inliningâ€™) and interprocedural
!      constant propagation (â€˜-fipa-cpâ€™).  Enabled at levels â€˜-O2â€™, â€˜-O3â€™,
!      â€˜-Osâ€™.
  
! â€˜-fdevirtualize-speculativelyâ€™
       Attempt to convert calls to virtual functions to speculative direct
       calls.  Based on the analysis of the type inheritance graph,
       determine for a given call the set of likely targets.  If the set
*************** optimizations to be performed is desired
*** 12119,12147 ****
       useless after further optimization, they are converted back into
       original form.
  
! '-fdevirtualize-at-ltrans'
       Stream extra information needed for aggressive devirtualization
       when running the link-time optimizer in local transformation mode.
       This option enables more devirtualization but significantly
       increases the size of streamed data.  For this reason it is
       disabled by default.
  
! '-fexpensive-optimizations'
       Perform a number of minor optimizations that are relatively
       expensive.
  
!      Enabled at levels '-O2', '-O3', '-Os'.
  
! '-free'
       Attempt to remove redundant extension instructions.  This is
       especially helpful for the x86-64 architecture, which implicitly
       zero-extends in 64-bit registers after writing to their lower
       32-bit half.
  
       Enabled for Alpha, AArch64, LoongArch, PowerPC, RISC-V, SPARC,
!      h83000 and x86 at levels '-O2', '-O3', '-Os'.
  
! '-fno-lifetime-dse'
       In C++ the value of an object is only affected by changes within
       its lifetime: when the constructor begins, the object has an
       indeterminate value, and any changes during the lifetime of the
--- 12123,12151 ----
       useless after further optimization, they are converted back into
       original form.
  
! â€˜-fdevirtualize-at-ltransâ€™
       Stream extra information needed for aggressive devirtualization
       when running the link-time optimizer in local transformation mode.
       This option enables more devirtualization but significantly
       increases the size of streamed data.  For this reason it is
       disabled by default.
  
! â€˜-fexpensive-optimizationsâ€™
       Perform a number of minor optimizations that are relatively
       expensive.
  
!      Enabled at levels â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-freeâ€™
       Attempt to remove redundant extension instructions.  This is
       especially helpful for the x86-64 architecture, which implicitly
       zero-extends in 64-bit registers after writing to their lower
       32-bit half.
  
       Enabled for Alpha, AArch64, LoongArch, PowerPC, RISC-V, SPARC,
!      h83000 and x86 at levels â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-fno-lifetime-dseâ€™
       In C++ the value of an object is only affected by changes within
       its lifetime: when the constructor begins, the object has an
       indeterminate value, and any changes during the lifetime of the
*************** optimizations to be performed is desired
*** 12151,12237 ****
       object, you can use this flag to disable this optimization.  To
       preserve stores before the constructor starts (e.g. because your
       operator new clears the object storage) but still treat the object
!      as dead after the destructor, you can use '-flifetime-dse=1'.  The
       default behavior can be explicitly selected with
!      '-flifetime-dse=2'.  '-flifetime-dse=0' is equivalent to
!      '-fno-lifetime-dse'.
  
! '-flive-range-shrinkage'
       Attempt to decrease register pressure through register live range
       shrinkage.  This is helpful for fast processors with small or
       moderate size register sets.
  
! '-fira-algorithm=ALGORITHM'
       Use the specified coloring algorithm for the integrated register
!      allocator.  The ALGORITHM argument can be 'priority', which
!      specifies Chow's priority coloring, or 'CB', which specifies
       Chaitin-Briggs coloring.  Chaitin-Briggs coloring is not
       implemented for all architectures, but for those targets that do
       support it, it is the default because it generates better code.
  
! '-fira-region=REGION'
       Use specified regions for the integrated register allocator.  The
       REGION argument should be one of the following:
  
!      'all'
            Use all loops as register allocation regions.  This can give
            the best results for machines with a small and/or irregular
            register set.
  
!      'mixed'
            Use all loops except for loops with small register pressure as
            the regions.  This value usually gives the best results in
            most cases and for most architectures, and is enabled by
!           default when compiling with optimization for speed ('-O',
!           '-O2', ...).
  
!      'one'
            Use all functions as a single region.  This typically results
!           in the smallest code size, and is enabled by default for '-Os'
!           or '-O0'.
  
! '-fira-hoist-pressure'
       Use IRA to evaluate register pressure in the code hoisting pass for
       decisions to hoist expressions.  This option usually results in
       smaller code, but it can slow the compiler down.
  
!      This option is enabled at level '-Os' for all targets.
  
! '-fira-loop-pressure'
       Use IRA to evaluate register pressure in loops for decisions to
       move loop invariants.  This option usually results in generation of
       faster and smaller code on machines with large register files (>=
       32 registers), but it can slow the compiler down.
  
!      This option is enabled at level '-O3' for some targets.
  
! '-fno-ira-share-save-slots'
       Disable sharing of stack slots used for saving call-used hard
       registers living through a call.  Each hard register gets a
       separate stack slot, and as a result function stack frames are
       larger.
  
! '-fno-ira-share-spill-slots'
       Disable sharing of stack slots allocated for pseudo-registers.
       Each pseudo-register that does not get a hard register gets a
       separate stack slot, and as a result function stack frames are
       larger.
  
! '-flra-remat'
       Enable CFG-sensitive rematerialization in LRA. Instead of loading
       values of spilled pseudos, LRA tries to rematerialize (recalculate)
       values if it is profitable.
  
!      Enabled at levels '-O2', '-O3', '-Os'.
  
! '-fdelayed-branch'
       If supported for the target machine, attempt to reorder
       instructions to exploit instruction slots available after delayed
       branch instructions.
  
!      Enabled at levels '-O1', '-O2', '-O3', '-Os', but not at '-Og'.
  
! '-fschedule-insns'
       If supported for the target machine, attempt to reorder
       instructions to eliminate execution stalls due to required data
       being unavailable.  This helps machines that have slow floating
--- 12155,12241 ----
       object, you can use this flag to disable this optimization.  To
       preserve stores before the constructor starts (e.g. because your
       operator new clears the object storage) but still treat the object
!      as dead after the destructor, you can use â€˜-flifetime-dse=1â€™.  The
       default behavior can be explicitly selected with
!      â€˜-flifetime-dse=2â€™.  â€˜-flifetime-dse=0â€™ is equivalent to
!      â€˜-fno-lifetime-dseâ€™.
  
! â€˜-flive-range-shrinkageâ€™
       Attempt to decrease register pressure through register live range
       shrinkage.  This is helpful for fast processors with small or
       moderate size register sets.
  
! â€˜-fira-algorithm=ALGORITHMâ€™
       Use the specified coloring algorithm for the integrated register
!      allocator.  The ALGORITHM argument can be â€˜priorityâ€™, which
!      specifies Chow's priority coloring, or â€˜CBâ€™, which specifies
       Chaitin-Briggs coloring.  Chaitin-Briggs coloring is not
       implemented for all architectures, but for those targets that do
       support it, it is the default because it generates better code.
  
! â€˜-fira-region=REGIONâ€™
       Use specified regions for the integrated register allocator.  The
       REGION argument should be one of the following:
  
!      â€˜allâ€™
            Use all loops as register allocation regions.  This can give
            the best results for machines with a small and/or irregular
            register set.
  
!      â€˜mixedâ€™
            Use all loops except for loops with small register pressure as
            the regions.  This value usually gives the best results in
            most cases and for most architectures, and is enabled by
!           default when compiling with optimization for speed (â€˜-Oâ€™,
!           â€˜-O2â€™, ...).
  
!      â€˜oneâ€™
            Use all functions as a single region.  This typically results
!           in the smallest code size, and is enabled by default for â€˜-Osâ€™
!           or â€˜-O0â€™.
  
! â€˜-fira-hoist-pressureâ€™
       Use IRA to evaluate register pressure in the code hoisting pass for
       decisions to hoist expressions.  This option usually results in
       smaller code, but it can slow the compiler down.
  
!      This option is enabled at level â€˜-Osâ€™ for all targets.
  
! â€˜-fira-loop-pressureâ€™
       Use IRA to evaluate register pressure in loops for decisions to
       move loop invariants.  This option usually results in generation of
       faster and smaller code on machines with large register files (>=
       32 registers), but it can slow the compiler down.
  
!      This option is enabled at level â€˜-O3â€™ for some targets.
  
! â€˜-fno-ira-share-save-slotsâ€™
       Disable sharing of stack slots used for saving call-used hard
       registers living through a call.  Each hard register gets a
       separate stack slot, and as a result function stack frames are
       larger.
  
! â€˜-fno-ira-share-spill-slotsâ€™
       Disable sharing of stack slots allocated for pseudo-registers.
       Each pseudo-register that does not get a hard register gets a
       separate stack slot, and as a result function stack frames are
       larger.
  
! â€˜-flra-rematâ€™
       Enable CFG-sensitive rematerialization in LRA. Instead of loading
       values of spilled pseudos, LRA tries to rematerialize (recalculate)
       values if it is profitable.
  
!      Enabled at levels â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-fdelayed-branchâ€™
       If supported for the target machine, attempt to reorder
       instructions to exploit instruction slots available after delayed
       branch instructions.
  
!      Enabled at levels â€˜-O1â€™, â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™, but not at â€˜-Ogâ€™.
  
! â€˜-fschedule-insnsâ€™
       If supported for the target machine, attempt to reorder
       instructions to eliminate execution stalls due to required data
       being unavailable.  This helps machines that have slow floating
*************** optimizations to be performed is desired
*** 12239,12308 ****
       be issued until the result of the load or floating-point
       instruction is required.
  
!      Conventionally enabled at optimization levels '-O2' and '-O3'.
       However, many targets override this behavior.  For example, on x86,
       it is disabled at all levels, while on AArch64, it is enabled only
!      at '-O3'.
  
! '-fschedule-insns2'
!      Similar to '-fschedule-insns', but requests an additional pass of
       instruction scheduling after register allocation has been done.
       This is especially useful on machines with a relatively small
       number of registers and where memory load instructions take more
       than one cycle.
  
!      Enabled at levels '-O2', '-O3', '-Os'.
  
! '-fno-sched-interblock'
       Disable instruction scheduling across basic blocks, which is
       normally enabled when scheduling before register allocation, i.e.
!      with '-fschedule-insns' or at '-O2' or higher.
  
! '-fno-sched-spec'
       Disable speculative motion of non-load instructions, which is
       normally enabled when scheduling before register allocation, i.e.
!      with '-fschedule-insns' or at '-O2' or higher.
  
! '-fsched-pressure'
       Enable register pressure sensitive insn scheduling before register
       allocation.  This only makes sense when scheduling before register
!      allocation is enabled, i.e. with '-fschedule-insns' or at '-O2' or
       higher.  Usage of this option can improve the generated code and
       decrease its size by preventing register pressure increase above
       the number of available hard registers and subsequent spills in
       register allocation.
  
! '-fsched-spec-load'
       Allow speculative motion of some load instructions.  This only
       makes sense when scheduling before register allocation, i.e. with
!      '-fschedule-insns' or at '-O2' or higher.
  
! '-fsched-spec-load-dangerous'
       Allow speculative motion of more load instructions.  This only
       makes sense when scheduling before register allocation, i.e. with
!      '-fschedule-insns' or at '-O2' or higher.
  
! '-fsched-stalled-insns'
! '-fsched-stalled-insns=N'
       Define how many insns (if any) can be moved prematurely from the
       queue of stalled insns into the ready list during the second
!      scheduling pass.  '-fno-sched-stalled-insns' means that no insns
!      are moved prematurely, '-fsched-stalled-insns=0' means there is no
       limit on how many queued insns can be moved prematurely.
!      '-fsched-stalled-insns' without a value is equivalent to
!      '-fsched-stalled-insns=1'.
  
! '-fsched-stalled-insns-dep'
! '-fsched-stalled-insns-dep=N'
       Define how many insn groups (cycles) are examined for a dependency
       on a stalled insn that is a candidate for premature removal from
       the queue of stalled insns.  This has an effect only during the
!      second scheduling pass, and only if '-fsched-stalled-insns' is
!      used.  '-fno-sched-stalled-insns-dep' is equivalent to
!      '-fsched-stalled-insns-dep=0'.  '-fsched-stalled-insns-dep' without
!      a value is equivalent to '-fsched-stalled-insns-dep=1'.
  
! '-fsched2-use-superblocks'
       When scheduling after register allocation, use superblock
       scheduling.  This allows motion across basic block boundaries,
       resulting in faster schedules.  This option is experimental, as not
--- 12243,12312 ----
       be issued until the result of the load or floating-point
       instruction is required.
  
!      Conventionally enabled at optimization levels â€˜-O2â€™ and â€˜-O3â€™.
       However, many targets override this behavior.  For example, on x86,
       it is disabled at all levels, while on AArch64, it is enabled only
!      at â€˜-O3â€™.
  
! â€˜-fschedule-insns2â€™
!      Similar to â€˜-fschedule-insnsâ€™, but requests an additional pass of
       instruction scheduling after register allocation has been done.
       This is especially useful on machines with a relatively small
       number of registers and where memory load instructions take more
       than one cycle.
  
!      Enabled at levels â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-fno-sched-interblockâ€™
       Disable instruction scheduling across basic blocks, which is
       normally enabled when scheduling before register allocation, i.e.
!      with â€˜-fschedule-insnsâ€™ or at â€˜-O2â€™ or higher.
  
! â€˜-fno-sched-specâ€™
       Disable speculative motion of non-load instructions, which is
       normally enabled when scheduling before register allocation, i.e.
!      with â€˜-fschedule-insnsâ€™ or at â€˜-O2â€™ or higher.
  
! â€˜-fsched-pressureâ€™
       Enable register pressure sensitive insn scheduling before register
       allocation.  This only makes sense when scheduling before register
!      allocation is enabled, i.e. with â€˜-fschedule-insnsâ€™ or at â€˜-O2â€™ or
       higher.  Usage of this option can improve the generated code and
       decrease its size by preventing register pressure increase above
       the number of available hard registers and subsequent spills in
       register allocation.
  
! â€˜-fsched-spec-loadâ€™
       Allow speculative motion of some load instructions.  This only
       makes sense when scheduling before register allocation, i.e. with
!      â€˜-fschedule-insnsâ€™ or at â€˜-O2â€™ or higher.
  
! â€˜-fsched-spec-load-dangerousâ€™
       Allow speculative motion of more load instructions.  This only
       makes sense when scheduling before register allocation, i.e. with
!      â€˜-fschedule-insnsâ€™ or at â€˜-O2â€™ or higher.
  
! â€˜-fsched-stalled-insnsâ€™
! â€˜-fsched-stalled-insns=Nâ€™
       Define how many insns (if any) can be moved prematurely from the
       queue of stalled insns into the ready list during the second
!      scheduling pass.  â€˜-fno-sched-stalled-insnsâ€™ means that no insns
!      are moved prematurely, â€˜-fsched-stalled-insns=0â€™ means there is no
       limit on how many queued insns can be moved prematurely.
!      â€˜-fsched-stalled-insnsâ€™ without a value is equivalent to
!      â€˜-fsched-stalled-insns=1â€™.
  
! â€˜-fsched-stalled-insns-depâ€™
! â€˜-fsched-stalled-insns-dep=Nâ€™
       Define how many insn groups (cycles) are examined for a dependency
       on a stalled insn that is a candidate for premature removal from
       the queue of stalled insns.  This has an effect only during the
!      second scheduling pass, and only if â€˜-fsched-stalled-insnsâ€™ is
!      used.  â€˜-fno-sched-stalled-insns-depâ€™ is equivalent to
!      â€˜-fsched-stalled-insns-dep=0â€™.  â€˜-fsched-stalled-insns-depâ€™ without
!      a value is equivalent to â€˜-fsched-stalled-insns-dep=1â€™.
  
! â€˜-fsched2-use-superblocksâ€™
       When scheduling after register allocation, use superblock
       scheduling.  This allows motion across basic block boundaries,
       resulting in faster schedules.  This option is experimental, as not
*************** optimizations to be performed is desired
*** 12310,12381 ****
       to avoid unreliable results from the algorithm.
  
       This only makes sense when scheduling after register allocation,
!      i.e. with '-fschedule-insns2' or at '-O2' or higher.
  
! '-fsched-group-heuristic'
       Enable the group heuristic in the scheduler.  This heuristic favors
       the instruction that belongs to a schedule group.  This is enabled
!      by default when scheduling is enabled, i.e. with '-fschedule-insns'
!      or '-fschedule-insns2' or at '-O2' or higher.
  
! '-fsched-critical-path-heuristic'
       Enable the critical-path heuristic in the scheduler.  This
       heuristic favors instructions on the critical path.  This is
       enabled by default when scheduling is enabled, i.e. with
!      '-fschedule-insns' or '-fschedule-insns2' or at '-O2' or higher.
  
! '-fsched-spec-insn-heuristic'
       Enable the speculative instruction heuristic in the scheduler.
       This heuristic favors speculative instructions with greater
       dependency weakness.  This is enabled by default when scheduling is
!      enabled, i.e. with '-fschedule-insns' or '-fschedule-insns2' or at
!      '-O2' or higher.
  
! '-fsched-rank-heuristic'
       Enable the rank heuristic in the scheduler.  This heuristic favors
       the instruction belonging to a basic block with greater size or
       frequency.  This is enabled by default when scheduling is enabled,
!      i.e. with '-fschedule-insns' or '-fschedule-insns2' or at '-O2' or
       higher.
  
! '-fsched-last-insn-heuristic'
       Enable the last-instruction heuristic in the scheduler.  This
       heuristic favors the instruction that is less dependent on the last
       instruction scheduled.  This is enabled by default when scheduling
!      is enabled, i.e. with '-fschedule-insns' or '-fschedule-insns2' or
!      at '-O2' or higher.
  
! '-fsched-dep-count-heuristic'
       Enable the dependent-count heuristic in the scheduler.  This
       heuristic favors the instruction that has more instructions
       depending on it.  This is enabled by default when scheduling is
!      enabled, i.e. with '-fschedule-insns' or '-fschedule-insns2' or at
!      '-O2' or higher.
  
! '-freschedule-modulo-scheduled-loops'
       Modulo scheduling is performed before traditional scheduling.  If a
       loop is modulo scheduled, later scheduling passes may change its
       schedule.  Use this option to control that behavior.
  
! '-fselective-scheduling'
       Schedule instructions using selective scheduling algorithm.
       Selective scheduling runs instead of the first scheduler pass.
  
! '-fselective-scheduling2'
       Schedule instructions using selective scheduling algorithm.
       Selective scheduling runs instead of the second scheduler pass.
  
! '-fsel-sched-pipelining'
       Enable software pipelining of innermost loops during selective
       scheduling.  This option has no effect unless one of
!      '-fselective-scheduling' or '-fselective-scheduling2' is turned on.
  
! '-fsel-sched-pipelining-outer-loops'
       When pipelining loops during selective scheduling, also pipeline
       outer loops.  This option has no effect unless
!      '-fsel-sched-pipelining' is turned on.
  
! '-fsemantic-interposition'
       Some object formats, like ELF, allow interposing of symbols by the
       dynamic linker.  This means that for symbols exported from the DSO,
       the compiler cannot perform interprocedural propagation, inlining
--- 12314,12385 ----
       to avoid unreliable results from the algorithm.
  
       This only makes sense when scheduling after register allocation,
!      i.e. with â€˜-fschedule-insns2â€™ or at â€˜-O2â€™ or higher.
  
! â€˜-fsched-group-heuristicâ€™
       Enable the group heuristic in the scheduler.  This heuristic favors
       the instruction that belongs to a schedule group.  This is enabled
!      by default when scheduling is enabled, i.e. with â€˜-fschedule-insnsâ€™
!      or â€˜-fschedule-insns2â€™ or at â€˜-O2â€™ or higher.
  
! â€˜-fsched-critical-path-heuristicâ€™
       Enable the critical-path heuristic in the scheduler.  This
       heuristic favors instructions on the critical path.  This is
       enabled by default when scheduling is enabled, i.e. with
!      â€˜-fschedule-insnsâ€™ or â€˜-fschedule-insns2â€™ or at â€˜-O2â€™ or higher.
  
! â€˜-fsched-spec-insn-heuristicâ€™
       Enable the speculative instruction heuristic in the scheduler.
       This heuristic favors speculative instructions with greater
       dependency weakness.  This is enabled by default when scheduling is
!      enabled, i.e. with â€˜-fschedule-insnsâ€™ or â€˜-fschedule-insns2â€™ or at
!      â€˜-O2â€™ or higher.
  
! â€˜-fsched-rank-heuristicâ€™
       Enable the rank heuristic in the scheduler.  This heuristic favors
       the instruction belonging to a basic block with greater size or
       frequency.  This is enabled by default when scheduling is enabled,
!      i.e. with â€˜-fschedule-insnsâ€™ or â€˜-fschedule-insns2â€™ or at â€˜-O2â€™ or
       higher.
  
! â€˜-fsched-last-insn-heuristicâ€™
       Enable the last-instruction heuristic in the scheduler.  This
       heuristic favors the instruction that is less dependent on the last
       instruction scheduled.  This is enabled by default when scheduling
!      is enabled, i.e. with â€˜-fschedule-insnsâ€™ or â€˜-fschedule-insns2â€™ or
!      at â€˜-O2â€™ or higher.
  
! â€˜-fsched-dep-count-heuristicâ€™
       Enable the dependent-count heuristic in the scheduler.  This
       heuristic favors the instruction that has more instructions
       depending on it.  This is enabled by default when scheduling is
!      enabled, i.e. with â€˜-fschedule-insnsâ€™ or â€˜-fschedule-insns2â€™ or at
!      â€˜-O2â€™ or higher.
  
! â€˜-freschedule-modulo-scheduled-loopsâ€™
       Modulo scheduling is performed before traditional scheduling.  If a
       loop is modulo scheduled, later scheduling passes may change its
       schedule.  Use this option to control that behavior.
  
! â€˜-fselective-schedulingâ€™
       Schedule instructions using selective scheduling algorithm.
       Selective scheduling runs instead of the first scheduler pass.
  
! â€˜-fselective-scheduling2â€™
       Schedule instructions using selective scheduling algorithm.
       Selective scheduling runs instead of the second scheduler pass.
  
! â€˜-fsel-sched-pipeliningâ€™
       Enable software pipelining of innermost loops during selective
       scheduling.  This option has no effect unless one of
!      â€˜-fselective-schedulingâ€™ or â€˜-fselective-scheduling2â€™ is turned on.
  
! â€˜-fsel-sched-pipelining-outer-loopsâ€™
       When pipelining loops during selective scheduling, also pipeline
       outer loops.  This option has no effect unless
!      â€˜-fsel-sched-pipeliningâ€™ is turned on.
  
! â€˜-fsemantic-interpositionâ€™
       Some object formats, like ELF, allow interposing of symbols by the
       dynamic linker.  This means that for symbols exported from the DSO,
       the compiler cannot perform interprocedural propagation, inlining
*************** optimizations to be performed is desired
*** 12383,12389 ****
       variable in question may change.  While this feature is useful, for
       example, to rewrite memory allocation functions by a debugging
       implementation, it is expensive in the terms of code quality.  With
!      '-fno-semantic-interposition' the compiler assumes that if
       interposition happens for functions the overwriting function will
       have precisely the same semantics (and side effects).  Similarly if
       interposition happens for variables, the constructor of the
--- 12387,12393 ----
       variable in question may change.  While this feature is useful, for
       example, to rewrite memory allocation functions by a debugging
       implementation, it is expensive in the terms of code quality.  With
!      â€˜-fno-semantic-interpositionâ€™ the compiler assumes that if
       interposition happens for functions the overwriting function will
       have precisely the same semantics (and side effects).  Similarly if
       interposition happens for variables, the constructor of the
*************** optimizations to be performed is desired
*** 12392,12409 ****
       interposition to change semantics) and for symbols explicitly
       declared weak.
  
! '-fshrink-wrap'
       Emit function prologues only before parts of the function that need
       it, rather than at the top of the function.  This flag is enabled
!      by default at '-O' and higher.
  
! '-fshrink-wrap-separate'
       Shrink-wrap separate parts of the prologue and epilogue separately,
       so that those parts are only executed when needed.  This option is
!      on by default, but has no effect unless '-fshrink-wrap' is also
       turned on and the target supports this.
  
! '-fcaller-saves'
       Enable allocation of values to registers that are clobbered by
       function calls, by emitting extra instructions to save and restore
       the registers around such calls.  Such allocation is done only when
--- 12396,12413 ----
       interposition to change semantics) and for symbols explicitly
       declared weak.
  
! â€˜-fshrink-wrapâ€™
       Emit function prologues only before parts of the function that need
       it, rather than at the top of the function.  This flag is enabled
!      by default at â€˜-Oâ€™ and higher.
  
! â€˜-fshrink-wrap-separateâ€™
       Shrink-wrap separate parts of the prologue and epilogue separately,
       so that those parts are only executed when needed.  This option is
!      on by default, but has no effect unless â€˜-fshrink-wrapâ€™ is also
       turned on and the target supports this.
  
! â€˜-fcaller-savesâ€™
       Enable allocation of values to registers that are clobbered by
       function calls, by emitting extra instructions to save and restore
       the registers around such calls.  Such allocation is done only when
*************** optimizations to be performed is desired
*** 12413,12571 ****
       usually those which have no call-preserved registers to use
       instead.
  
!      Enabled at levels '-O2', '-O3', '-Os'.
  
! '-fcombine-stack-adjustments'
       Tracks stack adjustments (pushes and pops) and stack memory
       references and then tries to find ways to combine them.
  
!      Enabled by default at '-O1' and higher.
  
! '-fipa-ra'
       Use caller save registers for allocation if those registers are not
       used by any called function.  In that case it is not necessary to
       save and restore them around calls.  This is only possible if
       called functions are part of same compilation unit as current
       function and they are compiled before it.
  
!      Enabled at levels '-O2', '-O3', '-Os', however the option is
       disabled if generated code will be instrumented for profiling
!      ('-p', or '-pg') or if callee's register usage cannot be known
       exactly (this happens on targets that do not expose prologues and
       epilogues in RTL).
  
! '-fconserve-stack'
       Attempt to minimize stack usage.  The compiler attempts to use less
       stack space, even if that makes the program slower.  This option
!      implies setting the 'large-stack-frame' parameter to 100 and the
!      'large-stack-frame-growth' parameter to 400.
  
! '-ftree-reassoc'
       Perform reassociation on trees.  This flag is enabled by default at
!      '-O1' and higher.
  
! '-fcode-hoisting'
       Perform code hoisting.  Code hoisting tries to move the evaluation
       of expressions executed on all paths to the function exit as early
       as possible.  This is especially useful as a code size
       optimization, but it often helps for code speed as well.  This flag
!      is enabled by default at '-O2' and higher.
  
! '-ftree-pre'
       Perform partial redundancy elimination (PRE) on trees.  This flag
!      is enabled by default at '-O2' and '-O3'.
  
! '-ftree-partial-pre'
       Make partial redundancy elimination (PRE) more aggressive.  This
!      flag is enabled by default at '-O3'.
  
! '-ftree-forwprop'
       Perform forward propagation on trees.  This flag is enabled by
!      default at '-O1' and higher.
  
! '-ftree-fre'
       Perform full redundancy elimination (FRE) on trees.  The difference
       between FRE and PRE is that FRE only considers expressions that are
       computed on all paths leading to the redundant computation.  This
       analysis is faster than PRE, though it exposes fewer redundancies.
!      This flag is enabled by default at '-O1' and higher.
  
! '-ftree-phiprop'
       Perform hoisting of loads from conditional pointers on trees.  This
!      pass is enabled by default at '-O1' and higher.
  
! '-fhoist-adjacent-loads'
       Speculatively hoist loads from both branches of an if-then-else if
       the loads are from adjacent locations in the same structure and the
       target architecture has a conditional move instruction.  This flag
!      is enabled by default at '-O2' and higher.
  
! '-ftree-copy-prop'
       Perform copy propagation on trees.  This pass eliminates
       unnecessary copy operations.  This flag is enabled by default at
!      '-O1' and higher.
  
! '-fipa-pure-const'
       Discover which functions are pure or constant.  Enabled by default
!      at '-O1' and higher.
  
! '-fipa-reference'
       Discover which static variables do not escape the compilation unit.
!      Enabled by default at '-O1' and higher.
  
! '-fipa-reference-addressable'
       Discover read-only, write-only and non-addressable static
!      variables.  Enabled by default at '-O1' and higher.
  
! '-fipa-reorder-for-locality'
       Group call chains close together in the binary layout to improve
       code locality and minimize jump distances between frequently called
!      functions.  Unlike '-freorder-functions' this pass considers the
       call chains between functions and groups them together, rather than
       grouping all hot/normal/cold/never-executed functions into separate
!      sections.  Unlike '-fprofile-reorder-functions' it aims to improve
       code locality throughout the runtime of the program rather than
       focusing on program startup.  This option is incompatible with an
!      explicit '-flto-partition=' option since it enforces a custom
       partitioning scheme.  If using this option it is recommended to
       also use profile feedback, but this option is not enabled by
       default otherwise.
  
! '-fipa-stack-alignment'
       Reduce stack alignment on call sites if possible.  Enabled by
       default.
  
! '-fipa-pta'
       Perform interprocedural pointer analysis and interprocedural
       modification and reference analysis.  This option can cause
       excessive memory and compile-time usage on large compilation units.
       It is not enabled by default at any optimization level.
  
! '-fipa-profile'
       Perform interprocedural profile propagation.  The functions called
       only from cold functions are marked as cold.  Also functions
!      executed once (such as 'cold', 'noreturn', static constructors or
       destructors) are identified.  Cold functions and loop less parts of
       functions executed once are then optimized for size.  Enabled by
!      default at '-O1' and higher.
  
! '-fipa-modref'
       Perform interprocedural mod/ref analysis.  This optimization
       analyzes the side effects of functions (memory locations that are
       modified or referenced) and enables better optimization across the
!      function call boundary.  This flag is enabled by default at '-O1'
       and higher.
  
! '-fipa-cp'
       Perform interprocedural constant propagation.  This optimization
       analyzes the program to determine when values passed to functions
       are constants and then optimizes accordingly.  This optimization
       can substantially increase performance if the application has
       constants passed to functions.  This flag is enabled by default at
!      '-O2', '-Os' and '-O3'.  It is also enabled by '-fprofile-use' and
!      '-fauto-profile'.
  
! '-fipa-cp-clone'
       Perform function cloning to make interprocedural constant
       propagation stronger.  When enabled, interprocedural constant
       propagation performs function cloning when externally visible
       function can be called with constant arguments.  Because this
       optimization can create multiple copies of functions, it may
!      significantly increase code size (see '--param
!      ipa-cp-unit-growth=VALUE').  This flag is enabled by default at
!      '-O3'.  It is also enabled by '-fprofile-use' and '-fauto-profile'.
  
! '-fipa-bit-cp'
       When enabled, perform interprocedural bitwise constant propagation.
!      This flag is enabled by default at '-O2' and by '-fprofile-use' and
!      '-fauto-profile'.  It requires that '-fipa-cp' is enabled.
  
! '-fipa-vrp'
       When enabled, perform interprocedural propagation of value ranges.
!      This flag is enabled by default at '-O2'.  It requires that
!      '-fipa-cp' is enabled.
  
! '-fipa-icf'
       Perform Identical Code Folding for functions and read-only
       variables.  The optimization reduces code size and may disturb
       unwind stacks by replacing a function by equivalent one with a
--- 12417,12575 ----
       usually those which have no call-preserved registers to use
       instead.
  
!      Enabled at levels â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-fcombine-stack-adjustmentsâ€™
       Tracks stack adjustments (pushes and pops) and stack memory
       references and then tries to find ways to combine them.
  
!      Enabled by default at â€˜-O1â€™ and higher.
  
! â€˜-fipa-raâ€™
       Use caller save registers for allocation if those registers are not
       used by any called function.  In that case it is not necessary to
       save and restore them around calls.  This is only possible if
       called functions are part of same compilation unit as current
       function and they are compiled before it.
  
!      Enabled at levels â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™, however the option is
       disabled if generated code will be instrumented for profiling
!      (â€˜-pâ€™, or â€˜-pgâ€™) or if callee's register usage cannot be known
       exactly (this happens on targets that do not expose prologues and
       epilogues in RTL).
  
! â€˜-fconserve-stackâ€™
       Attempt to minimize stack usage.  The compiler attempts to use less
       stack space, even if that makes the program slower.  This option
!      implies setting the â€˜large-stack-frameâ€™ parameter to 100 and the
!      â€˜large-stack-frame-growthâ€™ parameter to 400.
  
! â€˜-ftree-reassocâ€™
       Perform reassociation on trees.  This flag is enabled by default at
!      â€˜-O1â€™ and higher.
  
! â€˜-fcode-hoistingâ€™
       Perform code hoisting.  Code hoisting tries to move the evaluation
       of expressions executed on all paths to the function exit as early
       as possible.  This is especially useful as a code size
       optimization, but it often helps for code speed as well.  This flag
!      is enabled by default at â€˜-O2â€™ and higher.
  
! â€˜-ftree-preâ€™
       Perform partial redundancy elimination (PRE) on trees.  This flag
!      is enabled by default at â€˜-O2â€™ and â€˜-O3â€™.
  
! â€˜-ftree-partial-preâ€™
       Make partial redundancy elimination (PRE) more aggressive.  This
!      flag is enabled by default at â€˜-O3â€™.
  
! â€˜-ftree-forwpropâ€™
       Perform forward propagation on trees.  This flag is enabled by
!      default at â€˜-O1â€™ and higher.
  
! â€˜-ftree-freâ€™
       Perform full redundancy elimination (FRE) on trees.  The difference
       between FRE and PRE is that FRE only considers expressions that are
       computed on all paths leading to the redundant computation.  This
       analysis is faster than PRE, though it exposes fewer redundancies.
!      This flag is enabled by default at â€˜-O1â€™ and higher.
  
! â€˜-ftree-phipropâ€™
       Perform hoisting of loads from conditional pointers on trees.  This
!      pass is enabled by default at â€˜-O1â€™ and higher.
  
! â€˜-fhoist-adjacent-loadsâ€™
       Speculatively hoist loads from both branches of an if-then-else if
       the loads are from adjacent locations in the same structure and the
       target architecture has a conditional move instruction.  This flag
!      is enabled by default at â€˜-O2â€™ and higher.
  
! â€˜-ftree-copy-propâ€™
       Perform copy propagation on trees.  This pass eliminates
       unnecessary copy operations.  This flag is enabled by default at
!      â€˜-O1â€™ and higher.
  
! â€˜-fipa-pure-constâ€™
       Discover which functions are pure or constant.  Enabled by default
!      at â€˜-O1â€™ and higher.
  
! â€˜-fipa-referenceâ€™
       Discover which static variables do not escape the compilation unit.
!      Enabled by default at â€˜-O1â€™ and higher.
  
! â€˜-fipa-reference-addressableâ€™
       Discover read-only, write-only and non-addressable static
!      variables.  Enabled by default at â€˜-O1â€™ and higher.
  
! â€˜-fipa-reorder-for-localityâ€™
       Group call chains close together in the binary layout to improve
       code locality and minimize jump distances between frequently called
!      functions.  Unlike â€˜-freorder-functionsâ€™ this pass considers the
       call chains between functions and groups them together, rather than
       grouping all hot/normal/cold/never-executed functions into separate
!      sections.  Unlike â€˜-fprofile-reorder-functionsâ€™ it aims to improve
       code locality throughout the runtime of the program rather than
       focusing on program startup.  This option is incompatible with an
!      explicit â€˜-flto-partition=â€™ option since it enforces a custom
       partitioning scheme.  If using this option it is recommended to
       also use profile feedback, but this option is not enabled by
       default otherwise.
  
! â€˜-fipa-stack-alignmentâ€™
       Reduce stack alignment on call sites if possible.  Enabled by
       default.
  
! â€˜-fipa-ptaâ€™
       Perform interprocedural pointer analysis and interprocedural
       modification and reference analysis.  This option can cause
       excessive memory and compile-time usage on large compilation units.
       It is not enabled by default at any optimization level.
  
! â€˜-fipa-profileâ€™
       Perform interprocedural profile propagation.  The functions called
       only from cold functions are marked as cold.  Also functions
!      executed once (such as â€˜coldâ€™, â€˜noreturnâ€™, static constructors or
       destructors) are identified.  Cold functions and loop less parts of
       functions executed once are then optimized for size.  Enabled by
!      default at â€˜-O1â€™ and higher.
  
! â€˜-fipa-modrefâ€™
       Perform interprocedural mod/ref analysis.  This optimization
       analyzes the side effects of functions (memory locations that are
       modified or referenced) and enables better optimization across the
!      function call boundary.  This flag is enabled by default at â€˜-O1â€™
       and higher.
  
! â€˜-fipa-cpâ€™
       Perform interprocedural constant propagation.  This optimization
       analyzes the program to determine when values passed to functions
       are constants and then optimizes accordingly.  This optimization
       can substantially increase performance if the application has
       constants passed to functions.  This flag is enabled by default at
!      â€˜-O2â€™, â€˜-Osâ€™ and â€˜-O3â€™.  It is also enabled by â€˜-fprofile-useâ€™ and
!      â€˜-fauto-profileâ€™.
  
! â€˜-fipa-cp-cloneâ€™
       Perform function cloning to make interprocedural constant
       propagation stronger.  When enabled, interprocedural constant
       propagation performs function cloning when externally visible
       function can be called with constant arguments.  Because this
       optimization can create multiple copies of functions, it may
!      significantly increase code size (see â€˜--param
!      ipa-cp-unit-growth=VALUEâ€™).  This flag is enabled by default at
!      â€˜-O3â€™.  It is also enabled by â€˜-fprofile-useâ€™ and â€˜-fauto-profileâ€™.
  
! â€˜-fipa-bit-cpâ€™
       When enabled, perform interprocedural bitwise constant propagation.
!      This flag is enabled by default at â€˜-O2â€™ and by â€˜-fprofile-useâ€™ and
!      â€˜-fauto-profileâ€™.  It requires that â€˜-fipa-cpâ€™ is enabled.
  
! â€˜-fipa-vrpâ€™
       When enabled, perform interprocedural propagation of value ranges.
!      This flag is enabled by default at â€˜-O2â€™.  It requires that
!      â€˜-fipa-cpâ€™ is enabled.
  
! â€˜-fipa-icfâ€™
       Perform Identical Code Folding for functions and read-only
       variables.  The optimization reduces code size and may disturb
       unwind stacks by replacing a function by equivalent one with a
*************** optimizations to be performed is desired
*** 12577,12593 ****
       optimizations are not same - there are equivalences that are found
       only by GCC and equivalences found only by Gold.
  
!      This flag is enabled by default at '-O2' and '-Os'.
  
! '-flate-combine-instructions'
       Enable two instruction combination passes that run relatively late
       in the compilation process.  One of the passes runs before register
       allocation and the other after register allocation.  The main aim
       of the passes is to substitute definitions into all uses.
  
!      Most targets enable this flag by default at '-O2' and '-Os'.
  
! '-flive-patching=LEVEL'
       Control GCC's optimizations to produce output suitable for
       live-patching.
  
--- 12581,12597 ----
       optimizations are not same - there are equivalences that are found
       only by GCC and equivalences found only by Gold.
  
!      This flag is enabled by default at â€˜-O2â€™ and â€˜-Osâ€™.
  
! â€˜-flate-combine-instructionsâ€™
       Enable two instruction combination passes that run relatively late
       in the compilation process.  One of the passes runs before register
       allocation and the other after register allocation.  The main aim
       of the passes is to substitute definitions into all uses.
  
!      Most targets enable this flag by default at â€˜-O2â€™ and â€˜-Osâ€™.
  
! â€˜-flive-patching=LEVELâ€™
       Control GCC's optimizations to produce output suitable for
       live-patching.
  
*************** optimizations to be performed is desired
*** 12612,12618 ****
  
       The LEVEL argument should be one of the following:
  
!      'inline-clone'
  
            Only enable inlining and cloning optimizations, which includes
            inlining, cloning, interprocedural scalar replacement of
--- 12616,12622 ----
  
       The LEVEL argument should be one of the following:
  
!      â€˜inline-cloneâ€™
  
            Only enable inlining and cloning optimizations, which includes
            inlining, cloning, interprocedural scalar replacement of
*************** optimizations to be performed is desired
*** 12620,12626 ****
            function, all its callers and its clones' callers are
            impacted, therefore need to be patched as well.
  
!           '-flive-patching=inline-clone' disables the following
            optimization flags:
                 -fwhole-program  -fipa-pta  -fipa-reference  -fipa-ra
                 -fipa-icf  -fipa-icf-functions  -fipa-icf-variables
--- 12624,12630 ----
            function, all its callers and its clones' callers are
            impacted, therefore need to be patched as well.
  
!           â€˜-flive-patching=inline-cloneâ€™ disables the following
            optimization flags:
                 -fwhole-program  -fipa-pta  -fipa-reference  -fipa-ra
                 -fipa-icf  -fipa-icf-functions  -fipa-icf-variables
*************** optimizations to be performed is desired
*** 12628,12804 ****
                 -fipa-reference-addressable
                 -fipa-stack-alignment -fipa-modref
  
!      'inline-only-static'
  
            Only enable inlining of static functions.  As a result, when
            patching a static function, all its callers are impacted and
            so need to be patched as well.
  
            In addition to all the flags that
!           '-flive-patching=inline-clone' disables,
!           '-flive-patching=inline-only-static' disables the following
            additional optimization flags:
                 -fipa-cp-clone  -fipa-sra  -fpartial-inlining  -fipa-cp
  
!      When '-flive-patching' is specified without any value, the default
       value is INLINE-CLONE.
  
       This flag is disabled by default.
  
!      Note that '-flive-patching' is not supported with link-time
!      optimization ('-flto').
  
! '-fisolate-erroneous-paths-dereference'
       Detect paths that trigger erroneous or undefined behavior due to
       dereferencing a null pointer.  Isolate those paths from the main
       control flow and turn the statement with erroneous or undefined
!      behavior into a trap.  This flag is enabled by default at '-O2' and
!      higher and depends on '-fdelete-null-pointer-checks' also being
       enabled.
  
! '-fisolate-erroneous-paths-attribute'
       Detect paths that trigger erroneous or undefined behavior due to a
!      null value being used in a way forbidden by a 'returns_nonnull' or
!      'nonnull' attribute.  Isolate those paths from the main control
       flow and turn the statement with erroneous or undefined behavior
       into a trap.  This is not currently enabled, but may be enabled by
!      '-O2' in the future.
  
! '-ftree-sink'
       Perform forward store motion on trees.  This flag is enabled by
!      default at '-O1' and higher.
  
! '-ftree-bit-ccp'
       Perform sparse conditional bit constant propagation on trees and
       propagate pointer alignment information.  This pass only operates
!      on local scalar variables and is enabled by default at '-O1' and
!      higher, except for '-Og'.  It requires that '-ftree-ccp' is
       enabled.
  
! '-ftree-ccp'
       Perform sparse conditional constant propagation (CCP) on trees.
       This pass only operates on local scalar variables and is enabled by
!      default at '-O1' and higher.
  
! '-fssa-backprop'
       Propagate information about uses of a value up the definition chain
       in order to simplify the definitions.  For example, this pass
       strips sign operations if the sign of a value never matters.  The
!      flag is enabled by default at '-O1' and higher.
  
! '-fssa-phiopt'
       Perform pattern matching on SSA PHI nodes to optimize conditional
!      code.  This pass is enabled by default at '-O1' and higher, except
!      for '-Og'.
  
! '-ftree-switch-conversion'
       Perform conversion of simple initializations in a switch to
       initializations from a scalar array.  This flag is enabled by
!      default at '-O2' and higher.
  
! '-ftree-tail-merge'
       Look for identical code sequences.  When found, replace one with a
       jump to the other.  This optimization is known as tail merging or
!      cross jumping.  This flag is enabled by default at '-O2' and
       higher.  The compilation time in this pass can be limited using
!      'max-tail-merge-comparisons' parameter and
!      'max-tail-merge-iterations' parameter.
  
! '-ftree-cselim'
       Perform conditional store elimination on trees.  This flag is
!      enabled by default at '-O1' and higher on targets that have
       conditional move instructions.
  
! '-ftree-dce'
       Perform dead code elimination (DCE) on trees.  This flag is enabled
!      by default at '-O1' and higher.
  
! '-ftree-builtin-call-dce'
       Perform conditional dead code elimination (DCE) for calls to
!      built-in functions that may set 'errno' but are otherwise free of
!      side effects.  This flag is enabled by default at '-O2' and higher
!      if '-Os' is not also specified.
  
! '-ffinite-loops'
       Assume that a loop with an exit will eventually take the exit and
       not loop indefinitely.  This allows the compiler to remove loops
       that otherwise have no side-effects, not considering eventual
       endless looping as such.
  
!      This option is enabled by default at '-O2' for C++ with -std=c++11
       or higher.
  
! '-ftree-dominator-opts'
       Perform a variety of simple scalar cleanups (constant/copy
       propagation, redundancy elimination, range propagation and
       expression simplification) based on a dominator tree traversal.
       This also performs jump threading (to reduce jumps to jumps).  This
!      flag is enabled by default at '-O1' and higher.
  
! '-ftree-dse'
       Perform dead store elimination (DSE) on trees.  A dead store is a
       store into a memory location that is later overwritten by another
       store without any intervening loads.  In this case the earlier
!      store can be deleted.  This flag is enabled by default at '-O1' and
       higher.
  
! '-ftree-ch'
       Perform loop header copying on trees.  This is beneficial since it
       increases effectiveness of code motion optimizations.  It also
!      saves one jump.  This flag is enabled by default at '-O1' and
!      higher.  It is not enabled for '-Os', since it usually increases
       code size.
  
! '-ftree-loop-optimize'
       Perform loop optimizations on trees.  This flag is enabled by
!      default at '-O1' and higher.
  
! '-ftree-loop-linear'
! '-floop-strip-mine'
! '-floop-block'
!      Perform loop nest optimizations.  Same as '-floop-nest-optimize'.
       To use this code transformation, GCC has to be configured with
!      '--with-isl' to enable the Graphite loop transformation
       infrastructure.
  
! '-fgraphite-identity'
       Enable the identity transformation for graphite.  For every SCoP we
       generate the polyhedral representation and transform it back to
!      gimple.  Using '-fgraphite-identity' we can check the costs or
       benefits of the GIMPLE -> GRAPHITE -> GIMPLE transformation.  Some
       minimal optimizations are also performed by the code generator isl,
       like index splitting and dead code elimination in loops.
  
! '-floop-nest-optimize'
       Enable the isl based loop nest optimizer.  This is a generic loop
       nest optimizer based on the Pluto optimization algorithms.  It
       calculates a loop structure optimized for data-locality and
       parallelism.  This option is experimental.
  
! '-floop-parallelize-all'
       Use the Graphite data dependence analysis to identify loops that
       can be parallelized.  Parallelize all the loops that can be
       analyzed to not contain loop carried dependences without checking
       that it is profitable to parallelize the loops.
  
! '-ftree-coalesce-vars'
       While transforming the program out of the SSA representation,
       attempt to reduce copying by coalescing versions of different
       user-defined variables, instead of just compiler temporaries.  This
       may severely limit the ability to debug an optimized program
!      compiled with '-fno-var-tracking-assignments'.  In the negated
       form, this flag prevents SSA coalescing of user variables.  This
       option is enabled by default if optimization is enabled, and it
       does very little otherwise.
  
! '-ftree-loop-if-convert'
       Attempt to transform conditional jumps in the innermost loops to
       branch-less equivalents.  The intent is to remove control-flow from
       the innermost loops in order to improve the ability of the
       vectorization pass to handle these loops.  This is enabled by
       default if vectorization is enabled.
  
! '-ftree-loop-distribution'
       Perform loop distribution.  This flag can improve cache performance
       on big loop bodies and allow further loop optimizations, like
       parallelization or vectorization, to take place.  For example, the
--- 12632,12808 ----
                 -fipa-reference-addressable
                 -fipa-stack-alignment -fipa-modref
  
!      â€˜inline-only-staticâ€™
  
            Only enable inlining of static functions.  As a result, when
            patching a static function, all its callers are impacted and
            so need to be patched as well.
  
            In addition to all the flags that
!           â€˜-flive-patching=inline-cloneâ€™ disables,
!           â€˜-flive-patching=inline-only-staticâ€™ disables the following
            additional optimization flags:
                 -fipa-cp-clone  -fipa-sra  -fpartial-inlining  -fipa-cp
  
!      When â€˜-flive-patchingâ€™ is specified without any value, the default
       value is INLINE-CLONE.
  
       This flag is disabled by default.
  
!      Note that â€˜-flive-patchingâ€™ is not supported with link-time
!      optimization (â€˜-fltoâ€™).
  
! â€˜-fisolate-erroneous-paths-dereferenceâ€™
       Detect paths that trigger erroneous or undefined behavior due to
       dereferencing a null pointer.  Isolate those paths from the main
       control flow and turn the statement with erroneous or undefined
!      behavior into a trap.  This flag is enabled by default at â€˜-O2â€™ and
!      higher and depends on â€˜-fdelete-null-pointer-checksâ€™ also being
       enabled.
  
! â€˜-fisolate-erroneous-paths-attributeâ€™
       Detect paths that trigger erroneous or undefined behavior due to a
!      null value being used in a way forbidden by a â€˜returns_nonnullâ€™ or
!      â€˜nonnullâ€™ attribute.  Isolate those paths from the main control
       flow and turn the statement with erroneous or undefined behavior
       into a trap.  This is not currently enabled, but may be enabled by
!      â€˜-O2â€™ in the future.
  
! â€˜-ftree-sinkâ€™
       Perform forward store motion on trees.  This flag is enabled by
!      default at â€˜-O1â€™ and higher.
  
! â€˜-ftree-bit-ccpâ€™
       Perform sparse conditional bit constant propagation on trees and
       propagate pointer alignment information.  This pass only operates
!      on local scalar variables and is enabled by default at â€˜-O1â€™ and
!      higher, except for â€˜-Ogâ€™.  It requires that â€˜-ftree-ccpâ€™ is
       enabled.
  
! â€˜-ftree-ccpâ€™
       Perform sparse conditional constant propagation (CCP) on trees.
       This pass only operates on local scalar variables and is enabled by
!      default at â€˜-O1â€™ and higher.
  
! â€˜-fssa-backpropâ€™
       Propagate information about uses of a value up the definition chain
       in order to simplify the definitions.  For example, this pass
       strips sign operations if the sign of a value never matters.  The
!      flag is enabled by default at â€˜-O1â€™ and higher.
  
! â€˜-fssa-phioptâ€™
       Perform pattern matching on SSA PHI nodes to optimize conditional
!      code.  This pass is enabled by default at â€˜-O1â€™ and higher, except
!      for â€˜-Ogâ€™.
  
! â€˜-ftree-switch-conversionâ€™
       Perform conversion of simple initializations in a switch to
       initializations from a scalar array.  This flag is enabled by
!      default at â€˜-O2â€™ and higher.
  
! â€˜-ftree-tail-mergeâ€™
       Look for identical code sequences.  When found, replace one with a
       jump to the other.  This optimization is known as tail merging or
!      cross jumping.  This flag is enabled by default at â€˜-O2â€™ and
       higher.  The compilation time in this pass can be limited using
!      â€˜max-tail-merge-comparisonsâ€™ parameter and
!      â€˜max-tail-merge-iterationsâ€™ parameter.
  
! â€˜-ftree-cselimâ€™
       Perform conditional store elimination on trees.  This flag is
!      enabled by default at â€˜-O1â€™ and higher on targets that have
       conditional move instructions.
  
! â€˜-ftree-dceâ€™
       Perform dead code elimination (DCE) on trees.  This flag is enabled
!      by default at â€˜-O1â€™ and higher.
  
! â€˜-ftree-builtin-call-dceâ€™
       Perform conditional dead code elimination (DCE) for calls to
!      built-in functions that may set â€˜errnoâ€™ but are otherwise free of
!      side effects.  This flag is enabled by default at â€˜-O2â€™ and higher
!      if â€˜-Osâ€™ is not also specified.
  
! â€˜-ffinite-loopsâ€™
       Assume that a loop with an exit will eventually take the exit and
       not loop indefinitely.  This allows the compiler to remove loops
       that otherwise have no side-effects, not considering eventual
       endless looping as such.
  
!      This option is enabled by default at â€˜-O2â€™ for C++ with -std=c++11
       or higher.
  
! â€˜-ftree-dominator-optsâ€™
       Perform a variety of simple scalar cleanups (constant/copy
       propagation, redundancy elimination, range propagation and
       expression simplification) based on a dominator tree traversal.
       This also performs jump threading (to reduce jumps to jumps).  This
!      flag is enabled by default at â€˜-O1â€™ and higher.
  
! â€˜-ftree-dseâ€™
       Perform dead store elimination (DSE) on trees.  A dead store is a
       store into a memory location that is later overwritten by another
       store without any intervening loads.  In this case the earlier
!      store can be deleted.  This flag is enabled by default at â€˜-O1â€™ and
       higher.
  
! â€˜-ftree-châ€™
       Perform loop header copying on trees.  This is beneficial since it
       increases effectiveness of code motion optimizations.  It also
!      saves one jump.  This flag is enabled by default at â€˜-O1â€™ and
!      higher.  It is not enabled for â€˜-Osâ€™, since it usually increases
       code size.
  
! â€˜-ftree-loop-optimizeâ€™
       Perform loop optimizations on trees.  This flag is enabled by
!      default at â€˜-O1â€™ and higher.
  
! â€˜-ftree-loop-linearâ€™
! â€˜-floop-strip-mineâ€™
! â€˜-floop-blockâ€™
!      Perform loop nest optimizations.  Same as â€˜-floop-nest-optimizeâ€™.
       To use this code transformation, GCC has to be configured with
!      â€˜--with-islâ€™ to enable the Graphite loop transformation
       infrastructure.
  
! â€˜-fgraphite-identityâ€™
       Enable the identity transformation for graphite.  For every SCoP we
       generate the polyhedral representation and transform it back to
!      gimple.  Using â€˜-fgraphite-identityâ€™ we can check the costs or
       benefits of the GIMPLE -> GRAPHITE -> GIMPLE transformation.  Some
       minimal optimizations are also performed by the code generator isl,
       like index splitting and dead code elimination in loops.
  
! â€˜-floop-nest-optimizeâ€™
       Enable the isl based loop nest optimizer.  This is a generic loop
       nest optimizer based on the Pluto optimization algorithms.  It
       calculates a loop structure optimized for data-locality and
       parallelism.  This option is experimental.
  
! â€˜-floop-parallelize-allâ€™
       Use the Graphite data dependence analysis to identify loops that
       can be parallelized.  Parallelize all the loops that can be
       analyzed to not contain loop carried dependences without checking
       that it is profitable to parallelize the loops.
  
! â€˜-ftree-coalesce-varsâ€™
       While transforming the program out of the SSA representation,
       attempt to reduce copying by coalescing versions of different
       user-defined variables, instead of just compiler temporaries.  This
       may severely limit the ability to debug an optimized program
!      compiled with â€˜-fno-var-tracking-assignmentsâ€™.  In the negated
       form, this flag prevents SSA coalescing of user variables.  This
       option is enabled by default if optimization is enabled, and it
       does very little otherwise.
  
! â€˜-ftree-loop-if-convertâ€™
       Attempt to transform conditional jumps in the innermost loops to
       branch-less equivalents.  The intent is to remove control-flow from
       the innermost loops in order to improve the ability of the
       vectorization pass to handle these loops.  This is enabled by
       default if vectorization is enabled.
  
! â€˜-ftree-loop-distributionâ€™
       Perform loop distribution.  This flag can improve cache performance
       on big loop bodies and allow further loop optimizations, like
       parallelization or vectorization, to take place.  For example, the
*************** optimizations to be performed is desired
*** 12814,12826 ****
            DO I = 1, N
               D(I) = E(I) * F
            ENDDO
!      This flag is enabled by default at '-O3'.  It is also enabled by
!      '-fprofile-use' and '-fauto-profile'.
  
! '-ftree-loop-distribute-patterns'
       Perform loop distribution of patterns that can be code generated
!      with calls to a library.  This flag is enabled by default at '-O2'
!      and higher, and by '-fprofile-use' and '-fauto-profile'.
  
       This pass distributes the initialization loops and generates a call
       to memset zero.  For example, the loop
--- 12818,12830 ----
            DO I = 1, N
               D(I) = E(I) * F
            ENDDO
!      This flag is enabled by default at â€˜-O3â€™.  It is also enabled by
!      â€˜-fprofile-useâ€™ and â€˜-fauto-profileâ€™.
  
! â€˜-ftree-loop-distribute-patternsâ€™
       Perform loop distribution of patterns that can be code generated
!      with calls to a library.  This flag is enabled by default at â€˜-O2â€™
!      and higher, and by â€˜-fprofile-useâ€™ and â€˜-fauto-profileâ€™.
  
       This pass distributes the initialization loops and generates a call
       to memset zero.  For example, the loop
*************** optimizations to be performed is desired
*** 12838,12844 ****
       and the initialization loop is transformed into a call to memset
       zero.
  
! '-floop-interchange'
       Perform loop interchange outside of graphite.  This flag can
       improve cache performance on loop nest and allow further loop
       optimizations, like vectorization, to take place.  For example, the
--- 12842,12848 ----
       and the initialization loop is transformed into a call to memset
       zero.
  
! â€˜-floop-interchangeâ€™
       Perform loop interchange outside of graphite.  This flag can
       improve cache performance on loop nest and allow further loop
       optimizations, like vectorization, to take place.  For example, the
*************** optimizations to be performed is desired
*** 12852,12972 ****
              for (int k = 0; k < N; k++)
                for (int j = 0; j < N; j++)
                  c[i][j] = c[i][j] + a[i][k]*b[k][j];
!      This flag is enabled by default at '-O3'.  It is also enabled by
!      '-fprofile-use' and '-fauto-profile'.
  
! '-floop-unroll-and-jam'
       Apply unroll and jam transformations on feasible loops.  In a loop
       nest this unrolls the outer loop by some factor and fuses the
       resulting multiple inner loops.  This flag is enabled by default at
!      '-O3'.  It is also enabled by '-fprofile-use' and '-fauto-profile'.
  
! '-ftree-loop-im'
       Perform loop invariant motion on trees.  This pass moves only
       invariants that are hard to handle at RTL level (function calls,
       operations that expand to nontrivial sequences of insns).  With
!      '-funswitch-loops' it also moves operands of conditions that are
       invariant out of the loop, so that we can use just trivial
       invariantness analysis in loop unswitching.  The pass also includes
       store motion.
  
! '-ftree-loop-ivcanon'
       Create a canonical counter for number of iterations in loops for
       which determining number of iterations requires complicated
       analysis.  Later optimizations then may determine the number
       easily.  Useful especially in connection with unrolling.
  
! '-ftree-scev-cprop'
       Perform final value replacement.  If a variable is modified in a
       loop in such a way that its value when exiting the loop can be
       determined using only its initial value and the number of loop
       iterations, replace uses of the final value by such a computation,
       provided it is sufficiently cheap.  This reduces data dependencies
!      and may allow further simplifications.  Enabled by default at '-O1'
       and higher.
  
! '-fivopts'
       Perform induction variable optimizations (strength reduction,
       induction variable merging and induction variable elimination) on
!      trees.  Enabled by default at '-O1' and higher.
  
! '-ftree-parallelize-loops=n'
       Parallelize loops, i.e., split their iteration space to run in n
       threads.  This is only possible for loops whose iterations are
       independent and can be arbitrarily reordered.  The optimization is
       only profitable on multiprocessor machines, for loops that are
       CPU-intensive, rather than constrained e.g. by memory bandwidth.
!      This option implies '-pthread', and thus is only supported on
!      targets that have support for '-pthread'.
  
! '-ftree-pta'
       Perform function-local points-to analysis on trees.  This flag is
!      enabled by default at '-O1' and higher, except for '-Og'.
  
! '-ftree-sra'
       Perform scalar replacement of aggregates.  This pass replaces
       structure references with scalars to prevent committing structures
!      to memory too early.  This flag is enabled by default at '-O1' and
!      higher, except for '-Og'.
  
! '-fstore-merging'
       Perform merging of narrow stores to consecutive memory addresses.
       This pass merges contiguous stores of immediate values narrower
       than a word into fewer wider stores to reduce the number of
!      instructions.  This is enabled by default at '-O2' and higher as
!      well as '-Os'.
  
! '-ftree-ter'
       Perform temporary expression replacement during the SSA->normal
       phase.  Single use/single def temporaries are replaced at their use
       location with their defining expression.  This results in
       non-GIMPLE code, but gives the expanders much more complex trees to
       work on resulting in better RTL generation.  This is enabled by
!      default at '-O1' and higher.
  
! '-ftree-slsr'
       Perform straight-line strength reduction on trees.  This recognizes
       related expressions involving multiplications and replaces them by
       less expensive calculations when possible.  This is enabled by
!      default at '-O1' and higher.
  
! '-ftree-vectorize'
       Perform vectorization on trees.  This flag enables
!      '-ftree-loop-vectorize' and '-ftree-slp-vectorize' if not
       explicitly specified.
  
! '-ftree-loop-vectorize'
       Perform loop vectorization on trees.  This flag is enabled by
!      default at '-O2' and by '-ftree-vectorize', '-fprofile-use', and
!      '-fauto-profile'.
  
! '-ftree-slp-vectorize'
       Perform basic block vectorization on trees.  This flag is enabled
!      by default at '-O2' and by '-ftree-vectorize', '-fprofile-use', and
!      '-fauto-profile'.
  
! '-ftrivial-auto-var-init=CHOICE'
       Initialize automatic variables with either a pattern or with zeroes
       to increase the security and predictability of a program by
       preventing uninitialized memory disclosure and use.  GCC still
       considers an automatic variable that doesn't have an explicit
!      initializer as uninitialized, '-Wuninitialized' and
!      '-Wanalyzer-use-of-uninitialized-value' will still report warning
       messages on such automatic variables and the compiler will perform
       optimization as if the variable were uninitialized.  With this
       option, GCC will also initialize any padding of automatic variables
       that have structure or union types to zeroes.  However, the current
       implementation cannot initialize automatic variables that are
       declared between the controlling expression and the first case of a
!      'switch' statement.  Using '-Wtrivial-auto-var-init' to report all
       such cases.
  
       The three values of CHOICE are:
  
!         * 'uninitialized' doesn't initialize any automatic variables.
            This is C and C++'s default.
  
!         * 'pattern' Initialize automatic variables with values which
            will likely transform logic bugs into crashes down the line,
            are easily recognized in a crash dump and without being values
            that programmers can rely on for useful program semantics.
--- 12856,12976 ----
              for (int k = 0; k < N; k++)
                for (int j = 0; j < N; j++)
                  c[i][j] = c[i][j] + a[i][k]*b[k][j];
!      This flag is enabled by default at â€˜-O3â€™.  It is also enabled by
!      â€˜-fprofile-useâ€™ and â€˜-fauto-profileâ€™.
  
! â€˜-floop-unroll-and-jamâ€™
       Apply unroll and jam transformations on feasible loops.  In a loop
       nest this unrolls the outer loop by some factor and fuses the
       resulting multiple inner loops.  This flag is enabled by default at
!      â€˜-O3â€™.  It is also enabled by â€˜-fprofile-useâ€™ and â€˜-fauto-profileâ€™.
  
! â€˜-ftree-loop-imâ€™
       Perform loop invariant motion on trees.  This pass moves only
       invariants that are hard to handle at RTL level (function calls,
       operations that expand to nontrivial sequences of insns).  With
!      â€˜-funswitch-loopsâ€™ it also moves operands of conditions that are
       invariant out of the loop, so that we can use just trivial
       invariantness analysis in loop unswitching.  The pass also includes
       store motion.
  
! â€˜-ftree-loop-ivcanonâ€™
       Create a canonical counter for number of iterations in loops for
       which determining number of iterations requires complicated
       analysis.  Later optimizations then may determine the number
       easily.  Useful especially in connection with unrolling.
  
! â€˜-ftree-scev-cpropâ€™
       Perform final value replacement.  If a variable is modified in a
       loop in such a way that its value when exiting the loop can be
       determined using only its initial value and the number of loop
       iterations, replace uses of the final value by such a computation,
       provided it is sufficiently cheap.  This reduces data dependencies
!      and may allow further simplifications.  Enabled by default at â€˜-O1â€™
       and higher.
  
! â€˜-fivoptsâ€™
       Perform induction variable optimizations (strength reduction,
       induction variable merging and induction variable elimination) on
!      trees.  Enabled by default at â€˜-O1â€™ and higher.
  
! â€˜-ftree-parallelize-loops=nâ€™
       Parallelize loops, i.e., split their iteration space to run in n
       threads.  This is only possible for loops whose iterations are
       independent and can be arbitrarily reordered.  The optimization is
       only profitable on multiprocessor machines, for loops that are
       CPU-intensive, rather than constrained e.g. by memory bandwidth.
!      This option implies â€˜-pthreadâ€™, and thus is only supported on
!      targets that have support for â€˜-pthreadâ€™.
  
! â€˜-ftree-ptaâ€™
       Perform function-local points-to analysis on trees.  This flag is
!      enabled by default at â€˜-O1â€™ and higher, except for â€˜-Ogâ€™.
  
! â€˜-ftree-sraâ€™
       Perform scalar replacement of aggregates.  This pass replaces
       structure references with scalars to prevent committing structures
!      to memory too early.  This flag is enabled by default at â€˜-O1â€™ and
!      higher, except for â€˜-Ogâ€™.
  
! â€˜-fstore-mergingâ€™
       Perform merging of narrow stores to consecutive memory addresses.
       This pass merges contiguous stores of immediate values narrower
       than a word into fewer wider stores to reduce the number of
!      instructions.  This is enabled by default at â€˜-O2â€™ and higher as
!      well as â€˜-Osâ€™.
  
! â€˜-ftree-terâ€™
       Perform temporary expression replacement during the SSA->normal
       phase.  Single use/single def temporaries are replaced at their use
       location with their defining expression.  This results in
       non-GIMPLE code, but gives the expanders much more complex trees to
       work on resulting in better RTL generation.  This is enabled by
!      default at â€˜-O1â€™ and higher.
  
! â€˜-ftree-slsrâ€™
       Perform straight-line strength reduction on trees.  This recognizes
       related expressions involving multiplications and replaces them by
       less expensive calculations when possible.  This is enabled by
!      default at â€˜-O1â€™ and higher.
  
! â€˜-ftree-vectorizeâ€™
       Perform vectorization on trees.  This flag enables
!      â€˜-ftree-loop-vectorizeâ€™ and â€˜-ftree-slp-vectorizeâ€™ if not
       explicitly specified.
  
! â€˜-ftree-loop-vectorizeâ€™
       Perform loop vectorization on trees.  This flag is enabled by
!      default at â€˜-O2â€™ and by â€˜-ftree-vectorizeâ€™, â€˜-fprofile-useâ€™, and
!      â€˜-fauto-profileâ€™.
  
! â€˜-ftree-slp-vectorizeâ€™
       Perform basic block vectorization on trees.  This flag is enabled
!      by default at â€˜-O2â€™ and by â€˜-ftree-vectorizeâ€™, â€˜-fprofile-useâ€™, and
!      â€˜-fauto-profileâ€™.
  
! â€˜-ftrivial-auto-var-init=CHOICEâ€™
       Initialize automatic variables with either a pattern or with zeroes
       to increase the security and predictability of a program by
       preventing uninitialized memory disclosure and use.  GCC still
       considers an automatic variable that doesn't have an explicit
!      initializer as uninitialized, â€˜-Wuninitializedâ€™ and
!      â€˜-Wanalyzer-use-of-uninitialized-valueâ€™ will still report warning
       messages on such automatic variables and the compiler will perform
       optimization as if the variable were uninitialized.  With this
       option, GCC will also initialize any padding of automatic variables
       that have structure or union types to zeroes.  However, the current
       implementation cannot initialize automatic variables that are
       declared between the controlling expression and the first case of a
!      â€˜switchâ€™ statement.  Using â€˜-Wtrivial-auto-var-initâ€™ to report all
       such cases.
  
       The three values of CHOICE are:
  
!         â€¢ â€˜uninitializedâ€™ doesn't initialize any automatic variables.
            This is C and C++'s default.
  
!         â€¢ â€˜patternâ€™ Initialize automatic variables with values which
            will likely transform logic bugs into crashes down the line,
            are easily recognized in a crash dump and without being values
            that programmers can rely on for useful program semantics.
*************** optimizations to be performed is desired
*** 12974,13053 ****
            The values used for pattern initialization might be changed in
            the future.
  
!         * 'zero' Initialize automatic variables with zeroes.
  
!      The default is 'uninitialized'.
  
!      Note that the initializer values, whether 'zero' or 'pattern',
       refer to data representation (in memory or machine registers),
       rather than to their interpretation as numerical values.  This
       distinction may be important in languages that support types with
       biases or implicit multipliers, and with such extensions as
!      'hardbool' (*note Type Attributes::).  For example, a variable that
!      uses 8 bits to represent (biased) quantities in the 'range
!      160..400' will be initialized with the bit patterns '0x00' or
!      '0xFE', depending on CHOICE, whether or not these representations
       stand for values in that range, and even if they do, the
       interpretation of the value held by the variable will depend on the
!      bias.  A 'hardbool' variable that uses say '0X5A' and '0xA5' for
!      'false' and 'true', respectively, will trap with either 'choice' of
!      trivial initializer, i.e., 'zero' initialization will not convert
!      to the representation for 'false', even if it would for a 'static'
       variable of the same type.  This means the initializer pattern
       doesn't generally depend on the type of the initialized variable.
       One notable exception is that (non-hardened) boolean variables that
!      fit in registers are initialized with 'false' (zero), even when
!      'pattern' is requested.
  
       You can control this behavior for a specific variable by using the
!      variable attribute 'uninitialized' (*note Variable Attributes::).
  
! '-fvect-cost-model=MODEL'
       Alter the cost model used for vectorization.  The MODEL argument
!      should be one of 'unlimited', 'dynamic', 'cheap' or 'very-cheap'.
!      With the 'unlimited' model the vectorized code-path is assumed to
!      be profitable while with the 'dynamic' model a runtime check guards
       the vectorized code-path to enable it only for iteration counts
       that will likely execute faster than when executing the original
!      scalar loop.  The 'cheap' model disables vectorization of loops
       where doing so would be cost prohibitive for example due to
       required runtime checks for data dependence or alignment but
!      otherwise is equal to the 'dynamic' model.  The 'very-cheap' model
       disables vectorization of loops when any runtime check for data
       dependence or alignment is required, it also disables vectorization
!      of epilogue loops but otherwise is equal to the 'cheap' model.
  
       The default cost model depends on other optimization flags and is
!      either 'dynamic' or 'cheap'.
  
! '-fsimd-cost-model=MODEL'
       Alter the cost model used for vectorization of loops marked with
       the OpenMP simd directive.  The MODEL argument should be one of
!      'unlimited', 'dynamic', 'cheap'.  All values of MODEL have the same
!      meaning as described in '-fvect-cost-model' and by default a cost
!      model defined with '-fvect-cost-model' is used.
  
! '-ftree-vrp'
       Perform Value Range Propagation on trees.  This is similar to the
       constant propagation pass, but instead of values, ranges of values
       are propagated.  This allows the optimizers to remove unnecessary
       range checks like array bound checks and null pointer checks.  This
!      is enabled by default at '-O2' and higher.  Null pointer check
!      elimination is only done if '-fdelete-null-pointer-checks' is
       enabled.
  
! '-fsplit-paths'
       Split paths leading to loop backedges.  This can improve dead code
       elimination and common subexpression elimination.  This is enabled
!      by default at '-O3' and above.
  
! '-fsplit-ivs-in-unroller'
       Enables expression of values of induction variables in later
       iterations of the unrolled loop using the value in the first
       iteration.  This breaks long dependency chains, thus improving
       efficiency of the scheduling passes.
  
!      A combination of '-fweb' and CSE is often sufficient to obtain the
       same effect.  However, that is not reliable in cases where the loop
       body is more complicated than a single basic block.  It also does
       not work at all on some architectures due to restrictions in the
--- 12978,13057 ----
            The values used for pattern initialization might be changed in
            the future.
  
!         â€¢ â€˜zeroâ€™ Initialize automatic variables with zeroes.
  
!      The default is â€˜uninitializedâ€™.
  
!      Note that the initializer values, whether â€˜zeroâ€™ or â€˜patternâ€™,
       refer to data representation (in memory or machine registers),
       rather than to their interpretation as numerical values.  This
       distinction may be important in languages that support types with
       biases or implicit multipliers, and with such extensions as
!      â€˜hardboolâ€™ (*note Type Attributes::).  For example, a variable that
!      uses 8 bits to represent (biased) quantities in the â€˜range
!      160..400â€™ will be initialized with the bit patterns â€˜0x00â€™ or
!      â€˜0xFEâ€™, depending on CHOICE, whether or not these representations
       stand for values in that range, and even if they do, the
       interpretation of the value held by the variable will depend on the
!      bias.  A â€˜hardboolâ€™ variable that uses say â€˜0X5Aâ€™ and â€˜0xA5â€™ for
!      â€˜falseâ€™ and â€˜trueâ€™, respectively, will trap with either â€˜choiceâ€™ of
!      trivial initializer, i.e., â€˜zeroâ€™ initialization will not convert
!      to the representation for â€˜falseâ€™, even if it would for a â€˜staticâ€™
       variable of the same type.  This means the initializer pattern
       doesn't generally depend on the type of the initialized variable.
       One notable exception is that (non-hardened) boolean variables that
!      fit in registers are initialized with â€˜falseâ€™ (zero), even when
!      â€˜patternâ€™ is requested.
  
       You can control this behavior for a specific variable by using the
!      variable attribute â€˜uninitializedâ€™ (*note Variable Attributes::).
  
! â€˜-fvect-cost-model=MODELâ€™
       Alter the cost model used for vectorization.  The MODEL argument
!      should be one of â€˜unlimitedâ€™, â€˜dynamicâ€™, â€˜cheapâ€™ or â€˜very-cheapâ€™.
!      With the â€˜unlimitedâ€™ model the vectorized code-path is assumed to
!      be profitable while with the â€˜dynamicâ€™ model a runtime check guards
       the vectorized code-path to enable it only for iteration counts
       that will likely execute faster than when executing the original
!      scalar loop.  The â€˜cheapâ€™ model disables vectorization of loops
       where doing so would be cost prohibitive for example due to
       required runtime checks for data dependence or alignment but
!      otherwise is equal to the â€˜dynamicâ€™ model.  The â€˜very-cheapâ€™ model
       disables vectorization of loops when any runtime check for data
       dependence or alignment is required, it also disables vectorization
!      of epilogue loops but otherwise is equal to the â€˜cheapâ€™ model.
  
       The default cost model depends on other optimization flags and is
!      either â€˜dynamicâ€™ or â€˜cheapâ€™.
  
! â€˜-fsimd-cost-model=MODELâ€™
       Alter the cost model used for vectorization of loops marked with
       the OpenMP simd directive.  The MODEL argument should be one of
!      â€˜unlimitedâ€™, â€˜dynamicâ€™, â€˜cheapâ€™.  All values of MODEL have the same
!      meaning as described in â€˜-fvect-cost-modelâ€™ and by default a cost
!      model defined with â€˜-fvect-cost-modelâ€™ is used.
  
! â€˜-ftree-vrpâ€™
       Perform Value Range Propagation on trees.  This is similar to the
       constant propagation pass, but instead of values, ranges of values
       are propagated.  This allows the optimizers to remove unnecessary
       range checks like array bound checks and null pointer checks.  This
!      is enabled by default at â€˜-O2â€™ and higher.  Null pointer check
!      elimination is only done if â€˜-fdelete-null-pointer-checksâ€™ is
       enabled.
  
! â€˜-fsplit-pathsâ€™
       Split paths leading to loop backedges.  This can improve dead code
       elimination and common subexpression elimination.  This is enabled
!      by default at â€˜-O3â€™ and above.
  
! â€˜-fsplit-ivs-in-unrollerâ€™
       Enables expression of values of induction variables in later
       iterations of the unrolled loop using the value in the first
       iteration.  This breaks long dependency chains, thus improving
       efficiency of the scheduling passes.
  
!      A combination of â€˜-fwebâ€™ and CSE is often sufficient to obtain the
       same effect.  However, that is not reliable in cases where the loop
       body is more complicated than a single basic block.  It also does
       not work at all on some architectures due to restrictions in the
*************** optimizations to be performed is desired
*** 13055,13061 ****
  
       This optimization is enabled by default.
  
! '-fvariable-expansion-in-unroller'
       With this option, the compiler creates multiple copies of some
       local variables when unrolling a loop, which can result in superior
       code.
--- 13059,13065 ----
  
       This optimization is enabled by default.
  
! â€˜-fvariable-expansion-in-unrollerâ€™
       With this option, the compiler creates multiple copies of some
       local variables when unrolling a loop, which can result in superior
       code.
*************** optimizations to be performed is desired
*** 13063,13084 ****
       This optimization is enabled by default for PowerPC targets, but
       disabled by default otherwise.
  
! '-fpartial-inlining'
       Inline parts of functions.  This option has any effect only when
!      inlining itself is turned on by the '-finline-functions' or
!      '-finline-small-functions' options.
  
!      Enabled at levels '-O2', '-O3', '-Os'.
  
! '-fpredictive-commoning'
       Perform predictive commoning optimization, i.e., reusing
       computations (especially memory loads and stores) performed in
       previous iterations of loops.
  
!      This option is enabled at level '-O3'.  It is also enabled by
!      '-fprofile-use' and '-fauto-profile'.
  
! '-fprefetch-loop-arrays'
       If supported by the target machine, generate instructions to
       prefetch memory to improve the performance of loops that access
       large arrays.
--- 13067,13088 ----
       This optimization is enabled by default for PowerPC targets, but
       disabled by default otherwise.
  
! â€˜-fpartial-inliningâ€™
       Inline parts of functions.  This option has any effect only when
!      inlining itself is turned on by the â€˜-finline-functionsâ€™ or
!      â€˜-finline-small-functionsâ€™ options.
  
!      Enabled at levels â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-fpredictive-commoningâ€™
       Perform predictive commoning optimization, i.e., reusing
       computations (especially memory loads and stores) performed in
       previous iterations of loops.
  
!      This option is enabled at level â€˜-O3â€™.  It is also enabled by
!      â€˜-fprofile-useâ€™ and â€˜-fauto-profileâ€™.
  
! â€˜-fprefetch-loop-arraysâ€™
       If supported by the target machine, generate instructions to
       prefetch memory to improve the performance of loops that access
       large arrays.
*************** optimizations to be performed is desired
*** 13086,13167 ****
       This option may generate better or worse code; results are highly
       dependent on the structure of loops within the source code.
  
!      Disabled at level '-Os'.
  
! '-fno-printf-return-value'
       Do not substitute constants for known return value of formatted
!      output functions such as 'sprintf', 'snprintf', 'vsprintf', and
!      'vsnprintf' (but not 'printf' of 'fprintf').  This transformation
       allows GCC to optimize or even eliminate branches based on the
       known return value of these functions called with arguments that
       are either constant, or whose values are known to be in a range
       that makes determining the exact return value possible.  For
!      example, when '-fprintf-return-value' is in effect, both the branch
!      and the body of the 'if' statement (but not the call to 'snprint')
!      can be optimized away when 'i' is a 32-bit or smaller integer
       because the return value is guaranteed to be at most 8.
  
            char buf[9];
            if (snprintf (buf, "%08x", i) >= sizeof buf)
              ...
  
!      The '-fprintf-return-value' option relies on other optimizations
!      and yields best results with '-O2' and above.  It works in tandem
!      with the '-Wformat-overflow' and '-Wformat-truncation' options.
!      The '-fprintf-return-value' option is enabled by default.
  
! '-fno-peephole'
! '-fno-peephole2'
       Disable any machine-specific peephole optimizations.  The
!      difference between '-fno-peephole' and '-fno-peephole2' is in how
       they are implemented in the compiler; some targets use one, some
       use the other, a few use both.
  
!      '-fpeephole' is enabled by default.  '-fpeephole2' enabled at
!      levels '-O2', '-O3', '-Os'.
  
! '-fno-guess-branch-probability'
       Do not guess branch probabilities using heuristics.
  
       GCC uses heuristics to guess branch probabilities if they are not
!      provided by profiling feedback ('-fprofile-arcs').  These
       heuristics are based on the control flow graph.  If some branch
!      probabilities are specified by '__builtin_expect', then the
       heuristics are used to guess branch probabilities for the rest of
!      the control flow graph, taking the '__builtin_expect' info into
       account.  The interactions between the heuristics and
!      '__builtin_expect' can be complex, and in some cases, it may be
       useful to disable the heuristics so that the effects of
!      '__builtin_expect' are easier to understand.
  
       It is also possible to specify expected probability of the
!      expression with '__builtin_expect_with_probability' built-in
       function.
  
!      The default is '-fguess-branch-probability' at levels '-O', '-O2',
!      '-O3', '-Os'.
  
! '-freorder-blocks'
       Reorder basic blocks in the compiled function in order to reduce
       number of taken branches and improve code locality.
  
!      Enabled at levels '-O1', '-O2', '-O3', '-Os'.
  
! '-freorder-blocks-algorithm=ALGORITHM'
       Use the specified algorithm for basic block reordering.  The
!      ALGORITHM argument can be 'simple', which does not increase code
       size (except sometimes due to secondary effects like alignment), or
!      'stc', the "software trace cache" algorithm, which tries to put all
       often executed code together, minimizing the number of branches
       executed by making extra copies of code.
  
!      The default is 'simple' at levels '-O1', '-Os', and 'stc' at levels
!      '-O2', '-O3'.
  
! '-freorder-blocks-and-partition'
       In addition to reordering basic blocks in the compiled function, in
       order to reduce number of taken branches, partitions hot and cold
!      basic blocks into separate sections of the assembly and '.o' files,
       to improve paging and cache locality performance.
  
       This optimization is automatically turned off in the presence of
--- 13090,13171 ----
       This option may generate better or worse code; results are highly
       dependent on the structure of loops within the source code.
  
!      Disabled at level â€˜-Osâ€™.
  
! â€˜-fno-printf-return-valueâ€™
       Do not substitute constants for known return value of formatted
!      output functions such as â€˜sprintfâ€™, â€˜snprintfâ€™, â€˜vsprintfâ€™, and
!      â€˜vsnprintfâ€™ (but not â€˜printfâ€™ of â€˜fprintfâ€™).  This transformation
       allows GCC to optimize or even eliminate branches based on the
       known return value of these functions called with arguments that
       are either constant, or whose values are known to be in a range
       that makes determining the exact return value possible.  For
!      example, when â€˜-fprintf-return-valueâ€™ is in effect, both the branch
!      and the body of the â€˜ifâ€™ statement (but not the call to â€˜snprintâ€™)
!      can be optimized away when â€˜iâ€™ is a 32-bit or smaller integer
       because the return value is guaranteed to be at most 8.
  
            char buf[9];
            if (snprintf (buf, "%08x", i) >= sizeof buf)
              ...
  
!      The â€˜-fprintf-return-valueâ€™ option relies on other optimizations
!      and yields best results with â€˜-O2â€™ and above.  It works in tandem
!      with the â€˜-Wformat-overflowâ€™ and â€˜-Wformat-truncationâ€™ options.
!      The â€˜-fprintf-return-valueâ€™ option is enabled by default.
  
! â€˜-fno-peepholeâ€™
! â€˜-fno-peephole2â€™
       Disable any machine-specific peephole optimizations.  The
!      difference between â€˜-fno-peepholeâ€™ and â€˜-fno-peephole2â€™ is in how
       they are implemented in the compiler; some targets use one, some
       use the other, a few use both.
  
!      â€˜-fpeepholeâ€™ is enabled by default.  â€˜-fpeephole2â€™ enabled at
!      levels â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-fno-guess-branch-probabilityâ€™
       Do not guess branch probabilities using heuristics.
  
       GCC uses heuristics to guess branch probabilities if they are not
!      provided by profiling feedback (â€˜-fprofile-arcsâ€™).  These
       heuristics are based on the control flow graph.  If some branch
!      probabilities are specified by â€˜__builtin_expectâ€™, then the
       heuristics are used to guess branch probabilities for the rest of
!      the control flow graph, taking the â€˜__builtin_expectâ€™ info into
       account.  The interactions between the heuristics and
!      â€˜__builtin_expectâ€™ can be complex, and in some cases, it may be
       useful to disable the heuristics so that the effects of
!      â€˜__builtin_expectâ€™ are easier to understand.
  
       It is also possible to specify expected probability of the
!      expression with â€˜__builtin_expect_with_probabilityâ€™ built-in
       function.
  
!      The default is â€˜-fguess-branch-probabilityâ€™ at levels â€˜-Oâ€™, â€˜-O2â€™,
!      â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-freorder-blocksâ€™
       Reorder basic blocks in the compiled function in order to reduce
       number of taken branches and improve code locality.
  
!      Enabled at levels â€˜-O1â€™, â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-freorder-blocks-algorithm=ALGORITHMâ€™
       Use the specified algorithm for basic block reordering.  The
!      ALGORITHM argument can be â€˜simpleâ€™, which does not increase code
       size (except sometimes due to secondary effects like alignment), or
!      â€˜stcâ€™, the "software trace cache" algorithm, which tries to put all
       often executed code together, minimizing the number of branches
       executed by making extra copies of code.
  
!      The default is â€˜simpleâ€™ at levels â€˜-O1â€™, â€˜-Osâ€™, and â€˜stcâ€™ at levels
!      â€˜-O2â€™, â€˜-O3â€™.
  
! â€˜-freorder-blocks-and-partitionâ€™
       In addition to reordering basic blocks in the compiled function, in
       order to reduce number of taken branches, partitions hot and cold
!      basic blocks into separate sections of the assembly and â€˜.oâ€™ files,
       to improve paging and cache locality performance.
  
       This optimization is automatically turned off in the presence of
*************** optimizations to be performed is desired
*** 13169,13205 ****
       setjump/longjump or target specific scheme), for linkonce sections,
       for functions with a user-defined section attribute and on any
       architecture that does not support named sections.  When
!      '-fsplit-stack' is used this option is not enabled by default (to
       avoid linker errors), but may be enabled explicitly (if using a
       working linker).
  
!      Enabled for x86 at levels '-O2', '-O3', '-Os'.
  
! '-freorder-functions'
       Reorder functions in the object file in order to improve code
!      locality.  Unlike '-fipa-reorder-for-locality' this option
       prioritises grouping all functions within a category
       (hot/normal/cold/never-executed) together.  This is implemented by
!      using special subsections '.text.hot' for most frequently executed
!      functions and '.text.unlikely' for unlikely executed functions.
       Reordering is done by the linker so object file format must support
       named sections and linker must place them in a reasonable way.
  
       This option isn't effective unless you either provide profile
!      feedback (see '-fprofile-arcs' for details) or manually annotate
!      functions with 'hot' or 'cold' attributes (*note Common Function
       Attributes::).
  
!      Enabled at levels '-O2', '-O3', '-Os'.
  
! '-fstrict-aliasing'
       Allow the compiler to assume the strictest aliasing rules
       applicable to the language being compiled.  For C (and C++), this
       activates optimizations based on the type of expressions.  In
       particular, an object of one type is assumed never to reside at the
       same address as an object of a different type, unless the types are
!      almost the same.  For example, an 'unsigned int' can alias an
!      'int', but not a 'void*' or a 'double'.  A character type may alias
       any other type.
  
       Pay special attention to code like this:
--- 13173,13209 ----
       setjump/longjump or target specific scheme), for linkonce sections,
       for functions with a user-defined section attribute and on any
       architecture that does not support named sections.  When
!      â€˜-fsplit-stackâ€™ is used this option is not enabled by default (to
       avoid linker errors), but may be enabled explicitly (if using a
       working linker).
  
!      Enabled for x86 at levels â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-freorder-functionsâ€™
       Reorder functions in the object file in order to improve code
!      locality.  Unlike â€˜-fipa-reorder-for-localityâ€™ this option
       prioritises grouping all functions within a category
       (hot/normal/cold/never-executed) together.  This is implemented by
!      using special subsections â€˜.text.hotâ€™ for most frequently executed
!      functions and â€˜.text.unlikelyâ€™ for unlikely executed functions.
       Reordering is done by the linker so object file format must support
       named sections and linker must place them in a reasonable way.
  
       This option isn't effective unless you either provide profile
!      feedback (see â€˜-fprofile-arcsâ€™ for details) or manually annotate
!      functions with â€˜hotâ€™ or â€˜coldâ€™ attributes (*note Common Function
       Attributes::).
  
!      Enabled at levels â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-fstrict-aliasingâ€™
       Allow the compiler to assume the strictest aliasing rules
       applicable to the language being compiled.  For C (and C++), this
       activates optimizations based on the type of expressions.  In
       particular, an object of one type is assumed never to reside at the
       same address as an object of a different type, unless the types are
!      almost the same.  For example, an â€˜unsigned intâ€™ can alias an
!      â€˜intâ€™, but not a â€˜void*â€™ or a â€˜doubleâ€™.  A character type may alias
       any other type.
  
       Pay special attention to code like this:
*************** optimizations to be performed is desired
*** 13215,13221 ****
            }
       The practice of reading from a different union member than the one
       most recently written to (called "type-punning") is common.  Even
!      with '-fstrict-aliasing', type-punning is allowed, provided the
       memory is accessed through the union type.  So, the code above
       works as expected.  *Note Structures unions enumerations and
       bit-fields implementation::.  However, this code might not:
--- 13219,13225 ----
            }
       The practice of reading from a different union member than the one
       most recently written to (called "type-punning") is common.  Even
!      with â€˜-fstrict-aliasingâ€™, type-punning is allowed, provided the
       memory is accessed through the union type.  So, the code above
       works as expected.  *Note Structures unions enumerations and
       bit-fields implementation::.  However, this code might not:
*************** optimizations to be performed is desired
*** 13235,13275 ****
              return ((union a_union *) &d)->i;
            }
  
!      The '-fstrict-aliasing' option is enabled at levels '-O2', '-O3',
!      '-Os'.
  
! '-fipa-strict-aliasing'
!      Controls whether rules of '-fstrict-aliasing' are applied across
       function boundaries.  Note that if multiple functions gets inlined
       into a single function the memory accesses are no longer considered
       to be crossing a function boundary.
  
!      The '-fipa-strict-aliasing' option is enabled by default and is
!      effective only in combination with '-fstrict-aliasing'.
  
! '-falign-functions'
! '-falign-functions=N'
! '-falign-functions=N:M'
! '-falign-functions=N:M:N2'
! '-falign-functions=N:M:N2:M2'
       Align the start of functions to the next power-of-two greater than
       or equal to N, skipping up to M-1 bytes.  This ensures that at
       least the first M bytes of the function can be fetched by the CPU
       without crossing an N-byte alignment boundary.  This is an
       optimization of code performance and alignment is ignored for
       functions considered cold.  If alignment is required for all
!      functions, use '-fmin-function-alignment'.
  
       If M is not specified, it defaults to N.
  
!      Examples: '-falign-functions=32' aligns functions to the next
!      32-byte boundary, '-falign-functions=24' aligns to the next 32-byte
       boundary only if this can be done by skipping 23 bytes or less,
!      '-falign-functions=32:7' aligns to the next 32-byte boundary only
       if this can be done by skipping 6 bytes or less.
  
       The second pair of N2:M2 values allows you to specify a secondary
!      alignment: '-falign-functions=64:7:32:3' aligns to the next 64-byte
       boundary if this can be done by skipping 6 bytes or less, otherwise
       aligns to the next 32-byte boundary if this can be done by skipping
       2 bytes or less.  If M2 is not specified, it defaults to N2.
--- 13239,13279 ----
              return ((union a_union *) &d)->i;
            }
  
!      The â€˜-fstrict-aliasingâ€™ option is enabled at levels â€˜-O2â€™, â€˜-O3â€™,
!      â€˜-Osâ€™.
  
! â€˜-fipa-strict-aliasingâ€™
!      Controls whether rules of â€˜-fstrict-aliasingâ€™ are applied across
       function boundaries.  Note that if multiple functions gets inlined
       into a single function the memory accesses are no longer considered
       to be crossing a function boundary.
  
!      The â€˜-fipa-strict-aliasingâ€™ option is enabled by default and is
!      effective only in combination with â€˜-fstrict-aliasingâ€™.
  
! â€˜-falign-functionsâ€™
! â€˜-falign-functions=Nâ€™
! â€˜-falign-functions=N:Mâ€™
! â€˜-falign-functions=N:M:N2â€™
! â€˜-falign-functions=N:M:N2:M2â€™
       Align the start of functions to the next power-of-two greater than
       or equal to N, skipping up to M-1 bytes.  This ensures that at
       least the first M bytes of the function can be fetched by the CPU
       without crossing an N-byte alignment boundary.  This is an
       optimization of code performance and alignment is ignored for
       functions considered cold.  If alignment is required for all
!      functions, use â€˜-fmin-function-alignmentâ€™.
  
       If M is not specified, it defaults to N.
  
!      Examples: â€˜-falign-functions=32â€™ aligns functions to the next
!      32-byte boundary, â€˜-falign-functions=24â€™ aligns to the next 32-byte
       boundary only if this can be done by skipping 23 bytes or less,
!      â€˜-falign-functions=32:7â€™ aligns to the next 32-byte boundary only
       if this can be done by skipping 6 bytes or less.
  
       The second pair of N2:M2 values allows you to specify a secondary
!      alignment: â€˜-falign-functions=64:7:32:3â€™ aligns to the next 64-byte
       boundary if this can be done by skipping 6 bytes or less, otherwise
       aligns to the next 32-byte boundary if this can be done by skipping
       2 bytes or less.  If M2 is not specified, it defaults to N2.
*************** optimizations to be performed is desired
*** 13277,13423 ****
       Some assemblers only support this flag when N is a power of two; in
       that case, it is rounded up.
  
!      '-fno-align-functions' and '-falign-functions=1' are equivalent and
       mean that functions are not aligned.
  
       If N is not specified or is zero, use a machine-dependent default.
       The maximum allowed N option value is 65536.
  
!      Enabled at levels '-O2', '-O3'.
  
! '-flimit-function-alignment'
       If this option is enabled, the compiler tries to avoid
       unnecessarily overaligning functions.  It attempts to instruct the
!      assembler to align by the amount specified by '-falign-functions',
       but not to skip more bytes than the size of the function.
  
! '-falign-labels'
! '-falign-labels=N'
! '-falign-labels=N:M'
! '-falign-labels=N:M:N2'
! '-falign-labels=N:M:N2:M2'
       Align all branch targets to a power-of-two boundary.
  
!      Parameters of this option are analogous to the '-falign-functions'
!      option.  '-fno-align-labels' and '-falign-labels=1' are equivalent
       and mean that labels are not aligned.
  
!      If '-falign-loops' or '-falign-jumps' are applicable and are
       greater than this value, then their values are used instead.
  
       If N is not specified or is zero, use a machine-dependent default
!      which is very likely to be '1', meaning no alignment.  The maximum
       allowed N option value is 65536.
  
!      Enabled at levels '-O2', '-O3'.
  
! '-falign-loops'
! '-falign-loops=N'
! '-falign-loops=N:M'
! '-falign-loops=N:M:N2'
! '-falign-loops=N:M:N2:M2'
       Align loops to a power-of-two boundary.  If the loops are executed
       many times, this makes up for any execution of the dummy padding
       instructions.  This is an optimization of code performance and
       alignment is ignored for loops considered cold.
  
!      If '-falign-labels' is greater than this value, then its value is
       used instead.
  
!      Parameters of this option are analogous to the '-falign-functions'
!      option.  '-fno-align-loops' and '-falign-loops=1' are equivalent
       and mean that loops are not aligned.  The maximum allowed N option
       value is 65536.
  
       If N is not specified or is zero, use a machine-dependent default.
  
!      Enabled at levels '-O2', '-O3'.
  
! '-falign-jumps'
! '-falign-jumps=N'
! '-falign-jumps=N:M'
! '-falign-jumps=N:M:N2'
! '-falign-jumps=N:M:N2:M2'
       Align branch targets to a power-of-two boundary, for branch targets
       where the targets can only be reached by jumping.  In this case, no
       dummy operations need be executed.  This is an optimization of code
       performance and alignment is ignored for jumps considered cold.
  
!      If '-falign-labels' is greater than this value, then its value is
       used instead.
  
!      Parameters of this option are analogous to the '-falign-functions'
!      option.  '-fno-align-jumps' and '-falign-jumps=1' are equivalent
       and mean that loops are not aligned.
  
       If N is not specified or is zero, use a machine-dependent default.
       The maximum allowed N option value is 65536.
  
!      Enabled at levels '-O2', '-O3'.
  
! '-fmin-function-alignment'
       Specify minimal alignment of functions to the next power-of-two
!      greater than or equal to N.  Unlike '-falign-functions' this
       alignment is applied also to all functions (even those considered
       cold).  The alignment is also not affected by
!      '-flimit-function-alignment'
  
! '-fno-allocation-dce'
!      Do not remove unused C++ allocations (using operator 'new' and
!      operator 'delete') in dead code elimination.
  
!      See also '-fmalloc-dce'.
  
! '-fallow-store-data-races'
       Allow the compiler to perform optimizations that may introduce new
       data races on stores, without proving that the variable cannot be
       concurrently accessed by other threads.  Does not affect
       optimization of local data.  It is safe to use this option if it is
       known that global data will not be accessed by multiple threads.
  
!      Examples of optimizations enabled by '-fallow-store-data-races'
       include hoisting or if-conversions that may cause a value that was
       already in memory to be re-written with that same value.  Such
       re-writing is safe in a single threaded context but may be unsafe
       in a multi-threaded context.  Note that on some processors,
       if-conversions may be required in order to enable vectorization.
  
!      Enabled at level '-Ofast'.
  
! '-funit-at-a-time'
!      This option is left for compatibility reasons.  '-funit-at-a-time'
!      has no effect, while '-fno-unit-at-a-time' implies
!      '-fno-toplevel-reorder' and '-fno-section-anchors'.
  
       Enabled by default.
  
! '-fno-toplevel-reorder'
!      Do not reorder top-level functions, variables, and 'asm'
       statements.  Output them in the same order that they appear in the
       input file.  When this option is used, unreferenced static
       variables are not removed.  This option is intended to support
       existing code that relies on a particular ordering.  For new code,
       it is better to use attributes when possible.
  
!      '-ftoplevel-reorder' is the default at '-O1' and higher, and also
!      at '-O0' if '-fsection-anchors' is explicitly requested.
!      Additionally '-fno-toplevel-reorder' implies
!      '-fno-section-anchors'.
  
! '-funreachable-traps'
       With this option, the compiler turns calls to
!      '__builtin_unreachable' into traps, instead of using them for
       optimization.  This also affects any such calls implicitly
       generated by the compiler.
  
!      This option has the same effect as '-fsanitize=unreachable
!      -fsanitize-trap=unreachable', but does not affect the values of
!      those options.  If '-fsanitize=unreachable' is enabled, that option
       takes priority over this one.
  
!      This option is enabled by default at '-O0' and '-Og'.
  
! '-fweb'
       Constructs webs as commonly used for register allocation purposes
       and assign each web individual pseudo register.  This allows the
       register allocation pass to operate on pseudos directly, but also
--- 13281,13427 ----
       Some assemblers only support this flag when N is a power of two; in
       that case, it is rounded up.
  
!      â€˜-fno-align-functionsâ€™ and â€˜-falign-functions=1â€™ are equivalent and
       mean that functions are not aligned.
  
       If N is not specified or is zero, use a machine-dependent default.
       The maximum allowed N option value is 65536.
  
!      Enabled at levels â€˜-O2â€™, â€˜-O3â€™.
  
! â€˜-flimit-function-alignmentâ€™
       If this option is enabled, the compiler tries to avoid
       unnecessarily overaligning functions.  It attempts to instruct the
!      assembler to align by the amount specified by â€˜-falign-functionsâ€™,
       but not to skip more bytes than the size of the function.
  
! â€˜-falign-labelsâ€™
! â€˜-falign-labels=Nâ€™
! â€˜-falign-labels=N:Mâ€™
! â€˜-falign-labels=N:M:N2â€™
! â€˜-falign-labels=N:M:N2:M2â€™
       Align all branch targets to a power-of-two boundary.
  
!      Parameters of this option are analogous to the â€˜-falign-functionsâ€™
!      option.  â€˜-fno-align-labelsâ€™ and â€˜-falign-labels=1â€™ are equivalent
       and mean that labels are not aligned.
  
!      If â€˜-falign-loopsâ€™ or â€˜-falign-jumpsâ€™ are applicable and are
       greater than this value, then their values are used instead.
  
       If N is not specified or is zero, use a machine-dependent default
!      which is very likely to be â€˜1â€™, meaning no alignment.  The maximum
       allowed N option value is 65536.
  
!      Enabled at levels â€˜-O2â€™, â€˜-O3â€™.
  
! â€˜-falign-loopsâ€™
! â€˜-falign-loops=Nâ€™
! â€˜-falign-loops=N:Mâ€™
! â€˜-falign-loops=N:M:N2â€™
! â€˜-falign-loops=N:M:N2:M2â€™
       Align loops to a power-of-two boundary.  If the loops are executed
       many times, this makes up for any execution of the dummy padding
       instructions.  This is an optimization of code performance and
       alignment is ignored for loops considered cold.
  
!      If â€˜-falign-labelsâ€™ is greater than this value, then its value is
       used instead.
  
!      Parameters of this option are analogous to the â€˜-falign-functionsâ€™
!      option.  â€˜-fno-align-loopsâ€™ and â€˜-falign-loops=1â€™ are equivalent
       and mean that loops are not aligned.  The maximum allowed N option
       value is 65536.
  
       If N is not specified or is zero, use a machine-dependent default.
  
!      Enabled at levels â€˜-O2â€™, â€˜-O3â€™.
  
! â€˜-falign-jumpsâ€™
! â€˜-falign-jumps=Nâ€™
! â€˜-falign-jumps=N:Mâ€™
! â€˜-falign-jumps=N:M:N2â€™
! â€˜-falign-jumps=N:M:N2:M2â€™
       Align branch targets to a power-of-two boundary, for branch targets
       where the targets can only be reached by jumping.  In this case, no
       dummy operations need be executed.  This is an optimization of code
       performance and alignment is ignored for jumps considered cold.
  
!      If â€˜-falign-labelsâ€™ is greater than this value, then its value is
       used instead.
  
!      Parameters of this option are analogous to the â€˜-falign-functionsâ€™
!      option.  â€˜-fno-align-jumpsâ€™ and â€˜-falign-jumps=1â€™ are equivalent
       and mean that loops are not aligned.
  
       If N is not specified or is zero, use a machine-dependent default.
       The maximum allowed N option value is 65536.
  
!      Enabled at levels â€˜-O2â€™, â€˜-O3â€™.
  
! â€˜-fmin-function-alignmentâ€™
       Specify minimal alignment of functions to the next power-of-two
!      greater than or equal to N.  Unlike â€˜-falign-functionsâ€™ this
       alignment is applied also to all functions (even those considered
       cold).  The alignment is also not affected by
!      â€˜-flimit-function-alignmentâ€™
  
! â€˜-fno-allocation-dceâ€™
!      Do not remove unused C++ allocations (using operator â€˜newâ€™ and
!      operator â€˜deleteâ€™) in dead code elimination.
  
!      See also â€˜-fmalloc-dceâ€™.
  
! â€˜-fallow-store-data-racesâ€™
       Allow the compiler to perform optimizations that may introduce new
       data races on stores, without proving that the variable cannot be
       concurrently accessed by other threads.  Does not affect
       optimization of local data.  It is safe to use this option if it is
       known that global data will not be accessed by multiple threads.
  
!      Examples of optimizations enabled by â€˜-fallow-store-data-racesâ€™
       include hoisting or if-conversions that may cause a value that was
       already in memory to be re-written with that same value.  Such
       re-writing is safe in a single threaded context but may be unsafe
       in a multi-threaded context.  Note that on some processors,
       if-conversions may be required in order to enable vectorization.
  
!      Enabled at level â€˜-Ofastâ€™.
  
! â€˜-funit-at-a-timeâ€™
!      This option is left for compatibility reasons.  â€˜-funit-at-a-timeâ€™
!      has no effect, while â€˜-fno-unit-at-a-timeâ€™ implies
!      â€˜-fno-toplevel-reorderâ€™ and â€˜-fno-section-anchorsâ€™.
  
       Enabled by default.
  
! â€˜-fno-toplevel-reorderâ€™
!      Do not reorder top-level functions, variables, and â€˜asmâ€™
       statements.  Output them in the same order that they appear in the
       input file.  When this option is used, unreferenced static
       variables are not removed.  This option is intended to support
       existing code that relies on a particular ordering.  For new code,
       it is better to use attributes when possible.
  
!      â€˜-ftoplevel-reorderâ€™ is the default at â€˜-O1â€™ and higher, and also
!      at â€˜-O0â€™ if â€˜-fsection-anchorsâ€™ is explicitly requested.
!      Additionally â€˜-fno-toplevel-reorderâ€™ implies
!      â€˜-fno-section-anchorsâ€™.
  
! â€˜-funreachable-trapsâ€™
       With this option, the compiler turns calls to
!      â€˜__builtin_unreachableâ€™ into traps, instead of using them for
       optimization.  This also affects any such calls implicitly
       generated by the compiler.
  
!      This option has the same effect as â€˜-fsanitize=unreachable
!      -fsanitize-trap=unreachableâ€™, but does not affect the values of
!      those options.  If â€˜-fsanitize=unreachableâ€™ is enabled, that option
       takes priority over this one.
  
!      This option is enabled by default at â€˜-O0â€™ and â€˜-Ogâ€™.
  
! â€˜-fwebâ€™
       Constructs webs as commonly used for register allocation purposes
       and assign each web individual pseudo register.  This allows the
       register allocation pass to operate on pseudos directly, but also
*************** optimizations to be performed is desired
*** 13426,13448 ****
       debugging impossible, since variables no longer stay in a "home
       register".
  
!      Enabled by default with '-funroll-loops'.
  
! '-fwhole-program'
       Assume that the current compilation unit represents the whole
       program being compiled.  All public functions and variables with
!      the exception of 'main' and those merged by attribute
!      'externally_visible' become static functions and in effect are
       optimized more aggressively by interprocedural optimizers.
  
!      With '-flto' this option has a limited use.  In most cases the
       precise list of symbols used or exported from the binary is known
       the resolution info passed to the link-time optimizer by the linker
       plugin.  It is still useful if no linker plugin is used or during
!      incremental link step when final code is produced (with '-flto'
!      '-flinker-output=nolto-rel').
  
! '-flto[=N]'
       This option runs the standard link-time optimizer.  When invoked
       with source code, it generates GIMPLE (one of GCC's internal
       representations) and writes it to special ELF sections in the
--- 13430,13452 ----
       debugging impossible, since variables no longer stay in a "home
       register".
  
!      Enabled by default with â€˜-funroll-loopsâ€™.
  
! â€˜-fwhole-programâ€™
       Assume that the current compilation unit represents the whole
       program being compiled.  All public functions and variables with
!      the exception of â€˜mainâ€™ and those merged by attribute
!      â€˜externally_visibleâ€™ become static functions and in effect are
       optimized more aggressively by interprocedural optimizers.
  
!      With â€˜-fltoâ€™ this option has a limited use.  In most cases the
       precise list of symbols used or exported from the binary is known
       the resolution info passed to the link-time optimizer by the linker
       plugin.  It is still useful if no linker plugin is used or during
!      incremental link step when final code is produced (with â€˜-fltoâ€™
!      â€˜-flinker-output=nolto-relâ€™).
  
! â€˜-flto[=N]â€™
       This option runs the standard link-time optimizer.  When invoked
       with source code, it generates GIMPLE (one of GCC's internal
       representations) and writes it to special ELF sections in the
*************** optimizations to be performed is desired
*** 13450,13456 ****
       function bodies are read from these ELF sections and instantiated
       as if they had been part of the same translation unit.
  
!      To use the link-time optimizer, '-flto' and optimization options
       should be specified at compile time and during the final link.  It
       is recommended that you compile all the files participating in the
       same link with the same options and also specify those options at
--- 13454,13460 ----
       function bodies are read from these ELF sections and instantiated
       as if they had been part of the same translation unit.
  
!      To use the link-time optimizer, â€˜-fltoâ€™ and optimization options
       should be specified at compile time and during the final link.  It
       is recommended that you compile all the files participating in the
       same link with the same options and also specify those options at
*************** optimizations to be performed is desired
*** 13461,13509 ****
            gcc -o myprog -flto -O2 foo.o bar.o
  
       The first two invocations to GCC save a bytecode representation of
!      GIMPLE into special ELF sections inside 'foo.o' and 'bar.o'.  The
!      final invocation reads the GIMPLE bytecode from 'foo.o' and
!      'bar.o', merges the two files into a single internal image, and
!      compiles the result as usual.  Since both 'foo.o' and 'bar.o' are
       merged into a single image, this causes all the interprocedural
       analyses and optimizations in GCC to work across the two files as
       if they were a single one.  This means, for example, that the
!      inliner is able to inline functions in 'bar.o' into functions in
!      'foo.o' and vice-versa.
  
       Another (simpler) way to enable link-time optimization is:
  
            gcc -o myprog -flto -O2 foo.c bar.c
  
!      The above generates bytecode for 'foo.c' and 'bar.c', merges them
       together into a single GIMPLE representation and optimizes them as
!      usual to produce 'myprog'.
  
       The important thing to keep in mind is that to enable link-time
       optimizations you need to use the GCC driver to perform the link
       step.  GCC automatically performs link-time optimization if any of
!      the objects involved were compiled with the '-flto' command-line
       option.  You can always override the automatic decision to do
!      link-time optimization by passing '-fno-lto' to the link command.
  
       To make whole program optimization effective, it is necessary to
       make certain whole program assumptions.  The compiler needs to know
       what functions and variables can be accessed by libraries and
       runtime outside of the link-time optimized unit.  When supported by
!      the linker, the linker plugin (see '-fuse-linker-plugin') passes
       information to the compiler about used and externally visible
       symbols.  When the linker plugin is not available,
!      '-fwhole-program' should be used to allow the compiler to make
       these assumptions, which leads to more aggressive optimization
       decisions.
  
!      When a file is compiled with '-flto' without '-fuse-linker-plugin',
       the generated object file is larger than a regular object file
       because it contains GIMPLE bytecodes and the usual final code (see
!      '-ffat-lto-objects').  This means that object files with LTO
!      information can be linked as normal object files; if '-fno-lto' is
       passed to the linker, no interprocedural optimizations are applied.
!      Note that when '-fno-fat-lto-objects' is enabled the compile stage
       is faster but you cannot perform a regular, non-LTO link on them.
  
       When producing the final binary, GCC only applies link-time
--- 13465,13513 ----
            gcc -o myprog -flto -O2 foo.o bar.o
  
       The first two invocations to GCC save a bytecode representation of
!      GIMPLE into special ELF sections inside â€˜foo.oâ€™ and â€˜bar.oâ€™.  The
!      final invocation reads the GIMPLE bytecode from â€˜foo.oâ€™ and
!      â€˜bar.oâ€™, merges the two files into a single internal image, and
!      compiles the result as usual.  Since both â€˜foo.oâ€™ and â€˜bar.oâ€™ are
       merged into a single image, this causes all the interprocedural
       analyses and optimizations in GCC to work across the two files as
       if they were a single one.  This means, for example, that the
!      inliner is able to inline functions in â€˜bar.oâ€™ into functions in
!      â€˜foo.oâ€™ and vice-versa.
  
       Another (simpler) way to enable link-time optimization is:
  
            gcc -o myprog -flto -O2 foo.c bar.c
  
!      The above generates bytecode for â€˜foo.câ€™ and â€˜bar.câ€™, merges them
       together into a single GIMPLE representation and optimizes them as
!      usual to produce â€˜myprogâ€™.
  
       The important thing to keep in mind is that to enable link-time
       optimizations you need to use the GCC driver to perform the link
       step.  GCC automatically performs link-time optimization if any of
!      the objects involved were compiled with the â€˜-fltoâ€™ command-line
       option.  You can always override the automatic decision to do
!      link-time optimization by passing â€˜-fno-ltoâ€™ to the link command.
  
       To make whole program optimization effective, it is necessary to
       make certain whole program assumptions.  The compiler needs to know
       what functions and variables can be accessed by libraries and
       runtime outside of the link-time optimized unit.  When supported by
!      the linker, the linker plugin (see â€˜-fuse-linker-pluginâ€™) passes
       information to the compiler about used and externally visible
       symbols.  When the linker plugin is not available,
!      â€˜-fwhole-programâ€™ should be used to allow the compiler to make
       these assumptions, which leads to more aggressive optimization
       decisions.
  
!      When a file is compiled with â€˜-fltoâ€™ without â€˜-fuse-linker-pluginâ€™,
       the generated object file is larger than a regular object file
       because it contains GIMPLE bytecodes and the usual final code (see
!      â€˜-ffat-lto-objectsâ€™).  This means that object files with LTO
!      information can be linked as normal object files; if â€˜-fno-ltoâ€™ is
       passed to the linker, no interprocedural optimizations are applied.
!      Note that when â€˜-fno-fat-lto-objectsâ€™ is enabled the compile stage
       is faster but you cannot perform a regular, non-LTO link on them.
  
       When producing the final binary, GCC only applies link-time
*************** optimizations to be performed is desired
*** 13518,13524 ****
       link-time options from the settings used to compile the input
       files.
  
!      If you do not specify an optimization level option '-O' at link
       time, then GCC uses the highest optimization level used when
       compiling the object files.  Note that it is generally ineffective
       to specify an optimization level option only at link time and not
--- 13522,13528 ----
       link-time options from the settings used to compile the input
       files.
  
!      If you do not specify an optimization level option â€˜-Oâ€™ at link
       time, then GCC uses the highest optimization level used when
       compiling the object files.  Note that it is generally ineffective
       to specify an optimization level option only at link time and not
*************** optimizations to be performed is desired
*** 13532,13541 ****
       generating bytecodes, as they need to be used during the final
       link.  Currently, the following options and their settings are
       taken from the first object file that explicitly specifies them:
!      '-fcommon', '-fexceptions', '-fnon-call-exceptions', '-fgnu-tm' and
!      all the '-m' target flags.
  
!      The following options '-fPIC', '-fpic', '-fpie' and '-fPIE' are
       combined based on the following scheme:
  
            -fPIC + -fpic = -fpic
--- 13536,13545 ----
       generating bytecodes, as they need to be used during the final
       link.  Currently, the following options and their settings are
       taken from the first object file that explicitly specifies them:
!      â€˜-fcommonâ€™, â€˜-fexceptionsâ€™, â€˜-fnon-call-exceptionsâ€™, â€˜-fgnu-tmâ€™ and
!      all the â€˜-mâ€™ target flags.
  
!      The following options â€˜-fPICâ€™, â€˜-fpicâ€™, â€˜-fpieâ€™ and â€˜-fPIEâ€™ are
       combined based on the following scheme:
  
            -fPIC + -fpic = -fpic
*************** optimizations to be performed is desired
*** 13548,13564 ****
       Certain ABI-changing flags are required to match in all compilation
       units, and trying to override this at link time with a conflicting
       value is ignored.  This includes options such as
!      '-freg-struct-return' and '-fpcc-struct-return'.
  
!      Other options such as '-ffp-contract', '-fno-strict-overflow',
!      '-fwrapv', '-fno-trapv' or '-fno-strict-aliasing' are passed
       through to the link stage and merged conservatively for conflicting
!      translation units.  Specifically '-fno-strict-overflow', '-fwrapv'
!      and '-fno-trapv' take precedence; and for example
!      '-ffp-contract=off' takes precedence over '-ffp-contract=fast'.
       You can override them at link time.
  
!      Diagnostic options such as '-Wstringop-overflow' are passed through
       to the link stage and their setting matches that of the
       compile-step at function granularity.  Note that this matters only
       for diagnostics emitted during optimization.  Note that code
--- 13552,13568 ----
       Certain ABI-changing flags are required to match in all compilation
       units, and trying to override this at link time with a conflicting
       value is ignored.  This includes options such as
!      â€˜-freg-struct-returnâ€™ and â€˜-fpcc-struct-returnâ€™.
  
!      Other options such as â€˜-ffp-contractâ€™, â€˜-fno-strict-overflowâ€™,
!      â€˜-fwrapvâ€™, â€˜-fno-trapvâ€™ or â€˜-fno-strict-aliasingâ€™ are passed
       through to the link stage and merged conservatively for conflicting
!      translation units.  Specifically â€˜-fno-strict-overflowâ€™, â€˜-fwrapvâ€™
!      and â€˜-fno-trapvâ€™ take precedence; and for example
!      â€˜-ffp-contract=offâ€™ takes precedence over â€˜-ffp-contract=fastâ€™.
       You can override them at link time.
  
!      Diagnostic options such as â€˜-Wstringop-overflowâ€™ are passed through
       to the link stage and their setting matches that of the
       compile-step at function granularity.  Note that this matters only
       for diagnostics emitted during optimization.  Note that code
*************** optimizations to be performed is desired
*** 13566,13582 ****
       disabled for regions if code not consistent with the setting at
       compile time.
  
!      When you need to pass options to the assembler via '-Wa' or
!      '-Xassembler' make sure to either compile such translation units
!      with '-fno-lto' or consistently use the same assembler options on
       all translation units.  You can alternatively also specify
       assembler options at LTO link time.
  
!      To enable debug info generation you need to supply '-g' at compile
       time.  If any of the input files at link time were built with debug
       info generation enabled the link will enable debug info generation
       as well.  Any elaborate debug info settings like the dwarf level
!      '-gdwarf-5' need to be explicitly repeated at the linker command
       line and mixing different settings in different translation units
       is discouraged.
  
--- 13570,13586 ----
       disabled for regions if code not consistent with the setting at
       compile time.
  
!      When you need to pass options to the assembler via â€˜-Waâ€™ or
!      â€˜-Xassemblerâ€™ make sure to either compile such translation units
!      with â€˜-fno-ltoâ€™ or consistently use the same assembler options on
       all translation units.  You can alternatively also specify
       assembler options at LTO link time.
  
!      To enable debug info generation you need to supply â€˜-gâ€™ at compile
       time.  If any of the input files at link time were built with debug
       info generation enabled the link will enable debug info generation
       as well.  Any elaborate debug info settings like the dwarf level
!      â€˜-gdwarf-5â€™ need to be explicitly repeated at the linker command
       line and mixing different settings in different translation units
       is discouraged.
  
*************** optimizations to be performed is desired
*** 13595,13637 ****
            gfortran -c -flto baz.f90
            g++ -o myprog -flto -O3 foo.o bar.o baz.o -lgfortran
  
!      Notice that the final link is done with 'g++' to get the C++
!      runtime libraries and '-lgfortran' is added to get the Fortran
       runtime libraries.  In general, when mixing languages in LTO mode,
       you should use the same link command options as when mixing
       languages in a regular (non-LTO) compilation.
  
       If object files containing GIMPLE bytecode are stored in a library
!      archive, say 'libfoo.a', it is possible to extract and use them in
       an LTO link if you are using a linker with plugin support.  To
!      create static libraries suitable for LTO, use 'gcc-ar' and
!      'gcc-ranlib' instead of 'ar' and 'ranlib'; to show the symbols of
!      object files with GIMPLE bytecode, use 'gcc-nm'.  Those commands
!      require that 'ar', 'ranlib' and 'nm' have been compiled with plugin
!      support.  At link time, use the flag '-fuse-linker-plugin' to
       ensure that the library participates in the LTO optimization
       process:
  
            gcc -o myprog -O2 -flto -fuse-linker-plugin a.o b.o -lfoo
  
       With the linker plugin enabled, the linker extracts the needed
!      GIMPLE files from 'libfoo.a' and passes them on to the running GCC
       to make them part of the aggregated GIMPLE image to be optimized.
  
       If you are not using a linker with plugin support and/or do not
!      enable the linker plugin, then the objects inside 'libfoo.a' are
       extracted and linked as usual, but they do not participate in the
       LTO optimization process.  In order to make a static library
       suitable for both LTO optimization and usual linkage, compile its
!      object files with '-flto' '-ffat-lto-objects'.
  
       Link-time optimizations do not require the presence of the whole
       program to operate.  If the program does not require any symbols to
!      be exported, it is possible to combine '-flto' and
!      '-fwhole-program' to allow the interprocedural optimizers to use
       more aggressive assumptions which may lead to improved optimization
!      opportunities.  Use of '-fwhole-program' is not needed when linker
!      plugin is active (see '-fuse-linker-plugin').
  
       The current implementation of LTO makes no attempt to generate
       bytecode that is portable between different types of hosts.  The
--- 13599,13641 ----
            gfortran -c -flto baz.f90
            g++ -o myprog -flto -O3 foo.o bar.o baz.o -lgfortran
  
!      Notice that the final link is done with â€˜g++â€™ to get the C++
!      runtime libraries and â€˜-lgfortranâ€™ is added to get the Fortran
       runtime libraries.  In general, when mixing languages in LTO mode,
       you should use the same link command options as when mixing
       languages in a regular (non-LTO) compilation.
  
       If object files containing GIMPLE bytecode are stored in a library
!      archive, say â€˜libfoo.aâ€™, it is possible to extract and use them in
       an LTO link if you are using a linker with plugin support.  To
!      create static libraries suitable for LTO, use â€˜gcc-arâ€™ and
!      â€˜gcc-ranlibâ€™ instead of â€˜arâ€™ and â€˜ranlibâ€™; to show the symbols of
!      object files with GIMPLE bytecode, use â€˜gcc-nmâ€™.  Those commands
!      require that â€˜arâ€™, â€˜ranlibâ€™ and â€˜nmâ€™ have been compiled with plugin
!      support.  At link time, use the flag â€˜-fuse-linker-pluginâ€™ to
       ensure that the library participates in the LTO optimization
       process:
  
            gcc -o myprog -O2 -flto -fuse-linker-plugin a.o b.o -lfoo
  
       With the linker plugin enabled, the linker extracts the needed
!      GIMPLE files from â€˜libfoo.aâ€™ and passes them on to the running GCC
       to make them part of the aggregated GIMPLE image to be optimized.
  
       If you are not using a linker with plugin support and/or do not
!      enable the linker plugin, then the objects inside â€˜libfoo.aâ€™ are
       extracted and linked as usual, but they do not participate in the
       LTO optimization process.  In order to make a static library
       suitable for both LTO optimization and usual linkage, compile its
!      object files with â€˜-fltoâ€™ â€˜-ffat-lto-objectsâ€™.
  
       Link-time optimizations do not require the presence of the whole
       program to operate.  If the program does not require any symbols to
!      be exported, it is possible to combine â€˜-fltoâ€™ and
!      â€˜-fwhole-programâ€™ to allow the interprocedural optimizers to use
       more aggressive assumptions which may lead to improved optimization
!      opportunities.  Use of â€˜-fwhole-programâ€™ is not needed when linker
!      plugin is active (see â€˜-fuse-linker-pluginâ€™).
  
       The current implementation of LTO makes no attempt to generate
       bytecode that is portable between different types of hosts.  The
*************** optimizations to be performed is desired
*** 13645,13701 ****
  
       If you specify the optional N, the optimization and code generation
       done at link time is executed in parallel using N parallel jobs by
!      utilizing an installed 'make' program.  The environment variable
!      'MAKE' may be used to override the program used.
  
!      You can also specify '-flto=jobserver' to use GNU make's job server
       mode to determine the number of parallel jobs.  This is useful when
       the Makefile calling GCC is already executing in parallel.  You
!      must prepend a '+' to the command recipe in the parent Makefile for
!      this to work.  This option likely only works if 'MAKE' is GNU make.
       Even without the option value, GCC tries to automatically detect a
       running GNU make's job server.
  
!      Use '-flto=auto' to use GNU make's job server, if available, or
       otherwise fall back to autodetection of the number of CPU threads
       present in your system.
  
! '-flto-partition=ALG'
       Specify the partitioning algorithm used by the link-time optimizer.
!      The value is either '1to1' to specify a partitioning mirroring the
!      original source files or 'balanced' to specify partitioning into
!      equally sized chunks (whenever possible) or 'max' to create new
!      partition for every symbol where possible or 'cache' to balance
       chunk sizes while keeping related symbols together for better
!      caching in incremental LTO. Specifying 'none' as an algorithm
       disables partitioning and streaming completely.  The default value
!      is 'balanced'.  While '1to1' can be used as an workaround for
!      various code ordering issues, the 'max' partitioning is intended
!      for internal testing only.  The value 'one' specifies that exactly
!      one partition should be used while the value 'none' bypasses
       partitioning and executes the link-time optimization step directly
       from the WPA phase.
  
! '-flto-incremental=PATH'
       Enable incremental LTO, with its cache in given existing directory.
       Can significantly shorten edit-compile cycles with LTO.
  
!      When used with LTO ('-flto'), the output of translation units
       inside LTO is cached.  Cached translation units are likely to be
       encountered again when recompiling with small code changes, leading
       to recompile time reduction.
  
       Multiple GCC instances can use the same cache in parallel.
  
! '-flto-incremental-cache-size=N'
       Specifies number of cache entries in incremental LTO after which to
       prune old entries.  This is a soft limit, temporarily there may be
       more entries.
  
! '-flto-compression-level=N'
       This option specifies the level of compression used for
       intermediate language written to LTO object files, and is only
!      meaningful in conjunction with LTO mode ('-flto').  GCC currently
       supports two LTO compression algorithms.  For zstd, valid values
       are 0 (no compression) to 19 (maximum compression), while zlib
       supports values from 0 to 9.  Values outside this range are clamped
--- 13649,13705 ----
  
       If you specify the optional N, the optimization and code generation
       done at link time is executed in parallel using N parallel jobs by
!      utilizing an installed â€˜makeâ€™ program.  The environment variable
!      â€˜MAKEâ€™ may be used to override the program used.
  
!      You can also specify â€˜-flto=jobserverâ€™ to use GNU make's job server
       mode to determine the number of parallel jobs.  This is useful when
       the Makefile calling GCC is already executing in parallel.  You
!      must prepend a â€˜+â€™ to the command recipe in the parent Makefile for
!      this to work.  This option likely only works if â€˜MAKEâ€™ is GNU make.
       Even without the option value, GCC tries to automatically detect a
       running GNU make's job server.
  
!      Use â€˜-flto=autoâ€™ to use GNU make's job server, if available, or
       otherwise fall back to autodetection of the number of CPU threads
       present in your system.
  
! â€˜-flto-partition=ALGâ€™
       Specify the partitioning algorithm used by the link-time optimizer.
!      The value is either â€˜1to1â€™ to specify a partitioning mirroring the
!      original source files or â€˜balancedâ€™ to specify partitioning into
!      equally sized chunks (whenever possible) or â€˜maxâ€™ to create new
!      partition for every symbol where possible or â€˜cacheâ€™ to balance
       chunk sizes while keeping related symbols together for better
!      caching in incremental LTO. Specifying â€˜noneâ€™ as an algorithm
       disables partitioning and streaming completely.  The default value
!      is â€˜balancedâ€™.  While â€˜1to1â€™ can be used as an workaround for
!      various code ordering issues, the â€˜maxâ€™ partitioning is intended
!      for internal testing only.  The value â€˜oneâ€™ specifies that exactly
!      one partition should be used while the value â€˜noneâ€™ bypasses
       partitioning and executes the link-time optimization step directly
       from the WPA phase.
  
! â€˜-flto-incremental=PATHâ€™
       Enable incremental LTO, with its cache in given existing directory.
       Can significantly shorten edit-compile cycles with LTO.
  
!      When used with LTO (â€˜-fltoâ€™), the output of translation units
       inside LTO is cached.  Cached translation units are likely to be
       encountered again when recompiling with small code changes, leading
       to recompile time reduction.
  
       Multiple GCC instances can use the same cache in parallel.
  
! â€˜-flto-incremental-cache-size=Nâ€™
       Specifies number of cache entries in incremental LTO after which to
       prune old entries.  This is a soft limit, temporarily there may be
       more entries.
  
! â€˜-flto-compression-level=Nâ€™
       This option specifies the level of compression used for
       intermediate language written to LTO object files, and is only
!      meaningful in conjunction with LTO mode (â€˜-fltoâ€™).  GCC currently
       supports two LTO compression algorithms.  For zstd, valid values
       are 0 (no compression) to 19 (maximum compression), while zlib
       supports values from 0 to 9.  Values outside this range are clamped
*************** optimizations to be performed is desired
*** 13703,13709 ****
       option is not given, a default balanced compression setting is
       used.
  
! '-fuse-linker-plugin'
       Enables the use of a linker plugin during link-time optimization.
       This option relies on plugin support in the linker, which is
       available in gold or in GNU ld 2.21 or newer.
--- 13707,13713 ----
       option is not given, a default balanced compression setting is
       used.
  
! â€˜-fuse-linker-pluginâ€™
       Enables the use of a linker plugin during link-time optimization.
       This option relies on plugin support in the linker, which is
       available in gold or in GNU ld 2.21 or newer.
*************** optimizations to be performed is desired
*** 13714,13750 ****
       This information specifies what symbols can be accessed externally
       (by non-LTO object or during dynamic linking).  Resulting code
       quality improvements on binaries (and shared libraries that use
!      hidden visibility) are similar to '-fwhole-program'.  See '-flto'
       for a description of the effect of this flag and how to use it.
  
       This option is enabled by default when LTO support in GCC is
       enabled and GCC was configured for use with a linker supporting
       plugins (GNU ld 2.21 or newer or gold).
  
! '-ffat-lto-objects'
       Fat LTO objects are object files that contain both the intermediate
       language and the object code.  This makes them usable for both LTO
       linking and normal linking.  This option is effective only when
!      compiling with '-flto' and is ignored at link time.
  
!      '-fno-fat-lto-objects' improves compilation time over plain LTO,
       but requires the complete toolchain to be aware of LTO. It requires
       a linker with linker plugin support for basic functionality.
!      Additionally, 'nm', 'ar' and 'ranlib' need to support linker
       plugins to allow a full-featured build environment (capable of
!      building static libraries etc).  GCC provides the 'gcc-ar',
!      'gcc-nm', 'gcc-ranlib' wrappers to pass the right options to these
       tools.  With non fat LTO makefiles need to be modified to use them.
  
       Note that modern binutils provide plugin auto-load mechanism.
!      Installing the linker plugin into '$libdir/bfd-plugins' has the
!      same effect as usage of the command wrappers ('gcc-ar', 'gcc-nm'
!      and 'gcc-ranlib').
  
!      The default is '-fno-fat-lto-objects' on targets with linker plugin
       support.
  
! '-fcompare-elim'
       After register allocation and post-register allocation instruction
       splitting, identify arithmetic instructions that compute processor
       flags similar to a comparison operation based on that arithmetic.
--- 13718,13754 ----
       This information specifies what symbols can be accessed externally
       (by non-LTO object or during dynamic linking).  Resulting code
       quality improvements on binaries (and shared libraries that use
!      hidden visibility) are similar to â€˜-fwhole-programâ€™.  See â€˜-fltoâ€™
       for a description of the effect of this flag and how to use it.
  
       This option is enabled by default when LTO support in GCC is
       enabled and GCC was configured for use with a linker supporting
       plugins (GNU ld 2.21 or newer or gold).
  
! â€˜-ffat-lto-objectsâ€™
       Fat LTO objects are object files that contain both the intermediate
       language and the object code.  This makes them usable for both LTO
       linking and normal linking.  This option is effective only when
!      compiling with â€˜-fltoâ€™ and is ignored at link time.
  
!      â€˜-fno-fat-lto-objectsâ€™ improves compilation time over plain LTO,
       but requires the complete toolchain to be aware of LTO. It requires
       a linker with linker plugin support for basic functionality.
!      Additionally, â€˜nmâ€™, â€˜arâ€™ and â€˜ranlibâ€™ need to support linker
       plugins to allow a full-featured build environment (capable of
!      building static libraries etc).  GCC provides the â€˜gcc-arâ€™,
!      â€˜gcc-nmâ€™, â€˜gcc-ranlibâ€™ wrappers to pass the right options to these
       tools.  With non fat LTO makefiles need to be modified to use them.
  
       Note that modern binutils provide plugin auto-load mechanism.
!      Installing the linker plugin into â€˜$libdir/bfd-pluginsâ€™ has the
!      same effect as usage of the command wrappers (â€˜gcc-arâ€™, â€˜gcc-nmâ€™
!      and â€˜gcc-ranlibâ€™).
  
!      The default is â€˜-fno-fat-lto-objectsâ€™ on targets with linker plugin
       support.
  
! â€˜-fcompare-elimâ€™
       After register allocation and post-register allocation instruction
       splitting, identify arithmetic instructions that compute processor
       flags similar to a comparison operation based on that arithmetic.
*************** optimizations to be performed is desired
*** 13754,13799 ****
       represent the comparison operation before register allocation is
       complete.
  
!      Enabled at levels '-O1', '-O2', '-O3', '-Os'.
  
! '-ffold-mem-offsets'
! '-fno-fold-mem-offsets'
       Try to eliminate add instructions by folding them in memory
       loads/stores.
  
!      Enabled at levels '-O2', '-O3'.
  
! '-fcprop-registers'
       After register allocation and post-register allocation instruction
       splitting, perform a copy-propagation pass to try to reduce
       scheduling dependencies and occasionally eliminate the copy.
  
!      Enabled at levels '-O1', '-O2', '-O3', '-Os'.
  
! '-fprofile-correction'
       Profiles collected using an instrumented binary for multi-threaded
       programs may be inconsistent due to missed counter updates.  When
       this option is specified, GCC uses heuristics to correct or smooth
       out such inconsistencies.  By default, GCC emits an error message
       when an inconsistent profile is detected.
  
!      This option is enabled by '-fauto-profile'.
  
! '-fprofile-partial-training'
!      With '-fprofile-use' all portions of programs not executed during
       train run are optimized aggressively for size rather than speed.
       In some cases it is not practical to train all possible hot paths
       in the program.  (For example, program may contain functions
       specific for a given hardware and training may not cover all
       hardware configurations program is run on.)  With
!      '-fprofile-partial-training' profile feedback is ignored for all
       functions not executed during the train run, leading them to be
       optimized as if they were compiled without profile feedback.  This
       leads to better performance when train run is not representative
       but also leads to significantly bigger code.
  
! '-fprofile-use'
! '-fprofile-use=PATH'
       Enable profile feedback-directed optimizations, and the following
       optimizations, many of which are generally profitable only with
       profile feedback available:
--- 13758,13803 ----
       represent the comparison operation before register allocation is
       complete.
  
!      Enabled at levels â€˜-O1â€™, â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-ffold-mem-offsetsâ€™
! â€˜-fno-fold-mem-offsetsâ€™
       Try to eliminate add instructions by folding them in memory
       loads/stores.
  
!      Enabled at levels â€˜-O2â€™, â€˜-O3â€™.
  
! â€˜-fcprop-registersâ€™
       After register allocation and post-register allocation instruction
       splitting, perform a copy-propagation pass to try to reduce
       scheduling dependencies and occasionally eliminate the copy.
  
!      Enabled at levels â€˜-O1â€™, â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-fprofile-correctionâ€™
       Profiles collected using an instrumented binary for multi-threaded
       programs may be inconsistent due to missed counter updates.  When
       this option is specified, GCC uses heuristics to correct or smooth
       out such inconsistencies.  By default, GCC emits an error message
       when an inconsistent profile is detected.
  
!      This option is enabled by â€˜-fauto-profileâ€™.
  
! â€˜-fprofile-partial-trainingâ€™
!      With â€˜-fprofile-useâ€™ all portions of programs not executed during
       train run are optimized aggressively for size rather than speed.
       In some cases it is not practical to train all possible hot paths
       in the program.  (For example, program may contain functions
       specific for a given hardware and training may not cover all
       hardware configurations program is run on.)  With
!      â€˜-fprofile-partial-trainingâ€™ profile feedback is ignored for all
       functions not executed during the train run, leading them to be
       optimized as if they were compiled without profile feedback.  This
       leads to better performance when train run is not representative
       but also leads to significantly bigger code.
  
! â€˜-fprofile-useâ€™
! â€˜-fprofile-use=PATHâ€™
       Enable profile feedback-directed optimizations, and the following
       optimizations, many of which are generally profitable only with
       profile feedback available:
*************** optimizations to be performed is desired
*** 13808,13827 ****
  
       Before you can use this option, you must first generate profiling
       information.  *Note Instrumentation Options::, for information
!      about the '-fprofile-generate' option.
  
       By default, GCC emits an error message if the feedback profiles do
       not match the source code.  This error can be turned into a warning
!      by using '-Wno-error=coverage-mismatch'.  Note this may result in
       poorly optimized code.  Additionally, by default, GCC also emits a
       warning message if the feedback profiles do not exist (see
!      '-Wmissing-profile').
  
       If PATH is specified, GCC looks at the PATH to find the profile
!      feedback data files.  See '-fprofile-dir'.
  
! '-fauto-profile'
! '-fauto-profile=PATH'
       Enable sampling-based feedback-directed optimizations, and the
       following optimizations, many of which are generally profitable
       only with profile feedback available:
--- 13812,13831 ----
  
       Before you can use this option, you must first generate profiling
       information.  *Note Instrumentation Options::, for information
!      about the â€˜-fprofile-generateâ€™ option.
  
       By default, GCC emits an error message if the feedback profiles do
       not match the source code.  This error can be turned into a warning
!      by using â€˜-Wno-error=coverage-mismatchâ€™.  Note this may result in
       poorly optimized code.  Additionally, by default, GCC also emits a
       warning message if the feedback profiles do not exist (see
!      â€˜-Wmissing-profileâ€™).
  
       If PATH is specified, GCC looks at the PATH to find the profile
!      feedback data files.  See â€˜-fprofile-dirâ€™.
  
! â€˜-fauto-profileâ€™
! â€˜-fauto-profile=PATHâ€™
       Enable sampling-based feedback-directed optimizations, and the
       following optimizations, many of which are generally profitable
       only with profile feedback available:
*************** optimizations to be performed is desired
*** 13835,13851 ****
            -fprofile-correction
  
       PATH is the name of a file containing AutoFDO profile information.
!      If omitted, it defaults to 'fbdata.afdo' in the current directory.
  
       Producing an AutoFDO profile data file requires running your
!      program with the 'perf' utility on a supported GNU/Linux target
       system.  For more information, see <https://perf.wiki.kernel.org/>.
  
       E.g.
            perf record -e br_inst_retired:near_taken -b -o perf.data \
                -- your_program
  
!      Then use the 'create_gcov' tool to convert the raw profile data to
       a format that can be used by GCC.  You must also supply the
       unstripped binary for your program to this tool.  See
       <https://github.com/google/autofdo>.
--- 13839,13855 ----
            -fprofile-correction
  
       PATH is the name of a file containing AutoFDO profile information.
!      If omitted, it defaults to â€˜fbdata.afdoâ€™ in the current directory.
  
       Producing an AutoFDO profile data file requires running your
!      program with the â€˜perfâ€™ utility on a supported GNU/Linux target
       system.  For more information, see <https://perf.wiki.kernel.org/>.
  
       E.g.
            perf record -e br_inst_retired:near_taken -b -o perf.data \
                -- your_program
  
!      Then use the â€˜create_gcovâ€™ tool to convert the raw profile data to
       a format that can be used by GCC.  You must also supply the
       unstripped binary for your program to this tool.  See
       <https://github.com/google/autofdo>.
*************** optimizations to be performed is desired
*** 13858,13864 ****
  floating-point arithmetic.  These options trade off between speed and
  correctness.  All must be specifically enabled.
  
! '-fexcess-precision=STYLE'
       This option allows control over excess precision on machines where
       floating-point operations occur in a format with more precision or
       range than the IEEE standard and interchange floating-point types.
--- 13862,13868 ----
  floating-point arithmetic.  These options trade off between speed and
  correctness.  All must be specifically enabled.
  
! â€˜-fexcess-precision=STYLEâ€™
       This option allows control over excess precision on machines where
       floating-point operations occur in a format with more precision or
       range than the IEEE standard and interchange floating-point types.
*************** correctness.  All must be specifically e
*** 13868,13939 ****
       is harmless, but some programs may rely on the requirements of the
       C or C++ language standards for handling IEEE values.
  
!      By default, '-fexcess-precision=fast' is in effect; this means that
       operations may be carried out in a wider precision than the types
       specified in the source if that would result in faster code, and it
       is unpredictable when rounding to the types specified in the source
       code takes place.  When compiling C or C++, if
!      '-fexcess-precision=standard' is specified then excess precision
       follows the rules specified in ISO C99 or C++; in particular, both
       casts and assignments cause values to be rounded to their semantic
!      types (whereas '-ffloat-store' only affects assignments).  This
       option is enabled by default for C or C++ if a strict conformance
!      option such as '-std=c99' or '-std=c++17' is used.  '-ffast-math'
!      enables '-fexcess-precision=fast' by default regardless of whether
!      a strict conformance option is used.  If '-fexcess-precision=16' is
       specified, constants and the results of expressions with types
!      '_Float16' and '__bf16' are computed without excess precision.
  
!      '-fexcess-precision=standard' is not implemented for languages
       other than C or C++.  On the x86, it has no effect if
!      '-mfpmath=sse' or '-mfpmath=sse+387' is specified; in the former
       case, IEEE semantics apply without excess precision, and in the
       latter, rounding is unpredictable.
  
! '-ffloat-store'
       Do not store floating-point variables in registers, and inhibit
       other options that might change whether a floating-point value is
       taken from a register or memory.  This option has generally been
!      subsumed by '-fexcess-precision=standard', which is more general.
!      If you do use '-ffloat-store', you may need to modify your program
       to explicitly store intermediate computations in temporary
!      variables since '-ffloat-store' handles rounding to IEEE format
!      only on assignments and not casts as '-fexcess-precision=standard'
       does.
  
! '-ffast-math'
!      Sets the options '-fno-math-errno', '-funsafe-math-optimizations',
!      '-ffinite-math-only', '-fno-rounding-math', '-fno-signaling-nans',
!      '-fcx-limited-range' and '-fexcess-precision=fast'.
  
!      This option causes the preprocessor macro '__FAST_MATH__' to be
       defined.
  
!      This option is not turned on by any '-O' option besides '-Ofast'
       since it can result in incorrect output for programs that depend on
       an exact implementation of IEEE or ISO rules/specifications for
       math functions.  It may, however, yield faster code for programs
       that do not require the guarantees of these specifications.
  
! '-fno-math-errno'
!      Do not set 'errno' after calling math functions that are executed
!      with a single instruction, e.g., 'sqrt'.  A program that relies on
       IEEE exceptions for math error handling may want to use this flag
       for speed while maintaining IEEE arithmetic compatibility.
  
!      This option is not turned on by any '-O' option besides '-Ofast'
       since it can result in incorrect output for programs that depend on
       an exact implementation of IEEE or ISO rules/specifications for
       math functions.  It may, however, yield faster code for programs
       that do not require the guarantees of these specifications.
  
!      The default is '-fmath-errno'.
  
!      On Darwin systems, the math library never sets 'errno'.  There is
       therefore no reason for the compiler to consider the possibility
!      that it might, and '-fno-math-errno' is the default.
  
! '-funsafe-math-optimizations'
  
       Allow optimizations for floating-point arithmetic that (a) assume
       that arguments and results are valid and (b) may violate IEEE or
--- 13872,13943 ----
       is harmless, but some programs may rely on the requirements of the
       C or C++ language standards for handling IEEE values.
  
!      By default, â€˜-fexcess-precision=fastâ€™ is in effect; this means that
       operations may be carried out in a wider precision than the types
       specified in the source if that would result in faster code, and it
       is unpredictable when rounding to the types specified in the source
       code takes place.  When compiling C or C++, if
!      â€˜-fexcess-precision=standardâ€™ is specified then excess precision
       follows the rules specified in ISO C99 or C++; in particular, both
       casts and assignments cause values to be rounded to their semantic
!      types (whereas â€˜-ffloat-storeâ€™ only affects assignments).  This
       option is enabled by default for C or C++ if a strict conformance
!      option such as â€˜-std=c99â€™ or â€˜-std=c++17â€™ is used.  â€˜-ffast-mathâ€™
!      enables â€˜-fexcess-precision=fastâ€™ by default regardless of whether
!      a strict conformance option is used.  If â€˜-fexcess-precision=16â€™ is
       specified, constants and the results of expressions with types
!      â€˜_Float16â€™ and â€˜__bf16â€™ are computed without excess precision.
  
!      â€˜-fexcess-precision=standardâ€™ is not implemented for languages
       other than C or C++.  On the x86, it has no effect if
!      â€˜-mfpmath=sseâ€™ or â€˜-mfpmath=sse+387â€™ is specified; in the former
       case, IEEE semantics apply without excess precision, and in the
       latter, rounding is unpredictable.
  
! â€˜-ffloat-storeâ€™
       Do not store floating-point variables in registers, and inhibit
       other options that might change whether a floating-point value is
       taken from a register or memory.  This option has generally been
!      subsumed by â€˜-fexcess-precision=standardâ€™, which is more general.
!      If you do use â€˜-ffloat-storeâ€™, you may need to modify your program
       to explicitly store intermediate computations in temporary
!      variables since â€˜-ffloat-storeâ€™ handles rounding to IEEE format
!      only on assignments and not casts as â€˜-fexcess-precision=standardâ€™
       does.
  
! â€˜-ffast-mathâ€™
!      Sets the options â€˜-fno-math-errnoâ€™, â€˜-funsafe-math-optimizationsâ€™,
!      â€˜-ffinite-math-onlyâ€™, â€˜-fno-rounding-mathâ€™, â€˜-fno-signaling-nansâ€™,
!      â€˜-fcx-limited-rangeâ€™ and â€˜-fexcess-precision=fastâ€™.
  
!      This option causes the preprocessor macro â€˜__FAST_MATH__â€™ to be
       defined.
  
!      This option is not turned on by any â€˜-Oâ€™ option besides â€˜-Ofastâ€™
       since it can result in incorrect output for programs that depend on
       an exact implementation of IEEE or ISO rules/specifications for
       math functions.  It may, however, yield faster code for programs
       that do not require the guarantees of these specifications.
  
! â€˜-fno-math-errnoâ€™
!      Do not set â€˜errnoâ€™ after calling math functions that are executed
!      with a single instruction, e.g., â€˜sqrtâ€™.  A program that relies on
       IEEE exceptions for math error handling may want to use this flag
       for speed while maintaining IEEE arithmetic compatibility.
  
!      This option is not turned on by any â€˜-Oâ€™ option besides â€˜-Ofastâ€™
       since it can result in incorrect output for programs that depend on
       an exact implementation of IEEE or ISO rules/specifications for
       math functions.  It may, however, yield faster code for programs
       that do not require the guarantees of these specifications.
  
!      The default is â€˜-fmath-errnoâ€™.
  
!      On Darwin systems, the math library never sets â€˜errnoâ€™.  There is
       therefore no reason for the compiler to consider the possibility
!      that it might, and â€˜-fno-math-errnoâ€™ is the default.
  
! â€˜-funsafe-math-optimizationsâ€™
  
       Allow optimizations for floating-point arithmetic that (a) assume
       that arguments and results are valid and (b) may violate IEEE or
*************** correctness.  All must be specifically e
*** 13941,14026 ****
       or startup files that change the default FPU control word or other
       similar optimizations.
  
!      This option is not turned on by any '-O' option besides '-Ofast'
       since it can result in incorrect output for programs that depend on
       an exact implementation of IEEE or ISO rules/specifications for
       math functions.  It may, however, yield faster code for programs
       that do not require the guarantees of these specifications.
!      Enables '-fno-signed-zeros', '-fno-trapping-math',
!      '-fassociative-math' and '-freciprocal-math'.
  
!      The default is '-fno-unsafe-math-optimizations'.
  
! '-fassociative-math'
  
       Allow re-association of operands in series of floating-point
       operations.  This violates the ISO C and C++ language standard by
       possibly changing computation result.  NOTE: re-ordering may change
       the sign of zero as well as ignore NaNs and inhibit or create
       underflow or overflow (and thus cannot be used on code that relies
!      on rounding behavior like '(x + 2**52) - 2**52'.  May also reorder
       floating-point comparisons and thus may not be used when ordered
       comparisons are required.  This option requires that both
!      '-fno-signed-zeros' and '-fno-trapping-math' be in effect.
!      Moreover, it doesn't make much sense with '-frounding-math'.  For
       Fortran the option is automatically enabled when both
!      '-fno-signed-zeros' and '-fno-trapping-math' are in effect.
  
!      The default is '-fno-associative-math'.
  
! '-freciprocal-math'
  
       Allow the reciprocal of a value to be used instead of dividing by
!      the value if this enables optimizations.  For example 'x / y' can
!      be replaced with 'x * (1/y)', which is useful if '(1/y)' is subject
       to common subexpression elimination.  Note that this loses
       precision and increases the number of flops operating on the value.
  
!      The default is '-fno-reciprocal-math'.
  
! '-ffinite-math-only'
       Allow optimizations for floating-point arithmetic that assume that
       arguments and results are not NaNs or +-Infs.
  
!      This option is not turned on by any '-O' option besides '-Ofast'
       since it can result in incorrect output for programs that depend on
       an exact implementation of IEEE or ISO rules/specifications for
       math functions.  It may, however, yield faster code for programs
       that do not require the guarantees of these specifications.
  
!      The default is '-fno-finite-math-only'.
  
! '-fno-signed-zeros'
       Allow optimizations for floating-point arithmetic that ignore the
       signedness of zero.  IEEE arithmetic specifies the behavior of
!      distinct +0.0 and -0.0 values, which then prohibits simplification
       of expressions such as x+0.0 or 0.0*x (even with
!      '-ffinite-math-only').  This option implies that the sign of a zero
       result isn't significant.
  
!      The default is '-fsigned-zeros'.
  
! '-fno-trapping-math'
       Compile code assuming that floating-point operations cannot
       generate user-visible traps.  These traps include division by zero,
       overflow, underflow, inexact result and invalid operation.  This
!      option requires that '-fno-signaling-nans' be in effect.  Setting
       this option may allow faster code if one relies on "non-stop" IEEE
       arithmetic, for example.
  
!      This option is not turned on by any '-O' option besides '-Ofast'
       since it can result in incorrect output for programs that depend on
       an exact implementation of IEEE or ISO rules/specifications for
       math functions.
  
!      The default is '-ftrapping-math'.
  
       Future versions of GCC may provide finer control of this setting
!      using C99's 'FENV_ACCESS' pragma.  This command-line option will be
!      used along with '-frounding-math' to specify the default state for
!      'FENV_ACCESS'.
  
! '-frounding-math'
       Disable transformations and optimizations that assume default
       floating-point rounding behavior (round-to-nearest).  This option
       should be specified for programs that change the FP rounding mode
--- 13945,14030 ----
       or startup files that change the default FPU control word or other
       similar optimizations.
  
!      This option is not turned on by any â€˜-Oâ€™ option besides â€˜-Ofastâ€™
       since it can result in incorrect output for programs that depend on
       an exact implementation of IEEE or ISO rules/specifications for
       math functions.  It may, however, yield faster code for programs
       that do not require the guarantees of these specifications.
!      Enables â€˜-fno-signed-zerosâ€™, â€˜-fno-trapping-mathâ€™,
!      â€˜-fassociative-mathâ€™ and â€˜-freciprocal-mathâ€™.
  
!      The default is â€˜-fno-unsafe-math-optimizationsâ€™.
  
! â€˜-fassociative-mathâ€™
  
       Allow re-association of operands in series of floating-point
       operations.  This violates the ISO C and C++ language standard by
       possibly changing computation result.  NOTE: re-ordering may change
       the sign of zero as well as ignore NaNs and inhibit or create
       underflow or overflow (and thus cannot be used on code that relies
!      on rounding behavior like â€˜(x + 2**52) - 2**52â€™.  May also reorder
       floating-point comparisons and thus may not be used when ordered
       comparisons are required.  This option requires that both
!      â€˜-fno-signed-zerosâ€™ and â€˜-fno-trapping-mathâ€™ be in effect.
!      Moreover, it doesn't make much sense with â€˜-frounding-mathâ€™.  For
       Fortran the option is automatically enabled when both
!      â€˜-fno-signed-zerosâ€™ and â€˜-fno-trapping-mathâ€™ are in effect.
  
!      The default is â€˜-fno-associative-mathâ€™.
  
! â€˜-freciprocal-mathâ€™
  
       Allow the reciprocal of a value to be used instead of dividing by
!      the value if this enables optimizations.  For example â€˜x / yâ€™ can
!      be replaced with â€˜x * (1/y)â€™, which is useful if â€˜(1/y)â€™ is subject
       to common subexpression elimination.  Note that this loses
       precision and increases the number of flops operating on the value.
  
!      The default is â€˜-fno-reciprocal-mathâ€™.
  
! â€˜-ffinite-math-onlyâ€™
       Allow optimizations for floating-point arithmetic that assume that
       arguments and results are not NaNs or +-Infs.
  
!      This option is not turned on by any â€˜-Oâ€™ option besides â€˜-Ofastâ€™
       since it can result in incorrect output for programs that depend on
       an exact implementation of IEEE or ISO rules/specifications for
       math functions.  It may, however, yield faster code for programs
       that do not require the guarantees of these specifications.
  
!      The default is â€˜-fno-finite-math-onlyâ€™.
  
! â€˜-fno-signed-zerosâ€™
       Allow optimizations for floating-point arithmetic that ignore the
       signedness of zero.  IEEE arithmetic specifies the behavior of
!      distinct +0.0 and âˆ’0.0 values, which then prohibits simplification
       of expressions such as x+0.0 or 0.0*x (even with
!      â€˜-ffinite-math-onlyâ€™).  This option implies that the sign of a zero
       result isn't significant.
  
!      The default is â€˜-fsigned-zerosâ€™.
  
! â€˜-fno-trapping-mathâ€™
       Compile code assuming that floating-point operations cannot
       generate user-visible traps.  These traps include division by zero,
       overflow, underflow, inexact result and invalid operation.  This
!      option requires that â€˜-fno-signaling-nansâ€™ be in effect.  Setting
       this option may allow faster code if one relies on "non-stop" IEEE
       arithmetic, for example.
  
!      This option is not turned on by any â€˜-Oâ€™ option besides â€˜-Ofastâ€™
       since it can result in incorrect output for programs that depend on
       an exact implementation of IEEE or ISO rules/specifications for
       math functions.
  
!      The default is â€˜-ftrapping-mathâ€™.
  
       Future versions of GCC may provide finer control of this setting
!      using C99's â€˜FENV_ACCESSâ€™ pragma.  This command-line option will be
!      used along with â€˜-frounding-mathâ€™ to specify the default state for
!      â€˜FENV_ACCESSâ€™.
  
! â€˜-frounding-mathâ€™
       Disable transformations and optimizations that assume default
       floating-point rounding behavior (round-to-nearest).  This option
       should be specified for programs that change the FP rounding mode
*************** correctness.  All must be specifically e
*** 14030,14158 ****
       mode) and arithmetic transformations that are unsafe in the
       presence of sign-dependent rounding modes.
  
!      The default is '-fno-rounding-math'.
  
       This option is experimental and does not currently guarantee to
       disable all GCC optimizations that are affected by rounding mode.
       Future versions of GCC may provide finer control of this setting
!      using C99's 'FENV_ACCESS' pragma.  This command-line option will be
!      used along with '-ftrapping-math' to specify the default state for
!      'FENV_ACCESS'.
  
! '-fsignaling-nans'
       Compile code assuming that IEEE signaling NaNs may generate
       user-visible traps during floating-point operations.  Setting this
       option disables optimizations that may change the number of
       exceptions visible with signaling NaNs.  This option implies
!      '-ftrapping-math'.
  
!      This option causes the preprocessor macro '__SUPPORT_SNAN__' to be
       defined.
  
!      The default is '-fno-signaling-nans'.
  
       This option is experimental and does not currently guarantee to
       disable all GCC optimizations that affect signaling NaN behavior.
  
! '-fno-fp-int-builtin-inexact'
!      Do not allow the built-in functions 'ceil', 'floor', 'round' and
!      'trunc', and their 'float' and 'long double' variants, to generate
       code that raises the "inexact" floating-point exception for
       noninteger arguments.  ISO C99 and C11 allow these functions to
       raise the "inexact" exception, but ISO/IEC TS 18661-1:2014, the C
       bindings to IEEE 754-2008, as integrated into ISO C23, does not
       allow these functions to do so.
  
!      The default is '-ffp-int-builtin-inexact', allowing the exception
       to be raised, unless C23 or a later C standard is selected.  This
!      option does nothing unless '-ftrapping-math' is in effect.
  
!      Even if '-fno-fp-int-builtin-inexact' is used, if the functions
       generate a call to a library function then the "inexact" exception
       may be raised if the library implementation does not follow TS
       18661.
  
! '-fsingle-precision-constant'
       Treat floating-point constants as single precision instead of
       implicitly converting them to double-precision constants.
  
! '-fcx-limited-range'
       When enabled, this option states that a range reduction step is not
       needed when performing complex division.  Also, there is no
       checking whether the result of a complex multiplication or division
!      is 'NaN + I*NaN', with an attempt to rescue the situation in that
!      case.  The default is '-fno-cx-limited-range', but is enabled by
!      '-ffast-math'.
  
       This option controls the default setting of the ISO C99
!      'CX_LIMITED_RANGE' pragma.  Nevertheless, the option applies to all
       languages.
  
! '-fcx-fortran-rules'
       Complex multiplication and division follow Fortran rules.  Range
       reduction is done as part of complex division, but there is no
       checking whether the result of a complex multiplication or division
!      is 'NaN + I*NaN', with an attempt to rescue the situation in that
       case.
  
!      The default is '-fno-cx-fortran-rules'.
  
   The following options control optimizations that may improve
! performance, but are not enabled by any '-O' options.  This section
  includes experimental options that may produce broken code.
  
! '-fbranch-probabilities'
!      After running a program compiled with '-fprofile-arcs' (*note
       Instrumentation Options::), you can compile it a second time using
!      '-fbranch-probabilities', to improve optimizations based on the
       number of times each branch was taken.  When a program compiled
!      with '-fprofile-arcs' exits, it saves arc execution counts to a
!      file called 'SOURCENAME.gcda' for each source file.  The
       information in this data file is very dependent on the structure of
       the generated code, so you must use the same source code and the
       same optimization options for both compilations.  See details about
!      the file naming in '-fprofile-arcs'.
  
!      With '-fbranch-probabilities', GCC puts a 'REG_BR_PROB' note on
!      each 'JUMP_INSN' and 'CALL_INSN'.  These can be used to improve
       optimization.  Currently, they are only used in one place: in
!      'reorg.cc', instead of guessing which path a branch is most likely
!      to take, the 'REG_BR_PROB' values are used to exactly determine
       which path is taken more often.
  
!      Enabled by '-fprofile-use' and '-fauto-profile'.
  
! '-fprofile-values'
!      If combined with '-fprofile-arcs', it adds code so that some data
       about values of expressions in the program is gathered.
  
!      With '-fbranch-probabilities', it reads back the data gathered from
       profiling values of expressions for usage in optimizations.
  
!      Enabled by '-fprofile-generate', '-fprofile-use', and
!      '-fauto-profile'.
  
! '-fprofile-reorder-functions'
       Function reordering based on profile instrumentation collects first
       time of execution of a function and orders these functions in
       ascending order, aiming to optimize program startup through more
       efficient loading of text segments.
  
!      Enabled with '-fprofile-use'.
  
! '-fvpt'
!      If combined with '-fprofile-arcs', this option instructs the
       compiler to add code to gather information about values of
       expressions.
  
!      With '-fbranch-probabilities', it reads back the data gathered and
       actually performs the optimizations based on them.  Currently the
       optimizations include specialization of division operations using
       the knowledge about the value of the denominator.
  
!      Enabled with '-fprofile-use' and '-fauto-profile'.
  
! '-frename-registers'
       Attempt to avoid false dependencies in scheduled code by making use
       of registers left over after register allocation.  This
       optimization most benefits processors with lots of registers.
--- 14034,14162 ----
       mode) and arithmetic transformations that are unsafe in the
       presence of sign-dependent rounding modes.
  
!      The default is â€˜-fno-rounding-mathâ€™.
  
       This option is experimental and does not currently guarantee to
       disable all GCC optimizations that are affected by rounding mode.
       Future versions of GCC may provide finer control of this setting
!      using C99's â€˜FENV_ACCESSâ€™ pragma.  This command-line option will be
!      used along with â€˜-ftrapping-mathâ€™ to specify the default state for
!      â€˜FENV_ACCESSâ€™.
  
! â€˜-fsignaling-nansâ€™
       Compile code assuming that IEEE signaling NaNs may generate
       user-visible traps during floating-point operations.  Setting this
       option disables optimizations that may change the number of
       exceptions visible with signaling NaNs.  This option implies
!      â€˜-ftrapping-mathâ€™.
  
!      This option causes the preprocessor macro â€˜__SUPPORT_SNAN__â€™ to be
       defined.
  
!      The default is â€˜-fno-signaling-nansâ€™.
  
       This option is experimental and does not currently guarantee to
       disable all GCC optimizations that affect signaling NaN behavior.
  
! â€˜-fno-fp-int-builtin-inexactâ€™
!      Do not allow the built-in functions â€˜ceilâ€™, â€˜floorâ€™, â€˜roundâ€™ and
!      â€˜truncâ€™, and their â€˜floatâ€™ and â€˜long doubleâ€™ variants, to generate
       code that raises the "inexact" floating-point exception for
       noninteger arguments.  ISO C99 and C11 allow these functions to
       raise the "inexact" exception, but ISO/IEC TS 18661-1:2014, the C
       bindings to IEEE 754-2008, as integrated into ISO C23, does not
       allow these functions to do so.
  
!      The default is â€˜-ffp-int-builtin-inexactâ€™, allowing the exception
       to be raised, unless C23 or a later C standard is selected.  This
!      option does nothing unless â€˜-ftrapping-mathâ€™ is in effect.
  
!      Even if â€˜-fno-fp-int-builtin-inexactâ€™ is used, if the functions
       generate a call to a library function then the "inexact" exception
       may be raised if the library implementation does not follow TS
       18661.
  
! â€˜-fsingle-precision-constantâ€™
       Treat floating-point constants as single precision instead of
       implicitly converting them to double-precision constants.
  
! â€˜-fcx-limited-rangeâ€™
       When enabled, this option states that a range reduction step is not
       needed when performing complex division.  Also, there is no
       checking whether the result of a complex multiplication or division
!      is â€˜NaN + I*NaNâ€™, with an attempt to rescue the situation in that
!      case.  The default is â€˜-fno-cx-limited-rangeâ€™, but is enabled by
!      â€˜-ffast-mathâ€™.
  
       This option controls the default setting of the ISO C99
!      â€˜CX_LIMITED_RANGEâ€™ pragma.  Nevertheless, the option applies to all
       languages.
  
! â€˜-fcx-fortran-rulesâ€™
       Complex multiplication and division follow Fortran rules.  Range
       reduction is done as part of complex division, but there is no
       checking whether the result of a complex multiplication or division
!      is â€˜NaN + I*NaNâ€™, with an attempt to rescue the situation in that
       case.
  
!      The default is â€˜-fno-cx-fortran-rulesâ€™.
  
   The following options control optimizations that may improve
! performance, but are not enabled by any â€˜-Oâ€™ options.  This section
  includes experimental options that may produce broken code.
  
! â€˜-fbranch-probabilitiesâ€™
!      After running a program compiled with â€˜-fprofile-arcsâ€™ (*note
       Instrumentation Options::), you can compile it a second time using
!      â€˜-fbranch-probabilitiesâ€™, to improve optimizations based on the
       number of times each branch was taken.  When a program compiled
!      with â€˜-fprofile-arcsâ€™ exits, it saves arc execution counts to a
!      file called â€˜SOURCENAME.gcdaâ€™ for each source file.  The
       information in this data file is very dependent on the structure of
       the generated code, so you must use the same source code and the
       same optimization options for both compilations.  See details about
!      the file naming in â€˜-fprofile-arcsâ€™.
  
!      With â€˜-fbranch-probabilitiesâ€™, GCC puts a â€˜REG_BR_PROBâ€™ note on
!      each â€˜JUMP_INSNâ€™ and â€˜CALL_INSNâ€™.  These can be used to improve
       optimization.  Currently, they are only used in one place: in
!      â€˜reorg.ccâ€™, instead of guessing which path a branch is most likely
!      to take, the â€˜REG_BR_PROBâ€™ values are used to exactly determine
       which path is taken more often.
  
!      Enabled by â€˜-fprofile-useâ€™ and â€˜-fauto-profileâ€™.
  
! â€˜-fprofile-valuesâ€™
!      If combined with â€˜-fprofile-arcsâ€™, it adds code so that some data
       about values of expressions in the program is gathered.
  
!      With â€˜-fbranch-probabilitiesâ€™, it reads back the data gathered from
       profiling values of expressions for usage in optimizations.
  
!      Enabled by â€˜-fprofile-generateâ€™, â€˜-fprofile-useâ€™, and
!      â€˜-fauto-profileâ€™.
  
! â€˜-fprofile-reorder-functionsâ€™
       Function reordering based on profile instrumentation collects first
       time of execution of a function and orders these functions in
       ascending order, aiming to optimize program startup through more
       efficient loading of text segments.
  
!      Enabled with â€˜-fprofile-useâ€™.
  
! â€˜-fvptâ€™
!      If combined with â€˜-fprofile-arcsâ€™, this option instructs the
       compiler to add code to gather information about values of
       expressions.
  
!      With â€˜-fbranch-probabilitiesâ€™, it reads back the data gathered and
       actually performs the optimizations based on them.  Currently the
       optimizations include specialization of division operations using
       the knowledge about the value of the denominator.
  
!      Enabled with â€˜-fprofile-useâ€™ and â€˜-fauto-profileâ€™.
  
! â€˜-frename-registersâ€™
       Attempt to avoid false dependencies in scheduled code by making use
       of registers left over after register allocation.  This
       optimization most benefits processors with lots of registers.
*************** includes experimental options that may p
*** 14160,14242 ****
       however, it can make debugging impossible, since variables no
       longer stay in a "home register".
  
!      Enabled by default with '-funroll-loops'.
  
! '-fschedule-fusion'
       Performs a target dependent pass over the instruction stream to
       schedule instructions of same type together because target machine
       can execute them more efficiently if they are adjacent to each
       other in the instruction flow.
  
!      Enabled at levels '-O2', '-O3', '-Os'.
  
! '-ftracer'
       Perform tail duplication to enlarge superblock size.  This
       transformation simplifies the control flow of the function allowing
       other optimizations to do a better job.
  
!      Enabled by '-fprofile-use' and '-fauto-profile'.
  
! '-funroll-loops'
       Unroll loops whose number of iterations can be determined at
!      compile time or upon entry to the loop.  '-funroll-loops' implies
!      '-frerun-cse-after-loop', '-fweb' and '-frename-registers'.  It
       also turns on complete loop peeling (i.e. complete removal of loops
       with a small constant number of iterations).  This option makes
       code larger, and may or may not make it run faster.
  
!      Enabled by '-fprofile-use' and '-fauto-profile'.
  
! '-funroll-all-loops'
       Unroll all loops, even if their number of iterations is uncertain
       when the loop is entered.  This usually makes programs run more
!      slowly.  '-funroll-all-loops' implies the same options as
!      '-funroll-loops'.
  
! '-fpeel-loops'
       Peels loops for which there is enough information that they do not
       roll much (from profile feedback or static analysis).  It also
       turns on complete loop peeling (i.e. complete removal of loops with
       small constant number of iterations).
  
!      Enabled by '-O3', '-fprofile-use', and '-fauto-profile'.
  
! '-fmalloc-dce'
!      Control whether 'malloc' (and its variants such as 'calloc' or
!      'strdup'), can be optimized away provided its return value is only
!      used as a parameter of 'free' call or compared with 'NULL'.  If
!      '-fmalloc-dce=1' is used, only calls to 'free' are allowed while
!      with '-fmalloc-dce=2' also comparisons with 'NULL' pointer are
       considered safe to remove.
  
!      The default is '-fmalloc-dce=2'.  See also '-fallocation-dce'.
  
! '-fmove-loop-invariants'
       Enables the loop invariant motion pass in the RTL loop optimizer.
!      Enabled at level '-O1' and higher, except for '-Og'.
  
! '-fmove-loop-stores'
       Enables the loop store motion pass in the GIMPLE loop optimizer.
       This moves invariant stores to after the end of the loop in
       exchange for carrying the stored value in a register across the
!      iteration.  Note for this option to have an effect '-ftree-loop-im'
!      has to be enabled as well.  Enabled at level '-O1' and higher,
!      except for '-Og'.
  
! '-fsplit-loops'
       Split a loop into two if it contains a condition that's always true
       for one side of the iteration space and false for the other.
  
!      Enabled by '-fprofile-use' and '-fauto-profile'.
  
! '-funswitch-loops'
       Move branches with loop invariant conditions out of the loop, with
       duplicates of the loop on both branches (modified according to
       result of the condition).
  
!      Enabled by '-fprofile-use' and '-fauto-profile'.
  
! '-fversion-loops-for-strides'
       If a loop iterates over an array with a variable stride, create
       another version of the loop that assumes the stride is always one.
       For example:
--- 14164,14246 ----
       however, it can make debugging impossible, since variables no
       longer stay in a "home register".
  
!      Enabled by default with â€˜-funroll-loopsâ€™.
  
! â€˜-fschedule-fusionâ€™
       Performs a target dependent pass over the instruction stream to
       schedule instructions of same type together because target machine
       can execute them more efficiently if they are adjacent to each
       other in the instruction flow.
  
!      Enabled at levels â€˜-O2â€™, â€˜-O3â€™, â€˜-Osâ€™.
  
! â€˜-ftracerâ€™
       Perform tail duplication to enlarge superblock size.  This
       transformation simplifies the control flow of the function allowing
       other optimizations to do a better job.
  
!      Enabled by â€˜-fprofile-useâ€™ and â€˜-fauto-profileâ€™.
  
! â€˜-funroll-loopsâ€™
       Unroll loops whose number of iterations can be determined at
!      compile time or upon entry to the loop.  â€˜-funroll-loopsâ€™ implies
!      â€˜-frerun-cse-after-loopâ€™, â€˜-fwebâ€™ and â€˜-frename-registersâ€™.  It
       also turns on complete loop peeling (i.e. complete removal of loops
       with a small constant number of iterations).  This option makes
       code larger, and may or may not make it run faster.
  
!      Enabled by â€˜-fprofile-useâ€™ and â€˜-fauto-profileâ€™.
  
! â€˜-funroll-all-loopsâ€™
       Unroll all loops, even if their number of iterations is uncertain
       when the loop is entered.  This usually makes programs run more
!      slowly.  â€˜-funroll-all-loopsâ€™ implies the same options as
!      â€˜-funroll-loopsâ€™.
  
! â€˜-fpeel-loopsâ€™
       Peels loops for which there is enough information that they do not
       roll much (from profile feedback or static analysis).  It also
       turns on complete loop peeling (i.e. complete removal of loops with
       small constant number of iterations).
  
!      Enabled by â€˜-O3â€™, â€˜-fprofile-useâ€™, and â€˜-fauto-profileâ€™.
  
! â€˜-fmalloc-dceâ€™
!      Control whether â€˜mallocâ€™ (and its variants such as â€˜callocâ€™ or
!      â€˜strdupâ€™), can be optimized away provided its return value is only
!      used as a parameter of â€˜freeâ€™ call or compared with â€˜NULLâ€™.  If
!      â€˜-fmalloc-dce=1â€™ is used, only calls to â€˜freeâ€™ are allowed while
!      with â€˜-fmalloc-dce=2â€™ also comparisons with â€˜NULLâ€™ pointer are
       considered safe to remove.
  
!      The default is â€˜-fmalloc-dce=2â€™.  See also â€˜-fallocation-dceâ€™.
  
! â€˜-fmove-loop-invariantsâ€™
       Enables the loop invariant motion pass in the RTL loop optimizer.
!      Enabled at level â€˜-O1â€™ and higher, except for â€˜-Ogâ€™.
  
! â€˜-fmove-loop-storesâ€™
       Enables the loop store motion pass in the GIMPLE loop optimizer.
       This moves invariant stores to after the end of the loop in
       exchange for carrying the stored value in a register across the
!      iteration.  Note for this option to have an effect â€˜-ftree-loop-imâ€™
!      has to be enabled as well.  Enabled at level â€˜-O1â€™ and higher,
!      except for â€˜-Ogâ€™.
  
! â€˜-fsplit-loopsâ€™
       Split a loop into two if it contains a condition that's always true
       for one side of the iteration space and false for the other.
  
!      Enabled by â€˜-fprofile-useâ€™ and â€˜-fauto-profileâ€™.
  
! â€˜-funswitch-loopsâ€™
       Move branches with loop invariant conditions out of the loop, with
       duplicates of the loop on both branches (modified according to
       result of the condition).
  
!      Enabled by â€˜-fprofile-useâ€™ and â€˜-fauto-profileâ€™.
  
! â€˜-fversion-loops-for-stridesâ€™
       If a loop iterates over an array with a variable stride, create
       another version of the loop that assumes the stride is always one.
       For example:
*************** includes experimental options that may p
*** 14255,14265 ****
  
       This is particularly useful for assumed-shape arrays in Fortran
       where (for example) it allows better vectorization assuming
!      contiguous accesses.  This flag is enabled by default at '-O3'.  It
!      is also enabled by '-fprofile-use' and '-fauto-profile'.
  
! '-ffunction-sections'
! '-fdata-sections'
       Place each function or data item into its own section in the output
       file if the target supports arbitrary sections.  The name of the
       function or the name of the data item determines the section's name
--- 14259,14269 ----
  
       This is particularly useful for assumed-shape arrays in Fortran
       where (for example) it allows better vectorization assuming
!      contiguous accesses.  This flag is enabled by default at â€˜-O3â€™.  It
!      is also enabled by â€˜-fprofile-useâ€™ and â€˜-fauto-profileâ€™.
  
! â€˜-ffunction-sectionsâ€™
! â€˜-fdata-sectionsâ€™
       Place each function or data item into its own section in the output
       file if the target supports arbitrary sections.  The name of the
       function or the name of the data item determines the section's name
*************** includes experimental options that may p
*** 14271,14277 ****
       such optimizations.  On AIX, the linker rearranges sections
       (CSECTs) based on the call graph.  The performance impact varies.
  
!      Together with a linker garbage collection (linker '--gc-sections'
       option) these options may lead to smaller statically-linked
       executables (after stripping).
  
--- 14275,14281 ----
       such optimizations.  On AIX, the linker rearranges sections
       (CSECTs) based on the call graph.  The performance impact varies.
  
!      Together with a linker garbage collection (linker â€˜--gc-sectionsâ€™
       option) these options may lead to smaller statically-linked
       executables (after stripping).
  
*************** includes experimental options that may p
*** 14288,14310 ****
       An example of such an optimization is relaxing calls to short call
       instructions.
  
! '-fstdarg-opt'
       Optimize the prologue of variadic argument functions with respect
       to usage of those arguments.
  
! '-fsection-anchors'
       Try to reduce the number of symbolic address calculations by using
       shared "anchor" symbols to address nearby objects.  This
       transformation can help to reduce the number of GOT entries and GOT
       accesses on some targets.
  
!      For example, the implementation of the following function 'foo':
  
            static int a, b, c;
            int foo (void) { return a + b + c; }
  
       usually calculates the addresses of all three variables, but if you
!      compile it with '-fsection-anchors', it accesses the variables from
       a common anchor point instead.  The effect is similar to the
       following pseudocode (which isn't valid C):
  
--- 14292,14314 ----
       An example of such an optimization is relaxing calls to short call
       instructions.
  
! â€˜-fstdarg-optâ€™
       Optimize the prologue of variadic argument functions with respect
       to usage of those arguments.
  
! â€˜-fsection-anchorsâ€™
       Try to reduce the number of symbolic address calculations by using
       shared "anchor" symbols to address nearby objects.  This
       transformation can help to reduce the number of GOT entries and GOT
       accesses on some targets.
  
!      For example, the implementation of the following function â€˜fooâ€™:
  
            static int a, b, c;
            int foo (void) { return a + b + c; }
  
       usually calculates the addresses of all three variables, but if you
!      compile it with â€˜-fsection-anchorsâ€™, it accesses the variables from
       a common anchor point instead.  The effect is similar to the
       following pseudocode (which isn't valid C):
  
*************** includes experimental options that may p
*** 14316,14362 ****
  
       Not all targets support this option.
  
! '-fzero-call-used-regs=CHOICE'
       Zero call-used registers at function return to increase program
       security by either mitigating Return-Oriented Programming (ROP)
       attacks or preventing information leakage through registers.
  
       The possible values of CHOICE are the same as for the
!      'zero_call_used_regs' attribute (*note Function Attributes::).  The
!      default is 'skip'.
  
       You can control this behavior for a specific function by using the
!      function attribute 'zero_call_used_regs' (*note Function
       Attributes::).
  
! '--param NAME=VALUE'
       In some places, GCC uses various constants to control the amount of
       optimization that is done.  For example, GCC does not inline
       functions that contain more than a certain number of instructions.
       You can control some of these constants on the command line using
!      the '--param' option.
  
       The names of specific parameters, and the meaning of the values,
       are tied to the internals of the compiler, and are subject to
       change without notice in future releases.
  
       In order to get the minimal, maximal and default values of a
!      parameter, use the '--help=param -Q' options.
  
       In each case, the VALUE is an integer.  The following choices of
       NAME are recognized for all targets:
  
!      'phiopt-factor-max-stmts-live'
            When factoring statements out of if/then/else, this is the max
            # of statements after the defining statement to be allow to
            extend the lifetime of a name
  
!      'predictable-branch-outcome'
            When branch is predicted to be taken with probability lower
            than this threshold (in percent), then it is considered well
            predictable.
  
!      'max-rtl-if-conversion-insns'
            RTL if-conversion tries to remove conditional branches around
            a block and replace them with conditionally executed
            instructions.  This parameter gives the maximum number of
--- 14320,14366 ----
  
       Not all targets support this option.
  
! â€˜-fzero-call-used-regs=CHOICEâ€™
       Zero call-used registers at function return to increase program
       security by either mitigating Return-Oriented Programming (ROP)
       attacks or preventing information leakage through registers.
  
       The possible values of CHOICE are the same as for the
!      â€˜zero_call_used_regsâ€™ attribute (*note Function Attributes::).  The
!      default is â€˜skipâ€™.
  
       You can control this behavior for a specific function by using the
!      function attribute â€˜zero_call_used_regsâ€™ (*note Function
       Attributes::).
  
! â€˜--param NAME=VALUEâ€™
       In some places, GCC uses various constants to control the amount of
       optimization that is done.  For example, GCC does not inline
       functions that contain more than a certain number of instructions.
       You can control some of these constants on the command line using
!      the â€˜--paramâ€™ option.
  
       The names of specific parameters, and the meaning of the values,
       are tied to the internals of the compiler, and are subject to
       change without notice in future releases.
  
       In order to get the minimal, maximal and default values of a
!      parameter, use the â€˜--help=param -Qâ€™ options.
  
       In each case, the VALUE is an integer.  The following choices of
       NAME are recognized for all targets:
  
!      â€˜phiopt-factor-max-stmts-liveâ€™
            When factoring statements out of if/then/else, this is the max
            # of statements after the defining statement to be allow to
            extend the lifetime of a name
  
!      â€˜predictable-branch-outcomeâ€™
            When branch is predicted to be taken with probability lower
            than this threshold (in percent), then it is considered well
            predictable.
  
!      â€˜max-rtl-if-conversion-insnsâ€™
            RTL if-conversion tries to remove conditional branches around
            a block and replace them with conditionally executed
            instructions.  This parameter gives the maximum number of
*************** includes experimental options that may p
*** 14364,14381 ****
            if-conversion.  The compiler will also use other heuristics to
            decide whether if-conversion is likely to be profitable.
  
!      'file-cache-files'
            Max number of files in the file cache.  The file cache is used
            to print source lines in diagnostics and do some source checks
!           like '-Wmisleading-indentation'.
  
!      'file-cache-lines'
            Max number of lines to index into file cache.  When 0 this is
            automatically sized.  The file cache is used to print source
            lines in diagnostics and do some source checks like
!           '-Wmisleading-indentation'.
  
!      'max-rtl-if-conversion-predictable-cost'
            RTL if-conversion will try to remove conditional branches
            around a block and replace them with conditionally executed
            instructions.  These parameters give the maximum permissible
--- 14368,14385 ----
            if-conversion.  The compiler will also use other heuristics to
            decide whether if-conversion is likely to be profitable.
  
!      â€˜file-cache-filesâ€™
            Max number of files in the file cache.  The file cache is used
            to print source lines in diagnostics and do some source checks
!           like â€˜-Wmisleading-indentationâ€™.
  
!      â€˜file-cache-linesâ€™
            Max number of lines to index into file cache.  When 0 this is
            automatically sized.  The file cache is used to print source
            lines in diagnostics and do some source checks like
!           â€˜-Wmisleading-indentationâ€™.
  
!      â€˜max-rtl-if-conversion-predictable-costâ€™
            RTL if-conversion will try to remove conditional branches
            around a block and replace them with conditionally executed
            instructions.  These parameters give the maximum permissible
*************** includes experimental options that may p
*** 14386,14411 ****
            will try to provide a reasonable default for this parameter
            using the BRANCH_COST target macro.
  
!      'max-crossjump-edges'
            The maximum number of incoming edges to consider for
!           cross-jumping.  The algorithm used by '-fcrossjumping' is
            O(N^2) in the number of edges incoming to each block.
            Increasing values mean more aggressive optimization, making
            the compilation time increase with probably small improvement
            in executable size.
  
!      'min-crossjump-insns'
            The minimum number of instructions that must be matched at the
            end of two blocks before cross-jumping is performed on them.
            This value is ignored in the case where all instructions in
            the block being cross-jumped from are matched.
  
!      'max-grow-copy-bb-insns'
            The maximum code size expansion factor when copying basic
            blocks instead of jumping.  The expansion is relative to a
            jump instruction.
  
!      'max-goto-duplication-insns'
            The maximum number of instructions to duplicate to a block
            that jumps to a computed goto.  To avoid O(N^2) behavior in a
            number of passes, GCC factors computed gotos early in the
--- 14390,14415 ----
            will try to provide a reasonable default for this parameter
            using the BRANCH_COST target macro.
  
!      â€˜max-crossjump-edgesâ€™
            The maximum number of incoming edges to consider for
!           cross-jumping.  The algorithm used by â€˜-fcrossjumpingâ€™ is
            O(N^2) in the number of edges incoming to each block.
            Increasing values mean more aggressive optimization, making
            the compilation time increase with probably small improvement
            in executable size.
  
!      â€˜min-crossjump-insnsâ€™
            The minimum number of instructions that must be matched at the
            end of two blocks before cross-jumping is performed on them.
            This value is ignored in the case where all instructions in
            the block being cross-jumped from are matched.
  
!      â€˜max-grow-copy-bb-insnsâ€™
            The maximum code size expansion factor when copying basic
            blocks instead of jumping.  The expansion is relative to a
            jump instruction.
  
!      â€˜max-goto-duplication-insnsâ€™
            The maximum number of instructions to duplicate to a block
            that jumps to a computed goto.  To avoid O(N^2) behavior in a
            number of passes, GCC factors computed gotos early in the
*************** includes experimental options that may p
*** 14413,14419 ****
            Only computed jumps at the end of a basic blocks with no more
            than max-goto-duplication-insns are unfactored.
  
!      'max-delay-slot-insn-search'
            The maximum number of instructions to consider when looking
            for an instruction to fill a delay slot.  If more than this
            arbitrary number of instructions are searched, the time
--- 14417,14423 ----
            Only computed jumps at the end of a basic blocks with no more
            than max-goto-duplication-insns are unfactored.
  
!      â€˜max-delay-slot-insn-searchâ€™
            The maximum number of instructions to consider when looking
            for an instruction to fill a delay slot.  If more than this
            arbitrary number of instructions are searched, the time
*************** includes experimental options that may p
*** 14422,14428 ****
            optimization, making the compilation time increase with
            probably small improvement in execution time.
  
!      'max-delay-slot-live-search'
            When trying to fill delay slots, the maximum number of
            instructions to consider when searching for a block with valid
            live register information.  Increasing this arbitrarily chosen
--- 14426,14432 ----
            optimization, making the compilation time increase with
            probably small improvement in execution time.
  
!      â€˜max-delay-slot-live-searchâ€™
            When trying to fill delay slots, the maximum number of
            instructions to consider when searching for a block with valid
            live register information.  Increasing this arbitrarily chosen
*************** includes experimental options that may p
*** 14431,14468 ****
            delay slot code is rewritten to maintain the control-flow
            graph.
  
!      'max-gcse-memory'
!           The approximate maximum amount of memory in 'kB' that can be
            allocated in order to perform the global common subexpression
            elimination optimization.  If more memory than specified is
            required, the optimization is not done.
  
!      'max-gcse-insertion-ratio'
            If the ratio of expression insertions to deletions is larger
            than this value for any expression, then RTL PRE inserts or
            removes the expression and thus leaves partially redundant
            computations in the instruction stream.
  
!      'max-pending-list-length'
            The maximum number of pending dependencies scheduling allows
            before flushing the current state and starting over.  Large
            functions with few branches or calls can create excessively
            large lists which needlessly consume memory and resources.
  
!      'max-modulo-backtrack-attempts'
            The maximum number of backtrack attempts the scheduler should
            make when modulo scheduling a loop.  Larger values can
            exponentially increase compilation time.
  
!      'max-inline-functions-called-once-loop-depth'
            Maximal loop depth of a call considered by inline heuristics
            that tries to inline all functions called once.
  
!      'max-inline-functions-called-once-insns'
            Maximal estimated size of functions produced while inlining
            functions called once.
  
!      'max-inline-insns-single'
            Several parameters control the tree inliner used in GCC.  This
            number sets the maximum number of instructions (counted in
            GCC's internal representation) in a single function that the
--- 14435,14472 ----
            delay slot code is rewritten to maintain the control-flow
            graph.
  
!      â€˜max-gcse-memoryâ€™
!           The approximate maximum amount of memory in â€˜kBâ€™ that can be
            allocated in order to perform the global common subexpression
            elimination optimization.  If more memory than specified is
            required, the optimization is not done.
  
!      â€˜max-gcse-insertion-ratioâ€™
            If the ratio of expression insertions to deletions is larger
            than this value for any expression, then RTL PRE inserts or
            removes the expression and thus leaves partially redundant
            computations in the instruction stream.
  
!      â€˜max-pending-list-lengthâ€™
            The maximum number of pending dependencies scheduling allows
            before flushing the current state and starting over.  Large
            functions with few branches or calls can create excessively
            large lists which needlessly consume memory and resources.
  
!      â€˜max-modulo-backtrack-attemptsâ€™
            The maximum number of backtrack attempts the scheduler should
            make when modulo scheduling a loop.  Larger values can
            exponentially increase compilation time.
  
!      â€˜max-inline-functions-called-once-loop-depthâ€™
            Maximal loop depth of a call considered by inline heuristics
            that tries to inline all functions called once.
  
!      â€˜max-inline-functions-called-once-insnsâ€™
            Maximal estimated size of functions produced while inlining
            functions called once.
  
!      â€˜max-inline-insns-singleâ€™
            Several parameters control the tree inliner used in GCC.  This
            number sets the maximum number of instructions (counted in
            GCC's internal representation) in a single function that the
*************** includes experimental options that may p
*** 14470,14533 ****
            functions declared inline and methods implemented in a class
            declaration (C++).
  
!      'max-inline-insns-auto'
!           When you use '-finline-functions' (included in '-O3'), a lot
            of functions that would otherwise not be considered for
            inlining by the compiler are investigated.  To those
            functions, a different (more restrictive) limit compared to
!           functions declared inline can be applied ('--param
!           max-inline-insns-auto').
  
!      'max-inline-insns-small'
            This is the bound applied to calls that are considered
!           relevant with '-finline-small-functions'.
  
!      'max-inline-insns-size'
            This is the bound applied to calls that are optimized for
            size.  Small growth may be desirable to anticipate
            optimization opportunities exposed by inlining.
  
!      'uninlined-function-insns'
            Number of instructions accounted by inliner for function
            overhead such as function prologue and epilogue.
  
!      'uninlined-function-time'
            Extra time accounted by inliner for function overhead such as
            time needed to execute function prologue and epilogue.
  
!      'inline-heuristics-hint-percent'
!           The scale (in percents) applied to 'inline-insns-single',
!           'inline-insns-single-O2', 'inline-insns-auto' when inline
            heuristics hints that inlining is very profitable (will enable
            later optimizations).
  
!      'uninlined-thunk-insns'
!      'uninlined-thunk-time'
!           Same as '--param uninlined-function-insns' and '--param
!           uninlined-function-time' but applied to function thunks.
  
!      'inline-min-speedup'
            When estimated performance improvement of caller + callee
            runtime exceeds this threshold (in percent), the function can
!           be inlined regardless of the limit on '--param
!           max-inline-insns-single' and '--param max-inline-insns-auto'.
  
!      'large-function-insns'
            The limit specifying really large functions.  For functions
            larger than this limit after inlining, inlining is constrained
!           by '--param large-function-growth'.  This parameter is useful
            primarily to avoid extreme compilation time caused by
            non-linear algorithms used by the back end.
  
!      'large-function-growth'
            Specifies maximal growth of large functions caused by inlining
            in percents.  For example, parameter value 100 limits large
            function growth to 2.0 times the original size.
  
!      'large-unit-insns'
            The limit specifying large translation unit.  Growth caused by
            inlining of units larger than this limit is limited by
!           '--param inline-unit-growth'.  For small units this might be
            too tight.  For example, consider a unit consisting of
            function A that is inline and B that just calls A three times.
            If B is small relative to A, the growth of unit is 300\% and
--- 14474,14537 ----
            functions declared inline and methods implemented in a class
            declaration (C++).
  
!      â€˜max-inline-insns-autoâ€™
!           When you use â€˜-finline-functionsâ€™ (included in â€˜-O3â€™), a lot
            of functions that would otherwise not be considered for
            inlining by the compiler are investigated.  To those
            functions, a different (more restrictive) limit compared to
!           functions declared inline can be applied (â€˜--param
!           max-inline-insns-autoâ€™).
  
!      â€˜max-inline-insns-smallâ€™
            This is the bound applied to calls that are considered
!           relevant with â€˜-finline-small-functionsâ€™.
  
!      â€˜max-inline-insns-sizeâ€™
            This is the bound applied to calls that are optimized for
            size.  Small growth may be desirable to anticipate
            optimization opportunities exposed by inlining.
  
!      â€˜uninlined-function-insnsâ€™
            Number of instructions accounted by inliner for function
            overhead such as function prologue and epilogue.
  
!      â€˜uninlined-function-timeâ€™
            Extra time accounted by inliner for function overhead such as
            time needed to execute function prologue and epilogue.
  
!      â€˜inline-heuristics-hint-percentâ€™
!           The scale (in percents) applied to â€˜inline-insns-singleâ€™,
!           â€˜inline-insns-single-O2â€™, â€˜inline-insns-autoâ€™ when inline
            heuristics hints that inlining is very profitable (will enable
            later optimizations).
  
!      â€˜uninlined-thunk-insnsâ€™
!      â€˜uninlined-thunk-timeâ€™
!           Same as â€˜--param uninlined-function-insnsâ€™ and â€˜--param
!           uninlined-function-timeâ€™ but applied to function thunks.
  
!      â€˜inline-min-speedupâ€™
            When estimated performance improvement of caller + callee
            runtime exceeds this threshold (in percent), the function can
!           be inlined regardless of the limit on â€˜--param
!           max-inline-insns-singleâ€™ and â€˜--param max-inline-insns-autoâ€™.
  
!      â€˜large-function-insnsâ€™
            The limit specifying really large functions.  For functions
            larger than this limit after inlining, inlining is constrained
!           by â€˜--param large-function-growthâ€™.  This parameter is useful
            primarily to avoid extreme compilation time caused by
            non-linear algorithms used by the back end.
  
!      â€˜large-function-growthâ€™
            Specifies maximal growth of large functions caused by inlining
            in percents.  For example, parameter value 100 limits large
            function growth to 2.0 times the original size.
  
!      â€˜large-unit-insnsâ€™
            The limit specifying large translation unit.  Growth caused by
            inlining of units larger than this limit is limited by
!           â€˜--param inline-unit-growthâ€™.  For small units this might be
            too tight.  For example, consider a unit consisting of
            function A that is inline and B that just calls A three times.
            If B is small relative to A, the growth of unit is 300\% and
*************** includes experimental options that may p
*** 14535,14669 ****
            consisting of small inlineable functions, however, the overall
            unit growth limit is needed to avoid exponential explosion of
            code size.  Thus for smaller units, the size is increased to
!           '--param large-unit-insns' before applying '--param
!           inline-unit-growth'.
  
!      'lazy-modules'
            Maximum number of concurrently open C++ module files when lazy
            loading.
  
!      'inline-unit-growth'
            Specifies maximal overall growth of the compilation unit
            caused by inlining.  For example, parameter value 20 limits
            unit growth to 1.2 times the original size.  Cold functions
            (either marked cold via an attribute or by profile feedback)
            are not accounted into the unit size.
  
!      'ipa-cp-unit-growth'
            Specifies maximal overall growth of the compilation unit
            caused by interprocedural constant propagation.  For example,
            parameter value 10 limits unit growth to 1.1 times the
            original size.
  
!      'ipa-cp-large-unit-insns'
            The size of translation unit that IPA-CP pass considers large.
  
!      'large-stack-frame'
            The limit specifying large stack frames.  While inlining the
            algorithm is trying to not grow past this limit too much.
  
!      'large-stack-frame-growth'
            Specifies maximal growth of large stack frames caused by
            inlining in percents.  For example, parameter value 1000
            limits large stack frame growth to 11 times the original size.
  
!      'max-inline-insns-recursive'
!      'max-inline-insns-recursive-auto'
            Specifies the maximum number of instructions an out-of-line
            copy of a self-recursive inline function can grow into by
            performing recursive inlining.
  
!           '--param max-inline-insns-recursive' applies to functions
            declared inline.  For functions not declared inline, recursive
!           inlining happens only when '-finline-functions' (included in
!           '-O3') is enabled; '--param max-inline-insns-recursive-auto'
            applies instead.
  
!      'max-inline-recursive-depth'
!      'max-inline-recursive-depth-auto'
            Specifies the maximum recursion depth used for recursive
            inlining.
  
!           '--param max-inline-recursive-depth' applies to functions
            declared inline.  For functions not declared inline, recursive
!           inlining happens only when '-finline-functions' (included in
!           '-O3') is enabled; '--param max-inline-recursive-depth-auto'
            applies instead.
  
!      'min-inline-recursive-probability'
            Recursive inlining is profitable only for function having deep
            recursion in average and can hurt for function having little
            recursion depth by increasing the prologue size or complexity
            of function body to other optimizers.
  
!           When profile feedback is available (see '-fprofile-generate')
            the actual recursion depth can be guessed from the probability
            that function recurses via a given call expression.  This
            parameter limits inlining only to call expressions whose
            probability exceeds the given threshold (in percents).
  
!      'early-inlining-insns'
            Specify growth that the early inliner can make.  In effect it
            increases the amount of inlining for code having a large
            abstraction penalty.
  
!      'max-early-inliner-iterations'
            Limit of iterations of the early inliner.  This basically
            bounds the number of nested indirect calls the early inliner
            can resolve.  Deeper chains are still handled by late
            inlining.
  
!      'comdat-sharing-probability'
            Probability (in percent) that C++ inline function with comdat
            visibility are shared across multiple compilation units.
  
!      'modref-max-bases'
!      'modref-max-refs'
!      'modref-max-accesses'
            Specifies the maximal number of base pointers, references and
            accesses stored for a single function by mod/ref analysis.
  
!      'modref-max-tests'
            Specifies the maxmal number of tests alias oracle can perform
            to disambiguate memory locations using the mod/ref
!           information.  This parameter ought to be bigger than '--param
!           modref-max-bases' and '--param modref-max-refs'.
  
!      'modref-max-depth'
            Specifies the maximum depth of DFS walk used by modref escape
            analysis.  Setting to 0 disables the analysis completely.
  
!      'modref-max-escape-points'
            Specifies the maximum number of escape points tracked by
            modref per SSA-name.
  
!      'modref-max-adjustments'
            Specifies the maximum number the access range is enlarged
            during modref dataflow analysis.
  
!      'profile-func-internal-id'
            A parameter to control whether to use function internal id in
            profile database lookup.  If the value is 0, the compiler uses
            an id that is based on function assembler name and filename,
            which makes old profile data more tolerant to source changes
            such as function reordering etc.
  
!      'min-vect-loop-bound'
            The minimum number of iterations under which loops are not
!           vectorized when '-ftree-vectorize' is used.  The number of
            iterations after vectorization needs to be greater than the
            value specified by this option to allow vectorization.
  
!      'gcse-cost-distance-ratio'
            Scaling factor in calculation of maximum distance an
            expression can be moved by GCSE optimizations.  This is
            currently supported only in the code hoisting pass.  The
            bigger the ratio, the more aggressive code hoisting is with
            simple expressions, i.e., the expressions that have cost less
!           than 'gcse-unrestricted-cost'.  Specifying 0 disables hoisting
            of simple expressions.
  
!      'gcse-unrestricted-cost'
            Cost, roughly measured as the cost of a single typical machine
            instruction, at which GCSE optimizations do not constrain the
            distance an expression can travel.  This is currently
--- 14539,14673 ----
            consisting of small inlineable functions, however, the overall
            unit growth limit is needed to avoid exponential explosion of
            code size.  Thus for smaller units, the size is increased to
!           â€˜--param large-unit-insnsâ€™ before applying â€˜--param
!           inline-unit-growthâ€™.
  
!      â€˜lazy-modulesâ€™
            Maximum number of concurrently open C++ module files when lazy
            loading.
  
!      â€˜inline-unit-growthâ€™
            Specifies maximal overall growth of the compilation unit
            caused by inlining.  For example, parameter value 20 limits
            unit growth to 1.2 times the original size.  Cold functions
            (either marked cold via an attribute or by profile feedback)
            are not accounted into the unit size.
  
!      â€˜ipa-cp-unit-growthâ€™
            Specifies maximal overall growth of the compilation unit
            caused by interprocedural constant propagation.  For example,
            parameter value 10 limits unit growth to 1.1 times the
            original size.
  
!      â€˜ipa-cp-large-unit-insnsâ€™
            The size of translation unit that IPA-CP pass considers large.
  
!      â€˜large-stack-frameâ€™
            The limit specifying large stack frames.  While inlining the
            algorithm is trying to not grow past this limit too much.
  
!      â€˜large-stack-frame-growthâ€™
            Specifies maximal growth of large stack frames caused by
            inlining in percents.  For example, parameter value 1000
            limits large stack frame growth to 11 times the original size.
  
!      â€˜max-inline-insns-recursiveâ€™
!      â€˜max-inline-insns-recursive-autoâ€™
            Specifies the maximum number of instructions an out-of-line
            copy of a self-recursive inline function can grow into by
            performing recursive inlining.
  
!           â€˜--param max-inline-insns-recursiveâ€™ applies to functions
            declared inline.  For functions not declared inline, recursive
!           inlining happens only when â€˜-finline-functionsâ€™ (included in
!           â€˜-O3â€™) is enabled; â€˜--param max-inline-insns-recursive-autoâ€™
            applies instead.
  
!      â€˜max-inline-recursive-depthâ€™
!      â€˜max-inline-recursive-depth-autoâ€™
            Specifies the maximum recursion depth used for recursive
            inlining.
  
!           â€˜--param max-inline-recursive-depthâ€™ applies to functions
            declared inline.  For functions not declared inline, recursive
!           inlining happens only when â€˜-finline-functionsâ€™ (included in
!           â€˜-O3â€™) is enabled; â€˜--param max-inline-recursive-depth-autoâ€™
            applies instead.
  
!      â€˜min-inline-recursive-probabilityâ€™
            Recursive inlining is profitable only for function having deep
            recursion in average and can hurt for function having little
            recursion depth by increasing the prologue size or complexity
            of function body to other optimizers.
  
!           When profile feedback is available (see â€˜-fprofile-generateâ€™)
            the actual recursion depth can be guessed from the probability
            that function recurses via a given call expression.  This
            parameter limits inlining only to call expressions whose
            probability exceeds the given threshold (in percents).
  
!      â€˜early-inlining-insnsâ€™
            Specify growth that the early inliner can make.  In effect it
            increases the amount of inlining for code having a large
            abstraction penalty.
  
!      â€˜max-early-inliner-iterationsâ€™
            Limit of iterations of the early inliner.  This basically
            bounds the number of nested indirect calls the early inliner
            can resolve.  Deeper chains are still handled by late
            inlining.
  
!      â€˜comdat-sharing-probabilityâ€™
            Probability (in percent) that C++ inline function with comdat
            visibility are shared across multiple compilation units.
  
!      â€˜modref-max-basesâ€™
!      â€˜modref-max-refsâ€™
!      â€˜modref-max-accessesâ€™
            Specifies the maximal number of base pointers, references and
            accesses stored for a single function by mod/ref analysis.
  
!      â€˜modref-max-testsâ€™
            Specifies the maxmal number of tests alias oracle can perform
            to disambiguate memory locations using the mod/ref
!           information.  This parameter ought to be bigger than â€˜--param
!           modref-max-basesâ€™ and â€˜--param modref-max-refsâ€™.
  
!      â€˜modref-max-depthâ€™
            Specifies the maximum depth of DFS walk used by modref escape
            analysis.  Setting to 0 disables the analysis completely.
  
!      â€˜modref-max-escape-pointsâ€™
            Specifies the maximum number of escape points tracked by
            modref per SSA-name.
  
!      â€˜modref-max-adjustmentsâ€™
            Specifies the maximum number the access range is enlarged
            during modref dataflow analysis.
  
!      â€˜profile-func-internal-idâ€™
            A parameter to control whether to use function internal id in
            profile database lookup.  If the value is 0, the compiler uses
            an id that is based on function assembler name and filename,
            which makes old profile data more tolerant to source changes
            such as function reordering etc.
  
!      â€˜min-vect-loop-boundâ€™
            The minimum number of iterations under which loops are not
!           vectorized when â€˜-ftree-vectorizeâ€™ is used.  The number of
            iterations after vectorization needs to be greater than the
            value specified by this option to allow vectorization.
  
!      â€˜gcse-cost-distance-ratioâ€™
            Scaling factor in calculation of maximum distance an
            expression can be moved by GCSE optimizations.  This is
            currently supported only in the code hoisting pass.  The
            bigger the ratio, the more aggressive code hoisting is with
            simple expressions, i.e., the expressions that have cost less
!           than â€˜gcse-unrestricted-costâ€™.  Specifying 0 disables hoisting
            of simple expressions.
  
!      â€˜gcse-unrestricted-costâ€™
            Cost, roughly measured as the cost of a single typical machine
            instruction, at which GCSE optimizations do not constrain the
            distance an expression can travel.  This is currently
*************** includes experimental options that may p
*** 14671,14826 ****
            cost, the more aggressive code hoisting is.  Specifying 0
            allows all expressions to travel unrestricted distances.
  
!      'max-hoist-depth'
            The depth of search in the dominator tree for expressions to
            hoist.  This is used to avoid quadratic behavior in hoisting
            algorithm.  The value of 0 does not limit on the search, but
            may slow down compilation of huge functions.
  
!      'max-tail-merge-comparisons'
            The maximum amount of similar bbs to compare a bb with.  This
            is used to avoid quadratic behavior in tree tail merging.
  
!      'max-tail-merge-iterations'
            The maximum amount of iterations of the pass over the
            function.  This is used to limit compilation time in tree tail
            merging.
  
!      'store-merging-allow-unaligned'
            Allow the store merging pass to introduce unaligned stores if
            it is legal to do so.
  
!      'max-stores-to-merge'
            The maximum number of stores to attempt to merge into wider
            stores in the store merging pass.
  
!      'max-store-chains-to-track'
            The maximum number of store chains to track at the same time
            in the attempt to merge them into wider stores in the store
            merging pass.
  
!      'max-stores-to-track'
            The maximum number of stores to track at the same time in the
            attemt to to merge them into wider stores in the store merging
            pass.
  
!      'max-unrolled-insns'
            The maximum number of instructions that a loop may have to be
            unrolled.  If a loop is unrolled, this parameter also
            determines how many times the loop code is unrolled.
  
!      'max-average-unrolled-insns'
            The maximum number of instructions biased by probabilities of
            their execution that a loop may have to be unrolled.  If a
            loop is unrolled, this parameter also determines how many
            times the loop code is unrolled.
  
!      'max-unroll-times'
            The maximum number of unrollings of a single loop.
  
!      'max-peeled-insns'
            The maximum number of instructions that a loop may have to be
            peeled.  If a loop is peeled, this parameter also determines
            how many times the loop code is peeled.
  
!      'max-peel-times'
            The maximum number of peelings of a single loop.
  
!      'max-peel-branches'
            The maximum number of branches on the hot path through the
            peeled sequence.
  
!      'max-completely-peeled-insns'
            The maximum number of insns of a completely peeled loop.
  
!      'max-completely-peel-times'
            The maximum number of iterations of a loop to be suitable for
            complete peeling.
  
!      'max-completely-peel-loop-nest-depth'
            The maximum depth of a loop nest suitable for complete
            peeling.
  
!      'max-unswitch-insns'
            The maximum number of insns of an unswitched loop.
  
!      'max-unswitch-depth'
            The maximum depth of a loop nest to be unswitched.
  
!      'lim-expensive'
            The minimum cost of an expensive expression in the loop
            invariant motion.
  
!      'min-loop-cond-split-prob'
            When FDO profile information is available,
!           'min-loop-cond-split-prob' specifies minimum threshold for
            probability of semi-invariant condition statement to trigger
            loop split.
  
!      'iv-consider-all-candidates-bound'
            Bound on number of candidates for induction variables, below
            which all candidates are considered for each use in induction
            variable optimizations.  If there are more candidates than
            this, only the most relevant ones are considered to avoid
            quadratic time complexity.
  
!      'iv-max-considered-uses'
            The induction variable optimizations give up on loops that
            contain more induction variable uses.
  
!      'iv-always-prune-cand-set-bound'
            If the number of candidates in the set is smaller than this
            value, always try to remove unnecessary ivs from the set when
            adding a new one.
  
!      'avg-loop-niter'
            Average number of iterations of a loop.
  
!      'dse-max-object-size'
            Maximum size (in bytes) of objects tracked bytewise by dead
            store elimination.  Larger values may result in larger
            compilation times.
  
!      'dse-max-alias-queries-per-store'
            Maximum number of queries into the alias oracle per store.
            Larger values result in larger compilation times and may
            result in more removed dead stores.
  
!      'scev-max-expr-size'
            Bound on size of expressions used in the scalar evolutions
            analyzer.  Large expressions slow the analyzer.
  
!      'scev-max-expr-complexity'
            Bound on the complexity of the expressions in the scalar
            evolutions analyzer.  Complex expressions slow the analyzer.
  
!      'max-tree-if-conversion-phi-args'
            Maximum number of arguments in a PHI supported by TREE if
            conversion unless the loop is marked with simd pragma.
  
!      'vect-max-layout-candidates'
            The maximum number of possible vector layouts (such as
            permutations) to consider when optimizing to-be-vectorized
            code.
  
!      'vect-max-version-for-alignment-checks'
            The maximum number of run-time checks that can be performed
            when doing loop versioning for alignment in the vectorizer.
  
!      'vect-max-version-for-alias-checks'
            The maximum number of run-time checks that can be performed
            when doing loop versioning for alias in the vectorizer.
  
!      'vect-max-peeling-for-alignment'
            The maximum number of loop peels to enhance access alignment
            for vectorizer.  Value -1 means no limit.
  
!      'max-iterations-to-track'
            The maximum number of iterations of a loop the brute-force
            algorithm for analysis of the number of iterations of the loop
            tries to evaluate.
  
!      'hot-bb-count-fraction'
            The denominator n of fraction 1/n of the maximal execution
            count of a basic block in the entire program that a basic
            block needs to at least have in order to be considered hot.
--- 14675,14830 ----
            cost, the more aggressive code hoisting is.  Specifying 0
            allows all expressions to travel unrestricted distances.
  
!      â€˜max-hoist-depthâ€™
            The depth of search in the dominator tree for expressions to
            hoist.  This is used to avoid quadratic behavior in hoisting
            algorithm.  The value of 0 does not limit on the search, but
            may slow down compilation of huge functions.
  
!      â€˜max-tail-merge-comparisonsâ€™
            The maximum amount of similar bbs to compare a bb with.  This
            is used to avoid quadratic behavior in tree tail merging.
  
!      â€˜max-tail-merge-iterationsâ€™
            The maximum amount of iterations of the pass over the
            function.  This is used to limit compilation time in tree tail
            merging.
  
!      â€˜store-merging-allow-unalignedâ€™
            Allow the store merging pass to introduce unaligned stores if
            it is legal to do so.
  
!      â€˜max-stores-to-mergeâ€™
            The maximum number of stores to attempt to merge into wider
            stores in the store merging pass.
  
!      â€˜max-store-chains-to-trackâ€™
            The maximum number of store chains to track at the same time
            in the attempt to merge them into wider stores in the store
            merging pass.
  
!      â€˜max-stores-to-trackâ€™
            The maximum number of stores to track at the same time in the
            attemt to to merge them into wider stores in the store merging
            pass.
  
!      â€˜max-unrolled-insnsâ€™
            The maximum number of instructions that a loop may have to be
            unrolled.  If a loop is unrolled, this parameter also
            determines how many times the loop code is unrolled.
  
!      â€˜max-average-unrolled-insnsâ€™
            The maximum number of instructions biased by probabilities of
            their execution that a loop may have to be unrolled.  If a
            loop is unrolled, this parameter also determines how many
            times the loop code is unrolled.
  
!      â€˜max-unroll-timesâ€™
            The maximum number of unrollings of a single loop.
  
!      â€˜max-peeled-insnsâ€™
            The maximum number of instructions that a loop may have to be
            peeled.  If a loop is peeled, this parameter also determines
            how many times the loop code is peeled.
  
!      â€˜max-peel-timesâ€™
            The maximum number of peelings of a single loop.
  
!      â€˜max-peel-branchesâ€™
            The maximum number of branches on the hot path through the
            peeled sequence.
  
!      â€˜max-completely-peeled-insnsâ€™
            The maximum number of insns of a completely peeled loop.
  
!      â€˜max-completely-peel-timesâ€™
            The maximum number of iterations of a loop to be suitable for
            complete peeling.
  
!      â€˜max-completely-peel-loop-nest-depthâ€™
            The maximum depth of a loop nest suitable for complete
            peeling.
  
!      â€˜max-unswitch-insnsâ€™
            The maximum number of insns of an unswitched loop.
  
!      â€˜max-unswitch-depthâ€™
            The maximum depth of a loop nest to be unswitched.
  
!      â€˜lim-expensiveâ€™
            The minimum cost of an expensive expression in the loop
            invariant motion.
  
!      â€˜min-loop-cond-split-probâ€™
            When FDO profile information is available,
!           â€˜min-loop-cond-split-probâ€™ specifies minimum threshold for
            probability of semi-invariant condition statement to trigger
            loop split.
  
!      â€˜iv-consider-all-candidates-boundâ€™
            Bound on number of candidates for induction variables, below
            which all candidates are considered for each use in induction
            variable optimizations.  If there are more candidates than
            this, only the most relevant ones are considered to avoid
            quadratic time complexity.
  
!      â€˜iv-max-considered-usesâ€™
            The induction variable optimizations give up on loops that
            contain more induction variable uses.
  
!      â€˜iv-always-prune-cand-set-boundâ€™
            If the number of candidates in the set is smaller than this
            value, always try to remove unnecessary ivs from the set when
            adding a new one.
  
!      â€˜avg-loop-niterâ€™
            Average number of iterations of a loop.
  
!      â€˜dse-max-object-sizeâ€™
            Maximum size (in bytes) of objects tracked bytewise by dead
            store elimination.  Larger values may result in larger
            compilation times.
  
!      â€˜dse-max-alias-queries-per-storeâ€™
            Maximum number of queries into the alias oracle per store.
            Larger values result in larger compilation times and may
            result in more removed dead stores.
  
!      â€˜scev-max-expr-sizeâ€™
            Bound on size of expressions used in the scalar evolutions
            analyzer.  Large expressions slow the analyzer.
  
!      â€˜scev-max-expr-complexityâ€™
            Bound on the complexity of the expressions in the scalar
            evolutions analyzer.  Complex expressions slow the analyzer.
  
!      â€˜max-tree-if-conversion-phi-argsâ€™
            Maximum number of arguments in a PHI supported by TREE if
            conversion unless the loop is marked with simd pragma.
  
!      â€˜vect-max-layout-candidatesâ€™
            The maximum number of possible vector layouts (such as
            permutations) to consider when optimizing to-be-vectorized
            code.
  
!      â€˜vect-max-version-for-alignment-checksâ€™
            The maximum number of run-time checks that can be performed
            when doing loop versioning for alignment in the vectorizer.
  
!      â€˜vect-max-version-for-alias-checksâ€™
            The maximum number of run-time checks that can be performed
            when doing loop versioning for alias in the vectorizer.
  
!      â€˜vect-max-peeling-for-alignmentâ€™
            The maximum number of loop peels to enhance access alignment
            for vectorizer.  Value -1 means no limit.
  
!      â€˜max-iterations-to-trackâ€™
            The maximum number of iterations of a loop the brute-force
            algorithm for analysis of the number of iterations of the loop
            tries to evaluate.
  
!      â€˜hot-bb-count-fractionâ€™
            The denominator n of fraction 1/n of the maximal execution
            count of a basic block in the entire program that a basic
            block needs to at least have in order to be considered hot.
*************** includes experimental options that may p
*** 14829,14835 ****
            of the maximal execution count.  0 means that it is never
            considered hot.  Used in non-LTO mode.
  
!      'hot-bb-count-ws-permille'
            The number of most executed permilles, ranging from 0 to 1000,
            of the profiled execution of the entire program to which the
            execution count of a basic block must be part of in order to
--- 14833,14839 ----
            of the maximal execution count.  0 means that it is never
            considered hot.  Used in non-LTO mode.
  
!      â€˜hot-bb-count-ws-permilleâ€™
            The number of most executed permilles, ranging from 0 to 1000,
            of the profiled execution of the entire program to which the
            execution count of a basic block must be part of in order to
*************** includes experimental options that may p
*** 14839,14845 ****
            profiled execution of the entire program.  0 means that it is
            never considered hot.  Used in LTO mode.
  
!      'hot-bb-frequency-fraction'
            The denominator n of fraction 1/n of the execution frequency
            of the entry block of a function that a basic block of this
            function needs to at least have in order to be considered hot.
--- 14843,14849 ----
            profiled execution of the entire program.  0 means that it is
            never considered hot.  Used in LTO mode.
  
!      â€˜hot-bb-frequency-fractionâ€™
            The denominator n of fraction 1/n of the execution frequency
            of the entry block of a function that a basic block of this
            function needs to at least have in order to be considered hot.
*************** includes experimental options that may p
*** 14848,14854 ****
            than 1/1000 of the frequency of the entry block of the
            function.  0 means that it is never considered hot.
  
!      'unlikely-bb-count-fraction'
            The denominator n of fraction 1/n of the number of profiled
            runs of the entire program below which the execution count of
            a basic block must be in order for the basic block to be
--- 14852,14858 ----
            than 1/1000 of the frequency of the entry block of the
            function.  0 means that it is never considered hot.
  
!      â€˜unlikely-bb-count-fractionâ€™
            The denominator n of fraction 1/n of the number of profiled
            runs of the entire program below which the execution count of
            a basic block must be in order for the basic block to be
*************** includes experimental options that may p
*** 14858,14864 ****
            program.  0 means that it is always considered unlikely
            executed.
  
!      'max-predicted-iterations'
            The maximum number of loop iterations we predict statically.
            This is useful in cases where a function contains a single
            loop with known bound and another loop with unknown bound.
--- 14862,14868 ----
            program.  0 means that it is always considered unlikely
            executed.
  
!      â€˜max-predicted-iterationsâ€™
            The maximum number of loop iterations we predict statically.
            This is useful in cases where a function contains a single
            loop with known bound and another loop with unknown bound.
*************** includes experimental options that may p
*** 14867,14935 ****
            means that the loop without bounds appears artificially cold
            relative to the other one.
  
!      'builtin-expect-probability'
            Control the probability of the expression having the specified
            value.  This parameter takes a percentage (i.e. 0 ...  100) as
            input.
  
!      'builtin-string-cmp-inline-length'
            The maximum length of a constant string for a builtin string
            cmp call eligible for inlining.
  
!      'align-threshold'
  
            Select fraction of the maximal frequency of executions of a
            basic block in a function to align the basic block.
  
!      'align-loop-iterations'
  
            A loop expected to iterate at least the selected number of
            iterations is aligned.
  
!      'tracer-dynamic-coverage'
!      'tracer-dynamic-coverage-feedback'
  
            This value is used to limit superblock formation once the
            given percentage of executed instructions is covered.  This
            limits unnecessary code size expansion.
  
!           The 'tracer-dynamic-coverage-feedback' parameter is used only
            when profile feedback is available.  The real profiles (as
            opposed to statically estimated ones) are much less balanced
            allowing the threshold to be larger value.
  
!      'tracer-max-code-growth'
            Stop tail duplication once code growth has reached given
            percentage.  This is a rather artificial limit, as most of the
            duplicates are eliminated later in cross jumping, so it may be
            set to much higher values than is the desired code growth.
  
!      'tracer-min-branch-ratio'
  
            Stop reverse growth when the reverse probability of best edge
            is less than this threshold (in percent).
  
!      'tracer-min-branch-probability'
!      'tracer-min-branch-probability-feedback'
  
            Stop forward growth if the best edge has probability lower
            than this threshold.
  
!           Similarly to 'tracer-dynamic-coverage' two parameters are
!           provided.  'tracer-min-branch-probability-feedback' is used
            for compilation with profile feedback and
!           'tracer-min-branch-probability' compilation without.  The
            value for compilation with profile feedback needs to be more
            conservative (higher) in order to make tracer effective.
  
!      'stack-clash-protection-guard-size'
            Specify the size of the operating system provided stack guard
            as 2 raised to NUM bytes.  Higher values may reduce the number
            of explicit probes, but a value larger than the operating
            system provided guard will leave code vulnerable to stack
            clash style attacks.
  
!      'stack-clash-protection-probe-interval'
            Stack clash protection involves probing stack space as it is
            allocated.  This param controls the maximum distance between
            probes into the stack as 2 raised to NUM bytes.  Higher values
--- 14871,14939 ----
            means that the loop without bounds appears artificially cold
            relative to the other one.
  
!      â€˜builtin-expect-probabilityâ€™
            Control the probability of the expression having the specified
            value.  This parameter takes a percentage (i.e. 0 ...  100) as
            input.
  
!      â€˜builtin-string-cmp-inline-lengthâ€™
            The maximum length of a constant string for a builtin string
            cmp call eligible for inlining.
  
!      â€˜align-thresholdâ€™
  
            Select fraction of the maximal frequency of executions of a
            basic block in a function to align the basic block.
  
!      â€˜align-loop-iterationsâ€™
  
            A loop expected to iterate at least the selected number of
            iterations is aligned.
  
!      â€˜tracer-dynamic-coverageâ€™
!      â€˜tracer-dynamic-coverage-feedbackâ€™
  
            This value is used to limit superblock formation once the
            given percentage of executed instructions is covered.  This
            limits unnecessary code size expansion.
  
!           The â€˜tracer-dynamic-coverage-feedbackâ€™ parameter is used only
            when profile feedback is available.  The real profiles (as
            opposed to statically estimated ones) are much less balanced
            allowing the threshold to be larger value.
  
!      â€˜tracer-max-code-growthâ€™
            Stop tail duplication once code growth has reached given
            percentage.  This is a rather artificial limit, as most of the
            duplicates are eliminated later in cross jumping, so it may be
            set to much higher values than is the desired code growth.
  
!      â€˜tracer-min-branch-ratioâ€™
  
            Stop reverse growth when the reverse probability of best edge
            is less than this threshold (in percent).
  
!      â€˜tracer-min-branch-probabilityâ€™
!      â€˜tracer-min-branch-probability-feedbackâ€™
  
            Stop forward growth if the best edge has probability lower
            than this threshold.
  
!           Similarly to â€˜tracer-dynamic-coverageâ€™ two parameters are
!           provided.  â€˜tracer-min-branch-probability-feedbackâ€™ is used
            for compilation with profile feedback and
!           â€˜tracer-min-branch-probabilityâ€™ compilation without.  The
            value for compilation with profile feedback needs to be more
            conservative (higher) in order to make tracer effective.
  
!      â€˜stack-clash-protection-guard-sizeâ€™
            Specify the size of the operating system provided stack guard
            as 2 raised to NUM bytes.  Higher values may reduce the number
            of explicit probes, but a value larger than the operating
            system provided guard will leave code vulnerable to stack
            clash style attacks.
  
!      â€˜stack-clash-protection-probe-intervalâ€™
            Stack clash protection involves probing stack space as it is
            allocated.  This param controls the maximum distance between
            probes into the stack as 2 raised to NUM bytes.  Higher values
*************** includes experimental options that may p
*** 14937,14951 ****
            than the operating system provided guard will leave code
            vulnerable to stack clash style attacks.
  
!      'max-cse-path-length'
  
            The maximum number of basic blocks on path that CSE considers.
  
!      'max-cse-insns'
            The maximum number of instructions CSE processes before
            flushing.
  
!      'ggc-min-expand'
  
            GCC uses a garbage collector to manage its own memory
            allocation.  This parameter specifies the minimum percentage
--- 14941,14955 ----
            than the operating system provided guard will leave code
            vulnerable to stack clash style attacks.
  
!      â€˜max-cse-path-lengthâ€™
  
            The maximum number of basic blocks on path that CSE considers.
  
!      â€˜max-cse-insnsâ€™
            The maximum number of instructions CSE processes before
            flushing.
  
!      â€˜ggc-min-expandâ€™
  
            GCC uses a garbage collector to manage its own memory
            allocation.  This parameter specifies the minimum percentage
*************** includes experimental options that may p
*** 14954,14973 ****
            compilation speed; it has no effect on code generation.
  
            The default is 30% + 70% * (RAM/1GB) with an upper bound of
!           100% when RAM >= 1GB.  If 'getrlimit' is available, the notion
!           of "RAM" is the smallest of actual RAM and 'RLIMIT_DATA' or
!           'RLIMIT_AS'.  If GCC is not able to calculate RAM on a
            particular platform, the lower bound of 30% is used.  Setting
!           this parameter and 'ggc-min-heapsize' to zero causes a full
            collection to occur at every opportunity.  This is extremely
            slow, but can be useful for debugging.
  
!      'ggc-min-heapsize'
  
            Minimum size of the garbage collector's heap before it begins
            bothering to collect garbage.  The first collection occurs
!           after the heap expands by 'ggc-min-expand'% beyond
!           'ggc-min-heapsize'.  Again, tuning this may improve
            compilation speed, and has no effect on code generation.
  
            The default is the smaller of RAM/8, RLIMIT_RSS, or a limit
--- 14958,14977 ----
            compilation speed; it has no effect on code generation.
  
            The default is 30% + 70% * (RAM/1GB) with an upper bound of
!           100% when RAM >= 1GB.  If â€˜getrlimitâ€™ is available, the notion
!           of "RAM" is the smallest of actual RAM and â€˜RLIMIT_DATAâ€™ or
!           â€˜RLIMIT_ASâ€™.  If GCC is not able to calculate RAM on a
            particular platform, the lower bound of 30% is used.  Setting
!           this parameter and â€˜ggc-min-heapsizeâ€™ to zero causes a full
            collection to occur at every opportunity.  This is extremely
            slow, but can be useful for debugging.
  
!      â€˜ggc-min-heapsizeâ€™
  
            Minimum size of the garbage collector's heap before it begins
            bothering to collect garbage.  The first collection occurs
!           after the heap expands by â€˜ggc-min-expandâ€™% beyond
!           â€˜ggc-min-heapsizeâ€™.  Again, tuning this may improve
            compilation speed, and has no effect on code generation.
  
            The default is the smaller of RAM/8, RLIMIT_RSS, or a limit
*************** includes experimental options that may p
*** 14977,15072 ****
            to calculate RAM on a particular platform, the lower bound is
            used.  Setting this parameter very large effectively disables
            garbage collection.  Setting this parameter and
!           'ggc-min-expand' to zero causes a full collection to occur at
            every opportunity.
  
!      'max-reload-search-insns'
            The maximum number of instruction reload should look backward
            for equivalent register.  Increasing values mean more
            aggressive optimization, making the compilation time increase
            with probably slightly better performance.
  
!      'max-cselib-memory-locations'
            The maximum number of memory locations cselib should take into
            account.  Increasing values mean more aggressive optimization,
            making the compilation time increase with probably slightly
            better performance.
  
!      'max-sched-ready-insns'
            The maximum number of instructions ready to be issued the
            scheduler should consider at any given time during the first
            scheduling pass.  Increasing values mean more thorough
            searches, making the compilation time increase with probably
            little benefit.
  
!      'max-sched-region-blocks'
            The maximum number of blocks in a region to be considered for
            interblock scheduling.
  
!      'max-pipeline-region-blocks'
            The maximum number of blocks in a region to be considered for
            pipelining in the selective scheduler.
  
!      'max-sched-region-insns'
            The maximum number of insns in a region to be considered for
            interblock scheduling.
  
!      'max-pipeline-region-insns'
            The maximum number of insns in a region to be considered for
            pipelining in the selective scheduler.
  
!      'min-spec-prob'
            The minimum probability (in percents) of reaching a source
            block for interblock speculative scheduling.
  
!      'max-sched-extend-regions-iters'
            The maximum number of iterations through CFG to extend
            regions.  A value of 0 disables region extensions.
  
!      'max-sched-insn-conflict-delay'
            The maximum conflict delay for an insn to be considered for
            speculative motion.
  
!      'sched-spec-prob-cutoff'
            The minimal probability of speculation success (in percents),
            so that speculative insns are scheduled.
  
!      'sched-state-edge-prob-cutoff'
            The minimum probability an edge must have for the scheduler to
            save its state across it.
  
!      'sched-mem-true-dep-cost'
            Minimal distance (in CPU cycles) between store and load
            targeting same memory locations.
  
!      'selsched-max-lookahead'
            The maximum size of the lookahead window of selective
            scheduling.  It is a depth of search for available
            instructions.
  
!      'selsched-max-sched-times'
            The maximum number of times that an instruction is scheduled
            during selective scheduling.  This is the limit on the number
            of iterations through which the instruction may be pipelined.
  
!      'selsched-insns-to-rename'
            The maximum number of best instructions in the ready list that
            are considered for renaming in the selective scheduler.
  
!      'sms-min-sc'
            The minimum value of stage count that swing modulo scheduler
            generates.
  
!      'max-last-value-rtl'
            The maximum size measured as number of RTLs that can be
            recorded in an expression in combiner for a pseudo register as
            last known value of that register.
  
!      'max-combine-insns'
            The maximum number of instructions the RTL combiner tries to
            combine.
  
!      'max-combine-search-insns'
            The maximum number of instructions that the RTL combiner
            searches in order to find the next use of a given register
            definition.  If this limit is reached without finding such a
--- 14981,15076 ----
            to calculate RAM on a particular platform, the lower bound is
            used.  Setting this parameter very large effectively disables
            garbage collection.  Setting this parameter and
!           â€˜ggc-min-expandâ€™ to zero causes a full collection to occur at
            every opportunity.
  
!      â€˜max-reload-search-insnsâ€™
            The maximum number of instruction reload should look backward
            for equivalent register.  Increasing values mean more
            aggressive optimization, making the compilation time increase
            with probably slightly better performance.
  
!      â€˜max-cselib-memory-locationsâ€™
            The maximum number of memory locations cselib should take into
            account.  Increasing values mean more aggressive optimization,
            making the compilation time increase with probably slightly
            better performance.
  
!      â€˜max-sched-ready-insnsâ€™
            The maximum number of instructions ready to be issued the
            scheduler should consider at any given time during the first
            scheduling pass.  Increasing values mean more thorough
            searches, making the compilation time increase with probably
            little benefit.
  
!      â€˜max-sched-region-blocksâ€™
            The maximum number of blocks in a region to be considered for
            interblock scheduling.
  
!      â€˜max-pipeline-region-blocksâ€™
            The maximum number of blocks in a region to be considered for
            pipelining in the selective scheduler.
  
!      â€˜max-sched-region-insnsâ€™
            The maximum number of insns in a region to be considered for
            interblock scheduling.
  
!      â€˜max-pipeline-region-insnsâ€™
            The maximum number of insns in a region to be considered for
            pipelining in the selective scheduler.
  
!      â€˜min-spec-probâ€™
            The minimum probability (in percents) of reaching a source
            block for interblock speculative scheduling.
  
!      â€˜max-sched-extend-regions-itersâ€™
            The maximum number of iterations through CFG to extend
            regions.  A value of 0 disables region extensions.
  
!      â€˜max-sched-insn-conflict-delayâ€™
            The maximum conflict delay for an insn to be considered for
            speculative motion.
  
!      â€˜sched-spec-prob-cutoffâ€™
            The minimal probability of speculation success (in percents),
            so that speculative insns are scheduled.
  
!      â€˜sched-state-edge-prob-cutoffâ€™
            The minimum probability an edge must have for the scheduler to
            save its state across it.
  
!      â€˜sched-mem-true-dep-costâ€™
            Minimal distance (in CPU cycles) between store and load
            targeting same memory locations.
  
!      â€˜selsched-max-lookaheadâ€™
            The maximum size of the lookahead window of selective
            scheduling.  It is a depth of search for available
            instructions.
  
!      â€˜selsched-max-sched-timesâ€™
            The maximum number of times that an instruction is scheduled
            during selective scheduling.  This is the limit on the number
            of iterations through which the instruction may be pipelined.
  
!      â€˜selsched-insns-to-renameâ€™
            The maximum number of best instructions in the ready list that
            are considered for renaming in the selective scheduler.
  
!      â€˜sms-min-scâ€™
            The minimum value of stage count that swing modulo scheduler
            generates.
  
!      â€˜max-last-value-rtlâ€™
            The maximum size measured as number of RTLs that can be
            recorded in an expression in combiner for a pseudo register as
            last known value of that register.
  
!      â€˜max-combine-insnsâ€™
            The maximum number of instructions the RTL combiner tries to
            combine.
  
!      â€˜max-combine-search-insnsâ€™
            The maximum number of instructions that the RTL combiner
            searches in order to find the next use of a given register
            definition.  If this limit is reached without finding such a
*************** includes experimental options that may p
*** 15076,15099 ****
            combination attempts, but it could be extended to other cases
            in future.
  
!      'integer-share-limit'
            Small integer constants can use a shared data structure,
            reducing the compiler's memory usage and increasing its speed.
            This sets the maximum value of a shared integer constant.
  
!      'ssp-buffer-size'
            The minimum size of buffers (i.e. arrays) that receive stack
!           smashing protection when '-fstack-protector' is used.
  
!      'min-size-for-stack-sharing'
            The minimum size of variables taking part in stack slot
            sharing when not optimizing.
  
!      'max-jump-thread-duplication-stmts'
            Maximum number of statements allowed in a block that needs to
            be duplicated when threading jumps.
  
!      'max-jump-thread-paths'
            The maximum number of paths to consider when searching for
            jump threading opportunities.  When arriving at a block,
            incoming edges are only considered if the number of paths to
--- 15080,15103 ----
            combination attempts, but it could be extended to other cases
            in future.
  
!      â€˜integer-share-limitâ€™
            Small integer constants can use a shared data structure,
            reducing the compiler's memory usage and increasing its speed.
            This sets the maximum value of a shared integer constant.
  
!      â€˜ssp-buffer-sizeâ€™
            The minimum size of buffers (i.e. arrays) that receive stack
!           smashing protection when â€˜-fstack-protectorâ€™ is used.
  
!      â€˜min-size-for-stack-sharingâ€™
            The minimum size of variables taking part in stack slot
            sharing when not optimizing.
  
!      â€˜max-jump-thread-duplication-stmtsâ€™
            Maximum number of statements allowed in a block that needs to
            be duplicated when threading jumps.
  
!      â€˜max-jump-thread-pathsâ€™
            The maximum number of paths to consider when searching for
            jump threading opportunities.  When arriving at a block,
            incoming edges are only considered if the number of paths to
*************** includes experimental options that may p
*** 15101,15130 ****
            does not exhaust the specified maximum number of paths to
            consider.
  
!      'max-fields-for-field-sensitive'
            Maximum number of fields in a structure treated in a field
            sensitive manner during pointer analysis.
  
!      'prefetch-latency'
            Estimate on average number of instructions that are executed
            before prefetch finishes.  The distance prefetched ahead is
            proportional to this constant.  Increasing this number may
            also lead to less streams being prefetched (see
!           'simultaneous-prefetches').
  
!      'simultaneous-prefetches'
            Maximum number of prefetches that can run at the same time.
  
!      'l1-cache-line-size'
            The size of cache line in L1 data cache, in bytes.
  
!      'l1-cache-size'
            The size of L1 data cache, in kilobytes.
  
!      'l2-cache-size'
            The size of L2 data cache, in kilobytes.
  
!      'prefetch-dynamic-strides'
            Whether the loop array prefetch pass should issue software
            prefetch hints for strides that are non-constant.  In some
            cases this may be beneficial, though the fact the stride is
--- 15105,15134 ----
            does not exhaust the specified maximum number of paths to
            consider.
  
!      â€˜max-fields-for-field-sensitiveâ€™
            Maximum number of fields in a structure treated in a field
            sensitive manner during pointer analysis.
  
!      â€˜prefetch-latencyâ€™
            Estimate on average number of instructions that are executed
            before prefetch finishes.  The distance prefetched ahead is
            proportional to this constant.  Increasing this number may
            also lead to less streams being prefetched (see
!           â€˜simultaneous-prefetchesâ€™).
  
!      â€˜simultaneous-prefetchesâ€™
            Maximum number of prefetches that can run at the same time.
  
!      â€˜l1-cache-line-sizeâ€™
            The size of cache line in L1 data cache, in bytes.
  
!      â€˜l1-cache-sizeâ€™
            The size of L1 data cache, in kilobytes.
  
!      â€˜l2-cache-sizeâ€™
            The size of L2 data cache, in kilobytes.
  
!      â€˜prefetch-dynamic-stridesâ€™
            Whether the loop array prefetch pass should issue software
            prefetch hints for strides that are non-constant.  In some
            cases this may be beneficial, though the fact the stride is
*************** includes experimental options that may p
*** 15134,15142 ****
            Set to 1 if the prefetch hints should be issued for
            non-constant strides.  Set to 0 if prefetch hints should be
            issued only for strides that are known to be constant and
!           below 'prefetch-minimum-stride'.
  
!      'prefetch-minimum-stride'
            Minimum constant stride, in bytes, to start using prefetch
            hints for.  If the stride is less than this threshold,
            prefetch hints will not be issued.
--- 15138,15146 ----
            Set to 1 if the prefetch hints should be issued for
            non-constant strides.  Set to 0 if prefetch hints should be
            issued only for strides that are known to be constant and
!           below â€˜prefetch-minimum-strideâ€™.
  
!      â€˜prefetch-minimum-strideâ€™
            Minimum constant stride, in bytes, to start using prefetch
            hints for.  If the stride is less than this threshold,
            prefetch hints will not be issued.
*************** includes experimental options that may p
*** 15154,15164 ****
            This setting is only useful for strides that are known and
            constant.
  
!      'destructive-interference-size'
!      'constructive-interference-size'
            The values for the C++17 variables
!           'std::hardware_destructive_interference_size' and
!           'std::hardware_constructive_interference_size'.  The
            destructive interference size is the minimum recommended
            offset between two independent concurrently-accessed objects;
            the constructive interference size is the maximum recommended
--- 15158,15168 ----
            This setting is only useful for strides that are known and
            constant.
  
!      â€˜destructive-interference-sizeâ€™
!      â€˜constructive-interference-sizeâ€™
            The values for the C++17 variables
!           â€˜std::hardware_destructive_interference_sizeâ€™ and
!           â€˜std::hardware_constructive_interference_sizeâ€™.  The
            destructive interference size is the minimum recommended
            offset between two independent concurrently-accessed objects;
            the constructive interference size is the maximum recommended
*************** includes experimental options that may p
*** 15172,15204 ****
            The destructive interference size is intended to be used for
            layout, and thus has ABI impact.  The default value is not
            expected to be stable, and on some targets varies with
!           '-mtune', so use of this variable in a context where ABI
            stability is important, such as the public interface of a
            library, is strongly discouraged; if it is used in that
            context, users can stabilize the value using this option.
  
            The constructive interference size is less sensitive, as it is
!           typically only used in a 'static_assert' to make sure that a
            type fits within a cache line.
  
!           See also '-Winterference-size'.
  
!      'loop-interchange-max-num-stmts'
            The maximum number of stmts in a loop to be interchanged.
  
!      'loop-interchange-stride-ratio'
            The minimum ratio between stride of two loops for interchange
            to be profitable.
  
!      'min-insn-to-prefetch-ratio'
            The minimum ratio between the number of instructions and the
            number of prefetches to enable prefetching in a loop.
  
!      'prefetch-min-insn-to-mem-ratio'
            The minimum ratio between the number of instructions and the
            number of memory references to enable prefetching in a loop.
  
!      'use-canonical-types'
            Whether the compiler should use the "canonical" type system.
            Should always be 1, which uses a more efficient internal
            mechanism for comparing types in C++ and Objective-C++.
--- 15176,15208 ----
            The destructive interference size is intended to be used for
            layout, and thus has ABI impact.  The default value is not
            expected to be stable, and on some targets varies with
!           â€˜-mtuneâ€™, so use of this variable in a context where ABI
            stability is important, such as the public interface of a
            library, is strongly discouraged; if it is used in that
            context, users can stabilize the value using this option.
  
            The constructive interference size is less sensitive, as it is
!           typically only used in a â€˜static_assertâ€™ to make sure that a
            type fits within a cache line.
  
!           See also â€˜-Winterference-sizeâ€™.
  
!      â€˜loop-interchange-max-num-stmtsâ€™
            The maximum number of stmts in a loop to be interchanged.
  
!      â€˜loop-interchange-stride-ratioâ€™
            The minimum ratio between stride of two loops for interchange
            to be profitable.
  
!      â€˜min-insn-to-prefetch-ratioâ€™
            The minimum ratio between the number of instructions and the
            number of prefetches to enable prefetching in a loop.
  
!      â€˜prefetch-min-insn-to-mem-ratioâ€™
            The minimum ratio between the number of instructions and the
            number of memory references to enable prefetching in a loop.
  
!      â€˜use-canonical-typesâ€™
            Whether the compiler should use the "canonical" type system.
            Should always be 1, which uses a more efficient internal
            mechanism for comparing types in C++ and Objective-C++.
*************** includes experimental options that may p
*** 15206,15224 ****
            compilation failures, set this value to 0 to disable canonical
            types.
  
!      'switch-conversion-max-branch-ratio'
            Switch initialization conversion refuses to create arrays that
!           are bigger than 'switch-conversion-max-branch-ratio' times the
            number of branches in the switch.
  
!      'switch-lower-slow-alg-max-cases'
            Maximum number of cases for slow switch lowering algorithms to
            be used.
  
!      'max-partial-antic-length'
            Maximum length of the partial antic set computed during the
            tree partial redundancy elimination optimization
!           ('-ftree-pre') when optimizing at '-O3' and above.  For some
            sorts of source code the enhanced partial redundancy
            elimination optimization can run away, consuming all of the
            memory available on the host machine.  This parameter sets a
--- 15210,15228 ----
            compilation failures, set this value to 0 to disable canonical
            types.
  
!      â€˜switch-conversion-max-branch-ratioâ€™
            Switch initialization conversion refuses to create arrays that
!           are bigger than â€˜switch-conversion-max-branch-ratioâ€™ times the
            number of branches in the switch.
  
!      â€˜switch-lower-slow-alg-max-casesâ€™
            Maximum number of cases for slow switch lowering algorithms to
            be used.
  
!      â€˜max-partial-antic-lengthâ€™
            Maximum length of the partial antic set computed during the
            tree partial redundancy elimination optimization
!           (â€˜-ftree-preâ€™) when optimizing at â€˜-O3â€™ and above.  For some
            sorts of source code the enhanced partial redundancy
            elimination optimization can run away, consuming all of the
            memory available on the host machine.  This parameter sets a
*************** includes experimental options that may p
*** 15226,15238 ****
            prevents the runaway behavior.  Setting a value of 0 for this
            parameter allows an unlimited set length.
  
!      'rpo-vn-max-loop-depth'
            Maximum loop depth that is value-numbered optimistically.
            When the limit hits the innermost RPO-VN-MAX-LOOP-DEPTH loops
            and the outermost loop in the loop nest are value-numbered
            optimistically and the remaining ones not.
  
!      'sccvn-max-alias-queries-per-access'
            Maximum number of alias-oracle queries we perform when looking
            for redundancies for loads and stores.  If this limit is hit
            the search is aborted and the load or store is not considered
--- 15230,15242 ----
            prevents the runaway behavior.  Setting a value of 0 for this
            parameter allows an unlimited set length.
  
!      â€˜rpo-vn-max-loop-depthâ€™
            Maximum loop depth that is value-numbered optimistically.
            When the limit hits the innermost RPO-VN-MAX-LOOP-DEPTH loops
            and the outermost loop in the loop nest are value-numbered
            optimistically and the remaining ones not.
  
!      â€˜sccvn-max-alias-queries-per-accessâ€™
            Maximum number of alias-oracle queries we perform when looking
            for redundancies for loads and stores.  If this limit is hit
            the search is aborted and the load or store is not considered
*************** includes experimental options that may p
*** 15240,15253 ****
            to the number of stores on all paths from the load to the
            function entry.
  
!      'ira-max-loops-num'
            IRA uses regional register allocation by default.  If a
            function contains more loops than the number given by this
            parameter, only at most the given number of the most
            frequently-executed loops form regions for regional register
            allocation.
  
!      'ira-max-conflict-table-size'
            Although IRA uses a sophisticated algorithm to compress the
            conflict table, the table can still require excessive amounts
            of memory for huge functions.  If the conflict table for a
--- 15244,15257 ----
            to the number of stores on all paths from the load to the
            function entry.
  
!      â€˜ira-max-loops-numâ€™
            IRA uses regional register allocation by default.  If a
            function contains more loops than the number given by this
            parameter, only at most the given number of the most
            frequently-executed loops form regions for regional register
            allocation.
  
!      â€˜ira-max-conflict-table-sizeâ€™
            Although IRA uses a sophisticated algorithm to compress the
            conflict table, the table can still require excessive amounts
            of memory for huge functions.  If the conflict table for a
*************** includes experimental options that may p
*** 15256,15269 ****
            simpler, and lower-quality algorithm that does not require
            building a pseudo-register conflict table.
  
!      'ira-loop-reserved-regs'
            IRA can be used to evaluate more accurate register pressure in
!           loops for decisions to move loop invariants (see '-O3').  The
            number of available registers reserved for some other purposes
            is given by this parameter.  Default of the parameter is the
            best found from numerous experiments.
  
!      'ira-consider-dup-in-all-alts'
            Make IRA to consider matching constraint (duplicated operand
            number) heavily in all available alternatives for preferred
            register class.  If it is set as zero, it means IRA only
--- 15260,15273 ----
            simpler, and lower-quality algorithm that does not require
            building a pseudo-register conflict table.
  
!      â€˜ira-loop-reserved-regsâ€™
            IRA can be used to evaluate more accurate register pressure in
!           loops for decisions to move loop invariants (see â€˜-O3â€™).  The
            number of available registers reserved for some other purposes
            is given by this parameter.  Default of the parameter is the
            best found from numerous experiments.
  
!      â€˜ira-consider-dup-in-all-altsâ€™
            Make IRA to consider matching constraint (duplicated operand
            number) heavily in all available alternatives for preferred
            register class.  If it is set as zero, it means IRA only
*************** includes experimental options that may p
*** 15274,15284 ****
            with an appropriate register class and respect the found
            qualified matching constraint.
  
!      'ira-simple-lra-insn-threshold'
            Approximate function insn number in 1K units triggering simple
            local RA.
  
!      'lra-inheritance-ebb-probability-cutoff'
            LRA tries to reuse values reloaded in registers in subsequent
            insns.  This optimization is called inheritance.  EBB is used
            as a region to do this optimization.  The parameter defines a
--- 15278,15288 ----
            with an appropriate register class and respect the found
            qualified matching constraint.
  
!      â€˜ira-simple-lra-insn-thresholdâ€™
            Approximate function insn number in 1K units triggering simple
            local RA.
  
!      â€˜lra-inheritance-ebb-probability-cutoffâ€™
            LRA tries to reuse values reloaded in registers in subsequent
            insns.  This optimization is called inheritance.  EBB is used
            as a region to do this optimization.  The parameter defines a
*************** includes experimental options that may p
*** 15286,15306 ****
            add BB to inheritance EBB in LRA. The default value was chosen
            from numerous runs of SPEC2000 on x86-64.
  
!      'loop-invariant-max-bbs-in-loop'
            Loop invariant motion can be very expensive, both in
            compilation time and in amount of needed compile-time memory,
            with very large loops.  Loops with more basic blocks than this
            parameter won't have loop invariant motion optimization
            performed on them.
  
!      'loop-max-datarefs-for-datadeps'
            Building data dependencies is expensive for very large loops.
            This parameter limits the number of data references in loops
            that are considered for data dependence analysis.  These large
            loops are no handled by the optimizations using loop data
            dependencies.
  
!      'max-vartrack-size'
            Sets a maximum number of hash table slots to use during
            variable tracking dataflow analysis of any function.  If this
            limit is exceeded with variable tracking at assignments
--- 15290,15310 ----
            add BB to inheritance EBB in LRA. The default value was chosen
            from numerous runs of SPEC2000 on x86-64.
  
!      â€˜loop-invariant-max-bbs-in-loopâ€™
            Loop invariant motion can be very expensive, both in
            compilation time and in amount of needed compile-time memory,
            with very large loops.  Loops with more basic blocks than this
            parameter won't have loop invariant motion optimization
            performed on them.
  
!      â€˜loop-max-datarefs-for-datadepsâ€™
            Building data dependencies is expensive for very large loops.
            This parameter limits the number of data references in loops
            that are considered for data dependence analysis.  These large
            loops are no handled by the optimizations using loop data
            dependencies.
  
!      â€˜max-vartrack-sizeâ€™
            Sets a maximum number of hash table slots to use during
            variable tracking dataflow analysis of any function.  If this
            limit is exceeded with variable tracking at assignments
*************** includes experimental options that may p
*** 15310,15316 ****
            analysis is completely disabled for the function.  Setting the
            parameter to zero makes it unlimited.
  
!      'max-vartrack-expr-depth'
            Sets a maximum number of recursion levels when attempting to
            map variable names or debug temporaries to value expressions.
            This trades compilation time for more complete debug
--- 15314,15320 ----
            analysis is completely disabled for the function.  Setting the
            parameter to zero makes it unlimited.
  
!      â€˜max-vartrack-expr-depthâ€™
            Sets a maximum number of recursion levels when attempting to
            map variable names or debug temporaries to value expressions.
            This trades compilation time for more complete debug
*************** includes experimental options that may p
*** 15320,15524 ****
            compiler to find more complex debug expressions, but compile
            time and memory use may grow.
  
!      'max-debug-marker-count'
            Sets a threshold on the number of debug markers (e.g. begin
            stmt markers) to avoid complexity explosion at inlining or
            expanding to RTL. If a function has more such gimple stmts
            than the set limit, such stmts will be dropped from the
            inlined copy of a function, and from its RTL expansion.
  
!      'min-nondebug-insn-uid'
            Use uids starting at this parameter for nondebug insns.  The
            range below the parameter is reserved exclusively for debug
!           insns created by '-fvar-tracking-assignments', but debug insns
            may get (non-overlapping) uids above it if the reserved range
            is exhausted.
  
!      'ipa-sra-deref-prob-threshold'
            IPA-SRA replaces a pointer which is known not be NULL with one
            or more new parameters only when the probability (in percent,
            relative to function entry) of it being dereferenced is higher
            than this parameter.
  
!      'ipa-sra-ptr-growth-factor'
            IPA-SRA replaces a pointer to an aggregate with one or more
            new parameters only when their cumulative size is less or
!           equal to 'ipa-sra-ptr-growth-factor' times the size of the
            original pointer parameter.
  
!      'ipa-sra-ptrwrap-growth-factor'
            Additional maximum allowed growth of total size of new
            parameters that ipa-sra replaces a pointer to an aggregate
            with, if it points to a local variable that the caller only
            writes to and passes it as an argument to other functions.
  
!      'ipa-sra-max-replacements'
            Maximum pieces of an aggregate that IPA-SRA tracks.  As a
            consequence, it is also the maximum number of replacements of
            a formal parameter.
  
!      'sra-max-scalarization-size-Ospeed'
!      'sra-max-scalarization-size-Osize'
            The two Scalar Reduction of Aggregates passes (SRA and
            IPA-SRA) aim to replace scalar parts of aggregates with uses
            of independent scalar variables.  These parameters control the
            maximum size, in storage units, of aggregate which is
            considered for replacement when compiling for speed
!           ('sra-max-scalarization-size-Ospeed') or size
!           ('sra-max-scalarization-size-Osize') respectively.
  
!      'sra-max-propagations'
            The maximum number of artificial accesses that Scalar
            Replacement of Aggregates (SRA) will track, per one local
            variable, in order to facilitate copy propagation.
  
!      'tm-max-aggregate-size'
            When making copies of thread-local variables in a transaction,
            this parameter specifies the size in bytes after which
            variables are saved with the logging functions as opposed to
            save/restore code sequence pairs.  This option only applies
!           when using '-fgnu-tm'.
  
!      'graphite-max-nb-scop-params'
            To avoid exponential effects in the Graphite loop transforms,
            the number of parameters in a Static Control Part (SCoP) is
            bounded.  A value of zero can be used to lift the bound.  A
            variable whose value is unknown at compilation time and
            defined outside a SCoP is a parameter of the SCoP.
  
!      'hardcfr-max-blocks'
!           Disable '-fharden-control-flow-redundancy' for functions with
            a larger number of blocks than the specified value.  Zero
            removes any limit.
  
!      'hardcfr-max-inline-blocks'
!           Force '-fharden-control-flow-redundancy' to use out-of-line
            checking for functions with a larger number of basic blocks
            than the specified value.
  
!      'loop-block-tile-size'
            Loop blocking or strip mining transforms, enabled with
!           '-floop-block' or '-floop-strip-mine', strip mine each loop in
            the loop nest by a given number of iterations.  The strip
!           length can be changed using the 'loop-block-tile-size'
            parameter.
  
!      'ipa-jump-function-lookups'
            Specifies number of statements visited during jump function
            offset discovery.
  
!      'ipa-cp-value-list-size'
            IPA-CP attempts to track all possible values and types passed
            to a function's parameter in order to propagate them and
!           perform devirtualization.  'ipa-cp-value-list-size' is the
            maximum number of values and types it stores per one formal
            parameter of a function.
  
!      'ipa-cp-eval-threshold'
            IPA-CP calculates its own score of cloning profitability
            heuristics and performs those cloning opportunities with
!           scores that exceed 'ipa-cp-eval-threshold'.
  
!      'ipa-cp-max-recursive-depth'
            Maximum depth of recursive cloning for self-recursive
            function.
  
!      'ipa-cp-min-recursive-probability'
            Recursive cloning only when the probability of call being
            executed exceeds the parameter.
  
!      'ipa-cp-profile-count-base'
!           When using '-fprofile-use' option, IPA-CP will consider the
            measured execution count of a call graph edge at this
            percentage position in their histogram as the basis for its
            heuristics calculation.
  
!      'ipa-cp-recursive-freq-factor'
            The number of times interprocedural copy propagation expects
            recursive functions to call themselves.
  
!      'ipa-cp-recursion-penalty'
            Percentage penalty the recursive functions will receive when
            they are evaluated for cloning.
  
!      'ipa-cp-single-call-penalty'
            Percentage penalty functions containing a single call to
            another function will receive when they are evaluated for
            cloning.
  
!      'ipa-max-agg-items'
            IPA-CP is also capable to propagate a number of scalar values
!           passed in an aggregate.  'ipa-max-agg-items' controls the
            maximum number of such values per one parameter.
  
!      'ipa-cp-loop-hint-bonus'
            When IPA-CP determines that a cloning candidate would make the
            number of iterations of a loop known, it adds a bonus of
!           'ipa-cp-loop-hint-bonus' to the profitability score of the
            candidate.
  
!      'ipa-max-loop-predicates'
            The maximum number of different predicates IPA will use to
            describe when loops in a function have known properties.
  
!      'ipa-max-aa-steps'
            During its analysis of function bodies, IPA-CP employs alias
            analysis in order to track values pointed to by function
            parameters.  In order not spend too much time analyzing huge
            functions, it gives up and consider all memory clobbered after
!           examining 'ipa-max-aa-steps' statements modifying memory.
  
!      'ipa-max-switch-predicate-bounds'
            Maximal number of boundary endpoints of case ranges of switch
            statement.  For switch exceeding this limit, IPA-CP will not
            construct cloning cost predicate, which is used to estimate
            cloning benefit, for default case of the switch statement.
  
!      'ipa-max-param-expr-ops'
            IPA-CP will analyze conditional statement that references some
            function parameter to estimate benefit for cloning upon
            certain constant value.  But if number of operations in a
!           parameter expression exceeds 'ipa-max-param-expr-ops', the
            expression is treated as complicated one, and is not handled
            by IPA analysis.
  
!      'lto-partitions'
            Specify desired number of partitions produced during WHOPR
            compilation.  The number of partitions should exceed the
            number of CPUs used for compilation.
  
!      'lto-min-partition'
            Size of minimal partition for WHOPR (in estimated
            instructions).  This prevents expenses of splitting very small
            programs into too many partitions.
  
!      'lto-max-partition'
            Size of max partition for WHOPR (in estimated instructions).
            to provide an upper bound for individual size of partition.
            Meant to be used only with balanced partitioning.
  
!      'lto-partition-locality-frequency-cutoff'
            The denominator n of fraction 1/n of the execution frequency
            of callee to be cloned for a particular caller.  Special value
            of 0 dictates to always clone without a cut-off.
  
!      'lto-partition-locality-size-cutoff'
            Size cut-off for callee including inlined calls to be cloned
            for a particular caller.
  
!      'lto-max-locality-partition'
            Maximal size of a locality partition for LTO (in estimated
            instructions).  Value of 0 results in default value being
            used.
  
!      'lto-max-streaming-parallelism'
            Maximal number of parallel processes used for LTO streaming.
  
!      'cxx-max-namespaces-for-diagnostic-help'
            The maximum number of namespaces to consult for suggestions
            when C++ name lookup fails for an identifier.
  
!      'sink-frequency-threshold'
            The maximum relative execution frequency (in percents) of the
            target block relative to a statement's original block to allow
            statement sinking of a statement.  Larger numbers result in
--- 15324,15528 ----
            compiler to find more complex debug expressions, but compile
            time and memory use may grow.
  
!      â€˜max-debug-marker-countâ€™
            Sets a threshold on the number of debug markers (e.g. begin
            stmt markers) to avoid complexity explosion at inlining or
            expanding to RTL. If a function has more such gimple stmts
            than the set limit, such stmts will be dropped from the
            inlined copy of a function, and from its RTL expansion.
  
!      â€˜min-nondebug-insn-uidâ€™
            Use uids starting at this parameter for nondebug insns.  The
            range below the parameter is reserved exclusively for debug
!           insns created by â€˜-fvar-tracking-assignmentsâ€™, but debug insns
            may get (non-overlapping) uids above it if the reserved range
            is exhausted.
  
!      â€˜ipa-sra-deref-prob-thresholdâ€™
            IPA-SRA replaces a pointer which is known not be NULL with one
            or more new parameters only when the probability (in percent,
            relative to function entry) of it being dereferenced is higher
            than this parameter.
  
!      â€˜ipa-sra-ptr-growth-factorâ€™
            IPA-SRA replaces a pointer to an aggregate with one or more
            new parameters only when their cumulative size is less or
!           equal to â€˜ipa-sra-ptr-growth-factorâ€™ times the size of the
            original pointer parameter.
  
!      â€˜ipa-sra-ptrwrap-growth-factorâ€™
            Additional maximum allowed growth of total size of new
            parameters that ipa-sra replaces a pointer to an aggregate
            with, if it points to a local variable that the caller only
            writes to and passes it as an argument to other functions.
  
!      â€˜ipa-sra-max-replacementsâ€™
            Maximum pieces of an aggregate that IPA-SRA tracks.  As a
            consequence, it is also the maximum number of replacements of
            a formal parameter.
  
!      â€˜sra-max-scalarization-size-Ospeedâ€™
!      â€˜sra-max-scalarization-size-Osizeâ€™
            The two Scalar Reduction of Aggregates passes (SRA and
            IPA-SRA) aim to replace scalar parts of aggregates with uses
            of independent scalar variables.  These parameters control the
            maximum size, in storage units, of aggregate which is
            considered for replacement when compiling for speed
!           (â€˜sra-max-scalarization-size-Ospeedâ€™) or size
!           (â€˜sra-max-scalarization-size-Osizeâ€™) respectively.
  
!      â€˜sra-max-propagationsâ€™
            The maximum number of artificial accesses that Scalar
            Replacement of Aggregates (SRA) will track, per one local
            variable, in order to facilitate copy propagation.
  
!      â€˜tm-max-aggregate-sizeâ€™
            When making copies of thread-local variables in a transaction,
            this parameter specifies the size in bytes after which
            variables are saved with the logging functions as opposed to
            save/restore code sequence pairs.  This option only applies
!           when using â€˜-fgnu-tmâ€™.
  
!      â€˜graphite-max-nb-scop-paramsâ€™
            To avoid exponential effects in the Graphite loop transforms,
            the number of parameters in a Static Control Part (SCoP) is
            bounded.  A value of zero can be used to lift the bound.  A
            variable whose value is unknown at compilation time and
            defined outside a SCoP is a parameter of the SCoP.
  
!      â€˜hardcfr-max-blocksâ€™
!           Disable â€˜-fharden-control-flow-redundancyâ€™ for functions with
            a larger number of blocks than the specified value.  Zero
            removes any limit.
  
!      â€˜hardcfr-max-inline-blocksâ€™
!           Force â€˜-fharden-control-flow-redundancyâ€™ to use out-of-line
            checking for functions with a larger number of basic blocks
            than the specified value.
  
!      â€˜loop-block-tile-sizeâ€™
            Loop blocking or strip mining transforms, enabled with
!           â€˜-floop-blockâ€™ or â€˜-floop-strip-mineâ€™, strip mine each loop in
            the loop nest by a given number of iterations.  The strip
!           length can be changed using the â€˜loop-block-tile-sizeâ€™
            parameter.
  
!      â€˜ipa-jump-function-lookupsâ€™
            Specifies number of statements visited during jump function
            offset discovery.
  
!      â€˜ipa-cp-value-list-sizeâ€™
            IPA-CP attempts to track all possible values and types passed
            to a function's parameter in order to propagate them and
!           perform devirtualization.  â€˜ipa-cp-value-list-sizeâ€™ is the
            maximum number of values and types it stores per one formal
            parameter of a function.
  
!      â€˜ipa-cp-eval-thresholdâ€™
            IPA-CP calculates its own score of cloning profitability
            heuristics and performs those cloning opportunities with
!           scores that exceed â€˜ipa-cp-eval-thresholdâ€™.
  
!      â€˜ipa-cp-max-recursive-depthâ€™
            Maximum depth of recursive cloning for self-recursive
            function.
  
!      â€˜ipa-cp-min-recursive-probabilityâ€™
            Recursive cloning only when the probability of call being
            executed exceeds the parameter.
  
!      â€˜ipa-cp-profile-count-baseâ€™
!           When using â€˜-fprofile-useâ€™ option, IPA-CP will consider the
            measured execution count of a call graph edge at this
            percentage position in their histogram as the basis for its
            heuristics calculation.
  
!      â€˜ipa-cp-recursive-freq-factorâ€™
            The number of times interprocedural copy propagation expects
            recursive functions to call themselves.
  
!      â€˜ipa-cp-recursion-penaltyâ€™
            Percentage penalty the recursive functions will receive when
            they are evaluated for cloning.
  
!      â€˜ipa-cp-single-call-penaltyâ€™
            Percentage penalty functions containing a single call to
            another function will receive when they are evaluated for
            cloning.
  
!      â€˜ipa-max-agg-itemsâ€™
            IPA-CP is also capable to propagate a number of scalar values
!           passed in an aggregate.  â€˜ipa-max-agg-itemsâ€™ controls the
            maximum number of such values per one parameter.
  
!      â€˜ipa-cp-loop-hint-bonusâ€™
            When IPA-CP determines that a cloning candidate would make the
            number of iterations of a loop known, it adds a bonus of
!           â€˜ipa-cp-loop-hint-bonusâ€™ to the profitability score of the
            candidate.
  
!      â€˜ipa-max-loop-predicatesâ€™
            The maximum number of different predicates IPA will use to
            describe when loops in a function have known properties.
  
!      â€˜ipa-max-aa-stepsâ€™
            During its analysis of function bodies, IPA-CP employs alias
            analysis in order to track values pointed to by function
            parameters.  In order not spend too much time analyzing huge
            functions, it gives up and consider all memory clobbered after
!           examining â€˜ipa-max-aa-stepsâ€™ statements modifying memory.
  
!      â€˜ipa-max-switch-predicate-boundsâ€™
            Maximal number of boundary endpoints of case ranges of switch
            statement.  For switch exceeding this limit, IPA-CP will not
            construct cloning cost predicate, which is used to estimate
            cloning benefit, for default case of the switch statement.
  
!      â€˜ipa-max-param-expr-opsâ€™
            IPA-CP will analyze conditional statement that references some
            function parameter to estimate benefit for cloning upon
            certain constant value.  But if number of operations in a
!           parameter expression exceeds â€˜ipa-max-param-expr-opsâ€™, the
            expression is treated as complicated one, and is not handled
            by IPA analysis.
  
!      â€˜lto-partitionsâ€™
            Specify desired number of partitions produced during WHOPR
            compilation.  The number of partitions should exceed the
            number of CPUs used for compilation.
  
!      â€˜lto-min-partitionâ€™
            Size of minimal partition for WHOPR (in estimated
            instructions).  This prevents expenses of splitting very small
            programs into too many partitions.
  
!      â€˜lto-max-partitionâ€™
            Size of max partition for WHOPR (in estimated instructions).
            to provide an upper bound for individual size of partition.
            Meant to be used only with balanced partitioning.
  
!      â€˜lto-partition-locality-frequency-cutoffâ€™
            The denominator n of fraction 1/n of the execution frequency
            of callee to be cloned for a particular caller.  Special value
            of 0 dictates to always clone without a cut-off.
  
!      â€˜lto-partition-locality-size-cutoffâ€™
            Size cut-off for callee including inlined calls to be cloned
            for a particular caller.
  
!      â€˜lto-max-locality-partitionâ€™
            Maximal size of a locality partition for LTO (in estimated
            instructions).  Value of 0 results in default value being
            used.
  
!      â€˜lto-max-streaming-parallelismâ€™
            Maximal number of parallel processes used for LTO streaming.
  
!      â€˜cxx-max-namespaces-for-diagnostic-helpâ€™
            The maximum number of namespaces to consult for suggestions
            when C++ name lookup fails for an identifier.
  
!      â€˜sink-frequency-thresholdâ€™
            The maximum relative execution frequency (in percents) of the
            target block relative to a statement's original block to allow
            statement sinking of a statement.  Larger numbers result in
*************** includes experimental options that may p
*** 15526,15762 ****
            adjustment is applied for statements with memory operands as
            those are even more profitable so sink.
  
!      'max-stores-to-sink'
            The maximum number of conditional store pairs that can be
!           sunk.  Set to 0 if either vectorization ('-ftree-vectorize')
!           or if-conversion ('-ftree-loop-if-convert') is disabled.
  
!      'case-values-threshold'
            The smallest number of different values for which it is best
            to use a jump-table instead of a tree of conditional branches.
            If the value is 0, use the default for the machine.
  
!      'jump-table-max-growth-ratio-for-size'
            The maximum code size growth ratio when expanding into a jump
            table (in percent).  The parameter is used when optimizing for
            size.
  
!      'jump-table-max-growth-ratio-for-speed'
            The maximum code size growth ratio when expanding into a jump
            table (in percent).  The parameter is used when optimizing for
            speed.
  
!      'tree-reassoc-width'
            Set the maximum number of instructions executed in parallel in
            reassociated tree.  This parameter overrides target dependent
            heuristics used by default if has non zero value.
  
!      'sched-pressure-algorithm'
            Choose between the two available implementations of
!           '-fsched-pressure'.  Algorithm 1 is the original
            implementation and is the more likely to prevent instructions
            from being reordered.  Algorithm 2 was designed to be a
            compromise between the relatively conservative approach taken
            by algorithm 1 and the rather aggressive approach taken by the
            default scheduler.  It relies more heavily on having a regular
            register file and accurate register pressure classes.  See
!           'haifa-sched.cc' in the GCC sources for more details.
  
            The default choice depends on the target.
  
!      'max-slsr-cand-scan'
            Set the maximum number of existing candidates that are
            considered when seeking a basis for a new straight-line
            strength reduction candidate.
  
!      'asan-globals'
            Enable buffer overflow detection for global objects.  This
            kind of protection is enabled by default if you are using
!           '-fsanitize=address' option.  To disable global objects
!           protection use '--param asan-globals=0'.
  
!      'asan-stack'
            Enable buffer overflow detection for stack objects.  This kind
            of protection is enabled by default when using
!           '-fsanitize=address'.  To disable stack protection use
!           '--param asan-stack=0' option.
  
!      'asan-instrument-reads'
            Enable buffer overflow detection for memory reads.  This kind
            of protection is enabled by default when using
!           '-fsanitize=address'.  To disable memory reads protection use
!           '--param asan-instrument-reads=0'.
  
!      'asan-instrument-writes'
            Enable buffer overflow detection for memory writes.  This kind
            of protection is enabled by default when using
!           '-fsanitize=address'.  To disable memory writes protection use
!           '--param asan-instrument-writes=0' option.
  
!      'asan-memintrin'
            Enable detection for built-in functions.  This kind of
            protection is enabled by default when using
!           '-fsanitize=address'.  To disable built-in functions
!           protection use '--param asan-memintrin=0'.
  
!      'asan-use-after-return'
            Enable detection of use-after-return.  This kind of protection
!           is enabled by default when using the '-fsanitize=address'
!           option.  To disable it use '--param asan-use-after-return=0'.
  
            Note: By default the check is disabled at run time.  To enable
!           it, add 'detect_stack_use_after_return=1' to the environment
!           variable 'ASAN_OPTIONS'.
  
!      'asan-instrumentation-with-call-threshold'
            If number of memory accesses in function being instrumented is
            greater or equal to this number, use callbacks instead of
!           inline checks.  E.g.  to disable inline code use '--param
!           asan-instrumentation-with-call-threshold=0'.
  
!      'asan-kernel-mem-intrinsic-prefix'
!           If nonzero, prefix calls to 'memcpy', 'memset' and 'memmove'
!           with '__asan_' or '__hwasan_' for '-fsanitize=kernel-address'
!           or '-fsanitize=kernel-hwaddress', respectively.
  
!      'hwasan-instrument-stack'
            Enable hwasan instrumentation of statically sized
            stack-allocated variables.  This kind of instrumentation is
!           enabled by default when using '-fsanitize=hwaddress' and
!           disabled by default when using '-fsanitize=kernel-hwaddress'.
!           To disable stack instrumentation use '--param
!           hwasan-instrument-stack=0', and to enable it use '--param
!           hwasan-instrument-stack=1'.
  
!      'hwasan-random-frame-tag'
            When using stack instrumentation, decide tags for stack
            variables using a deterministic sequence beginning at a random
            tag for each frame.  With this parameter unset tags are chosen
            using the same sequence but beginning from 1.  This is enabled
!           by default for '-fsanitize=hwaddress' and unavailable for
!           '-fsanitize=kernel-hwaddress'.  To disable it use '--param
!           hwasan-random-frame-tag=0'.
  
!      'hwasan-instrument-allocas'
            Enable hwasan instrumentation of dynamically sized
            stack-allocated variables.  This kind of instrumentation is
!           enabled by default when using '-fsanitize=hwaddress' and
!           disabled by default when using '-fsanitize=kernel-hwaddress'.
!           To disable instrumentation of such variables use '--param
!           hwasan-instrument-allocas=0', and to enable it use '--param
!           hwasan-instrument-allocas=1'.
  
!      'hwasan-instrument-reads'
            Enable hwasan checks on memory reads.  Instrumentation of
!           reads is enabled by default for both '-fsanitize=hwaddress'
!           and '-fsanitize=kernel-hwaddress'.  To disable checking memory
!           reads use '--param hwasan-instrument-reads=0'.
  
!      'hwasan-instrument-writes'
            Enable hwasan checks on memory writes.  Instrumentation of
!           writes is enabled by default for both '-fsanitize=hwaddress'
!           and '-fsanitize=kernel-hwaddress'.  To disable checking memory
!           writes use '--param hwasan-instrument-writes=0'.
  
!      'hwasan-instrument-mem-intrinsics'
            Enable hwasan instrumentation of builtin functions.
            Instrumentation of these builtin functions is enabled by
!           default for both '-fsanitize=hwaddress' and
!           '-fsanitize=kernel-hwaddress'.  To disable instrumentation of
!           builtin functions use '--param
!           hwasan-instrument-mem-intrinsics=0'.
  
!      'use-after-scope-direct-emission-threshold'
            If the size of a local variable in bytes is smaller or equal
            to this number, directly poison (or unpoison) shadow memory
            instead of using run-time callbacks.
  
!      'tsan-distinguish-volatile'
            Emit special instrumentation for accesses to volatiles.
  
!      'tsan-instrument-func-entry-exit'
            Emit instrumentation calls to __tsan_func_entry() and
            __tsan_func_exit().
  
!      'max-fsm-thread-path-insns'
            Maximum number of instructions to copy when duplicating blocks
            on a finite state automaton jump thread path.
  
!      'threader-debug'
            threader-debug=[none|all] Enables verbose dumping of the
            threader solver.
  
!      'parloops-chunk-size'
            Chunk size of omp schedule for loops parallelized by parloops.
  
!      'parloops-schedule'
            Schedule type of omp schedule for loops parallelized by
            parloops (static, dynamic, guided, auto, runtime).
  
!      'parloops-min-per-thread'
            The minimum number of iterations per thread of an innermost
            parallelized loop for which the parallelized variant is
            preferred over the single threaded one.  Note that for a
            parallelized loop nest the minimum number of iterations of the
            outermost loop per thread is two.
  
!      'max-ssa-name-query-depth'
            Maximum depth of recursion when querying properties of SSA
            names in things like fold routines.  One level of recursion
            corresponds to following a use-def chain.
  
!      'max-speculative-devirt-maydefs'
            The maximum number of may-defs we analyze when looking for a
            must-def specifying the dynamic type of an object that invokes
            a virtual call we may be able to devirtualize speculatively.
  
!      'ranger-debug'
            Specifies the type of debug output to be issued for ranges.
  
!      'unroll-jam-min-percent'
            The minimum percentage of memory references that must be
            optimized away for the unroll-and-jam transformation to be
            considered profitable.
  
!      'unroll-jam-max-unroll'
            The maximum number of times the outer loop should be unrolled
            by the unroll-and-jam transformation.
  
!      'max-rtl-if-conversion-unpredictable-cost'
            Maximum permissible cost for the sequence that would be
            generated by the RTL if-conversion pass for a branch that is
            considered unpredictable.
  
!      'max-variable-expansions-in-unroller'
!           If '-fvariable-expansion-in-unroller' is used, the maximum
            number of times that an individual variable will be expanded
            during loop unrolling.
  
!      'partial-inlining-entry-probability'
            Maximum probability of the entry BB of split region (in
            percent relative to entry BB of the function) to make partial
            inlining happen.
  
!      'max-tracked-strlens'
            Maximum number of strings for which strlen optimization pass
            will track string lengths.
  
!      'gcse-after-reload-partial-fraction'
            The threshold ratio for performing partial redundancy
            elimination after reload.
  
!      'gcse-after-reload-critical-fraction'
            The threshold ratio of critical edges execution count that
            permit performing redundancy elimination after reload.
  
!      'max-loop-header-insns'
            The maximum number of insns in loop header duplicated by the
            copy loop headers pass.
  
!      'vect-epilogues-nomask'
            Enable loop epilogue vectorization using smaller vector size.
  
!      'vect-partial-vector-usage'
            Controls when the loop vectorizer considers using partial
            vector loads and stores as an alternative to falling back to
            scalar code.  0 stops the vectorizer from ever using partial
--- 15530,15766 ----
            adjustment is applied for statements with memory operands as
            those are even more profitable so sink.
  
!      â€˜max-stores-to-sinkâ€™
            The maximum number of conditional store pairs that can be
!           sunk.  Set to 0 if either vectorization (â€˜-ftree-vectorizeâ€™)
!           or if-conversion (â€˜-ftree-loop-if-convertâ€™) is disabled.
  
!      â€˜case-values-thresholdâ€™
            The smallest number of different values for which it is best
            to use a jump-table instead of a tree of conditional branches.
            If the value is 0, use the default for the machine.
  
!      â€˜jump-table-max-growth-ratio-for-sizeâ€™
            The maximum code size growth ratio when expanding into a jump
            table (in percent).  The parameter is used when optimizing for
            size.
  
!      â€˜jump-table-max-growth-ratio-for-speedâ€™
            The maximum code size growth ratio when expanding into a jump
            table (in percent).  The parameter is used when optimizing for
            speed.
  
!      â€˜tree-reassoc-widthâ€™
            Set the maximum number of instructions executed in parallel in
            reassociated tree.  This parameter overrides target dependent
            heuristics used by default if has non zero value.
  
!      â€˜sched-pressure-algorithmâ€™
            Choose between the two available implementations of
!           â€˜-fsched-pressureâ€™.  Algorithm 1 is the original
            implementation and is the more likely to prevent instructions
            from being reordered.  Algorithm 2 was designed to be a
            compromise between the relatively conservative approach taken
            by algorithm 1 and the rather aggressive approach taken by the
            default scheduler.  It relies more heavily on having a regular
            register file and accurate register pressure classes.  See
!           â€˜haifa-sched.ccâ€™ in the GCC sources for more details.
  
            The default choice depends on the target.
  
!      â€˜max-slsr-cand-scanâ€™
            Set the maximum number of existing candidates that are
            considered when seeking a basis for a new straight-line
            strength reduction candidate.
  
!      â€˜asan-globalsâ€™
            Enable buffer overflow detection for global objects.  This
            kind of protection is enabled by default if you are using
!           â€˜-fsanitize=addressâ€™ option.  To disable global objects
!           protection use â€˜--param asan-globals=0â€™.
  
!      â€˜asan-stackâ€™
            Enable buffer overflow detection for stack objects.  This kind
            of protection is enabled by default when using
!           â€˜-fsanitize=addressâ€™.  To disable stack protection use
!           â€˜--param asan-stack=0â€™ option.
  
!      â€˜asan-instrument-readsâ€™
            Enable buffer overflow detection for memory reads.  This kind
            of protection is enabled by default when using
!           â€˜-fsanitize=addressâ€™.  To disable memory reads protection use
!           â€˜--param asan-instrument-reads=0â€™.
  
!      â€˜asan-instrument-writesâ€™
            Enable buffer overflow detection for memory writes.  This kind
            of protection is enabled by default when using
!           â€˜-fsanitize=addressâ€™.  To disable memory writes protection use
!           â€˜--param asan-instrument-writes=0â€™ option.
  
!      â€˜asan-memintrinâ€™
            Enable detection for built-in functions.  This kind of
            protection is enabled by default when using
!           â€˜-fsanitize=addressâ€™.  To disable built-in functions
!           protection use â€˜--param asan-memintrin=0â€™.
  
!      â€˜asan-use-after-returnâ€™
            Enable detection of use-after-return.  This kind of protection
!           is enabled by default when using the â€˜-fsanitize=addressâ€™
!           option.  To disable it use â€˜--param asan-use-after-return=0â€™.
  
            Note: By default the check is disabled at run time.  To enable
!           it, add â€˜detect_stack_use_after_return=1â€™ to the environment
!           variable â€˜ASAN_OPTIONSâ€™.
  
!      â€˜asan-instrumentation-with-call-thresholdâ€™
            If number of memory accesses in function being instrumented is
            greater or equal to this number, use callbacks instead of
!           inline checks.  E.g.  to disable inline code use â€˜--param
!           asan-instrumentation-with-call-threshold=0â€™.
  
!      â€˜asan-kernel-mem-intrinsic-prefixâ€™
!           If nonzero, prefix calls to â€˜memcpyâ€™, â€˜memsetâ€™ and â€˜memmoveâ€™
!           with â€˜__asan_â€™ or â€˜__hwasan_â€™ for â€˜-fsanitize=kernel-addressâ€™
!           or â€˜-fsanitize=kernel-hwaddressâ€™, respectively.
  
!      â€˜hwasan-instrument-stackâ€™
            Enable hwasan instrumentation of statically sized
            stack-allocated variables.  This kind of instrumentation is
!           enabled by default when using â€˜-fsanitize=hwaddressâ€™ and
!           disabled by default when using â€˜-fsanitize=kernel-hwaddressâ€™.
!           To disable stack instrumentation use â€˜--param
!           hwasan-instrument-stack=0â€™, and to enable it use â€˜--param
!           hwasan-instrument-stack=1â€™.
  
!      â€˜hwasan-random-frame-tagâ€™
            When using stack instrumentation, decide tags for stack
            variables using a deterministic sequence beginning at a random
            tag for each frame.  With this parameter unset tags are chosen
            using the same sequence but beginning from 1.  This is enabled
!           by default for â€˜-fsanitize=hwaddressâ€™ and unavailable for
!           â€˜-fsanitize=kernel-hwaddressâ€™.  To disable it use â€˜--param
!           hwasan-random-frame-tag=0â€™.
  
!      â€˜hwasan-instrument-allocasâ€™
            Enable hwasan instrumentation of dynamically sized
            stack-allocated variables.  This kind of instrumentation is
!           enabled by default when using â€˜-fsanitize=hwaddressâ€™ and
!           disabled by default when using â€˜-fsanitize=kernel-hwaddressâ€™.
!           To disable instrumentation of such variables use â€˜--param
!           hwasan-instrument-allocas=0â€™, and to enable it use â€˜--param
!           hwasan-instrument-allocas=1â€™.
  
!      â€˜hwasan-instrument-readsâ€™
            Enable hwasan checks on memory reads.  Instrumentation of
!           reads is enabled by default for both â€˜-fsanitize=hwaddressâ€™
!           and â€˜-fsanitize=kernel-hwaddressâ€™.  To disable checking memory
!           reads use â€˜--param hwasan-instrument-reads=0â€™.
  
!      â€˜hwasan-instrument-writesâ€™
            Enable hwasan checks on memory writes.  Instrumentation of
!           writes is enabled by default for both â€˜-fsanitize=hwaddressâ€™
!           and â€˜-fsanitize=kernel-hwaddressâ€™.  To disable checking memory
!           writes use â€˜--param hwasan-instrument-writes=0â€™.
  
!      â€˜hwasan-instrument-mem-intrinsicsâ€™
            Enable hwasan instrumentation of builtin functions.
            Instrumentation of these builtin functions is enabled by
!           default for both â€˜-fsanitize=hwaddressâ€™ and
!           â€˜-fsanitize=kernel-hwaddressâ€™.  To disable instrumentation of
!           builtin functions use â€˜--param
!           hwasan-instrument-mem-intrinsics=0â€™.
  
!      â€˜use-after-scope-direct-emission-thresholdâ€™
            If the size of a local variable in bytes is smaller or equal
            to this number, directly poison (or unpoison) shadow memory
            instead of using run-time callbacks.
  
!      â€˜tsan-distinguish-volatileâ€™
            Emit special instrumentation for accesses to volatiles.
  
!      â€˜tsan-instrument-func-entry-exitâ€™
            Emit instrumentation calls to __tsan_func_entry() and
            __tsan_func_exit().
  
!      â€˜max-fsm-thread-path-insnsâ€™
            Maximum number of instructions to copy when duplicating blocks
            on a finite state automaton jump thread path.
  
!      â€˜threader-debugâ€™
            threader-debug=[none|all] Enables verbose dumping of the
            threader solver.
  
!      â€˜parloops-chunk-sizeâ€™
            Chunk size of omp schedule for loops parallelized by parloops.
  
!      â€˜parloops-scheduleâ€™
            Schedule type of omp schedule for loops parallelized by
            parloops (static, dynamic, guided, auto, runtime).
  
!      â€˜parloops-min-per-threadâ€™
            The minimum number of iterations per thread of an innermost
            parallelized loop for which the parallelized variant is
            preferred over the single threaded one.  Note that for a
            parallelized loop nest the minimum number of iterations of the
            outermost loop per thread is two.
  
!      â€˜max-ssa-name-query-depthâ€™
            Maximum depth of recursion when querying properties of SSA
            names in things like fold routines.  One level of recursion
            corresponds to following a use-def chain.
  
!      â€˜max-speculative-devirt-maydefsâ€™
            The maximum number of may-defs we analyze when looking for a
            must-def specifying the dynamic type of an object that invokes
            a virtual call we may be able to devirtualize speculatively.
  
!      â€˜ranger-debugâ€™
            Specifies the type of debug output to be issued for ranges.
  
!      â€˜unroll-jam-min-percentâ€™
            The minimum percentage of memory references that must be
            optimized away for the unroll-and-jam transformation to be
            considered profitable.
  
!      â€˜unroll-jam-max-unrollâ€™
            The maximum number of times the outer loop should be unrolled
            by the unroll-and-jam transformation.
  
!      â€˜max-rtl-if-conversion-unpredictable-costâ€™
            Maximum permissible cost for the sequence that would be
            generated by the RTL if-conversion pass for a branch that is
            considered unpredictable.
  
!      â€˜max-variable-expansions-in-unrollerâ€™
!           If â€˜-fvariable-expansion-in-unrollerâ€™ is used, the maximum
            number of times that an individual variable will be expanded
            during loop unrolling.
  
!      â€˜partial-inlining-entry-probabilityâ€™
            Maximum probability of the entry BB of split region (in
            percent relative to entry BB of the function) to make partial
            inlining happen.
  
!      â€˜max-tracked-strlensâ€™
            Maximum number of strings for which strlen optimization pass
            will track string lengths.
  
!      â€˜gcse-after-reload-partial-fractionâ€™
            The threshold ratio for performing partial redundancy
            elimination after reload.
  
!      â€˜gcse-after-reload-critical-fractionâ€™
            The threshold ratio of critical edges execution count that
            permit performing redundancy elimination after reload.
  
!      â€˜max-loop-header-insnsâ€™
            The maximum number of insns in loop header duplicated by the
            copy loop headers pass.
  
!      â€˜vect-epilogues-nomaskâ€™
            Enable loop epilogue vectorization using smaller vector size.
  
!      â€˜vect-partial-vector-usageâ€™
            Controls when the loop vectorizer considers using partial
            vector loads and stores as an alternative to falling back to
            scalar code.  0 stops the vectorizer from ever using partial
*************** includes experimental options that may p
*** 15766,16000 ****
            loops.  The parameter only has an effect on targets that
            support partial vector loads and stores.
  
!      'vect-inner-loop-cost-factor'
            The maximum factor which the loop vectorizer applies to the
            cost of statements in an inner loop relative to the loop being
            vectorized.  The factor applied is the maximum of the
            estimated number of iterations of the inner loop and this
            parameter.  The default value of this parameter is 50.
  
!      'vect-induction-float'
            Enable loop vectorization of floating point inductions.
  
!      'vect-force-slp'
            Force the use of SLP when vectorizing, fail if not possible.
  
!      'vrp-block-limit'
            Maximum number of basic blocks before VRP switches to a lower
            memory algorithm.
  
!      'vrp-sparse-threshold'
            Maximum number of basic blocks before VRP uses a sparse bitmap
            cache.
  
!      'vrp-switch-limit'
            Maximum number of outgoing edges in a switch before VRP will
            not process it.
  
!      'vrp-vector-threshold'
            Maximum number of basic blocks for VRP to use a basic cache
            vector.
  
!      'avoid-fma-max-bits'
            Maximum number of bits for which we avoid creating FMAs.
  
!      'fully-pipelined-fma'
            Whether the target fully pipelines FMA instructions.  If
            non-zero, reassociation considers the benefit of parallelizing
            FMA's multiplication part and addition part, assuming FMUL and
            FMA use the same units that can also do FADD.
  
!      'sms-loop-average-count-threshold'
            A threshold on the average loop count considered by the swing
            modulo scheduler.
  
!      'sms-dfa-history'
            The number of cycles the swing modulo scheduler considers when
            checking conflicts using DFA.
  
!      'graphite-allow-codegen-errors'
!           Whether codegen errors should be ICEs when '-fchecking'.
  
!      'sms-max-ii-factor'
            A factor for tuning the upper bound that swing modulo
            scheduler uses for scheduling a loop.
  
!      'lra-max-considered-reload-pseudos'
            The max number of reload pseudos which are considered during
            spilling a non-reload pseudo.
  
!      'max-pow-sqrt-depth'
            Maximum depth of sqrt chains to use when synthesizing
            exponentiation by a real constant.
  
!      'max-dse-active-local-stores'
            Maximum number of active local stores in RTL dead store
            elimination.
  
!      'asan-instrument-allocas'
            Enable asan allocas/VLAs protection.
  
!      'max-iterations-computation-cost'
            Bound on the cost of an expression to compute the number of
            iterations.
  
!      'max-isl-operations'
            Maximum number of isl operations, 0 means unlimited.
  
!      'graphite-max-arrays-per-scop'
            Maximum number of arrays per scop.
  
!      'max-vartrack-reverse-op-size'
            Max.  size of loc list for which reverse ops should be added.
  
!      'fsm-scale-path-stmts'
            Scale factor to apply to the number of statements in a
            threading path crossing a loop backedge when comparing to
!           '--param=max-jump-thread-duplication-stmts'.
  
!      'uninit-control-dep-attempts'
            Maximum number of nested calls to search for control
            dependencies during uninitialized variable analysis.
  
!      'uninit-max-chain-len'
            Maximum number of predicates anded for each predicate ored in
            the normalized predicate chain.
  
!      'uninit-max-num-chains'
            Maximum number of predicates ored in the normalized predicate
            chain.
  
!      'uninit-max-prune-work'
            Maximum amount of work done to prune paths where the variable
            is always initialized.
  
!      'sched-autopref-queue-depth'
            Hardware autoprefetcher scheduler model control flag.  Number
            of lookahead cycles the model looks into; at ' ' only enable
            instruction sorting heuristic.
  
!      'loop-versioning-max-inner-insns'
            The maximum number of instructions that an inner loop can have
            before the loop versioning pass considers it too big to copy.
  
!      'loop-versioning-max-outer-insns'
            The maximum number of instructions that an outer loop can have
            before the loop versioning pass considers it too big to copy,
            discounting any instructions in inner loops that directly
            benefit from versioning.
  
!      'ssa-name-def-chain-limit'
            The maximum number of SSA_NAME assignments to follow in
            determining a property of a variable such as its value.  This
            limits the number of iterations or recursive calls GCC
            performs when optimizing certain statements or when
            determining their validity prior to issuing diagnostics.
  
!      'store-merging-max-size'
            Maximum size of a single store merging region in bytes.
  
!      'store-forwarding-max-distance'
            Maximum number of instruction distance that a small store
            forwarded to a larger load may stall.  Value '0' disables the
            cost checks for the avoid-store-forwarding pass.
  
!      'hash-table-verification-limit'
            The number of elements for which hash table verification is
            done for each searched element.
  
!      'max-find-base-term-values'
            Maximum number of VALUEs handled during a single
            find_base_term call.
  
!      'analyzer-max-enodes-per-program-point'
            The maximum number of exploded nodes per program point within
            the analyzer, before terminating analysis of that point.
  
!      'analyzer-max-constraints'
            The maximum number of constraints per state.
  
!      'analyzer-min-snodes-for-call-summary'
            The minimum number of supernodes within a function for the
            analyzer to consider summarizing its effects at call sites.
  
!      'analyzer-max-enodes-for-full-dump'
            The maximum depth of exploded nodes that should appear in a
            dot dump before switching to a less verbose format.
  
!      'analyzer-max-recursion-depth'
            The maximum number of times a callsite can appear in a call
            stack within the analyzer, before terminating analysis of a
            call that would recurse deeper.
  
!      'analyzer-max-svalue-depth'
            The maximum depth of a symbolic value, before approximating
            the value as unknown.
  
!      'analyzer-max-infeasible-edges'
            The maximum number of infeasible edges to reject before
            declaring a diagnostic as infeasible.
  
!      'gimple-fe-computed-hot-bb-threshold'
            The number of executions of a basic block which is considered
            hot.  The parameter is used only in GIMPLE FE.
  
!      'analyzer-bb-explosion-factor'
            The maximum number of 'after supernode' exploded nodes within
            the analyzer per supernode, before terminating analysis.
  
!      'analyzer-text-art-string-ellipsis-threshold'
            The number of bytes at which to ellipsize string literals in
            analyzer text art diagrams.
  
!      'analyzer-text-art-ideal-canvas-width'
            The ideal width in characters of text art diagrams generated
            by the analyzer.
  
!      'analyzer-text-art-string-ellipsis-head-len'
            The number of literal bytes to show at the head of a string
            literal in text art when ellipsizing it.
  
!      'analyzer-text-art-string-ellipsis-tail-len'
            The number of literal bytes to show at the tail of a string
            literal in text art when ellipsizing it.
  
!      'ranger-logical-depth'
            Maximum depth of logical expression evaluation ranger will
            look through when evaluating outgoing edge ranges.
  
!      'ranger-recompute-depth'
            Maximum depth of instruction chains to consider for
            recomputation in the outgoing range calculator.
  
!      'relation-block-limit'
            Maximum number of relations the oracle will register in a
            basic block.
  
!      'transitive-relations-work-bound'
            Work bound when discovering transitive relations from existing
            relations.
  
!      'min-pagesize'
            Minimum page size for warning and early break vectorization
            purposes.
  
!      'openacc-kernels'
            Specify mode of OpenACC 'kernels' constructs handling.  With
!           '--param=openacc-kernels=decompose', OpenACC 'kernels'
            constructs are decomposed into parts, a sequence of compute
            constructs, each then handled individually.  This is work in
!           progress.  With '--param=openacc-kernels=parloops', OpenACC
!           'kernels' constructs are handled by the 'parloops' pass, en
            bloc.  This is the current default.
  
!      'openacc-privatization'
!           Control whether the '-fopt-info-omp-note' and applicable
!           '-fdump-tree-*-details' options emit OpenACC privatization
!           diagnostics.  With '--param=openacc-privatization=quiet',
            don't diagnose.  This is the current default.  With
!           '--param=openacc-privatization=noisy', do diagnose.
  
!      'cycle-accurate-model'
            Specifies whether GCC should assume that the scheduling
            description is mostly a cycle-accurate model of the target
            processor the code is intended to run on, in the absence of
--- 15770,16004 ----
            loops.  The parameter only has an effect on targets that
            support partial vector loads and stores.
  
!      â€˜vect-inner-loop-cost-factorâ€™
            The maximum factor which the loop vectorizer applies to the
            cost of statements in an inner loop relative to the loop being
            vectorized.  The factor applied is the maximum of the
            estimated number of iterations of the inner loop and this
            parameter.  The default value of this parameter is 50.
  
!      â€˜vect-induction-floatâ€™
            Enable loop vectorization of floating point inductions.
  
!      â€˜vect-force-slpâ€™
            Force the use of SLP when vectorizing, fail if not possible.
  
!      â€˜vrp-block-limitâ€™
            Maximum number of basic blocks before VRP switches to a lower
            memory algorithm.
  
!      â€˜vrp-sparse-thresholdâ€™
            Maximum number of basic blocks before VRP uses a sparse bitmap
            cache.
  
!      â€˜vrp-switch-limitâ€™
            Maximum number of outgoing edges in a switch before VRP will
            not process it.
  
!      â€˜vrp-vector-thresholdâ€™
            Maximum number of basic blocks for VRP to use a basic cache
            vector.
  
!      â€˜avoid-fma-max-bitsâ€™
            Maximum number of bits for which we avoid creating FMAs.
  
!      â€˜fully-pipelined-fmaâ€™
            Whether the target fully pipelines FMA instructions.  If
            non-zero, reassociation considers the benefit of parallelizing
            FMA's multiplication part and addition part, assuming FMUL and
            FMA use the same units that can also do FADD.
  
!      â€˜sms-loop-average-count-thresholdâ€™
            A threshold on the average loop count considered by the swing
            modulo scheduler.
  
!      â€˜sms-dfa-historyâ€™
            The number of cycles the swing modulo scheduler considers when
            checking conflicts using DFA.
  
!      â€˜graphite-allow-codegen-errorsâ€™
!           Whether codegen errors should be ICEs when â€˜-fcheckingâ€™.
  
!      â€˜sms-max-ii-factorâ€™
            A factor for tuning the upper bound that swing modulo
            scheduler uses for scheduling a loop.
  
!      â€˜lra-max-considered-reload-pseudosâ€™
            The max number of reload pseudos which are considered during
            spilling a non-reload pseudo.
  
!      â€˜max-pow-sqrt-depthâ€™
            Maximum depth of sqrt chains to use when synthesizing
            exponentiation by a real constant.
  
!      â€˜max-dse-active-local-storesâ€™
            Maximum number of active local stores in RTL dead store
            elimination.
  
!      â€˜asan-instrument-allocasâ€™
            Enable asan allocas/VLAs protection.
  
!      â€˜max-iterations-computation-costâ€™
            Bound on the cost of an expression to compute the number of
            iterations.
  
!      â€˜max-isl-operationsâ€™
            Maximum number of isl operations, 0 means unlimited.
  
!      â€˜graphite-max-arrays-per-scopâ€™
            Maximum number of arrays per scop.
  
!      â€˜max-vartrack-reverse-op-sizeâ€™
            Max.  size of loc list for which reverse ops should be added.
  
!      â€˜fsm-scale-path-stmtsâ€™
            Scale factor to apply to the number of statements in a
            threading path crossing a loop backedge when comparing to
!           â€˜--param=max-jump-thread-duplication-stmtsâ€™.
  
!      â€˜uninit-control-dep-attemptsâ€™
            Maximum number of nested calls to search for control
            dependencies during uninitialized variable analysis.
  
!      â€˜uninit-max-chain-lenâ€™
            Maximum number of predicates anded for each predicate ored in
            the normalized predicate chain.
  
!      â€˜uninit-max-num-chainsâ€™
            Maximum number of predicates ored in the normalized predicate
            chain.
  
!      â€˜uninit-max-prune-workâ€™
            Maximum amount of work done to prune paths where the variable
            is always initialized.
  
!      â€˜sched-autopref-queue-depthâ€™
            Hardware autoprefetcher scheduler model control flag.  Number
            of lookahead cycles the model looks into; at ' ' only enable
            instruction sorting heuristic.
  
!      â€˜loop-versioning-max-inner-insnsâ€™
            The maximum number of instructions that an inner loop can have
            before the loop versioning pass considers it too big to copy.
  
!      â€˜loop-versioning-max-outer-insnsâ€™
            The maximum number of instructions that an outer loop can have
            before the loop versioning pass considers it too big to copy,
            discounting any instructions in inner loops that directly
            benefit from versioning.
  
!      â€˜ssa-name-def-chain-limitâ€™
            The maximum number of SSA_NAME assignments to follow in
            determining a property of a variable such as its value.  This
            limits the number of iterations or recursive calls GCC
            performs when optimizing certain statements or when
            determining their validity prior to issuing diagnostics.
  
!      â€˜store-merging-max-sizeâ€™
            Maximum size of a single store merging region in bytes.
  
!      â€˜store-forwarding-max-distanceâ€™
            Maximum number of instruction distance that a small store
            forwarded to a larger load may stall.  Value '0' disables the
            cost checks for the avoid-store-forwarding pass.
  
!      â€˜hash-table-verification-limitâ€™
            The number of elements for which hash table verification is
            done for each searched element.
  
!      â€˜max-find-base-term-valuesâ€™
            Maximum number of VALUEs handled during a single
            find_base_term call.
  
!      â€˜analyzer-max-enodes-per-program-pointâ€™
            The maximum number of exploded nodes per program point within
            the analyzer, before terminating analysis of that point.
  
!      â€˜analyzer-max-constraintsâ€™
            The maximum number of constraints per state.
  
!      â€˜analyzer-min-snodes-for-call-summaryâ€™
            The minimum number of supernodes within a function for the
            analyzer to consider summarizing its effects at call sites.
  
!      â€˜analyzer-max-enodes-for-full-dumpâ€™
            The maximum depth of exploded nodes that should appear in a
            dot dump before switching to a less verbose format.
  
!      â€˜analyzer-max-recursion-depthâ€™
            The maximum number of times a callsite can appear in a call
            stack within the analyzer, before terminating analysis of a
            call that would recurse deeper.
  
!      â€˜analyzer-max-svalue-depthâ€™
            The maximum depth of a symbolic value, before approximating
            the value as unknown.
  
!      â€˜analyzer-max-infeasible-edgesâ€™
            The maximum number of infeasible edges to reject before
            declaring a diagnostic as infeasible.
  
!      â€˜gimple-fe-computed-hot-bb-thresholdâ€™
            The number of executions of a basic block which is considered
            hot.  The parameter is used only in GIMPLE FE.
  
!      â€˜analyzer-bb-explosion-factorâ€™
            The maximum number of 'after supernode' exploded nodes within
            the analyzer per supernode, before terminating analysis.
  
!      â€˜analyzer-text-art-string-ellipsis-thresholdâ€™
            The number of bytes at which to ellipsize string literals in
            analyzer text art diagrams.
  
!      â€˜analyzer-text-art-ideal-canvas-widthâ€™
            The ideal width in characters of text art diagrams generated
            by the analyzer.
  
!      â€˜analyzer-text-art-string-ellipsis-head-lenâ€™
            The number of literal bytes to show at the head of a string
            literal in text art when ellipsizing it.
  
!      â€˜analyzer-text-art-string-ellipsis-tail-lenâ€™
            The number of literal bytes to show at the tail of a string
            literal in text art when ellipsizing it.
  
!      â€˜ranger-logical-depthâ€™
            Maximum depth of logical expression evaluation ranger will
            look through when evaluating outgoing edge ranges.
  
!      â€˜ranger-recompute-depthâ€™
            Maximum depth of instruction chains to consider for
            recomputation in the outgoing range calculator.
  
!      â€˜relation-block-limitâ€™
            Maximum number of relations the oracle will register in a
            basic block.
  
!      â€˜transitive-relations-work-boundâ€™
            Work bound when discovering transitive relations from existing
            relations.
  
!      â€˜min-pagesizeâ€™
            Minimum page size for warning and early break vectorization
            purposes.
  
!      â€˜openacc-kernelsâ€™
            Specify mode of OpenACC 'kernels' constructs handling.  With
!           â€˜--param=openacc-kernels=decomposeâ€™, OpenACC 'kernels'
            constructs are decomposed into parts, a sequence of compute
            constructs, each then handled individually.  This is work in
!           progress.  With â€˜--param=openacc-kernels=parloopsâ€™, OpenACC
!           'kernels' constructs are handled by the â€˜parloopsâ€™ pass, en
            bloc.  This is the current default.
  
!      â€˜openacc-privatizationâ€™
!           Control whether the â€˜-fopt-info-omp-noteâ€™ and applicable
!           â€˜-fdump-tree-*-detailsâ€™ options emit OpenACC privatization
!           diagnostics.  With â€˜--param=openacc-privatization=quietâ€™,
            don't diagnose.  This is the current default.  With
!           â€˜--param=openacc-privatization=noisyâ€™, do diagnose.
  
!      â€˜cycle-accurate-modelâ€™
            Specifies whether GCC should assume that the scheduling
            description is mostly a cycle-accurate model of the target
            processor the code is intended to run on, in the absence of
*************** includes experimental options that may p
*** 16008,16084 ****
  
       The following choices of NAME are available on AArch64 targets:
  
!      'aarch64-vect-compare-costs'
            When vectorizing, consider using multiple different approaches
            and use the cost model to choose the cheapest one.  This
            includes:
  
!              * Trying both SVE and Advanced SIMD, when SVE is available.
  
!              * Trying to use 64-bit Advanced SIMD vectors for the
                 smallest data elements, rather than using 128-bit vectors
                 for everything.
  
!              * Trying to use "unpacked" SVE vectors for smaller
                 elements.  This includes storing smaller elements in
                 larger containers and accessing elements with extending
                 loads and truncating stores.
  
!      'aarch64-float-recp-precision'
            The number of Newton iterations for calculating the reciprocal
            for float type.  The precision of division is proportional to
            this param when division approximation is enabled.  The
            default value is 1.
  
!      'aarch64-double-recp-precision'
            The number of Newton iterations for calculating the reciprocal
            for double type.  The precision of division is proportional to
            this param when division approximation is enabled.  The
            default value is 2.
  
!      'aarch64-autovec-preference'
            Force an ISA selection strategy for auto-vectorization.
!           'default'
                 Use the default heuristics.
!           'asimd-only'
                 Use only Advanced SIMD for auto-vectorization.
!           'sve-only'
                 Use only SVE for auto-vectorization.
!           'prefer-asimd'
                 Use both Advanced SIMD and SVE. Prefer Advanced SIMD when
                 the costs are deemed equal.
!           'prefer-sve'
                 Use both Advanced SIMD and SVE. Prefer SVE when the costs
                 are deemed equal.
  
!      'aarch64-ldp-policy'
            Fine-grained policy for load pairs.  With
!           '--param=aarch64-ldp-policy=default', use the policy of the
            tuning structure.  This is the current default.  With
!           '--param=aarch64-ldp-policy=always', emit ldp regardless of
!           alignment.  With '--param=aarch64-ldp-policy=never', do not
!           emit ldp.  With '--param=aarch64-ldp-policy=aligned', emit ldp
            only if the source pointer is aligned to at least double the
            alignment of the type.
  
!      'aarch64-stp-policy'
            Fine-grained policy for store pairs.  With
!           '--param=aarch64-stp-policy=default', use the policy of the
            tuning structure.  This is the current default.  With
!           '--param=aarch64-stp-policy=always', emit stp regardless of
!           alignment.  With '--param=aarch64-stp-policy=never', do not
!           emit stp.  With '--param=aarch64-stp-policy=aligned', emit stp
            only if the source pointer is aligned to at least double the
            alignment of the type.
  
!      'aarch64-ldp-alias-check-limit'
            Limit on the number of alias checks performed by the AArch64
            load/store pair fusion pass when attempting to form an
            ldp/stp.  Higher values make the pass more aggressive at
            re-ordering loads over stores, at the expense of increased
            compile time.
  
!      'aarch64-ldp-writeback'
            Param to control which writeback opportunities we try to
            handle in the AArch64 load/store pair fusion pass.  A value of
            zero disables writeback handling.  One means we try to form
--- 16012,16088 ----
  
       The following choices of NAME are available on AArch64 targets:
  
!      â€˜aarch64-vect-compare-costsâ€™
            When vectorizing, consider using multiple different approaches
            and use the cost model to choose the cheapest one.  This
            includes:
  
!              â€¢ Trying both SVE and Advanced SIMD, when SVE is available.
  
!              â€¢ Trying to use 64-bit Advanced SIMD vectors for the
                 smallest data elements, rather than using 128-bit vectors
                 for everything.
  
!              â€¢ Trying to use "unpacked" SVE vectors for smaller
                 elements.  This includes storing smaller elements in
                 larger containers and accessing elements with extending
                 loads and truncating stores.
  
!      â€˜aarch64-float-recp-precisionâ€™
            The number of Newton iterations for calculating the reciprocal
            for float type.  The precision of division is proportional to
            this param when division approximation is enabled.  The
            default value is 1.
  
!      â€˜aarch64-double-recp-precisionâ€™
            The number of Newton iterations for calculating the reciprocal
            for double type.  The precision of division is proportional to
            this param when division approximation is enabled.  The
            default value is 2.
  
!      â€˜aarch64-autovec-preferenceâ€™
            Force an ISA selection strategy for auto-vectorization.
!           â€˜defaultâ€™
                 Use the default heuristics.
!           â€˜asimd-onlyâ€™
                 Use only Advanced SIMD for auto-vectorization.
!           â€˜sve-onlyâ€™
                 Use only SVE for auto-vectorization.
!           â€˜prefer-asimdâ€™
                 Use both Advanced SIMD and SVE. Prefer Advanced SIMD when
                 the costs are deemed equal.
!           â€˜prefer-sveâ€™
                 Use both Advanced SIMD and SVE. Prefer SVE when the costs
                 are deemed equal.
  
!      â€˜aarch64-ldp-policyâ€™
            Fine-grained policy for load pairs.  With
!           â€˜--param=aarch64-ldp-policy=defaultâ€™, use the policy of the
            tuning structure.  This is the current default.  With
!           â€˜--param=aarch64-ldp-policy=alwaysâ€™, emit ldp regardless of
!           alignment.  With â€˜--param=aarch64-ldp-policy=neverâ€™, do not
!           emit ldp.  With â€˜--param=aarch64-ldp-policy=alignedâ€™, emit ldp
            only if the source pointer is aligned to at least double the
            alignment of the type.
  
!      â€˜aarch64-stp-policyâ€™
            Fine-grained policy for store pairs.  With
!           â€˜--param=aarch64-stp-policy=defaultâ€™, use the policy of the
            tuning structure.  This is the current default.  With
!           â€˜--param=aarch64-stp-policy=alwaysâ€™, emit stp regardless of
!           alignment.  With â€˜--param=aarch64-stp-policy=neverâ€™, do not
!           emit stp.  With â€˜--param=aarch64-stp-policy=alignedâ€™, emit stp
            only if the source pointer is aligned to at least double the
            alignment of the type.
  
!      â€˜aarch64-ldp-alias-check-limitâ€™
            Limit on the number of alias checks performed by the AArch64
            load/store pair fusion pass when attempting to form an
            ldp/stp.  Higher values make the pass more aggressive at
            re-ordering loads over stores, at the expense of increased
            compile time.
  
!      â€˜aarch64-ldp-writebackâ€™
            Param to control which writeback opportunities we try to
            handle in the AArch64 load/store pair fusion pass.  A value of
            zero disables writeback handling.  One means we try to form
*************** includes experimental options that may p
*** 16088,16094 ****
            trailing destructive updates of the base register used by a
            pair.
  
!      'aarch64-loop-vect-issue-rate-niters'
            The tuning for some AArch64 CPUs tries to take both latencies
            and issue rates into account when deciding whether a loop
            should be vectorized using SVE, vectorized using Advanced
--- 16092,16098 ----
            trailing destructive updates of the base register used by a
            pair.
  
!      â€˜aarch64-loop-vect-issue-rate-nitersâ€™
            The tuning for some AArch64 CPUs tries to take both latencies
            and issue rates into account when deciding whether a loop
            should be vectorized using SVE, vectorized using Advanced
*************** includes experimental options that may p
*** 16096,16102 ****
            N, GCC will not use this heuristic for loops that are known to
            execute in fewer than N Advanced SIMD iterations.
  
!      'aarch64-vect-unroll-limit'
            The vectorizer will use available tuning information to
            determine whether it would be beneficial to unroll the main
            vectorized loop and by how much.  This parameter set's the
--- 16100,16106 ----
            N, GCC will not use this heuristic for loops that are known to
            execute in fewer than N Advanced SIMD iterations.
  
!      â€˜aarch64-vect-unroll-limitâ€™
            The vectorizer will use available tuning information to
            determine whether it would be beneficial to unroll the main
            vectorized loop and by how much.  This parameter set's the
*************** includes experimental options that may p
*** 16105,16121 ****
  
       The following choices of NAME are available on GCN targets:
  
!      'gcn-preferred-vectorization-factor'
!           Preferred vectorization factor: 'default', '32', '64'.
  
       The following choices of NAME are available on i386 and x86_64
       targets:
  
!      'x86-stlf-window-ninsns'
            Instructions number above which STFL stall penalty can be
            compensated.
  
!      'x86-stv-max-visits'
            The maximum number of use and def visits when discovering a
            STV chain before the discovery is aborted.
  
--- 16109,16125 ----
  
       The following choices of NAME are available on GCN targets:
  
!      â€˜gcn-preferred-vectorization-factorâ€™
!           Preferred vectorization factor: â€˜defaultâ€™, â€˜32â€™, â€˜64â€™.
  
       The following choices of NAME are available on i386 and x86_64
       targets:
  
!      â€˜x86-stlf-window-ninsnsâ€™
            Instructions number above which STFL stall penalty can be
            compensated.
  
!      â€˜x86-stv-max-visitsâ€™
            The maximum number of use and def visits when discovering a
            STV chain before the discovery is aborted.
  
*************** hijacking.  There is also a general hook
*** 16137,16155 ****
  other forms of tracing or function-level instrumentation for debug or
  program analysis purposes.
  
! '-p'
! '-pg'
       Generate extra code to write profile information suitable for the
!      analysis program 'prof' (for '-p') or 'gprof' (for '-pg').  You
       must use this option when compiling the source files you want data
       about, and you must also use it when linking.
  
!      You can use the function attribute 'no_instrument_function' to
       suppress profiling of individual functions when compiling with
       these options.  *Note Common Function Attributes::.
  
! '-fprofile-arcs'
!      Add code so that program flow "arcs" are instrumented.  During
       execution the program records how many times each branch and call
       is executed and how many times it is taken or returns.  On targets
       that support constructors with priority support, profiling properly
--- 16141,16159 ----
  other forms of tracing or function-level instrumentation for debug or
  program analysis purposes.
  
! â€˜-pâ€™
! â€˜-pgâ€™
       Generate extra code to write profile information suitable for the
!      analysis program â€˜profâ€™ (for â€˜-pâ€™) or â€˜gprofâ€™ (for â€˜-pgâ€™).  You
       must use this option when compiling the source files you want data
       about, and you must also use it when linking.
  
!      You can use the function attribute â€˜no_instrument_functionâ€™ to
       suppress profiling of individual functions when compiling with
       these options.  *Note Common Function Attributes::.
  
! â€˜-fprofile-arcsâ€™
!      Add code so that program flow â€œarcsâ€� are instrumented.  During
       execution the program records how many times each branch and call
       is executed and how many times it is taken or returns.  On targets
       that support constructors with priority support, profiling properly
*************** program analysis purposes.
*** 16158,16196 ****
       variable.
  
       When the compiled program exits it saves this data to a file called
!      'AUXNAME.gcda' for each source file.  The data may be used for
!      profile-directed optimizations ('-fbranch-probabilities'), or for
!      test coverage analysis ('-ftest-coverage').  Each object file's
       AUXNAME is generated from the name of the output file, if
       explicitly specified and it is not the final executable, otherwise
       it is the basename of the source file.  In both cases any suffix is
!      removed (e.g. 'foo.gcda' for input file 'dir/foo.c', or
!      'dir/foo.gcda' for output file specified as '-o dir/foo.o').
  
       Note that if a command line directly links source files, the
       corresponding .GCDA files will be prefixed with the unsuffixed name
!      of the output file.  E.g.  'gcc a.c b.c -o binary' would generate
!      'binary-a.gcda' and 'binary-b.gcda' files.
  
! '-fcondition-coverage'
       Add code so that program conditions are instrumented.  During
       execution the program records what terms in a conditional
       contributes to a decision, which can be used to verify that all
       terms in a Boolean function are tested and have an independent
       effect on the outcome of a decision.  The result can be read with
!      'gcov --conditions'.
  
! '-fpath-coverage'
       Add code so that the paths taken are tracked.  During execution the
       program records the prime paths taken.  The number of paths grows
       very fast with complexity, and to avoid exploding compile times GCC
       will give up instrumentation if the approximate number of paths
!      exceeds the limit controlled by '-fpath-coverage-limit'.  The
!      result can be read with 'gcov --prime-paths --prime-paths-lines
!      --prime-paths-source', *Note gcov prime paths example::.
  
! '-fpath-coverage-limit=LIMIT'
!      The threshold at which point '-fpath-coverage' gives up on
       instrumenting a function.  This limit is approximate and
       conservative, as GCC uses a pessimistic heuristic which slightly
       overcounts the running number of paths, and gives up if the
--- 16162,16200 ----
       variable.
  
       When the compiled program exits it saves this data to a file called
!      â€˜AUXNAME.gcdaâ€™ for each source file.  The data may be used for
!      profile-directed optimizations (â€˜-fbranch-probabilitiesâ€™), or for
!      test coverage analysis (â€˜-ftest-coverageâ€™).  Each object file's
       AUXNAME is generated from the name of the output file, if
       explicitly specified and it is not the final executable, otherwise
       it is the basename of the source file.  In both cases any suffix is
!      removed (e.g. â€˜foo.gcdaâ€™ for input file â€˜dir/foo.câ€™, or
!      â€˜dir/foo.gcdaâ€™ for output file specified as â€˜-o dir/foo.oâ€™).
  
       Note that if a command line directly links source files, the
       corresponding .GCDA files will be prefixed with the unsuffixed name
!      of the output file.  E.g.  â€˜gcc a.c b.c -o binaryâ€™ would generate
!      â€˜binary-a.gcdaâ€™ and â€˜binary-b.gcdaâ€™ files.
  
! â€˜-fcondition-coverageâ€™
       Add code so that program conditions are instrumented.  During
       execution the program records what terms in a conditional
       contributes to a decision, which can be used to verify that all
       terms in a Boolean function are tested and have an independent
       effect on the outcome of a decision.  The result can be read with
!      â€˜gcov --conditionsâ€™.
  
! â€˜-fpath-coverageâ€™
       Add code so that the paths taken are tracked.  During execution the
       program records the prime paths taken.  The number of paths grows
       very fast with complexity, and to avoid exploding compile times GCC
       will give up instrumentation if the approximate number of paths
!      exceeds the limit controlled by â€˜-fpath-coverage-limitâ€™.  The
!      result can be read with â€˜gcov --prime-paths --prime-paths-lines
!      --prime-paths-sourceâ€™, *Note gcov prime paths example::.
  
! â€˜-fpath-coverage-limit=LIMITâ€™
!      The threshold at which point â€˜-fpath-coverageâ€™ gives up on
       instrumenting a function.  This limit is approximate and
       conservative, as GCC uses a pessimistic heuristic which slightly
       overcounts the running number of paths, and gives up if the
*************** program analysis purposes.
*** 16201,16249 ****
  
       *Note Cross-profiling::.
  
! '--coverage'
  
       This option is used to compile and link code instrumented for
!      coverage analysis.  The option is a synonym for '-fprofile-arcs'
!      '-ftest-coverage' (when compiling) and '-lgcov' (when linking).
       See the documentation for those options for more details.
  
!         * Compile the source files with '-fprofile-arcs' plus
            optimization and code generation options.  For test coverage
!           analysis, use the additional '-ftest-coverage' option.  You do
            not need to profile every source file in a program.
  
!         * Compile the source files additionally with
!           '-fprofile-abs-path' to create absolute path names in the
!           '.gcno' files.  This allows 'gcov' to find the correct sources
            in projects where compilations occur with different working
            directories.
  
!         * Link your object files with '-lgcov' or '-fprofile-arcs' (the
            latter implies the former).
  
!         * Run the program on a representative workload to generate the
            arc profile information.  This may be repeated any number of
            times.  You can run concurrent instances of your program, and
            provided that the file system supports locking, the data files
            will be correctly updated.  Unless a strict ISO C dialect
!           option is in effect, 'fork' calls are detected and correctly
            handled without double counting.
  
            Moreover, an object file can be recompiled multiple times and
!           the corresponding '.gcda' file merges as long as the source
            file and the compiler options are unchanged.
  
!         * For profile-directed optimizations, compile the source files
            again with the same optimization and code generation options
!           plus '-fbranch-probabilities' (*note Options that Control
            Optimization: Optimize Options.).
  
!         * For test coverage analysis, use 'gcov' to produce human
!           readable information from the '.gcno' and '.gcda' files.
!           Refer to the 'gcov' documentation for further information.
  
!      With '-fprofile-arcs', for each function of your program GCC
       creates a program flow graph, then finds a spanning tree for the
       graph.  Only arcs that are not on the spanning tree have to be
       instrumented: the compiler adds code to count the number of times
--- 16205,16253 ----
  
       *Note Cross-profiling::.
  
! â€˜--coverageâ€™
  
       This option is used to compile and link code instrumented for
!      coverage analysis.  The option is a synonym for â€˜-fprofile-arcsâ€™
!      â€˜-ftest-coverageâ€™ (when compiling) and â€˜-lgcovâ€™ (when linking).
       See the documentation for those options for more details.
  
!         â€¢ Compile the source files with â€˜-fprofile-arcsâ€™ plus
            optimization and code generation options.  For test coverage
!           analysis, use the additional â€˜-ftest-coverageâ€™ option.  You do
            not need to profile every source file in a program.
  
!         â€¢ Compile the source files additionally with
!           â€˜-fprofile-abs-pathâ€™ to create absolute path names in the
!           â€˜.gcnoâ€™ files.  This allows â€˜gcovâ€™ to find the correct sources
            in projects where compilations occur with different working
            directories.
  
!         â€¢ Link your object files with â€˜-lgcovâ€™ or â€˜-fprofile-arcsâ€™ (the
            latter implies the former).
  
!         â€¢ Run the program on a representative workload to generate the
            arc profile information.  This may be repeated any number of
            times.  You can run concurrent instances of your program, and
            provided that the file system supports locking, the data files
            will be correctly updated.  Unless a strict ISO C dialect
!           option is in effect, â€˜forkâ€™ calls are detected and correctly
            handled without double counting.
  
            Moreover, an object file can be recompiled multiple times and
!           the corresponding â€˜.gcdaâ€™ file merges as long as the source
            file and the compiler options are unchanged.
  
!         â€¢ For profile-directed optimizations, compile the source files
            again with the same optimization and code generation options
!           plus â€˜-fbranch-probabilitiesâ€™ (*note Options that Control
            Optimization: Optimize Options.).
  
!         â€¢ For test coverage analysis, use â€˜gcovâ€™ to produce human
!           readable information from the â€˜.gcnoâ€™ and â€˜.gcdaâ€™ files.
!           Refer to the â€˜gcovâ€™ documentation for further information.
  
!      With â€˜-fprofile-arcsâ€™, for each function of your program GCC
       creates a program flow graph, then finds a spanning tree for the
       graph.  Only arcs that are not on the spanning tree have to be
       instrumented: the compiler adds code to count the number of times
*************** program analysis purposes.
*** 16252,16334 ****
       block; otherwise, a new basic block must be created to hold the
       instrumentation code.
  
!      With '-fcondition-coverage', for each conditional in your program
       GCC creates a bitset and records the exercised boolean values that
       have an independent effect on the outcome of that expression.
  
!      With '-fpath-coverage', GCC finds and enumerates and records the
       taken prime paths of each function, unless the number of paths
!      would exceed the limit controlled by '-fpath-coverage-limit'.  If
       the limit is exceeded the function is not instrumented as if
!      '-fpath-coverage' was not used.  A prime path is the longest
       sequence of unique blocks, except possibly the first and last,
       which is not a subpath of any other path.
  
! '-ftest-coverage'
!      Produce a notes file that the 'gcov' code-coverage utility (*note
!      'gcov'--a Test Coverage Program: Gcov.) can use to show program
!      coverage.  Each source file's note file is called 'AUXNAME.gcno'.
!      Refer to the '-fprofile-arcs' option above for a description of
       AUXNAME and instructions on how to generate test coverage data.
       Coverage data matches the source files more closely if you do not
       optimize.
  
! '-fprofile-abs-path'
       Automatically convert relative source file names to absolute path
!      names in the '.gcno' files.  This allows 'gcov' to find the correct
       sources in projects where compilations occur with different working
       directories.
  
! '-fprofile-dir=PATH'
  
       Set the directory to search for the profile data files in to PATH.
       This option affects only the profile data generated by
!      '-fprofile-generate', '-ftest-coverage', '-fprofile-arcs' and used
!      by '-fprofile-use' and '-fbranch-probabilities' and its related
       options.  Both absolute and relative paths can be used.  By
       default, GCC uses the current directory as PATH, thus the profile
       data file appears in the same directory as the object file.  In
       order to prevent the file name clashing, if the object file name is
       not an absolute path, we mangle the absolute path of the
!      'SOURCENAME.gcda' file and use it as the file name of a '.gcda'
!      file.  See details about the file naming in '-fprofile-arcs'.  See
!      similar option '-fprofile-note'.
  
       When an executable is run in a massive parallel environment, it is
       recommended to save profile to different folders.  That can be done
       with variables in PATH that are exported during run-time:
  
!      '%p'
            process ID.
  
!      '%q{VAR}'
            value of environment variable VAR
  
! '-fprofile-generate'
! '-fprofile-generate=PATH'
  
       Enable options usually used for instrumenting application to
       produce profile useful for later recompilation with profile
!      feedback based optimization.  You must use '-fprofile-generate'
       both when compiling and when linking your program.
  
!      The following options are enabled: '-fprofile-arcs',
!      '-fprofile-values', '-finline-functions', and '-fipa-bit-cp'.
  
       If PATH is specified, GCC looks at the PATH to find the profile
!      feedback data files.  See '-fprofile-dir'.
  
       To optimize the program based on the collected profile information,
!      use '-fprofile-use'.  *Note Optimize Options::, for more
       information.
  
! '-fprofile-info-section'
! '-fprofile-info-section=NAME'
  
       Register the profile information in the specified section instead
       of using a constructor/destructor.  The section name is NAME if it
!      is specified, otherwise the section name defaults to '.gcov_info'.
!      A pointer to the profile information generated by '-fprofile-arcs'
       is placed in the specified section for each translation unit.  This
       option disables the profile information registration through a
       constructor and it disables the profile information processing
--- 16256,16338 ----
       block; otherwise, a new basic block must be created to hold the
       instrumentation code.
  
!      With â€˜-fcondition-coverageâ€™, for each conditional in your program
       GCC creates a bitset and records the exercised boolean values that
       have an independent effect on the outcome of that expression.
  
!      With â€˜-fpath-coverageâ€™, GCC finds and enumerates and records the
       taken prime paths of each function, unless the number of paths
!      would exceed the limit controlled by â€˜-fpath-coverage-limitâ€™.  If
       the limit is exceeded the function is not instrumented as if
!      â€˜-fpath-coverageâ€™ was not used.  A prime path is the longest
       sequence of unique blocks, except possibly the first and last,
       which is not a subpath of any other path.
  
! â€˜-ftest-coverageâ€™
!      Produce a notes file that the â€˜gcovâ€™ code-coverage utility (*note
!      â€˜gcovâ€™--a Test Coverage Program: Gcov.) can use to show program
!      coverage.  Each source file's note file is called â€˜AUXNAME.gcnoâ€™.
!      Refer to the â€˜-fprofile-arcsâ€™ option above for a description of
       AUXNAME and instructions on how to generate test coverage data.
       Coverage data matches the source files more closely if you do not
       optimize.
  
! â€˜-fprofile-abs-pathâ€™
       Automatically convert relative source file names to absolute path
!      names in the â€˜.gcnoâ€™ files.  This allows â€˜gcovâ€™ to find the correct
       sources in projects where compilations occur with different working
       directories.
  
! â€˜-fprofile-dir=PATHâ€™
  
       Set the directory to search for the profile data files in to PATH.
       This option affects only the profile data generated by
!      â€˜-fprofile-generateâ€™, â€˜-ftest-coverageâ€™, â€˜-fprofile-arcsâ€™ and used
!      by â€˜-fprofile-useâ€™ and â€˜-fbranch-probabilitiesâ€™ and its related
       options.  Both absolute and relative paths can be used.  By
       default, GCC uses the current directory as PATH, thus the profile
       data file appears in the same directory as the object file.  In
       order to prevent the file name clashing, if the object file name is
       not an absolute path, we mangle the absolute path of the
!      â€˜SOURCENAME.gcdaâ€™ file and use it as the file name of a â€˜.gcdaâ€™
!      file.  See details about the file naming in â€˜-fprofile-arcsâ€™.  See
!      similar option â€˜-fprofile-noteâ€™.
  
       When an executable is run in a massive parallel environment, it is
       recommended to save profile to different folders.  That can be done
       with variables in PATH that are exported during run-time:
  
!      â€˜%pâ€™
            process ID.
  
!      â€˜%q{VAR}â€™
            value of environment variable VAR
  
! â€˜-fprofile-generateâ€™
! â€˜-fprofile-generate=PATHâ€™
  
       Enable options usually used for instrumenting application to
       produce profile useful for later recompilation with profile
!      feedback based optimization.  You must use â€˜-fprofile-generateâ€™
       both when compiling and when linking your program.
  
!      The following options are enabled: â€˜-fprofile-arcsâ€™,
!      â€˜-fprofile-valuesâ€™, â€˜-finline-functionsâ€™, and â€˜-fipa-bit-cpâ€™.
  
       If PATH is specified, GCC looks at the PATH to find the profile
!      feedback data files.  See â€˜-fprofile-dirâ€™.
  
       To optimize the program based on the collected profile information,
!      use â€˜-fprofile-useâ€™.  *Note Optimize Options::, for more
       information.
  
! â€˜-fprofile-info-sectionâ€™
! â€˜-fprofile-info-section=NAMEâ€™
  
       Register the profile information in the specified section instead
       of using a constructor/destructor.  The section name is NAME if it
!      is specified, otherwise the section name defaults to â€˜.gcov_infoâ€™.
!      A pointer to the profile information generated by â€˜-fprofile-arcsâ€™
       is placed in the specified section for each translation unit.  This
       option disables the profile information registration through a
       constructor and it disables the profile information processing
*************** program analysis purposes.
*** 16405,16448 ****
              return 0;
            }
  
!      The 'merge-stream' subcommand of 'gcov-tool' may be used to
       deserialize the data stream generated by the
!      '__gcov_filename_to_gcfn' and '__gcov_info_to_gcda' functions and
!      merge the profile information into '.gcda' files on the host
       filesystem.
  
! '-fprofile-note=PATH'
  
!      If PATH is specified, GCC saves '.gcno' file into PATH location.
!      If you combine the option with multiple source files, the '.gcno'
       file will be overwritten.
  
! '-fprofile-prefix-path=PATH'
  
       This option can be used in combination with
!      'profile-generate='PROFILE_DIR and 'profile-use='PROFILE_DIR to
       inform GCC where is the base directory of built source tree.  By
       default PROFILE_DIR will contain files with mangled absolute paths
       of all object files in the built project.  This is not desirable
       when directory used to build the instrumented binary differs from
       the directory used to build the binary optimized with profile
       feedback because the profile data will not be found during the
!      optimized build.  In such setups '-fprofile-prefix-path='PATH with
       PATH pointing to the base directory of the build can be used to
       strip the irrelevant part of the path and keep all file names
       relative to the main build directory.
  
! '-fprofile-prefix-map=OLD=NEW'
!      When compiling files residing in directory 'OLD', record profiling
!      information (with '--coverage') describing them as if the files
!      resided in directory 'NEW' instead.  See also '-ffile-prefix-map'
!      and '-fcanon-prefix-map'.
  
! '-fprofile-update=METHOD'
  
       Alter the update method for an application instrumented for profile
       feedback based optimization.  The METHOD argument should be one of
!      'single', 'atomic' or 'prefer-atomic'.  The first one is useful for
       single-threaded applications, while the second one prevents profile
       corruption by emitting thread-safe code.
  
--- 16409,16452 ----
              return 0;
            }
  
!      The â€˜merge-streamâ€™ subcommand of â€˜gcov-toolâ€™ may be used to
       deserialize the data stream generated by the
!      â€˜__gcov_filename_to_gcfnâ€™ and â€˜__gcov_info_to_gcdaâ€™ functions and
!      merge the profile information into â€˜.gcdaâ€™ files on the host
       filesystem.
  
! â€˜-fprofile-note=PATHâ€™
  
!      If PATH is specified, GCC saves â€˜.gcnoâ€™ file into PATH location.
!      If you combine the option with multiple source files, the â€˜.gcnoâ€™
       file will be overwritten.
  
! â€˜-fprofile-prefix-path=PATHâ€™
  
       This option can be used in combination with
!      â€˜profile-generate=â€™PROFILE_DIR and â€˜profile-use=â€™PROFILE_DIR to
       inform GCC where is the base directory of built source tree.  By
       default PROFILE_DIR will contain files with mangled absolute paths
       of all object files in the built project.  This is not desirable
       when directory used to build the instrumented binary differs from
       the directory used to build the binary optimized with profile
       feedback because the profile data will not be found during the
!      optimized build.  In such setups â€˜-fprofile-prefix-path=â€™PATH with
       PATH pointing to the base directory of the build can be used to
       strip the irrelevant part of the path and keep all file names
       relative to the main build directory.
  
! â€˜-fprofile-prefix-map=OLD=NEWâ€™
!      When compiling files residing in directory â€˜OLDâ€™, record profiling
!      information (with â€˜--coverageâ€™) describing them as if the files
!      resided in directory â€˜NEWâ€™ instead.  See also â€˜-ffile-prefix-mapâ€™
!      and â€˜-fcanon-prefix-mapâ€™.
  
! â€˜-fprofile-update=METHODâ€™
  
       Alter the update method for an application instrumented for profile
       feedback based optimization.  The METHOD argument should be one of
!      â€˜singleâ€™, â€˜atomicâ€™ or â€˜prefer-atomicâ€™.  The first one is useful for
       single-threaded applications, while the second one prevents profile
       corruption by emitting thread-safe code.
  
*************** program analysis purposes.
*** 16450,16468 ****
       (or creates an detached thread), a profile file can be still
       corrupted.
  
!      Using 'prefer-atomic' would be transformed either to 'atomic', when
!      supported by a target, or to 'single' otherwise.  The GCC driver
!      automatically selects 'prefer-atomic' when '-pthread' is present in
!      the command line, otherwise the default method is 'single'.
  
!      If 'atomic' is selected, then the profile information is updated
       using atomic operations on a best-effort basis.  Ideally, the
       profile information is updated through atomic operations in
       hardware.  If the target platform does not support the required
!      atomic operations in hardware, however, 'libatomic' is available,
       then the profile information is updated through calls to
!      'libatomic'.  If the target platform neither supports the required
!      atomic operations in hardware nor 'libatomic', then the profile
       information is not atomically updated and a warning is issued.  In
       this case, the obtained profiling information may be corrupt for
       multi-threaded applications.
--- 16454,16472 ----
       (or creates an detached thread), a profile file can be still
       corrupted.
  
!      Using â€˜prefer-atomicâ€™ would be transformed either to â€˜atomicâ€™, when
!      supported by a target, or to â€˜singleâ€™ otherwise.  The GCC driver
!      automatically selects â€˜prefer-atomicâ€™ when â€˜-pthreadâ€™ is present in
!      the command line, otherwise the default method is â€˜singleâ€™.
  
!      If â€˜atomicâ€™ is selected, then the profile information is updated
       using atomic operations on a best-effort basis.  Ideally, the
       profile information is updated through atomic operations in
       hardware.  If the target platform does not support the required
!      atomic operations in hardware, however, â€˜libatomicâ€™ is available,
       then the profile information is updated through calls to
!      â€˜libatomicâ€™.  If the target platform neither supports the required
!      atomic operations in hardware nor â€˜libatomicâ€™, then the profile
       information is not atomically updated and a warning is issued.  In
       this case, the obtained profiling information may be corrupt for
       multi-threaded applications.
*************** program analysis purposes.
*** 16475,16610 ****
       updating a counter, then the profiling information may be in an
       inconsistent state.
  
! '-fprofile-filter-files=REGEX'
  
       Instrument only functions from files whose name matches any of the
       regular expressions (separated by semi-colons).
  
!      For example, '-fprofile-filter-files=main\.c;module.*\.c' will
!      instrument only 'main.c' and all C files starting with 'module'.
  
! '-fprofile-exclude-files=REGEX'
  
       Instrument only functions from files whose name does not match any
       of the regular expressions (separated by semi-colons).
  
!      For example, '-fprofile-exclude-files=/usr/.*' will prevent
!      instrumentation of all files that are located in the '/usr/'
       folder.
  
! '-fprofile-reproducible=[multithreaded|parallel-runs|serial]'
       Control level of reproducibility of profile gathered by
!      '-fprofile-generate'.  This makes it possible to rebuild program
       with same outcome which is useful, for example, for distribution
       packages.
  
!      With '-fprofile-reproducible=serial' the profile gathered by
!      '-fprofile-generate' is reproducible provided the trained program
       behaves the same at each invocation of the train run, it is not
       multi-threaded and profile data streaming is always done in the
       same order.  Note that profile streaming happens at the end of
!      program run but also before 'fork' function is invoked.
  
       Note that it is quite common that execution counts of some part of
       programs depends, for example, on length of temporary file names or
       memory space randomization (that may affect hash-table collision
       rate).  Such non-reproducible part of programs may be annotated by
!      'no_instrument_function' function attribute.  'gcov-dump' with '-l'
       can be used to dump gathered data and verify that they are indeed
       reproducible.
  
!      With '-fprofile-reproducible=parallel-runs' collected profile stays
       reproducible regardless the order of streaming of the data into
       gcda files.  This setting makes it possible to run multiple
!      instances of instrumented program in parallel (such as with 'make
!      -j').  This reduces quality of gathered data, in particular of
       indirect call profiling.
  
! '-fsanitize=address'
       Enable AddressSanitizer, a fast memory error detector.  Memory
       access instructions are instrumented to detect out-of-bounds and
       use-after-free bugs.  The option enables
!      '-fsanitize-address-use-after-scope'.  See
       <https://github.com/google/sanitizers/wiki/AddressSanitizer> for
       more details.  The run-time behavior can be influenced using the
!      'ASAN_OPTIONS' environment variable.  When set to 'help=1', the
       available options are shown at startup of the instrumented program.
       See
       <https://github.com/google/sanitizers/wiki/AddressSanitizerFlags#run-time-flags>
       for a list of supported options.  The option cannot be combined
!      with '-fsanitize=thread' or '-fsanitize=hwaddress'.  Note that the
!      only targets '-fsanitize=hwaddress' is currently supported on are
!      x86-64 (only with '-mlam=u48' or '-mlam=u57' options) and AArch64,
       in both cases only in ABIs with 64-bit pointers.
  
!      When compiling with '-fsanitize=address', you should also use '-g'
       to produce more meaningful output.  To get more accurate stack
!      traces, it is possible to use options such as '-O0', '-O1', or
!      '-Og' (which, for instance, prevent most function inlining),
!      '-fno-optimize-sibling-calls' (which prevents optimizing sibling
!      and tail recursive calls; this option is implicit for '-O0', '-O1',
!      or '-Og'), or '-fno-ipa-icf' (which disables Identical Code Folding
!      for functions).  Using '-fno-omit-frame-pointer' also improves
       stack traces.  Since multiple runs of the program may yield
       backtraces with different addresses due to ASLR (Address Space
       Layout Randomization), it may be desirable to turn ASLR off.  On
!      Linux, this can be achieved with 'setarch `uname -m` -R ./prog'.
  
! '-fsanitize=kernel-address'
       Enable AddressSanitizer for Linux kernel.  See
       <https://github.com/google/kernel-sanitizers> for more details.
  
! '-fsanitize=hwaddress'
       Enable Hardware-assisted AddressSanitizer, which uses a hardware
       ability to ignore the top byte of a pointer to allow the detection
       of memory errors with a low memory overhead.  Memory access
       instructions are instrumented to detect out-of-bounds and
       use-after-free bugs.  The option enables
!      '-fsanitize-address-use-after-scope'.  See
       <https://clang.llvm.org/docs/HardwareAssistedAddressSanitizerDesign.html>
       for more details.  The run-time behavior can be influenced using
!      the 'HWASAN_OPTIONS' environment variable.  When set to 'help=1',
       the available options are shown at startup of the instrumented
!      program.  The option cannot be combined with '-fsanitize=thread' or
!      '-fsanitize=address', and is currently only available on AArch64.
  
! '-fsanitize=kernel-hwaddress'
       Enable Hardware-assisted AddressSanitizer for compilation of the
!      Linux kernel.  Similar to '-fsanitize=kernel-address' but using an
       alternate instrumentation method, and similar to
!      '-fsanitize=hwaddress' but with instrumentation differences
       necessary for compiling the Linux kernel.  These differences are to
       avoid hwasan library initialization calls and to account for the
       stack pointer having a different value in its top byte.
  
       _Note:_ This option has different defaults to the
!      '-fsanitize=hwaddress'.  Instrumenting the stack and alloca calls
       are not on by default but are still possible by specifying the
!      command-line options '--param hwasan-instrument-stack=1' and
!      '--param hwasan-instrument-allocas=1' respectively.  Using a random
       frame tag is not implemented for kernel instrumentation.
  
! '-fsanitize=pointer-compare'
       Instrument comparison operation (<, <=, >, >=) with pointer
       operands.  The option must be combined with either
!      '-fsanitize=kernel-address' or '-fsanitize=address' The option
!      cannot be combined with '-fsanitize=thread'.  Note: By default the
       check is disabled at run time.  To enable it, add
!      'detect_invalid_pointer_pairs=2' to the environment variable
!      'ASAN_OPTIONS'.  Using 'detect_invalid_pointer_pairs=1' detects
       invalid operation only when both pointers are non-null.
  
! '-fsanitize=pointer-subtract'
       Instrument subtraction with pointer operands.  The option must be
!      combined with either '-fsanitize=kernel-address' or
!      '-fsanitize=address' The option cannot be combined with
!      '-fsanitize=thread'.  Note: By default the check is disabled at run
!      time.  To enable it, add 'detect_invalid_pointer_pairs=2' to the
!      environment variable 'ASAN_OPTIONS'.  Using
!      'detect_invalid_pointer_pairs=1' detects invalid operation only
       when both pointers are non-null.
  
! '-fsanitize=shadow-call-stack'
       Enable ShadowCallStack, a security enhancement mechanism used to
       protect programs against return address overwrites (e.g.  stack
       buffer overflows.)  It works by saving a function's return address
--- 16479,16614 ----
       updating a counter, then the profiling information may be in an
       inconsistent state.
  
! â€˜-fprofile-filter-files=REGEXâ€™
  
       Instrument only functions from files whose name matches any of the
       regular expressions (separated by semi-colons).
  
!      For example, â€˜-fprofile-filter-files=main\.c;module.*\.câ€™ will
!      instrument only â€˜main.câ€™ and all C files starting with 'module'.
  
! â€˜-fprofile-exclude-files=REGEXâ€™
  
       Instrument only functions from files whose name does not match any
       of the regular expressions (separated by semi-colons).
  
!      For example, â€˜-fprofile-exclude-files=/usr/.*â€™ will prevent
!      instrumentation of all files that are located in the â€˜/usr/â€™
       folder.
  
! â€˜-fprofile-reproducible=[multithreaded|parallel-runs|serial]â€™
       Control level of reproducibility of profile gathered by
!      â€˜-fprofile-generateâ€™.  This makes it possible to rebuild program
       with same outcome which is useful, for example, for distribution
       packages.
  
!      With â€˜-fprofile-reproducible=serialâ€™ the profile gathered by
!      â€˜-fprofile-generateâ€™ is reproducible provided the trained program
       behaves the same at each invocation of the train run, it is not
       multi-threaded and profile data streaming is always done in the
       same order.  Note that profile streaming happens at the end of
!      program run but also before â€˜forkâ€™ function is invoked.
  
       Note that it is quite common that execution counts of some part of
       programs depends, for example, on length of temporary file names or
       memory space randomization (that may affect hash-table collision
       rate).  Such non-reproducible part of programs may be annotated by
!      â€˜no_instrument_functionâ€™ function attribute.  â€˜gcov-dumpâ€™ with â€˜-lâ€™
       can be used to dump gathered data and verify that they are indeed
       reproducible.
  
!      With â€˜-fprofile-reproducible=parallel-runsâ€™ collected profile stays
       reproducible regardless the order of streaming of the data into
       gcda files.  This setting makes it possible to run multiple
!      instances of instrumented program in parallel (such as with â€˜make
!      -jâ€™).  This reduces quality of gathered data, in particular of
       indirect call profiling.
  
! â€˜-fsanitize=addressâ€™
       Enable AddressSanitizer, a fast memory error detector.  Memory
       access instructions are instrumented to detect out-of-bounds and
       use-after-free bugs.  The option enables
!      â€˜-fsanitize-address-use-after-scopeâ€™.  See
       <https://github.com/google/sanitizers/wiki/AddressSanitizer> for
       more details.  The run-time behavior can be influenced using the
!      â€˜ASAN_OPTIONSâ€™ environment variable.  When set to â€˜help=1â€™, the
       available options are shown at startup of the instrumented program.
       See
       <https://github.com/google/sanitizers/wiki/AddressSanitizerFlags#run-time-flags>
       for a list of supported options.  The option cannot be combined
!      with â€˜-fsanitize=threadâ€™ or â€˜-fsanitize=hwaddressâ€™.  Note that the
!      only targets â€˜-fsanitize=hwaddressâ€™ is currently supported on are
!      x86-64 (only with â€˜-mlam=u48â€™ or â€˜-mlam=u57â€™ options) and AArch64,
       in both cases only in ABIs with 64-bit pointers.
  
!      When compiling with â€˜-fsanitize=addressâ€™, you should also use â€˜-gâ€™
       to produce more meaningful output.  To get more accurate stack
!      traces, it is possible to use options such as â€˜-O0â€™, â€˜-O1â€™, or
!      â€˜-Ogâ€™ (which, for instance, prevent most function inlining),
!      â€˜-fno-optimize-sibling-callsâ€™ (which prevents optimizing sibling
!      and tail recursive calls; this option is implicit for â€˜-O0â€™, â€˜-O1â€™,
!      or â€˜-Ogâ€™), or â€˜-fno-ipa-icfâ€™ (which disables Identical Code Folding
!      for functions).  Using â€˜-fno-omit-frame-pointerâ€™ also improves
       stack traces.  Since multiple runs of the program may yield
       backtraces with different addresses due to ASLR (Address Space
       Layout Randomization), it may be desirable to turn ASLR off.  On
!      Linux, this can be achieved with â€˜setarch `uname -m` -R ./progâ€™.
  
! â€˜-fsanitize=kernel-addressâ€™
       Enable AddressSanitizer for Linux kernel.  See
       <https://github.com/google/kernel-sanitizers> for more details.
  
! â€˜-fsanitize=hwaddressâ€™
       Enable Hardware-assisted AddressSanitizer, which uses a hardware
       ability to ignore the top byte of a pointer to allow the detection
       of memory errors with a low memory overhead.  Memory access
       instructions are instrumented to detect out-of-bounds and
       use-after-free bugs.  The option enables
!      â€˜-fsanitize-address-use-after-scopeâ€™.  See
       <https://clang.llvm.org/docs/HardwareAssistedAddressSanitizerDesign.html>
       for more details.  The run-time behavior can be influenced using
!      the â€˜HWASAN_OPTIONSâ€™ environment variable.  When set to â€˜help=1â€™,
       the available options are shown at startup of the instrumented
!      program.  The option cannot be combined with â€˜-fsanitize=threadâ€™ or
!      â€˜-fsanitize=addressâ€™, and is currently only available on AArch64.
  
! â€˜-fsanitize=kernel-hwaddressâ€™
       Enable Hardware-assisted AddressSanitizer for compilation of the
!      Linux kernel.  Similar to â€˜-fsanitize=kernel-addressâ€™ but using an
       alternate instrumentation method, and similar to
!      â€˜-fsanitize=hwaddressâ€™ but with instrumentation differences
       necessary for compiling the Linux kernel.  These differences are to
       avoid hwasan library initialization calls and to account for the
       stack pointer having a different value in its top byte.
  
       _Note:_ This option has different defaults to the
!      â€˜-fsanitize=hwaddressâ€™.  Instrumenting the stack and alloca calls
       are not on by default but are still possible by specifying the
!      command-line options â€˜--param hwasan-instrument-stack=1â€™ and
!      â€˜--param hwasan-instrument-allocas=1â€™ respectively.  Using a random
       frame tag is not implemented for kernel instrumentation.
  
! â€˜-fsanitize=pointer-compareâ€™
       Instrument comparison operation (<, <=, >, >=) with pointer
       operands.  The option must be combined with either
!      â€˜-fsanitize=kernel-addressâ€™ or â€˜-fsanitize=addressâ€™ The option
!      cannot be combined with â€˜-fsanitize=threadâ€™.  Note: By default the
       check is disabled at run time.  To enable it, add
!      â€˜detect_invalid_pointer_pairs=2â€™ to the environment variable
!      â€˜ASAN_OPTIONSâ€™.  Using â€˜detect_invalid_pointer_pairs=1â€™ detects
       invalid operation only when both pointers are non-null.
  
! â€˜-fsanitize=pointer-subtractâ€™
       Instrument subtraction with pointer operands.  The option must be
!      combined with either â€˜-fsanitize=kernel-addressâ€™ or
!      â€˜-fsanitize=addressâ€™ The option cannot be combined with
!      â€˜-fsanitize=threadâ€™.  Note: By default the check is disabled at run
!      time.  To enable it, add â€˜detect_invalid_pointer_pairs=2â€™ to the
!      environment variable â€˜ASAN_OPTIONSâ€™.  Using
!      â€˜detect_invalid_pointer_pairs=1â€™ detects invalid operation only
       when both pointers are non-null.
  
! â€˜-fsanitize=shadow-call-stackâ€™
       Enable ShadowCallStack, a security enhancement mechanism used to
       protect programs against return address overwrites (e.g.  stack
       buffer overflows.)  It works by saving a function's return address
*************** program analysis purposes.
*** 16622,16709 ****
       may cause the ABI rules to be broken.
  
       On aarch64, the instrumentation makes use of the platform register
!      'x18'.  This generally means that any code that may run on the same
       thread as code compiled with ShadowCallStack must be compiled with
!      the flag '-ffixed-x18', otherwise functions compiled without
!      '-ffixed-x18' might clobber 'x18' and so corrupt the shadow stack
       pointer.
  
       Also, because there is no userspace runtime support, code compiled
       with ShadowCallStack cannot use exception handling.  Use
!      '-fno-exceptions' to turn off exceptions.
  
       See <https://clang.llvm.org/docs/ShadowCallStack.html> for more
       details.
  
! '-fsanitize=thread'
       Enable ThreadSanitizer, a fast data race detector.  Memory access
       instructions are instrumented to detect data race bugs.  See
       <https://github.com/google/sanitizers/wiki#threadsanitizer> for
       more details.  The run-time behavior can be influenced using the
!      'TSAN_OPTIONS' environment variable; see
       <https://github.com/google/sanitizers/wiki/ThreadSanitizerFlags>
       for a list of supported options.  The option cannot be combined
!      with '-fsanitize=address', '-fsanitize=leak'.
  
!      When compiling with '-fsanitize=thread', you should also use '-g'
       to produce more meaningful output.
  
       Note that sanitized atomic builtins cannot throw exceptions when
       operating on invalid memory addresses with non-call exceptions
!      ('-fnon-call-exceptions').
  
! '-fsanitize=leak'
       Enable LeakSanitizer, a memory leak detector.  This option only
       matters for linking of executables.  The executable is linked
!      against a library that overrides 'malloc' and other allocator
       functions.  See
       <https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer>
       for more details.  The run-time behavior can be influenced using
!      the 'LSAN_OPTIONS' environment variable.  The option cannot be
!      combined with '-fsanitize=thread'.
  
! '-fsanitize=undefined'
       Enable UndefinedBehaviorSanitizer, a fast undefined behavior
       detector.  Various computations are instrumented to detect
       undefined behavior at runtime.  See
       <https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html> for
       more details.  The run-time behavior can be influenced using the
!      'UBSAN_OPTIONS' environment variable.  Current suboptions are:
  
!      '-fsanitize=shift'
            This option enables checking that the result of a shift
            operation is not undefined.  Note that what exactly is
            considered undefined differs slightly between C and C++, as
            well as between ISO C90 and C99, etc.  This option has two
!           suboptions, '-fsanitize=shift-base' and
!           '-fsanitize=shift-exponent'.
  
!      '-fsanitize=shift-exponent'
            This option enables checking that the second argument of a
            shift operation is not negative and is smaller than the
            precision of the promoted first argument.
  
!      '-fsanitize=shift-base'
            If the second argument of a shift operation is within range,
            check that the result of a shift operation is not undefined.
            Note that what exactly is considered undefined differs
            slightly between C and C++, as well as between ISO C90 and
            C99, etc.
  
!      '-fsanitize=integer-divide-by-zero'
            Detect integer division by zero.
  
!      '-fsanitize=unreachable'
            With this option, the compiler turns the
!           '__builtin_unreachable' call into a diagnostics message call
!           instead.  When reaching the '__builtin_unreachable' call, the
            behavior is undefined.
  
!      '-fsanitize=vla-bound'
            This option instructs the compiler to check that the size of a
            variable length array is positive.
  
!      '-fsanitize=null'
            This option enables pointer checking.  Particularly, the
            application built with this option turned on will issue an
            error message when it tries to dereference a NULL pointer, or
--- 16626,16713 ----
       may cause the ABI rules to be broken.
  
       On aarch64, the instrumentation makes use of the platform register
!      â€˜x18â€™.  This generally means that any code that may run on the same
       thread as code compiled with ShadowCallStack must be compiled with
!      the flag â€˜-ffixed-x18â€™, otherwise functions compiled without
!      â€˜-ffixed-x18â€™ might clobber â€˜x18â€™ and so corrupt the shadow stack
       pointer.
  
       Also, because there is no userspace runtime support, code compiled
       with ShadowCallStack cannot use exception handling.  Use
!      â€˜-fno-exceptionsâ€™ to turn off exceptions.
  
       See <https://clang.llvm.org/docs/ShadowCallStack.html> for more
       details.
  
! â€˜-fsanitize=threadâ€™
       Enable ThreadSanitizer, a fast data race detector.  Memory access
       instructions are instrumented to detect data race bugs.  See
       <https://github.com/google/sanitizers/wiki#threadsanitizer> for
       more details.  The run-time behavior can be influenced using the
!      â€˜TSAN_OPTIONSâ€™ environment variable; see
       <https://github.com/google/sanitizers/wiki/ThreadSanitizerFlags>
       for a list of supported options.  The option cannot be combined
!      with â€˜-fsanitize=addressâ€™, â€˜-fsanitize=leakâ€™.
  
!      When compiling with â€˜-fsanitize=threadâ€™, you should also use â€˜-gâ€™
       to produce more meaningful output.
  
       Note that sanitized atomic builtins cannot throw exceptions when
       operating on invalid memory addresses with non-call exceptions
!      (â€˜-fnon-call-exceptionsâ€™).
  
! â€˜-fsanitize=leakâ€™
       Enable LeakSanitizer, a memory leak detector.  This option only
       matters for linking of executables.  The executable is linked
!      against a library that overrides â€˜mallocâ€™ and other allocator
       functions.  See
       <https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer>
       for more details.  The run-time behavior can be influenced using
!      the â€˜LSAN_OPTIONSâ€™ environment variable.  The option cannot be
!      combined with â€˜-fsanitize=threadâ€™.
  
! â€˜-fsanitize=undefinedâ€™
       Enable UndefinedBehaviorSanitizer, a fast undefined behavior
       detector.  Various computations are instrumented to detect
       undefined behavior at runtime.  See
       <https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html> for
       more details.  The run-time behavior can be influenced using the
!      â€˜UBSAN_OPTIONSâ€™ environment variable.  Current suboptions are:
  
!      â€˜-fsanitize=shiftâ€™
            This option enables checking that the result of a shift
            operation is not undefined.  Note that what exactly is
            considered undefined differs slightly between C and C++, as
            well as between ISO C90 and C99, etc.  This option has two
!           suboptions, â€˜-fsanitize=shift-baseâ€™ and
!           â€˜-fsanitize=shift-exponentâ€™.
  
!      â€˜-fsanitize=shift-exponentâ€™
            This option enables checking that the second argument of a
            shift operation is not negative and is smaller than the
            precision of the promoted first argument.
  
!      â€˜-fsanitize=shift-baseâ€™
            If the second argument of a shift operation is within range,
            check that the result of a shift operation is not undefined.
            Note that what exactly is considered undefined differs
            slightly between C and C++, as well as between ISO C90 and
            C99, etc.
  
!      â€˜-fsanitize=integer-divide-by-zeroâ€™
            Detect integer division by zero.
  
!      â€˜-fsanitize=unreachableâ€™
            With this option, the compiler turns the
!           â€˜__builtin_unreachableâ€™ call into a diagnostics message call
!           instead.  When reaching the â€˜__builtin_unreachableâ€™ call, the
            behavior is undefined.
  
!      â€˜-fsanitize=vla-boundâ€™
            This option instructs the compiler to check that the size of a
            variable length array is positive.
  
!      â€˜-fsanitize=nullâ€™
            This option enables pointer checking.  Particularly, the
            application built with this option turned on will issue an
            error message when it tries to dereference a NULL pointer, or
*************** program analysis purposes.
*** 16711,16870 ****
            NULL pointer, or if a method is invoked on an object pointed
            by a NULL pointer.
  
!      '-fsanitize=return'
            This option enables return statement checking.  Programs built
            with this option turned on will issue an error message when
            the end of a non-void function is reached without actually
            returning a value.  This option works in C++ only.
  
!      '-fsanitize=signed-integer-overflow'
            This option enables signed integer overflow checking.  We
!           check that the result of '+', '*', and both unary and binary
!           '-' does not overflow in the signed arithmetics.  This also
!           detects 'INT_MIN / -1' signed division.  Note, integer
            promotion rules must be taken into account.  That is, the
            following is not an overflow:
                 signed char a = SCHAR_MAX;
                 a++;
  
!      '-fsanitize=bounds'
            This option enables instrumentation of array bounds.  Various
            out of bounds accesses are detected.  Flexible array members,
            flexible array member-like arrays, and initializers of
            variables with static storage are not instrumented, with the
            exception of flexible array member-like arrays for which
!           '-fstrict-flex-arrays' or '-fstrict-flex-arrays=' options or
!           'strict_flex_array' attributes say they shouldn't be treated
            like flexible array member-like arrays.
  
!      '-fsanitize=bounds-strict'
            This option enables strict instrumentation of array bounds.
            Most out of bounds accesses are detected, including flexible
            array member-like arrays.  Initializers of variables with
            static storage are not instrumented.
  
!      '-fsanitize=alignment'
  
            This option enables checking of alignment of pointers when
            they are dereferenced, or when a reference is bound to
            insufficiently aligned target, or when a method or constructor
            is invoked on insufficiently aligned object.
  
!      '-fsanitize=object-size'
            This option enables instrumentation of memory references using
!           the '__builtin_dynamic_object_size' function.  Various out of
            bounds pointer accesses are detected.
  
!      '-fsanitize=float-divide-by-zero'
            Detect floating-point division by zero.  Unlike other similar
!           options, '-fsanitize=float-divide-by-zero' is not enabled by
!           '-fsanitize=undefined', since floating-point division by zero
            can be a legitimate way of obtaining infinities and NaNs.
  
!      '-fsanitize=float-cast-overflow'
            This option enables floating-point type to integer conversion
            checking.  We check that the result of the conversion does not
            overflow.  Unlike other similar options,
!           '-fsanitize=float-cast-overflow' is not enabled by
!           '-fsanitize=undefined'.  This option does not work well with
!           'FE_INVALID' exceptions enabled.
  
!      '-fsanitize=nonnull-attribute'
  
            This option enables instrumentation of calls, checking whether
            null values are not passed to arguments marked as requiring a
!           non-null value by the 'nonnull' function attribute.
  
!      '-fsanitize=returns-nonnull-attribute'
  
            This option enables instrumentation of return statements in
!           functions marked with 'returns_nonnull' function attribute, to
            detect returning of null values from such functions.
  
!      '-fsanitize=bool'
  
            This option enables instrumentation of loads from bool.  If a
            value other than 0/1 is loaded, a run-time error is issued.
  
!      '-fsanitize=enum'
  
            This option enables instrumentation of loads from an enum
            type.  If a value outside the range of values for the enum
            type is loaded, a run-time error is issued.
  
!      '-fsanitize=vptr'
  
            This option enables instrumentation of C++ member function
            calls, member accesses and some conversions between pointers
            to base and derived classes, to verify the referenced object
            has the correct dynamic type.
  
!      '-fsanitize=pointer-overflow'
  
            This option enables instrumentation of pointer arithmetics.
            If the pointer arithmetics overflows, a run-time error is
            issued.
  
!      '-fsanitize=builtin'
  
            This option enables instrumentation of arguments to selected
            builtin functions.  If an invalid value is passed to such
            arguments, a run-time error is issued.  E.g. passing 0 as the
!           argument to '__builtin_ctz' or '__builtin_clz' invokes
            undefined behavior and is diagnosed by this option.
  
       Note that sanitizers tend to increase the rate of false positive
!      warnings, most notably those around '-Wmaybe-uninitialized'.  We
!      recommend against combining '-Werror' and [the use of] sanitizers.
  
!      While '-ftrapv' causes traps for signed overflows to be emitted,
!      '-fsanitize=undefined' gives a diagnostic message.  This currently
       works only for the C family of languages.
  
! '-fno-sanitize=all'
  
       This option disables all previously enabled sanitizers.
!      '-fsanitize=all' is not allowed, as some sanitizers cannot be used
       together.
  
! '-fasan-shadow-offset=NUMBER'
       This option forces GCC to use custom shadow offset in
       AddressSanitizer checks.  It is useful for experimenting with
       different shadow memory layouts in Kernel AddressSanitizer.
  
! '-fsanitize-sections=S1,S2,...'
       Sanitize global variables in selected user-defined sections.  SI
       may contain wildcards.
  
! '-fsanitize-recover[=OPTS]'
!      '-fsanitize-recover=' controls error recovery mode for sanitizers
       mentioned in comma-separated list of OPTS.  Enabling this option
       for a sanitizer component causes it to attempt to continue running
       the program as if no error happened.  This means multiple runtime
       errors can be reported in a single program run, and the exit code
       of the program may indicate success even when errors have been
!      reported.  The '-fno-sanitize-recover=' option can be used to alter
       this behavior: only the first detected error is reported and
       program then exits with a non-zero exit code.
  
!      Currently this feature only works for '-fsanitize=undefined' (and
!      its suboptions except for '-fsanitize=unreachable' and
!      '-fsanitize=return'), '-fsanitize=float-cast-overflow',
!      '-fsanitize=float-divide-by-zero', '-fsanitize=bounds-strict',
!      '-fsanitize=kernel-address' and '-fsanitize=address'.  For these
       sanitizers error recovery is turned on by default, except
!      '-fsanitize=address', for which this feature is experimental.
!      '-fsanitize-recover=all' and '-fno-sanitize-recover=all' is also
       accepted, the former enables recovery for all sanitizers that
       support it, the latter disables recovery for all sanitizers that
       support it.
  
       Even if a recovery mode is turned on the compiler side, it needs to
       be also enabled on the runtime library side, otherwise the failures
!      are still fatal.  The runtime library defaults to 'halt_on_error=0'
       for ThreadSanitizer and UndefinedBehaviorSanitizer, while default
!      value for AddressSanitizer is 'halt_on_error=1'.  This can be
!      overridden through setting the 'halt_on_error' flag in the
       corresponding environment variable.
  
       Syntax without an explicit OPTS parameter is deprecated.  It is
--- 16715,16874 ----
            NULL pointer, or if a method is invoked on an object pointed
            by a NULL pointer.
  
!      â€˜-fsanitize=returnâ€™
            This option enables return statement checking.  Programs built
            with this option turned on will issue an error message when
            the end of a non-void function is reached without actually
            returning a value.  This option works in C++ only.
  
!      â€˜-fsanitize=signed-integer-overflowâ€™
            This option enables signed integer overflow checking.  We
!           check that the result of â€˜+â€™, â€˜*â€™, and both unary and binary
!           â€˜-â€™ does not overflow in the signed arithmetics.  This also
!           detects â€˜INT_MIN / -1â€™ signed division.  Note, integer
            promotion rules must be taken into account.  That is, the
            following is not an overflow:
                 signed char a = SCHAR_MAX;
                 a++;
  
!      â€˜-fsanitize=boundsâ€™
            This option enables instrumentation of array bounds.  Various
            out of bounds accesses are detected.  Flexible array members,
            flexible array member-like arrays, and initializers of
            variables with static storage are not instrumented, with the
            exception of flexible array member-like arrays for which
!           â€˜-fstrict-flex-arraysâ€™ or â€˜-fstrict-flex-arrays=â€™ options or
!           â€˜strict_flex_arrayâ€™ attributes say they shouldn't be treated
            like flexible array member-like arrays.
  
!      â€˜-fsanitize=bounds-strictâ€™
            This option enables strict instrumentation of array bounds.
            Most out of bounds accesses are detected, including flexible
            array member-like arrays.  Initializers of variables with
            static storage are not instrumented.
  
!      â€˜-fsanitize=alignmentâ€™
  
            This option enables checking of alignment of pointers when
            they are dereferenced, or when a reference is bound to
            insufficiently aligned target, or when a method or constructor
            is invoked on insufficiently aligned object.
  
!      â€˜-fsanitize=object-sizeâ€™
            This option enables instrumentation of memory references using
!           the â€˜__builtin_dynamic_object_sizeâ€™ function.  Various out of
            bounds pointer accesses are detected.
  
!      â€˜-fsanitize=float-divide-by-zeroâ€™
            Detect floating-point division by zero.  Unlike other similar
!           options, â€˜-fsanitize=float-divide-by-zeroâ€™ is not enabled by
!           â€˜-fsanitize=undefinedâ€™, since floating-point division by zero
            can be a legitimate way of obtaining infinities and NaNs.
  
!      â€˜-fsanitize=float-cast-overflowâ€™
            This option enables floating-point type to integer conversion
            checking.  We check that the result of the conversion does not
            overflow.  Unlike other similar options,
!           â€˜-fsanitize=float-cast-overflowâ€™ is not enabled by
!           â€˜-fsanitize=undefinedâ€™.  This option does not work well with
!           â€˜FE_INVALIDâ€™ exceptions enabled.
  
!      â€˜-fsanitize=nonnull-attributeâ€™
  
            This option enables instrumentation of calls, checking whether
            null values are not passed to arguments marked as requiring a
!           non-null value by the â€˜nonnullâ€™ function attribute.
  
!      â€˜-fsanitize=returns-nonnull-attributeâ€™
  
            This option enables instrumentation of return statements in
!           functions marked with â€˜returns_nonnullâ€™ function attribute, to
            detect returning of null values from such functions.
  
!      â€˜-fsanitize=boolâ€™
  
            This option enables instrumentation of loads from bool.  If a
            value other than 0/1 is loaded, a run-time error is issued.
  
!      â€˜-fsanitize=enumâ€™
  
            This option enables instrumentation of loads from an enum
            type.  If a value outside the range of values for the enum
            type is loaded, a run-time error is issued.
  
!      â€˜-fsanitize=vptrâ€™
  
            This option enables instrumentation of C++ member function
            calls, member accesses and some conversions between pointers
            to base and derived classes, to verify the referenced object
            has the correct dynamic type.
  
!      â€˜-fsanitize=pointer-overflowâ€™
  
            This option enables instrumentation of pointer arithmetics.
            If the pointer arithmetics overflows, a run-time error is
            issued.
  
!      â€˜-fsanitize=builtinâ€™
  
            This option enables instrumentation of arguments to selected
            builtin functions.  If an invalid value is passed to such
            arguments, a run-time error is issued.  E.g. passing 0 as the
!           argument to â€˜__builtin_ctzâ€™ or â€˜__builtin_clzâ€™ invokes
            undefined behavior and is diagnosed by this option.
  
       Note that sanitizers tend to increase the rate of false positive
!      warnings, most notably those around â€˜-Wmaybe-uninitializedâ€™.  We
!      recommend against combining â€˜-Werrorâ€™ and [the use of] sanitizers.
  
!      While â€˜-ftrapvâ€™ causes traps for signed overflows to be emitted,
!      â€˜-fsanitize=undefinedâ€™ gives a diagnostic message.  This currently
       works only for the C family of languages.
  
! â€˜-fno-sanitize=allâ€™
  
       This option disables all previously enabled sanitizers.
!      â€˜-fsanitize=allâ€™ is not allowed, as some sanitizers cannot be used
       together.
  
! â€˜-fasan-shadow-offset=NUMBERâ€™
       This option forces GCC to use custom shadow offset in
       AddressSanitizer checks.  It is useful for experimenting with
       different shadow memory layouts in Kernel AddressSanitizer.
  
! â€˜-fsanitize-sections=S1,S2,...â€™
       Sanitize global variables in selected user-defined sections.  SI
       may contain wildcards.
  
! â€˜-fsanitize-recover[=OPTS]â€™
!      â€˜-fsanitize-recover=â€™ controls error recovery mode for sanitizers
       mentioned in comma-separated list of OPTS.  Enabling this option
       for a sanitizer component causes it to attempt to continue running
       the program as if no error happened.  This means multiple runtime
       errors can be reported in a single program run, and the exit code
       of the program may indicate success even when errors have been
!      reported.  The â€˜-fno-sanitize-recover=â€™ option can be used to alter
       this behavior: only the first detected error is reported and
       program then exits with a non-zero exit code.
  
!      Currently this feature only works for â€˜-fsanitize=undefinedâ€™ (and
!      its suboptions except for â€˜-fsanitize=unreachableâ€™ and
!      â€˜-fsanitize=returnâ€™), â€˜-fsanitize=float-cast-overflowâ€™,
!      â€˜-fsanitize=float-divide-by-zeroâ€™, â€˜-fsanitize=bounds-strictâ€™,
!      â€˜-fsanitize=kernel-addressâ€™ and â€˜-fsanitize=addressâ€™.  For these
       sanitizers error recovery is turned on by default, except
!      â€˜-fsanitize=addressâ€™, for which this feature is experimental.
!      â€˜-fsanitize-recover=allâ€™ and â€˜-fno-sanitize-recover=allâ€™ is also
       accepted, the former enables recovery for all sanitizers that
       support it, the latter disables recovery for all sanitizers that
       support it.
  
       Even if a recovery mode is turned on the compiler side, it needs to
       be also enabled on the runtime library side, otherwise the failures
!      are still fatal.  The runtime library defaults to â€˜halt_on_error=0â€™
       for ThreadSanitizer and UndefinedBehaviorSanitizer, while default
!      value for AddressSanitizer is â€˜halt_on_error=1â€™.  This can be
!      overridden through setting the â€˜halt_on_errorâ€™ flag in the
       corresponding environment variable.
  
       Syntax without an explicit OPTS parameter is deprecated.  It is
*************** program analysis purposes.
*** 16872,16929 ****
  
            undefined,float-cast-overflow,float-divide-by-zero,bounds-strict
  
! '-fsanitize-address-use-after-scope'
       Enable sanitization of local variables to detect use-after-scope
!      bugs.  The option sets '-fstack-reuse' to 'none'.
  
! '-fsanitize-trap[=OPTS]'
!      The '-fsanitize-trap=' option instructs the compiler to report for
       sanitizers mentioned in comma-separated list of OPTS undefined
!      behavior using '__builtin_trap' rather than a 'libubsan' library
       routine.  If this option is enabled for certain sanitizer, it takes
!      precedence over the '-fsanitizer-recover=' for that sanitizer,
!      '__builtin_trap' will be emitted and be fatal regardless of whether
!      recovery is enabled or disabled using '-fsanitize-recover='.
  
!      The advantage of this is that the 'libubsan' library is not needed
       and is not linked in, so this is usable even in freestanding
       environments.
  
!      Currently this feature works with '-fsanitize=undefined' (and its
!      suboptions except for '-fsanitize=vptr'),
!      '-fsanitize=float-cast-overflow', '-fsanitize=float-divide-by-zero'
!      and '-fsanitize=bounds-strict'.  '-fsanitize-trap=all' can be also
!      specified, which enables it for 'undefined' suboptions,
!      '-fsanitize=float-cast-overflow', '-fsanitize=float-divide-by-zero'
!      and '-fsanitize=bounds-strict'.  If '-fsanitize-trap=undefined' or
!      '-fsanitize-trap=all' is used and '-fsanitize=vptr' is enabled on
       the command line, the instrumentation is silently ignored as the
!      instrumentation always needs 'libubsan' support,
!      '-fsanitize-trap=vptr' is not allowed.
  
! '-fsanitize-undefined-trap-on-error'
!      The '-fsanitize-undefined-trap-on-error' option is deprecated
!      equivalent of '-fsanitize-trap=all'.
  
! '-fsanitize-coverage=trace-pc'
       Enable coverage-guided fuzzing code instrumentation.  Inserts a
!      call to '__sanitizer_cov_trace_pc' into every basic block.
  
! '-fsanitize-coverage=trace-cmp'
       Enable dataflow guided fuzzing code instrumentation.  Inserts a
!      call to '__sanitizer_cov_trace_cmp1', '__sanitizer_cov_trace_cmp2',
!      '__sanitizer_cov_trace_cmp4' or '__sanitizer_cov_trace_cmp8' for
       integral comparison with both operands variable or
!      '__sanitizer_cov_trace_const_cmp1',
!      '__sanitizer_cov_trace_const_cmp2',
!      '__sanitizer_cov_trace_const_cmp4' or
!      '__sanitizer_cov_trace_const_cmp8' for integral comparison with one
!      operand constant, '__sanitizer_cov_trace_cmpf' or
!      '__sanitizer_cov_trace_cmpd' for float or double comparisons and
!      '__sanitizer_cov_trace_switch' for switch statements.
  
! '-fcf-protection=[full|branch|return|none|check]'
! '-fcf-protection'
       Enable code instrumentation to increase program security by
       checking that target addresses of control-flow transfer
       instructions (such as indirect function call, function return,
--- 16876,16933 ----
  
            undefined,float-cast-overflow,float-divide-by-zero,bounds-strict
  
! â€˜-fsanitize-address-use-after-scopeâ€™
       Enable sanitization of local variables to detect use-after-scope
!      bugs.  The option sets â€˜-fstack-reuseâ€™ to â€˜noneâ€™.
  
! â€˜-fsanitize-trap[=OPTS]â€™
!      The â€˜-fsanitize-trap=â€™ option instructs the compiler to report for
       sanitizers mentioned in comma-separated list of OPTS undefined
!      behavior using â€˜__builtin_trapâ€™ rather than a â€˜libubsanâ€™ library
       routine.  If this option is enabled for certain sanitizer, it takes
!      precedence over the â€˜-fsanitizer-recover=â€™ for that sanitizer,
!      â€˜__builtin_trapâ€™ will be emitted and be fatal regardless of whether
!      recovery is enabled or disabled using â€˜-fsanitize-recover=â€™.
  
!      The advantage of this is that the â€˜libubsanâ€™ library is not needed
       and is not linked in, so this is usable even in freestanding
       environments.
  
!      Currently this feature works with â€˜-fsanitize=undefinedâ€™ (and its
!      suboptions except for â€˜-fsanitize=vptrâ€™),
!      â€˜-fsanitize=float-cast-overflowâ€™, â€˜-fsanitize=float-divide-by-zeroâ€™
!      and â€˜-fsanitize=bounds-strictâ€™.  â€˜-fsanitize-trap=allâ€™ can be also
!      specified, which enables it for â€˜undefinedâ€™ suboptions,
!      â€˜-fsanitize=float-cast-overflowâ€™, â€˜-fsanitize=float-divide-by-zeroâ€™
!      and â€˜-fsanitize=bounds-strictâ€™.  If â€˜-fsanitize-trap=undefinedâ€™ or
!      â€˜-fsanitize-trap=allâ€™ is used and â€˜-fsanitize=vptrâ€™ is enabled on
       the command line, the instrumentation is silently ignored as the
!      instrumentation always needs â€˜libubsanâ€™ support,
!      â€˜-fsanitize-trap=vptrâ€™ is not allowed.
  
! â€˜-fsanitize-undefined-trap-on-errorâ€™
!      The â€˜-fsanitize-undefined-trap-on-errorâ€™ option is deprecated
!      equivalent of â€˜-fsanitize-trap=allâ€™.
  
! â€˜-fsanitize-coverage=trace-pcâ€™
       Enable coverage-guided fuzzing code instrumentation.  Inserts a
!      call to â€˜__sanitizer_cov_trace_pcâ€™ into every basic block.
  
! â€˜-fsanitize-coverage=trace-cmpâ€™
       Enable dataflow guided fuzzing code instrumentation.  Inserts a
!      call to â€˜__sanitizer_cov_trace_cmp1â€™, â€˜__sanitizer_cov_trace_cmp2â€™,
!      â€˜__sanitizer_cov_trace_cmp4â€™ or â€˜__sanitizer_cov_trace_cmp8â€™ for
       integral comparison with both operands variable or
!      â€˜__sanitizer_cov_trace_const_cmp1â€™,
!      â€˜__sanitizer_cov_trace_const_cmp2â€™,
!      â€˜__sanitizer_cov_trace_const_cmp4â€™ or
!      â€˜__sanitizer_cov_trace_const_cmp8â€™ for integral comparison with one
!      operand constant, â€˜__sanitizer_cov_trace_cmpfâ€™ or
!      â€˜__sanitizer_cov_trace_cmpdâ€™ for float or double comparisons and
!      â€˜__sanitizer_cov_trace_switchâ€™ for switch statements.
  
! â€˜-fcf-protection=[full|branch|return|none|check]â€™
! â€˜-fcf-protectionâ€™
       Enable code instrumentation to increase program security by
       checking that target addresses of control-flow transfer
       instructions (such as indirect function call, function return,
*************** program analysis purposes.
*** 16932,16965 ****
       against such threats as Return-oriented Programming (ROP), and
       similarly call/jmp-oriented programming (COP/JOP).
  
!      The '-fcf-protection=' keywords are interpreted as follows.
  
!      The value 'branch' tells the compiler to implement checking of
       validity of control-flow transfer at the point of indirect branch
       instructions, i.e. call/jmp instructions.
  
!      The value 'return' implements checking of validity at the point of
       returning from a function.
  
!      The value 'full' is an alias for specifying both 'branch' and
!      'return'.
  
!      The value 'check' is used for the final link with link-time
       optimization (LTO). An error is issued if LTO object files are
!      compiled with different '-fcf-protection' values.  The value
!      'check' is ignored at the compile time.
  
!      The value 'none' turns off instrumentation.
  
!      '-fcf-protection' is an alias for '-fcf-protection=full'.  To
!      override a previous '-fcf-protection' option on the command line,
!      add '-fcf-protection=none' and then '-fcf-protection=KIND'.
  
!      The macro '__CET__' is defined when '-fcf-protection' is used.  The
!      first bit of '__CET__' is set to 1 for the value 'branch' and the
!      second bit of '__CET__' is set to 1 for the 'return'.
  
!      You can also use the 'nocf_check' attribute to identify which
       functions and calls should be skipped from instrumentation (*note
       Function Attributes::).
  
--- 16936,16969 ----
       against such threats as Return-oriented Programming (ROP), and
       similarly call/jmp-oriented programming (COP/JOP).
  
!      The â€˜-fcf-protection=â€™ keywords are interpreted as follows.
  
!      The value â€˜branchâ€™ tells the compiler to implement checking of
       validity of control-flow transfer at the point of indirect branch
       instructions, i.e. call/jmp instructions.
  
!      The value â€˜returnâ€™ implements checking of validity at the point of
       returning from a function.
  
!      The value â€˜fullâ€™ is an alias for specifying both â€˜branchâ€™ and
!      â€˜returnâ€™.
  
!      The value â€˜checkâ€™ is used for the final link with link-time
       optimization (LTO). An error is issued if LTO object files are
!      compiled with different â€˜-fcf-protectionâ€™ values.  The value
!      â€˜checkâ€™ is ignored at the compile time.
  
!      The value â€˜noneâ€™ turns off instrumentation.
  
!      â€˜-fcf-protectionâ€™ is an alias for â€˜-fcf-protection=fullâ€™.  To
!      override a previous â€˜-fcf-protectionâ€™ option on the command line,
!      add â€˜-fcf-protection=noneâ€™ and then â€˜-fcf-protection=KINDâ€™.
  
!      The macro â€˜__CET__â€™ is defined when â€˜-fcf-protectionâ€™ is used.  The
!      first bit of â€˜__CET__â€™ is set to 1 for the value â€˜branchâ€™ and the
!      second bit of â€˜__CET__â€™ is set to 1 for the â€˜returnâ€™.
  
!      You can also use the â€˜nocf_checkâ€™ attribute to identify which
       functions and calls should be skipped from instrumentation (*note
       Function Attributes::).
  
*************** program analysis purposes.
*** 16967,16999 ****
       on Intel Control-flow Enforcement Technology (CET) which works for
       i686 processor or newer.
  
! '-fharden-compares'
       For every logical test that survives gimple optimizations and is
       _not_ the condition in a conditional branch (for example,
       conditions tested for conditional moves, or to store in boolean
       variables), emit extra code to compute and verify the reversed
!      condition, and to call '__builtin_trap' if the results do not
!      match.  Use with '-fharden-conditional-branches' to cover all
       conditionals.
  
! '-fharden-conditional-branches'
       For every non-vectorized conditional branch that survives gimple
       optimizations, emit extra code to compute and verify the reversed
!      condition, and to call '__builtin_trap' if the result is
!      unexpected.  Use with '-fharden-compares' to cover all
       conditionals.
  
! '-fharden-control-flow-redundancy'
       Emit extra code to set booleans when entering basic blocks, and to
       verify and trap, at function exits, when the booleans do not form
       an execution path that is compatible with the control flow graph.
  
       Verification takes place before returns, before mandatory tail
       calls (see below) and, optionally, before escaping exceptions with
!      '-fhardcfr-check-exceptions', before returning calls with
!      '-fhardcfr-check-returning-calls', and before noreturn calls with
!      '-fhardcfr-check-noreturn-calls').  Tuning options '--param
!      hardcfr-max-blocks' and '--param hardcfr-max-inline-blocks' are
       available.
  
       Tail call optimization takes place too late to affect control flow
--- 16971,17003 ----
       on Intel Control-flow Enforcement Technology (CET) which works for
       i686 processor or newer.
  
! â€˜-fharden-comparesâ€™
       For every logical test that survives gimple optimizations and is
       _not_ the condition in a conditional branch (for example,
       conditions tested for conditional moves, or to store in boolean
       variables), emit extra code to compute and verify the reversed
!      condition, and to call â€˜__builtin_trapâ€™ if the results do not
!      match.  Use with â€˜-fharden-conditional-branchesâ€™ to cover all
       conditionals.
  
! â€˜-fharden-conditional-branchesâ€™
       For every non-vectorized conditional branch that survives gimple
       optimizations, emit extra code to compute and verify the reversed
!      condition, and to call â€˜__builtin_trapâ€™ if the result is
!      unexpected.  Use with â€˜-fharden-comparesâ€™ to cover all
       conditionals.
  
! â€˜-fharden-control-flow-redundancyâ€™
       Emit extra code to set booleans when entering basic blocks, and to
       verify and trap, at function exits, when the booleans do not form
       an execution path that is compatible with the control flow graph.
  
       Verification takes place before returns, before mandatory tail
       calls (see below) and, optionally, before escaping exceptions with
!      â€˜-fhardcfr-check-exceptionsâ€™, before returning calls with
!      â€˜-fhardcfr-check-returning-callsâ€™, and before noreturn calls with
!      â€˜-fhardcfr-check-noreturn-callsâ€™).  Tuning options â€˜--param
!      hardcfr-max-blocksâ€™ and â€˜--param hardcfr-max-inline-blocksâ€™ are
       available.
  
       Tail call optimization takes place too late to affect control flow
*************** program analysis purposes.
*** 17003,17064 ****
       these possibilities are merely theoretical, as these conditions can
       only be met when using custom compiler plugins.
  
! '-fhardcfr-skip-leaf'
!      Disable '-fharden-control-flow-redundancy' in leaf functions.
  
! '-fhardcfr-check-exceptions'
!      When '-fharden-control-flow-redundancy' is active, check the
       recorded execution path against the control flow graph at exception
       escape points, as if the function body was wrapped with a cleanup
       handler that performed the check and reraised.  This option is
!      enabled by default; use '-fno-hardcfr-check-exceptions' to disable
       it.
  
! '-fhardcfr-check-returning-calls'
!      When '-fharden-control-flow-redundancy' is active, check the
       recorded execution path against the control flow graph before any
       function call immediately followed by a return of its result, if
       any, so as to not prevent tail-call optimization, whether or not it
       is ultimately optimized to a tail call.
  
       This option is enabled by default whenever sibling call
!      optimizations are enabled (see '-foptimize-sibling-calls'), but it
       can be enabled (or disabled, using its negated form) explicitly,
       regardless of the optimizations.
  
! '-fhardcfr-check-noreturn-calls=[always|no-xthrow|nothrow|never]'
!      When '-fharden-control-flow-redundancy' is active, check the
       recorded execution path against the control flow graph before
!      'noreturn' calls, either all of them ('always'), those that aren't
       expected to return control to the caller through an exception
!      ('no-xthrow', the default), those that may not return control to
!      the caller through an exception either ('nothrow'), or none of them
!      ('never').
  
!      Checking before a 'noreturn' function that may return control to
       the caller through an exception may cause checking to be performed
       more than once, if the exception is caught in the caller, whether
!      by a handler or a cleanup.  When '-fhardcfr-check-exceptions' is
!      also enabled, the compiler will avoid associating a 'noreturn' call
       with the implicitly-added cleanup handler, since it would be
       redundant with the check performed before the call, but other
       handlers or cleanups in the function, if activated, will modify the
       recorded execution path and check it again when another checkpoint
!      is hit.  The checkpoint may even be another 'noreturn' call, so
       checking may end up performed multiple times.
  
!      Various optimizers may cause calls to be marked as 'noreturn'
!      and/or 'nothrow', even in the absence of the corresponding
       attributes, which may affect the placement of checks before calls,
       as well as the addition of implicit cleanup handlers for them.
       This unpredictability, and the fact that raising and reraising
!      exceptions frequently amounts to implicitly calling 'noreturn'
!      functions, have made 'no-xthrow' the default setting for this
!      option: it excludes from the 'noreturn' treatment only internal
       functions used to (re)raise exceptions, that are not affected by
       these optimizations.
  
! '-fhardened'
       Enable a set of flags for C and C++ that improve the security of
       the generated code without affecting its ABI. The precise flags
       enabled may change between major releases of GCC, but are
--- 17007,17068 ----
       these possibilities are merely theoretical, as these conditions can
       only be met when using custom compiler plugins.
  
! â€˜-fhardcfr-skip-leafâ€™
!      Disable â€˜-fharden-control-flow-redundancyâ€™ in leaf functions.
  
! â€˜-fhardcfr-check-exceptionsâ€™
!      When â€˜-fharden-control-flow-redundancyâ€™ is active, check the
       recorded execution path against the control flow graph at exception
       escape points, as if the function body was wrapped with a cleanup
       handler that performed the check and reraised.  This option is
!      enabled by default; use â€˜-fno-hardcfr-check-exceptionsâ€™ to disable
       it.
  
! â€˜-fhardcfr-check-returning-callsâ€™
!      When â€˜-fharden-control-flow-redundancyâ€™ is active, check the
       recorded execution path against the control flow graph before any
       function call immediately followed by a return of its result, if
       any, so as to not prevent tail-call optimization, whether or not it
       is ultimately optimized to a tail call.
  
       This option is enabled by default whenever sibling call
!      optimizations are enabled (see â€˜-foptimize-sibling-callsâ€™), but it
       can be enabled (or disabled, using its negated form) explicitly,
       regardless of the optimizations.
  
! â€˜-fhardcfr-check-noreturn-calls=[always|no-xthrow|nothrow|never]â€™
!      When â€˜-fharden-control-flow-redundancyâ€™ is active, check the
       recorded execution path against the control flow graph before
!      â€˜noreturnâ€™ calls, either all of them (â€˜alwaysâ€™), those that aren't
       expected to return control to the caller through an exception
!      (â€˜no-xthrowâ€™, the default), those that may not return control to
!      the caller through an exception either (â€˜nothrowâ€™), or none of them
!      (â€˜neverâ€™).
  
!      Checking before a â€˜noreturnâ€™ function that may return control to
       the caller through an exception may cause checking to be performed
       more than once, if the exception is caught in the caller, whether
!      by a handler or a cleanup.  When â€˜-fhardcfr-check-exceptionsâ€™ is
!      also enabled, the compiler will avoid associating a â€˜noreturnâ€™ call
       with the implicitly-added cleanup handler, since it would be
       redundant with the check performed before the call, but other
       handlers or cleanups in the function, if activated, will modify the
       recorded execution path and check it again when another checkpoint
!      is hit.  The checkpoint may even be another â€˜noreturnâ€™ call, so
       checking may end up performed multiple times.
  
!      Various optimizers may cause calls to be marked as â€˜noreturnâ€™
!      and/or â€˜nothrowâ€™, even in the absence of the corresponding
       attributes, which may affect the placement of checks before calls,
       as well as the addition of implicit cleanup handlers for them.
       This unpredictability, and the fact that raising and reraising
!      exceptions frequently amounts to implicitly calling â€˜noreturnâ€™
!      functions, have made â€˜no-xthrowâ€™ the default setting for this
!      option: it excludes from the â€˜noreturnâ€™ treatment only internal
       functions used to (re)raise exceptions, that are not affected by
       these optimizations.
  
! â€˜-fhardenedâ€™
       Enable a set of flags for C and C++ that improve the security of
       the generated code without affecting its ABI. The precise flags
       enabled may change between major releases of GCC, but are
*************** program analysis purposes.
*** 17073,17120 ****
            -fcf-protection=full (x86 GNU/Linux only)
  
  
!      The list of options enabled by '-fhardened' can be generated using
!      the '--help=hardened' option.
  
!      When the system glibc is older than 2.35, '-D_FORTIFY_SOURCE=2' is
       used instead.
  
       This option is intended to be used in production builds, not merely
       in debug builds.
  
!      Currently, '-fhardened' is only supported on GNU/Linux targets.
  
!      '-fhardened' only enables a particular option if it wasn't already
!      specified anywhere on the command line.  For instance, '-fhardened'
!      '-fstack-protector' will only enable '-fstack-protector', but not
!      '-fstack-protector-strong'.
  
! '-fstack-protector'
       Emit extra code to check for buffer overflows, such as stack
       smashing attacks.  This is done by adding a guard variable to
       functions with vulnerable objects.  This includes functions that
!      call 'alloca', and functions with buffers larger than or equal to 8
       bytes.  The guards are initialized when a function is entered and
       then checked when the function exits.  If a guard check fails, an
       error message is printed and the program exits.  Only variables
       that are actually allocated on the stack are considered, optimized
       away variables or variables allocated in registers don't count.
  
! '-fstack-protector-all'
!      Like '-fstack-protector' except that all functions are protected.
  
! '-fstack-protector-strong'
!      Like '-fstack-protector' but includes additional functions to be
       protected -- those that have local array definitions, or have
       references to local frame addresses.  Only variables that are
       actually allocated on the stack are considered, optimized away
       variables or variables allocated in registers don't count.
  
! '-fstack-protector-explicit'
!      Like '-fstack-protector' but only protects those functions which
!      have the 'stack_protect' attribute.
  
! '-fstack-check'
       Generate code to verify that you do not go beyond the boundary of
       the stack.  You should specify this flag if you are running in an
       environment with multiple threads, but you only rarely need to
--- 17077,17124 ----
            -fcf-protection=full (x86 GNU/Linux only)
  
  
!      The list of options enabled by â€˜-fhardenedâ€™ can be generated using
!      the â€˜--help=hardenedâ€™ option.
  
!      When the system glibc is older than 2.35, â€˜-D_FORTIFY_SOURCE=2â€™ is
       used instead.
  
       This option is intended to be used in production builds, not merely
       in debug builds.
  
!      Currently, â€˜-fhardenedâ€™ is only supported on GNU/Linux targets.
  
!      â€˜-fhardenedâ€™ only enables a particular option if it wasn't already
!      specified anywhere on the command line.  For instance, â€˜-fhardenedâ€™
!      â€˜-fstack-protectorâ€™ will only enable â€˜-fstack-protectorâ€™, but not
!      â€˜-fstack-protector-strongâ€™.
  
! â€˜-fstack-protectorâ€™
       Emit extra code to check for buffer overflows, such as stack
       smashing attacks.  This is done by adding a guard variable to
       functions with vulnerable objects.  This includes functions that
!      call â€˜allocaâ€™, and functions with buffers larger than or equal to 8
       bytes.  The guards are initialized when a function is entered and
       then checked when the function exits.  If a guard check fails, an
       error message is printed and the program exits.  Only variables
       that are actually allocated on the stack are considered, optimized
       away variables or variables allocated in registers don't count.
  
! â€˜-fstack-protector-allâ€™
!      Like â€˜-fstack-protectorâ€™ except that all functions are protected.
  
! â€˜-fstack-protector-strongâ€™
!      Like â€˜-fstack-protectorâ€™ but includes additional functions to be
       protected -- those that have local array definitions, or have
       references to local frame addresses.  Only variables that are
       actually allocated on the stack are considered, optimized away
       variables or variables allocated in registers don't count.
  
! â€˜-fstack-protector-explicitâ€™
!      Like â€˜-fstack-protectorâ€™ but only protects those functions which
!      have the â€˜stack_protectâ€™ attribute.
  
! â€˜-fstack-checkâ€™
       Generate code to verify that you do not go beyond the boundary of
       the stack.  You should specify this flag if you are running in an
       environment with multiple threads, but you only rarely need to
*************** program analysis purposes.
*** 17127,17136 ****
       switch causes generation of code to ensure that they see the stack
       being extended.
  
!      You can additionally specify a string parameter: 'no' means no
!      checking, 'generic' means force the use of old-style checking,
!      'specific' means use the best checking method and is equivalent to
!      bare '-fstack-check'.
  
       Old-style checking is a generic mechanism that requires no specific
       target support in the compiler but comes with the following
--- 17131,17140 ----
       switch causes generation of code to ensure that they see the stack
       being extended.
  
!      You can additionally specify a string parameter: â€˜noâ€™ means no
!      checking, â€˜genericâ€™ means force the use of old-style checking,
!      â€˜specificâ€™ means use the best checking method and is equivalent to
!      bare â€˜-fstack-checkâ€™.
  
       Old-style checking is a generic mechanism that requires no specific
       target support in the compiler but comes with the following
*************** program analysis purposes.
*** 17148,17162 ****
            and the generic implementation, code performance is hampered.
  
       Note that old-style stack checking is also the fallback method for
!      'specific' if no target support has been added in the compiler.
  
!      '-fstack-check=' is designed for Ada's needs to detect infinite
!      recursion and stack overflows.  'specific' is an excellent choice
       when compiling Ada code.  It is not generally sufficient to protect
       against stack-clash attacks.  To protect against those you want
!      '-fstack-clash-protection'.
  
! '-fstack-clash-protection'
       Generate code to prevent stack clash style attacks.  When this
       option is enabled, the compiler will only allocate one page of
       stack space at a time and each page is accessed immediately after
--- 17152,17166 ----
            and the generic implementation, code performance is hampered.
  
       Note that old-style stack checking is also the fallback method for
!      â€˜specificâ€™ if no target support has been added in the compiler.
  
!      â€˜-fstack-check=â€™ is designed for Ada's needs to detect infinite
!      recursion and stack overflows.  â€˜specificâ€™ is an excellent choice
       when compiling Ada code.  It is not generally sufficient to protect
       against stack-clash attacks.  To protect against those you want
!      â€˜-fstack-clash-protectionâ€™.
  
! â€˜-fstack-clash-protectionâ€™
       Generate code to prevent stack clash style attacks.  When this
       option is enabled, the compiler will only allocate one page of
       stack space at a time and each page is accessed immediately after
*************** program analysis purposes.
*** 17164,17177 ****
       stack guard page provided by the operating system.
  
       Most targets do not fully support stack clash protection.  However,
!      on those targets '-fstack-clash-protection' will protect dynamic
!      stack allocations.  '-fstack-clash-protection' may also provide
       limited protection for static stack allocations if the target
!      supports '-fstack-check=specific'.
  
! '-fstack-limit-register=REG'
! '-fstack-limit-symbol=SYM'
! '-fno-stack-limit'
       Generate code to ensure that the stack does not grow beyond a
       certain value, either the value of a register or the address of a
       symbol.  If a larger stack is required, a signal is raised at run
--- 17168,17181 ----
       stack guard page provided by the operating system.
  
       Most targets do not fully support stack clash protection.  However,
!      on those targets â€˜-fstack-clash-protectionâ€™ will protect dynamic
!      stack allocations.  â€˜-fstack-clash-protectionâ€™ may also provide
       limited protection for static stack allocations if the target
!      supports â€˜-fstack-check=specificâ€™.
  
! â€˜-fstack-limit-register=REGâ€™
! â€˜-fstack-limit-symbol=SYMâ€™
! â€˜-fno-stack-limitâ€™
       Generate code to ensure that the stack does not grow beyond a
       certain value, either the value of a register or the address of a
       symbol.  If a larger stack is required, a signal is raised at run
*************** program analysis purposes.
*** 17179,17194 ****
       overruns the boundary, so it is possible to catch the signal
       without taking special precautions.
  
!      For instance, if the stack starts at absolute address '0x80000000'
       and grows downwards, you can use the flags
!      '-fstack-limit-symbol=__stack_limit' and
!      '-Wl,--defsym,__stack_limit=0x7ffe0000' to enforce a stack limit of
       128KB.  Note that this may only work with the GNU linker.
  
       You can locally override stack limit checking by using the
!      'no_stack_limit' function attribute (*note Function Attributes::).
  
! '-fsplit-stack'
       Generate code to automatically split the stack before it overflows.
       The resulting program has a discontiguous stack which can only
       overflow if the program is unable to allocate any more memory.
--- 17183,17198 ----
       overruns the boundary, so it is possible to catch the signal
       without taking special precautions.
  
!      For instance, if the stack starts at absolute address â€˜0x80000000â€™
       and grows downwards, you can use the flags
!      â€˜-fstack-limit-symbol=__stack_limitâ€™ and
!      â€˜-Wl,--defsym,__stack_limit=0x7ffe0000â€™ to enforce a stack limit of
       128KB.  Note that this may only work with the GNU linker.
  
       You can locally override stack limit checking by using the
!      â€˜no_stack_limitâ€™ function attribute (*note Function Attributes::).
  
! â€˜-fsplit-stackâ€™
       Generate code to automatically split the stack before it overflows.
       The resulting program has a discontiguous stack which can only
       overflow if the program is unable to allocate any more memory.
*************** program analysis purposes.
*** 17197,17257 ****
       thread.  This is currently only implemented for the x86 targets
       running GNU/Linux.
  
!      When code compiled with '-fsplit-stack' calls code compiled without
!      '-fsplit-stack', there may not be much stack space available for
       the latter code to run.  If compiling all code, including library
!      code, with '-fsplit-stack' is not an option, then the linker can
       fix up these calls so that the code compiled without
!      '-fsplit-stack' always has a large stack.  Support for this is
       implemented in the gold linker in GNU binutils release 2.21 and
       later.
  
! '-fstrub=disable'
!      Disable stack scrubbing entirely, ignoring any 'strub' attributes.
       See *Note Common Type Attributes::.
  
! '-fstrub=strict'
!      Functions default to 'strub' mode 'disabled', and apply 'strict'ly
       the restriction that only functions associated with
!      'strub'-'callable' modes ('at-calls', 'callable' and
!      'always_inline' 'internal') are 'callable' by functions with
!      'strub'-enabled modes ('at-calls' and 'internal').
  
! '-fstrub=relaxed'
!      Restore the default stack scrub ('strub') setting, namely, 'strub'
!      is only enabled as required by 'strub' attributes associated with
!      function and data types.  'Relaxed' means that strub contexts are
       only prevented from calling functions explicitly associated with
!      'strub' mode 'disabled'.  This option is only useful to override
!      other '-fstrub=*' options that precede it in the command line.
  
! '-fstrub=at-calls'
!      Enable 'at-calls' 'strub' mode where viable.  The primary use of
!      this option is for testing.  It exercises the 'strub' machinery in
!      scenarios strictly local to a translation unit.  This 'strub' mode
       modifies function interfaces, so any function that is visible to
       other translation units, or that has its address taken, will _not_
       be affected by this option.  Optimization options may also affect
!      viability.  See the 'strub' attribute documentation for details on
       viability and eligibility requirements.
  
! '-fstrub=internal'
!      Enable 'internal' 'strub' mode where viable.  The primary use of
       this option is for testing.  This option is intended to exercise
!      thoroughly parts of the 'strub' machinery that implement the less
!      efficient, but interface-preserving 'strub' mode.  Functions that
       would not be affected by this option are quite uncommon.
  
! '-fstrub=all'
!      Enable some 'strub' mode where viable.  When both strub modes are
!      viable, 'at-calls' is preferred.  '-fdump-ipa-strubm' adds function
       attributes that tell which mode was selected for each function.
       The primary use of this option is for testing, to exercise
!      thoroughly the 'strub' machinery.
  
! '-fvtable-verify=[std|preinit|none]'
       This option is only available when compiling C++ code.  It turns on
!      (or off, if using '-fvtable-verify=none') the security feature that
       verifies at run time, for every virtual call, that the vtable
       pointer through which the call is made is valid for the type of the
       object, and has not been corrupted or overwritten.  If an invalid
--- 17201,17261 ----
       thread.  This is currently only implemented for the x86 targets
       running GNU/Linux.
  
!      When code compiled with â€˜-fsplit-stackâ€™ calls code compiled without
!      â€˜-fsplit-stackâ€™, there may not be much stack space available for
       the latter code to run.  If compiling all code, including library
!      code, with â€˜-fsplit-stackâ€™ is not an option, then the linker can
       fix up these calls so that the code compiled without
!      â€˜-fsplit-stackâ€™ always has a large stack.  Support for this is
       implemented in the gold linker in GNU binutils release 2.21 and
       later.
  
! â€˜-fstrub=disableâ€™
!      Disable stack scrubbing entirely, ignoring any â€˜strubâ€™ attributes.
       See *Note Common Type Attributes::.
  
! â€˜-fstrub=strictâ€™
!      Functions default to â€˜strubâ€™ mode â€˜disabledâ€™, and apply â€˜strictâ€™ly
       the restriction that only functions associated with
!      â€˜strubâ€™-â€˜callableâ€™ modes (â€˜at-callsâ€™, â€˜callableâ€™ and
!      â€˜always_inlineâ€™ â€˜internalâ€™) are â€˜callableâ€™ by functions with
!      â€˜strubâ€™-enabled modes (â€˜at-callsâ€™ and â€˜internalâ€™).
  
! â€˜-fstrub=relaxedâ€™
!      Restore the default stack scrub (â€˜strubâ€™) setting, namely, â€˜strubâ€™
!      is only enabled as required by â€˜strubâ€™ attributes associated with
!      function and data types.  â€˜Relaxedâ€™ means that strub contexts are
       only prevented from calling functions explicitly associated with
!      â€˜strubâ€™ mode â€˜disabledâ€™.  This option is only useful to override
!      other â€˜-fstrub=*â€™ options that precede it in the command line.
  
! â€˜-fstrub=at-callsâ€™
!      Enable â€˜at-callsâ€™ â€˜strubâ€™ mode where viable.  The primary use of
!      this option is for testing.  It exercises the â€˜strubâ€™ machinery in
!      scenarios strictly local to a translation unit.  This â€˜strubâ€™ mode
       modifies function interfaces, so any function that is visible to
       other translation units, or that has its address taken, will _not_
       be affected by this option.  Optimization options may also affect
!      viability.  See the â€˜strubâ€™ attribute documentation for details on
       viability and eligibility requirements.
  
! â€˜-fstrub=internalâ€™
!      Enable â€˜internalâ€™ â€˜strubâ€™ mode where viable.  The primary use of
       this option is for testing.  This option is intended to exercise
!      thoroughly parts of the â€˜strubâ€™ machinery that implement the less
!      efficient, but interface-preserving â€˜strubâ€™ mode.  Functions that
       would not be affected by this option are quite uncommon.
  
! â€˜-fstrub=allâ€™
!      Enable some â€˜strubâ€™ mode where viable.  When both strub modes are
!      viable, â€˜at-callsâ€™ is preferred.  â€˜-fdump-ipa-strubmâ€™ adds function
       attributes that tell which mode was selected for each function.
       The primary use of this option is for testing, to exercise
!      thoroughly the â€˜strubâ€™ machinery.
  
! â€˜-fvtable-verify=[std|preinit|none]â€™
       This option is only available when compiling C++ code.  It turns on
!      (or off, if using â€˜-fvtable-verify=noneâ€™) the security feature that
       verifies at run time, for every virtual call, that the vtable
       pointer through which the call is made is valid for the type of the
       object, and has not been corrupted or overwritten.  If an invalid
*************** program analysis purposes.
*** 17260,17313 ****
  
       This option causes run-time data structures to be built at program
       startup, which are used for verifying the vtable pointers.  The
!      options 'std' and 'preinit' control the timing of when these data
       structures are built.  In both cases the data structures are built
!      before execution reaches 'main'.  Using '-fvtable-verify=std'
       causes the data structures to be built after shared libraries have
!      been loaded and initialized.  '-fvtable-verify=preinit' causes them
       to be built before shared libraries have been loaded and
       initialized.
  
       If this option appears multiple times in the command line with
!      different values specified, 'none' takes highest priority over both
!      'std' and 'preinit'; 'preinit' takes priority over 'std'.
  
! '-fvtv-debug'
!      When used in conjunction with '-fvtable-verify=std' or
!      '-fvtable-verify=preinit', causes debug versions of the runtime
       functions for the vtable verification feature to be called.  This
       flag also causes the compiler to log information about which vtable
       pointers it finds for each class.  This information is written to a
!      file named 'vtv_set_ptr_data.log' in the directory named by the
!      environment variable 'VTV_LOGS_DIR' if that is defined or the
       current working directory otherwise.
  
       Note: This feature _appends_ data to the log file.  If you want a
       fresh log file, be sure to delete any existing one.
  
! '-fvtv-counts'
       This is a debugging flag.  When used in conjunction with
!      '-fvtable-verify=std' or '-fvtable-verify=preinit', this causes the
       compiler to keep track of the total number of virtual calls it
       encounters and the number of verifications it inserts.  It also
       counts the number of calls to certain run-time library functions
       that it inserts and logs this information for each compilation
       unit.  The compiler writes this information to a file named
!      'vtv_count_data.log' in the directory named by the environment
!      variable 'VTV_LOGS_DIR' if that is defined or the current working
       directory otherwise.  It also counts the size of the vtable pointer
       sets for each class, and writes this information to
!      'vtv_class_set_sizes.log' in the same directory.
  
       Note: This feature _appends_ data to the log files.  To get fresh
       log files, be sure to delete any existing ones.
  
! '-finstrument-functions'
       Generate instrumentation calls for entry and exit to functions.
       Just after function entry and just before function exit, the
       following profiling functions are called with the address of the
       current function and its call site.  (On some platforms,
!      '__builtin_return_address' does not work beyond the current
       function, so the call site information may not be available to the
       profiling functions otherwise.)
  
--- 17264,17317 ----
  
       This option causes run-time data structures to be built at program
       startup, which are used for verifying the vtable pointers.  The
!      options â€˜stdâ€™ and â€˜preinitâ€™ control the timing of when these data
       structures are built.  In both cases the data structures are built
!      before execution reaches â€˜mainâ€™.  Using â€˜-fvtable-verify=stdâ€™
       causes the data structures to be built after shared libraries have
!      been loaded and initialized.  â€˜-fvtable-verify=preinitâ€™ causes them
       to be built before shared libraries have been loaded and
       initialized.
  
       If this option appears multiple times in the command line with
!      different values specified, â€˜noneâ€™ takes highest priority over both
!      â€˜stdâ€™ and â€˜preinitâ€™; â€˜preinitâ€™ takes priority over â€˜stdâ€™.
  
! â€˜-fvtv-debugâ€™
!      When used in conjunction with â€˜-fvtable-verify=stdâ€™ or
!      â€˜-fvtable-verify=preinitâ€™, causes debug versions of the runtime
       functions for the vtable verification feature to be called.  This
       flag also causes the compiler to log information about which vtable
       pointers it finds for each class.  This information is written to a
!      file named â€˜vtv_set_ptr_data.logâ€™ in the directory named by the
!      environment variable â€˜VTV_LOGS_DIRâ€™ if that is defined or the
       current working directory otherwise.
  
       Note: This feature _appends_ data to the log file.  If you want a
       fresh log file, be sure to delete any existing one.
  
! â€˜-fvtv-countsâ€™
       This is a debugging flag.  When used in conjunction with
!      â€˜-fvtable-verify=stdâ€™ or â€˜-fvtable-verify=preinitâ€™, this causes the
       compiler to keep track of the total number of virtual calls it
       encounters and the number of verifications it inserts.  It also
       counts the number of calls to certain run-time library functions
       that it inserts and logs this information for each compilation
       unit.  The compiler writes this information to a file named
!      â€˜vtv_count_data.logâ€™ in the directory named by the environment
!      variable â€˜VTV_LOGS_DIRâ€™ if that is defined or the current working
       directory otherwise.  It also counts the size of the vtable pointer
       sets for each class, and writes this information to
!      â€˜vtv_class_set_sizes.logâ€™ in the same directory.
  
       Note: This feature _appends_ data to the log files.  To get fresh
       log files, be sure to delete any existing ones.
  
! â€˜-finstrument-functionsâ€™
       Generate instrumentation calls for entry and exit to functions.
       Just after function entry and just before function exit, the
       following profiling functions are called with the address of the
       current function and its call site.  (On some platforms,
!      â€˜__builtin_return_addressâ€™ does not work beyond the current
       function, so the call site information may not be available to the
       profiling functions otherwise.)
  
*************** program analysis purposes.
*** 17324,17336 ****
       the inline function is entered and exited.  This means that
       addressable versions of such functions must be available.  If all
       your uses of a function are expanded inline, this may mean an
!      additional expansion of code size.  If you use 'extern inline' in
       your C code, an addressable version of such functions must be
       provided.  (This is normally the case anyway, but if you get lucky
       and the optimizer always expands the functions inline, you might
       have gotten away without providing static copies.)
  
!      A function may be given the attribute 'no_instrument_function', in
       which case this instrumentation is not done.  This can be used, for
       example, for the profiling functions listed above, high-priority
       interrupt routines, and any functions from which the profiling
--- 17328,17340 ----
       the inline function is entered and exited.  This means that
       addressable versions of such functions must be available.  If all
       your uses of a function are expanded inline, this may mean an
!      additional expansion of code size.  If you use â€˜extern inlineâ€™ in
       your C code, an addressable version of such functions must be
       provided.  (This is normally the case anyway, but if you get lucky
       and the optimizer always expands the functions inline, you might
       have gotten away without providing static copies.)
  
!      A function may be given the attribute â€˜no_instrument_functionâ€™, in
       which case this instrumentation is not done.  This can be used, for
       example, for the profiling functions listed above, high-priority
       interrupt routines, and any functions from which the profiling
*************** program analysis purposes.
*** 17338,17351 ****
       profiling routines generate output or allocate memory).  *Note
       Common Function Attributes::.
  
! '-finstrument-functions-once'
!      This is similar to '-finstrument-functions', but the profiling
       functions are called only once per instrumented function, i.e.  the
       first profiling function is called after the first entry into the
       instrumented function and the second profiling function is called
       before the exit corresponding to this first entry.
  
!      The definition of 'once' for the purpose of this option is a little
       vague because the implementation is not protected against data
       races.  As a result, the implementation only guarantees that the
       profiling functions are called at _least_ once per process and at
--- 17342,17355 ----
       profiling routines generate output or allocate memory).  *Note
       Common Function Attributes::.
  
! â€˜-finstrument-functions-onceâ€™
!      This is similar to â€˜-finstrument-functionsâ€™, but the profiling
       functions are called only once per instrumented function, i.e.  the
       first profiling function is called after the first entry into the
       instrumented function and the second profiling function is called
       before the exit corresponding to this first entry.
  
!      The definition of â€˜onceâ€™ for the purpose of this option is a little
       vague because the implementation is not protected against data
       races.  As a result, the implementation only guarantees that the
       profiling functions are called at _least_ once per process and at
*************** program analysis purposes.
*** 17354,17363 ****
       second function, unless it never reaches the exit of the
       instrumented function.
  
! '-finstrument-functions-exclude-file-list=FILE,FILE,...'
  
       Set the list of functions that are excluded from instrumentation
!      (see the description of '-finstrument-functions').  If the file
       that contains a function definition matches with one of FILE, then
       that function is not instrumented.  The match is done on
       substrings: if the FILE parameter is a substring of the file name,
--- 17358,17367 ----
       second function, unless it never reaches the exit of the
       instrumented function.
  
! â€˜-finstrument-functions-exclude-file-list=FILE,FILE,...â€™
  
       Set the list of functions that are excluded from instrumentation
!      (see the description of â€˜-finstrument-functionsâ€™).  If the file
       that contains a function definition matches with one of FILE, then
       that function is not instrumented.  The match is done on
       substrings: if the FILE parameter is a substring of the file name,
*************** program analysis purposes.
*** 17368,17425 ****
            -finstrument-functions-exclude-file-list=/bits/stl,include/sys
  
       excludes any inline function defined in files whose pathnames
!      contain '/bits/stl' or 'include/sys'.
  
!      If, for some reason, you want to include letter ',' in one of SYM,
!      write '\,'.  For example,
!      '-finstrument-functions-exclude-file-list='\,\,tmp'' (note the
       single quote surrounding the option).
  
! '-finstrument-functions-exclude-function-list=SYM,SYM,...'
  
!      This is similar to '-finstrument-functions-exclude-file-list', but
       this option sets the list of function names to be excluded from
       instrumentation.  The function name to be matched is its
!      user-visible name, such as 'vector<int> blah(const vector<int> &)',
!      not the internal mangled name (e.g., '_Z4blahRSt6vectorIiSaIiEE').
       The match is done on substrings: if the SYM parameter is a
       substring of the function name, it is considered to be a match.
       For C99 and C++ extended identifiers, the function name must be
       given in UTF-8, not using universal character names.
  
! '-fpatchable-function-entry=N[,M]'
       Generate N NOPs right at the beginning of each function, with the
       function entry point before the Mth NOP. If M is omitted, it
!      defaults to '0' so the function entry points to the address just at
       the first NOP. The NOP instructions reserve extra space which can
       be used to patch in any desired instrumentation at run time,
       provided that the code segment is writable.  The amount of space is
       controllable indirectly via the number of NOPs; the NOP instruction
       used corresponds to the instruction emitted by the internal GCC
!      back-end interface 'gen_nop'.  This behavior is target-specific and
       may also depend on the architecture variant and/or other
       compilation options.
  
       For run-time identification, the starting addresses of these areas,
       which correspond to their respective function entries minus M, are
!      additionally collected in the '__patchable_function_entries'
       section of the resulting binary.
  
!      Note that the value of '__attribute__ ((patchable_function_entry
!      (N,M)))' takes precedence over command-line option
!      '-fpatchable-function-entry=N,M'.  This can be used to increase the
       area size or to remove it completely on a single function.  If
!      'N=0', no pad location is recorded.
  
       The NOP instructions are inserted at--and maybe before, depending
       on M--the function entry address, even before the prologue.  On
       PowerPC with the ELFv2 ABI, for a function with dual entry points,
       the local entry point is this function entry address by default.
!      See the '-msplit-patch-nops' option to change this.
  
       The maximum value of N and M is 65535.  On PowerPC with the ELFv2
       ABI, for a function with dual entry points, the supported values
!      for M are 0, 2, 6 and 14 when not using '-msplit-patch-nops'.
  
  
  File: gcc.info,  Node: Preprocessor Options,  Next: Assembler Options,  Prev: Instrumentation Options,  Up: Invoking GCC
--- 17372,17429 ----
            -finstrument-functions-exclude-file-list=/bits/stl,include/sys
  
       excludes any inline function defined in files whose pathnames
!      contain â€˜/bits/stlâ€™ or â€˜include/sysâ€™.
  
!      If, for some reason, you want to include letter â€˜,â€™ in one of SYM,
!      write â€˜\,â€™.  For example,
!      â€˜-finstrument-functions-exclude-file-list='\,\,tmp'â€™ (note the
       single quote surrounding the option).
  
! â€˜-finstrument-functions-exclude-function-list=SYM,SYM,...â€™
  
!      This is similar to â€˜-finstrument-functions-exclude-file-listâ€™, but
       this option sets the list of function names to be excluded from
       instrumentation.  The function name to be matched is its
!      user-visible name, such as â€˜vector<int> blah(const vector<int> &)â€™,
!      not the internal mangled name (e.g., â€˜_Z4blahRSt6vectorIiSaIiEEâ€™).
       The match is done on substrings: if the SYM parameter is a
       substring of the function name, it is considered to be a match.
       For C99 and C++ extended identifiers, the function name must be
       given in UTF-8, not using universal character names.
  
! â€˜-fpatchable-function-entry=N[,M]â€™
       Generate N NOPs right at the beginning of each function, with the
       function entry point before the Mth NOP. If M is omitted, it
!      defaults to â€˜0â€™ so the function entry points to the address just at
       the first NOP. The NOP instructions reserve extra space which can
       be used to patch in any desired instrumentation at run time,
       provided that the code segment is writable.  The amount of space is
       controllable indirectly via the number of NOPs; the NOP instruction
       used corresponds to the instruction emitted by the internal GCC
!      back-end interface â€˜gen_nopâ€™.  This behavior is target-specific and
       may also depend on the architecture variant and/or other
       compilation options.
  
       For run-time identification, the starting addresses of these areas,
       which correspond to their respective function entries minus M, are
!      additionally collected in the â€˜__patchable_function_entriesâ€™
       section of the resulting binary.
  
!      Note that the value of â€˜__attribute__ ((patchable_function_entry
!      (N,M)))â€™ takes precedence over command-line option
!      â€˜-fpatchable-function-entry=N,Mâ€™.  This can be used to increase the
       area size or to remove it completely on a single function.  If
!      â€˜N=0â€™, no pad location is recorded.
  
       The NOP instructions are inserted at--and maybe before, depending
       on M--the function entry address, even before the prologue.  On
       PowerPC with the ELFv2 ABI, for a function with dual entry points,
       the local entry point is this function entry address by default.
!      See the â€˜-msplit-patch-nopsâ€™ option to change this.
  
       The maximum value of N and M is 65535.  On PowerPC with the ELFv2
       ABI, for a function with dual entry points, the supported values
!      for M are 0, 2, 6 and 14 when not using â€˜-msplit-patch-nopsâ€™.
  
  
  File: gcc.info,  Node: Preprocessor Options,  Next: Assembler Options,  Prev: Instrumentation Options,  Up: Invoking GCC
*************** File: gcc.info,  Node: Preprocessor Opti
*** 17430,17437 ****
  These options control the C preprocessor, which is run on each C source
  file before actual compilation.
  
!  If you use the '-E' option, nothing is done except preprocessing.  Some
! of these options make sense only together with '-E' because they cause
  the preprocessor output to be unsuitable for actual compilation.
  
   In addition to the options listed here, there are a number of options
--- 17434,17441 ----
  These options control the C preprocessor, which is run on each C source
  file before actual compilation.
  
!  If you use the â€˜-Eâ€™ option, nothing is done except preprocessing.  Some
! of these options make sense only together with â€˜-Eâ€™ because they cause
  the preprocessor output to be unsuitable for actual compilation.
  
   In addition to the options listed here, there are a number of options
*************** to control search paths for include file
*** 17439,17450 ****
  Options::.  Options to control preprocessor diagnostics are listed in
  *note Warning Options::.
  
! '-D NAME'
!      Predefine NAME as a macro, with definition '1'.
  
! '-D NAME=DEFINITION'
       The contents of DEFINITION are tokenized and processed as if they
!      appeared during translation phase three in a '#define' directive.
       In particular, the definition is truncated by embedded newline
       characters.
  
--- 17443,17454 ----
  Options::.  Options to control preprocessor diagnostics are listed in
  *note Warning Options::.
  
! â€˜-D NAMEâ€™
!      Predefine NAME as a macro, with definition â€˜1â€™.
  
! â€˜-D NAME=DEFINITIONâ€™
       The contents of DEFINITION are tokenized and processed as if they
!      appeared during translation phase three in a â€˜#defineâ€™ directive.
       In particular, the definition is truncated by embedded newline
       characters.
  
*************** Options::.  Options to control preproces
*** 17455,17565 ****
       If you wish to define a function-like macro on the command line,
       write its argument list with surrounding parentheses before the
       equals sign (if any).  Parentheses are meaningful to most shells,
!      so you should quote the option.  With 'sh' and 'csh',
!      '-D'NAME(ARGS...)=DEFINITION'' works.
  
!      '-D' and '-U' options are processed in the order they are given on
!      the command line.  All '-imacros FILE' and '-include FILE' options
!      are processed after all '-D' and '-U' options.
  
! '-U NAME'
       Cancel any previous definition of NAME, either built in or provided
!      with a '-D' option.
  
! '-include FILE'
!      Process FILE as if '#include "file"' appeared as the first line of
       the primary source file.  However, the first directory searched for
       FILE is the preprocessor's working directory _instead of_ the
       directory containing the main source file.  If not found there, it
!      is searched for in the remainder of the '#include "..."' search
       chain as normal.
  
!      If multiple '-include' options are given, the files are included in
       the order they appear on the command line.
  
! '-imacros FILE'
!      Exactly like '-include', except that any output produced by
       scanning FILE is thrown away.  Macros it defines remain defined.
       This allows you to acquire all the macros from a header without
       also processing its declarations.
  
!      All files specified by '-imacros' are processed before all files
!      specified by '-include'.
  
! '-undef'
       Do not predefine any system-specific or GCC-specific macros.  The
       standard predefined macros remain defined.
  
! '-pthread'
       Define additional macros required for using the POSIX threads
       library.  You should use this option consistently for both
       compilation and linking.  This option is supported on GNU/Linux
       targets, most other Unix derivatives, and also on x86 Cygwin and
       MinGW targets.
  
! '-M'
       Instead of outputting the result of preprocessing, output a rule
!      suitable for 'make' describing the dependencies of the main source
!      file.  The preprocessor outputs one 'make' rule containing the
       object file name for that source file, a colon, and the names of
!      all the included files, including those coming from '-include' or
!      '-imacros' command-line options.
  
!      Unless specified explicitly (with '-MT' or '-MQ'), the object file
       name consists of the name of the source file with any suffix
       replaced with object file suffix and with any leading directory
       parts removed.  If there are many included files then the rule is
!      split into several lines using '\'-newline.  The rule has no
       commands.
  
       This option does not suppress the preprocessor's debug output, such
!      as '-dM'.  To avoid mixing such debug output with the dependency
       rules you should explicitly specify the dependency output file with
!      '-MF', or use an environment variable like 'DEPENDENCIES_OUTPUT'
       (*note Environment Variables::).  Debug output is still sent to the
       regular output stream as normal.
  
!      Passing '-M' to the driver implies '-E', and suppresses warnings
!      with an implicit '-w'.
  
! '-MM'
!      Like '-M' but do not mention header files that are found in system
       header directories, nor header files that are included, directly or
       indirectly, from such a header.
  
       This implies that the choice of angle brackets or double quotes in
!      an '#include' directive does not in itself determine whether that
!      header appears in '-MM' dependency output.
  
! '-MF FILE'
!      When used with '-M' or '-MM', specifies a file to write the
!      dependencies to.  If no '-MF' switch is given the preprocessor
       sends the rules to the same place it would send preprocessed
       output.
  
!      When used with the driver options '-MD' or '-MMD', '-MF' overrides
       the default dependency output file.
  
!      If FILE is '-', then the dependencies are written to 'stdout'.
  
! '-MG'
!      In conjunction with an option such as '-M' requesting dependency
!      generation, '-MG' assumes missing header files are generated files
       and adds them to the dependency list without raising an error.  The
!      dependency filename is taken directly from the '#include' directive
!      without prepending any path.  '-MG' also suppresses preprocessed
       output, as a missing header file renders this useless.
  
       This feature is used in automatic updating of makefiles.
  
! '-Mno-modules'
       Disable dependency generation for compiled module interfaces.
  
! '-MP'
       This option instructs CPP to add a phony target for each dependency
       other than the main file, causing each to depend on nothing.  These
!      dummy rules work around errors 'make' gives if you remove header
!      files without updating the 'Makefile' to match.
  
       This is typical output:
  
--- 17459,17569 ----
       If you wish to define a function-like macro on the command line,
       write its argument list with surrounding parentheses before the
       equals sign (if any).  Parentheses are meaningful to most shells,
!      so you should quote the option.  With â€˜shâ€™ and â€˜cshâ€™,
!      â€˜-D'NAME(ARGS...)=DEFINITION'â€™ works.
  
!      â€˜-Dâ€™ and â€˜-Uâ€™ options are processed in the order they are given on
!      the command line.  All â€˜-imacros FILEâ€™ and â€˜-include FILEâ€™ options
!      are processed after all â€˜-Dâ€™ and â€˜-Uâ€™ options.
  
! â€˜-U NAMEâ€™
       Cancel any previous definition of NAME, either built in or provided
!      with a â€˜-Dâ€™ option.
  
! â€˜-include FILEâ€™
!      Process FILE as if â€˜#include "file"â€™ appeared as the first line of
       the primary source file.  However, the first directory searched for
       FILE is the preprocessor's working directory _instead of_ the
       directory containing the main source file.  If not found there, it
!      is searched for in the remainder of the â€˜#include "..."â€™ search
       chain as normal.
  
!      If multiple â€˜-includeâ€™ options are given, the files are included in
       the order they appear on the command line.
  
! â€˜-imacros FILEâ€™
!      Exactly like â€˜-includeâ€™, except that any output produced by
       scanning FILE is thrown away.  Macros it defines remain defined.
       This allows you to acquire all the macros from a header without
       also processing its declarations.
  
!      All files specified by â€˜-imacrosâ€™ are processed before all files
!      specified by â€˜-includeâ€™.
  
! â€˜-undefâ€™
       Do not predefine any system-specific or GCC-specific macros.  The
       standard predefined macros remain defined.
  
! â€˜-pthreadâ€™
       Define additional macros required for using the POSIX threads
       library.  You should use this option consistently for both
       compilation and linking.  This option is supported on GNU/Linux
       targets, most other Unix derivatives, and also on x86 Cygwin and
       MinGW targets.
  
! â€˜-Mâ€™
       Instead of outputting the result of preprocessing, output a rule
!      suitable for â€˜makeâ€™ describing the dependencies of the main source
!      file.  The preprocessor outputs one â€˜makeâ€™ rule containing the
       object file name for that source file, a colon, and the names of
!      all the included files, including those coming from â€˜-includeâ€™ or
!      â€˜-imacrosâ€™ command-line options.
  
!      Unless specified explicitly (with â€˜-MTâ€™ or â€˜-MQâ€™), the object file
       name consists of the name of the source file with any suffix
       replaced with object file suffix and with any leading directory
       parts removed.  If there are many included files then the rule is
!      split into several lines using â€˜\â€™-newline.  The rule has no
       commands.
  
       This option does not suppress the preprocessor's debug output, such
!      as â€˜-dMâ€™.  To avoid mixing such debug output with the dependency
       rules you should explicitly specify the dependency output file with
!      â€˜-MFâ€™, or use an environment variable like â€˜DEPENDENCIES_OUTPUTâ€™
       (*note Environment Variables::).  Debug output is still sent to the
       regular output stream as normal.
  
!      Passing â€˜-Mâ€™ to the driver implies â€˜-Eâ€™, and suppresses warnings
!      with an implicit â€˜-wâ€™.
  
! â€˜-MMâ€™
!      Like â€˜-Mâ€™ but do not mention header files that are found in system
       header directories, nor header files that are included, directly or
       indirectly, from such a header.
  
       This implies that the choice of angle brackets or double quotes in
!      an â€˜#includeâ€™ directive does not in itself determine whether that
!      header appears in â€˜-MMâ€™ dependency output.
  
! â€˜-MF FILEâ€™
!      When used with â€˜-Mâ€™ or â€˜-MMâ€™, specifies a file to write the
!      dependencies to.  If no â€˜-MFâ€™ switch is given the preprocessor
       sends the rules to the same place it would send preprocessed
       output.
  
!      When used with the driver options â€˜-MDâ€™ or â€˜-MMDâ€™, â€˜-MFâ€™ overrides
       the default dependency output file.
  
!      If FILE is â€˜-â€™, then the dependencies are written to â€˜stdoutâ€™.
  
! â€˜-MGâ€™
!      In conjunction with an option such as â€˜-Mâ€™ requesting dependency
!      generation, â€˜-MGâ€™ assumes missing header files are generated files
       and adds them to the dependency list without raising an error.  The
!      dependency filename is taken directly from the â€˜#includeâ€™ directive
!      without prepending any path.  â€˜-MGâ€™ also suppresses preprocessed
       output, as a missing header file renders this useless.
  
       This feature is used in automatic updating of makefiles.
  
! â€˜-Mno-modulesâ€™
       Disable dependency generation for compiled module interfaces.
  
! â€˜-MPâ€™
       This option instructs CPP to add a phony target for each dependency
       other than the main file, causing each to depend on nothing.  These
!      dummy rules work around errors â€˜makeâ€™ gives if you remove header
!      files without updating the â€˜Makefileâ€™ to match.
  
       This is typical output:
  
*************** Options::.  Options to control preproces
*** 17567,17667 ****
  
            test.h:
  
! '-MT TARGET'
  
       Change the target of the rule emitted by dependency generation.  By
       default CPP takes the name of the main input file, deletes any
!      directory components and any file suffix such as '.c', and appends
       the platform's usual object suffix.  The result is the target.
  
!      An '-MT' option sets the target to be exactly the string you
       specify.  If you want multiple targets, you can specify them as a
!      single argument to '-MT', or use multiple '-MT' options.
  
!      For example, '-MT '$(objpfx)foo.o'' might give
  
            $(objpfx)foo.o: foo.c
  
! '-MQ TARGET'
  
!      Same as '-MT', but it quotes any characters which are special to
!      Make.  '-MQ '$(objpfx)foo.o'' gives
  
            $$(objpfx)foo.o: foo.c
  
       The default target is automatically quoted, as if it were given
!      with '-MQ'.
  
! '-MD'
!      '-MD' is equivalent to '-M -MF FILE', except that '-E' is not
!      implied.  The driver determines FILE based on whether an '-o'
       option is given.  If it is, the driver uses its argument but with a
!      suffix of '.d', otherwise it takes the name of the input file,
!      removes any directory components and suffix, and applies a '.d'
       suffix.
  
!      If '-MD' is used in conjunction with '-E', any '-o' switch is
       understood to specify the dependency output file (*note -MF:
!      dashMF.), but if used without '-E', each '-o' is understood to
       specify a target object file.
  
!      Since '-E' is not implied, '-MD' can be used to generate a
       dependency output file as a side effect of the compilation process.
  
! '-MMD'
!      Like '-MD' except mention only user header files, not system header
       files.
  
! '-fpreprocessed'
       Indicate to the preprocessor that the input file has already been
       preprocessed.  This suppresses things like macro expansion,
       trigraph conversion, escaped newline splicing, and processing of
       most directives.  The preprocessor still recognizes and removes
!      comments, so that you can pass a file preprocessed with '-C' to the
       compiler without problems.  In this mode the integrated
       preprocessor is little more than a tokenizer for the front ends.
  
!      '-fpreprocessed' is implicit if the input file has one of the
!      extensions '.i', '.ii' or '.mi'.  These are the extensions that GCC
!      uses for preprocessed files created by '-save-temps'.
  
! '-fdirectives-only'
       When preprocessing, handle directives, but do not expand macros.
  
!      The option's behavior depends on the '-E' and '-fpreprocessed'
       options.
  
!      With '-E', preprocessing is limited to the handling of directives
!      such as '#define', '#ifdef', and '#error'.  Other preprocessor
       operations, such as macro expansion and trigraph conversion are not
!      performed.  In addition, the '-dD' option is implicitly enabled.
  
!      With '-fpreprocessed', predefinition of command line and most
!      builtin macros is disabled.  Macros such as '__LINE__', which are
       contextually dependent, are handled normally.  This enables
!      compilation of files previously preprocessed with '-E
!      -fdirectives-only'.
  
!      With both '-E' and '-fpreprocessed', the rules for '-fpreprocessed'
       take precedence.  This enables full preprocessing of files
!      previously preprocessed with '-E -fdirectives-only'.
  
! '-fdollars-in-identifiers'
!      Accept '$' in identifiers.
  
! '-fextended-identifiers'
       Accept universal character names and extended characters in
       identifiers.  This option is enabled by default for C99 (and later
       C standard versions) and C++.
  
! '-fno-canonical-system-headers'
       When preprocessing, do not shorten system header paths with
       canonicalization.
  
! '-fmax-include-depth=DEPTH'
       Set the maximum depth of the nested #include.  The default is 200.
  
! '-fsearch-include-path[=KIND]'
       Look for input files on the #include path, not just the current
       directory.  This is particularly useful with C++20 modules, for
       which both header units and module interface units need to be
--- 17571,17671 ----
  
            test.h:
  
! â€˜-MT TARGETâ€™
  
       Change the target of the rule emitted by dependency generation.  By
       default CPP takes the name of the main input file, deletes any
!      directory components and any file suffix such as â€˜.câ€™, and appends
       the platform's usual object suffix.  The result is the target.
  
!      An â€˜-MTâ€™ option sets the target to be exactly the string you
       specify.  If you want multiple targets, you can specify them as a
!      single argument to â€˜-MTâ€™, or use multiple â€˜-MTâ€™ options.
  
!      For example, â€˜-MT '$(objpfx)foo.o'â€™ might give
  
            $(objpfx)foo.o: foo.c
  
! â€˜-MQ TARGETâ€™
  
!      Same as â€˜-MTâ€™, but it quotes any characters which are special to
!      Make.  â€˜-MQ '$(objpfx)foo.o'â€™ gives
  
            $$(objpfx)foo.o: foo.c
  
       The default target is automatically quoted, as if it were given
!      with â€˜-MQâ€™.
  
! â€˜-MDâ€™
!      â€˜-MDâ€™ is equivalent to â€˜-M -MF FILEâ€™, except that â€˜-Eâ€™ is not
!      implied.  The driver determines FILE based on whether an â€˜-oâ€™
       option is given.  If it is, the driver uses its argument but with a
!      suffix of â€˜.dâ€™, otherwise it takes the name of the input file,
!      removes any directory components and suffix, and applies a â€˜.dâ€™
       suffix.
  
!      If â€˜-MDâ€™ is used in conjunction with â€˜-Eâ€™, any â€˜-oâ€™ switch is
       understood to specify the dependency output file (*note -MF:
!      dashMF.), but if used without â€˜-Eâ€™, each â€˜-oâ€™ is understood to
       specify a target object file.
  
!      Since â€˜-Eâ€™ is not implied, â€˜-MDâ€™ can be used to generate a
       dependency output file as a side effect of the compilation process.
  
! â€˜-MMDâ€™
!      Like â€˜-MDâ€™ except mention only user header files, not system header
       files.
  
! â€˜-fpreprocessedâ€™
       Indicate to the preprocessor that the input file has already been
       preprocessed.  This suppresses things like macro expansion,
       trigraph conversion, escaped newline splicing, and processing of
       most directives.  The preprocessor still recognizes and removes
!      comments, so that you can pass a file preprocessed with â€˜-Câ€™ to the
       compiler without problems.  In this mode the integrated
       preprocessor is little more than a tokenizer for the front ends.
  
!      â€˜-fpreprocessedâ€™ is implicit if the input file has one of the
!      extensions â€˜.iâ€™, â€˜.iiâ€™ or â€˜.miâ€™.  These are the extensions that GCC
!      uses for preprocessed files created by â€˜-save-tempsâ€™.
  
! â€˜-fdirectives-onlyâ€™
       When preprocessing, handle directives, but do not expand macros.
  
!      The option's behavior depends on the â€˜-Eâ€™ and â€˜-fpreprocessedâ€™
       options.
  
!      With â€˜-Eâ€™, preprocessing is limited to the handling of directives
!      such as â€˜#defineâ€™, â€˜#ifdefâ€™, and â€˜#errorâ€™.  Other preprocessor
       operations, such as macro expansion and trigraph conversion are not
!      performed.  In addition, the â€˜-dDâ€™ option is implicitly enabled.
  
!      With â€˜-fpreprocessedâ€™, predefinition of command line and most
!      builtin macros is disabled.  Macros such as â€˜__LINE__â€™, which are
       contextually dependent, are handled normally.  This enables
!      compilation of files previously preprocessed with â€˜-E
!      -fdirectives-onlyâ€™.
  
!      With both â€˜-Eâ€™ and â€˜-fpreprocessedâ€™, the rules for â€˜-fpreprocessedâ€™
       take precedence.  This enables full preprocessing of files
!      previously preprocessed with â€˜-E -fdirectives-onlyâ€™.
  
! â€˜-fdollars-in-identifiersâ€™
!      Accept â€˜$â€™ in identifiers.
  
! â€˜-fextended-identifiersâ€™
       Accept universal character names and extended characters in
       identifiers.  This option is enabled by default for C99 (and later
       C standard versions) and C++.
  
! â€˜-fno-canonical-system-headersâ€™
       When preprocessing, do not shorten system header paths with
       canonicalization.
  
! â€˜-fmax-include-depth=DEPTHâ€™
       Set the maximum depth of the nested #include.  The default is 200.
  
! â€˜-fsearch-include-path[=KIND]â€™
       Look for input files on the #include path, not just the current
       directory.  This is particularly useful with C++20 modules, for
       which both header units and module interface units need to be
*************** Options::.  Options to control preproces
*** 17669,17726 ****
  
            g++ -c -std=c++20 -fmodules -fsearch-include-path bits/stdc++.h bits/std.cc
  
!      KIND defaults to 'user', which looks on the '#include "..."' search
!      path; you can also explicitly specify 'system' for the '#include
!      <...>' search path.
  
! '-ftabstop=WIDTH'
       Set the distance between tab stops.  This helps the preprocessor
       report correct column numbers in warnings or errors, even if tabs
       appear on the line.  If the value is less than 1 or greater than
       100, the option is ignored.  The default is 8.
  
! '-ftrack-macro-expansion[=LEVEL]'
       Track locations of tokens across macro expansions.  This allows the
       compiler to emit diagnostic about the current macro expansion stack
       when a compilation error occurs in a macro expansion.  Using this
       option makes the preprocessor and the compiler consume more memory.
       The LEVEL parameter can be used to choose the level of precision of
       token location tracking thus decreasing the memory consumption if
!      necessary.  Value '0' of LEVEL de-activates this option.  Value '1'
       tracks tokens locations in a degraded mode for the sake of minimal
       memory overhead.  In this mode all tokens resulting from the
       expansion of an argument of a function-like macro have the same
!      location.  Value '2' tracks tokens locations completely.  This
       value is the most memory hungry.  When this option is given no
!      argument, the default parameter value is '2'.
  
!      Note that '-ftrack-macro-expansion=2' is activated by default.
  
! '-fmacro-prefix-map=OLD=NEW'
!      When preprocessing files residing in directory 'OLD', expand the
!      '__FILE__' and '__BASE_FILE__' macros as if the files resided in
!      directory 'NEW' instead.  This can be used to change an absolute
!      path to a relative path by using '.' for NEW which can result in
       more reproducible builds that are location independent.  This
!      option also affects '__builtin_FILE()' during compilation.  See
!      also '-ffile-prefix-map' and '-fcanon-prefix-map'.
  
! '-fexec-charset=CHARSET'
       Set the execution character set, used for string and character
       constants.  The default is UTF-8.  CHARSET can be any encoding
!      supported by the system's 'iconv' library routine.
  
! '-fwide-exec-charset=CHARSET'
       Set the wide execution character set, used for wide string and
       character constants.  The default is one of UTF-32BE, UTF-32LE,
       UTF-16BE, or UTF-16LE, whichever corresponds to the width of
!      'wchar_t' and the big-endian or little-endian byte order being used
!      for code generation.  As with '-fexec-charset', CHARSET can be any
!      encoding supported by the system's 'iconv' library routine;
       however, you will have problems with encodings that do not fit
!      exactly in 'wchar_t'.
  
! '-finput-charset=CHARSET'
       Set the input character set, used for translation from the
       character set of the input file to the source character set used by
       GCC.  If the locale does not specify, or GCC cannot get this
--- 17673,17730 ----
  
            g++ -c -std=c++20 -fmodules -fsearch-include-path bits/stdc++.h bits/std.cc
  
!      KIND defaults to â€˜userâ€™, which looks on the â€˜#include "..."â€™ search
!      path; you can also explicitly specify â€˜systemâ€™ for the â€˜#include
!      <...>â€™ search path.
  
! â€˜-ftabstop=WIDTHâ€™
       Set the distance between tab stops.  This helps the preprocessor
       report correct column numbers in warnings or errors, even if tabs
       appear on the line.  If the value is less than 1 or greater than
       100, the option is ignored.  The default is 8.
  
! â€˜-ftrack-macro-expansion[=LEVEL]â€™
       Track locations of tokens across macro expansions.  This allows the
       compiler to emit diagnostic about the current macro expansion stack
       when a compilation error occurs in a macro expansion.  Using this
       option makes the preprocessor and the compiler consume more memory.
       The LEVEL parameter can be used to choose the level of precision of
       token location tracking thus decreasing the memory consumption if
!      necessary.  Value â€˜0â€™ of LEVEL de-activates this option.  Value â€˜1â€™
       tracks tokens locations in a degraded mode for the sake of minimal
       memory overhead.  In this mode all tokens resulting from the
       expansion of an argument of a function-like macro have the same
!      location.  Value â€˜2â€™ tracks tokens locations completely.  This
       value is the most memory hungry.  When this option is given no
!      argument, the default parameter value is â€˜2â€™.
  
!      Note that â€˜-ftrack-macro-expansion=2â€™ is activated by default.
  
! â€˜-fmacro-prefix-map=OLD=NEWâ€™
!      When preprocessing files residing in directory â€˜OLDâ€™, expand the
!      â€˜__FILE__â€™ and â€˜__BASE_FILE__â€™ macros as if the files resided in
!      directory â€˜NEWâ€™ instead.  This can be used to change an absolute
!      path to a relative path by using â€˜.â€™ for NEW which can result in
       more reproducible builds that are location independent.  This
!      option also affects â€˜__builtin_FILE()â€™ during compilation.  See
!      also â€˜-ffile-prefix-mapâ€™ and â€˜-fcanon-prefix-mapâ€™.
  
! â€˜-fexec-charset=CHARSETâ€™
       Set the execution character set, used for string and character
       constants.  The default is UTF-8.  CHARSET can be any encoding
!      supported by the system's â€˜iconvâ€™ library routine.
  
! â€˜-fwide-exec-charset=CHARSETâ€™
       Set the wide execution character set, used for wide string and
       character constants.  The default is one of UTF-32BE, UTF-32LE,
       UTF-16BE, or UTF-16LE, whichever corresponds to the width of
!      â€˜wchar_tâ€™ and the big-endian or little-endian byte order being used
!      for code generation.  As with â€˜-fexec-charsetâ€™, CHARSET can be any
!      encoding supported by the system's â€˜iconvâ€™ library routine;
       however, you will have problems with encodings that do not fit
!      exactly in â€˜wchar_tâ€™.
  
! â€˜-finput-charset=CHARSETâ€™
       Set the input character set, used for translation from the
       character set of the input file to the source character set used by
       GCC.  If the locale does not specify, or GCC cannot get this
*************** Options::.  Options to control preproces
*** 17728,17736 ****
       overridden by either the locale or this command-line option.
       Currently the command-line option takes precedence if there's a
       conflict.  CHARSET can be any encoding supported by the system's
!      'iconv' library routine.
  
! '-fpch-deps'
       When using precompiled headers (*note Precompiled Headers::), this
       flag causes the dependency-output flags to also list the files from
       the precompiled header's dependencies.  If not specified, only the
--- 17732,17740 ----
       overridden by either the locale or this command-line option.
       Currently the command-line option takes precedence if there's a
       conflict.  CHARSET can be any encoding supported by the system's
!      â€˜iconvâ€™ library routine.
  
! â€˜-fpch-depsâ€™
       When using precompiled headers (*note Precompiled Headers::), this
       flag causes the dependency-output flags to also list the files from
       the precompiled header's dependencies.  If not specified, only the
*************** Options::.  Options to control preproces
*** 17738,17761 ****
       create it, because those files are not consulted when a precompiled
       header is used.
  
! '-fpch-preprocess'
       This option allows use of a precompiled header (*note Precompiled
!      Headers::) together with '-E'.  It inserts a special '#pragma',
!      '#pragma GCC pch_preprocess "FILENAME"' in the output to mark the
       place where the precompiled header was found, and its FILENAME.
!      When '-fpreprocessed' is in use, GCC recognizes this '#pragma' and
       loads the PCH.
  
       This option is off by default, because the resulting preprocessed
       output is only really suitable as input to GCC.  It is switched on
!      by '-save-temps'.
  
!      You should not write this '#pragma' in your own code, but it is
       safe to edit the filename if the PCH file is available in a
       different location.  The filename may be absolute or it may be
       relative to GCC's current directory.
  
! '-fworking-directory'
       Enable generation of linemarkers in the preprocessor output that
       let the compiler know the current working directory at the time of
       preprocessing.  When this option is enabled, the preprocessor
--- 17742,17765 ----
       create it, because those files are not consulted when a precompiled
       header is used.
  
! â€˜-fpch-preprocessâ€™
       This option allows use of a precompiled header (*note Precompiled
!      Headers::) together with â€˜-Eâ€™.  It inserts a special â€˜#pragmaâ€™,
!      â€˜#pragma GCC pch_preprocess "FILENAME"â€™ in the output to mark the
       place where the precompiled header was found, and its FILENAME.
!      When â€˜-fpreprocessedâ€™ is in use, GCC recognizes this â€˜#pragmaâ€™ and
       loads the PCH.
  
       This option is off by default, because the resulting preprocessed
       output is only really suitable as input to GCC.  It is switched on
!      by â€˜-save-tempsâ€™.
  
!      You should not write this â€˜#pragmaâ€™ in your own code, but it is
       safe to edit the filename if the PCH file is available in a
       different location.  The filename may be absolute or it may be
       relative to GCC's current directory.
  
! â€˜-fworking-directoryâ€™
       Enable generation of linemarkers in the preprocessor output that
       let the compiler know the current working directory at the time of
       preprocessing.  When this option is enabled, the preprocessor
*************** Options::.  Options to control preproces
*** 17765,17828 ****
       directory emitted as the current working directory in some
       debugging information formats.  This option is implicitly enabled
       if debugging information is enabled, but this can be inhibited with
!      the negated form '-fno-working-directory'.  If the '-P' flag is
       present in the command line, this option has no effect, since no
!      '#line' directives are emitted whatsoever.
  
! '-A PREDICATE=ANSWER'
       Make an assertion with the predicate PREDICATE and answer ANSWER.
!      This form is preferred to the older form '-A PREDICATE(ANSWER)',
       which is still supported, because it does not use shell special
       characters.
  
! '-A -PREDICATE=ANSWER'
       Cancel an assertion with the predicate PREDICATE and answer ANSWER.
  
! '-C'
       Do not discard comments.  All comments are passed through to the
       output file, except for comments in processed directives, which are
       deleted along with the directive.
  
!      You should be prepared for side effects when using '-C'; it causes
       the preprocessor to treat comments as tokens in their own right.
       For example, comments appearing at the start of what would be a
       directive line have the effect of turning that line into an
       ordinary source line, since the first token on the line is no
!      longer a '#'.
  
! '-CC'
       Do not discard comments, including during macro expansion.  This is
!      like '-C', except that comments contained within macros are also
       passed through to the output file where the macro is expanded.
  
!      In addition to the side effects of the '-C' option, the '-CC'
       option causes all C++-style comments inside a macro to be converted
       to C-style comments.  This is to prevent later use of that macro
       from inadvertently commenting out the remainder of the source line.
  
!      The '-CC' option is generally used to support lint comments.
  
! '-P'
       Inhibit generation of linemarkers in the output from the
       preprocessor.  This might be useful when running the preprocessor
       on something that is not C code, and will be sent to a program
       which might be confused by the linemarkers.
  
! '-traditional'
! '-traditional-cpp'
  
       Try to imitate the behavior of pre-standard C preprocessors, as
       opposed to ISO C preprocessors.  See the GNU CPP manual for
       details.
  
       Note that GCC does not otherwise attempt to emulate a pre-standard
!      C compiler, and these options are only supported with the '-E'
       switch, or when invoking CPP explicitly.
  
! '-trigraphs'
       Support ISO C trigraphs.  These are three-character sequences, all
!      starting with '??', that are defined by ISO C to stand for single
!      characters.  For example, '??/' stands for '\', so ''??/n'' is a
       character constant for a newline.
  
       The nine trigraphs and their replacements are
--- 17769,17832 ----
       directory emitted as the current working directory in some
       debugging information formats.  This option is implicitly enabled
       if debugging information is enabled, but this can be inhibited with
!      the negated form â€˜-fno-working-directoryâ€™.  If the â€˜-Pâ€™ flag is
       present in the command line, this option has no effect, since no
!      â€˜#lineâ€™ directives are emitted whatsoever.
  
! â€˜-A PREDICATE=ANSWERâ€™
       Make an assertion with the predicate PREDICATE and answer ANSWER.
!      This form is preferred to the older form â€˜-A PREDICATE(ANSWER)â€™,
       which is still supported, because it does not use shell special
       characters.
  
! â€˜-A -PREDICATE=ANSWERâ€™
       Cancel an assertion with the predicate PREDICATE and answer ANSWER.
  
! â€˜-Câ€™
       Do not discard comments.  All comments are passed through to the
       output file, except for comments in processed directives, which are
       deleted along with the directive.
  
!      You should be prepared for side effects when using â€˜-Câ€™; it causes
       the preprocessor to treat comments as tokens in their own right.
       For example, comments appearing at the start of what would be a
       directive line have the effect of turning that line into an
       ordinary source line, since the first token on the line is no
!      longer a â€˜#â€™.
  
! â€˜-CCâ€™
       Do not discard comments, including during macro expansion.  This is
!      like â€˜-Câ€™, except that comments contained within macros are also
       passed through to the output file where the macro is expanded.
  
!      In addition to the side effects of the â€˜-Câ€™ option, the â€˜-CCâ€™
       option causes all C++-style comments inside a macro to be converted
       to C-style comments.  This is to prevent later use of that macro
       from inadvertently commenting out the remainder of the source line.
  
!      The â€˜-CCâ€™ option is generally used to support lint comments.
  
! â€˜-Pâ€™
       Inhibit generation of linemarkers in the output from the
       preprocessor.  This might be useful when running the preprocessor
       on something that is not C code, and will be sent to a program
       which might be confused by the linemarkers.
  
! â€˜-traditionalâ€™
! â€˜-traditional-cppâ€™
  
       Try to imitate the behavior of pre-standard C preprocessors, as
       opposed to ISO C preprocessors.  See the GNU CPP manual for
       details.
  
       Note that GCC does not otherwise attempt to emulate a pre-standard
!      C compiler, and these options are only supported with the â€˜-Eâ€™
       switch, or when invoking CPP explicitly.
  
! â€˜-trigraphsâ€™
       Support ISO C trigraphs.  These are three-character sequences, all
!      starting with â€˜??â€™, that are defined by ISO C to stand for single
!      characters.  For example, â€˜??/â€™ stands for â€˜\â€™, so â€˜'??/n'â€™ is a
       character constant for a newline.
  
       The nine trigraphs and their replacements are
*************** Options::.  Options to control preproces
*** 17831,17850 ****
            Replacement:      [    ]    {    }    #    \    ^    |    ~
  
       By default, GCC ignores trigraphs, but in standard-conforming modes
!      it converts them.  See the '-std' and '-ansi' options.
  
! '-remap'
       Enable special code to work around file systems which only permit
       very short file names, such as MS-DOS.
  
! '-H'
       Print the name of each header file used, in addition to other
       normal activities.  Each name is indented to show how deep in the
!      '#include' stack it is.  Precompiled header files are also printed,
       even if they are found to be invalid; an invalid precompiled header
!      file is printed with '...x' and a valid one with '...!' .
  
! '-dLETTERS'
       Says to make debugging dumps during compilation as specified by
       LETTERS.  The flags documented here are those relevant to the
       preprocessor.  Other LETTERS are interpreted by the compiler
--- 17835,17854 ----
            Replacement:      [    ]    {    }    #    \    ^    |    ~
  
       By default, GCC ignores trigraphs, but in standard-conforming modes
!      it converts them.  See the â€˜-stdâ€™ and â€˜-ansiâ€™ options.
  
! â€˜-remapâ€™
       Enable special code to work around file systems which only permit
       very short file names, such as MS-DOS.
  
! â€˜-Hâ€™
       Print the name of each header file used, in addition to other
       normal activities.  Each name is indented to show how deep in the
!      â€˜#includeâ€™ stack it is.  Precompiled header files are also printed,
       even if they are found to be invalid; an invalid precompiled header
!      file is printed with â€˜...xâ€™ and a valid one with â€˜...!â€™ .
  
! â€˜-dLETTERSâ€™
       Says to make debugging dumps during compilation as specified by
       LETTERS.  The flags documented here are those relevant to the
       preprocessor.  Other LETTERS are interpreted by the compiler
*************** Options::.  Options to control preproces
*** 17853,17930 ****
       result is undefined.  *Note Developer Options::, for more
       information.
  
!      '-dM'
!           Instead of the normal output, generate a list of '#define'
            directives for all the macros defined during the execution of
            the preprocessor, including predefined macros.  This gives you
            a way of finding out what is predefined in your version of the
!           preprocessor.  Assuming you have no file 'foo.h', the command
  
                 touch foo.h; cpp -dM foo.h
  
            shows all the predefined macros.
  
!           If you use '-dM' without the '-E' option, '-dM' is interpreted
!           as a synonym for '-fdump-rtl-mach'.  *Note (gcc)Developer
            Options::.
  
!      '-dD'
!           Like '-dM' except that it outputs _both_ the '#define'
            directives and the result of preprocessing.  Both kinds of
            output go to the standard output file.
  
!      '-dN'
!           Like '-dD', but emit only the macro names, not their
            expansions.
  
!      '-dI'
!           Output '#include' directives in addition to the result of
            preprocessing.
  
!      '-dU'
!           Like '-dD' except that only macros that are expanded, or whose
            definedness is tested in preprocessor directives, are output;
            the output is delayed until the use or test of the macro; and
!           '#undef' directives are also output for macros tested but
            undefined at the time.
  
! '-fdebug-cpp'
       This option is only useful for debugging GCC. When used from CPP or
!      with '-E', it dumps debugging information about location maps.
       Every token in the output is preceded by the dump of the map its
       location belongs to.
  
!      When used from GCC without '-E', this option has no effect.
  
! '-Wp,OPTION'
!      You can use '-Wp,OPTION' to bypass the compiler driver and pass
       OPTION directly through to the preprocessor.  If OPTION contains
       commas, it is split into multiple options at the commas.  However,
       many options are modified, translated or interpreted by the
!      compiler driver before being passed to the preprocessor, and '-Wp'
       forcibly bypasses this phase.  The preprocessor's direct interface
       is undocumented and subject to change, so whenever possible you
!      should avoid using '-Wp' and let the driver handle the options
       instead.
  
! '-Xpreprocessor OPTION'
       Pass OPTION as an option to the preprocessor.  You can use this to
       supply system-specific preprocessor options that GCC does not
       recognize.
  
       If you want to pass an option that takes an argument, you must use
!      '-Xpreprocessor' twice, once for the option and once for the
       argument.
  
! '-no-integrated-cpp'
       Perform preprocessing as a separate pass before compilation.  By
       default, GCC performs preprocessing as an integrated part of input
       tokenization and parsing.  If this option is provided, the
!      appropriate language front end ('cc1', 'cc1plus', or 'cc1obj' for
       C, C++, and Objective-C, respectively) is instead invoked twice,
       once for preprocessing only and once for actual compilation of the
       preprocessed input.  This option may be useful in conjunction with
!      the '-B' or '-wrapper' options to specify an alternate preprocessor
       or perform additional processing of the program source between
       normal preprocessing and compilation.
  
--- 17857,17934 ----
       result is undefined.  *Note Developer Options::, for more
       information.
  
!      â€˜-dMâ€™
!           Instead of the normal output, generate a list of â€˜#defineâ€™
            directives for all the macros defined during the execution of
            the preprocessor, including predefined macros.  This gives you
            a way of finding out what is predefined in your version of the
!           preprocessor.  Assuming you have no file â€˜foo.hâ€™, the command
  
                 touch foo.h; cpp -dM foo.h
  
            shows all the predefined macros.
  
!           If you use â€˜-dMâ€™ without the â€˜-Eâ€™ option, â€˜-dMâ€™ is interpreted
!           as a synonym for â€˜-fdump-rtl-machâ€™.  *Note (gcc)Developer
            Options::.
  
!      â€˜-dDâ€™
!           Like â€˜-dMâ€™ except that it outputs _both_ the â€˜#defineâ€™
            directives and the result of preprocessing.  Both kinds of
            output go to the standard output file.
  
!      â€˜-dNâ€™
!           Like â€˜-dDâ€™, but emit only the macro names, not their
            expansions.
  
!      â€˜-dIâ€™
!           Output â€˜#includeâ€™ directives in addition to the result of
            preprocessing.
  
!      â€˜-dUâ€™
!           Like â€˜-dDâ€™ except that only macros that are expanded, or whose
            definedness is tested in preprocessor directives, are output;
            the output is delayed until the use or test of the macro; and
!           â€˜#undefâ€™ directives are also output for macros tested but
            undefined at the time.
  
! â€˜-fdebug-cppâ€™
       This option is only useful for debugging GCC. When used from CPP or
!      with â€˜-Eâ€™, it dumps debugging information about location maps.
       Every token in the output is preceded by the dump of the map its
       location belongs to.
  
!      When used from GCC without â€˜-Eâ€™, this option has no effect.
  
! â€˜-Wp,OPTIONâ€™
!      You can use â€˜-Wp,OPTIONâ€™ to bypass the compiler driver and pass
       OPTION directly through to the preprocessor.  If OPTION contains
       commas, it is split into multiple options at the commas.  However,
       many options are modified, translated or interpreted by the
!      compiler driver before being passed to the preprocessor, and â€˜-Wpâ€™
       forcibly bypasses this phase.  The preprocessor's direct interface
       is undocumented and subject to change, so whenever possible you
!      should avoid using â€˜-Wpâ€™ and let the driver handle the options
       instead.
  
! â€˜-Xpreprocessor OPTIONâ€™
       Pass OPTION as an option to the preprocessor.  You can use this to
       supply system-specific preprocessor options that GCC does not
       recognize.
  
       If you want to pass an option that takes an argument, you must use
!      â€˜-Xpreprocessorâ€™ twice, once for the option and once for the
       argument.
  
! â€˜-no-integrated-cppâ€™
       Perform preprocessing as a separate pass before compilation.  By
       default, GCC performs preprocessing as an integrated part of input
       tokenization and parsing.  If this option is provided, the
!      appropriate language front end (â€˜cc1â€™, â€˜cc1plusâ€™, or â€˜cc1objâ€™ for
       C, C++, and Objective-C, respectively) is instead invoked twice,
       once for preprocessing only and once for actual compilation of the
       preprocessed input.  This option may be useful in conjunction with
!      the â€˜-Bâ€™ or â€˜-wrapperâ€™ options to specify an alternate preprocessor
       or perform additional processing of the program source between
       normal preprocessing and compilation.
  
*************** File: gcc.info,  Node: Assembler Options
*** 17936,17952 ****
  
  You can pass options to the assembler.
  
! '-Wa,OPTION'
       Pass OPTION as an option to the assembler.  If OPTION contains
       commas, it is split into multiple options at the commas.
  
! '-Xassembler OPTION'
       Pass OPTION as an option to the assembler.  You can use this to
       supply system-specific assembler options that GCC does not
       recognize.
  
       If you want to pass an option that takes an argument, you must use
!      '-Xassembler' twice, once for the option and once for the argument.
  
  
  File: gcc.info,  Node: Link Options,  Next: Directory Options,  Prev: Assembler Options,  Up: Invoking GCC
--- 17940,17956 ----
  
  You can pass options to the assembler.
  
! â€˜-Wa,OPTIONâ€™
       Pass OPTION as an option to the assembler.  If OPTION contains
       commas, it is split into multiple options at the commas.
  
! â€˜-Xassembler OPTIONâ€™
       Pass OPTION as an option to the assembler.  You can use this to
       supply system-specific assembler options that GCC does not
       recognize.
  
       If you want to pass an option that takes an argument, you must use
!      â€˜-Xassemblerâ€™ twice, once for the option and once for the argument.
  
  
  File: gcc.info,  Node: Link Options,  Next: Directory Options,  Prev: Assembler Options,  Up: Invoking GCC
*************** These options come into play when the co
*** 17958,18001 ****
  an executable output file.  They are meaningless if the compiler is not
  doing a link step.
  
! 'OBJECT-FILE-NAME'
       A file name that does not end in a special recognized suffix is
       considered to name an object file or library.  (Object files are
       distinguished from libraries by the linker according to the file
       contents.)  If linking is done, these object files are used as
       input to the linker.
  
! '-c'
! '-S'
! '-E'
       If any of these options is used, then the linker is not run, and
       object file names should not be used as arguments.  *Note Overall
       Options::.
  
! '-flinker-output=TYPE'
       This option controls code generation of the link-time optimizer.
       By default the linker output is automatically determined by the
       linker plugin.  For debugging the compiler and if incremental
       linking with a non-LTO object file is desired, it may be useful to
       control the type manually.
  
!      If TYPE is 'exec', code generation produces a static binary.  In
!      this case '-fpic' and '-fpie' are both disabled.
  
!      If TYPE is 'dyn', code generation produces a shared library.  In
!      this case '-fpic' or '-fPIC' is preserved, but not enabled
       automatically.  This allows to build shared libraries without
       position-independent code on architectures where this is possible,
       i.e. on x86.
  
!      If TYPE is 'pie', code generation produces an '-fpie' executable.
!      This results in similar optimizations as 'exec' except that '-fpie'
       is not disabled if specified at compilation time.
  
!      If TYPE is 'rel', the compiler assumes that incremental linking is
       done.  The sections containing intermediate code for link-time
       optimization are merged, pre-optimized, and output to the resulting
!      object file.  In addition, if '-ffat-lto-objects' is specified,
       binary code is produced for future non-LTO linking.  The object
       file produced by incremental linking is smaller than a static
       library produced from the same object files.  At link time the
--- 17962,18005 ----
  an executable output file.  They are meaningless if the compiler is not
  doing a link step.
  
! â€˜OBJECT-FILE-NAMEâ€™
       A file name that does not end in a special recognized suffix is
       considered to name an object file or library.  (Object files are
       distinguished from libraries by the linker according to the file
       contents.)  If linking is done, these object files are used as
       input to the linker.
  
! â€˜-câ€™
! â€˜-Sâ€™
! â€˜-Eâ€™
       If any of these options is used, then the linker is not run, and
       object file names should not be used as arguments.  *Note Overall
       Options::.
  
! â€˜-flinker-output=TYPEâ€™
       This option controls code generation of the link-time optimizer.
       By default the linker output is automatically determined by the
       linker plugin.  For debugging the compiler and if incremental
       linking with a non-LTO object file is desired, it may be useful to
       control the type manually.
  
!      If TYPE is â€˜execâ€™, code generation produces a static binary.  In
!      this case â€˜-fpicâ€™ and â€˜-fpieâ€™ are both disabled.
  
!      If TYPE is â€˜dynâ€™, code generation produces a shared library.  In
!      this case â€˜-fpicâ€™ or â€˜-fPICâ€™ is preserved, but not enabled
       automatically.  This allows to build shared libraries without
       position-independent code on architectures where this is possible,
       i.e. on x86.
  
!      If TYPE is â€˜pieâ€™, code generation produces an â€˜-fpieâ€™ executable.
!      This results in similar optimizations as â€˜execâ€™ except that â€˜-fpieâ€™
       is not disabled if specified at compilation time.
  
!      If TYPE is â€˜relâ€™, the compiler assumes that incremental linking is
       done.  The sections containing intermediate code for link-time
       optimization are merged, pre-optimized, and output to the resulting
!      object file.  In addition, if â€˜-ffat-lto-objectsâ€™ is specified,
       binary code is produced for future non-LTO linking.  The object
       file produced by incremental linking is smaller than a static
       library produced from the same object files.  At link time the
*************** doing a link step.
*** 18003,18009 ****
       library assuming that the majority of objects in the library are
       used.
  
!      Finally 'nolto-rel' configures the compiler for incremental linking
       where code generation is forced, a final binary is produced, and
       the intermediate code for later link-time optimization is stripped.
       When multiple object files are linked together the resulting code
--- 18007,18013 ----
       library assuming that the majority of objects in the library are
       used.
  
!      Finally â€˜nolto-relâ€™ configures the compiler for incremental linking
       where code generation is forced, a final binary is produced, and
       the intermediate code for later link-time optimization is stripped.
       When multiple object files are linked together the resulting code
*************** doing a link step.
*** 18011,18320 ****
       example, cross-module inlining happens), but most of benefits of
       whole program optimizations are lost.
  
!      During the incremental link (by '-r') the linker plugin defaults to
!      'rel'.  With current interfaces to GNU Binutils it is however not
       possible to incrementally link LTO objects and non-LTO objects into
       a single mixed object file.  If any of object files in incremental
       link cannot be used for link-time optimization, the linker plugin
!      issues a warning and uses 'nolto-rel'.  To maintain whole program
       optimization, it is recommended to link such objects into static
       library instead.  Alternatively it is possible to use H.J. Lu's
       binutils with support for mixed objects.
  
! '-fuse-ld=bfd'
!      Use the 'bfd' linker instead of the default linker.
  
! '-fuse-ld=gold'
!      Use the 'gold' linker instead of the default linker.
  
! '-fuse-ld=lld'
!      Use the LLVM 'lld' linker instead of the default linker.
  
! '-fuse-ld=mold'
!      Use the Modern Linker ('mold') instead of the default linker.
  
! '-lLIBRARY'
! '-l LIBRARY'
       Search the library named LIBRARY when linking.  (The second
       alternative with the library as a separate argument is only for
       POSIX compliance and is not recommended.)
  
!      The '-l' option is passed directly to the linker by GCC. Refer to
       your linker documentation for exact details.  The general
       description below applies to the GNU linker.
  
       The linker searches a standard list of directories for the library.
       The directories searched include several standard system
!      directories plus any that you specify with '-L'.
  
       Static libraries are archives of object files, and have file names
!      like 'libLIBRARY.a'.  Some targets also support shared libraries,
!      which typically have names like 'libLIBRARY.so'.  If both static
       and shared libraries are found, the linker gives preference to
!      linking with the shared library unless the '-static' option is
       used.
  
       It makes a difference where in the command you write this option;
       the linker searches and processes libraries and object files in the
!      order they are specified.  Thus, 'foo.o -lz bar.o' searches library
!      'z' after file 'foo.o' but before 'bar.o'.  If 'bar.o' refers to
!      functions in 'z', those functions may not be loaded.
  
! '-lobjc'
!      You need this special case of the '-l' option in order to link an
       Objective-C or Objective-C++ program.
  
! '-nostartfiles'
       Do not use the standard system startup files when linking.  The
!      standard system libraries are used normally, unless '-nostdlib',
!      '-nolibc', or '-nodefaultlibs' is used.
  
! '-nodefaultlibs'
       Do not use the standard system libraries when linking.  Only the
       libraries you specify are passed to the linker, and options
       specifying linkage of the system libraries, such as
!      '-static-libgcc' or '-shared-libgcc', are ignored.  The standard
!      startup files are used normally, unless '-nostartfiles' is used.
  
!      The compiler may generate calls to 'memcmp', 'memset', 'memcpy' and
!      'memmove'.  These entries are usually resolved by entries in libc.
       These entry points should be supplied through some other mechanism
       when this option is specified.
  
! '-nolibc'
       Do not use the C library or system libraries tightly coupled with
!      it when linking.  Still link with the startup files, 'libgcc' or
!      toolchain provided language support libraries such as 'libgnat',
!      'libgfortran' or 'libstdc++' unless options preventing their
!      inclusion are used as well.  This typically removes '-lc' from the
       link command line, as well as system libraries that normally go
       with it and become meaningless when absence of a C library is
!      assumed, for example '-lpthread' or '-lm' in some configurations.
       This is intended for bare-board targets when there is indeed no C
       library available.
  
! '-nostdlib'
       Do not use the standard system startup files or libraries when
       linking.  No startup files and only the libraries you specify are
       passed to the linker, and options specifying linkage of the system
!      libraries, such as '-static-libgcc' or '-shared-libgcc', are
       ignored.
  
!      The compiler may generate calls to 'memcmp', 'memset', 'memcpy' and
!      'memmove'.  These entries are usually resolved by entries in libc.
       These entry points should be supplied through some other mechanism
       when this option is specified.
  
!      One of the standard libraries bypassed by '-nostdlib' and
!      '-nodefaultlibs' is 'libgcc.a', a library of internal subroutines
       which GCC uses to overcome shortcomings of particular machines, or
       special needs for some languages.  (*Note Interfacing to GCC
!      Output: (gccint)Interface, for more discussion of 'libgcc.a'.)  In
!      most cases, you need 'libgcc.a' even when you want to avoid other
!      standard libraries.  In other words, when you specify '-nostdlib'
!      or '-nodefaultlibs' you should usually specify '-lgcc' as well.
       This ensures that you have no unresolved references to internal GCC
       library subroutines.  (An example of such an internal subroutine is
!      '__main', used to ensure C++ constructors are called; *note
!      'collect2': (gccint)Collect2.)
  
! '-nostdlib++'
       Do not implicitly link with standard C++ libraries.
  
! '-e ENTRY'
! '--entry=ENTRY'
  
       Specify that the program entry point is ENTRY.  The argument is
       interpreted by the linker; the GNU linker accepts either a symbol
       name or an address.
  
! '-pie'
       Produce a dynamically linked position independent executable on
       targets that support it.  For predictable results, you must also
!      specify the same set of options used for compilation ('-fpie',
!      '-fPIE', or model suboptions) when you specify this linker option.
  
! '-no-pie'
       Don't produce a dynamically linked position independent executable.
  
! '-static-pie'
       Produce a static position independent executable on targets that
       support it.  A static position independent executable is similar to
       a static executable, but can be loaded at any address without a
       dynamic linker.  For predictable results, you must also specify the
!      same set of options used for compilation ('-fpie', '-fPIE', or
       model suboptions) when you specify this linker option.
  
! '-pthread'
       Link with the POSIX threads library.  This option is supported on
       GNU/Linux targets, most other Unix derivatives, and also on x86
       Cygwin and MinGW targets.  On some targets this option also sets
       flags for the preprocessor, so it should be used consistently for
       both compilation and linking.
  
! '-r'
       Produce a relocatable object as output.  This is also known as
       partial linking.
  
! '-rdynamic'
!      Pass the flag '-export-dynamic' to the ELF linker, on targets that
       support it.  This instructs the linker to add all symbols, not only
       used ones, to the dynamic symbol table.  This option is needed for
!      some uses of 'dlopen' or to allow obtaining backtraces from within
       a program.
  
! '-s'
       Remove all symbol table and relocation information from the
       executable.
  
! '-static'
!      On systems that support dynamic linking, this overrides '-pie' and
       prevents linking with the shared libraries.  On other systems, this
       option has no effect.
  
! '-shared'
       Produce a shared object which can then be linked with other objects
       to form an executable.  Not all systems support this option.  For
       predictable results, you must also specify the same set of options
!      used for compilation ('-fpic', '-fPIC', or model suboptions) when
       you specify this linker option.(1)
  
! '-shared-libgcc'
! '-static-libgcc'
!      On systems that provide 'libgcc' as a shared library, these options
       force the use of either the shared or static version, respectively.
!      If no shared version of 'libgcc' was built when the compiler was
       configured, these options have no effect.
  
       There are several situations in which an application should use the
!      shared 'libgcc' instead of the static version.  The most common of
       these is when the application wishes to throw and catch exceptions
       across different shared libraries.  In that case, each of the
       libraries as well as the application itself should use the shared
!      'libgcc'.
  
!      Therefore, the G++ driver automatically adds '-shared-libgcc'
       whenever you build a shared library or a main executable, because
       C++ programs typically use exceptions, so this is the right thing
       to do.
  
       If, instead, you use the GCC driver to create shared libraries, you
!      may find that they are not always linked with the shared 'libgcc'.
       If GCC finds, at its configuration time, that you have a non-GNU
       linker or a GNU linker that does not support option
!      '--eh-frame-hdr', it links the shared version of 'libgcc' into
       shared libraries by default.  Otherwise, it takes advantage of the
       linker and optimizes away the linking with the shared version of
!      'libgcc', linking with the static version of libgcc by default.
       This allows exceptions to propagate through such shared libraries,
       without incurring relocation costs at library load time.
  
       However, if a library or main executable is supposed to throw or
       catch exceptions, you must link it using the G++ driver, or using
!      the option '-shared-libgcc', such that it is linked with the shared
!      'libgcc'.
  
! '-static-libasan'
!      When the '-fsanitize=address' option is used to link a program, the
!      GCC driver automatically links against 'libasan'.  If 'libasan' is
!      available as a shared library, and the '-static' option is not
!      used, then this links against the shared version of 'libasan'.  The
!      '-static-libasan' option directs the GCC driver to link 'libasan'
       statically, without necessarily linking other libraries statically.
  
! '-static-libtsan'
!      When the '-fsanitize=thread' option is used to link a program, the
!      GCC driver automatically links against 'libtsan'.  If 'libtsan' is
!      available as a shared library, and the '-static' option is not
!      used, then this links against the shared version of 'libtsan'.  The
!      '-static-libtsan' option directs the GCC driver to link 'libtsan'
       statically, without necessarily linking other libraries statically.
  
! '-static-liblsan'
!      When the '-fsanitize=leak' option is used to link a program, the
!      GCC driver automatically links against 'liblsan'.  If 'liblsan' is
!      available as a shared library, and the '-static' option is not
!      used, then this links against the shared version of 'liblsan'.  The
!      '-static-liblsan' option directs the GCC driver to link 'liblsan'
       statically, without necessarily linking other libraries statically.
  
! '-static-libubsan'
!      When the '-fsanitize=undefined' option is used to link a program,
!      the GCC driver automatically links against 'libubsan'.  If
!      'libubsan' is available as a shared library, and the '-static'
       option is not used, then this links against the shared version of
!      'libubsan'.  The '-static-libubsan' option directs the GCC driver
!      to link 'libubsan' statically, without necessarily linking other
       libraries statically.
  
! '-static-libstdc++'
!      When the 'g++' program is used to link a C++ program, it normally
!      automatically links against 'libstdc++'.  If 'libstdc++' is
!      available as a shared library, and the '-static' option is not
!      used, then this links against the shared version of 'libstdc++'.
       That is normally fine.  However, it is sometimes useful to freeze
!      the version of 'libstdc++' used by the program without going all
!      the way to a fully static link.  The '-static-libstdc++' option
!      directs the 'g++' driver to link 'libstdc++' statically, without
       necessarily linking other libraries statically.
  
! '-symbolic'
       Bind references to global symbols when building a shared object.
       Warn about any unresolved references (unless overridden by the link
!      editor option '-Xlinker -z -Xlinker defs').  Only a few systems
       support this option.
  
! '-T SCRIPT'
       Use SCRIPT as the linker script.  This option is supported by most
       systems using the GNU linker.  On some targets, such as bare-board
!      targets without an operating system, the '-T' option may be
       required when linking to avoid references to undefined symbols.
  
! '-Xlinker OPTION'
       Pass OPTION as an option to the linker.  You can use this to supply
       system-specific linker options that GCC does not recognize.
  
       If you want to pass an option that takes a separate argument, you
!      must use '-Xlinker' twice, once for the option and once for the
!      argument.  For example, to pass '-assert definitions', you must
!      write '-Xlinker -assert -Xlinker definitions'.  It does not work to
!      write '-Xlinker "-assert definitions"', because this passes the
       entire string as a single argument, which is not what the linker
       expects.
  
       When using the GNU linker, it is usually more convenient to pass
!      arguments to linker options using the 'OPTION=VALUE' syntax than as
!      separate arguments.  For example, you can specify '-Xlinker
!      -Map=output.map' rather than '-Xlinker -Map -Xlinker output.map'.
       Other linkers may not support this syntax for command-line options.
  
! '-Wl,OPTION'
       Pass OPTION as an option to the linker.  If OPTION contains commas,
       it is split into multiple options at the commas.  You can use this
       syntax to pass an argument to the option.  For example,
!      '-Wl,-Map,output.map' passes '-Map output.map' to the linker.  When
       using the GNU linker, you can also get the same effect with
!      '-Wl,-Map=output.map'.
  
! '-u SYMBOL'
       Pretend the symbol SYMBOL is undefined, to force linking of library
!      modules to define it.  You can use '-u' multiple times with
       different symbols to force loading of additional library modules.
  
! '-z KEYWORD'
!      '-z' is passed directly on to the linker along with the keyword
       KEYWORD.  See the section in the documentation of your linker for
       permitted values and their meanings.
  
     ---------- Footnotes ----------
  
!    (1) On some systems, 'gcc -shared' needs to build supplementary stub
! code for constructors to work.  On multi-libbed systems, 'gcc -shared'
  must select the correct support libraries to link against.  Failing to
  supply the correct flags may lead to subtle defects.  Supplying them in
! cases where they are not necessary is innocuous.  '-shared' suppresses
  the addition of startup code to alter the floating-point environment as
! done with '-ffast-math', '-Ofast' or '-funsafe-math-optimizations' on
  some targets.
  
  
--- 18015,18324 ----
       example, cross-module inlining happens), but most of benefits of
       whole program optimizations are lost.
  
!      During the incremental link (by â€˜-râ€™) the linker plugin defaults to
!      â€˜relâ€™.  With current interfaces to GNU Binutils it is however not
       possible to incrementally link LTO objects and non-LTO objects into
       a single mixed object file.  If any of object files in incremental
       link cannot be used for link-time optimization, the linker plugin
!      issues a warning and uses â€˜nolto-relâ€™.  To maintain whole program
       optimization, it is recommended to link such objects into static
       library instead.  Alternatively it is possible to use H.J. Lu's
       binutils with support for mixed objects.
  
! â€˜-fuse-ld=bfdâ€™
!      Use the â€˜bfdâ€™ linker instead of the default linker.
  
! â€˜-fuse-ld=goldâ€™
!      Use the â€˜goldâ€™ linker instead of the default linker.
  
! â€˜-fuse-ld=lldâ€™
!      Use the LLVM â€˜lldâ€™ linker instead of the default linker.
  
! â€˜-fuse-ld=moldâ€™
!      Use the Modern Linker (â€˜moldâ€™) instead of the default linker.
  
! â€˜-lLIBRARYâ€™
! â€˜-l LIBRARYâ€™
       Search the library named LIBRARY when linking.  (The second
       alternative with the library as a separate argument is only for
       POSIX compliance and is not recommended.)
  
!      The â€˜-lâ€™ option is passed directly to the linker by GCC. Refer to
       your linker documentation for exact details.  The general
       description below applies to the GNU linker.
  
       The linker searches a standard list of directories for the library.
       The directories searched include several standard system
!      directories plus any that you specify with â€˜-Lâ€™.
  
       Static libraries are archives of object files, and have file names
!      like â€˜libLIBRARY.aâ€™.  Some targets also support shared libraries,
!      which typically have names like â€˜libLIBRARY.soâ€™.  If both static
       and shared libraries are found, the linker gives preference to
!      linking with the shared library unless the â€˜-staticâ€™ option is
       used.
  
       It makes a difference where in the command you write this option;
       the linker searches and processes libraries and object files in the
!      order they are specified.  Thus, â€˜foo.o -lz bar.oâ€™ searches library
!      â€˜zâ€™ after file â€˜foo.oâ€™ but before â€˜bar.oâ€™.  If â€˜bar.oâ€™ refers to
!      functions in â€˜zâ€™, those functions may not be loaded.
  
! â€˜-lobjcâ€™
!      You need this special case of the â€˜-lâ€™ option in order to link an
       Objective-C or Objective-C++ program.
  
! â€˜-nostartfilesâ€™
       Do not use the standard system startup files when linking.  The
!      standard system libraries are used normally, unless â€˜-nostdlibâ€™,
!      â€˜-nolibcâ€™, or â€˜-nodefaultlibsâ€™ is used.
  
! â€˜-nodefaultlibsâ€™
       Do not use the standard system libraries when linking.  Only the
       libraries you specify are passed to the linker, and options
       specifying linkage of the system libraries, such as
!      â€˜-static-libgccâ€™ or â€˜-shared-libgccâ€™, are ignored.  The standard
!      startup files are used normally, unless â€˜-nostartfilesâ€™ is used.
  
!      The compiler may generate calls to â€˜memcmpâ€™, â€˜memsetâ€™, â€˜memcpyâ€™ and
!      â€˜memmoveâ€™.  These entries are usually resolved by entries in libc.
       These entry points should be supplied through some other mechanism
       when this option is specified.
  
! â€˜-nolibcâ€™
       Do not use the C library or system libraries tightly coupled with
!      it when linking.  Still link with the startup files, â€˜libgccâ€™ or
!      toolchain provided language support libraries such as â€˜libgnatâ€™,
!      â€˜libgfortranâ€™ or â€˜libstdc++â€™ unless options preventing their
!      inclusion are used as well.  This typically removes â€˜-lcâ€™ from the
       link command line, as well as system libraries that normally go
       with it and become meaningless when absence of a C library is
!      assumed, for example â€˜-lpthreadâ€™ or â€˜-lmâ€™ in some configurations.
       This is intended for bare-board targets when there is indeed no C
       library available.
  
! â€˜-nostdlibâ€™
       Do not use the standard system startup files or libraries when
       linking.  No startup files and only the libraries you specify are
       passed to the linker, and options specifying linkage of the system
!      libraries, such as â€˜-static-libgccâ€™ or â€˜-shared-libgccâ€™, are
       ignored.
  
!      The compiler may generate calls to â€˜memcmpâ€™, â€˜memsetâ€™, â€˜memcpyâ€™ and
!      â€˜memmoveâ€™.  These entries are usually resolved by entries in libc.
       These entry points should be supplied through some other mechanism
       when this option is specified.
  
!      One of the standard libraries bypassed by â€˜-nostdlibâ€™ and
!      â€˜-nodefaultlibsâ€™ is â€˜libgcc.aâ€™, a library of internal subroutines
       which GCC uses to overcome shortcomings of particular machines, or
       special needs for some languages.  (*Note Interfacing to GCC
!      Output: (gccint)Interface, for more discussion of â€˜libgcc.aâ€™.)  In
!      most cases, you need â€˜libgcc.aâ€™ even when you want to avoid other
!      standard libraries.  In other words, when you specify â€˜-nostdlibâ€™
!      or â€˜-nodefaultlibsâ€™ you should usually specify â€˜-lgccâ€™ as well.
       This ensures that you have no unresolved references to internal GCC
       library subroutines.  (An example of such an internal subroutine is
!      â€˜__mainâ€™, used to ensure C++ constructors are called; *note
!      â€˜collect2â€™: (gccint)Collect2.)
  
! â€˜-nostdlib++â€™
       Do not implicitly link with standard C++ libraries.
  
! â€˜-e ENTRYâ€™
! â€˜--entry=ENTRYâ€™
  
       Specify that the program entry point is ENTRY.  The argument is
       interpreted by the linker; the GNU linker accepts either a symbol
       name or an address.
  
! â€˜-pieâ€™
       Produce a dynamically linked position independent executable on
       targets that support it.  For predictable results, you must also
!      specify the same set of options used for compilation (â€˜-fpieâ€™,
!      â€˜-fPIEâ€™, or model suboptions) when you specify this linker option.
  
! â€˜-no-pieâ€™
       Don't produce a dynamically linked position independent executable.
  
! â€˜-static-pieâ€™
       Produce a static position independent executable on targets that
       support it.  A static position independent executable is similar to
       a static executable, but can be loaded at any address without a
       dynamic linker.  For predictable results, you must also specify the
!      same set of options used for compilation (â€˜-fpieâ€™, â€˜-fPIEâ€™, or
       model suboptions) when you specify this linker option.
  
! â€˜-pthreadâ€™
       Link with the POSIX threads library.  This option is supported on
       GNU/Linux targets, most other Unix derivatives, and also on x86
       Cygwin and MinGW targets.  On some targets this option also sets
       flags for the preprocessor, so it should be used consistently for
       both compilation and linking.
  
! â€˜-râ€™
       Produce a relocatable object as output.  This is also known as
       partial linking.
  
! â€˜-rdynamicâ€™
!      Pass the flag â€˜-export-dynamicâ€™ to the ELF linker, on targets that
       support it.  This instructs the linker to add all symbols, not only
       used ones, to the dynamic symbol table.  This option is needed for
!      some uses of â€˜dlopenâ€™ or to allow obtaining backtraces from within
       a program.
  
! â€˜-sâ€™
       Remove all symbol table and relocation information from the
       executable.
  
! â€˜-staticâ€™
!      On systems that support dynamic linking, this overrides â€˜-pieâ€™ and
       prevents linking with the shared libraries.  On other systems, this
       option has no effect.
  
! â€˜-sharedâ€™
       Produce a shared object which can then be linked with other objects
       to form an executable.  Not all systems support this option.  For
       predictable results, you must also specify the same set of options
!      used for compilation (â€˜-fpicâ€™, â€˜-fPICâ€™, or model suboptions) when
       you specify this linker option.(1)
  
! â€˜-shared-libgccâ€™
! â€˜-static-libgccâ€™
!      On systems that provide â€˜libgccâ€™ as a shared library, these options
       force the use of either the shared or static version, respectively.
!      If no shared version of â€˜libgccâ€™ was built when the compiler was
       configured, these options have no effect.
  
       There are several situations in which an application should use the
!      shared â€˜libgccâ€™ instead of the static version.  The most common of
       these is when the application wishes to throw and catch exceptions
       across different shared libraries.  In that case, each of the
       libraries as well as the application itself should use the shared
!      â€˜libgccâ€™.
  
!      Therefore, the G++ driver automatically adds â€˜-shared-libgccâ€™
       whenever you build a shared library or a main executable, because
       C++ programs typically use exceptions, so this is the right thing
       to do.
  
       If, instead, you use the GCC driver to create shared libraries, you
!      may find that they are not always linked with the shared â€˜libgccâ€™.
       If GCC finds, at its configuration time, that you have a non-GNU
       linker or a GNU linker that does not support option
!      â€˜--eh-frame-hdrâ€™, it links the shared version of â€˜libgccâ€™ into
       shared libraries by default.  Otherwise, it takes advantage of the
       linker and optimizes away the linking with the shared version of
!      â€˜libgccâ€™, linking with the static version of libgcc by default.
       This allows exceptions to propagate through such shared libraries,
       without incurring relocation costs at library load time.
  
       However, if a library or main executable is supposed to throw or
       catch exceptions, you must link it using the G++ driver, or using
!      the option â€˜-shared-libgccâ€™, such that it is linked with the shared
!      â€˜libgccâ€™.
  
! â€˜-static-libasanâ€™
!      When the â€˜-fsanitize=addressâ€™ option is used to link a program, the
!      GCC driver automatically links against â€˜libasanâ€™.  If â€˜libasanâ€™ is
!      available as a shared library, and the â€˜-staticâ€™ option is not
!      used, then this links against the shared version of â€˜libasanâ€™.  The
!      â€˜-static-libasanâ€™ option directs the GCC driver to link â€˜libasanâ€™
       statically, without necessarily linking other libraries statically.
  
! â€˜-static-libtsanâ€™
!      When the â€˜-fsanitize=threadâ€™ option is used to link a program, the
!      GCC driver automatically links against â€˜libtsanâ€™.  If â€˜libtsanâ€™ is
!      available as a shared library, and the â€˜-staticâ€™ option is not
!      used, then this links against the shared version of â€˜libtsanâ€™.  The
!      â€˜-static-libtsanâ€™ option directs the GCC driver to link â€˜libtsanâ€™
       statically, without necessarily linking other libraries statically.
  
! â€˜-static-liblsanâ€™
!      When the â€˜-fsanitize=leakâ€™ option is used to link a program, the
!      GCC driver automatically links against â€˜liblsanâ€™.  If â€˜liblsanâ€™ is
!      available as a shared library, and the â€˜-staticâ€™ option is not
!      used, then this links against the shared version of â€˜liblsanâ€™.  The
!      â€˜-static-liblsanâ€™ option directs the GCC driver to link â€˜liblsanâ€™
       statically, without necessarily linking other libraries statically.
  
! â€˜-static-libubsanâ€™
!      When the â€˜-fsanitize=undefinedâ€™ option is used to link a program,
!      the GCC driver automatically links against â€˜libubsanâ€™.  If
!      â€˜libubsanâ€™ is available as a shared library, and the â€˜-staticâ€™
       option is not used, then this links against the shared version of
!      â€˜libubsanâ€™.  The â€˜-static-libubsanâ€™ option directs the GCC driver
!      to link â€˜libubsanâ€™ statically, without necessarily linking other
       libraries statically.
  
! â€˜-static-libstdc++â€™
!      When the â€˜g++â€™ program is used to link a C++ program, it normally
!      automatically links against â€˜libstdc++â€™.  If â€˜libstdc++â€™ is
!      available as a shared library, and the â€˜-staticâ€™ option is not
!      used, then this links against the shared version of â€˜libstdc++â€™.
       That is normally fine.  However, it is sometimes useful to freeze
!      the version of â€˜libstdc++â€™ used by the program without going all
!      the way to a fully static link.  The â€˜-static-libstdc++â€™ option
!      directs the â€˜g++â€™ driver to link â€˜libstdc++â€™ statically, without
       necessarily linking other libraries statically.
  
! â€˜-symbolicâ€™
       Bind references to global symbols when building a shared object.
       Warn about any unresolved references (unless overridden by the link
!      editor option â€˜-Xlinker -z -Xlinker defsâ€™).  Only a few systems
       support this option.
  
! â€˜-T SCRIPTâ€™
       Use SCRIPT as the linker script.  This option is supported by most
       systems using the GNU linker.  On some targets, such as bare-board
!      targets without an operating system, the â€˜-Tâ€™ option may be
       required when linking to avoid references to undefined symbols.
  
! â€˜-Xlinker OPTIONâ€™
       Pass OPTION as an option to the linker.  You can use this to supply
       system-specific linker options that GCC does not recognize.
  
       If you want to pass an option that takes a separate argument, you
!      must use â€˜-Xlinkerâ€™ twice, once for the option and once for the
!      argument.  For example, to pass â€˜-assert definitionsâ€™, you must
!      write â€˜-Xlinker -assert -Xlinker definitionsâ€™.  It does not work to
!      write â€˜-Xlinker "-assert definitions"â€™, because this passes the
       entire string as a single argument, which is not what the linker
       expects.
  
       When using the GNU linker, it is usually more convenient to pass
!      arguments to linker options using the â€˜OPTION=VALUEâ€™ syntax than as
!      separate arguments.  For example, you can specify â€˜-Xlinker
!      -Map=output.mapâ€™ rather than â€˜-Xlinker -Map -Xlinker output.mapâ€™.
       Other linkers may not support this syntax for command-line options.
  
! â€˜-Wl,OPTIONâ€™
       Pass OPTION as an option to the linker.  If OPTION contains commas,
       it is split into multiple options at the commas.  You can use this
       syntax to pass an argument to the option.  For example,
!      â€˜-Wl,-Map,output.mapâ€™ passes â€˜-Map output.mapâ€™ to the linker.  When
       using the GNU linker, you can also get the same effect with
!      â€˜-Wl,-Map=output.mapâ€™.
  
! â€˜-u SYMBOLâ€™
       Pretend the symbol SYMBOL is undefined, to force linking of library
!      modules to define it.  You can use â€˜-uâ€™ multiple times with
       different symbols to force loading of additional library modules.
  
! â€˜-z KEYWORDâ€™
!      â€˜-zâ€™ is passed directly on to the linker along with the keyword
       KEYWORD.  See the section in the documentation of your linker for
       permitted values and their meanings.
  
     ---------- Footnotes ----------
  
!    (1) On some systems, â€˜gcc -sharedâ€™ needs to build supplementary stub
! code for constructors to work.  On multi-libbed systems, â€˜gcc -sharedâ€™
  must select the correct support libraries to link against.  Failing to
  supply the correct flags may lead to subtle defects.  Supplying them in
! cases where they are not necessary is innocuous.  â€˜-sharedâ€™ suppresses
  the addition of startup code to alter the floating-point environment as
! done with â€˜-ffast-mathâ€™, â€˜-Ofastâ€™ or â€˜-funsafe-math-optimizationsâ€™ on
  some targets.
  
  
*************** File: gcc.info,  Node: Directory Options
*** 18326,18344 ****
  These options specify directories to search for header files, for
  libraries and for parts of the compiler:
  
! '-I DIR'
! '-iquote DIR'
! '-isystem DIR'
! '-idirafter DIR'
       Add the directory DIR to the list of directories to be searched for
!      header files during preprocessing.  If DIR begins with '=' or
!      '$SYSROOT', then the '=' or '$SYSROOT' is replaced by the sysroot
!      prefix; see '--sysroot' and '-isysroot'.
  
!      Directories specified with '-iquote' apply only to the quote form
!      of the directive, '#include "FILE"'.  Directories specified with
!      '-I', '-isystem', or '-idirafter' apply to lookup for both the
!      '#include "FILE"' and '#include <FILE>' directives.
  
       You can specify any number or combination of these options on the
       command line to search for header files in several directories.
--- 18330,18348 ----
  These options specify directories to search for header files, for
  libraries and for parts of the compiler:
  
! â€˜-I DIRâ€™
! â€˜-iquote DIRâ€™
! â€˜-isystem DIRâ€™
! â€˜-idirafter DIRâ€™
       Add the directory DIR to the list of directories to be searched for
!      header files during preprocessing.  If DIR begins with â€˜=â€™ or
!      â€˜$SYSROOTâ€™, then the â€˜=â€™ or â€˜$SYSROOTâ€™ is replaced by the sysroot
!      prefix; see â€˜--sysrootâ€™ and â€˜-isysrootâ€™.
  
!      Directories specified with â€˜-iquoteâ€™ apply only to the quote form
!      of the directive, â€˜#include "FILE"â€™.  Directories specified with
!      â€˜-Iâ€™, â€˜-isystemâ€™, or â€˜-idirafterâ€™ apply to lookup for both the
!      â€˜#include "FILE"â€™ and â€˜#include <FILE>â€™ directives.
  
       You can specify any number or combination of these options on the
       command line to search for header files in several directories.
*************** libraries and for parts of the compiler:
*** 18348,18517 ****
            the current file is searched first.
  
         2. For the quote form of the include directive, the directories
!           specified by '-iquote' options are searched in left-to-right
            order, as they appear on the command line.
  
!        3. Directories specified with '-I' options are scanned in
            left-to-right order.
  
!        4. Directories specified with '-isystem' options are scanned in
            left-to-right order.
  
         5. Standard system directories are scanned.
  
!        6. Directories specified with '-idirafter' options are scanned in
            left-to-right order.
  
!      You can use '-I' to override a system header file, substituting
       your own version, since these directories are searched before the
       standard system header file directories.  However, you should not
       use this option to add directories that contain vendor-supplied
!      system header files; use '-isystem' for that.
  
!      The '-isystem' and '-idirafter' options also mark the directory as
       a system directory, so that it gets the same special treatment that
       is applied to the standard system directories.
  
       If a standard system include directory, or a directory specified
!      with '-isystem', is also specified with '-I', the '-I' option is
       ignored.  The directory is still searched but as a system directory
       at its normal position in the system include chain.  This is to
       ensure that GCC's procedure to fix buggy system headers and the
!      ordering for the '#include_next' directive are not inadvertently
       changed.  If you really need to change the search order for system
!      directories, use the '-nostdinc' and/or '-isystem' options.
  
! '-I-'
       Split the include path.  This option has been deprecated.  Please
!      use '-iquote' instead for '-I' directories before the '-I-' and
!      remove the '-I-' option.
  
!      Any directories specified with '-I' options before '-I-' are
!      searched only for headers requested with '#include "FILE"'; they
!      are not searched for '#include <FILE>'.  If additional directories
!      are specified with '-I' options after the '-I-', those directories
!      are searched for all '#include' directives.
  
!      In addition, '-I-' inhibits the use of the directory of the current
!      file directory as the first search directory for '#include "FILE"'.
!      There is no way to override this effect of '-I-'.
  
! '-iprefix PREFIX'
!      Specify PREFIX as the prefix for subsequent '-iwithprefix' options.
       If the prefix represents a directory, you should include the final
!      '/'.
  
! '-iwithprefix DIR'
! '-iwithprefixbefore DIR'
!      Append DIR to the prefix specified previously with '-iprefix', and
       add the resulting directory to the include search path.
!      '-iwithprefixbefore' puts it in the same place '-I' would;
!      '-iwithprefix' puts it where '-idirafter' would.
  
! '-isysroot DIR'
!      This option is like the '--sysroot' option, but applies only to
       header files (except for Darwin targets, where it applies to both
!      header files and libraries).  See the '--sysroot' option for more
       information.
  
! '-imultilib DIR'
       Use DIR as a subdirectory of the directory containing
       target-specific C++ headers.
  
! '-nostdinc'
       Do not search the standard system directories for header files.
!      Only the directories explicitly specified with '-I', '-iquote',
!      '-isystem', and/or '-idirafter' options (and the directory of the
       current file, if appropriate) are searched.
  
! '-nostdinc++'
       Do not search for header files in the C++-specific standard
       directories, but do still search the other standard directories.
       (This option is used when building the C++ library.)
  
! '--embed-dir=DIR'
       Append DIR directory to the list of searched directories for
!      '#embed' preprocessing directive or '__has_embed' macro.  There are
!      no default directories for '#embed'.
  
!      If DIR begins with '=' or '$SYSROOT', then the '=' or '$SYSROOT' is
!      replaced by the sysroot prefix; see '--sysroot' and '-isysroot'.
  
! '-iplugindir=DIR'
       Set the directory to search for plugins that are passed by
!      '-fplugin=NAME' instead of '-fplugin=PATH/NAME.so'.  This option is
       not meant to be used by the user, but only passed by the driver.
  
! '-LDIR'
       Add directory DIR to the list of directories to be searched for
!      '-l'.
  
! '-BPREFIX'
       This option specifies where to find the executables, libraries,
       include files, and data files of the compiler itself.
  
       The compiler driver program runs one or more of the subprograms
!      'cpp', 'cc1', 'as' and 'ld'.  It tries PREFIX as a prefix for each
!      program it tries to run, both with and without 'MACHINE/VERSION/'
       for the corresponding target machine and compiler version.
  
       For each subprogram to be run, the compiler driver first tries the
!      '-B' prefix, if any.  If that name is not found, or if '-B' is not
!      specified, the driver tries two standard prefixes, '/usr/lib/gcc/'
!      and '/usr/local/lib/gcc/'.  If neither of those results in a file
       name that is found, the unmodified program name is searched for
!      using the directories specified in your 'PATH' environment
       variable.
  
!      The compiler checks to see if the path provided by '-B' refers to a
       directory, and if necessary it adds a directory separator character
       at the end of the path.
  
!      '-B' prefixes that effectively specify directory names also apply
       to libraries in the linker, because the compiler translates these
!      options into '-L' options for the linker.  They also apply to
       include files in the preprocessor, because the compiler translates
!      these options into '-isystem' options for the preprocessor.  In
!      this case, the compiler appends 'include' to the prefix.
  
!      The runtime support file 'libgcc.a' can also be searched for using
!      the '-B' prefix, if needed.  If it is not found there, the two
       standard prefixes above are tried, and that is all.  The file is
       left out of the link if it is not found by those means.
  
!      Another way to specify a prefix much like the '-B' prefix is to use
!      the environment variable 'GCC_EXEC_PREFIX'.  *Note Environment
       Variables::.
  
!      As a special kludge, if the path provided by '-B' is
!      '[dir/]stageN/', where N is a number in the range 0 to 9, then it
!      is replaced by '[dir/]include'.  This is to help with
       boot-strapping the compiler.
  
! '-no-canonical-prefixes'
!      Do not expand any symbolic links, resolve references to '/../' or
!      '/./', or make the path absolute when generating a relative prefix.
  
! '--sysroot=DIR'
       Use DIR as the logical root directory for headers and libraries.
       For example, if the compiler normally searches for headers in
!      '/usr/include' and libraries in '/usr/lib', it instead searches
!      'DIR/usr/include' and 'DIR/usr/lib'.
  
!      If you use both this option and the '-isysroot' option, then the
!      '--sysroot' option applies to libraries, but the '-isysroot' option
       applies to header files.
  
       The GNU linker (beginning with version 2.16) has the necessary
       support for this option.  If your linker does not support this
!      option, the header file aspect of '--sysroot' still works, but the
       library aspect does not.
  
! '--no-sysroot-suffix'
       For some targets, a suffix is added to the root directory specified
!      with '--sysroot', depending on the other options used, so that
!      headers may for example be found in 'DIR/SUFFIX/usr/include'
!      instead of 'DIR/usr/include'.  This option disables the addition of
       such a suffix.
  
  
--- 18352,18521 ----
            the current file is searched first.
  
         2. For the quote form of the include directive, the directories
!           specified by â€˜-iquoteâ€™ options are searched in left-to-right
            order, as they appear on the command line.
  
!        3. Directories specified with â€˜-Iâ€™ options are scanned in
            left-to-right order.
  
!        4. Directories specified with â€˜-isystemâ€™ options are scanned in
            left-to-right order.
  
         5. Standard system directories are scanned.
  
!        6. Directories specified with â€˜-idirafterâ€™ options are scanned in
            left-to-right order.
  
!      You can use â€˜-Iâ€™ to override a system header file, substituting
       your own version, since these directories are searched before the
       standard system header file directories.  However, you should not
       use this option to add directories that contain vendor-supplied
!      system header files; use â€˜-isystemâ€™ for that.
  
!      The â€˜-isystemâ€™ and â€˜-idirafterâ€™ options also mark the directory as
       a system directory, so that it gets the same special treatment that
       is applied to the standard system directories.
  
       If a standard system include directory, or a directory specified
!      with â€˜-isystemâ€™, is also specified with â€˜-Iâ€™, the â€˜-Iâ€™ option is
       ignored.  The directory is still searched but as a system directory
       at its normal position in the system include chain.  This is to
       ensure that GCC's procedure to fix buggy system headers and the
!      ordering for the â€˜#include_nextâ€™ directive are not inadvertently
       changed.  If you really need to change the search order for system
!      directories, use the â€˜-nostdincâ€™ and/or â€˜-isystemâ€™ options.
  
! â€˜-I-â€™
       Split the include path.  This option has been deprecated.  Please
!      use â€˜-iquoteâ€™ instead for â€˜-Iâ€™ directories before the â€˜-I-â€™ and
!      remove the â€˜-I-â€™ option.
  
!      Any directories specified with â€˜-Iâ€™ options before â€˜-I-â€™ are
!      searched only for headers requested with â€˜#include "FILE"â€™; they
!      are not searched for â€˜#include <FILE>â€™.  If additional directories
!      are specified with â€˜-Iâ€™ options after the â€˜-I-â€™, those directories
!      are searched for all â€˜#includeâ€™ directives.
  
!      In addition, â€˜-I-â€™ inhibits the use of the directory of the current
!      file directory as the first search directory for â€˜#include "FILE"â€™.
!      There is no way to override this effect of â€˜-I-â€™.
  
! â€˜-iprefix PREFIXâ€™
!      Specify PREFIX as the prefix for subsequent â€˜-iwithprefixâ€™ options.
       If the prefix represents a directory, you should include the final
!      â€˜/â€™.
  
! â€˜-iwithprefix DIRâ€™
! â€˜-iwithprefixbefore DIRâ€™
!      Append DIR to the prefix specified previously with â€˜-iprefixâ€™, and
       add the resulting directory to the include search path.
!      â€˜-iwithprefixbeforeâ€™ puts it in the same place â€˜-Iâ€™ would;
!      â€˜-iwithprefixâ€™ puts it where â€˜-idirafterâ€™ would.
  
! â€˜-isysroot DIRâ€™
!      This option is like the â€˜--sysrootâ€™ option, but applies only to
       header files (except for Darwin targets, where it applies to both
!      header files and libraries).  See the â€˜--sysrootâ€™ option for more
       information.
  
! â€˜-imultilib DIRâ€™
       Use DIR as a subdirectory of the directory containing
       target-specific C++ headers.
  
! â€˜-nostdincâ€™
       Do not search the standard system directories for header files.
!      Only the directories explicitly specified with â€˜-Iâ€™, â€˜-iquoteâ€™,
!      â€˜-isystemâ€™, and/or â€˜-idirafterâ€™ options (and the directory of the
       current file, if appropriate) are searched.
  
! â€˜-nostdinc++â€™
       Do not search for header files in the C++-specific standard
       directories, but do still search the other standard directories.
       (This option is used when building the C++ library.)
  
! â€˜--embed-dir=DIRâ€™
       Append DIR directory to the list of searched directories for
!      â€˜#embedâ€™ preprocessing directive or â€˜__has_embedâ€™ macro.  There are
!      no default directories for â€˜#embedâ€™.
  
!      If DIR begins with â€˜=â€™ or â€˜$SYSROOTâ€™, then the â€˜=â€™ or â€˜$SYSROOTâ€™ is
!      replaced by the sysroot prefix; see â€˜--sysrootâ€™ and â€˜-isysrootâ€™.
  
! â€˜-iplugindir=DIRâ€™
       Set the directory to search for plugins that are passed by
!      â€˜-fplugin=NAMEâ€™ instead of â€˜-fplugin=PATH/NAME.soâ€™.  This option is
       not meant to be used by the user, but only passed by the driver.
  
! â€˜-LDIRâ€™
       Add directory DIR to the list of directories to be searched for
!      â€˜-lâ€™.
  
! â€˜-BPREFIXâ€™
       This option specifies where to find the executables, libraries,
       include files, and data files of the compiler itself.
  
       The compiler driver program runs one or more of the subprograms
!      â€˜cppâ€™, â€˜cc1â€™, â€˜asâ€™ and â€˜ldâ€™.  It tries PREFIX as a prefix for each
!      program it tries to run, both with and without â€˜MACHINE/VERSION/â€™
       for the corresponding target machine and compiler version.
  
       For each subprogram to be run, the compiler driver first tries the
!      â€˜-Bâ€™ prefix, if any.  If that name is not found, or if â€˜-Bâ€™ is not
!      specified, the driver tries two standard prefixes, â€˜/usr/lib/gcc/â€™
!      and â€˜/usr/local/lib/gcc/â€™.  If neither of those results in a file
       name that is found, the unmodified program name is searched for
!      using the directories specified in your â€˜PATHâ€™ environment
       variable.
  
!      The compiler checks to see if the path provided by â€˜-Bâ€™ refers to a
       directory, and if necessary it adds a directory separator character
       at the end of the path.
  
!      â€˜-Bâ€™ prefixes that effectively specify directory names also apply
       to libraries in the linker, because the compiler translates these
!      options into â€˜-Lâ€™ options for the linker.  They also apply to
       include files in the preprocessor, because the compiler translates
!      these options into â€˜-isystemâ€™ options for the preprocessor.  In
!      this case, the compiler appends â€˜includeâ€™ to the prefix.
  
!      The runtime support file â€˜libgcc.aâ€™ can also be searched for using
!      the â€˜-Bâ€™ prefix, if needed.  If it is not found there, the two
       standard prefixes above are tried, and that is all.  The file is
       left out of the link if it is not found by those means.
  
!      Another way to specify a prefix much like the â€˜-Bâ€™ prefix is to use
!      the environment variable â€˜GCC_EXEC_PREFIXâ€™.  *Note Environment
       Variables::.
  
!      As a special kludge, if the path provided by â€˜-Bâ€™ is
!      â€˜[dir/]stageN/â€™, where N is a number in the range 0 to 9, then it
!      is replaced by â€˜[dir/]includeâ€™.  This is to help with
       boot-strapping the compiler.
  
! â€˜-no-canonical-prefixesâ€™
!      Do not expand any symbolic links, resolve references to â€˜/../â€™ or
!      â€˜/./â€™, or make the path absolute when generating a relative prefix.
  
! â€˜--sysroot=DIRâ€™
       Use DIR as the logical root directory for headers and libraries.
       For example, if the compiler normally searches for headers in
!      â€˜/usr/includeâ€™ and libraries in â€˜/usr/libâ€™, it instead searches
!      â€˜DIR/usr/includeâ€™ and â€˜DIR/usr/libâ€™.
  
!      If you use both this option and the â€˜-isysrootâ€™ option, then the
!      â€˜--sysrootâ€™ option applies to libraries, but the â€˜-isysrootâ€™ option
       applies to header files.
  
       The GNU linker (beginning with version 2.16) has the necessary
       support for this option.  If your linker does not support this
!      option, the header file aspect of â€˜--sysrootâ€™ still works, but the
       library aspect does not.
  
! â€˜--no-sysroot-suffixâ€™
       For some targets, a suffix is added to the root directory specified
!      with â€˜--sysrootâ€™, depending on the other options used, so that
!      headers may for example be found in â€˜DIR/SUFFIX/usr/includeâ€™
!      instead of â€˜DIR/usr/includeâ€™.  This option disables the addition of
       such a suffix.
  
  
*************** These machine-independent options contro
*** 18524,18540 ****
  in code generation.
  
   Most of them have both positive and negative forms; the negative form
! of '-ffoo' is '-fno-foo'.  In the table below, only one of the forms is
  listed--the one that is not the default.  You can figure out the other
! form by either removing 'no-' or adding it.
  
! '-fstack-reuse=REUSE-LEVEL'
       This option controls stack space reuse for user declared local/auto
       variables and compiler generated temporaries.  REUSE_LEVEL can be
!      'all', 'named_vars', or 'none'.  'all' enables stack reuse for all
!      local variables and temporaries, 'named_vars' enables the reuse
!      only for user defined local variables with names, and 'none'
!      disables stack reuse completely.  The default value is 'all'.  The
       option is needed when the program extends the lifetime of a scoped
       local variable or a compiler generated temporary beyond the end
       point defined by the language.  When a lifetime of a variable ends,
--- 18528,18544 ----
  in code generation.
  
   Most of them have both positive and negative forms; the negative form
! of â€˜-ffooâ€™ is â€˜-fno-fooâ€™.  In the table below, only one of the forms is
  listed--the one that is not the default.  You can figure out the other
! form by either removing â€˜no-â€™ or adding it.
  
! â€˜-fstack-reuse=REUSE-LEVELâ€™
       This option controls stack space reuse for user declared local/auto
       variables and compiler generated temporaries.  REUSE_LEVEL can be
!      â€˜allâ€™, â€˜named_varsâ€™, or â€˜noneâ€™.  â€˜allâ€™ enables stack reuse for all
!      local variables and temporaries, â€˜named_varsâ€™ enables the reuse
!      only for user defined local variables with names, and â€˜noneâ€™
!      disables stack reuse completely.  The default value is â€˜allâ€™.  The
       option is needed when the program extends the lifetime of a scoped
       local variable or a compiler generated temporary beyond the end
       point defined by the language.  When a lifetime of a variable ends,
*************** form by either removing 'no-' or adding
*** 18604,18638 ****
       reuse can lead to runtime errors.  This option is used to control
       the temporary stack reuse optimization.
  
! '-ftrapv'
       This option generates traps for signed overflow on addition,
!      subtraction, multiplication operations.  The options '-ftrapv' and
!      '-fwrapv' override each other, so using '-ftrapv' '-fwrapv' on the
!      command-line results in '-fwrapv' being effective.  Note that only
!      active options override, so using '-ftrapv' '-fwrapv' '-fno-wrapv'
!      on the command-line results in '-ftrapv' being effective.
  
! '-fwrapv'
       This option instructs the compiler to assume that signed arithmetic
       overflow of addition, subtraction and multiplication wraps around
       using twos-complement representation.  This flag enables some
!      optimizations and disables others.  The options '-ftrapv' and
!      '-fwrapv' override each other, so using '-ftrapv' '-fwrapv' on the
!      command-line results in '-fwrapv' being effective.  Note that only
!      active options override, so using '-ftrapv' '-fwrapv' '-fno-wrapv'
!      on the command-line results in '-ftrapv' being effective.
  
! '-fwrapv-pointer'
       This option instructs the compiler to assume that pointer
       arithmetic overflow on addition and subtraction wraps around using
       twos-complement representation.  This flag disables some
       optimizations which assume pointer overflow is invalid.
  
! '-fstrict-overflow'
!      This option implies '-fno-wrapv' '-fno-wrapv-pointer' and when
!      negated implies '-fwrapv' '-fwrapv-pointer'.
  
! '-fexceptions'
       Enable exception handling.  Generates extra code needed to
       propagate exceptions.  For some targets, this implies GCC generates
       frame unwind information for all functions, which can produce
--- 18608,18642 ----
       reuse can lead to runtime errors.  This option is used to control
       the temporary stack reuse optimization.
  
! â€˜-ftrapvâ€™
       This option generates traps for signed overflow on addition,
!      subtraction, multiplication operations.  The options â€˜-ftrapvâ€™ and
!      â€˜-fwrapvâ€™ override each other, so using â€˜-ftrapvâ€™ â€˜-fwrapvâ€™ on the
!      command-line results in â€˜-fwrapvâ€™ being effective.  Note that only
!      active options override, so using â€˜-ftrapvâ€™ â€˜-fwrapvâ€™ â€˜-fno-wrapvâ€™
!      on the command-line results in â€˜-ftrapvâ€™ being effective.
  
! â€˜-fwrapvâ€™
       This option instructs the compiler to assume that signed arithmetic
       overflow of addition, subtraction and multiplication wraps around
       using twos-complement representation.  This flag enables some
!      optimizations and disables others.  The options â€˜-ftrapvâ€™ and
!      â€˜-fwrapvâ€™ override each other, so using â€˜-ftrapvâ€™ â€˜-fwrapvâ€™ on the
!      command-line results in â€˜-fwrapvâ€™ being effective.  Note that only
!      active options override, so using â€˜-ftrapvâ€™ â€˜-fwrapvâ€™ â€˜-fno-wrapvâ€™
!      on the command-line results in â€˜-ftrapvâ€™ being effective.
  
! â€˜-fwrapv-pointerâ€™
       This option instructs the compiler to assume that pointer
       arithmetic overflow on addition and subtraction wraps around using
       twos-complement representation.  This flag disables some
       optimizations which assume pointer overflow is invalid.
  
! â€˜-fstrict-overflowâ€™
!      This option implies â€˜-fno-wrapvâ€™ â€˜-fno-wrapv-pointerâ€™ and when
!      negated implies â€˜-fwrapvâ€™ â€˜-fwrapv-pointerâ€™.
  
! â€˜-fexceptionsâ€™
       Enable exception handling.  Generates extra code needed to
       propagate exceptions.  For some targets, this implies GCC generates
       frame unwind information for all functions, which can produce
*************** form by either removing 'no-' or adding
*** 18646,18698 ****
       if you are compiling older C++ programs that don't use exception
       handling.
  
! '-fnon-call-exceptions'
       Generate code that allows trapping instructions to throw
       exceptions.  Note that this requires platform-specific runtime
       support that does not exist everywhere.  Moreover, it only allows
       _trapping_ instructions to throw exceptions, i.e. memory references
       or floating-point instructions.  It does not allow exceptions to be
!      thrown from arbitrary signal handlers such as 'SIGALRM'.  This
!      enables '-fexceptions'.
  
! '-fdelete-dead-exceptions'
       Consider that instructions that may throw exceptions but don't
       otherwise contribute to the execution of the program can be
       optimized away.  This does not affect calls to functions except
!      those with the 'pure' or 'const' attributes.  This option is
       enabled by default for the Ada and C++ compilers, as permitted by
       the language specifications.  Optimization passes that cause dead
       exceptions to be removed are enabled independently at different
       optimization levels.
  
! '-funwind-tables'
!      Similar to '-fexceptions', except that it just generates any needed
       static data, but does not affect the generated code in any other
       way.  You normally do not need to enable this option; instead, a
       language processor that needs this handling enables it on your
       behalf.
  
! '-fasynchronous-unwind-tables'
       Generate unwind table in DWARF format, if supported by target
       machine.  The table is exact at each instruction boundary, so it
       can be used for stack unwinding from asynchronous events (such as
       debugger or garbage collector).
  
! '-fno-gnu-unique'
       On systems with recent GNU assembler and C library, the C++
!      compiler uses the 'STB_GNU_UNIQUE' binding to make sure that
       definitions of template static data members and static local
       variables in inline functions are unique even in the presence of
!      'RTLD_LOCAL'; this is necessary to avoid problems with a library
!      used by two different 'RTLD_LOCAL' plugins depending on a
       definition in one of them and therefore disagreeing with the other
!      one about the binding of the symbol.  But this causes 'dlclose' to
       be ignored for affected DSOs; if your program relies on
!      reinitialization of a DSO via 'dlclose' and 'dlopen', you can use
!      '-fno-gnu-unique'.
  
! '-fpcc-struct-return'
!      Return "short" 'struct' and 'union' values in memory like longer
       ones, rather than in registers.  This convention is less efficient,
       but it has the advantage of allowing intercallability between
       GCC-compiled files and files compiled with other compilers,
--- 18650,18702 ----
       if you are compiling older C++ programs that don't use exception
       handling.
  
! â€˜-fnon-call-exceptionsâ€™
       Generate code that allows trapping instructions to throw
       exceptions.  Note that this requires platform-specific runtime
       support that does not exist everywhere.  Moreover, it only allows
       _trapping_ instructions to throw exceptions, i.e. memory references
       or floating-point instructions.  It does not allow exceptions to be
!      thrown from arbitrary signal handlers such as â€˜SIGALRMâ€™.  This
!      enables â€˜-fexceptionsâ€™.
  
! â€˜-fdelete-dead-exceptionsâ€™
       Consider that instructions that may throw exceptions but don't
       otherwise contribute to the execution of the program can be
       optimized away.  This does not affect calls to functions except
!      those with the â€˜pureâ€™ or â€˜constâ€™ attributes.  This option is
       enabled by default for the Ada and C++ compilers, as permitted by
       the language specifications.  Optimization passes that cause dead
       exceptions to be removed are enabled independently at different
       optimization levels.
  
! â€˜-funwind-tablesâ€™
!      Similar to â€˜-fexceptionsâ€™, except that it just generates any needed
       static data, but does not affect the generated code in any other
       way.  You normally do not need to enable this option; instead, a
       language processor that needs this handling enables it on your
       behalf.
  
! â€˜-fasynchronous-unwind-tablesâ€™
       Generate unwind table in DWARF format, if supported by target
       machine.  The table is exact at each instruction boundary, so it
       can be used for stack unwinding from asynchronous events (such as
       debugger or garbage collector).
  
! â€˜-fno-gnu-uniqueâ€™
       On systems with recent GNU assembler and C library, the C++
!      compiler uses the â€˜STB_GNU_UNIQUEâ€™ binding to make sure that
       definitions of template static data members and static local
       variables in inline functions are unique even in the presence of
!      â€˜RTLD_LOCALâ€™; this is necessary to avoid problems with a library
!      used by two different â€˜RTLD_LOCALâ€™ plugins depending on a
       definition in one of them and therefore disagreeing with the other
!      one about the binding of the symbol.  But this causes â€˜dlcloseâ€™ to
       be ignored for affected DSOs; if your program relies on
!      reinitialization of a DSO via â€˜dlcloseâ€™ and â€˜dlopenâ€™, you can use
!      â€˜-fno-gnu-uniqueâ€™.
  
! â€˜-fpcc-struct-returnâ€™
!      Return "short" â€˜structâ€™ and â€˜unionâ€™ values in memory like longer
       ones, rather than in registers.  This convention is less efficient,
       but it has the advantage of allowing intercallability between
       GCC-compiled files and files compiled with other compilers,
*************** form by either removing 'no-' or adding
*** 18704,18768 ****
       Short structures and unions are those whose size and alignment
       match that of some integer type.
  
!      *Warning:* code compiled with the '-fpcc-struct-return' switch is
       not binary compatible with code compiled with the
!      '-freg-struct-return' switch.  Use it to conform to a non-default
       application binary interface.
  
! '-freg-struct-return'
!      Return 'struct' and 'union' values in registers when possible.
       This is more efficient for small structures than
!      '-fpcc-struct-return'.
  
!      If you specify neither '-fpcc-struct-return' nor
!      '-freg-struct-return', GCC defaults to whichever convention is
       standard for the target.  If there is no standard convention, GCC
!      defaults to '-fpcc-struct-return', except on targets where GCC is
       the principal compiler.  In those cases, we can choose the
       standard, and we chose the more efficient register return
       alternative.
  
!      *Warning:* code compiled with the '-freg-struct-return' switch is
       not binary compatible with code compiled with the
!      '-fpcc-struct-return' switch.  Use it to conform to a non-default
       application binary interface.
  
! '-fshort-enums'
!      Allocate to an 'enum' type only as many bytes as it needs for the
!      declared range of possible values.  Specifically, the 'enum' type
       is equivalent to the smallest integer type that has enough room.
       This option has no effect for an enumeration type with a fixed
       underlying type.
  
!      *Warning:* the '-fshort-enums' switch causes GCC to generate code
       that is not binary compatible with code generated without that
       switch.  Use it to conform to a non-default application binary
       interface.
  
! '-fshort-wchar'
!      Override the underlying type for 'wchar_t' to be 'short unsigned
!      int' instead of the default for the target.  This option is useful
       for building programs to run under WINE.
  
!      *Warning:* the '-fshort-wchar' switch causes GCC to generate code
       that is not binary compatible with code generated without that
       switch.  Use it to conform to a non-default application binary
       interface.
  
! '-fcommon'
       In C code, this option controls the placement of global variables
!      defined without an initializer, known as "tentative definitions" in
       the C standard.  Tentative definitions are distinct from
!      declarations of a variable with the 'extern' keyword, which do not
       allocate storage.
  
!      The default is '-fno-common', which specifies that the compiler
       places uninitialized global variables in the BSS section of the
       object file.  This inhibits the merging of tentative definitions by
       the linker so you get a multiple-definition error if the same
       variable is accidentally defined in more than one compilation unit.
  
!      The '-fcommon' places uninitialized global variables in a common
       block.  This allows the linker to resolve all tentative definitions
       of the same variable in different compilation units to the same
       object, or to a non-tentative definition.  This behavior is
--- 18708,18772 ----
       Short structures and unions are those whose size and alignment
       match that of some integer type.
  
!      *Warning:* code compiled with the â€˜-fpcc-struct-returnâ€™ switch is
       not binary compatible with code compiled with the
!      â€˜-freg-struct-returnâ€™ switch.  Use it to conform to a non-default
       application binary interface.
  
! â€˜-freg-struct-returnâ€™
!      Return â€˜structâ€™ and â€˜unionâ€™ values in registers when possible.
       This is more efficient for small structures than
!      â€˜-fpcc-struct-returnâ€™.
  
!      If you specify neither â€˜-fpcc-struct-returnâ€™ nor
!      â€˜-freg-struct-returnâ€™, GCC defaults to whichever convention is
       standard for the target.  If there is no standard convention, GCC
!      defaults to â€˜-fpcc-struct-returnâ€™, except on targets where GCC is
       the principal compiler.  In those cases, we can choose the
       standard, and we chose the more efficient register return
       alternative.
  
!      *Warning:* code compiled with the â€˜-freg-struct-returnâ€™ switch is
       not binary compatible with code compiled with the
!      â€˜-fpcc-struct-returnâ€™ switch.  Use it to conform to a non-default
       application binary interface.
  
! â€˜-fshort-enumsâ€™
!      Allocate to an â€˜enumâ€™ type only as many bytes as it needs for the
!      declared range of possible values.  Specifically, the â€˜enumâ€™ type
       is equivalent to the smallest integer type that has enough room.
       This option has no effect for an enumeration type with a fixed
       underlying type.
  
!      *Warning:* the â€˜-fshort-enumsâ€™ switch causes GCC to generate code
       that is not binary compatible with code generated without that
       switch.  Use it to conform to a non-default application binary
       interface.
  
! â€˜-fshort-wcharâ€™
!      Override the underlying type for â€˜wchar_tâ€™ to be â€˜short unsigned
!      intâ€™ instead of the default for the target.  This option is useful
       for building programs to run under WINE.
  
!      *Warning:* the â€˜-fshort-wcharâ€™ switch causes GCC to generate code
       that is not binary compatible with code generated without that
       switch.  Use it to conform to a non-default application binary
       interface.
  
! â€˜-fcommonâ€™
       In C code, this option controls the placement of global variables
!      defined without an initializer, known as â€œtentative definitionsâ€� in
       the C standard.  Tentative definitions are distinct from
!      declarations of a variable with the â€˜externâ€™ keyword, which do not
       allocate storage.
  
!      The default is â€˜-fno-commonâ€™, which specifies that the compiler
       places uninitialized global variables in the BSS section of the
       object file.  This inhibits the merging of tentative definitions by
       the linker so you get a multiple-definition error if the same
       variable is accidentally defined in more than one compilation unit.
  
!      The â€˜-fcommonâ€™ places uninitialized global variables in a common
       block.  This allows the linker to resolve all tentative definitions
       of the same variable in different compilation units to the same
       object, or to a non-tentative definition.  This behavior is
*************** form by either removing 'no-' or adding
*** 18770,18802 ****
       size penalty on global variable references.  It is mainly useful to
       enable legacy code to link without errors.
  
! '-fno-ident'
!      Ignore the '#ident' directive.
  
! '-finhibit-size-directive'
!      Don't output a '.size' assembler directive, or anything else that
       would cause trouble if the function is split in the middle, and the
       two halves are placed at locations far apart in memory.  This
!      option is used when compiling 'crtstuff.c'; you should not need to
       use it for anything else.
  
! '-fverbose-asm'
       Put extra commentary information in the generated assembly code to
       make it more readable.  This option is generally only of use to
       those who actually need to read the generated assembly code
       (perhaps while debugging the compiler itself).
  
!      '-fno-verbose-asm', the default, causes the extra information to be
       omitted and is useful when comparing two assembler files.
  
       The added comments include:
  
!         * information on the compiler version and command-line options,
  
!         * the source code lines associated with the assembly
            instructions, in the form FILENAME:LINENUMBER:CONTENT OF LINE,
  
!         * hints on which high-level expressions correspond to the
            various assembly instruction operands.
  
       For example, given this C source file:
--- 18774,18806 ----
       size penalty on global variable references.  It is mainly useful to
       enable legacy code to link without errors.
  
! â€˜-fno-identâ€™
!      Ignore the â€˜#identâ€™ directive.
  
! â€˜-finhibit-size-directiveâ€™
!      Don't output a â€˜.sizeâ€™ assembler directive, or anything else that
       would cause trouble if the function is split in the middle, and the
       two halves are placed at locations far apart in memory.  This
!      option is used when compiling â€˜crtstuff.câ€™; you should not need to
       use it for anything else.
  
! â€˜-fverbose-asmâ€™
       Put extra commentary information in the generated assembly code to
       make it more readable.  This option is generally only of use to
       those who actually need to read the generated assembly code
       (perhaps while debugging the compiler itself).
  
!      â€˜-fno-verbose-asmâ€™, the default, causes the extra information to be
       omitted and is useful when comparing two assembler files.
  
       The added comments include:
  
!         â€¢ information on the compiler version and command-line options,
  
!         â€¢ the source code lines associated with the assembly
            instructions, in the form FILENAME:LINENUMBER:CONTENT OF LINE,
  
!         â€¢ hints on which high-level expressions correspond to the
            various assembly instruction operands.
  
       For example, given this C source file:
*************** form by either removing 'no-' or adding
*** 18812,18819 ****
              return total;
            }
  
!      compiling to (x86_64) assembly via '-S' and emitting the result
!      direct to stdout via '-o' '-'
  
            gcc -S test.c -fverbose-asm -Os -o -
  
--- 18816,18823 ----
              return total;
            }
  
!      compiling to (x86_64) assembly via â€˜-Sâ€™ and emitting the result
!      direct to stdout via â€˜-oâ€™ â€˜-â€™
  
            gcc -S test.c -fverbose-asm -Os -o -
  
*************** form by either removing 'no-' or adding
*** 18859,18877 ****
       The comments are intended for humans rather than machines and hence
       the precise format of the comments is subject to change.
  
! '-frecord-gcc-switches'
       This switch causes the command line used to invoke the compiler to
       be recorded into the object file that is being created.  This
       switch is only implemented on some targets and the exact format of
       the recording is target and binary file format dependent, but it
       usually takes the form of a section containing ASCII text.  This
!      switch is related to the '-fverbose-asm' switch, but that switch
       only records information in the assembler output file as comments,
       so it never reaches the object file.  See also
!      '-grecord-gcc-switches' for another way of storing compiler options
       into the object file.
  
! '-fpic'
       Generate position-independent code (PIC) suitable for use in a
       shared library, if supported for the target machine.  Such code
       accesses all constant addresses through a global offset table
--- 18863,18881 ----
       The comments are intended for humans rather than machines and hence
       the precise format of the comments is subject to change.
  
! â€˜-frecord-gcc-switchesâ€™
       This switch causes the command line used to invoke the compiler to
       be recorded into the object file that is being created.  This
       switch is only implemented on some targets and the exact format of
       the recording is target and binary file format dependent, but it
       usually takes the form of a section containing ASCII text.  This
!      switch is related to the â€˜-fverbose-asmâ€™ switch, but that switch
       only records information in the assembler output file as comments,
       so it never reaches the object file.  See also
!      â€˜-grecord-gcc-switchesâ€™ for another way of storing compiler options
       into the object file.
  
! â€˜-fpicâ€™
       Generate position-independent code (PIC) suitable for use in a
       shared library, if supported for the target machine.  Such code
       accesses all constant addresses through a global offset table
*************** form by either removing 'no-' or adding
*** 18879,18886 ****
       program starts (the dynamic loader is not part of GCC; it is part
       of the operating system).  If the GOT size for the linked
       executable exceeds a machine-specific maximum size, you get an
!      error message from the linker indicating that '-fpic' does not
!      work; in that case, recompile with '-fPIC' instead.  (These
       maximums are 8k on the SPARC, 28k on AArch64 and 32k on the m68k
       and RS/6000.  The x86 has no such limit.)
  
--- 18883,18890 ----
       program starts (the dynamic loader is not part of GCC; it is part
       of the operating system).  If the GOT size for the linked
       executable exceeds a machine-specific maximum size, you get an
!      error message from the linker indicating that â€˜-fpicâ€™ does not
!      work; in that case, recompile with â€˜-fPICâ€™ instead.  (These
       maximums are 8k on the SPARC, 28k on AArch64 and 32k on the m68k
       and RS/6000.  The x86 has no such limit.)
  
*************** form by either removing 'no-' or adding
*** 18889,18898 ****
       System V but not for the Sun 386i.  Code generated for the IBM
       RS/6000 is always position-independent.
  
!      When this flag is set, the macros '__pic__' and '__PIC__' are
       defined to 1.
  
! '-fPIC'
       If supported for the target machine, emit position-independent
       code, suitable for dynamic linking and avoiding any limit on the
       size of the global offset table.  This option makes a difference on
--- 18893,18902 ----
       System V but not for the Sun 386i.  Code generated for the IBM
       RS/6000 is always position-independent.
  
!      When this flag is set, the macros â€˜__pic__â€™ and â€˜__PIC__â€™ are
       defined to 1.
  
! â€˜-fPICâ€™
       If supported for the target machine, emit position-independent
       code, suitable for dynamic linking and avoiding any limit on the
       size of the global offset table.  This option makes a difference on
*************** form by either removing 'no-' or adding
*** 18901,18920 ****
       Position-independent code requires special support, and therefore
       works only on certain machines.
  
!      When this flag is set, the macros '__pic__' and '__PIC__' are
       defined to 2.
  
! '-fpie'
! '-fPIE'
!      These options are similar to '-fpic' and '-fPIC', but the generated
       position-independent code can be only linked into executables.
       Usually these options are used to compile code that will be linked
!      using the '-pie' GCC option.
  
!      '-fpie' and '-fPIE' both define the macros '__pie__' and '__PIE__'.
!      The macros have the value 1 for '-fpie' and 2 for '-fPIE'.
  
! '-fno-plt'
       Do not use the PLT for external function calls in
       position-independent code.  Instead, load the callee address at
       call sites from the GOT and branch to it.  This leads to more
--- 18905,18924 ----
       Position-independent code requires special support, and therefore
       works only on certain machines.
  
!      When this flag is set, the macros â€˜__pic__â€™ and â€˜__PIC__â€™ are
       defined to 2.
  
! â€˜-fpieâ€™
! â€˜-fPIEâ€™
!      These options are similar to â€˜-fpicâ€™ and â€˜-fPICâ€™, but the generated
       position-independent code can be only linked into executables.
       Usually these options are used to compile code that will be linked
!      using the â€˜-pieâ€™ GCC option.
  
!      â€˜-fpieâ€™ and â€˜-fPIEâ€™ both define the macros â€˜__pie__â€™ and â€˜__PIE__â€™.
!      The macros have the value 1 for â€˜-fpieâ€™ and 2 for â€˜-fPIEâ€™.
  
! â€˜-fno-pltâ€™
       Do not use the PLT for external function calls in
       position-independent code.  Instead, load the callee address at
       call sites from the GOT and branch to it.  This leads to more
*************** form by either removing 'no-' or adding
*** 18922,18962 ****
       optimizations.  On architectures such as 32-bit x86 where PLT stubs
       expect the GOT pointer in a specific register, this gives more
       register allocation freedom to the compiler.  Lazy binding requires
!      use of the PLT; with '-fno-plt' all external symbols are resolved
       at load time.
  
!      Alternatively, the function attribute 'noplt' can be used to avoid
       calls through the PLT for specific external functions.
  
       In position-dependent code, a few targets also convert calls to
       functions that are marked to not use the PLT to use the GOT
       instead.
  
! '-fno-jump-tables'
       Do not use jump tables for switch statements even where it would be
       more efficient than other code generation strategies.  This option
!      is of use in conjunction with '-fpic' or '-fPIC' for building code
       that forms part of a dynamic linker and cannot reference the
       address of a jump table.  On some targets, jump tables do not
       require a GOT and this option is not needed.
  
! '-fno-bit-tests'
       Do not use bit tests for switch statements even where it would be
       more efficient than other code generation strategies.
  
! '-ffixed-REG'
       Treat the register named REG as a fixed register; generated code
       should never refer to it (except perhaps as a stack pointer, frame
       pointer or in some other fixed role).
  
       REG must be the name of a register.  The register names accepted
!      are machine-specific and are defined in the 'REGISTER_NAMES' macro
       in the machine description macro file.
  
       This flag does not have a negative form, because it specifies a
       three-way choice.
  
! '-fcall-used-REG'
       Treat the register named REG as an allocable register that is
       clobbered by function calls.  It may be allocated for temporaries
       or variables that do not live across a call.  Functions compiled
--- 18926,18966 ----
       optimizations.  On architectures such as 32-bit x86 where PLT stubs
       expect the GOT pointer in a specific register, this gives more
       register allocation freedom to the compiler.  Lazy binding requires
!      use of the PLT; with â€˜-fno-pltâ€™ all external symbols are resolved
       at load time.
  
!      Alternatively, the function attribute â€˜nopltâ€™ can be used to avoid
       calls through the PLT for specific external functions.
  
       In position-dependent code, a few targets also convert calls to
       functions that are marked to not use the PLT to use the GOT
       instead.
  
! â€˜-fno-jump-tablesâ€™
       Do not use jump tables for switch statements even where it would be
       more efficient than other code generation strategies.  This option
!      is of use in conjunction with â€˜-fpicâ€™ or â€˜-fPICâ€™ for building code
       that forms part of a dynamic linker and cannot reference the
       address of a jump table.  On some targets, jump tables do not
       require a GOT and this option is not needed.
  
! â€˜-fno-bit-testsâ€™
       Do not use bit tests for switch statements even where it would be
       more efficient than other code generation strategies.
  
! â€˜-ffixed-REGâ€™
       Treat the register named REG as a fixed register; generated code
       should never refer to it (except perhaps as a stack pointer, frame
       pointer or in some other fixed role).
  
       REG must be the name of a register.  The register names accepted
!      are machine-specific and are defined in the â€˜REGISTER_NAMESâ€™ macro
       in the machine description macro file.
  
       This flag does not have a negative form, because it specifies a
       three-way choice.
  
! â€˜-fcall-used-REGâ€™
       Treat the register named REG as an allocable register that is
       clobbered by function calls.  It may be allocated for temporaries
       or variables that do not live across a call.  Functions compiled
*************** form by either removing 'no-' or adding
*** 18970,18976 ****
       This flag does not have a negative form, because it specifies a
       three-way choice.
  
! '-fcall-saved-REG'
       Treat the register named REG as an allocable register saved by
       functions.  It may be allocated even for temporaries or variables
       that live across a call.  Functions compiled this way save and
--- 18974,18980 ----
       This flag does not have a negative form, because it specifies a
       three-way choice.
  
! â€˜-fcall-saved-REGâ€™
       Treat the register named REG as an allocable register saved by
       functions.  It may be allocated even for temporaries or variables
       that live across a call.  Functions compiled this way save and
*************** form by either removing 'no-' or adding
*** 18987,18993 ****
       This flag does not have a negative form, because it specifies a
       three-way choice.
  
! '-fpack-struct[=N]'
       Without a value specified, pack all structure members together
       without holes.  When a value is specified (which must be a small
       power of two), pack structure members according to this value,
--- 18991,18997 ----
       This flag does not have a negative form, because it specifies a
       three-way choice.
  
! â€˜-fpack-struct[=N]â€™
       Without a value specified, pack all structure members together
       without holes.  When a value is specified (which must be a small
       power of two), pack structure members according to this value,
*************** form by either removing 'no-' or adding
*** 18995,19028 ****
       alignment requirements larger than this are output potentially
       unaligned at the next fitting location.
  
!      *Warning:* the '-fpack-struct' switch causes GCC to generate code
       that is not binary compatible with code generated without that
       switch.  Additionally, it makes the code suboptimal.  Use it to
       conform to a non-default application binary interface.
  
! '-fleading-underscore'
!      This option and its counterpart, '-fno-leading-underscore',
       forcibly change the way C symbols are represented in the object
       file.  One use is to help link with legacy assembly code.
  
!      *Warning:* the '-fleading-underscore' switch causes GCC to generate
       code that is not binary compatible with code generated without that
       switch.  Use it to conform to a non-default application binary
       interface.  Not all targets provide complete support for this
       switch.
  
! '-ftls-model=MODEL'
       Alter the thread-local storage model to be used (*note
       Thread-Local::).  The MODEL argument should be one of
!      'global-dynamic', 'local-dynamic', 'initial-exec' or 'local-exec'.
       Note that the choice is subject to optimization: the compiler may
       use a more efficient model for symbols not visible outside of the
!      translation unit, or if '-fpic' is not given on the command line.
  
!      The default without '-fpic' is 'initial-exec'; with '-fpic' the
!      default is 'global-dynamic'.
  
! '-ftrampolines'
       For targets that normally need trampolines for nested functions,
       always generate them instead of using descriptors.  Otherwise, for
       targets that do not need them, like for example HP-PA or IA-64, do
--- 18999,19032 ----
       alignment requirements larger than this are output potentially
       unaligned at the next fitting location.
  
!      *Warning:* the â€˜-fpack-structâ€™ switch causes GCC to generate code
       that is not binary compatible with code generated without that
       switch.  Additionally, it makes the code suboptimal.  Use it to
       conform to a non-default application binary interface.
  
! â€˜-fleading-underscoreâ€™
!      This option and its counterpart, â€˜-fno-leading-underscoreâ€™,
       forcibly change the way C symbols are represented in the object
       file.  One use is to help link with legacy assembly code.
  
!      *Warning:* the â€˜-fleading-underscoreâ€™ switch causes GCC to generate
       code that is not binary compatible with code generated without that
       switch.  Use it to conform to a non-default application binary
       interface.  Not all targets provide complete support for this
       switch.
  
! â€˜-ftls-model=MODELâ€™
       Alter the thread-local storage model to be used (*note
       Thread-Local::).  The MODEL argument should be one of
!      â€˜global-dynamicâ€™, â€˜local-dynamicâ€™, â€˜initial-execâ€™ or â€˜local-execâ€™.
       Note that the choice is subject to optimization: the compiler may
       use a more efficient model for symbols not visible outside of the
!      translation unit, or if â€˜-fpicâ€™ is not given on the command line.
  
!      The default without â€˜-fpicâ€™ is â€˜initial-execâ€™; with â€˜-fpicâ€™ the
!      default is â€˜global-dynamicâ€™.
  
! â€˜-ftrampolinesâ€™
       For targets that normally need trampolines for nested functions,
       always generate them instead of using descriptors.  Otherwise, for
       targets that do not need them, like for example HP-PA or IA-64, do
*************** form by either removing 'no-' or adding
*** 19034,19070 ****
       requires the stack to be made executable in order for the program
       to work properly.
  
!      '-fno-trampolines' is enabled by default on a language by language
       basis to let the compiler avoid generating them, if it computes
       that this is safe, and replace them with descriptors.  Descriptors
       are made up of data only, but the generated code must be prepared
!      to deal with them.  As of this writing, '-fno-trampolines' is
       enabled by default only for Ada.
  
!      Moreover, code compiled with '-ftrampolines' and code compiled with
!      '-fno-trampolines' are not binary compatible if nested functions
       are present.  This option must therefore be used on a program-wide
       basis and be manipulated with extreme care.
  
!      For languages other than Ada, the '-ftrampolines' and
!      '-fno-trampolines' options currently have no effect, and
       trampolines are always generated on platforms that need them for
       nested functions.
  
! '-ftrampoline-impl=[stack|heap]'
       By default, trampolines are generated on stack.  However, certain
       platforms (such as the Apple M1) do not permit an executable stack.
!      Compiling with '-ftrampoline-impl=heap' generate calls to
!      '__gcc_nested_func_ptr_created' and '__gcc_nested_func_ptr_deleted'
       in order to allocate and deallocate trampoline space on the
       executable heap.  These functions are implemented in libgcc, and
       will only be provided on specific targets: x86_64 Darwin, x86_64
       and aarch64 Linux.  _PLEASE NOTE_: Heap trampolines are _not_
!      guaranteed to be correctly deallocated if you 'setjmp', instantiate
!      nested functions, and then 'longjmp' back to a state prior to
       having allocated those nested functions.
  
! '-fvisibility=[default|internal|hidden|protected]'
       Set the default ELF image symbol visibility to the specified
       option--all symbols are marked with this unless overridden within
       the code.  Using this feature can very substantially improve
--- 19038,19074 ----
       requires the stack to be made executable in order for the program
       to work properly.
  
!      â€˜-fno-trampolinesâ€™ is enabled by default on a language by language
       basis to let the compiler avoid generating them, if it computes
       that this is safe, and replace them with descriptors.  Descriptors
       are made up of data only, but the generated code must be prepared
!      to deal with them.  As of this writing, â€˜-fno-trampolinesâ€™ is
       enabled by default only for Ada.
  
!      Moreover, code compiled with â€˜-ftrampolinesâ€™ and code compiled with
!      â€˜-fno-trampolinesâ€™ are not binary compatible if nested functions
       are present.  This option must therefore be used on a program-wide
       basis and be manipulated with extreme care.
  
!      For languages other than Ada, the â€˜-ftrampolinesâ€™ and
!      â€˜-fno-trampolinesâ€™ options currently have no effect, and
       trampolines are always generated on platforms that need them for
       nested functions.
  
! â€˜-ftrampoline-impl=[stack|heap]â€™
       By default, trampolines are generated on stack.  However, certain
       platforms (such as the Apple M1) do not permit an executable stack.
!      Compiling with â€˜-ftrampoline-impl=heapâ€™ generate calls to
!      â€˜__gcc_nested_func_ptr_createdâ€™ and â€˜__gcc_nested_func_ptr_deletedâ€™
       in order to allocate and deallocate trampoline space on the
       executable heap.  These functions are implemented in libgcc, and
       will only be provided on specific targets: x86_64 Darwin, x86_64
       and aarch64 Linux.  _PLEASE NOTE_: Heap trampolines are _not_
!      guaranteed to be correctly deallocated if you â€˜setjmpâ€™, instantiate
!      nested functions, and then â€˜longjmpâ€™ back to a state prior to
       having allocated those nested functions.
  
! â€˜-fvisibility=[default|internal|hidden|protected]â€™
       Set the default ELF image symbol visibility to the specified
       option--all symbols are marked with this unless overridden within
       the code.  Using this feature can very substantially improve
*************** form by either removing 'no-' or adding
*** 19073,19083 ****
       clashes.  It is *strongly* recommended that you use this in any
       shared objects you distribute.
  
!      Despite the nomenclature, 'default' always means public; i.e.,
       available to be linked against from outside the shared object.
!      'protected' and 'internal' are pretty useless in real-world usage
!      so the only other commonly used option is 'hidden'.  The default if
!      '-fvisibility' isn't specified is 'default', i.e., make every
       symbol public.
  
       A good explanation of the benefits offered by ensuring ELF symbols
--- 19077,19087 ----
       clashes.  It is *strongly* recommended that you use this in any
       shared objects you distribute.
  
!      Despite the nomenclature, â€˜defaultâ€™ always means public; i.e.,
       available to be linked against from outside the shared object.
!      â€˜protectedâ€™ and â€˜internalâ€™ are pretty useless in real-world usage
!      so the only other commonly used option is â€˜hiddenâ€™.  The default if
!      â€˜-fvisibilityâ€™ isn't specified is â€˜defaultâ€™, i.e., make every
       symbol public.
  
       A good explanation of the benefits offered by ensuring ELF symbols
*************** form by either removing 'no-' or adding
*** 19087,19141 ****
       made possible by this option to marking things hidden when the
       default is public is to make the default hidden and mark things
       public.  This is the norm with DLLs on Windows and with
!      '-fvisibility=hidden' and '__attribute__ ((visibility("default")))'
!      instead of '__declspec(dllexport)' you get almost identical
       semantics with identical syntax.  This is a great boon to those
       working with cross-platform projects.
  
       For those adding visibility support to existing code, you may find
!      '#pragma GCC visibility' of use.  This works by you enclosing the
       declarations you wish to set visibility for with (for example)
!      '#pragma GCC visibility push(hidden)' and '#pragma GCC visibility
!      pop'.  Bear in mind that symbol visibility should be viewed *as
       part of the API interface contract* and thus all new code should
       always specify visibility when it is not the default; i.e.,
       declarations only for use within the local DSO should *always* be
       marked explicitly as hidden as so to avoid PLT indirection
       overheads--making this abundantly clear also aids readability and
       self-documentation of the code.  Note that due to ISO C++
!      specification requirements, 'operator new' and 'operator delete'
       must always be of default visibility.
  
       Be aware that headers from outside your project, in particular
       system headers and headers from any other library you use, may not
       be expecting to be compiled with visibility other than the default.
!      You may need to explicitly say '#pragma GCC visibility
!      push(default)' before including any such headers.
  
!      'extern' declarations are not affected by '-fvisibility', so a lot
!      of code can be recompiled with '-fvisibility=hidden' with no
!      modifications.  However, this means that calls to 'extern'
       functions with no explicit visibility use the PLT, so it is more
!      effective to use '__attribute ((visibility))' and/or '#pragma GCC
!      visibility' to tell the compiler which 'extern' declarations should
       be treated as hidden.
  
!      Note that '-fvisibility' does affect C++ vague linkage entities.
       This means that, for instance, an exception class that is be thrown
       between DSOs must be explicitly marked with default visibility so
!      that the 'type_info' nodes are unified between the DSOs.
  
       An overview of these techniques, their benefits and how to use them
       is at <https://gcc.gnu.org/wiki/Visibility>.
  
! '-fstrict-volatile-bitfields'
       This option should be used if accesses to volatile bit-fields (or
       other structure fields, although the compiler usually honors those
       types anyway) should use a single access of the width of the
       field's type, aligned to a natural alignment if possible.  For
       example, targets with memory-mapped peripheral registers might
       require all such accesses to be 16 bits wide; with this flag you
!      can declare all peripheral bit-fields as 'unsigned short' (assuming
       short is 16 bits on these targets) to force GCC to use 16-bit
       accesses instead of, perhaps, a more efficient 32-bit access.
  
--- 19091,19145 ----
       made possible by this option to marking things hidden when the
       default is public is to make the default hidden and mark things
       public.  This is the norm with DLLs on Windows and with
!      â€˜-fvisibility=hiddenâ€™ and â€˜__attribute__ ((visibility("default")))â€™
!      instead of â€˜__declspec(dllexport)â€™ you get almost identical
       semantics with identical syntax.  This is a great boon to those
       working with cross-platform projects.
  
       For those adding visibility support to existing code, you may find
!      â€˜#pragma GCC visibilityâ€™ of use.  This works by you enclosing the
       declarations you wish to set visibility for with (for example)
!      â€˜#pragma GCC visibility push(hidden)â€™ and â€˜#pragma GCC visibility
!      popâ€™.  Bear in mind that symbol visibility should be viewed *as
       part of the API interface contract* and thus all new code should
       always specify visibility when it is not the default; i.e.,
       declarations only for use within the local DSO should *always* be
       marked explicitly as hidden as so to avoid PLT indirection
       overheads--making this abundantly clear also aids readability and
       self-documentation of the code.  Note that due to ISO C++
!      specification requirements, â€˜operator newâ€™ and â€˜operator deleteâ€™
       must always be of default visibility.
  
       Be aware that headers from outside your project, in particular
       system headers and headers from any other library you use, may not
       be expecting to be compiled with visibility other than the default.
!      You may need to explicitly say â€˜#pragma GCC visibility
!      push(default)â€™ before including any such headers.
  
!      â€˜externâ€™ declarations are not affected by â€˜-fvisibilityâ€™, so a lot
!      of code can be recompiled with â€˜-fvisibility=hiddenâ€™ with no
!      modifications.  However, this means that calls to â€˜externâ€™
       functions with no explicit visibility use the PLT, so it is more
!      effective to use â€˜__attribute ((visibility))â€™ and/or â€˜#pragma GCC
!      visibilityâ€™ to tell the compiler which â€˜externâ€™ declarations should
       be treated as hidden.
  
!      Note that â€˜-fvisibilityâ€™ does affect C++ vague linkage entities.
       This means that, for instance, an exception class that is be thrown
       between DSOs must be explicitly marked with default visibility so
!      that the â€˜type_infoâ€™ nodes are unified between the DSOs.
  
       An overview of these techniques, their benefits and how to use them
       is at <https://gcc.gnu.org/wiki/Visibility>.
  
! â€˜-fstrict-volatile-bitfieldsâ€™
       This option should be used if accesses to volatile bit-fields (or
       other structure fields, although the compiler usually honors those
       types anyway) should use a single access of the width of the
       field's type, aligned to a natural alignment if possible.  For
       example, targets with memory-mapped peripheral registers might
       require all such accesses to be 16 bits wide; with this flag you
!      can declare all peripheral bit-fields as â€˜unsigned shortâ€™ (assuming
       short is 16 bits on these targets) to force GCC to use 16-bit
       accesses instead of, perhaps, a more efficient 32-bit access.
  
*************** form by either removing 'no-' or adding
*** 19145,19151 ****
       any portion of the bit-field, or memory-mapped registers unrelated
       to the one being updated.
  
!      In some cases, such as when the 'packed' attribute is applied to a
       structure field, it may not be possible to access the field with a
       single read or write that is correctly aligned for the target
       machine.  In this case GCC falls back to generating multiple
--- 19149,19155 ----
       any portion of the bit-field, or memory-mapped registers unrelated
       to the one being updated.
  
!      In some cases, such as when the â€˜packedâ€™ attribute is applied to a
       structure field, it may not be possible to access the field with a
       single read or write that is correctly aligned for the target
       machine.  In this case GCC falls back to generating multiple
*************** form by either removing 'no-' or adding
*** 19160,19183 ****
       The default value of this option is determined by the application
       binary interface for the target processor.
  
! '-fsync-libcalls'
       This option controls whether any out-of-line instance of the
!      '__sync' family of functions may be used to implement the C++11
!      '__atomic' family of functions.
  
       The default value of this option is enabled, thus the only useful
!      form of the option is '-fno-sync-libcalls'.  This option is used in
!      the implementation of the 'libatomic' runtime library.
  
! '-fzero-init-padding-bits=VALUE'
       Guarantee zero initialization of padding bits in automatic variable
       initializers.  Certain languages guarantee zero initialization of
       padding bits in certain cases, e.g.  C23 when using empty
!      initializers ('{}'), or C++ when using zero-initialization or C
       guarantees that fields not specified in an initializer have their
       padding bits zero initialized.  This option allows to change when
       padding bits in initializers are guaranteed to be zero initialized.
!      The default is '-fzero-init-padding-bits=standard', which makes no
       further guarantees than the corresponding standard.  E.g.
  
              struct A { char a; unsigned long long b; char c; };
--- 19164,19187 ----
       The default value of this option is determined by the application
       binary interface for the target processor.
  
! â€˜-fsync-libcallsâ€™
       This option controls whether any out-of-line instance of the
!      â€˜__syncâ€™ family of functions may be used to implement the C++11
!      â€˜__atomicâ€™ family of functions.
  
       The default value of this option is enabled, thus the only useful
!      form of the option is â€˜-fno-sync-libcallsâ€™.  This option is used in
!      the implementation of the â€˜libatomicâ€™ runtime library.
  
! â€˜-fzero-init-padding-bits=VALUEâ€™
       Guarantee zero initialization of padding bits in automatic variable
       initializers.  Certain languages guarantee zero initialization of
       padding bits in certain cases, e.g.  C23 when using empty
!      initializers (â€˜{}â€™), or C++ when using zero-initialization or C
       guarantees that fields not specified in an initializer have their
       padding bits zero initialized.  This option allows to change when
       padding bits in initializers are guaranteed to be zero initialized.
!      The default is â€˜-fzero-init-padding-bits=standardâ€™, which makes no
       further guarantees than the corresponding standard.  E.g.
  
              struct A { char a; unsigned long long b; char c; };
*************** form by either removing 'no-' or adding
*** 19187,19205 ****
              union B c = {}; // C23 guarantees padding bits are zero.
              union B d = { 1 }; // No guarantees.
  
!      '-fzero-init-padding-bits=unions' guarantees zero initialization of
       padding bits in unions on top of what the standards guarantee, if
       the initializer of an union is empty (then all bits of the union
       are zero initialized) or if the initialized member of the union is
       smaller than the size of the union (in that case guarantees padding
       bits outside of the initialized member to be zero initialized).
       This was the GCC behavior before GCC 15 and in the above example
!      guarantees zero initialization of last 'sizeof (unsigned long long)
!      - 1' bytes in the union.
  
!      '-fzero-init-padding-bits=all' guarantees additionally zero
       initialization of padding bits of other aggregates, so the padding
!      in between 'b.a' and 'b.b' (if any) and tail padding in the
       structure (if any).
  
  
--- 19191,19209 ----
              union B c = {}; // C23 guarantees padding bits are zero.
              union B d = { 1 }; // No guarantees.
  
!      â€˜-fzero-init-padding-bits=unionsâ€™ guarantees zero initialization of
       padding bits in unions on top of what the standards guarantee, if
       the initializer of an union is empty (then all bits of the union
       are zero initialized) or if the initialized member of the union is
       smaller than the size of the union (in that case guarantees padding
       bits outside of the initialized member to be zero initialized).
       This was the GCC behavior before GCC 15 and in the above example
!      guarantees zero initialization of last â€˜sizeof (unsigned long long)
!      - 1â€™ bytes in the union.
  
!      â€˜-fzero-init-padding-bits=allâ€™ guarantees additionally zero
       initialization of padding bits of other aggregates, so the padding
!      in between â€˜b.aâ€™ and â€˜b.bâ€™ (if any) and tail padding in the
       structure (if any).
  
  
*************** such as where it searches for libraries.
*** 19218,19227 ****
  any of these options for ordinary compilation and linking tasks.
  
   Many developer options that cause GCC to dump output to a file take an
! optional '=FILENAME' suffix.  You can specify 'stdout' or '-' to dump to
! standard output, and 'stderr' for standard error.
  
!  If '=FILENAME' is omitted, a default dump file name is constructed by
  concatenating the base dump file name, a pass number, phase letter, and
  pass name.  The base dump file name is the name of output file produced
  by the compiler if explicitly specified and not an executable; otherwise
--- 19222,19231 ----
  any of these options for ordinary compilation and linking tasks.
  
   Many developer options that cause GCC to dump output to a file take an
! optional â€˜=FILENAMEâ€™ suffix.  You can specify â€˜stdoutâ€™ or â€˜-â€™ to dump to
! standard output, and â€˜stderrâ€™ for standard error.
  
!  If â€˜=FILENAMEâ€™ is omitted, a default dump file name is constructed by
  concatenating the base dump file name, a pass number, phase letter, and
  pass name.  The base dump file name is the name of output file produced
  by the compiler if explicitly specified and not an executable; otherwise
*************** it is the source file name.  The pass nu
*** 19229,19550 ****
  passes are registered with the compiler's pass manager.  This is
  generally the same as the order of execution, but passes registered by
  plugins, target-specific passes, or passes that are otherwise registered
! late are numbered higher than the pass named 'final', even if they are
! executed earlier.  The phase letter is one of 'i' (inter-procedural
! analysis), 'l' (language-specific), 'r' (RTL), or 't' (tree).  The files
  are created in the directory of the output file.
  
! '-fcallgraph-info'
! '-fcallgraph-info=MARKERS'
       Makes the compiler output callgraph information for the program, on
       a per-object-file basis.  The information is generated in the
       common VCG format.  It can be decorated with additional, per-node
       and/or per-edge information, if a list of comma-separated markers
!      is additionally specified.  When the 'su' marker is specified, the
       callgraph is decorated with stack usage information; it is
!      equivalent to '-fstack-usage'.  When the 'da' marker is specified,
       the callgraph is decorated with information about dynamically
       allocated objects.
  
!      When compiling with '-flto', no callgraph information is output
!      along with the object file.  At LTO link time, '-fcallgraph-info'
       may generate multiple callgraph information files next to
       intermediate LTO output files.
  
! '-dLETTERS'
! '-fdump-rtl-PASS'
! '-fdump-rtl-PASS=FILENAME'
       Says to make debugging dumps during compilation at times specified
       by LETTERS.  This is used for debugging the RTL-based passes of the
       compiler.
  
!      Some '-dLETTERS' switches have different meaning when '-E' is used
       for preprocessing.  *Note Preprocessor Options::, for information
       about preprocessor-specific dump options.
  
!      Debug dumps can be enabled with a '-fdump-rtl' switch or some '-d'
       option LETTERS.  Here are the possible letters for use in PASS and
       LETTERS, and their meanings:
  
!      '-fdump-rtl-alignments'
            Dump after branch alignments have been computed.
  
!      '-fdump-rtl-asmcons'
            Dump after fixing rtl statements that have unsatisfied in/out
            constraints.
  
!      '-fdump-rtl-auto_inc_dec'
            Dump after auto-inc-dec discovery.  This pass is only run on
            architectures that have auto inc or auto dec instructions.
  
!      '-fdump-rtl-barriers'
            Dump after cleaning up the barrier instructions.
  
!      '-fdump-rtl-bbpart'
            Dump after partitioning hot and cold basic blocks.
  
!      '-fdump-rtl-bbro'
            Dump after block reordering.
  
!      '-fdump-rtl-btl1'
!      '-fdump-rtl-btl2'
!           '-fdump-rtl-btl1' and '-fdump-rtl-btl2' enable dumping after
            the two branch target load optimization passes.
  
!      '-fdump-rtl-bypass'
            Dump after jump bypassing and control flow optimizations.
  
!      '-fdump-rtl-combine'
            Dump after the RTL instruction combination pass.
  
!      '-fdump-rtl-compgotos'
            Dump after duplicating the computed gotos.
  
!      '-fdump-rtl-ce1'
!      '-fdump-rtl-ce2'
!      '-fdump-rtl-ce3'
!           '-fdump-rtl-ce1', '-fdump-rtl-ce2', and '-fdump-rtl-ce3'
            enable dumping after the three if conversion passes.
  
!      '-fdump-rtl-cprop_hardreg'
            Dump after hard register copy propagation.
  
!      '-fdump-rtl-csa'
            Dump after combining stack adjustments.
  
!      '-fdump-rtl-cse1'
!      '-fdump-rtl-cse2'
!           '-fdump-rtl-cse1' and '-fdump-rtl-cse2' enable dumping after
            the two common subexpression elimination passes.
  
!      '-fdump-rtl-dce'
            Dump after the standalone dead code elimination passes.
  
!      '-fdump-rtl-dbr'
            Dump after delayed branch scheduling.
  
!      '-fdump-rtl-dce1'
!      '-fdump-rtl-dce2'
!           '-fdump-rtl-dce1' and '-fdump-rtl-dce2' enable dumping after
            the two dead store elimination passes.
  
!      '-fdump-rtl-eh'
            Dump after finalization of EH handling code.
  
!      '-fdump-rtl-eh_ranges'
            Dump after conversion of EH handling range regions.
  
!      '-fdump-rtl-expand'
            Dump after RTL generation.
  
!      '-fdump-rtl-fwprop1'
!      '-fdump-rtl-fwprop2'
!           '-fdump-rtl-fwprop1' and '-fdump-rtl-fwprop2' enable dumping
            after the two forward propagation passes.
  
!      '-fdump-rtl-gcse1'
!      '-fdump-rtl-gcse2'
!           '-fdump-rtl-gcse1' and '-fdump-rtl-gcse2' enable dumping after
            global common subexpression elimination.
  
!      '-fdump-rtl-init-regs'
            Dump after the initialization of the registers.
  
!      '-fdump-rtl-initvals'
            Dump after the computation of the initial value sets.
  
!      '-fdump-rtl-into_cfglayout'
            Dump after converting to cfglayout mode.
  
!      '-fdump-rtl-ira'
            Dump after iterated register allocation.
  
!      '-fdump-rtl-jump'
            Dump after the second jump optimization.
  
!      '-fdump-rtl-loop2'
!           '-fdump-rtl-loop2' enables dumping after the rtl loop
            optimization passes.
  
!      '-fdump-rtl-mach'
            Dump after performing the machine dependent reorganization
            pass, if that pass exists.
  
!      '-fdump-rtl-mode_sw'
            Dump after removing redundant mode switches.
  
!      '-fdump-rtl-rnreg'
            Dump after register renumbering.
  
!      '-fdump-rtl-outof_cfglayout'
            Dump after converting from cfglayout mode.
  
!      '-fdump-rtl-peephole2'
            Dump after the peephole pass.
  
!      '-fdump-rtl-postreload'
            Dump after post-reload optimizations.
  
!      '-fdump-rtl-pro_and_epilogue'
            Dump after generating the function prologues and epilogues.
  
!      '-fdump-rtl-sched1'
!      '-fdump-rtl-sched2'
!           '-fdump-rtl-sched1' and '-fdump-rtl-sched2' enable dumping
            after the basic block scheduling passes.
  
!      '-fdump-rtl-ree'
            Dump after sign/zero extension elimination.
  
!      '-fdump-rtl-seqabstr'
            Dump after common sequence discovery.
  
!      '-fdump-rtl-shorten'
            Dump after shortening branches.
  
!      '-fdump-rtl-split1'
!      '-fdump-rtl-split2'
!      '-fdump-rtl-split3'
!      '-fdump-rtl-split4'
!      '-fdump-rtl-split5'
            These options enable dumping after five rounds of instruction
            splitting.
  
!      '-fdump-rtl-sms'
            Dump after modulo scheduling.  This pass is only run on some
            architectures.
  
!      '-fdump-rtl-stack'
            Dump after conversion from GCC's "flat register file"
            registers to the x87's stack-like registers.  This pass is
            only run on x86 variants.
  
!      '-fdump-rtl-subreg1'
!      '-fdump-rtl-subreg2'
!           '-fdump-rtl-subreg1' and '-fdump-rtl-subreg2' enable dumping
            after the two subreg expansion passes.
  
!      '-fdump-rtl-vartrack'
            Dump after variable tracking.
  
!      '-fdump-rtl-vregs'
            Dump after converting virtual registers to hard registers.
  
!      '-fdump-rtl-web'
            Dump after live range splitting.
  
!      '-fdump-rtl-regclass'
!      '-fdump-rtl-subregs_of_mode_init'
!      '-fdump-rtl-subregs_of_mode_finish'
!      '-fdump-rtl-dfinit'
!      '-fdump-rtl-dfinish'
            These dumps are defined but always produce empty files.
  
!      '-da'
!      '-fdump-rtl-all'
            Produce all the dumps listed above.
  
!      '-dA'
            Annotate the assembler output with miscellaneous debugging
            information.
  
!      '-dD'
            Dump all macro definitions, at the end of preprocessing, in
            addition to normal output.
  
!      '-dH'
            Produce a core dump whenever an error occurs.
  
!      '-dp'
            Annotate the assembler output with a comment indicating which
            pattern and alternative is used.  The length and cost of each
            instruction are also printed.
  
!      '-dP'
            Dump the RTL in the assembler output as a comment before each
!           instruction.  Also turns on '-dp' annotation.
  
!      '-dx'
            Just generate RTL for a function instead of compiling it.
!           Usually used with '-fdump-rtl-expand'.
  
! '-fdump-debug'
       Dump debugging information generated during the debug generation
       phase.
  
! '-fdump-earlydebug'
       Dump debugging information generated during the early debug
       generation phase.
  
! '-fdump-noaddr'
       When doing debugging dumps, suppress address output.  This makes it
       more feasible to use diff on debugging dumps for compiler
       invocations with different compiler binaries and/or different text
       / bss / data / heap / stack / dso start locations.
  
! '-freport-bug'
       Collect and dump debug information into a temporary file if an
       internal compiler error (ICE) occurs.
  
! '-fdump-unnumbered'
       When doing debugging dumps, suppress instruction numbers and
       address output.  This makes it more feasible to use diff on
       debugging dumps for compiler invocations with different options, in
!      particular with and without '-g'.
  
! '-fdump-unnumbered-links'
!      When doing debugging dumps (see '-d' option above), suppress
       instruction numbers for the links to the previous and next
       instructions in a sequence.
  
! '-fdump-ipa-SWITCH'
! '-fdump-ipa-SWITCH-OPTIONS'
       Control the dumping at various stages of inter-procedural analysis
       language tree to a file.  The file name is generated by appending a
       switch specific suffix to the source file name, and the file is
       created in the same directory as the output file.  The following
       dumps are possible:
  
!      'all'
            Enables all inter-procedural analysis dumps.
  
!      'cgraph'
            Dumps information about call-graph optimization, unused
            function removal, and inlining decisions.
  
!      'inline'
            Dump after function inlining.
  
!      'strubm'
!           Dump after selecting 'strub' modes, and recording the
            selections as function attributes.
  
!      'strub'
!           Dump 'strub' transformations: interface changes, function
            wrapping, and insertion of builtin calls for stack scrubbing
            and watermarking.
  
!      Additionally, the options '-optimized', '-missed', '-note', and
!      '-all' can be provided, with the same meaning as for '-fopt-info',
!      defaulting to '-optimized'.
  
!      For example, '-fdump-ipa-inline-optimized-missed' will emit
       information on callsites that were inlined, along with callsites
       that were not inlined.
  
       By default, the dump will contain messages about successful
!      optimizations (equivalent to '-optimized') together with low-level
       details about the analysis.
  
! '-fdump-ipa-clones'
  
       Create a dump file containing information about creation of call
       graph node clones and removals of call graph nodes during
       inter-procedural optimizations and transformations.  Its main
       intended use is that tools that create live-patches can determine
       the set of functions that need to be live-patched to completely
!      replace a particular function (see '-flive-patching').  The file
!      name is generated by appending suffix 'ipa-clones' to the source
       file name, and the file is created in the same directory as the
       output file.  Each entry in the file is on a separate line
       containing semicolon separated fields.
--- 19233,19554 ----
  passes are registered with the compiler's pass manager.  This is
  generally the same as the order of execution, but passes registered by
  plugins, target-specific passes, or passes that are otherwise registered
! late are numbered higher than the pass named â€˜finalâ€™, even if they are
! executed earlier.  The phase letter is one of â€˜iâ€™ (inter-procedural
! analysis), â€˜lâ€™ (language-specific), â€˜râ€™ (RTL), or â€˜tâ€™ (tree).  The files
  are created in the directory of the output file.
  
! â€˜-fcallgraph-infoâ€™
! â€˜-fcallgraph-info=MARKERSâ€™
       Makes the compiler output callgraph information for the program, on
       a per-object-file basis.  The information is generated in the
       common VCG format.  It can be decorated with additional, per-node
       and/or per-edge information, if a list of comma-separated markers
!      is additionally specified.  When the â€˜suâ€™ marker is specified, the
       callgraph is decorated with stack usage information; it is
!      equivalent to â€˜-fstack-usageâ€™.  When the â€˜daâ€™ marker is specified,
       the callgraph is decorated with information about dynamically
       allocated objects.
  
!      When compiling with â€˜-fltoâ€™, no callgraph information is output
!      along with the object file.  At LTO link time, â€˜-fcallgraph-infoâ€™
       may generate multiple callgraph information files next to
       intermediate LTO output files.
  
! â€˜-dLETTERSâ€™
! â€˜-fdump-rtl-PASSâ€™
! â€˜-fdump-rtl-PASS=FILENAMEâ€™
       Says to make debugging dumps during compilation at times specified
       by LETTERS.  This is used for debugging the RTL-based passes of the
       compiler.
  
!      Some â€˜-dLETTERSâ€™ switches have different meaning when â€˜-Eâ€™ is used
       for preprocessing.  *Note Preprocessor Options::, for information
       about preprocessor-specific dump options.
  
!      Debug dumps can be enabled with a â€˜-fdump-rtlâ€™ switch or some â€˜-dâ€™
       option LETTERS.  Here are the possible letters for use in PASS and
       LETTERS, and their meanings:
  
!      â€˜-fdump-rtl-alignmentsâ€™
            Dump after branch alignments have been computed.
  
!      â€˜-fdump-rtl-asmconsâ€™
            Dump after fixing rtl statements that have unsatisfied in/out
            constraints.
  
!      â€˜-fdump-rtl-auto_inc_decâ€™
            Dump after auto-inc-dec discovery.  This pass is only run on
            architectures that have auto inc or auto dec instructions.
  
!      â€˜-fdump-rtl-barriersâ€™
            Dump after cleaning up the barrier instructions.
  
!      â€˜-fdump-rtl-bbpartâ€™
            Dump after partitioning hot and cold basic blocks.
  
!      â€˜-fdump-rtl-bbroâ€™
            Dump after block reordering.
  
!      â€˜-fdump-rtl-btl1â€™
!      â€˜-fdump-rtl-btl2â€™
!           â€˜-fdump-rtl-btl1â€™ and â€˜-fdump-rtl-btl2â€™ enable dumping after
            the two branch target load optimization passes.
  
!      â€˜-fdump-rtl-bypassâ€™
            Dump after jump bypassing and control flow optimizations.
  
!      â€˜-fdump-rtl-combineâ€™
            Dump after the RTL instruction combination pass.
  
!      â€˜-fdump-rtl-compgotosâ€™
            Dump after duplicating the computed gotos.
  
!      â€˜-fdump-rtl-ce1â€™
!      â€˜-fdump-rtl-ce2â€™
!      â€˜-fdump-rtl-ce3â€™
!           â€˜-fdump-rtl-ce1â€™, â€˜-fdump-rtl-ce2â€™, and â€˜-fdump-rtl-ce3â€™
            enable dumping after the three if conversion passes.
  
!      â€˜-fdump-rtl-cprop_hardregâ€™
            Dump after hard register copy propagation.
  
!      â€˜-fdump-rtl-csaâ€™
            Dump after combining stack adjustments.
  
!      â€˜-fdump-rtl-cse1â€™
!      â€˜-fdump-rtl-cse2â€™
!           â€˜-fdump-rtl-cse1â€™ and â€˜-fdump-rtl-cse2â€™ enable dumping after
            the two common subexpression elimination passes.
  
!      â€˜-fdump-rtl-dceâ€™
            Dump after the standalone dead code elimination passes.
  
!      â€˜-fdump-rtl-dbrâ€™
            Dump after delayed branch scheduling.
  
!      â€˜-fdump-rtl-dce1â€™
!      â€˜-fdump-rtl-dce2â€™
!           â€˜-fdump-rtl-dce1â€™ and â€˜-fdump-rtl-dce2â€™ enable dumping after
            the two dead store elimination passes.
  
!      â€˜-fdump-rtl-ehâ€™
            Dump after finalization of EH handling code.
  
!      â€˜-fdump-rtl-eh_rangesâ€™
            Dump after conversion of EH handling range regions.
  
!      â€˜-fdump-rtl-expandâ€™
            Dump after RTL generation.
  
!      â€˜-fdump-rtl-fwprop1â€™
!      â€˜-fdump-rtl-fwprop2â€™
!           â€˜-fdump-rtl-fwprop1â€™ and â€˜-fdump-rtl-fwprop2â€™ enable dumping
            after the two forward propagation passes.
  
!      â€˜-fdump-rtl-gcse1â€™
!      â€˜-fdump-rtl-gcse2â€™
!           â€˜-fdump-rtl-gcse1â€™ and â€˜-fdump-rtl-gcse2â€™ enable dumping after
            global common subexpression elimination.
  
!      â€˜-fdump-rtl-init-regsâ€™
            Dump after the initialization of the registers.
  
!      â€˜-fdump-rtl-initvalsâ€™
            Dump after the computation of the initial value sets.
  
!      â€˜-fdump-rtl-into_cfglayoutâ€™
            Dump after converting to cfglayout mode.
  
!      â€˜-fdump-rtl-iraâ€™
            Dump after iterated register allocation.
  
!      â€˜-fdump-rtl-jumpâ€™
            Dump after the second jump optimization.
  
!      â€˜-fdump-rtl-loop2â€™
!           â€˜-fdump-rtl-loop2â€™ enables dumping after the rtl loop
            optimization passes.
  
!      â€˜-fdump-rtl-machâ€™
            Dump after performing the machine dependent reorganization
            pass, if that pass exists.
  
!      â€˜-fdump-rtl-mode_swâ€™
            Dump after removing redundant mode switches.
  
!      â€˜-fdump-rtl-rnregâ€™
            Dump after register renumbering.
  
!      â€˜-fdump-rtl-outof_cfglayoutâ€™
            Dump after converting from cfglayout mode.
  
!      â€˜-fdump-rtl-peephole2â€™
            Dump after the peephole pass.
  
!      â€˜-fdump-rtl-postreloadâ€™
            Dump after post-reload optimizations.
  
!      â€˜-fdump-rtl-pro_and_epilogueâ€™
            Dump after generating the function prologues and epilogues.
  
!      â€˜-fdump-rtl-sched1â€™
!      â€˜-fdump-rtl-sched2â€™
!           â€˜-fdump-rtl-sched1â€™ and â€˜-fdump-rtl-sched2â€™ enable dumping
            after the basic block scheduling passes.
  
!      â€˜-fdump-rtl-reeâ€™
            Dump after sign/zero extension elimination.
  
!      â€˜-fdump-rtl-seqabstrâ€™
            Dump after common sequence discovery.
  
!      â€˜-fdump-rtl-shortenâ€™
            Dump after shortening branches.
  
!      â€˜-fdump-rtl-split1â€™
!      â€˜-fdump-rtl-split2â€™
!      â€˜-fdump-rtl-split3â€™
!      â€˜-fdump-rtl-split4â€™
!      â€˜-fdump-rtl-split5â€™
            These options enable dumping after five rounds of instruction
            splitting.
  
!      â€˜-fdump-rtl-smsâ€™
            Dump after modulo scheduling.  This pass is only run on some
            architectures.
  
!      â€˜-fdump-rtl-stackâ€™
            Dump after conversion from GCC's "flat register file"
            registers to the x87's stack-like registers.  This pass is
            only run on x86 variants.
  
!      â€˜-fdump-rtl-subreg1â€™
!      â€˜-fdump-rtl-subreg2â€™
!           â€˜-fdump-rtl-subreg1â€™ and â€˜-fdump-rtl-subreg2â€™ enable dumping
            after the two subreg expansion passes.
  
!      â€˜-fdump-rtl-vartrackâ€™
            Dump after variable tracking.
  
!      â€˜-fdump-rtl-vregsâ€™
            Dump after converting virtual registers to hard registers.
  
!      â€˜-fdump-rtl-webâ€™
            Dump after live range splitting.
  
!      â€˜-fdump-rtl-regclassâ€™
!      â€˜-fdump-rtl-subregs_of_mode_initâ€™
!      â€˜-fdump-rtl-subregs_of_mode_finishâ€™
!      â€˜-fdump-rtl-dfinitâ€™
!      â€˜-fdump-rtl-dfinishâ€™
            These dumps are defined but always produce empty files.
  
!      â€˜-daâ€™
!      â€˜-fdump-rtl-allâ€™
            Produce all the dumps listed above.
  
!      â€˜-dAâ€™
            Annotate the assembler output with miscellaneous debugging
            information.
  
!      â€˜-dDâ€™
            Dump all macro definitions, at the end of preprocessing, in
            addition to normal output.
  
!      â€˜-dHâ€™
            Produce a core dump whenever an error occurs.
  
!      â€˜-dpâ€™
            Annotate the assembler output with a comment indicating which
            pattern and alternative is used.  The length and cost of each
            instruction are also printed.
  
!      â€˜-dPâ€™
            Dump the RTL in the assembler output as a comment before each
!           instruction.  Also turns on â€˜-dpâ€™ annotation.
  
!      â€˜-dxâ€™
            Just generate RTL for a function instead of compiling it.
!           Usually used with â€˜-fdump-rtl-expandâ€™.
  
! â€˜-fdump-debugâ€™
       Dump debugging information generated during the debug generation
       phase.
  
! â€˜-fdump-earlydebugâ€™
       Dump debugging information generated during the early debug
       generation phase.
  
! â€˜-fdump-noaddrâ€™
       When doing debugging dumps, suppress address output.  This makes it
       more feasible to use diff on debugging dumps for compiler
       invocations with different compiler binaries and/or different text
       / bss / data / heap / stack / dso start locations.
  
! â€˜-freport-bugâ€™
       Collect and dump debug information into a temporary file if an
       internal compiler error (ICE) occurs.
  
! â€˜-fdump-unnumberedâ€™
       When doing debugging dumps, suppress instruction numbers and
       address output.  This makes it more feasible to use diff on
       debugging dumps for compiler invocations with different options, in
!      particular with and without â€˜-gâ€™.
  
! â€˜-fdump-unnumbered-linksâ€™
!      When doing debugging dumps (see â€˜-dâ€™ option above), suppress
       instruction numbers for the links to the previous and next
       instructions in a sequence.
  
! â€˜-fdump-ipa-SWITCHâ€™
! â€˜-fdump-ipa-SWITCH-OPTIONSâ€™
       Control the dumping at various stages of inter-procedural analysis
       language tree to a file.  The file name is generated by appending a
       switch specific suffix to the source file name, and the file is
       created in the same directory as the output file.  The following
       dumps are possible:
  
!      â€˜allâ€™
            Enables all inter-procedural analysis dumps.
  
!      â€˜cgraphâ€™
            Dumps information about call-graph optimization, unused
            function removal, and inlining decisions.
  
!      â€˜inlineâ€™
            Dump after function inlining.
  
!      â€˜strubmâ€™
!           Dump after selecting â€˜strubâ€™ modes, and recording the
            selections as function attributes.
  
!      â€˜strubâ€™
!           Dump â€˜strubâ€™ transformations: interface changes, function
            wrapping, and insertion of builtin calls for stack scrubbing
            and watermarking.
  
!      Additionally, the options â€˜-optimizedâ€™, â€˜-missedâ€™, â€˜-noteâ€™, and
!      â€˜-allâ€™ can be provided, with the same meaning as for â€˜-fopt-infoâ€™,
!      defaulting to â€˜-optimizedâ€™.
  
!      For example, â€˜-fdump-ipa-inline-optimized-missedâ€™ will emit
       information on callsites that were inlined, along with callsites
       that were not inlined.
  
       By default, the dump will contain messages about successful
!      optimizations (equivalent to â€˜-optimizedâ€™) together with low-level
       details about the analysis.
  
! â€˜-fdump-ipa-clonesâ€™
  
       Create a dump file containing information about creation of call
       graph node clones and removals of call graph nodes during
       inter-procedural optimizations and transformations.  Its main
       intended use is that tools that create live-patches can determine
       the set of functions that need to be live-patched to completely
!      replace a particular function (see â€˜-flive-patchingâ€™).  The file
!      name is generated by appending suffix â€˜ipa-clonesâ€™ to the source
       file name, and the file is created in the same directory as the
       output file.  Each entry in the file is on a separate line
       containing semicolon separated fields.
*************** are created in the directory of the outp
*** 19552,19558 ****
       In the case of call graph clone creation, the individual fields
       are:
  
!        1. String 'Callgraph clone'.
  
         2. Name of the function being cloned as it is presented to the
            assembler.
--- 19556,19562 ----
       In the case of call graph clone creation, the individual fields
       are:
  
!        1. String â€˜Callgraph cloneâ€™.
  
         2. Name of the function being cloned as it is presented to the
            assembler.
*************** are created in the directory of the outp
*** 19590,19596 ****
  
       In the case of call graph clone removal, the individual fields are:
  
!        1. String 'Callgraph removal'.
  
         2. Name of the function being removed as it would be presented to
            the assembler.
--- 19594,19600 ----
  
       In the case of call graph clone removal, the individual fields are:
  
!        1. String â€˜Callgraph removalâ€™.
  
         2. Name of the function being removed as it would be presented to
            the assembler.
*************** are created in the directory of the outp
*** 19607,19680 ****
  
         6. The column where the function definition is located.
  
! '-fdump-lang'
       Dump language-specific information.  The file name is made by
!      appending '.lang' to the source file name.
  
! '-fdump-lang-all'
! '-fdump-lang-SWITCH'
! '-fdump-lang-SWITCH-OPTIONS'
! '-fdump-lang-SWITCH-OPTIONS=FILENAME'
       Control the dumping of language-specific information.  The OPTIONS
!      and FILENAME portions behave as described in the '-fdump-tree'
       option.  The following SWITCH values are accepted:
  
!      'all'
  
            Enable all language-specific dumps.
  
!      'class'
            Dump class hierarchy information.  Virtual table information
!           is emitted unless ''slim'' is specified.  This option is
            applicable to C++ only.
  
!      'module'
!           Dump module information.  Options 'lineno' (locations),
!           'graph' (reachability), 'blocks' (clusters), 'uid'
!           (serialization), 'alias' (mergeable), 'asmname' (Elrond), 'eh'
!           (mapper) & 'vops' (macros) may provide additional information.
            This option is applicable to C++ only.
  
!      'raw'
            Dump the raw internal tree data.  This option is applicable to
            C++ only.
  
! '-fdump-passes'
!      Print on 'stderr' the list of optimization passes that are turned
       on and off by the current command-line options.
  
! '-fdump-statistics-OPTION'
       Enable and control dumping of pass statistics in a separate file.
       The file name is generated by appending a suffix ending in
!      '.statistics' to the source file name, and the file is created in
!      the same directory as the output file.  If the '-OPTION' form is
!      used, '-stats' causes counters to be summed over the whole
!      compilation unit while '-details' dumps every event as the passes
       generate them.  The default with no option is to sum counters for
       each function compiled.
  
! '-fdump-tree-all'
! '-fdump-tree-SWITCH'
! '-fdump-tree-SWITCH-OPTIONS'
! '-fdump-tree-SWITCH-OPTIONS=FILENAME'
       Control the dumping at various stages of processing the
!      intermediate language tree to a file.  If the '-OPTIONS' form is
!      used, OPTIONS is a list of '-' separated options which control the
       details of the dump.  Not all options are applicable to all dumps;
       those that are not meaningful are ignored.  The following options
       are available
  
!      'address'
            Print the address of each node.  Usually this is not
            meaningful as it changes according to the environment and
            source file.  Its primary use is for tying up a dump file with
            a debug environment.
!      'asmname'
!           If 'DECL_ASSEMBLER_NAME' has been set for a given decl, use
!           that in the dump instead of 'DECL_NAME'.  Its primary use is
            ease of use working backward from mangled names in the
            assembly file.
!      'slim'
            When dumping front-end intermediate representations, inhibit
            dumping of members of a scope or body of a function merely
            because that scope has been reached.  Only dump such items
--- 19611,19684 ----
  
         6. The column where the function definition is located.
  
! â€˜-fdump-langâ€™
       Dump language-specific information.  The file name is made by
!      appending â€˜.langâ€™ to the source file name.
  
! â€˜-fdump-lang-allâ€™
! â€˜-fdump-lang-SWITCHâ€™
! â€˜-fdump-lang-SWITCH-OPTIONSâ€™
! â€˜-fdump-lang-SWITCH-OPTIONS=FILENAMEâ€™
       Control the dumping of language-specific information.  The OPTIONS
!      and FILENAME portions behave as described in the â€˜-fdump-treeâ€™
       option.  The following SWITCH values are accepted:
  
!      â€˜allâ€™
  
            Enable all language-specific dumps.
  
!      â€˜classâ€™
            Dump class hierarchy information.  Virtual table information
!           is emitted unless 'â€˜slimâ€™' is specified.  This option is
            applicable to C++ only.
  
!      â€˜moduleâ€™
!           Dump module information.  Options â€˜linenoâ€™ (locations),
!           â€˜graphâ€™ (reachability), â€˜blocksâ€™ (clusters), â€˜uidâ€™
!           (serialization), â€˜aliasâ€™ (mergeable), â€˜asmnameâ€™ (Elrond), â€˜ehâ€™
!           (mapper) & â€˜vopsâ€™ (macros) may provide additional information.
            This option is applicable to C++ only.
  
!      â€˜rawâ€™
            Dump the raw internal tree data.  This option is applicable to
            C++ only.
  
! â€˜-fdump-passesâ€™
!      Print on â€˜stderrâ€™ the list of optimization passes that are turned
       on and off by the current command-line options.
  
! â€˜-fdump-statistics-OPTIONâ€™
       Enable and control dumping of pass statistics in a separate file.
       The file name is generated by appending a suffix ending in
!      â€˜.statisticsâ€™ to the source file name, and the file is created in
!      the same directory as the output file.  If the â€˜-OPTIONâ€™ form is
!      used, â€˜-statsâ€™ causes counters to be summed over the whole
!      compilation unit while â€˜-detailsâ€™ dumps every event as the passes
       generate them.  The default with no option is to sum counters for
       each function compiled.
  
! â€˜-fdump-tree-allâ€™
! â€˜-fdump-tree-SWITCHâ€™
! â€˜-fdump-tree-SWITCH-OPTIONSâ€™
! â€˜-fdump-tree-SWITCH-OPTIONS=FILENAMEâ€™
       Control the dumping at various stages of processing the
!      intermediate language tree to a file.  If the â€˜-OPTIONSâ€™ form is
!      used, OPTIONS is a list of â€˜-â€™ separated options which control the
       details of the dump.  Not all options are applicable to all dumps;
       those that are not meaningful are ignored.  The following options
       are available
  
!      â€˜addressâ€™
            Print the address of each node.  Usually this is not
            meaningful as it changes according to the environment and
            source file.  Its primary use is for tying up a dump file with
            a debug environment.
!      â€˜asmnameâ€™
!           If â€˜DECL_ASSEMBLER_NAMEâ€™ has been set for a given decl, use
!           that in the dump instead of â€˜DECL_NAMEâ€™.  Its primary use is
            ease of use working backward from mangled names in the
            assembly file.
!      â€˜slimâ€™
            When dumping front-end intermediate representations, inhibit
            dumping of members of a scope or body of a function merely
            because that scope has been reached.  Only dump such items
*************** are created in the directory of the outp
*** 19685,19770 ****
  
            When dumping RTL, print the RTL in slim (condensed) form
            instead of the default LISP-like representation.
!      'raw'
            Print a raw representation of the tree.  By default, trees are
            pretty-printed into a C-like representation.
!      'details'
            Enable more detailed dumps (not honored by every dump option).
            Also include information from the optimization passes.
!      'stats'
            Enable dumping various statistics about the pass (not honored
            by every dump option).
!      'blocks'
            Enable showing basic block boundaries (disabled in raw dumps).
!      'graph'
            For each of the other indicated dump files
!           ('-fdump-rtl-PASS'), dump a representation of the control flow
            graph suitable for viewing with GraphViz to
!           'FILE.PASSID.PASS.dot'.  Each function in the file is
            pretty-printed as a subgraph, so that GraphViz can render them
            all in a single plot.
  
            This option currently only works for RTL dumps, and the RTL is
            always dumped in slim form.
!      'vops'
            Enable showing virtual operands for every statement.
!      'lineno'
            Enable showing line numbers for statements.
!      'uid'
!           Enable showing the unique ID ('DECL_UID') for each variable.
!      'verbose'
            Enable showing the tree dump for each statement.
!      'eh'
            Enable showing the EH region number holding each statement.
!      'scev'
            Enable showing scalar evolution analysis details.
!      'optimized'
            Enable showing optimization information (only available in
            certain passes).
!      'missed'
            Enable showing missed optimization information (only available
            in certain passes).
!      'note'
            Enable other detailed optimization information (only available
            in certain passes).
!      'all'
!           Turn on all options, except 'raw', 'slim', 'verbose' and
!           'lineno'.
!      'optall'
!           Turn on all optimization options, i.e., 'optimized', 'missed',
!           and 'note'.
  
       To determine what tree dumps are available or find the dump for a
       pass of interest follow the steps below.
  
!        1. Invoke GCC with '-fdump-passes' and in the 'stderr' output
            look for a code that corresponds to the pass you are
!           interested in.  For example, the codes 'tree-evrp',
!           'tree-vrp1', and 'tree-vrp2' correspond to the three Value
            Range Propagation passes.  The number at the end distinguishes
            distinct invocations of the same pass.
         2. To enable the creation of the dump file, append the pass code
!           to the '-fdump-' option prefix and invoke GCC with it.  For
            example, to enable the dump from the Early Value Range
!           Propagation pass, invoke GCC with the '-fdump-tree-evrp'
            option.  Optionally, you may specify the name of the dump
            file.  If you don't specify one, GCC creates as described
            below.
         3. Find the pass dump in a file whose name is composed of three
            components separated by a period: the name of the source file
            GCC was invoked to compile, a numeric suffix indicating the
!           pass number followed by the letter 't' for tree passes (and
!           the letter 'r' for RTL passes), and finally the pass code.
            For example, the Early VRP pass dump might be in a file named
!           'myfile.c.038t.evrp' in the current working directory.  Note
            that the numeric codes are not stable and may change from one
            version of GCC to another.
  
! '-fopt-info'
! '-fopt-info-OPTIONS'
! '-fopt-info-OPTIONS=FILENAME'
       Controls optimization dumps from various optimization passes.  If
!      the '-OPTIONS' form is used, OPTIONS is a list of '-' separated
       option keywords to select the dump details and optimizations.
  
       The OPTIONS can be divided into three groups:
--- 19689,19774 ----
  
            When dumping RTL, print the RTL in slim (condensed) form
            instead of the default LISP-like representation.
!      â€˜rawâ€™
            Print a raw representation of the tree.  By default, trees are
            pretty-printed into a C-like representation.
!      â€˜detailsâ€™
            Enable more detailed dumps (not honored by every dump option).
            Also include information from the optimization passes.
!      â€˜statsâ€™
            Enable dumping various statistics about the pass (not honored
            by every dump option).
!      â€˜blocksâ€™
            Enable showing basic block boundaries (disabled in raw dumps).
!      â€˜graphâ€™
            For each of the other indicated dump files
!           (â€˜-fdump-rtl-PASSâ€™), dump a representation of the control flow
            graph suitable for viewing with GraphViz to
!           â€˜FILE.PASSID.PASS.dotâ€™.  Each function in the file is
            pretty-printed as a subgraph, so that GraphViz can render them
            all in a single plot.
  
            This option currently only works for RTL dumps, and the RTL is
            always dumped in slim form.
!      â€˜vopsâ€™
            Enable showing virtual operands for every statement.
!      â€˜linenoâ€™
            Enable showing line numbers for statements.
!      â€˜uidâ€™
!           Enable showing the unique ID (â€˜DECL_UIDâ€™) for each variable.
!      â€˜verboseâ€™
            Enable showing the tree dump for each statement.
!      â€˜ehâ€™
            Enable showing the EH region number holding each statement.
!      â€˜scevâ€™
            Enable showing scalar evolution analysis details.
!      â€˜optimizedâ€™
            Enable showing optimization information (only available in
            certain passes).
!      â€˜missedâ€™
            Enable showing missed optimization information (only available
            in certain passes).
!      â€˜noteâ€™
            Enable other detailed optimization information (only available
            in certain passes).
!      â€˜allâ€™
!           Turn on all options, except â€˜rawâ€™, â€˜slimâ€™, â€˜verboseâ€™ and
!           â€˜linenoâ€™.
!      â€˜optallâ€™
!           Turn on all optimization options, i.e., â€˜optimizedâ€™, â€˜missedâ€™,
!           and â€˜noteâ€™.
  
       To determine what tree dumps are available or find the dump for a
       pass of interest follow the steps below.
  
!        1. Invoke GCC with â€˜-fdump-passesâ€™ and in the â€˜stderrâ€™ output
            look for a code that corresponds to the pass you are
!           interested in.  For example, the codes â€˜tree-evrpâ€™,
!           â€˜tree-vrp1â€™, and â€˜tree-vrp2â€™ correspond to the three Value
            Range Propagation passes.  The number at the end distinguishes
            distinct invocations of the same pass.
         2. To enable the creation of the dump file, append the pass code
!           to the â€˜-fdump-â€™ option prefix and invoke GCC with it.  For
            example, to enable the dump from the Early Value Range
!           Propagation pass, invoke GCC with the â€˜-fdump-tree-evrpâ€™
            option.  Optionally, you may specify the name of the dump
            file.  If you don't specify one, GCC creates as described
            below.
         3. Find the pass dump in a file whose name is composed of three
            components separated by a period: the name of the source file
            GCC was invoked to compile, a numeric suffix indicating the
!           pass number followed by the letter â€˜tâ€™ for tree passes (and
!           the letter â€˜râ€™ for RTL passes), and finally the pass code.
            For example, the Early VRP pass dump might be in a file named
!           â€˜myfile.c.038t.evrpâ€™ in the current working directory.  Note
            that the numeric codes are not stable and may change from one
            version of GCC to another.
  
! â€˜-fopt-infoâ€™
! â€˜-fopt-info-OPTIONSâ€™
! â€˜-fopt-info-OPTIONS=FILENAMEâ€™
       Controls optimization dumps from various optimization passes.  If
!      the â€˜-OPTIONSâ€™ form is used, OPTIONS is a list of â€˜-â€™ separated
       option keywords to select the dump details and optimizations.
  
       The OPTIONS can be divided into three groups:
*************** are created in the directory of the outp
*** 19778,19801 ****
       The following options control which kinds of messages should be
       emitted:
  
!      'optimized'
            Print information when an optimization is successfully
            applied.  It is up to a pass to decide which information is
            relevant.  For example, the vectorizer passes print the source
            location of loops which are successfully vectorized.
!      'missed'
            Print information about missed optimizations.  Individual
            passes control which information to include in the output.
!      'note'
            Print verbose information about optimizations, such as certain
            transformations, more detailed messages about decisions etc.
!      'all'
            Print detailed optimization information.  This includes
!           'optimized', 'missed', and 'note'.
  
       The following option controls the dump verbosity:
  
!      'internals'
            By default, only "high-level" messages are emitted.  This
            option enables additional, more detailed, messages, which are
            likely to only be of interest to GCC developers.
--- 19782,19805 ----
       The following options control which kinds of messages should be
       emitted:
  
!      â€˜optimizedâ€™
            Print information when an optimization is successfully
            applied.  It is up to a pass to decide which information is
            relevant.  For example, the vectorizer passes print the source
            location of loops which are successfully vectorized.
!      â€˜missedâ€™
            Print information about missed optimizations.  Individual
            passes control which information to include in the output.
!      â€˜noteâ€™
            Print verbose information about optimizations, such as certain
            transformations, more detailed messages about decisions etc.
!      â€˜allâ€™
            Print detailed optimization information.  This includes
!           â€˜optimizedâ€™, â€˜missedâ€™, and â€˜noteâ€™.
  
       The following option controls the dump verbosity:
  
!      â€˜internalsâ€™
            By default, only "high-level" messages are emitted.  This
            option enables additional, more detailed, messages, which are
            likely to only be of interest to GCC developers.
*************** are created in the directory of the outp
*** 19803,19840 ****
       One or more of the following option keywords can be used to
       describe a group of optimizations:
  
!      'ipa'
            Enable dumps from all interprocedural optimizations.
!      'loop'
            Enable dumps from all loop optimizations.
!      'inline'
            Enable dumps from all inlining optimizations.
!      'omp'
            Enable dumps from all OMP (Offloading and Multi Processing)
            optimizations.
!      'vec'
            Enable dumps from all vectorization optimizations.
!      'optall'
            Enable dumps from all optimizations.  This is a superset of
            the optimization groups listed above.
  
!      If OPTIONS is omitted, it defaults to 'optimized-optall', which
       means to dump messages about successful optimizations from all the
       passes, omitting messages that are treated as "internals".
  
       If the FILENAME is provided, then the dumps from all the applicable
       optimizations are concatenated into the FILENAME.  Otherwise the
!      dump is output onto 'stderr'.  Though multiple '-fopt-info' options
       are accepted, only one of them can include a FILENAME.  If other
       filenames are provided then all but the first such option are
       ignored.
  
       Note that the output FILENAME is overwritten in case of multiple
       translation units.  If a combined output from multiple translation
!      units is desired, 'stderr' should be used instead.
  
       In the following example, the optimization info is output to
!      'stderr':
  
            gcc -O3 -fopt-info
  
--- 19807,19844 ----
       One or more of the following option keywords can be used to
       describe a group of optimizations:
  
!      â€˜ipaâ€™
            Enable dumps from all interprocedural optimizations.
!      â€˜loopâ€™
            Enable dumps from all loop optimizations.
!      â€˜inlineâ€™
            Enable dumps from all inlining optimizations.
!      â€˜ompâ€™
            Enable dumps from all OMP (Offloading and Multi Processing)
            optimizations.
!      â€˜vecâ€™
            Enable dumps from all vectorization optimizations.
!      â€˜optallâ€™
            Enable dumps from all optimizations.  This is a superset of
            the optimization groups listed above.
  
!      If OPTIONS is omitted, it defaults to â€˜optimized-optallâ€™, which
       means to dump messages about successful optimizations from all the
       passes, omitting messages that are treated as "internals".
  
       If the FILENAME is provided, then the dumps from all the applicable
       optimizations are concatenated into the FILENAME.  Otherwise the
!      dump is output onto â€˜stderrâ€™.  Though multiple â€˜-fopt-infoâ€™ options
       are accepted, only one of them can include a FILENAME.  If other
       filenames are provided then all but the first such option are
       ignored.
  
       Note that the output FILENAME is overwritten in case of multiple
       translation units.  If a combined output from multiple translation
!      units is desired, â€˜stderrâ€™ should be used instead.
  
       In the following example, the optimization info is output to
!      â€˜stderrâ€™:
  
            gcc -O3 -fopt-info
  
*************** are created in the directory of the outp
*** 19842,19942 ****
            gcc -O3 -fopt-info-missed=missed.all
  
       outputs missed optimization report from all the passes into
!      'missed.all', and this one:
  
            gcc -O2 -ftree-vectorize -fopt-info-vec-missed
  
       prints information about missed optimization opportunities from
!      vectorization passes on 'stderr'.  Note that
!      '-fopt-info-vec-missed' is equivalent to '-fopt-info-missed-vec'.
       The order of the optimization group names and message types listed
!      after '-fopt-info' does not matter.
  
       As another example,
            gcc -O3 -fopt-info-inline-optimized-missed=inline.txt
  
       outputs information about missed optimizations as well as optimized
!      locations from all the inlining passes into 'inline.txt'.
  
       Finally, consider:
  
            gcc -fopt-info-vec-missed=vec.miss -fopt-info-loop-optimized=loop.opt
  
!      Here the two output filenames 'vec.miss' and 'loop.opt' are in
       conflict since only one output file is allowed.  In this case, only
       the first option takes effect and the subsequent options are
!      ignored.  Thus only 'vec.miss' is produced which contains dumps
       from the vectorizer about missed opportunities.
  
! '-fsave-optimization-record'
       Write a SRCFILE.opt-record.json.gz file detailing what
       optimizations were performed, for those optimizations that support
!      '-fopt-info'.
  
       This option is experimental and the format of the data within the
       compressed JSON file is subject to change.
  
       It is roughly equivalent to a machine-readable version of
!      '-fopt-info-all', as a collection of messages with source file,
       line number and column number, with the following additional data
       for each message:
  
!         * the execution count of the code being optimized, along with
            metadata about whether this was from actual profile data, or
            just an estimate, allowing consumers to prioritize messages by
            code hotness,
  
!         * the function name of the code being optimized, where
            applicable,
  
!         * the "inlining chain" for the code being optimized, so that
            when a function is inlined into several different places
            (which might themselves be inlined), the reader can
            distinguish between the copies,
  
!         * objects identifying those parts of the message that refer to
            expressions, statements or symbol-table nodes, which of these
            categories they are, and, when available, their source code
            location,
  
!         * the GCC pass that emitted the message, and
  
!         * the location in GCC's own code from which the message was
            emitted
  
       Additionally, some messages are logically nested within other
       messages, reflecting implementation details of the optimization
       passes.
  
! '-fsched-verbose=N'
       On targets that use instruction scheduling, this option controls
       the amount of debugging output the scheduler prints to the dump
       files.
  
!      For N greater than zero, '-fsched-verbose' outputs the same
!      information as '-fdump-rtl-sched1' and '-fdump-rtl-sched2'.  For N
       greater than one, it also output basic block probabilities,
       detailed ready list information and unit/insn info.  For N greater
       than two, it includes RTL at abort point, control-flow and regions
!      info.  And for N over four, '-fsched-verbose' also includes
       dependence info.
  
! '-fenable-KIND-PASS'
! '-fdisable-KIND-PASS=RANGE-LIST'
  
       This is a set of options that are used to explicitly disable/enable
       optimization passes.  These options are intended for use for
       debugging GCC. Compiler users should use regular options for
       enabling/disabling passes instead.
  
!      '-fdisable-ipa-PASS'
            Disable IPA pass PASS.  PASS is the pass name.  If the same
            pass is statically invoked in the compiler multiple times, the
            pass name should be appended with a sequential number starting
            from 1.
  
!      '-fdisable-rtl-PASS'
!      '-fdisable-rtl-PASS=RANGE-LIST'
            Disable RTL pass PASS.  PASS is the pass name.  If the same
            pass is statically invoked in the compiler multiple times, the
            pass name should be appended with a sequential number starting
--- 19846,19946 ----
            gcc -O3 -fopt-info-missed=missed.all
  
       outputs missed optimization report from all the passes into
!      â€˜missed.allâ€™, and this one:
  
            gcc -O2 -ftree-vectorize -fopt-info-vec-missed
  
       prints information about missed optimization opportunities from
!      vectorization passes on â€˜stderrâ€™.  Note that
!      â€˜-fopt-info-vec-missedâ€™ is equivalent to â€˜-fopt-info-missed-vecâ€™.
       The order of the optimization group names and message types listed
!      after â€˜-fopt-infoâ€™ does not matter.
  
       As another example,
            gcc -O3 -fopt-info-inline-optimized-missed=inline.txt
  
       outputs information about missed optimizations as well as optimized
!      locations from all the inlining passes into â€˜inline.txtâ€™.
  
       Finally, consider:
  
            gcc -fopt-info-vec-missed=vec.miss -fopt-info-loop-optimized=loop.opt
  
!      Here the two output filenames â€˜vec.missâ€™ and â€˜loop.optâ€™ are in
       conflict since only one output file is allowed.  In this case, only
       the first option takes effect and the subsequent options are
!      ignored.  Thus only â€˜vec.missâ€™ is produced which contains dumps
       from the vectorizer about missed opportunities.
  
! â€˜-fsave-optimization-recordâ€™
       Write a SRCFILE.opt-record.json.gz file detailing what
       optimizations were performed, for those optimizations that support
!      â€˜-fopt-infoâ€™.
  
       This option is experimental and the format of the data within the
       compressed JSON file is subject to change.
  
       It is roughly equivalent to a machine-readable version of
!      â€˜-fopt-info-allâ€™, as a collection of messages with source file,
       line number and column number, with the following additional data
       for each message:
  
!         â€¢ the execution count of the code being optimized, along with
            metadata about whether this was from actual profile data, or
            just an estimate, allowing consumers to prioritize messages by
            code hotness,
  
!         â€¢ the function name of the code being optimized, where
            applicable,
  
!         â€¢ the "inlining chain" for the code being optimized, so that
            when a function is inlined into several different places
            (which might themselves be inlined), the reader can
            distinguish between the copies,
  
!         â€¢ objects identifying those parts of the message that refer to
            expressions, statements or symbol-table nodes, which of these
            categories they are, and, when available, their source code
            location,
  
!         â€¢ the GCC pass that emitted the message, and
  
!         â€¢ the location in GCC's own code from which the message was
            emitted
  
       Additionally, some messages are logically nested within other
       messages, reflecting implementation details of the optimization
       passes.
  
! â€˜-fsched-verbose=Nâ€™
       On targets that use instruction scheduling, this option controls
       the amount of debugging output the scheduler prints to the dump
       files.
  
!      For N greater than zero, â€˜-fsched-verboseâ€™ outputs the same
!      information as â€˜-fdump-rtl-sched1â€™ and â€˜-fdump-rtl-sched2â€™.  For N
       greater than one, it also output basic block probabilities,
       detailed ready list information and unit/insn info.  For N greater
       than two, it includes RTL at abort point, control-flow and regions
!      info.  And for N over four, â€˜-fsched-verboseâ€™ also includes
       dependence info.
  
! â€˜-fenable-KIND-PASSâ€™
! â€˜-fdisable-KIND-PASS=RANGE-LISTâ€™
  
       This is a set of options that are used to explicitly disable/enable
       optimization passes.  These options are intended for use for
       debugging GCC. Compiler users should use regular options for
       enabling/disabling passes instead.
  
!      â€˜-fdisable-ipa-PASSâ€™
            Disable IPA pass PASS.  PASS is the pass name.  If the same
            pass is statically invoked in the compiler multiple times, the
            pass name should be appended with a sequential number starting
            from 1.
  
!      â€˜-fdisable-rtl-PASSâ€™
!      â€˜-fdisable-rtl-PASS=RANGE-LISTâ€™
            Disable RTL pass PASS.  PASS is the pass name.  If the same
            pass is statically invoked in the compiler multiple times, the
            pass name should be appended with a sequential number starting
*************** are created in the directory of the outp
*** 19948,19974 ****
            falls within one of the specified ranges, the PASS is disabled
            for that function.  The UID is shown in the function header of
            a dump file, and the pass names can be dumped by using option
!           '-fdump-passes'.
  
!      '-fdisable-tree-PASS'
!      '-fdisable-tree-PASS=RANGE-LIST'
!           Disable tree pass PASS.  See '-fdisable-rtl' for the
            description of option arguments.
  
!      '-fenable-ipa-PASS'
            Enable IPA pass PASS.  PASS is the pass name.  If the same
            pass is statically invoked in the compiler multiple times, the
            pass name should be appended with a sequential number starting
            from 1.
  
!      '-fenable-rtl-PASS'
!      '-fenable-rtl-PASS=RANGE-LIST'
!           Enable RTL pass PASS.  See '-fdisable-rtl' for option argument
            description and examples.
  
!      '-fenable-tree-PASS'
!      '-fenable-tree-PASS=RANGE-LIST'
!           Enable tree pass PASS.  See '-fdisable-rtl' for the
            description of option arguments.
  
       Here are some examples showing uses of these options.
--- 19952,19978 ----
            falls within one of the specified ranges, the PASS is disabled
            for that function.  The UID is shown in the function header of
            a dump file, and the pass names can be dumped by using option
!           â€˜-fdump-passesâ€™.
  
!      â€˜-fdisable-tree-PASSâ€™
!      â€˜-fdisable-tree-PASS=RANGE-LISTâ€™
!           Disable tree pass PASS.  See â€˜-fdisable-rtlâ€™ for the
            description of option arguments.
  
!      â€˜-fenable-ipa-PASSâ€™
            Enable IPA pass PASS.  PASS is the pass name.  If the same
            pass is statically invoked in the compiler multiple times, the
            pass name should be appended with a sequential number starting
            from 1.
  
!      â€˜-fenable-rtl-PASSâ€™
!      â€˜-fenable-rtl-PASS=RANGE-LISTâ€™
!           Enable RTL pass PASS.  See â€˜-fdisable-rtlâ€™ for option argument
            description and examples.
  
!      â€˜-fenable-tree-PASSâ€™
!      â€˜-fenable-tree-PASS=RANGE-LISTâ€™
!           Enable tree pass PASS.  See â€˜-fdisable-rtlâ€™ for the
            description of option arguments.
  
       Here are some examples showing uses of these options.
*************** are created in the directory of the outp
*** 19990,20007 ****
               -fenable-tree-unroll
  
  
! '-fchecking'
! '-fchecking=N'
       Enable internal consistency checking.  The default depends on the
!      compiler configuration.  '-fchecking=2' enables further internal
       consistency checking that might affect code generation.
  
! '-frandom-seed=STRING'
       This option provides a seed that GCC uses in place of random
       numbers in generating certain symbol names that have to be
       different in every compiled file.  It is also used to place unique
       stamps in coverage data files and the object files that produce
!      them.  You can use the '-frandom-seed' option to produce
       reproducibly identical object files.
  
       The STRING can either be a number (decimal, octal or hex) or an
--- 19994,20011 ----
               -fenable-tree-unroll
  
  
! â€˜-fcheckingâ€™
! â€˜-fchecking=Nâ€™
       Enable internal consistency checking.  The default depends on the
!      compiler configuration.  â€˜-fchecking=2â€™ enables further internal
       consistency checking that might affect code generation.
  
! â€˜-frandom-seed=STRINGâ€™
       This option provides a seed that GCC uses in place of random
       numbers in generating certain symbol names that have to be
       different in every compiled file.  It is also used to place unique
       stamps in coverage data files and the object files that produce
!      them.  You can use the â€˜-frandom-seedâ€™ option to produce
       reproducibly identical object files.
  
       The STRING can either be a number (decimal, octal or hex) or an
*************** are created in the directory of the outp
*** 20010,20036 ****
  
       The STRING should be different for every file you compile.
  
! '-save-temps'
       Store the usual "temporary" intermediate files permanently; name
       them as auxiliary output files, as specified described under
!      '-dumpbase' and '-dumpdir'.
  
!      When used in combination with the '-x' command-line option,
!      '-save-temps' is sensible enough to avoid overwriting an input
       source file with the same extension as an intermediate file.  The
       corresponding intermediate file may be obtained by renaming the
!      source file before using '-save-temps'.
  
! '-save-temps=cwd'
!      Equivalent to '-save-temps -dumpdir ./'.
  
! '-save-temps=obj'
!      Equivalent to '-save-temps -dumpdir outdir/', where 'outdir/' is
!      the directory of the output file specified after the '-o' option,
!      including any directory separators.  If the '-o' option is not
!      used, the '-save-temps=obj' switch behaves like '-save-temps=cwd'.
  
! '-time[=FILE]'
       Report the CPU time taken by each subprocess in the compilation
       sequence.  For C source files, this is the compiler proper and
       assembler (plus the linker if linking is done).
--- 20014,20040 ----
  
       The STRING should be different for every file you compile.
  
! â€˜-save-tempsâ€™
       Store the usual "temporary" intermediate files permanently; name
       them as auxiliary output files, as specified described under
!      â€˜-dumpbaseâ€™ and â€˜-dumpdirâ€™.
  
!      When used in combination with the â€˜-xâ€™ command-line option,
!      â€˜-save-tempsâ€™ is sensible enough to avoid overwriting an input
       source file with the same extension as an intermediate file.  The
       corresponding intermediate file may be obtained by renaming the
!      source file before using â€˜-save-tempsâ€™.
  
! â€˜-save-temps=cwdâ€™
!      Equivalent to â€˜-save-temps -dumpdir ./â€™.
  
! â€˜-save-temps=objâ€™
!      Equivalent to â€˜-save-temps -dumpdir outdir/â€™, where â€˜outdir/â€™ is
!      the directory of the output file specified after the â€˜-oâ€™ option,
!      including any directory separators.  If the â€˜-oâ€™ option is not
!      used, the â€˜-save-temps=objâ€™ switch behaves like â€˜-save-temps=cwdâ€™.
  
! â€˜-time[=FILE]â€™
       Report the CPU time taken by each subprocess in the compilation
       sequence.  For C source files, this is the compiler proper and
       assembler (plus the linker if linking is done).
*************** are created in the directory of the outp
*** 20057,20184 ****
       one can later tell what file was being compiled, and with which
       options.
  
! '-fdump-final-insns[=FILE]'
       Dump the final internal representation (RTL) to FILE.  If the
!      optional argument is omitted (or if FILE is '.'), the name of the
!      dump file is determined by appending '.gkd' to the dump base name,
!      see '-dumpbase'.
  
! '-fcompare-debug[=OPTS]'
       If no error occurs during compilation, run the compiler a second
!      time, adding OPTS and '-fcompare-debug-second' to the arguments
       passed to the second compilation.  Dump the final internal
       representation in both compilations, and print an error if they
       differ.
  
!      If the equal sign is omitted, the default '-gtoggle' is used.
  
!      The environment variable 'GCC_COMPARE_DEBUG', if defined, non-empty
!      and nonzero, implicitly enables '-fcompare-debug'.  If
!      'GCC_COMPARE_DEBUG' is defined to a string starting with a dash,
!      then it is used for OPTS, otherwise the default '-gtoggle' is used.
  
!      '-fcompare-debug=', with the equal sign but without OPTS, is
!      equivalent to '-fno-compare-debug', which disables the dumping of
       the final representation and the second compilation, preventing
!      even 'GCC_COMPARE_DEBUG' from taking effect.
  
!      To verify full coverage during '-fcompare-debug' testing, set
!      'GCC_COMPARE_DEBUG' to say '-fcompare-debug-not-overridden', which
       GCC rejects as an invalid option in any actual compilation (rather
       than preprocessing, assembly or linking).  To get just a warning,
!      setting 'GCC_COMPARE_DEBUG' to '-w%n-fcompare-debug not overridden'
       will do.
  
! '-fcompare-debug-second'
       This option is implicitly passed to the compiler for the second
!      compilation requested by '-fcompare-debug', along with options to
       silence warnings, and omitting other options that would cause the
       compiler to produce output to files or to standard output as a side
       effect.  Dump files and preserved temporary files are renamed so as
!      to contain the '.gk' additional extension during the second
       compilation, to avoid overwriting those generated by the first.
  
       When this option is passed to the compiler driver, it causes the
       _first_ compilation to be skipped, which makes it useful for little
       other than debugging the compiler proper.
  
! '-gtoggle'
       Turn off generation of debug info, if leaving out this option
       generates it, or turn it on at level 2 otherwise.  The position of
       this argument in the command line does not matter; it takes effect
       after all other options are processed, and it does so only once, no
       matter how many times it is given.  This is mainly intended to be
!      used with '-fcompare-debug'.
  
! '-fvar-tracking-assignments-toggle'
!      Toggle '-fvar-tracking-assignments', in the same way that
!      '-gtoggle' toggles '-g'.
  
! '-Q'
!      When used on the command line prior to '--help=', '-Q' acts as a
       modifier to the help output.  *Note Overall Options::, for details
!      about '--help='.
  
       Otherwise, this option makes the compiler print out each function
       name as it is compiled, and print some statistics about each pass
       when it finishes.
  
! '-ftime-report'
       Makes the compiler print some statistics to stderr about the time
       consumed by each pass when it finishes.
  
       If SARIF output of diagnostics was requested via
!      '-fdiagnostics-format=sarif-file' or
!      '-fdiagnostics-format=sarif-stderr' then the '-ftime-report'
       information is instead emitted in JSON form as part of SARIF
       output.  The precise format of this JSON data is subject to change,
       and the values may not exactly match those emitted to stderr due to
       being written out at a slightly different place within the
       compiler.
  
! '-ftime-report-details'
       Record the time consumed by infrastructure parts separately for
       each pass.
  
! '-fira-verbose=N'
       Control the verbosity of the dump file for the integrated register
       allocator.  The default value is 5.  If the value N is greater or
       equal to 10, the dump output is sent to stderr using the same
       format as N minus 10.
  
! '-flto-report'
       Prints a report with internal details on the workings of the
       link-time optimizer.  The contents of this report vary from version
       to version.  It is meant to be useful to GCC developers when
!      processing object files in LTO mode (via '-flto').
  
       Disabled by default.
  
! '-flto-report-wpa'
!      Like '-flto-report', but only print for the WPA phase of link-time
       optimization.
  
! '-fmem-report'
       Makes the compiler print some statistics about permanent memory
       allocation when it finishes.
  
! '-fmem-report-wpa'
       Makes the compiler print some statistics about permanent memory
       allocation for the WPA phase only.
  
! '-fpre-ipa-mem-report'
! '-fpost-ipa-mem-report'
       Makes the compiler print some statistics about permanent memory
       allocation before or after interprocedural optimization.
  
! '-fmultiflags'
!      This option enables multilib-aware 'TFLAGS' to be used to build
       target libraries with options different from those the compiler is
       configured to use by default, through the use of specs (*note Spec
       Files::) set up by compiler internals, by the target, or by
       builders at configure time.
  
!      Like 'TFLAGS', this allows the target libraries to be built for
       portable baseline environments, while the compiler defaults to more
       demanding ones.  That's useful because users can easily override
       the defaults the compiler is configured to use to build their own
--- 20061,20188 ----
       one can later tell what file was being compiled, and with which
       options.
  
! â€˜-fdump-final-insns[=FILE]â€™
       Dump the final internal representation (RTL) to FILE.  If the
!      optional argument is omitted (or if FILE is â€˜.â€™), the name of the
!      dump file is determined by appending â€˜.gkdâ€™ to the dump base name,
!      see â€˜-dumpbaseâ€™.
  
! â€˜-fcompare-debug[=OPTS]â€™
       If no error occurs during compilation, run the compiler a second
!      time, adding OPTS and â€˜-fcompare-debug-secondâ€™ to the arguments
       passed to the second compilation.  Dump the final internal
       representation in both compilations, and print an error if they
       differ.
  
!      If the equal sign is omitted, the default â€˜-gtoggleâ€™ is used.
  
!      The environment variable â€˜GCC_COMPARE_DEBUGâ€™, if defined, non-empty
!      and nonzero, implicitly enables â€˜-fcompare-debugâ€™.  If
!      â€˜GCC_COMPARE_DEBUGâ€™ is defined to a string starting with a dash,
!      then it is used for OPTS, otherwise the default â€˜-gtoggleâ€™ is used.
  
!      â€˜-fcompare-debug=â€™, with the equal sign but without OPTS, is
!      equivalent to â€˜-fno-compare-debugâ€™, which disables the dumping of
       the final representation and the second compilation, preventing
!      even â€˜GCC_COMPARE_DEBUGâ€™ from taking effect.
  
!      To verify full coverage during â€˜-fcompare-debugâ€™ testing, set
!      â€˜GCC_COMPARE_DEBUGâ€™ to say â€˜-fcompare-debug-not-overriddenâ€™, which
       GCC rejects as an invalid option in any actual compilation (rather
       than preprocessing, assembly or linking).  To get just a warning,
!      setting â€˜GCC_COMPARE_DEBUGâ€™ to â€˜-w%n-fcompare-debug not overriddenâ€™
       will do.
  
! â€˜-fcompare-debug-secondâ€™
       This option is implicitly passed to the compiler for the second
!      compilation requested by â€˜-fcompare-debugâ€™, along with options to
       silence warnings, and omitting other options that would cause the
       compiler to produce output to files or to standard output as a side
       effect.  Dump files and preserved temporary files are renamed so as
!      to contain the â€˜.gkâ€™ additional extension during the second
       compilation, to avoid overwriting those generated by the first.
  
       When this option is passed to the compiler driver, it causes the
       _first_ compilation to be skipped, which makes it useful for little
       other than debugging the compiler proper.
  
! â€˜-gtoggleâ€™
       Turn off generation of debug info, if leaving out this option
       generates it, or turn it on at level 2 otherwise.  The position of
       this argument in the command line does not matter; it takes effect
       after all other options are processed, and it does so only once, no
       matter how many times it is given.  This is mainly intended to be
!      used with â€˜-fcompare-debugâ€™.
  
! â€˜-fvar-tracking-assignments-toggleâ€™
!      Toggle â€˜-fvar-tracking-assignmentsâ€™, in the same way that
!      â€˜-gtoggleâ€™ toggles â€˜-gâ€™.
  
! â€˜-Qâ€™
!      When used on the command line prior to â€˜--help=â€™, â€˜-Qâ€™ acts as a
       modifier to the help output.  *Note Overall Options::, for details
!      about â€˜--help=â€™.
  
       Otherwise, this option makes the compiler print out each function
       name as it is compiled, and print some statistics about each pass
       when it finishes.
  
! â€˜-ftime-reportâ€™
       Makes the compiler print some statistics to stderr about the time
       consumed by each pass when it finishes.
  
       If SARIF output of diagnostics was requested via
!      â€˜-fdiagnostics-format=sarif-fileâ€™ or
!      â€˜-fdiagnostics-format=sarif-stderrâ€™ then the â€˜-ftime-reportâ€™
       information is instead emitted in JSON form as part of SARIF
       output.  The precise format of this JSON data is subject to change,
       and the values may not exactly match those emitted to stderr due to
       being written out at a slightly different place within the
       compiler.
  
! â€˜-ftime-report-detailsâ€™
       Record the time consumed by infrastructure parts separately for
       each pass.
  
! â€˜-fira-verbose=Nâ€™
       Control the verbosity of the dump file for the integrated register
       allocator.  The default value is 5.  If the value N is greater or
       equal to 10, the dump output is sent to stderr using the same
       format as N minus 10.
  
! â€˜-flto-reportâ€™
       Prints a report with internal details on the workings of the
       link-time optimizer.  The contents of this report vary from version
       to version.  It is meant to be useful to GCC developers when
!      processing object files in LTO mode (via â€˜-fltoâ€™).
  
       Disabled by default.
  
! â€˜-flto-report-wpaâ€™
!      Like â€˜-flto-reportâ€™, but only print for the WPA phase of link-time
       optimization.
  
! â€˜-fmem-reportâ€™
       Makes the compiler print some statistics about permanent memory
       allocation when it finishes.
  
! â€˜-fmem-report-wpaâ€™
       Makes the compiler print some statistics about permanent memory
       allocation for the WPA phase only.
  
! â€˜-fpre-ipa-mem-reportâ€™
! â€˜-fpost-ipa-mem-reportâ€™
       Makes the compiler print some statistics about permanent memory
       allocation before or after interprocedural optimization.
  
! â€˜-fmultiflagsâ€™
!      This option enables multilib-aware â€˜TFLAGSâ€™ to be used to build
       target libraries with options different from those the compiler is
       configured to use by default, through the use of specs (*note Spec
       Files::) set up by compiler internals, by the target, or by
       builders at configure time.
  
!      Like â€˜TFLAGSâ€™, this allows the target libraries to be built for
       portable baseline environments, while the compiler defaults to more
       demanding ones.  That's useful because users can easily override
       the defaults the compiler is configured to use to build their own
*************** are created in the directory of the outp
*** 20186,20342 ****
       environment, whereas rebuilding the runtime libraries is usually
       not as easy or desirable.
  
!      Unlike 'TFLAGS', the use of specs enables different flags to be
       selected for different multilibs.  The way to accomplish that is to
!      build with 'make TFLAGS=-fmultiflags', after configuring
!      '--with-specs=%{fmultiflags:...}'.
  
       This option is discarded by the driver once it's done processing
       driver self spec.
  
!      It is also useful to check that 'TFLAGS' are being used to build
       all target libraries, by configuring a non-bootstrap compiler
!      '--with-specs='%{!fmultiflags:%emissing TFLAGS}'' and building the
       compiler and target libraries.
  
! '-fprofile-report'
       Makes the compiler print some statistics about consistency of the
       (estimated) profile and effect of individual passes.
  
! '-fstack-usage'
       Makes the compiler output stack usage information for the program,
       on a per-function basis.  The filename for the dump is made by
!      appending '.su' to the AUXNAME.  AUXNAME is generated from the name
       of the output file, if explicitly specified and it is not an
       executable, otherwise it is the basename of the source file.  An
       entry is made up of three fields:
  
!         * The name of the function.
!         * A number of bytes.
!         * One or more qualifiers: 'static', 'dynamic', 'bounded'.
  
!      The qualifier 'static' means that the function manipulates the
       stack statically: a fixed number of bytes are allocated for the
       frame on function entry and released on function exit; no stack
       adjustments are otherwise made in the function.  The second field
       is this fixed number of bytes.
  
!      The qualifier 'dynamic' means that the function manipulates the
       stack dynamically: in addition to the static allocation described
       above, stack adjustments are made in the body of the function, for
       example to push/pop arguments around function calls.  If the
!      qualifier 'bounded' is also present, the amount of these
       adjustments is bounded at compile time and the second field is an
       upper bound of the total amount of stack used by the function.  If
       it is not present, the amount of these adjustments is not bounded
       at compile time and the second field only represents the bounded
       part.
  
! '-fstats'
       Emit statistics about front-end processing at the end of the
       compilation.  This option is supported only by the C++ front end,
       and the information is generally only useful to the G++ development
       team.
  
! '-fdbg-cnt-list'
       Print the name and the counter upper bound for all debug counters.
  
! '-fdbg-cnt=COUNTER-VALUE-LIST'
       Set the internal debug counter lower and upper bound.
       COUNTER-VALUE-LIST is a comma-separated list of
       NAME:LOWER_BOUND1-UPPER_BOUND1 [:LOWER_BOUND2-UPPER_BOUND2...]
       tuples which sets the name of the counter and list of closed
       intervals.  The LOWER_BOUND is optional and is zero initialized if
!      not set.  For example, with '-fdbg-cnt=dce:2-4:10-11,tail_call:10',
!      'dbg_cnt(dce)' returns true only for second, third, fourth, tenth
!      and eleventh invocation.  For 'dbg_cnt(tail_call)' true is returned
       for first 10 invocations.
  
! '-print-file-name=LIBRARY'
       Print the full absolute name of the library file LIBRARY that would
       be used when linking--and don't do anything else.  With this
       option, GCC does not compile or link anything; it just prints the
       file name.
  
! '-print-multi-directory'
       Print the directory name corresponding to the multilib selected by
       any other switches present in the command line.  This directory is
!      supposed to exist in 'GCC_EXEC_PREFIX'.
  
! '-print-multi-lib'
       Print the mapping from multilib directory names to compiler
       switches that enable them.  The directory name is separated from
!      the switches by ';', and each switch starts with an '@' instead of
!      the '-', without spaces between multiple switches.  This is
       supposed to ease shell processing.
  
! '-print-multi-os-directory'
       Print the path to OS libraries for the selected multilib, relative
!      to some 'lib' subdirectory.  If OS libraries are present in the
!      'lib' subdirectory and no multilibs are used, this is usually just
!      '.', if OS libraries are present in 'libSUFFIX' sibling directories
!      this prints e.g. '../lib64', '../lib' or '../lib32', or if OS
!      libraries are present in 'lib/SUBDIR' subdirectories it prints e.g.
!      'amd64', 'sparcv9' or 'ev6'.
  
! '-print-multiarch'
       Print the path to OS libraries for the selected multiarch, relative
!      to some 'lib' subdirectory.
  
! '-print-prog-name=PROGRAM'
!      Like '-print-file-name', but searches for a program such as 'cpp'.
  
! '-print-libgcc-file-name'
!      Same as '-print-file-name=libgcc.a'.
  
!      This is useful when you use '-nostdlib' or '-nodefaultlibs' but you
!      do want to link with 'libgcc.a'.  You can do:
  
            gcc -nostdlib FILES... `gcc -print-libgcc-file-name`
  
! '-print-search-dirs'
       Print the name of the configured installation directory and a list
!      of program and library directories 'gcc' searches--and don't do
       anything else.
  
!      This is useful when 'gcc' prints the error message 'installation
!      problem, cannot exec cpp0: No such file or directory'.  To resolve
!      this you either need to put 'cpp0' and the other compiler
!      components where 'gcc' expects to find them, or you can set the
!      environment variable 'GCC_EXEC_PREFIX' to the directory where you
!      installed them.  Don't forget the trailing '/'.  *Note Environment
       Variables::.
  
! '-print-sysroot'
       Print the target sysroot directory that is used during compilation.
       This is the target sysroot specified either at configure time or
!      using the '--sysroot' option, possibly with an extra suffix that
       depends on compilation options.  If no target sysroot is specified,
       the option prints nothing.
  
! '-print-sysroot-headers-suffix'
       Print the suffix added to the target sysroot when searching for
       headers, or give an error if the compiler is not configured with
       such a suffix--and don't do anything else.
  
! '-dumpmachine'
       Print the compiler's target machine (for example,
!      'i686-pc-linux-gnu')--and don't do anything else.
  
! '-dumpversion'
!      Print the compiler version (for example, '3.0', '6.3.0' or
!      '7')--and don't do anything else.  This is the compiler version
       used in filesystem paths and specs.  Depending on how the compiler
       has been configured it can be just a single number (major version),
       two numbers separated by a dot (major and minor version) or three
       numbers separated by dots (major, minor and patchlevel version).
  
! '-dumpfullversion'
       Print the full compiler version--and don't do anything else.  The
       output is always three numbers separated by dots, major, minor and
       patchlevel version.
  
! '-dumpspecs'
       Print the compiler's built-in specs--and don't do anything else.
       (This is used when GCC itself is being built.)  *Note Spec Files::.
  
--- 20190,20346 ----
       environment, whereas rebuilding the runtime libraries is usually
       not as easy or desirable.
  
!      Unlike â€˜TFLAGSâ€™, the use of specs enables different flags to be
       selected for different multilibs.  The way to accomplish that is to
!      build with â€˜make TFLAGS=-fmultiflagsâ€™, after configuring
!      â€˜--with-specs=%{fmultiflags:...}â€™.
  
       This option is discarded by the driver once it's done processing
       driver self spec.
  
!      It is also useful to check that â€˜TFLAGSâ€™ are being used to build
       all target libraries, by configuring a non-bootstrap compiler
!      â€˜--with-specs='%{!fmultiflags:%emissing TFLAGS}'â€™ and building the
       compiler and target libraries.
  
! â€˜-fprofile-reportâ€™
       Makes the compiler print some statistics about consistency of the
       (estimated) profile and effect of individual passes.
  
! â€˜-fstack-usageâ€™
       Makes the compiler output stack usage information for the program,
       on a per-function basis.  The filename for the dump is made by
!      appending â€˜.suâ€™ to the AUXNAME.  AUXNAME is generated from the name
       of the output file, if explicitly specified and it is not an
       executable, otherwise it is the basename of the source file.  An
       entry is made up of three fields:
  
!         â€¢ The name of the function.
!         â€¢ A number of bytes.
!         â€¢ One or more qualifiers: â€˜staticâ€™, â€˜dynamicâ€™, â€˜boundedâ€™.
  
!      The qualifier â€˜staticâ€™ means that the function manipulates the
       stack statically: a fixed number of bytes are allocated for the
       frame on function entry and released on function exit; no stack
       adjustments are otherwise made in the function.  The second field
       is this fixed number of bytes.
  
!      The qualifier â€˜dynamicâ€™ means that the function manipulates the
       stack dynamically: in addition to the static allocation described
       above, stack adjustments are made in the body of the function, for
       example to push/pop arguments around function calls.  If the
!      qualifier â€˜boundedâ€™ is also present, the amount of these
       adjustments is bounded at compile time and the second field is an
       upper bound of the total amount of stack used by the function.  If
       it is not present, the amount of these adjustments is not bounded
       at compile time and the second field only represents the bounded
       part.
  
! â€˜-fstatsâ€™
       Emit statistics about front-end processing at the end of the
       compilation.  This option is supported only by the C++ front end,
       and the information is generally only useful to the G++ development
       team.
  
! â€˜-fdbg-cnt-listâ€™
       Print the name and the counter upper bound for all debug counters.
  
! â€˜-fdbg-cnt=COUNTER-VALUE-LISTâ€™
       Set the internal debug counter lower and upper bound.
       COUNTER-VALUE-LIST is a comma-separated list of
       NAME:LOWER_BOUND1-UPPER_BOUND1 [:LOWER_BOUND2-UPPER_BOUND2...]
       tuples which sets the name of the counter and list of closed
       intervals.  The LOWER_BOUND is optional and is zero initialized if
!      not set.  For example, with â€˜-fdbg-cnt=dce:2-4:10-11,tail_call:10â€™,
!      â€˜dbg_cnt(dce)â€™ returns true only for second, third, fourth, tenth
!      and eleventh invocation.  For â€˜dbg_cnt(tail_call)â€™ true is returned
       for first 10 invocations.
  
! â€˜-print-file-name=LIBRARYâ€™
       Print the full absolute name of the library file LIBRARY that would
       be used when linking--and don't do anything else.  With this
       option, GCC does not compile or link anything; it just prints the
       file name.
  
! â€˜-print-multi-directoryâ€™
       Print the directory name corresponding to the multilib selected by
       any other switches present in the command line.  This directory is
!      supposed to exist in â€˜GCC_EXEC_PREFIXâ€™.
  
! â€˜-print-multi-libâ€™
       Print the mapping from multilib directory names to compiler
       switches that enable them.  The directory name is separated from
!      the switches by â€˜;â€™, and each switch starts with an â€˜@â€™ instead of
!      the â€˜-â€™, without spaces between multiple switches.  This is
       supposed to ease shell processing.
  
! â€˜-print-multi-os-directoryâ€™
       Print the path to OS libraries for the selected multilib, relative
!      to some â€˜libâ€™ subdirectory.  If OS libraries are present in the
!      â€˜libâ€™ subdirectory and no multilibs are used, this is usually just
!      â€˜.â€™, if OS libraries are present in â€˜libSUFFIXâ€™ sibling directories
!      this prints e.g. â€˜../lib64â€™, â€˜../libâ€™ or â€˜../lib32â€™, or if OS
!      libraries are present in â€˜lib/SUBDIRâ€™ subdirectories it prints e.g.
!      â€˜amd64â€™, â€˜sparcv9â€™ or â€˜ev6â€™.
  
! â€˜-print-multiarchâ€™
       Print the path to OS libraries for the selected multiarch, relative
!      to some â€˜libâ€™ subdirectory.
  
! â€˜-print-prog-name=PROGRAMâ€™
!      Like â€˜-print-file-nameâ€™, but searches for a program such as â€˜cppâ€™.
  
! â€˜-print-libgcc-file-nameâ€™
!      Same as â€˜-print-file-name=libgcc.aâ€™.
  
!      This is useful when you use â€˜-nostdlibâ€™ or â€˜-nodefaultlibsâ€™ but you
!      do want to link with â€˜libgcc.aâ€™.  You can do:
  
            gcc -nostdlib FILES... `gcc -print-libgcc-file-name`
  
! â€˜-print-search-dirsâ€™
       Print the name of the configured installation directory and a list
!      of program and library directories â€˜gccâ€™ searches--and don't do
       anything else.
  
!      This is useful when â€˜gccâ€™ prints the error message â€˜installation
!      problem, cannot exec cpp0: No such file or directoryâ€™.  To resolve
!      this you either need to put â€˜cpp0â€™ and the other compiler
!      components where â€˜gccâ€™ expects to find them, or you can set the
!      environment variable â€˜GCC_EXEC_PREFIXâ€™ to the directory where you
!      installed them.  Don't forget the trailing â€˜/â€™.  *Note Environment
       Variables::.
  
! â€˜-print-sysrootâ€™
       Print the target sysroot directory that is used during compilation.
       This is the target sysroot specified either at configure time or
!      using the â€˜--sysrootâ€™ option, possibly with an extra suffix that
       depends on compilation options.  If no target sysroot is specified,
       the option prints nothing.
  
! â€˜-print-sysroot-headers-suffixâ€™
       Print the suffix added to the target sysroot when searching for
       headers, or give an error if the compiler is not configured with
       such a suffix--and don't do anything else.
  
! â€˜-dumpmachineâ€™
       Print the compiler's target machine (for example,
!      â€˜i686-pc-linux-gnuâ€™)--and don't do anything else.
  
! â€˜-dumpversionâ€™
!      Print the compiler version (for example, â€˜3.0â€™, â€˜6.3.0â€™ or
!      â€˜7â€™)--and don't do anything else.  This is the compiler version
       used in filesystem paths and specs.  Depending on how the compiler
       has been configured it can be just a single number (major version),
       two numbers separated by a dot (major and minor version) or three
       numbers separated by dots (major, minor and patchlevel version).
  
! â€˜-dumpfullversionâ€™
       Print the full compiler version--and don't do anything else.  The
       output is always three numbers separated by dots, major, minor and
       patchlevel version.
  
! â€˜-dumpspecsâ€™
       Print the compiler's built-in specs--and don't do anything else.
       (This is used when GCC itself is being built.)  *Note Spec Files::.
  
*************** File: gcc.info,  Node: Submodel Options,
*** 20349,20355 ****
  Each target machine supported by GCC can have its own options--for
  example, to allow you to compile for a particular processor variant or
  ABI, or to control optimizations specific to that machine.  By
! convention, the names of machine-specific options start with '-m'.
  
   Some configurations of the compiler also support additional
  target-specific options, usually for compatibility with other compilers
--- 20353,20359 ----
  Each target machine supported by GCC can have its own options--for
  example, to allow you to compile for a particular processor variant or
  ABI, or to control optimizations specific to that machine.  By
! convention, the names of machine-specific options start with â€˜-mâ€™.
  
   Some configurations of the compiler also support additional
  target-specific options, usually for compatibility with other compilers
*************** File: gcc.info,  Node: AArch64 Options,
*** 20424,20433 ****
  
  These options are defined for AArch64 implementations:
  
! '-mabi=NAME'
       Generate code for the specified data model.  Permissible values are
!      'ilp32' for SysV-like data model where int, long int and pointers
!      are 32 bits, and 'lp64' for SysV-like data model where int is 32
       bits, but long int and pointers are 64 bits.
  
       The default depends on the specific target configuration.  Note
--- 20428,20437 ----
  
  These options are defined for AArch64 implementations:
  
! â€˜-mabi=NAMEâ€™
       Generate code for the specified data model.  Permissible values are
!      â€˜ilp32â€™ for SysV-like data model where int, long int and pointers
!      are 32 bits, and â€˜lp64â€™ for SysV-like data model where int is 32
       bits, but long int and pointers are 64 bits.
  
       The default depends on the specific target configuration.  Note
*************** These options are defined for AArch64 im
*** 20435,20522 ****
       compile your entire program with the same ABI, and link with a
       compatible set of libraries.
  
!      The 'ilp32' model is deprecated.
  
! '-mbig-endian'
       Generate big-endian code.  This is the default when GCC is
!      configured for an 'aarch64_be-*-*' target.
  
! '-mgeneral-regs-only'
       Generate code which uses only the general-purpose registers.  This
       will prevent the compiler from using floating-point and Advanced
       SIMD registers but will not impose any restrictions on the
       assembler.
  
! '-mlittle-endian'
       Generate little-endian code.  This is the default when GCC is
!      configured for an 'aarch64-*-*' but not an 'aarch64_be-*-*' target.
  
! '-mcmodel=tiny'
       Generate code for the tiny code model.  The program and its
       statically defined symbols must be within 1MB of each other.
       Programs can be statically or dynamically linked.
  
! '-mcmodel=small'
       Generate code for the small code model.  The program and its
       statically defined symbols must be within 4GB of each other.
       Programs can be statically or dynamically linked.  This is the
       default code model.
  
! '-mcmodel=large'
       Generate code for the large code model.  This makes no assumptions
       about addresses and sizes of sections.  Programs can be statically
!      linked only.  The '-mcmodel=large' option is incompatible with
!      '-mabi=ilp32', '-fpic' and '-fPIC'.
  
! '-mtp=NAME'
       Specify the system register to use as a thread pointer.  The valid
!      values are 'tpidr_el0', 'tpidrro_el0', 'tpidr_el1', 'tpidr_el2',
!      'tpidr_el3'.  For backwards compatibility the aliases 'el0', 'el1',
!      'el2', 'el3' are also accepted.  The default setting is
!      'tpidr_el0'.  It is recommended to compile all code intended to
       interoperate with the same value of this option to avoid accessing
       a different thread pointer from the wrong exception level.
  
! '-mstrict-align'
! '-mno-strict-align'
       Avoid or allow generating memory accesses that may not be aligned
       on a natural object boundary as described in the architecture
       specification.
  
! '-momit-leaf-frame-pointer'
! '-mno-omit-leaf-frame-pointer'
       Omit or keep the frame pointer in leaf functions.  The former
       behavior is the default.
  
! '-mstack-protector-guard=GUARD'
! '-mstack-protector-guard-reg=REG'
! '-mstack-protector-guard-offset=OFFSET'
       Generate stack protection code using canary at GUARD.  Supported
!      locations are 'global' for a global canary or 'sysreg' for a canary
       in an appropriate system register.
  
       With the latter choice the options
!      '-mstack-protector-guard-reg=REG' and
!      '-mstack-protector-guard-offset=OFFSET' furthermore specify which
       system register to use as base register for reading the canary, and
       from what offset from that base register.  There is no default
       register or offset as this is entirely for use within the Linux
       kernel.
  
! '-mtls-dialect=desc'
       Use TLS descriptors as the thread-local storage mechanism for
       dynamic accesses of TLS variables.  This is the default.
  
! '-mtls-dialect=traditional'
       Use traditional TLS as the thread-local storage mechanism for
       dynamic accesses of TLS variables.
  
! '-mtls-size=SIZE'
       Specify bit size of immediate TLS offsets.  Valid values are 12,
       24, 32, 48.  This option requires binutils 2.26 or newer.
  
! '-mfix-cortex-a53-835769'
! '-mno-fix-cortex-a53-835769'
       Enable or disable the workaround for the ARM Cortex-A53 erratum
       number 835769.  This involves inserting a NOP instruction between
       memory instructions and 64-bit integer multiply-accumulate
--- 20439,20526 ----
       compile your entire program with the same ABI, and link with a
       compatible set of libraries.
  
!      The â€˜ilp32â€™ model is deprecated.
  
! â€˜-mbig-endianâ€™
       Generate big-endian code.  This is the default when GCC is
!      configured for an â€˜aarch64_be-*-*â€™ target.
  
! â€˜-mgeneral-regs-onlyâ€™
       Generate code which uses only the general-purpose registers.  This
       will prevent the compiler from using floating-point and Advanced
       SIMD registers but will not impose any restrictions on the
       assembler.
  
! â€˜-mlittle-endianâ€™
       Generate little-endian code.  This is the default when GCC is
!      configured for an â€˜aarch64-*-*â€™ but not an â€˜aarch64_be-*-*â€™ target.
  
! â€˜-mcmodel=tinyâ€™
       Generate code for the tiny code model.  The program and its
       statically defined symbols must be within 1MB of each other.
       Programs can be statically or dynamically linked.
  
! â€˜-mcmodel=smallâ€™
       Generate code for the small code model.  The program and its
       statically defined symbols must be within 4GB of each other.
       Programs can be statically or dynamically linked.  This is the
       default code model.
  
! â€˜-mcmodel=largeâ€™
       Generate code for the large code model.  This makes no assumptions
       about addresses and sizes of sections.  Programs can be statically
!      linked only.  The â€˜-mcmodel=largeâ€™ option is incompatible with
!      â€˜-mabi=ilp32â€™, â€˜-fpicâ€™ and â€˜-fPICâ€™.
  
! â€˜-mtp=NAMEâ€™
       Specify the system register to use as a thread pointer.  The valid
!      values are â€˜tpidr_el0â€™, â€˜tpidrro_el0â€™, â€˜tpidr_el1â€™, â€˜tpidr_el2â€™,
!      â€˜tpidr_el3â€™.  For backwards compatibility the aliases â€˜el0â€™, â€˜el1â€™,
!      â€˜el2â€™, â€˜el3â€™ are also accepted.  The default setting is
!      â€˜tpidr_el0â€™.  It is recommended to compile all code intended to
       interoperate with the same value of this option to avoid accessing
       a different thread pointer from the wrong exception level.
  
! â€˜-mstrict-alignâ€™
! â€˜-mno-strict-alignâ€™
       Avoid or allow generating memory accesses that may not be aligned
       on a natural object boundary as described in the architecture
       specification.
  
! â€˜-momit-leaf-frame-pointerâ€™
! â€˜-mno-omit-leaf-frame-pointerâ€™
       Omit or keep the frame pointer in leaf functions.  The former
       behavior is the default.
  
! â€˜-mstack-protector-guard=GUARDâ€™
! â€˜-mstack-protector-guard-reg=REGâ€™
! â€˜-mstack-protector-guard-offset=OFFSETâ€™
       Generate stack protection code using canary at GUARD.  Supported
!      locations are â€˜globalâ€™ for a global canary or â€˜sysregâ€™ for a canary
       in an appropriate system register.
  
       With the latter choice the options
!      â€˜-mstack-protector-guard-reg=REGâ€™ and
!      â€˜-mstack-protector-guard-offset=OFFSETâ€™ furthermore specify which
       system register to use as base register for reading the canary, and
       from what offset from that base register.  There is no default
       register or offset as this is entirely for use within the Linux
       kernel.
  
! â€˜-mtls-dialect=descâ€™
       Use TLS descriptors as the thread-local storage mechanism for
       dynamic accesses of TLS variables.  This is the default.
  
! â€˜-mtls-dialect=traditionalâ€™
       Use traditional TLS as the thread-local storage mechanism for
       dynamic accesses of TLS variables.
  
! â€˜-mtls-size=SIZEâ€™
       Specify bit size of immediate TLS offsets.  Valid values are 12,
       24, 32, 48.  This option requires binutils 2.26 or newer.
  
! â€˜-mfix-cortex-a53-835769â€™
! â€˜-mno-fix-cortex-a53-835769â€™
       Enable or disable the workaround for the ARM Cortex-A53 erratum
       number 835769.  This involves inserting a NOP instruction between
       memory instructions and 64-bit integer multiply-accumulate
*************** These options are defined for AArch64 im
*** 20524,20572 ****
       is specified on the command line which does not need the
       workaround.
  
! '-mfix-cortex-a53-843419'
! '-mno-fix-cortex-a53-843419'
       Enable or disable the workaround for the ARM Cortex-A53 erratum
       number 843419.  This erratum workaround is made at link time and
       this will only pass the corresponding flag to the linker.  This
       flag will be ignored if an architecture or cpu is specified on the
       command line which does not need the workaround.
  
! '-mlow-precision-recip-sqrt'
! '-mno-low-precision-recip-sqrt'
       Enable or disable the reciprocal square root approximation.  This
!      option only has an effect if '-ffast-math' or
!      '-funsafe-math-optimizations' is used as well.  Enabling this
       reduces precision of reciprocal square root results to about 16
       bits for single precision and to 32 bits for double precision.
  
! '-mlow-precision-sqrt'
! '-mno-low-precision-sqrt'
       Enable or disable the square root approximation.  This option only
!      has an effect if '-ffast-math' or '-funsafe-math-optimizations' is
       used as well.  Enabling this reduces precision of square root
       results to about 16 bits for single precision and to 32 bits for
       double precision.  If enabled, it implies
!      '-mlow-precision-recip-sqrt'.
  
! '-mlow-precision-div'
! '-mno-low-precision-div'
       Enable or disable the division approximation.  This option only has
!      an effect if '-ffast-math' or '-funsafe-math-optimizations' is used
       as well.  Enabling this reduces precision of division results to
       about 16 bits for single precision and to 32 bits for double
       precision.
  
! '-mtrack-speculation'
! '-mno-track-speculation'
       Enable or disable generation of additional code to track
       speculative execution through conditional branches.  The tracking
       state can then be used by the compiler when expanding calls to
!      '__builtin_speculation_safe_copy' to permit a more efficient code
       sequence to be generated.
  
! '-moutline-atomics'
! '-mno-outline-atomics'
       Enable or disable calls to out-of-line helpers to implement atomic
       operations.  These helpers will, at runtime, determine if the LSE
       instructions from ARMv8.1-A can be used; if not, they will use the
--- 20528,20576 ----
       is specified on the command line which does not need the
       workaround.
  
! â€˜-mfix-cortex-a53-843419â€™
! â€˜-mno-fix-cortex-a53-843419â€™
       Enable or disable the workaround for the ARM Cortex-A53 erratum
       number 843419.  This erratum workaround is made at link time and
       this will only pass the corresponding flag to the linker.  This
       flag will be ignored if an architecture or cpu is specified on the
       command line which does not need the workaround.
  
! â€˜-mlow-precision-recip-sqrtâ€™
! â€˜-mno-low-precision-recip-sqrtâ€™
       Enable or disable the reciprocal square root approximation.  This
!      option only has an effect if â€˜-ffast-mathâ€™ or
!      â€˜-funsafe-math-optimizationsâ€™ is used as well.  Enabling this
       reduces precision of reciprocal square root results to about 16
       bits for single precision and to 32 bits for double precision.
  
! â€˜-mlow-precision-sqrtâ€™
! â€˜-mno-low-precision-sqrtâ€™
       Enable or disable the square root approximation.  This option only
!      has an effect if â€˜-ffast-mathâ€™ or â€˜-funsafe-math-optimizationsâ€™ is
       used as well.  Enabling this reduces precision of square root
       results to about 16 bits for single precision and to 32 bits for
       double precision.  If enabled, it implies
!      â€˜-mlow-precision-recip-sqrtâ€™.
  
! â€˜-mlow-precision-divâ€™
! â€˜-mno-low-precision-divâ€™
       Enable or disable the division approximation.  This option only has
!      an effect if â€˜-ffast-mathâ€™ or â€˜-funsafe-math-optimizationsâ€™ is used
       as well.  Enabling this reduces precision of division results to
       about 16 bits for single precision and to 32 bits for double
       precision.
  
! â€˜-mtrack-speculationâ€™
! â€˜-mno-track-speculationâ€™
       Enable or disable generation of additional code to track
       speculative execution through conditional branches.  The tracking
       state can then be used by the compiler when expanding calls to
!      â€˜__builtin_speculation_safe_copyâ€™ to permit a more efficient code
       sequence to be generated.
  
! â€˜-moutline-atomicsâ€™
! â€˜-mno-outline-atomicsâ€™
       Enable or disable calls to out-of-line helpers to implement atomic
       operations.  These helpers will, at runtime, determine if the LSE
       instructions from ARMv8.1-A can be used; if not, they will use the
*************** These options are defined for AArch64 im
*** 20575,20668 ****
  
       This option is only applicable when compiling for the base ARMv8.0
       instruction set.  If using a later revision, e.g.
!      '-march=armv8.1-a' or '-march=armv8-a+lse', the ARMv8.1-Atomics
       instructions will be used directly.  The same applies when using
!      '-mcpu=' when the selected cpu supports the 'lse' feature.  This
       option is on by default.
  
! '-march=NAME'
       Specify the name of the target architecture and, optionally, one or
       more feature modifiers.  This option has the form
!      '-march=ARCH{+[no]FEATURE}*'.
  
       The table below summarizes the permissible values for ARCH and the
       features that they enable by default:
  
       ARCH value     Architecture   Includes by default
       --------------------------------------------------------------------------
!      'armv8-a'      Armv8-A        '+fp', '+simd'
!      'armv8.1-a'    Armv8.1-A      'armv8-a', '+crc', '+lse', '+rdma'
!      'armv8.2-a'    Armv8.2-A      'armv8.1-a'
!      'armv8.3-a'    Armv8.3-A      'armv8.2-a', '+pauth', '+fcma', '+jscvt'
!      'armv8.4-a'    Armv8.4-A      'armv8.3-a', '+flagm', '+fp16fml',
!                                    '+dotprod', '+rcpc2'
!      'armv8.5-a'    Armv8.5-A      'armv8.4-a', '+sb', '+ssbs', '+predres',
!                                    '+frintts', '+flagm2'
!      'armv8.6-a'    Armv8.6-A      'armv8.5-a', '+bf16', '+i8mm'
!      'armv8.7-a'    Armv8.7-A      'armv8.6-a', '+wfxt', '+xs'
!      'armv8.8-a'    Armv8.8-a      'armv8.7-a', '+mops'
!      'armv8.9-a'    Armv8.9-a      'armv8.8-a'
!      'armv9-a'      Armv9-A        'armv8.5-a', '+sve', '+sve2'
!      'armv9.1-a'    Armv9.1-A      'armv9-a', '+bf16', '+i8mm'
!      'armv9.2-a'    Armv9.2-A      'armv9.1-a', '+wfxt', '+xs'
!      'armv9.3-a'    Armv9.3-A      'armv9.2-a', '+mops'
!      'armv9.4-a'    Armv9.4-A      'armv9.3-a', '+sve2p1'
!      'armv9.5-a'    Armv9.4-A      'armv9.4-a', 'cpa', '+faminmax', '+lut'
!      'armv8-r'      Armv8-R        'armv8-r'
  
!      The value 'native' is available on native AArch64 GNU/Linux and
       causes the compiler to pick the architecture of the host system.
       This option has no effect if the compiler is unable to recognize
!      the architecture of the host system.  When '-march=native' is given
!      and no other '-mcpu' or '-mtune' is given then GCC will pick the
       host CPU as the CPU to tune for as well as select the architecture
!      features from.  That is, '-march=native' is treated as
!      '-mcpu=native'.
  
       The permissible values for FEATURE are listed in the sub-section on
!      *note '-march' and '-mcpu' Feature Modifiers:
       aarch64-feature-modifiers.  Where conflicting feature modifiers are
       specified, the right-most feature is used.
  
       GCC uses NAME to determine what kind of instructions it can emit
!      when generating assembly code.  If '-march' is specified without
!      either of '-mtune' or '-mcpu' also being specified, the code is
       tuned to perform well across a range of target processors
       implementing the target architecture.
  
! '-mtune=NAME'
       Specify the name of the target processor for which GCC should tune
       the performance of the code.  Permissible values for this option
!      are: 'generic', 'cortex-a35', 'cortex-a53', 'cortex-a55',
!      'cortex-a57', 'cortex-a72', 'cortex-a73', 'cortex-a75',
!      'cortex-a76', 'cortex-a76ae', 'cortex-a77', 'cortex-a65',
!      'cortex-a65ae', 'cortex-a34', 'cortex-a78', 'cortex-a78ae',
!      'cortex-a78c', 'ares', 'exynos-m1', 'emag', 'falkor', 'oryon-1',
!      'neoverse-512tvb', 'neoverse-e1', 'neoverse-n1', 'neoverse-n2',
!      'neoverse-v1', 'neoverse-v2', 'grace', 'neoverse-v3',
!      'neoverse-v3ae', 'neoverse-n3', 'olympus', 'cortex-a725',
!      'cortex-x925', 'qdf24xx', 'saphira', 'phecda', 'xgene1', 'vulcan',
!      'octeontx', 'octeontx81', 'octeontx83', 'octeontx2',
!      'octeontx2t98', 'octeontx2t96' 'octeontx2t93', 'octeontx2f95',
!      'octeontx2f95n', 'octeontx2f95mm', 'a64fx', 'fujitsu-monaka',
!      'thunderx', 'thunderxt88', 'thunderxt88p1', 'thunderxt81',
!      'tsv110', 'thunderxt83', 'thunderx2t99', 'thunderx3t110', 'zeus',
!      'cortex-a57.cortex-a53', 'cortex-a72.cortex-a53',
!      'cortex-a73.cortex-a35', 'cortex-a73.cortex-a53',
!      'cortex-a75.cortex-a55', 'cortex-a76.cortex-a55', 'cortex-r82',
!      'cortex-r82ae', 'cortex-x1', 'cortex-x1c', 'cortex-x2',
!      'cortex-x3', 'cortex-x4', 'cortex-a510', 'cortex-a520',
!      'cortex-a520ae', 'cortex-a710', 'cortex-a715', 'cortex-a720',
!      'cortex-a720ae', 'ampere1', 'ampere1a', 'ampere1b', 'cobalt-100',
!      'apple-m1', 'apple-m2', 'apple-m3' and 'native'.
  
!      The values 'cortex-a57.cortex-a53', 'cortex-a72.cortex-a53',
!      'cortex-a73.cortex-a35', 'cortex-a73.cortex-a53',
!      'cortex-a75.cortex-a55', 'cortex-a76.cortex-a55', 'apple-m1',
!      'apple-m2', 'apple-m3', 'gb10' specify that GCC should tune for a
       big.LITTLE system.
  
!      The value 'neoverse-512tvb' specifies that GCC should tune for
       Neoverse cores that (a) implement SVE and (b) have a total vector
       bandwidth of 512 bits per cycle.  In other words, the option tells
       GCC to tune for Neoverse cores that can execute 4 128-bit Advanced
--- 20579,20672 ----
  
       This option is only applicable when compiling for the base ARMv8.0
       instruction set.  If using a later revision, e.g.
!      â€˜-march=armv8.1-aâ€™ or â€˜-march=armv8-a+lseâ€™, the ARMv8.1-Atomics
       instructions will be used directly.  The same applies when using
!      â€˜-mcpu=â€™ when the selected cpu supports the â€˜lseâ€™ feature.  This
       option is on by default.
  
! â€˜-march=NAMEâ€™
       Specify the name of the target architecture and, optionally, one or
       more feature modifiers.  This option has the form
!      â€˜-march=ARCH{+[no]FEATURE}*â€™.
  
       The table below summarizes the permissible values for ARCH and the
       features that they enable by default:
  
       ARCH value     Architecture   Includes by default
       --------------------------------------------------------------------------
!      â€˜armv8-aâ€™      Armv8-A        â€˜+fpâ€™, â€˜+simdâ€™
!      â€˜armv8.1-aâ€™    Armv8.1-A      â€˜armv8-aâ€™, â€˜+crcâ€™, â€˜+lseâ€™, â€˜+rdmaâ€™
!      â€˜armv8.2-aâ€™    Armv8.2-A      â€˜armv8.1-aâ€™
!      â€˜armv8.3-aâ€™    Armv8.3-A      â€˜armv8.2-aâ€™, â€˜+pauthâ€™, â€˜+fcmaâ€™, â€˜+jscvtâ€™
!      â€˜armv8.4-aâ€™    Armv8.4-A      â€˜armv8.3-aâ€™, â€˜+flagmâ€™, â€˜+fp16fmlâ€™,
!                                    â€˜+dotprodâ€™, â€˜+rcpc2â€™
!      â€˜armv8.5-aâ€™    Armv8.5-A      â€˜armv8.4-aâ€™, â€˜+sbâ€™, â€˜+ssbsâ€™, â€˜+predresâ€™,
!                                    â€˜+frinttsâ€™, â€˜+flagm2â€™
!      â€˜armv8.6-aâ€™    Armv8.6-A      â€˜armv8.5-aâ€™, â€˜+bf16â€™, â€˜+i8mmâ€™
!      â€˜armv8.7-aâ€™    Armv8.7-A      â€˜armv8.6-aâ€™, â€˜+wfxtâ€™, â€˜+xsâ€™
!      â€˜armv8.8-aâ€™    Armv8.8-a      â€˜armv8.7-aâ€™, â€˜+mopsâ€™
!      â€˜armv8.9-aâ€™    Armv8.9-a      â€˜armv8.8-aâ€™
!      â€˜armv9-aâ€™      Armv9-A        â€˜armv8.5-aâ€™, â€˜+sveâ€™, â€˜+sve2â€™
!      â€˜armv9.1-aâ€™    Armv9.1-A      â€˜armv9-aâ€™, â€˜+bf16â€™, â€˜+i8mmâ€™
!      â€˜armv9.2-aâ€™    Armv9.2-A      â€˜armv9.1-aâ€™, â€˜+wfxtâ€™, â€˜+xsâ€™
!      â€˜armv9.3-aâ€™    Armv9.3-A      â€˜armv9.2-aâ€™, â€˜+mopsâ€™
!      â€˜armv9.4-aâ€™    Armv9.4-A      â€˜armv9.3-aâ€™, â€˜+sve2p1â€™
!      â€˜armv9.5-aâ€™    Armv9.5-A      â€˜armv9.4-aâ€™, â€˜cpaâ€™, â€˜+faminmaxâ€™, â€˜+lutâ€™
!      â€˜armv8-râ€™      Armv8-R        â€˜armv8-râ€™
  
!      The value â€˜nativeâ€™ is available on native AArch64 GNU/Linux and
       causes the compiler to pick the architecture of the host system.
       This option has no effect if the compiler is unable to recognize
!      the architecture of the host system.  When â€˜-march=nativeâ€™ is given
!      and no other â€˜-mcpuâ€™ or â€˜-mtuneâ€™ is given then GCC will pick the
       host CPU as the CPU to tune for as well as select the architecture
!      features from.  That is, â€˜-march=nativeâ€™ is treated as
!      â€˜-mcpu=nativeâ€™.
  
       The permissible values for FEATURE are listed in the sub-section on
!      *note â€˜-marchâ€™ and â€˜-mcpuâ€™ Feature Modifiers:
       aarch64-feature-modifiers.  Where conflicting feature modifiers are
       specified, the right-most feature is used.
  
       GCC uses NAME to determine what kind of instructions it can emit
!      when generating assembly code.  If â€˜-marchâ€™ is specified without
!      either of â€˜-mtuneâ€™ or â€˜-mcpuâ€™ also being specified, the code is
       tuned to perform well across a range of target processors
       implementing the target architecture.
  
! â€˜-mtune=NAMEâ€™
       Specify the name of the target processor for which GCC should tune
       the performance of the code.  Permissible values for this option
!      are: â€˜genericâ€™, â€˜cortex-a35â€™, â€˜cortex-a53â€™, â€˜cortex-a55â€™,
!      â€˜cortex-a57â€™, â€˜cortex-a72â€™, â€˜cortex-a73â€™, â€˜cortex-a75â€™,
!      â€˜cortex-a76â€™, â€˜cortex-a76aeâ€™, â€˜cortex-a77â€™, â€˜cortex-a65â€™,
!      â€˜cortex-a65aeâ€™, â€˜cortex-a34â€™, â€˜cortex-a78â€™, â€˜cortex-a78aeâ€™,
!      â€˜cortex-a78câ€™, â€˜aresâ€™, â€˜exynos-m1â€™, â€˜emagâ€™, â€˜falkorâ€™, â€˜oryon-1â€™,
!      â€˜neoverse-512tvbâ€™, â€˜neoverse-e1â€™, â€˜neoverse-n1â€™, â€˜neoverse-n2â€™,
!      â€˜neoverse-v1â€™, â€˜neoverse-v2â€™, â€˜graceâ€™, â€˜neoverse-v3â€™,
!      â€˜neoverse-v3aeâ€™, â€˜neoverse-n3â€™, â€˜olympusâ€™, â€˜cortex-a725â€™,
!      â€˜cortex-x925â€™, â€˜qdf24xxâ€™, â€˜saphiraâ€™, â€˜phecdaâ€™, â€˜xgene1â€™, â€˜vulcanâ€™,
!      â€˜octeontxâ€™, â€˜octeontx81â€™, â€˜octeontx83â€™, â€˜octeontx2â€™,
!      â€˜octeontx2t98â€™, â€˜octeontx2t96â€™ â€˜octeontx2t93â€™, â€˜octeontx2f95â€™,
!      â€˜octeontx2f95nâ€™, â€˜octeontx2f95mmâ€™, â€˜a64fxâ€™, â€˜fujitsu-monakaâ€™,
!      â€˜thunderxâ€™, â€˜thunderxt88â€™, â€˜thunderxt88p1â€™, â€˜thunderxt81â€™,
!      â€˜tsv110â€™, â€˜hip12â€™, â€˜thunderxt83â€™, â€˜thunderx2t99â€™, â€˜thunderx3t110â€™,
!      â€˜zeusâ€™, â€˜cortex-a57.cortex-a53â€™, â€˜cortex-a72.cortex-a53â€™,
!      â€˜cortex-a73.cortex-a35â€™, â€˜cortex-a73.cortex-a53â€™,
!      â€˜cortex-a75.cortex-a55â€™, â€˜cortex-a76.cortex-a55â€™, â€˜cortex-r82â€™,
!      â€˜cortex-r82aeâ€™, â€˜cortex-x1â€™, â€˜cortex-x1câ€™, â€˜cortex-x2â€™,
!      â€˜cortex-x3â€™, â€˜cortex-x4â€™, â€˜cortex-a510â€™, â€˜cortex-a520â€™,
!      â€˜cortex-a520aeâ€™, â€˜cortex-a710â€™, â€˜cortex-a715â€™, â€˜cortex-a720â€™,
!      â€˜cortex-a720aeâ€™, â€˜ampere1â€™, â€˜ampere1aâ€™, â€˜ampere1bâ€™, â€˜cobalt-100â€™,
!      â€˜apple-m1â€™, â€˜apple-m2â€™, â€˜apple-m3â€™ and â€˜nativeâ€™.
  
!      The values â€˜cortex-a57.cortex-a53â€™, â€˜cortex-a72.cortex-a53â€™,
!      â€˜cortex-a73.cortex-a35â€™, â€˜cortex-a73.cortex-a53â€™,
!      â€˜cortex-a75.cortex-a55â€™, â€˜cortex-a76.cortex-a55â€™, â€˜apple-m1â€™,
!      â€˜apple-m2â€™, â€˜apple-m3â€™, â€˜gb10â€™ specify that GCC should tune for a
       big.LITTLE system.
  
!      The value â€˜neoverse-512tvbâ€™ specifies that GCC should tune for
       Neoverse cores that (a) implement SVE and (b) have a total vector
       bandwidth of 512 bits per cycle.  In other words, the option tells
       GCC to tune for Neoverse cores that can execute 4 128-bit Advanced
*************** These options are defined for AArch64 im
*** 20672,20763 ****
       for a specific core like Neoverse V1 but is more specific than the
       default tuning described below.
  
!      Additionally on native AArch64 GNU/Linux systems the value 'native'
       tunes performance to the host system.  This option has no effect if
       the compiler is unable to recognize the processor of the host
       system.
  
!      Where none of '-mtune=', '-mcpu=' or '-march=' are specified, the
       code is tuned to perform well across a range of target processors.
  
       This option cannot be suffixed by feature modifiers.
  
! '-mcpu=NAME'
       Specify the name of the target processor, optionally suffixed by
       one or more feature modifiers.  This option has the form
!      '-mcpu=CPU{+[no]FEATURE}*', where the permissible values for CPU
!      are the same as those available for '-mtune'.  The permissible
       values for FEATURE are documented in the sub-section on *note
!      '-march' and '-mcpu' Feature Modifiers: aarch64-feature-modifiers.
       Where conflicting feature modifiers are specified, the right-most
       feature is used.
  
       GCC uses NAME to determine what kind of instructions it can emit
!      when generating assembly code (as if by '-march') and to determine
       the target processor for which to tune for performance (as if by
!      '-mtune').  Where this option is used in conjunction with '-march'
!      or '-mtune', those options take precedence over the appropriate
       part of this option.
  
!      '-mcpu=neoverse-512tvb' is special in that it does not refer to a
       specific core, but instead refers to all Neoverse cores that (a)
       implement SVE and (b) have a total vector bandwidth of 512 bits a
!      cycle.  Unless overridden by '-march', '-mcpu=neoverse-512tvb'
       generates code that can run on a Neoverse V1 core, since Neoverse
       V1 is the first Neoverse core with these properties.  Unless
!      overridden by '-mtune', '-mcpu=neoverse-512tvb' tunes code in the
!      same way as for '-mtune=neoverse-512tvb'.
  
! '-moverride=STRING'
       Override tuning decisions made by the back-end in response to a
!      '-mtune=' switch.  The syntax, semantics, and accepted values for
       STRING in this option are not guaranteed to be consistent across
       releases.
  
       This option is only intended to be useful when developing GCC.
  
! '-mverbose-cost-dump'
       Enable verbose cost model dumping in the debug dump files.  This
       option is provided for use in debugging the compiler.
  
! '-mpc-relative-literal-loads'
! '-mno-pc-relative-literal-loads'
       Enable or disable PC-relative literal loads.  With this option
       literal pools are accessed using a single instruction and emitted
       after each function.  This limits the maximum size of functions to
!      1MB. This is enabled by default for '-mcmodel=tiny'.
  
! '-msign-return-address=SCOPE'
       Select the function scope on which return address signing will be
!      applied.  Permissible values are 'none', which disables return
!      address signing, 'non-leaf', which enables pointer signing for
!      functions which are not leaf functions, and 'all', which enables
!      pointer signing for all functions.  The default value is 'none'.
       This option has been deprecated by -mbranch-protection.
  
! '-mbranch-protection=NONE|STANDARD|PAC-RET[+LEAF+B-KEY]|BTI|GCS'
!      Select the branch protection features to use.  'none' is the
!      default and turns off all types of branch protection.  'standard'
       turns on all types of branch protection features.  If a feature has
!      additional tuning options, then 'standard' sets it to its standard
!      level.  'pac-ret[+LEAF]' turns on return address signing to its
       standard level: signing functions that save the return address to
       memory (non-leaf functions will practically always do this) using
!      the a-key.  The optional argument 'leaf' can be used to extend the
!      signing to include leaf functions.  The optional argument 'b-key'
       can be used to sign the functions with the B-key instead of the
!      A-key.  'bti' turns on branch target identification mechanism.
!      'gcs' turns on guarded control stack compatible code generation.
  
! '-mharden-sls=OPTS'
       Enable compiler hardening against straight line speculation (SLS).
       OPTS is a comma-separated list of the following options:
!      'retbr'
!      'blr'
!      In addition, '-mharden-sls=all' enables all SLS hardening while
!      '-mharden-sls=none' disables all SLS hardening.
  
! '-mearly-ra=SCOPE'
       Determine when to enable an early register allocation pass.  This
       pass runs before instruction scheduling and tries to find a
       spill-free allocation of floating-point and vector code.  It also
--- 20676,20767 ----
       for a specific core like Neoverse V1 but is more specific than the
       default tuning described below.
  
!      Additionally on native AArch64 GNU/Linux systems the value â€˜nativeâ€™
       tunes performance to the host system.  This option has no effect if
       the compiler is unable to recognize the processor of the host
       system.
  
!      Where none of â€˜-mtune=â€™, â€˜-mcpu=â€™ or â€˜-march=â€™ are specified, the
       code is tuned to perform well across a range of target processors.
  
       This option cannot be suffixed by feature modifiers.
  
! â€˜-mcpu=NAMEâ€™
       Specify the name of the target processor, optionally suffixed by
       one or more feature modifiers.  This option has the form
!      â€˜-mcpu=CPU{+[no]FEATURE}*â€™, where the permissible values for CPU
!      are the same as those available for â€˜-mtuneâ€™.  The permissible
       values for FEATURE are documented in the sub-section on *note
!      â€˜-marchâ€™ and â€˜-mcpuâ€™ Feature Modifiers: aarch64-feature-modifiers.
       Where conflicting feature modifiers are specified, the right-most
       feature is used.
  
       GCC uses NAME to determine what kind of instructions it can emit
!      when generating assembly code (as if by â€˜-marchâ€™) and to determine
       the target processor for which to tune for performance (as if by
!      â€˜-mtuneâ€™).  Where this option is used in conjunction with â€˜-marchâ€™
!      or â€˜-mtuneâ€™, those options take precedence over the appropriate
       part of this option.
  
!      â€˜-mcpu=neoverse-512tvbâ€™ is special in that it does not refer to a
       specific core, but instead refers to all Neoverse cores that (a)
       implement SVE and (b) have a total vector bandwidth of 512 bits a
!      cycle.  Unless overridden by â€˜-marchâ€™, â€˜-mcpu=neoverse-512tvbâ€™
       generates code that can run on a Neoverse V1 core, since Neoverse
       V1 is the first Neoverse core with these properties.  Unless
!      overridden by â€˜-mtuneâ€™, â€˜-mcpu=neoverse-512tvbâ€™ tunes code in the
!      same way as for â€˜-mtune=neoverse-512tvbâ€™.
  
! â€˜-moverride=STRINGâ€™
       Override tuning decisions made by the back-end in response to a
!      â€˜-mtune=â€™ switch.  The syntax, semantics, and accepted values for
       STRING in this option are not guaranteed to be consistent across
       releases.
  
       This option is only intended to be useful when developing GCC.
  
! â€˜-mverbose-cost-dumpâ€™
       Enable verbose cost model dumping in the debug dump files.  This
       option is provided for use in debugging the compiler.
  
! â€˜-mpc-relative-literal-loadsâ€™
! â€˜-mno-pc-relative-literal-loadsâ€™
       Enable or disable PC-relative literal loads.  With this option
       literal pools are accessed using a single instruction and emitted
       after each function.  This limits the maximum size of functions to
!      1MB. This is enabled by default for â€˜-mcmodel=tinyâ€™.
  
! â€˜-msign-return-address=SCOPEâ€™
       Select the function scope on which return address signing will be
!      applied.  Permissible values are â€˜noneâ€™, which disables return
!      address signing, â€˜non-leafâ€™, which enables pointer signing for
!      functions which are not leaf functions, and â€˜allâ€™, which enables
!      pointer signing for all functions.  The default value is â€˜noneâ€™.
       This option has been deprecated by -mbranch-protection.
  
! â€˜-mbranch-protection=NONE|STANDARD|PAC-RET[+LEAF+B-KEY]|BTI|GCSâ€™
!      Select the branch protection features to use.  â€˜noneâ€™ is the
!      default and turns off all types of branch protection.  â€˜standardâ€™
       turns on all types of branch protection features.  If a feature has
!      additional tuning options, then â€˜standardâ€™ sets it to its standard
!      level.  â€˜pac-ret[+LEAF]â€™ turns on return address signing to its
       standard level: signing functions that save the return address to
       memory (non-leaf functions will practically always do this) using
!      the a-key.  The optional argument â€˜leafâ€™ can be used to extend the
!      signing to include leaf functions.  The optional argument â€˜b-keyâ€™
       can be used to sign the functions with the B-key instead of the
!      A-key.  â€˜btiâ€™ turns on branch target identification mechanism.
!      â€˜gcsâ€™ turns on guarded control stack compatible code generation.
  
! â€˜-mharden-sls=OPTSâ€™
       Enable compiler hardening against straight line speculation (SLS).
       OPTS is a comma-separated list of the following options:
!      â€˜retbrâ€™
!      â€˜blrâ€™
!      In addition, â€˜-mharden-sls=allâ€™ enables all SLS hardening while
!      â€˜-mharden-sls=noneâ€™ disables all SLS hardening.
  
! â€˜-mearly-ra=SCOPEâ€™
       Determine when to enable an early register allocation pass.  This
       pass runs before instruction scheduling and tries to find a
       spill-free allocation of floating-point and vector code.  It also
*************** These options are defined for AArch64 im
*** 20769,20788 ****
       access to strided multi-register instructions; and NONE, which
       disables the pass.
  
!      '-mearly-ra=all' is the default for '-O2' and above, and for '-Os'.
!      '-mearly-ra=none' is the default otherwise.
  
! '-mearly-ldp-fusion'
       Enable the copy of the AArch64 load/store pair fusion pass that
!      runs before register allocation.  Enabled by default at '-O' and
       above.
  
! '-mlate-ldp-fusion'
       Enable the copy of the AArch64 load/store pair fusion pass that
!      runs after register allocation.  Enabled by default at '-O' and
       above.
  
! '-msve-vector-bits=BITS'
       Specify the number of bits in an SVE vector register.  This option
       only has an effect when SVE is enabled.
  
--- 20773,20792 ----
       access to strided multi-register instructions; and NONE, which
       disables the pass.
  
!      â€˜-mearly-ra=allâ€™ is the default for â€˜-O2â€™ and above, and for â€˜-Osâ€™.
!      â€˜-mearly-ra=noneâ€™ is the default otherwise.
  
! â€˜-mearly-ldp-fusionâ€™
       Enable the copy of the AArch64 load/store pair fusion pass that
!      runs before register allocation.  Enabled by default at â€˜-Oâ€™ and
       above.
  
! â€˜-mlate-ldp-fusionâ€™
       Enable the copy of the AArch64 load/store pair fusion pass that
!      runs after register allocation.  Enabled by default at â€˜-Oâ€™ and
       above.
  
! â€˜-msve-vector-bits=BITSâ€™
       Specify the number of bits in an SVE vector register.  This option
       only has an effect when SVE is enabled.
  
*************** These options are defined for AArch64 im
*** 20790,21027 ****
       agnostic" output that works with any size of vector register and
       "vector-length specific" output that allows GCC to make assumptions
       about the vector length when it is useful for optimization reasons.
!      The possible values of 'bits' are: 'scalable', '128', '256', '512',
!      '1024' and '2048'.  Specifying 'scalable' selects vector-length
!      agnostic output.  At present '-msve-vector-bits=128' also generates
       vector-length agnostic output for big-endian targets.  All other
       values generate vector-length specific code.  The behavior of these
!      values may change in future releases and no value except 'scalable'
       should be relied on for producing code that is portable across
       different hardware SVE vector lengths.
  
!      The default is '-msve-vector-bits=scalable', which produces
       vector-length agnostic code.
  
! '-Wexperimental-fmv-target'
       Warn about use of experimental Function Multi Versioning.  The Arm
       C Language Extension specification for Function Multi Versioning is
       beta and subject to change.  Any usage of FMV is caveated that
       future behavior change and incompatibility is likely.
  
! 3.20.1.1 '-march' and '-mcpu' Feature Modifiers
  ...............................................
  
! Feature modifiers used with '-march' and '-mcpu' can be any of the
! following and their inverses 'noFEATURE':
  
! 'crc'
       Enable CRC extension.  This is on by default for
!      '-march=armv8.1-a'.
! 'crypto'
       Enable Crypto extension.  This also enables Advanced SIMD and
       floating-point instructions.
! 'fp'
       Enable floating-point instructions.  This is on by default for all
!      possible values for options '-march' and '-mcpu'.
! 'simd'
       Enable Advanced SIMD instructions.  This also enables
       floating-point instructions.  This is on by default for all
!      possible values for options '-march' and '-mcpu'.
! 'sve'
       Enable Scalable Vector Extension instructions.  This also enables
       Advanced SIMD and floating-point instructions.
! 'lse'
       Enable Large System Extension instructions.  This is on by default
!      for '-march=armv8.1-a'.
! 'rdma'
       Enable Round Double Multiply Accumulate instructions.  This is on
!      by default for '-march=armv8.1-a'.
! 'fp16'
       Enable FP16 extension.  This also enables floating-point
       instructions.
! 'fp16fml'
       Enable FP16 fmla extension.  This also enables FP16 extensions and
       floating-point instructions.  This option is enabled by default for
!      '-march=armv8.4-a'.  Use of this option with architectures prior to
       Armv8.2-A is not supported.
  
! 'rcpc'
       Enable the RCpc extension.  This enables the use of the LDAPR
       instructions for load-acquire atomic semantics, and passes it on to
       the assembler, enabling inline asm statements to use instructions
       from the RCpc extension.
! 'dotprod'
       Enable the Dot Product extension.  This also enables Advanced SIMD
       instructions.
! 'aes'
       Enable the Armv8-a aes and pmull crypto extension.  This also
       enables Advanced SIMD instructions.
! 'sha2'
       Enable the Armv8-a sha2 crypto extension.  This also enables
       Advanced SIMD instructions.
! 'sha3'
       Enable the sha512 and sha3 crypto extension.  This also enables
       Advanced SIMD instructions.  Use of this option with architectures
       prior to Armv8.2-A is not supported.
! 'sm4'
       Enable the sm3 and sm4 crypto extension.  This also enables
       Advanced SIMD instructions.  Use of this option with architectures
       prior to Armv8.2-A is not supported.
! 'profile'
       Enable the Statistical Profiling extension.  This option is only to
       enable the extension at the assembler level and does not affect
       code generation.
! 'rng'
       Enable the Armv8.5-a Random Number instructions.  This option is
       only to enable the extension at the assembler level and does not
       affect code generation.
! 'memtag'
       Enable the Armv8.5-a Memory Tagging Extensions.  Use of this option
       with architectures prior to Armv8.5-A is not supported.
! 'sb'
       Enable the Armv8-a Speculation Barrier instruction.  This option is
       only to enable the extension at the assembler level and does not
       affect code generation.  This option is enabled by default for
!      '-march=armv8.5-a'.
! 'ssbs'
       Enable the Armv8-a Speculative Store Bypass Safe instruction.  This
       option is only to enable the extension at the assembler level and
       does not affect code generation.  This option is enabled by default
!      for '-march=armv8.5-a'.
! 'predres'
       Enable the Armv8-a Execution and Data Prediction Restriction
       instructions.  This option is only to enable the extension at the
       assembler level and does not affect code generation.  This option
!      is enabled by default for '-march=armv8.5-a'.
! 'sve2'
       Enable the Armv8-a Scalable Vector Extension 2.  This also enables
       SVE instructions.
! 'sve2-bitperm'
       Enable SVE2 bitperm instructions.  This also enables SVE2
       instructions.
! 'sve2-sm4'
       Enable SVE2 sm4 instructions.  This also enables SVE2 instructions.
! 'sve2-aes'
       Enable SVE2 aes instructions.  This also enables SVE2 instructions.
! 'sve2-sha3'
       Enable SVE2 sha3 instructions.  This also enables SVE2
       instructions.
! 'sve2p1'
       Enable SVE2.1 instructions.  This also enables SVE2 instructions.
! 'tme'
       Enable the Transactional Memory Extension.
! 'i8mm'
       Enable 8-bit Integer Matrix Multiply instructions.  This also
       enables Advanced SIMD and floating-point instructions.  This option
!      is enabled by default for '-march=armv8.6-a'.  Use of this option
       with architectures prior to Armv8.2-A is not supported.
! 'f32mm'
       Enable 32-bit Floating point Matrix Multiply instructions.  This
       also enables SVE instructions.  Use of this option with
       architectures prior to Armv8.2-A is not supported.
! 'f64mm'
       Enable 64-bit Floating point Matrix Multiply instructions.  This
       also enables SVE instructions.  Use of this option with
       architectures prior to Armv8.2-A is not supported.
! 'bf16'
       Enable brain half-precision floating-point instructions.  This also
       enables Advanced SIMD and floating-point instructions.  This option
!      is enabled by default for '-march=armv8.6-a'.  Use of this option
       with architectures prior to Armv8.2-A is not supported.
! 'ls64'
       Enable the 64-byte atomic load and store instructions for
       accelerators.
! 'mops'
       Enable the instructions to accelerate memory operations like
!      'memcpy', 'memmove', 'memset'.  This option is enabled by default
!      for '-march=armv8.8-a'
! 'flagm'
       Enable the Flag Manipulation instructions Extension.
! 'flagm2'
       Enable the FlagM2 flag conversion instructions.
! 'pauth'
       Enable the Pointer Authentication Extension.
! 'cssc'
       Enable the Common Short Sequence Compression instructions.
! 'sme'
       Enable the Scalable Matrix Extension.  This is only supported when
       SVE2 is also enabled.
! 'sme-i16i64'
       Enable the FEAT_SME_I16I64 extension to SME. This also enables SME
       instructions.
! 'sme-f64f64'
       Enable the FEAT_SME_F64F64 extension to SME. This also enables SME
       instructions.
! 'sme2'
       Enable the Scalable Matrix Extension 2.  This also enables SME
       instructions.
! 'sme-b16b16'
       Enable the FEAT_SME_B16B16 extension to SME. This also enables SME2
       and SVE_B16B16 instructions.
! 'sme-f16f16'
       Enable the FEAT_SME_F16F16 extension to SME. This also enables SME2
       instructions.
! 'sme2p1'
       Enable the Scalable Matrix Extension version 2.1.  This also
       enables SME2 instructions.
! 'fcma'
       Enable the complex number SIMD extensions.
! 'jscvt'
!      Enable the 'fjcvtzs' JavaScript conversion instruction.
! 'frintts'
       Enable floating-point round to integral value instructions.
! 'wfxt'
!      Enable 'wfet' and 'wfit' instructions.
! 'xs'
       Enable the XS memory attribute extension.
! 'lse128'
       Enable the LSE128 128-bit atomic instructions extension.  This also
       enables LSE instructions.
! 'd128'
       Enable support for 128-bit system register read/write instructions.
       This also enables the LSE128 extension.
! 'gcs'
       Enable support for Armv9.4-a Guarded Control Stack extension.
! 'the'
       Enable support for Armv8.9-a/9.4-a translation hardening extension.
! 'rcpc2'
       Enable the RCpc2 extension.
! 'rcpc3'
       Enable the RCpc3 (Release Consistency) extension.
! 'fp8'
       Enable the fp8 (8-bit floating point) extension.
! 'fp8fma'
       Enable the fp8 (8-bit floating point) multiply accumulate
       extension.
! 'ssve-fp8fma'
       Enable the fp8 (8-bit floating point) multiply accumulate extension
       in streaming mode.
! 'fp8dot4'
       Enable the fp8 (8-bit floating point) to single-precision 4-way dot
       product extension.
! 'ssve-fp8dot4'
       Enable the fp8 (8-bit floating point) to single-precision 4-way dot
       product extension in streaming mode.
! 'fp8dot2'
       Enable the fp8 (8-bit floating point) to half-precision 2-way dot
       product extension.
! 'ssve-fp8dot2'
       Enable the fp8 (8-bit floating point) to half-precision 2-way dot
       product extension in streaming mode.
! 'faminmax'
       Enable the Floating Point Absolute Maximum/Minimum extension.
! 'lut'
       Enable the Lookup Table extension.
! 'cpa'
       Enable the Checked Pointer Arithmetic instructions.
! 'sve-b16b16'
!      Enable the SVE non-widening brain floating-point ('bf16')
!      extension.  This only has an effect when 'sve2' or 'sme2' are also
       enabled.
  
!  Feature 'crypto' implies 'aes', 'sha2', and 'simd', which implies 'fp'.
! Conversely, 'nofp' implies 'nosimd', which implies 'nocrypto', 'noaes'
! and 'nosha2'.
  
  
  File: gcc.info,  Node: Adapteva Epiphany Options,  Next: AMD GCN Options,  Prev: AArch64 Options,  Up: Submodel Options
--- 20794,21031 ----
       agnostic" output that works with any size of vector register and
       "vector-length specific" output that allows GCC to make assumptions
       about the vector length when it is useful for optimization reasons.
!      The possible values of â€˜bitsâ€™ are: â€˜scalableâ€™, â€˜128â€™, â€˜256â€™, â€˜512â€™,
!      â€˜1024â€™ and â€˜2048â€™.  Specifying â€˜scalableâ€™ selects vector-length
!      agnostic output.  At present â€˜-msve-vector-bits=128â€™ also generates
       vector-length agnostic output for big-endian targets.  All other
       values generate vector-length specific code.  The behavior of these
!      values may change in future releases and no value except â€˜scalableâ€™
       should be relied on for producing code that is portable across
       different hardware SVE vector lengths.
  
!      The default is â€˜-msve-vector-bits=scalableâ€™, which produces
       vector-length agnostic code.
  
! â€˜-Wexperimental-fmv-targetâ€™
       Warn about use of experimental Function Multi Versioning.  The Arm
       C Language Extension specification for Function Multi Versioning is
       beta and subject to change.  Any usage of FMV is caveated that
       future behavior change and incompatibility is likely.
  
! 3.20.1.1 â€˜-marchâ€™ and â€˜-mcpuâ€™ Feature Modifiers
  ...............................................
  
! Feature modifiers used with â€˜-marchâ€™ and â€˜-mcpuâ€™ can be any of the
! following and their inverses â€˜noFEATUREâ€™:
  
! â€˜crcâ€™
       Enable CRC extension.  This is on by default for
!      â€˜-march=armv8.1-aâ€™.
! â€˜cryptoâ€™
       Enable Crypto extension.  This also enables Advanced SIMD and
       floating-point instructions.
! â€˜fpâ€™
       Enable floating-point instructions.  This is on by default for all
!      possible values for options â€˜-marchâ€™ and â€˜-mcpuâ€™.
! â€˜simdâ€™
       Enable Advanced SIMD instructions.  This also enables
       floating-point instructions.  This is on by default for all
!      possible values for options â€˜-marchâ€™ and â€˜-mcpuâ€™.
! â€˜sveâ€™
       Enable Scalable Vector Extension instructions.  This also enables
       Advanced SIMD and floating-point instructions.
! â€˜lseâ€™
       Enable Large System Extension instructions.  This is on by default
!      for â€˜-march=armv8.1-aâ€™.
! â€˜rdmaâ€™
       Enable Round Double Multiply Accumulate instructions.  This is on
!      by default for â€˜-march=armv8.1-aâ€™.
! â€˜fp16â€™
       Enable FP16 extension.  This also enables floating-point
       instructions.
! â€˜fp16fmlâ€™
       Enable FP16 fmla extension.  This also enables FP16 extensions and
       floating-point instructions.  This option is enabled by default for
!      â€˜-march=armv8.4-aâ€™.  Use of this option with architectures prior to
       Armv8.2-A is not supported.
  
! â€˜rcpcâ€™
       Enable the RCpc extension.  This enables the use of the LDAPR
       instructions for load-acquire atomic semantics, and passes it on to
       the assembler, enabling inline asm statements to use instructions
       from the RCpc extension.
! â€˜dotprodâ€™
       Enable the Dot Product extension.  This also enables Advanced SIMD
       instructions.
! â€˜aesâ€™
       Enable the Armv8-a aes and pmull crypto extension.  This also
       enables Advanced SIMD instructions.
! â€˜sha2â€™
       Enable the Armv8-a sha2 crypto extension.  This also enables
       Advanced SIMD instructions.
! â€˜sha3â€™
       Enable the sha512 and sha3 crypto extension.  This also enables
       Advanced SIMD instructions.  Use of this option with architectures
       prior to Armv8.2-A is not supported.
! â€˜sm4â€™
       Enable the sm3 and sm4 crypto extension.  This also enables
       Advanced SIMD instructions.  Use of this option with architectures
       prior to Armv8.2-A is not supported.
! â€˜profileâ€™
       Enable the Statistical Profiling extension.  This option is only to
       enable the extension at the assembler level and does not affect
       code generation.
! â€˜rngâ€™
       Enable the Armv8.5-a Random Number instructions.  This option is
       only to enable the extension at the assembler level and does not
       affect code generation.
! â€˜memtagâ€™
       Enable the Armv8.5-a Memory Tagging Extensions.  Use of this option
       with architectures prior to Armv8.5-A is not supported.
! â€˜sbâ€™
       Enable the Armv8-a Speculation Barrier instruction.  This option is
       only to enable the extension at the assembler level and does not
       affect code generation.  This option is enabled by default for
!      â€˜-march=armv8.5-aâ€™.
! â€˜ssbsâ€™
       Enable the Armv8-a Speculative Store Bypass Safe instruction.  This
       option is only to enable the extension at the assembler level and
       does not affect code generation.  This option is enabled by default
!      for â€˜-march=armv8.5-aâ€™.
! â€˜predresâ€™
       Enable the Armv8-a Execution and Data Prediction Restriction
       instructions.  This option is only to enable the extension at the
       assembler level and does not affect code generation.  This option
!      is enabled by default for â€˜-march=armv8.5-aâ€™.
! â€˜sve2â€™
       Enable the Armv8-a Scalable Vector Extension 2.  This also enables
       SVE instructions.
! â€˜sve2-bitpermâ€™
       Enable SVE2 bitperm instructions.  This also enables SVE2
       instructions.
! â€˜sve2-sm4â€™
       Enable SVE2 sm4 instructions.  This also enables SVE2 instructions.
! â€˜sve2-aesâ€™
       Enable SVE2 aes instructions.  This also enables SVE2 instructions.
! â€˜sve2-sha3â€™
       Enable SVE2 sha3 instructions.  This also enables SVE2
       instructions.
! â€˜sve2p1â€™
       Enable SVE2.1 instructions.  This also enables SVE2 instructions.
! â€˜tmeâ€™
       Enable the Transactional Memory Extension.
! â€˜i8mmâ€™
       Enable 8-bit Integer Matrix Multiply instructions.  This also
       enables Advanced SIMD and floating-point instructions.  This option
!      is enabled by default for â€˜-march=armv8.6-aâ€™.  Use of this option
       with architectures prior to Armv8.2-A is not supported.
! â€˜f32mmâ€™
       Enable 32-bit Floating point Matrix Multiply instructions.  This
       also enables SVE instructions.  Use of this option with
       architectures prior to Armv8.2-A is not supported.
! â€˜f64mmâ€™
       Enable 64-bit Floating point Matrix Multiply instructions.  This
       also enables SVE instructions.  Use of this option with
       architectures prior to Armv8.2-A is not supported.
! â€˜bf16â€™
       Enable brain half-precision floating-point instructions.  This also
       enables Advanced SIMD and floating-point instructions.  This option
!      is enabled by default for â€˜-march=armv8.6-aâ€™.  Use of this option
       with architectures prior to Armv8.2-A is not supported.
! â€˜ls64â€™
       Enable the 64-byte atomic load and store instructions for
       accelerators.
! â€˜mopsâ€™
       Enable the instructions to accelerate memory operations like
!      â€˜memcpyâ€™, â€˜memmoveâ€™, â€˜memsetâ€™.  This option is enabled by default
!      for â€˜-march=armv8.8-aâ€™
! â€˜flagmâ€™
       Enable the Flag Manipulation instructions Extension.
! â€˜flagm2â€™
       Enable the FlagM2 flag conversion instructions.
! â€˜pauthâ€™
       Enable the Pointer Authentication Extension.
! â€˜csscâ€™
       Enable the Common Short Sequence Compression instructions.
! â€˜smeâ€™
       Enable the Scalable Matrix Extension.  This is only supported when
       SVE2 is also enabled.
! â€˜sme-i16i64â€™
       Enable the FEAT_SME_I16I64 extension to SME. This also enables SME
       instructions.
! â€˜sme-f64f64â€™
       Enable the FEAT_SME_F64F64 extension to SME. This also enables SME
       instructions.
! â€˜sme2â€™
       Enable the Scalable Matrix Extension 2.  This also enables SME
       instructions.
! â€˜sme-b16b16â€™
       Enable the FEAT_SME_B16B16 extension to SME. This also enables SME2
       and SVE_B16B16 instructions.
! â€˜sme-f16f16â€™
       Enable the FEAT_SME_F16F16 extension to SME. This also enables SME2
       instructions.
! â€˜sme2p1â€™
       Enable the Scalable Matrix Extension version 2.1.  This also
       enables SME2 instructions.
! â€˜fcmaâ€™
       Enable the complex number SIMD extensions.
! â€˜jscvtâ€™
!      Enable the â€˜fjcvtzsâ€™ JavaScript conversion instruction.
! â€˜frinttsâ€™
       Enable floating-point round to integral value instructions.
! â€˜wfxtâ€™
!      Enable â€˜wfetâ€™ and â€˜wfitâ€™ instructions.
! â€˜xsâ€™
       Enable the XS memory attribute extension.
! â€˜lse128â€™
       Enable the LSE128 128-bit atomic instructions extension.  This also
       enables LSE instructions.
! â€˜d128â€™
       Enable support for 128-bit system register read/write instructions.
       This also enables the LSE128 extension.
! â€˜gcsâ€™
       Enable support for Armv9.4-a Guarded Control Stack extension.
! â€˜theâ€™
       Enable support for Armv8.9-a/9.4-a translation hardening extension.
! â€˜rcpc2â€™
       Enable the RCpc2 extension.
! â€˜rcpc3â€™
       Enable the RCpc3 (Release Consistency) extension.
! â€˜fp8â€™
       Enable the fp8 (8-bit floating point) extension.
! â€˜fp8fmaâ€™
       Enable the fp8 (8-bit floating point) multiply accumulate
       extension.
! â€˜ssve-fp8fmaâ€™
       Enable the fp8 (8-bit floating point) multiply accumulate extension
       in streaming mode.
! â€˜fp8dot4â€™
       Enable the fp8 (8-bit floating point) to single-precision 4-way dot
       product extension.
! â€˜ssve-fp8dot4â€™
       Enable the fp8 (8-bit floating point) to single-precision 4-way dot
       product extension in streaming mode.
! â€˜fp8dot2â€™
       Enable the fp8 (8-bit floating point) to half-precision 2-way dot
       product extension.
! â€˜ssve-fp8dot2â€™
       Enable the fp8 (8-bit floating point) to half-precision 2-way dot
       product extension in streaming mode.
! â€˜faminmaxâ€™
       Enable the Floating Point Absolute Maximum/Minimum extension.
! â€˜lutâ€™
       Enable the Lookup Table extension.
! â€˜cpaâ€™
       Enable the Checked Pointer Arithmetic instructions.
! â€˜sve-b16b16â€™
!      Enable the SVE non-widening brain floating-point (â€˜bf16â€™)
!      extension.  This only has an effect when â€˜sve2â€™ or â€˜sme2â€™ are also
       enabled.
  
!  Feature â€˜cryptoâ€™ implies â€˜aesâ€™, â€˜sha2â€™, and â€˜simdâ€™, which implies â€˜fpâ€™.
! Conversely, â€˜nofpâ€™ implies â€˜nosimdâ€™, which implies â€˜nocryptoâ€™, â€˜noaesâ€™
! and â€˜nosha2â€™.
  
  
  File: gcc.info,  Node: Adapteva Epiphany Options,  Next: AMD GCN Options,  Prev: AArch64 Options,  Up: Submodel Options
*************** File: gcc.info,  Node: Adapteva Epiphany
*** 21029,21069 ****
  3.20.2 Adapteva Epiphany Options
  --------------------------------
  
! These '-m' options are defined for Adapteva Epiphany:
  
! '-mhalf-reg-file'
!      Don't allocate any register in the range 'r32'...'r63'.  That
       allows code to run on hardware variants that lack these registers.
  
! '-mprefer-short-insn-regs'
       Preferentially allocate registers that allow short instruction
       generation.  This can result in increased instruction count, so
       this may either reduce or increase overall code size.
  
! '-mbranch-cost=NUM'
       Set the cost of branches to roughly NUM "simple" instructions.
       This cost is only a heuristic and is not guaranteed to produce
       consistent results across releases.
  
! '-mcmove'
       Enable the generation of conditional moves.
  
! '-mnops=NUM'
       Emit NUM NOPs before every other generated instruction.
  
! '-mno-soft-cmpsf'
!      For single-precision floating-point comparisons, emit an 'fsub'
       instruction and test the flags.  This is faster than a software
       comparison, but can get incorrect results in the presence of NaNs,
       or when two different small numbers are compared such that their
!      difference is calculated as zero.  The default is '-msoft-cmpsf',
       which uses slower, but IEEE-compliant, software comparisons.
  
! '-mstack-offset=NUM'
       Set the offset between the top of the stack and the stack pointer.
       E.g., a value of 8 means that the eight bytes in the range
!      'sp+0...sp+7' can be used by leaf functions without stack
!      allocation.  Values other than '8' or '16' are untested and
       unlikely to work.  Note also that this option changes the ABI;
       compiling a program with a different stack offset than the
       libraries have been compiled with generally does not work.  This
--- 21033,21073 ----
  3.20.2 Adapteva Epiphany Options
  --------------------------------
  
! These â€˜-mâ€™ options are defined for Adapteva Epiphany:
  
! â€˜-mhalf-reg-fileâ€™
!      Don't allocate any register in the range â€˜r32â€™...â€˜r63â€™.  That
       allows code to run on hardware variants that lack these registers.
  
! â€˜-mprefer-short-insn-regsâ€™
       Preferentially allocate registers that allow short instruction
       generation.  This can result in increased instruction count, so
       this may either reduce or increase overall code size.
  
! â€˜-mbranch-cost=NUMâ€™
       Set the cost of branches to roughly NUM "simple" instructions.
       This cost is only a heuristic and is not guaranteed to produce
       consistent results across releases.
  
! â€˜-mcmoveâ€™
       Enable the generation of conditional moves.
  
! â€˜-mnops=NUMâ€™
       Emit NUM NOPs before every other generated instruction.
  
! â€˜-mno-soft-cmpsfâ€™
!      For single-precision floating-point comparisons, emit an â€˜fsubâ€™
       instruction and test the flags.  This is faster than a software
       comparison, but can get incorrect results in the presence of NaNs,
       or when two different small numbers are compared such that their
!      difference is calculated as zero.  The default is â€˜-msoft-cmpsfâ€™,
       which uses slower, but IEEE-compliant, software comparisons.
  
! â€˜-mstack-offset=NUMâ€™
       Set the offset between the top of the stack and the stack pointer.
       E.g., a value of 8 means that the eight bytes in the range
!      â€˜sp+0...sp+7â€™ can be used by leaf functions without stack
!      allocation.  Values other than â€˜8â€™ or â€˜16â€™ are untested and
       unlikely to work.  Note also that this option changes the ABI;
       compiling a program with a different stack offset than the
       libraries have been compiled with generally does not work.  This
*************** These '-m' options are defined for Adapt
*** 21071,21099 ****
       offset would give you better code, but to actually use a different
       stack offset to build working programs, it is recommended to
       configure the toolchain with the appropriate
!      '--with-stack-offset=NUM' option.
  
! '-mno-round-nearest'
       Make the scheduler assume that the rounding mode has been set to
!      truncating.  The default is '-mround-nearest'.
  
! '-mlong-calls'
       If not otherwise specified by an attribute, assume all calls might
!      be beyond the offset range of the 'b' / 'bl' instructions, and
       therefore load the function address into a register before
       performing a (otherwise direct) call.  This is the default.
  
! '-mshort-calls'
       If not otherwise specified by an attribute, assume all direct calls
!      are in the range of the 'b' / 'bl' instructions, so use these
!      instructions for direct calls.  The default is '-mlong-calls'.
  
! '-msmall16'
       Assume addresses can be loaded as 16-bit unsigned values.  This
!      does not apply to function addresses for which '-mlong-calls'
       semantics are in effect.
  
! '-mfp-mode=MODE'
       Set the prevailing mode of the floating-point unit.  This
       determines the floating-point mode that is provided and expected at
       function call and return time.  Making this mode match the mode you
--- 21075,21103 ----
       offset would give you better code, but to actually use a different
       stack offset to build working programs, it is recommended to
       configure the toolchain with the appropriate
!      â€˜--with-stack-offset=NUMâ€™ option.
  
! â€˜-mno-round-nearestâ€™
       Make the scheduler assume that the rounding mode has been set to
!      truncating.  The default is â€˜-mround-nearestâ€™.
  
! â€˜-mlong-callsâ€™
       If not otherwise specified by an attribute, assume all calls might
!      be beyond the offset range of the â€˜bâ€™ / â€˜blâ€™ instructions, and
       therefore load the function address into a register before
       performing a (otherwise direct) call.  This is the default.
  
! â€˜-mshort-callsâ€™
       If not otherwise specified by an attribute, assume all direct calls
!      are in the range of the â€˜bâ€™ / â€˜blâ€™ instructions, so use these
!      instructions for direct calls.  The default is â€˜-mlong-callsâ€™.
  
! â€˜-msmall16â€™
       Assume addresses can be loaded as 16-bit unsigned values.  This
!      does not apply to function addresses for which â€˜-mlong-callsâ€™
       semantics are in effect.
  
! â€˜-mfp-mode=MODEâ€™
       Set the prevailing mode of the floating-point unit.  This
       determines the floating-point mode that is provided and expected at
       function call and return time.  Making this mode match the mode you
*************** These '-m' options are defined for Adapt
*** 21102,21108 ****
  
       MODE can be set to one the following values:
  
!      'caller'
            Any mode at function entry is valid, and retained or restored
            when the function returns, and when it calls other functions.
            This mode is useful for compiling libraries or other
--- 21106,21112 ----
  
       MODE can be set to one the following values:
  
!      â€˜callerâ€™
            Any mode at function entry is valid, and retained or restored
            when the function returns, and when it calls other functions.
            This mode is useful for compiling libraries or other
*************** These '-m' options are defined for Adapt
*** 21113,21164 ****
            switching that might be needed, compared with what would be
            needed with a more specific choice of prevailing FPU mode.
  
!      'truncate'
            This is the mode used for floating-point calculations with
            truncating (i.e. round towards zero) rounding mode.  That
            includes conversion from floating point to integer.
  
!      'round-nearest'
            This is the mode used for floating-point calculations with
            round-to-nearest-or-even rounding mode.
  
!      'int'
            This is the mode used to perform integer calculations in the
            FPU, e.g. integer multiply, or integer
            multiply-and-accumulate.
  
!      The default is '-mfp-mode=caller'
  
! '-mno-split-lohi'
! '-mno-postinc'
! '-mno-postmodify'
       Code generation tweaks that disable, respectively, splitting of
       32-bit loads, generation of post-increment addresses, and
       generation of post-modify addresses.  The defaults are
!      'msplit-lohi', '-mpost-inc', and '-mpost-modify'.
  
! '-mnovect-double'
       Change the preferred SIMD mode to SImode.  The default is
!      '-mvect-double', which uses DImode as preferred SIMD mode.
  
! '-max-vect-align=NUM'
       The maximum alignment for SIMD vector mode types.  NUM may be 4 or
       8.  The default is 8.  Note that this is an ABI change, even though
       many library function interfaces are unaffected if they don't use
       SIMD vector modes in places that affect size and/or alignment of
       relevant types.
  
! '-msplit-vecmove-early'
       Split vector moves into single word moves before reload.  In theory
       this can give better register allocation, but so far the reverse
       seems to be generally the case.
  
! '-m1reg-REG'
!      Specify a register to hold the constant -1, which makes loading
       small negative constants and certain bitmasks faster.  Allowable
!      values for REG are 'r43' and 'r63', which specify use of that
!      register as a fixed register, and 'none', which means that no
!      register is used for this purpose.  The default is '-m1reg-none'.
  
  
  File: gcc.info,  Node: AMD GCN Options,  Next: ARC Options,  Prev: Adapteva Epiphany Options,  Up: Submodel Options
--- 21117,21168 ----
            switching that might be needed, compared with what would be
            needed with a more specific choice of prevailing FPU mode.
  
!      â€˜truncateâ€™
            This is the mode used for floating-point calculations with
            truncating (i.e. round towards zero) rounding mode.  That
            includes conversion from floating point to integer.
  
!      â€˜round-nearestâ€™
            This is the mode used for floating-point calculations with
            round-to-nearest-or-even rounding mode.
  
!      â€˜intâ€™
            This is the mode used to perform integer calculations in the
            FPU, e.g. integer multiply, or integer
            multiply-and-accumulate.
  
!      The default is â€˜-mfp-mode=callerâ€™
  
! â€˜-mno-split-lohiâ€™
! â€˜-mno-postincâ€™
! â€˜-mno-postmodifyâ€™
       Code generation tweaks that disable, respectively, splitting of
       32-bit loads, generation of post-increment addresses, and
       generation of post-modify addresses.  The defaults are
!      â€˜msplit-lohiâ€™, â€˜-mpost-incâ€™, and â€˜-mpost-modifyâ€™.
  
! â€˜-mnovect-doubleâ€™
       Change the preferred SIMD mode to SImode.  The default is
!      â€˜-mvect-doubleâ€™, which uses DImode as preferred SIMD mode.
  
! â€˜-max-vect-align=NUMâ€™
       The maximum alignment for SIMD vector mode types.  NUM may be 4 or
       8.  The default is 8.  Note that this is an ABI change, even though
       many library function interfaces are unaffected if they don't use
       SIMD vector modes in places that affect size and/or alignment of
       relevant types.
  
! â€˜-msplit-vecmove-earlyâ€™
       Split vector moves into single word moves before reload.  In theory
       this can give better register allocation, but so far the reverse
       seems to be generally the case.
  
! â€˜-m1reg-REGâ€™
!      Specify a register to hold the constant âˆ’1, which makes loading
       small negative constants and certain bitmasks faster.  Allowable
!      values for REG are â€˜r43â€™ and â€˜r63â€™, which specify use of that
!      register as a fixed register, and â€˜noneâ€™, which means that no
!      register is used for this purpose.  The default is â€˜-m1reg-noneâ€™.
  
  
  File: gcc.info,  Node: AMD GCN Options,  Next: ARC Options,  Prev: Adapteva Epiphany Options,  Up: Submodel Options
*************** File: gcc.info,  Node: AMD GCN Options,
*** 21168,21296 ****
  
  These options are defined specifically for the AMD GCN port.
  
! '-march=GPU'
! '-mtune=GPU'
       Set architecture type or tuning for GPU.  Supported values for GPU
       are
  
!      'gfx900'
            Compile for GCN5 Vega 10 devices (gfx900).
  
!      'gfx902'
            Compile for GCN5 Vega gfx902 devices.  (Experimental)
  
!      'gfx904'
            Compile for GCN5 Vega gfx904 devices.  (Experimental)
  
!      'gfx906'
            Compile for GCN5 Vega 20 devices (gfx906).
  
!      'gfx908'
            Compile for CDNA1 Instinct MI100 series devices (gfx908).
  
!      'gfx909'
            Compile for GCN5 Vega gfx909 devices.  (Experimental)
  
!      'gfx90a'
            Compile for CDNA2 Instinct MI200 series devices (gfx90a).
  
!      'gfx90c'
            Compile for GCN5 Vega 7 devices (gfx90c).
  
!      'gfx9-generic'
            Compile generic code for Vega devices, executable on the
            following subset of GFX9 devices: gfx900, gfx902, gfx904,
            gfx906, gfx909 and gfx90c.  (Experimental)
  
!      'gfx1030'
            Compile for RDNA2 gfx1030 devices (GFX10 series).
  
!      'gfx1031'
            Compile for RDNA2 gfx1031 devices (GFX10 series).
            (Experimental)
  
!      'gfx1032'
            Compile for RDNA2 gfx1032 devices (GFX10 series).
            (Experimental)
  
!      'gfx1033'
            Compile for RDNA2 gfx1033 devices (GFX10 series).
            (Experimental)
  
!      'gfx1034'
            Compile for RDNA2 gfx1034 devices (GFX10 series).
            (Experimental)
  
!      'gfx1035'
            Compile for RDNA2 gfx1035 devices (GFX10 series).
            (Experimental)
  
!      'gfx1036'
            Compile for RDNA2 gfx1036 devices (GFX10 series).
  
!      'gfx10-3-generic'
            Compile generic code for GFX10-3 devices, executable on
            gfx1030, gfx1031, gfx1032, gfx1033, gfx1034, gfx1035, and
            gfx1036.  (Experimental)
  
!      'gfx1100'
            Compile for RDNA3 gfx1100 devices (GFX11 series).
  
!      'gfx1101'
            Compile for RDNA3 gfx1101 devices (GFX11 series).
            (Experimental)
  
!      'gfx1102'
            Compile for RDNA3 gfx1102 devices (GFX11 series).
            (Experimental)
  
!      'gfx1103'
            Compile for RDNA3 gfx1103 devices (GFX11 series).
  
!      'gfx1150'
            Compile for RDNA3 gfx1150 devices (GFX11 series).
            (Experimental)
  
!      'gfx1151'
            Compile for RDNA3 gfx1151 devices (GFX11 series).
            (Experimental)
  
!      'gfx1152'
            Compile for RDNA3 gfx1152 devices (GFX11 series).
            (Experimental)
  
!      'gfx1153'
            Compile for RDNA3 gfx1153 devices (GFX11 series).
            (Experimental)
  
!      'gfx11-generic'
            Compile generic code for GFX11 devices, executable on gfx1100,
            gfx1101, gfx1102, gfx1103, gfx1150, gfx1151, gfx1152, and
            gfx1153.  (Experimental)
  
! '-msram-ecc=on'
! '-msram-ecc=off'
! '-msram-ecc=any'
       Compile binaries suitable for devices with the SRAM-ECC feature
       enabled, disabled, or either mode.  This feature can be enabled
       per-process on some devices.  The compiled code must match the
!      device mode.  The default is 'any', for devices that support it.
  
! '-mstack-size=BYTES'
       Specify how many BYTES of stack space will be requested for each
       GPU thread (wave-front).  Beware that there may be many threads and
       limited memory available.  The size of the stack allocation may
       also have an impact on run-time performance.  The default is 32KB
       when using OpenACC or OpenMP, and 1MB otherwise.
  
! '-mxnack=on'
! '-mxnack=off'
! '-mxnack=any'
       Compile binaries suitable for devices with the XNACK feature
       enabled, disabled, or either mode.  Some devices always require
       XNACK and some allow the user to configure XNACK. The compiled code
!      must match the device mode.  The default is '-mxnack=any' on
!      devices that support Unified Shared Memory, and '-mxnack=no'
       otherwise.
  
  
--- 21172,21300 ----
  
  These options are defined specifically for the AMD GCN port.
  
! â€˜-march=GPUâ€™
! â€˜-mtune=GPUâ€™
       Set architecture type or tuning for GPU.  Supported values for GPU
       are
  
!      â€˜gfx900â€™
            Compile for GCN5 Vega 10 devices (gfx900).
  
!      â€˜gfx902â€™
            Compile for GCN5 Vega gfx902 devices.  (Experimental)
  
!      â€˜gfx904â€™
            Compile for GCN5 Vega gfx904 devices.  (Experimental)
  
!      â€˜gfx906â€™
            Compile for GCN5 Vega 20 devices (gfx906).
  
!      â€˜gfx908â€™
            Compile for CDNA1 Instinct MI100 series devices (gfx908).
  
!      â€˜gfx909â€™
            Compile for GCN5 Vega gfx909 devices.  (Experimental)
  
!      â€˜gfx90aâ€™
            Compile for CDNA2 Instinct MI200 series devices (gfx90a).
  
!      â€˜gfx90câ€™
            Compile for GCN5 Vega 7 devices (gfx90c).
  
!      â€˜gfx9-genericâ€™
            Compile generic code for Vega devices, executable on the
            following subset of GFX9 devices: gfx900, gfx902, gfx904,
            gfx906, gfx909 and gfx90c.  (Experimental)
  
!      â€˜gfx1030â€™
            Compile for RDNA2 gfx1030 devices (GFX10 series).
  
!      â€˜gfx1031â€™
            Compile for RDNA2 gfx1031 devices (GFX10 series).
            (Experimental)
  
!      â€˜gfx1032â€™
            Compile for RDNA2 gfx1032 devices (GFX10 series).
            (Experimental)
  
!      â€˜gfx1033â€™
            Compile for RDNA2 gfx1033 devices (GFX10 series).
            (Experimental)
  
!      â€˜gfx1034â€™
            Compile for RDNA2 gfx1034 devices (GFX10 series).
            (Experimental)
  
!      â€˜gfx1035â€™
            Compile for RDNA2 gfx1035 devices (GFX10 series).
            (Experimental)
  
!      â€˜gfx1036â€™
            Compile for RDNA2 gfx1036 devices (GFX10 series).
  
!      â€˜gfx10-3-genericâ€™
            Compile generic code for GFX10-3 devices, executable on
            gfx1030, gfx1031, gfx1032, gfx1033, gfx1034, gfx1035, and
            gfx1036.  (Experimental)
  
!      â€˜gfx1100â€™
            Compile for RDNA3 gfx1100 devices (GFX11 series).
  
!      â€˜gfx1101â€™
            Compile for RDNA3 gfx1101 devices (GFX11 series).
            (Experimental)
  
!      â€˜gfx1102â€™
            Compile for RDNA3 gfx1102 devices (GFX11 series).
            (Experimental)
  
!      â€˜gfx1103â€™
            Compile for RDNA3 gfx1103 devices (GFX11 series).
  
!      â€˜gfx1150â€™
            Compile for RDNA3 gfx1150 devices (GFX11 series).
            (Experimental)
  
!      â€˜gfx1151â€™
            Compile for RDNA3 gfx1151 devices (GFX11 series).
            (Experimental)
  
!      â€˜gfx1152â€™
            Compile for RDNA3 gfx1152 devices (GFX11 series).
            (Experimental)
  
!      â€˜gfx1153â€™
            Compile for RDNA3 gfx1153 devices (GFX11 series).
            (Experimental)
  
!      â€˜gfx11-genericâ€™
            Compile generic code for GFX11 devices, executable on gfx1100,
            gfx1101, gfx1102, gfx1103, gfx1150, gfx1151, gfx1152, and
            gfx1153.  (Experimental)
  
! â€˜-msram-ecc=onâ€™
! â€˜-msram-ecc=offâ€™
! â€˜-msram-ecc=anyâ€™
       Compile binaries suitable for devices with the SRAM-ECC feature
       enabled, disabled, or either mode.  This feature can be enabled
       per-process on some devices.  The compiled code must match the
!      device mode.  The default is â€˜anyâ€™, for devices that support it.
  
! â€˜-mstack-size=BYTESâ€™
       Specify how many BYTES of stack space will be requested for each
       GPU thread (wave-front).  Beware that there may be many threads and
       limited memory available.  The size of the stack allocation may
       also have an impact on run-time performance.  The default is 32KB
       when using OpenACC or OpenMP, and 1MB otherwise.
  
! â€˜-mxnack=onâ€™
! â€˜-mxnack=offâ€™
! â€˜-mxnack=anyâ€™
       Compile binaries suitable for devices with the XNACK feature
       enabled, disabled, or either mode.  Some devices always require
       XNACK and some allow the user to configure XNACK. The compiled code
!      must match the device mode.  The default is â€˜-mxnack=anyâ€™ on
!      devices that support Unified Shared Memory, and â€˜-mxnack=noâ€™
       otherwise.
  
  
*************** File: gcc.info,  Node: ARC Options,  Nex
*** 21302,21611 ****
  The following options control the architecture variant for which code is
  being compiled:
  
! '-mbarrel-shifter'
       Generate instructions supported by barrel shifter.  This is the
!      default unless '-mcpu=ARC601' or '-mcpu=ARCEM' is in effect.
  
! '-mjli-always'
       Force to call a function using jli_s instruction.  This option is
       valid only for ARCv2 architecture.
  
! '-mcpu=CPU'
       Set architecture type, register usage, and instruction scheduling
       parameters for CPU.  There are also shortcut alias options
       available for backward compatibility and convenience.  Supported
       values for CPU are
  
!      'arc600'
!           Compile for ARC600.  Aliases: '-mA6', '-mARC600'.
  
!      'arc601'
!           Compile for ARC601.  Alias: '-mARC601'.
  
!      'arc700'
!           Compile for ARC700.  Aliases: '-mA7', '-mARC700'.  This is the
!           default when configured with '--with-cpu=arc700'.
  
!      'arcem'
            Compile for ARC EM.
  
!      'archs'
            Compile for ARC HS.
  
!      'em'
            Compile for ARC EM CPU with no hardware extensions.
  
!      'em4'
            Compile for ARC EM4 CPU.
  
!      'em4_dmips'
            Compile for ARC EM4 DMIPS CPU.
  
!      'em4_fpus'
            Compile for ARC EM4 DMIPS CPU with the single-precision
            floating-point extension.
  
!      'em4_fpuda'
            Compile for ARC EM4 DMIPS CPU with single-precision
            floating-point and double assist instructions.
  
!      'hs'
            Compile for ARC HS CPU with no hardware extensions except the
            atomic instructions.
  
!      'hs34'
            Compile for ARC HS34 CPU.
  
!      'hs38'
            Compile for ARC HS38 CPU.
  
!      'hs38_linux'
            Compile for ARC HS38 CPU with all hardware extensions on.
  
!      'hs4x'
            Compile for ARC HS4x CPU.
  
!      'hs4xd'
            Compile for ARC HS4xD CPU.
  
!      'hs4x_rel31'
            Compile for ARC HS4x CPU release 3.10a.
  
!      'arc600_norm'
!           Compile for ARC 600 CPU with 'norm' instructions enabled.
  
!      'arc600_mul32x16'
!           Compile for ARC 600 CPU with 'norm' and 32x16-bit multiply
            instructions enabled.
  
!      'arc600_mul64'
!           Compile for ARC 600 CPU with 'norm' and 'mul64'-family
            instructions enabled.
  
!      'arc601_norm'
!           Compile for ARC 601 CPU with 'norm' instructions enabled.
  
!      'arc601_mul32x16'
!           Compile for ARC 601 CPU with 'norm' and 32x16-bit multiply
            instructions enabled.
  
!      'arc601_mul64'
!           Compile for ARC 601 CPU with 'norm' and 'mul64'-family
            instructions enabled.
  
!      'nps400'
            Compile for ARC 700 on NPS400 chip.
  
!      'em_mini'
            Compile for ARC EM minimalist configuration featuring reduced
            register set.
  
! '-mdpfp'
! '-mdpfp-compact'
       Generate double-precision FPX instructions, tuned for the compact
       implementation.
  
! '-mdpfp-fast'
       Generate double-precision FPX instructions, tuned for the fast
       implementation.
  
! '-mno-dpfp-lrsr'
!      Disable 'lr' and 'sr' instructions from using FPX extension aux
       registers.
  
! '-mea'
!      Generate extended arithmetic instructions.  Currently only 'divaw',
!      'adds', 'subs', and 'sat16' are supported.  Only valid for
!      '-mcpu=ARC700'.
  
! '-mno-mpy'
!      Do not generate 'mpy'-family instructions for ARC700.  This option
       is deprecated.
  
! '-mmul32x16'
       Generate 32x16-bit multiply and multiply-accumulate instructions.
  
! '-mmul64'
!      Generate 'mul64' and 'mulu64' instructions.  Only valid for
!      '-mcpu=ARC600'.
  
! '-mnorm'
!      Generate 'norm' instructions.  This is the default if
!      '-mcpu=ARC700' is in effect.
  
! '-mspfp'
! '-mspfp-compact'
       Generate single-precision FPX instructions, tuned for the compact
       implementation.
  
! '-mspfp-fast'
       Generate single-precision FPX instructions, tuned for the fast
       implementation.
  
! '-msimd'
       Enable generation of ARC SIMD instructions via target-specific
!      builtins.  Only valid for '-mcpu=ARC700'.
  
! '-msoft-float'
       This option ignored; it is provided for compatibility purposes
       only.  Software floating-point code is emitted by default, and this
!      default can overridden by FPX options; '-mspfp', '-mspfp-compact',
!      or '-mspfp-fast' for single precision, and '-mdpfp',
!      '-mdpfp-compact', or '-mdpfp-fast' for double precision.
  
! '-mswap'
!      Generate 'swap' instructions.
  
! '-matomic'
       This enables use of the locked load/store conditional extension to
       implement atomic memory built-in functions.  Not available for ARC
       6xx or ARC EM cores.
  
! '-mdiv-rem'
!      Enable 'div' and 'rem' instructions for ARCv2 cores.
  
! '-mcode-density'
       Enable code density instructions for ARC EM. This option is on by
       default for ARC HS.
  
! '-mll64'
       Enable double load/store operations for ARC HS cores.
  
! '-mtp-regno=REGNO'
       Specify thread pointer register number.
  
! '-mmpy-option=MULTO'
       Compile ARCv2 code with a multiplier design option.  You can
       specify the option using either a string or numeric value for
!      MULTO.  'wlh1' is the default value.  The recognized values are:
  
!      '0'
!      'none'
            No multiplier available.
  
!      '1'
!      'w'
            16x16 multiplier, fully pipelined.  The following instructions
!           are enabled: 'mpyw' and 'mpyuw'.
  
!      '2'
!      'wlh1'
            32x32 multiplier, fully pipelined (1 stage).  The following
!           instructions are additionally enabled: 'mpy', 'mpyu', 'mpym',
!           'mpymu', and 'mpy_s'.
  
!      '3'
!      'wlh2'
            32x32 multiplier, fully pipelined (2 stages).  The following
!           instructions are additionally enabled: 'mpy', 'mpyu', 'mpym',
!           'mpymu', and 'mpy_s'.
  
!      '4'
!      'wlh3'
            Two 16x16 multipliers, blocking, sequential.  The following
!           instructions are additionally enabled: 'mpy', 'mpyu', 'mpym',
!           'mpymu', and 'mpy_s'.
  
!      '5'
!      'wlh4'
            One 16x16 multiplier, blocking, sequential.  The following
!           instructions are additionally enabled: 'mpy', 'mpyu', 'mpym',
!           'mpymu', and 'mpy_s'.
  
!      '6'
!      'wlh5'
            One 32x4 multiplier, blocking, sequential.  The following
!           instructions are additionally enabled: 'mpy', 'mpyu', 'mpym',
!           'mpymu', and 'mpy_s'.
  
!      '7'
!      'plus_dmpy'
            ARC HS SIMD support.
  
!      '8'
!      'plus_macd'
            ARC HS SIMD support.
  
!      '9'
!      'plus_qmacw'
            ARC HS SIMD support.
  
       This option is only available for ARCv2 cores.
  
! '-mfpu=FPU'
       Enables support for specific floating-point hardware extensions for
       ARCv2 cores.  Supported values for FPU are:
  
!      'fpus'
            Enables support for single-precision floating-point hardware
            extensions.
  
!      'fpud'
            Enables support for double-precision floating-point hardware
            extensions.  The single-precision floating-point extension is
            also enabled.  Not available for ARC EM.
  
!      'fpuda'
            Enables support for double-precision floating-point hardware
            extensions using double-precision assist instructions.  The
            single-precision floating-point extension is also enabled.
            This option is only available for ARC EM.
  
!      'fpuda_div'
            Enables support for double-precision floating-point hardware
            extensions using double-precision assist instructions.  The
            single-precision floating-point, square-root, and divide
            extensions are also enabled.  This option is only available
            for ARC EM.
  
!      'fpuda_fma'
            Enables support for double-precision floating-point hardware
            extensions using double-precision assist instructions.  The
            single-precision floating-point and fused multiply and add
            hardware extensions are also enabled.  This option is only
            available for ARC EM.
  
!      'fpuda_all'
            Enables support for double-precision floating-point hardware
            extensions using double-precision assist instructions.  All
            single-precision floating-point hardware extensions are also
            enabled.  This option is only available for ARC EM.
  
!      'fpus_div'
            Enables support for single-precision floating-point,
            square-root and divide hardware extensions.
  
!      'fpud_div'
            Enables support for double-precision floating-point,
            square-root and divide hardware extensions.  This option
!           includes option 'fpus_div'.  Not available for ARC EM.
  
!      'fpus_fma'
            Enables support for single-precision floating-point and fused
            multiply and add hardware extensions.
  
!      'fpud_fma'
            Enables support for double-precision floating-point and fused
            multiply and add hardware extensions.  This option includes
!           option 'fpus_fma'.  Not available for ARC EM.
  
!      'fpus_all'
            Enables support for all single-precision floating-point
            hardware extensions.
  
!      'fpud_all'
            Enables support for all single- and double-precision
            floating-point hardware extensions.  Not available for ARC EM.
  
! '-mirq-ctrl-saved=REGISTER-RANGE, BLINK, LP_COUNT'
       Specifies general-purposes registers that the processor
       automatically saves/restores on interrupt entry and exit.
       REGISTER-RANGE is specified as two registers separated by a dash.
!      The register range always starts with 'r0', the upper limit is 'fp'
       register.  BLINK and LP_COUNT are optional.  This option is only
       valid for ARC EM and ARC HS cores.
  
! '-mrgf-banked-regs=NUMBER'
       Specifies the number of registers replicated in second register
       bank on entry to fast interrupt.  Fast interrupts are interrupts
       with the highest priority level P0.  These interrupts save only PC
--- 21306,21615 ----
  The following options control the architecture variant for which code is
  being compiled:
  
! â€˜-mbarrel-shifterâ€™
       Generate instructions supported by barrel shifter.  This is the
!      default unless â€˜-mcpu=ARC601â€™ or â€˜-mcpu=ARCEMâ€™ is in effect.
  
! â€˜-mjli-alwaysâ€™
       Force to call a function using jli_s instruction.  This option is
       valid only for ARCv2 architecture.
  
! â€˜-mcpu=CPUâ€™
       Set architecture type, register usage, and instruction scheduling
       parameters for CPU.  There are also shortcut alias options
       available for backward compatibility and convenience.  Supported
       values for CPU are
  
!      â€˜arc600â€™
!           Compile for ARC600.  Aliases: â€˜-mA6â€™, â€˜-mARC600â€™.
  
!      â€˜arc601â€™
!           Compile for ARC601.  Alias: â€˜-mARC601â€™.
  
!      â€˜arc700â€™
!           Compile for ARC700.  Aliases: â€˜-mA7â€™, â€˜-mARC700â€™.  This is the
!           default when configured with â€˜--with-cpu=arc700â€™.
  
!      â€˜arcemâ€™
            Compile for ARC EM.
  
!      â€˜archsâ€™
            Compile for ARC HS.
  
!      â€˜emâ€™
            Compile for ARC EM CPU with no hardware extensions.
  
!      â€˜em4â€™
            Compile for ARC EM4 CPU.
  
!      â€˜em4_dmipsâ€™
            Compile for ARC EM4 DMIPS CPU.
  
!      â€˜em4_fpusâ€™
            Compile for ARC EM4 DMIPS CPU with the single-precision
            floating-point extension.
  
!      â€˜em4_fpudaâ€™
            Compile for ARC EM4 DMIPS CPU with single-precision
            floating-point and double assist instructions.
  
!      â€˜hsâ€™
            Compile for ARC HS CPU with no hardware extensions except the
            atomic instructions.
  
!      â€˜hs34â€™
            Compile for ARC HS34 CPU.
  
!      â€˜hs38â€™
            Compile for ARC HS38 CPU.
  
!      â€˜hs38_linuxâ€™
            Compile for ARC HS38 CPU with all hardware extensions on.
  
!      â€˜hs4xâ€™
            Compile for ARC HS4x CPU.
  
!      â€˜hs4xdâ€™
            Compile for ARC HS4xD CPU.
  
!      â€˜hs4x_rel31â€™
            Compile for ARC HS4x CPU release 3.10a.
  
!      â€˜arc600_normâ€™
!           Compile for ARC 600 CPU with â€˜normâ€™ instructions enabled.
  
!      â€˜arc600_mul32x16â€™
!           Compile for ARC 600 CPU with â€˜normâ€™ and 32x16-bit multiply
            instructions enabled.
  
!      â€˜arc600_mul64â€™
!           Compile for ARC 600 CPU with â€˜normâ€™ and â€˜mul64â€™-family
            instructions enabled.
  
!      â€˜arc601_normâ€™
!           Compile for ARC 601 CPU with â€˜normâ€™ instructions enabled.
  
!      â€˜arc601_mul32x16â€™
!           Compile for ARC 601 CPU with â€˜normâ€™ and 32x16-bit multiply
            instructions enabled.
  
!      â€˜arc601_mul64â€™
!           Compile for ARC 601 CPU with â€˜normâ€™ and â€˜mul64â€™-family
            instructions enabled.
  
!      â€˜nps400â€™
            Compile for ARC 700 on NPS400 chip.
  
!      â€˜em_miniâ€™
            Compile for ARC EM minimalist configuration featuring reduced
            register set.
  
! â€˜-mdpfpâ€™
! â€˜-mdpfp-compactâ€™
       Generate double-precision FPX instructions, tuned for the compact
       implementation.
  
! â€˜-mdpfp-fastâ€™
       Generate double-precision FPX instructions, tuned for the fast
       implementation.
  
! â€˜-mno-dpfp-lrsrâ€™
!      Disable â€˜lrâ€™ and â€˜srâ€™ instructions from using FPX extension aux
       registers.
  
! â€˜-meaâ€™
!      Generate extended arithmetic instructions.  Currently only â€˜divawâ€™,
!      â€˜addsâ€™, â€˜subsâ€™, and â€˜sat16â€™ are supported.  Only valid for
!      â€˜-mcpu=ARC700â€™.
  
! â€˜-mno-mpyâ€™
!      Do not generate â€˜mpyâ€™-family instructions for ARC700.  This option
       is deprecated.
  
! â€˜-mmul32x16â€™
       Generate 32x16-bit multiply and multiply-accumulate instructions.
  
! â€˜-mmul64â€™
!      Generate â€˜mul64â€™ and â€˜mulu64â€™ instructions.  Only valid for
!      â€˜-mcpu=ARC600â€™.
  
! â€˜-mnormâ€™
!      Generate â€˜normâ€™ instructions.  This is the default if
!      â€˜-mcpu=ARC700â€™ is in effect.
  
! â€˜-mspfpâ€™
! â€˜-mspfp-compactâ€™
       Generate single-precision FPX instructions, tuned for the compact
       implementation.
  
! â€˜-mspfp-fastâ€™
       Generate single-precision FPX instructions, tuned for the fast
       implementation.
  
! â€˜-msimdâ€™
       Enable generation of ARC SIMD instructions via target-specific
!      builtins.  Only valid for â€˜-mcpu=ARC700â€™.
  
! â€˜-msoft-floatâ€™
       This option ignored; it is provided for compatibility purposes
       only.  Software floating-point code is emitted by default, and this
!      default can overridden by FPX options; â€˜-mspfpâ€™, â€˜-mspfp-compactâ€™,
!      or â€˜-mspfp-fastâ€™ for single precision, and â€˜-mdpfpâ€™,
!      â€˜-mdpfp-compactâ€™, or â€˜-mdpfp-fastâ€™ for double precision.
  
! â€˜-mswapâ€™
!      Generate â€˜swapâ€™ instructions.
  
! â€˜-matomicâ€™
       This enables use of the locked load/store conditional extension to
       implement atomic memory built-in functions.  Not available for ARC
       6xx or ARC EM cores.
  
! â€˜-mdiv-remâ€™
!      Enable â€˜divâ€™ and â€˜remâ€™ instructions for ARCv2 cores.
  
! â€˜-mcode-densityâ€™
       Enable code density instructions for ARC EM. This option is on by
       default for ARC HS.
  
! â€˜-mll64â€™
       Enable double load/store operations for ARC HS cores.
  
! â€˜-mtp-regno=REGNOâ€™
       Specify thread pointer register number.
  
! â€˜-mmpy-option=MULTOâ€™
       Compile ARCv2 code with a multiplier design option.  You can
       specify the option using either a string or numeric value for
!      MULTO.  â€˜wlh1â€™ is the default value.  The recognized values are:
  
!      â€˜0â€™
!      â€˜noneâ€™
            No multiplier available.
  
!      â€˜1â€™
!      â€˜wâ€™
            16x16 multiplier, fully pipelined.  The following instructions
!           are enabled: â€˜mpywâ€™ and â€˜mpyuwâ€™.
  
!      â€˜2â€™
!      â€˜wlh1â€™
            32x32 multiplier, fully pipelined (1 stage).  The following
!           instructions are additionally enabled: â€˜mpyâ€™, â€˜mpyuâ€™, â€˜mpymâ€™,
!           â€˜mpymuâ€™, and â€˜mpy_sâ€™.
  
!      â€˜3â€™
!      â€˜wlh2â€™
            32x32 multiplier, fully pipelined (2 stages).  The following
!           instructions are additionally enabled: â€˜mpyâ€™, â€˜mpyuâ€™, â€˜mpymâ€™,
!           â€˜mpymuâ€™, and â€˜mpy_sâ€™.
  
!      â€˜4â€™
!      â€˜wlh3â€™
            Two 16x16 multipliers, blocking, sequential.  The following
!           instructions are additionally enabled: â€˜mpyâ€™, â€˜mpyuâ€™, â€˜mpymâ€™,
!           â€˜mpymuâ€™, and â€˜mpy_sâ€™.
  
!      â€˜5â€™
!      â€˜wlh4â€™
            One 16x16 multiplier, blocking, sequential.  The following
!           instructions are additionally enabled: â€˜mpyâ€™, â€˜mpyuâ€™, â€˜mpymâ€™,
!           â€˜mpymuâ€™, and â€˜mpy_sâ€™.
  
!      â€˜6â€™
!      â€˜wlh5â€™
            One 32x4 multiplier, blocking, sequential.  The following
!           instructions are additionally enabled: â€˜mpyâ€™, â€˜mpyuâ€™, â€˜mpymâ€™,
!           â€˜mpymuâ€™, and â€˜mpy_sâ€™.
  
!      â€˜7â€™
!      â€˜plus_dmpyâ€™
            ARC HS SIMD support.
  
!      â€˜8â€™
!      â€˜plus_macdâ€™
            ARC HS SIMD support.
  
!      â€˜9â€™
!      â€˜plus_qmacwâ€™
            ARC HS SIMD support.
  
       This option is only available for ARCv2 cores.
  
! â€˜-mfpu=FPUâ€™
       Enables support for specific floating-point hardware extensions for
       ARCv2 cores.  Supported values for FPU are:
  
!      â€˜fpusâ€™
            Enables support for single-precision floating-point hardware
            extensions.
  
!      â€˜fpudâ€™
            Enables support for double-precision floating-point hardware
            extensions.  The single-precision floating-point extension is
            also enabled.  Not available for ARC EM.
  
!      â€˜fpudaâ€™
            Enables support for double-precision floating-point hardware
            extensions using double-precision assist instructions.  The
            single-precision floating-point extension is also enabled.
            This option is only available for ARC EM.
  
!      â€˜fpuda_divâ€™
            Enables support for double-precision floating-point hardware
            extensions using double-precision assist instructions.  The
            single-precision floating-point, square-root, and divide
            extensions are also enabled.  This option is only available
            for ARC EM.
  
!      â€˜fpuda_fmaâ€™
            Enables support for double-precision floating-point hardware
            extensions using double-precision assist instructions.  The
            single-precision floating-point and fused multiply and add
            hardware extensions are also enabled.  This option is only
            available for ARC EM.
  
!      â€˜fpuda_allâ€™
            Enables support for double-precision floating-point hardware
            extensions using double-precision assist instructions.  All
            single-precision floating-point hardware extensions are also
            enabled.  This option is only available for ARC EM.
  
!      â€˜fpus_divâ€™
            Enables support for single-precision floating-point,
            square-root and divide hardware extensions.
  
!      â€˜fpud_divâ€™
            Enables support for double-precision floating-point,
            square-root and divide hardware extensions.  This option
!           includes option â€˜fpus_divâ€™.  Not available for ARC EM.
  
!      â€˜fpus_fmaâ€™
            Enables support for single-precision floating-point and fused
            multiply and add hardware extensions.
  
!      â€˜fpud_fmaâ€™
            Enables support for double-precision floating-point and fused
            multiply and add hardware extensions.  This option includes
!           option â€˜fpus_fmaâ€™.  Not available for ARC EM.
  
!      â€˜fpus_allâ€™
            Enables support for all single-precision floating-point
            hardware extensions.
  
!      â€˜fpud_allâ€™
            Enables support for all single- and double-precision
            floating-point hardware extensions.  Not available for ARC EM.
  
! â€˜-mirq-ctrl-saved=REGISTER-RANGE, BLINK, LP_COUNTâ€™
       Specifies general-purposes registers that the processor
       automatically saves/restores on interrupt entry and exit.
       REGISTER-RANGE is specified as two registers separated by a dash.
!      The register range always starts with â€˜r0â€™, the upper limit is â€˜fpâ€™
       register.  BLINK and LP_COUNT are optional.  This option is only
       valid for ARC EM and ARC HS cores.
  
! â€˜-mrgf-banked-regs=NUMBERâ€™
       Specifies the number of registers replicated in second register
       bank on entry to fast interrupt.  Fast interrupts are interrupts
       with the highest priority level P0.  These interrupts save only PC
*************** being compiled:
*** 21614,21762 ****
       using fast interrupts in an ARC V2 family processor.  Permitted
       values are 4, 8, 16, and 32.
  
! '-mlpc-width=WIDTH'
!      Specify the width of the 'lp_count' register.  Valid values for
       WIDTH are 8, 16, 20, 24, 28 and 32 bits.  The default width is
       fixed to 32 bits.  If the width is less than 32, the compiler does
       not attempt to transform loops in your program to use the
!      zero-delay loop mechanism unless it is known that the 'lp_count'
       register can hold the required loop-counter value.  Depending on
       the width specified, the compiler and run-time library might
       continue to use the loop mechanism for various needs.  This option
!      defines macro '__ARC_LPC_WIDTH__' with the value of WIDTH.
  
! '-mrf16'
       This option instructs the compiler to generate code for a 16-entry
!      register file.  This option defines the '__ARC_RF16__' preprocessor
       macro.
  
! '-mbranch-index'
!      Enable use of 'bi' or 'bih' instructions to implement jump tables.
  
   The following options are passed through to the assembler, and also
  define preprocessor macro symbols.
  
! '-mdsp-packa'
       Passed down to the assembler to enable the DSP Pack A extensions.
!      Also sets the preprocessor symbol '__Xdsp_packa'.  This option is
       deprecated.
  
! '-mdvbf'
       Passed down to the assembler to enable the dual Viterbi butterfly
!      extension.  Also sets the preprocessor symbol '__Xdvbf'.  This
       option is deprecated.
  
! '-mlock'
       Passed down to the assembler to enable the locked load/store
       conditional extension.  Also sets the preprocessor symbol
!      '__Xlock'.
  
! '-mmac-d16'
       Passed down to the assembler.  Also sets the preprocessor symbol
!      '__Xxmac_d16'.  This option is deprecated.
  
! '-mmac-24'
       Passed down to the assembler.  Also sets the preprocessor symbol
!      '__Xxmac_24'.  This option is deprecated.
  
! '-mrtsc'
       Passed down to the assembler to enable the 64-bit time-stamp
       counter extension instruction.  Also sets the preprocessor symbol
!      '__Xrtsc'.  This option is deprecated.
  
! '-mswape'
       Passed down to the assembler to enable the swap byte ordering
       extension instruction.  Also sets the preprocessor symbol
!      '__Xswape'.
  
! '-mtelephony'
       Passed down to the assembler to enable dual- and single-operand
       instructions for telephony.  Also sets the preprocessor symbol
!      '__Xtelephony'.  This option is deprecated.
  
! '-mxy'
       Passed down to the assembler to enable the XY memory extension.
!      Also sets the preprocessor symbol '__Xxy'.
  
   The following options control how the assembly code is annotated:
  
! '-misize'
       Annotate assembler instructions with estimated addresses.
  
! '-mannotate-align'
       Does nothing.  Preserved for backward compatibility.
  
   The following options are passed through to the linker:
  
! '-marclinux'
!      Passed through to the linker, to specify use of the 'arclinux'
       emulation.  This option is enabled by default in tool chains built
!      for 'arc-linux-uclibc' and 'arceb-linux-uclibc' targets when
       profiling is not requested.
  
! '-marclinux_prof'
!      Passed through to the linker, to specify use of the 'arclinux_prof'
       emulation.  This option is enabled by default in tool chains built
!      for 'arc-linux-uclibc' and 'arceb-linux-uclibc' targets when
       profiling is requested.
  
   The following options control the semantics of generated code:
  
! '-mlong-calls'
       Generate calls as register indirect calls, thus providing access to
       the full 32-bit address range.
  
! '-mmedium-calls'
       Don't use less than 25-bit addressing range for calls, which is the
       offset available for an unconditional branch-and-link instruction.
       Conditional execution of function calls is suppressed, to allow use
       of the 25-bit range, rather than the 21-bit range with conditional
       branch-and-link.  This is the default for tool chains built for
!      'arc-linux-uclibc' and 'arceb-linux-uclibc' targets.
  
! '-G NUM'
       Put definitions of externally-visible data in a small data section
       if that data is no bigger than NUM bytes.  The default value of NUM
       is 4 for any ARC configuration, or 8 when we have double load/store
       operations.
  
! '-mno-sdata'
       Do not generate sdata references.  This is the default for tool
!      chains built for 'arc-linux-uclibc' and 'arceb-linux-uclibc'
       targets.
  
! '-mvolatile-cache'
       Use ordinarily cached memory accesses for volatile references.
       This is the default.
  
! '-mno-volatile-cache'
       Enable cache bypass for volatile references.
  
   The following options fine tune code generation:
! '-malign-call'
       Does nothing.  Preserved for backward compatibility.
  
! '-mauto-modify-reg'
       Enable the use of pre/post modify with register displacement.
  
! '-mbbit-peephole'
       Does nothing.  Preserved for backward compatibility.
  
! '-mno-brcc'
!      This option disables a target-specific pass in 'arc_reorg' to
!      generate compare-and-branch ('brCC') instructions.  It has no
       effect on generation of these instructions driven by the combiner
       pass.
  
! '-mcase-vector-pcrel'
       Use PC-relative switch case tables to enable case table shortening.
!      This is the default for '-Os'.
  
! '-mcompact-casesi'
!      Enable compact 'casesi' pattern.  This is the default for '-Os',
       and only available for ARCv1 cores.  This option is deprecated.
  
! '-mno-cond-exec'
       Disable the ARCompact-specific pass to generate conditional
       execution instructions.
  
--- 21618,21766 ----
       using fast interrupts in an ARC V2 family processor.  Permitted
       values are 4, 8, 16, and 32.
  
! â€˜-mlpc-width=WIDTHâ€™
!      Specify the width of the â€˜lp_countâ€™ register.  Valid values for
       WIDTH are 8, 16, 20, 24, 28 and 32 bits.  The default width is
       fixed to 32 bits.  If the width is less than 32, the compiler does
       not attempt to transform loops in your program to use the
!      zero-delay loop mechanism unless it is known that the â€˜lp_countâ€™
       register can hold the required loop-counter value.  Depending on
       the width specified, the compiler and run-time library might
       continue to use the loop mechanism for various needs.  This option
!      defines macro â€˜__ARC_LPC_WIDTH__â€™ with the value of WIDTH.
  
! â€˜-mrf16â€™
       This option instructs the compiler to generate code for a 16-entry
!      register file.  This option defines the â€˜__ARC_RF16__â€™ preprocessor
       macro.
  
! â€˜-mbranch-indexâ€™
!      Enable use of â€˜biâ€™ or â€˜bihâ€™ instructions to implement jump tables.
  
   The following options are passed through to the assembler, and also
  define preprocessor macro symbols.
  
! â€˜-mdsp-packaâ€™
       Passed down to the assembler to enable the DSP Pack A extensions.
!      Also sets the preprocessor symbol â€˜__Xdsp_packaâ€™.  This option is
       deprecated.
  
! â€˜-mdvbfâ€™
       Passed down to the assembler to enable the dual Viterbi butterfly
!      extension.  Also sets the preprocessor symbol â€˜__Xdvbfâ€™.  This
       option is deprecated.
  
! â€˜-mlockâ€™
       Passed down to the assembler to enable the locked load/store
       conditional extension.  Also sets the preprocessor symbol
!      â€˜__Xlockâ€™.
  
! â€˜-mmac-d16â€™
       Passed down to the assembler.  Also sets the preprocessor symbol
!      â€˜__Xxmac_d16â€™.  This option is deprecated.
  
! â€˜-mmac-24â€™
       Passed down to the assembler.  Also sets the preprocessor symbol
!      â€˜__Xxmac_24â€™.  This option is deprecated.
  
! â€˜-mrtscâ€™
       Passed down to the assembler to enable the 64-bit time-stamp
       counter extension instruction.  Also sets the preprocessor symbol
!      â€˜__Xrtscâ€™.  This option is deprecated.
  
! â€˜-mswapeâ€™
       Passed down to the assembler to enable the swap byte ordering
       extension instruction.  Also sets the preprocessor symbol
!      â€˜__Xswapeâ€™.
  
! â€˜-mtelephonyâ€™
       Passed down to the assembler to enable dual- and single-operand
       instructions for telephony.  Also sets the preprocessor symbol
!      â€˜__Xtelephonyâ€™.  This option is deprecated.
  
! â€˜-mxyâ€™
       Passed down to the assembler to enable the XY memory extension.
!      Also sets the preprocessor symbol â€˜__Xxyâ€™.
  
   The following options control how the assembly code is annotated:
  
! â€˜-misizeâ€™
       Annotate assembler instructions with estimated addresses.
  
! â€˜-mannotate-alignâ€™
       Does nothing.  Preserved for backward compatibility.
  
   The following options are passed through to the linker:
  
! â€˜-marclinuxâ€™
!      Passed through to the linker, to specify use of the â€˜arclinuxâ€™
       emulation.  This option is enabled by default in tool chains built
!      for â€˜arc-linux-uclibcâ€™ and â€˜arceb-linux-uclibcâ€™ targets when
       profiling is not requested.
  
! â€˜-marclinux_profâ€™
!      Passed through to the linker, to specify use of the â€˜arclinux_profâ€™
       emulation.  This option is enabled by default in tool chains built
!      for â€˜arc-linux-uclibcâ€™ and â€˜arceb-linux-uclibcâ€™ targets when
       profiling is requested.
  
   The following options control the semantics of generated code:
  
! â€˜-mlong-callsâ€™
       Generate calls as register indirect calls, thus providing access to
       the full 32-bit address range.
  
! â€˜-mmedium-callsâ€™
       Don't use less than 25-bit addressing range for calls, which is the
       offset available for an unconditional branch-and-link instruction.
       Conditional execution of function calls is suppressed, to allow use
       of the 25-bit range, rather than the 21-bit range with conditional
       branch-and-link.  This is the default for tool chains built for
!      â€˜arc-linux-uclibcâ€™ and â€˜arceb-linux-uclibcâ€™ targets.
  
! â€˜-G NUMâ€™
       Put definitions of externally-visible data in a small data section
       if that data is no bigger than NUM bytes.  The default value of NUM
       is 4 for any ARC configuration, or 8 when we have double load/store
       operations.
  
! â€˜-mno-sdataâ€™
       Do not generate sdata references.  This is the default for tool
!      chains built for â€˜arc-linux-uclibcâ€™ and â€˜arceb-linux-uclibcâ€™
       targets.
  
! â€˜-mvolatile-cacheâ€™
       Use ordinarily cached memory accesses for volatile references.
       This is the default.
  
! â€˜-mno-volatile-cacheâ€™
       Enable cache bypass for volatile references.
  
   The following options fine tune code generation:
! â€˜-malign-callâ€™
       Does nothing.  Preserved for backward compatibility.
  
! â€˜-mauto-modify-regâ€™
       Enable the use of pre/post modify with register displacement.
  
! â€˜-mbbit-peepholeâ€™
       Does nothing.  Preserved for backward compatibility.
  
! â€˜-mno-brccâ€™
!      This option disables a target-specific pass in â€˜arc_reorgâ€™ to
!      generate compare-and-branch (â€˜brCCâ€™) instructions.  It has no
       effect on generation of these instructions driven by the combiner
       pass.
  
! â€˜-mcase-vector-pcrelâ€™
       Use PC-relative switch case tables to enable case table shortening.
!      This is the default for â€˜-Osâ€™.
  
! â€˜-mcompact-casesiâ€™
!      Enable compact â€˜casesiâ€™ pattern.  This is the default for â€˜-Osâ€™,
       and only available for ARCv1 cores.  This option is deprecated.
  
! â€˜-mno-cond-execâ€™
       Disable the ARCompact-specific pass to generate conditional
       execution instructions.
  
*************** define preprocessor macro symbols.
*** 21771,21805 ****
       the cost of extra compilation time, which is why there is an option
       to switch it off.  If you have a problem with call instructions
       exceeding their allowable offset range because they are
!      conditionalized, you should consider using '-mmedium-calls'
       instead.
  
! '-mearly-cbranchsi'
!      Enable pre-reload use of the 'cbranchsi' pattern.
  
! '-mexpand-adddi'
!      Expand 'adddi3' and 'subdi3' at RTL generation time into 'add.f',
!      'adc' etc.  This option is deprecated.
  
! '-mindexed-loads'
       Enable the use of indexed loads.  This can be problematic because
       some optimizers then assume that indexed stores exist, which is not
       the case.
  
! '-mlra'
       Does nothing.  Preserved for backward compatibility.
  
! '-mlra-priority-none'
       Don't indicate any priority for target registers.
  
! '-mlra-priority-compact'
       Indicate target register priority for r0..r3 / r12..r15.
  
! '-mlra-priority-noncompact'
       Reduce target register priority for r0..r3 / r12..r15.
  
! '-mmillicode'
!      When optimizing for size (using '-Os'), prologues and epilogues
       that have to save or restore a large number of registers are often
       shortened by using call to a special function in libgcc; this is
       referred to as a _millicode_ call.  As these calls can pose
--- 21775,21809 ----
       the cost of extra compilation time, which is why there is an option
       to switch it off.  If you have a problem with call instructions
       exceeding their allowable offset range because they are
!      conditionalized, you should consider using â€˜-mmedium-callsâ€™
       instead.
  
! â€˜-mearly-cbranchsiâ€™
!      Enable pre-reload use of the â€˜cbranchsiâ€™ pattern.
  
! â€˜-mexpand-adddiâ€™
!      Expand â€˜adddi3â€™ and â€˜subdi3â€™ at RTL generation time into â€˜add.fâ€™,
!      â€˜adcâ€™ etc.  This option is deprecated.
  
! â€˜-mindexed-loadsâ€™
       Enable the use of indexed loads.  This can be problematic because
       some optimizers then assume that indexed stores exist, which is not
       the case.
  
! â€˜-mlraâ€™
       Does nothing.  Preserved for backward compatibility.
  
! â€˜-mlra-priority-noneâ€™
       Don't indicate any priority for target registers.
  
! â€˜-mlra-priority-compactâ€™
       Indicate target register priority for r0..r3 / r12..r15.
  
! â€˜-mlra-priority-noncompactâ€™
       Reduce target register priority for r0..r3 / r12..r15.
  
! â€˜-mmillicodeâ€™
!      When optimizing for size (using â€˜-Osâ€™), prologues and epilogues
       that have to save or restore a large number of registers are often
       shortened by using call to a special function in libgcc; this is
       referred to as a _millicode_ call.  As these calls can pose
*************** define preprocessor macro symbols.
*** 21807,21943 ****
       nonstandard way, this option is provided to turn on or off
       millicode call generation.
  
! '-mcode-density-frame'
!      This option enable the compiler to emit 'enter' and 'leave'
       instructions.  These instructions are only valid for CPUs with
       code-density feature.
  
! '-mmixed-code'
       Does nothing.  Preserved for backward compatibility.
  
! '-mq-class'
!      Ths option is deprecated.  Enable 'q' instruction alternatives.
!      This is the default for '-Os'.
  
! '-mRcq'
       Does nothing.  Preserved for backward compatibility.
  
! '-mRcw'
       Does nothing.  Preserved for backward compatibility.
  
! '-msize-level=LEVEL'
       Fine-tune size optimization with regards to instruction lengths and
       alignment.  The recognized values for LEVEL are:
!      '0'
            No size optimization.  This level is deprecated and treated
!           like '1'.
  
!      '1'
            Short instructions are used opportunistically.
  
!      '2'
            In addition, alignment of loops and of code after barriers are
            dropped.
  
!      '3'
            In addition, optional data alignment is dropped, and the
!           option 'Os' is enabled.
  
!      This defaults to '3' when '-Os' is in effect.  Otherwise, the
!      behavior when this is not set is equivalent to level '1'.
  
! '-mtune=CPU'
       Set instruction scheduling parameters for CPU, overriding any
!      implied by '-mcpu='.
  
       Supported values for CPU are
  
!      'ARC600'
            Tune for ARC600 CPU.
  
!      'ARC601'
            Tune for ARC601 CPU.
  
!      'ARC700'
            Tune for ARC700 CPU with standard multiplier block.
  
!      'ARC700-xmac'
            Tune for ARC700 CPU with XMAC block.
  
!      'ARC725D'
            Tune for ARC725D CPU.
  
!      'ARC750D'
            Tune for ARC750D CPU.
  
!      'core3'
            Tune for ARCv2 core3 type CPU. This option enable usage of
!           'dbnz' instruction.
  
!      'release31a'
            Tune for ARC4x release 3.10a.
  
! '-mmultcost=NUM'
!      Cost to assume for a multiply instruction, with '4' being equal to
       a normal instruction.
  
! '-munalign-prob-threshold=PROBABILITY'
       Does nothing.  Preserved for backward compatibility.
  
   The following options are maintained for backward compatibility, but
  are now deprecated and will be removed in a future release:
  
! '-margonaut'
       Obsolete FPX.
  
! '-mbig-endian'
! '-EB'
       Compile code for big-endian targets.  Use of these options is now
       deprecated.  Big-endian code is supported by configuring GCC to
!      build 'arceb-elf32' and 'arceb-linux-uclibc' targets, for which big
       endian is the default.
  
! '-mlittle-endian'
! '-EL'
       Compile code for little-endian targets.  Use of these options is
       now deprecated.  Little-endian code is supported by configuring GCC
!      to build 'arc-elf32' and 'arc-linux-uclibc' targets, for which
       little endian is the default.
  
! '-mbarrel_shifter'
!      Replaced by '-mbarrel-shifter'.
  
! '-mdpfp_compact'
!      Replaced by '-mdpfp-compact'.
  
! '-mdpfp_fast'
!      Replaced by '-mdpfp-fast'.
  
! '-mdsp_packa'
!      Replaced by '-mdsp-packa'.
  
! '-mEA'
!      Replaced by '-mea'.
  
! '-mmac_24'
!      Replaced by '-mmac-24'.
  
! '-mmac_d16'
!      Replaced by '-mmac-d16'.
  
! '-mspfp_compact'
!      Replaced by '-mspfp-compact'.
  
! '-mspfp_fast'
!      Replaced by '-mspfp-fast'.
  
! '-mtune=CPU'
!      Values 'arc600', 'arc601', 'arc700' and 'arc700-xmac' for CPU are
!      replaced by 'ARC600', 'ARC601', 'ARC700' and 'ARC700-xmac'
       respectively.
  
! '-multcost=NUM'
!      Replaced by '-mmultcost'.
  
  
  File: gcc.info,  Node: ARM Options,  Next: AVR Options,  Prev: ARC Options,  Up: Submodel Options
--- 21811,21947 ----
       nonstandard way, this option is provided to turn on or off
       millicode call generation.
  
! â€˜-mcode-density-frameâ€™
!      This option enable the compiler to emit â€˜enterâ€™ and â€˜leaveâ€™
       instructions.  These instructions are only valid for CPUs with
       code-density feature.
  
! â€˜-mmixed-codeâ€™
       Does nothing.  Preserved for backward compatibility.
  
! â€˜-mq-classâ€™
!      Ths option is deprecated.  Enable â€˜qâ€™ instruction alternatives.
!      This is the default for â€˜-Osâ€™.
  
! â€˜-mRcqâ€™
       Does nothing.  Preserved for backward compatibility.
  
! â€˜-mRcwâ€™
       Does nothing.  Preserved for backward compatibility.
  
! â€˜-msize-level=LEVELâ€™
       Fine-tune size optimization with regards to instruction lengths and
       alignment.  The recognized values for LEVEL are:
!      â€˜0â€™
            No size optimization.  This level is deprecated and treated
!           like â€˜1â€™.
  
!      â€˜1â€™
            Short instructions are used opportunistically.
  
!      â€˜2â€™
            In addition, alignment of loops and of code after barriers are
            dropped.
  
!      â€˜3â€™
            In addition, optional data alignment is dropped, and the
!           option â€˜Osâ€™ is enabled.
  
!      This defaults to â€˜3â€™ when â€˜-Osâ€™ is in effect.  Otherwise, the
!      behavior when this is not set is equivalent to level â€˜1â€™.
  
! â€˜-mtune=CPUâ€™
       Set instruction scheduling parameters for CPU, overriding any
!      implied by â€˜-mcpu=â€™.
  
       Supported values for CPU are
  
!      â€˜ARC600â€™
            Tune for ARC600 CPU.
  
!      â€˜ARC601â€™
            Tune for ARC601 CPU.
  
!      â€˜ARC700â€™
            Tune for ARC700 CPU with standard multiplier block.
  
!      â€˜ARC700-xmacâ€™
            Tune for ARC700 CPU with XMAC block.
  
!      â€˜ARC725Dâ€™
            Tune for ARC725D CPU.
  
!      â€˜ARC750Dâ€™
            Tune for ARC750D CPU.
  
!      â€˜core3â€™
            Tune for ARCv2 core3 type CPU. This option enable usage of
!           â€˜dbnzâ€™ instruction.
  
!      â€˜release31aâ€™
            Tune for ARC4x release 3.10a.
  
! â€˜-mmultcost=NUMâ€™
!      Cost to assume for a multiply instruction, with â€˜4â€™ being equal to
       a normal instruction.
  
! â€˜-munalign-prob-threshold=PROBABILITYâ€™
       Does nothing.  Preserved for backward compatibility.
  
   The following options are maintained for backward compatibility, but
  are now deprecated and will be removed in a future release:
  
! â€˜-margonautâ€™
       Obsolete FPX.
  
! â€˜-mbig-endianâ€™
! â€˜-EBâ€™
       Compile code for big-endian targets.  Use of these options is now
       deprecated.  Big-endian code is supported by configuring GCC to
!      build â€˜arceb-elf32â€™ and â€˜arceb-linux-uclibcâ€™ targets, for which big
       endian is the default.
  
! â€˜-mlittle-endianâ€™
! â€˜-ELâ€™
       Compile code for little-endian targets.  Use of these options is
       now deprecated.  Little-endian code is supported by configuring GCC
!      to build â€˜arc-elf32â€™ and â€˜arc-linux-uclibcâ€™ targets, for which
       little endian is the default.
  
! â€˜-mbarrel_shifterâ€™
!      Replaced by â€˜-mbarrel-shifterâ€™.
  
! â€˜-mdpfp_compactâ€™
!      Replaced by â€˜-mdpfp-compactâ€™.
  
! â€˜-mdpfp_fastâ€™
!      Replaced by â€˜-mdpfp-fastâ€™.
  
! â€˜-mdsp_packaâ€™
!      Replaced by â€˜-mdsp-packaâ€™.
  
! â€˜-mEAâ€™
!      Replaced by â€˜-meaâ€™.
  
! â€˜-mmac_24â€™
!      Replaced by â€˜-mmac-24â€™.
  
! â€˜-mmac_d16â€™
!      Replaced by â€˜-mmac-d16â€™.
  
! â€˜-mspfp_compactâ€™
!      Replaced by â€˜-mspfp-compactâ€™.
  
! â€˜-mspfp_fastâ€™
!      Replaced by â€˜-mspfp-fastâ€™.
  
! â€˜-mtune=CPUâ€™
!      Values â€˜arc600â€™, â€˜arc601â€™, â€˜arc700â€™ and â€˜arc700-xmacâ€™ for CPU are
!      replaced by â€˜ARC600â€™, â€˜ARC601â€™, â€˜ARC700â€™ and â€˜ARC700-xmacâ€™
       respectively.
  
! â€˜-multcost=NUMâ€™
!      Replaced by â€˜-mmultcostâ€™.
  
  
  File: gcc.info,  Node: ARM Options,  Next: AVR Options,  Prev: ARC Options,  Up: Submodel Options
*************** File: gcc.info,  Node: ARM Options,  Nex
*** 21945,21992 ****
  3.20.5 ARM Options
  ------------------
  
! These '-m' options are defined for the ARM port:
  
! '-mabi=NAME'
       Generate code for the specified ABI.  Permissible values are:
!      'apcs-gnu', 'atpcs', 'aapcs', 'aapcs-linux' and 'iwmmxt'.
  
! '-mapcs-frame'
       Generate a stack frame that is compliant with the ARM Procedure
       Call Standard for all functions, even if this is not strictly
       necessary for correct execution of the code.  Specifying
!      '-fomit-frame-pointer' with this option causes the stack frames not
       to be generated for leaf functions.  The default is
!      '-mno-apcs-frame'.  This option is deprecated.
  
! '-mapcs'
!      This is a synonym for '-mapcs-frame' and is deprecated.
  
! '-mthumb-interwork'
       Generate code that supports calling between the ARM and Thumb
       instruction sets.  Without this option, on pre-v5 architectures,
       the two instruction sets cannot be reliably used inside one
!      program.  The default is '-mno-thumb-interwork', since slightly
!      larger code is generated when '-mthumb-interwork' is specified.  In
       AAPCS configurations this option is meaningless.
  
! '-mno-sched-prolog'
       Prevent the reordering of instructions in the function prologue, or
       the merging of those instruction with the instructions in the
       function's body.  This means that all functions start with a
       recognizable set of instructions (or in fact one of a choice from a
       small set of different function prologues), and this information
       can be used to locate the start of functions inside an executable
!      piece of code.  The default is '-msched-prolog'.
  
! '-mfloat-abi=NAME'
       Specifies which floating-point ABI to use.  Permissible values are:
!      'soft', 'softfp' and 'hard'.
  
!      Specifying 'soft' causes GCC to generate output containing library
!      calls for floating-point operations.  'softfp' allows the
       generation of code using hardware floating-point instructions, but
!      still uses the soft-float calling conventions.  'hard' allows
       generation of floating-point instructions and uses FPU-specific
       calling conventions.
  
--- 21949,21996 ----
  3.20.5 ARM Options
  ------------------
  
! These â€˜-mâ€™ options are defined for the ARM port:
  
! â€˜-mabi=NAMEâ€™
       Generate code for the specified ABI.  Permissible values are:
!      â€˜apcs-gnuâ€™, â€˜atpcsâ€™, â€˜aapcsâ€™, â€˜aapcs-linuxâ€™ and â€˜iwmmxtâ€™.
  
! â€˜-mapcs-frameâ€™
       Generate a stack frame that is compliant with the ARM Procedure
       Call Standard for all functions, even if this is not strictly
       necessary for correct execution of the code.  Specifying
!      â€˜-fomit-frame-pointerâ€™ with this option causes the stack frames not
       to be generated for leaf functions.  The default is
!      â€˜-mno-apcs-frameâ€™.  This option is deprecated.
  
! â€˜-mapcsâ€™
!      This is a synonym for â€˜-mapcs-frameâ€™ and is deprecated.
  
! â€˜-mthumb-interworkâ€™
       Generate code that supports calling between the ARM and Thumb
       instruction sets.  Without this option, on pre-v5 architectures,
       the two instruction sets cannot be reliably used inside one
!      program.  The default is â€˜-mno-thumb-interworkâ€™, since slightly
!      larger code is generated when â€˜-mthumb-interworkâ€™ is specified.  In
       AAPCS configurations this option is meaningless.
  
! â€˜-mno-sched-prologâ€™
       Prevent the reordering of instructions in the function prologue, or
       the merging of those instruction with the instructions in the
       function's body.  This means that all functions start with a
       recognizable set of instructions (or in fact one of a choice from a
       small set of different function prologues), and this information
       can be used to locate the start of functions inside an executable
!      piece of code.  The default is â€˜-msched-prologâ€™.
  
! â€˜-mfloat-abi=NAMEâ€™
       Specifies which floating-point ABI to use.  Permissible values are:
!      â€˜softâ€™, â€˜softfpâ€™ and â€˜hardâ€™.
  
!      Specifying â€˜softâ€™ causes GCC to generate output containing library
!      calls for floating-point operations.  â€˜softfpâ€™ allows the
       generation of code using hardware floating-point instructions, but
!      still uses the soft-float calling conventions.  â€˜hardâ€™ allows
       generation of floating-point instructions and uses FPU-specific
       calling conventions.
  
*************** These '-m' options are defined for the A
*** 21995,22016 ****
       you must compile your entire program with the same ABI, and link
       with a compatible set of libraries.
  
! '-mgeneral-regs-only'
       Generate code which uses only the general-purpose registers.  This
       will prevent the compiler from using floating-point and Advanced
       SIMD registers but will not impose any restrictions on the
       assembler.
  
! '-mlittle-endian'
       Generate code for a processor running in little-endian mode.  This
       is the default for all standard configurations.
  
! '-mbig-endian'
       Generate code for a processor running in big-endian mode; the
       default is to compile code for a little-endian processor.
  
! '-mbe8'
! '-mbe32'
       When linking a big-endian image select between BE8 and BE32
       formats.  The option has no effect for little-endian images and is
       ignored.  The default is dependent on the selected target
--- 21999,22020 ----
       you must compile your entire program with the same ABI, and link
       with a compatible set of libraries.
  
! â€˜-mgeneral-regs-onlyâ€™
       Generate code which uses only the general-purpose registers.  This
       will prevent the compiler from using floating-point and Advanced
       SIMD registers but will not impose any restrictions on the
       assembler.
  
! â€˜-mlittle-endianâ€™
       Generate code for a processor running in little-endian mode.  This
       is the default for all standard configurations.
  
! â€˜-mbig-endianâ€™
       Generate code for a processor running in big-endian mode; the
       default is to compile code for a little-endian processor.
  
! â€˜-mbe8â€™
! â€˜-mbe32â€™
       When linking a big-endian image select between BE8 and BE32
       formats.  The option has no effect for little-endian images and is
       ignored.  The default is dependent on the selected target
*************** These '-m' options are defined for the A
*** 22018,22561 ****
       BE8, for older architectures the default is BE32.  BE32 format has
       been deprecated by ARM.
  
! '-march=NAME[+extension...]'
       This specifies the name of the target ARM architecture.  GCC uses
       this name to determine what kind of instructions it can emit when
       generating assembly code.  This option can be used in conjunction
!      with or instead of the '-mcpu=' option.
  
!      Permissible names are: 'armv4t', 'armv5t', 'armv5te', 'armv6',
!      'armv6j', 'armv6k', 'armv6kz', 'armv6t2', 'armv6z', 'armv6zk',
!      'armv7', 'armv7-a', 'armv7ve', 'armv8-a', 'armv8.1-a', 'armv8.2-a',
!      'armv8.3-a', 'armv8.4-a', 'armv8.5-a', 'armv8.6-a', 'armv9-a',
!      'armv7-r', 'armv8-r', 'armv6-m', 'armv6s-m', 'armv7-m', 'armv7e-m',
!      'armv8-m.base', 'armv8-m.main', 'armv8.1-m.main', 'iwmmxt' and
!      'iwmmxt2'.
  
       Additionally, the following architectures, which lack support for
       the Thumb execution state, are recognized but support is
!      deprecated: 'armv4'.
  
       Many of the architectures support extensions.  These can be added
!      by appending '+EXTENSION' to the architecture name.  Extension
       options are processed in order and capabilities accumulate.  An
       extension will also enable any necessary base extensions upon which
!      it depends.  For example, the '+crypto' extension will always
!      enable the '+simd' extension.  The exception to the additive
!      construction is for extensions that are prefixed with '+no...':
       these extensions disable the specified option and any other
       extensions that may depend on the presence of that extension.
  
!      For example, '-march=armv7-a+simd+nofp+vfpv4' is equivalent to
!      writing '-march=armv7-a+vfpv4' since the '+simd' option is entirely
!      disabled by the '+nofp' option that follows it.
  
       Most extension names are generically named, but have an effect that
       is dependent upon the architecture to which it is applied.  For
!      example, the '+simd' option can be applied to both 'armv7-a' and
!      'armv8-a' architectures, but will enable the original ARMv7-A
!      Advanced SIMD (Neon) extensions for 'armv7-a' and the ARMv8-A
!      variant for 'armv8-a'.
  
       The table below lists the supported extensions for each
       architecture.  Architectures not mentioned do not support any
       extensions.
  
!      'armv5te'
!      'armv6'
!      'armv6j'
!      'armv6k'
!      'armv6kz'
!      'armv6t2'
!      'armv6z'
!      'armv6zk'
!           '+fp'
                 The VFPv2 floating-point instructions.  The extension
!                '+vfpv2' can be used as an alias for this extension.
  
!           '+nofp'
                 Disable the floating-point instructions.
  
!      'armv7'
            The common subset of the ARMv7-A, ARMv7-R and ARMv7-M
            architectures.
!           '+fp'
                 The VFPv3 floating-point instructions, with 16
!                double-precision registers.  The extension '+vfpv3-d16'
                 can be used as an alias for this extension.  Note that
                 floating-point is not supported by the base ARMv7-M
                 architecture, but is compatible with both the ARMv7-A and
                 ARMv7-R architectures.
  
!           '+nofp'
                 Disable the floating-point instructions.
  
!      'armv7-a'
!           '+mp'
                 The multiprocessing extension.
  
!           '+sec'
                 The security extension.
  
!           '+fp'
                 The VFPv3 floating-point instructions, with 16
!                double-precision registers.  The extension '+vfpv3-d16'
                 can be used as an alias for this extension.
  
!           '+simd'
                 The Advanced SIMD (Neon) v1 and the VFPv3 floating-point
!                instructions.  The extensions '+neon' and '+neon-vfpv3'
                 can be used as aliases for this extension.
  
!           '+vfpv3'
                 The VFPv3 floating-point instructions, with 32
                 double-precision registers.
  
!           '+vfpv3-d16-fp16'
                 The VFPv3 floating-point instructions, with 16
                 double-precision registers and the half-precision
                 floating-point conversion operations.
  
!           '+vfpv3-fp16'
                 The VFPv3 floating-point instructions, with 32
                 double-precision registers and the half-precision
                 floating-point conversion operations.
  
!           '+vfpv4-d16'
                 The VFPv4 floating-point instructions, with 16
                 double-precision registers.
  
!           '+vfpv4'
                 The VFPv4 floating-point instructions, with 32
                 double-precision registers.
  
!           '+neon-fp16'
                 The Advanced SIMD (Neon) v1 and the VFPv3 floating-point
                 instructions, with the half-precision floating-point
                 conversion operations.
  
!           '+neon-vfpv4'
                 The Advanced SIMD (Neon) v2 and the VFPv4 floating-point
                 instructions.
  
!           '+nosimd'
                 Disable the Advanced SIMD instructions (does not disable
                 floating point).
  
!           '+nofp'
                 Disable the floating-point and Advanced SIMD
                 instructions.
  
!      'armv7ve'
            The extended version of the ARMv7-A architecture with support
            for virtualization.
!           '+fp'
                 The VFPv4 floating-point instructions, with 16
!                double-precision registers.  The extension '+vfpv4-d16'
                 can be used as an alias for this extension.
  
!           '+simd'
                 The Advanced SIMD (Neon) v2 and the VFPv4 floating-point
!                instructions.  The extension '+neon-vfpv4' can be used as
                 an alias for this extension.
  
!           '+vfpv3-d16'
                 The VFPv3 floating-point instructions, with 16
                 double-precision registers.
  
!           '+vfpv3'
                 The VFPv3 floating-point instructions, with 32
                 double-precision registers.
  
!           '+vfpv3-d16-fp16'
                 The VFPv3 floating-point instructions, with 16
                 double-precision registers and the half-precision
                 floating-point conversion operations.
  
!           '+vfpv3-fp16'
                 The VFPv3 floating-point instructions, with 32
                 double-precision registers and the half-precision
                 floating-point conversion operations.
  
!           '+vfpv4-d16'
                 The VFPv4 floating-point instructions, with 16
                 double-precision registers.
  
!           '+vfpv4'
                 The VFPv4 floating-point instructions, with 32
                 double-precision registers.
  
!           '+neon'
                 The Advanced SIMD (Neon) v1 and the VFPv3 floating-point
!                instructions.  The extension '+neon-vfpv3' can be used as
                 an alias for this extension.
  
!           '+neon-fp16'
                 The Advanced SIMD (Neon) v1 and the VFPv3 floating-point
                 instructions, with the half-precision floating-point
                 conversion operations.
  
!           '+nosimd'
                 Disable the Advanced SIMD instructions (does not disable
                 floating point).
  
!           '+nofp'
                 Disable the floating-point and Advanced SIMD
                 instructions.
  
!      'armv8-a'
!           '+crc'
                 The Cyclic Redundancy Check (CRC) instructions.
!           '+simd'
                 The ARMv8-A Advanced SIMD and floating-point
                 instructions.
!           '+crypto'
                 The cryptographic instructions.
!           '+nocrypto'
                 Disable the cryptographic instructions.
!           '+nofp'
                 Disable the floating-point, Advanced SIMD and
                 cryptographic instructions.
!           '+sb'
                 Speculation Barrier Instruction.
!           '+predres'
                 Execution and Data Prediction Restriction Instructions.
  
!      'armv8.1-a'
!           '+simd'
                 The ARMv8.1-A Advanced SIMD and floating-point
                 instructions.
  
!           '+crypto'
                 The cryptographic instructions.  This also enables the
                 Advanced SIMD and floating-point instructions.
  
!           '+nocrypto'
                 Disable the cryptographic instructions.
  
!           '+nofp'
                 Disable the floating-point, Advanced SIMD and
                 cryptographic instructions.
  
!           '+sb'
                 Speculation Barrier Instruction.
  
!           '+predres'
                 Execution and Data Prediction Restriction Instructions.
  
!      'armv8.2-a'
!      'armv8.3-a'
!           '+fp16'
                 The half-precision floating-point data processing
                 instructions.  This also enables the Advanced SIMD and
                 floating-point instructions.
  
!           '+fp16fml'
                 The half-precision floating-point fmla extension.  This
                 also enables the half-precision floating-point extension
                 and Advanced SIMD and floating-point instructions.
  
!           '+simd'
                 The ARMv8.1-A Advanced SIMD and floating-point
                 instructions.
  
!           '+crypto'
                 The cryptographic instructions.  This also enables the
                 Advanced SIMD and floating-point instructions.
  
!           '+dotprod'
                 Enable the Dot Product extension.  This also enables
                 Advanced SIMD instructions.
  
!           '+nocrypto'
                 Disable the cryptographic extension.
  
!           '+nofp'
                 Disable the floating-point, Advanced SIMD and
                 cryptographic instructions.
  
!           '+sb'
                 Speculation Barrier Instruction.
  
!           '+predres'
                 Execution and Data Prediction Restriction Instructions.
  
!           '+i8mm'
                 8-bit Integer Matrix Multiply instructions.  This also
                 enables Advanced SIMD and floating-point instructions.
  
!           '+bf16'
                 Brain half-precision floating-point instructions.  This
                 also enables Advanced SIMD and floating-point
                 instructions.
  
!      'armv8.4-a'
!           '+fp16'
                 The half-precision floating-point data processing
                 instructions.  This also enables the Advanced SIMD and
                 floating-point instructions as well as the Dot Product
                 extension and the half-precision floating-point fmla
                 extension.
  
!           '+simd'
                 The ARMv8.3-A Advanced SIMD and floating-point
                 instructions as well as the Dot Product extension.
  
!           '+crypto'
                 The cryptographic instructions.  This also enables the
                 Advanced SIMD and floating-point instructions as well as
                 the Dot Product extension.
  
!           '+nocrypto'
                 Disable the cryptographic extension.
  
!           '+nofp'
                 Disable the floating-point, Advanced SIMD and
                 cryptographic instructions.
  
!           '+sb'
                 Speculation Barrier Instruction.
  
!           '+predres'
                 Execution and Data Prediction Restriction Instructions.
  
!           '+i8mm'
                 8-bit Integer Matrix Multiply instructions.  This also
                 enables Advanced SIMD and floating-point instructions.
  
!           '+bf16'
                 Brain half-precision floating-point instructions.  This
                 also enables Advanced SIMD and floating-point
                 instructions.
  
!      'armv8.5-a'
!           '+fp16'
                 The half-precision floating-point data processing
                 instructions.  This also enables the Advanced SIMD and
                 floating-point instructions as well as the Dot Product
                 extension and the half-precision floating-point fmla
                 extension.
  
!           '+simd'
                 The ARMv8.3-A Advanced SIMD and floating-point
                 instructions as well as the Dot Product extension.
  
!           '+crypto'
                 The cryptographic instructions.  This also enables the
                 Advanced SIMD and floating-point instructions as well as
                 the Dot Product extension.
  
!           '+nocrypto'
                 Disable the cryptographic extension.
  
!           '+nofp'
                 Disable the floating-point, Advanced SIMD and
                 cryptographic instructions.
  
!           '+i8mm'
                 8-bit Integer Matrix Multiply instructions.  This also
                 enables Advanced SIMD and floating-point instructions.
  
!           '+bf16'
                 Brain half-precision floating-point instructions.  This
                 also enables Advanced SIMD and floating-point
                 instructions.
  
!      'armv8.6-a'
!           '+fp16'
                 The half-precision floating-point data processing
                 instructions.  This also enables the Advanced SIMD and
                 floating-point instructions as well as the Dot Product
                 extension and the half-precision floating-point fmla
                 extension.
  
!           '+simd'
                 The ARMv8.3-A Advanced SIMD and floating-point
                 instructions as well as the Dot Product extension.
  
!           '+crypto'
                 The cryptographic instructions.  This also enables the
                 Advanced SIMD and floating-point instructions as well as
                 the Dot Product extension.
  
!           '+nocrypto'
                 Disable the cryptographic extension.
  
!           '+nofp'
                 Disable the floating-point, Advanced SIMD and
                 cryptographic instructions.
  
!           '+i8mm'
                 8-bit Integer Matrix Multiply instructions.  This also
                 enables Advanced SIMD and floating-point instructions.
  
!           '+bf16'
                 Brain half-precision floating-point instructions.  This
                 also enables Advanced SIMD and floating-point
                 instructions.
  
!      'armv7-r'
!           '+fp.sp'
                 The single-precision VFPv3 floating-point instructions.
!                The extension '+vfpv3xd' can be used as an alias for this
                 extension.
  
!           '+fp'
                 The VFPv3 floating-point instructions with 16
                 double-precision registers.  The extension +vfpv3-d16 can
                 be used as an alias for this extension.
  
!           '+vfpv3xd-d16-fp16'
                 The single-precision VFPv3 floating-point instructions
                 with 16 double-precision registers and the half-precision
                 floating-point conversion operations.
  
!           '+vfpv3-d16-fp16'
                 The VFPv3 floating-point instructions with 16
                 double-precision registers and the half-precision
                 floating-point conversion operations.
  
!           '+nofp'
                 Disable the floating-point extension.
  
!           '+idiv'
                 The ARM-state integer division instructions.
  
!           '+noidiv'
                 Disable the ARM-state integer division extension.
  
!      'armv7e-m'
!           '+fp'
                 The single-precision VFPv4 floating-point instructions.
  
!           '+fpv5'
                 The single-precision FPv5 floating-point instructions.
  
!           '+fp.dp'
                 The single- and double-precision FPv5 floating-point
                 instructions.
  
!           '+nofp'
                 Disable the floating-point extensions.
  
!      'armv8.1-m.main'
  
!           '+dsp'
                 The DSP instructions.
  
!           '+mve'
                 The M-Profile Vector Extension (MVE) integer
                 instructions.
  
!           '+mve.fp'
                 The M-Profile Vector Extension (MVE) integer and single
                 precision floating-point instructions.
  
!           '+fp'
                 The single-precision floating-point instructions.
  
!           '+fp.dp'
                 The single- and double-precision floating-point
                 instructions.
  
!           '+nofp'
                 Disable the floating-point extension.
  
!           '+cdecp0, +cdecp1, ... , +cdecp7'
                 Enable the Custom Datapath Extension (CDE) on selected
                 coprocessors according to the numbers given in the
                 options in the range 0 to 7.
  
!           '+pacbti'
                 Enable the Pointer Authentication and Branch Target
                 Identification Extension.
  
!      'armv8-m.main'
!           '+dsp'
                 The DSP instructions.
  
!           '+nodsp'
                 Disable the DSP extension.
  
!           '+fp'
                 The single-precision floating-point instructions.
  
!           '+fp.dp'
                 The single- and double-precision floating-point
                 instructions.
  
!           '+nofp'
                 Disable the floating-point extension.
  
!           '+cdecp0, +cdecp1, ... , +cdecp7'
                 Enable the Custom Datapath Extension (CDE) on selected
                 coprocessors according to the numbers given in the
                 options in the range 0 to 7.
  
!      'armv8-r'
!           '+crc'
                 The Cyclic Redundancy Check (CRC) instructions.
!           '+fp.sp'
                 The single-precision FPv5 floating-point instructions.
!           '+simd'
                 The ARMv8-A Advanced SIMD and floating-point
                 instructions.
!           '+crypto'
                 The cryptographic instructions.
!           '+nocrypto'
                 Disable the cryptographic instructions.
!           '+nofp'
                 Disable the floating-point, Advanced SIMD and
                 cryptographic instructions.
  
!      '-march=native' causes the compiler to auto-detect the architecture
       of the build computer.  At present, this feature is only supported
       on GNU/Linux, and not all architectures are recognized.  If the
       auto-detect is unsuccessful the option has no effect.
  
!      '-march=unset' causes the compiler to ignore any '-march=...'
       options that appear earlier on the command line and behave as if
       the option was never passed.  This is useful to avoid warnings
       about conflicting CPU and architecture options when the two produce
       different architecture specifications.
  
! '-mtune=NAME'
       This option specifies the name of the target ARM processor for
       which GCC should tune the performance of the code.  For some ARM
       implementations better performance can be obtained by using this
!      option.  Permissible names are: 'arm7tdmi', 'arm7tdmi-s',
!      'arm710t', 'arm720t', 'arm740t', 'strongarm', 'strongarm110',
!      'strongarm1100', 'strongarm1110', 'arm8', 'arm810', 'arm9',
!      'arm9e', 'arm920', 'arm920t', 'arm922t', 'arm946e-s', 'arm966e-s',
!      'arm968e-s', 'arm926ej-s', 'arm940t', 'arm9tdmi', 'arm10tdmi',
!      'arm1020t', 'arm1026ej-s', 'arm10e', 'arm1020e', 'arm1022e',
!      'arm1136j-s', 'arm1136jf-s', 'mpcore', 'mpcorenovfp',
!      'arm1156t2-s', 'arm1156t2f-s', 'arm1176jz-s', 'arm1176jzf-s',
!      'generic-armv7-a', 'cortex-a5', 'cortex-a7', 'cortex-a8',
!      'cortex-a9', 'cortex-a12', 'cortex-a15', 'cortex-a17',
!      'cortex-a32', 'cortex-a35', 'cortex-a53', 'cortex-a55',
!      'cortex-a57', 'cortex-a72', 'cortex-a73', 'cortex-a75',
!      'cortex-a76', 'cortex-a76ae', 'cortex-a77', 'cortex-a78',
!      'cortex-a78ae', 'cortex-a78c', 'cortex-a710', 'ares', 'cortex-r4',
!      'cortex-r4f', 'cortex-r5', 'cortex-r7', 'cortex-r8', 'cortex-r52',
!      'cortex-r52plus', 'cortex-m0', 'cortex-m0plus', 'cortex-m1',
!      'cortex-m3', 'cortex-m4', 'cortex-m7', 'cortex-m23', 'cortex-m33',
!      'cortex-m35p', 'cortex-m52', 'cortex-m55', 'cortex-m85',
!      'cortex-x1', 'cortex-x1c', 'cortex-m1.small-multiply',
!      'cortex-m0.small-multiply', 'cortex-m0plus.small-multiply',
!      'exynos-m1', 'marvell-pj4', 'neoverse-n1', 'neoverse-n2',
!      'neoverse-v1', 'xscale', 'iwmmxt', 'iwmmxt2', 'ep9312', 'fa526',
!      'fa626', 'fa606te', 'fa626te', 'fmp626', 'fa726te', 'star-mc1',
!      'xgene1'.
  
       Additionally, this option can specify that GCC should tune the
       performance of the code for a big.LITTLE system.  Permissible names
!      are: 'cortex-a15.cortex-a7', 'cortex-a17.cortex-a7',
!      'cortex-a57.cortex-a53', 'cortex-a72.cortex-a53',
!      'cortex-a72.cortex-a35', 'cortex-a73.cortex-a53',
!      'cortex-a75.cortex-a55', 'cortex-a76.cortex-a55'.
  
!      '-mtune=generic-ARCH' specifies that GCC should tune the
       performance for a blend of processors within architecture ARCH.
       The aim is to generate code that run well on the current most
       popular processors, balancing between optimizations that benefit
--- 22022,22565 ----
       BE8, for older architectures the default is BE32.  BE32 format has
       been deprecated by ARM.
  
! â€˜-march=NAME[+extension...]â€™
       This specifies the name of the target ARM architecture.  GCC uses
       this name to determine what kind of instructions it can emit when
       generating assembly code.  This option can be used in conjunction
!      with or instead of the â€˜-mcpu=â€™ option.
  
!      Permissible names are: â€˜armv4tâ€™, â€˜armv5tâ€™, â€˜armv5teâ€™, â€˜armv6â€™,
!      â€˜armv6jâ€™, â€˜armv6kâ€™, â€˜armv6kzâ€™, â€˜armv6t2â€™, â€˜armv6zâ€™, â€˜armv6zkâ€™,
!      â€˜armv7â€™, â€˜armv7-aâ€™, â€˜armv7veâ€™, â€˜armv8-aâ€™, â€˜armv8.1-aâ€™, â€˜armv8.2-aâ€™,
!      â€˜armv8.3-aâ€™, â€˜armv8.4-aâ€™, â€˜armv8.5-aâ€™, â€˜armv8.6-aâ€™, â€˜armv9-aâ€™,
!      â€˜armv7-râ€™, â€˜armv8-râ€™, â€˜armv6-mâ€™, â€˜armv6s-mâ€™, â€˜armv7-mâ€™, â€˜armv7e-mâ€™,
!      â€˜armv8-m.baseâ€™, â€˜armv8-m.mainâ€™, â€˜armv8.1-m.mainâ€™, â€˜iwmmxtâ€™ and
!      â€˜iwmmxt2â€™.
  
       Additionally, the following architectures, which lack support for
       the Thumb execution state, are recognized but support is
!      deprecated: â€˜armv4â€™.
  
       Many of the architectures support extensions.  These can be added
!      by appending â€˜+EXTENSIONâ€™ to the architecture name.  Extension
       options are processed in order and capabilities accumulate.  An
       extension will also enable any necessary base extensions upon which
!      it depends.  For example, the â€˜+cryptoâ€™ extension will always
!      enable the â€˜+simdâ€™ extension.  The exception to the additive
!      construction is for extensions that are prefixed with â€˜+no...â€™:
       these extensions disable the specified option and any other
       extensions that may depend on the presence of that extension.
  
!      For example, â€˜-march=armv7-a+simd+nofp+vfpv4â€™ is equivalent to
!      writing â€˜-march=armv7-a+vfpv4â€™ since the â€˜+simdâ€™ option is entirely
!      disabled by the â€˜+nofpâ€™ option that follows it.
  
       Most extension names are generically named, but have an effect that
       is dependent upon the architecture to which it is applied.  For
!      example, the â€˜+simdâ€™ option can be applied to both â€˜armv7-aâ€™ and
!      â€˜armv8-aâ€™ architectures, but will enable the original ARMv7-A
!      Advanced SIMD (Neon) extensions for â€˜armv7-aâ€™ and the ARMv8-A
!      variant for â€˜armv8-aâ€™.
  
       The table below lists the supported extensions for each
       architecture.  Architectures not mentioned do not support any
       extensions.
  
!      â€˜armv5teâ€™
!      â€˜armv6â€™
!      â€˜armv6jâ€™
!      â€˜armv6kâ€™
!      â€˜armv6kzâ€™
!      â€˜armv6t2â€™
!      â€˜armv6zâ€™
!      â€˜armv6zkâ€™
!           â€˜+fpâ€™
                 The VFPv2 floating-point instructions.  The extension
!                â€˜+vfpv2â€™ can be used as an alias for this extension.
  
!           â€˜+nofpâ€™
                 Disable the floating-point instructions.
  
!      â€˜armv7â€™
            The common subset of the ARMv7-A, ARMv7-R and ARMv7-M
            architectures.
!           â€˜+fpâ€™
                 The VFPv3 floating-point instructions, with 16
!                double-precision registers.  The extension â€˜+vfpv3-d16â€™
                 can be used as an alias for this extension.  Note that
                 floating-point is not supported by the base ARMv7-M
                 architecture, but is compatible with both the ARMv7-A and
                 ARMv7-R architectures.
  
!           â€˜+nofpâ€™
                 Disable the floating-point instructions.
  
!      â€˜armv7-aâ€™
!           â€˜+mpâ€™
                 The multiprocessing extension.
  
!           â€˜+secâ€™
                 The security extension.
  
!           â€˜+fpâ€™
                 The VFPv3 floating-point instructions, with 16
!                double-precision registers.  The extension â€˜+vfpv3-d16â€™
                 can be used as an alias for this extension.
  
!           â€˜+simdâ€™
                 The Advanced SIMD (Neon) v1 and the VFPv3 floating-point
!                instructions.  The extensions â€˜+neonâ€™ and â€˜+neon-vfpv3â€™
                 can be used as aliases for this extension.
  
!           â€˜+vfpv3â€™
                 The VFPv3 floating-point instructions, with 32
                 double-precision registers.
  
!           â€˜+vfpv3-d16-fp16â€™
                 The VFPv3 floating-point instructions, with 16
                 double-precision registers and the half-precision
                 floating-point conversion operations.
  
!           â€˜+vfpv3-fp16â€™
                 The VFPv3 floating-point instructions, with 32
                 double-precision registers and the half-precision
                 floating-point conversion operations.
  
!           â€˜+vfpv4-d16â€™
                 The VFPv4 floating-point instructions, with 16
                 double-precision registers.
  
!           â€˜+vfpv4â€™
                 The VFPv4 floating-point instructions, with 32
                 double-precision registers.
  
!           â€˜+neon-fp16â€™
                 The Advanced SIMD (Neon) v1 and the VFPv3 floating-point
                 instructions, with the half-precision floating-point
                 conversion operations.
  
!           â€˜+neon-vfpv4â€™
                 The Advanced SIMD (Neon) v2 and the VFPv4 floating-point
                 instructions.
  
!           â€˜+nosimdâ€™
                 Disable the Advanced SIMD instructions (does not disable
                 floating point).
  
!           â€˜+nofpâ€™
                 Disable the floating-point and Advanced SIMD
                 instructions.
  
!      â€˜armv7veâ€™
            The extended version of the ARMv7-A architecture with support
            for virtualization.
!           â€˜+fpâ€™
                 The VFPv4 floating-point instructions, with 16
!                double-precision registers.  The extension â€˜+vfpv4-d16â€™
                 can be used as an alias for this extension.
  
!           â€˜+simdâ€™
                 The Advanced SIMD (Neon) v2 and the VFPv4 floating-point
!                instructions.  The extension â€˜+neon-vfpv4â€™ can be used as
                 an alias for this extension.
  
!           â€˜+vfpv3-d16â€™
                 The VFPv3 floating-point instructions, with 16
                 double-precision registers.
  
!           â€˜+vfpv3â€™
                 The VFPv3 floating-point instructions, with 32
                 double-precision registers.
  
!           â€˜+vfpv3-d16-fp16â€™
                 The VFPv3 floating-point instructions, with 16
                 double-precision registers and the half-precision
                 floating-point conversion operations.
  
!           â€˜+vfpv3-fp16â€™
                 The VFPv3 floating-point instructions, with 32
                 double-precision registers and the half-precision
                 floating-point conversion operations.
  
!           â€˜+vfpv4-d16â€™
                 The VFPv4 floating-point instructions, with 16
                 double-precision registers.
  
!           â€˜+vfpv4â€™
                 The VFPv4 floating-point instructions, with 32
                 double-precision registers.
  
!           â€˜+neonâ€™
                 The Advanced SIMD (Neon) v1 and the VFPv3 floating-point
!                instructions.  The extension â€˜+neon-vfpv3â€™ can be used as
                 an alias for this extension.
  
!           â€˜+neon-fp16â€™
                 The Advanced SIMD (Neon) v1 and the VFPv3 floating-point
                 instructions, with the half-precision floating-point
                 conversion operations.
  
!           â€˜+nosimdâ€™
                 Disable the Advanced SIMD instructions (does not disable
                 floating point).
  
!           â€˜+nofpâ€™
                 Disable the floating-point and Advanced SIMD
                 instructions.
  
!      â€˜armv8-aâ€™
!           â€˜+crcâ€™
                 The Cyclic Redundancy Check (CRC) instructions.
!           â€˜+simdâ€™
                 The ARMv8-A Advanced SIMD and floating-point
                 instructions.
!           â€˜+cryptoâ€™
                 The cryptographic instructions.
!           â€˜+nocryptoâ€™
                 Disable the cryptographic instructions.
!           â€˜+nofpâ€™
                 Disable the floating-point, Advanced SIMD and
                 cryptographic instructions.
!           â€˜+sbâ€™
                 Speculation Barrier Instruction.
!           â€˜+predresâ€™
                 Execution and Data Prediction Restriction Instructions.
  
!      â€˜armv8.1-aâ€™
!           â€˜+simdâ€™
                 The ARMv8.1-A Advanced SIMD and floating-point
                 instructions.
  
!           â€˜+cryptoâ€™
                 The cryptographic instructions.  This also enables the
                 Advanced SIMD and floating-point instructions.
  
!           â€˜+nocryptoâ€™
                 Disable the cryptographic instructions.
  
!           â€˜+nofpâ€™
                 Disable the floating-point, Advanced SIMD and
                 cryptographic instructions.
  
!           â€˜+sbâ€™
                 Speculation Barrier Instruction.
  
!           â€˜+predresâ€™
                 Execution and Data Prediction Restriction Instructions.
  
!      â€˜armv8.2-aâ€™
!      â€˜armv8.3-aâ€™
!           â€˜+fp16â€™
                 The half-precision floating-point data processing
                 instructions.  This also enables the Advanced SIMD and
                 floating-point instructions.
  
!           â€˜+fp16fmlâ€™
                 The half-precision floating-point fmla extension.  This
                 also enables the half-precision floating-point extension
                 and Advanced SIMD and floating-point instructions.
  
!           â€˜+simdâ€™
                 The ARMv8.1-A Advanced SIMD and floating-point
                 instructions.
  
!           â€˜+cryptoâ€™
                 The cryptographic instructions.  This also enables the
                 Advanced SIMD and floating-point instructions.
  
!           â€˜+dotprodâ€™
                 Enable the Dot Product extension.  This also enables
                 Advanced SIMD instructions.
  
!           â€˜+nocryptoâ€™
                 Disable the cryptographic extension.
  
!           â€˜+nofpâ€™
                 Disable the floating-point, Advanced SIMD and
                 cryptographic instructions.
  
!           â€˜+sbâ€™
                 Speculation Barrier Instruction.
  
!           â€˜+predresâ€™
                 Execution and Data Prediction Restriction Instructions.
  
!           â€˜+i8mmâ€™
                 8-bit Integer Matrix Multiply instructions.  This also
                 enables Advanced SIMD and floating-point instructions.
  
!           â€˜+bf16â€™
                 Brain half-precision floating-point instructions.  This
                 also enables Advanced SIMD and floating-point
                 instructions.
  
!      â€˜armv8.4-aâ€™
!           â€˜+fp16â€™
                 The half-precision floating-point data processing
                 instructions.  This also enables the Advanced SIMD and
                 floating-point instructions as well as the Dot Product
                 extension and the half-precision floating-point fmla
                 extension.
  
!           â€˜+simdâ€™
                 The ARMv8.3-A Advanced SIMD and floating-point
                 instructions as well as the Dot Product extension.
  
!           â€˜+cryptoâ€™
                 The cryptographic instructions.  This also enables the
                 Advanced SIMD and floating-point instructions as well as
                 the Dot Product extension.
  
!           â€˜+nocryptoâ€™
                 Disable the cryptographic extension.
  
!           â€˜+nofpâ€™
                 Disable the floating-point, Advanced SIMD and
                 cryptographic instructions.
  
!           â€˜+sbâ€™
                 Speculation Barrier Instruction.
  
!           â€˜+predresâ€™
                 Execution and Data Prediction Restriction Instructions.
  
!           â€˜+i8mmâ€™
                 8-bit Integer Matrix Multiply instructions.  This also
                 enables Advanced SIMD and floating-point instructions.
  
!           â€˜+bf16â€™
                 Brain half-precision floating-point instructions.  This
                 also enables Advanced SIMD and floating-point
                 instructions.
  
!      â€˜armv8.5-aâ€™
!           â€˜+fp16â€™
                 The half-precision floating-point data processing
                 instructions.  This also enables the Advanced SIMD and
                 floating-point instructions as well as the Dot Product
                 extension and the half-precision floating-point fmla
                 extension.
  
!           â€˜+simdâ€™
                 The ARMv8.3-A Advanced SIMD and floating-point
                 instructions as well as the Dot Product extension.
  
!           â€˜+cryptoâ€™
                 The cryptographic instructions.  This also enables the
                 Advanced SIMD and floating-point instructions as well as
                 the Dot Product extension.
  
!           â€˜+nocryptoâ€™
                 Disable the cryptographic extension.
  
!           â€˜+nofpâ€™
                 Disable the floating-point, Advanced SIMD and
                 cryptographic instructions.
  
!           â€˜+i8mmâ€™
                 8-bit Integer Matrix Multiply instructions.  This also
                 enables Advanced SIMD and floating-point instructions.
  
!           â€˜+bf16â€™
                 Brain half-precision floating-point instructions.  This
                 also enables Advanced SIMD and floating-point
                 instructions.
  
!      â€˜armv8.6-aâ€™
!           â€˜+fp16â€™
                 The half-precision floating-point data processing
                 instructions.  This also enables the Advanced SIMD and
                 floating-point instructions as well as the Dot Product
                 extension and the half-precision floating-point fmla
                 extension.
  
!           â€˜+simdâ€™
                 The ARMv8.3-A Advanced SIMD and floating-point
                 instructions as well as the Dot Product extension.
  
!           â€˜+cryptoâ€™
                 The cryptographic instructions.  This also enables the
                 Advanced SIMD and floating-point instructions as well as
                 the Dot Product extension.
  
!           â€˜+nocryptoâ€™
                 Disable the cryptographic extension.
  
!           â€˜+nofpâ€™
                 Disable the floating-point, Advanced SIMD and
                 cryptographic instructions.
  
!           â€˜+i8mmâ€™
                 8-bit Integer Matrix Multiply instructions.  This also
                 enables Advanced SIMD and floating-point instructions.
  
!           â€˜+bf16â€™
                 Brain half-precision floating-point instructions.  This
                 also enables Advanced SIMD and floating-point
                 instructions.
  
!      â€˜armv7-râ€™
!           â€˜+fp.spâ€™
                 The single-precision VFPv3 floating-point instructions.
!                The extension â€˜+vfpv3xdâ€™ can be used as an alias for this
                 extension.
  
!           â€˜+fpâ€™
                 The VFPv3 floating-point instructions with 16
                 double-precision registers.  The extension +vfpv3-d16 can
                 be used as an alias for this extension.
  
!           â€˜+vfpv3xd-d16-fp16â€™
                 The single-precision VFPv3 floating-point instructions
                 with 16 double-precision registers and the half-precision
                 floating-point conversion operations.
  
!           â€˜+vfpv3-d16-fp16â€™
                 The VFPv3 floating-point instructions with 16
                 double-precision registers and the half-precision
                 floating-point conversion operations.
  
!           â€˜+nofpâ€™
                 Disable the floating-point extension.
  
!           â€˜+idivâ€™
                 The ARM-state integer division instructions.
  
!           â€˜+noidivâ€™
                 Disable the ARM-state integer division extension.
  
!      â€˜armv7e-mâ€™
!           â€˜+fpâ€™
                 The single-precision VFPv4 floating-point instructions.
  
!           â€˜+fpv5â€™
                 The single-precision FPv5 floating-point instructions.
  
!           â€˜+fp.dpâ€™
                 The single- and double-precision FPv5 floating-point
                 instructions.
  
!           â€˜+nofpâ€™
                 Disable the floating-point extensions.
  
!      â€˜armv8.1-m.mainâ€™
  
!           â€˜+dspâ€™
                 The DSP instructions.
  
!           â€˜+mveâ€™
                 The M-Profile Vector Extension (MVE) integer
                 instructions.
  
!           â€˜+mve.fpâ€™
                 The M-Profile Vector Extension (MVE) integer and single
                 precision floating-point instructions.
  
!           â€˜+fpâ€™
                 The single-precision floating-point instructions.
  
!           â€˜+fp.dpâ€™
                 The single- and double-precision floating-point
                 instructions.
  
!           â€˜+nofpâ€™
                 Disable the floating-point extension.
  
!           â€˜+cdecp0, +cdecp1, ... , +cdecp7â€™
                 Enable the Custom Datapath Extension (CDE) on selected
                 coprocessors according to the numbers given in the
                 options in the range 0 to 7.
  
!           â€˜+pacbtiâ€™
                 Enable the Pointer Authentication and Branch Target
                 Identification Extension.
  
!      â€˜armv8-m.mainâ€™
!           â€˜+dspâ€™
                 The DSP instructions.
  
!           â€˜+nodspâ€™
                 Disable the DSP extension.
  
!           â€˜+fpâ€™
                 The single-precision floating-point instructions.
  
!           â€˜+fp.dpâ€™
                 The single- and double-precision floating-point
                 instructions.
  
!           â€˜+nofpâ€™
                 Disable the floating-point extension.
  
!           â€˜+cdecp0, +cdecp1, ... , +cdecp7â€™
                 Enable the Custom Datapath Extension (CDE) on selected
                 coprocessors according to the numbers given in the
                 options in the range 0 to 7.
  
!      â€˜armv8-râ€™
!           â€˜+crcâ€™
                 The Cyclic Redundancy Check (CRC) instructions.
!           â€˜+fp.spâ€™
                 The single-precision FPv5 floating-point instructions.
!           â€˜+simdâ€™
                 The ARMv8-A Advanced SIMD and floating-point
                 instructions.
!           â€˜+cryptoâ€™
                 The cryptographic instructions.
!           â€˜+nocryptoâ€™
                 Disable the cryptographic instructions.
!           â€˜+nofpâ€™
                 Disable the floating-point, Advanced SIMD and
                 cryptographic instructions.
  
!      â€˜-march=nativeâ€™ causes the compiler to auto-detect the architecture
       of the build computer.  At present, this feature is only supported
       on GNU/Linux, and not all architectures are recognized.  If the
       auto-detect is unsuccessful the option has no effect.
  
!      â€˜-march=unsetâ€™ causes the compiler to ignore any â€˜-march=...â€™
       options that appear earlier on the command line and behave as if
       the option was never passed.  This is useful to avoid warnings
       about conflicting CPU and architecture options when the two produce
       different architecture specifications.
  
! â€˜-mtune=NAMEâ€™
       This option specifies the name of the target ARM processor for
       which GCC should tune the performance of the code.  For some ARM
       implementations better performance can be obtained by using this
!      option.  Permissible names are: â€˜arm7tdmiâ€™, â€˜arm7tdmi-sâ€™,
!      â€˜arm710tâ€™, â€˜arm720tâ€™, â€˜arm740tâ€™, â€˜strongarmâ€™, â€˜strongarm110â€™,
!      â€˜strongarm1100â€™, â€˜strongarm1110â€™, â€˜arm8â€™, â€˜arm810â€™, â€˜arm9â€™,
!      â€˜arm9eâ€™, â€˜arm920â€™, â€˜arm920tâ€™, â€˜arm922tâ€™, â€˜arm946e-sâ€™, â€˜arm966e-sâ€™,
!      â€˜arm968e-sâ€™, â€˜arm926ej-sâ€™, â€˜arm940tâ€™, â€˜arm9tdmiâ€™, â€˜arm10tdmiâ€™,
!      â€˜arm1020tâ€™, â€˜arm1026ej-sâ€™, â€˜arm10eâ€™, â€˜arm1020eâ€™, â€˜arm1022eâ€™,
!      â€˜arm1136j-sâ€™, â€˜arm1136jf-sâ€™, â€˜mpcoreâ€™, â€˜mpcorenovfpâ€™,
!      â€˜arm1156t2-sâ€™, â€˜arm1156t2f-sâ€™, â€˜arm1176jz-sâ€™, â€˜arm1176jzf-sâ€™,
!      â€˜generic-armv7-aâ€™, â€˜cortex-a5â€™, â€˜cortex-a7â€™, â€˜cortex-a8â€™,
!      â€˜cortex-a9â€™, â€˜cortex-a12â€™, â€˜cortex-a15â€™, â€˜cortex-a17â€™,
!      â€˜cortex-a32â€™, â€˜cortex-a35â€™, â€˜cortex-a53â€™, â€˜cortex-a55â€™,
!      â€˜cortex-a57â€™, â€˜cortex-a72â€™, â€˜cortex-a73â€™, â€˜cortex-a75â€™,
!      â€˜cortex-a76â€™, â€˜cortex-a76aeâ€™, â€˜cortex-a77â€™, â€˜cortex-a78â€™,
!      â€˜cortex-a78aeâ€™, â€˜cortex-a78câ€™, â€˜cortex-a710â€™, â€˜aresâ€™, â€˜cortex-r4â€™,
!      â€˜cortex-r4fâ€™, â€˜cortex-r5â€™, â€˜cortex-r7â€™, â€˜cortex-r8â€™, â€˜cortex-r52â€™,
!      â€˜cortex-r52plusâ€™, â€˜cortex-m0â€™, â€˜cortex-m0plusâ€™, â€˜cortex-m1â€™,
!      â€˜cortex-m3â€™, â€˜cortex-m4â€™, â€˜cortex-m7â€™, â€˜cortex-m23â€™, â€˜cortex-m33â€™,
!      â€˜cortex-m35pâ€™, â€˜cortex-m52â€™, â€˜cortex-m55â€™, â€˜cortex-m85â€™,
!      â€˜cortex-x1â€™, â€˜cortex-x1câ€™, â€˜cortex-m1.small-multiplyâ€™,
!      â€˜cortex-m0.small-multiplyâ€™, â€˜cortex-m0plus.small-multiplyâ€™,
!      â€˜exynos-m1â€™, â€˜marvell-pj4â€™, â€˜neoverse-n1â€™, â€˜neoverse-n2â€™,
!      â€˜neoverse-v1â€™, â€˜xscaleâ€™, â€˜iwmmxtâ€™, â€˜iwmmxt2â€™, â€˜ep9312â€™, â€˜fa526â€™,
!      â€˜fa626â€™, â€˜fa606teâ€™, â€˜fa626teâ€™, â€˜fmp626â€™, â€˜fa726teâ€™, â€˜star-mc1â€™,
!      â€˜xgene1â€™.
  
       Additionally, this option can specify that GCC should tune the
       performance of the code for a big.LITTLE system.  Permissible names
!      are: â€˜cortex-a15.cortex-a7â€™, â€˜cortex-a17.cortex-a7â€™,
!      â€˜cortex-a57.cortex-a53â€™, â€˜cortex-a72.cortex-a53â€™,
!      â€˜cortex-a72.cortex-a35â€™, â€˜cortex-a73.cortex-a53â€™,
!      â€˜cortex-a75.cortex-a55â€™, â€˜cortex-a76.cortex-a55â€™.
  
!      â€˜-mtune=generic-ARCHâ€™ specifies that GCC should tune the
       performance for a blend of processors within architecture ARCH.
       The aim is to generate code that run well on the current most
       popular processors, balancing between optimizations that benefit
*************** These '-m' options are defined for the A
*** 22563,22582 ****
       CPUs.  The effects of this option may change in future GCC versions
       as CPU models come and go.
  
!      '-mtune' permits the same extension options as '-mcpu', but the
       extension options do not affect the tuning of the generated code.
  
!      '-mtune=native' causes the compiler to auto-detect the CPU of the
       build computer.  At present, this feature is only supported on
       GNU/Linux, and not all architectures are recognized.  If the
       auto-detect is unsuccessful the option has no effect.
  
! '-mcpu=NAME[+extension...]'
       This specifies the name of the target ARM processor.  GCC uses this
       name to derive the name of the target ARM architecture (as if
!      specified by '-march') and the ARM processor type for which to tune
!      for performance (as if specified by '-mtune').  Where this option
!      is used in conjunction with '-march' or '-mtune', those options
       take precedence over the appropriate part of this option.
  
       Many of the supported CPUs implement optional architectural
--- 22567,22586 ----
       CPUs.  The effects of this option may change in future GCC versions
       as CPU models come and go.
  
!      â€˜-mtuneâ€™ permits the same extension options as â€˜-mcpuâ€™, but the
       extension options do not affect the tuning of the generated code.
  
!      â€˜-mtune=nativeâ€™ causes the compiler to auto-detect the CPU of the
       build computer.  At present, this feature is only supported on
       GNU/Linux, and not all architectures are recognized.  If the
       auto-detect is unsuccessful the option has no effect.
  
! â€˜-mcpu=NAME[+extension...]â€™
       This specifies the name of the target ARM processor.  GCC uses this
       name to derive the name of the target ARM architecture (as if
!      specified by â€˜-marchâ€™) and the ARM processor type for which to tune
!      for performance (as if specified by â€˜-mtuneâ€™).  Where this option
!      is used in conjunction with â€˜-marchâ€™ or â€˜-mtuneâ€™, those options
       take precedence over the appropriate part of this option.
  
       Many of the supported CPUs implement optional architectural
*************** These '-m' options are defined for the A
*** 22585,22720 ****
       extension exist, then the extension syntax can be used to disable
       those extensions that have been omitted.  For floating-point and
       Advanced SIMD (Neon) instructions, the settings of the options
!      '-mfloat-abi' and '-mfpu' must also be considered: floating-point
!      and Advanced SIMD instructions will only be used if '-mfloat-abi'
!      is not set to 'soft'; and any setting of '-mfpu' other than 'auto'
       will override the available floating-point and SIMD extension
       instructions.
  
!      For example, 'cortex-a9' can be found in three major
       configurations: integer only, with just a floating-point unit or
       with floating-point and Advanced SIMD. The default is to enable all
!      the instructions, but the extensions '+nosimd' and '+nofp' can be
       used to disable just the SIMD or both the SIMD and floating-point
       instructions respectively.
  
       Permissible names for this option are the same as those for
!      '-mtune'.
  
       The following extension options are common to the listed CPUs:
  
!      '+nodsp'
!           Disable the DSP instructions on 'cortex-m33', 'cortex-m35p',
!           'cortex-m52', 'cortex-m55' and 'cortex-m85'.  Also disable the
            M-Profile Vector Extension (MVE) integer and single precision
!           floating-point instructions on 'cortex-m52', 'cortex-m55' and
!           'cortex-m85'.
  
!      '+nopacbti'
            Disable the Pointer Authentication and Branch Target
!           Identification Extension on 'cortex-m52' and 'cortex-m85'.
  
!      '+nomve'
            Disable the M-Profile Vector Extension (MVE) integer and
!           single precision floating-point instructions on 'cortex-m52',
!           'cortex-m55' and 'cortex-m85'.
  
!      '+nomve.fp'
            Disable the M-Profile Vector Extension (MVE) single precision
!           floating-point instructions on 'cortex-m52', 'cortex-m55' and
!           'cortex-m85'.
  
!      '+cdecp0, +cdecp1, ... , +cdecp7'
            Enable the Custom Datapath Extension (CDE) on selected
            coprocessors according to the numbers given in the options in
!           the range 0 to 7 on 'cortex-m52', 'cortex-m55' and 'star-mc1'.
  
!      '+nofp'
!           Disables the floating-point instructions on 'arm9e',
!           'arm946e-s', 'arm966e-s', 'arm968e-s', 'arm10e', 'arm1020e',
!           'arm1022e', 'arm926ej-s', 'arm1026ej-s', 'cortex-r5',
!           'cortex-r7', 'cortex-r8', 'cortex-m4', 'cortex-m7',
!           'cortex-m33', 'cortex-m35p', 'cortex-m52', 'cortex-m55' and
!           'cortex-m85'.  Disables the floating-point and SIMD
!           instructions on 'generic-armv7-a', 'cortex-a5', 'cortex-a7',
!           'cortex-a8', 'cortex-a9', 'cortex-a12', 'cortex-a15',
!           'cortex-a17', 'cortex-a15.cortex-a7', 'cortex-a17.cortex-a7',
!           'cortex-a32', 'cortex-a35', 'cortex-a53' and 'cortex-a55'.
  
!      '+nofp.dp'
            Disables the double-precision component of the floating-point
!           instructions on 'cortex-r5', 'cortex-r7', 'cortex-r8',
!           'cortex-r52', 'cortex-r52plus' and 'cortex-m7'.
  
!      '+nosimd'
            Disables the SIMD (but not floating-point) instructions on
!           'generic-armv7-a', 'cortex-a5', 'cortex-a7' and 'cortex-a9'.
  
!      '+crypto'
!           Enables the cryptographic instructions on 'cortex-a32',
!           'cortex-a35', 'cortex-a53', 'cortex-a55', 'cortex-a57',
!           'cortex-a72', 'cortex-a73', 'cortex-a75', 'exynos-m1',
!           'xgene1', 'cortex-a57.cortex-a53', 'cortex-a72.cortex-a53',
!           'cortex-a73.cortex-a35', 'cortex-a73.cortex-a53' and
!           'cortex-a75.cortex-a55'.
  
!      Additionally the 'generic-armv7-a' pseudo target defaults to VFPv3
       with 16 double-precision registers.  It supports the following
!      extension options: 'mp', 'sec', 'vfpv3-d16', 'vfpv3',
!      'vfpv3-d16-fp16', 'vfpv3-fp16', 'vfpv4-d16', 'vfpv4', 'neon',
!      'neon-vfpv3', 'neon-fp16', 'neon-vfpv4'.  The meanings are the same
!      as for the extensions to '-march=armv7-a'.
  
!      '-mcpu=generic-ARCH' is also permissible, and is equivalent to
!      '-march=ARCH -mtune=generic-ARCH'.  See '-mtune' for more
       information.
  
!      '-mcpu=native' causes the compiler to auto-detect the CPU of the
       build computer.  At present, this feature is only supported on
       GNU/Linux, and not all architectures are recognized.  If the
       auto-detect is unsuccessful the option has no effect.
  
!      '-mcpu=unset' causes the compiler to ignore any '-mcpu=...' options
       that appear earlier on the command line and behave as if the option
       was never passed.  This is useful to avoid warnings about
       conflicting CPU and architecture options when the two produce
       different architecture specifications.
  
! '-mfpu=NAME'
       This specifies what floating-point hardware (or hardware emulation)
!      is available on the target.  Permissible names are: 'auto',
!      'vfpv2', 'vfpv3', 'vfpv3-fp16', 'vfpv3-d16', 'vfpv3-d16-fp16',
!      'vfpv3xd', 'vfpv3xd-fp16', 'neon-vfpv3', 'neon-fp16', 'vfpv4',
!      'vfpv4-d16', 'fpv4-sp-d16', 'neon-vfpv4', 'fpv5-d16',
!      'fpv5-sp-d16', 'fp-armv8', 'neon-fp-armv8' and
!      'crypto-neon-fp-armv8'.  Note that 'neon' is an alias for
!      'neon-vfpv3' and 'vfp' is an alias for 'vfpv2'.
  
!      The setting 'auto' is the default and is special.  It causes the
       compiler to select the floating-point and Advanced SIMD
!      instructions based on the settings of '-mcpu' and '-march'.
  
       If the selected floating-point hardware includes the NEON extension
!      (e.g. '-mfpu=neon'), note that floating-point operations are not
       generated by GCC's auto-vectorization pass unless
!      '-funsafe-math-optimizations' is also specified.  This is because
       NEON hardware does not fully implement the IEEE 754 standard for
       floating-point arithmetic (in particular denormal values are
       treated as zero), so the use of NEON instructions may lead to a
       loss of precision.
  
       You can also set the fpu name at function level by using the
!      'target("fpu=")' function attributes (*note ARM Function
       Attributes::) or pragmas (*note Function Specific Option
       Pragmas::).
  
! '-mfp16-format=NAME'
!      Specify the format of the '__fp16' half-precision floating-point
!      type.  Permissible names are 'none', 'ieee', and 'alternative'; the
!      default is 'none', in which case the '__fp16' type is not defined.
       *Note Half-Precision::, for more information.
  
! '-mstructure-size-boundary=N'
       The sizes of all structures and unions are rounded up to a multiple
       of the number of bits set by this option.  Permissible values are
       8, 32 and 64.  The default value varies for different toolchains.
--- 22589,22724 ----
       extension exist, then the extension syntax can be used to disable
       those extensions that have been omitted.  For floating-point and
       Advanced SIMD (Neon) instructions, the settings of the options
!      â€˜-mfloat-abiâ€™ and â€˜-mfpuâ€™ must also be considered: floating-point
!      and Advanced SIMD instructions will only be used if â€˜-mfloat-abiâ€™
!      is not set to â€˜softâ€™; and any setting of â€˜-mfpuâ€™ other than â€˜autoâ€™
       will override the available floating-point and SIMD extension
       instructions.
  
!      For example, â€˜cortex-a9â€™ can be found in three major
       configurations: integer only, with just a floating-point unit or
       with floating-point and Advanced SIMD. The default is to enable all
!      the instructions, but the extensions â€˜+nosimdâ€™ and â€˜+nofpâ€™ can be
       used to disable just the SIMD or both the SIMD and floating-point
       instructions respectively.
  
       Permissible names for this option are the same as those for
!      â€˜-mtuneâ€™.
  
       The following extension options are common to the listed CPUs:
  
!      â€˜+nodspâ€™
!           Disable the DSP instructions on â€˜cortex-m33â€™, â€˜cortex-m35pâ€™,
!           â€˜cortex-m52â€™, â€˜cortex-m55â€™ and â€˜cortex-m85â€™.  Also disable the
            M-Profile Vector Extension (MVE) integer and single precision
!           floating-point instructions on â€˜cortex-m52â€™, â€˜cortex-m55â€™ and
!           â€˜cortex-m85â€™.
  
!      â€˜+nopacbtiâ€™
            Disable the Pointer Authentication and Branch Target
!           Identification Extension on â€˜cortex-m52â€™ and â€˜cortex-m85â€™.
  
!      â€˜+nomveâ€™
            Disable the M-Profile Vector Extension (MVE) integer and
!           single precision floating-point instructions on â€˜cortex-m52â€™,
!           â€˜cortex-m55â€™ and â€˜cortex-m85â€™.
  
!      â€˜+nomve.fpâ€™
            Disable the M-Profile Vector Extension (MVE) single precision
!           floating-point instructions on â€˜cortex-m52â€™, â€˜cortex-m55â€™ and
!           â€˜cortex-m85â€™.
  
!      â€˜+cdecp0, +cdecp1, ... , +cdecp7â€™
            Enable the Custom Datapath Extension (CDE) on selected
            coprocessors according to the numbers given in the options in
!           the range 0 to 7 on â€˜cortex-m52â€™, â€˜cortex-m55â€™ and â€˜star-mc1â€™.
  
!      â€˜+nofpâ€™
!           Disables the floating-point instructions on â€˜arm9eâ€™,
!           â€˜arm946e-sâ€™, â€˜arm966e-sâ€™, â€˜arm968e-sâ€™, â€˜arm10eâ€™, â€˜arm1020eâ€™,
!           â€˜arm1022eâ€™, â€˜arm926ej-sâ€™, â€˜arm1026ej-sâ€™, â€˜cortex-r5â€™,
!           â€˜cortex-r7â€™, â€˜cortex-r8â€™, â€˜cortex-m4â€™, â€˜cortex-m7â€™,
!           â€˜cortex-m33â€™, â€˜cortex-m35pâ€™, â€˜cortex-m52â€™, â€˜cortex-m55â€™ and
!           â€˜cortex-m85â€™.  Disables the floating-point and SIMD
!           instructions on â€˜generic-armv7-aâ€™, â€˜cortex-a5â€™, â€˜cortex-a7â€™,
!           â€˜cortex-a8â€™, â€˜cortex-a9â€™, â€˜cortex-a12â€™, â€˜cortex-a15â€™,
!           â€˜cortex-a17â€™, â€˜cortex-a15.cortex-a7â€™, â€˜cortex-a17.cortex-a7â€™,
!           â€˜cortex-a32â€™, â€˜cortex-a35â€™, â€˜cortex-a53â€™ and â€˜cortex-a55â€™.
  
!      â€˜+nofp.dpâ€™
            Disables the double-precision component of the floating-point
!           instructions on â€˜cortex-r5â€™, â€˜cortex-r7â€™, â€˜cortex-r8â€™,
!           â€˜cortex-r52â€™, â€˜cortex-r52plusâ€™ and â€˜cortex-m7â€™.
  
!      â€˜+nosimdâ€™
            Disables the SIMD (but not floating-point) instructions on
!           â€˜generic-armv7-aâ€™, â€˜cortex-a5â€™, â€˜cortex-a7â€™ and â€˜cortex-a9â€™.
  
!      â€˜+cryptoâ€™
!           Enables the cryptographic instructions on â€˜cortex-a32â€™,
!           â€˜cortex-a35â€™, â€˜cortex-a53â€™, â€˜cortex-a55â€™, â€˜cortex-a57â€™,
!           â€˜cortex-a72â€™, â€˜cortex-a73â€™, â€˜cortex-a75â€™, â€˜exynos-m1â€™,
!           â€˜xgene1â€™, â€˜cortex-a57.cortex-a53â€™, â€˜cortex-a72.cortex-a53â€™,
!           â€˜cortex-a73.cortex-a35â€™, â€˜cortex-a73.cortex-a53â€™ and
!           â€˜cortex-a75.cortex-a55â€™.
  
!      Additionally the â€˜generic-armv7-aâ€™ pseudo target defaults to VFPv3
       with 16 double-precision registers.  It supports the following
!      extension options: â€˜mpâ€™, â€˜secâ€™, â€˜vfpv3-d16â€™, â€˜vfpv3â€™,
!      â€˜vfpv3-d16-fp16â€™, â€˜vfpv3-fp16â€™, â€˜vfpv4-d16â€™, â€˜vfpv4â€™, â€˜neonâ€™,
!      â€˜neon-vfpv3â€™, â€˜neon-fp16â€™, â€˜neon-vfpv4â€™.  The meanings are the same
!      as for the extensions to â€˜-march=armv7-aâ€™.
  
!      â€˜-mcpu=generic-ARCHâ€™ is also permissible, and is equivalent to
!      â€˜-march=ARCH -mtune=generic-ARCHâ€™.  See â€˜-mtuneâ€™ for more
       information.
  
!      â€˜-mcpu=nativeâ€™ causes the compiler to auto-detect the CPU of the
       build computer.  At present, this feature is only supported on
       GNU/Linux, and not all architectures are recognized.  If the
       auto-detect is unsuccessful the option has no effect.
  
!      â€˜-mcpu=unsetâ€™ causes the compiler to ignore any â€˜-mcpu=...â€™ options
       that appear earlier on the command line and behave as if the option
       was never passed.  This is useful to avoid warnings about
       conflicting CPU and architecture options when the two produce
       different architecture specifications.
  
! â€˜-mfpu=NAMEâ€™
       This specifies what floating-point hardware (or hardware emulation)
!      is available on the target.  Permissible names are: â€˜autoâ€™,
!      â€˜vfpv2â€™, â€˜vfpv3â€™, â€˜vfpv3-fp16â€™, â€˜vfpv3-d16â€™, â€˜vfpv3-d16-fp16â€™,
!      â€˜vfpv3xdâ€™, â€˜vfpv3xd-fp16â€™, â€˜neon-vfpv3â€™, â€˜neon-fp16â€™, â€˜vfpv4â€™,
!      â€˜vfpv4-d16â€™, â€˜fpv4-sp-d16â€™, â€˜neon-vfpv4â€™, â€˜fpv5-d16â€™,
!      â€˜fpv5-sp-d16â€™, â€˜fp-armv8â€™, â€˜neon-fp-armv8â€™ and
!      â€˜crypto-neon-fp-armv8â€™.  Note that â€˜neonâ€™ is an alias for
!      â€˜neon-vfpv3â€™ and â€˜vfpâ€™ is an alias for â€˜vfpv2â€™.
  
!      The setting â€˜autoâ€™ is the default and is special.  It causes the
       compiler to select the floating-point and Advanced SIMD
!      instructions based on the settings of â€˜-mcpuâ€™ and â€˜-marchâ€™.
  
       If the selected floating-point hardware includes the NEON extension
!      (e.g. â€˜-mfpu=neonâ€™), note that floating-point operations are not
       generated by GCC's auto-vectorization pass unless
!      â€˜-funsafe-math-optimizationsâ€™ is also specified.  This is because
       NEON hardware does not fully implement the IEEE 754 standard for
       floating-point arithmetic (in particular denormal values are
       treated as zero), so the use of NEON instructions may lead to a
       loss of precision.
  
       You can also set the fpu name at function level by using the
!      â€˜target("fpu=")â€™ function attributes (*note ARM Function
       Attributes::) or pragmas (*note Function Specific Option
       Pragmas::).
  
! â€˜-mfp16-format=NAMEâ€™
!      Specify the format of the â€˜__fp16â€™ half-precision floating-point
!      type.  Permissible names are â€˜noneâ€™, â€˜ieeeâ€™, and â€˜alternativeâ€™; the
!      default is â€˜noneâ€™, in which case the â€˜__fp16â€™ type is not defined.
       *Note Half-Precision::, for more information.
  
! â€˜-mstructure-size-boundary=Nâ€™
       The sizes of all structures and unions are rounded up to a multiple
       of the number of bits set by this option.  Permissible values are
       8, 32 and 64.  The default value varies for different toolchains.
*************** These '-m' options are defined for the A
*** 22730,22741 ****
  
       This option is deprecated.
  
! '-mabort-on-noreturn'
!      Generate a call to the function 'abort' at the end of a 'noreturn'
       function.  It is executed if the function tries to return.
  
! '-mlong-calls'
! '-mno-long-calls'
       Tells the compiler to perform function calls by first loading the
       address of the function into a register and then performing a
       subroutine call on this register.  This switch is needed if the
--- 22734,22745 ----
  
       This option is deprecated.
  
! â€˜-mabort-on-noreturnâ€™
!      Generate a call to the function â€˜abortâ€™ at the end of a â€˜noreturnâ€™
       function.  It is executed if the function tries to return.
  
! â€˜-mlong-callsâ€™
! â€˜-mno-long-callsâ€™
       Tells the compiler to perform function calls by first loading the
       address of the function into a register and then performing a
       subroutine call on this register.  This switch is needed if the
*************** These '-m' options are defined for the A
*** 22744,22786 ****
  
       Even if this switch is enabled, not all function calls are turned
       into long calls.  The heuristic is that static functions, functions
!      that have the 'short_call' attribute, functions that are inside the
!      scope of a '#pragma no_long_calls' directive, and functions whose
       definitions have already been compiled within the current
       compilation unit are not turned into long calls.  The exceptions to
       this rule are that weak function definitions, functions with the
!      'long_call' attribute or the 'section' attribute, and functions
!      that are within the scope of a '#pragma long_calls' directive are
       always turned into long calls.
  
       This feature is not enabled by default.  Specifying
!      '-mno-long-calls' restores the default behavior, as does placing
!      the function calls within the scope of a '#pragma long_calls_off'
       directive.  Note these switches have no effect on how the compiler
       generates code to handle function calls via function pointers.
  
! '-msingle-pic-base'
       Treat the register used for PIC addressing as read-only, rather
       than loading it in the prologue for each function.  The runtime
       system is responsible for initializing this register with an
       appropriate value before execution begins.
  
! '-mpic-register=REG'
       Specify the register to be used for PIC addressing.  For standard
       PIC base case, the default is any suitable register determined by
!      compiler.  For single PIC base case, the default is 'R9' if target
       is EABI based or stack-checking is enabled, otherwise the default
!      is 'R10'.
  
! '-mpic-data-is-text-relative'
       Assume that the displacement between the text and data segments is
       fixed at static link time.  This permits using PC-relative
       addressing operations to access data known to be in the data
       segment.  For non-VxWorks RTP targets, this option is enabled by
       default.  When disabled on such targets, it will enable
!      '-msingle-pic-base' by default.
  
! '-mpoke-function-name'
       Write the name of each function into the text section, directly
       preceding the function prologue.  The generated code is similar to
       this:
--- 22748,22790 ----
  
       Even if this switch is enabled, not all function calls are turned
       into long calls.  The heuristic is that static functions, functions
!      that have the â€˜short_callâ€™ attribute, functions that are inside the
!      scope of a â€˜#pragma no_long_callsâ€™ directive, and functions whose
       definitions have already been compiled within the current
       compilation unit are not turned into long calls.  The exceptions to
       this rule are that weak function definitions, functions with the
!      â€˜long_callâ€™ attribute or the â€˜sectionâ€™ attribute, and functions
!      that are within the scope of a â€˜#pragma long_callsâ€™ directive are
       always turned into long calls.
  
       This feature is not enabled by default.  Specifying
!      â€˜-mno-long-callsâ€™ restores the default behavior, as does placing
!      the function calls within the scope of a â€˜#pragma long_calls_offâ€™
       directive.  Note these switches have no effect on how the compiler
       generates code to handle function calls via function pointers.
  
! â€˜-msingle-pic-baseâ€™
       Treat the register used for PIC addressing as read-only, rather
       than loading it in the prologue for each function.  The runtime
       system is responsible for initializing this register with an
       appropriate value before execution begins.
  
! â€˜-mpic-register=REGâ€™
       Specify the register to be used for PIC addressing.  For standard
       PIC base case, the default is any suitable register determined by
!      compiler.  For single PIC base case, the default is â€˜R9â€™ if target
       is EABI based or stack-checking is enabled, otherwise the default
!      is â€˜R10â€™.
  
! â€˜-mpic-data-is-text-relativeâ€™
       Assume that the displacement between the text and data segments is
       fixed at static link time.  This permits using PC-relative
       addressing operations to access data known to be in the data
       segment.  For non-VxWorks RTP targets, this option is enabled by
       default.  When disabled on such targets, it will enable
!      â€˜-msingle-pic-baseâ€™ by default.
  
! â€˜-mpoke-function-nameâ€™
       Write the name of each function into the text section, directly
       preceding the function prologue.  The generated code is similar to
       this:
*************** These '-m' options are defined for the A
*** 22796,22844 ****
                     sub     fp, ip, #4
  
       When performing a stack backtrace, code can inspect the value of
!      'pc' stored at 'fp + 0'.  If the trace function then looks at
!      location 'pc - 12' and the top 8 bits are set, then we know that
       there is a function name embedded immediately preceding this
!      location and has length '((pc[-3]) & 0xff000000)'.
  
! '-mthumb'
! '-marm'
  
       Select between generating code that executes in ARM and Thumb
       states.  The default for most configurations is to generate code
       that executes in ARM state, but the default can be changed by
!      configuring GCC with the '--with-mode='STATE configure option.
  
       You can also override the ARM and Thumb mode for each function by
!      using the 'target("thumb")' and 'target("arm")' function attributes
       (*note ARM Function Attributes::) or pragmas (*note Function
       Specific Option Pragmas::).
  
! '-mflip-thumb'
       Switch ARM/Thumb modes on alternating functions.  This option is
       provided for regression testing of mixed Thumb/ARM code generation,
       and is not intended for ordinary use in compiling code.
  
! '-mtpcs-frame'
       Generate a stack frame that is compliant with the Thumb Procedure
       Call Standard for all non-leaf functions.  (A leaf function is one
       that does not call any other functions.)  The default is
!      '-mno-tpcs-frame'.
  
! '-mtpcs-leaf-frame'
       Generate a stack frame that is compliant with the Thumb Procedure
       Call Standard for all leaf functions.  (A leaf function is one that
       does not call any other functions.)  The default is
!      '-mno-apcs-leaf-frame'.
  
! '-mcallee-super-interworking'
       Gives all externally visible functions in the file being compiled
       an ARM instruction set header which switches to Thumb mode before
       executing the rest of the function.  This allows these functions to
       be called from non-interworking code.  This option is not valid in
       AAPCS configurations because interworking is enabled by default.
  
! '-mcaller-super-interworking'
       Allows calls via function pointers (including virtual functions) to
       execute correctly regardless of whether the target code has been
       compiled for interworking or not.  There is a small overhead in the
--- 22800,22848 ----
                     sub     fp, ip, #4
  
       When performing a stack backtrace, code can inspect the value of
!      â€˜pcâ€™ stored at â€˜fp + 0â€™.  If the trace function then looks at
!      location â€˜pc - 12â€™ and the top 8 bits are set, then we know that
       there is a function name embedded immediately preceding this
!      location and has length â€˜((pc[-3]) & 0xff000000)â€™.
  
! â€˜-mthumbâ€™
! â€˜-marmâ€™
  
       Select between generating code that executes in ARM and Thumb
       states.  The default for most configurations is to generate code
       that executes in ARM state, but the default can be changed by
!      configuring GCC with the â€˜--with-mode=â€™STATE configure option.
  
       You can also override the ARM and Thumb mode for each function by
!      using the â€˜target("thumb")â€™ and â€˜target("arm")â€™ function attributes
       (*note ARM Function Attributes::) or pragmas (*note Function
       Specific Option Pragmas::).
  
! â€˜-mflip-thumbâ€™
       Switch ARM/Thumb modes on alternating functions.  This option is
       provided for regression testing of mixed Thumb/ARM code generation,
       and is not intended for ordinary use in compiling code.
  
! â€˜-mtpcs-frameâ€™
       Generate a stack frame that is compliant with the Thumb Procedure
       Call Standard for all non-leaf functions.  (A leaf function is one
       that does not call any other functions.)  The default is
!      â€˜-mno-tpcs-frameâ€™.
  
! â€˜-mtpcs-leaf-frameâ€™
       Generate a stack frame that is compliant with the Thumb Procedure
       Call Standard for all leaf functions.  (A leaf function is one that
       does not call any other functions.)  The default is
!      â€˜-mno-apcs-leaf-frameâ€™.
  
! â€˜-mcallee-super-interworkingâ€™
       Gives all externally visible functions in the file being compiled
       an ARM instruction set header which switches to Thumb mode before
       executing the rest of the function.  This allows these functions to
       be called from non-interworking code.  This option is not valid in
       AAPCS configurations because interworking is enabled by default.
  
! â€˜-mcaller-super-interworkingâ€™
       Allows calls via function pointers (including virtual functions) to
       execute correctly regardless of whether the target code has been
       compiled for interworking or not.  There is a small overhead in the
*************** These '-m' options are defined for the A
*** 22846,22897 ****
       This option is not valid in AAPCS configurations because
       interworking is enabled by default.
  
! '-mtp=NAME'
       Specify the access model for the thread local storage pointer.  The
!      model 'soft' generates calls to '__aeabi_read_tp'.  Other accepted
!      models are 'tpidrurw', 'tpidruro' and 'tpidrprw' which fetch the
       thread pointer from the corresponding system register directly
       (supported from the arm6k architecture and later).  These system
       registers are accessed through the CP15 co-processor interface and
!      the argument 'cp15' is also accepted as a convenience alias of
!      'tpidruro'.  The argument 'auto' uses the best available method for
!      the selected processor.  The default setting is 'auto'.
  
! '-mtls-dialect=DIALECT'
       Specify the dialect to use for accessing thread local storage.  Two
!      DIALECTs are supported--'gnu' and 'gnu2'.  The 'gnu' dialect
       selects the original GNU scheme for supporting local and global
!      dynamic TLS models.  The 'gnu2' dialect selects the GNU descriptor
       scheme, which provides better performance for shared libraries.
       The GNU descriptor scheme is compatible with the original scheme,
       but does require new assembler, linker and library support.
       Initial and local exec TLS models are unaffected by this option and
       always use the original scheme.
  
! '-mword-relocations'
       Only generate absolute relocations on word-sized values (i.e.
       R_ARM_ABS32).  This is enabled by default on targets (uClinux,
       SymbianOS) where the runtime loader imposes this restriction, and
!      when '-fpic' or '-fPIC' is specified.  This option conflicts with
!      '-mslow-flash-data'.
  
! '-mfix-cortex-m3-ldrd'
!      Some Cortex-M3 cores can cause data corruption when 'ldrd'
       instructions with overlapping destination and base registers are
       used.  This option avoids generating these instructions.  This
!      option is enabled by default when '-mcpu=cortex-m3' is specified.
  
! '-mfix-cortex-a57-aes-1742098'
! '-mno-fix-cortex-a57-aes-1742098'
! '-mfix-cortex-a72-aes-1655431'
! '-mno-fix-cortex-a72-aes-1655431'
       Enable (disable) mitigation for an erratum on Cortex-A57 and
       Cortex-A72 that affects the AES cryptographic instructions.  This
!      option is enabled by default when either '-mcpu=cortex-a57' or
!      '-mcpu=cortex-a72' is specified.
  
! '-munaligned-access'
! '-mno-unaligned-access'
       Enables (or disables) reading and writing of 16- and 32- bit values
       from addresses that are not 16- or 32- bit aligned.  By default
       unaligned access is disabled for all pre-ARMv6, all ARMv6-M and for
--- 22850,22901 ----
       This option is not valid in AAPCS configurations because
       interworking is enabled by default.
  
! â€˜-mtp=NAMEâ€™
       Specify the access model for the thread local storage pointer.  The
!      model â€˜softâ€™ generates calls to â€˜__aeabi_read_tpâ€™.  Other accepted
!      models are â€˜tpidrurwâ€™, â€˜tpidruroâ€™ and â€˜tpidrprwâ€™ which fetch the
       thread pointer from the corresponding system register directly
       (supported from the arm6k architecture and later).  These system
       registers are accessed through the CP15 co-processor interface and
!      the argument â€˜cp15â€™ is also accepted as a convenience alias of
!      â€˜tpidruroâ€™.  The argument â€˜autoâ€™ uses the best available method for
!      the selected processor.  The default setting is â€˜autoâ€™.
  
! â€˜-mtls-dialect=DIALECTâ€™
       Specify the dialect to use for accessing thread local storage.  Two
!      DIALECTs are supported--â€˜gnuâ€™ and â€˜gnu2â€™.  The â€˜gnuâ€™ dialect
       selects the original GNU scheme for supporting local and global
!      dynamic TLS models.  The â€˜gnu2â€™ dialect selects the GNU descriptor
       scheme, which provides better performance for shared libraries.
       The GNU descriptor scheme is compatible with the original scheme,
       but does require new assembler, linker and library support.
       Initial and local exec TLS models are unaffected by this option and
       always use the original scheme.
  
! â€˜-mword-relocationsâ€™
       Only generate absolute relocations on word-sized values (i.e.
       R_ARM_ABS32).  This is enabled by default on targets (uClinux,
       SymbianOS) where the runtime loader imposes this restriction, and
!      when â€˜-fpicâ€™ or â€˜-fPICâ€™ is specified.  This option conflicts with
!      â€˜-mslow-flash-dataâ€™.
  
! â€˜-mfix-cortex-m3-ldrdâ€™
!      Some Cortex-M3 cores can cause data corruption when â€˜ldrdâ€™
       instructions with overlapping destination and base registers are
       used.  This option avoids generating these instructions.  This
!      option is enabled by default when â€˜-mcpu=cortex-m3â€™ is specified.
  
! â€˜-mfix-cortex-a57-aes-1742098â€™
! â€˜-mno-fix-cortex-a57-aes-1742098â€™
! â€˜-mfix-cortex-a72-aes-1655431â€™
! â€˜-mno-fix-cortex-a72-aes-1655431â€™
       Enable (disable) mitigation for an erratum on Cortex-A57 and
       Cortex-A72 that affects the AES cryptographic instructions.  This
!      option is enabled by default when either â€˜-mcpu=cortex-a57â€™ or
!      â€˜-mcpu=cortex-a72â€™ is specified.
  
! â€˜-munaligned-accessâ€™
! â€˜-mno-unaligned-accessâ€™
       Enables (or disables) reading and writing of 16- and 32- bit values
       from addresses that are not 16- or 32- bit aligned.  By default
       unaligned access is disabled for all pre-ARMv6, all ARMv6-M and for
*************** These '-m' options are defined for the A
*** 22899,22976 ****
       architectures.  If unaligned access is not enabled then words in
       packed data structures are accessed a byte at a time.
  
!      The ARM attribute 'Tag_CPU_unaligned_access' is set in the
       generated object file to either true or false, depending upon the
       setting of this option.  If unaligned access is enabled then the
!      preprocessor symbol '__ARM_FEATURE_UNALIGNED' is also defined.
  
! '-mneon-for-64bits'
       This option is deprecated and has no effect.
  
! '-mslow-flash-data'
       Assume loading data from flash is slower than fetching instruction.
       Therefore literal load is minimized for better performance.  This
       option is only supported when compiling for ARMv7 M-profile and off
!      by default.  It conflicts with '-mword-relocations'.
  
! '-masm-syntax-unified'
       Assume inline assembler is using unified asm syntax.  The default
       is currently off which implies divided syntax.  This option has no
       impact on Thumb2.  However, this may change in future releases of
       GCC. Divided syntax should be considered deprecated.
  
! '-mrestrict-it'
       Restricts generation of IT blocks to conform to the rules of
       ARMv8-A. IT blocks can only contain a single 16-bit instruction
       from a select set of instructions.  This option is on by default
       for ARMv8-A Thumb mode.
  
! '-mprint-tune-info'
       Print CPU tuning information as comment in assembler file.  This is
       an option used only for regression testing of the compiler and not
       intended for ordinary use in compiling code.  This option is
       disabled by default.
  
! '-mverbose-cost-dump'
       Enable verbose cost model dumping in the debug dump files.  This
       option is provided for use in debugging the compiler.
  
! '-mpure-code'
       Do not allow constant data to be placed in code sections.
       Additionally, when compiling for ELF object format give all text
       sections the ELF processor-specific section attribute
!      'SHF_ARM_PURECODE'.  This option is only available when generating
       non-pic code for M-profile targets.
  
! '-mcmse'
       Generate secure code as per the "ARMv8-M Security Extensions:
       Requirements on Development Tools Engineering Specification", which
       can be found on
       <https://developer.arm.com/documentation/ecm0359818/latest/>.
  
! '-mfix-cmse-cve-2021-35465'
!      Mitigate against a potential security issue with the 'VLLDM'
       instruction in some M-profile devices when using CMSE
       (CVE-2021-365465).  This option is enabled by default when the
!      option '-mcpu=' is used with 'cortex-m33', 'cortex-m35p',
!      'cortex-m52', 'cortex-m55', 'cortex-m85' or 'star-mc1'.  The option
!      '-mno-fix-cmse-cve-2021-35465' can be used to disable the
       mitigation.
  
! '-mstack-protector-guard=GUARD'
! '-mstack-protector-guard-offset=OFFSET'
       Generate stack protection code using canary at GUARD.  Supported
!      locations are 'global' for a global canary or 'tls' for a canary
       accessible via the TLS register.  The option
!      '-mstack-protector-guard-offset=' is for use with
!      '-fstack-protector-guard=tls' and not for use in user-land code.
  
! '-mfdpic'
! '-mno-fdpic'
       Select the FDPIC ABI, which uses 64-bit function descriptors to
       represent pointers to functions.  When the compiler is configured
!      for 'arm-*-uclinuxfdpiceabi' targets, this option is on by default
!      and implies '-fPIE' if none of the PIC/PIE-related options is
       provided.  On other targets, it only enables the FDPIC-specific
       code generation features, and the user should explicitly provide
       the PIC/PIE-related options as needed.
--- 22903,22980 ----
       architectures.  If unaligned access is not enabled then words in
       packed data structures are accessed a byte at a time.
  
!      The ARM attribute â€˜Tag_CPU_unaligned_accessâ€™ is set in the
       generated object file to either true or false, depending upon the
       setting of this option.  If unaligned access is enabled then the
!      preprocessor symbol â€˜__ARM_FEATURE_UNALIGNEDâ€™ is also defined.
  
! â€˜-mneon-for-64bitsâ€™
       This option is deprecated and has no effect.
  
! â€˜-mslow-flash-dataâ€™
       Assume loading data from flash is slower than fetching instruction.
       Therefore literal load is minimized for better performance.  This
       option is only supported when compiling for ARMv7 M-profile and off
!      by default.  It conflicts with â€˜-mword-relocationsâ€™.
  
! â€˜-masm-syntax-unifiedâ€™
       Assume inline assembler is using unified asm syntax.  The default
       is currently off which implies divided syntax.  This option has no
       impact on Thumb2.  However, this may change in future releases of
       GCC. Divided syntax should be considered deprecated.
  
! â€˜-mrestrict-itâ€™
       Restricts generation of IT blocks to conform to the rules of
       ARMv8-A. IT blocks can only contain a single 16-bit instruction
       from a select set of instructions.  This option is on by default
       for ARMv8-A Thumb mode.
  
! â€˜-mprint-tune-infoâ€™
       Print CPU tuning information as comment in assembler file.  This is
       an option used only for regression testing of the compiler and not
       intended for ordinary use in compiling code.  This option is
       disabled by default.
  
! â€˜-mverbose-cost-dumpâ€™
       Enable verbose cost model dumping in the debug dump files.  This
       option is provided for use in debugging the compiler.
  
! â€˜-mpure-codeâ€™
       Do not allow constant data to be placed in code sections.
       Additionally, when compiling for ELF object format give all text
       sections the ELF processor-specific section attribute
!      â€˜SHF_ARM_PURECODEâ€™.  This option is only available when generating
       non-pic code for M-profile targets.
  
! â€˜-mcmseâ€™
       Generate secure code as per the "ARMv8-M Security Extensions:
       Requirements on Development Tools Engineering Specification", which
       can be found on
       <https://developer.arm.com/documentation/ecm0359818/latest/>.
  
! â€˜-mfix-cmse-cve-2021-35465â€™
!      Mitigate against a potential security issue with the â€˜VLLDMâ€™
       instruction in some M-profile devices when using CMSE
       (CVE-2021-365465).  This option is enabled by default when the
!      option â€˜-mcpu=â€™ is used with â€˜cortex-m33â€™, â€˜cortex-m35pâ€™,
!      â€˜cortex-m52â€™, â€˜cortex-m55â€™, â€˜cortex-m85â€™ or â€˜star-mc1â€™.  The option
!      â€˜-mno-fix-cmse-cve-2021-35465â€™ can be used to disable the
       mitigation.
  
! â€˜-mstack-protector-guard=GUARDâ€™
! â€˜-mstack-protector-guard-offset=OFFSETâ€™
       Generate stack protection code using canary at GUARD.  Supported
!      locations are â€˜globalâ€™ for a global canary or â€˜tlsâ€™ for a canary
       accessible via the TLS register.  The option
!      â€˜-mstack-protector-guard-offset=â€™ is for use with
!      â€˜-fstack-protector-guard=tlsâ€™ and not for use in user-land code.
  
! â€˜-mfdpicâ€™
! â€˜-mno-fdpicâ€™
       Select the FDPIC ABI, which uses 64-bit function descriptors to
       represent pointers to functions.  When the compiler is configured
!      for â€˜arm-*-uclinuxfdpiceabiâ€™ targets, this option is on by default
!      and implies â€˜-fPIEâ€™ if none of the PIC/PIE-related options is
       provided.  On other targets, it only enables the FDPIC-specific
       code generation features, and the user should explicitly provide
       the PIC/PIE-related options as needed.
*************** These '-m' options are defined for the A
*** 22980,23014 ****
       such behavior is acceptable, use -static and -Wl,-dynamic-linker
       options.
  
!      The opposite '-mno-fdpic' option is useful (and required) to build
!      the Linux kernel using the same ('arm-*-uclinuxfdpiceabi')
       toolchain as the one used to build the userland programs.
  
! '-mbranch-protection=NONE|STANDARD|PAC-RET[+LEAF][+BTI]|BTI[+PAC-RET[+LEAF]]'
!      Enable branch protection features (armv8.1-m.main only).  'none'
       generate code without branch protection or return address signing.
!      'standard[+LEAF]' generate code with all branch protection features
!      enabled at their standard level.  'pac-ret[+LEAF]' generate code
       with return address signing set to its standard level, which is to
!      sign all functions that save the return address to memory.  'leaf'
       When return address signing is enabled, also sign leaf functions
!      even if they do not write the return address to memory.  +'bti' Add
       landing-pad instructions at the permitted targets of indirect
       branch instructions.
  
!      If the '+pacbti' architecture extension is not enabled, then all
       branch protection and return address signing operations are
       constrained to use only the instructions defined in the
       architectural-NOP space.  The generated code will remain
       backwards-compatible with earlier versions of the architecture, but
       the additional security can be enabled at run time on processors
!      that support the 'PACBTI' extension.
  
       Branch target enforcement using BTI can only be enabled at runtime
       if all code in the application has been compiled with at least
!      '-mbranch-protection=bti'.
  
!      Any setting other than 'none' is supported only on armv8-m.main or
       later.
  
       The default is to generate code without branch protection or return
--- 22984,23018 ----
       such behavior is acceptable, use -static and -Wl,-dynamic-linker
       options.
  
!      The opposite â€˜-mno-fdpicâ€™ option is useful (and required) to build
!      the Linux kernel using the same (â€˜arm-*-uclinuxfdpiceabiâ€™)
       toolchain as the one used to build the userland programs.
  
! â€˜-mbranch-protection=NONE|STANDARD|PAC-RET[+LEAF][+BTI]|BTI[+PAC-RET[+LEAF]]â€™
!      Enable branch protection features (armv8.1-m.main only).  â€˜noneâ€™
       generate code without branch protection or return address signing.
!      â€˜standard[+LEAF]â€™ generate code with all branch protection features
!      enabled at their standard level.  â€˜pac-ret[+LEAF]â€™ generate code
       with return address signing set to its standard level, which is to
!      sign all functions that save the return address to memory.  â€˜leafâ€™
       When return address signing is enabled, also sign leaf functions
!      even if they do not write the return address to memory.  +â€˜btiâ€™ Add
       landing-pad instructions at the permitted targets of indirect
       branch instructions.
  
!      If the â€˜+pacbtiâ€™ architecture extension is not enabled, then all
       branch protection and return address signing operations are
       constrained to use only the instructions defined in the
       architectural-NOP space.  The generated code will remain
       backwards-compatible with earlier versions of the architecture, but
       the additional security can be enabled at run time on processors
!      that support the â€˜PACBTIâ€™ extension.
  
       Branch target enforcement using BTI can only be enabled at runtime
       if all code in the application has been compiled with at least
!      â€˜-mbranch-protection=btiâ€™.
  
!      Any setting other than â€˜noneâ€™ is supported only on armv8-m.main or
       later.
  
       The default is to generate code without branch protection or return
*************** File: gcc.info,  Node: AVR Options,  Nex
*** 23022,23269 ****
  
  These options are defined for AVR implementations:
  
! '-mmcu=MCU'
       Specify the AVR instruction set architecture (ISA) or device type.
!      The default for this option is 'avr2'.
  
       The following AVR devices and ISAs are supported.  _Note:_ A
!      complete device support consists of startup code 'crtMCU.o', a
!      device header 'avr/io*.h', a device library 'libMCU.a' and a
       device-specs (https://gcc.gnu.org/wiki/avr-gcc#spec-files) file
!      'specs-MCU'.  Only the latter is provided by the compiler according
!      the supported 'MCU's below.  The rest is supported by
       AVR-LibC (https://github.com/avrdudes/avr-libc/), or by means of
!      'atpack' (https://gcc.gnu.org/wiki/avr-gcc#atpack) files from the
       hardware manufacturer.
  
!      'avr2'
            "Classic" devices with up to 8 KiB of program memory.
!           MCU = 'attiny22', 'attiny26', 'at90s2313', 'at90s2323',
!           'at90s2333', 'at90s2343', 'at90s4414', 'at90s4433',
!           'at90s4434', 'at90c8534', 'at90s8515', 'at90s8535'.
  
!      'avr25'
            "Classic" devices with up to 8 KiB of program memory and with
!           the 'MOVW' instruction.
!           MCU = 'attiny13', 'attiny13a', 'attiny24', 'attiny24a',
!           'attiny25', 'attiny261', 'attiny261a', 'attiny2313',
!           'attiny2313a', 'attiny43u', 'attiny44', 'attiny44a',
!           'attiny45', 'attiny48', 'attiny441', 'attiny461',
!           'attiny461a', 'attiny4313', 'attiny84', 'attiny84a',
!           'attiny85', 'attiny87', 'attiny88', 'attiny828', 'attiny841',
!           'attiny861', 'attiny861a', 'ata5272', 'ata6616c', 'at86rf401'.
  
!      'avr3'
            "Classic" devices with 16 KiB up to 64 KiB of program memory.
-           MCU = 'at76c711', 'at43usb355'.
  
!      'avr31'
            "Classic" devices with 128 KiB of program memory.
!           MCU = 'atmega103', 'at43usb320'.
  
!      'avr35'
            "Classic" devices with 16 KiB up to 64 KiB of program memory
!           and with the 'MOVW' instruction.
!           MCU = 'attiny167', 'attiny1634', 'atmega8u2', 'atmega16u2',
!           'atmega32u2', 'ata5505', 'ata6617c', 'ata664251', 'at90usb82',
!           'at90usb162'.
  
!      'avr4'
            "Enhanced" devices with up to 8 KiB of program memory.
!           MCU = 'atmega48', 'atmega48a', 'atmega48p', 'atmega48pa',
!           'atmega48pb', 'atmega8', 'atmega8a', 'atmega8hva', 'atmega88',
!           'atmega88a', 'atmega88p', 'atmega88pa', 'atmega88pb',
!           'atmega8515', 'atmega8535', 'ata5795', 'ata6285', 'ata6286',
!           'ata6289', 'ata6612c', 'at90pwm1', 'at90pwm2', 'at90pwm2b',
!           'at90pwm3', 'at90pwm3b', 'at90pwm81'.
  
!      'avr5'
            "Enhanced" devices with 16 KiB up to 64 KiB of program memory.
  
!           MCU = 'atmega16', 'atmega16a', 'atmega16hva', 'atmega16hva2',
!           'atmega16hvb', 'atmega16hvbrevb', 'atmega16m1', 'atmega16u4',
!           'atmega161', 'atmega162', 'atmega163', 'atmega164a',
!           'atmega164p', 'atmega164pa', 'atmega165', 'atmega165a',
!           'atmega165p', 'atmega165pa', 'atmega168', 'atmega168a',
!           'atmega168p', 'atmega168pa', 'atmega168pb', 'atmega169',
!           'atmega169a', 'atmega169p', 'atmega169pa', 'atmega32',
!           'atmega32a', 'atmega32c1', 'atmega32hvb', 'atmega32hvbrevb',
!           'atmega32m1', 'atmega32u4', 'atmega32u6', 'atmega323',
!           'atmega324a', 'atmega324p', 'atmega324pa', 'atmega324pb',
!           'atmega325', 'atmega325a', 'atmega325p', 'atmega325pa',
!           'atmega328', 'atmega328p', 'atmega328pb', 'atmega329',
!           'atmega329a', 'atmega329p', 'atmega329pa', 'atmega3250',
!           'atmega3250a', 'atmega3250p', 'atmega3250pa', 'atmega3290',
!           'atmega3290a', 'atmega3290p', 'atmega3290pa', 'atmega406',
!           'atmega64', 'atmega64a', 'atmega64c1', 'atmega64hve',
!           'atmega64hve2', 'atmega64m1', 'atmega64rfr2', 'atmega640',
!           'atmega644', 'atmega644a', 'atmega644p', 'atmega644pa',
!           'atmega644rfr2', 'atmega645', 'atmega645a', 'atmega645p',
!           'atmega649', 'atmega649a', 'atmega649p', 'atmega6450',
!           'atmega6450a', 'atmega6450p', 'atmega6490', 'atmega6490a',
!           'atmega6490p', 'ata5790', 'ata5790n', 'ata5791', 'ata6613c',
!           'ata6614q', 'ata5782', 'ata5831', 'ata8210', 'ata8510',
!           'ata5787', 'ata5835', 'ata5700m322', 'ata5702m322',
!           'at90pwm161', 'at90pwm216', 'at90pwm316', 'at90can32',
!           'at90can64', 'at90scr100', 'at90usb646', 'at90usb647',
!           'at94k', 'm3000'.
  
!      'avr51'
            "Enhanced" devices with 128 KiB of program memory.
!           MCU = 'atmega128', 'atmega128a', 'atmega128rfa1',
!           'atmega128rfr2', 'atmega1280', 'atmega1281', 'atmega1284',
!           'atmega1284p', 'atmega1284rfr2', 'at90can128', 'at90usb1286',
!           'at90usb1287'.
  
!      'avr6'
            "Enhanced" devices with 3-byte PC, i.e. with more than 128 KiB
            of program memory.
!           MCU = 'atmega256rfr2', 'atmega2560', 'atmega2561',
!           'atmega2564rfr2'.
  
!      'avrxmega2'
            "XMEGA" devices with more than 8 KiB and up to 64 KiB of
            program memory.
!           MCU = 'atxmega8e5', 'atxmega16a4', 'atxmega16a4u',
!           'atxmega16c4', 'atxmega16d4', 'atxmega16e5', 'atxmega32a4',
!           'atxmega32a4u', 'atxmega32c3', 'atxmega32c4', 'atxmega32d3',
!           'atxmega32d4', 'atxmega32e5', 'avr64da28', 'avr64da28s',
!           'avr64da32', 'avr64da32s', 'avr64da48', 'avr64da48s',
!           'avr64da64', 'avr64da64s', 'avr64db28', 'avr64db32',
!           'avr64db48', 'avr64db64', 'avr64dd14', 'avr64dd20',
!           'avr64dd28', 'avr64dd32', 'avr64du28', 'avr64du32',
!           'avr64ea28', 'avr64ea32', 'avr64ea48', 'avr64sd28',
!           'avr64sd32', 'avr64sd48'.
  
!      'avrxmega3'
            "XMEGA" devices with up to 64 KiB of combined program memory
            and RAM, and with program memory visible in the RAM address
            space.
!           MCU = 'attiny202', 'attiny204', 'attiny212', 'attiny214',
!           'attiny402', 'attiny404', 'attiny406', 'attiny412',
!           'attiny414', 'attiny416', 'attiny416auto', 'attiny417',
!           'attiny424', 'attiny426', 'attiny427', 'attiny804',
!           'attiny806', 'attiny807', 'attiny814', 'attiny816',
!           'attiny817', 'attiny824', 'attiny826', 'attiny827',
!           'attiny1604', 'attiny1606', 'attiny1607', 'attiny1614',
!           'attiny1616', 'attiny1617', 'attiny1624', 'attiny1626',
!           'attiny1627', 'attiny3214', 'attiny3216', 'attiny3217',
!           'attiny3224', 'attiny3226', 'attiny3227', 'atmega808',
!           'atmega809', 'atmega1608', 'atmega1609', 'atmega3208',
!           'atmega3209', 'atmega4808', 'atmega4809', 'avr16dd14',
!           'avr16dd20', 'avr16dd28', 'avr16dd32', 'avr16du14',
!           'avr16du20', 'avr16du28', 'avr16du32', 'avr16ea28',
!           'avr16ea32', 'avr16ea48', 'avr16eb14', 'avr16eb20',
!           'avr16eb28', 'avr16eb32', 'avr32da28', 'avr32da28s',
!           'avr32da32', 'avr32da32s', 'avr32da48', 'avr32da48s',
!           'avr32db28', 'avr32db32', 'avr32db48', 'avr32dd14',
!           'avr32dd20', 'avr32dd28', 'avr32dd32', 'avr32du14',
!           'avr32du20', 'avr32du28', 'avr32du32', 'avr32ea28',
!           'avr32ea32', 'avr32ea48', 'avr32sd20', 'avr32sd28',
!           'avr32sd32'.
  
!      'avrxmega4'
            "XMEGA" devices with more than 64 KiB and up to 128 KiB of
            program memory.
!           MCU = 'atxmega64a3', 'atxmega64a3u', 'atxmega64a4u',
!           'atxmega64b1', 'atxmega64b3', 'atxmega64c3', 'atxmega64d3',
!           'atxmega64d4', 'avr128da28', 'avr128da28s', 'avr128da32',
!           'avr128da32s', 'avr128da48', 'avr128da48s', 'avr128da64',
!           'avr128da64s', 'avr128db28', 'avr128db32', 'avr128db48',
!           'avr128db64'.
  
!      'avrxmega5'
            "XMEGA" devices with more than 64 KiB and up to 128 KiB of
            program memory and more than 64 KiB of RAM.
!           MCU = 'atxmega64a1', 'atxmega64a1u'.
  
!      'avrxmega6'
            "XMEGA" devices with more than 128 KiB of program memory.
!           MCU = 'atxmega128a3', 'atxmega128a3u', 'atxmega128b1',
!           'atxmega128b3', 'atxmega128c3', 'atxmega128d3',
!           'atxmega128d4', 'atxmega192a3', 'atxmega192a3u',
!           'atxmega192c3', 'atxmega192d3', 'atxmega256a3',
!           'atxmega256a3b', 'atxmega256a3bu', 'atxmega256a3u',
!           'atxmega256c3', 'atxmega256d3', 'atxmega384c3',
!           'atxmega384d3'.
  
!      'avrxmega7'
            "XMEGA" devices with more than 128 KiB of program memory and
            more than 64 KiB of RAM.
!           MCU = 'atxmega128a1', 'atxmega128a1u', 'atxmega128a4u'.
  
!      'avrtiny'
            "Reduced Tiny" Tiny core devices with only 16 general purpose
            registers and 512 B up to 4 KiB of program memory.
!           MCU = 'attiny4', 'attiny5', 'attiny9', 'attiny10',
!           'attiny102', 'attiny104', 'attiny20', 'attiny40'.
  
!      'avr1'
            This ISA is implemented by the minimal AVR core and supported
            for assembler only.
!           MCU = 'attiny11', 'attiny12', 'attiny15', 'attiny28',
!           'at90s1200'.
  
! '-mabsdata'
  
       Assume that all data in static storage can be accessed by LDS / STS
       instructions.  This option has only an effect on reduced Tiny
!      devices like ATtiny40.  See also the 'absdata' *note variable
       attribute: AVR Variable Attributes.
  
! '-mcvt'
       Use a _compact vector table_.  Some devices support a CVT with only
       four entries: 0=Reset, 1=NMI, 2=Prio1 IRQ, 3=Prio0 IRQs.  This
!      option will link startup code from 'crtMCU-cvt.o' instead of the
!      usual 'crtMCU.o'.  Apart from providing a compact vector table, the
!      startup code will set bit 'CPUINT_CTRLA.CPUINT_CVT' which enables
       the CVT on the device.
  
       When you do not want the startup code to set
!      'CPUINT_CTRLA.CPUINT_CVT', then you can satisfy symbol '__init_cvt'
!      so that the respective code is no more pulled in from 'libMCU.a'.
!      For example, you can link with '-Wl,--defsym,__init_cvt=0'.
  
       The CVT startup code is available since
       AVR-LibC v2.3 (https://github.com/avrdudes/avr-libc/issues/1010).
  
! '-mdouble=BITS'
! '-mlong-double=BITS'
!      Set the size (in bits) of the 'double' or 'long double' type,
       respectively.  Possible values for BITS are 32 and 64.  Whether or
       not a specific value for BITS is allowed depends on the
!      '--with-double=' and '--with-long-double='
       configure options (https://gcc.gnu.org/install/configure.html#avr),
       and the same applies for the default values of the options.
  
! '-mgas-isr-prologues'
!      Interrupt service routines (ISRs) may use the '__gcc_isr' pseudo
       instruction supported by GNU Binutils.  If this option is on, the
       feature can still be disabled for individual ISRs by means of the
!      *note 'no_gccisr': AVR Function Attributes. function attribute.
       This feature is activated per default if optimization is on (but
!      not with '-Og', *note Optimize Options::), and if GNU Binutils
       support PR21683 (https://sourceware.org/PR21683).
  
! '-mint8'
!      Assume 'int' to be 8-bit integer.  This affects the sizes of all
!      types: a 'char' is 1 byte, an 'int' is 1 byte, a 'long' is 2 bytes,
!      and 'long long' is 4 bytes.  Please note that this option does not
       conform to the C standards, but it results in smaller code size.
  
! '-mmain-is-OS_task'
!      Do not save registers in 'main'.  The effect is the same like
!      attaching attribute *note 'OS_task': AVR Function Attributes. to
!      'main'.  It is activated per default if optimization is on.
  
! '-mno-call-main'
!      Don't run 'main' by means of
            XCALL  main
            XJMP   exit
!      Instead, put 'main' in section
!      '.init9' (https://avrdudes.github.io/avr-libc/avr-libc-user-manual/mem_sections.html#sec_dot_init)
       so that no call is required.  By setting this option the user
!      asserts that 'main' will not return.
  
       This option can be used for devices with very limited resources in
       order to save a few bytes of code and stack space.  It will work as
--- 23026,23277 ----
  
  These options are defined for AVR implementations:
  
! â€˜-mmcu=MCUâ€™
       Specify the AVR instruction set architecture (ISA) or device type.
!      The default for this option is â€˜avr2â€™.
  
       The following AVR devices and ISAs are supported.  _Note:_ A
!      complete device support consists of startup code â€˜crtMCU.oâ€™, a
!      device header â€˜avr/io*.hâ€™, a device library â€˜libMCU.aâ€™ and a
       device-specs (https://gcc.gnu.org/wiki/avr-gcc#spec-files) file
!      â€˜specs-MCUâ€™.  Only the latter is provided by the compiler according
!      the supported â€˜MCUâ€™s below.  The rest is supported by
       AVR-LibC (https://github.com/avrdudes/avr-libc/), or by means of
!      â€˜atpackâ€™ (https://gcc.gnu.org/wiki/avr-gcc#atpack) files from the
       hardware manufacturer.
  
!      â€˜avr2â€™
            "Classic" devices with up to 8 KiB of program memory.
!           MCU = â€˜attiny22â€™, â€˜attiny26â€™, â€˜at90s2313â€™, â€˜at90s2323â€™,
!           â€˜at90s2333â€™, â€˜at90s2343â€™, â€˜at90s4414â€™, â€˜at90s4433â€™,
!           â€˜at90s4434â€™, â€˜at90c8534â€™, â€˜at90s8515â€™, â€˜at90s8535â€™.
  
!      â€˜avr25â€™
            "Classic" devices with up to 8 KiB of program memory and with
!           the â€˜MOVWâ€™ instruction.
!           MCU = â€˜attiny13â€™, â€˜attiny13aâ€™, â€˜attiny24â€™, â€˜attiny24aâ€™,
!           â€˜attiny25â€™, â€˜attiny261â€™, â€˜attiny261aâ€™, â€˜attiny2313â€™,
!           â€˜attiny2313aâ€™, â€˜attiny43uâ€™, â€˜attiny44â€™, â€˜attiny44aâ€™,
!           â€˜attiny45â€™, â€˜attiny48â€™, â€˜attiny441â€™, â€˜attiny461â€™,
!           â€˜attiny461aâ€™, â€˜attiny4313â€™, â€˜attiny84â€™, â€˜attiny84aâ€™,
!           â€˜attiny85â€™, â€˜attiny87â€™, â€˜attiny88â€™, â€˜attiny828â€™, â€˜attiny841â€™,
!           â€˜attiny861â€™, â€˜attiny861aâ€™, â€˜ata5272â€™, â€˜ata6616câ€™, â€˜at86rf401â€™.
  
!      â€˜avr3â€™
            "Classic" devices with 16 KiB up to 64 KiB of program memory.
  
!           MCU = â€˜at76c711â€™, â€˜at43usb355â€™.
! 
!      â€˜avr31â€™
            "Classic" devices with 128 KiB of program memory.
!           MCU = â€˜atmega103â€™, â€˜at43usb320â€™.
  
!      â€˜avr35â€™
            "Classic" devices with 16 KiB up to 64 KiB of program memory
!           and with the â€˜MOVWâ€™ instruction.
!           MCU = â€˜attiny167â€™, â€˜attiny1634â€™, â€˜atmega8u2â€™, â€˜atmega16u2â€™,
!           â€˜atmega32u2â€™, â€˜ata5505â€™, â€˜ata6617câ€™, â€˜ata664251â€™, â€˜at90usb82â€™,
!           â€˜at90usb162â€™.
  
!      â€˜avr4â€™
            "Enhanced" devices with up to 8 KiB of program memory.
!           MCU = â€˜atmega48â€™, â€˜atmega48aâ€™, â€˜atmega48pâ€™, â€˜atmega48paâ€™,
!           â€˜atmega48pbâ€™, â€˜atmega8â€™, â€˜atmega8aâ€™, â€˜atmega8hvaâ€™, â€˜atmega88â€™,
!           â€˜atmega88aâ€™, â€˜atmega88pâ€™, â€˜atmega88paâ€™, â€˜atmega88pbâ€™,
!           â€˜atmega8515â€™, â€˜atmega8535â€™, â€˜ata5795â€™, â€˜ata6285â€™, â€˜ata6286â€™,
!           â€˜ata6289â€™, â€˜ata6612câ€™, â€˜at90pwm1â€™, â€˜at90pwm2â€™, â€˜at90pwm2bâ€™,
!           â€˜at90pwm3â€™, â€˜at90pwm3bâ€™, â€˜at90pwm81â€™.
  
!      â€˜avr5â€™
            "Enhanced" devices with 16 KiB up to 64 KiB of program memory.
  
!           MCU = â€˜atmega16â€™, â€˜atmega16aâ€™, â€˜atmega16hvaâ€™, â€˜atmega16hva2â€™,
!           â€˜atmega16hvbâ€™, â€˜atmega16hvbrevbâ€™, â€˜atmega16m1â€™, â€˜atmega16u4â€™,
!           â€˜atmega161â€™, â€˜atmega162â€™, â€˜atmega163â€™, â€˜atmega164aâ€™,
!           â€˜atmega164pâ€™, â€˜atmega164paâ€™, â€˜atmega165â€™, â€˜atmega165aâ€™,
!           â€˜atmega165pâ€™, â€˜atmega165paâ€™, â€˜atmega168â€™, â€˜atmega168aâ€™,
!           â€˜atmega168pâ€™, â€˜atmega168paâ€™, â€˜atmega168pbâ€™, â€˜atmega169â€™,
!           â€˜atmega169aâ€™, â€˜atmega169pâ€™, â€˜atmega169paâ€™, â€˜atmega32â€™,
!           â€˜atmega32aâ€™, â€˜atmega32c1â€™, â€˜atmega32hvbâ€™, â€˜atmega32hvbrevbâ€™,
!           â€˜atmega32m1â€™, â€˜atmega32u4â€™, â€˜atmega32u6â€™, â€˜atmega323â€™,
!           â€˜atmega324aâ€™, â€˜atmega324pâ€™, â€˜atmega324paâ€™, â€˜atmega324pbâ€™,
!           â€˜atmega325â€™, â€˜atmega325aâ€™, â€˜atmega325pâ€™, â€˜atmega325paâ€™,
!           â€˜atmega328â€™, â€˜atmega328pâ€™, â€˜atmega328pbâ€™, â€˜atmega329â€™,
!           â€˜atmega329aâ€™, â€˜atmega329pâ€™, â€˜atmega329paâ€™, â€˜atmega3250â€™,
!           â€˜atmega3250aâ€™, â€˜atmega3250pâ€™, â€˜atmega3250paâ€™, â€˜atmega3290â€™,
!           â€˜atmega3290aâ€™, â€˜atmega3290pâ€™, â€˜atmega3290paâ€™, â€˜atmega406â€™,
!           â€˜atmega64â€™, â€˜atmega64aâ€™, â€˜atmega64c1â€™, â€˜atmega64hveâ€™,
!           â€˜atmega64hve2â€™, â€˜atmega64m1â€™, â€˜atmega64rfr2â€™, â€˜atmega640â€™,
!           â€˜atmega644â€™, â€˜atmega644aâ€™, â€˜atmega644pâ€™, â€˜atmega644paâ€™,
!           â€˜atmega644rfr2â€™, â€˜atmega645â€™, â€˜atmega645aâ€™, â€˜atmega645pâ€™,
!           â€˜atmega649â€™, â€˜atmega649aâ€™, â€˜atmega649pâ€™, â€˜atmega6450â€™,
!           â€˜atmega6450aâ€™, â€˜atmega6450pâ€™, â€˜atmega6490â€™, â€˜atmega6490aâ€™,
!           â€˜atmega6490pâ€™, â€˜ata5790â€™, â€˜ata5790nâ€™, â€˜ata5791â€™, â€˜ata6613câ€™,
!           â€˜ata6614qâ€™, â€˜ata5782â€™, â€˜ata5831â€™, â€˜ata8210â€™, â€˜ata8510â€™,
!           â€˜ata5787â€™, â€˜ata5835â€™, â€˜ata5700m322â€™, â€˜ata5702m322â€™,
!           â€˜at90pwm161â€™, â€˜at90pwm216â€™, â€˜at90pwm316â€™, â€˜at90can32â€™,
!           â€˜at90can64â€™, â€˜at90scr100â€™, â€˜at90usb646â€™, â€˜at90usb647â€™,
!           â€˜at94kâ€™, â€˜m3000â€™.
  
!      â€˜avr51â€™
            "Enhanced" devices with 128 KiB of program memory.
!           MCU = â€˜atmega128â€™, â€˜atmega128aâ€™, â€˜atmega128rfa1â€™,
!           â€˜atmega128rfr2â€™, â€˜atmega1280â€™, â€˜atmega1281â€™, â€˜atmega1284â€™,
!           â€˜atmega1284pâ€™, â€˜atmega1284rfr2â€™, â€˜at90can128â€™, â€˜at90usb1286â€™,
!           â€˜at90usb1287â€™.
  
!      â€˜avr6â€™
            "Enhanced" devices with 3-byte PC, i.e. with more than 128 KiB
            of program memory.
!           MCU = â€˜atmega256rfr2â€™, â€˜atmega2560â€™, â€˜atmega2561â€™,
!           â€˜atmega2564rfr2â€™.
  
!      â€˜avrxmega2â€™
            "XMEGA" devices with more than 8 KiB and up to 64 KiB of
            program memory.
!           MCU = â€˜atxmega8e5â€™, â€˜atxmega16a4â€™, â€˜atxmega16a4uâ€™,
!           â€˜atxmega16c4â€™, â€˜atxmega16d4â€™, â€˜atxmega16e5â€™, â€˜atxmega32a4â€™,
!           â€˜atxmega32a4uâ€™, â€˜atxmega32c3â€™, â€˜atxmega32c4â€™, â€˜atxmega32d3â€™,
!           â€˜atxmega32d4â€™, â€˜atxmega32e5â€™, â€˜avr64da28â€™, â€˜avr64da28sâ€™,
!           â€˜avr64da32â€™, â€˜avr64da32sâ€™, â€˜avr64da48â€™, â€˜avr64da48sâ€™,
!           â€˜avr64da64â€™, â€˜avr64da64sâ€™, â€˜avr64db28â€™, â€˜avr64db32â€™,
!           â€˜avr64db48â€™, â€˜avr64db64â€™, â€˜avr64dd14â€™, â€˜avr64dd20â€™,
!           â€˜avr64dd28â€™, â€˜avr64dd32â€™, â€˜avr64du28â€™, â€˜avr64du32â€™,
!           â€˜avr64ea28â€™, â€˜avr64ea32â€™, â€˜avr64ea48â€™, â€˜avr64sd28â€™,
!           â€˜avr64sd32â€™, â€˜avr64sd48â€™.
  
!      â€˜avrxmega3â€™
            "XMEGA" devices with up to 64 KiB of combined program memory
            and RAM, and with program memory visible in the RAM address
            space.
!           MCU = â€˜attiny202â€™, â€˜attiny204â€™, â€˜attiny212â€™, â€˜attiny214â€™,
!           â€˜attiny402â€™, â€˜attiny404â€™, â€˜attiny406â€™, â€˜attiny412â€™,
!           â€˜attiny414â€™, â€˜attiny416â€™, â€˜attiny416autoâ€™, â€˜attiny417â€™,
!           â€˜attiny424â€™, â€˜attiny426â€™, â€˜attiny427â€™, â€˜attiny804â€™,
!           â€˜attiny806â€™, â€˜attiny807â€™, â€˜attiny814â€™, â€˜attiny816â€™,
!           â€˜attiny817â€™, â€˜attiny824â€™, â€˜attiny826â€™, â€˜attiny827â€™,
!           â€˜attiny1604â€™, â€˜attiny1606â€™, â€˜attiny1607â€™, â€˜attiny1614â€™,
!           â€˜attiny1616â€™, â€˜attiny1617â€™, â€˜attiny1624â€™, â€˜attiny1626â€™,
!           â€˜attiny1627â€™, â€˜attiny3214â€™, â€˜attiny3216â€™, â€˜attiny3217â€™,
!           â€˜attiny3224â€™, â€˜attiny3226â€™, â€˜attiny3227â€™, â€˜atmega808â€™,
!           â€˜atmega809â€™, â€˜atmega1608â€™, â€˜atmega1609â€™, â€˜atmega3208â€™,
!           â€˜atmega3209â€™, â€˜atmega4808â€™, â€˜atmega4809â€™, â€˜avr16dd14â€™,
!           â€˜avr16dd20â€™, â€˜avr16dd28â€™, â€˜avr16dd32â€™, â€˜avr16du14â€™,
!           â€˜avr16du20â€™, â€˜avr16du28â€™, â€˜avr16du32â€™, â€˜avr16ea28â€™,
!           â€˜avr16ea32â€™, â€˜avr16ea48â€™, â€˜avr16eb14â€™, â€˜avr16eb20â€™,
!           â€˜avr16eb28â€™, â€˜avr16eb32â€™, â€˜avr16la14â€™, â€˜avr16la20â€™,
!           â€˜avr16la28â€™, â€˜avr16la32â€™, â€˜avr32da28â€™, â€˜avr32da28sâ€™,
!           â€˜avr32da32â€™, â€˜avr32da32sâ€™, â€˜avr32da48â€™, â€˜avr32da48sâ€™,
!           â€˜avr32db28â€™, â€˜avr32db32â€™, â€˜avr32db48â€™, â€˜avr32dd14â€™,
!           â€˜avr32dd20â€™, â€˜avr32dd28â€™, â€˜avr32dd32â€™, â€˜avr32du14â€™,
!           â€˜avr32du20â€™, â€˜avr32du28â€™, â€˜avr32du32â€™, â€˜avr32ea28â€™,
!           â€˜avr32ea32â€™, â€˜avr32ea48â€™, â€˜avr32eb14â€™, â€˜avr32eb20â€™,
!           â€˜avr32eb28â€™, â€˜avr32eb32â€™, â€˜avr32la14â€™, â€˜avr32la20â€™,
!           â€˜avr32la28â€™, â€˜avr32la32â€™, â€˜avr32sd20â€™, â€˜avr32sd28â€™,
!           â€˜avr32sd32â€™.
  
!      â€˜avrxmega4â€™
            "XMEGA" devices with more than 64 KiB and up to 128 KiB of
            program memory.
!           MCU = â€˜atxmega64a3â€™, â€˜atxmega64a3uâ€™, â€˜atxmega64a4uâ€™,
!           â€˜atxmega64b1â€™, â€˜atxmega64b3â€™, â€˜atxmega64c3â€™, â€˜atxmega64d3â€™,
!           â€˜atxmega64d4â€™, â€˜avr128da28â€™, â€˜avr128da28sâ€™, â€˜avr128da32â€™,
!           â€˜avr128da32sâ€™, â€˜avr128da48â€™, â€˜avr128da48sâ€™, â€˜avr128da64â€™,
!           â€˜avr128da64sâ€™, â€˜avr128db28â€™, â€˜avr128db32â€™, â€˜avr128db48â€™,
!           â€˜avr128db64â€™.
  
!      â€˜avrxmega5â€™
            "XMEGA" devices with more than 64 KiB and up to 128 KiB of
            program memory and more than 64 KiB of RAM.
!           MCU = â€˜atxmega64a1â€™, â€˜atxmega64a1uâ€™.
  
!      â€˜avrxmega6â€™
            "XMEGA" devices with more than 128 KiB of program memory.
!           MCU = â€˜atxmega128a3â€™, â€˜atxmega128a3uâ€™, â€˜atxmega128b1â€™,
!           â€˜atxmega128b3â€™, â€˜atxmega128c3â€™, â€˜atxmega128d3â€™,
!           â€˜atxmega128d4â€™, â€˜atxmega192a3â€™, â€˜atxmega192a3uâ€™,
!           â€˜atxmega192c3â€™, â€˜atxmega192d3â€™, â€˜atxmega256a3â€™,
!           â€˜atxmega256a3bâ€™, â€˜atxmega256a3buâ€™, â€˜atxmega256a3uâ€™,
!           â€˜atxmega256c3â€™, â€˜atxmega256d3â€™, â€˜atxmega384c3â€™,
!           â€˜atxmega384d3â€™.
  
!      â€˜avrxmega7â€™
            "XMEGA" devices with more than 128 KiB of program memory and
            more than 64 KiB of RAM.
!           MCU = â€˜atxmega128a1â€™, â€˜atxmega128a1uâ€™, â€˜atxmega128a4uâ€™.
  
!      â€˜avrtinyâ€™
            "Reduced Tiny" Tiny core devices with only 16 general purpose
            registers and 512 B up to 4 KiB of program memory.
!           MCU = â€˜attiny4â€™, â€˜attiny5â€™, â€˜attiny9â€™, â€˜attiny10â€™,
!           â€˜attiny102â€™, â€˜attiny104â€™, â€˜attiny20â€™, â€˜attiny40â€™.
  
!      â€˜avr1â€™
            This ISA is implemented by the minimal AVR core and supported
            for assembler only.
!           MCU = â€˜attiny11â€™, â€˜attiny12â€™, â€˜attiny15â€™, â€˜attiny28â€™,
!           â€˜at90s1200â€™.
  
! â€˜-mabsdataâ€™
  
       Assume that all data in static storage can be accessed by LDS / STS
       instructions.  This option has only an effect on reduced Tiny
!      devices like ATtiny40.  See also the â€˜absdataâ€™ *note variable
       attribute: AVR Variable Attributes.
  
! â€˜-mcvtâ€™
       Use a _compact vector table_.  Some devices support a CVT with only
       four entries: 0=Reset, 1=NMI, 2=Prio1 IRQ, 3=Prio0 IRQs.  This
!      option will link startup code from â€˜crtMCU-cvt.oâ€™ instead of the
!      usual â€˜crtMCU.oâ€™.  Apart from providing a compact vector table, the
!      startup code will set bit â€˜CPUINT_CTRLA.CPUINT_CVTâ€™ which enables
       the CVT on the device.
  
       When you do not want the startup code to set
!      â€˜CPUINT_CTRLA.CPUINT_CVTâ€™, then you can satisfy symbol â€˜__init_cvtâ€™
!      so that the respective code is no more pulled in from â€˜libMCU.aâ€™.
!      For example, you can link with â€˜-Wl,--defsym,__init_cvt=0â€™.
  
       The CVT startup code is available since
       AVR-LibC v2.3 (https://github.com/avrdudes/avr-libc/issues/1010).
  
! â€˜-mdouble=BITSâ€™
! â€˜-mlong-double=BITSâ€™
!      Set the size (in bits) of the â€˜doubleâ€™ or â€˜long doubleâ€™ type,
       respectively.  Possible values for BITS are 32 and 64.  Whether or
       not a specific value for BITS is allowed depends on the
!      â€˜--with-double=â€™ and â€˜--with-long-double=â€™
       configure options (https://gcc.gnu.org/install/configure.html#avr),
       and the same applies for the default values of the options.
  
! â€˜-mgas-isr-prologuesâ€™
!      Interrupt service routines (ISRs) may use the â€˜__gcc_isrâ€™ pseudo
       instruction supported by GNU Binutils.  If this option is on, the
       feature can still be disabled for individual ISRs by means of the
!      *note â€˜no_gccisrâ€™: AVR Function Attributes. function attribute.
       This feature is activated per default if optimization is on (but
!      not with â€˜-Ogâ€™, *note Optimize Options::), and if GNU Binutils
       support PR21683 (https://sourceware.org/PR21683).
  
! â€˜-mint8â€™
!      Assume â€˜intâ€™ to be 8-bit integer.  This affects the sizes of all
!      types: a â€˜charâ€™ is 1 byte, an â€˜intâ€™ is 1 byte, a â€˜longâ€™ is 2 bytes,
!      and â€˜long longâ€™ is 4 bytes.  Please note that this option does not
       conform to the C standards, but it results in smaller code size.
  
! â€˜-mmain-is-OS_taskâ€™
!      Do not save registers in â€˜mainâ€™.  The effect is the same like
!      attaching attribute *note â€˜OS_taskâ€™: AVR Function Attributes. to
!      â€˜mainâ€™.  It is activated per default if optimization is on.
  
! â€˜-mno-call-mainâ€™
!      Don't run â€˜mainâ€™ by means of
            XCALL  main
            XJMP   exit
!      Instead, put â€˜mainâ€™ in section
!      â€˜.init9â€™ (https://avrdudes.github.io/avr-libc/avr-libc-user-manual/mem_sections.html#sec_dot_init)
       so that no call is required.  By setting this option the user
!      asserts that â€˜mainâ€™ will not return.
  
       This option can be used for devices with very limited resources in
       order to save a few bytes of code and stack space.  It will work as
*************** These options are defined for AVR implem
*** 23271,23285 ****
       AVR-LibC v2.3 (https://github.com/avrdudes/avr-libc/issues/1012).
       With older versions, there will be no performance gain.
  
! '-mno-interrupts'
       Generated code is not compatible with hardware interrupts.  Code
       size is smaller.
  
! '-mrelax'
!      Try to replace 'CALL' resp. 'JMP' instruction by the shorter
!      'RCALL' resp. 'RJMP' instruction if applicable.  Setting '-mrelax'
!      just adds the '--mlink-relax' option to the assembler's command
!      line and the '--relax' option to the linker's command line.
  
       Jump relaxing is performed by the linker because jump offsets are
       not known before code is located.  Therefore, the assembler code
--- 23279,23293 ----
       AVR-LibC v2.3 (https://github.com/avrdudes/avr-libc/issues/1012).
       With older versions, there will be no performance gain.
  
! â€˜-mno-interruptsâ€™
       Generated code is not compatible with hardware interrupts.  Code
       size is smaller.
  
! â€˜-mrelaxâ€™
!      Try to replace â€˜CALLâ€™ resp. â€˜JMPâ€™ instruction by the shorter
!      â€˜RCALLâ€™ resp. â€˜RJMPâ€™ instruction if applicable.  Setting â€˜-mrelaxâ€™
!      just adds the â€˜--mlink-relaxâ€™ option to the assembler's command
!      line and the â€˜--relaxâ€™ option to the linker's command line.
  
       Jump relaxing is performed by the linker because jump offsets are
       not known before code is located.  Therefore, the assembler code
*************** These options are defined for AVR implem
*** 23287,23349 ****
       executable may differ from instructions in the assembler code.
  
       Relaxing must be turned on if linker stubs are needed, see the
!      section on 'EIND' and linker stubs below.
  
! '-mrodata-in-ram'
! '-mno-rodata-in-ram'
!      Locate the '.rodata' sections for read-only data in RAM resp. in
       program memory.  For most devices, there is no choice and this
       option acts rather like an assertion.
  
!      Since v14 and for the AVR64* and AVR128* devices, '.rodata' is
       located in flash memory per default, provided the required GNU
       Binutils support (PR31124 (https://sourceware.org/PR31124)) is
!      available.  In that case, '-mrodata-in-ram' can be used to return
!      to the old layout with '.rodata' in RAM.
  
! '-mtiny-stack'
       Only change the lower 8 bits of the stack pointer.
  
! '-mfract-convert-truncate'
       Allow to use truncation instead of rounding towards zero for
       fractional fixed-point types.
  
! '-nodevicelib'
!      Don't link against AVR-LibC's device specific library 'libMCU.a'.
  
       Notice that since AVR-LibC v2.3, that library contains code that is
       essential for the correct functioning of a program.  In particular,
       it contains parts of the startup code like:
!      '__init_sp' (https://github.com/avrdudes/avr-libc/issues/1011) to
!      initialize the stack pointer with symbol '__stack',
!      '__init_cvt' (https://github.com/avrdudes/avr-libc/issues/1010) to
!      set up the hardware to use a compact vector table with '-mcvt',
!      '__call_main' (https://github.com/avrdudes/avr-libc/issues/1012) to
!      call 'main' and 'exit', and
!      '__do_flmap_init' (https://github.com/avrdudes/avr-libc/issues/931)
!      to set up FLMAP according to symbol '__flmap'.
  
! '-nodevicespecs'
!      Don't add '-specs=device-specs/specs-MCU' to the compiler driver's
       command line.  The user takes responsibility for supplying the
       sub-processes like compiler proper, assembler and linker with
       appropriate command line options.  This means that the user has to
       supply her private device specs file by means of
!      '-specs=PATH-TO-SPECS-FILE'.  There is no more need for option
!      '-mmcu=MCU'.
  
       This option can also serve as a replacement for the older way of
!      specifying custom device-specs files that needed '-B SOME-PATH' to
!      point to a directory which contains a folder named 'device-specs'
!      which contains a specs file named 'specs-MCU', where MCU was
!      specified by '-mmcu=MCU'.
  
! '-Waddr-space-convert'
       Warn about conversions between address spaces in the case where the
       resulting address space is not contained in the incoming address
       space.
  
! '-Wmisspelled-isr'
       Warn if the ISR is misspelled, i.e. without __vector prefix.
       Enabled by default.
  
--- 23295,23357 ----
       executable may differ from instructions in the assembler code.
  
       Relaxing must be turned on if linker stubs are needed, see the
!      section on â€˜EINDâ€™ and linker stubs below.
  
! â€˜-mrodata-in-ramâ€™
! â€˜-mno-rodata-in-ramâ€™
!      Locate the â€˜.rodataâ€™ sections for read-only data in RAM resp. in
       program memory.  For most devices, there is no choice and this
       option acts rather like an assertion.
  
!      Since v14 and for the AVR64* and AVR128* devices, â€˜.rodataâ€™ is
       located in flash memory per default, provided the required GNU
       Binutils support (PR31124 (https://sourceware.org/PR31124)) is
!      available.  In that case, â€˜-mrodata-in-ramâ€™ can be used to return
!      to the old layout with â€˜.rodataâ€™ in RAM.
  
! â€˜-mtiny-stackâ€™
       Only change the lower 8 bits of the stack pointer.
  
! â€˜-mfract-convert-truncateâ€™
       Allow to use truncation instead of rounding towards zero for
       fractional fixed-point types.
  
! â€˜-nodevicelibâ€™
!      Don't link against AVR-LibC's device specific library â€˜libMCU.aâ€™.
  
       Notice that since AVR-LibC v2.3, that library contains code that is
       essential for the correct functioning of a program.  In particular,
       it contains parts of the startup code like:
!      â€˜__init_spâ€™ (https://github.com/avrdudes/avr-libc/issues/1011) to
!      initialize the stack pointer with symbol â€˜__stackâ€™,
!      â€˜__init_cvtâ€™ (https://github.com/avrdudes/avr-libc/issues/1010) to
!      set up the hardware to use a compact vector table with â€˜-mcvtâ€™,
!      â€˜__call_mainâ€™ (https://github.com/avrdudes/avr-libc/issues/1012) to
!      call â€˜mainâ€™ and â€˜exitâ€™, and
!      â€˜__do_flmap_initâ€™ (https://github.com/avrdudes/avr-libc/issues/931)
!      to set up FLMAP according to symbol â€˜__flmapâ€™.
  
! â€˜-nodevicespecsâ€™
!      Don't add â€˜-specs=device-specs/specs-MCUâ€™ to the compiler driver's
       command line.  The user takes responsibility for supplying the
       sub-processes like compiler proper, assembler and linker with
       appropriate command line options.  This means that the user has to
       supply her private device specs file by means of
!      â€˜-specs=PATH-TO-SPECS-FILEâ€™.  There is no more need for option
!      â€˜-mmcu=MCUâ€™.
  
       This option can also serve as a replacement for the older way of
!      specifying custom device-specs files that needed â€˜-B SOME-PATHâ€™ to
!      point to a directory which contains a folder named â€˜device-specsâ€™
!      which contains a specs file named â€˜specs-MCUâ€™, where MCU was
!      specified by â€˜-mmcu=MCUâ€™.
  
! â€˜-Waddr-space-convertâ€™
       Warn about conversions between address spaces in the case where the
       resulting address space is not contained in the incoming address
       space.
  
! â€˜-Wmisspelled-isrâ€™
       Warn if the ISR is misspelled, i.e. without __vector prefix.
       Enabled by default.
  
*************** These options are defined for AVR implem
*** 23351,23366 ****
  .................................
  
  The following options are pure optimization options.  Options
! '-mgas-isr-prologues', '-mmain-is-OS_task', '-mno-call-main' and
! '-mrelax' from above are only _almost_ optimization options, since there
  are rare occasions where their different code generation matters.
  
! '-maccumulate-args'
       Accumulate outgoing function arguments and acquire/release the
       needed stack space for outgoing function arguments once in function
       prologue/epilogue.  Without this option, outgoing arguments are
       pushed before calling a function and popped afterwards.  See also
!      the '-fdefer-pop' *note optimization option: Optimize Options.
  
       Popping the arguments after the function call can be expensive on
       AVR so that accumulating the stack space might lead to smaller
--- 23359,23374 ----
  .................................
  
  The following options are pure optimization options.  Options
! â€˜-mgas-isr-prologuesâ€™, â€˜-mmain-is-OS_taskâ€™, â€˜-mno-call-mainâ€™ and
! â€˜-mrelaxâ€™ from above are only _almost_ optimization options, since there
  are rare occasions where their different code generation matters.
  
! â€˜-maccumulate-argsâ€™
       Accumulate outgoing function arguments and acquire/release the
       needed stack space for outgoing function arguments once in function
       prologue/epilogue.  Without this option, outgoing arguments are
       pushed before calling a function and popped afterwards.  See also
!      the â€˜-fdefer-popâ€™ *note optimization option: Optimize Options.
  
       Popping the arguments after the function call can be expensive on
       AVR so that accumulating the stack space might lead to smaller
*************** are rare occasions where their different
*** 23371,23440 ****
       perform several calls to functions that get their arguments on the
       stack like calls to printf-like functions.
  
! '-mbranch-cost=COST'
       Set the branch costs for conditional branch instructions to COST.
       Reasonable values for COST are small, non-negative integers.  The
       default branch cost is 0.
  
! '-mcall-prologues'
       Functions prologues/epilogues are expanded as calls to appropriate
       subroutines.  Code size is smaller.
  
! '-mfuse-add'
! '-mno-fuse-add'
! '-mfuse-add=LEVEL'
       Optimize indirect memory accesses on reduced Tiny devices.  The
!      default uses 'LEVEL=1' for optimizations '-Og' and '-O1', and
!      'LEVEL=2' for higher optimizations.  Valid values for LEVEL are
!      '0', '1' and '2'.
  
! '-mfuse-move'
! '-mno-fuse-move'
! '-mfuse-move=LEVEL'
       Run a post reload optimization pass that tries to fuse move
       instructions and to split multi-byte instructions into 8-bit
!      operations.  The default uses 'LEVEL=3' for optimization '-O1', and
!      'LEVEL=23' for higher optimizations.  Valid values for LEVEL are in
!      the range '0' ... '23' which is a 3:2:2:2 mixed radix value.  Each
       digit controls some aspect of the optimization.
  
! '-mfuse-move2'
       Run a post combine optimization pass that tries to fuse move
       instructions.
  
! '-mstrict-X'
!      Use address register 'X' in a way proposed by the hardware.  This
!      means that 'X' is only used in indirect, post-increment or
       pre-decrement addressing.
  
!      Without this option, the 'X' register may be used in the same way
!      as 'Y' or 'Z' which then is emulated by additional instructions.
!      For example, loading a value with 'X+const' addressing with a small
!      non-negative 'const < 64' to a register RN is performed as
  
            adiw r26, const   ; X += const
            ld   RN, X        ; RN = *X
            sbiw r26, const   ; X -= const
  
! '-msplit-bit-shift'
       Split multi-byte shifts with a constant offset into a shift with a
       byte offset and a residual shift with a non-byte offset.  This
!      optimization is turned on per default for '-O2' and higher,
!      including '-Os' but excluding '-Oz'.  Splitting of shifts with a
       constant offset that is a multiple of 8 is controlled by
!      '-mfuse-move'.
  
! '-msplit-ldst'
       Split multi-byte loads and stores into several byte loads and
!      stores.  This optimization is turned on per default for '-O2' and
       higher.
  
! '-muse-nonzero-bits'
       Enable optimizations that are only possible when some bits in a
       register are always zero.  This optimization is turned on per
!      default for '-O2' and higher.
  
! 3.20.6.2 'EIND' and Devices with More Than 128 Ki Bytes of Flash
  ................................................................
  
  Pointers in the implementation are 16 bits wide.  The address of a
--- 23379,23448 ----
       perform several calls to functions that get their arguments on the
       stack like calls to printf-like functions.
  
! â€˜-mbranch-cost=COSTâ€™
       Set the branch costs for conditional branch instructions to COST.
       Reasonable values for COST are small, non-negative integers.  The
       default branch cost is 0.
  
! â€˜-mcall-prologuesâ€™
       Functions prologues/epilogues are expanded as calls to appropriate
       subroutines.  Code size is smaller.
  
! â€˜-mfuse-addâ€™
! â€˜-mno-fuse-addâ€™
! â€˜-mfuse-add=LEVELâ€™
       Optimize indirect memory accesses on reduced Tiny devices.  The
!      default uses â€˜LEVEL=1â€™ for optimizations â€˜-Ogâ€™ and â€˜-O1â€™, and
!      â€˜LEVEL=2â€™ for higher optimizations.  Valid values for LEVEL are
!      â€˜0â€™, â€˜1â€™ and â€˜2â€™.
  
! â€˜-mfuse-moveâ€™
! â€˜-mno-fuse-moveâ€™
! â€˜-mfuse-move=LEVELâ€™
       Run a post reload optimization pass that tries to fuse move
       instructions and to split multi-byte instructions into 8-bit
!      operations.  The default uses â€˜LEVEL=3â€™ for optimization â€˜-O1â€™, and
!      â€˜LEVEL=23â€™ for higher optimizations.  Valid values for LEVEL are in
!      the range â€˜0â€™ ... â€˜23â€™ which is a 3:2:2:2 mixed radix value.  Each
       digit controls some aspect of the optimization.
  
! â€˜-mfuse-move2â€™
       Run a post combine optimization pass that tries to fuse move
       instructions.
  
! â€˜-mstrict-Xâ€™
!      Use address register â€˜Xâ€™ in a way proposed by the hardware.  This
!      means that â€˜Xâ€™ is only used in indirect, post-increment or
       pre-decrement addressing.
  
!      Without this option, the â€˜Xâ€™ register may be used in the same way
!      as â€˜Yâ€™ or â€˜Zâ€™ which then is emulated by additional instructions.
!      For example, loading a value with â€˜X+constâ€™ addressing with a small
!      non-negative â€˜const < 64â€™ to a register RN is performed as
  
            adiw r26, const   ; X += const
            ld   RN, X        ; RN = *X
            sbiw r26, const   ; X -= const
  
! â€˜-msplit-bit-shiftâ€™
       Split multi-byte shifts with a constant offset into a shift with a
       byte offset and a residual shift with a non-byte offset.  This
!      optimization is turned on per default for â€˜-O2â€™ and higher,
!      including â€˜-Osâ€™ but excluding â€˜-Ozâ€™.  Splitting of shifts with a
       constant offset that is a multiple of 8 is controlled by
!      â€˜-mfuse-moveâ€™.
  
! â€˜-msplit-ldstâ€™
       Split multi-byte loads and stores into several byte loads and
!      stores.  This optimization is turned on per default for â€˜-O2â€™ and
       higher.
  
! â€˜-muse-nonzero-bitsâ€™
       Enable optimizations that are only possible when some bits in a
       register are always zero.  This optimization is turned on per
!      default for â€˜-O2â€™ and higher.
  
! 3.20.6.2 â€˜EINDâ€™ and Devices with More Than 128 Ki Bytes of Flash
  ................................................................
  
  Pointers in the implementation are 16 bits wide.  The address of a
*************** and calls can target any code address in
*** 23443,23492 ****
  
   In order to facilitate indirect jump on devices with more than 128 Ki
  bytes of program memory space, there is a special function register
! called 'EIND' that serves as most significant part of the target address
! when 'EICALL' or 'EIJMP' instructions are used.
  
   Indirect jumps and calls on these devices are handled as follows by the
  compiler and are subject to some limitations:
  
!    * The compiler never sets 'EIND'.
  
!    * The compiler uses 'EIND' implicitly in 'EICALL'/'EIJMP'
!      instructions or might read 'EIND' directly in order to emulate an
!      indirect call/jump by means of a 'RET' instruction.
  
!    * The compiler assumes that 'EIND' never changes during the startup
!      code or during the application.  In particular, 'EIND' is not
       saved/restored in function or interrupt service routine
       prologue/epilogue.
  
!    * For indirect calls to functions and computed goto, the linker
       generates _stubs_.  Stubs are jump pads sometimes also called
       _trampolines_.  Thus, the indirect call/jump jumps to such a stub.
       The stub contains a direct jump to the desired address.
  
!    * Linker relaxation must be turned on so that the linker generates
       the stubs correctly in all situations.  See the compiler option
!      '-mrelax' and the linker option '--relax'.  There are corner cases
       where the linker is supposed to generate stubs but aborts without
       relaxation and without a helpful error message.
  
!    * The default linker script is arranged for code with 'EIND = 0'.  If
!      code is supposed to work for a setup with 'EIND != 0', a custom
       linker script has to be used in order to place the sections whose
!      name start with '.trampolines' into the segment where 'EIND' points
       to.
  
!    * The startup code from libgcc never sets 'EIND'.  Notice that
       startup code is a blend of code from libgcc and AVR-LibC. For the
!      impact of AVR-LibC on 'EIND', see the
       AVR-LibC user manual (https://avrdudes.github.io/avr-libc/avr-libc-user-manual/).
  
!    * It is legitimate for user-specific startup code to set up 'EIND'
       early, for example by means of initialization code located in
!      section '.init3'.  Such code runs prior to general startup code
       that initializes RAM and calls constructors, but after the bit of
!      startup code from AVR-LibC that sets 'EIND' to the segment where
       the vector table is located.
            #include <avr/io.h>
  
--- 23451,23500 ----
  
   In order to facilitate indirect jump on devices with more than 128 Ki
  bytes of program memory space, there is a special function register
! called â€˜EINDâ€™ that serves as most significant part of the target address
! when â€˜EICALLâ€™ or â€˜EIJMPâ€™ instructions are used.
  
   Indirect jumps and calls on these devices are handled as follows by the
  compiler and are subject to some limitations:
  
!    â€¢ The compiler never sets â€˜EINDâ€™.
  
!    â€¢ The compiler uses â€˜EINDâ€™ implicitly in â€˜EICALLâ€™/â€˜EIJMPâ€™
!      instructions or might read â€˜EINDâ€™ directly in order to emulate an
!      indirect call/jump by means of a â€˜RETâ€™ instruction.
  
!    â€¢ The compiler assumes that â€˜EINDâ€™ never changes during the startup
!      code or during the application.  In particular, â€˜EINDâ€™ is not
       saved/restored in function or interrupt service routine
       prologue/epilogue.
  
!    â€¢ For indirect calls to functions and computed goto, the linker
       generates _stubs_.  Stubs are jump pads sometimes also called
       _trampolines_.  Thus, the indirect call/jump jumps to such a stub.
       The stub contains a direct jump to the desired address.
  
!    â€¢ Linker relaxation must be turned on so that the linker generates
       the stubs correctly in all situations.  See the compiler option
!      â€˜-mrelaxâ€™ and the linker option â€˜--relaxâ€™.  There are corner cases
       where the linker is supposed to generate stubs but aborts without
       relaxation and without a helpful error message.
  
!    â€¢ The default linker script is arranged for code with â€˜EIND = 0â€™.  If
!      code is supposed to work for a setup with â€˜EIND != 0â€™, a custom
       linker script has to be used in order to place the sections whose
!      name start with â€˜.trampolinesâ€™ into the segment where â€˜EINDâ€™ points
       to.
  
!    â€¢ The startup code from libgcc never sets â€˜EINDâ€™.  Notice that
       startup code is a blend of code from libgcc and AVR-LibC. For the
!      impact of AVR-LibC on â€˜EINDâ€™, see the
       AVR-LibC user manual (https://avrdudes.github.io/avr-libc/avr-libc-user-manual/).
  
!    â€¢ It is legitimate for user-specific startup code to set up â€˜EINDâ€™
       early, for example by means of initialization code located in
!      section â€˜.init3â€™.  Such code runs prior to general startup code
       that initializes RAM and calls constructors, but after the bit of
!      startup code from AVR-LibC that sets â€˜EINDâ€™ to the segment where
       the vector table is located.
            #include <avr/io.h>
  
*************** compiler and are subject to some limitat
*** 23498,23529 ****
                              "out %i0,r24" :: "n" (&EIND) : "r24","memory");
            }
  
!      The '__trampolines_start' symbol is defined in the linker script.
  
!    * Stubs are generated automatically by the linker if the following
       two conditions are met:
  
!         - The address of a label is taken by means of the 'gs' modifier
            (short for _generate stubs_) like so:
                 LDI r24, lo8(gs(FUNC))
                 LDI r25, hi8(gs(FUNC))
!         - The final location of that label is in a code segment
            _outside_ the segment where the stubs are located.
  
!    * The compiler emits such 'gs' modifiers for code labels in the
       following situations:
!         - Taking address of a function or code label.
!         - Computed goto.
!         - If prologue-save function is used, see '-mcall-prologues'
            command-line option.
!         - Switch/case dispatch tables.  If you do not want such dispatch
!           tables you can specify the '-fno-jump-tables' command-line
            option.
!         - C and C++ constructors/destructors called during
            startup/shutdown.
!         - If the tools hit a 'gs()' modifier explained above.
  
!    * Jumping to non-symbolic addresses like so is _not_ supported:
  
            int main (void)
            {
--- 23506,23537 ----
                              "out %i0,r24" :: "n" (&EIND) : "r24","memory");
            }
  
!      The â€˜__trampolines_startâ€™ symbol is defined in the linker script.
  
!    â€¢ Stubs are generated automatically by the linker if the following
       two conditions are met:
  
!         âˆ’ The address of a label is taken by means of the â€˜gsâ€™ modifier
            (short for _generate stubs_) like so:
                 LDI r24, lo8(gs(FUNC))
                 LDI r25, hi8(gs(FUNC))
!         âˆ’ The final location of that label is in a code segment
            _outside_ the segment where the stubs are located.
  
!    â€¢ The compiler emits such â€˜gsâ€™ modifiers for code labels in the
       following situations:
!         âˆ’ Taking address of a function or code label.
!         âˆ’ Computed goto.
!         âˆ’ If prologue-save function is used, see â€˜-mcall-prologuesâ€™
            command-line option.
!         âˆ’ Switch/case dispatch tables.  If you do not want such dispatch
!           tables you can specify the â€˜-fno-jump-tablesâ€™ command-line
            option.
!         âˆ’ C and C++ constructors/destructors called during
            startup/shutdown.
!         âˆ’ If the tools hit a â€˜gs()â€™ modifier explained above.
  
!    â€¢ Jumping to non-symbolic addresses like so is _not_ supported:
  
            int main (void)
            {
*************** compiler and are subject to some limitat
*** 23532,23538 ****
            }
  
       Instead, a stub has to be set up, i.e. the function has to be
!      called through a symbol ('func_4' in the example):
  
            int main (void)
            {
--- 23540,23546 ----
            }
  
       Instead, a stub has to be set up, i.e. the function has to be
!      called through a symbol (â€˜func_4â€™ in the example):
  
            int main (void)
            {
*************** compiler and are subject to some limitat
*** 23542,23579 ****
                return func_4();
            }
  
!      and the application be linked with '-Wl,--defsym,func_4=0x4'.
!      Alternatively, 'func_4' can be defined in the linker script.
  
! 3.20.6.3 Handling of the 'RAMPD', 'RAMPX', 'RAMPY' and 'RAMPZ' Special Function Registers
  .........................................................................................
  
  Some AVR devices support memories larger than the 64 KiB range that can
  be accessed with 16-bit pointers.  To access memory locations outside
! this 64 KiB range, the content of a 'RAMP' register is used as high part
! of the address: The 'X', 'Y', 'Z' address register is concatenated with
! the 'RAMPX', 'RAMPY', 'RAMPZ' special function register, respectively,
! to get a wide address.  Similarly, 'RAMPD' is used together with direct
  addressing.
  
!    * The startup code initializes the 'RAMP' special function registers
       with zero.
  
!    * If a *note named address space: AVR Named Address Spaces. other
!      than generic or '__flash' is used, then 'RAMPZ' is set as needed
       before the operation.
  
!    * If the device supports RAM larger than 64 KiB and the compiler
!      needs to change 'RAMPZ' to accomplish an operation, 'RAMPZ' is
       reset to zero after the operation.
  
!    * If the device comes with a specific 'RAMP' register, the ISR
       prologue/epilogue saves/restores that SFR and initializes it with
       zero in case the ISR code might (implicitly) use it.
  
!    * RAM larger than 64 KiB is not supported by GCC for AVR targets.  If
       you use inline assembler to read from locations outside the 16-bit
!      address range and change one of the 'RAMP' registers, you must
       reset it to zero after the access.
  
  3.20.6.4 AVR Built-in Macros
--- 23550,23587 ----
                return func_4();
            }
  
!      and the application be linked with â€˜-Wl,--defsym,func_4=0x4â€™.
!      Alternatively, â€˜func_4â€™ can be defined in the linker script.
  
! 3.20.6.3 Handling of the â€˜RAMPDâ€™, â€˜RAMPXâ€™, â€˜RAMPYâ€™ and â€˜RAMPZâ€™ Special Function Registers
  .........................................................................................
  
  Some AVR devices support memories larger than the 64 KiB range that can
  be accessed with 16-bit pointers.  To access memory locations outside
! this 64 KiB range, the content of a â€˜RAMPâ€™ register is used as high part
! of the address: The â€˜Xâ€™, â€˜Yâ€™, â€˜Zâ€™ address register is concatenated with
! the â€˜RAMPXâ€™, â€˜RAMPYâ€™, â€˜RAMPZâ€™ special function register, respectively,
! to get a wide address.  Similarly, â€˜RAMPDâ€™ is used together with direct
  addressing.
  
!    â€¢ The startup code initializes the â€˜RAMPâ€™ special function registers
       with zero.
  
!    â€¢ If a *note named address space: AVR Named Address Spaces. other
!      than generic or â€˜__flashâ€™ is used, then â€˜RAMPZâ€™ is set as needed
       before the operation.
  
!    â€¢ If the device supports RAM larger than 64 KiB and the compiler
!      needs to change â€˜RAMPZâ€™ to accomplish an operation, â€˜RAMPZâ€™ is
       reset to zero after the operation.
  
!    â€¢ If the device comes with a specific â€˜RAMPâ€™ register, the ISR
       prologue/epilogue saves/restores that SFR and initializes it with
       zero in case the ISR code might (implicitly) use it.
  
!    â€¢ RAM larger than 64 KiB is not supported by GCC for AVR targets.  If
       you use inline assembler to read from locations outside the 16-bit
!      address range and change one of the â€˜RAMPâ€™ registers, you must
       reset it to zero after the access.
  
  3.20.6.4 AVR Built-in Macros
*************** addressing.
*** 23582,23782 ****
  GCC defines several built-in macros so that the user code can test for
  the presence or absence of features.  Almost any of the following
  built-in macros are deduced from device capabilities and thus triggered
! by the '-mmcu=' command-line option.
  
   For even more AVR-specific built-in macros see *note AVR Named Address
  Spaces:: and *note AVR Built-in Functions::.
  
! '__AVR_ARCH__'
       Build-in macro that resolves to a decimal number that identifies
!      the architecture and depends on the '-mmcu=MCU' option.  Possible
       values are:
  
!      '2', '25', '3', '31', '35', '4', '5', '51', '6'
  
!      for MCU='avr2', 'avr25', 'avr3', 'avr31', 'avr35', 'avr4', 'avr5',
!      'avr51', 'avr6',
  
       respectively and
  
!      '100', '102', '103', '104', '105', '106', '107'
  
!      for MCU='avrtiny', 'avrxmega2', 'avrxmega3', 'avrxmega4',
!      'avrxmega5', 'avrxmega6', 'avrxmega7', respectively.  If MCU
       specifies a device, this built-in macro is set accordingly.  For
!      example, with '-mmcu=atmega8' the macro is defined to '4'.
  
! '__AVR_DEVICE__'
!      Setting '-mmcu=DEVICE' defines this built-in macro which reflects
!      the device's name.  For example, '-mmcu=atmega8' defines the
!      built-in macro '__AVR_ATmega8__', '-mmcu=attiny261a' defines
!      '__AVR_ATtiny261A__', etc.
  
!      The built-in macros' names follow the scheme '__AVR_DEVICE__' where
       DEVICE is the device name as from the AVR user manual.  The
       difference between DEVICE in the built-in macro and DEVICE in
!      '-mmcu=DEVICE' is that the latter is always lowercase.
  
       If DEVICE is not a device but only a core architecture like
!      'avr51', this macro is not defined.
  
! '__AVR_DEVICE_NAME__'
!      Setting '-mmcu=DEVICE' defines this built-in macro to the device's
!      name.  For example, with '-mmcu=atmega8' the macro is defined to
!      'atmega8'.
  
       If DEVICE is not a device but only a core architecture like
!      'avr51', this macro is not defined.
  
! '__AVR_CVT__'
!      The code is being compiled with option '-mcvt' to use a _compact
       vector table_.
  
! '__AVR_XMEGA__'
       The device / architecture belongs to the XMEGA family of devices.
  
! '__AVR_HAVE_ADIW__'
!      The device has the 'ADIW' and 'SBIW' instructions.
  
! '__AVR_HAVE_ELPM__'
!      The device has the 'ELPM' instruction.
  
! '__AVR_HAVE_ELPMX__'
!      The device has the 'ELPM RN,Z' and 'ELPM RN,Z+' instructions.
  
! '__AVR_HAVE_LPMX__'
!      The device has the 'LPM RN,Z' and 'LPM RN,Z+' instructions.
  
! '__AVR_HAVE_MOVW__'
!      The device has the 'MOVW' instruction to perform 16-bit
       register-register moves.
  
! '__AVR_HAVE_MUL__'
       The device has a hardware multiplier.
  
! '__AVR_HAVE_JMP_CALL__'
!      The device has the 'JMP' and 'CALL' instructions.  This is the case
       for devices with more than 8 KiB of program memory.
  
! '__AVR_HAVE_EIJMP_EICALL__'
! '__AVR_3_BYTE_PC__'
!      The device has the 'EIJMP' and 'EICALL' instructions.  This is the
       case for devices with more than 128 KiB of program memory.  This
       also means that the program counter (PC) is 3 bytes wide.
  
! '__AVR_2_BYTE_PC__'
       The program counter (PC) is 2 bytes wide.  This is the case for
       devices with up to 128 KiB of program memory.
  
! '__AVR_HAVE_8BIT_SP__'
! '__AVR_HAVE_16BIT_SP__'
       The stack pointer (SP) register is treated as 8-bit respectively
       16-bit register by the compiler.  The definition of these macros is
!      affected by '-mtiny-stack'.
  
! '__AVR_HAVE_SPH__'
! '__AVR_SP8__'
       The device has the SPH (high part of stack pointer) special
       function register or has an 8-bit stack pointer, respectively.  The
!      definition of these macros is affected by '-mmcu=' and in the cases
!      of '-mmcu=avr2' and '-mmcu=avr25' also by '-msp8'.
  
! '__AVR_HAVE_RAMPD__'
! '__AVR_HAVE_RAMPX__'
! '__AVR_HAVE_RAMPY__'
! '__AVR_HAVE_RAMPZ__'
!      The device has the 'RAMPD', 'RAMPX', 'RAMPY', 'RAMPZ' special
       function register, respectively.
  
! '__NO_INTERRUPTS__'
!      This macro reflects the '-mno-interrupts' command-line option.
  
! '__AVR_ERRATA_SKIP__'
! '__AVR_ERRATA_SKIP_JMP_CALL__'
       Some AVR devices (AT90S8515, ATmega103) must not skip 32-bit
       instructions because of a hardware erratum.  Skip instructions are
!      'SBRS', 'SBRC', 'SBIS', 'SBIC' and 'CPSE'.  The second macro is
!      only defined if '__AVR_HAVE_JMP_CALL__' is also set.
  
! '__AVR_ISA_RMW__'
       The device has Read-Modify-Write instructions (XCH, LAC, LAS and
       LAT).
  
! '__AVR_SFR_OFFSET__=OFFSET'
       Instructions that can address I/O special function registers
!      directly like 'IN', 'OUT', 'SBI', etc. may use a different address
!      as if addressed by an instruction to access RAM like 'LD' or 'STS'.
       This offset depends on the device architecture and has to be
       subtracted from the RAM address in order to get the respective
       I/O address.
  
! '__AVR_SHORT_CALLS__'
!      The '-mshort-calls' command line option is set.
  
! '__AVR_PM_BASE_ADDRESS__=ADDR'
!      Some devices support reading from flash memory by means of 'LD*'
       instructions.  The flash memory is seen in the data address space
!      at an offset of '__AVR_PM_BASE_ADDRESS__'.  If this macro is not
       defined, this feature is not available.  If defined, the address
!      space is linear and there is no need to put '.rodata' into RAM.
       This is handled by the default linker description file, and is
!      currently available for 'avrtiny' and 'avrxmega3'.  Even more
!      convenient, there is no need to use address spaces like '__flash'
!      or features like attribute 'progmem' and 'pgm_read_*'.
  
! '__AVR_HAVE_FLMAP__'
       This macro is defined provided the following conditions are met:
!         * The device has the 'NVMCTRL_CTRLB.FLMAP' bitfield.  This
            applies to the AVR64* and AVR128* devices.
!         * It's not known at assembler-time which emulation will be used.
       This implies the compiler was configured with GNU Binutils that
       implement PR31124 (https://sourceware.org/PR31124).
  
! '__AVR_RODATA_IN_RAM__'
       This macro is undefined when the code is compiled for a core
       architecture.
  
       When the code is compiled for a device, the macro is defined to 1
!      when the '.rodata' sections for read-only data is located in RAM;
       and defined to 0, otherwise.
  
! '__WITH_AVRLIBC__'
       The compiler is configured to be used together with AVR-LibC. See
!      the '--with-avrlibc' configure option.
  
! '__HAVE_SIGNAL_N__'
!      The compiler supports the 'signal(NUM)' and 'interrupt(NUM)' *note
       function attributes: AVR Function Attributes. with an argument NUM
       that specifies the number of the interrupt service routine.
  
! '__HAVE_DOUBLE_MULTILIB__'
!      Defined if '-mdouble=' acts as a multilib option.
  
! '__HAVE_DOUBLE32__'
! '__HAVE_DOUBLE64__'
       Defined if the compiler supports 32-bit double resp.  64-bit
!      double.  The actual layout is specified by option '-mdouble='.
  
! '__DEFAULT_DOUBLE__'
!      The size in bits of 'double' if '-mdouble=' is not set.  To test
!      the layout of 'double' in a program, use the built-in macro
!      '__SIZEOF_DOUBLE__'.
  
! '__HAVE_LONG_DOUBLE32__'
! '__HAVE_LONG_DOUBLE64__'
! '__HAVE_LONG_DOUBLE_MULTILIB__'
! '__DEFAULT_LONG_DOUBLE__'
!      Same as above, but for 'long double' instead of 'double'.
  
! '__WITH_DOUBLE_COMPARISON__'
!      Reflects the '--with-double-comparison={tristate|bool|libf7}'
       configure option (https://gcc.gnu.org/install/configure.html#avr)
!      and is defined to '2' or '3'.
  
! '__WITH_LIBF7_LIBGCC__'
! '__WITH_LIBF7_MATH__'
! '__WITH_LIBF7_MATH_SYMBOLS__'
!      Reflects the '--with-libf7={libgcc|math|math-symbols}'
       configure option (https://gcc.gnu.org/install/configure.html#avr).
  
  3.20.6.5 AVR Internal Options
--- 23590,23790 ----
  GCC defines several built-in macros so that the user code can test for
  the presence or absence of features.  Almost any of the following
  built-in macros are deduced from device capabilities and thus triggered
! by the â€˜-mmcu=â€™ command-line option.
  
   For even more AVR-specific built-in macros see *note AVR Named Address
  Spaces:: and *note AVR Built-in Functions::.
  
! â€˜__AVR_ARCH__â€™
       Build-in macro that resolves to a decimal number that identifies
!      the architecture and depends on the â€˜-mmcu=MCUâ€™ option.  Possible
       values are:
  
!      â€˜2â€™, â€˜25â€™, â€˜3â€™, â€˜31â€™, â€˜35â€™, â€˜4â€™, â€˜5â€™, â€˜51â€™, â€˜6â€™
  
!      for MCU=â€˜avr2â€™, â€˜avr25â€™, â€˜avr3â€™, â€˜avr31â€™, â€˜avr35â€™, â€˜avr4â€™, â€˜avr5â€™,
!      â€˜avr51â€™, â€˜avr6â€™,
  
       respectively and
  
!      â€˜100â€™, â€˜102â€™, â€˜103â€™, â€˜104â€™, â€˜105â€™, â€˜106â€™, â€˜107â€™
  
!      for MCU=â€˜avrtinyâ€™, â€˜avrxmega2â€™, â€˜avrxmega3â€™, â€˜avrxmega4â€™,
!      â€˜avrxmega5â€™, â€˜avrxmega6â€™, â€˜avrxmega7â€™, respectively.  If MCU
       specifies a device, this built-in macro is set accordingly.  For
!      example, with â€˜-mmcu=atmega8â€™ the macro is defined to â€˜4â€™.
  
! â€˜__AVR_DEVICE__â€™
!      Setting â€˜-mmcu=DEVICEâ€™ defines this built-in macro which reflects
!      the device's name.  For example, â€˜-mmcu=atmega8â€™ defines the
!      built-in macro â€˜__AVR_ATmega8__â€™, â€˜-mmcu=attiny261aâ€™ defines
!      â€˜__AVR_ATtiny261A__â€™, etc.
  
!      The built-in macros' names follow the scheme â€˜__AVR_DEVICE__â€™ where
       DEVICE is the device name as from the AVR user manual.  The
       difference between DEVICE in the built-in macro and DEVICE in
!      â€˜-mmcu=DEVICEâ€™ is that the latter is always lowercase.
  
       If DEVICE is not a device but only a core architecture like
!      â€˜avr51â€™, this macro is not defined.
  
! â€˜__AVR_DEVICE_NAME__â€™
!      Setting â€˜-mmcu=DEVICEâ€™ defines this built-in macro to the device's
!      name.  For example, with â€˜-mmcu=atmega8â€™ the macro is defined to
!      â€˜atmega8â€™.
  
       If DEVICE is not a device but only a core architecture like
!      â€˜avr51â€™, this macro is not defined.
  
! â€˜__AVR_CVT__â€™
!      The code is being compiled with option â€˜-mcvtâ€™ to use a _compact
       vector table_.
  
! â€˜__AVR_XMEGA__â€™
       The device / architecture belongs to the XMEGA family of devices.
  
! â€˜__AVR_HAVE_ADIW__â€™
!      The device has the â€˜ADIWâ€™ and â€˜SBIWâ€™ instructions.
  
! â€˜__AVR_HAVE_ELPM__â€™
!      The device has the â€˜ELPMâ€™ instruction.
  
! â€˜__AVR_HAVE_ELPMX__â€™
!      The device has the â€˜ELPM RN,Zâ€™ and â€˜ELPM RN,Z+â€™ instructions.
  
! â€˜__AVR_HAVE_LPMX__â€™
!      The device has the â€˜LPM RN,Zâ€™ and â€˜LPM RN,Z+â€™ instructions.
  
! â€˜__AVR_HAVE_MOVW__â€™
!      The device has the â€˜MOVWâ€™ instruction to perform 16-bit
       register-register moves.
  
! â€˜__AVR_HAVE_MUL__â€™
       The device has a hardware multiplier.
  
! â€˜__AVR_HAVE_JMP_CALL__â€™
!      The device has the â€˜JMPâ€™ and â€˜CALLâ€™ instructions.  This is the case
       for devices with more than 8 KiB of program memory.
  
! â€˜__AVR_HAVE_EIJMP_EICALL__â€™
! â€˜__AVR_3_BYTE_PC__â€™
!      The device has the â€˜EIJMPâ€™ and â€˜EICALLâ€™ instructions.  This is the
       case for devices with more than 128 KiB of program memory.  This
       also means that the program counter (PC) is 3 bytes wide.
  
! â€˜__AVR_2_BYTE_PC__â€™
       The program counter (PC) is 2 bytes wide.  This is the case for
       devices with up to 128 KiB of program memory.
  
! â€˜__AVR_HAVE_8BIT_SP__â€™
! â€˜__AVR_HAVE_16BIT_SP__â€™
       The stack pointer (SP) register is treated as 8-bit respectively
       16-bit register by the compiler.  The definition of these macros is
!      affected by â€˜-mtiny-stackâ€™.
  
! â€˜__AVR_HAVE_SPH__â€™
! â€˜__AVR_SP8__â€™
       The device has the SPH (high part of stack pointer) special
       function register or has an 8-bit stack pointer, respectively.  The
!      definition of these macros is affected by â€˜-mmcu=â€™ and in the cases
!      of â€˜-mmcu=avr2â€™ and â€˜-mmcu=avr25â€™ also by â€˜-msp8â€™.
  
! â€˜__AVR_HAVE_RAMPD__â€™
! â€˜__AVR_HAVE_RAMPX__â€™
! â€˜__AVR_HAVE_RAMPY__â€™
! â€˜__AVR_HAVE_RAMPZ__â€™
!      The device has the â€˜RAMPDâ€™, â€˜RAMPXâ€™, â€˜RAMPYâ€™, â€˜RAMPZâ€™ special
       function register, respectively.
  
! â€˜__NO_INTERRUPTS__â€™
!      This macro reflects the â€˜-mno-interruptsâ€™ command-line option.
  
! â€˜__AVR_ERRATA_SKIP__â€™
! â€˜__AVR_ERRATA_SKIP_JMP_CALL__â€™
       Some AVR devices (AT90S8515, ATmega103) must not skip 32-bit
       instructions because of a hardware erratum.  Skip instructions are
!      â€˜SBRSâ€™, â€˜SBRCâ€™, â€˜SBISâ€™, â€˜SBICâ€™ and â€˜CPSEâ€™.  The second macro is
!      only defined if â€˜__AVR_HAVE_JMP_CALL__â€™ is also set.
  
! â€˜__AVR_ISA_RMW__â€™
       The device has Read-Modify-Write instructions (XCH, LAC, LAS and
       LAT).
  
! â€˜__AVR_SFR_OFFSET__=OFFSETâ€™
       Instructions that can address I/O special function registers
!      directly like â€˜INâ€™, â€˜OUTâ€™, â€˜SBIâ€™, etc. may use a different address
!      as if addressed by an instruction to access RAM like â€˜LDâ€™ or â€˜STSâ€™.
       This offset depends on the device architecture and has to be
       subtracted from the RAM address in order to get the respective
       I/O address.
  
! â€˜__AVR_SHORT_CALLS__â€™
!      The â€˜-mshort-callsâ€™ command line option is set.
  
! â€˜__AVR_PM_BASE_ADDRESS__=ADDRâ€™
!      Some devices support reading from flash memory by means of â€˜LD*â€™
       instructions.  The flash memory is seen in the data address space
!      at an offset of â€˜__AVR_PM_BASE_ADDRESS__â€™.  If this macro is not
       defined, this feature is not available.  If defined, the address
!      space is linear and there is no need to put â€˜.rodataâ€™ into RAM.
       This is handled by the default linker description file, and is
!      currently available for â€˜avrtinyâ€™ and â€˜avrxmega3â€™.  Even more
!      convenient, there is no need to use address spaces like â€˜__flashâ€™
!      or features like attribute â€˜progmemâ€™ and â€˜pgm_read_*â€™.
  
! â€˜__AVR_HAVE_FLMAP__â€™
       This macro is defined provided the following conditions are met:
!         â€¢ The device has the â€˜NVMCTRL_CTRLB.FLMAPâ€™ bitfield.  This
            applies to the AVR64* and AVR128* devices.
!         â€¢ It's not known at assembler-time which emulation will be used.
       This implies the compiler was configured with GNU Binutils that
       implement PR31124 (https://sourceware.org/PR31124).
  
! â€˜__AVR_RODATA_IN_RAM__â€™
       This macro is undefined when the code is compiled for a core
       architecture.
  
       When the code is compiled for a device, the macro is defined to 1
!      when the â€˜.rodataâ€™ sections for read-only data is located in RAM;
       and defined to 0, otherwise.
  
! â€˜__WITH_AVRLIBC__â€™
       The compiler is configured to be used together with AVR-LibC. See
!      the â€˜--with-avrlibcâ€™ configure option.
  
! â€˜__HAVE_SIGNAL_N__â€™
!      The compiler supports the â€˜signal(NUM)â€™ and â€˜interrupt(NUM)â€™ *note
       function attributes: AVR Function Attributes. with an argument NUM
       that specifies the number of the interrupt service routine.
  
! â€˜__HAVE_DOUBLE_MULTILIB__â€™
!      Defined if â€˜-mdouble=â€™ acts as a multilib option.
  
! â€˜__HAVE_DOUBLE32__â€™
! â€˜__HAVE_DOUBLE64__â€™
       Defined if the compiler supports 32-bit double resp.  64-bit
!      double.  The actual layout is specified by option â€˜-mdouble=â€™.
  
! â€˜__DEFAULT_DOUBLE__â€™
!      The size in bits of â€˜doubleâ€™ if â€˜-mdouble=â€™ is not set.  To test
!      the layout of â€˜doubleâ€™ in a program, use the built-in macro
!      â€˜__SIZEOF_DOUBLE__â€™.
  
! â€˜__HAVE_LONG_DOUBLE32__â€™
! â€˜__HAVE_LONG_DOUBLE64__â€™
! â€˜__HAVE_LONG_DOUBLE_MULTILIB__â€™
! â€˜__DEFAULT_LONG_DOUBLE__â€™
!      Same as above, but for â€˜long doubleâ€™ instead of â€˜doubleâ€™.
  
! â€˜__WITH_DOUBLE_COMPARISON__â€™
!      Reflects the â€˜--with-double-comparison={tristate|bool|libf7}â€™
       configure option (https://gcc.gnu.org/install/configure.html#avr)
!      and is defined to â€˜2â€™ or â€˜3â€™.
  
! â€˜__WITH_LIBF7_LIBGCC__â€™
! â€˜__WITH_LIBF7_MATH__â€™
! â€˜__WITH_LIBF7_MATH_SYMBOLS__â€™
!      Reflects the â€˜--with-libf7={libgcc|math|math-symbols}â€™
       configure option (https://gcc.gnu.org/install/configure.html#avr).
  
  3.20.6.5 AVR Internal Options
*************** sub-optimal or wrong code.  They are doc
*** 23790,23824 ****
  order to get a better understanding of
  device specs (https://gcc.gnu.org/wiki/avr-gcc#spec-files) files.
  
! '-mn-flash=NUM'
       Assume that the flash memory has a size of NUM times 64 KiB. This
!      determines which '__flashN' address spaces are available.
  
! '-mflmap'
!      The device has the 'FLMAP' bit field located in special function
!      register 'NVMCTRL_CTRLB'.
  
! '-mrmw'
       Assume that the device supports the Read-Modify-Write instructions
!      'XCH', 'LAC', 'LAS' and 'LAT'.
  
! '-mshort-calls'
  
!      Assume that 'RJMP' and 'RCALL' can target the whole program memory.
       This option is used for multilib generation and selection for the
!      devices from architecture 'avrxmega3'.
  
! '-mskip-bug'
  
!      Generate code without skips ('CPSE', 'SBRS', 'SBRC', 'SBIS',
!      'SBIC') over 32-bit instructions.
  
! '-msp8'
       Treat the stack pointer register as an 8-bit register, i.e. assume
       the high byte of the stack pointer is zero.  This option is used by
!      the compiler to select and build multilibs for architectures 'avr2'
!      and 'avr25'.  These architectures mix devices with and without
!      'SPH'.
  
  
  File: gcc.info,  Node: Blackfin Options,  Next: C6X Options,  Prev: AVR Options,  Up: Submodel Options
--- 23798,23832 ----
  order to get a better understanding of
  device specs (https://gcc.gnu.org/wiki/avr-gcc#spec-files) files.
  
! â€˜-mn-flash=NUMâ€™
       Assume that the flash memory has a size of NUM times 64 KiB. This
!      determines which â€˜__flashNâ€™ address spaces are available.
  
! â€˜-mflmapâ€™
!      The device has the â€˜FLMAPâ€™ bit field located in special function
!      register â€˜NVMCTRL_CTRLBâ€™.
  
! â€˜-mrmwâ€™
       Assume that the device supports the Read-Modify-Write instructions
!      â€˜XCHâ€™, â€˜LACâ€™, â€˜LASâ€™ and â€˜LATâ€™.
  
! â€˜-mshort-callsâ€™
  
!      Assume that â€˜RJMPâ€™ and â€˜RCALLâ€™ can target the whole program memory.
       This option is used for multilib generation and selection for the
!      devices from architecture â€˜avrxmega3â€™.
  
! â€˜-mskip-bugâ€™
  
!      Generate code without skips (â€˜CPSEâ€™, â€˜SBRSâ€™, â€˜SBRCâ€™, â€˜SBISâ€™,
!      â€˜SBICâ€™) over 32-bit instructions.
  
! â€˜-msp8â€™
       Treat the stack pointer register as an 8-bit register, i.e. assume
       the high byte of the stack pointer is zero.  This option is used by
!      the compiler to select and build multilibs for architectures â€˜avr2â€™
!      and â€˜avr25â€™.  These architectures mix devices with and without
!      â€˜SPHâ€™.
  
  
  File: gcc.info,  Node: Blackfin Options,  Next: C6X Options,  Prev: AVR Options,  Up: Submodel Options
*************** File: gcc.info,  Node: Blackfin Options,
*** 23826,23943 ****
  3.20.7 Blackfin Options
  -----------------------
  
! '-mcpu=CPU[-SIREVISION]'
       Specifies the name of the target Blackfin processor.  Currently,
!      CPU can be one of 'bf512', 'bf514', 'bf516', 'bf518', 'bf522',
!      'bf523', 'bf524', 'bf525', 'bf526', 'bf527', 'bf531', 'bf532',
!      'bf533', 'bf534', 'bf536', 'bf537', 'bf538', 'bf539', 'bf542',
!      'bf544', 'bf547', 'bf548', 'bf549', 'bf542m', 'bf544m', 'bf547m',
!      'bf548m', 'bf549m', 'bf561', 'bf592'.
  
       The optional SIREVISION specifies the silicon revision of the
       target Blackfin processor.  Any workarounds available for the
!      targeted silicon revision are enabled.  If SIREVISION is 'none', no
!      workarounds are enabled.  If SIREVISION is 'any', all workarounds
!      for the targeted processor are enabled.  The '__SILICON_REVISION__'
       macro is defined to two hexadecimal digits representing the major
       and minor numbers in the silicon revision.  If SIREVISION is
!      'none', the '__SILICON_REVISION__' is not defined.  If SIREVISION
!      is 'any', the '__SILICON_REVISION__' is defined to be '0xffff'.  If
       this optional SIREVISION is not used, GCC assumes the latest known
       silicon revision of the targeted Blackfin processor.
  
       GCC defines a preprocessor macro for the specified CPU.  For the
!      'bfin-elf' toolchain, this option causes the hardware BSP provided
!      by libgloss to be linked in if '-msim' is not given.
  
!      Without this option, 'bf532' is used as the processor by default.
  
!      Note that support for 'bf561' is incomplete.  For 'bf561', only the
       preprocessor macro is defined.
  
! '-msim'
       Specifies that the program will be run on the simulator.  This
       causes the simulator BSP provided by libgloss to be linked in.
!      This option has effect only for 'bfin-elf' toolchain.  Certain
!      other options, such as '-mid-shared-library' and '-mfdpic', imply
!      '-msim'.
  
! '-momit-leaf-frame-pointer'
       Don't keep the frame pointer in a register for leaf functions.
       This avoids the instructions to save, set up and restore frame
       pointers and makes an extra register available in leaf functions.
  
! '-mspecld-anomaly'
       When enabled, the compiler ensures that the generated code does not
       contain speculative loads after jump instructions.  If this option
!      is used, '__WORKAROUND_SPECULATIVE_LOADS' is defined.
  
! '-mno-specld-anomaly'
       Don't generate extra code to prevent speculative loads from
       occurring.
  
! '-mcsync-anomaly'
       When enabled, the compiler ensures that the generated code does not
       contain CSYNC or SSYNC instructions too soon after conditional
!      branches.  If this option is used, '__WORKAROUND_SPECULATIVE_SYNCS'
       is defined.
  
! '-mno-csync-anomaly'
       Don't generate extra code to prevent CSYNC or SSYNC instructions
       from occurring too soon after a conditional branch.
  
! '-mlow64k'
       When enabled, the compiler is free to take advantage of the
       knowledge that the entire program fits into the low 64k of memory.
  
! '-mno-low64k'
       Assume that the program is arbitrarily large.  This is the default.
  
! '-mstack-check-l1'
       Do stack checking using information placed into L1 scratchpad
       memory by the uClinux kernel.
  
! '-mid-shared-library'
       Generate code that supports shared libraries via the library ID
       method.  This allows for execute in place and shared libraries in
       an environment without virtual memory management.  This option
!      implies '-fPIC'.  With a 'bfin-elf' target, this option implies
!      '-msim'.
  
! '-mno-id-shared-library'
       Generate code that doesn't assume ID-based shared libraries are
       being used.  This is the default.
  
! '-mleaf-id-shared-library'
       Generate code that supports shared libraries via the library ID
       method, but assumes that this library or executable won't link
       against any other ID shared libraries.  That allows the compiler to
       use faster code for jumps and calls.
  
! '-mno-leaf-id-shared-library'
       Do not assume that the code being compiled won't link against any
       ID shared libraries.  Slower code is generated for jump and call
       insns.
  
! '-mshared-library-id=n'
       Specifies the identification number of the ID-based shared library
       being compiled.  Specifying a value of 0 generates more compact
       code; specifying other values forces the allocation of that number
       to the current library but is no more space- or time-efficient than
       omitting this option.
  
! '-msep-data'
       Generate code that allows the data segment to be located in a
       different area of memory from the text segment.  This allows for
       execute in place in an environment without virtual memory
       management by eliminating relocations against the text section.
  
! '-mno-sep-data'
       Generate code that assumes that the data segment follows the text
       segment.  This is the default.
  
! '-mlong-calls'
! '-mno-long-calls'
       Tells the compiler to perform function calls by first loading the
       address of the function into a register and then performing a
       subroutine call on this register.  This switch is needed if the
--- 23834,23951 ----
  3.20.7 Blackfin Options
  -----------------------
  
! â€˜-mcpu=CPU[-SIREVISION]â€™
       Specifies the name of the target Blackfin processor.  Currently,
!      CPU can be one of â€˜bf512â€™, â€˜bf514â€™, â€˜bf516â€™, â€˜bf518â€™, â€˜bf522â€™,
!      â€˜bf523â€™, â€˜bf524â€™, â€˜bf525â€™, â€˜bf526â€™, â€˜bf527â€™, â€˜bf531â€™, â€˜bf532â€™,
!      â€˜bf533â€™, â€˜bf534â€™, â€˜bf536â€™, â€˜bf537â€™, â€˜bf538â€™, â€˜bf539â€™, â€˜bf542â€™,
!      â€˜bf544â€™, â€˜bf547â€™, â€˜bf548â€™, â€˜bf549â€™, â€˜bf542mâ€™, â€˜bf544mâ€™, â€˜bf547mâ€™,
!      â€˜bf548mâ€™, â€˜bf549mâ€™, â€˜bf561â€™, â€˜bf592â€™.
  
       The optional SIREVISION specifies the silicon revision of the
       target Blackfin processor.  Any workarounds available for the
!      targeted silicon revision are enabled.  If SIREVISION is â€˜noneâ€™, no
!      workarounds are enabled.  If SIREVISION is â€˜anyâ€™, all workarounds
!      for the targeted processor are enabled.  The â€˜__SILICON_REVISION__â€™
       macro is defined to two hexadecimal digits representing the major
       and minor numbers in the silicon revision.  If SIREVISION is
!      â€˜noneâ€™, the â€˜__SILICON_REVISION__â€™ is not defined.  If SIREVISION
!      is â€˜anyâ€™, the â€˜__SILICON_REVISION__â€™ is defined to be â€˜0xffffâ€™.  If
       this optional SIREVISION is not used, GCC assumes the latest known
       silicon revision of the targeted Blackfin processor.
  
       GCC defines a preprocessor macro for the specified CPU.  For the
!      â€˜bfin-elfâ€™ toolchain, this option causes the hardware BSP provided
!      by libgloss to be linked in if â€˜-msimâ€™ is not given.
  
!      Without this option, â€˜bf532â€™ is used as the processor by default.
  
!      Note that support for â€˜bf561â€™ is incomplete.  For â€˜bf561â€™, only the
       preprocessor macro is defined.
  
! â€˜-msimâ€™
       Specifies that the program will be run on the simulator.  This
       causes the simulator BSP provided by libgloss to be linked in.
!      This option has effect only for â€˜bfin-elfâ€™ toolchain.  Certain
!      other options, such as â€˜-mid-shared-libraryâ€™ and â€˜-mfdpicâ€™, imply
!      â€˜-msimâ€™.
  
! â€˜-momit-leaf-frame-pointerâ€™
       Don't keep the frame pointer in a register for leaf functions.
       This avoids the instructions to save, set up and restore frame
       pointers and makes an extra register available in leaf functions.
  
! â€˜-mspecld-anomalyâ€™
       When enabled, the compiler ensures that the generated code does not
       contain speculative loads after jump instructions.  If this option
!      is used, â€˜__WORKAROUND_SPECULATIVE_LOADSâ€™ is defined.
  
! â€˜-mno-specld-anomalyâ€™
       Don't generate extra code to prevent speculative loads from
       occurring.
  
! â€˜-mcsync-anomalyâ€™
       When enabled, the compiler ensures that the generated code does not
       contain CSYNC or SSYNC instructions too soon after conditional
!      branches.  If this option is used, â€˜__WORKAROUND_SPECULATIVE_SYNCSâ€™
       is defined.
  
! â€˜-mno-csync-anomalyâ€™
       Don't generate extra code to prevent CSYNC or SSYNC instructions
       from occurring too soon after a conditional branch.
  
! â€˜-mlow64kâ€™
       When enabled, the compiler is free to take advantage of the
       knowledge that the entire program fits into the low 64k of memory.
  
! â€˜-mno-low64kâ€™
       Assume that the program is arbitrarily large.  This is the default.
  
! â€˜-mstack-check-l1â€™
       Do stack checking using information placed into L1 scratchpad
       memory by the uClinux kernel.
  
! â€˜-mid-shared-libraryâ€™
       Generate code that supports shared libraries via the library ID
       method.  This allows for execute in place and shared libraries in
       an environment without virtual memory management.  This option
!      implies â€˜-fPICâ€™.  With a â€˜bfin-elfâ€™ target, this option implies
!      â€˜-msimâ€™.
  
! â€˜-mno-id-shared-libraryâ€™
       Generate code that doesn't assume ID-based shared libraries are
       being used.  This is the default.
  
! â€˜-mleaf-id-shared-libraryâ€™
       Generate code that supports shared libraries via the library ID
       method, but assumes that this library or executable won't link
       against any other ID shared libraries.  That allows the compiler to
       use faster code for jumps and calls.
  
! â€˜-mno-leaf-id-shared-libraryâ€™
       Do not assume that the code being compiled won't link against any
       ID shared libraries.  Slower code is generated for jump and call
       insns.
  
! â€˜-mshared-library-id=nâ€™
       Specifies the identification number of the ID-based shared library
       being compiled.  Specifying a value of 0 generates more compact
       code; specifying other values forces the allocation of that number
       to the current library but is no more space- or time-efficient than
       omitting this option.
  
! â€˜-msep-dataâ€™
       Generate code that allows the data segment to be located in a
       different area of memory from the text segment.  This allows for
       execute in place in an environment without virtual memory
       management by eliminating relocations against the text section.
  
! â€˜-mno-sep-dataâ€™
       Generate code that assumes that the data segment follows the text
       segment.  This is the default.
  
! â€˜-mlong-callsâ€™
! â€˜-mno-long-callsâ€™
       Tells the compiler to perform function calls by first loading the
       address of the function into a register and then performing a
       subroutine call on this register.  This switch is needed if the
*************** File: gcc.info,  Node: Blackfin Options,
*** 23945,24000 ****
       offset-based version of subroutine call instruction.
  
       This feature is not enabled by default.  Specifying
!      '-mno-long-calls' restores the default behavior.  Note these
       switches have no effect on how the compiler generates code to
       handle function calls via function pointers.
  
! '-mfast-fp'
       Link with the fast floating-point library.  This library relaxes
       some of the IEEE floating-point standard's rules for checking
       inputs against Not-a-Number (NAN), in the interest of performance.
  
! '-minline-plt'
       Enable inlining of PLT entries in function calls to functions that
!      are not known to bind locally.  It has no effect without '-mfdpic'.
  
! '-mmulticore'
       Build a standalone application for multicore Blackfin processors.
       This option causes proper start files and link scripts supporting
!      multicore to be used, and defines the macro '__BFIN_MULTICORE'.  It
!      can only be used with '-mcpu=bf561[-SIREVISION]'.
  
!      This option can be used with '-mcorea' or '-mcoreb', which selects
!      the one-application-per-core programming model.  Without '-mcorea'
!      or '-mcoreb', the single-application/dual-core programming model is
       used.  In this model, the main function of Core B should be named
!      as 'coreb_main'.
  
       If this option is not used, the single-core application programming
       model is used.
  
! '-mcorea'
       Build a standalone application for Core A of BF561 when using the
       one-application-per-core programming model.  Proper start files and
       link scripts are used to support Core A, and the macro
!      '__BFIN_COREA' is defined.  This option can only be used in
!      conjunction with '-mmulticore'.
  
! '-mcoreb'
       Build a standalone application for Core B of BF561 when using the
       one-application-per-core programming model.  Proper start files and
       link scripts are used to support Core B, and the macro
!      '__BFIN_COREB' is defined.  When this option is used, 'coreb_main'
!      should be used instead of 'main'.  This option can only be used in
!      conjunction with '-mmulticore'.
  
! '-msdram'
       Build a standalone application for SDRAM. Proper start files and
       link scripts are used to put the application into SDRAM, and the
!      macro '__BFIN_SDRAM' is defined.  The loader should initialize
       SDRAM before loading the application.
  
! '-micplb'
       Assume that ICPLBs are enabled at run time.  This has an effect on
       certain anomaly workarounds.  For Linux targets, the default is to
       assume ICPLBs are enabled; for standalone applications the default
--- 23953,24008 ----
       offset-based version of subroutine call instruction.
  
       This feature is not enabled by default.  Specifying
!      â€˜-mno-long-callsâ€™ restores the default behavior.  Note these
       switches have no effect on how the compiler generates code to
       handle function calls via function pointers.
  
! â€˜-mfast-fpâ€™
       Link with the fast floating-point library.  This library relaxes
       some of the IEEE floating-point standard's rules for checking
       inputs against Not-a-Number (NAN), in the interest of performance.
  
! â€˜-minline-pltâ€™
       Enable inlining of PLT entries in function calls to functions that
!      are not known to bind locally.  It has no effect without â€˜-mfdpicâ€™.
  
! â€˜-mmulticoreâ€™
       Build a standalone application for multicore Blackfin processors.
       This option causes proper start files and link scripts supporting
!      multicore to be used, and defines the macro â€˜__BFIN_MULTICOREâ€™.  It
!      can only be used with â€˜-mcpu=bf561[-SIREVISION]â€™.
  
!      This option can be used with â€˜-mcoreaâ€™ or â€˜-mcorebâ€™, which selects
!      the one-application-per-core programming model.  Without â€˜-mcoreaâ€™
!      or â€˜-mcorebâ€™, the single-application/dual-core programming model is
       used.  In this model, the main function of Core B should be named
!      as â€˜coreb_mainâ€™.
  
       If this option is not used, the single-core application programming
       model is used.
  
! â€˜-mcoreaâ€™
       Build a standalone application for Core A of BF561 when using the
       one-application-per-core programming model.  Proper start files and
       link scripts are used to support Core A, and the macro
!      â€˜__BFIN_COREAâ€™ is defined.  This option can only be used in
!      conjunction with â€˜-mmulticoreâ€™.
  
! â€˜-mcorebâ€™
       Build a standalone application for Core B of BF561 when using the
       one-application-per-core programming model.  Proper start files and
       link scripts are used to support Core B, and the macro
!      â€˜__BFIN_COREBâ€™ is defined.  When this option is used, â€˜coreb_mainâ€™
!      should be used instead of â€˜mainâ€™.  This option can only be used in
!      conjunction with â€˜-mmulticoreâ€™.
  
! â€˜-msdramâ€™
       Build a standalone application for SDRAM. Proper start files and
       link scripts are used to put the application into SDRAM, and the
!      macro â€˜__BFIN_SDRAMâ€™ is defined.  The loader should initialize
       SDRAM before loading the application.
  
! â€˜-micplbâ€™
       Assume that ICPLBs are enabled at run time.  This has an effect on
       certain anomaly workarounds.  For Linux targets, the default is to
       assume ICPLBs are enabled; for standalone applications the default
*************** File: gcc.info,  Node: C6X Options,  Nex
*** 24006,24045 ****
  3.20.8 C6X Options
  ------------------
  
! '-march=NAME'
       This specifies the name of the target architecture.  GCC uses this
       name to determine what kind of instructions it can emit when
!      generating assembly code.  Permissible names are: 'c62x', 'c64x',
!      'c64x+', 'c67x', 'c67x+', 'c674x'.
  
! '-mbig-endian'
       Generate code for a big-endian target.
  
! '-mlittle-endian'
       Generate code for a little-endian target.  This is the default.
  
! '-msim'
       Choose startup files and linker script suitable for the simulator.
  
! '-msdata=default'
!      Put small global and static data in the '.neardata' section, which
!      is pointed to by register 'B14'.  Put small uninitialized global
!      and static data in the '.bss' section, which is adjacent to the
!      '.neardata' section.  Put small read-only data into the '.rodata'
       section.  The corresponding sections used for large pieces of data
!      are '.fardata', '.far' and '.const'.
  
! '-msdata=all'
       Put all data, not just small objects, into the sections reserved
!      for small data, and use addressing relative to the 'B14' register
       to access them.
  
! '-msdata=none'
       Make no use of the sections reserved for small data, and use
       absolute addresses to access all data.  Put all initialized global
!      and static data in the '.fardata' section, and all uninitialized
!      data in the '.far' section.  Put all constant data into the
!      '.const' section.
  
  
  File: gcc.info,  Node: CRIS Options,  Next: C-SKY Options,  Prev: C6X Options,  Up: Submodel Options
--- 24014,24053 ----
  3.20.8 C6X Options
  ------------------
  
! â€˜-march=NAMEâ€™
       This specifies the name of the target architecture.  GCC uses this
       name to determine what kind of instructions it can emit when
!      generating assembly code.  Permissible names are: â€˜c62xâ€™, â€˜c64xâ€™,
!      â€˜c64x+â€™, â€˜c67xâ€™, â€˜c67x+â€™, â€˜c674xâ€™.
  
! â€˜-mbig-endianâ€™
       Generate code for a big-endian target.
  
! â€˜-mlittle-endianâ€™
       Generate code for a little-endian target.  This is the default.
  
! â€˜-msimâ€™
       Choose startup files and linker script suitable for the simulator.
  
! â€˜-msdata=defaultâ€™
!      Put small global and static data in the â€˜.neardataâ€™ section, which
!      is pointed to by register â€˜B14â€™.  Put small uninitialized global
!      and static data in the â€˜.bssâ€™ section, which is adjacent to the
!      â€˜.neardataâ€™ section.  Put small read-only data into the â€˜.rodataâ€™
       section.  The corresponding sections used for large pieces of data
!      are â€˜.fardataâ€™, â€˜.farâ€™ and â€˜.constâ€™.
  
! â€˜-msdata=allâ€™
       Put all data, not just small objects, into the sections reserved
!      for small data, and use addressing relative to the â€˜B14â€™ register
       to access them.
  
! â€˜-msdata=noneâ€™
       Make no use of the sections reserved for small data, and use
       absolute addresses to access all data.  Put all initialized global
!      and static data in the â€˜.fardataâ€™ section, and all uninitialized
!      data in the â€˜.farâ€™ section.  Put all constant data into the
!      â€˜.constâ€™ section.
  
  
  File: gcc.info,  Node: CRIS Options,  Next: C-SKY Options,  Prev: C6X Options,  Up: Submodel Options
*************** File: gcc.info,  Node: CRIS Options,  Ne
*** 24049,24116 ****
  
  These options are defined specifically for the CRIS ports.
  
! '-march=ARCHITECTURE-TYPE'
! '-mcpu=ARCHITECTURE-TYPE'
       Generate code for the specified architecture.  The choices for
!      ARCHITECTURE-TYPE are 'v3', 'v8' and 'v10' for respectively
!      ETRAX 4, ETRAX 100, and ETRAX 100 LX.  Default is 'v0'.
  
! '-mtune=ARCHITECTURE-TYPE'
       Tune to ARCHITECTURE-TYPE everything applicable about the generated
       code, except for the ABI and the set of available instructions.
       The choices for ARCHITECTURE-TYPE are the same as for
!      '-march=ARCHITECTURE-TYPE'.
  
! '-mmax-stack-frame=N'
       Warn when the stack frame of a function exceeds N bytes.
  
! '-metrax4'
! '-metrax100'
!      The options '-metrax4' and '-metrax100' are synonyms for
!      '-march=v3' and '-march=v8' respectively.
  
! '-mmul-bug-workaround'
! '-mno-mul-bug-workaround'
!      Work around a bug in the 'muls' and 'mulu' instructions for CPU
       models where it applies.  This option is disabled by default.
  
! '-mpdebug'
       Enable CRIS-specific verbose debug-related information in the
       assembly code.  This option also has the effect of turning off the
!      '#NO_APP' formatted-code indicator to the assembler at the
       beginning of the assembly file.
  
! '-mcc-init'
       Do not use condition-code results from previous instruction; always
       emit compare and test instructions before use of condition codes.
  
! '-mno-side-effects'
       Do not emit instructions with side effects in addressing modes
       other than post-increment.
  
! '-mstack-align'
! '-mno-stack-align'
! '-mdata-align'
! '-mno-data-align'
! '-mconst-align'
! '-mno-const-align'
!      These options ('no-' options) arrange (eliminate arrangements) for
       the stack frame, individual data and constants to be aligned for
       the maximum single data access size for the chosen CPU model.  The
       default is to arrange for 32-bit alignment.  ABI details such as
       structure layout are not affected by these options.
  
! '-m32-bit'
! '-m16-bit'
! '-m8-bit'
       Similar to the stack- data- and const-align options above, these
       options arrange for stack frame, writable data and constants to all
       be 32-bit, 16-bit or 8-bit aligned.  The default is 32-bit
       alignment.
  
! '-mno-prologue-epilogue'
! '-mprologue-epilogue'
!      With '-mno-prologue-epilogue', the normal function prologue and
       epilogue which set up the stack frame are omitted and no return
       instructions or return sequences are generated in the code.  Use
       this option only together with visual inspection of the compiled
--- 24057,24124 ----
  
  These options are defined specifically for the CRIS ports.
  
! â€˜-march=ARCHITECTURE-TYPEâ€™
! â€˜-mcpu=ARCHITECTURE-TYPEâ€™
       Generate code for the specified architecture.  The choices for
!      ARCHITECTURE-TYPE are â€˜v3â€™, â€˜v8â€™ and â€˜v10â€™ for respectively
!      ETRAX 4, ETRAX 100, and ETRAX 100 LX.  Default is â€˜v0â€™.
  
! â€˜-mtune=ARCHITECTURE-TYPEâ€™
       Tune to ARCHITECTURE-TYPE everything applicable about the generated
       code, except for the ABI and the set of available instructions.
       The choices for ARCHITECTURE-TYPE are the same as for
!      â€˜-march=ARCHITECTURE-TYPEâ€™.
  
! â€˜-mmax-stack-frame=Nâ€™
       Warn when the stack frame of a function exceeds N bytes.
  
! â€˜-metrax4â€™
! â€˜-metrax100â€™
!      The options â€˜-metrax4â€™ and â€˜-metrax100â€™ are synonyms for
!      â€˜-march=v3â€™ and â€˜-march=v8â€™ respectively.
  
! â€˜-mmul-bug-workaroundâ€™
! â€˜-mno-mul-bug-workaroundâ€™
!      Work around a bug in the â€˜mulsâ€™ and â€˜muluâ€™ instructions for CPU
       models where it applies.  This option is disabled by default.
  
! â€˜-mpdebugâ€™
       Enable CRIS-specific verbose debug-related information in the
       assembly code.  This option also has the effect of turning off the
!      â€˜#NO_APPâ€™ formatted-code indicator to the assembler at the
       beginning of the assembly file.
  
! â€˜-mcc-initâ€™
       Do not use condition-code results from previous instruction; always
       emit compare and test instructions before use of condition codes.
  
! â€˜-mno-side-effectsâ€™
       Do not emit instructions with side effects in addressing modes
       other than post-increment.
  
! â€˜-mstack-alignâ€™
! â€˜-mno-stack-alignâ€™
! â€˜-mdata-alignâ€™
! â€˜-mno-data-alignâ€™
! â€˜-mconst-alignâ€™
! â€˜-mno-const-alignâ€™
!      These options (â€˜no-â€™ options) arrange (eliminate arrangements) for
       the stack frame, individual data and constants to be aligned for
       the maximum single data access size for the chosen CPU model.  The
       default is to arrange for 32-bit alignment.  ABI details such as
       structure layout are not affected by these options.
  
! â€˜-m32-bitâ€™
! â€˜-m16-bitâ€™
! â€˜-m8-bitâ€™
       Similar to the stack- data- and const-align options above, these
       options arrange for stack frame, writable data and constants to all
       be 32-bit, 16-bit or 8-bit aligned.  The default is 32-bit
       alignment.
  
! â€˜-mno-prologue-epilogueâ€™
! â€˜-mprologue-epilogueâ€™
!      With â€˜-mno-prologue-epilogueâ€™, the normal function prologue and
       epilogue which set up the stack frame are omitted and no return
       instructions or return sequences are generated in the code.  Use
       this option only together with visual inspection of the compiled
*************** These options are defined specifically f
*** 24118,24133 ****
       must be saved, or storage for local variables needs to be
       allocated.
  
! '-melf'
       Legacy no-op option.
  
! '-sim'
       This option arranges to link with input-output functions from a
       simulator library.  Code, initialized data and zero-initialized
       data are allocated consecutively.
  
! '-sim2'
!      Like '-sim', but pass linker options to locate initialized data at
       0x40000000 and zero-initialized data at 0x80000000.
  
  
--- 24126,24141 ----
       must be saved, or storage for local variables needs to be
       allocated.
  
! â€˜-melfâ€™
       Legacy no-op option.
  
! â€˜-simâ€™
       This option arranges to link with input-output functions from a
       simulator library.  Code, initialized data and zero-initialized
       data are allocated consecutively.
  
! â€˜-sim2â€™
!      Like â€˜-simâ€™, but pass linker options to locate initialized data at
       0x40000000 and zero-initialized data at 0x80000000.
  
  
*************** File: gcc.info,  Node: C-SKY Options,  N
*** 24138,24177 ****
  
  GCC supports these options when compiling for C-SKY V2 processors.
  
! '-march=ARCH'
       Specify the C-SKY target architecture.  Valid values for ARCH are:
!      'ck801', 'ck802', 'ck803', 'ck807', and 'ck810'.  The default is
!      'ck810'.
  
! '-mcpu=CPU'
       Specify the C-SKY target processor.  Valid values for CPU are:
!      'ck801', 'ck801t', 'ck802', 'ck802t', 'ck802j', 'ck803', 'ck803h',
!      'ck803t', 'ck803ht', 'ck803f', 'ck803fh', 'ck803e', 'ck803eh',
!      'ck803et', 'ck803eht', 'ck803ef', 'ck803efh', 'ck803ft',
!      'ck803eft', 'ck803efht', 'ck803r1', 'ck803hr1', 'ck803tr1',
!      'ck803htr1', 'ck803fr1', 'ck803fhr1', 'ck803er1', 'ck803ehr1',
!      'ck803etr1', 'ck803ehtr1', 'ck803efr1', 'ck803efhr1', 'ck803ftr1',
!      'ck803eftr1', 'ck803efhtr1', 'ck803s', 'ck803st', 'ck803se',
!      'ck803sf', 'ck803sef', 'ck803seft', 'ck807e', 'ck807ef', 'ck807',
!      'ck807f', 'ck810e', 'ck810et', 'ck810ef', 'ck810eft', 'ck810',
!      'ck810v', 'ck810f', 'ck810t', 'ck810fv', 'ck810tv', 'ck810ft', and
!      'ck810ftv'.
  
! '-mbig-endian'
! '-EB'
! '-mlittle-endian'
! '-EL'
  
       Select big- or little-endian code.  The default is little-endian.
  
! '-mfloat-abi=NAME'
       Specifies which floating-point ABI to use.  Permissible values are:
!      'soft', 'softfp' and 'hard'.
  
!      Specifying 'soft' causes GCC to generate output containing library
!      calls for floating-point operations.  'softfp' allows the
       generation of code using hardware floating-point instructions, but
!      still uses the soft-float calling conventions.  'hard' allows
       generation of floating-point instructions and uses FPU-specific
       calling conventions.
  
--- 24146,24185 ----
  
  GCC supports these options when compiling for C-SKY V2 processors.
  
! â€˜-march=ARCHâ€™
       Specify the C-SKY target architecture.  Valid values for ARCH are:
!      â€˜ck801â€™, â€˜ck802â€™, â€˜ck803â€™, â€˜ck807â€™, and â€˜ck810â€™.  The default is
!      â€˜ck810â€™.
  
! â€˜-mcpu=CPUâ€™
       Specify the C-SKY target processor.  Valid values for CPU are:
!      â€˜ck801â€™, â€˜ck801tâ€™, â€˜ck802â€™, â€˜ck802tâ€™, â€˜ck802jâ€™, â€˜ck803â€™, â€˜ck803hâ€™,
!      â€˜ck803tâ€™, â€˜ck803htâ€™, â€˜ck803fâ€™, â€˜ck803fhâ€™, â€˜ck803eâ€™, â€˜ck803ehâ€™,
!      â€˜ck803etâ€™, â€˜ck803ehtâ€™, â€˜ck803efâ€™, â€˜ck803efhâ€™, â€˜ck803ftâ€™,
!      â€˜ck803eftâ€™, â€˜ck803efhtâ€™, â€˜ck803r1â€™, â€˜ck803hr1â€™, â€˜ck803tr1â€™,
!      â€˜ck803htr1â€™, â€˜ck803fr1â€™, â€˜ck803fhr1â€™, â€˜ck803er1â€™, â€˜ck803ehr1â€™,
!      â€˜ck803etr1â€™, â€˜ck803ehtr1â€™, â€˜ck803efr1â€™, â€˜ck803efhr1â€™, â€˜ck803ftr1â€™,
!      â€˜ck803eftr1â€™, â€˜ck803efhtr1â€™, â€˜ck803sâ€™, â€˜ck803stâ€™, â€˜ck803seâ€™,
!      â€˜ck803sfâ€™, â€˜ck803sefâ€™, â€˜ck803seftâ€™, â€˜ck807eâ€™, â€˜ck807efâ€™, â€˜ck807â€™,
!      â€˜ck807fâ€™, â€˜ck810eâ€™, â€˜ck810etâ€™, â€˜ck810efâ€™, â€˜ck810eftâ€™, â€˜ck810â€™,
!      â€˜ck810vâ€™, â€˜ck810fâ€™, â€˜ck810tâ€™, â€˜ck810fvâ€™, â€˜ck810tvâ€™, â€˜ck810ftâ€™, and
!      â€˜ck810ftvâ€™.
  
! â€˜-mbig-endianâ€™
! â€˜-EBâ€™
! â€˜-mlittle-endianâ€™
! â€˜-ELâ€™
  
       Select big- or little-endian code.  The default is little-endian.
  
! â€˜-mfloat-abi=NAMEâ€™
       Specifies which floating-point ABI to use.  Permissible values are:
!      â€˜softâ€™, â€˜softfpâ€™ and â€˜hardâ€™.
  
!      Specifying â€˜softâ€™ causes GCC to generate output containing library
!      calls for floating-point operations.  â€˜softfpâ€™ allows the
       generation of code using hardware floating-point instructions, but
!      still uses the soft-float calling conventions.  â€˜hardâ€™ allows
       generation of floating-point instructions and uses FPU-specific
       calling conventions.
  
*************** GCC supports these options when compilin
*** 24180,24305 ****
       you must compile your entire program with the same ABI, and link
       with a compatible set of libraries.
  
! '-mhard-float'
! '-msoft-float'
  
       Select hardware or software floating-point implementations.  The
       default is soft float.
  
! '-mdouble-float'
! '-mno-double-float'
!      When '-mhard-float' is in effect, enable generation of
       double-precision float instructions.  This is the default except
       when compiling for CK803.
  
! '-mfdivdu'
! '-mno-fdivdu'
!      When '-mhard-float' is in effect, enable generation of 'frecipd',
!      'fsqrtd', and 'fdivd' instructions.  This is the default except
       when compiling for CK803.
  
! '-mfpu=FPU'
       Select the floating-point processor.  This option can only be used
!      with '-mhard-float'.  Values for FPU are 'fpv2_sf' (equivalent to
!      '-mno-double-float -mno-fdivdu'), 'fpv2' ('-mdouble-float
!      -mno-divdu'), and 'fpv2_divd' ('-mdouble-float -mdivdu').
  
! '-melrw'
! '-mno-elrw'
!      Enable the extended 'lrw' instruction.  This option defaults to on
       for CK801 and off otherwise.
  
! '-mistack'
! '-mno-istack'
       Enable interrupt stack instructions; the default is off.
  
!      The '-mistack' option is required to handle the 'interrupt' and
!      'isr' function attributes (*note C-SKY Function Attributes::).
  
! '-mmp'
       Enable multiprocessor instructions; the default is off.
  
! '-mcp'
       Enable coprocessor instructions; the default is off.
  
! '-mcache'
       Enable coprocessor instructions; the default is off.
  
! '-msecurity'
       Enable C-SKY security instructions; the default is off.
  
! '-mtrust'
       Enable C-SKY trust instructions; the default is off.
  
! '-mdsp'
! '-medsp'
! '-mvdsp'
       Enable C-SKY DSP, Enhanced DSP, or Vector DSP instructions,
       respectively.  All of these options default to off.
  
! '-mdiv'
! '-mno-div'
       Generate divide instructions.  Default is off.
  
! '-msmart'
! '-mno-smart'
       Generate code for Smart Mode, using only registers numbered 0-7 to
       allow use of 16-bit instructions.  This option is ignored for CK801
       where this is the required behavior, and it defaults to on for
       CK802.  For other targets, the default is off.
  
! '-mhigh-registers'
! '-mno-high-registers'
       Generate code using the high registers numbered 16-31.  This option
       is not supported on CK801, CK802, or CK803, and is enabled by
       default for other processors.
  
! '-manchor'
! '-mno-anchor'
       Generate code using global anchor symbol addresses.
  
! '-mpushpop'
! '-mno-pushpop'
!      Generate code using 'push' and 'pop' instructions.  This option
       defaults to on.
  
! '-mmultiple-stld'
! '-mstm'
! '-mno-multiple-stld'
! '-mno-stm'
!      Generate code using 'stm' and 'ldm' instructions.  This option
       isn't supported on CK801 but is enabled by default on other
       processors.
  
! '-mconstpool'
! '-mno-constpool'
       Create constant pools in the compiler instead of deferring it to
       the assembler.  This option is the default and required for correct
       code generation on CK801 and CK802, and is optional on other
       processors.
  
! '-mstack-size'
! '-mno-stack-size'
!      Emit '.stack_size' directives for each function in the assembly
       output.  This option defaults to off.
  
! '-mccrt'
! '-mno-ccrt'
       Generate code for the C-SKY compiler runtime instead of libgcc.
       This option defaults to off.
  
! '-mbranch-cost=N'
!      Set the branch costs to roughly 'n' instructions.  The default is
       1.
  
! '-msched-prolog'
! '-mno-sched-prolog'
       Permit scheduling of function prologue and epilogue sequences.
       Using this option can result in code that is not compliant with the
       C-SKY V2 ABI prologue requirements and that cannot be debugged or
       backtraced.  It is disabled by default.
  
! '-msim'
       Links the library libsemi.a which is in compatible with simulator.
       Applicable to ELF compiler only.
  
--- 24188,24313 ----
       you must compile your entire program with the same ABI, and link
       with a compatible set of libraries.
  
! â€˜-mhard-floatâ€™
! â€˜-msoft-floatâ€™
  
       Select hardware or software floating-point implementations.  The
       default is soft float.
  
! â€˜-mdouble-floatâ€™
! â€˜-mno-double-floatâ€™
!      When â€˜-mhard-floatâ€™ is in effect, enable generation of
       double-precision float instructions.  This is the default except
       when compiling for CK803.
  
! â€˜-mfdivduâ€™
! â€˜-mno-fdivduâ€™
!      When â€˜-mhard-floatâ€™ is in effect, enable generation of â€˜frecipdâ€™,
!      â€˜fsqrtdâ€™, and â€˜fdivdâ€™ instructions.  This is the default except
       when compiling for CK803.
  
! â€˜-mfpu=FPUâ€™
       Select the floating-point processor.  This option can only be used
!      with â€˜-mhard-floatâ€™.  Values for FPU are â€˜fpv2_sfâ€™ (equivalent to
!      â€˜-mno-double-float -mno-fdivduâ€™), â€˜fpv2â€™ (â€˜-mdouble-float
!      -mno-divduâ€™), and â€˜fpv2_divdâ€™ (â€˜-mdouble-float -mdivduâ€™).
  
! â€˜-melrwâ€™
! â€˜-mno-elrwâ€™
!      Enable the extended â€˜lrwâ€™ instruction.  This option defaults to on
       for CK801 and off otherwise.
  
! â€˜-mistackâ€™
! â€˜-mno-istackâ€™
       Enable interrupt stack instructions; the default is off.
  
!      The â€˜-mistackâ€™ option is required to handle the â€˜interruptâ€™ and
!      â€˜isrâ€™ function attributes (*note C-SKY Function Attributes::).
  
! â€˜-mmpâ€™
       Enable multiprocessor instructions; the default is off.
  
! â€˜-mcpâ€™
       Enable coprocessor instructions; the default is off.
  
! â€˜-mcacheâ€™
       Enable coprocessor instructions; the default is off.
  
! â€˜-msecurityâ€™
       Enable C-SKY security instructions; the default is off.
  
! â€˜-mtrustâ€™
       Enable C-SKY trust instructions; the default is off.
  
! â€˜-mdspâ€™
! â€˜-medspâ€™
! â€˜-mvdspâ€™
       Enable C-SKY DSP, Enhanced DSP, or Vector DSP instructions,
       respectively.  All of these options default to off.
  
! â€˜-mdivâ€™
! â€˜-mno-divâ€™
       Generate divide instructions.  Default is off.
  
! â€˜-msmartâ€™
! â€˜-mno-smartâ€™
       Generate code for Smart Mode, using only registers numbered 0-7 to
       allow use of 16-bit instructions.  This option is ignored for CK801
       where this is the required behavior, and it defaults to on for
       CK802.  For other targets, the default is off.
  
! â€˜-mhigh-registersâ€™
! â€˜-mno-high-registersâ€™
       Generate code using the high registers numbered 16-31.  This option
       is not supported on CK801, CK802, or CK803, and is enabled by
       default for other processors.
  
! â€˜-manchorâ€™
! â€˜-mno-anchorâ€™
       Generate code using global anchor symbol addresses.
  
! â€˜-mpushpopâ€™
! â€˜-mno-pushpopâ€™
!      Generate code using â€˜pushâ€™ and â€˜popâ€™ instructions.  This option
       defaults to on.
  
! â€˜-mmultiple-stldâ€™
! â€˜-mstmâ€™
! â€˜-mno-multiple-stldâ€™
! â€˜-mno-stmâ€™
!      Generate code using â€˜stmâ€™ and â€˜ldmâ€™ instructions.  This option
       isn't supported on CK801 but is enabled by default on other
       processors.
  
! â€˜-mconstpoolâ€™
! â€˜-mno-constpoolâ€™
       Create constant pools in the compiler instead of deferring it to
       the assembler.  This option is the default and required for correct
       code generation on CK801 and CK802, and is optional on other
       processors.
  
! â€˜-mstack-sizeâ€™
! â€˜-mno-stack-sizeâ€™
!      Emit â€˜.stack_sizeâ€™ directives for each function in the assembly
       output.  This option defaults to off.
  
! â€˜-mccrtâ€™
! â€˜-mno-ccrtâ€™
       Generate code for the C-SKY compiler runtime instead of libgcc.
       This option defaults to off.
  
! â€˜-mbranch-cost=Nâ€™
!      Set the branch costs to roughly â€˜nâ€™ instructions.  The default is
       1.
  
! â€˜-msched-prologâ€™
! â€˜-mno-sched-prologâ€™
       Permit scheduling of function prologue and epilogue sequences.
       Using this option can result in code that is not compliant with the
       C-SKY V2 ABI prologue requirements and that cannot be debugged or
       backtraced.  It is disabled by default.
  
! â€˜-msimâ€™
       Links the library libsemi.a which is in compatible with simulator.
       Applicable to ELF compiler only.
  
*************** File: gcc.info,  Node: Cygwin and MinGW
*** 24311,24387 ****
  
  These additional options are available for Microsoft Windows targets:
  
! '-mconsole'
       This option specifies that a console application is to be
       generated, by instructing the linker to set the PE header subsystem
       type required for console applications.  This option is available
       for Cygwin and MinGW targets and is enabled by default on those
       targets.
  
! '-mcrtdll=LIBRARY'
       Preprocess, compile or link with specified C RunTime DLL LIBRARY.
!      This option adjust predefined macros '__CRTDLL__', '__MSVCRT__',
!      '_UCRT' and '__MSVCRT_VERSION__' for specified CRT LIBRARY, choose
       start file for CRT LIBRARY and link with CRT LIBRARY.  Recognized
!      CRT library names for proprocessor are: 'crtdll*', 'msvcrt10*',
!      'msvcrt20*', 'msvcrt40*', 'msvcr40*', 'msvcrtd*', 'msvcrt-os*',
!      'msvcr70*', 'msvcr71*', 'msvcr80*', 'msvcr90*', 'msvcr100*',
!      'msvcr110*', 'msvcr120*' and 'ucrt*'.  If this options is not
!      specified then the default MinGW import library 'msvcrt' is used
       for linking and no other adjustment for preprocessor is done.
!      MinGW import library 'msvcrt' is just a symlink to (or a copy of)
       another MinGW CRT import library chosen during MinGW compilation.
!      MinGW import library 'msvcrt-os' is for Windows system CRT DLL
!      library 'msvcrt.dll' and in most cases is the default MinGW import
       library.  Generally speaking, changing the CRT DLL requires
       recompiling the entire MinGW CRT. This option is for experimental
       and testing purposes only.  This option is available for MinGW
       targets.
  
! '-mdll'
       This option is available for Cygwin and MinGW targets.  It
       specifies that a DLL--a dynamic link library--is to be generated,
       enabling the selection of the required runtime startup object and
       entry point.
  
! '-mnop-fun-dllimport'
       This option is available for Cygwin and MinGW targets.  It
!      specifies that the 'dllimport' attribute should be ignored.
  
! '-mthreads'
       This option is available for MinGW targets.  It specifies that
       MinGW-specific thread support is to be used.
  
! '-municode'
       This option is available for MinGW-w64 targets.  It causes the
!      'UNICODE' preprocessor macro to be predefined, and chooses
       Unicode-capable runtime startup code.
  
! '-mwin32'
       This option is available for Cygwin and MinGW targets.  It
       specifies that the typical Microsoft Windows predefined macros are
       to be set in the pre-processor, but does not influence the choice
       of runtime library/startup code.
  
! '-mwindows'
       This option is available for Cygwin and MinGW targets.  It
       specifies that a GUI application is to be generated by instructing
       the linker to set the PE header subsystem type appropriately.
  
! '-fno-set-stack-executable'
       This option is available for MinGW targets.  It specifies that the
       executable flag for the stack used by nested functions isn't set.
       This is necessary for binaries running in kernel mode of Microsoft
       Windows, as there the User32 API, which is used to set executable
       privileges, isn't available.
  
! '-fwritable-relocated-rdata'
       This option is available for MinGW and Cygwin targets.  It
       specifies that relocated-data in read-only section is put into the
!      '.data' section.  This is a necessary for older runtimes not
!      supporting modification of '.rdata' sections for pseudo-relocation.
  
! '-mpe-aligned-commons'
       This option is available for Cygwin and MinGW targets.  It
       specifies that the GNU extension to the PE file format that permits
       the correct alignment of COMMON variables should be used when
--- 24319,24395 ----
  
  These additional options are available for Microsoft Windows targets:
  
! â€˜-mconsoleâ€™
       This option specifies that a console application is to be
       generated, by instructing the linker to set the PE header subsystem
       type required for console applications.  This option is available
       for Cygwin and MinGW targets and is enabled by default on those
       targets.
  
! â€˜-mcrtdll=LIBRARYâ€™
       Preprocess, compile or link with specified C RunTime DLL LIBRARY.
!      This option adjust predefined macros â€˜__CRTDLL__â€™, â€˜__MSVCRT__â€™,
!      â€˜_UCRTâ€™ and â€˜__MSVCRT_VERSION__â€™ for specified CRT LIBRARY, choose
       start file for CRT LIBRARY and link with CRT LIBRARY.  Recognized
!      CRT library names for proprocessor are: â€˜crtdll*â€™, â€˜msvcrt10*â€™,
!      â€˜msvcrt20*â€™, â€˜msvcrt40*â€™, â€˜msvcr40*â€™, â€˜msvcrtd*â€™, â€˜msvcrt-os*â€™,
!      â€˜msvcr70*â€™, â€˜msvcr71*â€™, â€˜msvcr80*â€™, â€˜msvcr90*â€™, â€˜msvcr100*â€™,
!      â€˜msvcr110*â€™, â€˜msvcr120*â€™ and â€˜ucrt*â€™.  If this options is not
!      specified then the default MinGW import library â€˜msvcrtâ€™ is used
       for linking and no other adjustment for preprocessor is done.
!      MinGW import library â€˜msvcrtâ€™ is just a symlink to (or a copy of)
       another MinGW CRT import library chosen during MinGW compilation.
!      MinGW import library â€˜msvcrt-osâ€™ is for Windows system CRT DLL
!      library â€˜msvcrt.dllâ€™ and in most cases is the default MinGW import
       library.  Generally speaking, changing the CRT DLL requires
       recompiling the entire MinGW CRT. This option is for experimental
       and testing purposes only.  This option is available for MinGW
       targets.
  
! â€˜-mdllâ€™
       This option is available for Cygwin and MinGW targets.  It
       specifies that a DLL--a dynamic link library--is to be generated,
       enabling the selection of the required runtime startup object and
       entry point.
  
! â€˜-mnop-fun-dllimportâ€™
       This option is available for Cygwin and MinGW targets.  It
!      specifies that the â€˜dllimportâ€™ attribute should be ignored.
  
! â€˜-mthreadsâ€™
       This option is available for MinGW targets.  It specifies that
       MinGW-specific thread support is to be used.
  
! â€˜-municodeâ€™
       This option is available for MinGW-w64 targets.  It causes the
!      â€˜UNICODEâ€™ preprocessor macro to be predefined, and chooses
       Unicode-capable runtime startup code.
  
! â€˜-mwin32â€™
       This option is available for Cygwin and MinGW targets.  It
       specifies that the typical Microsoft Windows predefined macros are
       to be set in the pre-processor, but does not influence the choice
       of runtime library/startup code.
  
! â€˜-mwindowsâ€™
       This option is available for Cygwin and MinGW targets.  It
       specifies that a GUI application is to be generated by instructing
       the linker to set the PE header subsystem type appropriately.
  
! â€˜-fno-set-stack-executableâ€™
       This option is available for MinGW targets.  It specifies that the
       executable flag for the stack used by nested functions isn't set.
       This is necessary for binaries running in kernel mode of Microsoft
       Windows, as there the User32 API, which is used to set executable
       privileges, isn't available.
  
! â€˜-fwritable-relocated-rdataâ€™
       This option is available for MinGW and Cygwin targets.  It
       specifies that relocated-data in read-only section is put into the
!      â€˜.dataâ€™ section.  This is a necessary for older runtimes not
!      supporting modification of â€˜.rdataâ€™ sections for pseudo-relocation.
  
! â€˜-mpe-aligned-commonsâ€™
       This option is available for Cygwin and MinGW targets.  It
       specifies that the GNU extension to the PE file format that permits
       the correct alignment of COMMON variables should be used when
*************** operating system.
*** 24401,24439 ****
  
   FSF GCC on Darwin does not create "fat" object files; it creates an
  object file for the single architecture that GCC was built to target.
! Apple's GCC on Darwin does create "fat" files if multiple '-arch'
  options are used; it does so by running the compiler or linker multiple
! times and joining the results together with 'lipo'.
  
!  The subtype of the file created (like 'ppc7400' or 'ppc970' or 'i686')
  is determined by the flags that specify the ISA that GCC is targeting,
! like '-mcpu' or '-march'.  The '-force_cpusubtype_ALL' option can be
  used to override this.
  
   The Darwin tools vary in their behavior when presented with an ISA
! mismatch.  The assembler, 'as', only permits instructions to be used
  that are valid for the subtype of the file it is generating, so you
! cannot put 64-bit instructions in a 'ppc750' object file.  The linker
! for shared libraries, '/usr/bin/libtool', fails and prints an error if
  asked to create a shared library with a less restrictive subtype than
! its input files (for instance, trying to put a 'ppc970' object file in a
! 'ppc7400' library).  The linker for executables, 'ld', quietly gives the
  executable the most restrictive subtype of any of its input files.
  
! '-FDIR'
       Add the framework directory DIR to the head of the list of
       directories to be searched for header files.  These directories are
!      interleaved with those specified by '-I' options and are scanned in
       a left-to-right order.
  
       A framework directory is a directory with frameworks in it.  A
!      framework is a directory with a 'Headers' and/or 'PrivateHeaders'
!      directory contained directly in it that ends in '.framework'.  The
       name of a framework is the name of this directory excluding the
!      '.framework'.  Headers associated with the framework are found in
!      one of those two directories, with 'Headers' being searched first.
       A subframework is a framework directory that is in a framework's
!      'Frameworks' directory.  Includes of subframework headers can only
       appear in a header of a framework that contains the subframework,
       or in a sibling subframework header.  Two subframeworks are
       siblings if they occur in the same framework.  A subframework
--- 24409,24447 ----
  
   FSF GCC on Darwin does not create "fat" object files; it creates an
  object file for the single architecture that GCC was built to target.
! Apple's GCC on Darwin does create "fat" files if multiple â€˜-archâ€™
  options are used; it does so by running the compiler or linker multiple
! times and joining the results together with â€˜lipoâ€™.
  
!  The subtype of the file created (like â€˜ppc7400â€™ or â€˜ppc970â€™ or â€˜i686â€™)
  is determined by the flags that specify the ISA that GCC is targeting,
! like â€˜-mcpuâ€™ or â€˜-marchâ€™.  The â€˜-force_cpusubtype_ALLâ€™ option can be
  used to override this.
  
   The Darwin tools vary in their behavior when presented with an ISA
! mismatch.  The assembler, â€˜asâ€™, only permits instructions to be used
  that are valid for the subtype of the file it is generating, so you
! cannot put 64-bit instructions in a â€˜ppc750â€™ object file.  The linker
! for shared libraries, â€˜/usr/bin/libtoolâ€™, fails and prints an error if
  asked to create a shared library with a less restrictive subtype than
! its input files (for instance, trying to put a â€˜ppc970â€™ object file in a
! â€˜ppc7400â€™ library).  The linker for executables, â€˜ldâ€™, quietly gives the
  executable the most restrictive subtype of any of its input files.
  
! â€˜-FDIRâ€™
       Add the framework directory DIR to the head of the list of
       directories to be searched for header files.  These directories are
!      interleaved with those specified by â€˜-Iâ€™ options and are scanned in
       a left-to-right order.
  
       A framework directory is a directory with frameworks in it.  A
!      framework is a directory with a â€˜Headersâ€™ and/or â€˜PrivateHeadersâ€™
!      directory contained directly in it that ends in â€˜.frameworkâ€™.  The
       name of a framework is the name of this directory excluding the
!      â€˜.frameworkâ€™.  Headers associated with the framework are found in
!      one of those two directories, with â€˜Headersâ€™ being searched first.
       A subframework is a framework directory that is in a framework's
!      â€˜Frameworksâ€™ directory.  Includes of subframework headers can only
       appear in a header of a framework that contains the subframework,
       or in a sibling subframework header.  Two subframeworks are
       siblings if they occur in the same framework.  A subframework
*************** executable the most restrictive subtype
*** 24441,24606 ****
       if this is violated.  Currently a subframework cannot have
       subframeworks; in the future, the mechanism may be extended to
       support this.  The standard frameworks can be found in
!      '/System/Library/Frameworks' and '/Library/Frameworks'.  An example
!      include looks like '#include <Framework/header.h>', where
!      'Framework' denotes the name of the framework and 'header.h' is
!      found in the 'PrivateHeaders' or 'Headers' directory.
  
! '-iframeworkDIR'
!      Like '-F' except the directory is a treated as a system directory.
!      The main difference between this '-iframework' and '-F' is that
!      with '-iframework' the compiler does not warn about constructs
       contained within header files found via DIR.  This option is valid
       only for the C family of languages.
  
! '-gused'
       Emit debugging information for symbols that are used.  For stabs
!      debugging format, this enables '-feliminate-unused-debug-symbols'.
       This is by default ON.
  
! '-gfull'
       Emit debugging information for all symbols and types.
  
! '-fconstant-cfstrings'
!      The '-fconstant-cfstrings' is an alias for '-mconstant-cfstrings'.
  
! '-mconstant-cfstrings'
       When the NeXT runtime is being used (the default on these systems),
!      override any '-fconstant-string-class' setting and cause '@"..."'
       literals to be laid out as constant CoreFoundation strings.
  
! '-mmacosx-version-min=VERSION'
       The earliest version of MacOS X that this executable will run on is
!      VERSION.  Typical values supported for VERSION include '12',
!      '10.12', and '10.5.8'.
  
       If the compiler was built to use the system's headers by default,
       then the default for this option is the system version on which the
       compiler is running, otherwise the default is to make choices that
       are compatible with as many systems and code bases as possible.
  
! '-mkernel'
!      Enable kernel development mode.  The '-mkernel' option sets
!      '-static', '-fno-common', '-fno-use-cxa-atexit', '-fno-exceptions',
!      '-fno-non-call-exceptions', '-fapple-kext', '-fno-weak' and
!      '-fno-rtti' where applicable.  This mode also sets '-mno-altivec',
!      '-msoft-float', '-fno-builtin' and '-mlong-branch' for PowerPC
       targets.
  
! '-mone-byte-bool'
!      Override the defaults for 'bool' so that 'sizeof(bool)==1'.  By
!      default 'sizeof(bool)' is '4' when compiling for Darwin/PowerPC and
!      '1' when compiling for Darwin/x86, so this option has no effect on
       x86.
  
!      *Warning:* The '-mone-byte-bool' switch causes GCC to generate code
       that is not binary compatible with code generated without that
       switch.  Using this switch may require recompiling all other
       modules in a program, including system libraries.  Use this switch
       to conform to a non-default data model.
  
! '-mfix-and-continue'
! '-ffix-and-continue'
! '-findirect-data'
       Generate code suitable for fast turnaround development, such as to
!      allow GDB to dynamically load '.o' files into already-running
!      programs.  '-findirect-data' and '-ffix-and-continue' are provided
       for backwards compatibility.
  
! '-all_load'
       Loads all members of static archive libraries.  See man ld(1) for
       more information.
  
! '-arch_errors_fatal'
       Cause the errors having to do with files that have the wrong
       architecture to be fatal.
  
! '-bind_at_load'
       Causes the output file to be marked such that the dynamic linker
       will bind all undefined references when the file is loaded or
       launched.
  
! '-bundle'
       Produce a Mach-o bundle format file.  See man ld(1) for more
       information.
  
! '-bundle_loader EXECUTABLE'
       This option specifies the EXECUTABLE that will load the build
       output file being linked.  See man ld(1) for more information.
  
! '-dynamiclib'
       When passed this option, GCC produces a dynamic library instead of
!      an executable when linking, using the Darwin 'libtool' command.
  
! '-force_cpusubtype_ALL'
!      This causes GCC's output file to have the 'ALL' subtype, instead of
!      one controlled by the '-mcpu' or '-march' option.
  
! '-nodefaultrpaths'
       Do not add default run paths for the compiler library directories
       to executables, modules or dynamic libraries.  On macOS 10.5 and
       later, the embedded runpath is added by default unless the user
!      adds '-nodefaultrpaths' to the link line.  Run paths are needed
       (and therefore enforced) to build on macOS version 10.11 or later.
  
! '-allowable_client CLIENT_NAME'
! '-client_name'
! '-compatibility_version'
! '-current_version'
! '-dead_strip'
! '-dependency-file'
! '-dylib_file'
! '-dylinker_install_name'
! '-dynamic'
! '-exported_symbols_list'
! '-filelist'
! '-flat_namespace'
! '-force_flat_namespace'
! '-headerpad_max_install_names'
! '-image_base'
! '-init'
! '-install_name'
! '-keep_private_externs'
! '-multi_module'
! '-multiply_defined'
! '-multiply_defined_unused'
! '-noall_load'
! '-no_dead_strip_inits_and_terms'
! '-nofixprebinding'
! '-nomultidefs'
! '-noprebind'
! '-noseglinkedit'
! '-pagezero_size'
! '-prebind'
! '-prebind_all_twolevel_modules'
! '-private_bundle'
! '-read_only_relocs'
! '-sectalign'
! '-sectobjectsymbols'
! '-whyload'
! '-seg1addr'
! '-sectcreate'
! '-sectobjectsymbols'
! '-sectorder'
! '-segaddr'
! '-segs_read_only_addr'
! '-segs_read_write_addr'
! '-seg_addr_table'
! '-seg_addr_table_filename'
! '-seglinkedit'
! '-segprot'
! '-segs_read_only_addr'
! '-segs_read_write_addr'
! '-single_module'
! '-static'
! '-sub_library'
! '-sub_umbrella'
! '-twolevel_namespace'
! '-umbrella'
! '-undefined'
! '-unexported_symbols_list'
! '-weak_reference_mismatches'
! '-whatsloaded'
       These options are passed to the Darwin linker.  The Darwin linker
       man page describes them in detail.
  
--- 24449,24614 ----
       if this is violated.  Currently a subframework cannot have
       subframeworks; in the future, the mechanism may be extended to
       support this.  The standard frameworks can be found in
!      â€˜/System/Library/Frameworksâ€™ and â€˜/Library/Frameworksâ€™.  An example
!      include looks like â€˜#include <Framework/header.h>â€™, where
!      â€˜Frameworkâ€™ denotes the name of the framework and â€˜header.hâ€™ is
!      found in the â€˜PrivateHeadersâ€™ or â€˜Headersâ€™ directory.
  
! â€˜-iframeworkDIRâ€™
!      Like â€˜-Fâ€™ except the directory is a treated as a system directory.
!      The main difference between this â€˜-iframeworkâ€™ and â€˜-Fâ€™ is that
!      with â€˜-iframeworkâ€™ the compiler does not warn about constructs
       contained within header files found via DIR.  This option is valid
       only for the C family of languages.
  
! â€˜-gusedâ€™
       Emit debugging information for symbols that are used.  For stabs
!      debugging format, this enables â€˜-feliminate-unused-debug-symbolsâ€™.
       This is by default ON.
  
! â€˜-gfullâ€™
       Emit debugging information for all symbols and types.
  
! â€˜-fconstant-cfstringsâ€™
!      The â€˜-fconstant-cfstringsâ€™ is an alias for â€˜-mconstant-cfstringsâ€™.
  
! â€˜-mconstant-cfstringsâ€™
       When the NeXT runtime is being used (the default on these systems),
!      override any â€˜-fconstant-string-classâ€™ setting and cause â€˜@"..."â€™
       literals to be laid out as constant CoreFoundation strings.
  
! â€˜-mmacosx-version-min=VERSIONâ€™
       The earliest version of MacOS X that this executable will run on is
!      VERSION.  Typical values supported for VERSION include â€˜12â€™,
!      â€˜10.12â€™, and â€˜10.5.8â€™.
  
       If the compiler was built to use the system's headers by default,
       then the default for this option is the system version on which the
       compiler is running, otherwise the default is to make choices that
       are compatible with as many systems and code bases as possible.
  
! â€˜-mkernelâ€™
!      Enable kernel development mode.  The â€˜-mkernelâ€™ option sets
!      â€˜-staticâ€™, â€˜-fno-commonâ€™, â€˜-fno-use-cxa-atexitâ€™, â€˜-fno-exceptionsâ€™,
!      â€˜-fno-non-call-exceptionsâ€™, â€˜-fapple-kextâ€™, â€˜-fno-weakâ€™ and
!      â€˜-fno-rttiâ€™ where applicable.  This mode also sets â€˜-mno-altivecâ€™,
!      â€˜-msoft-floatâ€™, â€˜-fno-builtinâ€™ and â€˜-mlong-branchâ€™ for PowerPC
       targets.
  
! â€˜-mone-byte-boolâ€™
!      Override the defaults for â€˜boolâ€™ so that â€˜sizeof(bool)==1â€™.  By
!      default â€˜sizeof(bool)â€™ is â€˜4â€™ when compiling for Darwin/PowerPC and
!      â€˜1â€™ when compiling for Darwin/x86, so this option has no effect on
       x86.
  
!      *Warning:* The â€˜-mone-byte-boolâ€™ switch causes GCC to generate code
       that is not binary compatible with code generated without that
       switch.  Using this switch may require recompiling all other
       modules in a program, including system libraries.  Use this switch
       to conform to a non-default data model.
  
! â€˜-mfix-and-continueâ€™
! â€˜-ffix-and-continueâ€™
! â€˜-findirect-dataâ€™
       Generate code suitable for fast turnaround development, such as to
!      allow GDB to dynamically load â€˜.oâ€™ files into already-running
!      programs.  â€˜-findirect-dataâ€™ and â€˜-ffix-and-continueâ€™ are provided
       for backwards compatibility.
  
! â€˜-all_loadâ€™
       Loads all members of static archive libraries.  See man ld(1) for
       more information.
  
! â€˜-arch_errors_fatalâ€™
       Cause the errors having to do with files that have the wrong
       architecture to be fatal.
  
! â€˜-bind_at_loadâ€™
       Causes the output file to be marked such that the dynamic linker
       will bind all undefined references when the file is loaded or
       launched.
  
! â€˜-bundleâ€™
       Produce a Mach-o bundle format file.  See man ld(1) for more
       information.
  
! â€˜-bundle_loader EXECUTABLEâ€™
       This option specifies the EXECUTABLE that will load the build
       output file being linked.  See man ld(1) for more information.
  
! â€˜-dynamiclibâ€™
       When passed this option, GCC produces a dynamic library instead of
!      an executable when linking, using the Darwin â€˜libtoolâ€™ command.
  
! â€˜-force_cpusubtype_ALLâ€™
!      This causes GCC's output file to have the â€˜ALLâ€™ subtype, instead of
!      one controlled by the â€˜-mcpuâ€™ or â€˜-marchâ€™ option.
  
! â€˜-nodefaultrpathsâ€™
       Do not add default run paths for the compiler library directories
       to executables, modules or dynamic libraries.  On macOS 10.5 and
       later, the embedded runpath is added by default unless the user
!      adds â€˜-nodefaultrpathsâ€™ to the link line.  Run paths are needed
       (and therefore enforced) to build on macOS version 10.11 or later.
  
! â€˜-allowable_client CLIENT_NAMEâ€™
! â€˜-client_nameâ€™
! â€˜-compatibility_versionâ€™
! â€˜-current_versionâ€™
! â€˜-dead_stripâ€™
! â€˜-dependency-fileâ€™
! â€˜-dylib_fileâ€™
! â€˜-dylinker_install_nameâ€™
! â€˜-dynamicâ€™
! â€˜-exported_symbols_listâ€™
! â€˜-filelistâ€™
! â€˜-flat_namespaceâ€™
! â€˜-force_flat_namespaceâ€™
! â€˜-headerpad_max_install_namesâ€™
! â€˜-image_baseâ€™
! â€˜-initâ€™
! â€˜-install_nameâ€™
! â€˜-keep_private_externsâ€™
! â€˜-multi_moduleâ€™
! â€˜-multiply_definedâ€™
! â€˜-multiply_defined_unusedâ€™
! â€˜-noall_loadâ€™
! â€˜-no_dead_strip_inits_and_termsâ€™
! â€˜-nofixprebindingâ€™
! â€˜-nomultidefsâ€™
! â€˜-noprebindâ€™
! â€˜-noseglinkeditâ€™
! â€˜-pagezero_sizeâ€™
! â€˜-prebindâ€™
! â€˜-prebind_all_twolevel_modulesâ€™
! â€˜-private_bundleâ€™
! â€˜-read_only_relocsâ€™
! â€˜-sectalignâ€™
! â€˜-sectobjectsymbolsâ€™
! â€˜-whyloadâ€™
! â€˜-seg1addrâ€™
! â€˜-sectcreateâ€™
! â€˜-sectobjectsymbolsâ€™
! â€˜-sectorderâ€™
! â€˜-segaddrâ€™
! â€˜-segs_read_only_addrâ€™
! â€˜-segs_read_write_addrâ€™
! â€˜-seg_addr_tableâ€™
! â€˜-seg_addr_table_filenameâ€™
! â€˜-seglinkeditâ€™
! â€˜-segprotâ€™
! â€˜-segs_read_only_addrâ€™
! â€˜-segs_read_write_addrâ€™
! â€˜-single_moduleâ€™
! â€˜-staticâ€™
! â€˜-sub_libraryâ€™
! â€˜-sub_umbrellaâ€™
! â€˜-twolevel_namespaceâ€™
! â€˜-umbrellaâ€™
! â€˜-undefinedâ€™
! â€˜-unexported_symbols_listâ€™
! â€˜-weak_reference_mismatchesâ€™
! â€˜-whatsloadedâ€™
       These options are passed to the Darwin linker.  The Darwin linker
       man page describes them in detail.
  
*************** File: gcc.info,  Node: DEC Alpha Options
*** 24610,24622 ****
  3.20.13 DEC Alpha Options
  -------------------------
  
! These '-m' options are defined for the DEC Alpha implementations:
  
! '-mno-soft-float'
! '-msoft-float'
       Use (do not use) the hardware floating-point instructions for
!      floating-point operations.  When '-msoft-float' is specified,
!      functions in 'libgcc.a' are used to perform floating-point
       operations.  Unless they are replaced by routines that emulate the
       floating-point operations, or compiled in such a way as to call
       such emulations routines, these routines issue floating-point
--- 24618,24630 ----
  3.20.13 DEC Alpha Options
  -------------------------
  
! These â€˜-mâ€™ options are defined for the DEC Alpha implementations:
  
! â€˜-mno-soft-floatâ€™
! â€˜-msoft-floatâ€™
       Use (do not use) the hardware floating-point instructions for
!      floating-point operations.  When â€˜-msoft-floatâ€™ is specified,
!      functions in â€˜libgcc.aâ€™ are used to perform floating-point
       operations.  Unless they are replaced by routines that emulate the
       floating-point operations, or compiled in such a way as to call
       such emulations routines, these routines issue floating-point
*************** These '-m' options are defined for the D
*** 24627,24718 ****
       Note that Alpha implementations without floating-point operations
       are required to have floating-point registers.
  
! '-mfp-reg'
! '-mno-fp-regs'
       Generate code that uses (does not use) the floating-point register
!      set.  '-mno-fp-regs' implies '-msoft-float'.  If the floating-point
       register set is not used, floating-point operands are passed in
       integer registers as if they were integers and floating-point
!      results are passed in '$0' instead of '$f0'.  This is a
       non-standard calling sequence, so any function with a
       floating-point argument or return value called by code compiled
!      with '-mno-fp-regs' must also be compiled with that option.
  
       A typical use of this option is building a kernel that does not
       use, and hence need not save and restore, any floating-point
       registers.
  
! '-mieee'
       The Alpha architecture implements floating-point hardware optimized
       for maximum performance.  It is mostly compliant with the IEEE
       floating-point standard.  However, for full compliance, software
       assistance is required.  This option generates code fully
       IEEE-compliant code _except_ that the INEXACT-FLAG is not
       maintained (see below).  If this option is turned on, the
!      preprocessor macro '_IEEE_FP' is defined during compilation.  The
       resulting code is less efficient but is able to correctly support
       denormalized numbers and exceptional IEEE values such as
       not-a-number and plus/minus infinity.  Other Alpha compilers call
!      this option '-ieee_with_no_inexact'.
  
! '-mieee-with-inexact'
!      This is like '-mieee' except the generated code also maintains the
       IEEE INEXACT-FLAG.  Turning on this option causes the generated
       code to implement fully-compliant IEEE math.  In addition to
!      '_IEEE_FP', '_IEEE_FP_EXACT' is defined as a preprocessor macro.
       On some Alpha implementations the resulting code may execute
       significantly slower than the code generated by default.  Since
       there is very little code that depends on the INEXACT-FLAG, you
       should normally not specify this option.  Other Alpha compilers
!      call this option '-ieee_with_inexact'.
  
! '-mfp-trap-mode=TRAP-MODE'
       This option controls what floating-point related traps are enabled.
!      Other Alpha compilers call this option '-fptm TRAP-MODE'.  The trap
       mode can be set to one of four values:
  
!      'n'
            This is the default (normal) setting.  The only traps that are
            enabled are the ones that cannot be disabled in software
            (e.g., division by zero trap).
  
!      'u'
!           In addition to the traps enabled by 'n', underflow traps are
            enabled as well.
  
!      'su'
!           Like 'u', but the instructions are marked to be safe for
            software completion (see Alpha architecture manual for
            details).
  
!      'sui'
!           Like 'su', but inexact traps are enabled as well.
  
! '-mfp-rounding-mode=ROUNDING-MODE'
       Selects the IEEE rounding mode.  Other Alpha compilers call this
!      option '-fprm ROUNDING-MODE'.  The ROUNDING-MODE can be one of:
  
!      'n'
            Normal IEEE rounding mode.  Floating-point numbers are rounded
            towards the nearest machine number or towards the even machine
            number in case of a tie.
  
!      'm'
            Round towards minus infinity.
  
!      'c'
            Chopped rounding mode.  Floating-point numbers are rounded
            towards zero.
  
!      'd'
            Dynamic rounding mode.  A field in the floating-point control
            register (FPCR, see Alpha architecture reference manual)
            controls the rounding mode in effect.  The C library
            initializes this register for rounding towards plus infinity.
!           Thus, unless your program modifies the FPCR, 'd' corresponds
            to round towards plus infinity.
  
! '-mtrap-precision=TRAP-PRECISION'
       In the Alpha architecture, floating-point traps are imprecise.
       This means without software assistance it is impossible to recover
       from a floating trap and program execution normally needs to be
--- 24635,24726 ----
       Note that Alpha implementations without floating-point operations
       are required to have floating-point registers.
  
! â€˜-mfp-regâ€™
! â€˜-mno-fp-regsâ€™
       Generate code that uses (does not use) the floating-point register
!      set.  â€˜-mno-fp-regsâ€™ implies â€˜-msoft-floatâ€™.  If the floating-point
       register set is not used, floating-point operands are passed in
       integer registers as if they were integers and floating-point
!      results are passed in â€˜$0â€™ instead of â€˜$f0â€™.  This is a
       non-standard calling sequence, so any function with a
       floating-point argument or return value called by code compiled
!      with â€˜-mno-fp-regsâ€™ must also be compiled with that option.
  
       A typical use of this option is building a kernel that does not
       use, and hence need not save and restore, any floating-point
       registers.
  
! â€˜-mieeeâ€™
       The Alpha architecture implements floating-point hardware optimized
       for maximum performance.  It is mostly compliant with the IEEE
       floating-point standard.  However, for full compliance, software
       assistance is required.  This option generates code fully
       IEEE-compliant code _except_ that the INEXACT-FLAG is not
       maintained (see below).  If this option is turned on, the
!      preprocessor macro â€˜_IEEE_FPâ€™ is defined during compilation.  The
       resulting code is less efficient but is able to correctly support
       denormalized numbers and exceptional IEEE values such as
       not-a-number and plus/minus infinity.  Other Alpha compilers call
!      this option â€˜-ieee_with_no_inexactâ€™.
  
! â€˜-mieee-with-inexactâ€™
!      This is like â€˜-mieeeâ€™ except the generated code also maintains the
       IEEE INEXACT-FLAG.  Turning on this option causes the generated
       code to implement fully-compliant IEEE math.  In addition to
!      â€˜_IEEE_FPâ€™, â€˜_IEEE_FP_EXACTâ€™ is defined as a preprocessor macro.
       On some Alpha implementations the resulting code may execute
       significantly slower than the code generated by default.  Since
       there is very little code that depends on the INEXACT-FLAG, you
       should normally not specify this option.  Other Alpha compilers
!      call this option â€˜-ieee_with_inexactâ€™.
  
! â€˜-mfp-trap-mode=TRAP-MODEâ€™
       This option controls what floating-point related traps are enabled.
!      Other Alpha compilers call this option â€˜-fptm TRAP-MODEâ€™.  The trap
       mode can be set to one of four values:
  
!      â€˜nâ€™
            This is the default (normal) setting.  The only traps that are
            enabled are the ones that cannot be disabled in software
            (e.g., division by zero trap).
  
!      â€˜uâ€™
!           In addition to the traps enabled by â€˜nâ€™, underflow traps are
            enabled as well.
  
!      â€˜suâ€™
!           Like â€˜uâ€™, but the instructions are marked to be safe for
            software completion (see Alpha architecture manual for
            details).
  
!      â€˜suiâ€™
!           Like â€˜suâ€™, but inexact traps are enabled as well.
  
! â€˜-mfp-rounding-mode=ROUNDING-MODEâ€™
       Selects the IEEE rounding mode.  Other Alpha compilers call this
!      option â€˜-fprm ROUNDING-MODEâ€™.  The ROUNDING-MODE can be one of:
  
!      â€˜nâ€™
            Normal IEEE rounding mode.  Floating-point numbers are rounded
            towards the nearest machine number or towards the even machine
            number in case of a tie.
  
!      â€˜mâ€™
            Round towards minus infinity.
  
!      â€˜câ€™
            Chopped rounding mode.  Floating-point numbers are rounded
            towards zero.
  
!      â€˜dâ€™
            Dynamic rounding mode.  A field in the floating-point control
            register (FPCR, see Alpha architecture reference manual)
            controls the rounding mode in effect.  The C library
            initializes this register for rounding towards plus infinity.
!           Thus, unless your program modifies the FPCR, â€˜dâ€™ corresponds
            to round towards plus infinity.
  
! â€˜-mtrap-precision=TRAP-PRECISIONâ€™
       In the Alpha architecture, floating-point traps are imprecise.
       This means without software assistance it is impossible to recover
       from a floating trap and program execution normally needs to be
*************** These '-m' options are defined for the D
*** 24721,24750 ****
       floating-point trap.  Depending on the requirements of an
       application, different levels of precisions can be selected:
  
!      'p'
            Program precision.  This option is the default and means a
            trap handler can only identify which program caused a
            floating-point exception.
  
!      'f'
            Function precision.  The trap handler can determine the
            function that caused a floating-point exception.
  
!      'i'
            Instruction precision.  The trap handler can determine the
            exact instruction that caused a floating-point exception.
  
       Other Alpha compilers provide the equivalent options called
!      '-scope_safe' and '-resumption_safe'.
  
! '-mieee-conformant'
       This option marks the generated code as IEEE conformant.  You must
!      not use this option unless you also specify '-mtrap-precision=i'
!      and either '-mfp-trap-mode=su' or '-mfp-trap-mode=sui'.  Its only
!      effect is to emit the line '.eflag 48' in the function prologue of
       the generated assembly file.
  
! '-mbuild-constants'
       Normally GCC examines a 32- or 64-bit integer constant to see if it
       can construct it from smaller constants in two or three
       instructions.  If it cannot, it outputs the constant as a literal
--- 24729,24758 ----
       floating-point trap.  Depending on the requirements of an
       application, different levels of precisions can be selected:
  
!      â€˜pâ€™
            Program precision.  This option is the default and means a
            trap handler can only identify which program caused a
            floating-point exception.
  
!      â€˜fâ€™
            Function precision.  The trap handler can determine the
            function that caused a floating-point exception.
  
!      â€˜iâ€™
            Instruction precision.  The trap handler can determine the
            exact instruction that caused a floating-point exception.
  
       Other Alpha compilers provide the equivalent options called
!      â€˜-scope_safeâ€™ and â€˜-resumption_safeâ€™.
  
! â€˜-mieee-conformantâ€™
       This option marks the generated code as IEEE conformant.  You must
!      not use this option unless you also specify â€˜-mtrap-precision=iâ€™
!      and either â€˜-mfp-trap-mode=suâ€™ or â€˜-mfp-trap-mode=suiâ€™.  Its only
!      effect is to emit the line â€˜.eflag 48â€™ in the function prologue of
       the generated assembly file.
  
! â€˜-mbuild-constantsâ€™
       Normally GCC examines a 32- or 64-bit integer constant to see if it
       can construct it from smaller constants in two or three
       instructions.  If it cannot, it outputs the constant as a literal
*************** These '-m' options are defined for the D
*** 24759,24799 ****
       before it can find the variables and constants in its own data
       segment.
  
! '-mbwx'
! '-mno-bwx'
! '-mcix'
! '-mno-cix'
! '-mfix'
! '-mno-fix'
! '-mmax'
! '-mno-max'
       Indicate whether GCC should generate code to use the optional BWX,
       CIX, FIX and MAX instruction sets.  The default is to use the
!      instruction sets supported by the CPU type specified via '-mcpu='
       option or that of the CPU on which GCC was built if none is
       specified.
  
! '-msafe-bwa'
! '-mno-safe-bwa'
       Indicate whether in the absence of the optional BWX instruction set
       GCC should generate multi-thread and async-signal safe code for
       byte and aligned word memory accesses.
  
! '-msafe-partial'
! '-mno-safe-partial'
       Indicate whether GCC should generate multi-thread and async-signal
       safe code for partial memory accesses, including piecemeal accesses
       to unaligned data as well as block accesses to leading and trailing
       parts of aggregate types or other objects in memory that do not
       respectively start and end on an aligned 64-bit data boundary.
  
! '-mfloat-vax'
! '-mfloat-ieee'
       Generate code that uses (does not use) VAX F and G floating-point
       arithmetic instead of IEEE single and double precision.
  
! '-mexplicit-relocs'
! '-mno-explicit-relocs'
       Older Alpha assemblers provided no way to generate symbol
       relocations except via assembler macros.  Use of these macros does
       not allow optimal instruction scheduling.  GNU binutils as of
--- 24767,24807 ----
       before it can find the variables and constants in its own data
       segment.
  
! â€˜-mbwxâ€™
! â€˜-mno-bwxâ€™
! â€˜-mcixâ€™
! â€˜-mno-cixâ€™
! â€˜-mfixâ€™
! â€˜-mno-fixâ€™
! â€˜-mmaxâ€™
! â€˜-mno-maxâ€™
       Indicate whether GCC should generate code to use the optional BWX,
       CIX, FIX and MAX instruction sets.  The default is to use the
!      instruction sets supported by the CPU type specified via â€˜-mcpu=â€™
       option or that of the CPU on which GCC was built if none is
       specified.
  
! â€˜-msafe-bwaâ€™
! â€˜-mno-safe-bwaâ€™
       Indicate whether in the absence of the optional BWX instruction set
       GCC should generate multi-thread and async-signal safe code for
       byte and aligned word memory accesses.
  
! â€˜-msafe-partialâ€™
! â€˜-mno-safe-partialâ€™
       Indicate whether GCC should generate multi-thread and async-signal
       safe code for partial memory accesses, including piecemeal accesses
       to unaligned data as well as block accesses to leading and trailing
       parts of aggregate types or other objects in memory that do not
       respectively start and end on an aligned 64-bit data boundary.
  
! â€˜-mfloat-vaxâ€™
! â€˜-mfloat-ieeeâ€™
       Generate code that uses (does not use) VAX F and G floating-point
       arithmetic instead of IEEE single and double precision.
  
! â€˜-mexplicit-relocsâ€™
! â€˜-mno-explicit-relocsâ€™
       Older Alpha assemblers provided no way to generate symbol
       relocations except via assembler macros.  Use of these macros does
       not allow optimal instruction scheduling.  GNU binutils as of
*************** These '-m' options are defined for the D
*** 24803,24840 ****
       detects the capabilities of the assembler when it is built and sets
       the default accordingly.
  
! '-msmall-data'
! '-mlarge-data'
!      When '-mexplicit-relocs' is in effect, static data is accessed via
!      "gp-relative" relocations.  When '-msmall-data' is used, objects 8
!      bytes long or smaller are placed in a "small data area" (the
!      '.sdata' and '.sbss' sections) and are accessed via 16-bit
!      relocations off of the '$gp' register.  This limits the size of the
       small data area to 64KB, but allows the variables to be directly
       accessed via a single instruction.
  
!      The default is '-mlarge-data'.  With this option the data area is
       limited to just below 2GB.  Programs that require more than 2GB of
!      data must use 'malloc' or 'mmap' to allocate the data in the heap
       instead of in the program's data segment.
  
!      When generating code for shared libraries, '-fpic' implies
!      '-msmall-data' and '-fPIC' implies '-mlarge-data'.
  
! '-msmall-text'
! '-mlarge-text'
!      When '-msmall-text' is used, the compiler assumes that the code of
       the entire program (or shared library) fits in 4MB, and is thus
!      reachable with a branch instruction.  When '-msmall-data' is used,
!      the compiler can assume that all local symbols share the same '$gp'
       value, and thus reduce the number of instructions required for a
       function call from 4 to 1.
  
!      The default is '-mlarge-text'.
  
! '-mcpu=CPU_TYPE'
       Set the instruction set and instruction scheduling parameters for
!      machine type CPU_TYPE.  You can specify either the 'EV' style name
       or the corresponding chip number.  GCC supports scheduling
       parameters for the EV4, EV5 and EV6 family of processors and
       chooses the default values for the instruction set from the
--- 24811,24848 ----
       detects the capabilities of the assembler when it is built and sets
       the default accordingly.
  
! â€˜-msmall-dataâ€™
! â€˜-mlarge-dataâ€™
!      When â€˜-mexplicit-relocsâ€™ is in effect, static data is accessed via
!      â€œgp-relativeâ€� relocations.  When â€˜-msmall-dataâ€™ is used, objects 8
!      bytes long or smaller are placed in a â€œsmall data areaâ€� (the
!      â€˜.sdataâ€™ and â€˜.sbssâ€™ sections) and are accessed via 16-bit
!      relocations off of the â€˜$gpâ€™ register.  This limits the size of the
       small data area to 64KB, but allows the variables to be directly
       accessed via a single instruction.
  
!      The default is â€˜-mlarge-dataâ€™.  With this option the data area is
       limited to just below 2GB.  Programs that require more than 2GB of
!      data must use â€˜mallocâ€™ or â€˜mmapâ€™ to allocate the data in the heap
       instead of in the program's data segment.
  
!      When generating code for shared libraries, â€˜-fpicâ€™ implies
!      â€˜-msmall-dataâ€™ and â€˜-fPICâ€™ implies â€˜-mlarge-dataâ€™.
  
! â€˜-msmall-textâ€™
! â€˜-mlarge-textâ€™
!      When â€˜-msmall-textâ€™ is used, the compiler assumes that the code of
       the entire program (or shared library) fits in 4MB, and is thus
!      reachable with a branch instruction.  When â€˜-msmall-dataâ€™ is used,
!      the compiler can assume that all local symbols share the same â€˜$gpâ€™
       value, and thus reduce the number of instructions required for a
       function call from 4 to 1.
  
!      The default is â€˜-mlarge-textâ€™.
  
! â€˜-mcpu=CPU_TYPEâ€™
       Set the instruction set and instruction scheduling parameters for
!      machine type CPU_TYPE.  You can specify either the â€˜EVâ€™ style name
       or the corresponding chip number.  GCC supports scheduling
       parameters for the EV4, EV5 and EV6 family of processors and
       chooses the default values for the instruction set from the
*************** These '-m' options are defined for the D
*** 24843,24891 ****
  
       Supported values for CPU_TYPE are
  
!      'ev4'
!      'ev45'
!      '21064'
            Schedules as an EV4 and has no instruction set extensions.
  
!      'ev5'
!      '21164'
            Schedules as an EV5 and has no instruction set extensions.
  
!      'ev56'
!      '21164a'
            Schedules as an EV5 and supports the BWX extension.
  
!      'pca56'
!      '21164pc'
!      '21164PC'
            Schedules as an EV5 and supports the BWX and MAX extensions.
  
!      'ev6'
!      '21264'
            Schedules as an EV6 and supports the BWX, FIX, and MAX
            extensions.
  
!      'ev67'
!      '21264a'
            Schedules as an EV6 and supports the BWX, CIX, FIX, and MAX
            extensions.
  
!      Native toolchains also support the value 'native', which selects
       the best architecture option for the host processor.
!      '-mcpu=native' has no effect if GCC does not recognize the
       processor.
  
! '-mtune=CPU_TYPE'
       Set only the instruction scheduling parameters for machine type
       CPU_TYPE.  The instruction set is not changed.
  
!      Native toolchains also support the value 'native', which selects
       the best architecture option for the host processor.
!      '-mtune=native' has no effect if GCC does not recognize the
       processor.
  
! '-mmemory-latency=TIME'
       Sets the latency the scheduler should assume for typical memory
       references as seen by the application.  This number is highly
       dependent on the memory access patterns used by the application and
--- 24851,24899 ----
  
       Supported values for CPU_TYPE are
  
!      â€˜ev4â€™
!      â€˜ev45â€™
!      â€˜21064â€™
            Schedules as an EV4 and has no instruction set extensions.
  
!      â€˜ev5â€™
!      â€˜21164â€™
            Schedules as an EV5 and has no instruction set extensions.
  
!      â€˜ev56â€™
!      â€˜21164aâ€™
            Schedules as an EV5 and supports the BWX extension.
  
!      â€˜pca56â€™
!      â€˜21164pcâ€™
!      â€˜21164PCâ€™
            Schedules as an EV5 and supports the BWX and MAX extensions.
  
!      â€˜ev6â€™
!      â€˜21264â€™
            Schedules as an EV6 and supports the BWX, FIX, and MAX
            extensions.
  
!      â€˜ev67â€™
!      â€˜21264aâ€™
            Schedules as an EV6 and supports the BWX, CIX, FIX, and MAX
            extensions.
  
!      Native toolchains also support the value â€˜nativeâ€™, which selects
       the best architecture option for the host processor.
!      â€˜-mcpu=nativeâ€™ has no effect if GCC does not recognize the
       processor.
  
! â€˜-mtune=CPU_TYPEâ€™
       Set only the instruction scheduling parameters for machine type
       CPU_TYPE.  The instruction set is not changed.
  
!      Native toolchains also support the value â€˜nativeâ€™, which selects
       the best architecture option for the host processor.
!      â€˜-mtune=nativeâ€™ has no effect if GCC does not recognize the
       processor.
  
! â€˜-mmemory-latency=TIMEâ€™
       Sets the latency the scheduler should assume for typical memory
       references as seen by the application.  This number is highly
       dependent on the memory access patterns used by the application and
*************** These '-m' options are defined for the D
*** 24893,24905 ****
  
       Valid options for TIME are
  
!      'NUMBER'
            A decimal number representing clock cycles.
  
!      'L1'
!      'L2'
!      'L3'
!      'main'
            The compiler contains estimates of the number of clock cycles
            for "typical" EV4 & EV5 hardware for the Level 1, 2 & 3 caches
            (also called Dcache, Scache, and Bcache), as well as to main
--- 24901,24913 ----
  
       Valid options for TIME are
  
!      â€˜NUMBERâ€™
            A decimal number representing clock cycles.
  
!      â€˜L1â€™
!      â€˜L2â€™
!      â€˜L3â€™
!      â€˜mainâ€™
            The compiler contains estimates of the number of clock cycles
            for "typical" EV4 & EV5 hardware for the Level 1, 2 & 3 caches
            (also called Dcache, Scache, and Bcache), as well as to main
*************** File: gcc.info,  Node: eBPF Options,  Ne
*** 24911,25023 ****
  3.20.14 eBPF Options
  --------------------
  
! '-mframe-limit=BYTES'
       This specifies the hard limit for frame sizes, in bytes.
       Currently, the value that can be specified should be less than or
!      equal to '32767'.  Defaults to whatever limit is imposed by the
       version of the Linux kernel targeted.
  
! '-mbig-endian'
       Generate code for a big-endian target.
  
! '-mlittle-endian'
       Generate code for a little-endian target.  This is the default.
  
! '-mjmpext'
! '-mno-jmpext'
       Enable or disable generation of extra conditional-branch
       instructions.  Enabled for CPU v2 and above.
  
! '-mjmp32'
! '-mno-jmp32'
       Enable or disable generation of 32-bit jump instructions.  Enabled
       for CPU v3 and above.
  
! '-malu32'
! '-mno-alu32'
       Enable or disable generation of 32-bit ALU instructions.  Enabled
       for CPU v3 and above.
  
! '-mv3-atomics'
! '-mno-v3-atomics'
       Enable or disable instructions for general atomic operations
       introduced in CPU v3.  Enabled for CPU v3 and above.
  
! '-mbswap'
! '-mno-bswap'
       Enable or disable byte swap instructions.  Enabled for CPU v4 and
       above.
  
! '-msdiv'
! '-mno-sdiv'
       Enable or disable signed division and modulus instructions.
       Enabled for CPU v4 and above.
  
! '-msmov'
! '-mno-smov'
       Enable or disable sign-extending move and memory load instructions.
       Enabled for CPU v4 and above.
  
! '-mcpu=VERSION'
       This specifies which version of the eBPF ISA to target.  Newer
!      versions may not be supported by all kernels.  The default is 'v4'.
  
       Supported values for VERSION are:
  
!      'v1'
            The first stable eBPF ISA with no special features or
            extensions.
  
!      'v2'
!           Supports the jump extensions, as in '-mjmpext'.
  
!      'v3'
            All features of v2, plus:
!              - 32-bit jump operations, as in '-mjmp32'
!              - 32-bit ALU operations, as in '-malu32'
!              - general atomic operations, as in '-mv3-atomics'
  
!      'v4'
            All features of v3, plus:
!              - Byte swap instructions, as in '-mbswap'
!              - Signed division and modulus instructions, as in '-msdiv'
!              - Sign-extending move and memory load instructions, as in
!                '-msmov'
  
! '-mco-re'
       Enable BPF Compile Once - Run Everywhere (CO-RE) support.  Requires
!      and is implied by '-gbtf'.
  
! '-mno-co-re'
       Disable BPF Compile Once - Run Everywhere (CO-RE) support.  BPF
       CO-RE support is enabled by default when generating BTF debug
       information for the BPF target.
  
! '-mxbpf'
       Generate code for an expanded version of BPF, which relaxes some of
       the restrictions imposed by the BPF architecture:
!         - Save and restore callee-saved registers at function entry and
            exit, respectively.
  
! '-masm=DIALECT'
       Outputs assembly instructions using eBPF selected DIALECT.  The
!      default is 'pseudoc'.
  
       Supported values for DIALECT are:
  
!      'normal'
            Outputs normal assembly dialect.
  
!      'pseudoc'
            Outputs pseudo-c assembly dialect.
  
! '-minline-memops-threshold=BYTES'
       Specifies a size threshold in bytes at or below which memmove,
       memcpy and memset shall always be expanded inline.  Operations
       dealing with sizes larger than this threshold would have to be
       implemented using a library call instead of being expanded inline,
       but since BPF doesn't allow libcalls, exceeding this threshold
!      results in a compile-time error.  The default is '1024' bytes.
  
  
  File: gcc.info,  Node: FR30 Options,  Next: FT32 Options,  Prev: eBPF Options,  Up: Submodel Options
--- 24919,25031 ----
  3.20.14 eBPF Options
  --------------------
  
! â€˜-mframe-limit=BYTESâ€™
       This specifies the hard limit for frame sizes, in bytes.
       Currently, the value that can be specified should be less than or
!      equal to â€˜32767â€™.  Defaults to whatever limit is imposed by the
       version of the Linux kernel targeted.
  
! â€˜-mbig-endianâ€™
       Generate code for a big-endian target.
  
! â€˜-mlittle-endianâ€™
       Generate code for a little-endian target.  This is the default.
  
! â€˜-mjmpextâ€™
! â€˜-mno-jmpextâ€™
       Enable or disable generation of extra conditional-branch
       instructions.  Enabled for CPU v2 and above.
  
! â€˜-mjmp32â€™
! â€˜-mno-jmp32â€™
       Enable or disable generation of 32-bit jump instructions.  Enabled
       for CPU v3 and above.
  
! â€˜-malu32â€™
! â€˜-mno-alu32â€™
       Enable or disable generation of 32-bit ALU instructions.  Enabled
       for CPU v3 and above.
  
! â€˜-mv3-atomicsâ€™
! â€˜-mno-v3-atomicsâ€™
       Enable or disable instructions for general atomic operations
       introduced in CPU v3.  Enabled for CPU v3 and above.
  
! â€˜-mbswapâ€™
! â€˜-mno-bswapâ€™
       Enable or disable byte swap instructions.  Enabled for CPU v4 and
       above.
  
! â€˜-msdivâ€™
! â€˜-mno-sdivâ€™
       Enable or disable signed division and modulus instructions.
       Enabled for CPU v4 and above.
  
! â€˜-msmovâ€™
! â€˜-mno-smovâ€™
       Enable or disable sign-extending move and memory load instructions.
       Enabled for CPU v4 and above.
  
! â€˜-mcpu=VERSIONâ€™
       This specifies which version of the eBPF ISA to target.  Newer
!      versions may not be supported by all kernels.  The default is â€˜v4â€™.
  
       Supported values for VERSION are:
  
!      â€˜v1â€™
            The first stable eBPF ISA with no special features or
            extensions.
  
!      â€˜v2â€™
!           Supports the jump extensions, as in â€˜-mjmpextâ€™.
  
!      â€˜v3â€™
            All features of v2, plus:
!              âˆ’ 32-bit jump operations, as in â€˜-mjmp32â€™
!              âˆ’ 32-bit ALU operations, as in â€˜-malu32â€™
!              âˆ’ general atomic operations, as in â€˜-mv3-atomicsâ€™
  
!      â€˜v4â€™
            All features of v3, plus:
!              âˆ’ Byte swap instructions, as in â€˜-mbswapâ€™
!              âˆ’ Signed division and modulus instructions, as in â€˜-msdivâ€™
!              âˆ’ Sign-extending move and memory load instructions, as in
!                â€˜-msmovâ€™
  
! â€˜-mco-reâ€™
       Enable BPF Compile Once - Run Everywhere (CO-RE) support.  Requires
!      and is implied by â€˜-gbtfâ€™.
  
! â€˜-mno-co-reâ€™
       Disable BPF Compile Once - Run Everywhere (CO-RE) support.  BPF
       CO-RE support is enabled by default when generating BTF debug
       information for the BPF target.
  
! â€˜-mxbpfâ€™
       Generate code for an expanded version of BPF, which relaxes some of
       the restrictions imposed by the BPF architecture:
!         âˆ’ Save and restore callee-saved registers at function entry and
            exit, respectively.
  
! â€˜-masm=DIALECTâ€™
       Outputs assembly instructions using eBPF selected DIALECT.  The
!      default is â€˜pseudocâ€™.
  
       Supported values for DIALECT are:
  
!      â€˜normalâ€™
            Outputs normal assembly dialect.
  
!      â€˜pseudocâ€™
            Outputs pseudo-c assembly dialect.
  
! â€˜-minline-memops-threshold=BYTESâ€™
       Specifies a size threshold in bytes at or below which memmove,
       memcpy and memset shall always be expanded inline.  Operations
       dealing with sizes larger than this threshold would have to be
       implemented using a library call instead of being expanded inline,
       but since BPF doesn't allow libcalls, exceeding this threshold
!      results in a compile-time error.  The default is â€˜1024â€™ bytes.
  
  
  File: gcc.info,  Node: FR30 Options,  Next: FT32 Options,  Prev: eBPF Options,  Up: Submodel Options
*************** File: gcc.info,  Node: FR30 Options,  Ne
*** 25027,25040 ****
  
  These options are defined specifically for the FR30 port.
  
! '-msmall-model'
       Use the small address space model.  This can produce smaller code,
       but it does assume that all symbolic values and addresses fit into
       a 20-bit range.
  
! '-mno-lsim'
       Assume that runtime support has been provided and so there is no
!      need to include the simulator library ('libsim.a') on the linker
       command line.
  
  
--- 25035,25048 ----
  
  These options are defined specifically for the FR30 port.
  
! â€˜-msmall-modelâ€™
       Use the small address space model.  This can produce smaller code,
       but it does assume that all symbolic values and addresses fit into
       a 20-bit range.
  
! â€˜-mno-lsimâ€™
       Assume that runtime support has been provided and so there is no
!      need to include the simulator library (â€˜libsim.aâ€™) on the linker
       command line.
  
  
*************** File: gcc.info,  Node: FT32 Options,  Ne
*** 25045,25070 ****
  
  These options are defined specifically for the FT32 port.
  
! '-msim'
       Specifies that the program will be run on the simulator.  This
       causes an alternate runtime startup and library to be linked.  You
       must not use this option when generating programs that will run on
       real hardware; you must provide your own runtime library for
       whatever I/O functions are needed.
  
! '-mlra'
       Does nothing.  Preserved for backward compatibility.
  
! '-mnodiv'
       Do not use div and mod instructions.
  
! '-mft32b'
       Enable use of the extended instructions of the FT32B processor.
  
! '-mcompress'
       Compress all code using the Ft32B code compression scheme.
  
! '-mnopm'
       Do not generate code that reads program memory.
  
  
--- 25053,25078 ----
  
  These options are defined specifically for the FT32 port.
  
! â€˜-msimâ€™
       Specifies that the program will be run on the simulator.  This
       causes an alternate runtime startup and library to be linked.  You
       must not use this option when generating programs that will run on
       real hardware; you must provide your own runtime library for
       whatever I/O functions are needed.
  
! â€˜-mlraâ€™
       Does nothing.  Preserved for backward compatibility.
  
! â€˜-mnodivâ€™
       Do not use div and mod instructions.
  
! â€˜-mft32bâ€™
       Enable use of the extended instructions of the FT32B processor.
  
! â€˜-mcompressâ€™
       Compress all code using the Ft32B code compression scheme.
  
! â€˜-mnopmâ€™
       Do not generate code that reads program memory.
  
  
*************** File: gcc.info,  Node: FRV Options,  Nex
*** 25073,25334 ****
  3.20.17 FRV Options
  -------------------
  
! '-mgpr-32'
  
       Only use the first 32 general-purpose registers.
  
! '-mgpr-64'
  
       Use all 64 general-purpose registers.
  
! '-mfpr-32'
  
       Use only the first 32 floating-point registers.
  
! '-mfpr-64'
  
       Use all 64 floating-point registers.
  
! '-mhard-float'
  
       Use hardware instructions for floating-point operations.
  
! '-msoft-float'
  
       Use library routines for floating-point operations.
  
! '-malloc-cc'
  
       Dynamically allocate condition code registers.
  
! '-mfixed-cc'
  
       Do not try to dynamically allocate condition code registers, only
!      use 'icc0' and 'fcc0'.
  
! '-mdword'
  
       Change ABI to use double word insns.
  
! '-mno-dword'
  
       Do not use double word instructions.
  
! '-mdouble'
  
       Use floating-point double instructions.
  
! '-mno-double'
  
       Do not use floating-point double instructions.
  
! '-mmedia'
  
       Use media instructions.
  
! '-mno-media'
  
       Do not use media instructions.
  
! '-mmuladd'
  
       Use multiply and add/subtract instructions.
  
! '-mno-muladd'
  
       Do not use multiply and add/subtract instructions.
  
! '-mfdpic'
  
       Select the FDPIC ABI, which uses function descriptors to represent
       pointers to functions.  Without any PIC/PIE-related options, it
!      implies '-fPIE'.  With '-fpic' or '-fpie', it assumes GOT entries
       and small data are within a 12-bit range from the GOT base address;
!      with '-fPIC' or '-fPIE', GOT offsets are computed with 32 bits.
!      With a 'bfin-elf' target, this option implies '-msim'.
  
! '-minline-plt'
  
       Enable inlining of PLT entries in function calls to functions that
!      are not known to bind locally.  It has no effect without '-mfdpic'.
       It's enabled by default if optimizing for speed and compiling for
!      shared libraries (i.e., '-fPIC' or '-fpic'), or when an
!      optimization option such as '-O3' or above is present in the
       command line.
  
! '-mTLS'
  
       Assume a large TLS segment when generating thread-local code.
  
! '-mtls'
  
       Do not assume a large TLS segment when generating thread-local
       code.
  
! '-mgprel-ro'
  
!      Enable the use of 'GPREL' relocations in the FDPIC ABI for data
       that is known to be in read-only sections.  It's enabled by
!      default, except for '-fpic' or '-fpie': even though it may help
       make the global offset table smaller, it trades 1 instruction for
!      4.  With '-fPIC' or '-fPIE', it trades 3 instructions for 4, one of
       which may be shared by multiple symbols, and it avoids the need for
       a GOT entry for the referenced symbol, so it's more likely to be a
!      win.  If it is not, '-mno-gprel-ro' can be used to disable it.
  
! '-multilib-library-pic'
  
       Link with the (library, not FD) pic libraries.  It's implied by
!      '-mlibrary-pic', as well as by '-fPIC' and '-fpic' without
!      '-mfdpic'.  You should never have to use it explicitly.
  
! '-mlinked-fp'
  
       Follow the EABI requirement of always creating a frame pointer
       whenever a stack frame is allocated.  This option is enabled by
!      default and can be disabled with '-mno-linked-fp'.
  
! '-mlong-calls'
  
       Use indirect addressing to call functions outside the current
       compilation unit.  This allows the functions to be placed anywhere
       within the 32-bit address space.
  
! '-malign-labels'
  
       Try to align labels to an 8-byte boundary by inserting NOPs into
       the previous packet.  This option only has an effect when VLIW
       packing is enabled.  It doesn't create new packets; it merely adds
       NOPs to existing ones.
  
! '-mlibrary-pic'
  
       Generate position-independent EABI code.
  
! '-macc-4'
  
       Use only the first four media accumulator registers.
  
! '-macc-8'
  
       Use all eight media accumulator registers.
  
! '-mpack'
  
       Pack VLIW instructions.
  
! '-mno-pack'
  
       Do not pack VLIW instructions.
  
! '-mno-eflags'
  
       Do not mark ABI switches in e_flags.
  
! '-mcond-move'
  
       Enable the use of conditional-move instructions (default).
  
       This switch is mainly for debugging the compiler and will likely be
       removed in a future version.
  
! '-mno-cond-move'
  
       Disable the use of conditional-move instructions.
  
       This switch is mainly for debugging the compiler and will likely be
       removed in a future version.
  
! '-mscc'
  
       Enable the use of conditional set instructions (default).
  
       This switch is mainly for debugging the compiler and will likely be
       removed in a future version.
  
! '-mno-scc'
  
       Disable the use of conditional set instructions.
  
       This switch is mainly for debugging the compiler and will likely be
       removed in a future version.
  
! '-mcond-exec'
  
       Enable the use of conditional execution (default).
  
       This switch is mainly for debugging the compiler and will likely be
       removed in a future version.
  
! '-mno-cond-exec'
  
       Disable the use of conditional execution.
  
       This switch is mainly for debugging the compiler and will likely be
       removed in a future version.
  
! '-mvliw-branch'
  
       Run a pass to pack branches into VLIW instructions (default).
  
       This switch is mainly for debugging the compiler and will likely be
       removed in a future version.
  
! '-mno-vliw-branch'
  
       Do not run a pass to pack branches into VLIW instructions.
  
       This switch is mainly for debugging the compiler and will likely be
       removed in a future version.
  
! '-mmulti-cond-exec'
  
!      Enable optimization of '&&' and '||' in conditional execution
       (default).
  
       This switch is mainly for debugging the compiler and will likely be
       removed in a future version.
  
! '-mno-multi-cond-exec'
  
!      Disable optimization of '&&' and '||' in conditional execution.
  
       This switch is mainly for debugging the compiler and will likely be
       removed in a future version.
  
! '-mnested-cond-exec'
  
       Enable nested conditional execution optimizations (default).
  
       This switch is mainly for debugging the compiler and will likely be
       removed in a future version.
  
! '-mno-nested-cond-exec'
  
       Disable nested conditional execution optimizations.
  
       This switch is mainly for debugging the compiler and will likely be
       removed in a future version.
  
! '-moptimize-membar'
  
!      This switch removes redundant 'membar' instructions from the
       compiler-generated code.  It is enabled by default.
  
! '-mno-optimize-membar'
  
!      This switch disables the automatic removal of redundant 'membar'
       instructions from the generated code.
  
! '-mtomcat-stats'
  
       Cause gas to print out tomcat statistics.
  
! '-mcpu=CPU'
  
       Select the processor type for which to generate code.  Possible
!      values are 'frv', 'fr550', 'tomcat', 'fr500', 'fr450', 'fr405',
!      'fr400', 'fr300' and 'simple'.
  
  
  File: gcc.info,  Node: GNU/Linux Options,  Next: H8/300 Options,  Prev: FRV Options,  Up: Submodel Options
--- 25081,25342 ----
  3.20.17 FRV Options
  -------------------
  
! â€˜-mgpr-32â€™
  
       Only use the first 32 general-purpose registers.
  
! â€˜-mgpr-64â€™
  
       Use all 64 general-purpose registers.
  
! â€˜-mfpr-32â€™
  
       Use only the first 32 floating-point registers.
  
! â€˜-mfpr-64â€™
  
       Use all 64 floating-point registers.
  
! â€˜-mhard-floatâ€™
  
       Use hardware instructions for floating-point operations.
  
! â€˜-msoft-floatâ€™
  
       Use library routines for floating-point operations.
  
! â€˜-malloc-ccâ€™
  
       Dynamically allocate condition code registers.
  
! â€˜-mfixed-ccâ€™
  
       Do not try to dynamically allocate condition code registers, only
!      use â€˜icc0â€™ and â€˜fcc0â€™.
  
! â€˜-mdwordâ€™
  
       Change ABI to use double word insns.
  
! â€˜-mno-dwordâ€™
  
       Do not use double word instructions.
  
! â€˜-mdoubleâ€™
  
       Use floating-point double instructions.
  
! â€˜-mno-doubleâ€™
  
       Do not use floating-point double instructions.
  
! â€˜-mmediaâ€™
  
       Use media instructions.
  
! â€˜-mno-mediaâ€™
  
       Do not use media instructions.
  
! â€˜-mmuladdâ€™
  
       Use multiply and add/subtract instructions.
  
! â€˜-mno-muladdâ€™
  
       Do not use multiply and add/subtract instructions.
  
! â€˜-mfdpicâ€™
  
       Select the FDPIC ABI, which uses function descriptors to represent
       pointers to functions.  Without any PIC/PIE-related options, it
!      implies â€˜-fPIEâ€™.  With â€˜-fpicâ€™ or â€˜-fpieâ€™, it assumes GOT entries
       and small data are within a 12-bit range from the GOT base address;
!      with â€˜-fPICâ€™ or â€˜-fPIEâ€™, GOT offsets are computed with 32 bits.
!      With a â€˜bfin-elfâ€™ target, this option implies â€˜-msimâ€™.
  
! â€˜-minline-pltâ€™
  
       Enable inlining of PLT entries in function calls to functions that
!      are not known to bind locally.  It has no effect without â€˜-mfdpicâ€™.
       It's enabled by default if optimizing for speed and compiling for
!      shared libraries (i.e., â€˜-fPICâ€™ or â€˜-fpicâ€™), or when an
!      optimization option such as â€˜-O3â€™ or above is present in the
       command line.
  
! â€˜-mTLSâ€™
  
       Assume a large TLS segment when generating thread-local code.
  
! â€˜-mtlsâ€™
  
       Do not assume a large TLS segment when generating thread-local
       code.
  
! â€˜-mgprel-roâ€™
  
!      Enable the use of â€˜GPRELâ€™ relocations in the FDPIC ABI for data
       that is known to be in read-only sections.  It's enabled by
!      default, except for â€˜-fpicâ€™ or â€˜-fpieâ€™: even though it may help
       make the global offset table smaller, it trades 1 instruction for
!      4.  With â€˜-fPICâ€™ or â€˜-fPIEâ€™, it trades 3 instructions for 4, one of
       which may be shared by multiple symbols, and it avoids the need for
       a GOT entry for the referenced symbol, so it's more likely to be a
!      win.  If it is not, â€˜-mno-gprel-roâ€™ can be used to disable it.
  
! â€˜-multilib-library-picâ€™
  
       Link with the (library, not FD) pic libraries.  It's implied by
!      â€˜-mlibrary-picâ€™, as well as by â€˜-fPICâ€™ and â€˜-fpicâ€™ without
!      â€˜-mfdpicâ€™.  You should never have to use it explicitly.
  
! â€˜-mlinked-fpâ€™
  
       Follow the EABI requirement of always creating a frame pointer
       whenever a stack frame is allocated.  This option is enabled by
!      default and can be disabled with â€˜-mno-linked-fpâ€™.
  
! â€˜-mlong-callsâ€™
  
       Use indirect addressing to call functions outside the current
       compilation unit.  This allows the functions to be placed anywhere
       within the 32-bit address space.
  
! â€˜-malign-labelsâ€™
  
       Try to align labels to an 8-byte boundary by inserting NOPs into
       the previous packet.  This option only has an effect when VLIW
       packing is enabled.  It doesn't create new packets; it merely adds
       NOPs to existing ones.
  
! â€˜-mlibrary-picâ€™
  
       Generate position-independent EABI code.
  
! â€˜-macc-4â€™
  
       Use only the first four media accumulator registers.
  
! â€˜-macc-8â€™
  
       Use all eight media accumulator registers.
  
! â€˜-mpackâ€™
  
       Pack VLIW instructions.
  
! â€˜-mno-packâ€™
  
       Do not pack VLIW instructions.
  
! â€˜-mno-eflagsâ€™
  
       Do not mark ABI switches in e_flags.
  
! â€˜-mcond-moveâ€™
  
       Enable the use of conditional-move instructions (default).
  
       This switch is mainly for debugging the compiler and will likely be
       removed in a future version.
  
! â€˜-mno-cond-moveâ€™
  
       Disable the use of conditional-move instructions.
  
       This switch is mainly for debugging the compiler and will likely be
       removed in a future version.
  
! â€˜-msccâ€™
  
       Enable the use of conditional set instructions (default).
  
       This switch is mainly for debugging the compiler and will likely be
       removed in a future version.
  
! â€˜-mno-sccâ€™
  
       Disable the use of conditional set instructions.
  
       This switch is mainly for debugging the compiler and will likely be
       removed in a future version.
  
! â€˜-mcond-execâ€™
  
       Enable the use of conditional execution (default).
  
       This switch is mainly for debugging the compiler and will likely be
       removed in a future version.
  
! â€˜-mno-cond-execâ€™
  
       Disable the use of conditional execution.
  
       This switch is mainly for debugging the compiler and will likely be
       removed in a future version.
  
! â€˜-mvliw-branchâ€™
  
       Run a pass to pack branches into VLIW instructions (default).
  
       This switch is mainly for debugging the compiler and will likely be
       removed in a future version.
  
! â€˜-mno-vliw-branchâ€™
  
       Do not run a pass to pack branches into VLIW instructions.
  
       This switch is mainly for debugging the compiler and will likely be
       removed in a future version.
  
! â€˜-mmulti-cond-execâ€™
  
!      Enable optimization of â€˜&&â€™ and â€˜||â€™ in conditional execution
       (default).
  
       This switch is mainly for debugging the compiler and will likely be
       removed in a future version.
  
! â€˜-mno-multi-cond-execâ€™
  
!      Disable optimization of â€˜&&â€™ and â€˜||â€™ in conditional execution.
  
       This switch is mainly for debugging the compiler and will likely be
       removed in a future version.
  
! â€˜-mnested-cond-execâ€™
  
       Enable nested conditional execution optimizations (default).
  
       This switch is mainly for debugging the compiler and will likely be
       removed in a future version.
  
! â€˜-mno-nested-cond-execâ€™
  
       Disable nested conditional execution optimizations.
  
       This switch is mainly for debugging the compiler and will likely be
       removed in a future version.
  
! â€˜-moptimize-membarâ€™
  
!      This switch removes redundant â€˜membarâ€™ instructions from the
       compiler-generated code.  It is enabled by default.
  
! â€˜-mno-optimize-membarâ€™
  
!      This switch disables the automatic removal of redundant â€˜membarâ€™
       instructions from the generated code.
  
! â€˜-mtomcat-statsâ€™
  
       Cause gas to print out tomcat statistics.
  
! â€˜-mcpu=CPUâ€™
  
       Select the processor type for which to generate code.  Possible
!      values are â€˜frvâ€™, â€˜fr550â€™, â€˜tomcatâ€™, â€˜fr500â€™, â€˜fr450â€™, â€˜fr405â€™,
!      â€˜fr400â€™, â€˜fr300â€™ and â€˜simpleâ€™.
  
  
  File: gcc.info,  Node: GNU/Linux Options,  Next: H8/300 Options,  Prev: FRV Options,  Up: Submodel Options
*************** File: gcc.info,  Node: GNU/Linux Options
*** 25336,25376 ****
  3.20.18 GNU/Linux Options
  -------------------------
  
! These '-m' options are defined for GNU/Linux targets:
  
! '-mglibc'
       Use the GNU C library.  This is the default except on
!      '*-*-linux-*uclibc*', '*-*-linux-*musl*' and '*-*-linux-*android*'
       targets.
  
! '-muclibc'
!      Use uClibc C library.  This is the default on '*-*-linux-*uclibc*'
       targets.
  
! '-mmusl'
!      Use the musl C library.  This is the default on '*-*-linux-*musl*'
       targets.
  
! '-mbionic'
!      Use Bionic C library.  This is the default on '*-*-linux-*android*'
       targets.
  
! '-mandroid'
       Compile code compatible with Android platform.  This is the default
!      on '*-*-linux-*android*' targets.
  
!      When compiling, this option enables '-mbionic', '-fPIC',
!      '-fno-exceptions' and '-fno-rtti' by default.  When linking, this
       option makes the GCC driver pass Android-specific options to the
       linker.  Finally, this option causes the preprocessor macro
!      '__ANDROID__' to be defined.
  
! '-tno-android-cc'
!      Disable compilation effects of '-mandroid', i.e., do not enable
!      '-mbionic', '-fPIC', '-fno-exceptions' and '-fno-rtti' by default.
  
! '-tno-android-ld'
!      Disable linking effects of '-mandroid', i.e., pass standard Linux
       linking options to the linker.
  
  
--- 25344,25384 ----
  3.20.18 GNU/Linux Options
  -------------------------
  
! These â€˜-mâ€™ options are defined for GNU/Linux targets:
  
! â€˜-mglibcâ€™
       Use the GNU C library.  This is the default except on
!      â€˜*-*-linux-*uclibc*â€™, â€˜*-*-linux-*musl*â€™ and â€˜*-*-linux-*android*â€™
       targets.
  
! â€˜-muclibcâ€™
!      Use uClibc C library.  This is the default on â€˜*-*-linux-*uclibc*â€™
       targets.
  
! â€˜-mmuslâ€™
!      Use the musl C library.  This is the default on â€˜*-*-linux-*musl*â€™
       targets.
  
! â€˜-mbionicâ€™
!      Use Bionic C library.  This is the default on â€˜*-*-linux-*android*â€™
       targets.
  
! â€˜-mandroidâ€™
       Compile code compatible with Android platform.  This is the default
!      on â€˜*-*-linux-*android*â€™ targets.
  
!      When compiling, this option enables â€˜-mbionicâ€™, â€˜-fPICâ€™,
!      â€˜-fno-exceptionsâ€™ and â€˜-fno-rttiâ€™ by default.  When linking, this
       option makes the GCC driver pass Android-specific options to the
       linker.  Finally, this option causes the preprocessor macro
!      â€˜__ANDROID__â€™ to be defined.
  
! â€˜-tno-android-ccâ€™
!      Disable compilation effects of â€˜-mandroidâ€™, i.e., do not enable
!      â€˜-mbionicâ€™, â€˜-fPICâ€™, â€˜-fno-exceptionsâ€™ and â€˜-fno-rttiâ€™ by default.
  
! â€˜-tno-android-ldâ€™
!      Disable linking effects of â€˜-mandroidâ€™, i.e., pass standard Linux
       linking options to the linker.
  
  
*************** File: gcc.info,  Node: H8/300 Options,
*** 25379,25422 ****
  3.20.19 H8/300 Options
  ----------------------
  
! These '-m' options are defined for the H8/300 implementations:
  
! '-mrelax'
       Shorten some address references at link time, when possible; uses
!      the linker option '-relax'.  *Note 'ld' and the H8/300: (ld)H8/300,
       for a fuller description.
  
! '-mh'
       Generate code for the H8/300H.
  
! '-ms'
       Generate code for the H8S.
  
! '-mn'
       Generate code for the H8S and H8/300H in the normal mode.  This
!      switch must be used either with '-mh' or '-ms'.
  
! '-ms2600'
       Generate code for the H8S/2600.  This switch must be used with
!      '-ms'.
  
! '-mexr'
       Extended registers are stored on stack before execution of function
!      with monitor attribute.  Default option is '-mexr'.  This option is
       valid only for H8S targets.
  
! '-mno-exr'
       Extended registers are not stored on stack before execution of
!      function with monitor attribute.  Default option is '-mno-exr'.
       This option is valid only for H8S targets.
  
! '-mint32'
!      Make 'int' data 32 bits by default.
  
! '-malign-300'
       On the H8/300H and H8S, use the same alignment rules as for the
       H8/300.  The default for the H8/300H and H8S is to align longs and
!      floats on 4-byte boundaries.  '-malign-300' causes them to be
       aligned on 2-byte boundaries.  This option has no effect on the
       H8/300.
  
--- 25387,25430 ----
  3.20.19 H8/300 Options
  ----------------------
  
! These â€˜-mâ€™ options are defined for the H8/300 implementations:
  
! â€˜-mrelaxâ€™
       Shorten some address references at link time, when possible; uses
!      the linker option â€˜-relaxâ€™.  *Note â€˜ldâ€™ and the H8/300: (ld)H8/300,
       for a fuller description.
  
! â€˜-mhâ€™
       Generate code for the H8/300H.
  
! â€˜-msâ€™
       Generate code for the H8S.
  
! â€˜-mnâ€™
       Generate code for the H8S and H8/300H in the normal mode.  This
!      switch must be used either with â€˜-mhâ€™ or â€˜-msâ€™.
  
! â€˜-ms2600â€™
       Generate code for the H8S/2600.  This switch must be used with
!      â€˜-msâ€™.
  
! â€˜-mexrâ€™
       Extended registers are stored on stack before execution of function
!      with monitor attribute.  Default option is â€˜-mexrâ€™.  This option is
       valid only for H8S targets.
  
! â€˜-mno-exrâ€™
       Extended registers are not stored on stack before execution of
!      function with monitor attribute.  Default option is â€˜-mno-exrâ€™.
       This option is valid only for H8S targets.
  
! â€˜-mint32â€™
!      Make â€˜intâ€™ data 32 bits by default.
  
! â€˜-malign-300â€™
       On the H8/300H and H8S, use the same alignment rules as for the
       H8/300.  The default for the H8/300H and H8S is to align longs and
!      floats on 4-byte boundaries.  â€˜-malign-300â€™ causes them to be
       aligned on 2-byte boundaries.  This option has no effect on the
       H8/300.
  
*************** File: gcc.info,  Node: HPPA Options,  Ne
*** 25426,25536 ****
  3.20.20 HPPA Options
  --------------------
  
! These '-m' options are defined for the HPPA family of computers:
  
! '-march=ARCHITECTURE-TYPE'
       Generate code for the specified architecture.  The choices for
!      ARCHITECTURE-TYPE are '1.0' for PA 1.0, '1.1' for PA 1.1, and '2.0'
!      for PA 2.0 processors.  Refer to '/usr/lib/sched.models' on an
       HP-UX system to determine the proper architecture option for your
       machine.  Code compiled for lower numbered architectures runs on
       higher numbered architectures, but not the other way around.
  
! '-mpa-risc-1-0'
! '-mpa-risc-1-1'
! '-mpa-risc-2-0'
!      Synonyms for '-march=1.0', '-march=1.1', and '-march=2.0'
       respectively.
  
! '-matomic-libcalls'
       Generate libcalls for atomic loads and stores when sync libcalls
       are disabled.  This option is enabled by default.  It only affects
       the generation of atomic libcalls by the HPPA backend.
  
!      Both the sync and 'libatomic' libcall implementations use locking.
       As a result, processor stores are not atomic with respect to other
       atomic operations.  Processor loads up to DImode are atomic with
       respect to other atomic operations provided they are implemented as
       a single access.
  
       The PA-RISC architecture does not support any atomic operations in
!      hardware except for the 'ldcw' instruction.  Thus, all atomic
       support is implemented using sync and atomic libcalls.  Sync
!      libcall support is in 'libgcc.a'.  Atomic libcall support is in
!      'libatomic'.
  
!      This option generates '__atomic_exchange' calls for atomic stores.
       It also provides special handling for atomic DImode accesses on
       32-bit targets.
  
! '-mbig-switch'
       Does nothing.  Preserved for backward compatibility.
  
! '-mcaller-copies'
       The caller copies function arguments passed by hidden reference.
       This option should be used with care as it is not compatible with
       the default 32-bit runtime.  However, only aggregates larger than
       eight bytes are passed by hidden reference and the option provides
       better compatibility with OpenMP.
  
! '-mcoherent-ldcw'
       Use ldcw/ldcd coherent cache-control hint.
  
! '-mdisable-fpregs'
!      Disable floating-point registers.  Equivalent to '-msoft-float'.
  
! '-mdisable-indexing'
       Prevent the compiler from using indexing address modes.  This
       avoids some rather obscure problems when compiling MIG generated
       code under MACH.
  
! '-mfast-indirect-calls'
       Generate code that assumes calls never cross space boundaries.
       This allows GCC to emit code that performs faster indirect calls.
  
       This option does not work in the presence of shared libraries or
       nested functions.
  
! '-mfixed-range=REGISTER-RANGE'
       Generate code treating the given register range as fixed registers.
       A fixed register is one that the register allocator cannot use.
       This is useful when compiling kernel code.  A register range is
       specified as two registers separated by a dash.  Multiple register
       ranges can be specified separated by a comma.
  
! '-mgas'
       Enable the use of assembler directives only GAS understands.
  
! '-mgnu-ld'
!      Use options specific to GNU 'ld'.  This passes '-shared' to 'ld'
       when building a shared library.  It is the default when GCC is
       configured, explicitly or implicitly, with the GNU linker.  This
!      option does not affect which 'ld' is called; it only changes what
!      parameters are passed to that 'ld'.  The 'ld' that is called is
!      determined by the '--with-ld' configure option, GCC's program
!      search path, and finally by the user's 'PATH'.  The linker used by
!      GCC can be printed using 'which `gcc -print-prog-name=ld`'.  This
       option is only available on the 64-bit HP-UX GCC, i.e. configured
!      with 'hppa*64*-*-hpux*'.
  
! '-mhp-ld'
!      Use options specific to HP 'ld'.  This passes '-b' to 'ld' when
!      building a shared library and passes '+Accept TypeMismatch' to 'ld'
       on all links.  It is the default when GCC is configured, explicitly
       or implicitly, with the HP linker.  This option does not affect
!      which 'ld' is called; it only changes what parameters are passed to
!      that 'ld'.  The 'ld' that is called is determined by the
!      '--with-ld' configure option, GCC's program search path, and
!      finally by the user's 'PATH'.  The linker used by GCC can be
!      printed using 'which `gcc -print-prog-name=ld`'.  This option is
       only available on the 64-bit HP-UX GCC, i.e. configured with
!      'hppa*64*-*-hpux*'.
  
! '-mlinker-opt'
       Enable the optimization pass in the HP-UX linker.  Note this makes
       symbolic debugging impossible.
  
! '-mlong-calls'
       Generate code that uses long call sequences.  This ensures that a
       call is always able to reach linker generated stubs.  The default
       is to generate long calls only when the distance from the call site
--- 25434,25544 ----
  3.20.20 HPPA Options
  --------------------
  
! These â€˜-mâ€™ options are defined for the HPPA family of computers:
  
! â€˜-march=ARCHITECTURE-TYPEâ€™
       Generate code for the specified architecture.  The choices for
!      ARCHITECTURE-TYPE are â€˜1.0â€™ for PA 1.0, â€˜1.1â€™ for PA 1.1, and â€˜2.0â€™
!      for PA 2.0 processors.  Refer to â€˜/usr/lib/sched.modelsâ€™ on an
       HP-UX system to determine the proper architecture option for your
       machine.  Code compiled for lower numbered architectures runs on
       higher numbered architectures, but not the other way around.
  
! â€˜-mpa-risc-1-0â€™
! â€˜-mpa-risc-1-1â€™
! â€˜-mpa-risc-2-0â€™
!      Synonyms for â€˜-march=1.0â€™, â€˜-march=1.1â€™, and â€˜-march=2.0â€™
       respectively.
  
! â€˜-matomic-libcallsâ€™
       Generate libcalls for atomic loads and stores when sync libcalls
       are disabled.  This option is enabled by default.  It only affects
       the generation of atomic libcalls by the HPPA backend.
  
!      Both the sync and â€˜libatomicâ€™ libcall implementations use locking.
       As a result, processor stores are not atomic with respect to other
       atomic operations.  Processor loads up to DImode are atomic with
       respect to other atomic operations provided they are implemented as
       a single access.
  
       The PA-RISC architecture does not support any atomic operations in
!      hardware except for the â€˜ldcwâ€™ instruction.  Thus, all atomic
       support is implemented using sync and atomic libcalls.  Sync
!      libcall support is in â€˜libgcc.aâ€™.  Atomic libcall support is in
!      â€˜libatomicâ€™.
  
!      This option generates â€˜__atomic_exchangeâ€™ calls for atomic stores.
       It also provides special handling for atomic DImode accesses on
       32-bit targets.
  
! â€˜-mbig-switchâ€™
       Does nothing.  Preserved for backward compatibility.
  
! â€˜-mcaller-copiesâ€™
       The caller copies function arguments passed by hidden reference.
       This option should be used with care as it is not compatible with
       the default 32-bit runtime.  However, only aggregates larger than
       eight bytes are passed by hidden reference and the option provides
       better compatibility with OpenMP.
  
! â€˜-mcoherent-ldcwâ€™
       Use ldcw/ldcd coherent cache-control hint.
  
! â€˜-mdisable-fpregsâ€™
!      Disable floating-point registers.  Equivalent to â€˜-msoft-floatâ€™.
  
! â€˜-mdisable-indexingâ€™
       Prevent the compiler from using indexing address modes.  This
       avoids some rather obscure problems when compiling MIG generated
       code under MACH.
  
! â€˜-mfast-indirect-callsâ€™
       Generate code that assumes calls never cross space boundaries.
       This allows GCC to emit code that performs faster indirect calls.
  
       This option does not work in the presence of shared libraries or
       nested functions.
  
! â€˜-mfixed-range=REGISTER-RANGEâ€™
       Generate code treating the given register range as fixed registers.
       A fixed register is one that the register allocator cannot use.
       This is useful when compiling kernel code.  A register range is
       specified as two registers separated by a dash.  Multiple register
       ranges can be specified separated by a comma.
  
! â€˜-mgasâ€™
       Enable the use of assembler directives only GAS understands.
  
! â€˜-mgnu-ldâ€™
!      Use options specific to GNU â€˜ldâ€™.  This passes â€˜-sharedâ€™ to â€˜ldâ€™
       when building a shared library.  It is the default when GCC is
       configured, explicitly or implicitly, with the GNU linker.  This
!      option does not affect which â€˜ldâ€™ is called; it only changes what
!      parameters are passed to that â€˜ldâ€™.  The â€˜ldâ€™ that is called is
!      determined by the â€˜--with-ldâ€™ configure option, GCC's program
!      search path, and finally by the user's â€˜PATHâ€™.  The linker used by
!      GCC can be printed using â€˜which `gcc -print-prog-name=ld`â€™.  This
       option is only available on the 64-bit HP-UX GCC, i.e. configured
!      with â€˜hppa*64*-*-hpux*â€™.
  
! â€˜-mhp-ldâ€™
!      Use options specific to HP â€˜ldâ€™.  This passes â€˜-bâ€™ to â€˜ldâ€™ when
!      building a shared library and passes â€˜+Accept TypeMismatchâ€™ to â€˜ldâ€™
       on all links.  It is the default when GCC is configured, explicitly
       or implicitly, with the HP linker.  This option does not affect
!      which â€˜ldâ€™ is called; it only changes what parameters are passed to
!      that â€˜ldâ€™.  The â€˜ldâ€™ that is called is determined by the
!      â€˜--with-ldâ€™ configure option, GCC's program search path, and
!      finally by the user's â€˜PATHâ€™.  The linker used by GCC can be
!      printed using â€˜which `gcc -print-prog-name=ld`â€™.  This option is
       only available on the 64-bit HP-UX GCC, i.e. configured with
!      â€˜hppa*64*-*-hpux*â€™.
  
! â€˜-mlinker-optâ€™
       Enable the optimization pass in the HP-UX linker.  Note this makes
       symbolic debugging impossible.
  
! â€˜-mlong-callsâ€™
       Generate code that uses long call sequences.  This ensures that a
       call is always able to reach linker generated stubs.  The default
       is to generate long calls only when the distance from the call site
*************** These '-m' options are defined for the H
*** 25541,25548 ****
       always limited at 240,000 bytes.
  
       Distances are measured from the beginning of functions when using
!      the '-ffunction-sections' option, or when using the '-mgas' and
!      '-mno-portable-runtime' options together under HP-UX with the SOM
       linker.
  
       It is normally not desirable to use this option as it degrades
--- 25549,25556 ----
       always limited at 240,000 bytes.
  
       Distances are measured from the beginning of functions when using
!      the â€˜-ffunction-sectionsâ€™ option, or when using the â€˜-mgasâ€™ and
!      â€˜-mno-portable-runtimeâ€™ options together under HP-UX with the SOM
       linker.
  
       It is normally not desirable to use this option as it degrades
*************** These '-m' options are defined for the H
*** 25556,25598 ****
       However, an indirect call is used on 32-bit ELF systems in pic code
       and it is quite long.
  
! '-mlong-load-store'
       Generate 3-instruction load and store sequences as sometimes
!      required by the HP-UX 10 linker.  This is equivalent to the '+k'
       option to the HP compilers.
  
! '-mjump-in-delay'
       This option is ignored and provided for compatibility purposes
       only.
  
! '-mno-space-regs'
       Generate code that assumes the target has no space registers.  This
       allows GCC to generate faster indirect calls and use unscaled index
       address modes.
  
       Such code is suitable for level 0 PA systems and kernels.
  
! '-mordered'
       Assume memory references are ordered and barriers are not needed.
  
! '-mportable-runtime'
       Use the portable calling conventions proposed by HP for ELF
       systems.
  
! '-mschedule=CPU-TYPE'
       Schedule code according to the constraints for the machine type
!      CPU-TYPE.  The choices for CPU-TYPE are '700' '7100', '7100LC',
!      '7200', '7300' and '8000'.  Refer to '/usr/lib/sched.models' on an
       HP-UX system to determine the proper scheduling option for your
!      machine.  The default scheduling is '8000'.
  
! '-msio'
!      Generate the predefine, '_SIO', for server IO.  The default is
!      '-mwsio'.  This generates the predefines, '__hp9000s700',
!      '__hp9000s700__' and '_WSIO', for workstation IO.  These options
       are available under HP-UX and HI-UX.
  
! '-msoft-float'
       Generate output containing library calls for floating point.
       *Warning:* the requisite libraries are not available for all HPPA
       targets.  Normally the facilities of the machine's usual C compiler
--- 25564,25606 ----
       However, an indirect call is used on 32-bit ELF systems in pic code
       and it is quite long.
  
! â€˜-mlong-load-storeâ€™
       Generate 3-instruction load and store sequences as sometimes
!      required by the HP-UX 10 linker.  This is equivalent to the â€˜+kâ€™
       option to the HP compilers.
  
! â€˜-mjump-in-delayâ€™
       This option is ignored and provided for compatibility purposes
       only.
  
! â€˜-mno-space-regsâ€™
       Generate code that assumes the target has no space registers.  This
       allows GCC to generate faster indirect calls and use unscaled index
       address modes.
  
       Such code is suitable for level 0 PA systems and kernels.
  
! â€˜-morderedâ€™
       Assume memory references are ordered and barriers are not needed.
  
! â€˜-mportable-runtimeâ€™
       Use the portable calling conventions proposed by HP for ELF
       systems.
  
! â€˜-mschedule=CPU-TYPEâ€™
       Schedule code according to the constraints for the machine type
!      CPU-TYPE.  The choices for CPU-TYPE are â€˜700â€™ â€˜7100â€™, â€˜7100LCâ€™,
!      â€˜7200â€™, â€˜7300â€™ and â€˜8000â€™.  Refer to â€˜/usr/lib/sched.modelsâ€™ on an
       HP-UX system to determine the proper scheduling option for your
!      machine.  The default scheduling is â€˜8000â€™.
  
! â€˜-msioâ€™
!      Generate the predefine, â€˜_SIOâ€™, for server IO.  The default is
!      â€˜-mwsioâ€™.  This generates the predefines, â€˜__hp9000s700â€™,
!      â€˜__hp9000s700__â€™ and â€˜_WSIOâ€™, for workstation IO.  These options
       are available under HP-UX and HI-UX.
  
! â€˜-msoft-floatâ€™
       Generate output containing library calls for floating point.
       *Warning:* the requisite libraries are not available for all HPPA
       targets.  Normally the facilities of the machine's usual C compiler
*************** These '-m' options are defined for the H
*** 25600,25631 ****
       You must make your own arrangements to provide suitable library
       functions for cross-compilation.
  
!      '-msoft-float' changes the calling convention in the output file;
       therefore, it is only useful if you compile _all_ of a program with
!      this option.  In particular, you need to compile 'libgcc.a', the
!      library that comes with GCC, with '-msoft-float' in order for this
       to work.
  
! '-msoft-mult'
       Use software integer multiplication.
  
!      This disables the use of the 'xmpyu' instruction.
  
! '-munix=UNIX-STD'
       Generate compiler predefines and select a startfile for the
!      specified UNIX standard.  The choices for UNIX-STD are '93', '95'
!      and '98'.  '93' is supported on all HP-UX versions.  '95' is
!      available on HP-UX 10.10 and later.  '98' is available on HP-UX
!      11.11 and later.  The default values are '93' for HP-UX 10.00, '95'
!      for HP-UX 10.10 though to 11.00, and '98' for HP-UX 11.11 and
       later.
  
!      '-munix=93' provides the same predefines as GCC 3.3 and 3.4.
!      '-munix=95' provides additional predefines for 'XOPEN_UNIX' and
!      '_XOPEN_SOURCE_EXTENDED', and the startfile 'unix95.o'.
!      '-munix=98' provides additional predefines for '_XOPEN_UNIX',
!      '_XOPEN_SOURCE_EXTENDED', '_INCLUDE__STDC_A1_SOURCE' and
!      '_INCLUDE_XOPEN_SOURCE_500', and the startfile 'unix98.o'.
  
       It is _important_ to note that this option changes the interfaces
       for various library routines.  It also affects the operational
--- 25608,25639 ----
       You must make your own arrangements to provide suitable library
       functions for cross-compilation.
  
!      â€˜-msoft-floatâ€™ changes the calling convention in the output file;
       therefore, it is only useful if you compile _all_ of a program with
!      this option.  In particular, you need to compile â€˜libgcc.aâ€™, the
!      library that comes with GCC, with â€˜-msoft-floatâ€™ in order for this
       to work.
  
! â€˜-msoft-multâ€™
       Use software integer multiplication.
  
!      This disables the use of the â€˜xmpyuâ€™ instruction.
  
! â€˜-munix=UNIX-STDâ€™
       Generate compiler predefines and select a startfile for the
!      specified UNIX standard.  The choices for UNIX-STD are â€˜93â€™, â€˜95â€™
!      and â€˜98â€™.  â€˜93â€™ is supported on all HP-UX versions.  â€˜95â€™ is
!      available on HP-UX 10.10 and later.  â€˜98â€™ is available on HP-UX
!      11.11 and later.  The default values are â€˜93â€™ for HP-UX 10.00, â€˜95â€™
!      for HP-UX 10.10 though to 11.00, and â€˜98â€™ for HP-UX 11.11 and
       later.
  
!      â€˜-munix=93â€™ provides the same predefines as GCC 3.3 and 3.4.
!      â€˜-munix=95â€™ provides additional predefines for â€˜XOPEN_UNIXâ€™ and
!      â€˜_XOPEN_SOURCE_EXTENDEDâ€™, and the startfile â€˜unix95.oâ€™.
!      â€˜-munix=98â€™ provides additional predefines for â€˜_XOPEN_UNIXâ€™,
!      â€˜_XOPEN_SOURCE_EXTENDEDâ€™, â€˜_INCLUDE__STDC_A1_SOURCEâ€™ and
!      â€˜_INCLUDE_XOPEN_SOURCE_500â€™, and the startfile â€˜unix98.oâ€™.
  
       It is _important_ to note that this option changes the interfaces
       for various library routines.  It also affects the operational
*************** These '-m' options are defined for the H
*** 25634,25661 ****
  
       Library code that is intended to operate with more than one UNIX
       standard must test, set and restore the variable
!      '__xpg4_extended_mask' as appropriate.  Most GNU software doesn't
       provide this capability.
  
! '-nolibdld'
       Suppress the generation of link options to search libdld.sl when
!      the '-static' option is specified on HP-UX 10 and later.
  
! '-static'
       The HP-UX implementation of setlocale in libc has a dependency on
       libdld.sl.  There isn't an archive version of libdld.sl.  Thus,
!      when the '-static' option is specified, special link options are
       needed to resolve this dependency.
  
       On HP-UX 10 and later, the GCC driver adds the necessary options to
!      link with libdld.sl when the '-static' option is specified.  This
       causes the resulting binary to be dynamic.  On the 64-bit port, the
       linkers generate dynamic binaries by default in any case.  The
!      '-nolibdld' option can be used to prevent the GCC driver from
       adding these link options.
  
! '-threads'
!      Add support for multithreading with the "dce thread" library under
       HP-UX.  This option sets flags for both the preprocessor and
       linker.
  
--- 25642,25669 ----
  
       Library code that is intended to operate with more than one UNIX
       standard must test, set and restore the variable
!      â€˜__xpg4_extended_maskâ€™ as appropriate.  Most GNU software doesn't
       provide this capability.
  
! â€˜-nolibdldâ€™
       Suppress the generation of link options to search libdld.sl when
!      the â€˜-staticâ€™ option is specified on HP-UX 10 and later.
  
! â€˜-staticâ€™
       The HP-UX implementation of setlocale in libc has a dependency on
       libdld.sl.  There isn't an archive version of libdld.sl.  Thus,
!      when the â€˜-staticâ€™ option is specified, special link options are
       needed to resolve this dependency.
  
       On HP-UX 10 and later, the GCC driver adds the necessary options to
!      link with libdld.sl when the â€˜-staticâ€™ option is specified.  This
       causes the resulting binary to be dynamic.  On the 64-bit port, the
       linkers generate dynamic binaries by default in any case.  The
!      â€˜-nolibdldâ€™ option can be used to prevent the GCC driver from
       adding these link options.
  
! â€˜-threadsâ€™
!      Add support for multithreading with the â€œdce threadâ€� library under
       HP-UX.  This option sets flags for both the preprocessor and
       linker.
  
*************** File: gcc.info,  Node: IA-64 Options,  N
*** 25665,25882 ****
  3.20.21 IA-64 Options
  ---------------------
  
! These are the '-m' options defined for the Intel IA-64 architecture.
  
! '-mbig-endian'
       Generate code for a big-endian target.  This is the default for
       HP-UX.
  
! '-mlittle-endian'
       Generate code for a little-endian target.  This is the default for
       AIX5 and GNU/Linux.
  
! '-mgnu-as'
! '-mno-gnu-as'
       Generate (or don't) code for the GNU assembler.  This is the
       default.
  
! '-mgnu-ld'
! '-mno-gnu-ld'
       Generate (or don't) code for the GNU linker.  This is the default.
  
! '-mno-pic'
       Generate code that does not use a global pointer register.  The
       result is not position independent code, and violates the IA-64
       ABI.
  
! '-mvolatile-asm-stop'
! '-mno-volatile-asm-stop'
       Generate (or don't) a stop bit immediately before and after
       volatile asm statements.
  
! '-mregister-names'
! '-mno-register-names'
!      Generate (or don't) 'in', 'loc', and 'out' register names for the
       stacked registers.  This may make assembler output more readable.
  
! '-mno-sdata'
! '-msdata'
       Disable (or enable) optimizations that use the small data section.
       This may be useful for working around optimizer bugs.
  
! '-mconstant-gp'
       Generate code that uses a single constant global pointer value.
       This is useful when compiling kernel code.
  
! '-mauto-pic'
       Generate code that is self-relocatable.  This implies
!      '-mconstant-gp'.  This is useful when compiling firmware code.
  
! '-minline-float-divide-min-latency'
       Generate code for inline divides of floating-point values using the
       minimum latency algorithm.
  
! '-minline-float-divide-max-throughput'
       Generate code for inline divides of floating-point values using the
       maximum throughput algorithm.
  
! '-mno-inline-float-divide'
       Do not generate inline code for divides of floating-point values.
  
! '-minline-int-divide-min-latency'
       Generate code for inline divides of integer values using the
       minimum latency algorithm.
  
! '-minline-int-divide-max-throughput'
       Generate code for inline divides of integer values using the
       maximum throughput algorithm.
  
! '-mno-inline-int-divide'
       Do not generate inline code for divides of integer values.
  
! '-minline-sqrt-min-latency'
       Generate code for inline square roots using the minimum latency
       algorithm.
  
! '-minline-sqrt-max-throughput'
       Generate code for inline square roots using the maximum throughput
       algorithm.
  
! '-mno-inline-sqrt'
!      Do not generate inline code for 'sqrt'.
  
! '-mfused-madd'
! '-mno-fused-madd'
       Do (don't) generate code that uses the fused multiply/add or
       multiply/subtract instructions.  The default is to use these
       instructions.
  
! '-mno-dwarf2-asm'
! '-mdwarf2-asm'
       Don't (or do) generate assembler code for the DWARF line number
       debugging info.  This may be useful when not using the GNU
       assembler.
  
! '-mearly-stop-bits'
! '-mno-early-stop-bits'
       Allow stop bits to be placed earlier than immediately preceding the
       instruction that triggered the stop bit.  This can improve
       instruction scheduling, but does not always do so.
  
! '-mfixed-range=REGISTER-RANGE'
       Generate code treating the given register range as fixed registers.
       A fixed register is one that the register allocator cannot use.
       This is useful when compiling kernel code.  A register range is
       specified as two registers separated by a dash.  Multiple register
       ranges can be specified separated by a comma.
  
! '-mtls-size=TLS-SIZE'
       Specify bit size of immediate TLS offsets.  Valid values are 14,
       22, and 64.
  
! '-mtune=CPU-TYPE'
       Tune the instruction scheduling for a particular CPU, Valid values
!      are 'itanium', 'itanium1', 'merced', 'itanium2', and 'mckinley'.
  
! '-milp32'
! '-mlp64'
       Generate code for a 32-bit or 64-bit environment.  The 32-bit
       environment sets int, long and pointer to 32 bits.  The 64-bit
       environment sets int to 32 bits and long and pointer to 64 bits.
       These are HP-UX specific flags.
  
! '-mno-sched-br-data-spec'
! '-msched-br-data-spec'
       (Dis/En)able data speculative scheduling before reload.  This
!      results in generation of 'ld.a' instructions and the corresponding
!      check instructions ('ld.c' / 'chk.a').  The default setting is
       disabled.
  
! '-msched-ar-data-spec'
! '-mno-sched-ar-data-spec'
       (En/Dis)able data speculative scheduling after reload.  This
!      results in generation of 'ld.a' instructions and the corresponding
!      check instructions ('ld.c' / 'chk.a').  The default setting is
       enabled.
  
! '-mno-sched-control-spec'
! '-msched-control-spec'
       (Dis/En)able control speculative scheduling.  This feature is
       available only during region scheduling (i.e. before reload).  This
!      results in generation of the 'ld.s' instructions and the
!      corresponding check instructions 'chk.s'.  The default setting is
       disabled.
  
! '-msched-br-in-data-spec'
! '-mno-sched-br-in-data-spec'
       (En/Dis)able speculative scheduling of the instructions that are
       dependent on the data speculative loads before reload.  This is
!      effective only with '-msched-br-data-spec' enabled.  The default
       setting is enabled.
  
! '-msched-ar-in-data-spec'
! '-mno-sched-ar-in-data-spec'
       (En/Dis)able speculative scheduling of the instructions that are
       dependent on the data speculative loads after reload.  This is
!      effective only with '-msched-ar-data-spec' enabled.  The default
       setting is enabled.
  
! '-msched-in-control-spec'
! '-mno-sched-in-control-spec'
       (En/Dis)able speculative scheduling of the instructions that are
       dependent on the control speculative loads.  This is effective only
!      with '-msched-control-spec' enabled.  The default setting is
       enabled.
  
! '-mno-sched-prefer-non-data-spec-insns'
! '-msched-prefer-non-data-spec-insns'
       If enabled, data-speculative instructions are chosen for schedule
       only if there are no other choices at the moment.  This makes the
       use of the data speculation much more conservative.  The default
       setting is disabled.
  
! '-mno-sched-prefer-non-control-spec-insns'
! '-msched-prefer-non-control-spec-insns'
       If enabled, control-speculative instructions are chosen for
       schedule only if there are no other choices at the moment.  This
       makes the use of the control speculation much more conservative.
       The default setting is disabled.
  
! '-mno-sched-count-spec-in-critical-path'
! '-msched-count-spec-in-critical-path'
       If enabled, speculative dependencies are considered during
       computation of the instructions priorities.  This makes the use of
       the speculation a bit more conservative.  The default setting is
       disabled.
  
! '-msched-spec-ldc'
       Use a simple data speculation check.  This option is on by default.
  
! '-msched-control-spec-ldc'
       Use a simple check for control speculation.  This option is on by
       default.
  
! '-msched-stop-bits-after-every-cycle'
       Place a stop bit after every cycle when scheduling.  This option is
       on by default.
  
! '-msched-fp-mem-deps-zero-cost'
       Assume that floating-point stores and loads are not likely to cause
       a conflict when placed into the same instruction group.  This
       option is disabled by default.
  
! '-msel-sched-dont-check-control-spec'
       Generate checks for control speculation in selective scheduling.
       This flag is disabled by default.
  
! '-msched-max-memory-insns=MAX-INSNS'
       Limit on the number of memory insns per instruction group, giving
       lower priority to subsequent memory insns attempting to schedule in
       the same instruction group.  Frequently useful to prevent cache
       bank conflicts.  The default value is 1.
  
! '-msched-max-memory-insns-hard-limit'
!      Makes the limit specified by 'msched-max-memory-insns' a hard
       limit, disallowing more than that number in an instruction group.
       Otherwise, the limit is "soft", meaning that non-memory operations
       are preferred when the limit is reached, but memory operations may
--- 25673,25890 ----
  3.20.21 IA-64 Options
  ---------------------
  
! These are the â€˜-mâ€™ options defined for the Intel IA-64 architecture.
  
! â€˜-mbig-endianâ€™
       Generate code for a big-endian target.  This is the default for
       HP-UX.
  
! â€˜-mlittle-endianâ€™
       Generate code for a little-endian target.  This is the default for
       AIX5 and GNU/Linux.
  
! â€˜-mgnu-asâ€™
! â€˜-mno-gnu-asâ€™
       Generate (or don't) code for the GNU assembler.  This is the
       default.
  
! â€˜-mgnu-ldâ€™
! â€˜-mno-gnu-ldâ€™
       Generate (or don't) code for the GNU linker.  This is the default.
  
! â€˜-mno-picâ€™
       Generate code that does not use a global pointer register.  The
       result is not position independent code, and violates the IA-64
       ABI.
  
! â€˜-mvolatile-asm-stopâ€™
! â€˜-mno-volatile-asm-stopâ€™
       Generate (or don't) a stop bit immediately before and after
       volatile asm statements.
  
! â€˜-mregister-namesâ€™
! â€˜-mno-register-namesâ€™
!      Generate (or don't) â€˜inâ€™, â€˜locâ€™, and â€˜outâ€™ register names for the
       stacked registers.  This may make assembler output more readable.
  
! â€˜-mno-sdataâ€™
! â€˜-msdataâ€™
       Disable (or enable) optimizations that use the small data section.
       This may be useful for working around optimizer bugs.
  
! â€˜-mconstant-gpâ€™
       Generate code that uses a single constant global pointer value.
       This is useful when compiling kernel code.
  
! â€˜-mauto-picâ€™
       Generate code that is self-relocatable.  This implies
!      â€˜-mconstant-gpâ€™.  This is useful when compiling firmware code.
  
! â€˜-minline-float-divide-min-latencyâ€™
       Generate code for inline divides of floating-point values using the
       minimum latency algorithm.
  
! â€˜-minline-float-divide-max-throughputâ€™
       Generate code for inline divides of floating-point values using the
       maximum throughput algorithm.
  
! â€˜-mno-inline-float-divideâ€™
       Do not generate inline code for divides of floating-point values.
  
! â€˜-minline-int-divide-min-latencyâ€™
       Generate code for inline divides of integer values using the
       minimum latency algorithm.
  
! â€˜-minline-int-divide-max-throughputâ€™
       Generate code for inline divides of integer values using the
       maximum throughput algorithm.
  
! â€˜-mno-inline-int-divideâ€™
       Do not generate inline code for divides of integer values.
  
! â€˜-minline-sqrt-min-latencyâ€™
       Generate code for inline square roots using the minimum latency
       algorithm.
  
! â€˜-minline-sqrt-max-throughputâ€™
       Generate code for inline square roots using the maximum throughput
       algorithm.
  
! â€˜-mno-inline-sqrtâ€™
!      Do not generate inline code for â€˜sqrtâ€™.
  
! â€˜-mfused-maddâ€™
! â€˜-mno-fused-maddâ€™
       Do (don't) generate code that uses the fused multiply/add or
       multiply/subtract instructions.  The default is to use these
       instructions.
  
! â€˜-mno-dwarf2-asmâ€™
! â€˜-mdwarf2-asmâ€™
       Don't (or do) generate assembler code for the DWARF line number
       debugging info.  This may be useful when not using the GNU
       assembler.
  
! â€˜-mearly-stop-bitsâ€™
! â€˜-mno-early-stop-bitsâ€™
       Allow stop bits to be placed earlier than immediately preceding the
       instruction that triggered the stop bit.  This can improve
       instruction scheduling, but does not always do so.
  
! â€˜-mfixed-range=REGISTER-RANGEâ€™
       Generate code treating the given register range as fixed registers.
       A fixed register is one that the register allocator cannot use.
       This is useful when compiling kernel code.  A register range is
       specified as two registers separated by a dash.  Multiple register
       ranges can be specified separated by a comma.
  
! â€˜-mtls-size=TLS-SIZEâ€™
       Specify bit size of immediate TLS offsets.  Valid values are 14,
       22, and 64.
  
! â€˜-mtune=CPU-TYPEâ€™
       Tune the instruction scheduling for a particular CPU, Valid values
!      are â€˜itaniumâ€™, â€˜itanium1â€™, â€˜mercedâ€™, â€˜itanium2â€™, and â€˜mckinleyâ€™.
  
! â€˜-milp32â€™
! â€˜-mlp64â€™
       Generate code for a 32-bit or 64-bit environment.  The 32-bit
       environment sets int, long and pointer to 32 bits.  The 64-bit
       environment sets int to 32 bits and long and pointer to 64 bits.
       These are HP-UX specific flags.
  
! â€˜-mno-sched-br-data-specâ€™
! â€˜-msched-br-data-specâ€™
       (Dis/En)able data speculative scheduling before reload.  This
!      results in generation of â€˜ld.aâ€™ instructions and the corresponding
!      check instructions (â€˜ld.câ€™ / â€˜chk.aâ€™).  The default setting is
       disabled.
  
! â€˜-msched-ar-data-specâ€™
! â€˜-mno-sched-ar-data-specâ€™
       (En/Dis)able data speculative scheduling after reload.  This
!      results in generation of â€˜ld.aâ€™ instructions and the corresponding
!      check instructions (â€˜ld.câ€™ / â€˜chk.aâ€™).  The default setting is
       enabled.
  
! â€˜-mno-sched-control-specâ€™
! â€˜-msched-control-specâ€™
       (Dis/En)able control speculative scheduling.  This feature is
       available only during region scheduling (i.e. before reload).  This
!      results in generation of the â€˜ld.sâ€™ instructions and the
!      corresponding check instructions â€˜chk.sâ€™.  The default setting is
       disabled.
  
! â€˜-msched-br-in-data-specâ€™
! â€˜-mno-sched-br-in-data-specâ€™
       (En/Dis)able speculative scheduling of the instructions that are
       dependent on the data speculative loads before reload.  This is
!      effective only with â€˜-msched-br-data-specâ€™ enabled.  The default
       setting is enabled.
  
! â€˜-msched-ar-in-data-specâ€™
! â€˜-mno-sched-ar-in-data-specâ€™
       (En/Dis)able speculative scheduling of the instructions that are
       dependent on the data speculative loads after reload.  This is
!      effective only with â€˜-msched-ar-data-specâ€™ enabled.  The default
       setting is enabled.
  
! â€˜-msched-in-control-specâ€™
! â€˜-mno-sched-in-control-specâ€™
       (En/Dis)able speculative scheduling of the instructions that are
       dependent on the control speculative loads.  This is effective only
!      with â€˜-msched-control-specâ€™ enabled.  The default setting is
       enabled.
  
! â€˜-mno-sched-prefer-non-data-spec-insnsâ€™
! â€˜-msched-prefer-non-data-spec-insnsâ€™
       If enabled, data-speculative instructions are chosen for schedule
       only if there are no other choices at the moment.  This makes the
       use of the data speculation much more conservative.  The default
       setting is disabled.
  
! â€˜-mno-sched-prefer-non-control-spec-insnsâ€™
! â€˜-msched-prefer-non-control-spec-insnsâ€™
       If enabled, control-speculative instructions are chosen for
       schedule only if there are no other choices at the moment.  This
       makes the use of the control speculation much more conservative.
       The default setting is disabled.
  
! â€˜-mno-sched-count-spec-in-critical-pathâ€™
! â€˜-msched-count-spec-in-critical-pathâ€™
       If enabled, speculative dependencies are considered during
       computation of the instructions priorities.  This makes the use of
       the speculation a bit more conservative.  The default setting is
       disabled.
  
! â€˜-msched-spec-ldcâ€™
       Use a simple data speculation check.  This option is on by default.
  
! â€˜-msched-control-spec-ldcâ€™
       Use a simple check for control speculation.  This option is on by
       default.
  
! â€˜-msched-stop-bits-after-every-cycleâ€™
       Place a stop bit after every cycle when scheduling.  This option is
       on by default.
  
! â€˜-msched-fp-mem-deps-zero-costâ€™
       Assume that floating-point stores and loads are not likely to cause
       a conflict when placed into the same instruction group.  This
       option is disabled by default.
  
! â€˜-msel-sched-dont-check-control-specâ€™
       Generate checks for control speculation in selective scheduling.
       This flag is disabled by default.
  
! â€˜-msched-max-memory-insns=MAX-INSNSâ€™
       Limit on the number of memory insns per instruction group, giving
       lower priority to subsequent memory insns attempting to schedule in
       the same instruction group.  Frequently useful to prevent cache
       bank conflicts.  The default value is 1.
  
! â€˜-msched-max-memory-insns-hard-limitâ€™
!      Makes the limit specified by â€˜msched-max-memory-insnsâ€™ a hard
       limit, disallowing more than that number in an instruction group.
       Otherwise, the limit is "soft", meaning that non-memory operations
       are preferred when the limit is reached, but memory operations may
*************** File: gcc.info,  Node: LM32 Options,  Ne
*** 25888,25908 ****
  3.20.22 LM32 Options
  --------------------
  
! These '-m' options are defined for the LatticeMico32 architecture:
  
! '-mbarrel-shift-enabled'
       Enable barrel-shift instructions.
  
! '-mdivide-enabled'
       Enable divide and modulus instructions.
  
! '-mmultiply-enabled'
       Enable multiply instructions.
  
! '-msign-extend-enabled'
       Enable sign extend instructions.
  
! '-muser-enabled'
       Enable user-defined instructions.
  
  
--- 25896,25916 ----
  3.20.22 LM32 Options
  --------------------
  
! These â€˜-mâ€™ options are defined for the LatticeMico32 architecture:
  
! â€˜-mbarrel-shift-enabledâ€™
       Enable barrel-shift instructions.
  
! â€˜-mdivide-enabledâ€™
       Enable divide and modulus instructions.
  
! â€˜-mmultiply-enabledâ€™
       Enable multiply instructions.
  
! â€˜-msign-extend-enabledâ€™
       Enable sign extend instructions.
  
! â€˜-muser-enabledâ€™
       Enable user-defined instructions.
  
  
*************** File: gcc.info,  Node: LoongArch Options
*** 25913,26159 ****
  
  These command-line options are defined for LoongArch targets:
  
! '-march=ARCH-TYPE'
       Generate instructions for the machine type ARCH-TYPE.
!      '-march=ARCH-TYPE' allows GCC to generate code that may not run at
       all on processors other than the one indicated.
  
       The choices for ARCH-TYPE are:
  
!      'native'
            Local processor type detected by the native compiler.
!      'loongarch64'
            Generic LoongArch 64-bit processor.
!      'la464'
            LoongArch LA464-based processor with LSX, LASX.
!      'la664'
            LoongArch LA664-based processor with LSX, LASX and all
            LoongArch v1.1 instructions.
!      'la64v1.0'
            LoongArch64 ISA version 1.0.
!      'la64v1.1'
            LoongArch64 ISA version 1.1.
  
       More information about LoongArch ISA versions can be found at
       <https://github.com/loongson/la-toolchain-conventions>.
  
! '-mtune=TUNE-TYPE'
       Optimize the generated code for the given processor target.
  
       The choices for TUNE-TYPE are:
  
!      'native'
            Local processor type detected by the native compiler.
!      'generic'
            Generic LoongArch processor.
!      'loongarch64'
            Generic LoongArch 64-bit processor.
!      'la464'
            LoongArch LA464 core.
!      'la664'
            LoongArch LA664 core.
  
! '-mabi=BASE-ABI-TYPE'
       Generate code for the specified calling convention.  BASE-ABI-TYPE
       can be one of:
!      'lp64d'
            Uses 64-bit general purpose registers and 32/64-bit
            floating-point registers for parameter passing.  Data model is
!           LP64, where 'int' is 32 bits, while 'long int' and pointers
            are 64 bits.
!      'lp64f'
            Uses 64-bit general purpose registers and 32-bit
            floating-point registers for parameter passing.  Data model is
!           LP64, where 'int' is 32 bits, while 'long int' and pointers
            are 64 bits.
!      'lp64s'
            Uses 64-bit general purpose registers and no floating-point
            registers for parameter passing.  Data model is LP64, where
!           'int' is 32 bits, while 'long int' and pointers are 64 bits.
  
! '-mfpu=FPU-TYPE'
       Generate code for the specified FPU type, which can be one of:
!      '64'
            Allow the use of hardware floating-point instructions for
            32-bit and 64-bit operations.
!      '32'
            Allow the use of hardware floating-point instructions for
            32-bit operations.
!      'none'
!      '0'
            Prevent the use of hardware floating-point instructions.
  
! '-msimd=SIMD-TYPE'
       Enable generation of LoongArch SIMD instructions for vectorization
       and via builtin functions.  The value can be one of:
!      'lasx'
            Enable generating instructions from the 256-bit LoongArch
            Advanced SIMD Extension (LASX) and the 128-bit LoongArch SIMD
            Extension (LSX).
!      'lsx'
            Enable generating instructions from the 128-bit LoongArch SIMD
            Extension (LSX).
!      'none'
            No LoongArch SIMD instruction may be generated.
  
! '-msoft-float'
!      Force '-mfpu=none' and prevents the use of floating-point registers
       for parameter passing.  This option may change the target ABI.
  
! '-msingle-float'
!      Force '-mfpu=32' and allow the use of 32-bit floating-point
       registers for parameter passing.  This option may change the target
       ABI.
  
! '-mdouble-float'
!      Force '-mfpu=64' and allow the use of 32/64-bit floating-point
       registers for parameter passing.  This option may change the target
       ABI.
  
! '-mlasx'
! '-mno-lasx'
! '-mlsx'
! '-mno-lsx'
       Incrementally adjust the scope of the SIMD extensions (none / LSX /
       LASX) that can be used by the compiler for code generation.
!      Enabling LASX with 'mlasx' automatically enables LSX, and diabling
!      LSX with 'mno-lsx' automatically disables LASX. These driver-only
!      options act upon the final 'msimd' configuration state and make
       incremental changes in the order they appear on the GCC driver's
!      command line, deriving the final / canonicalized 'msimd' option
       that is passed to the compiler proper.
  
! '-mbranch-cost=N'
       Set the cost of branches to roughly N instructions.
  
! '-maddr-reg-reg-cost=N'
       Set the cost of ADDRESS_REG_REG to the value calculated by N.
  
! '-mcheck-zero-division'
! '-mno-check-zero-divison'
       Trap (do not trap) on integer division by zero.  The default is
!      '-mcheck-zero-division' for '-O0' or '-Og', and
!      '-mno-check-zero-division' for other optimization levels.
  
! '-mcond-move-int'
! '-mno-cond-move-int'
       Conditional moves for integral data in general-purpose registers
!      are enabled (disabled).  The default is '-mcond-move-int'.
  
! '-mcond-move-float'
! '-mno-cond-move-float'
       Conditional moves for floating-point registers are enabled
!      (disabled).  The default is '-mcond-move-float'.
  
! '-mmemcpy'
! '-mno-memcpy'
!      Force (do not force) the use of 'memcpy' for non-trivial block
!      moves.  The default is '-mno-memcpy', which allows GCC to inline
!      most constant-sized copies.  Setting optimization level to '-Os'
!      also forces the use of 'memcpy', but '-mno-memcpy' may override
       this behavior if explicitly specified, regardless of the order
       these options on the command line.
  
! '-mstrict-align'
! '-mno-strict-align'
       Avoid or allow generating memory accesses that may not be aligned
       on a natural object boundary as described in the architecture
!      specification.  The default is '-mno-strict-align'.
  
! '-G NUM'
       Put global and static data smaller than NUM bytes into a small data
       section.  The default value is 0.
  
! '-mmax-inline-memcpy-size=N'
!      Inline all block moves (such as calls to 'memcpy' or structure
       copies) less than or equal to N bytes.  The default value of N is
       1024.
  
! '-mcmodel=CODE-MODEL'
       Set the code model to one of:
!      'tiny-static (Not implemented yet)'
!      'tiny (Not implemented yet)'
  
!      'normal'
            The text segment must be within 128MB addressing space.  The
            data segment must be within 2GB addressing space.
  
!      'medium'
            The text segment and data segment must be within 2GB
            addressing space.
  
!      'large (Not implemented yet)'
  
!      'extreme'
            This mode does not limit the size of the code segment and data
!           segment.  The '-mcmodel=extreme' option is incompatible with
!           '-fplt' and/or '-mexplicit-relocs=none'.
!      The default code model is 'normal'.
  
! '-mexplicit-relocs=STYLE'
       Set when to use assembler relocation operators when dealing with
       symbolic addresses.  The alternative is to use assembler macros
       instead, which may limit instruction scheduling but allow linker
!      relaxation.  with '-mexplicit-relocs=none' the assembler macros are
!      always used, with '-mexplicit-relocs=always' the assembler
!      relocation operators are always used, with '-mexplicit-relocs=auto'
       the compiler will use the relocation operators where the linker
       relaxation is impossible to improve the code quality, and macros
       elsewhere.  The default value for the option is determined with the
       assembler capability detected during GCC build-time and the setting
!      of '-mrelax': '-mexplicit-relocs=none' if the assembler does not
!      support relocation operators at all, '-mexplicit-relocs=always' if
!      the assembler supports relocation operators but '-mrelax' is not
!      enabled, '-mexplicit-relocs=auto' if the assembler supports
!      relocation operators and '-mrelax' is enabled.
  
! '-mexplicit-relocs'
!      An alias of '-mexplicit-relocs=always' for backward compatibility.
  
! '-mno-explicit-relocs'
!      An alias of '-mexplicit-relocs=none' for backward compatibility.
  
! '-mdirect-extern-access'
! '-mno-direct-extern-access'
       Do not use or use GOT to access external symbols.  The default is
!      '-mno-direct-extern-access': GOT is used for external symbols with
       default visibility, but not used for other external symbols.
  
!      With '-mdirect-extern-access', GOT is not used and all external
       symbols are PC-relatively addressed.  It is *only* suitable for
       environments where no dynamic link is performed, like firmwares, OS
!      kernels, executables linked with '-static' or '-static-pie'.
!      '-mdirect-extern-access' is not compatible with '-fPIC' or '-fpic'.
  
! '-mrelax'
! '-mno-relax'
       Take (do not take) advantage of linker relaxations.  If
!      '-mpass-mrelax-to-as' is enabled, this option is also passed to the
       assembler.  The default is determined during GCC build-time by
!      detecting corresponding assembler support: '-mrelax' if the
!      assembler supports both the '-mrelax' option and the conditional
!      branch relaxation (it's required or the '.align' directives and
       conditional branch instructions in the assembly code outputted by
       GCC may be rejected by the assembler because of a relocation
!      overflow), '-mno-relax' otherwise.
  
! '-mpass-mrelax-to-as'
! '-mno-pass-mrelax-to-as'
!      Pass (do not pass) the '-mrelax' or '-mno-relax' option to the
       assembler.  The default is determined during GCC build-time by
!      detecting corresponding assembler support: '-mpass-mrelax-to-as' if
!      the assembler supports the '-mrelax' option,
!      '-mno-pass-mrelax-to-as' otherwise.  This option is mostly useful
       for debugging, or interoperation with assemblers different from the
       build-time one.
  
! '-mrecip'
       This option enables use of the reciprocal estimate and reciprocal
       square root estimate instructions with additional Newton-Raphson
       steps to increase precision instead of doing a divide or square
       root and divide for floating-point arguments.  These instructions
!      are generated only when '-funsafe-math-optimizations' is enabled
!      together with '-ffinite-math-only' and '-fno-trapping-math'.  This
       option is off by default.  Before you can use this option, you must
       sure the target CPU supports frecipe and frsqrte instructions.
       Note that while the throughput of the sequence is higher than the
--- 25921,26167 ----
  
  These command-line options are defined for LoongArch targets:
  
! â€˜-march=ARCH-TYPEâ€™
       Generate instructions for the machine type ARCH-TYPE.
!      â€˜-march=ARCH-TYPEâ€™ allows GCC to generate code that may not run at
       all on processors other than the one indicated.
  
       The choices for ARCH-TYPE are:
  
!      â€˜nativeâ€™
            Local processor type detected by the native compiler.
!      â€˜loongarch64â€™
            Generic LoongArch 64-bit processor.
!      â€˜la464â€™
            LoongArch LA464-based processor with LSX, LASX.
!      â€˜la664â€™
            LoongArch LA664-based processor with LSX, LASX and all
            LoongArch v1.1 instructions.
!      â€˜la64v1.0â€™
            LoongArch64 ISA version 1.0.
!      â€˜la64v1.1â€™
            LoongArch64 ISA version 1.1.
  
       More information about LoongArch ISA versions can be found at
       <https://github.com/loongson/la-toolchain-conventions>.
  
! â€˜-mtune=TUNE-TYPEâ€™
       Optimize the generated code for the given processor target.
  
       The choices for TUNE-TYPE are:
  
!      â€˜nativeâ€™
            Local processor type detected by the native compiler.
!      â€˜genericâ€™
            Generic LoongArch processor.
!      â€˜loongarch64â€™
            Generic LoongArch 64-bit processor.
!      â€˜la464â€™
            LoongArch LA464 core.
!      â€˜la664â€™
            LoongArch LA664 core.
  
! â€˜-mabi=BASE-ABI-TYPEâ€™
       Generate code for the specified calling convention.  BASE-ABI-TYPE
       can be one of:
!      â€˜lp64dâ€™
            Uses 64-bit general purpose registers and 32/64-bit
            floating-point registers for parameter passing.  Data model is
!           LP64, where â€˜intâ€™ is 32 bits, while â€˜long intâ€™ and pointers
            are 64 bits.
!      â€˜lp64fâ€™
            Uses 64-bit general purpose registers and 32-bit
            floating-point registers for parameter passing.  Data model is
!           LP64, where â€˜intâ€™ is 32 bits, while â€˜long intâ€™ and pointers
            are 64 bits.
!      â€˜lp64sâ€™
            Uses 64-bit general purpose registers and no floating-point
            registers for parameter passing.  Data model is LP64, where
!           â€˜intâ€™ is 32 bits, while â€˜long intâ€™ and pointers are 64 bits.
  
! â€˜-mfpu=FPU-TYPEâ€™
       Generate code for the specified FPU type, which can be one of:
!      â€˜64â€™
            Allow the use of hardware floating-point instructions for
            32-bit and 64-bit operations.
!      â€˜32â€™
            Allow the use of hardware floating-point instructions for
            32-bit operations.
!      â€˜noneâ€™
!      â€˜0â€™
            Prevent the use of hardware floating-point instructions.
  
! â€˜-msimd=SIMD-TYPEâ€™
       Enable generation of LoongArch SIMD instructions for vectorization
       and via builtin functions.  The value can be one of:
!      â€˜lasxâ€™
            Enable generating instructions from the 256-bit LoongArch
            Advanced SIMD Extension (LASX) and the 128-bit LoongArch SIMD
            Extension (LSX).
!      â€˜lsxâ€™
            Enable generating instructions from the 128-bit LoongArch SIMD
            Extension (LSX).
!      â€˜noneâ€™
            No LoongArch SIMD instruction may be generated.
  
! â€˜-msoft-floatâ€™
!      Force â€˜-mfpu=noneâ€™ and prevents the use of floating-point registers
       for parameter passing.  This option may change the target ABI.
  
! â€˜-msingle-floatâ€™
!      Force â€˜-mfpu=32â€™ and allow the use of 32-bit floating-point
       registers for parameter passing.  This option may change the target
       ABI.
  
! â€˜-mdouble-floatâ€™
!      Force â€˜-mfpu=64â€™ and allow the use of 32/64-bit floating-point
       registers for parameter passing.  This option may change the target
       ABI.
  
! â€˜-mlasxâ€™
! â€˜-mno-lasxâ€™
! â€˜-mlsxâ€™
! â€˜-mno-lsxâ€™
       Incrementally adjust the scope of the SIMD extensions (none / LSX /
       LASX) that can be used by the compiler for code generation.
!      Enabling LASX with â€˜mlasxâ€™ automatically enables LSX, and diabling
!      LSX with â€˜mno-lsxâ€™ automatically disables LASX. These driver-only
!      options act upon the final â€˜msimdâ€™ configuration state and make
       incremental changes in the order they appear on the GCC driver's
!      command line, deriving the final / canonicalized â€˜msimdâ€™ option
       that is passed to the compiler proper.
  
! â€˜-mbranch-cost=Nâ€™
       Set the cost of branches to roughly N instructions.
  
! â€˜-maddr-reg-reg-cost=Nâ€™
       Set the cost of ADDRESS_REG_REG to the value calculated by N.
  
! â€˜-mcheck-zero-divisionâ€™
! â€˜-mno-check-zero-divisonâ€™
       Trap (do not trap) on integer division by zero.  The default is
!      â€˜-mcheck-zero-divisionâ€™ for â€˜-O0â€™ or â€˜-Ogâ€™, and
!      â€˜-mno-check-zero-divisionâ€™ for other optimization levels.
  
! â€˜-mcond-move-intâ€™
! â€˜-mno-cond-move-intâ€™
       Conditional moves for integral data in general-purpose registers
!      are enabled (disabled).  The default is â€˜-mcond-move-intâ€™.
  
! â€˜-mcond-move-floatâ€™
! â€˜-mno-cond-move-floatâ€™
       Conditional moves for floating-point registers are enabled
!      (disabled).  The default is â€˜-mcond-move-floatâ€™.
  
! â€˜-mmemcpyâ€™
! â€˜-mno-memcpyâ€™
!      Force (do not force) the use of â€˜memcpyâ€™ for non-trivial block
!      moves.  The default is â€˜-mno-memcpyâ€™, which allows GCC to inline
!      most constant-sized copies.  Setting optimization level to â€˜-Osâ€™
!      also forces the use of â€˜memcpyâ€™, but â€˜-mno-memcpyâ€™ may override
       this behavior if explicitly specified, regardless of the order
       these options on the command line.
  
! â€˜-mstrict-alignâ€™
! â€˜-mno-strict-alignâ€™
       Avoid or allow generating memory accesses that may not be aligned
       on a natural object boundary as described in the architecture
!      specification.  The default is â€˜-mno-strict-alignâ€™.
  
! â€˜-G NUMâ€™
       Put global and static data smaller than NUM bytes into a small data
       section.  The default value is 0.
  
! â€˜-mmax-inline-memcpy-size=Nâ€™
!      Inline all block moves (such as calls to â€˜memcpyâ€™ or structure
       copies) less than or equal to N bytes.  The default value of N is
       1024.
  
! â€˜-mcmodel=CODE-MODELâ€™
       Set the code model to one of:
!      â€˜tiny-static (Not implemented yet)â€™
!      â€˜tiny (Not implemented yet)â€™
  
!      â€˜normalâ€™
            The text segment must be within 128MB addressing space.  The
            data segment must be within 2GB addressing space.
  
!      â€˜mediumâ€™
            The text segment and data segment must be within 2GB
            addressing space.
  
!      â€˜large (Not implemented yet)â€™
  
!      â€˜extremeâ€™
            This mode does not limit the size of the code segment and data
!           segment.  The â€˜-mcmodel=extremeâ€™ option is incompatible with
!           â€˜-fpltâ€™ and/or â€˜-mexplicit-relocs=noneâ€™.
!      The default code model is â€˜normalâ€™.
  
! â€˜-mexplicit-relocs=STYLEâ€™
       Set when to use assembler relocation operators when dealing with
       symbolic addresses.  The alternative is to use assembler macros
       instead, which may limit instruction scheduling but allow linker
!      relaxation.  with â€˜-mexplicit-relocs=noneâ€™ the assembler macros are
!      always used, with â€˜-mexplicit-relocs=alwaysâ€™ the assembler
!      relocation operators are always used, with â€˜-mexplicit-relocs=autoâ€™
       the compiler will use the relocation operators where the linker
       relaxation is impossible to improve the code quality, and macros
       elsewhere.  The default value for the option is determined with the
       assembler capability detected during GCC build-time and the setting
!      of â€˜-mrelaxâ€™: â€˜-mexplicit-relocs=noneâ€™ if the assembler does not
!      support relocation operators at all, â€˜-mexplicit-relocs=alwaysâ€™ if
!      the assembler supports relocation operators but â€˜-mrelaxâ€™ is not
!      enabled, â€˜-mexplicit-relocs=autoâ€™ if the assembler supports
!      relocation operators and â€˜-mrelaxâ€™ is enabled.
  
! â€˜-mexplicit-relocsâ€™
!      An alias of â€˜-mexplicit-relocs=alwaysâ€™ for backward compatibility.
  
! â€˜-mno-explicit-relocsâ€™
!      An alias of â€˜-mexplicit-relocs=noneâ€™ for backward compatibility.
  
! â€˜-mdirect-extern-accessâ€™
! â€˜-mno-direct-extern-accessâ€™
       Do not use or use GOT to access external symbols.  The default is
!      â€˜-mno-direct-extern-accessâ€™: GOT is used for external symbols with
       default visibility, but not used for other external symbols.
  
!      With â€˜-mdirect-extern-accessâ€™, GOT is not used and all external
       symbols are PC-relatively addressed.  It is *only* suitable for
       environments where no dynamic link is performed, like firmwares, OS
!      kernels, executables linked with â€˜-staticâ€™ or â€˜-static-pieâ€™.
!      â€˜-mdirect-extern-accessâ€™ is not compatible with â€˜-fPICâ€™ or â€˜-fpicâ€™.
  
! â€˜-mrelaxâ€™
! â€˜-mno-relaxâ€™
       Take (do not take) advantage of linker relaxations.  If
!      â€˜-mpass-mrelax-to-asâ€™ is enabled, this option is also passed to the
       assembler.  The default is determined during GCC build-time by
!      detecting corresponding assembler support: â€˜-mrelaxâ€™ if the
!      assembler supports both the â€˜-mrelaxâ€™ option and the conditional
!      branch relaxation (it's required or the â€˜.alignâ€™ directives and
       conditional branch instructions in the assembly code outputted by
       GCC may be rejected by the assembler because of a relocation
!      overflow), â€˜-mno-relaxâ€™ otherwise.
  
! â€˜-mpass-mrelax-to-asâ€™
! â€˜-mno-pass-mrelax-to-asâ€™
!      Pass (do not pass) the â€˜-mrelaxâ€™ or â€˜-mno-relaxâ€™ option to the
       assembler.  The default is determined during GCC build-time by
!      detecting corresponding assembler support: â€˜-mpass-mrelax-to-asâ€™ if
!      the assembler supports the â€˜-mrelaxâ€™ option,
!      â€˜-mno-pass-mrelax-to-asâ€™ otherwise.  This option is mostly useful
       for debugging, or interoperation with assemblers different from the
       build-time one.
  
! â€˜-mrecipâ€™
       This option enables use of the reciprocal estimate and reciprocal
       square root estimate instructions with additional Newton-Raphson
       steps to increase precision instead of doing a divide or square
       root and divide for floating-point arguments.  These instructions
!      are generated only when â€˜-funsafe-math-optimizationsâ€™ is enabled
!      together with â€˜-ffinite-math-onlyâ€™ and â€˜-fno-trapping-mathâ€™.  This
       option is off by default.  Before you can use this option, you must
       sure the target CPU supports frecipe and frsqrte instructions.
       Note that while the throughput of the sequence is higher than the
*************** These command-line options are defined f
*** 26161,26252 ****
       sequence can be decreased by up to 2 ulp (i.e.  the inverse of 1.0
       equals 0.99999994).
  
! '-mrecip=OPT'
       This option controls which reciprocal estimate instructions may be
       used.  OPT is a comma-separated list of options, which may be
!      preceded by a '!' to invert the option:
  
!      'all'
            Enable all estimate instructions.
  
!      'default'
!           Enable the default instructions, equivalent to '-mrecip'.
  
!      'none'
!           Disable all estimate instructions, equivalent to '-mno-recip'.
  
!      'div'
            Enable the approximation for scalar division.
  
!      'vec-div'
            Enable the approximation for vectorized division.
  
!      'sqrt'
            Enable the approximation for scalar square root.
  
!      'vec-sqrt'
            Enable the approximation for vectorized square root.
  
!      'rsqrt'
            Enable the approximation for scalar reciprocal square root.
  
!      'vec-rsqrt'
            Enable the approximation for vectorized reciprocal square
            root.
  
!      So, for example, '-mrecip=all,!sqrt' enables all of the reciprocal
       approximations, except for scalar square root.
  
! '-mfrecipe'
! '-mno-frecipe'
!      Use (do not use) 'frecipe.{s/d}' and 'frsqrte.{s/d}' instructions.
!      When build with '-march=la664', it is enabled by default.  The
!      default is '-mno-frecipe'.
  
! '-mdiv32'
! '-mno-div32'
!      Use (do not use) 'div.w[u]' and 'mod.w[u]' instructions with input
!      not sign-extended.  When build with '-march=la664', it is enabled
!      by default.  The default is '-mno-div32'.
  
! '-mlam-bh'
! '-mno-lam-bh'
!      Use (do not use) 'am{swap/add}[_db].{b/h}' instructions.  When
!      build with '-march=la664', it is enabled by default.  The default
!      is '-mno-lam-bh'.
  
! '-mlamcas'
! '-mno-lamcas'
!      Use (do not use) 'amcas[_db].{b/h/w/d}' instructions.  When build
!      with '-march=la664', it is enabled by default.  The default is
!      '-mno-lamcas'.
  
! '-mld-seq-sa'
! '-mno-ld-seq-sa'
!      Whether a same-address load-load barrier ('dbar 0x700') is needed.
!      When build with '-march=la664', it is enabled by default.  The
!      default is '-mno-ld-seq-sa', the load-load barrier is needed.
  
! '-mtls-dialect=OPT'
       This option controls which tls dialect may be used for general
       dynamic and local dynamic TLS models.
  
!      'trad'
            Use traditional TLS. This is the default.
  
!      'desc'
            Use TLS descriptors.
  
! '-mannotate-tablejump'
! '-mno-annotate-tablejump'
!      Create an annotation section '.discard.tablejump_annotate' to
!      correlate the 'jirl' instruction and the jump table when a jump
!      table is used to optimize the 'switch' statement.  Some external
!      tools, for example 'objtool' of the Linux kernel building system,
       need the annotation to analysis the control flow.  The default is
!      '-mno-annotate-tablejump'.
  
! '--param loongarch-vect-unroll-limit=N'
       The vectorizer will use available tuning information to determine
       whether it would be beneficial to unroll the main vectorized loop
       and by how much.  This parameter set's the upper bound of how much
--- 26169,26260 ----
       sequence can be decreased by up to 2 ulp (i.e.  the inverse of 1.0
       equals 0.99999994).
  
! â€˜-mrecip=OPTâ€™
       This option controls which reciprocal estimate instructions may be
       used.  OPT is a comma-separated list of options, which may be
!      preceded by a â€˜!â€™ to invert the option:
  
!      â€˜allâ€™
            Enable all estimate instructions.
  
!      â€˜defaultâ€™
!           Enable the default instructions, equivalent to â€˜-mrecipâ€™.
  
!      â€˜noneâ€™
!           Disable all estimate instructions, equivalent to â€˜-mno-recipâ€™.
  
!      â€˜divâ€™
            Enable the approximation for scalar division.
  
!      â€˜vec-divâ€™
            Enable the approximation for vectorized division.
  
!      â€˜sqrtâ€™
            Enable the approximation for scalar square root.
  
!      â€˜vec-sqrtâ€™
            Enable the approximation for vectorized square root.
  
!      â€˜rsqrtâ€™
            Enable the approximation for scalar reciprocal square root.
  
!      â€˜vec-rsqrtâ€™
            Enable the approximation for vectorized reciprocal square
            root.
  
!      So, for example, â€˜-mrecip=all,!sqrtâ€™ enables all of the reciprocal
       approximations, except for scalar square root.
  
! â€˜-mfrecipeâ€™
! â€˜-mno-frecipeâ€™
!      Use (do not use) â€˜frecipe.{s/d}â€™ and â€˜frsqrte.{s/d}â€™ instructions.
!      When build with â€˜-march=la664â€™, it is enabled by default.  The
!      default is â€˜-mno-frecipeâ€™.
  
! â€˜-mdiv32â€™
! â€˜-mno-div32â€™
!      Use (do not use) â€˜div.w[u]â€™ and â€˜mod.w[u]â€™ instructions with input
!      not sign-extended.  When build with â€˜-march=la664â€™, it is enabled
!      by default.  The default is â€˜-mno-div32â€™.
  
! â€˜-mlam-bhâ€™
! â€˜-mno-lam-bhâ€™
!      Use (do not use) â€˜am{swap/add}[_db].{b/h}â€™ instructions.  When
!      build with â€˜-march=la664â€™, it is enabled by default.  The default
!      is â€˜-mno-lam-bhâ€™.
  
! â€˜-mlamcasâ€™
! â€˜-mno-lamcasâ€™
!      Use (do not use) â€˜amcas[_db].{b/h/w/d}â€™ instructions.  When build
!      with â€˜-march=la664â€™, it is enabled by default.  The default is
!      â€˜-mno-lamcasâ€™.
  
! â€˜-mld-seq-saâ€™
! â€˜-mno-ld-seq-saâ€™
!      Whether a same-address load-load barrier (â€˜dbar 0x700â€™) is needed.
!      When build with â€˜-march=la664â€™, it is enabled by default.  The
!      default is â€˜-mno-ld-seq-saâ€™, the load-load barrier is needed.
  
! â€˜-mtls-dialect=OPTâ€™
       This option controls which tls dialect may be used for general
       dynamic and local dynamic TLS models.
  
!      â€˜tradâ€™
            Use traditional TLS. This is the default.
  
!      â€˜descâ€™
            Use TLS descriptors.
  
! â€˜-mannotate-tablejumpâ€™
! â€˜-mno-annotate-tablejumpâ€™
!      Create an annotation section â€˜.discard.tablejump_annotateâ€™ to
!      correlate the â€˜jirlâ€™ instruction and the jump table when a jump
!      table is used to optimize the â€˜switchâ€™ statement.  Some external
!      tools, for example â€˜objtoolâ€™ of the Linux kernel building system,
       need the annotation to analysis the control flow.  The default is
!      â€˜-mno-annotate-tablejumpâ€™.
  
! â€˜--param loongarch-vect-unroll-limit=Nâ€™
       The vectorizer will use available tuning information to determine
       whether it would be beneficial to unroll the main vectorized loop
       and by how much.  This parameter set's the upper bound of how much
*************** File: gcc.info,  Node: M32C Options,  Ne
*** 26259,26271 ****
  3.20.24 M32C Options
  --------------------
  
! '-mcpu=NAME'
       Select the CPU for which code is generated.  NAME may be one of
!      'r8c' for the R8C/Tiny series, 'm16c' for the M16C (up to /60)
!      series, 'm32cm' for the M16C/80 series, or 'm32c' for the M32C/80
       series.
  
! '-msim'
       Specifies that the program will be run on the simulator.  This
       causes an alternate runtime library to be linked in which supports,
       for example, file I/O.  You must not use this option when
--- 26267,26279 ----
  3.20.24 M32C Options
  --------------------
  
! â€˜-mcpu=NAMEâ€™
       Select the CPU for which code is generated.  NAME may be one of
!      â€˜r8câ€™ for the R8C/Tiny series, â€˜m16câ€™ for the M16C (up to /60)
!      series, â€˜m32cmâ€™ for the M16C/80 series, or â€˜m32câ€™ for the M32C/80
       series.
  
! â€˜-msimâ€™
       Specifies that the program will be run on the simulator.  This
       causes an alternate runtime library to be linked in which supports,
       for example, file I/O.  You must not use this option when
*************** File: gcc.info,  Node: M32C Options,  Ne
*** 26273,26279 ****
       provide your own runtime library for whatever I/O functions are
       needed.
  
! '-memregs=NUMBER'
       Specifies the number of memory-based pseudo-registers GCC uses
       during code generation.  These pseudo-registers are used like real
       registers, so there is a tradeoff between GCC's ability to fit the
--- 26281,26287 ----
       provide your own runtime library for whatever I/O functions are
       needed.
  
! â€˜-memregs=NUMBERâ€™
       Specifies the number of memory-based pseudo-registers GCC uses
       during code generation.  These pseudo-registers are used like real
       registers, so there is a tradeoff between GCC's ability to fit the
*************** File: gcc.info,  Node: M32R/D Options,
*** 26289,26386 ****
  3.20.25 M32R/D Options
  ----------------------
  
! These '-m' options are defined for Renesas M32R/D architectures:
  
! '-m32r2'
       Generate code for the M32R/2.
  
! '-m32rx'
       Generate code for the M32R/X.
  
! '-m32r'
       Generate code for the M32R.  This is the default.
  
! '-mmodel=small'
       Assume all objects live in the lower 16MB of memory (so that their
!      addresses can be loaded with the 'ld24' instruction), and assume
!      all subroutines are reachable with the 'bl' instruction.  This is
       the default.
  
       The addressability of a particular object can be set with the
!      'model' attribute.
  
! '-mmodel=medium'
       Assume objects may be anywhere in the 32-bit address space (the
!      compiler generates 'seth/add3' instructions to load their
!      addresses), and assume all subroutines are reachable with the 'bl'
       instruction.
  
! '-mmodel=large'
       Assume objects may be anywhere in the 32-bit address space (the
!      compiler generates 'seth/add3' instructions to load their
       addresses), and assume subroutines may not be reachable with the
!      'bl' instruction (the compiler generates the much slower
!      'seth/add3/jl' instruction sequence).
  
! '-msdata=none'
       Disable use of the small data area.  Variables are put into one of
!      '.data', '.bss', or '.rodata' (unless the 'section' attribute has
       been specified).  This is the default.
  
!      The small data area consists of sections '.sdata' and '.sbss'.
       Objects may be explicitly put in the small data area with the
!      'section' attribute using one of these sections.
  
! '-msdata=sdata'
       Put small global and static data in the small data area, but do not
       generate special code to reference them.
  
! '-msdata=use'
       Put small global and static data in the small data area, and
       generate special instructions to reference them.
  
! '-G NUM'
       Put global and static objects less than or equal to NUM bytes into
       the small data or BSS sections instead of the normal data or BSS
!      sections.  The default value of NUM is 8.  The '-msdata' option
!      must be set to one of 'sdata' or 'use' for this option to have any
       effect.
  
!      All modules should be compiled with the same '-G NUM' value.
       Compiling with different values of NUM may or may not work; if it
       doesn't the linker gives an error message--incorrect code is not
       generated.
  
! '-mdebug'
       Makes the M32R-specific code in the compiler display some
       statistics that might help in debugging programs.
  
! '-malign-loops'
       Align all loops to a 32-byte boundary.
  
! '-mno-align-loops'
       Do not enforce a 32-byte alignment for loops.  This is the default.
  
! '-missue-rate=NUMBER'
       Issue NUMBER instructions per cycle.  NUMBER can only be 1 or 2.
  
! '-mbranch-cost=NUMBER'
       NUMBER can only be 1 or 2.  If it is 1 then branches are preferred
       over conditional code, if it is 2, then the opposite applies.
  
! '-mflush-trap=NUMBER'
       Specifies the trap number to use to flush the cache.  The default
       is 12.  Valid numbers are between 0 and 15 inclusive.
  
! '-mno-flush-trap'
       Specifies that the cache cannot be flushed by using a trap.
  
! '-mflush-func=NAME'
       Specifies the name of the operating system function to call to
!      flush the cache.  The default is '_flush_cache', but a function
       call is only used if a trap is not available.
  
! '-mno-flush-func'
       Indicates that there is no OS function for flushing the cache.
  
  
--- 26297,26394 ----
  3.20.25 M32R/D Options
  ----------------------
  
! These â€˜-mâ€™ options are defined for Renesas M32R/D architectures:
  
! â€˜-m32r2â€™
       Generate code for the M32R/2.
  
! â€˜-m32rxâ€™
       Generate code for the M32R/X.
  
! â€˜-m32râ€™
       Generate code for the M32R.  This is the default.
  
! â€˜-mmodel=smallâ€™
       Assume all objects live in the lower 16MB of memory (so that their
!      addresses can be loaded with the â€˜ld24â€™ instruction), and assume
!      all subroutines are reachable with the â€˜blâ€™ instruction.  This is
       the default.
  
       The addressability of a particular object can be set with the
!      â€˜modelâ€™ attribute.
  
! â€˜-mmodel=mediumâ€™
       Assume objects may be anywhere in the 32-bit address space (the
!      compiler generates â€˜seth/add3â€™ instructions to load their
!      addresses), and assume all subroutines are reachable with the â€˜blâ€™
       instruction.
  
! â€˜-mmodel=largeâ€™
       Assume objects may be anywhere in the 32-bit address space (the
!      compiler generates â€˜seth/add3â€™ instructions to load their
       addresses), and assume subroutines may not be reachable with the
!      â€˜blâ€™ instruction (the compiler generates the much slower
!      â€˜seth/add3/jlâ€™ instruction sequence).
  
! â€˜-msdata=noneâ€™
       Disable use of the small data area.  Variables are put into one of
!      â€˜.dataâ€™, â€˜.bssâ€™, or â€˜.rodataâ€™ (unless the â€˜sectionâ€™ attribute has
       been specified).  This is the default.
  
!      The small data area consists of sections â€˜.sdataâ€™ and â€˜.sbssâ€™.
       Objects may be explicitly put in the small data area with the
!      â€˜sectionâ€™ attribute using one of these sections.
  
! â€˜-msdata=sdataâ€™
       Put small global and static data in the small data area, but do not
       generate special code to reference them.
  
! â€˜-msdata=useâ€™
       Put small global and static data in the small data area, and
       generate special instructions to reference them.
  
! â€˜-G NUMâ€™
       Put global and static objects less than or equal to NUM bytes into
       the small data or BSS sections instead of the normal data or BSS
!      sections.  The default value of NUM is 8.  The â€˜-msdataâ€™ option
!      must be set to one of â€˜sdataâ€™ or â€˜useâ€™ for this option to have any
       effect.
  
!      All modules should be compiled with the same â€˜-G NUMâ€™ value.
       Compiling with different values of NUM may or may not work; if it
       doesn't the linker gives an error message--incorrect code is not
       generated.
  
! â€˜-mdebugâ€™
       Makes the M32R-specific code in the compiler display some
       statistics that might help in debugging programs.
  
! â€˜-malign-loopsâ€™
       Align all loops to a 32-byte boundary.
  
! â€˜-mno-align-loopsâ€™
       Do not enforce a 32-byte alignment for loops.  This is the default.
  
! â€˜-missue-rate=NUMBERâ€™
       Issue NUMBER instructions per cycle.  NUMBER can only be 1 or 2.
  
! â€˜-mbranch-cost=NUMBERâ€™
       NUMBER can only be 1 or 2.  If it is 1 then branches are preferred
       over conditional code, if it is 2, then the opposite applies.
  
! â€˜-mflush-trap=NUMBERâ€™
       Specifies the trap number to use to flush the cache.  The default
       is 12.  Valid numbers are between 0 and 15 inclusive.
  
! â€˜-mno-flush-trapâ€™
       Specifies that the cache cannot be flushed by using a trap.
  
! â€˜-mflush-func=NAMEâ€™
       Specifies the name of the operating system function to call to
!      flush the cache.  The default is â€˜_flush_cacheâ€™, but a function
       call is only used if a trap is not available.
  
! â€˜-mno-flush-funcâ€™
       Indicates that there is no OS function for flushing the cache.
  
  
*************** File: gcc.info,  Node: M680x0 Options,
*** 26389,26627 ****
  3.20.26 M680x0 Options
  ----------------------
  
! These are the '-m' options defined for M680x0 and ColdFire processors.
  The default settings depend on which architecture was selected when the
  compiler was configured; the defaults for the most common choices are
  given below.
  
! '-march=ARCH'
       Generate code for a specific M680x0 or ColdFire instruction set
       architecture.  Permissible values of ARCH for M680x0 architectures
!      are: '68000', '68010', '68020', '68030', '68040', '68060' and
!      'cpu32'.  ColdFire architectures are selected according to
       Freescale's ISA classification and the permissible values are:
!      'isaa', 'isaaplus', 'isab' and 'isac'.
  
!      GCC defines a macro '__mcfARCH__' whenever it is generating code
       for a ColdFire target.  The ARCH in this macro is one of the
!      '-march' arguments given above.
  
!      When used together, '-march' and '-mtune' select code that runs on
       a family of similar processors but that is optimized for a
       particular microarchitecture.
  
! '-mcpu=CPU'
       Generate code for a specific M680x0 or ColdFire processor.  The
!      M680x0 CPUs are: '68000', '68010', '68020', '68030', '68040',
!      '68060', '68302', '68332' and 'cpu32'.  The ColdFire CPUs are given
       by the table below, which also classifies the CPUs into families:
  
!      *Family*       *'-mcpu' arguments*
       --------------------------------------------------------------------------
!      '51'           '51' '51ac' '51ag' '51cn' '51em' '51je' '51jf' '51jg'
!                     '51jm' '51mm' '51qe' '51qm'
!      '5206'         '5202' '5204' '5206'
!      '5206e'        '5206e'
!      '5208'         '5207' '5208'
!      '5211a'        '5210a' '5211a'
!      '5213'         '5211' '5212' '5213'
!      '5216'         '5214' '5216'
!      '52235'        '52230' '52231' '52232' '52233' '52234' '52235'
!      '5225'         '5224' '5225'
!      '52259'        '52252' '52254' '52255' '52256' '52258' '52259'
!      '5235'         '5232' '5233' '5234' '5235' '523x'
!      '5249'         '5249'
!      '5250'         '5250'
!      '5271'         '5270' '5271'
!      '5272'         '5272'
!      '5275'         '5274' '5275'
!      '5282'         '5280' '5281' '5282' '528x'
!      '53017'        '53011' '53012' '53013' '53014' '53015' '53016' '53017'
!      '5307'         '5307'
!      '5329'         '5327' '5328' '5329' '532x'
!      '5373'         '5372' '5373' '537x'
!      '5407'         '5407'
!      '5475'         '5470' '5471' '5472' '5473' '5474' '5475' '547x' '5480'
!                     '5481' '5482' '5483' '5484' '5485'
  
!      '-mcpu=CPU' overrides '-march=ARCH' if ARCH is compatible with CPU.
!      Other combinations of '-mcpu' and '-march' are rejected.
  
!      GCC defines the macro '__mcf_cpu_CPU' when ColdFire target CPU is
!      selected.  It also defines '__mcf_family_FAMILY', where the value
       of FAMILY is given by the table above.
  
! '-mtune=TUNE'
       Tune the code for a particular microarchitecture within the
!      constraints set by '-march' and '-mcpu'.  The M680x0
!      microarchitectures are: '68000', '68010', '68020', '68030',
!      '68040', '68060' and 'cpu32'.  The ColdFire microarchitectures are:
!      'cfv1', 'cfv2', 'cfv3', 'cfv4' and 'cfv4e'.
  
!      You can also use '-mtune=68020-40' for code that needs to run
       relatively well on 68020, 68030 and 68040 targets.
!      '-mtune=68020-60' is similar but includes 68060 targets as well.
!      These two options select the same tuning decisions as '-m68020-40'
!      and '-m68020-60' respectively.
  
!      GCC defines the macros '__mcARCH' and '__mcARCH__' when tuning for
!      680x0 architecture ARCH.  It also defines 'mcARCH' unless either
!      '-ansi' or a non-GNU '-std' option is used.  If GCC is tuning for a
!      range of architectures, as selected by '-mtune=68020-40' or
!      '-mtune=68020-60', it defines the macros for every architecture in
       the range.
  
!      GCC also defines the macro '__mUARCH__' when tuning for ColdFire
       microarchitecture UARCH, where UARCH is one of the arguments given
       above.
  
! '-m68000'
! '-mc68000'
       Generate output for a 68000.  This is the default when the compiler
       is configured for 68000-based systems.  It is equivalent to
!      '-march=68000'.
  
       Use this option for microcontrollers with a 68000 or EC000 core,
       including the 68008, 68302, 68306, 68307, 68322, 68328 and 68356.
  
! '-m68010'
       Generate output for a 68010.  This is the default when the compiler
       is configured for 68010-based systems.  It is equivalent to
!      '-march=68010'.
  
! '-m68020'
! '-mc68020'
       Generate output for a 68020.  This is the default when the compiler
       is configured for 68020-based systems.  It is equivalent to
!      '-march=68020'.
  
! '-m68030'
       Generate output for a 68030.  This is the default when the compiler
       is configured for 68030-based systems.  It is equivalent to
!      '-march=68030'.
  
! '-m68040'
       Generate output for a 68040.  This is the default when the compiler
       is configured for 68040-based systems.  It is equivalent to
!      '-march=68040'.
  
       This option inhibits the use of 68881/68882 instructions that have
       to be emulated by software on the 68040.  Use this option if your
       68040 does not have code to emulate those instructions.
  
! '-m68060'
       Generate output for a 68060.  This is the default when the compiler
       is configured for 68060-based systems.  It is equivalent to
!      '-march=68060'.
  
       This option inhibits the use of 68020 and 68881/68882 instructions
       that have to be emulated by software on the 68060.  Use this option
       if your 68060 does not have code to emulate those instructions.
  
! '-mcpu32'
       Generate output for a CPU32.  This is the default when the compiler
       is configured for CPU32-based systems.  It is equivalent to
!      '-march=cpu32'.
  
       Use this option for microcontrollers with a CPU32 or CPU32+ core,
       including the 68330, 68331, 68332, 68333, 68334, 68336, 68340,
       68341, 68349 and 68360.
  
! '-m5200'
       Generate output for a 520X ColdFire CPU.  This is the default when
       the compiler is configured for 520X-based systems.  It is
!      equivalent to '-mcpu=5206', and is now deprecated in favor of that
       option.
  
       Use this option for microcontroller with a 5200 core, including the
       MCF5202, MCF5203, MCF5204 and MCF5206.
  
! '-m5206e'
       Generate output for a 5206e ColdFire CPU.  The option is now
!      deprecated in favor of the equivalent '-mcpu=5206e'.
  
! '-m528x'
       Generate output for a member of the ColdFire 528X family.  The
!      option is now deprecated in favor of the equivalent '-mcpu=528x'.
  
! '-m5307'
       Generate output for a ColdFire 5307 CPU.  The option is now
!      deprecated in favor of the equivalent '-mcpu=5307'.
  
! '-m5407'
       Generate output for a ColdFire 5407 CPU.  The option is now
!      deprecated in favor of the equivalent '-mcpu=5407'.
  
! '-mcfv4e'
       Generate output for a ColdFire V4e family CPU (e.g. 547x/548x).
       This includes use of hardware floating-point instructions.  The
!      option is equivalent to '-mcpu=547x', and is now deprecated in
       favor of that option.
  
! '-m68020-40'
       Generate output for a 68040, without using any of the new
       instructions.  This results in code that can run relatively
       efficiently on either a 68020/68881 or a 68030 or a 68040.  The
       generated code does use the 68881 instructions that are emulated on
       the 68040.
  
!      The option is equivalent to '-march=68020' '-mtune=68020-40'.
  
! '-m68020-60'
       Generate output for a 68060, without using any of the new
       instructions.  This results in code that can run relatively
       efficiently on either a 68020/68881 or a 68030 or a 68040.  The
       generated code does use the 68881 instructions that are emulated on
       the 68060.
  
!      The option is equivalent to '-march=68020' '-mtune=68020-60'.
  
! '-mhard-float'
! '-m68881'
       Generate floating-point instructions.  This is the default for
       68020 and above, and for ColdFire devices that have an FPU.  It
!      defines the macro '__HAVE_68881__' on M680x0 targets and
!      '__mcffpu__' on ColdFire targets.
  
! '-msoft-float'
       Do not generate floating-point instructions; use library calls
       instead.  This is the default for 68000, 68010, and 68832 targets.
       It is also the default for ColdFire devices that have no FPU.
  
! '-mdiv'
! '-mno-div'
       Generate (do not generate) ColdFire hardware divide and remainder
!      instructions.  If '-march' is used without '-mcpu', the default is
       "on" for ColdFire architectures and "off" for M680x0 architectures.
       Otherwise, the default is taken from the target CPU (either the
!      default CPU, or the one specified by '-mcpu').  For example, the
!      default is "off" for '-mcpu=5206' and "on" for '-mcpu=5206e'.
  
!      GCC defines the macro '__mcfhwdiv__' when this option is enabled.
  
! '-mshort'
!      Consider type 'int' to be 16 bits wide, like 'short int'.
       Additionally, parameters passed on the stack are also aligned to a
       16-bit boundary even on targets whose API mandates promotion to
       32-bit.
  
! '-mno-short'
!      Do not consider type 'int' to be 16 bits wide.  This is the
       default.
  
! '-mnobitfield'
! '-mno-bitfield'
!      Do not use the bit-field instructions.  The '-m68000', '-mcpu32'
!      and '-m5200' options imply '-mnobitfield'.
  
! '-mbitfield'
!      Do use the bit-field instructions.  The '-m68020' option implies
!      '-mbitfield'.  This is the default if you use a configuration
       designed for a 68020.
  
! '-mrtd'
       Use a different function-calling convention, in which functions
!      that take a fixed number of arguments return with the 'rtd'
       instruction, which pops their arguments while returning.  This
       saves one instruction in the caller since there is no need to pop
       the arguments there.
--- 26397,26635 ----
  3.20.26 M680x0 Options
  ----------------------
  
! These are the â€˜-mâ€™ options defined for M680x0 and ColdFire processors.
  The default settings depend on which architecture was selected when the
  compiler was configured; the defaults for the most common choices are
  given below.
  
! â€˜-march=ARCHâ€™
       Generate code for a specific M680x0 or ColdFire instruction set
       architecture.  Permissible values of ARCH for M680x0 architectures
!      are: â€˜68000â€™, â€˜68010â€™, â€˜68020â€™, â€˜68030â€™, â€˜68040â€™, â€˜68060â€™ and
!      â€˜cpu32â€™.  ColdFire architectures are selected according to
       Freescale's ISA classification and the permissible values are:
!      â€˜isaaâ€™, â€˜isaaplusâ€™, â€˜isabâ€™ and â€˜isacâ€™.
  
!      GCC defines a macro â€˜__mcfARCH__â€™ whenever it is generating code
       for a ColdFire target.  The ARCH in this macro is one of the
!      â€˜-marchâ€™ arguments given above.
  
!      When used together, â€˜-marchâ€™ and â€˜-mtuneâ€™ select code that runs on
       a family of similar processors but that is optimized for a
       particular microarchitecture.
  
! â€˜-mcpu=CPUâ€™
       Generate code for a specific M680x0 or ColdFire processor.  The
!      M680x0 CPUs are: â€˜68000â€™, â€˜68010â€™, â€˜68020â€™, â€˜68030â€™, â€˜68040â€™,
!      â€˜68060â€™, â€˜68302â€™, â€˜68332â€™ and â€˜cpu32â€™.  The ColdFire CPUs are given
       by the table below, which also classifies the CPUs into families:
  
!      *Family*       *â€˜-mcpuâ€™ arguments*
       --------------------------------------------------------------------------
!      â€˜51â€™           â€˜51â€™ â€˜51acâ€™ â€˜51agâ€™ â€˜51cnâ€™ â€˜51emâ€™ â€˜51jeâ€™ â€˜51jfâ€™ â€˜51jgâ€™
!                     â€˜51jmâ€™ â€˜51mmâ€™ â€˜51qeâ€™ â€˜51qmâ€™
!      â€˜5206â€™         â€˜5202â€™ â€˜5204â€™ â€˜5206â€™
!      â€˜5206eâ€™        â€˜5206eâ€™
!      â€˜5208â€™         â€˜5207â€™ â€˜5208â€™
!      â€˜5211aâ€™        â€˜5210aâ€™ â€˜5211aâ€™
!      â€˜5213â€™         â€˜5211â€™ â€˜5212â€™ â€˜5213â€™
!      â€˜5216â€™         â€˜5214â€™ â€˜5216â€™
!      â€˜52235â€™        â€˜52230â€™ â€˜52231â€™ â€˜52232â€™ â€˜52233â€™ â€˜52234â€™ â€˜52235â€™
!      â€˜5225â€™         â€˜5224â€™ â€˜5225â€™
!      â€˜52259â€™        â€˜52252â€™ â€˜52254â€™ â€˜52255â€™ â€˜52256â€™ â€˜52258â€™ â€˜52259â€™
!      â€˜5235â€™         â€˜5232â€™ â€˜5233â€™ â€˜5234â€™ â€˜5235â€™ â€˜523xâ€™
!      â€˜5249â€™         â€˜5249â€™
!      â€˜5250â€™         â€˜5250â€™
!      â€˜5271â€™         â€˜5270â€™ â€˜5271â€™
!      â€˜5272â€™         â€˜5272â€™
!      â€˜5275â€™         â€˜5274â€™ â€˜5275â€™
!      â€˜5282â€™         â€˜5280â€™ â€˜5281â€™ â€˜5282â€™ â€˜528xâ€™
!      â€˜53017â€™        â€˜53011â€™ â€˜53012â€™ â€˜53013â€™ â€˜53014â€™ â€˜53015â€™ â€˜53016â€™ â€˜53017â€™
!      â€˜5307â€™         â€˜5307â€™
!      â€˜5329â€™         â€˜5327â€™ â€˜5328â€™ â€˜5329â€™ â€˜532xâ€™
!      â€˜5373â€™         â€˜5372â€™ â€˜5373â€™ â€˜537xâ€™
!      â€˜5407â€™         â€˜5407â€™
!      â€˜5475â€™         â€˜5470â€™ â€˜5471â€™ â€˜5472â€™ â€˜5473â€™ â€˜5474â€™ â€˜5475â€™ â€˜547xâ€™ â€˜5480â€™
!                     â€˜5481â€™ â€˜5482â€™ â€˜5483â€™ â€˜5484â€™ â€˜5485â€™
  
!      â€˜-mcpu=CPUâ€™ overrides â€˜-march=ARCHâ€™ if ARCH is compatible with CPU.
!      Other combinations of â€˜-mcpuâ€™ and â€˜-marchâ€™ are rejected.
  
!      GCC defines the macro â€˜__mcf_cpu_CPUâ€™ when ColdFire target CPU is
!      selected.  It also defines â€˜__mcf_family_FAMILYâ€™, where the value
       of FAMILY is given by the table above.
  
! â€˜-mtune=TUNEâ€™
       Tune the code for a particular microarchitecture within the
!      constraints set by â€˜-marchâ€™ and â€˜-mcpuâ€™.  The M680x0
!      microarchitectures are: â€˜68000â€™, â€˜68010â€™, â€˜68020â€™, â€˜68030â€™,
!      â€˜68040â€™, â€˜68060â€™ and â€˜cpu32â€™.  The ColdFire microarchitectures are:
!      â€˜cfv1â€™, â€˜cfv2â€™, â€˜cfv3â€™, â€˜cfv4â€™ and â€˜cfv4eâ€™.
  
!      You can also use â€˜-mtune=68020-40â€™ for code that needs to run
       relatively well on 68020, 68030 and 68040 targets.
!      â€˜-mtune=68020-60â€™ is similar but includes 68060 targets as well.
!      These two options select the same tuning decisions as â€˜-m68020-40â€™
!      and â€˜-m68020-60â€™ respectively.
  
!      GCC defines the macros â€˜__mcARCHâ€™ and â€˜__mcARCH__â€™ when tuning for
!      680x0 architecture ARCH.  It also defines â€˜mcARCHâ€™ unless either
!      â€˜-ansiâ€™ or a non-GNU â€˜-stdâ€™ option is used.  If GCC is tuning for a
!      range of architectures, as selected by â€˜-mtune=68020-40â€™ or
!      â€˜-mtune=68020-60â€™, it defines the macros for every architecture in
       the range.
  
!      GCC also defines the macro â€˜__mUARCH__â€™ when tuning for ColdFire
       microarchitecture UARCH, where UARCH is one of the arguments given
       above.
  
! â€˜-m68000â€™
! â€˜-mc68000â€™
       Generate output for a 68000.  This is the default when the compiler
       is configured for 68000-based systems.  It is equivalent to
!      â€˜-march=68000â€™.
  
       Use this option for microcontrollers with a 68000 or EC000 core,
       including the 68008, 68302, 68306, 68307, 68322, 68328 and 68356.
  
! â€˜-m68010â€™
       Generate output for a 68010.  This is the default when the compiler
       is configured for 68010-based systems.  It is equivalent to
!      â€˜-march=68010â€™.
  
! â€˜-m68020â€™
! â€˜-mc68020â€™
       Generate output for a 68020.  This is the default when the compiler
       is configured for 68020-based systems.  It is equivalent to
!      â€˜-march=68020â€™.
  
! â€˜-m68030â€™
       Generate output for a 68030.  This is the default when the compiler
       is configured for 68030-based systems.  It is equivalent to
!      â€˜-march=68030â€™.
  
! â€˜-m68040â€™
       Generate output for a 68040.  This is the default when the compiler
       is configured for 68040-based systems.  It is equivalent to
!      â€˜-march=68040â€™.
  
       This option inhibits the use of 68881/68882 instructions that have
       to be emulated by software on the 68040.  Use this option if your
       68040 does not have code to emulate those instructions.
  
! â€˜-m68060â€™
       Generate output for a 68060.  This is the default when the compiler
       is configured for 68060-based systems.  It is equivalent to
!      â€˜-march=68060â€™.
  
       This option inhibits the use of 68020 and 68881/68882 instructions
       that have to be emulated by software on the 68060.  Use this option
       if your 68060 does not have code to emulate those instructions.
  
! â€˜-mcpu32â€™
       Generate output for a CPU32.  This is the default when the compiler
       is configured for CPU32-based systems.  It is equivalent to
!      â€˜-march=cpu32â€™.
  
       Use this option for microcontrollers with a CPU32 or CPU32+ core,
       including the 68330, 68331, 68332, 68333, 68334, 68336, 68340,
       68341, 68349 and 68360.
  
! â€˜-m5200â€™
       Generate output for a 520X ColdFire CPU.  This is the default when
       the compiler is configured for 520X-based systems.  It is
!      equivalent to â€˜-mcpu=5206â€™, and is now deprecated in favor of that
       option.
  
       Use this option for microcontroller with a 5200 core, including the
       MCF5202, MCF5203, MCF5204 and MCF5206.
  
! â€˜-m5206eâ€™
       Generate output for a 5206e ColdFire CPU.  The option is now
!      deprecated in favor of the equivalent â€˜-mcpu=5206eâ€™.
  
! â€˜-m528xâ€™
       Generate output for a member of the ColdFire 528X family.  The
!      option is now deprecated in favor of the equivalent â€˜-mcpu=528xâ€™.
  
! â€˜-m5307â€™
       Generate output for a ColdFire 5307 CPU.  The option is now
!      deprecated in favor of the equivalent â€˜-mcpu=5307â€™.
  
! â€˜-m5407â€™
       Generate output for a ColdFire 5407 CPU.  The option is now
!      deprecated in favor of the equivalent â€˜-mcpu=5407â€™.
  
! â€˜-mcfv4eâ€™
       Generate output for a ColdFire V4e family CPU (e.g. 547x/548x).
       This includes use of hardware floating-point instructions.  The
!      option is equivalent to â€˜-mcpu=547xâ€™, and is now deprecated in
       favor of that option.
  
! â€˜-m68020-40â€™
       Generate output for a 68040, without using any of the new
       instructions.  This results in code that can run relatively
       efficiently on either a 68020/68881 or a 68030 or a 68040.  The
       generated code does use the 68881 instructions that are emulated on
       the 68040.
  
!      The option is equivalent to â€˜-march=68020â€™ â€˜-mtune=68020-40â€™.
  
! â€˜-m68020-60â€™
       Generate output for a 68060, without using any of the new
       instructions.  This results in code that can run relatively
       efficiently on either a 68020/68881 or a 68030 or a 68040.  The
       generated code does use the 68881 instructions that are emulated on
       the 68060.
  
!      The option is equivalent to â€˜-march=68020â€™ â€˜-mtune=68020-60â€™.
  
! â€˜-mhard-floatâ€™
! â€˜-m68881â€™
       Generate floating-point instructions.  This is the default for
       68020 and above, and for ColdFire devices that have an FPU.  It
!      defines the macro â€˜__HAVE_68881__â€™ on M680x0 targets and
!      â€˜__mcffpu__â€™ on ColdFire targets.
  
! â€˜-msoft-floatâ€™
       Do not generate floating-point instructions; use library calls
       instead.  This is the default for 68000, 68010, and 68832 targets.
       It is also the default for ColdFire devices that have no FPU.
  
! â€˜-mdivâ€™
! â€˜-mno-divâ€™
       Generate (do not generate) ColdFire hardware divide and remainder
!      instructions.  If â€˜-marchâ€™ is used without â€˜-mcpuâ€™, the default is
       "on" for ColdFire architectures and "off" for M680x0 architectures.
       Otherwise, the default is taken from the target CPU (either the
!      default CPU, or the one specified by â€˜-mcpuâ€™).  For example, the
!      default is "off" for â€˜-mcpu=5206â€™ and "on" for â€˜-mcpu=5206eâ€™.
  
!      GCC defines the macro â€˜__mcfhwdiv__â€™ when this option is enabled.
  
! â€˜-mshortâ€™
!      Consider type â€˜intâ€™ to be 16 bits wide, like â€˜short intâ€™.
       Additionally, parameters passed on the stack are also aligned to a
       16-bit boundary even on targets whose API mandates promotion to
       32-bit.
  
! â€˜-mno-shortâ€™
!      Do not consider type â€˜intâ€™ to be 16 bits wide.  This is the
       default.
  
! â€˜-mnobitfieldâ€™
! â€˜-mno-bitfieldâ€™
!      Do not use the bit-field instructions.  The â€˜-m68000â€™, â€˜-mcpu32â€™
!      and â€˜-m5200â€™ options imply â€˜-mnobitfieldâ€™.
  
! â€˜-mbitfieldâ€™
!      Do use the bit-field instructions.  The â€˜-m68020â€™ option implies
!      â€˜-mbitfieldâ€™.  This is the default if you use a configuration
       designed for a 68020.
  
! â€˜-mrtdâ€™
       Use a different function-calling convention, in which functions
!      that take a fixed number of arguments return with the â€˜rtdâ€™
       instruction, which pops their arguments while returning.  This
       saves one instruction in the caller since there is no need to pop
       the arguments there.
*************** given below.
*** 26631,26705 ****
       compiled with the Unix compiler.
  
       Also, you must provide function prototypes for all functions that
!      take variable numbers of arguments (including 'printf'); otherwise
       incorrect code is generated for calls to those functions.
  
       In addition, seriously incorrect code results if you call a
       function with too many arguments.  (Normally, extra arguments are
       harmlessly ignored.)
  
!      The 'rtd' instruction is supported by the 68010, 68020, 68030,
       68040, 68060 and CPU32 processors, but not by the 68000 or 5200.
  
!      The default is '-mno-rtd'.
  
! '-malign-int'
! '-mno-align-int'
!      Control whether GCC aligns 'int', 'long', 'long long', 'float',
!      'double', and 'long double' variables on a 32-bit boundary
!      ('-malign-int') or a 16-bit boundary ('-mno-align-int').  Aligning
       variables on 32-bit boundaries produces code that runs somewhat
       faster on processors with 32-bit busses at the expense of more
       memory.
  
!      *Warning:* if you use the '-malign-int' switch, GCC aligns
       structures containing the above types differently than most
       published application binary interface specifications for the m68k.
  
       Use the pc-relative addressing mode of the 68000 directly, instead
       of using a global offset table.  At present, this option implies
!      '-fpic', allowing at most a 16-bit offset for pc-relative
!      addressing.  '-fPIC' is not presently supported with '-mpcrel',
       though this could be supported for 68020 and higher processors.
  
! '-mno-strict-align'
! '-mstrict-align'
       Do not (do) assume that unaligned memory references are handled by
       the system.
  
! '-msep-data'
       Generate code that allows the data segment to be located in a
       different area of memory from the text segment.  This allows for
       execute-in-place in an environment without virtual memory
!      management.  This option implies '-fPIC'.
  
! '-mno-sep-data'
       Generate code that assumes that the data segment follows the text
       segment.  This is the default.
  
! '-mid-shared-library'
       Generate code that supports shared libraries via the library ID
       method.  This allows for execute-in-place and shared libraries in
       an environment without virtual memory management.  This option
!      implies '-fPIC'.
  
! '-mno-id-shared-library'
       Generate code that doesn't assume ID-based shared libraries are
       being used.  This is the default.
  
! '-mshared-library-id=n'
       Specifies the identification number of the ID-based shared library
       being compiled.  Specifying a value of 0 generates more compact
       code; specifying other values forces the allocation of that number
       to the current library, but is no more space- or time-efficient
       than omitting this option.
  
! '-mxgot'
! '-mno-xgot'
       When generating position-independent code for ColdFire, generate
       code that works if the GOT has more than 8192 entries.  This code
       is larger and slower than code generated without this option.  On
!      M680x0 processors, this option is not needed; '-fPIC' suffices.
  
       GCC normally uses a single instruction to load values from the GOT.
       While this is relatively efficient, it only works if the GOT is
--- 26639,26713 ----
       compiled with the Unix compiler.
  
       Also, you must provide function prototypes for all functions that
!      take variable numbers of arguments (including â€˜printfâ€™); otherwise
       incorrect code is generated for calls to those functions.
  
       In addition, seriously incorrect code results if you call a
       function with too many arguments.  (Normally, extra arguments are
       harmlessly ignored.)
  
!      The â€˜rtdâ€™ instruction is supported by the 68010, 68020, 68030,
       68040, 68060 and CPU32 processors, but not by the 68000 or 5200.
  
!      The default is â€˜-mno-rtdâ€™.
  
! â€˜-malign-intâ€™
! â€˜-mno-align-intâ€™
!      Control whether GCC aligns â€˜intâ€™, â€˜longâ€™, â€˜long longâ€™, â€˜floatâ€™,
!      â€˜doubleâ€™, and â€˜long doubleâ€™ variables on a 32-bit boundary
!      (â€˜-malign-intâ€™) or a 16-bit boundary (â€˜-mno-align-intâ€™).  Aligning
       variables on 32-bit boundaries produces code that runs somewhat
       faster on processors with 32-bit busses at the expense of more
       memory.
  
!      *Warning:* if you use the â€˜-malign-intâ€™ switch, GCC aligns
       structures containing the above types differently than most
       published application binary interface specifications for the m68k.
  
       Use the pc-relative addressing mode of the 68000 directly, instead
       of using a global offset table.  At present, this option implies
!      â€˜-fpicâ€™, allowing at most a 16-bit offset for pc-relative
!      addressing.  â€˜-fPICâ€™ is not presently supported with â€˜-mpcrelâ€™,
       though this could be supported for 68020 and higher processors.
  
! â€˜-mno-strict-alignâ€™
! â€˜-mstrict-alignâ€™
       Do not (do) assume that unaligned memory references are handled by
       the system.
  
! â€˜-msep-dataâ€™
       Generate code that allows the data segment to be located in a
       different area of memory from the text segment.  This allows for
       execute-in-place in an environment without virtual memory
!      management.  This option implies â€˜-fPICâ€™.
  
! â€˜-mno-sep-dataâ€™
       Generate code that assumes that the data segment follows the text
       segment.  This is the default.
  
! â€˜-mid-shared-libraryâ€™
       Generate code that supports shared libraries via the library ID
       method.  This allows for execute-in-place and shared libraries in
       an environment without virtual memory management.  This option
!      implies â€˜-fPICâ€™.
  
! â€˜-mno-id-shared-libraryâ€™
       Generate code that doesn't assume ID-based shared libraries are
       being used.  This is the default.
  
! â€˜-mshared-library-id=nâ€™
       Specifies the identification number of the ID-based shared library
       being compiled.  Specifying a value of 0 generates more compact
       code; specifying other values forces the allocation of that number
       to the current library, but is no more space- or time-efficient
       than omitting this option.
  
! â€˜-mxgotâ€™
! â€˜-mno-xgotâ€™
       When generating position-independent code for ColdFire, generate
       code that works if the GOT has more than 8192 entries.  This code
       is larger and slower than code generated without this option.  On
!      M680x0 processors, this option is not needed; â€˜-fPICâ€™ suffices.
  
       GCC normally uses a single instruction to load values from the GOT.
       While this is relatively efficient, it only works if the GOT is
*************** given below.
*** 26708,26729 ****
  
            relocation truncated to fit: R_68K_GOT16O foobar
  
!      If this happens, you should recompile your code with '-mxgot'.  It
       should then work with very large GOTs.  However, code generated
!      with '-mxgot' is less efficient, since it takes 4 instructions to
       fetch the value of a global symbol.
  
       Note that some linkers, including newer versions of the GNU linker,
       can create multiple GOTs and sort GOT entries.  If you have such a
!      linker, you should only need to use '-mxgot' when compiling a
       single object file that accesses more than 8192 GOT entries.  Very
       few do.
  
       These options have no effect unless GCC is generating
       position-independent code.
  
! '-mlong-jump-table-offsets'
!      Use 32-bit offsets in 'switch' tables.  The default is to use
       16-bit offsets.
  
  
--- 26716,26737 ----
  
            relocation truncated to fit: R_68K_GOT16O foobar
  
!      If this happens, you should recompile your code with â€˜-mxgotâ€™.  It
       should then work with very large GOTs.  However, code generated
!      with â€˜-mxgotâ€™ is less efficient, since it takes 4 instructions to
       fetch the value of a global symbol.
  
       Note that some linkers, including newer versions of the GNU linker,
       can create multiple GOTs and sort GOT entries.  If you have such a
!      linker, you should only need to use â€˜-mxgotâ€™ when compiling a
       single object file that accesses more than 8192 GOT entries.  Very
       few do.
  
       These options have no effect unless GCC is generating
       position-independent code.
  
! â€˜-mlong-jump-table-offsetsâ€™
!      Use 32-bit offsets in â€˜switchâ€™ tables.  The default is to use
       16-bit offsets.
  
  
*************** File: gcc.info,  Node: MCore Options,  N
*** 26732,26781 ****
  3.20.27 MCore Options
  ---------------------
  
! These are the '-m' options defined for the Motorola M*Core processors.
  
! '-mhardlit'
! '-mno-hardlit'
       Inline constants into the code stream if it can be done in two
       instructions or less.
  
! '-mdiv'
! '-mno-div'
       Use the divide instruction.  (Enabled by default).
  
! '-mrelax-immediate'
! '-mno-relax-immediate'
       Allow arbitrary-sized immediates in bit operations.
  
! '-mwide-bitfields'
! '-mno-wide-bitfields'
!      Always treat bit-fields as 'int'-sized.
  
! '-m4byte-functions'
! '-mno-4byte-functions'
       Force all functions to be aligned to a 4-byte boundary.
  
! '-mcallgraph-data'
! '-mno-callgraph-data'
       Emit callgraph information.
  
! '-mslow-bytes'
! '-mno-slow-bytes'
       Prefer word access when reading byte quantities.
  
! '-mlittle-endian'
! '-mbig-endian'
       Generate code for a little-endian target.
  
! '-m210'
! '-m340'
       Generate code for the 210 processor.
  
! '-mno-lsim'
       Assume that runtime support has been provided and so omit the
!      simulator library ('libsim.a)' from the linker command line.
  
! '-mstack-increment=SIZE'
       Set the maximum amount for a single stack increment operation.
       Large values can increase the speed of programs that contain
       functions that need a large amount of stack space, but they can
--- 26740,26789 ----
  3.20.27 MCore Options
  ---------------------
  
! These are the â€˜-mâ€™ options defined for the Motorola M*Core processors.
  
! â€˜-mhardlitâ€™
! â€˜-mno-hardlitâ€™
       Inline constants into the code stream if it can be done in two
       instructions or less.
  
! â€˜-mdivâ€™
! â€˜-mno-divâ€™
       Use the divide instruction.  (Enabled by default).
  
! â€˜-mrelax-immediateâ€™
! â€˜-mno-relax-immediateâ€™
       Allow arbitrary-sized immediates in bit operations.
  
! â€˜-mwide-bitfieldsâ€™
! â€˜-mno-wide-bitfieldsâ€™
!      Always treat bit-fields as â€˜intâ€™-sized.
  
! â€˜-m4byte-functionsâ€™
! â€˜-mno-4byte-functionsâ€™
       Force all functions to be aligned to a 4-byte boundary.
  
! â€˜-mcallgraph-dataâ€™
! â€˜-mno-callgraph-dataâ€™
       Emit callgraph information.
  
! â€˜-mslow-bytesâ€™
! â€˜-mno-slow-bytesâ€™
       Prefer word access when reading byte quantities.
  
! â€˜-mlittle-endianâ€™
! â€˜-mbig-endianâ€™
       Generate code for a little-endian target.
  
! â€˜-m210â€™
! â€˜-m340â€™
       Generate code for the 210 processor.
  
! â€˜-mno-lsimâ€™
       Assume that runtime support has been provided and so omit the
!      simulator library (â€˜libsim.a)â€™ from the linker command line.
  
! â€˜-mstack-increment=SIZEâ€™
       Set the maximum amount for a single stack increment operation.
       Large values can increase the speed of programs that contain
       functions that need a large amount of stack space, but they can
*************** File: gcc.info,  Node: MicroBlaze Option
*** 26788,26879 ****
  3.20.28 MicroBlaze Options
  --------------------------
  
! '-msoft-float'
       Use software emulation for floating point (default).
  
! '-mhard-float'
       Use hardware floating-point instructions.
  
! '-mmemcpy'
!      Do not optimize block moves, use 'memcpy'.
  
! '-mno-clearbss'
!      This option is deprecated.  Use '-fno-zero-initialized-in-bss'
       instead.
  
! '-mcpu=CPU-TYPE'
       Use features of, and schedule code for, the given CPU. Supported
!      values are in the format 'vX.YY.Z', where X is a major version, YY
       is the minor version, and Z is compatibility code.  Example values
!      are 'v3.00.a', 'v4.00.b', 'v5.00.a', 'v5.00.b', 'v6.00.a'.
  
! '-mxl-soft-mul'
       Use software multiply emulation (default).
  
! '-mxl-soft-div'
       Use software emulation for divides (default).
  
! '-mxl-barrel-shift'
       Use the hardware barrel shifter.
  
! '-mxl-pattern-compare'
       Use pattern compare instructions.
  
! '-msmall-divides'
       Use table lookup optimization for small signed integer divisions.
  
! '-mxl-stack-check'
!      This option is deprecated.  Use '-fstack-check' instead.
  
! '-mxl-gp-opt'
!      Use GP-relative '.sdata'/'.sbss' sections.
  
! '-mxl-multiply-high'
       Use multiply high instructions for high part of 32x32 multiply.
  
! '-mxl-float-convert'
       Use hardware floating-point conversion instructions.
  
! '-mxl-float-sqrt'
       Use hardware floating-point square root instruction.
  
! '-mbig-endian'
       Generate code for a big-endian target.
  
! '-mlittle-endian'
       Generate code for a little-endian target.
  
! '-mxl-reorder'
       Use reorder instructions (swap and byte reversed load/store).
  
! '-mxl-mode-APP-MODEL'
       Select application model APP-MODEL.  Valid models are
!      'executable'
!           normal executable (default), uses startup code 'crt0.o'.
  
!      'xmdstub'
            for use with Xilinx Microprocessor Debugger (XMD) based
            software intrusive debug agent called xmdstub.  This uses
!           startup file 'crt1.o' and sets the start address of the
            program to 0x800.
  
!      'bootstrap'
            for applications that are loaded using a bootloader.  This
!           model uses startup file 'crt2.o' which does not contain a
            processor reset vector handler.  This is suitable for
            transferring control on a processor reset to the bootloader
            rather than the application.
  
!      'novectors'
            for applications that do not require any of the MicroBlaze
            vectors.  This option may be useful for applications running
!           within a monitoring application.  This model uses 'crt3.o' as
            a startup file.
  
!      Option '-xl-mode-APP-MODEL' is a deprecated alias for
!      '-mxl-mode-APP-MODEL'.
  
! '-mpic-data-is-text-relative'
       Assume that the displacement between the text and data segments is
       fixed at static link time.  This allows data to be referenced by
       offset from start of text address instead of GOT since PC-relative
--- 26796,26887 ----
  3.20.28 MicroBlaze Options
  --------------------------
  
! â€˜-msoft-floatâ€™
       Use software emulation for floating point (default).
  
! â€˜-mhard-floatâ€™
       Use hardware floating-point instructions.
  
! â€˜-mmemcpyâ€™
!      Do not optimize block moves, use â€˜memcpyâ€™.
  
! â€˜-mno-clearbssâ€™
!      This option is deprecated.  Use â€˜-fno-zero-initialized-in-bssâ€™
       instead.
  
! â€˜-mcpu=CPU-TYPEâ€™
       Use features of, and schedule code for, the given CPU. Supported
!      values are in the format â€˜vX.YY.Zâ€™, where X is a major version, YY
       is the minor version, and Z is compatibility code.  Example values
!      are â€˜v3.00.aâ€™, â€˜v4.00.bâ€™, â€˜v5.00.aâ€™, â€˜v5.00.bâ€™, â€˜v6.00.aâ€™.
  
! â€˜-mxl-soft-mulâ€™
       Use software multiply emulation (default).
  
! â€˜-mxl-soft-divâ€™
       Use software emulation for divides (default).
  
! â€˜-mxl-barrel-shiftâ€™
       Use the hardware barrel shifter.
  
! â€˜-mxl-pattern-compareâ€™
       Use pattern compare instructions.
  
! â€˜-msmall-dividesâ€™
       Use table lookup optimization for small signed integer divisions.
  
! â€˜-mxl-stack-checkâ€™
!      This option is deprecated.  Use â€˜-fstack-checkâ€™ instead.
  
! â€˜-mxl-gp-optâ€™
!      Use GP-relative â€˜.sdataâ€™/â€˜.sbssâ€™ sections.
  
! â€˜-mxl-multiply-highâ€™
       Use multiply high instructions for high part of 32x32 multiply.
  
! â€˜-mxl-float-convertâ€™
       Use hardware floating-point conversion instructions.
  
! â€˜-mxl-float-sqrtâ€™
       Use hardware floating-point square root instruction.
  
! â€˜-mbig-endianâ€™
       Generate code for a big-endian target.
  
! â€˜-mlittle-endianâ€™
       Generate code for a little-endian target.
  
! â€˜-mxl-reorderâ€™
       Use reorder instructions (swap and byte reversed load/store).
  
! â€˜-mxl-mode-APP-MODELâ€™
       Select application model APP-MODEL.  Valid models are
!      â€˜executableâ€™
!           normal executable (default), uses startup code â€˜crt0.oâ€™.
  
!      â€˜xmdstubâ€™
            for use with Xilinx Microprocessor Debugger (XMD) based
            software intrusive debug agent called xmdstub.  This uses
!           startup file â€˜crt1.oâ€™ and sets the start address of the
            program to 0x800.
  
!      â€˜bootstrapâ€™
            for applications that are loaded using a bootloader.  This
!           model uses startup file â€˜crt2.oâ€™ which does not contain a
            processor reset vector handler.  This is suitable for
            transferring control on a processor reset to the bootloader
            rather than the application.
  
!      â€˜novectorsâ€™
            for applications that do not require any of the MicroBlaze
            vectors.  This option may be useful for applications running
!           within a monitoring application.  This model uses â€˜crt3.oâ€™ as
            a startup file.
  
!      Option â€˜-xl-mode-APP-MODELâ€™ is a deprecated alias for
!      â€˜-mxl-mode-APP-MODELâ€™.
  
! â€˜-mpic-data-is-text-relativeâ€™
       Assume that the displacement between the text and data segments is
       fixed at static link time.  This allows data to be referenced by
       offset from start of text address instead of GOT since PC-relative
*************** File: gcc.info,  Node: MIPS Options,  Ne
*** 26885,27119 ****
  3.20.29 MIPS Options
  --------------------
  
! '-EB'
       Generate big-endian code.
  
! '-EL'
!      Generate little-endian code.  This is the default for 'mips*el-*-*'
       configurations.
  
! '-march=ARCH'
       Generate code that runs on ARCH, which can be the name of a generic
       MIPS ISA, or the name of a particular processor.  The ISA names
!      are: 'mips1', 'mips2', 'mips3', 'mips4', 'mips32', 'mips32r2',
!      'mips32r3', 'mips32r5', 'mips32r6', 'mips64', 'mips64r2',
!      'mips64r3', 'mips64r5' and 'mips64r6'.  The processor names are:
!      '4kc', '4km', '4kp', '4ksc', '4kec', '4kem', '4kep', '4ksd', '5kc',
!      '5kf', '20kc', '24kc', '24kf2_1', '24kf1_1', '24kec', '24kef2_1',
!      '24kef1_1', '34kc', '34kf2_1', '34kf1_1', '34kn', '74kc',
!      '74kf2_1', '74kf1_1', '74kf3_2', '1004kc', '1004kf2_1',
!      '1004kf1_1', 'i6400', 'i6500', 'interaptiv', 'loongson2e',
!      'loongson2f', 'loongson3a', 'gs464', 'gs464e', 'gs264e', 'm4k',
!      'm14k', 'm14kc', 'm14ke', 'm14kec', 'm5100', 'm5101', 'octeon',
!      'octeon+', 'octeon2', 'octeon3', 'orion', 'p5600', 'p6600',
!      'r2000', 'r3000', 'r3900', 'r4000', 'r4400', 'r4600', 'r4650',
!      'r4700', 'r5900', 'r6000', 'r8000', 'rm7000', 'rm9000', 'r10000',
!      'r12000', 'r14000', 'r16000', 'sb1', 'sr71000', 'vr4100', 'vr4111',
!      'vr4120', 'vr4130', 'vr4300', 'vr5000', 'vr5400', 'vr5500', 'xlr'
!      and 'xlp'.  The special value 'from-abi' selects the most
!      compatible architecture for the selected ABI (that is, 'mips1' for
!      32-bit ABIs and 'mips3' for 64-bit ABIs).
  
!      The native Linux/GNU toolchain also supports the value 'native',
       which selects the best architecture option for the host processor.
!      '-march=native' has no effect if GCC does not recognize the
       processor.
  
!      In processor names, a final '000' can be abbreviated as 'k' (for
!      example, '-march=r2k').  Prefixes are optional, and 'vr' may be
!      written 'r'.
  
!      Names of the form 'Nf2_1' refer to processors with FPUs clocked at
!      half the rate of the core, names of the form 'Nf1_1' refer to
       processors with FPUs clocked at the same rate as the core, and
!      names of the form 'Nf3_2' refer to processors with FPUs clocked a
       ratio of 3:2 with respect to the core.  For compatibility reasons,
!      'Nf' is accepted as a synonym for 'Nf2_1' while 'Nx' and 'Bfx' are
!      accepted as synonyms for 'Nf1_1'.
  
       GCC defines two macros based on the value of this option.  The
!      first is '_MIPS_ARCH', which gives the name of target architecture,
!      as a string.  The second has the form '_MIPS_ARCH_FOO', where FOO
!      is the capitalized value of '_MIPS_ARCH'.  For example,
!      '-march=r2000' sets '_MIPS_ARCH' to '"r2000"' and defines the macro
!      '_MIPS_ARCH_R2000'.
  
!      Note that the '_MIPS_ARCH' macro uses the processor names given
       above.  In other words, it has the full prefix and does not
!      abbreviate '000' as 'k'.  In the case of 'from-abi', the macro
!      names the resolved architecture (either '"mips1"' or '"mips3"').
!      It names the default architecture when no '-march' option is given.
  
! '-mtune=ARCH'
       Optimize for ARCH.  Among other things, this option controls the
       way instructions are scheduled, and the perceived cost of
       arithmetic operations.  The list of ARCH values is the same as for
!      '-march'.
  
       When this option is not used, GCC optimizes for the processor
!      specified by '-march'.  By using '-march' and '-mtune' together, it
       is possible to generate code that runs on a family of processors,
       but optimize the code for one particular member of that family.
  
!      '-mtune' defines the macros '_MIPS_TUNE' and '_MIPS_TUNE_FOO',
!      which work in the same way as the '-march' ones described above.
  
! '-mips1'
!      Equivalent to '-march=mips1'.
  
! '-mips2'
!      Equivalent to '-march=mips2'.
  
! '-mips3'
!      Equivalent to '-march=mips3'.
  
! '-mips4'
!      Equivalent to '-march=mips4'.
  
! '-mips32'
!      Equivalent to '-march=mips32'.
  
! '-mips32r3'
!      Equivalent to '-march=mips32r3'.
  
! '-mips32r5'
!      Equivalent to '-march=mips32r5'.
  
! '-mips32r6'
!      Equivalent to '-march=mips32r6'.
  
! '-mips64'
!      Equivalent to '-march=mips64'.
  
! '-mips64r2'
!      Equivalent to '-march=mips64r2'.
  
! '-mips64r3'
!      Equivalent to '-march=mips64r3'.
  
! '-mips64r5'
!      Equivalent to '-march=mips64r5'.
  
! '-mips64r6'
!      Equivalent to '-march=mips64r6'.
  
! '-mips16'
! '-mno-mips16'
       Generate (do not generate) MIPS16 code.  If GCC is targeting a
       MIPS32 or MIPS64 architecture, it makes use of the MIPS16e ASE.
  
       MIPS16 code generation can also be controlled on a per-function
!      basis by means of 'mips16' and 'nomips16' attributes.  *Note
       Function Attributes::, for more information.
  
! '-mmips16e2'
! '-mno-mips16e2'
       Use (do not use) the MIPS16e2 ASE. This option modifies the
!      behavior of the '-mips16' option such that it targets the MIPS16e2
       ASE.
  
! '-mflip-mips16'
       Generate MIPS16 code on alternating functions.  This option is
       provided for regression testing of mixed MIPS16/non-MIPS16 code
       generation, and is not intended for ordinary use in compiling user
       code.
  
! '-minterlink-compressed'
! '-mno-interlink-compressed'
       Require (do not require) that code using the standard
       (uncompressed) MIPS ISA be link-compatible with MIPS16 and
       microMIPS code, and vice versa.
  
       For example, code using the standard ISA encoding cannot jump
       directly to MIPS16 or microMIPS code; it must either use a call or
!      an indirect jump.  '-minterlink-compressed' therefore disables
       direct jumps unless GCC knows that the target of the jump is not
       compressed.
  
! '-minterlink-mips16'
! '-mno-interlink-mips16'
!      Aliases of '-minterlink-compressed' and
!      '-mno-interlink-compressed'.  These options predate the microMIPS
       ASE and are retained for backwards compatibility.
  
! '-mabi=32'
! '-mabi=o64'
! '-mabi=n32'
! '-mabi=64'
! '-mabi=eabi'
       Generate code for the given ABI.
  
       Note that the EABI has a 32-bit and a 64-bit variant.  GCC normally
       generates 64-bit code when you select a 64-bit architecture, but
!      you can use '-mgp32' to get 32-bit code instead.
  
       For information about the O64 ABI, see
       <https://gcc.gnu.org/projects/mipso64-abi.html>.
  
       GCC supports a variant of the o32 ABI in which floating-point
       registers are 64 rather than 32 bits wide.  You can select this
!      combination with '-mabi=32' '-mfp64'.  This ABI relies on the
!      'mthc1' and 'mfhc1' instructions and is therefore only supported
       for MIPS32R2, MIPS32R3 and MIPS32R5 processors.
  
       The register assignments for arguments and return values remain the
       same, but each scalar value is passed in a single 64-bit register
       rather than a pair of 32-bit registers.  For example, scalar
!      floating-point values are returned in '$f0' only, not a '$f0'/'$f1'
       pair.  The set of call-saved registers also remains the same in
       that the even-numbered double-precision registers are saved.
  
       Two additional variants of the o32 ABI are supported to enable a
       transition from 32-bit to 64-bit registers.  These are FPXX
!      ('-mfpxx') and FP64A ('-mfp64' '-mno-odd-spreg').  The FPXX
       extension mandates that all code must execute correctly when run
       using 32-bit or 64-bit registers.  The code can be interlinked with
       either FP32 or FP64, but not both.  The FP64A extension is similar
       to the FP64 extension but forbids the use of odd-numbered
       single-precision registers.  This can be used in conjunction with
!      the 'FRE' mode of FPUs in MIPS32R5 processors and allows both FP32
       and FP64A code to interlink and run in the same process without
       changing FPU modes.
  
! '-mabicalls'
! '-mno-abicalls'
       Generate (do not generate) code that is suitable for SVR4-style
!      dynamic objects.  '-mabicalls' is the default for SVR4-based
       systems.
  
! '-mshared'
! '-mno-shared'
       Generate (do not generate) code that is fully position-independent,
       and that can therefore be linked into shared libraries.  This
!      option only affects '-mabicalls'.
  
!      All '-mabicalls' code has traditionally been position-independent,
!      regardless of options like '-fPIC' and '-fpic'.  However, as an
       extension, the GNU toolchain allows executables to use absolute
       accesses for locally-binding symbols.  It can also use shorter GP
       initialization sequences and generate direct calls to
!      locally-defined functions.  This mode is selected by '-mno-shared'.
  
!      '-mno-shared' depends on binutils 2.16 or higher and generates
       objects that can only be linked by the GNU linker.  However, the
       option does not affect the ABI of the final executable; it only
!      affects the ABI of relocatable objects.  Using '-mno-shared'
       generally makes executables both smaller and quicker.
  
!      '-mshared' is the default.
  
! '-mplt'
! '-mno-plt'
       Assume (do not assume) that the static and dynamic linkers support
!      PLTs and copy relocations.  This option only affects '-mno-shared
!      -mabicalls'.  For the n64 ABI, this option has no effect without
!      '-msym32'.
  
!      You can make '-mplt' the default by configuring GCC with
!      '--with-mips-plt'.  The default is '-mno-plt' otherwise.
  
! '-mxgot'
! '-mno-xgot'
       Lift (do not lift) the usual restrictions on the size of the global
       offset table.
  
--- 26893,27127 ----
  3.20.29 MIPS Options
  --------------------
  
! â€˜-EBâ€™
       Generate big-endian code.
  
! â€˜-ELâ€™
!      Generate little-endian code.  This is the default for â€˜mips*el-*-*â€™
       configurations.
  
! â€˜-march=ARCHâ€™
       Generate code that runs on ARCH, which can be the name of a generic
       MIPS ISA, or the name of a particular processor.  The ISA names
!      are: â€˜mips1â€™, â€˜mips2â€™, â€˜mips3â€™, â€˜mips4â€™, â€˜mips32â€™, â€˜mips32r2â€™,
!      â€˜mips32r3â€™, â€˜mips32r5â€™, â€˜mips32r6â€™, â€˜mips64â€™, â€˜mips64r2â€™,
!      â€˜mips64r3â€™, â€˜mips64r5â€™ and â€˜mips64r6â€™.  The processor names are:
!      â€˜4kcâ€™, â€˜4kmâ€™, â€˜4kpâ€™, â€˜4kscâ€™, â€˜4kecâ€™, â€˜4kemâ€™, â€˜4kepâ€™, â€˜4ksdâ€™, â€˜5kcâ€™,
!      â€˜5kfâ€™, â€˜20kcâ€™, â€˜24kcâ€™, â€˜24kf2_1â€™, â€˜24kf1_1â€™, â€˜24kecâ€™, â€˜24kef2_1â€™,
!      â€˜24kef1_1â€™, â€˜34kcâ€™, â€˜34kf2_1â€™, â€˜34kf1_1â€™, â€˜34knâ€™, â€˜74kcâ€™,
!      â€˜74kf2_1â€™, â€˜74kf1_1â€™, â€˜74kf3_2â€™, â€˜1004kcâ€™, â€˜1004kf2_1â€™,
!      â€˜1004kf1_1â€™, â€˜i6400â€™, â€˜i6500â€™, â€˜interaptivâ€™, â€˜loongson2eâ€™,
!      â€˜loongson2fâ€™, â€˜loongson3aâ€™, â€˜gs464â€™, â€˜gs464eâ€™, â€˜gs264eâ€™, â€˜m4kâ€™,
!      â€˜m14kâ€™, â€˜m14kcâ€™, â€˜m14keâ€™, â€˜m14kecâ€™, â€˜m5100â€™, â€˜m5101â€™, â€˜octeonâ€™,
!      â€˜octeon+â€™, â€˜octeon2â€™, â€˜octeon3â€™, â€˜orionâ€™, â€˜p5600â€™, â€˜p6600â€™,
!      â€˜r2000â€™, â€˜r3000â€™, â€˜r3900â€™, â€˜r4000â€™, â€˜r4400â€™, â€˜r4600â€™, â€˜r4650â€™,
!      â€˜r4700â€™, â€˜r5900â€™, â€˜r6000â€™, â€˜r8000â€™, â€˜rm7000â€™, â€˜rm9000â€™, â€˜r10000â€™,
!      â€˜r12000â€™, â€˜r14000â€™, â€˜r16000â€™, â€˜sb1â€™, â€˜sr71000â€™, â€˜vr4100â€™, â€˜vr4111â€™,
!      â€˜vr4120â€™, â€˜vr4130â€™, â€˜vr4300â€™, â€˜vr5000â€™, â€˜vr5400â€™, â€˜vr5500â€™, â€˜xlrâ€™
!      and â€˜xlpâ€™.  The special value â€˜from-abiâ€™ selects the most
!      compatible architecture for the selected ABI (that is, â€˜mips1â€™ for
!      32-bit ABIs and â€˜mips3â€™ for 64-bit ABIs).
  
!      The native Linux/GNU toolchain also supports the value â€˜nativeâ€™,
       which selects the best architecture option for the host processor.
!      â€˜-march=nativeâ€™ has no effect if GCC does not recognize the
       processor.
  
!      In processor names, a final â€˜000â€™ can be abbreviated as â€˜kâ€™ (for
!      example, â€˜-march=r2kâ€™).  Prefixes are optional, and â€˜vrâ€™ may be
!      written â€˜râ€™.
  
!      Names of the form â€˜Nf2_1â€™ refer to processors with FPUs clocked at
!      half the rate of the core, names of the form â€˜Nf1_1â€™ refer to
       processors with FPUs clocked at the same rate as the core, and
!      names of the form â€˜Nf3_2â€™ refer to processors with FPUs clocked a
       ratio of 3:2 with respect to the core.  For compatibility reasons,
!      â€˜Nfâ€™ is accepted as a synonym for â€˜Nf2_1â€™ while â€˜Nxâ€™ and â€˜Bfxâ€™ are
!      accepted as synonyms for â€˜Nf1_1â€™.
  
       GCC defines two macros based on the value of this option.  The
!      first is â€˜_MIPS_ARCHâ€™, which gives the name of target architecture,
!      as a string.  The second has the form â€˜_MIPS_ARCH_FOOâ€™, where FOO
!      is the capitalized value of â€˜_MIPS_ARCHâ€™.  For example,
!      â€˜-march=r2000â€™ sets â€˜_MIPS_ARCHâ€™ to â€˜"r2000"â€™ and defines the macro
!      â€˜_MIPS_ARCH_R2000â€™.
  
!      Note that the â€˜_MIPS_ARCHâ€™ macro uses the processor names given
       above.  In other words, it has the full prefix and does not
!      abbreviate â€˜000â€™ as â€˜kâ€™.  In the case of â€˜from-abiâ€™, the macro
!      names the resolved architecture (either â€˜"mips1"â€™ or â€˜"mips3"â€™).
!      It names the default architecture when no â€˜-marchâ€™ option is given.
  
! â€˜-mtune=ARCHâ€™
       Optimize for ARCH.  Among other things, this option controls the
       way instructions are scheduled, and the perceived cost of
       arithmetic operations.  The list of ARCH values is the same as for
!      â€˜-marchâ€™.
  
       When this option is not used, GCC optimizes for the processor
!      specified by â€˜-marchâ€™.  By using â€˜-marchâ€™ and â€˜-mtuneâ€™ together, it
       is possible to generate code that runs on a family of processors,
       but optimize the code for one particular member of that family.
  
!      â€˜-mtuneâ€™ defines the macros â€˜_MIPS_TUNEâ€™ and â€˜_MIPS_TUNE_FOOâ€™,
!      which work in the same way as the â€˜-marchâ€™ ones described above.
  
! â€˜-mips1â€™
!      Equivalent to â€˜-march=mips1â€™.
  
! â€˜-mips2â€™
!      Equivalent to â€˜-march=mips2â€™.
  
! â€˜-mips3â€™
!      Equivalent to â€˜-march=mips3â€™.
  
! â€˜-mips4â€™
!      Equivalent to â€˜-march=mips4â€™.
  
! â€˜-mips32â€™
!      Equivalent to â€˜-march=mips32â€™.
  
! â€˜-mips32r3â€™
!      Equivalent to â€˜-march=mips32r3â€™.
  
! â€˜-mips32r5â€™
!      Equivalent to â€˜-march=mips32r5â€™.
  
! â€˜-mips32r6â€™
!      Equivalent to â€˜-march=mips32r6â€™.
  
! â€˜-mips64â€™
!      Equivalent to â€˜-march=mips64â€™.
  
! â€˜-mips64r2â€™
!      Equivalent to â€˜-march=mips64r2â€™.
  
! â€˜-mips64r3â€™
!      Equivalent to â€˜-march=mips64r3â€™.
  
! â€˜-mips64r5â€™
!      Equivalent to â€˜-march=mips64r5â€™.
  
! â€˜-mips64r6â€™
!      Equivalent to â€˜-march=mips64r6â€™.
  
! â€˜-mips16â€™
! â€˜-mno-mips16â€™
       Generate (do not generate) MIPS16 code.  If GCC is targeting a
       MIPS32 or MIPS64 architecture, it makes use of the MIPS16e ASE.
  
       MIPS16 code generation can also be controlled on a per-function
!      basis by means of â€˜mips16â€™ and â€˜nomips16â€™ attributes.  *Note
       Function Attributes::, for more information.
  
! â€˜-mmips16e2â€™
! â€˜-mno-mips16e2â€™
       Use (do not use) the MIPS16e2 ASE. This option modifies the
!      behavior of the â€˜-mips16â€™ option such that it targets the MIPS16e2
       ASE.
  
! â€˜-mflip-mips16â€™
       Generate MIPS16 code on alternating functions.  This option is
       provided for regression testing of mixed MIPS16/non-MIPS16 code
       generation, and is not intended for ordinary use in compiling user
       code.
  
! â€˜-minterlink-compressedâ€™
! â€˜-mno-interlink-compressedâ€™
       Require (do not require) that code using the standard
       (uncompressed) MIPS ISA be link-compatible with MIPS16 and
       microMIPS code, and vice versa.
  
       For example, code using the standard ISA encoding cannot jump
       directly to MIPS16 or microMIPS code; it must either use a call or
!      an indirect jump.  â€˜-minterlink-compressedâ€™ therefore disables
       direct jumps unless GCC knows that the target of the jump is not
       compressed.
  
! â€˜-minterlink-mips16â€™
! â€˜-mno-interlink-mips16â€™
!      Aliases of â€˜-minterlink-compressedâ€™ and
!      â€˜-mno-interlink-compressedâ€™.  These options predate the microMIPS
       ASE and are retained for backwards compatibility.
  
! â€˜-mabi=32â€™
! â€˜-mabi=o64â€™
! â€˜-mabi=n32â€™
! â€˜-mabi=64â€™
! â€˜-mabi=eabiâ€™
       Generate code for the given ABI.
  
       Note that the EABI has a 32-bit and a 64-bit variant.  GCC normally
       generates 64-bit code when you select a 64-bit architecture, but
!      you can use â€˜-mgp32â€™ to get 32-bit code instead.
  
       For information about the O64 ABI, see
       <https://gcc.gnu.org/projects/mipso64-abi.html>.
  
       GCC supports a variant of the o32 ABI in which floating-point
       registers are 64 rather than 32 bits wide.  You can select this
!      combination with â€˜-mabi=32â€™ â€˜-mfp64â€™.  This ABI relies on the
!      â€˜mthc1â€™ and â€˜mfhc1â€™ instructions and is therefore only supported
       for MIPS32R2, MIPS32R3 and MIPS32R5 processors.
  
       The register assignments for arguments and return values remain the
       same, but each scalar value is passed in a single 64-bit register
       rather than a pair of 32-bit registers.  For example, scalar
!      floating-point values are returned in â€˜$f0â€™ only, not a â€˜$f0â€™/â€˜$f1â€™
       pair.  The set of call-saved registers also remains the same in
       that the even-numbered double-precision registers are saved.
  
       Two additional variants of the o32 ABI are supported to enable a
       transition from 32-bit to 64-bit registers.  These are FPXX
!      (â€˜-mfpxxâ€™) and FP64A (â€˜-mfp64â€™ â€˜-mno-odd-spregâ€™).  The FPXX
       extension mandates that all code must execute correctly when run
       using 32-bit or 64-bit registers.  The code can be interlinked with
       either FP32 or FP64, but not both.  The FP64A extension is similar
       to the FP64 extension but forbids the use of odd-numbered
       single-precision registers.  This can be used in conjunction with
!      the â€˜FREâ€™ mode of FPUs in MIPS32R5 processors and allows both FP32
       and FP64A code to interlink and run in the same process without
       changing FPU modes.
  
! â€˜-mabicallsâ€™
! â€˜-mno-abicallsâ€™
       Generate (do not generate) code that is suitable for SVR4-style
!      dynamic objects.  â€˜-mabicallsâ€™ is the default for SVR4-based
       systems.
  
! â€˜-msharedâ€™
! â€˜-mno-sharedâ€™
       Generate (do not generate) code that is fully position-independent,
       and that can therefore be linked into shared libraries.  This
!      option only affects â€˜-mabicallsâ€™.
  
!      All â€˜-mabicallsâ€™ code has traditionally been position-independent,
!      regardless of options like â€˜-fPICâ€™ and â€˜-fpicâ€™.  However, as an
       extension, the GNU toolchain allows executables to use absolute
       accesses for locally-binding symbols.  It can also use shorter GP
       initialization sequences and generate direct calls to
!      locally-defined functions.  This mode is selected by â€˜-mno-sharedâ€™.
  
!      â€˜-mno-sharedâ€™ depends on binutils 2.16 or higher and generates
       objects that can only be linked by the GNU linker.  However, the
       option does not affect the ABI of the final executable; it only
!      affects the ABI of relocatable objects.  Using â€˜-mno-sharedâ€™
       generally makes executables both smaller and quicker.
  
!      â€˜-msharedâ€™ is the default.
  
! â€˜-mpltâ€™
! â€˜-mno-pltâ€™
       Assume (do not assume) that the static and dynamic linkers support
!      PLTs and copy relocations.  This option only affects â€˜-mno-shared
!      -mabicallsâ€™.  For the n64 ABI, this option has no effect without
!      â€˜-msym32â€™.
  
!      You can make â€˜-mpltâ€™ the default by configuring GCC with
!      â€˜--with-mips-pltâ€™.  The default is â€˜-mno-pltâ€™ otherwise.
  
! â€˜-mxgotâ€™
! â€˜-mno-xgotâ€™
       Lift (do not lift) the usual restrictions on the size of the global
       offset table.
  
*************** File: gcc.info,  Node: MIPS Options,  Ne
*** 27124,27428 ****
  
            relocation truncated to fit: R_MIPS_GOT16 foobar
  
!      If this happens, you should recompile your code with '-mxgot'.
       This works with very large GOTs, although the code is also less
       efficient, since it takes three instructions to fetch the value of
       a global symbol.
  
       Note that some linkers can create multiple GOTs.  If you have such
!      a linker, you should only need to use '-mxgot' when a single object
       file accesses more than 64k's worth of GOT entries.  Very few do.
  
       These options have no effect unless GCC is generating position
       independent code.
  
! '-mgp32'
       Assume that general-purpose registers are 32 bits wide.
  
! '-mgp64'
       Assume that general-purpose registers are 64 bits wide.
  
! '-mfp32'
       Assume that floating-point registers are 32 bits wide.
  
! '-mfp64'
       Assume that floating-point registers are 64 bits wide.
  
! '-mfpxx'
       Do not assume the width of floating-point registers.
  
! '-mhard-float'
       Use floating-point coprocessor instructions.
  
! '-msoft-float'
       Do not use floating-point coprocessor instructions.  Implement
       floating-point calculations using library calls instead.
  
! '-mno-float'
!      Equivalent to '-msoft-float', but additionally asserts that the
       program being compiled does not perform any floating-point
       operations.  This option is presently supported only by some
       bare-metal MIPS configurations, where it may select a special set
       of libraries that lack all floating-point support (including, for
!      example, the floating-point 'printf' formats).  If code compiled
!      with '-mno-float' accidentally contains floating-point operations,
       it is likely to suffer a link-time or run-time failure.
  
! '-msingle-float'
       Assume that the floating-point coprocessor only supports
       single-precision operations.
  
! '-mdouble-float'
       Assume that the floating-point coprocessor supports
       double-precision operations.  This is the default.
  
! '-modd-spreg'
! '-mno-odd-spreg'
       Enable the use of odd-numbered single-precision floating-point
       registers for the o32 ABI. This is the default for processors that
       are known to support these registers.  When using the o32 FPXX ABI,
!      '-mno-odd-spreg' is set by default.
  
! '-mabs=2008'
! '-mabs=legacy'
       These options control the treatment of the special not-a-number
!      (NaN) IEEE 754 floating-point data with the 'abs.fmt' and 'neg.fmt'
       machine instructions.
  
!      By default or when '-mabs=legacy' is used the legacy treatment is
       selected.  In this case these instructions are considered
       arithmetic and avoided where correct operation is required and the
       input operand might be a NaN. A longer sequence of instructions
       that manipulate the sign bit of floating-point datum manually is
!      used instead unless the '-ffinite-math-only' option has also been
       specified.
  
!      The '-mabs=2008' option selects the IEEE 754-2008 treatment.  In
       this case these instructions are considered non-arithmetic and
       therefore operating correctly in all cases, including in particular
       where the input operand is a NaN. These instructions are therefore
       always used for the respective operations.
  
! '-mnan=2008'
! '-mnan=legacy'
       These options control the encoding of the special not-a-number
       (NaN) IEEE 754 floating-point data.
  
!      The '-mnan=legacy' option selects the legacy encoding.  In this
       case quiet NaNs (qNaNs) are denoted by the first bit of their
       trailing significand field being 0, whereas signaling NaNs (sNaNs)
       are denoted by the first bit of their trailing significand field
       being 1.
  
!      The '-mnan=2008' option selects the IEEE 754-2008 encoding.  In
       this case qNaNs are denoted by the first bit of their trailing
       significand field being 1, whereas sNaNs are denoted by the first
       bit of their trailing significand field being 0.
  
!      The default is '-mnan=legacy' unless GCC has been configured with
!      '--with-nan=2008'.
  
! '-mllsc'
! '-mno-llsc'
!      Use (do not use) 'll', 'sc', and 'sync' instructions to implement
       atomic memory built-in functions.  When neither option is
       specified, GCC uses the instructions if the target architecture
       supports them.
  
!      '-mllsc' is useful if the runtime environment can emulate the
!      instructions and '-mno-llsc' can be useful when compiling for
       nonstandard ISAs.  You can make either option the default by
!      configuring GCC with '--with-llsc' and '--without-llsc'
!      respectively.  '--with-llsc' is the default for some
       configurations; see the installation documentation for details.
  
! '-mdsp'
! '-mno-dsp'
       Use (do not use) revision 1 of the MIPS DSP ASE.  *Note MIPS DSP
       Built-in Functions::.  This option defines the preprocessor macro
!      '__mips_dsp'.  It also defines '__mips_dsp_rev' to 1.
  
! '-mdspr2'
! '-mno-dspr2'
       Use (do not use) revision 2 of the MIPS DSP ASE.  *Note MIPS DSP
       Built-in Functions::.  This option defines the preprocessor macros
!      '__mips_dsp' and '__mips_dspr2'.  It also defines '__mips_dsp_rev'
       to 2.
  
! '-msmartmips'
! '-mno-smartmips'
       Use (do not use) the MIPS SmartMIPS ASE.
  
! '-mpaired-single'
! '-mno-paired-single'
       Use (do not use) paired-single floating-point instructions.  *Note
       MIPS Paired-Single Support::.  This option requires hardware
       floating-point support to be enabled.
  
! '-mdmx'
! '-mno-mdmx'
       Use (do not use) MIPS Digital Media Extension instructions.  This
       option can only be used when generating 64-bit code and requires
       hardware floating-point support to be enabled.
  
! '-mips3d'
! '-mno-mips3d'
       Use (do not use) the MIPS-3D ASE.  *Note MIPS-3D Built-in
!      Functions::.  The option '-mips3d' implies '-mpaired-single'.
  
! '-mmicromips'
! '-mno-micromips'
       Generate (do not generate) microMIPS code.
  
       MicroMIPS code generation can also be controlled on a per-function
!      basis by means of 'micromips' and 'nomicromips' attributes.  *Note
       Function Attributes::, for more information.
  
! '-mmt'
! '-mno-mt'
       Use (do not use) MT Multithreading instructions.
  
! '-mmcu'
! '-mno-mcu'
       Use (do not use) the MIPS MCU ASE instructions.
  
! '-meva'
! '-mno-eva'
       Use (do not use) the MIPS Enhanced Virtual Addressing instructions.
  
! '-mvirt'
! '-mno-virt'
       Use (do not use) the MIPS Virtualization (VZ) instructions.
  
! '-mxpa'
! '-mno-xpa'
       Use (do not use) the MIPS eXtended Physical Address (XPA)
       instructions.
  
! '-mcrc'
! '-mno-crc'
       Use (do not use) the MIPS Cyclic Redundancy Check (CRC)
       instructions.
  
! '-mginv'
! '-mno-ginv'
       Use (do not use) the MIPS Global INValidate (GINV) instructions.
  
! '-mloongson-mmi'
! '-mno-loongson-mmi'
       Use (do not use) the MIPS Loongson MultiMedia extensions
       Instructions (MMI).
  
! '-mloongson-ext'
! '-mno-loongson-ext'
       Use (do not use) the MIPS Loongson EXTensions (EXT) instructions.
  
! '-mloongson-ext2'
! '-mno-loongson-ext2'
       Use (do not use) the MIPS Loongson EXTensions r2 (EXT2)
       instructions.
  
! '-mlong64'
!      Force 'long' types to be 64 bits wide.  See '-mlong32' for an
       explanation of the default and the way that the pointer size is
       determined.
  
! '-mlong32'
!      Force 'long', 'int', and pointer types to be 32 bits wide.
  
!      The default size of 'int's, 'long's and pointers depends on the
!      ABI.  All the supported ABIs use 32-bit 'int's.  The n64 ABI uses
!      64-bit 'long's, as does the 64-bit EABI; the others use 32-bit
!      'long's.  Pointers are the same size as 'long's, or the same size
       as integer registers, whichever is smaller.
  
! '-msym32'
! '-mno-sym32'
       Assume (do not assume) that all symbols have 32-bit values,
       regardless of the selected ABI.  This option is useful in
!      combination with '-mabi=64' and '-mno-abicalls' because it allows
       GCC to generate shorter and faster references to symbolic
       addresses.
  
! '-G NUM'
       Put definitions of externally-visible data in a small data section
       if that data is no bigger than NUM bytes.  GCC can then generate
!      more efficient accesses to the data; see '-mgpopt' for details.
  
!      The default '-G' option depends on the configuration.
  
! '-mlocal-sdata'
! '-mno-local-sdata'
!      Extend (do not extend) the '-G' behavior to local data too, such as
!      to static variables in C.  '-mlocal-sdata' is the default for all
       configurations.
  
       If the linker complains that an application is using too much small
       data, you might want to try rebuilding the less
!      performance-critical parts with '-mno-local-sdata'.  You might also
!      want to build large libraries with '-mno-local-sdata', so that the
       libraries leave more room for the main program.
  
! '-mextern-sdata'
! '-mno-extern-sdata'
       Assume (do not assume) that externally-defined data is in a small
!      data section if the size of that data is within the '-G' limit.
!      '-mextern-sdata' is the default for all configurations.
  
!      If you compile a module MOD with '-mextern-sdata' '-G NUM'
!      '-mgpopt', and MOD references a variable VAR that is no bigger than
       NUM bytes, you must make sure that VAR is placed in a small data
       section.  If VAR is defined by another module, you must either
!      compile that module with a high-enough '-G' setting or attach a
!      'section' attribute to VAR's definition.  If VAR is common, you
!      must link the application with a high-enough '-G' setting.
  
       The easiest way of satisfying these restrictions is to compile and
!      link every module with the same '-G' option.  However, you may wish
       to build a library that supports several different small data
       limits.  You can do this by compiling the library with the highest
!      supported '-G' setting and additionally using '-mno-extern-sdata'
       to stop the library from making assumptions about
       externally-defined data.
  
! '-mgpopt'
! '-mno-gpopt'
       Use (do not use) GP-relative accesses for symbols that are known to
!      be in a small data section; see '-G', '-mlocal-sdata' and
!      '-mextern-sdata'.  '-mgpopt' is the default for all configurations.
  
!      '-mno-gpopt' is useful for cases where the '$gp' register might not
!      hold the value of '_gp'.  For example, if the code is part of a
       library that might be used in a boot monitor, programs that call
!      boot monitor routines pass an unknown value in '$gp'.  (In such
       situations, the boot monitor itself is usually compiled with
!      '-G0'.)
  
!      '-mno-gpopt' implies '-mno-local-sdata' and '-mno-extern-sdata'.
  
! '-membedded-data'
! '-mno-embedded-data'
       Allocate variables to the read-only data section first if possible,
       then next in the small data section if possible, otherwise in data.
       This gives slightly slower code than the default, but reduces the
       amount of RAM required when executing, and thus may be preferred
       for some embedded systems.
  
! '-muninit-const-in-rodata'
! '-mno-uninit-const-in-rodata'
!      Put uninitialized 'const' variables in the read-only data section.
       This option is only meaningful in conjunction with
!      '-membedded-data'.
  
! '-mcode-readable=SETTING'
       Specify whether GCC may generate code that reads from executable
       sections.  There are three possible settings:
  
!      '-mcode-readable=yes'
            Instructions may freely access executable sections.  This is
            the default setting.
  
!      '-mcode-readable=pcrel'
            MIPS16 PC-relative load instructions can access executable
            sections, but other instructions must not do so.  This option
            is useful on 4KSc and 4KSd processors when the code TLBs have
--- 27132,27436 ----
  
            relocation truncated to fit: R_MIPS_GOT16 foobar
  
!      If this happens, you should recompile your code with â€˜-mxgotâ€™.
       This works with very large GOTs, although the code is also less
       efficient, since it takes three instructions to fetch the value of
       a global symbol.
  
       Note that some linkers can create multiple GOTs.  If you have such
!      a linker, you should only need to use â€˜-mxgotâ€™ when a single object
       file accesses more than 64k's worth of GOT entries.  Very few do.
  
       These options have no effect unless GCC is generating position
       independent code.
  
! â€˜-mgp32â€™
       Assume that general-purpose registers are 32 bits wide.
  
! â€˜-mgp64â€™
       Assume that general-purpose registers are 64 bits wide.
  
! â€˜-mfp32â€™
       Assume that floating-point registers are 32 bits wide.
  
! â€˜-mfp64â€™
       Assume that floating-point registers are 64 bits wide.
  
! â€˜-mfpxxâ€™
       Do not assume the width of floating-point registers.
  
! â€˜-mhard-floatâ€™
       Use floating-point coprocessor instructions.
  
! â€˜-msoft-floatâ€™
       Do not use floating-point coprocessor instructions.  Implement
       floating-point calculations using library calls instead.
  
! â€˜-mno-floatâ€™
!      Equivalent to â€˜-msoft-floatâ€™, but additionally asserts that the
       program being compiled does not perform any floating-point
       operations.  This option is presently supported only by some
       bare-metal MIPS configurations, where it may select a special set
       of libraries that lack all floating-point support (including, for
!      example, the floating-point â€˜printfâ€™ formats).  If code compiled
!      with â€˜-mno-floatâ€™ accidentally contains floating-point operations,
       it is likely to suffer a link-time or run-time failure.
  
! â€˜-msingle-floatâ€™
       Assume that the floating-point coprocessor only supports
       single-precision operations.
  
! â€˜-mdouble-floatâ€™
       Assume that the floating-point coprocessor supports
       double-precision operations.  This is the default.
  
! â€˜-modd-spregâ€™
! â€˜-mno-odd-spregâ€™
       Enable the use of odd-numbered single-precision floating-point
       registers for the o32 ABI. This is the default for processors that
       are known to support these registers.  When using the o32 FPXX ABI,
!      â€˜-mno-odd-spregâ€™ is set by default.
  
! â€˜-mabs=2008â€™
! â€˜-mabs=legacyâ€™
       These options control the treatment of the special not-a-number
!      (NaN) IEEE 754 floating-point data with the â€˜abs.fmtâ€™ and â€˜neg.fmtâ€™
       machine instructions.
  
!      By default or when â€˜-mabs=legacyâ€™ is used the legacy treatment is
       selected.  In this case these instructions are considered
       arithmetic and avoided where correct operation is required and the
       input operand might be a NaN. A longer sequence of instructions
       that manipulate the sign bit of floating-point datum manually is
!      used instead unless the â€˜-ffinite-math-onlyâ€™ option has also been
       specified.
  
!      The â€˜-mabs=2008â€™ option selects the IEEE 754-2008 treatment.  In
       this case these instructions are considered non-arithmetic and
       therefore operating correctly in all cases, including in particular
       where the input operand is a NaN. These instructions are therefore
       always used for the respective operations.
  
! â€˜-mnan=2008â€™
! â€˜-mnan=legacyâ€™
       These options control the encoding of the special not-a-number
       (NaN) IEEE 754 floating-point data.
  
!      The â€˜-mnan=legacyâ€™ option selects the legacy encoding.  In this
       case quiet NaNs (qNaNs) are denoted by the first bit of their
       trailing significand field being 0, whereas signaling NaNs (sNaNs)
       are denoted by the first bit of their trailing significand field
       being 1.
  
!      The â€˜-mnan=2008â€™ option selects the IEEE 754-2008 encoding.  In
       this case qNaNs are denoted by the first bit of their trailing
       significand field being 1, whereas sNaNs are denoted by the first
       bit of their trailing significand field being 0.
  
!      The default is â€˜-mnan=legacyâ€™ unless GCC has been configured with
!      â€˜--with-nan=2008â€™.
  
! â€˜-mllscâ€™
! â€˜-mno-llscâ€™
!      Use (do not use) â€˜llâ€™, â€˜scâ€™, and â€˜syncâ€™ instructions to implement
       atomic memory built-in functions.  When neither option is
       specified, GCC uses the instructions if the target architecture
       supports them.
  
!      â€˜-mllscâ€™ is useful if the runtime environment can emulate the
!      instructions and â€˜-mno-llscâ€™ can be useful when compiling for
       nonstandard ISAs.  You can make either option the default by
!      configuring GCC with â€˜--with-llscâ€™ and â€˜--without-llscâ€™
!      respectively.  â€˜--with-llscâ€™ is the default for some
       configurations; see the installation documentation for details.
  
! â€˜-mdspâ€™
! â€˜-mno-dspâ€™
       Use (do not use) revision 1 of the MIPS DSP ASE.  *Note MIPS DSP
       Built-in Functions::.  This option defines the preprocessor macro
!      â€˜__mips_dspâ€™.  It also defines â€˜__mips_dsp_revâ€™ to 1.
  
! â€˜-mdspr2â€™
! â€˜-mno-dspr2â€™
       Use (do not use) revision 2 of the MIPS DSP ASE.  *Note MIPS DSP
       Built-in Functions::.  This option defines the preprocessor macros
!      â€˜__mips_dspâ€™ and â€˜__mips_dspr2â€™.  It also defines â€˜__mips_dsp_revâ€™
       to 2.
  
! â€˜-msmartmipsâ€™
! â€˜-mno-smartmipsâ€™
       Use (do not use) the MIPS SmartMIPS ASE.
  
! â€˜-mpaired-singleâ€™
! â€˜-mno-paired-singleâ€™
       Use (do not use) paired-single floating-point instructions.  *Note
       MIPS Paired-Single Support::.  This option requires hardware
       floating-point support to be enabled.
  
! â€˜-mdmxâ€™
! â€˜-mno-mdmxâ€™
       Use (do not use) MIPS Digital Media Extension instructions.  This
       option can only be used when generating 64-bit code and requires
       hardware floating-point support to be enabled.
  
! â€˜-mips3dâ€™
! â€˜-mno-mips3dâ€™
       Use (do not use) the MIPS-3D ASE.  *Note MIPS-3D Built-in
!      Functions::.  The option â€˜-mips3dâ€™ implies â€˜-mpaired-singleâ€™.
  
! â€˜-mmicromipsâ€™
! â€˜-mno-micromipsâ€™
       Generate (do not generate) microMIPS code.
  
       MicroMIPS code generation can also be controlled on a per-function
!      basis by means of â€˜micromipsâ€™ and â€˜nomicromipsâ€™ attributes.  *Note
       Function Attributes::, for more information.
  
! â€˜-mmtâ€™
! â€˜-mno-mtâ€™
       Use (do not use) MT Multithreading instructions.
  
! â€˜-mmcuâ€™
! â€˜-mno-mcuâ€™
       Use (do not use) the MIPS MCU ASE instructions.
  
! â€˜-mevaâ€™
! â€˜-mno-evaâ€™
       Use (do not use) the MIPS Enhanced Virtual Addressing instructions.
  
! â€˜-mvirtâ€™
! â€˜-mno-virtâ€™
       Use (do not use) the MIPS Virtualization (VZ) instructions.
  
! â€˜-mxpaâ€™
! â€˜-mno-xpaâ€™
       Use (do not use) the MIPS eXtended Physical Address (XPA)
       instructions.
  
! â€˜-mcrcâ€™
! â€˜-mno-crcâ€™
       Use (do not use) the MIPS Cyclic Redundancy Check (CRC)
       instructions.
  
! â€˜-mginvâ€™
! â€˜-mno-ginvâ€™
       Use (do not use) the MIPS Global INValidate (GINV) instructions.
  
! â€˜-mloongson-mmiâ€™
! â€˜-mno-loongson-mmiâ€™
       Use (do not use) the MIPS Loongson MultiMedia extensions
       Instructions (MMI).
  
! â€˜-mloongson-extâ€™
! â€˜-mno-loongson-extâ€™
       Use (do not use) the MIPS Loongson EXTensions (EXT) instructions.
  
! â€˜-mloongson-ext2â€™
! â€˜-mno-loongson-ext2â€™
       Use (do not use) the MIPS Loongson EXTensions r2 (EXT2)
       instructions.
  
! â€˜-mlong64â€™
!      Force â€˜longâ€™ types to be 64 bits wide.  See â€˜-mlong32â€™ for an
       explanation of the default and the way that the pointer size is
       determined.
  
! â€˜-mlong32â€™
!      Force â€˜longâ€™, â€˜intâ€™, and pointer types to be 32 bits wide.
  
!      The default size of â€˜intâ€™s, â€˜longâ€™s and pointers depends on the
!      ABI.  All the supported ABIs use 32-bit â€˜intâ€™s.  The n64 ABI uses
!      64-bit â€˜longâ€™s, as does the 64-bit EABI; the others use 32-bit
!      â€˜longâ€™s.  Pointers are the same size as â€˜longâ€™s, or the same size
       as integer registers, whichever is smaller.
  
! â€˜-msym32â€™
! â€˜-mno-sym32â€™
       Assume (do not assume) that all symbols have 32-bit values,
       regardless of the selected ABI.  This option is useful in
!      combination with â€˜-mabi=64â€™ and â€˜-mno-abicallsâ€™ because it allows
       GCC to generate shorter and faster references to symbolic
       addresses.
  
! â€˜-G NUMâ€™
       Put definitions of externally-visible data in a small data section
       if that data is no bigger than NUM bytes.  GCC can then generate
!      more efficient accesses to the data; see â€˜-mgpoptâ€™ for details.
  
!      The default â€˜-Gâ€™ option depends on the configuration.
  
! â€˜-mlocal-sdataâ€™
! â€˜-mno-local-sdataâ€™
!      Extend (do not extend) the â€˜-Gâ€™ behavior to local data too, such as
!      to static variables in C.  â€˜-mlocal-sdataâ€™ is the default for all
       configurations.
  
       If the linker complains that an application is using too much small
       data, you might want to try rebuilding the less
!      performance-critical parts with â€˜-mno-local-sdataâ€™.  You might also
!      want to build large libraries with â€˜-mno-local-sdataâ€™, so that the
       libraries leave more room for the main program.
  
! â€˜-mextern-sdataâ€™
! â€˜-mno-extern-sdataâ€™
       Assume (do not assume) that externally-defined data is in a small
!      data section if the size of that data is within the â€˜-Gâ€™ limit.
!      â€˜-mextern-sdataâ€™ is the default for all configurations.
  
!      If you compile a module MOD with â€˜-mextern-sdataâ€™ â€˜-G NUMâ€™
!      â€˜-mgpoptâ€™, and MOD references a variable VAR that is no bigger than
       NUM bytes, you must make sure that VAR is placed in a small data
       section.  If VAR is defined by another module, you must either
!      compile that module with a high-enough â€˜-Gâ€™ setting or attach a
!      â€˜sectionâ€™ attribute to VAR's definition.  If VAR is common, you
!      must link the application with a high-enough â€˜-Gâ€™ setting.
  
       The easiest way of satisfying these restrictions is to compile and
!      link every module with the same â€˜-Gâ€™ option.  However, you may wish
       to build a library that supports several different small data
       limits.  You can do this by compiling the library with the highest
!      supported â€˜-Gâ€™ setting and additionally using â€˜-mno-extern-sdataâ€™
       to stop the library from making assumptions about
       externally-defined data.
  
! â€˜-mgpoptâ€™
! â€˜-mno-gpoptâ€™
       Use (do not use) GP-relative accesses for symbols that are known to
!      be in a small data section; see â€˜-Gâ€™, â€˜-mlocal-sdataâ€™ and
!      â€˜-mextern-sdataâ€™.  â€˜-mgpoptâ€™ is the default for all configurations.
  
!      â€˜-mno-gpoptâ€™ is useful for cases where the â€˜$gpâ€™ register might not
!      hold the value of â€˜_gpâ€™.  For example, if the code is part of a
       library that might be used in a boot monitor, programs that call
!      boot monitor routines pass an unknown value in â€˜$gpâ€™.  (In such
       situations, the boot monitor itself is usually compiled with
!      â€˜-G0â€™.)
  
!      â€˜-mno-gpoptâ€™ implies â€˜-mno-local-sdataâ€™ and â€˜-mno-extern-sdataâ€™.
  
! â€˜-membedded-dataâ€™
! â€˜-mno-embedded-dataâ€™
       Allocate variables to the read-only data section first if possible,
       then next in the small data section if possible, otherwise in data.
       This gives slightly slower code than the default, but reduces the
       amount of RAM required when executing, and thus may be preferred
       for some embedded systems.
  
! â€˜-muninit-const-in-rodataâ€™
! â€˜-mno-uninit-const-in-rodataâ€™
!      Put uninitialized â€˜constâ€™ variables in the read-only data section.
       This option is only meaningful in conjunction with
!      â€˜-membedded-dataâ€™.
  
! â€˜-mcode-readable=SETTINGâ€™
       Specify whether GCC may generate code that reads from executable
       sections.  There are three possible settings:
  
!      â€˜-mcode-readable=yesâ€™
            Instructions may freely access executable sections.  This is
            the default setting.
  
!      â€˜-mcode-readable=pcrelâ€™
            MIPS16 PC-relative load instructions can access executable
            sections, but other instructions must not do so.  This option
            is useful on 4KSc and 4KSd processors when the code TLBs have
*************** File: gcc.info,  Node: MIPS Options,  Ne
*** 27431,27531 ****
            interface and that, like the M4K, automatically redirect
            PC-relative loads to the instruction RAM.
  
!      '-mcode-readable=no'
            Instructions must not access executable sections.  This option
            can be useful on targets that are configured to have a dual
            instruction/data SRAM interface but that (unlike the M4K) do
            not automatically redirect PC-relative loads to the
            instruction RAM.
  
! '-msplit-addresses'
! '-mno-split-addresses'
!      Enable (disable) use of the '%hi()' and '%lo()' assembler
       relocation operators.  This option has been superseded by
!      '-mexplicit-relocs' but is retained for backwards compatibility.
  
! '-mexplicit-relocs=none'
! '-mexplicit-relocs=base'
! '-mexplicit-relocs=pcrel'
! '-mexplicit-relocs'
! '-mno-explicit-relocs'
!      These options control whether explicit relocs (such as '%gp_rel')
       are used.  The default value depends on the version of GAS when GCC
       itself was built.
  
!      The 'base' explicit-relocs support was introduced into GAS in 2001.
!      The 'pcrel' explicit-relocs support was introduced into GAS in
!      2014, which supports '%pcrel_hi' and '%pcrel_lo'.
  
! '-mcheck-zero-division'
! '-mno-check-zero-division'
       Trap (do not trap) on integer division by zero.
  
!      The default is '-mcheck-zero-division'.
  
! '-mdivide-traps'
! '-mdivide-breaks'
       MIPS systems check for division by zero by generating either a
       conditional trap or a break instruction.  Using traps results in
       smaller code, but is only supported on MIPS II and later.  Also,
       some versions of the Linux kernel have a bug that prevents trap
!      from generating the proper signal ('SIGFPE').  Use '-mdivide-traps'
       to allow conditional traps on architectures that support them and
!      '-mdivide-breaks' to force the use of breaks.
  
!      The default is usually '-mdivide-traps', but this can be overridden
!      at configure time using '--with-divide=breaks'.  Divide-by-zero
!      checks can be completely disabled using '-mno-check-zero-division'.
  
! '-mload-store-pairs'
! '-mno-load-store-pairs'
       Enable (disable) an optimization that pairs consecutive load or
       store instructions to enable load/store bonding.  This option is
       enabled by default but only takes effect when the selected
       architecture is known to support bonding.
  
! '-mstrict-align'
! '-mno-strict-align'
! '-munaligned-access'
! '-mno-unaligned-access'
       Disable (enable) direct unaligned access for MIPS Release 6.
       MIPSr6 requires load/store unaligned-access support, by hardware or
!      trap&emulate.  So '-mstrict-align' may be needed by kernel.  The
!      options '-munaligned-access' and '-mno-unaligned-access' are
       obsoleted, and only for backward-compatible.
  
! '-mmemcpy'
! '-mno-memcpy'
!      Force (do not force) the use of 'memcpy' for non-trivial block
!      moves.  The default is '-mno-memcpy', which allows GCC to inline
       most constant-sized copies.
  
! '-mlong-calls'
! '-mno-long-calls'
!      Disable (do not disable) use of the 'jal' instruction.  Calling
!      functions using 'jal' is more efficient but requires the caller and
       callee to be in the same 256 megabyte segment.
  
       This option has no effect on abicalls code.  The default is
!      '-mno-long-calls'.
  
! '-mmad'
! '-mno-mad'
!      Enable (disable) use of the 'mad', 'madu' and 'mul' instructions,
       as provided by the R4650 ISA.
  
! '-mimadd'
! '-mno-imadd'
!      Enable (disable) use of the 'madd' and 'msub' integer instructions.
!      The default is '-mimadd' on architectures that support 'madd' and
!      'msub' except for the 74k architecture where it was found to
       generate slower code.
  
! '-mfused-madd'
! '-mno-fused-madd'
       Enable (disable) use of the floating-point multiply-accumulate
       instructions, when they are available.  The default is
!      '-mfused-madd'.
  
       On the R8000 CPU when multiply-accumulate instructions are used,
       the intermediate product is calculated to infinite precision and is
--- 27439,27539 ----
            interface and that, like the M4K, automatically redirect
            PC-relative loads to the instruction RAM.
  
!      â€˜-mcode-readable=noâ€™
            Instructions must not access executable sections.  This option
            can be useful on targets that are configured to have a dual
            instruction/data SRAM interface but that (unlike the M4K) do
            not automatically redirect PC-relative loads to the
            instruction RAM.
  
! â€˜-msplit-addressesâ€™
! â€˜-mno-split-addressesâ€™
!      Enable (disable) use of the â€˜%hi()â€™ and â€˜%lo()â€™ assembler
       relocation operators.  This option has been superseded by
!      â€˜-mexplicit-relocsâ€™ but is retained for backwards compatibility.
  
! â€˜-mexplicit-relocs=noneâ€™
! â€˜-mexplicit-relocs=baseâ€™
! â€˜-mexplicit-relocs=pcrelâ€™
! â€˜-mexplicit-relocsâ€™
! â€˜-mno-explicit-relocsâ€™
!      These options control whether explicit relocs (such as â€˜%gp_relâ€™)
       are used.  The default value depends on the version of GAS when GCC
       itself was built.
  
!      The â€˜baseâ€™ explicit-relocs support was introduced into GAS in 2001.
!      The â€˜pcrelâ€™ explicit-relocs support was introduced into GAS in
!      2014, which supports â€˜%pcrel_hiâ€™ and â€˜%pcrel_loâ€™.
  
! â€˜-mcheck-zero-divisionâ€™
! â€˜-mno-check-zero-divisionâ€™
       Trap (do not trap) on integer division by zero.
  
!      The default is â€˜-mcheck-zero-divisionâ€™.
  
! â€˜-mdivide-trapsâ€™
! â€˜-mdivide-breaksâ€™
       MIPS systems check for division by zero by generating either a
       conditional trap or a break instruction.  Using traps results in
       smaller code, but is only supported on MIPS II and later.  Also,
       some versions of the Linux kernel have a bug that prevents trap
!      from generating the proper signal (â€˜SIGFPEâ€™).  Use â€˜-mdivide-trapsâ€™
       to allow conditional traps on architectures that support them and
!      â€˜-mdivide-breaksâ€™ to force the use of breaks.
  
!      The default is usually â€˜-mdivide-trapsâ€™, but this can be overridden
!      at configure time using â€˜--with-divide=breaksâ€™.  Divide-by-zero
!      checks can be completely disabled using â€˜-mno-check-zero-divisionâ€™.
  
! â€˜-mload-store-pairsâ€™
! â€˜-mno-load-store-pairsâ€™
       Enable (disable) an optimization that pairs consecutive load or
       store instructions to enable load/store bonding.  This option is
       enabled by default but only takes effect when the selected
       architecture is known to support bonding.
  
! â€˜-mstrict-alignâ€™
! â€˜-mno-strict-alignâ€™
! â€˜-munaligned-accessâ€™
! â€˜-mno-unaligned-accessâ€™
       Disable (enable) direct unaligned access for MIPS Release 6.
       MIPSr6 requires load/store unaligned-access support, by hardware or
!      trap&emulate.  So â€˜-mstrict-alignâ€™ may be needed by kernel.  The
!      options â€˜-munaligned-accessâ€™ and â€˜-mno-unaligned-accessâ€™ are
       obsoleted, and only for backward-compatible.
  
! â€˜-mmemcpyâ€™
! â€˜-mno-memcpyâ€™
!      Force (do not force) the use of â€˜memcpyâ€™ for non-trivial block
!      moves.  The default is â€˜-mno-memcpyâ€™, which allows GCC to inline
       most constant-sized copies.
  
! â€˜-mlong-callsâ€™
! â€˜-mno-long-callsâ€™
!      Disable (do not disable) use of the â€˜jalâ€™ instruction.  Calling
!      functions using â€˜jalâ€™ is more efficient but requires the caller and
       callee to be in the same 256 megabyte segment.
  
       This option has no effect on abicalls code.  The default is
!      â€˜-mno-long-callsâ€™.
  
! â€˜-mmadâ€™
! â€˜-mno-madâ€™
!      Enable (disable) use of the â€˜madâ€™, â€˜maduâ€™ and â€˜mulâ€™ instructions,
       as provided by the R4650 ISA.
  
! â€˜-mimaddâ€™
! â€˜-mno-imaddâ€™
!      Enable (disable) use of the â€˜maddâ€™ and â€˜msubâ€™ integer instructions.
!      The default is â€˜-mimaddâ€™ on architectures that support â€˜maddâ€™ and
!      â€˜msubâ€™ except for the 74k architecture where it was found to
       generate slower code.
  
! â€˜-mfused-maddâ€™
! â€˜-mno-fused-maddâ€™
       Enable (disable) use of the floating-point multiply-accumulate
       instructions, when they are available.  The default is
!      â€˜-mfused-maddâ€™.
  
       On the R8000 CPU when multiply-accumulate instructions are used,
       the intermediate product is calculated to infinite precision and is
*************** File: gcc.info,  Node: MIPS Options,  Ne
*** 27534,27618 ****
       numerically identical to the equivalent computation using separate
       multiply, add, subtract and negate instructions.
  
! '-nocpp'
       Tell the MIPS assembler to not run its preprocessor over user
!      assembler files (with a '.s' suffix) when assembling them.
  
! '-mfix-24k'
! '-mno-fix-24k'
       Work around the 24K E48 (lost data on stores during refill) errata.
       The workarounds are implemented by the assembler rather than by
       GCC.
  
! '-mfix-r4000'
! '-mno-fix-r4000'
       Work around certain R4000 CPU errata:
!         - A double-word or a variable shift may give an incorrect result
            if executed immediately after starting an integer division.
!         - A double-word or a variable shift may give an incorrect result
            if executed while an integer multiplication is in progress.
!         - An integer division may give an incorrect result if started in
            a delay slot of a taken branch or a jump.
  
! '-mfix-r4400'
! '-mno-fix-r4400'
       Work around certain R4400 CPU errata:
!         - A double-word or a variable shift may give an incorrect result
            if executed immediately after starting an integer division.
  
! '-mfix-r10000'
! '-mno-fix-r10000'
       Work around certain R10000 errata:
!         - 'll'/'sc' sequences may not behave atomically on revisions
            prior to 3.0.  They may deadlock on revisions 2.6 and earlier.
  
       This option can only be used if the target architecture supports
!      branch-likely instructions.  '-mfix-r10000' is the default when
!      '-march=r10000' is used; '-mno-fix-r10000' is the default
       otherwise.
  
! '-mfix-r5900'
! '-mno-fix-r5900'
       Do not attempt to schedule the preceding instruction into the delay
       slot of a branch instruction placed at the end of a short loop of
!      six instructions or fewer and always schedule a 'nop' instruction
       there instead.  The short loop bug under certain conditions causes
       loops to execute only once or twice, due to a hardware bug in the
       R5900 chip.  The workaround is implemented by the assembler rather
       than by GCC.
  
! '-mfix-rm7000'
! '-mno-fix-rm7000'
!      Work around the RM7000 'dmult'/'dmultu' errata.  The workarounds
       are implemented by the assembler rather than by GCC.
  
! '-mfix-vr4120'
! '-mno-fix-vr4120'
       Work around certain VR4120 errata:
!         - 'dmultu' does not always produce the correct result.
!         - 'div' and 'ddiv' do not always produce the correct result if
            one of the operands is negative.
       The workarounds for the division errata rely on special functions
!      in 'libgcc.a'.  At present, these functions are only provided by
!      the 'mips64vr*-elf' configurations.
  
       Other VR4120 errata require a NOP to be inserted between certain
       pairs of instructions.  These errata are handled by the assembler,
       not by GCC itself.
  
! '-mfix-vr4130'
!      Work around the VR4130 'mflo'/'mfhi' errata.  The workarounds are
       implemented by the assembler rather than by GCC, although GCC
!      avoids using 'mflo' and 'mfhi' if the VR4130 'macc', 'macchi',
!      'dmacc' and 'dmacchi' instructions are available instead.
  
! '-mfix-sb1'
! '-mno-fix-sb1'
       Work around certain SB-1 CPU core errata.  (This flag currently
       works around the SB-1 revision 2 "F1" and "F2" floating-point
       errata.)
  
! '-mr10k-cache-barrier=SETTING'
       Specify whether GCC should insert cache barriers to avoid the side
       effects of speculation on R10K processors.
  
--- 27542,27626 ----
       numerically identical to the equivalent computation using separate
       multiply, add, subtract and negate instructions.
  
! â€˜-nocppâ€™
       Tell the MIPS assembler to not run its preprocessor over user
!      assembler files (with a â€˜.sâ€™ suffix) when assembling them.
  
! â€˜-mfix-24kâ€™
! â€˜-mno-fix-24kâ€™
       Work around the 24K E48 (lost data on stores during refill) errata.
       The workarounds are implemented by the assembler rather than by
       GCC.
  
! â€˜-mfix-r4000â€™
! â€˜-mno-fix-r4000â€™
       Work around certain R4000 CPU errata:
!         âˆ’ A double-word or a variable shift may give an incorrect result
            if executed immediately after starting an integer division.
!         âˆ’ A double-word or a variable shift may give an incorrect result
            if executed while an integer multiplication is in progress.
!         âˆ’ An integer division may give an incorrect result if started in
            a delay slot of a taken branch or a jump.
  
! â€˜-mfix-r4400â€™
! â€˜-mno-fix-r4400â€™
       Work around certain R4400 CPU errata:
!         âˆ’ A double-word or a variable shift may give an incorrect result
            if executed immediately after starting an integer division.
  
! â€˜-mfix-r10000â€™
! â€˜-mno-fix-r10000â€™
       Work around certain R10000 errata:
!         âˆ’ â€˜llâ€™/â€˜scâ€™ sequences may not behave atomically on revisions
            prior to 3.0.  They may deadlock on revisions 2.6 and earlier.
  
       This option can only be used if the target architecture supports
!      branch-likely instructions.  â€˜-mfix-r10000â€™ is the default when
!      â€˜-march=r10000â€™ is used; â€˜-mno-fix-r10000â€™ is the default
       otherwise.
  
! â€˜-mfix-r5900â€™
! â€˜-mno-fix-r5900â€™
       Do not attempt to schedule the preceding instruction into the delay
       slot of a branch instruction placed at the end of a short loop of
!      six instructions or fewer and always schedule a â€˜nopâ€™ instruction
       there instead.  The short loop bug under certain conditions causes
       loops to execute only once or twice, due to a hardware bug in the
       R5900 chip.  The workaround is implemented by the assembler rather
       than by GCC.
  
! â€˜-mfix-rm7000â€™
! â€˜-mno-fix-rm7000â€™
!      Work around the RM7000 â€˜dmultâ€™/â€˜dmultuâ€™ errata.  The workarounds
       are implemented by the assembler rather than by GCC.
  
! â€˜-mfix-vr4120â€™
! â€˜-mno-fix-vr4120â€™
       Work around certain VR4120 errata:
!         âˆ’ â€˜dmultuâ€™ does not always produce the correct result.
!         âˆ’ â€˜divâ€™ and â€˜ddivâ€™ do not always produce the correct result if
            one of the operands is negative.
       The workarounds for the division errata rely on special functions
!      in â€˜libgcc.aâ€™.  At present, these functions are only provided by
!      the â€˜mips64vr*-elfâ€™ configurations.
  
       Other VR4120 errata require a NOP to be inserted between certain
       pairs of instructions.  These errata are handled by the assembler,
       not by GCC itself.
  
! â€˜-mfix-vr4130â€™
!      Work around the VR4130 â€˜mfloâ€™/â€˜mfhiâ€™ errata.  The workarounds are
       implemented by the assembler rather than by GCC, although GCC
!      avoids using â€˜mfloâ€™ and â€˜mfhiâ€™ if the VR4130 â€˜maccâ€™, â€˜macchiâ€™,
!      â€˜dmaccâ€™ and â€˜dmacchiâ€™ instructions are available instead.
  
! â€˜-mfix-sb1â€™
! â€˜-mno-fix-sb1â€™
       Work around certain SB-1 CPU core errata.  (This flag currently
       works around the SB-1 revision 2 "F1" and "F2" floating-point
       errata.)
  
! â€˜-mr10k-cache-barrier=SETTINGâ€™
       Specify whether GCC should insert cache barriers to avoid the side
       effects of speculation on R10K processors.
  
*************** File: gcc.info,  Node: MIPS Options,  Ne
*** 27633,27639 ****
  
       One workaround is to insert cache barrier instructions before every
       memory access that might be speculatively executed and that might
!      have side effects even if aborted.  '-mr10k-cache-barrier=SETTING'
       controls GCC's implementation of this workaround.  It assumes that
       aborted accesses to any byte in the following regions does not have
       side effects:
--- 27641,27647 ----
  
       One workaround is to insert cache barrier instructions before every
       memory access that might be speculatively executed and that might
!      have side effects even if aborted.  â€˜-mr10k-cache-barrier=SETTINGâ€™
       controls GCC's implementation of this workaround.  It assumes that
       aborted accesses to any byte in the following regions does not have
       side effects:
*************** File: gcc.info,  Node: MIPS Options,  Ne
*** 27652,27696 ****
  
            void foo (void);
  
!      then the implementation of 'foo' must allow 'j foo' and 'jal foo'
       to be executed speculatively.  GCC honors this restriction for
       functions it compiles itself.  It expects non-GCC functions (such
       as hand-written assembly code) to do the same.
  
       The option has three forms:
  
!      '-mr10k-cache-barrier=load-store'
            Insert a cache barrier before a load or store that might be
            speculatively executed and that might have side effects even
            if aborted.
  
!      '-mr10k-cache-barrier=store'
            Insert a cache barrier before a store that might be
            speculatively executed and that might have side effects even
            if aborted.
  
!      '-mr10k-cache-barrier=none'
            Disable the insertion of cache barriers.  This is the default
            setting.
  
! '-mflush-func=FUNC'
! '-mno-flush-func'
       Specifies the function to call to flush the I and D caches, or to
       not call any such function.  If called, the function must take the
!      same arguments as the common '_flush_func', that is, the address of
       the memory range for which the cache is being flushed, the size of
       the memory range, and the number 3 (to flush both caches).  The
       default depends on the target GCC was configured for, but commonly
!      is either '_flush_func' or '__cpu_flush'.
  
! '-mbranch-cost=NUM'
       Set the cost of branches to roughly NUM "simple" instructions.
       This cost is only a heuristic and is not guaranteed to produce
       consistent results across releases.  A zero cost redundantly
!      selects the default, which is based on the '-mtune' setting.
  
! '-mbranch-likely'
! '-mno-branch-likely'
       Enable or disable use of Branch Likely instructions, regardless of
       the default for the selected architecture.  By default, Branch
       Likely instructions may be generated if they are supported by the
--- 27660,27704 ----
  
            void foo (void);
  
!      then the implementation of â€˜fooâ€™ must allow â€˜j fooâ€™ and â€˜jal fooâ€™
       to be executed speculatively.  GCC honors this restriction for
       functions it compiles itself.  It expects non-GCC functions (such
       as hand-written assembly code) to do the same.
  
       The option has three forms:
  
!      â€˜-mr10k-cache-barrier=load-storeâ€™
            Insert a cache barrier before a load or store that might be
            speculatively executed and that might have side effects even
            if aborted.
  
!      â€˜-mr10k-cache-barrier=storeâ€™
            Insert a cache barrier before a store that might be
            speculatively executed and that might have side effects even
            if aborted.
  
!      â€˜-mr10k-cache-barrier=noneâ€™
            Disable the insertion of cache barriers.  This is the default
            setting.
  
! â€˜-mflush-func=FUNCâ€™
! â€˜-mno-flush-funcâ€™
       Specifies the function to call to flush the I and D caches, or to
       not call any such function.  If called, the function must take the
!      same arguments as the common â€˜_flush_funcâ€™, that is, the address of
       the memory range for which the cache is being flushed, the size of
       the memory range, and the number 3 (to flush both caches).  The
       default depends on the target GCC was configured for, but commonly
!      is either â€˜_flush_funcâ€™ or â€˜__cpu_flushâ€™.
  
! â€˜-mbranch-cost=NUMâ€™
       Set the cost of branches to roughly NUM "simple" instructions.
       This cost is only a heuristic and is not guaranteed to produce
       consistent results across releases.  A zero cost redundantly
!      selects the default, which is based on the â€˜-mtuneâ€™ setting.
  
! â€˜-mbranch-likelyâ€™
! â€˜-mno-branch-likelyâ€™
       Enable or disable use of Branch Likely instructions, regardless of
       the default for the selected architecture.  By default, Branch
       Likely instructions may be generated if they are supported by the
*************** File: gcc.info,  Node: MIPS Options,  Ne
*** 27700,27715 ****
       default because the MIPS32 and MIPS64 architectures specifically
       deprecate their use.
  
! '-mcompact-branches=never'
! '-mcompact-branches=optimal'
! '-mcompact-branches=always'
       These options control which form of branches will be generated.
!      The default is '-mcompact-branches=optimal'.
  
!      The '-mcompact-branches=never' option ensures that compact branch
       instructions will never be generated.
  
!      The '-mcompact-branches=always' option ensures that a compact
       branch instruction will be generated if available for MIPS Release
       6 onwards.  If a compact branch instruction is not available (or
       pre-R6), a delay slot form of the branch will be used instead.
--- 27708,27723 ----
       default because the MIPS32 and MIPS64 architectures specifically
       deprecate their use.
  
! â€˜-mcompact-branches=neverâ€™
! â€˜-mcompact-branches=optimalâ€™
! â€˜-mcompact-branches=alwaysâ€™
       These options control which form of branches will be generated.
!      The default is â€˜-mcompact-branches=optimalâ€™.
  
!      The â€˜-mcompact-branches=neverâ€™ option ensures that compact branch
       instructions will never be generated.
  
!      The â€˜-mcompact-branches=alwaysâ€™ option ensures that a compact
       branch instruction will be generated if available for MIPS Release
       6 onwards.  If a compact branch instruction is not available (or
       pre-R6), a delay slot form of the branch will be used instead.
*************** File: gcc.info,  Node: MIPS Options,  Ne
*** 27718,27730 ****
       now.  The behavior for MIPS16/microMIPS may change in future, since
       they do have some compact branch instructions.
  
!      The '-mcompact-branches=optimal' option will cause a delay slot
       branch to be used if one is available in the current ISA and the
       delay slot is successfully filled.  If the delay slot is not
       filled, a compact branch will be chosen if one is available.
  
! '-mfp-exceptions'
! '-mno-fp-exceptions'
       Specifies whether FP exceptions are enabled.  This affects how FP
       instructions are scheduled for some processors.  The default is
       that FP exceptions are enabled.
--- 27726,27738 ----
       now.  The behavior for MIPS16/microMIPS may change in future, since
       they do have some compact branch instructions.
  
!      The â€˜-mcompact-branches=optimalâ€™ option will cause a delay slot
       branch to be used if one is available in the current ISA and the
       delay slot is successfully filled.  If the delay slot is not
       filled, a compact branch will be chosen if one is available.
  
! â€˜-mfp-exceptionsâ€™
! â€˜-mno-fp-exceptionsâ€™
       Specifies whether FP exceptions are enabled.  This affects how FP
       instructions are scheduled for some processors.  The default is
       that FP exceptions are enabled.
*************** File: gcc.info,  Node: MIPS Options,  Ne
*** 27733,27740 ****
       are emitting 64-bit code, then we can use both FP pipes.
       Otherwise, we can only use one FP pipe.
  
! '-mvr4130-align'
! '-mno-vr4130-align'
       The VR4130 pipeline is two-way superscalar, but can only issue two
       instructions together if the first one is 8-byte aligned.  When
       this option is enabled, GCC aligns pairs of instructions that it
--- 27741,27748 ----
       are emitting 64-bit code, then we can use both FP pipes.
       Otherwise, we can only use one FP pipe.
  
! â€˜-mvr4130-alignâ€™
! â€˜-mno-vr4130-alignâ€™
       The VR4130 pipeline is two-way superscalar, but can only issue two
       instructions together if the first one is 8-byte aligned.  When
       this option is enabled, GCC aligns pairs of instructions that it
*************** File: gcc.info,  Node: MIPS Options,  Ne
*** 27742,27791 ****
  
       This option only has an effect when optimizing for the VR4130.  It
       normally makes code faster, but at the expense of making it bigger.
!      It is enabled by default at optimization level '-O3'.
  
! '-msynci'
! '-mno-synci'
!      Enable (disable) generation of 'synci' instructions on
!      architectures that support it.  The 'synci' instructions (if
!      enabled) are generated when '__builtin___clear_cache' is compiled.
  
!      This option defaults to '-mno-synci', but the default can be
!      overridden by configuring GCC with '--with-synci'.
  
       When compiling code for single processor systems, it is generally
!      safe to use 'synci'.  However, on many multi-core (SMP) systems, it
       does not invalidate the instruction caches on all cores and may
       lead to undefined behavior.
  
! '-mrelax-pic-calls'
! '-mno-relax-pic-calls'
       Try to turn PIC calls that are normally dispatched via register
!      '$25' into direct calls.  This is only possible if the linker can
       resolve the destination at link time and if the destination is
       within range for a direct call.
  
!      '-mrelax-pic-calls' is the default if GCC was configured to use an
!      assembler and a linker that support the '.reloc' assembly directive
!      and '-mexplicit-relocs' is in effect.  With '-mno-explicit-relocs',
       this optimization can be performed by the assembler and the linker
       alone without help from the compiler.
  
! '-mmcount-ra-address'
! '-mno-mcount-ra-address'
!      Emit (do not emit) code that allows '_mcount' to modify the calling
       function's return address.  When enabled, this option extends the
!      usual '_mcount' interface with a new RA-ADDRESS parameter, which
!      has type 'intptr_t *' and is passed in register '$12'.  '_mcount'
       can then modify the return address by doing both of the following:
!         * Returning the new address in register '$31'.
!         * Storing the new address in '*RA-ADDRESS', if RA-ADDRESS is
            nonnull.
  
!      The default is '-mno-mcount-ra-address'.
  
! '-mframe-header-opt'
! '-mno-frame-header-opt'
       Enable (disable) frame header optimization in the o32 ABI. When
       using the o32 ABI, calling functions will allocate 16 bytes on the
       stack for the called function to write out register arguments.
--- 27750,27799 ----
  
       This option only has an effect when optimizing for the VR4130.  It
       normally makes code faster, but at the expense of making it bigger.
!      It is enabled by default at optimization level â€˜-O3â€™.
  
! â€˜-msynciâ€™
! â€˜-mno-synciâ€™
!      Enable (disable) generation of â€˜synciâ€™ instructions on
!      architectures that support it.  The â€˜synciâ€™ instructions (if
!      enabled) are generated when â€˜__builtin___clear_cacheâ€™ is compiled.
  
!      This option defaults to â€˜-mno-synciâ€™, but the default can be
!      overridden by configuring GCC with â€˜--with-synciâ€™.
  
       When compiling code for single processor systems, it is generally
!      safe to use â€˜synciâ€™.  However, on many multi-core (SMP) systems, it
       does not invalidate the instruction caches on all cores and may
       lead to undefined behavior.
  
! â€˜-mrelax-pic-callsâ€™
! â€˜-mno-relax-pic-callsâ€™
       Try to turn PIC calls that are normally dispatched via register
!      â€˜$25â€™ into direct calls.  This is only possible if the linker can
       resolve the destination at link time and if the destination is
       within range for a direct call.
  
!      â€˜-mrelax-pic-callsâ€™ is the default if GCC was configured to use an
!      assembler and a linker that support the â€˜.relocâ€™ assembly directive
!      and â€˜-mexplicit-relocsâ€™ is in effect.  With â€˜-mno-explicit-relocsâ€™,
       this optimization can be performed by the assembler and the linker
       alone without help from the compiler.
  
! â€˜-mmcount-ra-addressâ€™
! â€˜-mno-mcount-ra-addressâ€™
!      Emit (do not emit) code that allows â€˜_mcountâ€™ to modify the calling
       function's return address.  When enabled, this option extends the
!      usual â€˜_mcountâ€™ interface with a new RA-ADDRESS parameter, which
!      has type â€˜intptr_t *â€™ and is passed in register â€˜$12â€™.  â€˜_mcountâ€™
       can then modify the return address by doing both of the following:
!         â€¢ Returning the new address in register â€˜$31â€™.
!         â€¢ Storing the new address in â€˜*RA-ADDRESSâ€™, if RA-ADDRESS is
            nonnull.
  
!      The default is â€˜-mno-mcount-ra-addressâ€™.
  
! â€˜-mframe-header-optâ€™
! â€˜-mno-frame-header-optâ€™
       Enable (disable) frame header optimization in the o32 ABI. When
       using the o32 ABI, calling functions will allocate 16 bytes on the
       stack for the called function to write out register arguments.
*************** File: gcc.info,  Node: MIPS Options,  Ne
*** 27794,27808 ****
  
       This optimization is off by default at all optimization levels.
  
! '-mlxc1-sxc1'
! '-mno-lxc1-sxc1'
!      When applicable, enable (disable) the generation of 'lwxc1',
!      'swxc1', 'ldxc1', 'sdxc1' instructions.  Enabled by default.
  
! '-mmadd4'
! '-mno-madd4'
       When applicable, enable (disable) the generation of 4-operand
!      'madd.s', 'madd.d' and related instructions.  Enabled by default.
  
  
  File: gcc.info,  Node: MMIX Options,  Next: MN10300 Options,  Prev: MIPS Options,  Up: Submodel Options
--- 27802,27816 ----
  
       This optimization is off by default at all optimization levels.
  
! â€˜-mlxc1-sxc1â€™
! â€˜-mno-lxc1-sxc1â€™
!      When applicable, enable (disable) the generation of â€˜lwxc1â€™,
!      â€˜swxc1â€™, â€˜ldxc1â€™, â€˜sdxc1â€™ instructions.  Enabled by default.
  
! â€˜-mmadd4â€™
! â€˜-mno-madd4â€™
       When applicable, enable (disable) the generation of 4-operand
!      â€˜madd.sâ€™, â€˜madd.dâ€™ and related instructions.  Enabled by default.
  
  
  File: gcc.info,  Node: MMIX Options,  Next: MN10300 Options,  Prev: MIPS Options,  Up: Submodel Options
*************** File: gcc.info,  Node: MMIX Options,  Ne
*** 27812,27862 ****
  
  These options are defined for the MMIX:
  
! '-mlibfuncs'
! '-mno-libfuncs'
       Specify that intrinsic library functions are being compiled,
       passing all values in registers, no matter the size.
  
! '-mepsilon'
! '-mno-epsilon'
       Generate floating-point comparison instructions that compare with
!      respect to the 'rE' epsilon register.
  
! '-mabi=mmixware'
! '-mabi=gnu'
       Generate code that passes function parameters and return values
!      that (in the called function) are seen as registers '$0' and up, as
!      opposed to the GNU ABI which uses global registers '$231' and up.
  
! '-mzero-extend'
! '-mno-zero-extend'
       When reading data from memory in sizes shorter than 64 bits, use
       (do not use) zero-extending load instructions by default, rather
       than sign-extending ones.
  
! '-mknuthdiv'
! '-mno-knuthdiv'
       Make the result of a division yielding a remainder have the same
!      sign as the divisor.  With the default, '-mno-knuthdiv', the sign
       of the remainder follows the sign of the dividend.  Both methods
       are arithmetically valid, the latter being almost exclusively used.
  
! '-mtoplevel-symbols'
! '-mno-toplevel-symbols'
!      Prepend (do not prepend) a ':' to all global symbols, so the
!      assembly code can be used with the 'PREFIX' assembly directive.
  
! '-melf'
       Generate an executable in the ELF format, rather than the default
!      'mmo' format used by the 'mmix' simulator.
  
! '-mbranch-predict'
! '-mno-branch-predict'
       Use (do not use) the probable-branch instructions, when static
       branch prediction indicates a probable branch.
  
! '-mbase-addresses'
! '-mno-base-addresses'
       Generate (do not generate) code that uses _base addresses_.  Using
       a base address automatically generates a request (handled by the
       assembler and the linker) for a constant to be set up in a global
--- 27820,27870 ----
  
  These options are defined for the MMIX:
  
! â€˜-mlibfuncsâ€™
! â€˜-mno-libfuncsâ€™
       Specify that intrinsic library functions are being compiled,
       passing all values in registers, no matter the size.
  
! â€˜-mepsilonâ€™
! â€˜-mno-epsilonâ€™
       Generate floating-point comparison instructions that compare with
!      respect to the â€˜rEâ€™ epsilon register.
  
! â€˜-mabi=mmixwareâ€™
! â€˜-mabi=gnuâ€™
       Generate code that passes function parameters and return values
!      that (in the called function) are seen as registers â€˜$0â€™ and up, as
!      opposed to the GNU ABI which uses global registers â€˜$231â€™ and up.
  
! â€˜-mzero-extendâ€™
! â€˜-mno-zero-extendâ€™
       When reading data from memory in sizes shorter than 64 bits, use
       (do not use) zero-extending load instructions by default, rather
       than sign-extending ones.
  
! â€˜-mknuthdivâ€™
! â€˜-mno-knuthdivâ€™
       Make the result of a division yielding a remainder have the same
!      sign as the divisor.  With the default, â€˜-mno-knuthdivâ€™, the sign
       of the remainder follows the sign of the dividend.  Both methods
       are arithmetically valid, the latter being almost exclusively used.
  
! â€˜-mtoplevel-symbolsâ€™
! â€˜-mno-toplevel-symbolsâ€™
!      Prepend (do not prepend) a â€˜:â€™ to all global symbols, so the
!      assembly code can be used with the â€˜PREFIXâ€™ assembly directive.
  
! â€˜-melfâ€™
       Generate an executable in the ELF format, rather than the default
!      â€˜mmoâ€™ format used by the â€˜mmixâ€™ simulator.
  
! â€˜-mbranch-predictâ€™
! â€˜-mno-branch-predictâ€™
       Use (do not use) the probable-branch instructions, when static
       branch prediction indicates a probable branch.
  
! â€˜-mbase-addressesâ€™
! â€˜-mno-base-addressesâ€™
       Generate (do not generate) code that uses _base addresses_.  Using
       a base address automatically generates a request (handled by the
       assembler and the linker) for a constant to be set up in a global
*************** These options are defined for the MMIX:
*** 27865,27874 ****
       register.  The generally leads to short and fast code, but the
       number of different data items that can be addressed is limited.
       This means that a program that uses lots of static data may require
!      '-mno-base-addresses'.
  
! '-msingle-exit'
! '-mno-single-exit'
       Force (do not force) generated code to have a single exit point in
       each function.
  
--- 27873,27882 ----
       register.  The generally leads to short and fast code, but the
       number of different data items that can be addressed is limited.
       This means that a program that uses lots of static data may require
!      â€˜-mno-base-addressesâ€™.
  
! â€˜-msingle-exitâ€™
! â€˜-mno-single-exitâ€™
       Force (do not force) generated code to have a single exit point in
       each function.
  
*************** File: gcc.info,  Node: MN10300 Options,
*** 27878,27923 ****
  3.20.31 MN10300 Options
  -----------------------
  
! These '-m' options are defined for Matsushita MN10300 architectures:
  
! '-mmult-bug'
       Generate code to avoid bugs in the multiply instructions for the
       MN10300 processors.  This is the default.
  
! '-mno-mult-bug'
       Do not generate code to avoid bugs in the multiply instructions for
       the MN10300 processors.
  
! '-mam33'
       Generate code using features specific to the AM33 processor.
  
! '-mno-am33'
       Do not generate code using features specific to the AM33 processor.
       This is the default.
  
! '-mam33-2'
       Generate code using features specific to the AM33/2.0 processor.
  
! '-mam34'
       Generate code using features specific to the AM34 processor.
  
! '-mtune=CPU-TYPE'
       Use the timing characteristics of the indicated CPU type when
       scheduling instructions.  This does not change the targeted
!      processor type.  The CPU type must be one of 'mn10300', 'am33',
!      'am33-2' or 'am34'.
  
! '-mreturn-pointer-on-d0'
       When generating a function that returns a pointer, return the
!      pointer in both 'a0' and 'd0'.  Otherwise, the pointer is returned
!      only in 'a0', and attempts to call such functions without a
       prototype result in errors.  Note that this option is on by
!      default; use '-mno-return-pointer-on-d0' to disable it.
  
! '-mno-crt0'
       Do not link in the C run-time initialization object file.
  
! '-mrelax'
       Indicate to the linker that it should perform a relaxation
       optimization pass to shorten branches, calls and absolute memory
       addresses.  This option only has an effect when used on the command
--- 27886,27931 ----
  3.20.31 MN10300 Options
  -----------------------
  
! These â€˜-mâ€™ options are defined for Matsushita MN10300 architectures:
  
! â€˜-mmult-bugâ€™
       Generate code to avoid bugs in the multiply instructions for the
       MN10300 processors.  This is the default.
  
! â€˜-mno-mult-bugâ€™
       Do not generate code to avoid bugs in the multiply instructions for
       the MN10300 processors.
  
! â€˜-mam33â€™
       Generate code using features specific to the AM33 processor.
  
! â€˜-mno-am33â€™
       Do not generate code using features specific to the AM33 processor.
       This is the default.
  
! â€˜-mam33-2â€™
       Generate code using features specific to the AM33/2.0 processor.
  
! â€˜-mam34â€™
       Generate code using features specific to the AM34 processor.
  
! â€˜-mtune=CPU-TYPEâ€™
       Use the timing characteristics of the indicated CPU type when
       scheduling instructions.  This does not change the targeted
!      processor type.  The CPU type must be one of â€˜mn10300â€™, â€˜am33â€™,
!      â€˜am33-2â€™ or â€˜am34â€™.
  
! â€˜-mreturn-pointer-on-d0â€™
       When generating a function that returns a pointer, return the
!      pointer in both â€˜a0â€™ and â€˜d0â€™.  Otherwise, the pointer is returned
!      only in â€˜a0â€™, and attempts to call such functions without a
       prototype result in errors.  Note that this option is on by
!      default; use â€˜-mno-return-pointer-on-d0â€™ to disable it.
  
! â€˜-mno-crt0â€™
       Do not link in the C run-time initialization object file.
  
! â€˜-mrelaxâ€™
       Indicate to the linker that it should perform a relaxation
       optimization pass to shorten branches, calls and absolute memory
       addresses.  This option only has an effect when used on the command
*************** These '-m' options are defined for Matsu
*** 27925,27949 ****
  
       This option makes symbolic debugging impossible.
  
! '-mliw'
       Allow the compiler to generate _Long Instruction Word_ instructions
!      if the target is the 'AM33' or later.  This is the default.  This
!      option defines the preprocessor macro '__LIW__'.
  
! '-mno-liw'
       Do not allow the compiler to generate _Long Instruction Word_
       instructions.  This option defines the preprocessor macro
!      '__NO_LIW__'.
  
! '-msetlb'
       Allow the compiler to generate the _SETLB_ and _Lcc_ instructions
!      if the target is the 'AM33' or later.  This is the default.  This
!      option defines the preprocessor macro '__SETLB__'.
  
! '-mno-setlb'
       Do not allow the compiler to generate _SETLB_ or _Lcc_
       instructions.  This option defines the preprocessor macro
!      '__NO_SETLB__'.
  
  
  File: gcc.info,  Node: Moxie Options,  Next: MSP430 Options,  Prev: MN10300 Options,  Up: Submodel Options
--- 27933,27957 ----
  
       This option makes symbolic debugging impossible.
  
! â€˜-mliwâ€™
       Allow the compiler to generate _Long Instruction Word_ instructions
!      if the target is the â€˜AM33â€™ or later.  This is the default.  This
!      option defines the preprocessor macro â€˜__LIW__â€™.
  
! â€˜-mno-liwâ€™
       Do not allow the compiler to generate _Long Instruction Word_
       instructions.  This option defines the preprocessor macro
!      â€˜__NO_LIW__â€™.
  
! â€˜-msetlbâ€™
       Allow the compiler to generate the _SETLB_ and _Lcc_ instructions
!      if the target is the â€˜AM33â€™ or later.  This is the default.  This
!      option defines the preprocessor macro â€˜__SETLB__â€™.
  
! â€˜-mno-setlbâ€™
       Do not allow the compiler to generate _SETLB_ or _Lcc_
       instructions.  This option defines the preprocessor macro
!      â€˜__NO_SETLB__â€™.
  
  
  File: gcc.info,  Node: Moxie Options,  Next: MSP430 Options,  Prev: MN10300 Options,  Up: Submodel Options
*************** File: gcc.info,  Node: Moxie Options,  N
*** 27951,27968 ****
  3.20.32 Moxie Options
  ---------------------
  
! '-meb'
!      Generate big-endian code.  This is the default for 'moxie-*-*'
       configurations.
  
! '-mel'
       Generate little-endian code.
  
! '-mmul.x'
       Generate mul.x and umul.x instructions.  This is the default for
!      'moxiebox-*-*' configurations.
  
! '-mno-crt0'
       Do not link in the C run-time initialization object file.
  
  
--- 27959,27976 ----
  3.20.32 Moxie Options
  ---------------------
  
! â€˜-mebâ€™
!      Generate big-endian code.  This is the default for â€˜moxie-*-*â€™
       configurations.
  
! â€˜-melâ€™
       Generate little-endian code.
  
! â€˜-mmul.xâ€™
       Generate mul.x and umul.x instructions.  This is the default for
!      â€˜moxiebox-*-*â€™ configurations.
  
! â€˜-mno-crt0â€™
       Do not link in the C run-time initialization object file.
  
  
*************** File: gcc.info,  Node: MSP430 Options,
*** 27973,28077 ****
  
  These options are defined for the MSP430:
  
! '-masm-hex'
       Force assembly output to always use hex constants.  Normally such
       constants are signed decimals, but this option is available for
       testsuite and/or aesthetic purposes.
  
! '-mmcu='
       Select the MCU to target.  This is used to create a C preprocessor
       symbol based upon the MCU name, converted to upper case and pre-
!      and post-fixed with '__'.  This in turn is used by the 'msp430.h'
       header file to select an MCU-specific supplementary header file.
  
       The option also sets the ISA to use.  If the MCU name is one that
       is known to only support the 430 ISA then that is selected,
!      otherwise the 430X ISA is selected.  A generic MCU name of 'msp430'
       can also be used to select the 430 ISA. Similarly the generic
!      'msp430x' MCU name selects the 430X ISA.
  
       In addition an MCU-specific linker script is added to the linker
!      command line.  The script's name is the name of the MCU with '.ld'
!      appended.  Thus specifying '-mmcu=xxx' on the 'gcc' command line
!      defines the C preprocessor symbol '__XXX__' and cause the linker to
!      search for a script called 'xxx.ld'.
  
       The ISA and hardware multiply supported for the different MCUs is
!      hard-coded into GCC. However, an external 'devices.csv' file can be
       used to extend device support beyond those that have been
       hard-coded.
  
!      GCC searches for the 'devices.csv' file using the following methods
       in the given precedence order, where the first method takes
       precedence over the second which takes precedence over the third.
  
!      Include path specified with '-I' and '-L'
!           'devices.csv' is searched for in each of the directories
            specified by include paths and linker library search paths.
!      Path specified by the environment variable 'MSP430_GCC_INCLUDE_DIR'
            Define the value of the global environment variable
!           'MSP430_GCC_INCLUDE_DIR' to the full path to the directory
            containing devices.csv, and GCC will search this directory for
            devices.csv.  If devices.csv is found, this directory is also
            registered as an include path and linker library path.  Header
            files and linker scripts in this directory can therefore be
!           used without manually specifying '-I' and '-L' on the command
            line.
!      The 'msp430-elf{,bare}/include/devices' directory
!           Finally, GCC examines 'msp430-elf{,bare}/include/devices' from
            the toolchain root directory.  This directory does not exist
            in a default installation, but if the user has created it and
!           copied 'devices.csv' there, then the MCU data is read.  As
            above, this directory is also registered as an include path
            and linker library path.
  
!      If none of the above search methods find 'devices.csv', then the
       hard-coded MCU data is used.
  
! '-mwarn-mcu'
! '-mno-warn-mcu'
       This option enables or disables warnings about conflicts between
!      the MCU name specified by the '-mmcu' option and the ISA set by the
!      '-mcpu' option and/or the hardware multiply support set by the
!      '-mhwmult' option.  It also toggles warnings about unrecognized MCU
       names.  This option is on by default.
  
! '-mcpu='
!      Specifies the ISA to use.  Accepted values are 'msp430', 'msp430x'
!      and 'msp430xv2'.  This option is deprecated.  The '-mmcu=' option
       should be used to select the ISA.
  
! '-msim'
       Link to the simulator runtime libraries and linker script.
!      Overrides any scripts that would be selected by the '-mmcu='
       option.
  
! '-mlarge'
!      Use large-model addressing (20-bit pointers, 20-bit 'size_t').
  
! '-msmall'
!      Use small-model addressing (16-bit pointers, 16-bit 'size_t').
  
! '-mrelax'
       This option is passed to the assembler and linker, and allows the
       linker to perform certain optimizations that cannot be done until
       the final link.
  
! 'mhwmult='
       Describes the type of hardware multiply supported by the target.
!      Accepted values are 'none' for no hardware multiply, '16bit' for
!      the original 16-bit-only multiply supported by early MCUs.  '32bit'
!      for the 16/32-bit multiply supported by later MCUs and 'f5series'
       for the 16/32-bit multiply supported by F5-series MCUs.  A value of
!      'auto' can also be given.  This tells GCC to deduce the hardware
!      multiply support based upon the MCU name provided by the '-mmcu'
!      option.  If no '-mmcu' option is specified or if the MCU name is
       not recognized then no hardware multiply support is assumed.
!      'auto' is the default setting.
  
       Hardware multiplies are normally performed by calling a library
       routine.  This saves space in the generated code.  When compiling
!      at '-O3' or higher however the hardware multiplier is invoked
       inline.  This makes for bigger, but faster code.
  
       The hardware multiply routines disable interrupts whilst running
--- 27981,28085 ----
  
  These options are defined for the MSP430:
  
! â€˜-masm-hexâ€™
       Force assembly output to always use hex constants.  Normally such
       constants are signed decimals, but this option is available for
       testsuite and/or aesthetic purposes.
  
! â€˜-mmcu=â€™
       Select the MCU to target.  This is used to create a C preprocessor
       symbol based upon the MCU name, converted to upper case and pre-
!      and post-fixed with â€˜__â€™.  This in turn is used by the â€˜msp430.hâ€™
       header file to select an MCU-specific supplementary header file.
  
       The option also sets the ISA to use.  If the MCU name is one that
       is known to only support the 430 ISA then that is selected,
!      otherwise the 430X ISA is selected.  A generic MCU name of â€˜msp430â€™
       can also be used to select the 430 ISA. Similarly the generic
!      â€˜msp430xâ€™ MCU name selects the 430X ISA.
  
       In addition an MCU-specific linker script is added to the linker
!      command line.  The script's name is the name of the MCU with â€˜.ldâ€™
!      appended.  Thus specifying â€˜-mmcu=xxxâ€™ on the â€˜gccâ€™ command line
!      defines the C preprocessor symbol â€˜__XXX__â€™ and cause the linker to
!      search for a script called â€˜xxx.ldâ€™.
  
       The ISA and hardware multiply supported for the different MCUs is
!      hard-coded into GCC. However, an external â€˜devices.csvâ€™ file can be
       used to extend device support beyond those that have been
       hard-coded.
  
!      GCC searches for the â€˜devices.csvâ€™ file using the following methods
       in the given precedence order, where the first method takes
       precedence over the second which takes precedence over the third.
  
!      Include path specified with â€˜-Iâ€™ and â€˜-Lâ€™
!           â€˜devices.csvâ€™ is searched for in each of the directories
            specified by include paths and linker library search paths.
!      Path specified by the environment variable â€˜MSP430_GCC_INCLUDE_DIRâ€™
            Define the value of the global environment variable
!           â€˜MSP430_GCC_INCLUDE_DIRâ€™ to the full path to the directory
            containing devices.csv, and GCC will search this directory for
            devices.csv.  If devices.csv is found, this directory is also
            registered as an include path and linker library path.  Header
            files and linker scripts in this directory can therefore be
!           used without manually specifying â€˜-Iâ€™ and â€˜-Lâ€™ on the command
            line.
!      The â€˜msp430-elf{,bare}/include/devicesâ€™ directory
!           Finally, GCC examines â€˜msp430-elf{,bare}/include/devicesâ€™ from
            the toolchain root directory.  This directory does not exist
            in a default installation, but if the user has created it and
!           copied â€˜devices.csvâ€™ there, then the MCU data is read.  As
            above, this directory is also registered as an include path
            and linker library path.
  
!      If none of the above search methods find â€˜devices.csvâ€™, then the
       hard-coded MCU data is used.
  
! â€˜-mwarn-mcuâ€™
! â€˜-mno-warn-mcuâ€™
       This option enables or disables warnings about conflicts between
!      the MCU name specified by the â€˜-mmcuâ€™ option and the ISA set by the
!      â€˜-mcpuâ€™ option and/or the hardware multiply support set by the
!      â€˜-mhwmultâ€™ option.  It also toggles warnings about unrecognized MCU
       names.  This option is on by default.
  
! â€˜-mcpu=â€™
!      Specifies the ISA to use.  Accepted values are â€˜msp430â€™, â€˜msp430xâ€™
!      and â€˜msp430xv2â€™.  This option is deprecated.  The â€˜-mmcu=â€™ option
       should be used to select the ISA.
  
! â€˜-msimâ€™
       Link to the simulator runtime libraries and linker script.
!      Overrides any scripts that would be selected by the â€˜-mmcu=â€™
       option.
  
! â€˜-mlargeâ€™
!      Use large-model addressing (20-bit pointers, 20-bit â€˜size_tâ€™).
  
! â€˜-msmallâ€™
!      Use small-model addressing (16-bit pointers, 16-bit â€˜size_tâ€™).
  
! â€˜-mrelaxâ€™
       This option is passed to the assembler and linker, and allows the
       linker to perform certain optimizations that cannot be done until
       the final link.
  
! â€˜mhwmult=â€™
       Describes the type of hardware multiply supported by the target.
!      Accepted values are â€˜noneâ€™ for no hardware multiply, â€˜16bitâ€™ for
!      the original 16-bit-only multiply supported by early MCUs.  â€˜32bitâ€™
!      for the 16/32-bit multiply supported by later MCUs and â€˜f5seriesâ€™
       for the 16/32-bit multiply supported by F5-series MCUs.  A value of
!      â€˜autoâ€™ can also be given.  This tells GCC to deduce the hardware
!      multiply support based upon the MCU name provided by the â€˜-mmcuâ€™
!      option.  If no â€˜-mmcuâ€™ option is specified or if the MCU name is
       not recognized then no hardware multiply support is assumed.
!      â€˜autoâ€™ is the default setting.
  
       Hardware multiplies are normally performed by calling a library
       routine.  This saves space in the generated code.  When compiling
!      at â€˜-O3â€™ or higher however the hardware multiplier is invoked
       inline.  This makes for bigger, but faster code.
  
       The hardware multiply routines disable interrupts whilst running
*************** These options are defined for the MSP430
*** 28079,28104 ****
       makes them safe to use inside interrupt handlers as well as in
       normal code.
  
! '-minrt'
       Enable the use of a minimum runtime environment - no static
       initializers or constructors.  This is intended for
       memory-constrained devices.  The compiler includes special symbols
       in some objects that tell the linker and runtime which code
       fragments are required.
  
! '-mtiny-printf'
!      Enable reduced code size 'printf' and 'puts' library functions.
!      The 'tiny' implementations of these functions are not reentrant, so
       must be used with caution in multi-threaded applications.
  
       Support for streams has been removed and the string to be printed
!      will always be sent to stdout via the 'write' syscall.  The string
       is not buffered before it is sent to write.
  
       This option requires Newlib Nano IO, so GCC must be configured with
!      '--enable-newlib-nano-formatted-io'.
  
! '-mmax-inline-shift='
       This option takes an integer between 0 and 64 inclusive, and sets
       the maximum number of inline shift instructions which should be
       emitted to perform a shift operation by a constant amount.  When
--- 28087,28112 ----
       makes them safe to use inside interrupt handlers as well as in
       normal code.
  
! â€˜-minrtâ€™
       Enable the use of a minimum runtime environment - no static
       initializers or constructors.  This is intended for
       memory-constrained devices.  The compiler includes special symbols
       in some objects that tell the linker and runtime which code
       fragments are required.
  
! â€˜-mtiny-printfâ€™
!      Enable reduced code size â€˜printfâ€™ and â€˜putsâ€™ library functions.
!      The â€˜tinyâ€™ implementations of these functions are not reentrant, so
       must be used with caution in multi-threaded applications.
  
       Support for streams has been removed and the string to be printed
!      will always be sent to stdout via the â€˜writeâ€™ syscall.  The string
       is not buffered before it is sent to write.
  
       This option requires Newlib Nano IO, so GCC must be configured with
!      â€˜--enable-newlib-nano-formatted-ioâ€™.
  
! â€˜-mmax-inline-shift=â€™
       This option takes an integer between 0 and 64 inclusive, and sets
       the maximum number of inline shift instructions which should be
       emitted to perform a shift operation by a constant amount.  When
*************** These options are defined for the MSP430
*** 28113,28139 ****
       passed for this option is divided by 2 and the resulting value used
       instead.
  
! '-mcode-region='
! '-mdata-region='
       These options tell the compiler where to place functions and data
!      that do not have one of the 'lower', 'upper', 'either' or 'section'
!      attributes.  Possible values are 'lower', 'upper', 'either' or
!      'any'.  The first three behave like the corresponding attribute.
!      The fourth possible value - 'any' - is the default.  It leaves
       placement entirely up to the linker script and how it assigns the
!      standard sections ('.text', '.data', etc) to the memory regions.
  
! '-msilicon-errata='
       This option passes on a request to assembler to enable the fixes
       for the named silicon errata.
  
! '-msilicon-errata-warn='
       This option passes on a request to the assembler to enable warning
       messages when a silicon errata might need to be applied.
  
! '-mwarn-devices-csv'
! '-mno-warn-devices-csv'
!      Warn if 'devices.csv' is not found or there are problem parsing it
       (default: on).
  
  
--- 28121,28147 ----
       passed for this option is divided by 2 and the resulting value used
       instead.
  
! â€˜-mcode-region=â€™
! â€˜-mdata-region=â€™
       These options tell the compiler where to place functions and data
!      that do not have one of the â€˜lowerâ€™, â€˜upperâ€™, â€˜eitherâ€™ or â€˜sectionâ€™
!      attributes.  Possible values are â€˜lowerâ€™, â€˜upperâ€™, â€˜eitherâ€™ or
!      â€˜anyâ€™.  The first three behave like the corresponding attribute.
!      The fourth possible value - â€˜anyâ€™ - is the default.  It leaves
       placement entirely up to the linker script and how it assigns the
!      standard sections (â€˜.textâ€™, â€˜.dataâ€™, etc) to the memory regions.
  
! â€˜-msilicon-errata=â€™
       This option passes on a request to assembler to enable the fixes
       for the named silicon errata.
  
! â€˜-msilicon-errata-warn=â€™
       This option passes on a request to the assembler to enable warning
       messages when a silicon errata might need to be applied.
  
! â€˜-mwarn-devices-csvâ€™
! â€˜-mno-warn-devices-csvâ€™
!      Warn if â€˜devices.csvâ€™ is not found or there are problem parsing it
       (default: on).
  
  
*************** File: gcc.info,  Node: NDS32 Options,  N
*** 28144,28225 ****
  
  These options are defined for NDS32 implementations:
  
! '-mbig-endian'
       Generate code in big-endian mode.
  
! '-mlittle-endian'
       Generate code in little-endian mode.
  
! '-mreduced-regs'
       Use reduced-set registers for register allocation.
  
! '-mfull-regs'
       Use full-set registers for register allocation.
  
! '-mcmov'
       Generate conditional move instructions.
  
! '-mno-cmov'
       Do not generate conditional move instructions.
  
! '-mext-perf'
       Generate performance extension instructions.
  
! '-mno-ext-perf'
       Do not generate performance extension instructions.
  
! '-mext-perf2'
       Generate performance extension 2 instructions.
  
! '-mno-ext-perf2'
       Do not generate performance extension 2 instructions.
  
! '-mext-string'
       Generate string extension instructions.
  
! '-mno-ext-string'
       Do not generate string extension instructions.
  
! '-mv3push'
       Generate v3 push25/pop25 instructions.
  
! '-mno-v3push'
       Do not generate v3 push25/pop25 instructions.
  
! '-m16-bit'
       Generate 16-bit instructions.
  
! '-mno-16-bit'
       Do not generate 16-bit instructions.
  
! '-misr-vector-size=NUM'
       Specify the size of each interrupt vector, which must be 4 or 16.
  
! '-mcache-block-size=NUM'
       Specify the size of each cache block, which must be a power of 2
       between 4 and 512.
  
! '-march=ARCH'
       Specify the name of the target architecture.
  
! '-mcmodel=CODE-MODEL'
       Set the code model to one of
!      'small'
            All the data and read-only data segments must be within 512KB
            addressing space.  The text segment must be within 16MB
            addressing space.
!      'medium'
            The data segment must be within 512KB while the read-only data
            segment can be within 4GB addressing space.  The text segment
            should be still within 16MB addressing space.
!      'large'
            All the text and data segments can be within 4GB addressing
            space.
  
! '-mctor-dtor'
       Enable constructor/destructor feature.
  
! '-mrelax'
       Guide linker to relax instructions.
  
  
--- 28152,28233 ----
  
  These options are defined for NDS32 implementations:
  
! â€˜-mbig-endianâ€™
       Generate code in big-endian mode.
  
! â€˜-mlittle-endianâ€™
       Generate code in little-endian mode.
  
! â€˜-mreduced-regsâ€™
       Use reduced-set registers for register allocation.
  
! â€˜-mfull-regsâ€™
       Use full-set registers for register allocation.
  
! â€˜-mcmovâ€™
       Generate conditional move instructions.
  
! â€˜-mno-cmovâ€™
       Do not generate conditional move instructions.
  
! â€˜-mext-perfâ€™
       Generate performance extension instructions.
  
! â€˜-mno-ext-perfâ€™
       Do not generate performance extension instructions.
  
! â€˜-mext-perf2â€™
       Generate performance extension 2 instructions.
  
! â€˜-mno-ext-perf2â€™
       Do not generate performance extension 2 instructions.
  
! â€˜-mext-stringâ€™
       Generate string extension instructions.
  
! â€˜-mno-ext-stringâ€™
       Do not generate string extension instructions.
  
! â€˜-mv3pushâ€™
       Generate v3 push25/pop25 instructions.
  
! â€˜-mno-v3pushâ€™
       Do not generate v3 push25/pop25 instructions.
  
! â€˜-m16-bitâ€™
       Generate 16-bit instructions.
  
! â€˜-mno-16-bitâ€™
       Do not generate 16-bit instructions.
  
! â€˜-misr-vector-size=NUMâ€™
       Specify the size of each interrupt vector, which must be 4 or 16.
  
! â€˜-mcache-block-size=NUMâ€™
       Specify the size of each cache block, which must be a power of 2
       between 4 and 512.
  
! â€˜-march=ARCHâ€™
       Specify the name of the target architecture.
  
! â€˜-mcmodel=CODE-MODELâ€™
       Set the code model to one of
!      â€˜smallâ€™
            All the data and read-only data segments must be within 512KB
            addressing space.  The text segment must be within 16MB
            addressing space.
!      â€˜mediumâ€™
            The data segment must be within 512KB while the read-only data
            segment can be within 4GB addressing space.  The text segment
            should be still within 16MB addressing space.
!      â€˜largeâ€™
            All the text and data segments can be within 4GB addressing
            space.
  
! â€˜-mctor-dtorâ€™
       Enable constructor/destructor feature.
  
! â€˜-mrelaxâ€™
       Guide linker to relax instructions.
  
  
*************** File: gcc.info,  Node: Nvidia PTX Option
*** 28230,28300 ****
  
  These options are defined for Nvidia PTX:
  
! '-m64'
       Ignored, but preserved for backward compatibility.  Only 64-bit ABI
       is supported.
  
! '-march=ARCHITECTURE-STRING'
       Generate code for the specified PTX ISA target architecture.  Valid
!      architecture strings are 'sm_30', 'sm_35', 'sm_37', 'sm_52',
!      'sm_53', 'sm_61', 'sm_70', 'sm_75', 'sm_80', and 'sm_89'.  The
       default depends on how the compiler has been configured, see
!      '--with-arch'.
  
!      This option sets the value of the preprocessor macro '__PTX_SM__';
!      for instance, for 'sm_35', it has the value '350'.
  
! '-misa=ARCHITECTURE-STRING'
!      Alias of '-march='.
  
! '-march-map=ARCHITECTURE-STRING'
!      Select the closest available '-march=' value that is not more
!      capable.  For instance, for '-march-map=sm_50' select
!      '-march=sm_37', and for '-march-map=sm_53' select '-march=sm_53'.
  
! '-mptx=VERSION-STRING'
       Generate code for the specified PTX ISA version.  Valid version
!      strings are '3.1', '4.1', '4.2', '5.0', '6.0', '6.3', '7.0', '7.3',
!      and '7.8'.  The default PTX ISA version is the one that added
       support for the selected PTX ISA target architecture, see
!      '-march=', but at least '6.3', or '7.3' for '-march=sm_52' and
       higher.
  
       This option sets the values of the preprocessor macros
!      '__PTX_ISA_VERSION_MAJOR__' and '__PTX_ISA_VERSION_MINOR__'; for
!      instance, for '3.1' the macros have the values '3' and '1',
       respectively.
  
! '-mmainkernel'
       Link in code for a __main kernel.  This is for stand-alone instead
       of offloading execution.
  
! '-moptimize'
       Apply partitioned execution optimizations.  This is the default
       when any level of optimization is selected.
  
! '-msoft-stack'
! '-mno-soft-stack'
!      For '-mno-soft-stack' (the default, unless '-mgomp' has been
       specified), use PTX "native" stacks, that is, generate code that
!      uses '.local' memory or PTX 'alloca' directly for stack storage.
!      Unless '-mptx=7.3' or higher and '-march=sm_52' or higher are
       active, variable-length arrays and dynamically allocating memory on
!      the stack with 'alloca' are not supported.
  
!      For '-msoft-stack' (implied by '-mgomp'), generate code that does
!      not use '.local' memory or PTX 'alloca' directly for stack storage.
       Instead, a per-warp stack pointer is maintained explicitly.  This
       enables variable-length stack allocation (with variable-length
!      arrays or 'alloca'), and when global memory is used for underlying
       storage, makes it possible to access automatic variables from other
       threads, or with atomic instructions.  This code generation variant
       is used for OpenMP offloading, but the option is exposed on its own
       for the purpose of testing the compiler; to generate code suitable
       for linking into programs using OpenMP offloading, use option
!      '-mgomp'.
  
! '-muniform-simt'
       Switch to code generation variant that allows to execute all
       threads in each warp, while maintaining memory state and side
       effects as if only one thread in each warp was active outside of
--- 28238,28308 ----
  
  These options are defined for Nvidia PTX:
  
! â€˜-m64â€™
       Ignored, but preserved for backward compatibility.  Only 64-bit ABI
       is supported.
  
! â€˜-march=ARCHITECTURE-STRINGâ€™
       Generate code for the specified PTX ISA target architecture.  Valid
!      architecture strings are â€˜sm_30â€™, â€˜sm_35â€™, â€˜sm_37â€™, â€˜sm_52â€™,
!      â€˜sm_53â€™, â€˜sm_61â€™, â€˜sm_70â€™, â€˜sm_75â€™, â€˜sm_80â€™, and â€˜sm_89â€™.  The
       default depends on how the compiler has been configured, see
!      â€˜--with-archâ€™.
  
!      This option sets the value of the preprocessor macro â€˜__PTX_SM__â€™;
!      for instance, for â€˜sm_35â€™, it has the value â€˜350â€™.
  
! â€˜-misa=ARCHITECTURE-STRINGâ€™
!      Alias of â€˜-march=â€™.
  
! â€˜-march-map=ARCHITECTURE-STRINGâ€™
!      Select the closest available â€˜-march=â€™ value that is not more
!      capable.  For instance, for â€˜-march-map=sm_50â€™ select
!      â€˜-march=sm_37â€™, and for â€˜-march-map=sm_53â€™ select â€˜-march=sm_53â€™.
  
! â€˜-mptx=VERSION-STRINGâ€™
       Generate code for the specified PTX ISA version.  Valid version
!      strings are â€˜3.1â€™, â€˜4.1â€™, â€˜4.2â€™, â€˜5.0â€™, â€˜6.0â€™, â€˜6.3â€™, â€˜7.0â€™, â€˜7.3â€™,
!      and â€˜7.8â€™.  The default PTX ISA version is the one that added
       support for the selected PTX ISA target architecture, see
!      â€˜-march=â€™, but at least â€˜6.3â€™, or â€˜7.3â€™ for â€˜-march=sm_52â€™ and
       higher.
  
       This option sets the values of the preprocessor macros
!      â€˜__PTX_ISA_VERSION_MAJOR__â€™ and â€˜__PTX_ISA_VERSION_MINOR__â€™; for
!      instance, for â€˜3.1â€™ the macros have the values â€˜3â€™ and â€˜1â€™,
       respectively.
  
! â€˜-mmainkernelâ€™
       Link in code for a __main kernel.  This is for stand-alone instead
       of offloading execution.
  
! â€˜-moptimizeâ€™
       Apply partitioned execution optimizations.  This is the default
       when any level of optimization is selected.
  
! â€˜-msoft-stackâ€™
! â€˜-mno-soft-stackâ€™
!      For â€˜-mno-soft-stackâ€™ (the default, unless â€˜-mgompâ€™ has been
       specified), use PTX "native" stacks, that is, generate code that
!      uses â€˜.localâ€™ memory or PTX â€˜allocaâ€™ directly for stack storage.
!      Unless â€˜-mptx=7.3â€™ or higher and â€˜-march=sm_52â€™ or higher are
       active, variable-length arrays and dynamically allocating memory on
!      the stack with â€˜allocaâ€™ are not supported.
  
!      For â€˜-msoft-stackâ€™ (implied by â€˜-mgompâ€™), generate code that does
!      not use â€˜.localâ€™ memory or PTX â€˜allocaâ€™ directly for stack storage.
       Instead, a per-warp stack pointer is maintained explicitly.  This
       enables variable-length stack allocation (with variable-length
!      arrays or â€˜allocaâ€™), and when global memory is used for underlying
       storage, makes it possible to access automatic variables from other
       threads, or with atomic instructions.  This code generation variant
       is used for OpenMP offloading, but the option is exposed on its own
       for the purpose of testing the compiler; to generate code suitable
       for linking into programs using OpenMP offloading, use option
!      â€˜-mgompâ€™.
  
! â€˜-muniform-simtâ€™
       Switch to code generation variant that allows to execute all
       threads in each warp, while maintaining memory state and side
       effects as if only one thread in each warp was active outside of
*************** These options are defined for Nvidia PTX
*** 28303,28317 ****
       lane index equals the master lane index), and the register being
       assigned is copied via a shuffle instruction from the master lane.
       Outside of SIMD regions lane 0 is the master; inside, each thread
!      sees itself as the master.  Shared memory array 'int __nvptx_uni[]'
       stores all-zeros or all-ones bitmasks for each warp, indicating
       current mode (0 outside of SIMD regions).  Each thread can
!      bitwise-and the bitmask at position 'tid.y' with current lane index
       to compute the master lane index.
  
! '-mgomp'
!      Generate code for use in OpenMP offloading: enables '-msoft-stack'
!      and '-muniform-simt' options, and selects corresponding multilib
       variant.
  
  
--- 28311,28325 ----
       lane index equals the master lane index), and the register being
       assigned is copied via a shuffle instruction from the master lane.
       Outside of SIMD regions lane 0 is the master; inside, each thread
!      sees itself as the master.  Shared memory array â€˜int __nvptx_uni[]â€™
       stores all-zeros or all-ones bitmasks for each warp, indicating
       current mode (0 outside of SIMD regions).  Each thread can
!      bitwise-and the bitmask at position â€˜tid.yâ€™ with current lane index
       to compute the master lane index.
  
! â€˜-mgompâ€™
!      Generate code for use in OpenMP offloading: enables â€˜-msoft-stackâ€™
!      and â€˜-muniform-simtâ€™ options, and selects corresponding multilib
       variant.
  
  
*************** File: gcc.info,  Node: OpenRISC Options,
*** 28322,28396 ****
  
  These options are defined for OpenRISC:
  
! '-mboard=NAME'
       Configure a board specific runtime.  This will be passed to the
!      linker for newlib board library linking.  The default is 'or1ksim'.
  
! '-mnewlib'
       This option is ignored; it is for compatibility purposes only.
       This used to select linker and preprocessor options for use with
       newlib.
  
! '-msoft-div'
! '-mhard-div'
!      Select software or hardware divide ('l.div', 'l.divu')
       instructions.  This default is hardware divide.
  
! '-msoft-mul'
! '-mhard-mul'
!      Select software or hardware multiply ('l.mul', 'l.muli')
       instructions.  This default is hardware multiply.
  
! '-msoft-float'
! '-mhard-float'
       Select software or hardware for floating point operations.  The
       default is software.
  
! '-mdouble-float'
!      When '-mhard-float' is selected, enables generation of
       double-precision floating point instructions.  By default functions
!      from 'libgcc' are used to perform double-precision floating point
       operations.
  
! '-munordered-float'
!      When '-mhard-float' is selected, enables generation of unordered
!      floating point compare and set flag ('lf.sfun*') instructions.  By
!      default functions from 'libgcc' are used to perform unordered
       floating point compare and set flag operations.
  
! '-mcmov'
!      Enable generation of conditional move ('l.cmov') instructions.  By
       default the equivalent will be generated using set and branch.
  
! '-mror'
!      Enable generation of rotate right ('l.ror') instructions.  By
!      default functions from 'libgcc' are used to perform rotate right
       operations.
  
! '-mrori'
!      Enable generation of rotate right with immediate ('l.rori')
!      instructions.  By default functions from 'libgcc' are used to
       perform rotate right with immediate operations.
  
! '-msext'
!      Enable generation of sign extension ('l.ext*') instructions.  By
       default memory loads are used to perform sign extension.
  
! '-msfimm'
!      Enable generation of compare and set flag with immediate ('l.sf*i')
       instructions.  By default extra instructions will be generated to
       store the immediate to a register first.
  
! '-mshftimm'
!      Enable generation of shift with immediate ('l.srai', 'l.srli',
!      'l.slli') instructions.  By default extra instructions will be
       generated to store the immediate to a register first.
  
! '-mcmodel=small'
       Generate OpenRISC code for the small model: The GOT is limited to
       64k.  This is the default model.
  
! '-mcmodel=large'
       Generate OpenRISC code for the large model: The GOT may grow up to
       4G in size.
  
--- 28330,28404 ----
  
  These options are defined for OpenRISC:
  
! â€˜-mboard=NAMEâ€™
       Configure a board specific runtime.  This will be passed to the
!      linker for newlib board library linking.  The default is â€˜or1ksimâ€™.
  
! â€˜-mnewlibâ€™
       This option is ignored; it is for compatibility purposes only.
       This used to select linker and preprocessor options for use with
       newlib.
  
! â€˜-msoft-divâ€™
! â€˜-mhard-divâ€™
!      Select software or hardware divide (â€˜l.divâ€™, â€˜l.divuâ€™)
       instructions.  This default is hardware divide.
  
! â€˜-msoft-mulâ€™
! â€˜-mhard-mulâ€™
!      Select software or hardware multiply (â€˜l.mulâ€™, â€˜l.muliâ€™)
       instructions.  This default is hardware multiply.
  
! â€˜-msoft-floatâ€™
! â€˜-mhard-floatâ€™
       Select software or hardware for floating point operations.  The
       default is software.
  
! â€˜-mdouble-floatâ€™
!      When â€˜-mhard-floatâ€™ is selected, enables generation of
       double-precision floating point instructions.  By default functions
!      from â€˜libgccâ€™ are used to perform double-precision floating point
       operations.
  
! â€˜-munordered-floatâ€™
!      When â€˜-mhard-floatâ€™ is selected, enables generation of unordered
!      floating point compare and set flag (â€˜lf.sfun*â€™) instructions.  By
!      default functions from â€˜libgccâ€™ are used to perform unordered
       floating point compare and set flag operations.
  
! â€˜-mcmovâ€™
!      Enable generation of conditional move (â€˜l.cmovâ€™) instructions.  By
       default the equivalent will be generated using set and branch.
  
! â€˜-mrorâ€™
!      Enable generation of rotate right (â€˜l.rorâ€™) instructions.  By
!      default functions from â€˜libgccâ€™ are used to perform rotate right
       operations.
  
! â€˜-mroriâ€™
!      Enable generation of rotate right with immediate (â€˜l.roriâ€™)
!      instructions.  By default functions from â€˜libgccâ€™ are used to
       perform rotate right with immediate operations.
  
! â€˜-msextâ€™
!      Enable generation of sign extension (â€˜l.ext*â€™) instructions.  By
       default memory loads are used to perform sign extension.
  
! â€˜-msfimmâ€™
!      Enable generation of compare and set flag with immediate (â€˜l.sf*iâ€™)
       instructions.  By default extra instructions will be generated to
       store the immediate to a register first.
  
! â€˜-mshftimmâ€™
!      Enable generation of shift with immediate (â€˜l.sraiâ€™, â€˜l.srliâ€™,
!      â€˜l.slliâ€™) instructions.  By default extra instructions will be
       generated to store the immediate to a register first.
  
! â€˜-mcmodel=smallâ€™
       Generate OpenRISC code for the small model: The GOT is limited to
       64k.  This is the default model.
  
! â€˜-mcmodel=largeâ€™
       Generate OpenRISC code for the large model: The GOT may grow up to
       4G in size.
  
*************** File: gcc.info,  Node: PDP-11 Options,
*** 28402,28451 ****
  
  These options are defined for the PDP-11:
  
! '-mfpu'
       Use hardware FPP floating point.  This is the default.  (FIS
       floating point on the PDP-11/40 is not supported.)  Implies -m45.
  
! '-msoft-float'
       Do not use hardware floating point.
  
! '-mac0'
       Return floating-point results in ac0 (fr0 in Unix assembler
       syntax).
  
! '-mno-ac0'
       Return floating-point results in memory.  This is the default.
  
! '-m40'
       Generate code for a PDP-11/40.  Implies -msoft-float -mno-split.
  
! '-m45'
       Generate code for a PDP-11/45.  This is the default.
  
! '-m10'
       Generate code for a PDP-11/10.  Implies -msoft-float -mno-split.
  
! '-mint16'
! '-mno-int32'
!      Use 16-bit 'int'.  This is the default.
  
! '-mint32'
! '-mno-int16'
!      Use 32-bit 'int'.
  
! '-msplit'
       Target has split instruction and data space.  Implies -m45.
  
! '-munix-asm'
       Use Unix assembler syntax.
  
! '-mdec-asm'
       Use DEC assembler syntax.
  
! '-mgnu-asm'
       Use GNU assembler syntax.  This is the default.
  
! '-mlra'
       Use the new LRA register allocator.  By default, the old "reload"
       allocator is used.
  
--- 28410,28459 ----
  
  These options are defined for the PDP-11:
  
! â€˜-mfpuâ€™
       Use hardware FPP floating point.  This is the default.  (FIS
       floating point on the PDP-11/40 is not supported.)  Implies -m45.
  
! â€˜-msoft-floatâ€™
       Do not use hardware floating point.
  
! â€˜-mac0â€™
       Return floating-point results in ac0 (fr0 in Unix assembler
       syntax).
  
! â€˜-mno-ac0â€™
       Return floating-point results in memory.  This is the default.
  
! â€˜-m40â€™
       Generate code for a PDP-11/40.  Implies -msoft-float -mno-split.
  
! â€˜-m45â€™
       Generate code for a PDP-11/45.  This is the default.
  
! â€˜-m10â€™
       Generate code for a PDP-11/10.  Implies -msoft-float -mno-split.
  
! â€˜-mint16â€™
! â€˜-mno-int32â€™
!      Use 16-bit â€˜intâ€™.  This is the default.
  
! â€˜-mint32â€™
! â€˜-mno-int16â€™
!      Use 32-bit â€˜intâ€™.
  
! â€˜-msplitâ€™
       Target has split instruction and data space.  Implies -m45.
  
! â€˜-munix-asmâ€™
       Use Unix assembler syntax.
  
! â€˜-mdec-asmâ€™
       Use DEC assembler syntax.
  
! â€˜-mgnu-asmâ€™
       Use GNU assembler syntax.  This is the default.
  
! â€˜-mlraâ€™
       Use the new LRA register allocator.  By default, the old "reload"
       allocator is used.
  
*************** File: gcc.info,  Node: PRU Options,  Nex
*** 28465,28471 ****
  
  These command-line options are defined for PRU target:
  
! '-minrt'
       Link with a minimum runtime environment.  This can significantly
       reduce the size of the final ELF binary, but some standard C
       runtime features are removed.
--- 28473,28479 ----
  
  These command-line options are defined for PRU target:
  
! â€˜-minrtâ€™
       Link with a minimum runtime environment.  This can significantly
       reduce the size of the final ELF binary, but some standard C
       runtime features are removed.
*************** These command-line options are defined f
*** 28476,28526 ****
       programmer to ensure that the source program will not use those
       features.
  
!      The minimal startup code would not pass 'argc' and 'argv' arguments
!      to 'main', so the latter must be declared as 'int main (void)'.
       This is already the norm for most firmware projects.
  
! '-mmcu=MCU'
       Specify the PRU hardware variant to use.  A correspondingly named
       spec file would be loaded, passing the memory region sizes to the
       linker and defining hardware-specific C macros.
  
!      Newlib provides only the 'sim' spec, intended for running
       regression tests using a simulator.  Specs for real hardware can be
       obtained by installing the
       GnuPruMcu (https://github.com/dinuxbg/gnuprumcu/) package.
  
! '-mno-relax'
!      Make GCC pass the '--no-relax' command-line option to the linker
!      instead of the '--relax' option.
  
! '-mloop'
       Allow (or do not allow) GCC to use the LOOP instruction.
  
! '-mabi=VARIANT'
!      Specify the ABI variant to output code for.  '-mabi=ti' selects the
!      unmodified TI ABI while '-mabi=gnu' selects a GNU variant that
       copes more naturally with certain GCC assumptions.  These are the
       differences:
  
!      'Function Pointer Size'
            TI ABI specifies that function (code) pointers are 16-bit,
            whereas GNU supports only 32-bit data and code pointers.
  
!      'Optional Return Value Pointer'
            Function return values larger than 64 bits are passed by using
            a hidden pointer as the first argument of the function.  TI
            ABI, though, mandates that the pointer can be NULL in case the
            caller is not using the returned value.  GNU always passes and
            expects a valid return value pointer.
  
!      The current '-mabi=ti' implementation simply raises a compile error
       when any of the above code constructs is detected.  As a
       consequence the standard C library cannot be built and it is
!      omitted when linking with '-mabi=ti'.
  
       Relaxation is a GNU feature and for safety reasons is disabled when
!      using '-mabi=ti'.  The TI toolchain does not emit relocations for
       QBBx instructions, so the GNU linker cannot adjust them when
       shortening adjacent LDI32 pseudo instructions.
  
--- 28484,28534 ----
       programmer to ensure that the source program will not use those
       features.
  
!      The minimal startup code would not pass â€˜argcâ€™ and â€˜argvâ€™ arguments
!      to â€˜mainâ€™, so the latter must be declared as â€˜int main (void)â€™.
       This is already the norm for most firmware projects.
  
! â€˜-mmcu=MCUâ€™
       Specify the PRU hardware variant to use.  A correspondingly named
       spec file would be loaded, passing the memory region sizes to the
       linker and defining hardware-specific C macros.
  
!      Newlib provides only the â€˜simâ€™ spec, intended for running
       regression tests using a simulator.  Specs for real hardware can be
       obtained by installing the
       GnuPruMcu (https://github.com/dinuxbg/gnuprumcu/) package.
  
! â€˜-mno-relaxâ€™
!      Make GCC pass the â€˜--no-relaxâ€™ command-line option to the linker
!      instead of the â€˜--relaxâ€™ option.
  
! â€˜-mloopâ€™
       Allow (or do not allow) GCC to use the LOOP instruction.
  
! â€˜-mabi=VARIANTâ€™
!      Specify the ABI variant to output code for.  â€˜-mabi=tiâ€™ selects the
!      unmodified TI ABI while â€˜-mabi=gnuâ€™ selects a GNU variant that
       copes more naturally with certain GCC assumptions.  These are the
       differences:
  
!      â€˜Function Pointer Sizeâ€™
            TI ABI specifies that function (code) pointers are 16-bit,
            whereas GNU supports only 32-bit data and code pointers.
  
!      â€˜Optional Return Value Pointerâ€™
            Function return values larger than 64 bits are passed by using
            a hidden pointer as the first argument of the function.  TI
            ABI, though, mandates that the pointer can be NULL in case the
            caller is not using the returned value.  GNU always passes and
            expects a valid return value pointer.
  
!      The current â€˜-mabi=tiâ€™ implementation simply raises a compile error
       when any of the above code constructs is detected.  As a
       consequence the standard C library cannot be built and it is
!      omitted when linking with â€˜-mabi=tiâ€™.
  
       Relaxation is a GNU feature and for safety reasons is disabled when
!      using â€˜-mabi=tiâ€™.  The TI toolchain does not emit relocations for
       QBBx instructions, so the GNU linker cannot adjust them when
       shortening adjacent LDI32 pseudo instructions.
  
*************** File: gcc.info,  Node: RISC-V Options,
*** 28532,28623 ****
  
  These command-line options are defined for RISC-V targets:
  
! '-mbranch-cost=N'
       Set the cost of branches to roughly N instructions.
  
! '-mplt'
! '-mno-plt'
       When generating PIC code, do or don't allow the use of PLTs.
!      Ignored for non-PIC. The default is '-mplt'.
  
! '-mabi=ABI-STRING'
       Specify integer and floating-point calling convention.  ABI-STRING
       contains two parts: the size of integer types and the registers
!      used for floating-point types.  For example '-march=rv64ifd
!      -mabi=lp64d' means that 'long' and pointers are 64-bit (implicitly
!      defining 'int' to be 32-bit), and that floating-point values up to
       64 bits wide are passed in F registers.  Contrast this with
!      '-march=rv64ifd -mabi=lp64f', which still allows the compiler to
       generate code that uses the F and D extensions but only allows
       floating-point values up to 32 bits long to be passed in registers;
!      or '-march=rv64ifd -mabi=lp64', in which no floating-point
       arguments will be passed in registers.
  
       The default for this argument is system dependent, users who want a
       specific calling convention should specify one explicitly.  The
!      valid calling conventions are: 'ilp32', 'ilp32f', 'ilp32d', 'lp64',
!      'lp64f', and 'lp64d'.  Some calling conventions are impossible to
!      implement on some ISAs: for example, '-march=rv32if -mabi=ilp32d'
       is invalid because the ABI requires 64-bit values be passed in F
       registers, but F registers are only 32 bits wide.  There are also
!      the 'ilp32e' ABI that can only be used with the 'rv32e'
!      architecture and the 'lp64e' ABI that can only be used with the
!      'rv64e'.  Those ABIs are not well specified at present, and are
       subject to change.
  
! '-mfdiv'
! '-mno-fdiv'
       Do or don't use hardware floating-point divide and square root
       instructions.  This requires the F or D extensions for
       floating-point registers.  The default is to use them if the
       specified architecture has these instructions.
  
! '-mfence-tso'
! '-mno-fence-tso'
!      Do or don't use the 'fence.tso' instruction, which is unimplemented
       on some processors (including those from T-Head).  If the
!      'fence.tso' instruction is not available then a stronger fence is
       used instead.
  
! '-mdiv'
! '-mno-div'
       Do or don't use hardware instructions for integer division.  This
       requires the M extension.  The default is to use them if the
       specified architecture has these instructions.
  
! '-misa-spec=ISA-SPEC-STRING'
       Specify the version of the RISC-V Unprivileged (formerly
       User-Level) ISA specification to produce code conforming to.  The
       possibilities for ISA-SPEC-STRING are:
!      '2.2'
            Produce code conforming to version 2.2.
!      '20190608'
            Produce code conforming to version 20190608.
!      '20191213'
            Produce code conforming to version 20191213.
!      The default is '-misa-spec=20191213' unless GCC has been configured
!      with '--with-isa-spec=' specifying a different default version.
  
! '-march=ISA-STRING'
!      Generate code for given RISC-V ISA (e.g. 'rv64im').  ISA strings
!      must be lower-case.  Examples include 'rv64i', 'rv32g', 'rv32e',
!      and 'rv32imaf'.  Additionally, a special value 'help'
!      ('-march=help') is accepted to list all supported extensions.
  
       The syntax of the ISA string is defined as follows:
  
!      'The string must start with 'rv32' or 'rv64', followed by'
!           'i', 'e', or 'g', referred to as the base ISA.
!      'The subsequent part of the string is a list of extension names. Extension'
!           names can be categorized as multi-letter (e.g. 'zba') and
!           single-letter (e.g. 'v').  Single-letter extensions can appear
            consecutively, but multi-letter extensions must be separated
            by underscores.
!      'An underscore can appear anywhere after the base ISA. It has no specific'
            effect but is used to improve readability and can act as a
            separator.
!      'Extension names may include an optional version number, following the'
!           syntax '<major>p<minor>' or '<major>', (e.g. 'm2p1' or 'm2').
  
       Supported extension are listed below:
       ExtensionSupportedDescription
--- 28540,28631 ----
  
  These command-line options are defined for RISC-V targets:
  
! â€˜-mbranch-cost=Nâ€™
       Set the cost of branches to roughly N instructions.
  
! â€˜-mpltâ€™
! â€˜-mno-pltâ€™
       When generating PIC code, do or don't allow the use of PLTs.
!      Ignored for non-PIC. The default is â€˜-mpltâ€™.
  
! â€˜-mabi=ABI-STRINGâ€™
       Specify integer and floating-point calling convention.  ABI-STRING
       contains two parts: the size of integer types and the registers
!      used for floating-point types.  For example â€˜-march=rv64ifd
!      -mabi=lp64dâ€™ means that â€˜longâ€™ and pointers are 64-bit (implicitly
!      defining â€˜intâ€™ to be 32-bit), and that floating-point values up to
       64 bits wide are passed in F registers.  Contrast this with
!      â€˜-march=rv64ifd -mabi=lp64fâ€™, which still allows the compiler to
       generate code that uses the F and D extensions but only allows
       floating-point values up to 32 bits long to be passed in registers;
!      or â€˜-march=rv64ifd -mabi=lp64â€™, in which no floating-point
       arguments will be passed in registers.
  
       The default for this argument is system dependent, users who want a
       specific calling convention should specify one explicitly.  The
!      valid calling conventions are: â€˜ilp32â€™, â€˜ilp32fâ€™, â€˜ilp32dâ€™, â€˜lp64â€™,
!      â€˜lp64fâ€™, and â€˜lp64dâ€™.  Some calling conventions are impossible to
!      implement on some ISAs: for example, â€˜-march=rv32if -mabi=ilp32dâ€™
       is invalid because the ABI requires 64-bit values be passed in F
       registers, but F registers are only 32 bits wide.  There are also
!      the â€˜ilp32eâ€™ ABI that can only be used with the â€˜rv32eâ€™
!      architecture and the â€˜lp64eâ€™ ABI that can only be used with the
!      â€˜rv64eâ€™.  Those ABIs are not well specified at present, and are
       subject to change.
  
! â€˜-mfdivâ€™
! â€˜-mno-fdivâ€™
       Do or don't use hardware floating-point divide and square root
       instructions.  This requires the F or D extensions for
       floating-point registers.  The default is to use them if the
       specified architecture has these instructions.
  
! â€˜-mfence-tsoâ€™
! â€˜-mno-fence-tsoâ€™
!      Do or don't use the â€˜fence.tsoâ€™ instruction, which is unimplemented
       on some processors (including those from T-Head).  If the
!      â€˜fence.tsoâ€™ instruction is not available then a stronger fence is
       used instead.
  
! â€˜-mdivâ€™
! â€˜-mno-divâ€™
       Do or don't use hardware instructions for integer division.  This
       requires the M extension.  The default is to use them if the
       specified architecture has these instructions.
  
! â€˜-misa-spec=ISA-SPEC-STRINGâ€™
       Specify the version of the RISC-V Unprivileged (formerly
       User-Level) ISA specification to produce code conforming to.  The
       possibilities for ISA-SPEC-STRING are:
!      â€˜2.2â€™
            Produce code conforming to version 2.2.
!      â€˜20190608â€™
            Produce code conforming to version 20190608.
!      â€˜20191213â€™
            Produce code conforming to version 20191213.
!      The default is â€˜-misa-spec=20191213â€™ unless GCC has been configured
!      with â€˜--with-isa-spec=â€™ specifying a different default version.
  
! â€˜-march=ISA-STRINGâ€™
!      Generate code for given RISC-V ISA (e.g. â€˜rv64imâ€™).  ISA strings
!      must be lower-case.  Examples include â€˜rv64iâ€™, â€˜rv32gâ€™, â€˜rv32eâ€™,
!      and â€˜rv32imafâ€™.  Additionally, a special value â€˜helpâ€™
!      (â€˜-march=helpâ€™) is accepted to list all supported extensions.
  
       The syntax of the ISA string is defined as follows:
  
!      â€˜The string must start with â€˜rv32â€™ or â€˜rv64â€™, followed byâ€™
!           â€˜iâ€™, â€˜eâ€™, or â€˜gâ€™, referred to as the base ISA.
!      â€˜The subsequent part of the string is a list of extension names. Extensionâ€™
!           names can be categorized as multi-letter (e.g. â€˜zbaâ€™) and
!           single-letter (e.g. â€˜vâ€™).  Single-letter extensions can appear
            consecutively, but multi-letter extensions must be separated
            by underscores.
!      â€˜An underscore can appear anywhere after the base ISA. It has no specificâ€™
            effect but is used to improve readability and can act as a
            separator.
!      â€˜Extension names may include an optional version number, following theâ€™
!           syntax â€˜<major>p<minor>â€™ or â€˜<major>â€™, (e.g. â€˜m2p1â€™ or â€˜m2â€™).
  
       Supported extension are listed below:
       ExtensionSupportedDescription
*************** These command-line options are defined f
*** 28627,28635 ****
               2.1     
       e       2.0     Reduced base integer extension.
                       
!      g       -       General-purpose computing base extension, 'g' will
!                      expand to 'i', 'm', 'a', 'f', 'd', 'zicsr' and
!                      'zifencei'.
                       
       m       2.0     Integer multiplication and division extension.
                       
--- 28635,28643 ----
               2.1     
       e       2.0     Reduced base integer extension.
                       
!      g       -       General-purpose computing base extension, â€˜gâ€™ will
!                      expand to â€˜iâ€™, â€˜mâ€™, â€˜aâ€™, â€˜fâ€™, â€˜dâ€™, â€˜zicsrâ€™ and
!                      â€˜zifenceiâ€™.
                       
       m       2.0     Integer multiplication and division extension.
                       
*************** These command-line options are defined f
*** 28775,28798 ****
                       
       zvksh   1.0     Vector SM3 Secure Hash extension.
                       
!      zvkn    1.0     Vector NIST Algorithm Suite extension, 'zvkn' will
!                      expand to 'zvkned', 'zvknhb', 'zvkb' and 'zvkt'.
                       
       zvknc   1.0     Vector NIST Algorithm Suite with carryless multiply
!                      extension, 'zvknc' will expand to 'zvkn' and 'zvbc'.
                       
!      zvkng   1.0     Vector NIST Algorithm Suite with GCM extension, 'zvkng'
!                      will expand to 'zvkn' and 'zvkg'.
                       
!      zvks    1.0     Vector ShangMi algorithm suite extension, 'zvks' will
!                      expand to 'zvksed', 'zvksh', 'zvkb' and 'zvkt'.
                       
       zvksc   1.0     Vector ShangMi algorithm suite with carryless
!                      multiplication extension, 'zvksc' will expand to 'zvks'
!                      and 'zvbc'.
                       
       zvksg   1.0     Vector ShangMi algorithm suite with GCM extension,
!                      'zvksg' will expand to 'zvks' and 'zvkg'.
                       
       zvkt    1.0     Vector data independent execution latency extension.
                       
--- 28783,28806 ----
                       
       zvksh   1.0     Vector SM3 Secure Hash extension.
                       
!      zvkn    1.0     Vector NIST Algorithm Suite extension, â€˜zvknâ€™ will
!                      expand to â€˜zvknedâ€™, â€˜zvknhbâ€™, â€˜zvkbâ€™ and â€˜zvktâ€™.
                       
       zvknc   1.0     Vector NIST Algorithm Suite with carryless multiply
!                      extension, â€˜zvkncâ€™ will expand to â€˜zvknâ€™ and â€˜zvbcâ€™.
                       
!      zvkng   1.0     Vector NIST Algorithm Suite with GCM extension, â€˜zvkngâ€™
!                      will expand to â€˜zvknâ€™ and â€˜zvkgâ€™.
                       
!      zvks    1.0     Vector ShangMi algorithm suite extension, â€˜zvksâ€™ will
!                      expand to â€˜zvksedâ€™, â€˜zvkshâ€™, â€˜zvkbâ€™ and â€˜zvktâ€™.
                       
       zvksc   1.0     Vector ShangMi algorithm suite with carryless
!                      multiplication extension, â€˜zvkscâ€™ will expand to â€˜zvksâ€™
!                      and â€˜zvbcâ€™.
                       
       zvksg   1.0     Vector ShangMi algorithm suite with GCM extension,
!                      â€˜zvksgâ€™ will expand to â€˜zvksâ€™ and â€˜zvkgâ€™.
                       
       zvkt    1.0     Vector data independent execution latency extension.
                       
*************** These command-line options are defined f
*** 28885,28893 ****
       xventanacondops1.0Ventana integer conditional operations extension.
                       
  
!      When '-march=' is not specified, use the setting from '-mcpu'.
  
!      If both '-march' and '-mcpu=' are not specified, the default for
       this argument is system dependent, users who want a specific
       architecture extensions should specify one explicitly.
  
--- 28893,28901 ----
       xventanacondops1.0Ventana integer conditional operations extension.
                       
  
!      When â€˜-march=â€™ is not specified, use the setting from â€˜-mcpuâ€™.
  
!      If both â€˜-marchâ€™ and â€˜-mcpu=â€™ are not specified, the default for
       this argument is system dependent, users who want a specific
       architecture extensions should specify one explicitly.
  
*************** These command-line options are defined f
*** 28895,28990 ****
       other extensions, GCC will implicitly add the dependent extensions
       to the enabled extension set if they weren't added explicitly.
  
! '-mcpu=PROCESSOR-STRING'
       Use architecture of and optimize the output for the given
       processor, specified by particular CPU name.  Permissible values
!      for this option are: 'sifive-e20', 'sifive-e21', 'sifive-e24',
!      'sifive-e31', 'sifive-e34', 'sifive-e76', 'sifive-s21',
!      'sifive-s51', 'sifive-s54', 'sifive-s76', 'sifive-u54',
!      'sifive-u74', 'sifive-x280', 'sifive-xp450', 'sifive-x670',
!      'thead-c906', 'tt-ascalon-d8', 'xiangshan-nanhu'.
  
!      Note that '-mcpu' does not override '-march' or '-mtune'.
  
! '-mtune=PROCESSOR-STRING'
       Optimize the output for the given processor, specified by
       microarchitecture or particular CPU name.  Permissible values for
!      this option are: 'generic-ooo', 'rocket', 'sifive-3-series',
!      'sifive-5-series', 'sifive-7-series', 'size', 'sifive-p400-series',
!      'sifive-p600-series', and all valid options for '-mcpu='.
  
!      When '-mtune=' is not specified, use the setting from '-mcpu', the
!      default is 'rocket' if both are not specified.
  
!      The 'size' choice is not intended for use by end-users.  This is
!      used when '-Os' is specified.  It overrides the instruction cost
!      info provided by '-mtune=', but does not override the pipeline
       info.  This helps reduce code size while still giving good
       performance.
  
! '-mpreferred-stack-boundary=NUM'
       Attempt to keep the stack boundary aligned to a 2 raised to NUM
!      byte boundary.  If '-mpreferred-stack-boundary' is not specified,
       the default is 4 (16 bytes or 128-bits).
  
       *Warning:* If you use this switch, then you must build all modules
       with the same value, including any libraries.  This includes the
       system libraries and startup modules.
  
! '-msmall-data-limit=N'
       Put global and static data smaller than N bytes into a special
       section (on some targets).
  
! '-msave-restore'
! '-mno-save-restore'
       Do or don't use smaller but slower prologue and epilogue code that
       uses library function calls.  The default is to use fast inline
       prologues and epilogues.
  
! '-mmovcc'
! '-mno-movcc'
       Do or don't produce branchless conditional-move code sequences even
       with targets that do not have specific instructions for conditional
       operations.  If enabled, sequences of ALU operations are produced
       using base integer ISA instructions where profitable.
  
! '-minline-atomics'
! '-mno-inline-atomics'
       Do or don't use smaller but slower subword atomic emulation code
       that uses libatomic function calls.  The default is to use fast
       inline subword atomics that do not require libatomic.
  
! '-minline-strlen'
! '-mno-inline-strlen'
       Do or do not attempt to inline strlen calls if possible.  Inlining
       will only be done if the string is properly aligned and
       instructions for accelerated processing are available.  The default
       is to not inline strlen calls.
  
! '-minline-strcmp'
! '-mno-inline-strcmp'
       Do or do not attempt to inline strcmp calls if possible.  Inlining
       will only be done if the strings are properly aligned and
       instructions for accelerated processing are available.  The default
       is to not inline strcmp calls.
  
!      The '--param riscv-strcmp-inline-limit=N' parameter controls the
       maximum number of bytes compared by the inlined code.  The default
       value is 64.
  
! '-minline-strncmp'
! '-mno-inline-strncmp'
       Do or do not attempt to inline strncmp calls if possible.  Inlining
       will only be done if the strings are properly aligned and
       instructions for accelerated processing are available.  The default
       is to not inline strncmp calls.
  
!      The '--param riscv-strcmp-inline-limit=N' parameter controls the
       maximum number of bytes compared by the inlined code.  The default
       value is 64.
  
! '-mshorten-memrefs'
! '-mno-shorten-memrefs'
       Do or do not attempt to make more use of compressed load/store
       instructions by replacing a load/store of 'base register + large
       offset' with a new load/store of 'new base + small offset'.  If the
--- 28903,28998 ----
       other extensions, GCC will implicitly add the dependent extensions
       to the enabled extension set if they weren't added explicitly.
  
! â€˜-mcpu=PROCESSOR-STRINGâ€™
       Use architecture of and optimize the output for the given
       processor, specified by particular CPU name.  Permissible values
!      for this option are: â€˜sifive-e20â€™, â€˜sifive-e21â€™, â€˜sifive-e24â€™,
!      â€˜sifive-e31â€™, â€˜sifive-e34â€™, â€˜sifive-e76â€™, â€˜sifive-s21â€™,
!      â€˜sifive-s51â€™, â€˜sifive-s54â€™, â€˜sifive-s76â€™, â€˜sifive-u54â€™,
!      â€˜sifive-u74â€™, â€˜sifive-x280â€™, â€˜sifive-xp450â€™, â€˜sifive-x670â€™,
!      â€˜thead-c906â€™, â€˜tt-ascalon-d8â€™, â€˜xiangshan-nanhuâ€™.
  
!      Note that â€˜-mcpuâ€™ does not override â€˜-marchâ€™ or â€˜-mtuneâ€™.
  
! â€˜-mtune=PROCESSOR-STRINGâ€™
       Optimize the output for the given processor, specified by
       microarchitecture or particular CPU name.  Permissible values for
!      this option are: â€˜generic-oooâ€™, â€˜rocketâ€™, â€˜sifive-3-seriesâ€™,
!      â€˜sifive-5-seriesâ€™, â€˜sifive-7-seriesâ€™, â€˜sizeâ€™, â€˜sifive-p400-seriesâ€™,
!      â€˜sifive-p600-seriesâ€™, and all valid options for â€˜-mcpu=â€™.
  
!      When â€˜-mtune=â€™ is not specified, use the setting from â€˜-mcpuâ€™, the
!      default is â€˜rocketâ€™ if both are not specified.
  
!      The â€˜sizeâ€™ choice is not intended for use by end-users.  This is
!      used when â€˜-Osâ€™ is specified.  It overrides the instruction cost
!      info provided by â€˜-mtune=â€™, but does not override the pipeline
       info.  This helps reduce code size while still giving good
       performance.
  
! â€˜-mpreferred-stack-boundary=NUMâ€™
       Attempt to keep the stack boundary aligned to a 2 raised to NUM
!      byte boundary.  If â€˜-mpreferred-stack-boundaryâ€™ is not specified,
       the default is 4 (16 bytes or 128-bits).
  
       *Warning:* If you use this switch, then you must build all modules
       with the same value, including any libraries.  This includes the
       system libraries and startup modules.
  
! â€˜-msmall-data-limit=Nâ€™
       Put global and static data smaller than N bytes into a special
       section (on some targets).
  
! â€˜-msave-restoreâ€™
! â€˜-mno-save-restoreâ€™
       Do or don't use smaller but slower prologue and epilogue code that
       uses library function calls.  The default is to use fast inline
       prologues and epilogues.
  
! â€˜-mmovccâ€™
! â€˜-mno-movccâ€™
       Do or don't produce branchless conditional-move code sequences even
       with targets that do not have specific instructions for conditional
       operations.  If enabled, sequences of ALU operations are produced
       using base integer ISA instructions where profitable.
  
! â€˜-minline-atomicsâ€™
! â€˜-mno-inline-atomicsâ€™
       Do or don't use smaller but slower subword atomic emulation code
       that uses libatomic function calls.  The default is to use fast
       inline subword atomics that do not require libatomic.
  
! â€˜-minline-strlenâ€™
! â€˜-mno-inline-strlenâ€™
       Do or do not attempt to inline strlen calls if possible.  Inlining
       will only be done if the string is properly aligned and
       instructions for accelerated processing are available.  The default
       is to not inline strlen calls.
  
! â€˜-minline-strcmpâ€™
! â€˜-mno-inline-strcmpâ€™
       Do or do not attempt to inline strcmp calls if possible.  Inlining
       will only be done if the strings are properly aligned and
       instructions for accelerated processing are available.  The default
       is to not inline strcmp calls.
  
!      The â€˜--param riscv-strcmp-inline-limit=Nâ€™ parameter controls the
       maximum number of bytes compared by the inlined code.  The default
       value is 64.
  
! â€˜-minline-strncmpâ€™
! â€˜-mno-inline-strncmpâ€™
       Do or do not attempt to inline strncmp calls if possible.  Inlining
       will only be done if the strings are properly aligned and
       instructions for accelerated processing are available.  The default
       is to not inline strncmp calls.
  
!      The â€˜--param riscv-strcmp-inline-limit=Nâ€™ parameter controls the
       maximum number of bytes compared by the inlined code.  The default
       value is 64.
  
! â€˜-mshorten-memrefsâ€™
! â€˜-mno-shorten-memrefsâ€™
       Do or do not attempt to make more use of compressed load/store
       instructions by replacing a load/store of 'base register + large
       offset' with a new load/store of 'new base + small offset'.  If the
*************** These command-line options are defined f
*** 28992,29025 ****
       load/store can be compressed.  Currently targets 32-bit integer
       load/stores only.
  
! '-mstrict-align'
! '-mno-strict-align'
       Do not or do generate unaligned memory accesses.  The default is
       set depending on whether the processor we are optimizing for
       supports fast unaligned access or not.
  
! '-mscalar-strict-align'
! '-mno-scalar-strict-align'
       Do not or do generate unaligned memory accesses.  The default is
       set depending on whether the processor we are optimizing for
       supports fast unaligned access or not.  This is an alias for
!      '-mstrict-align'.
  
! '-mvector-strict-align'
! '-mno-vector-strict-align'
       Do not or do generate unaligned vector memory accesses.  The
       default is set to off unless the processor we are optimizing for
       explicitly supports element-misaligned vector memory access.
  
! '-mcmodel=medlow'
       Generate code for the medium-low code model.  The program and its
       statically defined symbols must lie within a single 2 GiB address
!      range and must lie between absolute addresses -2 GiB and +2 GiB.
       Programs can be statically or dynamically linked.  This is the
       default code model unless GCC has been configured with
!      '--with-cmodel=' specifying a different default code model.
  
! '-mcmodel=medany'
       Generate code for the medium-any code model.  The program and its
       statically defined symbols must be within any single 2 GiB address
       range.  Programs can be statically or dynamically linked.
--- 29000,29033 ----
       load/store can be compressed.  Currently targets 32-bit integer
       load/stores only.
  
! â€˜-mstrict-alignâ€™
! â€˜-mno-strict-alignâ€™
       Do not or do generate unaligned memory accesses.  The default is
       set depending on whether the processor we are optimizing for
       supports fast unaligned access or not.
  
! â€˜-mscalar-strict-alignâ€™
! â€˜-mno-scalar-strict-alignâ€™
       Do not or do generate unaligned memory accesses.  The default is
       set depending on whether the processor we are optimizing for
       supports fast unaligned access or not.  This is an alias for
!      â€˜-mstrict-alignâ€™.
  
! â€˜-mvector-strict-alignâ€™
! â€˜-mno-vector-strict-alignâ€™
       Do not or do generate unaligned vector memory accesses.  The
       default is set to off unless the processor we are optimizing for
       explicitly supports element-misaligned vector memory access.
  
! â€˜-mcmodel=medlowâ€™
       Generate code for the medium-low code model.  The program and its
       statically defined symbols must lie within a single 2 GiB address
!      range and must lie between absolute addresses âˆ’2 GiB and +2 GiB.
       Programs can be statically or dynamically linked.  This is the
       default code model unless GCC has been configured with
!      â€˜--with-cmodel=â€™ specifying a different default code model.
  
! â€˜-mcmodel=medanyâ€™
       Generate code for the medium-any code model.  The program and its
       statically defined symbols must be within any single 2 GiB address
       range.  Programs can be statically or dynamically linked.
*************** These command-line options are defined f
*** 29028,29092 ****
       position-independent, but is not guaranteed to function correctly
       when linked into position-independent executables or libraries.
  
! '-mcmodel=large'
       Generate code for a large code model, which has no restrictions on
       size or placement of symbols.
  
! '-mexplicit-relocs'
! '-mno-exlicit-relocs'
       Use or do not use assembler relocation operators when dealing with
       symbolic addresses.  The alternative is to use assembler macros
       instead, which may limit optimization.
  
! '-mrelax'
! '-mno-relax'
       Take advantage of linker relaxations to reduce the number of
       instructions required to materialize symbol addresses.  The default
       is to take advantage of linker relaxations.
  
! '-mriscv-attribute'
! '-mno-riscv-attribute'
       Emit (do not emit) RISC-V attribute to record extra information
       into ELF objects.  This feature requires at least binutils 2.32.
  
! '-mcsr-check'
! '-mno-csr-check'
       Enables or disables the CSR checking.
  
! '-malign-data=TYPE'
       Control how GCC aligns variables and constants of array, structure,
!      or union types.  Supported values for TYPE are 'xlen' which uses x
!      register width as the alignment value, and 'natural' which uses
!      natural alignment.  'xlen' is the default.
  
! '-mbig-endian'
       Generate big-endian code.  This is the default when GCC is
!      configured for a 'riscv64be-*-*' or 'riscv32be-*-*' target.
  
! '-mlittle-endian'
       Generate little-endian code.  This is the default when GCC is
!      configured for a 'riscv64-*-*' or 'riscv32-*-*' but not a
!      'riscv64be-*-*' or 'riscv32be-*-*' target.
  
! '-mstack-protector-guard=GUARD'
! '-mstack-protector-guard-reg=REG'
! '-mstack-protector-guard-offset=OFFSET'
       Generate stack protection code using canary at GUARD.  Supported
!      locations are 'global' for a global canary or 'tls' for per-thread
       canary in the TLS block.
  
       With the latter choice the options
!      '-mstack-protector-guard-reg=REG' and
!      '-mstack-protector-guard-offset=OFFSET' furthermore specify which
       register to use as base register for reading the canary, and from
       what offset from that base register.  There is no default register
       or offset as this is entirely for use within the Linux kernel.
  
! '-mtls-dialect=desc'
       Use TLS descriptors as the thread-local storage mechanism for
       dynamic accesses of TLS variables.
  
! '-mtls-dialect=trad'
       Use traditional TLS as the thread-local storage mechanism for
       dynamic accesses of TLS variables.  This is the default.
  
--- 29036,29100 ----
       position-independent, but is not guaranteed to function correctly
       when linked into position-independent executables or libraries.
  
! â€˜-mcmodel=largeâ€™
       Generate code for a large code model, which has no restrictions on
       size or placement of symbols.
  
! â€˜-mexplicit-relocsâ€™
! â€˜-mno-exlicit-relocsâ€™
       Use or do not use assembler relocation operators when dealing with
       symbolic addresses.  The alternative is to use assembler macros
       instead, which may limit optimization.
  
! â€˜-mrelaxâ€™
! â€˜-mno-relaxâ€™
       Take advantage of linker relaxations to reduce the number of
       instructions required to materialize symbol addresses.  The default
       is to take advantage of linker relaxations.
  
! â€˜-mriscv-attributeâ€™
! â€˜-mno-riscv-attributeâ€™
       Emit (do not emit) RISC-V attribute to record extra information
       into ELF objects.  This feature requires at least binutils 2.32.
  
! â€˜-mcsr-checkâ€™
! â€˜-mno-csr-checkâ€™
       Enables or disables the CSR checking.
  
! â€˜-malign-data=TYPEâ€™
       Control how GCC aligns variables and constants of array, structure,
!      or union types.  Supported values for TYPE are â€˜xlenâ€™ which uses x
!      register width as the alignment value, and â€˜naturalâ€™ which uses
!      natural alignment.  â€˜xlenâ€™ is the default.
  
! â€˜-mbig-endianâ€™
       Generate big-endian code.  This is the default when GCC is
!      configured for a â€˜riscv64be-*-*â€™ or â€˜riscv32be-*-*â€™ target.
  
! â€˜-mlittle-endianâ€™
       Generate little-endian code.  This is the default when GCC is
!      configured for a â€˜riscv64-*-*â€™ or â€˜riscv32-*-*â€™ but not a
!      â€˜riscv64be-*-*â€™ or â€˜riscv32be-*-*â€™ target.
  
! â€˜-mstack-protector-guard=GUARDâ€™
! â€˜-mstack-protector-guard-reg=REGâ€™
! â€˜-mstack-protector-guard-offset=OFFSETâ€™
       Generate stack protection code using canary at GUARD.  Supported
!      locations are â€˜globalâ€™ for a global canary or â€˜tlsâ€™ for per-thread
       canary in the TLS block.
  
       With the latter choice the options
!      â€˜-mstack-protector-guard-reg=REGâ€™ and
!      â€˜-mstack-protector-guard-offset=OFFSETâ€™ furthermore specify which
       register to use as base register for reading the canary, and from
       what offset from that base register.  There is no default register
       or offset as this is entirely for use within the Linux kernel.
  
! â€˜-mtls-dialect=descâ€™
       Use TLS descriptors as the thread-local storage mechanism for
       dynamic accesses of TLS variables.
  
! â€˜-mtls-dialect=tradâ€™
       Use traditional TLS as the thread-local storage mechanism for
       dynamic accesses of TLS variables.  This is the default.
  
*************** File: gcc.info,  Node: RL78 Options,  Ne
*** 29096,29127 ****
  3.20.41 RL78 Options
  --------------------
  
! '-msim'
       Links in additional target libraries to support operation within a
       simulator.
  
! '-mmul=none'
! '-mmul=g10'
! '-mmul=g13'
! '-mmul=g14'
! '-mmul=rl78'
       Specifies the type of hardware multiplication and division support
!      to be used.  The simplest is 'none', which uses software for both
!      multiplication and division.  This is the default.  The 'g13' value
       is for the hardware multiply/divide peripheral found on the
!      RL78/G13 (S2 core) targets.  The 'g14' value selects the use of the
       multiplication and division instructions supported by the RL78/G14
!      (S3 core) parts.  The value 'rl78' is an alias for 'g14' and the
!      value 'mg10' is an alias for 'none'.
  
       In addition a C preprocessor macro is defined, based upon the
!      setting of this option.  Possible values are: '__RL78_MUL_NONE__',
!      '__RL78_MUL_G13__' or '__RL78_MUL_G14__'.
  
! '-mcpu=g10'
! '-mcpu=g13'
! '-mcpu=g14'
! '-mcpu=rl78'
       Specifies the RL78 core to target.  The default is the G14 core,
       also known as an S3 core or just RL78.  The G13 or S2 core does not
       have multiply or divide instructions, instead it uses a hardware
--- 29104,29135 ----
  3.20.41 RL78 Options
  --------------------
  
! â€˜-msimâ€™
       Links in additional target libraries to support operation within a
       simulator.
  
! â€˜-mmul=noneâ€™
! â€˜-mmul=g10â€™
! â€˜-mmul=g13â€™
! â€˜-mmul=g14â€™
! â€˜-mmul=rl78â€™
       Specifies the type of hardware multiplication and division support
!      to be used.  The simplest is â€˜noneâ€™, which uses software for both
!      multiplication and division.  This is the default.  The â€˜g13â€™ value
       is for the hardware multiply/divide peripheral found on the
!      RL78/G13 (S2 core) targets.  The â€˜g14â€™ value selects the use of the
       multiplication and division instructions supported by the RL78/G14
!      (S3 core) parts.  The value â€˜rl78â€™ is an alias for â€˜g14â€™ and the
!      value â€˜mg10â€™ is an alias for â€˜noneâ€™.
  
       In addition a C preprocessor macro is defined, based upon the
!      setting of this option.  Possible values are: â€˜__RL78_MUL_NONE__â€™,
!      â€˜__RL78_MUL_G13__â€™ or â€˜__RL78_MUL_G14__â€™.
  
! â€˜-mcpu=g10â€™
! â€˜-mcpu=g13â€™
! â€˜-mcpu=g14â€™
! â€˜-mcpu=rl78â€™
       Specifies the RL78 core to target.  The default is the G14 core,
       also known as an S3 core or just RL78.  The G13 or S2 core does not
       have multiply or divide instructions, instead it uses a hardware
*************** File: gcc.info,  Node: RL78 Options,  Ne
*** 29130,29142 ****
  
       If this option is set it also selects the type of hardware multiply
       support to use, unless this is overridden by an explicit
!      '-mmul=none' option on the command line.  Thus specifying
!      '-mcpu=g13' enables the use of the G13 hardware multiply peripheral
!      and specifying '-mcpu=g10' disables the use of hardware
       multiplications altogether.
  
       Note, although the RL78/G14 core is the default target, specifying
!      '-mcpu=g14' or '-mcpu=rl78' on the command line does change the
       behavior of the toolchain since it also enables G14 hardware
       multiply support.  If these options are not specified on the
       command line then software multiplication routines will be used
--- 29138,29150 ----
  
       If this option is set it also selects the type of hardware multiply
       support to use, unless this is overridden by an explicit
!      â€˜-mmul=noneâ€™ option on the command line.  Thus specifying
!      â€˜-mcpu=g13â€™ enables the use of the G13 hardware multiply peripheral
!      and specifying â€˜-mcpu=g10â€™ disables the use of hardware
       multiplications altogether.
  
       Note, although the RL78/G14 core is the default target, specifying
!      â€˜-mcpu=g14â€™ or â€˜-mcpu=rl78â€™ on the command line does change the
       behavior of the toolchain since it also enables G14 hardware
       multiply support.  If these options are not specified on the
       command line then software multiplication routines will be used
*************** File: gcc.info,  Node: RL78 Options,  Ne
*** 29145,29174 ****
       multiply and divide support.
  
       In addition a C preprocessor macro is defined, based upon the
!      setting of this option.  Possible values are: '__RL78_G10__',
!      '__RL78_G13__' or '__RL78_G14__'.
  
! '-mg10'
! '-mg13'
! '-mg14'
! '-mrl78'
!      These are aliases for the corresponding '-mcpu=' option.  They are
       provided for backwards compatibility.
  
! '-mallregs'
       Allow the compiler to use all of the available registers.  By
!      default registers 'r24..r31' are reserved for use in interrupt
       handlers.  With this option enabled these registers can be used in
       ordinary functions as well.
  
! '-m64bit-doubles'
! '-m32bit-doubles'
!      Make the 'double' data type be 64 bits ('-m64bit-doubles') or 32
!      bits ('-m32bit-doubles') in size.  The default is
!      '-m32bit-doubles'.
  
! '-msave-mduc-in-interrupts'
! '-mno-save-mduc-in-interrupts'
       Specifies that interrupt handler functions should preserve the MDUC
       registers.  This is only necessary if normal code might use the
       MDUC registers, for example because it performs multiplication and
--- 29153,29182 ----
       multiply and divide support.
  
       In addition a C preprocessor macro is defined, based upon the
!      setting of this option.  Possible values are: â€˜__RL78_G10__â€™,
!      â€˜__RL78_G13__â€™ or â€˜__RL78_G14__â€™.
  
! â€˜-mg10â€™
! â€˜-mg13â€™
! â€˜-mg14â€™
! â€˜-mrl78â€™
!      These are aliases for the corresponding â€˜-mcpu=â€™ option.  They are
       provided for backwards compatibility.
  
! â€˜-mallregsâ€™
       Allow the compiler to use all of the available registers.  By
!      default registers â€˜r24..r31â€™ are reserved for use in interrupt
       handlers.  With this option enabled these registers can be used in
       ordinary functions as well.
  
! â€˜-m64bit-doublesâ€™
! â€˜-m32bit-doublesâ€™
!      Make the â€˜doubleâ€™ data type be 64 bits (â€˜-m64bit-doublesâ€™) or 32
!      bits (â€˜-m32bit-doublesâ€™) in size.  The default is
!      â€˜-m32bit-doublesâ€™.
  
! â€˜-msave-mduc-in-interruptsâ€™
! â€˜-mno-save-mduc-in-interruptsâ€™
       Specifies that interrupt handler functions should preserve the MDUC
       registers.  This is only necessary if normal code might use the
       MDUC registers, for example because it performs multiplication and
*************** File: gcc.info,  Node: RS/6000 and Power
*** 29185,29273 ****
  3.20.42 IBM RS/6000 and PowerPC Options
  ---------------------------------------
  
! These '-m' options are defined for the IBM RS/6000 and PowerPC:
! '-mpowerpc-gpopt'
! '-mno-powerpc-gpopt'
! '-mpowerpc-gfxopt'
! '-mno-powerpc-gfxopt'
! '-mpowerpc64'
! '-mno-powerpc64'
! '-mmfcrf'
! '-mno-mfcrf'
! '-mpopcntb'
! '-mno-popcntb'
! '-mpopcntd'
! '-mno-popcntd'
! '-mfprnd'
! '-mno-fprnd'
! '-mcmpb'
! '-mno-cmpb'
! '-mhard-dfp'
! '-mno-hard-dfp'
       You use these options to specify which instructions are available
       on the processor you are using.  The default value of these options
       is determined when configuring GCC.  Specifying the
!      '-mcpu=CPU_TYPE' overrides the specification of these options.  We
!      recommend you use the '-mcpu=CPU_TYPE' option rather than the
       options listed above.
  
!      Specifying '-mpowerpc-gpopt' allows GCC to use the optional PowerPC
       architecture instructions in the General Purpose group, including
!      floating-point square root.  Specifying '-mpowerpc-gfxopt' allows
       GCC to use the optional PowerPC architecture instructions in the
       Graphics group, including floating-point select.
  
!      The '-mmfcrf' option allows GCC to generate the move from condition
       register field instruction implemented on the POWER4 processor and
       other processors that support the PowerPC V2.01 architecture.  The
!      '-mpopcntb' option allows GCC to generate the popcount and
       double-precision FP reciprocal estimate instruction implemented on
       the POWER5 processor and other processors that support the PowerPC
!      V2.02 architecture.  The '-mpopcntd' option allows GCC to generate
       the popcount instruction implemented on the POWER7 processor and
       other processors that support the PowerPC V2.06 architecture.  The
!      '-mfprnd' option allows GCC to generate the FP round to integer
       instructions implemented on the POWER5+ processor and other
       processors that support the PowerPC V2.03 architecture.  The
!      '-mcmpb' option allows GCC to generate the compare bytes
       instruction implemented on the POWER6 processor and other
       processors that support the PowerPC V2.05 architecture.  The
!      '-mhard-dfp' option allows GCC to generate the decimal
       floating-point instructions implemented on some POWER processors.
  
!      The '-mpowerpc64' option allows GCC to generate the additional
       64-bit instructions that are found in the full PowerPC64
       architecture and to treat GPRs as 64-bit, doubleword quantities.
!      GCC defaults to '-mno-powerpc64'.
  
! '-mcpu=CPU_TYPE'
       Set architecture type, register usage, and instruction scheduling
       parameters for machine type CPU_TYPE.  Supported values for
!      CPU_TYPE are '401', '403', '405', '405fp', '440', '440fp', '464',
!      '464fp', '476', '476fp', '505', '601', '602', '603', '603e', '604',
!      '604e', '620', '630', '740', '7400', '7450', '750', '801', '821',
!      '823', '860', '970', '8540', 'a2', 'e300c2', 'e300c3', 'e500mc',
!      'e500mc64', 'e5500', 'e6500', 'ec603e', 'G3', 'G4', 'G5', 'titan',
!      'power3', 'power4', 'power5', 'power5+', 'power6', 'power6x',
!      'power7', 'power8', 'power9', 'power10', 'power11', 'powerpc',
!      'powerpc64', 'powerpc64le', 'rs64', and 'native'.
  
!      '-mcpu=powerpc', '-mcpu=powerpc64', and '-mcpu=powerpc64le' specify
       pure 32-bit PowerPC (either endian), 64-bit big endian PowerPC and
       64-bit little endian PowerPC architecture machine types, with an
       appropriate, generic processor model assumed for scheduling
       purposes.
  
!      Specifying 'native' as cpu type detects and selects the
       architecture option that corresponds to the host processor of the
!      system performing the compilation.  '-mcpu=native' has no effect if
       GCC does not recognize the processor.
  
       The other options specify a specific processor.  Code generated
       under those options runs best on that processor, and may not run at
       all on others.
  
!      The '-mcpu' options automatically enable or disable the following
       options:
  
            -maltivec  -mfprnd  -mhard-float  -mmfcrf  -mmultiple
--- 29193,29281 ----
  3.20.42 IBM RS/6000 and PowerPC Options
  ---------------------------------------
  
! These â€˜-mâ€™ options are defined for the IBM RS/6000 and PowerPC:
! â€˜-mpowerpc-gpoptâ€™
! â€˜-mno-powerpc-gpoptâ€™
! â€˜-mpowerpc-gfxoptâ€™
! â€˜-mno-powerpc-gfxoptâ€™
! â€˜-mpowerpc64â€™
! â€˜-mno-powerpc64â€™
! â€˜-mmfcrfâ€™
! â€˜-mno-mfcrfâ€™
! â€˜-mpopcntbâ€™
! â€˜-mno-popcntbâ€™
! â€˜-mpopcntdâ€™
! â€˜-mno-popcntdâ€™
! â€˜-mfprndâ€™
! â€˜-mno-fprndâ€™
! â€˜-mcmpbâ€™
! â€˜-mno-cmpbâ€™
! â€˜-mhard-dfpâ€™
! â€˜-mno-hard-dfpâ€™
       You use these options to specify which instructions are available
       on the processor you are using.  The default value of these options
       is determined when configuring GCC.  Specifying the
!      â€˜-mcpu=CPU_TYPEâ€™ overrides the specification of these options.  We
!      recommend you use the â€˜-mcpu=CPU_TYPEâ€™ option rather than the
       options listed above.
  
!      Specifying â€˜-mpowerpc-gpoptâ€™ allows GCC to use the optional PowerPC
       architecture instructions in the General Purpose group, including
!      floating-point square root.  Specifying â€˜-mpowerpc-gfxoptâ€™ allows
       GCC to use the optional PowerPC architecture instructions in the
       Graphics group, including floating-point select.
  
!      The â€˜-mmfcrfâ€™ option allows GCC to generate the move from condition
       register field instruction implemented on the POWER4 processor and
       other processors that support the PowerPC V2.01 architecture.  The
!      â€˜-mpopcntbâ€™ option allows GCC to generate the popcount and
       double-precision FP reciprocal estimate instruction implemented on
       the POWER5 processor and other processors that support the PowerPC
!      V2.02 architecture.  The â€˜-mpopcntdâ€™ option allows GCC to generate
       the popcount instruction implemented on the POWER7 processor and
       other processors that support the PowerPC V2.06 architecture.  The
!      â€˜-mfprndâ€™ option allows GCC to generate the FP round to integer
       instructions implemented on the POWER5+ processor and other
       processors that support the PowerPC V2.03 architecture.  The
!      â€˜-mcmpbâ€™ option allows GCC to generate the compare bytes
       instruction implemented on the POWER6 processor and other
       processors that support the PowerPC V2.05 architecture.  The
!      â€˜-mhard-dfpâ€™ option allows GCC to generate the decimal
       floating-point instructions implemented on some POWER processors.
  
!      The â€˜-mpowerpc64â€™ option allows GCC to generate the additional
       64-bit instructions that are found in the full PowerPC64
       architecture and to treat GPRs as 64-bit, doubleword quantities.
!      GCC defaults to â€˜-mno-powerpc64â€™.
  
! â€˜-mcpu=CPU_TYPEâ€™
       Set architecture type, register usage, and instruction scheduling
       parameters for machine type CPU_TYPE.  Supported values for
!      CPU_TYPE are â€˜401â€™, â€˜403â€™, â€˜405â€™, â€˜405fpâ€™, â€˜440â€™, â€˜440fpâ€™, â€˜464â€™,
!      â€˜464fpâ€™, â€˜476â€™, â€˜476fpâ€™, â€˜505â€™, â€˜601â€™, â€˜602â€™, â€˜603â€™, â€˜603eâ€™, â€˜604â€™,
!      â€˜604eâ€™, â€˜620â€™, â€˜630â€™, â€˜740â€™, â€˜7400â€™, â€˜7450â€™, â€˜750â€™, â€˜801â€™, â€˜821â€™,
!      â€˜823â€™, â€˜860â€™, â€˜970â€™, â€˜8540â€™, â€˜a2â€™, â€˜e300c2â€™, â€˜e300c3â€™, â€˜e500mcâ€™,
!      â€˜e500mc64â€™, â€˜e5500â€™, â€˜e6500â€™, â€˜ec603eâ€™, â€˜G3â€™, â€˜G4â€™, â€˜G5â€™, â€˜titanâ€™,
!      â€˜power3â€™, â€˜power4â€™, â€˜power5â€™, â€˜power5+â€™, â€˜power6â€™, â€˜power6xâ€™,
!      â€˜power7â€™, â€˜power8â€™, â€˜power9â€™, â€˜power10â€™, â€˜power11â€™, â€˜powerpcâ€™,
!      â€˜powerpc64â€™, â€˜powerpc64leâ€™, â€˜rs64â€™, and â€˜nativeâ€™.
  
!      â€˜-mcpu=powerpcâ€™, â€˜-mcpu=powerpc64â€™, and â€˜-mcpu=powerpc64leâ€™ specify
       pure 32-bit PowerPC (either endian), 64-bit big endian PowerPC and
       64-bit little endian PowerPC architecture machine types, with an
       appropriate, generic processor model assumed for scheduling
       purposes.
  
!      Specifying â€˜nativeâ€™ as cpu type detects and selects the
       architecture option that corresponds to the host processor of the
!      system performing the compilation.  â€˜-mcpu=nativeâ€™ has no effect if
       GCC does not recognize the processor.
  
       The other options specify a specific processor.  Code generated
       under those options runs best on that processor, and may not run at
       all on others.
  
!      The â€˜-mcpuâ€™ options automatically enable or disable the following
       options:
  
            -maltivec  -mfprnd  -mhard-float  -mmfcrf  -mmultiple
*************** These '-m' options are defined for the I
*** 29283,29352 ****
       compiler versions, depending on what setting seems to produce
       optimal code for that CPU; it doesn't necessarily reflect the
       actual hardware's capabilities.  If you wish to set an individual
!      option to a particular value, you may specify it after the '-mcpu'
!      option, like '-mcpu=970 -mno-altivec'.
  
!      On AIX, the '-maltivec' and '-mpowerpc64' options are not enabled
!      or disabled by the '-mcpu' option at present because AIX does not
       have full support for these options.  You may still enable or
       disable them individually if you're sure it'll work in your
       environment.
  
! '-mtune=CPU_TYPE'
       Set the instruction scheduling parameters for machine type
       CPU_TYPE, but do not set the architecture type or register usage,
!      as '-mcpu=CPU_TYPE' does.  The same values for CPU_TYPE are used
!      for '-mtune' as for '-mcpu'.  If both are specified, the code
!      generated uses the architecture and registers set by '-mcpu', but
!      the scheduling parameters set by '-mtune'.
  
! '-mcmodel=small'
       Generate PowerPC64 code for the small model: The TOC is limited to
       64k.
  
! '-mcmodel=medium'
       Generate PowerPC64 code for the medium model: The TOC and other
       static data may be up to a total of 4G in size.  This is the
       default for 64-bit Linux.
  
! '-mcmodel=large'
       Generate PowerPC64 code for the large model: The TOC may be up to
       4G in size.  Other data and code is only limited by the 64-bit
       address space.
  
! '-maltivec'
! '-mno-altivec'
       Generate code that uses (does not use) AltiVec instructions, and
       also enable the use of built-in functions that allow more direct
       access to the AltiVec instruction set.  You may also need to set
!      '-mabi=altivec' to adjust the current ABI with AltiVec ABI
       enhancements.
  
!      When '-maltivec' is used, the element order for AltiVec intrinsics
!      such as 'vec_splat', 'vec_extract', and 'vec_insert' match array
       element order corresponding to the endianness of the target.  That
       is, element zero identifies the leftmost element in a vector
       register when targeting a big-endian platform, and identifies the
       rightmost element in a vector register when targeting a
       little-endian platform.
  
! '-mvrsave'
! '-mno-vrsave'
       Generate VRSAVE instructions when generating AltiVec code.
  
! '-msecure-plt'
!      Generate code that allows 'ld' and 'ld.so' to build executables and
!      shared libraries with non-executable '.plt' and '.got' sections.
       This is a PowerPC 32-bit SYSV ABI option.
  
! '-mbss-plt'
!      Generate code that uses a BSS '.plt' section that 'ld.so' fills in,
!      and requires '.plt' and '.got' sections that are both writable and
       executable.  This is a PowerPC 32-bit SYSV ABI option.
  
! '-msplit-patch-nops'
       When adding NOPs for a patchable area via the
!      '-fpatchable-function-entry' option emit the "before" NOPs in front
       of the global entry point and the "after" NOPs after the local
       entry point.  This makes the sequence of NOPs not consecutive when
       a global entry point is generated.  Without this option the NOPs
--- 29291,29360 ----
       compiler versions, depending on what setting seems to produce
       optimal code for that CPU; it doesn't necessarily reflect the
       actual hardware's capabilities.  If you wish to set an individual
!      option to a particular value, you may specify it after the â€˜-mcpuâ€™
!      option, like â€˜-mcpu=970 -mno-altivecâ€™.
  
!      On AIX, the â€˜-maltivecâ€™ and â€˜-mpowerpc64â€™ options are not enabled
!      or disabled by the â€˜-mcpuâ€™ option at present because AIX does not
       have full support for these options.  You may still enable or
       disable them individually if you're sure it'll work in your
       environment.
  
! â€˜-mtune=CPU_TYPEâ€™
       Set the instruction scheduling parameters for machine type
       CPU_TYPE, but do not set the architecture type or register usage,
!      as â€˜-mcpu=CPU_TYPEâ€™ does.  The same values for CPU_TYPE are used
!      for â€˜-mtuneâ€™ as for â€˜-mcpuâ€™.  If both are specified, the code
!      generated uses the architecture and registers set by â€˜-mcpuâ€™, but
!      the scheduling parameters set by â€˜-mtuneâ€™.
  
! â€˜-mcmodel=smallâ€™
       Generate PowerPC64 code for the small model: The TOC is limited to
       64k.
  
! â€˜-mcmodel=mediumâ€™
       Generate PowerPC64 code for the medium model: The TOC and other
       static data may be up to a total of 4G in size.  This is the
       default for 64-bit Linux.
  
! â€˜-mcmodel=largeâ€™
       Generate PowerPC64 code for the large model: The TOC may be up to
       4G in size.  Other data and code is only limited by the 64-bit
       address space.
  
! â€˜-maltivecâ€™
! â€˜-mno-altivecâ€™
       Generate code that uses (does not use) AltiVec instructions, and
       also enable the use of built-in functions that allow more direct
       access to the AltiVec instruction set.  You may also need to set
!      â€˜-mabi=altivecâ€™ to adjust the current ABI with AltiVec ABI
       enhancements.
  
!      When â€˜-maltivecâ€™ is used, the element order for AltiVec intrinsics
!      such as â€˜vec_splatâ€™, â€˜vec_extractâ€™, and â€˜vec_insertâ€™ match array
       element order corresponding to the endianness of the target.  That
       is, element zero identifies the leftmost element in a vector
       register when targeting a big-endian platform, and identifies the
       rightmost element in a vector register when targeting a
       little-endian platform.
  
! â€˜-mvrsaveâ€™
! â€˜-mno-vrsaveâ€™
       Generate VRSAVE instructions when generating AltiVec code.
  
! â€˜-msecure-pltâ€™
!      Generate code that allows â€˜ldâ€™ and â€˜ld.soâ€™ to build executables and
!      shared libraries with non-executable â€˜.pltâ€™ and â€˜.gotâ€™ sections.
       This is a PowerPC 32-bit SYSV ABI option.
  
! â€˜-mbss-pltâ€™
!      Generate code that uses a BSS â€˜.pltâ€™ section that â€˜ld.soâ€™ fills in,
!      and requires â€˜.pltâ€™ and â€˜.gotâ€™ sections that are both writable and
       executable.  This is a PowerPC 32-bit SYSV ABI option.
  
! â€˜-msplit-patch-nopsâ€™
       When adding NOPs for a patchable area via the
!      â€˜-fpatchable-function-entryâ€™ option emit the "before" NOPs in front
       of the global entry point and the "after" NOPs after the local
       entry point.  This makes the sequence of NOPs not consecutive when
       a global entry point is generated.  Without this option the NOPs
*************** These '-m' options are defined for the I
*** 29355,29445 ****
       apart.  If only a single entry point is generated this option has
       no effect.
  
! '-misel'
! '-mno-isel'
       This switch enables or disables the generation of ISEL
       instructions.
  
! '-mvsx'
! '-mno-vsx'
       Generate code that uses (does not use) vector/scalar (VSX)
       instructions, and also enable the use of built-in functions that
       allow more direct access to the VSX instruction set.
  
! '-mcrypto'
! '-mno-crypto'
       Enable the use (disable) of the built-in functions that allow
       direct access to the cryptographic instructions that were added in
       version 2.07 of the PowerPC ISA.
  
! '-mhtm'
! '-mno-htm'
       Enable (disable) the use of the built-in functions that allow
       direct access to the Hardware Transactional Memory (HTM)
       instructions that were added in version 2.07 of the PowerPC ISA.
  
! '-mpower8-fusion'
! '-mno-power8-fusion'
       Generate code that keeps (does not keeps) some integer operations
       adjacent so that the instructions can be fused together on power8
       and later processors.
  
! '-mquad-memory'
! '-mno-quad-memory'
       Generate code that uses (does not use) the non-atomic quad word
!      memory instructions.  The '-mquad-memory' option requires use of
       64-bit mode.
  
! '-mquad-memory-atomic'
! '-mno-quad-memory-atomic'
       Generate code that uses (does not use) the atomic quad word memory
!      instructions.  The '-mquad-memory-atomic' option requires use of
       64-bit mode.
  
! '-mfloat128'
! '-mno-float128'
       Enable/disable the __FLOAT128 keyword for IEEE 128-bit floating
       point and use either software emulation for IEEE 128-bit floating
       point or hardware instructions.
  
!      The VSX instruction set ('-mvsx') must be enabled to use the IEEE
       128-bit floating point support.  The IEEE 128-bit floating point is
       only supported on Linux.
  
!      The default for '-mfloat128' is enabled on PowerPC Linux systems
       using the VSX instruction set, and disabled on other systems.
  
!      If you use the ISA 3.0 instruction set ('-mcpu=power9') on a 64-bit
       system, the IEEE 128-bit floating point support will also enable
       the generation of ISA 3.0 IEEE 128-bit floating point instructions.
       Otherwise, if you do not specify to generate ISA 3.0 instructions
       or you are targeting a 32-bit big endian system, IEEE 128-bit
       floating point will be done with software emulation.
  
! '-mfloat128-hardware'
! '-mno-float128-hardware'
       Enable/disable using ISA 3.0 hardware instructions to support the
       __FLOAT128 data type.
  
!      The default for '-mfloat128-hardware' is enabled on PowerPC Linux
       systems using the ISA 3.0 instruction set, and disabled on other
       systems.
  
! '-m32'
! '-m64'
       Generate code for 32-bit or 64-bit environments of Darwin and SVR4
       targets (including GNU/Linux).  The 32-bit environment sets int,
       long and pointer to 32 bits and generates code that runs on any
       PowerPC variant.  The 64-bit environment sets int to 32 bits and
       long and pointer to 64 bits, and generates code for PowerPC64, as
!      for '-mpowerpc64'.
  
! '-mfull-toc'
! '-mno-fp-in-toc'
! '-mno-sum-in-toc'
! '-mminimal-toc'
       Modify generation of the TOC (Table Of Contents), which is created
!      for every executable file.  The '-mfull-toc' option is selected by
       default.  In that case, GCC allocates at least one TOC entry for
       each unique non-automatic variable reference in your program.  GCC
       also places floating-point constants in the TOC.  However, only
--- 29363,29453 ----
       apart.  If only a single entry point is generated this option has
       no effect.
  
! â€˜-miselâ€™
! â€˜-mno-iselâ€™
       This switch enables or disables the generation of ISEL
       instructions.
  
! â€˜-mvsxâ€™
! â€˜-mno-vsxâ€™
       Generate code that uses (does not use) vector/scalar (VSX)
       instructions, and also enable the use of built-in functions that
       allow more direct access to the VSX instruction set.
  
! â€˜-mcryptoâ€™
! â€˜-mno-cryptoâ€™
       Enable the use (disable) of the built-in functions that allow
       direct access to the cryptographic instructions that were added in
       version 2.07 of the PowerPC ISA.
  
! â€˜-mhtmâ€™
! â€˜-mno-htmâ€™
       Enable (disable) the use of the built-in functions that allow
       direct access to the Hardware Transactional Memory (HTM)
       instructions that were added in version 2.07 of the PowerPC ISA.
  
! â€˜-mpower8-fusionâ€™
! â€˜-mno-power8-fusionâ€™
       Generate code that keeps (does not keeps) some integer operations
       adjacent so that the instructions can be fused together on power8
       and later processors.
  
! â€˜-mquad-memoryâ€™
! â€˜-mno-quad-memoryâ€™
       Generate code that uses (does not use) the non-atomic quad word
!      memory instructions.  The â€˜-mquad-memoryâ€™ option requires use of
       64-bit mode.
  
! â€˜-mquad-memory-atomicâ€™
! â€˜-mno-quad-memory-atomicâ€™
       Generate code that uses (does not use) the atomic quad word memory
!      instructions.  The â€˜-mquad-memory-atomicâ€™ option requires use of
       64-bit mode.
  
! â€˜-mfloat128â€™
! â€˜-mno-float128â€™
       Enable/disable the __FLOAT128 keyword for IEEE 128-bit floating
       point and use either software emulation for IEEE 128-bit floating
       point or hardware instructions.
  
!      The VSX instruction set (â€˜-mvsxâ€™) must be enabled to use the IEEE
       128-bit floating point support.  The IEEE 128-bit floating point is
       only supported on Linux.
  
!      The default for â€˜-mfloat128â€™ is enabled on PowerPC Linux systems
       using the VSX instruction set, and disabled on other systems.
  
!      If you use the ISA 3.0 instruction set (â€˜-mcpu=power9â€™) on a 64-bit
       system, the IEEE 128-bit floating point support will also enable
       the generation of ISA 3.0 IEEE 128-bit floating point instructions.
       Otherwise, if you do not specify to generate ISA 3.0 instructions
       or you are targeting a 32-bit big endian system, IEEE 128-bit
       floating point will be done with software emulation.
  
! â€˜-mfloat128-hardwareâ€™
! â€˜-mno-float128-hardwareâ€™
       Enable/disable using ISA 3.0 hardware instructions to support the
       __FLOAT128 data type.
  
!      The default for â€˜-mfloat128-hardwareâ€™ is enabled on PowerPC Linux
       systems using the ISA 3.0 instruction set, and disabled on other
       systems.
  
! â€˜-m32â€™
! â€˜-m64â€™
       Generate code for 32-bit or 64-bit environments of Darwin and SVR4
       targets (including GNU/Linux).  The 32-bit environment sets int,
       long and pointer to 32 bits and generates code that runs on any
       PowerPC variant.  The 64-bit environment sets int to 32 bits and
       long and pointer to 64 bits, and generates code for PowerPC64, as
!      for â€˜-mpowerpc64â€™.
  
! â€˜-mfull-tocâ€™
! â€˜-mno-fp-in-tocâ€™
! â€˜-mno-sum-in-tocâ€™
! â€˜-mminimal-tocâ€™
       Modify generation of the TOC (Table Of Contents), which is created
!      for every executable file.  The â€˜-mfull-tocâ€™ option is selected by
       default.  In that case, GCC allocates at least one TOC entry for
       each unique non-automatic variable reference in your program.  GCC
       also places floating-point constants in the TOC.  However, only
*************** These '-m' options are defined for the I
*** 29447,29478 ****
  
       If you receive a linker error message that saying you have
       overflowed the available TOC space, you can reduce the amount of
!      TOC space used with the '-mno-fp-in-toc' and '-mno-sum-in-toc'
!      options.  '-mno-fp-in-toc' prevents GCC from putting floating-point
!      constants in the TOC and '-mno-sum-in-toc' forces GCC to generate
       code to calculate the sum of an address and a constant at run time
       instead of putting that sum into the TOC.  You may specify one or
       both of these options.  Each causes GCC to produce very slightly
       slower and larger code at the expense of conserving TOC space.
  
       If you still run out of space in the TOC even when you specify both
!      of these options, specify '-mminimal-toc' instead.  This option
       causes GCC to make only one TOC entry for every file.  When you
       specify this option, GCC produces code that is slower and larger
       but which uses extremely little TOC space.  You may wish to use
       this option only on files that contain less frequently-executed
       code.
  
! '-maix64'
! '-maix32'
       Enable 64-bit AIX ABI and calling convention: 64-bit pointers,
!      64-bit 'long' type, and the infrastructure needed to support them.
!      Specifying '-maix64' implies '-mpowerpc64', while '-maix32'
!      disables the 64-bit ABI and implies '-mno-powerpc64'.  GCC defaults
!      to '-maix32'.
  
! '-mxl-compat'
! '-mno-xl-compat'
       Produce code that conforms more closely to IBM XL compiler
       semantics when using AIX-compatible ABI.  Pass floating-point
       arguments to prototyped functions beyond the register save area
--- 29455,29486 ----
  
       If you receive a linker error message that saying you have
       overflowed the available TOC space, you can reduce the amount of
!      TOC space used with the â€˜-mno-fp-in-tocâ€™ and â€˜-mno-sum-in-tocâ€™
!      options.  â€˜-mno-fp-in-tocâ€™ prevents GCC from putting floating-point
!      constants in the TOC and â€˜-mno-sum-in-tocâ€™ forces GCC to generate
       code to calculate the sum of an address and a constant at run time
       instead of putting that sum into the TOC.  You may specify one or
       both of these options.  Each causes GCC to produce very slightly
       slower and larger code at the expense of conserving TOC space.
  
       If you still run out of space in the TOC even when you specify both
!      of these options, specify â€˜-mminimal-tocâ€™ instead.  This option
       causes GCC to make only one TOC entry for every file.  When you
       specify this option, GCC produces code that is slower and larger
       but which uses extremely little TOC space.  You may wish to use
       this option only on files that contain less frequently-executed
       code.
  
! â€˜-maix64â€™
! â€˜-maix32â€™
       Enable 64-bit AIX ABI and calling convention: 64-bit pointers,
!      64-bit â€˜longâ€™ type, and the infrastructure needed to support them.
!      Specifying â€˜-maix64â€™ implies â€˜-mpowerpc64â€™, while â€˜-maix32â€™
!      disables the 64-bit ABI and implies â€˜-mno-powerpc64â€™.  GCC defaults
!      to â€˜-maix32â€™.
  
! â€˜-mxl-compatâ€™
! â€˜-mno-xl-compatâ€™
       Produce code that conforms more closely to IBM XL compiler
       semantics when using AIX-compatible ABI.  Pass floating-point
       arguments to prototyped functions beyond the register save area
*************** These '-m' options are defined for the I
*** 29491,29547 ****
       option is not enabled by default and only is necessary when calling
       subroutines compiled by IBM XL compilers without optimization.
  
! '-mpe'
!      Support "IBM RS/6000 SP" "Parallel Environment" (PE).  Link an
       application written to use message passing with special startup
       code to enable the application to run.  The system must have PE
!      installed in the standard location ('/usr/lpp/ppe.poe/'), or the
!      'specs' file must be overridden with the '-specs=' option to
       specify the appropriate directory location.  The Parallel
!      Environment does not support threads, so the '-mpe' option and the
!      '-pthread' option are incompatible.
  
! '-malign-natural'
! '-malign-power'
       On AIX, 32-bit Darwin, and 64-bit PowerPC GNU/Linux, the option
!      '-malign-natural' overrides the ABI-defined alignment of larger
       types, such as floating-point doubles, on their natural size-based
!      boundary.  The option '-malign-power' instructs GCC to follow the
       ABI-specified alignment rules.  GCC defaults to the standard
       alignment defined in the ABI.
  
       On 64-bit Darwin, natural alignment is the default, and
!      '-malign-power' is not supported.
  
! '-msoft-float'
! '-mhard-float'
       Generate code that does not use (uses) the floating-point register
       set.  Software floating-point emulation is provided if you use the
!      '-msoft-float' option, and pass the option to GCC when linking.
  
! '-mmultiple'
! '-mno-multiple'
       Generate code that uses (does not use) the load multiple word
       instructions and the store multiple word instructions.  These
       instructions are generated by default on POWER systems, and not
!      generated on PowerPC systems.  Do not use '-mmultiple' on
       little-endian PowerPC systems, since those instructions do not work
       when the processor is in little-endian mode.  The exceptions are
       PPC740 and PPC750 which permit these instructions in little-endian
       mode.
  
! '-mupdate'
! '-mno-update'
       Generate code that uses (does not use) the load or store
       instructions that update the base register to the address of the
       calculated memory location.  These instructions are generated by
!      default.  If you use '-mno-update', there is a small window between
       the time that the stack pointer is updated and the address of the
       previous frame is stored, which means code that walks the stack
       frame across interrupts or signals may get corrupted data.
  
! '-mavoid-indexed-addresses'
! '-mno-avoid-indexed-addresses'
       Generate code that tries to avoid (not avoid) the use of indexed
       load or store instructions.  These instructions can incur a
       performance penalty on Power6 processors in certain situations,
--- 29499,29555 ----
       option is not enabled by default and only is necessary when calling
       subroutines compiled by IBM XL compilers without optimization.
  
! â€˜-mpeâ€™
!      Support â€œIBM RS/6000 SPâ€� â€œParallel Environmentâ€� (PE).  Link an
       application written to use message passing with special startup
       code to enable the application to run.  The system must have PE
!      installed in the standard location (â€˜/usr/lpp/ppe.poe/â€™), or the
!      â€˜specsâ€™ file must be overridden with the â€˜-specs=â€™ option to
       specify the appropriate directory location.  The Parallel
!      Environment does not support threads, so the â€˜-mpeâ€™ option and the
!      â€˜-pthreadâ€™ option are incompatible.
  
! â€˜-malign-naturalâ€™
! â€˜-malign-powerâ€™
       On AIX, 32-bit Darwin, and 64-bit PowerPC GNU/Linux, the option
!      â€˜-malign-naturalâ€™ overrides the ABI-defined alignment of larger
       types, such as floating-point doubles, on their natural size-based
!      boundary.  The option â€˜-malign-powerâ€™ instructs GCC to follow the
       ABI-specified alignment rules.  GCC defaults to the standard
       alignment defined in the ABI.
  
       On 64-bit Darwin, natural alignment is the default, and
!      â€˜-malign-powerâ€™ is not supported.
  
! â€˜-msoft-floatâ€™
! â€˜-mhard-floatâ€™
       Generate code that does not use (uses) the floating-point register
       set.  Software floating-point emulation is provided if you use the
!      â€˜-msoft-floatâ€™ option, and pass the option to GCC when linking.
  
! â€˜-mmultipleâ€™
! â€˜-mno-multipleâ€™
       Generate code that uses (does not use) the load multiple word
       instructions and the store multiple word instructions.  These
       instructions are generated by default on POWER systems, and not
!      generated on PowerPC systems.  Do not use â€˜-mmultipleâ€™ on
       little-endian PowerPC systems, since those instructions do not work
       when the processor is in little-endian mode.  The exceptions are
       PPC740 and PPC750 which permit these instructions in little-endian
       mode.
  
! â€˜-mupdateâ€™
! â€˜-mno-updateâ€™
       Generate code that uses (does not use) the load or store
       instructions that update the base register to the address of the
       calculated memory location.  These instructions are generated by
!      default.  If you use â€˜-mno-updateâ€™, there is a small window between
       the time that the stack pointer is updated and the address of the
       previous frame is stored, which means code that walks the stack
       frame across interrupts or signals may get corrupted data.
  
! â€˜-mavoid-indexed-addressesâ€™
! â€˜-mno-avoid-indexed-addressesâ€™
       Generate code that tries to avoid (not avoid) the use of indexed
       load or store instructions.  These instructions can incur a
       performance penalty on Power6 processors in certain situations,
*************** These '-m' options are defined for the I
*** 29549,29684 ****
       boundary.  This option is enabled by default when targeting Power6
       and disabled otherwise.
  
! '-mfused-madd'
! '-mno-fused-madd'
       Generate code that uses (does not use) the floating-point multiply
       and accumulate instructions.  These instructions are generated by
       default if hardware floating point is used.  The machine-dependent
!      '-mfused-madd' option is now mapped to the machine-independent
!      '-ffp-contract=fast' option, and '-mno-fused-madd' is mapped to
!      '-ffp-contract=off'.
  
! '-mmulhw'
! '-mno-mulhw'
       Generate code that uses (does not use) the half-word multiply and
       multiply-accumulate instructions on the IBM 405, 440, 464 and 476
       processors.  These instructions are generated by default when
       targeting those processors.
  
! '-mdlmzb'
! '-mno-dlmzb'
!      Generate code that uses (does not use) the string-search 'dlmzb'
       instruction on the IBM 405, 440, 464 and 476 processors.  This
       instruction is generated by default when targeting those
       processors.
  
! '-mno-bit-align'
! '-mbit-align'
       On System V.4 and embedded PowerPC systems do not (do) force
       structures and unions that contain bit-fields to be aligned to the
       base type of the bit-field.
  
       For example, by default a structure containing nothing but 8
!      'unsigned' bit-fields of length 1 is aligned to a 4-byte boundary
!      and has a size of 4 bytes.  By using '-mno-bit-align', the
       structure is aligned to a 1-byte boundary and is 1 byte in size.
  
! '-mno-strict-align'
! '-mstrict-align'
       On System V.4 and embedded PowerPC systems do not (do) assume that
       unaligned memory references are handled by the system.
  
! '-mrelocatable'
! '-mno-relocatable'
       Generate code that allows (does not allow) a static executable to
       be relocated to a different address at run time.  A simple embedded
       PowerPC system loader should relocate the entire contents of
!      '.got2' and 4-byte locations listed in the '.fixup' section, a
       table of 32-bit addresses generated by this option.  For this to
       work, all objects linked together must be compiled with
!      '-mrelocatable' or '-mrelocatable-lib'.  '-mrelocatable' code
       aligns the stack to an 8-byte boundary.
  
! '-mrelocatable-lib'
! '-mno-relocatable-lib'
!      Like '-mrelocatable', '-mrelocatable-lib' generates a '.fixup'
       section to allow static executables to be relocated at run time,
!      but '-mrelocatable-lib' does not use the smaller stack alignment of
!      '-mrelocatable'.  Objects compiled with '-mrelocatable-lib' may be
       linked with objects compiled with any combination of the
!      '-mrelocatable' options.
  
! '-mno-toc'
! '-mtoc'
       On System V.4 and embedded PowerPC systems do not (do) assume that
       register 2 contains a pointer to a global area pointing to the
       addresses used in the program.
  
! '-mlittle'
! '-mlittle-endian'
       On System V.4 and embedded PowerPC systems compile code for the
!      processor in little-endian mode.  The '-mlittle-endian' option is
!      the same as '-mlittle'.
  
! '-mbig'
! '-mbig-endian'
       On System V.4 and embedded PowerPC systems compile code for the
!      processor in big-endian mode.  The '-mbig-endian' option is the
!      same as '-mbig'.
  
! '-mdynamic-no-pic'
       On Darwin / macOS systems, compile code so that it is not
       relocatable, but that its external references are relocatable.  The
       resulting code is suitable for applications, but not shared
       libraries.
  
! '-msingle-pic-base'
       Treat the register used for PIC addressing as read-only, rather
       than loading it in the prologue for each function.  The runtime
       system is responsible for initializing this register with an
       appropriate value before execution begins.
  
! '-mprioritize-restricted-insns=PRIORITY'
       This option controls the priority that is assigned to dispatch-slot
       restricted instructions during the second scheduling pass.  The
!      argument PRIORITY takes the value '0', '1', or '2' to assign no,
       highest, or second-highest (respectively) priority to dispatch-slot
       restricted instructions.
  
! '-msched-costly-dep=DEPENDENCE_TYPE'
       This option controls which dependences are considered costly by the
       target during instruction scheduling.  The argument DEPENDENCE_TYPE
       takes one of the following values:
  
!      'no'
            No dependence is costly.
  
!      'all'
            All dependences are costly.
  
!      'true_store_to_load'
            A true dependence from store to load is costly.
  
!      'store_to_load'
            Any dependence from store to load is costly.
  
       NUMBER
            Any dependence for which the latency is greater than or equal
            to NUMBER is costly.
  
! '-minsert-sched-nops=SCHEME'
       This option controls which NOP insertion scheme is used during the
       second scheduling pass.  The argument SCHEME takes one of the
       following values:
  
!      'no'
            Don't insert NOPs.
  
!      'pad'
            Pad with NOPs any dispatch group that has vacant issue slots,
            according to the scheduler's grouping.
  
!      'regroup_exact'
            Insert NOPs to force costly dependent insns into separate
            groups.  Insert exactly as many NOPs as needed to force an
            insn to a new group, according to the estimated processor
--- 29557,29692 ----
       boundary.  This option is enabled by default when targeting Power6
       and disabled otherwise.
  
! â€˜-mfused-maddâ€™
! â€˜-mno-fused-maddâ€™
       Generate code that uses (does not use) the floating-point multiply
       and accumulate instructions.  These instructions are generated by
       default if hardware floating point is used.  The machine-dependent
!      â€˜-mfused-maddâ€™ option is now mapped to the machine-independent
!      â€˜-ffp-contract=fastâ€™ option, and â€˜-mno-fused-maddâ€™ is mapped to
!      â€˜-ffp-contract=offâ€™.
  
! â€˜-mmulhwâ€™
! â€˜-mno-mulhwâ€™
       Generate code that uses (does not use) the half-word multiply and
       multiply-accumulate instructions on the IBM 405, 440, 464 and 476
       processors.  These instructions are generated by default when
       targeting those processors.
  
! â€˜-mdlmzbâ€™
! â€˜-mno-dlmzbâ€™
!      Generate code that uses (does not use) the string-search â€˜dlmzbâ€™
       instruction on the IBM 405, 440, 464 and 476 processors.  This
       instruction is generated by default when targeting those
       processors.
  
! â€˜-mno-bit-alignâ€™
! â€˜-mbit-alignâ€™
       On System V.4 and embedded PowerPC systems do not (do) force
       structures and unions that contain bit-fields to be aligned to the
       base type of the bit-field.
  
       For example, by default a structure containing nothing but 8
!      â€˜unsignedâ€™ bit-fields of length 1 is aligned to a 4-byte boundary
!      and has a size of 4 bytes.  By using â€˜-mno-bit-alignâ€™, the
       structure is aligned to a 1-byte boundary and is 1 byte in size.
  
! â€˜-mno-strict-alignâ€™
! â€˜-mstrict-alignâ€™
       On System V.4 and embedded PowerPC systems do not (do) assume that
       unaligned memory references are handled by the system.
  
! â€˜-mrelocatableâ€™
! â€˜-mno-relocatableâ€™
       Generate code that allows (does not allow) a static executable to
       be relocated to a different address at run time.  A simple embedded
       PowerPC system loader should relocate the entire contents of
!      â€˜.got2â€™ and 4-byte locations listed in the â€˜.fixupâ€™ section, a
       table of 32-bit addresses generated by this option.  For this to
       work, all objects linked together must be compiled with
!      â€˜-mrelocatableâ€™ or â€˜-mrelocatable-libâ€™.  â€˜-mrelocatableâ€™ code
       aligns the stack to an 8-byte boundary.
  
! â€˜-mrelocatable-libâ€™
! â€˜-mno-relocatable-libâ€™
!      Like â€˜-mrelocatableâ€™, â€˜-mrelocatable-libâ€™ generates a â€˜.fixupâ€™
       section to allow static executables to be relocated at run time,
!      but â€˜-mrelocatable-libâ€™ does not use the smaller stack alignment of
!      â€˜-mrelocatableâ€™.  Objects compiled with â€˜-mrelocatable-libâ€™ may be
       linked with objects compiled with any combination of the
!      â€˜-mrelocatableâ€™ options.
  
! â€˜-mno-tocâ€™
! â€˜-mtocâ€™
       On System V.4 and embedded PowerPC systems do not (do) assume that
       register 2 contains a pointer to a global area pointing to the
       addresses used in the program.
  
! â€˜-mlittleâ€™
! â€˜-mlittle-endianâ€™
       On System V.4 and embedded PowerPC systems compile code for the
!      processor in little-endian mode.  The â€˜-mlittle-endianâ€™ option is
!      the same as â€˜-mlittleâ€™.
  
! â€˜-mbigâ€™
! â€˜-mbig-endianâ€™
       On System V.4 and embedded PowerPC systems compile code for the
!      processor in big-endian mode.  The â€˜-mbig-endianâ€™ option is the
!      same as â€˜-mbigâ€™.
  
! â€˜-mdynamic-no-picâ€™
       On Darwin / macOS systems, compile code so that it is not
       relocatable, but that its external references are relocatable.  The
       resulting code is suitable for applications, but not shared
       libraries.
  
! â€˜-msingle-pic-baseâ€™
       Treat the register used for PIC addressing as read-only, rather
       than loading it in the prologue for each function.  The runtime
       system is responsible for initializing this register with an
       appropriate value before execution begins.
  
! â€˜-mprioritize-restricted-insns=PRIORITYâ€™
       This option controls the priority that is assigned to dispatch-slot
       restricted instructions during the second scheduling pass.  The
!      argument PRIORITY takes the value â€˜0â€™, â€˜1â€™, or â€˜2â€™ to assign no,
       highest, or second-highest (respectively) priority to dispatch-slot
       restricted instructions.
  
! â€˜-msched-costly-dep=DEPENDENCE_TYPEâ€™
       This option controls which dependences are considered costly by the
       target during instruction scheduling.  The argument DEPENDENCE_TYPE
       takes one of the following values:
  
!      â€˜noâ€™
            No dependence is costly.
  
!      â€˜allâ€™
            All dependences are costly.
  
!      â€˜true_store_to_loadâ€™
            A true dependence from store to load is costly.
  
!      â€˜store_to_loadâ€™
            Any dependence from store to load is costly.
  
       NUMBER
            Any dependence for which the latency is greater than or equal
            to NUMBER is costly.
  
! â€˜-minsert-sched-nops=SCHEMEâ€™
       This option controls which NOP insertion scheme is used during the
       second scheduling pass.  The argument SCHEME takes one of the
       following values:
  
!      â€˜noâ€™
            Don't insert NOPs.
  
!      â€˜padâ€™
            Pad with NOPs any dispatch group that has vacant issue slots,
            according to the scheduler's grouping.
  
!      â€˜regroup_exactâ€™
            Insert NOPs to force costly dependent insns into separate
            groups.  Insert exactly as many NOPs as needed to force an
            insn to a new group, according to the estimated processor
*************** These '-m' options are defined for the I
*** 29688,29921 ****
            Insert NOPs to force costly dependent insns into separate
            groups.  Insert NUMBER NOPs to force an insn to a new group.
  
! '-mcall-sysv'
       On System V.4 and embedded PowerPC systems compile code using
       calling conventions that adhere to the March 1995 draft of the
       System V Application Binary Interface, PowerPC processor
       supplement.  This is the default unless you configured GCC using
!      'powerpc-*-eabiaix'.
  
! '-mcall-sysv-eabi'
! '-mcall-eabi'
!      Specify both '-mcall-sysv' and '-meabi' options.
  
! '-mcall-sysv-noeabi'
!      Specify both '-mcall-sysv' and '-mno-eabi' options.
  
! '-mcall-aixdesc'
       On System V.4 and embedded PowerPC systems compile code for the AIX
       operating system.
  
! '-mcall-linux'
       On System V.4 and embedded PowerPC systems compile code for the
       Linux-based GNU system.
  
! '-mcall-freebsd'
       On System V.4 and embedded PowerPC systems compile code for the
       FreeBSD operating system.
  
! '-mcall-netbsd'
       On System V.4 and embedded PowerPC systems compile code for the
       NetBSD operating system.
  
! '-mcall-openbsd'
       On System V.4 and embedded PowerPC systems compile code for the
       OpenBSD operating system.
  
! '-mtraceback=TRACEBACK_TYPE'
       Select the type of traceback table.  Valid values for
!      TRACEBACK_TYPE are 'full', 'part', and 'no'.
  
! '-maix-struct-return'
       Return all structures in memory (as specified by the AIX ABI).
  
! '-msvr4-struct-return'
       Return structures smaller than 8 bytes in registers (as specified
       by the SVR4 ABI).
  
! '-mabi=ABI-TYPE'
       Extend the current ABI with a particular extension, or remove such
!      extension.  Valid values are: 'altivec', 'no-altivec',
!      'ibmlongdouble', 'ieeelongdouble', 'elfv1', 'elfv2', and for AIX:
!      'vec-extabi', 'vec-default'.
  
! '-mabi=ibmlongdouble'
       Change the current ABI to use IBM extended-precision long double.
       This is not likely to work if your system defaults to using IEEE
       extended-precision long double.  If you change the long double type
       from IEEE extended-precision, the compiler issues a warning unless
!      you use the '-Wno-psabi' option (*note Warning Options::).
!      Requires '-mlong-double-128' to be enabled.
  
! '-mabi=ieeelongdouble'
       Change the current ABI to use IEEE extended-precision long double.
       This is not likely to work if your system defaults to using IBM
       extended-precision long double.  If you change the long double type
       from IBM extended-precision, the compiler issues a warning unless
!      you use the '-Wno-psabi' option (*note Warning Options::).
!      Requires '-mlong-double-128' to be enabled.
  
! '-mabi=elfv1'
       Change the current ABI to use the ELFv1 ABI. This is the default
       ABI for big-endian PowerPC 64-bit Linux.  Overriding the default
       ABI requires special system support and is likely to fail in
       spectacular ways.
  
! '-mabi=elfv2'
       Change the current ABI to use the ELFv2 ABI. This is the default
       ABI for little-endian PowerPC 64-bit Linux.  Overriding the default
       ABI requires special system support and is likely to fail in
       spectacular ways.
  
! '-mgnu-attribute'
! '-mno-gnu-attribute'
       Emit .gnu_attribute assembly directives to set tag/value pairs in a
       .gnu.attributes section that specify ABI variations in function
       parameters or return values.
  
! '-mprototype'
! '-mno-prototype'
       On System V.4 and embedded PowerPC systems assume that all calls to
       variable argument functions are properly prototyped.  Otherwise,
       the compiler must insert an instruction before every non-prototyped
!      call to set or clear bit 6 of the condition code register ('CR') to
       indicate whether floating-point values are passed in the
       floating-point registers in case the function takes variable
!      arguments.  With '-mprototype', only calls to prototyped variable
       argument functions set or clear the bit.
  
! '-msim'
       On embedded PowerPC systems, assume that the startup module is
!      called 'sim-crt0.o' and that the standard C libraries are
!      'libsim.a' and 'libc.a'.  This is the default for
!      'powerpc-*-eabisim' configurations.
  
! '-mmvme'
       On embedded PowerPC systems, assume that the startup module is
!      called 'crt0.o' and the standard C libraries are 'libmvme.a' and
!      'libc.a'.
  
! '-mads'
       On embedded PowerPC systems, assume that the startup module is
!      called 'crt0.o' and the standard C libraries are 'libads.a' and
!      'libc.a'.
  
! '-myellowknife'
       On embedded PowerPC systems, assume that the startup module is
!      called 'crt0.o' and the standard C libraries are 'libyk.a' and
!      'libc.a'.
  
! '-mvxworks'
       On System V.4 and embedded PowerPC systems, specify that you are
       compiling for a VxWorks system.
  
! '-memb'
!      On embedded PowerPC systems, set the 'PPC_EMB' bit in the ELF flags
!      header to indicate that 'eabi' extended relocations are used.
  
! '-meabi'
! '-mno-eabi'
       On System V.4 and embedded PowerPC systems do (do not) adhere to
       the Embedded Applications Binary Interface (EABI), which is a set
       of modifications to the System V.4 specifications.  Selecting
!      '-meabi' means that the stack is aligned to an 8-byte boundary, a
!      function '__eabi' is called from 'main' to set up the EABI
!      environment, and the '-msdata' option can use both 'r2' and 'r13'
!      to point to two separate small data areas.  Selecting '-mno-eabi'
       means that the stack is aligned to a 16-byte boundary, no EABI
!      initialization function is called from 'main', and the '-msdata'
!      option only uses 'r13' to point to a single small data area.  The
!      '-meabi' option is on by default if you configured GCC using one of
!      the 'powerpc*-*-eabi*' options.
  
! '-msdata=eabi'
       On System V.4 and embedded PowerPC systems, put small initialized
!      'const' global and static data in the '.sdata2' section, which is
!      pointed to by register 'r2'.  Put small initialized non-'const'
!      global and static data in the '.sdata' section, which is pointed to
!      by register 'r13'.  Put small uninitialized global and static data
!      in the '.sbss' section, which is adjacent to the '.sdata' section.
!      The '-msdata=eabi' option is incompatible with the '-mrelocatable'
!      option.  The '-msdata=eabi' option also sets the '-memb' option.
  
! '-msdata=sysv'
       On System V.4 and embedded PowerPC systems, put small global and
!      static data in the '.sdata' section, which is pointed to by
!      register 'r13'.  Put small uninitialized global and static data in
!      the '.sbss' section, which is adjacent to the '.sdata' section.
!      The '-msdata=sysv' option is incompatible with the '-mrelocatable'
       option.
  
! '-msdata=default'
! '-msdata'
!      On System V.4 and embedded PowerPC systems, if '-meabi' is used,
!      compile code the same as '-msdata=eabi', otherwise compile code the
!      same as '-msdata=sysv'.
  
! '-msdata=data'
       On System V.4 and embedded PowerPC systems, put small global data
!      in the '.sdata' section.  Put small uninitialized global data in
!      the '.sbss' section.  Do not use register 'r13' to address small
!      data however.  This is the default behavior unless other '-msdata'
       options are used.
  
! '-msdata=none'
! '-mno-sdata'
       On embedded PowerPC systems, put all initialized global and static
!      data in the '.data' section, and all uninitialized data in the
!      '.bss' section.
  
! '-mreadonly-in-sdata'
!      Put read-only objects in the '.sdata' section as well.  This is the
       default.
  
! '-mblock-move-inline-limit=NUM'
!      Inline all block moves (such as calls to 'memcpy' or structure
       copies) less than or equal to NUM bytes.  The minimum value for NUM
       is 32 bytes on 32-bit targets and 64 bytes on 64-bit targets.  The
       default value is target-specific.
  
! '-mblock-compare-inline-limit=NUM'
       Generate non-looping inline code for all block compares (such as
!      calls to 'memcmp' or structure compares) less than or equal to NUM
       bytes.  If NUM is 0, all inline expansion (non-loop and loop) of
       block compare is disabled.  The default value is target-specific.
  
! '-mblock-compare-inline-loop-limit=NUM'
       Generate an inline expansion using loop code for all block compares
       that are less than or equal to NUM bytes, but greater than the
       limit for non-loop inline block compare expansion.  If the block
       length is not constant, at most NUM bytes will be compared before
!      'memcmp' is called to compare the remainder of the block.  The
       default value is target-specific.
  
! '-mstring-compare-inline-limit=NUM'
       Compare at most NUM string bytes with inline code.  If the
       difference or end of string is not found at the end of the inline
!      compare a call to 'strcmp' or 'strncmp' will take care of the rest
       of the comparison.  The default is 64 bytes.
  
! '-G NUM'
       On embedded PowerPC systems, put global and static items less than
       or equal to NUM bytes into the small data or BSS sections instead
!      of the normal data or BSS section.  By default, NUM is 8.  The '-G
!      NUM' switch is also passed to the linker.  All modules should be
!      compiled with the same '-G NUM' value.
  
! '-mregnames'
! '-mno-regnames'
       On System V.4 and embedded PowerPC systems do (do not) emit
       register names in the assembly language output using symbolic
       forms.
  
! '-mlongcall'
! '-mno-longcall'
       By default assume that all calls are far away so that a longer and
       more expensive calling sequence is required.  This is required for
       calls farther than 32 megabytes (33,554,432 bytes) from the current
       location.  A short call is generated if the compiler knows the call
       cannot be that far away.  This setting can be overridden by the
!      'shortcall' function attribute, or by '#pragma longcall(0)'.
  
       Some linkers are capable of detecting out-of-range calls and
       generating glue code on the fly.  On these systems, long calls are
--- 29696,29929 ----
            Insert NOPs to force costly dependent insns into separate
            groups.  Insert NUMBER NOPs to force an insn to a new group.
  
! â€˜-mcall-sysvâ€™
       On System V.4 and embedded PowerPC systems compile code using
       calling conventions that adhere to the March 1995 draft of the
       System V Application Binary Interface, PowerPC processor
       supplement.  This is the default unless you configured GCC using
!      â€˜powerpc-*-eabiaixâ€™.
  
! â€˜-mcall-sysv-eabiâ€™
! â€˜-mcall-eabiâ€™
!      Specify both â€˜-mcall-sysvâ€™ and â€˜-meabiâ€™ options.
  
! â€˜-mcall-sysv-noeabiâ€™
!      Specify both â€˜-mcall-sysvâ€™ and â€˜-mno-eabiâ€™ options.
  
! â€˜-mcall-aixdescâ€™
       On System V.4 and embedded PowerPC systems compile code for the AIX
       operating system.
  
! â€˜-mcall-linuxâ€™
       On System V.4 and embedded PowerPC systems compile code for the
       Linux-based GNU system.
  
! â€˜-mcall-freebsdâ€™
       On System V.4 and embedded PowerPC systems compile code for the
       FreeBSD operating system.
  
! â€˜-mcall-netbsdâ€™
       On System V.4 and embedded PowerPC systems compile code for the
       NetBSD operating system.
  
! â€˜-mcall-openbsdâ€™
       On System V.4 and embedded PowerPC systems compile code for the
       OpenBSD operating system.
  
! â€˜-mtraceback=TRACEBACK_TYPEâ€™
       Select the type of traceback table.  Valid values for
!      TRACEBACK_TYPE are â€˜fullâ€™, â€˜partâ€™, and â€˜noâ€™.
  
! â€˜-maix-struct-returnâ€™
       Return all structures in memory (as specified by the AIX ABI).
  
! â€˜-msvr4-struct-returnâ€™
       Return structures smaller than 8 bytes in registers (as specified
       by the SVR4 ABI).
  
! â€˜-mabi=ABI-TYPEâ€™
       Extend the current ABI with a particular extension, or remove such
!      extension.  Valid values are: â€˜altivecâ€™, â€˜no-altivecâ€™,
!      â€˜ibmlongdoubleâ€™, â€˜ieeelongdoubleâ€™, â€˜elfv1â€™, â€˜elfv2â€™, and for AIX:
!      â€˜vec-extabiâ€™, â€˜vec-defaultâ€™.
  
! â€˜-mabi=ibmlongdoubleâ€™
       Change the current ABI to use IBM extended-precision long double.
       This is not likely to work if your system defaults to using IEEE
       extended-precision long double.  If you change the long double type
       from IEEE extended-precision, the compiler issues a warning unless
!      you use the â€˜-Wno-psabiâ€™ option (*note Warning Options::).
!      Requires â€˜-mlong-double-128â€™ to be enabled.
  
! â€˜-mabi=ieeelongdoubleâ€™
       Change the current ABI to use IEEE extended-precision long double.
       This is not likely to work if your system defaults to using IBM
       extended-precision long double.  If you change the long double type
       from IBM extended-precision, the compiler issues a warning unless
!      you use the â€˜-Wno-psabiâ€™ option (*note Warning Options::).
!      Requires â€˜-mlong-double-128â€™ to be enabled.
  
! â€˜-mabi=elfv1â€™
       Change the current ABI to use the ELFv1 ABI. This is the default
       ABI for big-endian PowerPC 64-bit Linux.  Overriding the default
       ABI requires special system support and is likely to fail in
       spectacular ways.
  
! â€˜-mabi=elfv2â€™
       Change the current ABI to use the ELFv2 ABI. This is the default
       ABI for little-endian PowerPC 64-bit Linux.  Overriding the default
       ABI requires special system support and is likely to fail in
       spectacular ways.
  
! â€˜-mgnu-attributeâ€™
! â€˜-mno-gnu-attributeâ€™
       Emit .gnu_attribute assembly directives to set tag/value pairs in a
       .gnu.attributes section that specify ABI variations in function
       parameters or return values.
  
! â€˜-mprototypeâ€™
! â€˜-mno-prototypeâ€™
       On System V.4 and embedded PowerPC systems assume that all calls to
       variable argument functions are properly prototyped.  Otherwise,
       the compiler must insert an instruction before every non-prototyped
!      call to set or clear bit 6 of the condition code register (â€˜CRâ€™) to
       indicate whether floating-point values are passed in the
       floating-point registers in case the function takes variable
!      arguments.  With â€˜-mprototypeâ€™, only calls to prototyped variable
       argument functions set or clear the bit.
  
! â€˜-msimâ€™
       On embedded PowerPC systems, assume that the startup module is
!      called â€˜sim-crt0.oâ€™ and that the standard C libraries are
!      â€˜libsim.aâ€™ and â€˜libc.aâ€™.  This is the default for
!      â€˜powerpc-*-eabisimâ€™ configurations.
  
! â€˜-mmvmeâ€™
       On embedded PowerPC systems, assume that the startup module is
!      called â€˜crt0.oâ€™ and the standard C libraries are â€˜libmvme.aâ€™ and
!      â€˜libc.aâ€™.
  
! â€˜-madsâ€™
       On embedded PowerPC systems, assume that the startup module is
!      called â€˜crt0.oâ€™ and the standard C libraries are â€˜libads.aâ€™ and
!      â€˜libc.aâ€™.
  
! â€˜-myellowknifeâ€™
       On embedded PowerPC systems, assume that the startup module is
!      called â€˜crt0.oâ€™ and the standard C libraries are â€˜libyk.aâ€™ and
!      â€˜libc.aâ€™.
  
! â€˜-mvxworksâ€™
       On System V.4 and embedded PowerPC systems, specify that you are
       compiling for a VxWorks system.
  
! â€˜-membâ€™
!      On embedded PowerPC systems, set the â€˜PPC_EMBâ€™ bit in the ELF flags
!      header to indicate that â€˜eabiâ€™ extended relocations are used.
  
! â€˜-meabiâ€™
! â€˜-mno-eabiâ€™
       On System V.4 and embedded PowerPC systems do (do not) adhere to
       the Embedded Applications Binary Interface (EABI), which is a set
       of modifications to the System V.4 specifications.  Selecting
!      â€˜-meabiâ€™ means that the stack is aligned to an 8-byte boundary, a
!      function â€˜__eabiâ€™ is called from â€˜mainâ€™ to set up the EABI
!      environment, and the â€˜-msdataâ€™ option can use both â€˜r2â€™ and â€˜r13â€™
!      to point to two separate small data areas.  Selecting â€˜-mno-eabiâ€™
       means that the stack is aligned to a 16-byte boundary, no EABI
!      initialization function is called from â€˜mainâ€™, and the â€˜-msdataâ€™
!      option only uses â€˜r13â€™ to point to a single small data area.  The
!      â€˜-meabiâ€™ option is on by default if you configured GCC using one of
!      the â€˜powerpc*-*-eabi*â€™ options.
  
! â€˜-msdata=eabiâ€™
       On System V.4 and embedded PowerPC systems, put small initialized
!      â€˜constâ€™ global and static data in the â€˜.sdata2â€™ section, which is
!      pointed to by register â€˜r2â€™.  Put small initialized non-â€˜constâ€™
!      global and static data in the â€˜.sdataâ€™ section, which is pointed to
!      by register â€˜r13â€™.  Put small uninitialized global and static data
!      in the â€˜.sbssâ€™ section, which is adjacent to the â€˜.sdataâ€™ section.
!      The â€˜-msdata=eabiâ€™ option is incompatible with the â€˜-mrelocatableâ€™
!      option.  The â€˜-msdata=eabiâ€™ option also sets the â€˜-membâ€™ option.
  
! â€˜-msdata=sysvâ€™
       On System V.4 and embedded PowerPC systems, put small global and
!      static data in the â€˜.sdataâ€™ section, which is pointed to by
!      register â€˜r13â€™.  Put small uninitialized global and static data in
!      the â€˜.sbssâ€™ section, which is adjacent to the â€˜.sdataâ€™ section.
!      The â€˜-msdata=sysvâ€™ option is incompatible with the â€˜-mrelocatableâ€™
       option.
  
! â€˜-msdata=defaultâ€™
! â€˜-msdataâ€™
!      On System V.4 and embedded PowerPC systems, if â€˜-meabiâ€™ is used,
!      compile code the same as â€˜-msdata=eabiâ€™, otherwise compile code the
!      same as â€˜-msdata=sysvâ€™.
  
! â€˜-msdata=dataâ€™
       On System V.4 and embedded PowerPC systems, put small global data
!      in the â€˜.sdataâ€™ section.  Put small uninitialized global data in
!      the â€˜.sbssâ€™ section.  Do not use register â€˜r13â€™ to address small
!      data however.  This is the default behavior unless other â€˜-msdataâ€™
       options are used.
  
! â€˜-msdata=noneâ€™
! â€˜-mno-sdataâ€™
       On embedded PowerPC systems, put all initialized global and static
!      data in the â€˜.dataâ€™ section, and all uninitialized data in the
!      â€˜.bssâ€™ section.
  
! â€˜-mreadonly-in-sdataâ€™
!      Put read-only objects in the â€˜.sdataâ€™ section as well.  This is the
       default.
  
! â€˜-mblock-move-inline-limit=NUMâ€™
!      Inline all block moves (such as calls to â€˜memcpyâ€™ or structure
       copies) less than or equal to NUM bytes.  The minimum value for NUM
       is 32 bytes on 32-bit targets and 64 bytes on 64-bit targets.  The
       default value is target-specific.
  
! â€˜-mblock-compare-inline-limit=NUMâ€™
       Generate non-looping inline code for all block compares (such as
!      calls to â€˜memcmpâ€™ or structure compares) less than or equal to NUM
       bytes.  If NUM is 0, all inline expansion (non-loop and loop) of
       block compare is disabled.  The default value is target-specific.
  
! â€˜-mblock-compare-inline-loop-limit=NUMâ€™
       Generate an inline expansion using loop code for all block compares
       that are less than or equal to NUM bytes, but greater than the
       limit for non-loop inline block compare expansion.  If the block
       length is not constant, at most NUM bytes will be compared before
!      â€˜memcmpâ€™ is called to compare the remainder of the block.  The
       default value is target-specific.
  
! â€˜-mstring-compare-inline-limit=NUMâ€™
       Compare at most NUM string bytes with inline code.  If the
       difference or end of string is not found at the end of the inline
!      compare a call to â€˜strcmpâ€™ or â€˜strncmpâ€™ will take care of the rest
       of the comparison.  The default is 64 bytes.
  
! â€˜-G NUMâ€™
       On embedded PowerPC systems, put global and static items less than
       or equal to NUM bytes into the small data or BSS sections instead
!      of the normal data or BSS section.  By default, NUM is 8.  The â€˜-G
!      NUMâ€™ switch is also passed to the linker.  All modules should be
!      compiled with the same â€˜-G NUMâ€™ value.
  
! â€˜-mregnamesâ€™
! â€˜-mno-regnamesâ€™
       On System V.4 and embedded PowerPC systems do (do not) emit
       register names in the assembly language output using symbolic
       forms.
  
! â€˜-mlongcallâ€™
! â€˜-mno-longcallâ€™
       By default assume that all calls are far away so that a longer and
       more expensive calling sequence is required.  This is required for
       calls farther than 32 megabytes (33,554,432 bytes) from the current
       location.  A short call is generated if the compiler knows the call
       cannot be that far away.  This setting can be overridden by the
!      â€˜shortcallâ€™ function attribute, or by â€˜#pragma longcall(0)â€™.
  
       Some linkers are capable of detecting out-of-range calls and
       generating glue code on the fly.  On these systems, long calls are
*************** These '-m' options are defined for the I
*** 29926,29940 ****
  
       On PowerPC64 ELFv2 and 32-bit PowerPC systems with newer GNU
       linkers, GCC can generate long calls using an inline PLT call
!      sequence (see '-mpltseq').  PowerPC with '-mbss-plt' and PowerPC64
       ELFv1 (big-endian) do not support inline PLT calls.
  
!      On Darwin/PPC systems, '#pragma longcall' generates 'jbsr callee,
!      L42', plus a "branch island" (glue code).  The two target addresses
       represent the callee and the branch island.  The Darwin/PPC linker
!      prefers the first address and generates a 'bl callee' if the PPC
!      'bl' instruction reaches the callee directly; otherwise, the linker
!      generates 'bl L42' to call the branch island.  The branch island is
       appended to the body of the calling function; it computes the full
       32-bit address of the callee and jumps to it.
  
--- 29934,29948 ----
  
       On PowerPC64 ELFv2 and 32-bit PowerPC systems with newer GNU
       linkers, GCC can generate long calls using an inline PLT call
!      sequence (see â€˜-mpltseqâ€™).  PowerPC with â€˜-mbss-pltâ€™ and PowerPC64
       ELFv1 (big-endian) do not support inline PLT calls.
  
!      On Darwin/PPC systems, â€˜#pragma longcallâ€™ generates â€˜jbsr callee,
!      L42â€™, plus a â€œbranch islandâ€� (glue code).  The two target addresses
       represent the callee and the branch island.  The Darwin/PPC linker
!      prefers the first address and generates a â€˜bl calleeâ€™ if the PPC
!      â€˜blâ€™ instruction reaches the callee directly; otherwise, the linker
!      generates â€˜bl L42â€™ to call the branch island.  The branch island is
       appended to the body of the calling function; it computes the full
       32-bit address of the callee and jumps to it.
  
*************** These '-m' options are defined for the I
*** 29945,30086 ****
       In the future, GCC may ignore all longcall specifications when the
       linker is known to generate glue.
  
! '-mpltseq'
! '-mno-pltseq'
       Implement (do not implement) -fno-plt and long calls using an
       inline PLT call sequence that supports lazy linking and long calls
       to functions in dlopen'd shared libraries.  Inline PLT calls are
       only supported on PowerPC64 ELFv2 and 32-bit PowerPC systems with
       newer GNU linkers, and are enabled by default if the support is
       detected when configuring GCC, and, in the case of 32-bit PowerPC,
!      if GCC is configured with '--enable-secureplt'.  '-mpltseq' code
!      and '-mbss-plt' 32-bit PowerPC relocatable objects may not be
       linked together.
  
! '-mtls-markers'
! '-mno-tls-markers'
!      Mark (do not mark) calls to '__tls_get_addr' with a relocation
       specifying the function argument.  The relocation allows the linker
       to reliably associate function call with argument setup
       instructions for TLS optimization, which in turn allows GCC to
       better schedule the sequence.
  
! '-mrecip'
! '-mno-recip'
       This option enables use of the reciprocal estimate and reciprocal
       square root estimate instructions with additional Newton-Raphson
       steps to increase precision instead of doing a divide or square
       root and divide for floating-point arguments.  You should use the
!      '-ffast-math' option when using '-mrecip' (or at least
!      '-funsafe-math-optimizations', '-ffinite-math-only',
!      '-freciprocal-math' and '-fno-trapping-math').  Note that while the
       throughput of the sequence is generally higher than the throughput
       of the non-reciprocal instruction, the precision of the sequence
       can be decreased by up to 2 ulp (i.e. the inverse of 1.0 equals
       0.99999994) for reciprocal square roots.
  
! '-mrecip=OPT'
       This option controls which reciprocal estimate instructions may be
       used.  OPT is a comma-separated list of options, which may be
!      preceded by a '!' to invert the option:
  
!      'all'
            Enable all estimate instructions.
  
!      'default'
!           Enable the default instructions, equivalent to '-mrecip'.
  
!      'none'
!           Disable all estimate instructions, equivalent to '-mno-recip'.
  
!      'div'
            Enable the reciprocal approximation instructions for both
            single and double precision.
  
!      'divf'
            Enable the single-precision reciprocal approximation
            instructions.
  
!      'divd'
            Enable the double-precision reciprocal approximation
            instructions.
  
!      'rsqrt'
            Enable the reciprocal square root approximation instructions
            for both single and double precision.
  
!      'rsqrtf'
            Enable the single-precision reciprocal square root
            approximation instructions.
  
!      'rsqrtd'
            Enable the double-precision reciprocal square root
            approximation instructions.
  
!      So, for example, '-mrecip=all,!rsqrtd' enables all of the
!      reciprocal estimate instructions, except for the 'FRSQRTE',
!      'XSRSQRTEDP', and 'XVRSQRTEDP' instructions which handle the
       double-precision reciprocal square root calculations.
  
! '-mrecip-precision'
! '-mno-recip-precision'
       Assume (do not assume) that the reciprocal estimate instructions
       provide higher-precision estimates than is mandated by the PowerPC
!      ABI. Selecting '-mcpu=power6', '-mcpu=power7' or '-mcpu=power8'
!      automatically selects '-mrecip-precision'.  The double-precision
       square root estimate instructions are not generated by default on
       low-precision machines, since they do not provide an estimate that
       converges after three steps.
  
! '-mveclibabi=TYPE'
       Specifies the ABI type to use for vectorizing intrinsics using an
!      external library.  The only type supported at present is 'mass',
       which specifies to use IBM's Mathematical Acceleration Subsystem
       (MASS) libraries for vectorizing intrinsics using external
!      libraries.  GCC currently emits calls to 'acosd2', 'acosf4',
!      'acoshd2', 'acoshf4', 'asind2', 'asinf4', 'asinhd2', 'asinhf4',
!      'atan2d2', 'atan2f4', 'atand2', 'atanf4', 'atanhd2', 'atanhf4',
!      'cbrtd2', 'cbrtf4', 'cosd2', 'cosf4', 'coshd2', 'coshf4', 'erfcd2',
!      'erfcf4', 'erfd2', 'erff4', 'exp2d2', 'exp2f4', 'expd2', 'expf4',
!      'expm1d2', 'expm1f4', 'hypotd2', 'hypotf4', 'lgammad2', 'lgammaf4',
!      'log10d2', 'log10f4', 'log1pd2', 'log1pf4', 'log2d2', 'log2f4',
!      'logd2', 'logf4', 'powd2', 'powf4', 'sind2', 'sinf4', 'sinhd2',
!      'sinhf4', 'sqrtd2', 'sqrtf4', 'tand2', 'tanf4', 'tanhd2', and
!      'tanhf4' when generating code for power7.  Both '-ftree-vectorize'
!      and '-funsafe-math-optimizations' must also be enabled.  The MASS
       libraries must be specified at link time.
  
! '-mfriz'
! '-mno-friz'
!      Generate (do not generate) the 'friz' instruction when the
!      '-funsafe-math-optimizations' option is used to optimize rounding
       of floating-point values to 64-bit integer and back to floating
!      point.  The 'friz' instruction does not return the same value if
       the floating-point number is too large to fit in an integer.
  
! '-mpointers-to-nested-functions'
! '-mno-pointers-to-nested-functions'
       Generate (do not generate) code to load up the static chain
!      register ('r11') when calling through a pointer on AIX and 64-bit
       Linux systems where a function pointer points to a 3-word
       descriptor giving the function address, TOC value to be loaded in
!      register 'r2', and static chain value to be loaded in register
!      'r11'.  The '-mpointers-to-nested-functions' is on by default.  You
       cannot call through pointers to nested functions or pointers to
       functions compiled in other languages that use the static chain if
!      you use '-mno-pointers-to-nested-functions'.
  
! '-msave-toc-indirect'
! '-mno-save-toc-indirect'
       Generate (do not generate) code to save the TOC value in the
       reserved stack location in the function prologue if the function
       calls through a pointer on AIX and 64-bit Linux systems.  If the
       TOC value is not saved in the prologue, it is saved just before the
!      call through the pointer.  The '-mno-save-toc-indirect' option is
       the default.
  
! '-mcompat-align-parm'
! '-mno-compat-align-parm'
       Generate (do not generate) code to pass structure parameters with a
       maximum alignment of 64 bits, for compatibility with older versions
       of GCC.
--- 29953,30094 ----
       In the future, GCC may ignore all longcall specifications when the
       linker is known to generate glue.
  
! â€˜-mpltseqâ€™
! â€˜-mno-pltseqâ€™
       Implement (do not implement) -fno-plt and long calls using an
       inline PLT call sequence that supports lazy linking and long calls
       to functions in dlopen'd shared libraries.  Inline PLT calls are
       only supported on PowerPC64 ELFv2 and 32-bit PowerPC systems with
       newer GNU linkers, and are enabled by default if the support is
       detected when configuring GCC, and, in the case of 32-bit PowerPC,
!      if GCC is configured with â€˜--enable-securepltâ€™.  â€˜-mpltseqâ€™ code
!      and â€˜-mbss-pltâ€™ 32-bit PowerPC relocatable objects may not be
       linked together.
  
! â€˜-mtls-markersâ€™
! â€˜-mno-tls-markersâ€™
!      Mark (do not mark) calls to â€˜__tls_get_addrâ€™ with a relocation
       specifying the function argument.  The relocation allows the linker
       to reliably associate function call with argument setup
       instructions for TLS optimization, which in turn allows GCC to
       better schedule the sequence.
  
! â€˜-mrecipâ€™
! â€˜-mno-recipâ€™
       This option enables use of the reciprocal estimate and reciprocal
       square root estimate instructions with additional Newton-Raphson
       steps to increase precision instead of doing a divide or square
       root and divide for floating-point arguments.  You should use the
!      â€˜-ffast-mathâ€™ option when using â€˜-mrecipâ€™ (or at least
!      â€˜-funsafe-math-optimizationsâ€™, â€˜-ffinite-math-onlyâ€™,
!      â€˜-freciprocal-mathâ€™ and â€˜-fno-trapping-mathâ€™).  Note that while the
       throughput of the sequence is generally higher than the throughput
       of the non-reciprocal instruction, the precision of the sequence
       can be decreased by up to 2 ulp (i.e. the inverse of 1.0 equals
       0.99999994) for reciprocal square roots.
  
! â€˜-mrecip=OPTâ€™
       This option controls which reciprocal estimate instructions may be
       used.  OPT is a comma-separated list of options, which may be
!      preceded by a â€˜!â€™ to invert the option:
  
!      â€˜allâ€™
            Enable all estimate instructions.
  
!      â€˜defaultâ€™
!           Enable the default instructions, equivalent to â€˜-mrecipâ€™.
  
!      â€˜noneâ€™
!           Disable all estimate instructions, equivalent to â€˜-mno-recipâ€™.
  
!      â€˜divâ€™
            Enable the reciprocal approximation instructions for both
            single and double precision.
  
!      â€˜divfâ€™
            Enable the single-precision reciprocal approximation
            instructions.
  
!      â€˜divdâ€™
            Enable the double-precision reciprocal approximation
            instructions.
  
!      â€˜rsqrtâ€™
            Enable the reciprocal square root approximation instructions
            for both single and double precision.
  
!      â€˜rsqrtfâ€™
            Enable the single-precision reciprocal square root
            approximation instructions.
  
!      â€˜rsqrtdâ€™
            Enable the double-precision reciprocal square root
            approximation instructions.
  
!      So, for example, â€˜-mrecip=all,!rsqrtdâ€™ enables all of the
!      reciprocal estimate instructions, except for the â€˜FRSQRTEâ€™,
!      â€˜XSRSQRTEDPâ€™, and â€˜XVRSQRTEDPâ€™ instructions which handle the
       double-precision reciprocal square root calculations.
  
! â€˜-mrecip-precisionâ€™
! â€˜-mno-recip-precisionâ€™
       Assume (do not assume) that the reciprocal estimate instructions
       provide higher-precision estimates than is mandated by the PowerPC
!      ABI. Selecting â€˜-mcpu=power6â€™, â€˜-mcpu=power7â€™ or â€˜-mcpu=power8â€™
!      automatically selects â€˜-mrecip-precisionâ€™.  The double-precision
       square root estimate instructions are not generated by default on
       low-precision machines, since they do not provide an estimate that
       converges after three steps.
  
! â€˜-mveclibabi=TYPEâ€™
       Specifies the ABI type to use for vectorizing intrinsics using an
!      external library.  The only type supported at present is â€˜massâ€™,
       which specifies to use IBM's Mathematical Acceleration Subsystem
       (MASS) libraries for vectorizing intrinsics using external
!      libraries.  GCC currently emits calls to â€˜acosd2â€™, â€˜acosf4â€™,
!      â€˜acoshd2â€™, â€˜acoshf4â€™, â€˜asind2â€™, â€˜asinf4â€™, â€˜asinhd2â€™, â€˜asinhf4â€™,
!      â€˜atan2d2â€™, â€˜atan2f4â€™, â€˜atand2â€™, â€˜atanf4â€™, â€˜atanhd2â€™, â€˜atanhf4â€™,
!      â€˜cbrtd2â€™, â€˜cbrtf4â€™, â€˜cosd2â€™, â€˜cosf4â€™, â€˜coshd2â€™, â€˜coshf4â€™, â€˜erfcd2â€™,
!      â€˜erfcf4â€™, â€˜erfd2â€™, â€˜erff4â€™, â€˜exp2d2â€™, â€˜exp2f4â€™, â€˜expd2â€™, â€˜expf4â€™,
!      â€˜expm1d2â€™, â€˜expm1f4â€™, â€˜hypotd2â€™, â€˜hypotf4â€™, â€˜lgammad2â€™, â€˜lgammaf4â€™,
!      â€˜log10d2â€™, â€˜log10f4â€™, â€˜log1pd2â€™, â€˜log1pf4â€™, â€˜log2d2â€™, â€˜log2f4â€™,
!      â€˜logd2â€™, â€˜logf4â€™, â€˜powd2â€™, â€˜powf4â€™, â€˜sind2â€™, â€˜sinf4â€™, â€˜sinhd2â€™,
!      â€˜sinhf4â€™, â€˜sqrtd2â€™, â€˜sqrtf4â€™, â€˜tand2â€™, â€˜tanf4â€™, â€˜tanhd2â€™, and
!      â€˜tanhf4â€™ when generating code for power7.  Both â€˜-ftree-vectorizeâ€™
!      and â€˜-funsafe-math-optimizationsâ€™ must also be enabled.  The MASS
       libraries must be specified at link time.
  
! â€˜-mfrizâ€™
! â€˜-mno-frizâ€™
!      Generate (do not generate) the â€˜frizâ€™ instruction when the
!      â€˜-funsafe-math-optimizationsâ€™ option is used to optimize rounding
       of floating-point values to 64-bit integer and back to floating
!      point.  The â€˜frizâ€™ instruction does not return the same value if
       the floating-point number is too large to fit in an integer.
  
! â€˜-mpointers-to-nested-functionsâ€™
! â€˜-mno-pointers-to-nested-functionsâ€™
       Generate (do not generate) code to load up the static chain
!      register (â€˜r11â€™) when calling through a pointer on AIX and 64-bit
       Linux systems where a function pointer points to a 3-word
       descriptor giving the function address, TOC value to be loaded in
!      register â€˜r2â€™, and static chain value to be loaded in register
!      â€˜r11â€™.  The â€˜-mpointers-to-nested-functionsâ€™ is on by default.  You
       cannot call through pointers to nested functions or pointers to
       functions compiled in other languages that use the static chain if
!      you use â€˜-mno-pointers-to-nested-functionsâ€™.
  
! â€˜-msave-toc-indirectâ€™
! â€˜-mno-save-toc-indirectâ€™
       Generate (do not generate) code to save the TOC value in the
       reserved stack location in the function prologue if the function
       calls through a pointer on AIX and 64-bit Linux systems.  If the
       TOC value is not saved in the prologue, it is saved just before the
!      call through the pointer.  The â€˜-mno-save-toc-indirectâ€™ option is
       the default.
  
! â€˜-mcompat-align-parmâ€™
! â€˜-mno-compat-align-parmâ€™
       Generate (do not generate) code to pass structure parameters with a
       maximum alignment of 64 bits, for compatibility with older versions
       of GCC.
*************** These '-m' options are defined for the I
*** 30092,30147 ****
       code that is compatible with functions compiled with older versions
       of GCC.
  
!      The '-mno-compat-align-parm' option is the default.
  
! '-mstack-protector-guard=GUARD'
! '-mstack-protector-guard-reg=REG'
! '-mstack-protector-guard-offset=OFFSET'
       Generate stack protection code using canary at GUARD.  Supported
!      locations are 'global' for global canary or 'tls' for per-thread
       canary in the TLS block (the default with GNU libc version 2.4 or
       later).
  
       With the latter choice the options
!      '-mstack-protector-guard-reg=REG' and
!      '-mstack-protector-guard-offset=OFFSET' furthermore specify which
       register to use as base register for reading the canary, and from
       what offset from that base register.  The default for those is as
       specified in the relevant ABI.
  
! '-mpcrel'
! '-mno-pcrel'
!      Generate (do not generate) pc-relative addressing.  The '-mpcrel'
!      option requires that the medium code model ('-mcmodel=medium') and
!      prefixed addressing ('-mprefixed') options are enabled.
  
! '-mprefixed'
! '-mno-prefixed'
       Generate (do not generate) addressing modes using prefixed load and
!      store instructions.  The '-mprefixed' option requires that the
!      option '-mcpu=power10' (or later) is enabled.
  
! '-mmma'
! '-mno-mma'
!      Generate (do not generate) the MMA instructions.  The '-mma' option
!      requires that the option '-mcpu=power10' (or later) is enabled.
  
! '-mrop-protect'
! '-mno-rop-protect'
       Generate (do not generate) ROP protection instructions when the
       target processor supports them.  Currently this option disables the
!      shrink-wrap optimization ('-fshrink-wrap').
  
! '-mprivileged'
! '-mno-privileged'
       Generate (do not generate) code that will run in privileged state.
  
! '-mblock-ops-unaligned-vsx'
! '-mno-block-ops-unaligned-vsx'
       Generate (do not generate) unaligned vsx loads and stores for
!      inline expansion of 'memcpy' and 'memmove'.
  
! '--param rs6000-vect-unroll-limit='
       The vectorizer will check with target information to determine
       whether it would be beneficial to unroll the main vectorized loop
       and by how much.  This parameter sets the upper bound of how much
--- 30100,30155 ----
       code that is compatible with functions compiled with older versions
       of GCC.
  
!      The â€˜-mno-compat-align-parmâ€™ option is the default.
  
! â€˜-mstack-protector-guard=GUARDâ€™
! â€˜-mstack-protector-guard-reg=REGâ€™
! â€˜-mstack-protector-guard-offset=OFFSETâ€™
       Generate stack protection code using canary at GUARD.  Supported
!      locations are â€˜globalâ€™ for global canary or â€˜tlsâ€™ for per-thread
       canary in the TLS block (the default with GNU libc version 2.4 or
       later).
  
       With the latter choice the options
!      â€˜-mstack-protector-guard-reg=REGâ€™ and
!      â€˜-mstack-protector-guard-offset=OFFSETâ€™ furthermore specify which
       register to use as base register for reading the canary, and from
       what offset from that base register.  The default for those is as
       specified in the relevant ABI.
  
! â€˜-mpcrelâ€™
! â€˜-mno-pcrelâ€™
!      Generate (do not generate) pc-relative addressing.  The â€˜-mpcrelâ€™
!      option requires that the medium code model (â€˜-mcmodel=mediumâ€™) and
!      prefixed addressing (â€˜-mprefixedâ€™) options are enabled.
  
! â€˜-mprefixedâ€™
! â€˜-mno-prefixedâ€™
       Generate (do not generate) addressing modes using prefixed load and
!      store instructions.  The â€˜-mprefixedâ€™ option requires that the
!      option â€˜-mcpu=power10â€™ (or later) is enabled.
  
! â€˜-mmmaâ€™
! â€˜-mno-mmaâ€™
!      Generate (do not generate) the MMA instructions.  The â€˜-mmaâ€™ option
!      requires that the option â€˜-mcpu=power10â€™ (or later) is enabled.
  
! â€˜-mrop-protectâ€™
! â€˜-mno-rop-protectâ€™
       Generate (do not generate) ROP protection instructions when the
       target processor supports them.  Currently this option disables the
!      shrink-wrap optimization (â€˜-fshrink-wrapâ€™).
  
! â€˜-mprivilegedâ€™
! â€˜-mno-privilegedâ€™
       Generate (do not generate) code that will run in privileged state.
  
! â€˜-mblock-ops-unaligned-vsxâ€™
! â€˜-mno-block-ops-unaligned-vsxâ€™
       Generate (do not generate) unaligned vsx loads and stores for
!      inline expansion of â€˜memcpyâ€™ and â€˜memmoveâ€™.
  
! â€˜--param rs6000-vect-unroll-limit=â€™
       The vectorizer will check with target information to determine
       whether it would be beneficial to unroll the main vectorized loop
       and by how much.  This parameter sets the upper bound of how much
*************** File: gcc.info,  Node: RX Options,  Next
*** 30156,30206 ****
  
  These command-line options are defined for RX targets:
  
! '-m64bit-doubles'
! '-m32bit-doubles'
!      Make the 'double' data type be 64 bits ('-m64bit-doubles') or 32
!      bits ('-m32bit-doubles') in size.  The default is
!      '-m32bit-doubles'.  _Note_ RX floating-point hardware only works on
!      32-bit values, which is why the default is '-m32bit-doubles'.
  
! '-fpu'
! '-nofpu'
!      Enables ('-fpu') or disables ('-nofpu') the use of RX
       floating-point hardware.  The default is enabled for the RX600
       series and disabled for the RX200 series.
  
       Floating-point instructions are only generated for 32-bit
       floating-point values, however, so the FPU hardware is not used for
!      doubles if the '-m64bit-doubles' option is used.
  
!      _Note_ If the '-fpu' option is enabled then
!      '-funsafe-math-optimizations' is also enabled automatically.  This
       is because the RX FPU instructions are themselves unsafe.
  
! '-mcpu=NAME'
       Selects the type of RX CPU to be targeted.  Currently three types
!      are supported, the generic 'RX600' and 'RX200' series hardware and
!      the specific 'RX610' CPU. The default is 'RX600'.
  
!      The only difference between 'RX600' and 'RX610' is that the 'RX610'
!      does not support the 'MVTIPL' instruction.
  
!      The 'RX200' series does not have a hardware floating-point unit and
!      so '-nofpu' is enabled by default when this type is selected.
  
! '-mbig-endian-data'
! '-mlittle-endian-data'
       Store data (but not code) in the big-endian format.  The default is
!      '-mlittle-endian-data', i.e. to store data in the little-endian
       format.
  
! '-msmall-data-limit=N'
       Specifies the maximum size in bytes of global and static variables
       which can be placed into the small data area.  Using the small data
       area can lead to smaller and faster code, but the size of area is
       limited and it is up to the programmer to ensure that the area does
       not overflow.  Also when the small data area is used one of the
!      RX's registers (usually 'r13') is reserved for use pointing to this
       area, so it is no longer available for use by the compiler.  This
       could result in slower and/or larger code if variables are pushed
       onto the stack instead of being held in this register.
--- 30164,30214 ----
  
  These command-line options are defined for RX targets:
  
! â€˜-m64bit-doublesâ€™
! â€˜-m32bit-doublesâ€™
!      Make the â€˜doubleâ€™ data type be 64 bits (â€˜-m64bit-doublesâ€™) or 32
!      bits (â€˜-m32bit-doublesâ€™) in size.  The default is
!      â€˜-m32bit-doublesâ€™.  _Note_ RX floating-point hardware only works on
!      32-bit values, which is why the default is â€˜-m32bit-doublesâ€™.
  
! â€˜-fpuâ€™
! â€˜-nofpuâ€™
!      Enables (â€˜-fpuâ€™) or disables (â€˜-nofpuâ€™) the use of RX
       floating-point hardware.  The default is enabled for the RX600
       series and disabled for the RX200 series.
  
       Floating-point instructions are only generated for 32-bit
       floating-point values, however, so the FPU hardware is not used for
!      doubles if the â€˜-m64bit-doublesâ€™ option is used.
  
!      _Note_ If the â€˜-fpuâ€™ option is enabled then
!      â€˜-funsafe-math-optimizationsâ€™ is also enabled automatically.  This
       is because the RX FPU instructions are themselves unsafe.
  
! â€˜-mcpu=NAMEâ€™
       Selects the type of RX CPU to be targeted.  Currently three types
!      are supported, the generic â€˜RX600â€™ and â€˜RX200â€™ series hardware and
!      the specific â€˜RX610â€™ CPU. The default is â€˜RX600â€™.
  
!      The only difference between â€˜RX600â€™ and â€˜RX610â€™ is that the â€˜RX610â€™
!      does not support the â€˜MVTIPLâ€™ instruction.
  
!      The â€˜RX200â€™ series does not have a hardware floating-point unit and
!      so â€˜-nofpuâ€™ is enabled by default when this type is selected.
  
! â€˜-mbig-endian-dataâ€™
! â€˜-mlittle-endian-dataâ€™
       Store data (but not code) in the big-endian format.  The default is
!      â€˜-mlittle-endian-dataâ€™, i.e. to store data in the little-endian
       format.
  
! â€˜-msmall-data-limit=Nâ€™
       Specifies the maximum size in bytes of global and static variables
       which can be placed into the small data area.  Using the small data
       area can lead to smaller and faster code, but the size of area is
       limited and it is up to the programmer to ensure that the area does
       not overflow.  Also when the small data area is used one of the
!      RX's registers (usually â€˜r13â€™) is reserved for use pointing to this
       area, so it is no longer available for use by the compiler.  This
       could result in slower and/or larger code if variables are pushed
       onto the stack instead of being held in this register.
*************** These command-line options are defined f
*** 30211,30235 ****
  
       The default value is zero, which disables this feature.  Note, this
       feature is not enabled by default with higher optimization levels
!      ('-O2' etc) because of the potentially detrimental effects of
       reserving a register.  It is up to the programmer to experiment and
       discover whether this feature is of benefit to their program.  See
!      the description of the '-mpid' option for a description of how the
       actual register to hold the small data area pointer is chosen.
  
! '-msim'
! '-mno-sim'
       Use the simulator runtime.  The default is to use the libgloss
       board-specific runtime.
  
! '-mas100-syntax'
! '-mno-as100-syntax'
       When generating assembler output use a syntax that is compatible
       with Renesas's AS100 assembler.  This syntax can also be handled by
       the GAS assembler, but it has some restrictions so it is not
       generated by default.
  
! '-mmax-constant-size=N'
       Specifies the maximum size, in bytes, of a constant that can be
       used as an operand in a RX instruction.  Although the RX
       instruction set does allow constants of up to 4 bytes in length to
--- 30219,30243 ----
  
       The default value is zero, which disables this feature.  Note, this
       feature is not enabled by default with higher optimization levels
!      (â€˜-O2â€™ etc) because of the potentially detrimental effects of
       reserving a register.  It is up to the programmer to experiment and
       discover whether this feature is of benefit to their program.  See
!      the description of the â€˜-mpidâ€™ option for a description of how the
       actual register to hold the small data area pointer is chosen.
  
! â€˜-msimâ€™
! â€˜-mno-simâ€™
       Use the simulator runtime.  The default is to use the libgloss
       board-specific runtime.
  
! â€˜-mas100-syntaxâ€™
! â€˜-mno-as100-syntaxâ€™
       When generating assembler output use a syntax that is compatible
       with Renesas's AS100 assembler.  This syntax can also be handled by
       the GAS assembler, but it has some restrictions so it is not
       generated by default.
  
! â€˜-mmax-constant-size=Nâ€™
       Specifies the maximum size, in bytes, of a constant that can be
       used as an operand in a RX instruction.  Although the RX
       instruction set does allow constants of up to 4 bytes in length to
*************** These command-line options are defined f
*** 30242,30270 ****
       The value N can be between 0 and 4.  A value of 0 (the default) or
       4 means that constants of any size are allowed.
  
! '-mrelax'
       Enable linker relaxation.  Linker relaxation is a process whereby
       the linker attempts to reduce the size of a program by finding
       shorter versions of various instructions.  Disabled by default.
  
! '-mint-register=N'
       Specify the number of registers to reserve for fast interrupt
       handler functions.  The value N can be between 0 and 4.  A value of
!      1 means that register 'r13' is reserved for the exclusive use of
!      fast interrupt handlers.  A value of 2 reserves 'r13' and 'r12'.  A
!      value of 3 reserves 'r13', 'r12' and 'r11', and a value of 4
!      reserves 'r13' through 'r10'.  A value of 0, the default, does not
       reserve any registers.
  
! '-msave-acc-in-interrupts'
       Specifies that interrupt handler functions should preserve the
       accumulator register.  This is only necessary if normal code might
       use the accumulator register, for example because it performs
       64-bit multiplications.  The default is to ignore the accumulator
       as this makes the interrupt handlers faster.
  
! '-mpid'
! '-mno-pid'
       Enables the generation of position independent data.  When enabled
       any access to constant data is done via an offset from a base
       address held in a register.  This allows the location of constant
--- 30250,30278 ----
       The value N can be between 0 and 4.  A value of 0 (the default) or
       4 means that constants of any size are allowed.
  
! â€˜-mrelaxâ€™
       Enable linker relaxation.  Linker relaxation is a process whereby
       the linker attempts to reduce the size of a program by finding
       shorter versions of various instructions.  Disabled by default.
  
! â€˜-mint-register=Nâ€™
       Specify the number of registers to reserve for fast interrupt
       handler functions.  The value N can be between 0 and 4.  A value of
!      1 means that register â€˜r13â€™ is reserved for the exclusive use of
!      fast interrupt handlers.  A value of 2 reserves â€˜r13â€™ and â€˜r12â€™.  A
!      value of 3 reserves â€˜r13â€™, â€˜r12â€™ and â€˜r11â€™, and a value of 4
!      reserves â€˜r13â€™ through â€˜r10â€™.  A value of 0, the default, does not
       reserve any registers.
  
! â€˜-msave-acc-in-interruptsâ€™
       Specifies that interrupt handler functions should preserve the
       accumulator register.  This is only necessary if normal code might
       use the accumulator register, for example because it performs
       64-bit multiplications.  The default is to ignore the accumulator
       as this makes the interrupt handlers faster.
  
! â€˜-mpidâ€™
! â€˜-mno-pidâ€™
       Enables the generation of position independent data.  When enabled
       any access to constant data is done via an offset from a base
       address held in a register.  This allows the location of constant
*************** These command-line options are defined f
*** 30273,30306 ****
       tight memory constraints.  Data that can be modified is not
       affected by this option.
  
!      Note, using this feature reserves a register, usually 'r13', for
       the constant data base address.  This can result in slower and/or
       larger code, especially in complicated functions.
  
       The actual register chosen to hold the constant data base address
!      depends upon whether the '-msmall-data-limit' and/or the
!      '-mint-register' command-line options are enabled.  Starting with
!      register 'r13' and proceeding downwards, registers are allocated
!      first to satisfy the requirements of '-mint-register', then '-mpid'
!      and finally '-msmall-data-limit'.  Thus it is possible for the
!      small data area register to be 'r8' if both '-mint-register=4' and
!      '-mpid' are specified on the command line.
  
       By default this feature is not enabled.  The default can be
!      restored via the '-mno-pid' command-line option.
  
! '-mno-warn-multiple-fast-interrupts'
! '-mwarn-multiple-fast-interrupts'
       Prevents GCC from issuing a warning message if it finds more than
       one fast interrupt handler when it is compiling a file.  The
       default is to issue a warning for each extra fast interrupt handler
       found, as the RX only supports one such interrupt.
  
! '-mallow-string-insns'
! '-mno-allow-string-insns'
       Enables or disables the use of the string manipulation instructions
!      'SMOVF', 'SCMPU', 'SMOVB', 'SMOVU', 'SUNTIL' 'SWHILE' and also the
!      'RMPA' instruction.  These instructions may prefetch data, which is
       not safe to do if accessing an I/O register.  (See section 12.2.7
       of the RX62N Group User's Manual for more information).
  
--- 30281,30314 ----
       tight memory constraints.  Data that can be modified is not
       affected by this option.
  
!      Note, using this feature reserves a register, usually â€˜r13â€™, for
       the constant data base address.  This can result in slower and/or
       larger code, especially in complicated functions.
  
       The actual register chosen to hold the constant data base address
!      depends upon whether the â€˜-msmall-data-limitâ€™ and/or the
!      â€˜-mint-registerâ€™ command-line options are enabled.  Starting with
!      register â€˜r13â€™ and proceeding downwards, registers are allocated
!      first to satisfy the requirements of â€˜-mint-registerâ€™, then â€˜-mpidâ€™
!      and finally â€˜-msmall-data-limitâ€™.  Thus it is possible for the
!      small data area register to be â€˜r8â€™ if both â€˜-mint-register=4â€™ and
!      â€˜-mpidâ€™ are specified on the command line.
  
       By default this feature is not enabled.  The default can be
!      restored via the â€˜-mno-pidâ€™ command-line option.
  
! â€˜-mno-warn-multiple-fast-interruptsâ€™
! â€˜-mwarn-multiple-fast-interruptsâ€™
       Prevents GCC from issuing a warning message if it finds more than
       one fast interrupt handler when it is compiling a file.  The
       default is to issue a warning for each extra fast interrupt handler
       found, as the RX only supports one such interrupt.
  
! â€˜-mallow-string-insnsâ€™
! â€˜-mno-allow-string-insnsâ€™
       Enables or disables the use of the string manipulation instructions
!      â€˜SMOVFâ€™, â€˜SCMPUâ€™, â€˜SMOVBâ€™, â€˜SMOVUâ€™, â€˜SUNTILâ€™ â€˜SWHILEâ€™ and also the
!      â€˜RMPAâ€™ instruction.  These instructions may prefetch data, which is
       not safe to do if accessing an I/O register.  (See section 12.2.7
       of the RX62N Group User's Manual for more information).
  
*************** These command-line options are defined f
*** 30308,30334 ****
       for GCC to reliably detect all circumstances where a string
       instruction might be used to access an I/O register, so their use
       cannot be disabled automatically.  Instead it is reliant upon the
!      programmer to use the '-mno-allow-string-insns' option if their
       program accesses I/O space.
  
       When the instructions are enabled GCC defines the C preprocessor
!      symbol '__RX_ALLOW_STRING_INSNS__', otherwise it defines the symbol
!      '__RX_DISALLOW_STRING_INSNS__'.
  
! '-mjsr'
! '-mno-jsr'
!      Use only (or not only) 'JSR' instructions to access functions.
!      This option can be used when code size exceeds the range of 'BSR'
!      instructions.  Note that '-mno-jsr' does not mean to not use 'JSR'
       but instead means that any type of branch may be used.
  
!  _Note:_ The generic GCC command-line option '-ffixed-REG' has special
! significance to the RX port when used with the 'interrupt' function
  attribute.  This attribute indicates a function intended to process fast
! interrupts.  GCC ensures that it only uses the registers 'r10', 'r11',
! 'r12' and/or 'r13' and only provided that the normal use of the
! corresponding registers have been restricted via the '-ffixed-REG' or
! '-mint-register' command-line options.
  
  
  File: gcc.info,  Node: S/390 and zSeries Options,  Next: SH Options,  Prev: RX Options,  Up: Submodel Options
--- 30316,30342 ----
       for GCC to reliably detect all circumstances where a string
       instruction might be used to access an I/O register, so their use
       cannot be disabled automatically.  Instead it is reliant upon the
!      programmer to use the â€˜-mno-allow-string-insnsâ€™ option if their
       program accesses I/O space.
  
       When the instructions are enabled GCC defines the C preprocessor
!      symbol â€˜__RX_ALLOW_STRING_INSNS__â€™, otherwise it defines the symbol
!      â€˜__RX_DISALLOW_STRING_INSNS__â€™.
  
! â€˜-mjsrâ€™
! â€˜-mno-jsrâ€™
!      Use only (or not only) â€˜JSRâ€™ instructions to access functions.
!      This option can be used when code size exceeds the range of â€˜BSRâ€™
!      instructions.  Note that â€˜-mno-jsrâ€™ does not mean to not use â€˜JSRâ€™
       but instead means that any type of branch may be used.
  
!  _Note:_ The generic GCC command-line option â€˜-ffixed-REGâ€™ has special
! significance to the RX port when used with the â€˜interruptâ€™ function
  attribute.  This attribute indicates a function intended to process fast
! interrupts.  GCC ensures that it only uses the registers â€˜r10â€™, â€˜r11â€™,
! â€˜r12â€™ and/or â€˜r13â€™ and only provided that the normal use of the
! corresponding registers have been restricted via the â€˜-ffixed-REGâ€™ or
! â€˜-mint-registerâ€™ command-line options.
  
  
  File: gcc.info,  Node: S/390 and zSeries Options,  Next: SH Options,  Prev: RX Options,  Up: Submodel Options
*************** File: gcc.info,  Node: S/390 and zSeries
*** 30336,30523 ****
  3.20.44 S/390 and zSeries Options
  ---------------------------------
  
! These are the '-m' options defined for the S/390 and zSeries
  architecture.
  
! '-mhard-float'
! '-msoft-float'
       Use (do not use) the hardware floating-point instructions and
!      registers for floating-point operations.  When '-msoft-float' is
!      specified, functions in 'libgcc.a' are used to perform
!      floating-point operations.  When '-mhard-float' is specified, the
       compiler generates IEEE floating-point instructions.  This is the
       default.
  
! '-mhard-dfp'
! '-mno-hard-dfp'
       Use (do not use) the hardware decimal-floating-point instructions
!      for decimal-floating-point operations.  When '-mno-hard-dfp' is
!      specified, functions in 'libgcc.a' are used to perform
!      decimal-floating-point operations.  When '-mhard-dfp' is specified,
       the compiler generates decimal-floating-point hardware
!      instructions.  This is the default for '-march=z9-ec' or higher.
  
! '-mlong-double-64'
! '-mlong-double-128'
!      These switches control the size of 'long double' type.  A size of
!      64 bits makes the 'long double' type equivalent to the 'double'
       type.  This is the default.
  
! '-mbackchain'
! '-mno-backchain'
       Store (do not store) the address of the caller's frame as backchain
       pointer into the callee's stack frame.  A backchain may be needed
       to allow debugging using tools that do not understand DWARF call
!      frame information.  When '-mno-packed-stack' is in effect, the
       backchain pointer is stored at the bottom of the stack frame; when
!      '-mpacked-stack' is in effect, the backchain is placed into the
       topmost word of the 96/160 byte register save area.
  
!      In general, code compiled with '-mbackchain' is call-compatible
!      with code compiled with '-mno-backchain'; however, use of the
       backchain for debugging purposes usually requires that the whole
!      binary is built with '-mbackchain'.  Note that the combination of
!      '-mbackchain', '-mpacked-stack' and '-mhard-float' is not
!      supported.  In order to build a linux kernel use '-msoft-float'.
  
       The default is to not maintain the backchain.
  
! '-mpacked-stack'
! '-mno-packed-stack'
!      Use (do not use) the packed stack layout.  When '-mno-packed-stack'
       is specified, the compiler uses the all fields of the 96/160 byte
       register save area only for their default purpose; unused fields
!      still take up stack space.  When '-mpacked-stack' is specified,
       register save slots are densely packed at the top of the register
       save area; unused space is reused for other purposes, allowing for
       more efficient use of the available stack space.  However, when
!      '-mbackchain' is also in effect, the topmost word of the save area
       is always used to store the backchain, and the return address
       register is always saved two words below the backchain.
  
       As long as the stack frame backchain is not used, code generated
!      with '-mpacked-stack' is call-compatible with code generated with
!      '-mno-packed-stack'.  Note that some non-FSF releases of GCC 2.95
       for S/390 or zSeries generated code that uses the stack frame
       backchain at run time, not just for debugging purposes.  Such code
!      is not call-compatible with code compiled with '-mpacked-stack'.
!      Also, note that the combination of '-mbackchain', '-mpacked-stack'
!      and '-mhard-float' is not supported.  In order to build a linux
!      kernel use '-msoft-float'.
  
       The default is to not use the packed stack layout.
  
! '-msmall-exec'
! '-mno-small-exec'
!      Generate (or do not generate) code using the 'bras' instruction to
       do subroutine calls.  This only works reliably if the total
       executable size does not exceed 64k.  The default is to use the
!      'basr' instruction instead, which does not have this limitation.
  
! '-m64'
! '-m31'
!      When '-m31' is specified, generate code compliant to the GNU/Linux
!      for S/390 ABI.  When '-m64' is specified, generate code compliant
       to the GNU/Linux for zSeries ABI.  This allows GCC in particular to
!      generate 64-bit instructions.  For the 's390' targets, the default
!      is '-m31', while the 's390x' targets default to '-m64'.
  
! '-mzarch'
! '-mesa'
!      When '-mzarch' is specified, generate code using the instructions
!      available on z/Architecture.  When '-mesa' is specified, generate
       code using the instructions available on ESA/390.  Note that
!      '-mesa' is not possible with '-m64'.  When generating code
!      compliant to the GNU/Linux for S/390 ABI, the default is '-mesa'.
       When generating code compliant to the GNU/Linux for zSeries ABI,
!      the default is '-mzarch'.
  
! '-mhtm'
! '-mno-htm'
!      The '-mhtm' option enables a set of builtins making use of
       instructions available with the transactional execution facility
       introduced with the IBM zEnterprise EC12 machine generation *note
!      S/390 System z Built-in Functions::.  '-mhtm' is enabled by default
!      when using '-march=zEC12'.
  
! '-mvx'
! '-mno-vx'
!      When '-mvx' is specified, generate code using the instructions
       available with the vector extension facility introduced with the
       IBM z13 machine generation.  This option changes the ABI for some
       vector type values with regard to alignment and calling
       conventions.  In case vector type values are being used in an
!      ABI-relevant context a GAS '.gnu_attribute' command will be added
!      to mark the resulting binary with the ABI used.  '-mvx' is enabled
!      by default when using '-march=z13'.
  
! '-mzvector'
! '-mno-zvector'
!      The '-mzvector' option enables vector language extensions and
       builtins using instructions available with the vector extension
       facility introduced with the IBM z13 machine generation.  This
!      option adds support for 'vector' to be used as a keyword to define
!      vector type variables and arguments.  'vector' is only available
       when GNU extensions are enabled.  It will not be expanded when
!      requesting strict standard compliance e.g. with '-std=c99'.  In
!      addition to the GCC low-level builtins '-mzvector' enables a set of
       builtins added for compatibility with AltiVec-style implementations
       like Power and Cell.  In order to make use of these builtins the
!      header file 'vecintrin.h' needs to be included.  '-mzvector' is
       disabled by default.
  
! '-mmvcle'
! '-mno-mvcle'
!      Generate (or do not generate) code using the 'mvcle' instruction to
!      perform block moves.  When '-mno-mvcle' is specified, use a 'mvc'
       loop instead.  This is the default unless optimizing for size.
  
! '-mdebug'
! '-mno-debug'
       Print (or do not print) additional debug information when
       compiling.  The default is to not print debug information.
  
! '-march=CPU-TYPE'
       Generate code that runs on CPU-TYPE, which is the name of a system
       representing a certain processor type.  Possible values for
!      CPU-TYPE are 'z900'/'arch5', 'z990'/'arch6', 'z9-109',
!      'z9-ec'/'arch7', 'z10'/'arch8', 'z196'/'arch9', 'zEC12',
!      'z13'/'arch11', 'z14'/'arch12', 'z15'/'arch13', 'z16'/'arch14',
!      'z17'/'arch15', and 'native'.
  
!      The default is '-march=z900'.
  
!      Specifying 'native' as cpu type can be used to select the best
!      architecture option for the host processor.  '-march=native' has no
       effect if GCC does not recognize the processor.
  
! '-mtune=CPU-TYPE'
       Tune to CPU-TYPE everything applicable about the generated code,
       except for the ABI and the set of available instructions.  The list
!      of CPU-TYPE values is the same as for '-march'.  The default is the
!      value used for '-march'.
  
! '-mtpf-trace'
! '-mno-tpf-trace'
       Generate code that adds (does not add) in TPF OS specific branches
       to trace routines in the operating system.  This option is off by
       default, even when compiling for the TPF OS.
  
! '-mtpf-trace-skip'
! '-mno-tpf-trace-skip'
       Generate code that changes (does not change) the default branch
!      targets enabled by '-mtpf-trace' to point to specialized trace
       routines providing the ability of selectively skipping function
       trace entries for the TPF OS. This option is off by default, even
!      when compiling for the TPF OS and specifying '-mtpf-trace'.
  
! '-mfused-madd'
! '-mno-fused-madd'
       Generate code that uses (does not use) the floating-point multiply
       and accumulate instructions.  These instructions are generated by
       default if hardware floating point is used.
  
! '-mwarn-framesize=FRAMESIZE'
       Emit a warning if the current function exceeds the given frame
       size.  Because this is a compile-time check it doesn't need to be a
       real problem when the program runs.  It is intended to identify
--- 30344,30531 ----
  3.20.44 S/390 and zSeries Options
  ---------------------------------
  
! These are the â€˜-mâ€™ options defined for the S/390 and zSeries
  architecture.
  
! â€˜-mhard-floatâ€™
! â€˜-msoft-floatâ€™
       Use (do not use) the hardware floating-point instructions and
!      registers for floating-point operations.  When â€˜-msoft-floatâ€™ is
!      specified, functions in â€˜libgcc.aâ€™ are used to perform
!      floating-point operations.  When â€˜-mhard-floatâ€™ is specified, the
       compiler generates IEEE floating-point instructions.  This is the
       default.
  
! â€˜-mhard-dfpâ€™
! â€˜-mno-hard-dfpâ€™
       Use (do not use) the hardware decimal-floating-point instructions
!      for decimal-floating-point operations.  When â€˜-mno-hard-dfpâ€™ is
!      specified, functions in â€˜libgcc.aâ€™ are used to perform
!      decimal-floating-point operations.  When â€˜-mhard-dfpâ€™ is specified,
       the compiler generates decimal-floating-point hardware
!      instructions.  This is the default for â€˜-march=z9-ecâ€™ or higher.
  
! â€˜-mlong-double-64â€™
! â€˜-mlong-double-128â€™
!      These switches control the size of â€˜long doubleâ€™ type.  A size of
!      64 bits makes the â€˜long doubleâ€™ type equivalent to the â€˜doubleâ€™
       type.  This is the default.
  
! â€˜-mbackchainâ€™
! â€˜-mno-backchainâ€™
       Store (do not store) the address of the caller's frame as backchain
       pointer into the callee's stack frame.  A backchain may be needed
       to allow debugging using tools that do not understand DWARF call
!      frame information.  When â€˜-mno-packed-stackâ€™ is in effect, the
       backchain pointer is stored at the bottom of the stack frame; when
!      â€˜-mpacked-stackâ€™ is in effect, the backchain is placed into the
       topmost word of the 96/160 byte register save area.
  
!      In general, code compiled with â€˜-mbackchainâ€™ is call-compatible
!      with code compiled with â€˜-mno-backchainâ€™; however, use of the
       backchain for debugging purposes usually requires that the whole
!      binary is built with â€˜-mbackchainâ€™.  Note that the combination of
!      â€˜-mbackchainâ€™, â€˜-mpacked-stackâ€™ and â€˜-mhard-floatâ€™ is not
!      supported.  In order to build a linux kernel use â€˜-msoft-floatâ€™.
  
       The default is to not maintain the backchain.
  
! â€˜-mpacked-stackâ€™
! â€˜-mno-packed-stackâ€™
!      Use (do not use) the packed stack layout.  When â€˜-mno-packed-stackâ€™
       is specified, the compiler uses the all fields of the 96/160 byte
       register save area only for their default purpose; unused fields
!      still take up stack space.  When â€˜-mpacked-stackâ€™ is specified,
       register save slots are densely packed at the top of the register
       save area; unused space is reused for other purposes, allowing for
       more efficient use of the available stack space.  However, when
!      â€˜-mbackchainâ€™ is also in effect, the topmost word of the save area
       is always used to store the backchain, and the return address
       register is always saved two words below the backchain.
  
       As long as the stack frame backchain is not used, code generated
!      with â€˜-mpacked-stackâ€™ is call-compatible with code generated with
!      â€˜-mno-packed-stackâ€™.  Note that some non-FSF releases of GCC 2.95
       for S/390 or zSeries generated code that uses the stack frame
       backchain at run time, not just for debugging purposes.  Such code
!      is not call-compatible with code compiled with â€˜-mpacked-stackâ€™.
!      Also, note that the combination of â€˜-mbackchainâ€™, â€˜-mpacked-stackâ€™
!      and â€˜-mhard-floatâ€™ is not supported.  In order to build a linux
!      kernel use â€˜-msoft-floatâ€™.
  
       The default is to not use the packed stack layout.
  
! â€˜-msmall-execâ€™
! â€˜-mno-small-execâ€™
!      Generate (or do not generate) code using the â€˜brasâ€™ instruction to
       do subroutine calls.  This only works reliably if the total
       executable size does not exceed 64k.  The default is to use the
!      â€˜basrâ€™ instruction instead, which does not have this limitation.
  
! â€˜-m64â€™
! â€˜-m31â€™
!      When â€˜-m31â€™ is specified, generate code compliant to the GNU/Linux
!      for S/390 ABI.  When â€˜-m64â€™ is specified, generate code compliant
       to the GNU/Linux for zSeries ABI.  This allows GCC in particular to
!      generate 64-bit instructions.  For the â€˜s390â€™ targets, the default
!      is â€˜-m31â€™, while the â€˜s390xâ€™ targets default to â€˜-m64â€™.
  
! â€˜-mzarchâ€™
! â€˜-mesaâ€™
!      When â€˜-mzarchâ€™ is specified, generate code using the instructions
!      available on z/Architecture.  When â€˜-mesaâ€™ is specified, generate
       code using the instructions available on ESA/390.  Note that
!      â€˜-mesaâ€™ is not possible with â€˜-m64â€™.  When generating code
!      compliant to the GNU/Linux for S/390 ABI, the default is â€˜-mesaâ€™.
       When generating code compliant to the GNU/Linux for zSeries ABI,
!      the default is â€˜-mzarchâ€™.
  
! â€˜-mhtmâ€™
! â€˜-mno-htmâ€™
!      The â€˜-mhtmâ€™ option enables a set of builtins making use of
       instructions available with the transactional execution facility
       introduced with the IBM zEnterprise EC12 machine generation *note
!      S/390 System z Built-in Functions::.  â€˜-mhtmâ€™ is enabled by default
!      when using â€˜-march=zEC12â€™.
  
! â€˜-mvxâ€™
! â€˜-mno-vxâ€™
!      When â€˜-mvxâ€™ is specified, generate code using the instructions
       available with the vector extension facility introduced with the
       IBM z13 machine generation.  This option changes the ABI for some
       vector type values with regard to alignment and calling
       conventions.  In case vector type values are being used in an
!      ABI-relevant context a GAS â€˜.gnu_attributeâ€™ command will be added
!      to mark the resulting binary with the ABI used.  â€˜-mvxâ€™ is enabled
!      by default when using â€˜-march=z13â€™.
  
! â€˜-mzvectorâ€™
! â€˜-mno-zvectorâ€™
!      The â€˜-mzvectorâ€™ option enables vector language extensions and
       builtins using instructions available with the vector extension
       facility introduced with the IBM z13 machine generation.  This
!      option adds support for â€˜vectorâ€™ to be used as a keyword to define
!      vector type variables and arguments.  â€˜vectorâ€™ is only available
       when GNU extensions are enabled.  It will not be expanded when
!      requesting strict standard compliance e.g. with â€˜-std=c99â€™.  In
!      addition to the GCC low-level builtins â€˜-mzvectorâ€™ enables a set of
       builtins added for compatibility with AltiVec-style implementations
       like Power and Cell.  In order to make use of these builtins the
!      header file â€˜vecintrin.hâ€™ needs to be included.  â€˜-mzvectorâ€™ is
       disabled by default.
  
! â€˜-mmvcleâ€™
! â€˜-mno-mvcleâ€™
!      Generate (or do not generate) code using the â€˜mvcleâ€™ instruction to
!      perform block moves.  When â€˜-mno-mvcleâ€™ is specified, use a â€˜mvcâ€™
       loop instead.  This is the default unless optimizing for size.
  
! â€˜-mdebugâ€™
! â€˜-mno-debugâ€™
       Print (or do not print) additional debug information when
       compiling.  The default is to not print debug information.
  
! â€˜-march=CPU-TYPEâ€™
       Generate code that runs on CPU-TYPE, which is the name of a system
       representing a certain processor type.  Possible values for
!      CPU-TYPE are â€˜z900â€™/â€˜arch5â€™, â€˜z990â€™/â€˜arch6â€™, â€˜z9-109â€™,
!      â€˜z9-ecâ€™/â€˜arch7â€™, â€˜z10â€™/â€˜arch8â€™, â€˜z196â€™/â€˜arch9â€™, â€˜zEC12â€™,
!      â€˜z13â€™/â€˜arch11â€™, â€˜z14â€™/â€˜arch12â€™, â€˜z15â€™/â€˜arch13â€™, â€˜z16â€™/â€˜arch14â€™,
!      â€˜z17â€™/â€˜arch15â€™, and â€˜nativeâ€™.
  
!      The default is â€˜-march=z900â€™.
  
!      Specifying â€˜nativeâ€™ as cpu type can be used to select the best
!      architecture option for the host processor.  â€˜-march=nativeâ€™ has no
       effect if GCC does not recognize the processor.
  
! â€˜-mtune=CPU-TYPEâ€™
       Tune to CPU-TYPE everything applicable about the generated code,
       except for the ABI and the set of available instructions.  The list
!      of CPU-TYPE values is the same as for â€˜-marchâ€™.  The default is the
!      value used for â€˜-marchâ€™.
  
! â€˜-mtpf-traceâ€™
! â€˜-mno-tpf-traceâ€™
       Generate code that adds (does not add) in TPF OS specific branches
       to trace routines in the operating system.  This option is off by
       default, even when compiling for the TPF OS.
  
! â€˜-mtpf-trace-skipâ€™
! â€˜-mno-tpf-trace-skipâ€™
       Generate code that changes (does not change) the default branch
!      targets enabled by â€˜-mtpf-traceâ€™ to point to specialized trace
       routines providing the ability of selectively skipping function
       trace entries for the TPF OS. This option is off by default, even
!      when compiling for the TPF OS and specifying â€˜-mtpf-traceâ€™.
  
! â€˜-mfused-maddâ€™
! â€˜-mno-fused-maddâ€™
       Generate code that uses (does not use) the floating-point multiply
       and accumulate instructions.  These instructions are generated by
       default if hardware floating point is used.
  
! â€˜-mwarn-framesize=FRAMESIZEâ€™
       Emit a warning if the current function exceeds the given frame
       size.  Because this is a compile-time check it doesn't need to be a
       real problem when the program runs.  It is intended to identify
*************** architecture.
*** 30525,30537 ****
       to be used in an environment with limited stack size e.g. the linux
       kernel.
  
! '-mwarn-dynamicstack'
!      Emit a warning if the function calls 'alloca' or uses
       dynamically-sized arrays.  This is generally a bad idea with a
       limited stack size.
  
! '-mstack-guard=STACK-GUARD'
! '-mstack-size=STACK-SIZE'
       If these options are provided the S/390 back end emits additional
       instructions in the function prologue that trigger a trap if the
       stack size is STACK-GUARD bytes above the STACK-SIZE (remember that
--- 30533,30545 ----
       to be used in an environment with limited stack size e.g. the linux
       kernel.
  
! â€˜-mwarn-dynamicstackâ€™
!      Emit a warning if the function calls â€˜allocaâ€™ or uses
       dynamically-sized arrays.  This is generally a bad idea with a
       limited stack size.
  
! â€˜-mstack-guard=STACK-GUARDâ€™
! â€˜-mstack-size=STACK-SIZEâ€™
       If these options are provided the S/390 back end emits additional
       instructions in the function prologue that trigger a trap if the
       stack size is STACK-GUARD bytes above the STACK-SIZE (remember that
*************** architecture.
*** 30547,30553 ****
       at an address aligned to the value given by STACK-SIZE.  The
       STACK-GUARD option can only be used in conjunction with STACK-SIZE.
  
! '-mhotpatch=PRE-HALFWORDS,POST-HALFWORDS'
       If the hotpatch option is enabled, a "hot-patching" function
       prologue is generated for all functions in the compilation unit.
       The funtion label is prepended with the given number of two-byte
--- 30555,30561 ----
       at an address aligned to the value given by STACK-SIZE.  The
       STACK-GUARD option can only be used in conjunction with STACK-SIZE.
  
! â€˜-mhotpatch=PRE-HALFWORDS,POST-HALFWORDSâ€™
       If the hotpatch option is enabled, a "hot-patching" function
       prologue is generated for all functions in the compilation unit.
       The funtion label is prepended with the given number of two-byte
*************** architecture.
*** 30558,30564 ****
       If both arguments are zero, hotpatching is disabled.
  
       This option can be overridden for individual functions with the
!      'hotpatch' attribute.
  
  
  File: gcc.info,  Node: SH Options,  Next: Solaris 2 Options,  Prev: S/390 and zSeries Options,  Up: Submodel Options
--- 30566,30572 ----
       If both arguments are zero, hotpatching is disabled.
  
       This option can be overridden for individual functions with the
!      â€˜hotpatchâ€™ attribute.
  
  
  File: gcc.info,  Node: SH Options,  Next: Solaris 2 Options,  Prev: S/390 and zSeries Options,  Up: Submodel Options
*************** File: gcc.info,  Node: SH Options,  Next
*** 30566,30801 ****
  3.20.45 SH Options
  ------------------
  
! These '-m' options are defined for the SH implementations:
  
! '-m1'
       Generate code for the SH1.
  
! '-m2'
       Generate code for the SH2.
  
! '-m2e'
       Generate code for the SH2e.
  
! '-m2a-nofpu'
       Generate code for the SH2a without FPU, or for a SH2a-FPU in such a
       way that the floating-point unit is not used.
  
! '-m2a-single-only'
       Generate code for the SH2a-FPU, in such a way that no
       double-precision floating-point operations are used.
  
! '-m2a-single'
       Generate code for the SH2a-FPU assuming the floating-point unit is
       in single-precision mode by default.
  
! '-m2a'
       Generate code for the SH2a-FPU assuming the floating-point unit is
       in double-precision mode by default.
  
! '-m3'
       Generate code for the SH3.
  
! '-m3e'
       Generate code for the SH3e.
  
! '-m4-nofpu'
       Generate code for the SH4 without a floating-point unit.
  
! '-m4-single-only'
       Generate code for the SH4 with a floating-point unit that only
       supports single-precision arithmetic.
  
! '-m4-single'
       Generate code for the SH4 assuming the floating-point unit is in
       single-precision mode by default.
  
! '-m4'
       Generate code for the SH4.
  
! '-m4-100'
       Generate code for SH4-100.
  
! '-m4-100-nofpu'
       Generate code for SH4-100 in such a way that the floating-point
       unit is not used.
  
! '-m4-100-single'
       Generate code for SH4-100 assuming the floating-point unit is in
       single-precision mode by default.
  
! '-m4-100-single-only'
       Generate code for SH4-100 in such a way that no double-precision
       floating-point operations are used.
  
! '-m4-200'
       Generate code for SH4-200.
  
! '-m4-200-nofpu'
       Generate code for SH4-200 without in such a way that the
       floating-point unit is not used.
  
! '-m4-200-single'
       Generate code for SH4-200 assuming the floating-point unit is in
       single-precision mode by default.
  
! '-m4-200-single-only'
       Generate code for SH4-200 in such a way that no double-precision
       floating-point operations are used.
  
! '-m4-300'
       Generate code for SH4-300.
  
! '-m4-300-nofpu'
       Generate code for SH4-300 without in such a way that the
       floating-point unit is not used.
  
! '-m4-300-single'
       Generate code for SH4-300 in such a way that no double-precision
       floating-point operations are used.
  
! '-m4-300-single-only'
       Generate code for SH4-300 in such a way that no double-precision
       floating-point operations are used.
  
! '-m4-340'
       Generate code for SH4-340 (no MMU, no FPU).
  
! '-m4-500'
!      Generate code for SH4-500 (no FPU). Passes '-isa=sh4-nofpu' to the
       assembler.
  
! '-m4a-nofpu'
       Generate code for the SH4al-dsp, or for a SH4a in such a way that
       the floating-point unit is not used.
  
! '-m4a-single-only'
       Generate code for the SH4a, in such a way that no double-precision
       floating-point operations are used.
  
! '-m4a-single'
       Generate code for the SH4a assuming the floating-point unit is in
       single-precision mode by default.
  
! '-m4a'
       Generate code for the SH4a.
  
! '-m4al'
!      Same as '-m4a-nofpu', except that it implicitly passes '-dsp' to
       the assembler.  GCC doesn't generate any DSP instructions at the
       moment.
  
! '-mb'
       Compile code for the processor in big-endian mode.
  
! '-ml'
       Compile code for the processor in little-endian mode.
  
! '-mdalign'
       Align doubles at 64-bit boundaries.  Note that this changes the
       calling conventions, and thus some functions from the standard C
!      library do not work unless you recompile it first with '-mdalign'.
  
! '-mrelax'
       Shorten some address references at link time, when possible; uses
!      the linker option '-relax'.
  
! '-mbigtable'
!      Use 32-bit offsets in 'switch' tables.  The default is to use
       16-bit offsets.
  
! '-mbitops'
       Enable the use of bit manipulation instructions on SH2A.
  
! '-mfmovd'
!      Enable the use of the instruction 'fmovd'.  Check '-mdalign' for
       alignment constraints.
  
! '-mrenesas'
       Comply with the calling conventions defined by Renesas.
  
! '-mno-renesas'
       Comply with the calling conventions defined for GCC before the
       Renesas conventions were available.  This option is the default for
       all targets of the SH toolchain.
  
! '-mnomacsave'
!      Mark the 'MAC' register as call-clobbered, even if '-mrenesas' is
       given.
  
! '-mieee'
! '-mno-ieee'
       Control the IEEE compliance of floating-point comparisons, which
       affects the handling of cases where the result of a comparison is
!      unordered.  By default '-mieee' is implicitly enabled.  If
!      '-ffinite-math-only' is enabled '-mno-ieee' is implicitly set,
       which results in faster floating-point greater-equal and less-equal
       comparisons.  The implicit settings can be overridden by specifying
!      either '-mieee' or '-mno-ieee'.
  
! '-minline-ic_invalidate'
       Inline code to invalidate instruction cache entries after setting
       up nested function trampolines.  This option has no effect if
!      '-musermode' is in effect and the selected code generation option
!      (e.g. '-m4') does not allow the use of the 'icbi' instruction.  If
       the selected code generation option does not allow the use of the
!      'icbi' instruction, and '-musermode' is not in effect, the inlined
       code manipulates the instruction cache address array directly with
       an associative write.  This not only requires privileged mode at
       run time, but it also fails if the cache line had been mapped via
       the TLB and has become unmapped.
  
! '-misize'
       Dump instruction size and location in the assembly code.
  
! '-mpadstruct'
       This option is deprecated.  It pads structures to multiple of 4
       bytes, which is incompatible with the SH ABI.
  
! '-matomic-model=MODEL'
       Sets the model of atomic operations and additional parameters as a
       comma separated list.  For details on the atomic built-in functions
       see *note __atomic Builtins::.  The following models and parameters
       are supported:
  
!      'none'
            Disable compiler generated atomic sequences and emit library
            calls for atomic operations.  This is the default if the
!           target is not 'sh*-*-linux*'.
  
!      'soft-gusa'
            Generate GNU/Linux compatible gUSA software atomic sequences
            for the atomic built-in functions.  The generated atomic
            sequences require additional support from the
            interrupt/exception handling code of the system and are only
            suitable for SH3* and SH4* single-core systems.  This option
!           is enabled by default when the target is 'sh*-*-linux*' and
            SH3* or SH4*.  When the target is SH4A, this option also
!           partially utilizes the hardware atomic instructions 'movli.l'
!           and 'movco.l' to create more efficient code, unless 'strict'
            is specified.
  
!      'soft-tcb'
            Generate software atomic sequences that use a variable in the
            thread control block.  This is a variation of the gUSA
            sequences which can also be used on SH1* and SH2* targets.
            The generated atomic sequences require additional support from
            the interrupt/exception handling code of the system and are
            only suitable for single-core systems.  When using this model,
!           the 'gbr-offset=' parameter has to be specified as well.
  
!      'soft-imask'
            Generate software atomic sequences that temporarily disable
!           interrupts by setting 'SR.IMASK = 1111'.  This model works
            only when the program runs in privileged mode and is only
            suitable for single-core systems.  Additional support from the
            interrupt/exception handling code of the system is not
            required.  This model is enabled by default when the target is
!           'sh*-*-linux*' and SH1* or SH2*.
  
!      'hard-llcs'
!           Generate hardware atomic sequences using the 'movli.l' and
!           'movco.l' instructions only.  This is only available on SH4A
            and is suitable for multi-core systems.  Since the hardware
            instructions support only 32 bit atomic variables access to 8
            or 16 bit variables is emulated with 32 bit accesses.  Code
--- 30574,30809 ----
  3.20.45 SH Options
  ------------------
  
! These â€˜-mâ€™ options are defined for the SH implementations:
  
! â€˜-m1â€™
       Generate code for the SH1.
  
! â€˜-m2â€™
       Generate code for the SH2.
  
! â€˜-m2eâ€™
       Generate code for the SH2e.
  
! â€˜-m2a-nofpuâ€™
       Generate code for the SH2a without FPU, or for a SH2a-FPU in such a
       way that the floating-point unit is not used.
  
! â€˜-m2a-single-onlyâ€™
       Generate code for the SH2a-FPU, in such a way that no
       double-precision floating-point operations are used.
  
! â€˜-m2a-singleâ€™
       Generate code for the SH2a-FPU assuming the floating-point unit is
       in single-precision mode by default.
  
! â€˜-m2aâ€™
       Generate code for the SH2a-FPU assuming the floating-point unit is
       in double-precision mode by default.
  
! â€˜-m3â€™
       Generate code for the SH3.
  
! â€˜-m3eâ€™
       Generate code for the SH3e.
  
! â€˜-m4-nofpuâ€™
       Generate code for the SH4 without a floating-point unit.
  
! â€˜-m4-single-onlyâ€™
       Generate code for the SH4 with a floating-point unit that only
       supports single-precision arithmetic.
  
! â€˜-m4-singleâ€™
       Generate code for the SH4 assuming the floating-point unit is in
       single-precision mode by default.
  
! â€˜-m4â€™
       Generate code for the SH4.
  
! â€˜-m4-100â€™
       Generate code for SH4-100.
  
! â€˜-m4-100-nofpuâ€™
       Generate code for SH4-100 in such a way that the floating-point
       unit is not used.
  
! â€˜-m4-100-singleâ€™
       Generate code for SH4-100 assuming the floating-point unit is in
       single-precision mode by default.
  
! â€˜-m4-100-single-onlyâ€™
       Generate code for SH4-100 in such a way that no double-precision
       floating-point operations are used.
  
! â€˜-m4-200â€™
       Generate code for SH4-200.
  
! â€˜-m4-200-nofpuâ€™
       Generate code for SH4-200 without in such a way that the
       floating-point unit is not used.
  
! â€˜-m4-200-singleâ€™
       Generate code for SH4-200 assuming the floating-point unit is in
       single-precision mode by default.
  
! â€˜-m4-200-single-onlyâ€™
       Generate code for SH4-200 in such a way that no double-precision
       floating-point operations are used.
  
! â€˜-m4-300â€™
       Generate code for SH4-300.
  
! â€˜-m4-300-nofpuâ€™
       Generate code for SH4-300 without in such a way that the
       floating-point unit is not used.
  
! â€˜-m4-300-singleâ€™
       Generate code for SH4-300 in such a way that no double-precision
       floating-point operations are used.
  
! â€˜-m4-300-single-onlyâ€™
       Generate code for SH4-300 in such a way that no double-precision
       floating-point operations are used.
  
! â€˜-m4-340â€™
       Generate code for SH4-340 (no MMU, no FPU).
  
! â€˜-m4-500â€™
!      Generate code for SH4-500 (no FPU). Passes â€˜-isa=sh4-nofpuâ€™ to the
       assembler.
  
! â€˜-m4a-nofpuâ€™
       Generate code for the SH4al-dsp, or for a SH4a in such a way that
       the floating-point unit is not used.
  
! â€˜-m4a-single-onlyâ€™
       Generate code for the SH4a, in such a way that no double-precision
       floating-point operations are used.
  
! â€˜-m4a-singleâ€™
       Generate code for the SH4a assuming the floating-point unit is in
       single-precision mode by default.
  
! â€˜-m4aâ€™
       Generate code for the SH4a.
  
! â€˜-m4alâ€™
!      Same as â€˜-m4a-nofpuâ€™, except that it implicitly passes â€˜-dspâ€™ to
       the assembler.  GCC doesn't generate any DSP instructions at the
       moment.
  
! â€˜-mbâ€™
       Compile code for the processor in big-endian mode.
  
! â€˜-mlâ€™
       Compile code for the processor in little-endian mode.
  
! â€˜-mdalignâ€™
       Align doubles at 64-bit boundaries.  Note that this changes the
       calling conventions, and thus some functions from the standard C
!      library do not work unless you recompile it first with â€˜-mdalignâ€™.
  
! â€˜-mrelaxâ€™
       Shorten some address references at link time, when possible; uses
!      the linker option â€˜-relaxâ€™.
  
! â€˜-mbigtableâ€™
!      Use 32-bit offsets in â€˜switchâ€™ tables.  The default is to use
       16-bit offsets.
  
! â€˜-mbitopsâ€™
       Enable the use of bit manipulation instructions on SH2A.
  
! â€˜-mfmovdâ€™
!      Enable the use of the instruction â€˜fmovdâ€™.  Check â€˜-mdalignâ€™ for
       alignment constraints.
  
! â€˜-mrenesasâ€™
       Comply with the calling conventions defined by Renesas.
  
! â€˜-mno-renesasâ€™
       Comply with the calling conventions defined for GCC before the
       Renesas conventions were available.  This option is the default for
       all targets of the SH toolchain.
  
! â€˜-mnomacsaveâ€™
!      Mark the â€˜MACâ€™ register as call-clobbered, even if â€˜-mrenesasâ€™ is
       given.
  
! â€˜-mieeeâ€™
! â€˜-mno-ieeeâ€™
       Control the IEEE compliance of floating-point comparisons, which
       affects the handling of cases where the result of a comparison is
!      unordered.  By default â€˜-mieeeâ€™ is implicitly enabled.  If
!      â€˜-ffinite-math-onlyâ€™ is enabled â€˜-mno-ieeeâ€™ is implicitly set,
       which results in faster floating-point greater-equal and less-equal
       comparisons.  The implicit settings can be overridden by specifying
!      either â€˜-mieeeâ€™ or â€˜-mno-ieeeâ€™.
  
! â€˜-minline-ic_invalidateâ€™
       Inline code to invalidate instruction cache entries after setting
       up nested function trampolines.  This option has no effect if
!      â€˜-musermodeâ€™ is in effect and the selected code generation option
!      (e.g. â€˜-m4â€™) does not allow the use of the â€˜icbiâ€™ instruction.  If
       the selected code generation option does not allow the use of the
!      â€˜icbiâ€™ instruction, and â€˜-musermodeâ€™ is not in effect, the inlined
       code manipulates the instruction cache address array directly with
       an associative write.  This not only requires privileged mode at
       run time, but it also fails if the cache line had been mapped via
       the TLB and has become unmapped.
  
! â€˜-misizeâ€™
       Dump instruction size and location in the assembly code.
  
! â€˜-mpadstructâ€™
       This option is deprecated.  It pads structures to multiple of 4
       bytes, which is incompatible with the SH ABI.
  
! â€˜-matomic-model=MODELâ€™
       Sets the model of atomic operations and additional parameters as a
       comma separated list.  For details on the atomic built-in functions
       see *note __atomic Builtins::.  The following models and parameters
       are supported:
  
!      â€˜noneâ€™
            Disable compiler generated atomic sequences and emit library
            calls for atomic operations.  This is the default if the
!           target is not â€˜sh*-*-linux*â€™.
  
!      â€˜soft-gusaâ€™
            Generate GNU/Linux compatible gUSA software atomic sequences
            for the atomic built-in functions.  The generated atomic
            sequences require additional support from the
            interrupt/exception handling code of the system and are only
            suitable for SH3* and SH4* single-core systems.  This option
!           is enabled by default when the target is â€˜sh*-*-linux*â€™ and
            SH3* or SH4*.  When the target is SH4A, this option also
!           partially utilizes the hardware atomic instructions â€˜movli.lâ€™
!           and â€˜movco.lâ€™ to create more efficient code, unless â€˜strictâ€™
            is specified.
  
!      â€˜soft-tcbâ€™
            Generate software atomic sequences that use a variable in the
            thread control block.  This is a variation of the gUSA
            sequences which can also be used on SH1* and SH2* targets.
            The generated atomic sequences require additional support from
            the interrupt/exception handling code of the system and are
            only suitable for single-core systems.  When using this model,
!           the â€˜gbr-offset=â€™ parameter has to be specified as well.
  
!      â€˜soft-imaskâ€™
            Generate software atomic sequences that temporarily disable
!           interrupts by setting â€˜SR.IMASK = 1111â€™.  This model works
            only when the program runs in privileged mode and is only
            suitable for single-core systems.  Additional support from the
            interrupt/exception handling code of the system is not
            required.  This model is enabled by default when the target is
!           â€˜sh*-*-linux*â€™ and SH1* or SH2*.
  
!      â€˜hard-llcsâ€™
!           Generate hardware atomic sequences using the â€˜movli.lâ€™ and
!           â€˜movco.lâ€™ instructions only.  This is only available on SH4A
            and is suitable for multi-core systems.  Since the hardware
            instructions support only 32 bit atomic variables access to 8
            or 16 bit variables is emulated with 32 bit accesses.  Code
*************** These '-m' options are defined for the S
*** 30805,30953 ****
            interrupt/exception handling code of the system is not
            required for this model.
  
!      'gbr-offset='
            This parameter specifies the offset in bytes of the variable
            in the thread control block structure that should be used by
!           the generated atomic sequences when the 'soft-tcb' model has
            been selected.  For other models this parameter is ignored.
            The specified value must be an integer multiple of four and in
            the range 0-1020.
  
!      'strict'
            This parameter prevents mixed usage of multiple atomic models,
            even if they are compatible, and makes the compiler generate
            atomic sequences of the specified model only.
  
! '-mtas'
!      Generate the 'tas.b' opcode for '__atomic_test_and_set'.  Notice
       that depending on the particular hardware and software
       configuration this can degrade overall performance due to the
!      operand cache line flushes that are implied by the 'tas.b'
!      instruction.  On multi-core SH4A processors the 'tas.b' instruction
       must be used with caution since it can result in data corruption
       for certain cache configurations.
  
! '-mprefergot'
       When generating position-independent code, emit function calls
       using the Global Offset Table instead of the Procedure Linkage
       Table.
  
! '-musermode'
! '-mno-usermode'
       Don't allow (allow) the compiler generating privileged mode code.
!      Specifying '-musermode' also implies '-mno-inline-ic_invalidate' if
!      the inlined code would not work in user mode.  '-musermode' is the
!      default when the target is 'sh*-*-linux*'.  If the target is SH1*
!      or SH2* '-musermode' has no effect, since there is no user mode.
  
! '-multcost=NUMBER'
       Set the cost to assume for a multiply insn.
  
! '-mdiv=STRATEGY'
       Set the division strategy to be used for integer division
       operations.  STRATEGY can be one of:
  
!      'call-div1'
            Calls a library function that uses the single-step division
!           instruction 'div1' to perform the operation.  Division by zero
            calculates an unspecified result and does not trap.  This is
            the default except for SH4, SH2A and SHcompact.
  
!      'call-fp'
            Calls a library function that performs the operation in double
            precision floating point.  Division by zero causes a
            floating-point exception.  This is the default for SHcompact
            with FPU. Specifying this for targets that do not have a
!           double precision FPU defaults to 'call-div1'.
  
!      'call-table'
            Calls a library function that uses a lookup table for small
!           divisors and the 'div1' instruction with case distinction for
            larger divisors.  Division by zero calculates an unspecified
            result and does not trap.  This is the default for SH4.
            Specifying this for targets that do not have dynamic shift
!           instructions defaults to 'call-div1'.
  
       When a division strategy has not been specified the default
       strategy is selected based on the current target.  For SH2A the
!      default strategy is to use the 'divs' and 'divu' instructions
       instead of library function calls.
  
! '-maccumulate-outgoing-args'
       Reserve space once for outgoing arguments in the function prologue
       rather than around each call.  Generally beneficial for performance
       and size.  Also needed for unwinding to avoid changing the stack
       frame around conditional code.
  
! '-mdivsi3_libfunc=NAME'
       Set the name of the library function used for 32-bit signed
!      division to NAME.  This only affects the name used in the 'call'
       division strategies, and the compiler still expects the same sets
       of input/output/clobbered registers as if this option were not
       present.
  
! '-mfixed-range=REGISTER-RANGE'
       Generate code treating the given register range as fixed registers.
       A fixed register is one that the register allocator cannot use.
       This is useful when compiling kernel code.  A register range is
       specified as two registers separated by a dash.  Multiple register
       ranges can be specified separated by a comma.
  
! '-mbranch-cost=NUM'
       Assume NUM to be the cost for a branch instruction.  Higher numbers
       make the compiler try to generate more branch-free code if
       possible.  If not specified the value is selected depending on the
       processor type that is being compiled for.
  
! '-mzdcbranch'
! '-mno-zdcbranch'
       Assume (do not assume) that zero displacement conditional branch
!      instructions 'bt' and 'bf' are fast.  If '-mzdcbranch' is
       specified, the compiler prefers zero displacement branch code
       sequences.  This is enabled by default when generating code for SH4
       and SH4A. It can be explicitly disabled by specifying
!      '-mno-zdcbranch'.
  
! '-mcbranch-force-delay-slot'
       Force the usage of delay slots for conditional branches, which
!      stuffs the delay slot with a 'nop' if a suitable instruction cannot
       be found.  By default this option is disabled.  It can be enabled
       to work around hardware bugs as found in the original SH7055.
  
! '-mfused-madd'
! '-mno-fused-madd'
       Generate code that uses (does not use) the floating-point multiply
       and accumulate instructions.  These instructions are generated by
       default if hardware floating point is used.  The machine-dependent
!      '-mfused-madd' option is now mapped to the machine-independent
!      '-ffp-contract=fast' option, and '-mno-fused-madd' is mapped to
!      '-ffp-contract=off'.
  
! '-mfsca'
! '-mno-fsca'
!      Allow or disallow the compiler to emit the 'fsca' instruction for
!      sine and cosine approximations.  The option '-mfsca' must be used
!      in combination with '-funsafe-math-optimizations'.  It is enabled
!      by default when generating code for SH4A. Using '-mno-fsca'
       disables sine and cosine approximations even if
!      '-funsafe-math-optimizations' is in effect.
  
! '-mfsrra'
! '-mno-fsrra'
!      Allow or disallow the compiler to emit the 'fsrra' instruction for
!      reciprocal square root approximations.  The option '-mfsrra' must
!      be used in combination with '-funsafe-math-optimizations' and
!      '-ffinite-math-only'.  It is enabled by default when generating
!      code for SH4A. Using '-mno-fsrra' disables reciprocal square root
!      approximations even if '-funsafe-math-optimizations' and
!      '-ffinite-math-only' are in effect.
  
! '-mpretend-cmove'
       Prefer zero-displacement conditional branches for conditional move
       instruction patterns.  This can result in faster code on the SH4
       processor.
  
! '-mfdpic'
       Generate code using the FDPIC ABI.
  
  
--- 30813,30961 ----
            interrupt/exception handling code of the system is not
            required for this model.
  
!      â€˜gbr-offset=â€™
            This parameter specifies the offset in bytes of the variable
            in the thread control block structure that should be used by
!           the generated atomic sequences when the â€˜soft-tcbâ€™ model has
            been selected.  For other models this parameter is ignored.
            The specified value must be an integer multiple of four and in
            the range 0-1020.
  
!      â€˜strictâ€™
            This parameter prevents mixed usage of multiple atomic models,
            even if they are compatible, and makes the compiler generate
            atomic sequences of the specified model only.
  
! â€˜-mtasâ€™
!      Generate the â€˜tas.bâ€™ opcode for â€˜__atomic_test_and_setâ€™.  Notice
       that depending on the particular hardware and software
       configuration this can degrade overall performance due to the
!      operand cache line flushes that are implied by the â€˜tas.bâ€™
!      instruction.  On multi-core SH4A processors the â€˜tas.bâ€™ instruction
       must be used with caution since it can result in data corruption
       for certain cache configurations.
  
! â€˜-mprefergotâ€™
       When generating position-independent code, emit function calls
       using the Global Offset Table instead of the Procedure Linkage
       Table.
  
! â€˜-musermodeâ€™
! â€˜-mno-usermodeâ€™
       Don't allow (allow) the compiler generating privileged mode code.
!      Specifying â€˜-musermodeâ€™ also implies â€˜-mno-inline-ic_invalidateâ€™ if
!      the inlined code would not work in user mode.  â€˜-musermodeâ€™ is the
!      default when the target is â€˜sh*-*-linux*â€™.  If the target is SH1*
!      or SH2* â€˜-musermodeâ€™ has no effect, since there is no user mode.
  
! â€˜-multcost=NUMBERâ€™
       Set the cost to assume for a multiply insn.
  
! â€˜-mdiv=STRATEGYâ€™
       Set the division strategy to be used for integer division
       operations.  STRATEGY can be one of:
  
!      â€˜call-div1â€™
            Calls a library function that uses the single-step division
!           instruction â€˜div1â€™ to perform the operation.  Division by zero
            calculates an unspecified result and does not trap.  This is
            the default except for SH4, SH2A and SHcompact.
  
!      â€˜call-fpâ€™
            Calls a library function that performs the operation in double
            precision floating point.  Division by zero causes a
            floating-point exception.  This is the default for SHcompact
            with FPU. Specifying this for targets that do not have a
!           double precision FPU defaults to â€˜call-div1â€™.
  
!      â€˜call-tableâ€™
            Calls a library function that uses a lookup table for small
!           divisors and the â€˜div1â€™ instruction with case distinction for
            larger divisors.  Division by zero calculates an unspecified
            result and does not trap.  This is the default for SH4.
            Specifying this for targets that do not have dynamic shift
!           instructions defaults to â€˜call-div1â€™.
  
       When a division strategy has not been specified the default
       strategy is selected based on the current target.  For SH2A the
!      default strategy is to use the â€˜divsâ€™ and â€˜divuâ€™ instructions
       instead of library function calls.
  
! â€˜-maccumulate-outgoing-argsâ€™
       Reserve space once for outgoing arguments in the function prologue
       rather than around each call.  Generally beneficial for performance
       and size.  Also needed for unwinding to avoid changing the stack
       frame around conditional code.
  
! â€˜-mdivsi3_libfunc=NAMEâ€™
       Set the name of the library function used for 32-bit signed
!      division to NAME.  This only affects the name used in the â€˜callâ€™
       division strategies, and the compiler still expects the same sets
       of input/output/clobbered registers as if this option were not
       present.
  
! â€˜-mfixed-range=REGISTER-RANGEâ€™
       Generate code treating the given register range as fixed registers.
       A fixed register is one that the register allocator cannot use.
       This is useful when compiling kernel code.  A register range is
       specified as two registers separated by a dash.  Multiple register
       ranges can be specified separated by a comma.
  
! â€˜-mbranch-cost=NUMâ€™
       Assume NUM to be the cost for a branch instruction.  Higher numbers
       make the compiler try to generate more branch-free code if
       possible.  If not specified the value is selected depending on the
       processor type that is being compiled for.
  
! â€˜-mzdcbranchâ€™
! â€˜-mno-zdcbranchâ€™
       Assume (do not assume) that zero displacement conditional branch
!      instructions â€˜btâ€™ and â€˜bfâ€™ are fast.  If â€˜-mzdcbranchâ€™ is
       specified, the compiler prefers zero displacement branch code
       sequences.  This is enabled by default when generating code for SH4
       and SH4A. It can be explicitly disabled by specifying
!      â€˜-mno-zdcbranchâ€™.
  
! â€˜-mcbranch-force-delay-slotâ€™
       Force the usage of delay slots for conditional branches, which
!      stuffs the delay slot with a â€˜nopâ€™ if a suitable instruction cannot
       be found.  By default this option is disabled.  It can be enabled
       to work around hardware bugs as found in the original SH7055.
  
! â€˜-mfused-maddâ€™
! â€˜-mno-fused-maddâ€™
       Generate code that uses (does not use) the floating-point multiply
       and accumulate instructions.  These instructions are generated by
       default if hardware floating point is used.  The machine-dependent
!      â€˜-mfused-maddâ€™ option is now mapped to the machine-independent
!      â€˜-ffp-contract=fastâ€™ option, and â€˜-mno-fused-maddâ€™ is mapped to
!      â€˜-ffp-contract=offâ€™.
  
! â€˜-mfscaâ€™
! â€˜-mno-fscaâ€™
!      Allow or disallow the compiler to emit the â€˜fscaâ€™ instruction for
!      sine and cosine approximations.  The option â€˜-mfscaâ€™ must be used
!      in combination with â€˜-funsafe-math-optimizationsâ€™.  It is enabled
!      by default when generating code for SH4A. Using â€˜-mno-fscaâ€™
       disables sine and cosine approximations even if
!      â€˜-funsafe-math-optimizationsâ€™ is in effect.
  
! â€˜-mfsrraâ€™
! â€˜-mno-fsrraâ€™
!      Allow or disallow the compiler to emit the â€˜fsrraâ€™ instruction for
!      reciprocal square root approximations.  The option â€˜-mfsrraâ€™ must
!      be used in combination with â€˜-funsafe-math-optimizationsâ€™ and
!      â€˜-ffinite-math-onlyâ€™.  It is enabled by default when generating
!      code for SH4A. Using â€˜-mno-fsrraâ€™ disables reciprocal square root
!      approximations even if â€˜-funsafe-math-optimizationsâ€™ and
!      â€˜-ffinite-math-onlyâ€™ are in effect.
  
! â€˜-mpretend-cmoveâ€™
       Prefer zero-displacement conditional branches for conditional move
       instruction patterns.  This can result in faster code on the SH4
       processor.
  
! â€˜-mfdpicâ€™
       Generate code using the FDPIC ABI.
  
  
*************** File: gcc.info,  Node: Solaris 2 Options
*** 30956,30986 ****
  3.20.46 Solaris 2 Options
  -------------------------
  
! These '-m' options are supported on Solaris 2:
  
! '-mclear-hwcap'
!      '-mclear-hwcap' tells the compiler to remove the hardware
       capabilities generated by the Solaris assembler.  This is only
       necessary when object files use ISA extensions not supported by the
       current machine, but check at runtime whether or not to use them.
  
! '-mimpure-text'
!      '-mimpure-text', used in addition to '-shared', tells the compiler
!      to not pass '-z text' to the linker when linking a shared object.
       Using this option, you can link position-dependent code into a
       shared object.
  
!      '-mimpure-text' suppresses the "relocations remain against
       allocatable but non-writable sections" linker error message.
       However, the necessary relocations trigger copy-on-write, and the
       shared object is not actually shared across processes.  Instead of
!      using '-mimpure-text', you should compile all source code with
!      '-fpic' or '-fPIC'.
  
   These switches are supported in addition to the above on Solaris 2:
  
! '-pthreads'
!      This is a synonym for '-pthread'.
  
  
  File: gcc.info,  Node: SPARC Options,  Next: System V Options,  Prev: Solaris 2 Options,  Up: Submodel Options
--- 30964,30994 ----
  3.20.46 Solaris 2 Options
  -------------------------
  
! These â€˜-mâ€™ options are supported on Solaris 2:
  
! â€˜-mclear-hwcapâ€™
!      â€˜-mclear-hwcapâ€™ tells the compiler to remove the hardware
       capabilities generated by the Solaris assembler.  This is only
       necessary when object files use ISA extensions not supported by the
       current machine, but check at runtime whether or not to use them.
  
! â€˜-mimpure-textâ€™
!      â€˜-mimpure-textâ€™, used in addition to â€˜-sharedâ€™, tells the compiler
!      to not pass â€˜-z textâ€™ to the linker when linking a shared object.
       Using this option, you can link position-dependent code into a
       shared object.
  
!      â€˜-mimpure-textâ€™ suppresses the "relocations remain against
       allocatable but non-writable sections" linker error message.
       However, the necessary relocations trigger copy-on-write, and the
       shared object is not actually shared across processes.  Instead of
!      using â€˜-mimpure-textâ€™, you should compile all source code with
!      â€˜-fpicâ€™ or â€˜-fPICâ€™.
  
   These switches are supported in addition to the above on Solaris 2:
  
! â€˜-pthreadsâ€™
!      This is a synonym for â€˜-pthreadâ€™.
  
  
  File: gcc.info,  Node: SPARC Options,  Next: System V Options,  Prev: Solaris 2 Options,  Up: Submodel Options
*************** File: gcc.info,  Node: SPARC Options,  N
*** 30988,31046 ****
  3.20.47 SPARC Options
  ---------------------
  
! These '-m' options are supported on the SPARC:
  
! '-mno-app-regs'
! '-mapp-regs'
!      Specify '-mapp-regs' to generate output using the global registers
       2 through 4, which the SPARC SVR4 ABI reserves for applications.
       Like the global register 1, each global register 2 through 4 is
       then treated as an allocable register that is clobbered by function
       calls.  This is the default.
  
       To be fully SVR4 ABI-compliant at the cost of some performance
!      loss, specify '-mno-app-regs'.  You should compile libraries and
       system software with this option.
  
! '-mflat'
! '-mno-flat'
!      With '-mflat', the compiler does not generate save/restore
       instructions and uses a "flat" or single register window model.
       This model is compatible with the regular register window model.
       The local registers and the input registers (0-5) are still treated
       as "call-saved" registers and are saved on the stack as needed.
  
!      With '-mno-flat' (the default), the compiler generates save/restore
       instructions (except for leaf functions).  This is the normal
       operating mode.
  
! '-mfpu'
! '-mhard-float'
       Generate output containing floating-point instructions.  This is
       the default.
  
! '-mno-fpu'
! '-msoft-float'
       Generate output containing library calls for floating point.
       *Warning:* the requisite libraries are not available for all SPARC
       targets.  Normally the facilities of the machine's usual C compiler
       are used, but this cannot be done directly in cross-compilation.
       You must make your own arrangements to provide suitable library
       functions for cross-compilation.  The embedded targets
!      'sparc-*-aout' and 'sparclite-*-*' do provide software
       floating-point support.
  
!      '-msoft-float' changes the calling convention in the output file;
       therefore, it is only useful if you compile _all_ of a program with
!      this option.  In particular, you need to compile 'libgcc.a', the
!      library that comes with GCC, with '-msoft-float' in order for this
       to work.
  
! '-mhard-quad-float'
       Generate output containing quad-word (long double) floating-point
       instructions.
  
! '-msoft-quad-float'
       Generate output containing library calls for quad-word (long
       double) floating-point instructions.  The functions called are
       those specified in the SPARC ABI.  This is the default.
--- 30996,31054 ----
  3.20.47 SPARC Options
  ---------------------
  
! These â€˜-mâ€™ options are supported on the SPARC:
  
! â€˜-mno-app-regsâ€™
! â€˜-mapp-regsâ€™
!      Specify â€˜-mapp-regsâ€™ to generate output using the global registers
       2 through 4, which the SPARC SVR4 ABI reserves for applications.
       Like the global register 1, each global register 2 through 4 is
       then treated as an allocable register that is clobbered by function
       calls.  This is the default.
  
       To be fully SVR4 ABI-compliant at the cost of some performance
!      loss, specify â€˜-mno-app-regsâ€™.  You should compile libraries and
       system software with this option.
  
! â€˜-mflatâ€™
! â€˜-mno-flatâ€™
!      With â€˜-mflatâ€™, the compiler does not generate save/restore
       instructions and uses a "flat" or single register window model.
       This model is compatible with the regular register window model.
       The local registers and the input registers (0-5) are still treated
       as "call-saved" registers and are saved on the stack as needed.
  
!      With â€˜-mno-flatâ€™ (the default), the compiler generates save/restore
       instructions (except for leaf functions).  This is the normal
       operating mode.
  
! â€˜-mfpuâ€™
! â€˜-mhard-floatâ€™
       Generate output containing floating-point instructions.  This is
       the default.
  
! â€˜-mno-fpuâ€™
! â€˜-msoft-floatâ€™
       Generate output containing library calls for floating point.
       *Warning:* the requisite libraries are not available for all SPARC
       targets.  Normally the facilities of the machine's usual C compiler
       are used, but this cannot be done directly in cross-compilation.
       You must make your own arrangements to provide suitable library
       functions for cross-compilation.  The embedded targets
!      â€˜sparc-*-aoutâ€™ and â€˜sparclite-*-*â€™ do provide software
       floating-point support.
  
!      â€˜-msoft-floatâ€™ changes the calling convention in the output file;
       therefore, it is only useful if you compile _all_ of a program with
!      this option.  In particular, you need to compile â€˜libgcc.aâ€™, the
!      library that comes with GCC, with â€˜-msoft-floatâ€™ in order for this
       to work.
  
! â€˜-mhard-quad-floatâ€™
       Generate output containing quad-word (long double) floating-point
       instructions.
  
! â€˜-msoft-quad-floatâ€™
       Generate output containing library calls for quad-word (long
       double) floating-point instructions.  The functions called are
       those specified in the SPARC ABI.  This is the default.
*************** These '-m' options are supported on the
*** 31050,31063 ****
       They all invoke a trap handler for one of these instructions, and
       then the trap handler emulates the effect of the instruction.
       Because of the trap handler overhead, this is much slower than
!      calling the ABI library routines.  Thus the '-msoft-quad-float'
       option is the default.
  
! '-mno-unaligned-doubles'
! '-munaligned-doubles'
       Assume that doubles have 8-byte alignment.  This is the default.
  
!      With '-munaligned-doubles', GCC assumes that doubles have 8-byte
       alignment only if they are contained in another type, or if they
       have an absolute address.  Otherwise, it assumes they have 4-byte
       alignment.  Specifying this option avoids some rare compatibility
--- 31058,31071 ----
       They all invoke a trap handler for one of these instructions, and
       then the trap handler emulates the effect of the instruction.
       Because of the trap handler overhead, this is much slower than
!      calling the ABI library routines.  Thus the â€˜-msoft-quad-floatâ€™
       option is the default.
  
! â€˜-mno-unaligned-doublesâ€™
! â€˜-munaligned-doublesâ€™
       Assume that doubles have 8-byte alignment.  This is the default.
  
!      With â€˜-munaligned-doublesâ€™, GCC assumes that doubles have 8-byte
       alignment only if they are contained in another type, or if they
       have an absolute address.  Otherwise, it assumes they have 4-byte
       alignment.  Specifying this option avoids some rare compatibility
*************** These '-m' options are supported on the
*** 31065,31113 ****
       default because it results in a performance loss, especially for
       floating-point code.
  
! '-muser-mode'
! '-mno-user-mode'
       Do not generate code that can only run in supervisor mode.  This is
!      relevant only for the 'casa' instruction emitted for the LEON3
       processor.  This is the default.
  
! '-mfaster-structs'
! '-mno-faster-structs'
!      With '-mfaster-structs', the compiler assumes that structures
       should have 8-byte alignment.  This enables the use of pairs of
!      'ldd' and 'std' instructions for copies in structure assignment, in
!      place of twice as many 'ld' and 'st' pairs.  However, the use of
       this changed alignment directly violates the SPARC ABI.  Thus, it's
       intended only for use on targets where the developer acknowledges
       that their resulting code is not directly in line with the rules of
       the ABI.
  
! '-mstd-struct-return'
! '-mno-std-struct-return'
!      With '-mstd-struct-return', the compiler generates checking code in
       functions returning structures or unions to detect size mismatches
       between the two sides of function calls, as per the 32-bit ABI.
  
!      The default is '-mno-std-struct-return'.  This option has no effect
       in 64-bit mode.
  
! '-mcpu=CPU_TYPE'
       Set the instruction set, register set, and instruction scheduling
       parameters for machine type CPU_TYPE.  Supported values for
!      CPU_TYPE are 'v7', 'cypress', 'v8', 'supersparc', 'hypersparc',
!      'leon', 'leon3', 'leon3v7', 'leon5', 'sparclite', 'f930', 'f934',
!      'sparclite86x', 'sparclet', 'tsc701', 'v9', 'ultrasparc',
!      'ultrasparc3', 'niagara', 'niagara2', 'niagara3', 'niagara4',
!      'niagara7' and 'm8'.
  
       Native Solaris and GNU/Linux toolchains also support the value
!      'native', which selects the best architecture option for the host
!      processor.  '-mcpu=native' has no effect if GCC does not recognize
       the processor.
  
       Default instruction scheduling parameters are used for values that
!      select an architecture and not an implementation.  These are 'v7',
!      'v8', 'sparclite', 'sparclet', 'v9'.
  
       Here is a list of each supported architecture and their supported
       implementations.
--- 31073,31121 ----
       default because it results in a performance loss, especially for
       floating-point code.
  
! â€˜-muser-modeâ€™
! â€˜-mno-user-modeâ€™
       Do not generate code that can only run in supervisor mode.  This is
!      relevant only for the â€˜casaâ€™ instruction emitted for the LEON3
       processor.  This is the default.
  
! â€˜-mfaster-structsâ€™
! â€˜-mno-faster-structsâ€™
!      With â€˜-mfaster-structsâ€™, the compiler assumes that structures
       should have 8-byte alignment.  This enables the use of pairs of
!      â€˜lddâ€™ and â€˜stdâ€™ instructions for copies in structure assignment, in
!      place of twice as many â€˜ldâ€™ and â€˜stâ€™ pairs.  However, the use of
       this changed alignment directly violates the SPARC ABI.  Thus, it's
       intended only for use on targets where the developer acknowledges
       that their resulting code is not directly in line with the rules of
       the ABI.
  
! â€˜-mstd-struct-returnâ€™
! â€˜-mno-std-struct-returnâ€™
!      With â€˜-mstd-struct-returnâ€™, the compiler generates checking code in
       functions returning structures or unions to detect size mismatches
       between the two sides of function calls, as per the 32-bit ABI.
  
!      The default is â€˜-mno-std-struct-returnâ€™.  This option has no effect
       in 64-bit mode.
  
! â€˜-mcpu=CPU_TYPEâ€™
       Set the instruction set, register set, and instruction scheduling
       parameters for machine type CPU_TYPE.  Supported values for
!      CPU_TYPE are â€˜v7â€™, â€˜cypressâ€™, â€˜v8â€™, â€˜supersparcâ€™, â€˜hypersparcâ€™,
!      â€˜leonâ€™, â€˜leon3â€™, â€˜leon3v7â€™, â€˜leon5â€™, â€˜sparcliteâ€™, â€˜f930â€™, â€˜f934â€™,
!      â€˜sparclite86xâ€™, â€˜sparcletâ€™, â€˜tsc701â€™, â€˜v9â€™, â€˜ultrasparcâ€™,
!      â€˜ultrasparc3â€™, â€˜niagaraâ€™, â€˜niagara2â€™, â€˜niagara3â€™, â€˜niagara4â€™,
!      â€˜niagara7â€™ and â€˜m8â€™.
  
       Native Solaris and GNU/Linux toolchains also support the value
!      â€˜nativeâ€™, which selects the best architecture option for the host
!      processor.  â€˜-mcpu=nativeâ€™ has no effect if GCC does not recognize
       the processor.
  
       Default instruction scheduling parameters are used for values that
!      select an architecture and not an implementation.  These are â€˜v7â€™,
!      â€˜v8â€™, â€˜sparcliteâ€™, â€˜sparcletâ€™, â€˜v9â€™.
  
       Here is a list of each supported architecture and their supported
       implementations.
*************** These '-m' options are supported on the
*** 31129,31332 ****
            niagara4, niagara7, m8
  
       By default (unless configured otherwise), GCC generates code for
!      the V7 variant of the SPARC architecture.  With '-mcpu=cypress',
       the compiler additionally optimizes it for the Cypress CY7C602
       chip, as used in the SPARCStation/SPARCServer 3xx series.  This is
       also appropriate for the older SPARCStation 1, 2, IPX etc.
  
!      With '-mcpu=v8', GCC generates code for the V8 variant of the SPARC
       architecture.  The only difference from V7 code is that the
       compiler emits the integer multiply and integer divide instructions
       which exist in SPARC-V8 but not in SPARC-V7.  With
!      '-mcpu=supersparc', the compiler additionally optimizes it for the
       SuperSPARC chip, as used in the SPARCStation 10, 1000 and 2000
       series.
  
!      With '-mcpu=sparclite', GCC generates code for the SPARClite
       variant of the SPARC architecture.  This adds the integer multiply,
!      integer divide step and scan ('ffs') instructions which exist in
!      SPARClite but not in SPARC-V7.  With '-mcpu=f930', the compiler
       additionally optimizes it for the Fujitsu MB86930 chip, which is
!      the original SPARClite, with no FPU.  With '-mcpu=f934', the
       compiler additionally optimizes it for the Fujitsu MB86934 chip,
       which is the more recent SPARClite with FPU.
  
!      With '-mcpu=sparclet', GCC generates code for the SPARClet variant
       of the SPARC architecture.  This adds the integer multiply,
!      multiply/accumulate, integer divide step and scan ('ffs')
       instructions which exist in SPARClet but not in SPARC-V7.  With
!      '-mcpu=tsc701', the compiler additionally optimizes it for the
       TEMIC SPARClet chip.
  
!      With '-mcpu=v9', GCC generates code for the V9 variant of the SPARC
       architecture.  This adds 64-bit integer and floating-point move
       instructions, 3 additional floating-point condition code registers
!      and conditional move instructions.  With '-mcpu=ultrasparc', the
       compiler additionally optimizes it for the Sun UltraSPARC I/II/IIi
!      chips.  With '-mcpu=ultrasparc3', the compiler additionally
       optimizes it for the Sun UltraSPARC III/III+/IIIi/IIIi+/IV/IV+
!      chips.  With '-mcpu=niagara', the compiler additionally optimizes
!      it for Sun UltraSPARC T1 chips.  With '-mcpu=niagara2', the
       compiler additionally optimizes it for Sun UltraSPARC T2 chips.
!      With '-mcpu=niagara3', the compiler additionally optimizes it for
!      Sun UltraSPARC T3 chips.  With '-mcpu=niagara4', the compiler
       additionally optimizes it for Sun UltraSPARC T4 chips.  With
!      '-mcpu=niagara7', the compiler additionally optimizes it for Oracle
!      SPARC M7 chips.  With '-mcpu=m8', the compiler additionally
       optimizes it for Oracle M8 chips.
  
! '-mtune=CPU_TYPE'
       Set the instruction scheduling parameters for machine type
       CPU_TYPE, but do not set the instruction set or register set that
!      the option '-mcpu=CPU_TYPE' does.
  
!      The same values for '-mcpu=CPU_TYPE' can be used for
!      '-mtune=CPU_TYPE', but the only useful values are those that select
!      a particular CPU implementation.  Those are 'cypress',
!      'supersparc', 'hypersparc', 'leon', 'leon3', 'leon3v7', 'leon5',
!      'f930', 'f934', 'sparclite86x', 'tsc701', 'ultrasparc',
!      'ultrasparc3', 'niagara', 'niagara2', 'niagara3', 'niagara4',
!      'niagara7' and 'm8'.  With native Solaris and GNU/Linux toolchains,
!      'native' can also be used.
  
! '-mv8plus'
! '-mno-v8plus'
!      With '-mv8plus', GCC generates code for the SPARC-V8+ ABI.  The
       difference from the V8 ABI is that the global and out registers are
       considered 64 bits wide.  This is enabled by default on Solaris in
       32-bit mode for all SPARC-V9 processors.
  
! '-mvis'
! '-mno-vis'
!      With '-mvis', GCC generates code that takes advantage of the
       UltraSPARC Visual Instruction Set extensions.  The default is
!      '-mno-vis'.
  
! '-mvis2'
! '-mno-vis2'
!      With '-mvis2', GCC generates code that takes advantage of version
       2.0 of the UltraSPARC Visual Instruction Set extensions.  The
!      default is '-mvis2' when targeting a cpu that supports such
!      instructions, such as UltraSPARC-III and later.  Setting '-mvis2'
!      also sets '-mvis'.
  
! '-mvis3'
! '-mno-vis3'
!      With '-mvis3', GCC generates code that takes advantage of version
       3.0 of the UltraSPARC Visual Instruction Set extensions.  The
!      default is '-mvis3' when targeting a cpu that supports such
!      instructions, such as niagara-3 and later.  Setting '-mvis3' also
!      sets '-mvis2' and '-mvis'.
  
! '-mvis3b'
! '-mno-vis3b'
!      With '-mvis3b', GCC generates code that takes advantage of version
       3.0 of the UltraSPARC Visual Instruction Set extensions, plus the
       additional VIS instructions introduced in the Oracle SPARC
!      Architecture 2011.  The default is '-mvis3b' when targeting a cpu
       that supports such instructions, such as niagara-7 and later.
!      Setting '-mvis3b' also sets '-mvis3', '-mvis2' and '-mvis'.
  
! '-mvis4'
! '-mno-vis4'
!      With '-mvis4', GCC generates code that takes advantage of version
       4.0 of the UltraSPARC Visual Instruction Set extensions.  The
!      default is '-mvis4' when targeting a cpu that supports such
!      instructions, such as niagara-7 and later.  Setting '-mvis4' also
!      sets '-mvis3b', '-mvis3', '-mvis2' and '-mvis'.
  
! '-mvis4b'
! '-mno-vis4b'
!      With '-mvis4b', GCC generates code that takes advantage of version
       4.0 of the UltraSPARC Visual Instruction Set extensions, plus the
       additional VIS instructions introduced in the Oracle SPARC
!      Architecture 2017.  The default is '-mvis4b' when targeting a cpu
       that supports such instructions, such as m8 and later.  Setting
!      '-mvis4b' also sets '-mvis4', '-mvis3b', '-mvis3', '-mvis2' and
!      '-mvis'.
  
! '-mcbcond'
! '-mno-cbcond'
!      With '-mcbcond', GCC generates code that takes advantage of the
       UltraSPARC Compare-and-Branch-on-Condition instructions.  The
!      default is '-mcbcond' when targeting a CPU that supports such
       instructions, such as Niagara-4 and later.
  
! '-mfmaf'
! '-mno-fmaf'
!      With '-mfmaf', GCC generates code that takes advantage of the
       UltraSPARC Fused Multiply-Add Floating-point instructions.  The
!      default is '-mfmaf' when targeting a CPU that supports such
       instructions, such as Niagara-3 and later.
  
! '-mfsmuld'
! '-mno-fsmuld'
!      With '-mfsmuld', GCC generates code that takes advantage of the
       Floating-point Multiply Single to Double (FsMULd) instruction.  The
!      default is '-mfsmuld' when targeting a CPU supporting the
!      architecture versions V8 or V9 with FPU except '-mcpu=leon'.
  
! '-mpopc'
! '-mno-popc'
!      With '-mpopc', GCC generates code that takes advantage of the
!      UltraSPARC Population Count instruction.  The default is '-mpopc'
       when targeting a CPU that supports such an instruction, such as
       Niagara-2 and later.
  
! '-msubxc'
! '-mno-subxc'
!      With '-msubxc', GCC generates code that takes advantage of the
       UltraSPARC Subtract-Extended-with-Carry instruction.  The default
!      is '-msubxc' when targeting a CPU that supports such an
       instruction, such as Niagara-7 and later.
  
! '-mfix-at697f'
       Enable the documented workaround for the single erratum of the
       Atmel AT697F processor (which corresponds to erratum #13 of the
       AT697E processor).
  
! '-mfix-ut699'
       Enable the documented workarounds for the floating-point errata and
       the data cache nullify errata of the UT699 processor.
  
! '-mfix-ut700'
       Enable the documented workaround for the back-to-back store errata
       of the UT699E/UT700 processor.
  
! '-mfix-gr712rc'
       Enable the documented workaround for the back-to-back store errata
       of the GR712RC processor.
  
!  These '-m' options are supported in addition to the above on SPARC-V9
  processors in 64-bit environments:
  
! '-m32'
! '-m64'
       Generate code for a 32-bit or 64-bit environment.  The 32-bit
       environment sets int, long and pointer to 32 bits.  The 64-bit
       environment sets int to 32 bits and long and pointer to 64 bits.
  
! '-mcmodel=WHICH'
       Set the code model to one of
  
!      'medlow'
            The Medium/Low code model: 64-bit addresses, programs must be
            linked in the low 32 bits of memory.  Programs can be
            statically or dynamically linked.
  
!      'medmid'
            The Medium/Middle code model: 64-bit addresses, programs must
            be linked in the low 44 bits of memory, the text and data
            segments must be less than 2GB in size and the data segment
            must be located within 2GB of the text segment.
  
!      'medany'
            The Medium/Anywhere code model: 64-bit addresses, programs may
            be linked anywhere in memory, the text and data segments must
            be less than 2GB in size and the data segment must be located
            within 2GB of the text segment.
  
!      'embmedany'
            The Medium/Anywhere code model for embedded systems: 64-bit
            addresses, the text and data segments must be less than 2GB in
            size, both starting anywhere in memory (determined at link
--- 31137,31340 ----
            niagara4, niagara7, m8
  
       By default (unless configured otherwise), GCC generates code for
!      the V7 variant of the SPARC architecture.  With â€˜-mcpu=cypressâ€™,
       the compiler additionally optimizes it for the Cypress CY7C602
       chip, as used in the SPARCStation/SPARCServer 3xx series.  This is
       also appropriate for the older SPARCStation 1, 2, IPX etc.
  
!      With â€˜-mcpu=v8â€™, GCC generates code for the V8 variant of the SPARC
       architecture.  The only difference from V7 code is that the
       compiler emits the integer multiply and integer divide instructions
       which exist in SPARC-V8 but not in SPARC-V7.  With
!      â€˜-mcpu=supersparcâ€™, the compiler additionally optimizes it for the
       SuperSPARC chip, as used in the SPARCStation 10, 1000 and 2000
       series.
  
!      With â€˜-mcpu=sparcliteâ€™, GCC generates code for the SPARClite
       variant of the SPARC architecture.  This adds the integer multiply,
!      integer divide step and scan (â€˜ffsâ€™) instructions which exist in
!      SPARClite but not in SPARC-V7.  With â€˜-mcpu=f930â€™, the compiler
       additionally optimizes it for the Fujitsu MB86930 chip, which is
!      the original SPARClite, with no FPU.  With â€˜-mcpu=f934â€™, the
       compiler additionally optimizes it for the Fujitsu MB86934 chip,
       which is the more recent SPARClite with FPU.
  
!      With â€˜-mcpu=sparcletâ€™, GCC generates code for the SPARClet variant
       of the SPARC architecture.  This adds the integer multiply,
!      multiply/accumulate, integer divide step and scan (â€˜ffsâ€™)
       instructions which exist in SPARClet but not in SPARC-V7.  With
!      â€˜-mcpu=tsc701â€™, the compiler additionally optimizes it for the
       TEMIC SPARClet chip.
  
!      With â€˜-mcpu=v9â€™, GCC generates code for the V9 variant of the SPARC
       architecture.  This adds 64-bit integer and floating-point move
       instructions, 3 additional floating-point condition code registers
!      and conditional move instructions.  With â€˜-mcpu=ultrasparcâ€™, the
       compiler additionally optimizes it for the Sun UltraSPARC I/II/IIi
!      chips.  With â€˜-mcpu=ultrasparc3â€™, the compiler additionally
       optimizes it for the Sun UltraSPARC III/III+/IIIi/IIIi+/IV/IV+
!      chips.  With â€˜-mcpu=niagaraâ€™, the compiler additionally optimizes
!      it for Sun UltraSPARC T1 chips.  With â€˜-mcpu=niagara2â€™, the
       compiler additionally optimizes it for Sun UltraSPARC T2 chips.
!      With â€˜-mcpu=niagara3â€™, the compiler additionally optimizes it for
!      Sun UltraSPARC T3 chips.  With â€˜-mcpu=niagara4â€™, the compiler
       additionally optimizes it for Sun UltraSPARC T4 chips.  With
!      â€˜-mcpu=niagara7â€™, the compiler additionally optimizes it for Oracle
!      SPARC M7 chips.  With â€˜-mcpu=m8â€™, the compiler additionally
       optimizes it for Oracle M8 chips.
  
! â€˜-mtune=CPU_TYPEâ€™
       Set the instruction scheduling parameters for machine type
       CPU_TYPE, but do not set the instruction set or register set that
!      the option â€˜-mcpu=CPU_TYPEâ€™ does.
  
!      The same values for â€˜-mcpu=CPU_TYPEâ€™ can be used for
!      â€˜-mtune=CPU_TYPEâ€™, but the only useful values are those that select
!      a particular CPU implementation.  Those are â€˜cypressâ€™,
!      â€˜supersparcâ€™, â€˜hypersparcâ€™, â€˜leonâ€™, â€˜leon3â€™, â€˜leon3v7â€™, â€˜leon5â€™,
!      â€˜f930â€™, â€˜f934â€™, â€˜sparclite86xâ€™, â€˜tsc701â€™, â€˜ultrasparcâ€™,
!      â€˜ultrasparc3â€™, â€˜niagaraâ€™, â€˜niagara2â€™, â€˜niagara3â€™, â€˜niagara4â€™,
!      â€˜niagara7â€™ and â€˜m8â€™.  With native Solaris and GNU/Linux toolchains,
!      â€˜nativeâ€™ can also be used.
  
! â€˜-mv8plusâ€™
! â€˜-mno-v8plusâ€™
!      With â€˜-mv8plusâ€™, GCC generates code for the SPARC-V8+ ABI.  The
       difference from the V8 ABI is that the global and out registers are
       considered 64 bits wide.  This is enabled by default on Solaris in
       32-bit mode for all SPARC-V9 processors.
  
! â€˜-mvisâ€™
! â€˜-mno-visâ€™
!      With â€˜-mvisâ€™, GCC generates code that takes advantage of the
       UltraSPARC Visual Instruction Set extensions.  The default is
!      â€˜-mno-visâ€™.
  
! â€˜-mvis2â€™
! â€˜-mno-vis2â€™
!      With â€˜-mvis2â€™, GCC generates code that takes advantage of version
       2.0 of the UltraSPARC Visual Instruction Set extensions.  The
!      default is â€˜-mvis2â€™ when targeting a cpu that supports such
!      instructions, such as UltraSPARC-III and later.  Setting â€˜-mvis2â€™
!      also sets â€˜-mvisâ€™.
  
! â€˜-mvis3â€™
! â€˜-mno-vis3â€™
!      With â€˜-mvis3â€™, GCC generates code that takes advantage of version
       3.0 of the UltraSPARC Visual Instruction Set extensions.  The
!      default is â€˜-mvis3â€™ when targeting a cpu that supports such
!      instructions, such as niagara-3 and later.  Setting â€˜-mvis3â€™ also
!      sets â€˜-mvis2â€™ and â€˜-mvisâ€™.
  
! â€˜-mvis3bâ€™
! â€˜-mno-vis3bâ€™
!      With â€˜-mvis3bâ€™, GCC generates code that takes advantage of version
       3.0 of the UltraSPARC Visual Instruction Set extensions, plus the
       additional VIS instructions introduced in the Oracle SPARC
!      Architecture 2011.  The default is â€˜-mvis3bâ€™ when targeting a cpu
       that supports such instructions, such as niagara-7 and later.
!      Setting â€˜-mvis3bâ€™ also sets â€˜-mvis3â€™, â€˜-mvis2â€™ and â€˜-mvisâ€™.
  
! â€˜-mvis4â€™
! â€˜-mno-vis4â€™
!      With â€˜-mvis4â€™, GCC generates code that takes advantage of version
       4.0 of the UltraSPARC Visual Instruction Set extensions.  The
!      default is â€˜-mvis4â€™ when targeting a cpu that supports such
!      instructions, such as niagara-7 and later.  Setting â€˜-mvis4â€™ also
!      sets â€˜-mvis3bâ€™, â€˜-mvis3â€™, â€˜-mvis2â€™ and â€˜-mvisâ€™.
  
! â€˜-mvis4bâ€™
! â€˜-mno-vis4bâ€™
!      With â€˜-mvis4bâ€™, GCC generates code that takes advantage of version
       4.0 of the UltraSPARC Visual Instruction Set extensions, plus the
       additional VIS instructions introduced in the Oracle SPARC
!      Architecture 2017.  The default is â€˜-mvis4bâ€™ when targeting a cpu
       that supports such instructions, such as m8 and later.  Setting
!      â€˜-mvis4bâ€™ also sets â€˜-mvis4â€™, â€˜-mvis3bâ€™, â€˜-mvis3â€™, â€˜-mvis2â€™ and
!      â€˜-mvisâ€™.
  
! â€˜-mcbcondâ€™
! â€˜-mno-cbcondâ€™
!      With â€˜-mcbcondâ€™, GCC generates code that takes advantage of the
       UltraSPARC Compare-and-Branch-on-Condition instructions.  The
!      default is â€˜-mcbcondâ€™ when targeting a CPU that supports such
       instructions, such as Niagara-4 and later.
  
! â€˜-mfmafâ€™
! â€˜-mno-fmafâ€™
!      With â€˜-mfmafâ€™, GCC generates code that takes advantage of the
       UltraSPARC Fused Multiply-Add Floating-point instructions.  The
!      default is â€˜-mfmafâ€™ when targeting a CPU that supports such
       instructions, such as Niagara-3 and later.
  
! â€˜-mfsmuldâ€™
! â€˜-mno-fsmuldâ€™
!      With â€˜-mfsmuldâ€™, GCC generates code that takes advantage of the
       Floating-point Multiply Single to Double (FsMULd) instruction.  The
!      default is â€˜-mfsmuldâ€™ when targeting a CPU supporting the
!      architecture versions V8 or V9 with FPU except â€˜-mcpu=leonâ€™.
  
! â€˜-mpopcâ€™
! â€˜-mno-popcâ€™
!      With â€˜-mpopcâ€™, GCC generates code that takes advantage of the
!      UltraSPARC Population Count instruction.  The default is â€˜-mpopcâ€™
       when targeting a CPU that supports such an instruction, such as
       Niagara-2 and later.
  
! â€˜-msubxcâ€™
! â€˜-mno-subxcâ€™
!      With â€˜-msubxcâ€™, GCC generates code that takes advantage of the
       UltraSPARC Subtract-Extended-with-Carry instruction.  The default
!      is â€˜-msubxcâ€™ when targeting a CPU that supports such an
       instruction, such as Niagara-7 and later.
  
! â€˜-mfix-at697fâ€™
       Enable the documented workaround for the single erratum of the
       Atmel AT697F processor (which corresponds to erratum #13 of the
       AT697E processor).
  
! â€˜-mfix-ut699â€™
       Enable the documented workarounds for the floating-point errata and
       the data cache nullify errata of the UT699 processor.
  
! â€˜-mfix-ut700â€™
       Enable the documented workaround for the back-to-back store errata
       of the UT699E/UT700 processor.
  
! â€˜-mfix-gr712rcâ€™
       Enable the documented workaround for the back-to-back store errata
       of the GR712RC processor.
  
!  These â€˜-mâ€™ options are supported in addition to the above on SPARC-V9
  processors in 64-bit environments:
  
! â€˜-m32â€™
! â€˜-m64â€™
       Generate code for a 32-bit or 64-bit environment.  The 32-bit
       environment sets int, long and pointer to 32 bits.  The 64-bit
       environment sets int to 32 bits and long and pointer to 64 bits.
  
! â€˜-mcmodel=WHICHâ€™
       Set the code model to one of
  
!      â€˜medlowâ€™
            The Medium/Low code model: 64-bit addresses, programs must be
            linked in the low 32 bits of memory.  Programs can be
            statically or dynamically linked.
  
!      â€˜medmidâ€™
            The Medium/Middle code model: 64-bit addresses, programs must
            be linked in the low 44 bits of memory, the text and data
            segments must be less than 2GB in size and the data segment
            must be located within 2GB of the text segment.
  
!      â€˜medanyâ€™
            The Medium/Anywhere code model: 64-bit addresses, programs may
            be linked anywhere in memory, the text and data segments must
            be less than 2GB in size and the data segment must be located
            within 2GB of the text segment.
  
!      â€˜embmedanyâ€™
            The Medium/Anywhere code model for embedded systems: 64-bit
            addresses, the text and data segments must be less than 2GB in
            size, both starting anywhere in memory (determined at link
*************** processors in 64-bit environments:
*** 31334,31366 ****
            segment.  Programs are statically linked and PIC is not
            supported.
  
! '-mmemory-model=MEM-MODEL'
       Set the memory model in force on the processor to one of
  
!      'default'
            The default memory model for the processor and operating
            system.
  
!      'rmo'
            Relaxed Memory Order
  
!      'pso'
            Partial Store Order
  
!      'tso'
            Total Store Order
  
!      'sc'
            Sequential Consistency
  
       These memory models are formally defined in Appendix D of the
!      SPARC-V9 architecture manual, as set in the processor's 'PSTATE.MM'
       field.
  
! '-mstack-bias'
! '-mno-stack-bias'
!      With '-mstack-bias', GCC assumes that the stack pointer, and frame
!      pointer if present, are offset by -2047 which must be added back
       when making stack frame references.  This is the default in 64-bit
       mode.  Otherwise, assume no such offset is present.
  
--- 31342,31374 ----
            segment.  Programs are statically linked and PIC is not
            supported.
  
! â€˜-mmemory-model=MEM-MODELâ€™
       Set the memory model in force on the processor to one of
  
!      â€˜defaultâ€™
            The default memory model for the processor and operating
            system.
  
!      â€˜rmoâ€™
            Relaxed Memory Order
  
!      â€˜psoâ€™
            Partial Store Order
  
!      â€˜tsoâ€™
            Total Store Order
  
!      â€˜scâ€™
            Sequential Consistency
  
       These memory models are formally defined in Appendix D of the
!      SPARC-V9 architecture manual, as set in the processor's â€˜PSTATE.MMâ€™
       field.
  
! â€˜-mstack-biasâ€™
! â€˜-mno-stack-biasâ€™
!      With â€˜-mstack-biasâ€™, GCC assumes that the stack pointer, and frame
!      pointer if present, are offset by âˆ’2047 which must be added back
       when making stack frame references.  This is the default in 64-bit
       mode.  Otherwise, assume no such offset is present.
  
*************** File: gcc.info,  Node: System V Options,
*** 31373,31395 ****
  These additional options are available on System V Release 4 for
  compatibility with other compilers on those systems:
  
! '-G'
!      Create a shared object.  It is recommended that '-symbolic' or
!      '-shared' be used instead.
  
! '-Qy'
       Identify the versions of each tool used by the compiler, in a
!      '.ident' assembler directive in the output.
  
! '-Qn'
!      Refrain from adding '.ident' directives to the output file (this is
       the default).
  
! '-YP,DIRS'
       Search the directories DIRS, and no others, for libraries specified
!      with '-l'.
  
! '-Ym,DIR'
       Look in the directory DIR to find the M4 preprocessor.  The
       assembler uses this option.
  
--- 31381,31403 ----
  These additional options are available on System V Release 4 for
  compatibility with other compilers on those systems:
  
! â€˜-Gâ€™
!      Create a shared object.  It is recommended that â€˜-symbolicâ€™ or
!      â€˜-sharedâ€™ be used instead.
  
! â€˜-Qyâ€™
       Identify the versions of each tool used by the compiler, in a
!      â€˜.identâ€™ assembler directive in the output.
  
! â€˜-Qnâ€™
!      Refrain from adding â€˜.identâ€™ directives to the output file (this is
       the default).
  
! â€˜-YP,DIRSâ€™
       Search the directories DIRS, and no others, for libraries specified
!      with â€˜-lâ€™.
  
! â€˜-Ym,DIRâ€™
       Look in the directory DIR to find the M4 preprocessor.  The
       assembler uses this option.
  
*************** File: gcc.info,  Node: V850 Options,  Ne
*** 31399,31583 ****
  3.20.49 V850 Options
  --------------------
  
! These '-m' options are defined for V850 implementations:
  
! '-mlong-calls'
! '-mno-long-calls'
       Treat all calls as being far away (near).  If calls are assumed to
       be far away, the compiler always loads the function's address into
       a register, and calls indirect through the pointer.
  
! '-mno-ep'
! '-mep'
       Do not optimize (do optimize) basic blocks that use the same index
!      pointer 4 or more times to copy pointer into the 'ep' register, and
!      use the shorter 'sld' and 'sst' instructions.  The '-mep' option is
       on by default if you optimize.
  
! '-mno-prolog-function'
! '-mprolog-function'
       Do not use (do use) external functions to save and restore
       registers at the prologue and epilogue of a function.  The external
       functions are slower, but use less code space if more than one
       function saves the same number of registers.  The
!      '-mprolog-function' option is on by default if you optimize.
  
! '-mspace'
       Try to make the code as small as possible.  At present, this just
!      turns on the '-mep' and '-mprolog-function' options.
  
! '-mtda=N'
       Put static or global variables whose size is N bytes or less into
!      the tiny data area that register 'ep' points to.  The tiny data
       area can hold up to 256 bytes in total (128 bytes for byte
       references).
  
! '-msda=N'
       Put static or global variables whose size is N bytes or less into
!      the small data area that register 'gp' points to.  The small data
       area can hold up to 64 kilobytes.
  
! '-mzda=N'
       Put static or global variables whose size is N bytes or less into
       the first 32 kilobytes of memory.
  
! '-mv850'
       Specify that the target processor is the V850.
  
! '-mv850e3v5'
       Specify that the target processor is the V850E3V5.  The
!      preprocessor constant '__v850e3v5__' is defined if this option is
       used.
  
! '-mv850e2v4'
       Specify that the target processor is the V850E3V5.  This is an
!      alias for the '-mv850e3v5' option.
  
! '-mv850e2v3'
       Specify that the target processor is the V850E2V3.  The
!      preprocessor constant '__v850e2v3__' is defined if this option is
       used.
  
! '-mv850e2'
       Specify that the target processor is the V850E2.  The preprocessor
!      constant '__v850e2__' is defined if this option is used.
  
! '-mv850e1'
       Specify that the target processor is the V850E1.  The preprocessor
!      constants '__v850e1__' and '__v850e__' are defined if this option
       is used.
  
! '-mv850es'
       Specify that the target processor is the V850ES. This is an alias
!      for the '-mv850e1' option.
  
! '-mv850e'
       Specify that the target processor is the V850E.  The preprocessor
!      constant '__v850e__' is defined if this option is used.
  
!      If neither '-mv850' nor '-mv850e' nor '-mv850e1' nor '-mv850e2' nor
!      '-mv850e2v3' nor '-mv850e3v5' are defined then a default target
!      processor is chosen and the relevant '__v850*__' preprocessor
       constant is defined.
  
!      The preprocessor constants '__v850' and '__v851__' are always
       defined, regardless of which processor variant is the target.
  
! '-mdisable-callt'
! '-mno-disable-callt'
!      This option suppresses generation of the 'CALLT' instruction for
       the v850e, v850e1, v850e2, v850e2v3 and v850e3v5 flavors of the
       v850 architecture.
  
       This option is enabled by default when the RH850 ABI is in use (see
!      '-mrh850-abi'), and disabled by default when the GCC ABI is in use.
!      If 'CALLT' instructions are being generated then the C preprocessor
!      symbol '__V850_CALLT__' is defined.
  
! '-mrelax'
! '-mno-relax'
!      Pass on (or do not pass on) the '-mrelax' command-line option to
       the assembler.
  
! '-mlong-jumps'
! '-mno-long-jumps'
       Disable (or re-enable) the generation of PC-relative jump
       instructions.
  
! '-msoft-float'
! '-mhard-float'
       Disable (or re-enable) the generation of hardware floating point
       instructions.  This option is only significant when the target
!      architecture is 'V850E2V3' or higher.  If hardware floating point
       instructions are being generated then the C preprocessor symbol
!      '__FPU_OK__' is defined, otherwise the symbol '__NO_FPU__' is
       defined.
  
! '-mloop'
       Enables the use of the e3v5 LOOP instruction.  The use of this
       instruction is not enabled by default when the e3v5 architecture is
       selected because its use is still experimental.
  
! '-mrh850-abi'
! '-mghs'
       Enables support for the RH850 version of the V850 ABI. This is the
       default.  With this version of the ABI the following rules apply:
  
!         * Integer sized structures and unions are returned via a memory
            pointer rather than a register.
  
!         * Large structures and unions (more than 8 bytes in size) are
            passed by value.
  
!         * Functions are aligned to 16-bit boundaries.
  
!         * The '-m8byte-align' command-line option is supported.
  
!         * The '-mdisable-callt' command-line option is enabled by
!           default.  The '-mno-disable-callt' command-line option is not
            supported.
  
       When this version of the ABI is enabled the C preprocessor symbol
!      '__V850_RH850_ABI__' is defined.
  
! '-mgcc-abi'
       Enables support for the old GCC version of the V850 ABI. With this
       version of the ABI the following rules apply:
  
!         * Integer sized structures and unions are returned in register
!           'r10'.
  
!         * Large structures and unions (more than 8 bytes in size) are
            passed by reference.
  
!         * Functions are aligned to 32-bit boundaries, unless optimizing
            for size.
  
!         * The '-m8byte-align' command-line option is not supported.
  
!         * The '-mdisable-callt' command-line option is supported but not
            enabled by default.
  
       When this version of the ABI is enabled the C preprocessor symbol
!      '__V850_GCC_ABI__' is defined.
  
! '-m8byte-align'
! '-mno-8byte-align'
!      Enables support for 'double' and 'long long' types to be aligned on
       8-byte boundaries.  The default is to restrict the alignment of all
!      objects to at most 4-bytes.  When '-m8byte-align' is in effect the
!      C preprocessor symbol '__V850_8BYTE_ALIGN__' is defined.
  
! '-mbig-switch'
       Generate code suitable for big switch tables.  Use this option only
       if the assembler/linker complain about out of range branches within
       a switch table.
  
! '-mapp-regs'
       This option causes r2 and r5 to be used in the code generated by
       the compiler.  This setting is the default.
  
! '-mno-app-regs'
       This option causes r2 and r5 to be treated as fixed registers.
  
  
--- 31407,31591 ----
  3.20.49 V850 Options
  --------------------
  
! These â€˜-mâ€™ options are defined for V850 implementations:
  
! â€˜-mlong-callsâ€™
! â€˜-mno-long-callsâ€™
       Treat all calls as being far away (near).  If calls are assumed to
       be far away, the compiler always loads the function's address into
       a register, and calls indirect through the pointer.
  
! â€˜-mno-epâ€™
! â€˜-mepâ€™
       Do not optimize (do optimize) basic blocks that use the same index
!      pointer 4 or more times to copy pointer into the â€˜epâ€™ register, and
!      use the shorter â€˜sldâ€™ and â€˜sstâ€™ instructions.  The â€˜-mepâ€™ option is
       on by default if you optimize.
  
! â€˜-mno-prolog-functionâ€™
! â€˜-mprolog-functionâ€™
       Do not use (do use) external functions to save and restore
       registers at the prologue and epilogue of a function.  The external
       functions are slower, but use less code space if more than one
       function saves the same number of registers.  The
!      â€˜-mprolog-functionâ€™ option is on by default if you optimize.
  
! â€˜-mspaceâ€™
       Try to make the code as small as possible.  At present, this just
!      turns on the â€˜-mepâ€™ and â€˜-mprolog-functionâ€™ options.
  
! â€˜-mtda=Nâ€™
       Put static or global variables whose size is N bytes or less into
!      the tiny data area that register â€˜epâ€™ points to.  The tiny data
       area can hold up to 256 bytes in total (128 bytes for byte
       references).
  
! â€˜-msda=Nâ€™
       Put static or global variables whose size is N bytes or less into
!      the small data area that register â€˜gpâ€™ points to.  The small data
       area can hold up to 64 kilobytes.
  
! â€˜-mzda=Nâ€™
       Put static or global variables whose size is N bytes or less into
       the first 32 kilobytes of memory.
  
! â€˜-mv850â€™
       Specify that the target processor is the V850.
  
! â€˜-mv850e3v5â€™
       Specify that the target processor is the V850E3V5.  The
!      preprocessor constant â€˜__v850e3v5__â€™ is defined if this option is
       used.
  
! â€˜-mv850e2v4â€™
       Specify that the target processor is the V850E3V5.  This is an
!      alias for the â€˜-mv850e3v5â€™ option.
  
! â€˜-mv850e2v3â€™
       Specify that the target processor is the V850E2V3.  The
!      preprocessor constant â€˜__v850e2v3__â€™ is defined if this option is
       used.
  
! â€˜-mv850e2â€™
       Specify that the target processor is the V850E2.  The preprocessor
!      constant â€˜__v850e2__â€™ is defined if this option is used.
  
! â€˜-mv850e1â€™
       Specify that the target processor is the V850E1.  The preprocessor
!      constants â€˜__v850e1__â€™ and â€˜__v850e__â€™ are defined if this option
       is used.
  
! â€˜-mv850esâ€™
       Specify that the target processor is the V850ES. This is an alias
!      for the â€˜-mv850e1â€™ option.
  
! â€˜-mv850eâ€™
       Specify that the target processor is the V850E.  The preprocessor
!      constant â€˜__v850e__â€™ is defined if this option is used.
  
!      If neither â€˜-mv850â€™ nor â€˜-mv850eâ€™ nor â€˜-mv850e1â€™ nor â€˜-mv850e2â€™ nor
!      â€˜-mv850e2v3â€™ nor â€˜-mv850e3v5â€™ are defined then a default target
!      processor is chosen and the relevant â€˜__v850*__â€™ preprocessor
       constant is defined.
  
!      The preprocessor constants â€˜__v850â€™ and â€˜__v851__â€™ are always
       defined, regardless of which processor variant is the target.
  
! â€˜-mdisable-calltâ€™
! â€˜-mno-disable-calltâ€™
!      This option suppresses generation of the â€˜CALLTâ€™ instruction for
       the v850e, v850e1, v850e2, v850e2v3 and v850e3v5 flavors of the
       v850 architecture.
  
       This option is enabled by default when the RH850 ABI is in use (see
!      â€˜-mrh850-abiâ€™), and disabled by default when the GCC ABI is in use.
!      If â€˜CALLTâ€™ instructions are being generated then the C preprocessor
!      symbol â€˜__V850_CALLT__â€™ is defined.
  
! â€˜-mrelaxâ€™
! â€˜-mno-relaxâ€™
!      Pass on (or do not pass on) the â€˜-mrelaxâ€™ command-line option to
       the assembler.
  
! â€˜-mlong-jumpsâ€™
! â€˜-mno-long-jumpsâ€™
       Disable (or re-enable) the generation of PC-relative jump
       instructions.
  
! â€˜-msoft-floatâ€™
! â€˜-mhard-floatâ€™
       Disable (or re-enable) the generation of hardware floating point
       instructions.  This option is only significant when the target
!      architecture is â€˜V850E2V3â€™ or higher.  If hardware floating point
       instructions are being generated then the C preprocessor symbol
!      â€˜__FPU_OK__â€™ is defined, otherwise the symbol â€˜__NO_FPU__â€™ is
       defined.
  
! â€˜-mloopâ€™
       Enables the use of the e3v5 LOOP instruction.  The use of this
       instruction is not enabled by default when the e3v5 architecture is
       selected because its use is still experimental.
  
! â€˜-mrh850-abiâ€™
! â€˜-mghsâ€™
       Enables support for the RH850 version of the V850 ABI. This is the
       default.  With this version of the ABI the following rules apply:
  
!         â€¢ Integer sized structures and unions are returned via a memory
            pointer rather than a register.
  
!         â€¢ Large structures and unions (more than 8 bytes in size) are
            passed by value.
  
!         â€¢ Functions are aligned to 16-bit boundaries.
  
!         â€¢ The â€˜-m8byte-alignâ€™ command-line option is supported.
  
!         â€¢ The â€˜-mdisable-calltâ€™ command-line option is enabled by
!           default.  The â€˜-mno-disable-calltâ€™ command-line option is not
            supported.
  
       When this version of the ABI is enabled the C preprocessor symbol
!      â€˜__V850_RH850_ABI__â€™ is defined.
  
! â€˜-mgcc-abiâ€™
       Enables support for the old GCC version of the V850 ABI. With this
       version of the ABI the following rules apply:
  
!         â€¢ Integer sized structures and unions are returned in register
!           â€˜r10â€™.
  
!         â€¢ Large structures and unions (more than 8 bytes in size) are
            passed by reference.
  
!         â€¢ Functions are aligned to 32-bit boundaries, unless optimizing
            for size.
  
!         â€¢ The â€˜-m8byte-alignâ€™ command-line option is not supported.
  
!         â€¢ The â€˜-mdisable-calltâ€™ command-line option is supported but not
            enabled by default.
  
       When this version of the ABI is enabled the C preprocessor symbol
!      â€˜__V850_GCC_ABI__â€™ is defined.
  
! â€˜-m8byte-alignâ€™
! â€˜-mno-8byte-alignâ€™
!      Enables support for â€˜doubleâ€™ and â€˜long longâ€™ types to be aligned on
       8-byte boundaries.  The default is to restrict the alignment of all
!      objects to at most 4-bytes.  When â€˜-m8byte-alignâ€™ is in effect the
!      C preprocessor symbol â€˜__V850_8BYTE_ALIGN__â€™ is defined.
  
! â€˜-mbig-switchâ€™
       Generate code suitable for big switch tables.  Use this option only
       if the assembler/linker complain about out of range branches within
       a switch table.
  
! â€˜-mapp-regsâ€™
       This option causes r2 and r5 to be used in the code generated by
       the compiler.  This setting is the default.
  
! â€˜-mno-app-regsâ€™
       This option causes r2 and r5 to be treated as fixed registers.
  
  
*************** File: gcc.info,  Node: VAX Options,  Nex
*** 31586,31613 ****
  3.20.50 VAX Options
  -------------------
  
! These '-m' options are defined for the VAX:
  
! '-munix'
!      Do not output certain jump instructions ('aobleq' and so on) that
       the Unix assembler for the VAX cannot handle across long ranges.
  
! '-mgnu'
       Do output those jump instructions, on the assumption that the GNU
       assembler is being used.
  
! '-md'
! '-md-float'
       Use the D_floating data format for double-precision floating-point
       numbers instead of G_floating.
  
! '-mg'
! '-mg-float'
       Use the G_floating data format for double-precision floating-point
       numbers instead of D_floating.
  
! '-mlra'
! '-mno-lra'
       Enable Local Register Allocation.  This is still experimental for
       the VAX, so by default the compiler uses standard reload.
  
--- 31594,31621 ----
  3.20.50 VAX Options
  -------------------
  
! These â€˜-mâ€™ options are defined for the VAX:
  
! â€˜-munixâ€™
!      Do not output certain jump instructions (â€˜aobleqâ€™ and so on) that
       the Unix assembler for the VAX cannot handle across long ranges.
  
! â€˜-mgnuâ€™
       Do output those jump instructions, on the assumption that the GNU
       assembler is being used.
  
! â€˜-mdâ€™
! â€˜-md-floatâ€™
       Use the D_floating data format for double-precision floating-point
       numbers instead of G_floating.
  
! â€˜-mgâ€™
! â€˜-mg-floatâ€™
       Use the G_floating data format for double-precision floating-point
       numbers instead of D_floating.
  
! â€˜-mlraâ€™
! â€˜-mno-lraâ€™
       Enable Local Register Allocation.  This is still experimental for
       the VAX, so by default the compiler uses standard reload.
  
*************** File: gcc.info,  Node: Visium Options,
*** 31617,31673 ****
  3.20.51 Visium Options
  ----------------------
  
! '-mdebug'
       A program which performs file I/O and is destined to run on an MCM
       target should be linked with this option.  It causes the libraries
       libc.a and libdebug.a to be linked.  The program should be run on
       the target under the control of the GDB remote debugging stub.
  
! '-msim'
       A program which performs file I/O and is destined to run on the
       simulator should be linked with option.  This causes libraries
       libc.a and libsim.a to be linked.
  
! '-mfpu'
! '-mhard-float'
       Generate code containing floating-point instructions.  This is the
       default.
  
! '-mno-fpu'
! '-msoft-float'
       Generate code containing library calls for floating-point.
  
!      '-msoft-float' changes the calling convention in the output file;
       therefore, it is only useful if you compile _all_ of a program with
!      this option.  In particular, you need to compile 'libgcc.a', the
!      library that comes with GCC, with '-msoft-float' in order for this
       to work.
  
! '-mcpu=CPU_TYPE'
       Set the instruction set, register set, and instruction scheduling
       parameters for machine type CPU_TYPE.  Supported values for
!      CPU_TYPE are 'mcm', 'gr5' and 'gr6'.
  
!      'mcm' is a synonym of 'gr5' present for backward compatibility.
  
       By default (unless configured otherwise), GCC generates code for
       the GR5 variant of the Visium architecture.
  
!      With '-mcpu=gr6', GCC generates code for the GR6 variant of the
       Visium architecture.  The only difference from GR5 code is that the
       compiler will generate block move instructions.
  
! '-mtune=CPU_TYPE'
       Set the instruction scheduling parameters for machine type
       CPU_TYPE, but do not set the instruction set or register set that
!      the option '-mcpu=CPU_TYPE' would.
  
! '-msv-mode'
       Generate code for the supervisor mode, where there are no
       restrictions on the access to general registers.  This is the
       default.
  
! '-muser-mode'
       Generate code for the user mode, where the access to some general
       registers is forbidden: on the GR5, registers r24 to r31 cannot be
       accessed in this mode; on the GR6, only registers r29 to r31 are
--- 31625,31681 ----
  3.20.51 Visium Options
  ----------------------
  
! â€˜-mdebugâ€™
       A program which performs file I/O and is destined to run on an MCM
       target should be linked with this option.  It causes the libraries
       libc.a and libdebug.a to be linked.  The program should be run on
       the target under the control of the GDB remote debugging stub.
  
! â€˜-msimâ€™
       A program which performs file I/O and is destined to run on the
       simulator should be linked with option.  This causes libraries
       libc.a and libsim.a to be linked.
  
! â€˜-mfpuâ€™
! â€˜-mhard-floatâ€™
       Generate code containing floating-point instructions.  This is the
       default.
  
! â€˜-mno-fpuâ€™
! â€˜-msoft-floatâ€™
       Generate code containing library calls for floating-point.
  
!      â€˜-msoft-floatâ€™ changes the calling convention in the output file;
       therefore, it is only useful if you compile _all_ of a program with
!      this option.  In particular, you need to compile â€˜libgcc.aâ€™, the
!      library that comes with GCC, with â€˜-msoft-floatâ€™ in order for this
       to work.
  
! â€˜-mcpu=CPU_TYPEâ€™
       Set the instruction set, register set, and instruction scheduling
       parameters for machine type CPU_TYPE.  Supported values for
!      CPU_TYPE are â€˜mcmâ€™, â€˜gr5â€™ and â€˜gr6â€™.
  
!      â€˜mcmâ€™ is a synonym of â€˜gr5â€™ present for backward compatibility.
  
       By default (unless configured otherwise), GCC generates code for
       the GR5 variant of the Visium architecture.
  
!      With â€˜-mcpu=gr6â€™, GCC generates code for the GR6 variant of the
       Visium architecture.  The only difference from GR5 code is that the
       compiler will generate block move instructions.
  
! â€˜-mtune=CPU_TYPEâ€™
       Set the instruction scheduling parameters for machine type
       CPU_TYPE, but do not set the instruction set or register set that
!      the option â€˜-mcpu=CPU_TYPEâ€™ would.
  
! â€˜-msv-modeâ€™
       Generate code for the supervisor mode, where there are no
       restrictions on the access to general registers.  This is the
       default.
  
! â€˜-muser-modeâ€™
       Generate code for the user mode, where the access to some general
       registers is forbidden: on the GR5, registers r24 to r31 cannot be
       accessed in this mode; on the GR6, only registers r29 to r31 are
*************** File: gcc.info,  Node: VMS Options,  Nex
*** 31679,31702 ****
  3.20.52 VMS Options
  -------------------
  
! These '-m' options are defined for the VMS implementations:
  
! '-mvms-return-codes'
!      Return VMS condition codes from 'main'.  The default is to return
       POSIX-style condition (e.g. error) codes.
  
! '-mdebug-main=PREFIX'
       Flag the first routine whose name starts with PREFIX as the main
       routine for the debugger.
  
! '-mmalloc64'
       Default to 64-bit memory allocation routines.
  
! '-mpointer-size=SIZE'
       Set the default size of pointers.  Possible options for SIZE are
!      '32' or 'short' for 32 bit pointers, '64' or 'long' for 64 bit
!      pointers, and 'no' for supporting only 32 bit pointers.  The later
!      option disables 'pragma pointer_size'.
  
  
  File: gcc.info,  Node: VxWorks Options,  Next: x86 Options,  Prev: VMS Options,  Up: Submodel Options
--- 31687,31710 ----
  3.20.52 VMS Options
  -------------------
  
! These â€˜-mâ€™ options are defined for the VMS implementations:
  
! â€˜-mvms-return-codesâ€™
!      Return VMS condition codes from â€˜mainâ€™.  The default is to return
       POSIX-style condition (e.g. error) codes.
  
! â€˜-mdebug-main=PREFIXâ€™
       Flag the first routine whose name starts with PREFIX as the main
       routine for the debugger.
  
! â€˜-mmalloc64â€™
       Default to 64-bit memory allocation routines.
  
! â€˜-mpointer-size=SIZEâ€™
       Set the default size of pointers.  Possible options for SIZE are
!      â€˜32â€™ or â€˜shortâ€™ for 32 bit pointers, â€˜64â€™ or â€˜longâ€™ for 64 bit
!      pointers, and â€˜noâ€™ for supporting only 32 bit pointers.  The later
!      option disables â€˜pragma pointer_sizeâ€™.
  
  
  File: gcc.info,  Node: VxWorks Options,  Next: x86 Options,  Prev: VMS Options,  Up: Submodel Options
*************** The options in this section are defined
*** 31708,31739 ****
  Options specific to the target hardware are listed with the other
  options for that target.
  
! '-mrtp'
       GCC can generate code for both VxWorks kernels and real time
       processes (RTPs).  This option switches from the former to the
!      latter.  It also defines the preprocessor macro '__RTP__'.
  
! '-msmp'
       Select SMP runtimes for linking.  Not available on architectures
       other than PowerPC, nor on VxWorks version 7 or later, in which the
       selection is part of the VxWorks build configuration and the
       library paths are the same for either choice.
  
! '-non-static'
       Link an RTP executable against shared libraries rather than static
!      libraries.  The options '-static' and '-shared' can also be used
!      for RTPs (*note Link Options::); '-static' is the default.
  
! '-Bstatic'
! '-Bdynamic'
       These options are passed down to the linker.  They are defined for
       compatibility with Diab.
  
! '-Xbind-lazy'
       Enable lazy binding of function calls.  This option is equivalent
!      to '-Wl,-z,now' and is defined for compatibility with Diab.
  
! '-Xbind-now'
       Disable lazy binding of function calls.  This option is the default
       and is defined for compatibility with Diab.
  
--- 31716,31747 ----
  Options specific to the target hardware are listed with the other
  options for that target.
  
! â€˜-mrtpâ€™
       GCC can generate code for both VxWorks kernels and real time
       processes (RTPs).  This option switches from the former to the
!      latter.  It also defines the preprocessor macro â€˜__RTP__â€™.
  
! â€˜-msmpâ€™
       Select SMP runtimes for linking.  Not available on architectures
       other than PowerPC, nor on VxWorks version 7 or later, in which the
       selection is part of the VxWorks build configuration and the
       library paths are the same for either choice.
  
! â€˜-non-staticâ€™
       Link an RTP executable against shared libraries rather than static
!      libraries.  The options â€˜-staticâ€™ and â€˜-sharedâ€™ can also be used
!      for RTPs (*note Link Options::); â€˜-staticâ€™ is the default.
  
! â€˜-Bstaticâ€™
! â€˜-Bdynamicâ€™
       These options are passed down to the linker.  They are defined for
       compatibility with Diab.
  
! â€˜-Xbind-lazyâ€™
       Enable lazy binding of function calls.  This option is equivalent
!      to â€˜-Wl,-z,nowâ€™ and is defined for compatibility with Diab.
  
! â€˜-Xbind-nowâ€™
       Disable lazy binding of function calls.  This option is the default
       and is defined for compatibility with Diab.
  
*************** File: gcc.info,  Node: x86 Options,  Nex
*** 31743,31776 ****
  3.20.54 x86 Options
  -------------------
  
! These '-m' options are defined for the x86 family of computers.
  
! '-march=CPU-TYPE'
       Generate instructions for the machine type CPU-TYPE.  In contrast
!      to '-mtune=CPU-TYPE', which merely tunes the generated code for the
!      specified CPU-TYPE, '-march=CPU-TYPE' allows GCC to generate code
       that may not run at all on processors other than the one indicated.
!      Specifying '-march=CPU-TYPE' implies '-mtune=CPU-TYPE', except
       where noted otherwise.
  
       The choices for CPU-TYPE are:
  
!      'native'
            This selects the CPU to generate code for at compilation time
            by determining the processor type of the compiling machine.
!           Using '-march=native' enables all instruction subsets
            supported by the local machine (hence the result might not run
!           on different machines).  Using '-mtune=native' produces code
            optimized for the local machine under the constraints of the
            selected instruction set.
  
!      'x86-64'
            A generic CPU with 64-bit extensions, MMX, SSE, SSE2, and FXSR
            instruction set support.
  
!      'x86-64-v2'
!      'x86-64-v3'
!      'x86-64-v4'
            These choices for CPU-TYPE select the corresponding
            micro-architecture level from the x86-64 psABI. On ABIs other
            than the x86-64 psABI they select the same CPU features as the
--- 31751,31784 ----
  3.20.54 x86 Options
  -------------------
  
! These â€˜-mâ€™ options are defined for the x86 family of computers.
  
! â€˜-march=CPU-TYPEâ€™
       Generate instructions for the machine type CPU-TYPE.  In contrast
!      to â€˜-mtune=CPU-TYPEâ€™, which merely tunes the generated code for the
!      specified CPU-TYPE, â€˜-march=CPU-TYPEâ€™ allows GCC to generate code
       that may not run at all on processors other than the one indicated.
!      Specifying â€˜-march=CPU-TYPEâ€™ implies â€˜-mtune=CPU-TYPEâ€™, except
       where noted otherwise.
  
       The choices for CPU-TYPE are:
  
!      â€˜nativeâ€™
            This selects the CPU to generate code for at compilation time
            by determining the processor type of the compiling machine.
!           Using â€˜-march=nativeâ€™ enables all instruction subsets
            supported by the local machine (hence the result might not run
!           on different machines).  Using â€˜-mtune=nativeâ€™ produces code
            optimized for the local machine under the constraints of the
            selected instruction set.
  
!      â€˜x86-64â€™
            A generic CPU with 64-bit extensions, MMX, SSE, SSE2, and FXSR
            instruction set support.
  
!      â€˜x86-64-v2â€™
!      â€˜x86-64-v3â€™
!      â€˜x86-64-v4â€™
            These choices for CPU-TYPE select the corresponding
            micro-architecture level from the x86-64 psABI. On ABIs other
            than the x86-64 psABI they select the same CPU features as the
*************** These '-m' options are defined for the x
*** 31778,31891 ****
            level.
  
            Since these CPU-TYPE values do not have a corresponding
!           '-mtune' setting, using '-march' with these values enables
            generic tuning.  Specific tuning can be enabled using the
!           '-mtune=OTHER-CPU-TYPE' option with an appropriate
            OTHER-CPU-TYPE value.
  
!      'i386'
            Original Intel i386 CPU.
  
!      'i486'
            Intel i486 CPU.  (No scheduling is implemented for this chip.)
  
!      'i586'
!      'pentium'
            Intel Pentium CPU with no MMX support.
  
!      'lakemont'
            Intel Lakemont MCU, based on Intel Pentium CPU.
  
!      'pentium-mmx'
            Intel Pentium MMX CPU, based on Pentium core with MMX
            instruction set support.
  
!      'pentiumpro'
            Intel Pentium Pro CPU with no MMX support.
  
!      'i686'
!           When used with '-march', the Pentium Pro instruction set is
            used, so the code runs on all i686 family chips.  When used
!           with '-mtune', it has the same meaning as 'generic'.
  
!      'pentium2'
            Intel Pentium II CPU, based on Pentium Pro core with MMX and
            FXSR instruction set support.
  
!      'pentium3'
!      'pentium3m'
            Intel Pentium III CPU, based on Pentium Pro core with MMX,
            FXSR and SSE instruction set support.
  
!      'pentium-m'
            Intel Pentium M; low-power version of Intel Pentium III CPU
            with MMX, SSE, SSE2 and FXSR instruction set support.  Used by
            Centrino notebooks.
  
!      'pentium4'
!      'pentium4m'
            Intel Pentium 4 CPU with MMX, SSE, SSE2 and FXSR instruction
            set support.
  
!      'prescott'
            Improved version of Intel Pentium 4 CPU with MMX, SSE, SSE2,
            SSE3 and FXSR instruction set support.
  
!      'nocona'
            Improved version of Intel Pentium 4 CPU with 64-bit
            extensions, MMX, SSE, SSE2, SSE3 and FXSR instruction set
            support.
  
!      'core2'
            Intel Core 2 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3,
            SSSE3, CX16, SAHF and FXSR instruction set support.
  
!      'nehalem'
!      'corei7'
            Intel Nehalem CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF and FXSR
            instruction set support.
  
!      'westmere'
            Intel Westmere CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR and
            PCLMUL instruction set support.
  
!      'sandybridge'
!      'corei7-avx'
            Intel Sandy Bridge CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX,
            XSAVE and PCLMUL instruction set support.
  
!      'ivybridge'
!      'core-avx-i'
            Intel Ivy Bridge CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX,
            XSAVE, PCLMUL, FSGSBASE, RDRND and F16C instruction set
            support.
  
!      'haswell'
!      'core-avx2'
            Intel Haswell CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX,
            XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT,
            FMA, MOVBE and HLE instruction set support.
  
!      'broadwell'
            Intel Broadwell CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX,
            XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT,
            FMA, MOVBE, HLE, RDSEED, ADCX and PREFETCHW instruction set
            support.
  
!      'skylake'
            Intel Skylake CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX,
            XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT,
            FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES, CLFLUSHOPT,
            XSAVEC, XSAVES and SGX instruction set support.
  
!      'skylake-avx512'
            Intel Skylake Server CPU with 64-bit extensions, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR,
            AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2,
--- 31786,31899 ----
            level.
  
            Since these CPU-TYPE values do not have a corresponding
!           â€˜-mtuneâ€™ setting, using â€˜-marchâ€™ with these values enables
            generic tuning.  Specific tuning can be enabled using the
!           â€˜-mtune=OTHER-CPU-TYPEâ€™ option with an appropriate
            OTHER-CPU-TYPE value.
  
!      â€˜i386â€™
            Original Intel i386 CPU.
  
!      â€˜i486â€™
            Intel i486 CPU.  (No scheduling is implemented for this chip.)
  
!      â€˜i586â€™
!      â€˜pentiumâ€™
            Intel Pentium CPU with no MMX support.
  
!      â€˜lakemontâ€™
            Intel Lakemont MCU, based on Intel Pentium CPU.
  
!      â€˜pentium-mmxâ€™
            Intel Pentium MMX CPU, based on Pentium core with MMX
            instruction set support.
  
!      â€˜pentiumproâ€™
            Intel Pentium Pro CPU with no MMX support.
  
!      â€˜i686â€™
!           When used with â€˜-marchâ€™, the Pentium Pro instruction set is
            used, so the code runs on all i686 family chips.  When used
!           with â€˜-mtuneâ€™, it has the same meaning as â€˜genericâ€™.
  
!      â€˜pentium2â€™
            Intel Pentium II CPU, based on Pentium Pro core with MMX and
            FXSR instruction set support.
  
!      â€˜pentium3â€™
!      â€˜pentium3mâ€™
            Intel Pentium III CPU, based on Pentium Pro core with MMX,
            FXSR and SSE instruction set support.
  
!      â€˜pentium-mâ€™
            Intel Pentium M; low-power version of Intel Pentium III CPU
            with MMX, SSE, SSE2 and FXSR instruction set support.  Used by
            Centrino notebooks.
  
!      â€˜pentium4â€™
!      â€˜pentium4mâ€™
            Intel Pentium 4 CPU with MMX, SSE, SSE2 and FXSR instruction
            set support.
  
!      â€˜prescottâ€™
            Improved version of Intel Pentium 4 CPU with MMX, SSE, SSE2,
            SSE3 and FXSR instruction set support.
  
!      â€˜noconaâ€™
            Improved version of Intel Pentium 4 CPU with 64-bit
            extensions, MMX, SSE, SSE2, SSE3 and FXSR instruction set
            support.
  
!      â€˜core2â€™
            Intel Core 2 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3,
            SSSE3, CX16, SAHF and FXSR instruction set support.
  
!      â€˜nehalemâ€™
!      â€˜corei7â€™
            Intel Nehalem CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF and FXSR
            instruction set support.
  
!      â€˜westmereâ€™
            Intel Westmere CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR and
            PCLMUL instruction set support.
  
!      â€˜sandybridgeâ€™
!      â€˜corei7-avxâ€™
            Intel Sandy Bridge CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX,
            XSAVE and PCLMUL instruction set support.
  
!      â€˜ivybridgeâ€™
!      â€˜core-avx-iâ€™
            Intel Ivy Bridge CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX,
            XSAVE, PCLMUL, FSGSBASE, RDRND and F16C instruction set
            support.
  
!      â€˜haswellâ€™
!      â€˜core-avx2â€™
            Intel Haswell CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX,
            XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT,
            FMA, MOVBE and HLE instruction set support.
  
!      â€˜broadwellâ€™
            Intel Broadwell CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX,
            XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT,
            FMA, MOVBE, HLE, RDSEED, ADCX and PREFETCHW instruction set
            support.
  
!      â€˜skylakeâ€™
            Intel Skylake CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX,
            XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT,
            FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES, CLFLUSHOPT,
            XSAVEC, XSAVES and SGX instruction set support.
  
!      â€˜skylake-avx512â€™
            Intel Skylake Server CPU with 64-bit extensions, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR,
            AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2,
*************** These '-m' options are defined for the x
*** 31893,31899 ****
            CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, CLWB, AVX512VL,
            AVX512BW, AVX512DQ and AVX512CD instruction set support.
  
!      'cascadelake'
            Intel Cascade Lake CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX,
            XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT,
--- 31901,31907 ----
            CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, CLWB, AVX512VL,
            AVX512BW, AVX512DQ and AVX512CD instruction set support.
  
!      â€˜cascadelakeâ€™
            Intel Cascade Lake CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX,
            XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT,
*************** These '-m' options are defined for the x
*** 31901,31907 ****
            XSAVEC, XSAVES, SGX, AVX512F, CLWB, AVX512VL, AVX512BW,
            AVX512DQ, AVX512CD and AVX512VNNI instruction set support.
  
!      'cannonlake'
            Intel Cannon Lake Server CPU with 64-bit extensions, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR,
            AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2,
--- 31909,31915 ----
            XSAVEC, XSAVES, SGX, AVX512F, CLWB, AVX512VL, AVX512BW,
            AVX512DQ, AVX512CD and AVX512VNNI instruction set support.
  
!      â€˜cannonlakeâ€™
            Intel Cannon Lake Server CPU with 64-bit extensions, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR,
            AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2,
*************** These '-m' options are defined for the x
*** 31910,31916 ****
            AVX512DQ, AVX512CD, PKU, AVX512VBMI, AVX512IFMA and SHA
            instruction set support.
  
!      'cooperlake'
            Intel Cooper Lake CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX,
            XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT,
--- 31918,31924 ----
            AVX512DQ, AVX512CD, PKU, AVX512VBMI, AVX512IFMA and SHA
            instruction set support.
  
!      â€˜cooperlakeâ€™
            Intel Cooper Lake CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX,
            XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT,
*************** These '-m' options are defined for the x
*** 31919,31925 ****
            AVX512DQ, AVX512CD, AVX512VNNI and AVX512BF16 instruction set
            support.
  
!      'icelake-client'
            Intel Ice Lake Client CPU with 64-bit extensions, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR,
            AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2,
--- 31927,31933 ----
            AVX512DQ, AVX512CD, AVX512VNNI and AVX512BF16 instruction set
            support.
  
!      â€˜icelake-clientâ€™
            Intel Ice Lake Client CPU with 64-bit extensions, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR,
            AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2,
*************** These '-m' options are defined for the x
*** 31930,31936 ****
            AVX512BITALG, RDPID and AVX512VPOPCNTDQ instruction set
            support.
  
!      'icelake-server'
            Intel Ice Lake Server CPU with 64-bit extensions, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR,
            AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2,
--- 31938,31944 ----
            AVX512BITALG, RDPID and AVX512VPOPCNTDQ instruction set
            support.
  
!      â€˜icelake-serverâ€™
            Intel Ice Lake Server CPU with 64-bit extensions, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR,
            AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2,
*************** These '-m' options are defined for the x
*** 31941,31947 ****
            AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD and
            CLWB instruction set support.
  
!      'tigerlake'
            Intel Tiger Lake CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX,
            XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT,
--- 31949,31955 ----
            AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD and
            CLWB instruction set support.
  
!      â€˜tigerlakeâ€™
            Intel Tiger Lake CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX,
            XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT,
*************** These '-m' options are defined for the x
*** 31952,31958 ****
            AVX512VPOPCNTDQ, MOVDIRI, MOVDIR64B, CLWB, AVX512VP2INTERSECT
            and KEYLOCKER instruction set support.
  
!      'rocketlake'
            Intel Rocket Lake CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX,
            XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT,
--- 31960,31966 ----
            AVX512VPOPCNTDQ, MOVDIRI, MOVDIR64B, CLWB, AVX512VP2INTERSECT
            and KEYLOCKER instruction set support.
  
!      â€˜rocketlakeâ€™
            Intel Rocket Lake CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX,
            XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT,
*************** These '-m' options are defined for the x
*** 31962,31971 ****
            VAES, AVX512VBMI2, VPCLMULQDQ, AVX512BITALG, RDPID and
            AVX512VPOPCNTDQ instruction set support.
  
!      'alderlake'
!      'raptorlake'
!      'meteorlake'
!      'gracemont'
            Intel Alder Lake/Raptor Lake/Meteor Lake/Gracemont CPU with
            64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
            SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC,
--- 31970,31979 ----
            VAES, AVX512VBMI2, VPCLMULQDQ, AVX512BITALG, RDPID and
            AVX512VPOPCNTDQ instruction set support.
  
!      â€˜alderlakeâ€™
!      â€˜raptorlakeâ€™
!      â€˜meteorlakeâ€™
!      â€˜gracemontâ€™
            Intel Alder Lake/Raptor Lake/Meteor Lake/Gracemont CPU with
            64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
            SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC,
*************** These '-m' options are defined for the x
*** 31974,31980 ****
            F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE,
            HRESET, KL, WIDEKL and AVX-VNNI instruction set support.
  
!      'arrowlake'
            Intel Arrow Lake CPU with 64-bit extensions, MOVBE, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW,
            PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE,
--- 31982,31988 ----
            F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE,
            HRESET, KL, WIDEKL and AVX-VNNI instruction set support.
  
!      â€˜arrowlakeâ€™
            Intel Arrow Lake CPU with 64-bit extensions, MOVBE, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW,
            PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE,
*************** These '-m' options are defined for the x
*** 31984,31991 ****
            AVX-VNNI, UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT and
            CMPCCXADD instruction set support.
  
!      'arrowlake-s'
!      'lunarlake'
            Intel Arrow Lake S/Lunar Lake CPU with 64-bit extensions,
            MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT,
            AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES,
--- 31992,31999 ----
            AVX-VNNI, UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT and
            CMPCCXADD instruction set support.
  
!      â€˜arrowlake-sâ€™
!      â€˜lunarlakeâ€™
            Intel Arrow Lake S/Lunar Lake CPU with 64-bit extensions,
            MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT,
            AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES,
*************** These '-m' options are defined for the x
*** 31996,32002 ****
            AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3 and SM4
            instruction set support.
  
!      'pantherlake'
            Intel Panther Lake CPU with 64-bit extensions, MOVBE, MMX,
            SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES,
            PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT,
--- 32004,32010 ----
            AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3 and SM4
            instruction set support.
  
!      â€˜pantherlakeâ€™
            Intel Panther Lake CPU with 64-bit extensions, MOVBE, MMX,
            SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES,
            PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT,
*************** These '-m' options are defined for the x
*** 32004,32014 ****
            MOVDIR64B, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA,
            LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET,
            AVX-VNNI, UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT,
!           CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4 and PREFETCHI
!           instruction set support.
  
!      'sapphirerapids'
!      'emeraldrapids'
            Intel Sapphire Rapids/Emerald Rapids CPU with 64-bit
            extensions, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2,
            POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
--- 32012,32022 ----
            MOVDIR64B, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA,
            LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET,
            AVX-VNNI, UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT,
!           CMPCCXADD, AVXVNNIINT16, SHA512, SM3 and SM4 instruction set
!           support.
  
!      â€˜sapphirerapidsâ€™
!      â€˜emeraldrapidsâ€™
            Intel Sapphire Rapids/Emerald Rapids CPU with 64-bit
            extensions, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2,
            POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
*************** These '-m' options are defined for the x
*** 32022,32028 ****
            AMX-INT8, AVX-VNNI, AVX512-FP16 and AVX512BF16 instruction set
            support.
  
!      'graniterapids'
            Intel Granite Rapids CPU with 64-bit extensions, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR,
            AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2,
--- 32030,32036 ----
            AMX-INT8, AVX-VNNI, AVX512-FP16 and AVX512BF16 instruction set
            support.
  
!      â€˜graniterapidsâ€™
            Intel Granite Rapids CPU with 64-bit extensions, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR,
            AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2,
*************** These '-m' options are defined for the x
*** 32036,32042 ****
            AVX512-FP16, AVX512BF16, AMX-FP16 and PREFETCHI instruction
            set support.
  
!      'graniterapids-d'
            Intel Granite Rapids D CPU with 64-bit extensions, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR,
            AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2,
--- 32044,32050 ----
            AVX512-FP16, AVX512BF16, AMX-FP16 and PREFETCHI instruction
            set support.
  
!      â€˜graniterapids-dâ€™
            Intel Granite Rapids D CPU with 64-bit extensions, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR,
            AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2,
*************** These '-m' options are defined for the x
*** 32050,32056 ****
            AVX512FP16, AVX512BF16, AMX-FP16, PREFETCHI and AMX-COMPLEX
            instruction set support.
  
!      'diamondrapids'
            Intel Diamond Rapids CPU with 64-bit extensions, MOVBE, MMX,
            SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF,
            FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI,
--- 32058,32064 ----
            AVX512FP16, AVX512BF16, AMX-FP16, PREFETCHI and AMX-COMPLEX
            instruction set support.
  
!      â€˜diamondrapidsâ€™
            Intel Diamond Rapids CPU with 64-bit extensions, MOVBE, MMX,
            SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF,
            FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI,
*************** These '-m' options are defined for the x
*** 32064,32098 ****
            AVX512FP16, AVX512BF16, AMX-FP16, PREFETCHI, AMX-COMPLEX,
            AVX10.1-512, AVX-IFMA, AVX-NE-CONVERT, AVX-VNNI-INT16,
            AVX-VNNI-INT8, CMPccXADD, SHA512, SM3, SM4, AVX10.2-512,
!           APX_F, AMX-AVX512, AMX-FP8, AMX-TF32, AMX-TRANSPOSE, MOVRS,
!           AMX-MOVRS and USER_MSR instruction set support.
  
!      'bonnell'
!      'atom'
            Intel Bonnell CPU with 64-bit extensions, MOVBE, MMX, SSE,
            SSE2, SSE3 and SSSE3 instruction set support.
  
!      'silvermont'
!      'slm'
            Intel Silvermont CPU with 64-bit extensions, MOVBE, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR,
            PCLMUL, PREFETCHW and RDRND instruction set support.
  
!      'goldmont'
            Intel Goldmont CPU with 64-bit extensions, MOVBE, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR,
            PCLMUL, PREFETCHW, RDRND, AES, SHA, RDSEED, XSAVE, XSAVEC,
            XSAVES, XSAVEOPT, CLFLUSHOPT and FSGSBASE instruction set
            support.
  
!      'goldmont-plus'
            Intel Goldmont Plus CPU with 64-bit extensions, MOVBE, MMX,
            SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF,
            FXSR, PCLMUL, PREFETCHW, RDRND, AES, SHA, RDSEED, XSAVE,
            XSAVEC, XSAVES, XSAVEOPT, CLFLUSHOPT, FSGSBASE, PTWRITE, RDPID
            and SGX instruction set support.
  
!      'tremont'
            Intel Tremont CPU with 64-bit extensions, MOVBE, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR,
            PCLMUL, PREFETCHW, RDRND, AES, SHA, RDSEED, XSAVE, XSAVEC,
--- 32072,32106 ----
            AVX512FP16, AVX512BF16, AMX-FP16, PREFETCHI, AMX-COMPLEX,
            AVX10.1-512, AVX-IFMA, AVX-NE-CONVERT, AVX-VNNI-INT16,
            AVX-VNNI-INT8, CMPccXADD, SHA512, SM3, SM4, AVX10.2-512,
!           APX_F, AMX-AVX512, AMX-FP8, AMX-TF32, MOVRS and AMX-MOVRS
!           instruction set support.
  
!      â€˜bonnellâ€™
!      â€˜atomâ€™
            Intel Bonnell CPU with 64-bit extensions, MOVBE, MMX, SSE,
            SSE2, SSE3 and SSSE3 instruction set support.
  
!      â€˜silvermontâ€™
!      â€˜slmâ€™
            Intel Silvermont CPU with 64-bit extensions, MOVBE, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR,
            PCLMUL, PREFETCHW and RDRND instruction set support.
  
!      â€˜goldmontâ€™
            Intel Goldmont CPU with 64-bit extensions, MOVBE, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR,
            PCLMUL, PREFETCHW, RDRND, AES, SHA, RDSEED, XSAVE, XSAVEC,
            XSAVES, XSAVEOPT, CLFLUSHOPT and FSGSBASE instruction set
            support.
  
!      â€˜goldmont-plusâ€™
            Intel Goldmont Plus CPU with 64-bit extensions, MOVBE, MMX,
            SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF,
            FXSR, PCLMUL, PREFETCHW, RDRND, AES, SHA, RDSEED, XSAVE,
            XSAVEC, XSAVES, XSAVEOPT, CLFLUSHOPT, FSGSBASE, PTWRITE, RDPID
            and SGX instruction set support.
  
!      â€˜tremontâ€™
            Intel Tremont CPU with 64-bit extensions, MOVBE, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR,
            PCLMUL, PREFETCHW, RDRND, AES, SHA, RDSEED, XSAVE, XSAVEC,
*************** These '-m' options are defined for the x
*** 32100,32106 ****
            CLWB, GFNI-SSE, MOVDIRI, MOVDIR64B, CLDEMOTE and WAITPKG
            instruction set support.
  
!      'sierraforest'
            Intel Sierra Forest CPU with 64-bit extensions, MOVBE, MMX,
            SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES,
            PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT,
--- 32108,32114 ----
            CLWB, GFNI-SSE, MOVDIRI, MOVDIR64B, CLDEMOTE and WAITPKG
            instruction set support.
  
!      â€˜sierraforestâ€™
            Intel Sierra Forest CPU with 64-bit extensions, MOVBE, MMX,
            SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES,
            PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT,
*************** These '-m' options are defined for the x
*** 32111,32117 ****
            AVXNECONVERT, CMPCCXADD, ENQCMD and UINTR instruction set
            support.
  
!      'grandridge'
            Intel Grand Ridge CPU with 64-bit extensions, MOVBE, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW,
            PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE,
--- 32119,32125 ----
            AVXNECONVERT, CMPCCXADD, ENQCMD and UINTR instruction set
            support.
  
!      â€˜grandridgeâ€™
            Intel Grand Ridge CPU with 64-bit extensions, MOVBE, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW,
            PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE,
*************** These '-m' options are defined for the x
*** 32121,32127 ****
            WIDEKL, AVX-VNNI, AVXIFMA, AVXVNNIINT8, AVXNECONVERT,
            CMPCCXADD, ENQCMD and UINTR instruction set support.
  
!      'clearwaterforest'
            Intel Clearwater Forest CPU with 64-bit extensions, MOVBE,
            MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES,
            PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT,
--- 32129,32135 ----
            WIDEKL, AVX-VNNI, AVXIFMA, AVXVNNIINT8, AVXNECONVERT,
            CMPCCXADD, ENQCMD and UINTR instruction set support.
  
!      â€˜clearwaterforestâ€™
            Intel Clearwater Forest CPU with 64-bit extensions, MOVBE,
            MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES,
            PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT,
*************** These '-m' options are defined for the x
*** 32132,32204 ****
            AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4,
            USER_MSR and PREFETCHI instruction set support.
  
!      'k6'
            AMD K6 CPU with MMX instruction set support.
  
!      'k6-2'
!      'k6-3'
            Improved versions of AMD K6 CPU with MMX and 3DNow!
            instruction set support.
  
!      'athlon'
!      'athlon-tbird'
            AMD Athlon CPU with MMX, 3dNOW!, enhanced 3DNow! and SSE
            prefetch instructions support.
  
!      'athlon-4'
!      'athlon-xp'
!      'athlon-mp'
            Improved AMD Athlon CPU with MMX, 3DNow!, enhanced 3DNow! and
            full SSE instruction set support.
  
!      'k8'
!      'opteron'
!      'athlon64'
!      'athlon-fx'
            Processors based on the AMD K8 core with x86-64 instruction
            set support, including the AMD Opteron, Athlon 64, and Athlon
            64 FX processors.  (This supersets MMX, SSE, SSE2, 3DNow!,
            enhanced 3DNow! and 64-bit instruction set extensions.)
  
!      'k8-sse3'
!      'opteron-sse3'
!      'athlon64-sse3'
            Improved versions of AMD K8 cores with SSE3 instruction set
            support.
  
!      'amdfam10'
!      'barcelona'
            CPUs based on AMD Family 10h cores with x86-64 instruction set
            support.  (This supersets MMX, SSE, SSE2, SSE3, SSE4A, 3DNow!,
            enhanced 3DNow!, ABM and 64-bit instruction set extensions.)
  
!      'bdver1'
            CPUs based on AMD Family 15h cores with x86-64 instruction set
            support.  (This supersets FMA4, AVX, XOP, LWP, AES, PCLMUL,
            CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM
            and 64-bit instruction set extensions.)
  
!      'bdver2'
            AMD Family 15h core based CPUs with x86-64 instruction set
            support.  (This supersets BMI, TBM, F16C, FMA, FMA4, AVX, XOP,
            LWP, AES, PCLMUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3,
            SSE4.1, SSE4.2, ABM and 64-bit instruction set extensions.)
  
!      'bdver3'
            AMD Family 15h core based CPUs with x86-64 instruction set
            support.  (This supersets BMI, TBM, F16C, FMA, FMA4, FSGSBASE,
            AVX, XOP, LWP, AES, PCLMUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A,
            SSSE3, SSE4.1, SSE4.2, ABM and 64-bit instruction set
            extensions.)
  
!      'bdver4'
            AMD Family 15h core based CPUs with x86-64 instruction set
            support.  (This supersets BMI, BMI2, TBM, F16C, FMA, FMA4,
            FSGSBASE, AVX, AVX2, XOP, LWP, AES, PCLMUL, CX16, MOVBE, MMX,
            SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM and 64-bit
            instruction set extensions.)
  
!      'znver1'
            AMD Family 17h core based CPUs with x86-64 instruction set
            support.  (This supersets BMI, BMI2, F16C, FMA, FSGSBASE, AVX,
            AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES, PCLMUL, CX16,
--- 32140,32212 ----
            AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4,
            USER_MSR and PREFETCHI instruction set support.
  
!      â€˜k6â€™
            AMD K6 CPU with MMX instruction set support.
  
!      â€˜k6-2â€™
!      â€˜k6-3â€™
            Improved versions of AMD K6 CPU with MMX and 3DNow!
            instruction set support.
  
!      â€˜athlonâ€™
!      â€˜athlon-tbirdâ€™
            AMD Athlon CPU with MMX, 3dNOW!, enhanced 3DNow! and SSE
            prefetch instructions support.
  
!      â€˜athlon-4â€™
!      â€˜athlon-xpâ€™
!      â€˜athlon-mpâ€™
            Improved AMD Athlon CPU with MMX, 3DNow!, enhanced 3DNow! and
            full SSE instruction set support.
  
!      â€˜k8â€™
!      â€˜opteronâ€™
!      â€˜athlon64â€™
!      â€˜athlon-fxâ€™
            Processors based on the AMD K8 core with x86-64 instruction
            set support, including the AMD Opteron, Athlon 64, and Athlon
            64 FX processors.  (This supersets MMX, SSE, SSE2, 3DNow!,
            enhanced 3DNow! and 64-bit instruction set extensions.)
  
!      â€˜k8-sse3â€™
!      â€˜opteron-sse3â€™
!      â€˜athlon64-sse3â€™
            Improved versions of AMD K8 cores with SSE3 instruction set
            support.
  
!      â€˜amdfam10â€™
!      â€˜barcelonaâ€™
            CPUs based on AMD Family 10h cores with x86-64 instruction set
            support.  (This supersets MMX, SSE, SSE2, SSE3, SSE4A, 3DNow!,
            enhanced 3DNow!, ABM and 64-bit instruction set extensions.)
  
!      â€˜bdver1â€™
            CPUs based on AMD Family 15h cores with x86-64 instruction set
            support.  (This supersets FMA4, AVX, XOP, LWP, AES, PCLMUL,
            CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM
            and 64-bit instruction set extensions.)
  
!      â€˜bdver2â€™
            AMD Family 15h core based CPUs with x86-64 instruction set
            support.  (This supersets BMI, TBM, F16C, FMA, FMA4, AVX, XOP,
            LWP, AES, PCLMUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3,
            SSE4.1, SSE4.2, ABM and 64-bit instruction set extensions.)
  
!      â€˜bdver3â€™
            AMD Family 15h core based CPUs with x86-64 instruction set
            support.  (This supersets BMI, TBM, F16C, FMA, FMA4, FSGSBASE,
            AVX, XOP, LWP, AES, PCLMUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A,
            SSSE3, SSE4.1, SSE4.2, ABM and 64-bit instruction set
            extensions.)
  
!      â€˜bdver4â€™
            AMD Family 15h core based CPUs with x86-64 instruction set
            support.  (This supersets BMI, BMI2, TBM, F16C, FMA, FMA4,
            FSGSBASE, AVX, AVX2, XOP, LWP, AES, PCLMUL, CX16, MOVBE, MMX,
            SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM and 64-bit
            instruction set extensions.)
  
!      â€˜znver1â€™
            AMD Family 17h core based CPUs with x86-64 instruction set
            support.  (This supersets BMI, BMI2, F16C, FMA, FSGSBASE, AVX,
            AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES, PCLMUL, CX16,
*************** These '-m' options are defined for the x
*** 32206,32212 ****
            ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, and 64-bit
            instruction set extensions.)
  
!      'znver2'
            AMD Family 17h core based CPUs with x86-64 instruction set
            support.  (This supersets BMI, BMI2, CLWB, F16C, FMA,
            FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES,
--- 32214,32220 ----
            ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, and 64-bit
            instruction set extensions.)
  
!      â€˜znver2â€™
            AMD Family 17h core based CPUs with x86-64 instruction set
            support.  (This supersets BMI, BMI2, CLWB, F16C, FMA,
            FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES,
*************** These '-m' options are defined for the x
*** 32214,32220 ****
            SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT,
            RDPID, WBNOINVD, and 64-bit instruction set extensions.)
  
!      'znver3'
            AMD Family 19h core based CPUs with x86-64 instruction set
            support.  (This supersets BMI, BMI2, CLWB, F16C, FMA,
            FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES,
--- 32222,32228 ----
            SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT,
            RDPID, WBNOINVD, and 64-bit instruction set extensions.)
  
!      â€˜znver3â€™
            AMD Family 19h core based CPUs with x86-64 instruction set
            support.  (This supersets BMI, BMI2, CLWB, F16C, FMA,
            FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES,
*************** These '-m' options are defined for the x
*** 32223,32229 ****
            RDPID, WBNOINVD, PKU, VPCLMULQDQ, VAES, and 64-bit instruction
            set extensions.)
  
!      'znver4'
            AMD Family 19h core based CPUs with x86-64 instruction set
            support.  (This supersets BMI, BMI2, CLWB, F16C, FMA,
            FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES,
--- 32231,32237 ----
            RDPID, WBNOINVD, PKU, VPCLMULQDQ, VAES, and 64-bit instruction
            set extensions.)
  
!      â€˜znver4â€™
            AMD Family 19h core based CPUs with x86-64 instruction set
            support.  (This supersets BMI, BMI2, CLWB, F16C, FMA,
            FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES,
*************** These '-m' options are defined for the x
*** 32234,32240 ****
            AVX512VBMI, AVX512VBMI2, AVX512VNNI, AVX512BITALG,
            AVX512VPOPCNTDQ, GFNI and 64-bit instruction set extensions.)
  
!      'znver5'
            AMD Family 1ah core based CPUs with x86-64 instruction set
            support.  (This supersets BMI, BMI2, CLWB, F16C, FMA,
            FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES,
--- 32242,32248 ----
            AVX512VBMI, AVX512VBMI2, AVX512VNNI, AVX512BITALG,
            AVX512VPOPCNTDQ, GFNI and 64-bit instruction set extensions.)
  
!      â€˜znver5â€™
            AMD Family 1ah core based CPUs with x86-64 instruction set
            support.  (This supersets BMI, BMI2, CLWB, F16C, FMA,
            FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES,
*************** These '-m' options are defined for the x
*** 32247,32377 ****
            AVX512VP2INTERSECT, PREFETCHI and 64-bit instruction set
            extensions.)
  
!      'btver1'
            CPUs based on AMD Family 14h cores with x86-64 instruction set
            support.  (This supersets MMX, SSE, SSE2, SSE3, SSSE3, SSE4A,
            CX16, ABM and 64-bit instruction set extensions.)
  
!      'btver2'
            CPUs based on AMD Family 16h cores with x86-64 instruction set
            support.  This includes MOVBE, F16C, BMI, AVX, PCLMUL, AES,
            SSE4.2, SSE4.1, CX16, ABM, SSE4A, SSSE3, SSE3, SSE2, SSE, MMX
            and 64-bit instruction set extensions.
  
!      'winchip-c6'
            IDT WinChip C6 CPU, dealt in same way as i486 with additional
            MMX instruction set support.
  
!      'winchip2'
            IDT WinChip 2 CPU, dealt in same way as i486 with additional
            MMX and 3DNow! instruction set support.
  
!      'c3'
            VIA C3 CPU with MMX and 3DNow! instruction set support.  (No
            scheduling is implemented for this chip.)
  
!      'c3-2'
            VIA C3-2 (Nehemiah/C5XL) CPU with MMX and SSE instruction set
            support.  (No scheduling is implemented for this chip.)
  
!      'c7'
            VIA C7 (Esther) CPU with MMX, SSE, SSE2 and SSE3 instruction
            set support.  (No scheduling is implemented for this chip.)
  
!      'samuel-2'
            VIA Eden Samuel 2 CPU with MMX and 3DNow! instruction set
            support.  (No scheduling is implemented for this chip.)
  
!      'nehemiah'
            VIA Eden Nehemiah CPU with MMX and SSE instruction set
            support.  (No scheduling is implemented for this chip.)
  
!      'esther'
            VIA Eden Esther CPU with MMX, SSE, SSE2 and SSE3 instruction
            set support.  (No scheduling is implemented for this chip.)
  
!      'eden-x2'
            VIA Eden X2 CPU with x86-64, MMX, SSE, SSE2 and SSE3
            instruction set support.  (No scheduling is implemented for
            this chip.)
  
!      'eden-x4'
            VIA Eden X4 CPU with x86-64, MMX, SSE, SSE2, SSE3, SSSE3,
            SSE4.1, SSE4.2, AVX and AVX2 instruction set support.  (No
            scheduling is implemented for this chip.)
  
!      'nano'
            Generic VIA Nano CPU with x86-64, MMX, SSE, SSE2, SSE3 and
            SSSE3 instruction set support.  (No scheduling is implemented
            for this chip.)
  
!      'nano-1000'
            VIA Nano 1xxx CPU with x86-64, MMX, SSE, SSE2, SSE3 and SSSE3
            instruction set support.  (No scheduling is implemented for
            this chip.)
  
!      'nano-2000'
            VIA Nano 2xxx CPU with x86-64, MMX, SSE, SSE2, SSE3 and SSSE3
            instruction set support.  (No scheduling is implemented for
            this chip.)
  
!      'nano-3000'
            VIA Nano 3xxx CPU with x86-64, MMX, SSE, SSE2, SSE3, SSSE3 and
            SSE4.1 instruction set support.  (No scheduling is implemented
            for this chip.)
  
!      'nano-x2'
            VIA Nano Dual Core CPU with x86-64, MMX, SSE, SSE2, SSE3,
            SSSE3 and SSE4.1 instruction set support.  (No scheduling is
            implemented for this chip.)
  
!      'nano-x4'
            VIA Nano Quad Core CPU with x86-64, MMX, SSE, SSE2, SSE3,
            SSSE3 and SSE4.1 instruction set support.  (No scheduling is
            implemented for this chip.)
  
!      'lujiazui'
            ZHAOXIN lujiazui CPU with x86-64, MOVBE, MMX, SSE, SSE2, SSE3,
            SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMUL, RDRND, XSAVE,
            XSAVEOPT, FSGSBASE, CX16, ABM, BMI, BMI2, FXSR, RDSEED
            instruction set support.  While the CPUs do support AVX and
!           F16C, these aren't enabled by '-march=lujiazui' for
            performance reasons.
  
!      'yongfeng'
            ZHAOXIN yongfeng CPU with x86-64, MOVBE, MMX, SSE, SSE2, SSE3,
            SSSE3, SSE4.1, SSE4.2, AVX, POPCNT, AES, PCLMUL, RDRND, XSAVE,
            XSAVEOPT, FSGSBASE, CX16, ABM, BMI, BMI2, F16C, FXSR, RDSEED,
            AVX2, FMA, SHA, LZCNT instruction set support.
  
!      'shijidadao'
            ZHAOXIN shijidadao CPU with x86-64, MOVBE, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, AVX, POPCNT, AES, PCLMUL, RDRND,
            XSAVE, XSAVEOPT, FSGSBASE, CX16, ABM, BMI, BMI2, F16C, FXSR,
            RDSEED, AVX2, FMA, SHA, LZCNT instruction set support.
  
!      'geode'
            AMD Geode embedded processor with MMX and 3DNow! instruction
            set support.
  
! '-mtune=CPU-TYPE'
       Tune to CPU-TYPE everything applicable about the generated code,
       except for the ABI and the set of available instructions.  While
       picking a specific CPU-TYPE schedules things appropriately for that
       particular chip, the compiler does not generate any code that
       cannot run on the default machine type unless you use a
!      '-march=CPU-TYPE' option.  For example, if GCC is configured for
!      i686-pc-linux-gnu then '-mtune=pentium4' generates code that is
       tuned for Pentium 4 but still runs on i686 machines.
  
!      The choices for CPU-TYPE are the same as for '-march'.  In
!      addition, '-mtune' supports 2 extra choices for CPU-TYPE:
  
!      'generic'
            Produce code optimized for the most common IA32/AMD64/EM64T
            processors.  If you know the CPU on which your code will run,
!           then you should use the corresponding '-mtune' or '-march'
!           option instead of '-mtune=generic'.  But, if you do not know
            exactly what CPU users of your application will have, then you
            should use this option.
  
--- 32255,32385 ----
            AVX512VP2INTERSECT, PREFETCHI and 64-bit instruction set
            extensions.)
  
!      â€˜btver1â€™
            CPUs based on AMD Family 14h cores with x86-64 instruction set
            support.  (This supersets MMX, SSE, SSE2, SSE3, SSSE3, SSE4A,
            CX16, ABM and 64-bit instruction set extensions.)
  
!      â€˜btver2â€™
            CPUs based on AMD Family 16h cores with x86-64 instruction set
            support.  This includes MOVBE, F16C, BMI, AVX, PCLMUL, AES,
            SSE4.2, SSE4.1, CX16, ABM, SSE4A, SSSE3, SSE3, SSE2, SSE, MMX
            and 64-bit instruction set extensions.
  
!      â€˜winchip-c6â€™
            IDT WinChip C6 CPU, dealt in same way as i486 with additional
            MMX instruction set support.
  
!      â€˜winchip2â€™
            IDT WinChip 2 CPU, dealt in same way as i486 with additional
            MMX and 3DNow! instruction set support.
  
!      â€˜c3â€™
            VIA C3 CPU with MMX and 3DNow! instruction set support.  (No
            scheduling is implemented for this chip.)
  
!      â€˜c3-2â€™
            VIA C3-2 (Nehemiah/C5XL) CPU with MMX and SSE instruction set
            support.  (No scheduling is implemented for this chip.)
  
!      â€˜c7â€™
            VIA C7 (Esther) CPU with MMX, SSE, SSE2 and SSE3 instruction
            set support.  (No scheduling is implemented for this chip.)
  
!      â€˜samuel-2â€™
            VIA Eden Samuel 2 CPU with MMX and 3DNow! instruction set
            support.  (No scheduling is implemented for this chip.)
  
!      â€˜nehemiahâ€™
            VIA Eden Nehemiah CPU with MMX and SSE instruction set
            support.  (No scheduling is implemented for this chip.)
  
!      â€˜estherâ€™
            VIA Eden Esther CPU with MMX, SSE, SSE2 and SSE3 instruction
            set support.  (No scheduling is implemented for this chip.)
  
!      â€˜eden-x2â€™
            VIA Eden X2 CPU with x86-64, MMX, SSE, SSE2 and SSE3
            instruction set support.  (No scheduling is implemented for
            this chip.)
  
!      â€˜eden-x4â€™
            VIA Eden X4 CPU with x86-64, MMX, SSE, SSE2, SSE3, SSSE3,
            SSE4.1, SSE4.2, AVX and AVX2 instruction set support.  (No
            scheduling is implemented for this chip.)
  
!      â€˜nanoâ€™
            Generic VIA Nano CPU with x86-64, MMX, SSE, SSE2, SSE3 and
            SSSE3 instruction set support.  (No scheduling is implemented
            for this chip.)
  
!      â€˜nano-1000â€™
            VIA Nano 1xxx CPU with x86-64, MMX, SSE, SSE2, SSE3 and SSSE3
            instruction set support.  (No scheduling is implemented for
            this chip.)
  
!      â€˜nano-2000â€™
            VIA Nano 2xxx CPU with x86-64, MMX, SSE, SSE2, SSE3 and SSSE3
            instruction set support.  (No scheduling is implemented for
            this chip.)
  
!      â€˜nano-3000â€™
            VIA Nano 3xxx CPU with x86-64, MMX, SSE, SSE2, SSE3, SSSE3 and
            SSE4.1 instruction set support.  (No scheduling is implemented
            for this chip.)
  
!      â€˜nano-x2â€™
            VIA Nano Dual Core CPU with x86-64, MMX, SSE, SSE2, SSE3,
            SSSE3 and SSE4.1 instruction set support.  (No scheduling is
            implemented for this chip.)
  
!      â€˜nano-x4â€™
            VIA Nano Quad Core CPU with x86-64, MMX, SSE, SSE2, SSE3,
            SSSE3 and SSE4.1 instruction set support.  (No scheduling is
            implemented for this chip.)
  
!      â€˜lujiazuiâ€™
            ZHAOXIN lujiazui CPU with x86-64, MOVBE, MMX, SSE, SSE2, SSE3,
            SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMUL, RDRND, XSAVE,
            XSAVEOPT, FSGSBASE, CX16, ABM, BMI, BMI2, FXSR, RDSEED
            instruction set support.  While the CPUs do support AVX and
!           F16C, these aren't enabled by â€˜-march=lujiazuiâ€™ for
            performance reasons.
  
!      â€˜yongfengâ€™
            ZHAOXIN yongfeng CPU with x86-64, MOVBE, MMX, SSE, SSE2, SSE3,
            SSSE3, SSE4.1, SSE4.2, AVX, POPCNT, AES, PCLMUL, RDRND, XSAVE,
            XSAVEOPT, FSGSBASE, CX16, ABM, BMI, BMI2, F16C, FXSR, RDSEED,
            AVX2, FMA, SHA, LZCNT instruction set support.
  
!      â€˜shijidadaoâ€™
            ZHAOXIN shijidadao CPU with x86-64, MOVBE, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, AVX, POPCNT, AES, PCLMUL, RDRND,
            XSAVE, XSAVEOPT, FSGSBASE, CX16, ABM, BMI, BMI2, F16C, FXSR,
            RDSEED, AVX2, FMA, SHA, LZCNT instruction set support.
  
!      â€˜geodeâ€™
            AMD Geode embedded processor with MMX and 3DNow! instruction
            set support.
  
! â€˜-mtune=CPU-TYPEâ€™
       Tune to CPU-TYPE everything applicable about the generated code,
       except for the ABI and the set of available instructions.  While
       picking a specific CPU-TYPE schedules things appropriately for that
       particular chip, the compiler does not generate any code that
       cannot run on the default machine type unless you use a
!      â€˜-march=CPU-TYPEâ€™ option.  For example, if GCC is configured for
!      i686-pc-linux-gnu then â€˜-mtune=pentium4â€™ generates code that is
       tuned for Pentium 4 but still runs on i686 machines.
  
!      The choices for CPU-TYPE are the same as for â€˜-marchâ€™.  In
!      addition, â€˜-mtuneâ€™ supports 2 extra choices for CPU-TYPE:
  
!      â€˜genericâ€™
            Produce code optimized for the most common IA32/AMD64/EM64T
            processors.  If you know the CPU on which your code will run,
!           then you should use the corresponding â€˜-mtuneâ€™ or â€˜-marchâ€™
!           option instead of â€˜-mtune=genericâ€™.  But, if you do not know
            exactly what CPU users of your application will have, then you
            should use this option.
  
*************** These '-m' options are defined for the x
*** 32381,32398 ****
            by this option will change to reflect the processors that are
            most common at the time that version of GCC is released.
  
!           There is no '-march=generic' option because '-march' indicates
            the instruction set the compiler can use, and there is no
            generic instruction set applicable to all processors.  In
!           contrast, '-mtune' indicates the processor (or, in this case,
            collection of processors) for which the code is optimized.
  
!      'intel'
            Produce code optimized for the most current Intel processors,
            which are Haswell and Silvermont for this version of GCC. If
            you know the CPU on which your code will run, then you should
!           use the corresponding '-mtune' or '-march' option instead of
!           '-mtune=intel'.  But, if you want your application performs
            better on both Haswell and Silvermont, then you should use
            this option.
  
--- 32389,32406 ----
            by this option will change to reflect the processors that are
            most common at the time that version of GCC is released.
  
!           There is no â€˜-march=genericâ€™ option because â€˜-marchâ€™ indicates
            the instruction set the compiler can use, and there is no
            generic instruction set applicable to all processors.  In
!           contrast, â€˜-mtuneâ€™ indicates the processor (or, in this case,
            collection of processors) for which the code is optimized.
  
!      â€˜intelâ€™
            Produce code optimized for the most current Intel processors,
            which are Haswell and Silvermont for this version of GCC. If
            you know the CPU on which your code will run, then you should
!           use the corresponding â€˜-mtuneâ€™ or â€˜-marchâ€™ option instead of
!           â€˜-mtune=intelâ€™.  But, if you want your application performs
            better on both Haswell and Silvermont, then you should use
            this option.
  
*************** These '-m' options are defined for the x
*** 32402,32432 ****
            by this option will change to reflect the most current Intel
            processors at the time that version of GCC is released.
  
!           There is no '-march=intel' option because '-march' indicates
            the instruction set the compiler can use, and there is no
            common instruction set applicable to all processors.  In
!           contrast, '-mtune' indicates the processor (or, in this case,
            collection of processors) for which the code is optimized.
  
! '-mcpu=CPU-TYPE'
!      A deprecated synonym for '-mtune'.
  
! '-mfpmath=UNIT'
       Generate floating-point arithmetic for selected unit UNIT.  The
       choices for UNIT are:
  
!      '387'
            Use the standard 387 floating-point coprocessor present on the
            majority of chips and emulated otherwise.  Code compiled with
            this option runs almost everywhere.  The temporary results are
            computed in 80-bit precision instead of the precision
            specified by the type, resulting in slightly different results
!           compared to most of other chips.  See '-ffloat-store' for more
            detailed description.
  
            This is the default choice for non-Darwin x86-32 targets.
  
!      'sse'
            Use scalar floating-point instructions present in the SSE
            instruction set.  This instruction set is supported by Pentium
            III and newer chips, and in the AMD line by Athlon-4, Athlon
--- 32410,32440 ----
            by this option will change to reflect the most current Intel
            processors at the time that version of GCC is released.
  
!           There is no â€˜-march=intelâ€™ option because â€˜-marchâ€™ indicates
            the instruction set the compiler can use, and there is no
            common instruction set applicable to all processors.  In
!           contrast, â€˜-mtuneâ€™ indicates the processor (or, in this case,
            collection of processors) for which the code is optimized.
  
! â€˜-mcpu=CPU-TYPEâ€™
!      A deprecated synonym for â€˜-mtuneâ€™.
  
! â€˜-mfpmath=UNITâ€™
       Generate floating-point arithmetic for selected unit UNIT.  The
       choices for UNIT are:
  
!      â€˜387â€™
            Use the standard 387 floating-point coprocessor present on the
            majority of chips and emulated otherwise.  Code compiled with
            this option runs almost everywhere.  The temporary results are
            computed in 80-bit precision instead of the precision
            specified by the type, resulting in slightly different results
!           compared to most of other chips.  See â€˜-ffloat-storeâ€™ for more
            detailed description.
  
            This is the default choice for non-Darwin x86-32 targets.
  
!      â€˜sseâ€™
            Use scalar floating-point instructions present in the SSE
            instruction set.  This instruction set is supported by Pentium
            III and newer chips, and in the AMD line by Athlon-4, Athlon
*************** These '-m' options are defined for the x
*** 32437,32444 ****
            and AMD x86-64 chips, supports double-precision arithmetic
            too.
  
!           For the x86-32 compiler, you must use '-march=CPU-TYPE',
!           '-msse' or '-msse2' switches to enable SSE extensions and make
            this option effective.  For the x86-64 compiler, these
            extensions are enabled by default.
  
--- 32445,32452 ----
            and AMD x86-64 chips, supports double-precision arithmetic
            too.
  
!           For the x86-32 compiler, you must use â€˜-march=CPU-TYPEâ€™,
!           â€˜-msseâ€™ or â€˜-msse2â€™ switches to enable SSE extensions and make
            this option effective.  For the x86-64 compiler, these
            extensions are enabled by default.
  
*************** These '-m' options are defined for the x
*** 32449,32459 ****
  
            This is the default choice for the x86-64 compiler, Darwin
            x86-32 targets, and the default choice for x86-32 targets with
!           the SSE2 instruction set when '-ffast-math' is enabled.
  
!      'sse,387'
!      'sse+387'
!      'both'
            Attempt to utilize both instruction sets at once.  This
            effectively doubles the amount of available registers, and on
            chips with separate execution units for 387 and SSE the
--- 32457,32467 ----
  
            This is the default choice for the x86-64 compiler, Darwin
            x86-32 targets, and the default choice for x86-32 targets with
!           the SSE2 instruction set when â€˜-ffast-mathâ€™ is enabled.
  
!      â€˜sse,387â€™
!      â€˜sse+387â€™
!      â€˜bothâ€™
            Attempt to utilize both instruction sets at once.  This
            effectively doubles the amount of available registers, and on
            chips with separate execution units for 387 and SSE the
*************** These '-m' options are defined for the x
*** 32462,32486 ****
            not model separate functional units well, resulting in
            unstable performance.
  
! '-masm=DIALECT'
       Output assembly instructions using selected DIALECT.  Also affects
!      which dialect is used for basic 'asm' (*note Basic Asm::) and
!      extended 'asm' (*note Extended Asm::).  Supported choices (in
!      dialect order) are 'att' or 'intel'.  The default is 'att'.  Darwin
!      does not support 'intel'.
  
! '-mieee-fp'
! '-mno-ieee-fp'
       Control whether or not the compiler uses IEEE floating-point
       comparisons.  These correctly handle the case where the result of a
       comparison is unordered.
  
! '-m80387'
! '-mhard-float'
       Generate output containing 80387 instructions for floating point.
  
! '-mno-80387'
! '-msoft-float'
       Generate output containing library calls for floating point.
  
       *Warning:* the requisite libraries are not part of GCC.  Normally
--- 32470,32494 ----
            not model separate functional units well, resulting in
            unstable performance.
  
! â€˜-masm=DIALECTâ€™
       Output assembly instructions using selected DIALECT.  Also affects
!      which dialect is used for basic â€˜asmâ€™ (*note Basic Asm::) and
!      extended â€˜asmâ€™ (*note Extended Asm::).  Supported choices (in
!      dialect order) are â€˜attâ€™ or â€˜intelâ€™.  The default is â€˜attâ€™.  Darwin
!      does not support â€˜intelâ€™.
  
! â€˜-mieee-fpâ€™
! â€˜-mno-ieee-fpâ€™
       Control whether or not the compiler uses IEEE floating-point
       comparisons.  These correctly handle the case where the result of a
       comparison is unordered.
  
! â€˜-m80387â€™
! â€˜-mhard-floatâ€™
       Generate output containing 80387 instructions for floating point.
  
! â€˜-mno-80387â€™
! â€˜-msoft-floatâ€™
       Generate output containing library calls for floating point.
  
       *Warning:* the requisite libraries are not part of GCC.  Normally
*************** These '-m' options are defined for the x
*** 32491,32647 ****
  
       On machines where a function returns floating-point results in the
       80387 register stack, some floating-point opcodes may be emitted
!      even if '-msoft-float' is used.
  
! '-mno-fp-ret-in-387'
       Do not use the FPU registers for return values of functions.
  
       The usual calling convention has functions return values of types
!      'float' and 'double' in an FPU register, even if there is no FPU.
       The idea is that the operating system should emulate an FPU.
  
!      The option '-mno-fp-ret-in-387' causes such values to be returned
       in ordinary CPU registers instead.
  
! '-mno-fancy-math-387'
!      Some 387 emulators do not support the 'sin', 'cos' and 'sqrt'
       instructions for the 387.  Specify this option to avoid generating
!      those instructions.  This option is overridden when '-march'
       indicates that the target CPU always has an FPU and so the
       instruction does not need emulation.  These instructions are not
!      generated unless you also use the '-funsafe-math-optimizations'
       switch.
  
! '-malign-double'
! '-mno-align-double'
!      Control whether GCC aligns 'double', 'long double', and 'long long'
       variables on a two-word boundary or a one-word boundary.  Aligning
!      'double' variables on a two-word boundary produces code that runs
       somewhat faster on a Pentium at the expense of more memory.
  
!      On x86-64, '-malign-double' is enabled by default.
  
!      *Warning:* if you use the '-malign-double' switch, structures
       containing the above types are aligned differently than the
       published application binary interface specifications for the
       x86-32 and are not binary compatible with structures in code
       compiled without that switch.
  
! '-m96bit-long-double'
! '-m128bit-long-double'
!      These switches control the size of 'long double' type.  The x86-32
       application binary interface specifies the size to be 96 bits, so
!      '-m96bit-long-double' is the default in 32-bit mode.
  
!      Modern architectures (Pentium and newer) prefer 'long double' to be
       aligned to an 8- or 16-byte boundary.  In arrays or structures
       conforming to the ABI, this is not possible.  So specifying
!      '-m128bit-long-double' aligns 'long double' to a 16-byte boundary
!      by padding the 'long double' with an additional 32-bit zero.
  
!      In the x86-64 compiler, '-m128bit-long-double' is the default
!      choice as its ABI specifies that 'long double' is aligned on
       16-byte boundary.
  
       Notice that neither of these options enable any extra precision
!      over the x87 standard of 80 bits for a 'long double'.
  
       *Warning:* if you override the default value for your target ABI,
!      this changes the size of structures and arrays containing 'long
!      double' variables, as well as modifying the function calling
!      convention for functions taking 'long double'.  Hence they are not
       binary-compatible with code compiled without that switch.
  
! '-mlong-double-64'
! '-mlong-double-80'
! '-mlong-double-128'
!      These switches control the size of 'long double' type.  A size of
!      64 bits makes the 'long double' type equivalent to the 'double'
       type.  This is the default for 32-bit Bionic C library.  A size of
!      128 bits makes the 'long double' type equivalent to the
!      '__float128' type.  This is the default for 64-bit Bionic C
       library.
  
       *Warning:* if you override the default value for your target ABI,
!      this changes the size of structures and arrays containing 'long
!      double' variables, as well as modifying the function calling
!      convention for functions taking 'long double'.  Hence they are not
       binary-compatible with code compiled without that switch.
  
! '-malign-data=TYPE'
       Control how GCC aligns variables.  Supported values for TYPE are
!      'compat' uses increased alignment value compatible uses GCC 4.8 and
!      earlier, 'abi' uses alignment value as specified by the psABI, and
!      'cacheline' uses increased alignment value to match the cache line
!      size.  'compat' is the default.
  
! '-mlarge-data-threshold=THRESHOLD'
!      When '-mcmodel=medium' or '-mcmodel=large' is specified, data
       objects larger than THRESHOLD are placed in large data sections.
       The default is 65535.
  
! '-mrtd'
       Use a different function-calling convention, in which functions
!      that take a fixed number of arguments return with the 'ret NUM'
       instruction, which pops their arguments while returning.  This
       saves one instruction in the caller since there is no need to pop
       the arguments there.
  
       You can specify that an individual function is called with this
!      calling sequence with the function attribute 'stdcall'.  You can
!      also override the '-mrtd' option by using the function attribute
!      'cdecl'.  *Note Function Attributes::.
  
       *Warning:* this calling convention is incompatible with the one
       normally used on Unix, so you cannot use it if you need to call
       libraries compiled with the Unix compiler.
  
       Also, you must provide function prototypes for all functions that
!      take variable numbers of arguments (including 'printf'); otherwise
       incorrect code is generated for calls to those functions.
  
       In addition, seriously incorrect code results if you call a
       function with too many arguments.  (Normally, extra arguments are
       harmlessly ignored.)
  
! '-mregparm=NUM'
       Control how many registers are used to pass integer arguments.  By
       default, no registers are used to pass arguments, and at most 3
       registers can be used.  You can control this behavior for a
!      specific function by using the function attribute 'regparm'.  *Note
       Function Attributes::.
  
       *Warning:* if you use this switch, and NUM is nonzero, then you
       must build all modules with the same value, including any
       libraries.  This includes the system libraries and startup modules.
  
! '-msseregparm'
       Use SSE register passing conventions for float and double arguments
       and return values.  You can control this behavior for a specific
!      function by using the function attribute 'sseregparm'.  *Note
       Function Attributes::.
  
       *Warning:* if you use this switch then you must build all modules
       with the same value, including any libraries.  This includes the
       system libraries and startup modules.
  
! '-mvect8-ret-in-mem'
       Return 8-byte vectors in memory instead of MMX registers.  This is
       the default on VxWorks to match the ABI of the Sun Studio compilers
       until version 12.  _Only_ use this option if you need to remain
       compatible with existing code produced by those previous compiler
       versions or older versions of GCC.
  
! '-mpc32'
! '-mpc64'
! '-mpc80'
  
       Set 80387 floating-point precision to 32, 64 or 80 bits.  When
!      '-mpc32' is specified, the significands of results of
       floating-point operations are rounded to 24 bits (single
!      precision); '-mpc64' rounds the significands of results of
       floating-point operations to 53 bits (double precision) and
!      '-mpc80' rounds the significands of results of floating-point
       operations to 64 bits (extended double precision), which is the
       default.  When this option is used, floating-point operations in
       higher precisions are not available to the programmer without
--- 32499,32655 ----
  
       On machines where a function returns floating-point results in the
       80387 register stack, some floating-point opcodes may be emitted
!      even if â€˜-msoft-floatâ€™ is used.
  
! â€˜-mno-fp-ret-in-387â€™
       Do not use the FPU registers for return values of functions.
  
       The usual calling convention has functions return values of types
!      â€˜floatâ€™ and â€˜doubleâ€™ in an FPU register, even if there is no FPU.
       The idea is that the operating system should emulate an FPU.
  
!      The option â€˜-mno-fp-ret-in-387â€™ causes such values to be returned
       in ordinary CPU registers instead.
  
! â€˜-mno-fancy-math-387â€™
!      Some 387 emulators do not support the â€˜sinâ€™, â€˜cosâ€™ and â€˜sqrtâ€™
       instructions for the 387.  Specify this option to avoid generating
!      those instructions.  This option is overridden when â€˜-marchâ€™
       indicates that the target CPU always has an FPU and so the
       instruction does not need emulation.  These instructions are not
!      generated unless you also use the â€˜-funsafe-math-optimizationsâ€™
       switch.
  
! â€˜-malign-doubleâ€™
! â€˜-mno-align-doubleâ€™
!      Control whether GCC aligns â€˜doubleâ€™, â€˜long doubleâ€™, and â€˜long longâ€™
       variables on a two-word boundary or a one-word boundary.  Aligning
!      â€˜doubleâ€™ variables on a two-word boundary produces code that runs
       somewhat faster on a Pentium at the expense of more memory.
  
!      On x86-64, â€˜-malign-doubleâ€™ is enabled by default.
  
!      *Warning:* if you use the â€˜-malign-doubleâ€™ switch, structures
       containing the above types are aligned differently than the
       published application binary interface specifications for the
       x86-32 and are not binary compatible with structures in code
       compiled without that switch.
  
! â€˜-m96bit-long-doubleâ€™
! â€˜-m128bit-long-doubleâ€™
!      These switches control the size of â€˜long doubleâ€™ type.  The x86-32
       application binary interface specifies the size to be 96 bits, so
!      â€˜-m96bit-long-doubleâ€™ is the default in 32-bit mode.
  
!      Modern architectures (Pentium and newer) prefer â€˜long doubleâ€™ to be
       aligned to an 8- or 16-byte boundary.  In arrays or structures
       conforming to the ABI, this is not possible.  So specifying
!      â€˜-m128bit-long-doubleâ€™ aligns â€˜long doubleâ€™ to a 16-byte boundary
!      by padding the â€˜long doubleâ€™ with an additional 32-bit zero.
  
!      In the x86-64 compiler, â€˜-m128bit-long-doubleâ€™ is the default
!      choice as its ABI specifies that â€˜long doubleâ€™ is aligned on
       16-byte boundary.
  
       Notice that neither of these options enable any extra precision
!      over the x87 standard of 80 bits for a â€˜long doubleâ€™.
  
       *Warning:* if you override the default value for your target ABI,
!      this changes the size of structures and arrays containing â€˜long
!      doubleâ€™ variables, as well as modifying the function calling
!      convention for functions taking â€˜long doubleâ€™.  Hence they are not
       binary-compatible with code compiled without that switch.
  
! â€˜-mlong-double-64â€™
! â€˜-mlong-double-80â€™
! â€˜-mlong-double-128â€™
!      These switches control the size of â€˜long doubleâ€™ type.  A size of
!      64 bits makes the â€˜long doubleâ€™ type equivalent to the â€˜doubleâ€™
       type.  This is the default for 32-bit Bionic C library.  A size of
!      128 bits makes the â€˜long doubleâ€™ type equivalent to the
!      â€˜__float128â€™ type.  This is the default for 64-bit Bionic C
       library.
  
       *Warning:* if you override the default value for your target ABI,
!      this changes the size of structures and arrays containing â€˜long
!      doubleâ€™ variables, as well as modifying the function calling
!      convention for functions taking â€˜long doubleâ€™.  Hence they are not
       binary-compatible with code compiled without that switch.
  
! â€˜-malign-data=TYPEâ€™
       Control how GCC aligns variables.  Supported values for TYPE are
!      â€˜compatâ€™ uses increased alignment value compatible uses GCC 4.8 and
!      earlier, â€˜abiâ€™ uses alignment value as specified by the psABI, and
!      â€˜cachelineâ€™ uses increased alignment value to match the cache line
!      size.  â€˜compatâ€™ is the default.
  
! â€˜-mlarge-data-threshold=THRESHOLDâ€™
!      When â€˜-mcmodel=mediumâ€™ or â€˜-mcmodel=largeâ€™ is specified, data
       objects larger than THRESHOLD are placed in large data sections.
       The default is 65535.
  
! â€˜-mrtdâ€™
       Use a different function-calling convention, in which functions
!      that take a fixed number of arguments return with the â€˜ret NUMâ€™
       instruction, which pops their arguments while returning.  This
       saves one instruction in the caller since there is no need to pop
       the arguments there.
  
       You can specify that an individual function is called with this
!      calling sequence with the function attribute â€˜stdcallâ€™.  You can
!      also override the â€˜-mrtdâ€™ option by using the function attribute
!      â€˜cdeclâ€™.  *Note Function Attributes::.
  
       *Warning:* this calling convention is incompatible with the one
       normally used on Unix, so you cannot use it if you need to call
       libraries compiled with the Unix compiler.
  
       Also, you must provide function prototypes for all functions that
!      take variable numbers of arguments (including â€˜printfâ€™); otherwise
       incorrect code is generated for calls to those functions.
  
       In addition, seriously incorrect code results if you call a
       function with too many arguments.  (Normally, extra arguments are
       harmlessly ignored.)
  
! â€˜-mregparm=NUMâ€™
       Control how many registers are used to pass integer arguments.  By
       default, no registers are used to pass arguments, and at most 3
       registers can be used.  You can control this behavior for a
!      specific function by using the function attribute â€˜regparmâ€™.  *Note
       Function Attributes::.
  
       *Warning:* if you use this switch, and NUM is nonzero, then you
       must build all modules with the same value, including any
       libraries.  This includes the system libraries and startup modules.
  
! â€˜-msseregparmâ€™
       Use SSE register passing conventions for float and double arguments
       and return values.  You can control this behavior for a specific
!      function by using the function attribute â€˜sseregparmâ€™.  *Note
       Function Attributes::.
  
       *Warning:* if you use this switch then you must build all modules
       with the same value, including any libraries.  This includes the
       system libraries and startup modules.
  
! â€˜-mvect8-ret-in-memâ€™
       Return 8-byte vectors in memory instead of MMX registers.  This is
       the default on VxWorks to match the ABI of the Sun Studio compilers
       until version 12.  _Only_ use this option if you need to remain
       compatible with existing code produced by those previous compiler
       versions or older versions of GCC.
  
! â€˜-mpc32â€™
! â€˜-mpc64â€™
! â€˜-mpc80â€™
  
       Set 80387 floating-point precision to 32, 64 or 80 bits.  When
!      â€˜-mpc32â€™ is specified, the significands of results of
       floating-point operations are rounded to 24 bits (single
!      precision); â€˜-mpc64â€™ rounds the significands of results of
       floating-point operations to 53 bits (double precision) and
!      â€˜-mpc80â€™ rounds the significands of results of floating-point
       operations to 64 bits (extended double precision), which is the
       default.  When this option is used, floating-point operations in
       higher precisions are not available to the programmer without
*************** These '-m' options are defined for the x
*** 32655,32686 ****
       through so-called "catastrophic cancellation", when this option is
       used to set the precision to less than extended precision.
  
! '-mdaz-ftz'
  
       The flush-to-zero (FTZ) and denormals-are-zero (DAZ) flags in the
       MXCSR register are used to control floating-point calculations.SSE
       and AVX instructions including scalar and vector instructions could
!      benefit from enabling the FTZ and DAZ flags when '-mdaz-ftz' is
!      specified.  Don't set FTZ/DAZ flags when '-mno-daz-ftz' or
!      '-shared' is specified, '-mdaz-ftz' will set FTZ/DAZ flags even
!      with '-shared'.
  
! '-mstackrealign'
!      Realign the stack at entry.  On the x86, the '-mstackrealign'
       option generates an alternate prologue and epilogue that realigns
       the run-time stack if necessary.  This supports mixing legacy codes
       that keep 4-byte stack alignment with modern codes that keep
       16-byte stack alignment for SSE compatibility.  See also the
!      attribute 'force_align_arg_pointer', applicable to individual
       functions.
  
! '-mpreferred-stack-boundary=NUM'
       Attempt to keep the stack boundary aligned to a 2 raised to NUM
!      byte boundary.  If '-mpreferred-stack-boundary' is not specified,
       the default is 4 (16 bytes or 128 bits).
  
       *Warning:* When generating code for the x86-64 architecture with
!      SSE extensions disabled, '-mpreferred-stack-boundary=3' can be used
       to keep the stack boundary aligned to 8 byte boundary.  Since
       x86-64 ABI require 16 byte stack alignment, this is ABI
       incompatible and intended to be used in controlled environment
--- 32663,32694 ----
       through so-called "catastrophic cancellation", when this option is
       used to set the precision to less than extended precision.
  
! â€˜-mdaz-ftzâ€™
  
       The flush-to-zero (FTZ) and denormals-are-zero (DAZ) flags in the
       MXCSR register are used to control floating-point calculations.SSE
       and AVX instructions including scalar and vector instructions could
!      benefit from enabling the FTZ and DAZ flags when â€˜-mdaz-ftzâ€™ is
!      specified.  Don't set FTZ/DAZ flags when â€˜-mno-daz-ftzâ€™ or
!      â€˜-sharedâ€™ is specified, â€˜-mdaz-ftzâ€™ will set FTZ/DAZ flags even
!      with â€˜-sharedâ€™.
  
! â€˜-mstackrealignâ€™
!      Realign the stack at entry.  On the x86, the â€˜-mstackrealignâ€™
       option generates an alternate prologue and epilogue that realigns
       the run-time stack if necessary.  This supports mixing legacy codes
       that keep 4-byte stack alignment with modern codes that keep
       16-byte stack alignment for SSE compatibility.  See also the
!      attribute â€˜force_align_arg_pointerâ€™, applicable to individual
       functions.
  
! â€˜-mpreferred-stack-boundary=NUMâ€™
       Attempt to keep the stack boundary aligned to a 2 raised to NUM
!      byte boundary.  If â€˜-mpreferred-stack-boundaryâ€™ is not specified,
       the default is 4 (16 bytes or 128 bits).
  
       *Warning:* When generating code for the x86-64 architecture with
!      SSE extensions disabled, â€˜-mpreferred-stack-boundary=3â€™ can be used
       to keep the stack boundary aligned to 8 byte boundary.  Since
       x86-64 ABI require 16 byte stack alignment, this is ABI
       incompatible and intended to be used in controlled environment
*************** These '-m' options are defined for the x
*** 32691,32709 ****
       misaligned memory access traps.  In addition, variable arguments
       are handled incorrectly for 16 byte aligned objects (including x87
       long double and __int128), leading to wrong results.  You must
!      build all modules with '-mpreferred-stack-boundary=3', including
       any libraries.  This includes the system libraries and startup
       modules.
  
! '-mincoming-stack-boundary=NUM'
       Assume the incoming stack is aligned to a 2 raised to NUM byte
!      boundary.  If '-mincoming-stack-boundary' is not specified, the one
!      specified by '-mpreferred-stack-boundary' is used.
  
!      On Pentium and Pentium Pro, 'double' and 'long double' values
!      should be aligned to an 8-byte boundary (see '-malign-double') or
       suffer significant run time performance penalties.  On Pentium III,
!      the Streaming SIMD Extension (SSE) data type '__m128' may not work
       properly if it is not 16-byte aligned.
  
       To ensure proper alignment of this values on the stack, the stack
--- 32699,32717 ----
       misaligned memory access traps.  In addition, variable arguments
       are handled incorrectly for 16 byte aligned objects (including x87
       long double and __int128), leading to wrong results.  You must
!      build all modules with â€˜-mpreferred-stack-boundary=3â€™, including
       any libraries.  This includes the system libraries and startup
       modules.
  
! â€˜-mincoming-stack-boundary=NUMâ€™
       Assume the incoming stack is aligned to a 2 raised to NUM byte
!      boundary.  If â€˜-mincoming-stack-boundaryâ€™ is not specified, the one
!      specified by â€˜-mpreferred-stack-boundaryâ€™ is used.
  
!      On Pentium and Pentium Pro, â€˜doubleâ€™ and â€˜long doubleâ€™ values
!      should be aligned to an 8-byte boundary (see â€˜-malign-doubleâ€™) or
       suffer significant run time performance penalties.  On Pentium III,
!      the Streaming SIMD Extension (SSE) data type â€˜__m128â€™ may not work
       properly if it is not 16-byte aligned.
  
       To ensure proper alignment of this values on the stack, the stack
*************** These '-m' options are defined for the x
*** 32718,32830 ****
       This extra alignment does consume extra stack space, and generally
       increases code size.  Code that is sensitive to stack space usage,
       such as embedded systems and operating system kernels, may want to
!      reduce the preferred alignment to '-mpreferred-stack-boundary=2'.
  
! '-mmmx'
! '-msse'
! '-msse2'
! '-msse3'
! '-mssse3'
! '-msse4'
! '-msse4a'
! '-msse4.1'
! '-msse4.2'
! '-mavx'
! '-mavx2'
! '-mavx512f'
! '-mavx512cd'
! '-mavx512vl'
! '-mavx512bw'
! '-mavx512dq'
! '-mavx512ifma'
! '-mavx512vbmi'
! '-msha'
! '-maes'
! '-mpclmul'
! '-mclflushopt'
! '-mclwb'
! '-mfsgsbase'
! '-mptwrite'
! '-mrdrnd'
! '-mf16c'
! '-mfma'
! '-mpconfig'
! '-mwbnoinvd'
! '-mfma4'
! '-mprfchw'
! '-mrdpid'
! '-mrdseed'
! '-msgx'
! '-mxop'
! '-mlwp'
! '-m3dnow'
! '-m3dnowa'
! '-mpopcnt'
! '-mabm'
! '-madx'
! '-mbmi'
! '-mbmi2'
! '-mlzcnt'
! '-mfxsr'
! '-mxsave'
! '-mxsaveopt'
! '-mxsavec'
! '-mxsaves'
! '-mrtm'
! '-mhle'
! '-mtbm'
! '-mmwaitx'
! '-mclzero'
! '-mpku'
! '-mavx512vbmi2'
! '-mavx512bf16'
! '-mavx512fp16'
! '-mgfni'
! '-mvaes'
! '-mwaitpkg'
! '-mvpclmulqdq'
! '-mavx512bitalg'
! '-mmovdiri'
! '-mmovdir64b'
! '-menqcmd'
! '-muintr'
! '-mtsxldtrk'
! '-mavx512vpopcntdq'
! '-mavx512vp2intersect'
! '-mavx512vnni'
! '-mavxvnni'
! '-mcldemote'
! '-mserialize'
! '-mamx-tile'
! '-mamx-int8'
! '-mamx-bf16'
! '-mhreset'
! '-mkl'
! '-mwidekl'
! '-mavxifma'
! '-mavxvnniint8'
! '-mavxneconvert'
! '-mcmpccxadd'
! '-mamx-fp16'
! '-mprefetchi'
! '-mraoint'
! '-mamx-complex'
! '-mavxvnniint16'
! '-msm3'
! '-msha512'
! '-msm4'
! '-mapxf'
! '-musermsr'
! '-mavx10.1'
! '-mavx10.1-256'
! '-mavx10.1-512'
! '-mavx10.2'
! '-mamx-avx512'
! '-mamx-tf32'
! '-mamx-transpose'
! '-mamx-fp8'
! '-mmovrs'
! '-mamx-movrs'
       These switches enable the use of instructions in the MMX, SSE,
       AVX512CD, AVX512VL, AVX512BW, AVX512DQ, AVX512IFMA, AVX512VBMI,
       SHA, AES, PCLMUL, CLFLUSHOPT, CLWB, FSGSBASE, PTWRITE, RDRND, F16C,
--- 32726,32838 ----
       This extra alignment does consume extra stack space, and generally
       increases code size.  Code that is sensitive to stack space usage,
       such as embedded systems and operating system kernels, may want to
!      reduce the preferred alignment to â€˜-mpreferred-stack-boundary=2â€™.
  
! â€˜-mmmxâ€™
! â€˜-msseâ€™
! â€˜-msse2â€™
! â€˜-msse3â€™
! â€˜-mssse3â€™
! â€˜-msse4â€™
! â€˜-msse4aâ€™
! â€˜-msse4.1â€™
! â€˜-msse4.2â€™
! â€˜-mavxâ€™
! â€˜-mavx2â€™
! â€˜-mavx512fâ€™
! â€˜-mavx512cdâ€™
! â€˜-mavx512vlâ€™
! â€˜-mavx512bwâ€™
! â€˜-mavx512dqâ€™
! â€˜-mavx512ifmaâ€™
! â€˜-mavx512vbmiâ€™
! â€˜-mshaâ€™
! â€˜-maesâ€™
! â€˜-mpclmulâ€™
! â€˜-mclflushoptâ€™
! â€˜-mclwbâ€™
! â€˜-mfsgsbaseâ€™
! â€˜-mptwriteâ€™
! â€˜-mrdrndâ€™
! â€˜-mf16câ€™
! â€˜-mfmaâ€™
! â€˜-mpconfigâ€™
! â€˜-mwbnoinvdâ€™
! â€˜-mfma4â€™
! â€˜-mprfchwâ€™
! â€˜-mrdpidâ€™
! â€˜-mrdseedâ€™
! â€˜-msgxâ€™
! â€˜-mxopâ€™
! â€˜-mlwpâ€™
! â€˜-m3dnowâ€™
! â€˜-m3dnowaâ€™
! â€˜-mpopcntâ€™
! â€˜-mabmâ€™
! â€˜-madxâ€™
! â€˜-mbmiâ€™
! â€˜-mbmi2â€™
! â€˜-mlzcntâ€™
! â€˜-mfxsrâ€™
! â€˜-mxsaveâ€™
! â€˜-mxsaveoptâ€™
! â€˜-mxsavecâ€™
! â€˜-mxsavesâ€™
! â€˜-mrtmâ€™
! â€˜-mhleâ€™
! â€˜-mtbmâ€™
! â€˜-mmwaitxâ€™
! â€˜-mclzeroâ€™
! â€˜-mpkuâ€™
! â€˜-mavx512vbmi2â€™
! â€˜-mavx512bf16â€™
! â€˜-mavx512fp16â€™
! â€˜-mgfniâ€™
! â€˜-mvaesâ€™
! â€˜-mwaitpkgâ€™
! â€˜-mvpclmulqdqâ€™
! â€˜-mavx512bitalgâ€™
! â€˜-mmovdiriâ€™
! â€˜-mmovdir64bâ€™
! â€˜-menqcmdâ€™
! â€˜-muintrâ€™
! â€˜-mtsxldtrkâ€™
! â€˜-mavx512vpopcntdqâ€™
! â€˜-mavx512vp2intersectâ€™
! â€˜-mavx512vnniâ€™
! â€˜-mavxvnniâ€™
! â€˜-mcldemoteâ€™
! â€˜-mserializeâ€™
! â€˜-mamx-tileâ€™
! â€˜-mamx-int8â€™
! â€˜-mamx-bf16â€™
! â€˜-mhresetâ€™
! â€˜-mklâ€™
! â€˜-mwideklâ€™
! â€˜-mavxifmaâ€™
! â€˜-mavxvnniint8â€™
! â€˜-mavxneconvertâ€™
! â€˜-mcmpccxaddâ€™
! â€˜-mamx-fp16â€™
! â€˜-mprefetchiâ€™
! â€˜-mraointâ€™
! â€˜-mamx-complexâ€™
! â€˜-mavxvnniint16â€™
! â€˜-msm3â€™
! â€˜-msha512â€™
! â€˜-msm4â€™
! â€˜-mapxfâ€™
! â€˜-musermsrâ€™
! â€˜-mavx10.1â€™
! â€˜-mavx10.1-256â€™
! â€˜-mavx10.1-512â€™
! â€˜-mavx10.2â€™
! â€˜-mamx-avx512â€™
! â€˜-mamx-tf32â€™
! â€˜-mamx-transposeâ€™
! â€˜-mamx-fp8â€™
! â€˜-mmovrsâ€™
! â€˜-mamx-movrsâ€™
       These switches enable the use of instructions in the MMX, SSE,
       AVX512CD, AVX512VL, AVX512BW, AVX512DQ, AVX512IFMA, AVX512VBMI,
       SHA, AES, PCLMUL, CLFLUSHOPT, CLWB, FSGSBASE, PTWRITE, RDRND, F16C,
*************** These '-m' options are defined for the x
*** 32839,32888 ****
       AMX-COMPLEX, AVXVNNIINT16, SM3, SHA512, SM4, APX_F, USER_MSR,
       AVX10.1, AVX10.2, AMX-AVX512, AMX-TF32, AMX-TRANSPOSE, AMX-FP8,
       MOVRS, AMX-MOVRS or CLDEMOTE extended instruction sets.  Each has a
!      corresponding '-mno-' option to disable use of these instructions.
  
       These extensions are also available as built-in functions: see
       *note x86 Built-in Functions::, for details of the functions
       enabled and disabled by these switches.
  
!      Note that '-msse4' enables both SSE4.1 and SSE4.2 support, while
!      '-mno-sse4' turns off those features; neither form of the option
!      affects SSE4A support, controlled separately by '-msse4a'.
  
       To generate SSE/SSE2 instructions automatically from floating-point
!      code (as opposed to 387 instructions), see '-mfpmath=sse'.
  
!      GCC depresses SSEx instructions when '-mavx' is used.  Instead, it
       generates new AVX instructions or AVX equivalence for all SSEx
       instructions when needed.
  
       These options enable GCC to use these extended instructions in
!      generated code, even without '-mfpmath=sse'.  Applications that
       perform run-time CPU detection must compile separate files for each
       supported architecture, using the appropriate flags.  In
       particular, the file containing the CPU detection code should be
       compiled without these options.
  
! '-mdump-tune-features'
       This option instructs GCC to dump the names of the x86 performance
       tuning features and default settings.  The names can be used in
!      '-mtune-ctrl=FEATURE-LIST'.
  
! '-mtune-ctrl=FEATURE-LIST'
       This option is used to do fine grain control of x86 code generation
       features.  FEATURE-LIST is a comma separated list of FEATURE names.
!      See also '-mdump-tune-features'.  When specified, the FEATURE is
!      turned on if it is not preceded with '^', otherwise, it is turned
!      off.  '-mtune-ctrl=FEATURE-LIST' is intended to be used by GCC
       developers.  Using it may lead to code paths not covered by testing
       and can potentially result in compiler ICEs or runtime errors.
  
! '-mno-default'
       This option instructs GCC to turn off all tunable features.  See
!      also '-mtune-ctrl=FEATURE-LIST' and '-mdump-tune-features'.
  
! '-mcld'
!      This option instructs GCC to emit a 'cld' instruction in the
       prologue of functions that use string instructions.  String
       instructions depend on the DF flag to select between autoincrement
       or autodecrement mode.  While the ABI specifies the DF flag to be
--- 32847,32896 ----
       AMX-COMPLEX, AVXVNNIINT16, SM3, SHA512, SM4, APX_F, USER_MSR,
       AVX10.1, AVX10.2, AMX-AVX512, AMX-TF32, AMX-TRANSPOSE, AMX-FP8,
       MOVRS, AMX-MOVRS or CLDEMOTE extended instruction sets.  Each has a
!      corresponding â€˜-mno-â€™ option to disable use of these instructions.
  
       These extensions are also available as built-in functions: see
       *note x86 Built-in Functions::, for details of the functions
       enabled and disabled by these switches.
  
!      Note that â€˜-msse4â€™ enables both SSE4.1 and SSE4.2 support, while
!      â€˜-mno-sse4â€™ turns off those features; neither form of the option
!      affects SSE4A support, controlled separately by â€˜-msse4aâ€™.
  
       To generate SSE/SSE2 instructions automatically from floating-point
!      code (as opposed to 387 instructions), see â€˜-mfpmath=sseâ€™.
  
!      GCC depresses SSEx instructions when â€˜-mavxâ€™ is used.  Instead, it
       generates new AVX instructions or AVX equivalence for all SSEx
       instructions when needed.
  
       These options enable GCC to use these extended instructions in
!      generated code, even without â€˜-mfpmath=sseâ€™.  Applications that
       perform run-time CPU detection must compile separate files for each
       supported architecture, using the appropriate flags.  In
       particular, the file containing the CPU detection code should be
       compiled without these options.
  
! â€˜-mdump-tune-featuresâ€™
       This option instructs GCC to dump the names of the x86 performance
       tuning features and default settings.  The names can be used in
!      â€˜-mtune-ctrl=FEATURE-LISTâ€™.
  
! â€˜-mtune-ctrl=FEATURE-LISTâ€™
       This option is used to do fine grain control of x86 code generation
       features.  FEATURE-LIST is a comma separated list of FEATURE names.
!      See also â€˜-mdump-tune-featuresâ€™.  When specified, the FEATURE is
!      turned on if it is not preceded with â€˜^â€™, otherwise, it is turned
!      off.  â€˜-mtune-ctrl=FEATURE-LISTâ€™ is intended to be used by GCC
       developers.  Using it may lead to code paths not covered by testing
       and can potentially result in compiler ICEs or runtime errors.
  
! â€˜-mno-defaultâ€™
       This option instructs GCC to turn off all tunable features.  See
!      also â€˜-mtune-ctrl=FEATURE-LISTâ€™ and â€˜-mdump-tune-featuresâ€™.
  
! â€˜-mcldâ€™
!      This option instructs GCC to emit a â€˜cldâ€™ instruction in the
       prologue of functions that use string instructions.  String
       instructions depend on the DF flag to select between autoincrement
       or autodecrement mode.  While the ABI specifies the DF flag to be
*************** These '-m' options are defined for the x
*** 32891,32964 ****
       dispatchers.  The exception handler can be invoked with the DF flag
       set, which leads to wrong direction mode when string instructions
       are used.  This option can be enabled by default on 32-bit x86
!      targets by configuring GCC with the '--enable-cld' configure
!      option.  Generation of 'cld' instructions can be suppressed with
!      the '-mno-cld' compiler option in this case.
  
! '-mvzeroupper'
!      This option instructs GCC to emit a 'vzeroupper' instruction before
       a transfer of control flow out of the function to minimize the AVX
!      to SSE transition penalty as well as remove unnecessary 'zeroupper'
       intrinsics.
  
! '-mprefer-avx128'
       This option instructs GCC to use 128-bit AVX instructions instead
       of 256-bit AVX instructions in the auto-vectorizer.
  
! '-mprefer-vector-width=OPT'
       This option instructs GCC to use OPT-bit vector width in
       instructions instead of default on the selected platform.
  
! '-mpartial-vector-fp-math'
       This option enables GCC to generate floating-point operations that
       might affect the set of floating-point status flags on partial
       vectors, where vector elements reside in the low part of the
!      128-bit SSE register.  Unless '-fno-trapping-math' is specified,
       the compiler guarantees correct behavior by sanitizing all input
       operands to have zeroes in the unused upper part of the vector
       register.  Note that by using built-in functions or inline assembly
       with partial vector arguments, NaNs, denormal or invalid values can
       leak into the upper part of the vector, causing possible
!      performance issues when '-fno-trapping-math' is in effect.  These
       issues can be mitigated by manually sanitizing the upper part of
!      the partial vector argument register or by using '-mdaz-ftz' to set
       denormals-are-zero (DAZ) flag in the MXCSR register.
  
       This option is enabled by default.
  
! '-mmove-max=BITS'
       This option instructs GCC to set the maximum number of bits can be
       moved from memory to memory efficiently to BITS.  The valid BITS
       are 128, 256 and 512.
  
! '-mstore-max=BITS'
       This option instructs GCC to set the maximum number of bits can be
       stored to memory efficiently to BITS.  The valid BITS are 128, 256
       and 512.
  
!      'none'
            No extra limitations applied to GCC other than defined by the
            selected platform.
  
!      '128'
            Prefer 128-bit vector width for instructions.
  
!      '256'
            Prefer 256-bit vector width for instructions.
  
!      '512'
            Prefer 512-bit vector width for instructions.
  
! '-mnoreturn-no-callee-saved-registers'
!      This option optimizes functions with 'noreturn' attribute or
!      '_Noreturn' specifier by not saving in the function prologue
       callee-saved registers which are used in the function (except for
!      the 'BP' register).  This option can interfere with debugging of
!      the caller of the 'noreturn' function or any function further up in
       the call stack, so it is not enabled by default.
  
! '-mcx16'
!      This option enables GCC to generate 'CMPXCHG16B' instructions in
       64-bit code to implement compare-and-exchange operations on 16-byte
       aligned 128-bit objects.  This is useful for atomic updates of data
       structures exceeding one machine word in size.  The compiler uses
--- 32899,32972 ----
       dispatchers.  The exception handler can be invoked with the DF flag
       set, which leads to wrong direction mode when string instructions
       are used.  This option can be enabled by default on 32-bit x86
!      targets by configuring GCC with the â€˜--enable-cldâ€™ configure
!      option.  Generation of â€˜cldâ€™ instructions can be suppressed with
!      the â€˜-mno-cldâ€™ compiler option in this case.
  
! â€˜-mvzeroupperâ€™
!      This option instructs GCC to emit a â€˜vzeroupperâ€™ instruction before
       a transfer of control flow out of the function to minimize the AVX
!      to SSE transition penalty as well as remove unnecessary â€˜zeroupperâ€™
       intrinsics.
  
! â€˜-mprefer-avx128â€™
       This option instructs GCC to use 128-bit AVX instructions instead
       of 256-bit AVX instructions in the auto-vectorizer.
  
! â€˜-mprefer-vector-width=OPTâ€™
       This option instructs GCC to use OPT-bit vector width in
       instructions instead of default on the selected platform.
  
! â€˜-mpartial-vector-fp-mathâ€™
       This option enables GCC to generate floating-point operations that
       might affect the set of floating-point status flags on partial
       vectors, where vector elements reside in the low part of the
!      128-bit SSE register.  Unless â€˜-fno-trapping-mathâ€™ is specified,
       the compiler guarantees correct behavior by sanitizing all input
       operands to have zeroes in the unused upper part of the vector
       register.  Note that by using built-in functions or inline assembly
       with partial vector arguments, NaNs, denormal or invalid values can
       leak into the upper part of the vector, causing possible
!      performance issues when â€˜-fno-trapping-mathâ€™ is in effect.  These
       issues can be mitigated by manually sanitizing the upper part of
!      the partial vector argument register or by using â€˜-mdaz-ftzâ€™ to set
       denormals-are-zero (DAZ) flag in the MXCSR register.
  
       This option is enabled by default.
  
! â€˜-mmove-max=BITSâ€™
       This option instructs GCC to set the maximum number of bits can be
       moved from memory to memory efficiently to BITS.  The valid BITS
       are 128, 256 and 512.
  
! â€˜-mstore-max=BITSâ€™
       This option instructs GCC to set the maximum number of bits can be
       stored to memory efficiently to BITS.  The valid BITS are 128, 256
       and 512.
  
!      â€˜noneâ€™
            No extra limitations applied to GCC other than defined by the
            selected platform.
  
!      â€˜128â€™
            Prefer 128-bit vector width for instructions.
  
!      â€˜256â€™
            Prefer 256-bit vector width for instructions.
  
!      â€˜512â€™
            Prefer 512-bit vector width for instructions.
  
! â€˜-mnoreturn-no-callee-saved-registersâ€™
!      This option optimizes functions with â€˜noreturnâ€™ attribute or
!      â€˜_Noreturnâ€™ specifier by not saving in the function prologue
       callee-saved registers which are used in the function (except for
!      the â€˜BPâ€™ register).  This option can interfere with debugging of
!      the caller of the â€˜noreturnâ€™ function or any function further up in
       the call stack, so it is not enabled by default.
  
! â€˜-mcx16â€™
!      This option enables GCC to generate â€˜CMPXCHG16Bâ€™ instructions in
       64-bit code to implement compare-and-exchange operations on 16-byte
       aligned 128-bit objects.  This is useful for atomic updates of data
       structures exceeding one machine word in size.  The compiler uses
*************** These '-m' options are defined for the x
*** 32966,33120 ****
       for *note __atomic Builtins:: operating on 128-bit integers, a
       library call is always used.
  
! '-msahf'
!      This option enables generation of 'SAHF' instructions in 64-bit
       code.  Early Intel Pentium 4 CPUs with Intel 64 support, prior to
       the introduction of Pentium 4 G1 step in December 2005, lacked the
!      'LAHF' and 'SAHF' instructions which are supported by AMD64.  These
       are load and store instructions, respectively, for certain status
!      flags.  In 64-bit mode, the 'SAHF' instruction is used to optimize
!      'fmod', 'drem', and 'remainder' built-in functions; see *note Other
       Builtins:: for details.
  
! '-mmovbe'
!      This option enables use of the 'movbe' instruction to optimize byte
       swapping of four and eight byte entities.
  
! '-mshstk'
!      The '-mshstk' option enables shadow stack built-in functions from
       x86 Control-flow Enforcement Technology (CET).
  
! '-mcrc32'
!      This option enables built-in functions '__builtin_ia32_crc32qi',
!      '__builtin_ia32_crc32hi', '__builtin_ia32_crc32si' and
!      '__builtin_ia32_crc32di' to generate the 'crc32' machine
       instruction.
  
! '-mmwait'
!      This option enables built-in functions '__builtin_ia32_monitor',
!      and '__builtin_ia32_mwait' to generate the 'monitor' and 'mwait'
       machine instructions.
  
! '-mrecip'
!      This option enables use of 'RCPSS' and 'RSQRTSS' instructions (and
!      their vectorized variants 'RCPPS' and 'RSQRTPS') with an additional
!      Newton-Raphson step to increase precision instead of 'DIVSS' and
!      'SQRTSS' (and their vectorized variants) for single-precision
       floating-point arguments.  These instructions are generated only
!      when '-funsafe-math-optimizations' is enabled together with
!      '-ffinite-math-only' and '-fno-trapping-math'.  Note that while the
       throughput of the sequence is higher than the throughput of the
       non-reciprocal instruction, the precision of the sequence can be
       decreased by up to 2 ulp (i.e. the inverse of 1.0 equals
       0.99999994).
  
!      Note that GCC implements '1.0f/sqrtf(X)' in terms of 'RSQRTSS' (or
!      'RSQRTPS') already with '-ffast-math' (or the above option
!      combination), and doesn't need '-mrecip'.
  
       Also note that GCC emits the above sequence with additional
       Newton-Raphson step for vectorized single-float division and
!      vectorized 'sqrtf(X)' already with '-ffast-math' (or the above
!      option combination), and doesn't need '-mrecip'.
  
! '-mrecip=OPT'
       This option controls which reciprocal estimate instructions may be
       used.  OPT is a comma-separated list of options, which may be
!      preceded by a '!' to invert the option:
  
!      'all'
            Enable all estimate instructions.
  
!      'default'
!           Enable the default instructions, equivalent to '-mrecip'.
  
!      'none'
!           Disable all estimate instructions, equivalent to '-mno-recip'.
  
!      'div'
            Enable the approximation for scalar division.
  
!      'vec-div'
            Enable the approximation for vectorized division.
  
!      'sqrt'
            Enable the approximation for scalar square root.
  
!      'vec-sqrt'
            Enable the approximation for vectorized square root.
  
!      So, for example, '-mrecip=all,!sqrt' enables all of the reciprocal
       approximations, except for square root.
  
! '-mveclibabi=TYPE'
       Specifies the ABI type to use for vectorizing intrinsics using an
!      external library.  Supported values for TYPE are 'svml' for the
!      Intel short vector math library, 'aocl' for the math library (LibM)
!      from AMD Optimizing CPU Libraries (AOCL) and 'acml' for the
       end-of-life AMD core math library (to which AOCL-LibM is the
!      successor).  To use this option, both '-ftree-vectorize' and
!      '-funsafe-math-optimizations' have to be enabled, and an SVML or
       ACML ABI-compatible library must be specified at link time.
  
!      GCC currently emits calls to 'vmldExp2', 'vmldLn2', 'vmldLog102',
!      'vmldPow2', 'vmldTanh2', 'vmldTan2', 'vmldAtan2', 'vmldAtanh2',
!      'vmldCbrt2', 'vmldSinh2', 'vmldSin2', 'vmldAsinh2', 'vmldAsin2',
!      'vmldCosh2', 'vmldCos2', 'vmldAcosh2', 'vmldAcos2', 'vmlsExp4',
!      'vmlsLn4', 'vmlsLog104', 'vmlsPow4', 'vmlsTanh4', 'vmlsTan4',
!      'vmlsAtan4', 'vmlsAtanh4', 'vmlsCbrt4', 'vmlsSinh4', 'vmlsSin4',
!      'vmlsAsinh4', 'vmlsAsin4', 'vmlsCosh4', 'vmlsCos4', 'vmlsAcosh4'
!      and 'vmlsAcos4' for corresponding function type when
!      '-mveclibabi=svml' is used, 'amd_vrs4_acosf', 'amd_vrs16_acosf',
!      'amd_vrd8_asin', 'amd_vrs4_asinf', 'amd_vrs8_asinf',
!      'amd_vrs16_asinf', 'amd_vrd2_atan', 'amd_vrd8_atan',
!      'amd_vrs4_atanf', 'amd_vrs8_atanf', 'amd_vrs16_atanf',
!      'amd_vrd2_cos', 'amd_vrd4_cos', 'amd_vrd8_cos', 'amd_vrs4_cosf',
!      'amd_vrs8_cosf', 'amd_vrs16_cosf', 'amd_vrs4_coshf',
!      'amd_vrs8_coshf', 'amd_vrd2_erf', 'amd_vrd4_erf', 'amd_vrd8_erf',
!      'amd_vrs4_erff', 'amd_vrs8_erff', 'amd_vrs16_erff', 'amd_vrd2_exp',
!      'amd_vrd4_exp', 'amd_vrd8_exp', 'amd_vrs4_expf', 'amd_vrs8_expf',
!      'amd_vrs16_expf', 'amd_vrd2_exp10', 'amd_vrs4_exp10f',
!      'amd_vrd2_exp2', 'amd_vrd4_exp2', 'amd_vrd8_exp2',
!      'amd_vrs4_exp2f', 'amd_vrs8_exp2f', 'amd_vrs16_exp2f',
!      'amd_vrs4_expm1f', 'amd_vrd2_log', 'amd_vrd4_log', 'amd_vrd8_log',
!      'amd_vrs4_logf', 'amd_vrs8_logf', 'amd_vrs16_logf',
!      'amd_vrd2_log10', 'amd_vrs4_log10f', 'amd_vrs8_log10f',
!      'amd_vrs16_log10f', 'amd_vrd2_log1p', 'amd_vrs4_log1pf',
!      'amd_vrd2_log2', 'amd_vrd4_log2', 'amd_vrd8_log2',
!      'amd_vrs4_log2f', 'amd_vrs8_log2f', 'amd_vrs16_log2f',
!      'amd_vrd2_pow', 'amd_vrd4_pow', 'amd_vrd8_pow', 'amd_vrs4_powf',
!      'amd_vrs8_powf', 'amd_vrs16_powf', 'amd_vrd2_sin', 'amd_vrd4_sin',
!      'amd_vrd8_sin', 'amd_vrs4_sinf', 'amd_vrs8_sinf', 'amd_vrs16_sinf',
!      'amd_vrd2_tan', 'amd_vrd4_tan', 'amd_vrd8_tan', 'amd_vrs16_tanf',
!      'amd_vrs4_tanhf', 'amd_vrs8_tanhf', 'amd_vrs16_tanhf' for the
!      corresponding function type when '-mveclibabi=aocl' is used, and
!      '__vrd2_sin', '__vrd2_cos', '__vrd2_exp', '__vrd2_log',
!      '__vrd2_log2', '__vrd2_log10', '__vrs4_sinf', '__vrs4_cosf',
!      '__vrs4_expf', '__vrs4_logf', '__vrs4_log2f', '__vrs4_log10f' and
!      '__vrs4_powf' for the corresponding function type when
!      '-mveclibabi=acml' is used.
  
! '-mabi=NAME'
       Generate code for the specified calling convention.  Permissible
!      values are 'sysv' for the ABI used on GNU/Linux and other systems,
!      and 'ms' for the Microsoft ABI. The default is to use the Microsoft
       ABI when targeting Microsoft Windows and the SysV ABI on all other
       systems.  You can control this behavior for specific functions by
!      using the function attributes 'ms_abi' and 'sysv_abi'.  *Note
       Function Attributes::.
  
! '-mforce-indirect-call'
       Force all calls to functions to be indirect.  This is useful when
       using Intel Processor Trace where it generates more precise timing
       information for function calls.
  
! '-mmanual-endbr'
!      Insert ENDBR instruction at function entry only via the 'cf_check'
       function attribute.  This is useful when used with the option
!      '-fcf-protection=branch' to control ENDBR insertion at the function
       entry.
  
! '-mcet-switch'
       By default, CET instrumentation is turned off on switch statements
       that use a jump table and indirect branch track is disabled.  Since
       jump tables are stored in read-only memory, this does not result in
--- 32974,33128 ----
       for *note __atomic Builtins:: operating on 128-bit integers, a
       library call is always used.
  
! â€˜-msahfâ€™
!      This option enables generation of â€˜SAHFâ€™ instructions in 64-bit
       code.  Early Intel Pentium 4 CPUs with Intel 64 support, prior to
       the introduction of Pentium 4 G1 step in December 2005, lacked the
!      â€˜LAHFâ€™ and â€˜SAHFâ€™ instructions which are supported by AMD64.  These
       are load and store instructions, respectively, for certain status
!      flags.  In 64-bit mode, the â€˜SAHFâ€™ instruction is used to optimize
!      â€˜fmodâ€™, â€˜dremâ€™, and â€˜remainderâ€™ built-in functions; see *note Other
       Builtins:: for details.
  
! â€˜-mmovbeâ€™
!      This option enables use of the â€˜movbeâ€™ instruction to optimize byte
       swapping of four and eight byte entities.
  
! â€˜-mshstkâ€™
!      The â€˜-mshstkâ€™ option enables shadow stack built-in functions from
       x86 Control-flow Enforcement Technology (CET).
  
! â€˜-mcrc32â€™
!      This option enables built-in functions â€˜__builtin_ia32_crc32qiâ€™,
!      â€˜__builtin_ia32_crc32hiâ€™, â€˜__builtin_ia32_crc32siâ€™ and
!      â€˜__builtin_ia32_crc32diâ€™ to generate the â€˜crc32â€™ machine
       instruction.
  
! â€˜-mmwaitâ€™
!      This option enables built-in functions â€˜__builtin_ia32_monitorâ€™,
!      and â€˜__builtin_ia32_mwaitâ€™ to generate the â€˜monitorâ€™ and â€˜mwaitâ€™
       machine instructions.
  
! â€˜-mrecipâ€™
!      This option enables use of â€˜RCPSSâ€™ and â€˜RSQRTSSâ€™ instructions (and
!      their vectorized variants â€˜RCPPSâ€™ and â€˜RSQRTPSâ€™) with an additional
!      Newton-Raphson step to increase precision instead of â€˜DIVSSâ€™ and
!      â€˜SQRTSSâ€™ (and their vectorized variants) for single-precision
       floating-point arguments.  These instructions are generated only
!      when â€˜-funsafe-math-optimizationsâ€™ is enabled together with
!      â€˜-ffinite-math-onlyâ€™ and â€˜-fno-trapping-mathâ€™.  Note that while the
       throughput of the sequence is higher than the throughput of the
       non-reciprocal instruction, the precision of the sequence can be
       decreased by up to 2 ulp (i.e. the inverse of 1.0 equals
       0.99999994).
  
!      Note that GCC implements â€˜1.0f/sqrtf(X)â€™ in terms of â€˜RSQRTSSâ€™ (or
!      â€˜RSQRTPSâ€™) already with â€˜-ffast-mathâ€™ (or the above option
!      combination), and doesn't need â€˜-mrecipâ€™.
  
       Also note that GCC emits the above sequence with additional
       Newton-Raphson step for vectorized single-float division and
!      vectorized â€˜sqrtf(X)â€™ already with â€˜-ffast-mathâ€™ (or the above
!      option combination), and doesn't need â€˜-mrecipâ€™.
  
! â€˜-mrecip=OPTâ€™
       This option controls which reciprocal estimate instructions may be
       used.  OPT is a comma-separated list of options, which may be
!      preceded by a â€˜!â€™ to invert the option:
  
!      â€˜allâ€™
            Enable all estimate instructions.
  
!      â€˜defaultâ€™
!           Enable the default instructions, equivalent to â€˜-mrecipâ€™.
  
!      â€˜noneâ€™
!           Disable all estimate instructions, equivalent to â€˜-mno-recipâ€™.
  
!      â€˜divâ€™
            Enable the approximation for scalar division.
  
!      â€˜vec-divâ€™
            Enable the approximation for vectorized division.
  
!      â€˜sqrtâ€™
            Enable the approximation for scalar square root.
  
!      â€˜vec-sqrtâ€™
            Enable the approximation for vectorized square root.
  
!      So, for example, â€˜-mrecip=all,!sqrtâ€™ enables all of the reciprocal
       approximations, except for square root.
  
! â€˜-mveclibabi=TYPEâ€™
       Specifies the ABI type to use for vectorizing intrinsics using an
!      external library.  Supported values for TYPE are â€˜svmlâ€™ for the
!      Intel short vector math library, â€˜aoclâ€™ for the math library (LibM)
!      from AMD Optimizing CPU Libraries (AOCL) and â€˜acmlâ€™ for the
       end-of-life AMD core math library (to which AOCL-LibM is the
!      successor).  To use this option, both â€˜-ftree-vectorizeâ€™ and
!      â€˜-funsafe-math-optimizationsâ€™ have to be enabled, and an SVML or
       ACML ABI-compatible library must be specified at link time.
  
!      GCC currently emits calls to â€˜vmldExp2â€™, â€˜vmldLn2â€™, â€˜vmldLog102â€™,
!      â€˜vmldPow2â€™, â€˜vmldTanh2â€™, â€˜vmldTan2â€™, â€˜vmldAtan2â€™, â€˜vmldAtanh2â€™,
!      â€˜vmldCbrt2â€™, â€˜vmldSinh2â€™, â€˜vmldSin2â€™, â€˜vmldAsinh2â€™, â€˜vmldAsin2â€™,
!      â€˜vmldCosh2â€™, â€˜vmldCos2â€™, â€˜vmldAcosh2â€™, â€˜vmldAcos2â€™, â€˜vmlsExp4â€™,
!      â€˜vmlsLn4â€™, â€˜vmlsLog104â€™, â€˜vmlsPow4â€™, â€˜vmlsTanh4â€™, â€˜vmlsTan4â€™,
!      â€˜vmlsAtan4â€™, â€˜vmlsAtanh4â€™, â€˜vmlsCbrt4â€™, â€˜vmlsSinh4â€™, â€˜vmlsSin4â€™,
!      â€˜vmlsAsinh4â€™, â€˜vmlsAsin4â€™, â€˜vmlsCosh4â€™, â€˜vmlsCos4â€™, â€˜vmlsAcosh4â€™
!      and â€˜vmlsAcos4â€™ for corresponding function type when
!      â€˜-mveclibabi=svmlâ€™ is used, â€˜amd_vrs4_acosfâ€™, â€˜amd_vrs16_acosfâ€™,
!      â€˜amd_vrd8_asinâ€™, â€˜amd_vrs4_asinfâ€™, â€˜amd_vrs8_asinfâ€™,
!      â€˜amd_vrs16_asinfâ€™, â€˜amd_vrd2_atanâ€™, â€˜amd_vrd8_atanâ€™,
!      â€˜amd_vrs4_atanfâ€™, â€˜amd_vrs8_atanfâ€™, â€˜amd_vrs16_atanfâ€™,
!      â€˜amd_vrd2_cosâ€™, â€˜amd_vrd4_cosâ€™, â€˜amd_vrd8_cosâ€™, â€˜amd_vrs4_cosfâ€™,
!      â€˜amd_vrs8_cosfâ€™, â€˜amd_vrs16_cosfâ€™, â€˜amd_vrs4_coshfâ€™,
!      â€˜amd_vrs8_coshfâ€™, â€˜amd_vrd2_erfâ€™, â€˜amd_vrd4_erfâ€™, â€˜amd_vrd8_erfâ€™,
!      â€˜amd_vrs4_erffâ€™, â€˜amd_vrs8_erffâ€™, â€˜amd_vrs16_erffâ€™, â€˜amd_vrd2_expâ€™,
!      â€˜amd_vrd4_expâ€™, â€˜amd_vrd8_expâ€™, â€˜amd_vrs4_expfâ€™, â€˜amd_vrs8_expfâ€™,
!      â€˜amd_vrs16_expfâ€™, â€˜amd_vrd2_exp10â€™, â€˜amd_vrs4_exp10fâ€™,
!      â€˜amd_vrd2_exp2â€™, â€˜amd_vrd4_exp2â€™, â€˜amd_vrd8_exp2â€™,
!      â€˜amd_vrs4_exp2fâ€™, â€˜amd_vrs8_exp2fâ€™, â€˜amd_vrs16_exp2fâ€™,
!      â€˜amd_vrs4_expm1fâ€™, â€˜amd_vrd2_logâ€™, â€˜amd_vrd4_logâ€™, â€˜amd_vrd8_logâ€™,
!      â€˜amd_vrs4_logfâ€™, â€˜amd_vrs8_logfâ€™, â€˜amd_vrs16_logfâ€™,
!      â€˜amd_vrd2_log10â€™, â€˜amd_vrs4_log10fâ€™, â€˜amd_vrs8_log10fâ€™,
!      â€˜amd_vrs16_log10fâ€™, â€˜amd_vrd2_log1pâ€™, â€˜amd_vrs4_log1pfâ€™,
!      â€˜amd_vrd2_log2â€™, â€˜amd_vrd4_log2â€™, â€˜amd_vrd8_log2â€™,
!      â€˜amd_vrs4_log2fâ€™, â€˜amd_vrs8_log2fâ€™, â€˜amd_vrs16_log2fâ€™,
!      â€˜amd_vrd2_powâ€™, â€˜amd_vrd4_powâ€™, â€˜amd_vrd8_powâ€™, â€˜amd_vrs4_powfâ€™,
!      â€˜amd_vrs8_powfâ€™, â€˜amd_vrs16_powfâ€™, â€˜amd_vrd2_sinâ€™, â€˜amd_vrd4_sinâ€™,
!      â€˜amd_vrd8_sinâ€™, â€˜amd_vrs4_sinfâ€™, â€˜amd_vrs8_sinfâ€™, â€˜amd_vrs16_sinfâ€™,
!      â€˜amd_vrd2_tanâ€™, â€˜amd_vrd4_tanâ€™, â€˜amd_vrd8_tanâ€™, â€˜amd_vrs16_tanfâ€™,
!      â€˜amd_vrs4_tanhfâ€™, â€˜amd_vrs8_tanhfâ€™, â€˜amd_vrs16_tanhfâ€™ for the
!      corresponding function type when â€˜-mveclibabi=aoclâ€™ is used, and
!      â€˜__vrd2_sinâ€™, â€˜__vrd2_cosâ€™, â€˜__vrd2_expâ€™, â€˜__vrd2_logâ€™,
!      â€˜__vrd2_log2â€™, â€˜__vrd2_log10â€™, â€˜__vrs4_sinfâ€™, â€˜__vrs4_cosfâ€™,
!      â€˜__vrs4_expfâ€™, â€˜__vrs4_logfâ€™, â€˜__vrs4_log2fâ€™, â€˜__vrs4_log10fâ€™ and
!      â€˜__vrs4_powfâ€™ for the corresponding function type when
!      â€˜-mveclibabi=acmlâ€™ is used.
  
! â€˜-mabi=NAMEâ€™
       Generate code for the specified calling convention.  Permissible
!      values are â€˜sysvâ€™ for the ABI used on GNU/Linux and other systems,
!      and â€˜msâ€™ for the Microsoft ABI. The default is to use the Microsoft
       ABI when targeting Microsoft Windows and the SysV ABI on all other
       systems.  You can control this behavior for specific functions by
!      using the function attributes â€˜ms_abiâ€™ and â€˜sysv_abiâ€™.  *Note
       Function Attributes::.
  
! â€˜-mforce-indirect-callâ€™
       Force all calls to functions to be indirect.  This is useful when
       using Intel Processor Trace where it generates more precise timing
       information for function calls.
  
! â€˜-mmanual-endbrâ€™
!      Insert ENDBR instruction at function entry only via the â€˜cf_checkâ€™
       function attribute.  This is useful when used with the option
!      â€˜-fcf-protection=branchâ€™ to control ENDBR insertion at the function
       entry.
  
! â€˜-mcet-switchâ€™
       By default, CET instrumentation is turned off on switch statements
       that use a jump table and indirect branch track is disabled.  Since
       jump tables are stored in read-only memory, this does not result in
*************** These '-m' options are defined for the x
*** 33124,33175 ****
       branch track for switch statements with jump tables which leads to
       the jump targets reachable via any indirect jumps.
  
! '-mcall-ms2sysv-xlogues'
       Due to differences in 64-bit ABIs, any Microsoft ABI function that
       calls a System V ABI function must consider RSI, RDI and XMM6-15 as
       clobbered.  By default, the code for saving and restoring these
       registers is emitted inline, resulting in fairly lengthy prologues
!      and epilogues.  Using '-mcall-ms2sysv-xlogues' emits prologues and
       epilogues that use stubs in the static portion of libgcc to perform
       these saves and restores, thus reducing function size at the cost
       of a few extra instructions.
  
! '-mtls-dialect=TYPE'
!      Generate code to access thread-local storage using the 'gnu' or
!      'gnu2' conventions.  'gnu' is the conservative default; 'gnu2' is
       more efficient, but it may add compile- and run-time requirements
       that cannot be satisfied on all systems.
  
! '-mpush-args'
! '-mno-push-args'
       Use PUSH operations to store outgoing parameters.  This method is
       shorter and usually equally fast as method using SUB/MOV operations
       and is enabled by default.  In some cases disabling it may improve
       performance because of improved scheduling and reduced
       dependencies.
  
! '-maccumulate-outgoing-args'
       If enabled, the maximum amount of space required for outgoing
       arguments is computed in the function prologue.  This is faster on
       most modern CPUs because of reduced dependencies, improved
       scheduling and reduced stack usage when the preferred stack
       boundary is not equal to 2.  The drawback is a notable increase in
!      code size.  This switch implies '-mno-push-args'.
  
! '-mthreads'
       Support thread-safe exception handling on MinGW. Programs that rely
       on thread-safe exception handling must compile and link all code
!      with the '-mthreads' option.  When compiling, '-mthreads' defines
!      '-D_MT'; when linking, it links in a special thread helper library
!      '-lmingwthrd' which cleans up per-thread exception-handling data.
  
! '-mms-bitfields'
! '-mno-ms-bitfields'
  
       Enable/disable bit-field layout compatible with the native
       Microsoft Windows compiler.
  
!      If 'packed' is used on a structure, or if bit-fields are used, it
       may be that the Microsoft ABI lays out the structure differently
       than the way GCC normally does.  Particularly when moving packed
       data between functions compiled with GCC and the native Microsoft
--- 33132,33183 ----
       branch track for switch statements with jump tables which leads to
       the jump targets reachable via any indirect jumps.
  
! â€˜-mcall-ms2sysv-xloguesâ€™
       Due to differences in 64-bit ABIs, any Microsoft ABI function that
       calls a System V ABI function must consider RSI, RDI and XMM6-15 as
       clobbered.  By default, the code for saving and restoring these
       registers is emitted inline, resulting in fairly lengthy prologues
!      and epilogues.  Using â€˜-mcall-ms2sysv-xloguesâ€™ emits prologues and
       epilogues that use stubs in the static portion of libgcc to perform
       these saves and restores, thus reducing function size at the cost
       of a few extra instructions.
  
! â€˜-mtls-dialect=TYPEâ€™
!      Generate code to access thread-local storage using the â€˜gnuâ€™ or
!      â€˜gnu2â€™ conventions.  â€˜gnuâ€™ is the conservative default; â€˜gnu2â€™ is
       more efficient, but it may add compile- and run-time requirements
       that cannot be satisfied on all systems.
  
! â€˜-mpush-argsâ€™
! â€˜-mno-push-argsâ€™
       Use PUSH operations to store outgoing parameters.  This method is
       shorter and usually equally fast as method using SUB/MOV operations
       and is enabled by default.  In some cases disabling it may improve
       performance because of improved scheduling and reduced
       dependencies.
  
! â€˜-maccumulate-outgoing-argsâ€™
       If enabled, the maximum amount of space required for outgoing
       arguments is computed in the function prologue.  This is faster on
       most modern CPUs because of reduced dependencies, improved
       scheduling and reduced stack usage when the preferred stack
       boundary is not equal to 2.  The drawback is a notable increase in
!      code size.  This switch implies â€˜-mno-push-argsâ€™.
  
! â€˜-mthreadsâ€™
       Support thread-safe exception handling on MinGW. Programs that rely
       on thread-safe exception handling must compile and link all code
!      with the â€˜-mthreadsâ€™ option.  When compiling, â€˜-mthreadsâ€™ defines
!      â€˜-D_MTâ€™; when linking, it links in a special thread helper library
!      â€˜-lmingwthrdâ€™ which cleans up per-thread exception-handling data.
  
! â€˜-mms-bitfieldsâ€™
! â€˜-mno-ms-bitfieldsâ€™
  
       Enable/disable bit-field layout compatible with the native
       Microsoft Windows compiler.
  
!      If â€˜packedâ€™ is used on a structure, or if bit-fields are used, it
       may be that the Microsoft ABI lays out the structure differently
       than the way GCC normally does.  Particularly when moving packed
       data between functions compiled with GCC and the native Microsoft
*************** These '-m' options are defined for the x
*** 33193,33199 ****
         2. Every data object has an alignment requirement.  The alignment
            requirement for all data except structures, unions, and arrays
            is either the size of the object or the current packing size
!           (specified with either the 'aligned' attribute or the 'pack'
            pragma), whichever is less.  For structures, unions, and
            arrays, the alignment requirement is the largest alignment
            requirement of its members.  Every object is allocated an
--- 33201,33207 ----
         2. Every data object has an alignment requirement.  The alignment
            requirement for all data except structures, unions, and arrays
            is either the size of the object or the current packing size
!           (specified with either the â€˜alignedâ€™ attribute or the â€˜packâ€™
            pragma), whichever is less.  For structures, unions, and
            arrays, the alignment requirement is the largest alignment
            requirement of its members.  Every object is allocated an
*************** These '-m' options are defined for the x
*** 33221,33233 ****
                    unsigned long bf_2 : 12;
                  } t1;
  
!           The size of 't1' is 8 bytes with the zero-length bit-field.
!           If the zero-length bit-field were removed, 't1''s size would
            be 4 bytes.
  
         2. If a zero-length bit-field is inserted after a bit-field,
!           'foo', and the alignment of the zero-length bit-field is
!           greater than the member that follows it, 'bar', 'bar' is
            aligned as the type of the zero-length bit-field.
  
            For example:
--- 33229,33241 ----
                    unsigned long bf_2 : 12;
                  } t1;
  
!           The size of â€˜t1â€™ is 8 bytes with the zero-length bit-field.
!           If the zero-length bit-field were removed, â€˜t1â€™'s size would
            be 4 bytes.
  
         2. If a zero-length bit-field is inserted after a bit-field,
!           â€˜fooâ€™, and the alignment of the zero-length bit-field is
!           greater than the member that follows it, â€˜barâ€™, â€˜barâ€™ is
            aligned as the type of the zero-length bit-field.
  
            For example:
*************** These '-m' options are defined for the x
*** 33246,33254 ****
                    double bar;
                  } t3;
  
!           For 't2', 'bar' is placed at offset 2, rather than offset 1.
!           Accordingly, the size of 't2' is 4.  For 't3', the zero-length
!           bit-field does not affect the alignment of 'bar' or, as a
            result, the size of the structure.
  
            Taking this into account, it is important to note the
--- 33254,33262 ----
                    double bar;
                  } t3;
  
!           For â€˜t2â€™, â€˜barâ€™ is placed at offset 2, rather than offset 1.
!           Accordingly, the size of â€˜t2â€™ is 4.  For â€˜t3â€™, the zero-length
!           bit-field does not affect the alignment of â€˜barâ€™ or, as a
            result, the size of the structure.
  
            Taking this into account, it is important to note the
*************** These '-m' options are defined for the x
*** 33256,33262 ****
  
              1. If a zero-length bit-field follows a normal bit-field,
                 the type of the zero-length bit-field may affect the
!                alignment of the structure as whole.  For example, 't2'
                 has a size of 4 bytes, since the zero-length bit-field
                 follows a normal bit-field, and is of type short.
  
--- 33264,33270 ----
  
              1. If a zero-length bit-field follows a normal bit-field,
                 the type of the zero-length bit-field may affect the
!                alignment of the structure as whole.  For example, â€˜t2â€™
                 has a size of 4 bytes, since the zero-length bit-field
                 follows a normal bit-field, and is of type short.
  
*************** These '-m' options are defined for the x
*** 33270,33276 ****
                         long : 0;
                       } t4;
  
!                Here, 't4' takes up 4 bytes.
  
         3. Zero-length bit-fields following non-bit-field members are
            ignored:
--- 33278,33284 ----
                         long : 0;
                       } t4;
  
!                Here, â€˜t4â€™ takes up 4 bytes.
  
         3. Zero-length bit-fields following non-bit-field members are
            ignored:
*************** These '-m' options are defined for the x
*** 33282,33406 ****
                    char bar;
                  } t5;
  
!           Here, 't5' takes up 2 bytes.
  
! '-mno-align-stringops'
       Do not align the destination of inlined string operations.  This
       switch reduces code size and improves performance in case the
       destination is already aligned, but GCC doesn't know about it.
  
! '-minline-all-stringops'
       By default GCC inlines string operations only when the destination
       is known to be aligned to least a 4-byte boundary.  This enables
       more inlining and increases code size, but may improve performance
!      of code that depends on fast 'memcpy' and 'memset' for short
!      lengths.  The option enables inline expansion of 'strlen' for all
       pointer alignments.
  
! '-minline-stringops-dynamically'
       For string operations of unknown size, use run-time checks with
       inline code for small blocks and a library call for large blocks.
  
! '-mstringop-strategy=ALG'
       Override the internal decision heuristic for the particular
       algorithm to use for inlining string operations.  The allowed
       values for ALG are:
  
!      'rep_byte'
!      'rep_4byte'
!      'rep_8byte'
!           Expand using i386 'rep' prefix of the specified size.
  
!      'byte_loop'
!      'loop'
!      'unrolled_loop'
            Expand into an inline loop.
  
!      'libcall'
            Always use a library call.
  
! '-mmemcpy-strategy=STRATEGY'
       Override the internal decision heuristic to decide if
!      '__builtin_memcpy' should be inlined and what inline algorithm to
       use when the expected size of the copy operation is known.
       STRATEGY is a comma-separated list of ALG:MAX_SIZE:DEST_ALIGN
!      triplets.  ALG is specified in '-mstringop-strategy', MAX_SIZE
       specifies the max byte size with which inline algorithm ALG is
!      allowed.  For the last triplet, the MAX_SIZE must be '-1'.  The
       MAX_SIZE of the triplets in the list must be specified in
!      increasing order.  The minimal byte size for ALG is '0' for the
!      first triplet and 'MAX_SIZE + 1' of the preceding range.
  
! '-mmemset-strategy=STRATEGY'
!      The option is similar to '-mmemcpy-strategy=' except that it is to
!      control '__builtin_memset' expansion.
  
! '-momit-leaf-frame-pointer'
       Don't keep the frame pointer in a register for leaf functions.
       This avoids the instructions to save, set up, and restore frame
       pointers and makes an extra register available in leaf functions.
!      The option '-fomit-leaf-frame-pointer' removes the frame pointer
       for leaf functions, which might make debugging harder.
  
! '-mtls-direct-seg-refs'
! '-mno-tls-direct-seg-refs'
       Controls whether TLS variables may be accessed with offsets from
!      the TLS segment register ('%gs' for 32-bit, '%fs' for 64-bit), or
       whether the thread base pointer must be added.  Whether or not this
       is valid depends on the operating system, and whether it maps the
       segment to cover the entire TLS area.
  
       For systems that use the GNU C Library, the default is on.
  
! '-msse2avx'
! '-mno-sse2avx'
       Specify that the assembler should encode SSE instructions with VEX
!      prefix.  The option '-mavx' turns this on by default.
  
! '-mfentry'
! '-mno-fentry'
!      If profiling is active ('-pg'), put the profiling counter call
       before the prologue.  Note: On x86 architectures the attribute
!      'ms_hook_prologue' isn't possible at the moment for '-mfentry' and
!      '-pg'.
  
! '-mrecord-mcount'
! '-mno-record-mcount'
!      If profiling is active ('-pg'), generate a __mcount_loc section
       that contains pointers to each profiling call.  This is useful for
       automatically patching and out calls.
  
! '-mnop-mcount'
! '-mno-nop-mcount'
!      If profiling is active ('-pg'), generate the calls to the profiling
       functions as NOPs.  This is useful when they should be patched in
       later dynamically.  This is likely only useful together with
!      '-mrecord-mcount'.
  
! '-minstrument-return=TYPE'
       Instrument function exit in -pg -mfentry instrumented functions
       with call to specified function.  This only instruments true
       returns ending with ret, but not sibling calls ending with jump.
       Valid types are NONE to not instrument, CALL to generate a call to
       __return__, or NOP5 to generate a 5 byte nop.
  
! '-mrecord-return'
! '-mno-record-return'
       Generate a __return_loc section pointing to all return
       instrumentation code.
  
! '-mfentry-name=NAME'
       Set name of __fentry__ symbol called at function entry for -pg
       -mfentry functions.
  
! '-mfentry-section=NAME'
       Set name of section to record -mrecord-mcount calls (default
       __mcount_loc).
  
! '-mskip-rax-setup'
! '-mno-skip-rax-setup'
       When generating code for the x86-64 architecture with SSE
!      extensions disabled, '-mskip-rax-setup' can be used to skip setting
       up RAX register when there are no variable arguments passed in
       vector registers.
  
--- 33290,33414 ----
                    char bar;
                  } t5;
  
!           Here, â€˜t5â€™ takes up 2 bytes.
  
! â€˜-mno-align-stringopsâ€™
       Do not align the destination of inlined string operations.  This
       switch reduces code size and improves performance in case the
       destination is already aligned, but GCC doesn't know about it.
  
! â€˜-minline-all-stringopsâ€™
       By default GCC inlines string operations only when the destination
       is known to be aligned to least a 4-byte boundary.  This enables
       more inlining and increases code size, but may improve performance
!      of code that depends on fast â€˜memcpyâ€™ and â€˜memsetâ€™ for short
!      lengths.  The option enables inline expansion of â€˜strlenâ€™ for all
       pointer alignments.
  
! â€˜-minline-stringops-dynamicallyâ€™
       For string operations of unknown size, use run-time checks with
       inline code for small blocks and a library call for large blocks.
  
! â€˜-mstringop-strategy=ALGâ€™
       Override the internal decision heuristic for the particular
       algorithm to use for inlining string operations.  The allowed
       values for ALG are:
  
!      â€˜rep_byteâ€™
!      â€˜rep_4byteâ€™
!      â€˜rep_8byteâ€™
!           Expand using i386 â€˜repâ€™ prefix of the specified size.
  
!      â€˜byte_loopâ€™
!      â€˜loopâ€™
!      â€˜unrolled_loopâ€™
            Expand into an inline loop.
  
!      â€˜libcallâ€™
            Always use a library call.
  
! â€˜-mmemcpy-strategy=STRATEGYâ€™
       Override the internal decision heuristic to decide if
!      â€˜__builtin_memcpyâ€™ should be inlined and what inline algorithm to
       use when the expected size of the copy operation is known.
       STRATEGY is a comma-separated list of ALG:MAX_SIZE:DEST_ALIGN
!      triplets.  ALG is specified in â€˜-mstringop-strategyâ€™, MAX_SIZE
       specifies the max byte size with which inline algorithm ALG is
!      allowed.  For the last triplet, the MAX_SIZE must be â€˜-1â€™.  The
       MAX_SIZE of the triplets in the list must be specified in
!      increasing order.  The minimal byte size for ALG is â€˜0â€™ for the
!      first triplet and â€˜MAX_SIZE + 1â€™ of the preceding range.
  
! â€˜-mmemset-strategy=STRATEGYâ€™
!      The option is similar to â€˜-mmemcpy-strategy=â€™ except that it is to
!      control â€˜__builtin_memsetâ€™ expansion.
  
! â€˜-momit-leaf-frame-pointerâ€™
       Don't keep the frame pointer in a register for leaf functions.
       This avoids the instructions to save, set up, and restore frame
       pointers and makes an extra register available in leaf functions.
!      The option â€˜-fomit-leaf-frame-pointerâ€™ removes the frame pointer
       for leaf functions, which might make debugging harder.
  
! â€˜-mtls-direct-seg-refsâ€™
! â€˜-mno-tls-direct-seg-refsâ€™
       Controls whether TLS variables may be accessed with offsets from
!      the TLS segment register (â€˜%gsâ€™ for 32-bit, â€˜%fsâ€™ for 64-bit), or
       whether the thread base pointer must be added.  Whether or not this
       is valid depends on the operating system, and whether it maps the
       segment to cover the entire TLS area.
  
       For systems that use the GNU C Library, the default is on.
  
! â€˜-msse2avxâ€™
! â€˜-mno-sse2avxâ€™
       Specify that the assembler should encode SSE instructions with VEX
!      prefix.  The option â€˜-mavxâ€™ turns this on by default.
  
! â€˜-mfentryâ€™
! â€˜-mno-fentryâ€™
!      If profiling is active (â€˜-pgâ€™), put the profiling counter call
       before the prologue.  Note: On x86 architectures the attribute
!      â€˜ms_hook_prologueâ€™ isn't possible at the moment for â€˜-mfentryâ€™ and
!      â€˜-pgâ€™.
  
! â€˜-mrecord-mcountâ€™
! â€˜-mno-record-mcountâ€™
!      If profiling is active (â€˜-pgâ€™), generate a __mcount_loc section
       that contains pointers to each profiling call.  This is useful for
       automatically patching and out calls.
  
! â€˜-mnop-mcountâ€™
! â€˜-mno-nop-mcountâ€™
!      If profiling is active (â€˜-pgâ€™), generate the calls to the profiling
       functions as NOPs.  This is useful when they should be patched in
       later dynamically.  This is likely only useful together with
!      â€˜-mrecord-mcountâ€™.
  
! â€˜-minstrument-return=TYPEâ€™
       Instrument function exit in -pg -mfentry instrumented functions
       with call to specified function.  This only instruments true
       returns ending with ret, but not sibling calls ending with jump.
       Valid types are NONE to not instrument, CALL to generate a call to
       __return__, or NOP5 to generate a 5 byte nop.
  
! â€˜-mrecord-returnâ€™
! â€˜-mno-record-returnâ€™
       Generate a __return_loc section pointing to all return
       instrumentation code.
  
! â€˜-mfentry-name=NAMEâ€™
       Set name of __fentry__ symbol called at function entry for -pg
       -mfentry functions.
  
! â€˜-mfentry-section=NAMEâ€™
       Set name of section to record -mrecord-mcount calls (default
       __mcount_loc).
  
! â€˜-mskip-rax-setupâ€™
! â€˜-mno-skip-rax-setupâ€™
       When generating code for the x86-64 architecture with SSE
!      extensions disabled, â€˜-mskip-rax-setupâ€™ can be used to skip setting
       up RAX register when there are no variable arguments passed in
       vector registers.
  
*************** These '-m' options are defined for the x
*** 33410,33618 ****
       misbehave or jump to a random location.  GCC 4.4 or newer don't
       have those issues, regardless the RAX register value.
  
! '-m8bit-idiv'
! '-mno-8bit-idiv'
       On some processors, like Intel Atom, 8-bit unsigned integer divide
       is much faster than 32-bit/64-bit integer divide.  This option
       generates a run-time check.  If both dividend and divisor are
       within range of 0 to 255, 8-bit unsigned integer divide is used
       instead of 32-bit/64-bit integer divide.
  
! '-mavx256-split-unaligned-load'
! '-mavx256-split-unaligned-store'
       Split 32-byte AVX unaligned load and store.
  
! '-mstack-protector-guard=GUARD'
! '-mstack-protector-guard-reg=REG'
! '-mstack-protector-guard-offset=OFFSET'
! '-mstack-protector-guard-symbol=SYMBOL'
       Generate stack protection code using canary at GUARD.  Supported
!      locations are 'global' for global canary or 'tls' for per-thread
       canary in the TLS block (the default).  This option has effect only
!      when '-fstack-protector' or '-fstack-protector-all' is specified.
  
       With the latter choice the options
!      '-mstack-protector-guard-reg=REG' and
!      '-mstack-protector-guard-offset=OFFSET' furthermore specify which
!      segment register ('%fs' or '%gs') to use as base register for
       reading the canary, and from what offset from that base register.
       The default for those is as specified in the relevant ABI.
  
!      '-mstack-protector-guard-symbol=SYMBOL' overrides the offset with a
       symbol reference to a canary in the TLS block.
  
! '-mgeneral-regs-only'
       Generate code that uses only the general-purpose registers.  This
       prevents the compiler from using floating-point, vector, mask and
       bound registers.
  
! '-mrelax-cmpxchg-loop'
       When emitting a compare-and-swap loop for *note __sync Builtins::
       and *note __atomic Builtins:: lacking a native instruction,
       optimize for the highly contended case by issuing an atomic load
!      before the 'CMPXCHG' instruction, and using the 'PAUSE' instruction
       to save CPU power when restarting the loop.
  
! '-mindirect-branch=CHOICE'
!      Convert indirect call and jump with CHOICE.  The default is 'keep',
!      which keeps indirect call and jump unmodified.  'thunk' converts
!      indirect call and jump to call and return thunk.  'thunk-inline'
       converts indirect call and jump to inlined call and return thunk.
!      'thunk-extern' converts indirect call and jump to external call and
       return thunk provided in a separate object file.  You can control
       this behavior for a specific function by using the function
!      attribute 'indirect_branch'.  *Note Function Attributes::.
  
!      Note that '-mcmodel=large' is incompatible with
!      '-mindirect-branch=thunk' and '-mindirect-branch=thunk-extern'
       since the thunk function may not be reachable in the large code
       model.
  
!      Note that '-mindirect-branch=thunk-extern' is compatible with
!      '-fcf-protection=branch' since the external thunk can be made to
       enable control-flow check.
  
! '-mfunction-return=CHOICE'
!      Convert function return with CHOICE.  The default is 'keep', which
!      keeps function return unmodified.  'thunk' converts function return
!      to call and return thunk.  'thunk-inline' converts function return
!      to inlined call and return thunk.  'thunk-extern' converts function
       return to external call and return thunk provided in a separate
       object file.  You can control this behavior for a specific function
!      by using the function attribute 'function_return'.  *Note Function
       Attributes::.
  
!      Note that '-mindirect-return=thunk-extern' is compatible with
!      '-fcf-protection=branch' since the external thunk can be made to
       enable control-flow check.
  
!      Note that '-mcmodel=large' is incompatible with
!      '-mfunction-return=thunk' and '-mfunction-return=thunk-extern'
       since the thunk function may not be reachable in the large code
       model.
  
! '-mindirect-branch-register'
       Force indirect call and jump via register.
  
! '-mharden-sls=CHOICE'
       Generate code to mitigate against straight line speculation (SLS)
!      with CHOICE.  The default is 'none' which disables all SLS
!      hardening.  'return' enables SLS hardening for function returns.
!      'indirect-jmp' enables SLS hardening for indirect jumps.  'all'
       enables all SLS hardening.
  
! '-mindirect-branch-cs-prefix'
       Add CS prefix to call and jmp to indirect thunk with branch target
       in r8-r15 registers so that the call and jmp instruction length is
!      6 bytes to allow them to be replaced with 'lfence; call *%r8-r15'
!      or 'lfence; jmp *%r8-r15' at run-time.
  
! '-mapx-inline-asm-use-gpr32'
       For inline asm support with APX, by default the EGPR feature was
       disabled to prevent potential illegal instruction with EGPR occurs.
       To invoke egpr usage in inline asm, use new compiler option
       -mapx-inline-asm-use-gpr32 and user should ensure the instruction
       supports EGPR.
  
! '-mevex512'
! '-mno-evex512'
       Enables/disables 512-bit vector.  It will be default on if AVX512F
       is enabled.
  
!  These '-m' switches are supported in addition to the above on x86-64
  processors in 64-bit environments.
  
! '-m32'
! '-m64'
! '-mx32'
! '-m16'
! '-miamcu'
       Generate code for a 16-bit, 32-bit or 64-bit environment.  The
!      '-m32' option sets 'int', 'long', and pointer types to 32 bits, and
       generates code that runs in 32-bit mode.
  
!      The '-m64' option sets 'int' to 32 bits and 'long' and pointer
       types to 64 bits, and generates code for the x86-64 architecture.
!      For Darwin only the '-m64' option also turns off the '-fno-pic' and
!      '-mdynamic-no-pic' options.
  
!      The '-mx32' option sets 'int', 'long', and pointer types to 32
       bits, and generates code for the x86-64 architecture.
  
!      The '-m16' option is the same as '-m32', except for that it outputs
!      the '.code16gcc' assembly directive at the beginning of the
       assembly output so that the binary can run in 16-bit mode.
  
!      The '-miamcu' option generates code which conforms to Intel MCU
!      psABI. It requires the '-m32' option to be turned on.
  
! '-mno-red-zone'
       Do not use a so-called "red zone" for x86-64 code.  The red zone is
       mandated by the x86-64 ABI; it is a 128-byte area beyond the
       location of the stack pointer that is not modified by signal or
       interrupt handlers and therefore can be used for temporary data
!      without adjusting the stack pointer.  The flag '-mno-red-zone'
       disables this red zone.
  
! '-mcmodel=small'
       Generate code for the small code model: the program and its symbols
       must be linked in the lower 2 GB of the address space.  Pointers
       are 64 bits.  Programs can be statically or dynamically linked.
       This is the default code model.
  
! '-mcmodel=kernel'
       Generate code for the kernel code model.  The kernel runs in the
       negative 2 GB of the address space.  This model has to be used for
       Linux kernel code.
  
! '-mcmodel=medium'
       Generate code for the medium model: the program is linked in the
       lower 2 GB of the address space.  Small symbols are also placed
!      there.  Symbols with sizes larger than '-mlarge-data-threshold' are
       put into large data or BSS sections and can be located above 2GB.
       Programs can be statically or dynamically linked.
  
! '-mcmodel=large'
       Generate code for the large model.  This model makes no assumptions
       about addresses and sizes of sections.
  
! '-maddress-mode=long'
       Generate code for long address mode.  This is only supported for
       64-bit and x32 environments.  It is the default address mode for
       64-bit environments.
  
! '-maddress-mode=short'
       Generate code for short address mode.  This is only supported for
       32-bit and x32 environments.  It is the default address mode for
       32-bit and x32 environments.
  
! '-mneeded'
! '-mno-needed'
       Emit GNU_PROPERTY_X86_ISA_1_NEEDED GNU property for Linux target to
       indicate the micro-architecture ISA level required to execute the
       binary.
  
! '-mno-direct-extern-access'
!      Without '-fpic' nor '-fPIC', always use the GOT pointer to access
!      external symbols.  With '-fpic' or '-fPIC', treat access to
       protected symbols as local symbols.  The default is
!      '-mdirect-extern-access'.
  
       *Warning:* shared libraries compiled with
!      '-mno-direct-extern-access' and executable compiled with
!      '-mdirect-extern-access' may not be binary compatible if protected
       symbols are used in shared libraries and executable.
  
! '-munroll-only-small-loops'
       Controls conservative small loop unrolling.  It is default enabled
       by O2, and unrolls loop with less than 4 insns by 1 time.  Explicit
       -f[no-]unroll-[all-]loops would disable this flag to avoid any
       unintended unrolling behavior that user does not want.
  
! '-mlam=CHOICE'
       LAM(linear-address masking) allows special bits in the pointer to
!      be used for metadata.  The default is 'none'.  With 'u48', pointer
!      bits in positions 62:48 can be used for metadata; With 'u57',
       pointer bits in positions 62:57 can be used for metadata.
  
  
--- 33418,33626 ----
       misbehave or jump to a random location.  GCC 4.4 or newer don't
       have those issues, regardless the RAX register value.
  
! â€˜-m8bit-idivâ€™
! â€˜-mno-8bit-idivâ€™
       On some processors, like Intel Atom, 8-bit unsigned integer divide
       is much faster than 32-bit/64-bit integer divide.  This option
       generates a run-time check.  If both dividend and divisor are
       within range of 0 to 255, 8-bit unsigned integer divide is used
       instead of 32-bit/64-bit integer divide.
  
! â€˜-mavx256-split-unaligned-loadâ€™
! â€˜-mavx256-split-unaligned-storeâ€™
       Split 32-byte AVX unaligned load and store.
  
! â€˜-mstack-protector-guard=GUARDâ€™
! â€˜-mstack-protector-guard-reg=REGâ€™
! â€˜-mstack-protector-guard-offset=OFFSETâ€™
! â€˜-mstack-protector-guard-symbol=SYMBOLâ€™
       Generate stack protection code using canary at GUARD.  Supported
!      locations are â€˜globalâ€™ for global canary or â€˜tlsâ€™ for per-thread
       canary in the TLS block (the default).  This option has effect only
!      when â€˜-fstack-protectorâ€™ or â€˜-fstack-protector-allâ€™ is specified.
  
       With the latter choice the options
!      â€˜-mstack-protector-guard-reg=REGâ€™ and
!      â€˜-mstack-protector-guard-offset=OFFSETâ€™ furthermore specify which
!      segment register (â€˜%fsâ€™ or â€˜%gsâ€™) to use as base register for
       reading the canary, and from what offset from that base register.
       The default for those is as specified in the relevant ABI.
  
!      â€˜-mstack-protector-guard-symbol=SYMBOLâ€™ overrides the offset with a
       symbol reference to a canary in the TLS block.
  
! â€˜-mgeneral-regs-onlyâ€™
       Generate code that uses only the general-purpose registers.  This
       prevents the compiler from using floating-point, vector, mask and
       bound registers.
  
! â€˜-mrelax-cmpxchg-loopâ€™
       When emitting a compare-and-swap loop for *note __sync Builtins::
       and *note __atomic Builtins:: lacking a native instruction,
       optimize for the highly contended case by issuing an atomic load
!      before the â€˜CMPXCHGâ€™ instruction, and using the â€˜PAUSEâ€™ instruction
       to save CPU power when restarting the loop.
  
! â€˜-mindirect-branch=CHOICEâ€™
!      Convert indirect call and jump with CHOICE.  The default is â€˜keepâ€™,
!      which keeps indirect call and jump unmodified.  â€˜thunkâ€™ converts
!      indirect call and jump to call and return thunk.  â€˜thunk-inlineâ€™
       converts indirect call and jump to inlined call and return thunk.
!      â€˜thunk-externâ€™ converts indirect call and jump to external call and
       return thunk provided in a separate object file.  You can control
       this behavior for a specific function by using the function
!      attribute â€˜indirect_branchâ€™.  *Note Function Attributes::.
  
!      Note that â€˜-mcmodel=largeâ€™ is incompatible with
!      â€˜-mindirect-branch=thunkâ€™ and â€˜-mindirect-branch=thunk-externâ€™
       since the thunk function may not be reachable in the large code
       model.
  
!      Note that â€˜-mindirect-branch=thunk-externâ€™ is compatible with
!      â€˜-fcf-protection=branchâ€™ since the external thunk can be made to
       enable control-flow check.
  
! â€˜-mfunction-return=CHOICEâ€™
!      Convert function return with CHOICE.  The default is â€˜keepâ€™, which
!      keeps function return unmodified.  â€˜thunkâ€™ converts function return
!      to call and return thunk.  â€˜thunk-inlineâ€™ converts function return
!      to inlined call and return thunk.  â€˜thunk-externâ€™ converts function
       return to external call and return thunk provided in a separate
       object file.  You can control this behavior for a specific function
!      by using the function attribute â€˜function_returnâ€™.  *Note Function
       Attributes::.
  
!      Note that â€˜-mindirect-return=thunk-externâ€™ is compatible with
!      â€˜-fcf-protection=branchâ€™ since the external thunk can be made to
       enable control-flow check.
  
!      Note that â€˜-mcmodel=largeâ€™ is incompatible with
!      â€˜-mfunction-return=thunkâ€™ and â€˜-mfunction-return=thunk-externâ€™
       since the thunk function may not be reachable in the large code
       model.
  
! â€˜-mindirect-branch-registerâ€™
       Force indirect call and jump via register.
  
! â€˜-mharden-sls=CHOICEâ€™
       Generate code to mitigate against straight line speculation (SLS)
!      with CHOICE.  The default is â€˜noneâ€™ which disables all SLS
!      hardening.  â€˜returnâ€™ enables SLS hardening for function returns.
!      â€˜indirect-jmpâ€™ enables SLS hardening for indirect jumps.  â€˜allâ€™
       enables all SLS hardening.
  
! â€˜-mindirect-branch-cs-prefixâ€™
       Add CS prefix to call and jmp to indirect thunk with branch target
       in r8-r15 registers so that the call and jmp instruction length is
!      6 bytes to allow them to be replaced with â€˜lfence; call *%r8-r15â€™
!      or â€˜lfence; jmp *%r8-r15â€™ at run-time.
  
! â€˜-mapx-inline-asm-use-gpr32â€™
       For inline asm support with APX, by default the EGPR feature was
       disabled to prevent potential illegal instruction with EGPR occurs.
       To invoke egpr usage in inline asm, use new compiler option
       -mapx-inline-asm-use-gpr32 and user should ensure the instruction
       supports EGPR.
  
! â€˜-mevex512â€™
! â€˜-mno-evex512â€™
       Enables/disables 512-bit vector.  It will be default on if AVX512F
       is enabled.
  
!  These â€˜-mâ€™ switches are supported in addition to the above on x86-64
  processors in 64-bit environments.
  
! â€˜-m32â€™
! â€˜-m64â€™
! â€˜-mx32â€™
! â€˜-m16â€™
! â€˜-miamcuâ€™
       Generate code for a 16-bit, 32-bit or 64-bit environment.  The
!      â€˜-m32â€™ option sets â€˜intâ€™, â€˜longâ€™, and pointer types to 32 bits, and
       generates code that runs in 32-bit mode.
  
!      The â€˜-m64â€™ option sets â€˜intâ€™ to 32 bits and â€˜longâ€™ and pointer
       types to 64 bits, and generates code for the x86-64 architecture.
!      For Darwin only the â€˜-m64â€™ option also turns off the â€˜-fno-picâ€™ and
!      â€˜-mdynamic-no-picâ€™ options.
  
!      The â€˜-mx32â€™ option sets â€˜intâ€™, â€˜longâ€™, and pointer types to 32
       bits, and generates code for the x86-64 architecture.
  
!      The â€˜-m16â€™ option is the same as â€˜-m32â€™, except for that it outputs
!      the â€˜.code16gccâ€™ assembly directive at the beginning of the
       assembly output so that the binary can run in 16-bit mode.
  
!      The â€˜-miamcuâ€™ option generates code which conforms to Intel MCU
!      psABI. It requires the â€˜-m32â€™ option to be turned on.
  
! â€˜-mno-red-zoneâ€™
       Do not use a so-called "red zone" for x86-64 code.  The red zone is
       mandated by the x86-64 ABI; it is a 128-byte area beyond the
       location of the stack pointer that is not modified by signal or
       interrupt handlers and therefore can be used for temporary data
!      without adjusting the stack pointer.  The flag â€˜-mno-red-zoneâ€™
       disables this red zone.
  
! â€˜-mcmodel=smallâ€™
       Generate code for the small code model: the program and its symbols
       must be linked in the lower 2 GB of the address space.  Pointers
       are 64 bits.  Programs can be statically or dynamically linked.
       This is the default code model.
  
! â€˜-mcmodel=kernelâ€™
       Generate code for the kernel code model.  The kernel runs in the
       negative 2 GB of the address space.  This model has to be used for
       Linux kernel code.
  
! â€˜-mcmodel=mediumâ€™
       Generate code for the medium model: the program is linked in the
       lower 2 GB of the address space.  Small symbols are also placed
!      there.  Symbols with sizes larger than â€˜-mlarge-data-thresholdâ€™ are
       put into large data or BSS sections and can be located above 2GB.
       Programs can be statically or dynamically linked.
  
! â€˜-mcmodel=largeâ€™
       Generate code for the large model.  This model makes no assumptions
       about addresses and sizes of sections.
  
! â€˜-maddress-mode=longâ€™
       Generate code for long address mode.  This is only supported for
       64-bit and x32 environments.  It is the default address mode for
       64-bit environments.
  
! â€˜-maddress-mode=shortâ€™
       Generate code for short address mode.  This is only supported for
       32-bit and x32 environments.  It is the default address mode for
       32-bit and x32 environments.
  
! â€˜-mneededâ€™
! â€˜-mno-neededâ€™
       Emit GNU_PROPERTY_X86_ISA_1_NEEDED GNU property for Linux target to
       indicate the micro-architecture ISA level required to execute the
       binary.
  
! â€˜-mno-direct-extern-accessâ€™
!      Without â€˜-fpicâ€™ nor â€˜-fPICâ€™, always use the GOT pointer to access
!      external symbols.  With â€˜-fpicâ€™ or â€˜-fPICâ€™, treat access to
       protected symbols as local symbols.  The default is
!      â€˜-mdirect-extern-accessâ€™.
  
       *Warning:* shared libraries compiled with
!      â€˜-mno-direct-extern-accessâ€™ and executable compiled with
!      â€˜-mdirect-extern-accessâ€™ may not be binary compatible if protected
       symbols are used in shared libraries and executable.
  
! â€˜-munroll-only-small-loopsâ€™
       Controls conservative small loop unrolling.  It is default enabled
       by O2, and unrolls loop with less than 4 insns by 1 time.  Explicit
       -f[no-]unroll-[all-]loops would disable this flag to avoid any
       unintended unrolling behavior that user does not want.
  
! â€˜-mlam=CHOICEâ€™
       LAM(linear-address masking) allows special bits in the pointer to
!      be used for metadata.  The default is â€˜noneâ€™.  With â€˜u48â€™, pointer
!      bits in positions 62:48 can be used for metadata; With â€˜u57â€™,
       pointer bits in positions 62:57 can be used for metadata.
  
  
*************** File: gcc.info,  Node: Xstormy16 Options
*** 33631,33637 ****
  
  These options are defined for Xstormy16:
  
! '-msim'
       Choose startup files and linker script suitable for the simulator.
  
  
--- 33639,33645 ----
  
  These options are defined for Xstormy16:
  
! â€˜-msimâ€™
       Choose startup files and linker script suitable for the simulator.
  
  
*************** File: gcc.info,  Node: Xtensa Options,
*** 33642,33658 ****
  
  These options are supported for Xtensa targets:
  
! '-mconst16'
! '-mno-const16'
!      Enable or disable use of 'CONST16' instructions for loading
!      constant values.  The 'CONST16' instruction is currently not a
!      standard option from Tensilica.  When enabled, 'CONST16'
!      instructions are always used in place of the standard 'L32R'
!      instructions.  The use of 'CONST16' is enabled by default only if
!      the 'L32R' instruction is not available.
  
! '-mfused-madd'
! '-mno-fused-madd'
       Enable or disable use of fused multiply/add and multiply/subtract
       instructions in the floating-point option.  This has no effect if
       the floating-point option is not also enabled.  Disabling fused
--- 33650,33666 ----
  
  These options are supported for Xtensa targets:
  
! â€˜-mconst16â€™
! â€˜-mno-const16â€™
!      Enable or disable use of â€˜CONST16â€™ instructions for loading
!      constant values.  The â€˜CONST16â€™ instruction is currently not a
!      standard option from Tensilica.  When enabled, â€˜CONST16â€™
!      instructions are always used in place of the standard â€˜L32Râ€™
!      instructions.  The use of â€˜CONST16â€™ is enabled by default only if
!      the â€˜L32Râ€™ instruction is not available.
  
! â€˜-mfused-maddâ€™
! â€˜-mno-fused-maddâ€™
       Enable or disable use of fused multiply/add and multiply/subtract
       instructions in the floating-point option.  This has no effect if
       the floating-point option is not also enabled.  Disabling fused
*************** These options are supported for Xtensa t
*** 33667,33733 ****
       to the compiler's ability to combine multiply and add/subtract
       operations.
  
! '-mserialize-volatile'
! '-mno-serialize-volatile'
!      When this option is enabled, GCC inserts 'MEMW' instructions before
!      'volatile' memory references to guarantee sequential consistency.
!      The default is '-mserialize-volatile'.  Use
!      '-mno-serialize-volatile' to omit the 'MEMW' instructions.
  
! '-mforce-no-pic'
       For targets, like GNU/Linux, where all user-mode Xtensa code must
       be position-independent code (PIC), this option disables PIC for
       compiling kernel code.
  
! '-mtext-section-literals'
! '-mno-text-section-literals'
       These options control the treatment of literal pools.  The default
!      is '-mno-text-section-literals', which places literals in a
       separate section in the output file.  This allows the literal pool
       to be placed in a data RAM/ROM, and it also allows the linker to
       combine literal pools from separate object files to remove
       redundant literals and improve code size.  With
!      '-mtext-section-literals', the literals are interspersed in the
       text section in order to keep them as close as possible to their
       references.  This may be necessary for large assembly files.
       Literals for each function are placed right before that function.
  
! '-mauto-litpools'
! '-mno-auto-litpools'
       These options control the treatment of literal pools.  The default
!      is '-mno-auto-litpools', which places literals in a separate
!      section in the output file unless '-mtext-section-literals' is
!      used.  With '-mauto-litpools' the literals are interspersed in the
       text section by the assembler.  Compiler does not produce explicit
!      '.literal' directives and loads literals into registers with 'MOVI'
!      instructions instead of 'L32R' to let the assembler do relaxation
       and place literals as necessary.  This option allows assembler to
       create several literal pools per function and assemble very big
       functions, which may not be possible with
!      '-mtext-section-literals'.
  
! '-mtarget-align'
! '-mno-target-align'
       When this option is enabled, GCC instructs the assembler to
       automatically align instructions to reduce branch penalties at the
       expense of some code density.  The assembler attempts to widen
       density instructions to align branch targets and the instructions
       following call instructions.  If there are not enough preceding
       safe density instructions to align a target, no widening is
!      performed.  The default is '-mtarget-align'.  These options do not
!      affect the treatment of auto-aligned instructions like 'LOOP',
       which the assembler always aligns, either by widening density
       instructions or by inserting NOP instructions.
  
! '-mlongcalls'
! '-mno-longcalls'
       When this option is enabled, GCC instructs the assembler to
       translate direct calls to indirect calls unless it can determine
       that the target of a direct call is in the range allowed by the
       call instruction.  This translation typically occurs for calls to
       functions in other source files.  Specifically, the assembler
!      translates a direct 'CALL' instruction into an 'L32R' followed by a
!      'CALLX' instruction.  The default is '-mno-longcalls'.  This option
       should be used in programs where the call target can potentially be
       out of range.  This option is implemented in the assembler, not the
       compiler, so the assembly code generated by GCC still shows direct
--- 33675,33741 ----
       to the compiler's ability to combine multiply and add/subtract
       operations.
  
! â€˜-mserialize-volatileâ€™
! â€˜-mno-serialize-volatileâ€™
!      When this option is enabled, GCC inserts â€˜MEMWâ€™ instructions before
!      â€˜volatileâ€™ memory references to guarantee sequential consistency.
!      The default is â€˜-mserialize-volatileâ€™.  Use
!      â€˜-mno-serialize-volatileâ€™ to omit the â€˜MEMWâ€™ instructions.
  
! â€˜-mforce-no-picâ€™
       For targets, like GNU/Linux, where all user-mode Xtensa code must
       be position-independent code (PIC), this option disables PIC for
       compiling kernel code.
  
! â€˜-mtext-section-literalsâ€™
! â€˜-mno-text-section-literalsâ€™
       These options control the treatment of literal pools.  The default
!      is â€˜-mno-text-section-literalsâ€™, which places literals in a
       separate section in the output file.  This allows the literal pool
       to be placed in a data RAM/ROM, and it also allows the linker to
       combine literal pools from separate object files to remove
       redundant literals and improve code size.  With
!      â€˜-mtext-section-literalsâ€™, the literals are interspersed in the
       text section in order to keep them as close as possible to their
       references.  This may be necessary for large assembly files.
       Literals for each function are placed right before that function.
  
! â€˜-mauto-litpoolsâ€™
! â€˜-mno-auto-litpoolsâ€™
       These options control the treatment of literal pools.  The default
!      is â€˜-mno-auto-litpoolsâ€™, which places literals in a separate
!      section in the output file unless â€˜-mtext-section-literalsâ€™ is
!      used.  With â€˜-mauto-litpoolsâ€™ the literals are interspersed in the
       text section by the assembler.  Compiler does not produce explicit
!      â€˜.literalâ€™ directives and loads literals into registers with â€˜MOVIâ€™
!      instructions instead of â€˜L32Râ€™ to let the assembler do relaxation
       and place literals as necessary.  This option allows assembler to
       create several literal pools per function and assemble very big
       functions, which may not be possible with
!      â€˜-mtext-section-literalsâ€™.
  
! â€˜-mtarget-alignâ€™
! â€˜-mno-target-alignâ€™
       When this option is enabled, GCC instructs the assembler to
       automatically align instructions to reduce branch penalties at the
       expense of some code density.  The assembler attempts to widen
       density instructions to align branch targets and the instructions
       following call instructions.  If there are not enough preceding
       safe density instructions to align a target, no widening is
!      performed.  The default is â€˜-mtarget-alignâ€™.  These options do not
!      affect the treatment of auto-aligned instructions like â€˜LOOPâ€™,
       which the assembler always aligns, either by widening density
       instructions or by inserting NOP instructions.
  
! â€˜-mlongcallsâ€™
! â€˜-mno-longcallsâ€™
       When this option is enabled, GCC instructs the assembler to
       translate direct calls to indirect calls unless it can determine
       that the target of a direct call is in the range allowed by the
       call instruction.  This translation typically occurs for calls to
       functions in other source files.  Specifically, the assembler
!      translates a direct â€˜CALLâ€™ instruction into an â€˜L32Râ€™ followed by a
!      â€˜CALLXâ€™ instruction.  The default is â€˜-mno-longcallsâ€™.  This option
       should be used in programs where the call target can potentially be
       out of range.  This option is implemented in the assembler, not the
       compiler, so the assembly code generated by GCC still shows direct
*************** These options are supported for Xtensa t
*** 33736,33776 ****
       for every cross-file call, not just those that really are out of
       range.
  
! '-mabi=NAME'
       Generate code for the specified ABI.  Permissible values are:
!      'call0', 'windowed'.  Default ABI is chosen by the Xtensa core
       configuration.
  
! '-mabi=call0'
       When this option is enabled function parameters are passed in
!      registers 'a2' through 'a7', registers 'a12' through 'a15' are
!      caller-saved, and register 'a15' may be used as a frame pointer.
       When this version of the ABI is enabled the C preprocessor symbol
!      '__XTENSA_CALL0_ABI__' is defined.
  
! '-mabi=windowed'
       When this option is enabled function parameters are passed in
!      registers 'a10' through 'a15', and called function rotates register
       window by 8 registers on entry so that its arguments are found in
!      registers 'a2' through 'a7'.  Register 'a7' may be used as a frame
       pointer.  Register window is rotated 8 registers back upon return.
       When this version of the ABI is enabled the C preprocessor symbol
!      '__XTENSA_WINDOWED_ABI__' is defined.
  
! '-mextra-l32r-costs=N'
!      Specify an extra cost of instruction RAM/ROM access for 'L32R'
       instructions, in clock cycles.  This affects, when optimizing for
!      speed, whether loading a constant from literal pool using 'L32R' or
       synthesizing the constant from a small one with a couple of
       arithmetic instructions.  The default value is 0.
  
! '-mstrict-align'
! '-mno-strict-align'
       Avoid or allow generating memory accesses that may not be aligned
       on a natural object boundary as described in the architecture
!      specification.  The default is '-mno-strict-align' for cores that
       support both unaligned loads and stores in hardware and
!      '-mstrict-align' for all other cores.
  
  
  File: gcc.info,  Node: zSeries Options,  Prev: Xtensa Options,  Up: Submodel Options
--- 33744,33784 ----
       for every cross-file call, not just those that really are out of
       range.
  
! â€˜-mabi=NAMEâ€™
       Generate code for the specified ABI.  Permissible values are:
!      â€˜call0â€™, â€˜windowedâ€™.  Default ABI is chosen by the Xtensa core
       configuration.
  
! â€˜-mabi=call0â€™
       When this option is enabled function parameters are passed in
!      registers â€˜a2â€™ through â€˜a7â€™, registers â€˜a12â€™ through â€˜a15â€™ are
!      caller-saved, and register â€˜a15â€™ may be used as a frame pointer.
       When this version of the ABI is enabled the C preprocessor symbol
!      â€˜__XTENSA_CALL0_ABI__â€™ is defined.
  
! â€˜-mabi=windowedâ€™
       When this option is enabled function parameters are passed in
!      registers â€˜a10â€™ through â€˜a15â€™, and called function rotates register
       window by 8 registers on entry so that its arguments are found in
!      registers â€˜a2â€™ through â€˜a7â€™.  Register â€˜a7â€™ may be used as a frame
       pointer.  Register window is rotated 8 registers back upon return.
       When this version of the ABI is enabled the C preprocessor symbol
!      â€˜__XTENSA_WINDOWED_ABI__â€™ is defined.
  
! â€˜-mextra-l32r-costs=Nâ€™
!      Specify an extra cost of instruction RAM/ROM access for â€˜L32Râ€™
       instructions, in clock cycles.  This affects, when optimizing for
!      speed, whether loading a constant from literal pool using â€˜L32Râ€™ or
       synthesizing the constant from a small one with a couple of
       arithmetic instructions.  The default value is 0.
  
! â€˜-mstrict-alignâ€™
! â€˜-mno-strict-alignâ€™
       Avoid or allow generating memory accesses that may not be aligned
       on a natural object boundary as described in the architecture
!      specification.  The default is â€˜-mno-strict-alignâ€™ for cores that
       support both unaligned loads and stores in hardware and
!      â€˜-mstrict-alignâ€™ for all other cores.
  
  
  File: gcc.info,  Node: zSeries Options,  Prev: Xtensa Options,  Up: Submodel Options
*************** File: gcc.info,  Node: Spec Files,  Next
*** 33786,33822 ****
  3.21 Specifying Subprocesses and the Switches to Pass to Them
  =============================================================
  
! 'gcc' is a driver program.  It performs its job by invoking a sequence
  of other programs to do the work of compiling, assembling and linking.
  GCC interprets its command-line parameters and uses these to deduce
  which programs it should invoke, and which command-line options it ought
! to place on their command lines.  This behavior is controlled by "spec
! strings".  In most cases there is one spec string for each program that
  GCC can invoke, but a few programs have multiple spec strings to control
  their behavior.  The spec strings built into GCC can be overridden by
! using the '-specs=' command-line switch to specify a spec file.
  
!  "Spec files" are plain-text files that are used to construct spec
  strings.  They consist of a sequence of directives separated by blank
  lines.  The type of directive is determined by the first non-whitespace
  character on the line, which can be one of the following:
  
! '%COMMAND'
       Issues a COMMAND to the spec file processor.  The commands that can
       appear here are:
  
!      '%include <FILE>'
            Search for FILE and insert its text at the current point in
            the specs file.
  
!      '%include_noerr <FILE>'
!           Just like '%include', but do not generate an error message if
            the include file cannot be found.
  
!      '%rename OLD_NAME NEW_NAME'
            Rename the spec string OLD_NAME to NEW_NAME.
  
! '*[SPEC_NAME]:'
       This tells the compiler to create, override or delete the named
       spec string.  All lines after this directive up to the next
       directive or blank line are considered to be the text for the spec
--- 33794,33830 ----
  3.21 Specifying Subprocesses and the Switches to Pass to Them
  =============================================================
  
! â€˜gccâ€™ is a driver program.  It performs its job by invoking a sequence
  of other programs to do the work of compiling, assembling and linking.
  GCC interprets its command-line parameters and uses these to deduce
  which programs it should invoke, and which command-line options it ought
! to place on their command lines.  This behavior is controlled by â€œspec
! stringsâ€�.  In most cases there is one spec string for each program that
  GCC can invoke, but a few programs have multiple spec strings to control
  their behavior.  The spec strings built into GCC can be overridden by
! using the â€˜-specs=â€™ command-line switch to specify a spec file.
  
!  â€œSpec filesâ€� are plain-text files that are used to construct spec
  strings.  They consist of a sequence of directives separated by blank
  lines.  The type of directive is determined by the first non-whitespace
  character on the line, which can be one of the following:
  
! â€˜%COMMANDâ€™
       Issues a COMMAND to the spec file processor.  The commands that can
       appear here are:
  
!      â€˜%include <FILE>â€™
            Search for FILE and insert its text at the current point in
            the specs file.
  
!      â€˜%include_noerr <FILE>â€™
!           Just like â€˜%includeâ€™, but do not generate an error message if
            the include file cannot be found.
  
!      â€˜%rename OLD_NAME NEW_NAMEâ€™
            Rename the spec string OLD_NAME to NEW_NAME.
  
! â€˜*[SPEC_NAME]:â€™
       This tells the compiler to create, override or delete the named
       spec string.  All lines after this directive up to the next
       directive or blank line are considered to be the text for the spec
*************** character on the line, which can be one
*** 33825,33835 ****
       Otherwise, if the spec does not currently exist a new spec is
       created.  If the spec does exist then its contents are overridden
       by the text of this directive, unless the first character of that
!      text is the '+' character, in which case the text is appended to
       the spec.
  
! '[SUFFIX]:'
!      Creates a new '[SUFFIX] spec' pair.  All lines after this directive
       and up to the next directive or blank line are considered to make
       up the spec string for the indicated suffix.  When the compiler
       encounters an input file with the named suffix, it processes the
--- 33833,33843 ----
       Otherwise, if the spec does not currently exist a new spec is
       created.  If the spec does exist then its contents are overridden
       by the text of this directive, unless the first character of that
!      text is the â€˜+â€™ character, in which case the text is appended to
       the spec.
  
! â€˜[SUFFIX]:â€™
!      Creates a new â€˜[SUFFIX] specâ€™ pair.  All lines after this directive
       and up to the next directive or blank line are considered to make
       up the spec string for the indicated suffix.  When the compiler
       encounters an input file with the named suffix, it processes the
*************** character on the line, which can be one
*** 33839,33855 ****
            .ZZ:
            z-compile -input %i
  
!      This says that any input file whose name ends in '.ZZ' should be
!      passed to the program 'z-compile', which should be invoked with the
!      command-line switch '-input' and with the result of performing the
!      '%i' substitution.  (See below.)
  
       As an alternative to providing a spec string, the text following a
       suffix directive can be one of the following:
  
!      '@LANGUAGE'
            This says that the suffix is an alias for a known LANGUAGE.
!           This is similar to using the '-x' command-line switch to GCC
            to specify a language explicitly.  For example:
  
                 .ZZ:
--- 33847,33863 ----
            .ZZ:
            z-compile -input %i
  
!      This says that any input file whose name ends in â€˜.ZZâ€™ should be
!      passed to the program â€˜z-compileâ€™, which should be invoked with the
!      command-line switch â€˜-inputâ€™ and with the result of performing the
!      â€˜%iâ€™ substitution.  (See below.)
  
       As an alternative to providing a spec string, the text following a
       suffix directive can be one of the following:
  
!      â€˜@LANGUAGEâ€™
            This says that the suffix is an alias for a known LANGUAGE.
!           This is similar to using the â€˜-xâ€™ command-line switch to GCC
            to specify a language explicitly.  For example:
  
                 .ZZ:
*************** character on the line, which can be one
*** 33857,33863 ****
  
            Says that .ZZ files are, in fact, C++ source files.
  
!      '#NAME'
            This causes an error messages saying:
  
                 NAME compiler not installed on this system.
--- 33865,33871 ----
  
            Says that .ZZ files are, in fact, C++ source files.
  
!      â€˜#NAMEâ€™
            This causes an error messages saying:
  
                 NAME compiler not installed on this system.
*************** targets can also add their own spec stri
*** 33891,33922 ****
       *lib:
       --start-group -lgcc -lc -leval1 --end-group %(old_lib)
  
!  This example renames the spec called 'lib' to 'old_lib' and then
! overrides the previous definition of 'lib' with a new one.  The new
  definition adds in some extra command-line options before including the
  text of the old definition.
  
!  "Spec strings" are a list of command-line options to be passed to their
  corresponding program.  In addition, the spec strings can contain
! '%'-prefixed sequences to substitute variable text or to conditionally
  insert text into the command line.  Using these constructs it is
  possible to generate quite complex command lines.
  
!  Here is a table of all defined '%'-sequences for spec strings.  Note
  that spaces are not generated automatically around the results of
  expanding these sequences.  Therefore you can concatenate them together
  or combine them with constant text in a single argument.
  
! '%%'
!      Substitute one '%' into the program name or argument.
  
! '%"'
       Substitute an empty argument.
  
! '%i'
       Substitute the name of the input file being processed.
  
! '%b'
       Substitute the basename for outputs related with the input file
       being processed.  This is often the substring up to (and not
       including) the last period and not including the directory but,
--- 33899,33930 ----
       *lib:
       --start-group -lgcc -lc -leval1 --end-group %(old_lib)
  
!  This example renames the spec called â€˜libâ€™ to â€˜old_libâ€™ and then
! overrides the previous definition of â€˜libâ€™ with a new one.  The new
  definition adds in some extra command-line options before including the
  text of the old definition.
  
!  â€œSpec stringsâ€� are a list of command-line options to be passed to their
  corresponding program.  In addition, the spec strings can contain
! â€˜%â€™-prefixed sequences to substitute variable text or to conditionally
  insert text into the command line.  Using these constructs it is
  possible to generate quite complex command lines.
  
!  Here is a table of all defined â€˜%â€™-sequences for spec strings.  Note
  that spaces are not generated automatically around the results of
  expanding these sequences.  Therefore you can concatenate them together
  or combine them with constant text in a single argument.
  
! â€˜%%â€™
!      Substitute one â€˜%â€™ into the program name or argument.
  
! â€˜%"â€™
       Substitute an empty argument.
  
! â€˜%iâ€™
       Substitute the name of the input file being processed.
  
! â€˜%bâ€™
       Substitute the basename for outputs related with the input file
       being processed.  This is often the substring up to (and not
       including) the last period and not including the directory but,
*************** or combine them with constant text in a
*** 33924,34129 ****
       outputs, which may be influenced by an explicit output name, and by
       various other options that control how auxiliary outputs are named.
  
! '%B'
!      This is the same as '%b', but include the file suffix (text after
       the last period).  Without %w, it expands to the basename for dump
       outputs.
  
! '%d'
!      Marks the argument containing or following the '%d' as a temporary
       file name, so that that file is deleted if GCC exits successfully.
!      Unlike '%g', this contributes no text to the argument.
  
! '%gSUFFIX'
       Substitute a file name that has suffix SUFFIX and is chosen once
!      per compilation, and mark the argument in the same way as '%d'.  To
       reduce exposure to denial-of-service attacks, the file name is now
       chosen in a way that is hard to predict even when previously chosen
!      file names are known.  For example, '%g.s ... %g.o ... %g.s' might
!      turn into 'ccUVUUAU.s ccXYAXZ12.o ccUVUUAU.s'.  SUFFIX matches the
!      regexp '[.A-Za-z]*' or the special string '%O', which is treated
!      exactly as if '%O' had been preprocessed.  Previously, '%g' was
       simply substituted with a file name chosen once per compilation,
       without regard to any appended suffix (which was therefore treated
       just like ordinary text), making such attacks more likely to
       succeed.
  
! '%uSUFFIX'
!      Like '%g', but generates a new temporary file name each time it
       appears instead of once per compilation.
  
! '%USUFFIX'
!      Substitutes the last file name generated with '%uSUFFIX',
       generating a new one if there is no such last file name.  In the
!      absence of any '%uSUFFIX', this is just like '%gSUFFIX', except
!      they don't share the same suffix _space_, so '%g.s ... %U.s ...
!      %g.s ... %U.s' involves the generation of two distinct file names,
!      one for each '%g.s' and another for each '%U.s'.  Previously, '%U'
       was simply substituted with a file name chosen for the previous
!      '%u', without regard to any appended suffix.
  
! '%jSUFFIX'
!      Substitutes the name of the 'HOST_BIT_BUCKET', if any, and if it is
!      writable, and if '-save-temps' is not used; otherwise, substitute
!      the name of a temporary file, just like '%u'.  This temporary file
       is not meant for communication between processes, but rather as a
       junk disposal mechanism.
  
! '%|SUFFIX'
! '%mSUFFIX'
!      Like '%g', except if '-pipe' is in effect.  In that case '%|'
!      substitutes a single dash and '%m' substitutes nothing at all.
       These are the two most common ways to instruct a program that it
       should read from standard input or write to standard output.  If
!      you need something more elaborate you can use an '%{pipe:'X'}'
!      construct: see for example 'gcc/fortran/lang-specs.h'.
  
! '%.SUFFIX'
       Substitutes .SUFFIX for the suffixes of a matched switch's args
!      when it is subsequently output with '%*'.  SUFFIX is terminated by
       the next space or %.
  
! '%w'
!      Marks the argument containing or following the '%w' as the
       designated output file of this compilation.  This puts the argument
!      into the sequence of arguments that '%o' substitutes.
  
! '%V'
       Indicates that this compilation produces no output file.
  
! '%o'
       Substitutes the names of all the output files, with spaces
       automatically placed around them.  You should write spaces around
!      the '%o' as well or the results are undefined.  '%o' is for use in
       the specs for running the linker.  Input files whose names have no
       recognized suffix are not compiled at all, but they are included
       among the output files, so they are linked.
  
! '%O'
       Substitutes the suffix for object files.  Note that this is handled
!      specially when it immediately follows '%g, %u, or %U', because of
       the need for those to form complete file names.  The handling is
!      such that '%O' is treated exactly as if it had already been
!      substituted, except that '%g, %u, and %U' do not currently support
!      additional SUFFIX characters following '%O' as they do following,
!      for example, '.o'.
  
! '%I'
!      Substitute any of '-iprefix' (made from 'GCC_EXEC_PREFIX'),
!      '-isysroot' (made from 'TARGET_SYSTEM_ROOT'), '-isystem' (made from
!      'COMPILER_PATH' and '-B' options) and '-imultilib' as necessary.
  
! '%s'
       Current argument is the name of a library or startup file of some
       sort.  Search for that file in a standard list of directories and
       substitute the full name found.  The current working directory is
       included in the list of directories scanned.
  
! '%T'
       Current argument is the name of a linker script.  Search for that
       file in the current list of directories to scan for libraries.  If
!      the file is located insert a '--script' option into the command
       line followed by the full path name found.  If the file is not
       found then generate an error message.  Note: the current working
       directory is not searched.
  
! '%eSTR'
       Print STR as an error message.  STR is terminated by a newline.
       Use this when inconsistent options are detected.
  
! '%nSTR'
       Print STR as a notice.  STR is terminated by a newline.
  
! '%(NAME)'
       Substitute the contents of spec string NAME at this point.
  
! '%x{OPTION}'
!      Accumulate an option for '%X'.
  
! '%X'
!      Output the accumulated linker options specified by a '%x' spec
       string.
  
! '%Y'
!      Output the accumulated assembler options specified by '-Wa'.
  
! '%Z'
!      Output the accumulated preprocessor options specified by '-Wp'.
  
! '%M'
!      Output 'multilib_os_dir'.
  
! '%R'
!      Output the concatenation of 'target_system_root' and
!      'target_sysroot_suffix'.
  
! '%a'
!      Process the 'asm' spec.  This is used to compute the switches to be
       passed to the assembler.
  
! '%A'
!      Process the 'asm_final' spec.  This is a spec string for passing
       switches to an assembler post-processor, if such a program is
       needed.
  
! '%l'
!      Process the 'link' spec.  This is the spec for computing the
       command line passed to the linker.  Typically it makes use of the
!      '%L %G %S %D and %E' sequences.
  
! '%D'
!      Dump out a '-L' option for each directory that GCC believes might
       contain startup files.  If the target supports multilibs then the
       current multilib directory is prepended to each of these paths.
  
! '%L'
!      Process the 'lib' spec.  This is a spec string for deciding which
       libraries are included on the command line to the linker.
  
! '%G'
!      Process the 'libgcc' spec.  This is a spec string for deciding
       which GCC support library is included on the command line to the
       linker.
  
! '%S'
!      Process the 'startfile' spec.  This is a spec for deciding which
       object files are the first ones passed to the linker.  Typically
!      this might be a file named 'crt0.o'.
  
! '%E'
!      Process the 'endfile' spec.  This is a spec string that specifies
       the last object files that are passed to the linker.
  
! '%C'
!      Process the 'cpp' spec.  This is used to construct the arguments to
       be passed to the C preprocessor.
  
! '%1'
!      Process the 'cc1' spec.  This is used to construct the options to
!      be passed to the actual C compiler ('cc1').
  
! '%2'
!      Process the 'cc1plus' spec.  This is used to construct the options
!      to be passed to the actual C++ compiler ('cc1plus').
  
! '%*'
       Substitute the variable part of a matched option.  See below.  Note
       that each comma in the substituted string is replaced by a single
       space.
  
! '%<S'
!      Remove all occurrences of '-S' from the command line.  Note--this
!      command is position dependent.  '%' commands in the spec string
!      before this one see '-S', '%' commands in the spec string after
       this one do not.
  
! '%<S*'
!      Similar to '%<S', but match all switches beginning with '-S'.
  
! '%>S'
!      Similar to '%<S', but keep '-S' in the GCC command line.
  
! '%:FUNCTION(ARGS)'
       Call the named function FUNCTION, passing it ARGS.  ARGS is first
       processed as a nested spec string, then split into an argument
       vector in the usual fashion.  The function returns a string which
--- 33932,34137 ----
       outputs, which may be influenced by an explicit output name, and by
       various other options that control how auxiliary outputs are named.
  
! â€˜%Bâ€™
!      This is the same as â€˜%bâ€™, but include the file suffix (text after
       the last period).  Without %w, it expands to the basename for dump
       outputs.
  
! â€˜%dâ€™
!      Marks the argument containing or following the â€˜%dâ€™ as a temporary
       file name, so that that file is deleted if GCC exits successfully.
!      Unlike â€˜%gâ€™, this contributes no text to the argument.
  
! â€˜%gSUFFIXâ€™
       Substitute a file name that has suffix SUFFIX and is chosen once
!      per compilation, and mark the argument in the same way as â€˜%dâ€™.  To
       reduce exposure to denial-of-service attacks, the file name is now
       chosen in a way that is hard to predict even when previously chosen
!      file names are known.  For example, â€˜%g.s ... %g.o ... %g.sâ€™ might
!      turn into â€˜ccUVUUAU.s ccXYAXZ12.o ccUVUUAU.sâ€™.  SUFFIX matches the
!      regexp â€˜[.A-Za-z]*â€™ or the special string â€˜%Oâ€™, which is treated
!      exactly as if â€˜%Oâ€™ had been preprocessed.  Previously, â€˜%gâ€™ was
       simply substituted with a file name chosen once per compilation,
       without regard to any appended suffix (which was therefore treated
       just like ordinary text), making such attacks more likely to
       succeed.
  
! â€˜%uSUFFIXâ€™
!      Like â€˜%gâ€™, but generates a new temporary file name each time it
       appears instead of once per compilation.
  
! â€˜%USUFFIXâ€™
!      Substitutes the last file name generated with â€˜%uSUFFIXâ€™,
       generating a new one if there is no such last file name.  In the
!      absence of any â€˜%uSUFFIXâ€™, this is just like â€˜%gSUFFIXâ€™, except
!      they don't share the same suffix _space_, so â€˜%g.s ... %U.s ...
!      %g.s ... %U.sâ€™ involves the generation of two distinct file names,
!      one for each â€˜%g.sâ€™ and another for each â€˜%U.sâ€™.  Previously, â€˜%Uâ€™
       was simply substituted with a file name chosen for the previous
!      â€˜%uâ€™, without regard to any appended suffix.
  
! â€˜%jSUFFIXâ€™
!      Substitutes the name of the â€˜HOST_BIT_BUCKETâ€™, if any, and if it is
!      writable, and if â€˜-save-tempsâ€™ is not used; otherwise, substitute
!      the name of a temporary file, just like â€˜%uâ€™.  This temporary file
       is not meant for communication between processes, but rather as a
       junk disposal mechanism.
  
! â€˜%|SUFFIXâ€™
! â€˜%mSUFFIXâ€™
!      Like â€˜%gâ€™, except if â€˜-pipeâ€™ is in effect.  In that case â€˜%|â€™
!      substitutes a single dash and â€˜%mâ€™ substitutes nothing at all.
       These are the two most common ways to instruct a program that it
       should read from standard input or write to standard output.  If
!      you need something more elaborate you can use an â€˜%{pipe:â€˜Xâ€™}â€™
!      construct: see for example â€˜gcc/fortran/lang-specs.hâ€™.
  
! â€˜%.SUFFIXâ€™
       Substitutes .SUFFIX for the suffixes of a matched switch's args
!      when it is subsequently output with â€˜%*â€™.  SUFFIX is terminated by
       the next space or %.
  
! â€˜%wâ€™
!      Marks the argument containing or following the â€˜%wâ€™ as the
       designated output file of this compilation.  This puts the argument
!      into the sequence of arguments that â€˜%oâ€™ substitutes.
  
! â€˜%Vâ€™
       Indicates that this compilation produces no output file.
  
! â€˜%oâ€™
       Substitutes the names of all the output files, with spaces
       automatically placed around them.  You should write spaces around
!      the â€˜%oâ€™ as well or the results are undefined.  â€˜%oâ€™ is for use in
       the specs for running the linker.  Input files whose names have no
       recognized suffix are not compiled at all, but they are included
       among the output files, so they are linked.
  
! â€˜%Oâ€™
       Substitutes the suffix for object files.  Note that this is handled
!      specially when it immediately follows â€˜%g, %u, or %Uâ€™, because of
       the need for those to form complete file names.  The handling is
!      such that â€˜%Oâ€™ is treated exactly as if it had already been
!      substituted, except that â€˜%g, %u, and %Uâ€™ do not currently support
!      additional SUFFIX characters following â€˜%Oâ€™ as they do following,
!      for example, â€˜.oâ€™.
  
! â€˜%Iâ€™
!      Substitute any of â€˜-iprefixâ€™ (made from â€˜GCC_EXEC_PREFIXâ€™),
!      â€˜-isysrootâ€™ (made from â€˜TARGET_SYSTEM_ROOTâ€™), â€˜-isystemâ€™ (made from
!      â€˜COMPILER_PATHâ€™ and â€˜-Bâ€™ options) and â€˜-imultilibâ€™ as necessary.
  
! â€˜%sâ€™
       Current argument is the name of a library or startup file of some
       sort.  Search for that file in a standard list of directories and
       substitute the full name found.  The current working directory is
       included in the list of directories scanned.
  
! â€˜%Tâ€™
       Current argument is the name of a linker script.  Search for that
       file in the current list of directories to scan for libraries.  If
!      the file is located insert a â€˜--scriptâ€™ option into the command
       line followed by the full path name found.  If the file is not
       found then generate an error message.  Note: the current working
       directory is not searched.
  
! â€˜%eSTRâ€™
       Print STR as an error message.  STR is terminated by a newline.
       Use this when inconsistent options are detected.
  
! â€˜%nSTRâ€™
       Print STR as a notice.  STR is terminated by a newline.
  
! â€˜%(NAME)â€™
       Substitute the contents of spec string NAME at this point.
  
! â€˜%x{OPTION}â€™
!      Accumulate an option for â€˜%Xâ€™.
  
! â€˜%Xâ€™
!      Output the accumulated linker options specified by a â€˜%xâ€™ spec
       string.
  
! â€˜%Yâ€™
!      Output the accumulated assembler options specified by â€˜-Waâ€™.
  
! â€˜%Zâ€™
!      Output the accumulated preprocessor options specified by â€˜-Wpâ€™.
  
! â€˜%Mâ€™
!      Output â€˜multilib_os_dirâ€™.
  
! â€˜%Râ€™
!      Output the concatenation of â€˜target_system_rootâ€™ and
!      â€˜target_sysroot_suffixâ€™.
  
! â€˜%aâ€™
!      Process the â€˜asmâ€™ spec.  This is used to compute the switches to be
       passed to the assembler.
  
! â€˜%Aâ€™
!      Process the â€˜asm_finalâ€™ spec.  This is a spec string for passing
       switches to an assembler post-processor, if such a program is
       needed.
  
! â€˜%lâ€™
!      Process the â€˜linkâ€™ spec.  This is the spec for computing the
       command line passed to the linker.  Typically it makes use of the
!      â€˜%L %G %S %D and %Eâ€™ sequences.
  
! â€˜%Dâ€™
!      Dump out a â€˜-Lâ€™ option for each directory that GCC believes might
       contain startup files.  If the target supports multilibs then the
       current multilib directory is prepended to each of these paths.
  
! â€˜%Lâ€™
!      Process the â€˜libâ€™ spec.  This is a spec string for deciding which
       libraries are included on the command line to the linker.
  
! â€˜%Gâ€™
!      Process the â€˜libgccâ€™ spec.  This is a spec string for deciding
       which GCC support library is included on the command line to the
       linker.
  
! â€˜%Sâ€™
!      Process the â€˜startfileâ€™ spec.  This is a spec for deciding which
       object files are the first ones passed to the linker.  Typically
!      this might be a file named â€˜crt0.oâ€™.
  
! â€˜%Eâ€™
!      Process the â€˜endfileâ€™ spec.  This is a spec string that specifies
       the last object files that are passed to the linker.
  
! â€˜%Câ€™
!      Process the â€˜cppâ€™ spec.  This is used to construct the arguments to
       be passed to the C preprocessor.
  
! â€˜%1â€™
!      Process the â€˜cc1â€™ spec.  This is used to construct the options to
!      be passed to the actual C compiler (â€˜cc1â€™).
  
! â€˜%2â€™
!      Process the â€˜cc1plusâ€™ spec.  This is used to construct the options
!      to be passed to the actual C++ compiler (â€˜cc1plusâ€™).
  
! â€˜%*â€™
       Substitute the variable part of a matched option.  See below.  Note
       that each comma in the substituted string is replaced by a single
       space.
  
! â€˜%<Sâ€™
!      Remove all occurrences of â€˜-Sâ€™ from the command line.  Note--this
!      command is position dependent.  â€˜%â€™ commands in the spec string
!      before this one see â€˜-Sâ€™, â€˜%â€™ commands in the spec string after
       this one do not.
  
! â€˜%<S*â€™
!      Similar to â€˜%<Sâ€™, but match all switches beginning with â€˜-Sâ€™.
  
! â€˜%>Sâ€™
!      Similar to â€˜%<Sâ€™, but keep â€˜-Sâ€™ in the GCC command line.
  
! â€˜%:FUNCTION(ARGS)â€™
       Call the named function FUNCTION, passing it ARGS.  ARGS is first
       processed as a nested spec string, then split into an argument
       vector in the usual fashion.  The function returns a string which
*************** or combine them with constant text in a
*** 34132,34164 ****
  
       The following built-in spec functions are provided:
  
!      'getenv'
!           The 'getenv' spec function takes two arguments: an environment
            variable name and a string.  If the environment variable is
            not defined, a fatal error is issued.  Otherwise, the return
            value is the value of the environment variable concatenated
!           with the string.  For example, if 'TOPDIR' is defined as
!           '/path/to/top', then:
  
                 %:getenv(TOPDIR /include)
  
!           expands to '/path/to/top/include'.
  
!      'if-exists'
!           The 'if-exists' spec function takes one argument, an absolute
!           pathname to a file.  If the file exists, 'if-exists' returns
            the pathname.  Here is a small example of its usage:
  
                 *startfile:
                 crt0%O%s %:if-exists(crti%O%s) crtbegin%O%s
  
!      'if-exists-else'
!           The 'if-exists-else' spec function is similar to the
!           'if-exists' spec function, except that it takes two arguments.
            The first argument is an absolute pathname to a file.  If the
!           file exists, 'if-exists-else' returns the pathname.  If it
            does not exist, it returns the second argument.  This way,
!           'if-exists-else' can be used to select one file or another,
            based on the existence of the first.  Here is a small example
            of its usage:
  
--- 34140,34172 ----
  
       The following built-in spec functions are provided:
  
!      â€˜getenvâ€™
!           The â€˜getenvâ€™ spec function takes two arguments: an environment
            variable name and a string.  If the environment variable is
            not defined, a fatal error is issued.  Otherwise, the return
            value is the value of the environment variable concatenated
!           with the string.  For example, if â€˜TOPDIRâ€™ is defined as
!           â€˜/path/to/topâ€™, then:
  
                 %:getenv(TOPDIR /include)
  
!           expands to â€˜/path/to/top/includeâ€™.
  
!      â€˜if-existsâ€™
!           The â€˜if-existsâ€™ spec function takes one argument, an absolute
!           pathname to a file.  If the file exists, â€˜if-existsâ€™ returns
            the pathname.  Here is a small example of its usage:
  
                 *startfile:
                 crt0%O%s %:if-exists(crti%O%s) crtbegin%O%s
  
!      â€˜if-exists-elseâ€™
!           The â€˜if-exists-elseâ€™ spec function is similar to the
!           â€˜if-existsâ€™ spec function, except that it takes two arguments.
            The first argument is an absolute pathname to a file.  If the
!           file exists, â€˜if-exists-elseâ€™ returns the pathname.  If it
            does not exist, it returns the second argument.  This way,
!           â€˜if-exists-elseâ€™ can be used to select one file or another,
            based on the existence of the first.  Here is a small example
            of its usage:
  
*************** or combine them with constant text in a
*** 34166,34173 ****
                 crt0%O%s %:if-exists(crti%O%s) \
                 %:if-exists-else(crtbeginT%O%s crtbegin%O%s)
  
!      'if-exists-then-else'
!           The 'if-exists-then-else' spec function takes at least two
            arguments and an optional third one.  The first argument is an
            absolute pathname to a file.  If the file exists, the function
            returns the second argument.  If the file does not exist, the
--- 34174,34181 ----
                 crt0%O%s %:if-exists(crti%O%s) \
                 %:if-exists-else(crtbeginT%O%s crtbegin%O%s)
  
!      â€˜if-exists-then-elseâ€™
!           The â€˜if-exists-then-elseâ€™ spec function takes at least two
            arguments and an optional third one.  The first argument is an
            absolute pathname to a file.  If the file exists, the function
            returns the second argument.  If the file does not exist, the
*************** or combine them with constant text in a
*** 34178,34263 ****
  
                 -l%:if-exists-then-else(%:getenv(VSB_DIR rtnet.h) rtnet net)
  
!      'sanitize'
!           The 'sanitize' spec function takes no arguments.  It returns
            non-NULL if any address, thread or undefined behavior
            sanitizers are active.
  
                 %{%:sanitize(address):-funwind-tables}
  
!      'replace-outfile'
!           The 'replace-outfile' spec function takes two arguments.  It
            looks for the first argument in the outfiles array and
            replaces it with the second argument.  Here is a small example
            of its usage:
  
                 %{fgnu-runtime:%:replace-outfile(-lobjc -lobjc-gnu)}
  
!      'remove-outfile'
!           The 'remove-outfile' spec function takes one argument.  It
            looks for the first argument in the outfiles array and removes
            it.  Here is a small example its usage:
  
                 %:remove-outfile(-lm)
  
!      'version-compare'
!           The 'version-compare' spec function takes four or five
            arguments of the following form:
  
                 <comparison-op> <arg1> [<arg2>] <switch> <result>
  
!           It returns 'result' if the comparison evaluates to true, and
!           NULL if it doesn't.  The supported 'comparison-op' values are:
  
!           '>='
!                True if 'switch' is a later (or same) version than 'arg1'
  
!           '!>'
!                Opposite of '>='
  
!           '<'
!                True if 'switch' is an earlier version than 'arg1'
  
!           '!<'
!                Opposite of '<'
  
!           '><'
!                True if 'switch' is 'arg1' or later, and earlier than
!                'arg2'
  
!           '<>'
!                True if 'switch' is earlier than 'arg1', or is 'arg2' or
                 later
  
!           If the 'switch' is not present at all, the condition is false
!           unless the first character of the 'comparison-op' is '!'.
  
                 %:version-compare(>= 10.3 mmacosx-version-min= -lmx)
  
!           The above example would add '-lmx' if
!           '-mmacosx-version-min=10.3.9' was passed.
  
!      'include'
!           The 'include' spec function behaves much like '%include', with
            the advantage that it can be nested inside a spec and thus be
            conditionalized.  It takes one argument, the filename, and
            looks for it in the startfile path.  It always returns NULL.
  
                 %{static-libasan|static:%:include(libsanitizer.spec)%(link_libasan)}
  
!      'pass-through-libs'
!           The 'pass-through-libs' spec function takes any number of
!           arguments.  It finds any '-l' options and any non-options
!           ending in '.a' (which it assumes are the names of linker input
            library archive files) and returns a result containing all the
!           found arguments each prepended by '-plugin-opt=-pass-through='
            and joined by spaces.  This list is intended to be passed to
            the LTO linker plugin.
  
                 %:pass-through-libs(%G %L %G)
  
!      'print-asm-header'
!           The 'print-asm-header' function takes no arguments and simply
            prints a banner like:
  
                 Assembler options
--- 34186,34271 ----
  
                 -l%:if-exists-then-else(%:getenv(VSB_DIR rtnet.h) rtnet net)
  
!      â€˜sanitizeâ€™
!           The â€˜sanitizeâ€™ spec function takes no arguments.  It returns
            non-NULL if any address, thread or undefined behavior
            sanitizers are active.
  
                 %{%:sanitize(address):-funwind-tables}
  
!      â€˜replace-outfileâ€™
!           The â€˜replace-outfileâ€™ spec function takes two arguments.  It
            looks for the first argument in the outfiles array and
            replaces it with the second argument.  Here is a small example
            of its usage:
  
                 %{fgnu-runtime:%:replace-outfile(-lobjc -lobjc-gnu)}
  
!      â€˜remove-outfileâ€™
!           The â€˜remove-outfileâ€™ spec function takes one argument.  It
            looks for the first argument in the outfiles array and removes
            it.  Here is a small example its usage:
  
                 %:remove-outfile(-lm)
  
!      â€˜version-compareâ€™
!           The â€˜version-compareâ€™ spec function takes four or five
            arguments of the following form:
  
                 <comparison-op> <arg1> [<arg2>] <switch> <result>
  
!           It returns â€˜resultâ€™ if the comparison evaluates to true, and
!           NULL if it doesn't.  The supported â€˜comparison-opâ€™ values are:
  
!           â€˜>=â€™
!                True if â€˜switchâ€™ is a later (or same) version than â€˜arg1â€™
  
!           â€˜!>â€™
!                Opposite of â€˜>=â€™
  
!           â€˜<â€™
!                True if â€˜switchâ€™ is an earlier version than â€˜arg1â€™
  
!           â€˜!<â€™
!                Opposite of â€˜<â€™
  
!           â€˜><â€™
!                True if â€˜switchâ€™ is â€˜arg1â€™ or later, and earlier than
!                â€˜arg2â€™
  
!           â€˜<>â€™
!                True if â€˜switchâ€™ is earlier than â€˜arg1â€™, or is â€˜arg2â€™ or
                 later
  
!           If the â€˜switchâ€™ is not present at all, the condition is false
!           unless the first character of the â€˜comparison-opâ€™ is â€˜!â€™.
  
                 %:version-compare(>= 10.3 mmacosx-version-min= -lmx)
  
!           The above example would add â€˜-lmxâ€™ if
!           â€˜-mmacosx-version-min=10.3.9â€™ was passed.
  
!      â€˜includeâ€™
!           The â€˜includeâ€™ spec function behaves much like â€˜%includeâ€™, with
            the advantage that it can be nested inside a spec and thus be
            conditionalized.  It takes one argument, the filename, and
            looks for it in the startfile path.  It always returns NULL.
  
                 %{static-libasan|static:%:include(libsanitizer.spec)%(link_libasan)}
  
!      â€˜pass-through-libsâ€™
!           The â€˜pass-through-libsâ€™ spec function takes any number of
!           arguments.  It finds any â€˜-lâ€™ options and any non-options
!           ending in â€˜.aâ€™ (which it assumes are the names of linker input
            library archive files) and returns a result containing all the
!           found arguments each prepended by â€˜-plugin-opt=-pass-through=â€™
            and joined by spaces.  This list is intended to be passed to
            the LTO linker plugin.
  
                 %:pass-through-libs(%G %L %G)
  
!      â€˜print-asm-headerâ€™
!           The â€˜print-asm-headerâ€™ function takes no arguments and simply
            prints a banner like:
  
                 Assembler options
*************** or combine them with constant text in a
*** 34266,34361 ****
                 Use "-Wa,OPTION" to pass "OPTION" to the assembler.
  
            It is used to separate compiler options from assembler options
!           in the '--target-help' output.
  
!      'gt'
!           The 'gt' spec function takes two or more arguments.  It
!           returns '""' (the empty string) if the second-to-last argument
            is greater than the last argument, and NULL otherwise.  The
!           following example inserts the 'link_gomp' spec if the last
!           '-ftree-parallelize-loops=' option given on the command line
            is greater than 1:
  
                 %{%:gt(%{ftree-parallelize-loops=*:%*} 1):%:include(libgomp.spec)%(link_gomp)}
  
!      'debug-level-gt'
!           The 'debug-level-gt' spec function takes one argument and
!           returns '""' (the empty string) if 'debug_info_level' is
            greater than the specified number, and NULL otherwise.
  
                 %{%:debug-level-gt(0):%{gdwarf*:--gdwarf2}}
  
! '%{S}'
!      Substitutes the '-S' switch, if that switch is given to GCC.  If
       that switch is not specified, this substitutes nothing.  Note that
       the leading dash is omitted when specifying this option, and it is
       automatically inserted if the substitution is performed.  Thus the
!      spec string '%{foo}' matches the command-line option '-foo' and
!      outputs the command-line option '-foo'.
  
! '%W{S}'
!      Like %{'S'} but mark last argument supplied within as a file to be
       deleted on failure.
  
! '%@{S}'
!      Like %{'S'} but puts the result into a 'FILE' and substitutes
!      '@FILE' if an '@file' argument has been supplied.
  
! '%{S*}'
       Substitutes all the switches specified to GCC whose names start
!      with '-S', but which also take an argument.  This is used for
!      switches like '-o', '-D', '-I', etc.  GCC considers '-o foo' as
!      being one switch whose name starts with 'o'.  %{o*} substitutes
       this text, including the space.  Thus two arguments are generated.
  
! '%{S*&T*}'
!      Like %{'S'*}, but preserve order of 'S' and 'T' options (the order
!      of 'S' and 'T' in the spec is not significant).  There can be any
       number of ampersand-separated variables; for each the wild card is
!      optional.  Useful for CPP as '%{D*&U*&A*}'.
  
! '%{S:X}'
!      Substitutes 'X', if the '-S' switch is given to GCC.
  
! '%{!S:X}'
!      Substitutes 'X', if the '-S' switch is _not_ given to GCC.
  
! '%{S*:X}'
!      Substitutes 'X' if one or more switches whose names start with '-S'
!      are specified to GCC.  Normally 'X' is substituted only once, no
!      matter how many such switches appeared.  However, if '%*' appears
!      somewhere in 'X', then 'X' is substituted once for each matching
!      switch, with the '%*' replaced by the part of that switch matching
!      the '*'.
  
!      If '%*' appears as the last part of a spec sequence then a space is
       added after the end of the last substitution.  If there is more
       text in the sequence, however, then a space is not generated.  This
!      allows the '%*' substitution to be used as part of a larger string.
       For example, a spec string like this:
  
            %{mcu=*:--script=%*/memory.ld}
  
!      when matching an option like '-mcu=newchip' produces:
  
            --script=newchip/memory.ld
  
! '%{.S:X}'
!      Substitutes 'X', if processing a file with suffix 'S'.
  
! '%{!.S:X}'
!      Substitutes 'X', if _not_ processing a file with suffix 'S'.
  
! '%{,S:X}'
!      Substitutes 'X', if processing a file for language 'S'.
  
! '%{!,S:X}'
!      Substitutes 'X', if not processing a file for language 'S'.
  
! '%{S|P:X}'
!      Substitutes 'X' if either '-S' or '-P' is given to GCC.  This may
!      be combined with '!', '.', ',', and '*' sequences as well, although
!      they have a stronger binding than the '|'.  If '%*' appears in 'X',
       all of the alternatives must be starred, and only the first
       matching alternative is substituted.
  
--- 34274,34369 ----
                 Use "-Wa,OPTION" to pass "OPTION" to the assembler.
  
            It is used to separate compiler options from assembler options
!           in the â€˜--target-helpâ€™ output.
  
!      â€˜gtâ€™
!           The â€˜gtâ€™ spec function takes two or more arguments.  It
!           returns â€˜""â€™ (the empty string) if the second-to-last argument
            is greater than the last argument, and NULL otherwise.  The
!           following example inserts the â€˜link_gompâ€™ spec if the last
!           â€˜-ftree-parallelize-loops=â€™ option given on the command line
            is greater than 1:
  
                 %{%:gt(%{ftree-parallelize-loops=*:%*} 1):%:include(libgomp.spec)%(link_gomp)}
  
!      â€˜debug-level-gtâ€™
!           The â€˜debug-level-gtâ€™ spec function takes one argument and
!           returns â€˜""â€™ (the empty string) if â€˜debug_info_levelâ€™ is
            greater than the specified number, and NULL otherwise.
  
                 %{%:debug-level-gt(0):%{gdwarf*:--gdwarf2}}
  
! â€˜%{S}â€™
!      Substitutes the â€˜-Sâ€™ switch, if that switch is given to GCC.  If
       that switch is not specified, this substitutes nothing.  Note that
       the leading dash is omitted when specifying this option, and it is
       automatically inserted if the substitution is performed.  Thus the
!      spec string â€˜%{foo}â€™ matches the command-line option â€˜-fooâ€™ and
!      outputs the command-line option â€˜-fooâ€™.
  
! â€˜%W{S}â€™
!      Like %{â€˜Sâ€™} but mark last argument supplied within as a file to be
       deleted on failure.
  
! â€˜%@{S}â€™
!      Like %{â€˜Sâ€™} but puts the result into a â€˜FILEâ€™ and substitutes
!      â€˜@FILEâ€™ if an â€˜@fileâ€™ argument has been supplied.
  
! â€˜%{S*}â€™
       Substitutes all the switches specified to GCC whose names start
!      with â€˜-Sâ€™, but which also take an argument.  This is used for
!      switches like â€˜-oâ€™, â€˜-Dâ€™, â€˜-Iâ€™, etc.  GCC considers â€˜-o fooâ€™ as
!      being one switch whose name starts with â€˜oâ€™.  %{o*} substitutes
       this text, including the space.  Thus two arguments are generated.
  
! â€˜%{S*&T*}â€™
!      Like %{â€˜Sâ€™*}, but preserve order of â€˜Sâ€™ and â€˜Tâ€™ options (the order
!      of â€˜Sâ€™ and â€˜Tâ€™ in the spec is not significant).  There can be any
       number of ampersand-separated variables; for each the wild card is
!      optional.  Useful for CPP as â€˜%{D*&U*&A*}â€™.
  
! â€˜%{S:X}â€™
!      Substitutes â€˜Xâ€™, if the â€˜-Sâ€™ switch is given to GCC.
  
! â€˜%{!S:X}â€™
!      Substitutes â€˜Xâ€™, if the â€˜-Sâ€™ switch is _not_ given to GCC.
  
! â€˜%{S*:X}â€™
!      Substitutes â€˜Xâ€™ if one or more switches whose names start with â€˜-Sâ€™
!      are specified to GCC.  Normally â€˜Xâ€™ is substituted only once, no
!      matter how many such switches appeared.  However, if â€˜%*â€™ appears
!      somewhere in â€˜Xâ€™, then â€˜Xâ€™ is substituted once for each matching
!      switch, with the â€˜%*â€™ replaced by the part of that switch matching
!      the â€˜*â€™.
  
!      If â€˜%*â€™ appears as the last part of a spec sequence then a space is
       added after the end of the last substitution.  If there is more
       text in the sequence, however, then a space is not generated.  This
!      allows the â€˜%*â€™ substitution to be used as part of a larger string.
       For example, a spec string like this:
  
            %{mcu=*:--script=%*/memory.ld}
  
!      when matching an option like â€˜-mcu=newchipâ€™ produces:
  
            --script=newchip/memory.ld
  
! â€˜%{.S:X}â€™
!      Substitutes â€˜Xâ€™, if processing a file with suffix â€˜Sâ€™.
  
! â€˜%{!.S:X}â€™
!      Substitutes â€˜Xâ€™, if _not_ processing a file with suffix â€˜Sâ€™.
  
! â€˜%{,S:X}â€™
!      Substitutes â€˜Xâ€™, if processing a file for language â€˜Sâ€™.
  
! â€˜%{!,S:X}â€™
!      Substitutes â€˜Xâ€™, if not processing a file for language â€˜Sâ€™.
  
! â€˜%{S|P:X}â€™
!      Substitutes â€˜Xâ€™ if either â€˜-Sâ€™ or â€˜-Pâ€™ is given to GCC.  This may
!      be combined with â€˜!â€™, â€˜.â€™, â€˜,â€™, and â€˜*â€™ sequences as well, although
!      they have a stronger binding than the â€˜|â€™.  If â€˜%*â€™ appears in â€˜Xâ€™,
       all of the alternatives must be starred, and only the first
       matching alternative is substituted.
  
*************** or combine them with constant text in a
*** 34371,34411 ****
            -d fred.c     -foo -baz -boggle
            -d jim.d      -bar -baz -boggle
  
! '%{%:FUNCTION(ARGS):X}'
  
       Call function named FUNCTION with args ARGS.  If the function
!      returns non-NULL, then 'X' is substituted, if it returns NULL, it
       isn't substituted.
  
! '%{S:X; T:Y; :D}'
  
!      If 'S' is given to GCC, substitutes 'X'; else if 'T' is given to
!      GCC, substitutes 'Y'; else substitutes 'D'.  There can be as many
!      clauses as you need.  This may be combined with '.', ',', '!', '|',
!      and '*' as needed.
  
!  The switch matching text 'S' in a '%{S}', '%{S:X}' or similar construct
  can use a backslash to ignore the special meaning of the character
  following it, thus allowing literal matching of a character that is
! otherwise specially treated.  For example, '%{std=iso9899\:1999:X}'
! substitutes 'X' if the '-std=iso9899:1999' option is given.
  
!  The conditional text 'X' in a '%{S:X}' or similar construct may contain
! other nested '%' constructs or spaces, or even newlines.  They are
! processed as usual, as described above.  Trailing white space in 'X' is
  ignored.  White space may also appear anywhere on the left side of the
! colon in these constructs, except between '.' or '*' and the
  corresponding word.
  
!  The '-O', '-f', '-m', and '-W' switches are handled specifically in
! these constructs.  If another value of '-O' or the negated form of a
! '-f', '-m', or '-W' switch is found later in the command line, the
! earlier switch value is ignored, except with {'S'*} where 'S' is just
  one letter, which passes all matching options.
  
!  The character '|' at the beginning of the predicate text is used to
  indicate that a command should be piped to the following command, but
! only if '-pipe' is specified.
  
   It is built into GCC which switches take arguments and which do not.
  (You might think it would be useful to generalize this to allow each
--- 34379,34419 ----
            -d fred.c     -foo -baz -boggle
            -d jim.d      -bar -baz -boggle
  
! â€˜%{%:FUNCTION(ARGS):X}â€™
  
       Call function named FUNCTION with args ARGS.  If the function
!      returns non-NULL, then â€˜Xâ€™ is substituted, if it returns NULL, it
       isn't substituted.
  
! â€˜%{S:X; T:Y; :D}â€™
  
!      If â€˜Sâ€™ is given to GCC, substitutes â€˜Xâ€™; else if â€˜Tâ€™ is given to
!      GCC, substitutes â€˜Yâ€™; else substitutes â€˜Dâ€™.  There can be as many
!      clauses as you need.  This may be combined with â€˜.â€™, â€˜,â€™, â€˜!â€™, â€˜|â€™,
!      and â€˜*â€™ as needed.
  
!  The switch matching text â€˜Sâ€™ in a â€˜%{S}â€™, â€˜%{S:X}â€™ or similar construct
  can use a backslash to ignore the special meaning of the character
  following it, thus allowing literal matching of a character that is
! otherwise specially treated.  For example, â€˜%{std=iso9899\:1999:X}â€™
! substitutes â€˜Xâ€™ if the â€˜-std=iso9899:1999â€™ option is given.
  
!  The conditional text â€˜Xâ€™ in a â€˜%{S:X}â€™ or similar construct may contain
! other nested â€˜%â€™ constructs or spaces, or even newlines.  They are
! processed as usual, as described above.  Trailing white space in â€˜Xâ€™ is
  ignored.  White space may also appear anywhere on the left side of the
! colon in these constructs, except between â€˜.â€™ or â€˜*â€™ and the
  corresponding word.
  
!  The â€˜-Oâ€™, â€˜-fâ€™, â€˜-mâ€™, and â€˜-Wâ€™ switches are handled specifically in
! these constructs.  If another value of â€˜-Oâ€™ or the negated form of a
! â€˜-fâ€™, â€˜-mâ€™, or â€˜-Wâ€™ switch is found later in the command line, the
! earlier switch value is ignored, except with {â€˜Sâ€™*} where â€˜Sâ€™ is just
  one letter, which passes all matching options.
  
!  The character â€˜|â€™ at the beginning of the predicate text is used to
  indicate that a command should be piped to the following command, but
! only if â€˜-pipeâ€™ is specified.
  
   It is built into GCC which switches take arguments and which do not.
  (You might think it would be useful to generalize this to allow each
*************** files have been specified without knowin
*** 34415,34421 ****
  and it must know which input files to compile in order to tell which
  compilers to run).
  
!  GCC also knows implicitly that arguments starting in '-l' are to be
  treated as compiler output files, and passed to the linker in their
  proper position among the other output files.
  
--- 34423,34429 ----
  and it must know which input files to compile in order to tell which
  compilers to run).
  
!  GCC also knows implicitly that arguments starting in â€˜-lâ€™ are to be
  treated as compiler output files, and passed to the linker in their
  proper position among the other output files.
  
*************** use when searching for various kinds of
*** 34431,34628 ****
  other aspects of the compilation environment.
  
   Note that you can also specify places to search using options such as
! '-B', '-I' and '-L' (*note Directory Options::).  These take precedence
  over places specified using environment variables, which in turn take
  precedence over those specified by the configuration of GCC.  *Note
! Controlling the Compilation Driver 'gcc': (gccint)Driver.
  
! 'LANG'
! 'LC_CTYPE'
! 'LC_MESSAGES'
! 'LC_ALL'
       These environment variables control the way that GCC uses
       localization information which allows GCC to work with different
       national conventions.  GCC inspects the locale categories
!      'LC_CTYPE' and 'LC_MESSAGES' if it has been configured to do so.
       These locale categories can be set to any value supported by your
!      installation.  A typical value is 'en_GB.UTF-8' for English in the
       United Kingdom encoded in UTF-8.
  
!      The 'LC_CTYPE' environment variable specifies character
       classification.  GCC uses it to determine the character boundaries
       in a string; this is needed for some multibyte encodings that
       contain quote and escape characters that are otherwise interpreted
       as a string end or escape.
  
!      The 'LC_MESSAGES' environment variable specifies the language to
       use in diagnostic messages.
  
!      If the 'LC_ALL' environment variable is set, it overrides the value
!      of 'LC_CTYPE' and 'LC_MESSAGES'; otherwise, 'LC_CTYPE' and
!      'LC_MESSAGES' default to the value of the 'LANG' environment
       variable.  If none of these variables are set, GCC defaults to
       traditional C English behavior.
  
! 'TMPDIR'
!      If 'TMPDIR' is set, it specifies the directory to use for temporary
       files.  GCC uses temporary files to hold the output of one stage of
       compilation which is to be used as input to the next stage: for
       example, the output of the preprocessor, which is the input to the
       compiler proper.
  
! 'GCC_COMPARE_DEBUG'
!      Setting 'GCC_COMPARE_DEBUG' is nearly equivalent to passing
!      '-fcompare-debug' to the compiler driver.  See the documentation of
       this option for more details.
  
! 'GCC_EXEC_PREFIX'
!      If 'GCC_EXEC_PREFIX' is set, it specifies a prefix to use in the
       names of the subprograms executed by the compiler.  No slash is
       added when this prefix is combined with the name of a subprogram,
       but you can specify a prefix that ends with a slash if you wish.
  
!      If 'GCC_EXEC_PREFIX' is not set, GCC attempts to figure out an
       appropriate prefix to use based on the pathname it is invoked with.
  
       If GCC cannot find the subprogram using the specified prefix, it
       tries looking in the usual places for the subprogram.
  
!      The default value of 'GCC_EXEC_PREFIX' is 'PREFIX/lib/gcc/' where
       PREFIX is the prefix to the installed compiler.  In many cases
!      PREFIX is the value of 'prefix' when you ran the 'configure'
       script.
  
!      Other prefixes specified with '-B' take precedence over this
       prefix.
  
!      This prefix is also used for finding files such as 'crt0.o' that
       are used for linking.
  
       In addition, the prefix is used in an unusual way in finding the
       directories to search for header files.  For each of the standard
!      directories whose name normally begins with '/usr/local/lib/gcc'
!      (more precisely, with the value of 'GCC_INCLUDE_DIR'), GCC tries
       replacing that beginning with the specified prefix to produce an
!      alternate directory name.  Thus, with '-Bfoo/', GCC searches
!      'foo/bar' just before it searches the standard directory
!      '/usr/local/lib/bar'.  If a standard directory begins with the
       configured PREFIX then the value of PREFIX is replaced by
!      'GCC_EXEC_PREFIX' when looking for header files.
  
! 'COMPILER_PATH'
!      The value of 'COMPILER_PATH' is a colon-separated list of
!      directories, much like 'PATH'.  GCC tries the directories thus
       specified when searching for subprograms, if it cannot find the
!      subprograms using 'GCC_EXEC_PREFIX'.
  
! 'LIBRARY_PATH'
!      The value of 'LIBRARY_PATH' is a colon-separated list of
!      directories, much like 'PATH'.  When configured as a native
       compiler, GCC tries the directories thus specified when searching
       for special linker files, if it cannot find them using
!      'GCC_EXEC_PREFIX'.  Linking using GCC also uses these directories
!      when searching for ordinary libraries for the '-l' option (but
!      directories specified with '-L' come first).
  
! 'LANG'
       This variable is used to pass locale information to the compiler.
       One way in which this information is used is to determine the
       character set to be used when character literals, string literals
       and comments are parsed in C and C++.  When the compiler is
       configured to allow multibyte characters, the following values for
!      'LANG' are recognized:
  
!      'C-JIS'
            Recognize JIS characters.
!      'C-SJIS'
            Recognize SJIS characters.
!      'C-EUCJP'
            Recognize EUCJP characters.
  
!      If 'LANG' is not defined, or if it has some other value, then the
!      compiler uses 'mblen' and 'mbtowc' as defined by the default locale
       to recognize and translate multibyte characters.
  
! 'GCC_EXTRA_DIAGNOSTIC_OUTPUT'
!      If 'GCC_EXTRA_DIAGNOSTIC_OUTPUT' is set to one of the following
       values, then additional text will be emitted to stderr when fix-it
!      hints are emitted.  '-fdiagnostics-parseable-fixits' and
!      '-fno-diagnostics-parseable-fixits' take precedence over this
       environment variable.
  
!      'fixits-v1'
            Emit parseable fix-it hints, equivalent to
!           '-fdiagnostics-parseable-fixits'.  In particular, columns are
            expressed as a count of bytes, starting at byte 1 for the
            initial column.
  
!      'fixits-v2'
!           As 'fixits-v1', but columns are expressed as display columns,
!           as per '-fdiagnostics-column-unit=display'.
  
  Some additional environment variables affect the behavior of the
  preprocessor.
  
! 'CPATH'
! 'C_INCLUDE_PATH'
! 'CPLUS_INCLUDE_PATH'
! 'OBJC_INCLUDE_PATH'
       Each variable's value is a list of directories separated by a
!      special character, much like 'PATH', in which to look for header
!      files.  The special character, 'PATH_SEPARATOR', is
       target-dependent and determined at GCC build time.  For Microsoft
       Windows-based targets it is a semicolon, and for almost all other
       targets it is a colon.
  
!      'CPATH' specifies a list of directories to be searched as if
!      specified with '-I', but after any paths given with '-I' options on
       the command line.  This environment variable is used regardless of
       which language is being preprocessed.
  
       The remaining environment variables apply only when preprocessing
       the particular language indicated.  Each specifies a list of
!      directories to be searched as if specified with '-isystem', but
!      after any paths given with '-isystem' options on the command line.
  
       In all these variables, an empty element instructs the compiler to
       search its current working directory.  Empty elements can appear at
       the beginning or end of a path.  For instance, if the value of
!      'CPATH' is ':/special/include', that has the same effect as
!      '-I. -I/special/include'.
  
! 'DEPENDENCIES_OUTPUT'
       If this variable is set, its value specifies how to output
       dependencies for Make based on the non-system header files
       processed by the compiler.  System header files are ignored in the
       dependency output.
  
!      The value of 'DEPENDENCIES_OUTPUT' can be just a file name, in
       which case the Make rules are written to that file, guessing the
       target name from the source file name.  Or the value can have the
!      form 'FILE TARGET', in which case the rules are written to file
       FILE using TARGET as the target name.
  
       In other words, this environment variable is equivalent to
!      combining the options '-MM' and '-MF' (*note Preprocessor
!      Options::), with an optional '-MT' switch too.
  
! 'SUNPRO_DEPENDENCIES'
!      This variable is the same as 'DEPENDENCIES_OUTPUT' (see above),
!      except that system header files are not ignored, so it implies '-M'
!      rather than '-MM'.  However, the dependence on the main input file
       is omitted.  *Note Preprocessor Options::.
  
! 'SOURCE_DATE_EPOCH'
       If this variable is set, its value specifies a UNIX timestamp to be
!      used in replacement of the current date and time in the '__DATE__'
!      and '__TIME__' macros, so that the embedded timestamps become
       reproducible.
  
!      The value of 'SOURCE_DATE_EPOCH' must be a UNIX timestamp, defined
       as the number of seconds (excluding leap seconds) since 01 Jan 1970
!      00:00:00 represented in ASCII; identical to the output of 'date
!      +%s' on GNU/Linux and other systems that support the '%s' extension
!      in the 'date' command.
  
       The value should be a known timestamp such as the last modification
       time of the source or package and it should be set by the build
--- 34439,34636 ----
  other aspects of the compilation environment.
  
   Note that you can also specify places to search using options such as
! â€˜-Bâ€™, â€˜-Iâ€™ and â€˜-Lâ€™ (*note Directory Options::).  These take precedence
  over places specified using environment variables, which in turn take
  precedence over those specified by the configuration of GCC.  *Note
! Controlling the Compilation Driver â€˜gccâ€™: (gccint)Driver.
  
! â€˜LANGâ€™
! â€˜LC_CTYPEâ€™
! â€˜LC_MESSAGESâ€™
! â€˜LC_ALLâ€™
       These environment variables control the way that GCC uses
       localization information which allows GCC to work with different
       national conventions.  GCC inspects the locale categories
!      â€˜LC_CTYPEâ€™ and â€˜LC_MESSAGESâ€™ if it has been configured to do so.
       These locale categories can be set to any value supported by your
!      installation.  A typical value is â€˜en_GB.UTF-8â€™ for English in the
       United Kingdom encoded in UTF-8.
  
!      The â€˜LC_CTYPEâ€™ environment variable specifies character
       classification.  GCC uses it to determine the character boundaries
       in a string; this is needed for some multibyte encodings that
       contain quote and escape characters that are otherwise interpreted
       as a string end or escape.
  
!      The â€˜LC_MESSAGESâ€™ environment variable specifies the language to
       use in diagnostic messages.
  
!      If the â€˜LC_ALLâ€™ environment variable is set, it overrides the value
!      of â€˜LC_CTYPEâ€™ and â€˜LC_MESSAGESâ€™; otherwise, â€˜LC_CTYPEâ€™ and
!      â€˜LC_MESSAGESâ€™ default to the value of the â€˜LANGâ€™ environment
       variable.  If none of these variables are set, GCC defaults to
       traditional C English behavior.
  
! â€˜TMPDIRâ€™
!      If â€˜TMPDIRâ€™ is set, it specifies the directory to use for temporary
       files.  GCC uses temporary files to hold the output of one stage of
       compilation which is to be used as input to the next stage: for
       example, the output of the preprocessor, which is the input to the
       compiler proper.
  
! â€˜GCC_COMPARE_DEBUGâ€™
!      Setting â€˜GCC_COMPARE_DEBUGâ€™ is nearly equivalent to passing
!      â€˜-fcompare-debugâ€™ to the compiler driver.  See the documentation of
       this option for more details.
  
! â€˜GCC_EXEC_PREFIXâ€™
!      If â€˜GCC_EXEC_PREFIXâ€™ is set, it specifies a prefix to use in the
       names of the subprograms executed by the compiler.  No slash is
       added when this prefix is combined with the name of a subprogram,
       but you can specify a prefix that ends with a slash if you wish.
  
!      If â€˜GCC_EXEC_PREFIXâ€™ is not set, GCC attempts to figure out an
       appropriate prefix to use based on the pathname it is invoked with.
  
       If GCC cannot find the subprogram using the specified prefix, it
       tries looking in the usual places for the subprogram.
  
!      The default value of â€˜GCC_EXEC_PREFIXâ€™ is â€˜PREFIX/lib/gcc/â€™ where
       PREFIX is the prefix to the installed compiler.  In many cases
!      PREFIX is the value of â€˜prefixâ€™ when you ran the â€˜configureâ€™
       script.
  
!      Other prefixes specified with â€˜-Bâ€™ take precedence over this
       prefix.
  
!      This prefix is also used for finding files such as â€˜crt0.oâ€™ that
       are used for linking.
  
       In addition, the prefix is used in an unusual way in finding the
       directories to search for header files.  For each of the standard
!      directories whose name normally begins with â€˜/usr/local/lib/gccâ€™
!      (more precisely, with the value of â€˜GCC_INCLUDE_DIRâ€™), GCC tries
       replacing that beginning with the specified prefix to produce an
!      alternate directory name.  Thus, with â€˜-Bfoo/â€™, GCC searches
!      â€˜foo/barâ€™ just before it searches the standard directory
!      â€˜/usr/local/lib/barâ€™.  If a standard directory begins with the
       configured PREFIX then the value of PREFIX is replaced by
!      â€˜GCC_EXEC_PREFIXâ€™ when looking for header files.
  
! â€˜COMPILER_PATHâ€™
!      The value of â€˜COMPILER_PATHâ€™ is a colon-separated list of
!      directories, much like â€˜PATHâ€™.  GCC tries the directories thus
       specified when searching for subprograms, if it cannot find the
!      subprograms using â€˜GCC_EXEC_PREFIXâ€™.
  
! â€˜LIBRARY_PATHâ€™
!      The value of â€˜LIBRARY_PATHâ€™ is a colon-separated list of
!      directories, much like â€˜PATHâ€™.  When configured as a native
       compiler, GCC tries the directories thus specified when searching
       for special linker files, if it cannot find them using
!      â€˜GCC_EXEC_PREFIXâ€™.  Linking using GCC also uses these directories
!      when searching for ordinary libraries for the â€˜-lâ€™ option (but
!      directories specified with â€˜-Lâ€™ come first).
  
! â€˜LANGâ€™
       This variable is used to pass locale information to the compiler.
       One way in which this information is used is to determine the
       character set to be used when character literals, string literals
       and comments are parsed in C and C++.  When the compiler is
       configured to allow multibyte characters, the following values for
!      â€˜LANGâ€™ are recognized:
  
!      â€˜C-JISâ€™
            Recognize JIS characters.
!      â€˜C-SJISâ€™
            Recognize SJIS characters.
!      â€˜C-EUCJPâ€™
            Recognize EUCJP characters.
  
!      If â€˜LANGâ€™ is not defined, or if it has some other value, then the
!      compiler uses â€˜mblenâ€™ and â€˜mbtowcâ€™ as defined by the default locale
       to recognize and translate multibyte characters.
  
! â€˜GCC_EXTRA_DIAGNOSTIC_OUTPUTâ€™
!      If â€˜GCC_EXTRA_DIAGNOSTIC_OUTPUTâ€™ is set to one of the following
       values, then additional text will be emitted to stderr when fix-it
!      hints are emitted.  â€˜-fdiagnostics-parseable-fixitsâ€™ and
!      â€˜-fno-diagnostics-parseable-fixitsâ€™ take precedence over this
       environment variable.
  
!      â€˜fixits-v1â€™
            Emit parseable fix-it hints, equivalent to
!           â€˜-fdiagnostics-parseable-fixitsâ€™.  In particular, columns are
            expressed as a count of bytes, starting at byte 1 for the
            initial column.
  
!      â€˜fixits-v2â€™
!           As â€˜fixits-v1â€™, but columns are expressed as display columns,
!           as per â€˜-fdiagnostics-column-unit=displayâ€™.
  
  Some additional environment variables affect the behavior of the
  preprocessor.
  
! â€˜CPATHâ€™
! â€˜C_INCLUDE_PATHâ€™
! â€˜CPLUS_INCLUDE_PATHâ€™
! â€˜OBJC_INCLUDE_PATHâ€™
       Each variable's value is a list of directories separated by a
!      special character, much like â€˜PATHâ€™, in which to look for header
!      files.  The special character, â€˜PATH_SEPARATORâ€™, is
       target-dependent and determined at GCC build time.  For Microsoft
       Windows-based targets it is a semicolon, and for almost all other
       targets it is a colon.
  
!      â€˜CPATHâ€™ specifies a list of directories to be searched as if
!      specified with â€˜-Iâ€™, but after any paths given with â€˜-Iâ€™ options on
       the command line.  This environment variable is used regardless of
       which language is being preprocessed.
  
       The remaining environment variables apply only when preprocessing
       the particular language indicated.  Each specifies a list of
!      directories to be searched as if specified with â€˜-isystemâ€™, but
!      after any paths given with â€˜-isystemâ€™ options on the command line.
  
       In all these variables, an empty element instructs the compiler to
       search its current working directory.  Empty elements can appear at
       the beginning or end of a path.  For instance, if the value of
!      â€˜CPATHâ€™ is â€˜:/special/includeâ€™, that has the same effect as
!      â€˜-I. -I/special/includeâ€™.
  
! â€˜DEPENDENCIES_OUTPUTâ€™
       If this variable is set, its value specifies how to output
       dependencies for Make based on the non-system header files
       processed by the compiler.  System header files are ignored in the
       dependency output.
  
!      The value of â€˜DEPENDENCIES_OUTPUTâ€™ can be just a file name, in
       which case the Make rules are written to that file, guessing the
       target name from the source file name.  Or the value can have the
!      form â€˜FILE TARGETâ€™, in which case the rules are written to file
       FILE using TARGET as the target name.
  
       In other words, this environment variable is equivalent to
!      combining the options â€˜-MMâ€™ and â€˜-MFâ€™ (*note Preprocessor
!      Options::), with an optional â€˜-MTâ€™ switch too.
  
! â€˜SUNPRO_DEPENDENCIESâ€™
!      This variable is the same as â€˜DEPENDENCIES_OUTPUTâ€™ (see above),
!      except that system header files are not ignored, so it implies â€˜-Mâ€™
!      rather than â€˜-MMâ€™.  However, the dependence on the main input file
       is omitted.  *Note Preprocessor Options::.
  
! â€˜SOURCE_DATE_EPOCHâ€™
       If this variable is set, its value specifies a UNIX timestamp to be
!      used in replacement of the current date and time in the â€˜__DATE__â€™
!      and â€˜__TIME__â€™ macros, so that the embedded timestamps become
       reproducible.
  
!      The value of â€˜SOURCE_DATE_EPOCHâ€™ must be a UNIX timestamp, defined
       as the number of seconds (excluding leap seconds) since 01 Jan 1970
!      00:00:00 represented in ASCII; identical to the output of â€˜date
!      +%sâ€™ on GNU/Linux and other systems that support the â€˜%sâ€™ extension
!      in the â€˜dateâ€™ command.
  
       The value should be a known timestamp such as the last modification
       time of the source or package and it should be set by the build
*************** Often large projects have many header fi
*** 34638,34682 ****
  source file.  The time the compiler takes to process these header files
  over and over again can account for nearly all of the time required to
  build the project.  To make builds faster, GCC allows you to
! "precompile" a header file.
  
   To create a precompiled header file, simply compile it as you would any
! other file, if necessary using the '-x' option to make the driver treat
! it as a C or C++ header file.  You may want to use a tool like 'make' to
  keep the precompiled header up-to-date when the headers it contains
  change.
  
!  A precompiled header file is searched for when '#include' is seen in
  the compilation.  As it searches for the included file (*note Search
  Path: (cpp)Search Path.) the compiler looks for a precompiled header in
  each directory just before it looks for the include file in that
  directory.  The name searched for is the name specified in the
! '#include' with '.gch' appended.  If the precompiled header file cannot
  be used, it is ignored.
  
!  For instance, if you have '#include "all.h"', and you have 'all.h.gch'
! in the same directory as 'all.h', then the precompiled header file is
  used if possible, and the original header is used otherwise.
  
   Alternatively, you might decide to put the precompiled header file in a
! directory and use '-I' to ensure that directory is searched before (or
  instead of) the directory containing the original header.  Then, if you
  want to check that the precompiled header file is always used, you can
  put a file of the same name as the original header in this directory
! containing an '#error' command.
  
!  This also works with '-include'.  So yet another way to use precompiled
  headers, good for projects not designed with precompiled header files in
  mind, is to simply take most of the header files used by a project,
  include them from another header file, precompile that header file, and
! '-include' the precompiled header.  If the header files have guards
  against multiple inclusion, they are skipped because they've already
  been included (in the precompiled header).
  
   If you need to precompile the same header file for different languages,
  targets, or compiler options, you can instead make a _directory_ named
! like 'all.h.gch', and put each precompiled header in the directory,
! perhaps using '-o'.  It doesn't matter what you call the files in the
  directory; every precompiled header in the directory is considered.  The
  first precompiled header encountered in the directory that is valid for
  this compilation is used; they're searched in no particular order.
--- 34646,34690 ----
  source file.  The time the compiler takes to process these header files
  over and over again can account for nearly all of the time required to
  build the project.  To make builds faster, GCC allows you to
! â€œprecompileâ€� a header file.
  
   To create a precompiled header file, simply compile it as you would any
! other file, if necessary using the â€˜-xâ€™ option to make the driver treat
! it as a C or C++ header file.  You may want to use a tool like â€˜makeâ€™ to
  keep the precompiled header up-to-date when the headers it contains
  change.
  
!  A precompiled header file is searched for when â€˜#includeâ€™ is seen in
  the compilation.  As it searches for the included file (*note Search
  Path: (cpp)Search Path.) the compiler looks for a precompiled header in
  each directory just before it looks for the include file in that
  directory.  The name searched for is the name specified in the
! â€˜#includeâ€™ with â€˜.gchâ€™ appended.  If the precompiled header file cannot
  be used, it is ignored.
  
!  For instance, if you have â€˜#include "all.h"â€™, and you have â€˜all.h.gchâ€™
! in the same directory as â€˜all.hâ€™, then the precompiled header file is
  used if possible, and the original header is used otherwise.
  
   Alternatively, you might decide to put the precompiled header file in a
! directory and use â€˜-Iâ€™ to ensure that directory is searched before (or
  instead of) the directory containing the original header.  Then, if you
  want to check that the precompiled header file is always used, you can
  put a file of the same name as the original header in this directory
! containing an â€˜#errorâ€™ command.
  
!  This also works with â€˜-includeâ€™.  So yet another way to use precompiled
  headers, good for projects not designed with precompiled header files in
  mind, is to simply take most of the header files used by a project,
  include them from another header file, precompile that header file, and
! â€˜-includeâ€™ the precompiled header.  If the header files have guards
  against multiple inclusion, they are skipped because they've already
  been included (in the precompiled header).
  
   If you need to precompile the same header file for different languages,
  targets, or compiler options, you can instead make a _directory_ named
! like â€˜all.h.gchâ€™, and put each precompiled header in the directory,
! perhaps using â€˜-oâ€™.  It doesn't matter what you call the files in the
  directory; every precompiled header in the directory is considered.  The
  first precompiled header encountered in the directory that is valid for
  this compilation is used; they're searched in no particular order.
*************** good sense, and the constraints of your
*** 34686,34732 ****
  
   A precompiled header file can be used only when these conditions apply:
  
!    * Only one precompiled header can be used in a particular
       compilation.
  
!    * A precompiled header cannot be used once the first C token is seen.
       You can have preprocessor directives before a precompiled header;
       you cannot include a precompiled header from inside another header.
  
!    * The precompiled header file must be produced for the same language
       as the current compilation.  You cannot use a C precompiled header
       for a C++ compilation.
  
!    * The precompiled header file must have been produced by the same
       compiler binary as the current compilation is using.
  
!    * Any macros defined before the precompiled header is included must
       either be defined in the same way as when the precompiled header
       was generated, or must not affect the precompiled header, which
       usually means that they don't appear in the precompiled header at
       all.
  
!      The '-D' option is one way to define a macro before a precompiled
!      header is included; using a '#define' can also do it.  There are
!      also some options that define macros implicitly, like '-O' and
!      '-Wdeprecated'; the same rule applies to macros defined this way.
  
!    * If debugging information is output when using the precompiled
!      header, using '-g' or similar, the same kind of debugging
       information must have been output when building the precompiled
!      header.  However, a precompiled header built using '-g' can be used
       in a compilation when no debugging information is being output.
  
!    * The same '-m' options must generally be used when building and
       using the precompiled header.  *Note Submodel Options::, for any
       cases where this rule is relaxed.
  
!    * Each of the following options must be the same when building and
       using the precompiled header:
  
            -fexceptions
  
!    * Some other command-line options starting with '-f', '-p', or '-O'
       must be defined in the same way as when the precompiled header was
       generated.  At present, it's not clear which options are safe to
       change and which are not; the safest choice is to use exactly the
--- 34694,34740 ----
  
   A precompiled header file can be used only when these conditions apply:
  
!    â€¢ Only one precompiled header can be used in a particular
       compilation.
  
!    â€¢ A precompiled header cannot be used once the first C token is seen.
       You can have preprocessor directives before a precompiled header;
       you cannot include a precompiled header from inside another header.
  
!    â€¢ The precompiled header file must be produced for the same language
       as the current compilation.  You cannot use a C precompiled header
       for a C++ compilation.
  
!    â€¢ The precompiled header file must have been produced by the same
       compiler binary as the current compilation is using.
  
!    â€¢ Any macros defined before the precompiled header is included must
       either be defined in the same way as when the precompiled header
       was generated, or must not affect the precompiled header, which
       usually means that they don't appear in the precompiled header at
       all.
  
!      The â€˜-Dâ€™ option is one way to define a macro before a precompiled
!      header is included; using a â€˜#defineâ€™ can also do it.  There are
!      also some options that define macros implicitly, like â€˜-Oâ€™ and
!      â€˜-Wdeprecatedâ€™; the same rule applies to macros defined this way.
  
!    â€¢ If debugging information is output when using the precompiled
!      header, using â€˜-gâ€™ or similar, the same kind of debugging
       information must have been output when building the precompiled
!      header.  However, a precompiled header built using â€˜-gâ€™ can be used
       in a compilation when no debugging information is being output.
  
!    â€¢ The same â€˜-mâ€™ options must generally be used when building and
       using the precompiled header.  *Note Submodel Options::, for any
       cases where this rule is relaxed.
  
!    â€¢ Each of the following options must be the same when building and
       using the precompiled header:
  
            -fexceptions
  
!    â€¢ Some other command-line options starting with â€˜-fâ€™, â€˜-pâ€™, or â€˜-Oâ€™
       must be defined in the same way as when the precompiled header was
       generated.  At present, it's not clear which options are safe to
       change and which are not; the safest choice is to use exactly the
*************** good sense, and the constraints of your
*** 34738,34744 ****
            -fsched-verbose=NUMBER  -fschedule-insns  -fvisibility=
            -pedantic-errors
  
!    * Address space layout randomization (ASLR) can lead to not binary
       identical PCH files.  If you rely on stable PCH file contents
       disable ASLR when generating PCH files.
  
--- 34746,34752 ----
            -fsched-verbose=NUMBER  -fschedule-insns  -fvisibility=
            -pedantic-errors
  
!    â€¢ Address space layout randomization (ASLR) can lead to not binary
       identical PCH files.  If you rely on stable PCH file contents
       disable ASLR when generating PCH files.
  
*************** Bugs::.
*** 34750,34756 ****
  
   If you do use differing options when generating and using the
  precompiled header, the actual behavior is a mixture of the behavior for
! the options.  For instance, if you use '-g' to generate the precompiled
  header but not when using it, you may or may not get debugging
  information for routines in the precompiled header.
  
--- 34758,34764 ----
  
   If you do use differing options when generating and using the
  precompiled header, the actual behavior is a mixture of the behavior for
! the options.  For instance, if you use â€˜-gâ€™ to generate the precompiled
  header but not when using it, you may or may not get debugging
  information for routines in the precompiled header.
  
*************** _Standard Library Header Units_
*** 34800,34812 ****
       resource usage can be affected by how you partition header files
       into header units.
  
!  Modular compilation is _not_ enabled with just the '-std=c++20' option.
! You must explicitly enable it with the '-fmodules-ts' option.  It is
  independent of the language version selected, although in pre-C++20
  versions, it is of course an extension.
  
   No new source file suffixes are required.  A few suffixes preferred for
! module interface units by other compilers (e.g.  '.ixx', '.cppm') are
  supported, but files with these suffixes are treated the same as any
  other C++ source file.
  
--- 34808,34820 ----
       resource usage can be affected by how you partition header files
       into header units.
  
!  Modular compilation is _not_ enabled with just the â€˜-std=c++20â€™ option.
! You must explicitly enable it with the â€˜-fmodules-tsâ€™ option.  It is
  independent of the language version selected, although in pre-C++20
  versions, it is of course an extension.
  
   No new source file suffixes are required.  A few suffixes preferred for
! module interface units by other compilers (e.g.  â€˜.ixxâ€™, â€˜.cppmâ€™) are
  supported, but files with these suffixes are treated the same as any
  other C++ source file.
  
*************** You must build imports before the import
*** 34818,34834 ****
  
   Header files may themselves be compiled to header units, which are a
  transitional ability aiming at faster compilation.  The
! '-fmodule-header' option is used to enable this, and implies the
! '-fmodules' option.  These CMIs are named by the fully resolved
  underlying header file, and thus may be a complete pathname containing
  subdirectories.  If the header file is found at an absolute pathname,
  the CMI location is still relative to a CMI root directory.
  
   As header files often have no suffix, you commonly have to specify a
! '-x' option to tell the compiler the source is a header file.  You may
! use '-x c++-header', '-x c++-user-header' or '-x c++-system-header'.
! When used in conjunction with '-fmodules', these all imply an
! appropriate '-fmodule-header' option.  The latter two variants use the
  user or system include path to search for the file specified.  This
  allows you to, for instance, compile standard library header files as
  header units, without needing to know exactly where they are installed.
--- 34826,34842 ----
  
   Header files may themselves be compiled to header units, which are a
  transitional ability aiming at faster compilation.  The
! â€˜-fmodule-headerâ€™ option is used to enable this, and implies the
! â€˜-fmodulesâ€™ option.  These CMIs are named by the fully resolved
  underlying header file, and thus may be a complete pathname containing
  subdirectories.  If the header file is found at an absolute pathname,
  the CMI location is still relative to a CMI root directory.
  
   As header files often have no suffix, you commonly have to specify a
! â€˜-xâ€™ option to tell the compiler the source is a header file.  You may
! use â€˜-x c++-headerâ€™, â€˜-x c++-user-headerâ€™ or â€˜-x c++-system-headerâ€™.
! When used in conjunction with â€˜-fmodulesâ€™, these all imply an
! appropriate â€˜-fmodule-headerâ€™ option.  The latter two variants use the
  user or system include path to search for the file specified.  This
  allows you to, for instance, compile standard library header files as
  header units, without needing to know exactly where they are installed.
*************** Specifying the language as one of these
*** 34836,34849 ****
  the object file, as header files have no associated object file.
  
   Alternately, or for a module interface unit in an installed location,
! you can use '-fsearch-include-path' to specify that the main source file
  should be found on the include path rather than the current directory.
  
   Header units can be used in much the same way as precompiled headers
  (*note Precompiled Headers::), but with fewer restrictions: an #include
  that is translated to a header unit import can appear at any point in
  the source file, and multiple header units can be used together.  In
! particular, the '-include' strategy works: with the bits/stdc++.h header
  used for libstdc++ precompiled headers you can
  
       g++ -fmodules -x c++-system-header -c bits/stdc++.h
--- 34844,34857 ----
  the object file, as header files have no associated object file.
  
   Alternately, or for a module interface unit in an installed location,
! you can use â€˜-fsearch-include-pathâ€™ to specify that the main source file
  should be found on the include path rather than the current directory.
  
   Header units can be used in much the same way as precompiled headers
  (*note Precompiled Headers::), but with fewer restrictions: an #include
  that is translated to a header unit import can appear at any point in
  the source file, and multiple header units can be used together.  In
! particular, the â€˜-includeâ€™ strategy works: with the bits/stdc++.h header
  used for libstdc++ precompiled headers you can
  
       g++ -fmodules -x c++-system-header -c bits/stdc++.h
*************** used for libstdc++ precompiled headers y
*** 34853,34864 ****
  the import brought in the whole library.  This can be a simple way to
  use modules to speed up compilation without any code changes.
  
!  The '-fmodule-only' option disables generation of the associated object
  file for compiling a module interface.  Only the CMI is generated.  This
! option is implied when using the '-fmodule-header' option.
  
!  The '-flang-info-include-translate' and
! '-flang-info-include-translate-not' options notes whether include
  translation occurs or not.  With no argument, the first will note all
  include translation.  The second will note all non-translations of
  include files not known to intentionally be textual.  With an argument,
--- 34861,34872 ----
  the import brought in the whole library.  This can be a simple way to
  use modules to speed up compilation without any code changes.
  
!  The â€˜-fmodule-onlyâ€™ option disables generation of the associated object
  file for compiling a module interface.  Only the CMI is generated.  This
! option is implied when using the â€˜-fmodule-headerâ€™ option.
  
!  The â€˜-flang-info-include-translateâ€™ and
! â€˜-flang-info-include-translate-notâ€™ options notes whether include
  translation occurs or not.  With no argument, the first will note all
  include translation.  The second will note all non-translations of
  include files not known to intentionally be textual.  With an argument,
*************** different header files.  This option may
*** 34868,34885 ****
  whether include translation is happening--if it is working correctly, it
  behaves as if it isn't there at all.
  
!  The '-flang-info-module-cmi' option can be used to determine where the
  compiler is reading a CMI from.  Without the option, the compiler is
  silent when such a read is successful.  This option has an optional
  argument, which will restrict the notification to just the set of named
  modules or header units specified.
  
!  The '-Winvalid-imported-macros' option causes all imported macros to be
  resolved at the end of compilation.  Without this, imported macros are
  only resolved when expanded or (re)defined.  This option detects
  conflicting import definitions for all macros.
  
!  For details of the '-fmodule-mapper' family of options, *note C++
  Module Mapper::.
  
  * Menu:
--- 34876,34893 ----
  whether include translation is happening--if it is working correctly, it
  behaves as if it isn't there at all.
  
!  The â€˜-flang-info-module-cmiâ€™ option can be used to determine where the
  compiler is reading a CMI from.  Without the option, the compiler is
  silent when such a read is successful.  This option has an optional
  argument, which will restrict the notification to just the set of named
  modules or header units specified.
  
!  The â€˜-Winvalid-imported-macrosâ€™ option causes all imported macros to be
  resolved at the end of compilation.  Without this, imported macros are
  only resolved when expanded or (re)defined.  This option detects
  conflicting import definitions for all macros.
  
!  For details of the â€˜-fmodule-mapperâ€™ family of options, *note C++
  Module Mapper::.
  
  * Menu:
*************** determine the mapping between module nam
*** 34899,34921 ****
  used to build CMIs on demand.  _Mapper functionality is in its infancy
  and is intended for experimentation with build system interactions._
  
!  You can specify a mapper with the '-fmodule-mapper=VAL' option or
! 'CXX_MODULE_MAPPER' environment variable.  The value may have one of the
  following forms:
  
! '[HOSTNAME]:PORT[?IDENT]'
       An optional hostname and a numeric port number to connect to.  If
       the hostname is omitted, the loopback address is used.  If the
       hostname corresponds to multiple IPV6 addresses, these are tried in
       turn, until one is successful.  If your host lacks IPv6, this form
       is non-functional.  If you must use IPv4 use
!      '-fmodule-mapper='|ncat IPV4HOST PORT''.
  
! '=SOCKET[?IDENT]'
       A local domain socket.  If your host lacks local domain sockets,
       this form is non-functional.
  
! '|PROGRAM[?IDENT] [ARGS...]'
       A program to spawn, and communicate with on its stdin/stdout
       streams.  Your PATH environment variable is searched for the
       program.  Arguments are separated by space characters, (it is not
--- 34907,34929 ----
  used to build CMIs on demand.  _Mapper functionality is in its infancy
  and is intended for experimentation with build system interactions._
  
!  You can specify a mapper with the â€˜-fmodule-mapper=VALâ€™ option or
! â€˜CXX_MODULE_MAPPERâ€™ environment variable.  The value may have one of the
  following forms:
  
! â€˜[HOSTNAME]:PORT[?IDENT]â€™
       An optional hostname and a numeric port number to connect to.  If
       the hostname is omitted, the loopback address is used.  If the
       hostname corresponds to multiple IPV6 addresses, these are tried in
       turn, until one is successful.  If your host lacks IPv6, this form
       is non-functional.  If you must use IPv4 use
!      â€˜-fmodule-mapper='|ncat IPV4HOST PORT'â€™.
  
! â€˜=SOCKET[?IDENT]â€™
       A local domain socket.  If your host lacks local domain sockets,
       this form is non-functional.
  
! â€˜|PROGRAM[?IDENT] [ARGS...]â€™
       A program to spawn, and communicate with on its stdin/stdout
       streams.  Your PATH environment variable is searched for the
       program.  Arguments are separated by space characters, (it is not
*************** following forms:
*** 34923,34935 ****
       contain a space).  An exception is if PROGRAM begins with @.  In
       that case PROGRAM (sans @) is looked for in the compiler's internal
       binary directory.  Thus the sample mapper-server can be specified
!      with '@g++-mapper-server'.
  
! '<>[?IDENT]'
! '<>INOUT[?IDENT]'
! '<IN>OUT[?IDENT]'
       Named pipes or file descriptors to communicate over.  The first
!      form, '<>', communicates over stdin and stdout.  The other forms
       allow you to specify a file descriptor or name a pipe.  A numeric
       value is interpreted as a file descriptor, otherwise named pipe is
       opened.  The second form specifies a bidirectional pipe and the
--- 34931,34943 ----
       contain a space).  An exception is if PROGRAM begins with @.  In
       that case PROGRAM (sans @) is looked for in the compiler's internal
       binary directory.  Thus the sample mapper-server can be specified
!      with â€˜@g++-mapper-serverâ€™.
  
! â€˜<>[?IDENT]â€™
! â€˜<>INOUT[?IDENT]â€™
! â€˜<IN>OUT[?IDENT]â€™
       Named pipes or file descriptors to communicate over.  The first
!      form, â€˜<>â€™, communicates over stdin and stdout.  The other forms
       allow you to specify a file descriptor or name a pipe.  A numeric
       value is interpreted as a file descriptor, otherwise named pipe is
       opened.  The second form specifies a bidirectional pipe and the
*************** following forms:
*** 34941,34963 ****
       write stdout, and it can have unfortunate interactions with signal
       delivery from the terminal.
  
! 'FILE[?IDENT]'
       A mapping file consisting of space-separated module-name, filename
       pairs, one per line.  Only the mappings for the direct imports and
       any module export name need be provided.  If other mappings are
       provided, they override those stored in any imported CMI files.  A
       repository root may be specified in the mapping file by using
!      '$root' as the module name in the first active line.  Use of this
       option will disable any default module->CMI name mapping.
  
   As shown, an optional IDENT may suffix the first word of the option,
! indicated by a '?' prefix.  The value is used in the initial handshake
  with the module server, or to specify a prefix on mapping file lines.
  In the server case, the main source file name is used if no IDENT is
  specified.  In the file case, all non-blank lines are significant,
  unless a value is specified, in which case only lines beginning with
  IDENT are significant.  The IDENT must be separated by whitespace from
! the module name.  Be aware that '<', '>', '?', and '|' characters are
  often significant to the shell, and therefore may need quoting.
  
   The mapper is connected to or loaded lazily, when the first module
--- 34949,34971 ----
       write stdout, and it can have unfortunate interactions with signal
       delivery from the terminal.
  
! â€˜FILE[?IDENT]â€™
       A mapping file consisting of space-separated module-name, filename
       pairs, one per line.  Only the mappings for the direct imports and
       any module export name need be provided.  If other mappings are
       provided, they override those stored in any imported CMI files.  A
       repository root may be specified in the mapping file by using
!      â€˜$rootâ€™ as the module name in the first active line.  Use of this
       option will disable any default module->CMI name mapping.
  
   As shown, an optional IDENT may suffix the first word of the option,
! indicated by a â€˜?â€™ prefix.  The value is used in the initial handshake
  with the module server, or to specify a prefix on mapping file lines.
  In the server case, the main source file name is used if no IDENT is
  specified.  In the file case, all non-blank lines are significant,
  unless a value is specified, in which case only lines beginning with
  IDENT are significant.  The IDENT must be separated by whitespace from
! the module name.  Be aware that â€˜<â€™, â€˜>â€™, â€˜?â€™, and â€˜|â€™ characters are
  often significant to the shell, and therefore may need quoting.
  
   The mapper is connected to or loaded lazily, when the first module
*************** the environment (such as working directo
*** 34973,34992 ****
  As it may parallelize builds, several compilations may connect to the
  same socket.
  
!  The default mapper generates CMI files in a 'gcm.cache' directory.  CMI
! files have a '.gcm' suffix.  The module unit name is used directly to
  provide the basename.  Header units construct a relative path using the
! underlying header file name.  If the path is already relative, a ','
! directory is prepended.  Internal '..' components are translated to
! ',,'.  No attempt is made to canonicalize these filenames beyond that
  done by the preprocessor's include search algorithm, as in general it is
  ambiguous when symbolic links are present.
  
   The mapper protocol was published as "A Module Mapper"
! <https://wg21.link/p1184>.  The implementation is provided by 'libcody',
  <https://github.com/urnathan/libcody>, which specifies the canonical
  protocol definition.  A proof of concept server implementation embedded
! in 'make' was described in "Make Me A Module",
  <https://wg21.link/p1602>.
  
  
--- 34981,35000 ----
  As it may parallelize builds, several compilations may connect to the
  same socket.
  
!  The default mapper generates CMI files in a â€˜gcm.cacheâ€™ directory.  CMI
! files have a â€˜.gcmâ€™ suffix.  The module unit name is used directly to
  provide the basename.  Header units construct a relative path using the
! underlying header file name.  If the path is already relative, a â€˜,â€™
! directory is prepended.  Internal â€˜..â€™ components are translated to
! â€˜,,â€™.  No attempt is made to canonicalize these filenames beyond that
  done by the preprocessor's include search algorithm, as in general it is
  ambiguous when symbolic links are present.
  
   The mapper protocol was published as "A Module Mapper"
! <https://wg21.link/p1184>.  The implementation is provided by â€˜libcodyâ€™,
  <https://github.com/urnathan/libcody>, which specifies the canonical
  protocol definition.  A proof of concept server implementation embedded
! in â€˜makeâ€™ was described in "Make Me A Module",
  <https://wg21.link/p1602>.
  
  
*************** just preprocessing, an error is emitted)
*** 35007,35025 ****
  requires preprocessor tokenization of the input stream to phase 4 (macro
  expansion).
  
!  Include translation converts '#include', '#include_next' and '#import'
! directives to internal 'import' declarations.  Whether a particular
  directive is translated is controlled by the module mapper.  Header unit
  names are canonicalized during preprocessing.
  
   Dependency information can be emitted for module import, extending the
! functionality of the various '-M' options.  Detection of import
  declarations requires phase 4 handling of preprocessor directives, but
! does not require macro expansion, so it is not necessary to use '-MD'.
! See also '-fdeps-*' for an alternate format for module dependency
  information.
  
!  The '-save-temps' option uses '-fdirectives-only' for preprocessing,
  and preserve the macro definitions in the preprocessed output.  Usually
  you also want to use this option when explicitly preprocessing a
  header-unit, or consuming such preprocessed output:
--- 35015,35033 ----
  requires preprocessor tokenization of the input stream to phase 4 (macro
  expansion).
  
!  Include translation converts â€˜#includeâ€™, â€˜#include_nextâ€™ and â€˜#importâ€™
! directives to internal â€˜importâ€™ declarations.  Whether a particular
  directive is translated is controlled by the module mapper.  Header unit
  names are canonicalized during preprocessing.
  
   Dependency information can be emitted for module import, extending the
! functionality of the various â€˜-Mâ€™ options.  Detection of import
  declarations requires phase 4 handling of preprocessor directives, but
! does not require macro expansion, so it is not necessary to use â€˜-MDâ€™.
! See also â€˜-fdeps-*â€™ for an alternate format for module dependency
  information.
  
!  The â€˜-save-tempsâ€™ option uses â€˜-fdirectives-onlyâ€™ for preprocessing,
  and preserve the macro definitions in the preprocessed output.  Usually
  you also want to use this option when explicitly preprocessing a
  header-unit, or consuming such preprocessed output:
*************** file), or complete new contents.  They d
*** 35049,35059 ****
  creation.  This is unlike object file writing, which may be observed by
  an external process.
  
!  CMIs are read in lazily, if the host OS provides 'mmap' functionality.
  Generally blocks are read when name lookup or template instantiation
! occurs.  To inhibit this, the '-fno-module-lazy' option may be used.
  
!  The '--param lazy-modules=N' parameter controls the limit on the number
  of concurrently open module files during lazy loading.  Should more
  modules be imported, an LRU algorithm is used to determine which files
  to close--until that file is needed again.  This limit may be exceeded
--- 35057,35067 ----
  creation.  This is unlike object file writing, which may be observed by
  an external process.
  
!  CMIs are read in lazily, if the host OS provides â€˜mmapâ€™ functionality.
  Generally blocks are read when name lookup or template instantiation
! occurs.  To inhibit this, the â€˜-fno-module-lazyâ€™ option may be used.
  
!  The â€˜--param lazy-modules=Nâ€™ parameter controls the limit on the number
  of concurrently open module files during lazy loading.  Should more
  modules be imported, an LRU algorithm is used to determine which files
  to close--until that file is needed again.  This limit may be exceeded
*************** default, the limit is a few less than th
*** 35063,35072 ****
  hard limit, if that is determinable.(1)
  
   GCC CMIs use ELF32 as an architecture-neutral encapsulation mechanism.
! You may use 'readelf' to inspect them, although section contents are
! largely undecipherable.  There is a section named '.gnu.c++.README',
  which contains human-readable text.  Other than the first line, each
! line consists of 'TAG: value' tuples.
  
       > readelf -p.gnu.c++.README gcm.cache/foo.gcm
  
--- 35071,35080 ----
  hard limit, if that is determinable.(1)
  
   GCC CMIs use ELF32 as an architecture-neutral encapsulation mechanism.
! You may use â€˜readelfâ€™ to inspect them, although section contents are
! largely undecipherable.  There is a section named â€˜.gnu.c++.READMEâ€™,
  which contains human-readable text.  Other than the first line, each
! line consists of â€˜TAG: valueâ€™ tuples.
  
       > readelf -p.gnu.c++.README gcm.cache/foo.gcm
  
*************** line consists of 'TAG: value' tuples.
*** 35085,35100 ****
  
   Amongst other things, this lists the source that was built, C++ dialect
  used and imports of the module.(2)  The timestamp is the same value as
! that provided by the '__DATE__' & '__TIME__' macros, and may be
! explicitly specified with the environment variable 'SOURCE_DATE_EPOCH'.
  For further details *note Environment Variables::.
  
   A set of related CMIs may be copied, provided the relative pathnames
  are preserved.
  
!  The '.gnu.c++.README' contents do not affect CMI integrity, and it may
  be removed or altered.  The section numbering of the sections whose
! names do not begin with '.gnu.c++.', or are not the string section is
  significant and must not be altered.
  
     ---------- Footnotes ----------
--- 35093,35108 ----
  
   Amongst other things, this lists the source that was built, C++ dialect
  used and imports of the module.(2)  The timestamp is the same value as
! that provided by the â€˜__DATE__â€™ & â€˜__TIME__â€™ macros, and may be
! explicitly specified with the environment variable â€˜SOURCE_DATE_EPOCHâ€™.
  For further details *note Environment Variables::.
  
   A set of related CMIs may be copied, provided the relative pathnames
  are preserved.
  
!  The â€˜.gnu.c++.READMEâ€™ contents do not affect CMI integrity, and it may
  be removed or altered.  The section numbering of the sections whose
! names do not begin with â€˜.gnu.c++.â€™, or are not the string section is
  significant and must not be altered.
  
     ---------- Footnotes ----------
*************** File: gcc.info,  Node: Translation imple
*** 35152,35165 ****
  4.1 Translation
  ===============
  
!    * 'How a diagnostic is identified (C90 3.7, C99 and C11 3.10, C90,
!      C99 and C11 5.1.1.3).'
  
       Diagnostics consist of all the output sent to stderr by GCC.
  
!    * 'Whether each nonempty sequence of white-space characters other
       than new-line is retained or replaced by one space character in
!      translation phase 3 (C90, C99 and C11 5.1.1.2).'
  
       *Note Implementation-defined behavior: (cpp)Implementation-defined
       behavior.
--- 35160,35173 ----
  4.1 Translation
  ===============
  
!    â€¢ â€˜How a diagnostic is identified (C90 3.7, C99 and C11 3.10, C90,
!      C99 and C11 5.1.1.3).â€™
  
       Diagnostics consist of all the output sent to stderr by GCC.
  
!    â€¢ â€˜Whether each nonempty sequence of white-space characters other
       than new-line is retained or replaced by one space character in
!      translation phase 3 (C90, C99 and C11 5.1.1.2).â€™
  
       *Note Implementation-defined behavior: (cpp)Implementation-defined
       behavior.
*************** File: gcc.info,  Node: Environment imple
*** 35173,35181 ****
  The behavior of most of these points are dependent on the implementation
  of the C library, and are not defined by GCC itself.
  
!    * 'The mapping between physical source file multibyte characters and
       the source character set in translation phase 1 (C90, C99 and C11
!      5.1.1.2).'
  
       *Note Implementation-defined behavior: (cpp)Implementation-defined
       behavior.
--- 35181,35189 ----
  The behavior of most of these points are dependent on the implementation
  of the C library, and are not defined by GCC itself.
  
!    â€¢ â€˜The mapping between physical source file multibyte characters and
       the source character set in translation phase 1 (C90, C99 and C11
!      5.1.1.2).â€™
  
       *Note Implementation-defined behavior: (cpp)Implementation-defined
       behavior.
*************** File: gcc.info,  Node: Identifiers imple
*** 35186,35207 ****
  4.3 Identifiers
  ===============
  
!    * 'Which additional multibyte characters may appear in identifiers
       and their correspondence to universal character names (C99 and C11
!      6.4.2).'
  
       *Note Implementation-defined behavior: (cpp)Implementation-defined
       behavior.
  
!    * 'The number of significant initial characters in an identifier (C90
!      6.1.2, C90, C99 and C11 5.2.4.1, C99 and C11 6.4.2).'
  
       For internal names, all characters are significant.  For external
       names, the number of significant characters are defined by the
       linker; for almost all targets, all characters are significant.
  
!    * 'Whether case distinctions are significant in an identifier with
!      external linkage (C90 6.1.2).'
  
       This is a property of the linker.  C99 and C11 require that case
       distinctions are always significant in identifiers with external
--- 35194,35215 ----
  4.3 Identifiers
  ===============
  
!    â€¢ â€˜Which additional multibyte characters may appear in identifiers
       and their correspondence to universal character names (C99 and C11
!      6.4.2).â€™
  
       *Note Implementation-defined behavior: (cpp)Implementation-defined
       behavior.
  
!    â€¢ â€˜The number of significant initial characters in an identifier (C90
!      6.1.2, C90, C99 and C11 5.2.4.1, C99 and C11 6.4.2).â€™
  
       For internal names, all characters are significant.  For external
       names, the number of significant characters are defined by the
       linker; for almost all targets, all characters are significant.
  
!    â€¢ â€˜Whether case distinctions are significant in an identifier with
!      external linkage (C90 6.1.2).â€™
  
       This is a property of the linker.  C99 and C11 require that case
       distinctions are always significant in identifiers with external
*************** File: gcc.info,  Node: Characters implem
*** 35213,35306 ****
  4.4 Characters
  ==============
  
!    * 'The number of bits in a byte (C90 3.4, C99 and C11 3.6).'
  
       Determined by ABI.
  
!    * 'The values of the members of the execution character set (C90, C99
!      and C11 5.2.1).'
  
       Determined by ABI.
  
!    * 'The unique value of the member of the execution character set
       produced for each of the standard alphabetic escape sequences (C90,
!      C99 and C11 5.2.2).'
  
       Determined by ABI.
  
!    * 'The value of a 'char' object into which has been stored any
       character other than a member of the basic execution character set
!      (C90 6.1.2.5, C99 and C11 6.2.5).'
  
       Determined by ABI.
  
!    * 'Which of 'signed char' or 'unsigned char' has the same range,
!      representation, and behavior as "plain" 'char' (C90 6.1.2.5, C90
!      6.2.1.1, C99 and C11 6.2.5, C99 and C11 6.3.1.1).'
  
!      Determined by ABI.  The options '-funsigned-char' and
!      '-fsigned-char' change the default.  *Note Options Controlling C
       Dialect: C Dialect Options.
  
!    * 'The mapping of members of the source character set (in character
       constants and string literals) to members of the execution
       character set (C90 6.1.3.4, C99 and C11 6.4.4.4, C90, C99 and C11
!      5.1.1.2).'
  
       Determined by ABI.
  
!    * 'The value of an integer character constant containing more than
       one character or containing a character or escape sequence that
       does not map to a single-byte execution character (C90 6.1.3.4, C99
!      and C11 6.4.4.4).'
  
       *Note Implementation-defined behavior: (cpp)Implementation-defined
       behavior.
  
!    * 'The value of a wide character constant containing more than one
       multibyte character or a single multibyte character that maps to
       multiple members of the extended execution character set, or
       containing a multibyte character or escape sequence not represented
       in the extended execution character set (C90 6.1.3.4, C99 and C11
!      6.4.4.4).'
  
       *Note Implementation-defined behavior: (cpp)Implementation-defined
       behavior.
  
!    * 'The current locale used to convert a wide character constant
       consisting of a single multibyte character that maps to a member of
       the extended execution character set into a corresponding wide
!      character code (C90 6.1.3.4, C99 and C11 6.4.4.4).'
  
       *Note Implementation-defined behavior: (cpp)Implementation-defined
       behavior.
  
!    * 'Whether differently-prefixed wide string literal tokens can be
       concatenated and, if so, the treatment of the resulting multibyte
!      character sequence (C11 6.4.5).'
  
       Such tokens may not be concatenated.
  
!    * 'The current locale used to convert a wide string literal into
!      corresponding wide character codes (C90 6.1.4, C99 and C11 6.4.5).'
  
       *Note Implementation-defined behavior: (cpp)Implementation-defined
       behavior.
  
!    * 'The value of a string literal containing a multibyte character or
       escape sequence not represented in the execution character set (C90
!      6.1.4, C99 and C11 6.4.5).'
  
       *Note Implementation-defined behavior: (cpp)Implementation-defined
       behavior.
  
!    * 'The encoding of any of 'wchar_t', 'char16_t', and 'char32_t' where
!      the corresponding standard encoding macro ('__STDC_ISO_10646__',
!      '__STDC_UTF_16__', or '__STDC_UTF_32__') is not defined (C11
!      6.10.8.2).'
  
       *Note Implementation-defined behavior: (cpp)Implementation-defined
!      behavior.  'char16_t' and 'char32_t' literals are always encoded in
       UTF-16 and UTF-32 respectively.
  
  
--- 35221,35314 ----
  4.4 Characters
  ==============
  
!    â€¢ â€˜The number of bits in a byte (C90 3.4, C99 and C11 3.6).â€™
  
       Determined by ABI.
  
!    â€¢ â€˜The values of the members of the execution character set (C90, C99
!      and C11 5.2.1).â€™
  
       Determined by ABI.
  
!    â€¢ â€˜The unique value of the member of the execution character set
       produced for each of the standard alphabetic escape sequences (C90,
!      C99 and C11 5.2.2).â€™
  
       Determined by ABI.
  
!    â€¢ â€˜The value of a â€˜charâ€™ object into which has been stored any
       character other than a member of the basic execution character set
!      (C90 6.1.2.5, C99 and C11 6.2.5).â€™
  
       Determined by ABI.
  
!    â€¢ â€˜Which of â€˜signed charâ€™ or â€˜unsigned charâ€™ has the same range,
!      representation, and behavior as "plain" â€˜charâ€™ (C90 6.1.2.5, C90
!      6.2.1.1, C99 and C11 6.2.5, C99 and C11 6.3.1.1).â€™
  
!      Determined by ABI.  The options â€˜-funsigned-charâ€™ and
!      â€˜-fsigned-charâ€™ change the default.  *Note Options Controlling C
       Dialect: C Dialect Options.
  
!    â€¢ â€˜The mapping of members of the source character set (in character
       constants and string literals) to members of the execution
       character set (C90 6.1.3.4, C99 and C11 6.4.4.4, C90, C99 and C11
!      5.1.1.2).â€™
  
       Determined by ABI.
  
!    â€¢ â€˜The value of an integer character constant containing more than
       one character or containing a character or escape sequence that
       does not map to a single-byte execution character (C90 6.1.3.4, C99
!      and C11 6.4.4.4).â€™
  
       *Note Implementation-defined behavior: (cpp)Implementation-defined
       behavior.
  
!    â€¢ â€˜The value of a wide character constant containing more than one
       multibyte character or a single multibyte character that maps to
       multiple members of the extended execution character set, or
       containing a multibyte character or escape sequence not represented
       in the extended execution character set (C90 6.1.3.4, C99 and C11
!      6.4.4.4).â€™
  
       *Note Implementation-defined behavior: (cpp)Implementation-defined
       behavior.
  
!    â€¢ â€˜The current locale used to convert a wide character constant
       consisting of a single multibyte character that maps to a member of
       the extended execution character set into a corresponding wide
!      character code (C90 6.1.3.4, C99 and C11 6.4.4.4).â€™
  
       *Note Implementation-defined behavior: (cpp)Implementation-defined
       behavior.
  
!    â€¢ â€˜Whether differently-prefixed wide string literal tokens can be
       concatenated and, if so, the treatment of the resulting multibyte
!      character sequence (C11 6.4.5).â€™
  
       Such tokens may not be concatenated.
  
!    â€¢ â€˜The current locale used to convert a wide string literal into
!      corresponding wide character codes (C90 6.1.4, C99 and C11 6.4.5).â€™
  
       *Note Implementation-defined behavior: (cpp)Implementation-defined
       behavior.
  
!    â€¢ â€˜The value of a string literal containing a multibyte character or
       escape sequence not represented in the execution character set (C90
!      6.1.4, C99 and C11 6.4.5).â€™
  
       *Note Implementation-defined behavior: (cpp)Implementation-defined
       behavior.
  
!    â€¢ â€˜The encoding of any of â€˜wchar_tâ€™, â€˜char16_tâ€™, and â€˜char32_tâ€™ where
!      the corresponding standard encoding macro (â€˜__STDC_ISO_10646__â€™,
!      â€˜__STDC_UTF_16__â€™, or â€˜__STDC_UTF_32__â€™) is not defined (C11
!      6.10.8.2).â€™
  
       *Note Implementation-defined behavior: (cpp)Implementation-defined
!      behavior.  â€˜char16_tâ€™ and â€˜char32_tâ€™ literals are always encoded in
       UTF-16 and UTF-32 respectively.
  
  
*************** File: gcc.info,  Node: Integers implemen
*** 35309,35354 ****
  4.5 Integers
  ============
  
!    * 'Any extended integer types that exist in the implementation (C99
!      and C11 6.2.5).'
  
       GCC does not support any extended integer types.
  
!    * 'Whether signed integer types are represented using sign and
       magnitude, two's complement, or one's complement, and whether the
       extraordinary value is a trap representation or an ordinary value
!      (C99 and C11 6.2.6.2).'
  
       GCC supports only two's complement integer types, and all bit
       patterns are ordinary values.
  
!    * 'The rank of any extended integer type relative to another extended
!      integer type with the same precision (C99 and C11 6.3.1.1).'
  
       GCC does not support any extended integer types.
  
!    * 'The result of, or the signal raised by, converting an integer to a
       signed integer type when the value cannot be represented in an
!      object of that type (C90 6.2.1.2, C99 and C11 6.3.1.3).'
  
       For conversion to a type of width N, the value is reduced modulo
       2^N to be within range of the type; no signal is raised.
  
!    * 'The results of some bitwise operations on signed integers (C90
!      6.3, C99 and C11 6.5).'
  
       Bitwise operators act on the representation of the value including
       both the sign and value bits, where the sign bit is considered
!      immediately above the highest-value value bit.  Signed '>>' acts on
       negative numbers by sign extension.
  
       As an extension to the C language, GCC does not use the latitude
!      given in C99 and C11 only to treat certain aspects of signed '<<'
!      as undefined.  However, '-fsanitize=shift' (and
!      '-fsanitize=undefined') will diagnose such cases.  They are also
       diagnosed where constant expressions are required.
  
!    * 'The sign of the remainder on integer division (C90 6.3.5).'
  
       GCC always follows the C99 and C11 requirement that the result of
       division is truncated towards zero.
--- 35317,35362 ----
  4.5 Integers
  ============
  
!    â€¢ â€˜Any extended integer types that exist in the implementation (C99
!      and C11 6.2.5).â€™
  
       GCC does not support any extended integer types.
  
!    â€¢ â€˜Whether signed integer types are represented using sign and
       magnitude, two's complement, or one's complement, and whether the
       extraordinary value is a trap representation or an ordinary value
!      (C99 and C11 6.2.6.2).â€™
  
       GCC supports only two's complement integer types, and all bit
       patterns are ordinary values.
  
!    â€¢ â€˜The rank of any extended integer type relative to another extended
!      integer type with the same precision (C99 and C11 6.3.1.1).â€™
  
       GCC does not support any extended integer types.
  
!    â€¢ â€˜The result of, or the signal raised by, converting an integer to a
       signed integer type when the value cannot be represented in an
!      object of that type (C90 6.2.1.2, C99 and C11 6.3.1.3).â€™
  
       For conversion to a type of width N, the value is reduced modulo
       2^N to be within range of the type; no signal is raised.
  
!    â€¢ â€˜The results of some bitwise operations on signed integers (C90
!      6.3, C99 and C11 6.5).â€™
  
       Bitwise operators act on the representation of the value including
       both the sign and value bits, where the sign bit is considered
!      immediately above the highest-value value bit.  Signed â€˜>>â€™ acts on
       negative numbers by sign extension.
  
       As an extension to the C language, GCC does not use the latitude
!      given in C99 and C11 only to treat certain aspects of signed â€˜<<â€™
!      as undefined.  However, â€˜-fsanitize=shiftâ€™ (and
!      â€˜-fsanitize=undefinedâ€™) will diagnose such cases.  They are also
       diagnosed where constant expressions are required.
  
!    â€¢ â€˜The sign of the remainder on integer division (C90 6.3.5).â€™
  
       GCC always follows the C99 and C11 requirement that the result of
       division is truncated towards zero.
*************** File: gcc.info,  Node: Floating point im
*** 35359,35437 ****
  4.6 Floating Point
  ==================
  
!    * 'The accuracy of the floating-point operations and of the library
!      functions in '<math.h>' and '<complex.h>' that return
!      floating-point results (C90, C99 and C11 5.2.4.2.2).'
  
       The accuracy is unknown.
  
!    * 'The rounding behaviors characterized by non-standard values of
!      'FLT_ROUNDS' (C90, C99 and C11 5.2.4.2.2).'
  
       GCC does not use such values.
  
!    * 'The evaluation methods characterized by non-standard negative
!      values of 'FLT_EVAL_METHOD' (C99 and C11 5.2.4.2.2).'
  
       GCC does not use such values.
  
!    * 'The direction of rounding when an integer is converted to a
       floating-point number that cannot exactly represent the original
!      value (C90 6.2.1.3, C99 and C11 6.3.1.4).'
  
       C99 Annex F is followed.
  
!    * 'The direction of rounding when a floating-point number is
       converted to a narrower floating-point number (C90 6.2.1.4, C99 and
!      C11 6.3.1.5).'
  
       C99 Annex F is followed.
  
!    * 'How the nearest representable value or the larger or smaller
       representable value immediately adjacent to the nearest
       representable value is chosen for certain floating constants (C90
!      6.1.3.1, C99 and C11 6.4.4.2).'
  
       C99 Annex F is followed.
  
!    * 'Whether and how floating expressions are contracted when not
!      disallowed by the 'FP_CONTRACT' pragma (C99 and C11 6.5).'
  
!      Expressions are currently only contracted if '-ffp-contract=fast',
!      '-funsafe-math-optimizations' or '-ffast-math' are used.  This is
       subject to change.
  
!    * 'The default state for the 'FENV_ACCESS' pragma (C99 and C11
!      7.6.1).'
  
       This pragma is not implemented, but the default is to "off" unless
!      '-frounding-math' is used and '-fno-trapping-math' is not in which
       case it is "on".
  
!    * 'Additional floating-point exceptions, rounding modes,
       environments, and classifications, and their macro names (C99 and
!      C11 7.6, C99 and C11 7.12).'
  
       This is dependent on the implementation of the C library, and is
       not defined by GCC itself.
  
!    * 'The default state for the 'FP_CONTRACT' pragma (C99 and C11
!      7.12.2).'
  
       This pragma is not implemented.  Expressions are currently only
!      contracted if '-ffp-contract=fast', '-funsafe-math-optimizations'
!      or '-ffast-math' are used.  This is subject to change.
  
!    * 'Whether the "inexact" floating-point exception can be raised when
       the rounded result actually does equal the mathematical result in
!      an IEC 60559 conformant implementation (C99 F.9).'
  
       This is dependent on the implementation of the C library, and is
       not defined by GCC itself.
  
!    * 'Whether the "underflow" (and "inexact") floating-point exception
       can be raised when a result is tiny but not inexact in an IEC 60559
!      conformant implementation (C99 F.9).'
  
       This is dependent on the implementation of the C library, and is
       not defined by GCC itself.
--- 35367,35445 ----
  4.6 Floating Point
  ==================
  
!    â€¢ â€˜The accuracy of the floating-point operations and of the library
!      functions in â€˜<math.h>â€™ and â€˜<complex.h>â€™ that return
!      floating-point results (C90, C99 and C11 5.2.4.2.2).â€™
  
       The accuracy is unknown.
  
!    â€¢ â€˜The rounding behaviors characterized by non-standard values of
!      â€˜FLT_ROUNDSâ€™ (C90, C99 and C11 5.2.4.2.2).â€™
  
       GCC does not use such values.
  
!    â€¢ â€˜The evaluation methods characterized by non-standard negative
!      values of â€˜FLT_EVAL_METHODâ€™ (C99 and C11 5.2.4.2.2).â€™
  
       GCC does not use such values.
  
!    â€¢ â€˜The direction of rounding when an integer is converted to a
       floating-point number that cannot exactly represent the original
!      value (C90 6.2.1.3, C99 and C11 6.3.1.4).â€™
  
       C99 Annex F is followed.
  
!    â€¢ â€˜The direction of rounding when a floating-point number is
       converted to a narrower floating-point number (C90 6.2.1.4, C99 and
!      C11 6.3.1.5).â€™
  
       C99 Annex F is followed.
  
!    â€¢ â€˜How the nearest representable value or the larger or smaller
       representable value immediately adjacent to the nearest
       representable value is chosen for certain floating constants (C90
!      6.1.3.1, C99 and C11 6.4.4.2).â€™
  
       C99 Annex F is followed.
  
!    â€¢ â€˜Whether and how floating expressions are contracted when not
!      disallowed by the â€˜FP_CONTRACTâ€™ pragma (C99 and C11 6.5).â€™
  
!      Expressions are currently only contracted if â€˜-ffp-contract=fastâ€™,
!      â€˜-funsafe-math-optimizationsâ€™ or â€˜-ffast-mathâ€™ are used.  This is
       subject to change.
  
!    â€¢ â€˜The default state for the â€˜FENV_ACCESSâ€™ pragma (C99 and C11
!      7.6.1).â€™
  
       This pragma is not implemented, but the default is to "off" unless
!      â€˜-frounding-mathâ€™ is used and â€˜-fno-trapping-mathâ€™ is not in which
       case it is "on".
  
!    â€¢ â€˜Additional floating-point exceptions, rounding modes,
       environments, and classifications, and their macro names (C99 and
!      C11 7.6, C99 and C11 7.12).â€™
  
       This is dependent on the implementation of the C library, and is
       not defined by GCC itself.
  
!    â€¢ â€˜The default state for the â€˜FP_CONTRACTâ€™ pragma (C99 and C11
!      7.12.2).â€™
  
       This pragma is not implemented.  Expressions are currently only
!      contracted if â€˜-ffp-contract=fastâ€™, â€˜-funsafe-math-optimizationsâ€™
!      or â€˜-ffast-mathâ€™ are used.  This is subject to change.
  
!    â€¢ â€˜Whether the "inexact" floating-point exception can be raised when
       the rounded result actually does equal the mathematical result in
!      an IEC 60559 conformant implementation (C99 F.9).â€™
  
       This is dependent on the implementation of the C library, and is
       not defined by GCC itself.
  
!    â€¢ â€˜Whether the "underflow" (and "inexact") floating-point exception
       can be raised when a result is tiny but not inexact in an IEC 60559
!      conformant implementation (C99 F.9).â€™
  
       This is dependent on the implementation of the C library, and is
       not defined by GCC itself.
*************** File: gcc.info,  Node: Arrays and pointe
*** 35442,35449 ****
  4.7 Arrays and Pointers
  =======================
  
!    * 'The result of converting a pointer to an integer or vice versa
!      (C90 6.3.4, C99 and C11 6.3.2.3).'
  
       A cast from pointer to integer discards most-significant bits if
       the pointer representation is larger than the integer type,
--- 35450,35457 ----
  4.7 Arrays and Pointers
  =======================
  
!    â€¢ â€˜The result of converting a pointer to an integer or vice versa
!      (C90 6.3.4, C99 and C11 6.3.2.3).â€™
  
       A cast from pointer to integer discards most-significant bits if
       the pointer representation is larger than the integer type,
*************** File: gcc.info,  Node: Arrays and pointe
*** 35462,35469 ****
       integer arithmetic to avoid the undefined behavior of pointer
       arithmetic as proscribed in C99 and C11 6.5.6/8.
  
!    * 'The size of the result of subtracting two pointers to elements of
!      the same array (C90 6.3.6, C99 and C11 6.5.6).'
  
       The value is as specified in the standard and the type is
       determined by the ABI.
--- 35470,35477 ----
       integer arithmetic to avoid the undefined behavior of pointer
       arithmetic as proscribed in C99 and C11 6.5.6/8.
  
!    â€¢ â€˜The size of the result of subtracting two pointers to elements of
!      the same array (C90 6.3.6, C99 and C11 6.5.6).â€™
  
       The value is as specified in the standard and the type is
       determined by the ABI.
*************** File: gcc.info,  Node: Arrays and pointe
*** 35471,35477 ****
     ---------- Footnotes ----------
  
     (1) Future versions of GCC may zero-extend, or use a target-defined
! 'ptr_extend' pattern.  Do not rely on sign extension.
  
  
  File: gcc.info,  Node: Hints implementation,  Next: Structures unions enumerations and bit-fields implementation,  Prev: Arrays and pointers implementation,  Up: C Implementation
--- 35479,35485 ----
     ---------- Footnotes ----------
  
     (1) Future versions of GCC may zero-extend, or use a target-defined
! â€˜ptr_extendâ€™ pattern.  Do not rely on sign extension.
  
  
  File: gcc.info,  Node: Hints implementation,  Next: Structures unions enumerations and bit-fields implementation,  Prev: Arrays and pointers implementation,  Up: C Implementation
*************** File: gcc.info,  Node: Hints implementat
*** 35479,35510 ****
  4.8 Hints
  =========
  
!    * 'The extent to which suggestions made by using the 'register'
       storage-class specifier are effective (C90 6.5.1, C99 and C11
!      6.7.1).'
  
!      The 'register' specifier affects code generation only in these
       ways:
  
!         * When used as part of the register variable extension, see
            *note Explicit Register Variables::.
  
!         * When '-O0' is in use, the compiler allocates distinct stack
!           memory for all variables that do not have the 'register'
!           storage-class specifier; if 'register' is specified, the
            variable may have a shorter lifespan than the code would
            indicate and may never be placed in memory.
  
!         * On some rare x86 targets, 'setjmp' doesn't save the registers
            in all circumstances.  In those cases, GCC doesn't allocate
!           any variables in registers unless they are marked 'register'.
  
!    * 'The extent to which suggestions made by using the inline function
!      specifier are effective (C99 and C11 6.7.4).'
  
!      GCC will not inline any functions if the '-fno-inline' option is
!      used or if '-O0' is used.  Otherwise, GCC may still be unable to
!      inline a function for many reasons; the '-Winline' option may be
       used to determine if a function has not been inlined and why not.
  
  
--- 35487,35518 ----
  4.8 Hints
  =========
  
!    â€¢ â€˜The extent to which suggestions made by using the â€˜registerâ€™
       storage-class specifier are effective (C90 6.5.1, C99 and C11
!      6.7.1).â€™
  
!      The â€˜registerâ€™ specifier affects code generation only in these
       ways:
  
!         â€¢ When used as part of the register variable extension, see
            *note Explicit Register Variables::.
  
!         â€¢ When â€˜-O0â€™ is in use, the compiler allocates distinct stack
!           memory for all variables that do not have the â€˜registerâ€™
!           storage-class specifier; if â€˜registerâ€™ is specified, the
            variable may have a shorter lifespan than the code would
            indicate and may never be placed in memory.
  
!         â€¢ On some rare x86 targets, â€˜setjmpâ€™ doesn't save the registers
            in all circumstances.  In those cases, GCC doesn't allocate
!           any variables in registers unless they are marked â€˜registerâ€™.
  
!    â€¢ â€˜The extent to which suggestions made by using the inline function
!      specifier are effective (C99 and C11 6.7.4).â€™
  
!      GCC will not inline any functions if the â€˜-fno-inlineâ€™ option is
!      used or if â€˜-O0â€™ is used.  Otherwise, GCC may still be unable to
!      inline a function for many reasons; the â€˜-Winlineâ€™ option may be
       used to determine if a function has not been inlined and why not.
  
  
*************** File: gcc.info,  Node: Structures unions
*** 35513,35568 ****
  4.9 Structures, Unions, Enumerations, and Bit-Fields
  ====================================================
  
!    * 'A member of a union object is accessed using a member of a
!      different type (C90 6.3.2.3).'
  
       The relevant bytes of the representation of the object are treated
       as an object of the type used for the access.  *Note
       Type-punning::.  This may be a trap representation.
  
!    * 'Whether a "plain" 'int' bit-field is treated as a 'signed int'
!      bit-field or as an 'unsigned int' bit-field (C90 6.5.2, C90
!      6.5.2.1, C99 and C11 6.7.2, C99 and C11 6.7.2.1).'
  
!      By default it is treated as 'signed int' but this may be changed by
!      the '-funsigned-bitfields' option.
  
!    * 'Allowable bit-field types other than '_Bool', 'signed int', and
!      'unsigned int' (C99 and C11 6.7.2.1).'
  
!      Other integer types, such as 'long int', and enumerated types are
       permitted even in strictly conforming mode.
  
!    * 'Whether atomic types are permitted for bit-fields (C11 6.7.2.1).'
  
       Atomic types are not permitted for bit-fields.
  
!    * 'Whether a bit-field can straddle a storage-unit boundary (C90
!      6.5.2.1, C99 and C11 6.7.2.1).'
  
       Determined by ABI.
  
!    * 'The order of allocation of bit-fields within a unit (C90 6.5.2.1,
!      C99 and C11 6.7.2.1).'
  
       Determined by ABI.
  
!    * 'The alignment of non-bit-field members of structures (C90 6.5.2.1,
!      C99 and C11 6.7.2.1).'
  
       Determined by ABI.
  
!    * 'The integer type compatible with each enumerated type (C90
!      6.5.2.2, C99 and C11 6.7.2.2).'
  
!      Normally, the type is 'unsigned int' if there are no negative
!      values in the enumeration, otherwise 'int'.  If '-fshort-enums' is
       specified, then if there are negative values it is the first of
!      'signed char', 'short' and 'int' that can represent all the values,
!      otherwise it is the first of 'unsigned char', 'unsigned short' and
!      'unsigned int' that can represent all the values.
  
!      On some targets, '-fshort-enums' is the default; this is determined
       by the ABI.
  
  
--- 35521,35576 ----
  4.9 Structures, Unions, Enumerations, and Bit-Fields
  ====================================================
  
!    â€¢ â€˜A member of a union object is accessed using a member of a
!      different type (C90 6.3.2.3).â€™
  
       The relevant bytes of the representation of the object are treated
       as an object of the type used for the access.  *Note
       Type-punning::.  This may be a trap representation.
  
!    â€¢ â€˜Whether a "plain" â€˜intâ€™ bit-field is treated as a â€˜signed intâ€™
!      bit-field or as an â€˜unsigned intâ€™ bit-field (C90 6.5.2, C90
!      6.5.2.1, C99 and C11 6.7.2, C99 and C11 6.7.2.1).â€™
  
!      By default it is treated as â€˜signed intâ€™ but this may be changed by
!      the â€˜-funsigned-bitfieldsâ€™ option.
  
!    â€¢ â€˜Allowable bit-field types other than â€˜_Boolâ€™, â€˜signed intâ€™, and
!      â€˜unsigned intâ€™ (C99 and C11 6.7.2.1).â€™
  
!      Other integer types, such as â€˜long intâ€™, and enumerated types are
       permitted even in strictly conforming mode.
  
!    â€¢ â€˜Whether atomic types are permitted for bit-fields (C11 6.7.2.1).â€™
  
       Atomic types are not permitted for bit-fields.
  
!    â€¢ â€˜Whether a bit-field can straddle a storage-unit boundary (C90
!      6.5.2.1, C99 and C11 6.7.2.1).â€™
  
       Determined by ABI.
  
!    â€¢ â€˜The order of allocation of bit-fields within a unit (C90 6.5.2.1,
!      C99 and C11 6.7.2.1).â€™
  
       Determined by ABI.
  
!    â€¢ â€˜The alignment of non-bit-field members of structures (C90 6.5.2.1,
!      C99 and C11 6.7.2.1).â€™
  
       Determined by ABI.
  
!    â€¢ â€˜The integer type compatible with each enumerated type (C90
!      6.5.2.2, C99 and C11 6.7.2.2).â€™
  
!      Normally, the type is â€˜unsigned intâ€™ if there are no negative
!      values in the enumeration, otherwise â€˜intâ€™.  If â€˜-fshort-enumsâ€™ is
       specified, then if there are negative values it is the first of
!      â€˜signed charâ€™, â€˜shortâ€™ and â€˜intâ€™ that can represent all the values,
!      otherwise it is the first of â€˜unsigned charâ€™, â€˜unsigned shortâ€™ and
!      â€˜unsigned intâ€™ that can represent all the values.
  
!      On some targets, â€˜-fshort-enumsâ€™ is the default; this is determined
       by the ABI.
  
  
*************** File: gcc.info,  Node: Qualifiers implem
*** 35571,35578 ****
  4.10 Qualifiers
  ===============
  
!    * 'What constitutes an access to an object that has
!      volatile-qualified type (C90 6.5.3, C99 and C11 6.7.3).'
  
       Such an object is normally accessed by pointers and used for
       accessing hardware.  In most expressions, it is intuitively obvious
--- 35579,35586 ----
  4.10 Qualifiers
  ===============
  
!    â€¢ â€˜What constitutes an access to an object that has
!      volatile-qualified type (C90 6.5.3, C99 and C11 6.7.3).â€™
  
       Such an object is normally accessed by pointers and used for
       accessing hardware.  In most expressions, it is intuitively obvious
*************** File: gcc.info,  Node: Qualifiers implem
*** 35585,35591 ****
       will cause a read of the volatile object pointed to by SRC and
       store the value into the volatile object pointed to by DST.  There
       is no guarantee that these reads and writes are atomic, especially
!      for objects larger than 'int'.
  
       However, if the volatile storage is not being modified, and the
       value of the volatile storage is not used, then the situation is
--- 35593,35599 ----
       will cause a read of the volatile object pointed to by SRC and
       store the value into the volatile object pointed to by DST.  There
       is no guarantee that these reads and writes are atomic, especially
!      for objects larger than â€˜intâ€™.
  
       However, if the volatile storage is not being modified, and the
       value of the volatile storage is not used, then the situation is
*************** File: gcc.info,  Node: Qualifiers implem
*** 35595,35601 ****
            *src;
  
       According to the C standard, such an expression is an rvalue whose
!      type is the unqualified version of its original type, i.e. 'int'.
       Whether GCC interprets this as a read of the volatile object being
       pointed to or only as a request to evaluate the expression for its
       side effects depends on this type.
--- 35603,35609 ----
            *src;
  
       According to the C standard, such an expression is an rvalue whose
!      type is the unqualified version of its original type, i.e. â€˜intâ€™.
       Whether GCC interprets this as a read of the volatile object being
       pointed to or only as a request to evaluate the expression for its
       side effects depends on this type.
*************** File: gcc.info,  Node: Qualifiers implem
*** 35607,35615 ****
       expression is only evaluated for its side effects.
  
       When an object of an aggregate type, with the same size and
!      alignment as a scalar type 'S', is the subject of a volatile access
       by an assignment expression or an atomic function, the access to it
!      is performed as if the object's declared type were 'volatile S'.
  
  
  File: gcc.info,  Node: Declarators implementation,  Next: Statements implementation,  Prev: Qualifiers implementation,  Up: C Implementation
--- 35615,35623 ----
       expression is only evaluated for its side effects.
  
       When an object of an aggregate type, with the same size and
!      alignment as a scalar type â€˜Sâ€™, is the subject of a volatile access
       by an assignment expression or an atomic function, the access to it
!      is performed as if the object's declared type were â€˜volatile Sâ€™.
  
  
  File: gcc.info,  Node: Declarators implementation,  Next: Statements implementation,  Prev: Qualifiers implementation,  Up: C Implementation
*************** File: gcc.info,  Node: Declarators imple
*** 35617,35624 ****
  4.11 Declarators
  ================
  
!    * 'The maximum number of declarators that may modify an arithmetic,
!      structure or union type (C90 6.5.4).'
  
       GCC is only limited by available memory.
  
--- 35625,35632 ----
  4.11 Declarators
  ================
  
!    â€¢ â€˜The maximum number of declarators that may modify an arithmetic,
!      structure or union type (C90 6.5.4).â€™
  
       GCC is only limited by available memory.
  
*************** File: gcc.info,  Node: Statements implem
*** 35628,35635 ****
  4.12 Statements
  ===============
  
!    * 'The maximum number of 'case' values in a 'switch' statement (C90
!      6.6.4.2).'
  
       GCC is only limited by available memory.
  
--- 35636,35643 ----
  4.12 Statements
  ===============
  
!    â€¢ â€˜The maximum number of â€˜caseâ€™ values in a â€˜switchâ€™ statement (C90
!      6.6.4.2).â€™
  
       GCC is only limited by available memory.
  
*************** File: gcc.info,  Node: Preprocessing dir
*** 35643,35691 ****
  behavior, for details of these aspects of implementation-defined
  behavior.
  
!    * 'The locations within '#pragma' directives where header name
!      preprocessing tokens are recognized (C11 6.4, C11 6.4.7).'
  
!    * 'How sequences in both forms of header names are mapped to headers
!      or external source file names (C90 6.1.7, C99 and C11 6.4.7).'
  
!    * 'Whether the value of a character constant in a constant expression
       that controls conditional inclusion matches the value of the same
       character constant in the execution character set (C90 6.8.1, C99
!      and C11 6.10.1).'
  
!    * 'Whether the value of a single-character character constant in a
       constant expression that controls conditional inclusion may have a
!      negative value (C90 6.8.1, C99 and C11 6.10.1).'
  
!    * 'The places that are searched for an included '<>' delimited
       header, and how the places are specified or the header is
!      identified (C90 6.8.2, C99 and C11 6.10.2).'
  
!    * 'How the named source file is searched for in an included '""'
!      delimited header (C90 6.8.2, C99 and C11 6.10.2).'
  
!    * 'The method by which preprocessing tokens (possibly resulting from
!      macro expansion) in a '#include' directive are combined into a
!      header name (C90 6.8.2, C99 and C11 6.10.2).'
  
!    * 'The nesting limit for '#include' processing (C90 6.8.2, C99 and
!      C11 6.10.2).'
  
!    * 'Whether the '#' operator inserts a '\' character before the '\'
       character that begins a universal character name in a character
!      constant or string literal (C99 and C11 6.10.3.2).'
  
!    * 'The behavior on each recognized non-'STDC #pragma' directive (C90
!      6.8.6, C99 and C11 6.10.6).'
  
       *Note Pragmas: (cpp)Pragmas, for details of pragmas accepted by GCC
       on all targets.  *Note Pragmas Accepted by GCC: Pragmas, for
       details of target-specific pragmas.
  
!    * 'The definitions for '__DATE__' and '__TIME__' when respectively,
       the date and time of translation are not available (C90 6.8.8, C99
!      6.10.8, C11 6.10.8.1).'
  
  
  File: gcc.info,  Node: Library functions implementation,  Next: Architecture implementation,  Prev: Preprocessing directives implementation,  Up: C Implementation
--- 35651,35699 ----
  behavior, for details of these aspects of implementation-defined
  behavior.
  
!    â€¢ â€˜The locations within â€˜#pragmaâ€™ directives where header name
!      preprocessing tokens are recognized (C11 6.4, C11 6.4.7).â€™
  
!    â€¢ â€˜How sequences in both forms of header names are mapped to headers
!      or external source file names (C90 6.1.7, C99 and C11 6.4.7).â€™
  
!    â€¢ â€˜Whether the value of a character constant in a constant expression
       that controls conditional inclusion matches the value of the same
       character constant in the execution character set (C90 6.8.1, C99
!      and C11 6.10.1).â€™
  
!    â€¢ â€˜Whether the value of a single-character character constant in a
       constant expression that controls conditional inclusion may have a
!      negative value (C90 6.8.1, C99 and C11 6.10.1).â€™
  
!    â€¢ â€˜The places that are searched for an included â€˜<>â€™ delimited
       header, and how the places are specified or the header is
!      identified (C90 6.8.2, C99 and C11 6.10.2).â€™
  
!    â€¢ â€˜How the named source file is searched for in an included â€˜""â€™
!      delimited header (C90 6.8.2, C99 and C11 6.10.2).â€™
  
!    â€¢ â€˜The method by which preprocessing tokens (possibly resulting from
!      macro expansion) in a â€˜#includeâ€™ directive are combined into a
!      header name (C90 6.8.2, C99 and C11 6.10.2).â€™
  
!    â€¢ â€˜The nesting limit for â€˜#includeâ€™ processing (C90 6.8.2, C99 and
!      C11 6.10.2).â€™
  
!    â€¢ â€˜Whether the â€˜#â€™ operator inserts a â€˜\â€™ character before the â€˜\â€™
       character that begins a universal character name in a character
!      constant or string literal (C99 and C11 6.10.3.2).â€™
  
!    â€¢ â€˜The behavior on each recognized non-â€˜STDC #pragmaâ€™ directive (C90
!      6.8.6, C99 and C11 6.10.6).â€™
  
       *Note Pragmas: (cpp)Pragmas, for details of pragmas accepted by GCC
       on all targets.  *Note Pragmas Accepted by GCC: Pragmas, for
       details of target-specific pragmas.
  
!    â€¢ â€˜The definitions for â€˜__DATE__â€™ and â€˜__TIME__â€™ when respectively,
       the date and time of translation are not available (C90 6.8.8, C99
!      6.10.8, C11 6.10.8.1).â€™
  
  
  File: gcc.info,  Node: Library functions implementation,  Next: Architecture implementation,  Prev: Preprocessing directives implementation,  Up: C Implementation
*************** File: gcc.info,  Node: Library functions
*** 35696,35706 ****
  The behavior of most of these points are dependent on the implementation
  of the C library, and are not defined by GCC itself.
  
!    * 'The null pointer constant to which the macro 'NULL' expands (C90
!      7.1.6, C99 7.17, C11 7.19).'
  
!      In '<stddef.h>', 'NULL' expands to '((void *)0)'.  GCC does not
!      provide the other headers which define 'NULL' and some library
       implementations may use other definitions in those headers.
  
  
--- 35704,35714 ----
  The behavior of most of these points are dependent on the implementation
  of the C library, and are not defined by GCC itself.
  
!    â€¢ â€˜The null pointer constant to which the macro â€˜NULLâ€™ expands (C90
!      7.1.6, C99 7.17, C11 7.19).â€™
  
!      In â€˜<stddef.h>â€™, â€˜NULLâ€™ expands to â€˜((void *)0)â€™.  GCC does not
!      provide the other headers which define â€˜NULLâ€™ and some library
       implementations may use other definitions in those headers.
  
  
*************** File: gcc.info,  Node: Architecture impl
*** 35709,35748 ****
  4.15 Architecture
  =================
  
!    * 'The values or expressions assigned to the macros specified in the
!      headers '<float.h>', '<limits.h>', and '<stdint.h>' (C90, C99 and
!      C11 5.2.4.2, C99 7.18.2, C99 7.18.3, C11 7.20.2, C11 7.20.3).'
  
       Determined by ABI.
  
!    * 'The result of attempting to indirectly access an object with
       automatic or thread storage duration from a thread other than the
!      one with which it is associated (C11 6.2.4).'
  
       Such accesses are supported, subject to the same requirements for
       synchronization for concurrent accesses as for concurrent accesses
       to any object.
  
!    * 'The number, order, and encoding of bytes in any object (when not
       explicitly specified in this International Standard) (C99 and C11
!      6.2.6.1).'
  
       Determined by ABI.
  
!    * 'Whether any extended alignments are supported and the contexts in
!      which they are supported (C11 6.2.8).'
  
       Extended alignments up to 2^{28} (bytes) are supported for objects
       of automatic storage duration.  Alignments supported for objects of
       static and thread storage duration are determined by the ABI.
  
!    * 'Valid alignment values other than those returned by an _Alignof
!      expression for fundamental types, if any (C11 6.2.8).'
  
       Valid alignments are powers of 2 up to and including 2^{28}.
  
!    * 'The value of the result of the 'sizeof' and '_Alignof' operators
!      (C90 6.3.3.4, C99 and C11 6.5.3.4).'
  
       Determined by ABI.
  
--- 35717,35756 ----
  4.15 Architecture
  =================
  
!    â€¢ â€˜The values or expressions assigned to the macros specified in the
!      headers â€˜<float.h>â€™, â€˜<limits.h>â€™, and â€˜<stdint.h>â€™ (C90, C99 and
!      C11 5.2.4.2, C99 7.18.2, C99 7.18.3, C11 7.20.2, C11 7.20.3).â€™
  
       Determined by ABI.
  
!    â€¢ â€˜The result of attempting to indirectly access an object with
       automatic or thread storage duration from a thread other than the
!      one with which it is associated (C11 6.2.4).â€™
  
       Such accesses are supported, subject to the same requirements for
       synchronization for concurrent accesses as for concurrent accesses
       to any object.
  
!    â€¢ â€˜The number, order, and encoding of bytes in any object (when not
       explicitly specified in this International Standard) (C99 and C11
!      6.2.6.1).â€™
  
       Determined by ABI.
  
!    â€¢ â€˜Whether any extended alignments are supported and the contexts in
!      which they are supported (C11 6.2.8).â€™
  
       Extended alignments up to 2^{28} (bytes) are supported for objects
       of automatic storage duration.  Alignments supported for objects of
       static and thread storage duration are determined by the ABI.
  
!    â€¢ â€˜Valid alignment values other than those returned by an _Alignof
!      expression for fundamental types, if any (C11 6.2.8).â€™
  
       Valid alignments are powers of 2 up to and including 2^{28}.
  
!    â€¢ â€˜The value of the result of the â€˜sizeofâ€™ and â€˜_Alignofâ€™ operators
!      (C90 6.3.3.4, C99 and C11 6.5.3.4).â€™
  
       Determined by ABI.
  
*************** File: gcc.info,  Node: Conditionally-sup
*** 35790,35801 ****
  5.1 Conditionally-Supported Behavior
  ====================================
  
! 'Each implementation shall include documentation that identifies all
  conditionally-supported constructs that it does not support (C++0x
! 1.4).'
  
!    * 'Whether an argument of class type with a non-trivial copy
!      constructor or destructor can be passed to ... (C++0x 5.2.2).'
  
       Such argument passing is supported, using the same
       pass-by-invisible-reference approach used for normal function
--- 35798,35809 ----
  5.1 Conditionally-Supported Behavior
  ====================================
  
! â€˜Each implementation shall include documentation that identifies all
  conditionally-supported constructs that it does not support (C++0x
! 1.4).â€™
  
!    â€¢ â€˜Whether an argument of class type with a non-trivial copy
!      constructor or destructor can be passed to ... (C++0x 5.2.2).â€™
  
       Such argument passing is supported, using the same
       pass-by-invisible-reference approach used for normal function
*************** File: gcc.info,  Node: Exception handlin
*** 35807,35815 ****
  5.2 Exception Handling
  ======================
  
!    * 'In the situation where no matching handler is found, it is
       implementation-defined whether or not the stack is unwound before
!      std::terminate() is called (C++98 15.5.1).'
  
       The stack is not unwound before std::terminate is called.
  
--- 35815,35823 ----
  5.2 Exception Handling
  ======================
  
!    â€¢ â€˜In the situation where no matching handler is found, it is
       implementation-defined whether or not the stack is unwound before
!      std::terminate() is called (C++98 15.5.1).â€™
  
       The stack is not unwound before std::terminate is called.
  
*************** File: gcc.info,  Node: C Extensions,  Ne
*** 35820,35828 ****
  *************************************
  
  GNU C provides several language features not found in ISO standard C.
! (The '-pedantic' option directs GCC to print a warning message if any of
  these features is used.)  To test for the availability of these features
! in conditional compilation, check for a predefined macro '__GNUC__',
  which is always defined under GCC.
  
   These extensions are available in C and Objective-C.  Most of them are
--- 35828,35836 ----
  *************************************
  
  GNU C provides several language features not found in ISO standard C.
! (The â€˜-pedanticâ€™ option directs GCC to print a warning message if any of
  these features is used.)  To test for the availability of these features
! in conditional compilation, check for a predefined macro â€˜__GNUC__â€™,
  which is always defined under GCC.
  
   These extensions are available in C and Objective-C.  Most of them are
*************** sizes and formats, decimal floating type
*** 35860,35867 ****
  
  * Menu:
  
! * __int128::		128-bit integers--'__int128'.
! * Long Long::           Double-word integers--'long long int'.
  * Complex::             Data types for complex numbers.
  * Floating Types::      Additional Floating Types.
  * Half-Precision::      Half-Precision Floating Point.
--- 35868,35875 ----
  
  * Menu:
  
! * __int128::		128-bit integers--â€˜__int128â€™.
! * Long Long::           Double-word integers--â€˜long long intâ€™.
  * Complex::             Data types for complex numbers.
  * Floating Types::      Additional Floating Types.
  * Half-Precision::      Half-Precision Floating Point.
*************** File: gcc.info,  Node: __int128,  Next:
*** 35874,35885 ****
  6.1.1 128-bit Integers
  ----------------------
  
! As an extension the integer scalar type '__int128' is supported for
  targets which have an integer mode wide enough to hold 128 bits.  Simply
! write '__int128' for a signed 128-bit integer, or 'unsigned __int128'
  for an unsigned 128-bit integer.  There is no support in GCC for
! expressing an integer constant of type '__int128' for targets with 'long
! long' integer less than 128 bits wide.
  
  
  File: gcc.info,  Node: Long Long,  Next: Complex,  Prev: __int128,  Up: Additional Numeric Types
--- 35882,35893 ----
  6.1.1 128-bit Integers
  ----------------------
  
! As an extension the integer scalar type â€˜__int128â€™ is supported for
  targets which have an integer mode wide enough to hold 128 bits.  Simply
! write â€˜__int128â€™ for a signed 128-bit integer, or â€˜unsigned __int128â€™
  for an unsigned 128-bit integer.  There is no support in GCC for
! expressing an integer constant of type â€˜__int128â€™ for targets with â€˜long
! longâ€™ integer less than 128 bits wide.
  
  
  File: gcc.info,  Node: Long Long,  Next: Complex,  Prev: __int128,  Up: Additional Numeric Types
*************** File: gcc.info,  Node: Long Long,  Next:
*** 35889,35898 ****
  
  ISO C99 and ISO C++11 support data types for integers that are at least
  64 bits wide, and as an extension GCC supports them in C90 and C++98
! modes.  Simply write 'long long int' for a signed integer, or 'unsigned
! long long int' for an unsigned integer.  To make an integer constant of
! type 'long long int', add the suffix 'LL' to the integer.  To make an
! integer constant of type 'unsigned long long int', add the suffix 'ULL'
  to the integer.
  
   You can use these types in arithmetic like any other integer types.
--- 35897,35906 ----
  
  ISO C99 and ISO C++11 support data types for integers that are at least
  64 bits wide, and as an extension GCC supports them in C90 and C++98
! modes.  Simply write â€˜long long intâ€™ for a signed integer, or â€˜unsigned
! long long intâ€™ for an unsigned integer.  To make an integer constant of
! type â€˜long long intâ€™, add the suffix â€˜LLâ€™ to the integer.  To make an
! integer constant of type â€˜unsigned long long intâ€™, add the suffix â€˜ULLâ€™
  to the integer.
  
   You can use these types in arithmetic like any other integer types.
*************** instruction.  Division and shifts are op
*** 35903,35914 ****
  provide special support.  The operations that are not open-coded use
  special library routines that come with GCC.
  
!  There may be pitfalls when you use 'long long' types for function
! arguments without function prototypes.  If a function expects type 'int'
! for its argument, and you pass a value of type 'long long int',
  confusion results because the caller and the subroutine disagree about
  the number of bytes for the argument.  Likewise, if the function expects
! 'long long int' and you pass 'int'.  The best way to avoid such problems
  is to use prototypes.
  
  
--- 35911,35922 ----
  provide special support.  The operations that are not open-coded use
  special library routines that come with GCC.
  
!  There may be pitfalls when you use â€˜long longâ€™ types for function
! arguments without function prototypes.  If a function expects type â€˜intâ€™
! for its argument, and you pass a value of type â€˜long long intâ€™,
  confusion results because the caller and the subroutine disagree about
  the number of bytes for the argument.  Likewise, if the function expects
! â€˜long long intâ€™ and you pass â€˜intâ€™.  The best way to avoid such problems
  is to use prototypes.
  
  
*************** File: gcc.info,  Node: Complex,  Next: F
*** 35920,35959 ****
  ISO C99 supports complex floating data types, and as an extension GCC
  supports them in C90 mode and in C++.  GCC also supports complex integer
  data types which are not part of ISO C99.  You can declare complex types
! using the keyword '_Complex'.  As an extension, the older GNU keyword
! '__complex__' is also supported.
  
!  For example, '_Complex double x;' declares 'x' as a variable whose real
! part and imaginary part are both of type 'double'.  '_Complex short int
! y;' declares 'y' to have real and imaginary parts of type 'short int';
  this is not likely to be useful, but it shows that the set of complex
  types is complete.
  
!  To write a constant with a complex data type, use the suffix 'i', 'I',
! 'j' or 'J' (any one; they are equivalent).  For example, '2.5fi' has
! type '_Complex float' and '3i' has type '_Complex int'.  Such a constant
  always has a pure imaginary value, but you can form any complex value
  you like by adding one to a real constant.  This is part of ISO C2Y and
  for older C revisions a GNU extension.  If you have an ISO C99
  conforming C library (such as the GNU C Library), and want to construct
  complex constants of floating type when using standard versions before
! ISO C2Y, you should include '<complex.h>' and use the macros 'I' or
! '_Complex_I' instead.
  
!  For C++ if '-fext-numeric-literals' option is enabled, it is also a GNU
  extension, otherwise it is handled like any other C++ user-defined
! literal.  The ISO C++14 library also defines the 'i' suffix, so C++14
! code that includes the '<complex>' header cannot use 'i' for the GNU
! extension.  The 'I', 'j' or 'J' suffixes still have the GNU meaning.
  
!  GCC handles both implicit and explicit casts between the '_Complex'
  types with different scalar base types by casting both the real and
  imaginary parts to the base type of the result.  GCC also handles
! implicit and explicit casts from a scalar type to a '_Complex' type, by
  giving the imaginary part a zero value.
  
   The C front end can handle implicit and explicit casts from a
! '_Complex' type to a scalar type, which uses the value of the real part
  and ignores the imaginary part.  In C++ code, this cast is considered
  ill-formed and G++ diagnoses it as an error.
  
--- 35928,35967 ----
  ISO C99 supports complex floating data types, and as an extension GCC
  supports them in C90 mode and in C++.  GCC also supports complex integer
  data types which are not part of ISO C99.  You can declare complex types
! using the keyword â€˜_Complexâ€™.  As an extension, the older GNU keyword
! â€˜__complex__â€™ is also supported.
  
!  For example, â€˜_Complex double x;â€™ declares â€˜xâ€™ as a variable whose real
! part and imaginary part are both of type â€˜doubleâ€™.  â€˜_Complex short int
! y;â€™ declares â€˜yâ€™ to have real and imaginary parts of type â€˜short intâ€™;
  this is not likely to be useful, but it shows that the set of complex
  types is complete.
  
!  To write a constant with a complex data type, use the suffix â€˜iâ€™, â€˜Iâ€™,
! â€˜jâ€™ or â€˜Jâ€™ (any one; they are equivalent).  For example, â€˜2.5fiâ€™ has
! type â€˜_Complex floatâ€™ and â€˜3iâ€™ has type â€˜_Complex intâ€™.  Such a constant
  always has a pure imaginary value, but you can form any complex value
  you like by adding one to a real constant.  This is part of ISO C2Y and
  for older C revisions a GNU extension.  If you have an ISO C99
  conforming C library (such as the GNU C Library), and want to construct
  complex constants of floating type when using standard versions before
! ISO C2Y, you should include â€˜<complex.h>â€™ and use the macros â€˜Iâ€™ or
! â€˜_Complex_Iâ€™ instead.
  
!  For C++ if â€˜-fext-numeric-literalsâ€™ option is enabled, it is also a GNU
  extension, otherwise it is handled like any other C++ user-defined
! literal.  The ISO C++14 library also defines the â€˜iâ€™ suffix, so C++14
! code that includes the â€˜<complex>â€™ header cannot use â€˜iâ€™ for the GNU
! extension.  The â€˜Iâ€™, â€˜jâ€™ or â€˜Jâ€™ suffixes still have the GNU meaning.
  
!  GCC handles both implicit and explicit casts between the â€˜_Complexâ€™
  types with different scalar base types by casting both the real and
  imaginary parts to the base type of the result.  GCC also handles
! implicit and explicit casts from a scalar type to a â€˜_Complexâ€™ type, by
  giving the imaginary part a zero value.
  
   The C front end can handle implicit and explicit casts from a
! â€˜_Complexâ€™ type to a scalar type, which uses the value of the real part
  and ignores the imaginary part.  In C++ code, this cast is considered
  ill-formed and G++ diagnoses it as an error.
  
*************** ill-formed and G++ diagnoses it as an er
*** 35961,35989 ****
  imaginary part of the complex-valued expression.  Note these expressions
  are lvalues if the EXP is an lvalue.  These expressions operands have
  the type of a complex type which might get promoted to a complex type
! from a scalar type.  E.g.  '__real__ (int)X' is the same as casting to
! '_Complex int' before '__real__' is done.
  
  Expression                    Description
  --------------------------------------------------------------------------
! '__real__ EXP'                Extract the real part of EXP.
! '__imag__ EXP'                Extract the imaginary part of EXP.
  
   For values of floating-point type, you should use the ISO C99
! functions, declared in '<complex.h>' and also provided as built-in
  functions by GCC.
  
  Expression                    float          double         long double
  ---------------------------------------------------------------------------
! '__real__ EXP'                'crealf'       'creal'        'creall'
! '__imag__ EXP'                'cimagf'       'cimag'        'cimagl'
  
!  The operator '~' performs complex conjugation when used on a value with
  a complex type.  This is a GNU extension; for values of floating type,
! you should use the ISO C99 functions 'conjf', 'conj' and 'conjl',
! declared in '<complex.h>' and also provided as built-in functions by
! GCC.  Note unlike the '__real__' and '__imag__' operators, this operator
! does not do an implicit cast to the complex type because the '~' is
  already a normal operator.
  
   GCC can allocate complex automatic variables in a noncontiguous
--- 35969,35997 ----
  imaginary part of the complex-valued expression.  Note these expressions
  are lvalues if the EXP is an lvalue.  These expressions operands have
  the type of a complex type which might get promoted to a complex type
! from a scalar type.  E.g.  â€˜__real__ (int)Xâ€™ is the same as casting to
! â€˜_Complex intâ€™ before â€˜__real__â€™ is done.
  
  Expression                    Description
  --------------------------------------------------------------------------
! â€˜__real__ EXPâ€™                Extract the real part of EXP.
! â€˜__imag__ EXPâ€™                Extract the imaginary part of EXP.
  
   For values of floating-point type, you should use the ISO C99
! functions, declared in â€˜<complex.h>â€™ and also provided as built-in
  functions by GCC.
  
  Expression                    float          double         long double
  ---------------------------------------------------------------------------
! â€˜__real__ EXPâ€™                â€˜crealfâ€™       â€˜crealâ€™        â€˜creallâ€™
! â€˜__imag__ EXPâ€™                â€˜cimagfâ€™       â€˜cimagâ€™        â€˜cimaglâ€™
  
!  The operator â€˜~â€™ performs complex conjugation when used on a value with
  a complex type.  This is a GNU extension; for values of floating type,
! you should use the ISO C99 functions â€˜conjfâ€™, â€˜conjâ€™ and â€˜conjlâ€™,
! declared in â€˜<complex.h>â€™ and also provided as built-in functions by
! GCC.  Note unlike the â€˜__real__â€™ and â€˜__imag__â€™ operators, this operator
! does not do an implicit cast to the complex type because the â€˜~â€™ is
  already a normal operator.
  
   GCC can allocate complex automatic variables in a noncontiguous
*************** the imaginary part is on the stack (or v
*** 35992,36008 ****
  debug info format can represent this, so use of DWARF is recommended.
  If you are using the stabs debug info format, GCC describes a
  noncontiguous complex variable as if it were two separate variables of
! noncomplex type.  If the variable's actual name is 'foo', the two
! fictitious variables are named 'foo$real' and 'foo$imag'.  You can
  examine and set these two fictitious variables with your debugger.
  
   -- Built-in Function: TYPE __builtin_complex (REAL, IMAG)
  
!      The built-in function '__builtin_complex' is provided for use in
!      implementing the ISO C11 macros 'CMPLXF', 'CMPLX' and 'CMPLXL'.
       REAL and IMAG must have the same type, a real binary floating-point
       type, and the result has the corresponding complex type with real
!      and imaginary parts REAL and IMAG.  Unlike 'REAL + I * IMAG', this
       works even when infinities, NaNs and negative zeros are involved.
  
  
--- 36000,36016 ----
  debug info format can represent this, so use of DWARF is recommended.
  If you are using the stabs debug info format, GCC describes a
  noncontiguous complex variable as if it were two separate variables of
! noncomplex type.  If the variable's actual name is â€˜fooâ€™, the two
! fictitious variables are named â€˜foo$realâ€™ and â€˜foo$imagâ€™.  You can
  examine and set these two fictitious variables with your debugger.
  
   -- Built-in Function: TYPE __builtin_complex (REAL, IMAG)
  
!      The built-in function â€˜__builtin_complexâ€™ is provided for use in
!      implementing the ISO C11 macros â€˜CMPLXFâ€™, â€˜CMPLXâ€™ and â€˜CMPLXLâ€™.
       REAL and IMAG must have the same type, a real binary floating-point
       type, and the result has the corresponding complex type with real
!      and imaginary parts REAL and IMAG.  Unlike â€˜REAL + I * IMAGâ€™, this
       works even when infinities, NaNs and negative zeros are involved.
  
  
*************** File: gcc.info,  Node: Floating Types,
*** 36012,36075 ****
  -------------------------------
  
  ISO/IEC TS 18661-3:2015 defines C support for additional floating types
! '_FloatN' and '_FloatNx', and GCC supports these type names; the set of
  types supported depends on the target architecture.  Constants with
! these types use suffixes 'fN' or 'FN' and 'fNx' or 'FNx'.  These type
! names can be used together with '_Complex' to declare complex types.
  
   As an extension, GNU C and GNU C++ support additional floating types,
  which are not supported by all targets.
!    * '__float128' is available on i386, x86_64, IA-64, LoongArch and
       hppa HP-UX, as well as on PowerPC GNU/Linux targets that enable the
!      vector scalar (VSX) instruction set.  '__float128' supports the
       128-bit floating type.  On i386, x86_64, PowerPC, LoongArch and
!      IA-64, other than HP-UX, '__float128' is an alias for '_Float128'.
!      On hppa and IA-64 HP-UX, '__float128' is an alias for 'long
!      double'.
  
!    * '__float80' is available on the i386, x86_64, and IA-64 targets,
!      and supports the 80-bit ('XFmode') floating type.  It is an alias
!      for the type name '_Float64x' on these targets.
  
!    * '__ibm128' is available on PowerPC targets, and provides access to
       the IBM extended double format which is the current format used for
!      'long double'.  When 'long double' transitions to '__float128' on
!      PowerPC in the future, '__ibm128' will remain for use in
       conversions between the two types.
  
   Support for these additional types includes the arithmetic operators:
  add, subtract, multiply, divide; unary arithmetic operators; relational
  operators; equality operators; and conversions to and from integer and
! other floating types.  Use a suffix 'w' or 'W' in a literal constant of
! type '__float80' or type '__ibm128'.  Use a suffix 'q' or 'Q' for
! '__float128'.
  
!  In order to use '_Float128', '__float128', and '__ibm128' on PowerPC
! Linux systems, you must use the '-mfloat128' option.  It is expected in
! future versions of GCC that '_Float128' and '__float128' will be enabled
  automatically.
  
!  The '_Float128' type is supported on all systems where '__float128' is
! supported or where 'long double' has the IEEE binary128 format.  The
! '_Float64x' type is supported on all systems where '__float128' is
! supported.  The '_Float32' type is supported on all systems supporting
! IEEE binary32; the '_Float64' and '_Float32x' types are supported on all
! systems supporting IEEE binary64.  The '_Float16' type is supported on
  AArch64 systems by default, on ARM systems when the IEEE format for
! 16-bit floating-point types is selected with '-mfp16-format=ieee' and,
  for both C and C++, on x86 systems with SSE2 enabled.  GCC does not
! currently support '_Float128x' on any systems.
  
   On the i386, x86_64, IA-64, and HP-UX targets, you can declare complex
! types using the corresponding internal complex type, 'XCmode' for
! '__float80' type and 'TCmode' for '__float128' type:
  
       typedef _Complex float __attribute__((mode(TC))) _Complex128;
       typedef _Complex float __attribute__((mode(XC))) _Complex80;
  
   On the PowerPC Linux VSX targets, you can declare complex types using
! the corresponding internal complex type, 'KCmode' for '__float128' type
! and 'ICmode' for '__ibm128' type:
  
       typedef _Complex float __attribute__((mode(KC))) _Complex_float128;
       typedef _Complex float __attribute__((mode(IC))) _Complex_ibm128;
--- 36020,36083 ----
  -------------------------------
  
  ISO/IEC TS 18661-3:2015 defines C support for additional floating types
! â€˜_FloatNâ€™ and â€˜_FloatNxâ€™, and GCC supports these type names; the set of
  types supported depends on the target architecture.  Constants with
! these types use suffixes â€˜fNâ€™ or â€˜FNâ€™ and â€˜fNxâ€™ or â€˜FNxâ€™.  These type
! names can be used together with â€˜_Complexâ€™ to declare complex types.
  
   As an extension, GNU C and GNU C++ support additional floating types,
  which are not supported by all targets.
!    â€¢ â€˜__float128â€™ is available on i386, x86_64, IA-64, LoongArch and
       hppa HP-UX, as well as on PowerPC GNU/Linux targets that enable the
!      vector scalar (VSX) instruction set.  â€˜__float128â€™ supports the
       128-bit floating type.  On i386, x86_64, PowerPC, LoongArch and
!      IA-64, other than HP-UX, â€˜__float128â€™ is an alias for â€˜_Float128â€™.
!      On hppa and IA-64 HP-UX, â€˜__float128â€™ is an alias for â€˜long
!      doubleâ€™.
  
!    â€¢ â€˜__float80â€™ is available on the i386, x86_64, and IA-64 targets,
!      and supports the 80-bit (â€˜XFmodeâ€™) floating type.  It is an alias
!      for the type name â€˜_Float64xâ€™ on these targets.
  
!    â€¢ â€˜__ibm128â€™ is available on PowerPC targets, and provides access to
       the IBM extended double format which is the current format used for
!      â€˜long doubleâ€™.  When â€˜long doubleâ€™ transitions to â€˜__float128â€™ on
!      PowerPC in the future, â€˜__ibm128â€™ will remain for use in
       conversions between the two types.
  
   Support for these additional types includes the arithmetic operators:
  add, subtract, multiply, divide; unary arithmetic operators; relational
  operators; equality operators; and conversions to and from integer and
! other floating types.  Use a suffix â€˜wâ€™ or â€˜Wâ€™ in a literal constant of
! type â€˜__float80â€™ or type â€˜__ibm128â€™.  Use a suffix â€˜qâ€™ or â€˜Qâ€™ for
! â€˜__float128â€™.
  
!  In order to use â€˜_Float128â€™, â€˜__float128â€™, and â€˜__ibm128â€™ on PowerPC
! Linux systems, you must use the â€˜-mfloat128â€™ option.  It is expected in
! future versions of GCC that â€˜_Float128â€™ and â€˜__float128â€™ will be enabled
  automatically.
  
!  The â€˜_Float128â€™ type is supported on all systems where â€˜__float128â€™ is
! supported or where â€˜long doubleâ€™ has the IEEE binary128 format.  The
! â€˜_Float64xâ€™ type is supported on all systems where â€˜__float128â€™ is
! supported.  The â€˜_Float32â€™ type is supported on all systems supporting
! IEEE binary32; the â€˜_Float64â€™ and â€˜_Float32xâ€™ types are supported on all
! systems supporting IEEE binary64.  The â€˜_Float16â€™ type is supported on
  AArch64 systems by default, on ARM systems when the IEEE format for
! 16-bit floating-point types is selected with â€˜-mfp16-format=ieeeâ€™ and,
  for both C and C++, on x86 systems with SSE2 enabled.  GCC does not
! currently support â€˜_Float128xâ€™ on any systems.
  
   On the i386, x86_64, IA-64, and HP-UX targets, you can declare complex
! types using the corresponding internal complex type, â€˜XCmodeâ€™ for
! â€˜__float80â€™ type and â€˜TCmodeâ€™ for â€˜__float128â€™ type:
  
       typedef _Complex float __attribute__((mode(TC))) _Complex128;
       typedef _Complex float __attribute__((mode(XC))) _Complex80;
  
   On the PowerPC Linux VSX targets, you can declare complex types using
! the corresponding internal complex type, â€˜KCmodeâ€™ for â€˜__float128â€™ type
! and â€˜ICmodeâ€™ for â€˜__ibm128â€™ type:
  
       typedef _Complex float __attribute__((mode(KC))) _Complex_float128;
       typedef _Complex float __attribute__((mode(IC))) _Complex_ibm128;
*************** File: gcc.info,  Node: Half-Precision,
*** 36081,36147 ****
  -----------------------------------
  
  On ARM and AArch64 targets, GCC supports half-precision (16-bit)
! floating point via the '__fp16' type defined in the ARM C Language
  Extensions.  On ARM systems, you must enable this type explicitly with
! the '-mfp16-format' command-line option in order to use it.  On x86
  targets with SSE2 enabled, GCC supports half-precision (16-bit) floating
! point via the '_Float16' type.  For C++, x86 provides a builtin type
! named '_Float16' which contains same data format as C.
  
   ARM targets support two incompatible representations for half-precision
  floating-point values.  You must choose one of the representations and
  use it consistently in your program.
  
!  Specifying '-mfp16-format=ieee' selects the IEEE 754-2008 format.  This
  format can represent normalized values in the range of 2^{-14} to 65504.
  There are 11 bits of significand precision, approximately 3 decimal
  digits.
  
!  Specifying '-mfp16-format=alternative' selects the ARM alternative
  format.  This representation is similar to the IEEE format, but does not
  support infinities or NaNs.  Instead, the range of exponents is
  extended, so that this format can represent normalized values in the
  range of 2^{-14} to 131008.
  
   The GCC port for AArch64 only supports the IEEE 754-2008 format, and
! does not require use of the '-mfp16-format' command-line option.
  
!  The '__fp16' type may only be used as an argument to intrinsics defined
! in '<arm_fp16.h>', or as a storage format.  For purposes of arithmetic
! and other operations, '__fp16' values in C or C++ expressions are
! automatically promoted to 'float'.
  
   The ARM target provides hardware support for conversions between
! '__fp16' and 'float' values as an extension to VFP and NEON (Advanced
  SIMD), and from ARMv8-A provides hardware support for conversions
! between '__fp16' and 'double' values.  GCC generates code using these
  hardware instructions if you compile with options to select an FPU that
! provides them; for example, '-mfpu=neon-fp16 -mfloat-abi=softfp', in
! addition to the '-mfp16-format' option to select a half-precision
  format.
  
!  Language-level support for the '__fp16' data type is independent of
  whether GCC generates code using hardware floating-point instructions.
  In cases where hardware support is not specified, GCC implements
! conversions between '__fp16' and other types as library calls.
  
!  It is recommended that portable code use the '_Float16' type defined by
  ISO/IEC TS 18661-3:2015.  *Note Floating Types::.
  
!  On x86 targets with SSE2 enabled, without '-mavx512fp16', all
! operations will be emulated by software emulation and the 'float'
! instructions.  The default behavior for 'FLT_EVAL_METHOD' is to keep the
  intermediate result of the operation as 32-bit precision.  This may lead
  to inconsistent behavior between software emulation and AVX512-FP16
! instructions.  Using '-fexcess-precision=16' will force round back after
  each operation.
  
!  Using '-mavx512fp16' will generate AVX512-FP16 instructions instead of
! software emulation.  The default behavior of 'FLT_EVAL_METHOD' is to
  round after each operation.  The same is true with
! '-fexcess-precision=standard' and '-mfpmath=sse'.  If there is no
! '-mfpmath=sse', '-fexcess-precision=standard' alone does the same thing
! as before, It is useful for code that does not have '_Float16' and runs
  on the x87 FPU.
  
  
--- 36089,36155 ----
  -----------------------------------
  
  On ARM and AArch64 targets, GCC supports half-precision (16-bit)
! floating point via the â€˜__fp16â€™ type defined in the ARM C Language
  Extensions.  On ARM systems, you must enable this type explicitly with
! the â€˜-mfp16-formatâ€™ command-line option in order to use it.  On x86
  targets with SSE2 enabled, GCC supports half-precision (16-bit) floating
! point via the â€˜_Float16â€™ type.  For C++, x86 provides a builtin type
! named â€˜_Float16â€™ which contains same data format as C.
  
   ARM targets support two incompatible representations for half-precision
  floating-point values.  You must choose one of the representations and
  use it consistently in your program.
  
!  Specifying â€˜-mfp16-format=ieeeâ€™ selects the IEEE 754-2008 format.  This
  format can represent normalized values in the range of 2^{-14} to 65504.
  There are 11 bits of significand precision, approximately 3 decimal
  digits.
  
!  Specifying â€˜-mfp16-format=alternativeâ€™ selects the ARM alternative
  format.  This representation is similar to the IEEE format, but does not
  support infinities or NaNs.  Instead, the range of exponents is
  extended, so that this format can represent normalized values in the
  range of 2^{-14} to 131008.
  
   The GCC port for AArch64 only supports the IEEE 754-2008 format, and
! does not require use of the â€˜-mfp16-formatâ€™ command-line option.
  
!  The â€˜__fp16â€™ type may only be used as an argument to intrinsics defined
! in â€˜<arm_fp16.h>â€™, or as a storage format.  For purposes of arithmetic
! and other operations, â€˜__fp16â€™ values in C or C++ expressions are
! automatically promoted to â€˜floatâ€™.
  
   The ARM target provides hardware support for conversions between
! â€˜__fp16â€™ and â€˜floatâ€™ values as an extension to VFP and NEON (Advanced
  SIMD), and from ARMv8-A provides hardware support for conversions
! between â€˜__fp16â€™ and â€˜doubleâ€™ values.  GCC generates code using these
  hardware instructions if you compile with options to select an FPU that
! provides them; for example, â€˜-mfpu=neon-fp16 -mfloat-abi=softfpâ€™, in
! addition to the â€˜-mfp16-formatâ€™ option to select a half-precision
  format.
  
!  Language-level support for the â€˜__fp16â€™ data type is independent of
  whether GCC generates code using hardware floating-point instructions.
  In cases where hardware support is not specified, GCC implements
! conversions between â€˜__fp16â€™ and other types as library calls.
  
!  It is recommended that portable code use the â€˜_Float16â€™ type defined by
  ISO/IEC TS 18661-3:2015.  *Note Floating Types::.
  
!  On x86 targets with SSE2 enabled, without â€˜-mavx512fp16â€™, all
! operations will be emulated by software emulation and the â€˜floatâ€™
! instructions.  The default behavior for â€˜FLT_EVAL_METHODâ€™ is to keep the
  intermediate result of the operation as 32-bit precision.  This may lead
  to inconsistent behavior between software emulation and AVX512-FP16
! instructions.  Using â€˜-fexcess-precision=16â€™ will force round back after
  each operation.
  
!  Using â€˜-mavx512fp16â€™ will generate AVX512-FP16 instructions instead of
! software emulation.  The default behavior of â€˜FLT_EVAL_METHODâ€™ is to
  round after each operation.  The same is true with
! â€˜-fexcess-precision=standardâ€™ and â€˜-mfpmath=sseâ€™.  If there is no
! â€˜-mfpmath=sseâ€™, â€˜-fexcess-precision=standardâ€™ alone does the same thing
! as before, It is useful for code that does not have â€˜_Float16â€™ and runs
  on the x87 FPU.
  
  
*************** GCC will evolve as the draft technical r
*** 36156,36188 ****
  conventions for any target might also change.  Not all targets support
  decimal floating types.
  
!  The decimal floating types are '_Decimal32', '_Decimal64', and
! '_Decimal128'.  They use a radix of ten, unlike the floating types
! 'float', 'double', and 'long double' whose radix is not specified by the
  C standard but is usually two.
  
   Support for decimal floating types includes the arithmetic operators
  add, subtract, multiply, divide; unary arithmetic operators; relational
  operators; equality operators; and conversions to and from integer and
! other floating types.  Use a suffix 'df' or 'DF' in a literal constant
! of type '_Decimal32', 'dd' or 'DD' for '_Decimal64', and 'dl' or 'DL'
! for '_Decimal128'.
  
   GCC support of decimal float as specified by the draft technical report
  is incomplete:
  
!    * When the value of a decimal floating type cannot be represented in
       the integer type to which it is being converted, the result is
       undefined rather than the result value specified by the draft
       technical report.
  
!    * GCC does not provide the C library functionality associated with
!      'math.h', 'fenv.h', 'stdio.h', 'stdlib.h', and 'wchar.h', which
       must come from a separate C library implementation.  Because of
!      this the GNU C compiler does not define macro '__STDC_DEC_FP__' to
       indicate that the implementation conforms to the technical report.
  
!  Types '_Decimal32', '_Decimal64', and '_Decimal128' are supported by
  the DWARF debug information format.
  
  
--- 36164,36196 ----
  conventions for any target might also change.  Not all targets support
  decimal floating types.
  
!  The decimal floating types are â€˜_Decimal32â€™, â€˜_Decimal64â€™, and
! â€˜_Decimal128â€™.  They use a radix of ten, unlike the floating types
! â€˜floatâ€™, â€˜doubleâ€™, and â€˜long doubleâ€™ whose radix is not specified by the
  C standard but is usually two.
  
   Support for decimal floating types includes the arithmetic operators
  add, subtract, multiply, divide; unary arithmetic operators; relational
  operators; equality operators; and conversions to and from integer and
! other floating types.  Use a suffix â€˜dfâ€™ or â€˜DFâ€™ in a literal constant
! of type â€˜_Decimal32â€™, â€˜ddâ€™ or â€˜DDâ€™ for â€˜_Decimal64â€™, and â€˜dlâ€™ or â€˜DLâ€™
! for â€˜_Decimal128â€™.
  
   GCC support of decimal float as specified by the draft technical report
  is incomplete:
  
!    â€¢ When the value of a decimal floating type cannot be represented in
       the integer type to which it is being converted, the result is
       undefined rather than the result value specified by the draft
       technical report.
  
!    â€¢ GCC does not provide the C library functionality associated with
!      â€˜math.hâ€™, â€˜fenv.hâ€™, â€˜stdio.hâ€™, â€˜stdlib.hâ€™, and â€˜wchar.hâ€™, which
       must come from a separate C library implementation.  Because of
!      this the GNU C compiler does not define macro â€˜__STDC_DEC_FP__â€™ to
       indicate that the implementation conforms to the technical report.
  
!  Types â€˜_Decimal32â€™, â€˜_Decimal64â€™, and â€˜_Decimal128â€™ are supported by
  the DWARF debug information format.
  
  
*************** will evolve as the draft technical repor
*** 36197,36256 ****
  for any target might also change.  Not all targets support fixed-point
  types.
  
!  The fixed-point types are 'short _Fract', '_Fract', 'long _Fract',
! 'long long _Fract', 'unsigned short _Fract', 'unsigned _Fract',
! 'unsigned long _Fract', 'unsigned long long _Fract', '_Sat short
! _Fract', '_Sat _Fract', '_Sat long _Fract', '_Sat long long _Fract',
! '_Sat unsigned short _Fract', '_Sat unsigned _Fract', '_Sat unsigned
! long _Fract', '_Sat unsigned long long _Fract', 'short _Accum',
! '_Accum', 'long _Accum', 'long long _Accum', 'unsigned short _Accum',
! 'unsigned _Accum', 'unsigned long _Accum', 'unsigned long long _Accum',
! '_Sat short _Accum', '_Sat _Accum', '_Sat long _Accum', '_Sat long long
! _Accum', '_Sat unsigned short _Accum', '_Sat unsigned _Accum', '_Sat
! unsigned long _Accum', '_Sat unsigned long long _Accum'.
  
   Fixed-point data values contain fractional and optional integral parts.
  The format of fixed-point data varies and depends on the target machine.
  
   Support for fixed-point types includes:
!    * prefix and postfix increment and decrement operators ('++', '--')
!    * unary arithmetic operators ('+', '-', '!')
!    * binary arithmetic operators ('+', '-', '*', '/')
!    * binary shift operators ('<<', '>>')
!    * relational operators ('<', '<=', '>=', '>')
!    * equality operators ('==', '!=')
!    * assignment operators ('+=', '-=', '*=', '/=', '<<=', '>>=')
!    * conversions to and from integer, floating-point, or fixed-point
       types
  
   Use a suffix in a fixed-point literal constant:
!    * 'hr' or 'HR' for 'short _Fract' and '_Sat short _Fract'
!    * 'r' or 'R' for '_Fract' and '_Sat _Fract'
!    * 'lr' or 'LR' for 'long _Fract' and '_Sat long _Fract'
!    * 'llr' or 'LLR' for 'long long _Fract' and '_Sat long long _Fract'
!    * 'uhr' or 'UHR' for 'unsigned short _Fract' and '_Sat unsigned short
!      _Fract'
!    * 'ur' or 'UR' for 'unsigned _Fract' and '_Sat unsigned _Fract'
!    * 'ulr' or 'ULR' for 'unsigned long _Fract' and '_Sat unsigned long
!      _Fract'
!    * 'ullr' or 'ULLR' for 'unsigned long long _Fract' and '_Sat unsigned
!      long long _Fract'
!    * 'hk' or 'HK' for 'short _Accum' and '_Sat short _Accum'
!    * 'k' or 'K' for '_Accum' and '_Sat _Accum'
!    * 'lk' or 'LK' for 'long _Accum' and '_Sat long _Accum'
!    * 'llk' or 'LLK' for 'long long _Accum' and '_Sat long long _Accum'
!    * 'uhk' or 'UHK' for 'unsigned short _Accum' and '_Sat unsigned short
!      _Accum'
!    * 'uk' or 'UK' for 'unsigned _Accum' and '_Sat unsigned _Accum'
!    * 'ulk' or 'ULK' for 'unsigned long _Accum' and '_Sat unsigned long
!      _Accum'
!    * 'ullk' or 'ULLK' for 'unsigned long long _Accum' and '_Sat unsigned
!      long long _Accum'
  
   GCC support of fixed-point types as specified by the draft technical
  report is incomplete:
  
!    * Pragmas to control overflow and rounding behaviors are not
       implemented.
  
   Fixed-point types are supported by the DWARF debug information format.
--- 36205,36264 ----
  for any target might also change.  Not all targets support fixed-point
  types.
  
!  The fixed-point types are â€˜short _Fractâ€™, â€˜_Fractâ€™, â€˜long _Fractâ€™,
! â€˜long long _Fractâ€™, â€˜unsigned short _Fractâ€™, â€˜unsigned _Fractâ€™,
! â€˜unsigned long _Fractâ€™, â€˜unsigned long long _Fractâ€™, â€˜_Sat short
! _Fractâ€™, â€˜_Sat _Fractâ€™, â€˜_Sat long _Fractâ€™, â€˜_Sat long long _Fractâ€™,
! â€˜_Sat unsigned short _Fractâ€™, â€˜_Sat unsigned _Fractâ€™, â€˜_Sat unsigned
! long _Fractâ€™, â€˜_Sat unsigned long long _Fractâ€™, â€˜short _Accumâ€™,
! â€˜_Accumâ€™, â€˜long _Accumâ€™, â€˜long long _Accumâ€™, â€˜unsigned short _Accumâ€™,
! â€˜unsigned _Accumâ€™, â€˜unsigned long _Accumâ€™, â€˜unsigned long long _Accumâ€™,
! â€˜_Sat short _Accumâ€™, â€˜_Sat _Accumâ€™, â€˜_Sat long _Accumâ€™, â€˜_Sat long long
! _Accumâ€™, â€˜_Sat unsigned short _Accumâ€™, â€˜_Sat unsigned _Accumâ€™, â€˜_Sat
! unsigned long _Accumâ€™, â€˜_Sat unsigned long long _Accumâ€™.
  
   Fixed-point data values contain fractional and optional integral parts.
  The format of fixed-point data varies and depends on the target machine.
  
   Support for fixed-point types includes:
!    â€¢ prefix and postfix increment and decrement operators (â€˜++â€™, â€˜--â€™)
!    â€¢ unary arithmetic operators (â€˜+â€™, â€˜-â€™, â€˜!â€™)
!    â€¢ binary arithmetic operators (â€˜+â€™, â€˜-â€™, â€˜*â€™, â€˜/â€™)
!    â€¢ binary shift operators (â€˜<<â€™, â€˜>>â€™)
!    â€¢ relational operators (â€˜<â€™, â€˜<=â€™, â€˜>=â€™, â€˜>â€™)
!    â€¢ equality operators (â€˜==â€™, â€˜!=â€™)
!    â€¢ assignment operators (â€˜+=â€™, â€˜-=â€™, â€˜*=â€™, â€˜/=â€™, â€˜<<=â€™, â€˜>>=â€™)
!    â€¢ conversions to and from integer, floating-point, or fixed-point
       types
  
   Use a suffix in a fixed-point literal constant:
!    â€¢ â€˜hrâ€™ or â€˜HRâ€™ for â€˜short _Fractâ€™ and â€˜_Sat short _Fractâ€™
!    â€¢ â€˜râ€™ or â€˜Râ€™ for â€˜_Fractâ€™ and â€˜_Sat _Fractâ€™
!    â€¢ â€˜lrâ€™ or â€˜LRâ€™ for â€˜long _Fractâ€™ and â€˜_Sat long _Fractâ€™
!    â€¢ â€˜llrâ€™ or â€˜LLRâ€™ for â€˜long long _Fractâ€™ and â€˜_Sat long long _Fractâ€™
!    â€¢ â€˜uhrâ€™ or â€˜UHRâ€™ for â€˜unsigned short _Fractâ€™ and â€˜_Sat unsigned short
!      _Fractâ€™
!    â€¢ â€˜urâ€™ or â€˜URâ€™ for â€˜unsigned _Fractâ€™ and â€˜_Sat unsigned _Fractâ€™
!    â€¢ â€˜ulrâ€™ or â€˜ULRâ€™ for â€˜unsigned long _Fractâ€™ and â€˜_Sat unsigned long
!      _Fractâ€™
!    â€¢ â€˜ullrâ€™ or â€˜ULLRâ€™ for â€˜unsigned long long _Fractâ€™ and â€˜_Sat unsigned
!      long long _Fractâ€™
!    â€¢ â€˜hkâ€™ or â€˜HKâ€™ for â€˜short _Accumâ€™ and â€˜_Sat short _Accumâ€™
!    â€¢ â€˜kâ€™ or â€˜Kâ€™ for â€˜_Accumâ€™ and â€˜_Sat _Accumâ€™
!    â€¢ â€˜lkâ€™ or â€˜LKâ€™ for â€˜long _Accumâ€™ and â€˜_Sat long _Accumâ€™
!    â€¢ â€˜llkâ€™ or â€˜LLKâ€™ for â€˜long long _Accumâ€™ and â€˜_Sat long long _Accumâ€™
!    â€¢ â€˜uhkâ€™ or â€˜UHKâ€™ for â€˜unsigned short _Accumâ€™ and â€˜_Sat unsigned short
!      _Accumâ€™
!    â€¢ â€˜ukâ€™ or â€˜UKâ€™ for â€˜unsigned _Accumâ€™ and â€˜_Sat unsigned _Accumâ€™
!    â€¢ â€˜ulkâ€™ or â€˜ULKâ€™ for â€˜unsigned long _Accumâ€™ and â€˜_Sat unsigned long
!      _Accumâ€™
!    â€¢ â€˜ullkâ€™ or â€˜ULLKâ€™ for â€˜unsigned long long _Accumâ€™ and â€˜_Sat unsigned
!      long long _Accumâ€™
  
   GCC support of fixed-point types as specified by the draft technical
  report is incomplete:
  
!    â€¢ Pragmas to control overflow and rounding behaviors are not
       implemented.
  
   Fixed-point types are supported by the DWARF debug information format.
*************** structure or a union.  For example:
*** 36315,36329 ****
         struct S { int x[n]; };
       }
  
!  You can use the function 'alloca' to get an effect much like
! variable-length arrays.  The function 'alloca' is available in many
  other C implementations (but not in all).  On the other hand,
  variable-length arrays are more elegant.
  
   There are other differences between these two methods.  Space allocated
! with 'alloca' exists until the containing _function_ returns.  The space
  for a variable-length array is deallocated as soon as the array name's
! scope ends, unless you also use 'alloca' in this scope.
  
   You can also use variable-length arrays as arguments to functions:
  
--- 36323,36337 ----
         struct S { int x[n]; };
       }
  
!  You can use the function â€˜allocaâ€™ to get an effect much like
! variable-length arrays.  The function â€˜allocaâ€™ is available in many
  other C implementations (but not in all).  On the other hand,
  variable-length arrays are more elegant.
  
   There are other differences between these two methods.  Space allocated
! with â€˜allocaâ€™ exists until the containing _function_ returns.  The space
  for a variable-length array is deallocated as soon as the array name's
! scope ends, unless you also use â€˜allocaâ€™ in this scope.
  
   You can also use variable-length arrays as arguments to functions:
  
*************** scope ends, unless you also use 'alloca'
*** 36335,36341 ****
  
   The length of an array is computed once when the storage is allocated
  and is remembered for the scope of the array in case you access it with
! 'sizeof'.
  
   If you want to pass the array first and the length afterward, you can
  use a forward declaration in the parameter list--another GNU extension.
--- 36343,36349 ----
  
   The length of an array is computed once when the storage is allocated
  and is remembered for the scope of the array in case you access it with
! â€˜sizeofâ€™.
  
   If you want to pass the array first and the length afterward, you can
  use a forward declaration in the parameter list--another GNU extension.
*************** use a forward declaration in the paramet
*** 36346,36354 ****
         /* ... */
       }
  
!  The 'int len' before the semicolon is a "parameter forward
! declaration", and it serves the purpose of making the name 'len' known
! when the declaration of 'data' is parsed.
  
   You can write any number of such parameter forward declarations in the
  parameter list.  They can be separated by commas or semicolons, but the
--- 36354,36362 ----
         /* ... */
       }
  
!  The â€˜int lenâ€™ before the semicolon is a â€œparameter forward
! declarationâ€�, and it serves the purpose of making the name â€˜lenâ€™ known
! when the declaration of â€˜dataâ€™ is parsed.
  
   You can write any number of such parameter forward declarations in the
  parameter list.  They can be separated by commas or semicolons, but the
*************** is really a header for a variable-length
*** 36376,36383 ****
         malloc (sizeof (struct line) + this_length);
       thisline->length = this_length;
  
!  In this example, 'thisline->contents' is an array of 'char' that can
! hold up to 'thisline->length' bytes.
  
   Although the size of a zero-length array is zero, an array member of
  this kind may increase the size of the enclosing type as a result of
--- 36384,36391 ----
         malloc (sizeof (struct line) + this_length);
       thisline->length = this_length;
  
!  In this example, â€˜thisline->contentsâ€™ is an array of â€˜charâ€™ that can
! hold up to â€˜thisline->lengthâ€™ bytes.
  
   Although the size of a zero-length array is zero, an array member of
  this kind may increase the size of the enclosing type as a result of
*************** Accessing elements of zero-length arrays
*** 36392,36398 ****
  undefined and may be diagnosed.
  
   In the absence of the zero-length array extension, in ISO C90 the
! 'contents' array in the example above would typically be declared to
  have a single element.  Unlike a zero-length array which only
  contributes to the size of the enclosing structure for the purposes of
  alignment, a one-element array always occupies at least as much space as
--- 36400,36406 ----
  undefined and may be diagnosed.
  
   In the absence of the zero-length array extension, in ISO C90 the
! â€˜contentsâ€™ array in the example above would typically be declared to
  have a single element.  Unlike a zero-length array which only
  contributes to the size of the enclosing structure for the purposes of
  alignment, a one-element array always occupies at least as much space as
*************** a single object of the type.  Although u
*** 36400,36430 ****
  is discouraged, GCC handles accesses to trailing one-element array
  members analogously to zero-length arrays.
  
!  The preferred mechanism to declare variable-length types like 'struct
! line' above is the ISO C99 "flexible array member", with slightly
  different syntax and semantics:
  
!    * Flexible array members are written as 'contents[]' without the '0'.
  
!    * Flexible array members have incomplete type, and so the 'sizeof'
       operator may not be applied.  As a quirk of the original
!      implementation of zero-length arrays, 'sizeof' evaluates to zero.
  
!    * Flexible array members may only appear as the last member of a
!      'struct' that is otherwise non-empty.
  
!    * A structure containing a flexible array member, or a union
       containing such a structure (possibly recursively), may not be a
       member of a structure or an element of an array.  (However, these
       uses are permitted by GCC as extensions, see details below.)
  
!  The GCC extension accepts a structure containing an ISO C99 "flexible
! array member", or a union containing such a structure (possibly
  recursively) to be a member of a structure.
  
   There are two situations:
  
!    * A structure containing a C99 flexible array member, or a union
       containing such a structure, is the last field of another
       structure, for example:
  
--- 36408,36438 ----
  is discouraged, GCC handles accesses to trailing one-element array
  members analogously to zero-length arrays.
  
!  The preferred mechanism to declare variable-length types like â€˜struct
! lineâ€™ above is the ISO C99 â€œflexible array memberâ€�, with slightly
  different syntax and semantics:
  
!    â€¢ Flexible array members are written as â€˜contents[]â€™ without the â€˜0â€™.
  
!    â€¢ Flexible array members have incomplete type, and so the â€˜sizeofâ€™
       operator may not be applied.  As a quirk of the original
!      implementation of zero-length arrays, â€˜sizeofâ€™ evaluates to zero.
  
!    â€¢ Flexible array members may only appear as the last member of a
!      â€˜structâ€™ that is otherwise non-empty.
  
!    â€¢ A structure containing a flexible array member, or a union
       containing such a structure (possibly recursively), may not be a
       member of a structure or an element of an array.  (However, these
       uses are permitted by GCC as extensions, see details below.)
  
!  The GCC extension accepts a structure containing an ISO C99 â€œflexible
! array memberâ€�, or a union containing such a structure (possibly
  recursively) to be a member of a structure.
  
   There are two situations:
  
!    â€¢ A structure containing a C99 flexible array member, or a union
       containing such a structure, is the last field of another
       structure, for example:
  
*************** recursively) to be a member of a structu
*** 36434,36444 ****
            struct out_flex_struct { int m; struct flex flex_data; };
            struct out_flex_union { int n; union union_flex flex_data; };
  
!      In the above, both 'out_flex_struct.flex_data.data[]' and
!      'out_flex_union.flex_data.f.data[]' are considered as flexible
       arrays too.
  
!    * A structure containing a C99 flexible array member, or a union
       containing such a structure, is not the last field of another
       structure, for example:
  
--- 36442,36452 ----
            struct out_flex_struct { int m; struct flex flex_data; };
            struct out_flex_union { int n; union union_flex flex_data; };
  
!      In the above, both â€˜out_flex_struct.flex_data.data[]â€™ and
!      â€˜out_flex_union.flex_data.f.data[]â€™ are considered as flexible
       arrays too.
  
!    â€¢ A structure containing a C99 flexible array member, or a union
       containing such a structure, is not the last field of another
       structure, for example:
  
*************** recursively) to be a member of a structu
*** 36447,36458 ****
            struct mid_flex { int m; struct flex flex_data; int n; };
  
       In the above, accessing a member of the array
!      'mid_flex.flex_data.data[]' might have undefined behavior.
       Compilers do not handle such a case consistently.  Any code relying
       on this case should be modified to ensure that flexible array
       members only end up at the ends of structures.
  
!      Please use the warning option '-Wflex-array-member-not-at-end' to
       identify all such cases in the source code and modify them.  This
       extension is now deprecated.
  
--- 36455,36466 ----
            struct mid_flex { int m; struct flex flex_data; int n; };
  
       In the above, accessing a member of the array
!      â€˜mid_flex.flex_data.data[]â€™ might have undefined behavior.
       Compilers do not handle such a case consistently.  Any code relying
       on this case should be modified to ensure that flexible array
       members only end up at the ends of structures.
  
!      Please use the warning option â€˜-Wflex-array-member-not-at-endâ€™ to
       identify all such cases in the source code and modify them.  This
       extension is now deprecated.
  
*************** excess elements (all of them, in this ca
*** 36464,36470 ****
   GCC allows static initialization of flexible array members.  This is
  equivalent to defining a new structure containing the original structure
  followed by an array of sufficient size to contain the data.  E.g. in
! the following, 'f1' is constructed as if it were declared like 'f2'.
  
       struct f1 {
         int x; int y[];
--- 36472,36478 ----
   GCC allows static initialization of flexible array members.  This is
  equivalent to defining a new structure containing the original structure
  followed by an array of sufficient size to contain the data.  E.g. in
! the following, â€˜f1â€™ is constructed as if it were declared like â€˜f2â€™.
  
       struct f1 {
         int x; int y[];
*************** the following, 'f1' is constructed as if
*** 36474,36484 ****
         struct f1 f1; int data[3];
       } f2 = { { 1 }, { 2, 3, 4 } };
  
! The convenience of this extension is that 'f1' has the desired type,
! eliminating the need to consistently refer to 'f2.f1'.
  
   This has symmetry with normal static arrays, in that an array of
! unknown size is also written with '[]'.
  
   Of course, this extension only makes sense if the extra data comes at
  the end of a top-level object, as otherwise we would be overwriting data
--- 36482,36492 ----
         struct f1 f1; int data[3];
       } f2 = { { 1 }, { 2, 3, 4 } };
  
! The convenience of this extension is that â€˜f1â€™ has the desired type,
! eliminating the need to consistently refer to â€˜f2.f1â€™.
  
   This has symmetry with normal static arrays, in that an array of
! unknown size is also written with â€˜[]â€™.
  
   Of course, this extension only makes sense if the extra data comes at
  the end of a top-level object, as otherwise we would be overwriting data
*************** GCC permits a C structure to have no mem
*** 36508,36514 ****
  
   The structure has size zero.  In C++, empty structures are part of the
  language.  G++ treats empty structures as if they had a single member of
! type 'char'.
  
  
  File: gcc.info,  Node: Flexible Array Members in Unions,  Next: Flexible Array Members alone in Structures,  Prev: Empty Structures,  Up: Aggregate Types
--- 36516,36522 ----
  
   The structure has size zero.  In C++, empty structures are part of the
  language.  G++ treats empty structures as if they had a single member of
! type â€˜charâ€™.
  
  
  File: gcc.info,  Node: Flexible Array Members in Unions,  Next: Flexible Array Members alone in Structures,  Prev: Empty Structures,  Up: Aggregate Types
*************** structures and unions without names.  Fo
*** 36561,36568 ****
       } foo;
  
  In this example, you are able to access members of the unnamed union
! with code like 'foo.b'.  Note that only unnamed structs and unions are
! allowed, you may not have, for example, an unnamed 'int'.
  
   You must never create such structures that cause ambiguous field
  definitions.  For example, in this structure:
--- 36569,36576 ----
       } foo;
  
  In this example, you are able to access members of the unnamed union
! with code like â€˜foo.bâ€™.  Note that only unnamed structs and unions are
! allowed, you may not have, for example, an unnamed â€˜intâ€™.
  
   You must never create such structures that cause ambiguous field
  definitions.  For example, in this structure:
*************** definitions.  For example, in this struc
*** 36574,36590 ****
         };
       } foo;
  
! it is ambiguous which 'a' is being referred to with 'foo.a'.  The
  compiler gives errors for such constructs.
  
!  Unless '-fms-extensions' is used, the unnamed field must be a structure
! or union definition without a tag (for example, 'struct { int a; };').
! If '-fms-extensions' is used, the field may also be a definition with a
! tag such as 'struct foo { int a; };', a reference to a previously
! defined structure or union such as 'struct foo;', or a reference to a
! 'typedef' name for a previously defined structure or union type.
  
!  The option '-fplan9-extensions' enables '-fms-extensions' as well as
  two other extensions.  First, a pointer to a structure is automatically
  converted to a pointer to an anonymous field for assignments and
  function calls.  For example:
--- 36582,36598 ----
         };
       } foo;
  
! it is ambiguous which â€˜aâ€™ is being referred to with â€˜foo.aâ€™.  The
  compiler gives errors for such constructs.
  
!  Unless â€˜-fms-extensionsâ€™ is used, the unnamed field must be a structure
! or union definition without a tag (for example, â€˜struct { int a; };â€™).
! If â€˜-fms-extensionsâ€™ is used, the field may also be a definition with a
! tag such as â€˜struct foo { int a; };â€™, a reference to a previously
! defined structure or union such as â€˜struct foo;â€™, or a reference to a
! â€˜typedefâ€™ name for a previously defined structure or union type.
  
!  The option â€˜-fplan9-extensionsâ€™ enables â€˜-fms-extensionsâ€™ as well as
  two other extensions.  First, a pointer to a structure is automatically
  converted to a pointer to an anonymous field for assignments and
  function calls.  For example:
*************** function calls.  For example:
*** 36594,36605 ****
       extern void f1 (struct s1 *);
       void f2 (struct s2 *p) { f1 (p); }
  
! In the call to 'f1' inside 'f2', the pointer 'p' is converted into a
  pointer to the anonymous field.
  
!  Second, when the type of an anonymous field is a 'typedef' for a
! 'struct' or 'union', code may refer to the field using the name of the
! 'typedef'.
  
       typedef struct { int a; } s1;
       struct s2 { s1; };
--- 36602,36613 ----
       extern void f1 (struct s1 *);
       void f2 (struct s2 *p) { f1 (p); }
  
! In the call to â€˜f1â€™ inside â€˜f2â€™, the pointer â€˜pâ€™ is converted into a
  pointer to the anonymous field.
  
!  Second, when the type of an anonymous field is a â€˜typedefâ€™ for a
! â€˜structâ€™ or â€˜unionâ€™, code may refer to the field using the name of the
! â€˜typedefâ€™.
  
       typedef struct { int a; } s1;
       struct s2 { s1; };
*************** File: gcc.info,  Node: Cast to Union,  N
*** 36615,36622 ****
  
  A cast to a union type is a C extension not available in C++.  It looks
  just like ordinary casts with the constraint that the type specified is
! a union type.  You can specify the type either with the 'union' keyword
! or with a 'typedef' name that refers to a union.  The result of a cast
  to a union is a temporary rvalue of the union type with a member whose
  type matches that of the operand initialized to the value of the
  operand.  The effect of a cast to a union is similar to a compound
--- 36623,36630 ----
  
  A cast to a union type is a C extension not available in C++.  It looks
  just like ordinary casts with the constraint that the type specified is
! a union type.  You can specify the type either with the â€˜unionâ€™ keyword
! or with a â€˜typedefâ€™ name that refers to a union.  The result of a cast
  to a union is a temporary rvalue of the union type with a member whose
  type matches that of the operand initialized to the value of the
  operand.  The effect of a cast to a union is similar to a compound
*************** following union and variables:
*** 36632,36638 ****
       double y;
       union foo z;
  
! both 'x' and 'y' can be cast to type 'union foo' and the following
  assignments
         z = (union foo) x;
         z = (union foo) y;
--- 36640,36646 ----
       double y;
       union foo z;
  
! both â€˜xâ€™ and â€˜yâ€™ can be cast to type â€˜union fooâ€™ and the following
  assignments
         z = (union foo) x;
         z = (union foo) y;
*************** assignments
*** 36640,36647 ****
         z = (union foo) { .i = x };
         z = (union foo) { .d = y };
  
!  However, '(union foo) FLT_MAX;' is not a valid cast because the union
! has no member of type 'float'.
  
   Using the cast as the right-hand side of an assignment to a variable of
  union type is equivalent to storing in a member of the union with the
--- 36648,36655 ----
         z = (union foo) { .i = x };
         z = (union foo) { .d = y };
  
!  However, â€˜(union foo) FLT_MAX;â€™ is not a valid cast because the union
! has no member of type â€˜floatâ€™.
  
   Using the cast as the right-hand side of an assignment to a variable of
  union type is equivalent to storing in a member of the union with the
*************** same type
*** 36649,36656 ****
  
       union foo u;
       /* ... */
!      u = (union foo) x  ==  u.i = x
!      u = (union foo) y  ==  u.d = y
  
   You can also use the union cast as a function argument:
  
--- 36657,36664 ----
  
       union foo u;
       /* ... */
!      u = (union foo) x  â‰¡  u.i = x
!      u = (union foo) y  â‰¡  u.d = y
  
   You can also use the union cast as a function argument:
  
*************** File: gcc.info,  Node: Subscripting,  Ne
*** 36666,36672 ****
  
  In ISO C99, arrays that are not lvalues still decay to pointers, and may
  be subscripted, although they may not be modified or used after the next
! sequence point and the unary '&' operator may not be applied to them.
  As an extension, GNU C allows such arrays to be subscripted in C90 mode,
  though otherwise they do not decay to pointers outside C99 mode.  For
  example, this is valid in GNU C though not valid in C90:
--- 36674,36680 ----
  
  In ISO C99, arrays that are not lvalues still decay to pointers, and may
  be subscripted, although they may not be modified or used after the next
! sequence point and the unary â€˜&â€™ operator may not be applied to them.
  As an extension, GNU C allows such arrays to be subscripted in C90 mode,
  though otherwise they do not decay to pointers outside C99 mode.  For
  example, this is valid in GNU C though not valid in C90:
*************** literals also in C90 mode and in C++, al
*** 36712,36722 ****
  C++ semantics are somewhat different.
  
   Usually, the specified type of a compound literal is a structure.
! Assume that 'struct foo' and 'structure' are declared as shown:
  
       struct foo {int a; char b[2];} structure;
  
! Here is an example of constructing a 'struct foo' with a compound
  literal:
  
       structure = ((struct foo) {x + y, 'a', 0});
--- 36720,36730 ----
  C++ semantics are somewhat different.
  
   Usually, the specified type of a compound literal is a structure.
! Assume that â€˜struct fooâ€™ and â€˜structureâ€™ are declared as shown:
  
       struct foo {int a; char b[2];} structure;
  
! Here is an example of constructing a â€˜struct fooâ€™ with a compound
  literal:
  
       structure = ((struct foo) {x + y, 'a', 0});
*************** initializer, as shown here:
*** 36738,36745 ****
       char **foo = (char *[]) { "x", "y", "z" };
  
   Compound literals for scalar types and union types are also allowed.
! In the following example the variable 'i' is initialized to the value
! '2', the result of incrementing the unnamed object created by the
  compound literal.
  
       int i = ++(int) { 1 };
--- 36746,36753 ----
       char **foo = (char *[]) { "x", "y", "z" };
  
   Compound literals for scalar types and union types are also allowed.
! In the following example the variable â€˜iâ€™ is initialized to the value
! â€˜2â€™, the result of incrementing the unnamed object created by the
  compound literal.
  
       int i = ++(int) { 1 };
*************** As a result, well-defined C code that ta
*** 36769,36781 ****
  of a compound literal can be undefined in C++, so G++ rejects the
  conversion of a temporary array to a pointer.  For instance, if the
  array compound literal example above appeared inside a function, any
! subsequent use of 'foo' in C++ would have undefined behavior because the
! lifetime of the array ends after the declaration of 'foo'.
  
   As an optimization, G++ sometimes gives array compound literals longer
  lifetimes: when the array either appears outside a function or has a
! 'const'-qualified type.  If 'foo' and its initializer had elements of
! type 'char *const' rather than 'char *', or if 'foo' were a global
  variable, the array would have static storage duration.  But it is
  probably safest just to avoid the use of array compound literals in C++
  code.
--- 36777,36789 ----
  of a compound literal can be undefined in C++, so G++ rejects the
  conversion of a temporary array to a pointer.  For instance, if the
  array compound literal example above appeared inside a function, any
! subsequent use of â€˜fooâ€™ in C++ would have undefined behavior because the
! lifetime of the array ends after the declaration of â€˜fooâ€™.
  
   As an optimization, G++ sometimes gives array compound literals longer
  lifetimes: when the array either appears outside a function or has a
! â€˜constâ€™-qualified type.  If â€˜fooâ€™ and its initializer had elements of
! type â€˜char *constâ€™ rather than â€˜char *â€™, or if â€˜fooâ€™ were a global
  variable, the array would have static storage duration.  But it is
  probably safest just to avoid the use of array compound literals in C++
  code.
*************** indices or structure field names they ap
*** 36795,36801 ****
  an extension in C90 mode as well.  This extension is not implemented in
  GNU C++.
  
!  To specify an array index, write '[INDEX] =' before the element value.
  For example,
  
       int a[6] = { [4] = 29, [2] = 15 };
--- 36803,36809 ----
  an extension in C90 mode as well.  This extension is not implemented in
  GNU C++.
  
!  To specify an array index, write â€˜[INDEX] =â€™ before the element value.
  For example,
  
       int a[6] = { [4] = 29, [2] = 15 };
*************** The index values must be constant expres
*** 36808,36818 ****
  initialized is automatic.
  
   An alternative syntax for this that has been obsolete since GCC 2.5 but
! GCC still accepts is to write '[INDEX]' before the element value, with
! no '='.
  
!  To initialize a range of elements to the same value, write '[FIRST ...
! LAST] = VALUE'.  This is a GNU extension.  For example,
  
       int widths[] = { [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 };
  
--- 36816,36826 ----
  initialized is automatic.
  
   An alternative syntax for this that has been obsolete since GCC 2.5 but
! GCC still accepts is to write â€˜[INDEX]â€™ before the element value, with
! no â€˜=â€™.
  
!  To initialize a range of elements to the same value, write â€˜[FIRST ...
! LAST] = VALUEâ€™.  This is a GNU extension.  For example,
  
       int widths[] = { [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 };
  
*************** Note that the length of the array is the
*** 36823,36829 ****
  one.
  
   In a structure initializer, specify the name of a field to initialize
! with '.FIELDNAME =' before the element value.  For example, given the
  following structure,
  
       struct point { int x, y; };
--- 36831,36837 ----
  one.
  
   In a structure initializer, specify the name of a field to initialize
! with â€˜.FIELDNAME =â€™ before the element value.  For example, given the
  following structure,
  
       struct point { int x, y; };
*************** is equivalent to
*** 36837,36850 ****
       struct point p = { xvalue, yvalue };
  
   Another syntax that has the same meaning, obsolete since GCC 2.5, is
! 'FIELDNAME:', as shown here:
  
       struct point p = { y: yvalue, x: xvalue };
  
   Omitted fields are implicitly initialized the same as for objects that
  have static storage duration.
  
!  The '[INDEX]' or '.FIELDNAME' is known as a "designator".  You can also
  use a designator (or the obsolete colon syntax) when initializing a
  union, to specify which element of the union should be used.  For
  example,
--- 36845,36858 ----
       struct point p = { xvalue, yvalue };
  
   Another syntax that has the same meaning, obsolete since GCC 2.5, is
! â€˜FIELDNAME:â€™, as shown here:
  
       struct point p = { y: yvalue, x: xvalue };
  
   Omitted fields are implicitly initialized the same as for objects that
  have static storage duration.
  
!  The â€˜[INDEX]â€™ or â€˜.FIELDNAMEâ€™ is known as a â€œdesignatorâ€�.  You can also
  use a designator (or the obsolete colon syntax) when initializing a
  union, to specify which element of the union should be used.  For
  example,
*************** example,
*** 36853,36861 ****
  
       union foo f = { .d = 4 };
  
! converts 4 to a 'double' to store it in the union using the second
! element.  By contrast, casting 4 to type 'union foo' stores it into the
! union as the integer 'i', since it is an integer.  *Note Cast to
  Union::.
  
   You can combine this technique of naming elements with ordinary C
--- 36861,36869 ----
  
       union foo f = { .d = 4 };
  
! converts 4 to a â€˜doubleâ€™ to store it in the union using the second
! element.  By contrast, casting 4 to type â€˜union fooâ€™ stores it into the
! union as the integer â€˜iâ€™, since it is an integer.  *Note Cast to
  Union::.
  
   You can combine this technique of naming elements with ordinary C
*************** is equivalent to
*** 36870,36885 ****
       int a[6] = { 0, v1, v2, 0, v4, 0 };
  
   Labeling the elements of an array initializer is especially useful when
! the indices are characters or belong to an 'enum' type.  For example:
  
       int whitespace[256]
         = { [' '] = 1, ['\t'] = 1, ['\h'] = 1,
             ['\f'] = 1, ['\n'] = 1, ['\r'] = 1 };
  
!  You can also write a series of '.FIELDNAME' and '[INDEX]' designators
! before an '=' to specify a nested subobject to initialize; the list is
  taken relative to the subobject corresponding to the closest surrounding
! brace pair.  For example, with the 'struct point' declaration above:
  
       struct point ptarray[10] = { [2].y = yv2, [2].x = xv2, [0].x = xv0 };
  
--- 36878,36893 ----
       int a[6] = { 0, v1, v2, 0, v4, 0 };
  
   Labeling the elements of an array initializer is especially useful when
! the indices are characters or belong to an â€˜enumâ€™ type.  For example:
  
       int whitespace[256]
         = { [' '] = 1, ['\t'] = 1, ['\h'] = 1,
             ['\f'] = 1, ['\n'] = 1, ['\r'] = 1 };
  
!  You can also write a series of â€˜.FIELDNAMEâ€™ and â€˜[INDEX]â€™ designators
! before an â€˜=â€™ to specify a nested subobject to initialize; the list is
  taken relative to the subobject corresponding to the closest surrounding
! brace pair.  For example, with the â€˜struct pointâ€™ declaration above:
  
       struct point ptarray[10] = { [2].y = yv2, [2].x = xv2, [0].x = xv0 };
  
*************** M32C, PRU, RL78, and x86 targets support
*** 36905,36911 ****
  generic address space.
  
   Address space identifiers may be used exactly like any other C type
! qualifier (e.g., 'const' or 'volatile').  See the N1275 document for
  more details.
  
  6.3.1 AVR Named Address Spaces
--- 36913,36919 ----
  generic address space.
  
   Address space identifiers may be used exactly like any other C type
! qualifier (e.g., â€˜constâ€™ or â€˜volatileâ€™).  See the N1275 document for
  more details.
  
  6.3.1 AVR Named Address Spaces
*************** more details.
*** 36913,36970 ****
  
  On the AVR target, there are several address spaces that can be used in
  order to put read-only data into the flash memory and access that data
! by means of the special instructions 'LPM' or 'ELPM' needed to read from
  flash.
  
!  Devices belonging to 'avrtiny' and 'avrxmega3' can access flash memory
! by means of 'LD*' instructions because the flash memory is mapped into
  the RAM address space.  There is _no need_ for language extensions like
! '__flash' or attribute *note 'progmem': AVR Variable Attributes.  The
  default linker description files for these devices cater for that
! feature and '.rodata' stays in flash: The compiler just generates 'LD*'
  instructions, and the linker script adds core specific offsets to all
! '.rodata' symbols: '0x4000' in the case of 'avrtiny' and '0x8000' in the
! case of 'avrxmega3'.  See *note AVR Options:: for a list of respective
  devices.
  
!  For devices not in 'avrtiny' or 'avrxmega3', any data including
  read-only data is located in RAM (the generic address space) because
  flash memory is not visible in the RAM address space.  In order to
  locate read-only data in flash memory _and_ to generate the right
  instructions to access this data without using (inline) assembler code,
  special address spaces are needed.
  
! '__flash'
!      The '__flash' qualifier locates data in the '.progmem.data'
!      section.  Data is read using the 'LPM' instruction.  Pointers to
       this address space are 16 bits wide.
  
! '__flash1'
! '__flash2'
! '__flash3'
! '__flash4'
! '__flash5'
       These are 16-bit address spaces locating data in section
!      '.progmemN.data' where N refers to address space '__flashN'.  The
!      compiler sets the 'RAMPZ' segment register appropriately before
!      reading data by means of the 'ELPM' instruction.
  
! '__flashx'
  
       This is a 24-bit flash address space locating data in section
!      '.progmemx.data'.  The compiler sets the 'RAMPZ' segment register
!      appropriately before reading data by means of the 'ELPM'
       instruction.
  
! '__memx'
       This is a 24-bit address space that linearizes flash and RAM: If
       the high bit of the address is set, data is read from RAM using the
       lower two bytes as RAM address.  If the high bit of the address is
!      clear, data is read from flash with 'RAMPZ' set according to the
!      high byte of the address.  *Note '__builtin_avr_flash_segment': AVR
       Built-in Functions.
  
!      Objects in this address space are located in '.progmemx.data'.
  
   Example
  
--- 36921,36978 ----
  
  On the AVR target, there are several address spaces that can be used in
  order to put read-only data into the flash memory and access that data
! by means of the special instructions â€˜LPMâ€™ or â€˜ELPMâ€™ needed to read from
  flash.
  
!  Devices belonging to â€˜avrtinyâ€™ and â€˜avrxmega3â€™ can access flash memory
! by means of â€˜LD*â€™ instructions because the flash memory is mapped into
  the RAM address space.  There is _no need_ for language extensions like
! â€˜__flashâ€™ or attribute *note â€˜progmemâ€™: AVR Variable Attributes.  The
  default linker description files for these devices cater for that
! feature and â€˜.rodataâ€™ stays in flash: The compiler just generates â€˜LD*â€™
  instructions, and the linker script adds core specific offsets to all
! â€˜.rodataâ€™ symbols: â€˜0x4000â€™ in the case of â€˜avrtinyâ€™ and â€˜0x8000â€™ in the
! case of â€˜avrxmega3â€™.  See *note AVR Options:: for a list of respective
  devices.
  
!  For devices not in â€˜avrtinyâ€™ or â€˜avrxmega3â€™, any data including
  read-only data is located in RAM (the generic address space) because
  flash memory is not visible in the RAM address space.  In order to
  locate read-only data in flash memory _and_ to generate the right
  instructions to access this data without using (inline) assembler code,
  special address spaces are needed.
  
! â€˜__flashâ€™
!      The â€˜__flashâ€™ qualifier locates data in the â€˜.progmem.dataâ€™
!      section.  Data is read using the â€˜LPMâ€™ instruction.  Pointers to
       this address space are 16 bits wide.
  
! â€˜__flash1â€™
! â€˜__flash2â€™
! â€˜__flash3â€™
! â€˜__flash4â€™
! â€˜__flash5â€™
       These are 16-bit address spaces locating data in section
!      â€˜.progmemN.dataâ€™ where N refers to address space â€˜__flashNâ€™.  The
!      compiler sets the â€˜RAMPZâ€™ segment register appropriately before
!      reading data by means of the â€˜ELPMâ€™ instruction.
  
! â€˜__flashxâ€™
  
       This is a 24-bit flash address space locating data in section
!      â€˜.progmemx.dataâ€™.  The compiler sets the â€˜RAMPZâ€™ segment register
!      appropriately before reading data by means of the â€˜ELPMâ€™
       instruction.
  
! â€˜__memxâ€™
       This is a 24-bit address space that linearizes flash and RAM: If
       the high bit of the address is set, data is read from RAM using the
       lower two bytes as RAM address.  If the high bit of the address is
!      clear, data is read from flash with â€˜RAMPZâ€™ set according to the
!      high byte of the address.  *Note â€˜__builtin_avr_flash_segmentâ€™: AVR
       Built-in Functions.
  
!      Objects in this address space are located in â€˜.progmemx.dataâ€™.
  
   Example
  
*************** not:
*** 37012,37074 ****
       }
       #endif /* __FLASH */
  
! Notice that attribute *note 'progmem': AVR Variable Attributes. locates
  data in flash but accesses to these data read from generic address
  space, i.e. from RAM, so that you need special accessors like
! 'pgm_read_byte' from
  AVR-LibC (https://avrdudes.github.io/avr-libc/avr-libc-user-manual/)
! together with attribute 'progmem'.
  
  Limitations and Caveats
  
!    * Reading across the 64 KiB section boundary of the '__flash' or
!      '__flashN' address spaces is not supported.  The only address
       spaces that support reading across the 64 KiB flash segment
!      boundaries are '__memx' and '__flashx'.
  
!    * If you use one of the '__flashN' address spaces you must arrange
!      your linker script to locate the '.progmemN.data' sections
       according to your needs.  For an example, see the
       avr-gcc wiki (https://gcc.gnu.org/wiki/avr-gcc#Address_Spaces)
  
!    * Any data or pointers to the non-generic address spaces must be
!      qualified as 'const', i.e. as read-only data.  This still applies
       if the data in one of these address spaces like software version
       number or calibration lookup table are intended to be changed after
       load time by, say, a boot loader.  In this case the right
!      qualification is 'const' 'volatile' so that the compiler must not
       optimize away known values or insert them as immediates into
       operands of instructions.
  
!    * The following code initializes a variable 'pfoo' located in static
       storage with a 24-bit address:
            extern const __memx char foo;
            const __memx void *pfoo = &foo;
  
!    * On the reduced Tiny devices like ATtiny40, no address spaces are
       supported.  Just use vanilla C / C++ code without overhead as
!      outlined above.  Attribute 'progmem' is supported but works
       differently, see *note AVR Variable Attributes::.
  
  6.3.2 M32C Named Address Spaces
  -------------------------------
  
  On the M32C target, with the R8C and M16C CPU variants, variables
! qualified with '__far' are accessed using 32-bit addresses in order to
! access memory beyond the first 64 Ki bytes.  If '__far' is used with the
  M32CM or M32C CPU variants, it has no effect.
  
  6.3.3 PRU Named Address Spaces
  ------------------------------
  
! On the PRU target, variables qualified with '__regio_symbol' are aliases
  used to access the special I/O CPU registers.  They must be declared as
! 'extern' because such variables will not be allocated in any data
! memory.  They must also be marked as 'volatile', and can only be 32-bit
! integer types.  The only names those variables can have are '__R30' and
! '__R31', representing respectively the 'R30' and 'R31' special I/O CPU
  registers.  Hence the following example is the only valid usage of
! '__regio_symbol':
  
       extern volatile __regio_symbol uint32_t __R30;
       extern volatile __regio_symbol uint32_t __R31;
--- 37020,37082 ----
       }
       #endif /* __FLASH */
  
! Notice that attribute *note â€˜progmemâ€™: AVR Variable Attributes. locates
  data in flash but accesses to these data read from generic address
  space, i.e. from RAM, so that you need special accessors like
! â€˜pgm_read_byteâ€™ from
  AVR-LibC (https://avrdudes.github.io/avr-libc/avr-libc-user-manual/)
! together with attribute â€˜progmemâ€™.
  
  Limitations and Caveats
  
!    â€¢ Reading across the 64 KiB section boundary of the â€˜__flashâ€™ or
!      â€˜__flashNâ€™ address spaces is not supported.  The only address
       spaces that support reading across the 64 KiB flash segment
!      boundaries are â€˜__memxâ€™ and â€˜__flashxâ€™.
  
!    â€¢ If you use one of the â€˜__flashNâ€™ address spaces you must arrange
!      your linker script to locate the â€˜.progmemN.dataâ€™ sections
       according to your needs.  For an example, see the
       avr-gcc wiki (https://gcc.gnu.org/wiki/avr-gcc#Address_Spaces)
  
!    â€¢ Any data or pointers to the non-generic address spaces must be
!      qualified as â€˜constâ€™, i.e. as read-only data.  This still applies
       if the data in one of these address spaces like software version
       number or calibration lookup table are intended to be changed after
       load time by, say, a boot loader.  In this case the right
!      qualification is â€˜constâ€™ â€˜volatileâ€™ so that the compiler must not
       optimize away known values or insert them as immediates into
       operands of instructions.
  
!    â€¢ The following code initializes a variable â€˜pfooâ€™ located in static
       storage with a 24-bit address:
            extern const __memx char foo;
            const __memx void *pfoo = &foo;
  
!    â€¢ On the reduced Tiny devices like ATtiny40, no address spaces are
       supported.  Just use vanilla C / C++ code without overhead as
!      outlined above.  Attribute â€˜progmemâ€™ is supported but works
       differently, see *note AVR Variable Attributes::.
  
  6.3.2 M32C Named Address Spaces
  -------------------------------
  
  On the M32C target, with the R8C and M16C CPU variants, variables
! qualified with â€˜__farâ€™ are accessed using 32-bit addresses in order to
! access memory beyond the first 64 Ki bytes.  If â€˜__farâ€™ is used with the
  M32CM or M32C CPU variants, it has no effect.
  
  6.3.3 PRU Named Address Spaces
  ------------------------------
  
! On the PRU target, variables qualified with â€˜__regio_symbolâ€™ are aliases
  used to access the special I/O CPU registers.  They must be declared as
! â€˜externâ€™ because such variables will not be allocated in any data
! memory.  They must also be marked as â€˜volatileâ€™, and can only be 32-bit
! integer types.  The only names those variables can have are â€˜__R30â€™ and
! â€˜__R31â€™, representing respectively the â€˜R30â€™ and â€˜R31â€™ special I/O CPU
  registers.  Hence the following example is the only valid usage of
! â€˜__regio_symbolâ€™:
  
       extern volatile __regio_symbol uint32_t __R30;
       extern volatile __regio_symbol uint32_t __R31;
*************** registers.  Hence the following example
*** 37076,37082 ****
  6.3.4 RL78 Named Address Spaces
  -------------------------------
  
! On the RL78 target, variables qualified with '__far' are accessed with
  32-bit pointers (20-bit addresses) rather than the default 16-bit
  addresses.  Non-far variables are assumed to appear in the topmost
  64 KiB of the address space.
--- 37084,37090 ----
  6.3.4 RL78 Named Address Spaces
  -------------------------------
  
! On the RL78 target, variables qualified with â€˜__farâ€™ are accessed with
  32-bit pointers (20-bit addresses) rather than the default 16-bit
  addresses.  Non-far variables are assumed to appear in the topmost
  64 KiB of the address space.
*************** addresses.  Non-far variables are assume
*** 37085,37094 ****
  ------------------------------
  
  On the x86 target, variables may be declared as being relative to the
! '%fs' or '%gs' segments.
  
! '__seg_fs'
! '__seg_gs'
       The object is accessed with the respective segment override prefix.
  
       The respective segment base must be set via some method specific to
--- 37093,37102 ----
  ------------------------------
  
  On the x86 target, variables may be declared as being relative to the
! â€˜%fsâ€™ or â€˜%gsâ€™ segments.
  
! â€˜__seg_fsâ€™
! â€˜__seg_gsâ€™
       The object is accessed with the respective segment override prefix.
  
       The respective segment base must be set via some method specific to
*************** On the x86 target, variables may be decl
*** 37097,37106 ****
       considered to be subspaces of the generic (flat) address space.
       This means that explicit casts are required to convert pointers
       between these address spaces and the generic address space.  In
!      practice the application should cast to 'uintptr_t' and apply the
       segment base offset that it installed previously.
  
!      The preprocessor symbols '__SEG_FS' and '__SEG_GS' are defined when
       these address spaces are supported.
  
  
--- 37105,37114 ----
       considered to be subspaces of the generic (flat) address space.
       This means that explicit casts are required to convert pointers
       between these address spaces and the generic address space.  In
!      practice the application should cast to â€˜uintptr_tâ€™ and apply the
       segment base offset that it installed previously.
  
!      The preprocessor symbols â€˜__SEG_FSâ€™ and â€˜__SEG_GSâ€™ are defined when
       these address spaces are supported.
  
  
*************** never returns.  GCC supports a large num
*** 37118,37129 ****
  are documented in this section.
  
   GCC provides two different ways to specify attributes: the traditional
! GNU syntax using '__attribute__ ((...))' annotations, and the newer
! standard C and C++ syntax using '[[...]]' with the 'gnu::' namespace
  prefix on attribute names.  The traditional syntax, described in detail
  in *note Attribute Syntax::, is supported in all non-strict C and C++
  language dialects.  The standard syntax is supported in C with
! '-std=c23' or later, in C++ with '-std=c++11' or later, and as an
  extension in older GNU C and C++ dialects.
  
  * Menu:
--- 37126,37137 ----
  are documented in this section.
  
   GCC provides two different ways to specify attributes: the traditional
! GNU syntax using â€˜__attribute__ ((...))â€™ annotations, and the newer
! standard C and C++ syntax using â€˜[[...]]â€™ with the â€˜gnu::â€™ namespace
  prefix on attribute names.  The traditional syntax, described in detail
  in *note Attribute Syntax::, is supported in all non-strict C and C++
  language dialects.  The standard syntax is supported in C with
! â€˜-std=c23â€™ or later, in C++ with â€˜-std=c++11â€™ or later, and as an
  extension in older GNU C and C++ dialects.
  
  * Menu:
*************** File: gcc.info,  Node: Function Attribut
*** 37146,37154 ****
  In GNU C and C++, you can use function attributes to specify certain
  function properties that may help the compiler optimize calls or check
  code more carefully for correctness.  For example, you can use
! attributes to specify that a function never returns ('noreturn'),
! returns a value depending only on the values of its arguments ('const'),
! or has 'printf'-style arguments ('format').
  
   You can also use attributes to control memory placement, code
  generation options or call/return conventions within the function being
--- 37154,37162 ----
  In GNU C and C++, you can use function attributes to specify certain
  function properties that may help the compiler optimize calls or check
  code more carefully for correctness.  For example, you can use
! attributes to specify that a function never returns (â€˜noreturnâ€™),
! returns a value depending only on the values of its arguments (â€˜constâ€™),
! or has â€˜printfâ€™-style arguments (â€˜formatâ€™).
  
   You can also use attributes to control memory placement, code
  generation options or call/return conventions within the function being
*************** most, if not all targets.  Those are des
*** 37161,37168 ****
  Function Attributes:: section.
  
   GCC provides two different ways to specify attributes: the traditional
! GNU syntax using '__attribute__ ((...))' annotations, and the newer
! standard C and C++ syntax using '[[...]]' with the 'gnu::' prefix on
  attribute names.  Note that the exact rules for placement of attributes
  in your source code are different depending on which syntax you use.
  *Note Attribute Syntax::, for details.
--- 37169,37176 ----
  Function Attributes:: section.
  
   GCC provides two different ways to specify attributes: the traditional
! GNU syntax using â€˜__attribute__ ((...))â€™ annotations, and the newer
! standard C and C++ syntax using â€˜[[...]]â€™ with the â€˜gnu::â€™ prefix on
  attribute names.  Note that the exact rules for placement of attributes
  in your source code are different depending on which syntax you use.
  *Note Attribute Syntax::, for details.
*************** function is ignored with a warning.
*** 37174,37187 ****
  
   Some function attributes take one or more arguments that refer to the
  function's parameters by their positions within the function parameter
! list.  Such attribute arguments are referred to as "positional
! arguments".  Unless specified otherwise, positional arguments that
  specify properties of parameters with pointer types can also specify the
! same properties of the implicit C++ 'this' argument in non-static member
  functions, and of parameters of reference to a pointer type.  For
  ordinary functions, position one refers to the first parameter on the
  list.  In C++ non-static member functions, position one refers to the
! implicit 'this' pointer.  The same restrictions and effects apply to
  function attributes used with ordinary functions or C++ member
  functions.
  
--- 37182,37195 ----
  
   Some function attributes take one or more arguments that refer to the
  function's parameters by their positions within the function parameter
! list.  Such attribute arguments are referred to as â€œpositional
! argumentsâ€�.  Unless specified otherwise, positional arguments that
  specify properties of parameters with pointer types can also specify the
! same properties of the implicit C++ â€˜thisâ€™ argument in non-static member
  functions, and of parameters of reference to a pointer type.  For
  ordinary functions, position one refers to the first parameter on the
  list.  In C++ non-static member functions, position one refers to the
! implicit â€˜thisâ€™ pointer.  The same restrictions and effects apply to
  function attributes used with ordinary functions or C++ member
  functions.
  
*************** functions.
*** 37189,37200 ****
  Attributes::), labels (*note Label Attributes::), enumerators (*note
  Enumerator Attributes::), statements (*note Statement Attributes::),
  types (*note Type Attributes::), and on field declarations (for
! 'tainted_args').
  
   There is some overlap between the purposes of attributes and pragmas
  (*note Pragmas Accepted by GCC: Pragmas.).  It has been found convenient
! to use '__attribute__' to achieve a natural attachment of attributes to
! their corresponding declarations, whereas '#pragma' is of use for
  compatibility with other compilers or constructs that do not naturally
  form part of the grammar.
  
--- 37197,37208 ----
  Attributes::), labels (*note Label Attributes::), enumerators (*note
  Enumerator Attributes::), statements (*note Statement Attributes::),
  types (*note Type Attributes::), and on field declarations (for
! â€˜tainted_argsâ€™).
  
   There is some overlap between the purposes of attributes and pragmas
  (*note Pragmas Accepted by GCC: Pragmas.).  It has been found convenient
! to use â€˜__attribute__â€™ to achieve a natural attachment of attributes to
! their corresponding declarations, whereas â€˜#pragmaâ€™ is of use for
  compatibility with other compilers or constructs that do not naturally
  form part of the grammar.
  
*************** File: gcc.info,  Node: Common Function A
*** 37246,37291 ****
  
  The following attributes are supported on most targets.
  
! 'access (ACCESS-MODE, REF-INDEX)'
! 'access (ACCESS-MODE, REF-INDEX, SIZE-INDEX)'
  
!      The 'access' attribute enables the detection of invalid or unsafe
       accesses by functions to which they apply or their callers, as well
       as write-only accesses to objects that are never read from.  Such
       accesses may be diagnosed by warnings such as
!      '-Wstringop-overflow', '-Wuninitialized', '-Wunused', and others.
  
!      The 'access' attribute specifies that a pointer or reference
       argument to the function is accessed according to ACCESS-MODE,
!      which must be one of 'read_only', 'read_write', 'write_only', or
!      'none'.  The semantics of these modes are described below.
  
       The argument the attribute applies to is identifed by REF-INDEX,
       which is an integer constant representing its position in the
       argument list.  Argument numbering starts from 1.  You can specify
!      multiple 'access' attributes to describe the access modes of
!      different arguments, but multiple 'access' attributes applying to
       the same argument are not permitted.
  
       The optional SIZE-INDEX denotes the position of a function argument
       of integer type that specifies the maximum size of the access.  The
       size is the number of elements of the type referenced by REF-INDEX,
!      or the number of bytes when the pointer type is 'void*'.  When no
       SIZE-INDEX argument is specified, the pointer argument must be
       either null or point to a space that is suitably aligned and large
       enough for at least one object of the referenced type (this implies
       that a past-the-end pointer is not a valid argument).  The actual
       size of the access may be less but it must not be more.
  
!      The 'read_only' access mode specifies that the pointer to which it
       applies is used to read the referenced object but not write to it.
       Unless the argument specifying the size of the access denoted by
       SIZE-INDEX is zero, the referenced object must be initialized.  The
!      mode implies a stronger guarantee than the 'const' qualifier which,
       when cast away from a pointer, does not prevent the pointed-to
!      object from being modified.  Examples of the use of the 'read_only'
!      access mode is the argument to the 'puts' function, or the second
!      argument to the 'memcpy' function.
  
            __attribute__ ((access (read_only, 1)))
            int puts (const char*);
--- 37254,37299 ----
  
  The following attributes are supported on most targets.
  
! â€˜access (ACCESS-MODE, REF-INDEX)â€™
! â€˜access (ACCESS-MODE, REF-INDEX, SIZE-INDEX)â€™
  
!      The â€˜accessâ€™ attribute enables the detection of invalid or unsafe
       accesses by functions to which they apply or their callers, as well
       as write-only accesses to objects that are never read from.  Such
       accesses may be diagnosed by warnings such as
!      â€˜-Wstringop-overflowâ€™, â€˜-Wuninitializedâ€™, â€˜-Wunusedâ€™, and others.
  
!      The â€˜accessâ€™ attribute specifies that a pointer or reference
       argument to the function is accessed according to ACCESS-MODE,
!      which must be one of â€˜read_onlyâ€™, â€˜read_writeâ€™, â€˜write_onlyâ€™, or
!      â€˜noneâ€™.  The semantics of these modes are described below.
  
       The argument the attribute applies to is identifed by REF-INDEX,
       which is an integer constant representing its position in the
       argument list.  Argument numbering starts from 1.  You can specify
!      multiple â€˜accessâ€™ attributes to describe the access modes of
!      different arguments, but multiple â€˜accessâ€™ attributes applying to
       the same argument are not permitted.
  
       The optional SIZE-INDEX denotes the position of a function argument
       of integer type that specifies the maximum size of the access.  The
       size is the number of elements of the type referenced by REF-INDEX,
!      or the number of bytes when the pointer type is â€˜void*â€™.  When no
       SIZE-INDEX argument is specified, the pointer argument must be
       either null or point to a space that is suitably aligned and large
       enough for at least one object of the referenced type (this implies
       that a past-the-end pointer is not a valid argument).  The actual
       size of the access may be less but it must not be more.
  
!      The â€˜read_onlyâ€™ access mode specifies that the pointer to which it
       applies is used to read the referenced object but not write to it.
       Unless the argument specifying the size of the access denoted by
       SIZE-INDEX is zero, the referenced object must be initialized.  The
!      mode implies a stronger guarantee than the â€˜constâ€™ qualifier which,
       when cast away from a pointer, does not prevent the pointed-to
!      object from being modified.  Examples of the use of the â€˜read_onlyâ€™
!      access mode is the argument to the â€˜putsâ€™ function, or the second
!      argument to the â€˜memcpyâ€™ function.
  
            __attribute__ ((access (read_only, 1)))
            int puts (const char*);
*************** The following attributes are supported o
*** 37293,37316 ****
            __attribute__ ((access (read_only, 2, 3)))
            void* memcpy (void*, const void*, size_t);
  
!      The 'read_write' access mode applies to arguments of pointer types
!      without the 'const' qualifier.  It specifies that the pointer to
       which it applies is used to both read and write the referenced
       object.  Unless the argument specifying the size of the access
       denoted by SIZE-INDEX is zero, the object referenced by the pointer
!      must be initialized.  An example of the use of the 'read_write'
!      access mode is the first argument to the 'strcat' function.
  
            __attribute__ ((access (read_write, 1), access (read_only, 2)))
            char* strcat (char*, const char*);
  
!      The 'write_only' access mode applies to arguments of pointer types
!      without the 'const' qualifier.  It specifies that the pointer to
       which it applies is used to write to the referenced object but not
       read from it.  The object referenced by the pointer need not be
!      initialized.  An example of the use of the 'write_only' access mode
!      is the first argument to the 'strcpy' function, or the first two
!      arguments to the 'fgets' function.
  
            __attribute__ ((access (write_only, 1), access (read_only, 2)))
            char* strcpy (char*, const char*);
--- 37301,37324 ----
            __attribute__ ((access (read_only, 2, 3)))
            void* memcpy (void*, const void*, size_t);
  
!      The â€˜read_writeâ€™ access mode applies to arguments of pointer types
!      without the â€˜constâ€™ qualifier.  It specifies that the pointer to
       which it applies is used to both read and write the referenced
       object.  Unless the argument specifying the size of the access
       denoted by SIZE-INDEX is zero, the object referenced by the pointer
!      must be initialized.  An example of the use of the â€˜read_writeâ€™
!      access mode is the first argument to the â€˜strcatâ€™ function.
  
            __attribute__ ((access (read_write, 1), access (read_only, 2)))
            char* strcat (char*, const char*);
  
!      The â€˜write_onlyâ€™ access mode applies to arguments of pointer types
!      without the â€˜constâ€™ qualifier.  It specifies that the pointer to
       which it applies is used to write to the referenced object but not
       read from it.  The object referenced by the pointer need not be
!      initialized.  An example of the use of the â€˜write_onlyâ€™ access mode
!      is the first argument to the â€˜strcpyâ€™ function, or the first two
!      arguments to the â€˜fgetsâ€™ function.
  
            __attribute__ ((access (write_only, 1), access (read_only, 2)))
            char* strcpy (char*, const char*);
*************** The following attributes are supported o
*** 37318,37346 ****
            __attribute__ ((access (write_only, 1, 2), access (read_write, 3)))
            int fgets (char*, int, FILE*);
  
!      The access mode 'none' specifies that the pointer argument to which
       it applies is not used to access the referenced object at all.
       Unless the pointer is null, the pointed-to object must exist and
       have at least the size as denoted by the SIZE-INDEX argument.  When
       the optional SIZE-INDEX argument is omitted for an argument of
!      'void*' type, the actual pointer argument is ignored.  The
       referenced object need not be initialized.  The mode is intended to
       be used as a means to help validate the expected object size, for
!      example in functions that call '__builtin_object_size'.  *Note
       Object Size Checking::.
  
!      Note that the 'access' attribute merely specifies how an object
       referenced by the pointer argument can be accessed; it does not
!      imply that an access *will* happen.  Also, the 'access' attribute
!      does not imply the attribute 'nonnull' nor the attribute
!      'nonnull_if_nonzero'; it may be appropriate to add both attributes
       at the declaration of a function that unconditionally manipulates a
!      buffer via a pointer argument.  See the 'nonnull' or
!      'nonnull_if_nonzero' function attributes, documented later in this
       section, for more information and caveats.
  
! 'alias ("TARGET")'
!      The 'alias' attribute causes the declaration to be emitted as an
       alias for another symbol, which must have been previously declared
       with the same type, and for variables, also the same size and
       alignment.  Declaring an alias with a different type than the
--- 37326,37354 ----
            __attribute__ ((access (write_only, 1, 2), access (read_write, 3)))
            int fgets (char*, int, FILE*);
  
!      The access mode â€˜noneâ€™ specifies that the pointer argument to which
       it applies is not used to access the referenced object at all.
       Unless the pointer is null, the pointed-to object must exist and
       have at least the size as denoted by the SIZE-INDEX argument.  When
       the optional SIZE-INDEX argument is omitted for an argument of
!      â€˜void*â€™ type, the actual pointer argument is ignored.  The
       referenced object need not be initialized.  The mode is intended to
       be used as a means to help validate the expected object size, for
!      example in functions that call â€˜__builtin_object_sizeâ€™.  *Note
       Object Size Checking::.
  
!      Note that the â€˜accessâ€™ attribute merely specifies how an object
       referenced by the pointer argument can be accessed; it does not
!      imply that an access *will* happen.  Also, the â€˜accessâ€™ attribute
!      does not imply the attribute â€˜nonnullâ€™ nor the attribute
!      â€˜nonnull_if_nonzeroâ€™; it may be appropriate to add both attributes
       at the declaration of a function that unconditionally manipulates a
!      buffer via a pointer argument.  See the â€˜nonnullâ€™ or
!      â€˜nonnull_if_nonzeroâ€™ function attributes, documented later in this
       section, for more information and caveats.
  
! â€˜alias ("TARGET")â€™
!      The â€˜aliasâ€™ attribute causes the declaration to be emitted as an
       alias for another symbol, which must have been previously declared
       with the same type, and for variables, also the same size and
       alignment.  Declaring an alias with a different type than the
*************** The following attributes are supported o
*** 37350,37369 ****
            void __f () { /* Do something. */; }
            void f () __attribute__ ((weak, alias ("__f")));
  
!      define 'f' to be a weak alias for '__f'.  In C++, the mangled name
!      for the target must be used.  It is an error if '__f' is not
       defined in the same translation unit.
  
       This attribute requires assembler and object file support, and may
       not be available on all targets.
  
! 'aligned'
! 'aligned (ALIGNMENT)'
!      The 'aligned' attribute specifies a minimum alignment for the first
       instruction of the function, measured in bytes.  When specified,
       ALIGNMENT must be an integer constant power of 2.  Specifying no
       ALIGNMENT argument implies the ideal alignment for the target.  The
!      '__alignof__' operator can be used to determine what that is (*note
       Alignment::).  The attribute has no effect when a definition for
       the function is not provided in the same translation unit.
  
--- 37358,37377 ----
            void __f () { /* Do something. */; }
            void f () __attribute__ ((weak, alias ("__f")));
  
!      define â€˜fâ€™ to be a weak alias for â€˜__fâ€™.  In C++, the mangled name
!      for the target must be used.  It is an error if â€˜__fâ€™ is not
       defined in the same translation unit.
  
       This attribute requires assembler and object file support, and may
       not be available on all targets.
  
! â€˜alignedâ€™
! â€˜aligned (ALIGNMENT)â€™
!      The â€˜alignedâ€™ attribute specifies a minimum alignment for the first
       instruction of the function, measured in bytes.  When specified,
       ALIGNMENT must be an integer constant power of 2.  Specifying no
       ALIGNMENT argument implies the ideal alignment for the target.  The
!      â€˜__alignof__â€™ operator can be used to determine what that is (*note
       Alignment::).  The attribute has no effect when a definition for
       the function is not provided in the same translation unit.
  
*************** The following attributes are supported o
*** 37373,37393 ****
       targets specify a minimum default alignment for functions that is
       greater than 1.  On such targets, specifying a less restrictive
       alignment is silently ignored.  Using the attribute overrides the
!      effect of the '-falign-functions' (*note Optimize Options::) option
       for this function.
  
!      Note that the effectiveness of 'aligned' attributes may be limited
       by inherent limitations in the system linker and/or object file
       format.  On some systems, the linker is only able to arrange for
       functions to be aligned up to a certain maximum alignment.  (For
       some linkers, the maximum supported alignment may be very very
       small.)  See your linker documentation for further information.
  
!      The 'aligned' attribute can also be used for variables and fields
       (*note Variable Attributes::.)
  
! 'alloc_align (POSITION)'
!      The 'alloc_align' attribute may be applied to a function that
       returns a pointer and takes at least one argument of an integer or
       enumerated type.  It indicates that the returned pointer is aligned
       on a boundary given by the function argument at POSITION.
--- 37381,37401 ----
       targets specify a minimum default alignment for functions that is
       greater than 1.  On such targets, specifying a less restrictive
       alignment is silently ignored.  Using the attribute overrides the
!      effect of the â€˜-falign-functionsâ€™ (*note Optimize Options::) option
       for this function.
  
!      Note that the effectiveness of â€˜alignedâ€™ attributes may be limited
       by inherent limitations in the system linker and/or object file
       format.  On some systems, the linker is only able to arrange for
       functions to be aligned up to a certain maximum alignment.  (For
       some linkers, the maximum supported alignment may be very very
       small.)  See your linker documentation for further information.
  
!      The â€˜alignedâ€™ attribute can also be used for variables and fields
       (*note Variable Attributes::.)
  
! â€˜alloc_align (POSITION)â€™
!      The â€˜alloc_alignâ€™ attribute may be applied to a function that
       returns a pointer and takes at least one argument of an integer or
       enumerated type.  It indicates that the returned pointer is aligned
       on a boundary given by the function argument at POSITION.
*************** The following attributes are supported o
*** 37402,37420 ****
  
            void* my_memalign (size_t, size_t) __attribute__ ((alloc_align (1)));
  
!      declares that 'my_memalign' returns memory with minimum alignment
       given by parameter 1.
  
! 'alloc_size (POSITION)'
! 'alloc_size (POSITION-1, POSITION-2)'
!      The 'alloc_size' attribute may be applied to a function that
       returns a pointer and takes at least one argument of an integer or
       enumerated type.  It indicates that the returned pointer points to
       memory whose size is given by the function argument at POSITION-1,
       or by the product of the arguments at POSITION-1 and POSITION-2.
!      Meaningful sizes are positive values less than 'PTRDIFF_MAX'.  GCC
       uses this information to improve the results of
!      '__builtin_object_size'.
  
       The function parameter(s) denoting the allocated size are specified
       by one or two integer arguments supplied to the attribute.  The
--- 37410,37428 ----
  
            void* my_memalign (size_t, size_t) __attribute__ ((alloc_align (1)));
  
!      declares that â€˜my_memalignâ€™ returns memory with minimum alignment
       given by parameter 1.
  
! â€˜alloc_size (POSITION)â€™
! â€˜alloc_size (POSITION-1, POSITION-2)â€™
!      The â€˜alloc_sizeâ€™ attribute may be applied to a function that
       returns a pointer and takes at least one argument of an integer or
       enumerated type.  It indicates that the returned pointer points to
       memory whose size is given by the function argument at POSITION-1,
       or by the product of the arguments at POSITION-1 and POSITION-2.
!      Meaningful sizes are positive values less than â€˜PTRDIFF_MAXâ€™.  GCC
       uses this information to improve the results of
!      â€˜__builtin_object_sizeâ€™.
  
       The function parameter(s) denoting the allocated size are specified
       by one or two integer arguments supplied to the attribute.  The
*************** The following attributes are supported o
*** 37428,37438 ****
            void* my_calloc (size_t, size_t) __attribute__ ((alloc_size (1, 2)));
            void* my_realloc (void*, size_t) __attribute__ ((alloc_size (2)));
  
!      declares that 'my_calloc' returns memory of the size given by the
!      product of parameter 1 and 2 and that 'my_realloc' returns memory
       of the size given by parameter 2.
  
! 'always_inline'
       Generally, functions are not inlined unless optimization is
       specified.  For functions declared inline, this attribute inlines
       the function independent of any restrictions that otherwise apply
--- 37436,37446 ----
            void* my_calloc (size_t, size_t) __attribute__ ((alloc_size (1, 2)));
            void* my_realloc (void*, size_t) __attribute__ ((alloc_size (2)));
  
!      declares that â€˜my_callocâ€™ returns memory of the size given by the
!      product of parameter 1 and 2 and that â€˜my_reallocâ€™ returns memory
       of the size given by parameter 2.
  
! â€˜always_inlineâ€™
       Generally, functions are not inlined unless optimization is
       specified.  For functions declared inline, this attribute inlines
       the function independent of any restrictions that otherwise apply
*************** The following attributes are supported o
*** 37443,37465 ****
       diagnosed.
  
       If you need to use the inlined function in multiple translation
!      units, you should put the 'always_inline' attribute on a function
       definition in a header file that is included in all translation
       units where the function is used.  Link-time optimization can
       inline functions across translation units, but only if an
       optimization level that normally enables inlining is additionally
       specified.
  
! 'artificial'
       This attribute is useful for small inline wrappers that if possible
       should appear during debugging as a unit.  Depending on the debug
       info format it either means marking the function as artificial or
       using the caller location for all instructions within the inlined
       body.
  
! 'assume_aligned (ALIGNMENT)'
! 'assume_aligned (ALIGNMENT, OFFSET)'
!      The 'assume_aligned' attribute may be applied to a function that
       returns a pointer.  It indicates that the returned pointer is
       aligned on a boundary given by ALIGNMENT.  If the attribute has two
       arguments, the second argument is misalignment OFFSET.  Meaningful
--- 37451,37473 ----
       diagnosed.
  
       If you need to use the inlined function in multiple translation
!      units, you should put the â€˜always_inlineâ€™ attribute on a function
       definition in a header file that is included in all translation
       units where the function is used.  Link-time optimization can
       inline functions across translation units, but only if an
       optimization level that normally enables inlining is additionally
       specified.
  
! â€˜artificialâ€™
       This attribute is useful for small inline wrappers that if possible
       should appear during debugging as a unit.  Depending on the debug
       info format it either means marking the function as artificial or
       using the caller location for all instructions within the inlined
       body.
  
! â€˜assume_aligned (ALIGNMENT)â€™
! â€˜assume_aligned (ALIGNMENT, OFFSET)â€™
!      The â€˜assume_alignedâ€™ attribute may be applied to a function that
       returns a pointer.  It indicates that the returned pointer is
       aligned on a boundary given by ALIGNMENT.  If the attribute has two
       arguments, the second argument is misalignment OFFSET.  Meaningful
*************** The following attributes are supported o
*** 37471,37481 ****
            void* my_alloc1 (size_t) __attribute__((assume_aligned (16)));
            void* my_alloc2 (size_t) __attribute__((assume_aligned (32, 8)));
  
!      declares that 'my_alloc1' returns 16-byte aligned pointers and that
!      'my_alloc2' returns a pointer whose value modulo 32 is equal to 8.
  
! 'cold'
!      The 'cold' attribute on functions is used to inform the compiler
       that the function is unlikely to be executed.  The function is
       optimized for size rather than speed and on many targets it is
       placed into a special subsection of the text section so all cold
--- 37479,37489 ----
            void* my_alloc1 (size_t) __attribute__((assume_aligned (16)));
            void* my_alloc2 (size_t) __attribute__((assume_aligned (32, 8)));
  
!      declares that â€˜my_alloc1â€™ returns 16-byte aligned pointers and that
!      â€˜my_alloc2â€™ returns a pointer whose value modulo 32 is equal to 8.
  
! â€˜coldâ€™
!      The â€˜coldâ€™ attribute on functions is used to inform the compiler
       that the function is unlikely to be executed.  The function is
       optimized for size rather than speed and on many targets it is
       placed into a special subsection of the text section so all cold
*************** The following attributes are supported o
*** 37483,37503 ****
       non-cold parts of program.  The paths leading to calls of cold
       functions within code are marked as unlikely by the branch
       prediction mechanism.  It is thus useful to mark functions used to
!      handle unlikely conditions, such as 'perror', as cold to improve
       optimization of hot functions that do call marked functions in rare
!      occasions.  In C++, the 'cold' attribute can be applied to types
       with the effect of being propagated to member functions.  See *note
       C++ Attributes::.
  
!      When profile feedback is available, via '-fprofile-use', cold
       functions are automatically detected and this attribute is ignored.
  
! 'const'
       Calls to functions whose return value is not affected by changes to
       the observable state of the program and that have no observable
       effects on such state other than to return a value may lend
       themselves to optimizations such as common subexpression
!      elimination.  Declaring such functions with the 'const' attribute
       allows GCC to avoid emitting some calls in repeated invocations of
       the function with the same argument values.
  
--- 37491,37511 ----
       non-cold parts of program.  The paths leading to calls of cold
       functions within code are marked as unlikely by the branch
       prediction mechanism.  It is thus useful to mark functions used to
!      handle unlikely conditions, such as â€˜perrorâ€™, as cold to improve
       optimization of hot functions that do call marked functions in rare
!      occasions.  In C++, the â€˜coldâ€™ attribute can be applied to types
       with the effect of being propagated to member functions.  See *note
       C++ Attributes::.
  
!      When profile feedback is available, via â€˜-fprofile-useâ€™, cold
       functions are automatically detected and this attribute is ignored.
  
! â€˜constâ€™
       Calls to functions whose return value is not affected by changes to
       the observable state of the program and that have no observable
       effects on such state other than to return a value may lend
       themselves to optimizations such as common subexpression
!      elimination.  Declaring such functions with the â€˜constâ€™ attribute
       allows GCC to avoid emitting some calls in repeated invocations of
       the function with the same argument values.
  
*************** The following attributes are supported o
*** 37505,37543 ****
  
            int square (int) __attribute__ ((const));
  
!      tells GCC that subsequent calls to function 'square' with the same
       argument value can be replaced by the result of the first call
       regardless of the statements in between.
  
!      The 'const' attribute prohibits a function from reading objects
       that affect its return value between successive invocations.
       However, functions declared with the attribute can safely read
       objects that do not change their return value, such as non-volatile
       constants.
  
!      The 'const' attribute imposes greater restrictions on a function's
!      definition than the similar 'pure' attribute.  Declaring the same
!      function with both the 'const' and the 'pure' attribute is
       diagnosed.  Because a const function cannot have any observable
!      side effects it does not make sense for it to return 'void'.
       Declaring such a function is diagnosed.
  
       Note that a function that has pointer arguments and examines the
!      data pointed to must _not_ be declared 'const' if the pointed-to
       data might change between successive invocations of the function.
       In general, since a function cannot distinguish data that might
       change from data that cannot, const functions should never take
       pointer or, in C++, reference arguments.  Likewise, a function that
       calls a non-const function usually must not be const itself.
  
! 'constructor'
! 'destructor'
! 'constructor (PRIORITY)'
! 'destructor (PRIORITY)'
!      The 'constructor' attribute causes the function to be called
!      automatically before execution enters 'main ()'.  Similarly, the
!      'destructor' attribute causes the function to be called
!      automatically after 'main ()' completes or 'exit ()' is called.
       Functions with these attributes are useful for initializing data
       that is used implicitly during the execution of the program.
  
--- 37513,37551 ----
  
            int square (int) __attribute__ ((const));
  
!      tells GCC that subsequent calls to function â€˜squareâ€™ with the same
       argument value can be replaced by the result of the first call
       regardless of the statements in between.
  
!      The â€˜constâ€™ attribute prohibits a function from reading objects
       that affect its return value between successive invocations.
       However, functions declared with the attribute can safely read
       objects that do not change their return value, such as non-volatile
       constants.
  
!      The â€˜constâ€™ attribute imposes greater restrictions on a function's
!      definition than the similar â€˜pureâ€™ attribute.  Declaring the same
!      function with both the â€˜constâ€™ and the â€˜pureâ€™ attribute is
       diagnosed.  Because a const function cannot have any observable
!      side effects it does not make sense for it to return â€˜voidâ€™.
       Declaring such a function is diagnosed.
  
       Note that a function that has pointer arguments and examines the
!      data pointed to must _not_ be declared â€˜constâ€™ if the pointed-to
       data might change between successive invocations of the function.
       In general, since a function cannot distinguish data that might
       change from data that cannot, const functions should never take
       pointer or, in C++, reference arguments.  Likewise, a function that
       calls a non-const function usually must not be const itself.
  
! â€˜constructorâ€™
! â€˜destructorâ€™
! â€˜constructor (PRIORITY)â€™
! â€˜destructor (PRIORITY)â€™
!      The â€˜constructorâ€™ attribute causes the function to be called
!      automatically before execution enters â€˜main ()â€™.  Similarly, the
!      â€˜destructorâ€™ attribute causes the function to be called
!      automatically after â€˜main ()â€™ completes or â€˜exit ()â€™ is called.
       Functions with these attributes are useful for initializing data
       that is used implicitly during the execution of the program.
  
*************** The following attributes are supported o
*** 37555,37593 ****
  
       The order in which constructors for C++ objects with static storage
       duration are invoked relative to functions decorated with attribute
!      'constructor' is normally unspecified.  You can use attribute
!      'init_priority' (*note C++ Attributes::) on the declarations of
       namespace-scope C++ objects to impose a specific ordering; the
!      PRIORITY for the 'init_priority' attribute has the same effect as
!      the PRIORITY for the 'constructor' attribute.
  
!      Using the argument form of the 'constructor' and 'destructor'
       attributes on targets where the feature is not supported is
       rejected with an error.  Only a few targets (typically those not
       using ELF object format, or the GNU linker) reject this usage.
  
! 'copy'
! 'copy (FUNCTION)'
!      The 'copy' attribute applies the set of attributes with which
       FUNCTION has been declared to the declaration of the function to
       which the attribute is applied.  The attribute is designed for
       libraries that define aliases or function resolvers that are
       expected to specify the same set of attributes as their targets.
!      The 'copy' attribute can be used with functions, variables, or
       types.  However, the kind of symbol to which the attribute is
       applied (either function or variable) must match the kind of symbol
!      to which the argument refers.  The 'copy' attribute copies only
       syntactic and semantic attributes but not attributes that affect a
!      symbol's linkage or visibility such as 'alias', 'visibility', or
!      'weak'.  The 'deprecated' and 'target_clones' attribute are also
       not copied.  *Note Common Type Attributes::.  *Note Common Variable
       Attributes::.
  
!      For example, the STRONGALIAS macro below makes use of the 'alias'
!      and 'copy' attributes to define an alias named ALLOC for function
       ALLOCATE declared with attributes ALLOC_SIZE, MALLOC, and NOTHROW.
!      Thanks to the '__typeof__' operator the alias has the same type as
!      the target function.  As a result of the 'copy' attribute the alias
       also shares the same attributes as the target.
  
            #define StrongAlias(TargetFunc, AliasDecl)  \
--- 37563,37601 ----
  
       The order in which constructors for C++ objects with static storage
       duration are invoked relative to functions decorated with attribute
!      â€˜constructorâ€™ is normally unspecified.  You can use attribute
!      â€˜init_priorityâ€™ (*note C++ Attributes::) on the declarations of
       namespace-scope C++ objects to impose a specific ordering; the
!      PRIORITY for the â€˜init_priorityâ€™ attribute has the same effect as
!      the PRIORITY for the â€˜constructorâ€™ attribute.
  
!      Using the argument form of the â€˜constructorâ€™ and â€˜destructorâ€™
       attributes on targets where the feature is not supported is
       rejected with an error.  Only a few targets (typically those not
       using ELF object format, or the GNU linker) reject this usage.
  
! â€˜copyâ€™
! â€˜copy (FUNCTION)â€™
!      The â€˜copyâ€™ attribute applies the set of attributes with which
       FUNCTION has been declared to the declaration of the function to
       which the attribute is applied.  The attribute is designed for
       libraries that define aliases or function resolvers that are
       expected to specify the same set of attributes as their targets.
!      The â€˜copyâ€™ attribute can be used with functions, variables, or
       types.  However, the kind of symbol to which the attribute is
       applied (either function or variable) must match the kind of symbol
!      to which the argument refers.  The â€˜copyâ€™ attribute copies only
       syntactic and semantic attributes but not attributes that affect a
!      symbol's linkage or visibility such as â€˜aliasâ€™, â€˜visibilityâ€™, or
!      â€˜weakâ€™.  The â€˜deprecatedâ€™ and â€˜target_clonesâ€™ attribute are also
       not copied.  *Note Common Type Attributes::.  *Note Common Variable
       Attributes::.
  
!      For example, the STRONGALIAS macro below makes use of the â€˜aliasâ€™
!      and â€˜copyâ€™ attributes to define an alias named ALLOC for function
       ALLOCATE declared with attributes ALLOC_SIZE, MALLOC, and NOTHROW.
!      Thanks to the â€˜__typeof__â€™ operator the alias has the same type as
!      the target function.  As a result of the â€˜copyâ€™ attribute the alias
       also shares the same attributes as the target.
  
            #define StrongAlias(TargetFunc, AliasDecl)  \
*************** The following attributes are supported o
*** 37598,37606 ****
              void* allocate (size_t);
            StrongAlias (allocate, alloc);
  
! 'deprecated'
! 'deprecated (MSG)'
!      The 'deprecated' attribute results in a warning if the function is
       used anywhere in the source file.  This is useful when identifying
       functions that are expected to be removed in a future version of a
       program.  The warning also includes the location of the declaration
--- 37606,37614 ----
              void* allocate (size_t);
            StrongAlias (allocate, alloc);
  
! â€˜deprecatedâ€™
! â€˜deprecated (MSG)â€™
!      The â€˜deprecatedâ€™ attribute results in a warning if the function is
       used anywhere in the source file.  This is useful when identifying
       functions that are expected to be removed in a future version of a
       program.  The warning also includes the location of the declaration
*************** The following attributes are supported o
*** 37616,37714 ****
       argument, which must be a string, is printed in the warning if
       present.
  
!      The 'deprecated' attribute can also be used for variables and types
       (*note Variable Attributes::, *note Type Attributes::.)
  
       The message attached to the attribute is affected by the setting of
!      the '-fmessage-length' option.
  
! 'error ("MESSAGE")'
! 'warning ("MESSAGE")'
!      If the 'error' or 'warning' attribute is used on a function
       declaration and a call to such a function is not eliminated through
       dead code elimination or other optimizations, an error or warning
       (respectively) that includes MESSAGE is diagnosed.  This is useful
       for compile-time checking, especially together with
!      '__builtin_constant_p' and inline functions where checking the
!      inline function arguments is not possible through 'extern char
!      [(condition) ? 1 : -1];' tricks.
  
       While it is possible to leave the function undefined and thus
       invoke a link failure (to define the function with a message in
!      '.gnu.warning*' section), when using these attributes the problem
       is diagnosed earlier and with exact location of the call even in
       presence of inline functions or when not emitting debugging
       information.
  
! 'expected_throw'
       This attribute, attached to a function, tells the compiler the
       function is more likely to raise or propagate an exception than to
       return, loop forever, or terminate the program.
  
       This hint is mostly ignored by the compiler.  The only effect is
!      when it's applied to 'noreturn' functions and
!      '-fharden-control-flow-redundancy' is enabled, and
!      '-fhardcfr-check-noreturn-calls=not-always' is not overridden.
  
! 'externally_visible'
       This attribute, attached to a global variable or function,
!      nullifies the effect of the '-fwhole-program' command-line option,
       so the object remains visible outside the current compilation unit.
  
!      If '-fwhole-program' is used together with '-flto' and 'gold' is
!      used as the linker plugin, 'externally_visible' attributes are
       automatically added to functions (not variable yet due to a current
!      'gold' issue) that are accessed outside of LTO objects according to
!      resolution file produced by 'gold'.  For other linkers that cannot
!      generate resolution file, explicit 'externally_visible' attributes
       are still necessary.
  
! 'fd_arg'
! 'fd_arg (N)'
!      The 'fd_arg' attribute may be applied to a function that takes an
       open file descriptor at referenced argument N.
  
       It indicates that the passed filedescriptor must not have been
!      closed.  Therefore, when the analyzer is enabled with '-fanalyzer',
!      the analyzer may emit a '-Wanalyzer-fd-use-after-close' diagnostic
       if it detects a code path in which a function with this attribute
       is called with a closed file descriptor.
  
       The attribute also indicates that the file descriptor must have
       been checked for validity before usage.  Therefore, analyzer may
!      emit '-Wanalyzer-fd-use-without-check' diagnostic if it detects a
       code path in which a function with this attribute is called with a
       file descriptor that has not been checked for validity.
  
! 'fd_arg_read'
! 'fd_arg_read (N)'
!      The 'fd_arg_read' is identical to 'fd_arg', but with the additional
       requirement that it might read from the file descriptor, and thus,
       the file descriptor must not have been opened as write-only.
  
!      The analyzer may emit a '-Wanalyzer-access-mode-mismatch'
       diagnostic if it detects a code path in which a function with this
!      attribute is called on a file descriptor opened with 'O_WRONLY'.
  
! 'fd_arg_write'
! 'fd_arg_write (N)'
!      The 'fd_arg_write' is identical to 'fd_arg_read' except that the
!      analyzer may emit a '-Wanalyzer-access-mode-mismatch' diagnostic if
       it detects a code path in which a function with this attribute is
!      called on a file descriptor opened with 'O_RDONLY'.
  
! 'flatten'
       Generally, inlining into a function is limited.  For a function
       marked with this attribute, every call inside this function is
       inlined including the calls such inlining introduces to the
       function (but not recursive calls to the function itself), if
!      possible.  Functions declared with attribute 'noinline' and similar
       are not inlined.  Whether the function itself is considered for
       inlining depends on its size and the current inlining parameters.
  
! 'format (ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)'
!      The 'format' attribute specifies that a function takes 'printf',
!      'scanf', 'strftime' or 'strfmon' style arguments that should be
       type-checked against a format string.  For example, the
       declaration:
  
--- 37624,37722 ----
       argument, which must be a string, is printed in the warning if
       present.
  
!      The â€˜deprecatedâ€™ attribute can also be used for variables and types
       (*note Variable Attributes::, *note Type Attributes::.)
  
       The message attached to the attribute is affected by the setting of
!      the â€˜-fmessage-lengthâ€™ option.
  
! â€˜error ("MESSAGE")â€™
! â€˜warning ("MESSAGE")â€™
!      If the â€˜errorâ€™ or â€˜warningâ€™ attribute is used on a function
       declaration and a call to such a function is not eliminated through
       dead code elimination or other optimizations, an error or warning
       (respectively) that includes MESSAGE is diagnosed.  This is useful
       for compile-time checking, especially together with
!      â€˜__builtin_constant_pâ€™ and inline functions where checking the
!      inline function arguments is not possible through â€˜extern char
!      [(condition) ? 1 : -1];â€™ tricks.
  
       While it is possible to leave the function undefined and thus
       invoke a link failure (to define the function with a message in
!      â€˜.gnu.warning*â€™ section), when using these attributes the problem
       is diagnosed earlier and with exact location of the call even in
       presence of inline functions or when not emitting debugging
       information.
  
! â€˜expected_throwâ€™
       This attribute, attached to a function, tells the compiler the
       function is more likely to raise or propagate an exception than to
       return, loop forever, or terminate the program.
  
       This hint is mostly ignored by the compiler.  The only effect is
!      when it's applied to â€˜noreturnâ€™ functions and
!      â€˜-fharden-control-flow-redundancyâ€™ is enabled, and
!      â€˜-fhardcfr-check-noreturn-calls=not-alwaysâ€™ is not overridden.
  
! â€˜externally_visibleâ€™
       This attribute, attached to a global variable or function,
!      nullifies the effect of the â€˜-fwhole-programâ€™ command-line option,
       so the object remains visible outside the current compilation unit.
  
!      If â€˜-fwhole-programâ€™ is used together with â€˜-fltoâ€™ and â€˜goldâ€™ is
!      used as the linker plugin, â€˜externally_visibleâ€™ attributes are
       automatically added to functions (not variable yet due to a current
!      â€˜goldâ€™ issue) that are accessed outside of LTO objects according to
!      resolution file produced by â€˜goldâ€™.  For other linkers that cannot
!      generate resolution file, explicit â€˜externally_visibleâ€™ attributes
       are still necessary.
  
! â€˜fd_argâ€™
! â€˜fd_arg (N)â€™
!      The â€˜fd_argâ€™ attribute may be applied to a function that takes an
       open file descriptor at referenced argument N.
  
       It indicates that the passed filedescriptor must not have been
!      closed.  Therefore, when the analyzer is enabled with â€˜-fanalyzerâ€™,
!      the analyzer may emit a â€˜-Wanalyzer-fd-use-after-closeâ€™ diagnostic
       if it detects a code path in which a function with this attribute
       is called with a closed file descriptor.
  
       The attribute also indicates that the file descriptor must have
       been checked for validity before usage.  Therefore, analyzer may
!      emit â€˜-Wanalyzer-fd-use-without-checkâ€™ diagnostic if it detects a
       code path in which a function with this attribute is called with a
       file descriptor that has not been checked for validity.
  
! â€˜fd_arg_readâ€™
! â€˜fd_arg_read (N)â€™
!      The â€˜fd_arg_readâ€™ is identical to â€˜fd_argâ€™, but with the additional
       requirement that it might read from the file descriptor, and thus,
       the file descriptor must not have been opened as write-only.
  
!      The analyzer may emit a â€˜-Wanalyzer-access-mode-mismatchâ€™
       diagnostic if it detects a code path in which a function with this
!      attribute is called on a file descriptor opened with â€˜O_WRONLYâ€™.
  
! â€˜fd_arg_writeâ€™
! â€˜fd_arg_write (N)â€™
!      The â€˜fd_arg_writeâ€™ is identical to â€˜fd_arg_readâ€™ except that the
!      analyzer may emit a â€˜-Wanalyzer-access-mode-mismatchâ€™ diagnostic if
       it detects a code path in which a function with this attribute is
!      called on a file descriptor opened with â€˜O_RDONLYâ€™.
  
! â€˜flattenâ€™
       Generally, inlining into a function is limited.  For a function
       marked with this attribute, every call inside this function is
       inlined including the calls such inlining introduces to the
       function (but not recursive calls to the function itself), if
!      possible.  Functions declared with attribute â€˜noinlineâ€™ and similar
       are not inlined.  Whether the function itself is considered for
       inlining depends on its size and the current inlining parameters.
  
! â€˜format (ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)â€™
!      The â€˜formatâ€™ attribute specifies that a function takes â€˜printfâ€™,
!      â€˜scanfâ€™, â€˜strftimeâ€™ or â€˜strfmonâ€™ style arguments that should be
       type-checked against a format string.  For example, the
       declaration:
  
*************** The following attributes are supported o
*** 37716,37752 ****
            my_printf (void *my_object, const char *my_format, ...)
                  __attribute__ ((format (printf, 2, 3)));
  
!      causes the compiler to check the arguments in calls to 'my_printf'
!      for consistency with the 'printf' style format string argument
!      'my_format'.
  
       The parameter ARCHETYPE determines how the format string is
!      interpreted.  Valid archetypes include 'printf', 'scanf',
!      'strftime', 'gnu_printf', 'gnu_scanf', 'gnu_strftime' or 'strfmon'.
!      (You can also use '__printf__', '__scanf__', '__strftime__' or
!      '__strfmon__'.)  ARCHETYPE values such as 'printf' refer to the
       formats accepted by the system's C runtime library, while values
!      prefixed with 'gnu_' always refer to the formats accepted by the
       GNU C Library.
  
!      On MinGW and Microsoft Windows targets, 'ms_printf', 'ms_scanf',
!      and 'ms_strftime' are also present.  Values prefixed with 'ms_'
!      refer to the formats accepted by the 'msvcrt.dll' library.
  
!      Solaris targets also support the 'cmn_err' (or '__cmn_err__')
!      archetype.  'cmn_err' accepts a subset of the standard 'printf'
!      conversions, and the two-argument '%b' conversion for displaying
!      bit-fields.  See the Solaris man page for 'cmn_err' for more
       information.
  
!      Darwin targets also support the 'CFString' (or '__CFString__')
!      archetype in the 'format' attribute.  Declarations with this
       archetype are parsed for correct syntax and argument types.
       However, parsing of the format string itself and validating
       arguments against it in calls to such functions is currently not
       performed.
  
!      For Objective-C dialects, 'NSString' (or '__NSString__') is
       recognized in the same context.  Declarations including these
       format attributes are parsed for correct syntax, however the result
       of checking of such format strings is not yet defined, and is not
--- 37724,37760 ----
            my_printf (void *my_object, const char *my_format, ...)
                  __attribute__ ((format (printf, 2, 3)));
  
!      causes the compiler to check the arguments in calls to â€˜my_printfâ€™
!      for consistency with the â€˜printfâ€™ style format string argument
!      â€˜my_formatâ€™.
  
       The parameter ARCHETYPE determines how the format string is
!      interpreted.  Valid archetypes include â€˜printfâ€™, â€˜scanfâ€™,
!      â€˜strftimeâ€™, â€˜gnu_printfâ€™, â€˜gnu_scanfâ€™, â€˜gnu_strftimeâ€™ or â€˜strfmonâ€™.
!      (You can also use â€˜__printf__â€™, â€˜__scanf__â€™, â€˜__strftime__â€™ or
!      â€˜__strfmon__â€™.)  ARCHETYPE values such as â€˜printfâ€™ refer to the
       formats accepted by the system's C runtime library, while values
!      prefixed with â€˜gnu_â€™ always refer to the formats accepted by the
       GNU C Library.
  
!      On MinGW and Microsoft Windows targets, â€˜ms_printfâ€™, â€˜ms_scanfâ€™,
!      and â€˜ms_strftimeâ€™ are also present.  Values prefixed with â€˜ms_â€™
!      refer to the formats accepted by the â€˜msvcrt.dllâ€™ library.
  
!      Solaris targets also support the â€˜cmn_errâ€™ (or â€˜__cmn_err__â€™)
!      archetype.  â€˜cmn_errâ€™ accepts a subset of the standard â€˜printfâ€™
!      conversions, and the two-argument â€˜%bâ€™ conversion for displaying
!      bit-fields.  See the Solaris man page for â€˜cmn_errâ€™ for more
       information.
  
!      Darwin targets also support the â€˜CFStringâ€™ (or â€˜__CFString__â€™)
!      archetype in the â€˜formatâ€™ attribute.  Declarations with this
       archetype are parsed for correct syntax and argument types.
       However, parsing of the format string itself and validating
       arguments against it in calls to such functions is currently not
       performed.
  
!      For Objective-C dialects, â€˜NSStringâ€™ (or â€˜__NSString__â€™) is
       recognized in the same context.  Declarations including these
       format attributes are parsed for correct syntax, however the result
       of checking of such format strings is not yet defined, and is not
*************** The following attributes are supported o
*** 37756,37795 ****
       string argument (starting from 1), while FIRST-TO-CHECK is the
       number of the first argument to check against the format string.
       For functions where the arguments are not available to be checked
!      (such as 'vprintf'), specify the third parameter as zero.  In this
       case the compiler only checks the format string for consistency.
!      For 'strftime' formats, the third parameter is required to be zero.
!      Since non-static C++ methods have an implicit 'this' argument, the
       arguments of such methods should be counted from two, not one, when
       giving values for STRING-INDEX and FIRST-TO-CHECK.
  
!      In the example above, the format string ('my_format') is the second
!      argument of the function 'my_print', and the arguments to check
       start with the third argument, so the correct parameters for the
       format attribute are 2 and 3.
  
!      The 'format' attribute allows you to identify your own functions
       that take format strings as arguments, so that GCC can check the
       calls to these functions for errors.  The compiler always (unless
!      '-ffreestanding' or '-fno-builtin' is used) checks formats for the
!      standard library functions 'printf', 'fprintf', 'sprintf', 'scanf',
!      'fscanf', 'sscanf', 'strftime', 'vprintf', 'vfprintf' and
!      'vsprintf' whenever such warnings are requested (using '-Wformat'),
!      so there is no need to modify the header file 'stdio.h'.  In C99
!      mode, the functions 'snprintf', 'vsnprintf', 'vscanf', 'vfscanf'
!      and 'vsscanf' are also checked.  Except in strictly conforming C
!      standard modes, the X/Open function 'strfmon' is also checked as
!      are 'printf_unlocked' and 'fprintf_unlocked'.  *Note Options
       Controlling C Dialect: C Dialect Options.
  
! 'format_arg (STRING-INDEX)'
!      The 'format_arg' attribute specifies that a function takes one or
!      more format strings for a 'printf', 'scanf', 'strftime' or
!      'strfmon' style function and modifies it (for example, to translate
       it into another language), so the result can be passed to a
!      'printf', 'scanf', 'strftime' or 'strfmon' style function (with the
       remaining arguments to the format function the same as they would
!      have been for the unmodified string).  Multiple 'format_arg'
       attributes may be applied to the same function, each designating a
       distinct parameter as a format string.  For example, the
       declaration:
--- 37764,37803 ----
       string argument (starting from 1), while FIRST-TO-CHECK is the
       number of the first argument to check against the format string.
       For functions where the arguments are not available to be checked
!      (such as â€˜vprintfâ€™), specify the third parameter as zero.  In this
       case the compiler only checks the format string for consistency.
!      For â€˜strftimeâ€™ formats, the third parameter is required to be zero.
!      Since non-static C++ methods have an implicit â€˜thisâ€™ argument, the
       arguments of such methods should be counted from two, not one, when
       giving values for STRING-INDEX and FIRST-TO-CHECK.
  
!      In the example above, the format string (â€˜my_formatâ€™) is the second
!      argument of the function â€˜my_printâ€™, and the arguments to check
       start with the third argument, so the correct parameters for the
       format attribute are 2 and 3.
  
!      The â€˜formatâ€™ attribute allows you to identify your own functions
       that take format strings as arguments, so that GCC can check the
       calls to these functions for errors.  The compiler always (unless
!      â€˜-ffreestandingâ€™ or â€˜-fno-builtinâ€™ is used) checks formats for the
!      standard library functions â€˜printfâ€™, â€˜fprintfâ€™, â€˜sprintfâ€™, â€˜scanfâ€™,
!      â€˜fscanfâ€™, â€˜sscanfâ€™, â€˜strftimeâ€™, â€˜vprintfâ€™, â€˜vfprintfâ€™ and
!      â€˜vsprintfâ€™ whenever such warnings are requested (using â€˜-Wformatâ€™),
!      so there is no need to modify the header file â€˜stdio.hâ€™.  In C99
!      mode, the functions â€˜snprintfâ€™, â€˜vsnprintfâ€™, â€˜vscanfâ€™, â€˜vfscanfâ€™
!      and â€˜vsscanfâ€™ are also checked.  Except in strictly conforming C
!      standard modes, the X/Open function â€˜strfmonâ€™ is also checked as
!      are â€˜printf_unlockedâ€™ and â€˜fprintf_unlockedâ€™.  *Note Options
       Controlling C Dialect: C Dialect Options.
  
! â€˜format_arg (STRING-INDEX)â€™
!      The â€˜format_argâ€™ attribute specifies that a function takes one or
!      more format strings for a â€˜printfâ€™, â€˜scanfâ€™, â€˜strftimeâ€™ or
!      â€˜strfmonâ€™ style function and modifies it (for example, to translate
       it into another language), so the result can be passed to a
!      â€˜printfâ€™, â€˜scanfâ€™, â€˜strftimeâ€™ or â€˜strfmonâ€™ style function (with the
       remaining arguments to the format function the same as they would
!      have been for the unmodified string).  Multiple â€˜format_argâ€™
       attributes may be applied to the same function, each designating a
       distinct parameter as a format string.  For example, the
       declaration:
*************** The following attributes are supported o
*** 37798,37895 ****
            my_dgettext (char *my_domain, const char *my_format)
                  __attribute__ ((format_arg (2)));
  
!      causes the compiler to check the arguments in calls to a 'printf',
!      'scanf', 'strftime' or 'strfmon' type function, whose format string
!      argument is a call to the 'my_dgettext' function, for consistency
!      with the format string argument 'my_format'.  If the 'format_arg'
       attribute had not been specified, all the compiler could tell in
       such calls to format functions would be that the format string
       argument is not constant; this would generate a warning when
!      '-Wformat-nonliteral' is used, but the calls could not be checked
       without the attribute.
  
!      In calls to a function declared with more than one 'format_arg'
       attribute, each with a distinct argument value, the corresponding
       actual function arguments are checked against all format strings
       designated by the attributes.  This capability is designed to
!      support the GNU 'ngettext' family of functions.
  
       The parameter STRING-INDEX specifies which argument is the format
       string argument (starting from one).  Since non-static C++ methods
!      have an implicit 'this' argument, the arguments of such methods
       should be counted from two.
  
!      The 'format_arg' attribute allows you to identify your own
       functions that modify format strings, so that GCC can check the
!      calls to 'printf', 'scanf', 'strftime' or 'strfmon' type function
       whose operands are a call to one of your own function.  The
!      compiler always treats 'gettext', 'dgettext', and 'dcgettext' in
       this manner except when strict ISO C support is requested by
!      '-ansi' or an appropriate '-std' option, or '-ffreestanding' or
!      '-fno-builtin' is used.  *Note Options Controlling C Dialect: C
       Dialect Options.
  
!      For Objective-C dialects, the 'format_arg' attribute may refer to
!      an 'NSString' reference for compatibility with the 'format'
       attribute above.
  
!      Similarly, on Darwin targets 'CFStringRefs' (defined by the
!      'CoreFoundation' headers) may also be used as format arguments.
       Note that the relevant headers are only likely to be available on
       Darwin (OSX) installations.  On such installations, the XCode and
!      system documentation provide descriptions of 'CFString',
!      'CFStringRefs' and associated functions.
  
! 'gnu_inline'
       This attribute should be used with a function that is also declared
!      with the 'inline' keyword.  It directs GCC to treat the function as
       if it were defined in gnu90 mode even when compiling in C99 or
       gnu99 mode.
  
!      If the function is declared 'extern', then this definition of the
       function is used only for inlining.  In no case is the function
       compiled as a standalone function, not even if you take its address
       explicitly.  Such an address becomes an external reference, as if
       you had only declared the function, and had not defined it.  This
       has almost the effect of a macro.  The way to use this is to put a
       function definition in a header file with this attribute, and put
!      another copy of the function, without 'extern', in a library file.
       The definition in the header file causes most calls to the function
       to be inlined.  If any uses of the function remain, they refer to
       the single copy in the library.  Note that the two definitions of
       the functions need not be precisely the same, although if they do
       not have the same effect your program may behave oddly.
  
!      In C, if the function is neither 'extern' nor 'static', then the
       function is compiled as a standalone function, as well as being
       inlined where possible.
  
!      This is how GCC traditionally handled functions declared 'inline'.
!      Since ISO C99 specifies a different semantics for 'inline', this
       function attribute is provided as a transition measure and as a
       useful feature in its own right.  This attribute is available in
       GCC 4.1.3 and later.  It is available if either of the preprocessor
!      macros '__GNUC_GNU_INLINE__' or '__GNUC_STDC_INLINE__' are defined.
       *Note An Inline Function is As Fast As a Macro: Inline.
  
!      In C++, this attribute does not depend on 'extern' in any way, but
!      it still requires the 'inline' keyword to enable its special
       behavior.
  
! 'hot'
!      The 'hot' attribute on a function is used to inform the compiler
       that the function is a hot spot of the compiled program.  The
       function is optimized more aggressively and on many targets it is
       placed into a special subsection of the text section so all hot
       functions appear close together, improving locality.  In C++, the
!      'hot' attribute can be applied to types with the effect of being
       propagated to member functions.  See *note C++ Attributes::.
  
!      When profile feedback is available, via '-fprofile-use', hot
       functions are automatically detected and this attribute is ignored.
  
! 'ifunc ("RESOLVER")'
!      The 'ifunc' attribute is used to mark a function as an indirect
       function using the STT_GNU_IFUNC symbol type extension to the ELF
       standard.  This allows the resolution of the symbol value to be
       determined dynamically at load time, and an optimized version of
--- 37806,37903 ----
            my_dgettext (char *my_domain, const char *my_format)
                  __attribute__ ((format_arg (2)));
  
!      causes the compiler to check the arguments in calls to a â€˜printfâ€™,
!      â€˜scanfâ€™, â€˜strftimeâ€™ or â€˜strfmonâ€™ type function, whose format string
!      argument is a call to the â€˜my_dgettextâ€™ function, for consistency
!      with the format string argument â€˜my_formatâ€™.  If the â€˜format_argâ€™
       attribute had not been specified, all the compiler could tell in
       such calls to format functions would be that the format string
       argument is not constant; this would generate a warning when
!      â€˜-Wformat-nonliteralâ€™ is used, but the calls could not be checked
       without the attribute.
  
!      In calls to a function declared with more than one â€˜format_argâ€™
       attribute, each with a distinct argument value, the corresponding
       actual function arguments are checked against all format strings
       designated by the attributes.  This capability is designed to
!      support the GNU â€˜ngettextâ€™ family of functions.
  
       The parameter STRING-INDEX specifies which argument is the format
       string argument (starting from one).  Since non-static C++ methods
!      have an implicit â€˜thisâ€™ argument, the arguments of such methods
       should be counted from two.
  
!      The â€˜format_argâ€™ attribute allows you to identify your own
       functions that modify format strings, so that GCC can check the
!      calls to â€˜printfâ€™, â€˜scanfâ€™, â€˜strftimeâ€™ or â€˜strfmonâ€™ type function
       whose operands are a call to one of your own function.  The
!      compiler always treats â€˜gettextâ€™, â€˜dgettextâ€™, and â€˜dcgettextâ€™ in
       this manner except when strict ISO C support is requested by
!      â€˜-ansiâ€™ or an appropriate â€˜-stdâ€™ option, or â€˜-ffreestandingâ€™ or
!      â€˜-fno-builtinâ€™ is used.  *Note Options Controlling C Dialect: C
       Dialect Options.
  
!      For Objective-C dialects, the â€˜format_argâ€™ attribute may refer to
!      an â€˜NSStringâ€™ reference for compatibility with the â€˜formatâ€™
       attribute above.
  
!      Similarly, on Darwin targets â€˜CFStringRefsâ€™ (defined by the
!      â€˜CoreFoundationâ€™ headers) may also be used as format arguments.
       Note that the relevant headers are only likely to be available on
       Darwin (OSX) installations.  On such installations, the XCode and
!      system documentation provide descriptions of â€˜CFStringâ€™,
!      â€˜CFStringRefsâ€™ and associated functions.
  
! â€˜gnu_inlineâ€™
       This attribute should be used with a function that is also declared
!      with the â€˜inlineâ€™ keyword.  It directs GCC to treat the function as
       if it were defined in gnu90 mode even when compiling in C99 or
       gnu99 mode.
  
!      If the function is declared â€˜externâ€™, then this definition of the
       function is used only for inlining.  In no case is the function
       compiled as a standalone function, not even if you take its address
       explicitly.  Such an address becomes an external reference, as if
       you had only declared the function, and had not defined it.  This
       has almost the effect of a macro.  The way to use this is to put a
       function definition in a header file with this attribute, and put
!      another copy of the function, without â€˜externâ€™, in a library file.
       The definition in the header file causes most calls to the function
       to be inlined.  If any uses of the function remain, they refer to
       the single copy in the library.  Note that the two definitions of
       the functions need not be precisely the same, although if they do
       not have the same effect your program may behave oddly.
  
!      In C, if the function is neither â€˜externâ€™ nor â€˜staticâ€™, then the
       function is compiled as a standalone function, as well as being
       inlined where possible.
  
!      This is how GCC traditionally handled functions declared â€˜inlineâ€™.
!      Since ISO C99 specifies a different semantics for â€˜inlineâ€™, this
       function attribute is provided as a transition measure and as a
       useful feature in its own right.  This attribute is available in
       GCC 4.1.3 and later.  It is available if either of the preprocessor
!      macros â€˜__GNUC_GNU_INLINE__â€™ or â€˜__GNUC_STDC_INLINE__â€™ are defined.
       *Note An Inline Function is As Fast As a Macro: Inline.
  
!      In C++, this attribute does not depend on â€˜externâ€™ in any way, but
!      it still requires the â€˜inlineâ€™ keyword to enable its special
       behavior.
  
! â€˜hotâ€™
!      The â€˜hotâ€™ attribute on a function is used to inform the compiler
       that the function is a hot spot of the compiled program.  The
       function is optimized more aggressively and on many targets it is
       placed into a special subsection of the text section so all hot
       functions appear close together, improving locality.  In C++, the
!      â€˜hotâ€™ attribute can be applied to types with the effect of being
       propagated to member functions.  See *note C++ Attributes::.
  
!      When profile feedback is available, via â€˜-fprofile-useâ€™, hot
       functions are automatically detected and this attribute is ignored.
  
! â€˜ifunc ("RESOLVER")â€™
!      The â€˜ifuncâ€™ attribute is used to mark a function as an indirect
       function using the STT_GNU_IFUNC symbol type extension to the ELF
       standard.  This allows the resolution of the symbol value to be
       determined dynamically at load time, and an optimized version of
*************** The following attributes are supported o
*** 37919,37925 ****
  
            extern void *memcpy (void *, const void *, size_t);
  
!      allowing the user to call 'memcpy' as a regular function, unaware
       of the actual implementation.  Finally, the indirect function needs
       to be defined in the same translation unit as the resolver
       function:
--- 37927,37933 ----
  
            extern void *memcpy (void *, const void *, size_t);
  
!      allowing the user to call â€˜memcpyâ€™ as a regular function, unaware
       of the actual implementation.  Finally, the indirect function needs
       to be defined in the same translation unit as the resolver
       function:
*************** The following attributes are supported o
*** 37927,37942 ****
            void *memcpy (void *, const void *, size_t)
                 __attribute__ ((ifunc ("resolve_memcpy")));
  
!      In C++, the 'ifunc' attribute takes a string that is the mangled
       name of the resolver function.  A C++ resolver for a non-static
!      member function of class 'C' should be declared to return a pointer
!      to a non-member function taking pointer to 'C' as the first
       argument, followed by the same arguments as of the implementation
       function.  G++ checks the signatures of the two functions and
!      issues a '-Wattribute-alias' warning for mismatches.  To suppress a
       warning for the necessary cast from a pointer to the implementation
       member function to the type of the corresponding non-member
!      function use the '-Wno-pmf-conversions' option.  For example:
  
            class S
            {
--- 37935,37950 ----
            void *memcpy (void *, const void *, size_t)
                 __attribute__ ((ifunc ("resolve_memcpy")));
  
!      In C++, the â€˜ifuncâ€™ attribute takes a string that is the mangled
       name of the resolver function.  A C++ resolver for a non-static
!      member function of class â€˜Câ€™ should be declared to return a pointer
!      to a non-member function taking pointer to â€˜Câ€™ as the first
       argument, followed by the same arguments as of the implementation
       function.  G++ checks the signatures of the two functions and
!      issues a â€˜-Wattribute-aliasâ€™ warning for mismatches.  To suppress a
       warning for the necessary cast from a pointer to the implementation
       member function to the type of the corresponding non-member
!      function use the â€˜-Wno-pmf-conversionsâ€™ option.  For example:
  
            class S
            {
*************** The following attributes are supported o
*** 37970,37989 ****
       higher and GNU C Library version 2.11.1 are required to use this
       feature.
  
! 'interrupt'
! 'interrupt_handler'
       Many GCC back ends support attributes to indicate that a function
       is an interrupt handler, which tells the compiler to generate
       function entry and exit sequences that differ from those from
       regular functions.  The exact syntax and behavior are
       target-specific; refer to the following subsections for details.
  
! 'leaf'
       Calls to external functions with this attribute must return to the
       current compilation unit only by return or by exception handling.
       In particular, a leaf function is not allowed to invoke callback
       functions passed to it from the current compilation unit, directly
!      call functions exported by the unit, or 'longjmp' into the unit.
       Leaf functions might still call functions from other compilation
       units and thus they are not necessarily leaf in the sense that they
       contain no function calls at all.
--- 37978,37997 ----
       higher and GNU C Library version 2.11.1 are required to use this
       feature.
  
! â€˜interruptâ€™
! â€˜interrupt_handlerâ€™
       Many GCC back ends support attributes to indicate that a function
       is an interrupt handler, which tells the compiler to generate
       function entry and exit sequences that differ from those from
       regular functions.  The exact syntax and behavior are
       target-specific; refer to the following subsections for details.
  
! â€˜leafâ€™
       Calls to external functions with this attribute must return to the
       current compilation unit only by return or by exception handling.
       In particular, a leaf function is not allowed to invoke callback
       functions passed to it from the current compilation unit, directly
!      call functions exported by the unit, or â€˜longjmpâ€™ into the unit.
       Leaf functions might still call functions from other compilation
       units and thus they are not necessarily leaf in the sense that they
       contain no function calls at all.
*************** The following attributes are supported o
*** 37991,37998 ****
       The attribute is intended for library functions to improve dataflow
       analysis.  The compiler takes the hint that any data not escaping
       the current compilation unit cannot be used or modified by the leaf
!      function.  For example, the 'sin' function is a leaf function, but
!      'qsort' is not.
  
       Note that leaf functions might indirectly run a signal handler
       defined in the current compilation unit that uses static variables.
--- 37999,38006 ----
       The attribute is intended for library functions to improve dataflow
       analysis.  The compiler takes the hint that any data not escaping
       the current compilation unit cannot be used or modified by the leaf
!      function.  For example, the â€˜sinâ€™ function is a leaf function, but
!      â€˜qsortâ€™ is not.
  
       Note that leaf functions might indirectly run a signal handler
       defined in the current compilation unit that uses static variables.
*************** The following attributes are supported o
*** 38001,38008 ****
       implementation function is defined in the current compilation unit
       and uses static variables.  There is no standard-compliant way to
       write such a signal handler, resolver function, or implementation
!      function, and the best that you can do is to remove the 'leaf'
!      attribute or mark all such static variables 'volatile'.  Lastly,
       for ELF-based systems that support symbol interposition, care
       should be taken that functions defined in the current compilation
       unit do not unexpectedly interpose other symbols based on the
--- 38009,38016 ----
       implementation function is defined in the current compilation unit
       and uses static variables.  There is no standard-compliant way to
       write such a signal handler, resolver function, or implementation
!      function, and the best that you can do is to remove the â€˜leafâ€™
!      attribute or mark all such static variables â€˜volatileâ€™.  Lastly,
       for ELF-based systems that support symbol interposition, care
       should be taken that functions defined in the current compilation
       unit do not unexpectedly interpose other symbols based on the
*************** The following attributes are supported o
*** 38015,38024 ****
       optimization.  For this reason the attribute is not allowed on
       types to annotate indirect calls.
  
! 'malloc'
! 'malloc (DEALLOCATOR)'
! 'malloc (DEALLOCATOR, PTR-INDEX)'
!      Attribute 'malloc' indicates that a function is 'malloc'-like,
       i.e., that the pointer P returned by the function cannot alias any
       other pointer valid when the function returns, and moreover no
       pointers to valid objects occur in any storage addressed by P.  In
--- 38023,38032 ----
       optimization.  For this reason the attribute is not allowed on
       types to annotate indirect calls.
  
! â€˜mallocâ€™
! â€˜malloc (DEALLOCATOR)â€™
! â€˜malloc (DEALLOCATOR, PTR-INDEX)â€™
!      Attribute â€˜mallocâ€™ indicates that a function is â€˜mallocâ€™-like,
       i.e., that the pointer P returned by the function cannot alias any
       other pointer valid when the function returns, and moreover no
       pointers to valid objects occur in any storage addressed by P.  In
*************** The following attributes are supported o
*** 38026,38041 ****
       non-null in most cases.
  
       Independently, the form of the attribute with one or two arguments
!      associates 'deallocator' as a suitable deallocation function for
!      pointers returned from the 'malloc'-like function.  PTR-INDEX
       denotes the positional argument to which when the pointer is passed
!      in calls to 'deallocator' has the effect of deallocating it.
  
       Using the attribute with no arguments is designed to improve
       optimization by relying on the aliasing property it implies.
!      Functions like 'malloc' and 'calloc' have this property because
       they return a pointer to uninitialized or zeroed-out, newly
!      obtained storage.  However, functions like 'realloc' do not have
       this property, as they may return pointers to storage containing
       pointers to existing objects.  Additionally, since all such
       functions are assumed to return null only infrequently, callers can
--- 38034,38049 ----
       non-null in most cases.
  
       Independently, the form of the attribute with one or two arguments
!      associates â€˜deallocatorâ€™ as a suitable deallocation function for
!      pointers returned from the â€˜mallocâ€™-like function.  PTR-INDEX
       denotes the positional argument to which when the pointer is passed
!      in calls to â€˜deallocatorâ€™ has the effect of deallocating it.
  
       Using the attribute with no arguments is designed to improve
       optimization by relying on the aliasing property it implies.
!      Functions like â€˜mallocâ€™ and â€˜callocâ€™ have this property because
       they return a pointer to uninitialized or zeroed-out, newly
!      obtained storage.  However, functions like â€˜reallocâ€™ do not have
       this property, as they may return pointers to storage containing
       pointers to existing objects.  Additionally, since all such
       functions are assumed to return null only infrequently, callers can
*************** The following attributes are supported o
*** 38043,38066 ****
  
       Associating a function with a DEALLOCATOR helps detect calls to
       mismatched allocation and deallocation functions and diagnose them
!      under the control of options such as '-Wmismatched-dealloc'.  It
       also makes it possible to diagnose attempts to deallocate objects
!      that were not allocated dynamically, by '-Wfree-nonheap-object'.
       To indicate that an allocation function both satisfies the
       nonaliasing property and has a deallocator associated with it, both
       the plain form of the attribute and the one with the DEALLOCATOR
       argument must be used.  The same function can be both an allocator
       and a deallocator.  Since inlining one of the associated functions
       but not the other could result in apparent mismatches, this form of
!      attribute 'malloc' is not accepted on inline functions.  For the
       same reason, using the attribute prevents both the allocation and
       deallocation functions from being expanded inline.
  
       For example, besides stating that the functions return pointers
       that do not alias any others, the following declarations make
!      'fclose' a suitable deallocator for pointers returned from all
!      functions except 'popen', and 'pclose' as the only suitable
!      deallocator for pointers returned from 'popen'.  The deallocator
       functions must be declared before they can be referenced in the
       attribute.
  
--- 38051,38074 ----
  
       Associating a function with a DEALLOCATOR helps detect calls to
       mismatched allocation and deallocation functions and diagnose them
!      under the control of options such as â€˜-Wmismatched-deallocâ€™.  It
       also makes it possible to diagnose attempts to deallocate objects
!      that were not allocated dynamically, by â€˜-Wfree-nonheap-objectâ€™.
       To indicate that an allocation function both satisfies the
       nonaliasing property and has a deallocator associated with it, both
       the plain form of the attribute and the one with the DEALLOCATOR
       argument must be used.  The same function can be both an allocator
       and a deallocator.  Since inlining one of the associated functions
       but not the other could result in apparent mismatches, this form of
!      attribute â€˜mallocâ€™ is not accepted on inline functions.  For the
       same reason, using the attribute prevents both the allocation and
       deallocation functions from being expanded inline.
  
       For example, besides stating that the functions return pointers
       that do not alias any others, the following declarations make
!      â€˜fcloseâ€™ a suitable deallocator for pointers returned from all
!      functions except â€˜popenâ€™, and â€˜pcloseâ€™ as the only suitable
!      deallocator for pointers returned from â€˜popenâ€™.  The deallocator
       functions must be declared before they can be referenced in the
       attribute.
  
*************** The following attributes are supported o
*** 38078,38210 ****
            __attribute__ ((malloc, malloc (fclose, 1)))
              FILE* tmpfile (void);
  
!      The warnings guarded by '-fanalyzer' respect allocation and
!      deallocation pairs marked with the 'malloc'.  In particular:
  
!         * The analyzer emits a '-Wanalyzer-mismatching-deallocation'
            diagnostic if there is an execution path in which the result
            of an allocation call is passed to a different deallocator.
  
!         * The analyzer emits a '-Wanalyzer-double-free' diagnostic if
            there is an execution path in which a value is passed more
            than once to a deallocation call.
  
!         * The analyzer considers the possibility that an allocation
            function could fail and return null.  If there are execution
            paths in which an unchecked result of an allocation call is
            dereferenced or passed to a function requiring a non-null
!           argument, it emits '-Wanalyzer-possible-null-dereference' and
!           '-Wanalyzer-possible-null-argument' diagnostics.  If the
!           allocator always returns non-null, use '__attribute__
!           ((returns_nonnull))' to suppress these warnings.  For example:
                 char *xstrdup (const char *)
                   __attribute__((malloc (free), returns_nonnull));
  
!         * The analyzer emits a '-Wanalyzer-use-after-free' diagnostic if
            there is an execution path in which the memory passed by
            pointer to a deallocation call is used after the deallocation.
  
!         * The analyzer emits a '-Wanalyzer-malloc-leak' diagnostic if
            there is an execution path in which the result of an
            allocation call is leaked (without being passed to the
            deallocation function).
  
!         * The analyzer emits a '-Wanalyzer-free-of-non-heap' diagnostic
            if a deallocation function is used on a global or on-stack
            variable.
  
       The analyzer assumes that deallocators can gracefully handle the
       null pointer.  If this is not the case, the deallocator can be
!      marked with '__attribute__((nonnull))' so that '-fanalyzer' can
!      emit a '-Wanalyzer-possible-null-argument' diagnostic for code
       paths in which the deallocator is called with null.
  
! 'no_icf'
       This function attribute prevents a functions from being merged with
       another semantically equivalent function.
  
! 'no_instrument_function'
!      If any of '-finstrument-functions', '-p', or '-pg' are given,
       profiling function calls are generated at entry and exit of most
       user-compiled functions.  Functions with this attribute are not so
       instrumented.
  
! 'no_profile_instrument_function'
!      The 'no_profile_instrument_function' attribute on functions is used
       to inform the compiler that it should not process any profile
       feedback based optimization code instrumentation.
  
! 'no_reorder'
!      Do not reorder functions or variables marked 'no_reorder' against
       each other or top level assembler statements the executable.  The
       actual order in the program will depend on the linker command line.
       Static variables marked like this are also not removed.  This has a
!      similar effect as the '-fno-toplevel-reorder' option, but only
       applies to the marked symbols.
  
! 'no_sanitize ("SANITIZE_OPTION")'
!      The 'no_sanitize' attribute on functions is used to inform the
       compiler that it should not do sanitization of any option mentioned
       in SANITIZE_OPTION.  A list of values acceptable by the
!      '-fsanitize' option can be provided.
  
            void __attribute__ ((no_sanitize ("alignment", "object-size")))
            f () { /* Do something. */; }
            void __attribute__ ((no_sanitize ("alignment,object-size")))
            g () { /* Do something. */; }
  
! 'no_sanitize_address'
! 'no_address_safety_analysis'
!      The 'no_sanitize_address' attribute on functions is used to inform
       the compiler that it should not instrument memory accesses in the
!      function when compiling with the '-fsanitize=address' option.  The
!      'no_address_safety_analysis' is a deprecated alias of the
!      'no_sanitize_address' attribute, new code should use
!      'no_sanitize_address'.
  
! 'no_sanitize_thread'
!      The 'no_sanitize_thread' attribute on functions is used to inform
       the compiler that it should not instrument memory accesses in the
!      function when compiling with the '-fsanitize=thread' option.
  
! 'no_sanitize_undefined'
!      The 'no_sanitize_undefined' attribute on functions is used to
       inform the compiler that it should not check for undefined behavior
!      in the function when compiling with the '-fsanitize=undefined'
       option.
  
! 'no_sanitize_coverage'
!      The 'no_sanitize_coverage' attribute on functions is used to inform
       the compiler that it should not do coverage-guided fuzzing code
!      instrumentation ('-fsanitize-coverage').
  
! 'no_split_stack'
!      If '-fsplit-stack' is given, functions have a small prologue which
       decides whether to split the stack.  Functions with the
!      'no_split_stack' attribute do not have that prologue, and thus may
       run with only a small amount of stack space available.
  
! 'no_stack_limit'
!      This attribute locally overrides the '-fstack-limit-register' and
!      '-fstack-limit-symbol' command-line options; it has the effect of
       disabling stack limit checking in the function it applies to.
  
! 'no_stack_protector'
       This attribute prevents stack protection code for the function.
  
! 'noclone'
       This function attribute prevents a function from being considered
       for cloning--a mechanism that produces specialized copies of
       functions and which is (currently) performed by interprocedural
       constant propagation.
  
! 'noinline'
       This function attribute prevents a function from being considered
       for inlining.  It also disables some other interprocedural
       optimizations; it's preferable to use the more comprehensive
!      'noipa' attribute instead if that is your goal.
  
!      Even if a function is declared with the 'noinline' attribute, there
       are optimizations other than inlining that can cause calls to be
       optimized away if it does not have side effects, although the
       function call is live.  To keep such calls from being optimized
--- 38086,38218 ----
            __attribute__ ((malloc, malloc (fclose, 1)))
              FILE* tmpfile (void);
  
!      The warnings guarded by â€˜-fanalyzerâ€™ respect allocation and
!      deallocation pairs marked with the â€˜mallocâ€™.  In particular:
  
!         â€¢ The analyzer emits a â€˜-Wanalyzer-mismatching-deallocationâ€™
            diagnostic if there is an execution path in which the result
            of an allocation call is passed to a different deallocator.
  
!         â€¢ The analyzer emits a â€˜-Wanalyzer-double-freeâ€™ diagnostic if
            there is an execution path in which a value is passed more
            than once to a deallocation call.
  
!         â€¢ The analyzer considers the possibility that an allocation
            function could fail and return null.  If there are execution
            paths in which an unchecked result of an allocation call is
            dereferenced or passed to a function requiring a non-null
!           argument, it emits â€˜-Wanalyzer-possible-null-dereferenceâ€™ and
!           â€˜-Wanalyzer-possible-null-argumentâ€™ diagnostics.  If the
!           allocator always returns non-null, use â€˜__attribute__
!           ((returns_nonnull))â€™ to suppress these warnings.  For example:
                 char *xstrdup (const char *)
                   __attribute__((malloc (free), returns_nonnull));
  
!         â€¢ The analyzer emits a â€˜-Wanalyzer-use-after-freeâ€™ diagnostic if
            there is an execution path in which the memory passed by
            pointer to a deallocation call is used after the deallocation.
  
!         â€¢ The analyzer emits a â€˜-Wanalyzer-malloc-leakâ€™ diagnostic if
            there is an execution path in which the result of an
            allocation call is leaked (without being passed to the
            deallocation function).
  
!         â€¢ The analyzer emits a â€˜-Wanalyzer-free-of-non-heapâ€™ diagnostic
            if a deallocation function is used on a global or on-stack
            variable.
  
       The analyzer assumes that deallocators can gracefully handle the
       null pointer.  If this is not the case, the deallocator can be
!      marked with â€˜__attribute__((nonnull))â€™ so that â€˜-fanalyzerâ€™ can
!      emit a â€˜-Wanalyzer-possible-null-argumentâ€™ diagnostic for code
       paths in which the deallocator is called with null.
  
! â€˜no_icfâ€™
       This function attribute prevents a functions from being merged with
       another semantically equivalent function.
  
! â€˜no_instrument_functionâ€™
!      If any of â€˜-finstrument-functionsâ€™, â€˜-pâ€™, or â€˜-pgâ€™ are given,
       profiling function calls are generated at entry and exit of most
       user-compiled functions.  Functions with this attribute are not so
       instrumented.
  
! â€˜no_profile_instrument_functionâ€™
!      The â€˜no_profile_instrument_functionâ€™ attribute on functions is used
       to inform the compiler that it should not process any profile
       feedback based optimization code instrumentation.
  
! â€˜no_reorderâ€™
!      Do not reorder functions or variables marked â€˜no_reorderâ€™ against
       each other or top level assembler statements the executable.  The
       actual order in the program will depend on the linker command line.
       Static variables marked like this are also not removed.  This has a
!      similar effect as the â€˜-fno-toplevel-reorderâ€™ option, but only
       applies to the marked symbols.
  
! â€˜no_sanitize ("SANITIZE_OPTION")â€™
!      The â€˜no_sanitizeâ€™ attribute on functions is used to inform the
       compiler that it should not do sanitization of any option mentioned
       in SANITIZE_OPTION.  A list of values acceptable by the
!      â€˜-fsanitizeâ€™ option can be provided.
  
            void __attribute__ ((no_sanitize ("alignment", "object-size")))
            f () { /* Do something. */; }
            void __attribute__ ((no_sanitize ("alignment,object-size")))
            g () { /* Do something. */; }
  
! â€˜no_sanitize_addressâ€™
! â€˜no_address_safety_analysisâ€™
!      The â€˜no_sanitize_addressâ€™ attribute on functions is used to inform
       the compiler that it should not instrument memory accesses in the
!      function when compiling with the â€˜-fsanitize=addressâ€™ option.  The
!      â€˜no_address_safety_analysisâ€™ is a deprecated alias of the
!      â€˜no_sanitize_addressâ€™ attribute, new code should use
!      â€˜no_sanitize_addressâ€™.
  
! â€˜no_sanitize_threadâ€™
!      The â€˜no_sanitize_threadâ€™ attribute on functions is used to inform
       the compiler that it should not instrument memory accesses in the
!      function when compiling with the â€˜-fsanitize=threadâ€™ option.
  
! â€˜no_sanitize_undefinedâ€™
!      The â€˜no_sanitize_undefinedâ€™ attribute on functions is used to
       inform the compiler that it should not check for undefined behavior
!      in the function when compiling with the â€˜-fsanitize=undefinedâ€™
       option.
  
! â€˜no_sanitize_coverageâ€™
!      The â€˜no_sanitize_coverageâ€™ attribute on functions is used to inform
       the compiler that it should not do coverage-guided fuzzing code
!      instrumentation (â€˜-fsanitize-coverageâ€™).
  
! â€˜no_split_stackâ€™
!      If â€˜-fsplit-stackâ€™ is given, functions have a small prologue which
       decides whether to split the stack.  Functions with the
!      â€˜no_split_stackâ€™ attribute do not have that prologue, and thus may
       run with only a small amount of stack space available.
  
! â€˜no_stack_limitâ€™
!      This attribute locally overrides the â€˜-fstack-limit-registerâ€™ and
!      â€˜-fstack-limit-symbolâ€™ command-line options; it has the effect of
       disabling stack limit checking in the function it applies to.
  
! â€˜no_stack_protectorâ€™
       This attribute prevents stack protection code for the function.
  
! â€˜nocloneâ€™
       This function attribute prevents a function from being considered
       for cloning--a mechanism that produces specialized copies of
       functions and which is (currently) performed by interprocedural
       constant propagation.
  
! â€˜noinlineâ€™
       This function attribute prevents a function from being considered
       for inlining.  It also disables some other interprocedural
       optimizations; it's preferable to use the more comprehensive
!      â€˜noipaâ€™ attribute instead if that is your goal.
  
!      Even if a function is declared with the â€˜noinlineâ€™ attribute, there
       are optimizations other than inlining that can cause calls to be
       optimized away if it does not have side effects, although the
       function call is live.  To keep such calls from being optimized
*************** The following attributes are supported o
*** 38215,38235 ****
       (*note Extended Asm::) in the called function, to serve as a
       special side effect.
  
! 'noipa'
       Disable interprocedural optimizations between the function with
       this attribute and its callers, as if the body of the function is
       not available when optimizing callers and the callers are
       unavailable when optimizing the body.  This attribute implies
!      'noinline', 'noclone' and 'no_icf' attributes.  However, this
       attribute is not equivalent to a combination of other attributes,
       because its purpose is to suppress existing and future
       optimizations employing interprocedural analysis, including those
       that do not have an attribute suitable for disabling them
       individually.
  
! 'nonnull'
! 'nonnull (ARG-INDEX, ...)'
!      The 'nonnull' attribute may be applied to a function that takes at
       least one argument of a pointer type.  It indicates that the
       referenced arguments must be non-null pointers.  For instance, the
       declaration:
--- 38223,38243 ----
       (*note Extended Asm::) in the called function, to serve as a
       special side effect.
  
! â€˜noipaâ€™
       Disable interprocedural optimizations between the function with
       this attribute and its callers, as if the body of the function is
       not available when optimizing callers and the callers are
       unavailable when optimizing the body.  This attribute implies
!      â€˜noinlineâ€™, â€˜nocloneâ€™ and â€˜no_icfâ€™ attributes.  However, this
       attribute is not equivalent to a combination of other attributes,
       because its purpose is to suppress existing and future
       optimizations employing interprocedural analysis, including those
       that do not have an attribute suitable for disabling them
       individually.
  
! â€˜nonnullâ€™
! â€˜nonnull (ARG-INDEX, ...)â€™
!      The â€˜nonnullâ€™ attribute may be applied to a function that takes at
       least one argument of a pointer type.  It indicates that the
       referenced arguments must be non-null pointers.  For instance, the
       declaration:
*************** The following attributes are supported o
*** 38238,38273 ****
            my_memcpy (void *dest, const void *src, size_t len)
                    __attribute__((nonnull (1, 2)));
  
!      informs the compiler that, in calls to 'my_memcpy', arguments DEST
       and SRC must be non-null.
  
       The attribute has an effect both on functions calls and function
       definitions.
  
       For function calls:
!         * If the compiler determines that a null pointer is passed in an
!           argument slot marked as non-null, and the '-Wnonnull' option
            is enabled, a warning is issued.  *Note Warning Options::.
!         * The '-fisolate-erroneous-paths-attribute' option can be
            specified to have GCC transform calls with null arguments to
            non-null functions into traps.  *Note Optimize Options::.
!         * The compiler may also perform optimizations based on the
            knowledge that certain function arguments cannot be null.
            These optimizations can be disabled by the
!           '-fno-delete-null-pointer-checks' option.  *Note Optimize
            Options::.
  
       For function definitions:
!         * If the compiler determines that a function parameter that is
            marked with nonnull is compared with null, and
!           '-Wnonnull-compare' option is enabled, a warning is issued.
            *Note Warning Options::.
!         * The compiler may also perform optimizations based on the
!           knowledge that 'nonnull' parameters cannot be null.  This can
            currently not be disabled other than by removing the nonnull
            attribute.
  
!      If no ARG-INDEX is given to the 'nonnull' attribute, all pointer
       arguments are marked as non-null.  To illustrate, the following
       declaration is equivalent to the previous example:
  
--- 38246,38281 ----
            my_memcpy (void *dest, const void *src, size_t len)
                    __attribute__((nonnull (1, 2)));
  
!      informs the compiler that, in calls to â€˜my_memcpyâ€™, arguments DEST
       and SRC must be non-null.
  
       The attribute has an effect both on functions calls and function
       definitions.
  
       For function calls:
!         â€¢ If the compiler determines that a null pointer is passed in an
!           argument slot marked as non-null, and the â€˜-Wnonnullâ€™ option
            is enabled, a warning is issued.  *Note Warning Options::.
!         â€¢ The â€˜-fisolate-erroneous-paths-attributeâ€™ option can be
            specified to have GCC transform calls with null arguments to
            non-null functions into traps.  *Note Optimize Options::.
!         â€¢ The compiler may also perform optimizations based on the
            knowledge that certain function arguments cannot be null.
            These optimizations can be disabled by the
!           â€˜-fno-delete-null-pointer-checksâ€™ option.  *Note Optimize
            Options::.
  
       For function definitions:
!         â€¢ If the compiler determines that a function parameter that is
            marked with nonnull is compared with null, and
!           â€˜-Wnonnull-compareâ€™ option is enabled, a warning is issued.
            *Note Warning Options::.
!         â€¢ The compiler may also perform optimizations based on the
!           knowledge that â€˜nonnullâ€™ parameters cannot be null.  This can
            currently not be disabled other than by removing the nonnull
            attribute.
  
!      If no ARG-INDEX is given to the â€˜nonnullâ€™ attribute, all pointer
       arguments are marked as non-null.  To illustrate, the following
       declaration is equivalent to the previous example:
  
*************** The following attributes are supported o
*** 38275,38284 ****
            my_memcpy (void *dest, const void *src, size_t len)
                    __attribute__((nonnull));
  
! 'nonnull_if_nonzero'
! 'nonnull_if_nonzero (ARG-INDEX, ARG2-INDEX)'
!      The 'nonnull_if_nonzero' attribute is a conditional version of the
!      'nonnull' attribute.  It has two arguments, the first argument
       shall be argument index of a pointer argument which must be in some
       cases non-null and the second argument shall be argument index of
       an integral argument (other than boolean).  If the integral
--- 38283,38292 ----
            my_memcpy (void *dest, const void *src, size_t len)
                    __attribute__((nonnull));
  
! â€˜nonnull_if_nonzeroâ€™
! â€˜nonnull_if_nonzero (ARG-INDEX, ARG2-INDEX)â€™
!      The â€˜nonnull_if_nonzeroâ€™ attribute is a conditional version of the
!      â€˜nonnullâ€™ attribute.  It has two arguments, the first argument
       shall be argument index of a pointer argument which must be in some
       cases non-null and the second argument shall be argument index of
       an integral argument (other than boolean).  If the integral
*************** The following attributes are supported o
*** 38293,38306 ****
                    __attribute__((nonnull_if_nonzero (1, 3),
                                   nonnull_if_nonzero (2, 3)));
  
!      With these declarations, it is invalid to call 'my_memcpy (NULL,
!      NULL, 0);' or to call 'my_memcpy2 (NULL, NULL, 4);' but it is valid
!      to call 'my_memcpy2 (NULL, NULL, 0);'.  This attribute should be
       used on declarations which have e.g. an exception for zero sizes,
       in which case null may be passed.
  
! 'noplt'
!      The 'noplt' attribute is the counterpart to option '-fno-plt'.
       Calls to functions marked with this attribute in
       position-independent code do not use the PLT.
  
--- 38301,38314 ----
                    __attribute__((nonnull_if_nonzero (1, 3),
                                   nonnull_if_nonzero (2, 3)));
  
!      With these declarations, it is invalid to call â€˜my_memcpy (NULL,
!      NULL, 0);â€™ or to call â€˜my_memcpy2 (NULL, NULL, 4);â€™ but it is valid
!      to call â€˜my_memcpy2 (NULL, NULL, 0);â€™.  This attribute should be
       used on declarations which have e.g. an exception for zero sizes,
       in which case null may be passed.
  
! â€˜nopltâ€™
!      The â€˜nopltâ€™ attribute is the counterpart to option â€˜-fno-pltâ€™.
       Calls to functions marked with this attribute in
       position-independent code do not use the PLT.
  
*************** The following attributes are supported o
*** 38315,38333 ****
              /* ... */
            }
  
!      The 'noplt' attribute on function 'foo' tells the compiler to
!      assume that the function 'foo' is externally defined and that the
!      call to 'foo' must avoid the PLT in position-independent code.
  
       In position-dependent code, a few targets also convert calls to
       functions that are marked to not use the PLT to use the GOT
       instead.
  
! 'noreturn'
!      A few standard library functions, such as 'abort' and 'exit',
       cannot return.  GCC knows this automatically.  Some programs define
       their own functions that never return.  You can declare them
!      'noreturn' to tell the compiler this fact.  For example,
  
            void fatal () __attribute__ ((noreturn));
  
--- 38323,38341 ----
              /* ... */
            }
  
!      The â€˜nopltâ€™ attribute on function â€˜fooâ€™ tells the compiler to
!      assume that the function â€˜fooâ€™ is externally defined and that the
!      call to â€˜fooâ€™ must avoid the PLT in position-independent code.
  
       In position-dependent code, a few targets also convert calls to
       functions that are marked to not use the PLT to use the GOT
       instead.
  
! â€˜noreturnâ€™
!      A few standard library functions, such as â€˜abortâ€™ and â€˜exitâ€™,
       cannot return.  GCC knows this automatically.  Some programs define
       their own functions that never return.  You can declare them
!      â€˜noreturnâ€™ to tell the compiler this fact.  For example,
  
            void fatal () __attribute__ ((noreturn));
  
*************** The following attributes are supported o
*** 38338,38373 ****
              exit (1);
            }
  
!      The 'noreturn' keyword tells the compiler to assume that 'fatal'
       cannot return.  It can then optimize without regard to what would
!      happen if 'fatal' ever did return.  This makes slightly better
       code.  More importantly, it helps avoid spurious warnings of
       uninitialized variables.
  
!      The 'noreturn' keyword does not affect the exceptional path when
!      that applies: a 'noreturn'-marked function may still return to the
!      caller by throwing an exception or calling 'longjmp'.
  
       In order to preserve backtraces, GCC will never turn calls to
!      'noreturn' functions into tail calls.
  
       Do not assume that registers saved by the calling function are
!      restored before calling the 'noreturn' function.
  
!      It does not make sense for a 'noreturn' function to have a return
!      type other than 'void'.
  
! 'nothrow'
!      The 'nothrow' attribute is used to inform the compiler that a
       function cannot throw an exception.  For example, most functions in
       the standard C library can be guaranteed not to throw an exception
!      with the notable exceptions of 'qsort' and 'bsearch' that take
       function pointer arguments.
  
! 'null_terminated_string_arg'
! 'null_terminated_string_arg (N)'
!      The 'null_terminated_string_arg' attribute may be applied to a
!      function that takes a 'char *' or 'const char *' at referenced
       argument N.
  
       It indicates that the passed argument must be a C-style
--- 38346,38381 ----
              exit (1);
            }
  
!      The â€˜noreturnâ€™ keyword tells the compiler to assume that â€˜fatalâ€™
       cannot return.  It can then optimize without regard to what would
!      happen if â€˜fatalâ€™ ever did return.  This makes slightly better
       code.  More importantly, it helps avoid spurious warnings of
       uninitialized variables.
  
!      The â€˜noreturnâ€™ keyword does not affect the exceptional path when
!      that applies: a â€˜noreturnâ€™-marked function may still return to the
!      caller by throwing an exception or calling â€˜longjmpâ€™.
  
       In order to preserve backtraces, GCC will never turn calls to
!      â€˜noreturnâ€™ functions into tail calls.
  
       Do not assume that registers saved by the calling function are
!      restored before calling the â€˜noreturnâ€™ function.
  
!      It does not make sense for a â€˜noreturnâ€™ function to have a return
!      type other than â€˜voidâ€™.
  
! â€˜nothrowâ€™
!      The â€˜nothrowâ€™ attribute is used to inform the compiler that a
       function cannot throw an exception.  For example, most functions in
       the standard C library can be guaranteed not to throw an exception
!      with the notable exceptions of â€˜qsortâ€™ and â€˜bsearchâ€™ that take
       function pointer arguments.
  
! â€˜null_terminated_string_argâ€™
! â€˜null_terminated_string_arg (N)â€™
!      The â€˜null_terminated_string_argâ€™ attribute may be applied to a
!      function that takes a â€˜char *â€™ or â€˜const char *â€™ at referenced
       argument N.
  
       It indicates that the passed argument must be a C-style
*************** The following attributes are supported o
*** 38376,38386 ****
       may scan through the referenced buffer looking for the first zero
       byte.
  
!      In particular, when the analyzer is enabled (via '-fanalyzer'), if
       the pointer is non-null, it will simulate scanning for the first
       zero byte in the referenced buffer, and potentially emit
!      '-Wanalyzer-use-of-uninitialized-value' or
!      '-Wanalyzer-out-of-bounds' on improperly terminated buffers.
  
       For example, given the following:
  
--- 38384,38394 ----
       may scan through the referenced buffer looking for the first zero
       byte.
  
!      In particular, when the analyzer is enabled (via â€˜-fanalyzerâ€™), if
       the pointer is non-null, it will simulate scanning for the first
       zero byte in the referenced buffer, and potentially emit
!      â€˜-Wanalyzer-use-of-uninitialized-valueâ€™ or
!      â€˜-Wanalyzer-out-of-boundsâ€™ on improperly terminated buffers.
  
       For example, given the following:
  
*************** The following attributes are supported o
*** 38391,38407 ****
       function are validly terminated.
  
       If the parameter must be non-null, it is appropriate to use both
!      this attribute and the attribute 'nonnull', such as in:
  
            extern char *example_2 (const char *p)
              __attribute__((null_terminated_string_arg (1),
                             nonnull (1)));
  
!      See the 'nonnull' attribute for more information and caveats.
  
!      If the pointer argument is also referred to by an 'access'
!      attribute on the function with ACCESS-MODE either 'read_only' or
!      'read_write' and the latter attribute has the optional SIZE-INDEX
       argument referring to a size argument, this expresses the maximum
       size of the access.  For example, given:
  
--- 38399,38415 ----
       function are validly terminated.
  
       If the parameter must be non-null, it is appropriate to use both
!      this attribute and the attribute â€˜nonnullâ€™, such as in:
  
            extern char *example_2 (const char *p)
              __attribute__((null_terminated_string_arg (1),
                             nonnull (1)));
  
!      See the â€˜nonnullâ€™ attribute for more information and caveats.
  
!      If the pointer argument is also referred to by an â€˜accessâ€™
!      attribute on the function with ACCESS-MODE either â€˜read_onlyâ€™ or
!      â€˜read_writeâ€™ and the latter attribute has the optional SIZE-INDEX
       argument referring to a size argument, this expresses the maximum
       size of the access.  For example, given:
  
*************** The following attributes are supported o
*** 38414,38422 ****
       either be validly null-terminated, or validly readable up to the
       size specified by the second parameter.
  
! 'optimize (LEVEL, ...)'
! 'optimize (STRING, ...)'
!      The 'optimize' attribute is used to specify that a function is to
       be compiled with different optimization options than specified on
       the command line.  The optimize attribute arguments of a function
       behave as if appended to the command-line.
--- 38422,38430 ----
       either be validly null-terminated, or validly readable up to the
       size specified by the second parameter.
  
! â€˜optimize (LEVEL, ...)â€™
! â€˜optimize (STRING, ...)â€™
!      The â€˜optimizeâ€™ attribute is used to specify that a function is to
       be compiled with different optimization options than specified on
       the command line.  The optimize attribute arguments of a function
       behave as if appended to the command-line.
*************** The following attributes are supported o
*** 38424,38479 ****
       Valid arguments are constant non-negative integers and strings.
       Each numeric argument specifies an optimization LEVEL.  Each STRING
       argument consists of one or more comma-separated substrings.  Each
!      substring that begins with the letter 'O' refers to an optimization
!      option such as '-O0' or '-Os'.  Other substrings are taken as
!      suffixes to the '-f' prefix jointly forming the name of an
       optimization option.  *Note Optimize Options::.
  
!      '#pragma GCC optimize' can be used to set optimization options for
       more than one function.  *Note Function Specific Option Pragmas::,
       for details about the pragma.
  
       Providing multiple strings as arguments separated by commas to
       specify multiple options is equivalent to separating the option
!      suffixes with a comma (',') within a single string.  Spaces are not
       permitted within the strings.
  
       Not every optimization option that starts with the -F prefix
       specified by the attribute necessarily has an effect on the
!      function.  The 'optimize' attribute should be used for debugging
       purposes only.  It is not suitable in production code.
  
! 'patchable_function_entry'
       In case the target's text segment can be made writable at run time
       by any means, padding the function entry with a number of NOPs can
       be used to provide a universal tool for instrumentation.
  
!      The 'patchable_function_entry' function attribute can be used to
       change the number of NOPs to any desired value.  The two-value
       syntax is the same as for the command-line switch
!      '-fpatchable-function-entry=N,M', generating N NOPs, with the
       function entry point before the Mth NOP instruction.  M defaults to
       0 if omitted e.g. function entry point is before the first NOP.
  
       If patchable function entries are enabled globally using the
!      command-line option '-fpatchable-function-entry=N,M', then you must
       disable instrumentation on all functions that are part of the
       instrumentation framework with the attribute
!      'patchable_function_entry (0)' to prevent recursion.
  
! 'pure'
  
       Calls to functions that have no observable effects on the state of
       the program other than to return a value may lend themselves to
       optimizations such as common subexpression elimination.  Declaring
!      such functions with the 'pure' attribute allows GCC to avoid
       emitting some calls in repeated invocations of the function with
       the same argument values.
  
!      The 'pure' attribute prohibits a function from modifying the state
       of the program that is observable by means other than inspecting
       the function's return value.  However, functions declared with the
!      'pure' attribute can safely read any non-volatile objects, and
       modify the value of objects in a way that does not affect their
       return value or the observable state of the program.
  
--- 38432,38487 ----
       Valid arguments are constant non-negative integers and strings.
       Each numeric argument specifies an optimization LEVEL.  Each STRING
       argument consists of one or more comma-separated substrings.  Each
!      substring that begins with the letter â€˜Oâ€™ refers to an optimization
!      option such as â€˜-O0â€™ or â€˜-Osâ€™.  Other substrings are taken as
!      suffixes to the â€˜-fâ€™ prefix jointly forming the name of an
       optimization option.  *Note Optimize Options::.
  
!      â€˜#pragma GCC optimizeâ€™ can be used to set optimization options for
       more than one function.  *Note Function Specific Option Pragmas::,
       for details about the pragma.
  
       Providing multiple strings as arguments separated by commas to
       specify multiple options is equivalent to separating the option
!      suffixes with a comma (â€˜,â€™) within a single string.  Spaces are not
       permitted within the strings.
  
       Not every optimization option that starts with the -F prefix
       specified by the attribute necessarily has an effect on the
!      function.  The â€˜optimizeâ€™ attribute should be used for debugging
       purposes only.  It is not suitable in production code.
  
! â€˜patchable_function_entryâ€™
       In case the target's text segment can be made writable at run time
       by any means, padding the function entry with a number of NOPs can
       be used to provide a universal tool for instrumentation.
  
!      The â€˜patchable_function_entryâ€™ function attribute can be used to
       change the number of NOPs to any desired value.  The two-value
       syntax is the same as for the command-line switch
!      â€˜-fpatchable-function-entry=N,Mâ€™, generating N NOPs, with the
       function entry point before the Mth NOP instruction.  M defaults to
       0 if omitted e.g. function entry point is before the first NOP.
  
       If patchable function entries are enabled globally using the
!      command-line option â€˜-fpatchable-function-entry=N,Mâ€™, then you must
       disable instrumentation on all functions that are part of the
       instrumentation framework with the attribute
!      â€˜patchable_function_entry (0)â€™ to prevent recursion.
  
! â€˜pureâ€™
  
       Calls to functions that have no observable effects on the state of
       the program other than to return a value may lend themselves to
       optimizations such as common subexpression elimination.  Declaring
!      such functions with the â€˜pureâ€™ attribute allows GCC to avoid
       emitting some calls in repeated invocations of the function with
       the same argument values.
  
!      The â€˜pureâ€™ attribute prohibits a function from modifying the state
       of the program that is observable by means other than inspecting
       the function's return value.  However, functions declared with the
!      â€˜pureâ€™ attribute can safely read any non-volatile objects, and
       modify the value of objects in a way that does not affect their
       return value or the observable state of the program.
  
*************** The following attributes are supported o
*** 38481,38516 ****
  
            int hash (char *) __attribute__ ((pure));
  
!      tells GCC that subsequent calls to the function 'hash' with the
       same string can be replaced by the result of the first call
!      provided the state of the program observable by 'hash', including
       the contents of the array itself, does not change in between.  Even
!      though 'hash' takes a non-const pointer argument it must not modify
       the array it points to, or any other object whose value the rest of
       the program may depend on.  However, the caller may safely change
       the contents of the array between successive calls to the function
       (doing so disables the optimization).  The restriction also applies
!      to member objects referenced by the 'this' pointer in C++
       non-static member functions.
  
!      Some common examples of pure functions are 'strlen' or 'memcmp'.
       Interesting non-pure functions are functions with infinite loops or
       those depending on volatile memory or other system resource, that
!      may change between consecutive calls (such as the standard C 'feof'
       function in a multithreading environment).
  
!      The 'pure' attribute imposes similar but looser restrictions on a
!      function's definition than the 'const' attribute: 'pure' allows the
       function to read any non-volatile memory, even if it changes in
       between successive invocations of the function.  Declaring the same
!      function with both the 'pure' and the 'const' attribute is
       diagnosed.  Because a pure function cannot have any observable side
       effects it does not make sense for such a function to return
!      'void'.  Declaring such a function is diagnosed.
  
! 'unsequenced'
  
!      This attribute is a GNU counterpart of the C23 '[[unsequenced]]'
       attribute, used to specify function pointers to effectless,
       idempotent, stateless and independent functions according to the
       C23 definition.
--- 38489,38524 ----
  
            int hash (char *) __attribute__ ((pure));
  
!      tells GCC that subsequent calls to the function â€˜hashâ€™ with the
       same string can be replaced by the result of the first call
!      provided the state of the program observable by â€˜hashâ€™, including
       the contents of the array itself, does not change in between.  Even
!      though â€˜hashâ€™ takes a non-const pointer argument it must not modify
       the array it points to, or any other object whose value the rest of
       the program may depend on.  However, the caller may safely change
       the contents of the array between successive calls to the function
       (doing so disables the optimization).  The restriction also applies
!      to member objects referenced by the â€˜thisâ€™ pointer in C++
       non-static member functions.
  
!      Some common examples of pure functions are â€˜strlenâ€™ or â€˜memcmpâ€™.
       Interesting non-pure functions are functions with infinite loops or
       those depending on volatile memory or other system resource, that
!      may change between consecutive calls (such as the standard C â€˜feofâ€™
       function in a multithreading environment).
  
!      The â€˜pureâ€™ attribute imposes similar but looser restrictions on a
!      function's definition than the â€˜constâ€™ attribute: â€˜pureâ€™ allows the
       function to read any non-volatile memory, even if it changes in
       between successive invocations of the function.  Declaring the same
!      function with both the â€˜pureâ€™ and the â€˜constâ€™ attribute is
       diagnosed.  Because a pure function cannot have any observable side
       effects it does not make sense for such a function to return
!      â€˜voidâ€™.  Declaring such a function is diagnosed.
  
! â€˜unsequencedâ€™
  
!      This attribute is a GNU counterpart of the C23 â€˜[[unsequenced]]â€™
       attribute, used to specify function pointers to effectless,
       idempotent, stateless and independent functions according to the
       C23 definition.
*************** The following attributes are supported o
*** 38520,38532 ****
       the their function type even in that case.
  
       Unsequenced functions without pointer or reference arguments are
!      similar to functions with the 'const' attribute, except that
!      'const' attribute also requires finiteness.  So, both functions
!      with 'const' and with 'unsequenced' attributes can be optimized by
!      common subexpression elimination, but only functions with 'const'
       attribute can be optimized by dead code elimination if their result
       is unused or is used only by dead code.  Unsequenced functions
!      without pointer or reference arguments with 'void' return type are
       diagnosed because they can't store any results and don't have other
       observable side-effects either.
  
--- 38528,38540 ----
       the their function type even in that case.
  
       Unsequenced functions without pointer or reference arguments are
!      similar to functions with the â€˜constâ€™ attribute, except that
!      â€˜constâ€™ attribute also requires finiteness.  So, both functions
!      with â€˜constâ€™ and with â€˜unsequencedâ€™ attributes can be optimized by
!      common subexpression elimination, but only functions with â€˜constâ€™
       attribute can be optimized by dead code elimination if their result
       is unused or is used only by dead code.  Unsequenced functions
!      without pointer or reference arguments with â€˜voidâ€™ return type are
       diagnosed because they can't store any results and don't have other
       observable side-effects either.
  
*************** The following attributes are supported o
*** 38535,38548 ****
       references to pointers or can store additional results through
       those pointers or references or references to pointers.
  
!      The 'unsequenced' attribute imposes greater restrictions than the
!      similar 'reproducible' attribute and fewer restrictions than the
!      'const' attribute, so during optimization 'const' has precedence
!      over 'unsequenced' which has precedence over 'reproducible'.
  
! 'reproducible'
  
!      This attribute is a GNU counterpart of the C23 '[[reproducible]]'
       attribute, used to specify function pointers to effectless and
       idempotent functions according to the C23 definition.
  
--- 38543,38556 ----
       references to pointers or can store additional results through
       those pointers or references or references to pointers.
  
!      The â€˜unsequencedâ€™ attribute imposes greater restrictions than the
!      similar â€˜reproducibleâ€™ attribute and fewer restrictions than the
!      â€˜constâ€™ attribute, so during optimization â€˜constâ€™ has precedence
!      over â€˜unsequencedâ€™ which has precedence over â€˜reproducibleâ€™.
  
! â€˜reproducibleâ€™
  
!      This attribute is a GNU counterpart of the C23 â€˜[[reproducible]]â€™
       attribute, used to specify function pointers to effectless and
       idempotent functions according to the C23 definition.
  
*************** The following attributes are supported o
*** 38552,38566 ****
  
       Reproducible functions without pointer or reference arguments or
       which do not modify objects referenced by those pointer/reference
!      arguments are similar to functions with the 'pure' attribute,
!      except that 'pure' attribute also requires finiteness.  So, both
!      functions with 'pure' and with 'reproducible' attributes can be
       optimized by common subexpression elimination if the global state
       or anything reachable through the pointer/reference arguments isn't
!      modified, but only functions with 'pure' attribute can be optimized
       by dead code elimination if their result is unused or is used only
       by dead code.  Reproducible functions without pointer or reference
!      arguments with 'void' return type are diagnosed because they can't
       store any results and don't have other observable side-effects
       either.
  
--- 38560,38574 ----
  
       Reproducible functions without pointer or reference arguments or
       which do not modify objects referenced by those pointer/reference
!      arguments are similar to functions with the â€˜pureâ€™ attribute,
!      except that â€˜pureâ€™ attribute also requires finiteness.  So, both
!      functions with â€˜pureâ€™ and with â€˜reproducibleâ€™ attributes can be
       optimized by common subexpression elimination if the global state
       or anything reachable through the pointer/reference arguments isn't
!      modified, but only functions with â€˜pureâ€™ attribute can be optimized
       by dead code elimination if their result is unused or is used only
       by dead code.  Reproducible functions without pointer or reference
!      arguments with â€˜voidâ€™ return type are diagnosed because they can't
       store any results and don't have other observable side-effects
       either.
  
*************** The following attributes are supported o
*** 38568,38586 ****
       store additional results through those pointers or references or
       references to pointers.
  
! 'retain'
       For ELF targets that support the GNU or FreeBSD OSABIs, this
       attribute will save the function from linker garbage collection.
       To support this behavior, functions that have not been placed in
!      specific sections (e.g.  by the 'section' attribute, or the
!      '-ffunction-sections' option), will be placed in new, unique
       sections.
  
       This additional functionality requires Binutils version 2.36 or
       later.
  
! 'returns_nonnull'
!      The 'returns_nonnull' attribute specifies that the function return
       value should be a non-null pointer.  For instance, the declaration:
  
            extern void *
--- 38576,38594 ----
       store additional results through those pointers or references or
       references to pointers.
  
! â€˜retainâ€™
       For ELF targets that support the GNU or FreeBSD OSABIs, this
       attribute will save the function from linker garbage collection.
       To support this behavior, functions that have not been placed in
!      specific sections (e.g.  by the â€˜sectionâ€™ attribute, or the
!      â€˜-ffunction-sectionsâ€™ option), will be placed in new, unique
       sections.
  
       This additional functionality requires Binutils version 2.36 or
       later.
  
! â€˜returns_nonnullâ€™
!      The â€˜returns_nonnullâ€™ attribute specifies that the function return
       value should be a non-null pointer.  For instance, the declaration:
  
            extern void *
*************** The following attributes are supported o
*** 38589,38623 ****
       lets the compiler optimize callers based on the knowledge that the
       return value will never be null.
  
! 'returns_twice'
!      The 'returns_twice' attribute tells the compiler that a function
       may return more than one time.  The compiler ensures that all
       registers are dead before calling such a function and emits a
       warning about the variables that may be clobbered after the second
!      return from the function.  Examples of such functions are 'setjmp'
!      and 'vfork'.  The 'longjmp'-like counterpart of such function, if
!      any, might need to be marked with the 'noreturn' attribute.
  
! 'section ("SECTION-NAME")'
!      Normally, the compiler places the code it generates in the 'text'
       section.  Sometimes, however, you need additional sections, or you
       need certain particular functions to appear in special sections.
!      The 'section' attribute specifies that a function lives in a
       particular section.  For example, the declaration:
  
            extern void foobar (void) __attribute__ ((section ("bar")));
  
!      puts the function 'foobar' in the 'bar' section.
  
       Some file formats do not support arbitrary sections so the
!      'section' attribute is not available on all platforms.  If you need
       to map the entire contents of a module to a particular section,
       consider using the facilities of the linker instead.
  
! 'sentinel'
! 'sentinel (POSITION)'
       This function attribute indicates that an argument in a call to the
!      function is expected to be an explicit 'NULL'.  The attribute is
       only valid on variadic functions.  By default, the sentinel is
       expected to be the last argument of the function call.  If the
       optional POSITION argument is specified to the attribute, the
--- 38597,38631 ----
       lets the compiler optimize callers based on the knowledge that the
       return value will never be null.
  
! â€˜returns_twiceâ€™
!      The â€˜returns_twiceâ€™ attribute tells the compiler that a function
       may return more than one time.  The compiler ensures that all
       registers are dead before calling such a function and emits a
       warning about the variables that may be clobbered after the second
!      return from the function.  Examples of such functions are â€˜setjmpâ€™
!      and â€˜vforkâ€™.  The â€˜longjmpâ€™-like counterpart of such function, if
!      any, might need to be marked with the â€˜noreturnâ€™ attribute.
  
! â€˜section ("SECTION-NAME")â€™
!      Normally, the compiler places the code it generates in the â€˜textâ€™
       section.  Sometimes, however, you need additional sections, or you
       need certain particular functions to appear in special sections.
!      The â€˜sectionâ€™ attribute specifies that a function lives in a
       particular section.  For example, the declaration:
  
            extern void foobar (void) __attribute__ ((section ("bar")));
  
!      puts the function â€˜foobarâ€™ in the â€˜barâ€™ section.
  
       Some file formats do not support arbitrary sections so the
!      â€˜sectionâ€™ attribute is not available on all platforms.  If you need
       to map the entire contents of a module to a particular section,
       consider using the facilities of the linker instead.
  
! â€˜sentinelâ€™
! â€˜sentinel (POSITION)â€™
       This function attribute indicates that an argument in a call to the
!      function is expected to be an explicit â€˜NULLâ€™.  The attribute is
       only valid on variadic functions.  By default, the sentinel is
       expected to be the last argument of the function call.  If the
       optional POSITION argument is specified to the attribute, the
*************** The following attributes are supported o
*** 38629,38648 ****
            __attribute__ ((sentinel(0)))
  
       The attribute is automatically set with a position of 0 for the
!      built-in functions 'execl' and 'execlp'.  The built-in function
!      'execle' has the attribute set with a position of 1.
  
!      A valid 'NULL' in this context is defined as zero with any object
!      pointer type.  If your system defines the 'NULL' macro with an
       integer type then you need to add an explicit cast.  During
!      installation GCC replaces the system '<stddef.h>' header with a
       copy that redefines NULL appropriately.
  
       The warnings for missing or incorrect sentinels are enabled with
!      '-Wformat'.
  
! 'simd'
! 'simd("MASK")'
       This attribute enables creation of one or more function versions
       that can process multiple arguments using SIMD instructions from a
       single invocation.  Specifying this attribute allows compiler to
--- 38637,38656 ----
            __attribute__ ((sentinel(0)))
  
       The attribute is automatically set with a position of 0 for the
!      built-in functions â€˜execlâ€™ and â€˜execlpâ€™.  The built-in function
!      â€˜execleâ€™ has the attribute set with a position of 1.
  
!      A valid â€˜NULLâ€™ in this context is defined as zero with any object
!      pointer type.  If your system defines the â€˜NULLâ€™ macro with an
       integer type then you need to add an explicit cast.  During
!      installation GCC replaces the system â€˜<stddef.h>â€™ header with a
       copy that redefines NULL appropriately.
  
       The warnings for missing or incorrect sentinels are enabled with
!      â€˜-Wformatâ€™.
  
! â€˜simdâ€™
! â€˜simd("MASK")â€™
       This attribute enables creation of one or more function versions
       that can process multiple arguments using SIMD instructions from a
       single invocation.  Specifying this attribute allows compiler to
*************** The following attributes are supported o
*** 38652,38675 ****
       document.  For x86_64 target this document can be found
       here (https://sourceware.org/glibc/wiki/libmvec?action=AttachFile&do=view&target=VectorABI.txt).
  
!      The optional argument MASK may have the value 'notinbranch' or
!      'inbranch', and instructs the compiler to generate non-masked or
       masked clones correspondingly.  By default, all clones are
       generated.
  
!      If the attribute is specified and '#pragma omp declare simd' is
!      present on a declaration and the '-fopenmp' or '-fopenmp-simd'
       switch is specified, then the attribute is ignored.
  
! 'stack_protect'
       This attribute adds stack protection code to the function if flags
!      '-fstack-protector', '-fstack-protector-strong' or
!      '-fstack-protector-explicit' are set.
  
! 'symver ("NAME2@NODENAME")'
       On ELF targets this attribute creates a symbol version.  The NAME2
       part of the parameter is the actual name of the symbol by which it
!      will be externally referenced.  The 'nodename' portion should be
       the name of a node specified in the version script supplied to the
       linker when building a shared library.  Versioned symbol must be
       defined and must be exported with default visibility.
--- 38660,38683 ----
       document.  For x86_64 target this document can be found
       here (https://sourceware.org/glibc/wiki/libmvec?action=AttachFile&do=view&target=VectorABI.txt).
  
!      The optional argument MASK may have the value â€˜notinbranchâ€™ or
!      â€˜inbranchâ€™, and instructs the compiler to generate non-masked or
       masked clones correspondingly.  By default, all clones are
       generated.
  
!      If the attribute is specified and â€˜#pragma omp declare simdâ€™ is
!      present on a declaration and the â€˜-fopenmpâ€™ or â€˜-fopenmp-simdâ€™
       switch is specified, then the attribute is ignored.
  
! â€˜stack_protectâ€™
       This attribute adds stack protection code to the function if flags
!      â€˜-fstack-protectorâ€™, â€˜-fstack-protector-strongâ€™ or
!      â€˜-fstack-protector-explicitâ€™ are set.
  
! â€˜symver ("NAME2@NODENAME")â€™
       On ELF targets this attribute creates a symbol version.  The NAME2
       part of the parameter is the actual name of the symbol by which it
!      will be externally referenced.  The â€˜nodenameâ€™ portion should be
       the name of a node specified in the version script supplied to the
       linker when building a shared library.  Versioned symbol must be
       defined and must be exported with default visibility.
*************** The following attributes are supported o
*** 38679,38685 ****
            {
            }
  
!      Will produce a '.symver foo_v1, foo@VERS_1' directive in the
       assembler output.
  
       One can also define multiple version for a given symbol (starting
--- 38687,38693 ----
            {
            }
  
!      Will produce a â€˜.symver foo_v1, foo@VERS_1â€™ directive in the
       assembler output.
  
       One can also define multiple version for a given symbol (starting
*************** The following attributes are supported o
*** 38690,38697 ****
            {
            }
  
!      This example creates a symbol name 'symver_foo_v1' which will be
!      version 'VERS_2' and 'VERS_3' of 'foo'.
  
       If you have an older release of binutils, then symbol alias needs
       to be used:
--- 38698,38705 ----
            {
            }
  
!      This example creates a symbol name â€˜symver_foo_v1â€™ which will be
!      version â€˜VERS_2â€™ and â€˜VERS_3â€™ of â€˜fooâ€™.
  
       If you have an older release of binutils, then symbol alias needs
       to be used:
*************** The following attributes are supported o
*** 38706,38717 ****
            __attribute__ ((alias ("foo_v1")))
            int symver_foo_v1 (void);
  
!      Finally if the parameter is '"NAME2@@NODENAME"' then in addition to
!      creating a symbol version (as if '"NAME2@NODENAME"' was used) the
       version will be also used to resolve NAME2 by the linker.
  
! 'tainted_args'
!      The 'tainted_args' attribute is used to specify that a function is
       called in a way that requires sanitization of its arguments, such
       as a system call in an operating system kernel.  Such a function
       can be considered part of the "attack surface" of the program.  The
--- 38714,38725 ----
            __attribute__ ((alias ("foo_v1")))
            int symver_foo_v1 (void);
  
!      Finally if the parameter is â€˜"NAME2@@NODENAME"â€™ then in addition to
!      creating a symbol version (as if â€˜"NAME2@NODENAME"â€™ was used) the
       version will be also used to resolve NAME2 by the linker.
  
! â€˜tainted_argsâ€™
!      The â€˜tainted_argsâ€™ attribute is used to specify that a function is
       called in a way that requires sanitization of its arguments, such
       as a system call in an operating system kernel.  Such a function
       can be considered part of the "attack surface" of the program.  The
*************** The following attributes are supported o
*** 38721,38755 ****
       treated as being called with tainted arguments.
  
       The analyzer will pay particular attention to such functions when
!      '-fanalyzer' is supplied, potentially issuing warnings guarded by
!      '-Wanalyzer-tainted-allocation-size',
!      '-Wanalyzer-tainted-array-index', '-Wanalyzer-tainted-divisor',
!      '-Wanalyzer-tainted-offset', and '-Wanalyzer-tainted-size'.
  
! 'target (STRING, ...)'
!      Multiple target back ends implement the 'target' attribute to
       specify that a function is to be compiled with different target
       options than specified on the command line.  The original target
       command-line options are ignored.  One or more strings can be
       provided as arguments.  Each string consists of one or more
!      comma-separated suffixes to the '-m' prefix jointly forming the
       name of a machine-dependent option.  *Note Machine-Dependent
       Options: Submodel Options.
  
!      The 'target' attribute can be used for instance to have a function
       compiled with a different ISA (instruction set architecture) than
!      the default.  '#pragma GCC target' can be used to specify
       target-specific options for more than one function.  *Note Function
       Specific Option Pragmas::, for details about the pragma.
  
       For instance, on an x86, you could declare one function with the
!      'target("sse4.1,arch=core2")' attribute and another with
!      'target("sse4a,arch=amdfam10")'.  This is equivalent to compiling
!      the first function with '-msse4.1' and '-march=core2' options, and
!      the second function with '-msse4a' and '-march=amdfam10' options.
       It is up to you to make sure that a function is only invoked on a
       machine that supports the particular ISA it is compiled for (for
!      example by using 'cpuid' on x86 to determine what feature bits and
       architecture family are used).
  
            int core2_func (void) __attribute__ ((__target__ ("arch=core2")));
--- 38729,38763 ----
       treated as being called with tainted arguments.
  
       The analyzer will pay particular attention to such functions when
!      â€˜-fanalyzerâ€™ is supplied, potentially issuing warnings guarded by
!      â€˜-Wanalyzer-tainted-allocation-sizeâ€™,
!      â€˜-Wanalyzer-tainted-array-indexâ€™, â€˜-Wanalyzer-tainted-divisorâ€™,
!      â€˜-Wanalyzer-tainted-offsetâ€™, and â€˜-Wanalyzer-tainted-sizeâ€™.
  
! â€˜target (STRING, ...)â€™
!      Multiple target back ends implement the â€˜targetâ€™ attribute to
       specify that a function is to be compiled with different target
       options than specified on the command line.  The original target
       command-line options are ignored.  One or more strings can be
       provided as arguments.  Each string consists of one or more
!      comma-separated suffixes to the â€˜-mâ€™ prefix jointly forming the
       name of a machine-dependent option.  *Note Machine-Dependent
       Options: Submodel Options.
  
!      The â€˜targetâ€™ attribute can be used for instance to have a function
       compiled with a different ISA (instruction set architecture) than
!      the default.  â€˜#pragma GCC targetâ€™ can be used to specify
       target-specific options for more than one function.  *Note Function
       Specific Option Pragmas::, for details about the pragma.
  
       For instance, on an x86, you could declare one function with the
!      â€˜target("sse4.1,arch=core2")â€™ attribute and another with
!      â€˜target("sse4a,arch=amdfam10")â€™.  This is equivalent to compiling
!      the first function with â€˜-msse4.1â€™ and â€˜-march=core2â€™ options, and
!      the second function with â€˜-msse4aâ€™ and â€˜-march=amdfam10â€™ options.
       It is up to you to make sure that a function is only invoked on a
       machine that supports the particular ISA it is compiled for (for
!      example by using â€˜cpuidâ€™ on x86 to determine what feature bits and
       architecture family are used).
  
            int core2_func (void) __attribute__ ((__target__ ("arch=core2")));
*************** The following attributes are supported o
*** 38757,38763 ****
  
       Providing multiple strings as arguments separated by commas to
       specify multiple options is equivalent to separating the option
!      suffixes with a comma (',') within a single string.  Spaces are not
       permitted within the strings.
  
       The options supported are specific to each target; refer to *note
--- 38765,38771 ----
  
       Providing multiple strings as arguments separated by commas to
       specify multiple options is equivalent to separating the option
!      suffixes with a comma (â€˜,â€™) within a single string.  Spaces are not
       permitted within the strings.
  
       The options supported are specific to each target; refer to *note
*************** The following attributes are supported o
*** 38765,38814 ****
       *note ARM Function Attributes::, *note AArch64 Function
       Attributes::, and *note S/390 Function Attributes:: for details.
  
! 'target_clones (OPTIONS)'
!      The 'target_clones' attribute is used to specify that a function be
       cloned into multiple versions compiled with different target
       options than specified on the command line.  The supported options
!      and restrictions are the same as for 'target' attribute.
  
       For instance, on an x86, you could compile a function with
!      'target_clones("sse4.1,avx")'.  GCC creates two function clones,
!      one compiled with '-msse4.1' and another with '-mavx'.
  
       On a PowerPC, you can compile a function with
!      'target_clones("cpu=power9,default")'.  GCC will create two
!      function clones, one compiled with '-mcpu=power9' and another with
       the default options.  GCC must be configured to use GLIBC 2.23 or
!      newer in order to use the 'target_clones' attribute.
  
!      It also creates a resolver function (see the 'ifunc' attribute
       above) that dynamically selects a clone suitable for current
       architecture.  The resolver is created only if there is a usage of
!      a function with 'target_clones' attribute.
  
!      Note that any subsequent call of a function without 'target_clone'
!      from a 'target_clone' caller will not lead to copying (target
       clone) of the called function.  If you want to enforce such
       behavior, we recommend declaring the calling function with the
!      'flatten' attribute?
  
! 'unavailable'
! 'unavailable (MSG)'
!      The 'unavailable' attribute results in an error if the function is
       used anywhere in the source file.  This is useful when identifying
       functions that have been removed from a particular variation of an
       interface.  Other than emitting an error rather than a warning, the
!      'unavailable' attribute behaves in the same manner as 'deprecated'.
  
!      The 'unavailable' attribute can also be used for variables and
       types (*note Variable Attributes::, *note Type Attributes::.)
  
! 'unused'
       This attribute, attached to a function, means that the function is
       meant to be possibly unused.  GCC does not produce a warning for
       this function.
  
! 'used'
       This attribute, attached to a function, means that code must be
       emitted for the function even if it appears that the function is
       not referenced.  This is useful, for example, when the function is
--- 38773,38822 ----
       *note ARM Function Attributes::, *note AArch64 Function
       Attributes::, and *note S/390 Function Attributes:: for details.
  
! â€˜target_clones (OPTIONS)â€™
!      The â€˜target_clonesâ€™ attribute is used to specify that a function be
       cloned into multiple versions compiled with different target
       options than specified on the command line.  The supported options
!      and restrictions are the same as for â€˜targetâ€™ attribute.
  
       For instance, on an x86, you could compile a function with
!      â€˜target_clones("sse4.1,avx")â€™.  GCC creates two function clones,
!      one compiled with â€˜-msse4.1â€™ and another with â€˜-mavxâ€™.
  
       On a PowerPC, you can compile a function with
!      â€˜target_clones("cpu=power9,default")â€™.  GCC will create two
!      function clones, one compiled with â€˜-mcpu=power9â€™ and another with
       the default options.  GCC must be configured to use GLIBC 2.23 or
!      newer in order to use the â€˜target_clonesâ€™ attribute.
  
!      It also creates a resolver function (see the â€˜ifuncâ€™ attribute
       above) that dynamically selects a clone suitable for current
       architecture.  The resolver is created only if there is a usage of
!      a function with â€˜target_clonesâ€™ attribute.
  
!      Note that any subsequent call of a function without â€˜target_cloneâ€™
!      from a â€˜target_cloneâ€™ caller will not lead to copying (target
       clone) of the called function.  If you want to enforce such
       behavior, we recommend declaring the calling function with the
!      â€˜flattenâ€™ attribute?
  
! â€˜unavailableâ€™
! â€˜unavailable (MSG)â€™
!      The â€˜unavailableâ€™ attribute results in an error if the function is
       used anywhere in the source file.  This is useful when identifying
       functions that have been removed from a particular variation of an
       interface.  Other than emitting an error rather than a warning, the
!      â€˜unavailableâ€™ attribute behaves in the same manner as â€˜deprecatedâ€™.
  
!      The â€˜unavailableâ€™ attribute can also be used for variables and
       types (*note Variable Attributes::, *note Type Attributes::.)
  
! â€˜unusedâ€™
       This attribute, attached to a function, means that the function is
       meant to be possibly unused.  GCC does not produce a warning for
       this function.
  
! â€˜usedâ€™
       This attribute, attached to a function, means that code must be
       emitted for the function even if it appears that the function is
       not referenced.  This is useful, for example, when the function is
*************** The following attributes are supported o
*** 38818,38824 ****
       attribute also means that the function is instantiated if the class
       itself is instantiated.
  
! 'visibility ("VISIBILITY_TYPE")'
       This attribute affects the linkage of the declaration to which it
       is attached.  It can be applied to variables (*note Common Variable
       Attributes::) and types (*note Common Type Attributes::) as well as
--- 38826,38832 ----
       attribute also means that the function is instantiated if the class
       itself is instantiated.
  
! â€˜visibility ("VISIBILITY_TYPE")â€™
       This attribute affects the linkage of the declaration to which it
       is attached.  It can be applied to variables (*note Common Variable
       Attributes::) and types (*note Common Type Attributes::) as well as
*************** The following attributes are supported o
*** 38834,38840 ****
       The possible values of VISIBILITY_TYPE correspond to the visibility
       settings in the ELF gABI.
  
!      'default'
            Default visibility is the normal case for the object file
            format.  This value is available for the visibility attribute
            to override other options that may change the assumed
--- 38842,38848 ----
       The possible values of VISIBILITY_TYPE correspond to the visibility
       settings in the ELF gABI.
  
!      â€˜defaultâ€™
            Default visibility is the normal case for the object file
            format.  This value is available for the visibility attribute
            to override other options that may change the assumed
*************** The following attributes are supported o
*** 38850,38862 ****
            Default visibility corresponds to "external linkage" in the
            language.
  
!      'hidden'
            Hidden visibility indicates that the entity declared has a new
            form of linkage, which we call "hidden linkage".  Two
            declarations of an object with hidden linkage refer to the
            same object if they are in the same shared object.
  
!      'internal'
            Internal visibility is like hidden visibility, but with
            additional processor specific semantics.  Unless otherwise
            specified by the psABI, GCC defines internal visibility to
--- 38858,38870 ----
            Default visibility corresponds to "external linkage" in the
            language.
  
!      â€˜hiddenâ€™
            Hidden visibility indicates that the entity declared has a new
            form of linkage, which we call "hidden linkage".  Two
            declarations of an object with hidden linkage refer to the
            same object if they are in the same shared object.
  
!      â€˜internalâ€™
            Internal visibility is like hidden visibility, but with
            additional processor specific semantics.  Unless otherwise
            specified by the psABI, GCC defines internal visibility to
*************** The following attributes are supported o
*** 38868,38881 ****
            instance omit the load of a PIC register since it is known
            that the calling function loaded the correct value.
  
!      'protected'
            Protected visibility is like default visibility except that it
            indicates that references within the defining module bind to
            the definition in that module.  That is, the declared entity
            cannot be overridden by another module.
  
       All visibilities are supported on many, but not all, ELF targets
!      (supported when the assembler supports the '.visibility'
       pseudo-op).  Default visibility is supported everywhere.  Hidden
       visibility is supported on Darwin targets.
  
--- 38876,38889 ----
            instance omit the load of a PIC register since it is known
            that the calling function loaded the correct value.
  
!      â€˜protectedâ€™
            Protected visibility is like default visibility except that it
            indicates that references within the defining module bind to
            the definition in that module.  That is, the declared entity
            cannot be overridden by another module.
  
       All visibilities are supported on many, but not all, ELF targets
!      (supported when the assembler supports the â€˜.visibilityâ€™
       pseudo-op).  Default visibility is supported everywhere.  Hidden
       visibility is supported on Darwin targets.
  
*************** The following attributes are supported o
*** 38907,38913 ****
  
       This attribute applies only to the particular namespace body, not
       to other definitions of the same namespace; it is equivalent to
!      using '#pragma GCC visibility' before and after the namespace
       definition (*note Visibility Pragmas::).
  
       In C++, if a template argument has limited visibility, this
--- 38915,38921 ----
  
       This attribute applies only to the particular namespace body, not
       to other definitions of the same namespace; it is equivalent to
!      using â€˜#pragma GCC visibilityâ€™ before and after the namespace
       definition (*note Visibility Pragmas::).
  
       In C++, if a template argument has limited visibility, this
*************** The following attributes are supported o
*** 38918,38929 ****
       If both the template and enclosing class have explicit visibility,
       the visibility from the template is used.
  
! 'warn_unused_result'
!      The 'warn_unused_result' attribute causes a warning to be emitted
       if a caller of the function with this attribute does not use its
       return value.  This is useful for functions where not checking the
       result is either a security problem or always a bug, such as
!      'realloc'.
  
            int fn () __attribute__ ((warn_unused_result));
            int foo ()
--- 38926,38937 ----
       If both the template and enclosing class have explicit visibility,
       the visibility from the template is used.
  
! â€˜warn_unused_resultâ€™
!      The â€˜warn_unused_resultâ€™ attribute causes a warning to be emitted
       if a caller of the function with this attribute does not use its
       return value.  This is useful for functions where not checking the
       result is either a security problem or always a bug, such as
!      â€˜reallocâ€™.
  
            int fn () __attribute__ ((warn_unused_result));
            int foo ()
*************** The following attributes are supported o
*** 38935,38942 ****
  
       results in warning on line 5.
  
! 'weak'
!      The 'weak' attribute causes a declaration of an external symbol to
       be emitted as a weak symbol rather than a global.  This is
       primarily useful in defining library functions that can be
       overridden in user code, though it can also be used with
--- 38943,38950 ----
  
       results in warning on line 5.
  
! â€˜weakâ€™
!      The â€˜weakâ€™ attribute causes a declaration of an external symbol to
       be emitted as a weak symbol rather than a global.  This is
       primarily useful in defining library functions that can be
       overridden in user code, though it can also be used with
*************** The following attributes are supported o
*** 38946,38964 ****
       symbol.  Weak symbols are supported for ELF targets, and also for
       a.out targets when using the GNU assembler and linker.
  
! 'weakref'
! 'weakref ("TARGET")'
!      The 'weakref' attribute marks a declaration as a weak reference.
!      Without arguments, it should be accompanied by an 'alias' attribute
       naming the target symbol.  Alternatively, TARGET may be given as an
!      argument to 'weakref' itself, naming the target definition of the
       alias.  The TARGET must have the same type as the declaration.  In
       addition, if it designates a variable it must also have the same
       size and alignment as the declaration.  In either form of the
!      declaration 'weakref' implicitly marks the declared symbol as
!      'weak'.  Without a TARGET given as an argument to 'weakref' or to
!      'alias', 'weakref' is equivalent to 'weak' (in that case the
!      declaration may be 'extern').
  
            /* Given the declaration: */
            extern int y (void);
--- 38954,38972 ----
       symbol.  Weak symbols are supported for ELF targets, and also for
       a.out targets when using the GNU assembler and linker.
  
! â€˜weakrefâ€™
! â€˜weakref ("TARGET")â€™
!      The â€˜weakrefâ€™ attribute marks a declaration as a weak reference.
!      Without arguments, it should be accompanied by an â€˜aliasâ€™ attribute
       naming the target symbol.  Alternatively, TARGET may be given as an
!      argument to â€˜weakrefâ€™ itself, naming the target definition of the
       alias.  The TARGET must have the same type as the declaration.  In
       addition, if it designates a variable it must also have the same
       size and alignment as the declaration.  In either form of the
!      declaration â€˜weakrefâ€™ implicitly marks the declared symbol as
!      â€˜weakâ€™.  Without a TARGET given as an argument to â€˜weakrefâ€™ or to
!      â€˜aliasâ€™, â€˜weakrefâ€™ is equivalent to â€˜weakâ€™ (in that case the
!      declaration may be â€˜externâ€™).
  
            /* Given the declaration: */
            extern int y (void);
*************** The following attributes are supported o
*** 38976,38982 ****
       A weak reference is an alias that does not by itself require a
       definition to be given for the target symbol.  If the target symbol
       is only referenced through weak references, then it becomes a
!      'weak' undefined symbol.  If it is directly referenced, however,
       then such strong references prevail, and a definition is required
       for the symbol, not necessarily in the same translation unit.
  
--- 38984,38990 ----
       A weak reference is an alias that does not by itself require a
       definition to be given for the target symbol.  If the target symbol
       is only referenced through weak references, then it becomes a
!      â€˜weakâ€™ undefined symbol.  If it is directly referenced, however,
       then such strong references prevail, and a definition is required
       for the symbol, not necessarily in the same translation unit.
  
*************** The following attributes are supported o
*** 38984,38997 ****
       separate translation unit, renaming the alias to the aliased
       symbol, declaring it as weak, compiling the two separate
       translation units and performing a link with relocatable output
!      (i.e. 'ld -r') on them.
  
!      A declaration to which 'weakref' is attached and that is associated
!      with a named 'target' must be 'static'.
  
! 'zero_call_used_regs ("CHOICE")'
  
!      The 'zero_call_used_regs' attribute causes the compiler to zero a
       subset of all call-used registers(1) at function return.  This is
       used to increase program security by either mitigating
       Return-Oriented Programming (ROP) attacks or preventing information
--- 38992,39005 ----
       separate translation unit, renaming the alias to the aliased
       symbol, declaring it as weak, compiling the two separate
       translation units and performing a link with relocatable output
!      (i.e. â€˜ld -râ€™) on them.
  
!      A declaration to which â€˜weakrefâ€™ is attached and that is associated
!      with a named â€˜targetâ€™ must be â€˜staticâ€™.
  
! â€˜zero_call_used_regs ("CHOICE")â€™
  
!      The â€˜zero_call_used_regsâ€™ attribute causes the compiler to zero a
       subset of all call-used registers(1) at function return.  This is
       used to increase program security by either mitigating
       Return-Oriented Programming (ROP) attacks or preventing information
*************** The following attributes are supported o
*** 39002,39027 ****
       provides a flexible way to choose the subset of the call-used
       registers to be zeroed.  The four basic values of CHOICE are:
  
!         * 'skip' doesn't zero any call-used registers.
  
!         * 'used' only zeros call-used registers that are used in the
            function.  A "used" register is one whose content has been set
            or referenced in the function.
  
!         * 'all' zeros all call-used registers.
  
!         * 'leafy' behaves like 'used' in a leaf function, and like 'all'
            in a nonleaf function.  This makes for leaner zeroing in leaf
            functions, where the set of used registers is known, and that
            may be enough for some purposes of register zeroing.
  
       In addition to these three basic choices, it is possible to modify
!      'used', 'all', and 'leafy' as follows:
  
!         * Adding '-gpr' restricts the zeroing to general-purpose
            registers.
  
!         * Adding '-arg' restricts the zeroing to registers that can
            sometimes be used to pass function arguments.  This includes
            all argument registers defined by the platform's calling
            conversion, regardless of whether the function uses those
--- 39010,39035 ----
       provides a flexible way to choose the subset of the call-used
       registers to be zeroed.  The four basic values of CHOICE are:
  
!         â€¢ â€˜skipâ€™ doesn't zero any call-used registers.
  
!         â€¢ â€˜usedâ€™ only zeros call-used registers that are used in the
            function.  A "used" register is one whose content has been set
            or referenced in the function.
  
!         â€¢ â€˜allâ€™ zeros all call-used registers.
  
!         â€¢ â€˜leafyâ€™ behaves like â€˜usedâ€™ in a leaf function, and like â€˜allâ€™
            in a nonleaf function.  This makes for leaner zeroing in leaf
            functions, where the set of used registers is known, and that
            may be enough for some purposes of register zeroing.
  
       In addition to these three basic choices, it is possible to modify
!      â€˜usedâ€™, â€˜allâ€™, and â€˜leafyâ€™ as follows:
  
!         â€¢ Adding â€˜-gprâ€™ restricts the zeroing to general-purpose
            registers.
  
!         â€¢ Adding â€˜-argâ€™ restricts the zeroing to registers that can
            sometimes be used to pass function arguments.  This includes
            all argument registers defined by the platform's calling
            conversion, regardless of whether the function uses those
*************** The following attributes are supported o
*** 39032,39090 ****
  
       The full list of CHOICEs is therefore:
  
!      'skip'
            doesn't zero any call-used register.
  
!      'used'
            only zeros call-used registers that are used in the function.
  
!      'used-gpr'
            only zeros call-used general purpose registers that are used
            in the function.
  
!      'used-arg'
            only zeros call-used registers that are used in the function
            and pass arguments.
  
!      'used-gpr-arg'
            only zeros call-used general purpose registers that are used
            in the function and pass arguments.
  
!      'all'
            zeros all call-used registers.
  
!      'all-gpr'
            zeros all call-used general purpose registers.
  
!      'all-arg'
            zeros all call-used registers that pass arguments.
  
!      'all-gpr-arg'
            zeros all call-used general purpose registers that pass
            arguments.
  
!      'leafy'
!           Same as 'used' in a leaf function, and same as 'all' in a
            nonleaf function.
  
!      'leafy-gpr'
!           Same as 'used-gpr' in a leaf function, and same as 'all-gpr'
            in a nonleaf function.
  
!      'leafy-arg'
!           Same as 'used-arg' in a leaf function, and same as 'all-arg'
            in a nonleaf function.
  
!      'leafy-gpr-arg'
!           Same as 'used-gpr-arg' in a leaf function, and same as
!           'all-gpr-arg' in a nonleaf function.
  
!      Of this list, 'used-arg', 'used-gpr-arg', 'all-arg', 'all-gpr-arg',
!      'leafy-arg', and 'leafy-gpr-arg' are mainly used for ROP
       mitigation.
  
       The default for the attribute is controlled by
!      '-fzero-call-used-regs'.
  
     ---------- Footnotes ----------
  
--- 39040,39098 ----
  
       The full list of CHOICEs is therefore:
  
!      â€˜skipâ€™
            doesn't zero any call-used register.
  
!      â€˜usedâ€™
            only zeros call-used registers that are used in the function.
  
!      â€˜used-gprâ€™
            only zeros call-used general purpose registers that are used
            in the function.
  
!      â€˜used-argâ€™
            only zeros call-used registers that are used in the function
            and pass arguments.
  
!      â€˜used-gpr-argâ€™
            only zeros call-used general purpose registers that are used
            in the function and pass arguments.
  
!      â€˜allâ€™
            zeros all call-used registers.
  
!      â€˜all-gprâ€™
            zeros all call-used general purpose registers.
  
!      â€˜all-argâ€™
            zeros all call-used registers that pass arguments.
  
!      â€˜all-gpr-argâ€™
            zeros all call-used general purpose registers that pass
            arguments.
  
!      â€˜leafyâ€™
!           Same as â€˜usedâ€™ in a leaf function, and same as â€˜allâ€™ in a
            nonleaf function.
  
!      â€˜leafy-gprâ€™
!           Same as â€˜used-gprâ€™ in a leaf function, and same as â€˜all-gprâ€™
            in a nonleaf function.
  
!      â€˜leafy-argâ€™
!           Same as â€˜used-argâ€™ in a leaf function, and same as â€˜all-argâ€™
            in a nonleaf function.
  
!      â€˜leafy-gpr-argâ€™
!           Same as â€˜used-gpr-argâ€™ in a leaf function, and same as
!           â€˜all-gpr-argâ€™ in a nonleaf function.
  
!      Of this list, â€˜used-argâ€™, â€˜used-gpr-argâ€™, â€˜all-argâ€™, â€˜all-gpr-argâ€™,
!      â€˜leafy-argâ€™, and â€˜leafy-gpr-argâ€™ are mainly used for ROP
       mitigation.
  
       The default for the attribute is controlled by
!      â€˜-fzero-call-used-regsâ€™.
  
     ---------- Footnotes ----------
  
*************** AArch64 target.  For the most part, thes
*** 39105,39193 ****
  similar command-line options (*note AArch64 Options::), but on a
  per-function basis.
  
! 'general-regs-only'
       Indicates that no floating-point or Advanced SIMD registers should
       be used when generating code for this function.  If the function
       explicitly uses floating-point code, then the compiler gives an
       error.  This is the same behavior as that of the command-line
!      option '-mgeneral-regs-only'.
  
! 'fix-cortex-a53-835769'
       Indicates that the workaround for the Cortex-A53 erratum 835769
       should be applied to this function.  To explicitly disable the
       workaround for this function specify the negated form:
!      'no-fix-cortex-a53-835769'.  This corresponds to the behavior of
!      the command-line options '-mfix-cortex-a53-835769' and
!      '-mno-fix-cortex-a53-835769'.
  
! 'cmodel='
       Indicates that code should be generated for a particular code model
       for this function.  The behavior and permissible arguments are the
!      same as for the command-line option '-mcmodel='.
  
! 'strict-align'
! 'no-strict-align'
!      'strict-align' indicates that the compiler should not assume that
       unaligned memory references are handled by the system.  To allow
       the compiler to assume that aligned memory references are handled
!      by the system, the inverse attribute 'no-strict-align' can be
       specified.  The behavior is same as for the command-line option
!      '-mstrict-align' and '-mno-strict-align'.
  
! 'omit-leaf-frame-pointer'
       Indicates that the frame pointer should be omitted for a leaf
       function call.  To keep the frame pointer, the inverse attribute
!      'no-omit-leaf-frame-pointer' can be specified.  These attributes
       have the same behavior as the command-line options
!      '-momit-leaf-frame-pointer' and '-mno-omit-leaf-frame-pointer'.
  
! 'tls-dialect='
       Specifies the TLS dialect to use for this function.  The behavior
       and permissible arguments are the same as for the command-line
!      option '-mtls-dialect='.
  
! 'arch='
       Specifies the architecture version and architectural extensions to
       use for this function.  The behavior and permissible arguments are
!      the same as for the '-march=' command-line option.
  
! 'tune='
       Specifies the core for which to tune the performance of this
       function.  The behavior and permissible arguments are the same as
!      for the '-mtune=' command-line option.
  
! 'cpu='
       Specifies the core for which to tune the performance of this
       function and also whose architectural features to use.  The
!      behavior and valid arguments are the same as for the '-mcpu='
       command-line option.
  
! 'sign-return-address'
       Select the function scope on which return address signing will be
       applied.  The behavior and permissible arguments are the same as
!      for the command-line option '-msign-return-address='.  The default
!      value is 'none'.  This attribute is deprecated.  The
!      'branch-protection' attribute should be used instead.
  
! 'branch-protection'
       Select the function scope on which branch protection will be
       applied.  The behavior and permissible arguments are the same as
!      for the command-line option '-mbranch-protection='.  The default
!      value is 'none'.
  
! 'outline-atomics'
       Enable or disable calls to out-of-line helpers to implement atomic
       operations.  This corresponds to the behavior of the command-line
!      options '-moutline-atomics' and '-mno-outline-atomics'.
  
! 'indirect_return'
!      The 'indirect_return' attribute can be applied to a function type
       to indicate that the function may return via an indirect branch
       instead of via a normal return instruction.  For example, this can
       be true of functions that implement manual context switching
!      between user space threads, such as the POSIX 'swapcontext'
!      function.  This attribute adds a 'BTI J' instruction when BTI is
!      enabled e.g.  via '-mbranch-protection'.
  
   The above target attributes can be specified as follows:
  
--- 39113,39201 ----
  similar command-line options (*note AArch64 Options::), but on a
  per-function basis.
  
! â€˜general-regs-onlyâ€™
       Indicates that no floating-point or Advanced SIMD registers should
       be used when generating code for this function.  If the function
       explicitly uses floating-point code, then the compiler gives an
       error.  This is the same behavior as that of the command-line
!      option â€˜-mgeneral-regs-onlyâ€™.
  
! â€˜fix-cortex-a53-835769â€™
       Indicates that the workaround for the Cortex-A53 erratum 835769
       should be applied to this function.  To explicitly disable the
       workaround for this function specify the negated form:
!      â€˜no-fix-cortex-a53-835769â€™.  This corresponds to the behavior of
!      the command-line options â€˜-mfix-cortex-a53-835769â€™ and
!      â€˜-mno-fix-cortex-a53-835769â€™.
  
! â€˜cmodel=â€™
       Indicates that code should be generated for a particular code model
       for this function.  The behavior and permissible arguments are the
!      same as for the command-line option â€˜-mcmodel=â€™.
  
! â€˜strict-alignâ€™
! â€˜no-strict-alignâ€™
!      â€˜strict-alignâ€™ indicates that the compiler should not assume that
       unaligned memory references are handled by the system.  To allow
       the compiler to assume that aligned memory references are handled
!      by the system, the inverse attribute â€˜no-strict-alignâ€™ can be
       specified.  The behavior is same as for the command-line option
!      â€˜-mstrict-alignâ€™ and â€˜-mno-strict-alignâ€™.
  
! â€˜omit-leaf-frame-pointerâ€™
       Indicates that the frame pointer should be omitted for a leaf
       function call.  To keep the frame pointer, the inverse attribute
!      â€˜no-omit-leaf-frame-pointerâ€™ can be specified.  These attributes
       have the same behavior as the command-line options
!      â€˜-momit-leaf-frame-pointerâ€™ and â€˜-mno-omit-leaf-frame-pointerâ€™.
  
! â€˜tls-dialect=â€™
       Specifies the TLS dialect to use for this function.  The behavior
       and permissible arguments are the same as for the command-line
!      option â€˜-mtls-dialect=â€™.
  
! â€˜arch=â€™
       Specifies the architecture version and architectural extensions to
       use for this function.  The behavior and permissible arguments are
!      the same as for the â€˜-march=â€™ command-line option.
  
! â€˜tune=â€™
       Specifies the core for which to tune the performance of this
       function.  The behavior and permissible arguments are the same as
!      for the â€˜-mtune=â€™ command-line option.
  
! â€˜cpu=â€™
       Specifies the core for which to tune the performance of this
       function and also whose architectural features to use.  The
!      behavior and valid arguments are the same as for the â€˜-mcpu=â€™
       command-line option.
  
! â€˜sign-return-addressâ€™
       Select the function scope on which return address signing will be
       applied.  The behavior and permissible arguments are the same as
!      for the command-line option â€˜-msign-return-address=â€™.  The default
!      value is â€˜noneâ€™.  This attribute is deprecated.  The
!      â€˜branch-protectionâ€™ attribute should be used instead.
  
! â€˜branch-protectionâ€™
       Select the function scope on which branch protection will be
       applied.  The behavior and permissible arguments are the same as
!      for the command-line option â€˜-mbranch-protection=â€™.  The default
!      value is â€˜noneâ€™.
  
! â€˜outline-atomicsâ€™
       Enable or disable calls to out-of-line helpers to implement atomic
       operations.  This corresponds to the behavior of the command-line
!      options â€˜-moutline-atomicsâ€™ and â€˜-mno-outline-atomicsâ€™.
  
! â€˜indirect_returnâ€™
!      The â€˜indirect_returnâ€™ attribute can be applied to a function type
       to indicate that the function may return via an indirect branch
       instead of via a normal return instruction.  For example, this can
       be true of functions that implement manual context switching
!      between user space threads, such as the POSIX â€˜swapcontextâ€™
!      function.  This attribute adds a â€˜BTI Jâ€™ instruction when BTI is
!      enabled e.g.  via â€˜-mbranch-protectionâ€™.
  
   The above target attributes can be specified as follows:
  
*************** per-function basis.
*** 39198,39204 ****
         return a + 5;
       }
  
!  where 'ATTR-STRING' is one of the attribute strings specified above.
  
   Additionally, the architectural extension string may be specified on
  its own.  This can be used to turn on and off particular architectural
--- 39206,39212 ----
         return a + 5;
       }
  
!  where â€˜ATTR-STRINGâ€™ is one of the attribute strings specified above.
  
   Additionally, the architectural extension string may be specified on
  its own.  This can be used to turn on and off particular architectural
*************** or core.  Example:
*** 39212,39220 ****
         return a + 5;
       }
  
!  In this example 'target("+crc+nocrypto")' enables the 'crc' extension
! and disables the 'crypto' extension for the function 'foo' without
! modifying an existing '-march=' or '-mcpu' option.
  
   Multiple target function attributes can be specified by separating them
  with a comma.  For example:
--- 39220,39228 ----
         return a + 5;
       }
  
!  In this example â€˜target("+crc+nocrypto")â€™ enables the â€˜crcâ€™ extension
! and disables the â€˜cryptoâ€™ extension for the function â€˜fooâ€™ without
! modifying an existing â€˜-march=â€™ or â€˜-mcpuâ€™ option.
  
   Multiple target function attributes can be specified by separating them
  with a comma.  For example:
*************** with a comma.  For example:
*** 39225,39232 ****
         return a + 5;
       }
  
!  is valid and compiles function 'foo' for ARMv8-A with 'crc' and
! 'crypto' extensions and tunes it for 'cortex-a53'.
  
  Inlining rules
  ..............
--- 39233,39240 ----
         return a + 5;
       }
  
!  is valid and compiles function â€˜fooâ€™ for ARMv8-A with â€˜crcâ€™ and
! â€˜cryptoâ€™ extensions and tunes it for â€˜cortex-a53â€™.
  
  Inlining rules
  ..............
*************** target options can affect function inlin
*** 39237,39257 ****
  
   In particular, a caller function can inline a callee function only if
  the architectural features available to the callee are a subset of the
! features available to the caller.  For example: A function 'foo'
! compiled with '-march=armv8-a+crc', or tagged with the equivalent
! 'arch=armv8-a+crc' attribute, can inline a function 'bar' compiled with
! '-march=armv8-a+nocrc' because the all the architectural features that
! function 'bar' requires are available to function 'foo'.  Conversely,
! function 'bar' cannot inline function 'foo'.
  
!  Additionally inlining a function compiled with '-mstrict-align' into a
! function compiled without '-mstrict-align' is not allowed.  However,
! inlining a function compiled without '-mstrict-align' into a function
! compiled with '-mstrict-align' is allowed.
  
!  Note that CPU tuning options and attributes such as the '-mcpu=',
! '-mtune=' do not inhibit inlining unless the CPU specified by the
! '-mcpu=' option or the 'cpu=' attribute conflicts with the architectural
  feature rules specified above.
  
  
--- 39245,39265 ----
  
   In particular, a caller function can inline a callee function only if
  the architectural features available to the callee are a subset of the
! features available to the caller.  For example: A function â€˜fooâ€™
! compiled with â€˜-march=armv8-a+crcâ€™, or tagged with the equivalent
! â€˜arch=armv8-a+crcâ€™ attribute, can inline a function â€˜barâ€™ compiled with
! â€˜-march=armv8-a+nocrcâ€™ because the all the architectural features that
! function â€˜barâ€™ requires are available to function â€˜fooâ€™.  Conversely,
! function â€˜barâ€™ cannot inline function â€˜fooâ€™.
  
!  Additionally inlining a function compiled with â€˜-mstrict-alignâ€™ into a
! function compiled without â€˜-mstrict-alignâ€™ is not allowed.  However,
! inlining a function compiled without â€˜-mstrict-alignâ€™ into a function
! compiled with â€˜-mstrict-alignâ€™ is allowed.
  
!  Note that CPU tuning options and attributes such as the â€˜-mcpu=â€™,
! â€˜-mtune=â€™ do not inhibit inlining unless the CPU specified by the
! â€˜-mcpu=â€™ option or the â€˜cpu=â€™ attribute conflicts with the architectural
  feature rules specified above.
  
  
*************** File: gcc.info,  Node: AMD GCN Function
*** 39262,39274 ****
  
  These function attributes are supported by the AMD GCN back end:
  
! 'amdgpu_hsa_kernel'
       This attribute indicates that the corresponding function should be
       compiled as a kernel function, that is an entry point that can be
       invoked from the host via the HSA runtime library.  By default
       functions are only callable only from other GCN functions.
  
!      This attribute is implicitly applied to any function named 'main',
       using default parameters.
  
       Kernel functions may return an integer value, which will be written
--- 39270,39282 ----
  
  These function attributes are supported by the AMD GCN back end:
  
! â€˜amdgpu_hsa_kernelâ€™
       This attribute indicates that the corresponding function should be
       compiled as a kernel function, that is an entry point that can be
       invoked from the host via the HSA runtime library.  By default
       functions are only callable only from other GCN functions.
  
!      This attribute is implicitly applied to any function named â€˜mainâ€™,
       using default parameters.
  
       Kernel functions may return an integer value, which will be written
*************** These function attributes are supported
*** 39280,39346 ****
       Enabling other options may break assumptions in the compiler and/or
       run-time libraries.
  
!      'private_segment_buffer'
!           Set 'enable_sgpr_private_segment_buffer' flag.  Always on
            (required to locate the stack).
  
!      'dispatch_ptr'
!           Set 'enable_sgpr_dispatch_ptr' flag.  Always on (required to
            locate the launch dimensions).
  
!      'queue_ptr'
!           Set 'enable_sgpr_queue_ptr' flag.  Always on (required to
            convert address spaces).
  
!      'kernarg_segment_ptr'
!           Set 'enable_sgpr_kernarg_segment_ptr' flag.  Always on
            (required to locate the kernel arguments, "kernargs").
  
!      'dispatch_id'
!           Set 'enable_sgpr_dispatch_id' flag.
  
!      'flat_scratch_init'
!           Set 'enable_sgpr_flat_scratch_init' flag.
  
!      'private_segment_size'
!           Set 'enable_sgpr_private_segment_size' flag.
  
!      'grid_workgroup_count_X'
!           Set 'enable_sgpr_grid_workgroup_count_x' flag.  Always on
            (required to use OpenACC/OpenMP).
  
!      'grid_workgroup_count_Y'
!           Set 'enable_sgpr_grid_workgroup_count_y' flag.
  
!      'grid_workgroup_count_Z'
!           Set 'enable_sgpr_grid_workgroup_count_z' flag.
  
!      'workgroup_id_X'
!           Set 'enable_sgpr_workgroup_id_x' flag.
  
!      'workgroup_id_Y'
!           Set 'enable_sgpr_workgroup_id_y' flag.
  
!      'workgroup_id_Z'
!           Set 'enable_sgpr_workgroup_id_z' flag.
  
!      'workgroup_info'
!           Set 'enable_sgpr_workgroup_info' flag.
  
!      'private_segment_wave_offset'
!           Set 'enable_sgpr_private_segment_wave_byte_offset' flag.
            Always on (required to locate the stack).
  
!      'work_item_id_X'
!           Set 'enable_vgpr_workitem_id' parameter.  Always on (can't be
            disabled).
  
!      'work_item_id_Y'
!           Set 'enable_vgpr_workitem_id' parameter.  Always on (required
            to enable vectorization.)
  
!      'work_item_id_Z'
!           Set 'enable_vgpr_workitem_id' parameter.  Always on (required
            to use OpenACC/OpenMP).
  
  
--- 39288,39354 ----
       Enabling other options may break assumptions in the compiler and/or
       run-time libraries.
  
!      â€˜private_segment_bufferâ€™
!           Set â€˜enable_sgpr_private_segment_bufferâ€™ flag.  Always on
            (required to locate the stack).
  
!      â€˜dispatch_ptrâ€™
!           Set â€˜enable_sgpr_dispatch_ptrâ€™ flag.  Always on (required to
            locate the launch dimensions).
  
!      â€˜queue_ptrâ€™
!           Set â€˜enable_sgpr_queue_ptrâ€™ flag.  Always on (required to
            convert address spaces).
  
!      â€˜kernarg_segment_ptrâ€™
!           Set â€˜enable_sgpr_kernarg_segment_ptrâ€™ flag.  Always on
            (required to locate the kernel arguments, "kernargs").
  
!      â€˜dispatch_idâ€™
!           Set â€˜enable_sgpr_dispatch_idâ€™ flag.
  
!      â€˜flat_scratch_initâ€™
!           Set â€˜enable_sgpr_flat_scratch_initâ€™ flag.
  
!      â€˜private_segment_sizeâ€™
!           Set â€˜enable_sgpr_private_segment_sizeâ€™ flag.
  
!      â€˜grid_workgroup_count_Xâ€™
!           Set â€˜enable_sgpr_grid_workgroup_count_xâ€™ flag.  Always on
            (required to use OpenACC/OpenMP).
  
!      â€˜grid_workgroup_count_Yâ€™
!           Set â€˜enable_sgpr_grid_workgroup_count_yâ€™ flag.
  
!      â€˜grid_workgroup_count_Zâ€™
!           Set â€˜enable_sgpr_grid_workgroup_count_zâ€™ flag.
  
!      â€˜workgroup_id_Xâ€™
!           Set â€˜enable_sgpr_workgroup_id_xâ€™ flag.
  
!      â€˜workgroup_id_Yâ€™
!           Set â€˜enable_sgpr_workgroup_id_yâ€™ flag.
  
!      â€˜workgroup_id_Zâ€™
!           Set â€˜enable_sgpr_workgroup_id_zâ€™ flag.
  
!      â€˜workgroup_infoâ€™
!           Set â€˜enable_sgpr_workgroup_infoâ€™ flag.
  
!      â€˜private_segment_wave_offsetâ€™
!           Set â€˜enable_sgpr_private_segment_wave_byte_offsetâ€™ flag.
            Always on (required to locate the stack).
  
!      â€˜work_item_id_Xâ€™
!           Set â€˜enable_vgpr_workitem_idâ€™ parameter.  Always on (can't be
            disabled).
  
!      â€˜work_item_id_Yâ€™
!           Set â€˜enable_vgpr_workitem_idâ€™ parameter.  Always on (required
            to enable vectorization.)
  
!      â€˜work_item_id_Zâ€™
!           Set â€˜enable_vgpr_workitem_idâ€™ parameter.  Always on (required
            to use OpenACC/OpenMP).
  
  
*************** File: gcc.info,  Node: ARC Function Attr
*** 39351,39357 ****
  
  These function attributes are supported by the ARC back end:
  
! 'interrupt'
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
--- 39359,39365 ----
  
  These function attributes are supported by the ARC back end:
  
! â€˜interruptâ€™
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
*************** These function attributes are supported
*** 39362,39413 ****
  
            void f () __attribute__ ((interrupt ("ilink1")));
  
!      Permissible values for this parameter are: 'ilink1' and 'ilink2'
!      for ARCv1 architecture, and 'ilink' and 'firq' for ARCv2
       architecture.
  
! 'long_call'
! 'medium_call'
! 'short_call'
       These attributes specify how a particular function is called.
!      These attributes override the '-mlong-calls' and '-mmedium-calls'
!      (*note ARC Options::) command-line switches and '#pragma
!      long_calls' settings.
  
!      For ARC, a function marked with the 'long_call' attribute is always
       called using register-indirect jump-and-link instructions, thereby
       enabling the called function to be placed anywhere within the
!      32-bit address space.  A function marked with the 'medium_call'
       attribute will always be close enough to be called with an
       unconditional branch-and-link instruction, which has a 25-bit
!      offset from the call site.  A function marked with the 'short_call'
       attribute will always be close enough to be called with a
       conditional branch-and-link instruction, which has a 21-bit offset
       from the call site.
  
! 'jli_always'
!      Forces a particular function to be called using 'jli' instruction.
!      The 'jli' instruction makes use of a table stored into '.jlitab'
       section, which holds the location of the functions which are
       addressed using this instruction.
  
! 'jli_fixed'
       Identical like the above one, but the location of the function in
!      the 'jli' table is known and given as an attribute parameter.
  
! 'secure_call'
       This attribute allows one to mark secure-code functions that are
       callable from normal mode.  The location of the secure call
!      function into the 'sjli' table needs to be passed as argument.
  
! 'naked'
       This attribute allows the compiler to construct the requisite
       function declaration, while allowing the body of the function to be
       assembly code.  The specified function will not have
       prologue/epilogue sequences generated by the compiler.  Only basic
!      'asm' statements can safely be included in naked functions (*note
!      Basic Asm::).  While using extended 'asm' or a mixture of basic
!      'asm' and C code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
  
--- 39370,39421 ----
  
            void f () __attribute__ ((interrupt ("ilink1")));
  
!      Permissible values for this parameter are: â€˜ilink1â€™ and â€˜ilink2â€™
!      for ARCv1 architecture, and â€˜ilinkâ€™ and â€˜firqâ€™ for ARCv2
       architecture.
  
! â€˜long_callâ€™
! â€˜medium_callâ€™
! â€˜short_callâ€™
       These attributes specify how a particular function is called.
!      These attributes override the â€˜-mlong-callsâ€™ and â€˜-mmedium-callsâ€™
!      (*note ARC Options::) command-line switches and â€˜#pragma
!      long_callsâ€™ settings.
  
!      For ARC, a function marked with the â€˜long_callâ€™ attribute is always
       called using register-indirect jump-and-link instructions, thereby
       enabling the called function to be placed anywhere within the
!      32-bit address space.  A function marked with the â€˜medium_callâ€™
       attribute will always be close enough to be called with an
       unconditional branch-and-link instruction, which has a 25-bit
!      offset from the call site.  A function marked with the â€˜short_callâ€™
       attribute will always be close enough to be called with a
       conditional branch-and-link instruction, which has a 21-bit offset
       from the call site.
  
! â€˜jli_alwaysâ€™
!      Forces a particular function to be called using â€˜jliâ€™ instruction.
!      The â€˜jliâ€™ instruction makes use of a table stored into â€˜.jlitabâ€™
       section, which holds the location of the functions which are
       addressed using this instruction.
  
! â€˜jli_fixedâ€™
       Identical like the above one, but the location of the function in
!      the â€˜jliâ€™ table is known and given as an attribute parameter.
  
! â€˜secure_callâ€™
       This attribute allows one to mark secure-code functions that are
       callable from normal mode.  The location of the secure call
!      function into the â€˜sjliâ€™ table needs to be passed as argument.
  
! â€˜nakedâ€™
       This attribute allows the compiler to construct the requisite
       function declaration, while allowing the body of the function to be
       assembly code.  The specified function will not have
       prologue/epilogue sequences generated by the compiler.  Only basic
!      â€˜asmâ€™ statements can safely be included in naked functions (*note
!      Basic Asm::).  While using extended â€˜asmâ€™ or a mixture of basic
!      â€˜asmâ€™ and C code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
  
*************** File: gcc.info,  Node: ARM Function Attr
*** 39418,39431 ****
  
  These function attributes are supported for ARM targets:
  
! 'general-regs-only'
       Indicates that no floating-point or Advanced SIMD registers should
       be used when generating code for this function.  If the function
       explicitly uses floating-point code, then the compiler gives an
       error.  This is the same behavior as that of the command-line
!      option '-mgeneral-regs-only'.
  
! 'interrupt'
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
--- 39426,39439 ----
  
  These function attributes are supported for ARM targets:
  
! â€˜general-regs-onlyâ€™
       Indicates that no floating-point or Advanced SIMD registers should
       be used when generating code for this function.  If the function
       explicitly uses floating-point code, then the compiler gives an
       error.  This is the same behavior as that of the command-line
!      option â€˜-mgeneral-regs-onlyâ€™.
  
! â€˜interruptâ€™
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
*************** These function attributes are supported
*** 39436,39516 ****
  
            void f () __attribute__ ((interrupt ("IRQ")));
  
!      Permissible values for this parameter are: 'IRQ', 'FIQ', 'SWI',
!      'ABORT' and 'UNDEF'.
  
       On ARMv7-M the interrupt type is ignored, and the attribute means
       the function may be called with a word-aligned stack pointer.
  
! 'isr'
       Use this attribute on ARM to write Interrupt Service Routines.
!      This is an alias to the 'interrupt' attribute above.
  
! 'long_call'
! 'short_call'
       These attributes specify how a particular function is called.
!      These attributes override the '-mlong-calls' (*note ARM Options::)
!      command-line switch and '#pragma long_calls' settings.  For ARM,
!      the 'long_call' attribute indicates that the function might be far
       away from the call site and require a different (more expensive)
!      calling sequence.  The 'short_call' attribute always places the
!      offset to the function from the call site into the 'BL' instruction
       directly.
  
! 'naked'
       This attribute allows the compiler to construct the requisite
       function declaration, while allowing the body of the function to be
       assembly code.  The specified function will not have
       prologue/epilogue sequences generated by the compiler.  Only basic
!      'asm' statements can safely be included in naked functions (*note
!      Basic Asm::).  While using extended 'asm' or a mixture of basic
!      'asm' and C code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
! 'pcs'
  
!      The 'pcs' attribute can be used to control the calling convention
       used for a function on ARM. The attribute takes an argument that
       specifies the calling convention to use.
  
       When compiling using the AAPCS ABI (or a variant of it) then valid
!      values for the argument are '"aapcs"' and '"aapcs-vfp"'.  In order
!      to use a variant other than '"aapcs"' then the compiler must be
       permitted to use the appropriate co-processor registers (i.e., the
!      VFP registers must be available in order to use '"aapcs-vfp"').
       For example,
  
            /* Argument passed in r0, and result returned in r0+r1.  */
            double f2d (float) __attribute__((pcs("aapcs")));
  
!      Variadic functions always use the '"aapcs"' calling convention and
       the compiler rejects attempts to specify an alternative.
  
! 'target (OPTIONS)'
       As discussed in *note Common Function Attributes::, this attribute
       allows specification of target-specific compilation options.
  
       On ARM, the following options are allowed:
  
!      'thumb'
            Force code generation in the Thumb (T16/T32) ISA, depending on
            the architecture level.
  
!      'arm'
            Force code generation in the ARM (A32) ISA.
  
            Functions from different modes can be inlined in the caller's
            mode.
  
!      'fpu='
            Specifies the fpu for which to tune the performance of this
            function.  The behavior and permissible arguments are the same
!           as for the '-mfpu=' command-line option.
  
!      'arch='
            Specifies the architecture version and architectural
            extensions to use for this function.  The behavior and
!           permissible arguments are the same as for the '-march='
            command-line option.
  
            The above target attributes can be specified as follows:
--- 39444,39524 ----
  
            void f () __attribute__ ((interrupt ("IRQ")));
  
!      Permissible values for this parameter are: â€˜IRQâ€™, â€˜FIQâ€™, â€˜SWIâ€™,
!      â€˜ABORTâ€™ and â€˜UNDEFâ€™.
  
       On ARMv7-M the interrupt type is ignored, and the attribute means
       the function may be called with a word-aligned stack pointer.
  
! â€˜isrâ€™
       Use this attribute on ARM to write Interrupt Service Routines.
!      This is an alias to the â€˜interruptâ€™ attribute above.
  
! â€˜long_callâ€™
! â€˜short_callâ€™
       These attributes specify how a particular function is called.
!      These attributes override the â€˜-mlong-callsâ€™ (*note ARM Options::)
!      command-line switch and â€˜#pragma long_callsâ€™ settings.  For ARM,
!      the â€˜long_callâ€™ attribute indicates that the function might be far
       away from the call site and require a different (more expensive)
!      calling sequence.  The â€˜short_callâ€™ attribute always places the
!      offset to the function from the call site into the â€˜BLâ€™ instruction
       directly.
  
! â€˜nakedâ€™
       This attribute allows the compiler to construct the requisite
       function declaration, while allowing the body of the function to be
       assembly code.  The specified function will not have
       prologue/epilogue sequences generated by the compiler.  Only basic
!      â€˜asmâ€™ statements can safely be included in naked functions (*note
!      Basic Asm::).  While using extended â€˜asmâ€™ or a mixture of basic
!      â€˜asmâ€™ and C code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
! â€˜pcsâ€™
  
!      The â€˜pcsâ€™ attribute can be used to control the calling convention
       used for a function on ARM. The attribute takes an argument that
       specifies the calling convention to use.
  
       When compiling using the AAPCS ABI (or a variant of it) then valid
!      values for the argument are â€˜"aapcs"â€™ and â€˜"aapcs-vfp"â€™.  In order
!      to use a variant other than â€˜"aapcs"â€™ then the compiler must be
       permitted to use the appropriate co-processor registers (i.e., the
!      VFP registers must be available in order to use â€˜"aapcs-vfp"â€™).
       For example,
  
            /* Argument passed in r0, and result returned in r0+r1.  */
            double f2d (float) __attribute__((pcs("aapcs")));
  
!      Variadic functions always use the â€˜"aapcs"â€™ calling convention and
       the compiler rejects attempts to specify an alternative.
  
! â€˜target (OPTIONS)â€™
       As discussed in *note Common Function Attributes::, this attribute
       allows specification of target-specific compilation options.
  
       On ARM, the following options are allowed:
  
!      â€˜thumbâ€™
            Force code generation in the Thumb (T16/T32) ISA, depending on
            the architecture level.
  
!      â€˜armâ€™
            Force code generation in the ARM (A32) ISA.
  
            Functions from different modes can be inlined in the caller's
            mode.
  
!      â€˜fpu=â€™
            Specifies the fpu for which to tune the performance of this
            function.  The behavior and permissible arguments are the same
!           as for the â€˜-mfpu=â€™ command-line option.
  
!      â€˜arch=â€™
            Specifies the architecture version and architectural
            extensions to use for this function.  The behavior and
!           permissible arguments are the same as for the â€˜-march=â€™
            command-line option.
  
            The above target attributes can be specified as follows:
*************** These function attributes are supported
*** 39534,39542 ****
                   return a + 5;
                 }
  
!           In this example 'target("+crc+nocrypto")' enables the 'crc'
!           extension and disables the 'crypto' extension for the function
!           'foo' without modifying an existing '-march=' or '-mcpu'
            option.
  
  
--- 39542,39550 ----
                   return a + 5;
                 }
  
!           In this example â€˜target("+crc+nocrypto")â€™ enables the â€˜crcâ€™
!           extension and disables the â€˜cryptoâ€™ extension for the function
!           â€˜fooâ€™ without modifying an existing â€˜-march=â€™ or â€˜-mcpuâ€™
            option.
  
  
*************** File: gcc.info,  Node: AVR Function Attr
*** 39547,39554 ****
  
  These function attributes are supported by the AVR back end:
  
! 'signal'
! 'interrupt'
       The function is an interrupt service routine (ISR). The compiler
       generates function entry and exit sequences suitable for use in an
       interrupt handler when one of the attributes is present.
--- 39555,39562 ----
  
  These function attributes are supported by the AVR back end:
  
! â€˜signalâ€™
! â€˜interruptâ€™
       The function is an interrupt service routine (ISR). The compiler
       generates function entry and exit sequences suitable for use in an
       interrupt handler when one of the attributes is present.
*************** These function attributes are supported
*** 39556,39573 ****
       The AVR hardware globally disables interrupts when an interrupt is
       executed.
  
!         * ISRs with the 'signal' attribute do not re-enable interrupts.
!           It is save to enable interrupts in a 'signal' handler.  This
            "save" only applies to the code generated by the compiler and
            not to the IRQ layout of the application which is
            responsibility of the application.
  
!         * ISRs with the 'interrupt' attribute re-enable interrupts.  The
!           first instruction of the routine is a 'SEI' instruction to
            globally enable interrupts.
  
       The recommended way to use these attributes is by means of the
!      'ISR' macro provided by 'avr/interrupt.h' from AVR-LibC:
            #include <avr/interrupt.h>
  
            ISR (INT0_vect) // Uses the "signal" attribute.
--- 39564,39581 ----
       The AVR hardware globally disables interrupts when an interrupt is
       executed.
  
!         â€¢ ISRs with the â€˜signalâ€™ attribute do not re-enable interrupts.
!           It is save to enable interrupts in a â€˜signalâ€™ handler.  This
            "save" only applies to the code generated by the compiler and
            not to the IRQ layout of the application which is
            responsibility of the application.
  
!         â€¢ ISRs with the â€˜interruptâ€™ attribute re-enable interrupts.  The
!           first instruction of the routine is a â€˜SEIâ€™ instruction to
            globally enable interrupts.
  
       The recommended way to use these attributes is by means of the
!      â€˜ISRâ€™ macro provided by â€˜avr/interrupt.hâ€™ from AVR-LibC:
            #include <avr/interrupt.h>
  
            ISR (INT0_vect) // Uses the "signal" attribute.
*************** These function attributes are supported
*** 39580,39592 ****
                // Code
            }
  
!      When both 'signal' and 'interrupt' are specified for the same
!      function, then 'signal' is silently ignored.
  
! 'signal(NUM)'
! 'interrupt(NUM)'
  
!      Similar to the 'signal' resp.  'interrupt' attribute without
       argument, but the IRQ number is supplied as an argument NUM to the
       attribute, rather than providing the ISR name itself as the
       function name:
--- 39588,39600 ----
                // Code
            }
  
!      When both â€˜signalâ€™ and â€˜interruptâ€™ are specified for the same
!      function, then â€˜signalâ€™ is silently ignored.
  
! â€˜signal(NUM)â€™
! â€˜interrupt(NUM)â€™
  
!      Similar to the â€˜signalâ€™ resp.  â€˜interruptâ€™ attribute without
       argument, but the IRQ number is supplied as an argument NUM to the
       attribute, rather than providing the ISR name itself as the
       function name:
*************** These function attributes are supported
*** 39599,39605 ****
  
       Notice that the handler function needs not to be externally
       visible.  The recommended way to use these attributes is by means
!      of the 'ISR_N' macro provided by 'avr/interrupt.h' from AVR-LibC:
  
            #include <avr/interrupt.h>
  
--- 39607,39613 ----
  
       Notice that the handler function needs not to be externally
       visible.  The recommended way to use these attributes is by means
!      of the â€˜ISR_Nâ€™ macro provided by â€˜avr/interrupt.hâ€™ from AVR-LibC:
  
            #include <avr/interrupt.h>
  
*************** These function attributes are supported
*** 39615,39648 ****
                // Code
            }
  
!      'ISR_N' can be specified more than once, in which case several
       interrupt vectors are pointing to the same handler function.  This
!      is similar to the 'ISR_ALIASOF' macro provided by AVR-LibC, but
!      without the overhead introduced by 'ISR_ALIASOF'.
  
! 'noblock'
  
!      This attribute can be used together with the 'signal' attribute to
       indicate that an interrupt service routine should start with a
!      'SEI' instruction to globally re-enable interrupts.  Using
!      attributes 'signal' and 'noblock' together has the same effect like
!      using the 'interrupt' attribute.  Using the 'noblock' attribute
!      without 'signal' has no effect.
  
! 'naked'
       This attribute allows the compiler to construct the requisite
       function declaration, while allowing the body of the function to be
       assembly code.  The specified function will not have
       prologue/epilogue sequences generated by the compiler.  Only basic
!      'asm' statements can safely be included in naked functions (*note
!      Basic Asm::).  While using extended 'asm' or a mixture of basic
!      'asm' and C code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
! 'no_gccisr'
!      Do not use the '__gcc_isr' pseudo instruction
       (https://sourceware.org/binutils/docs/as/AVR-Pseudo-Instructions.html)
!      in a function with the 'interrupt' or 'signal' attribute aka.
       interrupt service routine (ISR). Use this attribute if the preamble
       of the ISR prologue should always read
            push  __zero_reg__
--- 39623,39656 ----
                // Code
            }
  
!      â€˜ISR_Nâ€™ can be specified more than once, in which case several
       interrupt vectors are pointing to the same handler function.  This
!      is similar to the â€˜ISR_ALIASOFâ€™ macro provided by AVR-LibC, but
!      without the overhead introduced by â€˜ISR_ALIASOFâ€™.
  
! â€˜noblockâ€™
  
!      This attribute can be used together with the â€˜signalâ€™ attribute to
       indicate that an interrupt service routine should start with a
!      â€˜SEIâ€™ instruction to globally re-enable interrupts.  Using
!      attributes â€˜signalâ€™ and â€˜noblockâ€™ together has the same effect like
!      using the â€˜interruptâ€™ attribute.  Using the â€˜noblockâ€™ attribute
!      without â€˜signalâ€™ has no effect.
  
! â€˜nakedâ€™
       This attribute allows the compiler to construct the requisite
       function declaration, while allowing the body of the function to be
       assembly code.  The specified function will not have
       prologue/epilogue sequences generated by the compiler.  Only basic
!      â€˜asmâ€™ statements can safely be included in naked functions (*note
!      Basic Asm::).  While using extended â€˜asmâ€™ or a mixture of basic
!      â€˜asmâ€™ and C code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
! â€˜no_gccisrâ€™
!      Do not use the â€˜__gcc_isrâ€™ pseudo instruction
       (https://sourceware.org/binutils/docs/as/AVR-Pseudo-Instructions.html)
!      in a function with the â€˜interruptâ€™ or â€˜signalâ€™ attribute aka.
       interrupt service routine (ISR). Use this attribute if the preamble
       of the ISR prologue should always read
            push  __zero_reg__
*************** These function attributes are supported
*** 39654,39690 ****
       whether the mentioned registers are actually used in the ISR or
       not.  Situations where you might want to use this attribute
       include:
!         * Code that (effectively) clobbers bits of 'SREG' other than the
!           'I'-flag by writing to the memory location of 'SREG'.
!         * Code that uses inline assembler to jump to a different
            function which expects (parts of) the prologue code as
            outlined above to be present.
!      To disable '__gcc_isr' generation for the whole compilation unit,
!      there is option '-mno-gas-isr-prologues', *note AVR Options::.
  
! 'OS_main'
! 'OS_task'
!      On AVR, functions with the 'OS_main' or 'OS_task' attribute do not
       save/restore any call-saved register in their prologue/epilogue.
  
!      The 'OS_main' attribute can be used when there _is guarantee_ that
       interrupts are disabled at the time when the function is entered.
       This saves resources when the stack pointer has to be changed to
       set up a frame for local variables.
  
!      The 'OS_task' attribute can be used when there is _no guarantee_
       that interrupts are disabled at that time when the function is
       entered like for, e.g.  task functions in a multi-threading
       operating system.  In that case, changing the stack pointer
       register is guarded by save/clear/restore of the global interrupt
       enable flag.
  
!      The differences to the 'naked' function attribute are:
!         * 'naked' functions do not have a return instruction whereas
!           'OS_main' and 'OS_task' functions have a 'RET' or 'RETI'
            return instruction.
!         * 'naked' functions do not set up a frame for local variables or
!           a frame pointer whereas 'OS_main' and 'OS_task' do this as
            needed.
  
  
--- 39662,39698 ----
       whether the mentioned registers are actually used in the ISR or
       not.  Situations where you might want to use this attribute
       include:
!         â€¢ Code that (effectively) clobbers bits of â€˜SREGâ€™ other than the
!           â€˜Iâ€™-flag by writing to the memory location of â€˜SREGâ€™.
!         â€¢ Code that uses inline assembler to jump to a different
            function which expects (parts of) the prologue code as
            outlined above to be present.
!      To disable â€˜__gcc_isrâ€™ generation for the whole compilation unit,
!      there is option â€˜-mno-gas-isr-prologuesâ€™, *note AVR Options::.
  
! â€˜OS_mainâ€™
! â€˜OS_taskâ€™
!      On AVR, functions with the â€˜OS_mainâ€™ or â€˜OS_taskâ€™ attribute do not
       save/restore any call-saved register in their prologue/epilogue.
  
!      The â€˜OS_mainâ€™ attribute can be used when there _is guarantee_ that
       interrupts are disabled at the time when the function is entered.
       This saves resources when the stack pointer has to be changed to
       set up a frame for local variables.
  
!      The â€˜OS_taskâ€™ attribute can be used when there is _no guarantee_
       that interrupts are disabled at that time when the function is
       entered like for, e.g.  task functions in a multi-threading
       operating system.  In that case, changing the stack pointer
       register is guarded by save/clear/restore of the global interrupt
       enable flag.
  
!      The differences to the â€˜nakedâ€™ function attribute are:
!         â€¢ â€˜nakedâ€™ functions do not have a return instruction whereas
!           â€˜OS_mainâ€™ and â€˜OS_taskâ€™ functions have a â€˜RETâ€™ or â€˜RETIâ€™
            return instruction.
!         â€¢ â€˜nakedâ€™ functions do not set up a frame for local variables or
!           a frame pointer whereas â€˜OS_mainâ€™ and â€˜OS_taskâ€™ do this as
            needed.
  
  
*************** File: gcc.info,  Node: Blackfin Function
*** 39695,39748 ****
  
  These function attributes are supported by the Blackfin back end:
  
! 'exception_handler'
       Use this attribute on the Blackfin to indicate that the specified
       function is an exception handler.  The compiler generates function
       entry and exit sequences suitable for use in an exception handler
       when this attribute is present.
  
! 'interrupt_handler'
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
       attribute is present.
  
! 'kspisusp'
!      When used together with 'interrupt_handler', 'exception_handler' or
!      'nmi_handler', code is generated to load the stack pointer from the
       USP register in the function prologue.
  
! 'l1_text'
       This attribute specifies a function to be placed into L1
       Instruction SRAM.  The function is put into a specific section
!      named '.l1.text'.  With '-mfdpic', function calls with a such
       function as the callee or caller uses inlined PLT.
  
! 'l2'
       This attribute specifies a function to be placed into L2 SRAM. The
!      function is put into a specific section named '.l2.text'.  With
!      '-mfdpic', callers of such functions use an inlined PLT.
  
! 'longcall'
! 'shortcall'
!      The 'longcall' attribute indicates that the function might be far
       away from the call site and require a different (more expensive)
!      calling sequence.  The 'shortcall' attribute indicates that the
       function is always close enough for the shorter calling sequence to
!      be used.  These attributes override the '-mlongcall' switch.
  
! 'nesting'
!      Use this attribute together with 'interrupt_handler',
!      'exception_handler' or 'nmi_handler' to indicate that the function
       entry code should enable nested interrupts or exceptions.
  
! 'nmi_handler'
       Use this attribute on the Blackfin to indicate that the specified
       function is an NMI handler.  The compiler generates function entry
       and exit sequences suitable for use in an NMI handler when this
       attribute is present.
  
! 'saveall'
       Use this attribute to indicate that all registers except the stack
       pointer should be saved in the prologue regardless of whether they
       are used or not.
--- 39703,39756 ----
  
  These function attributes are supported by the Blackfin back end:
  
! â€˜exception_handlerâ€™
       Use this attribute on the Blackfin to indicate that the specified
       function is an exception handler.  The compiler generates function
       entry and exit sequences suitable for use in an exception handler
       when this attribute is present.
  
! â€˜interrupt_handlerâ€™
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
       attribute is present.
  
! â€˜kspisuspâ€™
!      When used together with â€˜interrupt_handlerâ€™, â€˜exception_handlerâ€™ or
!      â€˜nmi_handlerâ€™, code is generated to load the stack pointer from the
       USP register in the function prologue.
  
! â€˜l1_textâ€™
       This attribute specifies a function to be placed into L1
       Instruction SRAM.  The function is put into a specific section
!      named â€˜.l1.textâ€™.  With â€˜-mfdpicâ€™, function calls with a such
       function as the callee or caller uses inlined PLT.
  
! â€˜l2â€™
       This attribute specifies a function to be placed into L2 SRAM. The
!      function is put into a specific section named â€˜.l2.textâ€™.  With
!      â€˜-mfdpicâ€™, callers of such functions use an inlined PLT.
  
! â€˜longcallâ€™
! â€˜shortcallâ€™
!      The â€˜longcallâ€™ attribute indicates that the function might be far
       away from the call site and require a different (more expensive)
!      calling sequence.  The â€˜shortcallâ€™ attribute indicates that the
       function is always close enough for the shorter calling sequence to
!      be used.  These attributes override the â€˜-mlongcallâ€™ switch.
  
! â€˜nestingâ€™
!      Use this attribute together with â€˜interrupt_handlerâ€™,
!      â€˜exception_handlerâ€™ or â€˜nmi_handlerâ€™ to indicate that the function
       entry code should enable nested interrupts or exceptions.
  
! â€˜nmi_handlerâ€™
       Use this attribute on the Blackfin to indicate that the specified
       function is an NMI handler.  The compiler generates function entry
       and exit sequences suitable for use in an NMI handler when this
       attribute is present.
  
! â€˜saveallâ€™
       Use this attribute to indicate that all registers except the stack
       pointer should be saved in the prologue regardless of whether they
       are used or not.
*************** File: gcc.info,  Node: BPF Function Attr
*** 39755,39761 ****
  
  These function attributes are supported by the BPF back end:
  
! 'kernel_helper'
       use this attribute to indicate the specified function declaration
       is a kernel helper.  The helper function is passed as an argument
       to the attribute.  Example:
--- 39763,39769 ----
  
  These function attributes are supported by the BPF back end:
  
! â€˜kernel_helperâ€™
       use this attribute to indicate the specified function declaration
       is a kernel helper.  The helper function is passed as an argument
       to the attribute.  Example:
*************** These function attributes are supported
*** 39763,39776 ****
            int bpf_probe_read (void *dst, int size, const void *unsafe_ptr)
              __attribute__ ((kernel_helper (4)));
  
! 'naked'
       This attribute allows the compiler to construct the requisite
       function declaration, while allowing the body of the function to be
       assembly code.  The specified function will not have
       prologue/epilogue sequences generated by the compiler.  Only basic
!      'asm' statements can safely be included in naked functions (*note
!      Basic Asm::).  While using extended 'asm' or a mixture of basic
!      'asm' and C code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
  
--- 39771,39784 ----
            int bpf_probe_read (void *dst, int size, const void *unsafe_ptr)
              __attribute__ ((kernel_helper (4)));
  
! â€˜nakedâ€™
       This attribute allows the compiler to construct the requisite
       function declaration, while allowing the body of the function to be
       assembly code.  The specified function will not have
       prologue/epilogue sequences generated by the compiler.  Only basic
!      â€˜asmâ€™ statements can safely be included in naked functions (*note
!      Basic Asm::).  While using extended â€˜asmâ€™ or a mixture of basic
!      â€˜asmâ€™ and C code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
  
*************** File: gcc.info,  Node: C-SKY Function At
*** 39781,39805 ****
  
  These function attributes are supported by the C-SKY back end:
  
! 'interrupt'
! 'isr'
       Use these attributes to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when either of
       these attributes are present.
  
!      Use of these options requires the '-mistack' command-line option to
       enable support for the necessary interrupt stack instructions.
       They are ignored with a warning otherwise.  *Note C-SKY Options::.
  
! 'naked'
       This attribute allows the compiler to construct the requisite
       function declaration, while allowing the body of the function to be
       assembly code.  The specified function will not have
       prologue/epilogue sequences generated by the compiler.  Only basic
!      'asm' statements can safely be included in naked functions (*note
!      Basic Asm::).  While using extended 'asm' or a mixture of basic
!      'asm' and C code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
  
--- 39789,39813 ----
  
  These function attributes are supported by the C-SKY back end:
  
! â€˜interruptâ€™
! â€˜isrâ€™
       Use these attributes to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when either of
       these attributes are present.
  
!      Use of these options requires the â€˜-mistackâ€™ command-line option to
       enable support for the necessary interrupt stack instructions.
       They are ignored with a warning otherwise.  *Note C-SKY Options::.
  
! â€˜nakedâ€™
       This attribute allows the compiler to construct the requisite
       function declaration, while allowing the body of the function to be
       assembly code.  The specified function will not have
       prologue/epilogue sequences generated by the compiler.  Only basic
!      â€˜asmâ€™ statements can safely be included in naked functions (*note
!      Basic Asm::).  While using extended â€˜asmâ€™ or a mixture of basic
!      â€˜asmâ€™ and C code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
  
*************** File: gcc.info,  Node: Epiphany Function
*** 39810,39827 ****
  
  These function attributes are supported by the Epiphany back end:
  
! 'disinterrupt'
       This attribute causes the compiler to emit instructions to disable
       interrupts for the duration of the given function.
  
! 'forwarder_section'
       This attribute modifies the behavior of an interrupt handler.  The
       interrupt handler may be in external memory which cannot be reached
       by a branch instruction, so generate a local memory trampoline to
       transfer control.  The single parameter identifies the section
       where the trampoline is placed.
  
! 'interrupt'
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
--- 39818,39835 ----
  
  These function attributes are supported by the Epiphany back end:
  
! â€˜disinterruptâ€™
       This attribute causes the compiler to emit instructions to disable
       interrupts for the duration of the given function.
  
! â€˜forwarder_sectionâ€™
       This attribute modifies the behavior of an interrupt handler.  The
       interrupt handler may be in external memory which cannot be reached
       by a branch instruction, so generate a local memory trampoline to
       transfer control.  The single parameter identifies the section
       where the trampoline is placed.
  
! â€˜interruptâ€™
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
*************** These function attributes are supported
*** 39833,39841 ****
  
            void __attribute__ ((interrupt ("dma0, dma1"))) universal_dma_handler ();
  
!      Permissible values for these parameters are: 'reset',
!      'software_exception', 'page_miss', 'timer0', 'timer1', 'message',
!      'dma0', 'dma1', 'wand' and 'swi'.  Multiple parameters indicate
       that multiple entries in the interrupt vector table should be
       initialized for this function, i.e. for each parameter NAME, a jump
       to the function is emitted in the section ivt_entry_NAME.  The
--- 39841,39849 ----
  
            void __attribute__ ((interrupt ("dma0, dma1"))) universal_dma_handler ();
  
!      Permissible values for these parameters are: â€˜resetâ€™,
!      â€˜software_exceptionâ€™, â€˜page_missâ€™, â€˜timer0â€™, â€˜timer1â€™, â€˜messageâ€™,
!      â€˜dma0â€™, â€˜dma1â€™, â€˜wandâ€™ and â€˜swiâ€™.  Multiple parameters indicate
       that multiple entries in the interrupt vector table should be
       initialized for this function, i.e. for each parameter NAME, a jump
       to the function is emitted in the section ivt_entry_NAME.  The
*************** These function attributes are supported
*** 39843,39849 ****
       vector table entry is provided.
  
       Note that interrupts are enabled inside the function unless the
!      'disinterrupt' attribute is also specified.
  
       The following examples are all valid uses of these attributes on
       Epiphany targets:
--- 39851,39857 ----
       vector table entry is provided.
  
       Note that interrupts are enabled inside the function unless the
!      â€˜disinterruptâ€™ attribute is also specified.
  
       The following examples are all valid uses of these attributes on
       Epiphany targets:
*************** These function attributes are supported
*** 39857,39867 ****
                                 forwarder_section ("tramp")))
              external_dma_handler ();
  
! 'long_call'
! 'short_call'
       These attributes specify how a particular function is called.
!      These attributes override the '-mlong-calls' (*note Adapteva
!      Epiphany Options::) command-line switch and '#pragma long_calls'
       settings.
  
  
--- 39865,39875 ----
                                 forwarder_section ("tramp")))
              external_dma_handler ();
  
! â€˜long_callâ€™
! â€˜short_callâ€™
       These attributes specify how a particular function is called.
!      These attributes override the â€˜-mlong-callsâ€™ (*note Adapteva
!      Epiphany Options::) command-line switch and â€˜#pragma long_callsâ€™
       settings.
  
  
*************** File: gcc.info,  Node: H8/300 Function A
*** 39872,39878 ****
  
  These function attributes are available for H8/300 targets:
  
! 'function_vector'
       Use this attribute on the H8/300, H8/300H, and H8S to indicate that
       the specified function should be called through the function
       vector.  Calling a function through the function vector reduces
--- 39880,39886 ----
  
  These function attributes are available for H8/300 targets:
  
! â€˜function_vectorâ€™
       Use this attribute on the H8/300, H8/300H, and H8S to indicate that
       the specified function should be called through the function
       vector.  Calling a function through the function vector reduces
*************** These function attributes are available
*** 39880,39892 ****
       128 entries on the H8/300 and 64 entries on the H8/300H and H8S)
       and shares space with the interrupt vector.
  
! 'interrupt_handler'
       Use this attribute on the H8/300, H8/300H, and H8S to indicate that
       the specified function is an interrupt handler.  The compiler
       generates function entry and exit sequences suitable for use in an
       interrupt handler when this attribute is present.
  
! 'saveall'
       Use this attribute on the H8/300, H8/300H, and H8S to indicate that
       all registers except the stack pointer should be saved in the
       prologue regardless of whether they are used or not.
--- 39888,39900 ----
       128 entries on the H8/300 and 64 entries on the H8/300H and H8S)
       and shares space with the interrupt vector.
  
! â€˜interrupt_handlerâ€™
       Use this attribute on the H8/300, H8/300H, and H8S to indicate that
       the specified function is an interrupt handler.  The compiler
       generates function entry and exit sequences suitable for use in an
       interrupt handler when this attribute is present.
  
! â€˜saveallâ€™
       Use this attribute on the H8/300, H8/300H, and H8S to indicate that
       all registers except the stack pointer should be saved in the
       prologue regardless of whether they are used or not.
*************** File: gcc.info,  Node: IA-64 Function At
*** 39899,39912 ****
  
  These function attributes are supported on IA-64 targets:
  
! 'syscall_linkage'
       This attribute is used to modify the IA-64 calling convention by
       marking all input registers as live at all function exits.  This
       makes it possible to restart a system call after an interrupt
       without having to save/restore the input registers.  This also
       prevents kernel data from leaking into application code.
  
! 'version_id'
       This IA-64 HP-UX attribute, attached to a global variable or
       function, renames a symbol to contain a version string, thus
       allowing for function level versioning.  HP-UX system header files
--- 39907,39920 ----
  
  These function attributes are supported on IA-64 targets:
  
! â€˜syscall_linkageâ€™
       This attribute is used to modify the IA-64 calling convention by
       marking all input registers as live at all function exits.  This
       makes it possible to restart a system call after an interrupt
       without having to save/restore the input registers.  This also
       prevents kernel data from leaking into application code.
  
! â€˜version_idâ€™
       This IA-64 HP-UX attribute, attached to a global variable or
       function, renames a symbol to contain a version string, thus
       allowing for function level versioning.  HP-UX system header files
*************** These function attributes are supported
*** 39914,39920 ****
  
            extern int foo () __attribute__((version_id ("20040821")));
  
!      Calls to 'foo' are mapped to calls to 'foo{20040821}'.
  
  
  File: gcc.info,  Node: LoongArch Function Attributes,  Next: M32C Function Attributes,  Prev: IA-64 Function Attributes,  Up: Function Attributes
--- 39922,39928 ----
  
            extern int foo () __attribute__((version_id ("20040821")));
  
!      Calls to â€˜fooâ€™ are mapped to calls to â€˜foo{20040821}â€™.
  
  
  File: gcc.info,  Node: LoongArch Function Attributes,  Next: M32C Function Attributes,  Prev: IA-64 Function Attributes,  Up: Function Attributes
*************** File: gcc.info,  Node: LoongArch Functio
*** 39924,39964 ****
  
  These function attributes are supported by the LoongArch end:
  
! 'strict-align'
! 'no-strict-align'
!      'strict-align' indicates that the compiler should not assume that
       unaligned memory references are handled by the system.  To allow
       the compiler to assume that aligned memory references are handled
!      by the system, the inverse attribute 'no-strict-align' can be
       specified.  The behavior is same as for the command-line option
!      '-mstrict-align' and '-mno-strict-align'.
  
! 'cmodel='
       Indicates that code should be generated for a particular code model
       for this function.  The behavior and permissible arguments are the
!      same as for the command-line option '-mcmodel='.
  
! 'arch='
       Specifies the architecture version and architectural extensions to
       use for this function.  The behavior and permissible arguments are
!      the same as for the '-march=' command-line option.
  
! 'tune='
       Specifies the core for which to tune the performance of this
       function.  The behavior and permissible arguments are the same as
!      for the '-mtune=' command-line option.
  
! 'lsx'
! 'no-lsx'
!      'lsx' indicates that vector instruction generation is allowed (not
       allowed) when compiling the function.  The behavior is same as for
!      the command-line option '-mlsx' and '-mno-lsx'.
  
! 'lasx'
! 'no-lasx'
!      'lasx' indicates that lasx instruction generation is allowed (not
       allowed) when compiling the function.  The behavior is slightly
!      different from the command-line option '-mno-lasx'.  Example:
  
            test.c:
            typedef int v4i32 __attribute__ ((vector_size(16), aligned(16)));
--- 39932,39972 ----
  
  These function attributes are supported by the LoongArch end:
  
! â€˜strict-alignâ€™
! â€˜no-strict-alignâ€™
!      â€˜strict-alignâ€™ indicates that the compiler should not assume that
       unaligned memory references are handled by the system.  To allow
       the compiler to assume that aligned memory references are handled
!      by the system, the inverse attribute â€˜no-strict-alignâ€™ can be
       specified.  The behavior is same as for the command-line option
!      â€˜-mstrict-alignâ€™ and â€˜-mno-strict-alignâ€™.
  
! â€˜cmodel=â€™
       Indicates that code should be generated for a particular code model
       for this function.  The behavior and permissible arguments are the
!      same as for the command-line option â€˜-mcmodel=â€™.
  
! â€˜arch=â€™
       Specifies the architecture version and architectural extensions to
       use for this function.  The behavior and permissible arguments are
!      the same as for the â€˜-march=â€™ command-line option.
  
! â€˜tune=â€™
       Specifies the core for which to tune the performance of this
       function.  The behavior and permissible arguments are the same as
!      for the â€˜-mtune=â€™ command-line option.
  
! â€˜lsxâ€™
! â€˜no-lsxâ€™
!      â€˜lsxâ€™ indicates that vector instruction generation is allowed (not
       allowed) when compiling the function.  The behavior is same as for
!      the command-line option â€˜-mlsxâ€™ and â€˜-mno-lsxâ€™.
  
! â€˜lasxâ€™
! â€˜no-lasxâ€™
!      â€˜lasxâ€™ indicates that lasx instruction generation is allowed (not
       allowed) when compiling the function.  The behavior is slightly
!      different from the command-line option â€˜-mno-lasxâ€™.  Example:
  
            test.c:
            typedef int v4i32 __attribute__ ((vector_size(16), aligned(16)));
*************** File: gcc.info,  Node: M32C Function Att
*** 39986,40010 ****
  
  These function attributes are supported by the M32C back end:
  
! 'bank_switch'
       When added to an interrupt handler with the M32C port, causes the
       prologue and epilogue to use bank switching to preserve the
       registers rather than saving them on the stack.
  
! 'fast_interrupt'
       Use this attribute on the M32C port to indicate that the specified
       function is a fast interrupt handler.  This is just like the
!      'interrupt' attribute, except that 'freit' is used to return
!      instead of 'reit'.
  
! 'function_vector'
!      On M16C/M32C targets, the 'function_vector' attribute declares a
       special page subroutine call function.  Use of this attribute
       reduces the code size by 2 bytes for each call generated to the
       subroutine.  The argument to the attribute is the vector number
       entry from the special page vector table which contains the 16
       low-order bits of the subroutine's entry address.  Each vector
!      table has special page number (18 to 255) that is used in 'jsrs'
       instructions.  Jump addresses of the routines are generated by
       adding 0x0F0000 (in case of M16C targets) or 0xFF0000 (in case of
       M32C targets), to the 2-byte addresses set in the vector table.
--- 39994,40018 ----
  
  These function attributes are supported by the M32C back end:
  
! â€˜bank_switchâ€™
       When added to an interrupt handler with the M32C port, causes the
       prologue and epilogue to use bank switching to preserve the
       registers rather than saving them on the stack.
  
! â€˜fast_interruptâ€™
       Use this attribute on the M32C port to indicate that the specified
       function is a fast interrupt handler.  This is just like the
!      â€˜interruptâ€™ attribute, except that â€˜freitâ€™ is used to return
!      instead of â€˜reitâ€™.
  
! â€˜function_vectorâ€™
!      On M16C/M32C targets, the â€˜function_vectorâ€™ attribute declares a
       special page subroutine call function.  Use of this attribute
       reduces the code size by 2 bytes for each call generated to the
       subroutine.  The argument to the attribute is the vector number
       entry from the special page vector table which contains the 16
       low-order bits of the subroutine's entry address.  Each vector
!      table has special page number (18 to 255) that is used in â€˜jsrsâ€™
       instructions.  Jump addresses of the routines are generated by
       adding 0x0F0000 (in case of M16C targets) or 0xFF0000 (in case of
       M32C targets), to the 2-byte addresses set in the vector table.
*************** These function attributes are supported
*** 40013,40019 ****
       0x0FFFFF (for M16C) and 0xFF0000 to 0xFFFFFF (for M32C).
  
       In the following example 2 bytes are saved for each call to
!      function 'foo'.
  
            void foo (void) __attribute__((function_vector(0x18)));
            void foo (void)
--- 40021,40027 ----
       0x0FFFFF (for M16C) and 0xFF0000 to 0xFFFFFF (for M32C).
  
       In the following example 2 bytes are saved for each call to
!      function â€˜fooâ€™.
  
            void foo (void) __attribute__((function_vector(0x18)));
            void foo (void)
*************** These function attributes are supported
*** 40030,40036 ****
  
       This attribute is ignored for R8C target.
  
! 'interrupt'
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
--- 40038,40044 ----
  
       This attribute is ignored for R8C target.
  
! â€˜interruptâ€™
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
*************** File: gcc.info,  Node: M32R/D Function A
*** 40044,40074 ****
  
  These function attributes are supported by the M32R/D back end:
  
! 'interrupt'
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
       attribute is present.
  
! 'model (MODEL-NAME)'
  
       On the M32R/D, use this attribute to set the addressability of an
       object, and of the code generated for a function.  The identifier
!      MODEL-NAME is one of 'small', 'medium', or 'large', representing
       each of the code models.
  
       Small model objects live in the lower 16MB of memory (so that their
!      addresses can be loaded with the 'ld24' instruction), and are
!      callable with the 'bl' instruction.
  
       Medium model objects may live anywhere in the 32-bit address space
!      (the compiler generates 'seth/add3' instructions to load their
!      addresses), and are callable with the 'bl' instruction.
  
       Large model objects may live anywhere in the 32-bit address space
!      (the compiler generates 'seth/add3' instructions to load their
!      addresses), and may not be reachable with the 'bl' instruction (the
!      compiler generates the much slower 'seth/add3/jl' instruction
       sequence).
  
  
--- 40052,40082 ----
  
  These function attributes are supported by the M32R/D back end:
  
! â€˜interruptâ€™
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
       attribute is present.
  
! â€˜model (MODEL-NAME)â€™
  
       On the M32R/D, use this attribute to set the addressability of an
       object, and of the code generated for a function.  The identifier
!      MODEL-NAME is one of â€˜smallâ€™, â€˜mediumâ€™, or â€˜largeâ€™, representing
       each of the code models.
  
       Small model objects live in the lower 16MB of memory (so that their
!      addresses can be loaded with the â€˜ld24â€™ instruction), and are
!      callable with the â€˜blâ€™ instruction.
  
       Medium model objects may live anywhere in the 32-bit address space
!      (the compiler generates â€˜seth/add3â€™ instructions to load their
!      addresses), and are callable with the â€˜blâ€™ instruction.
  
       Large model objects may live anywhere in the 32-bit address space
!      (the compiler generates â€˜seth/add3â€™ instructions to load their
!      addresses), and may not be reachable with the â€˜blâ€™ instruction (the
!      compiler generates the much slower â€˜seth/add3/jlâ€™ instruction
       sequence).
  
  
*************** File: gcc.info,  Node: m68k Function Att
*** 40079,40097 ****
  
  These function attributes are supported by the m68k back end:
  
! 'interrupt'
! 'interrupt_handler'
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
       attribute is present.  Either name may be used.
  
! 'interrupt_thread'
       Use this attribute on fido, a subarchitecture of the m68k, to
       indicate that the specified function is an interrupt handler that
       is designed to run as a thread.  The compiler omits generate
       prologue/epilogue sequences and replaces the return instruction
!      with a 'sleep' instruction.  This attribute is available only on
       fido.
  
  
--- 40087,40105 ----
  
  These function attributes are supported by the m68k back end:
  
! â€˜interruptâ€™
! â€˜interrupt_handlerâ€™
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
       attribute is present.  Either name may be used.
  
! â€˜interrupt_threadâ€™
       Use this attribute on fido, a subarchitecture of the m68k, to
       indicate that the specified function is an interrupt handler that
       is designed to run as a thread.  The compiler omits generate
       prologue/epilogue sequences and replaces the return instruction
!      with a â€˜sleepâ€™ instruction.  This attribute is available only on
       fido.
  
  
*************** File: gcc.info,  Node: MCORE Function At
*** 40102,40115 ****
  
  These function attributes are supported by the MCORE back end:
  
! 'naked'
       This attribute allows the compiler to construct the requisite
       function declaration, while allowing the body of the function to be
       assembly code.  The specified function will not have
       prologue/epilogue sequences generated by the compiler.  Only basic
!      'asm' statements can safely be included in naked functions (*note
!      Basic Asm::).  While using extended 'asm' or a mixture of basic
!      'asm' and C code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
  
--- 40110,40123 ----
  
  These function attributes are supported by the MCORE back end:
  
! â€˜nakedâ€™
       This attribute allows the compiler to construct the requisite
       function declaration, while allowing the body of the function to be
       assembly code.  The specified function will not have
       prologue/epilogue sequences generated by the compiler.  Only basic
!      â€˜asmâ€™ statements can safely be included in naked functions (*note
!      Basic Asm::).  While using extended â€˜asmâ€™ or a mixture of basic
!      â€˜asmâ€™ and C code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
  
*************** File: gcc.info,  Node: MicroBlaze Functi
*** 40120,40126 ****
  
  These function attributes are supported on MicroBlaze targets:
  
! 'save_volatiles'
       Use this attribute to indicate that the function is an interrupt
       handler.  All volatile registers (in addition to non-volatile
       registers) are saved in the function prologue.  If the function is
--- 40128,40134 ----
  
  These function attributes are supported on MicroBlaze targets:
  
! â€˜save_volatilesâ€™
       Use this attribute to indicate that the function is an interrupt
       handler.  All volatile registers (in addition to non-volatile
       registers) are saved in the function prologue.  If the function is
*************** These function attributes are supported
*** 40128,40150 ****
       normal function return is generated instead of a return from
       interrupt.
  
! 'break_handler'
       Use this attribute to indicate that the specified function is a
       break handler.  The compiler generates function entry and exit
       sequences suitable for use in an break handler when this attribute
!      is present.  The return from 'break_handler' is done through the
!      'rtbd' instead of 'rtsd'.
  
            void f () __attribute__ ((break_handler));
  
! 'interrupt_handler'
! 'fast_interrupt'
       These attributes indicate that the specified function is an
!      interrupt handler.  Use the 'fast_interrupt' attribute to indicate
       handlers used in low-latency interrupt mode, and
!      'interrupt_handler' for interrupts that do not use low-latency
       handlers.  In both cases, GCC emits appropriate prologue code and
!      generates a return from the handler using 'rtid' instead of 'rtsd'.
  
  
  File: gcc.info,  Node: Microsoft Windows Function Attributes,  Next: MIPS Function Attributes,  Prev: MicroBlaze Function Attributes,  Up: Function Attributes
--- 40136,40158 ----
       normal function return is generated instead of a return from
       interrupt.
  
! â€˜break_handlerâ€™
       Use this attribute to indicate that the specified function is a
       break handler.  The compiler generates function entry and exit
       sequences suitable for use in an break handler when this attribute
!      is present.  The return from â€˜break_handlerâ€™ is done through the
!      â€˜rtbdâ€™ instead of â€˜rtsdâ€™.
  
            void f () __attribute__ ((break_handler));
  
! â€˜interrupt_handlerâ€™
! â€˜fast_interruptâ€™
       These attributes indicate that the specified function is an
!      interrupt handler.  Use the â€˜fast_interruptâ€™ attribute to indicate
       handlers used in low-latency interrupt mode, and
!      â€˜interrupt_handlerâ€™ for interrupts that do not use low-latency
       handlers.  In both cases, GCC emits appropriate prologue code and
!      generates a return from the handler using â€˜rtidâ€™ instead of â€˜rtsdâ€™.
  
  
  File: gcc.info,  Node: Microsoft Windows Function Attributes,  Next: MIPS Function Attributes,  Prev: MicroBlaze Function Attributes,  Up: Function Attributes
*************** File: gcc.info,  Node: Microsoft Windows
*** 40155,40179 ****
  The following attributes are available on Microsoft Windows and Symbian
  OS targets.
  
! 'dllexport'
!      On Microsoft Windows targets and Symbian OS targets the 'dllexport'
       attribute causes the compiler to provide a global pointer to a
!      pointer in a DLL, so that it can be referenced with the 'dllimport'
       attribute.  On Microsoft Windows targets, the pointer name is
!      formed by combining '_imp__' and the function or variable name.
  
!      You can use '__declspec(dllexport)' as a synonym for '__attribute__
!      ((dllexport))' for compatibility with other compilers.
  
!      On systems that support the 'visibility' attribute, this attribute
       also implies "default" visibility.  It is an error to explicitly
       specify any other visibility.
  
       GCC's default behavior is to emit all inline functions with the
!      'dllexport' attribute.  Since this can cause object file-size
!      bloat, you can use '-fno-keep-inline-dllexport', which tells GCC to
       ignore the attribute for inlined functions unless the
!      '-fkeep-inline-functions' flag is used instead.
  
       The attribute is ignored for undefined symbols.
  
--- 40163,40187 ----
  The following attributes are available on Microsoft Windows and Symbian
  OS targets.
  
! â€˜dllexportâ€™
!      On Microsoft Windows targets and Symbian OS targets the â€˜dllexportâ€™
       attribute causes the compiler to provide a global pointer to a
!      pointer in a DLL, so that it can be referenced with the â€˜dllimportâ€™
       attribute.  On Microsoft Windows targets, the pointer name is
!      formed by combining â€˜_imp__â€™ and the function or variable name.
  
!      You can use â€˜__declspec(dllexport)â€™ as a synonym for â€˜__attribute__
!      ((dllexport))â€™ for compatibility with other compilers.
  
!      On systems that support the â€˜visibilityâ€™ attribute, this attribute
       also implies "default" visibility.  It is an error to explicitly
       specify any other visibility.
  
       GCC's default behavior is to emit all inline functions with the
!      â€˜dllexportâ€™ attribute.  Since this can cause object file-size
!      bloat, you can use â€˜-fno-keep-inline-dllexportâ€™, which tells GCC to
       ignore the attribute for inlined functions unless the
!      â€˜-fkeep-inline-functionsâ€™ flag is used instead.
  
       The attribute is ignored for undefined symbols.
  
*************** OS targets.
*** 40184,40220 ****
  
       For Microsoft Windows targets there are alternative methods for
       including the symbol in the DLL's export table such as using a
!      '.def' file with an 'EXPORTS' section or, with GNU ld, using the
!      '--export-all' linker flag.
  
! 'dllimport'
!      On Microsoft Windows and Symbian OS targets, the 'dllimport'
       attribute causes the compiler to reference a function or variable
       via a global pointer to a pointer that is set up by the DLL
!      exporting the symbol.  The attribute implies 'extern'.  On
       Microsoft Windows targets, the pointer name is formed by combining
!      '_imp__' and the function or variable name.
  
!      You can use '__declspec(dllimport)' as a synonym for '__attribute__
!      ((dllimport))' for compatibility with other compilers.
  
!      On systems that support the 'visibility' attribute, this attribute
       also implies "default" visibility.  It is an error to explicitly
       specify any other visibility.
  
       Currently, the attribute is ignored for inlined functions.  If the
       attribute is applied to a symbol _definition_, an error is
!      reported.  If a symbol previously declared 'dllimport' is later
       defined, the attribute is ignored in subsequent references, and a
       warning is emitted.  The attribute is also overridden by a
!      subsequent declaration as 'dllexport'.
  
       When applied to C++ classes, the attribute marks non-inlined member
       functions and static data members as imports.  However, the
       attribute is ignored for virtual methods to allow creation of
       vtables using thunks.
  
!      On the SH Symbian OS target the 'dllimport' attribute also has
       another affect--it can cause the vtable and run-time type
       information for a class to be exported.  This happens when the
       class has a dllimported constructor or a non-inline, non-pure
--- 40192,40228 ----
  
       For Microsoft Windows targets there are alternative methods for
       including the symbol in the DLL's export table such as using a
!      â€˜.defâ€™ file with an â€˜EXPORTSâ€™ section or, with GNU ld, using the
!      â€˜--export-allâ€™ linker flag.
  
! â€˜dllimportâ€™
!      On Microsoft Windows and Symbian OS targets, the â€˜dllimportâ€™
       attribute causes the compiler to reference a function or variable
       via a global pointer to a pointer that is set up by the DLL
!      exporting the symbol.  The attribute implies â€˜externâ€™.  On
       Microsoft Windows targets, the pointer name is formed by combining
!      â€˜_imp__â€™ and the function or variable name.
  
!      You can use â€˜__declspec(dllimport)â€™ as a synonym for â€˜__attribute__
!      ((dllimport))â€™ for compatibility with other compilers.
  
!      On systems that support the â€˜visibilityâ€™ attribute, this attribute
       also implies "default" visibility.  It is an error to explicitly
       specify any other visibility.
  
       Currently, the attribute is ignored for inlined functions.  If the
       attribute is applied to a symbol _definition_, an error is
!      reported.  If a symbol previously declared â€˜dllimportâ€™ is later
       defined, the attribute is ignored in subsequent references, and a
       warning is emitted.  The attribute is also overridden by a
!      subsequent declaration as â€˜dllexportâ€™.
  
       When applied to C++ classes, the attribute marks non-inlined member
       functions and static data members as imports.  However, the
       attribute is ignored for virtual methods to allow creation of
       vtables using thunks.
  
!      On the SH Symbian OS target the â€˜dllimportâ€™ attribute also has
       another affect--it can cause the vtable and run-time type
       information for a class to be exported.  This happens when the
       class has a dllimported constructor or a non-inline, non-pure
*************** OS targets.
*** 40222,40242 ****
       also has an inline constructor or destructor and has a key function
       that is defined in the current translation unit.
  
!      For Microsoft Windows targets the use of the 'dllimport' attribute
       on functions is not necessary, but provides a small performance
       benefit by eliminating a thunk in the DLL.  The use of the
!      'dllimport' attribute on imported variables can be avoided by
!      passing the '--enable-auto-import' switch to the GNU linker.  As
       with functions, using the attribute for a variable eliminates a
       thunk in the DLL.
  
       One drawback to using this attribute is that a pointer to a
!      _variable_ marked as 'dllimport' cannot be used as a constant
!      address.  However, a pointer to a _function_ with the 'dllimport'
       attribute can be used as a constant initializer; in this case, the
       address of a stub function in the import lib is referenced.  On
       Microsoft Windows targets, the attribute can be disabled for
!      functions by setting the '-mnop-fun-dllimport' flag.
  
  
  File: gcc.info,  Node: MIPS Function Attributes,  Next: MSP430 Function Attributes,  Prev: Microsoft Windows Function Attributes,  Up: Function Attributes
--- 40230,40250 ----
       also has an inline constructor or destructor and has a key function
       that is defined in the current translation unit.
  
!      For Microsoft Windows targets the use of the â€˜dllimportâ€™ attribute
       on functions is not necessary, but provides a small performance
       benefit by eliminating a thunk in the DLL.  The use of the
!      â€˜dllimportâ€™ attribute on imported variables can be avoided by
!      passing the â€˜--enable-auto-importâ€™ switch to the GNU linker.  As
       with functions, using the attribute for a variable eliminates a
       thunk in the DLL.
  
       One drawback to using this attribute is that a pointer to a
!      _variable_ marked as â€˜dllimportâ€™ cannot be used as a constant
!      address.  However, a pointer to a _function_ with the â€˜dllimportâ€™
       attribute can be used as a constant initializer; in this case, the
       address of a stub function in the import lib is referenced.  On
       Microsoft Windows targets, the attribute can be disabled for
!      functions by setting the â€˜-mnop-fun-dllimportâ€™ flag.
  
  
  File: gcc.info,  Node: MIPS Function Attributes,  Next: MSP430 Function Attributes,  Prev: Microsoft Windows Function Attributes,  Up: Function Attributes
*************** File: gcc.info,  Node: MIPS Function Att
*** 40246,40252 ****
  
  These function attributes are supported by the MIPS back end:
  
! 'interrupt'
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
--- 40254,40260 ----
  
  These function attributes are supported by the MIPS back end:
  
! â€˜interruptâ€™
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
*************** These function attributes are supported
*** 40254,40284 ****
       interrupt attribute which allows the interrupt mode to be
       described.  By default GCC assumes the external interrupt
       controller (EIC) mode is in use, this can be explicitly set using
!      'eic'.  When interrupts are non-masked then the requested Interrupt
       Priority Level (IPL) is copied to the current IPL which has the
       effect of only enabling higher priority interrupts.  To use
       vectored interrupt mode use the argument
!      'vector=[sw0|sw1|hw0|hw1|hw2|hw3|hw4|hw5]', this will change the
       behavior of the non-masked interrupt support and GCC will arrange
       to mask all interrupts from sw0 up to and including the specified
       interrupt vector.
  
       You can use the following attributes to modify the behavior of an
       interrupt handler:
!      'use_shadow_register_set'
            Assume that the handler uses a shadow register set, instead of
            the main general-purpose registers.  An optional argument
!           'intstack' is supported to indicate that the shadow register
            set contains a valid stack pointer.
  
!      'keep_interrupts_masked'
            Keep interrupts masked for the whole function.  Without this
            attribute, GCC tries to reenable interrupts for as much of the
            function as it can.
  
!      'use_debug_exception_return'
!           Return using the 'deret' instruction.  Interrupt handlers that
!           don't have this attribute return using 'eret' instead.
  
       You can use any combination of these attributes, as shown below:
            void __attribute__ ((interrupt)) v0 ();
--- 40262,40292 ----
       interrupt attribute which allows the interrupt mode to be
       described.  By default GCC assumes the external interrupt
       controller (EIC) mode is in use, this can be explicitly set using
!      â€˜eicâ€™.  When interrupts are non-masked then the requested Interrupt
       Priority Level (IPL) is copied to the current IPL which has the
       effect of only enabling higher priority interrupts.  To use
       vectored interrupt mode use the argument
!      â€˜vector=[sw0|sw1|hw0|hw1|hw2|hw3|hw4|hw5]â€™, this will change the
       behavior of the non-masked interrupt support and GCC will arrange
       to mask all interrupts from sw0 up to and including the specified
       interrupt vector.
  
       You can use the following attributes to modify the behavior of an
       interrupt handler:
!      â€˜use_shadow_register_setâ€™
            Assume that the handler uses a shadow register set, instead of
            the main general-purpose registers.  An optional argument
!           â€˜intstackâ€™ is supported to indicate that the shadow register
            set contains a valid stack pointer.
  
!      â€˜keep_interrupts_maskedâ€™
            Keep interrupts masked for the whole function.  Without this
            attribute, GCC tries to reenable interrupts for as much of the
            function as it can.
  
!      â€˜use_debug_exception_returnâ€™
!           Return using the â€˜deretâ€™ instruction.  Interrupt handlers that
!           don't have this attribute return using â€˜eretâ€™ instead.
  
       You can use any combination of these attributes, as shown below:
            void __attribute__ ((interrupt)) v0 ();
*************** These function attributes are supported
*** 40297,40375 ****
            void __attribute__ ((interrupt("eic"))) v8 ();
            void __attribute__ ((interrupt("vector=hw3"))) v9 ();
  
! 'long_call'
! 'short_call'
! 'near'
! 'far'
       These attributes specify how a particular function is called on
!      MIPS.  The attributes override the '-mlong-calls' (*note MIPS
!      Options::) command-line switch.  The 'long_call' and 'far'
       attributes are synonyms, and cause the compiler to always call the
       function by first loading its address into a register, and then
!      using the contents of that register.  The 'short_call' and 'near'
       attributes are synonyms, and have the opposite effect; they specify
!      that non-PIC calls should be made using the more efficient 'jal'
       instruction.
  
! 'mips16'
! 'nomips16'
  
!      On MIPS targets, you can use the 'mips16' and 'nomips16' function
       attributes to locally select or turn off MIPS16 code generation.  A
!      function with the 'mips16' attribute is emitted as MIPS16 code,
       while MIPS16 code generation is disabled for functions with the
!      'nomips16' attribute.  These attributes override the '-mips16' and
!      '-mno-mips16' options on the command line (*note MIPS Options::).
  
       When compiling files containing mixed MIPS16 and non-MIPS16 code,
!      the preprocessor symbol '__mips16' reflects the setting on the
       command line, not that within individual functions.  Mixed MIPS16
       and non-MIPS16 code may interact badly with some GCC extensions
!      such as '__builtin_apply' (*note Constructing Calls::).
  
! 'micromips, MIPS'
! 'nomicromips, MIPS'
  
!      On MIPS targets, you can use the 'micromips' and 'nomicromips'
       function attributes to locally select or turn off microMIPS code
!      generation.  A function with the 'micromips' attribute is emitted
       as microMIPS code, while microMIPS code generation is disabled for
!      functions with the 'nomicromips' attribute.  These attributes
!      override the '-mmicromips' and '-mno-micromips' options on the
       command line (*note MIPS Options::).
  
       When compiling files containing mixed microMIPS and non-microMIPS
!      code, the preprocessor symbol '__mips_micromips' reflects the
       setting on the command line, not that within individual functions.
       Mixed microMIPS and non-microMIPS code may interact badly with some
!      GCC extensions such as '__builtin_apply' (*note Constructing
       Calls::).
  
! 'nocompression'
!      On MIPS targets, you can use the 'nocompression' function attribute
       to locally turn off MIPS16 and microMIPS code generation.  This
!      attribute overrides the '-mips16' and '-mmicromips' options on the
       command line (*note MIPS Options::).
  
! 'use_hazard_barrier_return'
       This function attribute instructs the compiler to generate a hazard
       barrier return that clears all execution and instruction hazards
       while returning, instead of generating a normal return instruction.
  
! 'code_readable'
       For MIPS targets that support PC-relative addressing modes, this
       attribute can be used to control how an object is addressed.  The
       attribute takes a single optional argument:
  
!      'no'
            The function should not read the instruction stream as data.
!      'yes'
            The function can read the instruction stream as data.
!      'pcrel'
            The function can read the instruction stream in a pc-relative
            mode.
  
!      If there is no argument supplied, the default of '"yes"' applies.
  
  
  File: gcc.info,  Node: MSP430 Function Attributes,  Next: NDS32 Function Attributes,  Prev: MIPS Function Attributes,  Up: Function Attributes
--- 40305,40383 ----
            void __attribute__ ((interrupt("eic"))) v8 ();
            void __attribute__ ((interrupt("vector=hw3"))) v9 ();
  
! â€˜long_callâ€™
! â€˜short_callâ€™
! â€˜nearâ€™
! â€˜farâ€™
       These attributes specify how a particular function is called on
!      MIPS.  The attributes override the â€˜-mlong-callsâ€™ (*note MIPS
!      Options::) command-line switch.  The â€˜long_callâ€™ and â€˜farâ€™
       attributes are synonyms, and cause the compiler to always call the
       function by first loading its address into a register, and then
!      using the contents of that register.  The â€˜short_callâ€™ and â€˜nearâ€™
       attributes are synonyms, and have the opposite effect; they specify
!      that non-PIC calls should be made using the more efficient â€˜jalâ€™
       instruction.
  
! â€˜mips16â€™
! â€˜nomips16â€™
  
!      On MIPS targets, you can use the â€˜mips16â€™ and â€˜nomips16â€™ function
       attributes to locally select or turn off MIPS16 code generation.  A
!      function with the â€˜mips16â€™ attribute is emitted as MIPS16 code,
       while MIPS16 code generation is disabled for functions with the
!      â€˜nomips16â€™ attribute.  These attributes override the â€˜-mips16â€™ and
!      â€˜-mno-mips16â€™ options on the command line (*note MIPS Options::).
  
       When compiling files containing mixed MIPS16 and non-MIPS16 code,
!      the preprocessor symbol â€˜__mips16â€™ reflects the setting on the
       command line, not that within individual functions.  Mixed MIPS16
       and non-MIPS16 code may interact badly with some GCC extensions
!      such as â€˜__builtin_applyâ€™ (*note Constructing Calls::).
  
! â€˜micromips, MIPSâ€™
! â€˜nomicromips, MIPSâ€™
  
!      On MIPS targets, you can use the â€˜micromipsâ€™ and â€˜nomicromipsâ€™
       function attributes to locally select or turn off microMIPS code
!      generation.  A function with the â€˜micromipsâ€™ attribute is emitted
       as microMIPS code, while microMIPS code generation is disabled for
!      functions with the â€˜nomicromipsâ€™ attribute.  These attributes
!      override the â€˜-mmicromipsâ€™ and â€˜-mno-micromipsâ€™ options on the
       command line (*note MIPS Options::).
  
       When compiling files containing mixed microMIPS and non-microMIPS
!      code, the preprocessor symbol â€˜__mips_micromipsâ€™ reflects the
       setting on the command line, not that within individual functions.
       Mixed microMIPS and non-microMIPS code may interact badly with some
!      GCC extensions such as â€˜__builtin_applyâ€™ (*note Constructing
       Calls::).
  
! â€˜nocompressionâ€™
!      On MIPS targets, you can use the â€˜nocompressionâ€™ function attribute
       to locally turn off MIPS16 and microMIPS code generation.  This
!      attribute overrides the â€˜-mips16â€™ and â€˜-mmicromipsâ€™ options on the
       command line (*note MIPS Options::).
  
! â€˜use_hazard_barrier_returnâ€™
       This function attribute instructs the compiler to generate a hazard
       barrier return that clears all execution and instruction hazards
       while returning, instead of generating a normal return instruction.
  
! â€˜code_readableâ€™
       For MIPS targets that support PC-relative addressing modes, this
       attribute can be used to control how an object is addressed.  The
       attribute takes a single optional argument:
  
!      â€˜noâ€™
            The function should not read the instruction stream as data.
!      â€˜yesâ€™
            The function can read the instruction stream as data.
!      â€˜pcrelâ€™
            The function can read the instruction stream in a pc-relative
            mode.
  
!      If there is no argument supplied, the default of â€˜"yes"â€™ applies.
  
  
  File: gcc.info,  Node: MSP430 Function Attributes,  Next: NDS32 Function Attributes,  Prev: MIPS Function Attributes,  Up: Function Attributes
*************** File: gcc.info,  Node: MSP430 Function A
*** 40379,40395 ****
  
  These function attributes are supported by the MSP430 back end:
  
! 'critical'
       Critical functions disable interrupts upon entry and restore the
       previous interrupt state upon exit.  Critical functions cannot also
!      have the 'naked', 'reentrant' or 'interrupt' attributes.
  
       The MSP430 hardware ensures that interrupts are disabled on entry
!      to 'interrupt' functions, and restores the previous interrupt state
!      on exit.  The 'critical' attribute is therefore redundant on
!      'interrupt' functions.
  
! 'interrupt'
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
--- 40387,40403 ----
  
  These function attributes are supported by the MSP430 back end:
  
! â€˜criticalâ€™
       Critical functions disable interrupts upon entry and restore the
       previous interrupt state upon exit.  Critical functions cannot also
!      have the â€˜nakedâ€™, â€˜reentrantâ€™ or â€˜interruptâ€™ attributes.
  
       The MSP430 hardware ensures that interrupts are disabled on entry
!      to â€˜interruptâ€™ functions, and restores the previous interrupt state
!      on exit.  The â€˜criticalâ€™ attribute is therefore redundant on
!      â€˜interruptâ€™ functions.
  
! â€˜interruptâ€™
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
*************** These function attributes are supported
*** 40401,40433 ****
       this handler should be assigned.  If the argument is a name it is
       treated as a symbolic name for the vector slot.  These names should
       match up with appropriate entries in the linker script.  By default
!      the names 'watchdog' for vector 26, 'nmi' for vector 30 and 'reset'
       for vector 31 are recognized.
  
! 'naked'
       This attribute allows the compiler to construct the requisite
       function declaration, while allowing the body of the function to be
       assembly code.  The specified function will not have
       prologue/epilogue sequences generated by the compiler.  Only basic
!      'asm' statements can safely be included in naked functions (*note
!      Basic Asm::).  While using extended 'asm' or a mixture of basic
!      'asm' and C code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
! 'reentrant'
       Reentrant functions disable interrupts upon entry and enable them
!      upon exit.  Reentrant functions cannot also have the 'naked' or
!      'critical' attributes.  They can have the 'interrupt' attribute.
  
! 'wakeup'
       This attribute only applies to interrupt functions.  It is silently
       ignored if applied to a non-interrupt function.  A wakeup interrupt
       function will rouse the processor from any low-power state that it
       might be in when the function exits.
  
! 'lower'
! 'upper'
! 'either'
       On the MSP430 target these attributes can be used to specify
       whether the function or variable should be placed into low memory,
       high memory, or the placement should be left to the linker to
--- 40409,40441 ----
       this handler should be assigned.  If the argument is a name it is
       treated as a symbolic name for the vector slot.  These names should
       match up with appropriate entries in the linker script.  By default
!      the names â€˜watchdogâ€™ for vector 26, â€˜nmiâ€™ for vector 30 and â€˜resetâ€™
       for vector 31 are recognized.
  
! â€˜nakedâ€™
       This attribute allows the compiler to construct the requisite
       function declaration, while allowing the body of the function to be
       assembly code.  The specified function will not have
       prologue/epilogue sequences generated by the compiler.  Only basic
!      â€˜asmâ€™ statements can safely be included in naked functions (*note
!      Basic Asm::).  While using extended â€˜asmâ€™ or a mixture of basic
!      â€˜asmâ€™ and C code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
! â€˜reentrantâ€™
       Reentrant functions disable interrupts upon entry and enable them
!      upon exit.  Reentrant functions cannot also have the â€˜nakedâ€™ or
!      â€˜criticalâ€™ attributes.  They can have the â€˜interruptâ€™ attribute.
  
! â€˜wakeupâ€™
       This attribute only applies to interrupt functions.  It is silently
       ignored if applied to a non-interrupt function.  A wakeup interrupt
       function will rouse the processor from any low-power state that it
       might be in when the function exits.
  
! â€˜lowerâ€™
! â€˜upperâ€™
! â€˜eitherâ€™
       On the MSP430 target these attributes can be used to specify
       whether the function or variable should be placed into low memory,
       high memory, or the placement should be left to the linker to
*************** These function attributes are supported
*** 40435,40456 ****
       MSP430X architecture in the large memory model.
  
       The attributes work in conjunction with a linker script that has
!      been augmented to specify where to place sections with a '.lower'
!      and a '.upper' prefix.  So, for example, as well as placing the
!      '.data' section, the script also specifies the placement of a
!      '.lower.data' and a '.upper.data' section.  The intention is that
!      'lower' sections are placed into a small but easier to access
       memory region and the upper sections are placed into a larger, but
       slower to access, region.
  
!      The 'either' attribute is special.  It tells the linker to place
!      the object into the corresponding 'lower' section if there is room
       for it.  If there is insufficient room then the object is placed
!      into the corresponding 'upper' section instead.  Note that the
       placement algorithm is not very sophisticated.  It does not attempt
!      to find an optimal packing of the 'lower' sections.  It just makes
       one pass over the objects and does the best that it can.  Using the
!      '-ffunction-sections' and '-fdata-sections' command-line options
       can help the packing, however, since they produce smaller, easier
       to pack regions.
  
--- 40443,40464 ----
       MSP430X architecture in the large memory model.
  
       The attributes work in conjunction with a linker script that has
!      been augmented to specify where to place sections with a â€˜.lowerâ€™
!      and a â€˜.upperâ€™ prefix.  So, for example, as well as placing the
!      â€˜.dataâ€™ section, the script also specifies the placement of a
!      â€˜.lower.dataâ€™ and a â€˜.upper.dataâ€™ section.  The intention is that
!      â€˜lowerâ€™ sections are placed into a small but easier to access
       memory region and the upper sections are placed into a larger, but
       slower to access, region.
  
!      The â€˜eitherâ€™ attribute is special.  It tells the linker to place
!      the object into the corresponding â€˜lowerâ€™ section if there is room
       for it.  If there is insufficient room then the object is placed
!      into the corresponding â€˜upperâ€™ section instead.  Note that the
       placement algorithm is not very sophisticated.  It does not attempt
!      to find an optimal packing of the â€˜lowerâ€™ sections.  It just makes
       one pass over the objects and does the best that it can.  Using the
!      â€˜-ffunction-sectionsâ€™ and â€˜-fdata-sectionsâ€™ command-line options
       can help the packing, however, since they produce smaller, easier
       to pack regions.
  
*************** File: gcc.info,  Node: NDS32 Function At
*** 40462,40511 ****
  
  These function attributes are supported by the NDS32 back end:
  
! 'exception'
       Use this attribute on the NDS32 target to indicate that the
       specified function is an exception handler.  The compiler will
       generate corresponding sections for use in an exception handler.
  
! 'interrupt'
       On NDS32 target, this attribute indicates that the specified
       function is an interrupt handler.  The compiler generates
       corresponding sections for use in an interrupt handler.  You can
       use the following attributes to modify the behavior:
!      'nested'
            This interrupt service routine is interruptible.
!      'not_nested'
            This interrupt service routine is not interruptible.
!      'nested_ready'
            This interrupt service routine is interruptible after
!           'PSW.GIE' (global interrupt enable) is set.  This allows
            interrupt service routine to finish some short critical code
            before enabling interrupts.
!      'save_all'
            The system will help save all registers into stack before
            entering interrupt handler.
!      'partial_save'
            The system will help save caller registers into stack before
            entering interrupt handler.
  
! 'naked'
       This attribute allows the compiler to construct the requisite
       function declaration, while allowing the body of the function to be
       assembly code.  The specified function will not have
       prologue/epilogue sequences generated by the compiler.  Only basic
!      'asm' statements can safely be included in naked functions (*note
!      Basic Asm::).  While using extended 'asm' or a mixture of basic
!      'asm' and C code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
! 'reset'
       Use this attribute on the NDS32 target to indicate that the
       specified function is a reset handler.  The compiler will generate
       corresponding sections for use in a reset handler.  You can use the
       following attributes to provide extra exception handling:
!      'nmi'
            Provide a user-defined function to handle NMI exception.
!      'warm'
            Provide a user-defined function to handle warm reset
            exception.
  
--- 40470,40519 ----
  
  These function attributes are supported by the NDS32 back end:
  
! â€˜exceptionâ€™
       Use this attribute on the NDS32 target to indicate that the
       specified function is an exception handler.  The compiler will
       generate corresponding sections for use in an exception handler.
  
! â€˜interruptâ€™
       On NDS32 target, this attribute indicates that the specified
       function is an interrupt handler.  The compiler generates
       corresponding sections for use in an interrupt handler.  You can
       use the following attributes to modify the behavior:
!      â€˜nestedâ€™
            This interrupt service routine is interruptible.
!      â€˜not_nestedâ€™
            This interrupt service routine is not interruptible.
!      â€˜nested_readyâ€™
            This interrupt service routine is interruptible after
!           â€˜PSW.GIEâ€™ (global interrupt enable) is set.  This allows
            interrupt service routine to finish some short critical code
            before enabling interrupts.
!      â€˜save_allâ€™
            The system will help save all registers into stack before
            entering interrupt handler.
!      â€˜partial_saveâ€™
            The system will help save caller registers into stack before
            entering interrupt handler.
  
! â€˜nakedâ€™
       This attribute allows the compiler to construct the requisite
       function declaration, while allowing the body of the function to be
       assembly code.  The specified function will not have
       prologue/epilogue sequences generated by the compiler.  Only basic
!      â€˜asmâ€™ statements can safely be included in naked functions (*note
!      Basic Asm::).  While using extended â€˜asmâ€™ or a mixture of basic
!      â€˜asmâ€™ and C code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
! â€˜resetâ€™
       Use this attribute on the NDS32 target to indicate that the
       specified function is a reset handler.  The compiler will generate
       corresponding sections for use in a reset handler.  You can use the
       following attributes to provide extra exception handling:
!      â€˜nmiâ€™
            Provide a user-defined function to handle NMI exception.
!      â€˜warmâ€™
            Provide a user-defined function to handle warm reset
            exception.
  
*************** File: gcc.info,  Node: Nvidia PTX Functi
*** 40517,40529 ****
  
  These function attributes are supported by the Nvidia PTX back end:
  
! 'kernel'
       This attribute indicates that the corresponding function should be
       compiled as a kernel function, which can be invoked from the host
       via the CUDA RT library.  By default functions are only callable
       only from other PTX functions.
  
!      Kernel functions must have 'void' return type.
  
  
  File: gcc.info,  Node: PowerPC Function Attributes,  Next: RISC-V Function Attributes,  Prev: Nvidia PTX Function Attributes,  Up: Function Attributes
--- 40525,40537 ----
  
  These function attributes are supported by the Nvidia PTX back end:
  
! â€˜kernelâ€™
       This attribute indicates that the corresponding function should be
       compiled as a kernel function, which can be invoked from the host
       via the CUDA RT library.  By default functions are only callable
       only from other PTX functions.
  
!      Kernel functions must have â€˜voidâ€™ return type.
  
  
  File: gcc.info,  Node: PowerPC Function Attributes,  Next: RISC-V Function Attributes,  Prev: Nvidia PTX Function Attributes,  Up: Function Attributes
*************** File: gcc.info,  Node: PowerPC Function
*** 40533,40697 ****
  
  These function attributes are supported by the PowerPC back end:
  
! 'longcall'
! 'shortcall'
!      The 'longcall' attribute indicates that the function might be far
       away from the call site and require a different (more expensive)
!      calling sequence.  The 'shortcall' attribute indicates that the
       function is always close enough for the shorter calling sequence to
!      be used.  These attributes override both the '-mlongcall' switch
!      and the '#pragma longcall' setting.
  
       *Note RS/6000 and PowerPC Options::, for more information on
       whether long calls are necessary.
  
! 'target (OPTIONS)'
       As discussed in *note Common Function Attributes::, this attribute
       allows specification of target-specific compilation options.
  
       On the PowerPC, the following options are allowed:
  
!      'altivec'
!      'no-altivec'
            Generate code that uses (does not use) AltiVec instructions.
            In 32-bit code, you cannot enable AltiVec instructions unless
!           '-mabi=altivec' is used on the command line.
  
!      'cmpb'
!      'no-cmpb'
            Generate code that uses (does not use) the compare bytes
            instruction implemented on the POWER6 processor and other
            processors that support the PowerPC V2.05 architecture.
  
!      'dlmzb'
!      'no-dlmzb'
            Generate code that uses (does not use) the string-search
!           'dlmzb' instruction on the IBM 405, 440, 464 and 476
            processors.  This instruction is generated by default when
            targeting those processors.
  
!      'fprnd'
!      'no-fprnd'
            Generate code that uses (does not use) the FP round to integer
            instructions implemented on the POWER5+ processor and other
            processors that support the PowerPC V2.03 architecture.
  
!      'hard-dfp'
!      'no-hard-dfp'
            Generate code that uses (does not use) the decimal
            floating-point instructions implemented on some POWER
            processors.
  
!      'isel'
!      'no-isel'
            Generate code that uses (does not use) ISEL instruction.
  
!      'mfcrf'
!      'no-mfcrf'
            Generate code that uses (does not use) the move from condition
            register field instruction implemented on the POWER4 processor
            and other processors that support the PowerPC V2.01
            architecture.
  
!      'mulhw'
!      'no-mulhw'
            Generate code that uses (does not use) the half-word multiply
            and multiply-accumulate instructions on the IBM 405, 440, 464
            and 476 processors.  These instructions are generated by
            default when targeting those processors.
  
!      'multiple'
!      'no-multiple'
            Generate code that uses (does not use) the load multiple word
            instructions and the store multiple word instructions.
  
!      'update'
!      'no-update'
            Generate code that uses (does not use) the load or store
            instructions that update the base register to the address of
            the calculated memory location.
  
!      'popcntb'
!      'no-popcntb'
            Generate code that uses (does not use) the popcount and
            double-precision FP reciprocal estimate instruction
            implemented on the POWER5 processor and other processors that
            support the PowerPC V2.02 architecture.
  
!      'popcntd'
!      'no-popcntd'
            Generate code that uses (does not use) the popcount
            instruction implemented on the POWER7 processor and other
            processors that support the PowerPC V2.06 architecture.
  
!      'powerpc-gfxopt'
!      'no-powerpc-gfxopt'
            Generate code that uses (does not use) the optional PowerPC
            architecture instructions in the Graphics group, including
            floating-point select.
  
!      'powerpc-gpopt'
!      'no-powerpc-gpopt'
            Generate code that uses (does not use) the optional PowerPC
            architecture instructions in the General Purpose group,
            including floating-point square root.
  
!      'recip-precision'
!      'no-recip-precision'
            Assume (do not assume) that the reciprocal estimate
            instructions provide higher-precision estimates than is
            mandated by the PowerPC ABI.
  
!      'string'
!      'no-string'
            Generate code that uses (does not use) the load string
            instructions and the store string word instructions to save
            multiple registers and do small block moves.
  
!      'vsx'
!      'no-vsx'
            Generate code that uses (does not use) vector/scalar (VSX)
            instructions, and also enable the use of built-in functions
            that allow more direct access to the VSX instruction set.  In
            32-bit code, you cannot enable VSX or AltiVec instructions
!           unless '-mabi=altivec' is used on the command line.
  
!      'friz'
!      'no-friz'
!           Generate (do not generate) the 'friz' instruction when the
!           '-funsafe-math-optimizations' option is used to optimize
            rounding a floating-point value to 64-bit integer and back to
!           floating point.  The 'friz' instruction does not return the
            same value if the floating-point number is too large to fit in
            an integer.
  
!      'avoid-indexed-addresses'
!      'no-avoid-indexed-addresses'
            Generate code that tries to avoid (not avoid) the use of
            indexed load or store instructions.
  
!      'paired'
!      'no-paired'
            Generate code that uses (does not use) the generation of
            PAIRED simd instructions.
  
!      'longcall'
!      'no-longcall'
            Generate code that assumes (does not assume) that all calls
            are far away so that a longer more expensive calling sequence
            is required.
  
!      'cpu=CPU'
            Specify the architecture to generate code for when compiling
!           the function.  If you select the 'target("cpu=power7")'
            attribute when generating 32-bit code, VSX and AltiVec
            instructions are not generated unless you use the
!           '-mabi=altivec' option on the command line.
  
!      'tune=TUNE'
            Specify the architecture to tune for when compiling the
!           function.  If you do not specify the 'target("tune=TUNE")'
!           attribute and you do specify the 'target("cpu=CPU")'
            attribute, compilation tunes for the CPU architecture, and not
            the default tuning specified on the command line.
  
--- 40541,40705 ----
  
  These function attributes are supported by the PowerPC back end:
  
! â€˜longcallâ€™
! â€˜shortcallâ€™
!      The â€˜longcallâ€™ attribute indicates that the function might be far
       away from the call site and require a different (more expensive)
!      calling sequence.  The â€˜shortcallâ€™ attribute indicates that the
       function is always close enough for the shorter calling sequence to
!      be used.  These attributes override both the â€˜-mlongcallâ€™ switch
!      and the â€˜#pragma longcallâ€™ setting.
  
       *Note RS/6000 and PowerPC Options::, for more information on
       whether long calls are necessary.
  
! â€˜target (OPTIONS)â€™
       As discussed in *note Common Function Attributes::, this attribute
       allows specification of target-specific compilation options.
  
       On the PowerPC, the following options are allowed:
  
!      â€˜altivecâ€™
!      â€˜no-altivecâ€™
            Generate code that uses (does not use) AltiVec instructions.
            In 32-bit code, you cannot enable AltiVec instructions unless
!           â€˜-mabi=altivecâ€™ is used on the command line.
  
!      â€˜cmpbâ€™
!      â€˜no-cmpbâ€™
            Generate code that uses (does not use) the compare bytes
            instruction implemented on the POWER6 processor and other
            processors that support the PowerPC V2.05 architecture.
  
!      â€˜dlmzbâ€™
!      â€˜no-dlmzbâ€™
            Generate code that uses (does not use) the string-search
!           â€˜dlmzbâ€™ instruction on the IBM 405, 440, 464 and 476
            processors.  This instruction is generated by default when
            targeting those processors.
  
!      â€˜fprndâ€™
!      â€˜no-fprndâ€™
            Generate code that uses (does not use) the FP round to integer
            instructions implemented on the POWER5+ processor and other
            processors that support the PowerPC V2.03 architecture.
  
!      â€˜hard-dfpâ€™
!      â€˜no-hard-dfpâ€™
            Generate code that uses (does not use) the decimal
            floating-point instructions implemented on some POWER
            processors.
  
!      â€˜iselâ€™
!      â€˜no-iselâ€™
            Generate code that uses (does not use) ISEL instruction.
  
!      â€˜mfcrfâ€™
!      â€˜no-mfcrfâ€™
            Generate code that uses (does not use) the move from condition
            register field instruction implemented on the POWER4 processor
            and other processors that support the PowerPC V2.01
            architecture.
  
!      â€˜mulhwâ€™
!      â€˜no-mulhwâ€™
            Generate code that uses (does not use) the half-word multiply
            and multiply-accumulate instructions on the IBM 405, 440, 464
            and 476 processors.  These instructions are generated by
            default when targeting those processors.
  
!      â€˜multipleâ€™
!      â€˜no-multipleâ€™
            Generate code that uses (does not use) the load multiple word
            instructions and the store multiple word instructions.
  
!      â€˜updateâ€™
!      â€˜no-updateâ€™
            Generate code that uses (does not use) the load or store
            instructions that update the base register to the address of
            the calculated memory location.
  
!      â€˜popcntbâ€™
!      â€˜no-popcntbâ€™
            Generate code that uses (does not use) the popcount and
            double-precision FP reciprocal estimate instruction
            implemented on the POWER5 processor and other processors that
            support the PowerPC V2.02 architecture.
  
!      â€˜popcntdâ€™
!      â€˜no-popcntdâ€™
            Generate code that uses (does not use) the popcount
            instruction implemented on the POWER7 processor and other
            processors that support the PowerPC V2.06 architecture.
  
!      â€˜powerpc-gfxoptâ€™
!      â€˜no-powerpc-gfxoptâ€™
            Generate code that uses (does not use) the optional PowerPC
            architecture instructions in the Graphics group, including
            floating-point select.
  
!      â€˜powerpc-gpoptâ€™
!      â€˜no-powerpc-gpoptâ€™
            Generate code that uses (does not use) the optional PowerPC
            architecture instructions in the General Purpose group,
            including floating-point square root.
  
!      â€˜recip-precisionâ€™
!      â€˜no-recip-precisionâ€™
            Assume (do not assume) that the reciprocal estimate
            instructions provide higher-precision estimates than is
            mandated by the PowerPC ABI.
  
!      â€˜stringâ€™
!      â€˜no-stringâ€™
            Generate code that uses (does not use) the load string
            instructions and the store string word instructions to save
            multiple registers and do small block moves.
  
!      â€˜vsxâ€™
!      â€˜no-vsxâ€™
            Generate code that uses (does not use) vector/scalar (VSX)
            instructions, and also enable the use of built-in functions
            that allow more direct access to the VSX instruction set.  In
            32-bit code, you cannot enable VSX or AltiVec instructions
!           unless â€˜-mabi=altivecâ€™ is used on the command line.
  
!      â€˜frizâ€™
!      â€˜no-frizâ€™
!           Generate (do not generate) the â€˜frizâ€™ instruction when the
!           â€˜-funsafe-math-optimizationsâ€™ option is used to optimize
            rounding a floating-point value to 64-bit integer and back to
!           floating point.  The â€˜frizâ€™ instruction does not return the
            same value if the floating-point number is too large to fit in
            an integer.
  
!      â€˜avoid-indexed-addressesâ€™
!      â€˜no-avoid-indexed-addressesâ€™
            Generate code that tries to avoid (not avoid) the use of
            indexed load or store instructions.
  
!      â€˜pairedâ€™
!      â€˜no-pairedâ€™
            Generate code that uses (does not use) the generation of
            PAIRED simd instructions.
  
!      â€˜longcallâ€™
!      â€˜no-longcallâ€™
            Generate code that assumes (does not assume) that all calls
            are far away so that a longer more expensive calling sequence
            is required.
  
!      â€˜cpu=CPUâ€™
            Specify the architecture to generate code for when compiling
!           the function.  If you select the â€˜target("cpu=power7")â€™
            attribute when generating 32-bit code, VSX and AltiVec
            instructions are not generated unless you use the
!           â€˜-mabi=altivecâ€™ option on the command line.
  
!      â€˜tune=TUNEâ€™
            Specify the architecture to tune for when compiling the
!           function.  If you do not specify the â€˜target("tune=TUNE")â€™
!           attribute and you do specify the â€˜target("cpu=CPU")â€™
            attribute, compilation tunes for the CPU architecture, and not
            the default tuning specified on the command line.
  
*************** File: gcc.info,  Node: RISC-V Function A
*** 40707,40723 ****
  
  These function attributes are supported by the RISC-V back end:
  
! 'naked'
       This attribute allows the compiler to construct the requisite
       function declaration, while allowing the body of the function to be
       assembly code.  The specified function will not have
       prologue/epilogue sequences generated by the compiler.  Only basic
!      'asm' statements can safely be included in naked functions (*note
!      Basic Asm::).  While using extended 'asm' or a mixture of basic
!      'asm' and C code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
! 'interrupt'
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
--- 40715,40731 ----
  
  These function attributes are supported by the RISC-V back end:
  
! â€˜nakedâ€™
       This attribute allows the compiler to construct the requisite
       function declaration, while allowing the body of the function to be
       assembly code.  The specified function will not have
       prologue/epilogue sequences generated by the compiler.  Only basic
!      â€˜asmâ€™ statements can safely be included in naked functions (*note
!      Basic Asm::).  While using extended â€˜asmâ€™ or a mixture of basic
!      â€˜asmâ€™ and C code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
! â€˜interruptâ€™
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
*************** These function attributes are supported
*** 40728,40738 ****
  
            void f (void) __attribute__ ((interrupt ("user")));
  
!      Permissible values for this parameter are 'user', 'supervisor', and
!      'machine'.  If there is no parameter, then it defaults to
!      'machine'.
  
! 'riscv_vector_cc'
       Use this attribute to force the function to use the vector calling
       convention variant.
  
--- 40736,40746 ----
  
            void f (void) __attribute__ ((interrupt ("user")));
  
!      Permissible values for this parameter are â€˜userâ€™, â€˜supervisorâ€™, and
!      â€˜machineâ€™.  If there is no parameter, then it defaults to
!      â€˜machineâ€™.
  
! â€˜riscv_vector_ccâ€™
       Use this attribute to force the function to use the vector calling
       convention variant.
  
*************** RISC-V target.  For the most part, these
*** 40744,40767 ****
  similar command-line options (*note RISC-V Options::), but on a
  per-function basis.
  
! 'arch='
       Specifies the architecture version and architectural extensions to
       use for this function.  The behavior and permissible arguments are
!      the same as for the '-march=' command-line option, in addtion, it
       also support extension enablement list, a list of extension name
!      and prefixed with '+', like 'arch=+zba' means enable 'zba'
       extension.  Multiple extension can be enabled by separating them
!      with a comma.  For example: 'arch=+zba,+zbb'.
  
! 'tune='
       Specifies the core for which to tune the performance of this
       function.  The behavior and permissible arguments are the same as
!      for the '-mtune=' command-line option.
  
! 'cpu='
       Specifies the core for which to tune the performance of this
       function and also whose architectural features to use.  The
!      behavior and valid arguments are the same as for the '-mcpu='
       command-line option.
  
   The above target attributes can be specified as follows:
--- 40752,40775 ----
  similar command-line options (*note RISC-V Options::), but on a
  per-function basis.
  
! â€˜arch=â€™
       Specifies the architecture version and architectural extensions to
       use for this function.  The behavior and permissible arguments are
!      the same as for the â€˜-march=â€™ command-line option, in addtion, it
       also support extension enablement list, a list of extension name
!      and prefixed with â€˜+â€™, like â€˜arch=+zbaâ€™ means enable â€˜zbaâ€™
       extension.  Multiple extension can be enabled by separating them
!      with a comma.  For example: â€˜arch=+zba,+zbbâ€™.
  
! â€˜tune=â€™
       Specifies the core for which to tune the performance of this
       function.  The behavior and permissible arguments are the same as
!      for the â€˜-mtune=â€™ command-line option.
  
! â€˜cpu=â€™
       Specifies the core for which to tune the performance of this
       function and also whose architectural features to use.  The
!      behavior and valid arguments are the same as for the â€˜-mcpu=â€™
       command-line option.
  
   The above target attributes can be specified as follows:
*************** per-function basis.
*** 40773,40779 ****
         return a + 5;
       }
  
!  where 'ATTR-STRING' is one of the attribute strings specified above.
  
   Multiple target function attributes can be specified by separating them
  with a semicolon.  For example:
--- 40781,40787 ----
         return a + 5;
       }
  
!  where â€˜ATTR-STRINGâ€™ is one of the attribute strings specified above.
  
   Multiple target function attributes can be specified by separating them
  with a semicolon.  For example:
*************** with a semicolon.  For example:
*** 40784,40791 ****
         return a + 5;
       }
  
!  is valid and compiles function 'foo' with 'zba' and 'zbb' extensions
! and tunes it for 'rocket'.
  
  
  File: gcc.info,  Node: RL78 Function Attributes,  Next: RX Function Attributes,  Prev: RISC-V Function Attributes,  Up: Function Attributes
--- 40792,40799 ----
         return a + 5;
       }
  
!  is valid and compiles function â€˜fooâ€™ with â€˜zbaâ€™ and â€˜zbbâ€™ extensions
! and tunes it for â€˜rocketâ€™.
  
  
  File: gcc.info,  Node: RL78 Function Attributes,  Next: RX Function Attributes,  Prev: RISC-V Function Attributes,  Up: Function Attributes
*************** File: gcc.info,  Node: RL78 Function Att
*** 40795,40819 ****
  
  These function attributes are supported by the RL78 back end:
  
! 'interrupt'
! 'brk_interrupt'
       These attributes indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
       attribute is present.
  
!      Use 'brk_interrupt' instead of 'interrupt' for handlers intended to
!      be used with the 'BRK' opcode (i.e. those that must end with 'RETB'
!      instead of 'RETI').
  
! 'naked'
       This attribute allows the compiler to construct the requisite
       function declaration, while allowing the body of the function to be
       assembly code.  The specified function will not have
       prologue/epilogue sequences generated by the compiler.  Only basic
!      'asm' statements can safely be included in naked functions (*note
!      Basic Asm::).  While using extended 'asm' or a mixture of basic
!      'asm' and C code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
  
--- 40803,40827 ----
  
  These function attributes are supported by the RL78 back end:
  
! â€˜interruptâ€™
! â€˜brk_interruptâ€™
       These attributes indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
       attribute is present.
  
!      Use â€˜brk_interruptâ€™ instead of â€˜interruptâ€™ for handlers intended to
!      be used with the â€˜BRKâ€™ opcode (i.e. those that must end with â€˜RETBâ€™
!      instead of â€˜RETIâ€™).
  
! â€˜nakedâ€™
       This attribute allows the compiler to construct the requisite
       function declaration, while allowing the body of the function to be
       assembly code.  The specified function will not have
       prologue/epilogue sequences generated by the compiler.  Only basic
!      â€˜asmâ€™ statements can safely be included in naked functions (*note
!      Basic Asm::).  While using extended â€˜asmâ€™ or a mixture of basic
!      â€˜asmâ€™ and C code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
  
*************** File: gcc.info,  Node: RX Function Attri
*** 40824,40836 ****
  
  These function attributes are supported by the RX back end:
  
! 'fast_interrupt'
       Use this attribute on the RX port to indicate that the specified
       function is a fast interrupt handler.  This is just like the
!      'interrupt' attribute, except that 'freit' is used to return
!      instead of 'reit'.
  
! 'interrupt'
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
--- 40832,40844 ----
  
  These function attributes are supported by the RX back end:
  
! â€˜fast_interruptâ€™
       Use this attribute on the RX port to indicate that the specified
       function is a fast interrupt handler.  This is just like the
!      â€˜interruptâ€™ attribute, except that â€˜freitâ€™ is used to return
!      instead of â€˜reitâ€™.
  
! â€˜interruptâ€™
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
*************** These function attributes are supported
*** 40840,40846 ****
       as arguments to the attribute, as well as naming an alternate table
       name.  Parameters are handled sequentially, so one handler can be
       assigned to multiple entries in multiple tables.  One may also pass
!      the magic string '"$default"' which causes the function to be used
       for any unfilled slots in the current table.
  
       This example shows a simple assignment of a function to one vector
--- 40848,40854 ----
       as arguments to the attribute, as well as naming an alternate table
       name.  Parameters are handled sequentially, so one handler can be
       assigned to multiple entries in multiple tables.  One may also pass
!      the magic string â€˜"$default"â€™ which causes the function to be used
       for any unfilled slots in the current table.
  
       This example shows a simple assignment of a function to one vector
*************** These function attributes are supported
*** 40850,40874 ****
  
       This example assigns a function to two slots in the default table
       (using preprocessor macros defined elsewhere) and makes it the
!      default for the 'dct' table:
            void __attribute__ ((interrupt (RXD1_VECT,RXD2_VECT,"dct","$default")))
            	txd1_handler ();
  
! 'naked'
       This attribute allows the compiler to construct the requisite
       function declaration, while allowing the body of the function to be
       assembly code.  The specified function will not have
       prologue/epilogue sequences generated by the compiler.  Only basic
!      'asm' statements can safely be included in naked functions (*note
!      Basic Asm::).  While using extended 'asm' or a mixture of basic
!      'asm' and C code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
! 'vector'
!      This RX attribute is similar to the 'interrupt' attribute,
       including its parameters, but does not make the function an
       interrupt-handler type function (i.e. it retains the normal C
!      function calling ABI). See the 'interrupt' attribute for a
       description of its arguments.
  
  
--- 40858,40882 ----
  
       This example assigns a function to two slots in the default table
       (using preprocessor macros defined elsewhere) and makes it the
!      default for the â€˜dctâ€™ table:
            void __attribute__ ((interrupt (RXD1_VECT,RXD2_VECT,"dct","$default")))
            	txd1_handler ();
  
! â€˜nakedâ€™
       This attribute allows the compiler to construct the requisite
       function declaration, while allowing the body of the function to be
       assembly code.  The specified function will not have
       prologue/epilogue sequences generated by the compiler.  Only basic
!      â€˜asmâ€™ statements can safely be included in naked functions (*note
!      Basic Asm::).  While using extended â€˜asmâ€™ or a mixture of basic
!      â€˜asmâ€™ and C code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
! â€˜vectorâ€™
!      This RX attribute is similar to the â€˜interruptâ€™ attribute,
       including its parameters, but does not make the function an
       interrupt-handler type function (i.e. it retains the normal C
!      function calling ABI). See the â€˜interruptâ€™ attribute for a
       description of its arguments.
  
  
*************** File: gcc.info,  Node: S/390 Function At
*** 40879,40890 ****
  
  These function attributes are supported on the S/390:
  
! 'hotpatch (HALFWORDS-BEFORE-FUNCTION-LABEL,HALFWORDS-AFTER-FUNCTION-LABEL)'
  
       On S/390 System z targets, you can use this function attribute to
       make GCC generate a "hot-patching" function prologue.  If the
!      '-mhotpatch=' command-line option is used at the same time, the
!      'hotpatch' attribute takes precedence.  The first of the two
       arguments specifies the number of halfwords to be added before the
       function label.  A second argument can be used to specify the
       number of halfwords to be added after the function label.  For both
--- 40887,40898 ----
  
  These function attributes are supported on the S/390:
  
! â€˜hotpatch (HALFWORDS-BEFORE-FUNCTION-LABEL,HALFWORDS-AFTER-FUNCTION-LABEL)â€™
  
       On S/390 System z targets, you can use this function attribute to
       make GCC generate a "hot-patching" function prologue.  If the
!      â€˜-mhotpatch=â€™ command-line option is used at the same time, the
!      â€˜hotpatchâ€™ attribute takes precedence.  The first of the two
       arguments specifies the number of halfwords to be added before the
       function label.  A second argument can be used to specify the
       number of halfwords to be added after the function label.  For both
*************** These function attributes are supported
*** 40892,40935 ****
  
       If both arguments are zero, hotpatching is disabled.
  
! 'target (OPTIONS)'
       As discussed in *note Common Function Attributes::, this attribute
       allows specification of target-specific compilation options.
  
       On S/390, the following options are supported:
  
!      'arch='
!      'tune='
!      'stack-guard='
!      'stack-size='
!      'branch-cost='
!      'warn-framesize='
!      'backchain'
!      'no-backchain'
!      'hard-dfp'
!      'no-hard-dfp'
!      'hard-float'
!      'soft-float'
!      'htm'
!      'no-htm'
!      'vx'
!      'no-vx'
!      'packed-stack'
!      'no-packed-stack'
!      'small-exec'
!      'no-small-exec'
!      'mvcle'
!      'no-mvcle'
!      'warn-dynamicstack'
!      'no-warn-dynamicstack'
  
       The options work exactly like the S/390 specific command line
!      options (without the prefix '-m') except that they do not change
       any feature macros.  For example,
  
            target("no-vx")
  
!      does not undefine the '__VEC__' macro.
  
  
  File: gcc.info,  Node: SH Function Attributes,  Next: Symbian OS Function Attributes,  Prev: S/390 Function Attributes,  Up: Function Attributes
--- 40900,40943 ----
  
       If both arguments are zero, hotpatching is disabled.
  
! â€˜target (OPTIONS)â€™
       As discussed in *note Common Function Attributes::, this attribute
       allows specification of target-specific compilation options.
  
       On S/390, the following options are supported:
  
!      â€˜arch=â€™
!      â€˜tune=â€™
!      â€˜stack-guard=â€™
!      â€˜stack-size=â€™
!      â€˜branch-cost=â€™
!      â€˜warn-framesize=â€™
!      â€˜backchainâ€™
!      â€˜no-backchainâ€™
!      â€˜hard-dfpâ€™
!      â€˜no-hard-dfpâ€™
!      â€˜hard-floatâ€™
!      â€˜soft-floatâ€™
!      â€˜htmâ€™
!      â€˜no-htmâ€™
!      â€˜vxâ€™
!      â€˜no-vxâ€™
!      â€˜packed-stackâ€™
!      â€˜no-packed-stackâ€™
!      â€˜small-execâ€™
!      â€˜no-small-execâ€™
!      â€˜mvcleâ€™
!      â€˜no-mvcleâ€™
!      â€˜warn-dynamicstackâ€™
!      â€˜no-warn-dynamicstackâ€™
  
       The options work exactly like the S/390 specific command line
!      options (without the prefix â€˜-mâ€™) except that they do not change
       any feature macros.  For example,
  
            target("no-vx")
  
!      does not undefine the â€˜__VEC__â€™ macro.
  
  
  File: gcc.info,  Node: SH Function Attributes,  Next: Symbian OS Function Attributes,  Prev: S/390 Function Attributes,  Up: Function Attributes
*************** File: gcc.info,  Node: SH Function Attri
*** 40939,40945 ****
  
  These function attributes are supported on the SH family of processors:
  
! 'function_vector'
       On SH2A targets, this attribute declares a function to be called
       using the TBR relative addressing mode.  The argument to this
       attribute is the entry number of the same function in a vector
--- 40947,40953 ----
  
  These function attributes are supported on the SH family of processors:
  
! â€˜function_vectorâ€™
       On SH2A targets, this attribute declares a function to be called
       using the TBR relative addressing mode.  The argument to this
       attribute is the entry number of the same function in a vector
*************** These function attributes are supported
*** 40958,40983 ****
       being made to the same function, it saves 2 bytes of code per each
       of these calls.
  
! 'interrupt_handler'
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
       attribute is present.
  
! 'nosave_low_regs'
       Use this attribute on SH targets to indicate that an
!      'interrupt_handler' function should not save and restore registers
       R0..R7.  This can be used on SH3* and SH4* targets that have a
       second R0..R7 register bank for non-reentrant interrupt handlers.
  
! 'renesas'
       On SH targets this attribute specifies that the function or struct
       follows the Renesas ABI.
  
! 'resbank'
       On the SH2A target, this attribute enables the high-speed register
       saving and restoration using a register bank for
!      'interrupt_handler' routines.  Saving to the bank is performed
       automatically after the CPU accepts an interrupt that uses a
       register bank.
  
--- 40966,40991 ----
       being made to the same function, it saves 2 bytes of code per each
       of these calls.
  
! â€˜interrupt_handlerâ€™
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
       attribute is present.
  
! â€˜nosave_low_regsâ€™
       Use this attribute on SH targets to indicate that an
!      â€˜interrupt_handlerâ€™ function should not save and restore registers
       R0..R7.  This can be used on SH3* and SH4* targets that have a
       second R0..R7 register bank for non-reentrant interrupt handlers.
  
! â€˜renesasâ€™
       On SH targets this attribute specifies that the function or struct
       follows the Renesas ABI.
  
! â€˜resbankâ€™
       On the SH2A target, this attribute enables the high-speed register
       saving and restoration using a register bank for
!      â€˜interrupt_handlerâ€™ routines.  Saving to the bank is performed
       automatically after the CPU accepts an interrupt that uses a
       register bank.
  
*************** These function attributes are supported
*** 40988,40995 ****
       Restoration from the bank is executed by issuing a RESBANK
       instruction.
  
! 'sp_switch'
!      Use this attribute on the SH to indicate an 'interrupt_handler'
       function should switch to an alternate stack.  It expects a string
       argument that names a global variable holding the address of the
       alternate stack.
--- 40996,41003 ----
       Restoration from the bank is executed by issuing a RESBANK
       instruction.
  
! â€˜sp_switchâ€™
!      Use this attribute on the SH to indicate an â€˜interrupt_handlerâ€™
       function should switch to an alternate stack.  It expects a string
       argument that names a global variable holding the address of the
       alternate stack.
*************** These function attributes are supported
*** 40998,41011 ****
            void f () __attribute__ ((interrupt_handler,
                                      sp_switch ("alt_stack")));
  
! 'trap_exit'
!      Use this attribute on the SH for an 'interrupt_handler' to return
!      using 'trapa' instead of 'rte'.  This attribute expects an integer
       argument specifying the trap number to be used.
  
! 'trapa_handler'
       On SH targets this function attribute is similar to
!      'interrupt_handler' but it does not save and restore all registers.
  
  
  File: gcc.info,  Node: Symbian OS Function Attributes,  Next: V850 Function Attributes,  Prev: SH Function Attributes,  Up: Function Attributes
--- 41006,41019 ----
            void f () __attribute__ ((interrupt_handler,
                                      sp_switch ("alt_stack")));
  
! â€˜trap_exitâ€™
!      Use this attribute on the SH for an â€˜interrupt_handlerâ€™ to return
!      using â€˜trapaâ€™ instead of â€˜rteâ€™.  This attribute expects an integer
       argument specifying the trap number to be used.
  
! â€˜trapa_handlerâ€™
       On SH targets this function attribute is similar to
!      â€˜interrupt_handlerâ€™ but it does not save and restore all registers.
  
  
  File: gcc.info,  Node: Symbian OS Function Attributes,  Next: V850 Function Attributes,  Prev: SH Function Attributes,  Up: Function Attributes
*************** File: gcc.info,  Node: Symbian OS Functi
*** 41014,41020 ****
  .......................................
  
  *Note Microsoft Windows Function Attributes::, for discussion of the
! 'dllexport' and 'dllimport' attributes.
  
  
  File: gcc.info,  Node: V850 Function Attributes,  Next: Visium Function Attributes,  Prev: Symbian OS Function Attributes,  Up: Function Attributes
--- 41022,41028 ----
  .......................................
  
  *Note Microsoft Windows Function Attributes::, for discussion of the
! â€˜dllexportâ€™ and â€˜dllimportâ€™ attributes.
  
  
  File: gcc.info,  Node: V850 Function Attributes,  Next: Visium Function Attributes,  Prev: Symbian OS Function Attributes,  Up: Function Attributes
*************** File: gcc.info,  Node: V850 Function Att
*** 41024,41031 ****
  
  The V850 back end supports these function attributes:
  
! 'interrupt'
! 'interrupt_handler'
       Use these attributes to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when either
--- 41032,41039 ----
  
  The V850 back end supports these function attributes:
  
! â€˜interruptâ€™
! â€˜interrupt_handlerâ€™
       Use these attributes to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when either
*************** File: gcc.info,  Node: Visium Function A
*** 41039,41045 ****
  
  These function attributes are supported by the Visium back end:
  
! 'interrupt'
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
--- 41047,41053 ----
  
  These function attributes are supported by the Visium back end:
  
! â€˜interruptâ€™
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
*************** File: gcc.info,  Node: x86 Function Attr
*** 41053,41097 ****
  
  These function attributes are supported by the x86 back end:
  
! 'cdecl'
!      On the x86-32 targets, the 'cdecl' attribute causes the compiler to
       assume that the calling function pops off the stack space used to
       pass arguments.  This is useful to override the effects of the
!      '-mrtd' switch.
  
! 'fastcall'
!      On x86-32 targets, the 'fastcall' attribute causes the compiler to
       pass the first argument (if of integral type) in the register ECX
       and the second argument (if of integral type) in the register EDX.
       Subsequent and other typed arguments are passed on the stack.  The
       called function pops the arguments off the stack.  If the number of
       arguments is variable all arguments are pushed on the stack.
  
! 'thiscall'
!      On x86-32 targets, the 'thiscall' attribute causes the compiler to
       pass the first argument (if of integral type) in the register ECX.
       Subsequent and other typed arguments are passed on the stack.  The
       called function pops the arguments off the stack.  If the number of
       arguments is variable all arguments are pushed on the stack.  The
!      'thiscall' attribute is intended for C++ non-static member
       functions.  As a GCC extension, this calling convention can be used
       for C functions and for static member methods.
  
! 'ms_abi'
! 'sysv_abi'
  
       On 32-bit and 64-bit x86 targets, you can use an ABI attribute to
       indicate which calling convention should be used for a function.
!      The 'ms_abi' attribute tells the compiler to use the Microsoft ABI,
!      while the 'sysv_abi' attribute tells the compiler to use the System
       V ELF ABI, which is used on GNU/Linux and other systems.  The
       default is to use the Microsoft ABI when targeting Windows.  On all
       other systems, the default is the System V ELF ABI.
  
!      Note, the 'ms_abi' attribute for Microsoft Windows 64-bit targets
!      currently requires the '-maccumulate-outgoing-args' option.
  
! 'callee_pop_aggregate_return (NUMBER)'
  
       On x86-32 targets, you can use this attribute to control how
       aggregates are returned in memory.  If the caller is responsible
--- 41061,41105 ----
  
  These function attributes are supported by the x86 back end:
  
! â€˜cdeclâ€™
!      On the x86-32 targets, the â€˜cdeclâ€™ attribute causes the compiler to
       assume that the calling function pops off the stack space used to
       pass arguments.  This is useful to override the effects of the
!      â€˜-mrtdâ€™ switch.
  
! â€˜fastcallâ€™
!      On x86-32 targets, the â€˜fastcallâ€™ attribute causes the compiler to
       pass the first argument (if of integral type) in the register ECX
       and the second argument (if of integral type) in the register EDX.
       Subsequent and other typed arguments are passed on the stack.  The
       called function pops the arguments off the stack.  If the number of
       arguments is variable all arguments are pushed on the stack.
  
! â€˜thiscallâ€™
!      On x86-32 targets, the â€˜thiscallâ€™ attribute causes the compiler to
       pass the first argument (if of integral type) in the register ECX.
       Subsequent and other typed arguments are passed on the stack.  The
       called function pops the arguments off the stack.  If the number of
       arguments is variable all arguments are pushed on the stack.  The
!      â€˜thiscallâ€™ attribute is intended for C++ non-static member
       functions.  As a GCC extension, this calling convention can be used
       for C functions and for static member methods.
  
! â€˜ms_abiâ€™
! â€˜sysv_abiâ€™
  
       On 32-bit and 64-bit x86 targets, you can use an ABI attribute to
       indicate which calling convention should be used for a function.
!      The â€˜ms_abiâ€™ attribute tells the compiler to use the Microsoft ABI,
!      while the â€˜sysv_abiâ€™ attribute tells the compiler to use the System
       V ELF ABI, which is used on GNU/Linux and other systems.  The
       default is to use the Microsoft ABI when targeting Windows.  On all
       other systems, the default is the System V ELF ABI.
  
!      Note, the â€˜ms_abiâ€™ attribute for Microsoft Windows 64-bit targets
!      currently requires the â€˜-maccumulate-outgoing-argsâ€™ option.
  
! â€˜callee_pop_aggregate_return (NUMBER)â€™
  
       On x86-32 targets, you can use this attribute to control how
       aggregates are returned in memory.  If the caller is responsible
*************** These function attributes are supported
*** 41103,41127 ****
       hidden pointer.  However, on x86-32 Microsoft Windows targets, the
       compiler assumes that the caller pops the stack for hidden pointer.
  
! 'ms_hook_prologue'
  
       On 32-bit and 64-bit x86 targets, you can use this function
       attribute to make GCC generate the "hot-patching" function prologue
       used in Win32 API functions in Microsoft Windows XP Service Pack 2
       and newer.
  
! 'naked'
       This attribute allows the compiler to construct the requisite
       function declaration, while allowing the body of the function to be
       assembly code.  The specified function will not have
       prologue/epilogue sequences generated by the compiler.  Only basic
!      'asm' statements can safely be included in naked functions (*note
!      Basic Asm::).  While using extended 'asm' or a mixture of basic
!      'asm' and C code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
! 'regparm (NUMBER)'
!      On x86-32 targets, the 'regparm' attribute causes the compiler to
       pass arguments number one to NUMBER if they are of integral type in
       registers EAX, EDX, and ECX instead of on the stack.  Functions
       that take a variable number of arguments continue to be passed all
--- 41111,41135 ----
       hidden pointer.  However, on x86-32 Microsoft Windows targets, the
       compiler assumes that the caller pops the stack for hidden pointer.
  
! â€˜ms_hook_prologueâ€™
  
       On 32-bit and 64-bit x86 targets, you can use this function
       attribute to make GCC generate the "hot-patching" function prologue
       used in Win32 API functions in Microsoft Windows XP Service Pack 2
       and newer.
  
! â€˜nakedâ€™
       This attribute allows the compiler to construct the requisite
       function declaration, while allowing the body of the function to be
       assembly code.  The specified function will not have
       prologue/epilogue sequences generated by the compiler.  Only basic
!      â€˜asmâ€™ statements can safely be included in naked functions (*note
!      Basic Asm::).  While using extended â€˜asmâ€™ or a mixture of basic
!      â€˜asmâ€™ and C code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
! â€˜regparm (NUMBER)â€™
!      On x86-32 targets, the â€˜regparmâ€™ attribute causes the compiler to
       pass arguments number one to NUMBER if they are of integral type in
       registers EAX, EDX, and ECX instead of on the stack.  Functions
       that take a variable number of arguments continue to be passed all
*************** These function attributes are supported
*** 41137,41195 ****
       save EAX, EDX and ECX. (Lazy binding can be disabled with the
       linker or the loader if desired, to avoid the problem.)
  
! 'sseregparm'
!      On x86-32 targets with SSE support, the 'sseregparm' attribute
       causes the compiler to pass up to 3 floating-point arguments in SSE
       registers instead of on the stack.  Functions that take a variable
       number of arguments continue to pass all of their floating-point
       arguments on the stack.
  
! 'force_align_arg_pointer'
!      On x86 targets, the 'force_align_arg_pointer' attribute may be
       applied to individual function definitions, generating an alternate
       prologue and epilogue that realigns the run-time stack if
       necessary.  This supports mixing legacy codes that run with a
       4-byte aligned stack with modern codes that keep a 16-byte stack
       for SSE compatibility.
  
! 'stdcall'
!      On x86-32 targets, the 'stdcall' attribute causes the compiler to
       assume that the called function pops off the stack space used to
       pass arguments, unless it takes a variable number of arguments.
  
! 'no_callee_saved_registers'
       Use this attribute to indicate that the specified function has no
       callee-saved registers.  That is, all registers can be used as
       scratch registers.  For example, this attribute can be used for a
       function called from the interrupt handler assembly stub which will
       preserve all registers and return from interrupt.
  
! 'no_caller_saved_registers'
       Use this attribute to indicate that the specified function has no
       caller-saved registers.  That is, all registers are callee-saved.
       For example, this attribute can be used for a function called from
       an interrupt handler.  The compiler generates proper function entry
       and exit sequences to save and restore any modified registers,
       except for the EFLAGS register.  Since GCC doesn't preserve SSE,
!      MMX nor x87 states, the GCC option '-mgeneral-regs-only' should be
!      used to compile functions with 'no_caller_saved_registers'
       attribute.
  
! 'interrupt'
       Use this attribute to indicate that the specified function is an
       interrupt handler or an exception handler (depending on parameters
       passed to the function, explained further).  The compiler generates
       function entry and exit sequences suitable for use in an interrupt
!      handler when this attribute is present.  The 'IRET' instruction,
!      instead of the 'RET' instruction, is used to return from interrupt
       handlers.  All registers, except for the EFLAGS register which is
!      restored by the 'IRET' instruction, are preserved by the compiler.
       Since GCC doesn't preserve SSE, MMX nor x87 states, the GCC option
!      '-mgeneral-regs-only' should be used to compile interrupt and
       exception handlers.
  
       Any interruptible-without-stack-switch code must be compiled with
!      '-mno-red-zone' since interrupt handlers can and will, because of
       the hardware design, touch the red zone.
  
       An interrupt handler must be declared with a mandatory pointer
--- 41145,41203 ----
       save EAX, EDX and ECX. (Lazy binding can be disabled with the
       linker or the loader if desired, to avoid the problem.)
  
! â€˜sseregparmâ€™
!      On x86-32 targets with SSE support, the â€˜sseregparmâ€™ attribute
       causes the compiler to pass up to 3 floating-point arguments in SSE
       registers instead of on the stack.  Functions that take a variable
       number of arguments continue to pass all of their floating-point
       arguments on the stack.
  
! â€˜force_align_arg_pointerâ€™
!      On x86 targets, the â€˜force_align_arg_pointerâ€™ attribute may be
       applied to individual function definitions, generating an alternate
       prologue and epilogue that realigns the run-time stack if
       necessary.  This supports mixing legacy codes that run with a
       4-byte aligned stack with modern codes that keep a 16-byte stack
       for SSE compatibility.
  
! â€˜stdcallâ€™
!      On x86-32 targets, the â€˜stdcallâ€™ attribute causes the compiler to
       assume that the called function pops off the stack space used to
       pass arguments, unless it takes a variable number of arguments.
  
! â€˜no_callee_saved_registersâ€™
       Use this attribute to indicate that the specified function has no
       callee-saved registers.  That is, all registers can be used as
       scratch registers.  For example, this attribute can be used for a
       function called from the interrupt handler assembly stub which will
       preserve all registers and return from interrupt.
  
! â€˜no_caller_saved_registersâ€™
       Use this attribute to indicate that the specified function has no
       caller-saved registers.  That is, all registers are callee-saved.
       For example, this attribute can be used for a function called from
       an interrupt handler.  The compiler generates proper function entry
       and exit sequences to save and restore any modified registers,
       except for the EFLAGS register.  Since GCC doesn't preserve SSE,
!      MMX nor x87 states, the GCC option â€˜-mgeneral-regs-onlyâ€™ should be
!      used to compile functions with â€˜no_caller_saved_registersâ€™
       attribute.
  
! â€˜interruptâ€™
       Use this attribute to indicate that the specified function is an
       interrupt handler or an exception handler (depending on parameters
       passed to the function, explained further).  The compiler generates
       function entry and exit sequences suitable for use in an interrupt
!      handler when this attribute is present.  The â€˜IRETâ€™ instruction,
!      instead of the â€˜RETâ€™ instruction, is used to return from interrupt
       handlers.  All registers, except for the EFLAGS register which is
!      restored by the â€˜IRETâ€™ instruction, are preserved by the compiler.
       Since GCC doesn't preserve SSE, MMX nor x87 states, the GCC option
!      â€˜-mgeneral-regs-onlyâ€™ should be used to compile interrupt and
       exception handlers.
  
       Any interruptible-without-stack-switch code must be compiled with
!      â€˜-mno-red-zoneâ€™ since interrupt handlers can and will, because of
       the hardware design, touch the red zone.
  
       An interrupt handler must be declared with a mandatory pointer
*************** These function attributes are supported
*** 41203,41216 ****
            {
            }
  
!      and you must define 'struct interrupt_frame' as described in the
       processor's manual.
  
       Exception handlers differ from interrupt handlers because the
       system pushes an error code on the stack.  An exception handler
       declaration is similar to that for an interrupt handler, but with a
       different mandatory function signature.  The compiler arranges to
!      pop the error code off the stack before the 'IRET' instruction.
  
            #ifdef __x86_64__
            typedef unsigned long long int uword_t;
--- 41211,41224 ----
            {
            }
  
!      and you must define â€˜struct interrupt_frameâ€™ as described in the
       processor's manual.
  
       Exception handlers differ from interrupt handlers because the
       system pushes an error code on the stack.  An exception handler
       declaration is similar to that for an interrupt handler, but with a
       different mandatory function signature.  The compiler arranges to
!      pop the error code off the stack before the â€˜IRETâ€™ instruction.
  
            #ifdef __x86_64__
            typedef unsigned long long int uword_t;
*************** These function attributes are supported
*** 41231,41790 ****
       error code; you should use an interrupt handler in other cases.
       The system will crash if the wrong kind of handler is used.
  
! 'target (OPTIONS)'
       As discussed in *note Common Function Attributes::, this attribute
       allows specification of target-specific compilation options.
  
       On the x86, the following options are allowed:
!      '3dnow'
!      'no-3dnow'
            Enable/disable the generation of the 3DNow! instructions.
  
!      '3dnowa'
!      'no-3dnowa'
            Enable/disable the generation of the enhanced 3DNow!
            instructions.
  
!      'abm'
!      'no-abm'
            Enable/disable the generation of the advanced bit
            instructions.
  
!      'adx'
!      'no-adx'
            Enable/disable the generation of the ADX instructions.
  
!      'aes'
!      'no-aes'
            Enable/disable the generation of the AES instructions.
  
!      'avx'
!      'no-avx'
            Enable/disable the generation of the AVX instructions.
  
!      'avx2'
!      'no-avx2'
            Enable/disable the generation of the AVX2 instructions.
  
!      'avx512bitalg'
!      'no-avx512bitalg'
            Enable/disable the generation of the AVX512BITALG
            instructions.
  
!      'avx512bw'
!      'no-avx512bw'
            Enable/disable the generation of the AVX512BW instructions.
  
!      'avx512cd'
!      'no-avx512cd'
            Enable/disable the generation of the AVX512CD instructions.
  
!      'avx512dq'
!      'no-avx512dq'
            Enable/disable the generation of the AVX512DQ instructions.
  
!      'avx512er'
!      'no-avx512er'
            Enable/disable the generation of the AVX512ER instructions.
  
!      'avx512f'
!      'no-avx512f'
            Enable/disable the generation of the AVX512F instructions.
  
!      'avx512ifma'
!      'no-avx512ifma'
            Enable/disable the generation of the AVX512IFMA instructions.
  
!      'avx512vbmi'
!      'no-avx512vbmi'
            Enable/disable the generation of the AVX512VBMI instructions.
  
!      'avx512vbmi2'
!      'no-avx512vbmi2'
            Enable/disable the generation of the AVX512VBMI2 instructions.
  
!      'avx512vl'
!      'no-avx512vl'
            Enable/disable the generation of the AVX512VL instructions.
  
!      'avx512vnni'
!      'no-avx512vnni'
            Enable/disable the generation of the AVX512VNNI instructions.
  
!      'avx512vpopcntdq'
!      'no-avx512vpopcntdq'
            Enable/disable the generation of the AVX512VPOPCNTDQ
            instructions.
  
!      'bmi'
!      'no-bmi'
            Enable/disable the generation of the BMI instructions.
  
!      'bmi2'
!      'no-bmi2'
            Enable/disable the generation of the BMI2 instructions.
  
!      'cldemote'
!      'no-cldemote'
            Enable/disable the generation of the CLDEMOTE instructions.
  
!      'clflushopt'
!      'no-clflushopt'
            Enable/disable the generation of the CLFLUSHOPT instructions.
  
!      'clwb'
!      'no-clwb'
            Enable/disable the generation of the CLWB instructions.
  
!      'clzero'
!      'no-clzero'
            Enable/disable the generation of the CLZERO instructions.
  
!      'crc32'
!      'no-crc32'
            Enable/disable the generation of the CRC32 instructions.
  
!      'cx16'
!      'no-cx16'
            Enable/disable the generation of the CMPXCHG16B instructions.
  
!      'default'
            *Note Function Multiversioning::, where it is used to specify
            the default function version.
  
!      'f16c'
!      'no-f16c'
            Enable/disable the generation of the F16C instructions.
  
!      'fma'
!      'no-fma'
            Enable/disable the generation of the FMA instructions.
  
!      'fma4'
!      'no-fma4'
            Enable/disable the generation of the FMA4 instructions.
  
!      'fsgsbase'
!      'no-fsgsbase'
            Enable/disable the generation of the FSGSBASE instructions.
  
!      'fxsr'
!      'no-fxsr'
            Enable/disable the generation of the FXSR instructions.
  
!      'gfni'
!      'no-gfni'
            Enable/disable the generation of the GFNI instructions.
  
!      'hle'
!      'no-hle'
            Enable/disable the generation of the HLE instruction prefixes.
  
!      'lwp'
!      'no-lwp'
            Enable/disable the generation of the LWP instructions.
  
!      'lzcnt'
!      'no-lzcnt'
            Enable/disable the generation of the LZCNT instructions.
  
!      'mmx'
!      'no-mmx'
            Enable/disable the generation of the MMX instructions.
  
!      'movbe'
!      'no-movbe'
            Enable/disable the generation of the MOVBE instructions.
  
!      'movdir64b'
!      'no-movdir64b'
            Enable/disable the generation of the MOVDIR64B instructions.
  
!      'movdiri'
!      'no-movdiri'
            Enable/disable the generation of the MOVDIRI instructions.
  
!      'mwait'
!      'no-mwait'
            Enable/disable the generation of the MWAIT and MONITOR
            instructions.
  
!      'mwaitx'
!      'no-mwaitx'
            Enable/disable the generation of the MWAITX instructions.
  
!      'pclmul'
!      'no-pclmul'
            Enable/disable the generation of the PCLMUL instructions.
  
!      'pconfig'
!      'no-pconfig'
            Enable/disable the generation of the PCONFIG instructions.
  
!      'pku'
!      'no-pku'
            Enable/disable the generation of the PKU instructions.
  
!      'popcnt'
!      'no-popcnt'
            Enable/disable the generation of the POPCNT instruction.
  
!      'prfchw'
!      'no-prfchw'
            Enable/disable the generation of the PREFETCHW instruction.
  
!      'ptwrite'
!      'no-ptwrite'
            Enable/disable the generation of the PTWRITE instructions.
  
!      'rdpid'
!      'no-rdpid'
            Enable/disable the generation of the RDPID instructions.
  
!      'rdrnd'
!      'no-rdrnd'
            Enable/disable the generation of the RDRND instructions.
  
!      'rdseed'
!      'no-rdseed'
            Enable/disable the generation of the RDSEED instructions.
  
!      'rtm'
!      'no-rtm'
            Enable/disable the generation of the RTM instructions.
  
!      'sahf'
!      'no-sahf'
            Enable/disable the generation of the SAHF instructions.
  
!      'sgx'
!      'no-sgx'
            Enable/disable the generation of the SGX instructions.
  
!      'sha'
!      'no-sha'
            Enable/disable the generation of the SHA instructions.
  
!      'shstk'
!      'no-shstk'
            Enable/disable the shadow stack built-in functions from CET.
  
!      'sse'
!      'no-sse'
            Enable/disable the generation of the SSE instructions.
  
!      'sse2'
!      'no-sse2'
            Enable/disable the generation of the SSE2 instructions.
  
!      'sse3'
!      'no-sse3'
            Enable/disable the generation of the SSE3 instructions.
  
!      'sse4'
!      'no-sse4'
            Enable/disable the generation of the SSE4 instructions (both
            SSE4.1 and SSE4.2).
  
!      'sse4.1'
!      'no-sse4.1'
            Enable/disable the generation of the SSE4.1 instructions.
  
!      'sse4.2'
!      'no-sse4.2'
            Enable/disable the generation of the SSE4.2 instructions.
  
!      'sse4a'
!      'no-sse4a'
            Enable/disable the generation of the SSE4A instructions.
  
!      'ssse3'
!      'no-ssse3'
            Enable/disable the generation of the SSSE3 instructions.
  
!      'tbm'
!      'no-tbm'
            Enable/disable the generation of the TBM instructions.
  
!      'vaes'
!      'no-vaes'
            Enable/disable the generation of the VAES instructions.
  
!      'vpclmulqdq'
!      'no-vpclmulqdq'
            Enable/disable the generation of the VPCLMULQDQ instructions.
  
!      'waitpkg'
!      'no-waitpkg'
            Enable/disable the generation of the WAITPKG instructions.
  
!      'wbnoinvd'
!      'no-wbnoinvd'
            Enable/disable the generation of the WBNOINVD instructions.
  
!      'xop'
!      'no-xop'
            Enable/disable the generation of the XOP instructions.
  
!      'xsave'
!      'no-xsave'
            Enable/disable the generation of the XSAVE instructions.
  
!      'xsavec'
!      'no-xsavec'
            Enable/disable the generation of the XSAVEC instructions.
  
!      'xsaveopt'
!      'no-xsaveopt'
            Enable/disable the generation of the XSAVEOPT instructions.
  
!      'xsaves'
!      'no-xsaves'
            Enable/disable the generation of the XSAVES instructions.
  
!      'amx-tile'
!      'no-amx-tile'
            Enable/disable the generation of the AMX-TILE instructions.
  
!      'amx-int8'
!      'no-amx-int8'
            Enable/disable the generation of the AMX-INT8 instructions.
  
!      'amx-bf16'
!      'no-amx-bf16'
            Enable/disable the generation of the AMX-BF16 instructions.
  
!      'uintr'
!      'no-uintr'
            Enable/disable the generation of the UINTR instructions.
  
!      'hreset'
!      'no-hreset'
            Enable/disable the generation of the HRESET instruction.
  
!      'kl'
!      'no-kl'
            Enable/disable the generation of the KEYLOCKER instructions.
  
!      'widekl'
!      'no-widekl'
            Enable/disable the generation of the WIDEKL instructions.
  
!      'avxvnni'
!      'no-avxvnni'
            Enable/disable the generation of the AVXVNNI instructions.
  
!      'avxifma'
!      'no-avxifma'
            Enable/disable the generation of the AVXIFMA instructions.
  
!      'avxvnniint8'
!      'no-avxvnniint8'
            Enable/disable the generation of the AVXVNNIINT8 instructions.
  
!      'avxneconvert'
!      'no-avxneconvert'
            Enable/disable the generation of the AVXNECONVERT
            instructions.
  
!      'cmpccxadd'
!      'no-cmpccxadd'
            Enable/disable the generation of the CMPccXADD instructions.
  
!      'amx-fp16'
!      'no-amx-fp16'
            Enable/disable the generation of the AMX-FP16 instructions.
  
!      'prefetchi'
!      'no-prefetchi'
            Enable/disable the generation of the PREFETCHI instructions.
  
!      'raoint'
!      'no-raoint'
            Enable/disable the generation of the RAOINT instructions.
  
!      'amx-complex'
!      'no-amx-complex'
            Enable/disable the generation of the AMX-COMPLEX instructions.
  
!      'avxvnniint16'
!      'no-avxvnniint16'
            Enable/disable the generation of the AVXVNNIINT16
            instructions.
  
!      'sm3'
!      'no-sm3'
            Enable/disable the generation of the SM3 instructions.
  
!      'sha512'
!      'no-sha512'
            Enable/disable the generation of the SHA512 instructions.
  
!      'sm4'
!      'no-sm4'
            Enable/disable the generation of the SM4 instructions.
  
!      'usermsr'
!      'no-usermsr'
            Enable/disable the generation of the USER_MSR instructions.
  
!      'apxf'
!      'no-apxf'
            Enable/disable the generation of the APX features, including
            EGPR, PUSH2POP2, NDD and PPX.
  
!      'avx10.1-256'
!      'no-avx10.1-256'
            Enable the generation of the AVX10.1 instructions with 256 bit
            support.  Disable the generation of the AVX10.1 instructions.
  
!      'avx10.1'
!      'no-avx10.1'
            Enable the generation of the AVX10.1 instructions with 512 bit
            support.  Disable the generation of the AVX10.1 instructions.
  
!      'avx10.1-512'
!      'no-avx10.1-512'
            Enable the generation of the AVX10.1 instructions with 512 bit
            support.  Disable the generation of the AVX10.1 instructions.
  
!      'avx10.2'
!      'no-avx10.2'
            Enable/Disable the generation of the AVX10.2 instructions.
  
!      'amx-avx512'
!      'no-amx-avx512'
            Enable/disable the generation of the AMX-AVX512 instructions.
  
!      'amx-tf32'
!      'no-amx-tf32'
            Enable/disable the generation of the AMX-TF32 instructions.
  
!      'amx-transpose'
!      'no-amx-transpose'
            Enable/disable the generation of the AMX-TRANSPOSE
            instructions.
  
!      'amx-fp8'
!      'no-amx-fp8'
            Enable/disable the generation of the AMX-FP8 instructions.
  
!      'movrs'
!      'no-movrs'
            Enable/disable the generation of the MOVRS instructions.
  
!      'amx-movrs'
!      'no-amx-movrs'
            Enable/disable the generation of the AMX-MOVRS instructions.
  
!      'cld'
!      'no-cld'
            Enable/disable the generation of the CLD before string moves.
  
!      'fancy-math-387'
!      'no-fancy-math-387'
!           Enable/disable the generation of the 'sin', 'cos', and 'sqrt'
            instructions on the 387 floating-point unit.
  
!      'ieee-fp'
!      'no-ieee-fp'
            Enable/disable the generation of floating point that depends
            on IEEE arithmetic.
  
!      'inline-all-stringops'
!      'no-inline-all-stringops'
            Enable/disable inlining of string operations.
  
!      'inline-stringops-dynamically'
!      'no-inline-stringops-dynamically'
            Enable/disable the generation of the inline code to do small
            string operations and calling the library routines for large
            operations.
  
!      'align-stringops'
!      'no-align-stringops'
            Do/do not align destination of inlined string operations.
  
!      'recip'
!      'no-recip'
            Enable/disable the generation of RCPSS, RCPPS, RSQRTSS and
            RSQRTPS instructions followed an additional Newton-Raphson
            step instead of doing a floating-point division.
  
!      'general-regs-only'
            Generate code which uses only the general registers.
  
!      'arch=ARCH'
            Specify the architecture to generate code for in compiling the
            function.
  
!      'tune=TUNE'
            Specify the architecture to tune for in compiling the
            function.
  
!      'fpmath=FPMATH'
            Specify which floating-point unit to use.  You must specify
!           the 'target("fpmath=sse,387")' option as
!           'target("fpmath=sse+387")' because the comma would separate
            different options.
  
!      'prefer-vector-width=OPT'
!           On x86 targets, the 'prefer-vector-width' attribute informs
            the compiler to use OPT-bit vector width in instructions
            instead of the default on the selected platform.
  
            Valid OPT values are:
  
!           'none'
                 No extra limitations applied to GCC other than defined by
                 the selected platform.
  
!           '128'
                 Prefer 128-bit vector width for instructions.
  
!           '256'
                 Prefer 256-bit vector width for instructions.
  
!           '512'
                 Prefer 512-bit vector width for instructions.
  
! 'indirect_branch("CHOICE")'
!      On x86 targets, the 'indirect_branch' attribute causes the compiler
!      to convert indirect call and jump with CHOICE.  'keep' keeps
!      indirect call and jump unmodified.  'thunk' converts indirect call
!      and jump to call and return thunk.  'thunk-inline' converts
       indirect call and jump to inlined call and return thunk.
!      'thunk-extern' converts indirect call and jump to external call and
       return thunk provided in a separate object file.
  
! 'function_return("CHOICE")'
!      On x86 targets, the 'function_return' attribute causes the compiler
!      to convert function return with CHOICE.  'keep' keeps function
!      return unmodified.  'thunk' converts function return to call and
!      return thunk.  'thunk-inline' converts function return to inlined
!      call and return thunk.  'thunk-extern' converts function return to
       external call and return thunk provided in a separate object file.
  
! 'nocf_check'
!      The 'nocf_check' attribute on a function is used to inform the
       compiler that the function's prologue should not be instrumented
!      when compiled with the '-fcf-protection=branch' option.  The
       compiler assumes that the function's address is a valid target for
       a control-flow transfer.
  
!      The 'nocf_check' attribute on a type of pointer to function is used
       to inform the compiler that a call through the pointer should not
!      be instrumented when compiled with the '-fcf-protection=branch'
       option.  The compiler assumes that the function's address from the
       pointer is a valid target for a control-flow transfer.  A direct
       function call through a function name is assumed to be a safe call
       thus direct calls are not instrumented by the compiler.
  
!      The 'nocf_check' attribute is applied to an object's type.  In case
       of assignment of a function address or a function pointer to
       another pointer, the attribute is not carried over from the
       right-hand object's type; the type of left-hand object stays
!      unchanged.  The compiler checks for 'nocf_check' attribute mismatch
       and reports a warning in case of mismatch.
  
            {
--- 41239,41798 ----
       error code; you should use an interrupt handler in other cases.
       The system will crash if the wrong kind of handler is used.
  
! â€˜target (OPTIONS)â€™
       As discussed in *note Common Function Attributes::, this attribute
       allows specification of target-specific compilation options.
  
       On the x86, the following options are allowed:
!      â€˜3dnowâ€™
!      â€˜no-3dnowâ€™
            Enable/disable the generation of the 3DNow! instructions.
  
!      â€˜3dnowaâ€™
!      â€˜no-3dnowaâ€™
            Enable/disable the generation of the enhanced 3DNow!
            instructions.
  
!      â€˜abmâ€™
!      â€˜no-abmâ€™
            Enable/disable the generation of the advanced bit
            instructions.
  
!      â€˜adxâ€™
!      â€˜no-adxâ€™
            Enable/disable the generation of the ADX instructions.
  
!      â€˜aesâ€™
!      â€˜no-aesâ€™
            Enable/disable the generation of the AES instructions.
  
!      â€˜avxâ€™
!      â€˜no-avxâ€™
            Enable/disable the generation of the AVX instructions.
  
!      â€˜avx2â€™
!      â€˜no-avx2â€™
            Enable/disable the generation of the AVX2 instructions.
  
!      â€˜avx512bitalgâ€™
!      â€˜no-avx512bitalgâ€™
            Enable/disable the generation of the AVX512BITALG
            instructions.
  
!      â€˜avx512bwâ€™
!      â€˜no-avx512bwâ€™
            Enable/disable the generation of the AVX512BW instructions.
  
!      â€˜avx512cdâ€™
!      â€˜no-avx512cdâ€™
            Enable/disable the generation of the AVX512CD instructions.
  
!      â€˜avx512dqâ€™
!      â€˜no-avx512dqâ€™
            Enable/disable the generation of the AVX512DQ instructions.
  
!      â€˜avx512erâ€™
!      â€˜no-avx512erâ€™
            Enable/disable the generation of the AVX512ER instructions.
  
!      â€˜avx512fâ€™
!      â€˜no-avx512fâ€™
            Enable/disable the generation of the AVX512F instructions.
  
!      â€˜avx512ifmaâ€™
!      â€˜no-avx512ifmaâ€™
            Enable/disable the generation of the AVX512IFMA instructions.
  
!      â€˜avx512vbmiâ€™
!      â€˜no-avx512vbmiâ€™
            Enable/disable the generation of the AVX512VBMI instructions.
  
!      â€˜avx512vbmi2â€™
!      â€˜no-avx512vbmi2â€™
            Enable/disable the generation of the AVX512VBMI2 instructions.
  
!      â€˜avx512vlâ€™
!      â€˜no-avx512vlâ€™
            Enable/disable the generation of the AVX512VL instructions.
  
!      â€˜avx512vnniâ€™
!      â€˜no-avx512vnniâ€™
            Enable/disable the generation of the AVX512VNNI instructions.
  
!      â€˜avx512vpopcntdqâ€™
!      â€˜no-avx512vpopcntdqâ€™
            Enable/disable the generation of the AVX512VPOPCNTDQ
            instructions.
  
!      â€˜bmiâ€™
!      â€˜no-bmiâ€™
            Enable/disable the generation of the BMI instructions.
  
!      â€˜bmi2â€™
!      â€˜no-bmi2â€™
            Enable/disable the generation of the BMI2 instructions.
  
!      â€˜cldemoteâ€™
!      â€˜no-cldemoteâ€™
            Enable/disable the generation of the CLDEMOTE instructions.
  
!      â€˜clflushoptâ€™
!      â€˜no-clflushoptâ€™
            Enable/disable the generation of the CLFLUSHOPT instructions.
  
!      â€˜clwbâ€™
!      â€˜no-clwbâ€™
            Enable/disable the generation of the CLWB instructions.
  
!      â€˜clzeroâ€™
!      â€˜no-clzeroâ€™
            Enable/disable the generation of the CLZERO instructions.
  
!      â€˜crc32â€™
!      â€˜no-crc32â€™
            Enable/disable the generation of the CRC32 instructions.
  
!      â€˜cx16â€™
!      â€˜no-cx16â€™
            Enable/disable the generation of the CMPXCHG16B instructions.
  
!      â€˜defaultâ€™
            *Note Function Multiversioning::, where it is used to specify
            the default function version.
  
!      â€˜f16câ€™
!      â€˜no-f16câ€™
            Enable/disable the generation of the F16C instructions.
  
!      â€˜fmaâ€™
!      â€˜no-fmaâ€™
            Enable/disable the generation of the FMA instructions.
  
!      â€˜fma4â€™
!      â€˜no-fma4â€™
            Enable/disable the generation of the FMA4 instructions.
  
!      â€˜fsgsbaseâ€™
!      â€˜no-fsgsbaseâ€™
            Enable/disable the generation of the FSGSBASE instructions.
  
!      â€˜fxsrâ€™
!      â€˜no-fxsrâ€™
            Enable/disable the generation of the FXSR instructions.
  
!      â€˜gfniâ€™
!      â€˜no-gfniâ€™
            Enable/disable the generation of the GFNI instructions.
  
!      â€˜hleâ€™
!      â€˜no-hleâ€™
            Enable/disable the generation of the HLE instruction prefixes.
  
!      â€˜lwpâ€™
!      â€˜no-lwpâ€™
            Enable/disable the generation of the LWP instructions.
  
!      â€˜lzcntâ€™
!      â€˜no-lzcntâ€™
            Enable/disable the generation of the LZCNT instructions.
  
!      â€˜mmxâ€™
!      â€˜no-mmxâ€™
            Enable/disable the generation of the MMX instructions.
  
!      â€˜movbeâ€™
!      â€˜no-movbeâ€™
            Enable/disable the generation of the MOVBE instructions.
  
!      â€˜movdir64bâ€™
!      â€˜no-movdir64bâ€™
            Enable/disable the generation of the MOVDIR64B instructions.
  
!      â€˜movdiriâ€™
!      â€˜no-movdiriâ€™
            Enable/disable the generation of the MOVDIRI instructions.
  
!      â€˜mwaitâ€™
!      â€˜no-mwaitâ€™
            Enable/disable the generation of the MWAIT and MONITOR
            instructions.
  
!      â€˜mwaitxâ€™
!      â€˜no-mwaitxâ€™
            Enable/disable the generation of the MWAITX instructions.
  
!      â€˜pclmulâ€™
!      â€˜no-pclmulâ€™
            Enable/disable the generation of the PCLMUL instructions.
  
!      â€˜pconfigâ€™
!      â€˜no-pconfigâ€™
            Enable/disable the generation of the PCONFIG instructions.
  
!      â€˜pkuâ€™
!      â€˜no-pkuâ€™
            Enable/disable the generation of the PKU instructions.
  
!      â€˜popcntâ€™
!      â€˜no-popcntâ€™
            Enable/disable the generation of the POPCNT instruction.
  
!      â€˜prfchwâ€™
!      â€˜no-prfchwâ€™
            Enable/disable the generation of the PREFETCHW instruction.
  
!      â€˜ptwriteâ€™
!      â€˜no-ptwriteâ€™
            Enable/disable the generation of the PTWRITE instructions.
  
!      â€˜rdpidâ€™
!      â€˜no-rdpidâ€™
            Enable/disable the generation of the RDPID instructions.
  
!      â€˜rdrndâ€™
!      â€˜no-rdrndâ€™
            Enable/disable the generation of the RDRND instructions.
  
!      â€˜rdseedâ€™
!      â€˜no-rdseedâ€™
            Enable/disable the generation of the RDSEED instructions.
  
!      â€˜rtmâ€™
!      â€˜no-rtmâ€™
            Enable/disable the generation of the RTM instructions.
  
!      â€˜sahfâ€™
!      â€˜no-sahfâ€™
            Enable/disable the generation of the SAHF instructions.
  
!      â€˜sgxâ€™
!      â€˜no-sgxâ€™
            Enable/disable the generation of the SGX instructions.
  
!      â€˜shaâ€™
!      â€˜no-shaâ€™
            Enable/disable the generation of the SHA instructions.
  
!      â€˜shstkâ€™
!      â€˜no-shstkâ€™
            Enable/disable the shadow stack built-in functions from CET.
  
!      â€˜sseâ€™
!      â€˜no-sseâ€™
            Enable/disable the generation of the SSE instructions.
  
!      â€˜sse2â€™
!      â€˜no-sse2â€™
            Enable/disable the generation of the SSE2 instructions.
  
!      â€˜sse3â€™
!      â€˜no-sse3â€™
            Enable/disable the generation of the SSE3 instructions.
  
!      â€˜sse4â€™
!      â€˜no-sse4â€™
            Enable/disable the generation of the SSE4 instructions (both
            SSE4.1 and SSE4.2).
  
!      â€˜sse4.1â€™
!      â€˜no-sse4.1â€™
            Enable/disable the generation of the SSE4.1 instructions.
  
!      â€˜sse4.2â€™
!      â€˜no-sse4.2â€™
            Enable/disable the generation of the SSE4.2 instructions.
  
!      â€˜sse4aâ€™
!      â€˜no-sse4aâ€™
            Enable/disable the generation of the SSE4A instructions.
  
!      â€˜ssse3â€™
!      â€˜no-ssse3â€™
            Enable/disable the generation of the SSSE3 instructions.
  
!      â€˜tbmâ€™
!      â€˜no-tbmâ€™
            Enable/disable the generation of the TBM instructions.
  
!      â€˜vaesâ€™
!      â€˜no-vaesâ€™
            Enable/disable the generation of the VAES instructions.
  
!      â€˜vpclmulqdqâ€™
!      â€˜no-vpclmulqdqâ€™
            Enable/disable the generation of the VPCLMULQDQ instructions.
  
!      â€˜waitpkgâ€™
!      â€˜no-waitpkgâ€™
            Enable/disable the generation of the WAITPKG instructions.
  
!      â€˜wbnoinvdâ€™
!      â€˜no-wbnoinvdâ€™
            Enable/disable the generation of the WBNOINVD instructions.
  
!      â€˜xopâ€™
!      â€˜no-xopâ€™
            Enable/disable the generation of the XOP instructions.
  
!      â€˜xsaveâ€™
!      â€˜no-xsaveâ€™
            Enable/disable the generation of the XSAVE instructions.
  
!      â€˜xsavecâ€™
!      â€˜no-xsavecâ€™
            Enable/disable the generation of the XSAVEC instructions.
  
!      â€˜xsaveoptâ€™
!      â€˜no-xsaveoptâ€™
            Enable/disable the generation of the XSAVEOPT instructions.
  
!      â€˜xsavesâ€™
!      â€˜no-xsavesâ€™
            Enable/disable the generation of the XSAVES instructions.
  
!      â€˜amx-tileâ€™
!      â€˜no-amx-tileâ€™
            Enable/disable the generation of the AMX-TILE instructions.
  
!      â€˜amx-int8â€™
!      â€˜no-amx-int8â€™
            Enable/disable the generation of the AMX-INT8 instructions.
  
!      â€˜amx-bf16â€™
!      â€˜no-amx-bf16â€™
            Enable/disable the generation of the AMX-BF16 instructions.
  
!      â€˜uintrâ€™
!      â€˜no-uintrâ€™
            Enable/disable the generation of the UINTR instructions.
  
!      â€˜hresetâ€™
!      â€˜no-hresetâ€™
            Enable/disable the generation of the HRESET instruction.
  
!      â€˜klâ€™
!      â€˜no-klâ€™
            Enable/disable the generation of the KEYLOCKER instructions.
  
!      â€˜wideklâ€™
!      â€˜no-wideklâ€™
            Enable/disable the generation of the WIDEKL instructions.
  
!      â€˜avxvnniâ€™
!      â€˜no-avxvnniâ€™
            Enable/disable the generation of the AVXVNNI instructions.
  
!      â€˜avxifmaâ€™
!      â€˜no-avxifmaâ€™
            Enable/disable the generation of the AVXIFMA instructions.
  
!      â€˜avxvnniint8â€™
!      â€˜no-avxvnniint8â€™
            Enable/disable the generation of the AVXVNNIINT8 instructions.
  
!      â€˜avxneconvertâ€™
!      â€˜no-avxneconvertâ€™
            Enable/disable the generation of the AVXNECONVERT
            instructions.
  
!      â€˜cmpccxaddâ€™
!      â€˜no-cmpccxaddâ€™
            Enable/disable the generation of the CMPccXADD instructions.
  
!      â€˜amx-fp16â€™
!      â€˜no-amx-fp16â€™
            Enable/disable the generation of the AMX-FP16 instructions.
  
!      â€˜prefetchiâ€™
!      â€˜no-prefetchiâ€™
            Enable/disable the generation of the PREFETCHI instructions.
  
!      â€˜raointâ€™
!      â€˜no-raointâ€™
            Enable/disable the generation of the RAOINT instructions.
  
!      â€˜amx-complexâ€™
!      â€˜no-amx-complexâ€™
            Enable/disable the generation of the AMX-COMPLEX instructions.
  
!      â€˜avxvnniint16â€™
!      â€˜no-avxvnniint16â€™
            Enable/disable the generation of the AVXVNNIINT16
            instructions.
  
!      â€˜sm3â€™
!      â€˜no-sm3â€™
            Enable/disable the generation of the SM3 instructions.
  
!      â€˜sha512â€™
!      â€˜no-sha512â€™
            Enable/disable the generation of the SHA512 instructions.
  
!      â€˜sm4â€™
!      â€˜no-sm4â€™
            Enable/disable the generation of the SM4 instructions.
  
!      â€˜usermsrâ€™
!      â€˜no-usermsrâ€™
            Enable/disable the generation of the USER_MSR instructions.
  
!      â€˜apxfâ€™
!      â€˜no-apxfâ€™
            Enable/disable the generation of the APX features, including
            EGPR, PUSH2POP2, NDD and PPX.
  
!      â€˜avx10.1-256â€™
!      â€˜no-avx10.1-256â€™
            Enable the generation of the AVX10.1 instructions with 256 bit
            support.  Disable the generation of the AVX10.1 instructions.
  
!      â€˜avx10.1â€™
!      â€˜no-avx10.1â€™
            Enable the generation of the AVX10.1 instructions with 512 bit
            support.  Disable the generation of the AVX10.1 instructions.
  
!      â€˜avx10.1-512â€™
!      â€˜no-avx10.1-512â€™
            Enable the generation of the AVX10.1 instructions with 512 bit
            support.  Disable the generation of the AVX10.1 instructions.
  
!      â€˜avx10.2â€™
!      â€˜no-avx10.2â€™
            Enable/Disable the generation of the AVX10.2 instructions.
  
!      â€˜amx-avx512â€™
!      â€˜no-amx-avx512â€™
            Enable/disable the generation of the AMX-AVX512 instructions.
  
!      â€˜amx-tf32â€™
!      â€˜no-amx-tf32â€™
            Enable/disable the generation of the AMX-TF32 instructions.
  
!      â€˜amx-transposeâ€™
!      â€˜no-amx-transposeâ€™
            Enable/disable the generation of the AMX-TRANSPOSE
            instructions.
  
!      â€˜amx-fp8â€™
!      â€˜no-amx-fp8â€™
            Enable/disable the generation of the AMX-FP8 instructions.
  
!      â€˜movrsâ€™
!      â€˜no-movrsâ€™
            Enable/disable the generation of the MOVRS instructions.
  
!      â€˜amx-movrsâ€™
!      â€˜no-amx-movrsâ€™
            Enable/disable the generation of the AMX-MOVRS instructions.
  
!      â€˜cldâ€™
!      â€˜no-cldâ€™
            Enable/disable the generation of the CLD before string moves.
  
!      â€˜fancy-math-387â€™
!      â€˜no-fancy-math-387â€™
!           Enable/disable the generation of the â€˜sinâ€™, â€˜cosâ€™, and â€˜sqrtâ€™
            instructions on the 387 floating-point unit.
  
!      â€˜ieee-fpâ€™
!      â€˜no-ieee-fpâ€™
            Enable/disable the generation of floating point that depends
            on IEEE arithmetic.
  
!      â€˜inline-all-stringopsâ€™
!      â€˜no-inline-all-stringopsâ€™
            Enable/disable inlining of string operations.
  
!      â€˜inline-stringops-dynamicallyâ€™
!      â€˜no-inline-stringops-dynamicallyâ€™
            Enable/disable the generation of the inline code to do small
            string operations and calling the library routines for large
            operations.
  
!      â€˜align-stringopsâ€™
!      â€˜no-align-stringopsâ€™
            Do/do not align destination of inlined string operations.
  
!      â€˜recipâ€™
!      â€˜no-recipâ€™
            Enable/disable the generation of RCPSS, RCPPS, RSQRTSS and
            RSQRTPS instructions followed an additional Newton-Raphson
            step instead of doing a floating-point division.
  
!      â€˜general-regs-onlyâ€™
            Generate code which uses only the general registers.
  
!      â€˜arch=ARCHâ€™
            Specify the architecture to generate code for in compiling the
            function.
  
!      â€˜tune=TUNEâ€™
            Specify the architecture to tune for in compiling the
            function.
  
!      â€˜fpmath=FPMATHâ€™
            Specify which floating-point unit to use.  You must specify
!           the â€˜target("fpmath=sse,387")â€™ option as
!           â€˜target("fpmath=sse+387")â€™ because the comma would separate
            different options.
  
!      â€˜prefer-vector-width=OPTâ€™
!           On x86 targets, the â€˜prefer-vector-widthâ€™ attribute informs
            the compiler to use OPT-bit vector width in instructions
            instead of the default on the selected platform.
  
            Valid OPT values are:
  
!           â€˜noneâ€™
                 No extra limitations applied to GCC other than defined by
                 the selected platform.
  
!           â€˜128â€™
                 Prefer 128-bit vector width for instructions.
  
!           â€˜256â€™
                 Prefer 256-bit vector width for instructions.
  
!           â€˜512â€™
                 Prefer 512-bit vector width for instructions.
  
! â€˜indirect_branch("CHOICE")â€™
!      On x86 targets, the â€˜indirect_branchâ€™ attribute causes the compiler
!      to convert indirect call and jump with CHOICE.  â€˜keepâ€™ keeps
!      indirect call and jump unmodified.  â€˜thunkâ€™ converts indirect call
!      and jump to call and return thunk.  â€˜thunk-inlineâ€™ converts
       indirect call and jump to inlined call and return thunk.
!      â€˜thunk-externâ€™ converts indirect call and jump to external call and
       return thunk provided in a separate object file.
  
! â€˜function_return("CHOICE")â€™
!      On x86 targets, the â€˜function_returnâ€™ attribute causes the compiler
!      to convert function return with CHOICE.  â€˜keepâ€™ keeps function
!      return unmodified.  â€˜thunkâ€™ converts function return to call and
!      return thunk.  â€˜thunk-inlineâ€™ converts function return to inlined
!      call and return thunk.  â€˜thunk-externâ€™ converts function return to
       external call and return thunk provided in a separate object file.
  
! â€˜nocf_checkâ€™
!      The â€˜nocf_checkâ€™ attribute on a function is used to inform the
       compiler that the function's prologue should not be instrumented
!      when compiled with the â€˜-fcf-protection=branchâ€™ option.  The
       compiler assumes that the function's address is a valid target for
       a control-flow transfer.
  
!      The â€˜nocf_checkâ€™ attribute on a type of pointer to function is used
       to inform the compiler that a call through the pointer should not
!      be instrumented when compiled with the â€˜-fcf-protection=branchâ€™
       option.  The compiler assumes that the function's address from the
       pointer is a valid target for a control-flow transfer.  A direct
       function call through a function name is assumed to be a safe call
       thus direct calls are not instrumented by the compiler.
  
!      The â€˜nocf_checkâ€™ attribute is applied to an object's type.  In case
       of assignment of a function address or a function pointer to
       another pointer, the attribute is not carried over from the
       right-hand object's type; the type of left-hand object stays
!      unchanged.  The compiler checks for â€˜nocf_checkâ€™ attribute mismatch
       and reports a warning in case of mismatch.
  
            {
*************** These function attributes are supported
*** 41818,41849 ****
              return 0;
            }
  
! 'cf_check'
  
!      The 'cf_check' attribute on a function is used to inform the
       compiler that ENDBR instruction should be placed at the function
!      entry when '-fcf-protection=branch' is enabled.
  
! 'indirect_return'
  
!      The 'indirect_return' attribute can be applied to a function, as
       well as variable or type of function pointer to inform the compiler
       that the function may return via indirect branch.
  
! 'fentry_name("NAME")'
!      On x86 targets, the 'fentry_name' attribute sets the function to
       call on function entry when function instrumentation is enabled
!      with '-pg -mfentry'.  When NAME is nop then a 5 byte nop sequence
       is generated.
  
! 'fentry_section("NAME")'
!      On x86 targets, the 'fentry_section' attribute sets the name of the
       section to record function entry instrumentation calls in when
!      enabled with '-pg -mrecord-mcount'
  
! 'nodirect_extern_access'
       This attribute, attached to a global variable or function, is the
!      counterpart to option '-mno-direct-extern-access'.
  
  Inlining rules
  ..............
--- 41826,41857 ----
              return 0;
            }
  
! â€˜cf_checkâ€™
  
!      The â€˜cf_checkâ€™ attribute on a function is used to inform the
       compiler that ENDBR instruction should be placed at the function
!      entry when â€˜-fcf-protection=branchâ€™ is enabled.
  
! â€˜indirect_returnâ€™
  
!      The â€˜indirect_returnâ€™ attribute can be applied to a function, as
       well as variable or type of function pointer to inform the compiler
       that the function may return via indirect branch.
  
! â€˜fentry_name("NAME")â€™
!      On x86 targets, the â€˜fentry_nameâ€™ attribute sets the function to
       call on function entry when function instrumentation is enabled
!      with â€˜-pg -mfentryâ€™.  When NAME is nop then a 5 byte nop sequence
       is generated.
  
! â€˜fentry_section("NAME")â€™
!      On x86 targets, the â€˜fentry_sectionâ€™ attribute sets the name of the
       section to record function entry instrumentation calls in when
!      enabled with â€˜-pg -mrecord-mcountâ€™
  
! â€˜nodirect_extern_accessâ€™
       This attribute, attached to a global variable or function, is the
!      counterpart to option â€˜-mno-direct-extern-accessâ€™.
  
  Inlining rules
  ..............
*************** Inlining rules
*** 41851,41863 ****
  On the x86, the inliner does not inline a function that has different
  target options than the caller, unless the callee has a subset of the
  target options of the caller.  For example a function declared with
! 'target("sse3")' can inline a function with 'target("sse2")', since
! '-msse3' implies '-msse2'.
  
!  Besides the basic rule, when a function specifies 'target("arch=ARCH")'
! or 'target("tune=TUNE")' attribute, the inlining rule will be different.
! It allows inlining of a function with default '-march=x86-64' and
! '-mtune=generic' specified, or a function that has a subset of ISA
  features and marked with always_inline.
  
  
--- 41859,41871 ----
  On the x86, the inliner does not inline a function that has different
  target options than the caller, unless the callee has a subset of the
  target options of the caller.  For example a function declared with
! â€˜target("sse3")â€™ can inline a function with â€˜target("sse2")â€™, since
! â€˜-msse3â€™ implies â€˜-msse2â€™.
  
!  Besides the basic rule, when a function specifies â€˜target("arch=ARCH")â€™
! or â€˜target("tune=TUNE")â€™ attribute, the inlining rule will be different.
! It allows inlining of a function with default â€˜-march=x86-64â€™ and
! â€˜-mtune=genericâ€™ specified, or a function that has a subset of ISA
  features and marked with always_inline.
  
  
*************** File: gcc.info,  Node: Xstormy16 Functio
*** 41868,41874 ****
  
  These function attributes are supported by the Xstormy16 back end:
  
! 'interrupt'
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
--- 41876,41882 ----
  
  These function attributes are supported by the Xstormy16 back end:
  
! â€˜interruptâ€™
       Use this attribute to indicate that the specified function is an
       interrupt handler.  The compiler generates function entry and exit
       sequences suitable for use in an interrupt handler when this
*************** for types (*note Type Attributes::).  Ot
*** 41891,41898 ****
  attributes (*note Extensions to the C++ Language: C++ Extensions.).
  
   GCC provides two different ways to specify attributes: the traditional
! GNU syntax using '__attribute__ ((...))' annotations, and the newer
! standard C and C++ syntax using '[[...]]' with the 'gnu::' prefix on
  attribute names.  Note that the exact rules for placement of attributes
  in your source code are different depending on which syntax you use.
  *Note Attribute Syntax::, for details.
--- 41899,41906 ----
  attributes (*note Extensions to the C++ Language: C++ Extensions.).
  
   GCC provides two different ways to specify attributes: the traditional
! GNU syntax using â€˜__attribute__ ((...))â€™ annotations, and the newer
! standard C and C++ syntax using â€˜[[...]]â€™ with the â€˜gnu::â€™ prefix on
  attribute names.  Note that the exact rules for placement of attributes
  in your source code are different depending on which syntax you use.
  *Note Attribute Syntax::, for details.
*************** File: gcc.info,  Node: Common Variable A
*** 41924,41939 ****
  
  The following attributes are supported on most targets.
  
! 'alias ("TARGET")'
!      The 'alias' variable attribute causes the declaration to be emitted
!      as an alias for another symbol known as an "alias target".  Except
       for top-level qualifiers the alias target must have the same type
       as the alias.  For instance, the following
  
            int var_target;
            extern int __attribute__ ((alias ("var_target"))) var_alias;
  
!      defines 'var_alias' to be an alias for the 'var_target' variable.
  
       It is an error if the alias target is not defined in the same
       translation unit as the alias.
--- 41932,41947 ----
  
  The following attributes are supported on most targets.
  
! â€˜alias ("TARGET")â€™
!      The â€˜aliasâ€™ variable attribute causes the declaration to be emitted
!      as an alias for another symbol known as an â€œalias targetâ€�.  Except
       for top-level qualifiers the alias target must have the same type
       as the alias.  For instance, the following
  
            int var_target;
            extern int __attribute__ ((alias ("var_target"))) var_alias;
  
!      defines â€˜var_aliasâ€™ to be an alias for the â€˜var_targetâ€™ variable.
  
       It is an error if the alias target is not defined in the same
       translation unit as the alias.
*************** The following attributes are supported o
*** 41947,41955 ****
       This attribute requires assembler and object file support, and may
       not be available on all targets.
  
! 'aligned'
! 'aligned (ALIGNMENT)'
!      The 'aligned' attribute specifies a minimum alignment for the
       variable or structure field, measured in bytes.  When specified,
       ALIGNMENT must be an integer constant power of 2.  Specifying no
       ALIGNMENT argument implies the maximum alignment for the target,
--- 41955,41963 ----
       This attribute requires assembler and object file support, and may
       not be available on all targets.
  
! â€˜alignedâ€™
! â€˜aligned (ALIGNMENT)â€™
!      The â€˜alignedâ€™ attribute specifies a minimum alignment for the
       variable or structure field, measured in bytes.  When specified,
       ALIGNMENT must be an integer constant power of 2.  Specifying no
       ALIGNMENT argument implies the maximum alignment for the target,
*************** The following attributes are supported o
*** 41959,41976 ****
  
            int x __attribute__ ((aligned (16))) = 0;
  
!      causes the compiler to allocate the global variable 'x' on a
       16-byte boundary.  On a 68040, this could be used in conjunction
!      with an 'asm' expression to access the 'move16' instruction which
       requires 16-byte aligned operands.
  
       You can also specify the alignment of structure fields.  For
!      example, to create a double-word aligned 'int' pair, you could
       write:
  
            struct foo { int x[2] __attribute__ ((aligned (8))); };
  
!      This is an alternative to creating a union with a 'double' member,
       which forces the union to be double-word aligned.
  
       As in the preceding examples, you can explicitly specify the
--- 41967,41984 ----
  
            int x __attribute__ ((aligned (16))) = 0;
  
!      causes the compiler to allocate the global variable â€˜xâ€™ on a
       16-byte boundary.  On a 68040, this could be used in conjunction
!      with an â€˜asmâ€™ expression to access the â€˜move16â€™ instruction which
       requires 16-byte aligned operands.
  
       You can also specify the alignment of structure fields.  For
!      example, to create a double-word aligned â€˜intâ€™ pair, you could
       write:
  
            struct foo { int x[2] __attribute__ ((aligned (8))); };
  
!      This is an alternative to creating a union with a â€˜doubleâ€™ member,
       which forces the union to be double-word aligned.
  
       As in the preceding examples, you can explicitly specify the
*************** The following attributes are supported o
*** 41983,41989 ****
       supports vector operations.  The default alignment is fixed for a
       particular target ABI.
  
!      GCC also provides a target specific macro '__BIGGEST_ALIGNMENT__',
       which is the largest alignment ever used for any data type on the
       target machine you are compiling for.  For example, you could
       write:
--- 41991,41997 ----
       supports vector operations.  The default alignment is fixed for a
       particular target ABI.
  
!      GCC also provides a target specific macro â€˜__BIGGEST_ALIGNMENT__â€™,
       which is the largest alignment ever used for any data type on the
       target machine you are compiling for.  For example, you could
       write:
*************** The following attributes are supported o
*** 41991,42029 ****
            short array[3] __attribute__ ((aligned (__BIGGEST_ALIGNMENT__)));
  
       The compiler automatically sets the alignment for the declared
!      variable or field to '__BIGGEST_ALIGNMENT__'.  Doing this can often
       make copy operations more efficient, because the compiler can use
       whatever instructions copy the biggest chunks of memory when
       performing copies to or from the variables or fields that you have
!      aligned this way.  Note that the value of '__BIGGEST_ALIGNMENT__'
       may change depending on command-line options.
  
!      When used on a struct, or struct member, the 'aligned' attribute
       can only increase the alignment; in order to decrease it, the
!      'packed' attribute must be specified as well.  When used as part of
!      a typedef, the 'aligned' attribute can both increase and decrease
!      alignment, and specifying the 'packed' attribute generates a
       warning.
  
!      Note that the effectiveness of 'aligned' attributes for static
       variables may be limited by inherent limitations in the system
       linker and/or object file format.  On some systems, the linker is
       only able to arrange for variables to be aligned up to a certain
       maximum alignment.  (For some linkers, the maximum supported
       alignment may be very very small.)  If your linker is only able to
       align variables up to a maximum of 8-byte alignment, then
!      specifying 'aligned(16)' in an '__attribute__' still only provides
       you with 8-byte alignment.  See your linker documentation for
       further information.
  
       Stack variables are not affected by linker restrictions; GCC can
       properly align them on any target.
  
!      The 'aligned' attribute can also be used for functions (*note
       Common Function Attributes::.)
  
! 'counted_by (COUNT)'
!      The 'counted_by' attribute may be attached to the C99 flexible
       array member of a structure.  It indicates that the number of the
       elements of the array is given by the field "COUNT" in the same
       structure as the flexible array member.
--- 41999,42037 ----
            short array[3] __attribute__ ((aligned (__BIGGEST_ALIGNMENT__)));
  
       The compiler automatically sets the alignment for the declared
!      variable or field to â€˜__BIGGEST_ALIGNMENT__â€™.  Doing this can often
       make copy operations more efficient, because the compiler can use
       whatever instructions copy the biggest chunks of memory when
       performing copies to or from the variables or fields that you have
!      aligned this way.  Note that the value of â€˜__BIGGEST_ALIGNMENT__â€™
       may change depending on command-line options.
  
!      When used on a struct, or struct member, the â€˜alignedâ€™ attribute
       can only increase the alignment; in order to decrease it, the
!      â€˜packedâ€™ attribute must be specified as well.  When used as part of
!      a typedef, the â€˜alignedâ€™ attribute can both increase and decrease
!      alignment, and specifying the â€˜packedâ€™ attribute generates a
       warning.
  
!      Note that the effectiveness of â€˜alignedâ€™ attributes for static
       variables may be limited by inherent limitations in the system
       linker and/or object file format.  On some systems, the linker is
       only able to arrange for variables to be aligned up to a certain
       maximum alignment.  (For some linkers, the maximum supported
       alignment may be very very small.)  If your linker is only able to
       align variables up to a maximum of 8-byte alignment, then
!      specifying â€˜aligned(16)â€™ in an â€˜__attribute__â€™ still only provides
       you with 8-byte alignment.  See your linker documentation for
       further information.
  
       Stack variables are not affected by linker restrictions; GCC can
       properly align them on any target.
  
!      The â€˜alignedâ€™ attribute can also be used for functions (*note
       Common Function Attributes::.)
  
! â€˜counted_by (COUNT)â€™
!      The â€˜counted_byâ€™ attribute may be attached to the C99 flexible
       array member of a structure.  It indicates that the number of the
       elements of the array is given by the field "COUNT" in the same
       structure as the flexible array member.
*************** The following attributes are supported o
*** 42034,42040 ****
       GCC may use this information to improve detection of object size
       information for such structures and provide better results in
       compile-time diagnostics and runtime features like the array bound
!      sanitizer and the '__builtin_dynamic_object_size'.
  
       For instance, the following code:
  
--- 42042,42048 ----
       GCC may use this information to improve detection of object size
       information for such structures and provide better results in
       compile-time diagnostics and runtime features like the array bound
!      sanitizer and the â€˜__builtin_dynamic_object_sizeâ€™.
  
       For instance, the following code:
  
*************** The following attributes are supported o
*** 42044,42051 ****
              char array[] __attribute__ ((counted_by (count)));
            } *p;
  
!      specifies that the 'array' is a flexible array member whose number
!      of elements is given by the field 'count' in the same structure.
  
       The field that represents the number of the elements should have an
       integer type.  Otherwise, the compiler reports an error and ignores
--- 42052,42059 ----
              char array[] __attribute__ ((counted_by (count)));
            } *p;
  
!      specifies that the â€˜arrayâ€™ is a flexible array member whose number
!      of elements is given by the field â€˜countâ€™ in the same structure.
  
       The field that represents the number of the elements should have an
       integer type.  Otherwise, the compiler reports an error and ignores
*************** The following attributes are supported o
*** 42055,42068 ****
       assigned a negative integer value, the compiler treats the value as
       zero.
  
!      An explicit 'counted_by' annotation defines a relationship between
!      two objects, 'p->array' and 'p->count', and there are the following
       requirements on the relationship between this pair:
  
!         * 'p->count' must be initialized before the first reference to
!           'p->array';
  
!         * 'p->array' has _at least_ 'p->count' number of elements
            available all the time.  This relationship must hold even
            after any of these related objects are updated during the
            program.
--- 42063,42076 ----
       assigned a negative integer value, the compiler treats the value as
       zero.
  
!      An explicit â€˜counted_byâ€™ annotation defines a relationship between
!      two objects, â€˜p->arrayâ€™ and â€˜p->countâ€™, and there are the following
       requirements on the relationship between this pair:
  
!         â€¢ â€˜p->countâ€™ must be initialized before the first reference to
!           â€˜p->arrayâ€™;
  
!         â€¢ â€˜p->arrayâ€™ has _at least_ â€˜p->countâ€™ number of elements
            available all the time.  This relationship must hold even
            after any of these related objects are updated during the
            program.
*************** The following attributes are supported o
*** 42070,42076 ****
       It's the programmer's responsibility to make sure the above
       requirements to be kept all the time.  Otherwise the compiler
       reports warnings and the results of the array bound sanitizer and
!      the '__builtin_dynamic_object_size' built-in are undefined.
  
       One important feature of the attribute is that a reference to the
       flexible array member field uses the latest value assigned to the
--- 42078,42084 ----
       It's the programmer's responsibility to make sure the above
       requirements to be kept all the time.  Otherwise the compiler
       reports warnings and the results of the array bound sanitizer and
!      the â€˜__builtin_dynamic_object_sizeâ€™ built-in are undefined.
  
       One important feature of the attribute is that a reference to the
       flexible array member field uses the latest value assigned to the
*************** The following attributes are supported o
*** 42082,42102 ****
              p->count = val2;
              p->array[30] = 0;  // ref2 to p->array
  
!      In the above, 'ref1' uses 'val1' as the number of the elements in
!      'p->array', and 'ref2' uses 'val2' as the number of elements in
!      'p->array'.
  
! 'alloc_size (POSITION)'
! 'alloc_size (POSITION-1, POSITION-2)'
!      The 'alloc_size' variable attribute may be applied to the
       declaration of a pointer to a function that returns a pointer and
       takes at least one argument of an integer type.  It indicates that
       the returned pointer points to an object whose size is given by the
       function argument at POSITION, or by the product of the arguments
       at POSITION-1 and POSITION-2.  Meaningful sizes are positive values
!      less than 'PTRDIFF_MAX'.  Other sizes are diagnosed when detected.
       GCC uses this information to improve the results of
!      '__builtin_object_size'.
  
       For instance, the following declarations
  
--- 42090,42110 ----
              p->count = val2;
              p->array[30] = 0;  // ref2 to p->array
  
!      In the above, â€˜ref1â€™ uses â€˜val1â€™ as the number of the elements in
!      â€˜p->arrayâ€™, and â€˜ref2â€™ uses â€˜val2â€™ as the number of elements in
!      â€˜p->arrayâ€™.
  
! â€˜alloc_size (POSITION)â€™
! â€˜alloc_size (POSITION-1, POSITION-2)â€™
!      The â€˜alloc_sizeâ€™ variable attribute may be applied to the
       declaration of a pointer to a function that returns a pointer and
       takes at least one argument of an integer type.  It indicates that
       the returned pointer points to an object whose size is given by the
       function argument at POSITION, or by the product of the arguments
       at POSITION-1 and POSITION-2.  Meaningful sizes are positive values
!      less than â€˜PTRDIFF_MAXâ€™.  Other sizes are diagnosed when detected.
       GCC uses this information to improve the results of
!      â€˜__builtin_object_sizeâ€™.
  
       For instance, the following declarations
  
*************** The following attributes are supported o
*** 42105,42163 ****
            typedef __attribute__ ((alloc_size (1))) void*
              (*malloc_ptr) (size_t);
  
!      specify that 'calloc_ptr' is a pointer of a function that, like the
!      standard C function 'calloc', returns an object whose size is given
       by the product of arguments 1 and 2, and similarly, that
!      'malloc_ptr', like the standard C function 'malloc', returns an
       object whose size is given by argument 1 to the function.
  
! 'cleanup (CLEANUP_FUNCTION)'
!      The 'cleanup' attribute runs a function when the variable goes out
       of scope.  This attribute can only be applied to auto function
       scope variables; it may not be applied to parameters or variables
       with static storage duration.  The function must take one
       parameter, a pointer to a type compatible with the variable.  The
       return value of the function (if any) is ignored.
  
!      When multiple variables in the same scope have 'cleanup'
       attributes, at exit from the scope their associated cleanup
       functions are run in reverse order of definition (last defined,
       first cleanup).
  
!      If '-fexceptions' is enabled, then CLEANUP_FUNCTION is run during
       the stack unwinding that happens during the processing of the
!      exception.  Note that the 'cleanup' attribute does not allow the
       exception to be caught, only to perform an action.  It is undefined
       what happens if CLEANUP_FUNCTION does not return normally.
  
! 'common'
! 'nocommon'
!      The 'common' attribute requests GCC to place a variable in "common"
!      storage.  The 'nocommon' attribute requests the opposite--to
       allocate space for it directly.
  
!      These attributes override the default chosen by the '-fno-common'
!      and '-fcommon' flags respectively.
  
! 'copy'
! 'copy (VARIABLE)'
!      The 'copy' attribute applies the set of attributes with which
       VARIABLE has been declared to the declaration of the variable to
       which the attribute is applied.  The attribute is designed for
       libraries that define aliases that are expected to specify the same
!      set of attributes as the aliased symbols.  The 'copy' attribute can
       be used with variables, functions or types.  However, the kind of
       symbol to which the attribute is applied (either varible or
       function) must match the kind of symbol to which the argument
!      refers.  The 'copy' attribute copies only syntactic and semantic
       attributes but not attributes that affect a symbol's linkage or
!      visibility such as 'alias', 'visibility', or 'weak'.  The
!      'deprecated' attribute is also not copied.  *Note Common Function
       Attributes::.  *Note Common Type Attributes::.
  
! 'deprecated'
! 'deprecated (MSG)'
!      The 'deprecated' attribute results in a warning if the variable is
       used anywhere in the source file.  This is useful when identifying
       variables that are expected to be removed in a future version of a
       program.  The warning also includes the location of the declaration
--- 42113,42171 ----
            typedef __attribute__ ((alloc_size (1))) void*
              (*malloc_ptr) (size_t);
  
!      specify that â€˜calloc_ptrâ€™ is a pointer of a function that, like the
!      standard C function â€˜callocâ€™, returns an object whose size is given
       by the product of arguments 1 and 2, and similarly, that
!      â€˜malloc_ptrâ€™, like the standard C function â€˜mallocâ€™, returns an
       object whose size is given by argument 1 to the function.
  
! â€˜cleanup (CLEANUP_FUNCTION)â€™
!      The â€˜cleanupâ€™ attribute runs a function when the variable goes out
       of scope.  This attribute can only be applied to auto function
       scope variables; it may not be applied to parameters or variables
       with static storage duration.  The function must take one
       parameter, a pointer to a type compatible with the variable.  The
       return value of the function (if any) is ignored.
  
!      When multiple variables in the same scope have â€˜cleanupâ€™
       attributes, at exit from the scope their associated cleanup
       functions are run in reverse order of definition (last defined,
       first cleanup).
  
!      If â€˜-fexceptionsâ€™ is enabled, then CLEANUP_FUNCTION is run during
       the stack unwinding that happens during the processing of the
!      exception.  Note that the â€˜cleanupâ€™ attribute does not allow the
       exception to be caught, only to perform an action.  It is undefined
       what happens if CLEANUP_FUNCTION does not return normally.
  
! â€˜commonâ€™
! â€˜nocommonâ€™
!      The â€˜commonâ€™ attribute requests GCC to place a variable in "common"
!      storage.  The â€˜nocommonâ€™ attribute requests the opposite--to
       allocate space for it directly.
  
!      These attributes override the default chosen by the â€˜-fno-commonâ€™
!      and â€˜-fcommonâ€™ flags respectively.
  
! â€˜copyâ€™
! â€˜copy (VARIABLE)â€™
!      The â€˜copyâ€™ attribute applies the set of attributes with which
       VARIABLE has been declared to the declaration of the variable to
       which the attribute is applied.  The attribute is designed for
       libraries that define aliases that are expected to specify the same
!      set of attributes as the aliased symbols.  The â€˜copyâ€™ attribute can
       be used with variables, functions or types.  However, the kind of
       symbol to which the attribute is applied (either varible or
       function) must match the kind of symbol to which the argument
!      refers.  The â€˜copyâ€™ attribute copies only syntactic and semantic
       attributes but not attributes that affect a symbol's linkage or
!      visibility such as â€˜aliasâ€™, â€˜visibilityâ€™, or â€˜weakâ€™.  The
!      â€˜deprecatedâ€™ attribute is also not copied.  *Note Common Function
       Attributes::.  *Note Common Type Attributes::.
  
! â€˜deprecatedâ€™
! â€˜deprecated (MSG)â€™
!      The â€˜deprecatedâ€™ attribute results in a warning if the variable is
       used anywhere in the source file.  This is useful when identifying
       variables that are expected to be removed in a future version of a
       program.  The warning also includes the location of the declaration
*************** The following attributes are supported o
*** 42173,42229 ****
       argument, which must be a string, is printed in the warning if
       present.
  
!      The 'deprecated' attribute can also be used for functions and types
       (*note Common Function Attributes::, *note Common Type
       Attributes::).
  
       The message attached to the attribute is affected by the setting of
!      the '-fmessage-length' option.
  
! 'mode (MODE)'
       This attribute specifies the data type for the
       declaration--whichever type corresponds to the mode MODE.  This in
       effect lets you request an integer or floating-point type according
       to its width.
  
       *Note (gccint)Machine Modes::, for a list of the possible keywords
!      for MODE.  You may also specify a mode of 'byte' or '__byte__' to
!      indicate the mode corresponding to a one-byte integer, 'word' or
!      '__word__' for the mode of a one-word integer, and 'pointer' or
!      '__pointer__' for the mode used to represent pointers.
  
! 'no_icf'
       This variable attribute prevents a variable from being merged with
       another equivalent variable.
  
! 'noinit'
!      Any data with the 'noinit' attribute will not be initialized by the
       C runtime startup code, or the program loader.  Not initializing
       data in this way can reduce program startup times.
  
       This attribute is specific to ELF targets and relies on the linker
!      script to place sections with the '.noinit' prefix in the right
       location.
  
! 'nonstring'
!      The 'nonstring' variable attribute specifies that an object or
!      member declaration with type array of 'char', 'signed char', or
!      'unsigned char', or pointer to such a type is intended to store
       character arrays that do not necessarily contain a terminating
!      'NUL'.  This is useful in detecting uses of such arrays or pointers
!      with functions that expect 'NUL'-terminated strings, and to avoid
       warnings when such an array or pointer is used as an argument to a
!      bounded string manipulation function such as 'strncpy'.  For
       example, without the attribute, GCC will issue a warning for the
!      'strncpy' call below because it may truncate the copy without
!      appending the terminating 'NUL' character.  Using the attribute
       makes it possible to suppress the warning.  However, when the array
!      is declared with the attribute the call to 'strlen' is diagnosed
!      because when the array doesn't contain a 'NUL'-terminated string
       the call is undefined.  To copy, compare, or search non-string
!      character arrays use the 'memcpy', 'memcmp', 'memchr', and other
       functions that operate on arrays of bytes.  In addition, calling
!      'strnlen' and 'strndup' with such arrays is safe provided a
       suitable bound is specified, and not diagnosed.
  
            struct Data
--- 42181,42237 ----
       argument, which must be a string, is printed in the warning if
       present.
  
!      The â€˜deprecatedâ€™ attribute can also be used for functions and types
       (*note Common Function Attributes::, *note Common Type
       Attributes::).
  
       The message attached to the attribute is affected by the setting of
!      the â€˜-fmessage-lengthâ€™ option.
  
! â€˜mode (MODE)â€™
       This attribute specifies the data type for the
       declaration--whichever type corresponds to the mode MODE.  This in
       effect lets you request an integer or floating-point type according
       to its width.
  
       *Note (gccint)Machine Modes::, for a list of the possible keywords
!      for MODE.  You may also specify a mode of â€˜byteâ€™ or â€˜__byte__â€™ to
!      indicate the mode corresponding to a one-byte integer, â€˜wordâ€™ or
!      â€˜__word__â€™ for the mode of a one-word integer, and â€˜pointerâ€™ or
!      â€˜__pointer__â€™ for the mode used to represent pointers.
  
! â€˜no_icfâ€™
       This variable attribute prevents a variable from being merged with
       another equivalent variable.
  
! â€˜noinitâ€™
!      Any data with the â€˜noinitâ€™ attribute will not be initialized by the
       C runtime startup code, or the program loader.  Not initializing
       data in this way can reduce program startup times.
  
       This attribute is specific to ELF targets and relies on the linker
!      script to place sections with the â€˜.noinitâ€™ prefix in the right
       location.
  
! â€˜nonstringâ€™
!      The â€˜nonstringâ€™ variable attribute specifies that an object or
!      member declaration with type array of â€˜charâ€™, â€˜signed charâ€™, or
!      â€˜unsigned charâ€™, or pointer to such a type is intended to store
       character arrays that do not necessarily contain a terminating
!      â€˜NULâ€™.  This is useful in detecting uses of such arrays or pointers
!      with functions that expect â€˜NULâ€™-terminated strings, and to avoid
       warnings when such an array or pointer is used as an argument to a
!      bounded string manipulation function such as â€˜strncpyâ€™.  For
       example, without the attribute, GCC will issue a warning for the
!      â€˜strncpyâ€™ call below because it may truncate the copy without
!      appending the terminating â€˜NULâ€™ character.  Using the attribute
       makes it possible to suppress the warning.  However, when the array
!      is declared with the attribute the call to â€˜strlenâ€™ is diagnosed
!      because when the array doesn't contain a â€˜NULâ€™-terminated string
       the call is undefined.  To copy, compare, or search non-string
!      character arrays use the â€˜memcpyâ€™, â€˜memcmpâ€™, â€˜memchrâ€™, and other
       functions that operate on arrays of bytes.  In addition, calling
!      â€˜strnlenâ€™ and â€˜strndupâ€™ with such arrays is safe provided a
       suitable bound is specified, and not diagnosed.
  
            struct Data
*************** The following attributes are supported o
*** 42238,42277 ****
              return strlen (pd->name);   // unsafe, gets a warning
            }
  
! 'objc_nullability (NULLABILITY KIND) (Objective-C and Objective-C++ only)'
       This attribute applies to pointer variables only.  It allows
       marking the pointer with one of four possible values describing the
!      conditions under which the pointer might have a 'nil' value.  In
       most cases, the attribute is intended to be an internal
       representation for property and method nullability (specified by
       language keywords); it is not recommended to use it directly.
  
!      When NULLABILITY KIND is '"unspecified"' or '0', nothing is known
!      about the conditions in which the pointer might be 'nil'.  Making
       this state specific serves to avoid false positives in diagnostics.
  
!      When NULLABILITY KIND is '"nonnull"' or '1', the pointer has no
!      meaning if it is 'nil' and thus the compiler is free to emit
!      diagnostics if it can be determined that the value will be 'nil'.
  
!      When NULLABILITY KIND is '"nullable"' or '2', the pointer might be
!      'nil' and carry meaning as such.
  
!      When NULLABILITY KIND is '"resettable"' or '3' (used only in the
       context of property attribute lists) this describes the case in
!      which a property setter may take the value 'nil' (which perhaps
       causes the property to be reset in some manner to a default) but
!      for which the property getter will never validly return 'nil'.
  
! 'packed'
!      The 'packed' attribute specifies that a structure member should
       have the smallest possible alignment--one bit for a bit-field and
       one byte otherwise, unless a larger value is specified with the
!      'aligned' attribute.  The attribute does not apply to non-member
       objects.
  
!      For example in the structure below, the member array 'x' is packed
!      so that it immediately follows 'a' with no intervening padding:
  
            struct foo
            {
--- 42246,42285 ----
              return strlen (pd->name);   // unsafe, gets a warning
            }
  
! â€˜objc_nullability (NULLABILITY KIND) (Objective-C and Objective-C++ only)â€™
       This attribute applies to pointer variables only.  It allows
       marking the pointer with one of four possible values describing the
!      conditions under which the pointer might have a â€˜nilâ€™ value.  In
       most cases, the attribute is intended to be an internal
       representation for property and method nullability (specified by
       language keywords); it is not recommended to use it directly.
  
!      When NULLABILITY KIND is â€˜"unspecified"â€™ or â€˜0â€™, nothing is known
!      about the conditions in which the pointer might be â€˜nilâ€™.  Making
       this state specific serves to avoid false positives in diagnostics.
  
!      When NULLABILITY KIND is â€˜"nonnull"â€™ or â€˜1â€™, the pointer has no
!      meaning if it is â€˜nilâ€™ and thus the compiler is free to emit
!      diagnostics if it can be determined that the value will be â€˜nilâ€™.
  
!      When NULLABILITY KIND is â€˜"nullable"â€™ or â€˜2â€™, the pointer might be
!      â€˜nilâ€™ and carry meaning as such.
  
!      When NULLABILITY KIND is â€˜"resettable"â€™ or â€˜3â€™ (used only in the
       context of property attribute lists) this describes the case in
!      which a property setter may take the value â€˜nilâ€™ (which perhaps
       causes the property to be reset in some manner to a default) but
!      for which the property getter will never validly return â€˜nilâ€™.
  
! â€˜packedâ€™
!      The â€˜packedâ€™ attribute specifies that a structure member should
       have the smallest possible alignment--one bit for a bit-field and
       one byte otherwise, unless a larger value is specified with the
!      â€˜alignedâ€™ attribute.  The attribute does not apply to non-member
       objects.
  
!      For example in the structure below, the member array â€˜xâ€™ is packed
!      so that it immediately follows â€˜aâ€™ with no intervening padding:
  
            struct foo
            {
*************** The following attributes are supported o
*** 42279,42307 ****
              int x[2] __attribute__ ((packed));
            };
  
!      _Note:_ The 4.1, 4.2 and 4.3 series of GCC ignore the 'packed'
!      attribute on bit-fields of type 'char'.  This has been fixed in GCC
       4.4 but the change can lead to differences in the structure layout.
!      See the documentation of '-Wpacked-bitfield-compat' for more
       information.
  
! 'persistent'
!      Any data with the 'persistent' attribute will not be initialized by
       the C runtime startup code, but will be initialized by the program
!      loader.  This enables the value of the variable to 'persist'
       between processor resets.
  
       This attribute is specific to ELF targets and relies on the linker
!      script to place the sections with the '.persistent' prefix in the
       right location.  Specifically, some type of non-volatile, writable
       memory is required.
  
! 'section ("SECTION-NAME")'
       Normally, the compiler places the objects it generates in sections
!      like 'data' and 'bss'.  Sometimes, however, you need additional
       sections, or you need certain particular variables to appear in
       special sections, for example to map to special hardware.  The
!      'section' attribute specifies that a variable (or function) lives
       in a particular section.  For example, this small program uses
       several specific section names:
  
--- 42287,42315 ----
              int x[2] __attribute__ ((packed));
            };
  
!      _Note:_ The 4.1, 4.2 and 4.3 series of GCC ignore the â€˜packedâ€™
!      attribute on bit-fields of type â€˜charâ€™.  This has been fixed in GCC
       4.4 but the change can lead to differences in the structure layout.
!      See the documentation of â€˜-Wpacked-bitfield-compatâ€™ for more
       information.
  
! â€˜persistentâ€™
!      Any data with the â€˜persistentâ€™ attribute will not be initialized by
       the C runtime startup code, but will be initialized by the program
!      loader.  This enables the value of the variable to â€˜persistâ€™
       between processor resets.
  
       This attribute is specific to ELF targets and relies on the linker
!      script to place the sections with the â€˜.persistentâ€™ prefix in the
       right location.  Specifically, some type of non-volatile, writable
       memory is required.
  
! â€˜section ("SECTION-NAME")â€™
       Normally, the compiler places the objects it generates in sections
!      like â€˜dataâ€™ and â€˜bssâ€™.  Sometimes, however, you need additional
       sections, or you need certain particular variables to appear in
       special sections, for example to map to special hardware.  The
!      â€˜sectionâ€™ attribute specifies that a variable (or function) lives
       in a particular section.  For example, this small program uses
       several specific section names:
  
*************** The following attributes are supported o
*** 42323,42348 ****
              init_duart (&b);
            }
  
!      Use the 'section' attribute with _global_ variables and not _local_
       variables, as shown in the example.
  
!      You may use the 'section' attribute with initialized or
       uninitialized global variables but the linker requires each object
       be defined once, with the exception that uninitialized variables
!      tentatively go in the 'common' (or 'bss') section and can be
!      multiply "defined".  Using the 'section' attribute changes what
       section the variable goes into and may cause the linker to issue an
       error if an uninitialized variable has multiple definitions.  You
!      can force a variable to be initialized with the '-fno-common' flag
!      or the 'nocommon' attribute.
  
       Some file formats do not support arbitrary sections so the
!      'section' attribute is not available on all platforms.  If you need
       to map the entire contents of a module to a particular section,
       consider using the facilities of the linker instead.
  
! 'strict_flex_array (LEVEL)'
!      The 'strict_flex_array' attribute should be attached to the
       trailing array field of a structure.  It controls when to treat the
       trailing array field of a structure as a flexible array member for
       the purposes of accessing the elements of such an array.  LEVEL
--- 42331,42356 ----
              init_duart (&b);
            }
  
!      Use the â€˜sectionâ€™ attribute with _global_ variables and not _local_
       variables, as shown in the example.
  
!      You may use the â€˜sectionâ€™ attribute with initialized or
       uninitialized global variables but the linker requires each object
       be defined once, with the exception that uninitialized variables
!      tentatively go in the â€˜commonâ€™ (or â€˜bssâ€™) section and can be
!      multiply "defined".  Using the â€˜sectionâ€™ attribute changes what
       section the variable goes into and may cause the linker to issue an
       error if an uninitialized variable has multiple definitions.  You
!      can force a variable to be initialized with the â€˜-fno-commonâ€™ flag
!      or the â€˜nocommonâ€™ attribute.
  
       Some file formats do not support arbitrary sections so the
!      â€˜sectionâ€™ attribute is not available on all platforms.  If you need
       to map the entire contents of a module to a particular section,
       consider using the facilities of the linker instead.
  
! â€˜strict_flex_array (LEVEL)â€™
!      The â€˜strict_flex_arrayâ€™ attribute should be attached to the
       trailing array field of a structure.  It controls when to treat the
       trailing array field of a structure as a flexible array member for
       the purposes of accessing the elements of such an array.  LEVEL
*************** The following attributes are supported o
*** 42351,42407 ****
       LEVEL=0 is the least strict level, all trailing arrays of
       structures are treated as flexible array members.  LEVEL=3 is the
       strictest level, only when the trailing array is declared as a
!      flexible array member per C99 standard onwards ('[]'), it is
       treated as a flexible array member.
  
       There are two more levels in between 0 and 3, which are provided to
       support older code that uses the GCC zero-length array extension
!      ('[0]') or one-element array as flexible array members ('[1]').
       When LEVEL is 1, the trailing array is treated as a flexible array
!      member when it is declared as either '[]', '[0]', or '[1]'.  When
       LEVEL is 2, the trailing array is treated as a flexible array
!      member when it is declared as either '[]', or '[0]'.
  
       This attribute can be used with or without the
!      '-fstrict-flex-arrays' command-line option.  When both the
       attribute and the option are present at the same time, the level of
       the strictness for the specific trailing array field is determined
       by the attribute.
  
!      The 'strict_flex_array' attribute interacts with the
!      '-Wstrict-flex-arrays' option.  *Note Warning Options::, for more
       information.
  
! 'tls_model ("TLS_MODEL")'
!      The 'tls_model' attribute sets thread-local storage model (*note
!      Thread-Local::) of a particular '__thread' variable, overriding
!      '-ftls-model=' command-line switch on a per-variable basis.  The
!      TLS_MODEL argument should be one of 'global-dynamic',
!      'local-dynamic', 'initial-exec' or 'local-exec'.
  
       Not all targets support this attribute.
  
! 'unavailable'
! 'unavailable (MSG)'
!      The 'unavailable' attribute indicates that the variable so marked
       is not available, if it is used anywhere in the source file.  It
!      behaves in the same manner as the 'deprecated' attribute except
       that the compiler will emit an error rather than a warning.
  
!      It is expected that items marked as 'deprecated' will eventually be
       withdrawn from interfaces, and then become unavailable.  This
       attribute allows for marking them appropriately.
  
!      The 'unavailable' attribute can also be used for functions and
       types (*note Common Function Attributes::, *note Common Type
       Attributes::).
  
! 'unused'
       This attribute, attached to a variable or structure field, means
       that the variable or field is meant to be possibly unused.  GCC
       does not produce a warning for this variable or field.
  
! 'used'
       This attribute, attached to a variable with static storage, means
       that the variable must be emitted even if it appears that the
       variable is not referenced.
--- 42359,42415 ----
       LEVEL=0 is the least strict level, all trailing arrays of
       structures are treated as flexible array members.  LEVEL=3 is the
       strictest level, only when the trailing array is declared as a
!      flexible array member per C99 standard onwards (â€˜[]â€™), it is
       treated as a flexible array member.
  
       There are two more levels in between 0 and 3, which are provided to
       support older code that uses the GCC zero-length array extension
!      (â€˜[0]â€™) or one-element array as flexible array members (â€˜[1]â€™).
       When LEVEL is 1, the trailing array is treated as a flexible array
!      member when it is declared as either â€˜[]â€™, â€˜[0]â€™, or â€˜[1]â€™.  When
       LEVEL is 2, the trailing array is treated as a flexible array
!      member when it is declared as either â€˜[]â€™, or â€˜[0]â€™.
  
       This attribute can be used with or without the
!      â€˜-fstrict-flex-arraysâ€™ command-line option.  When both the
       attribute and the option are present at the same time, the level of
       the strictness for the specific trailing array field is determined
       by the attribute.
  
!      The â€˜strict_flex_arrayâ€™ attribute interacts with the
!      â€˜-Wstrict-flex-arraysâ€™ option.  *Note Warning Options::, for more
       information.
  
! â€˜tls_model ("TLS_MODEL")â€™
!      The â€˜tls_modelâ€™ attribute sets thread-local storage model (*note
!      Thread-Local::) of a particular â€˜__threadâ€™ variable, overriding
!      â€˜-ftls-model=â€™ command-line switch on a per-variable basis.  The
!      TLS_MODEL argument should be one of â€˜global-dynamicâ€™,
!      â€˜local-dynamicâ€™, â€˜initial-execâ€™ or â€˜local-execâ€™.
  
       Not all targets support this attribute.
  
! â€˜unavailableâ€™
! â€˜unavailable (MSG)â€™
!      The â€˜unavailableâ€™ attribute indicates that the variable so marked
       is not available, if it is used anywhere in the source file.  It
!      behaves in the same manner as the â€˜deprecatedâ€™ attribute except
       that the compiler will emit an error rather than a warning.
  
!      It is expected that items marked as â€˜deprecatedâ€™ will eventually be
       withdrawn from interfaces, and then become unavailable.  This
       attribute allows for marking them appropriately.
  
!      The â€˜unavailableâ€™ attribute can also be used for functions and
       types (*note Common Function Attributes::, *note Common Type
       Attributes::).
  
! â€˜unusedâ€™
       This attribute, attached to a variable or structure field, means
       that the variable or field is meant to be possibly unused.  GCC
       does not produce a warning for this variable or field.
  
! â€˜usedâ€™
       This attribute, attached to a variable with static storage, means
       that the variable must be emitted even if it appears that the
       variable is not referenced.
*************** The following attributes are supported o
*** 42410,42431 ****
       attribute also means that the member is instantiated if the class
       itself is instantiated.
  
! 'retain'
       For ELF targets that support the GNU or FreeBSD OSABIs, this
       attribute will save the variable from linker garbage collection.
       To support this behavior, variables that have not been placed in
!      specific sections (e.g.  by the 'section' attribute, or the
!      '-fdata-sections' option), will be placed in new, unique sections.
  
       This additional functionality requires Binutils version 2.36 or
       later.
  
! 'uninitialized'
       This attribute, attached to a variable with automatic storage,
       means that the variable should not be automatically initialized by
!      the compiler when the option '-ftrivial-auto-var-init' presents.
  
!      With the option '-ftrivial-auto-var-init', all the automatic
       variables that do not have explicit initializers will be
       initialized by the compiler.  These additional compiler
       initializations might incur run-time overhead, sometimes
--- 42418,42439 ----
       attribute also means that the member is instantiated if the class
       itself is instantiated.
  
! â€˜retainâ€™
       For ELF targets that support the GNU or FreeBSD OSABIs, this
       attribute will save the variable from linker garbage collection.
       To support this behavior, variables that have not been placed in
!      specific sections (e.g.  by the â€˜sectionâ€™ attribute, or the
!      â€˜-fdata-sectionsâ€™ option), will be placed in new, unique sections.
  
       This additional functionality requires Binutils version 2.36 or
       later.
  
! â€˜uninitializedâ€™
       This attribute, attached to a variable with automatic storage,
       means that the variable should not be automatically initialized by
!      the compiler when the option â€˜-ftrivial-auto-var-initâ€™ presents.
  
!      With the option â€˜-ftrivial-auto-var-initâ€™, all the automatic
       variables that do not have explicit initializers will be
       initialized by the compiler.  These additional compiler
       initializations might incur run-time overhead, sometimes
*************** The following attributes are supported o
*** 42434,42454 ****
       runtime overhead.
  
       This attribute has no effect when the option
!      '-ftrivial-auto-var-init' is not present.
  
! 'vector_size (BYTES)'
       This attribute specifies the vector size for the type of the
       declared variable, measured in bytes.  The type to which it applies
!      is known as the "base type".  The BYTES argument must be a positive
       power-of-two multiple of the base type size.  For example, the
       declaration:
  
            int foo __attribute__ ((vector_size (16)));
  
!      causes the compiler to set the mode for 'foo', to be 16 bytes,
!      divided into 'int' sized units.  Assuming a 32-bit 'int', 'foo''s
       type is a vector of four units of four bytes each, and the
!      corresponding mode of 'foo' is 'V4SI'.  *Note Vector Extensions::,
       for details of manipulating vector variables.
  
       This attribute is only applicable to integral and floating scalars,
--- 42442,42462 ----
       runtime overhead.
  
       This attribute has no effect when the option
!      â€˜-ftrivial-auto-var-initâ€™ is not present.
  
! â€˜vector_size (BYTES)â€™
       This attribute specifies the vector size for the type of the
       declared variable, measured in bytes.  The type to which it applies
!      is known as the â€œbase typeâ€�.  The BYTES argument must be a positive
       power-of-two multiple of the base type size.  For example, the
       declaration:
  
            int foo __attribute__ ((vector_size (16)));
  
!      causes the compiler to set the mode for â€˜fooâ€™, to be 16 bytes,
!      divided into â€˜intâ€™ sized units.  Assuming a 32-bit â€˜intâ€™, â€˜fooâ€™'s
       type is a vector of four units of four bytes each, and the
!      corresponding mode of â€˜fooâ€™ is â€˜V4SIâ€™.  *Note Vector Extensions::,
       for details of manipulating vector variables.
  
       This attribute is only applicable to integral and floating scalars,
*************** The following attributes are supported o
*** 42462,42475 ****
            struct S  __attribute__ ((vector_size (16))) foo;
  
       is invalid even if the size of the structure is the same as the
!      size of the 'int'.
  
! 'visibility ("VISIBILITY_TYPE")'
       This attribute affects the linkage of the declaration to which it
!      is attached.  The 'visibility' attribute is described in *note
       Common Function Attributes::.
  
! 'warn_if_not_aligned (ALIGNMENT)'
       This attribute specifies a threshold for the structure field,
       measured in bytes.  If the structure field is aligned below the
       threshold, a warning will be issued.  For example, the declaration:
--- 42470,42483 ----
            struct S  __attribute__ ((vector_size (16))) foo;
  
       is invalid even if the size of the structure is the same as the
!      size of the â€˜intâ€™.
  
! â€˜visibility ("VISIBILITY_TYPE")â€™
       This attribute affects the linkage of the declaration to which it
!      is attached.  The â€˜visibilityâ€™ attribute is described in *note
       Common Function Attributes::.
  
! â€˜warn_if_not_aligned (ALIGNMENT)â€™
       This attribute specifies a threshold for the structure field,
       measured in bytes.  If the structure field is aligned below the
       threshold, a warning will be issued.  For example, the declaration:
*************** The following attributes are supported o
*** 42481,42490 ****
              unsigned long long x __attribute__ ((warn_if_not_aligned (16)));
            };
  
!      causes the compiler to issue an warning on 'struct foo', like
!      'warning: alignment 8 of 'struct foo' is less than 16'.  The
!      compiler also issues a warning, like 'warning: 'x' offset 8 in
!      'struct foo' isn't aligned to 16', when the structure field has the
       misaligned offset:
  
            struct __attribute__ ((aligned (16))) foo
--- 42489,42498 ----
              unsigned long long x __attribute__ ((warn_if_not_aligned (16)));
            };
  
!      causes the compiler to issue an warning on â€˜struct fooâ€™, like
!      â€˜warning: alignment 8 of 'struct foo' is less than 16â€™.  The
!      compiler also issues a warning, like â€˜warning: 'x' offset 8 in
!      'struct foo' isn't aligned to 16â€™, when the structure field has the
       misaligned offset:
  
            struct __attribute__ ((aligned (16))) foo
*************** The following attributes are supported o
*** 42494,42505 ****
              unsigned long long x __attribute__ ((warn_if_not_aligned (16)));
            };
  
!      This warning can be disabled by '-Wno-if-not-aligned'.  The
!      'warn_if_not_aligned' attribute can also be used for types (*note
       Common Type Attributes::.)
  
! 'weak'
!      The 'weak' attribute is described in *note Common Function
       Attributes::.
  
  
--- 42502,42513 ----
              unsigned long long x __attribute__ ((warn_if_not_aligned (16)));
            };
  
!      This warning can be disabled by â€˜-Wno-if-not-alignedâ€™.  The
!      â€˜warn_if_not_alignedâ€™ attribute can also be used for types (*note
       Common Type Attributes::.)
  
! â€˜weakâ€™
!      The â€˜weakâ€™ attribute is described in *note Common Function
       Attributes::.
  
  
*************** File: gcc.info,  Node: ARC Variable Attr
*** 42508,42515 ****
  6.4.2.2 ARC Variable Attributes
  ...............................
  
! 'aux'
!      The 'aux' attribute is used to directly access the ARC's auxiliary
       register space from C. The auxiliary register number is given via
       attribute argument.
  
--- 42516,42523 ----
  6.4.2.2 ARC Variable Attributes
  ...............................
  
! â€˜auxâ€™
!      The â€˜auxâ€™ attribute is used to directly access the ARC's auxiliary
       register space from C. The auxiliary register number is given via
       attribute argument.
  
*************** File: gcc.info,  Node: AVR Variable Attr
*** 42519,42537 ****
  6.4.2.3 AVR Variable Attributes
  ...............................
  
! 'progmem'
!      The 'progmem' attribute is used on the AVR to place read-only data
!      in the non-volatile program memory (flash).  The 'progmem'
       attribute accomplishes this by putting respective variables into a
!      section whose name starts with '.progmem'.
  
!      This attribute works similar to the 'section' attribute but adds
       additional checking.
  
!      * Ordinary AVR cores with 32 general purpose registers:
!           'progmem' affects the location of the data but not how this
            data is accessed.  In order to read data located with the
!           'progmem' attribute (inline) assembler must be used.
                 /* Use custom macros from AVR-LibC */
                 #include <avr/pgmspace.h>
  
--- 42527,42545 ----
  6.4.2.3 AVR Variable Attributes
  ...............................
  
! â€˜progmemâ€™
!      The â€˜progmemâ€™ attribute is used on the AVR to place read-only data
!      in the non-volatile program memory (flash).  The â€˜progmemâ€™
       attribute accomplishes this by putting respective variables into a
!      section whose name starts with â€˜.progmemâ€™.
  
!      This attribute works similar to the â€˜sectionâ€™ attribute but adds
       additional checking.
  
!      â€¢ Ordinary AVR cores with 32 general purpose registers:
!           â€˜progmemâ€™ affects the location of the data but not how this
            data is accessed.  In order to read data located with the
!           â€˜progmemâ€™ attribute (inline) assembler must be used.
                 /* Use custom macros from AVR-LibC */
                 #include <avr/pgmspace.h>
  
*************** File: gcc.info,  Node: AVR Variable Attr
*** 42550,42576 ****
            See also the *note AVR Named Address Spaces:: section for an
            alternate way to locate and access data in flash memory.
  
!      * AVR cores with flash memory visible in the RAM address range:
!           On such devices, there is no need for attribute 'progmem' or
!           *note '__flash': AVR Named Address Spaces. qualifier at all.
!           Just use standard C / C++.  The compiler will generate 'LD*'
            instructions.  As flash memory is visible in the RAM address
            range, and the default linker script does _not_ locate
!           '.rodata' in RAM, no special features are needed in order not
            to waste RAM for read-only data or to read from flash.  You
            might even get slightly better performance by avoiding
!           'progmem' and '__flash'.  This applies to devices from
!           families 'avrtiny' and 'avrxmega3', see *note AVR Options::
            for an overview.
  
!      * Reduced AVR Tiny cores like ATtiny40:
!           The compiler adds '0x4000' to the addresses of objects and
!           declarations in 'progmem' and locates the objects in flash
!           memory, namely in section '.progmem.data'.  The offset is
            needed because the flash memory is visible in the RAM address
!           space starting at address '0x4000'.
  
!           Data in 'progmem' can be accessed by means of ordinary C code,
            no special functions or macros are needed.
  
                 /* var is located in flash memory */
--- 42558,42584 ----
            See also the *note AVR Named Address Spaces:: section for an
            alternate way to locate and access data in flash memory.
  
!      â€¢ AVR cores with flash memory visible in the RAM address range:
!           On such devices, there is no need for attribute â€˜progmemâ€™ or
!           *note â€˜__flashâ€™: AVR Named Address Spaces. qualifier at all.
!           Just use standard C / C++.  The compiler will generate â€˜LD*â€™
            instructions.  As flash memory is visible in the RAM address
            range, and the default linker script does _not_ locate
!           â€˜.rodataâ€™ in RAM, no special features are needed in order not
            to waste RAM for read-only data or to read from flash.  You
            might even get slightly better performance by avoiding
!           â€˜progmemâ€™ and â€˜__flashâ€™.  This applies to devices from
!           families â€˜avrtinyâ€™ and â€˜avrxmega3â€™, see *note AVR Options::
            for an overview.
  
!      â€¢ Reduced AVR Tiny cores like ATtiny40:
!           The compiler adds â€˜0x4000â€™ to the addresses of objects and
!           declarations in â€˜progmemâ€™ and locates the objects in flash
!           memory, namely in section â€˜.progmem.dataâ€™.  The offset is
            needed because the flash memory is visible in the RAM address
!           space starting at address â€˜0x4000â€™.
  
!           Data in â€˜progmemâ€™ can be accessed by means of ordinary C code,
            no special functions or macros are needed.
  
                 /* var is located in flash memory */
*************** File: gcc.info,  Node: AVR Variable Attr
*** 42582,42592 ****
                 }
  
            Please notice that on these devices, there is no need for
!           'progmem' at all.
  
! 'io'
! 'io (ADDR)'
!      Variables with the 'io' attribute are used to address memory-mapped
       peripherals in the I/O address range.  No memory is allocated.  If
       an address is specified, the variable is assigned that address, and
       the value is interpreted as an address in the data address space.
--- 42590,42600 ----
                 }
  
            Please notice that on these devices, there is no need for
!           â€˜progmemâ€™ at all.
  
! â€˜ioâ€™
! â€˜io (ADDR)â€™
!      Variables with the â€˜ioâ€™ attribute are used to address memory-mapped
       peripherals in the I/O address range.  No memory is allocated.  If
       an address is specified, the variable is assigned that address, and
       the value is interpreted as an address in the data address space.
*************** File: gcc.info,  Node: AVR Variable Attr
*** 42595,42649 ****
            volatile int porta __attribute__((io (__AVR_SFR_OFFSET__ + 0x2)));
  
       Otherwise, the variable is not assigned an address, but the
!      compiler will still use 'in' and 'out' instructions where
       applicable, assuming some other module assigns an address in the
       I/O address range.  Example:
  
            extern volatile int porta __attribute__((io));
  
! 'io_low'
! 'io_low (ADDR)'
!      This is like the 'io' attribute, but additionally it informs the
       compiler that the object lies in the lower half of the I/O area,
!      allowing the use of 'cbi', 'sbi', 'sbic' and 'sbis' instructions.
  
! 'address (ADDR)'
!      Variables with the 'address' attribute can be used to address
       memory-mapped peripherals that may lie outside the I/O address
!      range.  Just like with the 'io' and 'io_low' attributes, no memory
       is allocated.
  
            volatile int porta __attribute__((address (0x600)));
  
       This attribute can also be used to define symbols in C/C++ code
       which otherwise would require assembly, a linker description file
!      or command-line options like '-Wl,--defsym,a_symbol=VALUE'.  For
       example,
            int a_symbol __attribute__((weak, address (1234)));
       will be compiled to
            .weak a_symbol
            a_symbol = 1234
  
! 'absdata'
!      Variables in static storage and with the 'absdata' attribute can be
!      accessed by the 'LDS' and 'STS' instructions which take absolute
       addresses.
  
!         * This attribute is only supported for the reduced AVR Tiny core
            like ATtiny40.
  
!         * You must make sure that respective data is located in the
!           address range '0x40'...'0xbf' accessible by 'LDS' and 'STS'.
            One way to achieve this as an appropriate linker description
            file.
  
!         * If the location does not fit the address range of 'LDS' and
!           'STS', there is currently (Binutils 2.26) just an unspecific
            warning like
!                'module.cc:(.text+0x1c): warning: internal error: out of
!                range error'
  
!      See also the '-mabsdata' *note command-line option: AVR Options.
  
  
  File: gcc.info,  Node: Blackfin Variable Attributes,  Next: H8/300 Variable Attributes,  Prev: AVR Variable Attributes,  Up: Variable Attributes
--- 42603,42657 ----
            volatile int porta __attribute__((io (__AVR_SFR_OFFSET__ + 0x2)));
  
       Otherwise, the variable is not assigned an address, but the
!      compiler will still use â€˜inâ€™ and â€˜outâ€™ instructions where
       applicable, assuming some other module assigns an address in the
       I/O address range.  Example:
  
            extern volatile int porta __attribute__((io));
  
! â€˜io_lowâ€™
! â€˜io_low (ADDR)â€™
!      This is like the â€˜ioâ€™ attribute, but additionally it informs the
       compiler that the object lies in the lower half of the I/O area,
!      allowing the use of â€˜cbiâ€™, â€˜sbiâ€™, â€˜sbicâ€™ and â€˜sbisâ€™ instructions.
  
! â€˜address (ADDR)â€™
!      Variables with the â€˜addressâ€™ attribute can be used to address
       memory-mapped peripherals that may lie outside the I/O address
!      range.  Just like with the â€˜ioâ€™ and â€˜io_lowâ€™ attributes, no memory
       is allocated.
  
            volatile int porta __attribute__((address (0x600)));
  
       This attribute can also be used to define symbols in C/C++ code
       which otherwise would require assembly, a linker description file
!      or command-line options like â€˜-Wl,--defsym,a_symbol=VALUEâ€™.  For
       example,
            int a_symbol __attribute__((weak, address (1234)));
       will be compiled to
            .weak a_symbol
            a_symbol = 1234
  
! â€˜absdataâ€™
!      Variables in static storage and with the â€˜absdataâ€™ attribute can be
!      accessed by the â€˜LDSâ€™ and â€˜STSâ€™ instructions which take absolute
       addresses.
  
!         â€¢ This attribute is only supported for the reduced AVR Tiny core
            like ATtiny40.
  
!         â€¢ You must make sure that respective data is located in the
!           address range â€˜0x40â€™...â€˜0xbfâ€™ accessible by â€˜LDSâ€™ and â€˜STSâ€™.
            One way to achieve this as an appropriate linker description
            file.
  
!         â€¢ If the location does not fit the address range of â€˜LDSâ€™ and
!           â€˜STSâ€™, there is currently (Binutils 2.26) just an unspecific
            warning like
!                â€˜module.cc:(.text+0x1c): warning: internal error: out of
!                range errorâ€™
  
!      See also the â€˜-mabsdataâ€™ *note command-line option: AVR Options.
  
  
  File: gcc.info,  Node: Blackfin Variable Attributes,  Next: H8/300 Variable Attributes,  Prev: AVR Variable Attributes,  Up: Variable Attributes
*************** File: gcc.info,  Node: Blackfin Variable
*** 42653,42672 ****
  
  Three attributes are currently defined for the Blackfin.
  
! 'l1_data'
! 'l1_data_A'
! 'l1_data_B'
       Use these attributes on the Blackfin to place the variable into L1
!      Data SRAM. Variables with 'l1_data' attribute are put into the
!      specific section named '.l1.data'.  Those with 'l1_data_A'
!      attribute are put into the specific section named '.l1.data.A'.
!      Those with 'l1_data_B' attribute are put into the specific section
!      named '.l1.data.B'.
  
! 'l2'
       Use this attribute on the Blackfin to place the variable into L2
!      SRAM. Variables with 'l2' attribute are put into the specific
!      section named '.l2.data'.
  
  
  File: gcc.info,  Node: H8/300 Variable Attributes,  Next: IA-64 Variable Attributes,  Prev: Blackfin Variable Attributes,  Up: Variable Attributes
--- 42661,42680 ----
  
  Three attributes are currently defined for the Blackfin.
  
! â€˜l1_dataâ€™
! â€˜l1_data_Aâ€™
! â€˜l1_data_Bâ€™
       Use these attributes on the Blackfin to place the variable into L1
!      Data SRAM. Variables with â€˜l1_dataâ€™ attribute are put into the
!      specific section named â€˜.l1.dataâ€™.  Those with â€˜l1_data_Aâ€™
!      attribute are put into the specific section named â€˜.l1.data.Aâ€™.
!      Those with â€˜l1_data_Bâ€™ attribute are put into the specific section
!      named â€˜.l1.data.Bâ€™.
  
! â€˜l2â€™
       Use this attribute on the Blackfin to place the variable into L2
!      SRAM. Variables with â€˜l2â€™ attribute are put into the specific
!      section named â€˜.l2.dataâ€™.
  
  
  File: gcc.info,  Node: H8/300 Variable Attributes,  Next: IA-64 Variable Attributes,  Prev: Blackfin Variable Attributes,  Up: Variable Attributes
*************** File: gcc.info,  Node: H8/300 Variable A
*** 42676,42682 ****
  
  These variable attributes are available for H8/300 targets:
  
! 'eightbit_data'
       Use this attribute on the H8/300, H8/300H, and H8S to indicate that
       the specified variable should be placed into the eight-bit data
       section.  The compiler generates more efficient code for certain
--- 42684,42690 ----
  
  These variable attributes are available for H8/300 targets:
  
! â€˜eightbit_dataâ€™
       Use this attribute on the H8/300, H8/300H, and H8S to indicate that
       the specified variable should be placed into the eight-bit data
       section.  The compiler generates more efficient code for certain
*************** These variable attributes are available
*** 42686,42692 ****
       You must use GAS and GLD from GNU binutils version 2.7 or later for
       this attribute to work correctly.
  
! 'tiny_data'
       Use this attribute on the H8/300H and H8S to indicate that the
       specified variable should be placed into the tiny data section.
       The compiler generates more efficient code for loads and stores on
--- 42694,42700 ----
       You must use GAS and GLD from GNU binutils version 2.7 or later for
       this attribute to work correctly.
  
! â€˜tiny_dataâ€™
       Use this attribute on the H8/300H and H8S to indicate that the
       specified variable should be placed into the tiny data section.
       The compiler generates more efficient code for loads and stores on
*************** File: gcc.info,  Node: IA-64 Variable At
*** 42701,42712 ****
  
  The IA-64 back end supports the following variable attribute:
  
! 'model (MODEL-NAME)'
  
       On IA-64, use this attribute to set the addressability of an
       object.  At present, the only supported identifier for MODEL-NAME
!      is 'small', indicating addressability via "small" (22-bit)
!      addresses (so that their addresses can be loaded with the 'addl'
       instruction).  Caveat: such addressing is by definition not
       position independent and hence this attribute must not be used for
       objects defined by shared libraries.
--- 42709,42720 ----
  
  The IA-64 back end supports the following variable attribute:
  
! â€˜model (MODEL-NAME)â€™
  
       On IA-64, use this attribute to set the addressability of an
       object.  At present, the only supported identifier for MODEL-NAME
!      is â€˜smallâ€™, indicating addressability via "small" (22-bit)
!      addresses (so that their addresses can be loaded with the â€˜addlâ€™
       instruction).  Caveat: such addressing is by definition not
       position independent and hence this attribute must not be used for
       objects defined by shared libraries.
*************** File: gcc.info,  Node: LoongArch Variabl
*** 42719,42731 ****
  
  One attribute is currently defined for the LoongArch.
  
! 'model("NAME")'
       Use this attribute on the LoongArch to use a different code model
       for addressing this variable, than the code model specified by the
!      global '-mcmodel' option.  This attribute is mostly useful if a
!      'section' attribute and/or a linker script will locate this object
       specially.  Currently the only supported values of NAME are
!      'normal' and 'extreme'.
  
  
  File: gcc.info,  Node: M32R/D Variable Attributes,  Next: Microsoft Windows Variable Attributes,  Prev: LoongArch Variable Attributes,  Up: Variable Attributes
--- 42727,42739 ----
  
  One attribute is currently defined for the LoongArch.
  
! â€˜model("NAME")â€™
       Use this attribute on the LoongArch to use a different code model
       for addressing this variable, than the code model specified by the
!      global â€˜-mcmodelâ€™ option.  This attribute is mostly useful if a
!      â€˜sectionâ€™ attribute and/or a linker script will locate this object
       specially.  Currently the only supported values of NAME are
!      â€˜normalâ€™ and â€˜extremeâ€™.
  
  
  File: gcc.info,  Node: M32R/D Variable Attributes,  Next: Microsoft Windows Variable Attributes,  Prev: LoongArch Variable Attributes,  Up: Variable Attributes
*************** File: gcc.info,  Node: M32R/D Variable A
*** 42735,42750 ****
  
  One attribute is currently defined for the M32R/D.
  
! 'model (MODEL-NAME)'
       Use this attribute on the M32R/D to set the addressability of an
!      object.  The identifier MODEL-NAME is one of 'small', 'medium', or
!      'large', representing each of the code models.
  
       Small model objects live in the lower 16MB of memory (so that their
!      addresses can be loaded with the 'ld24' instruction).
  
       Medium and large model objects may live anywhere in the 32-bit
!      address space (the compiler generates 'seth/add3' instructions to
       load their addresses).
  
  
--- 42743,42758 ----
  
  One attribute is currently defined for the M32R/D.
  
! â€˜model (MODEL-NAME)â€™
       Use this attribute on the M32R/D to set the addressability of an
!      object.  The identifier MODEL-NAME is one of â€˜smallâ€™, â€˜mediumâ€™, or
!      â€˜largeâ€™, representing each of the code models.
  
       Small model objects live in the lower 16MB of memory (so that their
!      addresses can be loaded with the â€˜ld24â€™ instruction).
  
       Medium and large model objects may live anywhere in the 32-bit
!      address space (the compiler generates â€˜seth/add3â€™ instructions to
       load their addresses).
  
  
*************** You can use these attributes on Microsof
*** 42757,42769 ****
  Variable Attributes:: for additional Windows compatibility attributes
  available on all x86 targets.
  
! 'dllimport'
! 'dllexport'
!      The 'dllimport' and 'dllexport' attributes are described in *note
       Microsoft Windows Function Attributes::.
  
! 'selectany'
!      The 'selectany' attribute causes an initialized global variable to
       have link-once semantics.  When multiple definitions of the
       variable are encountered by the linker, the first is selected and
       the remainder are discarded.  Following usage by the Microsoft
--- 42765,42777 ----
  Variable Attributes:: for additional Windows compatibility attributes
  available on all x86 targets.
  
! â€˜dllimportâ€™
! â€˜dllexportâ€™
!      The â€˜dllimportâ€™ and â€˜dllexportâ€™ attributes are described in *note
       Microsoft Windows Function Attributes::.
  
! â€˜selectanyâ€™
!      The â€˜selectanyâ€™ attribute causes an initialized global variable to
       have link-once semantics.  When multiple definitions of the
       variable are encountered by the linker, the first is selected and
       the remainder are discarded.  Following usage by the Microsoft
*************** available on all x86 targets.
*** 42778,42794 ****
       constructor and destructor are protected by a link-once guard
       variable.
  
!      The 'selectany' attribute is only available on Microsoft Windows
!      targets.  You can use '__declspec (selectany)' as a synonym for
!      '__attribute__ ((selectany))' for compatibility with other
       compilers.
  
! 'shared'
       On Microsoft Windows, in addition to putting variable definitions
       in a named section, the section can also be shared among all
       running copies of an executable or DLL.  For example, this small
       program defines shared data by putting it in a named section
!      'shared' and marking the section shareable:
  
            int foo __attribute__((section ("shared"), shared)) = 0;
  
--- 42786,42802 ----
       constructor and destructor are protected by a link-once guard
       variable.
  
!      The â€˜selectanyâ€™ attribute is only available on Microsoft Windows
!      targets.  You can use â€˜__declspec (selectany)â€™ as a synonym for
!      â€˜__attribute__ ((selectany))â€™ for compatibility with other
       compilers.
  
! â€˜sharedâ€™
       On Microsoft Windows, in addition to putting variable definitions
       in a named section, the section can also be shared among all
       running copies of an executable or DLL.  For example, this small
       program defines shared data by putting it in a named section
!      â€˜sharedâ€™ and marking the section shareable:
  
            int foo __attribute__((section ("shared"), shared)) = 0;
  
*************** available on all x86 targets.
*** 42800,42810 ****
              return 0;
            }
  
!      You may only use the 'shared' attribute along with 'section'
       attribute with a fully-initialized global definition because of the
!      way linkers work.  See 'section' attribute for more information.
  
!      The 'shared' attribute is only available on Microsoft Windows.
  
  
  File: gcc.info,  Node: MSP430 Variable Attributes,  Next: Nvidia PTX Variable Attributes,  Prev: Microsoft Windows Variable Attributes,  Up: Variable Attributes
--- 42808,42818 ----
              return 0;
            }
  
!      You may only use the â€˜sharedâ€™ attribute along with â€˜sectionâ€™
       attribute with a fully-initialized global definition because of the
!      way linkers work.  See â€˜sectionâ€™ attribute for more information.
  
!      The â€˜sharedâ€™ attribute is only available on Microsoft Windows.
  
  
  File: gcc.info,  Node: MSP430 Variable Attributes,  Next: Nvidia PTX Variable Attributes,  Prev: Microsoft Windows Variable Attributes,  Up: Variable Attributes
*************** File: gcc.info,  Node: MSP430 Variable A
*** 42812,42838 ****
  6.4.2.10 MSP430 Variable Attributes
  ...................................
  
! 'upper'
! 'either'
       These attributes are the same as the MSP430 function attributes of
       the same name (*note MSP430 Function Attributes::).
  
! 'lower'
       This option behaves mostly the same as the MSP430 function
       attribute of the same name (*note MSP430 Function Attributes::),
       but it has some additional functionality.
  
!      If '-mdata-region='{'upper,either,none'} has been passed, or the
!      'section' attribute is applied to a variable, the compiler will
       generate 430X instructions to handle it.  This is because the
       compiler has to assume that the variable could get placed in the
       upper memory region (above address 0xFFFF). Marking the variable
!      with the 'lower' attribute informs the compiler that the variable
       will be placed in lower memory so it is safe to use 430
       instructions to handle it.
  
!      In the case of the 'section' attribute, the section name given will
!      be used, and the '.lower' prefix will not be added.
  
  
  File: gcc.info,  Node: Nvidia PTX Variable Attributes,  Next: PowerPC Variable Attributes,  Prev: MSP430 Variable Attributes,  Up: Variable Attributes
--- 42820,42846 ----
  6.4.2.10 MSP430 Variable Attributes
  ...................................
  
! â€˜upperâ€™
! â€˜eitherâ€™
       These attributes are the same as the MSP430 function attributes of
       the same name (*note MSP430 Function Attributes::).
  
! â€˜lowerâ€™
       This option behaves mostly the same as the MSP430 function
       attribute of the same name (*note MSP430 Function Attributes::),
       but it has some additional functionality.
  
!      If â€˜-mdata-region=â€™{â€˜upper,either,noneâ€™} has been passed, or the
!      â€˜sectionâ€™ attribute is applied to a variable, the compiler will
       generate 430X instructions to handle it.  This is because the
       compiler has to assume that the variable could get placed in the
       upper memory region (above address 0xFFFF). Marking the variable
!      with the â€˜lowerâ€™ attribute informs the compiler that the variable
       will be placed in lower memory so it is safe to use 430
       instructions to handle it.
  
!      In the case of the â€˜sectionâ€™ attribute, the section name given will
!      be used, and the â€˜.lowerâ€™ prefix will not be added.
  
  
  File: gcc.info,  Node: Nvidia PTX Variable Attributes,  Next: PowerPC Variable Attributes,  Prev: MSP430 Variable Attributes,  Up: Variable Attributes
*************** File: gcc.info,  Node: Nvidia PTX Variab
*** 42842,42849 ****
  
  These variable attributes are supported by the Nvidia PTX back end:
  
! 'shared'
!      Use this attribute to place a variable in the '.shared' memory
       space.  This memory space is private to each cooperative thread
       array; only threads within one thread block refer to the same
       instance of the variable.  The runtime does not initialize
--- 42850,42857 ----
  
  These variable attributes are supported by the Nvidia PTX back end:
  
! â€˜sharedâ€™
!      Use this attribute to place a variable in the â€˜.sharedâ€™ memory
       space.  This memory space is private to each cooperative thread
       array; only threads within one thread block refer to the same
       instance of the variable.  The runtime does not initialize
*************** File: gcc.info,  Node: PowerPC Variable
*** 42856,42867 ****
  ....................................
  
  Three attributes currently are defined for PowerPC configurations:
! 'altivec', 'ms_struct' and 'gcc_struct'.
  
   For full documentation of the struct attributes please see the
  documentation in *note x86 Variable Attributes::.
  
!  For documentation of 'altivec' attribute please see the documentation
  in *note PowerPC Type Attributes::.
  
  
--- 42864,42875 ----
  ....................................
  
  Three attributes currently are defined for PowerPC configurations:
! â€˜altivecâ€™, â€˜ms_structâ€™ and â€˜gcc_structâ€™.
  
   For full documentation of the struct attributes please see the
  documentation in *note x86 Variable Attributes::.
  
!  For documentation of â€˜altivecâ€™ attribute please see the documentation
  in *note PowerPC Type Attributes::.
  
  
*************** File: gcc.info,  Node: RL78 Variable Att
*** 42870,42876 ****
  6.4.2.13 RL78 Variable Attributes
  .................................
  
! The RL78 back end supports the 'saddr' variable attribute.  This
  specifies placement of the corresponding variable in the SADDR area,
  which can be accessed more efficiently than the default memory region.
  
--- 42878,42884 ----
  6.4.2.13 RL78 Variable Attributes
  .................................
  
! The RL78 back end supports the â€˜saddrâ€™ variable attribute.  This
  specifies placement of the corresponding variable in the SADDR area,
  which can be accessed more efficiently than the default memory region.
  
*************** File: gcc.info,  Node: V850 Variable Att
*** 42882,42896 ****
  
  These variable attributes are supported by the V850 back end:
  
! 'sda'
       Use this attribute to explicitly place a variable in the small data
       area, which can hold up to 64 kilobytes.
  
! 'tda'
       Use this attribute to explicitly place a variable in the tiny data
       area, which can hold up to 256 bytes in total.
  
! 'zda'
       Use this attribute to explicitly place a variable in the first 32
       kilobytes of memory.
  
--- 42890,42904 ----
  
  These variable attributes are supported by the V850 back end:
  
! â€˜sdaâ€™
       Use this attribute to explicitly place a variable in the small data
       area, which can hold up to 64 kilobytes.
  
! â€˜tdaâ€™
       Use this attribute to explicitly place a variable in the tiny data
       area, which can hold up to 256 bytes in total.
  
! â€˜zdaâ€™
       Use this attribute to explicitly place a variable in the first 32
       kilobytes of memory.
  
*************** File: gcc.info,  Node: x86 Variable Attr
*** 42900,42920 ****
  6.4.2.15 x86 Variable Attributes
  ................................
  
! Two attributes are currently defined for x86 configurations: 'ms_struct'
! and 'gcc_struct'.
  
! 'ms_struct'
! 'gcc_struct'
  
!      If 'packed' is used on a structure, or if bit-fields are used, it
       may be that the Microsoft ABI lays out the structure differently
       than the way GCC normally does.  Particularly when moving packed
       data between functions compiled with GCC and the native Microsoft
       compiler (either via function call or as data in a file), it may be
       necessary to access either format.
  
!      The 'ms_struct' and 'gcc_struct' attributes correspond to the
!      '-mms-bitfields' and '-mno-ms-bitfields' command-line options,
       respectively; see *note x86 Options::, for details of how structure
       layout is affected.  *Note x86 Type Attributes::, for information
       about the corresponding attributes on types.
--- 42908,42928 ----
  6.4.2.15 x86 Variable Attributes
  ................................
  
! Two attributes are currently defined for x86 configurations: â€˜ms_structâ€™
! and â€˜gcc_structâ€™.
  
! â€˜ms_structâ€™
! â€˜gcc_structâ€™
  
!      If â€˜packedâ€™ is used on a structure, or if bit-fields are used, it
       may be that the Microsoft ABI lays out the structure differently
       than the way GCC normally does.  Particularly when moving packed
       data between functions compiled with GCC and the native Microsoft
       compiler (either via function call or as data in a file), it may be
       necessary to access either format.
  
!      The â€˜ms_structâ€™ and â€˜gcc_structâ€™ attributes correspond to the
!      â€˜-mms-bitfieldsâ€™ and â€˜-mno-ms-bitfieldsâ€™ command-line options,
       respectively; see *note x86 Options::, for details of how structure
       layout is affected.  *Note x86 Type Attributes::, for information
       about the corresponding attributes on types.
*************** File: gcc.info,  Node: Xstormy16 Variabl
*** 42926,42939 ****
  ......................................
  
  One attribute is currently defined for xstormy16 configurations:
! 'below100'.
  
! 'below100'
  
!      If a variable has the 'below100' attribute ('BELOW100' is allowed
       also), GCC places the variable in the first 0x100 bytes of memory
       and use special opcodes to access it.  Such variables are placed in
!      either the '.bss_below100' section or the '.data_below100' section.
  
  
  File: gcc.info,  Node: Type Attributes,  Next: Label Attributes,  Prev: Variable Attributes,  Up: Attributes
--- 42934,42947 ----
  ......................................
  
  One attribute is currently defined for xstormy16 configurations:
! â€˜below100â€™.
  
! â€˜below100â€™
  
!      If a variable has the â€˜below100â€™ attribute (â€˜BELOW100â€™ is allowed
       also), GCC places the variable in the first 0x100 bytes of memory
       and use special opcodes to access it.  Such variables are placed in
!      either the â€˜.bss_below100â€™ section or the â€˜.data_below100â€™ section.
  
  
  File: gcc.info,  Node: Type Attributes,  Next: Label Attributes,  Prev: Variable Attributes,  Up: Attributes
*************** File: gcc.info,  Node: Type Attributes,
*** 42944,42950 ****
  You can use attributes to specify various special properties of types.
  Some type attributes apply only to structure and union types, and in
  C++, also class types, while others can apply to any type defined via a
! 'typedef' declaration.  Unless otherwise specified, the same
  restrictions and effects apply to attributes regardless of whether a
  type is a trivial structure or a C++ class with user-defined
  constructors, destructors, or a copy assignment.
--- 42952,42958 ----
  You can use attributes to specify various special properties of types.
  Some type attributes apply only to structure and union types, and in
  C++, also class types, while others can apply to any type defined via a
! â€˜typedefâ€™ declaration.  Unless otherwise specified, the same
  restrictions and effects apply to attributes regardless of whether a
  type is a trivial structure or a C++ class with user-defined
  constructors, destructors, or a copy assignment.
*************** Enumerator Attributes::), statements (*n
*** 42955,42972 ****
  for variables (*note Variable Attributes::).
  
   GCC provides two different ways to specify attributes: the traditional
! GNU syntax using '__attribute__ ((...))' annotations, and the newer
! standard C and C++ syntax using '[[...]]' with the 'gnu::' prefix on
  attribute names.  Note that the exact rules for placement of attributes
  in your source code are different depending on which syntax you use.
  *Note Attribute Syntax::, for details.
  
   You may specify type attributes in an enum, struct or union type
  declaration or definition by placing them immediately after the
! 'struct', 'union' or 'enum' keyword.  You can also place them just past
  the closing curly brace of the definition, but this is less preferred
  because logically the type should be fully defined at the closing brace.
! You can also include type attributes in a 'typedef' declaration.
  
  * Menu:
  
--- 42963,42980 ----
  for variables (*note Variable Attributes::).
  
   GCC provides two different ways to specify attributes: the traditional
! GNU syntax using â€˜__attribute__ ((...))â€™ annotations, and the newer
! standard C and C++ syntax using â€˜[[...]]â€™ with the â€˜gnu::â€™ prefix on
  attribute names.  Note that the exact rules for placement of attributes
  in your source code are different depending on which syntax you use.
  *Note Attribute Syntax::, for details.
  
   You may specify type attributes in an enum, struct or union type
  declaration or definition by placing them immediately after the
! â€˜structâ€™, â€˜unionâ€™ or â€˜enumâ€™ keyword.  You can also place them just past
  the closing curly brace of the definition, but this is less preferred
  because logically the type should be fully defined at the closing brace.
! You can also include type attributes in a â€˜typedefâ€™ declaration.
  
  * Menu:
  
*************** File: gcc.info,  Node: Common Type Attri
*** 42985,42993 ****
  
  The following type attributes are supported on most targets.
  
! 'aligned'
! 'aligned (ALIGNMENT)'
!      The 'aligned' attribute specifies a minimum alignment (in bytes)
       for variables of the specified type.  When specified, ALIGNMENT
       must be a power of 2.  Specifying no ALIGNMENT argument implies the
       maximum alignment for the target, which is often, but by no means
--- 42993,43001 ----
  
  The following type attributes are supported on most targets.
  
! â€˜alignedâ€™
! â€˜aligned (ALIGNMENT)â€™
!      The â€˜alignedâ€™ attribute specifies a minimum alignment (in bytes)
       for variables of the specified type.  When specified, ALIGNMENT
       must be a power of 2.  Specifying no ALIGNMENT argument implies the
       maximum alignment for the target, which is often, but by no means
*************** The following type attributes are suppor
*** 42997,43029 ****
            typedef int more_aligned_int __attribute__ ((aligned (8)));
  
       force the compiler to ensure (as far as it can) that each variable
!      whose type is 'struct S' or 'more_aligned_int' is allocated and
       aligned _at least_ on a 8-byte boundary.  On a SPARC, having all
!      variables of type 'struct S' aligned to 8-byte boundaries allows
!      the compiler to use the 'ldd' and 'std' (doubleword load and store)
!      instructions when copying one variable of type 'struct S' to
       another, thus improving run-time efficiency.
  
!      Note that the alignment of any given 'struct' or 'union' type is
       required by the ISO C standard to be at least a perfect multiple of
       the lowest common multiple of the alignments of all of the members
!      of the 'struct' or 'union' in question.  This means that you _can_
!      effectively adjust the alignment of a 'struct' or 'union' type by
!      attaching an 'aligned' attribute to any one of the members of such
       a type, but the notation illustrated in the example above is a more
       obvious, intuitive, and readable way to request the compiler to
!      adjust the alignment of an entire 'struct' or 'union' type.
  
       As in the preceding example, you can explicitly specify the
       alignment (in bytes) that you wish the compiler to use for a given
!      'struct' or 'union' type.  Alternatively, you can leave out the
       alignment factor and just ask the compiler to align a type to the
       maximum useful alignment for the target machine you are compiling
       for.  For example, you could write:
  
            struct __attribute__ ((aligned)) S { short f[3]; };
  
!      Whenever you leave out the alignment factor in an 'aligned'
       attribute specification, the compiler automatically sets the
       alignment for the type to the largest alignment that is ever used
       for any data type on the target machine you are compiling for.
--- 43005,43037 ----
            typedef int more_aligned_int __attribute__ ((aligned (8)));
  
       force the compiler to ensure (as far as it can) that each variable
!      whose type is â€˜struct Sâ€™ or â€˜more_aligned_intâ€™ is allocated and
       aligned _at least_ on a 8-byte boundary.  On a SPARC, having all
!      variables of type â€˜struct Sâ€™ aligned to 8-byte boundaries allows
!      the compiler to use the â€˜lddâ€™ and â€˜stdâ€™ (doubleword load and store)
!      instructions when copying one variable of type â€˜struct Sâ€™ to
       another, thus improving run-time efficiency.
  
!      Note that the alignment of any given â€˜structâ€™ or â€˜unionâ€™ type is
       required by the ISO C standard to be at least a perfect multiple of
       the lowest common multiple of the alignments of all of the members
!      of the â€˜structâ€™ or â€˜unionâ€™ in question.  This means that you _can_
!      effectively adjust the alignment of a â€˜structâ€™ or â€˜unionâ€™ type by
!      attaching an â€˜alignedâ€™ attribute to any one of the members of such
       a type, but the notation illustrated in the example above is a more
       obvious, intuitive, and readable way to request the compiler to
!      adjust the alignment of an entire â€˜structâ€™ or â€˜unionâ€™ type.
  
       As in the preceding example, you can explicitly specify the
       alignment (in bytes) that you wish the compiler to use for a given
!      â€˜structâ€™ or â€˜unionâ€™ type.  Alternatively, you can leave out the
       alignment factor and just ask the compiler to align a type to the
       maximum useful alignment for the target machine you are compiling
       for.  For example, you could write:
  
            struct __attribute__ ((aligned)) S { short f[3]; };
  
!      Whenever you leave out the alignment factor in an â€˜alignedâ€™
       attribute specification, the compiler automatically sets the
       alignment for the type to the largest alignment that is ever used
       for any data type on the target machine you are compiling for.
*************** The following type attributes are suppor
*** 43032,43041 ****
       of memory when performing copies to or from the variables that have
       types that you have aligned this way.
  
!      In the example above, if the size of each 'short' is 2 bytes, then
!      the size of the entire 'struct S' type is 6 bytes.  The smallest
       power of two that is greater than or equal to that is 8, so the
!      compiler sets the alignment for the entire 'struct S' type to 8
       bytes.
  
       Note that although you can ask the compiler to select a
--- 43040,43049 ----
       of memory when performing copies to or from the variables that have
       types that you have aligned this way.
  
!      In the example above, if the size of each â€˜shortâ€™ is 2 bytes, then
!      the size of the entire â€˜struct Sâ€™ type is 6 bytes.  The smallest
       power of two that is greater than or equal to that is 8, so the
!      compiler sets the alignment for the entire â€˜struct Sâ€™ type to 8
       bytes.
  
       Note that although you can ask the compiler to select a
*************** The following type attributes are suppor
*** 43051,43084 ****
       operations is often more efficient for efficiently-aligned types
       than for other types.
  
!      Note that the effectiveness of 'aligned' attributes may be limited
       by inherent limitations in your linker.  On many systems, the
       linker is only able to arrange for variables to be aligned up to a
       certain maximum alignment.  (For some linkers, the maximum
       supported alignment may be very very small.)  If your linker is
       only able to align variables up to a maximum of 8-byte alignment,
!      then specifying 'aligned (16)' in an '__attribute__' still only
       provides you with 8-byte alignment.  See your linker documentation
       for further information.
  
!      When used on a struct, or struct member, the 'aligned' attribute
       can only increase the alignment; in order to decrease it, the
!      'packed' attribute must be specified as well.  When used as part of
!      a typedef, the 'aligned' attribute can both increase and decrease
!      alignment, and specifying the 'packed' attribute generates a
       warning.
  
! 'alloc_size (POSITION)'
! 'alloc_size (POSITION-1, POSITION-2)'
!      The 'alloc_size' type attribute may be applied to the definition of
       a type of a function that returns a pointer and takes at least one
       argument of an integer type.  It indicates that the returned
       pointer points to an object whose size is given by the function
       argument at POSITION-1, or by the product of the arguments at
       POSITION-1 and POSITION-2.  Meaningful sizes are positive values
!      less than 'PTRDIFF_MAX'.  Other sizes are diagnosed when detected.
       GCC uses this information to improve the results of
!      '__builtin_object_size'.
  
       For instance, the following declarations
  
--- 43059,43092 ----
       operations is often more efficient for efficiently-aligned types
       than for other types.
  
!      Note that the effectiveness of â€˜alignedâ€™ attributes may be limited
       by inherent limitations in your linker.  On many systems, the
       linker is only able to arrange for variables to be aligned up to a
       certain maximum alignment.  (For some linkers, the maximum
       supported alignment may be very very small.)  If your linker is
       only able to align variables up to a maximum of 8-byte alignment,
!      then specifying â€˜aligned (16)â€™ in an â€˜__attribute__â€™ still only
       provides you with 8-byte alignment.  See your linker documentation
       for further information.
  
!      When used on a struct, or struct member, the â€˜alignedâ€™ attribute
       can only increase the alignment; in order to decrease it, the
!      â€˜packedâ€™ attribute must be specified as well.  When used as part of
!      a typedef, the â€˜alignedâ€™ attribute can both increase and decrease
!      alignment, and specifying the â€˜packedâ€™ attribute generates a
       warning.
  
! â€˜alloc_size (POSITION)â€™
! â€˜alloc_size (POSITION-1, POSITION-2)â€™
!      The â€˜alloc_sizeâ€™ type attribute may be applied to the definition of
       a type of a function that returns a pointer and takes at least one
       argument of an integer type.  It indicates that the returned
       pointer points to an object whose size is given by the function
       argument at POSITION-1, or by the product of the arguments at
       POSITION-1 and POSITION-2.  Meaningful sizes are positive values
!      less than â€˜PTRDIFF_MAXâ€™.  Other sizes are diagnosed when detected.
       GCC uses this information to improve the results of
!      â€˜__builtin_object_sizeâ€™.
  
       For instance, the following declarations
  
*************** The following type attributes are suppor
*** 43087,43129 ****
            typedef __attribute__ ((alloc_size (1))) void*
              malloc_type (size_t);
  
!      specify that 'calloc_type' is a type of a function that, like the
!      standard C function 'calloc', returns an object whose size is given
!      by the product of arguments 1 and 2, and that 'malloc_type', like
!      the standard C function 'malloc', returns an object whose size is
       given by argument 1 to the function.
  
! 'copy'
! 'copy (EXPRESSION)'
!      The 'copy' attribute applies the set of attributes with which the
       type of the EXPRESSION has been declared to the declaration of the
       type to which the attribute is applied.  The attribute is designed
       for libraries that define aliases that are expected to specify the
!      same set of attributes as the aliased symbols.  The 'copy'
       attribute can be used with types, variables, or functions.
       However, the kind of symbol to which the attribute is applied
       (either varible or function) must match the kind of symbol to which
!      the argument refers.  The 'copy' attribute copies only syntactic
       and semantic attributes but not attributes that affect a symbol's
!      linkage or visibility such as 'alias', 'visibility', or 'weak'.
!      The 'deprecated' attribute is also not copied.  *Note Common
       Function Attributes::.  *Note Common Variable Attributes::.
  
!      For example, suppose 'struct A' below is defined in some third
!      party library header to have the alignment requirement 'N' and to
       force a warning whenever a variable of the type is not so aligned
!      due to attribute 'packed'.  Specifying the 'copy' attribute on the
!      definition on the unrelated 'struct B' has the effect of copying
       all relevant attributes from the type referenced by the pointer
!      expression to 'struct B'.
  
            struct __attribute__ ((aligned (N), warn_if_not_aligned (N)))
            A { /* ... */ };
            struct __attribute__ ((copy ( (struct A *)0)) B { /* ... */ };
  
! 'deprecated'
! 'deprecated (MSG)'
!      The 'deprecated' attribute results in a warning if the type is used
       anywhere in the source file.  This is useful when identifying types
       that are expected to be removed in a future version of a program.
       If possible, the warning also includes the location of the
--- 43095,43137 ----
            typedef __attribute__ ((alloc_size (1))) void*
              malloc_type (size_t);
  
!      specify that â€˜calloc_typeâ€™ is a type of a function that, like the
!      standard C function â€˜callocâ€™, returns an object whose size is given
!      by the product of arguments 1 and 2, and that â€˜malloc_typeâ€™, like
!      the standard C function â€˜mallocâ€™, returns an object whose size is
       given by argument 1 to the function.
  
! â€˜copyâ€™
! â€˜copy (EXPRESSION)â€™
!      The â€˜copyâ€™ attribute applies the set of attributes with which the
       type of the EXPRESSION has been declared to the declaration of the
       type to which the attribute is applied.  The attribute is designed
       for libraries that define aliases that are expected to specify the
!      same set of attributes as the aliased symbols.  The â€˜copyâ€™
       attribute can be used with types, variables, or functions.
       However, the kind of symbol to which the attribute is applied
       (either varible or function) must match the kind of symbol to which
!      the argument refers.  The â€˜copyâ€™ attribute copies only syntactic
       and semantic attributes but not attributes that affect a symbol's
!      linkage or visibility such as â€˜aliasâ€™, â€˜visibilityâ€™, or â€˜weakâ€™.
!      The â€˜deprecatedâ€™ attribute is also not copied.  *Note Common
       Function Attributes::.  *Note Common Variable Attributes::.
  
!      For example, suppose â€˜struct Aâ€™ below is defined in some third
!      party library header to have the alignment requirement â€˜Nâ€™ and to
       force a warning whenever a variable of the type is not so aligned
!      due to attribute â€˜packedâ€™.  Specifying the â€˜copyâ€™ attribute on the
!      definition on the unrelated â€˜struct Bâ€™ has the effect of copying
       all relevant attributes from the type referenced by the pointer
!      expression to â€˜struct Bâ€™.
  
            struct __attribute__ ((aligned (N), warn_if_not_aligned (N)))
            A { /* ... */ };
            struct __attribute__ ((copy ( (struct A *)0)) B { /* ... */ };
  
! â€˜deprecatedâ€™
! â€˜deprecated (MSG)â€™
!      The â€˜deprecatedâ€™ attribute results in a warning if the type is used
       anywhere in the source file.  This is useful when identifying types
       that are expected to be removed in a future version of a program.
       If possible, the warning also includes the location of the
*************** The following type attributes are suppor
*** 43146,43162 ****
       deprecated.  Similarly for line 6.  The optional MSG argument,
       which must be a string, is printed in the warning if present.
       Control characters in the string will be replaced with escape
!      sequences, and if the '-fmessage-length' option is set to 0 (its
       default value) then any newline characters will be ignored.
  
!      The 'deprecated' attribute can also be used for functions and
       variables (*note Function Attributes::, *note Variable
       Attributes::.)
  
       The message attached to the attribute is affected by the setting of
!      the '-fmessage-length' option.
  
! 'designated_init'
       This attribute may only be applied to structure types.  It
       indicates that any initialization of an object of this type must
       use designated initializers rather than positional initializers.
--- 43154,43170 ----
       deprecated.  Similarly for line 6.  The optional MSG argument,
       which must be a string, is printed in the warning if present.
       Control characters in the string will be replaced with escape
!      sequences, and if the â€˜-fmessage-lengthâ€™ option is set to 0 (its
       default value) then any newline characters will be ignored.
  
!      The â€˜deprecatedâ€™ attribute can also be used for functions and
       variables (*note Function Attributes::, *note Variable
       Attributes::.)
  
       The message attached to the attribute is affected by the setting of
!      the â€˜-fmessage-lengthâ€™ option.
  
! â€˜designated_initâ€™
       This attribute may only be applied to structure types.  It
       indicates that any initialization of an object of this type must
       use designated initializers rather than positional initializers.
*************** The following type attributes are suppor
*** 43165,43187 ****
       positional initialization will result in future breakage.
  
       GCC emits warnings based on this attribute by default; use
!      '-Wno-designated-init' to suppress them.
  
! 'flag_enum'
       This attribute may be applied to an enumerated type to indicate
       that its enumerators are used in bitwise operations, so e.g.
!      '-Wswitch' should not warn about a 'case' that corresponds to a
       bitwise combination of enumerators.
  
! 'hardbool'
! 'hardbool (FALSE_VALUE)'
! 'hardbool (FALSE_VALUE, TRUE_VALUE)'
       This attribute may only be applied to integral types in C, to
       introduce hardened boolean types.  It turns the integral type into
       a boolean-like type with the same size and precision, that uses the
!      specified values as representations for 'false' and 'true'.
       Underneath, it is actually an enumerated type, but its observable
!      behavior is like that of '_Bool', except for the strict internal
       representations, verified by runtime checks.
  
       If TRUE_VALUE is omitted, the bitwise negation of FALSE_VALUE is
--- 43173,43195 ----
       positional initialization will result in future breakage.
  
       GCC emits warnings based on this attribute by default; use
!      â€˜-Wno-designated-initâ€™ to suppress them.
  
! â€˜flag_enumâ€™
       This attribute may be applied to an enumerated type to indicate
       that its enumerators are used in bitwise operations, so e.g.
!      â€˜-Wswitchâ€™ should not warn about a â€˜caseâ€™ that corresponds to a
       bitwise combination of enumerators.
  
! â€˜hardboolâ€™
! â€˜hardbool (FALSE_VALUE)â€™
! â€˜hardbool (FALSE_VALUE, TRUE_VALUE)â€™
       This attribute may only be applied to integral types in C, to
       introduce hardened boolean types.  It turns the integral type into
       a boolean-like type with the same size and precision, that uses the
!      specified values as representations for â€˜falseâ€™ and â€˜trueâ€™.
       Underneath, it is actually an enumerated type, but its observable
!      behavior is like that of â€˜_Boolâ€™, except for the strict internal
       representations, verified by runtime checks.
  
       If TRUE_VALUE is omitted, the bitwise negation of FALSE_VALUE is
*************** The following type attributes are suppor
*** 43190,43205 ****
       original integral type.  Narrower bitfields are rejected if the
       representations become indistinguishable.
  
!      Values of such types automatically decay to '_Bool', at which
       point, the selected representation values are mapped to the
!      corresponding '_Bool' values.  When the represented value is not
       determined, at compile time, to be either FALSE_VALUE or
!      TRUE_VALUE, runtime verification calls '__builtin_trap' if it is
       neither.  This is what makes them hardened boolean types.
  
       When converting scalar types to such hardened boolean types,
       implicitly or explicitly, behavior corresponds to a conversion to
!      '_Bool', followed by a mapping from 'false' and 'true' to
       FALSE_VALUE and TRUE_VALUE, respectively.
  
            typedef char __attribute__ ((__hardbool__ (0x5a))) hbool;
--- 43198,43213 ----
       original integral type.  Narrower bitfields are rejected if the
       representations become indistinguishable.
  
!      Values of such types automatically decay to â€˜_Boolâ€™, at which
       point, the selected representation values are mapped to the
!      corresponding â€˜_Boolâ€™ values.  When the represented value is not
       determined, at compile time, to be either FALSE_VALUE or
!      TRUE_VALUE, runtime verification calls â€˜__builtin_trapâ€™ if it is
       neither.  This is what makes them hardened boolean types.
  
       When converting scalar types to such hardened boolean types,
       implicitly or explicitly, behavior corresponds to a conversion to
!      â€˜_Boolâ€™, followed by a mapping from â€˜falseâ€™ and â€˜trueâ€™ to
       FALSE_VALUE and TRUE_VALUE, respectively.
  
            typedef char __attribute__ ((__hardbool__ (0x5a))) hbool;
*************** The following type attributes are suppor
*** 43211,43219 ****
  
       When zero-initializing a variable or field of hardened boolean type
       (presumably held in static storage) the implied zero initializer
!      gets converted to '_Bool', and then to the hardened boolean type,
       so that the initial value is the hardened representation for
!      'false'.  Using that value is well defined.  This is _not_ the case
       when variables and fields of such types are uninitialized
       (presumably held in automatic or dynamic storage): their values are
       indeterminate, and using them invokes undefined behavior.  Using
--- 43219,43227 ----
  
       When zero-initializing a variable or field of hardened boolean type
       (presumably held in static storage) the implied zero initializer
!      gets converted to â€˜_Boolâ€™, and then to the hardened boolean type,
       so that the initial value is the hardened representation for
!      â€˜falseâ€™.  Using that value is well defined.  This is _not_ the case
       when variables and fields of such types are uninitialized
       (presumably held in automatic or dynamic storage): their values are
       indeterminate, and using them invokes undefined behavior.  Using
*************** The following type attributes are suppor
*** 43222,43232 ****
       compiler may perform on the grounds that using uninitialized values
       invokes undefined behavior.
  
!      Users of '-ftrivial-auto-var-init' should be aware that the bit
!      patterns used as initializers are _not_ converted to 'hardbool'
!      types, so using a 'hardbool' variable that is implicitly
!      initialized by the '-ftrivial-auto-var-init' may trap if the
!      representations values chosen for 'false' and 'true' do not match
       the initializer.
  
       Since this is a language extension only available in C,
--- 43230,43240 ----
       compiler may perform on the grounds that using uninitialized values
       invokes undefined behavior.
  
!      Users of â€˜-ftrivial-auto-var-initâ€™ should be aware that the bit
!      patterns used as initializers are _not_ converted to â€˜hardboolâ€™
!      types, so using a â€˜hardboolâ€™ variable that is implicitly
!      initialized by the â€˜-ftrivial-auto-var-initâ€™ may trap if the
!      representations values chosen for â€˜falseâ€™ and â€˜trueâ€™ do not match
       the initializer.
  
       Since this is a language extension only available in C,
*************** The following type attributes are suppor
*** 43236,43248 ****
       other languages' integral types that correspond to C's chosen
       integral type.
  
! 'may_alias'
       Accesses through pointers to types with this attribute are not
       subject to type-based alias analysis, but are instead assumed to be
       able to alias any other type of objects.  In the context of section
       6.5 paragraph 7 of the C99 standard, an lvalue expression
       dereferencing such a pointer is treated like having a character
!      type.  See '-fstrict-aliasing' for more information on aliasing
       issues.  This extension exists to support some vector APIs, in
       which pointers to one vector type are permitted to alias pointers
       to a different vector type.
--- 43244,43256 ----
       other languages' integral types that correspond to C's chosen
       integral type.
  
! â€˜may_aliasâ€™
       Accesses through pointers to types with this attribute are not
       subject to type-based alias analysis, but are instead assumed to be
       able to alias any other type of objects.  In the context of section
       6.5 paragraph 7 of the C99 standard, an lvalue expression
       dereferencing such a pointer is treated like having a character
!      type.  See â€˜-fstrict-aliasingâ€™ for more information on aliasing
       issues.  This extension exists to support some vector APIs, in
       which pointers to one vector type are permitted to alias pointers
       to a different vector type.
*************** The following type attributes are suppor
*** 43268,43310 ****
              exit(0);
            }
  
!      If you replaced 'short_a' with 'short' in the variable declaration,
       the above program would abort when compiled with
!      '-fstrict-aliasing', which is on by default at '-O2' or above.
  
! 'mode (MODE)'
       This attribute specifies the data type for the
       declaration--whichever type corresponds to the mode MODE.  This in
       effect lets you request an integer or floating-point type according
       to its width.
  
       *Note (gccint)Machine Modes::, for a list of the possible keywords
!      for MODE.  You may also specify a mode of 'byte' or '__byte__' to
!      indicate the mode corresponding to a one-byte integer, 'word' or
!      '__word__' for the mode of a one-word integer, and 'pointer' or
!      '__pointer__' for the mode used to represent pointers.
  
! 'objc_root_class (Objective-C and Objective-C++ only)'
       This attribute marks a class as being a root class, and thus allows
       the compiler to elide any warnings about a missing superclass and
       to make additional checks for mandatory methods as needed.
  
! 'packed'
!      This attribute, attached to a 'struct', 'union', or C++ 'class'
       type definition, specifies that each of its members (other than
       zero-width bit-fields) is placed to minimize the memory required.
!      This is equivalent to specifying the 'packed' attribute on each of
       the members.
  
!      When attached to an 'enum' definition, the 'packed' attribute
       indicates that the smallest integral type should be used.
!      Specifying the '-fshort-enums' flag on the command line is
!      equivalent to specifying the 'packed' attribute on all 'enum'
       definitions.
  
!      In the following example 'struct my_packed_struct''s members are
!      packed closely together, but the internal layout of its 's' member
!      is not packed--to do that, 'struct my_unpacked_struct' needs to be
       packed too.
  
            struct my_unpacked_struct
--- 43276,43318 ----
              exit(0);
            }
  
!      If you replaced â€˜short_aâ€™ with â€˜shortâ€™ in the variable declaration,
       the above program would abort when compiled with
!      â€˜-fstrict-aliasingâ€™, which is on by default at â€˜-O2â€™ or above.
  
! â€˜mode (MODE)â€™
       This attribute specifies the data type for the
       declaration--whichever type corresponds to the mode MODE.  This in
       effect lets you request an integer or floating-point type according
       to its width.
  
       *Note (gccint)Machine Modes::, for a list of the possible keywords
!      for MODE.  You may also specify a mode of â€˜byteâ€™ or â€˜__byte__â€™ to
!      indicate the mode corresponding to a one-byte integer, â€˜wordâ€™ or
!      â€˜__word__â€™ for the mode of a one-word integer, and â€˜pointerâ€™ or
!      â€˜__pointer__â€™ for the mode used to represent pointers.
  
! â€˜objc_root_class (Objective-C and Objective-C++ only)â€™
       This attribute marks a class as being a root class, and thus allows
       the compiler to elide any warnings about a missing superclass and
       to make additional checks for mandatory methods as needed.
  
! â€˜packedâ€™
!      This attribute, attached to a â€˜structâ€™, â€˜unionâ€™, or C++ â€˜classâ€™
       type definition, specifies that each of its members (other than
       zero-width bit-fields) is placed to minimize the memory required.
!      This is equivalent to specifying the â€˜packedâ€™ attribute on each of
       the members.
  
!      When attached to an â€˜enumâ€™ definition, the â€˜packedâ€™ attribute
       indicates that the smallest integral type should be used.
!      Specifying the â€˜-fshort-enumsâ€™ flag on the command line is
!      equivalent to specifying the â€˜packedâ€™ attribute on all â€˜enumâ€™
       definitions.
  
!      In the following example â€˜struct my_packed_structâ€™'s members are
!      packed closely together, but the internal layout of its â€˜sâ€™ member
!      is not packed--to do that, â€˜struct my_unpacked_structâ€™ needs to be
       packed too.
  
            struct my_unpacked_struct
*************** The following type attributes are suppor
*** 43320,43336 ****
                 struct my_unpacked_struct s;
              };
  
!      You may only specify the 'packed' attribute on the definition of an
!      'enum', 'struct', 'union', or 'class', not on a 'typedef' that does
       not also define the enumerated type, structure, union, or class.
  
! 'scalar_storage_order ("ENDIANNESS")'
!      When attached to a 'union' or a 'struct', this attribute sets the
       storage order, aka endianness, of the scalar fields of the type, as
       well as the array fields whose component is scalar.  The supported
!      endiannesses are 'big-endian' and 'little-endian'.  The attribute
!      has no effects on fields which are themselves a 'union', a 'struct'
!      or an array whose component is a 'union' or a 'struct', and it is
       possible for these fields to have a different scalar storage order
       than the enclosing type.
  
--- 43328,43344 ----
                 struct my_unpacked_struct s;
              };
  
!      You may only specify the â€˜packedâ€™ attribute on the definition of an
!      â€˜enumâ€™, â€˜structâ€™, â€˜unionâ€™, or â€˜classâ€™, not on a â€˜typedefâ€™ that does
       not also define the enumerated type, structure, union, or class.
  
! â€˜scalar_storage_order ("ENDIANNESS")â€™
!      When attached to a â€˜unionâ€™ or a â€˜structâ€™, this attribute sets the
       storage order, aka endianness, of the scalar fields of the type, as
       well as the array fields whose component is scalar.  The supported
!      endiannesses are â€˜big-endianâ€™ and â€˜little-endianâ€™.  The attribute
!      has no effects on fields which are themselves a â€˜unionâ€™, a â€˜structâ€™
!      or an array whose component is a â€˜unionâ€™ or a â€˜structâ€™, and it is
       possible for these fields to have a different scalar storage order
       than the enclosing type.
  
*************** The following type attributes are suppor
*** 43347,43360 ****
       scalar storage order with regard to the scalar storage order of the
       target:
  
!         * Taking the address of a scalar field of a 'union' or a
!           'struct' with reverse scalar storage order is not permitted
            and yields an error.
!         * Taking the address of an array field, whose component is
!           scalar, of a 'union' or a 'struct' with reverse scalar storage
            order is permitted but yields a warning, unless
!           '-Wno-scalar-storage-order' is specified.
!         * Taking the address of a 'union' or a 'struct' with reverse
            scalar storage order is permitted.
  
       These restrictions exist because the storage order attribute is
--- 43355,43368 ----
       scalar storage order with regard to the scalar storage order of the
       target:
  
!         â€¢ Taking the address of a scalar field of a â€˜unionâ€™ or a
!           â€˜structâ€™ with reverse scalar storage order is not permitted
            and yields an error.
!         â€¢ Taking the address of an array field, whose component is
!           scalar, of a â€˜unionâ€™ or a â€˜structâ€™ with reverse scalar storage
            order is permitted but yields a warning, unless
!           â€˜-Wno-scalar-storage-orderâ€™ is specified.
!         â€¢ Taking the address of a â€˜unionâ€™ or a â€˜structâ€™ with reverse
            scalar storage order is permitted.
  
       These restrictions exist because the storage order attribute is
*************** The following type attributes are suppor
*** 43368,43380 ****
       can be accessed through distinct types that assign a different
       storage order to it, then the behavior is undefined.
  
! 'strub'
       This attribute defines stack-scrubbing properties of functions and
       variables, so that functions that access sensitive data can have
       their stack frames zeroed-out upon returning or propagating
       exceptions.  This may be enabled explicitly, by selecting certain
!      'strub' modes for specific functions, or implicitly, by means of
!      'strub' variables.
  
       Being a type attribute, it attaches to types, even when specified
       in function and variable declarations.  When applied to function
--- 43376,43388 ----
       can be accessed through distinct types that assign a different
       storage order to it, then the behavior is undefined.
  
! â€˜strubâ€™
       This attribute defines stack-scrubbing properties of functions and
       variables, so that functions that access sensitive data can have
       their stack frames zeroed-out upon returning or propagating
       exceptions.  This may be enabled explicitly, by selecting certain
!      â€˜strubâ€™ modes for specific functions, or implicitly, by means of
!      â€˜strubâ€™ variables.
  
       Being a type attribute, it attaches to types, even when specified
       in function and variable declarations.  When applied to function
*************** The following type attributes are suppor
*** 43394,43401 ****
            /* A pointer to that strub function.  */
            int __attribute__ ((strub ("at-calls"))) (*ptr_to_strub_fn)(void) = foo;
  
!      A function associated with 'at-calls' 'strub' mode
!      ('strub("at-calls")', or just 'strub') undergoes interface changes.
       Its callers are adjusted to match the changes, and to scrub
       (overwrite with zeros) the stack space used by the called function
       after it returns.  The interface change makes the function type
--- 43402,43409 ----
            /* A pointer to that strub function.  */
            int __attribute__ ((strub ("at-calls"))) (*ptr_to_strub_fn)(void) = foo;
  
!      A function associated with â€˜at-callsâ€™ â€˜strubâ€™ mode
!      (â€˜strub("at-calls")â€™, or just â€˜strubâ€™) undergoes interface changes.
       Its callers are adjusted to match the changes, and to scrub
       (overwrite with zeros) the stack space used by the called function
       after it returns.  The interface change makes the function type
*************** The following type attributes are suppor
*** 43403,43418 ****
       _every_ declaration and every type that may be used to call the
       function must be associated with this strub mode.
  
!      A function associated with 'internal' 'strub' mode
!      ('strub("internal")') retains an unmodified, type-compatible
       interface, but it may be turned into a wrapper that calls the
       wrapped body using a custom interface.  The wrapper then scrubs the
       stack space used by the wrapped body.  Though the wrapped body has
       its stack space scrubbed, the wrapper does not, so arguments and
       return values may remain unscrubbed even when such a function is
!      called by another function that enables 'strub'.  This is why, when
!      compiling with '-fstrub=strict', a 'strub' context is not allowed
!      to call 'internal' 'strub' functions.
  
            /* A declaration of an internal-strub function.  */
            extern int __attribute__ ((strub ("internal"))) bar (void);
--- 43411,43426 ----
       _every_ declaration and every type that may be used to call the
       function must be associated with this strub mode.
  
!      A function associated with â€˜internalâ€™ â€˜strubâ€™ mode
!      (â€˜strub("internal")â€™) retains an unmodified, type-compatible
       interface, but it may be turned into a wrapper that calls the
       wrapped body using a custom interface.  The wrapper then scrubs the
       stack space used by the wrapped body.  Though the wrapped body has
       its stack space scrubbed, the wrapper does not, so arguments and
       return values may remain unscrubbed even when such a function is
!      called by another function that enables â€˜strubâ€™.  This is why, when
!      compiling with â€˜-fstrub=strictâ€™, a â€˜strubâ€™ context is not allowed
!      to call â€˜internalâ€™ â€˜strubâ€™ functions.
  
            /* A declaration of an internal-strub function.  */
            extern int __attribute__ ((strub ("internal"))) bar (void);
*************** The following type attributes are suppor
*** 43426,43447 ****
              bar ();
            }
  
!      An automatically-allocated variable associated with the 'strub'
       attribute causes the (immediately) enclosing function to have
!      'strub' enabled.
  
!      A statically-allocated variable associated with the 'strub'
!      attribute causes functions that _read_ it, through its 'strub' data
!      type, to have 'strub' enabled.  Reading data by dereferencing a
!      pointer to a 'strub' data type has the same effect.  Note: The
       attribute does not carry over from a composite type to the types of
       its components, so the intended effect may not be obtained with
       non-scalar types.
  
!      When selecting a 'strub'-enabled mode for a function that is not
!      explicitly associated with one, because of 'strub' variables or
!      data pointers, the function must satisfy 'internal' mode viability
!      requirements (see below), even when 'at-calls' mode is also viable
       and, being more efficient, ends up selected as an optimization.
  
            /* zapme is implicitly strub-enabled because of strub variables.
--- 43434,43455 ----
              bar ();
            }
  
!      An automatically-allocated variable associated with the â€˜strubâ€™
       attribute causes the (immediately) enclosing function to have
!      â€˜strubâ€™ enabled.
  
!      A statically-allocated variable associated with the â€˜strubâ€™
!      attribute causes functions that _read_ it, through its â€˜strubâ€™ data
!      type, to have â€˜strubâ€™ enabled.  Reading data by dereferencing a
!      pointer to a â€˜strubâ€™ data type has the same effect.  Note: The
       attribute does not carry over from a composite type to the types of
       its components, so the intended effect may not be obtained with
       non-scalar types.
  
!      When selecting a â€˜strubâ€™-enabled mode for a function that is not
!      explicitly associated with one, because of â€˜strubâ€™ variables or
!      data pointers, the function must satisfy â€˜internalâ€™ mode viability
!      requirements (see below), even when â€˜at-callsâ€™ mode is also viable
       and, being more efficient, ends up selected as an optimization.
  
            /* zapme is implicitly strub-enabled because of strub variables.
*************** The following type attributes are suppor
*** 43459,43481 ****
              return var;
            }
  
!      A 'strub' context is the body (as opposed to the interface) of a
!      function that has 'strub' enabled, be it explicitly, by 'at-calls'
!      or 'internal' mode, or implicitly, due to 'strub' variables or
       command-line options.
  
!      A function of a type associated with the 'disabled' 'strub' mode
!      ('strub("disabled")' will not have its own stack space scrubbed.
!      Such functions _cannot_ be called from within 'strub' contexts.
  
!      In order to enable a function to be called from within 'strub'
       contexts without having its stack space scrubbed, associate it with
!      the 'callable' 'strub' mode ('strub("callable")').
  
!      When a function is not assigned a 'strub' mode, explicitly or
!      implicitly, the mode defaults to 'callable', except when compiling
!      with '-fstrub=strict', that causes 'strub' mode to default to
!      'disabled'.
  
            extern int __attribute__ ((strub ("callable"))) bac (void);
            extern int __attribute__ ((strub ("disabled"))) bad (void);
--- 43467,43489 ----
              return var;
            }
  
!      A â€˜strubâ€™ context is the body (as opposed to the interface) of a
!      function that has â€˜strubâ€™ enabled, be it explicitly, by â€˜at-callsâ€™
!      or â€˜internalâ€™ mode, or implicitly, due to â€˜strubâ€™ variables or
       command-line options.
  
!      A function of a type associated with the â€˜disabledâ€™ â€˜strubâ€™ mode
!      (â€˜strub("disabled")â€™ will not have its own stack space scrubbed.
!      Such functions _cannot_ be called from within â€˜strubâ€™ contexts.
  
!      In order to enable a function to be called from within â€˜strubâ€™
       contexts without having its stack space scrubbed, associate it with
!      the â€˜callableâ€™ â€˜strubâ€™ mode (â€˜strub("callable")â€™).
  
!      When a function is not assigned a â€˜strubâ€™ mode, explicitly or
!      implicitly, the mode defaults to â€˜callableâ€™, except when compiling
!      with â€˜-fstrub=strictâ€™, that causes â€˜strubâ€™ mode to default to
!      â€˜disabledâ€™.
  
            extern int __attribute__ ((strub ("callable"))) bac (void);
            extern int __attribute__ ((strub ("disabled"))) bad (void);
*************** The following type attributes are suppor
*** 43493,43504 ****
              bah ();
            }
  
!      Function types marked 'callable' and 'disabled' are not mutually
       compatible types, but the underlying interfaces are compatible, so
       it is safe to convert pointers between them, and to use such
       pointers or alternate declarations to call them.  Interfaces are
!      also interchangeable between them and 'internal' (but not
!      'at-calls'!), but adding 'internal' to a pointer type will not
       cause the pointed-to function to perform stack scrubbing.
  
            void __attribute__ ((strub))
--- 43501,43512 ----
              bah ();
            }
  
!      Function types marked â€˜callableâ€™ and â€˜disabledâ€™ are not mutually
       compatible types, but the underlying interfaces are compatible, so
       it is safe to convert pointers between them, and to use such
       pointers or alternate declarations to call them.  Interfaces are
!      also interchangeable between them and â€˜internalâ€™ (but not
!      â€˜at-callsâ€™!), but adding â€˜internalâ€™ to a pointer type will not
       cause the pointed-to function to perform stack scrubbing.
  
            void __attribute__ ((strub))
*************** The following type attributes are suppor
*** 43531,43540 ****
              c_p ();
            }
  
!      'Strub' contexts are never inlined into non-'strub' contexts.  When
!      an 'internal'-strub function is split up, the wrapper can often be
       inlined, but the wrapped body _never_ is.  A function marked as
!      'always_inline', even if explicitly assigned 'internal' strub mode,
       will not undergo wrapping, so its body gets inlined as required.
  
            inline int __attribute__ ((strub ("at-calls")))
--- 43539,43548 ----
              c_p ();
            }
  
!      â€˜Strubâ€™ contexts are never inlined into non-â€˜strubâ€™ contexts.  When
!      an â€˜internalâ€™-strub function is split up, the wrapper can often be
       inlined, but the wrapped body _never_ is.  A function marked as
!      â€˜always_inlineâ€™, even if explicitly assigned â€˜internalâ€™ strub mode,
       will not undergo wrapping, so its body gets inlined as required.
  
            inline int __attribute__ ((strub ("at-calls")))
*************** The following type attributes are suppor
*** 43563,43570 ****
              inl_int_ali ();
            }
  
!      Some '-fstrub=*' command-line options enable 'strub' modes
!      implicitly where viable.  A 'strub' mode is only viable for a
       function if the function is eligible for that mode, and if other
       conditions, detailed below, are satisfied.  If it's not eligible
       for a mode, attempts to explicitly associate it with that mode are
--- 43571,43578 ----
              inl_int_ali ();
            }
  
!      Some â€˜-fstrub=*â€™ command-line options enable â€˜strubâ€™ modes
!      implicitly where viable.  A â€˜strubâ€™ mode is only viable for a
       function if the function is eligible for that mode, and if other
       conditions, detailed below, are satisfied.  If it's not eligible
       for a mode, attempts to explicitly associate it with that mode are
*************** The following type attributes are suppor
*** 43573,43581 ****
       assignment through command-line options may involve additional
       viability requirements.
  
!      A function is ineligible for 'at-calls' 'strub' mode if a different
!      'strub' mode is explicitly requested, if attribute 'noipa' is
!      present, or if it calls '__builtin_apply_args'.  'At-calls' 'strub'
       mode, if not requested through the function type, is only viable
       for an eligible function if the function is not visible to other
       translation units, if it doesn't have its address taken, and if it
--- 43581,43589 ----
       assignment through command-line options may involve additional
       viability requirements.
  
!      A function is ineligible for â€˜at-callsâ€™ â€˜strubâ€™ mode if a different
!      â€˜strubâ€™ mode is explicitly requested, if attribute â€˜noipaâ€™ is
!      present, or if it calls â€˜__builtin_apply_argsâ€™.  â€˜At-callsâ€™ â€˜strubâ€™
       mode, if not requested through the function type, is only viable
       for an eligible function if the function is not visible to other
       translation units, if it doesn't have its address taken, and if it
*************** The following type attributes are suppor
*** 43591,43605 ****
               It is eligible and viable for internal strub mode.  */
            void setp (void) { static void (*p)(void); = setp; }
  
!      A function is ineligible for 'internal' 'strub' mode if a different
!      'strub' mode is explicitly requested, or if attribute 'noipa' is
!      present.  For an 'always_inline' function, meeting these
       requirements is enough to make it eligible.  Any function that has
!      attribute 'noclone', that uses such extensions as non-local labels,
       computed gotos, alternate variable argument passing interfaces,
!      '__builtin_next_arg', or '__builtin_return_address', or that takes
       too many (about 64Ki) arguments is ineligible, unless it is
!      'always_inline'.  For 'internal' 'strub' mode, all eligible
       functions are viable.
  
            /* flop is not eligible, thus not viable, for at-calls strub mode.
--- 43599,43613 ----
               It is eligible and viable for internal strub mode.  */
            void setp (void) { static void (*p)(void); = setp; }
  
!      A function is ineligible for â€˜internalâ€™ â€˜strubâ€™ mode if a different
!      â€˜strubâ€™ mode is explicitly requested, or if attribute â€˜noipaâ€™ is
!      present.  For an â€˜always_inlineâ€™ function, meeting these
       requirements is enough to make it eligible.  Any function that has
!      attribute â€˜nocloneâ€™, that uses such extensions as non-local labels,
       computed gotos, alternate variable argument passing interfaces,
!      â€˜__builtin_next_argâ€™, or â€˜__builtin_return_addressâ€™, or that takes
       too many (about 64Ki) arguments is ineligible, unless it is
!      â€˜always_inlineâ€™.  For â€˜internalâ€™ â€˜strubâ€™ mode, all eligible
       functions are viable.
  
            /* flop is not eligible, thus not viable, for at-calls strub mode.
*************** The following type attributes are suppor
*** 43612,43620 ****
               an obstacle, so it is also eligible and viable for internal strub mode.  */
            inline __attribute__ ((noclone, always_inline)) void flip (void) {}
  
! 'transparent_union'
  
!      This attribute, attached to a 'union' type definition, indicates
       that any function parameter having that union type causes calls to
       that function to be treated in a special way.
  
--- 43620,43628 ----
               an obstacle, so it is also eligible and viable for internal strub mode.  */
            inline __attribute__ ((noclone, always_inline)) void flip (void) {}
  
! â€˜transparent_unionâ€™
  
!      This attribute, attached to a â€˜unionâ€™ type definition, indicates
       that any function parameter having that union type causes calls to
       that function to be treated in a special way.
  
*************** The following type attributes are suppor
*** 43624,43630 ****
       null pointer constant or a void pointer expression; and if the
       union contains a void pointer type, the corresponding argument can
       be any pointer expression.  If the union member type is a pointer,
!      qualifiers like 'const' on the referenced type must be respected,
       just as with normal pointer conversions.
  
       Second, the argument is passed to the function using the calling
--- 43632,43638 ----
       null pointer constant or a void pointer expression; and if the
       union contains a void pointer type, the corresponding argument can
       be any pointer expression.  If the union member type is a pointer,
!      qualifiers like â€˜constâ€™ on the referenced type must be respected,
       just as with normal pointer conversions.
  
       Second, the argument is passed to the function using the calling
*************** The following type attributes are suppor
*** 43635,43646 ****
  
       Transparent unions are designed for library functions that have
       multiple interfaces for compatibility reasons.  For example,
!      suppose the 'wait' function must accept either a value of type 'int
!      *' to comply with POSIX, or a value of type 'union wait *' to
!      comply with the 4.1BSD interface.  If 'wait''s parameter were 'void
!      *', 'wait' would accept both kinds of arguments, but it would also
       accept any other pointer type and this would make argument type
!      checking less useful.  Instead, '<sys/wait.h>' might define the
       interface as follows:
  
            typedef union __attribute__ ((__transparent_union__))
--- 43643,43654 ----
  
       Transparent unions are designed for library functions that have
       multiple interfaces for compatibility reasons.  For example,
!      suppose the â€˜waitâ€™ function must accept either a value of type â€˜int
!      *â€™ to comply with POSIX, or a value of type â€˜union wait *â€™ to
!      comply with the 4.1BSD interface.  If â€˜waitâ€™'s parameter were â€˜void
!      *â€™, â€˜waitâ€™ would accept both kinds of arguments, but it would also
       accept any other pointer type and this would make argument type
!      checking less useful.  Instead, â€˜<sys/wait.h>â€™ might define the
       interface as follows:
  
            typedef union __attribute__ ((__transparent_union__))
*************** The following type attributes are suppor
*** 43651,43683 ****
  
            pid_t wait (wait_status_ptr_t);
  
!      This interface allows either 'int *' or 'union wait *' arguments to
!      be passed, using the 'int *' calling convention.  The program can
!      call 'wait' with arguments of either type:
  
            int w1 () { int w; return wait (&w); }
            int w2 () { union wait w; return wait (&w); }
  
!      With this interface, 'wait''s implementation might look like this:
  
            pid_t wait (wait_status_ptr_t p)
            {
              return waitpid (-1, p.__ip, 0);
            }
  
! 'unavailable'
! 'unavailable (MSG)'
!      The 'unavailable' attribute behaves in the same manner as the
!      'deprecated' one, but emits an error rather than a warning.  It is
!      used to indicate that a (perhaps previously 'deprecated') type is
       no longer usable.
  
!      The 'unavailable' attribute can also be used for functions and
       variables (*note Function Attributes::, *note Variable
       Attributes::.)
  
! 'unused'
!      When attached to a type (including a 'union' or a 'struct'), this
       attribute means that variables of that type are meant to appear
       possibly unused.  GCC does not produce a warning for any variables
       of that type, even if the variable appears to do nothing.  This is
--- 43659,43691 ----
  
            pid_t wait (wait_status_ptr_t);
  
!      This interface allows either â€˜int *â€™ or â€˜union wait *â€™ arguments to
!      be passed, using the â€˜int *â€™ calling convention.  The program can
!      call â€˜waitâ€™ with arguments of either type:
  
            int w1 () { int w; return wait (&w); }
            int w2 () { union wait w; return wait (&w); }
  
!      With this interface, â€˜waitâ€™'s implementation might look like this:
  
            pid_t wait (wait_status_ptr_t p)
            {
              return waitpid (-1, p.__ip, 0);
            }
  
! â€˜unavailableâ€™
! â€˜unavailable (MSG)â€™
!      The â€˜unavailableâ€™ attribute behaves in the same manner as the
!      â€˜deprecatedâ€™ one, but emits an error rather than a warning.  It is
!      used to indicate that a (perhaps previously â€˜deprecatedâ€™) type is
       no longer usable.
  
!      The â€˜unavailableâ€™ attribute can also be used for functions and
       variables (*note Function Attributes::, *note Variable
       Attributes::.)
  
! â€˜unusedâ€™
!      When attached to a type (including a â€˜unionâ€™ or a â€˜structâ€™), this
       attribute means that variables of that type are meant to appear
       possibly unused.  GCC does not produce a warning for any variables
       of that type, even if the variable appears to do nothing.  This is
*************** The following type attributes are suppor
*** 43685,43693 ****
       defined and then not referenced, but contain constructors and
       destructors that have nontrivial bookkeeping functions.
  
! 'vector_size (BYTES)'
       This attribute specifies the vector size for the type, measured in
!      bytes.  The type to which it applies is known as the "base type".
       The BYTES argument must be a positive power-of-two multiple of the
       base type size.  For example, the following declarations:
  
--- 43693,43701 ----
       defined and then not referenced, but contain constructors and
       destructors that have nontrivial bookkeeping functions.
  
! â€˜vector_size (BYTES)â€™
       This attribute specifies the vector size for the type, measured in
!      bytes.  The type to which it applies is known as the â€œbase typeâ€�.
       The BYTES argument must be a positive power-of-two multiple of the
       base type size.  For example, the following declarations:
  
*************** The following type attributes are suppor
*** 43695,43705 ****
            typedef __attribute__ ((vector_size (32))) int* int_vec32_ptr_t;
            typedef __attribute__ ((vector_size (32))) int int_vec32_arr3_t[3];
  
!      define 'int_vec32_t' to be a 32-byte vector type composed of 'int'
!      sized units.  With 'int' having a size of 4 bytes, the type defines
       a vector of eight units, four bytes each.  The mode of variables of
!      type 'int_vec32_t' is 'V8SI'.  'int_vec32_ptr_t' is then defined to
!      be a pointer to such a vector type, and 'int_vec32_arr3_t' to be an
       array of three such vectors.  *Note Vector Extensions::, for
       details of manipulating objects of vector types.
  
--- 43703,43713 ----
            typedef __attribute__ ((vector_size (32))) int* int_vec32_ptr_t;
            typedef __attribute__ ((vector_size (32))) int int_vec32_arr3_t[3];
  
!      define â€˜int_vec32_tâ€™ to be a 32-byte vector type composed of â€˜intâ€™
!      sized units.  With â€˜intâ€™ having a size of 4 bytes, the type defines
       a vector of eight units, four bytes each.  The mode of variables of
!      type â€˜int_vec32_tâ€™ is â€˜V8SIâ€™.  â€˜int_vec32_ptr_tâ€™ is then defined to
!      be a pointer to such a vector type, and â€˜int_vec32_arr3_tâ€™ to be an
       array of three such vectors.  *Note Vector Extensions::, for
       details of manipulating objects of vector types.
  
*************** The following type attributes are suppor
*** 43709,43718 ****
  
       For example, the following:
            __attribute__ ((vector_size (16))) float get_flt_vec16 (void);
!      declares 'get_flt_vec16' to be a function returning a 16-byte
!      vector with the base type 'float'.
  
! 'visibility'
       In C++, attribute visibility (*note Function Attributes::) can also
       be applied to class, struct, union and enum types.  Unlike other
       type attributes, the attribute must appear between the initial
--- 43717,43726 ----
  
       For example, the following:
            __attribute__ ((vector_size (16))) float get_flt_vec16 (void);
!      declares â€˜get_flt_vec16â€™ to be a function returning a 16-byte
!      vector with the base type â€˜floatâ€™.
  
! â€˜visibilityâ€™
       In C++, attribute visibility (*note Function Attributes::) can also
       be applied to class, struct, union and enum types.  Unlike other
       type attributes, the attribute must appear between the initial
*************** The following type attributes are suppor
*** 43726,43732 ****
       visibility.  Otherwise the two shared objects are unable to use the
       same typeinfo node and exception handling will break.
  
! 'warn_if_not_aligned (ALIGNMENT)'
       This attribute specifies a threshold for the structure field,
       measured in bytes.  If the structure field is aligned below the
       threshold, a warning will be issued.  For example, the declaration:
--- 43734,43740 ----
       visibility.  Otherwise the two shared objects are unable to use the
       same typeinfo node and exception handling will break.
  
! â€˜warn_if_not_aligned (ALIGNMENT)â€™
       This attribute specifies a threshold for the structure field,
       measured in bytes.  If the structure field is aligned below the
       threshold, a warning will be issued.  For example, the declaration:
*************** The following type attributes are suppor
*** 43741,43751 ****
              __u64 x;
            };
  
!      causes the compiler to issue an warning on 'struct foo', like
!      'warning: alignment 4 of 'struct foo' is less than 8'.  It is used
!      to define 'struct foo' in such a way that 'struct foo' has the same
!      layout and the structure field 'x' has the same alignment when
!      '__u64' is aligned at either 4 or 8 bytes.  Align 'struct foo' to 8
       bytes:
  
            struct __attribute__ ((aligned (8))) foo
--- 43749,43759 ----
              __u64 x;
            };
  
!      causes the compiler to issue an warning on â€˜struct fooâ€™, like
!      â€˜warning: alignment 4 of 'struct foo' is less than 8â€™.  It is used
!      to define â€˜struct fooâ€™ in such a way that â€˜struct fooâ€™ has the same
!      layout and the structure field â€˜xâ€™ has the same alignment when
!      â€˜__u64â€™ is aligned at either 4 or 8 bytes.  Align â€˜struct fooâ€™ to 8
       bytes:
  
            struct __attribute__ ((aligned (8))) foo
*************** The following type attributes are suppor
*** 43756,43762 ****
            };
  
       silences the warning.  The compiler also issues a warning, like
!      'warning: 'x' offset 12 in 'struct foo' isn't aligned to 8', when
       the structure field has the misaligned offset:
  
            struct __attribute__ ((aligned (8))) foo
--- 43764,43770 ----
            };
  
       silences the warning.  The compiler also issues a warning, like
!      â€˜warning: 'x' offset 12 in 'struct foo' isn't aligned to 8â€™, when
       the structure field has the misaligned offset:
  
            struct __attribute__ ((aligned (8))) foo
*************** The following type attributes are suppor
*** 43767,43777 ****
              __u64 x;
            };
  
!      This warning can be disabled by '-Wno-if-not-aligned'.
  
   To specify multiple attributes, separate them by commas within the
! double parentheses: for example, '__attribute__ ((aligned (16),
! packed))'.
  
  
  File: gcc.info,  Node: ARC Type Attributes,  Next: ARM Type Attributes,  Prev: Common Type Attributes,  Up: Type Attributes
--- 43775,43785 ----
              __u64 x;
            };
  
!      This warning can be disabled by â€˜-Wno-if-not-alignedâ€™.
  
   To specify multiple attributes, separate them by commas within the
! double parentheses: for example, â€˜__attribute__ ((aligned (16),
! packed))â€™.
  
  
  File: gcc.info,  Node: ARC Type Attributes,  Next: ARM Type Attributes,  Prev: Common Type Attributes,  Up: Type Attributes
*************** File: gcc.info,  Node: ARC Type Attribut
*** 43779,43789 ****
  6.4.3.2 ARC Type Attributes
  ...........................
  
! Declaring objects with 'uncached' allows you to exclude data-cache
  participation in load and store operations on those objects without
! involving the additional semantic implications of 'volatile'.  The '.di'
  instruction suffix is used for all loads and stores of data declared
! 'uncached'.
  
  
  File: gcc.info,  Node: ARM Type Attributes,  Next: BPF Type Attributes,  Prev: ARC Type Attributes,  Up: Type Attributes
--- 43787,43797 ----
  6.4.3.2 ARC Type Attributes
  ...........................
  
! Declaring objects with â€˜uncachedâ€™ allows you to exclude data-cache
  participation in load and store operations on those objects without
! involving the additional semantic implications of â€˜volatileâ€™.  The â€˜.diâ€™
  instruction suffix is used for all loads and stores of data declared
! â€˜uncachedâ€™.
  
  
  File: gcc.info,  Node: ARM Type Attributes,  Next: BPF Type Attributes,  Prev: ARC Type Attributes,  Up: Type Attributes
*************** File: gcc.info,  Node: ARM Type Attribut
*** 43791,43798 ****
  6.4.3.3 ARM Type Attributes
  ...........................
  
! On those ARM targets that support 'dllimport' (such as Symbian OS), you
! can use the 'notshared' attribute to indicate that the virtual table and
  other similar data for a class should not be exported from a DLL.  For
  example:
  
--- 43799,43806 ----
  6.4.3.3 ARM Type Attributes
  ...........................
  
! On those ARM targets that support â€˜dllimportâ€™ (such as Symbian OS), you
! can use the â€˜notsharedâ€™ attribute to indicate that the virtual table and
  other similar data for a class should not be exported from a DLL.  For
  example:
  
*************** example:
*** 43805,43813 ****
       __declspec(dllexport)
       C::C() {}
  
! In this code, 'C::C' is exported from the current DLL, but the virtual
! table for 'C' is not exported.  (You can use '__attribute__' instead of
! '__declspec' if you prefer, but most Symbian OS code uses '__declspec'.)
  
  
  File: gcc.info,  Node: BPF Type Attributes,  Next: PowerPC Type Attributes,  Prev: ARM Type Attributes,  Up: Type Attributes
--- 43813,43821 ----
       __declspec(dllexport)
       C::C() {}
  
! In this code, â€˜C::Câ€™ is exported from the current DLL, but the virtual
! table for â€˜Câ€™ is not exported.  (You can use â€˜__attribute__â€™ instead of
! â€˜__declspecâ€™ if you prefer, but most Symbian OS code uses â€˜__declspecâ€™.)
  
  
  File: gcc.info,  Node: BPF Type Attributes,  Next: PowerPC Type Attributes,  Prev: ARM Type Attributes,  Up: Type Attributes
*************** File: gcc.info,  Node: BPF Type Attribut
*** 43816,43825 ****
  ...........................
  
  BPF Compile Once - Run Everywhere (CO-RE) support.  When attached to a
! 'struct' or 'union' type definition, indicates that CO-RE relocation
  information should be generated for any access to a variable of that
  type.  The behavior is equivalent to the programmer manually wrapping
! every such access with '__builtin_preserve_access_index'.
  
  
  File: gcc.info,  Node: PowerPC Type Attributes,  Next: x86 Type Attributes,  Prev: BPF Type Attributes,  Up: Type Attributes
--- 43824,43833 ----
  ...........................
  
  BPF Compile Once - Run Everywhere (CO-RE) support.  When attached to a
! â€˜structâ€™ or â€˜unionâ€™ type definition, indicates that CO-RE relocation
  information should be generated for any access to a variable of that
  type.  The behavior is equivalent to the programmer manually wrapping
! every such access with â€˜__builtin_preserve_access_indexâ€™.
  
  
  File: gcc.info,  Node: PowerPC Type Attributes,  Next: x86 Type Attributes,  Prev: BPF Type Attributes,  Up: Type Attributes
*************** File: gcc.info,  Node: PowerPC Type Attr
*** 43828,43850 ****
  ...............................
  
  Three attributes currently are defined for PowerPC configurations:
! 'altivec', 'ms_struct' and 'gcc_struct'.
  
!  For full documentation of the 'ms_struct' and 'gcc_struct' attributes
  please see the documentation in *note x86 Type Attributes::.
  
!  The 'altivec' attribute allows one to declare AltiVec vector data types
  supported by the AltiVec Programming Interface Manual.  The attribute
! requires an argument to specify one of three vector types: 'vector__',
! 'pixel__' (always followed by unsigned short), and 'bool__' (always
  followed by unsigned).
  
       __attribute__((altivec(vector__)))
       __attribute__((altivec(pixel__))) unsigned short
       __attribute__((altivec(bool__))) unsigned
  
!  These attributes mainly are intended to support the '__vector',
! '__pixel', and '__bool' AltiVec keywords.
  
  
  File: gcc.info,  Node: x86 Type Attributes,  Prev: PowerPC Type Attributes,  Up: Type Attributes
--- 43836,43858 ----
  ...............................
  
  Three attributes currently are defined for PowerPC configurations:
! â€˜altivecâ€™, â€˜ms_structâ€™ and â€˜gcc_structâ€™.
  
!  For full documentation of the â€˜ms_structâ€™ and â€˜gcc_structâ€™ attributes
  please see the documentation in *note x86 Type Attributes::.
  
!  The â€˜altivecâ€™ attribute allows one to declare AltiVec vector data types
  supported by the AltiVec Programming Interface Manual.  The attribute
! requires an argument to specify one of three vector types: â€˜vector__â€™,
! â€˜pixel__â€™ (always followed by unsigned short), and â€˜bool__â€™ (always
  followed by unsigned).
  
       __attribute__((altivec(vector__)))
       __attribute__((altivec(pixel__))) unsigned short
       __attribute__((altivec(bool__))) unsigned
  
!  These attributes mainly are intended to support the â€˜__vectorâ€™,
! â€˜__pixelâ€™, and â€˜__boolâ€™ AltiVec keywords.
  
  
  File: gcc.info,  Node: x86 Type Attributes,  Prev: PowerPC Type Attributes,  Up: Type Attributes
*************** File: gcc.info,  Node: x86 Type Attribut
*** 43852,43872 ****
  6.4.3.6 x86 Type Attributes
  ...........................
  
! Two attributes are currently defined for x86 configurations: 'ms_struct'
! and 'gcc_struct'.
  
! 'ms_struct'
! 'gcc_struct'
  
!      If 'packed' is used on a structure, or if bit-fields are used it
       may be that the Microsoft ABI packs them differently than GCC
       normally packs them.  Particularly when moving packed data between
       functions compiled with GCC and the native Microsoft compiler
       (either via function call or as data in a file), it may be
       necessary to access either format.
  
!      The 'ms_struct' and 'gcc_struct' attributes correspond to the
!      '-mms-bitfields' and '-mno-ms-bitfields' command-line options,
       respectively; see *note x86 Options::, for details of how structure
       layout is affected.  *Note x86 Variable Attributes::, for
       information about the corresponding attributes on variables.
--- 43860,43880 ----
  6.4.3.6 x86 Type Attributes
  ...........................
  
! Two attributes are currently defined for x86 configurations: â€˜ms_structâ€™
! and â€˜gcc_structâ€™.
  
! â€˜ms_structâ€™
! â€˜gcc_structâ€™
  
!      If â€˜packedâ€™ is used on a structure, or if bit-fields are used it
       may be that the Microsoft ABI packs them differently than GCC
       normally packs them.  Particularly when moving packed data between
       functions compiled with GCC and the native Microsoft compiler
       (either via function call or as data in a file), it may be
       necessary to access either format.
  
!      The â€˜ms_structâ€™ and â€˜gcc_structâ€™ attributes correspond to the
!      â€˜-mms-bitfieldsâ€™ and â€˜-mno-ms-bitfieldsâ€™ command-line options,
       respectively; see *note x86 Options::, for details of how structure
       layout is affected.  *Note x86 Variable Attributes::, for
       information about the corresponding attributes on variables.
*************** Attributes::), statements (*note Stateme
*** 43885,43893 ****
  (*note Type Attributes::).  A label attribute followed by a declaration
  appertains to the label and not the declaration.
  
!  This example uses the 'cold' label attribute to indicate the
! 'ErrorHandling' branch is unlikely to be taken and that the
! 'ErrorHandling' label is unused:
  
  
          asm goto ("some asm" : : : : NoError);
--- 43893,43901 ----
  (*note Type Attributes::).  A label attribute followed by a declaration
  appertains to the label and not the declaration.
  
!  This example uses the â€˜coldâ€™ label attribute to indicate the
! â€˜ErrorHandlingâ€™ branch is unlikely to be taken and that the
! â€˜ErrorHandlingâ€™ label is unused:
  
  
          asm goto ("some asm" : : : : NoError);
*************** appertains to the label and not the decl
*** 43902,43926 ****
          printf("no error\n");
          return 1;
  
! 'unused'
       This feature is intended for program-generated code that may
!      contain unused labels, but which is compiled with '-Wall'.  It is
       not normally appropriate to use in it human-written code, though it
       could be useful in cases where the code that jumps to the label is
!      contained within an '#ifdef' conditional.
  
! 'hot'
!      The 'hot' attribute on a label is used to inform the compiler that
       the path following the label is more likely than paths that are not
       so annotated.  This attribute is used in cases where
!      '__builtin_expect' cannot be used, for instance with computed goto
!      or 'asm goto'.
  
! 'cold'
!      The 'cold' attribute on labels is used to inform the compiler that
       the path following the label is unlikely to be executed.  This
!      attribute is used in cases where '__builtin_expect' cannot be used,
!      for instance with computed goto or 'asm goto'.
  
  
  File: gcc.info,  Node: Enumerator Attributes,  Next: Statement Attributes,  Prev: Label Attributes,  Up: Attributes
--- 43910,43934 ----
          printf("no error\n");
          return 1;
  
! â€˜unusedâ€™
       This feature is intended for program-generated code that may
!      contain unused labels, but which is compiled with â€˜-Wallâ€™.  It is
       not normally appropriate to use in it human-written code, though it
       could be useful in cases where the code that jumps to the label is
!      contained within an â€˜#ifdefâ€™ conditional.
  
! â€˜hotâ€™
!      The â€˜hotâ€™ attribute on a label is used to inform the compiler that
       the path following the label is more likely than paths that are not
       so annotated.  This attribute is used in cases where
!      â€˜__builtin_expectâ€™ cannot be used, for instance with computed goto
!      or â€˜asm gotoâ€™.
  
! â€˜coldâ€™
!      The â€˜coldâ€™ attribute on labels is used to inform the compiler that
       the path following the label is unlikely to be executed.  This
!      attribute is used in cases where â€˜__builtin_expectâ€™ cannot be used,
!      for instance with computed goto or â€˜asm gotoâ€™.
  
  
  File: gcc.info,  Node: Enumerator Attributes,  Next: Statement Attributes,  Prev: Label Attributes,  Up: Attributes
*************** variables (*note Variable Attributes::),
*** 43935,43942 ****
  Attributes::), statements (*note Statement Attributes::), and for types
  (*note Type Attributes::).
  
!  This example uses the 'deprecated' enumerator attribute to indicate the
! 'oldval' enumerator is deprecated:
  
       enum E {
         oldval __attribute__((deprecated)),
--- 43943,43950 ----
  Attributes::), statements (*note Statement Attributes::), and for types
  (*note Type Attributes::).
  
!  This example uses the â€˜deprecatedâ€™ enumerator attribute to indicate the
! â€˜oldvalâ€™ enumerator is deprecated:
  
       enum E {
         oldval __attribute__((deprecated)),
*************** Attributes::), statements (*note Stateme
*** 43949,43956 ****
         return oldval;
       }
  
! 'deprecated'
!      The 'deprecated' attribute results in a warning if the enumerator
       is used anywhere in the source file.  This is useful when
       identifying enumerators that are expected to be removed in a future
       version of a program.  The warning also includes the location of
--- 43957,43964 ----
         return oldval;
       }
  
! â€˜deprecatedâ€™
!      The â€˜deprecatedâ€™ attribute results in a warning if the enumerator
       is used anywhere in the source file.  This is useful when
       identifying enumerators that are expected to be removed in a future
       version of a program.  The warning also includes the location of
*************** Attributes::), statements (*note Stateme
*** 43959,43968 ****
       deprecated, or what they should do instead.  Note that the warnings
       only occurs for uses.
  
! 'unavailable'
!      The 'unavailable' attribute results in an error if the enumerator
       is used anywhere in the source file.  In other respects it behaves
!      in the same manner as the 'deprecated' attribute.
  
  
  File: gcc.info,  Node: Statement Attributes,  Next: Attribute Syntax,  Prev: Enumerator Attributes,  Up: Attributes
--- 43967,43976 ----
       deprecated, or what they should do instead.  Note that the warnings
       only occurs for uses.
  
! â€˜unavailableâ€™
!      The â€˜unavailableâ€™ attribute results in an error if the enumerator
       is used anywhere in the source file.  In other respects it behaves
!      in the same manner as the â€˜deprecatedâ€™ attribute.
  
  
  File: gcc.info,  Node: Statement Attributes,  Next: Attribute Syntax,  Prev: Enumerator Attributes,  Up: Attributes
*************** variables (*note Variable Attributes::),
*** 43977,43996 ****
  Attributes::), enumerators (*note Enumerator Attributes::), and for
  types (*note Type Attributes::).
  
! 'fallthrough'
!      The 'fallthrough' attribute with a null statement serves as a
       fallthrough statement.  It hints to the compiler that a statement
       that falls through to another case label, or user-defined label in
       a switch statement is intentional and thus the
!      '-Wimplicit-fallthrough' warning must not trigger.  The fallthrough
       attribute may appear at most once in each attribute list, and may
       not be mixed with other attributes.  It can only be used in a
       switch statement (the compiler will issue an error otherwise),
       after a preceding statement and before a logically succeeding case
       label, or user-defined label.
  
!      This example uses the 'fallthrough' statement attribute to indicate
!      that the '-Wimplicit-fallthrough' warning should not be emitted:
  
            switch (cond)
              {
--- 43985,44004 ----
  Attributes::), enumerators (*note Enumerator Attributes::), and for
  types (*note Type Attributes::).
  
! â€˜fallthroughâ€™
!      The â€˜fallthroughâ€™ attribute with a null statement serves as a
       fallthrough statement.  It hints to the compiler that a statement
       that falls through to another case label, or user-defined label in
       a switch statement is intentional and thus the
!      â€˜-Wimplicit-fallthroughâ€™ warning must not trigger.  The fallthrough
       attribute may appear at most once in each attribute list, and may
       not be mixed with other attributes.  It can only be used in a
       switch statement (the compiler will issue an error otherwise),
       after a preceding statement and before a logically succeeding case
       label, or user-defined label.
  
!      This example uses the â€˜fallthroughâ€™ statement attribute to indicate
!      that the â€˜-Wimplicit-fallthroughâ€™ warning should not be emitted:
  
            switch (cond)
              {
*************** types (*note Type Attributes::).
*** 44001,44013 ****
                ...
              }
  
! 'assume'
!      The 'assume' attribute with a null statement serves as portable
       assumption.  It should have a single argument, a conditional
       expression, which is not evaluated.  If the argument would evaluate
       to true at the point where it appears, it has no effect, otherwise
       there is undefined behavior.  This is a GNU variant of the ISO
!      C++23 standard 'assume' attribute, but it can be used in any
       version of both C and C++.
  
            int
--- 44009,44021 ----
                ...
              }
  
! â€˜assumeâ€™
!      The â€˜assumeâ€™ attribute with a null statement serves as portable
       assumption.  It should have a single argument, a conditional
       expression, which is not evaluated.  If the argument would evaluate
       to true at the point where it appears, it has no effect, otherwise
       there is undefined behavior.  This is a GNU variant of the ISO
!      C++23 standard â€˜assumeâ€™ attribute, but it can be used in any
       version of both C and C++.
  
            int
*************** types (*note Type Attributes::).
*** 44018,44030 ****
              return x + y;
            }
  
!      'y' is not actually incremented and the compiler can but does not
!      have to optimize it to just 'return 42 + 42;'.
  
! 'musttail'
  
!      The 'gnu::musttail' or 'clang::musttail' standard attribute or
!      'musttail' GNU attribute can be applied to a 'return' statement
       with a return-value expression that is a function call.  It asserts
       that the call must be a tail call that does not allocate extra
       stack space, so it is safe to use tail recursion to implement
--- 44026,44038 ----
              return x + y;
            }
  
!      â€˜yâ€™ is not actually incremented and the compiler can but does not
!      have to optimize it to just â€˜return 42 + 42;â€™.
  
! â€˜musttailâ€™
  
!      The â€˜gnu::musttailâ€™ or â€˜clang::musttailâ€™ standard attribute or
!      â€˜musttailâ€™ GNU attribute can be applied to a â€˜returnâ€™ statement
       with a return-value expression that is a function call.  It asserts
       that the call must be a tail call that does not allocate extra
       stack space, so it is safe to use tail recursion to implement
*************** types (*note Type Attributes::).
*** 44034,44047 ****
  
            __attribute__((musttail)) return bar();
  
!      If the compiler cannot generate a 'musttail' tail call it reports
       an error.  On some targets, tail calls may not be supported at all.
!      The 'musttail' attribute asserts that the lifetime of automatic
       variables, function parameters and temporaries (unless they have
       non-trivial destruction) can end before the actual call
       instruction, and that any access to those from inside of the called
!      function results is considered undefined behavior.  Enabling '-O1'
!      or '-O2' can improve the success of tail calls.
  
            int foo (int *);
            void bar (int *);
--- 44042,44055 ----
  
            __attribute__((musttail)) return bar();
  
!      If the compiler cannot generate a â€˜musttailâ€™ tail call it reports
       an error.  On some targets, tail calls may not be supported at all.
!      The â€˜musttailâ€™ attribute asserts that the lifetime of automatic
       variables, function parameters and temporaries (unless they have
       non-trivial destruction) can end before the actual call
       instruction, and that any access to those from inside of the called
!      function results is considered undefined behavior.  Enabling â€˜-O1â€™
!      or â€˜-O2â€™ can improve the success of tail calls.
  
            int foo (int *);
            void bar (int *);
*************** types (*note Type Attributes::).
*** 44080,44087 ****
                }
            }
  
!      To avoid the '-Wmaybe-musttail-local-addr' warning in the above '*x
!      == 2' case and similar code, consider defining the maybe-escaped
       variables in a separate scope that ends before the return
       statement, if that is possible, to make it clear that the variable
       is not live during the call.  So:
--- 44088,44095 ----
                }
            }
  
!      To avoid the â€˜-Wmaybe-musttail-local-addrâ€™ warning in the above â€˜*x
!      == 2â€™ case and similar code, consider defining the maybe-escaped
       variables in a separate scope that ends before the return
       statement, if that is possible, to make it clear that the variable
       is not live during the call.  So:
*************** File: gcc.info,  Node: Attribute Syntax,
*** 44111,44138 ****
  
  GCC provides two different ways to specify attributes: the standard C
  and C++ syntax using double square brackets, and the older GNU extension
! syntax using the '__attribute__' keyword, which predates the adoption of
  the standard syntax and is still widely used in older code.
  
!  The standard '[[]]' attribute syntax is recognized by GCC's default
  language dialect for both C and C++.  More specifically, this syntax was
  first introduced in the C++11 language standard (*note Standards::), and
! is supported by GCC in C++ code with '-std=c++11' or '-std=gnu++11' or
  later.  It is also part of the C23 language standard and is supported
! when compiling C code with '-std=c23' or '-std=gnu17' or later.
  
   When using GNU-specific attributes in the standard syntax, you must
! prefix their names with 'gnu::', such as 'gnu::section'.  Refer to the
! relevant language standards for exact details on the placement of '[[]]'
  attributes within your code, as they differ in some details from the
  rules for the GNU attribute syntax.
  
!  With the '-fopenmp' option, GCC additionally recognizes OpenMP
! directives, with names prefixed with 'omp::', using the standard '[[]]'
  syntax.  *Note OpenMP::.
  
   The remainder of this section describes the details of the GNU
! extension '__attribute__' syntax, and the constructs to which attribute
  specifiers bind, for the C language.  Some details may vary for C++ and
  Objective-C.  Because of limitations in the grammar for attributes, some
  forms described here may not be successfully parsed in all cases.
--- 44119,44146 ----
  
  GCC provides two different ways to specify attributes: the standard C
  and C++ syntax using double square brackets, and the older GNU extension
! syntax using the â€˜__attribute__â€™ keyword, which predates the adoption of
  the standard syntax and is still widely used in older code.
  
!  The standard â€˜[[]]â€™ attribute syntax is recognized by GCC's default
  language dialect for both C and C++.  More specifically, this syntax was
  first introduced in the C++11 language standard (*note Standards::), and
! is supported by GCC in C++ code with â€˜-std=c++11â€™ or â€˜-std=gnu++11â€™ or
  later.  It is also part of the C23 language standard and is supported
! when compiling C code with â€˜-std=c23â€™ or â€˜-std=gnu17â€™ or later.
  
   When using GNU-specific attributes in the standard syntax, you must
! prefix their names with â€˜gnu::â€™, such as â€˜gnu::sectionâ€™.  Refer to the
! relevant language standards for exact details on the placement of â€˜[[]]â€™
  attributes within your code, as they differ in some details from the
  rules for the GNU attribute syntax.
  
!  With the â€˜-fopenmpâ€™ option, GCC additionally recognizes OpenMP
! directives, with names prefixed with â€˜omp::â€™, using the standard â€˜[[]]â€™
  syntax.  *Note OpenMP::.
  
   The remainder of this section describes the details of the GNU
! extension â€˜__attribute__â€™ syntax, and the constructs to which attribute
  specifiers bind, for the C language.  Some details may vary for C++ and
  Objective-C.  Because of limitations in the grammar for attributes, some
  forms described here may not be successfully parsed in all cases.
*************** forms described here may not be successf
*** 44140,44146 ****
   There are some problems with the semantics of attributes in C++.  For
  example, there are no manglings for attributes, although they may affect
  code generation, so problems may arise when attributed types are used in
! conjunction with templates or overloading.  Similarly, 'typeid' does not
  distinguish between types with different attributes.  Support for
  attributes in C++ may be restricted in future to attributes on
  declarations only, but not on nested declarators.
--- 44148,44154 ----
   There are some problems with the semantics of attributes in C++.  For
  example, there are no manglings for attributes, although they may affect
  code generation, so problems may arise when attributed types are used in
! conjunction with templates or overloading.  Similarly, â€˜typeidâ€™ does not
  distinguish between types with different attributes.  Support for
  attributes in C++ may be restricted in future to attributes on
  declarations only, but not on nested declarators.
*************** Attributes::, for details of the semanti
*** 44155,44199 ****
  enumerators.  *Note Statement Attributes::, for details of the semantics
  of attributes applying to statements.
  
!  An "attribute specifier" is of the form '__attribute__
! ((ATTRIBUTE-LIST))'.  An "attribute list" is a possibly empty
! comma-separated sequence of "attributes", where each attribute is one of
  the following:
  
!    * Empty.  Empty attributes are ignored.
  
!    * An attribute name (which may be an identifier such as 'unused', or
!      a reserved word such as 'const').
  
!    * An attribute name followed by a parenthesized list of parameters
       for the attribute.  These parameters take one of the following
       forms:
  
!         * An identifier.  For example, 'mode' attributes use this form.
  
!         * An identifier followed by a comma and a non-empty
!           comma-separated list of expressions.  For example, 'format'
            attributes use this form.
  
!         * A possibly empty comma-separated list of expressions.  For
!           example, 'format_arg' attributes use this form with the list
!           being a single integer constant expression, and 'alias'
            attributes use this form with the list being a single string
            constant.
  
!  An "attribute specifier list" is a sequence of one or more attribute
  specifiers, not separated by any other tokens.
  
!  You may optionally specify attribute names with '__' preceding and
  following the name.  This allows you to use them in header files without
  being concerned about a possible macro of the same name.  For example,
! you may use the attribute name '__noreturn__' instead of 'noreturn'.
  
  Label Attributes
  ................
  
  In GNU C, an attribute specifier list may appear after the colon
! following a label, other than a 'case' or 'default' label.  GNU C++ only
  permits attributes on labels if the attribute specifier is immediately
  followed by a semicolon (i.e., the label applies to an empty statement).
  If the semicolon is missing, C++ label attributes are ambiguous, as it
--- 44163,44207 ----
  enumerators.  *Note Statement Attributes::, for details of the semantics
  of attributes applying to statements.
  
!  An â€œattribute specifierâ€� is of the form â€˜__attribute__
! ((ATTRIBUTE-LIST))â€™.  An â€œattribute listâ€� is a possibly empty
! comma-separated sequence of â€œattributesâ€�, where each attribute is one of
  the following:
  
!    â€¢ Empty.  Empty attributes are ignored.
  
!    â€¢ An attribute name (which may be an identifier such as â€˜unusedâ€™, or
!      a reserved word such as â€˜constâ€™).
  
!    â€¢ An attribute name followed by a parenthesized list of parameters
       for the attribute.  These parameters take one of the following
       forms:
  
!         â€¢ An identifier.  For example, â€˜modeâ€™ attributes use this form.
  
!         â€¢ An identifier followed by a comma and a non-empty
!           comma-separated list of expressions.  For example, â€˜formatâ€™
            attributes use this form.
  
!         â€¢ A possibly empty comma-separated list of expressions.  For
!           example, â€˜format_argâ€™ attributes use this form with the list
!           being a single integer constant expression, and â€˜aliasâ€™
            attributes use this form with the list being a single string
            constant.
  
!  An â€œattribute specifier listâ€� is a sequence of one or more attribute
  specifiers, not separated by any other tokens.
  
!  You may optionally specify attribute names with â€˜__â€™ preceding and
  following the name.  This allows you to use them in header files without
  being concerned about a possible macro of the same name.  For example,
! you may use the attribute name â€˜__noreturn__â€™ instead of â€˜noreturnâ€™.
  
  Label Attributes
  ................
  
  In GNU C, an attribute specifier list may appear after the colon
! following a label, other than a â€˜caseâ€™ or â€˜defaultâ€™ label.  GNU C++ only
  permits attributes on labels if the attribute specifier is immediately
  followed by a semicolon (i.e., the label applies to an empty statement).
  If the semicolon is missing, C++ label attributes are ambiguous, as it
*************** Enumerator Attributes
*** 44206,44212 ****
  
  In GNU C, an attribute specifier list may appear as part of an
  enumerator.  The attribute goes after the enumeration constant, before
! '=', if present.  The optional attribute in the enumerator appertains to
  the enumeration constant.  It is not possible to place the attribute
  after the constant expression, if present.
  
--- 44214,44220 ----
  
  In GNU C, an attribute specifier list may appear as part of an
  enumerator.  The attribute goes after the enumeration constant, before
! â€˜=â€™, if present.  The optional attribute in the enumerator appertains to
  the enumeration constant.  It is not possible to place the attribute
  after the constant expression, if present.
  
*************** new style syntax are also supported on n
*** 44220,44228 ****
  Type Attributes
  ...............
  
! An attribute specifier list may appear as part of a 'struct', 'union' or
! 'enum' specifier.  It may go either immediately after the 'struct',
! 'union' or 'enum' keyword, or after the closing brace.  The former
  syntax is preferred.  Where attribute specifiers follow the closing
  brace, they are considered to relate to the structure, union or
  enumerated type defined, not to any enclosing declaration the type
--- 44228,44236 ----
  Type Attributes
  ...............
  
! An attribute specifier list may appear as part of a â€˜structâ€™, â€˜unionâ€™ or
! â€˜enumâ€™ specifier.  It may go either immediately after the â€˜structâ€™,
! â€˜unionâ€™ or â€˜enumâ€™ keyword, or after the closing brace.  The former
  syntax is preferred.  Where attribute specifiers follow the closing
  brace, they are considered to relate to the structure, union or
  enumerated type defined, not to any enclosing declaration the type
*************** contain attribute specifiers, whether or
*** 44247,44267 ****
  context contain storage class specifiers.  (Some attributes, however,
  are essentially in the nature of storage class specifiers, and only make
  sense where storage class specifiers may be used; for example,
! 'section'.)  There is one necessary limitation to this syntax: the first
  old-style parameter declaration in a function definition cannot begin
  with an attribute specifier, because such an attribute applies to the
  function instead by syntax described below (which, however, is not yet
  implemented in this case).  In some other cases, attribute specifiers
  are permitted by this grammar but not yet supported by the compiler.
  All attribute specifiers in this place relate to the declaration as a
! whole.  In the obsolescent usage where a type of 'int' is implied by the
  absence of type specifiers, such a list of specifiers and qualifiers may
  be an attribute specifier list with no other specifiers or qualifiers.
  
   At present, the first parameter in a function prototype must have some
  type specifier that is not an attribute specifier; this resolves an
! ambiguity in the interpretation of 'void f(int (__attribute__((foo))
! x))', but is subject to change.  At present, if the parentheses of a
  function declarator contain only attributes then those attributes are
  ignored, rather than yielding an error or warning or implying a single
  parameter of type int, but this is subject to change.
--- 44255,44275 ----
  context contain storage class specifiers.  (Some attributes, however,
  are essentially in the nature of storage class specifiers, and only make
  sense where storage class specifiers may be used; for example,
! â€˜sectionâ€™.)  There is one necessary limitation to this syntax: the first
  old-style parameter declaration in a function definition cannot begin
  with an attribute specifier, because such an attribute applies to the
  function instead by syntax described below (which, however, is not yet
  implemented in this case).  In some other cases, attribute specifiers
  are permitted by this grammar but not yet supported by the compiler.
  All attribute specifiers in this place relate to the declaration as a
! whole.  In the obsolescent usage where a type of â€˜intâ€™ is implied by the
  absence of type specifiers, such a list of specifiers and qualifiers may
  be an attribute specifier list with no other specifiers or qualifiers.
  
   At present, the first parameter in a function prototype must have some
  type specifier that is not an attribute specifier; this resolves an
! ambiguity in the interpretation of â€˜void f(int (__attribute__((foo))
! x))â€™, but is subject to change.  At present, if the parentheses of a
  function declarator contain only attributes then those attributes are
  ignored, rather than yielding an error or warning or implying a single
  parameter of type int, but this is subject to change.
*************** identifier before whose declarator they
*** 44276,44297 ****
           __attribute__((format(printf, 1, 2))) d1 (const char *, ...),
            d2 (void);
  
! the 'noreturn' attribute applies to all the functions declared; the
! 'format' attribute only applies to 'd1'.
  
   An attribute specifier list may appear immediately before the comma,
! '=', or semicolon terminating the declaration of an identifier other
  than a function definition.  Such attribute specifiers apply to the
  declared object or function.  Where an assembler name for an object or
  function is specified (*note Asm Labels::), the attribute must follow
! the 'asm' specification.
  
   An attribute specifier list may, in future, be permitted to appear
  after the declarator in a function definition (before any old-style
  parameter declarations or the function body).
  
   Attribute specifiers may be mixed with type qualifiers appearing inside
! the '[]' of a parameter array declarator, in the C99 construct by which
  such qualifiers are applied to the pointer to which the array is
  implicitly converted.  Such attribute specifiers apply to the pointer,
  not to the array, but at present this is not implemented and they are
--- 44284,44305 ----
           __attribute__((format(printf, 1, 2))) d1 (const char *, ...),
            d2 (void);
  
! the â€˜noreturnâ€™ attribute applies to all the functions declared; the
! â€˜formatâ€™ attribute only applies to â€˜d1â€™.
  
   An attribute specifier list may appear immediately before the comma,
! â€˜=â€™, or semicolon terminating the declaration of an identifier other
  than a function definition.  Such attribute specifiers apply to the
  declared object or function.  Where an assembler name for an object or
  function is specified (*note Asm Labels::), the attribute must follow
! the â€˜asmâ€™ specification.
  
   An attribute specifier list may, in future, be permitted to appear
  after the declarator in a function definition (before any old-style
  parameter declarations or the function body).
  
   Attribute specifiers may be mixed with type qualifiers appearing inside
! the â€˜[]â€™ of a parameter array declarator, in the C99 construct by which
  such qualifiers are applied to the pointer to which the array is
  implicitly converted.  Such attribute specifiers apply to the pointer,
  not to the array, but at present this is not implemented and they are
*************** ignored.
*** 44301,44326 ****
  declarator.  At present, there are some limitations in this usage: the
  attributes correctly apply to the declarator, but for most individual
  attributes the semantics this implies are not implemented.  When
! attribute specifiers follow the '*' of a pointer declarator, they may be
  mixed with any type qualifiers present.  The following describes the
  formal semantics of this syntax.  It makes the most sense if you are
  familiar with the formal specification of declarators in the ISO C
  standard.
  
!  Consider (as in C99 subclause 6.7.5 paragraph 4) a declaration 'T D1',
! where 'T' contains declaration specifiers that specify a type TYPE (such
! as 'int') and 'D1' is a declarator that contains an identifier IDENT.
  The type specified for IDENT for derived declarators whose type does not
  include an attribute specifier is as in the ISO C standard.
  
!  If 'D1' has the form '( ATTRIBUTE-SPECIFIER-LIST D )', and the
! declaration 'T D' specifies the type "DERIVED-DECLARATOR-TYPE-LIST TYPE"
! for IDENT, then 'T D1' specifies the type "DERIVED-DECLARATOR-TYPE-LIST
  ATTRIBUTE-SPECIFIER-LIST TYPE" for IDENT.
  
!  If 'D1' has the form '* TYPE-QUALIFIER-AND-ATTRIBUTE-SPECIFIER-LIST D',
! and the declaration 'T D' specifies the type
! "DERIVED-DECLARATOR-TYPE-LIST TYPE" for IDENT, then 'T D1' specifies the
  type "DERIVED-DECLARATOR-TYPE-LIST
  TYPE-QUALIFIER-AND-ATTRIBUTE-SPECIFIER-LIST pointer to TYPE" for IDENT.
  
--- 44309,44334 ----
  declarator.  At present, there are some limitations in this usage: the
  attributes correctly apply to the declarator, but for most individual
  attributes the semantics this implies are not implemented.  When
! attribute specifiers follow the â€˜*â€™ of a pointer declarator, they may be
  mixed with any type qualifiers present.  The following describes the
  formal semantics of this syntax.  It makes the most sense if you are
  familiar with the formal specification of declarators in the ISO C
  standard.
  
!  Consider (as in C99 subclause 6.7.5 paragraph 4) a declaration â€˜T D1â€™,
! where â€˜Tâ€™ contains declaration specifiers that specify a type TYPE (such
! as â€˜intâ€™) and â€˜D1â€™ is a declarator that contains an identifier IDENT.
  The type specified for IDENT for derived declarators whose type does not
  include an attribute specifier is as in the ISO C standard.
  
!  If â€˜D1â€™ has the form â€˜( ATTRIBUTE-SPECIFIER-LIST D )â€™, and the
! declaration â€˜T Dâ€™ specifies the type "DERIVED-DECLARATOR-TYPE-LIST TYPE"
! for IDENT, then â€˜T D1â€™ specifies the type "DERIVED-DECLARATOR-TYPE-LIST
  ATTRIBUTE-SPECIFIER-LIST TYPE" for IDENT.
  
!  If â€˜D1â€™ has the form â€˜* TYPE-QUALIFIER-AND-ATTRIBUTE-SPECIFIER-LIST Dâ€™,
! and the declaration â€˜T Dâ€™ specifies the type
! "DERIVED-DECLARATOR-TYPE-LIST TYPE" for IDENT, then â€˜T D1â€™ specifies the
  type "DERIVED-DECLARATOR-TYPE-LIST
  TYPE-QUALIFIER-AND-ATTRIBUTE-SPECIFIER-LIST pointer to TYPE" for IDENT.
  
*************** TYPE-QUALIFIER-AND-ATTRIBUTE-SPECIFIER-L
*** 44329,44341 ****
       void (__attribute__((noreturn)) ****f) (void);
  
  specifies the type "pointer to pointer to pointer to pointer to
! non-returning function returning 'void'".  As another example,
  
       char *__attribute__((aligned(8))) *f;
  
! specifies the type "pointer to 8-byte-aligned pointer to 'char'".  Note
  again that this does not work with most attributes; for example, the
! usage of 'aligned' and 'noreturn' attributes given above is not yet
  supported.
  
   For compatibility with existing code written for compiler versions that
--- 44337,44349 ----
       void (__attribute__((noreturn)) ****f) (void);
  
  specifies the type "pointer to pointer to pointer to pointer to
! non-returning function returning â€˜voidâ€™".  As another example,
  
       char *__attribute__((aligned(8))) *f;
  
! specifies the type "pointer to 8-byte-aligned pointer to â€˜charâ€™".  Note
  again that this does not work with most attributes; for example, the
! usage of â€˜alignedâ€™ and â€˜noreturnâ€™ attributes given above is not yet
  supported.
  
   For compatibility with existing code written for compiler versions that
*************** further explanation.
*** 44370,44377 ****
  compiler pragmas documented here.  Refer to the CPP manual for more
  information.
  
!  GCC additionally recognizes OpenMP pragmas when the '-fopenmp' option
! is specified, and OpenACC pragmas when the '-fopenacc' option is
  specified.  *Note OpenMP::, and *note OpenACC::.
  
  * Menu:
--- 44378,44385 ----
  compiler pragmas documented here.  Refer to the CPP manual for more
  information.
  
!  GCC additionally recognizes OpenMP pragmas when the â€˜-fopenmpâ€™ option
! is specified, and OpenACC pragmas when the â€˜-fopenaccâ€™ option is
  specified.  *Note OpenMP::, and *note OpenACC::.
  
  * Menu:
*************** The pragmas defined by the AArch64 targe
*** 44404,44412 ****
  target function attributes.  They can be specified as below:
       #pragma GCC target("string")
  
!  where 'STRING' can be any string accepted as an AArch64 target
  attribute.  *Note AArch64 Function Attributes::, for more details on the
! permissible values of 'string'.
  
  
  File: gcc.info,  Node: ARM Pragmas,  Next: LoongArch Pragmas,  Prev: AArch64 Pragmas,  Up: Pragmas
--- 44412,44420 ----
  target function attributes.  They can be specified as below:
       #pragma GCC target("string")
  
!  where â€˜STRINGâ€™ can be any string accepted as an AArch64 target
  attribute.  *Note AArch64 Function Attributes::, for more details on the
! permissible values of â€˜stringâ€™.
  
  
  File: gcc.info,  Node: ARM Pragmas,  Next: LoongArch Pragmas,  Prev: AArch64 Pragmas,  Up: Pragmas
*************** File: gcc.info,  Node: ARM Pragmas,  Nex
*** 44415,44431 ****
  -----------------
  
  The ARM target defines pragmas for controlling the default addition of
! 'long_call' and 'short_call' attributes to functions.  *Note Function
  Attributes::, for information about the effects of these attributes.
  
! 'long_calls'
!      Set all subsequent functions to have the 'long_call' attribute.
  
! 'no_long_calls'
!      Set all subsequent functions to have the 'short_call' attribute.
  
! 'long_calls_off'
!      Do not affect the 'long_call' or 'short_call' attributes of
       subsequent functions.
  
  
--- 44423,44439 ----
  -----------------
  
  The ARM target defines pragmas for controlling the default addition of
! â€˜long_callâ€™ and â€˜short_callâ€™ attributes to functions.  *Note Function
  Attributes::, for information about the effects of these attributes.
  
! â€˜long_callsâ€™
!      Set all subsequent functions to have the â€˜long_callâ€™ attribute.
  
! â€˜no_long_callsâ€™
!      Set all subsequent functions to have the â€˜short_callâ€™ attribute.
  
! â€˜long_calls_offâ€™
!      Do not affect the â€˜long_callâ€™ or â€˜short_callâ€™ attributes of
       subsequent functions.
  
  
*************** File: gcc.info,  Node: M32C Pragmas,  Ne
*** 44447,44467 ****
  6.5.4 M32C Pragmas
  ------------------
  
! 'GCC memregs NUMBER'
!      Overrides the command-line option '-memregs=' for the current file.
       Use with care!  This pragma must be before any function in the
       file, and mixing different memregs values in different objects may
       make them incompatible.  This pragma is useful when a
       performance-critical function uses a memreg for temporary values,
       as it may allow you to reduce the number of memregs used.
  
! 'ADDRESS NAME ADDRESS'
       For any declared symbols matching NAME, this does three things to
       that symbol: it forces the symbol to be located at the given
       address (a number), it forces the symbol to be volatile, and it
       changes the symbol's scope to be static.  This pragma exists for
       compatibility with other compilers, but note that the common
!      '1234H' numeric syntax is not supported (use '0x1234' instead).
       Example:
  
            #pragma ADDRESS port3 0x103
--- 44455,44475 ----
  6.5.4 M32C Pragmas
  ------------------
  
! â€˜GCC memregs NUMBERâ€™
!      Overrides the command-line option â€˜-memregs=â€™ for the current file.
       Use with care!  This pragma must be before any function in the
       file, and mixing different memregs values in different objects may
       make them incompatible.  This pragma is useful when a
       performance-critical function uses a memreg for temporary values,
       as it may allow you to reduce the number of memregs used.
  
! â€˜ADDRESS NAME ADDRESSâ€™
       For any declared symbols matching NAME, this does three things to
       that symbol: it forces the symbol to be located at the given
       address (a number), it forces the symbol to be volatile, and it
       changes the symbol's scope to be static.  This pragma exists for
       compatibility with other compilers, but note that the common
!      â€˜1234Hâ€™ numeric syntax is not supported (use â€˜0x1234â€™ instead).
       Example:
  
            #pragma ADDRESS port3 0x103
*************** File: gcc.info,  Node: PRU Pragmas,  Nex
*** 44473,44479 ****
  6.5.5 PRU Pragmas
  -----------------
  
! 'ctable_entry INDEX CONSTANT_ADDRESS'
       Specifies that the PRU CTABLE entry given by INDEX has the value
       CONSTANT_ADDRESS.  This enables GCC to emit LBCO/SBCO instructions
       when the load/store address is known and can be addressed with some
--- 44481,44487 ----
  6.5.5 PRU Pragmas
  -----------------
  
! â€˜ctable_entry INDEX CONSTANT_ADDRESSâ€™
       Specifies that the PRU CTABLE entry given by INDEX has the value
       CONSTANT_ADDRESS.  This enables GCC to emit LBCO/SBCO instructions
       when the load/store address is known and can be addressed with some
*************** File: gcc.info,  Node: RS/6000 and Power
*** 44490,44507 ****
  ---------------------------------
  
  The RS/6000 and PowerPC targets define one pragma for controlling
! whether or not the 'longcall' attribute is added to function
! declarations by default.  This pragma overrides the '-mlongcall' option,
! but not the 'longcall' and 'shortcall' attributes.  *Note RS/6000 and
  PowerPC Options::, for more information about when long calls are and
  are not necessary.
  
! 'longcall (1)'
!      Apply the 'longcall' attribute to all subsequent function
       declarations.
  
! 'longcall (0)'
!      Do not apply the 'longcall' attribute to subsequent function
       declarations.
  
  
--- 44498,44515 ----
  ---------------------------------
  
  The RS/6000 and PowerPC targets define one pragma for controlling
! whether or not the â€˜longcallâ€™ attribute is added to function
! declarations by default.  This pragma overrides the â€˜-mlongcallâ€™ option,
! but not the â€˜longcallâ€™ and â€˜shortcallâ€™ attributes.  *Note RS/6000 and
  PowerPC Options::, for more information about when long calls are and
  are not necessary.
  
! â€˜longcall (1)â€™
!      Apply the â€˜longcallâ€™ attribute to all subsequent function
       declarations.
  
! â€˜longcall (0)â€™
!      Do not apply the â€˜longcallâ€™ attribute to subsequent function
       declarations.
  
  
*************** File: gcc.info,  Node: S/390 Pragmas,  N
*** 44513,44523 ****
  The pragmas defined by the S/390 target correspond to the S/390 target
  function attributes and some the additional options:
  
! 'zvector'
! 'no-zvector'
  
   Note that options of the pragma, unlike options of the target
! attribute, do change the value of preprocessor macros like '__VEC__'.
  They can be specified as below:
  
       #pragma GCC target("string[,string]...")
--- 44521,44531 ----
  The pragmas defined by the S/390 target correspond to the S/390 target
  function attributes and some the additional options:
  
! â€˜zvectorâ€™
! â€˜no-zvectorâ€™
  
   Note that options of the pragma, unlike options of the target
! attribute, do change the value of preprocessor macros like â€˜__VEC__â€™.
  They can be specified as below:
  
       #pragma GCC target("string[,string]...")
*************** The following pragmas are available for
*** 44533,44555 ****
  Darwin operating system.  These are useful for compatibility with other
  macOS compilers.
  
! 'mark TOKENS...'
       This pragma is accepted, but has no effect.
  
! 'options align=ALIGNMENT'
       This pragma sets the alignment of fields in structures.  The values
!      of ALIGNMENT may be 'mac68k', to emulate m68k alignment, or
!      'power', to emulate PowerPC alignment.  Uses of this pragma nest
!      properly; to restore the previous setting, use 'reset' for the
       ALIGNMENT.
  
! 'segment TOKENS...'
       This pragma is accepted, but has no effect.
  
! 'unused (VAR [, VAR]...)'
       This pragma declares variables to be possibly unused.  GCC does not
       produce warnings for the listed variables.  The effect is similar
!      to that of the 'unused' attribute, except that this pragma may
       appear anywhere within the variables' scopes.
  
  
--- 44541,44563 ----
  Darwin operating system.  These are useful for compatibility with other
  macOS compilers.
  
! â€˜mark TOKENS...â€™
       This pragma is accepted, but has no effect.
  
! â€˜options align=ALIGNMENTâ€™
       This pragma sets the alignment of fields in structures.  The values
!      of ALIGNMENT may be â€˜mac68kâ€™, to emulate m68k alignment, or
!      â€˜powerâ€™, to emulate PowerPC alignment.  Uses of this pragma nest
!      properly; to restore the previous setting, use â€˜resetâ€™ for the
       ALIGNMENT.
  
! â€˜segment TOKENS...â€™
       This pragma is accepted, but has no effect.
  
! â€˜unused (VAR [, VAR]...)â€™
       This pragma declares variables to be possibly unused.  GCC does not
       produce warnings for the listed variables.  The effect is similar
!      to that of the â€˜unusedâ€™ attribute, except that this pragma may
       appear anywhere within the variables' scopes.
  
  
*************** File: gcc.info,  Node: Solaris Pragmas,
*** 44558,44587 ****
  6.5.9 Solaris Pragmas
  ---------------------
  
! The Solaris target supports '#pragma redefine_extname' (*note
! Symbol-Renaming Pragmas::).  It also supports additional '#pragma'
  directives for compatibility with the system compiler.
  
! 'align ALIGNMENT (VARIABLE [, VARIABLE]...)'
  
       Increase the minimum alignment of each VARIABLE to ALIGNMENT.  This
!      is the same as GCC's 'aligned' attribute *note Variable
       Attributes::).  Macro expansion occurs on the arguments to this
       pragma when compiling C and Objective-C.  It does not currently
       occur when compiling C++, but this is a bug which may be fixed in a
       future release.
  
! 'fini (FUNCTION [, FUNCTION]...)'
  
       This pragma causes each listed FUNCTION to be called after main, or
!      during shared module unloading, by adding a call to the '.fini'
       section.
  
! 'init (FUNCTION [, FUNCTION]...)'
  
       This pragma causes each listed FUNCTION to be called during
!      initialization (before 'main') or during shared module loading, by
!      adding a call to the '.init' section.
  
  
  File: gcc.info,  Node: Symbol-Renaming Pragmas,  Next: Structure-Layout Pragmas,  Prev: Solaris Pragmas,  Up: Pragmas
--- 44566,44595 ----
  6.5.9 Solaris Pragmas
  ---------------------
  
! The Solaris target supports â€˜#pragma redefine_extnameâ€™ (*note
! Symbol-Renaming Pragmas::).  It also supports additional â€˜#pragmaâ€™
  directives for compatibility with the system compiler.
  
! â€˜align ALIGNMENT (VARIABLE [, VARIABLE]...)â€™
  
       Increase the minimum alignment of each VARIABLE to ALIGNMENT.  This
!      is the same as GCC's â€˜alignedâ€™ attribute *note Variable
       Attributes::).  Macro expansion occurs on the arguments to this
       pragma when compiling C and Objective-C.  It does not currently
       occur when compiling C++, but this is a bug which may be fixed in a
       future release.
  
! â€˜fini (FUNCTION [, FUNCTION]...)â€™
  
       This pragma causes each listed FUNCTION to be called after main, or
!      during shared module unloading, by adding a call to the â€˜.finiâ€™
       section.
  
! â€˜init (FUNCTION [, FUNCTION]...)â€™
  
       This pragma causes each listed FUNCTION to be called during
!      initialization (before â€˜mainâ€™) or during shared module loading, by
!      adding a call to the â€˜.initâ€™ section.
  
  
  File: gcc.info,  Node: Symbol-Renaming Pragmas,  Next: Structure-Layout Pragmas,  Prev: Solaris Pragmas,  Up: Pragmas
*************** File: gcc.info,  Node: Symbol-Renaming P
*** 44589,44614 ****
  6.5.10 Symbol-Renaming Pragmas
  ------------------------------
  
! GCC supports a '#pragma' directive that changes the name used in
  assembly for a given declaration.  While this pragma is supported on all
  platforms, it is intended primarily to provide compatibility with the
  Solaris system headers.  This effect can also be achieved using the asm
  labels extension (*note Asm Labels::).
  
! 'redefine_extname OLDNAME NEWNAME'
  
       This pragma gives the C function OLDNAME the assembly symbol
!      NEWNAME.  The preprocessor macro '__PRAGMA_REDEFINE_EXTNAME' is
       defined if this pragma is available (currently on all platforms).
  
!  This pragma and the 'asm' labels extension interact in a complicated
  manner.  Here are some corner cases you may want to be aware of:
  
    1. This pragma silently applies only to declarations with external
!      linkage.  The 'asm' label feature does not have this restriction.
  
    2. In C++, this pragma silently applies only to declarations with "C"
!      linkage.  Again, 'asm' labels do not have this restriction.
  
    3. If either of the ways of changing the assembly name of a
       declaration are applied to a declaration whose assembly name has
--- 44597,44622 ----
  6.5.10 Symbol-Renaming Pragmas
  ------------------------------
  
! GCC supports a â€˜#pragmaâ€™ directive that changes the name used in
  assembly for a given declaration.  While this pragma is supported on all
  platforms, it is intended primarily to provide compatibility with the
  Solaris system headers.  This effect can also be achieved using the asm
  labels extension (*note Asm Labels::).
  
! â€˜redefine_extname OLDNAME NEWNAMEâ€™
  
       This pragma gives the C function OLDNAME the assembly symbol
!      NEWNAME.  The preprocessor macro â€˜__PRAGMA_REDEFINE_EXTNAMEâ€™ is
       defined if this pragma is available (currently on all platforms).
  
!  This pragma and the â€˜asmâ€™ labels extension interact in a complicated
  manner.  Here are some corner cases you may want to be aware of:
  
    1. This pragma silently applies only to declarations with external
!      linkage.  The â€˜asmâ€™ label feature does not have this restriction.
  
    2. In C++, this pragma silently applies only to declarations with "C"
!      linkage.  Again, â€˜asmâ€™ labels do not have this restriction.
  
    3. If either of the ways of changing the assembly name of a
       declaration are applied to a declaration whose assembly name has
*************** manner.  Here are some corner cases you
*** 44617,44623 ****
       to generate code), and the new name is different, a warning issues
       and the name does not change.
  
!   4. The OLDNAME used by '#pragma redefine_extname' is always the
       C-language name.
  
  
--- 44625,44631 ----
       to generate code), and the new name is different, a warning issues
       and the name does not change.
  
!   4. The OLDNAME used by â€˜#pragma redefine_extnameâ€™ is always the
       C-language name.
  
  
*************** File: gcc.info,  Node: Structure-Layout
*** 44627,44689 ****
  -------------------------------
  
  For compatibility with Microsoft Windows compilers, GCC supports a set
! of '#pragma pack' directives that change the maximum alignment of
  members of structures (other than zero-width bit-fields), unions, and
  classes subsequently defined.  The N value below specifies the new
  alignment in bytes and may have the value 1, 2, 4, 8, and 16.  A value
  of 0 is also permitted and indicates the default alignment (as if no
! '#pragma pack' were in effect) should be used.
  
! '#pragma pack(N)'
       Sets the new alignment according to N.
  
! '#pragma pack()'
       Sets the alignment to the one that was in effect when compilation
!      started (see also command-line option '-fpack-struct[=N]'.  *Note
       Code Gen Options::).
  
! '#pragma pack(push[,N])'
       Pushes the current alignment setting on an internal stack and then
       optionally sets the new alignment.
  
! '#pragma pack(pop)'
       Restores the alignment setting to the one saved at the top of the
!      internal stack (and removes that stack entry).  Note that '#pragma
!      pack([N])' does not influence this internal stack; thus it is
!      possible to have '#pragma pack(push)' followed by multiple '#pragma
!      pack(N)' instances, with the original state restored by a single
!      '#pragma pack(pop)'.
  
!  You can also use the 'packed' type attribute (*note Common Type
! Attributes::) to pack a structure.  However, the 'packed' attribute
! interferes with '#pragma pack', and attempting to use them together may
  cause spurious warnings or unexpected behavior.
  
!  Some targets, e.g. x86 and PowerPC, support the '#pragma ms_struct'
  directive, which causes subsequent structure and union declarations to
! be laid out in the same way as '__attribute__ ((ms_struct))'; *note x86
  Variable Attributes::.
  
! '#pragma ms_struct on'
       Turns on the Microsoft layout.
! '#pragma ms_struct off'
       Turns off the Microsoft layout.
! '#pragma ms_struct reset'
       Goes back to the default layout.
  
!  Most targets also support the '#pragma scalar_storage_order' directive
  which lays out subsequent structure and union declarations in in the
! same way as the documented '__attribute__ ((scalar_storage_order))';
  *note Common Type Attributes::.
  
! '#pragma scalar_storage_order big-endian'
! '#pragma scalar_storage_order little-endian'
       Set the storage order of scalar fields to big- or little-endian,
       respectively.
  
! '#pragma scalar_storage_order default'
       Goes back to the endianness that was in effect when compilation
!      started (see also command-line option '-fsso-struct=ENDIANNESS'
       *note C Dialect Options::).
  
  
--- 44635,44697 ----
  -------------------------------
  
  For compatibility with Microsoft Windows compilers, GCC supports a set
! of â€˜#pragma packâ€™ directives that change the maximum alignment of
  members of structures (other than zero-width bit-fields), unions, and
  classes subsequently defined.  The N value below specifies the new
  alignment in bytes and may have the value 1, 2, 4, 8, and 16.  A value
  of 0 is also permitted and indicates the default alignment (as if no
! â€˜#pragma packâ€™ were in effect) should be used.
  
! â€˜#pragma pack(N)â€™
       Sets the new alignment according to N.
  
! â€˜#pragma pack()â€™
       Sets the alignment to the one that was in effect when compilation
!      started (see also command-line option â€˜-fpack-struct[=N]â€™.  *Note
       Code Gen Options::).
  
! â€˜#pragma pack(push[,N])â€™
       Pushes the current alignment setting on an internal stack and then
       optionally sets the new alignment.
  
! â€˜#pragma pack(pop)â€™
       Restores the alignment setting to the one saved at the top of the
!      internal stack (and removes that stack entry).  Note that â€˜#pragma
!      pack([N])â€™ does not influence this internal stack; thus it is
!      possible to have â€˜#pragma pack(push)â€™ followed by multiple â€˜#pragma
!      pack(N)â€™ instances, with the original state restored by a single
!      â€˜#pragma pack(pop)â€™.
  
!  You can also use the â€˜packedâ€™ type attribute (*note Common Type
! Attributes::) to pack a structure.  However, the â€˜packedâ€™ attribute
! interferes with â€˜#pragma packâ€™, and attempting to use them together may
  cause spurious warnings or unexpected behavior.
  
!  Some targets, e.g. x86 and PowerPC, support the â€˜#pragma ms_structâ€™
  directive, which causes subsequent structure and union declarations to
! be laid out in the same way as â€˜__attribute__ ((ms_struct))â€™; *note x86
  Variable Attributes::.
  
! â€˜#pragma ms_struct onâ€™
       Turns on the Microsoft layout.
! â€˜#pragma ms_struct offâ€™
       Turns off the Microsoft layout.
! â€˜#pragma ms_struct resetâ€™
       Goes back to the default layout.
  
!  Most targets also support the â€˜#pragma scalar_storage_orderâ€™ directive
  which lays out subsequent structure and union declarations in in the
! same way as the documented â€˜__attribute__ ((scalar_storage_order))â€™;
  *note Common Type Attributes::.
  
! â€˜#pragma scalar_storage_order big-endianâ€™
! â€˜#pragma scalar_storage_order little-endianâ€™
       Set the storage order of scalar fields to big- or little-endian,
       respectively.
  
! â€˜#pragma scalar_storage_order defaultâ€™
       Goes back to the endianness that was in effect when compilation
!      started (see also command-line option â€˜-fsso-struct=ENDIANNESSâ€™
       *note C Dialect Options::).
  
  
*************** File: gcc.info,  Node: Weak Pragmas,  Ne
*** 44692,44707 ****
  6.5.12 Weak Pragmas
  -------------------
  
! For compatibility with SVR4, GCC supports a set of '#pragma' directives
  for declaring symbols to be weak, and defining weak aliases.
  
! '#pragma weak SYMBOL'
       This pragma declares SYMBOL to be weak, as if the declaration had
       the attribute of the same name.  The pragma may appear before or
       after the declaration of SYMBOL.  It is not an error for SYMBOL to
       never be defined at all.
  
! '#pragma weak SYMBOL1 = SYMBOL2'
       This pragma declares SYMBOL1 to be a weak alias of SYMBOL2.  It is
       an error if SYMBOL2 is not defined in the current translation unit.
  
--- 44700,44715 ----
  6.5.12 Weak Pragmas
  -------------------
  
! For compatibility with SVR4, GCC supports a set of â€˜#pragmaâ€™ directives
  for declaring symbols to be weak, and defining weak aliases.
  
! â€˜#pragma weak SYMBOLâ€™
       This pragma declares SYMBOL to be weak, as if the declaration had
       the attribute of the same name.  The pragma may appear before or
       after the declaration of SYMBOL.  It is not an error for SYMBOL to
       never be defined at all.
  
! â€˜#pragma weak SYMBOL1 = SYMBOL2â€™
       This pragma declares SYMBOL1 to be a weak alias of SYMBOL2.  It is
       an error if SYMBOL2 is not defined in the current translation unit.
  
*************** File: gcc.info,  Node: Diagnostic Pragma
*** 44713,44734 ****
  
  GCC allows the user to selectively enable or disable certain types of
  diagnostics, and change the kind of the diagnostic.  For example, a
! project's policy might require that all sources compile with '-Werror'
  but certain files might have exceptions allowing specific types of
  warnings.  Or, a project might selectively enable diagnostics and treat
  them as errors depending on which preprocessor macros are defined.
  
! '#pragma GCC diagnostic KIND OPTION'
  
       Modifies the disposition of a diagnostic.  Note that not all
       diagnostics are modifiable; at the moment only warnings (normally
!      controlled by '-W...') can be controlled, and not all of them.  Use
!      '-fdiagnostics-show-option' to determine which diagnostics are
       controllable and which option controls them.
  
!      KIND is 'error' to treat this diagnostic as an error, 'warning' to
!      treat it like a warning (even if '-Werror' is in effect), or
!      'ignored' if the diagnostic is to be ignored.  OPTION is a double
       quoted string that matches the command-line option.
  
            #pragma GCC diagnostic warning "-Wformat"
--- 44721,44742 ----
  
  GCC allows the user to selectively enable or disable certain types of
  diagnostics, and change the kind of the diagnostic.  For example, a
! project's policy might require that all sources compile with â€˜-Werrorâ€™
  but certain files might have exceptions allowing specific types of
  warnings.  Or, a project might selectively enable diagnostics and treat
  them as errors depending on which preprocessor macros are defined.
  
! â€˜#pragma GCC diagnostic KIND OPTIONâ€™
  
       Modifies the disposition of a diagnostic.  Note that not all
       diagnostics are modifiable; at the moment only warnings (normally
!      controlled by â€˜-W...â€™) can be controlled, and not all of them.  Use
!      â€˜-fdiagnostics-show-optionâ€™ to determine which diagnostics are
       controllable and which option controls them.
  
!      KIND is â€˜errorâ€™ to treat this diagnostic as an error, â€˜warningâ€™ to
!      treat it like a warning (even if â€˜-Werrorâ€™ is in effect), or
!      â€˜ignoredâ€™ if the diagnostic is to be ignored.  OPTION is a double
       quoted string that matches the command-line option.
  
            #pragma GCC diagnostic warning "-Wformat"
*************** them as errors depending on which prepro
*** 44741,44752 ****
       pragmas occurring after a line do not affect diagnostics caused by
       that line.
  
! '#pragma GCC diagnostic push'
! '#pragma GCC diagnostic pop'
  
       Causes GCC to remember the state of the diagnostics as of each
!      'push', and restore to that point at each 'pop'.  If a 'pop' has no
!      matching 'push', the command-line options are restored.
  
            #pragma GCC diagnostic error "-Wuninitialized"
              foo(a);                       /* error is given for this one */
--- 44749,44760 ----
       pragmas occurring after a line do not affect diagnostics caused by
       that line.
  
! â€˜#pragma GCC diagnostic pushâ€™
! â€˜#pragma GCC diagnostic popâ€™
  
       Causes GCC to remember the state of the diagnostics as of each
!      â€˜pushâ€™, and restore to that point at each â€˜popâ€™.  If a â€˜popâ€™ has no
!      matching â€˜pushâ€™, the command-line options are restored.
  
            #pragma GCC diagnostic error "-Wuninitialized"
              foo(a);                       /* error is given for this one */
*************** them as errors depending on which prepro
*** 44758,44773 ****
            #pragma GCC diagnostic pop
              foo(d);                       /* depends on command-line options */
  
! '#pragma GCC diagnostic ignored_attributes'
  
!      Similarly to '-Wno-attributes=', this pragma allows users to
       suppress warnings about unknown scoped attributes (in C++11 and
!      C23).  For example, '#pragma GCC diagnostic ignored_attributes
!      "vendor::attr"' disables warning about the following declaration:
  
            [[vendor::attr]] void f();
  
!      whereas '#pragma GCC diagnostic ignored_attributes "vendor::"'
       prevents warning about both of these declarations:
  
            [[vendor::safe]] void f();
--- 44766,44781 ----
            #pragma GCC diagnostic pop
              foo(d);                       /* depends on command-line options */
  
! â€˜#pragma GCC diagnostic ignored_attributesâ€™
  
!      Similarly to â€˜-Wno-attributes=â€™, this pragma allows users to
       suppress warnings about unknown scoped attributes (in C++11 and
!      C23).  For example, â€˜#pragma GCC diagnostic ignored_attributes
!      "vendor::attr"â€™ disables warning about the following declaration:
  
            [[vendor::attr]] void f();
  
!      whereas â€˜#pragma GCC diagnostic ignored_attributes "vendor::"â€™
       prevents warning about both of these declarations:
  
            [[vendor::safe]] void f();
*************** them as errors depending on which prepro
*** 44776,44786 ****
   GCC also offers a simple mechanism for printing messages during
  compilation.
  
! '#pragma message STRING'
  
       Prints STRING as a compiler message on compilation.  The message is
       informational only, and is neither a compilation warning nor an
!      error.  Newlines can be included in the string by using the '\n'
       escape sequence.
  
            #pragma message "Compiling " __FILE__ "..."
--- 44784,44794 ----
   GCC also offers a simple mechanism for printing messages during
  compilation.
  
! â€˜#pragma message STRINGâ€™
  
       Prints STRING as a compiler message on compilation.  The message is
       informational only, and is neither a compilation warning nor an
!      error.  Newlines can be included in the string by using the â€˜\nâ€™
       escape sequence.
  
            #pragma message "Compiling " __FILE__ "..."
*************** compilation.
*** 44793,44809 ****
  
            TODO(Remember to fix this)
  
!      prints '/tmp/file.c:4: note: #pragma message: TODO - Remember to
!      fix this'.
  
! '#pragma GCC error MESSAGE'
       Generates an error message.  This pragma _is_ considered to
       indicate an error in the compilation, and it will be treated as
       such.
  
!      Newlines can be included in the string by using the '\n' escape
       sequence.  They will be displayed as newlines even if the
!      '-fmessage-length' option is set to zero.
  
       The error is only generated if the pragma is present in the code
       after pre-processing has been completed.  It does not matter
--- 44801,44817 ----
  
            TODO(Remember to fix this)
  
!      prints â€˜/tmp/file.c:4: note: #pragma message: TODO - Remember to
!      fix thisâ€™.
  
! â€˜#pragma GCC error MESSAGEâ€™
       Generates an error message.  This pragma _is_ considered to
       indicate an error in the compilation, and it will be treated as
       such.
  
!      Newlines can be included in the string by using the â€˜\nâ€™ escape
       sequence.  They will be displayed as newlines even if the
!      â€˜-fmessage-lengthâ€™ option is set to zero.
  
       The error is only generated if the pragma is present in the code
       after pre-processing has been completed.  It does not matter
*************** compilation.
*** 44818,44826 ****
            #pragma GCC error "this error is seen"
            }
  
! '#pragma GCC warning MESSAGE'
!      This is just like 'pragma GCC error' except that a warning message
!      is issued instead of an error message.  Unless '-Werror' is in
       effect, in which case this pragma will generate an error as well.
  
  
--- 44826,44834 ----
            #pragma GCC error "this error is seen"
            }
  
! â€˜#pragma GCC warning MESSAGEâ€™
!      This is just like â€˜pragma GCC errorâ€™ except that a warning message
!      is issued instead of an error message.  Unless â€˜-Werrorâ€™ is in
       effect, in which case this pragma will generate an error as well.
  
  
*************** File: gcc.info,  Node: Visibility Pragma
*** 44829,44842 ****
  6.5.14 Visibility Pragmas
  -------------------------
  
! '#pragma GCC visibility push(VISIBILITY)'
! '#pragma GCC visibility pop'
  
       This pragma allows the user to set the visibility for multiple
       declarations without having to give each a visibility attribute
       (*note Function Attributes::).
  
!      In C++, '#pragma GCC visibility' affects only namespace-scope
       declarations.  Class members and template specializations are not
       affected; if you want to override the visibility for a particular
       member or instantiation, you must use an attribute.
--- 44837,44850 ----
  6.5.14 Visibility Pragmas
  -------------------------
  
! â€˜#pragma GCC visibility push(VISIBILITY)â€™
! â€˜#pragma GCC visibility popâ€™
  
       This pragma allows the user to set the visibility for multiple
       declarations without having to give each a visibility attribute
       (*note Function Attributes::).
  
!      In C++, â€˜#pragma GCC visibilityâ€™ affects only namespace-scope
       declarations.  Class members and template specializations are not
       affected; if you want to override the visibility for a particular
       member or instantiation, you must use an attribute.
*************** File: gcc.info,  Node: Push/Pop Macro Pr
*** 44848,44861 ****
  -----------------------------
  
  For compatibility with Microsoft Windows compilers, GCC supports
! '#pragma push_macro("MACRO_NAME")' and '#pragma
! pop_macro("MACRO_NAME")'.
  
! '#pragma push_macro("MACRO_NAME")'
       This pragma saves the value of the macro named as MACRO_NAME to the
       top of the stack for this macro.
  
! '#pragma pop_macro("MACRO_NAME")'
       This pragma sets the value of the macro named as MACRO_NAME to the
       value on top of the stack for this macro.  If the stack for
       MACRO_NAME is empty, the value of the macro remains unchanged.
--- 44856,44869 ----
  -----------------------------
  
  For compatibility with Microsoft Windows compilers, GCC supports
! â€˜#pragma push_macro("MACRO_NAME")â€™ and â€˜#pragma
! pop_macro("MACRO_NAME")â€™.
  
! â€˜#pragma push_macro("MACRO_NAME")â€™
       This pragma saves the value of the macro named as MACRO_NAME to the
       top of the stack for this macro.
  
! â€˜#pragma pop_macro("MACRO_NAME")â€™
       This pragma sets the value of the macro named as MACRO_NAME to the
       value on top of the stack for this macro.  If the stack for
       MACRO_NAME is empty, the value of the macro remains unchanged.
*************** pop_macro("MACRO_NAME")'.
*** 44869,44876 ****
       #pragma pop_macro("X")
       int x [X];
  
! In this example, the definition of X as 1 is saved by '#pragma
! push_macro' and restored by '#pragma pop_macro'.
  
  
  File: gcc.info,  Node: Function Specific Option Pragmas,  Next: Loop-Specific Pragmas,  Prev: Push/Pop Macro Pragmas,  Up: Pragmas
--- 44877,44884 ----
       #pragma pop_macro("X")
       int x [X];
  
! In this example, the definition of X as 1 is saved by â€˜#pragma
! push_macroâ€™ and restored by â€˜#pragma pop_macroâ€™.
  
  
  File: gcc.info,  Node: Function Specific Option Pragmas,  Next: Loop-Specific Pragmas,  Prev: Push/Pop Macro Pragmas,  Up: Pragmas
*************** File: gcc.info,  Node: Function Specific
*** 44878,44921 ****
  6.5.16 Function Specific Option Pragmas
  ---------------------------------------
  
! '#pragma GCC target (STRING, ...)'
  
       This pragma allows you to set target-specific options for functions
       defined later in the source file.  One or more strings can be
       specified.  Each function that is defined after this point is
!      treated as if it had been declared with one 'target('STRING')'
       attribute for each STRING argument.  The parentheses around the
       strings in the pragma are optional.  *Note Function Attributes::,
!      for more information about the 'target' attribute and the attribute
       syntax.
  
!      The '#pragma GCC target' pragma is presently implemented for x86,
       ARM, AArch64, PowerPC, and S/390 targets only.
  
! '#pragma GCC optimize (STRING, ...)'
  
       This pragma allows you to set global optimization options for
       functions defined later in the source file.  One or more strings
       can be specified.  Each function that is defined after this point
!      is treated as if it had been declared with one 'optimize('STRING')'
       attribute for each STRING argument.  The parentheses around the
       strings in the pragma are optional.  *Note Function Attributes::,
!      for more information about the 'optimize' attribute and the
       attribute syntax.
  
! '#pragma GCC push_options'
! '#pragma GCC pop_options'
  
       These pragmas maintain a stack of the current target and
       optimization options.  It is intended for include files where you
!      temporarily want to switch to using a different '#pragma GCC
!      target' or '#pragma GCC optimize' and then to pop back to the
       previous options.
  
! '#pragma GCC reset_options'
  
!      This pragma clears the current '#pragma GCC target' and '#pragma
!      GCC optimize' to use the default switches as specified on the
       command line.
  
  
--- 44886,44929 ----
  6.5.16 Function Specific Option Pragmas
  ---------------------------------------
  
! â€˜#pragma GCC target (STRING, ...)â€™
  
       This pragma allows you to set target-specific options for functions
       defined later in the source file.  One or more strings can be
       specified.  Each function that is defined after this point is
!      treated as if it had been declared with one â€˜target(â€™STRINGâ€˜)â€™
       attribute for each STRING argument.  The parentheses around the
       strings in the pragma are optional.  *Note Function Attributes::,
!      for more information about the â€˜targetâ€™ attribute and the attribute
       syntax.
  
!      The â€˜#pragma GCC targetâ€™ pragma is presently implemented for x86,
       ARM, AArch64, PowerPC, and S/390 targets only.
  
! â€˜#pragma GCC optimize (STRING, ...)â€™
  
       This pragma allows you to set global optimization options for
       functions defined later in the source file.  One or more strings
       can be specified.  Each function that is defined after this point
!      is treated as if it had been declared with one â€˜optimize(â€™STRINGâ€˜)â€™
       attribute for each STRING argument.  The parentheses around the
       strings in the pragma are optional.  *Note Function Attributes::,
!      for more information about the â€˜optimizeâ€™ attribute and the
       attribute syntax.
  
! â€˜#pragma GCC push_optionsâ€™
! â€˜#pragma GCC pop_optionsâ€™
  
       These pragmas maintain a stack of the current target and
       optimization options.  It is intended for include files where you
!      temporarily want to switch to using a different â€˜#pragma GCC
!      targetâ€™ or â€˜#pragma GCC optimizeâ€™ and then to pop back to the
       previous options.
  
! â€˜#pragma GCC reset_optionsâ€™
  
!      This pragma clears the current â€˜#pragma GCC targetâ€™ and â€˜#pragma
!      GCC optimizeâ€™ to use the default switches as specified on the
       command line.
  
  
*************** File: gcc.info,  Node: Loop-Specific Pra
*** 44924,44930 ****
  6.5.17 Loop-Specific Pragmas
  ----------------------------
  
! '#pragma GCC ivdep'
  
       With this pragma, the programmer asserts that there are no
       loop-carried dependencies which would prevent consecutive
--- 44932,44938 ----
  6.5.17 Loop-Specific Pragmas
  ----------------------------
  
! â€˜#pragma GCC ivdepâ€™
  
       With this pragma, the programmer asserts that there are no
       loop-carried dependencies which would prevent consecutive
*************** File: gcc.info,  Node: Loop-Specific Pra
*** 44942,44948 ****
                a[i] = b[i] + c[i];
            }
  
!      In this example, using the 'restrict' qualifier had the same
       effect.  In the following example, that would not be possible.
       Assume k < -m or k >= m.  Only with the pragma, the compiler knows
       that it can unconditionally vectorize the following loop:
--- 44950,44956 ----
                a[i] = b[i] + c[i];
            }
  
!      In this example, using the â€˜restrictâ€™ qualifier had the same
       effect.  In the following example, that would not be possible.
       Assume k < -m or k >= m.  Only with the pragma, the compiler knows
       that it can unconditionally vectorize the following loop:
*************** File: gcc.info,  Node: Loop-Specific Pra
*** 44954,44960 ****
                a[i] = a[i + k] * c;
            }
  
! '#pragma GCC novector'
  
       With this pragma, the programmer asserts that the following loop
       should be prevented from executing concurrently with SIMD (single
--- 44962,44968 ----
                a[i] = a[i + k] * c;
            }
  
! â€˜#pragma GCC novectorâ€™
  
       With this pragma, the programmer asserts that the following loop
       should be prevented from executing concurrently with SIMD (single
*************** File: gcc.info,  Node: Loop-Specific Pra
*** 44971,44981 ****
                a[i] = b[i] + c[i];
            }
  
! '#pragma GCC unroll N'
  
       You can use this pragma to control how many times a loop should be
!      unrolled.  It must be placed immediately before a 'for', 'while' or
!      'do' loop or a '#pragma GCC ivdep', and applies only to the loop
       that follows.  N is an integer constant expression specifying the
       unrolling factor.  The values of 0 and 1 block any unrolling of the
       loop.
--- 44979,44989 ----
                a[i] = b[i] + c[i];
            }
  
! â€˜#pragma GCC unroll Nâ€™
  
       You can use this pragma to control how many times a loop should be
!      unrolled.  It must be placed immediately before a â€˜forâ€™, â€˜whileâ€™ or
!      â€˜doâ€™ loop or a â€˜#pragma GCC ivdepâ€™, and applies only to the loop
       that follows.  N is an integer constant expression specifying the
       unrolling factor.  The values of 0 and 1 block any unrolling of the
       loop.
*************** allocated such that there is one instanc
*** 44991,45012 ****
  thread.  The runtime model GCC uses to implement this originates in the
  IA-64 processor-specific ABI, but has since been migrated to other
  processors as well.  It requires significant support from the linker
! ('ld'), dynamic linker ('ld.so'), and system libraries ('libc.so' and
! 'libpthread.so'), so it is not available everywhere.
  
   At the user level, the extension is visible with a new storage class
! keyword: '__thread'.  For example:
  
       __thread int i;
       extern __thread struct state s;
       static __thread char *p;
  
!  The '__thread' specifier may be used alone, with the 'extern' or
! 'static' specifiers, but with no other storage class specifier.  When
! used with 'extern' or 'static', '__thread' must appear immediately after
  the other storage class specifier.
  
!  The '__thread' specifier may be applied to any global, file-scoped
  static, function-scoped static, or static data member of a class.  It
  may not be applied to block-scoped automatic or non-static data member.
  
--- 44999,45020 ----
  thread.  The runtime model GCC uses to implement this originates in the
  IA-64 processor-specific ABI, but has since been migrated to other
  processors as well.  It requires significant support from the linker
! (â€˜ldâ€™), dynamic linker (â€˜ld.soâ€™), and system libraries (â€˜libc.soâ€™ and
! â€˜libpthread.soâ€™), so it is not available everywhere.
  
   At the user level, the extension is visible with a new storage class
! keyword: â€˜__threadâ€™.  For example:
  
       __thread int i;
       extern __thread struct state s;
       static __thread char *p;
  
!  The â€˜__threadâ€™ specifier may be used alone, with the â€˜externâ€™ or
! â€˜staticâ€™ specifiers, but with no other storage class specifier.  When
! used with â€˜externâ€™ or â€˜staticâ€™, â€˜__threadâ€™ must appear immediately after
  the other storage class specifier.
  
!  The â€˜__threadâ€™ specifier may be applied to any global, file-scoped
  static, function-scoped static, or static data member of a class.  It
  may not be applied to block-scoped automatic or non-static data member.
  
*************** File: gcc.info,  Node: C99 Thread-Local
*** 45042,45052 ****
  The following are a set of changes to ISO/IEC 9899:1999 (aka C99) that
  document the exact semantics of the language extension.
  
!    * '5.1.2 Execution environments'
  
       Add new text after paragraph 1
  
!           Within either execution environment, a "thread" is a flow of
            control within a program.  It is implementation defined
            whether or not there may be more than one thread associated
            with a program.  It is implementation defined how threads
--- 45050,45060 ----
  The following are a set of changes to ISO/IEC 9899:1999 (aka C99) that
  document the exact semantics of the language extension.
  
!    â€¢ â€˜5.1.2 Execution environmentsâ€™
  
       Add new text after paragraph 1
  
!           Within either execution environment, a â€œthreadâ€� is a flow of
            control within a program.  It is implementation defined
            whether or not there may be more than one thread associated
            with a program.  It is implementation defined how threads
*************** document the exact semantics of the lang
*** 45055,45091 ****
            terminated.  However, objects with thread storage duration
            shall be initialized before thread startup.
  
!    * '6.2.4 Storage durations of objects'
  
       Add new text before paragraph 3
  
            An object whose identifier is declared with the storage-class
!           specifier '__thread' has "thread storage duration".  Its
            lifetime is the entire execution of the thread, and its stored
            value is initialized only once, prior to thread startup.
  
!    * '6.4.1 Keywords'
  
!      Add '__thread'.
  
!    * '6.7.1 Storage-class specifiers'
  
!      Add '__thread' to the list of storage class specifiers in paragraph
       1.
  
       Change paragraph 2 to
  
!           With the exception of '__thread', at most one storage-class
!           specifier may be given [...].  The '__thread' specifier may be
!           used alone, or immediately following 'extern' or 'static'.
  
       Add new text after paragraph 6
  
            The declaration of an identifier for a variable that has block
!           scope that specifies '__thread' shall also specify either
!           'extern' or 'static'.
  
!           The '__thread' specifier shall be used only with variables.
  
  
  File: gcc.info,  Node: C++98 Thread-Local Edits,  Prev: C99 Thread-Local Edits,  Up: Thread-Local
--- 45063,45099 ----
            terminated.  However, objects with thread storage duration
            shall be initialized before thread startup.
  
!    â€¢ â€˜6.2.4 Storage durations of objectsâ€™
  
       Add new text before paragraph 3
  
            An object whose identifier is declared with the storage-class
!           specifier â€˜__threadâ€™ has â€œthread storage durationâ€�.  Its
            lifetime is the entire execution of the thread, and its stored
            value is initialized only once, prior to thread startup.
  
!    â€¢ â€˜6.4.1 Keywordsâ€™
  
!      Add â€˜__threadâ€™.
  
!    â€¢ â€˜6.7.1 Storage-class specifiersâ€™
  
!      Add â€˜__threadâ€™ to the list of storage class specifiers in paragraph
       1.
  
       Change paragraph 2 to
  
!           With the exception of â€˜__threadâ€™, at most one storage-class
!           specifier may be given [...].  The â€˜__threadâ€™ specifier may be
!           used alone, or immediately following â€˜externâ€™ or â€˜staticâ€™.
  
       Add new text after paragraph 6
  
            The declaration of an identifier for a variable that has block
!           scope that specifies â€˜__threadâ€™ shall also specify either
!           â€˜externâ€™ or â€˜staticâ€™.
  
!           The â€˜__threadâ€™ specifier shall be used only with variables.
  
  
  File: gcc.info,  Node: C++98 Thread-Local Edits,  Prev: C99 Thread-Local Edits,  Up: Thread-Local
*************** File: gcc.info,  Node: C++98 Thread-Loca
*** 45096,45106 ****
  The following are a set of changes to ISO/IEC 14882:1998 (aka C++98)
  that document the exact semantics of the language extension.
  
!    * [intro.execution]
  
       New text after paragraph 4
  
!           A "thread" is a flow of control within the abstract machine.
            It is implementation defined whether or not there may be more
            than one thread.
  
--- 45104,45114 ----
  The following are a set of changes to ISO/IEC 14882:1998 (aka C++98)
  that document the exact semantics of the language extension.
  
!    â€¢ [intro.execution]
  
       New text after paragraph 4
  
!           A â€œthreadâ€� is a flow of control within the abstract machine.
            It is implementation defined whether or not there may be more
            than one thread.
  
*************** that document the exact semantics of the
*** 45110,45133 ****
            ensure when and whether side effects are visible to other
            threads.
  
!    * [lex.key]
  
!      Add '__thread'.
  
!    * [basic.start.main]
  
       Add after paragraph 5
  
!           The thread that begins execution at the 'main' function is
!           called the "main thread".  It is implementation defined how
            functions beginning threads other than the main thread are
            designated or typed.  A function so designated, as well as the
!           'main' function, is called a "thread startup function".  It is
            implementation defined what happens if a thread startup
            function returns.  It is implementation defined what happens
!           to other threads when any thread calls 'exit'.
  
!    * [basic.start.init]
  
       Add after paragraph 4
  
--- 45118,45141 ----
            ensure when and whether side effects are visible to other
            threads.
  
!    â€¢ [lex.key]
  
!      Add â€˜__threadâ€™.
  
!    â€¢ [basic.start.main]
  
       Add after paragraph 5
  
!           The thread that begins execution at the â€˜mainâ€™ function is
!           called the â€œmain threadâ€�.  It is implementation defined how
            functions beginning threads other than the main thread are
            designated or typed.  A function so designated, as well as the
!           â€˜mainâ€™ function, is called a â€œthread startup functionâ€�.  It is
            implementation defined what happens if a thread startup
            function returns.  It is implementation defined what happens
!           to other threads when any thread calls â€˜exitâ€™.
  
!    â€¢ [basic.start.init]
  
       Add after paragraph 4
  
*************** that document the exact semantics of the
*** 45136,45142 ****
            thread startup function.  An object of thread storage duration
            shall not require dynamic initialization.
  
!    * [basic.start.term]
  
       Add after paragraph 3
  
--- 45144,45150 ----
            thread startup function.  An object of thread storage duration
            shall not require dynamic initialization.
  
!    â€¢ [basic.start.term]
  
       Add after paragraph 3
  
*************** that document the exact semantics of the
*** 45145,45151 ****
            whose elements (directly or indirectly) have non-trivial
            destructors.
  
!    * [basic.stc]
  
       Add "thread storage duration" to the list in paragraph 1.
  
--- 45153,45159 ----
            whose elements (directly or indirectly) have non-trivial
            destructors.
  
!    â€¢ [basic.stc]
  
       Add "thread storage duration" to the list in paragraph 1.
  
*************** that document the exact semantics of the
*** 45154,45201 ****
            Thread, static, and automatic storage durations are associated
            with objects introduced by declarations [...].
  
!      Add '__thread' to the list of specifiers in paragraph 3.
  
!    * [basic.stc.thread]
  
       New section before [basic.stc.static]
  
!           The keyword '__thread' applied to a non-local object gives the
            object thread storage duration.
  
!           A local variable or class data member declared both 'static'
!           and '__thread' gives the variable or member thread storage
            duration.
  
!    * [basic.stc.static]
  
       Change paragraph 1
  
            All objects that have neither thread storage duration, dynamic
            storage duration nor are local [...].
  
!    * [dcl.stc]
  
!      Add '__thread' to the list in paragraph 1.
  
       Change paragraph 1
  
!           With the exception of '__thread', at most one
            STORAGE-CLASS-SPECIFIER shall appear in a given
!           DECL-SPECIFIER-SEQ.  The '__thread' specifier may be used
!           alone, or immediately following the 'extern' or 'static'
            specifiers.  [...]
  
       Add after paragraph 5
  
!           The '__thread' specifier can be applied only to the names of
            objects and to anonymous unions.
  
!    * [class.mem]
  
       Add after paragraph 6
  
!           Non-'static' members shall not be '__thread'.
  
  
  File: gcc.info,  Node: OpenMP,  Next: OpenACC,  Prev: Thread-Local,  Up: C Extensions
--- 45162,45209 ----
            Thread, static, and automatic storage durations are associated
            with objects introduced by declarations [...].
  
!      Add â€˜__threadâ€™ to the list of specifiers in paragraph 3.
  
!    â€¢ [basic.stc.thread]
  
       New section before [basic.stc.static]
  
!           The keyword â€˜__threadâ€™ applied to a non-local object gives the
            object thread storage duration.
  
!           A local variable or class data member declared both â€˜staticâ€™
!           and â€˜__threadâ€™ gives the variable or member thread storage
            duration.
  
!    â€¢ [basic.stc.static]
  
       Change paragraph 1
  
            All objects that have neither thread storage duration, dynamic
            storage duration nor are local [...].
  
!    â€¢ [dcl.stc]
  
!      Add â€˜__threadâ€™ to the list in paragraph 1.
  
       Change paragraph 1
  
!           With the exception of â€˜__threadâ€™, at most one
            STORAGE-CLASS-SPECIFIER shall appear in a given
!           DECL-SPECIFIER-SEQ.  The â€˜__threadâ€™ specifier may be used
!           alone, or immediately following the â€˜externâ€™ or â€˜staticâ€™
            specifiers.  [...]
  
       Add after paragraph 5
  
!           The â€˜__threadâ€™ specifier can be applied only to the names of
            objects and to anonymous unions.
  
!    â€¢ [class.mem]
  
       Add after paragraph 6
  
!           Non-â€˜staticâ€™ members shall not be â€˜__threadâ€™.
  
  
  File: gcc.info,  Node: OpenMP,  Next: OpenACC,  Prev: Thread-Local,  Up: C Extensions
*************** versions of the OpenMP specification.  *
*** 45216,45229 ****
  Implementation Status::, for more details about currently supported
  OpenMP features.
  
!  To enable the processing of OpenMP directives '#pragma omp',
! '[[omp::directive(...)]]', '[[omp::decl(...)]]', and
! '[[omp::sequence(...)]]' in C and C++, GCC needs to be invoked with the
! '-fopenmp' option.  This option also arranges for automatic linking of
  the OpenMP runtime library.  *Note (libgomp)Top::.
  
   *Note OpenMP and OpenACC Options::, for additional options useful with
! '-fopenmp'.
  
  
  File: gcc.info,  Node: OpenACC,  Next: Inline,  Prev: OpenMP,  Up: C Extensions
--- 45224,45237 ----
  Implementation Status::, for more details about currently supported
  OpenMP features.
  
!  To enable the processing of OpenMP directives â€˜#pragma ompâ€™,
! â€˜[[omp::directive(...)]]â€™, â€˜[[omp::decl(...)]]â€™, and
! â€˜[[omp::sequence(...)]]â€™ in C and C++, GCC needs to be invoked with the
! â€˜-fopenmpâ€™ option.  This option also arranges for automatic linking of
  the OpenMP runtime library.  *Note (libgomp)Top::.
  
   *Note OpenMP and OpenACC Options::, for additional options useful with
! â€˜-fopenmpâ€™.
  
  
  File: gcc.info,  Node: OpenACC,  Next: Inline,  Prev: OpenMP,  Up: C Extensions
*************** influence run-time behavior.
*** 45239,45251 ****
   GCC strives to be compatible with the OpenACC Application Programming
  Interface v2.6 (https://www.openacc.org/).
  
!  To enable the processing of OpenACC directives '#pragma acc' in C and
! C++, GCC needs to be invoked with the '-fopenacc' option.  This option
  also arranges for automatic linking of the OpenACC runtime library.
  *Note (libgomp)Top::.
  
   *Note OpenMP and OpenACC Options::, for additional options useful with
! '-fopenacc'.
  
  
  File: gcc.info,  Node: Inline,  Next: Volatiles,  Prev: OpenACC,  Up: C Extensions
--- 45247,45259 ----
   GCC strives to be compatible with the OpenACC Application Programming
  Interface v2.6 (https://www.openacc.org/).
  
!  To enable the processing of OpenACC directives â€˜#pragma accâ€™ in C and
! C++, GCC needs to be invoked with the â€˜-fopenaccâ€™ option.  This option
  also arranges for automatic linking of the OpenACC runtime library.
  *Note (libgomp)Top::.
  
   *Note OpenMP and OpenACC Options::, for additional options useful with
! â€˜-fopenaccâ€™.
  
  
  File: gcc.info,  Node: Inline,  Next: Volatiles,  Prev: OpenACC,  Up: C Extensions
*************** code needs to be included.  The effect o
*** 45263,45277 ****
  object code may be larger or smaller with function inlining, depending
  on the particular case.  You can also direct GCC to try to integrate all
  "simple enough" functions into their callers with the option
! '-finline-functions'.
  
   GCC implements three different semantics of declaring a function
! inline.  One is available with '-std=gnu89' or '-fgnu89-inline' or when
! 'gnu_inline' attribute is present on all inline declarations, another
! when '-std=c99', '-std=gnu99' or an option for a later C version is used
! (without '-fgnu89-inline'), and the third is used when compiling C++.
  
!  To declare a function inline, use the 'inline' keyword in its
  declaration, like this:
  
       static inline int
--- 45271,45285 ----
  object code may be larger or smaller with function inlining, depending
  on the particular case.  You can also direct GCC to try to integrate all
  "simple enough" functions into their callers with the option
! â€˜-finline-functionsâ€™.
  
   GCC implements three different semantics of declaring a function
! inline.  One is available with â€˜-std=gnu89â€™ or â€˜-fgnu89-inlineâ€™ or when
! â€˜gnu_inlineâ€™ attribute is present on all inline declarations, another
! when â€˜-std=c99â€™, â€˜-std=gnu99â€™ or an option for a later C version is used
! (without â€˜-fgnu89-inlineâ€™), and the third is used when compiling C++.
  
!  To declare a function inline, use the â€˜inlineâ€™ keyword in its
  declaration, like this:
  
       static inline int
*************** declaration, like this:
*** 45281,45292 ****
       }
  
   If you are writing a header file to be included in ISO C90 programs,
! write '__inline__' instead of 'inline'.  *Note Alternate Keywords::.
  
   The three types of inlining behave similarly in two important cases:
! when the 'inline' keyword is used on a 'static' function, like the
  example above, and when a function is first declared without using the
! 'inline' keyword and then is defined with 'inline', like this:
  
       extern int inc (int *a);
       inline int
--- 45289,45300 ----
       }
  
   If you are writing a header file to be included in ISO C90 programs,
! write â€˜__inline__â€™ instead of â€˜inlineâ€™.  *Note Alternate Keywords::.
  
   The three types of inlining behave similarly in two important cases:
! when the â€˜inlineâ€™ keyword is used on a â€˜staticâ€™ function, like the
  example above, and when a function is first declared without using the
! â€˜inlineâ€™ keyword and then is defined with â€˜inlineâ€™, like this:
  
       extern int inc (int *a);
       inline int
*************** example above, and when a function is fi
*** 45296,45351 ****
       }
  
   In both of these common cases, the program behaves the same as if you
! had not used the 'inline' keyword, except for its speed.
  
!  When a function is both inline and 'static', if all calls to the
  function are integrated into the caller, and the function's address is
  never used, then the function's own assembler code is never referenced.
  In this case, GCC does not actually output assembler code for the
! function, unless you specify the option '-fkeep-inline-functions'.  If
  there is a nonintegrated call, then the function is compiled to
  assembler code as usual.  The function must also be compiled as usual if
  the program refers to its address, because that cannot be inlined.
  
   Note that certain usages in a function definition can make it
  unsuitable for inline substitution.  Among these usages are: variadic
! functions, use of 'alloca', use of computed goto (*note Labels as
  Values::), use of nonlocal goto, use of nested functions, use of
! 'setjmp', use of '__builtin_longjmp' and use of '__builtin_return' or
! '__builtin_apply_args'.  Using '-Winline' warns when a function marked
! 'inline' could not be substituted, and gives the reason for the failure.
  
   As required by ISO C++, GCC considers member functions defined within
  the body of a class to be marked inline even if they are not explicitly
! declared with the 'inline' keyword.  You can override this with
! '-fno-default-inline'; *note Options Controlling C++ Dialect: C++
  Dialect Options.
  
   GCC does not inline any functions when not optimizing unless you
! specify the 'always_inline' attribute for the function, like this:
  
       /* Prototype.  */
       inline void foo (const char) __attribute__((always_inline));
  
   The remainder of this section is specific to GNU C90 inlining.
  
!  When an inline function is not 'static', then the compiler must assume
  that there may be calls from other source files; since a global symbol
  can be defined only once in any program, the function must not be
  defined in the other source files, so the calls therein cannot be
! integrated.  Therefore, a non-'static' inline function is always
  compiled on its own in the usual fashion.
  
!  If you specify both 'inline' and 'extern' in the function definition,
  then the definition is used only for inlining.  In no case is the
  function compiled on its own, not even if you refer to its address
  explicitly.  Such an address becomes an external reference, as if you
  had only declared the function, and had not defined it.
  
!  This combination of 'inline' and 'extern' has almost the effect of a
  macro.  The way to use it is to put a function definition in a header
  file with these keywords, and put another copy of the definition
! (lacking 'inline' and 'extern') in a library file.  The definition in
  the header file causes most calls to the function to be inlined.  If any
  uses of the function remain, they refer to the single copy in the
  library.
--- 45304,45359 ----
       }
  
   In both of these common cases, the program behaves the same as if you
! had not used the â€˜inlineâ€™ keyword, except for its speed.
  
!  When a function is both inline and â€˜staticâ€™, if all calls to the
  function are integrated into the caller, and the function's address is
  never used, then the function's own assembler code is never referenced.
  In this case, GCC does not actually output assembler code for the
! function, unless you specify the option â€˜-fkeep-inline-functionsâ€™.  If
  there is a nonintegrated call, then the function is compiled to
  assembler code as usual.  The function must also be compiled as usual if
  the program refers to its address, because that cannot be inlined.
  
   Note that certain usages in a function definition can make it
  unsuitable for inline substitution.  Among these usages are: variadic
! functions, use of â€˜allocaâ€™, use of computed goto (*note Labels as
  Values::), use of nonlocal goto, use of nested functions, use of
! â€˜setjmpâ€™, use of â€˜__builtin_longjmpâ€™ and use of â€˜__builtin_returnâ€™ or
! â€˜__builtin_apply_argsâ€™.  Using â€˜-Winlineâ€™ warns when a function marked
! â€˜inlineâ€™ could not be substituted, and gives the reason for the failure.
  
   As required by ISO C++, GCC considers member functions defined within
  the body of a class to be marked inline even if they are not explicitly
! declared with the â€˜inlineâ€™ keyword.  You can override this with
! â€˜-fno-default-inlineâ€™; *note Options Controlling C++ Dialect: C++
  Dialect Options.
  
   GCC does not inline any functions when not optimizing unless you
! specify the â€˜always_inlineâ€™ attribute for the function, like this:
  
       /* Prototype.  */
       inline void foo (const char) __attribute__((always_inline));
  
   The remainder of this section is specific to GNU C90 inlining.
  
!  When an inline function is not â€˜staticâ€™, then the compiler must assume
  that there may be calls from other source files; since a global symbol
  can be defined only once in any program, the function must not be
  defined in the other source files, so the calls therein cannot be
! integrated.  Therefore, a non-â€˜staticâ€™ inline function is always
  compiled on its own in the usual fashion.
  
!  If you specify both â€˜inlineâ€™ and â€˜externâ€™ in the function definition,
  then the definition is used only for inlining.  In no case is the
  function compiled on its own, not even if you refer to its address
  explicitly.  Such an address becomes an external reference, as if you
  had only declared the function, and had not defined it.
  
!  This combination of â€˜inlineâ€™ and â€˜externâ€™ has almost the effect of a
  macro.  The way to use it is to put a function definition in a header
  file with these keywords, and put another copy of the definition
! (lacking â€˜inlineâ€™ and â€˜externâ€™) in a library file.  The definition in
  the header file causes most calls to the function to be inlined.  If any
  uses of the function remain, they refer to the single copy in the
  library.
*************** File: gcc.info,  Node: Using Assembly La
*** 45427,45454 ****
  6.11 How to Use Inline Assembly Language in C Code
  ==================================================
  
! The 'asm' keyword allows you to embed assembler instructions within C
! code.  GCC provides two forms of inline 'asm' statements.  A "basic
! 'asm'" statement is one with no operands (*note Basic Asm::), while an
! "extended 'asm'" statement (*note Extended Asm::) includes one or more
  operands.  The extended form is preferred for mixing C and assembly
  language within a function and can be used at top level as well with
  certain restrictions.
  
!  You can also use the 'asm' keyword to override the assembler name for a
  C symbol, or to place a C variable in a specific register.
  
  * Menu:
  
  * Basic Asm::          Inline assembler without operands.
  * Extended Asm::       Inline assembler with operands.
! * Constraints::        Constraints for 'asm' operands
  * Asm constexprs::     C++11 constant expressions instead of string
                         literals.
  * Asm Labels::         Specifying the assembler name to use for a C symbol.
  * Explicit Register Variables::  Defining variables residing in specified
                         registers.
! * Size of an asm::     How GCC calculates the size of an 'asm' block.
  
  
  File: gcc.info,  Node: Basic Asm,  Next: Extended Asm,  Up: Using Assembly Language with C
--- 45435,45462 ----
  6.11 How to Use Inline Assembly Language in C Code
  ==================================================
  
! The â€˜asmâ€™ keyword allows you to embed assembler instructions within C
! code.  GCC provides two forms of inline â€˜asmâ€™ statements.  A â€œbasic
! â€˜asmâ€™â€� statement is one with no operands (*note Basic Asm::), while an
! â€œextended â€˜asmâ€™â€� statement (*note Extended Asm::) includes one or more
  operands.  The extended form is preferred for mixing C and assembly
  language within a function and can be used at top level as well with
  certain restrictions.
  
!  You can also use the â€˜asmâ€™ keyword to override the assembler name for a
  C symbol, or to place a C variable in a specific register.
  
  * Menu:
  
  * Basic Asm::          Inline assembler without operands.
  * Extended Asm::       Inline assembler with operands.
! * Constraints::        Constraints for â€˜asmâ€™ operands
  * Asm constexprs::     C++11 constant expressions instead of string
                         literals.
  * Asm Labels::         Specifying the assembler name to use for a C symbol.
  * Explicit Register Variables::  Defining variables residing in specified
                         registers.
! * Size of an asm::     How GCC calculates the size of an â€˜asmâ€™ block.
  
  
  File: gcc.info,  Node: Basic Asm,  Next: Extended Asm,  Up: Using Assembly Language with C
*************** File: gcc.info,  Node: Basic Asm,  Next:
*** 45456,45482 ****
  6.11.1 Basic Asm -- Assembler Instructions Without Operands
  -----------------------------------------------------------
  
! A basic 'asm' statement has the following syntax:
  
       asm ASM-QUALIFIERS ( ASSEMBLERINSTRUCTIONS )
  
!  For the C language, the 'asm' keyword is a GNU extension.  When writing
! C code that can be compiled with '-ansi' and the '-std' options that
! select C dialects without GNU extensions, use '__asm__' instead of 'asm'
! (*note Alternate Keywords::).  For the C++ language, 'asm' is a standard
! keyword, but '__asm__' can be used for code compiled with '-fno-asm'.
  
  Qualifiers
  ..........
  
! 'volatile'
!      The optional 'volatile' qualifier has no effect.  All basic 'asm'
!      blocks are implicitly volatile.  Basic 'asm' statements outside of
       functions may not use any qualifiers.
  
! 'inline'
!      If you use the 'inline' qualifier, then for inlining purposes the
!      size of the 'asm' statement is taken as the smallest size possible
       (*note Size of an asm::).
  
  Parameters
--- 45464,45490 ----
  6.11.1 Basic Asm -- Assembler Instructions Without Operands
  -----------------------------------------------------------
  
! A basic â€˜asmâ€™ statement has the following syntax:
  
       asm ASM-QUALIFIERS ( ASSEMBLERINSTRUCTIONS )
  
!  For the C language, the â€˜asmâ€™ keyword is a GNU extension.  When writing
! C code that can be compiled with â€˜-ansiâ€™ and the â€˜-stdâ€™ options that
! select C dialects without GNU extensions, use â€˜__asm__â€™ instead of â€˜asmâ€™
! (*note Alternate Keywords::).  For the C++ language, â€˜asmâ€™ is a standard
! keyword, but â€˜__asm__â€™ can be used for code compiled with â€˜-fno-asmâ€™.
  
  Qualifiers
  ..........
  
! â€˜volatileâ€™
!      The optional â€˜volatileâ€™ qualifier has no effect.  All basic â€˜asmâ€™
!      blocks are implicitly volatile.  Basic â€˜asmâ€™ statements outside of
       functions may not use any qualifiers.
  
! â€˜inlineâ€™
!      If you use the â€˜inlineâ€™ qualifier, then for inlining purposes the
!      size of the â€˜asmâ€™ statement is taken as the smallest size possible
       (*note Size of an asm::).
  
  Parameters
*************** Parameters
*** 45484,45490 ****
  
  ASSEMBLERINSTRUCTIONS
       This is a literal string that specifies the assembler code.  In C++
!      with '-std=gnu++11' or later, it can also be a constant expression
       inside parentheses (see *note Asm constexprs::).
  
       The string can contain any instructions recognized by the
--- 45492,45498 ----
  
  ASSEMBLERINSTRUCTIONS
       This is a literal string that specifies the assembler code.  In C++
!      with â€˜-std=gnu++11â€™ or later, it can also be a constant expression
       inside parentheses (see *note Asm constexprs::).
  
       The string can contain any instructions recognized by the
*************** ASSEMBLERINSTRUCTIONS
*** 45493,45573 ****
       whether they are valid assembler input.
  
       You may place multiple assembler instructions together in a single
!      'asm' string, separated by the characters normally used in assembly
       code for the system.  A combination that works in most places is a
       newline to break the line, plus a tab character (written as
!      '\n\t').  Some assemblers allow semicolons as a line separator.
       However, note that some assembler dialects use semicolons to start
       a comment.
  
  Remarks
  .......
  
! Using extended 'asm' (*note Extended Asm::) typically produces smaller,
  safer, and more efficient code, and in most cases it is a better
! solution than basic 'asm'.  However, functions declared with the 'naked'
! attribute require only basic 'asm' (*note Function Attributes::).
  
!  Basic 'asm' statements may be used both inside a C function or at file
  scope ("top-level"), where you can use this technique to emit assembler
  directives, define assembly language macros that can be invoked
  elsewhere in the file, or write entire functions in assembly language.
  
!  Safely accessing C data and calling functions from basic 'asm' is more
  complex than it may appear.  To access C data, it is better to use
! extended 'asm'.
  
!  Do not expect a sequence of 'asm' statements to remain perfectly
  consecutive after compilation.  If certain instructions need to remain
! consecutive in the output, put them in a single multi-instruction 'asm'
! statement.  Note that GCC's optimizers can move 'asm' statements
  relative to other code, including across jumps.
  
!  'asm' statements may not perform jumps into other 'asm' statements.
  GCC does not know about these jumps, and therefore cannot take account
! of them when deciding how to optimize.  Jumps from 'asm' to C labels are
! only supported in extended 'asm'.
  
   Under certain circumstances, GCC may duplicate (or remove duplicates
  of) your assembly code when optimizing.  This can lead to unexpected
  duplicate symbol errors during compilation if your assembly code defines
  symbols or labels.
  
!  *Warning:* The C standards do not specify semantics for 'asm', making
  it a potential source of incompatibilities between compilers.  These
  incompatibilities may not produce compiler warnings/errors.
  
!  GCC does not parse basic 'asm''s ASSEMBLERINSTRUCTIONS, which means
  there is no way to communicate to the compiler what is happening inside
! them.  GCC has no visibility of symbols in the 'asm' and may discard
  them as unreferenced.  It also does not know about side effects of the
  assembler code, such as modifications to memory or registers.  Unlike
  some compilers, GCC assumes that no changes to general purpose registers
  occur.  This assumption may change in a future release.
  
   To avoid complications from future changes to the semantics and the
! compatibility issues between compilers, consider replacing basic 'asm'
! with extended 'asm'.  See How to convert from basic asm to extended asm
  (https://gcc.gnu.org/wiki/ConvertBasicAsmToExtended) for information
  about how to perform this conversion.
  
!  The compiler copies the assembler instructions in a basic 'asm'
  verbatim to the assembly language output file, without processing
! dialects or any of the '%' operators that are available with extended
! 'asm'.  This results in minor differences between basic 'asm' strings
! and extended 'asm' templates.  For example, to refer to registers you
! might use '%eax' in basic 'asm' and '%%eax' in extended 'asm'.
  
   On targets such as x86 that support multiple assembler dialects, all
! basic 'asm' blocks use the assembler dialect specified by the '-masm'
! command-line option (*note x86 Options::).  Basic 'asm' provides no
  mechanism to provide different assembler strings for different dialects.
  
!  For basic 'asm' with non-empty assembler string GCC assumes the
  assembler block does not change any general purpose registers, but it
  may read or write any globally accessible variable.
  
!  Here is an example of basic 'asm' for i386:
  
       /* Note that this code will not compile with -masm=intel */
       #define DebugBreak() asm("int $3")
--- 45501,45581 ----
       whether they are valid assembler input.
  
       You may place multiple assembler instructions together in a single
!      â€˜asmâ€™ string, separated by the characters normally used in assembly
       code for the system.  A combination that works in most places is a
       newline to break the line, plus a tab character (written as
!      â€˜\n\tâ€™).  Some assemblers allow semicolons as a line separator.
       However, note that some assembler dialects use semicolons to start
       a comment.
  
  Remarks
  .......
  
! Using extended â€˜asmâ€™ (*note Extended Asm::) typically produces smaller,
  safer, and more efficient code, and in most cases it is a better
! solution than basic â€˜asmâ€™.  However, functions declared with the â€˜nakedâ€™
! attribute require only basic â€˜asmâ€™ (*note Function Attributes::).
  
!  Basic â€˜asmâ€™ statements may be used both inside a C function or at file
  scope ("top-level"), where you can use this technique to emit assembler
  directives, define assembly language macros that can be invoked
  elsewhere in the file, or write entire functions in assembly language.
  
!  Safely accessing C data and calling functions from basic â€˜asmâ€™ is more
  complex than it may appear.  To access C data, it is better to use
! extended â€˜asmâ€™.
  
!  Do not expect a sequence of â€˜asmâ€™ statements to remain perfectly
  consecutive after compilation.  If certain instructions need to remain
! consecutive in the output, put them in a single multi-instruction â€˜asmâ€™
! statement.  Note that GCC's optimizers can move â€˜asmâ€™ statements
  relative to other code, including across jumps.
  
!  â€˜asmâ€™ statements may not perform jumps into other â€˜asmâ€™ statements.
  GCC does not know about these jumps, and therefore cannot take account
! of them when deciding how to optimize.  Jumps from â€˜asmâ€™ to C labels are
! only supported in extended â€˜asmâ€™.
  
   Under certain circumstances, GCC may duplicate (or remove duplicates
  of) your assembly code when optimizing.  This can lead to unexpected
  duplicate symbol errors during compilation if your assembly code defines
  symbols or labels.
  
!  *Warning:* The C standards do not specify semantics for â€˜asmâ€™, making
  it a potential source of incompatibilities between compilers.  These
  incompatibilities may not produce compiler warnings/errors.
  
!  GCC does not parse basic â€˜asmâ€™'s ASSEMBLERINSTRUCTIONS, which means
  there is no way to communicate to the compiler what is happening inside
! them.  GCC has no visibility of symbols in the â€˜asmâ€™ and may discard
  them as unreferenced.  It also does not know about side effects of the
  assembler code, such as modifications to memory or registers.  Unlike
  some compilers, GCC assumes that no changes to general purpose registers
  occur.  This assumption may change in a future release.
  
   To avoid complications from future changes to the semantics and the
! compatibility issues between compilers, consider replacing basic â€˜asmâ€™
! with extended â€˜asmâ€™.  See How to convert from basic asm to extended asm
  (https://gcc.gnu.org/wiki/ConvertBasicAsmToExtended) for information
  about how to perform this conversion.
  
!  The compiler copies the assembler instructions in a basic â€˜asmâ€™
  verbatim to the assembly language output file, without processing
! dialects or any of the â€˜%â€™ operators that are available with extended
! â€˜asmâ€™.  This results in minor differences between basic â€˜asmâ€™ strings
! and extended â€˜asmâ€™ templates.  For example, to refer to registers you
! might use â€˜%eaxâ€™ in basic â€˜asmâ€™ and â€˜%%eaxâ€™ in extended â€˜asmâ€™.
  
   On targets such as x86 that support multiple assembler dialects, all
! basic â€˜asmâ€™ blocks use the assembler dialect specified by the â€˜-masmâ€™
! command-line option (*note x86 Options::).  Basic â€˜asmâ€™ provides no
  mechanism to provide different assembler strings for different dialects.
  
!  For basic â€˜asmâ€™ with non-empty assembler string GCC assumes the
  assembler block does not change any general purpose registers, but it
  may read or write any globally accessible variable.
  
!  Here is an example of basic â€˜asmâ€™ for i386:
  
       /* Note that this code will not compile with -masm=intel */
       #define DebugBreak() asm("int $3")
*************** File: gcc.info,  Node: Extended Asm,  Ne
*** 45578,45586 ****
  6.11.2 Extended Asm - Assembler Instructions with C Expression Operands
  -----------------------------------------------------------------------
  
! With extended 'asm' you can read and write C variables from assembler
! and perform jumps from assembler code to C labels.  Extended 'asm'
! syntax uses colons (':') to delimit the operand parameters after the
  assembler template:
  
       asm ASM-QUALIFIERS ( ASSEMBLERTEMPLATE
--- 45586,45594 ----
  6.11.2 Extended Asm - Assembler Instructions with C Expression Operands
  -----------------------------------------------------------------------
  
! With extended â€˜asmâ€™ you can read and write C variables from assembler
! and perform jumps from assembler code to C labels.  Extended â€˜asmâ€™
! syntax uses colons (â€˜:â€™) to delimit the operand parameters after the
  assembler template:
  
       asm ASM-QUALIFIERS ( ASSEMBLERTEMPLATE
*************** assembler template:
*** 45593,45622 ****
                             : INPUTOPERANDS
                             : CLOBBERS
                             : GOTOLABELS)
!  where in the last form, ASM-QUALIFIERS contains 'goto' (and in the
  first form, not).
  
!  The 'asm' keyword is a GNU extension.  When writing code that can be
! compiled with '-ansi' and the various '-std' options, use '__asm__'
! instead of 'asm' (*note Alternate Keywords::).
  
  Qualifiers
  ..........
  
! 'volatile'
!      The typical use of extended 'asm' statements is to manipulate input
!      values to produce output values.  However, your 'asm' statements
       may also produce side effects.  If so, you may need to use the
!      'volatile' qualifier to disable certain optimizations.  *Note
       Volatile::.
  
! 'inline'
!      If you use the 'inline' qualifier, then for inlining purposes the
!      size of the 'asm' statement is taken as the smallest size possible
       (*note Size of an asm::).
  
! 'goto'
!      This qualifier informs the compiler that the 'asm' statement may
       perform a jump to one of the labels listed in the GOTOLABELS.
       *Note GotoLabels::.
  
--- 45601,45630 ----
                             : INPUTOPERANDS
                             : CLOBBERS
                             : GOTOLABELS)
!  where in the last form, ASM-QUALIFIERS contains â€˜gotoâ€™ (and in the
  first form, not).
  
!  The â€˜asmâ€™ keyword is a GNU extension.  When writing code that can be
! compiled with â€˜-ansiâ€™ and the various â€˜-stdâ€™ options, use â€˜__asm__â€™
! instead of â€˜asmâ€™ (*note Alternate Keywords::).
  
  Qualifiers
  ..........
  
! â€˜volatileâ€™
!      The typical use of extended â€˜asmâ€™ statements is to manipulate input
!      values to produce output values.  However, your â€˜asmâ€™ statements
       may also produce side effects.  If so, you may need to use the
!      â€˜volatileâ€™ qualifier to disable certain optimizations.  *Note
       Volatile::.
  
! â€˜inlineâ€™
!      If you use the â€˜inlineâ€™ qualifier, then for inlining purposes the
!      size of the â€˜asmâ€™ statement is taken as the smallest size possible
       (*note Size of an asm::).
  
! â€˜gotoâ€™
!      This qualifier informs the compiler that the â€˜asmâ€™ statement may
       perform a jump to one of the labels listed in the GOTOLABELS.
       *Note GotoLabels::.
  
*************** CLOBBERS
*** 45644,45654 ****
       is permitted.  *Note Clobbers and Scratch Registers::.
  
  GOTOLABELS
!      When you are using the 'goto' form of 'asm', this section contains
       the list of all C labels to which the code in the ASSEMBLERTEMPLATE
       may jump.  *Note GotoLabels::.
  
!      'asm' statements may not perform jumps into other 'asm' statements,
       only to the listed GOTOLABELS.  GCC's optimizers do not know about
       other jumps; therefore they cannot take account of them when
       deciding how to optimize.
--- 45652,45662 ----
       is permitted.  *Note Clobbers and Scratch Registers::.
  
  GOTOLABELS
!      When you are using the â€˜gotoâ€™ form of â€˜asmâ€™, this section contains
       the list of all C labels to which the code in the ASSEMBLERTEMPLATE
       may jump.  *Note GotoLabels::.
  
!      â€˜asmâ€™ statements may not perform jumps into other â€˜asmâ€™ statements,
       only to the listed GOTOLABELS.  GCC's optimizers do not know about
       other jumps; therefore they cannot take account of them when
       deciding how to optimize.
*************** GOTOLABELS
*** 45658,45684 ****
  Remarks
  .......
  
! The 'asm' statement allows you to include assembly instructions directly
  within C code.  This may help you to maximize performance in
  time-sensitive code or to access assembly instructions that are not
  readily available to C programs.
  
!  Similarly to basic 'asm', extended 'asm' statements may be used both
  inside a C function or at file scope ("top-level"), where you can use
  this technique to emit assembler directives, define assembly language
  macros that can be invoked elsewhere in the file, or write entire
! functions in assembly language.  Extended 'asm' statements outside of
  functions may not use any qualifiers, may not specify clobbers, may not
! use '%', '+' or '&' modifiers in constraints and can only use
  constraints which don't allow using any register.
  
!  Functions declared with the 'naked' attribute require basic 'asm'
  (*note Function Attributes::).
  
!  While the uses of 'asm' are many and varied, it may help to think of an
! 'asm' statement as a series of low-level instructions that convert input
  parameters to output parameters.  So a simple (if not particularly
! useful) example for i386 using 'asm' might look like this:
  
       int src = 1;
       int dst;
--- 45666,45692 ----
  Remarks
  .......
  
! The â€˜asmâ€™ statement allows you to include assembly instructions directly
  within C code.  This may help you to maximize performance in
  time-sensitive code or to access assembly instructions that are not
  readily available to C programs.
  
!  Similarly to basic â€˜asmâ€™, extended â€˜asmâ€™ statements may be used both
  inside a C function or at file scope ("top-level"), where you can use
  this technique to emit assembler directives, define assembly language
  macros that can be invoked elsewhere in the file, or write entire
! functions in assembly language.  Extended â€˜asmâ€™ statements outside of
  functions may not use any qualifiers, may not specify clobbers, may not
! use â€˜%â€™, â€˜+â€™ or â€˜&â€™ modifiers in constraints and can only use
  constraints which don't allow using any register.
  
!  Functions declared with the â€˜nakedâ€™ attribute require basic â€˜asmâ€™
  (*note Function Attributes::).
  
!  While the uses of â€˜asmâ€™ are many and varied, it may help to think of an
! â€˜asmâ€™ statement as a series of low-level instructions that convert input
  parameters to output parameters.  So a simple (if not particularly
! useful) example for i386 using â€˜asmâ€™ might look like this:
  
       int src = 1;
       int dst;
*************** useful) example for i386 using 'asm' mig
*** 45690,45714 ****
  
       printf("%d\n", dst);
  
!  This code copies 'src' to 'dst' and add 1 to 'dst'.
  
  6.11.2.1 Volatile
  .................
  
! GCC's optimizers sometimes discard 'asm' statements if they determine
  there is no need for the output variables.  Also, the optimizers may
  move code out of loops if they believe that the code will always return
  the same result (i.e. none of its input values change between calls).
! Using the 'volatile' qualifier disables these optimizations.  'asm'
! statements that have no output operands and 'asm goto' statements, are
  implicitly volatile.
  
   This i386 code demonstrates a case that does not use (or require) the
! 'volatile' qualifier.  If it is performing assertion checking, this code
! uses 'asm' to perform the validation.  Otherwise, 'dwRes' is
  unreferenced by any code.  As a result, the optimizers can discard the
! 'asm' statement, which in turn removes the need for the entire 'DoCheck'
! routine.  By omitting the 'volatile' qualifier when it isn't needed you
  allow the optimizers to produce the most efficient code possible.
  
       void DoCheck(uint32_t dwSomeValue)
--- 45698,45722 ----
  
       printf("%d\n", dst);
  
!  This code copies â€˜srcâ€™ to â€˜dstâ€™ and add 1 to â€˜dstâ€™.
  
  6.11.2.1 Volatile
  .................
  
! GCC's optimizers sometimes discard â€˜asmâ€™ statements if they determine
  there is no need for the output variables.  Also, the optimizers may
  move code out of loops if they believe that the code will always return
  the same result (i.e. none of its input values change between calls).
! Using the â€˜volatileâ€™ qualifier disables these optimizations.  â€˜asmâ€™
! statements that have no output operands and â€˜asm gotoâ€™ statements, are
  implicitly volatile.
  
   This i386 code demonstrates a case that does not use (or require) the
! â€˜volatileâ€™ qualifier.  If it is performing assertion checking, this code
! uses â€˜asmâ€™ to perform the validation.  Otherwise, â€˜dwResâ€™ is
  unreferenced by any code.  As a result, the optimizers can discard the
! â€˜asmâ€™ statement, which in turn removes the need for the entire â€˜DoCheckâ€™
! routine.  By omitting the â€˜volatileâ€™ qualifier when it isn't needed you
  allow the optimizers to produce the most efficient code possible.
  
       void DoCheck(uint32_t dwSomeValue)
*************** allow the optimizers to produce the most
*** 45725,45733 ****
       }
  
   The next example shows a case where the optimizers can recognize that
! the input ('dwSomeValue') never changes during the execution of the
! function and can therefore move the 'asm' outside the loop to produce
! more efficient code.  Again, using the 'volatile' qualifier disables
  this type of optimization.
  
       void do_print(uint32_t dwSomeValue)
--- 45733,45741 ----
       }
  
   The next example shows a case where the optimizers can recognize that
! the input (â€˜dwSomeValueâ€™) never changes during the execution of the
! function and can therefore move the â€˜asmâ€™ outside the loop to produce
! more efficient code.  Again, using the â€˜volatileâ€™ qualifier disables
  this type of optimization.
  
       void do_print(uint32_t dwSomeValue)
*************** this type of optimization.
*** 45747,45755 ****
       }
  
   The following example demonstrates a case where you need to use the
! 'volatile' qualifier.  It uses the x86 'rdtsc' instruction, which reads
! the computer's time-stamp counter.  Without the 'volatile' qualifier,
! the optimizers might assume that the 'asm' block will always return the
  same value and therefore optimize away the second call.
  
       uint64_t msr;
--- 45755,45763 ----
       }
  
   The following example demonstrates a case where you need to use the
! â€˜volatileâ€™ qualifier.  It uses the x86 â€˜rdtscâ€™ instruction, which reads
! the computer's time-stamp counter.  Without the â€˜volatileâ€™ qualifier,
! the optimizers might assume that the â€˜asmâ€™ block will always return the
  same value and therefore optimize away the second call.
  
       uint64_t msr;
*************** same value and therefore optimize away t
*** 45779,45812 ****
  the earlier examples.  They do not move it out of loops or omit it on
  the assumption that the result from a previous call is still valid.
  
!  Note that the compiler can move even 'volatile asm' instructions
  relative to other code, including across jump instructions.  For
  example, on many targets there is a system register that controls the
! rounding mode of floating-point operations.  Setting it with a 'volatile
! asm' statement, as in the following PowerPC example, does not work
  reliably.
  
       asm volatile("mtfsf 255, %0" : : "f" (fpenv));
       sum = x + y;
  
!  The compiler may move the addition back before the 'volatile asm'
  statement.  To make it work as expected, add an artificial dependency to
! the 'asm' by referencing a variable in the subsequent code, for example:
  
       asm volatile ("mtfsf 255,%1" : "=X" (sum) : "f" (fpenv));
       sum = x + y;
  
   Under certain circumstances, GCC may duplicate (or remove duplicates
  of) your assembly code when optimizing.  This can lead to unexpected
! duplicate symbol errors during compilation if your 'asm' code defines
! symbols or labels.  Using '%=' (*note AssemblerTemplate::) may help
  resolve this problem.
  
  6.11.2.2 Assembler Template
  ...........................
  
  An assembler template is a literal string containing assembler
! instructions.  In C++ with '-std=gnu++11' or later, the assembler
  template can also be a constant expression inside parentheses (see *note
  Asm constexprs::).
  
--- 45787,45820 ----
  the earlier examples.  They do not move it out of loops or omit it on
  the assumption that the result from a previous call is still valid.
  
!  Note that the compiler can move even â€˜volatile asmâ€™ instructions
  relative to other code, including across jump instructions.  For
  example, on many targets there is a system register that controls the
! rounding mode of floating-point operations.  Setting it with a â€˜volatile
! asmâ€™ statement, as in the following PowerPC example, does not work
  reliably.
  
       asm volatile("mtfsf 255, %0" : : "f" (fpenv));
       sum = x + y;
  
!  The compiler may move the addition back before the â€˜volatile asmâ€™
  statement.  To make it work as expected, add an artificial dependency to
! the â€˜asmâ€™ by referencing a variable in the subsequent code, for example:
  
       asm volatile ("mtfsf 255,%1" : "=X" (sum) : "f" (fpenv));
       sum = x + y;
  
   Under certain circumstances, GCC may duplicate (or remove duplicates
  of) your assembly code when optimizing.  This can lead to unexpected
! duplicate symbol errors during compilation if your â€˜asmâ€™ code defines
! symbols or labels.  Using â€˜%=â€™ (*note AssemblerTemplate::) may help
  resolve this problem.
  
  6.11.2.2 Assembler Template
  ...........................
  
  An assembler template is a literal string containing assembler
! instructions.  In C++ with â€˜-std=gnu++11â€™ or later, the assembler
  template can also be a constant expression inside parentheses (see *note
  Asm constexprs::).
  
*************** they are valid assembler input.  However
*** 45819,45835 ****
  (*note Size of an asm::).
  
   You may place multiple assembler instructions together in a single
! 'asm' string, separated by the characters normally used in assembly code
  for the system.  A combination that works in most places is a newline to
  break the line, plus a tab character to move to the instruction field
! (written as '\n\t').  Some assemblers allow semicolons as a line
  separator.  However, note that some assembler dialects use semicolons to
  start a comment.
  
!  Do not expect a sequence of 'asm' statements to remain perfectly
! consecutive after compilation, even when you are using the 'volatile'
  qualifier.  If certain instructions need to remain consecutive in the
! output, put them in a single multi-instruction 'asm' statement.
  
   Accessing data from C programs without using input/output operands
  (such as by using global symbols directly from the assembler template)
--- 45827,45843 ----
  (*note Size of an asm::).
  
   You may place multiple assembler instructions together in a single
! â€˜asmâ€™ string, separated by the characters normally used in assembly code
  for the system.  A combination that works in most places is a newline to
  break the line, plus a tab character to move to the instruction field
! (written as â€˜\n\tâ€™).  Some assemblers allow semicolons as a line
  separator.  However, note that some assembler dialects use semicolons to
  start a comment.
  
!  Do not expect a sequence of â€˜asmâ€™ statements to remain perfectly
! consecutive after compilation, even when you are using the â€˜volatileâ€™
  qualifier.  If certain instructions need to remain consecutive in the
! output, put them in a single multi-instruction â€˜asmâ€™ statement.
  
   Accessing data from C programs without using input/output operands
  (such as by using global symbols directly from the assembler template)
*************** Special format strings
*** 45848,45876 ****
  In addition to the tokens described by the input, output, and goto
  operands, these tokens have special meanings in the assembler template:
  
! '%%'
!      Outputs a single '%' into the assembler code.
  
! '%='
!      Outputs a number that is unique to each instance of the 'asm'
       statement in the entire compilation.  This option is useful when
       creating local labels and referring to them multiple times in a
       single template that generates multiple assembler instructions.
  
! '%{'
! '%|'
! '%}'
!      Outputs '{', '|', and '}' characters (respectively) into the
       assembler code.  When unescaped, these characters have special
       meaning to indicate multiple assembler dialects, as described
       below.
  
! Multiple assembler dialects in 'asm' templates
  ..............................................
  
  On targets such as x86, GCC supports multiple assembler dialects.  The
! '-masm' option controls which dialect GCC uses as its default for inline
! assembler.  The target-specific documentation for the '-masm' option
  contains the list of supported dialects, as well as the default dialect
  if the option is not specified.  This information may be important to
  understand, since assembler code that works correctly when compiled
--- 45856,45884 ----
  In addition to the tokens described by the input, output, and goto
  operands, these tokens have special meanings in the assembler template:
  
! â€˜%%â€™
!      Outputs a single â€˜%â€™ into the assembler code.
  
! â€˜%=â€™
!      Outputs a number that is unique to each instance of the â€˜asmâ€™
       statement in the entire compilation.  This option is useful when
       creating local labels and referring to them multiple times in a
       single template that generates multiple assembler instructions.
  
! â€˜%{â€™
! â€˜%|â€™
! â€˜%}â€™
!      Outputs â€˜{â€™, â€˜|â€™, and â€˜}â€™ characters (respectively) into the
       assembler code.  When unescaped, these characters have special
       meaning to indicate multiple assembler dialects, as described
       below.
  
! Multiple assembler dialects in â€˜asmâ€™ templates
  ..............................................
  
  On targets such as x86, GCC supports multiple assembler dialects.  The
! â€˜-masmâ€™ option controls which dialect GCC uses as its default for inline
! assembler.  The target-specific documentation for the â€˜-masmâ€™ option
  contains the list of supported dialects, as well as the default dialect
  if the option is not specified.  This information may be important to
  understand, since assembler code that works correctly when compiled
*************** compilation options), use constructs of
*** 45883,45894 ****
  
       { dialect0 | dialect1 | dialect2... }
  
!  This construct outputs 'dialect0' when using dialect #0 to compile the
! code, 'dialect1' for dialect #1, etc.  If there are fewer alternatives
  within the braces than the number of dialects the compiler supports, the
  construct outputs nothing.
  
!  For example, if an x86 compiler supports two dialects ('att', 'intel'),
  an assembler template such as this:
  
       "bt{l %[Offset],%[Base] | %[Base],%[Offset]}; jc %l2"
--- 45891,45902 ----
  
       { dialect0 | dialect1 | dialect2... }
  
!  This construct outputs â€˜dialect0â€™ when using dialect #0 to compile the
! code, â€˜dialect1â€™ for dialect #1, etc.  If there are fewer alternatives
  within the braces than the number of dialects the compiler supports, the
  construct outputs nothing.
  
!  For example, if an x86 compiler supports two dialects (â€˜attâ€™, â€˜intelâ€™),
  an assembler template such as this:
  
       "bt{l %[Offset],%[Base] | %[Base],%[Offset]}; jc %l2"
*************** corresponds to either
*** 45912,45922 ****
  6.11.2.3 Output Operands
  ........................
  
! An 'asm' statement has zero or more output operands indicating the names
  of C variables modified by the assembler code.
  
!  In this i386 example, 'old' (referred to in the template string as
! '%0') and '*Base' (as '%1') are outputs and 'Offset' ('%2') is an input:
  
       bool old;
  
--- 45920,45930 ----
  6.11.2.3 Output Operands
  ........................
  
! An â€˜asmâ€™ statement has zero or more output operands indicating the names
  of C variables modified by the assembler code.
  
!  In this i386 example, â€˜oldâ€™ (referred to in the template string as
! â€˜%0â€™) and â€˜*Baseâ€™ (as â€˜%1â€™) are outputs and â€˜Offsetâ€™ (â€˜%2â€™) is an input:
  
       bool old;
  
*************** of C variables modified by the assembler
*** 45934,45971 ****
  
  ASMSYMBOLICNAME
       Specifies an optional symbolic name for the operand.  The literal
!      square brackets '[]' around the ASMSYMBOLICNAME are required both
       in the operand specification and references to the operand in the
!      assembler template, i.e. '%[Value]'.  The scope of the name is the
!      'asm' statement that contains the definition.  Any valid C
       identifier is acceptable, including names already defined in the
!      surrounding code.  No two operands within the same 'asm' statement
       can use the same symbolic name.
  
       When not using an ASMSYMBOLICNAME, use the (zero-based) position of
       the operand in the list of operands in the assembler template.  For
!      example if there are three output operands, use '%0' in the
!      template to refer to the first, '%1' for the second, and '%2' for
       the third.
  
  CONSTRAINT
       A string constant specifying constraints on the placement of the
       operand; *Note Constraints::, for details.  In C++ with
!      '-std=gnu++11' or later, the constraint can also be a constant
       expression inside parentheses (see *note Asm constexprs::).
  
!      Output constraints must begin with either '=' (a variable
!      overwriting an existing value) or '+' (when reading and writing).
!      When using '=', do not assume the location contains the existing
!      value on entry to the 'asm', except when the operand is tied to an
       input; *note Input Operands: InputOperands.
  
       After the prefix, there must be one or more additional constraints
       (*note Constraints::) that describe where the value resides.
!      Common constraints include 'r' for register and 'm' for memory.
       When you list more than one possible location (for example,
!      '"=rm"'), the compiler chooses the most efficient one based on the
!      current context.  If you list as many alternates as the 'asm'
       statement allows, you permit the optimizers to produce the best
       possible code.  If you must use a specific register, but your
       Machine Constraints do not provide sufficient control to select the
--- 45942,45979 ----
  
  ASMSYMBOLICNAME
       Specifies an optional symbolic name for the operand.  The literal
!      square brackets â€˜[]â€™ around the ASMSYMBOLICNAME are required both
       in the operand specification and references to the operand in the
!      assembler template, i.e. â€˜%[Value]â€™.  The scope of the name is the
!      â€˜asmâ€™ statement that contains the definition.  Any valid C
       identifier is acceptable, including names already defined in the
!      surrounding code.  No two operands within the same â€˜asmâ€™ statement
       can use the same symbolic name.
  
       When not using an ASMSYMBOLICNAME, use the (zero-based) position of
       the operand in the list of operands in the assembler template.  For
!      example if there are three output operands, use â€˜%0â€™ in the
!      template to refer to the first, â€˜%1â€™ for the second, and â€˜%2â€™ for
       the third.
  
  CONSTRAINT
       A string constant specifying constraints on the placement of the
       operand; *Note Constraints::, for details.  In C++ with
!      â€˜-std=gnu++11â€™ or later, the constraint can also be a constant
       expression inside parentheses (see *note Asm constexprs::).
  
!      Output constraints must begin with either â€˜=â€™ (a variable
!      overwriting an existing value) or â€˜+â€™ (when reading and writing).
!      When using â€˜=â€™, do not assume the location contains the existing
!      value on entry to the â€˜asmâ€™, except when the operand is tied to an
       input; *note Input Operands: InputOperands.
  
       After the prefix, there must be one or more additional constraints
       (*note Constraints::) that describe where the value resides.
!      Common constraints include â€˜râ€™ for register and â€˜mâ€™ for memory.
       When you list more than one possible location (for example,
!      â€˜"=rm"â€™), the compiler chooses the most efficient one based on the
!      current context.  If you list as many alternates as the â€˜asmâ€™
       statement allows, you permit the optimizers to produce the best
       possible code.  If you must use a specific register, but your
       Machine Constraints do not provide sufficient control to select the
*************** whether the operands have data types tha
*** 45986,45998 ****
  instruction being executed.  For output expressions that are not
  directly addressable (for example a bit-field), the constraint must
  allow a register.  In that case, GCC uses the register as the output of
! the 'asm', and then stores that register into the output.
  
!  Operands using the '+' constraint modifier count as two operands (that
  is, both as input and output) towards the total maximum of 30 operands
! per 'asm' statement.
  
!  Use the '&' constraint modifier (*note Modifiers::) on all output
  operands that must not overlap an input.  Otherwise, GCC may allocate
  the output operand in the same register as an unrelated input operand,
  on the assumption that the assembler code consumes its inputs before
--- 45994,46006 ----
  instruction being executed.  For output expressions that are not
  directly addressable (for example a bit-field), the constraint must
  allow a register.  In that case, GCC uses the register as the output of
! the â€˜asmâ€™, and then stores that register into the output.
  
!  Operands using the â€˜+â€™ constraint modifier count as two operands (that
  is, both as input and output) towards the total maximum of 30 operands
! per â€˜asmâ€™ statement.
  
!  Use the â€˜&â€™ constraint modifier (*note Modifiers::) on all output
  operands that must not overlap an input.  Otherwise, GCC may allocate
  the output operand in the same register as an unrelated input operand,
  on the assumption that the assembler code consumes its inputs before
*************** constraint.  The code generated by GCC t
*** 46005,46033 ****
  can contain registers which _might_ be shared by A, and GCC considers
  those registers to be inputs to the asm.  As above, GCC assumes that
  such input registers are consumed before any outputs are written.  This
! assumption may result in incorrect behavior if the 'asm' statement
! writes to A before using B.  Combining the '&' modifier with the
  register constraint on A ensures that modifying A does not affect the
  address referenced by B.  Otherwise, the location of B is undefined if A
  is modified before using B.
  
!  'asm' supports operand modifiers on operands (for example '%k2' instead
! of simply '%2').  *note Generic Operand modifiers:
  GenericOperandmodifiers. lists the modifiers that are available on all
  targets.  Other modifiers are hardware dependent.  For example, the list
  of supported modifiers for x86 is found at *note x86 Operand modifiers:
  x86Operandmodifiers.
  
!  If the C code that follows the 'asm' makes no use of any of the output
! operands, use 'volatile' for the 'asm' statement to prevent the
! optimizers from discarding the 'asm' statement as unneeded (see *note
  Volatile::).
  
   This code makes no use of the optional ASMSYMBOLICNAME.  Therefore it
! references the first output operand as '%0' (were there a second, it
! would be '%1', etc).  The number of the first input operand is one
  greater than that of the last output operand.  In this i386 example,
! that makes 'Mask' referenced as '%1':
  
       uint32_t Mask = 1234;
       uint32_t Index;
--- 46013,46041 ----
  can contain registers which _might_ be shared by A, and GCC considers
  those registers to be inputs to the asm.  As above, GCC assumes that
  such input registers are consumed before any outputs are written.  This
! assumption may result in incorrect behavior if the â€˜asmâ€™ statement
! writes to A before using B.  Combining the â€˜&â€™ modifier with the
  register constraint on A ensures that modifying A does not affect the
  address referenced by B.  Otherwise, the location of B is undefined if A
  is modified before using B.
  
!  â€˜asmâ€™ supports operand modifiers on operands (for example â€˜%k2â€™ instead
! of simply â€˜%2â€™).  *note Generic Operand modifiers:
  GenericOperandmodifiers. lists the modifiers that are available on all
  targets.  Other modifiers are hardware dependent.  For example, the list
  of supported modifiers for x86 is found at *note x86 Operand modifiers:
  x86Operandmodifiers.
  
!  If the C code that follows the â€˜asmâ€™ makes no use of any of the output
! operands, use â€˜volatileâ€™ for the â€˜asmâ€™ statement to prevent the
! optimizers from discarding the â€˜asmâ€™ statement as unneeded (see *note
  Volatile::).
  
   This code makes no use of the optional ASMSYMBOLICNAME.  Therefore it
! references the first output operand as â€˜%0â€™ (were there a second, it
! would be â€˜%1â€™, etc).  The number of the first input operand is one
  greater than that of the last output operand.  In this i386 example,
! that makes â€˜Maskâ€™ referenced as â€˜%1â€™:
  
       uint32_t Mask = 1234;
       uint32_t Index;
*************** that makes 'Mask' referenced as '%1':
*** 46037,46044 ****
            : "r" (Mask)
            : "cc");
  
!  That code overwrites the variable 'Index' ('='), placing the value in a
! register ('r').  Using the generic 'r' constraint instead of a
  constraint for a specific register allows the compiler to pick the
  register to use, which can result in more efficient code.  This may not
  be possible if an assembler instruction requires a specific register.
--- 46045,46052 ----
            : "r" (Mask)
            : "cc");
  
!  That code overwrites the variable â€˜Indexâ€™ (â€˜=â€™), placing the value in a
! register (â€˜râ€™).  Using the generic â€˜râ€™ constraint instead of a
  constraint for a specific register allows the compiler to pick the
  register to use, which can result in more efficient code.  This may not
  be possible if an assembler instruction requires a specific register.
*************** be possible if an assembler instruction
*** 46046,46054 ****
   The following i386 example uses the ASMSYMBOLICNAME syntax.  It
  produces the same result as the code above, but some may consider it
  more readable or more maintainable since reordering index numbers is not
! necessary when adding or removing operands.  The names 'aIndex' and
! 'aMask' are only used in this example to emphasize which names get used
! where.  It is acceptable to reuse the names 'Index' and 'Mask'.
  
       uint32_t Mask = 1234;
       uint32_t Index;
--- 46054,46062 ----
   The following i386 example uses the ASMSYMBOLICNAME syntax.  It
  produces the same result as the code above, but some may consider it
  more readable or more maintainable since reordering index numbers is not
! necessary when adding or removing operands.  The names â€˜aIndexâ€™ and
! â€˜aMaskâ€™ are only used in this example to emphasize which names get used
! where.  It is acceptable to reuse the names â€˜Indexâ€™ and â€˜Maskâ€™.
  
       uint32_t Mask = 1234;
       uint32_t Index;
*************** where.  It is acceptable to reuse the na
*** 46068,46084 ****
          : [d] "=rm" (d)
          : [e] "rm" (*e));
  
!  Here, 'd' may either be in a register or in memory.  Since the compiler
! might already have the current value of the 'uint32_t' location pointed
! to by 'e' in a register, you can enable it to choose the best location
! for 'd' by specifying both constraints.
  
  6.11.2.4 Flag Output Operands
  .............................
  
  Some targets have a special register that holds the "flags" for the
  result of an operation or comparison.  Normally, the contents of that
! register are either unmodified by the asm, or the 'asm' statement is
  considered to clobber the contents.
  
   On some targets, a special form of output operand exists by which
--- 46076,46092 ----
          : [d] "=rm" (d)
          : [e] "rm" (*e));
  
!  Here, â€˜dâ€™ may either be in a register or in memory.  Since the compiler
! might already have the current value of the â€˜uint32_tâ€™ location pointed
! to by â€˜eâ€™ in a register, you can enable it to choose the best location
! for â€˜dâ€™ by specifying both constraints.
  
  6.11.2.4 Flag Output Operands
  .............................
  
  Some targets have a special register that holds the "flags" for the
  result of an operation or comparison.  Normally, the contents of that
! register are either unmodified by the asm, or the â€˜asmâ€™ statement is
  considered to clobber the contents.
  
   On some targets, a special form of output operand exists by which
*************** conditions in the flags register may be
*** 46086,46191 ****
  conditions supported are target specific, but the general rule is that
  the output variable must be a scalar integer, and the value is boolean.
  When supported, the target defines the preprocessor symbol
! '__GCC_ASM_FLAG_OUTPUTS__'.
  
   Because of the special nature of the flag output operands, the
  constraint may not include alternatives.
  
   Most often, the target has only one flags register, and thus is an
  implied operand of many instructions.  In this case, the operand should
! not be referenced within the assembler template via '%0' etc, as there's
  no corresponding text in the assembly language.
  
  ARM
  AArch64
       The flag output constraints for the ARM family are of the form
!      '=@ccCOND' where COND is one of the standard conditions defined in
!      the ARM ARM for 'ConditionHolds'.
  
!      'eq'
            Z flag set, or equal
!      'ne'
            Z flag clear or not equal
!      'cs'
!      'hs'
            C flag set or unsigned greater than equal
!      'cc'
!      'lo'
            C flag clear or unsigned less than
!      'mi'
            N flag set or "minus"
!      'pl'
            N flag clear or "plus"
!      'vs'
            V flag set or signed overflow
!      'vc'
            V flag clear
!      'hi'
            unsigned greater than
!      'ls'
            unsigned less than equal
!      'ge'
            signed greater than equal
!      'lt'
            signed less than
!      'gt'
            signed greater than
!      'le'
            signed less than equal
  
       The flag output constraints are not supported in thumb1 mode.
  
  x86 family
       The flag output constraints for the x86 family are of the form
!      '=@ccCOND' where COND is one of the standard conditions defined in
!      the ISA manual for 'jCC' or 'setCC'.
  
!      'a'
            "above" or unsigned greater than
!      'ae'
            "above or equal" or unsigned greater than or equal
!      'b'
            "below" or unsigned less than
!      'be'
            "below or equal" or unsigned less than or equal
!      'c'
            carry flag set
!      'e'
!      'z'
            "equal" or zero flag set
!      'g'
            signed greater than
!      'ge'
            signed greater than or equal
!      'l'
            signed less than
!      'le'
            signed less than or equal
!      'o'
            overflow flag set
!      'p'
            parity flag set
!      's'
            sign flag set
!      'na'
!      'nae'
!      'nb'
!      'nbe'
!      'nc'
!      'ne'
!      'ng'
!      'nge'
!      'nl'
!      'nle'
!      'no'
!      'np'
!      'ns'
!      'nz'
            "not" FLAG, or inverted versions of those above
  
  s390
!      The flag output constraint for s390 is '=@cc'.  Only one such
!      constraint is allowed.  The variable has to be stored in a 'int'
       variable.
  
  6.11.2.5 Input Operands
--- 46094,46199 ----
  conditions supported are target specific, but the general rule is that
  the output variable must be a scalar integer, and the value is boolean.
  When supported, the target defines the preprocessor symbol
! â€˜__GCC_ASM_FLAG_OUTPUTS__â€™.
  
   Because of the special nature of the flag output operands, the
  constraint may not include alternatives.
  
   Most often, the target has only one flags register, and thus is an
  implied operand of many instructions.  In this case, the operand should
! not be referenced within the assembler template via â€˜%0â€™ etc, as there's
  no corresponding text in the assembly language.
  
  ARM
  AArch64
       The flag output constraints for the ARM family are of the form
!      â€˜=@ccCONDâ€™ where COND is one of the standard conditions defined in
!      the ARM ARM for â€˜ConditionHoldsâ€™.
  
!      â€˜eqâ€™
            Z flag set, or equal
!      â€˜neâ€™
            Z flag clear or not equal
!      â€˜csâ€™
!      â€˜hsâ€™
            C flag set or unsigned greater than equal
!      â€˜ccâ€™
!      â€˜loâ€™
            C flag clear or unsigned less than
!      â€˜miâ€™
            N flag set or "minus"
!      â€˜plâ€™
            N flag clear or "plus"
!      â€˜vsâ€™
            V flag set or signed overflow
!      â€˜vcâ€™
            V flag clear
!      â€˜hiâ€™
            unsigned greater than
!      â€˜lsâ€™
            unsigned less than equal
!      â€˜geâ€™
            signed greater than equal
!      â€˜ltâ€™
            signed less than
!      â€˜gtâ€™
            signed greater than
!      â€˜leâ€™
            signed less than equal
  
       The flag output constraints are not supported in thumb1 mode.
  
  x86 family
       The flag output constraints for the x86 family are of the form
!      â€˜=@ccCONDâ€™ where COND is one of the standard conditions defined in
!      the ISA manual for â€˜jCCâ€™ or â€˜setCCâ€™.
  
!      â€˜aâ€™
            "above" or unsigned greater than
!      â€˜aeâ€™
            "above or equal" or unsigned greater than or equal
!      â€˜bâ€™
            "below" or unsigned less than
!      â€˜beâ€™
            "below or equal" or unsigned less than or equal
!      â€˜câ€™
            carry flag set
!      â€˜eâ€™
!      â€˜zâ€™
            "equal" or zero flag set
!      â€˜gâ€™
            signed greater than
!      â€˜geâ€™
            signed greater than or equal
!      â€˜lâ€™
            signed less than
!      â€˜leâ€™
            signed less than or equal
!      â€˜oâ€™
            overflow flag set
!      â€˜pâ€™
            parity flag set
!      â€˜sâ€™
            sign flag set
!      â€˜naâ€™
!      â€˜naeâ€™
!      â€˜nbâ€™
!      â€˜nbeâ€™
!      â€˜ncâ€™
!      â€˜neâ€™
!      â€˜ngâ€™
!      â€˜ngeâ€™
!      â€˜nlâ€™
!      â€˜nleâ€™
!      â€˜noâ€™
!      â€˜npâ€™
!      â€˜nsâ€™
!      â€˜nzâ€™
            "not" FLAG, or inverted versions of those above
  
  s390
!      The flag output constraint for s390 is â€˜=@ccâ€™.  Only one such
!      constraint is allowed.  The variable has to be stored in a â€˜intâ€™
       variable.
  
  6.11.2.5 Input Operands
*************** the assembly code.
*** 46200,46242 ****
  
  ASMSYMBOLICNAME
       Specifies an optional symbolic name for the operand.  The literal
!      square brackets '[]' around the ASMSYMBOLICNAME are required both
       in the operand specification and references to the operand in the
!      assembler template, i.e. '%[Value]'.  The scope of the name is the
!      'asm' statement that contains the definition.  Any valid C
       identifier is acceptable, including names already defined in the
!      surrounding code.  No two operands within the same 'asm' statement
       can use the same symbolic name.
  
       When not using an ASMSYMBOLICNAME, use the (zero-based) position of
       the operand in the list of operands in the assembler template.  For
!      example if there are two output operands and three inputs, use '%2'
!      in the template to refer to the first input operand, '%3' for the
!      second, and '%4' for the third.
  
  CONSTRAINT
       A string constant specifying constraints on the placement of the
       operand; *Note Constraints::, for details.  In C++ with
!      '-std=gnu++11' or later, the constraint can also be a constant
       expression inside parentheses (see *note Asm constexprs::).
  
!      Input constraint strings may not begin with either '=' or '+'.
       When you list more than one possible location (for example,
!      '"irm"'), the compiler chooses the most efficient one based on the
       current context.  If you must use a specific register, but your
       Machine Constraints do not provide sufficient control to select the
       specific register you want, local register variables may provide a
       solution (*note Local Register Variables::).
  
!      Input constraints can also be digits (for example, '"0"').  This
       indicates that the specified input must be in the same place as the
       output constraint at the (zero-based) index in the output
       constraint list.  When using ASMSYMBOLICNAME syntax for the output
!      operands, you may use these names (enclosed in brackets '[]')
       instead of digits.
  
  CEXPRESSION
!      This is the C variable or expression being passed to the 'asm'
       statement as input.  The enclosing parentheses are a required part
       of the syntax.
  
--- 46208,46250 ----
  
  ASMSYMBOLICNAME
       Specifies an optional symbolic name for the operand.  The literal
!      square brackets â€˜[]â€™ around the ASMSYMBOLICNAME are required both
       in the operand specification and references to the operand in the
!      assembler template, i.e. â€˜%[Value]â€™.  The scope of the name is the
!      â€˜asmâ€™ statement that contains the definition.  Any valid C
       identifier is acceptable, including names already defined in the
!      surrounding code.  No two operands within the same â€˜asmâ€™ statement
       can use the same symbolic name.
  
       When not using an ASMSYMBOLICNAME, use the (zero-based) position of
       the operand in the list of operands in the assembler template.  For
!      example if there are two output operands and three inputs, use â€˜%2â€™
!      in the template to refer to the first input operand, â€˜%3â€™ for the
!      second, and â€˜%4â€™ for the third.
  
  CONSTRAINT
       A string constant specifying constraints on the placement of the
       operand; *Note Constraints::, for details.  In C++ with
!      â€˜-std=gnu++11â€™ or later, the constraint can also be a constant
       expression inside parentheses (see *note Asm constexprs::).
  
!      Input constraint strings may not begin with either â€˜=â€™ or â€˜+â€™.
       When you list more than one possible location (for example,
!      â€˜"irm"â€™), the compiler chooses the most efficient one based on the
       current context.  If you must use a specific register, but your
       Machine Constraints do not provide sufficient control to select the
       specific register you want, local register variables may provide a
       solution (*note Local Register Variables::).
  
!      Input constraints can also be digits (for example, â€˜"0"â€™).  This
       indicates that the specified input must be in the same place as the
       output constraint at the (zero-based) index in the output
       constraint list.  When using ASMSYMBOLICNAME syntax for the output
!      operands, you may use these names (enclosed in brackets â€˜[]â€™)
       instead of digits.
  
  CEXPRESSION
!      This is the C variable or expression being passed to the â€˜asmâ€™
       statement as input.  The enclosing parentheses are a required part
       of the syntax.
  
*************** consecutive colons where the output oper
*** 46253,46281 ****
  
   *Warning:* Do _not_ modify the contents of input-only operands (except
  for inputs tied to outputs).  The compiler assumes that on exit from the
! 'asm' statement these operands contain the same values as they had
  before executing the statement.  It is _not_ possible to use clobbers to
  inform the compiler that the values in these inputs are changing.  One
  common work-around is to tie the changing input variable to an output
  variable that never gets used.  Note, however, that if the code that
! follows the 'asm' statement makes no use of any of the output operands,
! the GCC optimizers may discard the 'asm' statement as unneeded (see
  *note Volatile::).
  
!  'asm' supports operand modifiers on operands (for example '%k2' instead
! of simply '%2').  *note Generic Operand modifiers:
  GenericOperandmodifiers. lists the modifiers that are available on all
  targets.  Other modifiers are hardware dependent.  For example, the list
  of supported modifiers for x86 is found at *note x86 Operand modifiers:
  x86Operandmodifiers.
  
!  In this example using the fictitious 'combine' instruction, the
! constraint '"0"' for input operand 1 says that it must occupy the same
  location as output operand 0.  Only input operands may use numbers in
  constraints, and they must each refer to an output operand.  Only a
  number (or the symbolic assembler name) in the constraint can guarantee
  that one operand is in the same place as another.  The mere fact that
! 'foo' is the value of both operands is not enough to guarantee that they
  are in the same place in the generated assembler code.
  
       asm ("combine %2, %0"
--- 46261,46289 ----
  
   *Warning:* Do _not_ modify the contents of input-only operands (except
  for inputs tied to outputs).  The compiler assumes that on exit from the
! â€˜asmâ€™ statement these operands contain the same values as they had
  before executing the statement.  It is _not_ possible to use clobbers to
  inform the compiler that the values in these inputs are changing.  One
  common work-around is to tie the changing input variable to an output
  variable that never gets used.  Note, however, that if the code that
! follows the â€˜asmâ€™ statement makes no use of any of the output operands,
! the GCC optimizers may discard the â€˜asmâ€™ statement as unneeded (see
  *note Volatile::).
  
!  â€˜asmâ€™ supports operand modifiers on operands (for example â€˜%k2â€™ instead
! of simply â€˜%2â€™).  *note Generic Operand modifiers:
  GenericOperandmodifiers. lists the modifiers that are available on all
  targets.  Other modifiers are hardware dependent.  For example, the list
  of supported modifiers for x86 is found at *note x86 Operand modifiers:
  x86Operandmodifiers.
  
!  In this example using the fictitious â€˜combineâ€™ instruction, the
! constraint â€˜"0"â€™ for input operand 1 says that it must occupy the same
  location as output operand 0.  Only input operands may use numbers in
  constraints, and they must each refer to an output operand.  Only a
  number (or the symbolic assembler name) in the constraint can guarantee
  that one operand is in the same place as another.  The mere fact that
! â€˜fooâ€™ is the value of both operands is not enough to guarantee that they
  are in the same place in the generated assembler code.
  
       asm ("combine %2, %0"
*************** are in the same place in the generated a
*** 46292,46305 ****
  .......................................
  
  While the compiler is aware of changes to entries listed in the output
! operands, the inline 'asm' code may modify more than just the outputs.
  For example, calculations may require additional registers, or the
  processor may overwrite a register as a side effect of a particular
  assembler instruction.  In order to inform the compiler of these
  changes, list them in the clobber list.  Clobber list items are either
  register names or the special clobbers (listed below).  Each clobber
  list item is a string constant enclosed in double quotes and separated
! by commas.  In C++ with '-std=gnu++11' or later, a clobber list item can
  also be a constant expression inside parentheses (see *note Asm
  constexprs::).
  
--- 46300,46313 ----
  .......................................
  
  While the compiler is aware of changes to entries listed in the output
! operands, the inline â€˜asmâ€™ code may modify more than just the outputs.
  For example, calculations may require additional registers, or the
  processor may overwrite a register as a side effect of a particular
  assembler instruction.  In order to inform the compiler of these
  changes, list them in the clobber list.  Clobber list items are either
  register names or the special clobbers (listed below).  Each clobber
  list item is a string constant enclosed in double quotes and separated
! by commas.  In C++ with â€˜-std=gnu++11â€™ or later, a clobber list item can
  also be a constant expression inside parentheses (see *note Asm
  constexprs::).
  
*************** constexprs::).
*** 46307,46313 ****
  operand.  For example, you may not have an operand describing a register
  class with one member when listing that register in the clobber list.
  Variables declared to live in specific registers (*note Explicit
! Register Variables::) and used as 'asm' input or output operands must
  have no part mentioned in the clobber description.  In particular, there
  is no way to specify that input operands get modified without also
  specifying them as output operands.
--- 46315,46321 ----
  operand.  For example, you may not have an operand describing a register
  class with one member when listing that register in the clobber list.
  Variables declared to live in specific registers (*note Explicit
! Register Variables::) and used as â€˜asmâ€™ input or output operands must
  have no part mentioned in the clobber description.  In particular, there
  is no way to specify that input operands get modified without also
  specifying them as output operands.
*************** code.
*** 46319,46325 ****
  
   Another restriction is that the clobber list should not contain the
  stack pointer register.  This is because the compiler requires the value
! of the stack pointer to be the same after an 'asm' statement as it was
  on entry to the statement.  However, previous versions of GCC did not
  enforce this rule and allowed the stack pointer to appear in the list,
  with unclear semantics.  This behavior is deprecated and listing the
--- 46327,46333 ----
  
   Another restriction is that the clobber list should not contain the
  stack pointer register.  This is because the compiler requires the value
! of the stack pointer to be the same after an â€˜asmâ€™ statement as it was
  on entry to the statement.  However, previous versions of GCC did not
  enforce this rule and allowed the stack pointer to appear in the list,
  with unclear semantics.  This behavior is deprecated and listing the
*************** registers:
*** 46335,46366 ****
  
   Also, there are three special clobber arguments:
  
! '"cc"'
!      The '"cc"' clobber indicates that the assembler code modifies the
       flags register.  On some machines, GCC represents the condition
!      codes as a specific hardware register; '"cc"' serves to name this
       register.  On other machines, condition code handling is different,
!      and specifying '"cc"' has no effect.  But it is valid no matter
       what the target.
  
! '"memory"'
!      The '"memory"' clobber tells the compiler that the assembly code
       performs memory reads or writes to items other than those listed in
       the input and output operands (for example, accessing the memory
       pointed to by one of the input parameters).  To ensure memory
       contains correct values, GCC may need to flush specific register
!      values to memory before executing the 'asm'.  Further, the compiler
!      does not assume that any values read from memory before an 'asm'
!      remain unchanged after that 'asm'; it reloads them as needed.
!      Using the '"memory"' clobber effectively forms a read/write memory
       barrier for the compiler.
  
       Note that this clobber does not prevent the _processor_ from doing
!      speculative reads past the 'asm' statement.  To prevent that, you
       need processor-specific fence instructions.
  
! '"redzone"'
!      The '"redzone"' clobber tells the compiler that the assembly code
       may write to the stack red zone, area below the stack pointer which
       on some architectures in some calling conventions is guaranteed not
       to be changed by signal handlers, interrupts or exceptions and so
--- 46343,46374 ----
  
   Also, there are three special clobber arguments:
  
! â€˜"cc"â€™
!      The â€˜"cc"â€™ clobber indicates that the assembler code modifies the
       flags register.  On some machines, GCC represents the condition
!      codes as a specific hardware register; â€˜"cc"â€™ serves to name this
       register.  On other machines, condition code handling is different,
!      and specifying â€˜"cc"â€™ has no effect.  But it is valid no matter
       what the target.
  
! â€˜"memory"â€™
!      The â€˜"memory"â€™ clobber tells the compiler that the assembly code
       performs memory reads or writes to items other than those listed in
       the input and output operands (for example, accessing the memory
       pointed to by one of the input parameters).  To ensure memory
       contains correct values, GCC may need to flush specific register
!      values to memory before executing the â€˜asmâ€™.  Further, the compiler
!      does not assume that any values read from memory before an â€˜asmâ€™
!      remain unchanged after that â€˜asmâ€™; it reloads them as needed.
!      Using the â€˜"memory"â€™ clobber effectively forms a read/write memory
       barrier for the compiler.
  
       Note that this clobber does not prevent the _processor_ from doing
!      speculative reads past the â€˜asmâ€™ statement.  To prevent that, you
       need processor-specific fence instructions.
  
! â€˜"redzone"â€™
!      The â€˜"redzone"â€™ clobber tells the compiler that the assembly code
       may write to the stack red zone, area below the stack pointer which
       on some architectures in some calling conventions is guaranteed not
       to be changed by signal handlers, interrupts or exceptions and so
*************** flushed.
*** 46379,46400 ****
  
   Here is a fictitious sum of squares instruction, that takes two
  pointers to floating point values in memory and produces a floating
! point register output.  Notice that 'x', and 'y' both appear twice in
! the 'asm' parameters, once to specify memory accessed, and once to
! specify a base register used by the 'asm'.  You won't normally be
  wasting a register by doing this as GCC can use the same register for
! both purposes.  However, it would be foolish to use both '%1' and '%3'
! for 'x' in this 'asm' and expect them to be the same.  In fact, '%3' may
  well not be a register.  It might be a symbolic memory reference to the
! object pointed to by 'x'.
  
       asm ("sumsq %0, %1, %2"
            : "+f" (result)
            : "r" (x), "r" (y), "m" (*x), "m" (*y));
  
!  Here is a fictitious '*z++ = *x++ * *y++' instruction.  Notice that the
! 'x', 'y' and 'z' pointer registers must be specified as input/output
! because the 'asm' modifies them.
  
       asm ("vecmul %0, %1, %2"
            : "+r" (z), "+r" (x), "+r" (y), "=m" (*z)
--- 46387,46408 ----
  
   Here is a fictitious sum of squares instruction, that takes two
  pointers to floating point values in memory and produces a floating
! point register output.  Notice that â€˜xâ€™, and â€˜yâ€™ both appear twice in
! the â€˜asmâ€™ parameters, once to specify memory accessed, and once to
! specify a base register used by the â€˜asmâ€™.  You won't normally be
  wasting a register by doing this as GCC can use the same register for
! both purposes.  However, it would be foolish to use both â€˜%1â€™ and â€˜%3â€™
! for â€˜xâ€™ in this â€˜asmâ€™ and expect them to be the same.  In fact, â€˜%3â€™ may
  well not be a register.  It might be a symbolic memory reference to the
! object pointed to by â€˜xâ€™.
  
       asm ("sumsq %0, %1, %2"
            : "+f" (result)
            : "r" (x), "r" (y), "m" (*x), "m" (*y));
  
!  Here is a fictitious â€˜*z++ = *x++ * *y++â€™ instruction.  Notice that the
! â€˜xâ€™, â€˜yâ€™ and â€˜zâ€™ pointer registers must be specified as input/output
! because the â€˜asmâ€™ modifies them.
  
       asm ("vecmul %0, %1, %2"
            : "+r" (z), "+r" (x), "+r" (y), "=m" (*z)
*************** because the 'asm' modifies them.
*** 46407,46417 ****
           : "m" (*(const char (*)[]) p), "0" (-1), "a" (0));
  
   If you know the above will only be reading a ten byte array then you
! could instead use a memory input like: '"m" (*(const char (*)[10]) p)'.
  
   Here is an example of a PowerPC vector scale implemented in assembly,
  complete with vector and condition code clobbers, and some initialized
! offset registers that are unchanged by the 'asm'.
  
       void
       dscal (size_t n, double *x, double alpha)
--- 46415,46425 ----
           : "m" (*(const char (*)[]) p), "0" (-1), "a" (0));
  
   If you know the above will only be reading a ten byte array then you
! could instead use a memory input like: â€˜"m" (*(const char (*)[10]) p)â€™.
  
   Here is an example of a PowerPC vector scale implemented in assembly,
  complete with vector and condition code clobbers, and some initialized
! offset registers that are unchanged by the â€˜asmâ€™.
  
       void
       dscal (size_t n, double *x, double alpha)
*************** offset registers that are unchanged by t
*** 46426,46456 ****
       }
  
   Rather than allocating fixed registers via clobbers to provide scratch
! registers for an 'asm' statement, an alternative is to define a variable
! and make it an early-clobber output as with 'a2' and 'a3' in the example
  below.  This gives the compiler register allocator more freedom.  You
  can also define a variable and make it an output tied to an input as
! with 'a0' and 'a1', tied respectively to 'ap' and 'lda'.  Of course,
! with tied outputs your 'asm' can't use the input value after modifying
  the output register since they are one and the same register.  What's
  more, if you omit the early-clobber on the output, it is possible that
  GCC might allocate the same register to another of the inputs if GCC
! could prove they had the same value on entry to the 'asm'.  This is why
! 'a1' has an early-clobber.  Its tied input, 'lda' might conceivably be
  known to have the value 16 and without an early-clobber share the same
! register as '%11'.  On the other hand, 'ap' can't be the same as any of
! the other inputs, so an early-clobber on 'a0' is not needed.  It is also
! not desirable in this case.  An early-clobber on 'a0' would cause GCC to
! allocate a separate register for the '"m" (*(const double (*)[]) ap)'
  input.  Note that tying an input to an output is the way to set up an
! initialized temporary register modified by an 'asm' statement.  An input
  not tied to an output is assumed by GCC to be unchanged, for example
! '"b" (16)' below sets up '%11' to 16, and GCC might use that register in
  following code if the value 16 happened to be needed.  You can even use
! a normal 'asm' output for a scratch if all inputs that might share the
  same register are consumed before the scratch is used.  The VSX
! registers clobbered by the 'asm' statement could have used this
! technique except for GCC's limit on the number of 'asm' parameters.
  
       static void
       dgemv_kernel_4x4 (long n, const double *ap, long lda,
--- 46434,46464 ----
       }
  
   Rather than allocating fixed registers via clobbers to provide scratch
! registers for an â€˜asmâ€™ statement, an alternative is to define a variable
! and make it an early-clobber output as with â€˜a2â€™ and â€˜a3â€™ in the example
  below.  This gives the compiler register allocator more freedom.  You
  can also define a variable and make it an output tied to an input as
! with â€˜a0â€™ and â€˜a1â€™, tied respectively to â€˜apâ€™ and â€˜ldaâ€™.  Of course,
! with tied outputs your â€˜asmâ€™ can't use the input value after modifying
  the output register since they are one and the same register.  What's
  more, if you omit the early-clobber on the output, it is possible that
  GCC might allocate the same register to another of the inputs if GCC
! could prove they had the same value on entry to the â€˜asmâ€™.  This is why
! â€˜a1â€™ has an early-clobber.  Its tied input, â€˜ldaâ€™ might conceivably be
  known to have the value 16 and without an early-clobber share the same
! register as â€˜%11â€™.  On the other hand, â€˜apâ€™ can't be the same as any of
! the other inputs, so an early-clobber on â€˜a0â€™ is not needed.  It is also
! not desirable in this case.  An early-clobber on â€˜a0â€™ would cause GCC to
! allocate a separate register for the â€˜"m" (*(const double (*)[]) ap)â€™
  input.  Note that tying an input to an output is the way to set up an
! initialized temporary register modified by an â€˜asmâ€™ statement.  An input
  not tied to an output is assumed by GCC to be unchanged, for example
! â€˜"b" (16)â€™ below sets up â€˜%11â€™ to 16, and GCC might use that register in
  following code if the value 16 happened to be needed.  You can even use
! a normal â€˜asmâ€™ output for a scratch if all inputs that might share the
  same register are consumed before the scratch is used.  The VSX
! registers clobbered by the â€˜asmâ€™ statement could have used this
! technique except for GCC's limit on the number of â€˜asmâ€™ parameters.
  
       static void
       dgemv_kernel_4x4 (long n, const double *ap, long lda,
*************** technique except for GCC's limit on the
*** 46492,46537 ****
  6.11.2.7 Goto Labels
  ....................
  
! 'asm goto' allows assembly code to jump to one or more C labels.  The
! GOTOLABELS section in an 'asm goto' statement contains a comma-separated
  list of all C labels to which the assembler code may jump.  GCC assumes
! that 'asm' execution falls through to the next statement (if this is not
! the case, consider using the '__builtin_unreachable' intrinsic after the
! 'asm' statement).  Optimization of 'asm goto' may be improved by using
! the 'hot' and 'cold' label attributes (*note Label Attributes::).
  
!  If the assembler code does modify anything, use the '"memory"' clobber
  to force the optimizers to flush all register values to memory and
! reload them if necessary after the 'asm' statement.
  
!  Also note that an 'asm goto' statement is always implicitly considered
  volatile.
  
!  Be careful when you set output operands inside 'asm goto' only on some
  possible control flow paths.  If you don't set up the output on given
  path and never use it on this path, it is okay.  Otherwise, you should
! use '+' constraint modifier meaning that the operand is input and output
  one.  With this modifier you will have the correct values on all
! possible paths from the 'asm goto'.
  
!  To reference a label in the assembler template, prefix it with '%l'
! (lowercase 'L') followed by its (zero-based) position in GOTOLABELS plus
  the number of input and output operands.  Output operand with constraint
! modifier '+' is counted as two operands because it is considered as one
! output and one input operand.  For example, if the 'asm' has three
! inputs, one output operand with constraint modifier '+' and one output
! operand with constraint modifier '=' and references two labels, refer to
! the first label as '%l6' and the second as '%l7').
  
   Alternately, you can reference labels using the actual C label name
! enclosed in brackets.  For example, to reference a label named 'carry',
! you can use '%l[carry]'.  The label must still be listed in the
  GOTOLABELS section when using this approach.  It is better to use the
  named references for labels as in this case you can avoid counting input
  and output operands and special treatment of output operands with
! constraint modifier '+'.
  
!  Here is an example of 'asm goto' for i386:
  
       asm goto (
           "btl %1, %0\n\t"
--- 46500,46545 ----
  6.11.2.7 Goto Labels
  ....................
  
! â€˜asm gotoâ€™ allows assembly code to jump to one or more C labels.  The
! GOTOLABELS section in an â€˜asm gotoâ€™ statement contains a comma-separated
  list of all C labels to which the assembler code may jump.  GCC assumes
! that â€˜asmâ€™ execution falls through to the next statement (if this is not
! the case, consider using the â€˜__builtin_unreachableâ€™ intrinsic after the
! â€˜asmâ€™ statement).  Optimization of â€˜asm gotoâ€™ may be improved by using
! the â€˜hotâ€™ and â€˜coldâ€™ label attributes (*note Label Attributes::).
  
!  If the assembler code does modify anything, use the â€˜"memory"â€™ clobber
  to force the optimizers to flush all register values to memory and
! reload them if necessary after the â€˜asmâ€™ statement.
  
!  Also note that an â€˜asm gotoâ€™ statement is always implicitly considered
  volatile.
  
!  Be careful when you set output operands inside â€˜asm gotoâ€™ only on some
  possible control flow paths.  If you don't set up the output on given
  path and never use it on this path, it is okay.  Otherwise, you should
! use â€˜+â€™ constraint modifier meaning that the operand is input and output
  one.  With this modifier you will have the correct values on all
! possible paths from the â€˜asm gotoâ€™.
  
!  To reference a label in the assembler template, prefix it with â€˜%lâ€™
! (lowercase â€˜Lâ€™) followed by its (zero-based) position in GOTOLABELS plus
  the number of input and output operands.  Output operand with constraint
! modifier â€˜+â€™ is counted as two operands because it is considered as one
! output and one input operand.  For example, if the â€˜asmâ€™ has three
! inputs, one output operand with constraint modifier â€˜+â€™ and one output
! operand with constraint modifier â€˜=â€™ and references two labels, refer to
! the first label as â€˜%l6â€™ and the second as â€˜%l7â€™).
  
   Alternately, you can reference labels using the actual C label name
! enclosed in brackets.  For example, to reference a label named â€˜carryâ€™,
! you can use â€˜%l[carry]â€™.  The label must still be listed in the
  GOTOLABELS section when using this approach.  It is better to use the
  named references for labels as in this case you can avoid counting input
  and output operands and special treatment of output operands with
! constraint modifier â€˜+â€™.
  
!  Here is an example of â€˜asm gotoâ€™ for i386:
  
       asm goto (
           "btl %1, %0\n\t"
*************** constraint modifier '+'.
*** 46546,46552 ****
       carry:
       return 1;
  
!  The following example shows an 'asm goto' that uses a memory clobber.
  
       int frob(int x)
       {
--- 46554,46560 ----
       carry:
       return 1;
  
!  The following example shows an â€˜asm gotoâ€™ that uses a memory clobber.
  
       int frob(int x)
       {
*************** constraint modifier '+'.
*** 46561,46567 ****
         return -1;
       }
  
!  The following example shows an 'asm goto' that uses an output.
  
       int foo(int count)
       {
--- 46569,46575 ----
         return -1;
       }
  
!  The following example shows an â€˜asm gotoâ€™ that uses an output.
  
       int foo(int count)
       {
*************** constraint modifier '+'.
*** 46575,46584 ****
         return 0;
       }
  
!  The following artificial example shows an 'asm goto' that sets up an
! output only on one path inside the 'asm goto'.  Usage of constraint
! modifier '=' instead of '+' would be wrong as 'factor' is used on all
! paths from the 'asm goto'.
  
       int foo(int inp)
       {
--- 46583,46592 ----
         return 0;
       }
  
!  The following artificial example shows an â€˜asm gotoâ€™ that sets up an
! output only on one path inside the â€˜asm gotoâ€™.  Usage of constraint
! modifier â€˜=â€™ instead of â€˜+â€™ would be wrong as â€˜factorâ€™ is used on all
! paths from the â€˜asm gotoâ€™.
  
       int foo(int inp)
       {
*************** their effects:
*** 46600,46620 ****
  
  Modifier    Description                                        Example
  ---------------------------------------------------------------------------
! 'c'         Require a constant operand and print the           '%c0'
              constant expression with no punctuation.
! 'cc'        Like '%c' except try harder to print it with no    '%cc0'
!             punctuation.  '%c' can e.g. fail to print
              constant addresses in position independent code
              on some architectures.
! 'n'         Like '%c' except that the value of the constant    '%n0'
              is negated before printing.
! 'a'         Substitute a memory reference, with the actual     '%a0'
              operand treated as the address.  This may be
              useful when outputting a "load address"
              instruction, because often the assembler syntax
              for such an instruction requires you to write
              the operand as if it were a memory reference.
! 'l'         Print the label name with no punctuation.          '%l0'
  
  6.11.2.9 AArch64 Operand Modifiers
  ..................................
--- 46608,46628 ----
  
  Modifier    Description                                        Example
  ---------------------------------------------------------------------------
! â€˜câ€™         Require a constant operand and print the           â€˜%c0â€™
              constant expression with no punctuation.
! â€˜ccâ€™        Like â€˜%câ€™ except try harder to print it with no    â€˜%cc0â€™
!             punctuation.  â€˜%câ€™ can e.g. fail to print
              constant addresses in position independent code
              on some architectures.
! â€˜nâ€™         Like â€˜%câ€™ except that the value of the constant    â€˜%n0â€™
              is negated before printing.
! â€˜aâ€™         Substitute a memory reference, with the actual     â€˜%a0â€™
              operand treated as the address.  This may be
              useful when outputting a "load address"
              instruction, because often the assembler syntax
              for such an instruction requires you to write
              the operand as if it were a memory reference.
! â€˜lâ€™         Print the label name with no punctuation.          â€˜%l0â€™
  
  6.11.2.9 AArch64 Operand Modifiers
  ..................................
*************** effects:
*** 46624,46652 ****
  
  ModifierDescription
  --------------------------------------------------------------------------
! 'w'     Print a 32-bit general-purpose register name or, given a
!         constant zero operand, the 32-bit zero register ('wzr').
! 'x'     Print a 64-bit general-purpose register name or, given a
!         constant zero operand, the 64-bit zero register ('xzr').
! 'b'     Print an FP/SIMD register name with a 'b' (byte, 8-bit) prefix.
! 'h'     Print an FP/SIMD register name with an 'h' (halfword, 16-bit)
          prefix.
! 's'     Print an FP/SIMD register name with an 's' (single word,
          32-bit) prefix.
! 'd'     Print an FP/SIMD register name with a 'd' (doubleword, 64-bit)
          prefix.
! 'q'     Print an FP/SIMD register name with a 'q' (quadword, 128-bit)
          prefix.
! 'Z'     Print an FP/SIMD register name as an SVE register (i.e.  with a
!         'z' prefix).  This is a no-op for SVE register operands.
  
  6.11.2.10 x86 Operand Modifiers
  ...............................
  
  References to input, output, and goto operands in the assembler template
! of extended 'asm' statements can use modifiers to affect the way the
  operands are formatted in the code output to the assembler.  For
! example, the following code uses the 'h' and 'b' modifiers for x86:
  
       uint16_t  num;
       asm volatile ("xchg %h0, %b0" : "+a" (num) );
--- 46632,46660 ----
  
  ModifierDescription
  --------------------------------------------------------------------------
! â€˜wâ€™     Print a 32-bit general-purpose register name or, given a
!         constant zero operand, the 32-bit zero register (â€˜wzrâ€™).
! â€˜xâ€™     Print a 64-bit general-purpose register name or, given a
!         constant zero operand, the 64-bit zero register (â€˜xzrâ€™).
! â€˜bâ€™     Print an FP/SIMD register name with a â€˜bâ€™ (byte, 8-bit) prefix.
! â€˜hâ€™     Print an FP/SIMD register name with an â€˜hâ€™ (halfword, 16-bit)
          prefix.
! â€˜sâ€™     Print an FP/SIMD register name with an â€˜sâ€™ (single word,
          32-bit) prefix.
! â€˜dâ€™     Print an FP/SIMD register name with a â€˜dâ€™ (doubleword, 64-bit)
          prefix.
! â€˜qâ€™     Print an FP/SIMD register name with a â€˜qâ€™ (quadword, 128-bit)
          prefix.
! â€˜Zâ€™     Print an FP/SIMD register name as an SVE register (i.e.  with a
!         â€˜zâ€™ prefix).  This is a no-op for SVE register operands.
  
  6.11.2.10 x86 Operand Modifiers
  ...............................
  
  References to input, output, and goto operands in the assembler template
! of extended â€˜asmâ€™ statements can use modifiers to affect the way the
  operands are formatted in the code output to the assembler.  For
! example, the following code uses the â€˜hâ€™ and â€˜bâ€™ modifiers for x86:
  
       uint16_t  num;
       asm volatile ("xchg %h0, %b0" : "+a" (num) );
*************** purposes.
*** 46672,46741 ****
       }
  
   With no modifiers, this is what the output from the operands would be
! for the 'att' and 'intel' dialects of assembler:
  
! Operand   'att'  'intel'
  -----------------------------------
! '%0'      '%eax' 'eax'
! '%1'      '$2'   '2'
! '%3'      '$.L3' 'OFFSET
!                  FLAT:.L3'
  
   The table below shows the list of supported modifiers and their
  effects.
  
! Modifier   Description                                  Operand   'att'   'intel'
  ------------------------------------------------------------------------------------
! 'A'        Print an absolute memory reference.          '%A0'     '*%rax' 'rax'
! 'b'        Print the QImode name of the register.       '%b0'     '%al'   'al'
! 'c'        Require a constant operand and print the     '%c1'     '2'     '2'
             constant expression with no punctuation.
! 'E'        Print the address in Double Integer          '%E1'     '%(rax)''[rax]'
             (DImode) mode (8 bytes) when the target is
             64-bit.  Otherwise mode is unspecified
             (VOIDmode).
! 'h'        Print the QImode name for a "high"           '%h0'     '%ah'   'ah'
             register.
! 'H'        Add 8 bytes to an offsettable memory         '%H0'     '8(%rax)''8[rax]'
             reference.  Useful when accessing the high
             8 bytes of SSE values.  For a memref in
             (%rax), it generates
! 'k'        Print the SImode name of the register.       '%k0'     '%eax'  'eax'
! 'l'        Print the label name with no punctuation.    '%l3'     '.L3'   '.L3'
! 'p'        Print raw symbol name (without               '%p2'     '42'    '42'
             syntax-specific prefixes).
! 'P'        If used for a function, print the PLT
             suffix and generate PIC code.  For
!            example, emit 'foo@PLT' instead of 'foo'
             for the function foo().  If used for a
             constant, drop all syntax-specific
             prefixes and issue the bare constant.  See
!            'p' above.
! 'q'        Print the DImode name of the register.       '%q0'     '%rax'  'rax'
! 'w'        Print the HImode name of the register.       '%w0'     '%ax'   'ax'
! 'z'        Print the opcode suffix for the size of      '%z0'     'l'
             the current integer operand (one of
!            'b'/'w'/'l'/'q').
  
!  'V' is a special modifier which prints the name of the full integer
! register without '%'.
  
! 6.11.2.11 x86 Floating-Point 'asm' Operands
  ...........................................
  
  On x86 targets, there are several rules on the usage of stack-like
! registers in the operands of an 'asm'.  These rules apply only to the
  operands that are stack-like registers:
  
!   1. Given a set of input registers that die in an 'asm', it is
!      necessary to know which are implicitly popped by the 'asm', and
       which must be explicitly popped by GCC.
  
!      An input register that is implicitly popped by the 'asm' must be
       explicitly clobbered, unless it is constrained to match an output
       operand.
  
!   2. For any input register that is implicitly popped by an 'asm', it is
       necessary to know how to adjust the stack to compensate for the
       pop.  If any non-popped input is closer to the top of the reg-stack
       than the implicitly popped register, it would not be possible to
--- 46680,46749 ----
       }
  
   With no modifiers, this is what the output from the operands would be
! for the â€˜attâ€™ and â€˜intelâ€™ dialects of assembler:
  
! Operand   â€˜attâ€™  â€˜intelâ€™
  -----------------------------------
! â€˜%0â€™      â€˜%eaxâ€™ â€˜eaxâ€™
! â€˜%1â€™      â€˜$2â€™   â€˜2â€™
! â€˜%3â€™      â€˜$.L3â€™ â€˜OFFSET
!                  FLAT:.L3â€™
  
   The table below shows the list of supported modifiers and their
  effects.
  
! Modifier   Description                                  Operand   â€˜attâ€™   â€˜intelâ€™
  ------------------------------------------------------------------------------------
! â€˜Aâ€™        Print an absolute memory reference.          â€˜%A0â€™     â€˜*%raxâ€™ â€˜raxâ€™
! â€˜bâ€™        Print the QImode name of the register.       â€˜%b0â€™     â€˜%alâ€™   â€˜alâ€™
! â€˜câ€™        Require a constant operand and print the     â€˜%c1â€™     â€˜2â€™     â€˜2â€™
             constant expression with no punctuation.
! â€˜Eâ€™        Print the address in Double Integer          â€˜%E1â€™     â€˜%(rax)â€™â€˜[rax]â€™
             (DImode) mode (8 bytes) when the target is
             64-bit.  Otherwise mode is unspecified
             (VOIDmode).
! â€˜hâ€™        Print the QImode name for a "high"           â€˜%h0â€™     â€˜%ahâ€™   â€˜ahâ€™
             register.
! â€˜Hâ€™        Add 8 bytes to an offsettable memory         â€˜%H0â€™     â€˜8(%rax)â€™â€˜8[rax]â€™
             reference.  Useful when accessing the high
             8 bytes of SSE values.  For a memref in
             (%rax), it generates
! â€˜kâ€™        Print the SImode name of the register.       â€˜%k0â€™     â€˜%eaxâ€™  â€˜eaxâ€™
! â€˜lâ€™        Print the label name with no punctuation.    â€˜%l3â€™     â€˜.L3â€™   â€˜.L3â€™
! â€˜pâ€™        Print raw symbol name (without               â€˜%p2â€™     â€˜42â€™    â€˜42â€™
             syntax-specific prefixes).
! â€˜Pâ€™        If used for a function, print the PLT
             suffix and generate PIC code.  For
!            example, emit â€˜foo@PLTâ€™ instead of 'foo'
             for the function foo().  If used for a
             constant, drop all syntax-specific
             prefixes and issue the bare constant.  See
!            â€˜pâ€™ above.
! â€˜qâ€™        Print the DImode name of the register.       â€˜%q0â€™     â€˜%raxâ€™  â€˜raxâ€™
! â€˜wâ€™        Print the HImode name of the register.       â€˜%w0â€™     â€˜%axâ€™   â€˜axâ€™
! â€˜zâ€™        Print the opcode suffix for the size of      â€˜%z0â€™     â€˜lâ€™
             the current integer operand (one of
!            â€˜bâ€™/â€˜wâ€™/â€˜lâ€™/â€˜qâ€™).
  
!  â€˜Vâ€™ is a special modifier which prints the name of the full integer
! register without â€˜%â€™.
  
! 6.11.2.11 x86 Floating-Point â€˜asmâ€™ Operands
  ...........................................
  
  On x86 targets, there are several rules on the usage of stack-like
! registers in the operands of an â€˜asmâ€™.  These rules apply only to the
  operands that are stack-like registers:
  
!   1. Given a set of input registers that die in an â€˜asmâ€™, it is
!      necessary to know which are implicitly popped by the â€˜asmâ€™, and
       which must be explicitly popped by GCC.
  
!      An input register that is implicitly popped by the â€˜asmâ€™ must be
       explicitly clobbered, unless it is constrained to match an output
       operand.
  
!   2. For any input register that is implicitly popped by an â€˜asmâ€™, it is
       necessary to know how to adjust the stack to compensate for the
       pop.  If any non-popped input is closer to the top of the reg-stack
       than the implicitly popped register, it would not be possible to
*************** operands that are stack-like registers:
*** 46745,46764 ****
       All implicitly popped input registers must be closer to the top of
       the reg-stack than any input that is not implicitly popped.
  
!      It is possible that if an input dies in an 'asm', the compiler
       might use the input register for an output reload.  Consider this
       example:
  
            asm ("foo" : "=t" (a) : "f" (b));
  
!      This code says that input 'b' is not popped by the 'asm', and that
!      the 'asm' pushes a result onto the reg-stack, i.e., the stack is
!      one deeper after the 'asm' than it was before.  But, it is possible
       that reload may think that it can use the same register for both
       the input and the output.
  
!      To prevent this from happening, if any input operand uses the 'f'
!      constraint, all output register constraints must use the '&'
       early-clobber modifier.
  
       The example above is correctly written as:
--- 46753,46772 ----
       All implicitly popped input registers must be closer to the top of
       the reg-stack than any input that is not implicitly popped.
  
!      It is possible that if an input dies in an â€˜asmâ€™, the compiler
       might use the input register for an output reload.  Consider this
       example:
  
            asm ("foo" : "=t" (a) : "f" (b));
  
!      This code says that input â€˜bâ€™ is not popped by the â€˜asmâ€™, and that
!      the â€˜asmâ€™ pushes a result onto the reg-stack, i.e., the stack is
!      one deeper after the â€˜asmâ€™ than it was before.  But, it is possible
       that reload may think that it can use the same register for both
       the input and the output.
  
!      To prevent this from happening, if any input operand uses the â€˜fâ€™
!      constraint, all output register constraints must use the â€˜&â€™
       early-clobber modifier.
  
       The example above is correctly written as:
*************** operands that are stack-like registers:
*** 46771,46800 ****
       the constraints.
  
       Output operands must specifically indicate which register an output
!      appears in after an 'asm'.  '=f' is not allowed: the operand
       constraints must select a class with a single register.
  
    4. Output operands may not be "inserted" between existing stack
       registers.  Since no 387 opcode uses a read/write operand, all
!      output operands are dead before the 'asm', and are pushed by the
!      'asm'.  It makes no sense to push anywhere but the top of the
       reg-stack.
  
       Output operands must start at the top of the reg-stack: output
       operands may not "skip" a register.
  
!   5. Some 'asm' statements may need extra stack space for internal
       calculations.  This can be guaranteed by clobbering stack registers
       unrelated to the inputs and outputs.
  
!  This 'asm' takes one input, which is internally popped, and produces
  two outputs.
  
       asm ("fsincos" : "=t" (cos), "=u" (sin) : "0" (inp));
  
! This 'asm' takes two inputs, which are popped by the 'fyl2xp1' opcode,
! and replaces them with one output.  The 'st(1)' clobber is necessary for
! the compiler to know that 'fyl2xp1' pops both inputs.
  
       asm ("fyl2xp1" : "=t" (result) : "0" (x), "u" (y) : "st(1)");
  
--- 46779,46808 ----
       the constraints.
  
       Output operands must specifically indicate which register an output
!      appears in after an â€˜asmâ€™.  â€˜=fâ€™ is not allowed: the operand
       constraints must select a class with a single register.
  
    4. Output operands may not be "inserted" between existing stack
       registers.  Since no 387 opcode uses a read/write operand, all
!      output operands are dead before the â€˜asmâ€™, and are pushed by the
!      â€˜asmâ€™.  It makes no sense to push anywhere but the top of the
       reg-stack.
  
       Output operands must start at the top of the reg-stack: output
       operands may not "skip" a register.
  
!   5. Some â€˜asmâ€™ statements may need extra stack space for internal
       calculations.  This can be guaranteed by clobbering stack registers
       unrelated to the inputs and outputs.
  
!  This â€˜asmâ€™ takes one input, which is internally popped, and produces
  two outputs.
  
       asm ("fsincos" : "=t" (cos), "=u" (sin) : "0" (inp));
  
! This â€˜asmâ€™ takes two inputs, which are popped by the â€˜fyl2xp1â€™ opcode,
! and replaces them with one output.  The â€˜st(1)â€™ clobber is necessary for
! the compiler to know that â€˜fyl2xp1â€™ pops both inputs.
  
       asm ("fyl2xp1" : "=t" (result) : "0" (x), "u" (y) : "st(1)");
  
*************** MSP430.
*** 46806,46836 ****
  
  ModifierDescription
  --------------------------------------------------------------------------
! 'A'     Select low 16-bits of the constant/register/memory operand.
! 'B'     Select high 16-bits of the constant/register/memory operand.
! 'C'     Select bits 32-47 of the constant/register/memory operand.
! 'D'     Select bits 48-63 of the constant/register/memory operand.
! 'H'     Equivalent to 'B' (for backwards compatibility).
! 'I'     Print the inverse (logical 'NOT') of the constant value.
! 'J'     Print an integer without a '#' prefix.
! 'L'     Equivalent to 'A' (for backwards compatibility).
! 'O'     Offset of the current frame from the top of the stack.
! 'Q'     Use the 'A' instruction postfix.
! 'R'     Inverse of condition code, for unsigned comparisons.
! 'W'     Subtract 16 from the constant value.
! 'X'     Use the 'X' instruction postfix.
! 'Y'     Subtract 4 from the constant value.
! 'Z'     Subtract 1 from the constant value.
! 'b'     Append '.B', '.W' or '.A' to the instruction, depending on the
          mode.
! 'd'     Offset 1 byte of a memory reference or constant value.
! 'e'     Offset 3 bytes of a memory reference or constant value.
! 'f'     Offset 5 bytes of a memory reference or constant value.
! 'g'     Offset 7 bytes of a memory reference or constant value.
! 'p'     Print the value of 2, raised to the power of the given
          constant.  Used to select the specified bit position.
! 'r'     Inverse of condition code, for signed comparisons.
! 'x'     Equivalent to 'X', but only for pointers.
  
  6.11.2.13 LoongArch Operand Modifiers
  .....................................
--- 46814,46844 ----
  
  ModifierDescription
  --------------------------------------------------------------------------
! â€˜Aâ€™     Select low 16-bits of the constant/register/memory operand.
! â€˜Bâ€™     Select high 16-bits of the constant/register/memory operand.
! â€˜Câ€™     Select bits 32-47 of the constant/register/memory operand.
! â€˜Dâ€™     Select bits 48-63 of the constant/register/memory operand.
! â€˜Hâ€™     Equivalent to â€˜Bâ€™ (for backwards compatibility).
! â€˜Iâ€™     Print the inverse (logical â€˜NOTâ€™) of the constant value.
! â€˜Jâ€™     Print an integer without a â€˜#â€™ prefix.
! â€˜Lâ€™     Equivalent to â€˜Aâ€™ (for backwards compatibility).
! â€˜Oâ€™     Offset of the current frame from the top of the stack.
! â€˜Qâ€™     Use the â€˜Aâ€™ instruction postfix.
! â€˜Râ€™     Inverse of condition code, for unsigned comparisons.
! â€˜Wâ€™     Subtract 16 from the constant value.
! â€˜Xâ€™     Use the â€˜Xâ€™ instruction postfix.
! â€˜Yâ€™     Subtract 4 from the constant value.
! â€˜Zâ€™     Subtract 1 from the constant value.
! â€˜bâ€™     Append â€˜.Bâ€™, â€˜.Wâ€™ or â€˜.Aâ€™ to the instruction, depending on the
          mode.
! â€˜dâ€™     Offset 1 byte of a memory reference or constant value.
! â€˜eâ€™     Offset 3 bytes of a memory reference or constant value.
! â€˜fâ€™     Offset 5 bytes of a memory reference or constant value.
! â€˜gâ€™     Offset 7 bytes of a memory reference or constant value.
! â€˜pâ€™     Print the value of 2, raised to the power of the given
          constant.  Used to select the specified bit position.
! â€˜râ€™     Inverse of condition code, for signed comparisons.
! â€˜xâ€™     Equivalent to â€˜Xâ€™, but only for pointers.
  
  6.11.2.13 LoongArch Operand Modifiers
  .....................................
*************** LoongArch.
*** 46840,46852 ****
  
  ModifierDescription
  --------------------------------------------------------------------------
! 'd'     Same as 'c'.
! 'i'     Print the character "'i'" if the operand is not a register.
! 'm'     Same as 'c', but the printed value is 'operand - 1'.
! 'u'     Print a LASX register.
! 'w'     Print a LSX register.
! 'X'     Print a constant integer operand in hexadecimal.
! 'z'     Print the operand in its unmodified form, followed by a comma.
  
   References to input and output operands in the assembler template of
  extended asm statements can use modifiers to affect the way the operands
--- 46848,46860 ----
  
  ModifierDescription
  --------------------------------------------------------------------------
! â€˜dâ€™     Same as â€˜câ€™.
! â€˜iâ€™     Print the character "â€˜iâ€™" if the operand is not a register.
! â€˜mâ€™     Same as â€˜câ€™, but the printed value is â€˜operand - 1â€™.
! â€˜uâ€™     Print a LASX register.
! â€˜wâ€™     Print a LSX register.
! â€˜Xâ€™     Print a constant integer operand in hexadecimal.
! â€˜zâ€™     Print the operand in its unmodified form, followed by a comma.
  
   References to input and output operands in the assembler template of
  extended asm statements can use modifiers to affect the way the operands
*************** The assembly statement produces the foll
*** 46876,46885 ****
  
       vadd.d $vr0,$vr0,$vr1
  
!  This is a 128-bit vector addition instruction, 'c' (referred to in the
! template string as %0) is the output, and 'a' (%1) and 'b' (%2) are the
! inputs.  '__m128i' is a vector data type defined in the file
! 'lsxintrin.h' (*Note LoongArch SX Vector Intrinsics::).  The symbol '=f'
  represents a constraint using a floating-point register as an output
  type, and the 'f' in the input operand represents a constraint using a
  floating-point register operand, which can refer to the definition of a
--- 46884,46893 ----
  
       vadd.d $vr0,$vr0,$vr1
  
!  This is a 128-bit vector addition instruction, â€˜câ€™ (referred to in the
! template string as %0) is the output, and â€˜aâ€™ (%1) and â€˜bâ€™ (%2) are the
! inputs.  â€˜__m128iâ€™ is a vector data type defined in the file
! â€˜lsxintrin.hâ€™ (*Note LoongArch SX Vector Intrinsics::).  The symbol '=f'
  represents a constraint using a floating-point register as an output
  type, and the 'f' in the input operand represents a constraint using a
  floating-point register operand, which can refer to the definition of a
*************** RISC-V.
*** 46893,46902 ****
  
  ModifierDescription
  --------------------------------------------------------------------------
! 'z'     Print "'zero'" instead of 0 if the operand is an immediate with
          a value of zero.
! 'i'     Print the character "'i'" if the operand is an immediate.
! 'N'     Print the register encoding as integer (0 - 31).
  
  6.11.2.15 SH Operand Modifiers
  ..............................
--- 46901,46910 ----
  
  ModifierDescription
  --------------------------------------------------------------------------
! â€˜zâ€™     Print "â€˜zeroâ€™" instead of 0 if the operand is an immediate with
          a value of zero.
! â€˜iâ€™     Print the character "â€˜iâ€™" if the operand is an immediate.
! â€˜Nâ€™     Print the register encoding as integer (0 - 31).
  
  6.11.2.15 SH Operand Modifiers
  ..............................
*************** the SH family of processors.
*** 46906,46950 ****
  
  ModifierDescription
  --------------------------------------------------------------------------
! '.'     Print "'.s'" if the instruction needs a delay slot.
! ','     Print "'LOCAL_LABEL_PREFIX'".
! '@'     Print "'trap'", "'rte'" or "'rts'" depending on the interrupt
          pragma used.
! '#'     Print "'nop'" if there is nothing to put in the delay slot.
! '''     Print likelihood suffix ("'/u'" for unlikely).
! '>'     Print branch target if "'-fverbose-asm'".
! 'O'     Require a constant operand and print the constant expression
          with no punctuation.
! 'R'     Print the "'LSW'" of a dp value - changes if in little endian.
! 'S'     Print the "'MSW'" of a dp value - changes if in little endian.
! 'T'     Print the next word of a dp value - same as "'R'" in big endian
          mode.
! 'M'     Print "'.b '", "'.w'", "'.l'", "'.s'", "'.d'", suffix if
          operand is a MEM.
! 'N'     Print "'r63'" if the operand is "'const_int 0'".
! 'd'     Print a "'V2SF'" as "'dN'" instead of "'fpN'".
! 'm'     Print the pair "'base,offset'" or "'base,index'" for LD and ST.
! 'U'     Like "'%m'" for "'LD'" and "'ST'", "'HI'" and "'LO'".
! 'V'     Print the position of a single bit set.
! 'W'     Print the position of a single bit cleared.
! 't'     Print a memory address which is a register.
! 'u'     Print the lowest 16 bits of "'CONST_INT'", as an unsigned
          value.
! 'o'     Print an operator.
  
  
  File: gcc.info,  Node: Constraints,  Next: Asm constexprs,  Prev: Extended Asm,  Up: Using Assembly Language with C
  
! 6.11.3 Constraints for 'asm' Operands
  -------------------------------------
  
  Here are specific details on what constraint letters you can use with
! 'asm' operands.  Constraints can say whether an operand may be in a
  register, and which kinds of register; whether the operand can be a
  memory reference, and which kinds of address; whether the operand may be
  an immediate constant, and which possible values it may have.
  Constraints can also require two operands to match.  Side-effects aren't
! allowed in operands of inline 'asm', unless '<' or '>' constraints are
  used, because there is no guarantee that the side effects will happen
  exactly once in an instruction that can update the addressing register.
  
--- 46914,46958 ----
  
  ModifierDescription
  --------------------------------------------------------------------------
! â€˜.â€™     Print "â€˜.sâ€™" if the instruction needs a delay slot.
! â€˜,â€™     Print "â€˜LOCAL_LABEL_PREFIXâ€™".
! â€˜@â€™     Print "â€˜trapâ€™", "â€˜rteâ€™" or "â€˜rtsâ€™" depending on the interrupt
          pragma used.
! â€˜#â€™     Print "â€˜nopâ€™" if there is nothing to put in the delay slot.
! â€˜'â€™     Print likelihood suffix ("â€˜/uâ€™" for unlikely).
! â€˜>â€™     Print branch target if "â€˜-fverbose-asmâ€™".
! â€˜Oâ€™     Require a constant operand and print the constant expression
          with no punctuation.
! â€˜Râ€™     Print the "â€˜LSWâ€™" of a dp value - changes if in little endian.
! â€˜Sâ€™     Print the "â€˜MSWâ€™" of a dp value - changes if in little endian.
! â€˜Tâ€™     Print the next word of a dp value - same as "â€˜Râ€™" in big endian
          mode.
! â€˜Mâ€™     Print "â€˜.b â€™", "â€˜.wâ€™", "â€˜.lâ€™", "â€˜.sâ€™", "â€˜.dâ€™", suffix if
          operand is a MEM.
! â€˜Nâ€™     Print "â€˜r63â€™" if the operand is "â€˜const_int 0â€™".
! â€˜dâ€™     Print a "â€˜V2SFâ€™" as "â€˜dNâ€™" instead of "â€˜fpNâ€™".
! â€˜mâ€™     Print the pair "â€˜base,offsetâ€™" or "â€˜base,indexâ€™" for LD and ST.
! â€˜Uâ€™     Like "â€˜%mâ€™" for "â€˜LDâ€™" and "â€˜STâ€™", "â€˜HIâ€™" and "â€˜LOâ€™".
! â€˜Vâ€™     Print the position of a single bit set.
! â€˜Wâ€™     Print the position of a single bit cleared.
! â€˜tâ€™     Print a memory address which is a register.
! â€˜uâ€™     Print the lowest 16 bits of "â€˜CONST_INTâ€™", as an unsigned
          value.
! â€˜oâ€™     Print an operator.
  
  
  File: gcc.info,  Node: Constraints,  Next: Asm constexprs,  Prev: Extended Asm,  Up: Using Assembly Language with C
  
! 6.11.3 Constraints for â€˜asmâ€™ Operands
  -------------------------------------
  
  Here are specific details on what constraint letters you can use with
! â€˜asmâ€™ operands.  Constraints can say whether an operand may be in a
  register, and which kinds of register; whether the operand can be a
  memory reference, and which kinds of address; whether the operand may be
  an immediate constant, and which possible values it may have.
  Constraints can also require two operands to match.  Side-effects aren't
! allowed in operands of inline â€˜asmâ€™, unless â€˜<â€™ or â€˜>â€™ constraints are
  used, because there is no guarantee that the side effects will happen
  exactly once in an instruction that can update the addressing register.
  
*************** whitespace
*** 46972,46986 ****
       description even if they have different number of constraints and
       modifiers.
  
! 'm'
       A memory operand is allowed, with any kind of address that the
       machine supports in general.  Note that the letter used for the
       general memory constraint can be re-defined by a back end using the
!      'TARGET_MEM_CONSTRAINT' macro.
  
! 'o'
       A memory operand is allowed, but only if the address is
!      "offsettable".  This means that adding a small integer (actually,
       the width in bytes of the operand, as determined by its machine
       mode) may be added to the address and the result is also a valid
       memory address.
--- 46980,46994 ----
       description even if they have different number of constraints and
       modifiers.
  
! â€˜mâ€™
       A memory operand is allowed, with any kind of address that the
       machine supports in general.  Note that the letter used for the
       general memory constraint can be re-defined by a back end using the
!      â€˜TARGET_MEM_CONSTRAINTâ€™ macro.
  
! â€˜oâ€™
       A memory operand is allowed, but only if the address is
!      â€œoffsettableâ€�.  This means that adding a small integer (actually,
       the width in bytes of the operand, as determined by its machine
       mode) may be added to the address and the result is also a valid
       memory address.
*************** whitespace
*** 46994,47086 ****
       on the other addressing modes that the machine supports.
  
       Note that in an output operand which can be matched by another
!      operand, the constraint letter 'o' is valid only when accompanied
!      by both '<' (if the target machine has predecrement addressing) and
!      '>' (if the target machine has preincrement addressing).
  
! 'V'
       A memory operand that is not offsettable.  In other words, anything
!      that would fit the 'm' constraint but not the 'o' constraint.
  
! '<'
       A memory operand with autodecrement addressing (either predecrement
!      or postdecrement) is allowed.  In inline 'asm' this constraint is
       only allowed if the operand is used exactly once in an instruction
!      that can handle the side effects.  Not using an operand with '<' in
!      constraint string in the inline 'asm' pattern at all or using it in
       multiple instructions isn't valid, because the side effects
       wouldn't be performed or would be performed more than once.
!      Furthermore, on some targets the operand with '<' in constraint
       string must be accompanied by special instruction suffixes like
!      '%U0' instruction suffix on PowerPC or '%P0' on IA-64.
  
! '>'
       A memory operand with autoincrement addressing (either preincrement
!      or postincrement) is allowed.  In inline 'asm' the same
!      restrictions as for '<' apply.
  
! 'r'
       A register operand is allowed provided that it is in a general
       register.
  
! 'i'
       An immediate integer operand (one with constant value) is allowed.
       This includes symbolic constants whose values will be known only at
       assembly time or later.
  
! 'n'
       An immediate integer operand with a known numeric value is allowed.
       Many systems cannot support assembly-time constants for operands
       less than a word wide.  Constraints for these operands should use
!      'n' rather than 'i'.
  
! 'I', 'J', 'K', ... 'P'
!      Other letters in the range 'I' through 'P' may be defined in a
       machine-dependent fashion to permit immediate integer operands with
       explicit integer values in specified ranges.  For example, on the
!      68000, 'I' is defined to stand for the range of values 1 to 8.
       This is the range permitted as a shift count in the shift
       instructions.
  
! 'E'
!      An immediate floating operand (expression code 'const_double') is
       allowed, but only if the target floating point format is the same
       as that of the host machine (on which the compiler is running).
  
! 'F'
!      An immediate floating operand (expression code 'const_double' or
!      'const_vector') is allowed.
  
! 'G', 'H'
!      'G' and 'H' may be defined in a machine-dependent fashion to permit
       immediate floating operands in particular ranges of values.
  
! 's'
       An immediate integer operand whose value is not an explicit integer
       is allowed.
  
       This might appear strange; if an insn allows a constant operand
       with a value not known at compile time, it certainly must allow any
!      known value.  So why use 's' instead of 'i'?  Sometimes it allows
       better code to be generated.
  
       For example, on the 68000 in a fullword instruction it is possible
       to use an immediate operand; but if the immediate value is between
!      -128 and 127, better code results from loading the value into a
       register and using the register.  This is because the load into the
!      register can be done with a 'moveq' instruction.  We arrange for
!      this to happen by defining the letter 'K' to mean "any integer
!      outside the range -128 to 127", and then specifying 'Ks' in the
       operand constraints.
  
! 'g'
       Any register, memory or immediate integer operand is allowed,
       except for registers that are not general registers.
  
! 'X'
       Any operand whatsoever is allowed.
  
! '0', '1', '2', ... '9'
       An operand that matches the specified operand number is allowed.
       If a digit is used together with letters within the same
       alternative, the digit should come last.
--- 47002,47094 ----
       on the other addressing modes that the machine supports.
  
       Note that in an output operand which can be matched by another
!      operand, the constraint letter â€˜oâ€™ is valid only when accompanied
!      by both â€˜<â€™ (if the target machine has predecrement addressing) and
!      â€˜>â€™ (if the target machine has preincrement addressing).
  
! â€˜Vâ€™
       A memory operand that is not offsettable.  In other words, anything
!      that would fit the â€˜mâ€™ constraint but not the â€˜oâ€™ constraint.
  
! â€˜<â€™
       A memory operand with autodecrement addressing (either predecrement
!      or postdecrement) is allowed.  In inline â€˜asmâ€™ this constraint is
       only allowed if the operand is used exactly once in an instruction
!      that can handle the side effects.  Not using an operand with â€˜<â€™ in
!      constraint string in the inline â€˜asmâ€™ pattern at all or using it in
       multiple instructions isn't valid, because the side effects
       wouldn't be performed or would be performed more than once.
!      Furthermore, on some targets the operand with â€˜<â€™ in constraint
       string must be accompanied by special instruction suffixes like
!      â€˜%U0â€™ instruction suffix on PowerPC or â€˜%P0â€™ on IA-64.
  
! â€˜>â€™
       A memory operand with autoincrement addressing (either preincrement
!      or postincrement) is allowed.  In inline â€˜asmâ€™ the same
!      restrictions as for â€˜<â€™ apply.
  
! â€˜râ€™
       A register operand is allowed provided that it is in a general
       register.
  
! â€˜iâ€™
       An immediate integer operand (one with constant value) is allowed.
       This includes symbolic constants whose values will be known only at
       assembly time or later.
  
! â€˜nâ€™
       An immediate integer operand with a known numeric value is allowed.
       Many systems cannot support assembly-time constants for operands
       less than a word wide.  Constraints for these operands should use
!      â€˜nâ€™ rather than â€˜iâ€™.
  
! â€˜Iâ€™, â€˜Jâ€™, â€˜Kâ€™, ... â€˜Pâ€™
!      Other letters in the range â€˜Iâ€™ through â€˜Pâ€™ may be defined in a
       machine-dependent fashion to permit immediate integer operands with
       explicit integer values in specified ranges.  For example, on the
!      68000, â€˜Iâ€™ is defined to stand for the range of values 1 to 8.
       This is the range permitted as a shift count in the shift
       instructions.
  
! â€˜Eâ€™
!      An immediate floating operand (expression code â€˜const_doubleâ€™) is
       allowed, but only if the target floating point format is the same
       as that of the host machine (on which the compiler is running).
  
! â€˜Fâ€™
!      An immediate floating operand (expression code â€˜const_doubleâ€™ or
!      â€˜const_vectorâ€™) is allowed.
  
! â€˜Gâ€™, â€˜Hâ€™
!      â€˜Gâ€™ and â€˜Hâ€™ may be defined in a machine-dependent fashion to permit
       immediate floating operands in particular ranges of values.
  
! â€˜sâ€™
       An immediate integer operand whose value is not an explicit integer
       is allowed.
  
       This might appear strange; if an insn allows a constant operand
       with a value not known at compile time, it certainly must allow any
!      known value.  So why use â€˜sâ€™ instead of â€˜iâ€™?  Sometimes it allows
       better code to be generated.
  
       For example, on the 68000 in a fullword instruction it is possible
       to use an immediate operand; but if the immediate value is between
!      âˆ’128 and 127, better code results from loading the value into a
       register and using the register.  This is because the load into the
!      register can be done with a â€˜moveqâ€™ instruction.  We arrange for
!      this to happen by defining the letter â€˜Kâ€™ to mean "any integer
!      outside the range âˆ’128 to 127", and then specifying â€˜Ksâ€™ in the
       operand constraints.
  
! â€˜gâ€™
       Any register, memory or immediate integer operand is allowed,
       except for registers that are not general registers.
  
! â€˜Xâ€™
       Any operand whatsoever is allowed.
  
! â€˜0â€™, â€˜1â€™, â€˜2â€™, ... â€˜9â€™
       An operand that matches the specified operand number is allowed.
       If a digit is used together with letters within the same
       alternative, the digit should come last.
*************** whitespace
*** 47088,47100 ****
       This number is allowed to be more than a single digit.  If multiple
       digits are encountered consecutively, they are interpreted as a
       single decimal integer.  There is scant chance for ambiguity, since
!      to-date it has never been desirable that '10' be interpreted as
       matching either operand 1 _or_ operand 0.  Should this be desired,
       one can use multiple alternatives instead.
  
!      This is called a "matching constraint" and what it really means is
       that the assembler has only a single operand that fills two roles
!      which 'asm' distinguishes.  For example, an add instruction uses
       two input operands and an output operand, but on most CISC machines
       an add instruction really has only two operands, one of them an
       input-output operand:
--- 47096,47108 ----
       This number is allowed to be more than a single digit.  If multiple
       digits are encountered consecutively, they are interpreted as a
       single decimal integer.  There is scant chance for ambiguity, since
!      to-date it has never been desirable that â€˜10â€™ be interpreted as
       matching either operand 1 _or_ operand 0.  Should this be desired,
       one can use multiple alternatives instead.
  
!      This is called a â€œmatching constraintâ€� and what it really means is
       that the assembler has only a single operand that fills two roles
!      which â€˜asmâ€™ distinguishes.  For example, an add instruction uses
       two input operands and an output operand, but on most CISC machines
       an add instruction really has only two operands, one of them an
       input-output operand:
*************** whitespace
*** 47107,47127 ****
       smaller number than the number of the operand that uses it in the
       constraint.
  
! 'p'
       An operand that is a valid memory address is allowed.  This is for
       "load address" and "push address" instructions.
  
!      'p' in the constraint must be accompanied by 'address_operand' as
!      the predicate in the 'match_operand'.  This predicate interprets
!      the mode specified in the 'match_operand' as the mode of the memory
       reference for which the address would be valid.
  
! ':'
       This constraint, allowed only in input operands, says the inline
!      'asm' pattern defines specific function or variable symbol.  The
       constraint shouldn't be mixed with other constraints on the same
       operand and the operand should be address of a function or
!      non-automatic variable.  Best used with the 'cc' modifier when
       printing the operand, so that even in position independent code it
       prints as a label.
  
--- 47115,47135 ----
       smaller number than the number of the operand that uses it in the
       constraint.
  
! â€˜pâ€™
       An operand that is a valid memory address is allowed.  This is for
       "load address" and "push address" instructions.
  
!      â€˜pâ€™ in the constraint must be accompanied by â€˜address_operandâ€™ as
!      the predicate in the â€˜match_operandâ€™.  This predicate interprets
!      the mode specified in the â€˜match_operandâ€™ as the mode of the memory
       reference for which the address would be valid.
  
! â€˜:â€™
       This constraint, allowed only in input operands, says the inline
!      â€˜asmâ€™ pattern defines specific function or variable symbol.  The
       constraint shouldn't be mixed with other constraints on the same
       operand and the operand should be address of a function or
!      non-automatic variable.  Best used with the â€˜ccâ€™ modifier when
       printing the operand, so that even in position independent code it
       prints as a label.
  
*************** whitespace
*** 47131,47137 ****
  OTHER-LETTERS
       Other letters can be defined in machine-dependent fashion to stand
       for particular classes of registers or other arbitrary operand
!      types.  'd', 'a' and 'f' are defined on the 68000/68020 to stand
       for data, address and floating point registers.
  
  
--- 47139,47145 ----
  OTHER-LETTERS
       Other letters can be defined in machine-dependent fashion to stand
       for particular classes of registers or other arbitrary operand
!      types.  â€˜dâ€™, â€˜aâ€™ and â€˜fâ€™ are defined on the 68000/68020 to stand
       for data, address and floating point registers.
  
  
*************** alternative.  All operands for a single
*** 47155,47171 ****
  number of alternatives.
  
   So the first alternative for the 68000's logical-or could be written as
! '"+m" (output) : "ir" (input)'.  The second could be '"+r" (output):
! "irm" (input)'.  However, the fact that two memory locations cannot be
! used in a single instruction prevents simply using '"+rm" (output) :
! "irm" (input)'.  Using multi-alternatives, this might be written as
! '"+m,r" (output) : "ir,irm" (input)'.  This describes all the available
  alternatives to the compiler, allowing it to choose the most efficient
  one for the current conditions.
  
   There is no way within the template to determine which alternative was
! chosen.  However you may be able to wrap your 'asm' statements with
! builtins such as '__builtin_constant_p' to achieve the desired results.
  
  
  File: gcc.info,  Node: Modifiers,  Next: Machine Constraints,  Prev: Multi-Alternative,  Up: Constraints
--- 47163,47179 ----
  number of alternatives.
  
   So the first alternative for the 68000's logical-or could be written as
! â€˜"+m" (output) : "ir" (input)â€™.  The second could be â€˜"+r" (output):
! "irm" (input)â€™.  However, the fact that two memory locations cannot be
! used in a single instruction prevents simply using â€˜"+rm" (output) :
! "irm" (input)â€™.  Using multi-alternatives, this might be written as
! â€˜"+m,r" (output) : "ir,irm" (input)â€™.  This describes all the available
  alternatives to the compiler, allowing it to choose the most efficient
  one for the current conditions.
  
   There is no way within the template to determine which alternative was
! chosen.  However you may be able to wrap your â€˜asmâ€™ statements with
! builtins such as â€˜__builtin_constant_pâ€™ to achieve the desired results.
  
  
  File: gcc.info,  Node: Modifiers,  Next: Machine Constraints,  Prev: Multi-Alternative,  Up: Constraints
*************** File: gcc.info,  Node: Modifiers,  Next:
*** 47175,47207 ****
  
  Here are constraint modifier characters.
  
! '='
       Means that this operand is written to by this instruction: the
       previous value is discarded and replaced by new data.
  
! '+'
       Means that this operand is both read and written by the
       instruction.
  
       When the compiler fixes up the operands to satisfy the constraints,
       it needs to know which operands are read by the instruction and
!      which are written by it.  '=' identifies an operand which is only
!      written; '+' identifies an operand that is both read and written;
       all other operands are assumed to only be read.
  
!      If you specify '=' or '+' in a constraint, you put it in the first
       character of the constraint string.
  
! '&'
       Means (in a particular alternative) that this operand is an
!      "earlyclobber" operand, which is written before the instruction is
       finished using the input operands.  Therefore, this operand may not
       lie in a register that is read by the instruction or as part of any
       memory address.
  
!      '&' applies only to the alternative in which it is written.  In
       constraints with multiple alternatives, sometimes one alternative
!      requires '&' while others do not.  See, for example, the 'movdf'
       insn of the 68000.
  
       An operand which is read by the instruction can be tied to an
--- 47183,47215 ----
  
  Here are constraint modifier characters.
  
! â€˜=â€™
       Means that this operand is written to by this instruction: the
       previous value is discarded and replaced by new data.
  
! â€˜+â€™
       Means that this operand is both read and written by the
       instruction.
  
       When the compiler fixes up the operands to satisfy the constraints,
       it needs to know which operands are read by the instruction and
!      which are written by it.  â€˜=â€™ identifies an operand which is only
!      written; â€˜+â€™ identifies an operand that is both read and written;
       all other operands are assumed to only be read.
  
!      If you specify â€˜=â€™ or â€˜+â€™ in a constraint, you put it in the first
       character of the constraint string.
  
! â€˜&â€™
       Means (in a particular alternative) that this operand is an
!      â€œearlyclobberâ€� operand, which is written before the instruction is
       finished using the input operands.  Therefore, this operand may not
       lie in a register that is read by the instruction or as part of any
       memory address.
  
!      â€˜&â€™ applies only to the alternative in which it is written.  In
       constraints with multiple alternatives, sometimes one alternative
!      requires â€˜&â€™ while others do not.  See, for example, the â€˜movdfâ€™
       insn of the 68000.
  
       An operand which is read by the instruction can be tied to an
*************** Here are constraint modifier characters.
*** 47209,47244 ****
       early result is written.  Adding alternatives of this form often
       allows GCC to produce better code when only some of the read
       operands can be affected by the earlyclobber.  See, for example,
!      the 'mulsi3' insn of the ARM.
  
!      Furthermore, if the "earlyclobber" operand is also a read/write
       operand, then that operand is written only after it's used.
  
!      '&' does not obviate the need to write '=' or '+'.  As
!      "earlyclobber" operands are always written, a read-only
!      "earlyclobber" operand is ill-formed and will be rejected by the
       compiler.
  
! '%'
       Declares the instruction to be commutative for this operand and the
       following operand.  This means that the compiler may interchange
       the two operands if that is the cheapest way to make all operands
!      fit the constraints.  '%' applies to all alternatives and must
       appear as the first character in the constraint.  Only read-only
!      operands can use '%'.
  
       GCC can only handle one commutative pair in an asm; if you use
       more, the compiler may fail.  Note that you need not use the
       modifier if the two alternatives are strictly identical; this would
       only waste time in the reload pass.
  
! '-'
       Says that the selected following constraints within the same
       alternative should be matched differently.  Normally in PIC code
!      symbolic operands in constraints like 'i', 's' or 'n' are not
!      allowed at all or severely restricted.  The '-' modifier, which is
       only allowed outside of functions, allows symbolic operands even in
!      PIC code.  This modifier is usually used together with the 'cc'
       operand modifier.
  
            extern void foo (void), bar (void);
--- 47217,47252 ----
       early result is written.  Adding alternatives of this form often
       allows GCC to produce better code when only some of the read
       operands can be affected by the earlyclobber.  See, for example,
!      the â€˜mulsi3â€™ insn of the ARM.
  
!      Furthermore, if the â€œearlyclobberâ€� operand is also a read/write
       operand, then that operand is written only after it's used.
  
!      â€˜&â€™ does not obviate the need to write â€˜=â€™ or â€˜+â€™.  As
!      â€œearlyclobberâ€� operands are always written, a read-only
!      â€œearlyclobberâ€� operand is ill-formed and will be rejected by the
       compiler.
  
! â€˜%â€™
       Declares the instruction to be commutative for this operand and the
       following operand.  This means that the compiler may interchange
       the two operands if that is the cheapest way to make all operands
!      fit the constraints.  â€˜%â€™ applies to all alternatives and must
       appear as the first character in the constraint.  Only read-only
!      operands can use â€˜%â€™.
  
       GCC can only handle one commutative pair in an asm; if you use
       more, the compiler may fail.  Note that you need not use the
       modifier if the two alternatives are strictly identical; this would
       only waste time in the reload pass.
  
! â€˜-â€™
       Says that the selected following constraints within the same
       alternative should be matched differently.  Normally in PIC code
!      symbolic operands in constraints like â€˜iâ€™, â€˜sâ€™ or â€˜nâ€™ are not
!      allowed at all or severely restricted.  The â€˜-â€™ modifier, which is
       only allowed outside of functions, allows symbolic operands even in
!      PIC code.  This modifier is usually used together with the â€˜ccâ€™
       operand modifier.
  
            extern void foo (void), bar (void);
*************** Here are constraint modifier characters.
*** 47247,47254 ****
            asm (".globl %cc0, %cc2; .text; %cc0: call %cc1; ret; .data; %cc2: .word %cc3"
                 :: ":" (foo), "-s" (&bar), ":" (&w), "-i" (&v));
  
!      This asm declaration tells the compiler it defines function 'foo'
!      and variable 'w' and uses function 'bar' and variable 'v'.  This
       will compile even with PIC, but it is up to the user to ensure it
       will assemble correctly and have the expected behavior.
  
--- 47255,47262 ----
            asm (".globl %cc0, %cc2; .text; %cc0: call %cc1; ret; .data; %cc2: .word %cc3"
                 :: ":" (foo), "-s" (&bar), ":" (&w), "-i" (&v));
  
!      This asm declaration tells the compiler it defines function â€˜fooâ€™
!      and variable â€˜wâ€™ and uses function â€˜barâ€™ and variable â€˜vâ€™.  This
       will compile even with PIC, but it is up to the user to ensure it
       will assemble correctly and have the expected behavior.
  
*************** File: gcc.info,  Node: Machine Constrain
*** 47259,48727 ****
  ............................................
  
  Whenever possible, you should use the general-purpose constraint letters
! in 'asm' arguments, since they will convey meaning more readily to
  people reading your code.  Failing that, use the constraint letters that
  usually have very similar meanings across architectures.  The most
! commonly used constraints are 'm' and 'r' (for memory and
  general-purpose registers respectively; *note Simple Constraints::), and
! 'I', usually the letter indicating the most common immediate-constant
  format.
  
   Each architecture defines additional constraints.  These constraints
  are used by the compiler itself for instruction generation, as well as
! for 'asm' statements; therefore, some of the constraints are not
! particularly useful for 'asm'.  Here is a summary of some of the
  machine-dependent constraints available on some particular machines; it
! includes both constraints that are useful for 'asm' and constraints that
  aren't.  The compiler source file mentioned in the table heading for
  each architecture is the definitive reference for the meanings of that
  architecture's constraints.
  
! _AArch64 family--'config/aarch64/constraints.md'_
!      'k'
!           The stack pointer register ('SP')
  
!      'w'
            Floating point register, Advanced SIMD vector register or SVE
            vector register
  
!      'x'
!           Like 'w', but restricted to registers 0 to 15 inclusive.
  
!      'y'
!           Like 'w', but restricted to registers 0 to 7 inclusive.
  
!      'Upl'
!           One of the low eight SVE predicate registers ('P0' to 'P7')
  
!      'Upa'
!           Any of the SVE predicate registers ('P0' to 'P15')
  
!      'I'
            Integer constant that is valid as an immediate operand in an
!           'ADD' instruction
  
!      'J'
            Integer constant that is valid as an immediate operand in a
!           'SUB' instruction (once negated)
  
!      'K'
            Integer constant that can be used with a 32-bit logical
            instruction
  
!      'L'
            Integer constant that can be used with a 64-bit logical
            instruction
  
!      'M'
            Integer constant that is valid as an immediate operand in a
!           32-bit 'MOV' pseudo instruction.  The 'MOV' may be assembled
            to one of several different machine instructions depending on
            the value
  
!      'N'
            Integer constant that is valid as an immediate operand in a
!           64-bit 'MOV' pseudo instruction
  
!      'S'
            An absolute symbolic address or a label reference
  
!      'Y'
            Floating point constant zero
  
!      'Z'
            Integer constant zero
  
!      'Ush'
            The high part (bits 12 and upwards) of the pc-relative address
            of a symbol within 4GB of the instruction
  
!      'Q'
            A memory address which uses a single base register with no
            offset
  
!      'Ump'
            A memory address suitable for a load/store pair instruction in
            SI, DI, SF and DF modes
  
! _AMD GCN --'config/gcn/constraints.md'_
!      'I'
!           Immediate integer in the range -16 to 64
  
!      'J'
            Immediate 16-bit signed integer
  
!      'Kf'
!           Immediate constant -1
  
!      'L'
            Immediate 15-bit unsigned integer
  
!      'A'
            Immediate constant that can be inlined in an instruction
!           encoding: integer -16..64, or float 0.0, +/-0.5, +/-1.0,
!           +/-2.0, +/-4.0, 1.0/(2.0*PI)
  
!      'B'
            Immediate 32-bit signed integer that can be attached to an
            instruction encoding
  
!      'C'
!           Immediate 32-bit integer in range -16..4294967295 (i.e.
!           32-bit unsigned integer or 'A' constraint)
  
!      'DA'
!           Immediate 64-bit constant that can be split into two 'A'
            constants
  
!      'DB'
!           Immediate 64-bit constant that can be split into two 'B'
            constants
  
!      'U'
!           Any 'unspec'
  
!      'Y'
!           Any 'symbol_ref' or 'label_ref'
  
!      'v'
            VGPR register
  
!      'a'
            Accelerator VGPR register (CDNA1 onwards)
  
!      'Sg'
            SGPR register
  
!      'SD'
            SGPR registers valid for instruction destinations, including
            VCC, M0 and EXEC
  
!      'SS'
            SGPR registers valid for instruction sources, including VCC,
            M0, EXEC and SCC
  
!      'Sm'
            SGPR registers valid as a source for scalar memory
            instructions (excludes M0 and EXEC)
  
!      'Sv'
            SGPR registers valid as a source or destination for vector
            instructions (excludes EXEC)
  
!      'ca'
            All condition registers: SCC, VCCZ, EXECZ
  
!      'cs'
            Scalar condition register: SCC
  
!      'cV'
            Vector condition register: VCC, VCC_LO, VCC_HI
  
!      'e'
            EXEC register (EXEC_LO and EXEC_HI)
  
!      'RB'
!           Memory operand with address space suitable for 'buffer_*'
            instructions
  
!      'RF'
!           Memory operand with address space suitable for 'flat_*'
            instructions
  
!      'RS'
!           Memory operand with address space suitable for 's_*'
            instructions
  
!      'RL'
!           Memory operand with address space suitable for 'ds_*' LDS
            instructions
  
!      'RG'
!           Memory operand with address space suitable for 'ds_*' GDS
            instructions
  
!      'RD'
!           Memory operand with address space suitable for any 'ds_*'
            instructions
  
!      'RM'
!           Memory operand with address space suitable for 'global_*'
            instructions
  
! _ARC --'config/arc/constraints.md'_
!      'q'
!           Registers usable in ARCompact 16-bit instructions: 'r0'-'r3',
!           'r12'-'r15'.  This constraint can only match when the '-mq'
            option is in effect.
  
!      'e'
            Registers usable as base-regs of memory addresses in ARCompact
!           16-bit memory instructions: 'r0'-'r3', 'r12'-'r15', 'sp'.
!           This constraint can only match when the '-mq' option is in
            effect.
!      'D'
!           ARC FPX (dpfp) 64-bit registers.  'D0', 'D1'.
  
!      'I'
            A signed 12-bit integer constant.
  
!      'Cal'
            constant for arithmetic/logical operations.  This might be any
            constant that can be put into a long immediate by the assmbler
            or linker without involving a PIC relocation.
  
!      'K'
            A 3-bit unsigned integer constant.
  
!      'L'
            A 6-bit unsigned integer constant.
  
!      'CnL'
            One's complement of a 6-bit unsigned integer constant.
  
!      'CmL'
            Two's complement of a 6-bit unsigned integer constant.
  
!      'M'
            A 5-bit unsigned integer constant.
  
!      'O'
            A 7-bit unsigned integer constant.
  
!      'P'
            A 8-bit unsigned integer constant.
  
!      'H'
            Any const_double value.
  
! _ARM family--'config/arm/constraints.md'_
  
!      'h'
!           In Thumb state, the core registers 'r8'-'r15'.
  
!      'k'
            The stack pointer register.
  
!      'l'
!           In Thumb State the core registers 'r0'-'r7'.  In ARM state
!           this is an alias for the 'r' constraint.
  
!      't'
!           VFP floating-point registers 's0'-'s31'.  Used for 32 bit
            values.
  
!      'w'
!           VFP floating-point registers 'd0'-'d31' and the appropriate
!           subset 'd0'-'d15' based on command line options.  Used for 64
            bit values only.  Not valid for Thumb1.
  
!      'y'
            The iWMMX co-processor registers.
  
!      'z'
            The iWMMX GR registers.
  
!      'G'
            The floating-point constant 0.0
  
!      'I'
            Integer that is valid as an immediate operand in a data
            processing instruction.  That is, an integer in the range 0 to
            255 rotated by a multiple of 2
  
!      'J'
!           Integer in the range -4095 to 4095
  
!      'K'
!           Integer that satisfies constraint 'I' when inverted (ones
            complement)
  
!      'L'
!           Integer that satisfies constraint 'I' when negated (twos
            complement)
  
!      'M'
            Integer in the range 0 to 32
  
!      'Q'
            A memory reference where the exact address is in a single
!           register (''m'' is preferable for 'asm' statements)
  
!      'R'
            An item in the constant pool
  
!      'S'
            A symbol in the text segment of the current file
  
!      'Uv'
            A memory reference suitable for VFP load/store insns
            (reg+constant offset)
  
!      'Uy'
            A memory reference suitable for iWMMXt load/store
            instructions.
  
!      'Uq'
            A memory reference suitable for the ARMv4 ldrsb instruction.
  
! _AVR family--'config/avr/constraints.md'_
!      'l'
            Registers from r0 to r15
  
!      'a'
            Registers from r16 to r23
  
!      'd'
            Registers from r16 to r31
  
!      'w'
            Registers from r24 to r31.  These registers can be used in
!           'adiw' command
  
!      'e'
            Pointer register (r26-r31)
  
!      'b'
            Base pointer register (r28-r31)
  
!      'q'
            Stack pointer register (SPH:SPL)
  
!      't'
            Temporary register r0
  
!      'x'
            Register pair X (r27:r26)
  
!      'y'
            Register pair Y (r29:r28)
  
!      'z'
            Register pair Z (r31:r30)
  
!      'I'
!           Constant greater than -1, less than 64
  
!      'J'
!           Constant greater than -64, less than 1
  
!      'K'
            Constant integer 2
  
!      'L'
            Constant integer 0
  
!      'M'
            Constant that fits in 8 bits
  
!      'N'
!           Constant integer -1
  
!      'O'
            Constant integer 8, 16, or 24
  
!      'P'
            Constant integer 1
  
!      'G'
            A floating point constant 0.0
  
!      'Q'
            A memory address based on Y or Z pointer with displacement.
  
! _Blackfin family--'config/bfin/constraints.md'_
!      'a'
            P register
  
!      'd'
            D register
  
!      'z'
            A call clobbered P register.
  
!      'qN'
            A single register.  If N is in the range 0 to 7, the
!           corresponding D register.  If it is 'A', then the register P0.
  
!      'D'
            Even-numbered D register
  
!      'W'
            Odd-numbered D register
  
!      'e'
            Accumulator register.
  
!      'A'
            Even-numbered accumulator register.
  
!      'B'
            Odd-numbered accumulator register.
  
!      'b'
            I register
  
!      'v'
            B register
  
!      'f'
            M register
  
!      'c'
            Registers used for circular buffering, i.e. I, B, or L
            registers.
  
!      'C'
            The CC register.
  
!      't'
            LT0 or LT1.
  
!      'k'
            LC0 or LC1.
  
!      'u'
            LB0 or LB1.
  
!      'x'
            Any D, P, B, M, I or L register.
  
!      'y'
            Additional registers typically used only in prologues and
            epilogues: RETS, RETN, RETI, RETX, RETE, ASTAT, SEQSTAT and
            USP.
  
!      'w'
            Any register except accumulators or CC.
  
!      'Ksh'
!           Signed 16 bit integer (in the range -32768 to 32767)
  
!      'Kuh'
            Unsigned 16 bit integer (in the range 0 to 65535)
  
!      'Ks7'
!           Signed 7 bit integer (in the range -64 to 63)
  
!      'Ku7'
            Unsigned 7 bit integer (in the range 0 to 127)
  
!      'Ku5'
            Unsigned 5 bit integer (in the range 0 to 31)
  
!      'Ks4'
!           Signed 4 bit integer (in the range -8 to 7)
  
!      'Ks3'
!           Signed 3 bit integer (in the range -3 to 4)
  
!      'Ku3'
            Unsigned 3 bit integer (in the range 0 to 7)
  
!      'PN'
            Constant N, where N is a single-digit constant in the range 0
            to 4.
  
!      'PA'
            An integer equal to one of the MACFLAG_XXX constants that is
            suitable for use with either accumulator.
  
!      'PB'
            An integer equal to one of the MACFLAG_XXX constants that is
            suitable for use only with accumulator A1.
  
!      'M1'
            Constant 255.
  
!      'M2'
            Constant 65535.
  
!      'J'
            An integer constant with exactly a single bit set.
  
!      'L'
            An integer constant with all bits set except exactly one.
  
!      'H'
!      'Q'
            Any SYMBOL_REF.
  
! _C-SKY--'config/csky/constraints.md'_
  
!      'a'
            The mini registers r0 - r7.
  
!      'b'
            The low registers r0 - r15.
  
!      'c'
            C register.
  
!      'y'
            HI and LO registers.
  
!      'l'
            LO register.
  
!      'h'
            HI register.
  
!      'v'
            Vector registers.
  
!      'z'
            Stack pointer register (SP).
  
!      'Q'
            A memory address which uses a base register with a short
            offset or with a index register with its scale.
  
!      'W'
            A memory address which uses a base register with a index
            register with its scale.
  
! _Epiphany--'config/epiphany/constraints.md'_
!      'U16'
            An unsigned 16-bit constant.
  
!      'K'
            An unsigned 5-bit constant.
  
!      'L'
            A signed 11-bit constant.
  
!      'Cm1'
!           A signed 11-bit constant added to -1.  Can only match when the
!           '-m1reg-REG' option is active.
  
!      'Cl1'
!           Left-shift of -1, i.e., a bit mask with a block of leading
            ones, the rest being a block of trailing zeroes.  Can only
!           match when the '-m1reg-REG' option is active.
  
!      'Cr1'
!           Right-shift of -1, i.e., a bit mask with a trailing block of
            ones, the rest being zeroes.  Or to put it another way, one
            less than a power of two.  Can only match when the
!           '-m1reg-REG' option is active.
  
!      'Cal'
!           Constant for arithmetic/logical operations.  This is like 'i',
            except that for position independent code, no symbols /
            expressions needing relocations are allowed.
  
!      'Csy'
            Symbolic constant for call/jump instruction.
  
!      'Rcs'
            The register class usable in short insns.  This is a register
            class constraint, and can thus drive register allocation.
!           This constraint won't match unless '-mprefer-short-insn-regs'
            is in effect.
  
!      'Rsc'
            The register class of registers that can be used to hold a
            sibcall call address.  I.e., a caller-saved register.
  
!      'Rct'
            Core control register class.
  
!      'Rgs'
            The register group usable in short insns.  This constraint
            does not use a register class, so that it only passively
            matches suitable registers, and doesn't drive register
            allocation.
  
!      'Rra'
            Matches the return address if it can be replaced with the link
            register.
  
!      'Rcc'
            Matches the integer condition code register.
  
!      'Sra'
            Matches the return address if it is in a stack slot.
  
!      'Cfm'
            Matches control register values to switch fp mode, which are
!           encapsulated in 'UNSPEC_FP_MODE'.
  
! _FRV--'config/frv/frv.h'_
!      'a'
!           Register in the class 'ACC_REGS' ('acc0' to 'acc7').
  
!      'b'
!           Register in the class 'EVEN_ACC_REGS' ('acc0' to 'acc7').
  
!      'c'
!           Register in the class 'CC_REGS' ('fcc0' to 'fcc3' and 'icc0'
!           to 'icc3').
  
!      'd'
!           Register in the class 'GPR_REGS' ('gr0' to 'gr63').
  
!      'e'
!           Register in the class 'EVEN_REGS' ('gr0' to 'gr63').  Odd
            registers are excluded not in the class but through the use of
            a machine mode larger than 4 bytes.
  
!      'f'
!           Register in the class 'FPR_REGS' ('fr0' to 'fr63').
  
!      'h'
!           Register in the class 'FEVEN_REGS' ('fr0' to 'fr63').  Odd
            registers are excluded not in the class but through the use of
            a machine mode larger than 4 bytes.
  
!      'l'
!           Register in the class 'LR_REG' (the 'lr' register).
  
!      'q'
!           Register in the class 'QUAD_REGS' ('gr2' to 'gr63').  Register
            numbers not divisible by 4 are excluded not in the class but
            through the use of a machine mode larger than 8 bytes.
  
!      't'
!           Register in the class 'ICC_REGS' ('icc0' to 'icc3').
  
!      'u'
!           Register in the class 'FCC_REGS' ('fcc0' to 'fcc3').
  
!      'v'
!           Register in the class 'ICR_REGS' ('cc4' to 'cc7').
  
!      'w'
!           Register in the class 'FCR_REGS' ('cc0' to 'cc3').
  
!      'x'
!           Register in the class 'QUAD_FPR_REGS' ('fr0' to 'fr63').
            Register numbers not divisible by 4 are excluded not in the
            class but through the use of a machine mode larger than 8
            bytes.
  
!      'z'
!           Register in the class 'SPR_REGS' ('lcr' and 'lr').
  
!      'A'
!           Register in the class 'QUAD_ACC_REGS' ('acc0' to 'acc7').
  
!      'B'
!           Register in the class 'ACCG_REGS' ('accg0' to 'accg7').
  
!      'C'
!           Register in the class 'CR_REGS' ('cc0' to 'cc7').
  
!      'G'
            Floating point constant zero
  
!      'I'
            6-bit signed integer constant
  
!      'J'
            10-bit signed integer constant
  
!      'L'
            16-bit signed integer constant
  
!      'M'
            16-bit unsigned integer constant
  
!      'N'
            12-bit signed integer constant that is negative--i.e. in the
!           range of -2048 to -1
  
!      'O'
            Constant zero
  
!      'P'
            12-bit signed integer constant that is greater than zero--i.e.
            in the range of 1 to 2047.
  
! _FT32--'config/ft32/constraints.md'_
!      'A'
            An absolute address
  
!      'B'
            An offset address
  
!      'W'
            A register indirect memory operand
  
!      'e'
            An offset address.
  
!      'f'
            An offset address.
  
!      'O'
            The constant zero or one
  
!      'I'
!           A 16-bit signed constant (-32768 ... 32767)
  
!      'w'
            A bitfield mask suitable for bext or bins
  
!      'x'
            An inverted bitfield mask suitable for bext or bins
  
!      'L'
            A 16-bit unsigned constant, multiple of 4 (0 ... 65532)
  
!      'S'
!           A 20-bit signed constant (-524288 ... 524287)
  
!      'b'
            A constant for a bitfield width (1 ... 16)
  
!      'KA'
!           A 10-bit signed constant (-512 ... 511)
  
! _Hewlett-Packard PA-RISC--'config/pa/pa.h'_
!      'a'
            General register 1
  
!      'f'
            Floating point register
  
!      'q'
            Shift amount register
  
!      'x'
            Floating point register (deprecated)
  
!      'y'
            Upper floating point register (32-bit), floating point
            register (64-bit)
  
!      'Z'
            Any register
  
!      'I'
            Signed 11-bit integer constant
  
!      'J'
            Signed 14-bit integer constant
  
!      'K'
!           Integer constant that can be deposited with a 'zdepi'
            instruction
  
!      'L'
            Signed 5-bit integer constant
  
!      'M'
            Integer constant 0
  
!      'N'
!           Integer constant that can be loaded with a 'ldil' instruction
  
!      'O'
            Integer constant whose value plus one is a power of 2
  
!      'P'
!           Integer constant that can be used for 'and' operations in
!           'depi' and 'extru' instructions
  
!      'S'
            Integer constant 31
  
!      'U'
            Integer constant 63
  
!      'G'
            Floating-point constant 0.0
  
!      'A'
!           A 'lo_sum' data-linkage-table memory operand
  
!      'Q'
            A memory operand that can be used as the destination operand
            of an integer store instruction
  
!      'R'
            A scaled or unscaled indexed memory operand
  
!      'T'
            A memory operand for floating-point loads and stores
  
!      'W'
            A register indirect memory operand
  
! _Intel IA-64--'config/ia64/ia64.h'_
!      'a'
!           General register 'r0' to 'r3' for 'addl' instruction
  
!      'b'
            Branch register
  
!      'c'
!           Predicate register ('c' as in "conditional")
  
!      'd'
            Application register residing in M-unit
  
!      'e'
            Application register residing in I-unit
  
!      'f'
            Floating-point register
  
!      'm'
!           Memory operand.  If used together with '<' or '>', the operand
            can have postincrement and postdecrement which require
!           printing with '%Pn' on IA-64.
  
!      'G'
            Floating-point constant 0.0 or 1.0
  
!      'I'
            14-bit signed integer constant
  
!      'J'
            22-bit signed integer constant
  
!      'K'
            8-bit signed integer constant for logical instructions
  
!      'L'
            8-bit adjusted signed integer constant for compare pseudo-ops
  
!      'M'
            6-bit unsigned integer constant for shift counts
  
!      'N'
            9-bit signed integer constant for load and store
            postincrements
  
!      'O'
            The constant zero
  
!      'P'
!           0 or -1 for 'dep' instruction
  
!      'Q'
            Non-volatile memory for floating-point loads and stores
  
!      'R'
!           Integer constant in the range 1 to 4 for 'shladd' instruction
  
!      'S'
            Memory operand except postincrement and postdecrement.  This
!           is now roughly the same as 'm' when not used together with '<'
!           or '>'.
  
! _M32C--'config/m32c/m32c.cc'_
!      'Rsp'
!      'Rfb'
!      'Rsb'
!           '$sp', '$fb', '$sb'.
  
!      'Rcr'
            Any control register, when they're 16 bits wide (nothing if
            control registers are 24 bits wide)
  
!      'Rcl'
            Any control register, when they're 24 bits wide.
  
!      'R0w'
!      'R1w'
!      'R2w'
!      'R3w'
            $r0, $r1, $r2, $r3.
  
!      'R02'
            $r0 or $r2, or $r2r0 for 32 bit values.
  
!      'R13'
            $r1 or $r3, or $r3r1 for 32 bit values.
  
!      'Rdi'
            A register that can hold a 64 bit value.
  
!      'Rhl'
            $r0 or $r1 (registers with addressable high/low bytes)
  
!      'R23'
            $r2 or $r3
  
!      'Raa'
            Address registers
  
!      'Raw'
            Address registers when they're 16 bits wide.
  
!      'Ral'
            Address registers when they're 24 bits wide.
  
!      'Rqi'
            Registers that can hold QI values.
  
!      'Rad'
            Registers that can be used with displacements ($a0, $a1, $sb).
  
!      'Rsi'
            Registers that can hold 32 bit values.
  
!      'Rhi'
            Registers that can hold 16 bit values.
  
!      'Rhc'
            Registers chat can hold 16 bit values, including all control
            registers.
  
!      'Rra'
            $r0 through R1, plus $a0 and $a1.
  
!      'Rfl'
            The flags register.
  
!      'Rmm'
            The memory-based pseudo-registers $mem0 through $mem15.
  
!      'Rpi'
            Registers that can hold pointers (16 bit registers for r8c,
            m16c; 24 bit registers for m32cm, m32c).
  
!      'Rpa'
            Matches multiple registers in a PARALLEL to form a larger
            register.  Used to match function return values.
  
!      'Is3'
!           -8 ... 7
  
!      'IS1'
!           -128 ... 127
  
!      'IS2'
!           -32768 ... 32767
  
!      'IU2'
            0 ... 65535
  
!      'In4'
!           -8 ... -1 or 1 ... 8
  
!      'In5'
!           -16 ... -1 or 1 ... 16
  
!      'In6'
!           -32 ... -1 or 1 ... 32
  
!      'IM2'
!           -65536 ... -1
  
!      'Ilb'
            An 8 bit value with exactly one bit set.
  
!      'Ilw'
            A 16 bit value with exactly one bit set.
  
!      'Sd'
            The common src/dest memory addressing modes.
  
!      'Sa'
            Memory addressed using $a0 or $a1.
  
!      'Si'
            Memory addressed with immediate addresses.
  
!      'Ss'
            Memory addressed using the stack pointer ($sp).
  
!      'Sf'
            Memory addressed using the frame base register ($fb).
  
!      'Ss'
            Memory addressed using the small base register ($sb).
  
!      'S1'
            $r1h
  
! _LoongArch--'config/loongarch/constraints.md'_
!      'f'
            A floating-point or vector register (if available).
!      'k'
            A memory operand whose address is formed by a base register
            and (optionally scaled) index register.
!      'l'
            A signed 16-bit constant.
!      'm'
            A memory operand whose address is formed by a base register
            and offset that is suitable for use in instructions with the
!           same addressing mode as 'st.w' and 'ld.w'.
!      'I'
            A signed 12-bit constant (for arithmetic instructions).
!      'K'
            An unsigned 12-bit constant (for logic instructions).
!      'M'
!           A constant that cannot be loaded using 'lui', 'addiu' or
!           'ori'.
!      'N'
            A constant in the range -65535 to -1 (inclusive).
!      'O'
            A signed 15-bit constant.
!      'P'
            A constant in the range 1 to 65535 (inclusive).
!      'R'
            An address that can be used in a non-macro load or store.
!      'ZB'
            An address that is held in a general-purpose register.  The
            offset is zero.
!      'ZC'
            A memory operand whose address is formed by a base register
            and offset that is suitable for use in instructions with the
!           same addressing mode as 'll.w' and 'sc.w'.
  
! _MicroBlaze--'config/microblaze/constraints.md'_
!      'd'
!           A general register ('r0' to 'r31').
  
!      'z'
!           A status register ('rmsr', '$fcc1' to '$fcc7').
  
! _MIPS--'config/mips/constraints.md'_
!      'd'
!           A general-purpose register.  This is equivalent to 'r' unless
            generating MIPS16 code, in which case the MIPS16 register set
            is used.
  
!      'f'
            A floating-point register (if available).
  
!      'h'
!           Formerly the 'hi' register.  This constraint is no longer
            supported.
  
!      'l'
!           The 'lo' register.  Use this register to store values that are
            no bigger than a word.
  
!      'x'
!           The concatenated 'hi' and 'lo' registers.  Use this register
            to store doubleword values.
  
!      'c'
            A register suitable for use in an indirect jump.  This will
!           always be '$25' for '-mabicalls'.
  
!      'v'
!           Register '$3'.  Do not use this constraint in new code; it is
            retained only for compatibility with glibc.
  
!      'y'
!           Equivalent to 'r'; retained for backwards compatibility.
  
!      'z'
            A floating-point condition code register.
  
!      'I'
            A signed 16-bit constant (for arithmetic instructions).
  
!      'J'
            Integer zero.
  
!      'K'
            An unsigned 16-bit constant (for logic instructions).
  
!      'L'
            A signed 32-bit constant in which the lower 16 bits are zero.
!           Such constants can be loaded using 'lui'.
  
!      'M'
!           A constant that cannot be loaded using 'lui', 'addiu' or
!           'ori'.
  
!      'N'
!           A constant in the range -65535 to -1 (inclusive).
  
!      'O'
            A signed 15-bit constant.
  
!      'P'
            A constant in the range 1 to 65535 (inclusive).
  
!      'G'
            Floating-point zero.
  
!      'R'
            An address that can be used in a non-macro load or store.
  
!      'ZC'
            A memory operand whose address is formed by a base register
            and offset that is suitable for use in instructions with the
!           same addressing mode as 'll' and 'sc'.
  
!      'ZD'
!           An address suitable for a 'prefetch' instruction, or for any
!           other instruction with the same addressing mode as 'prefetch'.
  
! _Motorola 680x0--'config/m68k/constraints.md'_
!      'a'
            Address register
  
!      'd'
            Data register
  
!      'f'
            68881 floating-point register, if available
  
!      'I'
            Integer in the range 1 to 8
  
!      'J'
            16-bit signed number
  
!      'K'
            Signed number whose magnitude is greater than 0x80
  
!      'L'
!           Integer in the range -8 to -1
  
!      'M'
            Signed number whose magnitude is greater than 0x100
  
!      'N'
            Range 24 to 31, rotatert:SI 8 to 1 expressed as rotate
  
!      'O'
            16 (for rotate using swap)
  
!      'P'
            Range 8 to 15, rotatert:HI 8 to 1 expressed as rotate
  
!      'R'
            Numbers that mov3q can handle
  
!      'G'
            Floating point constant that is not a 68881 constant
  
!      'S'
            Operands that satisfy 'm' when -mpcrel is in effect
  
!      'T'
            Operands that satisfy 's' when -mpcrel is not in effect
  
!      'Q'
            Address register indirect addressing mode
  
!      'U'
            Register offset addressing
  
!      'W'
            const_call_operand
  
!      'Cs'
            symbol_ref or const
  
!      'Ci'
            const_int
  
!      'C0'
            const_int 0
  
!      'Cj'
            Range of signed numbers that don't fit in 16 bits
  
!      'Cmvq'
            Integers valid for mvq
  
!      'Capsw'
            Integers valid for a moveq followed by a swap
  
!      'Cmvz'
            Integers valid for mvz
  
!      'Cmvs'
            Integers valid for mvs
  
!      'Ap'
            push_operand
  
!      'Ac'
            Non-register operands allowed in clr
  
! _Moxie--'config/moxie/constraints.md'_
!      'A'
            An absolute address
  
!      'B'
            An offset address
  
!      'W'
            A register indirect memory operand
  
!      'I'
            A constant in the range of 0 to 255.
  
!      'N'
!           A constant in the range of 0 to -255.
  
! _MSP430-'config/msp430/constraints.md'_
  
!      'R12'
            Register R12.
  
!      'R13'
            Register R13.
  
!      'K'
            Integer constant 1.
  
!      'L'
            Integer constant -1^20..1^19.
  
!      'M'
            Integer constant 1-4.
  
!      'Ya'
            Memory references which do not require an extended MOVX
            instruction.
  
!      'Yl'
            Memory reference, labels only.
  
!      'Ys'
            Memory reference, stack only.
  
! _NDS32--'config/nds32/constraints.md'_
!      'w'
            LOW register class $r0 to $r7 constraint for V3/V3M ISA.
!      'l'
            LOW register class $r0 to $r7.
!      'd'
            MIDDLE register class $r0 to $r11, $r16 to $r19.
!      'h'
            HIGH register class $r12 to $r14, $r20 to $r31.
!      't'
            Temporary assist register $ta (i.e. $r15).
!      'k'
            Stack register $sp.
!      'Iu03'
            Unsigned immediate 3-bit value.
!      'In03'
!           Negative immediate 3-bit value in the range of -7-0.
!      'Iu04'
            Unsigned immediate 4-bit value.
!      'Is05'
            Signed immediate 5-bit value.
!      'Iu05'
            Unsigned immediate 5-bit value.
!      'In05'
!           Negative immediate 5-bit value in the range of -31-0.
!      'Ip05'
            Unsigned immediate 5-bit value for movpi45 instruction with
            range 16-47.
!      'Iu06'
            Unsigned immediate 6-bit value constraint for addri36.sp
            instruction.
!      'Iu08'
            Unsigned immediate 8-bit value.
!      'Iu09'
            Unsigned immediate 9-bit value.
!      'Is10'
            Signed immediate 10-bit value.
!      'Is11'
            Signed immediate 11-bit value.
!      'Is15'
            Signed immediate 15-bit value.
!      'Iu15'
            Unsigned immediate 15-bit value.
!      'Ic15'
            A constant which is not in the range of imm15u but ok for bclr
            instruction.
!      'Ie15'
            A constant which is not in the range of imm15u but ok for bset
            instruction.
!      'It15'
            A constant which is not in the range of imm15u but ok for btgl
            instruction.
!      'Ii15'
            A constant whose compliment value is in the range of imm15u
            and ok for bitci instruction.
!      'Is16'
            Signed immediate 16-bit value.
!      'Is17'
            Signed immediate 17-bit value.
!      'Is19'
            Signed immediate 19-bit value.
!      'Is20'
            Signed immediate 20-bit value.
!      'Ihig'
            The immediate value that can be simply set high 20-bit.
!      'Izeb'
            The immediate value 0xff.
!      'Izeh'
            The immediate value 0xffff.
!      'Ixls'
            The immediate value 0x01.
!      'Ix11'
            The immediate value 0x7ff.
!      'Ibms'
            The immediate value with power of 2.
!      'Ifex'
            The immediate value with power of 2 minus 1.
!      'U33'
            Memory constraint for 333 format.
!      'U45'
            Memory constraint for 45 format.
!      'U37'
            Memory constraint for 37 format.
  
! _OpenRISC--'config/or1k/constraints.md'_
!      'I'
            Integer that is valid as an immediate operand in an
!           instruction taking a signed 16-bit number.  Range -32768 to
            32767.
  
!      'K'
            Integer that is valid as an immediate operand in an
            instruction taking an unsigned 16-bit number.  Range 0 to
            65535.
  
!      'M'
            Signed 16-bit constant shifted left 16 bits.  (Used with
!           'l.movhi')
  
!      'O'
            Zero
  
! _PDP-11--'config/pdp11/constraints.md'_
!      'a'
            Floating point registers AC0 through AC3.  These can be loaded
            from/to memory with a single instruction.
  
!      'd'
            Odd numbered general registers (R1, R3, R5).  These are used
            for 16-bit multiply operations.
  
!      'D'
            A memory reference that is encoded within the opcode, but not
            auto-increment or auto-decrement.
  
!      'f'
            Any of the floating point registers (AC0 through AC5).
  
!      'G'
            Floating point constant 0.
  
!      'h'
            Floating point registers AC4 and AC5.  These cannot be loaded
            from/to memory with a single instruction.
  
!      'I'
            An integer constant that fits in 16 bits.
  
!      'J'
            An integer constant whose low order 16 bits are zero.
  
!      'K'
            An integer constant that does not meet the constraints for
!           codes 'I' or 'J'.
  
!      'L'
            The integer constant 1.
  
!      'M'
!           The integer constant -1.
  
!      'N'
            The integer constant 0.
  
!      'O'
            Integer constants 0 through 3; shifts by these amounts are
            handled as multiple single-bit shifts rather than a single
            variable-length shift.
  
!      'Q'
            A memory reference which requires an additional word (address
            or offset) after the opcode.
  
!      'R'
            A memory reference that is encoded within the opcode.
  
! _PowerPC and IBM RS6000--'config/rs6000/constraints.md'_
!      'r'
!           A general purpose register (GPR), 'r0'...'r31'.
  
!      'b'
!           A base register.  Like 'r', but 'r0' is not allowed, so
!           'r1'...'r31'.
  
!      'f'
!           A floating point register (FPR), 'f0'...'f31'.
  
!      'd'
!           A floating point register.  This is the same as 'f' nowadays;
!           historically 'f' was for single-precision and 'd' was for
            double-precision floating point.
  
!      'v'
!           An Altivec vector register (VR), 'v0'...'v31'.
  
!      'wa'
!           A VSX register (VSR), 'vs0'...'vs63'.  This is either an FPR
!           ('vs0'...'vs31' are 'f0'...'f31') or a VR ('vs32'...'vs63' are
!           'v0'...'v31').
  
!           When using 'wa', you should use the '%x' output modifier, so
            that the correct register number is printed.  For example:
  
                 asm ("xvadddp %x0,%x1,%x2"
                      : "=wa" (v1)
                      : "wa" (v2), "wa" (v3));
  
!           You should not use '%x' for 'v' operands:
  
                 asm ("xsaddqp %0,%1,%2"
                      : "=v" (v1)
                      : "v" (v2), "v" (v3));
  
!      'c'
!           The count register, 'ctr'.
  
!      'l'
!           The link register, 'lr'.
  
!      'x'
!           Condition register field 0, 'cr0'.
  
!      'y'
!           Any condition register field, 'cr0'...'cr7'.
  
!      'I'
            A signed 16-bit constant.
  
!      'J'
!           An unsigned 16-bit constant shifted left 16 bits (use 'L'
!           instead for 'SImode' constants).
  
!      'K'
            An unsigned 16-bit constant.
  
!      'L'
            A signed 16-bit constant shifted left 16 bits.
  
!      'eI'
            A signed 34-bit integer constant if prefixed instructions are
            supported.
  
!      'eP'
            A scalar floating point constant or a vector constant that can
            be loaded to a VSX register with one prefixed instruction.
  
!      'eQ'
            An IEEE 128-bit constant that can be loaded into a VSX
!           register with the 'lxvkq' instruction.
  
!      'm'
!           A memory operand.  Normally, 'm' does not allow addresses that
!           update the base register.  If the '<' or '>' constraint is
            also used, they are allowed and therefore on PowerPC targets
!           in that case it is only safe to use 'm<>' in an 'asm'
!           statement if that 'asm' statement accesses the operand exactly
!           once.  The 'asm' statement must also use '%U<OPNO>' as a
            placeholder for the "update" flag in the corresponding load or
            store instruction.  For example:
  
--- 47267,48735 ----
  ............................................
  
  Whenever possible, you should use the general-purpose constraint letters
! in â€˜asmâ€™ arguments, since they will convey meaning more readily to
  people reading your code.  Failing that, use the constraint letters that
  usually have very similar meanings across architectures.  The most
! commonly used constraints are â€˜mâ€™ and â€˜râ€™ (for memory and
  general-purpose registers respectively; *note Simple Constraints::), and
! â€˜Iâ€™, usually the letter indicating the most common immediate-constant
  format.
  
   Each architecture defines additional constraints.  These constraints
  are used by the compiler itself for instruction generation, as well as
! for â€˜asmâ€™ statements; therefore, some of the constraints are not
! particularly useful for â€˜asmâ€™.  Here is a summary of some of the
  machine-dependent constraints available on some particular machines; it
! includes both constraints that are useful for â€˜asmâ€™ and constraints that
  aren't.  The compiler source file mentioned in the table heading for
  each architecture is the definitive reference for the meanings of that
  architecture's constraints.
  
! _AArch64 family--â€˜config/aarch64/constraints.mdâ€™_
!      â€˜kâ€™
!           The stack pointer register (â€˜SPâ€™)
  
!      â€˜wâ€™
            Floating point register, Advanced SIMD vector register or SVE
            vector register
  
!      â€˜xâ€™
!           Like â€˜wâ€™, but restricted to registers 0 to 15 inclusive.
  
!      â€˜yâ€™
!           Like â€˜wâ€™, but restricted to registers 0 to 7 inclusive.
  
!      â€˜Uplâ€™
!           One of the low eight SVE predicate registers (â€˜P0â€™ to â€˜P7â€™)
  
!      â€˜Upaâ€™
!           Any of the SVE predicate registers (â€˜P0â€™ to â€˜P15â€™)
  
!      â€˜Iâ€™
            Integer constant that is valid as an immediate operand in an
!           â€˜ADDâ€™ instruction
  
!      â€˜Jâ€™
            Integer constant that is valid as an immediate operand in a
!           â€˜SUBâ€™ instruction (once negated)
  
!      â€˜Kâ€™
            Integer constant that can be used with a 32-bit logical
            instruction
  
!      â€˜Lâ€™
            Integer constant that can be used with a 64-bit logical
            instruction
  
!      â€˜Mâ€™
            Integer constant that is valid as an immediate operand in a
!           32-bit â€˜MOVâ€™ pseudo instruction.  The â€˜MOVâ€™ may be assembled
            to one of several different machine instructions depending on
            the value
  
!      â€˜Nâ€™
            Integer constant that is valid as an immediate operand in a
!           64-bit â€˜MOVâ€™ pseudo instruction
  
!      â€˜Sâ€™
            An absolute symbolic address or a label reference
  
!      â€˜Yâ€™
            Floating point constant zero
  
!      â€˜Zâ€™
            Integer constant zero
  
!      â€˜Ushâ€™
            The high part (bits 12 and upwards) of the pc-relative address
            of a symbol within 4GB of the instruction
  
!      â€˜Qâ€™
            A memory address which uses a single base register with no
            offset
  
!      â€˜Umpâ€™
            A memory address suitable for a load/store pair instruction in
            SI, DI, SF and DF modes
  
! _AMD GCN --â€˜config/gcn/constraints.mdâ€™_
!      â€˜Iâ€™
!           Immediate integer in the range âˆ’16 to 64
  
!      â€˜Jâ€™
            Immediate 16-bit signed integer
  
!      â€˜Kfâ€™
!           Immediate constant âˆ’1
  
!      â€˜Lâ€™
            Immediate 15-bit unsigned integer
  
!      â€˜Aâ€™
            Immediate constant that can be inlined in an instruction
!           encoding: integer âˆ’16..64, or float 0.0, +/âˆ’0.5, +/âˆ’1.0,
!           +/âˆ’2.0, +/âˆ’4.0, 1.0/(2.0*PI)
  
!      â€˜Bâ€™
            Immediate 32-bit signed integer that can be attached to an
            instruction encoding
  
!      â€˜Câ€™
!           Immediate 32-bit integer in range âˆ’16..4294967295 (i.e.
!           32-bit unsigned integer or â€˜Aâ€™ constraint)
  
!      â€˜DAâ€™
!           Immediate 64-bit constant that can be split into two â€˜Aâ€™
            constants
  
!      â€˜DBâ€™
!           Immediate 64-bit constant that can be split into two â€˜Bâ€™
            constants
  
!      â€˜Uâ€™
!           Any â€˜unspecâ€™
  
!      â€˜Yâ€™
!           Any â€˜symbol_refâ€™ or â€˜label_refâ€™
  
!      â€˜vâ€™
            VGPR register
  
!      â€˜aâ€™
            Accelerator VGPR register (CDNA1 onwards)
  
!      â€˜Sgâ€™
            SGPR register
  
!      â€˜SDâ€™
            SGPR registers valid for instruction destinations, including
            VCC, M0 and EXEC
  
!      â€˜SSâ€™
            SGPR registers valid for instruction sources, including VCC,
            M0, EXEC and SCC
  
!      â€˜Smâ€™
            SGPR registers valid as a source for scalar memory
            instructions (excludes M0 and EXEC)
  
!      â€˜Svâ€™
            SGPR registers valid as a source or destination for vector
            instructions (excludes EXEC)
  
!      â€˜caâ€™
            All condition registers: SCC, VCCZ, EXECZ
  
!      â€˜csâ€™
            Scalar condition register: SCC
  
!      â€˜cVâ€™
            Vector condition register: VCC, VCC_LO, VCC_HI
  
!      â€˜eâ€™
            EXEC register (EXEC_LO and EXEC_HI)
  
!      â€˜RBâ€™
!           Memory operand with address space suitable for â€˜buffer_*â€™
            instructions
  
!      â€˜RFâ€™
!           Memory operand with address space suitable for â€˜flat_*â€™
            instructions
  
!      â€˜RSâ€™
!           Memory operand with address space suitable for â€˜s_*â€™
            instructions
  
!      â€˜RLâ€™
!           Memory operand with address space suitable for â€˜ds_*â€™ LDS
            instructions
  
!      â€˜RGâ€™
!           Memory operand with address space suitable for â€˜ds_*â€™ GDS
            instructions
  
!      â€˜RDâ€™
!           Memory operand with address space suitable for any â€˜ds_*â€™
            instructions
  
!      â€˜RMâ€™
!           Memory operand with address space suitable for â€˜global_*â€™
            instructions
  
! _ARC --â€˜config/arc/constraints.mdâ€™_
!      â€˜qâ€™
!           Registers usable in ARCompact 16-bit instructions: â€˜r0â€™-â€˜r3â€™,
!           â€˜r12â€™-â€˜r15â€™.  This constraint can only match when the â€˜-mqâ€™
            option is in effect.
  
!      â€˜eâ€™
            Registers usable as base-regs of memory addresses in ARCompact
!           16-bit memory instructions: â€˜r0â€™-â€˜r3â€™, â€˜r12â€™-â€˜r15â€™, â€˜spâ€™.
!           This constraint can only match when the â€˜-mqâ€™ option is in
            effect.
!      â€˜Dâ€™
!           ARC FPX (dpfp) 64-bit registers.  â€˜D0â€™, â€˜D1â€™.
  
!      â€˜Iâ€™
            A signed 12-bit integer constant.
  
!      â€˜Calâ€™
            constant for arithmetic/logical operations.  This might be any
            constant that can be put into a long immediate by the assmbler
            or linker without involving a PIC relocation.
  
!      â€˜Kâ€™
            A 3-bit unsigned integer constant.
  
!      â€˜Lâ€™
            A 6-bit unsigned integer constant.
  
!      â€˜CnLâ€™
            One's complement of a 6-bit unsigned integer constant.
  
!      â€˜CmLâ€™
            Two's complement of a 6-bit unsigned integer constant.
  
!      â€˜Mâ€™
            A 5-bit unsigned integer constant.
  
!      â€˜Oâ€™
            A 7-bit unsigned integer constant.
  
!      â€˜Pâ€™
            A 8-bit unsigned integer constant.
  
!      â€˜Hâ€™
            Any const_double value.
  
! _ARM family--â€˜config/arm/constraints.mdâ€™_
  
!      â€˜hâ€™
!           In Thumb state, the core registers â€˜r8â€™-â€˜r15â€™.
  
!      â€˜kâ€™
            The stack pointer register.
  
!      â€˜lâ€™
!           In Thumb State the core registers â€˜r0â€™-â€˜r7â€™.  In ARM state
!           this is an alias for the â€˜râ€™ constraint.
  
!      â€˜tâ€™
!           VFP floating-point registers â€˜s0â€™-â€˜s31â€™.  Used for 32 bit
            values.
  
!      â€˜wâ€™
!           VFP floating-point registers â€˜d0â€™-â€˜d31â€™ and the appropriate
!           subset â€˜d0â€™-â€˜d15â€™ based on command line options.  Used for 64
            bit values only.  Not valid for Thumb1.
  
!      â€˜yâ€™
            The iWMMX co-processor registers.
  
!      â€˜zâ€™
            The iWMMX GR registers.
  
!      â€˜Gâ€™
            The floating-point constant 0.0
  
!      â€˜Iâ€™
            Integer that is valid as an immediate operand in a data
            processing instruction.  That is, an integer in the range 0 to
            255 rotated by a multiple of 2
  
!      â€˜Jâ€™
!           Integer in the range âˆ’4095 to 4095
  
!      â€˜Kâ€™
!           Integer that satisfies constraint â€˜Iâ€™ when inverted (ones
            complement)
  
!      â€˜Lâ€™
!           Integer that satisfies constraint â€˜Iâ€™ when negated (twos
            complement)
  
!      â€˜Mâ€™
            Integer in the range 0 to 32
  
!      â€˜Qâ€™
            A memory reference where the exact address is in a single
!           register ('â€˜mâ€™' is preferable for â€˜asmâ€™ statements)
  
!      â€˜Râ€™
            An item in the constant pool
  
!      â€˜Sâ€™
            A symbol in the text segment of the current file
  
!      â€˜Uvâ€™
            A memory reference suitable for VFP load/store insns
            (reg+constant offset)
  
!      â€˜Uyâ€™
            A memory reference suitable for iWMMXt load/store
            instructions.
  
!      â€˜Uqâ€™
            A memory reference suitable for the ARMv4 ldrsb instruction.
  
! _AVR family--â€˜config/avr/constraints.mdâ€™_
!      â€˜lâ€™
            Registers from r0 to r15
  
!      â€˜aâ€™
            Registers from r16 to r23
  
!      â€˜dâ€™
            Registers from r16 to r31
  
!      â€˜wâ€™
            Registers from r24 to r31.  These registers can be used in
!           â€˜adiwâ€™ command
  
!      â€˜eâ€™
            Pointer register (r26-r31)
  
!      â€˜bâ€™
            Base pointer register (r28-r31)
  
!      â€˜qâ€™
            Stack pointer register (SPH:SPL)
  
!      â€˜tâ€™
            Temporary register r0
  
!      â€˜xâ€™
            Register pair X (r27:r26)
  
!      â€˜yâ€™
            Register pair Y (r29:r28)
  
!      â€˜zâ€™
            Register pair Z (r31:r30)
  
!      â€˜Iâ€™
!           Constant greater than âˆ’1, less than 64
  
!      â€˜Jâ€™
!           Constant greater than âˆ’64, less than 1
  
!      â€˜Kâ€™
            Constant integer 2
  
!      â€˜Lâ€™
            Constant integer 0
  
!      â€˜Mâ€™
            Constant that fits in 8 bits
  
!      â€˜Nâ€™
!           Constant integer âˆ’1
  
!      â€˜Oâ€™
            Constant integer 8, 16, or 24
  
!      â€˜Pâ€™
            Constant integer 1
  
!      â€˜Gâ€™
            A floating point constant 0.0
  
!      â€˜Qâ€™
            A memory address based on Y or Z pointer with displacement.
  
! _Blackfin family--â€˜config/bfin/constraints.mdâ€™_
!      â€˜aâ€™
            P register
  
!      â€˜dâ€™
            D register
  
!      â€˜zâ€™
            A call clobbered P register.
  
!      â€˜qNâ€™
            A single register.  If N is in the range 0 to 7, the
!           corresponding D register.  If it is â€˜Aâ€™, then the register P0.
  
!      â€˜Dâ€™
            Even-numbered D register
  
!      â€˜Wâ€™
            Odd-numbered D register
  
!      â€˜eâ€™
            Accumulator register.
  
!      â€˜Aâ€™
            Even-numbered accumulator register.
  
!      â€˜Bâ€™
            Odd-numbered accumulator register.
  
!      â€˜bâ€™
            I register
  
!      â€˜vâ€™
            B register
  
!      â€˜fâ€™
            M register
  
!      â€˜câ€™
            Registers used for circular buffering, i.e. I, B, or L
            registers.
  
!      â€˜Câ€™
            The CC register.
  
!      â€˜tâ€™
            LT0 or LT1.
  
!      â€˜kâ€™
            LC0 or LC1.
  
!      â€˜uâ€™
            LB0 or LB1.
  
!      â€˜xâ€™
            Any D, P, B, M, I or L register.
  
!      â€˜yâ€™
            Additional registers typically used only in prologues and
            epilogues: RETS, RETN, RETI, RETX, RETE, ASTAT, SEQSTAT and
            USP.
  
!      â€˜wâ€™
            Any register except accumulators or CC.
  
!      â€˜Kshâ€™
!           Signed 16 bit integer (in the range âˆ’32768 to 32767)
  
!      â€˜Kuhâ€™
            Unsigned 16 bit integer (in the range 0 to 65535)
  
!      â€˜Ks7â€™
!           Signed 7 bit integer (in the range âˆ’64 to 63)
  
!      â€˜Ku7â€™
            Unsigned 7 bit integer (in the range 0 to 127)
  
!      â€˜Ku5â€™
            Unsigned 5 bit integer (in the range 0 to 31)
  
!      â€˜Ks4â€™
!           Signed 4 bit integer (in the range âˆ’8 to 7)
  
!      â€˜Ks3â€™
!           Signed 3 bit integer (in the range âˆ’3 to 4)
  
!      â€˜Ku3â€™
            Unsigned 3 bit integer (in the range 0 to 7)
  
!      â€˜PNâ€™
            Constant N, where N is a single-digit constant in the range 0
            to 4.
  
!      â€˜PAâ€™
            An integer equal to one of the MACFLAG_XXX constants that is
            suitable for use with either accumulator.
  
!      â€˜PBâ€™
            An integer equal to one of the MACFLAG_XXX constants that is
            suitable for use only with accumulator A1.
  
!      â€˜M1â€™
            Constant 255.
  
!      â€˜M2â€™
            Constant 65535.
  
!      â€˜Jâ€™
            An integer constant with exactly a single bit set.
  
!      â€˜Lâ€™
            An integer constant with all bits set except exactly one.
  
!      â€˜Hâ€™
!      â€˜Qâ€™
            Any SYMBOL_REF.
  
! _C-SKY--â€˜config/csky/constraints.mdâ€™_
  
!      â€˜aâ€™
            The mini registers r0 - r7.
  
!      â€˜bâ€™
            The low registers r0 - r15.
  
!      â€˜câ€™
            C register.
  
!      â€˜yâ€™
            HI and LO registers.
  
!      â€˜lâ€™
            LO register.
  
!      â€˜hâ€™
            HI register.
  
!      â€˜vâ€™
            Vector registers.
  
!      â€˜zâ€™
            Stack pointer register (SP).
  
!      â€˜Qâ€™
            A memory address which uses a base register with a short
            offset or with a index register with its scale.
  
!      â€˜Wâ€™
            A memory address which uses a base register with a index
            register with its scale.
  
! _Epiphany--â€˜config/epiphany/constraints.mdâ€™_
!      â€˜U16â€™
            An unsigned 16-bit constant.
  
!      â€˜Kâ€™
            An unsigned 5-bit constant.
  
!      â€˜Lâ€™
            A signed 11-bit constant.
  
!      â€˜Cm1â€™
!           A signed 11-bit constant added to âˆ’1.  Can only match when the
!           â€˜-m1reg-REGâ€™ option is active.
  
!      â€˜Cl1â€™
!           Left-shift of âˆ’1, i.e., a bit mask with a block of leading
            ones, the rest being a block of trailing zeroes.  Can only
!           match when the â€˜-m1reg-REGâ€™ option is active.
  
!      â€˜Cr1â€™
!           Right-shift of âˆ’1, i.e., a bit mask with a trailing block of
            ones, the rest being zeroes.  Or to put it another way, one
            less than a power of two.  Can only match when the
!           â€˜-m1reg-REGâ€™ option is active.
  
!      â€˜Calâ€™
!           Constant for arithmetic/logical operations.  This is like â€˜iâ€™,
            except that for position independent code, no symbols /
            expressions needing relocations are allowed.
  
!      â€˜Csyâ€™
            Symbolic constant for call/jump instruction.
  
!      â€˜Rcsâ€™
            The register class usable in short insns.  This is a register
            class constraint, and can thus drive register allocation.
!           This constraint won't match unless â€˜-mprefer-short-insn-regsâ€™
            is in effect.
  
!      â€˜Rscâ€™
            The register class of registers that can be used to hold a
            sibcall call address.  I.e., a caller-saved register.
  
!      â€˜Rctâ€™
            Core control register class.
  
!      â€˜Rgsâ€™
            The register group usable in short insns.  This constraint
            does not use a register class, so that it only passively
            matches suitable registers, and doesn't drive register
            allocation.
  
!      â€˜Rraâ€™
            Matches the return address if it can be replaced with the link
            register.
  
!      â€˜Rccâ€™
            Matches the integer condition code register.
  
!      â€˜Sraâ€™
            Matches the return address if it is in a stack slot.
  
!      â€˜Cfmâ€™
            Matches control register values to switch fp mode, which are
!           encapsulated in â€˜UNSPEC_FP_MODEâ€™.
  
! _FRV--â€˜config/frv/frv.hâ€™_
!      â€˜aâ€™
!           Register in the class â€˜ACC_REGSâ€™ (â€˜acc0â€™ to â€˜acc7â€™).
  
!      â€˜bâ€™
!           Register in the class â€˜EVEN_ACC_REGSâ€™ (â€˜acc0â€™ to â€˜acc7â€™).
  
!      â€˜câ€™
!           Register in the class â€˜CC_REGSâ€™ (â€˜fcc0â€™ to â€˜fcc3â€™ and â€˜icc0â€™
!           to â€˜icc3â€™).
  
!      â€˜dâ€™
!           Register in the class â€˜GPR_REGSâ€™ (â€˜gr0â€™ to â€˜gr63â€™).
  
!      â€˜eâ€™
!           Register in the class â€˜EVEN_REGSâ€™ (â€˜gr0â€™ to â€˜gr63â€™).  Odd
            registers are excluded not in the class but through the use of
            a machine mode larger than 4 bytes.
  
!      â€˜fâ€™
!           Register in the class â€˜FPR_REGSâ€™ (â€˜fr0â€™ to â€˜fr63â€™).
  
!      â€˜hâ€™
!           Register in the class â€˜FEVEN_REGSâ€™ (â€˜fr0â€™ to â€˜fr63â€™).  Odd
            registers are excluded not in the class but through the use of
            a machine mode larger than 4 bytes.
  
!      â€˜lâ€™
!           Register in the class â€˜LR_REGâ€™ (the â€˜lrâ€™ register).
  
!      â€˜qâ€™
!           Register in the class â€˜QUAD_REGSâ€™ (â€˜gr2â€™ to â€˜gr63â€™).  Register
            numbers not divisible by 4 are excluded not in the class but
            through the use of a machine mode larger than 8 bytes.
  
!      â€˜tâ€™
!           Register in the class â€˜ICC_REGSâ€™ (â€˜icc0â€™ to â€˜icc3â€™).
  
!      â€˜uâ€™
!           Register in the class â€˜FCC_REGSâ€™ (â€˜fcc0â€™ to â€˜fcc3â€™).
  
!      â€˜vâ€™
!           Register in the class â€˜ICR_REGSâ€™ (â€˜cc4â€™ to â€˜cc7â€™).
  
!      â€˜wâ€™
!           Register in the class â€˜FCR_REGSâ€™ (â€˜cc0â€™ to â€˜cc3â€™).
  
!      â€˜xâ€™
!           Register in the class â€˜QUAD_FPR_REGSâ€™ (â€˜fr0â€™ to â€˜fr63â€™).
            Register numbers not divisible by 4 are excluded not in the
            class but through the use of a machine mode larger than 8
            bytes.
  
!      â€˜zâ€™
!           Register in the class â€˜SPR_REGSâ€™ (â€˜lcrâ€™ and â€˜lrâ€™).
  
!      â€˜Aâ€™
!           Register in the class â€˜QUAD_ACC_REGSâ€™ (â€˜acc0â€™ to â€˜acc7â€™).
  
!      â€˜Bâ€™
!           Register in the class â€˜ACCG_REGSâ€™ (â€˜accg0â€™ to â€˜accg7â€™).
  
!      â€˜Câ€™
!           Register in the class â€˜CR_REGSâ€™ (â€˜cc0â€™ to â€˜cc7â€™).
  
!      â€˜Gâ€™
            Floating point constant zero
  
!      â€˜Iâ€™
            6-bit signed integer constant
  
!      â€˜Jâ€™
            10-bit signed integer constant
  
!      â€˜Lâ€™
            16-bit signed integer constant
  
!      â€˜Mâ€™
            16-bit unsigned integer constant
  
!      â€˜Nâ€™
            12-bit signed integer constant that is negative--i.e. in the
!           range of âˆ’2048 to âˆ’1
  
!      â€˜Oâ€™
            Constant zero
  
!      â€˜Pâ€™
            12-bit signed integer constant that is greater than zero--i.e.
            in the range of 1 to 2047.
  
! _FT32--â€˜config/ft32/constraints.mdâ€™_
!      â€˜Aâ€™
            An absolute address
  
!      â€˜Bâ€™
            An offset address
  
!      â€˜Wâ€™
            A register indirect memory operand
  
!      â€˜eâ€™
            An offset address.
  
!      â€˜fâ€™
            An offset address.
  
!      â€˜Oâ€™
            The constant zero or one
  
!      â€˜Iâ€™
!           A 16-bit signed constant (âˆ’32768 ... 32767)
  
!      â€˜wâ€™
            A bitfield mask suitable for bext or bins
  
!      â€˜xâ€™
            An inverted bitfield mask suitable for bext or bins
  
!      â€˜Lâ€™
            A 16-bit unsigned constant, multiple of 4 (0 ... 65532)
  
!      â€˜Sâ€™
!           A 20-bit signed constant (âˆ’524288 ... 524287)
  
!      â€˜bâ€™
            A constant for a bitfield width (1 ... 16)
  
!      â€˜KAâ€™
!           A 10-bit signed constant (âˆ’512 ... 511)
  
! _Hewlett-Packard PA-RISC--â€˜config/pa/pa.hâ€™_
!      â€˜aâ€™
            General register 1
  
!      â€˜fâ€™
            Floating point register
  
!      â€˜qâ€™
            Shift amount register
  
!      â€˜xâ€™
            Floating point register (deprecated)
  
!      â€˜yâ€™
            Upper floating point register (32-bit), floating point
            register (64-bit)
  
!      â€˜Zâ€™
            Any register
  
!      â€˜Iâ€™
            Signed 11-bit integer constant
  
!      â€˜Jâ€™
            Signed 14-bit integer constant
  
!      â€˜Kâ€™
!           Integer constant that can be deposited with a â€˜zdepiâ€™
            instruction
  
!      â€˜Lâ€™
            Signed 5-bit integer constant
  
!      â€˜Mâ€™
            Integer constant 0
  
!      â€˜Nâ€™
!           Integer constant that can be loaded with a â€˜ldilâ€™ instruction
  
!      â€˜Oâ€™
            Integer constant whose value plus one is a power of 2
  
!      â€˜Pâ€™
!           Integer constant that can be used for â€˜andâ€™ operations in
!           â€˜depiâ€™ and â€˜extruâ€™ instructions
  
!      â€˜Sâ€™
            Integer constant 31
  
!      â€˜Uâ€™
            Integer constant 63
  
!      â€˜Gâ€™
            Floating-point constant 0.0
  
!      â€˜Aâ€™
!           A â€˜lo_sumâ€™ data-linkage-table memory operand
  
!      â€˜Qâ€™
            A memory operand that can be used as the destination operand
            of an integer store instruction
  
!      â€˜Râ€™
            A scaled or unscaled indexed memory operand
  
!      â€˜Tâ€™
            A memory operand for floating-point loads and stores
  
!      â€˜Wâ€™
            A register indirect memory operand
  
! _Intel IA-64--â€˜config/ia64/ia64.hâ€™_
!      â€˜aâ€™
!           General register â€˜r0â€™ to â€˜r3â€™ for â€˜addlâ€™ instruction
  
!      â€˜bâ€™
            Branch register
  
!      â€˜câ€™
!           Predicate register (â€˜câ€™ as in "conditional")
  
!      â€˜dâ€™
            Application register residing in M-unit
  
!      â€˜eâ€™
            Application register residing in I-unit
  
!      â€˜fâ€™
            Floating-point register
  
!      â€˜mâ€™
!           Memory operand.  If used together with â€˜<â€™ or â€˜>â€™, the operand
            can have postincrement and postdecrement which require
!           printing with â€˜%Pnâ€™ on IA-64.
  
!      â€˜Gâ€™
            Floating-point constant 0.0 or 1.0
  
!      â€˜Iâ€™
            14-bit signed integer constant
  
!      â€˜Jâ€™
            22-bit signed integer constant
  
!      â€˜Kâ€™
            8-bit signed integer constant for logical instructions
  
!      â€˜Lâ€™
            8-bit adjusted signed integer constant for compare pseudo-ops
  
!      â€˜Mâ€™
            6-bit unsigned integer constant for shift counts
  
!      â€˜Nâ€™
            9-bit signed integer constant for load and store
            postincrements
  
!      â€˜Oâ€™
            The constant zero
  
!      â€˜Pâ€™
!           0 or âˆ’1 for â€˜depâ€™ instruction
  
!      â€˜Qâ€™
            Non-volatile memory for floating-point loads and stores
  
!      â€˜Râ€™
!           Integer constant in the range 1 to 4 for â€˜shladdâ€™ instruction
  
!      â€˜Sâ€™
            Memory operand except postincrement and postdecrement.  This
!           is now roughly the same as â€˜mâ€™ when not used together with â€˜<â€™
!           or â€˜>â€™.
  
! _M32C--â€˜config/m32c/m32c.ccâ€™_
!      â€˜Rspâ€™
!      â€˜Rfbâ€™
!      â€˜Rsbâ€™
!           â€˜$spâ€™, â€˜$fbâ€™, â€˜$sbâ€™.
  
!      â€˜Rcrâ€™
            Any control register, when they're 16 bits wide (nothing if
            control registers are 24 bits wide)
  
!      â€˜Rclâ€™
            Any control register, when they're 24 bits wide.
  
!      â€˜R0wâ€™
!      â€˜R1wâ€™
!      â€˜R2wâ€™
!      â€˜R3wâ€™
            $r0, $r1, $r2, $r3.
  
!      â€˜R02â€™
            $r0 or $r2, or $r2r0 for 32 bit values.
  
!      â€˜R13â€™
            $r1 or $r3, or $r3r1 for 32 bit values.
  
!      â€˜Rdiâ€™
            A register that can hold a 64 bit value.
  
!      â€˜Rhlâ€™
            $r0 or $r1 (registers with addressable high/low bytes)
  
!      â€˜R23â€™
            $r2 or $r3
  
!      â€˜Raaâ€™
            Address registers
  
!      â€˜Rawâ€™
            Address registers when they're 16 bits wide.
  
!      â€˜Ralâ€™
            Address registers when they're 24 bits wide.
  
!      â€˜Rqiâ€™
            Registers that can hold QI values.
  
!      â€˜Radâ€™
            Registers that can be used with displacements ($a0, $a1, $sb).
  
!      â€˜Rsiâ€™
            Registers that can hold 32 bit values.
  
!      â€˜Rhiâ€™
            Registers that can hold 16 bit values.
  
!      â€˜Rhcâ€™
            Registers chat can hold 16 bit values, including all control
            registers.
  
!      â€˜Rraâ€™
            $r0 through R1, plus $a0 and $a1.
  
!      â€˜Rflâ€™
            The flags register.
  
!      â€˜Rmmâ€™
            The memory-based pseudo-registers $mem0 through $mem15.
  
!      â€˜Rpiâ€™
            Registers that can hold pointers (16 bit registers for r8c,
            m16c; 24 bit registers for m32cm, m32c).
  
!      â€˜Rpaâ€™
            Matches multiple registers in a PARALLEL to form a larger
            register.  Used to match function return values.
  
!      â€˜Is3â€™
!           âˆ’8 ... 7
  
!      â€˜IS1â€™
!           âˆ’128 ... 127
  
!      â€˜IS2â€™
!           âˆ’32768 ... 32767
  
!      â€˜IU2â€™
            0 ... 65535
  
!      â€˜In4â€™
!           âˆ’8 ... âˆ’1 or 1 ... 8
  
!      â€˜In5â€™
!           âˆ’16 ... âˆ’1 or 1 ... 16
  
!      â€˜In6â€™
!           âˆ’32 ... âˆ’1 or 1 ... 32
  
!      â€˜IM2â€™
!           âˆ’65536 ... âˆ’1
  
!      â€˜Ilbâ€™
            An 8 bit value with exactly one bit set.
  
!      â€˜Ilwâ€™
            A 16 bit value with exactly one bit set.
  
!      â€˜Sdâ€™
            The common src/dest memory addressing modes.
  
!      â€˜Saâ€™
            Memory addressed using $a0 or $a1.
  
!      â€˜Siâ€™
            Memory addressed with immediate addresses.
  
!      â€˜Ssâ€™
            Memory addressed using the stack pointer ($sp).
  
!      â€˜Sfâ€™
            Memory addressed using the frame base register ($fb).
  
!      â€˜Ssâ€™
            Memory addressed using the small base register ($sb).
  
!      â€˜S1â€™
            $r1h
  
! _LoongArch--â€˜config/loongarch/constraints.mdâ€™_
!      â€˜fâ€™
            A floating-point or vector register (if available).
!      â€˜kâ€™
            A memory operand whose address is formed by a base register
            and (optionally scaled) index register.
!      â€˜lâ€™
            A signed 16-bit constant.
!      â€˜mâ€™
            A memory operand whose address is formed by a base register
            and offset that is suitable for use in instructions with the
!           same addressing mode as â€˜st.wâ€™ and â€˜ld.wâ€™.
!      â€˜Iâ€™
            A signed 12-bit constant (for arithmetic instructions).
!      â€˜Kâ€™
            An unsigned 12-bit constant (for logic instructions).
!      â€˜Mâ€™
!           A constant that cannot be loaded using â€˜luiâ€™, â€˜addiuâ€™ or
!           â€˜oriâ€™.
!      â€˜Nâ€™
            A constant in the range -65535 to -1 (inclusive).
!      â€˜Oâ€™
            A signed 15-bit constant.
!      â€˜Pâ€™
            A constant in the range 1 to 65535 (inclusive).
!      â€˜Râ€™
            An address that can be used in a non-macro load or store.
!      â€˜ZBâ€™
            An address that is held in a general-purpose register.  The
            offset is zero.
!      â€˜ZCâ€™
            A memory operand whose address is formed by a base register
            and offset that is suitable for use in instructions with the
!           same addressing mode as â€˜ll.wâ€™ and â€˜sc.wâ€™.
  
! _MicroBlaze--â€˜config/microblaze/constraints.mdâ€™_
!      â€˜dâ€™
!           A general register (â€˜r0â€™ to â€˜r31â€™).
  
!      â€˜zâ€™
!           A status register (â€˜rmsrâ€™, â€˜$fcc1â€™ to â€˜$fcc7â€™).
  
! _MIPS--â€˜config/mips/constraints.mdâ€™_
!      â€˜dâ€™
!           A general-purpose register.  This is equivalent to â€˜râ€™ unless
            generating MIPS16 code, in which case the MIPS16 register set
            is used.
  
!      â€˜fâ€™
            A floating-point register (if available).
  
!      â€˜hâ€™
!           Formerly the â€˜hiâ€™ register.  This constraint is no longer
            supported.
  
!      â€˜lâ€™
!           The â€˜loâ€™ register.  Use this register to store values that are
            no bigger than a word.
  
!      â€˜xâ€™
!           The concatenated â€˜hiâ€™ and â€˜loâ€™ registers.  Use this register
            to store doubleword values.
  
!      â€˜câ€™
            A register suitable for use in an indirect jump.  This will
!           always be â€˜$25â€™ for â€˜-mabicallsâ€™.
  
!      â€˜vâ€™
!           Register â€˜$3â€™.  Do not use this constraint in new code; it is
            retained only for compatibility with glibc.
  
!      â€˜yâ€™
!           Equivalent to â€˜râ€™; retained for backwards compatibility.
  
!      â€˜zâ€™
            A floating-point condition code register.
  
!      â€˜Iâ€™
            A signed 16-bit constant (for arithmetic instructions).
  
!      â€˜Jâ€™
            Integer zero.
  
!      â€˜Kâ€™
            An unsigned 16-bit constant (for logic instructions).
  
!      â€˜Lâ€™
            A signed 32-bit constant in which the lower 16 bits are zero.
!           Such constants can be loaded using â€˜luiâ€™.
  
!      â€˜Mâ€™
!           A constant that cannot be loaded using â€˜luiâ€™, â€˜addiuâ€™ or
!           â€˜oriâ€™.
  
!      â€˜Nâ€™
!           A constant in the range âˆ’65535 to âˆ’1 (inclusive).
  
!      â€˜Oâ€™
            A signed 15-bit constant.
  
!      â€˜Pâ€™
            A constant in the range 1 to 65535 (inclusive).
  
!      â€˜Gâ€™
            Floating-point zero.
  
!      â€˜Râ€™
            An address that can be used in a non-macro load or store.
  
!      â€˜ZCâ€™
            A memory operand whose address is formed by a base register
            and offset that is suitable for use in instructions with the
!           same addressing mode as â€˜llâ€™ and â€˜scâ€™.
  
!      â€˜ZDâ€™
!           An address suitable for a â€˜prefetchâ€™ instruction, or for any
!           other instruction with the same addressing mode as â€˜prefetchâ€™.
  
! _Motorola 680x0--â€˜config/m68k/constraints.mdâ€™_
!      â€˜aâ€™
            Address register
  
!      â€˜dâ€™
            Data register
  
!      â€˜fâ€™
            68881 floating-point register, if available
  
!      â€˜Iâ€™
            Integer in the range 1 to 8
  
!      â€˜Jâ€™
            16-bit signed number
  
!      â€˜Kâ€™
            Signed number whose magnitude is greater than 0x80
  
!      â€˜Lâ€™
!           Integer in the range âˆ’8 to âˆ’1
  
!      â€˜Mâ€™
            Signed number whose magnitude is greater than 0x100
  
!      â€˜Nâ€™
            Range 24 to 31, rotatert:SI 8 to 1 expressed as rotate
  
!      â€˜Oâ€™
            16 (for rotate using swap)
  
!      â€˜Pâ€™
            Range 8 to 15, rotatert:HI 8 to 1 expressed as rotate
  
!      â€˜Râ€™
            Numbers that mov3q can handle
  
!      â€˜Gâ€™
            Floating point constant that is not a 68881 constant
  
!      â€˜Sâ€™
            Operands that satisfy 'm' when -mpcrel is in effect
  
!      â€˜Tâ€™
            Operands that satisfy 's' when -mpcrel is not in effect
  
!      â€˜Qâ€™
            Address register indirect addressing mode
  
!      â€˜Uâ€™
            Register offset addressing
  
!      â€˜Wâ€™
            const_call_operand
  
!      â€˜Csâ€™
            symbol_ref or const
  
!      â€˜Ciâ€™
            const_int
  
!      â€˜C0â€™
            const_int 0
  
!      â€˜Cjâ€™
            Range of signed numbers that don't fit in 16 bits
  
!      â€˜Cmvqâ€™
            Integers valid for mvq
  
!      â€˜Capswâ€™
            Integers valid for a moveq followed by a swap
  
!      â€˜Cmvzâ€™
            Integers valid for mvz
  
!      â€˜Cmvsâ€™
            Integers valid for mvs
  
!      â€˜Apâ€™
            push_operand
  
!      â€˜Acâ€™
            Non-register operands allowed in clr
  
! _Moxie--â€˜config/moxie/constraints.mdâ€™_
!      â€˜Aâ€™
            An absolute address
  
!      â€˜Bâ€™
            An offset address
  
!      â€˜Wâ€™
            A register indirect memory operand
  
!      â€˜Iâ€™
            A constant in the range of 0 to 255.
  
!      â€˜Nâ€™
!           A constant in the range of 0 to âˆ’255.
  
! _MSP430-â€˜config/msp430/constraints.mdâ€™_
  
!      â€˜R12â€™
            Register R12.
  
!      â€˜R13â€™
            Register R13.
  
!      â€˜Kâ€™
            Integer constant 1.
  
!      â€˜Lâ€™
            Integer constant -1^20..1^19.
  
!      â€˜Mâ€™
            Integer constant 1-4.
  
!      â€˜Yaâ€™
            Memory references which do not require an extended MOVX
            instruction.
  
!      â€˜Ylâ€™
            Memory reference, labels only.
  
!      â€˜Ysâ€™
            Memory reference, stack only.
  
! _NDS32--â€˜config/nds32/constraints.mdâ€™_
!      â€˜wâ€™
            LOW register class $r0 to $r7 constraint for V3/V3M ISA.
!      â€˜lâ€™
            LOW register class $r0 to $r7.
!      â€˜dâ€™
            MIDDLE register class $r0 to $r11, $r16 to $r19.
!      â€˜hâ€™
            HIGH register class $r12 to $r14, $r20 to $r31.
!      â€˜tâ€™
            Temporary assist register $ta (i.e. $r15).
!      â€˜kâ€™
            Stack register $sp.
!      â€˜Iu03â€™
            Unsigned immediate 3-bit value.
!      â€˜In03â€™
!           Negative immediate 3-bit value in the range of âˆ’7-0.
!      â€˜Iu04â€™
            Unsigned immediate 4-bit value.
!      â€˜Is05â€™
            Signed immediate 5-bit value.
!      â€˜Iu05â€™
            Unsigned immediate 5-bit value.
!      â€˜In05â€™
!           Negative immediate 5-bit value in the range of âˆ’31-0.
!      â€˜Ip05â€™
            Unsigned immediate 5-bit value for movpi45 instruction with
            range 16-47.
!      â€˜Iu06â€™
            Unsigned immediate 6-bit value constraint for addri36.sp
            instruction.
!      â€˜Iu08â€™
            Unsigned immediate 8-bit value.
!      â€˜Iu09â€™
            Unsigned immediate 9-bit value.
!      â€˜Is10â€™
            Signed immediate 10-bit value.
!      â€˜Is11â€™
            Signed immediate 11-bit value.
!      â€˜Is15â€™
            Signed immediate 15-bit value.
!      â€˜Iu15â€™
            Unsigned immediate 15-bit value.
!      â€˜Ic15â€™
            A constant which is not in the range of imm15u but ok for bclr
            instruction.
!      â€˜Ie15â€™
            A constant which is not in the range of imm15u but ok for bset
            instruction.
!      â€˜It15â€™
            A constant which is not in the range of imm15u but ok for btgl
            instruction.
!      â€˜Ii15â€™
            A constant whose compliment value is in the range of imm15u
            and ok for bitci instruction.
!      â€˜Is16â€™
            Signed immediate 16-bit value.
!      â€˜Is17â€™
            Signed immediate 17-bit value.
!      â€˜Is19â€™
            Signed immediate 19-bit value.
!      â€˜Is20â€™
            Signed immediate 20-bit value.
!      â€˜Ihigâ€™
            The immediate value that can be simply set high 20-bit.
!      â€˜Izebâ€™
            The immediate value 0xff.
!      â€˜Izehâ€™
            The immediate value 0xffff.
!      â€˜Ixlsâ€™
            The immediate value 0x01.
!      â€˜Ix11â€™
            The immediate value 0x7ff.
!      â€˜Ibmsâ€™
            The immediate value with power of 2.
!      â€˜Ifexâ€™
            The immediate value with power of 2 minus 1.
!      â€˜U33â€™
            Memory constraint for 333 format.
!      â€˜U45â€™
            Memory constraint for 45 format.
!      â€˜U37â€™
            Memory constraint for 37 format.
  
! _OpenRISC--â€˜config/or1k/constraints.mdâ€™_
!      â€˜Iâ€™
            Integer that is valid as an immediate operand in an
!           instruction taking a signed 16-bit number.  Range âˆ’32768 to
            32767.
  
!      â€˜Kâ€™
            Integer that is valid as an immediate operand in an
            instruction taking an unsigned 16-bit number.  Range 0 to
            65535.
  
!      â€˜Mâ€™
            Signed 16-bit constant shifted left 16 bits.  (Used with
!           â€˜l.movhiâ€™)
  
!      â€˜Oâ€™
            Zero
  
! _PDP-11--â€˜config/pdp11/constraints.mdâ€™_
!      â€˜aâ€™
            Floating point registers AC0 through AC3.  These can be loaded
            from/to memory with a single instruction.
  
!      â€˜dâ€™
            Odd numbered general registers (R1, R3, R5).  These are used
            for 16-bit multiply operations.
  
!      â€˜Dâ€™
            A memory reference that is encoded within the opcode, but not
            auto-increment or auto-decrement.
  
!      â€˜fâ€™
            Any of the floating point registers (AC0 through AC5).
  
!      â€˜Gâ€™
            Floating point constant 0.
  
!      â€˜hâ€™
            Floating point registers AC4 and AC5.  These cannot be loaded
            from/to memory with a single instruction.
  
!      â€˜Iâ€™
            An integer constant that fits in 16 bits.
  
!      â€˜Jâ€™
            An integer constant whose low order 16 bits are zero.
  
!      â€˜Kâ€™
            An integer constant that does not meet the constraints for
!           codes â€˜Iâ€™ or â€˜Jâ€™.
  
!      â€˜Lâ€™
            The integer constant 1.
  
!      â€˜Mâ€™
!           The integer constant âˆ’1.
  
!      â€˜Nâ€™
            The integer constant 0.
  
!      â€˜Oâ€™
            Integer constants 0 through 3; shifts by these amounts are
            handled as multiple single-bit shifts rather than a single
            variable-length shift.
  
!      â€˜Qâ€™
            A memory reference which requires an additional word (address
            or offset) after the opcode.
  
!      â€˜Râ€™
            A memory reference that is encoded within the opcode.
  
! _PowerPC and IBM RS6000--â€˜config/rs6000/constraints.mdâ€™_
!      â€˜râ€™
!           A general purpose register (GPR), â€˜r0â€™...â€˜r31â€™.
  
!      â€˜bâ€™
!           A base register.  Like â€˜râ€™, but â€˜r0â€™ is not allowed, so
!           â€˜r1â€™...â€˜r31â€™.
  
!      â€˜fâ€™
!           A floating point register (FPR), â€˜f0â€™...â€˜f31â€™.
  
!      â€˜dâ€™
!           A floating point register.  This is the same as â€˜fâ€™ nowadays;
!           historically â€˜fâ€™ was for single-precision and â€˜dâ€™ was for
            double-precision floating point.
  
!      â€˜vâ€™
!           An Altivec vector register (VR), â€˜v0â€™...â€˜v31â€™.
  
!      â€˜waâ€™
!           A VSX register (VSR), â€˜vs0â€™...â€˜vs63â€™.  This is either an FPR
!           (â€˜vs0â€™...â€˜vs31â€™ are â€˜f0â€™...â€˜f31â€™) or a VR (â€˜vs32â€™...â€˜vs63â€™ are
!           â€˜v0â€™...â€˜v31â€™).
  
!           When using â€˜waâ€™, you should use the â€˜%xâ€™ output modifier, so
            that the correct register number is printed.  For example:
  
                 asm ("xvadddp %x0,%x1,%x2"
                      : "=wa" (v1)
                      : "wa" (v2), "wa" (v3));
  
!           You should not use â€˜%xâ€™ for â€˜vâ€™ operands:
  
                 asm ("xsaddqp %0,%1,%2"
                      : "=v" (v1)
                      : "v" (v2), "v" (v3));
  
!      â€˜câ€™
!           The count register, â€˜ctrâ€™.
  
!      â€˜lâ€™
!           The link register, â€˜lrâ€™.
  
!      â€˜xâ€™
!           Condition register field 0, â€˜cr0â€™.
  
!      â€˜yâ€™
!           Any condition register field, â€˜cr0â€™...â€˜cr7â€™.
  
!      â€˜Iâ€™
            A signed 16-bit constant.
  
!      â€˜Jâ€™
!           An unsigned 16-bit constant shifted left 16 bits (use â€˜Lâ€™
!           instead for â€˜SImodeâ€™ constants).
  
!      â€˜Kâ€™
            An unsigned 16-bit constant.
  
!      â€˜Lâ€™
            A signed 16-bit constant shifted left 16 bits.
  
!      â€˜eIâ€™
            A signed 34-bit integer constant if prefixed instructions are
            supported.
  
!      â€˜ePâ€™
            A scalar floating point constant or a vector constant that can
            be loaded to a VSX register with one prefixed instruction.
  
!      â€˜eQâ€™
            An IEEE 128-bit constant that can be loaded into a VSX
!           register with the â€˜lxvkqâ€™ instruction.
  
!      â€˜mâ€™
!           A memory operand.  Normally, â€˜mâ€™ does not allow addresses that
!           update the base register.  If the â€˜<â€™ or â€˜>â€™ constraint is
            also used, they are allowed and therefore on PowerPC targets
!           in that case it is only safe to use â€˜m<>â€™ in an â€˜asmâ€™
!           statement if that â€˜asmâ€™ statement accesses the operand exactly
!           once.  The â€˜asmâ€™ statement must also use â€˜%U<OPNO>â€™ as a
            placeholder for the "update" flag in the corresponding load or
            store instruction.  For example:
  
*************** _PowerPC and IBM RS6000--'config/rs6000/
*** 48733,49229 ****
  
            is not.
  
!      'Q'
            A memory operand addressed by just a base register.
  
!      'Z'
            A memory operand accessed with indexed or indirect addressing.
  
!      'a'
            An indexed or indirect address.
  
! _PRU--'config/pru/constraints.md'_
!      'I'
            An unsigned 8-bit integer constant.
  
!      'J'
            An unsigned 16-bit integer constant.
  
!      'L'
            An unsigned 5-bit integer constant (for shift counts).
  
!      'T'
            A text segment (program memory) constant label.
  
!      'Z'
            Integer constant zero.
  
! _RL78--'config/rl78/constraints.md'_
  
!      'Int3'
            An integer constant in the range 1 ... 7.
!      'Int8'
            An integer constant in the range 0 ... 255.
!      'J'
!           An integer constant in the range -255 ... 0
!      'K'
            The integer constant 1.
!      'L'
            The integer constant -1.
!      'M'
            The integer constant 0.
!      'N'
            The integer constant 2.
!      'O'
            The integer constant -2.
!      'P'
            An integer constant in the range 1 ... 15.
!      'Qbi'
            The built-in compare types-eq, ne, gtu, ltu, geu, and leu.
!      'Qsc'
            The synthetic compare types-gt, lt, ge, and le.
!      'Wab'
            A memory reference with an absolute address.
!      'Wbc'
!           A memory reference using 'BC' as a base register, with an
            optional offset.
!      'Wca'
!           A memory reference using 'AX', 'BC', 'DE', or 'HL' for the
            address, for calls.
!      'Wcv'
            A memory reference using any 16-bit register pair for the
            address, for calls.
!      'Wd2'
!           A memory reference using 'DE' as a base register, with an
            optional offset.
!      'Wde'
!           A memory reference using 'DE' as a base register, without any
            offset.
!      'Wfr'
            Any memory reference to an address in the far address space.
!      'Wh1'
!           A memory reference using 'HL' as a base register, with an
            optional one-byte offset.
!      'Whb'
!           A memory reference using 'HL' as a base register, with 'B' or
!           'C' as the index register.
!      'Whl'
!           A memory reference using 'HL' as a base register, without any
            offset.
!      'Ws1'
!           A memory reference using 'SP' as a base register, with an
            optional one-byte offset.
!      'Y'
            Any memory reference to an address in the near address space.
!      'A'
!           The 'AX' register.
!      'B'
!           The 'BC' register.
!      'D'
!           The 'DE' register.
!      'R'
!           'A' through 'L' registers.
!      'S'
!           The 'SP' register.
!      'T'
!           The 'HL' register.
!      'Z08W'
!           The 16-bit 'R8' register.
!      'Z10W'
!           The 16-bit 'R10' register.
!      'Zint'
!           The registers reserved for interrupts ('R24' to 'R31').
!      'a'
!           The 'A' register.
!      'b'
!           The 'B' register.
!      'c'
!           The 'C' register.
!      'd'
!           The 'D' register.
!      'e'
!           The 'E' register.
!      'h'
!           The 'H' register.
!      'l'
!           The 'L' register.
!      'v'
            The virtual registers.
!      'w'
!           The 'PSW' register.
!      'x'
!           The 'X' register.
  
! _RISC-V--'config/riscv/constraints.md'_
  
!      'f'
            A floating-point register (if available).
  
!      'I'
            An I-type 12-bit signed immediate.
  
!      'J'
            Integer zero.
  
!      'K'
            A 5-bit unsigned immediate for CSR access instructions.
  
!      'A'
            An address that is held in a general-purpose register.
  
!      'S'
            A constraint that matches an absolute symbolic address.
  
!      'vr'
            A vector register (if available)..
  
!      'vd'
            A vector register, excluding v0 (if available).
  
!      'vm'
            A vector register, only v0 (if available).
  
!      'cr'
            RVC general purpose register (x8-x15).
  
!      'cf'
            RVC floating-point registers (f8-f15), if available, reuse GPR
            as FPR when use zfinx.
  
!      'R'
            Even-odd general purpose register pair.
  
! _RX--'config/rx/constraints.md'_
!      'Q'
            An address which does not involve register indirect addressing
            or pre/post increment/decrement addressing.
  
!      'Symbol'
            A symbol reference.
  
!      'Int08'
!           A constant in the range -256 to 255, inclusive.
  
!      'Sint08'
!           A constant in the range -128 to 127, inclusive.
  
!      'Sint16'
!           A constant in the range -32768 to 32767, inclusive.
  
!      'Sint24'
!           A constant in the range -8388608 to 8388607, inclusive.
  
!      'Uint04'
            A constant in the range 0 to 15, inclusive.
  
! _S/390 and zSeries--'config/s390/s390.h'_
!      'a'
            Address register (general purpose register except r0)
  
!      'c'
            Condition code register
  
!      'd'
            Data register (arbitrary general purpose register)
  
!      'f'
            Floating-point register
  
!      'I'
            Unsigned 8-bit constant (0-255)
  
!      'J'
            Unsigned 12-bit constant (0-4095)
  
!      'K'
!           Signed 16-bit constant (-32768-32767)
  
!      'L'
            Value appropriate as displacement.
!           '(0..4095)'
                 for short displacement
!           '(-524288..524287)'
                 for long displacement
  
!      'M'
            Constant integer with a value of 0x7fffffff.
  
!      'N'
            Multiple letter constraint followed by 4 parameter letters.
!           '0..9:'
                 number of the part counting from most to least
                 significant
!           'H,Q:'
                 mode of the part
!           'D,S,H:'
                 mode of the containing operand
!           '0,F:'
                 value of the other parts (F--all bits set)
            The constraint matches if the specified part of a constant has
            a value different from its other parts.
  
!      'Q'
            Memory reference without index register and with short
            displacement.
  
!      'R'
            Memory reference with index register and short displacement.
  
!      'S'
            Memory reference without index register but with long
            displacement.
  
!      'T'
            Memory reference with index register and long displacement.
  
!      'U'
            Pointer with short displacement.
  
!      'W'
            Pointer with long displacement.
  
!      'Y'
            Shift count operand.
  
! _SPARC--'config/sparc/sparc.h'_
!      'f'
            Floating-point register on the SPARC-V8 architecture and lower
            floating-point register on the SPARC-V9 architecture.
  
!      'e'
!           Floating-point register.  It is equivalent to 'f' on the
            SPARC-V8 architecture and contains both lower and upper
            floating-point registers on the SPARC-V9 architecture.
  
!      'c'
            Floating-point condition code register.
  
!      'd'
            Lower floating-point register.  It is only valid on the
            SPARC-V9 architecture when the Visual Instruction Set is
            available.
  
!      'b'
            Floating-point register.  It is only valid on the SPARC-V9
            architecture when the Visual Instruction Set is available.
  
!      'h'
            64-bit global or out register for the SPARC-V8+ architecture.
  
!      'C'
            The constant all-ones, for floating-point.
  
!      'A'
            Signed 5-bit constant
  
!      'D'
            A vector constant
  
!      'I'
            Signed 13-bit constant
  
!      'J'
            Zero
  
!      'K'
            32-bit constant with the low 12 bits clear (a constant that
!           can be loaded with the 'sethi' instruction)
  
!      'L'
!           A constant in the range supported by 'movcc' instructions
            (11-bit signed immediate)
  
!      'M'
!           A constant in the range supported by 'movrcc' instructions
            (10-bit signed immediate)
  
!      'N'
!           Same as 'K', except that it verifies that bits that are not in
            the lower 32-bit range are all zero.  Must be used instead of
!           'K' for modes wider than 'SImode'
  
!      'O'
            The constant 4096
  
!      'G'
            Floating-point zero
  
!      'H'
            Signed 13-bit constant, sign-extended to 32 or 64 bits
  
!      'P'
            The constant -1
  
!      'Q'
            Floating-point constant whose integral representation can be
            moved into an integer register using a single sethi
            instruction
  
!      'R'
            Floating-point constant whose integral representation can be
            moved into an integer register using a single mov instruction
  
!      'S'
            Floating-point constant whose integral representation can be
            moved into an integer register using a high/lo_sum instruction
            sequence
  
!      'T'
            Memory address aligned to an 8-byte boundary
  
!      'W'
!           Memory address for 'e' constraint registers
  
!      'w'
            Memory address with only a base register
  
!      'Y'
            Vector zero
  
! _TI C6X family--'config/c6x/constraints.md'_
!      'a'
            Register file A (A0-A31).
  
!      'b'
            Register file B (B0-B31).
  
!      'A'
            Predicate registers in register file A (A0-A2 on C64X and
            higher, A1 and A2 otherwise).
  
!      'B'
            Predicate registers in register file B (B0-B2).
  
!      'C'
            A call-used register in register file B (B0-B9, B16-B31).
  
!      'Da'
            Register file A, excluding predicate registers (A3-A31, plus
            A0 if not C64X or higher).
  
!      'Db'
            Register file B, excluding predicate registers (B3-B31).
  
!      'Iu4'
            Integer constant in the range 0 ... 15.
  
!      'Iu5'
            Integer constant in the range 0 ... 31.
  
!      'In5'
!           Integer constant in the range -31 ... 0.
  
!      'Is5'
!           Integer constant in the range -16 ... 15.
  
!      'I5x'
            Integer constant that can be the operand of an ADDA or a SUBA
            insn.
  
!      'IuB'
            Integer constant in the range 0 ... 65535.
  
!      'IsB'
!           Integer constant in the range -32768 ... 32767.
  
!      'IsC'
            Integer constant in the range -2^{20} ... 2^{20} - 1.
  
!      'Jc'
            Integer constant that is a valid mask for the clr instruction.
  
!      'Js'
            Integer constant that is a valid mask for the set instruction.
  
!      'Q'
            Memory location with A base register.
  
!      'R'
            Memory location with B base register.
  
!      'Z'
            Register B14 (aka DP).
  
! _Visium--'config/visium/constraints.md'_
!      'b'
!           EAM register 'mdb'
  
!      'c'
!           EAM register 'mdc'
  
!      'f'
            Floating point register
  
!      'l'
!           General register, but not 'r29', 'r30' and 'r31'
  
!      't'
!           Register 'r1'
  
!      'u'
!           Register 'r2'
  
!      'v'
!           Register 'r3'
  
!      'G'
            Floating-point constant 0.0
  
!      'J'
            Integer constant in the range 0 ..  65535 (16-bit immediate)
  
!      'K'
            Integer constant in the range 1 ..  31 (5-bit immediate)
  
!      'L'
!           Integer constant in the range -65535 ..  -1 (16-bit negative
            immediate)
  
!      'M'
!           Integer constant -1
  
!      'O'
            Integer constant 0
  
!      'P'
            Integer constant 32
  
! _x86 family--'config/i386/constraints.md'_
!      'R'
            Legacy register--the eight integer registers available on all
!           i386 processors ('a', 'b', 'c', 'd', 'si', 'di', 'bp', 'sp').
  
!      'q'
!           Any register accessible as 'Rl'.  In 32-bit mode, 'a', 'b',
!           'c', and 'd'; in 64-bit mode, any integer register.
  
!      'Q'
!           Any register accessible as 'Rh': 'a', 'b', 'c', and 'd'.
  
!      'a'
!           The 'a' register.
  
!      'b'
!           The 'b' register.
  
!      'c'
!           The 'c' register.
  
!      'd'
!           The 'd' register.
  
!      'S'
!           The 'si' register.
  
!      'D'
!           The 'di' register.
  
!      'A'
!           The 'a' and 'd' registers.  This class is used for
!           instructions that return double word results in the 'ax:dx'
            register pair.  Single word values will be allocated either in
!           'ax' or 'dx'.  For example on i386 the following implements
!           'rdtsc':
  
                 unsigned long long rdtsc (void)
                 {
--- 48741,49237 ----
  
            is not.
  
!      â€˜Qâ€™
            A memory operand addressed by just a base register.
  
!      â€˜Zâ€™
            A memory operand accessed with indexed or indirect addressing.
  
!      â€˜aâ€™
            An indexed or indirect address.
  
! _PRU--â€˜config/pru/constraints.mdâ€™_
!      â€˜Iâ€™
            An unsigned 8-bit integer constant.
  
!      â€˜Jâ€™
            An unsigned 16-bit integer constant.
  
!      â€˜Lâ€™
            An unsigned 5-bit integer constant (for shift counts).
  
!      â€˜Tâ€™
            A text segment (program memory) constant label.
  
!      â€˜Zâ€™
            Integer constant zero.
  
! _RL78--â€˜config/rl78/constraints.mdâ€™_
  
!      â€˜Int3â€™
            An integer constant in the range 1 ... 7.
!      â€˜Int8â€™
            An integer constant in the range 0 ... 255.
!      â€˜Jâ€™
!           An integer constant in the range âˆ’255 ... 0
!      â€˜Kâ€™
            The integer constant 1.
!      â€˜Lâ€™
            The integer constant -1.
!      â€˜Mâ€™
            The integer constant 0.
!      â€˜Nâ€™
            The integer constant 2.
!      â€˜Oâ€™
            The integer constant -2.
!      â€˜Pâ€™
            An integer constant in the range 1 ... 15.
!      â€˜Qbiâ€™
            The built-in compare types-eq, ne, gtu, ltu, geu, and leu.
!      â€˜Qscâ€™
            The synthetic compare types-gt, lt, ge, and le.
!      â€˜Wabâ€™
            A memory reference with an absolute address.
!      â€˜Wbcâ€™
!           A memory reference using â€˜BCâ€™ as a base register, with an
            optional offset.
!      â€˜Wcaâ€™
!           A memory reference using â€˜AXâ€™, â€˜BCâ€™, â€˜DEâ€™, or â€˜HLâ€™ for the
            address, for calls.
!      â€˜Wcvâ€™
            A memory reference using any 16-bit register pair for the
            address, for calls.
!      â€˜Wd2â€™
!           A memory reference using â€˜DEâ€™ as a base register, with an
            optional offset.
!      â€˜Wdeâ€™
!           A memory reference using â€˜DEâ€™ as a base register, without any
            offset.
!      â€˜Wfrâ€™
            Any memory reference to an address in the far address space.
!      â€˜Wh1â€™
!           A memory reference using â€˜HLâ€™ as a base register, with an
            optional one-byte offset.
!      â€˜Whbâ€™
!           A memory reference using â€˜HLâ€™ as a base register, with â€˜Bâ€™ or
!           â€˜Câ€™ as the index register.
!      â€˜Whlâ€™
!           A memory reference using â€˜HLâ€™ as a base register, without any
            offset.
!      â€˜Ws1â€™
!           A memory reference using â€˜SPâ€™ as a base register, with an
            optional one-byte offset.
!      â€˜Yâ€™
            Any memory reference to an address in the near address space.
!      â€˜Aâ€™
!           The â€˜AXâ€™ register.
!      â€˜Bâ€™
!           The â€˜BCâ€™ register.
!      â€˜Dâ€™
!           The â€˜DEâ€™ register.
!      â€˜Râ€™
!           â€˜Aâ€™ through â€˜Lâ€™ registers.
!      â€˜Sâ€™
!           The â€˜SPâ€™ register.
!      â€˜Tâ€™
!           The â€˜HLâ€™ register.
!      â€˜Z08Wâ€™
!           The 16-bit â€˜R8â€™ register.
!      â€˜Z10Wâ€™
!           The 16-bit â€˜R10â€™ register.
!      â€˜Zintâ€™
!           The registers reserved for interrupts (â€˜R24â€™ to â€˜R31â€™).
!      â€˜aâ€™
!           The â€˜Aâ€™ register.
!      â€˜bâ€™
!           The â€˜Bâ€™ register.
!      â€˜câ€™
!           The â€˜Câ€™ register.
!      â€˜dâ€™
!           The â€˜Dâ€™ register.
!      â€˜eâ€™
!           The â€˜Eâ€™ register.
!      â€˜hâ€™
!           The â€˜Hâ€™ register.
!      â€˜lâ€™
!           The â€˜Lâ€™ register.
!      â€˜vâ€™
            The virtual registers.
!      â€˜wâ€™
!           The â€˜PSWâ€™ register.
!      â€˜xâ€™
!           The â€˜Xâ€™ register.
  
! _RISC-V--â€˜config/riscv/constraints.mdâ€™_
  
!      â€˜fâ€™
            A floating-point register (if available).
  
!      â€˜Iâ€™
            An I-type 12-bit signed immediate.
  
!      â€˜Jâ€™
            Integer zero.
  
!      â€˜Kâ€™
            A 5-bit unsigned immediate for CSR access instructions.
  
!      â€˜Aâ€™
            An address that is held in a general-purpose register.
  
!      â€˜Sâ€™
            A constraint that matches an absolute symbolic address.
  
!      â€˜vrâ€™
            A vector register (if available)..
  
!      â€˜vdâ€™
            A vector register, excluding v0 (if available).
  
!      â€˜vmâ€™
            A vector register, only v0 (if available).
  
!      â€˜crâ€™
            RVC general purpose register (x8-x15).
  
!      â€˜cfâ€™
            RVC floating-point registers (f8-f15), if available, reuse GPR
            as FPR when use zfinx.
  
!      â€˜Râ€™
            Even-odd general purpose register pair.
  
! _RX--â€˜config/rx/constraints.mdâ€™_
!      â€˜Qâ€™
            An address which does not involve register indirect addressing
            or pre/post increment/decrement addressing.
  
!      â€˜Symbolâ€™
            A symbol reference.
  
!      â€˜Int08â€™
!           A constant in the range âˆ’256 to 255, inclusive.
  
!      â€˜Sint08â€™
!           A constant in the range âˆ’128 to 127, inclusive.
  
!      â€˜Sint16â€™
!           A constant in the range âˆ’32768 to 32767, inclusive.
  
!      â€˜Sint24â€™
!           A constant in the range âˆ’8388608 to 8388607, inclusive.
  
!      â€˜Uint04â€™
            A constant in the range 0 to 15, inclusive.
  
! _S/390 and zSeries--â€˜config/s390/s390.hâ€™_
!      â€˜aâ€™
            Address register (general purpose register except r0)
  
!      â€˜câ€™
            Condition code register
  
!      â€˜dâ€™
            Data register (arbitrary general purpose register)
  
!      â€˜fâ€™
            Floating-point register
  
!      â€˜Iâ€™
            Unsigned 8-bit constant (0-255)
  
!      â€˜Jâ€™
            Unsigned 12-bit constant (0-4095)
  
!      â€˜Kâ€™
!           Signed 16-bit constant (âˆ’32768-32767)
  
!      â€˜Lâ€™
            Value appropriate as displacement.
!           â€˜(0..4095)â€™
                 for short displacement
!           â€˜(âˆ’524288..524287)â€™
                 for long displacement
  
!      â€˜Mâ€™
            Constant integer with a value of 0x7fffffff.
  
!      â€˜Nâ€™
            Multiple letter constraint followed by 4 parameter letters.
!           â€˜0..9:â€™
                 number of the part counting from most to least
                 significant
!           â€˜H,Q:â€™
                 mode of the part
!           â€˜D,S,H:â€™
                 mode of the containing operand
!           â€˜0,F:â€™
                 value of the other parts (F--all bits set)
            The constraint matches if the specified part of a constant has
            a value different from its other parts.
  
!      â€˜Qâ€™
            Memory reference without index register and with short
            displacement.
  
!      â€˜Râ€™
            Memory reference with index register and short displacement.
  
!      â€˜Sâ€™
            Memory reference without index register but with long
            displacement.
  
!      â€˜Tâ€™
            Memory reference with index register and long displacement.
  
!      â€˜Uâ€™
            Pointer with short displacement.
  
!      â€˜Wâ€™
            Pointer with long displacement.
  
!      â€˜Yâ€™
            Shift count operand.
  
! _SPARC--â€˜config/sparc/sparc.hâ€™_
!      â€˜fâ€™
            Floating-point register on the SPARC-V8 architecture and lower
            floating-point register on the SPARC-V9 architecture.
  
!      â€˜eâ€™
!           Floating-point register.  It is equivalent to â€˜fâ€™ on the
            SPARC-V8 architecture and contains both lower and upper
            floating-point registers on the SPARC-V9 architecture.
  
!      â€˜câ€™
            Floating-point condition code register.
  
!      â€˜dâ€™
            Lower floating-point register.  It is only valid on the
            SPARC-V9 architecture when the Visual Instruction Set is
            available.
  
!      â€˜bâ€™
            Floating-point register.  It is only valid on the SPARC-V9
            architecture when the Visual Instruction Set is available.
  
!      â€˜hâ€™
            64-bit global or out register for the SPARC-V8+ architecture.
  
!      â€˜Câ€™
            The constant all-ones, for floating-point.
  
!      â€˜Aâ€™
            Signed 5-bit constant
  
!      â€˜Dâ€™
            A vector constant
  
!      â€˜Iâ€™
            Signed 13-bit constant
  
!      â€˜Jâ€™
            Zero
  
!      â€˜Kâ€™
            32-bit constant with the low 12 bits clear (a constant that
!           can be loaded with the â€˜sethiâ€™ instruction)
  
!      â€˜Lâ€™
!           A constant in the range supported by â€˜movccâ€™ instructions
            (11-bit signed immediate)
  
!      â€˜Mâ€™
!           A constant in the range supported by â€˜movrccâ€™ instructions
            (10-bit signed immediate)
  
!      â€˜Nâ€™
!           Same as â€˜Kâ€™, except that it verifies that bits that are not in
            the lower 32-bit range are all zero.  Must be used instead of
!           â€˜Kâ€™ for modes wider than â€˜SImodeâ€™
  
!      â€˜Oâ€™
            The constant 4096
  
!      â€˜Gâ€™
            Floating-point zero
  
!      â€˜Hâ€™
            Signed 13-bit constant, sign-extended to 32 or 64 bits
  
!      â€˜Pâ€™
            The constant -1
  
!      â€˜Qâ€™
            Floating-point constant whose integral representation can be
            moved into an integer register using a single sethi
            instruction
  
!      â€˜Râ€™
            Floating-point constant whose integral representation can be
            moved into an integer register using a single mov instruction
  
!      â€˜Sâ€™
            Floating-point constant whose integral representation can be
            moved into an integer register using a high/lo_sum instruction
            sequence
  
!      â€˜Tâ€™
            Memory address aligned to an 8-byte boundary
  
!      â€˜Wâ€™
!           Memory address for â€˜eâ€™ constraint registers
  
!      â€˜wâ€™
            Memory address with only a base register
  
!      â€˜Yâ€™
            Vector zero
  
! _TI C6X family--â€˜config/c6x/constraints.mdâ€™_
!      â€˜aâ€™
            Register file A (A0-A31).
  
!      â€˜bâ€™
            Register file B (B0-B31).
  
!      â€˜Aâ€™
            Predicate registers in register file A (A0-A2 on C64X and
            higher, A1 and A2 otherwise).
  
!      â€˜Bâ€™
            Predicate registers in register file B (B0-B2).
  
!      â€˜Câ€™
            A call-used register in register file B (B0-B9, B16-B31).
  
!      â€˜Daâ€™
            Register file A, excluding predicate registers (A3-A31, plus
            A0 if not C64X or higher).
  
!      â€˜Dbâ€™
            Register file B, excluding predicate registers (B3-B31).
  
!      â€˜Iu4â€™
            Integer constant in the range 0 ... 15.
  
!      â€˜Iu5â€™
            Integer constant in the range 0 ... 31.
  
!      â€˜In5â€™
!           Integer constant in the range âˆ’31 ... 0.
  
!      â€˜Is5â€™
!           Integer constant in the range âˆ’16 ... 15.
  
!      â€˜I5xâ€™
            Integer constant that can be the operand of an ADDA or a SUBA
            insn.
  
!      â€˜IuBâ€™
            Integer constant in the range 0 ... 65535.
  
!      â€˜IsBâ€™
!           Integer constant in the range âˆ’32768 ... 32767.
  
!      â€˜IsCâ€™
            Integer constant in the range -2^{20} ... 2^{20} - 1.
  
!      â€˜Jcâ€™
            Integer constant that is a valid mask for the clr instruction.
  
!      â€˜Jsâ€™
            Integer constant that is a valid mask for the set instruction.
  
!      â€˜Qâ€™
            Memory location with A base register.
  
!      â€˜Râ€™
            Memory location with B base register.
  
!      â€˜Zâ€™
            Register B14 (aka DP).
  
! _Visium--â€˜config/visium/constraints.mdâ€™_
!      â€˜bâ€™
!           EAM register â€˜mdbâ€™
  
!      â€˜câ€™
!           EAM register â€˜mdcâ€™
  
!      â€˜fâ€™
            Floating point register
  
!      â€˜lâ€™
!           General register, but not â€˜r29â€™, â€˜r30â€™ and â€˜r31â€™
  
!      â€˜tâ€™
!           Register â€˜r1â€™
  
!      â€˜uâ€™
!           Register â€˜r2â€™
  
!      â€˜vâ€™
!           Register â€˜r3â€™
  
!      â€˜Gâ€™
            Floating-point constant 0.0
  
!      â€˜Jâ€™
            Integer constant in the range 0 ..  65535 (16-bit immediate)
  
!      â€˜Kâ€™
            Integer constant in the range 1 ..  31 (5-bit immediate)
  
!      â€˜Lâ€™
!           Integer constant in the range âˆ’65535 ..  âˆ’1 (16-bit negative
            immediate)
  
!      â€˜Mâ€™
!           Integer constant âˆ’1
  
!      â€˜Oâ€™
            Integer constant 0
  
!      â€˜Pâ€™
            Integer constant 32
  
! _x86 family--â€˜config/i386/constraints.mdâ€™_
!      â€˜Râ€™
            Legacy register--the eight integer registers available on all
!           i386 processors (â€˜aâ€™, â€˜bâ€™, â€˜câ€™, â€˜dâ€™, â€˜siâ€™, â€˜diâ€™, â€˜bpâ€™, â€˜spâ€™).
  
!      â€˜qâ€™
!           Any register accessible as â€˜Rlâ€™.  In 32-bit mode, â€˜aâ€™, â€˜bâ€™,
!           â€˜câ€™, and â€˜dâ€™; in 64-bit mode, any integer register.
  
!      â€˜Qâ€™
!           Any register accessible as â€˜Rhâ€™: â€˜aâ€™, â€˜bâ€™, â€˜câ€™, and â€˜dâ€™.
  
!      â€˜aâ€™
!           The â€˜aâ€™ register.
  
!      â€˜bâ€™
!           The â€˜bâ€™ register.
  
!      â€˜câ€™
!           The â€˜câ€™ register.
  
!      â€˜dâ€™
!           The â€˜dâ€™ register.
  
!      â€˜Sâ€™
!           The â€˜siâ€™ register.
  
!      â€˜Dâ€™
!           The â€˜diâ€™ register.
  
!      â€˜Aâ€™
!           The â€˜aâ€™ and â€˜dâ€™ registers.  This class is used for
!           instructions that return double word results in the â€˜ax:dxâ€™
            register pair.  Single word values will be allocated either in
!           â€˜axâ€™ or â€˜dxâ€™.  For example on i386 the following implements
!           â€˜rdtscâ€™:
  
                 unsigned long long rdtsc (void)
                 {
*************** _x86 family--'config/i386/constraints.md
*** 49233,49239 ****
                 }
  
            This is not correct on x86-64 as it would allocate tick in
!           either 'ax' or 'dx'.  You have to use the following variant
            instead:
  
                 unsigned long long rdtsc (void)
--- 49241,49247 ----
                 }
  
            This is not correct on x86-64 as it would allocate tick in
!           either â€˜axâ€™ or â€˜dxâ€™.  You have to use the following variant
            instead:
  
                 unsigned long long rdtsc (void)
*************** _x86 family--'config/i386/constraints.md
*** 49243,49419 ****
                   return ((unsigned long long)tickh << 32)|tickl;
                 }
  
!      'U'
            The call-clobbered integer registers.
  
!      'f'
            Any 80387 floating-point (stack) register.
  
!      't'
!           Top of 80387 floating-point stack ('%st(0)').
  
!      'u'
!           Second from top of 80387 floating-point stack ('%st(1)').
  
!      'y'
            Any MMX register.
  
!      'x'
            Any SSE register.
  
!      'v'
!           Any EVEX encodable SSE register ('%xmm0-%xmm31').
  
!      'Yz'
!           First SSE register ('%xmm0').
  
!      'I'
            Integer constant in the range 0 ... 31, for 32-bit shifts.
  
!      'J'
            Integer constant in the range 0 ... 63, for 64-bit shifts.
  
!      'K'
            Signed 8-bit integer constant.
  
!      'L'
!           '0xFF' or '0xFFFF', for andsi as a zero-extending move.
  
!      'M'
!           0, 1, 2, or 3 (shifts for the 'lea' instruction).
  
!      'N'
!           Unsigned 8-bit integer constant (for 'in' and 'out'
            instructions).
  
!      'G'
            Standard 80387 floating point constant.
  
!      'C'
            SSE constant zero operand.
  
!      'e'
            32-bit signed integer constant, or a symbolic reference known
            to fit that range (for immediate operands in sign-extending
            x86-64 instructions).
  
!      'We'
            32-bit signed integer constant, or a symbolic reference known
            to fit that range (for sign-extending conversion operations
!           that require non-'VOIDmode' immediate operands).
  
!      'Wz'
            32-bit unsigned integer constant, or a symbolic reference
            known to fit that range (for zero-extending conversion
!           operations that require non-'VOIDmode' immediate operands).
  
!      'Wd'
            128-bit integer constant where both the high and low 64-bit
!           word satisfy the 'e' constraint.
  
!      'Ws'
!           A symbolic reference or label reference.  You can use the '%p'
            modifier to print the raw symbol.
  
!      'Z'
            32-bit unsigned integer constant, or a symbolic reference
            known to fit that range (for immediate operands in
            zero-extending x86-64 instructions).
  
!      'Tv'
            VSIB address operand.
  
!      'Ts'
            Address operand without segment register.
  
! _Xstormy16--'config/stormy16/stormy16.h'_
!      'a'
            Register r0.
  
!      'b'
            Register r1.
  
!      'c'
            Register r2.
  
!      'd'
            Register r8.
  
!      'e'
            Registers r0 through r7.
  
!      't'
            Registers r0 and r1.
  
!      'y'
            The carry register.
  
!      'z'
            Registers r8 and r9.
  
!      'I'
            A constant between 0 and 3 inclusive.
  
!      'J'
            A constant that has exactly one bit set.
  
!      'K'
            A constant that has exactly one bit clear.
  
!      'L'
            A constant between 0 and 255 inclusive.
  
!      'M'
!           A constant between -255 and 0 inclusive.
  
!      'N'
!           A constant between -3 and 0 inclusive.
  
!      'O'
            A constant between 1 and 4 inclusive.
  
!      'P'
!           A constant between -4 and -1 inclusive.
  
!      'Q'
            A memory reference that is a stack push.
  
!      'R'
            A memory reference that is a stack pop.
  
!      'S'
            A memory reference that refers to a constant address of known
            value.
  
!      'T'
            The register indicated by Rx (not implemented yet).
  
!      'U'
            A constant that is not between 2 and 15 inclusive.
  
!      'Z'
            The constant 0.
  
! _Xtensa--'config/xtensa/constraints.md'_
!      'a'
            General-purpose 32-bit register
  
!      'b'
            One-bit boolean register
  
!      'A'
            MAC16 40-bit accumulator register
  
!      'I'
            Signed 12-bit integer constant, for use in MOVI instructions
  
!      'J'
            Signed 8-bit integer constant, for use in ADDI instructions
  
!      'K'
            Integer constant valid for BccI instructions
  
!      'L'
            Unsigned constant valid for BccUI instructions
  
  
--- 49251,49427 ----
                   return ((unsigned long long)tickh << 32)|tickl;
                 }
  
!      â€˜Uâ€™
            The call-clobbered integer registers.
  
!      â€˜fâ€™
            Any 80387 floating-point (stack) register.
  
!      â€˜tâ€™
!           Top of 80387 floating-point stack (â€˜%st(0)â€™).
  
!      â€˜uâ€™
!           Second from top of 80387 floating-point stack (â€˜%st(1)â€™).
  
!      â€˜yâ€™
            Any MMX register.
  
!      â€˜xâ€™
            Any SSE register.
  
!      â€˜vâ€™
!           Any EVEX encodable SSE register (â€˜%xmm0-%xmm31â€™).
  
!      â€˜Yzâ€™
!           First SSE register (â€˜%xmm0â€™).
  
!      â€˜Iâ€™
            Integer constant in the range 0 ... 31, for 32-bit shifts.
  
!      â€˜Jâ€™
            Integer constant in the range 0 ... 63, for 64-bit shifts.
  
!      â€˜Kâ€™
            Signed 8-bit integer constant.
  
!      â€˜Lâ€™
!           â€˜0xFFâ€™ or â€˜0xFFFFâ€™, for andsi as a zero-extending move.
  
!      â€˜Mâ€™
!           0, 1, 2, or 3 (shifts for the â€˜leaâ€™ instruction).
  
!      â€˜Nâ€™
!           Unsigned 8-bit integer constant (for â€˜inâ€™ and â€˜outâ€™
            instructions).
  
!      â€˜Gâ€™
            Standard 80387 floating point constant.
  
!      â€˜Câ€™
            SSE constant zero operand.
  
!      â€˜eâ€™
            32-bit signed integer constant, or a symbolic reference known
            to fit that range (for immediate operands in sign-extending
            x86-64 instructions).
  
!      â€˜Weâ€™
            32-bit signed integer constant, or a symbolic reference known
            to fit that range (for sign-extending conversion operations
!           that require non-â€˜VOIDmodeâ€™ immediate operands).
  
!      â€˜Wzâ€™
            32-bit unsigned integer constant, or a symbolic reference
            known to fit that range (for zero-extending conversion
!           operations that require non-â€˜VOIDmodeâ€™ immediate operands).
  
!      â€˜Wdâ€™
            128-bit integer constant where both the high and low 64-bit
!           word satisfy the â€˜eâ€™ constraint.
  
!      â€˜Wsâ€™
!           A symbolic reference or label reference.  You can use the â€˜%pâ€™
            modifier to print the raw symbol.
  
!      â€˜Zâ€™
            32-bit unsigned integer constant, or a symbolic reference
            known to fit that range (for immediate operands in
            zero-extending x86-64 instructions).
  
!      â€˜Tvâ€™
            VSIB address operand.
  
!      â€˜Tsâ€™
            Address operand without segment register.
  
! _Xstormy16--â€˜config/stormy16/stormy16.hâ€™_
!      â€˜aâ€™
            Register r0.
  
!      â€˜bâ€™
            Register r1.
  
!      â€˜câ€™
            Register r2.
  
!      â€˜dâ€™
            Register r8.
  
!      â€˜eâ€™
            Registers r0 through r7.
  
!      â€˜tâ€™
            Registers r0 and r1.
  
!      â€˜yâ€™
            The carry register.
  
!      â€˜zâ€™
            Registers r8 and r9.
  
!      â€˜Iâ€™
            A constant between 0 and 3 inclusive.
  
!      â€˜Jâ€™
            A constant that has exactly one bit set.
  
!      â€˜Kâ€™
            A constant that has exactly one bit clear.
  
!      â€˜Lâ€™
            A constant between 0 and 255 inclusive.
  
!      â€˜Mâ€™
!           A constant between âˆ’255 and 0 inclusive.
  
!      â€˜Nâ€™
!           A constant between âˆ’3 and 0 inclusive.
  
!      â€˜Oâ€™
            A constant between 1 and 4 inclusive.
  
!      â€˜Pâ€™
!           A constant between âˆ’4 and âˆ’1 inclusive.
  
!      â€˜Qâ€™
            A memory reference that is a stack push.
  
!      â€˜Râ€™
            A memory reference that is a stack pop.
  
!      â€˜Sâ€™
            A memory reference that refers to a constant address of known
            value.
  
!      â€˜Tâ€™
            The register indicated by Rx (not implemented yet).
  
!      â€˜Uâ€™
            A constant that is not between 2 and 15 inclusive.
  
!      â€˜Zâ€™
            The constant 0.
  
! _Xtensa--â€˜config/xtensa/constraints.mdâ€™_
!      â€˜aâ€™
            General-purpose 32-bit register
  
!      â€˜bâ€™
            One-bit boolean register
  
!      â€˜Aâ€™
            MAC16 40-bit accumulator register
  
!      â€˜Iâ€™
            Signed 12-bit integer constant, for use in MOVI instructions
  
!      â€˜Jâ€™
            Signed 8-bit integer constant, for use in ADDI instructions
  
!      â€˜Kâ€™
            Integer constant valid for BccI instructions
  
!      â€˜Lâ€™
            Unsigned constant valid for BccUI instructions
  
  
*************** File: gcc.info,  Node: Asm constexprs,
*** 49422,49436 ****
  6.11.4 C++11 Constant Expressions instead of String Literals
  ------------------------------------------------------------
  
! In C++ with '-std=gnu++11' or later, strings that appear in asm
  syntax--specifically, the assembler template, constraints, and
  clobbers--can be specified as parenthesized compile-time constant
  expressions as well as by string literals.  The parentheses around such
  an expression are a required part of the syntax.  The constant
! expression can return a container with 'data ()' and 'size ()' member
! functions, following similar rules as the C++26 'static_assert' message.
  Any string is converted to the character set of the source code.  When
! this feature is available the '__GXX_CONSTEXPR_ASM__' preprocessor macro
  is predefined.
  
   This extension is supported for both the basic and extended asm syntax.
--- 49430,49444 ----
  6.11.4 C++11 Constant Expressions instead of String Literals
  ------------------------------------------------------------
  
! In C++ with â€˜-std=gnu++11â€™ or later, strings that appear in asm
  syntax--specifically, the assembler template, constraints, and
  clobbers--can be specified as parenthesized compile-time constant
  expressions as well as by string literals.  The parentheses around such
  an expression are a required part of the syntax.  The constant
! expression can return a container with â€˜data ()â€™ and â€˜size ()â€™ member
! functions, following similar rules as the C++26 â€˜static_assertâ€™ message.
  Any string is converted to the character set of the source code.  When
! this feature is available the â€˜__GXX_CONSTEXPR_ASM__â€™ preprocessor macro
  is predefined.
  
   This extension is supported for both the basic and extended asm syntax.
*************** File: gcc.info,  Node: Asm Labels,  Next
*** 49450,49456 ****
  -----------------------------------------------
  
  You can specify the name to be used in the assembler code for a C
! function or variable by writing the 'asm' (or '__asm__') keyword after
  the declarator.  It is up to you to make sure that the assembler names
  you choose do not conflict with any other assembler symbols, or
  reference registers.
--- 49458,49464 ----
  -----------------------------------------------
  
  You can specify the name to be used in the assembler code for a C
! function or variable by writing the â€˜asmâ€™ (or â€˜__asm__â€™) keyword after
  the declarator.  It is up to you to make sure that the assembler names
  you choose do not conflict with any other assembler symbols, or
  reference registers.
*************** This sample shows how to specify the ass
*** 49462,49469 ****
  
       int foo asm ("myfoo") = 2;
  
! This specifies that the name to be used for the variable 'foo' in the
! assembler code should be 'myfoo' rather than the usual '_foo'.
  
   On systems where an underscore is normally prepended to the name of a C
  variable, this feature allows you to define names for the linker that do
--- 49470,49477 ----
  
       int foo asm ("myfoo") = 2;
  
! This specifies that the name to be used for the variable â€˜fooâ€™ in the
! assembler code should be â€˜myfooâ€™ rather than the usual â€˜_fooâ€™.
  
   On systems where an underscore is normally prepended to the name of a C
  variable, this feature allows you to define names for the linker that do
*************** Assembler names for functions
*** 49478,49484 ****
  .............................
  
  To specify the assembler name for functions, write a declaration for the
! function before its definition and put 'asm' there, like this:
  
       int func (int x, int y) asm ("MYFUNC");
  
--- 49486,49492 ----
  .............................
  
  To specify the assembler name for functions, write a declaration for the
! function before its definition and put â€˜asmâ€™ there, like this:
  
       int func (int x, int y) asm ("MYFUNC");
  
*************** function before its definition and put '
*** 49486,49493 ****
       {
          /* ... */
  
! This specifies that the name to be used for the function 'func' in the
! assembler code should be 'MYFUNC'.
  
  
  File: gcc.info,  Node: Explicit Register Variables,  Next: Size of an asm,  Prev: Asm Labels,  Up: Using Assembly Language with C
--- 49494,49501 ----
       {
          /* ... */
  
! This specifies that the name to be used for the function â€˜funcâ€™ in the
! assembler code should be â€˜MYFUNCâ€™.
  
  
  File: gcc.info,  Node: Explicit Register Variables,  Next: Size of an asm,  Prev: Asm Labels,  Up: Using Assembly Language with C
*************** specified register like this:
*** 49521,49535 ****
  
       register int *foo asm ("r12");
  
! Here 'r12' is the name of the register that should be used.  Note that
  this is the same syntax used for defining local register variables, but
  for a global variable the declaration appears outside a function.  The
! 'register' keyword is required, and cannot be combined with 'static'.
  The register name must be a valid register name for the target platform.
  
!  Do not use type qualifiers such as 'const' and 'volatile', as the
  outcome may be contrary to expectations.  In particular, using the
! 'volatile' qualifier does not fully prevent the compiler from optimizing
  accesses to the register.
  
   Registers are a scarce resource on most systems and allowing the
--- 49529,49543 ----
  
       register int *foo asm ("r12");
  
! Here â€˜r12â€™ is the name of the register that should be used.  Note that
  this is the same syntax used for defining local register variables, but
  for a global variable the declaration appears outside a function.  The
! â€˜registerâ€™ keyword is required, and cannot be combined with â€˜staticâ€™.
  The register name must be a valid register name for the target platform.
  
!  Do not use type qualifiers such as â€˜constâ€™ and â€˜volatileâ€™, as the
  outcome may be contrary to expectations.  In particular, using the
! â€˜volatileâ€™ qualifier does not fully prevent the compiler from optimizing
  accesses to the register.
  
   Registers are a scarce resource on most systems and allowing the
*************** that are accessed very often.
*** 49542,49560 ****
   After defining a global register variable, for the current compilation
  unit:
  
!    * If the register is a call-saved register, call ABI is affected: the
       register will not be restored in function epilogue sequences after
       the variable has been assigned.  Therefore, functions cannot safely
       return to callers that assume standard ABI.
!    * Conversely, if the register is a call-clobbered register, making
       calls to functions that use standard ABI may lose contents of the
       variable.  Such calls may be created by the compiler even if none
       are evident in the original program, for example when libgcc
       functions are used to make up for unavailable instructions.
!    * Accesses to the variable may be optimized as usual and the register
       remains available for allocation and use in any computations,
       provided that observable values of the variable are not affected.
!    * If the variable is referenced in inline assembly, the type of
       access must be provided to the compiler via constraints (*note
       Constraints::).  Accesses from basic asms are not supported.
  
--- 49550,49568 ----
   After defining a global register variable, for the current compilation
  unit:
  
!    â€¢ If the register is a call-saved register, call ABI is affected: the
       register will not be restored in function epilogue sequences after
       the variable has been assigned.  Therefore, functions cannot safely
       return to callers that assume standard ABI.
!    â€¢ Conversely, if the register is a call-clobbered register, making
       calls to functions that use standard ABI may lose contents of the
       variable.  Such calls may be created by the compiler even if none
       are evident in the original program, for example when libgcc
       functions are used to make up for unavailable instructions.
!    â€¢ Accesses to the variable may be optimized as usual and the register
       remains available for allocation and use in any computations,
       provided that observable values of the variable are not affected.
!    â€¢ If the variable is referenced in inline assembly, the type of
       access must be provided to the compiler via constraints (*note
       Constraints::).  Accesses from basic asms are not supported.
  
*************** code from libraries) is not affected.
*** 49566,49572 ****
  global register variable so they do not use the specified register for
  any other purpose, you need not actually add the global register
  declaration to their source code.  It suffices to specify the compiler
! option '-ffixed-REG' (*note Code Gen Options::) to reserve the register.
  
  Declaring the variable
  ......................
--- 49574,49580 ----
  global register variable so they do not use the specified register for
  any other purpose, you need not actually add the global register
  declaration to their source code.  It suffices to specify the compiler
! option â€˜-ffixed-REGâ€™ (*note Code Gen Options::) to reserve the register.
  
  Declaring the variable
  ......................
*************** Using the variable
*** 49587,49598 ****
  
  When calling routines that are not aware of the reservation, be cautious
  if those routines call back into code which uses them.  As an example,
! if you call the system library version of 'qsort', it may clobber your
  registers during execution, but (if you have selected appropriate
  registers) it will restore them before returning.  However it will _not_
! restore them before calling 'qsort''s comparison function.  As a result,
  global values will not reliably be available to the comparison function
! unless the 'qsort' function itself is rebuilt.
  
   Similarly, it is not safe to access the global register variables from
  signal handlers or from more than one thread of control.  Unless you
--- 49595,49606 ----
  
  When calling routines that are not aware of the reservation, be cautious
  if those routines call back into code which uses them.  As an example,
! if you call the system library version of â€˜qsortâ€™, it may clobber your
  registers during execution, but (if you have selected appropriate
  registers) it will restore them before returning.  However it will _not_
! restore them before calling â€˜qsortâ€™'s comparison function.  As a result,
  global values will not reliably be available to the comparison function
! unless the â€˜qsortâ€™ function itself is rebuilt.
  
   Similarly, it is not safe to access the global register variables from
  signal handlers or from more than one thread of control.  Unless you
*************** Furthermore, since the register is not r
*** 49602,49614 ****
  variable, accessing it from handlers of asynchronous signals may observe
  unrelated temporary values residing in the register.
  
!  On most machines, 'longjmp' restores to each global register variable
! the value it had at the time of the 'setjmp'.  On some machines,
! however, 'longjmp' does not change the value of global register
! variables.  To be portable, the function that called 'setjmp' should
  make other arrangements to save the values of the global register
! variables, and to restore them in a 'longjmp'.  This way, the same thing
! happens regardless of what 'longjmp' does.
  
  
  File: gcc.info,  Node: Local Register Variables,  Prev: Global Register Variables,  Up: Explicit Register Variables
--- 49610,49622 ----
  variable, accessing it from handlers of asynchronous signals may observe
  unrelated temporary values residing in the register.
  
!  On most machines, â€˜longjmpâ€™ restores to each global register variable
! the value it had at the time of the â€˜setjmpâ€™.  On some machines,
! however, â€˜longjmpâ€™ does not change the value of global register
! variables.  To be portable, the function that called â€˜setjmpâ€™ should
  make other arrangements to save the values of the global register
! variables, and to restore them in a â€˜longjmpâ€™.  This way, the same thing
! happens regardless of what â€˜longjmpâ€™ does.
  
  
  File: gcc.info,  Node: Local Register Variables,  Prev: Global Register Variables,  Up: Explicit Register Variables
*************** specified register like this:
*** 49621,49636 ****
  
       register int *foo asm ("r12");
  
! Here 'r12' is the name of the register that should be used.  Note that
  this is the same syntax used for defining global register variables, but
  for a local variable the declaration appears within a function.  The
! 'register' keyword is required, and cannot be combined with 'static'.
  The register name must be a valid register name for the target platform.
  
!  Do not use type qualifiers such as 'const' and 'volatile', as the
  outcome may be contrary to expectations.  In particular, when the
! 'const' qualifier is used, the compiler may substitute the variable with
! its initializer in 'asm' statements, which may cause the corresponding
  operand to appear in a different register.
  
   As with global register variables, it is recommended that you choose a
--- 49629,49644 ----
  
       register int *foo asm ("r12");
  
! Here â€˜r12â€™ is the name of the register that should be used.  Note that
  this is the same syntax used for defining global register variables, but
  for a local variable the declaration appears within a function.  The
! â€˜registerâ€™ keyword is required, and cannot be combined with â€˜staticâ€™.
  The register name must be a valid register name for the target platform.
  
!  Do not use type qualifiers such as â€˜constâ€™ and â€˜volatileâ€™, as the
  outcome may be contrary to expectations.  In particular, when the
! â€˜constâ€™ qualifier is used, the compiler may substitute the variable with
! its initializer in â€˜asmâ€™ statements, which may cause the corresponding
  operand to appear in a different register.
  
   As with global register variables, it is recommended that you choose a
*************** register that is normally saved and rest
*** 49638,49649 ****
  machine, so that calls to library routines will not clobber it.
  
   The only supported use for this feature is to specify registers for
! input and output operands when calling Extended 'asm' (*note Extended
  Asm::).  This may be necessary if the constraints for a particular
  machine don't provide sufficient control to select the desired register.
  To force an operand into a register, create a local variable and specify
  the register name after the variable's declaration.  Then use the local
! variable for the 'asm' operand and specify any constraint letter that
  matches the register:
  
       register int *p1 asm ("r0") = ...;
--- 49646,49657 ----
  machine, so that calls to library routines will not clobber it.
  
   The only supported use for this feature is to specify registers for
! input and output operands when calling Extended â€˜asmâ€™ (*note Extended
  Asm::).  This may be necessary if the constraints for a particular
  machine don't provide sufficient control to select the desired register.
  To force an operand into a register, create a local variable and specify
  the register name after the variable's declaration.  Then use the local
! variable for the â€˜asmâ€™ operand and specify any constraint letter that
  matches the register:
  
       register int *p1 asm ("r0") = ...;
*************** matches the register:
*** 49652,49660 ****
       asm ("sysint" : "=r" (result) : "0" (p1), "r" (p2));
  
   _Warning:_ In the above example, be aware that a register (for example
! 'r0') can be call-clobbered by subsequent code, including function calls
  and library calls for arithmetic operators on other variables (for
! example the initialization of 'p2').  In this case, use temporary
  variables for expressions between the register assignments:
  
       int t1 = ...;
--- 49660,49668 ----
       asm ("sysint" : "=r" (result) : "0" (p1), "r" (p2));
  
   _Warning:_ In the above example, be aware that a register (for example
! â€˜r0â€™) can be call-clobbered by subsequent code, including function calls
  and library calls for arithmetic operators on other variables (for
! example the initialization of â€˜p2â€™).  In this case, use temporary
  variables for expressions between the register assignments:
  
       int t1 = ...;
*************** variables for expressions between the re
*** 49664,49680 ****
       asm ("sysint" : "=r" (result) : "0" (p1), "r" (p2));
  
   Defining a register variable does not reserve the register.  Other than
! when invoking the Extended 'asm', the contents of the specified register
  are not guaranteed.  For this reason, the following uses are explicitly
  _not_ supported.  If they appear to work, it is only happenstance, and
  may stop working as intended due to (seemingly) unrelated changes in
  surrounding code, or even minor changes in the optimization of a future
  version of gcc:
  
!    * Passing parameters to or from Basic 'asm'
!    * Passing parameters to or from Extended 'asm' without using input or
       output operands.
!    * Passing parameters to or from routines written in assembler (or
       other languages) using non-standard calling conventions.
  
   Some developers use Local Register Variables in an attempt to improve
--- 49672,49688 ----
       asm ("sysint" : "=r" (result) : "0" (p1), "r" (p2));
  
   Defining a register variable does not reserve the register.  Other than
! when invoking the Extended â€˜asmâ€™, the contents of the specified register
  are not guaranteed.  For this reason, the following uses are explicitly
  _not_ supported.  If they appear to work, it is only happenstance, and
  may stop working as intended due to (seemingly) unrelated changes in
  surrounding code, or even minor changes in the optimization of a future
  version of gcc:
  
!    â€¢ Passing parameters to or from Basic â€˜asmâ€™
!    â€¢ Passing parameters to or from Extended â€˜asmâ€™ without using input or
       output operands.
!    â€¢ Passing parameters to or from routines written in assembler (or
       other languages) using non-standard calling conventions.
  
   Some developers use Local Register Variables in an attempt to improve
*************** specifics for MIPS targets: (gccint)MIPS
*** 49692,49709 ****
  
  File: gcc.info,  Node: Size of an asm,  Prev: Explicit Register Variables,  Up: Using Assembly Language with C
  
! 6.11.7 Size of an 'asm'
  -----------------------
  
  Some targets require that GCC track the size of each instruction used in
  order to generate correct code.  Because the final length of the code
! produced by an 'asm' statement is only known by the assembler, GCC must
  make an estimate as to how big it will be.  It does this by counting the
! number of instructions in the pattern of the 'asm' and multiplying that
  by the length of the longest instruction supported by that processor.
  (When working out the number of instructions, it assumes that any
  occurrence of a newline or of whatever statement separator character is
! supported by the assembler -- typically ';' -- indicates the end of an
  instruction.)
  
   Normally, GCC's estimate is adequate to ensure that correct code is
--- 49700,49717 ----
  
  File: gcc.info,  Node: Size of an asm,  Prev: Explicit Register Variables,  Up: Using Assembly Language with C
  
! 6.11.7 Size of an â€˜asmâ€™
  -----------------------
  
  Some targets require that GCC track the size of each instruction used in
  order to generate correct code.  Because the final length of the code
! produced by an â€˜asmâ€™ statement is only known by the assembler, GCC must
  make an estimate as to how big it will be.  It does this by counting the
! number of instructions in the pattern of the â€˜asmâ€™ and multiplying that
  by the length of the longest instruction supported by that processor.
  (When working out the number of instructions, it assumes that any
  occurrence of a newline or of whatever statement separator character is
! supported by the assembler -- typically â€˜;â€™ -- indicates the end of an
  instruction.)
  
   Normally, GCC's estimate is adequate to ensure that correct code is
*************** space in the object file than is needed
*** 49714,49721 ****
  this happens then the assembler may produce a diagnostic saying that a
  label is unreachable.
  
!  This size is also used for inlining decisions.  If you use 'asm inline'
! instead of just 'asm', then for inlining purposes the size of the asm is
  taken as the minimum size, ignoring how many instructions GCC thinks it
  is.
  
--- 49722,49729 ----
  this happens then the assembler may produce a diagnostic saying that a
  label is unreachable.
  
!  This size is also used for inlining decisions.  If you use â€˜asm inlineâ€™
! instead of just â€˜asmâ€™, then for inlining purposes the size of the asm is
  taken as the minimum size, ignoring how many instructions GCC thinks it
  is.
  
*************** and/or C++ standards, while others remai
*** 49737,49759 ****
  * Local Labels::        Labels local to a block.
  * Labels as Values::    Getting pointers to labels, and computed gotos.
  * Nested Functions::    Nested functions in GNU C.
! * Typeof::              'typeof': referring to the type of an expression.
! * Offsetof::            Special syntax for 'offsetof'.
  * Alignment::           Determining the alignment of a function, type or variable.
  * Enum Extensions::     Forward declarations and specifying the underlying type.
! * Boolean Type::	Support for the '_Bool' keyword.
  * Variadic Macros::     Macros with a variable number of arguments.
! * Conditionals::        Omitting the middle operand of a '?:' expression.
  * Case Ranges::         'case 1 ... 9' and such.
  * Mixed Labels and Declarations::  Mixing declarations, labels and code.
  * C++ Comments::        C++ comments are recognized.
  * Escaped Newlines::    Slightly looser rules for escaped newlines.
  * Hex Floats::          Hexadecimal floating-point constants.
! * Binary constants::    Binary constants using the '0b' prefix.
  * Dollar Signs::        Dollar sign is allowed in identifiers.
! * Character Escapes::   '\e' stands for the character <ESC>.
  * Raw String Literals::	C++ raw string literals are supported in C.
! * Alternate Keywords::  '__const__', '__asm__', etc., for header files.
  * Function Names::      Printable strings which are the name of the current
                          function.
  
--- 49745,49767 ----
  * Local Labels::        Labels local to a block.
  * Labels as Values::    Getting pointers to labels, and computed gotos.
  * Nested Functions::    Nested functions in GNU C.
! * Typeof::              â€˜typeofâ€™: referring to the type of an expression.
! * Offsetof::            Special syntax for â€˜offsetofâ€™.
  * Alignment::           Determining the alignment of a function, type or variable.
  * Enum Extensions::     Forward declarations and specifying the underlying type.
! * Boolean Type::	Support for the â€˜_Boolâ€™ keyword.
  * Variadic Macros::     Macros with a variable number of arguments.
! * Conditionals::        Omitting the middle operand of a â€˜?:â€™ expression.
  * Case Ranges::         'case 1 ... 9' and such.
  * Mixed Labels and Declarations::  Mixing declarations, labels and code.
  * C++ Comments::        C++ comments are recognized.
  * Escaped Newlines::    Slightly looser rules for escaped newlines.
  * Hex Floats::          Hexadecimal floating-point constants.
! * Binary constants::    Binary constants using the â€˜0bâ€™ prefix.
  * Dollar Signs::        Dollar sign is allowed in identifiers.
! * Character Escapes::   â€˜\eâ€™ stands for the character <ESC>.
  * Raw String Literals::	C++ raw string literals are supported in C.
! * Alternate Keywords::  â€˜__const__â€™, â€˜__asm__â€™, etc., for header files.
  * Function Names::      Printable strings which are the name of the current
                          function.
  
*************** example:
*** 49777,49788 ****
          z; })
  
  is a valid (though slightly more complex than necessary) expression for
! the absolute value of 'foo ()'.
  
   The last thing in the compound statement should be an expression
  followed by a semicolon; the value of this subexpression serves as the
  value of the entire construct.  (If you use some other kind of statement
! last within the braces, the construct has type 'void', and thus
  effectively no value.)
  
   This feature is especially useful in making macro definitions "safe"
--- 49785,49796 ----
          z; })
  
  is a valid (though slightly more complex than necessary) expression for
! the absolute value of â€˜foo ()â€™.
  
   The last thing in the compound statement should be an expression
  followed by a semicolon; the value of this subexpression serves as the
  value of the entire construct.  (If you use some other kind of statement
! last within the braces, the construct has type â€˜voidâ€™, and thus
  effectively no value.)
  
   This feature is especially useful in making macro definitions "safe"
*************** follows:
*** 49794,49807 ****
  
  But this definition computes either A or B twice, with bad results if
  the operand has side effects.  In GNU C, if you know the type of the
! operands (here taken as 'int'), you can avoid this problem by defining
  the macro as follows:
  
       #define maxint(a,b) \
         ({int _a = (a), _b = (b); _a > _b ? _a : _b; })
  
!  Note that introducing variable declarations (as we do in 'maxint') can
! cause variable shadowing, so while this example using the 'max' macro
  produces correct results:
       int _a = 1, _b = 2, c;
       c = max (_a, _b);
--- 49802,49815 ----
  
  But this definition computes either A or B twice, with bad results if
  the operand has side effects.  In GNU C, if you know the type of the
! operands (here taken as â€˜intâ€™), you can avoid this problem by defining
  the macro as follows:
  
       #define maxint(a,b) \
         ({int _a = (a), _b = (b); _a > _b ? _a : _b; })
  
!  Note that introducing variable declarations (as we do in â€˜maxintâ€™) can
! cause variable shadowing, so while this example using the â€˜maxâ€™ macro
  produces correct results:
       int _a = 1, _b = 2, c;
       c = max (_a, _b);
*************** the value of an enumeration constant, th
*** 49820,49838 ****
  initial value of a static variable.
  
   If you don't know the type of the operand, you can still do this, but
! you must use 'typeof' or '__auto_type' (*note Typeof::).
  
   In G++, the result value of a statement expression undergoes array and
  function pointer decay, and is returned by value to the enclosing
! expression.  For instance, if 'A' is a class, then
  
               A a;
  
               ({a;}).Foo ()
  
! constructs a temporary 'A' object to hold the result of the statement
! expression, and that is used to invoke 'Foo'.  Therefore the 'this'
! pointer observed by 'Foo' is not the address of 'a'.
  
   In a statement expression, any temporaries created within a statement
  are destroyed at that statement's end.  This makes statement expressions
--- 49828,49846 ----
  initial value of a static variable.
  
   If you don't know the type of the operand, you can still do this, but
! you must use â€˜typeofâ€™ or â€˜__auto_typeâ€™ (*note Typeof::).
  
   In G++, the result value of a statement expression undergoes array and
  function pointer decay, and is returned by value to the enclosing
! expression.  For instance, if â€˜Aâ€™ is a class, then
  
               A a;
  
               ({a;}).Foo ()
  
! constructs a temporary â€˜Aâ€™ object to hold the result of the statement
! expression, and that is used to invoke â€˜Fooâ€™.  Therefore the â€˜thisâ€™
! pointer observed by â€˜Fooâ€™ is not the address of â€˜aâ€™.
  
   In a statement expression, any temporaries created within a statement
  are destroyed at that statement's end.  This makes statement expressions
*************** expression.  For instance,
*** 49851,49859 ****
         function (X ());
       }
  
! has different places where temporaries are destroyed.  For the 'macro'
! case, the temporary 'X' is destroyed just after the initialization of
! 'b'.  In the 'function' case that temporary is destroyed when the
  function returns.
  
   These considerations mean that it is probably a bad idea to use
--- 49859,49867 ----
         function (X ());
       }
  
! has different places where temporaries are destroyed.  For the â€˜macroâ€™
! case, the temporary â€˜Xâ€™ is destroyed just after the initialization of
! â€˜bâ€™.  In the â€˜functionâ€™ case that temporary is destroyed when the
  function returns.
  
   These considerations mean that it is probably a bad idea to use
*************** work with C++.  (Note that some versions
*** 49862,49881 ****
  header files using statement expressions that lead to precisely this
  bug.)
  
!  Jumping into a statement expression with 'goto' or using a 'switch'
! statement outside the statement expression with a 'case' or 'default'
  label inside the statement expression is not permitted.  Jumping into a
! statement expression with a computed 'goto' (*note Labels as Values::)
  has undefined behavior.  Jumping out of a statement expression is
  permitted, but if the statement expression is part of a larger
  expression then it is unspecified which other subexpressions of that
  expression have been evaluated except where the language definition
  requires certain subexpressions to be evaluated before or after the
! statement expression.  A 'break' or 'continue' statement inside of a
! statement expression used in 'while', 'do' or 'for' loop or 'switch'
! statement condition or 'for' statement init or increment expressions
! jumps to an outer loop or 'switch' statement if any (otherwise it is an
! error), rather than to the loop or 'switch' statement in whose condition
  or init or increment expression it appears.  In any case, as with a
  function call, the evaluation of a statement expression is not
  interleaved with the evaluation of other parts of the containing
--- 49870,49889 ----
  header files using statement expressions that lead to precisely this
  bug.)
  
!  Jumping into a statement expression with â€˜gotoâ€™ or using a â€˜switchâ€™
! statement outside the statement expression with a â€˜caseâ€™ or â€˜defaultâ€™
  label inside the statement expression is not permitted.  Jumping into a
! statement expression with a computed â€˜gotoâ€™ (*note Labels as Values::)
  has undefined behavior.  Jumping out of a statement expression is
  permitted, but if the statement expression is part of a larger
  expression then it is unspecified which other subexpressions of that
  expression have been evaluated except where the language definition
  requires certain subexpressions to be evaluated before or after the
! statement expression.  A â€˜breakâ€™ or â€˜continueâ€™ statement inside of a
! statement expression used in â€˜whileâ€™, â€˜doâ€™ or â€˜forâ€™ loop or â€˜switchâ€™
! statement condition or â€˜forâ€™ statement init or increment expressions
! jumps to an outer loop or â€˜switchâ€™ statement if any (otherwise it is an
! error), rather than to the loop or â€˜switchâ€™ statement in whose condition
  or init or increment expression it appears.  In any case, as with a
  function call, the evaluation of a statement expression is not
  interleaved with the evaluation of other parts of the containing
*************** expression.  For example,
*** 49883,49891 ****
  
         foo (), (({ bar1 (); goto a; 0; }) + bar2 ()), baz();
  
! calls 'foo' and 'bar1' and does not call 'baz' but may or may not call
! 'bar2'.  If 'bar2' is called, it is called after 'foo' and before
! 'bar1'.
  
  
  File: gcc.info,  Node: Local Labels,  Next: Labels as Values,  Prev: Statement Exprs,  Up: Syntax Extensions
--- 49891,49899 ----
  
         foo (), (({ bar1 (); goto a; 0; }) + bar2 ()), baz();
  
! calls â€˜fooâ€™ and â€˜bar1â€™ and does not call â€˜bazâ€™ but may or may not call
! â€˜bar2â€™.  If â€˜bar2â€™ is called, it is called after â€˜fooâ€™ and before
! â€˜bar1â€™.
  
  
  File: gcc.info,  Node: Local Labels,  Next: Labels as Values,  Prev: Statement Exprs,  Up: Syntax Extensions
*************** File: gcc.info,  Node: Local Labels,  Ne
*** 49893,49901 ****
  6.12.2 Locally Declared Labels
  ------------------------------
  
! GCC allows you to declare "local labels" in any nested block scope.  A
  local label is just like an ordinary label, but you can only reference
! it (with a 'goto' statement, or by taking its address) within the block
  in which it is declared.
  
   A local label declaration looks like this:
--- 49901,49909 ----
  6.12.2 Locally Declared Labels
  ------------------------------
  
! GCC allows you to declare â€œlocal labelsâ€� in any nested block scope.  A
  local label is just like an ordinary label, but you can only reference
! it (with a â€˜gotoâ€™ statement, or by taking its address) within the block
  in which it is declared.
  
   A local label declaration looks like this:
*************** or
*** 49910,49920 ****
  before any ordinary declarations or statements.
  
   The label declaration defines the label _name_, but does not define the
! label itself.  You must do this in the usual way, with 'LABEL:', within
  the statements of the statement expression.
  
   The local label feature is useful for complex macros.  If a macro
! contains nested loops, a 'goto' can be useful for breaking out of them.
  However, an ordinary label whose scope is the whole function cannot be
  used: if the macro can be expanded several times in one function, the
  label is multiply defined in that function.  A local label avoids this
--- 49918,49928 ----
  before any ordinary declarations or statements.
  
   The label declaration defines the label _name_, but does not define the
! label itself.  You must do this in the usual way, with â€˜LABEL:â€™, within
  the statements of the statement expression.
  
   The local label feature is useful for complex macros.  If a macro
! contains nested loops, a â€˜gotoâ€™ can be useful for breaking out of them.
  However, an ordinary label whose scope is the whole function cannot be
  used: if the macro can be expanded several times in one function, the
  label is multiply defined in that function.  A local label avoids this
*************** File: gcc.info,  Node: Labels as Values,
*** 49964,49971 ****
  -----------------------
  
  You can get the address of a label defined in the current function (or a
! containing function) with the unary operator '&&'.  The value has type
! 'void *'.  This value is a constant and can be used wherever a constant
  of that type is valid.  For example:
  
       void *ptr;
--- 49972,49979 ----
  -----------------------
  
  You can get the address of a label defined in the current function (or a
! containing function) with the unary operator â€˜&&â€™.  The value has type
! â€˜void *â€™.  This value is a constant and can be used wherever a constant
  of that type is valid.  For example:
  
       void *ptr;
*************** of that type is valid.  For example:
*** 49973,49983 ****
       ptr = &&foo;
  
   To use these values, you need to be able to jump to one.  This is done
! with the computed goto statement(1), 'goto *EXP;'.  For example,
  
       goto *ptr;
  
! Any expression of type 'void *' is allowed.
  
   One way of using these constants is in initializing a static array that
  serves as a jump table:
--- 49981,49991 ----
       ptr = &&foo;
  
   To use these values, you need to be able to jump to one.  This is done
! with the computed goto statement(1), â€˜goto *EXP;â€™.  For example,
  
       goto *ptr;
  
! Any expression of type â€˜void *â€™ is allowed.
  
   One way of using these constants is in initializing a static array that
  serves as a jump table:
*************** Note that this does not check whether th
*** 49992,49999 ****
  indexing in C never does that.
  
   Such an array of label values serves a purpose much like that of the
! 'switch' statement.  The 'switch' statement is cleaner, so use that
! rather than an array unless the problem does not fit a 'switch'
  statement very well.
  
   Another use of label values is in an interpreter for threaded code.
--- 50000,50007 ----
  indexing in C never does that.
  
   Such an array of label values serves a purpose much like that of the
! â€˜switchâ€™ statement.  The â€˜switchâ€™ statement is cleaner, so use that
! rather than an array unless the problem does not fit a â€˜switchâ€™
  statement very well.
  
   Another use of label values is in an interpreter for threaded code.
*************** allows the data to be read-only.  This a
*** 50017,50026 ****
  differences is not supported for the AVR target, please use the first
  approach for AVR programs.
  
!  The '&&foo' expressions for the same label might have different values
  if the containing function is inlined or cloned.  If a program relies on
! them being always the same, '__attribute__((__noinline__,__noclone__))'
! should be used to prevent inlining and cloning.  If '&&foo' is used in a
  static variable initializer, inlining and cloning is forbidden.
  
   Unlike a normal goto, in GNU C++ a computed goto will not call
--- 50025,50034 ----
  differences is not supported for the AVR target, please use the first
  approach for AVR programs.
  
!  The â€˜&&fooâ€™ expressions for the same label might have different values
  if the containing function is inlined or cloned.  If a program relies on
! them being always the same, â€˜__attribute__((__noinline__,__noclone__))â€™
! should be used to prevent inlining and cloning.  If â€˜&&fooâ€™ is used in a
  static variable initializer, inlining and cloning is forbidden.
  
   Unlike a normal goto, in GNU C++ a computed goto will not call
*************** File: gcc.info,  Node: Nested Functions,
*** 50038,50049 ****
  6.12.4 Nested Functions
  -----------------------
  
! A "nested function" is a function defined inside another function.
  Nested functions are supported as an extension in GNU C, but are not
  supported by GNU C++.
  
   The nested function's name is local to the block where it is defined.
! For example, here we define a nested function named 'square', and call
  it twice:
  
       foo (double a, double b)
--- 50046,50057 ----
  6.12.4 Nested Functions
  -----------------------
  
! A â€œnested functionâ€� is a function defined inside another function.
  Nested functions are supported as an extension in GNU C, but are not
  supported by GNU C++.
  
   The nested function's name is local to the block where it is defined.
! For example, here we define a nested function named â€˜squareâ€™, and call
  it twice:
  
       foo (double a, double b)
*************** it twice:
*** 50055,50062 ****
  
   The nested function can access all the variables of the containing
  function that are visible at the point of its definition.  This is
! called "lexical scoping".  For example, here we show a nested function
! which uses an inherited variable named 'offset':
  
       bar (int *array, int offset, int size)
       {
--- 50063,50070 ----
  
   The nested function can access all the variables of the containing
  function that are visible at the point of its definition.  This is
! called â€œlexical scopingâ€�.  For example, here we show a nested function
! which uses an inherited variable named â€˜offsetâ€™:
  
       bar (int *array, int offset, int size)
       {
*************** function:
*** 50084,50093 ****
         intermediate (store, size);
       }
  
!  Here, the function 'intermediate' receives the address of 'store' as an
! argument.  If 'intermediate' calls 'store', the arguments given to
! 'store' are used to store into 'array'.  But this technique works only
! so long as the containing function ('hack', in this example) does not
  exit.
  
   If you try to call the nested function through its address after the
--- 50092,50101 ----
         intermediate (store, size);
       }
  
!  Here, the function â€˜intermediateâ€™ receives the address of â€˜storeâ€™ as an
! argument.  If â€˜intermediateâ€™ calls â€˜storeâ€™, the arguments given to
! â€˜storeâ€™ are used to store into â€˜arrayâ€™.  But this technique works only
! so long as the containing function (â€˜hackâ€™, in this example) does not
  exit.
  
   If you try to call the nested function through its address after the
*************** wise to take the risk.  If, however, the
*** 50098,50111 ****
  to anything that has gone out of scope, you should be safe.
  
   GCC implements taking the address of a nested function using a
! technique called "trampolines".  This technique was described in
! 'Lexical Closures for C++' (Thomas M. Breuel, USENIX C++ Conference
  Proceedings, October 17-21, 1988).
  
   A nested function can jump to a label inherited from a containing
  function, provided the label is explicitly declared in the containing
  function (*note Local Labels::).  Such a jump returns instantly to the
! containing function, exiting the nested function that did the 'goto' and
  any intermediate functions as well.  Here is an example:
  
       bar (int *array, int offset, int size)
--- 50106,50119 ----
  to anything that has gone out of scope, you should be safe.
  
   GCC implements taking the address of a nested function using a
! technique called â€œtrampolinesâ€�.  This technique was described in
! â€˜Lexical Closures for C++â€™ (Thomas M. Breuel, USENIX C++ Conference
  Proceedings, October 17-21, 1988).
  
   A nested function can jump to a label inherited from a containing
  function, provided the label is explicitly declared in the containing
  function (*note Local Labels::).  Such a jump returns instantly to the
! containing function, exiting the nested function that did the â€˜gotoâ€™ and
  any intermediate functions as well.  Here is an example:
  
       bar (int *array, int offset, int size)
*************** any intermediate functions as well.  Her
*** 50124,50138 ****
         /* ... */
         return 0;
  
!       /* Control comes here from 'access'
           if it detects an error.  */
        failure:
         return -1;
       }
  
!  A nested function always has no linkage.  Declaring one with 'extern'
! or 'static' is erroneous.  If you need to declare the nested function
! before its definition, use 'auto' (which is otherwise meaningless for
  function declarations).
  
       bar (int *array, int offset, int size)
--- 50132,50146 ----
         /* ... */
         return 0;
  
!       /* Control comes here from â€˜accessâ€™
           if it detects an error.  */
        failure:
         return -1;
       }
  
!  A nested function always has no linkage.  Declaring one with â€˜externâ€™
! or â€˜staticâ€™ is erroneous.  If you need to declare the nested function
! before its definition, use â€˜autoâ€™ (which is otherwise meaningless for
  function declarations).
  
       bar (int *array, int offset, int size)
*************** function declarations).
*** 50152,50191 ****
  
  File: gcc.info,  Node: Typeof,  Next: Offsetof,  Prev: Nested Functions,  Up: Syntax Extensions
  
! 6.12.5 Referring to a Type with 'typeof'
  ----------------------------------------
  
! Another way to refer to the type of an expression is with 'typeof'.  The
! syntax of using of this keyword looks like 'sizeof', but the construct
! acts semantically like a type name defined with 'typedef'.
  
!  There are two ways of writing the argument to 'typeof': with an
  expression or with a type.  Here is an example with an expression:
  
       typeof (x[0](1))
  
! This assumes that 'x' is an array of pointers to functions; the type
  described is that of the values of the functions.
  
   Here is an example with a typename as the argument:
  
       typeof (int *)
  
! Here the type described is that of pointers to 'int'.
  
   If you are writing a header file that must work when included in ISO C
! programs, write '__typeof__' instead of 'typeof'.  *Note Alternate
  Keywords::.
  
!  A 'typeof' construct can be used anywhere a typedef name can be used.
  For example, you can use it in a declaration, in a cast, or inside of
! 'sizeof' or 'typeof'.
  
!  The operand of 'typeof' is evaluated for its side effects if and only
  if it is an expression of variably modified type or the name of such a
  type.
  
!  'typeof' is often useful in conjunction with statement expressions
  (*note Statement Exprs::).  Here is how the two together can be used to
  define a safe "maximum" macro which operates on any arithmetic type and
  evaluates each of its arguments exactly once:
--- 50160,50199 ----
  
  File: gcc.info,  Node: Typeof,  Next: Offsetof,  Prev: Nested Functions,  Up: Syntax Extensions
  
! 6.12.5 Referring to a Type with â€˜typeofâ€™
  ----------------------------------------
  
! Another way to refer to the type of an expression is with â€˜typeofâ€™.  The
! syntax of using of this keyword looks like â€˜sizeofâ€™, but the construct
! acts semantically like a type name defined with â€˜typedefâ€™.
  
!  There are two ways of writing the argument to â€˜typeofâ€™: with an
  expression or with a type.  Here is an example with an expression:
  
       typeof (x[0](1))
  
! This assumes that â€˜xâ€™ is an array of pointers to functions; the type
  described is that of the values of the functions.
  
   Here is an example with a typename as the argument:
  
       typeof (int *)
  
! Here the type described is that of pointers to â€˜intâ€™.
  
   If you are writing a header file that must work when included in ISO C
! programs, write â€˜__typeof__â€™ instead of â€˜typeofâ€™.  *Note Alternate
  Keywords::.
  
!  A â€˜typeofâ€™ construct can be used anywhere a typedef name can be used.
  For example, you can use it in a declaration, in a cast, or inside of
! â€˜sizeofâ€™ or â€˜typeofâ€™.
  
!  The operand of â€˜typeofâ€™ is evaluated for its side effects if and only
  if it is an expression of variably modified type or the name of such a
  type.
  
!  â€˜typeofâ€™ is often useful in conjunction with statement expressions
  (*note Statement Exprs::).  Here is how the two together can be used to
  define a safe "maximum" macro which operates on any arithmetic type and
  evaluates each of its arguments exactly once:
*************** evaluates each of its arguments exactly
*** 50197,50218 ****
  
   The reason for using names that start with underscores for the local
  variables is to avoid conflicts with variable names that occur within
! the expressions that are substituted for 'a' and 'b'.  Eventually we
  hope to design a new form of declaration syntax that allows you to
  declare variables whose scopes start only after their initializers; this
  will be a more reliable way to prevent such conflicts.
  
! Some more examples of the use of 'typeof':
  
!    * This declares 'y' with the type of what 'x' points to.
  
            typeof (*x) y;
  
!    * This declares 'y' as an array of such values.
  
            typeof (*x) y[4];
  
!    * This declares 'y' as an array of pointers to characters:
  
            typeof (typeof (char *)[4]) y;
  
--- 50205,50226 ----
  
   The reason for using names that start with underscores for the local
  variables is to avoid conflicts with variable names that occur within
! the expressions that are substituted for â€˜aâ€™ and â€˜bâ€™.  Eventually we
  hope to design a new form of declaration syntax that allows you to
  declare variables whose scopes start only after their initializers; this
  will be a more reliable way to prevent such conflicts.
  
! Some more examples of the use of â€˜typeofâ€™:
  
!    â€¢ This declares â€˜yâ€™ with the type of what â€˜xâ€™ points to.
  
            typeof (*x) y;
  
!    â€¢ This declares â€˜yâ€™ as an array of such values.
  
            typeof (*x) y[4];
  
!    â€¢ This declares â€˜yâ€™ as an array of pointers to characters:
  
            typeof (typeof (char *)[4]) y;
  
*************** Some more examples of the use of 'typeof
*** 50220,50226 ****
  
            char *y[4];
  
!      To see the meaning of the declaration using 'typeof', and why it
       might be a useful way to write, rewrite it with these macros:
  
            #define pointer(T)  typeof(T *)
--- 50228,50234 ----
  
            char *y[4];
  
!      To see the meaning of the declaration using â€˜typeofâ€™, and why it
       might be a useful way to write, rewrite it with these macros:
  
            #define pointer(T)  typeof(T *)
*************** Some more examples of the use of 'typeof
*** 50230,50276 ****
  
            array (pointer (char), 4) y;
  
!      Thus, 'array (pointer (char), 4)' is the type of arrays of 4
!      pointers to 'char'.
  
!  The ISO C23 operator 'typeof_unqual' is available in ISO C23 mode and
! its result is the non-atomic unqualified version of what 'typeof'
! operator returns.  Alternate spelling '__typeof_unqual__' is available
  in all C modes and provides non-atomic unqualified version of what
! '__typeof__' operator returns.  *Note Alternate Keywords::.
  
   In GNU C, but not GNU C++, you may also declare the type of a variable
! as '__auto_type'.  In that case, the declaration must declare only one
  variable, whose declarator must just be an identifier, the declaration
  must be initialized, and the type of the variable is determined by the
  initializer; the name of the variable is not in scope until after the
! initializer.  (In C++, you should use C++11 'auto' for this purpose.)
! Using '__auto_type', the "maximum" macro above could be written as:
  
       #define max(a,b) \
         ({ __auto_type _a = (a); \
             __auto_type _b = (b); \
           _a > _b ? _a : _b; })
  
!  Using '__auto_type' instead of 'typeof' has two advantages:
  
!    * Each argument to the macro appears only once in the expansion of
       the macro.  This prevents the size of the macro expansion growing
       exponentially when calls to such macros are nested inside arguments
       of such macros.
  
!    * If the argument to the macro has variably modified type, it is
!      evaluated only once when using '__auto_type', but twice if 'typeof'
       is used.
  
  
  File: gcc.info,  Node: Offsetof,  Next: Alignment,  Prev: Typeof,  Up: Syntax Extensions
  
! 6.12.6 Support for 'offsetof'
  -----------------------------
  
  GCC implements for both C and C++ a syntactic extension to implement the
! 'offsetof' macro.
  
       primary:
               "__builtin_offsetof" "(" typename "," offsetof_member_designator ")"
--- 50238,50284 ----
  
            array (pointer (char), 4) y;
  
!      Thus, â€˜array (pointer (char), 4)â€™ is the type of arrays of 4
!      pointers to â€˜charâ€™.
  
!  The ISO C23 operator â€˜typeof_unqualâ€™ is available in ISO C23 mode and
! its result is the non-atomic unqualified version of what â€˜typeofâ€™
! operator returns.  Alternate spelling â€˜__typeof_unqual__â€™ is available
  in all C modes and provides non-atomic unqualified version of what
! â€˜__typeof__â€™ operator returns.  *Note Alternate Keywords::.
  
   In GNU C, but not GNU C++, you may also declare the type of a variable
! as â€˜__auto_typeâ€™.  In that case, the declaration must declare only one
  variable, whose declarator must just be an identifier, the declaration
  must be initialized, and the type of the variable is determined by the
  initializer; the name of the variable is not in scope until after the
! initializer.  (In C++, you should use C++11 â€˜autoâ€™ for this purpose.)
! Using â€˜__auto_typeâ€™, the "maximum" macro above could be written as:
  
       #define max(a,b) \
         ({ __auto_type _a = (a); \
             __auto_type _b = (b); \
           _a > _b ? _a : _b; })
  
!  Using â€˜__auto_typeâ€™ instead of â€˜typeofâ€™ has two advantages:
  
!    â€¢ Each argument to the macro appears only once in the expansion of
       the macro.  This prevents the size of the macro expansion growing
       exponentially when calls to such macros are nested inside arguments
       of such macros.
  
!    â€¢ If the argument to the macro has variably modified type, it is
!      evaluated only once when using â€˜__auto_typeâ€™, but twice if â€˜typeofâ€™
       is used.
  
  
  File: gcc.info,  Node: Offsetof,  Next: Alignment,  Prev: Typeof,  Up: Syntax Extensions
  
! 6.12.6 Support for â€˜offsetofâ€™
  -----------------------------
  
  GCC implements for both C and C++ a syntactic extension to implement the
! â€˜offsetofâ€™ macro.
  
       primary:
               "__builtin_offsetof" "(" typename "," offsetof_member_designator ")"
*************** GCC implements for both C and C++ a synt
*** 50284,50290 ****
  
       #define offsetof(TYPE, MEMBER)  __builtin_offsetof (TYPE, MEMBER)
  
! is a suitable definition of the 'offsetof' macro.  In C++, TYPE may be
  dependent.  In either case, MEMBER may consist of a single identifier,
  or a sequence of member accesses and array references.
  
--- 50292,50298 ----
  
       #define offsetof(TYPE, MEMBER)  __builtin_offsetof (TYPE, MEMBER)
  
! is a suitable definition of the â€˜offsetofâ€™ macro.  In C++, TYPE may be
  dependent.  In either case, MEMBER may consist of a single identifier,
  or a sequence of member accesses and array references.
  
*************** File: gcc.info,  Node: Alignment,  Next:
*** 50294,50344 ****
  6.12.7 Determining the Alignment of Functions, Types or Variables
  -----------------------------------------------------------------
  
! The keyword '__alignof__' determines the alignment requirement of a
  function, object, or a type, or the minimum alignment usually required
! by a type.  Its syntax is just like 'sizeof' and C11 '_Alignof'.
  
!  For example, if the target machine requires a 'double' value to be
! aligned on an 8-byte boundary, then '__alignof__ (double)' is 8.  This
  is true on many RISC machines.  On more traditional machine designs,
! '__alignof__ (double)' is 4 or even 2.
  
   Some machines never actually require alignment; they allow references
  to any data type even at an odd address.  For these machines,
! '__alignof__' reports the smallest alignment that GCC gives the data
  type, usually as mandated by the target ABI.
  
!  If the operand of '__alignof__' is an lvalue rather than a type, its
  value is the required alignment for its type, taking into account any
! minimum alignment specified by attribute 'aligned' (*note Common
  Variable Attributes::).  For example, after this declaration:
  
       struct foo { int x; char y; } foo1;
  
! the value of '__alignof__ (foo1.y)' is 1, even though its actual
! alignment is probably 2 or 4, the same as '__alignof__ (int)'.  It is an
! error to ask for the alignment of an incomplete type other than 'void'.
  
!  If the operand of the '__alignof__' expression is a function, the
  expression evaluates to the alignment of the function which may be
! specified by attribute 'aligned' (*note Common Function Attributes::).
  
  
  File: gcc.info,  Node: Enum Extensions,  Next: Boolean Type,  Prev: Alignment,  Up: Syntax Extensions
  
! 6.12.8 Extensions to 'enum' Type Declarations
  ---------------------------------------------
  
  The C23 and C++11 standards added new syntax to specify the underlying
! type of an 'enum' type.  For example,
  
       enum pet : unsigned char { CAT, DOG, ROCK };
  
   In GCC, this feature is supported as an extension in all older dialects
  of C and C++ as well.  For C++ dialects before C++11, use
! '-Wno-c++11-extensions' to silence the associated warnings.
  
!  You can also forward-declare an 'enum' type, without specifying its
  possible values.  The enumerators are supplied in a later redeclaration
  of the type, which must match the underlying type of the first
  declaration.
--- 50302,50352 ----
  6.12.7 Determining the Alignment of Functions, Types or Variables
  -----------------------------------------------------------------
  
! The keyword â€˜__alignof__â€™ determines the alignment requirement of a
  function, object, or a type, or the minimum alignment usually required
! by a type.  Its syntax is just like â€˜sizeofâ€™ and C11 â€˜_Alignofâ€™.
  
!  For example, if the target machine requires a â€˜doubleâ€™ value to be
! aligned on an 8-byte boundary, then â€˜__alignof__ (double)â€™ is 8.  This
  is true on many RISC machines.  On more traditional machine designs,
! â€˜__alignof__ (double)â€™ is 4 or even 2.
  
   Some machines never actually require alignment; they allow references
  to any data type even at an odd address.  For these machines,
! â€˜__alignof__â€™ reports the smallest alignment that GCC gives the data
  type, usually as mandated by the target ABI.
  
!  If the operand of â€˜__alignof__â€™ is an lvalue rather than a type, its
  value is the required alignment for its type, taking into account any
! minimum alignment specified by attribute â€˜alignedâ€™ (*note Common
  Variable Attributes::).  For example, after this declaration:
  
       struct foo { int x; char y; } foo1;
  
! the value of â€˜__alignof__ (foo1.y)â€™ is 1, even though its actual
! alignment is probably 2 or 4, the same as â€˜__alignof__ (int)â€™.  It is an
! error to ask for the alignment of an incomplete type other than â€˜voidâ€™.
  
!  If the operand of the â€˜__alignof__â€™ expression is a function, the
  expression evaluates to the alignment of the function which may be
! specified by attribute â€˜alignedâ€™ (*note Common Function Attributes::).
  
  
  File: gcc.info,  Node: Enum Extensions,  Next: Boolean Type,  Prev: Alignment,  Up: Syntax Extensions
  
! 6.12.8 Extensions to â€˜enumâ€™ Type Declarations
  ---------------------------------------------
  
  The C23 and C++11 standards added new syntax to specify the underlying
! type of an â€˜enumâ€™ type.  For example,
  
       enum pet : unsigned char { CAT, DOG, ROCK };
  
   In GCC, this feature is supported as an extension in all older dialects
  of C and C++ as well.  For C++ dialects before C++11, use
! â€˜-Wno-c++11-extensionsâ€™ to silence the associated warnings.
  
!  You can also forward-declare an â€˜enumâ€™ type, without specifying its
  possible values.  The enumerators are supplied in a later redeclaration
  of the type, which must match the underlying type of the first
  declaration.
*************** declaration.
*** 50348,50367 ****
       ...
       enum pet : unsigned char { CAT, DOG, ROCK };
  
!  Forward declaration of 'enum' types with an explicit underlying type is
  also a feature of C++11 that is supported as an extension by GCC for all
  C dialects.  However, it's not available in C++ dialects prior to C++11.
  
!  The C++ standard refers to a forward declaration of an 'enum' with an
! explicit underlying type as an "opaque type".  It is not considered an
  incomplete type, since its size is known.  That means you can declare
  variables or allocate storage using the type before the redeclaration,
  not just use pointers of that type.
  
!  GCC has also traditionally supported forward declarations of 'enum'
  types that don't include an explicit underlying type specification.
  This results in an incomplete type, much like what you get if you write
! 'struct foo' without describing the elements.  You cannot allocate
  variables or storage using the type while it is incomplete.  However,
  you can work with pointers to that type.
  
--- 50356,50375 ----
       ...
       enum pet : unsigned char { CAT, DOG, ROCK };
  
!  Forward declaration of â€˜enumâ€™ types with an explicit underlying type is
  also a feature of C++11 that is supported as an extension by GCC for all
  C dialects.  However, it's not available in C++ dialects prior to C++11.
  
!  The C++ standard refers to a forward declaration of an â€˜enumâ€™ with an
! explicit underlying type as an â€œopaque typeâ€�.  It is not considered an
  incomplete type, since its size is known.  That means you can declare
  variables or allocate storage using the type before the redeclaration,
  not just use pointers of that type.
  
!  GCC has also traditionally supported forward declarations of â€˜enumâ€™
  types that don't include an explicit underlying type specification.
  This results in an incomplete type, much like what you get if you write
! â€˜struct fooâ€™ without describing the elements.  You cannot allocate
  variables or storage using the type while it is incomplete.  However,
  you can work with pointers to that type.
  
*************** is not supported at all in GNU C++.
*** 50372,50390 ****
  
  File: gcc.info,  Node: Boolean Type,  Next: Variadic Macros,  Prev: Enum Extensions,  Up: Syntax Extensions
  
! 6.12.9 Support for the '_Bool' Type
  -----------------------------------
  
! The C99 standard added '_Bool' as a C language keyword naming the
! boolean type.  As an extension, GNU C also recognizes '_Bool' in C90
! mode as well as with '-std=c99' and later.
  
!  C23 added 'bool' as the preferred name of the boolean type, but '_Bool'
  also remains a standard keyword in the language and is supported as such
! by GCC with '-std=c23'.
  
!  GNU C++ does not support '_Bool' as a keyword, but including
! '<stdbool.h>' defines it as a macro in terms of standard C++'s 'bool'
  type.
  
  
--- 50380,50398 ----
  
  File: gcc.info,  Node: Boolean Type,  Next: Variadic Macros,  Prev: Enum Extensions,  Up: Syntax Extensions
  
! 6.12.9 Support for the â€˜_Boolâ€™ Type
  -----------------------------------
  
! The C99 standard added â€˜_Boolâ€™ as a C language keyword naming the
! boolean type.  As an extension, GNU C also recognizes â€˜_Boolâ€™ in C90
! mode as well as with â€˜-std=c99â€™ and later.
  
!  C23 added â€˜boolâ€™ as the preferred name of the boolean type, but â€˜_Boolâ€™
  also remains a standard keyword in the language and is supported as such
! by GCC with â€˜-std=c23â€™.
  
!  GNU C++ does not support â€˜_Boolâ€™ as a keyword, but including
! â€˜<stdbool.h>â€™ defines it as a macro in terms of standard C++'s â€˜boolâ€™
  type.
  
  
*************** example:
*** 50400,50409 ****
  
       #define debug(format, ...) fprintf (stderr, format, __VA_ARGS__)
  
! Here '...' is a "variable argument".  In the invocation of such a macro,
  it represents the zero or more tokens until the closing parenthesis that
  ends the invocation, including any commas.  This set of tokens replaces
! the identifier '__VA_ARGS__' in the macro body wherever it appears.  See
  the CPP manual for more information.
  
   GCC has long supported variadic macros, and used a different syntax
--- 50408,50417 ----
  
       #define debug(format, ...) fprintf (stderr, format, __VA_ARGS__)
  
! Here â€˜...â€™ is a â€œvariable argumentâ€�.  In the invocation of such a macro,
  it represents the zero or more tokens until the closing parenthesis that
  ends the invocation, including any commas.  This set of tokens replaces
! the identifier â€˜__VA_ARGS__â€™ in the macro body wherever it appears.  See
  the CPP manual for more information.
  
   GCC has long supported variadic macros, and used a different syntax
*************** the expansion of the macro still has the
*** 50431,50442 ****
  string.
  
   To help solve this problem, CPP behaves specially for variable
! arguments used with the token paste operator, '##'.  If instead you
  write
  
       #define debug(format, ...) fprintf (stderr, format, ## __VA_ARGS__)
  
! and if the variable arguments are omitted or empty, the '##' operator
  causes the preprocessor to remove the comma before it.  If you do
  provide some variable arguments in your macro invocation, GNU CPP does
  not complain about the paste operation and instead places the variable
--- 50439,50450 ----
  string.
  
   To help solve this problem, CPP behaves specially for variable
! arguments used with the token paste operator, â€˜##â€™.  If instead you
  write
  
       #define debug(format, ...) fprintf (stderr, format, ## __VA_ARGS__)
  
! and if the variable arguments are omitted or empty, the â€˜##â€™ operator
  causes the preprocessor to remove the comma before it.  If you do
  provide some variable arguments in your macro invocation, GNU CPP does
  not complain about the paste operation and instead places the variable
*************** expression.
*** 50457,50463 ****
  
       x ? : y
  
! has the value of 'x' if that is nonzero; otherwise, the value of 'y'.
  
   This example is perfectly equivalent to
  
--- 50465,50471 ----
  
       x ? : y
  
! has the value of â€˜xâ€™ if that is nonzero; otherwise, the value of â€˜yâ€™.
  
   This example is perfectly equivalent to
  
*************** File: gcc.info,  Node: Case Ranges,  Nex
*** 50476,50494 ****
  6.12.12 Case Ranges
  -------------------
  
! You can specify a range of consecutive values in a single 'case' label,
  like this:
  
       case LOW ... HIGH:
  
! This has the same effect as the proper number of individual 'case'
  labels, one for each integer value from LOW to HIGH, inclusive.
  
   This feature is especially useful for ranges of ASCII character codes:
  
       case 'A' ... 'Z':
  
!  *Be careful:* Write spaces around the '...', for otherwise it may be
  parsed wrong when you use it with integer values.  For example, write
  this:
  
--- 50484,50502 ----
  6.12.12 Case Ranges
  -------------------
  
! You can specify a range of consecutive values in a single â€˜caseâ€™ label,
  like this:
  
       case LOW ... HIGH:
  
! This has the same effect as the proper number of individual â€˜caseâ€™
  labels, one for each integer value from LOW to HIGH, inclusive.
  
   This feature is especially useful for ranges of ASCII character codes:
  
       case 'A' ... 'Z':
  
!  *Be careful:* Write spaces around the â€˜...â€™, for otherwise it may be
  parsed wrong when you use it with integer values.  For example, write
  this:
  
*************** File: gcc.info,  Node: C++ Comments,  Ne
*** 50523,50534 ****
  6.12.14 C++ Style Comments
  --------------------------
  
! In GNU C, you may use C++ style comments, which start with '//' and
  continue until the end of the line.  Many other C implementations allow
  such comments, and they are included in the 1999 C standard.  However,
! C++ style comments are not recognized if you specify an '-std' option
! specifying a version of ISO C before C99, or '-ansi' (equivalent to
! '-std=c90').
  
  
  File: gcc.info,  Node: Escaped Newlines,  Next: Hex Floats,  Prev: C++ Comments,  Up: Syntax Extensions
--- 50531,50542 ----
  6.12.14 C++ Style Comments
  --------------------------
  
! In GNU C, you may use C++ style comments, which start with â€˜//â€™ and
  continue until the end of the line.  Many other C implementations allow
  such comments, and they are included in the 1999 C standard.  However,
! C++ style comments are not recognized if you specify an â€˜-stdâ€™ option
! specifying a version of ISO C before C99, or â€˜-ansiâ€™ (equivalent to
! â€˜-std=c90â€™).
  
  
  File: gcc.info,  Node: Escaped Newlines,  Next: Hex Floats,  Prev: C++ Comments,  Up: Syntax Extensions
*************** File: gcc.info,  Node: Hex Floats,  Next
*** 50554,50582 ****
  ------------------
  
  ISO C99 and ISO C++17 support floating-point numbers written not only in
! the usual decimal notation, such as '1.55e1', but also numbers such as
! '0x1.fp3' written in hexadecimal format.  As a GNU extension, GCC
  supports this in C90 mode (except in some cases when strictly
  conforming) and in C++98, C++11 and C++14 modes.  In that format the
! '0x' hex introducer and the 'p' or 'P' exponent field are mandatory.
  The exponent is a decimal number that indicates the power of 2 by which
! the significant part is multiplied.  Thus '0x1.f' is 1 15/16, 'p3'
! multiplies it by 8, and the value of '0x1.fp3' is the same as '1.55e1'.
  
   Unlike for floating-point numbers in the decimal notation the exponent
  is always required in the hexadecimal notation.  Otherwise the compiler
! would not be able to resolve the ambiguity of, e.g., '0x1.f'.  This
! could mean '1.0f' or '1.9375' since 'f' is also the extension for
! floating-point constants of type 'float'.
  
  
  File: gcc.info,  Node: Binary constants,  Next: Dollar Signs,  Prev: Hex Floats,  Up: Syntax Extensions
  
! 6.12.17 Binary Constants using the '0b' Prefix
  ----------------------------------------------
  
  Integer constants can be written as binary constants, consisting of a
! sequence of '0' and '1' digits, prefixed by '0b' or '0B'.  This is
  particularly useful in environments that operate a lot on the bit level
  (like microcontrollers).
  
--- 50562,50590 ----
  ------------------
  
  ISO C99 and ISO C++17 support floating-point numbers written not only in
! the usual decimal notation, such as â€˜1.55e1â€™, but also numbers such as
! â€˜0x1.fp3â€™ written in hexadecimal format.  As a GNU extension, GCC
  supports this in C90 mode (except in some cases when strictly
  conforming) and in C++98, C++11 and C++14 modes.  In that format the
! â€˜0xâ€™ hex introducer and the â€˜pâ€™ or â€˜Pâ€™ exponent field are mandatory.
  The exponent is a decimal number that indicates the power of 2 by which
! the significant part is multiplied.  Thus â€˜0x1.fâ€™ is 1 15/16, â€˜p3â€™
! multiplies it by 8, and the value of â€˜0x1.fp3â€™ is the same as â€˜1.55e1â€™.
  
   Unlike for floating-point numbers in the decimal notation the exponent
  is always required in the hexadecimal notation.  Otherwise the compiler
! would not be able to resolve the ambiguity of, e.g., â€˜0x1.fâ€™.  This
! could mean â€˜1.0fâ€™ or â€˜1.9375â€™ since â€˜fâ€™ is also the extension for
! floating-point constants of type â€˜floatâ€™.
  
  
  File: gcc.info,  Node: Binary constants,  Next: Dollar Signs,  Prev: Hex Floats,  Up: Syntax Extensions
  
! 6.12.17 Binary Constants using the â€˜0bâ€™ Prefix
  ----------------------------------------------
  
  Integer constants can be written as binary constants, consisting of a
! sequence of â€˜0â€™ and â€˜1â€™ digits, prefixed by â€˜0bâ€™ or â€˜0Bâ€™.  This is
  particularly useful in environments that operate a lot on the bit level
  (like microcontrollers).
  
*************** particularly useful in environments that
*** 50588,50594 ****
       i = 0b101010;
  
   The type of these constants follows the same rules as for octal or
! hexadecimal integer constants, so suffixes like 'L' or 'UL' can be
  applied.
  
  
--- 50596,50602 ----
       i = 0b101010;
  
   The type of these constants follows the same rules as for octal or
! hexadecimal integer constants, so suffixes like â€˜Lâ€™ or â€˜ULâ€™ can be
  applied.
  
  
*************** File: gcc.info,  Node: Character Escapes
*** 50608,50614 ****
  6.12.19 The Character <ESC> in Constants
  ----------------------------------------
  
! You can use the sequence '\e' in a string or character constant to stand
  for the ASCII character <ESC>.
  
  
--- 50616,50622 ----
  6.12.19 The Character <ESC> in Constants
  ----------------------------------------
  
! You can use the sequence â€˜\eâ€™ in a string or character constant to stand
  for the ASCII character <ESC>.
  
  
*************** File: gcc.info,  Node: Raw String Litera
*** 50618,50624 ****
  ---------------------------
  
  The C++11 standard added syntax for raw string literals prefixed with
! 'R'.  This syntax allows you to use an arbitrary delimiter sequence
  instead of escaping special characters within the string.  For example,
  these string constants are all equivalent:
  
--- 50626,50632 ----
  ---------------------------
  
  The C++11 standard added syntax for raw string literals prefixed with
! â€˜Râ€™.  This syntax allows you to use an arbitrary delimiter sequence
  instead of escaping special characters within the string.  For example,
  these string constants are all equivalent:
  
*************** these string constants are all equivalen
*** 50627,50633 ****
       const char *s3 = R"foo(\)foo";
  
   As an extension, GCC also accepts raw string literals in C with
! '-std=gnu99' or later.
  
  
  File: gcc.info,  Node: Alternate Keywords,  Next: Function Names,  Prev: Raw String Literals,  Up: Syntax Extensions
--- 50635,50641 ----
       const char *s3 = R"foo(\)foo";
  
   As an extension, GCC also accepts raw string literals in C with
! â€˜-std=gnu99â€™ or later.
  
  
  File: gcc.info,  Node: Alternate Keywords,  Next: Function Names,  Prev: Raw String Literals,  Up: Syntax Extensions
*************** File: gcc.info,  Node: Alternate Keyword
*** 50635,50651 ****
  6.12.21 Alternate Keywords
  --------------------------
  
! '-ansi' and the various '-std' options disable certain keywords that are
! GNU C extensions.  Specifically, the keywords 'asm', 'typeof' and
! 'inline' are not available in programs compiled with '-ansi' or a
! '-std=' option specifying an ISO standard that doesn't define the
  keyword.  This causes trouble when you want to use these extensions in a
  header file that can be included in programs that may be compiled with
  with such options.
  
!  The way to solve these problems is to put '__' at the beginning and end
! of each problematical keyword.  For example, use '__asm__' instead of
! 'asm', and '__inline__' instead of 'inline'.
  
   Other C compilers won't accept these alternative keywords; if you want
  to compile with another compiler, you can define the alternate keywords
--- 50643,50659 ----
  6.12.21 Alternate Keywords
  --------------------------
  
! â€˜-ansiâ€™ and the various â€˜-stdâ€™ options disable certain keywords that are
! GNU C extensions.  Specifically, the keywords â€˜asmâ€™, â€˜typeofâ€™ and
! â€˜inlineâ€™ are not available in programs compiled with â€˜-ansiâ€™ or a
! â€˜-std=â€™ option specifying an ISO standard that doesn't define the
  keyword.  This causes trouble when you want to use these extensions in a
  header file that can be included in programs that may be compiled with
  with such options.
  
!  The way to solve these problems is to put â€˜__â€™ at the beginning and end
! of each problematical keyword.  For example, use â€˜__asm__â€™ instead of
! â€˜asmâ€™, and â€˜__inline__â€™ instead of â€˜inlineâ€™.
  
   Other C compilers won't accept these alternative keywords; if you want
  to compile with another compiler, you can define the alternate keywords
*************** this:
*** 50656,50676 ****
       #define __asm__ asm
       #endif
  
!  '-pedantic' and other options cause warnings for many GNU C extensions.
! You can suppress such warnings using the keyword '__extension__'.
  Specifically:
  
!    * Writing '__extension__' before an expression prevents warnings
       about extensions within that expression.
  
!    * In C, writing:
  
            [[__extension__ ...]]
  
!      suppresses warnings about using '[[]]' attributes in C versions
       that predate C23.
  
!  '__extension__' has no effect aside from this.
  
  
  File: gcc.info,  Node: Function Names,  Prev: Alternate Keywords,  Up: Syntax Extensions
--- 50664,50684 ----
       #define __asm__ asm
       #endif
  
!  â€˜-pedanticâ€™ and other options cause warnings for many GNU C extensions.
! You can suppress such warnings using the keyword â€˜__extension__â€™.
  Specifically:
  
!    â€¢ Writing â€˜__extension__â€™ before an expression prevents warnings
       about extensions within that expression.
  
!    â€¢ In C, writing:
  
            [[__extension__ ...]]
  
!      suppresses warnings about using â€˜[[]]â€™ attributes in C versions
       that predate C23.
  
!  â€˜__extension__â€™ has no effect aside from this.
  
  
  File: gcc.info,  Node: Function Names,  Prev: Alternate Keywords,  Up: Syntax Extensions
*************** File: gcc.info,  Node: Function Names,
*** 50680,50690 ****
  
  GCC provides three magic constants that hold the name of the current
  function as a string.  In C++11 and later modes, all three are treated
! as constant expressions and can be used in 'constexpr' constexts.  The
! first of these constants is '__func__', which is part of the C99
  standard:
  
!  The identifier '__func__' is implicitly declared by the translator as
  if, immediately following the opening brace of each function definition,
  the declaration
  
--- 50688,50698 ----
  
  GCC provides three magic constants that hold the name of the current
  function as a string.  In C++11 and later modes, all three are treated
! as constant expressions and can be used in â€˜constexprâ€™ constexts.  The
! first of these constants is â€˜__func__â€™, which is part of the C99
  standard:
  
!  The identifier â€˜__func__â€™ is implicitly declared by the translator as
  if, immediately following the opening brace of each function definition,
  the declaration
  
*************** the declaration
*** 50692,50706 ****
  
  appeared, where function-name is the name of the lexically-enclosing
  function.  This name is the unadorned name of the function.  As an
! extension, at file (or, in C++, namespace scope), '__func__' evaluates
  to the empty string.
  
!  '__FUNCTION__' is another name for '__func__', provided for backward
  compatibility with old versions of GCC.
  
!  In C, '__PRETTY_FUNCTION__' is yet another name for '__func__', except
  that at file scope (or, in C++, namespace scope), it evaluates to the
! string '"top level"'.  In addition, in C++, '__PRETTY_FUNCTION__'
  contains the signature of the function as well as its bare name.  For
  example, this program:
  
--- 50700,50714 ----
  
  appeared, where function-name is the name of the lexically-enclosing
  function.  This name is the unadorned name of the function.  As an
! extension, at file (or, in C++, namespace scope), â€˜__func__â€™ evaluates
  to the empty string.
  
!  â€˜__FUNCTION__â€™ is another name for â€˜__func__â€™, provided for backward
  compatibility with old versions of GCC.
  
!  In C, â€˜__PRETTY_FUNCTION__â€™ is yet another name for â€˜__func__â€™, except
  that at file scope (or, in C++, namespace scope), it evaluates to the
! string â€˜"top level"â€™.  In addition, in C++, â€˜__PRETTY_FUNCTION__â€™
  contains the signature of the function as well as its bare name.  For
  example, this program:
  
*************** gives this output:
*** 50729,50735 ****
       __PRETTY_FUNCTION__ = void a::sub(int)
  
   These identifiers are variables, not preprocessor macros, and may not
! be used to initialize 'char' arrays or be concatenated with string
  literals.
  
  
--- 50737,50743 ----
       __PRETTY_FUNCTION__ = void a::sub(int)
  
   These identifiers are variables, not preprocessor macros, and may not
! be used to initialize â€˜charâ€™ arrays or be concatenated with string
  literals.
  
  
*************** or well-defined in standard C.
*** 50744,50750 ****
  * Menu:
  
  * Function Prototypes::    Prototype declarations and old-style definitions.
! * Pointer Arith::          Arithmetic on 'void'-pointers and function pointers.
  * Variadic Pointer Args::  Pointer arguments to variadic functions.
  * Pointers to Arrays::     Pointers to arrays with qualifiers work as expected.
  * Const and Volatile Functions:: GCC interprets these specially in C.
--- 50752,50758 ----
  * Menu:
  
  * Function Prototypes::    Prototype declarations and old-style definitions.
! * Pointer Arith::          Arithmetic on â€˜voidâ€™-pointers and function pointers.
  * Variadic Pointer Args::  Pointer arguments to variadic functions.
  * Pointers to Arrays::     Pointers to arrays with qualifiers work as expected.
  * Const and Volatile Functions:: GCC interprets these specially in C.
*************** old-style non-prototype definition.  Con
*** 50776,50790 ****
         return x == 0;
       }
  
!  Suppose the type 'uid_t' happens to be 'short'.  ISO C does not allow
  this example, because subword arguments in old-style non-prototype
  definitions are promoted.  Therefore in this example the function
! definition's argument is really an 'int', which does not match the
! prototype argument type of 'short'.
  
   This restriction of ISO C makes it hard to write code that is portable
  to traditional C compilers, because the programmer does not know whether
! the 'uid_t' type is 'short', 'int', or 'long'.  Therefore, in cases like
  these GNU C allows a prototype to override a later old-style definition.
  More precisely, in GNU C, a function prototype argument type overrides
  the argument type specified by a later old-style definition if the
--- 50784,50798 ----
         return x == 0;
       }
  
!  Suppose the type â€˜uid_tâ€™ happens to be â€˜shortâ€™.  ISO C does not allow
  this example, because subword arguments in old-style non-prototype
  definitions are promoted.  Therefore in this example the function
! definition's argument is really an â€˜intâ€™, which does not match the
! prototype argument type of â€˜shortâ€™.
  
   This restriction of ISO C makes it hard to write code that is portable
  to traditional C compilers, because the programmer does not know whether
! the â€˜uid_tâ€™ type is â€˜shortâ€™, â€˜intâ€™, or â€˜longâ€™.  Therefore, in cases like
  these GNU C allows a prototype to override a later old-style definition.
  More precisely, in GNU C, a function prototype argument type overrides
  the argument type specified by a later old-style definition if the
*************** extension is irrelevant.
*** 50805,50821 ****
  
  File: gcc.info,  Node: Pointer Arith,  Next: Variadic Pointer Args,  Prev: Function Prototypes,  Up: Semantic Extensions
  
! 6.13.2 Arithmetic on 'void'- and Function-Pointers
  --------------------------------------------------
  
  In GNU C, addition and subtraction operations are supported on pointers
! to 'void' and on pointers to functions.  This is done by treating the
! size of a 'void' or of a function as 1.
  
!  A consequence of this is that 'sizeof' is also allowed on 'void' and on
  function types, and returns 1.
  
!  The option '-Wpointer-arith' requests a warning if these extensions are
  used.
  
  
--- 50813,50829 ----
  
  File: gcc.info,  Node: Pointer Arith,  Next: Variadic Pointer Args,  Prev: Function Prototypes,  Up: Semantic Extensions
  
! 6.13.2 Arithmetic on â€˜voidâ€™- and Function-Pointers
  --------------------------------------------------
  
  In GNU C, addition and subtraction operations are supported on pointers
! to â€˜voidâ€™ and on pointers to functions.  This is done by treating the
! size of a â€˜voidâ€™ or of a function as 1.
  
!  A consequence of this is that â€˜sizeofâ€™ is also allowed on â€˜voidâ€™ and on
  function types, and returns 1.
  
!  The option â€˜-Wpointer-arithâ€™ requests a warning if these extensions are
  used.
  
  
*************** File: gcc.info,  Node: Variadic Pointer
*** 50824,50837 ****
  6.13.3 Pointer Arguments in Variadic Functions
  ----------------------------------------------
  
! Standard C requires that pointer types used with 'va_arg' in functions
  with variable argument lists either must be compatible with that of the
! actual argument, or that one type must be a pointer to 'void' and the
  other a pointer to a character type.  GNU C implements the POSIX XSI
! extension that additionally permits the use of 'va_arg' with a pointer
  type to receive arguments of any other pointer type.
  
!  In particular, in GNU C 'va_arg (ap, void *)' can safely be used to
  consume an argument of any pointer type.
  
  
--- 50832,50845 ----
  6.13.3 Pointer Arguments in Variadic Functions
  ----------------------------------------------
  
! Standard C requires that pointer types used with â€˜va_argâ€™ in functions
  with variable argument lists either must be compatible with that of the
! actual argument, or that one type must be a pointer to â€˜voidâ€™ and the
  other a pointer to a character type.  GNU C implements the POSIX XSI
! extension that additionally permits the use of â€˜va_argâ€™ with a pointer
  type to receive arguments of any other pointer type.
  
!  In particular, in GNU C â€˜va_arg (ap, void *)â€™ can safely be used to
  consume an argument of any pointer type.
  
  
*************** File: gcc.info,  Node: Pointers to Array
*** 50841,50849 ****
  ----------------------------------------------------------
  
  In GNU C, pointers to arrays with qualifiers work similar to pointers to
! other qualified types.  For example, a value of type 'int (*)[5]' can be
! used to initialize a variable of type 'const int (*)[5]'.  These types
! are incompatible in ISO C because the 'const' qualifier is formally
  attached to the element type of the array and not the array itself.
  
       extern void
--- 50849,50857 ----
  ----------------------------------------------------------
  
  In GNU C, pointers to arrays with qualifiers work similar to pointers to
! other qualified types.  For example, a value of type â€˜int (*)[5]â€™ can be
! used to initialize a variable of type â€˜const int (*)[5]â€™.  These types
! are incompatible in ISO C because the â€˜constâ€™ qualifier is formally
  attached to the element type of the array and not the array itself.
  
       extern void
*************** File: gcc.info,  Node: Const and Volatil
*** 50859,50870 ****
  6.13.5 Const and Volatile Functions
  -----------------------------------
  
! The C standard explicitly leaves the behavior of the 'const' and
! 'volatile' type qualifiers applied to functions undefined; these
! constructs can only arise through the use of 'typedef'.  As an
! extension, GCC defines this use of the 'const' qualifier to have the
! same meaning as the GCC 'const' function attribute, and the 'volatile'
! qualifier to be equivalent to the 'noreturn' attribute.  *Note Common
  Function Attributes::, for more information.
  
   As examples of this usage,
--- 50867,50878 ----
  6.13.5 Const and Volatile Functions
  -----------------------------------
  
! The C standard explicitly leaves the behavior of the â€˜constâ€™ and
! â€˜volatileâ€™ type qualifiers applied to functions undefined; these
! constructs can only arise through the use of â€˜typedefâ€™.  As an
! extension, GCC defines this use of the â€˜constâ€™ qualifier to have the
! same meaning as the GCC â€˜constâ€™ function attribute, and the â€˜volatileâ€™
! qualifier to be equivalent to the â€˜noreturnâ€™ attribute.  *Note Common
  Function Attributes::, for more information.
  
   As examples of this usage,
*************** Function Attributes::, for more informat
*** 50882,50888 ****
  
   In general, using function attributes instead is preferred, since the
  attributes make both the intent of the code and its reliance on a GNU
! extension explicit.  Additionally, using 'const' and 'volatile' in this
  way is specific to GNU C and does not work in GNU C++.
  
  
--- 50890,50896 ----
  
   In general, using function attributes instead is preferred, since the
  attributes make both the intent of the code and its reliance on a GNU
! extension explicit.  Additionally, using â€˜constâ€™ and â€˜volatileâ€™ in this
  way is specific to GNU C and does not work in GNU C++.
  
  
*************** providing direct access to instructions
*** 50906,50912 ****
  equivalents without the need to write assembly language.  There are also
  builtins to support various kinds of runtime error checking.
  
!  Most builtins have names prefixed with '__builtin_', although not all
  of them use this convention.  Except as otherwise documented, all
  built-in functions are available from any of the C family languages
  supported by GCC.
--- 50914,50920 ----
  equivalents without the need to write assembly language.  There are also
  builtins to support various kinds of runtime error checking.
  
!  Most builtins have names prefixed with â€˜__builtin_â€™, although not all
  of them use this convention.  Except as otherwise documented, all
  built-in functions are available from any of the C family languages
  supported by GCC.
*************** File: gcc.info,  Node: Library Builtins,
*** 50943,51062 ****
  
  GCC includes built-in versions of many of the functions in the standard
  C library.  These functions come in two forms: one whose names start
! with the '__builtin_' prefix, and the other without.  Both forms have
  the same type (including prototype), the same address (when their
  address is taken), and the same meaning as the C library functions even
! if you specify the '-fno-builtin' option *note C Dialect Options::).
  Many of these functions are only optimized in certain cases; if they are
  not optimized in a particular case, a call to the library function is
  emitted.
  
!  Outside strict ISO C mode ('-ansi', '-std=c90', '-std=c99' or
! '-std=c11'), the functions '_exit', 'alloca', 'bcmp', 'bzero',
! 'dcgettext', 'dgettext', 'dremf', 'dreml', 'drem', 'exp10f', 'exp10l',
! 'exp10', 'ffsll', 'ffsl', 'ffs', 'fprintf_unlocked', 'fputs_unlocked',
! 'gammaf', 'gammal', 'gamma', 'gammaf_r', 'gammal_r', 'gamma_r',
! 'gettext', 'index', 'isascii', 'j0f', 'j0l', 'j0', 'j1f', 'j1l', 'j1',
! 'jnf', 'jnl', 'jn', 'lgammaf_r', 'lgammal_r', 'lgamma_r', 'mempcpy',
! 'pow10f', 'pow10l', 'pow10', 'printf_unlocked', 'rindex', 'roundeven',
! 'roundevenf', 'roundevenl', 'scalbf', 'scalbl', 'scalb', 'signbit',
! 'signbitf', 'signbitl', 'signbitd32', 'signbitd64', 'signbitd128',
! 'significandf', 'significandl', 'significand', 'sincosf', 'sincosl',
! 'sincos', 'stpcpy', 'stpncpy', 'strcasecmp', 'strdup', 'strfmon',
! 'strncasecmp', 'strndup', 'strnlen', 'toascii', 'y0f', 'y0l', 'y0',
! 'y1f', 'y1l', 'y1', 'ynf', 'ynl' and 'yn' may be handled as built-in
  functions.  All these functions have corresponding versions prefixed
! with '__builtin_', which may be used even in strict C90 mode.
  
!  The ISO C99 functions '_Exit', 'acoshf', 'acoshl', 'acosh', 'asinhf',
! 'asinhl', 'asinh', 'atanhf', 'atanhl', 'atanh', 'cabsf', 'cabsl',
! 'cabs', 'cacosf', 'cacoshf', 'cacoshl', 'cacosh', 'cacosl', 'cacos',
! 'cargf', 'cargl', 'carg', 'casinf', 'casinhf', 'casinhl', 'casinh',
! 'casinl', 'casin', 'catanf', 'catanhf', 'catanhl', 'catanh', 'catanl',
! 'catan', 'cbrtf', 'cbrtl', 'cbrt', 'ccosf', 'ccoshf', 'ccoshl', 'ccosh',
! 'ccosl', 'ccos', 'cexpf', 'cexpl', 'cexp', 'cimagf', 'cimagl', 'cimag',
! 'clogf', 'clogl', 'clog', 'conjf', 'conjl', 'conj', 'copysignf',
! 'copysignl', 'copysign', 'cpowf', 'cpowl', 'cpow', 'cprojf', 'cprojl',
! 'cproj', 'crealf', 'creall', 'creal', 'csinf', 'csinhf', 'csinhl',
! 'csinh', 'csinl', 'csin', 'csqrtf', 'csqrtl', 'csqrt', 'ctanf',
! 'ctanhf', 'ctanhl', 'ctanh', 'ctanl', 'ctan', 'erfcf', 'erfcl', 'erfc',
! 'erff', 'erfl', 'erf', 'exp2f', 'exp2l', 'exp2', 'expm1f', 'expm1l',
! 'expm1', 'fdimf', 'fdiml', 'fdim', 'fmaf', 'fmal', 'fmaxf', 'fmaxl',
! 'fmax', 'fma', 'fminf', 'fminl', 'fmin', 'hypotf', 'hypotl', 'hypot',
! 'ilogbf', 'ilogbl', 'ilogb', 'imaxabs', 'isblank', 'iswblank',
! 'lgammaf', 'lgammal', 'lgamma', 'llabs', 'llrintf', 'llrintl', 'llrint',
! 'llroundf', 'llroundl', 'llround', 'log1pf', 'log1pl', 'log1p', 'log2f',
! 'log2l', 'log2', 'logbf', 'logbl', 'logb', 'lrintf', 'lrintl', 'lrint',
! 'lroundf', 'lroundl', 'lround', 'nearbyintf', 'nearbyintl', 'nearbyint',
! 'nextafterf', 'nextafterl', 'nextafter', 'nexttowardf', 'nexttowardl',
! 'nexttoward', 'remainderf', 'remainderl', 'remainder', 'remquof',
! 'remquol', 'remquo', 'rintf', 'rintl', 'rint', 'roundf', 'roundl',
! 'round', 'scalblnf', 'scalblnl', 'scalbln', 'scalbnf', 'scalbnl',
! 'scalbn', 'snprintf', 'tgammaf', 'tgammal', 'tgamma', 'truncf',
! 'truncl', 'trunc', 'vfscanf', 'vscanf', 'vsnprintf' and 'vsscanf' are
! handled as built-in functions except in strict ISO C90 mode ('-ansi' or
! '-std=c90').
  
!  There are also built-in versions of the ISO C99 functions 'acosf',
! 'acosl', 'asinf', 'asinl', 'atan2f', 'atan2l', 'atanf', 'atanl',
! 'ceilf', 'ceill', 'cosf', 'coshf', 'coshl', 'cosl', 'expf', 'expl',
! 'fabsf', 'fabsl', 'floorf', 'floorl', 'fmodf', 'fmodl', 'frexpf',
! 'frexpl', 'ldexpf', 'ldexpl', 'log10f', 'log10l', 'logf', 'logl',
! 'modfl', 'modff', 'powf', 'powl', 'sinf', 'sinhf', 'sinhl', 'sinl',
! 'sqrtf', 'sqrtl', 'tanf', 'tanhf', 'tanhl' and 'tanl' that are
  recognized in any mode since ISO C90 reserves these names for the
  purpose to which ISO C99 puts them.  All these functions have
! corresponding versions prefixed with '__builtin_'.
  
!  There are also built-in functions '__builtin_fabsfN',
! '__builtin_fabsfNx', '__builtin_copysignfN' and '__builtin_copysignfNx',
! corresponding to the TS 18661-3 functions 'fabsfN', 'fabsfNx',
! 'copysignfN' and 'copysignfNx', for supported types '_FloatN' and
! '_FloatNx'.
  
!  There are also GNU extension functions 'clog10', 'clog10f' and
! 'clog10l' which names are reserved by ISO C99 for future use.  All these
! functions have versions prefixed with '__builtin_'.
  
!  The ISO C94 functions 'iswalnum', 'iswalpha', 'iswcntrl', 'iswdigit',
! 'iswgraph', 'iswlower', 'iswprint', 'iswpunct', 'iswspace', 'iswupper',
! 'iswxdigit', 'towlower' and 'towupper' are handled as built-in functions
! except in strict ISO C90 mode ('-ansi' or '-std=c90').
  
!  The ISO C90 functions 'abort', 'abs', 'acos', 'asin', 'atan2', 'atan',
! 'calloc', 'ceil', 'cosh', 'cos', 'exit', 'exp', 'fabs', 'floor', 'fmod',
! 'fprintf', 'fputs', 'free', 'frexp', 'fscanf', 'isalnum', 'isalpha',
! 'iscntrl', 'isdigit', 'isgraph', 'islower', 'isprint', 'ispunct',
! 'isspace', 'isupper', 'isxdigit', 'tolower', 'toupper', 'labs', 'ldexp',
! 'log10', 'log', 'malloc', 'memchr', 'memcmp', 'memcpy', 'memset',
! 'modf', 'pow', 'printf', 'putchar', 'puts', 'realloc', 'scanf', 'sinh',
! 'sin', 'snprintf', 'sprintf', 'sqrt', 'sscanf', 'strcat', 'strchr',
! 'strcmp', 'strcpy', 'strcspn', 'strlen', 'strncat', 'strncmp',
! 'strncpy', 'strpbrk', 'strrchr', 'strspn', 'strstr', 'tanh', 'tan',
! 'vfprintf', 'vprintf' and 'vsprintf' are all recognized as built-in
! functions unless '-fno-builtin' is specified (or '-fno-builtin-FUNCTION'
  is specified for an individual function).  All of these functions have
! corresponding versions prefixed with '__builtin_'.
  
   GCC provides built-in versions of the ISO C99 floating-point comparison
  macros that avoid raising exceptions for unordered operands.  They have
! the same names as the standard macros ( 'isgreater', 'isgreaterequal',
! 'isless', 'islessequal', 'islessgreater', and 'isunordered') , with
! '__builtin_' prefixed.  We intend for a library implementor to be able
! to simply '#define' each standard macro to its built-in equivalent.  In
! the same fashion, GCC provides 'fpclassify', 'iseqsig', 'isfinite',
! 'isinf_sign', 'isnormal' and 'signbit' built-ins used with '__builtin_'
! prefixed.  The 'isinf' and 'isnan' built-in functions appear both with
! and without the '__builtin_' prefix.  With '-ffinite-math-only' option
! the 'isinf' and 'isnan' built-in functions will always return 0.
  
   GCC provides built-in versions of the ISO C99 floating-point rounding
! and exceptions handling functions 'fegetround', 'feclearexcept' and
! 'feraiseexcept'.  They may not be available for all targets, and because
  they need close interaction with libc internal values, they may not be
  available for all target libcs, but in all cases they will gracefully
  fallback to libc calls.  These built-in functions appear both with and
! without the '__builtin_' prefix.
  
  
  File: gcc.info,  Node: Numeric Builtins,  Next: Stack Allocation,  Prev: Library Builtins,  Up: Built-in Functions
--- 50951,51070 ----
  
  GCC includes built-in versions of many of the functions in the standard
  C library.  These functions come in two forms: one whose names start
! with the â€˜__builtin_â€™ prefix, and the other without.  Both forms have
  the same type (including prototype), the same address (when their
  address is taken), and the same meaning as the C library functions even
! if you specify the â€˜-fno-builtinâ€™ option *note C Dialect Options::).
  Many of these functions are only optimized in certain cases; if they are
  not optimized in a particular case, a call to the library function is
  emitted.
  
!  Outside strict ISO C mode (â€˜-ansiâ€™, â€˜-std=c90â€™, â€˜-std=c99â€™ or
! â€˜-std=c11â€™), the functions â€˜_exitâ€™, â€˜allocaâ€™, â€˜bcmpâ€™, â€˜bzeroâ€™,
! â€˜dcgettextâ€™, â€˜dgettextâ€™, â€˜dremfâ€™, â€˜dremlâ€™, â€˜dremâ€™, â€˜exp10fâ€™, â€˜exp10lâ€™,
! â€˜exp10â€™, â€˜ffsllâ€™, â€˜ffslâ€™, â€˜ffsâ€™, â€˜fprintf_unlockedâ€™, â€˜fputs_unlockedâ€™,
! â€˜gammafâ€™, â€˜gammalâ€™, â€˜gammaâ€™, â€˜gammaf_râ€™, â€˜gammal_râ€™, â€˜gamma_râ€™,
! â€˜gettextâ€™, â€˜indexâ€™, â€˜isasciiâ€™, â€˜j0fâ€™, â€˜j0lâ€™, â€˜j0â€™, â€˜j1fâ€™, â€˜j1lâ€™, â€˜j1â€™,
! â€˜jnfâ€™, â€˜jnlâ€™, â€˜jnâ€™, â€˜lgammaf_râ€™, â€˜lgammal_râ€™, â€˜lgamma_râ€™, â€˜mempcpyâ€™,
! â€˜pow10fâ€™, â€˜pow10lâ€™, â€˜pow10â€™, â€˜printf_unlockedâ€™, â€˜rindexâ€™, â€˜roundevenâ€™,
! â€˜roundevenfâ€™, â€˜roundevenlâ€™, â€˜scalbfâ€™, â€˜scalblâ€™, â€˜scalbâ€™, â€˜signbitâ€™,
! â€˜signbitfâ€™, â€˜signbitlâ€™, â€˜signbitd32â€™, â€˜signbitd64â€™, â€˜signbitd128â€™,
! â€˜significandfâ€™, â€˜significandlâ€™, â€˜significandâ€™, â€˜sincosfâ€™, â€˜sincoslâ€™,
! â€˜sincosâ€™, â€˜stpcpyâ€™, â€˜stpncpyâ€™, â€˜strcasecmpâ€™, â€˜strdupâ€™, â€˜strfmonâ€™,
! â€˜strncasecmpâ€™, â€˜strndupâ€™, â€˜strnlenâ€™, â€˜toasciiâ€™, â€˜y0fâ€™, â€˜y0lâ€™, â€˜y0â€™,
! â€˜y1fâ€™, â€˜y1lâ€™, â€˜y1â€™, â€˜ynfâ€™, â€˜ynlâ€™ and â€˜ynâ€™ may be handled as built-in
  functions.  All these functions have corresponding versions prefixed
! with â€˜__builtin_â€™, which may be used even in strict C90 mode.
  
!  The ISO C99 functions â€˜_Exitâ€™, â€˜acoshfâ€™, â€˜acoshlâ€™, â€˜acoshâ€™, â€˜asinhfâ€™,
! â€˜asinhlâ€™, â€˜asinhâ€™, â€˜atanhfâ€™, â€˜atanhlâ€™, â€˜atanhâ€™, â€˜cabsfâ€™, â€˜cabslâ€™,
! â€˜cabsâ€™, â€˜cacosfâ€™, â€˜cacoshfâ€™, â€˜cacoshlâ€™, â€˜cacoshâ€™, â€˜cacoslâ€™, â€˜cacosâ€™,
! â€˜cargfâ€™, â€˜carglâ€™, â€˜cargâ€™, â€˜casinfâ€™, â€˜casinhfâ€™, â€˜casinhlâ€™, â€˜casinhâ€™,
! â€˜casinlâ€™, â€˜casinâ€™, â€˜catanfâ€™, â€˜catanhfâ€™, â€˜catanhlâ€™, â€˜catanhâ€™, â€˜catanlâ€™,
! â€˜catanâ€™, â€˜cbrtfâ€™, â€˜cbrtlâ€™, â€˜cbrtâ€™, â€˜ccosfâ€™, â€˜ccoshfâ€™, â€˜ccoshlâ€™, â€˜ccoshâ€™,
! â€˜ccoslâ€™, â€˜ccosâ€™, â€˜cexpfâ€™, â€˜cexplâ€™, â€˜cexpâ€™, â€˜cimagfâ€™, â€˜cimaglâ€™, â€˜cimagâ€™,
! â€˜clogfâ€™, â€˜cloglâ€™, â€˜clogâ€™, â€˜conjfâ€™, â€˜conjlâ€™, â€˜conjâ€™, â€˜copysignfâ€™,
! â€˜copysignlâ€™, â€˜copysignâ€™, â€˜cpowfâ€™, â€˜cpowlâ€™, â€˜cpowâ€™, â€˜cprojfâ€™, â€˜cprojlâ€™,
! â€˜cprojâ€™, â€˜crealfâ€™, â€˜creallâ€™, â€˜crealâ€™, â€˜csinfâ€™, â€˜csinhfâ€™, â€˜csinhlâ€™,
! â€˜csinhâ€™, â€˜csinlâ€™, â€˜csinâ€™, â€˜csqrtfâ€™, â€˜csqrtlâ€™, â€˜csqrtâ€™, â€˜ctanfâ€™,
! â€˜ctanhfâ€™, â€˜ctanhlâ€™, â€˜ctanhâ€™, â€˜ctanlâ€™, â€˜ctanâ€™, â€˜erfcfâ€™, â€˜erfclâ€™, â€˜erfcâ€™,
! â€˜erffâ€™, â€˜erflâ€™, â€˜erfâ€™, â€˜exp2fâ€™, â€˜exp2lâ€™, â€˜exp2â€™, â€˜expm1fâ€™, â€˜expm1lâ€™,
! â€˜expm1â€™, â€˜fdimfâ€™, â€˜fdimlâ€™, â€˜fdimâ€™, â€˜fmafâ€™, â€˜fmalâ€™, â€˜fmaxfâ€™, â€˜fmaxlâ€™,
! â€˜fmaxâ€™, â€˜fmaâ€™, â€˜fminfâ€™, â€˜fminlâ€™, â€˜fminâ€™, â€˜hypotfâ€™, â€˜hypotlâ€™, â€˜hypotâ€™,
! â€˜ilogbfâ€™, â€˜ilogblâ€™, â€˜ilogbâ€™, â€˜imaxabsâ€™, â€˜isblankâ€™, â€˜iswblankâ€™,
! â€˜lgammafâ€™, â€˜lgammalâ€™, â€˜lgammaâ€™, â€˜llabsâ€™, â€˜llrintfâ€™, â€˜llrintlâ€™, â€˜llrintâ€™,
! â€˜llroundfâ€™, â€˜llroundlâ€™, â€˜llroundâ€™, â€˜log1pfâ€™, â€˜log1plâ€™, â€˜log1pâ€™, â€˜log2fâ€™,
! â€˜log2lâ€™, â€˜log2â€™, â€˜logbfâ€™, â€˜logblâ€™, â€˜logbâ€™, â€˜lrintfâ€™, â€˜lrintlâ€™, â€˜lrintâ€™,
! â€˜lroundfâ€™, â€˜lroundlâ€™, â€˜lroundâ€™, â€˜nearbyintfâ€™, â€˜nearbyintlâ€™, â€˜nearbyintâ€™,
! â€˜nextafterfâ€™, â€˜nextafterlâ€™, â€˜nextafterâ€™, â€˜nexttowardfâ€™, â€˜nexttowardlâ€™,
! â€˜nexttowardâ€™, â€˜remainderfâ€™, â€˜remainderlâ€™, â€˜remainderâ€™, â€˜remquofâ€™,
! â€˜remquolâ€™, â€˜remquoâ€™, â€˜rintfâ€™, â€˜rintlâ€™, â€˜rintâ€™, â€˜roundfâ€™, â€˜roundlâ€™,
! â€˜roundâ€™, â€˜scalblnfâ€™, â€˜scalblnlâ€™, â€˜scalblnâ€™, â€˜scalbnfâ€™, â€˜scalbnlâ€™,
! â€˜scalbnâ€™, â€˜snprintfâ€™, â€˜tgammafâ€™, â€˜tgammalâ€™, â€˜tgammaâ€™, â€˜truncfâ€™,
! â€˜trunclâ€™, â€˜truncâ€™, â€˜vfscanfâ€™, â€˜vscanfâ€™, â€˜vsnprintfâ€™ and â€˜vsscanfâ€™ are
! handled as built-in functions except in strict ISO C90 mode (â€˜-ansiâ€™ or
! â€˜-std=c90â€™).
  
!  There are also built-in versions of the ISO C99 functions â€˜acosfâ€™,
! â€˜acoslâ€™, â€˜asinfâ€™, â€˜asinlâ€™, â€˜atan2fâ€™, â€˜atan2lâ€™, â€˜atanfâ€™, â€˜atanlâ€™,
! â€˜ceilfâ€™, â€˜ceillâ€™, â€˜cosfâ€™, â€˜coshfâ€™, â€˜coshlâ€™, â€˜coslâ€™, â€˜expfâ€™, â€˜explâ€™,
! â€˜fabsfâ€™, â€˜fabslâ€™, â€˜floorfâ€™, â€˜floorlâ€™, â€˜fmodfâ€™, â€˜fmodlâ€™, â€˜frexpfâ€™,
! â€˜frexplâ€™, â€˜ldexpfâ€™, â€˜ldexplâ€™, â€˜log10fâ€™, â€˜log10lâ€™, â€˜logfâ€™, â€˜loglâ€™,
! â€˜modflâ€™, â€˜modffâ€™, â€˜powfâ€™, â€˜powlâ€™, â€˜sinfâ€™, â€˜sinhfâ€™, â€˜sinhlâ€™, â€˜sinlâ€™,
! â€˜sqrtfâ€™, â€˜sqrtlâ€™, â€˜tanfâ€™, â€˜tanhfâ€™, â€˜tanhlâ€™ and â€˜tanlâ€™ that are
  recognized in any mode since ISO C90 reserves these names for the
  purpose to which ISO C99 puts them.  All these functions have
! corresponding versions prefixed with â€˜__builtin_â€™.
  
!  There are also built-in functions â€˜__builtin_fabsfNâ€™,
! â€˜__builtin_fabsfNxâ€™, â€˜__builtin_copysignfNâ€™ and â€˜__builtin_copysignfNxâ€™,
! corresponding to the TS 18661-3 functions â€˜fabsfNâ€™, â€˜fabsfNxâ€™,
! â€˜copysignfNâ€™ and â€˜copysignfNxâ€™, for supported types â€˜_FloatNâ€™ and
! â€˜_FloatNxâ€™.
  
!  There are also GNU extension functions â€˜clog10â€™, â€˜clog10fâ€™ and
! â€˜clog10lâ€™ which names are reserved by ISO C99 for future use.  All these
! functions have versions prefixed with â€˜__builtin_â€™.
  
!  The ISO C94 functions â€˜iswalnumâ€™, â€˜iswalphaâ€™, â€˜iswcntrlâ€™, â€˜iswdigitâ€™,
! â€˜iswgraphâ€™, â€˜iswlowerâ€™, â€˜iswprintâ€™, â€˜iswpunctâ€™, â€˜iswspaceâ€™, â€˜iswupperâ€™,
! â€˜iswxdigitâ€™, â€˜towlowerâ€™ and â€˜towupperâ€™ are handled as built-in functions
! except in strict ISO C90 mode (â€˜-ansiâ€™ or â€˜-std=c90â€™).
  
!  The ISO C90 functions â€˜abortâ€™, â€˜absâ€™, â€˜acosâ€™, â€˜asinâ€™, â€˜atan2â€™, â€˜atanâ€™,
! â€˜callocâ€™, â€˜ceilâ€™, â€˜coshâ€™, â€˜cosâ€™, â€˜exitâ€™, â€˜expâ€™, â€˜fabsâ€™, â€˜floorâ€™, â€˜fmodâ€™,
! â€˜fprintfâ€™, â€˜fputsâ€™, â€˜freeâ€™, â€˜frexpâ€™, â€˜fscanfâ€™, â€˜isalnumâ€™, â€˜isalphaâ€™,
! â€˜iscntrlâ€™, â€˜isdigitâ€™, â€˜isgraphâ€™, â€˜islowerâ€™, â€˜isprintâ€™, â€˜ispunctâ€™,
! â€˜isspaceâ€™, â€˜isupperâ€™, â€˜isxdigitâ€™, â€˜tolowerâ€™, â€˜toupperâ€™, â€˜labsâ€™, â€˜ldexpâ€™,
! â€˜log10â€™, â€˜logâ€™, â€˜mallocâ€™, â€˜memchrâ€™, â€˜memcmpâ€™, â€˜memcpyâ€™, â€˜memsetâ€™,
! â€˜modfâ€™, â€˜powâ€™, â€˜printfâ€™, â€˜putcharâ€™, â€˜putsâ€™, â€˜reallocâ€™, â€˜scanfâ€™, â€˜sinhâ€™,
! â€˜sinâ€™, â€˜snprintfâ€™, â€˜sprintfâ€™, â€˜sqrtâ€™, â€˜sscanfâ€™, â€˜strcatâ€™, â€˜strchrâ€™,
! â€˜strcmpâ€™, â€˜strcpyâ€™, â€˜strcspnâ€™, â€˜strlenâ€™, â€˜strncatâ€™, â€˜strncmpâ€™,
! â€˜strncpyâ€™, â€˜strpbrkâ€™, â€˜strrchrâ€™, â€˜strspnâ€™, â€˜strstrâ€™, â€˜tanhâ€™, â€˜tanâ€™,
! â€˜vfprintfâ€™, â€˜vprintfâ€™ and â€˜vsprintfâ€™ are all recognized as built-in
! functions unless â€˜-fno-builtinâ€™ is specified (or â€˜-fno-builtin-FUNCTIONâ€™
  is specified for an individual function).  All of these functions have
! corresponding versions prefixed with â€˜__builtin_â€™.
  
   GCC provides built-in versions of the ISO C99 floating-point comparison
  macros that avoid raising exceptions for unordered operands.  They have
! the same names as the standard macros ( â€˜isgreaterâ€™, â€˜isgreaterequalâ€™,
! â€˜islessâ€™, â€˜islessequalâ€™, â€˜islessgreaterâ€™, and â€˜isunorderedâ€™) , with
! â€˜__builtin_â€™ prefixed.  We intend for a library implementor to be able
! to simply â€˜#defineâ€™ each standard macro to its built-in equivalent.  In
! the same fashion, GCC provides â€˜fpclassifyâ€™, â€˜iseqsigâ€™, â€˜isfiniteâ€™,
! â€˜isinf_signâ€™, â€˜isnormalâ€™ and â€˜signbitâ€™ built-ins used with â€˜__builtin_â€™
! prefixed.  The â€˜isinfâ€™ and â€˜isnanâ€™ built-in functions appear both with
! and without the â€˜__builtin_â€™ prefix.  With â€˜-ffinite-math-onlyâ€™ option
! the â€˜isinfâ€™ and â€˜isnanâ€™ built-in functions will always return 0.
  
   GCC provides built-in versions of the ISO C99 floating-point rounding
! and exceptions handling functions â€˜fegetroundâ€™, â€˜feclearexceptâ€™ and
! â€˜feraiseexceptâ€™.  They may not be available for all targets, and because
  they need close interaction with libc internal values, they may not be
  available for all target libcs, but in all cases they will gracefully
  fallback to libc calls.  These built-in functions appear both with and
! without the â€˜__builtin_â€™ prefix.
  
  
  File: gcc.info,  Node: Numeric Builtins,  Next: Stack Allocation,  Prev: Library Builtins,  Up: Built-in Functions
*************** File: gcc.info,  Node: Floating-Point Fo
*** 51090,51228 ****
  
   -- Built-in Function: double __builtin_huge_val (void)
       Returns a positive infinity, if supported by the floating-point
!      format, else 'DBL_MAX'.  This function is suitable for implementing
!      the ISO C macro 'HUGE_VAL'.
  
   -- Built-in Function: float __builtin_huge_valf (void)
!      Similar to '__builtin_huge_val', except the return type is 'float'.
  
   -- Built-in Function: long double __builtin_huge_vall (void)
!      Similar to '__builtin_huge_val', except the return type is 'long
!      double'.
  
   -- Built-in Function: _FloatN __builtin_huge_valfN (void)
!      Similar to '__builtin_huge_val', except the return type is
!      '_FloatN'.
  
   -- Built-in Function: _FloatNx __builtin_huge_valfNx (void)
!      Similar to '__builtin_huge_val', except the return type is
!      '_FloatNx'.
  
   -- Built-in Function: int __builtin_fpclassify (int, int, int, int,
            int, ...)
       This built-in implements the C99 fpclassify functionality.  The
       first five int arguments should be the target library's notion of
       the possible FP classes and are used for return values.  They must
!      be constant values and they must appear in this order: 'FP_NAN',
!      'FP_INFINITE', 'FP_NORMAL', 'FP_SUBNORMAL' and 'FP_ZERO'.  The
       ellipsis is for exactly one floating-point value to classify.  GCC
       treats the last argument as type-generic, which means it does not
       do default promotion from float to double.
  
   -- Built-in Function: double __builtin_inf (void)
!      Similar to '__builtin_huge_val', except a warning is generated if
       the target floating-point format does not support infinities.
  
   -- Built-in Function: _Decimal32 __builtin_infd32 (void)
!      Similar to '__builtin_inf', except the return type is '_Decimal32'.
  
   -- Built-in Function: _Decimal64 __builtin_infd64 (void)
!      Similar to '__builtin_inf', except the return type is '_Decimal64'.
  
   -- Built-in Function: _Decimal128 __builtin_infd128 (void)
!      Similar to '__builtin_inf', except the return type is
!      '_Decimal128'.
  
   -- Built-in Function: float __builtin_inff (void)
!      Similar to '__builtin_inf', except the return type is 'float'.
       This function is suitable for implementing the ISO C99 macro
!      'INFINITY'.
  
   -- Built-in Function: long double __builtin_infl (void)
!      Similar to '__builtin_inf', except the return type is 'long
!      double'.
  
   -- Built-in Function: _FloatN __builtin_inffN (void)
!      Similar to '__builtin_inf', except the return type is '_FloatN'.
  
   -- Built-in Function: _FloatN __builtin_inffNx (void)
!      Similar to '__builtin_inf', except the return type is '_FloatNx'.
  
   -- Built-in Function: int __builtin_isinf_sign (...)
!      Similar to 'isinf', except the return value is -1 for an argument
!      of '-Inf' and 1 for an argument of '+Inf'.  Note while the
       parameter list is an ellipsis, this function only accepts exactly
       one floating-point argument.  GCC treats this parameter as
       type-generic, which means it does not do default promotion from
       float to double.
  
   -- Built-in Function: double __builtin_nan (const char *STR)
!      This is an implementation of the ISO C99 function 'nan'.
  
!      Since ISO C99 defines this function in terms of 'strtod', which we
       do not implement, a description of the parsing is in order.  The
!      string is parsed as by 'strtol'; that is, the base is recognized by
!      leading '0' or '0x' prefixes.  The number parsed is placed in the
       significand such that the least significant bit of the number is at
       the least significant bit of the significand.  The number is
       truncated to fit the significand field provided.  The significand
       is forced to be a quiet NaN.
  
       This function, if given a string literal all of which would have
!      been consumed by 'strtol', is evaluated early enough that it is
       considered a compile-time constant.
  
   -- Built-in Function: _Decimal32 __builtin_nand32 (const char *STR)
!      Similar to '__builtin_nan', except the return type is '_Decimal32'.
  
   -- Built-in Function: _Decimal64 __builtin_nand64 (const char *STR)
!      Similar to '__builtin_nan', except the return type is '_Decimal64'.
  
   -- Built-in Function: _Decimal128 __builtin_nand128 (const char *STR)
!      Similar to '__builtin_nan', except the return type is
!      '_Decimal128'.
  
   -- Built-in Function: float __builtin_nanf (const char *STR)
!      Similar to '__builtin_nan', except the return type is 'float'.
  
   -- Built-in Function: long double __builtin_nanl (const char *STR)
!      Similar to '__builtin_nan', except the return type is 'long
!      double'.
  
   -- Built-in Function: _FloatN __builtin_nanfN (const char *STR)
!      Similar to '__builtin_nan', except the return type is '_FloatN'.
  
   -- Built-in Function: _FloatNx __builtin_nanfNx (const char *STR)
!      Similar to '__builtin_nan', except the return type is '_FloatNx'.
  
   -- Built-in Function: double __builtin_nans (const char *STR)
!      Similar to '__builtin_nan', except the significand is forced to be
!      a signaling NaN.  The 'nans' function is proposed by WG14 N965.
  
   -- Built-in Function: _Decimal32 __builtin_nansd32 (const char *STR)
!      Similar to '__builtin_nans', except the return type is
!      '_Decimal32'.
  
   -- Built-in Function: _Decimal64 __builtin_nansd64 (const char *STR)
!      Similar to '__builtin_nans', except the return type is
!      '_Decimal64'.
  
   -- Built-in Function: _Decimal128 __builtin_nansd128 (const char *STR)
!      Similar to '__builtin_nans', except the return type is
!      '_Decimal128'.
  
   -- Built-in Function: float __builtin_nansf (const char *STR)
!      Similar to '__builtin_nans', except the return type is 'float'.
  
   -- Built-in Function: long double __builtin_nansl (const char *STR)
!      Similar to '__builtin_nans', except the return type is 'long
!      double'.
  
   -- Built-in Function: _FloatN __builtin_nansfN (const char *STR)
!      Similar to '__builtin_nans', except the return type is '_FloatN'.
  
   -- Built-in Function: _FloatNx __builtin_nansfNx (const char *STR)
!      Similar to '__builtin_nans', except the return type is '_FloatNx'.
  
   -- Built-in Function: int __builtin_issignaling (...)
       Return non-zero if the argument is a signaling NaN and zero
--- 51098,51236 ----
  
   -- Built-in Function: double __builtin_huge_val (void)
       Returns a positive infinity, if supported by the floating-point
!      format, else â€˜DBL_MAXâ€™.  This function is suitable for implementing
!      the ISO C macro â€˜HUGE_VALâ€™.
  
   -- Built-in Function: float __builtin_huge_valf (void)
!      Similar to â€˜__builtin_huge_valâ€™, except the return type is â€˜floatâ€™.
  
   -- Built-in Function: long double __builtin_huge_vall (void)
!      Similar to â€˜__builtin_huge_valâ€™, except the return type is â€˜long
!      doubleâ€™.
  
   -- Built-in Function: _FloatN __builtin_huge_valfN (void)
!      Similar to â€˜__builtin_huge_valâ€™, except the return type is
!      â€˜_FloatNâ€™.
  
   -- Built-in Function: _FloatNx __builtin_huge_valfNx (void)
!      Similar to â€˜__builtin_huge_valâ€™, except the return type is
!      â€˜_FloatNxâ€™.
  
   -- Built-in Function: int __builtin_fpclassify (int, int, int, int,
            int, ...)
       This built-in implements the C99 fpclassify functionality.  The
       first five int arguments should be the target library's notion of
       the possible FP classes and are used for return values.  They must
!      be constant values and they must appear in this order: â€˜FP_NANâ€™,
!      â€˜FP_INFINITEâ€™, â€˜FP_NORMALâ€™, â€˜FP_SUBNORMALâ€™ and â€˜FP_ZEROâ€™.  The
       ellipsis is for exactly one floating-point value to classify.  GCC
       treats the last argument as type-generic, which means it does not
       do default promotion from float to double.
  
   -- Built-in Function: double __builtin_inf (void)
!      Similar to â€˜__builtin_huge_valâ€™, except a warning is generated if
       the target floating-point format does not support infinities.
  
   -- Built-in Function: _Decimal32 __builtin_infd32 (void)
!      Similar to â€˜__builtin_infâ€™, except the return type is â€˜_Decimal32â€™.
  
   -- Built-in Function: _Decimal64 __builtin_infd64 (void)
!      Similar to â€˜__builtin_infâ€™, except the return type is â€˜_Decimal64â€™.
  
   -- Built-in Function: _Decimal128 __builtin_infd128 (void)
!      Similar to â€˜__builtin_infâ€™, except the return type is
!      â€˜_Decimal128â€™.
  
   -- Built-in Function: float __builtin_inff (void)
!      Similar to â€˜__builtin_infâ€™, except the return type is â€˜floatâ€™.
       This function is suitable for implementing the ISO C99 macro
!      â€˜INFINITYâ€™.
  
   -- Built-in Function: long double __builtin_infl (void)
!      Similar to â€˜__builtin_infâ€™, except the return type is â€˜long
!      doubleâ€™.
  
   -- Built-in Function: _FloatN __builtin_inffN (void)
!      Similar to â€˜__builtin_infâ€™, except the return type is â€˜_FloatNâ€™.
  
   -- Built-in Function: _FloatN __builtin_inffNx (void)
!      Similar to â€˜__builtin_infâ€™, except the return type is â€˜_FloatNxâ€™.
  
   -- Built-in Function: int __builtin_isinf_sign (...)
!      Similar to â€˜isinfâ€™, except the return value is -1 for an argument
!      of â€˜-Infâ€™ and 1 for an argument of â€˜+Infâ€™.  Note while the
       parameter list is an ellipsis, this function only accepts exactly
       one floating-point argument.  GCC treats this parameter as
       type-generic, which means it does not do default promotion from
       float to double.
  
   -- Built-in Function: double __builtin_nan (const char *STR)
!      This is an implementation of the ISO C99 function â€˜nanâ€™.
  
!      Since ISO C99 defines this function in terms of â€˜strtodâ€™, which we
       do not implement, a description of the parsing is in order.  The
!      string is parsed as by â€˜strtolâ€™; that is, the base is recognized by
!      leading â€˜0â€™ or â€˜0xâ€™ prefixes.  The number parsed is placed in the
       significand such that the least significant bit of the number is at
       the least significant bit of the significand.  The number is
       truncated to fit the significand field provided.  The significand
       is forced to be a quiet NaN.
  
       This function, if given a string literal all of which would have
!      been consumed by â€˜strtolâ€™, is evaluated early enough that it is
       considered a compile-time constant.
  
   -- Built-in Function: _Decimal32 __builtin_nand32 (const char *STR)
!      Similar to â€˜__builtin_nanâ€™, except the return type is â€˜_Decimal32â€™.
  
   -- Built-in Function: _Decimal64 __builtin_nand64 (const char *STR)
!      Similar to â€˜__builtin_nanâ€™, except the return type is â€˜_Decimal64â€™.
  
   -- Built-in Function: _Decimal128 __builtin_nand128 (const char *STR)
!      Similar to â€˜__builtin_nanâ€™, except the return type is
!      â€˜_Decimal128â€™.
  
   -- Built-in Function: float __builtin_nanf (const char *STR)
!      Similar to â€˜__builtin_nanâ€™, except the return type is â€˜floatâ€™.
  
   -- Built-in Function: long double __builtin_nanl (const char *STR)
!      Similar to â€˜__builtin_nanâ€™, except the return type is â€˜long
!      doubleâ€™.
  
   -- Built-in Function: _FloatN __builtin_nanfN (const char *STR)
!      Similar to â€˜__builtin_nanâ€™, except the return type is â€˜_FloatNâ€™.
  
   -- Built-in Function: _FloatNx __builtin_nanfNx (const char *STR)
!      Similar to â€˜__builtin_nanâ€™, except the return type is â€˜_FloatNxâ€™.
  
   -- Built-in Function: double __builtin_nans (const char *STR)
!      Similar to â€˜__builtin_nanâ€™, except the significand is forced to be
!      a signaling NaN.  The â€˜nansâ€™ function is proposed by WG14 N965.
  
   -- Built-in Function: _Decimal32 __builtin_nansd32 (const char *STR)
!      Similar to â€˜__builtin_nansâ€™, except the return type is
!      â€˜_Decimal32â€™.
  
   -- Built-in Function: _Decimal64 __builtin_nansd64 (const char *STR)
!      Similar to â€˜__builtin_nansâ€™, except the return type is
!      â€˜_Decimal64â€™.
  
   -- Built-in Function: _Decimal128 __builtin_nansd128 (const char *STR)
!      Similar to â€˜__builtin_nansâ€™, except the return type is
!      â€˜_Decimal128â€™.
  
   -- Built-in Function: float __builtin_nansf (const char *STR)
!      Similar to â€˜__builtin_nansâ€™, except the return type is â€˜floatâ€™.
  
   -- Built-in Function: long double __builtin_nansl (const char *STR)
!      Similar to â€˜__builtin_nansâ€™, except the return type is â€˜long
!      doubleâ€™.
  
   -- Built-in Function: _FloatN __builtin_nansfN (const char *STR)
!      Similar to â€˜__builtin_nansâ€™, except the return type is â€˜_FloatNâ€™.
  
   -- Built-in Function: _FloatNx __builtin_nansfNx (const char *STR)
!      Similar to â€˜__builtin_nansâ€™, except the return type is â€˜_FloatNxâ€™.
  
   -- Built-in Function: int __builtin_issignaling (...)
       Return non-zero if the argument is a signaling NaN and zero
*************** File: gcc.info,  Node: Floating-Point Fo
*** 51230,51247 ****
       function only accepts exactly one floating-point argument.  GCC
       treats this parameter as type-generic, which means it does not do
       default promotion from float to double.  This built-in function can
!      work even without the non-default '-fsignaling-nans' option,
       although if a signaling NaN is computed, stored or passed as
       argument to some function other than this built-in in the current
!      translation unit, it is safer to use '-fsignaling-nans'.  With
!      '-ffinite-math-only' option this built-in function will always
       return 0.
  
   -- Built-in Function: double __builtin_powi (double, int)
   -- Built-in Function: float __builtin_powif (float, int)
   -- Built-in Function: long double __builtin_powil (long double, int)
       Returns the first argument raised to the power of the second.
!      Unlike the 'pow' function no guarantees about precision and
       rounding are made.
  
  
--- 51238,51255 ----
       function only accepts exactly one floating-point argument.  GCC
       treats this parameter as type-generic, which means it does not do
       default promotion from float to double.  This built-in function can
!      work even without the non-default â€˜-fsignaling-nansâ€™ option,
       although if a signaling NaN is computed, stored or passed as
       argument to some function other than this built-in in the current
!      translation unit, it is safer to use â€˜-fsignaling-nansâ€™.  With
!      â€˜-ffinite-math-onlyâ€™ option this built-in function will always
       return 0.
  
   -- Built-in Function: double __builtin_powi (double, int)
   -- Built-in Function: float __builtin_powif (float, int)
   -- Built-in Function: long double __builtin_powil (long double, int)
       Returns the first argument raised to the power of the second.
!      Unlike the â€˜powâ€™ function no guarantees about precision and
       rounding are made.
  
  
*************** File: gcc.info,  Node: Bit Operation Bui
*** 51274,51331 ****
       Returns the parity of X, i.e. the number of 1-bits in X modulo 2.
  
   -- Built-in Function: int __builtin_ffsl (long)
!      Similar to '__builtin_ffs', except the argument type is 'long'.
  
   -- Built-in Function: int __builtin_clzl (unsigned long)
!      Similar to '__builtin_clz', except the argument type is 'unsigned
!      long'.
  
   -- Built-in Function: int __builtin_ctzl (unsigned long)
!      Similar to '__builtin_ctz', except the argument type is 'unsigned
!      long'.
  
   -- Built-in Function: int __builtin_clrsbl (long)
!      Similar to '__builtin_clrsb', except the argument type is 'long'.
  
   -- Built-in Function: int __builtin_popcountl (unsigned long)
!      Similar to '__builtin_popcount', except the argument type is
!      'unsigned long'.
  
   -- Built-in Function: int __builtin_parityl (unsigned long)
!      Similar to '__builtin_parity', except the argument type is
!      'unsigned long'.
  
   -- Built-in Function: int __builtin_ffsll (long long)
!      Similar to '__builtin_ffs', except the argument type is 'long
!      long'.
  
   -- Built-in Function: int __builtin_clzll (unsigned long long)
!      Similar to '__builtin_clz', except the argument type is 'unsigned
!      long long'.
  
   -- Built-in Function: int __builtin_ctzll (unsigned long long)
!      Similar to '__builtin_ctz', except the argument type is 'unsigned
!      long long'.
  
   -- Built-in Function: int __builtin_clrsbll (long long)
!      Similar to '__builtin_clrsb', except the argument type is 'long
!      long'.
  
   -- Built-in Function: int __builtin_popcountll (unsigned long long)
!      Similar to '__builtin_popcount', except the argument type is
!      'unsigned long long'.
  
   -- Built-in Function: int __builtin_parityll (unsigned long long)
!      Similar to '__builtin_parity', except the argument type is
!      'unsigned long long'.
  
   -- Built-in Function: int __builtin_ffsg (...)
!      Similar to '__builtin_ffs', except the argument is type-generic
       signed integer (standard, extended or bit-precise).  No integral
       argument promotions are performed on the argument.
  
   -- Built-in Function: int __builtin_clzg (...)
!      Similar to '__builtin_clz', except the argument is type-generic
       unsigned integer (standard, extended or bit-precise) and there is
       optional second argument with int type.  No integral argument
       promotions are performed on the first argument.  If two arguments
--- 51282,51339 ----
       Returns the parity of X, i.e. the number of 1-bits in X modulo 2.
  
   -- Built-in Function: int __builtin_ffsl (long)
!      Similar to â€˜__builtin_ffsâ€™, except the argument type is â€˜longâ€™.
  
   -- Built-in Function: int __builtin_clzl (unsigned long)
!      Similar to â€˜__builtin_clzâ€™, except the argument type is â€˜unsigned
!      longâ€™.
  
   -- Built-in Function: int __builtin_ctzl (unsigned long)
!      Similar to â€˜__builtin_ctzâ€™, except the argument type is â€˜unsigned
!      longâ€™.
  
   -- Built-in Function: int __builtin_clrsbl (long)
!      Similar to â€˜__builtin_clrsbâ€™, except the argument type is â€˜longâ€™.
  
   -- Built-in Function: int __builtin_popcountl (unsigned long)
!      Similar to â€˜__builtin_popcountâ€™, except the argument type is
!      â€˜unsigned longâ€™.
  
   -- Built-in Function: int __builtin_parityl (unsigned long)
!      Similar to â€˜__builtin_parityâ€™, except the argument type is
!      â€˜unsigned longâ€™.
  
   -- Built-in Function: int __builtin_ffsll (long long)
!      Similar to â€˜__builtin_ffsâ€™, except the argument type is â€˜long
!      longâ€™.
  
   -- Built-in Function: int __builtin_clzll (unsigned long long)
!      Similar to â€˜__builtin_clzâ€™, except the argument type is â€˜unsigned
!      long longâ€™.
  
   -- Built-in Function: int __builtin_ctzll (unsigned long long)
!      Similar to â€˜__builtin_ctzâ€™, except the argument type is â€˜unsigned
!      long longâ€™.
  
   -- Built-in Function: int __builtin_clrsbll (long long)
!      Similar to â€˜__builtin_clrsbâ€™, except the argument type is â€˜long
!      longâ€™.
  
   -- Built-in Function: int __builtin_popcountll (unsigned long long)
!      Similar to â€˜__builtin_popcountâ€™, except the argument type is
!      â€˜unsigned long longâ€™.
  
   -- Built-in Function: int __builtin_parityll (unsigned long long)
!      Similar to â€˜__builtin_parityâ€™, except the argument type is
!      â€˜unsigned long longâ€™.
  
   -- Built-in Function: int __builtin_ffsg (...)
!      Similar to â€˜__builtin_ffsâ€™, except the argument is type-generic
       signed integer (standard, extended or bit-precise).  No integral
       argument promotions are performed on the argument.
  
   -- Built-in Function: int __builtin_clzg (...)
!      Similar to â€˜__builtin_clzâ€™, except the argument is type-generic
       unsigned integer (standard, extended or bit-precise) and there is
       optional second argument with int type.  No integral argument
       promotions are performed on the first argument.  If two arguments
*************** File: gcc.info,  Node: Bit Operation Bui
*** 51334,51340 ****
       result is undefined.
  
   -- Built-in Function: int __builtin_ctzg (...)
!      Similar to '__builtin_ctz', except the argument is type-generic
       unsigned integer (standard, extended or bit-precise) and there is
       optional second argument with int type.  No integral argument
       promotions are performed on the first argument.  If two arguments
--- 51342,51348 ----
       result is undefined.
  
   -- Built-in Function: int __builtin_ctzg (...)
!      Similar to â€˜__builtin_ctzâ€™, except the argument is type-generic
       unsigned integer (standard, extended or bit-precise) and there is
       optional second argument with int type.  No integral argument
       promotions are performed on the first argument.  If two arguments
*************** File: gcc.info,  Node: Bit Operation Bui
*** 51343,51495 ****
       result is undefined.
  
   -- Built-in Function: int __builtin_clrsbg (...)
!      Similar to '__builtin_clrsb', except the argument is type-generic
       signed integer (standard, extended or bit-precise).  No integral
       argument promotions are performed on the argument.
  
   -- Built-in Function: int __builtin_popcountg (...)
!      Similar to '__builtin_popcount', except the argument is
       type-generic unsigned integer (standard, extended or bit-precise).
       No integral argument promotions are performed on the argument.
  
   -- Built-in Function: int __builtin_parityg (...)
!      Similar to '__builtin_parity', except the argument is type-generic
       unsigned integer (standard, extended or bit-precise).  No integral
       argument promotions are performed on the argument.
  
   -- Built-in Function: TYPE __builtin_stdc_bit_ceil (TYPE ARG)
!      The '__builtin_stdc_bit_ceil' function is available only in C. It
       is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
!      promotions are performed on the argument.  It is equivalent to 'ARG
       <= 1 ? (TYPE) 1 : (TYPE) 2 << (PREC - 1 - __builtin_clzg ((TYPE)
!      (ARG - 1)))' where PREC is bit width of TYPE, except that
       side-effects in ARG are evaluated just once.
  
   -- Built-in Function: TYPE __builtin_stdc_bit_floor (TYPE ARG)
!      The '__builtin_stdc_bit_floor' function is available only in C. It
       is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
!      promotions are performed on the argument.  It is equivalent to 'ARG
!      == 0 ? (TYPE) 0 : (TYPE) 1 << (PREC - 1 - __builtin_clzg (ARG))'
       where PREC is bit width of TYPE, except that side-effects in ARG
       are evaluated just once.
  
   -- Built-in Function: unsigned int __builtin_stdc_bit_width (TYPE ARG)
!      The '__builtin_stdc_bit_width' function is available only in C. It
       is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
       promotions are performed on the argument.  It is equivalent to
!      '(unsigned int) (PREC - __builtin_clzg (ARG, PREC))' where PREC is
       bit width of TYPE.
  
   -- Built-in Function: unsigned int __builtin_stdc_count_ones (TYPE ARG)
!      The '__builtin_stdc_count_ones' function is available only in C. It
       is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
       promotions are performed on the argument.  It is equivalent to
!      '(unsigned int) __builtin_popcountg (ARG)'
  
   -- Built-in Function: unsigned int __builtin_stdc_count_zeros (TYPE
            ARG)
!      The '__builtin_stdc_count_zeros' function is available only in C.
       It is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
       promotions are performed on the argument.  It is equivalent to
!      '(unsigned int) __builtin_popcountg ((TYPE) ~ARG)'
  
   -- Built-in Function: unsigned int __builtin_stdc_first_leading_one
            (TYPE ARG)
!      The '__builtin_stdc_first_leading_one' function is available only
       in C. It is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
       promotions are performed on the argument.  It is equivalent to
!      '__builtin_clzg (ARG, -1) + 1U'
  
   -- Built-in Function: unsigned int __builtin_stdc_first_leading_zero
            (TYPE ARG)
!      The '__builtin_stdc_first_leading_zero' function is available only
       in C. It is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
       promotions are performed on the argument.  It is equivalent to
!      '__builtin_clzg ((TYPE) ~ARG, -1) + 1U'
  
   -- Built-in Function: unsigned int __builtin_stdc_first_trailing_one
            (TYPE ARG)
!      The '__builtin_stdc_first_trailing_one' function is available only
       in C. It is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
       promotions are performed on the argument.  It is equivalent to
!      '__builtin_ctzg (ARG, -1) + 1U'
  
   -- Built-in Function: unsigned int __builtin_stdc_first_trailing_zero
            (TYPE ARG)
!      The '__builtin_stdc_first_trailing_zero' function is available only
       in C. It is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
       promotions are performed on the argument.  It is equivalent to
!      '__builtin_ctzg ((TYPE) ~ARG, -1) + 1U'
  
   -- Built-in Function: unsigned int __builtin_stdc_has_single_bit (TYPE
            ARG)
!      The '__builtin_stdc_has_single_bit' function is available only in
!      C. It is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
       promotions are performed on the argument.  It is equivalent to
!      '(_Bool) (__builtin_popcountg (ARG) == 1)'
  
   -- Built-in Function: unsigned int __builtin_stdc_leading_ones (TYPE
            ARG)
!      The '__builtin_stdc_leading_ones' function is available only in C.
       It is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
       promotions are performed on the argument.  It is equivalent to
!      '(unsigned int) __builtin_clzg ((TYPE) ~ARG, PREC)'
  
   -- Built-in Function: unsigned int __builtin_stdc_leading_zeros (TYPE
            ARG)
!      The '__builtin_stdc_leading_zeros' function is available only in C.
       It is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
       promotions are performed on the argument.  It is equivalent to
!      '(unsigned int) __builtin_clzg (ARG, PREC)'
  
   -- Built-in Function: unsigned int __builtin_stdc_trailing_ones (TYPE
            ARG)
!      The '__builtin_stdc_trailing_ones' function is available only in C.
       It is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
       promotions are performed on the argument.  It is equivalent to
!      '(unsigned int) __builtin_ctzg ((TYPE) ~ARG, PREC)'
  
   -- Built-in Function: unsigned int __builtin_stdc_trailing_zeros (TYPE
            ARG)
!      The '__builtin_stdc_trailing_zeros' function is available only in
!      C. It is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
       promotions are performed on the argument.  It is equivalent to
!      '(unsigned int) __builtin_ctzg (ARG, PREC)'
  
   -- Built-in Function: TYPE1 __builtin_stdc_rotate_left (TYPE1 ARG1,
            TYPE2 ARG2)
!      The '__builtin_stdc_rotate_left' function is available only in C.
       It is type-generic, the first argument can be any unsigned integer
       (standard, extended or bit-precise) and second argument any signed
!      or unsigned integer or 'char'.  No integral argument promotions are
!      performed on the arguments.  It is equivalent to '(TYPE1) ((ARG1 <<
!      (ARG2 % PREC)) | (ARG1 >> ((-(unsigned TYPE2) ARG2) % PREC)))'
       where PREC is bit width of TYPE1, except that side-effects in ARG1
       and ARG2 are evaluated just once.  The behavior is undefined if
       ARG2 is negative.
  
   -- Built-in Function: TYPE1 __builtin_stdc_rotate_right (TYPE1 ARG1,
            TYPE2 ARG2)
!      The '__builtin_stdc_rotate_right' function is available only in C.
       It is type-generic, the first argument can be any unsigned integer
       (standard, extended or bit-precise) and second argument any signed
!      or unsigned integer or 'char'.  No integral argument promotions are
!      performed on the arguments.  It is equivalent to '(TYPE1) ((ARG1 >>
!      (ARG2 % PREC)) | (ARG1 << ((-(unsigned TYPE2) ARG2) % PREC)))'
       where PREC is bit width of TYPE1, except that side-effects in ARG1
       and ARG2 are evaluated just once.  The behavior is undefined if
       ARG2 is negative.
--- 51351,51503 ----
       result is undefined.
  
   -- Built-in Function: int __builtin_clrsbg (...)
!      Similar to â€˜__builtin_clrsbâ€™, except the argument is type-generic
       signed integer (standard, extended or bit-precise).  No integral
       argument promotions are performed on the argument.
  
   -- Built-in Function: int __builtin_popcountg (...)
!      Similar to â€˜__builtin_popcountâ€™, except the argument is
       type-generic unsigned integer (standard, extended or bit-precise).
       No integral argument promotions are performed on the argument.
  
   -- Built-in Function: int __builtin_parityg (...)
!      Similar to â€˜__builtin_parityâ€™, except the argument is type-generic
       unsigned integer (standard, extended or bit-precise).  No integral
       argument promotions are performed on the argument.
  
   -- Built-in Function: TYPE __builtin_stdc_bit_ceil (TYPE ARG)
!      The â€˜__builtin_stdc_bit_ceilâ€™ function is available only in C. It
       is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
!      promotions are performed on the argument.  It is equivalent to â€˜ARG
       <= 1 ? (TYPE) 1 : (TYPE) 2 << (PREC - 1 - __builtin_clzg ((TYPE)
!      (ARG - 1)))â€™ where PREC is bit width of TYPE, except that
       side-effects in ARG are evaluated just once.
  
   -- Built-in Function: TYPE __builtin_stdc_bit_floor (TYPE ARG)
!      The â€˜__builtin_stdc_bit_floorâ€™ function is available only in C. It
       is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
!      promotions are performed on the argument.  It is equivalent to â€˜ARG
!      == 0 ? (TYPE) 0 : (TYPE) 1 << (PREC - 1 - __builtin_clzg (ARG))â€™
       where PREC is bit width of TYPE, except that side-effects in ARG
       are evaluated just once.
  
   -- Built-in Function: unsigned int __builtin_stdc_bit_width (TYPE ARG)
!      The â€˜__builtin_stdc_bit_widthâ€™ function is available only in C. It
       is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
       promotions are performed on the argument.  It is equivalent to
!      â€˜(unsigned int) (PREC - __builtin_clzg (ARG, PREC))â€™ where PREC is
       bit width of TYPE.
  
   -- Built-in Function: unsigned int __builtin_stdc_count_ones (TYPE ARG)
!      The â€˜__builtin_stdc_count_onesâ€™ function is available only in C. It
       is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
       promotions are performed on the argument.  It is equivalent to
!      â€˜(unsigned int) __builtin_popcountg (ARG)â€™
  
   -- Built-in Function: unsigned int __builtin_stdc_count_zeros (TYPE
            ARG)
!      The â€˜__builtin_stdc_count_zerosâ€™ function is available only in C.
       It is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
       promotions are performed on the argument.  It is equivalent to
!      â€˜(unsigned int) __builtin_popcountg ((TYPE) ~ARG)â€™
  
   -- Built-in Function: unsigned int __builtin_stdc_first_leading_one
            (TYPE ARG)
!      The â€˜__builtin_stdc_first_leading_oneâ€™ function is available only
       in C. It is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
       promotions are performed on the argument.  It is equivalent to
!      â€˜__builtin_clzg (ARG, -1) + 1Uâ€™
  
   -- Built-in Function: unsigned int __builtin_stdc_first_leading_zero
            (TYPE ARG)
!      The â€˜__builtin_stdc_first_leading_zeroâ€™ function is available only
       in C. It is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
       promotions are performed on the argument.  It is equivalent to
!      â€˜__builtin_clzg ((TYPE) ~ARG, -1) + 1Uâ€™
  
   -- Built-in Function: unsigned int __builtin_stdc_first_trailing_one
            (TYPE ARG)
!      The â€˜__builtin_stdc_first_trailing_oneâ€™ function is available only
       in C. It is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
       promotions are performed on the argument.  It is equivalent to
!      â€˜__builtin_ctzg (ARG, -1) + 1Uâ€™
  
   -- Built-in Function: unsigned int __builtin_stdc_first_trailing_zero
            (TYPE ARG)
!      The â€˜__builtin_stdc_first_trailing_zeroâ€™ function is available only
       in C. It is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
       promotions are performed on the argument.  It is equivalent to
!      â€˜__builtin_ctzg ((TYPE) ~ARG, -1) + 1Uâ€™
  
   -- Built-in Function: unsigned int __builtin_stdc_has_single_bit (TYPE
            ARG)
!      The â€˜__builtin_stdc_has_single_bitâ€™ function is available only in
!      C.  It is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
       promotions are performed on the argument.  It is equivalent to
!      â€˜(_Bool) (__builtin_popcountg (ARG) == 1)â€™
  
   -- Built-in Function: unsigned int __builtin_stdc_leading_ones (TYPE
            ARG)
!      The â€˜__builtin_stdc_leading_onesâ€™ function is available only in C.
       It is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
       promotions are performed on the argument.  It is equivalent to
!      â€˜(unsigned int) __builtin_clzg ((TYPE) ~ARG, PREC)â€™
  
   -- Built-in Function: unsigned int __builtin_stdc_leading_zeros (TYPE
            ARG)
!      The â€˜__builtin_stdc_leading_zerosâ€™ function is available only in C.
       It is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
       promotions are performed on the argument.  It is equivalent to
!      â€˜(unsigned int) __builtin_clzg (ARG, PREC)â€™
  
   -- Built-in Function: unsigned int __builtin_stdc_trailing_ones (TYPE
            ARG)
!      The â€˜__builtin_stdc_trailing_onesâ€™ function is available only in C.
       It is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
       promotions are performed on the argument.  It is equivalent to
!      â€˜(unsigned int) __builtin_ctzg ((TYPE) ~ARG, PREC)â€™
  
   -- Built-in Function: unsigned int __builtin_stdc_trailing_zeros (TYPE
            ARG)
!      The â€˜__builtin_stdc_trailing_zerosâ€™ function is available only in
!      C.  It is type-generic, the argument can be any unsigned integer
       (standard, extended or bit-precise).  No integral argument
       promotions are performed on the argument.  It is equivalent to
!      â€˜(unsigned int) __builtin_ctzg (ARG, PREC)â€™
  
   -- Built-in Function: TYPE1 __builtin_stdc_rotate_left (TYPE1 ARG1,
            TYPE2 ARG2)
!      The â€˜__builtin_stdc_rotate_leftâ€™ function is available only in C.
       It is type-generic, the first argument can be any unsigned integer
       (standard, extended or bit-precise) and second argument any signed
!      or unsigned integer or â€˜charâ€™.  No integral argument promotions are
!      performed on the arguments.  It is equivalent to â€˜(TYPE1) ((ARG1 <<
!      (ARG2 % PREC)) | (ARG1 >> ((-(unsigned TYPE2) ARG2) % PREC)))â€™
       where PREC is bit width of TYPE1, except that side-effects in ARG1
       and ARG2 are evaluated just once.  The behavior is undefined if
       ARG2 is negative.
  
   -- Built-in Function: TYPE1 __builtin_stdc_rotate_right (TYPE1 ARG1,
            TYPE2 ARG2)
!      The â€˜__builtin_stdc_rotate_rightâ€™ function is available only in C.
       It is type-generic, the first argument can be any unsigned integer
       (standard, extended or bit-precise) and second argument any signed
!      or unsigned integer or â€˜charâ€™.  No integral argument promotions are
!      performed on the arguments.  It is equivalent to â€˜(TYPE1) ((ARG1 >>
!      (ARG2 % PREC)) | (ARG1 << ((-(unsigned TYPE2) ARG2) % PREC)))â€™
       where PREC is bit width of TYPE1, except that side-effects in ARG1
       and ARG2 are evaluated just once.  The behavior is undefined if
       ARG2 is negative.
*************** File: gcc.info,  Node: Byte-Swapping Bui
*** 51502,51519 ****
  
   -- Built-in Function: uint16_t __builtin_bswap16 (uint16_t X)
       Returns X with the order of the bytes reversed; for example,
!      '0xabcd' becomes '0xcdab'.  Byte here always means exactly 8 bits.
  
   -- Built-in Function: uint32_t __builtin_bswap32 (uint32_t X)
!      Similar to '__builtin_bswap16', except the argument and return
       types are 32-bit.
  
   -- Built-in Function: uint64_t __builtin_bswap64 (uint64_t X)
!      Similar to '__builtin_bswap32', except the argument and return
       types are 64-bit.
  
   -- Built-in Function: uint128_t __builtin_bswap128 (uint128_t X)
!      Similar to '__builtin_bswap64', except the argument and return
       types are 128-bit.  Only supported on targets when 128-bit types
       are supported.
  
--- 51510,51527 ----
  
   -- Built-in Function: uint16_t __builtin_bswap16 (uint16_t X)
       Returns X with the order of the bytes reversed; for example,
!      â€˜0xabcdâ€™ becomes â€˜0xcdabâ€™.  Byte here always means exactly 8 bits.
  
   -- Built-in Function: uint32_t __builtin_bswap32 (uint32_t X)
!      Similar to â€˜__builtin_bswap16â€™, except the argument and return
       types are 32-bit.
  
   -- Built-in Function: uint64_t __builtin_bswap64 (uint64_t X)
!      Similar to â€˜__builtin_bswap32â€™, except the argument and return
       types are 64-bit.
  
   -- Built-in Function: uint128_t __builtin_bswap128 (uint128_t X)
!      Similar to â€˜__builtin_bswap64â€™, except the argument and return
       types are 128-bit.  Only supported on targets when 128-bit types
       are supported.
  
*************** File: gcc.info,  Node: CRC Builtins,  Ne
*** 51534,51582 ****
  
   -- Built-in Function: uint16_t __builtin_rev_crc16_data16 (uint16_t
            CRC, uint16_t DATA, uint16_t POLY)
!      Similar to '__builtin_rev_crc8_data8', except the argument and
       return types are 16-bit.
  
   -- Built-in Function: uint16_t __builtin_rev_crc16_data8 (uint16_t CRC,
            uint8_t DATA, uint16_t POLY)
!      Similar to '__builtin_rev_crc16_data16', except the DATA argument
       type is 8-bit.
  
   -- Built-in Function: uint32_t __builtin_rev_crc32_data32 (uint32_t
            CRC, uint32_t DATA, uint32_t POLY)
!      Similar to '__builtin_rev_crc8_data8', except the argument and
       return types are 32-bit and for the CRC calculation may be also
       used crc* machine instruction depending on the target and the
       polynomial.
  
   -- Built-in Function: uint32_t __builtin_rev_crc32_data8 (uint32_t CRC,
            uint8_t DATA, uint32_t POLY)
!      Similar to '__builtin_rev_crc32_data32', except the DATA argument
       type is 8-bit.
  
   -- Built-in Function: uint32_t __builtin_rev_crc32_data16 (uint32_t
            CRC, uint16_t DATA, uint32_t POLY)
!      Similar to '__builtin_rev_crc32_data32', except the DATA argument
       type is 16-bit.
  
   -- Built-in Function: uint64_t __builtin_rev_crc64_data64 (uint64_t
            CRC, uint64_t DATA, uint64_t POLY)
!      Similar to '__builtin_rev_crc8_data8', except the argument and
       return types are 64-bit.
  
   -- Built-in Function: uint64_t __builtin_rev_crc64_data8 (uint64_t CRC,
            uint8_t DATA, uint64_t POLY)
!      Similar to '__builtin_rev_crc64_data64', except the DATA argument
       type is 8-bit.
  
   -- Built-in Function: uint64_t __builtin_rev_crc64_data16 (uint64_t
            CRC, uint16_t DATA, uint64_t POLY)
!      Similar to '__builtin_rev_crc64_data64', except the DATA argument
       type is 16-bit.
  
   -- Built-in Function: uint64_t __builtin_rev_crc64_data32 (uint64_t
            CRC, uint32_t DATA, uint64_t POLY)
!      Similar to '__builtin_rev_crc64_data64', except the DATA argument
       type is 32-bit.
  
   -- Built-in Function: uint8_t __builtin_crc8_data8 (uint8_t CRC,
--- 51542,51590 ----
  
   -- Built-in Function: uint16_t __builtin_rev_crc16_data16 (uint16_t
            CRC, uint16_t DATA, uint16_t POLY)
!      Similar to â€˜__builtin_rev_crc8_data8â€™, except the argument and
       return types are 16-bit.
  
   -- Built-in Function: uint16_t __builtin_rev_crc16_data8 (uint16_t CRC,
            uint8_t DATA, uint16_t POLY)
!      Similar to â€˜__builtin_rev_crc16_data16â€™, except the DATA argument
       type is 8-bit.
  
   -- Built-in Function: uint32_t __builtin_rev_crc32_data32 (uint32_t
            CRC, uint32_t DATA, uint32_t POLY)
!      Similar to â€˜__builtin_rev_crc8_data8â€™, except the argument and
       return types are 32-bit and for the CRC calculation may be also
       used crc* machine instruction depending on the target and the
       polynomial.
  
   -- Built-in Function: uint32_t __builtin_rev_crc32_data8 (uint32_t CRC,
            uint8_t DATA, uint32_t POLY)
!      Similar to â€˜__builtin_rev_crc32_data32â€™, except the DATA argument
       type is 8-bit.
  
   -- Built-in Function: uint32_t __builtin_rev_crc32_data16 (uint32_t
            CRC, uint16_t DATA, uint32_t POLY)
!      Similar to â€˜__builtin_rev_crc32_data32â€™, except the DATA argument
       type is 16-bit.
  
   -- Built-in Function: uint64_t __builtin_rev_crc64_data64 (uint64_t
            CRC, uint64_t DATA, uint64_t POLY)
!      Similar to â€˜__builtin_rev_crc8_data8â€™, except the argument and
       return types are 64-bit.
  
   -- Built-in Function: uint64_t __builtin_rev_crc64_data8 (uint64_t CRC,
            uint8_t DATA, uint64_t POLY)
!      Similar to â€˜__builtin_rev_crc64_data64â€™, except the DATA argument
       type is 8-bit.
  
   -- Built-in Function: uint64_t __builtin_rev_crc64_data16 (uint64_t
            CRC, uint16_t DATA, uint64_t POLY)
!      Similar to â€˜__builtin_rev_crc64_data64â€™, except the DATA argument
       type is 16-bit.
  
   -- Built-in Function: uint64_t __builtin_rev_crc64_data32 (uint64_t
            CRC, uint32_t DATA, uint64_t POLY)
!      Similar to â€˜__builtin_rev_crc64_data64â€™, except the DATA argument
       type is 32-bit.
  
   -- Built-in Function: uint8_t __builtin_crc8_data8 (uint8_t CRC,
*************** File: gcc.info,  Node: CRC Builtins,  Ne
*** 51590,51636 ****
  
   -- Built-in Function: uint16_t __builtin_crc16_data16 (uint16_t CRC,
            uint16_t DATA, uint16_t POLY)
!      Similar to '__builtin_crc8_data8', except the argument and return
       types are 16-bit.
  
   -- Built-in Function: uint16_t __builtin_crc16_data8 (uint16_t CRC,
            uint8_t DATA, uint16_t POLY)
!      Similar to '__builtin_crc16_data16', except the DATA argument type
       is 8-bit.
  
   -- Built-in Function: uint32_t __builtin_crc32_data32 (uint32_t CRC,
            uint32_t DATA, uint32_t POLY)
!      Similar to '__builtin_crc8_data8', except the argument and return
       types are 32-bit.
  
   -- Built-in Function: uint32_t __builtin_crc32_data8 (uint32_t CRC,
            uint8_t DATA, uint32_t POLY)
!      Similar to '__builtin_crc32_data32', except the DATA argument type
       is 8-bit.
  
   -- Built-in Function: uint32_t __builtin_crc32_data16 (uint32_t CRC,
            uint16_t DATA, uint32_t POLY)
!      Similar to '__builtin_crc32_data32', except the DATA argument type
       is 16-bit.
  
   -- Built-in Function: uint64_t __builtin_crc64_data64 (uint64_t CRC,
            uint64_t DATA, uint64_t POLY)
!      Similar to '__builtin_crc8_data8', except the argument and return
       types are 64-bit.
  
   -- Built-in Function: uint64_t __builtin_crc64_data8 (uint64_t CRC,
            uint8_t DATA, uint64_t POLY)
!      Similar to '__builtin_crc64_data64', except the DATA argument type
       is 8-bit.
  
   -- Built-in Function: uint64_t __builtin_crc64_data16 (uint64_t CRC,
            uint16_t DATA, uint64_t POLY)
!      Similar to '__builtin_crc64_data64', except the DATA argument type
       is 16-bit.
  
   -- Built-in Function: uint64_t __builtin_crc64_data32 (uint64_t CRC,
            uint32_t DATA, uint64_t POLY)
!      Similar to '__builtin_crc64_data64', except the DATA argument type
       is 32-bit.
  
  
--- 51598,51644 ----
  
   -- Built-in Function: uint16_t __builtin_crc16_data16 (uint16_t CRC,
            uint16_t DATA, uint16_t POLY)
!      Similar to â€˜__builtin_crc8_data8â€™, except the argument and return
       types are 16-bit.
  
   -- Built-in Function: uint16_t __builtin_crc16_data8 (uint16_t CRC,
            uint8_t DATA, uint16_t POLY)
!      Similar to â€˜__builtin_crc16_data16â€™, except the DATA argument type
       is 8-bit.
  
   -- Built-in Function: uint32_t __builtin_crc32_data32 (uint32_t CRC,
            uint32_t DATA, uint32_t POLY)
!      Similar to â€˜__builtin_crc8_data8â€™, except the argument and return
       types are 32-bit.
  
   -- Built-in Function: uint32_t __builtin_crc32_data8 (uint32_t CRC,
            uint8_t DATA, uint32_t POLY)
!      Similar to â€˜__builtin_crc32_data32â€™, except the DATA argument type
       is 8-bit.
  
   -- Built-in Function: uint32_t __builtin_crc32_data16 (uint32_t CRC,
            uint16_t DATA, uint32_t POLY)
!      Similar to â€˜__builtin_crc32_data32â€™, except the DATA argument type
       is 16-bit.
  
   -- Built-in Function: uint64_t __builtin_crc64_data64 (uint64_t CRC,
            uint64_t DATA, uint64_t POLY)
!      Similar to â€˜__builtin_crc8_data8â€™, except the argument and return
       types are 64-bit.
  
   -- Built-in Function: uint64_t __builtin_crc64_data8 (uint64_t CRC,
            uint8_t DATA, uint64_t POLY)
!      Similar to â€˜__builtin_crc64_data64â€™, except the DATA argument type
       is 8-bit.
  
   -- Built-in Function: uint64_t __builtin_crc64_data16 (uint64_t CRC,
            uint16_t DATA, uint64_t POLY)
!      Similar to â€˜__builtin_crc64_data64â€™, except the DATA argument type
       is 16-bit.
  
   -- Built-in Function: uint64_t __builtin_crc64_data32 (uint64_t CRC,
            uint32_t DATA, uint64_t POLY)
!      Similar to â€˜__builtin_crc64_data64â€™, except the DATA argument type
       is 32-bit.
  
  
*************** operations together with checking whethe
*** 51663,51669 ****
       promoted operands.  The result is then cast to the type the third
       pointer argument points to and stored there.  If the stored result
       is equal to the infinite precision result, the built-in functions
!      return 'false', otherwise they return 'true'.  As the addition is
       performed in infinite signed precision, these built-in functions
       have fully defined behavior for all argument values.
  
--- 51671,51677 ----
       promoted operands.  The result is then cast to the type the third
       pointer argument points to and stored there.  If the stored result
       is equal to the infinite precision result, the built-in functions
!      return â€˜falseâ€™, otherwise they return â€˜trueâ€™.  As the addition is
       performed in infinite signed precision, these built-in functions
       have fully defined behavior for all argument values.
  
*************** operation would overflow.
*** 51726,51733 ****
   -- Built-in Function: bool __builtin_mul_overflow_p (TYPE1 A, TYPE2 B,
            TYPE3 C)
  
!      These built-in functions are similar to '__builtin_add_overflow',
!      '__builtin_sub_overflow', or '__builtin_mul_overflow', except that
       they don't store the result of the arithmetic operation anywhere
       and the last argument is not a pointer, but some expression with
       integral type other than enumerated or boolean type.
--- 51734,51741 ----
   -- Built-in Function: bool __builtin_mul_overflow_p (TYPE1 A, TYPE2 B,
            TYPE3 C)
  
!      These built-in functions are similar to â€˜__builtin_add_overflowâ€™,
!      â€˜__builtin_sub_overflowâ€™, or â€˜__builtin_mul_overflowâ€™, except that
       they don't store the result of the arithmetic operation anywhere
       and the last argument is not a pointer, but some expression with
       integral type other than enumerated or boolean type.
*************** operation would overflow.
*** 51736,51743 ****
       precision signed type and perform addition on those promoted
       operands.  The result is then cast to the type of the third
       argument.  If the cast result is equal to the infinite precision
!      result, the built-in functions return 'false', otherwise they
!      return 'true'.  The value of the third argument is ignored, just
       the side effects in the third argument are evaluated, and no
       integral argument promotions are performed on the last argument.
       If the third argument is a bit-field, the type used for the result
--- 51744,51751 ----
       precision signed type and perform addition on those promoted
       operands.  The result is then cast to the type of the third
       argument.  If the cast result is equal to the infinite precision
!      result, the built-in functions return â€˜falseâ€™, otherwise they
!      return â€˜trueâ€™.  The value of the third argument is ignored, just
       the side effects in the third argument are evaluated, and no
       integral argument promotions are performed on the last argument.
       If the third argument is a bit-field, the type used for the result
*************** operation would overflow.
*** 51747,51753 ****
       For example, the following macro can be used to portably check, at
       compile-time, whether or not adding two constant integers will
       overflow, and perform the addition only when it is known to be safe
!      and not to trigger a '-Woverflow' warning.
  
            #define INT_ADD_OVERFLOW_P(a, b) \
               __builtin_add_overflow_p (a, b, (__typeof__ ((a) + (b))) 0)
--- 51755,51761 ----
       For example, the following macro can be used to portably check, at
       compile-time, whether or not adding two constant integers will
       overflow, and perform the addition only when it is known to be safe
!      and not to trigger a â€˜-Woverflowâ€™ warning.
  
            #define INT_ADD_OVERFLOW_P(a, b) \
               __builtin_add_overflow_p (a, b, (__typeof__ ((a) + (b))) 0)
*************** File: gcc.info,  Node: Stack Allocation,
*** 51817,51836 ****
  =================================
  
   -- Built-in Function: void * __builtin_alloca (size_t SIZE)
!      The '__builtin_alloca' function must be called at block scope.  The
       function allocates an object SIZE bytes large on the stack of the
       calling function.  The object is aligned on the default stack
       alignment boundary for the target determined by the
!      '__BIGGEST_ALIGNMENT__' macro.  The '__builtin_alloca' function
       returns a pointer to the first byte of the allocated object.  The
       lifetime of the allocated object ends just before the calling
       function returns to its caller.  This is so even when
!      '__builtin_alloca' is called within a nested block.
  
!      For example, the following function allocates eight objects of 'n'
       bytes each on the stack, storing a pointer to each in consecutive
!      elements of the array 'a'.  It then passes the array to function
!      'g' which can safely use the storage pointed to by each of the
       array elements.
  
            void f (unsigned n)
--- 51825,51844 ----
  =================================
  
   -- Built-in Function: void * __builtin_alloca (size_t SIZE)
!      The â€˜__builtin_allocaâ€™ function must be called at block scope.  The
       function allocates an object SIZE bytes large on the stack of the
       calling function.  The object is aligned on the default stack
       alignment boundary for the target determined by the
!      â€˜__BIGGEST_ALIGNMENT__â€™ macro.  The â€˜__builtin_allocaâ€™ function
       returns a pointer to the first byte of the allocated object.  The
       lifetime of the allocated object ends just before the calling
       function returns to its caller.  This is so even when
!      â€˜__builtin_allocaâ€™ is called within a nested block.
  
!      For example, the following function allocates eight objects of â€˜nâ€™
       bytes each on the stack, storing a pointer to each in consecutive
!      elements of the array â€˜aâ€™.  It then passes the array to function
!      â€˜gâ€™ which can safely use the storage pointed to by each of the
       array elements.
  
            void f (unsigned n)
*************** File: gcc.info,  Node: Stack Allocation,
*** 51842,51851 ****
              g (a, n);   // safe
            }
  
!      Since the '__builtin_alloca' function doesn't validate its argument
       it is the responsibility of its caller to make sure the argument
       doesn't cause it to exceed the stack size limit.  The
!      '__builtin_alloca' function is provided to make it possible to
       allocate on the stack arrays of bytes with an upper bound that may
       be computed at run time.  Since C99 Variable Length Arrays offer
       similar functionality under a portable, more convenient, and safer
--- 51850,51859 ----
              g (a, n);   // safe
            }
  
!      Since the â€˜__builtin_allocaâ€™ function doesn't validate its argument
       it is the responsibility of its caller to make sure the argument
       doesn't cause it to exceed the stack size limit.  The
!      â€˜__builtin_allocaâ€™ function is provided to make it possible to
       allocate on the stack arrays of bytes with an upper bound that may
       be computed at run time.  Since C99 Variable Length Arrays offer
       similar functionality under a portable, more convenient, and safer
*************** File: gcc.info,  Node: Stack Allocation,
*** 51855,51868 ****
  
   -- Built-in Function: void * __builtin_alloca_with_align (size_t SIZE,
            size_t ALIGNMENT)
!      The '__builtin_alloca_with_align' function must be called at block
       scope.  The function allocates an object SIZE bytes large on the
       stack of the calling function.  The allocated object is aligned on
       the boundary specified by the argument ALIGNMENT whose unit is
       given in bits (not bytes).  The SIZE argument must be positive and
       not exceed the stack size limit.  The ALIGNMENT argument must be a
       constant integer expression that evaluates to a power of 2 greater
!      than or equal to 'CHAR_BIT' and less than some unspecified maximum.
       Invocations with other values are rejected with an error indicating
       the valid bounds.  The function returns a pointer to the first byte
       of the allocated object.  The lifetime of the allocated object ends
--- 51863,51876 ----
  
   -- Built-in Function: void * __builtin_alloca_with_align (size_t SIZE,
            size_t ALIGNMENT)
!      The â€˜__builtin_alloca_with_alignâ€™ function must be called at block
       scope.  The function allocates an object SIZE bytes large on the
       stack of the calling function.  The allocated object is aligned on
       the boundary specified by the argument ALIGNMENT whose unit is
       given in bits (not bytes).  The SIZE argument must be positive and
       not exceed the stack size limit.  The ALIGNMENT argument must be a
       constant integer expression that evaluates to a power of 2 greater
!      than or equal to â€˜CHAR_BITâ€™ and less than some unspecified maximum.
       Invocations with other values are rejected with an error indicating
       the valid bounds.  The function returns a pointer to the first byte
       of the allocated object.  The lifetime of the allocated object ends
*************** File: gcc.info,  Node: Stack Allocation,
*** 51871,51880 ****
       function returns to its caller, but may be released at the end of
       the block in which the function was called.
  
!      For example, in the following function the call to 'g' is unsafe
!      because when 'overalign' is non-zero, the space allocated by
!      '__builtin_alloca_with_align' may have been released at the end of
!      the 'if' statement in which it was called.
  
            void f (unsigned n, bool overalign)
            {
--- 51879,51888 ----
       function returns to its caller, but may be released at the end of
       the block in which the function was called.
  
!      For example, in the following function the call to â€˜gâ€™ is unsafe
!      because when â€˜overalignâ€™ is non-zero, the space allocated by
!      â€˜__builtin_alloca_with_alignâ€™ may have been released at the end of
!      the â€˜ifâ€™ statement in which it was called.
  
            void f (unsigned n, bool overalign)
            {
*************** File: gcc.info,  Node: Stack Allocation,
*** 51887,51896 ****
              g (p, n);   // unsafe
            }
  
!      Since the '__builtin_alloca_with_align' function doesn't validate
       its SIZE argument it is the responsibility of its caller to make
       sure the argument doesn't cause it to exceed the stack size limit.
!      The '__builtin_alloca_with_align' function is provided to make it
       possible to allocate on the stack overaligned arrays of bytes with
       an upper bound that may be computed at run time.  Since C99
       Variable Length Arrays offer the same functionality under a
--- 51895,51904 ----
              g (p, n);   // unsafe
            }
  
!      Since the â€˜__builtin_alloca_with_alignâ€™ function doesn't validate
       its SIZE argument it is the responsibility of its caller to make
       sure the argument doesn't cause it to exceed the stack size limit.
!      The â€˜__builtin_alloca_with_alignâ€™ function is provided to make it
       possible to allocate on the stack overaligned arrays of bytes with
       an upper bound that may be computed at run time.  Since C99
       Variable Length Arrays offer the same functionality under a
*************** File: gcc.info,  Node: Stack Allocation,
*** 51900,51909 ****
  
   -- Built-in Function: void * __builtin_alloca_with_align_and_max
            (size_t SIZE, size_t ALIGNMENT, size_t MAX_SIZE)
!      Similar to '__builtin_alloca_with_align' but takes an extra
       argument specifying an upper bound for SIZE in case its value
!      cannot be computed at compile time, for use by '-fstack-usage',
!      '-Wstack-usage' and '-Walloca-larger-than'.  MAX_SIZE must be a
       constant integer expression, it has no effect on code generation
       and no attempt is made to check its compatibility with SIZE.
  
--- 51908,51917 ----
  
   -- Built-in Function: void * __builtin_alloca_with_align_and_max
            (size_t SIZE, size_t ALIGNMENT, size_t MAX_SIZE)
!      Similar to â€˜__builtin_alloca_with_alignâ€™ but takes an extra
       argument specifying an upper bound for SIZE in case its value
!      cannot be computed at compile time, for use by â€˜-fstack-usageâ€™,
!      â€˜-Wstack-usageâ€™ and â€˜-Walloca-larger-thanâ€™.  MAX_SIZE must be a
       constant integer expression, it has no effect on code generation
       and no attempt is made to check its compatibility with SIZE.
  
*************** File: gcc.info,  Node: Nonlocal Gotos,
*** 51913,51924 ****
  7.4 Nonlocal Gotos
  ==================
  
! GCC provides the built-in functions '__builtin_setjmp' and
! '__builtin_longjmp' which are similar to, but not interchangeable with,
! the C library functions 'setjmp' and 'longjmp'.  The built-in versions
  are used internally by GCC's libraries to implement exception handling
  on some targets.  You should use the standard C library functions
! declared in '<setjmp.h>' in user code instead of the builtins.
  
   The built-in versions of these functions use GCC's normal mechanisms to
  save and restore registers using the stack on function entry and exit.
--- 51921,51932 ----
  7.4 Nonlocal Gotos
  ==================
  
! GCC provides the built-in functions â€˜__builtin_setjmpâ€™ and
! â€˜__builtin_longjmpâ€™ which are similar to, but not interchangeable with,
! the C library functions â€˜setjmpâ€™ and â€˜longjmpâ€™.  The built-in versions
  are used internally by GCC's libraries to implement exception handling
  on some targets.  You should use the standard C library functions
! declared in â€˜<setjmp.h>â€™ in user code instead of the builtins.
  
   The built-in versions of these functions use GCC's normal mechanisms to
  save and restore registers using the stack on function entry and exit.
*************** values.
*** 51928,51934 ****
  
   An important caveat is that GCC arranges to save and restore only those
  registers known to the specific architecture variant being compiled for.
! This can make '__builtin_setjmp' and '__builtin_longjmp' more efficient
  than their library counterparts in some cases, but it can also cause
  incorrect and mysterious behavior when mixing with code that uses the
  full register set.
--- 51936,51942 ----
  
   An important caveat is that GCC arranges to save and restore only those
  registers known to the specific architecture variant being compiled for.
! This can make â€˜__builtin_setjmpâ€™ and â€˜__builtin_longjmpâ€™ more efficient
  than their library counterparts in some cases, but it can also cause
  incorrect and mysterious behavior when mixing with code that uses the
  full register set.
*************** functions as:
*** 51941,51960 ****
  
   -- Built-in Function: int __builtin_setjmp (intptr_t *BUF)
       This function saves the current stack context in BUF.
!      '__builtin_setjmp' returns 0 when returning directly, and 1 when
!      returning from '__builtin_longjmp' using the same BUF.
  
   -- Built-in Function: void __builtin_longjmp (intptr_t *BUF, int VAL)
       This function restores the stack context in BUF, saved by a
!      previous call to '__builtin_setjmp'.  After '__builtin_longjmp' is
       finished, the program resumes execution as if the matching
!      '__builtin_setjmp' returns the value VAL, which must be 1.
  
!      Because '__builtin_longjmp' depends on the function return
       mechanism to restore the stack context, it cannot be called from
!      the same function calling '__builtin_setjmp' to initialize BUF.  It
       can only be called from a function called (directly or indirectly)
!      from the function calling '__builtin_setjmp'.
  
  
  File: gcc.info,  Node: Constructing Calls,  Next: Return Address,  Prev: Nonlocal Gotos,  Up: Built-in Functions
--- 51949,51968 ----
  
   -- Built-in Function: int __builtin_setjmp (intptr_t *BUF)
       This function saves the current stack context in BUF.
!      â€˜__builtin_setjmpâ€™ returns 0 when returning directly, and 1 when
!      returning from â€˜__builtin_longjmpâ€™ using the same BUF.
  
   -- Built-in Function: void __builtin_longjmp (intptr_t *BUF, int VAL)
       This function restores the stack context in BUF, saved by a
!      previous call to â€˜__builtin_setjmpâ€™.  After â€˜__builtin_longjmpâ€™ is
       finished, the program resumes execution as if the matching
!      â€˜__builtin_setjmpâ€™ returns the value VAL, which must be 1.
  
!      Because â€˜__builtin_longjmpâ€™ depends on the function return
       mechanism to restore the stack context, it cannot be called from
!      the same function calling â€˜__builtin_setjmpâ€™ to initialize BUF.  It
       can only be called from a function called (directly or indirectly)
!      from the function calling â€˜__builtin_setjmpâ€™.
  
  
  File: gcc.info,  Node: Constructing Calls,  Next: Return Address,  Prev: Nonlocal Gotos,  Up: Built-in Functions
*************** acting as mere forwarders for their argu
*** 51991,51997 ****
       parameters described by ARGUMENTS and SIZE.
  
       The value of ARGUMENTS should be the value returned by
!      '__builtin_apply_args'.  The argument SIZE specifies the size of
       the stack argument data, in bytes.
  
       This function returns a pointer to data describing how to return
--- 51999,52005 ----
       parameters described by ARGUMENTS and SIZE.
  
       The value of ARGUMENTS should be the value returned by
!      â€˜__builtin_apply_argsâ€™.  The argument SIZE specifies the size of
       the stack argument data, in bytes.
  
       This function returns a pointer to data describing how to return
*************** acting as mere forwarders for their argu
*** 51999,52019 ****
       block of memory allocated on the stack.
  
       It is not always simple to compute the proper value for SIZE.  The
!      value is used by '__builtin_apply' to compute the amount of data
       that should be pushed on the stack and copied from the incoming
       argument area.
  
   -- Built-in Function: void __builtin_return (void *RESULT)
       This built-in function returns the value described by RESULT from
       the containing function.  You should specify, for RESULT, a value
!      returned by '__builtin_apply'.
  
   -- Built-in Function: __builtin_va_arg_pack ()
       This built-in function represents all anonymous arguments of an
       inline function.  It can be used only in inline functions that are
       always inlined, never compiled as a separate function, such as
!      those using '__attribute__ ((__always_inline__))' or '__attribute__
!      ((__gnu_inline__))' extern inline functions.  It must be only
       passed as last argument to some other function with variable
       arguments.  This is useful for writing small wrapper inlines for
       variable argument functions, when using preprocessor macros is
--- 52007,52027 ----
       block of memory allocated on the stack.
  
       It is not always simple to compute the proper value for SIZE.  The
!      value is used by â€˜__builtin_applyâ€™ to compute the amount of data
       that should be pushed on the stack and copied from the incoming
       argument area.
  
   -- Built-in Function: void __builtin_return (void *RESULT)
       This built-in function returns the value described by RESULT from
       the containing function.  You should specify, for RESULT, a value
!      returned by â€˜__builtin_applyâ€™.
  
   -- Built-in Function: __builtin_va_arg_pack ()
       This built-in function represents all anonymous arguments of an
       inline function.  It can be used only in inline functions that are
       always inlined, never compiled as a separate function, such as
!      those using â€˜__attribute__ ((__always_inline__))â€™ or â€˜__attribute__
!      ((__gnu_inline__))â€™ extern inline functions.  It must be only
       passed as last argument to some other function with variable
       arguments.  This is useful for writing small wrapper inlines for
       variable argument functions, when using preprocessor macros is
*************** acting as mere forwarders for their argu
*** 52035,52042 ****
       This built-in function returns the number of anonymous arguments of
       an inline function.  It can be used only in inline functions that
       are always inlined, never compiled as a separate function, such as
!      those using '__attribute__ ((__always_inline__))' or '__attribute__
!      ((__gnu_inline__))' extern inline functions.  For example following
       does link- or run-time checking of open arguments for optimized
       code:
            #ifdef __OPTIMIZE__
--- 52043,52050 ----
       This built-in function returns the number of anonymous arguments of
       an inline function.  It can be used only in inline functions that
       are always inlined, never compiled as a separate function, such as
!      those using â€˜__attribute__ ((__always_inline__))â€™ or â€˜__attribute__
!      ((__gnu_inline__))â€™ extern inline functions.  For example following
       does link- or run-time checking of open arguments for optimized
       code:
            #ifdef __OPTIMIZE__
*************** function.
*** 52087,52098 ****
            LEVEL)
       This function returns the return address of the current function,
       or of one of its callers.  The LEVEL argument is number of frames
!      to scan up the call stack.  A value of '0' yields the return
!      address of the current function, a value of '1' yields the return
       address of the caller of the current function, and so forth.  When
       inlining the expected behavior is that the function returns the
       address of the function that is returned to.  To work around this
!      behavior use the 'noinline' function attribute.
  
       The LEVEL argument must be a constant integer.
  
--- 52095,52106 ----
            LEVEL)
       This function returns the return address of the current function,
       or of one of its callers.  The LEVEL argument is number of frames
!      to scan up the call stack.  A value of â€˜0â€™ yields the return
!      address of the current function, a value of â€˜1â€™ yields the return
       address of the caller of the current function, and so forth.  When
       inlining the expected behavior is that the function returns the
       address of the function that is returned to.  To work around this
!      behavior use the â€˜noinlineâ€™ function attribute.
  
       The LEVEL argument must be a constant integer.
  
*************** function.
*** 52100,52131 ****
       address of any function other than the current one; in such cases,
       or when the top of the stack has been reached, this function
       returns an unspecified value.  In addition,
!      '__builtin_frame_address' may be used to determine if the top of
       the stack has been reached.
  
       Additional post-processing of the returned value may be needed, see
!      '__builtin_extract_return_addr'.
  
       The stored representation of the return address in memory may be
!      different from the address returned by '__builtin_return_address'.
       For example, on AArch64 the stored address may be mangled with
       return address signing whereas the address returned by
!      '__builtin_return_address' is not.
  
       Calling this function with a nonzero argument can have
       unpredictable effects, including crashing the calling program.  As
       a result, calls that are considered unsafe are diagnosed when the
!      '-Wframe-address' option is in effect.  Such calls should only be
       made in debugging situations.
  
!      On targets where code addresses are representable as 'void *',
            void *addr = __builtin_extract_return_addr (__builtin_return_address (0));
       gives the code address where the current function would return.
!      For example, such an address may be used with 'dladdr' or other
       interfaces that work with code addresses.
  
   -- Built-in Function: void * __builtin_extract_return_addr (void *ADDR)
!      The address as returned by '__builtin_return_address' may have to
       be fed through this function to get the actual encoded address.
       For example, on the 31-bit S/390 platform the highest bit has to be
       masked out, or on SPARC platforms an offset has to be added for the
--- 52108,52139 ----
       address of any function other than the current one; in such cases,
       or when the top of the stack has been reached, this function
       returns an unspecified value.  In addition,
!      â€˜__builtin_frame_addressâ€™ may be used to determine if the top of
       the stack has been reached.
  
       Additional post-processing of the returned value may be needed, see
!      â€˜__builtin_extract_return_addrâ€™.
  
       The stored representation of the return address in memory may be
!      different from the address returned by â€˜__builtin_return_addressâ€™.
       For example, on AArch64 the stored address may be mangled with
       return address signing whereas the address returned by
!      â€˜__builtin_return_addressâ€™ is not.
  
       Calling this function with a nonzero argument can have
       unpredictable effects, including crashing the calling program.  As
       a result, calls that are considered unsafe are diagnosed when the
!      â€˜-Wframe-addressâ€™ option is in effect.  Such calls should only be
       made in debugging situations.
  
!      On targets where code addresses are representable as â€˜void *â€™,
            void *addr = __builtin_extract_return_addr (__builtin_return_address (0));
       gives the code address where the current function would return.
!      For example, such an address may be used with â€˜dladdrâ€™ or other
       interfaces that work with code addresses.
  
   -- Built-in Function: void * __builtin_extract_return_addr (void *ADDR)
!      The address as returned by â€˜__builtin_return_addressâ€™ may have to
       be fed through this function to get the actual encoded address.
       For example, on the 31-bit S/390 platform the highest bit has to be
       masked out, or on SPARC platforms an offset has to be added for the
*************** function.
*** 52134,52148 ****
       If no fixup is needed, this function simply passes through ADDR.
  
   -- Built-in Function: void * __builtin_frob_return_addr (void *ADDR)
!      This function does the reverse of '__builtin_extract_return_addr'.
  
   -- Built-in Function: void * __builtin_frame_address (unsigned int
            LEVEL)
!      This function is similar to '__builtin_return_address', but it
       returns the address of the function frame rather than the return
!      address of the function.  Calling '__builtin_frame_address' with a
!      value of '0' yields the frame address of the current function, a
!      value of '1' yields the frame address of the caller of the current
       function, and so forth.
  
       The frame is the area on the stack that holds local variables and
--- 52142,52156 ----
       If no fixup is needed, this function simply passes through ADDR.
  
   -- Built-in Function: void * __builtin_frob_return_addr (void *ADDR)
!      This function does the reverse of â€˜__builtin_extract_return_addrâ€™.
  
   -- Built-in Function: void * __builtin_frame_address (unsigned int
            LEVEL)
!      This function is similar to â€˜__builtin_return_addressâ€™, but it
       returns the address of the function frame rather than the return
!      address of the function.  Calling â€˜__builtin_frame_addressâ€™ with a
!      value of â€˜0â€™ yields the frame address of the current function, a
!      value of â€˜1â€™ yields the frame address of the caller of the current
       function, and so forth.
  
       The frame is the area on the stack that holds local variables and
*************** function.
*** 52151,52174 ****
       exact definition depends upon the processor and the calling
       convention.  If the processor has a dedicated frame pointer
       register, and the function has a frame, then
!      '__builtin_frame_address' returns the value of the frame pointer
       register.
  
       On some machines it may be impossible to determine the frame
       address of any function other than the current one; in such cases,
       or when the top of the stack has been reached, this function
!      returns '0' if the first frame pointer is properly initialized by
       the startup code.
  
       Calling this function with a nonzero argument can have
       unpredictable effects, including crashing the calling program.  As
       a result, calls that are considered unsafe are diagnosed when the
!      '-Wframe-address' option is in effect.  Such calls should only be
       made in debugging situations.
  
   -- Built-in Function: void * __builtin_stack_address ()
       This function returns the stack pointer register, offset by
!      'STACK_ADDRESS_OFFSET' if that's defined.
  
       Conceptually, the returned address returned by this built-in
       function is the boundary between the stack area allocated for use
--- 52159,52182 ----
       exact definition depends upon the processor and the calling
       convention.  If the processor has a dedicated frame pointer
       register, and the function has a frame, then
!      â€˜__builtin_frame_addressâ€™ returns the value of the frame pointer
       register.
  
       On some machines it may be impossible to determine the frame
       address of any function other than the current one; in such cases,
       or when the top of the stack has been reached, this function
!      returns â€˜0â€™ if the first frame pointer is properly initialized by
       the startup code.
  
       Calling this function with a nonzero argument can have
       unpredictable effects, including crashing the calling program.  As
       a result, calls that are considered unsafe are diagnosed when the
!      â€˜-Wframe-addressâ€™ option is in effect.  Such calls should only be
       made in debugging situations.
  
   -- Built-in Function: void * __builtin_stack_address ()
       This function returns the stack pointer register, offset by
!      â€˜STACK_ADDRESS_OFFSETâ€™ if that's defined.
  
       Conceptually, the returned address returned by this built-in
       function is the boundary between the stack area allocated for use
*************** File: gcc.info,  Node: Stack Scrubbing,
*** 52197,52212 ****
  7.7 Stack scrubbing internal interfaces
  =======================================
  
! Stack scrubbing involves cooperation between a 'strub' context, i.e., a
  function whose stack frame is to be zeroed-out, and its callers.  The
! caller initializes a stack watermark, the 'strub' context updates the
  watermark according to its stack use, and the caller zeroes it out once
  it regains control, whether by the callee's returning or by an
  exception.
  
   Each of these steps is performed by a different builtin function call.
  Calls to these builtins are introduced automatically, in response to
! 'strub' attributes and command-line options; they are not expected to be
  explicitly called by source code.
  
   The functions that implement the builtins are available in libgcc but,
--- 52205,52220 ----
  7.7 Stack scrubbing internal interfaces
  =======================================
  
! Stack scrubbing involves cooperation between a â€˜strubâ€™ context, i.e., a
  function whose stack frame is to be zeroed-out, and its callers.  The
! caller initializes a stack watermark, the â€˜strubâ€™ context updates the
  watermark according to its stack use, and the caller zeroes it out once
  it regains control, whether by the callee's returning or by an
  exception.
  
   Each of these steps is performed by a different builtin function call.
  Calls to these builtins are introduced automatically, in response to
! â€˜strubâ€™ attributes and command-line options; they are not expected to be
  explicitly called by source code.
  
   The functions that implement the builtins are available in libgcc but,
*************** for code size.
*** 52219,52238 ****
   -- Built-in Function: void __builtin___strub_enter (void **WMPTR)
       This function initializes a stack WATERMARK variable with the
       current top of the stack.  A call to this builtin function is
!      introduced before entering a 'strub' context.  It remains as a
       function call if optimization is not enabled.
  
   -- Built-in Function: void __builtin___strub_update (void **WMPTR)
       This function updates a stack WATERMARK variable with the current
       top of the stack, if it tops the previous watermark.  A call to
!      this builtin function is inserted within 'strub' contexts, whenever
       additional stack space may have been used.  It remains as a
       function call at optimization levels lower than 2.
  
   -- Built-in Function: void __builtin___strub_leave (void **WMPTR)
       This function overwrites the memory area between the current top of
       the stack, and the WATERMARKed address.  A call to this builtin
!      function is inserted after leaving a 'strub' context.  It remains
       as a function call at optimization levels lower than 3, and it is
       guarded by a condition at level 2.
  
--- 52227,52246 ----
   -- Built-in Function: void __builtin___strub_enter (void **WMPTR)
       This function initializes a stack WATERMARK variable with the
       current top of the stack.  A call to this builtin function is
!      introduced before entering a â€˜strubâ€™ context.  It remains as a
       function call if optimization is not enabled.
  
   -- Built-in Function: void __builtin___strub_update (void **WMPTR)
       This function updates a stack WATERMARK variable with the current
       top of the stack, if it tops the previous watermark.  A call to
!      this builtin function is inserted within â€˜strubâ€™ contexts, whenever
       additional stack space may have been used.  It remains as a
       function call at optimization levels lower than 2.
  
   -- Built-in Function: void __builtin___strub_leave (void **WMPTR)
       This function overwrites the memory area between the current top of
       the stack, and the WATERMARKed address.  A call to this builtin
!      function is inserted after leaving a â€˜strubâ€™ context.  It remains
       as a function call at optimization levels lower than 3, and it is
       guarded by a condition at level 2.
  
*************** same time.  For example, on the x86 the
*** 52248,52286 ****
  can be used this way.
  
   The first step in using these extensions is to provide the necessary
! data types.  This should be done using an appropriate 'typedef':
  
       typedef int v4si __attribute__ ((vector_size (16)));
  
! The 'int' type specifies the "base type" (which can be a 'typedef'),
  while the attribute specifies the vector size for the variable, measured
  in bytes.  For example, the declaration above causes the compiler to set
! the mode for the 'v4si' type to be 16 bytes wide and divided into 'int'
! sized units.  For a 32-bit 'int' this means a vector of 4 units of 4
! bytes, and the corresponding mode of 'foo' is V4SI.
  
!  The 'vector_size' attribute is only applicable to integral and floating
  scalars, although arrays, pointers, and function return values are
  allowed in conjunction with this construct.  Only sizes that are
  positive power-of-two multiples of the base type size are currently
  allowed.
  
   All the basic integer types can be used as base types, both as signed
! and as unsigned: 'char', 'short', 'int', 'long', 'long long'.  In
! addition, 'float' and 'double' can be used to build floating-point
  vector types.
  
   Specifying a combination that is not valid for the current architecture
  causes GCC to synthesize the instructions using a narrower mode.  For
! example, if you specify a variable of type 'V4SI' and your architecture
  does not allow for this specific SIMD type, GCC produces code that uses
! 4 'SIs'.
  
   The types defined in this manner can be used with a subset of normal C
  operations.  Currently, GCC allows using the following operators on
! these types: '+, -, *, /, unary minus, ^, |, &, ~, %'.
  
!  The operations behave like C++ 'valarrays'.  Addition is defined as the
  addition of the corresponding elements of the operands.  For example, in
  the code below, each of the 4 elements in A is added to the
  corresponding 4 elements in B and the resulting vector is stored in C.
--- 52256,52294 ----
  can be used this way.
  
   The first step in using these extensions is to provide the necessary
! data types.  This should be done using an appropriate â€˜typedefâ€™:
  
       typedef int v4si __attribute__ ((vector_size (16)));
  
! The â€˜intâ€™ type specifies the â€œbase typeâ€� (which can be a â€˜typedefâ€™),
  while the attribute specifies the vector size for the variable, measured
  in bytes.  For example, the declaration above causes the compiler to set
! the mode for the â€˜v4siâ€™ type to be 16 bytes wide and divided into â€˜intâ€™
! sized units.  For a 32-bit â€˜intâ€™ this means a vector of 4 units of 4
! bytes, and the corresponding mode of â€˜fooâ€™ is V4SI.
  
!  The â€˜vector_sizeâ€™ attribute is only applicable to integral and floating
  scalars, although arrays, pointers, and function return values are
  allowed in conjunction with this construct.  Only sizes that are
  positive power-of-two multiples of the base type size are currently
  allowed.
  
   All the basic integer types can be used as base types, both as signed
! and as unsigned: â€˜charâ€™, â€˜shortâ€™, â€˜intâ€™, â€˜longâ€™, â€˜long longâ€™.  In
! addition, â€˜floatâ€™ and â€˜doubleâ€™ can be used to build floating-point
  vector types.
  
   Specifying a combination that is not valid for the current architecture
  causes GCC to synthesize the instructions using a narrower mode.  For
! example, if you specify a variable of type â€˜V4SIâ€™ and your architecture
  does not allow for this specific SIMD type, GCC produces code that uses
! 4 â€˜SIsâ€™.
  
   The types defined in this manner can be used with a subset of normal C
  operations.  Currently, GCC allows using the following operators on
! these types: â€˜+, -, *, /, unary minus, ^, |, &, ~, %â€™.
  
!  The operations behave like C++ â€˜valarraysâ€™.  Addition is defined as the
  addition of the corresponding elements of the operands.  For example, in
  the code below, each of the 4 elements in A is added to the
  corresponding 4 elements in B and the resulting vector is stored in C.
*************** minus or complement operators on a vecto
*** 52297,52308 ****
  elements are the negative or complemented values of the corresponding
  elements in the operand.
  
!  It is possible to use shifting operators '<<', '>>' on integer-type
! vectors.  The operation is defined as following: '{a0, a1, ..., an} >>
! {b0, b1, ..., bn} == {a0 >> b0, a1 >> b1, ..., an >> bn}'.  Unlike
! OpenCL, values of 'b' are not implicitly taken modulo bit width of the
! base type 'B', and the behavior is undefined if any 'bi' is greater than
! or equal to 'B'.
  
   In contrast to scalar operations in C and C++, operands of integer
  vector operations do not undergo integer promotions.
--- 52305,52316 ----
  elements are the negative or complemented values of the corresponding
  elements in the operand.
  
!  It is possible to use shifting operators â€˜<<â€™, â€˜>>â€™ on integer-type
! vectors.  The operation is defined as following: â€˜{a0, a1, ..., an} >>
! {b0, b1, ..., bn} == {a0 >> b0, a1 >> b1, ..., an >> bn}â€™.  Unlike
! OpenCL, values of â€˜bâ€™ are not implicitly taken modulo bit width of the
! base type â€˜Bâ€™, and the behavior is undefined if any â€˜biâ€™ is greater than
! or equal to â€˜Bâ€™.
  
   In contrast to scalar operations in C and C++, operands of integer
  vector operations do not undergo integer promotions.
*************** code.
*** 52330,52339 ****
   Vectors can be subscripted as if the vector were an array with the same
  number of elements and base type.  Out of bound accesses invoke
  undefined behavior at run time.  Warnings for out of bound accesses for
! vector subscription can be enabled with '-Warray-bounds'.
  
!  Vector comparison is supported with standard comparison operators: '==,
! !=, <, <=, >, >='.  Comparison operands can be vector expressions of
  integer-type or real-type.  Comparison between integer-type vectors and
  real-type vectors are not supported.  The result of the comparison is a
  vector of the same width and number of elements as the comparison
--- 52338,52347 ----
   Vectors can be subscripted as if the vector were an array with the same
  number of elements and base type.  Out of bound accesses invoke
  undefined behavior at run time.  Warnings for out of bound accesses for
! vector subscription can be enabled with â€˜-Warray-boundsâ€™.
  
!  Vector comparison is supported with standard comparison operators: â€˜==,
! !=, <, <=, >, >=â€™.  Comparison operands can be vector expressions of
  integer-type or real-type.  Comparison between integer-type vectors and
  real-type vectors are not supported.  The result of the comparison is a
  vector of the same width and number of elements as the comparison
*************** otherwise.  Consider the following examp
*** 52352,52378 ****
       c = a >  b;     /* The result would be {0, 0,-1, 0}  */
       c = a == b;     /* The result would be {0,-1, 0,-1}  */
  
!  In C++, the ternary operator '?:' is available.  'a?b:c', where 'b' and
! 'c' are vectors of the same type and 'a' is an integer vector with the
! same number of elements of the same size as 'b' and 'c', computes all
! three arguments and creates a vector '{a[0]?b[0]:c[0], a[1]?b[1]:c[1],
! ...}'.  Note that unlike in OpenCL, 'a' is thus interpreted as 'a != 0'
! and not 'a < 0'.  As in the case of binary operations, this syntax is
! also accepted when one of 'b' or 'c' is a scalar that is then
! transformed into a vector.  If both 'b' and 'c' are scalars and the type
! of 'true?b:c' has the same size as the element type of 'a', then 'b' and
! 'c' are converted to a vector type whose elements have this type and
! with the same number of elements as 'a'.
  
!  In C++, the logic operators '!, &&, ||' are available for vectors.
! '!v' is equivalent to 'v == 0', 'a && b' is equivalent to 'a!=0 & b!=0'
! and 'a || b' is equivalent to 'a!=0 | b!=0'.  For mixed operations
! between a scalar 's' and a vector 'v', 's && v' is equivalent to
! 's?v!=0:0' (the evaluation is short-circuit) and 'v && s' is equivalent
! to 'v!=0 & (s?-1:0)'.
  
!  Vector shuffling is available using functions '__builtin_shuffle (vec,
! mask)' and '__builtin_shuffle (vec0, vec1, mask)'.  Both functions
  construct a permutation of elements from one or two vectors and return a
  vector of the same type as the input vector(s).  The MASK is an integral
  vector with the same width (W) and element count (N) as the output
--- 52360,52386 ----
       c = a >  b;     /* The result would be {0, 0,-1, 0}  */
       c = a == b;     /* The result would be {0,-1, 0,-1}  */
  
!  In C++, the ternary operator â€˜?:â€™ is available.  â€˜a?b:câ€™, where â€˜bâ€™ and
! â€˜câ€™ are vectors of the same type and â€˜aâ€™ is an integer vector with the
! same number of elements of the same size as â€˜bâ€™ and â€˜câ€™, computes all
! three arguments and creates a vector â€˜{a[0]?b[0]:c[0], a[1]?b[1]:c[1],
! ...}â€™.  Note that unlike in OpenCL, â€˜aâ€™ is thus interpreted as â€˜a != 0â€™
! and not â€˜a < 0â€™.  As in the case of binary operations, this syntax is
! also accepted when one of â€˜bâ€™ or â€˜câ€™ is a scalar that is then
! transformed into a vector.  If both â€˜bâ€™ and â€˜câ€™ are scalars and the type
! of â€˜true?b:câ€™ has the same size as the element type of â€˜aâ€™, then â€˜bâ€™ and
! â€˜câ€™ are converted to a vector type whose elements have this type and
! with the same number of elements as â€˜aâ€™.
  
!  In C++, the logic operators â€˜!, &&, ||â€™ are available for vectors.
! â€˜!vâ€™ is equivalent to â€˜v == 0â€™, â€˜a && bâ€™ is equivalent to â€˜a!=0 & b!=0â€™
! and â€˜a || bâ€™ is equivalent to â€˜a!=0 | b!=0â€™.  For mixed operations
! between a scalar â€˜sâ€™ and a vector â€˜vâ€™, â€˜s && vâ€™ is equivalent to
! â€˜s?v!=0:0â€™ (the evaluation is short-circuit) and â€˜v && sâ€™ is equivalent
! to â€˜v!=0 & (s?-1:0)â€™.
  
!  Vector shuffling is available using functions â€˜__builtin_shuffle (vec,
! mask)â€™ and â€˜__builtin_shuffle (vec0, vec1, mask)â€™.  Both functions
  construct a permutation of elements from one or two vectors and return a
  vector of the same type as the input vector(s).  The MASK is an integral
  vector with the same width (W) and element count (N) as the output
*************** two-operand case.
*** 52396,52403 ****
       res = __builtin_shuffle (a, mask1);       /* res is {1,2,2,4}  */
       res = __builtin_shuffle (a, b, mask2);    /* res is {1,5,3,6}  */
  
!  Note that '__builtin_shuffle' is intentionally semantically compatible
! with the OpenCL 'shuffle' and 'shuffle2' functions.
  
   You can declare variables and use them in function calls and returns,
  as well as in assignments and some casts.  You can specify a vector type
--- 52404,52411 ----
       res = __builtin_shuffle (a, mask1);       /* res is {1,2,2,4}  */
       res = __builtin_shuffle (a, b, mask2);    /* res is {1,5,3,6}  */
  
!  Note that â€˜__builtin_shuffleâ€™ is intentionally semantically compatible
! with the OpenCL â€˜shuffleâ€™ and â€˜shuffle2â€™ functions.
  
   You can declare variables and use them in function calls and returns,
  as well as in assignments and some casts.  You can specify a vector type
*************** vectors to and from other data types of
*** 52409,52418 ****
   You cannot operate between vectors of different lengths or different
  signedness without a cast.
  
!  Vector shuffling is available using the '__builtin_shufflevector (vec1,
! vec2, index...)' function.  VEC1 and VEC2 must be expressions with
  vector type with a compatible element type.  The result of
! '__builtin_shufflevector' is a vector with the same element type as VEC1
  and VEC2 but that has an element count equal to the number of indices
  specified.
  
--- 52417,52426 ----
   You cannot operate between vectors of different lengths or different
  signedness without a cast.
  
!  Vector shuffling is available using the â€˜__builtin_shufflevector (vec1,
! vec2, index...)â€™ function.  VEC1 and VEC2 must be expressions with
  vector type with a compatible element type.  The result of
! â€˜__builtin_shufflevectorâ€™ is a vector with the same element type as VEC1
  and VEC2 but that has an element count equal to the number of indices
  specified.
  
*************** optimized the generated code sequence pe
*** 52433,52440 ****
       v4si c = {-2,-4,-6,-8};
       v8si d = __builtin_shufflevector (c, b, 4, 0, 5, 1, 6, 2, 7, 3); /* d is a */
  
!  Vector conversion is available using the '__builtin_convertvector (vec,
! vectype)' function.  VEC must be an expression with integral or floating
  vector type and VECTYPE an integral or floating vector type with the
  same number of elements.  The result has VECTYPE type and value of a C
  cast of every element of VEC to the element type of VECTYPE.
--- 52441,52448 ----
       v4si c = {-2,-4,-6,-8};
       v8si d = __builtin_shufflevector (c, b, 4, 0, 5, 1, 6, 2, 7, 3); /* d is a */
  
!  Vector conversion is available using the â€˜__builtin_convertvector (vec,
! vectype)â€™ function.  VEC must be an expression with integral or floating
  vector type and VECTYPE an integral or floating vector type with the
  same number of elements.  The result has VECTYPE type and value of a C
  cast of every element of VEC to the element type of VECTYPE.
*************** cast of every element of VEC to the elem
*** 52460,52468 ****
  operations (for clarity) and machine-specific vector intrinsics (to
  access vector instructions that are not exposed via generic built-ins).
  On x86, intrinsic functions for integer vectors typically use the same
! vector type '__m128i' irrespective of how they interpret the vector,
  making it necessary to cast their arguments and return values from/to
! other vector types.  In C, you can make use of a 'union' type:
       #include <immintrin.h>
  
       typedef unsigned char u8x16 __attribute__ ((vector_size (16)));
--- 52468,52476 ----
  operations (for clarity) and machine-specific vector intrinsics (to
  access vector instructions that are not exposed via generic built-ins).
  On x86, intrinsic functions for integer vectors typically use the same
! vector type â€˜__m128iâ€™ irrespective of how they interpret the vector,
  making it necessary to cast their arguments and return values from/to
! other vector types.  In C, you can make use of a â€˜unionâ€™ type:
       #include <immintrin.h>
  
       typedef unsigned char u8x16 __attribute__ ((vector_size (16)));
*************** File: gcc.info,  Node: Atomic Memory Acc
*** 52495,52503 ****
  =====================================
  
  GCC supports two sets of builtins for atomic memory access primitives.
! The '__atomic' builtins provide the underlying support for the C++11
  atomic operations library, and are the currently-recommended interface
! when the C++11 library functions cannot be used directly.  The '__sync'
  builtins implement the specification from the Intel IA64 pSABI and are
  supported primarily for use in legacy code.
  
--- 52503,52511 ----
  =====================================
  
  GCC supports two sets of builtins for atomic memory access primitives.
! The â€˜__atomicâ€™ builtins provide the underlying support for the C++11
  atomic operations library, and are the currently-recommended interface
! when the C++11 library functions cannot be used directly.  The â€˜__syncâ€™
  builtins implement the specification from the Intel IA64 pSABI and are
  supported primarily for use in legacy code.
  
*************** File: gcc.info,  Node: __atomic Builtins
*** 52514,52534 ****
  
  The following built-in functions approximately match the requirements
  for the C++11 memory model.  They are all identified by being prefixed
! with '__atomic' and most are overloaded so that they work with multiple
  types.
  
!  These functions are intended to replace the legacy '__sync' builtins.
  The main difference is that the memory order that is requested is a
! parameter to the functions.  New code should always use the '__atomic'
! builtins rather than the '__sync' builtins.
  
!  Note that the '__atomic' builtins assume that programs will conform to
  the C++11 memory model.  In particular, they assume that programs are
  free of data races.  See the C++11 standard for detailed requirements.
  
!  The '__atomic' builtins can be used with any integral scalar or pointer
  type that is 1, 2, 4, or 8 bytes in length.  16-byte integral types are
! also allowed if '__int128' (*note __int128::) is supported by the
  architecture.
  
   The four non-arithmetic functions (load, store, exchange, and
--- 52522,52542 ----
  
  The following built-in functions approximately match the requirements
  for the C++11 memory model.  They are all identified by being prefixed
! with â€˜__atomicâ€™ and most are overloaded so that they work with multiple
  types.
  
!  These functions are intended to replace the legacy â€˜__syncâ€™ builtins.
  The main difference is that the memory order that is requested is a
! parameter to the functions.  New code should always use the â€˜__atomicâ€™
! builtins rather than the â€˜__syncâ€™ builtins.
  
!  Note that the â€˜__atomicâ€™ builtins assume that programs will conform to
  the C++11 memory model.  In particular, they assume that programs are
  free of data races.  See the C++11 standard for detailed requirements.
  
!  The â€˜__atomicâ€™ builtins can be used with any integral scalar or pointer
  type that is 1, 2, 4, or 8 bytes in length.  16-byte integral types are
! also allowed if â€˜__int128â€™ (*note __int128::) is supported by the
  architecture.
  
   The four non-arithmetic functions (load, store, exchange, and
*************** compare_exchange) all have a generic ver
*** 52536,52542 ****
  version works on any data type.  It uses the lock-free built-in function
  if the specific data type size makes that possible; otherwise, an
  external call is left to be resolved at run time.  This external call is
! the same format with the addition of a 'size_t' parameter inserted as
  the first parameter indicating the size of the object being pointed to.
  All objects must be the same size.
  
--- 52544,52550 ----
  version works on any data type.  It uses the lock-free built-in function
  if the specific data type size makes that possible; otherwise, an
  external call is left to be resolved at run time.  This external call is
! the same format with the addition of a â€˜size_tâ€™ parameter inserted as
  the first parameter indicating the size of the object being pointed to.
  All objects must be the same size.
  
*************** strength.  The description of each memor
*** 52556,52591 ****
  illustrate the effects and is not a specification; see the C++11 memory
  model for precise semantics.
  
! '__ATOMIC_RELAXED'
       Implies no inter-thread ordering constraints.
! '__ATOMIC_CONSUME'
!      This is currently implemented using the stronger '__ATOMIC_ACQUIRE'
       memory order because of a deficiency in C++11's semantics for
!      'memory_order_consume'.
! '__ATOMIC_ACQUIRE'
       Creates an inter-thread happens-before constraint from the release
       (or stronger) semantic store to this acquire load.  Can prevent
       hoisting of code to before the operation.
! '__ATOMIC_RELEASE'
       Creates an inter-thread happens-before constraint to acquire (or
       stronger) semantic loads that read from this release store.  Can
       prevent sinking of code to after the operation.
! '__ATOMIC_ACQ_REL'
!      Combines the effects of both '__ATOMIC_ACQUIRE' and
!      '__ATOMIC_RELEASE'.
! '__ATOMIC_SEQ_CST'
!      Enforces total ordering with all other '__ATOMIC_SEQ_CST'
       operations.
  
   Note that in the C++11 memory model, _fences_ (e.g.,
! '__atomic_thread_fence') take effect in combination with other atomic
  operations on specific memory locations (e.g., atomic loads); operations
  on specific memory locations do not necessarily affect other operations
  in the same way.
  
   Target architectures are encouraged to provide their own patterns for
  each of the atomic built-in functions.  If no target is provided, the
! original non-memory model set of '__sync' atomic built-in functions are
  used, along with any required synchronization fences surrounding it in
  order to achieve the proper behavior.  Execution in this case is subject
  to the same restrictions as those built-in functions.
--- 52564,52599 ----
  illustrate the effects and is not a specification; see the C++11 memory
  model for precise semantics.
  
! â€˜__ATOMIC_RELAXEDâ€™
       Implies no inter-thread ordering constraints.
! â€˜__ATOMIC_CONSUMEâ€™
!      This is currently implemented using the stronger â€˜__ATOMIC_ACQUIREâ€™
       memory order because of a deficiency in C++11's semantics for
!      â€˜memory_order_consumeâ€™.
! â€˜__ATOMIC_ACQUIREâ€™
       Creates an inter-thread happens-before constraint from the release
       (or stronger) semantic store to this acquire load.  Can prevent
       hoisting of code to before the operation.
! â€˜__ATOMIC_RELEASEâ€™
       Creates an inter-thread happens-before constraint to acquire (or
       stronger) semantic loads that read from this release store.  Can
       prevent sinking of code to after the operation.
! â€˜__ATOMIC_ACQ_RELâ€™
!      Combines the effects of both â€˜__ATOMIC_ACQUIREâ€™ and
!      â€˜__ATOMIC_RELEASEâ€™.
! â€˜__ATOMIC_SEQ_CSTâ€™
!      Enforces total ordering with all other â€˜__ATOMIC_SEQ_CSTâ€™
       operations.
  
   Note that in the C++11 memory model, _fences_ (e.g.,
! â€˜__atomic_thread_fenceâ€™) take effect in combination with other atomic
  operations on specific memory locations (e.g., atomic loads); operations
  on specific memory locations do not necessarily affect other operations
  in the same way.
  
   Target architectures are encouraged to provide their own patterns for
  each of the atomic built-in functions.  If no target is provided, the
! original non-memory model set of â€˜__syncâ€™ atomic built-in functions are
  used, along with any required synchronization fences surrounding it in
  order to achieve the proper behavior.  Execution in this case is subject
  to the same restrictions as those built-in functions.
*************** to be resolved at run time.
*** 52596,52609 ****
  
   When implementing patterns for these built-in functions, the memory
  order parameter can be ignored as long as the pattern implements the
! most restrictive '__ATOMIC_SEQ_CST' memory order.  Any of the other
  memory orders execute correctly with this memory order but they may not
  execute as efficiently as they could with a more appropriate
  implementation of the relaxed requirements.
  
   Note that the C++11 standard allows for the memory order parameter to
  be determined at run time rather than at compile time.  These built-in
! functions map any run-time value to '__ATOMIC_SEQ_CST' rather than
  invoke a runtime library call or inline a switch statement.  This is
  standard compliant, safe, and the simplest approach for now.
  
--- 52604,52617 ----
  
   When implementing patterns for these built-in functions, the memory
  order parameter can be ignored as long as the pattern implements the
! most restrictive â€˜__ATOMIC_SEQ_CSTâ€™ memory order.  Any of the other
  memory orders execute correctly with this memory order but they may not
  execute as efficiently as they could with a more appropriate
  implementation of the relaxed requirements.
  
   Note that the C++11 standard allows for the memory order parameter to
  be determined at run time rather than at compile time.  These built-in
! functions map any run-time value to â€˜__ATOMIC_SEQ_CSTâ€™ rather than
  invoke a runtime library call or inline a switch statement.  This is
  standard compliant, safe, and the simplest approach for now.
  
*************** values ensures proper usage.
*** 52616,52630 ****
  mark critical sections for hardware lock elision.  These modifiers can
  be bitwise or'ed with a standard memory order to atomic intrinsics.
  
! '__ATOMIC_HLE_ACQUIRE'
       Start lock elision on a lock variable.  Memory order must be
!      '__ATOMIC_ACQUIRE' or stronger.
! '__ATOMIC_HLE_RELEASE'
       End lock elision on a lock variable.  Memory order must be
!      '__ATOMIC_RELEASE' or stronger.
  
   When a lock acquire fails, it is required for good performance to abort
! the transaction quickly.  This can be done with a '_mm_pause'.
  
       #include <immintrin.h> // For _mm_pause
  
--- 52624,52638 ----
  mark critical sections for hardware lock elision.  These modifiers can
  be bitwise or'ed with a standard memory order to atomic intrinsics.
  
! â€˜__ATOMIC_HLE_ACQUIREâ€™
       Start lock elision on a lock variable.  Memory order must be
!      â€˜__ATOMIC_ACQUIREâ€™ or stronger.
! â€˜__ATOMIC_HLE_RELEASEâ€™
       End lock elision on a lock variable.  Memory order must be
!      â€˜__ATOMIC_RELEASEâ€™ or stronger.
  
   When a lock acquire fails, it is required for good performance to abort
! the transaction quickly.  This can be done with a â€˜_mm_pauseâ€™.
  
       #include <immintrin.h> // For _mm_pause
  
*************** the transaction quickly.  This can be do
*** 52639,52711 ****
  
   -- Built-in Function: TYPE __atomic_load_n (TYPE *PTR, int MEMORDER)
       This built-in function implements an atomic load operation.  It
!      returns the contents of '*PTR'.
  
!      The valid memory order variants are '__ATOMIC_RELAXED',
!      '__ATOMIC_SEQ_CST', '__ATOMIC_ACQUIRE', and '__ATOMIC_CONSUME'.
  
   -- Built-in Function: void __atomic_load (TYPE *PTR, TYPE *RET, int
            MEMORDER)
       This is the generic version of an atomic load.  It returns the
!      contents of '*PTR' in '*RET'.
  
   -- Built-in Function: void __atomic_store_n (TYPE *PTR, TYPE VAL, int
            MEMORDER)
       This built-in function implements an atomic store operation.  It
!      writes 'VAL' into '*PTR'.
  
!      The valid memory order variants are '__ATOMIC_RELAXED',
!      '__ATOMIC_SEQ_CST', and '__ATOMIC_RELEASE'.
  
   -- Built-in Function: void __atomic_store (TYPE *PTR, TYPE *VAL, int
            MEMORDER)
       This is the generic version of an atomic store.  It stores the
!      value of '*VAL' into '*PTR'.
  
   -- Built-in Function: TYPE __atomic_exchange_n (TYPE *PTR, TYPE VAL,
            int MEMORDER)
       This built-in function implements an atomic exchange operation.  It
!      writes VAL into '*PTR', and returns the previous contents of
!      '*PTR'.
  
       All memory order variants are valid.
  
   -- Built-in Function: void __atomic_exchange (TYPE *PTR, TYPE *VAL,
            TYPE *RET, int MEMORDER)
       This is the generic version of an atomic exchange.  It stores the
!      contents of '*VAL' into '*PTR'.  The original value of '*PTR' is
!      copied into '*RET'.
  
   -- Built-in Function: bool __atomic_compare_exchange_n (TYPE *PTR, TYPE
            *EXPECTED, TYPE DESIRED, bool WEAK, int SUCCESS_MEMORDER, int
            FAILURE_MEMORDER)
       This built-in function implements an atomic compare and exchange
!      operation.  This compares the contents of '*PTR' with the contents
!      of '*EXPECTED'.  If equal, the operation is a _read-modify-write_
!      operation that writes DESIRED into '*PTR'.  If they are not equal,
!      the operation is a _read_ and the current contents of '*PTR' are
!      written into '*EXPECTED'.  WEAK is 'true' for weak
!      compare_exchange, which may fail spuriously, and 'false' for the
       strong variation, which never fails spuriously.  Many targets only
       offer the strong variation and ignore the parameter.  When in
       doubt, use the strong variation.
  
!      If DESIRED is written into '*PTR' then 'true' is returned and
       memory is affected according to the memory order specified by
       SUCCESS_MEMORDER.  There are no restrictions on what memory order
       can be used here.
  
!      Otherwise, 'false' is returned and memory is affected according to
!      FAILURE_MEMORDER.  This memory order cannot be '__ATOMIC_RELEASE'
!      nor '__ATOMIC_ACQ_REL'.  It also cannot be a stronger order than
       that specified by SUCCESS_MEMORDER.
  
   -- Built-in Function: bool __atomic_compare_exchange (TYPE *PTR, TYPE
            *EXPECTED, TYPE *DESIRED, bool WEAK, int SUCCESS_MEMORDER, int
            FAILURE_MEMORDER)
       This built-in function implements the generic version of
!      '__atomic_compare_exchange'.  The function is virtually identical
!      to '__atomic_compare_exchange_n', except the desired value is also
       a pointer.
  
   -- Built-in Function: TYPE __atomic_add_fetch (TYPE *PTR, TYPE VAL, int
--- 52647,52719 ----
  
   -- Built-in Function: TYPE __atomic_load_n (TYPE *PTR, int MEMORDER)
       This built-in function implements an atomic load operation.  It
!      returns the contents of â€˜*PTRâ€™.
  
!      The valid memory order variants are â€˜__ATOMIC_RELAXEDâ€™,
!      â€˜__ATOMIC_SEQ_CSTâ€™, â€˜__ATOMIC_ACQUIREâ€™, and â€˜__ATOMIC_CONSUMEâ€™.
  
   -- Built-in Function: void __atomic_load (TYPE *PTR, TYPE *RET, int
            MEMORDER)
       This is the generic version of an atomic load.  It returns the
!      contents of â€˜*PTRâ€™ in â€˜*RETâ€™.
  
   -- Built-in Function: void __atomic_store_n (TYPE *PTR, TYPE VAL, int
            MEMORDER)
       This built-in function implements an atomic store operation.  It
!      writes â€˜VALâ€™ into â€˜*PTRâ€™.
  
!      The valid memory order variants are â€˜__ATOMIC_RELAXEDâ€™,
!      â€˜__ATOMIC_SEQ_CSTâ€™, and â€˜__ATOMIC_RELEASEâ€™.
  
   -- Built-in Function: void __atomic_store (TYPE *PTR, TYPE *VAL, int
            MEMORDER)
       This is the generic version of an atomic store.  It stores the
!      value of â€˜*VALâ€™ into â€˜*PTRâ€™.
  
   -- Built-in Function: TYPE __atomic_exchange_n (TYPE *PTR, TYPE VAL,
            int MEMORDER)
       This built-in function implements an atomic exchange operation.  It
!      writes VAL into â€˜*PTRâ€™, and returns the previous contents of
!      â€˜*PTRâ€™.
  
       All memory order variants are valid.
  
   -- Built-in Function: void __atomic_exchange (TYPE *PTR, TYPE *VAL,
            TYPE *RET, int MEMORDER)
       This is the generic version of an atomic exchange.  It stores the
!      contents of â€˜*VALâ€™ into â€˜*PTRâ€™.  The original value of â€˜*PTRâ€™ is
!      copied into â€˜*RETâ€™.
  
   -- Built-in Function: bool __atomic_compare_exchange_n (TYPE *PTR, TYPE
            *EXPECTED, TYPE DESIRED, bool WEAK, int SUCCESS_MEMORDER, int
            FAILURE_MEMORDER)
       This built-in function implements an atomic compare and exchange
!      operation.  This compares the contents of â€˜*PTRâ€™ with the contents
!      of â€˜*EXPECTEDâ€™.  If equal, the operation is a _read-modify-write_
!      operation that writes DESIRED into â€˜*PTRâ€™.  If they are not equal,
!      the operation is a _read_ and the current contents of â€˜*PTRâ€™ are
!      written into â€˜*EXPECTEDâ€™.  WEAK is â€˜trueâ€™ for weak
!      compare_exchange, which may fail spuriously, and â€˜falseâ€™ for the
       strong variation, which never fails spuriously.  Many targets only
       offer the strong variation and ignore the parameter.  When in
       doubt, use the strong variation.
  
!      If DESIRED is written into â€˜*PTRâ€™ then â€˜trueâ€™ is returned and
       memory is affected according to the memory order specified by
       SUCCESS_MEMORDER.  There are no restrictions on what memory order
       can be used here.
  
!      Otherwise, â€˜falseâ€™ is returned and memory is affected according to
!      FAILURE_MEMORDER.  This memory order cannot be â€˜__ATOMIC_RELEASEâ€™
!      nor â€˜__ATOMIC_ACQ_RELâ€™.  It also cannot be a stronger order than
       that specified by SUCCESS_MEMORDER.
  
   -- Built-in Function: bool __atomic_compare_exchange (TYPE *PTR, TYPE
            *EXPECTED, TYPE *DESIRED, bool WEAK, int SUCCESS_MEMORDER, int
            FAILURE_MEMORDER)
       This built-in function implements the generic version of
!      â€˜__atomic_compare_exchangeâ€™.  The function is virtually identical
!      to â€˜__atomic_compare_exchange_nâ€™, except the desired value is also
       a pointer.
  
   -- Built-in Function: TYPE __atomic_add_fetch (TYPE *PTR, TYPE VAL, int
*************** the transaction quickly.  This can be do
*** 52723,52729 ****
       These built-in functions perform the operation suggested by the
       name, and return the result of the operation.  Operations on
       pointer arguments are performed as if the operands were of the
!      'uintptr_t' type.  That is, they are not scaled by the size of the
       type to which the pointer points.
  
            { *ptr OP= val; return *ptr; }
--- 52731,52737 ----
       These built-in functions perform the operation suggested by the
       name, and return the result of the operation.  Operations on
       pointer arguments are performed as if the operands were of the
!      â€˜uintptr_tâ€™ type.  That is, they are not scaled by the size of the
       type to which the pointer points.
  
            { *ptr OP= val; return *ptr; }
*************** the transaction quickly.  This can be do
*** 52746,52771 ****
   -- Built-in Function: TYPE __atomic_fetch_nand (TYPE *PTR, TYPE VAL,
            int MEMORDER)
       These built-in functions perform the operation suggested by the
!      name, and return the value that had previously been in '*PTR'.
       Operations on pointer arguments are performed as if the operands
!      were of the 'uintptr_t' type.  That is, they are not scaled by the
       size of the type to which the pointer points.
  
            { tmp = *ptr; *ptr OP= val; return tmp; }
            { tmp = *ptr; *ptr = ~(*ptr & val); return tmp; } // nand
  
       The same constraints on arguments apply as for the corresponding
!      '__atomic_op_fetch' built-in functions.  All memory orders are
       valid.
  
   -- Built-in Function: bool __atomic_test_and_set (void *PTR, int
            MEMORDER)
  
       This built-in function performs an atomic test-and-set operation on
!      the byte at '*PTR'.  The byte is set to some implementation defined
!      nonzero "set" value and the return value is 'true' if and only if
       the previous contents were "set".  It should be only used for
!      operands of type 'bool' or 'char'.  For other types only part of
       the value may be set.
  
       All memory orders are valid.
--- 52754,52779 ----
   -- Built-in Function: TYPE __atomic_fetch_nand (TYPE *PTR, TYPE VAL,
            int MEMORDER)
       These built-in functions perform the operation suggested by the
!      name, and return the value that had previously been in â€˜*PTRâ€™.
       Operations on pointer arguments are performed as if the operands
!      were of the â€˜uintptr_tâ€™ type.  That is, they are not scaled by the
       size of the type to which the pointer points.
  
            { tmp = *ptr; *ptr OP= val; return tmp; }
            { tmp = *ptr; *ptr = ~(*ptr & val); return tmp; } // nand
  
       The same constraints on arguments apply as for the corresponding
!      â€˜__atomic_op_fetchâ€™ built-in functions.  All memory orders are
       valid.
  
   -- Built-in Function: bool __atomic_test_and_set (void *PTR, int
            MEMORDER)
  
       This built-in function performs an atomic test-and-set operation on
!      the byte at â€˜*PTRâ€™.  The byte is set to some implementation defined
!      nonzero "set" value and the return value is â€˜trueâ€™ if and only if
       the previous contents were "set".  It should be only used for
!      operands of type â€˜boolâ€™ or â€˜charâ€™.  For other types only part of
       the value may be set.
  
       All memory orders are valid.
*************** the transaction quickly.  This can be do
*** 52773,52786 ****
   -- Built-in Function: void __atomic_clear (bool *PTR, int MEMORDER)
  
       This built-in function performs an atomic clear operation on
!      '*PTR'.  After the operation, '*PTR' contains 0.  It should be only
!      used for operands of type 'bool' or 'char' and in conjunction with
!      '__atomic_test_and_set'.  For other types it may only clear
!      partially.  If the type is not 'bool' prefer using
!      '__atomic_store'.
  
!      The valid memory order variants are '__ATOMIC_RELAXED',
!      '__ATOMIC_SEQ_CST', and '__ATOMIC_RELEASE'.
  
   -- Built-in Function: void __atomic_thread_fence (int MEMORDER)
  
--- 52781,52794 ----
   -- Built-in Function: void __atomic_clear (bool *PTR, int MEMORDER)
  
       This built-in function performs an atomic clear operation on
!      â€˜*PTRâ€™.  After the operation, â€˜*PTRâ€™ contains 0.  It should be only
!      used for operands of type â€˜boolâ€™ or â€˜charâ€™ and in conjunction with
!      â€˜__atomic_test_and_setâ€™.  For other types it may only clear
!      partially.  If the type is not â€˜boolâ€™ prefer using
!      â€˜__atomic_storeâ€™.
  
!      The valid memory order variants are â€˜__ATOMIC_RELAXEDâ€™,
!      â€˜__ATOMIC_SEQ_CSTâ€™, and â€˜__ATOMIC_RELEASEâ€™.
  
   -- Built-in Function: void __atomic_thread_fence (int MEMORDER)
  
*************** the transaction quickly.  This can be do
*** 52799,52805 ****
   -- Built-in Function: bool __atomic_always_lock_free (size_t SIZE, void
            *PTR)
  
!      This built-in function returns 'true' if objects of SIZE bytes
       always generate lock-free atomic instructions for the target
       architecture.  SIZE must resolve to a compile-time constant and the
       result also resolves to a compile-time constant.
--- 52807,52813 ----
   -- Built-in Function: bool __atomic_always_lock_free (size_t SIZE, void
            *PTR)
  
!      This built-in function returns â€˜trueâ€™ if objects of SIZE bytes
       always generate lock-free atomic instructions for the target
       architecture.  SIZE must resolve to a compile-time constant and the
       result also resolves to a compile-time constant.
*************** the transaction quickly.  This can be do
*** 52813,52823 ****
   -- Built-in Function: bool __atomic_is_lock_free (size_t SIZE, void
            *PTR)
  
!      This built-in function returns 'true' if objects of SIZE bytes
       always generate lock-free atomic instructions for the target
       architecture.  If the built-in function is not known to be
       lock-free, a call is made to a runtime routine named
!      '__atomic_is_lock_free'.
  
       PTR is an optional pointer to the object that may be used to
       determine alignment.  A value of 0 indicates typical alignment
--- 52821,52831 ----
   -- Built-in Function: bool __atomic_is_lock_free (size_t SIZE, void
            *PTR)
  
!      This built-in function returns â€˜trueâ€™ if objects of SIZE bytes
       always generate lock-free atomic instructions for the target
       architecture.  If the built-in function is not known to be
       lock-free, a call is made to a runtime routine named
!      â€˜__atomic_is_lock_freeâ€™.
  
       PTR is an optional pointer to the object that may be used to
       determine alignment.  A value of 0 indicates typical alignment
*************** the transaction quickly.  This can be do
*** 52826,52860 ****
  
  File: gcc.info,  Node: __sync Builtins,  Prev: __atomic Builtins,  Up: Atomic Memory Access
  
! 7.9.2 Legacy '__sync' Built-in Functions for Atomic Memory Access
  -----------------------------------------------------------------
  
  The following built-in functions are intended to be compatible with
! those described in the 'Intel Itanium Processor-specific Application
! Binary Interface', section 7.4.  As such, they depart from normal GCC
! practice by not using the '__builtin_' prefix and also by being
  overloaded so that they work on multiple types.
  
   The definition given in the Intel documentation allows only for the use
! of the types 'int', 'long', 'long long' or their unsigned counterparts.
  GCC allows any scalar type that is 1, 2, 4 or 8 bytes in size other than
! the C type '_Bool' or the C++ type 'bool'.  Operations on pointer
! arguments are performed as if the operands were of the 'uintptr_t' type.
  That is, they are not scaled by the size of the type to which the
  pointer points.
  
!  These functions are implemented in terms of the '__atomic' builtins
  (*note __atomic Builtins::).  They should not be used for new code which
! should use the '__atomic' builtins instead.
  
   Not all operations are supported by all target processors.  If a
  particular operation cannot be implemented on the target processor, a
  call to an external function is generated.  The external function
  carries the same name as the built-in version, with an additional suffix
! '_N' where N is the size of the data type.
  
!  In most cases, these built-in functions are considered a "full
! barrier".  That is, no memory operand is moved across the operation,
  either forward or backward.  Further, instructions are issued as
  necessary to prevent the processor from speculating loads across the
  operation and from queuing stores after the operation.
--- 52834,52868 ----
  
  File: gcc.info,  Node: __sync Builtins,  Prev: __atomic Builtins,  Up: Atomic Memory Access
  
! 7.9.2 Legacy â€˜__syncâ€™ Built-in Functions for Atomic Memory Access
  -----------------------------------------------------------------
  
  The following built-in functions are intended to be compatible with
! those described in the â€˜Intel Itanium Processor-specific Application
! Binary Interfaceâ€™, section 7.4.  As such, they depart from normal GCC
! practice by not using the â€˜__builtin_â€™ prefix and also by being
  overloaded so that they work on multiple types.
  
   The definition given in the Intel documentation allows only for the use
! of the types â€˜intâ€™, â€˜longâ€™, â€˜long longâ€™ or their unsigned counterparts.
  GCC allows any scalar type that is 1, 2, 4 or 8 bytes in size other than
! the C type â€˜_Boolâ€™ or the C++ type â€˜boolâ€™.  Operations on pointer
! arguments are performed as if the operands were of the â€˜uintptr_tâ€™ type.
  That is, they are not scaled by the size of the type to which the
  pointer points.
  
!  These functions are implemented in terms of the â€˜__atomicâ€™ builtins
  (*note __atomic Builtins::).  They should not be used for new code which
! should use the â€˜__atomicâ€™ builtins instead.
  
   Not all operations are supported by all target processors.  If a
  particular operation cannot be implemented on the target processor, a
  call to an external function is generated.  The external function
  carries the same name as the built-in version, with an additional suffix
! â€˜_Nâ€™ where N is the size of the data type.
  
!  In most cases, these built-in functions are considered a â€œfull
! barrierâ€�.  That is, no memory operand is moved across the operation,
  either forward or backward.  Further, instructions are issued as
  necessary to prevent the processor from speculating loads across the
  operation and from queuing stores after the operation.
*************** variables should be protected.
*** 52883,52889 ****
       name, and returns the value that had previously been in memory.
       That is, operations on integer operands have the following
       semantics.  Operations on pointer arguments are performed as if the
!      operands were of the 'uintptr_t' type.  That is, they are not
       scaled by the size of the type to which the pointer points.
  
            { tmp = *ptr; *ptr OP= value; return tmp; }
--- 52891,52897 ----
       name, and returns the value that had previously been in memory.
       That is, operations on integer operands have the following
       semantics.  Operations on pointer arguments are performed as if the
!      operands were of the â€˜uintptr_tâ€™ type.  That is, they are not
       scaled by the size of the type to which the pointer points.
  
            { tmp = *ptr; *ptr OP= value; return tmp; }
*************** variables should be protected.
*** 52892,52899 ****
       The object pointed to by the first argument must be of integer or
       pointer type.  It must not be a boolean type.
  
!      _Note:_ GCC 4.4 and later implement '__sync_fetch_and_nand' as
!      '*ptr = ~(tmp & value)' instead of '*ptr = ~tmp & value'.
  
   -- Built-in Function: TYPE __sync_add_and_fetch (TYPE *PTR, TYPE VALUE,
            ...)
--- 52900,52907 ----
       The object pointed to by the first argument must be of integer or
       pointer type.  It must not be a boolean type.
  
!      _Note:_ GCC 4.4 and later implement â€˜__sync_fetch_and_nandâ€™ as
!      â€˜*ptr = ~(tmp & value)â€™ instead of â€˜*ptr = ~tmp & valueâ€™.
  
   -- Built-in Function: TYPE __sync_add_and_fetch (TYPE *PTR, TYPE VALUE,
            ...)
*************** variables should be protected.
*** 52910,52937 ****
       These built-in functions perform the operation suggested by the
       name, and return the new value.  That is, operations on integer
       operands have the following semantics.  Operations on pointer
!      operands are performed as if the operand's type were 'uintptr_t'.
  
            { *ptr OP= value; return *ptr; }
            { *ptr = ~(*ptr & value); return *ptr; }   // nand
  
       The same constraints on arguments apply as for the corresponding
!      '__sync_op_and_fetch' built-in functions.
  
!      _Note:_ GCC 4.4 and later implement '__sync_nand_and_fetch' as
!      '*ptr = ~(*ptr & value)' instead of '*ptr = ~*ptr & value'.
  
   -- Built-in Function: bool __sync_bool_compare_and_swap (TYPE *PTR,
            TYPE OLDVAL, TYPE NEWVAL, ...)
   -- Built-in Function: TYPE __sync_val_compare_and_swap (TYPE *PTR, TYPE
            OLDVAL, TYPE NEWVAL, ...)
       These built-in functions perform an atomic compare and swap.  That
!      is, if the current value of '*PTR' is OLDVAL, then write NEWVAL
!      into '*PTR'.
  
!      The "bool" version returns 'true' if the comparison is successful
       and NEWVAL is written.  The "val" version returns the contents of
!      '*PTR' before the operation.
  
   -- Built-in Function: void __sync_synchronize (...)
       This built-in function issues a full memory barrier.
--- 52918,52945 ----
       These built-in functions perform the operation suggested by the
       name, and return the new value.  That is, operations on integer
       operands have the following semantics.  Operations on pointer
!      operands are performed as if the operand's type were â€˜uintptr_tâ€™.
  
            { *ptr OP= value; return *ptr; }
            { *ptr = ~(*ptr & value); return *ptr; }   // nand
  
       The same constraints on arguments apply as for the corresponding
!      â€˜__sync_op_and_fetchâ€™ built-in functions.
  
!      _Note:_ GCC 4.4 and later implement â€˜__sync_nand_and_fetchâ€™ as
!      â€˜*ptr = ~(*ptr & value)â€™ instead of â€˜*ptr = ~*ptr & valueâ€™.
  
   -- Built-in Function: bool __sync_bool_compare_and_swap (TYPE *PTR,
            TYPE OLDVAL, TYPE NEWVAL, ...)
   -- Built-in Function: TYPE __sync_val_compare_and_swap (TYPE *PTR, TYPE
            OLDVAL, TYPE NEWVAL, ...)
       These built-in functions perform an atomic compare and swap.  That
!      is, if the current value of â€˜*PTRâ€™ is OLDVAL, then write NEWVAL
!      into â€˜*PTRâ€™.
  
!      The "bool" version returns â€˜trueâ€™ if the comparison is successful
       and NEWVAL is written.  The "val" version returns the contents of
!      â€˜*PTRâ€™ before the operation.
  
   -- Built-in Function: void __sync_synchronize (...)
       This built-in function issues a full memory barrier.
*************** variables should be protected.
*** 52940,52967 ****
            VALUE, ...)
       This built-in function, as described by Intel, is not a traditional
       test-and-set operation, but rather an atomic exchange operation.
!      It writes VALUE into '*PTR', and returns the previous contents of
!      '*PTR'.
  
       Many targets have only minimal support for such locks, and do not
       support a full exchange operation.  In this case, a target may
       support reduced functionality here by which the _only_ valid value
       to store is the immediate constant 1.  The exact value actually
!      stored in '*PTR' is implementation defined.
  
       This built-in function is not a full barrier, but rather an
!      "acquire barrier".  This means that references after the operation
       cannot move to (or be speculated to) before the operation, but
       previous memory stores may not be globally visible yet, and
       previous memory loads may not yet be satisfied.
  
   -- Built-in Function: void __sync_lock_release (TYPE *PTR, ...)
       This built-in function releases the lock acquired by
!      '__sync_lock_test_and_set'.  Normally this means writing the
!      constant 0 to '*PTR'.
  
!      This built-in function is not a full barrier, but rather a "release
!      barrier".  This means that all previous memory stores are globally
       visible, and all previous memory loads have been satisfied, but
       following memory reads are not prevented from being speculated to
       before the barrier.
--- 52948,52975 ----
            VALUE, ...)
       This built-in function, as described by Intel, is not a traditional
       test-and-set operation, but rather an atomic exchange operation.
!      It writes VALUE into â€˜*PTRâ€™, and returns the previous contents of
!      â€˜*PTRâ€™.
  
       Many targets have only minimal support for such locks, and do not
       support a full exchange operation.  In this case, a target may
       support reduced functionality here by which the _only_ valid value
       to store is the immediate constant 1.  The exact value actually
!      stored in â€˜*PTRâ€™ is implementation defined.
  
       This built-in function is not a full barrier, but rather an
!      â€œacquire barrierâ€�.  This means that references after the operation
       cannot move to (or be speculated to) before the operation, but
       previous memory stores may not be globally visible yet, and
       previous memory loads may not yet be satisfied.
  
   -- Built-in Function: void __sync_lock_release (TYPE *PTR, ...)
       This built-in function releases the lock acquired by
!      â€˜__sync_lock_test_and_setâ€™.  Normally this means writing the
!      constant 0 to â€˜*PTRâ€™.
  
!      This built-in function is not a full barrier, but rather a â€œrelease
!      barrierâ€�.  This means that all previous memory stores are globally
       visible, and all previous memory loads have been satisfied, but
       following memory reads are not prevented from being speculated to
       before the barrier.
*************** the size isn't sufficient.  The built-in
*** 52982,52988 ****
  the best results when used together and when optimization is enabled.
  For example, to detect object sizes across function boundaries or to
  follow pointer assignments through non-trivial control flow they rely on
! various optimization passes enabled with '-O2'.  However, to a limited
  extent, they can be used without optimization as well.
  
   -- Built-in Function: size_t __builtin_object_size (const void * PTR,
--- 52990,52996 ----
  the best results when used together and when optimization is enabled.
  For example, to detect object sizes across function boundaries or to
  follow pointer assignments through non-trivial control flow they rely on
! various optimization passes enabled with â€˜-O2â€™.  However, to a limited
  extent, they can be used without optimization as well.
  
   -- Built-in Function: size_t __builtin_object_size (const void * PTR,
*************** extent, they can be used without optimiz
*** 52991,53007 ****
       to the end of the object PTR pointer points to (if known at compile
       time).  To determine the sizes of dynamically allocated objects the
       function relies on the allocation functions called to obtain the
!      storage to be declared with the 'alloc_size' attribute (*note
!      Common Function Attributes::).  '__builtin_object_size' never
       evaluates its arguments for side effects.  If there are any side
!      effects in them, it returns '(size_t) -1' for TYPE 0 or 1 and
!      '(size_t) 0' for TYPE 2 or 3.  If there are multiple objects PTR
       can point to and all of them are known at compile time, the
       returned number is the maximum of remaining byte counts in those
       objects if TYPE & 2 is 0 and minimum if nonzero.  If it is not
       possible to determine which objects PTR points to at compile time,
!      '__builtin_object_size' should return '(size_t) -1' for TYPE 0 or 1
!      and '(size_t) 0' for TYPE 2 or 3.
  
       TYPE is an integer constant from 0 to 3.  If the least significant
       bit is clear, objects are whole variables, if it is set, a closest
--- 52999,53015 ----
       to the end of the object PTR pointer points to (if known at compile
       time).  To determine the sizes of dynamically allocated objects the
       function relies on the allocation functions called to obtain the
!      storage to be declared with the â€˜alloc_sizeâ€™ attribute (*note
!      Common Function Attributes::).  â€˜__builtin_object_sizeâ€™ never
       evaluates its arguments for side effects.  If there are any side
!      effects in them, it returns â€˜(size_t) -1â€™ for TYPE 0 or 1 and
!      â€˜(size_t) 0â€™ for TYPE 2 or 3.  If there are multiple objects PTR
       can point to and all of them are known at compile time, the
       returned number is the maximum of remaining byte counts in those
       objects if TYPE & 2 is 0 and minimum if nonzero.  If it is not
       possible to determine which objects PTR points to at compile time,
!      â€˜__builtin_object_sizeâ€™ should return â€˜(size_t) -1â€™ for TYPE 0 or 1
!      and â€˜(size_t) 0â€™ for TYPE 2 or 3.
  
       TYPE is an integer constant from 0 to 3.  If the least significant
       bit is clear, objects are whole variables, if it is set, a closest
*************** extent, they can be used without optimiz
*** 53010,53016 ****
       is computed.
  
            struct V { char buf1[10]; int b; char buf2[10]; } var;
!           char *p = &var.buf1[1], *q = &var.b;
  
            /* Here the object p points to is var.  */
            assert (__builtin_object_size (p, 0) == sizeof (var) - 1);
--- 53018,53025 ----
       is computed.
  
            struct V { char buf1[10]; int b; char buf2[10]; } var;
!           char *p = &var.buf1[1];
!           int *q = &var.b;
  
            /* Here the object p points to is var.  */
            assert (__builtin_object_size (p, 0) == sizeof (var) - 1);
*************** extent, they can be used without optimiz
*** 53024,53055 ****
  
   -- Built-in Function: size_t __builtin_dynamic_object_size (const void
            * PTR, int TYPE)
!      This builtin is similar to '__builtin_object_size' in that it
       returns a number of bytes from PTR to the end of the object PTR
       pointer points to, except that the size returned may not be a
       constant.  This results in successful evaluation of object size
       estimates in a wider range of use cases and can be more precise
!      than '__builtin_object_size', but it incurs a performance penalty
       since it may add a runtime overhead on size computation.  Semantics
       of TYPE as well as return values in case it is not possible to
       determine which objects PTR points to at compile time are the same
!      as in the case of '__builtin_object_size'.
  
  7.10.2 Object Size Checking and Source Fortification
  ----------------------------------------------------
  
! Hardening of function calls using the '_FORTIFY_SOURCE' macro is one of
  the key uses of the object size checking built-in functions.  To make
  implementation of these features more convenient and improve
  optimization and diagnostics, there are built-in functions added for
! many common string operation functions, e.g., for 'memcpy'
! '__builtin___memcpy_chk' built-in is provided.  This built-in has an
  additional last argument, which is the number of bytes remaining in the
! object the DEST argument points to or '(size_t) -1' if the size is not
  known.
  
   The built-in functions are optimized into the normal string functions
! like 'memcpy' if the last argument is '(size_t) -1' or if it is known at
  compile time that the destination object will not be overflowed.  If the
  compiler can determine at compile time that the object will always be
  overflowed, it issues a warning.
--- 53033,53064 ----
  
   -- Built-in Function: size_t __builtin_dynamic_object_size (const void
            * PTR, int TYPE)
!      This builtin is similar to â€˜__builtin_object_sizeâ€™ in that it
       returns a number of bytes from PTR to the end of the object PTR
       pointer points to, except that the size returned may not be a
       constant.  This results in successful evaluation of object size
       estimates in a wider range of use cases and can be more precise
!      than â€˜__builtin_object_sizeâ€™, but it incurs a performance penalty
       since it may add a runtime overhead on size computation.  Semantics
       of TYPE as well as return values in case it is not possible to
       determine which objects PTR points to at compile time are the same
!      as in the case of â€˜__builtin_object_sizeâ€™.
  
  7.10.2 Object Size Checking and Source Fortification
  ----------------------------------------------------
  
! Hardening of function calls using the â€˜_FORTIFY_SOURCEâ€™ macro is one of
  the key uses of the object size checking built-in functions.  To make
  implementation of these features more convenient and improve
  optimization and diagnostics, there are built-in functions added for
! many common string operation functions, e.g., for â€˜memcpyâ€™
! â€˜__builtin___memcpy_chkâ€™ built-in is provided.  This built-in has an
  additional last argument, which is the number of bytes remaining in the
! object the DEST argument points to or â€˜(size_t) -1â€™ if the size is not
  known.
  
   The built-in functions are optimized into the normal string functions
! like â€˜memcpyâ€™ if the last argument is â€˜(size_t) -1â€™ or if it is known at
  compile time that the destination object will not be overflowed.  If the
  compiler can determine at compile time that the object will always be
  overflowed, it issues a warning.
*************** overflowed, it issues a warning.
*** 53078,53086 ****
          will abort the program at run time.  */
       memcpy (&buf[6], "abcde", 5);
  
!  Such built-in functions are provided for 'memcpy', 'mempcpy',
! 'memmove', 'memset', 'strcpy', 'stpcpy', 'strncpy', 'strcat' and
! 'strncat'.
  
  7.10.2.1 Formatted Output Function Checking
  ...........................................
--- 53087,53095 ----
          will abort the program at run time.  */
       memcpy (&buf[6], "abcde", 5);
  
!  Such built-in functions are provided for â€˜memcpyâ€™, â€˜mempcpyâ€™,
! â€˜memmoveâ€™, â€˜memsetâ€™, â€˜strcpyâ€™, â€˜stpcpyâ€™, â€˜strncpyâ€™, â€˜strcatâ€™ and
! â€˜strncatâ€™.
  
  7.10.2.1 Formatted Output Function Checking
  ...........................................
*************** overflowed, it issues a warning.
*** 53094,53116 ****
   -- Built-in Function: int __builtin___vsnprintf_chk (char *S, size_t
            MAXLEN, int FLAG, size_t OS, const char *FMT, va_list AP)
  
!      The added FLAG argument is passed unchanged to '__sprintf_chk' etc.
       functions and can contain implementation specific flags on what
       additional security measures the checking function might take, such
!      as handling '%n' differently.
  
       The OS argument is the object size S points to, like in the other
       built-in functions.  There is a small difference in the behavior
!      though, if OS is '(size_t) -1', the built-in functions are
       optimized into the non-checking functions only if FLAG is 0,
       otherwise the checking function is called with OS argument set to
!      '(size_t) -1'.
  
       In addition to this, there are checking built-in functions
!      '__builtin___printf_chk', '__builtin___vprintf_chk',
!      '__builtin___fprintf_chk' and '__builtin___vfprintf_chk'.  These
       have just one additional argument, FLAG, right before format string
!      FMT.  If the compiler is able to optimize them to 'fputc' etc.
       functions, it does, otherwise the checking function is called and
       the FLAG argument passed to it.
  
--- 53103,53125 ----
   -- Built-in Function: int __builtin___vsnprintf_chk (char *S, size_t
            MAXLEN, int FLAG, size_t OS, const char *FMT, va_list AP)
  
!      The added FLAG argument is passed unchanged to â€˜__sprintf_chkâ€™ etc.
       functions and can contain implementation specific flags on what
       additional security measures the checking function might take, such
!      as handling â€˜%nâ€™ differently.
  
       The OS argument is the object size S points to, like in the other
       built-in functions.  There is a small difference in the behavior
!      though, if OS is â€˜(size_t) -1â€™, the built-in functions are
       optimized into the non-checking functions only if FLAG is 0,
       otherwise the checking function is called with OS argument set to
!      â€˜(size_t) -1â€™.
  
       In addition to this, there are checking built-in functions
!      â€˜__builtin___printf_chkâ€™, â€˜__builtin___vprintf_chkâ€™,
!      â€˜__builtin___fprintf_chkâ€™ and â€˜__builtin___vfprintf_chkâ€™.  These
       have just one additional argument, FLAG, right before format string
!      FMT.  If the compiler is able to optimize them to â€˜fputcâ€™ etc.
       functions, it does, otherwise the checking function is called and
       the FLAG argument passed to it.
  
*************** File: gcc.info,  Node: New/Delete Builti
*** 53120,53134 ****
  7.11 Built-in functions for C++ allocations and deallocations
  =============================================================
  
! GNU C++ provides builtins that are equivalent to calling '::operator
! new' or '::operator delete' with the same arguments.  It is an error if
! the selected '::operator new' or '::operator delete' overload is not a
  replaceable global operator.  For optimization purposes, calls to pairs
  of these builtins can be omitted if access to the allocation is
  optimized out, or could be replaced with an implementation-provided
  buffer on the stack, or multiple allocation calls can be merged into a
  single allocation.  In C++ such optimizations are normally allowed just
! for calls to such replaceable global operators from 'new' and 'delete'
  expressions.
  
       void foo () {
--- 53129,53143 ----
  7.11 Built-in functions for C++ allocations and deallocations
  =============================================================
  
! GNU C++ provides builtins that are equivalent to calling â€˜::operator
! newâ€™ or â€˜::operator deleteâ€™ with the same arguments.  It is an error if
! the selected â€˜::operator newâ€™ or â€˜::operator deleteâ€™ overload is not a
  replaceable global operator.  For optimization purposes, calls to pairs
  of these builtins can be omitted if access to the allocation is
  optimized out, or could be replaced with an implementation-provided
  buffer on the stack, or multiple allocation calls can be merged into a
  single allocation.  In C++ such optimizations are normally allowed just
! for calls to such replaceable global operators from â€˜newâ€™ and â€˜deleteâ€™
  expressions.
  
       void foo () {
*************** expressions.
*** 53145,53156 ****
  
   -- Built-in Function: void * __builtin_operator_new (std::size_t SIZE,
            ...)
!      This is the built-in form of 'operator new'.  It accepts the same
       argument forms as a "usual allocation function", as described in
       the C++ standard.
  
   -- Built-in Function: void __builtin_operator_delete (void * PTR, ...)
!      This is the built-in form of 'operator delete'.  It accepts the
       same argument forms as a "usual deallocation function", as
       described in the C++ standard.
  
--- 53154,53165 ----
  
   -- Built-in Function: void * __builtin_operator_new (std::size_t SIZE,
            ...)
!      This is the built-in form of â€˜operator newâ€™.  It accepts the same
       argument forms as a "usual allocation function", as described in
       the C++ standard.
  
   -- Built-in Function: void __builtin_operator_delete (void * PTR, ...)
!      This is the built-in form of â€˜operator deleteâ€™.  It accepts the
       same argument forms as a "usual deallocation function", as
       described in the C++ standard.
  
*************** GCC.
*** 53165,53207 ****
  
   -- Built-in Function: bool __builtin_has_attribute (TYPE-OR-EXPRESSION,
            ATTRIBUTE)
!      The '__builtin_has_attribute' function evaluates to an integer
!      constant expression equal to 'true' if the symbol or type
       referenced by the TYPE-OR-EXPRESSION argument has been declared
       with the ATTRIBUTE referenced by the second argument.  For an
       TYPE-OR-EXPRESSION argument that does not reference a symbol, since
       attributes do not apply to expressions the built-in consider the
       type of the argument.  Neither argument is evaluated.  The
       TYPE-OR-EXPRESSION argument is subject to the same restrictions as
!      the argument to 'typeof' (*note Typeof::).  The ATTRIBUTE argument
       is an attribute name optionally followed by a comma-separated list
       of arguments enclosed in parentheses.  Both forms of attribute
       names--with and without double leading and trailing
       underscores--are recognized.  *Note Attribute Syntax::, for
       details.  When no attribute arguments are specified for an
       attribute that expects one or more arguments the function returns
!      'true' if TYPE-OR-EXPRESSION has been declared with the attribute
       regardless of the attribute argument values.  Arguments provided
       for an attribute that expects some are validated and matched up to
!      the provided number.  The function returns 'true' if all provided
       arguments match.  For example, the first call to the function below
!      evaluates to 'true' because 'x' is declared with the 'aligned'
!      attribute but the second call evaluates to 'false' because 'x' is
!      declared 'aligned (8)' and not 'aligned (4)'.
  
            __attribute__ ((aligned (8))) int x;
            _Static_assert (__builtin_has_attribute (x, aligned), "aligned");
            _Static_assert (!__builtin_has_attribute (x, aligned (4)), "aligned (4)");
  
!      Due to a limitation the '__builtin_has_attribute' function returns
!      'false' for the 'mode' attribute even if the type or variable
       referenced by the TYPE-OR-EXPRESSION argument was declared with
       one.  The function is also not supported with labels, and in C with
       enumerators.
  
!      Note that unlike the '__has_attribute' preprocessor operator which
!      is suitable for use in '#if' preprocessing directives
!      '__builtin_has_attribute' is an intrinsic function that is not
       recognized in such contexts.
  
   -- Built-in Function: TYPE __builtin_speculation_safe_value (TYPE VAL,
--- 53174,53216 ----
  
   -- Built-in Function: bool __builtin_has_attribute (TYPE-OR-EXPRESSION,
            ATTRIBUTE)
!      The â€˜__builtin_has_attributeâ€™ function evaluates to an integer
!      constant expression equal to â€˜trueâ€™ if the symbol or type
       referenced by the TYPE-OR-EXPRESSION argument has been declared
       with the ATTRIBUTE referenced by the second argument.  For an
       TYPE-OR-EXPRESSION argument that does not reference a symbol, since
       attributes do not apply to expressions the built-in consider the
       type of the argument.  Neither argument is evaluated.  The
       TYPE-OR-EXPRESSION argument is subject to the same restrictions as
!      the argument to â€˜typeofâ€™ (*note Typeof::).  The ATTRIBUTE argument
       is an attribute name optionally followed by a comma-separated list
       of arguments enclosed in parentheses.  Both forms of attribute
       names--with and without double leading and trailing
       underscores--are recognized.  *Note Attribute Syntax::, for
       details.  When no attribute arguments are specified for an
       attribute that expects one or more arguments the function returns
!      â€˜trueâ€™ if TYPE-OR-EXPRESSION has been declared with the attribute
       regardless of the attribute argument values.  Arguments provided
       for an attribute that expects some are validated and matched up to
!      the provided number.  The function returns â€˜trueâ€™ if all provided
       arguments match.  For example, the first call to the function below
!      evaluates to â€˜trueâ€™ because â€˜xâ€™ is declared with the â€˜alignedâ€™
!      attribute but the second call evaluates to â€˜falseâ€™ because â€˜xâ€™ is
!      declared â€˜aligned (8)â€™ and not â€˜aligned (4)â€™.
  
            __attribute__ ((aligned (8))) int x;
            _Static_assert (__builtin_has_attribute (x, aligned), "aligned");
            _Static_assert (!__builtin_has_attribute (x, aligned (4)), "aligned (4)");
  
!      Due to a limitation the â€˜__builtin_has_attributeâ€™ function returns
!      â€˜falseâ€™ for the â€˜modeâ€™ attribute even if the type or variable
       referenced by the TYPE-OR-EXPRESSION argument was declared with
       one.  The function is also not supported with labels, and in C with
       enumerators.
  
!      Note that unlike the â€˜__has_attributeâ€™ preprocessor operator which
!      is suitable for use in â€˜#ifâ€™ preprocessing directives
!      â€˜__builtin_has_attributeâ€™ is an intrinsic function that is not
       recognized in such contexts.
  
   -- Built-in Function: TYPE __builtin_speculation_safe_value (TYPE VAL,
*************** GCC.
*** 53214,53224 ****
         1. If the CPU is not speculatively executing the code, then VAL
            is returned.
         2. If the CPU is executing speculatively then either:
!              * The function may cause execution to pause until it is
                 known that the code is no-longer being executed
                 speculatively (in which case VAL can be returned, as
                 above); or
!              * The function may use target-dependent speculation
                 tracking state to cause FAILVAL to be returned when it is
                 known that speculative execution has incorrectly
                 predicted a conditional branch operation.
--- 53223,53233 ----
         1. If the CPU is not speculatively executing the code, then VAL
            is returned.
         2. If the CPU is executing speculatively then either:
!              â€¢ The function may cause execution to pause until it is
                 known that the code is no-longer being executed
                 speculatively (in which case VAL can be returned, as
                 above); or
!              â€¢ The function may use target-dependent speculation
                 tracking state to cause FAILVAL to be returned when it is
                 known that speculative execution has incorrectly
                 predicted a conditional branch operation.
*************** GCC.
*** 53227,53233 ****
       omitted.
  
       GCC defines the preprocessor macro
!      '__HAVE_BUILTIN_SPECULATION_SAFE_VALUE' for targets that have been
       updated to support this builtin.
  
       The built-in function can be used where a variable appears to be
--- 53236,53242 ----
       omitted.
  
       GCC defines the preprocessor macro
!      â€˜__HAVE_BUILTIN_SPECULATION_SAFE_VALUEâ€™ for targets that have been
       updated to support this builtin.
  
       The built-in function can be used where a variable appears to be
*************** GCC.
*** 53243,53251 ****
              return 0;
            }
  
!      If the function is called repeatedly with 'untrusted_index' less
       than the limit of 500, then a branch predictor will learn that the
!      block of code that returns a value stored in 'array' will be
       executed.  If the function is subsequently called with an
       out-of-range value it will still try to execute that block of code
       first until the CPU determines that the prediction was incorrect
--- 53252,53260 ----
              return 0;
            }
  
!      If the function is called repeatedly with â€˜untrusted_indexâ€™ less
       than the limit of 500, then a branch predictor will learn that the
!      block of code that returns a value stored in â€˜arrayâ€™ will be
       executed.  If the function is subsequently called with an
       out-of-range value it will still try to execute that block of code
       first until the CPU determines that the prediction was incorrect
*************** GCC.
*** 53267,53273 ****
       The built-in function will either cause execution to stall until
       the conditional branch has been fully resolved, or it may permit
       speculative execution to continue, but using 0 instead of
!      'untrusted_value' if that exceeds the limit.
  
       If accessing any memory location is potentially unsafe when
       speculative execution is incorrect, then the code can be rewritten
--- 53276,53282 ----
       The built-in function will either cause execution to stall until
       the conditional branch has been fully resolved, or it may permit
       speculative execution to continue, but using 0 instead of
!      â€˜untrusted_valueâ€™ if that exceeds the limit.
  
       If accessing any memory location is potentially unsafe when
       speculative execution is incorrect, then the code can be rewritten
*************** GCC.
*** 53281,53291 ****
              return 0;
            }
  
!      which will cause a 'NULL' pointer to be used for the unsafe case.
  
   -- Built-in Function: int __builtin_types_compatible_p (TYPE1, TYPE2)
  
!      You can use the built-in function '__builtin_types_compatible_p' to
       determine whether two types are the same.
  
       This built-in function returns 1 if the unqualified versions of the
--- 53290,53300 ----
              return 0;
            }
  
!      which will cause a â€˜NULLâ€™ pointer to be used for the unsafe case.
  
   -- Built-in Function: int __builtin_types_compatible_p (TYPE1, TYPE2)
  
!      You can use the built-in function â€˜__builtin_types_compatible_pâ€™ to
       determine whether two types are the same.
  
       This built-in function returns 1 if the unqualified versions of the
*************** GCC.
*** 53293,53313 ****
       compatible, 0 otherwise.  The result of this built-in function can
       be used in integer constant expressions.
  
!      This built-in function ignores top level qualifiers (e.g., 'const',
!      'volatile').  For example, 'int' is equivalent to 'const int'.
  
!      The type 'int[]' and 'int[5]' are compatible.  On the other hand,
!      'int' and 'char *' are not compatible, even if the size of their
       types, on the particular architecture are the same.  Also, the
       amount of pointer indirection is taken into account when
!      determining similarity.  Consequently, 'short *' is not similar to
!      'short **'.  Furthermore, two types that are typedefed are
       considered compatible if their underlying types are compatible.
  
!      An 'enum' type is not considered to be compatible with another
!      'enum' type even if both are compatible with the same integer type;
!      this is what the C standard specifies.  For example, 'enum {foo,
!      bar}' is not similar to 'enum {hot, dog}'.
  
       You typically use this function in code whose execution varies
       depending on the arguments' types.  For example:
--- 53302,53322 ----
       compatible, 0 otherwise.  The result of this built-in function can
       be used in integer constant expressions.
  
!      This built-in function ignores top level qualifiers (e.g., â€˜constâ€™,
!      â€˜volatileâ€™).  For example, â€˜intâ€™ is equivalent to â€˜const intâ€™.
  
!      The type â€˜int[]â€™ and â€˜int[5]â€™ are compatible.  On the other hand,
!      â€˜intâ€™ and â€˜char *â€™ are not compatible, even if the size of their
       types, on the particular architecture are the same.  Also, the
       amount of pointer indirection is taken into account when
!      determining similarity.  Consequently, â€˜short *â€™ is not similar to
!      â€˜short **â€™.  Furthermore, two types that are typedefed are
       considered compatible if their underlying types are compatible.
  
!      An â€˜enumâ€™ type is not considered to be compatible with another
!      â€˜enumâ€™ type even if both are compatible with the same integer type;
!      this is what the C standard specifies.  For example, â€˜enum {foo,
!      bar}â€™ is not similar to â€˜enum {hot, dog}â€™.
  
       You typically use this function in code whose execution varies
       depending on the arguments' types.  For example:
*************** GCC.
*** 53331,53348 ****
   -- Built-in Function: TYPE __builtin_choose_expr (CONST_EXP, EXP1,
            EXP2)
  
!      You can use the built-in function '__builtin_choose_expr' to
       evaluate code depending on the value of a constant expression.
       This built-in function returns EXP1 if CONST_EXP, which is an
       integer constant expression, is nonzero.  Otherwise it returns
       EXP2.
  
!      Like the '? :' operator, this built-in function does not evaluate
       the expression that is not chosen.  For example, if CONST_EXP
!      evaluates to 'true', EXP2 is not evaluated even if it has side
!      effects.  On the other hand, '__builtin_choose_expr' differs from
!      '? :' in that the first operand must be a compile-time constant,
!      and the other operands are not subject to the '? :' type
       constraints and promotions.
  
       This built-in function can return an lvalue if the chosen argument
--- 53340,53357 ----
   -- Built-in Function: TYPE __builtin_choose_expr (CONST_EXP, EXP1,
            EXP2)
  
!      You can use the built-in function â€˜__builtin_choose_exprâ€™ to
       evaluate code depending on the value of a constant expression.
       This built-in function returns EXP1 if CONST_EXP, which is an
       integer constant expression, is nonzero.  Otherwise it returns
       EXP2.
  
!      Like the â€˜? :â€™ operator, this built-in function does not evaluate
       the expression that is not chosen.  For example, if CONST_EXP
!      evaluates to â€˜trueâ€™, EXP2 is not evaluated even if it has side
!      effects.  On the other hand, â€˜__builtin_choose_exprâ€™ differs from
!      â€˜? :â€™ in that the first operand must be a compile-time constant,
!      and the other operands are not subject to the â€˜? :â€™ type
       constraints and promotions.
  
       This built-in function can return an lvalue if the chosen argument
*************** GCC.
*** 53372,53404 ****
  
   -- Built-in Function: TYPE __builtin_tgmath (FUNCTIONS, ARGUMENTS)
  
!      The built-in function '__builtin_tgmath', available only for C and
       Objective-C, calls a function determined according to the rules of
!      '<tgmath.h>' macros.  It is intended to be used in implementations
       of that header, so that expansions of macros from that header only
       expand each of their arguments once, to avoid problems when calls
       to such macros are nested inside the arguments of other calls to
       such macros; in addition, it results in better diagnostics for
!      invalid calls to '<tgmath.h>' macros than implementations using
!      other GNU C language features.  For example, the 'pow' type-generic
       macro might be defined as:
  
            #define pow(a, b) __builtin_tgmath (powf, pow, powl, \
                                                cpowf, cpow, cpowl, a, b)
  
!      The arguments to '__builtin_tgmath' are at least two pointers to
       functions, followed by the arguments to the type-generic macro
       (which will be passed as arguments to the selected function).  All
       the pointers to functions must be pointers to prototyped functions,
       none of which may have variable arguments, and all of which must
       have the same number of parameters; the number of parameters of the
!      first function determines how many arguments to '__builtin_tgmath'
       are interpreted as function pointers, and how many as the arguments
       to the called function.
  
       The types of the specified functions must all be different, but
       related to each other in the same way as a set of functions that
!      may be selected between by a macro in '<tgmath.h>'.  This means
       that the functions are parameterized by a floating-point type T,
       different for each such function.  The function return types may
       all be the same type, or they may be T for each function, or they
--- 53381,53413 ----
  
   -- Built-in Function: TYPE __builtin_tgmath (FUNCTIONS, ARGUMENTS)
  
!      The built-in function â€˜__builtin_tgmathâ€™, available only for C and
       Objective-C, calls a function determined according to the rules of
!      â€˜<tgmath.h>â€™ macros.  It is intended to be used in implementations
       of that header, so that expansions of macros from that header only
       expand each of their arguments once, to avoid problems when calls
       to such macros are nested inside the arguments of other calls to
       such macros; in addition, it results in better diagnostics for
!      invalid calls to â€˜<tgmath.h>â€™ macros than implementations using
!      other GNU C language features.  For example, the â€˜powâ€™ type-generic
       macro might be defined as:
  
            #define pow(a, b) __builtin_tgmath (powf, pow, powl, \
                                                cpowf, cpow, cpowl, a, b)
  
!      The arguments to â€˜__builtin_tgmathâ€™ are at least two pointers to
       functions, followed by the arguments to the type-generic macro
       (which will be passed as arguments to the selected function).  All
       the pointers to functions must be pointers to prototyped functions,
       none of which may have variable arguments, and all of which must
       have the same number of parameters; the number of parameters of the
!      first function determines how many arguments to â€˜__builtin_tgmathâ€™
       are interpreted as function pointers, and how many as the arguments
       to the called function.
  
       The types of the specified functions must all be different, but
       related to each other in the same way as a set of functions that
!      may be selected between by a macro in â€˜<tgmath.h>â€™.  This means
       that the functions are parameterized by a floating-point type T,
       different for each such function.  The function return types may
       all be the same type, or they may be T for each function, or they
*************** GCC.
*** 53409,53415 ****
       for at least one parameter position), or may be the real type
       corresponding to T for each function.
  
!      The standard rules for '<tgmath.h>' macros are used to find a
       common type U from the types of the arguments for parameters whose
       types vary between the functions; complex integer types (a GNU
       extension) are treated like the complex type corresponding to the
--- 53418,53424 ----
       for at least one parameter position), or may be the real type
       corresponding to T for each function.
  
!      The standard rules for â€˜<tgmath.h>â€™ macros are used to find a
       common type U from the types of the arguments for parameters whose
       types vary between the functions; complex integer types (a GNU
       extension) are treated like the complex type corresponding to the
*************** GCC.
*** 53425,53431 ****
       error if there is no such function.
  
   -- Built-in Function: int __builtin_constant_p (EXP)
!      You can use the built-in function '__builtin_constant_p' to
       determine if the expression EXP is known to be constant at compile
       time and hence that GCC can perform constant-folding on expressions
       involving that value.  The argument of the function is the
--- 53434,53440 ----
       error if there is no such function.
  
   -- Built-in Function: int __builtin_constant_p (EXP)
!      You can use the built-in function â€˜__builtin_constant_pâ€™ to
       determine if the expression EXP is known to be constant at compile
       time and hence that GCC can perform constant-folding on expressions
       involving that value.  The argument of the function is the
*************** GCC.
*** 53453,53461 ****
       never returns 1 when you call the inline function with a string
       constant or compound literal (*note Compound Literals::) and does
       not return 1 when you pass a constant numeric value to the inline
!      function unless you specify the '-O' option.
  
!      You may also use '__builtin_constant_p' in initializers for static
       data.  For instance, you can write
  
            static const int table[] = {
--- 53462,53470 ----
       never returns 1 when you call the inline function with a string
       constant or compound literal (*note Compound Literals::) and does
       not return 1 when you pass a constant numeric value to the inline
!      function unless you specify the â€˜-Oâ€™ option.
  
!      You may also use â€˜__builtin_constant_pâ€™ in initializers for static
       data.  For instance, you can write
  
            static const int table[] = {
*************** GCC.
*** 53465,53500 ****
  
       This is an acceptable initializer even if EXPRESSION is not a
       constant expression, including the case where
!      '__builtin_constant_p' returns 1 because EXPRESSION can be folded
       to a constant but EXPRESSION contains operands that are not
!      otherwise permitted in a static initializer (for example, '0 && foo
!      ()').  GCC must be more conservative about evaluating the built-in
       in this case, because it has no opportunity to perform
       optimization.
  
   -- Built-in Function: bool __builtin_is_constant_evaluated (void)
!      The '__builtin_is_constant_evaluated' function is available only in
       C++.  The built-in is intended to be used by implementations of the
!      'std::is_constant_evaluated' C++ function.  Programs should make
       use of the latter function rather than invoking the built-in
       directly.
  
       The main use case of the built-in is to determine whether a
!      'constexpr' function is being called in a 'constexpr' context.  A
       call to the function evaluates to a core constant expression with
!      the value 'true' if and only if it occurs within the evaluation of
       an expression or conversion that is manifestly constant-evaluated
       as defined in the C++ standard.  Manifestly constant-evaluated
!      contexts include constant-expressions, the conditions of 'constexpr
!      if' statements, constraint-expressions, and initializers of
       variables usable in constant expressions.  For more details refer
       to the latest revision of the C++ standard.
  
   -- Built-in Function: TYPE __builtin_counted_by_ref (PTR)
!      The built-in function '__builtin_counted_by_ref' checks whether the
       array object pointed by the pointer PTR has another object
       associated with it that represents the number of elements in the
!      array object through the 'counted_by' attribute (i.e.  the
       counted-by object).  If so, returns a pointer to the corresponding
       counted-by object.  If such counted-by object does not exist,
       returns a null pointer.
--- 53474,53509 ----
  
       This is an acceptable initializer even if EXPRESSION is not a
       constant expression, including the case where
!      â€˜__builtin_constant_pâ€™ returns 1 because EXPRESSION can be folded
       to a constant but EXPRESSION contains operands that are not
!      otherwise permitted in a static initializer (for example, â€˜0 && foo
!      ()â€™).  GCC must be more conservative about evaluating the built-in
       in this case, because it has no opportunity to perform
       optimization.
  
   -- Built-in Function: bool __builtin_is_constant_evaluated (void)
!      The â€˜__builtin_is_constant_evaluatedâ€™ function is available only in
       C++.  The built-in is intended to be used by implementations of the
!      â€˜std::is_constant_evaluatedâ€™ C++ function.  Programs should make
       use of the latter function rather than invoking the built-in
       directly.
  
       The main use case of the built-in is to determine whether a
!      â€˜constexprâ€™ function is being called in a â€˜constexprâ€™ context.  A
       call to the function evaluates to a core constant expression with
!      the value â€˜trueâ€™ if and only if it occurs within the evaluation of
       an expression or conversion that is manifestly constant-evaluated
       as defined in the C++ standard.  Manifestly constant-evaluated
!      contexts include constant-expressions, the conditions of â€˜constexpr
!      ifâ€™ statements, constraint-expressions, and initializers of
       variables usable in constant expressions.  For more details refer
       to the latest revision of the C++ standard.
  
   -- Built-in Function: TYPE __builtin_counted_by_ref (PTR)
!      The built-in function â€˜__builtin_counted_by_refâ€™ checks whether the
       array object pointed by the pointer PTR has another object
       associated with it that represents the number of elements in the
!      array object through the â€˜counted_byâ€™ attribute (i.e.  the
       counted-by object).  If so, returns a pointer to the corresponding
       counted-by object.  If such counted-by object does not exist,
       returns a null pointer.
*************** GCC.
*** 53530,53539 ****
  
            __builtin_counted_by_ref (q->array)
  
!      returns a null pointer to 'void'.
  
   -- Built-in Function: void __builtin_clear_padding (PTR)
!      The built-in function '__builtin_clear_padding' function clears
       padding bits inside of the object representation of object pointed
       by PTR, which has to be a pointer.  The value representation of the
       object is not affected.  The type of the object is assumed to be
--- 53539,53548 ----
  
            __builtin_counted_by_ref (q->array)
  
!      returns a null pointer to â€˜voidâ€™.
  
   -- Built-in Function: void __builtin_clear_padding (PTR)
!      The built-in function â€˜__builtin_clear_paddingâ€™ function clears
       padding bits inside of the object representation of object pointed
       by PTR, which has to be a pointer.  The value representation of the
       object is not affected.  The type of the object is assumed to be
*************** GCC.
*** 53553,53575 ****
       derived class.
  
   -- Built-in Function: TYPE __builtin_bit_cast (TYPE, ARG)
!      The '__builtin_bit_cast' function is available only in C++.  The
       built-in is intended to be used by implementations of the
!      'std::bit_cast' C++ template function.  Programs should make use of
       the latter function rather than invoking the built-in directly.
  
       This built-in function allows reinterpreting the bits of the ARG
       argument as if it had type TYPE.  TYPE and the type of the ARG
       argument need to be trivially copyable types with the same size.
       When manifestly constant-evaluated, it performs extra diagnostics
!      required for 'std::bit_cast' and returns a constant expression if
       ARG is a constant expression.  For more details refer to the latest
       revision of the C++ standard.
  
   -- Built-in Function: long __builtin_expect (long EXP, long C)
!      You may use '__builtin_expect' to provide the compiler with branch
       prediction information.  In general, you should prefer to use
!      actual profile feedback for this ('-fprofile-arcs'), as programmers
       are notoriously bad at predicting how their programs actually
       perform.  However, there are applications in which this data is
       hard to collect.
--- 53562,53584 ----
       derived class.
  
   -- Built-in Function: TYPE __builtin_bit_cast (TYPE, ARG)
!      The â€˜__builtin_bit_castâ€™ function is available only in C++.  The
       built-in is intended to be used by implementations of the
!      â€˜std::bit_castâ€™ C++ template function.  Programs should make use of
       the latter function rather than invoking the built-in directly.
  
       This built-in function allows reinterpreting the bits of the ARG
       argument as if it had type TYPE.  TYPE and the type of the ARG
       argument need to be trivially copyable types with the same size.
       When manifestly constant-evaluated, it performs extra diagnostics
!      required for â€˜std::bit_castâ€™ and returns a constant expression if
       ARG is a constant expression.  For more details refer to the latest
       revision of the C++ standard.
  
   -- Built-in Function: long __builtin_expect (long EXP, long C)
!      You may use â€˜__builtin_expectâ€™ to provide the compiler with branch
       prediction information.  In general, you should prefer to use
!      actual profile feedback for this (â€˜-fprofile-arcsâ€™), as programmers
       are notoriously bad at predicting how their programs actually
       perform.  However, there are applications in which this data is
       hard to collect.
*************** GCC.
*** 53581,53587 ****
            if (__builtin_expect (x, 0))
              foo ();
  
!      indicates that we do not expect to call 'foo', since we expect 'x'
       to be zero.  Since you are limited to integral expressions for EXP,
       you should use constructions such as
  
--- 53590,53596 ----
            if (__builtin_expect (x, 0))
              foo ();
  
!      indicates that we do not expect to call â€˜fooâ€™, since we expect â€˜xâ€™
       to be zero.  Since you are limited to integral expressions for EXP,
       you should use constructions such as
  
*************** GCC.
*** 53591,53601 ****
       when testing pointer or floating-point values.
  
       For the purposes of branch prediction optimizations, the
!      probability that a '__builtin_expect' expression is 'true' is
!      controlled by GCC's 'builtin-expect-probability' parameter, which
       defaults to 90%.
  
!      You can also use '__builtin_expect_with_probability' to explicitly
       assign a probability value to individual expressions.  If the
       built-in is used in a loop construct, the provided probability will
       influence the expected number of iterations made by loop
--- 53600,53610 ----
       when testing pointer or floating-point values.
  
       For the purposes of branch prediction optimizations, the
!      probability that a â€˜__builtin_expectâ€™ expression is â€˜trueâ€™ is
!      controlled by GCC's â€˜builtin-expect-probabilityâ€™ parameter, which
       defaults to 90%.
  
!      You can also use â€˜__builtin_expect_with_probabilityâ€™ to explicitly
       assign a probability value to individual expressions.  If the
       built-in is used in a loop construct, the provided probability will
       influence the expected number of iterations made by loop
*************** GCC.
*** 53604,53610 ****
   -- Built-in Function: long __builtin_expect_with_probability
       (long EXP, long C, double PROBABILITY)
  
!      This function has the same semantics as '__builtin_expect', but the
       caller provides the expected probability that EXP == C.  The last
       argument, PROBABILITY, is a floating-point value in the range 0.0
       to 1.0, inclusive.  The PROBABILITY argument must be a constant
--- 53613,53619 ----
   -- Built-in Function: long __builtin_expect_with_probability
       (long EXP, long C, double PROBABILITY)
  
!      This function has the same semantics as â€˜__builtin_expectâ€™, but the
       caller provides the expected probability that EXP == C.  The last
       argument, PROBABILITY, is a floating-point value in the range 0.0
       to 1.0, inclusive.  The PROBABILITY argument must be a constant
*************** GCC.
*** 53614,53633 ****
       This function causes the program to exit abnormally.  GCC
       implements this function by using a target-dependent mechanism
       (such as intentionally executing an illegal instruction) or by
!      calling 'abort'.  The mechanism used may vary from release to
       release so you should not rely on any particular implementation.
  
   -- Built-in Function: void __builtin_unreachable (void)
!      If control flow reaches the point of the '__builtin_unreachable',
       the program is undefined.  It is useful in situations where the
       compiler cannot deduce the unreachability of the code.
  
!      One such case is immediately following an 'asm' statement that
       either never terminates, or one that transfers control elsewhere
       and never returns.  In this example, without the
!      '__builtin_unreachable', GCC issues a warning that control reaches
       the end of a non-void function.  It also generates code to return
!      after the 'asm'.
  
            int f (int c, int v)
            {
--- 53623,53642 ----
       This function causes the program to exit abnormally.  GCC
       implements this function by using a target-dependent mechanism
       (such as intentionally executing an illegal instruction) or by
!      calling â€˜abortâ€™.  The mechanism used may vary from release to
       release so you should not rely on any particular implementation.
  
   -- Built-in Function: void __builtin_unreachable (void)
!      If control flow reaches the point of the â€˜__builtin_unreachableâ€™,
       the program is undefined.  It is useful in situations where the
       compiler cannot deduce the unreachability of the code.
  
!      One such case is immediately following an â€˜asmâ€™ statement that
       either never terminates, or one that transfers control elsewhere
       and never returns.  In this example, without the
!      â€˜__builtin_unreachableâ€™, GCC issues a warning that control reaches
       the end of a non-void function.  It also generates code to return
!      after the â€˜asmâ€™.
  
            int f (int c, int v)
            {
*************** GCC.
*** 53642,53655 ****
                }
            }
  
!      Because the 'asm' statement unconditionally transfers control out
       of the function, control never reaches the end of the function
!      body.  The '__builtin_unreachable' is in fact unreachable and
       communicates this fact to the compiler.
  
!      Another use for '__builtin_unreachable' is following a call a
       function that never returns but that is not declared
!      '__attribute__((noreturn))', as in this example:
  
            void function_that_never_returns (void);
  
--- 53651,53664 ----
                }
            }
  
!      Because the â€˜asmâ€™ statement unconditionally transfers control out
       of the function, control never reaches the end of the function
!      body.  The â€˜__builtin_unreachableâ€™ is in fact unreachable and
       communicates this fact to the compiler.
  
!      Another use for â€˜__builtin_unreachableâ€™ is following a call a
       function that never returns but that is not declared
!      â€˜__attribute__((noreturn))â€™, as in this example:
  
            void function_that_never_returns (void);
  
*************** GCC.
*** 53671,53693 ****
       expression EXPR with expressions consuming the return value of the
       built-in.  The expression EXPR itself can be reordered, and the
       whole expression EXPR can be reordered with operands after the
!      barrier.  The barrier is relevant when '-fassociative-math' is
       active.
  
            float x0 = a + b - b;
            float x1 = __builtin_assoc_barrier(a + b) - b;
  
!      means that, with '-fassociative-math', 'x0' can be optimized to 'x0
!      = a' but 'x1' cannot.
  
!      It is also relevant when '-ffp-contract=fast' is active; it will
       prevent contraction between expressions.
  
            float x0 = a * b + c;
            float x1 = __builtin_assoc_barrier (a * b) + c;
  
!      means that, with '-ffp-contract=fast', 'x0' may be optimized to use
!      a fused multiply-add instruction but 'x1' cannot.
  
   -- Built-in Function: void * __builtin_assume_aligned (const void *EXP,
            size_t ALIGN, ...)
--- 53680,53702 ----
       expression EXPR with expressions consuming the return value of the
       built-in.  The expression EXPR itself can be reordered, and the
       whole expression EXPR can be reordered with operands after the
!      barrier.  The barrier is relevant when â€˜-fassociative-mathâ€™ is
       active.
  
            float x0 = a + b - b;
            float x1 = __builtin_assoc_barrier(a + b) - b;
  
!      means that, with â€˜-fassociative-mathâ€™, â€˜x0â€™ can be optimized to â€˜x0
!      = aâ€™ but â€˜x1â€™ cannot.
  
!      It is also relevant when â€˜-ffp-contract=fastâ€™ is active; it will
       prevent contraction between expressions.
  
            float x0 = a * b + c;
            float x1 = __builtin_assoc_barrier (a * b) + c;
  
!      means that, with â€˜-ffp-contract=fastâ€™, â€˜x0â€™ may be optimized to use
!      a fused multiply-add instruction but â€˜x1â€™ cannot.
  
   -- Built-in Function: void * __builtin_assume_aligned (const void *EXP,
            size_t ALIGN, ...)
*************** GCC.
*** 53699,53721 ****
  
            void *x = __builtin_assume_aligned (arg, 16);
  
!      means that the compiler can assume 'x', set to 'arg', is at least
       16-byte aligned, while:
  
            void *x = __builtin_assume_aligned (arg, 32, 8);
  
!      means that the compiler can assume for 'x', set to 'arg', that
!      '(char *) x - 8' is 32-byte aligned.
  
   -- Built-in Function: int __builtin_LINE ()
!      This function is the equivalent of the preprocessor '__LINE__'
       macro and returns a constant integer expression that evaluates to
       the line number of the invocation of the built-in.  When used as a
       C++ default argument for a function F, it returns the line number
       of the call to F.
  
   -- Built-in Function: const char * __builtin_FUNCTION ()
!      This function is the equivalent of the '__FUNCTION__' symbol and
       returns an address constant pointing to the name of the function
       from which the built-in was invoked, or the empty string if the
       invocation is not at function scope.  When used as a C++ default
--- 53708,53730 ----
  
            void *x = __builtin_assume_aligned (arg, 16);
  
!      means that the compiler can assume â€˜xâ€™, set to â€˜argâ€™, is at least
       16-byte aligned, while:
  
            void *x = __builtin_assume_aligned (arg, 32, 8);
  
!      means that the compiler can assume for â€˜xâ€™, set to â€˜argâ€™, that
!      â€˜(char *) x - 8â€™ is 32-byte aligned.
  
   -- Built-in Function: int __builtin_LINE ()
!      This function is the equivalent of the preprocessor â€˜__LINE__â€™
       macro and returns a constant integer expression that evaluates to
       the line number of the invocation of the built-in.  When used as a
       C++ default argument for a function F, it returns the line number
       of the call to F.
  
   -- Built-in Function: const char * __builtin_FUNCTION ()
!      This function is the equivalent of the â€˜__FUNCTION__â€™ symbol and
       returns an address constant pointing to the name of the function
       from which the built-in was invoked, or the empty string if the
       invocation is not at function scope.  When used as a C++ default
*************** GCC.
*** 53723,53729 ****
       empty string if the call was not made at function scope.
  
   -- Built-in Function: const char * __builtin_FILE ()
!      This function is the equivalent of the preprocessor '__FILE__'
       macro and returns an address constant pointing to the file name
       containing the invocation of the built-in, or the empty string if
       the invocation is not at function scope.  When used as a C++
--- 53732,53738 ----
       empty string if the call was not made at function scope.
  
   -- Built-in Function: const char * __builtin_FILE ()
!      This function is the equivalent of the preprocessor â€˜__FILE__â€™
       macro and returns an address constant pointing to the file name
       containing the invocation of the built-in, or the empty string if
       the invocation is not at function scope.  When used as a C++
*************** GCC.
*** 53731,53740 ****
       call to F or the empty string if the call was not made at function
       scope.
  
!      For example, in the following, each call to function 'foo' will
!      print a line similar to '"file.c:123: foo: message"' with the name
!      of the file and the line number of the 'printf' call, the name of
!      the function 'foo', followed by the word 'message'.
  
            const char*
            function (const char *func = __builtin_FUNCTION ())
--- 53740,53749 ----
       call to F or the empty string if the call was not made at function
       scope.
  
!      For example, in the following, each call to function â€˜fooâ€™ will
!      print a line similar to â€˜"file.c:123: foo: message"â€™ with the name
!      of the file and the line number of the â€˜printfâ€™ call, the name of
!      the function â€˜fooâ€™, followed by the word â€˜messageâ€™.
  
            const char*
            function (const char *func = __builtin_FUNCTION ())
*************** GCC.
*** 53756,53769 ****
       behavior.
  
       If the target does not require instruction cache flushes,
!      '__builtin___clear_cache' has no effect.  Otherwise either
       instructions are emitted in-line to clear the instruction cache or
!      a call to the '__clear_cache' function in libgcc is made.
  
   -- Built-in Function: void __builtin_prefetch (const void *ADDR, ...)
       This function is used to minimize cache-miss latency by moving data
       into a cache before it is accessed.  You can insert calls to
!      '__builtin_prefetch' into code for which you know addresses of data
       in memory that is likely to be accessed soon.  If the target
       supports them, data prefetch instructions are generated.  If the
       prefetch is done early enough before the access then the data will
--- 53765,53778 ----
       behavior.
  
       If the target does not require instruction cache flushes,
!      â€˜__builtin___clear_cacheâ€™ has no effect.  Otherwise either
       instructions are emitted in-line to clear the instruction cache or
!      a call to the â€˜__clear_cacheâ€™ function in libgcc is made.
  
   -- Built-in Function: void __builtin_prefetch (const void *ADDR, ...)
       This function is used to minimize cache-miss latency by moving data
       into a cache before it is accessed.  You can insert calls to
!      â€˜__builtin_prefetchâ€™ into code for which you know addresses of data
       in memory that is likely to be accessed soon.  If the target
       supports them, data prefetch instructions are generated.  If the
       prefetch is done early enough before the access then the data will
*************** GCC.
*** 53794,53801 ****
  
       Data prefetch does not generate faults if ADDR is invalid, but the
       address expression itself must be valid.  For example, a prefetch
!      of 'p->next' does not fault if 'p->next' is not a valid address,
!      but evaluation faults if 'p' is not a valid address.
  
       If the target does not support data prefetch, the address
       expression is evaluated if it includes side effects but no other
--- 53803,53810 ----
  
       Data prefetch does not generate faults if ADDR is invalid, but the
       address expression itself must be valid.  For example, a prefetch
!      of â€˜p->nextâ€™ does not fault if â€˜p->nextâ€™ is not a valid address,
!      but evaluation faults if â€˜pâ€™ is not a valid address.
  
       If the target does not support data prefetch, the address
       expression is evaluated if it includes side effects but no other
*************** GCC.
*** 53803,53818 ****
  
   -- Built-in Function: int __builtin_classify_type (ARG)
   -- Built-in Function: int __builtin_classify_type (TYPE)
!      The '__builtin_classify_type' returns a small integer with a
       category of ARG argument's type, like void type, integer type,
       enumeral type, boolean type, pointer type, reference type, offset
       type, real type, complex type, function type, method type, record
       type, union type, array type, string type, bit-precise integer
       type, vector type, etc.  When the argument is an expression, for
       backwards compatibility reason the argument is promoted like
!      arguments passed to '...' in varargs function, so some classes are
       never returned in certain languages.  Alternatively, the argument
!      of the built-in function can be a typename, such as the 'typeof'
       specifier.
  
            int a[2];
--- 53812,53827 ----
  
   -- Built-in Function: int __builtin_classify_type (ARG)
   -- Built-in Function: int __builtin_classify_type (TYPE)
!      The â€˜__builtin_classify_typeâ€™ returns a small integer with a
       category of ARG argument's type, like void type, integer type,
       enumeral type, boolean type, pointer type, reference type, offset
       type, real type, complex type, function type, method type, record
       type, union type, array type, string type, bit-precise integer
       type, vector type, etc.  When the argument is an expression, for
       backwards compatibility reason the argument is promoted like
!      arguments passed to â€˜...â€™ in varargs function, so some classes are
       never returned in certain languages.  Alternatively, the argument
!      of the built-in function can be a typename, such as the â€˜typeofâ€™
       specifier.
  
            int a[2];
*************** generate the machine instruction that is
*** 53952,53959 ****
       long __builtin_alpha_zap (long, long);
       long __builtin_alpha_zapnot (long, long);
  
!  The following built-in functions are always with '-mmax' or '-mcpu=CPU'
! where CPU is 'pca56' or later.  They all generate the machine
  instruction that is part of the name.
  
       long __builtin_alpha_pklb (long);
--- 53961,53968 ----
       long __builtin_alpha_zap (long, long);
       long __builtin_alpha_zapnot (long, long);
  
!  The following built-in functions are always with â€˜-mmaxâ€™ or â€˜-mcpu=CPUâ€™
! where CPU is â€˜pca56â€™ or later.  They all generate the machine
  instruction that is part of the name.
  
       long __builtin_alpha_pklb (long);
*************** instruction that is part of the name.
*** 53970,53977 ****
       long __builtin_alpha_maxsw4 (long, long);
       long __builtin_alpha_perr (long, long);
  
!  The following built-in functions are always with '-mcix' or '-mcpu=CPU'
! where CPU is 'ev67' or later.  They all generate the machine instruction
  that is part of the name.
  
       long __builtin_alpha_cttz (long);
--- 53979,53986 ----
       long __builtin_alpha_maxsw4 (long, long);
       long __builtin_alpha_perr (long, long);
  
!  The following built-in functions are always with â€˜-mcixâ€™ or â€˜-mcpu=CPUâ€™
! where CPU is â€˜ev67â€™ or later.  They all generate the machine instruction
  that is part of the name.
  
       long __builtin_alpha_cttz (long);
*************** that is part of the name.
*** 53979,53987 ****
       long __builtin_alpha_ctpop (long);
  
   The following built-in functions are available on systems that use the
! OSF/1 PALcode.  Normally they invoke the 'rduniq' and 'wruniq' PAL
! calls, but when invoked with '-mtls-kernel', they invoke 'rdval' and
! 'wrval'.
  
       void *__builtin_thread_pointer (void);
       void __builtin_set_thread_pointer (void *);
--- 53988,53996 ----
       long __builtin_alpha_ctpop (long);
  
   The following built-in functions are available on systems that use the
! OSF/1 PALcode.  Normally they invoke the â€˜rduniqâ€™ and â€˜wruniqâ€™ PAL
! calls, but when invoked with â€˜-mtls-kernelâ€™, they invoke â€˜rdvalâ€™ and
! â€˜wrvalâ€™.
  
       void *__builtin_thread_pointer (void);
       void __builtin_set_thread_pointer (void *);
*************** generated.
*** 54033,54039 ****
            mov  rREGNO, VAL
  
   -- Built-in Function: int __builtin_arc_divaw (int A, int B)
!      Only available if either '-mcpu=ARC700' or '-meA' is set.
       Generates:
            divaw  DEST, A, B
       where the value in DEST will be the result returned from the
--- 54042,54048 ----
            mov  rREGNO, VAL
  
   -- Built-in Function: int __builtin_arc_divaw (int A, int B)
!      Only available if either â€˜-mcpu=ARC700â€™ or â€˜-meAâ€™ is set.
       Generates:
            divaw  DEST, A, B
       where the value in DEST will be the result returned from the
*************** generated.
*** 54051,54062 ****
       built-in.
  
   -- Built-in Function: void __builtin_arc_mul64 (int A, int B)
!      Only available with '-mmul64'.  Generates:
            mul64  A, B
  
   -- Built-in Function: void __builtin_arc_mulu64 (unsigned int A,
            unsigned int B)
!      Only available with '-mmul64'.  Generates:
            mulu64  A, B
  
   -- Built-in Function: void __builtin_arc_nop (void)
--- 54060,54071 ----
       built-in.
  
   -- Built-in Function: void __builtin_arc_mul64 (int A, int B)
!      Only available with â€˜-mmul64â€™.  Generates:
            mul64  A, B
  
   -- Built-in Function: void __builtin_arc_mulu64 (unsigned int A,
            unsigned int B)
!      Only available with â€˜-mmul64â€™.  Generates:
            mulu64  A, B
  
   -- Built-in Function: void __builtin_arc_nop (void)
*************** generated.
*** 54064,54078 ****
            nop
  
   -- Built-in Function: int __builtin_arc_norm (int SRC)
!      Only valid if the 'norm' instruction is available through the
!      '-mnorm' option or by default with '-mcpu=ARC700'.  Generates:
            norm  DEST, SRC
       Where the value in DEST will be the result returned from the
       built-in.
  
   -- Built-in Function: short int __builtin_arc_normw (short int SRC)
!      Only valid if the 'normw' instruction is available through the
!      '-mnorm' option or by default with '-mcpu=ARC700'.  Generates:
            normw  DEST, SRC
       Where the value in DEST will be the result returned from the
       built-in.
--- 54073,54087 ----
            nop
  
   -- Built-in Function: int __builtin_arc_norm (int SRC)
!      Only valid if the â€˜normâ€™ instruction is available through the
!      â€˜-mnormâ€™ option or by default with â€˜-mcpu=ARC700â€™.  Generates:
            norm  DEST, SRC
       Where the value in DEST will be the result returned from the
       built-in.
  
   -- Built-in Function: short int __builtin_arc_normw (short int SRC)
!      Only valid if the â€˜normwâ€™ instruction is available through the
!      â€˜-mnormâ€™ option or by default with â€˜-mcpu=ARC700â€™.  Generates:
            normw  DEST, SRC
       Where the value in DEST will be the result returned from the
       built-in.
*************** generated.
*** 54093,54099 ****
            sr  VAL, [AUXR]
  
   -- Built-in Function: int __builtin_arc_swap (int SRC)
!      Only valid with '-mswap'.  Generates:
            swap  DEST, SRC
       Where the value in DEST will be the result returned from the
       built-in.
--- 54102,54108 ----
            sr  VAL, [AUXR]
  
   -- Built-in Function: int __builtin_arc_swap (int SRC)
!      Only valid with â€˜-mswapâ€™.  Generates:
            swap  DEST, SRC
       Where the value in DEST will be the result returned from the
       built-in.
*************** generated.
*** 54103,54117 ****
            swi
  
   -- Built-in Function: void __builtin_arc_sync (void)
!      Only available with '-mcpu=ARC700'.  Generates:
            sync
  
   -- Built-in Function: void __builtin_arc_trap_s (unsigned int C)
!      Only available with '-mcpu=ARC700'.  Generates:
            trap_s  C
  
   -- Built-in Function: void __builtin_arc_unimp_s (void)
!      Only available with '-mcpu=ARC700'.  Generates:
            unimp_s
  
   The instructions generated by the following builtins are not considered
--- 54112,54126 ----
            swi
  
   -- Built-in Function: void __builtin_arc_sync (void)
!      Only available with â€˜-mcpu=ARC700â€™.  Generates:
            sync
  
   -- Built-in Function: void __builtin_arc_trap_s (unsigned int C)
!      Only available with â€˜-mcpu=ARC700â€™.  Generates:
            trap_s  C
  
   -- Built-in Function: void __builtin_arc_unimp_s (void)
!      Only available with â€˜-mcpu=ARC700â€™.  Generates:
            unimp_s
  
   The instructions generated by the following builtins are not considered
*************** processors.
*** 54135,54141 ****
       void __builtin_arc_seti (int);
  
   The following built-in functions are available for the ARCv2 family and
! uses '-mnorm'.
  
       int __builtin_arc_ffs (int);
       int __builtin_arc_fls (int);
--- 54144,54150 ----
       void __builtin_arc_seti (int);
  
   The following built-in functions are available for the ARCv2 family and
! uses â€˜-mnormâ€™.
  
       int __builtin_arc_ffs (int);
       int __builtin_arc_fls (int);
*************** File: gcc.info,  Node: ARC SIMD Built-in
*** 54148,54156 ****
  
  SIMD builtins provided by the compiler can be used to generate the
  vector instructions.  This section describes the available builtins and
! their usage in programs.  With the '-msimd' option, the compiler
  provides 128-bit vector types, which can be specified using the
! 'vector_size' attribute.  The header file 'arc-simd.h' can be included
  to use the following predefined types:
       typedef int __v4si   __attribute__((vector_size(16)));
       typedef short __v8hi __attribute__((vector_size(16)));
--- 54157,54165 ----
  
  SIMD builtins provided by the compiler can be used to generate the
  vector instructions.  This section describes the available builtins and
! their usage in programs.  With the â€˜-msimdâ€™ option, the compiler
  provides 128-bit vector types, which can be specified using the
! â€˜vector_sizeâ€™ attribute.  The header file â€˜arc-simd.hâ€™ can be included
  to use the following predefined types:
       typedef int __v4si   __attribute__((vector_size(16)));
       typedef short __v8hi __attribute__((vector_size(16)));
*************** to use the following predefined types:
*** 54159,54166 ****
  functions listed in the following section can be used on these variables
  to generate the vector operations.
  
!  For all builtins, '__builtin_arc_SOMEINSN', the header file
! 'arc-simd.h' also provides equivalent macros called '_SOMEINSN' that can
  be used for programming ease and improved readability.  The following
  macros for DMA control are also provided:
       #define _setup_dma_in_channel_reg _vdiwr
--- 54168,54175 ----
  functions listed in the following section can be used on these variables
  to generate the vector operations.
  
!  For all builtins, â€˜__builtin_arc_SOMEINSNâ€™, the header file
! â€˜arc-simd.hâ€™ also provides equivalent macros called â€˜_SOMEINSNâ€™ that can
  be used for programming ease and improved readability.  The following
  macros for DMA control are also provided:
       #define _setup_dma_in_channel_reg _vdiwr
*************** macros for DMA control are also provided
*** 54169,54175 ****
   The following is a complete list of all the SIMD built-ins provided for
  ARC, grouped by calling signature.
  
!  The following take two '__v8hi' arguments and return a '__v8hi' result:
       __v8hi __builtin_arc_vaddaw (__v8hi, __v8hi);
       __v8hi __builtin_arc_vaddw (__v8hi, __v8hi);
       __v8hi __builtin_arc_vand (__v8hi, __v8hi);
--- 54178,54184 ----
   The following is a complete list of all the SIMD built-ins provided for
  ARC, grouped by calling signature.
  
!  The following take two â€˜__v8hiâ€™ arguments and return a â€˜__v8hiâ€™ result:
       __v8hi __builtin_arc_vaddaw (__v8hi, __v8hi);
       __v8hi __builtin_arc_vaddw (__v8hi, __v8hi);
       __v8hi __builtin_arc_vand (__v8hi, __v8hi);
*************** ARC, grouped by calling signature.
*** 54219,54226 ****
       __v8hi __builtin_arc_vxor (__v8hi, __v8hi);
       __v8hi __builtin_arc_vxoraw (__v8hi, __v8hi);
  
!  The following take one '__v8hi' and one 'int' argument and return a
! '__v8hi' result:
  
       __v8hi __builtin_arc_vbaddw (__v8hi, int);
       __v8hi __builtin_arc_vbmaxw (__v8hi, int);
--- 54228,54235 ----
       __v8hi __builtin_arc_vxor (__v8hi, __v8hi);
       __v8hi __builtin_arc_vxoraw (__v8hi, __v8hi);
  
!  The following take one â€˜__v8hiâ€™ and one â€˜intâ€™ argument and return a
! â€˜__v8hiâ€™ result:
  
       __v8hi __builtin_arc_vbaddw (__v8hi, int);
       __v8hi __builtin_arc_vbmaxw (__v8hi, int);
*************** ARC, grouped by calling signature.
*** 54231,54245 ****
       __v8hi __builtin_arc_vbrsubw (__v8hi, int);
       __v8hi __builtin_arc_vbsubw (__v8hi, int);
  
!  The following take one '__v8hi' argument and one 'int' argument which
  must be a 3-bit compile time constant indicating a register number
! I0-I7.  They return a '__v8hi' result.
       __v8hi __builtin_arc_vasrw (__v8hi, const int);
       __v8hi __builtin_arc_vsr8 (__v8hi, const int);
       __v8hi __builtin_arc_vsr8aw (__v8hi, const int);
  
!  The following take one '__v8hi' argument and one 'int' argument which
! must be a 6-bit compile time constant.  They return a '__v8hi' result.
       __v8hi __builtin_arc_vasrpwbi (__v8hi, const int);
       __v8hi __builtin_arc_vasrrpwbi (__v8hi, const int);
       __v8hi __builtin_arc_vasrrwi (__v8hi, const int);
--- 54240,54254 ----
       __v8hi __builtin_arc_vbrsubw (__v8hi, int);
       __v8hi __builtin_arc_vbsubw (__v8hi, int);
  
!  The following take one â€˜__v8hiâ€™ argument and one â€˜intâ€™ argument which
  must be a 3-bit compile time constant indicating a register number
! I0-I7.  They return a â€˜__v8hiâ€™ result.
       __v8hi __builtin_arc_vasrw (__v8hi, const int);
       __v8hi __builtin_arc_vsr8 (__v8hi, const int);
       __v8hi __builtin_arc_vsr8aw (__v8hi, const int);
  
!  The following take one â€˜__v8hiâ€™ argument and one â€˜intâ€™ argument which
! must be a 6-bit compile time constant.  They return a â€˜__v8hiâ€™ result.
       __v8hi __builtin_arc_vasrpwbi (__v8hi, const int);
       __v8hi __builtin_arc_vasrrpwbi (__v8hi, const int);
       __v8hi __builtin_arc_vasrrwi (__v8hi, const int);
*************** must be a 6-bit compile time constant.
*** 54248,54267 ****
       __v8hi __builtin_arc_vsr8awi (__v8hi, const int);
       __v8hi __builtin_arc_vsr8i (__v8hi, const int);
  
!  The following take one '__v8hi' argument and one 'int' argument which
! must be a 8-bit compile time constant.  They return a '__v8hi' result.
       __v8hi __builtin_arc_vd6tapf (__v8hi, const int);
       __v8hi __builtin_arc_vmvaw (__v8hi, const int);
       __v8hi __builtin_arc_vmvw (__v8hi, const int);
       __v8hi __builtin_arc_vmvzw (__v8hi, const int);
  
!  The following take two 'int' arguments, the second of which which must
! be a 8-bit compile time constant.  They return a '__v8hi' result:
       __v8hi __builtin_arc_vmovaw (int, const int);
       __v8hi __builtin_arc_vmovw (int, const int);
       __v8hi __builtin_arc_vmovzw (int, const int);
  
!  The following take a single '__v8hi' argument and return a '__v8hi'
  result:
       __v8hi __builtin_arc_vabsaw (__v8hi);
       __v8hi __builtin_arc_vabsw (__v8hi);
--- 54257,54276 ----
       __v8hi __builtin_arc_vsr8awi (__v8hi, const int);
       __v8hi __builtin_arc_vsr8i (__v8hi, const int);
  
!  The following take one â€˜__v8hiâ€™ argument and one â€˜intâ€™ argument which
! must be a 8-bit compile time constant.  They return a â€˜__v8hiâ€™ result.
       __v8hi __builtin_arc_vd6tapf (__v8hi, const int);
       __v8hi __builtin_arc_vmvaw (__v8hi, const int);
       __v8hi __builtin_arc_vmvw (__v8hi, const int);
       __v8hi __builtin_arc_vmvzw (__v8hi, const int);
  
!  The following take two â€˜intâ€™ arguments, the second of which which must
! be a 8-bit compile time constant.  They return a â€˜__v8hiâ€™ result:
       __v8hi __builtin_arc_vmovaw (int, const int);
       __v8hi __builtin_arc_vmovw (int, const int);
       __v8hi __builtin_arc_vmovzw (int, const int);
  
!  The following take a single â€˜__v8hiâ€™ argument and return a â€˜__v8hiâ€™
  result:
       __v8hi __builtin_arc_vabsaw (__v8hi);
       __v8hi __builtin_arc_vabsw (__v8hi);
*************** result:
*** 54275,54312 ****
       __v8hi __builtin_arc_vupsbaw (__v8hi);
       __v8hi __builtin_arc_vupsbw (__v8hi);
  
!  The following take two 'int' arguments and return no result:
       void __builtin_arc_vdirun (int, int);
       void __builtin_arc_vdorun (int, int);
  
!  The following take two 'int' arguments and return no result.  The first
  argument must a 3-bit compile time constant indicating one of the
  DR0-DR7 DMA setup channels:
       void __builtin_arc_vdiwr (const int, int);
       void __builtin_arc_vdowr (const int, int);
  
!  The following take an 'int' argument and return no result:
       void __builtin_arc_vendrec (int);
       void __builtin_arc_vrec (int);
       void __builtin_arc_vrecrun (int);
       void __builtin_arc_vrun (int);
  
!  The following take a '__v8hi' argument and two 'int' arguments and
! return a '__v8hi' result.  The second argument must be a 3-bit compile
  time constants, indicating one the registers I0-I7, and the third
  argument must be an 8-bit compile time constant.
  
   _Note:_ Although the equivalent hardware instructions do not take an
  SIMD register as an operand, these builtins overwrite the relevant bits
! of the '__v8hi' register provided as the first argument with the value
! loaded from the '[Ib, u8]' location in the SDM.
  
       __v8hi __builtin_arc_vld32 (__v8hi, const int, const int);
       __v8hi __builtin_arc_vld32wh (__v8hi, const int, const int);
       __v8hi __builtin_arc_vld32wl (__v8hi, const int, const int);
       __v8hi __builtin_arc_vld64 (__v8hi, const int, const int);
  
!  The following take two 'int' arguments and return a '__v8hi' result.
  The first argument must be a 3-bit compile time constants, indicating
  one the registers I0-I7, and the second argument must be an 8-bit
  compile time constant.
--- 54284,54321 ----
       __v8hi __builtin_arc_vupsbaw (__v8hi);
       __v8hi __builtin_arc_vupsbw (__v8hi);
  
!  The following take two â€˜intâ€™ arguments and return no result:
       void __builtin_arc_vdirun (int, int);
       void __builtin_arc_vdorun (int, int);
  
!  The following take two â€˜intâ€™ arguments and return no result.  The first
  argument must a 3-bit compile time constant indicating one of the
  DR0-DR7 DMA setup channels:
       void __builtin_arc_vdiwr (const int, int);
       void __builtin_arc_vdowr (const int, int);
  
!  The following take an â€˜intâ€™ argument and return no result:
       void __builtin_arc_vendrec (int);
       void __builtin_arc_vrec (int);
       void __builtin_arc_vrecrun (int);
       void __builtin_arc_vrun (int);
  
!  The following take a â€˜__v8hiâ€™ argument and two â€˜intâ€™ arguments and
! return a â€˜__v8hiâ€™ result.  The second argument must be a 3-bit compile
  time constants, indicating one the registers I0-I7, and the third
  argument must be an 8-bit compile time constant.
  
   _Note:_ Although the equivalent hardware instructions do not take an
  SIMD register as an operand, these builtins overwrite the relevant bits
! of the â€˜__v8hiâ€™ register provided as the first argument with the value
! loaded from the â€˜[Ib, u8]â€™ location in the SDM.
  
       __v8hi __builtin_arc_vld32 (__v8hi, const int, const int);
       __v8hi __builtin_arc_vld32wh (__v8hi, const int, const int);
       __v8hi __builtin_arc_vld32wl (__v8hi, const int, const int);
       __v8hi __builtin_arc_vld64 (__v8hi, const int, const int);
  
!  The following take two â€˜intâ€™ arguments and return a â€˜__v8hiâ€™ result.
  The first argument must be a 3-bit compile time constants, indicating
  one the registers I0-I7, and the second argument must be an 8-bit
  compile time constant.
*************** compile time constant.
*** 54314,54320 ****
       __v8hi __builtin_arc_vld128 (const int, const int);
       __v8hi __builtin_arc_vld64w (const int, const int);
  
!  The following take a '__v8hi' argument and two 'int' arguments and
  return no result.  The second argument must be a 3-bit compile time
  constants, indicating one the registers I0-I7, and the third argument
  must be an 8-bit compile time constant.
--- 54323,54329 ----
       __v8hi __builtin_arc_vld128 (const int, const int);
       __v8hi __builtin_arc_vld64w (const int, const int);
  
!  The following take a â€˜__v8hiâ€™ argument and two â€˜intâ€™ arguments and
  return no result.  The second argument must be a 3-bit compile time
  constants, indicating one the registers I0-I7, and the third argument
  must be an 8-bit compile time constant.
*************** must be an 8-bit compile time constant.
*** 54322,54328 ****
       void __builtin_arc_vst128 (__v8hi, const int, const int);
       void __builtin_arc_vst64 (__v8hi, const int, const int);
  
!  The following take a '__v8hi' argument and three 'int' arguments and
  return no result.  The second argument must be a 3-bit compile-time
  constant, identifying the 16-bit sub-register to be stored, the third
  argument must be a 3-bit compile time constants, indicating one the
--- 54331,54337 ----
       void __builtin_arc_vst128 (__v8hi, const int, const int);
       void __builtin_arc_vst64 (__v8hi, const int, const int);
  
!  The following take a â€˜__v8hiâ€™ argument and three â€˜intâ€™ arguments and
  return no result.  The second argument must be a 3-bit compile-time
  constant, identifying the 16-bit sub-register to be stored, the third
  argument must be a 3-bit compile time constants, indicating one the
*************** constant.
*** 54333,54339 ****
       void __builtin_arc_vst32_n (__v8hi, const int, const int, const int);
  
   The following built-in functions are available on systems that uses
! '-mmpy-option=6' or higher.
  
       __v2hi __builtin_arc_dmach (__v2hi, __v2hi);
       __v2hi __builtin_arc_dmachu (__v2hi, __v2hi);
--- 54342,54348 ----
       void __builtin_arc_vst32_n (__v8hi, const int, const int, const int);
  
   The following built-in functions are available on systems that uses
! â€˜-mmpy-option=6â€™ or higher.
  
       __v2hi __builtin_arc_dmach (__v2hi, __v2hi);
       __v2hi __builtin_arc_dmachu (__v2hi, __v2hi);
*************** constant.
*** 54343,54349 ****
       __v2hi __builtin_arc_vsubadd2h (__v2hi, __v2hi);
  
   The following built-in functions are available on systems that uses
! '-mmpy-option=7' or higher.
  
       __v2si __builtin_arc_vmac2h (__v2hi, __v2hi);
       __v2si __builtin_arc_vmac2hu (__v2hi, __v2hi);
--- 54352,54358 ----
       __v2hi __builtin_arc_vsubadd2h (__v2hi, __v2hi);
  
   The following built-in functions are available on systems that uses
! â€˜-mmpy-option=7â€™ or higher.
  
       __v2si __builtin_arc_vmac2h (__v2hi, __v2hi);
       __v2si __builtin_arc_vmac2hu (__v2hi, __v2hi);
*************** constant.
*** 54351,54357 ****
       __v2si __builtin_arc_vmpy2hu (__v2hi, __v2hi);
  
   The following built-in functions are available on systems that uses
! '-mmpy-option=8' or higher.
  
       long long __builtin_arc_qmach (__v4hi, __v4hi);
       long long __builtin_arc_qmachu (__v4hi, __v4hi);
--- 54360,54366 ----
       __v2si __builtin_arc_vmpy2hu (__v2hi, __v2hi);
  
   The following built-in functions are available on systems that uses
! â€˜-mmpy-option=8â€™ or higher.
  
       long long __builtin_arc_qmach (__v4hi, __v4hi);
       long long __builtin_arc_qmachu (__v4hi, __v4hi);
*************** File: gcc.info,  Node: ARM iWMMXt Built-
*** 54371,54377 ****
  ------------------------------------
  
  These built-in functions are available for the ARM family of processors
! when the '-mcpu=iwmmxt' switch is used:
  
       typedef int v2si __attribute__ ((vector_size (8)));
       typedef short v4hi __attribute__ ((vector_size (8)));
--- 54380,54386 ----
  ------------------------------------
  
  These built-in functions are available for the ARM family of processors
! when the â€˜-mcpu=iwmmxtâ€™ switch is used:
  
       typedef int v2si __attribute__ ((vector_size (8)));
       typedef short v4hi __attribute__ ((vector_size (8)));
*************** enabled.
*** 54537,54543 ****
  
   Currently, ARM and AArch64 back ends do not support ACLE 2.0 fully.
  Both back ends support CRC32 intrinsics and the ARM back end supports
! the Coprocessor intrinsics, all from 'arm_acle.h'.  The ARM back end's
  16-bit floating-point Advanced SIMD intrinsics currently comply to ACLE
  v1.1.  AArch64's back end does not have support for 16-bit floating
  point Advanced SIMD intrinsics yet.
--- 54546,54552 ----
  
   Currently, ARM and AArch64 back ends do not support ACLE 2.0 fully.
  Both back ends support CRC32 intrinsics and the ARM back end supports
! the Coprocessor intrinsics, all from â€˜arm_acle.hâ€™.  The ARM back end's
  16-bit floating-point Advanced SIMD intrinsics currently comply to ACLE
  v1.1.  AArch64's back end does not have support for 16-bit floating
  point Advanced SIMD intrinsics yet.
*************** Engineering Specification, which can be
*** 54569,54575 ****
  <https://developer.arm.com/documentation/ecm0359818/latest/>.
  
   As part of the Security Extensions GCC implements two new function
! attributes: 'cmse_nonsecure_entry' and 'cmse_nonsecure_call'.
  
   As part of the Security Extensions GCC implements the intrinsics below.
  FPTR is used here to mean any function pointer type.
--- 54578,54584 ----
  <https://developer.arm.com/documentation/ecm0359818/latest/>.
  
   As part of the Security Extensions GCC implements two new function
! attributes: â€˜cmse_nonsecure_entryâ€™ and â€˜cmse_nonsecure_callâ€™.
  
   As part of the Security Extensions GCC implements the intrinsics below.
  FPTR is used here to mean any function pointer type.
*************** File: gcc.info,  Node: AVR Built-in Func
*** 54596,54603 ****
  For each built-in function for AVR, there is an equally named, uppercase
  built-in macro defined.  That way users can easily query if or if not a
  specific built-in is implemented or not.  For example, if
! '__builtin_avr_nop' is available the macro '__BUILTIN_AVR_NOP' is
! defined to '1' and undefined otherwise.
  
   -- Built-in Function: void __builtin_avr_nop (void)
   -- Built-in Function: void __builtin_avr_sei (void)
--- 54605,54612 ----
  For each built-in function for AVR, there is an equally named, uppercase
  built-in macro defined.  That way users can easily query if or if not a
  specific built-in is implemented or not.  For example, if
! â€˜__builtin_avr_nopâ€™ is available the macro â€˜__BUILTIN_AVR_NOPâ€™ is
! defined to â€˜1â€™ and undefined otherwise.
  
   -- Built-in Function: void __builtin_avr_nop (void)
   -- Built-in Function: void __builtin_avr_sei (void)
*************** defined to '1' and undefined otherwise.
*** 54610,54617 ****
   -- Built-in Function: int16_t __builtin_avr_fmulsu (int8_t, uint8_t)
  
       These built-in functions map to the respective machine instruction,
!      i.e. 'nop', 'sei', 'cli', 'sleep', 'wdr', 'swap', 'fmul', 'fmuls'
!      resp.  'fmulsu'.  The three 'fmul*' built-ins are implemented as
       library call if no hardware multiplier is available.
  
   -- Built-in Function: void __builtin_avr_delay_cycles (uint32_t TICKS)
--- 54619,54626 ----
   -- Built-in Function: int16_t __builtin_avr_fmulsu (int8_t, uint8_t)
  
       These built-in functions map to the respective machine instruction,
!      i.e. â€˜nopâ€™, â€˜seiâ€™, â€˜cliâ€™, â€˜sleepâ€™, â€˜wdrâ€™, â€˜swapâ€™, â€˜fmulâ€™, â€˜fmulsâ€™
!      resp.  â€˜fmulsuâ€™.  The three â€˜fmul*â€™ built-ins are implemented as
       library call if no hardware multiplier is available.
  
   -- Built-in Function: void __builtin_avr_delay_cycles (uint32_t TICKS)
*************** defined to '1' and undefined otherwise.
*** 54625,54636 ****
       Insert bits from BITS into VAL and return the resulting value.  The
       nibbles of MAP determine how the insertion is performed: Let X be
       the N-th nibble of MAP
!        1. If X is '0xf', then the N-th bit of VAL is returned unaltered.
  
         2. If X is in the range 0...7, then the N-th result bit is set to
            the X-th bit of BITS
  
!        3. If X is in the range 8...'0xe', then the N-th result bit is
            undefined.
  
       One typical use case for this built-in is adjusting input and
--- 54634,54645 ----
       Insert bits from BITS into VAL and return the resulting value.  The
       nibbles of MAP determine how the insertion is performed: Let X be
       the N-th nibble of MAP
!        1. If X is â€˜0xfâ€™, then the N-th bit of VAL is returned unaltered.
  
         2. If X is in the range 0...7, then the N-th result bit is set to
            the X-th bit of BITS
  
!        3. If X is in the range 8...â€˜0xeâ€™, then the N-th result bit is
            undefined.
  
       One typical use case for this built-in is adjusting input and
*************** defined to '1' and undefined otherwise.
*** 54656,54675 ****
            uint8_t OFFS)
       Rotate the 8-bit constant value MASK by an offset of OFFS, where
       MASK is in { 0x01, 0xfe, 0x7f, 0x80 }.  This built-in can be used
!      as an alternative to 8-bit expressions like '1 << offs' when their
       computation consumes too much time, and OFFS is known to be in the
       range 0...7.
            __builtin_avr_mask1 (1, offs)      // same like  1 << offs
            __builtin_avr_mask1 (~1, offs)     // same like  ~(1 << offs)
            __builtin_avr_mask1 (0x80, offs)   // same like  0x80 >> offs
            __builtin_avr_mask1 (~0x80, offs)  // same like  ~(0x80 >> offs)
!      The open coded C versions take at least '5 + 4 * OFFS' cycles (and
       5 instructions), whereas the built-in takes 7 cycles and
!      instructions (8 cycles and instructions in the case of 'MASK =
!      0x7f').
  
   -- Built-in Function: void __builtin_avr_nops (uint16_t COUNT)
!      Insert COUNT 'NOP' instructions.  The number of instructions must
       be a compile-time integer constant.
  
   All of the following built-in functions are only available for GNU-C
--- 54665,54684 ----
            uint8_t OFFS)
       Rotate the 8-bit constant value MASK by an offset of OFFS, where
       MASK is in { 0x01, 0xfe, 0x7f, 0x80 }.  This built-in can be used
!      as an alternative to 8-bit expressions like â€˜1 << offsâ€™ when their
       computation consumes too much time, and OFFS is known to be in the
       range 0...7.
            __builtin_avr_mask1 (1, offs)      // same like  1 << offs
            __builtin_avr_mask1 (~1, offs)     // same like  ~(1 << offs)
            __builtin_avr_mask1 (0x80, offs)   // same like  0x80 >> offs
            __builtin_avr_mask1 (~0x80, offs)  // same like  ~(0x80 >> offs)
!      The open coded C versions take at least â€˜5 + 4 * OFFSâ€™ cycles (and
       5 instructions), whereas the built-in takes 7 cycles and
!      instructions (8 cycles and instructions in the case of â€˜MASK =
!      0x7fâ€™).
  
   -- Built-in Function: void __builtin_avr_nops (uint16_t COUNT)
!      Insert COUNT â€˜NOPâ€™ instructions.  The number of instructions must
       be a compile-time integer constant.
  
   All of the following built-in functions are only available for GNU-C
*************** defined to '1' and undefined otherwise.
*** 54677,54686 ****
   -- Built-in Function: int8_t __builtin_avr_flash_segment (const __memx
            void*)
       This built-in takes a byte address to the 24-bit *note named
!      address space: AVR Named Address Spaces. '__memx' and returns the
       number of the flash segment (the 64 KiB chunk) where the address
!      points to.  Counting starts at '0'.  If the address does not point
!      to flash memory, return '-1'.
  
   -- Built-in Function: size_t __builtin_avr_strlen_flash (const __flash
            char*)
--- 54686,54695 ----
   -- Built-in Function: int8_t __builtin_avr_flash_segment (const __memx
            void*)
       This built-in takes a byte address to the 24-bit *note named
!      address space: AVR Named Address Spaces. â€˜__memxâ€™ and returns the
       number of the flash segment (the 64 KiB chunk) where the address
!      points to.  Counting starts at â€˜0â€™.  If the address does not point
!      to flash memory, return â€˜-1â€™.
  
   -- Built-in Function: size_t __builtin_avr_strlen_flash (const __flash
            char*)
*************** defined to '1' and undefined otherwise.
*** 54689,54703 ****
   -- Built-in Function: size_t __builtin_avr_strlen_memx (const __memx
            char*)
       These built-ins return the length of a string located in named
!      address-space '__flash', '__flashx' or '__memx', respectively.
!      They are used to support functions like 'strlen_F' from
       AVR-LibC (https://avrdudes.github.io/avr-libc/avr-libc-user-manual/)'s
!      header 'avr/flash.h'.
  
  There are many more AVR-specific built-in functions that are used to
  implement the ISO/IEC TR 18037 "Embedded C" fixed-point functions of
  section 7.18a.6.  You don't need to use these built-ins directly.
! Instead, use the declarations as supplied by the 'stdfix.h' header with
  GNU-C99:
  
       #include <stdfix.h>
--- 54698,54712 ----
   -- Built-in Function: size_t __builtin_avr_strlen_memx (const __memx
            char*)
       These built-ins return the length of a string located in named
!      address-space â€˜__flashâ€™, â€˜__flashxâ€™ or â€˜__memxâ€™, respectively.
!      They are used to support functions like â€˜strlen_Fâ€™ from
       AVR-LibC (https://avrdudes.github.io/avr-libc/avr-libc-user-manual/)'s
!      header â€˜avr/flash.hâ€™.
  
  There are many more AVR-specific built-in functions that are used to
  implement the ISO/IEC TR 18037 "Embedded C" fixed-point functions of
  section 7.18a.6.  You don't need to use these built-ins directly.
! Instead, use the declarations as supplied by the â€˜stdfix.hâ€™ header with
  GNU-C99:
  
       #include <stdfix.h>
*************** File: gcc.info,  Node: Blackfin Built-in
*** 54716,54722 ****
  -----------------------------------
  
  Currently, there are two Blackfin-specific built-in functions.  These
! are used for generating 'CSYNC' and 'SSYNC' machine insns without using
  inline assembly; by using these built-in functions the compiler can
  automatically add workarounds for hardware errata involving these
  instructions.  These functions are named as follows:
--- 54725,54731 ----
  -----------------------------------
  
  Currently, there are two Blackfin-specific built-in functions.  These
! are used for generating â€˜CSYNCâ€™ and â€˜SSYNCâ€™ machine insns without using
  inline assembly; by using these built-in functions the compiler can
  automatically add workarounds for hardware errata involving these
  instructions.  These functions are named as follows:
*************** The following built-in functions are ava
*** 54734,54758 ****
  
   -- Built-in Function: unsigned long long __builtin_bpf_load_byte
            (unsigned long long OFFSET)
!      Load a byte from the 'struct sk_buff' packet data pointed to by the
!      register '%r6', and return it.
  
   -- Built-in Function: unsigned long long __builtin_bpf_load_half
            (unsigned long long OFFSET)
!      Load 16 bits from the 'struct sk_buff' packet data pointed to by
!      the register '%r6', and return it.
  
   -- Built-in Function: unsigned long long __builtin_bpf_load_word
            (unsigned long long OFFSET)
!      Load 32 bits from the 'struct sk_buff' packet data pointed to by
!      the register '%r6', and return it.
  
   -- Built-in Function: TYPE __builtin_preserve_access_index (TYPE EXPR)
       BPF Compile Once-Run Everywhere (CO-RE) support.  Instruct GCC to
       generate CO-RE relocation records for any accesses to aggregate
       data structures (struct, union, array types) in EXPR.  This builtin
       is otherwise transparent; EXPR may have any type and its value is
!      returned.  This builtin has no effect if '-mco-re' is not in effect
       (either specified or implied).
  
   -- Built-in Function: unsigned int __builtin_preserve_field_info (EXPR,
--- 54743,54767 ----
  
   -- Built-in Function: unsigned long long __builtin_bpf_load_byte
            (unsigned long long OFFSET)
!      Load a byte from the â€˜struct sk_buffâ€™ packet data pointed to by the
!      register â€˜%r6â€™, and return it.
  
   -- Built-in Function: unsigned long long __builtin_bpf_load_half
            (unsigned long long OFFSET)
!      Load 16 bits from the â€˜struct sk_buffâ€™ packet data pointed to by
!      the register â€˜%r6â€™, and return it.
  
   -- Built-in Function: unsigned long long __builtin_bpf_load_word
            (unsigned long long OFFSET)
!      Load 32 bits from the â€˜struct sk_buffâ€™ packet data pointed to by
!      the register â€˜%r6â€™, and return it.
  
   -- Built-in Function: TYPE __builtin_preserve_access_index (TYPE EXPR)
       BPF Compile Once-Run Everywhere (CO-RE) support.  Instruct GCC to
       generate CO-RE relocation records for any accesses to aggregate
       data structures (struct, union, array types) in EXPR.  This builtin
       is otherwise transparent; EXPR may have any type and its value is
!      returned.  This builtin has no effect if â€˜-mco-reâ€™ is not in effect
       (either specified or implied).
  
   -- Built-in Function: unsigned int __builtin_preserve_field_info (EXPR,
*************** The following built-in functions are ava
*** 54762,54802 ****
       EXPR is an access to a field of a struct or union.  Depending on
       KIND, different information is returned to the program.  A CO-RE
       relocation for the access in EXPR with kind KIND is recorded if
!      '-mco-re' is in effect.
  
       The following values are supported for KIND:
!      'FIELD_BYTE_OFFSET = 0'
            The returned value is the offset, in bytes, of the field from
            the beginning of the containing structure.  For bit-fields,
            this is the byte offset of the containing word.
  
!      'FIELD_BYTE_SIZE = 1'
            The returned value is the size, in bytes, of the field.  For
            bit-fields, this is the size in bytes of the containing word.
  
!      'FIELD_EXISTENCE = 2'
            The returned value is 1 if the field exists, 0 otherwise.
            Always 1 at compile time.
  
!      'FIELD_SIGNEDNESS = 3'
            The returned value is 1 if the field is signed, 0 otherwise.
  
!      'FIELD_LSHIFT_U64 = 4'
!      'FIELD_RSHIFT_U64 = 5'
            The returned value is the number of bits of left- or
            right-shifting (respectively) needed in order to recover the
            original value of the field, after it has been loaded by a
!           read of 'FIELD_BYTE_SIZE' bytes into an unsigned 64-bit value.
            Primarily useful for reading bit-field values from structures
            that may change between kernel versions.
  
       Note that the return value is a constant which is known at compile
!      time.  If the field has a variable offset then 'FIELD_BYTE_OFFSET',
!      'FIELD_LSHIFT_U64', and 'FIELD_RSHIFT_U64' are not supported.
!      Similarly, if the field has a variable size then 'FIELD_BYTE_SIZE',
!      'FIELD_LSHIFT_U64', and 'FIELD_RSHIFT_U64' are not supported.
  
!      For example, '__builtin_preserve_field_info' can be used to
       reliably extract bit-field values from a structure that may change
       between kernel versions:
  
--- 54771,54811 ----
       EXPR is an access to a field of a struct or union.  Depending on
       KIND, different information is returned to the program.  A CO-RE
       relocation for the access in EXPR with kind KIND is recorded if
!      â€˜-mco-reâ€™ is in effect.
  
       The following values are supported for KIND:
!      â€˜FIELD_BYTE_OFFSET = 0â€™
            The returned value is the offset, in bytes, of the field from
            the beginning of the containing structure.  For bit-fields,
            this is the byte offset of the containing word.
  
!      â€˜FIELD_BYTE_SIZE = 1â€™
            The returned value is the size, in bytes, of the field.  For
            bit-fields, this is the size in bytes of the containing word.
  
!      â€˜FIELD_EXISTENCE = 2â€™
            The returned value is 1 if the field exists, 0 otherwise.
            Always 1 at compile time.
  
!      â€˜FIELD_SIGNEDNESS = 3â€™
            The returned value is 1 if the field is signed, 0 otherwise.
  
!      â€˜FIELD_LSHIFT_U64 = 4â€™
!      â€˜FIELD_RSHIFT_U64 = 5â€™
            The returned value is the number of bits of left- or
            right-shifting (respectively) needed in order to recover the
            original value of the field, after it has been loaded by a
!           read of â€˜FIELD_BYTE_SIZEâ€™ bytes into an unsigned 64-bit value.
            Primarily useful for reading bit-field values from structures
            that may change between kernel versions.
  
       Note that the return value is a constant which is known at compile
!      time.  If the field has a variable offset then â€˜FIELD_BYTE_OFFSETâ€™,
!      â€˜FIELD_LSHIFT_U64â€™, and â€˜FIELD_RSHIFT_U64â€™ are not supported.
!      Similarly, if the field has a variable size then â€˜FIELD_BYTE_SIZEâ€™,
!      â€˜FIELD_LSHIFT_U64â€™, and â€˜FIELD_RSHIFT_U64â€™ are not supported.
  
!      For example, â€˜__builtin_preserve_field_infoâ€™ can be used to
       reliably extract bit-field values from a structure that may change
       between kernel versions:
  
*************** The following built-in functions are ava
*** 54839,54849 ****
       performed.
  
       The following values are supported for KIND:
!      'ENUM_VALUE_EXISTS = 0'
            The return value is either 0 or 1 depending if the enum value
            exists in the target.
  
!      'ENUM_VALUE = 1'
            The return value is the enum value in the target kernel.
  
   -- Built-in Function: unsigned int __builtin_btf_type_id (TYPE,
--- 54848,54858 ----
       performed.
  
       The following values are supported for KIND:
!      â€˜ENUM_VALUE_EXISTS = 0â€™
            The return value is either 0 or 1 depending if the enum value
            exists in the target.
  
!      â€˜ENUM_VALUE = 1â€™
            The return value is the enum value in the target kernel.
  
   -- Built-in Function: unsigned int __builtin_btf_type_id (TYPE,
*************** The following built-in functions are ava
*** 54854,54863 ****
       information, or the BTF type ID in the target kernel.
  
       The following values are supported for KIND:
!      'BTF_TYPE_ID_LOCAL = 0'
            Return the local BTF type ID. Always succeeds.
  
!      'BTF_TYPE_ID_TARGET = 1'
            Return the target BTF type ID. If TYPE does not exist in the
            target, returns 0.
  
--- 54863,54872 ----
       information, or the BTF type ID in the target kernel.
  
       The following values are supported for KIND:
!      â€˜BTF_TYPE_ID_LOCAL = 0â€™
            Return the local BTF type ID. Always succeeds.
  
!      â€˜BTF_TYPE_ID_TARGET = 1â€™
            Return the target BTF type ID. If TYPE does not exist in the
            target, returns 0.
  
*************** The following built-in functions are ava
*** 54870,54883 ****
       kernel.
  
       The following values are supported for KIND:
!      'BTF_TYPE_EXISTS = 0'
            Checks if TYPE exists in the target.
  
!      'BTF_TYPE_MATCHES = 1'
            Checks if TYPE matches the local definition in the target
            kernel.
  
!      'BTF_TYPE_SIZE = 2'
            Returns the size of the TYPE within the target.
  
  
--- 54879,54892 ----
       kernel.
  
       The following values are supported for KIND:
!      â€˜BTF_TYPE_EXISTS = 0â€™
            Checks if TYPE exists in the target.
  
!      â€˜BTF_TYPE_MATCHES = 1â€™
            Checks if TYPE matches the local definition in the target
            kernel.
  
!      â€˜BTF_TYPE_SIZE = 2â€™
            Returns the size of the TYPE within the target.
  
  
*************** File: gcc.info,  Node: FR-V Built-in Fun
*** 54887,54895 ****
  -------------------------------
  
  GCC provides many FR-V-specific built-in functions.  In general, these
! functions are intended to be compatible with those described by 'FR-V
! Family, Softune C/C++ Compiler Manual (V6), Fujitsu Semiconductor'.  The
! two exceptions are '__MDUNPACKH' and '__MBTOHE', the GCC forms of which
  pass 128-bit values by pointer rather than by value.
  
   Most of the functions are named after specific FR-V instructions.  Such
--- 54896,54904 ----
  -------------------------------
  
  GCC provides many FR-V-specific built-in functions.  In general, these
! functions are intended to be compatible with those described by â€˜FR-V
! Family, Softune C/C++ Compiler Manual (V6), Fujitsu Semiconductorâ€™.  The
! two exceptions are â€˜__MDUNPACKHâ€™ and â€˜__MBTOHEâ€™, the GCC forms of which
  pass 128-bit values by pointer rather than by value.
  
   Most of the functions are named after specific FR-V instructions.  Such
*************** and return values are given the followin
*** 54917,54946 ****
  
  Pseudo type    Real C type            Constant?   Description
  ----------------------------------------------------------------------------
! 'uh'           'unsigned short'       No          an unsigned halfword
! 'uw1'          'unsigned int'         No          an unsigned word
! 'sw1'          'int'                  No          a signed word
! 'uw2'          'unsigned long long'   No          an unsigned doubleword
! 'sw2'          'long long'            No          a signed doubleword
! 'const'        'int'                  Yes         an integer constant
! 'acc'          'int'                  Yes         an ACC register number
! 'iacc'         'int'                  Yes         an IACC register number
  
   These pseudo types are not defined by GCC, they are simply a notational
  convenience used in this manual.
  
!  Arguments of type 'uh', 'uw1', 'sw1', 'uw2' and 'sw2' are evaluated at
  run time.  They correspond to register operands in the underlying FR-V
  instructions.
  
!  'const' arguments represent immediate operands in the underlying FR-V
  instructions.  They must be compile-time constants.
  
!  'acc' arguments are evaluated at compile time and specify the number of
! an accumulator register.  For example, an 'acc' argument of 2 selects
  the ACC2 register.
  
!  'iacc' arguments are similar to 'acc' arguments but specify the number
  of an IACC register.  See *note Other Built-in Functions:: for more
  details.
  
--- 54926,54955 ----
  
  Pseudo type    Real C type            Constant?   Description
  ----------------------------------------------------------------------------
! â€˜uhâ€™           â€˜unsigned shortâ€™       No          an unsigned halfword
! â€˜uw1â€™          â€˜unsigned intâ€™         No          an unsigned word
! â€˜sw1â€™          â€˜intâ€™                  No          a signed word
! â€˜uw2â€™          â€˜unsigned long longâ€™   No          an unsigned doubleword
! â€˜sw2â€™          â€˜long longâ€™            No          a signed doubleword
! â€˜constâ€™        â€˜intâ€™                  Yes         an integer constant
! â€˜accâ€™          â€˜intâ€™                  Yes         an ACC register number
! â€˜iaccâ€™         â€˜intâ€™                  Yes         an IACC register number
  
   These pseudo types are not defined by GCC, they are simply a notational
  convenience used in this manual.
  
!  Arguments of type â€˜uhâ€™, â€˜uw1â€™, â€˜sw1â€™, â€˜uw2â€™ and â€˜sw2â€™ are evaluated at
  run time.  They correspond to register operands in the underlying FR-V
  instructions.
  
!  â€˜constâ€™ arguments represent immediate operands in the underlying FR-V
  instructions.  They must be compile-time constants.
  
!  â€˜accâ€™ arguments are evaluated at compile time and specify the number of
! an accumulator register.  For example, an â€˜accâ€™ argument of 2 selects
  the ACC2 register.
  
!  â€˜iaccâ€™ arguments are similar to â€˜accâ€™ arguments but specify the number
  of an IACC register.  See *note Other Built-in Functions:: for more
  details.
  
*************** The functions listed below map directly
*** 54954,54969 ****
  
  Function prototype               Example usage           Assembly output
  ---------------------------------------------------------------------------
! 'sw1 __ADDSS (sw1, sw1)'         'C = __ADDSS (A, B)'    'ADDSS A,B,C'
! 'sw1 __SCAN (sw1, sw1)'          'C = __SCAN (A, B)'     'SCAN A,B,C'
! 'sw1 __SCUTSS (sw1)'             'B = __SCUTSS (A)'      'SCUTSS A,B'
! 'sw1 __SLASS (sw1, sw1)'         'C = __SLASS (A, B)'    'SLASS A,B,C'
! 'void __SMASS (sw1, sw1)'        '__SMASS (A, B)'        'SMASS A,B'
! 'void __SMSSS (sw1, sw1)'        '__SMSSS (A, B)'        'SMSSS A,B'
! 'void __SMU (sw1, sw1)'          '__SMU (A, B)'          'SMU A,B'
! 'sw2 __SMUL (sw1, sw1)'          'C = __SMUL (A, B)'     'SMUL A,B,C'
! 'sw1 __SUBSS (sw1, sw1)'         'C = __SUBSS (A, B)'    'SUBSS A,B,C'
! 'uw2 __UMUL (uw1, uw1)'          'C = __UMUL (A, B)'     'UMUL A,B,C'
  
  
  File: gcc.info,  Node: Directly-mapped Media Functions,  Next: Raw read/write Functions,  Prev: Directly-mapped Integer Functions,  Up: FR-V Built-in Functions
--- 54963,54978 ----
  
  Function prototype               Example usage           Assembly output
  ---------------------------------------------------------------------------
! â€˜sw1 __ADDSS (sw1, sw1)â€™         â€˜C = __ADDSS (A, B)â€™    â€˜ADDSS A,B,Câ€™
! â€˜sw1 __SCAN (sw1, sw1)â€™          â€˜C = __SCAN (A, B)â€™     â€˜SCAN A,B,Câ€™
! â€˜sw1 __SCUTSS (sw1)â€™             â€˜B = __SCUTSS (A)â€™      â€˜SCUTSS A,Bâ€™
! â€˜sw1 __SLASS (sw1, sw1)â€™         â€˜C = __SLASS (A, B)â€™    â€˜SLASS A,B,Câ€™
! â€˜void __SMASS (sw1, sw1)â€™        â€˜__SMASS (A, B)â€™        â€˜SMASS A,Bâ€™
! â€˜void __SMSSS (sw1, sw1)â€™        â€˜__SMSSS (A, B)â€™        â€˜SMSSS A,Bâ€™
! â€˜void __SMU (sw1, sw1)â€™          â€˜__SMU (A, B)â€™          â€˜SMU A,Bâ€™
! â€˜sw2 __SMUL (sw1, sw1)â€™          â€˜C = __SMUL (A, B)â€™     â€˜SMUL A,B,Câ€™
! â€˜sw1 __SUBSS (sw1, sw1)â€™         â€˜C = __SUBSS (A, B)â€™    â€˜SUBSS A,B,Câ€™
! â€˜uw2 __UMUL (uw1, uw1)â€™          â€˜C = __UMUL (A, B)â€™     â€˜UMUL A,B,Câ€™
  
  
  File: gcc.info,  Node: Directly-mapped Media Functions,  Next: Raw read/write Functions,  Prev: Directly-mapped Integer Functions,  Up: FR-V Built-in Functions
*************** The functions listed below map directly
*** 54975,55117 ****
  
  Function prototype               Example usage           Assembly output
  ---------------------------------------------------------------------------
! 'uw1 __MABSHS (sw1)'             'B = __MABSHS (A)'      'MABSHS A,B'
! 'void __MADDACCS (acc, acc)'     '__MADDACCS (B, A)'     'MADDACCS A,B'
! 'sw1 __MADDHSS (sw1, sw1)'       'C = __MADDHSS (A,      'MADDHSS A,B,C'
!                                  B)'
! 'uw1 __MADDHUS (uw1, uw1)'       'C = __MADDHUS (A,      'MADDHUS A,B,C'
!                                  B)'
! 'uw1 __MAND (uw1, uw1)'          'C = __MAND (A, B)'     'MAND A,B,C'
! 'void __MASACCS (acc, acc)'      '__MASACCS (B, A)'      'MASACCS A,B'
! 'uw1 __MAVEH (uw1, uw1)'         'C = __MAVEH (A, B)'    'MAVEH A,B,C'
! 'uw2 __MBTOH (uw1)'              'B = __MBTOH (A)'       'MBTOH A,B'
! 'void __MBTOHE (uw1 *, uw1)'     '__MBTOHE (&B, A)'      'MBTOHE A,B'
! 'void __MCLRACC (acc)'           '__MCLRACC (A)'         'MCLRACC A'
! 'void __MCLRACCA (void)'         '__MCLRACCA ()'         'MCLRACCA'
! 'uw1 __Mcop1 (uw1, uw1)'         'C = __Mcop1 (A, B)'    'Mcop1 A,B,C'
! 'uw1 __Mcop2 (uw1, uw1)'         'C = __Mcop2 (A, B)'    'Mcop2 A,B,C'
! 'uw1 __MCPLHI (uw2, const)'      'C = __MCPLHI (A, B)'   'MCPLHI A,#B,C'
! 'uw1 __MCPLI (uw2, const)'       'C = __MCPLI (A, B)'    'MCPLI A,#B,C'
! 'void __MCPXIS (acc, sw1,        '__MCPXIS (C, A, B)'    'MCPXIS A,B,C'
! sw1)'
! 'void __MCPXIU (acc, uw1,        '__MCPXIU (C, A, B)'    'MCPXIU A,B,C'
! uw1)'
! 'void __MCPXRS (acc, sw1,        '__MCPXRS (C, A, B)'    'MCPXRS A,B,C'
! sw1)'
! 'void __MCPXRU (acc, uw1,        '__MCPXRU (C, A, B)'    'MCPXRU A,B,C'
! uw1)'
! 'uw1 __MCUT (acc, uw1)'          'C = __MCUT (A, B)'     'MCUT A,B,C'
! 'uw1 __MCUTSS (acc, sw1)'        'C = __MCUTSS (A, B)'   'MCUTSS A,B,C'
! 'void __MDADDACCS (acc, acc)'    '__MDADDACCS (B, A)'    'MDADDACCS A,B'
! 'void __MDASACCS (acc, acc)'     '__MDASACCS (B, A)'     'MDASACCS A,B'
! 'uw2 __MDCUTSSI (acc, const)'    'C = __MDCUTSSI (A,     'MDCUTSSI
!                                  B)'                     A,#B,C'
! 'uw2 __MDPACKH (uw2, uw2)'       'C = __MDPACKH (A,      'MDPACKH A,B,C'
!                                  B)'
! 'uw2 __MDROTLI (uw2, const)'     'C = __MDROTLI (A,      'MDROTLI
!                                  B)'                     A,#B,C'
! 'void __MDSUBACCS (acc, acc)'    '__MDSUBACCS (B, A)'    'MDSUBACCS A,B'
! 'void __MDUNPACKH (uw1 *,        '__MDUNPACKH (&B, A)'   'MDUNPACKH A,B'
! uw2)'
! 'uw2 __MEXPDHD (uw1, const)'     'C = __MEXPDHD (A,      'MEXPDHD
!                                  B)'                     A,#B,C'
! 'uw1 __MEXPDHW (uw1, const)'     'C = __MEXPDHW (A,      'MEXPDHW
!                                  B)'                     A,#B,C'
! 'uw1 __MHDSETH (uw1, const)'     'C = __MHDSETH (A,      'MHDSETH
!                                  B)'                     A,#B,C'
! 'sw1 __MHDSETS (const)'          'B = __MHDSETS (A)'     'MHDSETS #A,B'
! 'uw1 __MHSETHIH (uw1, const)'    'B = __MHSETHIH (B,     'MHSETHIH #A,B'
!                                  A)'
! 'sw1 __MHSETHIS (sw1, const)'    'B = __MHSETHIS (B,     'MHSETHIS #A,B'
!                                  A)'
! 'uw1 __MHSETLOH (uw1, const)'    'B = __MHSETLOH (B,     'MHSETLOH #A,B'
!                                  A)'
! 'sw1 __MHSETLOS (sw1, const)'    'B = __MHSETLOS (B,     'MHSETLOS #A,B'
!                                  A)'
! 'uw1 __MHTOB (uw2)'              'B = __MHTOB (A)'       'MHTOB A,B'
! 'void __MMACHS (acc, sw1,        '__MMACHS (C, A, B)'    'MMACHS A,B,C'
! sw1)'
! 'void __MMACHU (acc, uw1,        '__MMACHU (C, A, B)'    'MMACHU A,B,C'
! uw1)'
! 'void __MMRDHS (acc, sw1,        '__MMRDHS (C, A, B)'    'MMRDHS A,B,C'
! sw1)'
! 'void __MMRDHU (acc, uw1,        '__MMRDHU (C, A, B)'    'MMRDHU A,B,C'
! uw1)'
! 'void __MMULHS (acc, sw1,        '__MMULHS (C, A, B)'    'MMULHS A,B,C'
! sw1)'
! 'void __MMULHU (acc, uw1,        '__MMULHU (C, A, B)'    'MMULHU A,B,C'
! uw1)'
! 'void __MMULXHS (acc, sw1,       '__MMULXHS (C, A, B)'   'MMULXHS A,B,C'
! sw1)'
! 'void __MMULXHU (acc, uw1,       '__MMULXHU (C, A, B)'   'MMULXHU A,B,C'
! uw1)'
! 'uw1 __MNOT (uw1)'               'B = __MNOT (A)'        'MNOT A,B'
! 'uw1 __MOR (uw1, uw1)'           'C = __MOR (A, B)'      'MOR A,B,C'
! 'uw1 __MPACKH (uh, uh)'          'C = __MPACKH (A, B)'   'MPACKH A,B,C'
! 'sw2 __MQADDHSS (sw2, sw2)'      'C = __MQADDHSS (A,     'MQADDHSS
!                                  B)'                     A,B,C'
! 'uw2 __MQADDHUS (uw2, uw2)'      'C = __MQADDHUS (A,     'MQADDHUS
!                                  B)'                     A,B,C'
! 'void __MQCPXIS (acc, sw2,       '__MQCPXIS (C, A, B)'   'MQCPXIS A,B,C'
! sw2)'
! 'void __MQCPXIU (acc, uw2,       '__MQCPXIU (C, A, B)'   'MQCPXIU A,B,C'
! uw2)'
! 'void __MQCPXRS (acc, sw2,       '__MQCPXRS (C, A, B)'   'MQCPXRS A,B,C'
! sw2)'
! 'void __MQCPXRU (acc, uw2,       '__MQCPXRU (C, A, B)'   'MQCPXRU A,B,C'
! uw2)'
! 'sw2 __MQLCLRHS (sw2, sw2)'      'C = __MQLCLRHS (A,     'MQLCLRHS
!                                  B)'                     A,B,C'
! 'sw2 __MQLMTHS (sw2, sw2)'       'C = __MQLMTHS (A,      'MQLMTHS A,B,C'
!                                  B)'
! 'void __MQMACHS (acc, sw2,       '__MQMACHS (C, A, B)'   'MQMACHS A,B,C'
! sw2)'
! 'void __MQMACHU (acc, uw2,       '__MQMACHU (C, A, B)'   'MQMACHU A,B,C'
! uw2)'
! 'void __MQMACXHS (acc, sw2,      '__MQMACXHS (C, A,      'MQMACXHS
! sw2)'                            B)'                     A,B,C'
! 'void __MQMULHS (acc, sw2,       '__MQMULHS (C, A, B)'   'MQMULHS A,B,C'
! sw2)'
! 'void __MQMULHU (acc, uw2,       '__MQMULHU (C, A, B)'   'MQMULHU A,B,C'
! uw2)'
! 'void __MQMULXHS (acc, sw2,      '__MQMULXHS (C, A,      'MQMULXHS
! sw2)'                            B)'                     A,B,C'
! 'void __MQMULXHU (acc, uw2,      '__MQMULXHU (C, A,      'MQMULXHU
! uw2)'                            B)'                     A,B,C'
! 'sw2 __MQSATHS (sw2, sw2)'       'C = __MQSATHS (A,      'MQSATHS A,B,C'
!                                  B)'
! 'uw2 __MQSLLHI (uw2, int)'       'C = __MQSLLHI (A,      'MQSLLHI A,B,C'
!                                  B)'
! 'sw2 __MQSRAHI (sw2, int)'       'C = __MQSRAHI (A,      'MQSRAHI A,B,C'
!                                  B)'
! 'sw2 __MQSUBHSS (sw2, sw2)'      'C = __MQSUBHSS (A,     'MQSUBHSS
!                                  B)'                     A,B,C'
! 'uw2 __MQSUBHUS (uw2, uw2)'      'C = __MQSUBHUS (A,     'MQSUBHUS
!                                  B)'                     A,B,C'
! 'void __MQXMACHS (acc, sw2,      '__MQXMACHS (C, A,      'MQXMACHS
! sw2)'                            B)'                     A,B,C'
! 'void __MQXMACXHS (acc, sw2,     '__MQXMACXHS (C, A,     'MQXMACXHS
! sw2)'                            B)'                     A,B,C'
! 'uw1 __MRDACC (acc)'             'B = __MRDACC (A)'      'MRDACC A,B'
! 'uw1 __MRDACCG (acc)'            'B = __MRDACCG (A)'     'MRDACCG A,B'
! 'uw1 __MROTLI (uw1, const)'      'C = __MROTLI (A, B)'   'MROTLI A,#B,C'
! 'uw1 __MROTRI (uw1, const)'      'C = __MROTRI (A, B)'   'MROTRI A,#B,C'
! 'sw1 __MSATHS (sw1, sw1)'        'C = __MSATHS (A, B)'   'MSATHS A,B,C'
! 'uw1 __MSATHU (uw1, uw1)'        'C = __MSATHU (A, B)'   'MSATHU A,B,C'
! 'uw1 __MSLLHI (uw1, const)'      'C = __MSLLHI (A, B)'   'MSLLHI A,#B,C'
! 'sw1 __MSRAHI (sw1, const)'      'C = __MSRAHI (A, B)'   'MSRAHI A,#B,C'
! 'uw1 __MSRLHI (uw1, const)'      'C = __MSRLHI (A, B)'   'MSRLHI A,#B,C'
! 'void __MSUBACCS (acc, acc)'     '__MSUBACCS (B, A)'     'MSUBACCS A,B'
! 'sw1 __MSUBHSS (sw1, sw1)'       'C = __MSUBHSS (A,      'MSUBHSS A,B,C'
!                                  B)'
! 'uw1 __MSUBHUS (uw1, uw1)'       'C = __MSUBHUS (A,      'MSUBHUS A,B,C'
!                                  B)'
! 'void __MTRAP (void)'            '__MTRAP ()'            'MTRAP'
! 'uw2 __MUNPACKH (uw1)'           'B = __MUNPACKH (A)'    'MUNPACKH A,B'
! 'uw1 __MWCUT (uw2, uw1)'         'C = __MWCUT (A, B)'    'MWCUT A,B,C'
! 'void __MWTACC (acc, uw1)'       '__MWTACC (B, A)'       'MWTACC A,B'
! 'void __MWTACCG (acc, uw1)'      '__MWTACCG (B, A)'      'MWTACCG A,B'
! 'uw1 __MXOR (uw1, uw1)'          'C = __MXOR (A, B)'     'MXOR A,B,C'
  
  
  File: gcc.info,  Node: Raw read/write Functions,  Next: Other Built-in Functions,  Prev: Directly-mapped Media Functions,  Up: FR-V Built-in Functions
--- 54984,55126 ----
  
  Function prototype               Example usage           Assembly output
  ---------------------------------------------------------------------------
! â€˜uw1 __MABSHS (sw1)â€™             â€˜B = __MABSHS (A)â€™      â€˜MABSHS A,Bâ€™
! â€˜void __MADDACCS (acc, acc)â€™     â€˜__MADDACCS (B, A)â€™     â€˜MADDACCS A,Bâ€™
! â€˜sw1 __MADDHSS (sw1, sw1)â€™       â€˜C = __MADDHSS (A,      â€˜MADDHSS A,B,Câ€™
!                                  B)â€™
! â€˜uw1 __MADDHUS (uw1, uw1)â€™       â€˜C = __MADDHUS (A,      â€˜MADDHUS A,B,Câ€™
!                                  B)â€™
! â€˜uw1 __MAND (uw1, uw1)â€™          â€˜C = __MAND (A, B)â€™     â€˜MAND A,B,Câ€™
! â€˜void __MASACCS (acc, acc)â€™      â€˜__MASACCS (B, A)â€™      â€˜MASACCS A,Bâ€™
! â€˜uw1 __MAVEH (uw1, uw1)â€™         â€˜C = __MAVEH (A, B)â€™    â€˜MAVEH A,B,Câ€™
! â€˜uw2 __MBTOH (uw1)â€™              â€˜B = __MBTOH (A)â€™       â€˜MBTOH A,Bâ€™
! â€˜void __MBTOHE (uw1 *, uw1)â€™     â€˜__MBTOHE (&B, A)â€™      â€˜MBTOHE A,Bâ€™
! â€˜void __MCLRACC (acc)â€™           â€˜__MCLRACC (A)â€™         â€˜MCLRACC Aâ€™
! â€˜void __MCLRACCA (void)â€™         â€˜__MCLRACCA ()â€™         â€˜MCLRACCAâ€™
! â€˜uw1 __Mcop1 (uw1, uw1)â€™         â€˜C = __Mcop1 (A, B)â€™    â€˜Mcop1 A,B,Câ€™
! â€˜uw1 __Mcop2 (uw1, uw1)â€™         â€˜C = __Mcop2 (A, B)â€™    â€˜Mcop2 A,B,Câ€™
! â€˜uw1 __MCPLHI (uw2, const)â€™      â€˜C = __MCPLHI (A, B)â€™   â€˜MCPLHI A,#B,Câ€™
! â€˜uw1 __MCPLI (uw2, const)â€™       â€˜C = __MCPLI (A, B)â€™    â€˜MCPLI A,#B,Câ€™
! â€˜void __MCPXIS (acc, sw1,        â€˜__MCPXIS (C, A, B)â€™    â€˜MCPXIS A,B,Câ€™
! sw1)â€™
! â€˜void __MCPXIU (acc, uw1,        â€˜__MCPXIU (C, A, B)â€™    â€˜MCPXIU A,B,Câ€™
! uw1)â€™
! â€˜void __MCPXRS (acc, sw1,        â€˜__MCPXRS (C, A, B)â€™    â€˜MCPXRS A,B,Câ€™
! sw1)â€™
! â€˜void __MCPXRU (acc, uw1,        â€˜__MCPXRU (C, A, B)â€™    â€˜MCPXRU A,B,Câ€™
! uw1)â€™
! â€˜uw1 __MCUT (acc, uw1)â€™          â€˜C = __MCUT (A, B)â€™     â€˜MCUT A,B,Câ€™
! â€˜uw1 __MCUTSS (acc, sw1)â€™        â€˜C = __MCUTSS (A, B)â€™   â€˜MCUTSS A,B,Câ€™
! â€˜void __MDADDACCS (acc, acc)â€™    â€˜__MDADDACCS (B, A)â€™    â€˜MDADDACCS A,Bâ€™
! â€˜void __MDASACCS (acc, acc)â€™     â€˜__MDASACCS (B, A)â€™     â€˜MDASACCS A,Bâ€™
! â€˜uw2 __MDCUTSSI (acc, const)â€™    â€˜C = __MDCUTSSI (A,     â€˜MDCUTSSI
!                                  B)â€™                     A,#B,Câ€™
! â€˜uw2 __MDPACKH (uw2, uw2)â€™       â€˜C = __MDPACKH (A,      â€˜MDPACKH A,B,Câ€™
!                                  B)â€™
! â€˜uw2 __MDROTLI (uw2, const)â€™     â€˜C = __MDROTLI (A,      â€˜MDROTLI
!                                  B)â€™                     A,#B,Câ€™
! â€˜void __MDSUBACCS (acc, acc)â€™    â€˜__MDSUBACCS (B, A)â€™    â€˜MDSUBACCS A,Bâ€™
! â€˜void __MDUNPACKH (uw1 *,        â€˜__MDUNPACKH (&B, A)â€™   â€˜MDUNPACKH A,Bâ€™
! uw2)â€™
! â€˜uw2 __MEXPDHD (uw1, const)â€™     â€˜C = __MEXPDHD (A,      â€˜MEXPDHD
!                                  B)â€™                     A,#B,Câ€™
! â€˜uw1 __MEXPDHW (uw1, const)â€™     â€˜C = __MEXPDHW (A,      â€˜MEXPDHW
!                                  B)â€™                     A,#B,Câ€™
! â€˜uw1 __MHDSETH (uw1, const)â€™     â€˜C = __MHDSETH (A,      â€˜MHDSETH
!                                  B)â€™                     A,#B,Câ€™
! â€˜sw1 __MHDSETS (const)â€™          â€˜B = __MHDSETS (A)â€™     â€˜MHDSETS #A,Bâ€™
! â€˜uw1 __MHSETHIH (uw1, const)â€™    â€˜B = __MHSETHIH (B,     â€˜MHSETHIH #A,Bâ€™
!                                  A)â€™
! â€˜sw1 __MHSETHIS (sw1, const)â€™    â€˜B = __MHSETHIS (B,     â€˜MHSETHIS #A,Bâ€™
!                                  A)â€™
! â€˜uw1 __MHSETLOH (uw1, const)â€™    â€˜B = __MHSETLOH (B,     â€˜MHSETLOH #A,Bâ€™
!                                  A)â€™
! â€˜sw1 __MHSETLOS (sw1, const)â€™    â€˜B = __MHSETLOS (B,     â€˜MHSETLOS #A,Bâ€™
!                                  A)â€™
! â€˜uw1 __MHTOB (uw2)â€™              â€˜B = __MHTOB (A)â€™       â€˜MHTOB A,Bâ€™
! â€˜void __MMACHS (acc, sw1,        â€˜__MMACHS (C, A, B)â€™    â€˜MMACHS A,B,Câ€™
! sw1)â€™
! â€˜void __MMACHU (acc, uw1,        â€˜__MMACHU (C, A, B)â€™    â€˜MMACHU A,B,Câ€™
! uw1)â€™
! â€˜void __MMRDHS (acc, sw1,        â€˜__MMRDHS (C, A, B)â€™    â€˜MMRDHS A,B,Câ€™
! sw1)â€™
! â€˜void __MMRDHU (acc, uw1,        â€˜__MMRDHU (C, A, B)â€™    â€˜MMRDHU A,B,Câ€™
! uw1)â€™
! â€˜void __MMULHS (acc, sw1,        â€˜__MMULHS (C, A, B)â€™    â€˜MMULHS A,B,Câ€™
! sw1)â€™
! â€˜void __MMULHU (acc, uw1,        â€˜__MMULHU (C, A, B)â€™    â€˜MMULHU A,B,Câ€™
! uw1)â€™
! â€˜void __MMULXHS (acc, sw1,       â€˜__MMULXHS (C, A, B)â€™   â€˜MMULXHS A,B,Câ€™
! sw1)â€™
! â€˜void __MMULXHU (acc, uw1,       â€˜__MMULXHU (C, A, B)â€™   â€˜MMULXHU A,B,Câ€™
! uw1)â€™
! â€˜uw1 __MNOT (uw1)â€™               â€˜B = __MNOT (A)â€™        â€˜MNOT A,Bâ€™
! â€˜uw1 __MOR (uw1, uw1)â€™           â€˜C = __MOR (A, B)â€™      â€˜MOR A,B,Câ€™
! â€˜uw1 __MPACKH (uh, uh)â€™          â€˜C = __MPACKH (A, B)â€™   â€˜MPACKH A,B,Câ€™
! â€˜sw2 __MQADDHSS (sw2, sw2)â€™      â€˜C = __MQADDHSS (A,     â€˜MQADDHSS
!                                  B)â€™                     A,B,Câ€™
! â€˜uw2 __MQADDHUS (uw2, uw2)â€™      â€˜C = __MQADDHUS (A,     â€˜MQADDHUS
!                                  B)â€™                     A,B,Câ€™
! â€˜void __MQCPXIS (acc, sw2,       â€˜__MQCPXIS (C, A, B)â€™   â€˜MQCPXIS A,B,Câ€™
! sw2)â€™
! â€˜void __MQCPXIU (acc, uw2,       â€˜__MQCPXIU (C, A, B)â€™   â€˜MQCPXIU A,B,Câ€™
! uw2)â€™
! â€˜void __MQCPXRS (acc, sw2,       â€˜__MQCPXRS (C, A, B)â€™   â€˜MQCPXRS A,B,Câ€™
! sw2)â€™
! â€˜void __MQCPXRU (acc, uw2,       â€˜__MQCPXRU (C, A, B)â€™   â€˜MQCPXRU A,B,Câ€™
! uw2)â€™
! â€˜sw2 __MQLCLRHS (sw2, sw2)â€™      â€˜C = __MQLCLRHS (A,     â€˜MQLCLRHS
!                                  B)â€™                     A,B,Câ€™
! â€˜sw2 __MQLMTHS (sw2, sw2)â€™       â€˜C = __MQLMTHS (A,      â€˜MQLMTHS A,B,Câ€™
!                                  B)â€™
! â€˜void __MQMACHS (acc, sw2,       â€˜__MQMACHS (C, A, B)â€™   â€˜MQMACHS A,B,Câ€™
! sw2)â€™
! â€˜void __MQMACHU (acc, uw2,       â€˜__MQMACHU (C, A, B)â€™   â€˜MQMACHU A,B,Câ€™
! uw2)â€™
! â€˜void __MQMACXHS (acc, sw2,      â€˜__MQMACXHS (C, A,      â€˜MQMACXHS
! sw2)â€™                            B)â€™                     A,B,Câ€™
! â€˜void __MQMULHS (acc, sw2,       â€˜__MQMULHS (C, A, B)â€™   â€˜MQMULHS A,B,Câ€™
! sw2)â€™
! â€˜void __MQMULHU (acc, uw2,       â€˜__MQMULHU (C, A, B)â€™   â€˜MQMULHU A,B,Câ€™
! uw2)â€™
! â€˜void __MQMULXHS (acc, sw2,      â€˜__MQMULXHS (C, A,      â€˜MQMULXHS
! sw2)â€™                            B)â€™                     A,B,Câ€™
! â€˜void __MQMULXHU (acc, uw2,      â€˜__MQMULXHU (C, A,      â€˜MQMULXHU
! uw2)â€™                            B)â€™                     A,B,Câ€™
! â€˜sw2 __MQSATHS (sw2, sw2)â€™       â€˜C = __MQSATHS (A,      â€˜MQSATHS A,B,Câ€™
!                                  B)â€™
! â€˜uw2 __MQSLLHI (uw2, int)â€™       â€˜C = __MQSLLHI (A,      â€˜MQSLLHI A,B,Câ€™
!                                  B)â€™
! â€˜sw2 __MQSRAHI (sw2, int)â€™       â€˜C = __MQSRAHI (A,      â€˜MQSRAHI A,B,Câ€™
!                                  B)â€™
! â€˜sw2 __MQSUBHSS (sw2, sw2)â€™      â€˜C = __MQSUBHSS (A,     â€˜MQSUBHSS
!                                  B)â€™                     A,B,Câ€™
! â€˜uw2 __MQSUBHUS (uw2, uw2)â€™      â€˜C = __MQSUBHUS (A,     â€˜MQSUBHUS
!                                  B)â€™                     A,B,Câ€™
! â€˜void __MQXMACHS (acc, sw2,      â€˜__MQXMACHS (C, A,      â€˜MQXMACHS
! sw2)â€™                            B)â€™                     A,B,Câ€™
! â€˜void __MQXMACXHS (acc, sw2,     â€˜__MQXMACXHS (C, A,     â€˜MQXMACXHS
! sw2)â€™                            B)â€™                     A,B,Câ€™
! â€˜uw1 __MRDACC (acc)â€™             â€˜B = __MRDACC (A)â€™      â€˜MRDACC A,Bâ€™
! â€˜uw1 __MRDACCG (acc)â€™            â€˜B = __MRDACCG (A)â€™     â€˜MRDACCG A,Bâ€™
! â€˜uw1 __MROTLI (uw1, const)â€™      â€˜C = __MROTLI (A, B)â€™   â€˜MROTLI A,#B,Câ€™
! â€˜uw1 __MROTRI (uw1, const)â€™      â€˜C = __MROTRI (A, B)â€™   â€˜MROTRI A,#B,Câ€™
! â€˜sw1 __MSATHS (sw1, sw1)â€™        â€˜C = __MSATHS (A, B)â€™   â€˜MSATHS A,B,Câ€™
! â€˜uw1 __MSATHU (uw1, uw1)â€™        â€˜C = __MSATHU (A, B)â€™   â€˜MSATHU A,B,Câ€™
! â€˜uw1 __MSLLHI (uw1, const)â€™      â€˜C = __MSLLHI (A, B)â€™   â€˜MSLLHI A,#B,Câ€™
! â€˜sw1 __MSRAHI (sw1, const)â€™      â€˜C = __MSRAHI (A, B)â€™   â€˜MSRAHI A,#B,Câ€™
! â€˜uw1 __MSRLHI (uw1, const)â€™      â€˜C = __MSRLHI (A, B)â€™   â€˜MSRLHI A,#B,Câ€™
! â€˜void __MSUBACCS (acc, acc)â€™     â€˜__MSUBACCS (B, A)â€™     â€˜MSUBACCS A,Bâ€™
! â€˜sw1 __MSUBHSS (sw1, sw1)â€™       â€˜C = __MSUBHSS (A,      â€˜MSUBHSS A,B,Câ€™
!                                  B)â€™
! â€˜uw1 __MSUBHUS (uw1, uw1)â€™       â€˜C = __MSUBHUS (A,      â€˜MSUBHUS A,B,Câ€™
!                                  B)â€™
! â€˜void __MTRAP (void)â€™            â€˜__MTRAP ()â€™            â€˜MTRAPâ€™
! â€˜uw2 __MUNPACKH (uw1)â€™           â€˜B = __MUNPACKH (A)â€™    â€˜MUNPACKH A,Bâ€™
! â€˜uw1 __MWCUT (uw2, uw1)â€™         â€˜C = __MWCUT (A, B)â€™    â€˜MWCUT A,B,Câ€™
! â€˜void __MWTACC (acc, uw1)â€™       â€˜__MWTACC (B, A)â€™       â€˜MWTACC A,Bâ€™
! â€˜void __MWTACCG (acc, uw1)â€™      â€˜__MWTACCG (B, A)â€™      â€˜MWTACCG A,Bâ€™
! â€˜uw1 __MXOR (uw1, uw1)â€™          â€˜C = __MXOR (A, B)â€™     â€˜MXOR A,B,Câ€™
  
  
  File: gcc.info,  Node: Raw read/write Functions,  Next: Other Built-in Functions,  Prev: Directly-mapped Media Functions,  Up: FR-V Built-in Functions
*************** File: gcc.info,  Node: Raw read/write Fu
*** 55120,55138 ****
  ..................................
  
  This sections describes built-in functions related to read and write
! instructions to access memory.  These functions generate 'membar'
  instructions to flush the I/O load and stores where appropriate, as
  described in Fujitsu's manual described above.
  
! 'unsigned char __builtin_read8 (void *DATA)'
! 'unsigned short __builtin_read16 (void *DATA)'
! 'unsigned long __builtin_read32 (void *DATA)'
! 'unsigned long long __builtin_read64 (void *DATA)'
  
! 'void __builtin_write8 (void *DATA, unsigned char DATUM)'
! 'void __builtin_write16 (void *DATA, unsigned short DATUM)'
! 'void __builtin_write32 (void *DATA, unsigned long DATUM)'
! 'void __builtin_write64 (void *DATA, unsigned long long DATUM)'
  
  
  File: gcc.info,  Node: Other Built-in Functions,  Prev: Raw read/write Functions,  Up: FR-V Built-in Functions
--- 55129,55147 ----
  ..................................
  
  This sections describes built-in functions related to read and write
! instructions to access memory.  These functions generate â€˜membarâ€™
  instructions to flush the I/O load and stores where appropriate, as
  described in Fujitsu's manual described above.
  
! â€˜unsigned char __builtin_read8 (void *DATA)â€™
! â€˜unsigned short __builtin_read16 (void *DATA)â€™
! â€˜unsigned long __builtin_read32 (void *DATA)â€™
! â€˜unsigned long long __builtin_read64 (void *DATA)â€™
  
! â€˜void __builtin_write8 (void *DATA, unsigned char DATUM)â€™
! â€˜void __builtin_write16 (void *DATA, unsigned short DATUM)â€™
! â€˜void __builtin_write32 (void *DATA, unsigned long DATUM)â€™
! â€˜void __builtin_write64 (void *DATA, unsigned long long DATUM)â€™
  
  
  File: gcc.info,  Node: Other Built-in Functions,  Prev: Raw read/write Functions,  Up: FR-V Built-in Functions
*************** File: gcc.info,  Node: Other Built-in Fu
*** 55143,55170 ****
  This section describes built-in functions that are not named after a
  specific FR-V instruction.
  
! 'sw2 __IACCreadll (iacc REG)'
       Return the full 64-bit value of IACC0.  The REG argument is
       reserved for future expansion and must be 0.
  
! 'sw1 __IACCreadl (iacc REG)'
       Return the value of IACC0H if REG is 0 and IACC0L if REG is 1.
       Other values of REG are rejected as invalid.
  
! 'void __IACCsetll (iacc REG, sw2 X)'
       Set the full 64-bit value of IACC0 to X.  The REG argument is
       reserved for future expansion and must be 0.
  
! 'void __IACCsetl (iacc REG, sw1 X)'
       Set IACC0H to X if REG is 0 and IACC0L to X if REG is 1.  Other
       values of REG are rejected as invalid.
  
! 'void __data_prefetch0 (const void *X)'
!      Use the 'dcpl' instruction to load the contents of address X into
       the data cache.
  
! 'void __data_prefetch (const void *X)'
!      Use the 'nldub' instruction to load the contents of address X into
       the data cache.  The instruction is issued in slot I1.
  
  
--- 55152,55179 ----
  This section describes built-in functions that are not named after a
  specific FR-V instruction.
  
! â€˜sw2 __IACCreadll (iacc REG)â€™
       Return the full 64-bit value of IACC0.  The REG argument is
       reserved for future expansion and must be 0.
  
! â€˜sw1 __IACCreadl (iacc REG)â€™
       Return the value of IACC0H if REG is 0 and IACC0L if REG is 1.
       Other values of REG are rejected as invalid.
  
! â€˜void __IACCsetll (iacc REG, sw2 X)â€™
       Set the full 64-bit value of IACC0 to X.  The REG argument is
       reserved for future expansion and must be 0.
  
! â€˜void __IACCsetl (iacc REG, sw1 X)â€™
       Set IACC0H to X if REG is 0 and IACC0L to X if REG is 1.  Other
       values of REG are rejected as invalid.
  
! â€˜void __data_prefetch0 (const void *X)â€™
!      Use the â€˜dcplâ€™ instruction to load the contents of address X into
       the data cache.
  
! â€˜void __data_prefetch (const void *X)â€™
!      Use the â€˜nldubâ€™ instruction to load the contents of address X into
       the data cache.  The instruction is issued in slot I1.
  
  
*************** File: gcc.info,  Node: LoongArch Base Bu
*** 55176,55185 ****
  These built-in functions are available for LoongArch.
  
   Data Type Description:
!    * 'imm0_31', a compile-time constant in range 0 to 31;
!    * 'imm0_16383', a compile-time constant in range 0 to 16383;
!    * 'imm0_32767', a compile-time constant in range 0 to 32767;
!    * 'imm_n2048_2047', a compile-time constant in range -2048 to 2047;
  
   The intrinsics provided are listed below:
           unsigned int __builtin_loongarch_movfcsr2gr (imm0_31)
--- 55185,55194 ----
  These built-in functions are available for LoongArch.
  
   Data Type Description:
!    â€¢ â€˜imm0_31â€™, a compile-time constant in range 0 to 31;
!    â€¢ â€˜imm0_16383â€™, a compile-time constant in range 0 to 16383;
!    â€¢ â€˜imm0_32767â€™, a compile-time constant in range 0 to 32767;
!    â€¢ â€˜imm_n2048_2047â€™, a compile-time constant in range -2048 to 2047;
  
   The intrinsics provided are listed below:
           unsigned int __builtin_loongarch_movfcsr2gr (imm0_31)
*************** These built-in functions are available f
*** 55222,55228 ****
           void __builtin_loongarch_syscall (imm0_32767)
           void __builtin_loongarch_break (imm0_32767)
  
!  These intrinsic functions are available by using '-mfrecipe'.
           float __builtin_loongarch_frecipe_s (float);
           double  __builtin_loongarch_frecipe_d (double);
           float __builtin_loongarch_frsqrte_s (float);
--- 55231,55237 ----
           void __builtin_loongarch_syscall (imm0_32767)
           void __builtin_loongarch_break (imm0_32767)
  
!  These intrinsic functions are available by using â€˜-mfrecipeâ€™.
           float __builtin_loongarch_frecipe_s (float);
           double  __builtin_loongarch_frecipe_d (double);
           float __builtin_loongarch_frsqrte_s (float);
*************** implemented as follows:
*** 55238,55246 ****
         __builtin_loongarch_csrrd_d  // When reading the 64-bit control register use.
  
   For the convenience of use, the built-in functions are encapsulated,
! the encapsulated functions and '__drdtime_t, __rdtime_t' are defined in
! the 'larchintrin.h'.  So if you call the following function you need to
! include 'larchintrin.h'.
  
            typedef struct drdtime{
                   unsigned long dvalue;
--- 55247,55255 ----
         __builtin_loongarch_csrrd_d  // When reading the 64-bit control register use.
  
   For the convenience of use, the built-in functions are encapsulated,
! the encapsulated functions and â€˜__drdtime_t, __rdtime_tâ€™ are defined in
! the â€˜larchintrin.hâ€™.  So if you call the following function you need to
! include â€˜larchintrin.hâ€™.
  
            typedef struct drdtime{
                   unsigned long dvalue;
*************** include 'larchintrin.h'.
*** 55295,55302 ****
           void __syscall (imm0_32767)
           void __break (imm0_32767)
  
!  These intrinsic functions are available by including 'larchintrin.h'
! and using '-mfrecipe'.
           float __frecipe_s (float);
           double __frecipe_d (double);
           float __frsqrte_s (float);
--- 55304,55311 ----
           void __syscall (imm0_32767)
           void __break (imm0_32767)
  
!  These intrinsic functions are available by including â€˜larchintrin.hâ€™
! and using â€˜-mfrecipeâ€™.
           float __frecipe_s (float);
           double __frecipe_d (double);
           float __frsqrte_s (float);
*************** values.
*** 55314,55320 ****
       __float128 __builtin_nanq (void);
       __float128 __builtin_nansq (void);
  
!  Returns the value that is currently set in the 'tp' register.
           void * __builtin_thread_pointer (void)
  
  
--- 55323,55329 ----
       __float128 __builtin_nanq (void);
       __float128 __builtin_nansq (void);
  
!  Returns the value that is currently set in the â€˜tpâ€™ register.
           void * __builtin_thread_pointer (void)
  
  
*************** File: gcc.info,  Node: LoongArch SX Vect
*** 55325,55357 ****
  
  GCC provides intrinsics to access the LSX (Loongson SIMD Extension)
  instructions.  The interface is made available by including
! '<lsxintrin.h>' and using '-mlsx'.
  
!  The following vectors typedefs are included in 'lsxintrin.h':
  
!    * '__m128i', a 128-bit vector of fixed point;
!    * '__m128', a 128-bit vector of single precision floating point;
!    * '__m128d', a 128-bit vector of double precision floating point.
  
   Instructions and corresponding built-ins may have additional
  restrictions and/or input/output values manipulated:
!    * 'imm0_1', an integer literal in range 0 to 1;
!    * 'imm0_3', an integer literal in range 0 to 3;
!    * 'imm0_7', an integer literal in range 0 to 7;
!    * 'imm0_15', an integer literal in range 0 to 15;
!    * 'imm0_31', an integer literal in range 0 to 31;
!    * 'imm0_63', an integer literal in range 0 to 63;
!    * 'imm0_127', an integer literal in range 0 to 127;
!    * 'imm0_255', an integer literal in range 0 to 255;
!    * 'imm_n16_15', an integer literal in range -16 to 15;
!    * 'imm_n128_127', an integer literal in range -128 to 127;
!    * 'imm_n256_255', an integer literal in range -256 to 255;
!    * 'imm_n512_511', an integer literal in range -512 to 511;
!    * 'imm_n1024_1023', an integer literal in range -1024 to 1023;
!    * 'imm_n2048_2047', an integer literal in range -2048 to 2047.
  
!  For convenience, GCC defines functions '__lsx_vrepli_{b/h/w/d}' and
! '__lsx_b[n]z_{v/b/h/w/d}', which are implemented as follows:
  
       a. __lsx_vrepli_{b/h/w/d}: Implemented the case where the highest
          bit of vldi instruction i13 is 1.
--- 55334,55366 ----
  
  GCC provides intrinsics to access the LSX (Loongson SIMD Extension)
  instructions.  The interface is made available by including
! â€˜<lsxintrin.h>â€™ and using â€˜-mlsxâ€™.
  
!  The following vectors typedefs are included in â€˜lsxintrin.hâ€™:
  
!    â€¢ â€˜__m128iâ€™, a 128-bit vector of fixed point;
!    â€¢ â€˜__m128â€™, a 128-bit vector of single precision floating point;
!    â€¢ â€˜__m128dâ€™, a 128-bit vector of double precision floating point.
  
   Instructions and corresponding built-ins may have additional
  restrictions and/or input/output values manipulated:
!    â€¢ â€˜imm0_1â€™, an integer literal in range 0 to 1;
!    â€¢ â€˜imm0_3â€™, an integer literal in range 0 to 3;
!    â€¢ â€˜imm0_7â€™, an integer literal in range 0 to 7;
!    â€¢ â€˜imm0_15â€™, an integer literal in range 0 to 15;
!    â€¢ â€˜imm0_31â€™, an integer literal in range 0 to 31;
!    â€¢ â€˜imm0_63â€™, an integer literal in range 0 to 63;
!    â€¢ â€˜imm0_127â€™, an integer literal in range 0 to 127;
!    â€¢ â€˜imm0_255â€™, an integer literal in range 0 to 255;
!    â€¢ â€˜imm_n16_15â€™, an integer literal in range -16 to 15;
!    â€¢ â€˜imm_n128_127â€™, an integer literal in range -128 to 127;
!    â€¢ â€˜imm_n256_255â€™, an integer literal in range -256 to 255;
!    â€¢ â€˜imm_n512_511â€™, an integer literal in range -512 to 511;
!    â€¢ â€˜imm_n1024_1023â€™, an integer literal in range -1024 to 1023;
!    â€¢ â€˜imm_n2048_2047â€™, an integer literal in range -2048 to 2047.
  
!  For convenience, GCC defines functions â€˜__lsx_vrepli_{b/h/w/d}â€™ and
! â€˜__lsx_b[n]z_{v/b/h/w/d}â€™, which are implemented as follows:
  
       a. __lsx_vrepli_{b/h/w/d}: Implemented the case where the highest
          bit of vldi instruction i13 is 1.
*************** operand.
*** 56126,56133 ****
       __m128i __lsx_vxori_b (__m128i, imm0_255);
       __m128i __lsx_vxor_v (__m128i, __m128i);
  
!  These intrinsic functions are available by including 'lsxintrin.h' and
! using '-mfrecipe' and '-mlsx'.
       __m128d __lsx_vfrecipe_d (__m128d);
       __m128 __lsx_vfrecipe_s (__m128);
       __m128d __lsx_vfrsqrte_d (__m128d);
--- 56135,56142 ----
       __m128i __lsx_vxori_b (__m128i, imm0_255);
       __m128i __lsx_vxor_v (__m128i, __m128i);
  
!  These intrinsic functions are available by including â€˜lsxintrin.hâ€™ and
! using â€˜-mfrecipeâ€™ and â€˜-mlsxâ€™.
       __m128d __lsx_vfrecipe_d (__m128d);
       __m128 __lsx_vfrecipe_s (__m128);
       __m128d __lsx_vfrsqrte_d (__m128d);
*************** File: gcc.info,  Node: LoongArch ASX Vec
*** 56141,56174 ****
  
  GCC provides intrinsics to access the LASX (Loongson Advanced SIMD
  Extension) instructions.  The interface is made available by including
! '<lasxintrin.h>' and using '-mlasx'.
  
!  The following vectors typedefs are included in 'lasxintrin.h':
  
!    * '__m256i', a 256-bit vector of fixed point;
!    * '__m256', a 256-bit vector of single precision floating point;
!    * '__m256d', a 256-bit vector of double precision floating point.
  
   Instructions and corresponding built-ins may have additional
  restrictions and/or input/output values manipulated:
  
!    * 'imm0_1', an integer literal in range 0 to 1.
!    * 'imm0_3', an integer literal in range 0 to 3.
!    * 'imm0_7', an integer literal in range 0 to 7.
!    * 'imm0_15', an integer literal in range 0 to 15.
!    * 'imm0_31', an integer literal in range 0 to 31.
!    * 'imm0_63', an integer literal in range 0 to 63.
!    * 'imm0_127', an integer literal in range 0 to 127.
!    * 'imm0_255', an integer literal in range 0 to 255.
!    * 'imm_n16_15', an integer literal in range -16 to 15.
!    * 'imm_n128_127', an integer literal in range -128 to 127.
!    * 'imm_n256_255', an integer literal in range -256 to 255.
!    * 'imm_n512_511', an integer literal in range -512 to 511.
!    * 'imm_n1024_1023', an integer literal in range -1024 to 1023.
!    * 'imm_n2048_2047', an integer literal in range -2048 to 2047.
  
!  For convenience, GCC defines functions '__lasx_xvrepli_{b/h/w/d}' and
! '__lasx_b[n]z_{v/b/h/w/d}', which are implemented as follows:
  
       a. __lasx_xvrepli_{b/h/w/d}: Implemented the case where the highest
          bit of xvldi instruction i13 is 1.
--- 56150,56183 ----
  
  GCC provides intrinsics to access the LASX (Loongson Advanced SIMD
  Extension) instructions.  The interface is made available by including
! â€˜<lasxintrin.h>â€™ and using â€˜-mlasxâ€™.
  
!  The following vectors typedefs are included in â€˜lasxintrin.hâ€™:
  
!    â€¢ â€˜__m256iâ€™, a 256-bit vector of fixed point;
!    â€¢ â€˜__m256â€™, a 256-bit vector of single precision floating point;
!    â€¢ â€˜__m256dâ€™, a 256-bit vector of double precision floating point.
  
   Instructions and corresponding built-ins may have additional
  restrictions and/or input/output values manipulated:
  
!    â€¢ â€˜imm0_1â€™, an integer literal in range 0 to 1.
!    â€¢ â€˜imm0_3â€™, an integer literal in range 0 to 3.
!    â€¢ â€˜imm0_7â€™, an integer literal in range 0 to 7.
!    â€¢ â€˜imm0_15â€™, an integer literal in range 0 to 15.
!    â€¢ â€˜imm0_31â€™, an integer literal in range 0 to 31.
!    â€¢ â€˜imm0_63â€™, an integer literal in range 0 to 63.
!    â€¢ â€˜imm0_127â€™, an integer literal in range 0 to 127.
!    â€¢ â€˜imm0_255â€™, an integer literal in range 0 to 255.
!    â€¢ â€˜imm_n16_15â€™, an integer literal in range -16 to 15.
!    â€¢ â€˜imm_n128_127â€™, an integer literal in range -128 to 127.
!    â€¢ â€˜imm_n256_255â€™, an integer literal in range -256 to 255.
!    â€¢ â€˜imm_n512_511â€™, an integer literal in range -512 to 511.
!    â€¢ â€˜imm_n1024_1023â€™, an integer literal in range -1024 to 1023.
!    â€¢ â€˜imm_n2048_2047â€™, an integer literal in range -2048 to 2047.
  
!  For convenience, GCC defines functions â€˜__lasx_xvrepli_{b/h/w/d}â€™ and
! â€˜__lasx_b[n]z_{v/b/h/w/d}â€™, which are implemented as follows:
  
       a. __lasx_xvrepli_{b/h/w/d}: Implemented the case where the highest
          bit of xvldi instruction i13 is 1.
*************** operand.
*** 56963,56970 ****
       __m256i __lasx_xvxori_b (__m256i, imm0_255);
       __m256i __lasx_xvxor_v (__m256i, __m256i);
  
!  These intrinsic functions are available by including 'lasxintrin.h' and
! using '-mfrecipe' and '-mlasx'.
       __m256d __lasx_xvfrecipe_d (__m256d);
       __m256 __lasx_xvfrecipe_s (__m256);
       __m256d __lasx_xvfrsqrte_d (__m256d);
--- 56972,56979 ----
       __m256i __lasx_xvxori_b (__m256i, imm0_255);
       __m256i __lasx_xvxor_v (__m256i, __m256i);
  
!  These intrinsic functions are available by including â€˜lasxintrin.hâ€™ and
! using â€˜-mfrecipeâ€™ and â€˜-mlasxâ€™.
       __m256d __lasx_xvfrecipe_d (__m256d);
       __m256 __lasx_xvfrecipe_s (__m256);
       __m256d __lasx_xvfrsqrte_d (__m256d);
*************** media applications.  It provides instruc
*** 56983,56995 ****
  
   GCC supports MIPS DSP operations using both the generic vector
  extensions (*note Vector Extensions::) and a collection of MIPS-specific
! built-in functions.  Both kinds of support are enabled by the '-mdsp'
  command-line option.
  
   Revision 2 of the ASE was introduced in the second half of 2006.  This
  revision adds extra instructions to the original ASE, but is otherwise
  backwards-compatible with it.  You can select revision 2 using the
! command-line option '-mdspr2'; this option implies '-mdsp'.
  
   The SCOUNT and POS bits of the DSP control register are global.  The
  WRDSP, EXTPDP, EXTPDPV and MTHLIP instructions modify the SCOUNT and POS
--- 56992,57004 ----
  
   GCC supports MIPS DSP operations using both the generic vector
  extensions (*note Vector Extensions::) and a collection of MIPS-specific
! built-in functions.  Both kinds of support are enabled by the â€˜-mdspâ€™
  command-line option.
  
   Revision 2 of the ASE was introduced in the second half of 2006.  This
  revision adds extra instructions to the original ASE, but is otherwise
  backwards-compatible with it.  You can select revision 2 using the
! command-line option â€˜-mdspr2â€™; this option implies â€˜-mdspâ€™.
  
   The SCOUNT and POS bits of the DSP control register are global.  The
  WRDSP, EXTPDP, EXTPDPV and MTHLIP instructions modify the SCOUNT and POS
*************** instructions.
*** 56999,57015 ****
  
   At present, GCC only provides support for operations on 32-bit vectors.
  The vector type associated with 8-bit integer data is usually called
! 'v4i8', the vector type associated with Q7 is usually called 'v4q7', the
  vector type associated with 16-bit integer data is usually called
! 'v2i16', and the vector type associated with Q15 is usually called
! 'v2q15'.  They can be defined in C as follows:
  
       typedef signed char v4i8 __attribute__ ((vector_size(4)));
       typedef signed char v4q7 __attribute__ ((vector_size(4)));
       typedef short v2i16 __attribute__ ((vector_size(4)));
       typedef short v2q15 __attribute__ ((vector_size(4)));
  
!  'v4i8', 'v4q7', 'v2i16' and 'v2q15' values are initialized in the same
  way as aggregates.  For example:
  
       v4i8 a = {1, 2, 3, 4};
--- 57008,57024 ----
  
   At present, GCC only provides support for operations on 32-bit vectors.
  The vector type associated with 8-bit integer data is usually called
! â€˜v4i8â€™, the vector type associated with Q7 is usually called â€˜v4q7â€™, the
  vector type associated with 16-bit integer data is usually called
! â€˜v2i16â€™, and the vector type associated with Q15 is usually called
! â€˜v2q15â€™.  They can be defined in C as follows:
  
       typedef signed char v4i8 __attribute__ ((vector_size(4)));
       typedef signed char v4q7 __attribute__ ((vector_size(4)));
       typedef short v2i16 __attribute__ ((vector_size(4)));
       typedef short v2q15 __attribute__ ((vector_size(4)));
  
!  â€˜v4i8â€™, â€˜v4q7â€™, â€˜v2i16â€™ and â€˜v2q15â€™ values are initialized in the same
  way as aggregates.  For example:
  
       v4i8 a = {1, 2, 3, 4};
*************** way as aggregates.  For example:
*** 57024,57055 ****
  packed.  On little-endian targets, the first value is the least
  significant and the last value is the most significant.  The opposite
  order applies to big-endian targets.  For example, the code above sets
! the lowest byte of 'a' to '1' on little-endian targets and '4' on
  big-endian targets.
  
   _Note:_ Q7, Q15 and Q31 values must be initialized with their integer
  representation.  As shown in this example, the integer representation of
  a Q7 value can be obtained by multiplying the fractional value by
! '0x1.0p7'.  The equivalent for Q15 values is to multiply by '0x1.0p15'.
! The equivalent for Q31 values is to multiply by '0x1.0p31'.
  
!  The table below lists the 'v4i8' and 'v2q15' operations for which
! hardware support exists.  'a' and 'b' are 'v4i8' values, and 'c' and 'd'
! are 'v2q15' values.
  
  C code                               MIPS instruction
  --------------------------------------------------------------------------
! 'a + b'                              'addu.qb'
! 'c + d'                              'addq.ph'
! 'a - b'                              'subu.qb'
! 'c - d'                              'subq.ph'
  
!  The table below lists the 'v2i16' operation for which hardware support
! exists for the DSP ASE REV 2.  'e' and 'f' are 'v2i16' values.
  
  C code                               MIPS instruction
  --------------------------------------------------------------------------
! 'e * f'                              'mul.ph'
  
   It is easier to describe the DSP built-in functions if we first define
  the following types:
--- 57033,57064 ----
  packed.  On little-endian targets, the first value is the least
  significant and the last value is the most significant.  The opposite
  order applies to big-endian targets.  For example, the code above sets
! the lowest byte of â€˜aâ€™ to â€˜1â€™ on little-endian targets and â€˜4â€™ on
  big-endian targets.
  
   _Note:_ Q7, Q15 and Q31 values must be initialized with their integer
  representation.  As shown in this example, the integer representation of
  a Q7 value can be obtained by multiplying the fractional value by
! â€˜0x1.0p7â€™.  The equivalent for Q15 values is to multiply by â€˜0x1.0p15â€™.
! The equivalent for Q31 values is to multiply by â€˜0x1.0p31â€™.
  
!  The table below lists the â€˜v4i8â€™ and â€˜v2q15â€™ operations for which
! hardware support exists.  â€˜aâ€™ and â€˜bâ€™ are â€˜v4i8â€™ values, and â€˜câ€™ and â€˜dâ€™
! are â€˜v2q15â€™ values.
  
  C code                               MIPS instruction
  --------------------------------------------------------------------------
! â€˜a + bâ€™                              â€˜addu.qbâ€™
! â€˜c + dâ€™                              â€˜addq.phâ€™
! â€˜a - bâ€™                              â€˜subu.qbâ€™
! â€˜c - dâ€™                              â€˜subq.phâ€™
  
!  The table below lists the â€˜v2i16â€™ operation for which hardware support
! exists for the DSP ASE REV 2.  â€˜eâ€™ and â€˜fâ€™ are â€˜v2i16â€™ values.
  
  C code                               MIPS instruction
  --------------------------------------------------------------------------
! â€˜e * fâ€™                              â€˜mul.phâ€™
  
   It is easier to describe the DSP built-in functions if we first define
  the following types:
*************** the following types:
*** 57059,57069 ****
       typedef unsigned int ui32;
       typedef long long a64;
  
!  'q31' and 'i32' are actually the same as 'int', but we use 'q31' to
! indicate a Q31 fractional value and 'i32' to indicate a 32-bit integer
! value.  Similarly, 'a64' is the same as 'long long', but we use 'a64' to
  indicate values that are placed in one of the four DSP accumulators
! ('$ac0', '$ac1', '$ac2' or '$ac3').
  
   Also, some built-in functions prefer or require immediate numbers as
  parameters, because the corresponding DSP instructions accept both
--- 57068,57078 ----
       typedef unsigned int ui32;
       typedef long long a64;
  
!  â€˜q31â€™ and â€˜i32â€™ are actually the same as â€˜intâ€™, but we use â€˜q31â€™ to
! indicate a Q31 fractional value and â€˜i32â€™ to indicate a 32-bit integer
! value.  Similarly, â€˜a64â€™ is the same as â€˜long longâ€™, but we use â€˜a64â€™ to
  indicate values that are placed in one of the four DSP accumulators
! (â€˜$ac0â€™, â€˜$ac1â€™, â€˜$ac2â€™ or â€˜$ac3â€™).
  
   Also, some built-in functions prefer or require immediate numbers as
  parameters, because the corresponding DSP instructions accept both
*************** the "upper half" and the other being des
*** 57259,57272 ****
   GCC supports paired-single operations using both the generic vector
  extensions (*note Vector Extensions::) and a collection of MIPS-specific
  built-in functions.  Both kinds of support are enabled by the
! '-mpaired-single' command-line option.
  
   The vector type associated with paired-single values is usually called
! 'v2sf'.  It can be defined in C as follows:
  
       typedef float v2sf __attribute__ ((vector_size (8)));
  
!  'v2sf' values are initialized in the same way as aggregates.  For
  example:
  
       v2sf a = {1.5, 9.1};
--- 57268,57281 ----
   GCC supports paired-single operations using both the generic vector
  extensions (*note Vector Extensions::) and a collection of MIPS-specific
  built-in functions.  Both kinds of support are enabled by the
! â€˜-mpaired-singleâ€™ command-line option.
  
   The vector type associated with paired-single values is usually called
! â€˜v2sfâ€™.  It can be defined in C as follows:
  
       typedef float v2sf __attribute__ ((vector_size (8)));
  
!  â€˜v2sfâ€™ values are initialized in the same way as aggregates.  For
  example:
  
       v2sf a = {1.5, 9.1};
*************** example:
*** 57278,57285 ****
  upper half of a register and which value is stored in the lower half.
  On little-endian targets, the first value is the lower one and the
  second value is the upper one.  The opposite order applies to big-endian
! targets.  For example, the code above sets the lower half of 'a' to
! '1.5' on little-endian targets and '9.1' on big-endian targets.
  
  
  File: gcc.info,  Node: MIPS Loongson Built-in Functions,  Next: MIPS SIMD Architecture (MSA) Support,  Prev: MIPS Paired-Single Support,  Up: Target Builtins
--- 57287,57294 ----
  upper half of a register and which value is stored in the lower half.
  On little-endian targets, the first value is the lower one and the
  second value is the upper one.  The opposite order applies to big-endian
! targets.  For example, the code above sets the lower half of â€˜aâ€™ to
! â€˜1.5â€™ on little-endian targets and â€˜9.1â€™ on big-endian targets.
  
  
  File: gcc.info,  Node: MIPS Loongson Built-in Functions,  Next: MIPS SIMD Architecture (MSA) Support,  Prev: MIPS Paired-Single Support,  Up: Target Builtins
*************** File: gcc.info,  Node: MIPS Loongson Bui
*** 57289,57303 ****
  
  GCC provides intrinsics to access the SIMD instructions provided by the
  ST Microelectronics Loongson-2E and -2F processors.  These intrinsics,
! available after inclusion of the 'loongson.h' header file, operate on
  the following 64-bit vector types:
  
!    * 'uint8x8_t', a vector of eight unsigned 8-bit integers;
!    * 'uint16x4_t', a vector of four unsigned 16-bit integers;
!    * 'uint32x2_t', a vector of two unsigned 32-bit integers;
!    * 'int8x8_t', a vector of eight signed 8-bit integers;
!    * 'int16x4_t', a vector of four signed 16-bit integers;
!    * 'int32x2_t', a vector of two signed 32-bit integers.
  
   The intrinsics provided are listed below; each is named after the
  machine instruction to which it corresponds, with suffixes added as
--- 57298,57312 ----
  
  GCC provides intrinsics to access the SIMD instructions provided by the
  ST Microelectronics Loongson-2E and -2F processors.  These intrinsics,
! available after inclusion of the â€˜loongson.hâ€™ header file, operate on
  the following 64-bit vector types:
  
!    â€¢ â€˜uint8x8_tâ€™, a vector of eight unsigned 8-bit integers;
!    â€¢ â€˜uint16x4_tâ€™, a vector of four unsigned 16-bit integers;
!    â€¢ â€˜uint32x2_tâ€™, a vector of two unsigned 32-bit integers;
!    â€¢ â€˜int8x8_tâ€™, a vector of eight signed 8-bit integers;
!    â€¢ â€˜int16x4_tâ€™, a vector of four signed 16-bit integers;
!    â€¢ â€˜int32x2_tâ€™, a vector of two signed 32-bit integers.
  
   The intrinsics provided are listed below; each is named after the
  machine instruction to which it corresponds, with suffixes added as
*************** File: gcc.info,  Node: Paired-Single Ari
*** 57418,57441 ****
  7.13.18.1 Paired-Single Arithmetic
  ..................................
  
! The table below lists the 'v2sf' operations for which hardware support
! exists.  'a', 'b' and 'c' are 'v2sf' values and 'x' is an integral
  value.
  
  C code                               MIPS instruction
  --------------------------------------------------------------------------
! 'a + b'                              'add.ps'
! 'a - b'                              'sub.ps'
! '-a'                                 'neg.ps'
! 'a * b'                              'mul.ps'
! 'a * b + c'                          'madd.ps'
! 'a * b - c'                          'msub.ps'
! '-(a * b + c)'                       'nmadd.ps'
! '-(a * b - c)'                       'nmsub.ps'
! 'x ? a : b'                          'movn.ps'/'movz.ps'
  
   Note that the multiply-accumulate instructions can be disabled using
! the command-line option '-mno-fused-madd'.
  
  
  File: gcc.info,  Node: Paired-Single Built-in Functions,  Next: MIPS-3D Built-in Functions,  Prev: Paired-Single Arithmetic,  Up: MIPS Loongson Built-in Functions
--- 57427,57450 ----
  7.13.18.1 Paired-Single Arithmetic
  ..................................
  
! The table below lists the â€˜v2sfâ€™ operations for which hardware support
! exists.  â€˜aâ€™, â€˜bâ€™ and â€˜câ€™ are â€˜v2sfâ€™ values and â€˜xâ€™ is an integral
  value.
  
  C code                               MIPS instruction
  --------------------------------------------------------------------------
! â€˜a + bâ€™                              â€˜add.psâ€™
! â€˜a - bâ€™                              â€˜sub.psâ€™
! â€˜-aâ€™                                 â€˜neg.psâ€™
! â€˜a * bâ€™                              â€˜mul.psâ€™
! â€˜a * b + câ€™                          â€˜madd.psâ€™
! â€˜a * b - câ€™                          â€˜msub.psâ€™
! â€˜-(a * b + c)â€™                       â€˜nmadd.psâ€™
! â€˜-(a * b - c)â€™                       â€˜nmsub.psâ€™
! â€˜x ? a : bâ€™                          â€˜movn.psâ€™/â€˜movz.psâ€™
  
   Note that the multiply-accumulate instructions can be disabled using
! the command-line option â€˜-mno-fused-maddâ€™.
  
  
  File: gcc.info,  Node: Paired-Single Built-in Functions,  Next: MIPS-3D Built-in Functions,  Prev: Paired-Single Arithmetic,  Up: MIPS Loongson Built-in Functions
*************** The following paired-single functions ma
*** 57447,57508 ****
  instruction.  Please refer to the architecture specification for details
  on what each instruction does.
  
! 'v2sf __builtin_mips_pll_ps (v2sf, v2sf)'
!      Pair lower lower ('pll.ps').
  
! 'v2sf __builtin_mips_pul_ps (v2sf, v2sf)'
!      Pair upper lower ('pul.ps').
  
! 'v2sf __builtin_mips_plu_ps (v2sf, v2sf)'
!      Pair lower upper ('plu.ps').
  
! 'v2sf __builtin_mips_puu_ps (v2sf, v2sf)'
!      Pair upper upper ('puu.ps').
  
! 'v2sf __builtin_mips_cvt_ps_s (float, float)'
!      Convert pair to paired single ('cvt.ps.s').
  
! 'float __builtin_mips_cvt_s_pl (v2sf)'
!      Convert pair lower to single ('cvt.s.pl').
  
! 'float __builtin_mips_cvt_s_pu (v2sf)'
!      Convert pair upper to single ('cvt.s.pu').
  
! 'v2sf __builtin_mips_abs_ps (v2sf)'
!      Absolute value ('abs.ps').
  
! 'v2sf __builtin_mips_alnv_ps (v2sf, v2sf, int)'
!      Align variable ('alnv.ps').
  
       _Note:_ The value of the third parameter must be 0 or 4 modulo 8,
       otherwise the result is unpredictable.  Please read the instruction
       description for details.
  
   The following multi-instruction functions are also available.  In each
! case, COND can be any of the 16 floating-point conditions: 'f', 'un',
! 'eq', 'ueq', 'olt', 'ult', 'ole', 'ule', 'sf', 'ngle', 'seq', 'ngl',
! 'lt', 'nge', 'le' or 'ngt'.
  
! 'v2sf __builtin_mips_movt_c_COND_ps (v2sf A, v2sf B, v2sf C, v2sf D)'
! 'v2sf __builtin_mips_movf_c_COND_ps (v2sf A, v2sf B, v2sf C, v2sf D)'
!      Conditional move based on floating-point comparison ('c.COND.ps',
!      'movt.ps'/'movf.ps').
  
!      The 'movt' functions return the value X computed by:
  
            c.COND.ps CC,A,B
            mov.ps X,C
            movt.ps X,D,CC
  
!      The 'movf' functions are similar but use 'movf.ps' instead of
!      'movt.ps'.
  
! 'int __builtin_mips_upper_c_COND_ps (v2sf A, v2sf B)'
! 'int __builtin_mips_lower_c_COND_ps (v2sf A, v2sf B)'
!      Comparison of two paired-single values ('c.COND.ps',
!      'bc1t'/'bc1f').
  
!      These functions compare A and B using 'c.COND.ps' and return either
       the upper or lower half of the result.  For example:
  
            v2sf a, b;
--- 57456,57517 ----
  instruction.  Please refer to the architecture specification for details
  on what each instruction does.
  
! â€˜v2sf __builtin_mips_pll_ps (v2sf, v2sf)â€™
!      Pair lower lower (â€˜pll.psâ€™).
  
! â€˜v2sf __builtin_mips_pul_ps (v2sf, v2sf)â€™
!      Pair upper lower (â€˜pul.psâ€™).
  
! â€˜v2sf __builtin_mips_plu_ps (v2sf, v2sf)â€™
!      Pair lower upper (â€˜plu.psâ€™).
  
! â€˜v2sf __builtin_mips_puu_ps (v2sf, v2sf)â€™
!      Pair upper upper (â€˜puu.psâ€™).
  
! â€˜v2sf __builtin_mips_cvt_ps_s (float, float)â€™
!      Convert pair to paired single (â€˜cvt.ps.sâ€™).
  
! â€˜float __builtin_mips_cvt_s_pl (v2sf)â€™
!      Convert pair lower to single (â€˜cvt.s.plâ€™).
  
! â€˜float __builtin_mips_cvt_s_pu (v2sf)â€™
!      Convert pair upper to single (â€˜cvt.s.puâ€™).
  
! â€˜v2sf __builtin_mips_abs_ps (v2sf)â€™
!      Absolute value (â€˜abs.psâ€™).
  
! â€˜v2sf __builtin_mips_alnv_ps (v2sf, v2sf, int)â€™
!      Align variable (â€˜alnv.psâ€™).
  
       _Note:_ The value of the third parameter must be 0 or 4 modulo 8,
       otherwise the result is unpredictable.  Please read the instruction
       description for details.
  
   The following multi-instruction functions are also available.  In each
! case, COND can be any of the 16 floating-point conditions: â€˜fâ€™, â€˜unâ€™,
! â€˜eqâ€™, â€˜ueqâ€™, â€˜oltâ€™, â€˜ultâ€™, â€˜oleâ€™, â€˜uleâ€™, â€˜sfâ€™, â€˜ngleâ€™, â€˜seqâ€™, â€˜nglâ€™,
! â€˜ltâ€™, â€˜ngeâ€™, â€˜leâ€™ or â€˜ngtâ€™.
  
! â€˜v2sf __builtin_mips_movt_c_COND_ps (v2sf A, v2sf B, v2sf C, v2sf D)â€™
! â€˜v2sf __builtin_mips_movf_c_COND_ps (v2sf A, v2sf B, v2sf C, v2sf D)â€™
!      Conditional move based on floating-point comparison (â€˜c.COND.psâ€™,
!      â€˜movt.psâ€™/â€˜movf.psâ€™).
  
!      The â€˜movtâ€™ functions return the value X computed by:
  
            c.COND.ps CC,A,B
            mov.ps X,C
            movt.ps X,D,CC
  
!      The â€˜movfâ€™ functions are similar but use â€˜movf.psâ€™ instead of
!      â€˜movt.psâ€™.
  
! â€˜int __builtin_mips_upper_c_COND_ps (v2sf A, v2sf B)â€™
! â€˜int __builtin_mips_lower_c_COND_ps (v2sf A, v2sf B)â€™
!      Comparison of two paired-single values (â€˜c.COND.psâ€™,
!      â€˜bc1tâ€™/â€˜bc1fâ€™).
  
!      These functions compare A and B using â€˜c.COND.psâ€™ and return either
       the upper or lower half of the result.  For example:
  
            v2sf a, b;
*************** File: gcc.info,  Node: MIPS-3D Built-in
*** 57525,57582 ****
  The MIPS-3D Application-Specific Extension (ASE) includes additional
  paired-single instructions that are designed to improve the performance
  of 3D graphics operations.  Support for these instructions is controlled
! by the '-mips3d' command-line option.
  
   The functions listed below map directly to a particular MIPS-3D
  instruction.  Please refer to the architecture specification for more
  details on what each instruction does.
  
! 'v2sf __builtin_mips_addr_ps (v2sf, v2sf)'
!      Reduction add ('addr.ps').
  
! 'v2sf __builtin_mips_mulr_ps (v2sf, v2sf)'
!      Reduction multiply ('mulr.ps').
  
! 'v2sf __builtin_mips_cvt_pw_ps (v2sf)'
!      Convert paired single to paired word ('cvt.pw.ps').
  
! 'v2sf __builtin_mips_cvt_ps_pw (v2sf)'
!      Convert paired word to paired single ('cvt.ps.pw').
  
! 'float __builtin_mips_recip1_s (float)'
! 'double __builtin_mips_recip1_d (double)'
! 'v2sf __builtin_mips_recip1_ps (v2sf)'
!      Reduced-precision reciprocal (sequence step 1) ('recip1.FMT').
  
! 'float __builtin_mips_recip2_s (float, float)'
! 'double __builtin_mips_recip2_d (double, double)'
! 'v2sf __builtin_mips_recip2_ps (v2sf, v2sf)'
!      Reduced-precision reciprocal (sequence step 2) ('recip2.FMT').
  
! 'float __builtin_mips_rsqrt1_s (float)'
! 'double __builtin_mips_rsqrt1_d (double)'
! 'v2sf __builtin_mips_rsqrt1_ps (v2sf)'
       Reduced-precision reciprocal square root (sequence step 1)
!      ('rsqrt1.FMT').
  
! 'float __builtin_mips_rsqrt2_s (float, float)'
! 'double __builtin_mips_rsqrt2_d (double, double)'
! 'v2sf __builtin_mips_rsqrt2_ps (v2sf, v2sf)'
       Reduced-precision reciprocal square root (sequence step 2)
!      ('rsqrt2.FMT').
  
   The following multi-instruction functions are also available.  In each
! case, COND can be any of the 16 floating-point conditions: 'f', 'un',
! 'eq', 'ueq', 'olt', 'ult', 'ole', 'ule', 'sf', 'ngle', 'seq', 'ngl',
! 'lt', 'nge', 'le' or 'ngt'.
  
! 'int __builtin_mips_cabs_COND_s (float A, float B)'
! 'int __builtin_mips_cabs_COND_d (double A, double B)'
!      Absolute comparison of two scalar values ('cabs.COND.FMT',
!      'bc1t'/'bc1f').
  
!      These functions compare A and B using 'cabs.COND.s' or
!      'cabs.COND.d' and return the result as a boolean value.  For
       example:
  
            float a, b;
--- 57534,57591 ----
  The MIPS-3D Application-Specific Extension (ASE) includes additional
  paired-single instructions that are designed to improve the performance
  of 3D graphics operations.  Support for these instructions is controlled
! by the â€˜-mips3dâ€™ command-line option.
  
   The functions listed below map directly to a particular MIPS-3D
  instruction.  Please refer to the architecture specification for more
  details on what each instruction does.
  
! â€˜v2sf __builtin_mips_addr_ps (v2sf, v2sf)â€™
!      Reduction add (â€˜addr.psâ€™).
  
! â€˜v2sf __builtin_mips_mulr_ps (v2sf, v2sf)â€™
!      Reduction multiply (â€˜mulr.psâ€™).
  
! â€˜v2sf __builtin_mips_cvt_pw_ps (v2sf)â€™
!      Convert paired single to paired word (â€˜cvt.pw.psâ€™).
  
! â€˜v2sf __builtin_mips_cvt_ps_pw (v2sf)â€™
!      Convert paired word to paired single (â€˜cvt.ps.pwâ€™).
  
! â€˜float __builtin_mips_recip1_s (float)â€™
! â€˜double __builtin_mips_recip1_d (double)â€™
! â€˜v2sf __builtin_mips_recip1_ps (v2sf)â€™
!      Reduced-precision reciprocal (sequence step 1) (â€˜recip1.FMTâ€™).
  
! â€˜float __builtin_mips_recip2_s (float, float)â€™
! â€˜double __builtin_mips_recip2_d (double, double)â€™
! â€˜v2sf __builtin_mips_recip2_ps (v2sf, v2sf)â€™
!      Reduced-precision reciprocal (sequence step 2) (â€˜recip2.FMTâ€™).
  
! â€˜float __builtin_mips_rsqrt1_s (float)â€™
! â€˜double __builtin_mips_rsqrt1_d (double)â€™
! â€˜v2sf __builtin_mips_rsqrt1_ps (v2sf)â€™
       Reduced-precision reciprocal square root (sequence step 1)
!      (â€˜rsqrt1.FMTâ€™).
  
! â€˜float __builtin_mips_rsqrt2_s (float, float)â€™
! â€˜double __builtin_mips_rsqrt2_d (double, double)â€™
! â€˜v2sf __builtin_mips_rsqrt2_ps (v2sf, v2sf)â€™
       Reduced-precision reciprocal square root (sequence step 2)
!      (â€˜rsqrt2.FMTâ€™).
  
   The following multi-instruction functions are also available.  In each
! case, COND can be any of the 16 floating-point conditions: â€˜fâ€™, â€˜unâ€™,
! â€˜eqâ€™, â€˜ueqâ€™, â€˜oltâ€™, â€˜ultâ€™, â€˜oleâ€™, â€˜uleâ€™, â€˜sfâ€™, â€˜ngleâ€™, â€˜seqâ€™, â€˜nglâ€™,
! â€˜ltâ€™, â€˜ngeâ€™, â€˜leâ€™ or â€˜ngtâ€™.
  
! â€˜int __builtin_mips_cabs_COND_s (float A, float B)â€™
! â€˜int __builtin_mips_cabs_COND_d (double A, double B)â€™
!      Absolute comparison of two scalar values (â€˜cabs.COND.FMTâ€™,
!      â€˜bc1tâ€™/â€˜bc1fâ€™).
  
!      These functions compare A and B using â€˜cabs.COND.sâ€™ or
!      â€˜cabs.COND.dâ€™ and return the result as a boolean value.  For
       example:
  
            float a, b;
*************** case, COND can be any of the 16 floating
*** 57585,57596 ****
            else
              false ();
  
! 'int __builtin_mips_upper_cabs_COND_ps (v2sf A, v2sf B)'
! 'int __builtin_mips_lower_cabs_COND_ps (v2sf A, v2sf B)'
!      Absolute comparison of two paired-single values ('cabs.COND.ps',
!      'bc1t'/'bc1f').
  
!      These functions compare A and B using 'cabs.COND.ps' and return
       either the upper or lower half of the result.  For example:
  
            v2sf a, b;
--- 57594,57605 ----
            else
              false ();
  
! â€˜int __builtin_mips_upper_cabs_COND_ps (v2sf A, v2sf B)â€™
! â€˜int __builtin_mips_lower_cabs_COND_ps (v2sf A, v2sf B)â€™
!      Absolute comparison of two paired-single values (â€˜cabs.COND.psâ€™,
!      â€˜bc1tâ€™/â€˜bc1fâ€™).
  
!      These functions compare A and B using â€˜cabs.COND.psâ€™ and return
       either the upper or lower half of the result.  For example:
  
            v2sf a, b;
*************** case, COND can be any of the 16 floating
*** 57604,57634 ****
            else
              lower_halves_are_unequal ();
  
! 'v2sf __builtin_mips_movt_cabs_COND_ps (v2sf A, v2sf B, v2sf C, v2sf D)'
! 'v2sf __builtin_mips_movf_cabs_COND_ps (v2sf A, v2sf B, v2sf C, v2sf D)'
!      Conditional move based on absolute comparison ('cabs.COND.ps',
!      'movt.ps'/'movf.ps').
  
!      The 'movt' functions return the value X computed by:
  
            cabs.COND.ps CC,A,B
            mov.ps X,C
            movt.ps X,D,CC
  
!      The 'movf' functions are similar but use 'movf.ps' instead of
!      'movt.ps'.
  
! 'int __builtin_mips_any_c_COND_ps (v2sf A, v2sf B)'
! 'int __builtin_mips_all_c_COND_ps (v2sf A, v2sf B)'
! 'int __builtin_mips_any_cabs_COND_ps (v2sf A, v2sf B)'
! 'int __builtin_mips_all_cabs_COND_ps (v2sf A, v2sf B)'
!      Comparison of two paired-single values ('c.COND.ps'/'cabs.COND.ps',
!      'bc1any2t'/'bc1any2f').
  
!      These functions compare A and B using 'c.COND.ps' or
!      'cabs.COND.ps'.  The 'any' forms return 'true' if either result is
!      'true' and the 'all' forms return 'true' if both results are
!      'true'.  For example:
  
            v2sf a, b;
            if (__builtin_mips_any_c_eq_ps (a, b))
--- 57613,57643 ----
            else
              lower_halves_are_unequal ();
  
! â€˜v2sf __builtin_mips_movt_cabs_COND_ps (v2sf A, v2sf B, v2sf C, v2sf D)â€™
! â€˜v2sf __builtin_mips_movf_cabs_COND_ps (v2sf A, v2sf B, v2sf C, v2sf D)â€™
!      Conditional move based on absolute comparison (â€˜cabs.COND.psâ€™,
!      â€˜movt.psâ€™/â€˜movf.psâ€™).
  
!      The â€˜movtâ€™ functions return the value X computed by:
  
            cabs.COND.ps CC,A,B
            mov.ps X,C
            movt.ps X,D,CC
  
!      The â€˜movfâ€™ functions are similar but use â€˜movf.psâ€™ instead of
!      â€˜movt.psâ€™.
  
! â€˜int __builtin_mips_any_c_COND_ps (v2sf A, v2sf B)â€™
! â€˜int __builtin_mips_all_c_COND_ps (v2sf A, v2sf B)â€™
! â€˜int __builtin_mips_any_cabs_COND_ps (v2sf A, v2sf B)â€™
! â€˜int __builtin_mips_all_cabs_COND_ps (v2sf A, v2sf B)â€™
!      Comparison of two paired-single values (â€˜c.COND.psâ€™/â€˜cabs.COND.psâ€™,
!      â€˜bc1any2tâ€™/â€˜bc1any2fâ€™).
  
!      These functions compare A and B using â€˜c.COND.psâ€™ or
!      â€˜cabs.COND.psâ€™.  The â€˜anyâ€™ forms return â€˜trueâ€™ if either result is
!      â€˜trueâ€™ and the â€˜allâ€™ forms return â€˜trueâ€™ if both results are
!      â€˜trueâ€™.  For example:
  
            v2sf a, b;
            if (__builtin_mips_any_c_eq_ps (a, b))
*************** case, COND can be any of the 16 floating
*** 57641,57657 ****
            else
              one_is_false ();
  
! 'int __builtin_mips_any_c_COND_4s (v2sf A, v2sf B, v2sf C, v2sf D)'
! 'int __builtin_mips_all_c_COND_4s (v2sf A, v2sf B, v2sf C, v2sf D)'
! 'int __builtin_mips_any_cabs_COND_4s (v2sf A, v2sf B, v2sf C, v2sf D)'
! 'int __builtin_mips_all_cabs_COND_4s (v2sf A, v2sf B, v2sf C, v2sf D)'
       Comparison of four paired-single values
!      ('c.COND.ps'/'cabs.COND.ps', 'bc1any4t'/'bc1any4f').
  
!      These functions use 'c.COND.ps' or 'cabs.COND.ps' to compare A with
!      B and to compare C with D.  The 'any' forms return 'true' if any of
!      the four results are 'true' and the 'all' forms return 'true' if
!      all four results are 'true'.  For example:
  
            v2sf a, b, c, d;
            if (__builtin_mips_any_c_eq_4s (a, b, c, d))
--- 57650,57666 ----
            else
              one_is_false ();
  
! â€˜int __builtin_mips_any_c_COND_4s (v2sf A, v2sf B, v2sf C, v2sf D)â€™
! â€˜int __builtin_mips_all_c_COND_4s (v2sf A, v2sf B, v2sf C, v2sf D)â€™
! â€˜int __builtin_mips_any_cabs_COND_4s (v2sf A, v2sf B, v2sf C, v2sf D)â€™
! â€˜int __builtin_mips_all_cabs_COND_4s (v2sf A, v2sf B, v2sf C, v2sf D)â€™
       Comparison of four paired-single values
!      (â€˜c.COND.psâ€™/â€˜cabs.COND.psâ€™, â€˜bc1any4tâ€™/â€˜bc1any4fâ€™).
  
!      These functions use â€˜c.COND.psâ€™ or â€˜cabs.COND.psâ€™ to compare A with
!      B and to compare C with D.  The â€˜anyâ€™ forms return â€˜trueâ€™ if any of
!      the four results are â€˜trueâ€™ and the â€˜allâ€™ forms return â€˜trueâ€™ if
!      all four results are â€˜trueâ€™.  For example:
  
            v2sf a, b, c, d;
            if (__builtin_mips_any_c_eq_4s (a, b, c, d))
*************** File: gcc.info,  Node: MIPS SIMD Archite
*** 57676,57719 ****
  
  GCC provides intrinsics to access the SIMD instructions provided by the
  MSA MIPS SIMD Architecture.  The interface is made available by
! including '<msa.h>' and using '-mmsa -mhard-float -mfp64 -mnan=2008'.
! For each '__builtin_msa_*', there is a shortened name of the intrinsic,
! '__msa_*'.
  
   MSA implements 128-bit wide vector registers, operating on 8-, 16-, 32-
  and 64-bit integer, 16- and 32-bit fixed-point, or 32- and 64-bit
  floating point data elements.  The following vectors typedefs are
! included in 'msa.h':
!    * 'v16i8', a vector of sixteen signed 8-bit integers;
!    * 'v16u8', a vector of sixteen unsigned 8-bit integers;
!    * 'v8i16', a vector of eight signed 16-bit integers;
!    * 'v8u16', a vector of eight unsigned 16-bit integers;
!    * 'v4i32', a vector of four signed 32-bit integers;
!    * 'v4u32', a vector of four unsigned 32-bit integers;
!    * 'v2i64', a vector of two signed 64-bit integers;
!    * 'v2u64', a vector of two unsigned 64-bit integers;
!    * 'v4f32', a vector of four 32-bit floats;
!    * 'v2f64', a vector of two 64-bit doubles.
  
   Instructions and corresponding built-ins may have additional
  restrictions and/or input/output values manipulated:
!    * 'imm0_1', an integer literal in range 0 to 1;
!    * 'imm0_3', an integer literal in range 0 to 3;
!    * 'imm0_7', an integer literal in range 0 to 7;
!    * 'imm0_15', an integer literal in range 0 to 15;
!    * 'imm0_31', an integer literal in range 0 to 31;
!    * 'imm0_63', an integer literal in range 0 to 63;
!    * 'imm0_255', an integer literal in range 0 to 255;
!    * 'imm_n16_15', an integer literal in range -16 to 15;
!    * 'imm_n512_511', an integer literal in range -512 to 511;
!    * 'imm_n1024_1022', an integer literal in range -512 to 511 left
       shifted by 1 bit, i.e., -1024, -1022, ..., 1020, 1022;
!    * 'imm_n2048_2044', an integer literal in range -512 to 511 left
       shifted by 2 bits, i.e., -2048, -2044, ..., 2040, 2044;
!    * 'imm_n4096_4088', an integer literal in range -512 to 511 left
       shifted by 3 bits, i.e., -4096, -4088, ..., 4080, 4088;
!    * 'imm1_4', an integer literal in range 1 to 4;
!    * 'i32, i64, u32, u64, f32, f64', defined as follows:
  
       {
       typedef int i32;
--- 57685,57728 ----
  
  GCC provides intrinsics to access the SIMD instructions provided by the
  MSA MIPS SIMD Architecture.  The interface is made available by
! including â€˜<msa.h>â€™ and using â€˜-mmsa -mhard-float -mfp64 -mnan=2008â€™.
! For each â€˜__builtin_msa_*â€™, there is a shortened name of the intrinsic,
! â€˜__msa_*â€™.
  
   MSA implements 128-bit wide vector registers, operating on 8-, 16-, 32-
  and 64-bit integer, 16- and 32-bit fixed-point, or 32- and 64-bit
  floating point data elements.  The following vectors typedefs are
! included in â€˜msa.hâ€™:
!    â€¢ â€˜v16i8â€™, a vector of sixteen signed 8-bit integers;
!    â€¢ â€˜v16u8â€™, a vector of sixteen unsigned 8-bit integers;
!    â€¢ â€˜v8i16â€™, a vector of eight signed 16-bit integers;
!    â€¢ â€˜v8u16â€™, a vector of eight unsigned 16-bit integers;
!    â€¢ â€˜v4i32â€™, a vector of four signed 32-bit integers;
!    â€¢ â€˜v4u32â€™, a vector of four unsigned 32-bit integers;
!    â€¢ â€˜v2i64â€™, a vector of two signed 64-bit integers;
!    â€¢ â€˜v2u64â€™, a vector of two unsigned 64-bit integers;
!    â€¢ â€˜v4f32â€™, a vector of four 32-bit floats;
!    â€¢ â€˜v2f64â€™, a vector of two 64-bit doubles.
  
   Instructions and corresponding built-ins may have additional
  restrictions and/or input/output values manipulated:
!    â€¢ â€˜imm0_1â€™, an integer literal in range 0 to 1;
!    â€¢ â€˜imm0_3â€™, an integer literal in range 0 to 3;
!    â€¢ â€˜imm0_7â€™, an integer literal in range 0 to 7;
!    â€¢ â€˜imm0_15â€™, an integer literal in range 0 to 15;
!    â€¢ â€˜imm0_31â€™, an integer literal in range 0 to 31;
!    â€¢ â€˜imm0_63â€™, an integer literal in range 0 to 63;
!    â€¢ â€˜imm0_255â€™, an integer literal in range 0 to 255;
!    â€¢ â€˜imm_n16_15â€™, an integer literal in range -16 to 15;
!    â€¢ â€˜imm_n512_511â€™, an integer literal in range -512 to 511;
!    â€¢ â€˜imm_n1024_1022â€™, an integer literal in range -512 to 511 left
       shifted by 1 bit, i.e., -1024, -1022, ..., 1020, 1022;
!    â€¢ â€˜imm_n2048_2044â€™, an integer literal in range -512 to 511 left
       shifted by 2 bits, i.e., -2048, -2044, ..., 2040, 2044;
!    â€¢ â€˜imm_n4096_4088â€™, an integer literal in range -512 to 511 left
       shifted by 3 bits, i.e., -4096, -4088, ..., 4080, 4088;
!    â€¢ â€˜imm1_4â€™, an integer literal in range 1 to 4;
!    â€¢ â€˜i32, i64, u32, u64, f32, f64â€™, defined as follows:
  
       {
       typedef int i32;
*************** File: gcc.info,  Node: Other MIPS Built-
*** 58459,58477 ****
  
  GCC provides other MIPS-specific built-in functions:
  
! 'void __builtin_mips_cache (int OP, const volatile void *ADDR)'
!      Insert a 'cache' instruction with operands OP and ADDR.  GCC
!      defines the preprocessor macro '___GCC_HAVE_BUILTIN_MIPS_CACHE'
       when this function is available.
  
! 'unsigned int __builtin_mips_get_fcsr (void)'
! 'void __builtin_mips_set_fcsr (unsigned int VALUE)'
       Get and set the contents of the floating-point control and status
       register (FPU control register 31).  These functions are only
       available in hard-float code but can be called in both MIPS16 and
       non-MIPS16 contexts.
  
!      '__builtin_mips_set_fcsr' can be used to change any bit of the
       register except the condition codes, which GCC assumes are
       preserved.
  
--- 58468,58486 ----
  
  GCC provides other MIPS-specific built-in functions:
  
! â€˜void __builtin_mips_cache (int OP, const volatile void *ADDR)â€™
!      Insert a â€˜cacheâ€™ instruction with operands OP and ADDR.  GCC
!      defines the preprocessor macro â€˜___GCC_HAVE_BUILTIN_MIPS_CACHEâ€™
       when this function is available.
  
! â€˜unsigned int __builtin_mips_get_fcsr (void)â€™
! â€˜void __builtin_mips_set_fcsr (unsigned int VALUE)â€™
       Get and set the contents of the floating-point control and status
       register (FPU control register 31).  These functions are only
       available in hard-float code but can be called in both MIPS16 and
       non-MIPS16 contexts.
  
!      â€˜__builtin_mips_set_fcsrâ€™ can be used to change any bit of the
       register except the condition codes, which GCC assumes are
       preserved.
  
*************** File: gcc.info,  Node: MSP430 Built-in F
*** 58484,58502 ****
  GCC provides a couple of special builtin functions to aid in the writing
  of interrupt handlers in C.
  
! '__bic_SR_register_on_exit (int MASK)'
       This clears the indicated bits in the saved copy of the status
       register currently residing on the stack.  This only works inside
       interrupt handlers and the changes to the status register will only
       take affect once the handler returns.
  
! '__bis_SR_register_on_exit (int MASK)'
       This sets the indicated bits in the saved copy of the status
       register currently residing on the stack.  This only works inside
       interrupt handlers and the changes to the status register will only
       take affect once the handler returns.
  
! '__delay_cycles (long long CYCLES)'
       This inserts an instruction sequence that takes exactly CYCLES
       cycles (between 0 and about 17E9) to complete.  The inserted
       sequence may use jumps, loops, or no-ops, and does not interfere
--- 58493,58511 ----
  GCC provides a couple of special builtin functions to aid in the writing
  of interrupt handlers in C.
  
! â€˜__bic_SR_register_on_exit (int MASK)â€™
       This clears the indicated bits in the saved copy of the status
       register currently residing on the stack.  This only works inside
       interrupt handlers and the changes to the status register will only
       take affect once the handler returns.
  
! â€˜__bis_SR_register_on_exit (int MASK)â€™
       This sets the indicated bits in the saved copy of the status
       register currently residing on the stack.  This only works inside
       interrupt handlers and the changes to the status register will only
       take affect once the handler returns.
  
! â€˜__delay_cycles (long long CYCLES)â€™
       This inserts an instruction sequence that takes exactly CYCLES
       cycles (between 0 and about 17E9) to complete.  The inserted
       sequence may use jumps, loops, or no-ops, and does not interfere
*************** File: gcc.info,  Node: Basic PowerPC Bui
*** 58581,58635 ****
  ..........................................................................
  
   -- Built-in Function: void __builtin_cpu_init (void)
!      This function is a 'nop' on the PowerPC platform and is included
       solely to maintain API compatibility with the x86 builtins.
  
   -- Built-in Function: int __builtin_cpu_is (const char *CPUNAME)
!      This function returns a value of '1' if the run-time CPU is of type
!      CPUNAME and returns '0' otherwise
  
!      The '__builtin_cpu_is' function requires GLIBC 2.23 or newer which
       exports the hardware capability bits.  GCC defines the macro
!      '__BUILTIN_CPU_SUPPORTS__' if the '__builtin_cpu_supports' built-in
       function is fully supported.
  
       If GCC was configured to use a GLIBC before 2.23, the built-in
!      function '__builtin_cpu_is' always returns a 0 and the compiler
       issues a warning.
  
       The following CPU names can be detected:
  
!      'power10'
            IBM POWER10 Server CPU.
!      'power9'
            IBM POWER9 Server CPU.
!      'power8'
            IBM POWER8 Server CPU.
!      'power7'
            IBM POWER7 Server CPU.
!      'power6x'
            IBM POWER6 Server CPU (RAW mode).
!      'power6'
            IBM POWER6 Server CPU (Architected mode).
!      'power5+'
            IBM POWER5+ Server CPU.
!      'power5'
            IBM POWER5 Server CPU.
!      'ppc970'
            IBM 970 Server CPU (ie, Apple G5).
!      'power4'
            IBM POWER4 Server CPU.
!      'ppca2'
            IBM A2 64-bit Embedded CPU
!      'ppc476'
            IBM PowerPC 476FP 32-bit Embedded CPU.
!      'ppc464'
            IBM PowerPC 464 32-bit Embedded CPU.
!      'ppc440'
            PowerPC 440 32-bit Embedded CPU.
!      'ppc405'
            PowerPC 405 32-bit Embedded CPU.
!      'ppc-cell-be'
            IBM PowerPC Cell Broadband Engine Architecture CPU.
  
       Here is an example:
--- 58590,58644 ----
  ..........................................................................
  
   -- Built-in Function: void __builtin_cpu_init (void)
!      This function is a â€˜nopâ€™ on the PowerPC platform and is included
       solely to maintain API compatibility with the x86 builtins.
  
   -- Built-in Function: int __builtin_cpu_is (const char *CPUNAME)
!      This function returns a value of â€˜1â€™ if the run-time CPU is of type
!      CPUNAME and returns â€˜0â€™ otherwise
  
!      The â€˜__builtin_cpu_isâ€™ function requires GLIBC 2.23 or newer which
       exports the hardware capability bits.  GCC defines the macro
!      â€˜__BUILTIN_CPU_SUPPORTS__â€™ if the â€˜__builtin_cpu_supportsâ€™ built-in
       function is fully supported.
  
       If GCC was configured to use a GLIBC before 2.23, the built-in
!      function â€˜__builtin_cpu_isâ€™ always returns a 0 and the compiler
       issues a warning.
  
       The following CPU names can be detected:
  
!      â€˜power10â€™
            IBM POWER10 Server CPU.
!      â€˜power9â€™
            IBM POWER9 Server CPU.
!      â€˜power8â€™
            IBM POWER8 Server CPU.
!      â€˜power7â€™
            IBM POWER7 Server CPU.
!      â€˜power6xâ€™
            IBM POWER6 Server CPU (RAW mode).
!      â€˜power6â€™
            IBM POWER6 Server CPU (Architected mode).
!      â€˜power5+â€™
            IBM POWER5+ Server CPU.
!      â€˜power5â€™
            IBM POWER5 Server CPU.
!      â€˜ppc970â€™
            IBM 970 Server CPU (ie, Apple G5).
!      â€˜power4â€™
            IBM POWER4 Server CPU.
!      â€˜ppca2â€™
            IBM A2 64-bit Embedded CPU
!      â€˜ppc476â€™
            IBM PowerPC 476FP 32-bit Embedded CPU.
!      â€˜ppc464â€™
            IBM PowerPC 464 32-bit Embedded CPU.
!      â€˜ppc440â€™
            PowerPC 440 32-bit Embedded CPU.
!      â€˜ppc405â€™
            PowerPC 405 32-bit Embedded CPU.
!      â€˜ppc-cell-beâ€™
            IBM PowerPC Cell Broadband Engine Architecture CPU.
  
       Here is an example:
*************** File: gcc.info,  Node: Basic PowerPC Bui
*** 58645,58752 ****
                }
  
   -- Built-in Function: int __builtin_cpu_supports (const char *FEATURE)
!      This function returns a value of '1' if the run-time CPU supports
!      the HWCAP feature FEATURE and returns '0' otherwise.
  
!      The '__builtin_cpu_supports' function requires GLIBC 2.23 or newer
       which exports the hardware capability bits.  GCC defines the macro
!      '__BUILTIN_CPU_SUPPORTS__' if the '__builtin_cpu_supports' built-in
       function is fully supported.
  
       If GCC was configured to use a GLIBC before 2.23, the built-in
!      function '__builtin_cpu_supports' always returns a 0 and the
       compiler issues a warning.
  
       The following features can be detected:
  
!      '4xxmac'
            4xx CPU has a Multiply Accumulator.
!      'altivec'
            CPU has a SIMD/Vector Unit.
!      'arch_2_05'
            CPU supports ISA 2.05 (eg, POWER6)
!      'arch_2_06'
            CPU supports ISA 2.06 (eg, POWER7)
!      'arch_2_07'
            CPU supports ISA 2.07 (eg, POWER8)
!      'arch_3_00'
            CPU supports ISA 3.0 (eg, POWER9)
!      'arch_3_1'
            CPU supports ISA 3.1 (eg, POWER10)
!      'archpmu'
            CPU supports the set of compatible performance monitoring
            events.
!      'booke'
            CPU supports the Embedded ISA category.
!      'cellbe'
            CPU has a CELL broadband engine.
!      'darn'
!           CPU supports the 'darn' (deliver a random number) instruction.
!      'dfp'
            CPU has a decimal floating point unit.
!      'dscr'
            CPU supports the data stream control register.
!      'ebb'
            CPU supports event base branching.
!      'efpdouble'
            CPU has a SPE double precision floating point unit.
!      'efpsingle'
            CPU has a SPE single precision floating point unit.
!      'fpu'
            CPU has a floating point unit.
!      'htm'
            CPU has hardware transaction memory instructions.
!      'htm-nosc'
            Kernel aborts hardware transactions when a syscall is made.
!      'htm-no-suspend'
            CPU supports hardware transaction memory but does not support
!           the 'tsuspend.' instruction.
!      'ic_snoop'
            CPU supports icache snooping capabilities.
!      'ieee128'
            CPU supports 128-bit IEEE binary floating point instructions.
!      'isel'
            CPU supports the integer select instruction.
!      'mma'
            CPU supports the matrix-multiply assist instructions.
!      'mmu'
            CPU has a memory management unit.
!      'notb'
            CPU does not have a timebase (eg, 601 and 403gx).
!      'pa6t'
            CPU supports the PA Semi 6T CORE ISA.
!      'power4'
            CPU supports ISA 2.00 (eg, POWER4)
!      'power5'
            CPU supports ISA 2.02 (eg, POWER5)
!      'power5+'
            CPU supports ISA 2.03 (eg, POWER5+)
!      'power6x'
            CPU supports ISA 2.05 (eg, POWER6) extended opcodes mffgpr and
            mftgpr.
!      'ppc32'
            CPU supports 32-bit mode execution.
!      'ppc601'
            CPU supports the old POWER ISA (eg, 601)
!      'ppc64'
            CPU supports 64-bit mode execution.
!      'ppcle'
            CPU supports a little-endian mode that uses address swizzling.
!      'scv'
            Kernel supports system call vectored.
!      'smt'
            CPU support simultaneous multi-threading.
!      'spe'
            CPU has a signal processing extension unit.
!      'tar'
            CPU supports the target address register.
!      'true_le'
            CPU supports true little-endian mode.
!      'ucache'
            CPU has unified I/D cache.
!      'vcrypto'
            CPU supports the vector cryptography instructions.
!      'vsx'
            CPU supports the vector-scalar extension.
  
       Here is an example:
--- 58654,58761 ----
                }
  
   -- Built-in Function: int __builtin_cpu_supports (const char *FEATURE)
!      This function returns a value of â€˜1â€™ if the run-time CPU supports
!      the HWCAP feature FEATURE and returns â€˜0â€™ otherwise.
  
!      The â€˜__builtin_cpu_supportsâ€™ function requires GLIBC 2.23 or newer
       which exports the hardware capability bits.  GCC defines the macro
!      â€˜__BUILTIN_CPU_SUPPORTS__â€™ if the â€˜__builtin_cpu_supportsâ€™ built-in
       function is fully supported.
  
       If GCC was configured to use a GLIBC before 2.23, the built-in
!      function â€˜__builtin_cpu_supportsâ€™ always returns a 0 and the
       compiler issues a warning.
  
       The following features can be detected:
  
!      â€˜4xxmacâ€™
            4xx CPU has a Multiply Accumulator.
!      â€˜altivecâ€™
            CPU has a SIMD/Vector Unit.
!      â€˜arch_2_05â€™
            CPU supports ISA 2.05 (eg, POWER6)
!      â€˜arch_2_06â€™
            CPU supports ISA 2.06 (eg, POWER7)
!      â€˜arch_2_07â€™
            CPU supports ISA 2.07 (eg, POWER8)
!      â€˜arch_3_00â€™
            CPU supports ISA 3.0 (eg, POWER9)
!      â€˜arch_3_1â€™
            CPU supports ISA 3.1 (eg, POWER10)
!      â€˜archpmuâ€™
            CPU supports the set of compatible performance monitoring
            events.
!      â€˜bookeâ€™
            CPU supports the Embedded ISA category.
!      â€˜cellbeâ€™
            CPU has a CELL broadband engine.
!      â€˜darnâ€™
!           CPU supports the â€˜darnâ€™ (deliver a random number) instruction.
!      â€˜dfpâ€™
            CPU has a decimal floating point unit.
!      â€˜dscrâ€™
            CPU supports the data stream control register.
!      â€˜ebbâ€™
            CPU supports event base branching.
!      â€˜efpdoubleâ€™
            CPU has a SPE double precision floating point unit.
!      â€˜efpsingleâ€™
            CPU has a SPE single precision floating point unit.
!      â€˜fpuâ€™
            CPU has a floating point unit.
!      â€˜htmâ€™
            CPU has hardware transaction memory instructions.
!      â€˜htm-noscâ€™
            Kernel aborts hardware transactions when a syscall is made.
!      â€˜htm-no-suspendâ€™
            CPU supports hardware transaction memory but does not support
!           the â€˜tsuspend.â€™ instruction.
!      â€˜ic_snoopâ€™
            CPU supports icache snooping capabilities.
!      â€˜ieee128â€™
            CPU supports 128-bit IEEE binary floating point instructions.
!      â€˜iselâ€™
            CPU supports the integer select instruction.
!      â€˜mmaâ€™
            CPU supports the matrix-multiply assist instructions.
!      â€˜mmuâ€™
            CPU has a memory management unit.
!      â€˜notbâ€™
            CPU does not have a timebase (eg, 601 and 403gx).
!      â€˜pa6tâ€™
            CPU supports the PA Semi 6T CORE ISA.
!      â€˜power4â€™
            CPU supports ISA 2.00 (eg, POWER4)
!      â€˜power5â€™
            CPU supports ISA 2.02 (eg, POWER5)
!      â€˜power5+â€™
            CPU supports ISA 2.03 (eg, POWER5+)
!      â€˜power6xâ€™
            CPU supports ISA 2.05 (eg, POWER6) extended opcodes mffgpr and
            mftgpr.
!      â€˜ppc32â€™
            CPU supports 32-bit mode execution.
!      â€˜ppc601â€™
            CPU supports the old POWER ISA (eg, 601)
!      â€˜ppc64â€™
            CPU supports 64-bit mode execution.
!      â€˜ppcleâ€™
            CPU supports a little-endian mode that uses address swizzling.
!      â€˜scvâ€™
            Kernel supports system call vectored.
!      â€˜smtâ€™
            CPU support simultaneous multi-threading.
!      â€˜speâ€™
            CPU has a signal processing extension unit.
!      â€˜tarâ€™
            CPU supports the target address register.
!      â€˜true_leâ€™
            CPU supports true little-endian mode.
!      â€˜ucacheâ€™
            CPU has unified I/D cache.
!      â€˜vcryptoâ€™
            CPU supports the vector cryptography instructions.
!      â€˜vsxâ€™
            CPU supports the vector-scalar extension.
  
       Here is an example:
*************** processors:
*** 58773,58810 ****
       void __builtin_mtfsb1 (const int);
       double __builtin_set_fpscr_rn (int);
  
!  The '__builtin_ppc_get_timebase' and '__builtin_ppc_mftb' functions
  generate instructions to read the Time Base Register.  The
! '__builtin_ppc_get_timebase' function may generate multiple instructions
  and always returns the 64 bits of the Time Base Register.  The
! '__builtin_ppc_mftb' function always generates one instruction and
  returns the Time Base Register value as an unsigned long, throwing away
! the most significant word on 32-bit environments.  The '__builtin_mffs'
  return the value of the FPSCR register.  Note, ISA 3.0 supports the
! '__builtin_mffsl()' which permits software to read the control and
  non-sticky status bits in the FSPCR without the higher latency
! associated with accessing the sticky status bits.  The '__builtin_mtfsf'
  takes a constant 8-bit integer field mask and a double precision
! floating point argument and generates the 'mtfsf' (extended mnemonic)
  instruction to write new values to selected fields of the FPSCR. The
! '__builtin_mtfsb0' and '__builtin_mtfsb1' take the bit to change as an
  argument.  The valid bit range is between 0 and 31.  The builtins map to
! the 'mtfsb0' and 'mtfsb1' instructions which take the argument and add
  32.  Hence these instructions only modify the FPSCR[32:63] bits by
  changing the specified bit to a zero or one respectively.
  
!  The '__builtin_set_fpscr_rn' built-in allows changing both of the
  floating point rounding mode bits and returning the various FPSCR fields
  before the RN field is updated.  The built-in returns a double
  consisting of the initial value of the FPSCR fields DRN, VE, OE, UE, ZE,
  XE, NI, and RN bit positions with all other bits set to zero.  The
  built-in argument is a 2-bit value for the new RN field value.  The
! argument can either be an 'const int' or stored in a variable.  Earlier
! versions of '__builtin_set_fpscr_rn' returned void.  A
! '__SET_FPSCR_RN_RETURNS_FPSCR__' macro has been added.  If defined, then
! the '__builtin_set_fpscr_rn' built-in returns the FPSCR fields.  If not
! defined, the '__builtin_set_fpscr_rn' does not return a value.  If the
! '-msoft-float' option is used, the '__builtin_set_fpscr_rn' built-in
  will not return a value.
  
  
--- 58782,58819 ----
       void __builtin_mtfsb1 (const int);
       double __builtin_set_fpscr_rn (int);
  
!  The â€˜__builtin_ppc_get_timebaseâ€™ and â€˜__builtin_ppc_mftbâ€™ functions
  generate instructions to read the Time Base Register.  The
! â€˜__builtin_ppc_get_timebaseâ€™ function may generate multiple instructions
  and always returns the 64 bits of the Time Base Register.  The
! â€˜__builtin_ppc_mftbâ€™ function always generates one instruction and
  returns the Time Base Register value as an unsigned long, throwing away
! the most significant word on 32-bit environments.  The â€˜__builtin_mffsâ€™
  return the value of the FPSCR register.  Note, ISA 3.0 supports the
! â€˜__builtin_mffsl()â€™ which permits software to read the control and
  non-sticky status bits in the FSPCR without the higher latency
! associated with accessing the sticky status bits.  The â€˜__builtin_mtfsfâ€™
  takes a constant 8-bit integer field mask and a double precision
! floating point argument and generates the â€˜mtfsfâ€™ (extended mnemonic)
  instruction to write new values to selected fields of the FPSCR. The
! â€˜__builtin_mtfsb0â€™ and â€˜__builtin_mtfsb1â€™ take the bit to change as an
  argument.  The valid bit range is between 0 and 31.  The builtins map to
! the â€˜mtfsb0â€™ and â€˜mtfsb1â€™ instructions which take the argument and add
  32.  Hence these instructions only modify the FPSCR[32:63] bits by
  changing the specified bit to a zero or one respectively.
  
!  The â€˜__builtin_set_fpscr_rnâ€™ built-in allows changing both of the
  floating point rounding mode bits and returning the various FPSCR fields
  before the RN field is updated.  The built-in returns a double
  consisting of the initial value of the FPSCR fields DRN, VE, OE, UE, ZE,
  XE, NI, and RN bit positions with all other bits set to zero.  The
  built-in argument is a 2-bit value for the new RN field value.  The
! argument can either be an â€˜const intâ€™ or stored in a variable.  Earlier
! versions of â€˜__builtin_set_fpscr_rnâ€™ returned void.  A
! â€˜__SET_FPSCR_RN_RETURNS_FPSCR__â€™ macro has been added.  If defined, then
! the â€˜__builtin_set_fpscr_rnâ€™ built-in returns the FPSCR fields.  If not
! defined, the â€˜__builtin_set_fpscr_rnâ€™ does not return a value.  If the
! â€˜-msoft-floatâ€™ option is used, the â€˜__builtin_set_fpscr_rnâ€™ built-in
  will not return a value.
  
  
*************** File: gcc.info,  Node: Basic PowerPC Bui
*** 58816,58842 ****
  The basic built-in functions described in this section are available on
  the PowerPC family of processors starting with ISA 2.05 or later.
  Unless specific options are explicitly disabled on the command line,
! specifying option '-mcpu=power6' has the effect of enabling the
! '-mpowerpc64', '-mpowerpc-gpopt', '-mpowerpc-gfxopt', '-mmfcrf',
! '-mpopcntb', '-mfprnd', '-mcmpb', '-mhard-dfp', and '-mrecip-precision'
! options.  Specify the '-maltivec' option explicitly in combination with
  the above options if desired.
  
!  The following functions require option '-mcmpb'.
       unsigned long long __builtin_cmpb (unsigned long long int, unsigned long long int);
       unsigned int __builtin_cmpb (unsigned int, unsigned int);
  
!  The '__builtin_cmpb' function performs a byte-wise compare on the
  contents of its two arguments, returning the result of the byte-wise
  comparison as the returned value.  For each byte comparison, the
  corresponding byte of the return value holds 0xff if the input bytes are
  equal and 0 if the input bytes are not equal.  If either of the
  arguments to this built-in function is wider than 32 bits, the function
! call expands into the form that expects 'unsigned long long int'
  arguments which is only available on 64-bit targets.
  
   The following built-in functions are available when hardware decimal
! floating point ('-mhard-dfp') is available:
       void __builtin_set_fpscr_drn(int);
       _Decimal64 __builtin_ddedpd (int, _Decimal64);
       _Decimal128 __builtin_ddedpdq (int, _Decimal128);
--- 58825,58851 ----
  The basic built-in functions described in this section are available on
  the PowerPC family of processors starting with ISA 2.05 or later.
  Unless specific options are explicitly disabled on the command line,
! specifying option â€˜-mcpu=power6â€™ has the effect of enabling the
! â€˜-mpowerpc64â€™, â€˜-mpowerpc-gpoptâ€™, â€˜-mpowerpc-gfxoptâ€™, â€˜-mmfcrfâ€™,
! â€˜-mpopcntbâ€™, â€˜-mfprndâ€™, â€˜-mcmpbâ€™, â€˜-mhard-dfpâ€™, and â€˜-mrecip-precisionâ€™
! options.  Specify the â€˜-maltivecâ€™ option explicitly in combination with
  the above options if desired.
  
!  The following functions require option â€˜-mcmpbâ€™.
       unsigned long long __builtin_cmpb (unsigned long long int, unsigned long long int);
       unsigned int __builtin_cmpb (unsigned int, unsigned int);
  
!  The â€˜__builtin_cmpbâ€™ function performs a byte-wise compare on the
  contents of its two arguments, returning the result of the byte-wise
  comparison as the returned value.  For each byte comparison, the
  corresponding byte of the return value holds 0xff if the input bytes are
  equal and 0 if the input bytes are not equal.  If either of the
  arguments to this built-in function is wider than 32 bits, the function
! call expands into the form that expects â€˜unsigned long long intâ€™
  arguments which is only available on 64-bit targets.
  
   The following built-in functions are available when hardware decimal
! floating point (â€˜-mhard-dfpâ€™) is available:
       void __builtin_set_fpscr_drn(int);
       _Decimal64 __builtin_ddedpd (int, _Decimal64);
       _Decimal128 __builtin_ddedpdq (int, _Decimal128);
*************** floating point ('-mhard-dfp') is availab
*** 58879,58926 ****
       point field of the FPSCR.
  
  
!  The following functions require '-mhard-float', '-mpowerpc-gfxopt', and
! '-mpopcntb' options.
  
       double __builtin_recipdiv (double, double);
       float __builtin_recipdivf (float, float);
       double __builtin_rsqrt (double);
       float __builtin_rsqrtf (float);
  
!  The 'vec_rsqrt', '__builtin_rsqrt', and '__builtin_rsqrtf' functions
  generate multiple instructions to implement the reciprocal sqrt
  functionality using reciprocal sqrt estimate instructions.
  
!  The '__builtin_recipdiv', and '__builtin_recipdivf' functions generate
  multiple instructions to implement division using the reciprocal
  estimate instructions.
  
!  The following functions require '-mhard-float' and '-mmultiple'
  options.
  
!  The '__builtin_unpack_longdouble' function takes a 'long double'
  argument and a compile time constant of 0 or 1.  If the constant is 0,
! the first 'double' within the 'long double' is returned, otherwise the
! second 'double' is returned.  The '__builtin_unpack_longdouble' function
! is only available if 'long double' uses the IBM extended double
  representation.
  
!  The '__builtin_pack_longdouble' function takes two 'double' arguments
! and returns a 'long double' value that combines the two arguments.  The
! '__builtin_pack_longdouble' function is only available if 'long double'
  uses the IBM extended double representation.
  
!  The '__builtin_unpack_ibm128' function takes a '__ibm128' argument and
  a compile time constant of 0 or 1.  If the constant is 0, the first
! 'double' within the '__ibm128' is returned, otherwise the second
! 'double' is returned.
  
!  The '__builtin_pack_ibm128' function takes two 'double' arguments and
! returns a '__ibm128' value that combines the two arguments.
  
   Additional built-in functions are available for the 64-bit PowerPC
  family of processors, for efficient use of 128-bit floating point
! ('__float128') values.
  
   Vector select
  
--- 58888,58935 ----
       point field of the FPSCR.
  
  
!  The following functions require â€˜-mhard-floatâ€™, â€˜-mpowerpc-gfxoptâ€™, and
! â€˜-mpopcntbâ€™ options.
  
       double __builtin_recipdiv (double, double);
       float __builtin_recipdivf (float, float);
       double __builtin_rsqrt (double);
       float __builtin_rsqrtf (float);
  
!  The â€˜vec_rsqrtâ€™, â€˜__builtin_rsqrtâ€™, and â€˜__builtin_rsqrtfâ€™ functions
  generate multiple instructions to implement the reciprocal sqrt
  functionality using reciprocal sqrt estimate instructions.
  
!  The â€˜__builtin_recipdivâ€™, and â€˜__builtin_recipdivfâ€™ functions generate
  multiple instructions to implement division using the reciprocal
  estimate instructions.
  
!  The following functions require â€˜-mhard-floatâ€™ and â€˜-mmultipleâ€™
  options.
  
!  The â€˜__builtin_unpack_longdoubleâ€™ function takes a â€˜long doubleâ€™
  argument and a compile time constant of 0 or 1.  If the constant is 0,
! the first â€˜doubleâ€™ within the â€˜long doubleâ€™ is returned, otherwise the
! second â€˜doubleâ€™ is returned.  The â€˜__builtin_unpack_longdoubleâ€™ function
! is only available if â€˜long doubleâ€™ uses the IBM extended double
  representation.
  
!  The â€˜__builtin_pack_longdoubleâ€™ function takes two â€˜doubleâ€™ arguments
! and returns a â€˜long doubleâ€™ value that combines the two arguments.  The
! â€˜__builtin_pack_longdoubleâ€™ function is only available if â€˜long doubleâ€™
  uses the IBM extended double representation.
  
!  The â€˜__builtin_unpack_ibm128â€™ function takes a â€˜__ibm128â€™ argument and
  a compile time constant of 0 or 1.  If the constant is 0, the first
! â€˜doubleâ€™ within the â€˜__ibm128â€™ is returned, otherwise the second
! â€˜doubleâ€™ is returned.
  
!  The â€˜__builtin_pack_ibm128â€™ function takes two â€˜doubleâ€™ arguments and
! returns a â€˜__ibm128â€™ value that combines the two arguments.
  
   Additional built-in functions are available for the 64-bit PowerPC
  family of processors, for efficient use of 128-bit floating point
! (â€˜__float128â€™) values.
  
   Vector select
  
*************** family of processors, for efficient use
*** 58938,58944 ****
                      vector bool __int128, vector unsigned __int128);
  
   The instance is an extension of the existing overloaded built-in
! 'vec_sel' that is documented in the PVIPR.
  
       vector signed __int128 vec_perm (vector signed __int128,
                      vector signed __int128);
--- 58947,58953 ----
                      vector bool __int128, vector unsigned __int128);
  
   The instance is an extension of the existing overloaded built-in
! â€˜vec_selâ€™ that is documented in the PVIPR.
  
       vector signed __int128 vec_perm (vector signed __int128,
                      vector signed __int128);
*************** family of processors, for efficient use
*** 58946,58952 ****
                      vector unsigned __int128);
  
   The instance is an extension of the existing overloaded built-in
! 'vec_perm' that is documented in the PVIPR.
  
  
  File: gcc.info,  Node: Basic PowerPC Built-in Functions Available on ISA 2.06,  Next: Basic PowerPC Built-in Functions Available on ISA 2.07,  Prev: Basic PowerPC Built-in Functions Available on ISA 2.05,  Up: Basic PowerPC Built-in Functions
--- 58955,58961 ----
                      vector unsigned __int128);
  
   The instance is an extension of the existing overloaded built-in
! â€˜vec_permâ€™ that is documented in the PVIPR.
  
  
  File: gcc.info,  Node: Basic PowerPC Built-in Functions Available on ISA 2.06,  Next: Basic PowerPC Built-in Functions Available on ISA 2.07,  Prev: Basic PowerPC Built-in Functions Available on ISA 2.05,  Up: Basic PowerPC Built-in Functions
*************** File: gcc.info,  Node: Basic PowerPC Bui
*** 58957,58967 ****
  The basic built-in functions described in this section are available on
  the PowerPC family of processors starting with ISA 2.05 or later.
  Unless specific options are explicitly disabled on the command line,
! specifying option '-mcpu=power7' has the effect of enabling all the same
! options as for '-mcpu=power6' in addition to the '-maltivec',
! '-mpopcntd', and '-mvsx' options.
  
!  The following basic built-in functions require '-mpopcntd':
       unsigned int __builtin_addg6s (unsigned int, unsigned int);
       long long __builtin_bpermd (long long, long long);
       unsigned int __builtin_cbcdtd (unsigned int);
--- 58966,58976 ----
  The basic built-in functions described in this section are available on
  the PowerPC family of processors starting with ISA 2.05 or later.
  Unless specific options are explicitly disabled on the command line,
! specifying option â€˜-mcpu=power7â€™ has the effect of enabling all the same
! options as for â€˜-mcpu=power6â€™ in addition to the â€˜-maltivecâ€™,
! â€˜-mpopcntdâ€™, and â€˜-mvsxâ€™ options.
  
!  The following basic built-in functions require â€˜-mpopcntdâ€™:
       unsigned int __builtin_addg6s (unsigned int, unsigned int);
       long long __builtin_bpermd (long long, long long);
       unsigned int __builtin_cbcdtd (unsigned int);
*************** options as for '-mcpu=power6' in additio
*** 58974,58984 ****
       void __builtin_rs6000_speculation_barrier (void);
       long long __builtin_unpack_vector_int128 (vector __int128, signed char);
  
!  Of these, the '__builtin_divde' and '__builtin_divdeu' functions
  require a 64-bit environment.
  
   The following basic built-in functions, which are also supported on x86
! targets, require '-mfloat128'.
       __float128 __builtin_fabsq (__float128);
       __float128 __builtin_copysignq (__float128, __float128);
       __float128 __builtin_infq (void);
--- 58983,58993 ----
       void __builtin_rs6000_speculation_barrier (void);
       long long __builtin_unpack_vector_int128 (vector __int128, signed char);
  
!  Of these, the â€˜__builtin_divdeâ€™ and â€˜__builtin_divdeuâ€™ functions
  require a 64-bit environment.
  
   The following basic built-in functions, which are also supported on x86
! targets, require â€˜-mfloat128â€™.
       __float128 __builtin_fabsq (__float128);
       __float128 __builtin_copysignq (__float128, __float128);
       __float128 __builtin_infq (void);
*************** File: gcc.info,  Node: Basic PowerPC Bui
*** 58998,59006 ****
  The basic built-in functions described in this section are available on
  the PowerPC family of processors starting with ISA 2.07 or later.
  Unless specific options are explicitly disabled on the command line,
! specifying option '-mcpu=power8' has the effect of enabling all the same
! options as for '-mcpu=power7' in addition to the '-mpower8-fusion',
! '-mcrypto', '-mhtm', '-mquad-memory', and '-mquad-memory-atomic'
  options.
  
   This section intentionally empty.
--- 59007,59015 ----
  The basic built-in functions described in this section are available on
  the PowerPC family of processors starting with ISA 2.07 or later.
  Unless specific options are explicitly disabled on the command line,
! specifying option â€˜-mcpu=power8â€™ has the effect of enabling all the same
! options as for â€˜-mcpu=power7â€™ in addition to the â€˜-mpower8-fusionâ€™,
! â€˜-mcryptoâ€™, â€˜-mhtmâ€™, â€˜-mquad-memoryâ€™, and â€˜-mquad-memory-atomicâ€™
  options.
  
   This section intentionally empty.
*************** File: gcc.info,  Node: Basic PowerPC Bui
*** 59014,59024 ****
  The basic built-in functions described in this section are available on
  the PowerPC family of processors starting with ISA 3.0 or later.  Unless
  specific options are explicitly disabled on the command line, specifying
! option '-mcpu=power9' has the effect of enabling all the same options as
! for '-mcpu=power8' in addition to the '-misel' option.
  
   The following built-in functions are available on Linux 64-bit systems
! that use the ISA 3.0 instruction set ('-mcpu=power9'):
  
   -- Built-in Function: __float128 __builtin_addf128_round_to_odd
            (__float128, __float128)
--- 59023,59033 ----
  The basic built-in functions described in this section are available on
  the PowerPC family of processors starting with ISA 3.0 or later.  Unless
  specific options are explicitly disabled on the command line, specifying
! option â€˜-mcpu=power9â€™ has the effect of enabling all the same options as
! for â€˜-mcpu=power8â€™ in addition to the â€˜-miselâ€™ option.
  
   The following built-in functions are available on Linux 64-bit systems
! that use the ISA 3.0 instruction set (â€˜-mcpu=power9â€™):
  
   -- Built-in Function: __float128 __builtin_addf128_round_to_odd
            (__float128, __float128)
*************** that use the ISA 3.0 instruction set ('-
*** 59052,59058 ****
  
   -- Built-in Function: double __builtin_truncf128_round_to_odd
            (__float128)
!      Convert a 128-bit IEEE floating point value to 'double' using round
       to odd as the rounding mode.
  
   The following additional built-in functions are also available for the
--- 59061,59067 ----
  
   -- Built-in Function: double __builtin_truncf128_round_to_odd
            (__float128)
!      Convert a 128-bit IEEE floating point value to â€˜doubleâ€™ using round
       to odd as the rounding mode.
  
   The following additional built-in functions are also available for the
*************** PowerPC family of processors, starting w
*** 59061,59071 ****
   -- Built-in Function: long long __builtin_darn (void)
   -- Built-in Function: long long __builtin_darn_raw (void)
   -- Built-in Function: int __builtin_darn_32 (void)
!      The '__builtin_darn' and '__builtin_darn_raw' functions require a
       64-bit environment supporting ISA 3.0 or later.  The
!      '__builtin_darn' function provides a 64-bit conditioned random
!      number.  The '__builtin_darn_raw' function provides a 64-bit raw
!      random number.  The '__builtin_darn_32' function provides a 32-bit
       conditioned random number.
  
   The following additional built-in functions are also available for the
--- 59070,59080 ----
   -- Built-in Function: long long __builtin_darn (void)
   -- Built-in Function: long long __builtin_darn_raw (void)
   -- Built-in Function: int __builtin_darn_32 (void)
!      The â€˜__builtin_darnâ€™ and â€˜__builtin_darn_rawâ€™ functions require a
       64-bit environment supporting ISA 3.0 or later.  The
!      â€˜__builtin_darnâ€™ function provides a 64-bit conditioned random
!      number.  The â€˜__builtin_darn_rawâ€™ function provides a 64-bit raw
!      random number.  The â€˜__builtin_darn_32â€™ function provides a 32-bit
       conditioned random number.
  
   The following additional built-in functions are also available for the
*************** PowerPC family of processors, starting w
*** 59097,59150 ****
  
       double __builtin_mffsl(void);
  
!  The '__builtin_byte_in_set' function requires a 64-bit environment
  supporting ISA 3.0 or later.  This function returns a non-zero value if
! and only if its 'u' argument exactly equals one of the eight bytes
! contained within its 64-bit 'set' argument.
  
!  The '__builtin_byte_in_range' and '__builtin_byte_in_either_range'
  require an environment supporting ISA 3.0 or later.  For these two
! functions, the 'range' argument is encoded as 4 bytes, organized as
! 'hi_1:lo_1:hi_2:lo_2'.  The '__builtin_byte_in_range' function returns a
! non-zero value if and only if its 'u' argument is within the range
! bounded between 'lo_2' and 'hi_2' inclusive.  The
! '__builtin_byte_in_either_range' function returns non-zero if and only
! if its 'u' argument is within either the range bounded between 'lo_1'
! and 'hi_1' inclusive or the range bounded between 'lo_2' and 'hi_2'
  inclusive.
  
!  The '__builtin_dfp_dtstsfi_lt' function returns a non-zero value if and
! only if the number of significant digits of its 'value' argument is less
! than its 'comparison' argument.  The '__builtin_dfp_dtstsfi_lt_dd' and
! '__builtin_dfp_dtstsfi_lt_td' functions behave similarly, but require
! that the type of the 'value' argument be '__Decimal64' and
! '__Decimal128' respectively.
  
!  The '__builtin_dfp_dtstsfi_gt' function returns a non-zero value if and
! only if the number of significant digits of its 'value' argument is
! greater than its 'comparison' argument.  The
! '__builtin_dfp_dtstsfi_gt_dd' and '__builtin_dfp_dtstsfi_gt_td'
! functions behave similarly, but require that the type of the 'value'
! argument be '__Decimal64' and '__Decimal128' respectively.
  
!  The '__builtin_dfp_dtstsfi_eq' function returns a non-zero value if and
! only if the number of significant digits of its 'value' argument equals
! its 'comparison' argument.  The '__builtin_dfp_dtstsfi_eq_dd' and
! '__builtin_dfp_dtstsfi_eq_td' functions behave similarly, but require
! that the type of the 'value' argument be '__Decimal64' and
! '__Decimal128' respectively.
  
!  The '__builtin_dfp_dtstsfi_ov' function returns a non-zero value if and
! only if its 'value' argument has an undefined number of significant
! digits, such as when 'value' is an encoding of 'NaN'.  The
! '__builtin_dfp_dtstsfi_ov_dd' and '__builtin_dfp_dtstsfi_ov_td'
! functions behave similarly, but require that the type of the 'value'
! argument be '__Decimal64' and '__Decimal128' respectively.
  
!  The '__builtin_mffsl' uses the ISA 3.0 'mffsl' instruction to read the
! FPSCR. The instruction is a lower latency version of the 'mffs'
! instruction.  If the 'mffsl' instruction is not available, then the
! builtin uses the older 'mffs' instruction to read the FPSCR.
  
  
  File: gcc.info,  Node: Basic PowerPC Built-in Functions Available on ISA 3.1,  Prev: Basic PowerPC Built-in Functions Available on ISA 3.0,  Up: Basic PowerPC Built-in Functions
--- 59106,59159 ----
  
       double __builtin_mffsl(void);
  
!  The â€˜__builtin_byte_in_setâ€™ function requires a 64-bit environment
  supporting ISA 3.0 or later.  This function returns a non-zero value if
! and only if its â€˜uâ€™ argument exactly equals one of the eight bytes
! contained within its 64-bit â€˜setâ€™ argument.
  
!  The â€˜__builtin_byte_in_rangeâ€™ and â€˜__builtin_byte_in_either_rangeâ€™
  require an environment supporting ISA 3.0 or later.  For these two
! functions, the â€˜rangeâ€™ argument is encoded as 4 bytes, organized as
! â€˜hi_1:lo_1:hi_2:lo_2â€™.  The â€˜__builtin_byte_in_rangeâ€™ function returns a
! non-zero value if and only if its â€˜uâ€™ argument is within the range
! bounded between â€˜lo_2â€™ and â€˜hi_2â€™ inclusive.  The
! â€˜__builtin_byte_in_either_rangeâ€™ function returns non-zero if and only
! if its â€˜uâ€™ argument is within either the range bounded between â€˜lo_1â€™
! and â€˜hi_1â€™ inclusive or the range bounded between â€˜lo_2â€™ and â€˜hi_2â€™
  inclusive.
  
!  The â€˜__builtin_dfp_dtstsfi_ltâ€™ function returns a non-zero value if and
! only if the number of significant digits of its â€˜valueâ€™ argument is less
! than its â€˜comparisonâ€™ argument.  The â€˜__builtin_dfp_dtstsfi_lt_ddâ€™ and
! â€˜__builtin_dfp_dtstsfi_lt_tdâ€™ functions behave similarly, but require
! that the type of the â€˜valueâ€™ argument be â€˜__Decimal64â€™ and
! â€˜__Decimal128â€™ respectively.
  
!  The â€˜__builtin_dfp_dtstsfi_gtâ€™ function returns a non-zero value if and
! only if the number of significant digits of its â€˜valueâ€™ argument is
! greater than its â€˜comparisonâ€™ argument.  The
! â€˜__builtin_dfp_dtstsfi_gt_ddâ€™ and â€˜__builtin_dfp_dtstsfi_gt_tdâ€™
! functions behave similarly, but require that the type of the â€˜valueâ€™
! argument be â€˜__Decimal64â€™ and â€˜__Decimal128â€™ respectively.
  
!  The â€˜__builtin_dfp_dtstsfi_eqâ€™ function returns a non-zero value if and
! only if the number of significant digits of its â€˜valueâ€™ argument equals
! its â€˜comparisonâ€™ argument.  The â€˜__builtin_dfp_dtstsfi_eq_ddâ€™ and
! â€˜__builtin_dfp_dtstsfi_eq_tdâ€™ functions behave similarly, but require
! that the type of the â€˜valueâ€™ argument be â€˜__Decimal64â€™ and
! â€˜__Decimal128â€™ respectively.
  
!  The â€˜__builtin_dfp_dtstsfi_ovâ€™ function returns a non-zero value if and
! only if its â€˜valueâ€™ argument has an undefined number of significant
! digits, such as when â€˜valueâ€™ is an encoding of â€˜NaNâ€™.  The
! â€˜__builtin_dfp_dtstsfi_ov_ddâ€™ and â€˜__builtin_dfp_dtstsfi_ov_tdâ€™
! functions behave similarly, but require that the type of the â€˜valueâ€™
! argument be â€˜__Decimal64â€™ and â€˜__Decimal128â€™ respectively.
  
!  The â€˜__builtin_mffslâ€™ uses the ISA 3.0 â€˜mffslâ€™ instruction to read the
! FPSCR. The instruction is a lower latency version of the â€˜mffsâ€™
! instruction.  If the â€˜mffslâ€™ instruction is not available, then the
! builtin uses the older â€˜mffsâ€™ instruction to read the FPSCR.
  
  
  File: gcc.info,  Node: Basic PowerPC Built-in Functions Available on ISA 3.1,  Prev: Basic PowerPC Built-in Functions Available on ISA 3.0,  Up: Basic PowerPC Built-in Functions
*************** File: gcc.info,  Node: Basic PowerPC Bui
*** 59155,59190 ****
  The basic built-in functions described in this section are available on
  the PowerPC family of processors starting with ISA 3.1.  Unless specific
  options are explicitly disabled on the command line, specifying option
! '-mcpu=power10' has the effect of enabling all the same options as for
! '-mcpu=power9'.
  
   The following built-in functions are available on Linux 64-bit systems
! that use a future architecture instruction set ('-mcpu=power10'):
  
   -- Built-in Function: unsigned long long __builtin_cfuged (unsigned
            long long, unsigned long long)
       Perform a 64-bit centrifuge operation, as if implemented by the
!      'cfuged' instruction.
  
   -- Built-in Function: unsigned long long __builtin_cntlzdm (unsigned
            long long, unsigned long long)
       Perform a 64-bit count leading zeros operation under mask, as if
!      implemented by the 'cntlzdm' instruction.
  
   -- Built-in Function: unsigned long long __builtin_cnttzdm (unsigned
            long long, unsigned long long)
       Perform a 64-bit count trailing zeros operation under mask, as if
!      implemented by the 'cnttzdm' instruction.
  
   -- Built-in Function: unsigned long long __builtin_pdepd (unsigned long
            long, unsigned long long)
       Perform a 64-bit parallel bits deposit operation, as if implemented
!      by the 'pdepd' instruction.
  
   -- Built-in Function: unsigned long long __builtin_pextd (unsigned long
            long, unsigned long long)
       Perform a 64-bit parallel bits extract operation, as if implemented
!      by the 'pextd' instruction.
  
   -- Built-in Function: vector signed __int128 vsx_xl_sext (signed long
            long, signed char *)
--- 59164,59199 ----
  The basic built-in functions described in this section are available on
  the PowerPC family of processors starting with ISA 3.1.  Unless specific
  options are explicitly disabled on the command line, specifying option
! â€˜-mcpu=power10â€™ has the effect of enabling all the same options as for
! â€˜-mcpu=power9â€™.
  
   The following built-in functions are available on Linux 64-bit systems
! that use a future architecture instruction set (â€˜-mcpu=power10â€™):
  
   -- Built-in Function: unsigned long long __builtin_cfuged (unsigned
            long long, unsigned long long)
       Perform a 64-bit centrifuge operation, as if implemented by the
!      â€˜cfugedâ€™ instruction.
  
   -- Built-in Function: unsigned long long __builtin_cntlzdm (unsigned
            long long, unsigned long long)
       Perform a 64-bit count leading zeros operation under mask, as if
!      implemented by the â€˜cntlzdmâ€™ instruction.
  
   -- Built-in Function: unsigned long long __builtin_cnttzdm (unsigned
            long long, unsigned long long)
       Perform a 64-bit count trailing zeros operation under mask, as if
!      implemented by the â€˜cnttzdmâ€™ instruction.
  
   -- Built-in Function: unsigned long long __builtin_pdepd (unsigned long
            long, unsigned long long)
       Perform a 64-bit parallel bits deposit operation, as if implemented
!      by the â€˜pdepdâ€™ instruction.
  
   -- Built-in Function: unsigned long long __builtin_pextd (unsigned long
            long, unsigned long long)
       Perform a 64-bit parallel bits extract operation, as if implemented
!      by the â€˜pextdâ€™ instruction.
  
   -- Built-in Function: vector signed __int128 vsx_xl_sext (signed long
            long, signed char *)
*************** that use a future architecture instructi
*** 59204,59210 ****
            long, unsigned long long *)
  
       Load (and sign extend) to an __int128 vector, as if implemented by
!      the ISA 3.1 'lxvrbx', 'lxvrhx', 'lxvrwx', and 'lxvrdx'
       instructions.
  
   -- Built-in Function: void vec_xst_trunc (vector signed __int128,
--- 59213,59219 ----
            long, unsigned long long *)
  
       Load (and sign extend) to an __int128 vector, as if implemented by
!      the ISA 3.1 â€˜lxvrbxâ€™, â€˜lxvrhxâ€™, â€˜lxvrwxâ€™, and â€˜lxvrdxâ€™
       instructions.
  
   -- Built-in Function: void vec_xst_trunc (vector signed __int128,
*************** that use a future architecture instructi
*** 59225,59232 ****
            signed long long, unsigned long long *)
  
       Truncate and store the rightmost element of a vector, as if
!      implemented by the ISA 3.1 'stxvrbx', 'stxvrhx', 'stxvrwx', and
!      'stxvrdx' instructions.
  
  
  File: gcc.info,  Node: PowerPC AltiVec/VSX Built-in Functions,  Next: PowerPC Hardware Transactional Memory Built-in Functions,  Prev: Basic PowerPC Built-in Functions,  Up: Target Builtins
--- 59234,59241 ----
            signed long long, unsigned long long *)
  
       Truncate and store the rightmost element of a vector, as if
!      implemented by the ISA 3.1 â€˜stxvrbxâ€™, â€˜stxvrhxâ€™, â€˜stxvrwxâ€™, and
!      â€˜stxvrdxâ€™ instructions.
  
  
  File: gcc.info,  Node: PowerPC AltiVec/VSX Built-in Functions,  Next: PowerPC Hardware Transactional Memory Built-in Functions,  Prev: Basic PowerPC Built-in Functions,  Up: Target Builtins
*************** File: gcc.info,  Node: PowerPC AltiVec/V
*** 59237,59243 ****
  GCC provides an interface for the PowerPC family of processors to access
  the AltiVec operations described in Motorola's AltiVec Programming
  Interface Manual.  The interface is made available by including
! '<altivec.h>' and using '-maltivec' and '-mabi=altivec'.  The interface
  supports the following vector types.
  
       vector unsigned char
--- 59246,59252 ----
  GCC provides an interface for the PowerPC family of processors to access
  the AltiVec operations described in Motorola's AltiVec Programming
  Interface Manual.  The interface is made available by including
! â€˜<altivec.h>â€™ and using â€˜-maltivecâ€™ and â€˜-mabi=altivecâ€™.  The interface
  supports the following vector types.
  
       vector unsigned char
*************** supports the following vector types.
*** 59258,59308 ****
  from C and C++ code differs from Motorola's documentation in several
  ways.
  
!    * A vector constant is a list of constant expressions within curly
       braces.
  
!    * A vector initializer requires no cast if the vector constant is of
       the same type as the variable it is initializing.
  
!    * If 'signed' or 'unsigned' is omitted, the signedness of the vector
       type is the default signedness of the base type.  The default
       varies depending on the operating system, so a portable program
       should always specify the signedness.
  
!    * Compiling with '-maltivec' adds keywords '__vector', 'vector',
!      '__pixel', 'pixel', '__bool' and 'bool'.  When compiling ISO C, the
!      context-sensitive substitution of the keywords 'vector', 'pixel'
!      and 'bool' is disabled.  To use them, you must include
!      '<altivec.h>' instead.
  
!    * GCC allows using a 'typedef' name as the type specifier for a
       vector type, but only under the following circumstances:
  
!         * When using '__vector' instead of 'vector'; for example,
  
                 typedef signed short int16;
                 __vector int16 data;
  
!         * When using 'vector' in keyword-and-predefine mode; for
            example,
  
                 typedef signed short int16;
                 vector int16 data;
  
            Note that keyword-and-predefine mode is enabled by disabling
!           GNU extensions (e.g., by using '-std=c11') and including
!           '<altivec.h>'.
  
!    * For C, overloaded functions are implemented with macros so the
       following does not work:
  
              vec_add ((vector signed int){1, 2, 3, 4}, foo);
  
!      Since 'vec_add' is a macro, the vector constant in the example is
       treated as four separate arguments.  Wrap the entire argument in
       parentheses for this to work.
  
!  _Note:_ Only the '<altivec.h>' interface is supported.  Internally, GCC
  uses built-in functions to achieve the functionality in the
  aforementioned header file, but they are not supported and are subject
  to change without notice.
--- 59267,59317 ----
  from C and C++ code differs from Motorola's documentation in several
  ways.
  
!    â€¢ A vector constant is a list of constant expressions within curly
       braces.
  
!    â€¢ A vector initializer requires no cast if the vector constant is of
       the same type as the variable it is initializing.
  
!    â€¢ If â€˜signedâ€™ or â€˜unsignedâ€™ is omitted, the signedness of the vector
       type is the default signedness of the base type.  The default
       varies depending on the operating system, so a portable program
       should always specify the signedness.
  
!    â€¢ Compiling with â€˜-maltivecâ€™ adds keywords â€˜__vectorâ€™, â€˜vectorâ€™,
!      â€˜__pixelâ€™, â€˜pixelâ€™, â€˜__boolâ€™ and â€˜boolâ€™.  When compiling ISO C, the
!      context-sensitive substitution of the keywords â€˜vectorâ€™, â€˜pixelâ€™
!      and â€˜boolâ€™ is disabled.  To use them, you must include
!      â€˜<altivec.h>â€™ instead.
  
!    â€¢ GCC allows using a â€˜typedefâ€™ name as the type specifier for a
       vector type, but only under the following circumstances:
  
!         â€¢ When using â€˜__vectorâ€™ instead of â€˜vectorâ€™; for example,
  
                 typedef signed short int16;
                 __vector int16 data;
  
!         â€¢ When using â€˜vectorâ€™ in keyword-and-predefine mode; for
            example,
  
                 typedef signed short int16;
                 vector int16 data;
  
            Note that keyword-and-predefine mode is enabled by disabling
!           GNU extensions (e.g., by using â€˜-std=c11â€™) and including
!           â€˜<altivec.h>â€™.
  
!    â€¢ For C, overloaded functions are implemented with macros so the
       following does not work:
  
              vec_add ((vector signed int){1, 2, 3, 4}, foo);
  
!      Since â€˜vec_addâ€™ is a macro, the vector constant in the example is
       treated as four separate arguments.  Wrap the entire argument in
       parentheses for this to work.
  
!  _Note:_ Only the â€˜<altivec.h>â€™ interface is supported.  Internally, GCC
  uses built-in functions to achieve the functionality in the
  aforementioned header file, but they are not supported and are subject
  to change without notice.
*************** same capabilities should be considered d
*** 59320,59389 ****
  
   The PVIPR documents the following overloaded functions:
  
! 'vec_abs'                'vec_absd'               'vec_abss'
! 'vec_add'                'vec_addc'               'vec_adde'
! 'vec_addec'              'vec_adds'               'vec_all_eq'
! 'vec_all_ge'             'vec_all_gt'             'vec_all_in'
! 'vec_all_le'             'vec_all_lt'             'vec_all_nan'
! 'vec_all_ne'             'vec_all_nge'            'vec_all_ngt'
! 'vec_all_nle'            'vec_all_nlt'            'vec_all_numeric'
! 'vec_and'                'vec_andc'               'vec_any_eq'
! 'vec_any_ge'             'vec_any_gt'             'vec_any_le'
! 'vec_any_lt'             'vec_any_nan'            'vec_any_ne'
! 'vec_any_nge'            'vec_any_ngt'            'vec_any_nle'
! 'vec_any_nlt'            'vec_any_numeric'        'vec_any_out'
! 'vec_avg'                'vec_bperm'              'vec_ceil'
! 'vec_cipher_be'          'vec_cipherlast_be'      'vec_cmpb'
! 'vec_cmpeq'              'vec_cmpge'              'vec_cmpgt'
! 'vec_cmple'              'vec_cmplt'              'vec_cmpne'
! 'vec_cmpnez'             'vec_cntlz'              'vec_cntlz_lsbb'
! 'vec_cnttz'              'vec_cnttz_lsbb'         'vec_cpsgn'
! 'vec_ctf'                'vec_cts'                'vec_ctu'
! 'vec_div'                'vec_double'             'vec_doublee'
! 'vec_doubleh'            'vec_doublel'            'vec_doubleo'
! 'vec_eqv'                'vec_expte'              'vec_extract'
! 'vec_extract_exp'        'vec_extract_fp32_from_shorth''vec_extract_fp32_from_shortl'
! 'vec_extract_sig'        'vec_extract_4b'         'vec_first_match_index'
! 'vec_first_match_or_eos_index''vec_first_mismatch_index''vec_first_mismatch_or_eos_index'
! 'vec_float'              'vec_float2'             'vec_floate'
! 'vec_floato'             'vec_floor'              'vec_gb'
! 'vec_insert'             'vec_insert_exp'         'vec_insert4b'
! 'vec_ld'                 'vec_lde'                'vec_ldl'
! 'vec_loge'               'vec_madd'               'vec_madds'
! 'vec_max'                'vec_mergee'             'vec_mergeh'
! 'vec_mergel'             'vec_mergeo'             'vec_mfvscr'
! 'vec_min'                'vec_mradds'             'vec_msub'
! 'vec_msum'               'vec_msums'              'vec_mtvscr'
! 'vec_mul'                'vec_mule'               'vec_mulo'
! 'vec_nabs'               'vec_nand'               'vec_ncipher_be'
! 'vec_ncipherlast_be'     'vec_nearbyint'          'vec_neg'
! 'vec_nmadd'              'vec_nmsub'              'vec_nor'
! 'vec_or'                 'vec_orc'                'vec_pack'
! 'vec_pack_to_short_fp32' 'vec_packpx'             'vec_packs'
! 'vec_packsu'             'vec_parity_lsbb'        'vec_perm'
! 'vec_permxor'            'vec_pmsum_be'           'vec_popcnt'
! 'vec_re'                 'vec_recipdiv'           'vec_revb'
! 'vec_reve'               'vec_rint'               'vec_rl'
! 'vec_rlmi'               'vec_rlnm'               'vec_round'
! 'vec_rsqrt'              'vec_rsqrte'             'vec_sbox_be'
! 'vec_sel'                'vec_shasigma_be'        'vec_signed'
! 'vec_signed2'            'vec_signede'            'vec_signedo'
! 'vec_sl'                 'vec_sld'                'vec_sldw'
! 'vec_sll'                'vec_slo'                'vec_slv'
! 'vec_splat'              'vec_splat_s8'           'vec_splat_s16'
! 'vec_splat_s32'          'vec_splat_u8'           'vec_splat_u16'
! 'vec_splat_u32'          'vec_splats'             'vec_sqrt'
! 'vec_sr'                 'vec_sra'                'vec_srl'
! 'vec_sro'                'vec_srv'                'vec_st'
! 'vec_ste'                'vec_stl'                'vec_sub'
! 'vec_subc'               'vec_sube'               'vec_subec'
! 'vec_subs'               'vec_sum2s'              'vec_sum4s'
! 'vec_sums'               'vec_test_data_class'    'vec_trunc'
! 'vec_unpackh'            'vec_unpackl'            'vec_unsigned'
! 'vec_unsigned2'          'vec_unsignede'          'vec_unsignedo'
! 'vec_xl'                 'vec_xl_be'              'vec_xl_len'
! 'vec_xl_len_r'           'vec_xor'                'vec_xst'
! 'vec_xst_be'             'vec_xst_len'            'vec_xst_len_r'
                                                    
  
  * Menu:
--- 59329,59398 ----
  
   The PVIPR documents the following overloaded functions:
  
! â€˜vec_absâ€™                â€˜vec_absdâ€™               â€˜vec_abssâ€™
! â€˜vec_addâ€™                â€˜vec_addcâ€™               â€˜vec_addeâ€™
! â€˜vec_addecâ€™              â€˜vec_addsâ€™               â€˜vec_all_eqâ€™
! â€˜vec_all_geâ€™             â€˜vec_all_gtâ€™             â€˜vec_all_inâ€™
! â€˜vec_all_leâ€™             â€˜vec_all_ltâ€™             â€˜vec_all_nanâ€™
! â€˜vec_all_neâ€™             â€˜vec_all_ngeâ€™            â€˜vec_all_ngtâ€™
! â€˜vec_all_nleâ€™            â€˜vec_all_nltâ€™            â€˜vec_all_numericâ€™
! â€˜vec_andâ€™                â€˜vec_andcâ€™               â€˜vec_any_eqâ€™
! â€˜vec_any_geâ€™             â€˜vec_any_gtâ€™             â€˜vec_any_leâ€™
! â€˜vec_any_ltâ€™             â€˜vec_any_nanâ€™            â€˜vec_any_neâ€™
! â€˜vec_any_ngeâ€™            â€˜vec_any_ngtâ€™            â€˜vec_any_nleâ€™
! â€˜vec_any_nltâ€™            â€˜vec_any_numericâ€™        â€˜vec_any_outâ€™
! â€˜vec_avgâ€™                â€˜vec_bpermâ€™              â€˜vec_ceilâ€™
! â€˜vec_cipher_beâ€™          â€˜vec_cipherlast_beâ€™      â€˜vec_cmpbâ€™
! â€˜vec_cmpeqâ€™              â€˜vec_cmpgeâ€™              â€˜vec_cmpgtâ€™
! â€˜vec_cmpleâ€™              â€˜vec_cmpltâ€™              â€˜vec_cmpneâ€™
! â€˜vec_cmpnezâ€™             â€˜vec_cntlzâ€™              â€˜vec_cntlz_lsbbâ€™
! â€˜vec_cnttzâ€™              â€˜vec_cnttz_lsbbâ€™         â€˜vec_cpsgnâ€™
! â€˜vec_ctfâ€™                â€˜vec_ctsâ€™                â€˜vec_ctuâ€™
! â€˜vec_divâ€™                â€˜vec_doubleâ€™             â€˜vec_doubleeâ€™
! â€˜vec_doublehâ€™            â€˜vec_doublelâ€™            â€˜vec_doubleoâ€™
! â€˜vec_eqvâ€™                â€˜vec_expteâ€™              â€˜vec_extractâ€™
! â€˜vec_extract_expâ€™        â€˜vec_extract_fp32_from_shorthâ€™â€˜vec_extract_fp32_from_shortlâ€™
! â€˜vec_extract_sigâ€™        â€˜vec_extract_4bâ€™         â€˜vec_first_match_indexâ€™
! â€˜vec_first_match_or_eos_indexâ€™â€˜vec_first_mismatch_indexâ€™â€˜vec_first_mismatch_or_eos_indexâ€™
! â€˜vec_floatâ€™              â€˜vec_float2â€™             â€˜vec_floateâ€™
! â€˜vec_floatoâ€™             â€˜vec_floorâ€™              â€˜vec_gbâ€™
! â€˜vec_insertâ€™             â€˜vec_insert_expâ€™         â€˜vec_insert4bâ€™
! â€˜vec_ldâ€™                 â€˜vec_ldeâ€™                â€˜vec_ldlâ€™
! â€˜vec_logeâ€™               â€˜vec_maddâ€™               â€˜vec_maddsâ€™
! â€˜vec_maxâ€™                â€˜vec_mergeeâ€™             â€˜vec_mergehâ€™
! â€˜vec_mergelâ€™             â€˜vec_mergeoâ€™             â€˜vec_mfvscrâ€™
! â€˜vec_minâ€™                â€˜vec_mraddsâ€™             â€˜vec_msubâ€™
! â€˜vec_msumâ€™               â€˜vec_msumsâ€™              â€˜vec_mtvscrâ€™
! â€˜vec_mulâ€™                â€˜vec_muleâ€™               â€˜vec_muloâ€™
! â€˜vec_nabsâ€™               â€˜vec_nandâ€™               â€˜vec_ncipher_beâ€™
! â€˜vec_ncipherlast_beâ€™     â€˜vec_nearbyintâ€™          â€˜vec_negâ€™
! â€˜vec_nmaddâ€™              â€˜vec_nmsubâ€™              â€˜vec_norâ€™
! â€˜vec_orâ€™                 â€˜vec_orcâ€™                â€˜vec_packâ€™
! â€˜vec_pack_to_short_fp32â€™ â€˜vec_packpxâ€™             â€˜vec_packsâ€™
! â€˜vec_packsuâ€™             â€˜vec_parity_lsbbâ€™        â€˜vec_permâ€™
! â€˜vec_permxorâ€™            â€˜vec_pmsum_beâ€™           â€˜vec_popcntâ€™
! â€˜vec_reâ€™                 â€˜vec_recipdivâ€™           â€˜vec_revbâ€™
! â€˜vec_reveâ€™               â€˜vec_rintâ€™               â€˜vec_rlâ€™
! â€˜vec_rlmiâ€™               â€˜vec_rlnmâ€™               â€˜vec_roundâ€™
! â€˜vec_rsqrtâ€™              â€˜vec_rsqrteâ€™             â€˜vec_sbox_beâ€™
! â€˜vec_selâ€™                â€˜vec_shasigma_beâ€™        â€˜vec_signedâ€™
! â€˜vec_signed2â€™            â€˜vec_signedeâ€™            â€˜vec_signedoâ€™
! â€˜vec_slâ€™                 â€˜vec_sldâ€™                â€˜vec_sldwâ€™
! â€˜vec_sllâ€™                â€˜vec_sloâ€™                â€˜vec_slvâ€™
! â€˜vec_splatâ€™              â€˜vec_splat_s8â€™           â€˜vec_splat_s16â€™
! â€˜vec_splat_s32â€™          â€˜vec_splat_u8â€™           â€˜vec_splat_u16â€™
! â€˜vec_splat_u32â€™          â€˜vec_splatsâ€™             â€˜vec_sqrtâ€™
! â€˜vec_srâ€™                 â€˜vec_sraâ€™                â€˜vec_srlâ€™
! â€˜vec_sroâ€™                â€˜vec_srvâ€™                â€˜vec_stâ€™
! â€˜vec_steâ€™                â€˜vec_stlâ€™                â€˜vec_subâ€™
! â€˜vec_subcâ€™               â€˜vec_subeâ€™               â€˜vec_subecâ€™
! â€˜vec_subsâ€™               â€˜vec_sum2sâ€™              â€˜vec_sum4sâ€™
! â€˜vec_sumsâ€™               â€˜vec_test_data_classâ€™    â€˜vec_truncâ€™
! â€˜vec_unpackhâ€™            â€˜vec_unpacklâ€™            â€˜vec_unsignedâ€™
! â€˜vec_unsigned2â€™          â€˜vec_unsignedeâ€™          â€˜vec_unsignedoâ€™
! â€˜vec_xlâ€™                 â€˜vec_xl_beâ€™              â€˜vec_xl_lenâ€™
! â€˜vec_xl_len_râ€™           â€˜vec_xorâ€™                â€˜vec_xstâ€™
! â€˜vec_xst_beâ€™             â€˜vec_xst_lenâ€™            â€˜vec_xst_len_râ€™
                                                    
  
  * Menu:
*************** a direct mapping between generic and spe
*** 59406,59412 ****
  generic names are shown here, although the specific operations can also
  be used.
  
!  Arguments that are documented as 'const int' require literal integral
  values within the range required for that operation.
  
   Only functions excluded from the PVIPR are listed here.
--- 59415,59421 ----
  generic names are shown here, although the specific operations can also
  be used.
  
!  Arguments that are documented as â€˜const intâ€™ require literal integral
  values within the range required for that operation.
  
   Only functions excluded from the PVIPR are listed here.
*************** File: gcc.info,  Node: PowerPC AltiVec B
*** 59884,59892 ****
  
  The AltiVec built-in functions described in this section are available
  on the PowerPC family of processors starting with ISA 2.06 or later.
! These are normally enabled by adding '-mvsx' to the command line.
  
!  When '-mvsx' is used, the following additional vector types are
  implemented.
  
       vector unsigned __int128
--- 59893,59901 ----
  
  The AltiVec built-in functions described in this section are available
  on the PowerPC family of processors starting with ISA 2.06 or later.
! These are normally enabled by adding â€˜-mvsxâ€™ to the command line.
  
!  When â€˜-mvsxâ€™ is used, the following additional vector types are
  implemented.
  
       vector unsigned __int128
*************** implemented.
*** 60003,60012 ****
       vector unsigned char vec_xxsldi (vector unsigned char,
                                        vector unsigned char, int);
  
!  Note that the 'vec_ld' and 'vec_st' built-in functions always generate
! the AltiVec 'LVX' and 'STVX' instructions even if the VSX instruction
! set is available.  The 'vec_vsx_ld' and 'vec_vsx_st' built-in functions
! always generate the VSX 'LXVD2X', 'LXVW4X', 'STXVD2X', and 'STXVW4X'
  instructions.
  
       vector signed long long vec_signedo (vector float);
--- 60012,60021 ----
       vector unsigned char vec_xxsldi (vector unsigned char,
                                        vector unsigned char, int);
  
!  Note that the â€˜vec_ldâ€™ and â€˜vec_stâ€™ built-in functions always generate
! the AltiVec â€˜LVXâ€™ and â€˜STVXâ€™ instructions even if the VSX instruction
! set is available.  The â€˜vec_vsx_ldâ€™ and â€˜vec_vsx_stâ€™ built-in functions
! always generate the VSX â€˜LXVD2Xâ€™, â€˜LXVW4Xâ€™, â€˜STXVD2Xâ€™, and â€˜STXVW4Xâ€™
  instructions.
  
       vector signed long long vec_signedo (vector float);
*************** instructions.
*** 60014,60020 ****
       vector unsigned long long vec_unsignedo (vector float);
       vector unsigned long long vec_unsignede (vector float);
  
!  The overloaded built-ins 'vec_signedo' and 'vec_signede' are additional
  extensions to the built-ins as documented in the PVIPR.
  
  
--- 60023,60029 ----
       vector unsigned long long vec_unsignedo (vector float);
       vector unsigned long long vec_unsignede (vector float);
  
!  The overloaded built-ins â€˜vec_signedoâ€™ and â€˜vec_signedeâ€™ are additional
  extensions to the built-ins as documented in the PVIPR.
  
  
*************** File: gcc.info,  Node: PowerPC AltiVec B
*** 60217,60223 ****
  .................................................................
  
  The following additional built-in functions are also available for the
! PowerPC family of processors, starting with ISA 3.0 ('-mcpu=power9') or
  later.
  
   Only instructions excluded from the PVIPR are listed here.
--- 60226,60232 ----
  .................................................................
  
  The following additional built-in functions are also available for the
! PowerPC family of processors, starting with ISA 3.0 (â€˜-mcpu=power9â€™) or
  later.
  
   Only instructions excluded from the PVIPR are listed here.
*************** later.
*** 60253,60313 ****
       bool scalar_test_neg (double source);
       bool scalar_test_neg (__ieee128 source);
  
!  The 'scalar_extract_exp' with a 64-bit source argument function
  requires an environment supporting ISA 3.0 or later.  The
! 'scalar_extract_exp' with a 128-bit source argument and
! 'scalar_extract_sig' functions require a 64-bit environment supporting
! ISA 3.0 or later.  The 'scalar_extract_exp' and 'scalar_extract_sig'
  built-in functions return the significand and the biased exponent value
! respectively of their 'source' arguments.  When supplied with a 64-bit
! 'source' argument, the result returned by 'scalar_extract_sig' has the
! '0x0010000000000000' bit set if the function's 'source' argument is in
  normalized form.  Otherwise, this bit is set to 0.  When supplied with a
! 128-bit 'source' argument, the '0x00010000000000000000000000000000' bit
  of the result is treated similarly.  Note that the sign of the
  significand is not represented in the result returned from the
! 'scalar_extract_sig' function.  Use the 'scalar_test_neg' function to
! test the sign of its 'double' argument.
  
!  The 'scalar_insert_exp' functions require a 64-bit environment
  supporting ISA 3.0 or later.  When supplied with a 64-bit first
! argument, the 'scalar_insert_exp' built-in function returns a
  double-precision floating point value that is constructed by assembling
! the values of its 'significand' and 'exponent' arguments.  The sign of
! the result is copied from the most significant bit of the 'significand'
  argument.  The significand and exponent components of the result are
! composed of the least significant 11 bits of the 'exponent' argument and
! the least significant 52 bits of the 'significand' argument
  respectively.
  
!  When supplied with a 128-bit first argument, the 'scalar_insert_exp'
  built-in function returns a quad-precision IEEE floating point value if
  the two arguments were scalar.  If the two arguments are vectors, the
  return value is a vector IEEE floating point value.  The sign bit of the
! result is copied from the most significant bit of the 'significand'
  argument.  The significand and exponent components of the result are
! composed of the least significant 15 bits of the 'exponent' argument
  (element 0 on big-endian and element 1 on little-endian) and the least
! significant 112 bits of the 'significand' argument respectively.  Note,
! the 'significand' is the scalar argument or in the case of vector
! arguments, 'significand' is element 0 for big-endian and element 1 for
  little-endian.
  
!  The 'scalar_extract_exp_to_vec', and 'scalar_extract_sig_to_vec' are
! similar to 'scalar_extract_exp', 'scalar_extract_sig' except they return
  a vector result of type unsigned long long and unsigned __int128
  respectively.
  
!  The 'scalar_cmp_exp_gt', 'scalar_cmp_exp_lt', 'scalar_cmp_exp_eq', and
! 'scalar_cmp_exp_unordered' built-in functions return a non-zero value if
! 'arg1' is greater than, less than, equal to, or not comparable to 'arg2'
  respectively.  The arguments are not comparable if one or the other
  equals NaN (not a number).
  
!  The 'scalar_test_data_class' built-in function returns 1 if any of the
! condition tests enabled by the value of the 'condition' variable are
! true, and 0 otherwise.  The 'condition' argument must be a compile-time
! constant integer with value not exceeding 127.  The 'condition' argument
  is encoded as a bitmask with each bit enabling the testing of a
  different condition, as characterized by the following:
       0x40    Test for NaN
--- 60262,60322 ----
       bool scalar_test_neg (double source);
       bool scalar_test_neg (__ieee128 source);
  
!  The â€˜scalar_extract_expâ€™ with a 64-bit source argument function
  requires an environment supporting ISA 3.0 or later.  The
! â€˜scalar_extract_expâ€™ with a 128-bit source argument and
! â€˜scalar_extract_sigâ€™ functions require a 64-bit environment supporting
! ISA 3.0 or later.  The â€˜scalar_extract_expâ€™ and â€˜scalar_extract_sigâ€™
  built-in functions return the significand and the biased exponent value
! respectively of their â€˜sourceâ€™ arguments.  When supplied with a 64-bit
! â€˜sourceâ€™ argument, the result returned by â€˜scalar_extract_sigâ€™ has the
! â€˜0x0010000000000000â€™ bit set if the function's â€˜sourceâ€™ argument is in
  normalized form.  Otherwise, this bit is set to 0.  When supplied with a
! 128-bit â€˜sourceâ€™ argument, the â€˜0x00010000000000000000000000000000â€™ bit
  of the result is treated similarly.  Note that the sign of the
  significand is not represented in the result returned from the
! â€˜scalar_extract_sigâ€™ function.  Use the â€˜scalar_test_negâ€™ function to
! test the sign of its â€˜doubleâ€™ argument.
  
!  The â€˜scalar_insert_expâ€™ functions require a 64-bit environment
  supporting ISA 3.0 or later.  When supplied with a 64-bit first
! argument, the â€˜scalar_insert_expâ€™ built-in function returns a
  double-precision floating point value that is constructed by assembling
! the values of its â€˜significandâ€™ and â€˜exponentâ€™ arguments.  The sign of
! the result is copied from the most significant bit of the â€˜significandâ€™
  argument.  The significand and exponent components of the result are
! composed of the least significant 11 bits of the â€˜exponentâ€™ argument and
! the least significant 52 bits of the â€˜significandâ€™ argument
  respectively.
  
!  When supplied with a 128-bit first argument, the â€˜scalar_insert_expâ€™
  built-in function returns a quad-precision IEEE floating point value if
  the two arguments were scalar.  If the two arguments are vectors, the
  return value is a vector IEEE floating point value.  The sign bit of the
! result is copied from the most significant bit of the â€˜significandâ€™
  argument.  The significand and exponent components of the result are
! composed of the least significant 15 bits of the â€˜exponentâ€™ argument
  (element 0 on big-endian and element 1 on little-endian) and the least
! significant 112 bits of the â€˜significandâ€™ argument respectively.  Note,
! the â€˜significandâ€™ is the scalar argument or in the case of vector
! arguments, â€˜significandâ€™ is element 0 for big-endian and element 1 for
  little-endian.
  
!  The â€˜scalar_extract_exp_to_vecâ€™, and â€˜scalar_extract_sig_to_vecâ€™ are
! similar to â€˜scalar_extract_expâ€™, â€˜scalar_extract_sigâ€™ except they return
  a vector result of type unsigned long long and unsigned __int128
  respectively.
  
!  The â€˜scalar_cmp_exp_gtâ€™, â€˜scalar_cmp_exp_ltâ€™, â€˜scalar_cmp_exp_eqâ€™, and
! â€˜scalar_cmp_exp_unorderedâ€™ built-in functions return a non-zero value if
! â€˜arg1â€™ is greater than, less than, equal to, or not comparable to â€˜arg2â€™
  respectively.  The arguments are not comparable if one or the other
  equals NaN (not a number).
  
!  The â€˜scalar_test_data_classâ€™ built-in function returns 1 if any of the
! condition tests enabled by the value of the â€˜conditionâ€™ variable are
! true, and 0 otherwise.  The â€˜conditionâ€™ argument must be a compile-time
! constant integer with value not exceeding 127.  The â€˜conditionâ€™ argument
  is encoded as a bitmask with each bit enabling the testing of a
  different condition, as characterized by the following:
       0x40    Test for NaN
*************** different condition, as characterized by
*** 60318,60328 ****
       0x02    Test for +Denormal
       0x01    Test for -Denormal
  
!  The 'scalar_test_neg' built-in function returns 1 if its 'source'
  argument holds a negative value, 0 otherwise.
  
   The following built-in functions are also available for the PowerPC
! family of processors, starting with ISA 3.0 or later ('-mcpu=power9').
  These string functions are described separately in order to group the
  descriptions closer to the function prototypes.
  
--- 60327,60337 ----
       0x02    Test for +Denormal
       0x01    Test for -Denormal
  
!  The â€˜scalar_test_negâ€™ built-in function returns 1 if its â€˜sourceâ€™
  argument holds a negative value, 0 otherwise.
  
   The following built-in functions are also available for the PowerPC
! family of processors, starting with ISA 3.0 or later (â€˜-mcpu=power9â€™).
  These string functions are described separately in order to group the
  descriptions closer to the function prototypes.
  
*************** descriptions closer to the function prot
*** 60358,60392 ****
       unsigned int vec_xrx (unsigned int index, vector unsigned int data);
       float vec_xrx (unsigned int index, vector float data);
  
!  The 'vec_all_nez', 'vec_any_eqz', and 'vec_cmpnez' perform pairwise
  comparisons between the elements at the same positions within their two
! vector arguments.  The 'vec_all_nez' function returns a non-zero value
  if and only if all pairwise comparisons are not equal and no element of
! either vector argument contains a zero.  The 'vec_any_eqz' function
  returns a non-zero value if and only if at least one pairwise comparison
  is equal or if at least one element of either vector argument contains a
! zero.  The 'vec_cmpnez' function returns a vector of the same type as
  its two arguments, within which each element consists of all ones to
  denote that either the corresponding elements of the incoming arguments
  are not equal or that at least one of the corresponding elements
  contains zero.  Otherwise, the element of the returned vector contains
  all zeros.
  
!  The 'vec_xlx' and 'vec_xrx' functions extract the single element
! selected by the 'index' argument from the vector represented by the
! 'data' argument.  The 'index' argument always specifies a byte offset,
! regardless of the size of the vector element.  With 'vec_xlx', 'index'
  is the offset of the first byte of the element to be extracted.  With
! 'vec_xrx', 'index' represents the last byte of the element to be
  extracted, measured from the right end of the vector.  In other words,
! the last byte of the element to be extracted is found at position '(15 -
! index)'.  There is no requirement that 'index' be a multiple of the
  vector element size.  However, if the size of the vector element added
! to 'index' is greater than 15, the content of the returned value is
  undefined.
  
   The following functions are also available if the ISA 3.0 instruction
! set additions ('-mcpu=power9') are available.
  
   Only functions excluded from the PVIPR are listed here.
  
--- 60367,60401 ----
       unsigned int vec_xrx (unsigned int index, vector unsigned int data);
       float vec_xrx (unsigned int index, vector float data);
  
!  The â€˜vec_all_nezâ€™, â€˜vec_any_eqzâ€™, and â€˜vec_cmpnezâ€™ perform pairwise
  comparisons between the elements at the same positions within their two
! vector arguments.  The â€˜vec_all_nezâ€™ function returns a non-zero value
  if and only if all pairwise comparisons are not equal and no element of
! either vector argument contains a zero.  The â€˜vec_any_eqzâ€™ function
  returns a non-zero value if and only if at least one pairwise comparison
  is equal or if at least one element of either vector argument contains a
! zero.  The â€˜vec_cmpnezâ€™ function returns a vector of the same type as
  its two arguments, within which each element consists of all ones to
  denote that either the corresponding elements of the incoming arguments
  are not equal or that at least one of the corresponding elements
  contains zero.  Otherwise, the element of the returned vector contains
  all zeros.
  
!  The â€˜vec_xlxâ€™ and â€˜vec_xrxâ€™ functions extract the single element
! selected by the â€˜indexâ€™ argument from the vector represented by the
! â€˜dataâ€™ argument.  The â€˜indexâ€™ argument always specifies a byte offset,
! regardless of the size of the vector element.  With â€˜vec_xlxâ€™, â€˜indexâ€™
  is the offset of the first byte of the element to be extracted.  With
! â€˜vec_xrxâ€™, â€˜indexâ€™ represents the last byte of the element to be
  extracted, measured from the right end of the vector.  In other words,
! the last byte of the element to be extracted is found at position â€˜(15 -
! index)â€™.  There is no requirement that â€˜indexâ€™ be a multiple of the
  vector element size.  However, if the size of the vector element added
! to â€˜indexâ€™ is greater than 15, the content of the returned value is
  undefined.
  
   The following functions are also available if the ISA 3.0 instruction
! set additions (â€˜-mcpu=power9â€™) are available.
  
   Only functions excluded from the PVIPR are listed here.
  
*************** set additions ('-mcpu=power9') are avail
*** 60422,60428 ****
       vector long long vec_vprtybd (vector long long);
       vector unsigned long long vec_vprtybd (vector unsigned long long);
  
!  On 64-bit targets, if the ISA 3.0 additions ('-mcpu=power9') are
  available:
  
       vector long vec_vprtyb (vector long);
--- 60431,60437 ----
       vector long long vec_vprtybd (vector long long);
       vector unsigned long long vec_vprtybd (vector unsigned long long);
  
!  On 64-bit targets, if the ISA 3.0 additions (â€˜-mcpu=power9â€™) are
  available:
  
       vector long vec_vprtyb (vector long);
*************** available:
*** 60437,60443 ****
       vector __uint128 vec_vprtybd (vector __uint128);
  
   The following built-in functions are available for the PowerPC family
! of processors, starting with ISA 3.0 or later ('-mcpu=power9').
  
   Only functions excluded from the PVIPR are listed here.
  
--- 60446,60452 ----
       vector __uint128 vec_vprtybd (vector __uint128);
  
   The following built-in functions are available for the PowerPC family
! of processors, starting with ISA 3.0 or later (â€˜-mcpu=power9â€™).
  
   Only functions excluded from the PVIPR are listed here.
  
*************** of processors, starting with ISA 3.0 or
*** 60448,60471 ****
       __vector unsigned int
       vec_absdw (__vector unsigned int arg1, __vector unsigned int arg2);
  
!  The 'vec_absd', 'vec_absdb', 'vec_absdh', and 'vec_absdw' built-in
  functions each computes the absolute differences of the pairs of vector
  elements supplied in its two vector arguments, placing the absolute
  differences into the corresponding elements of the vector result.
  
   The following built-in functions are available for the PowerPC family
! of processors, starting with ISA 3.0 or later ('-mcpu=power9'):
       vector unsigned int vec_vrlnm (vector unsigned int, vector unsigned int);
       vector unsigned long long vec_vrlnm (vector unsigned long long,
                                            vector unsigned long long);
  
!  The result of 'vec_vrlnm' is obtained by rotating each element of the
  first argument vector left and ANDing it with a mask.  The second
  argument vector contains the mask beginning in bits 11:15, the mask end
  in bits 19:23, and the shift count in bits 27:31, of each element.
  
!  If the cryptographic instructions are enabled ('-mcrypto' or
! '-mcpu=power8'), the following builtins are enabled.
  
   Only functions excluded from the PVIPR are listed here.
  
--- 60457,60480 ----
       __vector unsigned int
       vec_absdw (__vector unsigned int arg1, __vector unsigned int arg2);
  
!  The â€˜vec_absdâ€™, â€˜vec_absdbâ€™, â€˜vec_absdhâ€™, and â€˜vec_absdwâ€™ built-in
  functions each computes the absolute differences of the pairs of vector
  elements supplied in its two vector arguments, placing the absolute
  differences into the corresponding elements of the vector result.
  
   The following built-in functions are available for the PowerPC family
! of processors, starting with ISA 3.0 or later (â€˜-mcpu=power9â€™):
       vector unsigned int vec_vrlnm (vector unsigned int, vector unsigned int);
       vector unsigned long long vec_vrlnm (vector unsigned long long,
                                            vector unsigned long long);
  
!  The result of â€˜vec_vrlnmâ€™ is obtained by rotating each element of the
  first argument vector left and ANDing it with a mask.  The second
  argument vector contains the mask beginning in bits 11:15, the mask end
  in bits 19:23, and the shift count in bits 27:31, of each element.
  
!  If the cryptographic instructions are enabled (â€˜-mcryptoâ€™ or
! â€˜-mcpu=power8â€™), the following builtins are enabled.
  
   Only functions excluded from the PVIPR are listed here.
  
*************** File: gcc.info,  Node: PowerPC AltiVec B
*** 60544,60602 ****
  .................................................................
  
  The following additional built-in functions are also available for the
! PowerPC family of processors, starting with ISA 3.1 ('-mcpu=power10'):
  
  int vec_test_lsbb_all_ones (vector signed char);
  int vec_test_lsbb_all_ones (vector unsigned char);
  int vec_test_lsbb_all_ones (vector bool char);
  
!  The builtin 'vec_test_lsbb_all_ones' returns 1 if the least significant
  bit in each byte is equal to 1.  It returns 0 otherwise.
  
  int vec_test_lsbb_all_zeros (vector signed char);
  int vec_test_lsbb_all_zeros (vector unsigned char);
  int vec_test_lsbb_all_zeros (vector bool char);
  
!  The builtin 'vec_test_lsbb_all_zeros' returns 1 if the least
  significant bit in each byte is equal to zero.  It returns 0 otherwise.
  
  vector unsigned long long int
  vec_cfuge (vector unsigned long long int, vector unsigned long long int);
   Perform a vector centrifuge operation, as if implemented by the
! 'vcfuged' instruction.
  
  vector unsigned long long int
  vec_cntlzm (vector unsigned long long int, vector unsigned long long int);
   Perform a vector count leading zeros under bit mask operation, as if
! implemented by the 'vclzdm' instruction.
  
  vector unsigned long long int
  vec_cnttzm (vector unsigned long long int, vector unsigned long long int);
   Perform a vector count trailing zeros under bit mask operation, as if
! implemented by the 'vctzdm' instruction.
  
  vector signed char
  vec_clrl (vector signed char A, unsigned int N);
  vector unsigned char
  vec_clrl (vector unsigned char A, unsigned int N);
!  Clear the left-most '(16 - n)' bytes of vector argument 'a', as if
! implemented by the 'vclrlb' instruction on a big-endian target and by
! the 'vclrrb' instruction on a little-endian target.  A value of 'n' that
  is greater than 16 is treated as if it equaled 16.
  
  vector signed char
  vec_clrr (vector signed char A, unsigned int N);
  vector unsigned char
  vec_clrr (vector unsigned char A, unsigned int N);
!  Clear the right-most '(16 - n)' bytes of vector argument 'a', as if
! implemented by the 'vclrrb' instruction on a big-endian target and by
! the 'vclrlb' instruction on a little-endian target.  A value of 'n' that
  is greater than 16 is treated as if it equaled 16.
  
  vector unsigned long long int
  vec_gnb (vector unsigned __int128, const unsigned char);
   Perform a 128-bit vector gather operation, as if implemented by the
! 'vgnb' instruction.  The second argument must be a literal integer value
  between 2 and 7 inclusive.
  
   Vector Extract
--- 60553,60611 ----
  .................................................................
  
  The following additional built-in functions are also available for the
! PowerPC family of processors, starting with ISA 3.1 (â€˜-mcpu=power10â€™):
  
  int vec_test_lsbb_all_ones (vector signed char);
  int vec_test_lsbb_all_ones (vector unsigned char);
  int vec_test_lsbb_all_ones (vector bool char);
  
!  The builtin â€˜vec_test_lsbb_all_onesâ€™ returns 1 if the least significant
  bit in each byte is equal to 1.  It returns 0 otherwise.
  
  int vec_test_lsbb_all_zeros (vector signed char);
  int vec_test_lsbb_all_zeros (vector unsigned char);
  int vec_test_lsbb_all_zeros (vector bool char);
  
!  The builtin â€˜vec_test_lsbb_all_zerosâ€™ returns 1 if the least
  significant bit in each byte is equal to zero.  It returns 0 otherwise.
  
  vector unsigned long long int
  vec_cfuge (vector unsigned long long int, vector unsigned long long int);
   Perform a vector centrifuge operation, as if implemented by the
! â€˜vcfugedâ€™ instruction.
  
  vector unsigned long long int
  vec_cntlzm (vector unsigned long long int, vector unsigned long long int);
   Perform a vector count leading zeros under bit mask operation, as if
! implemented by the â€˜vclzdmâ€™ instruction.
  
  vector unsigned long long int
  vec_cnttzm (vector unsigned long long int, vector unsigned long long int);
   Perform a vector count trailing zeros under bit mask operation, as if
! implemented by the â€˜vctzdmâ€™ instruction.
  
  vector signed char
  vec_clrl (vector signed char A, unsigned int N);
  vector unsigned char
  vec_clrl (vector unsigned char A, unsigned int N);
!  Clear the left-most â€˜(16 - n)â€™ bytes of vector argument â€˜aâ€™, as if
! implemented by the â€˜vclrlbâ€™ instruction on a big-endian target and by
! the â€˜vclrrbâ€™ instruction on a little-endian target.  A value of â€˜nâ€™ that
  is greater than 16 is treated as if it equaled 16.
  
  vector signed char
  vec_clrr (vector signed char A, unsigned int N);
  vector unsigned char
  vec_clrr (vector unsigned char A, unsigned int N);
!  Clear the right-most â€˜(16 - n)â€™ bytes of vector argument â€˜aâ€™, as if
! implemented by the â€˜vclrrbâ€™ instruction on a big-endian target and by
! the â€˜vclrlbâ€™ instruction on a little-endian target.  A value of â€˜nâ€™ that
  is greater than 16 is treated as if it equaled 16.
  
  vector unsigned long long int
  vec_gnb (vector unsigned __int128, const unsigned char);
   Perform a 128-bit vector gather operation, as if implemented by the
! â€˜vgnbâ€™ instruction.  The second argument must be a literal integer value
  between 2 and 7 inclusive.
  
   Vector Extract
*************** rejected.  For little-endian, this outpu
*** 60617,60629 ****
  the hardware instruction, i.e., dword[0] in RTL notation.  For
  big-endian, an additional instruction is needed to move it from the
  "left" doubleword to the "right" one.  For little-endian, semantics
! matching the 'vextdubvrx', 'vextduhvrx', 'vextduwvrx' instruction will
! be generated, while for big-endian, semantics matching the 'vextdubvlx',
! 'vextduhvlx', 'vextduwvlx' instructions will be generated.  Note that
  some fairly anomalous results can be generated if the byte index is not
  aligned on an element boundary for the element being extracted.  This is
  a limitation of the bi-endian vector programming model is consistent
! with the limitation on 'vec_perm'.
  
  vector unsigned long long int
  vec_extracth (vector unsigned char, vector unsigned char, unsigned int);
--- 60626,60638 ----
  the hardware instruction, i.e., dword[0] in RTL notation.  For
  big-endian, an additional instruction is needed to move it from the
  "left" doubleword to the "right" one.  For little-endian, semantics
! matching the â€˜vextdubvrxâ€™, â€˜vextduhvrxâ€™, â€˜vextduwvrxâ€™ instruction will
! be generated, while for big-endian, semantics matching the â€˜vextdubvlxâ€™,
! â€˜vextduhvlxâ€™, â€˜vextduwvlxâ€™ instructions will be generated.  Note that
  some fairly anomalous results can be generated if the byte index is not
  aligned on an element boundary for the element being extracted.  This is
  a limitation of the bi-endian vector programming model is consistent
! with the limitation on â€˜vec_permâ€™.
  
  vector unsigned long long int
  vec_extracth (vector unsigned char, vector unsigned char, unsigned int);
*************** little-endian, this output will match th
*** 60645,60662 ****
  instruction (vextdubvrx, vextduhvrx, vextduwvrx, vextddvrx) i.e.,
  dword[0] in RTL notation.  For big-endian, an additional instruction is
  needed to move it from the "left" doubleword to the "right" one.  For
! little-endian, semantics matching the 'vextdubvlx', 'vextduhvlx',
! 'vextduwvlx' instructions will be generated, while for big-endian,
! semantics matching the 'vextdubvrx', 'vextduhvrx', 'vextduwvrx'
  instructions will be generated.  Note that some fairly anomalous results
  can be generated if the byte index is not aligned on the element
  boundary for the element being extracted.  This is a limitation of the
  bi-endian vector programming model consistent with the limitation on
! 'vec_perm'.
  vector unsigned long long int
  vec_pdep (vector unsigned long long int, vector unsigned long long int);
   Perform a vector parallel bits deposit operation, as if implemented by
! the 'vpdepd' instruction.
  
   Vector Insert
  
--- 60654,60671 ----
  instruction (vextdubvrx, vextduhvrx, vextduwvrx, vextddvrx) i.e.,
  dword[0] in RTL notation.  For big-endian, an additional instruction is
  needed to move it from the "left" doubleword to the "right" one.  For
! little-endian, semantics matching the â€˜vextdubvlxâ€™, â€˜vextduhvlxâ€™,
! â€˜vextduwvlxâ€™ instructions will be generated, while for big-endian,
! semantics matching the â€˜vextdubvrxâ€™, â€˜vextduhvrxâ€™, â€˜vextduwvrxâ€™
  instructions will be generated.  Note that some fairly anomalous results
  can be generated if the byte index is not aligned on the element
  boundary for the element being extracted.  This is a limitation of the
  bi-endian vector programming model consistent with the limitation on
! â€˜vec_permâ€™.
  vector unsigned long long int
  vec_pdep (vector unsigned long long int, vector unsigned long long int);
   Perform a vector parallel bits deposit operation, as if implemented by
! the â€˜vpdepdâ€™ instruction.
  
   Vector Insert
  
*************** in the second argument.  The rest of the
*** 60685,60692 ****
  If the byte index is greater than 14 for halfwords, greater than 12 for
  words, or greater than 8 for doublewords the result is undefined.  For
  little-endian, the generated code will be semantically equivalent to
! 'vins[bhwd]rx' instructions.  Similarly for big-endian it will be
! semantically equivalent to 'vins[bhwd]lx'.  Note that some fairly
  anomalous results can be generated if the byte index is not aligned on
  an element boundary for the type of element being inserted.
  
--- 60694,60701 ----
  If the byte index is greater than 14 for halfwords, greater than 12 for
  words, or greater than 8 for doublewords the result is undefined.  For
  little-endian, the generated code will be semantically equivalent to
! â€˜vins[bhwd]rxâ€™ instructions.  Similarly for big-endian it will be
! semantically equivalent to â€˜vins[bhwd]lxâ€™.  Note that some fairly
  anomalous results can be generated if the byte index is not aligned on
  an element boundary for the type of element being inserted.
  
*************** If the byte index is greater than 14 for
*** 60716,60723 ****
  for doublewords, the intrinsic will be rejected.  Note that the
  underlying hardware instruction uses the same register for the second
  argument and the result.  For little-endian, the code generation will be
! semantically equivalent to 'vins[bhwd]lx', while for big-endian it will
! be semantically equivalent to 'vins[bhwd]rx'.  Note that some fairly
  anomalous results can be generated if the byte index is not aligned on
  an element boundary for the sort of element being inserted.
  
--- 60725,60732 ----
  for doublewords, the intrinsic will be rejected.  Note that the
  underlying hardware instruction uses the same register for the second
  argument and the result.  For little-endian, the code generation will be
! semantically equivalent to â€˜vins[bhwd]lxâ€™, while for big-endian it will
! be semantically equivalent to â€˜vins[bhwd]rxâ€™.  Note that some fairly
  anomalous results can be generated if the byte index is not aligned on
  an element boundary for the sort of element being inserted.
  
*************** vector double vec_blendv (vector double,
*** 60865,60871 ****
  
   Blend the first and second argument vectors according to the sign bits
  of the corresponding elements of the third argument vector.  This is
! similar to the 'vsel' and 'xxsel' instructions but for bigger elements.
  
   Vector Permute Extended
  
--- 60874,60880 ----
  
   Blend the first and second argument vectors according to the sign bits
  of the corresponding elements of the third argument vector.  This is
! similar to the â€˜vselâ€™ and â€˜xxselâ€™ instructions but for bigger elements.
  
   Vector Permute Extended
  
*************** of the emulated vector is contained in t
*** 60899,60905 ****
  vector unsigned long long int
  vec_pext (vector unsigned long long int, vector unsigned long long int);
   Perform a vector parallel bit extract operation, as if implemented by
! the 'vpextd' instruction.
  
  vector unsigned char vec_stril (vector unsigned char);
  vector signed char vec_stril (vector signed char);
--- 60908,60914 ----
  vector unsigned long long int
  vec_pext (vector unsigned long long int, vector unsigned long long int);
   Perform a vector parallel bit extract operation, as if implemented by
! the â€˜vpextdâ€™ instruction.
  
  vector unsigned char vec_stril (vector unsigned char);
  vector signed char vec_stril (vector signed char);
*************** vector signed short vec_stril (vector si
*** 60908,60926 ****
   Isolate the left-most non-zero elements of the incoming vector
  argument, replacing all elements to the right of the left-most zero
  element found within the argument with zero.  The typical implementation
! uses the 'vstribl' or 'vstrihl' instruction on big-endian targets and
! uses the 'vstribr' or 'vstrihr' instruction on little-endian targets.
  
  int vec_stril_p (vector unsigned char);
  int vec_stril_p (vector signed char);
  int short vec_stril_p (vector unsigned short);
  int vec_stril_p (vector signed short);
   Return a non-zero value if and only if the argument contains a zero
! element.  The typical implementation uses the 'vstribl.' or 'vstrihl.'
! instruction on big-endian targets and uses the 'vstribr.' or 'vstrihr.'
  instruction on little-endian targets.  Choose this built-in to check for
  presence of zero element if the same argument is also passed to
! 'vec_stril'.
  
  vector unsigned char vec_strir (vector unsigned char);
  vector signed char vec_strir (vector signed char);
--- 60917,60935 ----
   Isolate the left-most non-zero elements of the incoming vector
  argument, replacing all elements to the right of the left-most zero
  element found within the argument with zero.  The typical implementation
! uses the â€˜vstriblâ€™ or â€˜vstrihlâ€™ instruction on big-endian targets and
! uses the â€˜vstribrâ€™ or â€˜vstrihrâ€™ instruction on little-endian targets.
  
  int vec_stril_p (vector unsigned char);
  int vec_stril_p (vector signed char);
  int short vec_stril_p (vector unsigned short);
  int vec_stril_p (vector signed short);
   Return a non-zero value if and only if the argument contains a zero
! element.  The typical implementation uses the â€˜vstribl.â€™ or â€˜vstrihl.â€™
! instruction on big-endian targets and uses the â€˜vstribr.â€™ or â€˜vstrihr.â€™
  instruction on little-endian targets.  Choose this built-in to check for
  presence of zero element if the same argument is also passed to
! â€˜vec_strilâ€™.
  
  vector unsigned char vec_strir (vector unsigned char);
  vector signed char vec_strir (vector signed char);
*************** vector signed short vec_strir (vector si
*** 60929,60947 ****
   Isolate the right-most non-zero elements of the incoming vector
  argument, replacing all elements to the left of the right-most zero
  element found within the argument with zero.  The typical implementation
! uses the 'vstribr' or 'vstrihr' instruction on big-endian targets and
! uses the 'vstribl' or 'vstrihl' instruction on little-endian targets.
  
  int vec_strir_p (vector unsigned char);
  int vec_strir_p (vector signed char);
  int short vec_strir_p (vector unsigned short);
  int vec_strir_p (vector signed short);
   Return a non-zero value if and only if the argument contains a zero
! element.  The typical implementation uses the 'vstribr.' or 'vstrihr.'
! instruction on big-endian targets and uses the 'vstribl.' or 'vstrihl.'
  instruction on little-endian targets.  Choose this built-in to check for
  presence of zero element if the same argument is also passed to
! 'vec_strir'.
  
  vector unsigned char
  vec_ternarylogic (vector unsigned char, vector unsigned char,
--- 60938,60956 ----
   Isolate the right-most non-zero elements of the incoming vector
  argument, replacing all elements to the left of the right-most zero
  element found within the argument with zero.  The typical implementation
! uses the â€˜vstribrâ€™ or â€˜vstrihrâ€™ instruction on big-endian targets and
! uses the â€˜vstriblâ€™ or â€˜vstrihlâ€™ instruction on little-endian targets.
  
  int vec_strir_p (vector unsigned char);
  int vec_strir_p (vector signed char);
  int short vec_strir_p (vector unsigned short);
  int vec_strir_p (vector signed short);
   Return a non-zero value if and only if the argument contains a zero
! element.  The typical implementation uses the â€˜vstribr.â€™ or â€˜vstrihr.â€™
! instruction on big-endian targets and uses the â€˜vstribl.â€™ or â€˜vstrihl.â€™
  instruction on little-endian targets.  Choose this built-in to check for
  presence of zero element if the same argument is also passed to
! â€˜vec_strirâ€™.
  
  vector unsigned char
  vec_ternarylogic (vector unsigned char, vector unsigned char,
*************** vector unsigned __int128
*** 60959,60965 ****
  vec_ternarylogic (vector unsigned __int128, vector unsigned __int128,
                   vector unsigned __int128, const unsigned int);
   Perform a 128-bit vector evaluate operation, as if implemented by the
! 'xxeval' instruction.  The fourth argument must be a literal integer
  value between 0 and 255 inclusive.
  
  vector unsigned char vec_genpcvm (vector unsigned char, const int);
--- 60968,60974 ----
  vec_ternarylogic (vector unsigned __int128, vector unsigned __int128,
                   vector unsigned __int128, const unsigned int);
   Perform a 128-bit vector evaluate operation, as if implemented by the
! â€˜xxevalâ€™ instruction.  The fourth argument must be a literal integer
  value between 0 and 255 inclusive.
  
  vector unsigned char vec_genpcvm (vector unsigned char, const int);
*************** vec_mulh (vector signed int A, vector si
*** 60975,61013 ****
  vector unsigned int
  vec_mulh (vector unsigned int A, vector unsigned int B);
  
!  For each integer value 'i' from 0 to 3, do the following.  The integer
! value in word element 'i' of a is multiplied by the integer value in
! word element 'i' of b.  The high-order 32 bits of the 64-bit product are
! placed into word element 'i' of the vector returned.
  
  vector signed long long
  vec_mulh (vector signed long long A, vector signed long long B);
  vector unsigned long long
  vec_mulh (vector unsigned long long A, vector unsigned long long B);
  
!  For each integer value 'i' from 0 to 1, do the following.  The integer
! value in doubleword element 'i' of a is multiplied by the integer value
! in doubleword element 'i' of b.  The high-order 64 bits of the 128-bit
! product are placed into doubleword element 'i' of the vector returned.
  
  vector unsigned long long
  vec_mul (vector unsigned long long A, vector unsigned long long B);
  vector signed long long
  vec_mul (vector signed long long A, vector signed long long B);
  
!  For each integer value 'i' from 0 to 1, do the following.  The integer
! value in doubleword element 'i' of a is multiplied by the integer value
! in doubleword element 'i' of b.  The low-order 64 bits of the 128-bit
! product are placed into doubleword element 'i' of the vector returned.
  
  vector signed int
  vec_div (vector signed int A, vector signed int B);
  vector unsigned int
  vec_div (vector unsigned int A, vector unsigned int B);
  
!  For each integer value 'i' from 0 to 3, do the following.  The integer
! in word element 'i' of a is divided by the integer in word element 'i'
! of b.  The unique integer quotient is placed into the word element 'i'
  of the vector returned.  If an attempt is made to perform any of the
  divisions <anything> Ã· 0 then the quotient is undefined.
  
--- 60984,61022 ----
  vector unsigned int
  vec_mulh (vector unsigned int A, vector unsigned int B);
  
!  For each integer value â€˜iâ€™ from 0 to 3, do the following.  The integer
! value in word element â€˜iâ€™ of a is multiplied by the integer value in
! word element â€˜iâ€™ of b.  The high-order 32 bits of the 64-bit product are
! placed into word element â€˜iâ€™ of the vector returned.
  
  vector signed long long
  vec_mulh (vector signed long long A, vector signed long long B);
  vector unsigned long long
  vec_mulh (vector unsigned long long A, vector unsigned long long B);
  
!  For each integer value â€˜iâ€™ from 0 to 1, do the following.  The integer
! value in doubleword element â€˜iâ€™ of a is multiplied by the integer value
! in doubleword element â€˜iâ€™ of b.  The high-order 64 bits of the 128-bit
! product are placed into doubleword element â€˜iâ€™ of the vector returned.
  
  vector unsigned long long
  vec_mul (vector unsigned long long A, vector unsigned long long B);
  vector signed long long
  vec_mul (vector signed long long A, vector signed long long B);
  
!  For each integer value â€˜iâ€™ from 0 to 1, do the following.  The integer
! value in doubleword element â€˜iâ€™ of a is multiplied by the integer value
! in doubleword element â€˜iâ€™ of b.  The low-order 64 bits of the 128-bit
! product are placed into doubleword element â€˜iâ€™ of the vector returned.
  
  vector signed int
  vec_div (vector signed int A, vector signed int B);
  vector unsigned int
  vec_div (vector unsigned int A, vector unsigned int B);
  
!  For each integer value â€˜iâ€™ from 0 to 3, do the following.  The integer
! in word element â€˜iâ€™ of a is divided by the integer in word element â€˜iâ€™
! of b.  The unique integer quotient is placed into the word element â€˜iâ€™
  of the vector returned.  If an attempt is made to perform any of the
  divisions <anything> Ã· 0 then the quotient is undefined.
  
*************** vec_div (vector signed long long A, vect
*** 61016,61037 ****
  vector unsigned long long
  vec_div (vector unsigned long long A, vector unsigned long long B);
  
!  For each integer value 'i' from 0 to 1, do the following.  The integer
! in doubleword element 'i' of a is divided by the integer in doubleword
! element 'i' of b.  The unique integer quotient is placed into the
! doubleword element 'i' of the vector returned.  If an attempt is made to
! perform any of the divisions 0x8000_0000_0000_0000 Ã· -1 or <anything>
! Ã· 0 then the quotient is undefined.
  
  vector signed int
  vec_dive (vector signed int A, vector signed int B);
  vector unsigned int
  vec_dive (vector unsigned int A, vector unsigned int B);
  
!  For each integer value 'i' from 0 to 3, do the following.  The integer
! in word element 'i' of a is shifted left by 32 bits, then divided by the
! integer in word element 'i' of b.  The unique integer quotient is placed
! into the word element 'i' of the vector returned.  If the quotient
  cannot be represented in 32 bits, or if an attempt is made to perform
  any of the divisions <anything> Ã· 0 then the quotient is undefined.
  
--- 61025,61046 ----
  vector unsigned long long
  vec_div (vector unsigned long long A, vector unsigned long long B);
  
!  For each integer value â€˜iâ€™ from 0 to 1, do the following.  The integer
! in doubleword element â€˜iâ€™ of a is divided by the integer in doubleword
! element â€˜iâ€™ of b.  The unique integer quotient is placed into the
! doubleword element â€˜iâ€™ of the vector returned.  If an attempt is made to
! perform any of the divisions 0x8000_0000_0000_0000 Ã· -1 or <anything> Ã·
! 0 then the quotient is undefined.
  
  vector signed int
  vec_dive (vector signed int A, vector signed int B);
  vector unsigned int
  vec_dive (vector unsigned int A, vector unsigned int B);
  
!  For each integer value â€˜iâ€™ from 0 to 3, do the following.  The integer
! in word element â€˜iâ€™ of a is shifted left by 32 bits, then divided by the
! integer in word element â€˜iâ€™ of b.  The unique integer quotient is placed
! into the word element â€˜iâ€™ of the vector returned.  If the quotient
  cannot be represented in 32 bits, or if an attempt is made to perform
  any of the divisions <anything> Ã· 0 then the quotient is undefined.
  
*************** vec_dive (vector signed long long A, vec
*** 61040,61049 ****
  vector unsigned long long
  vec_dive (vector unsigned long long A, vector unsigned long long B);
  
!  For each integer value 'i' from 0 to 1, do the following.  The integer
! in doubleword element 'i' of a is shifted left by 64 bits, then divided
! by the integer in doubleword element 'i' of b.  The unique integer
! quotient is placed into the doubleword element 'i' of the vector
  returned.  If the quotient cannot be represented in 64 bits, or if an
  attempt is made to perform <anything> Ã· 0 then the quotient is
  undefined.
--- 61049,61058 ----
  vector unsigned long long
  vec_dive (vector unsigned long long A, vector unsigned long long B);
  
!  For each integer value â€˜iâ€™ from 0 to 1, do the following.  The integer
! in doubleword element â€˜iâ€™ of a is shifted left by 64 bits, then divided
! by the integer in doubleword element â€˜iâ€™ of b.  The unique integer
! quotient is placed into the doubleword element â€˜iâ€™ of the vector
  returned.  If the quotient cannot be represented in 64 bits, or if an
  attempt is made to perform <anything> Ã· 0 then the quotient is
  undefined.
*************** vec_mod (vector signed int A, vector sig
*** 61053,61061 ****
  vector unsigned int
  vec_mod (vector unsigned int A, vector unsigned int B);
  
!  For each integer value 'i' from 0 to 3, do the following.  The integer
! in word element 'i' of a is divided by the integer in word element 'i'
! of b.  The unique integer remainder is placed into the word element 'i'
  of the vector returned.  If an attempt is made to perform any of the
  divisions 0x8000_0000 Ã· -1 or <anything> Ã· 0 then the remainder is
  undefined.
--- 61062,61070 ----
  vector unsigned int
  vec_mod (vector unsigned int A, vector unsigned int B);
  
!  For each integer value â€˜iâ€™ from 0 to 3, do the following.  The integer
! in word element â€˜iâ€™ of a is divided by the integer in word element â€˜iâ€™
! of b.  The unique integer remainder is placed into the word element â€˜iâ€™
  of the vector returned.  If an attempt is made to perform any of the
  divisions 0x8000_0000 Ã· -1 or <anything> Ã· 0 then the remainder is
  undefined.
*************** vec_mod (vector signed long long A, vect
*** 61065,61078 ****
  vector unsigned long long
  vec_mod (vector unsigned long long A, vector unsigned long long B);
  
!  For each integer value 'i' from 0 to 1, do the following.  The integer
! in doubleword element 'i' of a is divided by the integer in doubleword
! element 'i' of b.  The unique integer remainder is placed into the
! doubleword element 'i' of the vector returned.  If an attempt is made to
  perform <anything> Ã· 0 then the remainder is undefined.
  
   Generate PCV from specified Mask size, as if implemented by the
! 'xxgenpcvbm', 'xxgenpcvhm', 'xxgenpcvwm' instructions, where immediate
  value is either 0, 1, 2 or 3.
  
  vector unsigned __int128 vec_rl (vector unsigned __int128 A,
--- 61074,61087 ----
  vector unsigned long long
  vec_mod (vector unsigned long long A, vector unsigned long long B);
  
!  For each integer value â€˜iâ€™ from 0 to 1, do the following.  The integer
! in doubleword element â€˜iâ€™ of a is divided by the integer in doubleword
! element â€˜iâ€™ of b.  The unique integer remainder is placed into the
! doubleword element â€˜iâ€™ of the vector returned.  If an attempt is made to
  perform <anything> Ã· 0 then the remainder is undefined.
  
   Generate PCV from specified Mask size, as if implemented by the
! â€˜xxgenpcvbmâ€™, â€˜xxgenpcvhmâ€™, â€˜xxgenpcvwmâ€™ instructions, where immediate
  value is either 0, 1, 2 or 3.
  
  vector unsigned __int128 vec_rl (vector unsigned __int128 A,
*************** vector signed __int128 vec_mod (vector s
*** 61176,61188 ****
  second input.
  
   The following builtins perform 128-bit vector comparisons.  The
! 'vec_all_xx', 'vec_any_xx', and 'vec_cmpxx', where 'xx' is one of the
! operations 'eq, ne, gt, lt, ge, le' perform pairwise comparisons between
  the elements at the same positions within their two vector arguments.
! The 'vec_all_xx'function returns a non-zero value if and only if all
! pairwise comparisons are true.  The 'vec_any_xx' function returns a
  non-zero value if and only if at least one pairwise comparison is true.
! The 'vec_cmpxx'function returns a vector of the same type as its two
  arguments, within which each element consists of all ones to denote that
  specified logical comparison of the corresponding elements was true.
  Otherwise, the element of the returned vector contains all zeros.
--- 61185,61197 ----
  second input.
  
   The following builtins perform 128-bit vector comparisons.  The
! â€˜vec_all_xxâ€™, â€˜vec_any_xxâ€™, and â€˜vec_cmpxxâ€™, where â€˜xxâ€™ is one of the
! operations â€˜eq, ne, gt, lt, ge, leâ€™ perform pairwise comparisons between
  the elements at the same positions within their two vector arguments.
! The â€˜vec_all_xxâ€™function returns a non-zero value if and only if all
! pairwise comparisons are true.  The â€˜vec_any_xxâ€™ function returns a
  non-zero value if and only if at least one pairwise comparison is true.
! The â€˜vec_cmpxxâ€™function returns a vector of the same type as its two
  arguments, within which each element consists of all ones to denote that
  specified logical comparison of the corresponding elements was true.
  Otherwise, the element of the returned vector contains all zeros.
*************** Otherwise, the element of the returned v
*** 61227,61233 ****
       int vec_any_le (vector unsigned __int128, vector unsigned __int128);
  
   The following instances are extension of the existing overloaded
! built-ins 'vec_sld', 'vec_sldw', 'vec_slo', 'vec_sro', 'vec_srl' that
  are documented in the PVIPR.
  
  vector signed __int128 vec_sld (vector signed __int128,
--- 61236,61242 ----
       int vec_any_le (vector unsigned __int128, vector unsigned __int128);
  
   The following instances are extension of the existing overloaded
! built-ins â€˜vec_sldâ€™, â€˜vec_sldwâ€™, â€˜vec_sloâ€™, â€˜vec_sroâ€™, â€˜vec_srlâ€™ that
  are documented in the PVIPR.
  
  vector signed __int128 vec_sld (vector signed __int128,
*************** between PowerPC and S/390.
*** 61275,61292 ****
  7.13.26.1 PowerPC HTM Low Level Built-in Functions
  ..................................................
  
! The following low level built-in functions are available with '-mhtm' or
! '-mcpu=CPU' where CPU is 'power8' or later.  They all generate the
  machine instruction that is part of the name.
  
!  The HTM builtins (with the exception of '__builtin_tbegin') return the
  full 4-bit condition register value set by their associated hardware
! instruction.  The header file 'htmintrin.h' defines some macros that can
! be used to decipher the return value.  The '__builtin_tbegin' builtin
! returns a simple 'true' or 'false' value depending on whether a
  transaction was successfully started or not.  The arguments of the
  builtins match exactly the type and order of the associated hardware
! instruction's operands, except for the '__builtin_tcheck' builtin, which
  does not take any input arguments.  Refer to the ISA manual for a
  description of each instruction's operands.
  
--- 61284,61301 ----
  7.13.26.1 PowerPC HTM Low Level Built-in Functions
  ..................................................
  
! The following low level built-in functions are available with â€˜-mhtmâ€™ or
! â€˜-mcpu=CPUâ€™ where CPU is 'power8' or later.  They all generate the
  machine instruction that is part of the name.
  
!  The HTM builtins (with the exception of â€˜__builtin_tbeginâ€™) return the
  full 4-bit condition register value set by their associated hardware
! instruction.  The header file â€˜htmintrin.hâ€™ defines some macros that can
! be used to decipher the return value.  The â€˜__builtin_tbeginâ€™ builtin
! returns a simple â€˜trueâ€™ or â€˜falseâ€™ value depending on whether a
  transaction was successfully started or not.  The arguments of the
  builtins match exactly the type and order of the associated hardware
! instruction's operands, except for the â€˜__builtin_tcheckâ€™ builtin, which
  does not take any input arguments.  Refer to the ISA manual for a
  description of each instruction's operands.
  
*************** the builtins in a way that would violate
*** 61329,61335 ****
  accomplished by adding memory barriers to the associated HTM
  instructions (which is a conservative approach to provide acquire and
  release semantics).  Earlier versions of the compiler did not treat the
! HTM instructions as memory barriers.  A '__TM_FENCE__' macro has been
  added, which can be used to determine whether the current compiler
  treats HTM instructions as memory barriers or not.  This allows the user
  to explicitly add memory barriers to their code when using an older
--- 61338,61344 ----
  accomplished by adding memory barriers to the associated HTM
  instructions (which is a conservative approach to provide acquire and
  release semantics).  Earlier versions of the compiler did not treat the
! HTM instructions as memory barriers.  A â€˜__TM_FENCE__â€™ macro has been
  added, which can be used to determine whether the current compiler
  treats HTM instructions as memory barriers or not.  This allows the user
  to explicitly add memory barriers to their code when using an older
*************** the HTM specific special purpose registe
*** 61382,61388 ****
  
   One final built-in function has been added that returns the value of
  the 2-bit Transaction State field of the Machine Status Register (MSR)
! as stored in 'CR0'.
  
       unsigned long __builtin_ttest (void)
  
--- 61391,61397 ----
  
   One final built-in function has been added that returns the value of
  the 2-bit Transaction State field of the Machine Status Register (MSR)
! as stored in â€˜CR0â€™.
  
       unsigned long __builtin_ttest (void)
  
*************** using the following code example:
*** 61410,61416 ****
  .................................................
  
  The following high level HTM interface is made available by including
! '<htmxlintrin.h>' and using '-mhtm' or '-mcpu=CPU' where CPU is 'power8'
  or later.  This interface is common between PowerPC and S/390, allowing
  users to write one HTM source implementation that can be compiled and
  executed on either system.
--- 61419,61425 ----
  .................................................
  
  The following high level HTM interface is made available by including
! â€˜<htmxlintrin.h>â€™ and using â€˜-mhtmâ€™ or â€˜-mcpu=CPUâ€™ where CPU is 'power8'
  or later.  This interface is common between PowerPC and S/390, allowing
  users to write one HTM source implementation that can be compiled and
  executed on either system.
*************** File: gcc.info,  Node: PowerPC Atomic Me
*** 61478,61484 ****
  ISA 3.0 of the PowerPC added new atomic memory operation (amo)
  instructions.  GCC provides support for these instructions in 64-bit
  environments.  All of the functions are declared in the include file
! 'amo.h'.
  
   The functions supported are:
  
--- 61487,61493 ----
  ISA 3.0 of the PowerPC added new atomic memory operation (amo)
  instructions.  GCC provides support for these instructions in 64-bit
  environments.  All of the functions are declared in the include file
! â€˜amo.hâ€™.
  
   The functions supported are:
  
*************** File: gcc.info,  Node: PowerPC Matrix-Mu
*** 61540,61546 ****
  
  ISA 3.1 of the PowerPC added new Matrix-Multiply Assist (MMA)
  instructions.  GCC provides support for these instructions through the
! following built-in functions which are enabled with the '-mmma' option.
  The vec_t type below is defined to be a normal vector unsigned char
  type.  The uint2, uint4 and uint8 parameters are 2-bit, 4-bit and 8-bit
  unsigned integer constants respectively.  The compiler will verify that
--- 61549,61555 ----
  
  ISA 3.1 of the PowerPC added new Matrix-Multiply Assist (MMA)
  instructions.  GCC provides support for these instructions through the
! following built-in functions which are enabled with the â€˜-mmmaâ€™ option.
  The vec_t type below is defined to be a normal vector unsigned char
  type.  The uint2, uint4 and uint8 parameters are 2-bit, 4-bit and 8-bit
  unsigned integer constants respectively.  The compiler will verify that
*************** These built-in functions are available f
*** 61670,61679 ****
  processors.
  
   -- Built-in Function: void * __builtin_thread_pointer (void)
!      Returns the value that is currently set in the 'tp' register.
  
   -- Built-in Function: void __builtin_riscv_pause (void)
!      Generates the 'pause' (hint) machine instruction.  If the target
       implements the Zihintpause extension, it indicates that the current
       hart should be temporarily paused or slowed down.
  
--- 61679,61688 ----
  processors.
  
   -- Built-in Function: void * __builtin_thread_pointer (void)
!      Returns the value that is currently set in the â€˜tpâ€™ register.
  
   -- Built-in Function: void __builtin_riscv_pause (void)
!      Generates the â€˜pauseâ€™ (hint) machine instruction.  If the target
       implements the Zihintpause extension, it indicates that the current
       hart should be temporarily paused or slowed down.
  
*************** GCC supports vector intrinsics as specif
*** 61687,61693 ****
  RISC-V vector intrinsic specification, which is available at the
  following link:
  <https://github.com/riscv-non-isa/rvv-intrinsic-doc/tree/v0.11.x>.  All
! of these functions are declared in the include file 'riscv_vector.h'.
  
  
  File: gcc.info,  Node: CORE-V Built-in Functions,  Next: RX Built-in Functions,  Prev: RISC-V Vector Intrinsics,  Up: Target Builtins
--- 61696,61702 ----
  RISC-V vector intrinsic specification, which is available at the
  following link:
  <https://github.com/riscv-non-isa/rvv-intrinsic-doc/tree/v0.11.x>.  All
! of these functions are declared in the include file â€˜riscv_vector.hâ€™.
  
  
  File: gcc.info,  Node: CORE-V Built-in Functions,  Next: RX Built-in Functions,  Prev: RISC-V Vector Intrinsics,  Up: Target Builtins
*************** architecture.  For more information on C
*** 61704,61778 ****
  
   -- Built-in Function: int32_t __builtin_riscv_cv_mac_mac (int32_t,
            int32_t, int32_t)
!      Generated assembler 'cv.mac'
  
   -- Built-in Function: int32_t __builtin_riscv_cv_mac_msu (int32_t,
            int32_t, int32_t)
!      Generates the 'cv.msu' machine instruction.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_mac_muluN (uint32_t,
            uint32_t, uint8_t)
!      Generates the 'cv.muluN' machine instruction.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_mac_mulhhuN
            (uint32_t, uint32_t, uint8_t)
!      Generates the 'cv.mulhhuN' machine instruction.
  
   -- Built-in Function: int32_t __builtin_riscv_cv_mac_mulsN (int32_t,
            int32_t, uint8_t)
!      Generates the 'cv.mulsN' machine instruction.
  
   -- Built-in Function: int32_t __builtin_riscv_cv_mac_mulhhsN (int32_t,
            int32_t, uint8_t)
!      Generates the 'cv.mulhhsN' machine instruction.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_mac_muluRN (uint32_t,
            uint32_t, uint8_t)
!      Generates the 'cv.muluRN' machine instruction.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_mac_mulhhuRN
            (uint32_t, uint32_t, uint8_t)
!      Generates the 'cv.mulhhuRN' machine instruction.
  
   -- Built-in Function: int32_t __builtin_riscv_cv_mac_mulsRN (int32_t,
            int32_t, uint8_t)
!      Generates the 'cv.mulsRN' machine instruction.
  
   -- Built-in Function: int32_t __builtin_riscv_cv_mac_mulhhsRN (int32_t,
            int32_t, uint8_t)
!      Generates the 'cv.mulhhsRN' machine instruction.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_mac_macuN (uint32_t,
            uint32_t, uint8_t)
!      Generates the 'cv.macuN' machine instruction.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_mac_machhuN
            (uint32_t, uint32_t, uint8_t)
!      Generates the 'cv.machhuN' machine instruction.
  
   -- Built-in Function: int32_t __builtin_riscv_cv_mac_macsN (int32_t,
            int32_t, uint8_t)
!      Generates the 'cv.macsN' machine instruction.
  
   -- Built-in Function: int32_t __builtin_riscv_cv_mac_machhsN (int32_t,
            int32_t, uint8_t)
!      Generates the 'cv.machhsN' machine instruction.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_mac_macuRN (uint32_t,
            uint32_t, uint8_t)
!      Generates the 'cv.macuRN' machine instruction.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_mac_machhuRN
            (uint32_t, uint32_t, uint8_t)
!      Generates the 'cv.machhuRN' machine instruction.
  
   -- Built-in Function: int32_t __builtin_riscv_cv_mac_macsRN (int32_t,
            int32_t, uint8_t)
!      Generates the 'cv.macsRN' machine instruction.
  
   -- Built-in Function: int32_t __builtin_riscv_cv_mac_machhsRN (int32_t,
            int32_t, uint8_t)
!      Generates the 'cv.machhsRN' machine instruction.
  
   These built-in functions are available for the CORE-V ALU machine
  architecture.  For more information on CORE-V built-ins, please see
--- 61713,61787 ----
  
   -- Built-in Function: int32_t __builtin_riscv_cv_mac_mac (int32_t,
            int32_t, int32_t)
!      Generated assembler â€˜cv.macâ€™
  
   -- Built-in Function: int32_t __builtin_riscv_cv_mac_msu (int32_t,
            int32_t, int32_t)
!      Generates the â€˜cv.msuâ€™ machine instruction.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_mac_muluN (uint32_t,
            uint32_t, uint8_t)
!      Generates the â€˜cv.muluNâ€™ machine instruction.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_mac_mulhhuN
            (uint32_t, uint32_t, uint8_t)
!      Generates the â€˜cv.mulhhuNâ€™ machine instruction.
  
   -- Built-in Function: int32_t __builtin_riscv_cv_mac_mulsN (int32_t,
            int32_t, uint8_t)
!      Generates the â€˜cv.mulsNâ€™ machine instruction.
  
   -- Built-in Function: int32_t __builtin_riscv_cv_mac_mulhhsN (int32_t,
            int32_t, uint8_t)
!      Generates the â€˜cv.mulhhsNâ€™ machine instruction.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_mac_muluRN (uint32_t,
            uint32_t, uint8_t)
!      Generates the â€˜cv.muluRNâ€™ machine instruction.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_mac_mulhhuRN
            (uint32_t, uint32_t, uint8_t)
!      Generates the â€˜cv.mulhhuRNâ€™ machine instruction.
  
   -- Built-in Function: int32_t __builtin_riscv_cv_mac_mulsRN (int32_t,
            int32_t, uint8_t)
!      Generates the â€˜cv.mulsRNâ€™ machine instruction.
  
   -- Built-in Function: int32_t __builtin_riscv_cv_mac_mulhhsRN (int32_t,
            int32_t, uint8_t)
!      Generates the â€˜cv.mulhhsRNâ€™ machine instruction.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_mac_macuN (uint32_t,
            uint32_t, uint8_t)
!      Generates the â€˜cv.macuNâ€™ machine instruction.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_mac_machhuN
            (uint32_t, uint32_t, uint8_t)
!      Generates the â€˜cv.machhuNâ€™ machine instruction.
  
   -- Built-in Function: int32_t __builtin_riscv_cv_mac_macsN (int32_t,
            int32_t, uint8_t)
!      Generates the â€˜cv.macsNâ€™ machine instruction.
  
   -- Built-in Function: int32_t __builtin_riscv_cv_mac_machhsN (int32_t,
            int32_t, uint8_t)
!      Generates the â€˜cv.machhsNâ€™ machine instruction.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_mac_macuRN (uint32_t,
            uint32_t, uint8_t)
!      Generates the â€˜cv.macuRNâ€™ machine instruction.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_mac_machhuRN
            (uint32_t, uint32_t, uint8_t)
!      Generates the â€˜cv.machhuRNâ€™ machine instruction.
  
   -- Built-in Function: int32_t __builtin_riscv_cv_mac_macsRN (int32_t,
            int32_t, uint8_t)
!      Generates the â€˜cv.macsRNâ€™ machine instruction.
  
   -- Built-in Function: int32_t __builtin_riscv_cv_mac_machhsRN (int32_t,
            int32_t, uint8_t)
!      Generates the â€˜cv.machhsRNâ€™ machine instruction.
  
   These built-in functions are available for the CORE-V ALU machine
  architecture.  For more information on CORE-V built-ins, please see
*************** architecture.  For more information on C
*** 61780,61878 ****
  
   -- Built-in Function: int __builtin_riscv_cv_alu_slet (int32_t,
            int32_t)
!      Generated assembler 'cv.slet'
  
   -- Built-in Function: int __builtin_riscv_cv_alu_sletu (uint32_t,
            uint32_t)
!      Generated assembler 'cv.sletu'
  
   -- Built-in Function: int32_t __builtin_riscv_cv_alu_min (int32_t,
            int32_t)
!      Generated assembler 'cv.min'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_alu_minu (uint32_t,
            uint32_t)
!      Generated assembler 'cv.minu'
  
   -- Built-in Function: int32_t __builtin_riscv_cv_alu_max (int32_t,
            int32_t)
!      Generated assembler 'cv.max'
  
   -- Built-in Function: uint32_tnt __builtin_riscv_cv_alu_maxu (uint32_t,
            uint32_t)
!      Generated assembler 'cv.maxu'
  
   -- Built-in Function: int32_t __builtin_riscv_cv_alu_exths (int16_t)
!      Generated assembler 'cv.exths'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_alu_exthz (uint16_t)
!      Generated assembler 'cv.exthz'
  
   -- Built-in Function: int32_t __builtin_riscv_cv_alu_extbs (int8_t)
!      Generated assembler 'cv.extbs'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_alu_extbz (uint8_t)
!      Generated assembler 'cv.extbz'
  
   -- Built-in Function: int32_t __builtin_riscv_cv_alu_clip (int32_t,
            uint32_t)
!      Generated assembler 'cv.clip' if the uint32_t operand is a constant
!      and an exact power of 2.  Generated assembler 'cv.clipr' if the it
       is a register.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_alu_clipu (uint32_t,
            uint32_t)
!      Generated assembler 'cv.clipu' if the uint32_t operand is a
!      constant and an exact power of 2.  Generated assembler 'cv.clipur'
       if the it is a register.
  
   -- Built-in Function: int32_t __builtin_riscv_cv_alu_addN (int32_t,
            int32_t, uint8_t)
!      Generated assembler 'cv.addN' if the uint8_t operand is a constant
!      and in the range 0 <= shft <= 31.  Generated assembler 'cv.addNr'
       if the it is a register.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_alu_adduN (uint32_t,
            uint32_t, uint8_t)
!      Generated assembler 'cv.adduN' if the uint8_t operand is a constant
!      and in the range 0 <= shft <= 31.  Generated assembler 'cv.adduNr'
       if the it is a register.
  
   -- Built-in Function: int32_t __builtin_riscv_cv_alu_addRN (int32_t,
            int32_t, uint8_t)
!      Generated assembler 'cv.addRN' if the uint8_t operand is a constant
!      and in the range 0 <= shft <= 31.  Generated assembler 'cv.addRNr'
       if the it is a register.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_alu_adduRN (uint32_t,
            uint32_t, uint8_t)
!      Generated assembler 'cv.adduRN' if the uint8_t operand is a
       constant and in the range 0 <= shft <= 31.  Generated assembler
!      'cv.adduRNr' if the it is a register.
  
   -- Built-in Function: int32_t __builtin_riscv_cv_alu_subN (int32_t,
            int32_t, uint8_t)
!      Generated assembler 'cv.subN' if the uint8_t operand is a constant
!      and in the range 0 <= shft <= 31.  Generated assembler 'cv.subNr'
       if the it is a register.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_alu_subuN (uint32_t,
            uint32_t, uint8_t)
!      Generated assembler 'cv.subuN' if the uint8_t operand is a constant
!      and in the range 0 <= shft <= 31.  Generated assembler 'cv.subuNr'
       if the it is a register.
  
   -- Built-in Function: int32_t __builtin_riscv_cv_alu_subRN (int32_t,
            int32_t, uint8_t)
!      Generated assembler 'cv.subRN' if the uint8_t operand is a constant
!      and in the range 0 <= shft <= 31.  Generated assembler 'cv.subRNr'
       if the it is a register.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_alu_subuRN (uint32_t,
            uint32_t, uint8_t)
!      Generated assembler 'cv.subuRN' if the uint8_t operand is a
       constant and in the range 0 <= shft <= 31.  Generated assembler
!      'cv.subuRNr' if the it is a register.
  
   These built-in functions are available for the CORE-V Event Load
  machine architecture.  For more information on CORE-V ELW builtins,
--- 61789,61887 ----
  
   -- Built-in Function: int __builtin_riscv_cv_alu_slet (int32_t,
            int32_t)
!      Generated assembler â€˜cv.sletâ€™
  
   -- Built-in Function: int __builtin_riscv_cv_alu_sletu (uint32_t,
            uint32_t)
!      Generated assembler â€˜cv.sletuâ€™
  
   -- Built-in Function: int32_t __builtin_riscv_cv_alu_min (int32_t,
            int32_t)
!      Generated assembler â€˜cv.minâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_alu_minu (uint32_t,
            uint32_t)
!      Generated assembler â€˜cv.minuâ€™
  
   -- Built-in Function: int32_t __builtin_riscv_cv_alu_max (int32_t,
            int32_t)
!      Generated assembler â€˜cv.maxâ€™
  
   -- Built-in Function: uint32_tnt __builtin_riscv_cv_alu_maxu (uint32_t,
            uint32_t)
!      Generated assembler â€˜cv.maxuâ€™
  
   -- Built-in Function: int32_t __builtin_riscv_cv_alu_exths (int16_t)
!      Generated assembler â€˜cv.exthsâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_alu_exthz (uint16_t)
!      Generated assembler â€˜cv.exthzâ€™
  
   -- Built-in Function: int32_t __builtin_riscv_cv_alu_extbs (int8_t)
!      Generated assembler â€˜cv.extbsâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_alu_extbz (uint8_t)
!      Generated assembler â€˜cv.extbzâ€™
  
   -- Built-in Function: int32_t __builtin_riscv_cv_alu_clip (int32_t,
            uint32_t)
!      Generated assembler â€˜cv.clipâ€™ if the uint32_t operand is a constant
!      and an exact power of 2.  Generated assembler â€˜cv.cliprâ€™ if the it
       is a register.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_alu_clipu (uint32_t,
            uint32_t)
!      Generated assembler â€˜cv.clipuâ€™ if the uint32_t operand is a
!      constant and an exact power of 2.  Generated assembler â€˜cv.clipurâ€™
       if the it is a register.
  
   -- Built-in Function: int32_t __builtin_riscv_cv_alu_addN (int32_t,
            int32_t, uint8_t)
!      Generated assembler â€˜cv.addNâ€™ if the uint8_t operand is a constant
!      and in the range 0 <= shft <= 31.  Generated assembler â€˜cv.addNrâ€™
       if the it is a register.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_alu_adduN (uint32_t,
            uint32_t, uint8_t)
!      Generated assembler â€˜cv.adduNâ€™ if the uint8_t operand is a constant
!      and in the range 0 <= shft <= 31.  Generated assembler â€˜cv.adduNrâ€™
       if the it is a register.
  
   -- Built-in Function: int32_t __builtin_riscv_cv_alu_addRN (int32_t,
            int32_t, uint8_t)
!      Generated assembler â€˜cv.addRNâ€™ if the uint8_t operand is a constant
!      and in the range 0 <= shft <= 31.  Generated assembler â€˜cv.addRNrâ€™
       if the it is a register.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_alu_adduRN (uint32_t,
            uint32_t, uint8_t)
!      Generated assembler â€˜cv.adduRNâ€™ if the uint8_t operand is a
       constant and in the range 0 <= shft <= 31.  Generated assembler
!      â€˜cv.adduRNrâ€™ if the it is a register.
  
   -- Built-in Function: int32_t __builtin_riscv_cv_alu_subN (int32_t,
            int32_t, uint8_t)
!      Generated assembler â€˜cv.subNâ€™ if the uint8_t operand is a constant
!      and in the range 0 <= shft <= 31.  Generated assembler â€˜cv.subNrâ€™
       if the it is a register.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_alu_subuN (uint32_t,
            uint32_t, uint8_t)
!      Generated assembler â€˜cv.subuNâ€™ if the uint8_t operand is a constant
!      and in the range 0 <= shft <= 31.  Generated assembler â€˜cv.subuNrâ€™
       if the it is a register.
  
   -- Built-in Function: int32_t __builtin_riscv_cv_alu_subRN (int32_t,
            int32_t, uint8_t)
!      Generated assembler â€˜cv.subRNâ€™ if the uint8_t operand is a constant
!      and in the range 0 <= shft <= 31.  Generated assembler â€˜cv.subRNrâ€™
       if the it is a register.
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_alu_subuRN (uint32_t,
            uint32_t, uint8_t)
!      Generated assembler â€˜cv.subuRNâ€™ if the uint8_t operand is a
       constant and in the range 0 <= shft <= 31.  Generated assembler
!      â€˜cv.subuRNrâ€™ if the it is a register.
  
   These built-in functions are available for the CORE-V Event Load
  machine architecture.  For more information on CORE-V ELW builtins,
*************** please see
*** 61880,61886 ****
  <https://github.com/openhwgroup/core-v-sw/blob/master/specifications/corev-builtin-spec.md#listing-of-event-load-word-builtins-xcvelw>
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_elw_elw (uint32_t *)
!      Generated assembler 'cv.elw'
  
   These built-in functions are available for the CORE-V SIMD machine
  architecture.  For more information on CORE-V SIMD built-ins, please see
--- 61889,61895 ----
  <https://github.com/openhwgroup/core-v-sw/blob/master/specifications/corev-builtin-spec.md#listing-of-event-load-word-builtins-xcvelw>
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_elw_elw (uint32_t *)
!      Generated assembler â€˜cv.elwâ€™
  
   These built-in functions are available for the CORE-V SIMD machine
  architecture.  For more information on CORE-V SIMD built-ins, please see
*************** architecture.  For more information on C
*** 61888,62768 ****
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_add_h (uint32_t,
            uint32_t, uint4_t)
!      Generated assembler 'cv.add.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_add_b (uint32_t,
            uint32_t)
!      Generated assembler 'cv.add.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_add_sc_h
            (uint32_t, int16_t)
!      Generated assembler 'cv.add.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_add_sc_h
            (uint32_t, int6_t)
!      Generated assembler 'cv.add.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_add_sc_b
            (uint32_t, int8_t)
!      Generated assembler 'cv.add.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_add_sc_b
            (uint32_t, int6_t)
!      Generated assembler 'cv.add.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sub_h (uint32_t,
            uint32_t, uint4_t)
!      Generated assembler 'cv.sub.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sub_b (uint32_t,
            uint32_t)
!      Generated assembler 'cv.sub.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sub_sc_h
            (uint32_t, int16_t)
!      Generated assembler 'cv.sub.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sub_sc_h
            (uint32_t, int6_t)
!      Generated assembler 'cv.sub.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sub_sc_b
            (uint32_t, int8_t)
!      Generated assembler 'cv.sub.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sub_sc_b
            (uint32_t, int6_t)
!      Generated assembler 'cv.sub.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_avg_h (uint32_t,
            uint32_t)
!      Generated assembler 'cv.avg.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_avg_b (uint32_t,
            uint32_t)
!      Generated assembler 'cv.avg.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_avg_sc_h
            (uint32_t, int16_t)
!      Generated assembler 'cv.avg.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_avg_sc_h
            (uint32_t, int6_t)
!      Generated assembler 'cv.avg.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_avg_sc_b
            (uint32_t, int8_t)
!      Generated assembler 'cv.avg.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_avg_sc_b
            (uint32_t, int6_t)
!      Generated assembler 'cv.avg.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_avgu_h
            (uint32_t, uint32_t)
!      Generated assembler 'cv.avgu.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_avgu_b
            (uint32_t, uint32_t)
!      Generated assembler 'cv.avgu.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_avgu_sc_h
            (uint32_t, uint16_t)
!      Generated assembler 'cv.avgu.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_avgu_sc_h
            (uint32_t, uint6_t)
!      Generated assembler 'cv.avgu.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_avgu_sc_b
            (uint32_t, uint8_t)
!      Generated assembler 'cv.avgu.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_avgu_sc_b
            (uint32_t, uint6_t)
!      Generated assembler 'cv.avgu.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_min_h (uint32_t,
            uint32_t)
!      Generated assembler 'cv.min.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_min_b (uint32_t,
            uint32_t)
!      Generated assembler 'cv.min.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_min_sc_h
            (uint32_t, int16_t)
!      Generated assembler 'cv.min.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_min_sc_h
            (uint32_t, int6_t)
!      Generated assembler 'cv.min.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_min_sc_b
            (uint32_t, int8_t)
!      Generated assembler 'cv.min.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_min_sc_b
            (uint32_t, int6_t)
!      Generated assembler 'cv.min.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_minu_h
            (uint32_t, uint32_t)
!      Generated assembler 'cv.minu.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_minu_b
            (uint32_t, uint32_t)
!      Generated assembler 'cv.minu.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_minu_sc_h
            (uint32_t, uint16_t)
!      Generated assembler 'cv.minu.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_minu_sc_h
            (uint32_t, uint6_t)
!      Generated assembler 'cv.minu.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_minu_sc_b
            (uint32_t, uint8_t)
!      Generated assembler 'cv.minu.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_minu_sc_b
            (uint32_t, uint6_t)
!      Generated assembler 'cv.minu.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_max_h (uint32_t,
            uint32_t)
!      Generated assembler 'cv.max.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_max_b (uint32_t,
            uint32_t)
!      Generated assembler 'cv.max.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_max_sc_h
            (uint32_t, int16_t)
!      Generated assembler 'cv.max.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_max_sc_h
            (uint32_t, int6_t)
!      Generated assembler 'cv.max.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_max_sc_b
            (uint32_t, int8_t)
!      Generated assembler 'cv.max.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_max_sc_b
            (uint32_t, int6_t)
!      Generated assembler 'cv.max.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_maxu_h
            (uint32_t, uint32_t)
!      Generated assembler 'cv.maxu.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_maxu_b
            (uint32_t, uint32_t)
!      Generated assembler 'cv.maxu.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_maxu_sc_h
            (uint32_t, uint16_t)
!      Generated assembler 'cv.maxu.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_maxu_sc_h
            (uint32_t, uint6_t)
!      Generated assembler 'cv.maxu.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_maxu_sc_b
            (uint32_t, uint8_t)
!      Generated assembler 'cv.maxu.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_maxu_sc_b
            (uint32_t, uint6_t)
!      Generated assembler 'cv.maxu.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_srl_h (uint32_t,
            uint32_t)
!      Generated assembler 'cv.srl.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_srl_b (uint32_t,
            uint32_t)
!      Generated assembler 'cv.srl.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_srl_sc_h
            (uint32_t, int16_t)
!      Generated assembler 'cv.srl.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_srl_sc_h
            (uint32_t, int6_t)
!      Generated assembler 'cv.srl.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_srl_sc_b
            (uint32_t, int8_t)
!      Generated assembler 'cv.srl.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_srl_sc_b
            (uint32_t, int6_t)
!      Generated assembler 'cv.srl.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sra_h (uint32_t,
            uint32_t)
!      Generated assembler 'cv.sra.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sra_b (uint32_t,
            uint32_t)
!      Generated assembler 'cv.sra.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sra_sc_h
            (uint32_t, int16_t)
!      Generated assembler 'cv.sra.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sra_sc_h
            (uint32_t, int6_t)
!      Generated assembler 'cv.sra.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sra_sc_b
            (uint32_t, int8_t)
!      Generated assembler 'cv.sra.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sra_sc_b
            (uint32_t, int6_t)
!      Generated assembler 'cv.sra.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sll_h (uint32_t,
            uint32_t)
!      Generated assembler 'cv.sll.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sll_b (uint32_t,
            uint32_t)
!      Generated assembler 'cv.sll.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sll_sc_h
            (uint32_t, int16_t)
!      Generated assembler 'cv.sll.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sll_sc_h
            (uint32_t, int6_t)
!      Generated assembler 'cv.sll.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sll_sc_b
            (uint32_t, int8_t)
!      Generated assembler 'cv.sll.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sll_sc_b
            (uint32_t, int6_t)
!      Generated assembler 'cv.sll.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_or_h (uint32_t,
            uint32_t)
!      Generated assembler 'cv.or.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_or_b (uint32_t,
            uint32_t)
!      Generated assembler 'cv.or.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_or_sc_h
            (uint32_t, int16_t)
!      Generated assembler 'cv.or.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_or_sc_h
            (uint32_t, int6_t)
!      Generated assembler 'cv.or.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_or_sc_b
            (uint32_t, int8_t)
!      Generated assembler 'cv.or.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_or_sc_b
            (uint32_t, int6_t)
!      Generated assembler 'cv.or.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_xor_h (uint32_t,
            uint32_t)
!      Generated assembler 'cv.xor.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_xor_b (uint32_t,
            uint32_t)
!      Generated assembler 'cv.xor.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_xor_sc_h
            (uint32_t, int16_t)
!      Generated assembler 'cv.xor.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_xor_sc_h
            (uint32_t, int6_t)
!      Generated assembler 'cv.xor.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_xor_sc_b
            (uint32_t, int8_t)
!      Generated assembler 'cv.xor.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_xor_sc_b
            (uint32_t, int6_t)
!      Generated assembler 'cv.xor.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_and_h (uint32_t,
            uint32_t)
!      Generated assembler 'cv.and.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_and_b (uint32_t,
            uint32_t)
!      Generated assembler 'cv.and.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_and_sc_h
            (uint32_t, int16_t)
!      Generated assembler 'cv.and.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_and_sc_h
            (uint32_t, int6_t)
!      Generated assembler 'cv.and.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_and_sc_b
            (uint32_t, int8_t)
!      Generated assembler 'cv.and.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_and_sc_b
            (uint32_t, int6_t)
!      Generated assembler 'cv.and.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_abs_h (uint32_t)
!      Generated assembler 'cv.abs.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_abs_b (uint32_t)
!      Generated assembler 'cv.abs.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotup_h
            (uint32_t, uint32_t)
!      Generated assembler 'cv.dotup.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotup_b
            (uint32_t, uint32_t)
!      Generated assembler 'cv.dotup.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotup_sc_h
            (uint32_t, uint16_t)
!      Generated assembler 'cv.dotup.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotup_sc_h
            (uint32_t, uint6_t)
!      Generated assembler 'cv.dotup.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotup_sc_b
            (uint32_t, uint8_t)
!      Generated assembler 'cv.dotup.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotup_sc_b
            (uint32_t, uint6_t)
!      Generated assembler 'cv.dotup.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotusp_h
            (uint32_t, uint32_t)
!      Generated assembler 'cv.dotusp.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotusp_b
            (uint32_t, uint32_t)
!      Generated assembler 'cv.dotusp.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotusp_sc_h
            (uint32_t, int16_t)
!      Generated assembler 'cv.dotusp.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotusp_sc_h
            (uint32_t, int6_t)
!      Generated assembler 'cv.dotusp.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotusp_sc_b
            (uint32_t, int8_t)
!      Generated assembler 'cv.dotusp.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotusp_sc_b
            (uint32_t, int6_t)
!      Generated assembler 'cv.dotusp.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotsp_h
            (uint32_t, uint32_t)
!      Generated assembler 'cv.dotsp.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotsp_b
            (uint32_t, uint32_t)
!      Generated assembler 'cv.dotsp.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotsp_sc_h
            (uint32_t, int16_t)
!      Generated assembler 'cv.dotsp.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotsp_sc_h
            (uint32_t, int6_t)
!      Generated assembler 'cv.dotsp.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotsp_sc_b
            (uint32_t, int8_t)
!      Generated assembler 'cv.dotsp.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotsp_sc_b
            (uint32_t, int6_t)
!      Generated assembler 'cv.dotsp.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotup_h
            (uint32_t, uint32_t, uint32_t)
!      Generated assembler 'cv.sdotup.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotup_b
            (uint32_t, uint32_t, uint32_t)
!      Generated assembler 'cv.sdotup.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotup_sc_h
            (uint32_t, uint16_t, uint32_t)
!      Generated assembler 'cv.sdotup.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotup_sc_h
            (uint32_t, uint6_t, uint32_t)
!      Generated assembler 'cv.sdotup.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotup_sc_b
            (uint32_t, uint8_t, uint32_t)
!      Generated assembler 'cv.sdotup.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotup_sc_b
            (uint32_t, uint6_t, uint32_t)
!      Generated assembler 'cv.sdotup.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotusp_h
            (uint32_t, uint32_t, uint32_t)
!      Generated assembler 'cv.sdotusp.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotusp_b
            (uint32_t, uint32_t, uint32_t)
!      Generated assembler 'cv.sdotusp.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotusp_sc_h
            (uint32_t, int16_t, uint32_t)
!      Generated assembler 'cv.sdotusp.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotusp_sc_h
            (uint32_t, int6_t, uint32_t)
!      Generated assembler 'cv.sdotusp.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotusp_sc_b
            (uint32_t, int8_t, uint32_t)
!      Generated assembler 'cv.sdotusp.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotusp_sc_b
            (uint32_t, int6_t, uint32_t)
!      Generated assembler 'cv.sdotusp.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotsp_h
            (uint32_t, uint32_t, uint32_t)
!      Generated assembler 'cv.sdotsp.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotsp_b
            (uint32_t, uint32_t, uint32_t)
!      Generated assembler 'cv.sdotsp.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotsp_sc_h
            (uint32_t, int16_t, uint32_t)
!      Generated assembler 'cv.sdotsp.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotsp_sc_h
            (uint32_t, int6_t, uint32_t)
!      Generated assembler 'cv.sdotsp.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotsp_sc_b
            (uint32_t, int8_t, uint32_t)
!      Generated assembler 'cv.sdotsp.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotsp_sc_b
            (uint32_t, int6_t, uint32_t)
!      Generated assembler 'cv.sdotsp.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_extract_h
            (uint32_t, uint6_t)
!      Generated assembler 'cv.extract.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_extract_b
            (uint32_t, uint6_t)
!      Generated assembler 'cv.extract.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_extractu_h
            (uint32_t, uint6_t)
!      Generated assembler 'cv.extractu.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_extractu_b
            (uint32_t, uint6_t)
!      Generated assembler 'cv.extractu.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_insert_h
            (uint32_t, uint32_t)
!      Generated assembler 'cv.insert.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_insert_b
            (uint32_t, uint32_t)
!      Generated assembler 'cv.insert.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_shuffle_h
            (uint32_t, uint32_t)
!      Generated assembler 'cv.shuffle.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_shuffle_b
            (uint32_t, uint32_t)
!      Generated assembler 'cv.shuffle.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_shuffle_sci_h
            (uint32_t, uint4_t)
!      Generated assembler 'cv.shuffle.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_shufflei0_sci_b
            (uint32_t, uint4_t)
!      Generated assembler 'cv.shufflei0.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_shufflei1_sci_b
            (uint32_t, uint4_t)
!      Generated assembler 'cv.shufflei1.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_shufflei2_sci_b
            (uint32_t, uint4_t)
!      Generated assembler 'cv.shufflei2.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_shufflei3_sci_b
            (uint32_t, uint4_t)
!      Generated assembler 'cv.shufflei3.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_shuffle2_h
            (uint32_t, uint32_t, uint32_t)
!      Generated assembler 'cv.shuffle2.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_shuffle2_b
            (uint32_t, uint32_t, uint32_t)
!      Generated assembler 'cv.shuffle2.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_packlo_h
            (uint32_t, uint32_t)
!      Generated assembler 'cv.pack'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_packhi_h
            (uint32_t, uint32_t)
!      Generated assembler 'cv.pack.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_packhi_b
            (uint32_t, uint32_t, uint32_t)
!      Generated assembler 'cv.packhi.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_packlo_b
            (uint32_t, uint32_t, uint32_t)
!      Generated assembler 'cv.packlo.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpeq_h
            (uint32_t, uint32_t)
!      Generated assembler 'cv.cmpeq.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpeq_b
            (uint32_t, uint32_t)
!      Generated assembler 'cv.cmpeq.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpeq_sc_h
            (uint32_t, int16_t)
!      Generated assembler 'cv.cmpeq.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpeq_sc_h
            (uint32_t, int6_t)
!      Generated assembler 'cv.cmpeq.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpeq_sc_b
            (uint32_t, int8_t)
!      Generated assembler 'cv.cmpeq.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpeq_sc_b
            (uint32_t, int6_t)
!      Generated assembler 'cv.cmpeq.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpne_h
            (uint32_t, uint32_t)
!      Generated assembler 'cv.cmpne.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpne_b
            (uint32_t, uint32_t)
!      Generated assembler 'cv.cmpne.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpne_sc_h
            (uint32_t, int16_t)
!      Generated assembler 'cv.cmpne.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpne_sc_h
            (uint32_t, int6_t)
!      Generated assembler 'cv.cmpne.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpne_sc_b
            (uint32_t, int8_t)
!      Generated assembler 'cv.cmpne.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpne_sc_b
            (uint32_t, int6_t)
!      Generated assembler 'cv.cmpne.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgt_h
            (uint32_t, uint32_t)
!      Generated assembler 'cv.cmpgt.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgt_b
            (uint32_t, uint32_t)
!      Generated assembler 'cv.cmpgt.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgt_sc_h
            (uint32_t, int16_t)
!      Generated assembler 'cv.cmpgt.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgt_sc_h
            (uint32_t, int6_t)
!      Generated assembler 'cv.cmpgt.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgt_sc_b
            (uint32_t, int8_t)
!      Generated assembler 'cv.cmpgt.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgt_sc_b
            (uint32_t, int6_t)
!      Generated assembler 'cv.cmpgt.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpge_h
            (uint32_t, uint32_t)
!      Generated assembler 'cv.cmpge.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpge_b
            (uint32_t, uint32_t)
!      Generated assembler 'cv.cmpge.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpge_sc_h
            (uint32_t, int16_t)
!      Generated assembler 'cv.cmpge.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpge_sc_h
            (uint32_t, int6_t)
!      Generated assembler 'cv.cmpge.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpge_sc_b
            (uint32_t, int8_t)
!      Generated assembler 'cv.cmpge.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpge_sc_b
            (uint32_t, int6_t)
!      Generated assembler 'cv.cmpge.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmplt_h
            (uint32_t, uint32_t)
!      Generated assembler 'cv.cmplt.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmplt_b
            (uint32_t, uint32_t)
!      Generated assembler 'cv.cmplt.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmplt_sc_h
            (uint32_t, int16_t)
!      Generated assembler 'cv.cmplt.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmplt_sc_h
            (uint32_t, int6_t)
!      Generated assembler 'cv.cmplt.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmplt_sc_b
            (uint32_t, int8_t)
!      Generated assembler 'cv.cmplt.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmplt_sc_b
            (uint32_t, int6_t)
!      Generated assembler 'cv.cmplt.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmple_h
            (uint32_t, uint32_t)
!      Generated assembler 'cv.cmple.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmple_b
            (uint32_t, uint32_t)
!      Generated assembler 'cv.cmple.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmple_sc_h
            (uint32_t, int16_t)
!      Generated assembler 'cv.cmple.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmple_sc_h
            (uint32_t, int6_t)
!      Generated assembler 'cv.cmple.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmple_sc_b
            (uint32_t, int8_t)
!      Generated assembler 'cv.cmple.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmple_sc_b
            (uint32_t, int6_t)
!      Generated assembler 'cv.cmple.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgtu_h
            (uint32_t, uint32_t)
!      Generated assembler 'cv.cmpgtu.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgtu_b
            (uint32_t, uint32_t)
!      Generated assembler 'cv.cmpgtu.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgtu_sc_h
            (uint32_t, uint16_t)
!      Generated assembler 'cv.cmpgtu.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgtu_sc_h
            (uint32_t, uint6_t)
!      Generated assembler 'cv.cmpgtu.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgtu_sc_b
            (uint32_t, uint8_t)
!      Generated assembler 'cv.cmpgtu.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgtu_sc_b
            (uint32_t, uint6_t)
!      Generated assembler 'cv.cmpgtu.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgeu_h
            (uint32_t, uint32_t)
!      Generated assembler 'cv.cmpgeu.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgeu_b
            (uint32_t, uint32_t)
!      Generated assembler 'cv.cmpgeu.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgeu_sc_h
            (uint32_t, uint16_t)
!      Generated assembler 'cv.cmpgeu.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgeu_sc_h
            (uint32_t, uint6_t)
!      Generated assembler 'cv.cmpgeu.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgeu_sc_b
            (uint32_t, uint8_t)
!      Generated assembler 'cv.cmpgeu.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgeu_sc_b
            (uint32_t, uint6_t)
!      Generated assembler 'cv.cmpgeu.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpltu_h
            (uint32_t, uint32_t)
!      Generated assembler 'cv.cmpltu.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpltu_b
            (uint32_t, uint32_t)
!      Generated assembler 'cv.cmpltu.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpltu_sc_h
            (uint32_t, uint16_t)
!      Generated assembler 'cv.cmpltu.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpltu_sc_h
            (uint32_t, uint6_t)
!      Generated assembler 'cv.cmpltu.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpltu_sc_b
            (uint32_t, uint8_t)
!      Generated assembler 'cv.cmpltu.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpltu_sc_b
            (uint32_t, uint6_t)
!      Generated assembler 'cv.cmpltu.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpleu_h
            (uint32_t, uint32_t)
!      Generated assembler 'cv.cmpleu.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpleu_b
            (uint32_t, uint32_t)
!      Generated assembler 'cv.cmpleu.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpleu_sc_h
            (uint32_t, uint16_t)
!      Generated assembler 'cv.cmpleu.sc.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpleu_sc_h
            (uint32_t, uint6_t)
!      Generated assembler 'cv.cmpleu.sci.h'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpleu_sc_b
            (uint32_t, uint8_t)
!      Generated assembler 'cv.cmpleu.sc.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpleu_sc_b
            (uint32_t, uint6_t)
!      Generated assembler 'cv.cmpleu.sci.b'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cplxmul_r
            (uint32_t, uint32_t, uint32_t, uint4_t)
!      Generated assembler 'cv.cplxmul.r'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cplxmul_i
            (uint32_t, uint32_t, uint32_t, uint4_t)
!      Generated assembler 'cv.cplxmul.i'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cplxmul_r
            (uint32_t, uint32_t, uint32_t, uint4_t)
!      Generated assembler 'cv.cplxmul.r.div2'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cplxmul_i
            (uint32_t, uint32_t, uint32_t, uint4_t)
!      Generated assembler 'cv.cplxmul.i.div2'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cplxmul_r
            (uint32_t, uint32_t, uint32_t, uint4_t)
!      Generated assembler 'cv.cplxmul.r.div4'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cplxmul_i
            (uint32_t, uint32_t, uint32_t, uint4_t)
!      Generated assembler 'cv.cplxmul.i.div4'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cplxmul_r
            (uint32_t, uint32_t, uint32_t, uint4_t)
!      Generated assembler 'cv.cplxmul.r.div8'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cplxmul_i
            (uint32_t, uint32_t, uint32_t, uint4_t)
!      Generated assembler 'cv.cplxmul.i.div8'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cplxconj
            (uint32_t)
!      Generated assembler 'cv.cplxconj'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_subrotmj
            (uint32_t, uint32_t, uint4_t)
!      Generated assembler 'cv.subrotmj'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_subrotmj
            (uint32_t, uint32_t, uint32_t, uint4_t)
!      Generated assembler 'cv.subrotmj.div2'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_subrotmj
            (uint32_t, uint32_t, uint32_t, uint4_t)
!      Generated assembler 'cv.subrotmj.div4'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_subrotmj
            (uint32_t, uint32_t, uint32_t, uint4_t)
!      Generated assembler 'cv.subrotmj.div8'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_add_h (uint32_t,
            uint32_t, uint32_t, uint4_t)
!      Generated assembler 'cv.add.div2'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_add_h (uint32_t,
            uint32_t, uint32_t, uint4_t)
!      Generated assembler 'cv.add.div4'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_add_h (uint32_t,
            uint32_t, uint32_t, uint4_t)
!      Generated assembler 'cv.add.div8'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sub_h (uint32_t,
            uint32_t, uint32_t, uint4_t)
!      Generated assembler 'cv.sub.div2'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sub_h (uint32_t,
            uint32_t, uint32_t, uint4_t)
!      Generated assembler 'cv.sub.div4'
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sub_h (uint32_t,
            uint32_t, uint32_t, uint4_t)
!      Generated assembler 'cv.sub.div8'
  
  
  File: gcc.info,  Node: RX Built-in Functions,  Next: S/390 System z Built-in Functions,  Prev: CORE-V Built-in Functions,  Up: Target Builtins
--- 61897,62777 ----
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_add_h (uint32_t,
            uint32_t, uint4_t)
!      Generated assembler â€˜cv.add.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_add_b (uint32_t,
            uint32_t)
!      Generated assembler â€˜cv.add.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_add_sc_h
            (uint32_t, int16_t)
!      Generated assembler â€˜cv.add.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_add_sc_h
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.add.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_add_sc_b
            (uint32_t, int8_t)
!      Generated assembler â€˜cv.add.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_add_sc_b
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.add.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sub_h (uint32_t,
            uint32_t, uint4_t)
!      Generated assembler â€˜cv.sub.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sub_b (uint32_t,
            uint32_t)
!      Generated assembler â€˜cv.sub.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sub_sc_h
            (uint32_t, int16_t)
!      Generated assembler â€˜cv.sub.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sub_sc_h
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.sub.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sub_sc_b
            (uint32_t, int8_t)
!      Generated assembler â€˜cv.sub.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sub_sc_b
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.sub.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_avg_h (uint32_t,
            uint32_t)
!      Generated assembler â€˜cv.avg.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_avg_b (uint32_t,
            uint32_t)
!      Generated assembler â€˜cv.avg.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_avg_sc_h
            (uint32_t, int16_t)
!      Generated assembler â€˜cv.avg.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_avg_sc_h
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.avg.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_avg_sc_b
            (uint32_t, int8_t)
!      Generated assembler â€˜cv.avg.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_avg_sc_b
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.avg.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_avgu_h
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.avgu.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_avgu_b
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.avgu.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_avgu_sc_h
            (uint32_t, uint16_t)
!      Generated assembler â€˜cv.avgu.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_avgu_sc_h
            (uint32_t, uint6_t)
!      Generated assembler â€˜cv.avgu.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_avgu_sc_b
            (uint32_t, uint8_t)
!      Generated assembler â€˜cv.avgu.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_avgu_sc_b
            (uint32_t, uint6_t)
!      Generated assembler â€˜cv.avgu.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_min_h (uint32_t,
            uint32_t)
!      Generated assembler â€˜cv.min.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_min_b (uint32_t,
            uint32_t)
!      Generated assembler â€˜cv.min.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_min_sc_h
            (uint32_t, int16_t)
!      Generated assembler â€˜cv.min.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_min_sc_h
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.min.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_min_sc_b
            (uint32_t, int8_t)
!      Generated assembler â€˜cv.min.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_min_sc_b
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.min.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_minu_h
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.minu.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_minu_b
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.minu.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_minu_sc_h
            (uint32_t, uint16_t)
!      Generated assembler â€˜cv.minu.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_minu_sc_h
            (uint32_t, uint6_t)
!      Generated assembler â€˜cv.minu.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_minu_sc_b
            (uint32_t, uint8_t)
!      Generated assembler â€˜cv.minu.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_minu_sc_b
            (uint32_t, uint6_t)
!      Generated assembler â€˜cv.minu.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_max_h (uint32_t,
            uint32_t)
!      Generated assembler â€˜cv.max.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_max_b (uint32_t,
            uint32_t)
!      Generated assembler â€˜cv.max.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_max_sc_h
            (uint32_t, int16_t)
!      Generated assembler â€˜cv.max.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_max_sc_h
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.max.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_max_sc_b
            (uint32_t, int8_t)
!      Generated assembler â€˜cv.max.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_max_sc_b
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.max.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_maxu_h
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.maxu.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_maxu_b
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.maxu.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_maxu_sc_h
            (uint32_t, uint16_t)
!      Generated assembler â€˜cv.maxu.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_maxu_sc_h
            (uint32_t, uint6_t)
!      Generated assembler â€˜cv.maxu.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_maxu_sc_b
            (uint32_t, uint8_t)
!      Generated assembler â€˜cv.maxu.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_maxu_sc_b
            (uint32_t, uint6_t)
!      Generated assembler â€˜cv.maxu.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_srl_h (uint32_t,
            uint32_t)
!      Generated assembler â€˜cv.srl.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_srl_b (uint32_t,
            uint32_t)
!      Generated assembler â€˜cv.srl.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_srl_sc_h
            (uint32_t, int16_t)
!      Generated assembler â€˜cv.srl.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_srl_sc_h
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.srl.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_srl_sc_b
            (uint32_t, int8_t)
!      Generated assembler â€˜cv.srl.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_srl_sc_b
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.srl.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sra_h (uint32_t,
            uint32_t)
!      Generated assembler â€˜cv.sra.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sra_b (uint32_t,
            uint32_t)
!      Generated assembler â€˜cv.sra.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sra_sc_h
            (uint32_t, int16_t)
!      Generated assembler â€˜cv.sra.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sra_sc_h
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.sra.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sra_sc_b
            (uint32_t, int8_t)
!      Generated assembler â€˜cv.sra.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sra_sc_b
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.sra.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sll_h (uint32_t,
            uint32_t)
!      Generated assembler â€˜cv.sll.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sll_b (uint32_t,
            uint32_t)
!      Generated assembler â€˜cv.sll.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sll_sc_h
            (uint32_t, int16_t)
!      Generated assembler â€˜cv.sll.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sll_sc_h
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.sll.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sll_sc_b
            (uint32_t, int8_t)
!      Generated assembler â€˜cv.sll.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sll_sc_b
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.sll.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_or_h (uint32_t,
            uint32_t)
!      Generated assembler â€˜cv.or.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_or_b (uint32_t,
            uint32_t)
!      Generated assembler â€˜cv.or.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_or_sc_h
            (uint32_t, int16_t)
!      Generated assembler â€˜cv.or.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_or_sc_h
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.or.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_or_sc_b
            (uint32_t, int8_t)
!      Generated assembler â€˜cv.or.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_or_sc_b
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.or.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_xor_h (uint32_t,
            uint32_t)
!      Generated assembler â€˜cv.xor.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_xor_b (uint32_t,
            uint32_t)
!      Generated assembler â€˜cv.xor.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_xor_sc_h
            (uint32_t, int16_t)
!      Generated assembler â€˜cv.xor.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_xor_sc_h
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.xor.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_xor_sc_b
            (uint32_t, int8_t)
!      Generated assembler â€˜cv.xor.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_xor_sc_b
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.xor.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_and_h (uint32_t,
            uint32_t)
!      Generated assembler â€˜cv.and.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_and_b (uint32_t,
            uint32_t)
!      Generated assembler â€˜cv.and.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_and_sc_h
            (uint32_t, int16_t)
!      Generated assembler â€˜cv.and.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_and_sc_h
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.and.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_and_sc_b
            (uint32_t, int8_t)
!      Generated assembler â€˜cv.and.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_and_sc_b
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.and.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_abs_h (uint32_t)
!      Generated assembler â€˜cv.abs.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_abs_b (uint32_t)
!      Generated assembler â€˜cv.abs.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotup_h
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.dotup.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotup_b
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.dotup.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotup_sc_h
            (uint32_t, uint16_t)
!      Generated assembler â€˜cv.dotup.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotup_sc_h
            (uint32_t, uint6_t)
!      Generated assembler â€˜cv.dotup.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotup_sc_b
            (uint32_t, uint8_t)
!      Generated assembler â€˜cv.dotup.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotup_sc_b
            (uint32_t, uint6_t)
!      Generated assembler â€˜cv.dotup.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotusp_h
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.dotusp.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotusp_b
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.dotusp.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotusp_sc_h
            (uint32_t, int16_t)
!      Generated assembler â€˜cv.dotusp.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotusp_sc_h
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.dotusp.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotusp_sc_b
            (uint32_t, int8_t)
!      Generated assembler â€˜cv.dotusp.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotusp_sc_b
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.dotusp.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotsp_h
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.dotsp.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotsp_b
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.dotsp.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotsp_sc_h
            (uint32_t, int16_t)
!      Generated assembler â€˜cv.dotsp.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotsp_sc_h
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.dotsp.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotsp_sc_b
            (uint32_t, int8_t)
!      Generated assembler â€˜cv.dotsp.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_dotsp_sc_b
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.dotsp.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotup_h
            (uint32_t, uint32_t, uint32_t)
!      Generated assembler â€˜cv.sdotup.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotup_b
            (uint32_t, uint32_t, uint32_t)
!      Generated assembler â€˜cv.sdotup.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotup_sc_h
            (uint32_t, uint16_t, uint32_t)
!      Generated assembler â€˜cv.sdotup.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotup_sc_h
            (uint32_t, uint6_t, uint32_t)
!      Generated assembler â€˜cv.sdotup.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotup_sc_b
            (uint32_t, uint8_t, uint32_t)
!      Generated assembler â€˜cv.sdotup.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotup_sc_b
            (uint32_t, uint6_t, uint32_t)
!      Generated assembler â€˜cv.sdotup.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotusp_h
            (uint32_t, uint32_t, uint32_t)
!      Generated assembler â€˜cv.sdotusp.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotusp_b
            (uint32_t, uint32_t, uint32_t)
!      Generated assembler â€˜cv.sdotusp.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotusp_sc_h
            (uint32_t, int16_t, uint32_t)
!      Generated assembler â€˜cv.sdotusp.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotusp_sc_h
            (uint32_t, int6_t, uint32_t)
!      Generated assembler â€˜cv.sdotusp.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotusp_sc_b
            (uint32_t, int8_t, uint32_t)
!      Generated assembler â€˜cv.sdotusp.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotusp_sc_b
            (uint32_t, int6_t, uint32_t)
!      Generated assembler â€˜cv.sdotusp.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotsp_h
            (uint32_t, uint32_t, uint32_t)
!      Generated assembler â€˜cv.sdotsp.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotsp_b
            (uint32_t, uint32_t, uint32_t)
!      Generated assembler â€˜cv.sdotsp.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotsp_sc_h
            (uint32_t, int16_t, uint32_t)
!      Generated assembler â€˜cv.sdotsp.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotsp_sc_h
            (uint32_t, int6_t, uint32_t)
!      Generated assembler â€˜cv.sdotsp.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotsp_sc_b
            (uint32_t, int8_t, uint32_t)
!      Generated assembler â€˜cv.sdotsp.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sdotsp_sc_b
            (uint32_t, int6_t, uint32_t)
!      Generated assembler â€˜cv.sdotsp.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_extract_h
            (uint32_t, uint6_t)
!      Generated assembler â€˜cv.extract.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_extract_b
            (uint32_t, uint6_t)
!      Generated assembler â€˜cv.extract.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_extractu_h
            (uint32_t, uint6_t)
!      Generated assembler â€˜cv.extractu.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_extractu_b
            (uint32_t, uint6_t)
!      Generated assembler â€˜cv.extractu.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_insert_h
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.insert.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_insert_b
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.insert.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_shuffle_h
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.shuffle.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_shuffle_b
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.shuffle.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_shuffle_sci_h
            (uint32_t, uint4_t)
!      Generated assembler â€˜cv.shuffle.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_shufflei0_sci_b
            (uint32_t, uint4_t)
!      Generated assembler â€˜cv.shufflei0.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_shufflei1_sci_b
            (uint32_t, uint4_t)
!      Generated assembler â€˜cv.shufflei1.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_shufflei2_sci_b
            (uint32_t, uint4_t)
!      Generated assembler â€˜cv.shufflei2.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_shufflei3_sci_b
            (uint32_t, uint4_t)
!      Generated assembler â€˜cv.shufflei3.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_shuffle2_h
            (uint32_t, uint32_t, uint32_t)
!      Generated assembler â€˜cv.shuffle2.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_shuffle2_b
            (uint32_t, uint32_t, uint32_t)
!      Generated assembler â€˜cv.shuffle2.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_packlo_h
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.packâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_packhi_h
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.pack.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_packhi_b
            (uint32_t, uint32_t, uint32_t)
!      Generated assembler â€˜cv.packhi.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_packlo_b
            (uint32_t, uint32_t, uint32_t)
!      Generated assembler â€˜cv.packlo.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpeq_h
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.cmpeq.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpeq_b
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.cmpeq.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpeq_sc_h
            (uint32_t, int16_t)
!      Generated assembler â€˜cv.cmpeq.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpeq_sc_h
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.cmpeq.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpeq_sc_b
            (uint32_t, int8_t)
!      Generated assembler â€˜cv.cmpeq.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpeq_sc_b
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.cmpeq.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpne_h
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.cmpne.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpne_b
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.cmpne.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpne_sc_h
            (uint32_t, int16_t)
!      Generated assembler â€˜cv.cmpne.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpne_sc_h
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.cmpne.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpne_sc_b
            (uint32_t, int8_t)
!      Generated assembler â€˜cv.cmpne.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpne_sc_b
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.cmpne.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgt_h
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.cmpgt.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgt_b
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.cmpgt.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgt_sc_h
            (uint32_t, int16_t)
!      Generated assembler â€˜cv.cmpgt.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgt_sc_h
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.cmpgt.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgt_sc_b
            (uint32_t, int8_t)
!      Generated assembler â€˜cv.cmpgt.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgt_sc_b
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.cmpgt.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpge_h
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.cmpge.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpge_b
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.cmpge.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpge_sc_h
            (uint32_t, int16_t)
!      Generated assembler â€˜cv.cmpge.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpge_sc_h
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.cmpge.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpge_sc_b
            (uint32_t, int8_t)
!      Generated assembler â€˜cv.cmpge.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpge_sc_b
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.cmpge.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmplt_h
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.cmplt.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmplt_b
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.cmplt.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmplt_sc_h
            (uint32_t, int16_t)
!      Generated assembler â€˜cv.cmplt.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmplt_sc_h
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.cmplt.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmplt_sc_b
            (uint32_t, int8_t)
!      Generated assembler â€˜cv.cmplt.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmplt_sc_b
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.cmplt.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmple_h
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.cmple.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmple_b
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.cmple.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmple_sc_h
            (uint32_t, int16_t)
!      Generated assembler â€˜cv.cmple.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmple_sc_h
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.cmple.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmple_sc_b
            (uint32_t, int8_t)
!      Generated assembler â€˜cv.cmple.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmple_sc_b
            (uint32_t, int6_t)
!      Generated assembler â€˜cv.cmple.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgtu_h
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.cmpgtu.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgtu_b
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.cmpgtu.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgtu_sc_h
            (uint32_t, uint16_t)
!      Generated assembler â€˜cv.cmpgtu.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgtu_sc_h
            (uint32_t, uint6_t)
!      Generated assembler â€˜cv.cmpgtu.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgtu_sc_b
            (uint32_t, uint8_t)
!      Generated assembler â€˜cv.cmpgtu.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgtu_sc_b
            (uint32_t, uint6_t)
!      Generated assembler â€˜cv.cmpgtu.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgeu_h
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.cmpgeu.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgeu_b
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.cmpgeu.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgeu_sc_h
            (uint32_t, uint16_t)
!      Generated assembler â€˜cv.cmpgeu.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgeu_sc_h
            (uint32_t, uint6_t)
!      Generated assembler â€˜cv.cmpgeu.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgeu_sc_b
            (uint32_t, uint8_t)
!      Generated assembler â€˜cv.cmpgeu.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpgeu_sc_b
            (uint32_t, uint6_t)
!      Generated assembler â€˜cv.cmpgeu.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpltu_h
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.cmpltu.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpltu_b
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.cmpltu.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpltu_sc_h
            (uint32_t, uint16_t)
!      Generated assembler â€˜cv.cmpltu.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpltu_sc_h
            (uint32_t, uint6_t)
!      Generated assembler â€˜cv.cmpltu.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpltu_sc_b
            (uint32_t, uint8_t)
!      Generated assembler â€˜cv.cmpltu.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpltu_sc_b
            (uint32_t, uint6_t)
!      Generated assembler â€˜cv.cmpltu.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpleu_h
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.cmpleu.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpleu_b
            (uint32_t, uint32_t)
!      Generated assembler â€˜cv.cmpleu.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpleu_sc_h
            (uint32_t, uint16_t)
!      Generated assembler â€˜cv.cmpleu.sc.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpleu_sc_h
            (uint32_t, uint6_t)
!      Generated assembler â€˜cv.cmpleu.sci.hâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpleu_sc_b
            (uint32_t, uint8_t)
!      Generated assembler â€˜cv.cmpleu.sc.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cmpleu_sc_b
            (uint32_t, uint6_t)
!      Generated assembler â€˜cv.cmpleu.sci.bâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cplxmul_r
            (uint32_t, uint32_t, uint32_t, uint4_t)
!      Generated assembler â€˜cv.cplxmul.râ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cplxmul_i
            (uint32_t, uint32_t, uint32_t, uint4_t)
!      Generated assembler â€˜cv.cplxmul.iâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cplxmul_r
            (uint32_t, uint32_t, uint32_t, uint4_t)
!      Generated assembler â€˜cv.cplxmul.r.div2â€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cplxmul_i
            (uint32_t, uint32_t, uint32_t, uint4_t)
!      Generated assembler â€˜cv.cplxmul.i.div2â€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cplxmul_r
            (uint32_t, uint32_t, uint32_t, uint4_t)
!      Generated assembler â€˜cv.cplxmul.r.div4â€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cplxmul_i
            (uint32_t, uint32_t, uint32_t, uint4_t)
!      Generated assembler â€˜cv.cplxmul.i.div4â€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cplxmul_r
            (uint32_t, uint32_t, uint32_t, uint4_t)
!      Generated assembler â€˜cv.cplxmul.r.div8â€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cplxmul_i
            (uint32_t, uint32_t, uint32_t, uint4_t)
!      Generated assembler â€˜cv.cplxmul.i.div8â€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_cplxconj
            (uint32_t)
!      Generated assembler â€˜cv.cplxconjâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_subrotmj
            (uint32_t, uint32_t, uint4_t)
!      Generated assembler â€˜cv.subrotmjâ€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_subrotmj
            (uint32_t, uint32_t, uint32_t, uint4_t)
!      Generated assembler â€˜cv.subrotmj.div2â€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_subrotmj
            (uint32_t, uint32_t, uint32_t, uint4_t)
!      Generated assembler â€˜cv.subrotmj.div4â€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_subrotmj
            (uint32_t, uint32_t, uint32_t, uint4_t)
!      Generated assembler â€˜cv.subrotmj.div8â€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_add_h (uint32_t,
            uint32_t, uint32_t, uint4_t)
!      Generated assembler â€˜cv.add.div2â€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_add_h (uint32_t,
            uint32_t, uint32_t, uint4_t)
!      Generated assembler â€˜cv.add.div4â€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_add_h (uint32_t,
            uint32_t, uint32_t, uint4_t)
!      Generated assembler â€˜cv.add.div8â€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sub_h (uint32_t,
            uint32_t, uint32_t, uint4_t)
!      Generated assembler â€˜cv.sub.div2â€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sub_h (uint32_t,
            uint32_t, uint32_t, uint4_t)
!      Generated assembler â€˜cv.sub.div4â€™
  
   -- Built-in Function: uint32_t __builtin_riscv_cv_simd_sub_h (uint32_t,
            uint32_t, uint32_t, uint4_t)
!      Generated assembler â€˜cv.sub.div8â€™
  
  
  File: gcc.info,  Node: RX Built-in Functions,  Next: S/390 System z Built-in Functions,  Prev: CORE-V Built-in Functions,  Up: Target Builtins
*************** the C programming language via the use o
*** 62775,62866 ****
  following functions are supported:
  
   -- Built-in Function: void __builtin_rx_brk (void)
!      Generates the 'brk' machine instruction.
  
   -- Built-in Function: void __builtin_rx_clrpsw (int)
!      Generates the 'clrpsw' machine instruction to clear the specified
       bit in the processor status word.
  
   -- Built-in Function: void __builtin_rx_int (int)
!      Generates the 'int' machine instruction to generate an interrupt
       with the specified value.
  
   -- Built-in Function: void __builtin_rx_machi (int, int)
!      Generates the 'machi' machine instruction to add the result of
       multiplying the top 16 bits of the two arguments into the
       accumulator.
  
   -- Built-in Function: void __builtin_rx_maclo (int, int)
!      Generates the 'maclo' machine instruction to add the result of
       multiplying the bottom 16 bits of the two arguments into the
       accumulator.
  
   -- Built-in Function: void __builtin_rx_mulhi (int, int)
!      Generates the 'mulhi' machine instruction to place the result of
       multiplying the top 16 bits of the two arguments into the
       accumulator.
  
   -- Built-in Function: void __builtin_rx_mullo (int, int)
!      Generates the 'mullo' machine instruction to place the result of
       multiplying the bottom 16 bits of the two arguments into the
       accumulator.
  
   -- Built-in Function: int __builtin_rx_mvfachi (void)
!      Generates the 'mvfachi' machine instruction to read the top 32 bits
       of the accumulator.
  
   -- Built-in Function: int __builtin_rx_mvfacmi (void)
!      Generates the 'mvfacmi' machine instruction to read the middle 32
       bits of the accumulator.
  
   -- Built-in Function: int __builtin_rx_mvfc (int)
!      Generates the 'mvfc' machine instruction which reads the control
       register specified in its argument and returns its value.
  
   -- Built-in Function: void __builtin_rx_mvtachi (int)
!      Generates the 'mvtachi' machine instruction to set the top 32 bits
       of the accumulator.
  
   -- Built-in Function: void __builtin_rx_mvtaclo (int)
!      Generates the 'mvtaclo' machine instruction to set the bottom 32
       bits of the accumulator.
  
   -- Built-in Function: void __builtin_rx_mvtc (int REG, int VAL)
!      Generates the 'mvtc' machine instruction which sets control
!      register number 'reg' to 'val'.
  
   -- Built-in Function: void __builtin_rx_mvtipl (int)
!      Generates the 'mvtipl' machine instruction set the interrupt
       priority level.
  
   -- Built-in Function: void __builtin_rx_racw (int)
!      Generates the 'racw' machine instruction to round the accumulator
       according to the specified mode.
  
   -- Built-in Function: int __builtin_rx_revw (int)
!      Generates the 'revw' machine instruction which swaps the bytes in
       the argument so that bits 0-7 now occupy bits 8-15 and vice versa,
       and also bits 16-23 occupy bits 24-31 and vice versa.
  
   -- Built-in Function: void __builtin_rx_rmpa (void)
!      Generates the 'rmpa' machine instruction which initiates a repeated
       multiply and accumulate sequence.
  
   -- Built-in Function: void __builtin_rx_round (float)
!      Generates the 'round' machine instruction which returns the
       floating-point argument rounded according to the current rounding
       mode set in the floating-point status word register.
  
   -- Built-in Function: int __builtin_rx_sat (int)
!      Generates the 'sat' machine instruction which returns the saturated
       value of the argument.
  
   -- Built-in Function: void __builtin_rx_setpsw (int)
!      Generates the 'setpsw' machine instruction to set the specified bit
       in the processor status word.
  
   -- Built-in Function: void __builtin_rx_wait (void)
!      Generates the 'wait' machine instruction.
  
  
  File: gcc.info,  Node: S/390 System z Built-in Functions,  Next: SH Built-in Functions,  Prev: RX Built-in Functions,  Up: Target Builtins
--- 62784,62875 ----
  following functions are supported:
  
   -- Built-in Function: void __builtin_rx_brk (void)
!      Generates the â€˜brkâ€™ machine instruction.
  
   -- Built-in Function: void __builtin_rx_clrpsw (int)
!      Generates the â€˜clrpswâ€™ machine instruction to clear the specified
       bit in the processor status word.
  
   -- Built-in Function: void __builtin_rx_int (int)
!      Generates the â€˜intâ€™ machine instruction to generate an interrupt
       with the specified value.
  
   -- Built-in Function: void __builtin_rx_machi (int, int)
!      Generates the â€˜machiâ€™ machine instruction to add the result of
       multiplying the top 16 bits of the two arguments into the
       accumulator.
  
   -- Built-in Function: void __builtin_rx_maclo (int, int)
!      Generates the â€˜macloâ€™ machine instruction to add the result of
       multiplying the bottom 16 bits of the two arguments into the
       accumulator.
  
   -- Built-in Function: void __builtin_rx_mulhi (int, int)
!      Generates the â€˜mulhiâ€™ machine instruction to place the result of
       multiplying the top 16 bits of the two arguments into the
       accumulator.
  
   -- Built-in Function: void __builtin_rx_mullo (int, int)
!      Generates the â€˜mulloâ€™ machine instruction to place the result of
       multiplying the bottom 16 bits of the two arguments into the
       accumulator.
  
   -- Built-in Function: int __builtin_rx_mvfachi (void)
!      Generates the â€˜mvfachiâ€™ machine instruction to read the top 32 bits
       of the accumulator.
  
   -- Built-in Function: int __builtin_rx_mvfacmi (void)
!      Generates the â€˜mvfacmiâ€™ machine instruction to read the middle 32
       bits of the accumulator.
  
   -- Built-in Function: int __builtin_rx_mvfc (int)
!      Generates the â€˜mvfcâ€™ machine instruction which reads the control
       register specified in its argument and returns its value.
  
   -- Built-in Function: void __builtin_rx_mvtachi (int)
!      Generates the â€˜mvtachiâ€™ machine instruction to set the top 32 bits
       of the accumulator.
  
   -- Built-in Function: void __builtin_rx_mvtaclo (int)
!      Generates the â€˜mvtacloâ€™ machine instruction to set the bottom 32
       bits of the accumulator.
  
   -- Built-in Function: void __builtin_rx_mvtc (int REG, int VAL)
!      Generates the â€˜mvtcâ€™ machine instruction which sets control
!      register number â€˜regâ€™ to â€˜valâ€™.
  
   -- Built-in Function: void __builtin_rx_mvtipl (int)
!      Generates the â€˜mvtiplâ€™ machine instruction set the interrupt
       priority level.
  
   -- Built-in Function: void __builtin_rx_racw (int)
!      Generates the â€˜racwâ€™ machine instruction to round the accumulator
       according to the specified mode.
  
   -- Built-in Function: int __builtin_rx_revw (int)
!      Generates the â€˜revwâ€™ machine instruction which swaps the bytes in
       the argument so that bits 0-7 now occupy bits 8-15 and vice versa,
       and also bits 16-23 occupy bits 24-31 and vice versa.
  
   -- Built-in Function: void __builtin_rx_rmpa (void)
!      Generates the â€˜rmpaâ€™ machine instruction which initiates a repeated
       multiply and accumulate sequence.
  
   -- Built-in Function: void __builtin_rx_round (float)
!      Generates the â€˜roundâ€™ machine instruction which returns the
       floating-point argument rounded according to the current rounding
       mode set in the floating-point status word register.
  
   -- Built-in Function: int __builtin_rx_sat (int)
!      Generates the â€˜satâ€™ machine instruction which returns the saturated
       value of the argument.
  
   -- Built-in Function: void __builtin_rx_setpsw (int)
!      Generates the â€˜setpswâ€™ machine instruction to set the specified bit
       in the processor status word.
  
   -- Built-in Function: void __builtin_rx_wait (void)
!      Generates the â€˜waitâ€™ machine instruction.
  
  
  File: gcc.info,  Node: S/390 System z Built-in Functions,  Next: SH Built-in Functions,  Prev: RX Built-in Functions,  Up: Target Builtins
*************** File: gcc.info,  Node: S/390 System z Bu
*** 62869,62887 ****
  -----------------------------------------
  
   -- Built-in Function: int __builtin_tbegin (void*)
!      Generates the 'tbegin' machine instruction starting a
       non-constrained hardware transaction.  If the parameter is non-NULL
       the memory area is used to store the transaction diagnostic buffer
!      and will be passed as first operand to 'tbegin'.  This buffer can
!      be defined using the 'struct __htm_tdb' C struct defined in
!      'htmintrin.h' and must reside on a double-word boundary.  The
!      second tbegin operand is set to '0xff0c'.  This enables
       save/restore of all GPRs and disables aborts for FPR and AR
       manipulations inside the transaction body.  The condition code set
       by the tbegin instruction is returned as integer value.  The tbegin
       instruction by definition overwrites the content of all FPRs.  The
       compiler will generate code which saves and restores the FPRs.  For
!      soft-float code it is recommended to used the '*_nofloat' variant.
       In order to prevent a TDB from being written it is required to pass
       a constant zero value as parameter.  Passing a zero value through a
       variable is not sufficient.  Although modifications of access
--- 62878,62896 ----
  -----------------------------------------
  
   -- Built-in Function: int __builtin_tbegin (void*)
!      Generates the â€˜tbeginâ€™ machine instruction starting a
       non-constrained hardware transaction.  If the parameter is non-NULL
       the memory area is used to store the transaction diagnostic buffer
!      and will be passed as first operand to â€˜tbeginâ€™.  This buffer can
!      be defined using the â€˜struct __htm_tdbâ€™ C struct defined in
!      â€˜htmintrin.hâ€™ and must reside on a double-word boundary.  The
!      second tbegin operand is set to â€˜0xff0câ€™.  This enables
       save/restore of all GPRs and disables aborts for FPR and AR
       manipulations inside the transaction body.  The condition code set
       by the tbegin instruction is returned as integer value.  The tbegin
       instruction by definition overwrites the content of all FPRs.  The
       compiler will generate code which saves and restores the FPRs.  For
!      soft-float code it is recommended to used the â€˜*_nofloatâ€™ variant.
       In order to prevent a TDB from being written it is required to pass
       a constant zero value as parameter.  Passing a zero value through a
       variable is not sufficient.  Although modifications of access
*************** File: gcc.info,  Node: S/390 System z Bu
*** 62891,62900 ****
       have undefined state when reaching the abort code.
  
   Macros for the possible return codes of tbegin are defined in the
! 'htmintrin.h' header file:
  
   -- Macro: _HTM_TBEGIN_STARTED
!      'tbegin' has been executed as part of normal processing.  The
       transaction body is supposed to be executed.
  
   -- Macro: _HTM_TBEGIN_INDETERMINATE
--- 62900,62909 ----
       have undefined state when reaching the abort code.
  
   Macros for the possible return codes of tbegin are defined in the
! â€˜htmintrin.hâ€™ header file:
  
   -- Macro: _HTM_TBEGIN_STARTED
!      â€˜tbeginâ€™ has been executed as part of normal processing.  The
       transaction body is supposed to be executed.
  
   -- Macro: _HTM_TBEGIN_INDETERMINATE
*************** File: gcc.info,  Node: S/390 System z Bu
*** 62910,62972 ****
       under same circumstances will not be productive.
  
   -- Macro: _HTM_FIRST_USER_ABORT_CODE
!      The '_HTM_FIRST_USER_ABORT_CODE' defined in 'htmintrin.h' specifies
!      the first abort code which can be used for '__builtin_tabort'.
       Values below this threshold are reserved for machine use.
  
   -- Data type: struct __htm_tdb
!      The 'struct __htm_tdb' defined in 'htmintrin.h' describes the
       structure of the transaction diagnostic block as specified in the
       Principles of Operation manual chapter 5-91.
  
   -- Built-in Function: int __builtin_tbegin_nofloat (void*)
!      Same as '__builtin_tbegin' but without FPR saves and restores.
       Using this variant in code making use of FPRs will leave the FPRs
       in undefined state when entering the transaction abort handler
       code.
  
   -- Built-in Function: int __builtin_tbegin_retry (void*, int)
!      In addition to '__builtin_tbegin' a loop for transient failures is
       generated.  If tbegin returns a condition code of 2 the transaction
       will be retried as often as specified in the second argument.  The
       perform processor assist instruction is used to tell the CPU about
       the number of fails so far.
  
   -- Built-in Function: int __builtin_tbegin_retry_nofloat (void*, int)
!      Same as '__builtin_tbegin_retry' but without FPR saves and
       restores.  Using this variant in code making use of FPRs will leave
       the FPRs in undefined state when entering the transaction abort
       handler code.
  
   -- Built-in Function: void __builtin_tbeginc (void)
!      Generates the 'tbeginc' machine instruction starting a constrained
!      hardware transaction.  The second operand is set to '0xff08'.
  
   -- Built-in Function: int __builtin_tend (void)
!      Generates the 'tend' machine instruction finishing a transaction
       and making the changes visible to other threads.  The condition
       code generated by tend is returned as integer value.
  
   -- Built-in Function: void __builtin_tabort (int)
!      Generates the 'tabort' machine instruction with the specified abort
       code.  Abort codes from 0 through 255 are reserved and will result
       in an error message.
  
   -- Built-in Function: void __builtin_tx_assist (int)
!      Generates the 'ppa rX,rY,1' machine instruction.  Where the integer
       parameter is loaded into rX and a value of zero is loaded into rY.
       The integer parameter specifies the number of times the transaction
       repeatedly aborted.
  
   -- Built-in Function: int __builtin_tx_nesting_depth (void)
!      Generates the 'etnd' machine instruction.  The current nesting
       depth is returned as integer value.  For a nesting depth of 0 the
       code is not executed as part of an transaction.
  
   -- Built-in Function: void __builtin_non_tx_store (uint64_t *,
            uint64_t)
  
!      Generates the 'ntstg' machine instruction.  The second argument is
       written to the first arguments location.  The store operation will
       not be rolled-back in case of an transaction abort.
  
--- 62919,62981 ----
       under same circumstances will not be productive.
  
   -- Macro: _HTM_FIRST_USER_ABORT_CODE
!      The â€˜_HTM_FIRST_USER_ABORT_CODEâ€™ defined in â€˜htmintrin.hâ€™ specifies
!      the first abort code which can be used for â€˜__builtin_tabortâ€™.
       Values below this threshold are reserved for machine use.
  
   -- Data type: struct __htm_tdb
!      The â€˜struct __htm_tdbâ€™ defined in â€˜htmintrin.hâ€™ describes the
       structure of the transaction diagnostic block as specified in the
       Principles of Operation manual chapter 5-91.
  
   -- Built-in Function: int __builtin_tbegin_nofloat (void*)
!      Same as â€˜__builtin_tbeginâ€™ but without FPR saves and restores.
       Using this variant in code making use of FPRs will leave the FPRs
       in undefined state when entering the transaction abort handler
       code.
  
   -- Built-in Function: int __builtin_tbegin_retry (void*, int)
!      In addition to â€˜__builtin_tbeginâ€™ a loop for transient failures is
       generated.  If tbegin returns a condition code of 2 the transaction
       will be retried as often as specified in the second argument.  The
       perform processor assist instruction is used to tell the CPU about
       the number of fails so far.
  
   -- Built-in Function: int __builtin_tbegin_retry_nofloat (void*, int)
!      Same as â€˜__builtin_tbegin_retryâ€™ but without FPR saves and
       restores.  Using this variant in code making use of FPRs will leave
       the FPRs in undefined state when entering the transaction abort
       handler code.
  
   -- Built-in Function: void __builtin_tbeginc (void)
!      Generates the â€˜tbegincâ€™ machine instruction starting a constrained
!      hardware transaction.  The second operand is set to â€˜0xff08â€™.
  
   -- Built-in Function: int __builtin_tend (void)
!      Generates the â€˜tendâ€™ machine instruction finishing a transaction
       and making the changes visible to other threads.  The condition
       code generated by tend is returned as integer value.
  
   -- Built-in Function: void __builtin_tabort (int)
!      Generates the â€˜tabortâ€™ machine instruction with the specified abort
       code.  Abort codes from 0 through 255 are reserved and will result
       in an error message.
  
   -- Built-in Function: void __builtin_tx_assist (int)
!      Generates the â€˜ppa rX,rY,1â€™ machine instruction.  Where the integer
       parameter is loaded into rX and a value of zero is loaded into rY.
       The integer parameter specifies the number of times the transaction
       repeatedly aborted.
  
   -- Built-in Function: int __builtin_tx_nesting_depth (void)
!      Generates the â€˜etndâ€™ machine instruction.  The current nesting
       depth is returned as integer value.  For a nesting depth of 0 the
       code is not executed as part of an transaction.
  
   -- Built-in Function: void __builtin_non_tx_store (uint64_t *,
            uint64_t)
  
!      Generates the â€˜ntstgâ€™ machine instruction.  The second argument is
       written to the first arguments location.  The store operation will
       not be rolled-back in case of an transaction abort.
  
*************** The following built-in functions are sup
*** 62980,62997 ****
  SH4 families of processors:
  
   -- Built-in Function: void __builtin_set_thread_pointer (void *PTR)
!      Sets the 'GBR' register to the specified value PTR.  This is
       usually used by system code that manages threads and execution
       contexts.  The compiler normally does not generate code that
!      modifies the contents of 'GBR' and thus the value is preserved
!      across function calls.  Changing the 'GBR' value in user code must
!      be done with caution, since the compiler might use 'GBR' in order
       to access thread local variables.
  
   -- Built-in Function: void * __builtin_thread_pointer (void)
!      Returns the value that is currently set in the 'GBR' register.
       Memory loads and stores that use the thread pointer as a base
!      address are turned into 'GBR' based displacement loads and stores,
       if possible.  For example:
            struct my_tcb
            {
--- 62989,63006 ----
  SH4 families of processors:
  
   -- Built-in Function: void __builtin_set_thread_pointer (void *PTR)
!      Sets the â€˜GBRâ€™ register to the specified value PTR.  This is
       usually used by system code that manages threads and execution
       contexts.  The compiler normally does not generate code that
!      modifies the contents of â€˜GBRâ€™ and thus the value is preserved
!      across function calls.  Changing the â€˜GBRâ€™ value in user code must
!      be done with caution, since the compiler might use â€˜GBRâ€™ in order
       to access thread local variables.
  
   -- Built-in Function: void * __builtin_thread_pointer (void)
!      Returns the value that is currently set in the â€˜GBRâ€™ register.
       Memory loads and stores that use the thread pointer as a base
!      address are turned into â€˜GBRâ€™ based displacement loads and stores,
       if possible.  For example:
            struct my_tcb
            {
*************** SH4 families of processors:
*** 63000,63015 ****
  
            int get_tcb_value (void)
            {
!             // Generate 'mov.l @(8,gbr),r0' instruction
              return ((my_tcb*)__builtin_thread_pointer ())->c;
            }
  
  
   -- Built-in Function: unsigned int __builtin_sh_get_fpscr (void)
!      Returns the value that is currently set in the 'FPSCR' register.
  
   -- Built-in Function: void __builtin_sh_set_fpscr (unsigned int VAL)
!      Sets the 'FPSCR' register to the specified value VAL, while
       preserving the current values of the FR, SZ and PR bits.
  
  
--- 63009,63024 ----
  
            int get_tcb_value (void)
            {
!             // Generate â€˜mov.l @(8,gbr),r0â€™ instruction
              return ((my_tcb*)__builtin_thread_pointer ())->c;
            }
  
  
   -- Built-in Function: unsigned int __builtin_sh_get_fpscr (void)
!      Returns the value that is currently set in the â€˜FPSCRâ€™ register.
  
   -- Built-in Function: void __builtin_sh_set_fpscr (unsigned int VAL)
!      Sets the â€˜FPSCRâ€™ register to the specified value VAL, while
       preserving the current values of the FR, SZ and PR bits.
  
  
*************** File: gcc.info,  Node: SPARC VIS Built-i
*** 63020,63026 ****
  
  GCC supports SIMD operations on the SPARC using both the generic vector
  extensions (*note Vector Extensions::) as well as built-in functions for
! the SPARC Visual Instruction Set (VIS). When you use the '-mvis' switch,
  the VIS extension is exposed as the following built-in functions:
  
       typedef int v1si __attribute__ ((vector_size (4)));
--- 63029,63035 ----
  
  GCC supports SIMD operations on the SPARC using both the generic vector
  extensions (*note Vector Extensions::) as well as built-in functions for
! the SPARC Visual Instruction Set (VIS). When you use the â€˜-mvisâ€™ switch,
  the VIS extension is exposed as the following built-in functions:
  
       typedef int v1si __attribute__ ((vector_size (4)));
*************** the VIS extension is exposed as the foll
*** 63086,63092 ****
       long __builtin_vis_array16 (long, long);
       long __builtin_vis_array32 (long, long);
  
!  When you use the '-mvis2' switch, the VIS version 2.0 built-in
  functions also become available:
  
       long __builtin_vis_bmask (long, long);
--- 63095,63101 ----
       long __builtin_vis_array16 (long, long);
       long __builtin_vis_array32 (long, long);
  
!  When you use the â€˜-mvis2â€™ switch, the VIS version 2.0 built-in
  functions also become available:
  
       long __builtin_vis_bmask (long, long);
*************** functions also become available:
*** 63102,63108 ****
       long __builtin_vis_edge32n (void *, void *);
       long __builtin_vis_edge32ln (void *, void *);
  
!  When you use the '-mvis3' switch, the VIS version 3.0 built-in
  functions also become available:
  
       void __builtin_vis_cmask8 (long);
--- 63111,63117 ----
       long __builtin_vis_edge32n (void *, void *);
       long __builtin_vis_edge32ln (void *, void *);
  
!  When you use the â€˜-mvis3â€™ switch, the VIS version 3.0 built-in
  functions also become available:
  
       void __builtin_vis_cmask8 (long);
*************** functions also become available:
*** 63152,63158 ****
       int64_t __builtin_vis_xmulx (int64_t, int64_t);
       int64_t __builtin_vis_xmulxhi (int64_t, int64_t);
  
!  When you use the '-mvis4' switch, the VIS version 4.0 built-in
  functions also become available:
  
       v8qi __builtin_vis_fpadd8 (v8qi, v8qi);
--- 63161,63167 ----
       int64_t __builtin_vis_xmulx (int64_t, int64_t);
       int64_t __builtin_vis_xmulxhi (int64_t, int64_t);
  
!  When you use the â€˜-mvis4â€™ switch, the VIS version 4.0 built-in
  functions also become available:
  
       v8qi __builtin_vis_fpadd8 (v8qi, v8qi);
*************** functions also become available:
*** 63188,63194 ****
       v4hi __builtin_vis_fpminu16 (v4hi, v4hi);
       v2si __builtin_vis_fpminu32 (v2si, v2si);
  
!  When you use the '-mvis4b' switch, the VIS version 4.0B built-in
  functions also become available:
  
       v8qi __builtin_vis_dictunpack8 (double, int);
--- 63197,63203 ----
       v4hi __builtin_vis_fpminu16 (v4hi, v4hi);
       v2si __builtin_vis_fpminu32 (v2si, v2si);
  
!  When you use the â€˜-mvis4bâ€™ switch, the VIS version 4.0B built-in
  functions also become available:
  
       v8qi __builtin_vis_dictunpack8 (double, int);
*************** File: gcc.info,  Node: TI C6X Built-in F
*** 63233,63239 ****
  
  GCC provides intrinsics to access certain instructions of the TI C6X
  processors.  These intrinsics, listed below, are available after
! inclusion of the 'c6x_intrinsics.h' header file.  They map directly to
  C6X instructions.
  
       int _sadd (int, int);
--- 63242,63248 ----
  
  GCC provides intrinsics to access certain instructions of the TI C6X
  processors.  These intrinsics, listed below, are available after
! inclusion of the â€˜c6x_intrinsics.hâ€™ header file.  They map directly to
  C6X instructions.
  
       int _sadd (int, int);
*************** File: gcc.info,  Node: x86 Built-in Func
*** 63272,63278 ****
  These built-in functions are available for the x86-32 and x86-64 family
  of computers, depending on the command-line switches used.
  
!  If you specify command-line switches such as '-msse', the compiler
  could use the extended instruction sets even if the built-ins are not
  used explicitly in the program.  For this reason, applications that
  perform run-time CPU detection must compile separate files for each
--- 63281,63287 ----
  These built-in functions are available for the x86-32 and x86-64 family
  of computers, depending on the command-line switches used.
  
!  If you specify command-line switches such as â€˜-msseâ€™, the compiler
  could use the extended instruction sets even if the built-ins are not
  used explicitly in the program.  For this reason, applications that
  perform run-time CPU detection must compile separate files for each
*************** file containing the CPU detection code s
*** 63281,63304 ****
  options.
  
   The following machine modes are available for use with MMX built-in
! functions (*note Vector Extensions::): 'V2SI' for a vector of two 32-bit
! integers, 'V4HI' for a vector of four 16-bit integers, and 'V8QI' for a
  vector of eight 8-bit integers.  Some of the built-in functions operate
! on MMX registers as a whole 64-bit entity, these use 'V1DI' as their
  mode.
  
!  If 3DNow! extensions are enabled, 'V2SF' is used as a mode for a vector
  of two 32-bit floating-point values.
  
!  If SSE extensions are enabled, 'V4SF' is used for a vector of four
  32-bit floating-point values.  Some instructions use a vector of four
! 32-bit integers, these use 'V4SI'.  Finally, some instructions operate
  on an entire vector register, interpreting it as a 128-bit integer,
! these use mode 'TI'.
  
   The x86-32 and x86-64 family of processors use additional built-in
! functions for efficient use of 'TF' ('__float128') 128-bit floating
! point and 'TC' 128-bit complex floating-point values.
  
   The following floating-point built-in functions are always available:
  
--- 63290,63313 ----
  options.
  
   The following machine modes are available for use with MMX built-in
! functions (*note Vector Extensions::): â€˜V2SIâ€™ for a vector of two 32-bit
! integers, â€˜V4HIâ€™ for a vector of four 16-bit integers, and â€˜V8QIâ€™ for a
  vector of eight 8-bit integers.  Some of the built-in functions operate
! on MMX registers as a whole 64-bit entity, these use â€˜V1DIâ€™ as their
  mode.
  
!  If 3DNow! extensions are enabled, â€˜V2SFâ€™ is used as a mode for a vector
  of two 32-bit floating-point values.
  
!  If SSE extensions are enabled, â€˜V4SFâ€™ is used for a vector of four
  32-bit floating-point values.  Some instructions use a vector of four
! 32-bit integers, these use â€˜V4SIâ€™.  Finally, some instructions operate
  on an entire vector register, interpreting it as a 128-bit integer,
! these use mode â€˜TIâ€™.
  
   The x86-32 and x86-64 family of processors use additional built-in
! functions for efficient use of â€˜TFâ€™ (â€˜__float128â€™) 128-bit floating
! point and â€˜TCâ€™ 128-bit complex floating-point values.
  
   The following floating-point built-in functions are always available:
  
*************** point and 'TC' 128-bit complex floating-
*** 63310,63332 ****
       Copies the sign of Y into X and returns the new value of X.
  
   -- Built-in Function: __float128 __builtin_infq (void)
!      Similar to '__builtin_inf', except the return type is '__float128'.
  
   -- Built-in Function: __float128 __builtin_huge_valq (void)
!      Similar to '__builtin_huge_val', except the return type is
!      '__float128'.
  
   -- Built-in Function: __float128 __builtin_nanq (void)
!      Similar to '__builtin_nan', except the return type is '__float128'.
  
   -- Built-in Function: __float128 __builtin_nansq (void)
!      Similar to '__builtin_nans', except the return type is
!      '__float128'.
  
   The following built-in function is always available.
  
   -- Built-in Function: void __builtin_ia32_pause (void)
!      Generates the 'pause' machine instruction with a compiler memory
       barrier.
  
   The following built-in functions are always available and can be used
--- 63319,63341 ----
       Copies the sign of Y into X and returns the new value of X.
  
   -- Built-in Function: __float128 __builtin_infq (void)
!      Similar to â€˜__builtin_infâ€™, except the return type is â€˜__float128â€™.
  
   -- Built-in Function: __float128 __builtin_huge_valq (void)
!      Similar to â€˜__builtin_huge_valâ€™, except the return type is
!      â€˜__float128â€™.
  
   -- Built-in Function: __float128 __builtin_nanq (void)
!      Similar to â€˜__builtin_nanâ€™, except the return type is â€˜__float128â€™.
  
   -- Built-in Function: __float128 __builtin_nansq (void)
!      Similar to â€˜__builtin_nansâ€™, except the return type is
!      â€˜__float128â€™.
  
   The following built-in function is always available.
  
   -- Built-in Function: void __builtin_ia32_pause (void)
!      Generates the â€˜pauseâ€™ machine instruction with a compiler memory
       barrier.
  
   The following built-in functions are always available and can be used
*************** to check the target platform type.
*** 63336,63349 ****
       This function runs the CPU detection code to check the type of CPU
       and the features supported.  This built-in function needs to be
       invoked along with the built-in functions to check CPU type and
!      features, '__builtin_cpu_is' and '__builtin_cpu_supports', only
       when used in a function that is executed before any constructors
       are called.  The CPU detection code is automatically executed in a
       very high priority constructor.
  
!      For example, this function has to be used in 'ifunc' resolvers that
!      check for CPU type using the built-in functions '__builtin_cpu_is'
!      and '__builtin_cpu_supports', or in constructors on targets that
       don't support constructor priority.
  
            static void (*resolve_memcpy (void)) (void)
--- 63345,63358 ----
       This function runs the CPU detection code to check the type of CPU
       and the features supported.  This built-in function needs to be
       invoked along with the built-in functions to check CPU type and
!      features, â€˜__builtin_cpu_isâ€™ and â€˜__builtin_cpu_supportsâ€™, only
       when used in a function that is executed before any constructors
       are called.  The CPU detection code is automatically executed in a
       very high priority constructor.
  
!      For example, this function has to be used in â€˜ifuncâ€™ resolvers that
!      check for CPU type using the built-in functions â€˜__builtin_cpu_isâ€™
!      and â€˜__builtin_cpu_supportsâ€™, or in constructors on targets that
       don't support constructor priority.
  
            static void (*resolve_memcpy (void)) (void)
*************** to check the target platform type.
*** 63362,63542 ****
  
   -- Built-in Function: int __builtin_cpu_is (const char *CPUNAME)
       This function returns a positive integer if the run-time CPU is of
!      type CPUNAME and returns '0' otherwise.  The following CPU names
       can be detected:
  
!      'amd'
            AMD CPU.
  
!      'intel'
            Intel CPU.
  
!      'atom'
            Intel Atom CPU.
  
!      'slm'
            Intel Silvermont CPU.
  
!      'core2'
            Intel Core 2 CPU.
  
!      'corei7'
            Intel Core i7 CPU.
  
!      'nehalem'
            Intel Core i7 Nehalem CPU.
  
!      'westmere'
            Intel Core i7 Westmere CPU.
  
!      'sandybridge'
            Intel Core i7 Sandy Bridge CPU.
  
!      'ivybridge'
            Intel Core i7 Ivy Bridge CPU.
  
!      'haswell'
            Intel Core i7 Haswell CPU.
  
!      'broadwell'
            Intel Core i7 Broadwell CPU.
  
!      'skylake'
            Intel Core i7 Skylake CPU.
  
!      'skylake-avx512'
            Intel Core i7 Skylake AVX512 CPU.
  
!      'cannonlake'
            Intel Core i7 Cannon Lake CPU.
  
!      'icelake-client'
            Intel Core i7 Ice Lake Client CPU.
  
!      'icelake-server'
            Intel Core i7 Ice Lake Server CPU.
  
!      'cascadelake'
            Intel Core i7 Cascadelake CPU.
  
!      'tigerlake'
            Intel Core i7 Tigerlake CPU.
  
!      'cooperlake'
            Intel Core i7 Cooperlake CPU.
  
!      'sapphirerapids'
            Intel Core i7 sapphirerapids CPU.
  
!      'alderlake'
            Intel Core i7 Alderlake CPU.
  
!      'rocketlake'
            Intel Core i7 Rocketlake CPU.
  
!      'graniterapids'
            Intel Core i7 graniterapids CPU.
  
!      'graniterapids-d'
            Intel Core i7 graniterapids D CPU.
  
!      'arrowlake'
            Intel Core i7 Arrow Lake CPU.
  
!      'arrowlake-s'
            Intel Core i7 Arrow Lake S CPU.
  
!      'pantherlake'
            Intel Core i7 Panther Lake CPU.
  
!      'diamondrapids'
            Intel Core i7 Diamond Rapids CPU.
  
!      'bonnell'
            Intel Atom Bonnell CPU.
  
!      'silvermont'
            Intel Atom Silvermont CPU.
  
!      'goldmont'
            Intel Atom Goldmont CPU.
  
!      'goldmont-plus'
            Intel Atom Goldmont Plus CPU.
  
!      'tremont'
            Intel Atom Tremont CPU.
  
!      'sierraforest'
            Intel Atom Sierra Forest CPU.
  
!      'grandridge'
            Intel Atom Grand Ridge CPU.
  
!      'clearwaterforest'
            Intel Atom Clearwater Forest CPU.
  
!      'lujiazui'
            ZHAOXIN lujiazui CPU.
  
!      'yongfeng'
            ZHAOXIN yongfeng CPU.
  
!      'shijidadao'
            ZHAOXIN shijidadao CPU.
  
!      'amdfam10h'
            AMD Family 10h CPU.
  
!      'barcelona'
            AMD Family 10h Barcelona CPU.
  
!      'shanghai'
            AMD Family 10h Shanghai CPU.
  
!      'istanbul'
            AMD Family 10h Istanbul CPU.
  
!      'btver1'
            AMD Family 14h CPU.
  
!      'amdfam15h'
            AMD Family 15h CPU.
  
!      'bdver1'
            AMD Family 15h Bulldozer version 1.
  
!      'bdver2'
            AMD Family 15h Bulldozer version 2.
  
!      'bdver3'
            AMD Family 15h Bulldozer version 3.
  
!      'bdver4'
            AMD Family 15h Bulldozer version 4.
  
!      'btver2'
            AMD Family 16h CPU.
  
!      'amdfam17h'
            AMD Family 17h CPU.
  
!      'znver1'
            AMD Family 17h Zen version 1.
  
!      'znver2'
            AMD Family 17h Zen version 2.
  
!      'amdfam19h'
            AMD Family 19h CPU.
  
!      'znver3'
            AMD Family 19h Zen version 3.
  
!      'znver4'
            AMD Family 19h Zen version 4.
  
!      'znver5'
            AMD Family 1ah Zen version 5.
  
       Here is an example:
--- 63371,63551 ----
  
   -- Built-in Function: int __builtin_cpu_is (const char *CPUNAME)
       This function returns a positive integer if the run-time CPU is of
!      type CPUNAME and returns â€˜0â€™ otherwise.  The following CPU names
       can be detected:
  
!      â€˜amdâ€™
            AMD CPU.
  
!      â€˜intelâ€™
            Intel CPU.
  
!      â€˜atomâ€™
            Intel Atom CPU.
  
!      â€˜slmâ€™
            Intel Silvermont CPU.
  
!      â€˜core2â€™
            Intel Core 2 CPU.
  
!      â€˜corei7â€™
            Intel Core i7 CPU.
  
!      â€˜nehalemâ€™
            Intel Core i7 Nehalem CPU.
  
!      â€˜westmereâ€™
            Intel Core i7 Westmere CPU.
  
!      â€˜sandybridgeâ€™
            Intel Core i7 Sandy Bridge CPU.
  
!      â€˜ivybridgeâ€™
            Intel Core i7 Ivy Bridge CPU.
  
!      â€˜haswellâ€™
            Intel Core i7 Haswell CPU.
  
!      â€˜broadwellâ€™
            Intel Core i7 Broadwell CPU.
  
!      â€˜skylakeâ€™
            Intel Core i7 Skylake CPU.
  
!      â€˜skylake-avx512â€™
            Intel Core i7 Skylake AVX512 CPU.
  
!      â€˜cannonlakeâ€™
            Intel Core i7 Cannon Lake CPU.
  
!      â€˜icelake-clientâ€™
            Intel Core i7 Ice Lake Client CPU.
  
!      â€˜icelake-serverâ€™
            Intel Core i7 Ice Lake Server CPU.
  
!      â€˜cascadelakeâ€™
            Intel Core i7 Cascadelake CPU.
  
!      â€˜tigerlakeâ€™
            Intel Core i7 Tigerlake CPU.
  
!      â€˜cooperlakeâ€™
            Intel Core i7 Cooperlake CPU.
  
!      â€˜sapphirerapidsâ€™
            Intel Core i7 sapphirerapids CPU.
  
!      â€˜alderlakeâ€™
            Intel Core i7 Alderlake CPU.
  
!      â€˜rocketlakeâ€™
            Intel Core i7 Rocketlake CPU.
  
!      â€˜graniterapidsâ€™
            Intel Core i7 graniterapids CPU.
  
!      â€˜graniterapids-dâ€™
            Intel Core i7 graniterapids D CPU.
  
!      â€˜arrowlakeâ€™
            Intel Core i7 Arrow Lake CPU.
  
!      â€˜arrowlake-sâ€™
            Intel Core i7 Arrow Lake S CPU.
  
!      â€˜pantherlakeâ€™
            Intel Core i7 Panther Lake CPU.
  
!      â€˜diamondrapidsâ€™
            Intel Core i7 Diamond Rapids CPU.
  
!      â€˜bonnellâ€™
            Intel Atom Bonnell CPU.
  
!      â€˜silvermontâ€™
            Intel Atom Silvermont CPU.
  
!      â€˜goldmontâ€™
            Intel Atom Goldmont CPU.
  
!      â€˜goldmont-plusâ€™
            Intel Atom Goldmont Plus CPU.
  
!      â€˜tremontâ€™
            Intel Atom Tremont CPU.
  
!      â€˜sierraforestâ€™
            Intel Atom Sierra Forest CPU.
  
!      â€˜grandridgeâ€™
            Intel Atom Grand Ridge CPU.
  
!      â€˜clearwaterforestâ€™
            Intel Atom Clearwater Forest CPU.
  
!      â€˜lujiazuiâ€™
            ZHAOXIN lujiazui CPU.
  
!      â€˜yongfengâ€™
            ZHAOXIN yongfeng CPU.
  
!      â€˜shijidadaoâ€™
            ZHAOXIN shijidadao CPU.
  
!      â€˜amdfam10hâ€™
            AMD Family 10h CPU.
  
!      â€˜barcelonaâ€™
            AMD Family 10h Barcelona CPU.
  
!      â€˜shanghaiâ€™
            AMD Family 10h Shanghai CPU.
  
!      â€˜istanbulâ€™
            AMD Family 10h Istanbul CPU.
  
!      â€˜btver1â€™
            AMD Family 14h CPU.
  
!      â€˜amdfam15hâ€™
            AMD Family 15h CPU.
  
!      â€˜bdver1â€™
            AMD Family 15h Bulldozer version 1.
  
!      â€˜bdver2â€™
            AMD Family 15h Bulldozer version 2.
  
!      â€˜bdver3â€™
            AMD Family 15h Bulldozer version 3.
  
!      â€˜bdver4â€™
            AMD Family 15h Bulldozer version 4.
  
!      â€˜btver2â€™
            AMD Family 16h CPU.
  
!      â€˜amdfam17hâ€™
            AMD Family 17h CPU.
  
!      â€˜znver1â€™
            AMD Family 17h Zen version 1.
  
!      â€˜znver2â€™
            AMD Family 17h Zen version 2.
  
!      â€˜amdfam19hâ€™
            AMD Family 19h CPU.
  
!      â€˜znver3â€™
            AMD Family 19h Zen version 3.
  
!      â€˜znver4â€™
            AMD Family 19h Zen version 4.
  
!      â€˜znver5â€™
            AMD Family 1ah Zen version 5.
  
       Here is an example:
*************** to check the target platform type.
*** 63551,63631 ****
  
   -- Built-in Function: int __builtin_cpu_supports (const char *FEATURE)
       This function returns a positive integer if the run-time CPU
!      supports FEATURE and returns '0' otherwise.  The following features
       can be detected:
  
!      'cmov'
            CMOV instruction.
!      'mmx'
            MMX instructions.
!      'popcnt'
            POPCNT instruction.
!      'sse'
            SSE instructions.
!      'sse2'
            SSE2 instructions.
!      'sse3'
            SSE3 instructions.
!      'ssse3'
            SSSE3 instructions.
!      'sse4.1'
            SSE4.1 instructions.
!      'sse4.2'
            SSE4.2 instructions.
!      'avx'
            AVX instructions.
!      'avx2'
            AVX2 instructions.
!      'sse4a'
            SSE4A instructions.
!      'fma4'
            FMA4 instructions.
!      'xop'
            XOP instructions.
!      'fma'
            FMA instructions.
!      'avx512f'
            AVX512F instructions.
!      'bmi'
            BMI instructions.
!      'bmi2'
            BMI2 instructions.
!      'aes'
            AES instructions.
!      'pclmul'
            PCLMUL instructions.
!      'avx512vl'
            AVX512VL instructions.
!      'avx512bw'
            AVX512BW instructions.
!      'avx512dq'
            AVX512DQ instructions.
!      'avx512cd'
            AVX512CD instructions.
!      'avx512vbmi'
            AVX512VBMI instructions.
!      'avx512ifma'
            AVX512IFMA instructions.
!      'avx512vpopcntdq'
            AVX512VPOPCNTDQ instructions.
!      'avx512vbmi2'
            AVX512VBMI2 instructions.
!      'gfni'
            GFNI instructions.
!      'vpclmulqdq'
            VPCLMULQDQ instructions.
!      'avx512vnni'
            AVX512VNNI instructions.
!      'avx512bitalg'
            AVX512BITALG instructions.
!      'x86-64'
            Baseline x86-64 microarchitecture level (as defined in x86-64
            psABI).
!      'x86-64-v2'
            x86-64-v2 microarchitecture level.
!      'x86-64-v3'
            x86-64-v3 microarchitecture level.
!      'x86-64-v4'
            x86-64-v4 microarchitecture level.
  
       Here is an example:
--- 63560,63640 ----
  
   -- Built-in Function: int __builtin_cpu_supports (const char *FEATURE)
       This function returns a positive integer if the run-time CPU
!      supports FEATURE and returns â€˜0â€™ otherwise.  The following features
       can be detected:
  
!      â€˜cmovâ€™
            CMOV instruction.
!      â€˜mmxâ€™
            MMX instructions.
!      â€˜popcntâ€™
            POPCNT instruction.
!      â€˜sseâ€™
            SSE instructions.
!      â€˜sse2â€™
            SSE2 instructions.
!      â€˜sse3â€™
            SSE3 instructions.
!      â€˜ssse3â€™
            SSSE3 instructions.
!      â€˜sse4.1â€™
            SSE4.1 instructions.
!      â€˜sse4.2â€™
            SSE4.2 instructions.
!      â€˜avxâ€™
            AVX instructions.
!      â€˜avx2â€™
            AVX2 instructions.
!      â€˜sse4aâ€™
            SSE4A instructions.
!      â€˜fma4â€™
            FMA4 instructions.
!      â€˜xopâ€™
            XOP instructions.
!      â€˜fmaâ€™
            FMA instructions.
!      â€˜avx512fâ€™
            AVX512F instructions.
!      â€˜bmiâ€™
            BMI instructions.
!      â€˜bmi2â€™
            BMI2 instructions.
!      â€˜aesâ€™
            AES instructions.
!      â€˜pclmulâ€™
            PCLMUL instructions.
!      â€˜avx512vlâ€™
            AVX512VL instructions.
!      â€˜avx512bwâ€™
            AVX512BW instructions.
!      â€˜avx512dqâ€™
            AVX512DQ instructions.
!      â€˜avx512cdâ€™
            AVX512CD instructions.
!      â€˜avx512vbmiâ€™
            AVX512VBMI instructions.
!      â€˜avx512ifmaâ€™
            AVX512IFMA instructions.
!      â€˜avx512vpopcntdqâ€™
            AVX512VPOPCNTDQ instructions.
!      â€˜avx512vbmi2â€™
            AVX512VBMI2 instructions.
!      â€˜gfniâ€™
            GFNI instructions.
!      â€˜vpclmulqdqâ€™
            VPCLMULQDQ instructions.
!      â€˜avx512vnniâ€™
            AVX512VNNI instructions.
!      â€˜avx512bitalgâ€™
            AVX512BITALG instructions.
!      â€˜x86-64â€™
            Baseline x86-64 microarchitecture level (as defined in x86-64
            psABI).
!      â€˜x86-64-v2â€™
            x86-64-v2 microarchitecture level.
!      â€˜x86-64-v3â€™
            x86-64-v3 microarchitecture level.
!      â€˜x86-64-v4â€™
            x86-64-v4 microarchitecture level.
  
       Here is an example:
*************** to check the target platform type.
*** 63638,63644 ****
                 count = generic_countbits (n); //generic implementation.
              }
  
!  The following built-in functions are made available by '-mmmx'.  All of
  them generate the machine instruction that is part of the name.
  
       v8qi __builtin_ia32_paddb (v8qi, v8qi);
--- 63647,63653 ----
                 count = generic_countbits (n); //generic implementation.
              }
  
!  The following built-in functions are made available by â€˜-mmmxâ€™.  All of
  them generate the machine instruction that is part of the name.
  
       v8qi __builtin_ia32_paddb (v8qi, v8qi);
*************** them generate the machine instruction th
*** 63695,63701 ****
       v2si __builtin_ia32_psradi (v2si, int);
  
   The following built-in functions are made available either with
! '-msse', or with '-m3dnowa'.  All of them generate the machine
  instruction that is part of the name.
  
       v4hi __builtin_ia32_pmulhuw (v4hi, v4hi);
--- 63704,63710 ----
       v2si __builtin_ia32_psradi (v2si, int);
  
   The following built-in functions are made available either with
! â€˜-msseâ€™, or with â€˜-m3dnowaâ€™.  All of them generate the machine
  instruction that is part of the name.
  
       v4hi __builtin_ia32_pmulhuw (v4hi, v4hi);
*************** instruction that is part of the name.
*** 63711,63717 ****
       void __builtin_ia32_movntq (di *, di);
       void __builtin_ia32_sfence (void);
  
!  The following built-in functions are available when '-msse' is used.
  All of them generate the machine instruction that is part of the name.
  
       int __builtin_ia32_comieq (v4sf, v4sf);
--- 63720,63726 ----
       void __builtin_ia32_movntq (di *, di);
       void __builtin_ia32_sfence (void);
  
!  The following built-in functions are available when â€˜-msseâ€™ is used.
  All of them generate the machine instruction that is part of the name.
  
       int __builtin_ia32_comieq (v4sf, v4sf);
*************** All of them generate the machine instruc
*** 63783,63812 ****
       void __builtin_ia32_movntps (float *, v4sf);
       int __builtin_ia32_movmskps (v4sf);
  
!  The following built-in functions are available when '-msse' is used.
  
   -- Built-in Function: v4sf __builtin_ia32_loadups (float *)
!      Generates the 'movups' machine instruction as a load from memory.
  
   -- Built-in Function: void __builtin_ia32_storeups (float *, v4sf)
!      Generates the 'movups' machine instruction as a store to memory.
  
   -- Built-in Function: v4sf __builtin_ia32_loadss (float *)
!      Generates the 'movss' machine instruction as a load from memory.
  
   -- Built-in Function: v4sf __builtin_ia32_loadhps (v4sf, const v2sf *)
!      Generates the 'movhps' machine instruction as a load from memory.
  
   -- Built-in Function: v4sf __builtin_ia32_loadlps (v4sf, const v2sf *)
!      Generates the 'movlps' machine instruction as a load from memory
  
   -- Built-in Function: void __builtin_ia32_storehps (v2sf *, v4sf)
!      Generates the 'movhps' machine instruction as a store to memory.
  
   -- Built-in Function: void __builtin_ia32_storelps (v2sf *, v4sf)
!      Generates the 'movlps' machine instruction as a store to memory.
  
!  The following built-in functions are available when '-msse2' is used.
  All of them generate the machine instruction that is part of the name.
  
       int __builtin_ia32_comisdeq (v2df, v2df);
--- 63792,63821 ----
       void __builtin_ia32_movntps (float *, v4sf);
       int __builtin_ia32_movmskps (v4sf);
  
!  The following built-in functions are available when â€˜-msseâ€™ is used.
  
   -- Built-in Function: v4sf __builtin_ia32_loadups (float *)
!      Generates the â€˜movupsâ€™ machine instruction as a load from memory.
  
   -- Built-in Function: void __builtin_ia32_storeups (float *, v4sf)
!      Generates the â€˜movupsâ€™ machine instruction as a store to memory.
  
   -- Built-in Function: v4sf __builtin_ia32_loadss (float *)
!      Generates the â€˜movssâ€™ machine instruction as a load from memory.
  
   -- Built-in Function: v4sf __builtin_ia32_loadhps (v4sf, const v2sf *)
!      Generates the â€˜movhpsâ€™ machine instruction as a load from memory.
  
   -- Built-in Function: v4sf __builtin_ia32_loadlps (v4sf, const v2sf *)
!      Generates the â€˜movlpsâ€™ machine instruction as a load from memory
  
   -- Built-in Function: void __builtin_ia32_storehps (v2sf *, v4sf)
!      Generates the â€˜movhpsâ€™ machine instruction as a store to memory.
  
   -- Built-in Function: void __builtin_ia32_storelps (v2sf *, v4sf)
!      Generates the â€˜movlpsâ€™ machine instruction as a store to memory.
  
!  The following built-in functions are available when â€˜-msse2â€™ is used.
  All of them generate the machine instruction that is part of the name.
  
       int __builtin_ia32_comisdeq (v2df, v2df);
*************** All of them generate the machine instruc
*** 63965,63971 ****
       v4si __builtin_ia32_pmaddwd128 (v8hi, v8hi);
       v2di __builtin_ia32_movq128 (v2di);
  
!  The following built-in functions are available when '-msse3' is used.
  All of them generate the machine instruction that is part of the name.
  
       v2df __builtin_ia32_addsubpd (v2df, v2df);
--- 63974,63980 ----
       v4si __builtin_ia32_pmaddwd128 (v8hi, v8hi);
       v2di __builtin_ia32_movq128 (v2di);
  
!  The following built-in functions are available when â€˜-msse3â€™ is used.
  All of them generate the machine instruction that is part of the name.
  
       v2df __builtin_ia32_addsubpd (v2df, v2df);
*************** All of them generate the machine instruc
*** 63980,63986 ****
       v4sf __builtin_ia32_movsldup (v4sf);
       void __builtin_ia32_mwait (unsigned int, unsigned int);
  
!  The following built-in functions are available when '-mssse3' is used.
  All of them generate the machine instruction that is part of the name.
  
       v2si __builtin_ia32_phaddd (v2si, v2si);
--- 63989,63995 ----
       v4sf __builtin_ia32_movsldup (v4sf);
       void __builtin_ia32_mwait (unsigned int, unsigned int);
  
!  The following built-in functions are available when â€˜-mssse3â€™ is used.
  All of them generate the machine instruction that is part of the name.
  
       v2si __builtin_ia32_phaddd (v2si, v2si);
*************** All of them generate the machine instruc
*** 64000,64006 ****
       v2si __builtin_ia32_pabsd (v2si);
       v4hi __builtin_ia32_pabsw (v4hi);
  
!  The following built-in functions are available when '-mssse3' is used.
  All of them generate the machine instruction that is part of the name.
  
       v4si __builtin_ia32_phaddd128 (v4si, v4si);
--- 64009,64015 ----
       v2si __builtin_ia32_pabsd (v2si);
       v4hi __builtin_ia32_pabsw (v4hi);
  
!  The following built-in functions are available when â€˜-mssse3â€™ is used.
  All of them generate the machine instruction that is part of the name.
  
       v4si __builtin_ia32_phaddd128 (v4si, v4si);
*************** All of them generate the machine instruc
*** 64020,64026 ****
       v4si __builtin_ia32_pabsd128 (v4si);
       v8hi __builtin_ia32_pabsw128 (v8hi);
  
!  The following built-in functions are available when '-msse4.1' is used.
  All of them generate the machine instruction that is part of the name.
  
       v2df __builtin_ia32_blendpd (v2df, v2df, const int);
--- 64029,64035 ----
       v4si __builtin_ia32_pabsd128 (v4si);
       v8hi __builtin_ia32_pabsw128 (v8hi);
  
!  The following built-in functions are available when â€˜-msse4.1â€™ is used.
  All of them generate the machine instruction that is part of the name.
  
       v2df __builtin_ia32_blendpd (v2df, v2df, const int);
*************** All of them generate the machine instruc
*** 64067,64109 ****
       v2df __builtin_ia32_roundsd (v2df, v2df, const int);
       v4sf __builtin_ia32_roundss (v4sf, v4sf, const int);
  
!  The following built-in functions are available when '-msse4.1' is used.
  
   -- Built-in Function: v4sf __builtin_ia32_vec_set_v4sf (v4sf, float,
            const int)
!      Generates the 'insertps' machine instruction.
  
   -- Built-in Function: int __builtin_ia32_vec_ext_v16qi (v16qi, const
            int)
!      Generates the 'pextrb' machine instruction.
  
   -- Built-in Function: v16qi __builtin_ia32_vec_set_v16qi (v16qi, int,
            const int)
!      Generates the 'pinsrb' machine instruction.
  
   -- Built-in Function: v4si __builtin_ia32_vec_set_v4si (v4si, int,
            const int)
!      Generates the 'pinsrd' machine instruction.
  
   -- Built-in Function: v2di __builtin_ia32_vec_set_v2di (v2di, long
            long, const int)
!      Generates the 'pinsrq' machine instruction in 64bit mode.
  
   The following built-in functions are changed to generate new SSE4.1
! instructions when '-msse4.1' is used.
  
   -- Built-in Function: float __builtin_ia32_vec_ext_v4sf (v4sf, const
            int)
!      Generates the 'extractps' machine instruction.
  
   -- Built-in Function: int __builtin_ia32_vec_ext_v4si (v4si, const int)
!      Generates the 'pextrd' machine instruction.
  
   -- Built-in Function: long long __builtin_ia32_vec_ext_v2di (v2di,
            const int)
!      Generates the 'pextrq' machine instruction in 64bit mode.
  
!  The following built-in functions are available when '-msse4.2' is used.
  All of them generate the machine instruction that is part of the name.
  
       v16qi __builtin_ia32_pcmpestrm128 (v16qi, int, v16qi, int, const int);
--- 64076,64118 ----
       v2df __builtin_ia32_roundsd (v2df, v2df, const int);
       v4sf __builtin_ia32_roundss (v4sf, v4sf, const int);
  
!  The following built-in functions are available when â€˜-msse4.1â€™ is used.
  
   -- Built-in Function: v4sf __builtin_ia32_vec_set_v4sf (v4sf, float,
            const int)
!      Generates the â€˜insertpsâ€™ machine instruction.
  
   -- Built-in Function: int __builtin_ia32_vec_ext_v16qi (v16qi, const
            int)
!      Generates the â€˜pextrbâ€™ machine instruction.
  
   -- Built-in Function: v16qi __builtin_ia32_vec_set_v16qi (v16qi, int,
            const int)
!      Generates the â€˜pinsrbâ€™ machine instruction.
  
   -- Built-in Function: v4si __builtin_ia32_vec_set_v4si (v4si, int,
            const int)
!      Generates the â€˜pinsrdâ€™ machine instruction.
  
   -- Built-in Function: v2di __builtin_ia32_vec_set_v2di (v2di, long
            long, const int)
!      Generates the â€˜pinsrqâ€™ machine instruction in 64bit mode.
  
   The following built-in functions are changed to generate new SSE4.1
! instructions when â€˜-msse4.1â€™ is used.
  
   -- Built-in Function: float __builtin_ia32_vec_ext_v4sf (v4sf, const
            int)
!      Generates the â€˜extractpsâ€™ machine instruction.
  
   -- Built-in Function: int __builtin_ia32_vec_ext_v4si (v4si, const int)
!      Generates the â€˜pextrdâ€™ machine instruction.
  
   -- Built-in Function: long long __builtin_ia32_vec_ext_v2di (v2di,
            const int)
!      Generates the â€˜pextrqâ€™ machine instruction in 64bit mode.
  
!  The following built-in functions are available when â€˜-msse4.2â€™ is used.
  All of them generate the machine instruction that is part of the name.
  
       v16qi __builtin_ia32_pcmpestrm128 (v16qi, int, v16qi, int, const int);
*************** All of them generate the machine instruc
*** 64122,64159 ****
       int __builtin_ia32_pcmpistriz128 (v16qi, v16qi, const int);
       v2di __builtin_ia32_pcmpgtq (v2di, v2di);
  
!  The following built-in functions are available when '-msse4.2' is used.
  
   -- Built-in Function: unsigned int __builtin_ia32_crc32qi (unsigned
            int, unsigned char)
!      Generates the 'crc32b' machine instruction.
  
   -- Built-in Function: unsigned int __builtin_ia32_crc32hi (unsigned
            int, unsigned short)
!      Generates the 'crc32w' machine instruction.
  
   -- Built-in Function: unsigned int __builtin_ia32_crc32si (unsigned
            int, unsigned int)
!      Generates the 'crc32l' machine instruction.
  
   -- Built-in Function: unsigned long long __builtin_ia32_crc32di
            (unsigned long long, unsigned long long)
!      Generates the 'crc32q' machine instruction.
  
   The following built-in functions are changed to generate new SSE4.2
! instructions when '-msse4.2' is used.
  
   -- Built-in Function: int __builtin_popcount (unsigned int)
!      Generates the 'popcntl' machine instruction.
  
   -- Built-in Function: int __builtin_popcountl (unsigned long)
!      Generates the 'popcntl' or 'popcntq' machine instruction, depending
!      on the size of 'unsigned long'.
  
   -- Built-in Function: int __builtin_popcountll (unsigned long long)
!      Generates the 'popcntq' machine instruction.
  
!  The following built-in functions are available when '-mavx' is used.
  All of them generate the machine instruction that is part of the name.
  
       v4df __builtin_ia32_addpd256 (v4df,v4df);
--- 64131,64168 ----
       int __builtin_ia32_pcmpistriz128 (v16qi, v16qi, const int);
       v2di __builtin_ia32_pcmpgtq (v2di, v2di);
  
!  The following built-in functions are available when â€˜-msse4.2â€™ is used.
  
   -- Built-in Function: unsigned int __builtin_ia32_crc32qi (unsigned
            int, unsigned char)
!      Generates the â€˜crc32bâ€™ machine instruction.
  
   -- Built-in Function: unsigned int __builtin_ia32_crc32hi (unsigned
            int, unsigned short)
!      Generates the â€˜crc32wâ€™ machine instruction.
  
   -- Built-in Function: unsigned int __builtin_ia32_crc32si (unsigned
            int, unsigned int)
!      Generates the â€˜crc32lâ€™ machine instruction.
  
   -- Built-in Function: unsigned long long __builtin_ia32_crc32di
            (unsigned long long, unsigned long long)
!      Generates the â€˜crc32qâ€™ machine instruction.
  
   The following built-in functions are changed to generate new SSE4.2
! instructions when â€˜-msse4.2â€™ is used.
  
   -- Built-in Function: int __builtin_popcount (unsigned int)
!      Generates the â€˜popcntlâ€™ machine instruction.
  
   -- Built-in Function: int __builtin_popcountl (unsigned long)
!      Generates the â€˜popcntlâ€™ or â€˜popcntqâ€™ machine instruction, depending
!      on the size of â€˜unsigned longâ€™.
  
   -- Built-in Function: int __builtin_popcountll (unsigned long long)
!      Generates the â€˜popcntqâ€™ machine instruction.
  
!  The following built-in functions are available when â€˜-mavxâ€™ is used.
  All of them generate the machine instruction that is part of the name.
  
       v4df __builtin_ia32_addpd256 (v4df,v4df);
*************** All of them generate the machine instruc
*** 64285,64291 ****
       v4df __builtin_ia32_xorpd256 (v4df,v4df);
       v8sf __builtin_ia32_xorps256 (v8sf,v8sf);
  
!  The following built-in functions are available when '-mavx2' is used.
  All of them generate the machine instruction that is part of the name.
  
       v32qi __builtin_ia32_mpsadbw256 (v32qi,v32qi,int);
--- 64294,64300 ----
       v4df __builtin_ia32_xorpd256 (v4df,v4df);
       v8sf __builtin_ia32_xorps256 (v8sf,v8sf);
  
!  The following built-in functions are available when â€˜-mavx2â€™ is used.
  All of them generate the machine instruction that is part of the name.
  
       v32qi __builtin_ia32_mpsadbw256 (v32qi,v32qi,int);
*************** All of them generate the machine instruc
*** 64460,64466 ****
       v4si __builtin_ia32_gatherdiv4si (v4si, pcint,v2di,v4si,int);
       v4si __builtin_ia32_gatherdiv4si256 (v4si, pcint,v4di,v4si,int);
  
!  The following built-in functions are available when '-maes' is used.
  All of them generate the machine instruction that is part of the name.
  
       v2di __builtin_ia32_aesenc128 (v2di, v2di);
--- 64469,64475 ----
       v4si __builtin_ia32_gatherdiv4si (v4si, pcint,v2di,v4si,int);
       v4si __builtin_ia32_gatherdiv4si256 (v4si, pcint,v4di,v4si,int);
  
!  The following built-in functions are available when â€˜-maesâ€™ is used.
  All of them generate the machine instruction that is part of the name.
  
       v2di __builtin_ia32_aesenc128 (v2di, v2di);
*************** All of them generate the machine instruc
*** 64470,64482 ****
       v2di __builtin_ia32_aeskeygenassist128 (v2di, const int);
       v2di __builtin_ia32_aesimc128 (v2di);
  
!  The following built-in function is available when '-mpclmul' is used.
  
   -- Built-in Function: v2di __builtin_ia32_pclmulqdq128 (v2di, v2di,
            const int)
!      Generates the 'pclmulqdq' machine instruction.
  
!  The following built-in function is available when '-mfsgsbase' is used.
  All of them generate the machine instruction that is part of the name.
  
       unsigned int __builtin_ia32_rdfsbase32 (void);
--- 64479,64491 ----
       v2di __builtin_ia32_aeskeygenassist128 (v2di, const int);
       v2di __builtin_ia32_aesimc128 (v2di);
  
!  The following built-in function is available when â€˜-mpclmulâ€™ is used.
  
   -- Built-in Function: v2di __builtin_ia32_pclmulqdq128 (v2di, v2di,
            const int)
!      Generates the â€˜pclmulqdqâ€™ machine instruction.
  
!  The following built-in function is available when â€˜-mfsgsbaseâ€™ is used.
  All of them generate the machine instruction that is part of the name.
  
       unsigned int __builtin_ia32_rdfsbase32 (void);
*************** All of them generate the machine instruc
*** 64488,64507 ****
       void _writegsbase_u32 (unsigned int);
       void _writegsbase_u64 (unsigned long long);
  
!  The following built-in function is available when '-mrdrnd' is used.
  All of them generate the machine instruction that is part of the name.
  
       unsigned int __builtin_ia32_rdrand16_step (unsigned short *);
       unsigned int __builtin_ia32_rdrand32_step (unsigned int *);
       unsigned int __builtin_ia32_rdrand64_step (unsigned long long *);
  
!  The following built-in function is available when '-mptwrite' is used.
  All of them generate the machine instruction that is part of the name.
  
       void __builtin_ia32_ptwrite32 (unsigned);
       void __builtin_ia32_ptwrite64 (unsigned long long);
  
!  The following built-in functions are available when '-msse4a' is used.
  All of them generate the machine instruction that is part of the name.
  
       void __builtin_ia32_movntsd (double *, v2df);
--- 64497,64516 ----
       void _writegsbase_u32 (unsigned int);
       void _writegsbase_u64 (unsigned long long);
  
!  The following built-in function is available when â€˜-mrdrndâ€™ is used.
  All of them generate the machine instruction that is part of the name.
  
       unsigned int __builtin_ia32_rdrand16_step (unsigned short *);
       unsigned int __builtin_ia32_rdrand32_step (unsigned int *);
       unsigned int __builtin_ia32_rdrand64_step (unsigned long long *);
  
!  The following built-in function is available when â€˜-mptwriteâ€™ is used.
  All of them generate the machine instruction that is part of the name.
  
       void __builtin_ia32_ptwrite32 (unsigned);
       void __builtin_ia32_ptwrite64 (unsigned long long);
  
!  The following built-in functions are available when â€˜-msse4aâ€™ is used.
  All of them generate the machine instruction that is part of the name.
  
       void __builtin_ia32_movntsd (double *, v2df);
*************** All of them generate the machine instruc
*** 64511,64517 ****
       v2di __builtin_ia32_insertq (v2di, v2di);
       v2di __builtin_ia32_insertqi (v2di, v2di, const unsigned int, const unsigned int);
  
!  The following built-in functions are available when '-mxop' is used.
       v2df __builtin_ia32_vfrczpd (v2df);
       v4sf __builtin_ia32_vfrczps (v4sf);
       v2df __builtin_ia32_vfrczsd (v2df);
--- 64520,64526 ----
       v2di __builtin_ia32_insertq (v2di, v2di);
       v2di __builtin_ia32_insertqi (v2di, v2di, const unsigned int, const unsigned int);
  
!  The following built-in functions are available when â€˜-mxopâ€™ is used.
       v2df __builtin_ia32_vfrczpd (v2df);
       v4sf __builtin_ia32_vfrczps (v4sf);
       v2df __builtin_ia32_vfrczsd (v2df);
*************** All of them generate the machine instruc
*** 64637,64643 ****
       v2di __builtin_ia32_vpshlq (v2di, v2di);
       v8hi __builtin_ia32_vpshlw (v8hi, v8hi);
  
!  The following built-in functions are available when '-mfma4' is used.
  All of them generate the machine instruction that is part of the name.
  
       v2df __builtin_ia32_vfmaddpd (v2df, v2df, v2df);
--- 64646,64652 ----
       v2di __builtin_ia32_vpshlq (v2di, v2di);
       v8hi __builtin_ia32_vpshlw (v8hi, v8hi);
  
!  The following built-in functions are available when â€˜-mfma4â€™ is used.
  All of them generate the machine instruction that is part of the name.
  
       v2df __builtin_ia32_vfmaddpd (v2df, v2df, v2df);
*************** All of them generate the machine instruc
*** 64674,64680 ****
       v8sf __builtin_ia32_vfmsubaddps256 (v8sf, v8sf, v8sf);
  
  
!  The following built-in functions are available when '-mlwp' is used.
  
       void __builtin_ia32_llwpcb16 (void *);
       void __builtin_ia32_llwpcb32 (void *);
--- 64683,64689 ----
       v8sf __builtin_ia32_vfmsubaddps256 (v8sf, v8sf, v8sf);
  
  
!  The following built-in functions are available when â€˜-mlwpâ€™ is used.
  
       void __builtin_ia32_llwpcb16 (void *);
       void __builtin_ia32_llwpcb32 (void *);
*************** All of them generate the machine instruc
*** 64689,64700 ****
       unsigned char __builtin_ia32_lwpins32 (unsigned int, unsigned int, unsigned int);
       unsigned char __builtin_ia32_lwpins64 (unsigned __int64, unsigned int, unsigned int);
  
!  The following built-in functions are available when '-mbmi' is used.
  All of them generate the machine instruction that is part of the name.
       unsigned int __builtin_ia32_bextr_u32(unsigned int, unsigned int);
       unsigned long long __builtin_ia32_bextr_u64 (unsigned long long, unsigned long long);
  
!  The following built-in functions are available when '-mbmi2' is used.
  All of them generate the machine instruction that is part of the name.
       unsigned int _bzhi_u32 (unsigned int, unsigned int);
       unsigned int _pdep_u32 (unsigned int, unsigned int);
--- 64698,64709 ----
       unsigned char __builtin_ia32_lwpins32 (unsigned int, unsigned int, unsigned int);
       unsigned char __builtin_ia32_lwpins64 (unsigned __int64, unsigned int, unsigned int);
  
!  The following built-in functions are available when â€˜-mbmiâ€™ is used.
  All of them generate the machine instruction that is part of the name.
       unsigned int __builtin_ia32_bextr_u32(unsigned int, unsigned int);
       unsigned long long __builtin_ia32_bextr_u64 (unsigned long long, unsigned long long);
  
!  The following built-in functions are available when â€˜-mbmi2â€™ is used.
  All of them generate the machine instruction that is part of the name.
       unsigned int _bzhi_u32 (unsigned int, unsigned int);
       unsigned int _pdep_u32 (unsigned int, unsigned int);
*************** All of them generate the machine instruc
*** 64703,64735 ****
       unsigned long long _pdep_u64 (unsigned long long, unsigned long long);
       unsigned long long _pext_u64 (unsigned long long, unsigned long long);
  
!  The following built-in functions are available when '-mlzcnt' is used.
  All of them generate the machine instruction that is part of the name.
       unsigned short __builtin_ia32_lzcnt_u16(unsigned short);
       unsigned int __builtin_ia32_lzcnt_u32(unsigned int);
       unsigned long long __builtin_ia32_lzcnt_u64 (unsigned long long);
  
!  The following built-in functions are available when '-mfxsr' is used.
  All of them generate the machine instruction that is part of the name.
       void __builtin_ia32_fxsave (void *);
       void __builtin_ia32_fxrstor (void *);
       void __builtin_ia32_fxsave64 (void *);
       void __builtin_ia32_fxrstor64 (void *);
  
!  The following built-in functions are available when '-mxsave' is used.
  All of them generate the machine instruction that is part of the name.
       void __builtin_ia32_xsave (void *, long long);
       void __builtin_ia32_xrstor (void *, long long);
       void __builtin_ia32_xsave64 (void *, long long);
       void __builtin_ia32_xrstor64 (void *, long long);
  
!  The following built-in functions are available when '-mxsaveopt' is
  used.  All of them generate the machine instruction that is part of the
  name.
       void __builtin_ia32_xsaveopt (void *, long long);
       void __builtin_ia32_xsaveopt64 (void *, long long);
  
!  The following built-in functions are available when '-mtbm' is used.
  Both of them generate the immediate form of the bextr machine
  instruction.
       unsigned int __builtin_ia32_bextri_u32 (unsigned int,
--- 64712,64744 ----
       unsigned long long _pdep_u64 (unsigned long long, unsigned long long);
       unsigned long long _pext_u64 (unsigned long long, unsigned long long);
  
!  The following built-in functions are available when â€˜-mlzcntâ€™ is used.
  All of them generate the machine instruction that is part of the name.
       unsigned short __builtin_ia32_lzcnt_u16(unsigned short);
       unsigned int __builtin_ia32_lzcnt_u32(unsigned int);
       unsigned long long __builtin_ia32_lzcnt_u64 (unsigned long long);
  
!  The following built-in functions are available when â€˜-mfxsrâ€™ is used.
  All of them generate the machine instruction that is part of the name.
       void __builtin_ia32_fxsave (void *);
       void __builtin_ia32_fxrstor (void *);
       void __builtin_ia32_fxsave64 (void *);
       void __builtin_ia32_fxrstor64 (void *);
  
!  The following built-in functions are available when â€˜-mxsaveâ€™ is used.
  All of them generate the machine instruction that is part of the name.
       void __builtin_ia32_xsave (void *, long long);
       void __builtin_ia32_xrstor (void *, long long);
       void __builtin_ia32_xsave64 (void *, long long);
       void __builtin_ia32_xrstor64 (void *, long long);
  
!  The following built-in functions are available when â€˜-mxsaveoptâ€™ is
  used.  All of them generate the machine instruction that is part of the
  name.
       void __builtin_ia32_xsaveopt (void *, long long);
       void __builtin_ia32_xsaveopt64 (void *, long long);
  
!  The following built-in functions are available when â€˜-mtbmâ€™ is used.
  Both of them generate the immediate form of the bextr machine
  instruction.
       unsigned int __builtin_ia32_bextri_u32 (unsigned int,
*************** instruction.
*** 64737,64743 ****
       unsigned long long __builtin_ia32_bextri_u64 (unsigned long long,
                                                     const unsigned long long);
  
!  The following built-in functions are available when '-m3dnow' is used.
  All of them generate the machine instruction that is part of the name.
  
       void __builtin_ia32_femms (void);
--- 64746,64752 ----
       unsigned long long __builtin_ia32_bextri_u64 (unsigned long long,
                                                     const unsigned long long);
  
!  The following built-in functions are available when â€˜-m3dnowâ€™ is used.
  All of them generate the machine instruction that is part of the name.
  
       void __builtin_ia32_femms (void);
*************** All of them generate the machine instruc
*** 64760,64766 ****
       v2sf __builtin_ia32_pi2fd (v2si);
       v4hi __builtin_ia32_pmulhrw (v4hi, v4hi);
  
!  The following built-in functions are available when '-m3dnowa' is used.
  All of them generate the machine instruction that is part of the name.
  
       v2si __builtin_ia32_pf2iw (v2sf);
--- 64769,64775 ----
       v2sf __builtin_ia32_pi2fd (v2si);
       v4hi __builtin_ia32_pmulhrw (v4hi, v4hi);
  
!  The following built-in functions are available when â€˜-m3dnowaâ€™ is used.
  All of them generate the machine instruction that is part of the name.
  
       v2si __builtin_ia32_pf2iw (v2sf);
*************** All of them generate the machine instruc
*** 64770,64776 ****
       v2sf __builtin_ia32_pswapdsf (v2sf);
       v2si __builtin_ia32_pswapdsi (v2si);
  
!  The following built-in functions are available when '-mrtm' is used
  They are used for restricted transactional memory.  These are the
  internal low level functions.  Normally the functions in *note x86
  transactional memory intrinsics:: should be used instead.
--- 64779,64785 ----
       v2sf __builtin_ia32_pswapdsf (v2sf);
       v2si __builtin_ia32_pswapdsi (v2si);
  
!  The following built-in functions are available when â€˜-mrtmâ€™ is used
  They are used for restricted transactional memory.  These are the
  internal low level functions.  Normally the functions in *note x86
  transactional memory intrinsics:: should be used instead.
*************** transactional memory intrinsics:: should
*** 64780,64800 ****
       void __builtin_ia32_xabort (status);
       int __builtin_ia32_xtest ();
  
!  The following built-in functions are available when '-mmwaitx' is used.
  All of them generate the machine instruction that is part of the name.
       void __builtin_ia32_monitorx (void *, unsigned int, unsigned int);
       void __builtin_ia32_mwaitx (unsigned int, unsigned int, unsigned int);
  
!  The following built-in functions are available when '-mclzero' is used.
  All of them generate the machine instruction that is part of the name.
       void __builtin_i32_clzero (void *);
  
!  The following built-in functions are available when '-mpku' is used.
  They generate reads and writes to PKRU.
       void __builtin_ia32_wrpkru (unsigned int);
       unsigned int __builtin_ia32_rdpkru ();
  
!  The following built-in functions are available when '-mshstk' option is
  used.  They support shadow stack machine instructions from Intel
  Control-flow Enforcement Technology (CET). Each built-in function
  generates the machine instruction that is part of the function's name.
--- 64789,64809 ----
       void __builtin_ia32_xabort (status);
       int __builtin_ia32_xtest ();
  
!  The following built-in functions are available when â€˜-mmwaitxâ€™ is used.
  All of them generate the machine instruction that is part of the name.
       void __builtin_ia32_monitorx (void *, unsigned int, unsigned int);
       void __builtin_ia32_mwaitx (unsigned int, unsigned int, unsigned int);
  
!  The following built-in functions are available when â€˜-mclzeroâ€™ is used.
  All of them generate the machine instruction that is part of the name.
       void __builtin_i32_clzero (void *);
  
!  The following built-in functions are available when â€˜-mpkuâ€™ is used.
  They generate reads and writes to PKRU.
       void __builtin_ia32_wrpkru (unsigned int);
       unsigned int __builtin_ia32_rdpkru ();
  
!  The following built-in functions are available when â€˜-mshstkâ€™ option is
  used.  They support shadow stack machine instructions from Intel
  Control-flow Enforcement Technology (CET). Each built-in function
  generates the machine instruction that is part of the function's name.
*************** File: gcc.info,  Node: x86 transactional
*** 64822,64828 ****
  
  These hardware transactional memory intrinsics for x86 allow you to use
  memory transactions with RTM (Restricted Transactional Memory).  This
! support is enabled with the '-mrtm' option.  For using HLE (Hardware
  Lock Elision) see *note x86 specific memory model extensions for
  transactional memory:: instead.
  
--- 64831,64837 ----
  
  These hardware transactional memory intrinsics for x86 allow you to use
  memory transactions with RTM (Restricted Transactional Memory).  This
! support is enabled with the â€˜-mrtmâ€™ option.  For using HLE (Hardware
  Lock Elision) see *note x86 specific memory model extensions for
  transactional memory:: instead.
  
*************** and suitable fallback code always needs
*** 64835,64841 ****
  
   -- RTM Function: unsigned _xbegin ()
       Start a RTM (Restricted Transactional Memory) transaction.  Returns
!      '_XBEGIN_STARTED' when the transaction started successfully (note
       this is not 0, so the constant has to be explicitly tested).
  
       If the transaction aborts, all side effects are undone and an abort
--- 64844,64850 ----
  
   -- RTM Function: unsigned _xbegin ()
       Start a RTM (Restricted Transactional Memory) transaction.  Returns
!      â€˜_XBEGIN_STARTEDâ€™ when the transaction started successfully (note
       this is not 0, so the constant has to be explicitly tested).
  
       If the transaction aborts, all side effects are undone and an abort
*************** and suitable fallback code always needs
*** 64843,64851 ****
       defined:
  
        -- Macro: _XABORT_EXPLICIT
!           Transaction was explicitly aborted with '_xabort'.  The
!           parameter passed to '_xabort' is available with
!           '_XABORT_CODE(status)'.
  
        -- Macro: _XABORT_RETRY
            Transaction retry is possible.
--- 64852,64860 ----
       defined:
  
        -- Macro: _XABORT_EXPLICIT
!           Transaction was explicitly aborted with â€˜_xabortâ€™.  The
!           parameter passed to â€˜_xabortâ€™ is available with
!           â€˜_XABORT_CODE(status)â€™.
  
        -- Macro: _XABORT_RETRY
            Transaction retry is possible.
*************** and suitable fallback code always needs
*** 64879,64887 ****
   -- RTM Function: void _xabort (status)
       Abort the current transaction.  When no transaction is active this
       is a no-op.  The STATUS is an 8-bit constant; its value is encoded
!      in the return value from '_xbegin'.
  
!  Here is an example showing handling for '_XABORT_RETRY' and a fallback
  path for other failures:
  
       #include <immintrin.h>
--- 64888,64896 ----
   -- RTM Function: void _xabort (status)
       Abort the current transaction.  When no transaction is active this
       is a no-op.  The STATUS is an 8-bit constant; its value is encoded
!      in the return value from â€˜_xbeginâ€™.
  
!  Here is an example showing handling for â€˜_XABORT_RETRYâ€™ and a fallback
  path for other failures:
  
       #include <immintrin.h>
*************** File: gcc.info,  Node: x86 control-flow
*** 64917,64925 ****
  
   -- CET Function: ret_type _get_ssp (void)
       Get the current value of shadow stack pointer if shadow stack
!      support from Intel CET is enabled in the hardware or '0' otherwise.
!      The 'ret_type' is 'unsigned long long' for 64-bit targets and
!      'unsigned int' for 32-bit targets.
  
   -- CET Function: void _inc_ssp (unsigned int)
       Increment the current shadow stack pointer by the size specified by
--- 64926,64934 ----
  
   -- CET Function: ret_type _get_ssp (void)
       Get the current value of shadow stack pointer if shadow stack
!      support from Intel CET is enabled in the hardware or â€˜0â€™ otherwise.
!      The â€˜ret_typeâ€™ is â€˜unsigned long longâ€™ for 64-bit targets and
!      â€˜unsigned intâ€™ for 32-bit targets.
  
   -- CET Function: void _inc_ssp (unsigned int)
       Increment the current shadow stack pointer by the size specified by
*************** The GNU compiler provides these extensio
*** 64963,64970 ****
  can also use most of the C language extensions in your C++ programs).
  If you want to write code that checks whether these features are
  available, you can test for the GNU compiler the same way as for C
! programs: check for a predefined macro '__GNUC__'.  You can also use
! '__GNUG__' to test specifically for GNU C++ (*note Predefined Macros:
  (cpp)Common Predefined Macros.).
  
  * Menu:
--- 64972,64979 ----
  can also use most of the C language extensions in your C++ programs).
  If you want to write code that checks whether these features are
  available, you can test for the GNU compiler the same way as for C
! programs: check for a predefined macro â€˜__GNUC__â€™.  You can also use
! â€˜__GNUG__â€™ to test specifically for GNU C++ (*note Predefined Macros:
  (cpp)Common Predefined Macros.).
  
  * Menu:
*************** programs: check for a predefined macro '
*** 64977,64983 ****
  * Template Instantiation:: Methods for ensuring that exactly one copy of
                          each needed template instantiation is emitted.
  * Bound member functions:: You can extract a function pointer to the
!                         method denoted by a '->*' or '.*' expression.
  * C++ Attributes::      Variable, function, and type attributes for C++ only.
  * Function Multiversioning::   Declaring multiple function versions.
  * Type Traits::         Compiler support for type traits.
--- 64986,64992 ----
  * Template Instantiation:: Methods for ensuring that exactly one copy of
                          each needed template instantiation is emitted.
  * Bound member functions:: You can extract a function pointer to the
!                         method denoted by a â€˜->*â€™ or â€˜.*â€™ expression.
  * C++ Attributes::      Variable, function, and type attributes for C++ only.
  * Function Multiversioning::   Declaring multiple function versions.
  * Type Traits::         Compiler support for type traits.
*************** File: gcc.info,  Node: Restricted Pointe
*** 65041,65049 ****
  ================================
  
  As with the C front end, G++ understands the C99 feature of restricted
! pointers, specified with the '__restrict__', or '__restrict' type
! qualifier.  Because you cannot compile C++ by specifying the '-std=c99'
! language flag, 'restrict' is not a keyword in C++.
  
   In addition to allowing restricted pointers, you can specify restricted
  references, which indicate that the reference is not aliased in the
--- 65050,65058 ----
  ================================
  
  As with the C front end, G++ understands the C99 feature of restricted
! pointers, specified with the â€˜__restrict__â€™, or â€˜__restrictâ€™ type
! qualifier.  Because you cannot compile C++ by specifying the â€˜-std=c99â€™
! language flag, â€˜restrictâ€™ is not a keyword in C++.
  
   In addition to allowing restricted pointers, you can specify restricted
  references, which indicate that the reference is not aliased in the
*************** local context.
*** 65054,65080 ****
         /* ... */
       }
  
! In the body of 'fn', RPTR points to an unaliased integer and RREF refers
  to a (different) unaliased integer.
  
   You may also specify whether a member function's THIS pointer is
! unaliased by using '__restrict__' as a member function qualifier.
  
       void T::fn () __restrict__
       {
         /* ... */
       }
  
! Within the body of 'T::fn', THIS has the effective definition 'T
! *__restrict__ const this'.  Notice that the interpretation of a
! '__restrict__' member function qualifier is different to that of 'const'
! or 'volatile' qualifier, in that it is applied to the pointer rather
  than the object.  This is consistent with other compilers that implement
  restricted pointers.
  
!  As with all outermost parameter qualifiers, '__restrict__' is ignored
  in function definition matching.  This means you only need to specify
! '__restrict__' in a function definition, rather than in a function
  prototype as well.
  
  
--- 65063,65089 ----
         /* ... */
       }
  
! In the body of â€˜fnâ€™, RPTR points to an unaliased integer and RREF refers
  to a (different) unaliased integer.
  
   You may also specify whether a member function's THIS pointer is
! unaliased by using â€˜__restrict__â€™ as a member function qualifier.
  
       void T::fn () __restrict__
       {
         /* ... */
       }
  
! Within the body of â€˜T::fnâ€™, THIS has the effective definition â€˜T
! *__restrict__ const thisâ€™.  Notice that the interpretation of a
! â€˜__restrict__â€™ member function qualifier is different to that of â€˜constâ€™
! or â€˜volatileâ€™ qualifier, in that it is applied to the pointer rather
  than the object.  This is consistent with other compilers that implement
  restricted pointers.
  
!  As with all outermost parameter qualifiers, â€˜__restrict__â€™ is ignored
  in function definition matching.  This means you only need to specify
! â€˜__restrict__â€™ in a function definition, rather than in a function
  prototype as well.
  
  
*************** VTables
*** 65118,65131 ****
       Make sure that any inline virtuals are declared inline in the class
       body, even if they are not defined there.
  
! 'type_info' objects
       C++ requires information about types to be written out in order to
!      implement 'dynamic_cast', 'typeid' and exception handling.  For
       polymorphic classes (classes with virtual functions), the
!      'type_info' object is written out along with the vtable so that
!      'dynamic_cast' can determine the dynamic type of a class object at
!      run time.  For all other types, we write out the 'type_info' object
!      when it is used: when applying 'typeid' to an expression, throwing
       an object, or referring to a type in a catch clause or exception
       specification.
  
--- 65127,65140 ----
       Make sure that any inline virtuals are declared inline in the class
       body, even if they are not defined there.
  
! â€˜type_infoâ€™ objects
       C++ requires information about types to be written out in order to
!      implement â€˜dynamic_castâ€™, â€˜typeidâ€™ and exception handling.  For
       polymorphic classes (classes with virtual functions), the
!      â€˜type_infoâ€™ object is written out along with the vtable so that
!      â€˜dynamic_castâ€™ can determine the dynamic type of a class object at
!      run time.  For all other types, we write out the â€˜type_infoâ€™ object
!      when it is used: when applying â€˜typeidâ€™ to an expression, throwing
       an object, or referring to a type in a catch clause or exception
       specification.
  
*************** File: gcc.info,  Node: C++ Interface,  N
*** 65158,65174 ****
  8.4 C++ Interface and Implementation Pragmas
  ============================================
  
! '#pragma interface' and '#pragma implementation' provide the user with a
  way of explicitly directing the compiler to emit entities with vague
  linkage (and debugging information) in a particular translation unit.
  
!  _Note:_ These '#pragma's have been superseded as of GCC 2.7.2 by COMDAT
  support and the "key method" heuristic mentioned in *note Vague
  Linkage::.  Using them can actually cause your program to grow due to
  unnecessary out-of-line copies of inline functions.
  
! '#pragma interface'
! '#pragma interface "SUBDIR/OBJECTS.h"'
       Use this directive in _header files_ that define object classes, to
       save space in most of the object files that use those classes.
       Normally, local copies of certain information (backup copies of
--- 65167,65183 ----
  8.4 C++ Interface and Implementation Pragmas
  ============================================
  
! â€˜#pragma interfaceâ€™ and â€˜#pragma implementationâ€™ provide the user with a
  way of explicitly directing the compiler to emit entities with vague
  linkage (and debugging information) in a particular translation unit.
  
!  _Note:_ These â€˜#pragmaâ€™s have been superseded as of GCC 2.7.2 by COMDAT
  support and the "key method" heuristic mentioned in *note Vague
  Linkage::.  Using them can actually cause your program to grow due to
  unnecessary out-of-line copies of inline functions.
  
! â€˜#pragma interfaceâ€™
! â€˜#pragma interface "SUBDIR/OBJECTS.h"â€™
       Use this directive in _header files_ that define object classes, to
       save space in most of the object files that use those classes.
       Normally, local copies of certain information (backup copies of
*************** unnecessary out-of-line copies of inline
*** 65176,65235 ****
       tables that implement virtual functions) must be kept in each
       object file that includes class definitions.  You can use this
       pragma to avoid such duplication.  When a header file containing
!      '#pragma interface' is included in a compilation, this auxiliary
       information is not generated (unless the main input source file
!      itself uses '#pragma implementation').  Instead, the object files
       contain references to be resolved at link time.
  
       The second form of this directive is useful for the case where you
       have multiple headers with the same name in different directories.
!      If you use this form, you must specify the same string to '#pragma
!      implementation'.
  
! '#pragma implementation'
! '#pragma implementation "OBJECTS.h"'
       Use this pragma in a _main input file_, when you want full output
       from included header files to be generated (and made globally
!      visible).  The included header file, in turn, should use '#pragma
!      interface'.  Backup copies of inline member functions, debugging
       information, and the internal tables used to implement virtual
       functions are all generated in implementation files.
  
!      If you use '#pragma implementation' with no argument, it applies to
       an include file with the same basename(1) as your source file.  For
!      example, in 'allclass.cc', giving just '#pragma implementation' by
!      itself is equivalent to '#pragma implementation "allclass.h"'.
  
       Use the string argument if you want a single implementation file to
       include code from multiple header files.  (You must also use
!      '#include' to include the header file; '#pragma implementation'
       only specifies how to use the file--it doesn't actually include
       it.)
  
       There is no way to split up the contents of a single header file
       into multiple implementation files.
  
!  '#pragma implementation' and '#pragma interface' also have an effect on
  function inlining.
  
!  If you define a class in a header file marked with '#pragma interface',
  the effect on an inline function defined in that class is similar to an
! explicit 'extern' declaration--the compiler emits no code at all to
  define an independent version of the function.  Its definition is used
  only for inlining with its callers.
  
   Conversely, when you include the same header file in a main source file
! that declares it as '#pragma implementation', the compiler emits code
  for the function itself; this defines a version of the function that can
  be found via pointers (or by callers compiled without inlining).  If all
  calls to the function can be inlined, you can avoid emitting the
! function by compiling with '-fno-implement-inlines'.  If any calls are
  not inlined, you will get linker errors.
  
     ---------- Footnotes ----------
  
!    (1) A file's "basename" is the name stripped of all leading path
! information and of trailing suffixes, such as '.h' or '.C' or '.cc'.
  
  
  File: gcc.info,  Node: Template Instantiation,  Next: Bound member functions,  Prev: C++ Interface,  Up: C++ Extensions
--- 65185,65244 ----
       tables that implement virtual functions) must be kept in each
       object file that includes class definitions.  You can use this
       pragma to avoid such duplication.  When a header file containing
!      â€˜#pragma interfaceâ€™ is included in a compilation, this auxiliary
       information is not generated (unless the main input source file
!      itself uses â€˜#pragma implementationâ€™).  Instead, the object files
       contain references to be resolved at link time.
  
       The second form of this directive is useful for the case where you
       have multiple headers with the same name in different directories.
!      If you use this form, you must specify the same string to â€˜#pragma
!      implementationâ€™.
  
! â€˜#pragma implementationâ€™
! â€˜#pragma implementation "OBJECTS.h"â€™
       Use this pragma in a _main input file_, when you want full output
       from included header files to be generated (and made globally
!      visible).  The included header file, in turn, should use â€˜#pragma
!      interfaceâ€™.  Backup copies of inline member functions, debugging
       information, and the internal tables used to implement virtual
       functions are all generated in implementation files.
  
!      If you use â€˜#pragma implementationâ€™ with no argument, it applies to
       an include file with the same basename(1) as your source file.  For
!      example, in â€˜allclass.ccâ€™, giving just â€˜#pragma implementationâ€™ by
!      itself is equivalent to â€˜#pragma implementation "allclass.h"â€™.
  
       Use the string argument if you want a single implementation file to
       include code from multiple header files.  (You must also use
!      â€˜#includeâ€™ to include the header file; â€˜#pragma implementationâ€™
       only specifies how to use the file--it doesn't actually include
       it.)
  
       There is no way to split up the contents of a single header file
       into multiple implementation files.
  
!  â€˜#pragma implementationâ€™ and â€˜#pragma interfaceâ€™ also have an effect on
  function inlining.
  
!  If you define a class in a header file marked with â€˜#pragma interfaceâ€™,
  the effect on an inline function defined in that class is similar to an
! explicit â€˜externâ€™ declaration--the compiler emits no code at all to
  define an independent version of the function.  Its definition is used
  only for inlining with its callers.
  
   Conversely, when you include the same header file in a main source file
! that declares it as â€˜#pragma implementationâ€™, the compiler emits code
  for the function itself; this defines a version of the function that can
  be found via pointers (or by callers compiled without inlining).  If all
  calls to the function can be inlined, you can avoid emitting the
! function by compiling with â€˜-fno-implement-inlinesâ€™.  If any calls are
  not inlined, you will get linker errors.
  
     ---------- Footnotes ----------
  
!    (1) A file's â€œbasenameâ€� is the name stripped of all leading path
! information and of trailing suffixes, such as â€˜.hâ€™ or â€˜.Câ€™ or â€˜.ccâ€™.
  
  
  File: gcc.info,  Node: Template Instantiation,  Next: Bound member functions,  Prev: C++ Interface,  Up: C++ Extensions
*************** instantiations:
*** 65294,65300 ****
       explicit instantiation in one object file, and preventing the
       compiler from doing implicit instantiations in any other object
       files by using an explicit instantiation declaration, using the
!      'extern template' syntax:
  
            extern template int max (int, int);
  
--- 65303,65309 ----
       explicit instantiation in one object file, and preventing the
       compiler from doing implicit instantiations in any other object
       files by using an explicit instantiation declaration, using the
!      â€˜extern templateâ€™ syntax:
  
            extern template int max (int, int);
  
*************** instantiations:
*** 65325,65331 ****
       alternative and programs using this approach will work with most
       modern compilers.
  
!   2. Compile your code with '-fno-implicit-templates' to disable the
       implicit generation of template instances, and explicitly
       instantiate all the ones you use.  This approach requires more
       knowledge of exactly which instances you need than do the others,
--- 65334,65340 ----
       alternative and programs using this approach will work with most
       modern compilers.
  
!   2. Compile your code with â€˜-fno-implicit-templatesâ€™ to disable the
       implicit generation of template instances, and explicitly
       instantiate all the ones you use.  This approach requires more
       knowledge of exactly which instances you need than do the others,
*************** instantiations:
*** 65333,65353 ****
       ensure that only the intended instances are used.
  
       If you are using Cfront-model code, you can probably get away with
!      not using '-fno-implicit-templates' when compiling files that don't
!      '#include' the member template definitions.
  
       If you use one big file to do the instantiations, you may want to
!      compile it without '-fno-implicit-templates' so you get all of the
       instances required by your explicit instantiations (but not by any
       other files) without having to specify them as well.
  
       In addition to forward declaration of explicit instantiations (with
!      'extern'), G++ has extended the template instantiation syntax to
       support instantiation of the compiler support data for a template
       class (i.e. the vtable) without instantiating any of its members
!      (with 'inline'), and instantiation of only the static data members
       of a template class, without the support data or member functions
!      (with 'static'):
  
            inline template class Foo<int>;
            static template class Foo<int>;
--- 65342,65362 ----
       ensure that only the intended instances are used.
  
       If you are using Cfront-model code, you can probably get away with
!      not using â€˜-fno-implicit-templatesâ€™ when compiling files that don't
!      â€˜#includeâ€™ the member template definitions.
  
       If you use one big file to do the instantiations, you may want to
!      compile it without â€˜-fno-implicit-templatesâ€™ so you get all of the
       instances required by your explicit instantiations (but not by any
       other files) without having to specify them as well.
  
       In addition to forward declaration of explicit instantiations (with
!      â€˜externâ€™), G++ has extended the template instantiation syntax to
       support instantiation of the compiler support data for a template
       class (i.e. the vtable) without instantiating any of its members
!      (with â€˜inlineâ€™), and instantiation of only the static data members
       of a template class, without the support data or member functions
!      (with â€˜staticâ€™):
  
            inline template class Foo<int>;
            static template class Foo<int>;
*************** File: gcc.info,  Node: Bound member func
*** 65360,65366 ****
  
  In C++, pointer to member functions (PMFs) are implemented using a wide
  pointer of sorts to handle all the possible call mechanisms; the PMF
! needs to store information about how to adjust the 'this' pointer, and
  if the function pointed to is virtual, where to find the vtable, and
  where in the vtable to look for the member function.  If you are using
  PMFs in an inner loop, you should really reconsider that decision.  If
--- 65369,65375 ----
  
  In C++, pointer to member functions (PMFs) are implemented using a wide
  pointer of sorts to handle all the possible call mechanisms; the PMF
! needs to store information about how to adjust the â€˜thisâ€™ pointer, and
  if the function pointed to is virtual, where to find the vtable, and
  where in the vtable to look for the member function.  If you are using
  PMFs in an inner loop, you should really reconsider that decision.  If
*************** function calls.
*** 65381,65393 ****
  
       fptr p = (fptr)(a.*fp);
  
!  For PMF constants (i.e. expressions of the form '&Klasse::Member'), no
  object is needed to obtain the address of the function.  They can be
  converted to function pointers directly:
  
       fptr p1 = (fptr)(&A::foo);
  
!  You must specify '-Wno-pmf-conversions' to use this extension.
  
  
  File: gcc.info,  Node: C++ Attributes,  Next: Function Multiversioning,  Prev: Bound member functions,  Up: C++ Extensions
--- 65390,65402 ----
  
       fptr p = (fptr)(a.*fp);
  
!  For PMF constants (i.e. expressions of the form â€˜&Klasse::Memberâ€™), no
  object is needed to obtain the address of the function.  They can be
  converted to function pointers directly:
  
       fptr p1 = (fptr)(&A::foo);
  
!  You must specify â€˜-Wno-pmf-conversionsâ€™ to use this extension.
  
  
  File: gcc.info,  Node: C++ Attributes,  Next: Function Multiversioning,  Prev: Bound member functions,  Up: C++ Extensions
*************** File: gcc.info,  Node: C++ Attributes,
*** 65397,65404 ****
  
  Some attributes only make sense for C++ programs.
  
! 'abi_tag ("TAG", ...)'
!      The 'abi_tag' attribute can be applied to a function, variable, or
       class declaration.  It modifies the mangled name of the entity to
       incorporate the tag name, in order to distinguish the function or
       class from an earlier version with a different ABI; perhaps the
--- 65406,65413 ----
  
  Some attributes only make sense for C++ programs.
  
! â€˜abi_tag ("TAG", ...)â€™
!      The â€˜abi_tagâ€™ attribute can be applied to a function, variable, or
       class declaration.  It modifies the mangled name of the entity to
       incorporate the tag name, in order to distinguish the function or
       class from an earlier version with a different ABI; perhaps the
*************** Some attributes only make sense for C++
*** 65407,65413 ****
  
       The attribute can also be applied to an inline namespace, but does
       not affect the mangled name of the namespace; in this case it is
!      only used for '-Wabi-tag' warnings and automatic tagging of
       functions and variables.  Tagging inline namespaces is generally
       preferable to tagging individual declarations, but the latter is
       sometimes necessary, such as when only certain members of a class
--- 65416,65422 ----
  
       The attribute can also be applied to an inline namespace, but does
       not affect the mangled name of the namespace; in this case it is
!      only used for â€˜-Wabi-tagâ€™ warnings and automatic tagging of
       functions and variables.  Tagging inline namespaces is generally
       preferable to tagging individual declarations, but the latter is
       sometimes necessary, such as when only certain members of a class
*************** Some attributes only make sense for C++
*** 65425,65431 ****
       will be ignored if applied to an explicit specialization or
       instantiation.
  
!      The '-Wabi-tag' flag enables a warning about a class which does not
       have all the ABI tags used by its subobjects and virtual functions;
       for users with code that needs to coexist with an earlier ABI,
       using this option can help to find all affected types that need to
--- 65434,65440 ----
       will be ignored if applied to an explicit specialization or
       instantiation.
  
!      The â€˜-Wabi-tagâ€™ flag enables a warning about a class which does not
       have all the ABI tags used by its subobjects and virtual functions;
       for users with code that needs to coexist with an earlier ABI,
       using this option can help to find all affected types that need to
*************** Some attributes only make sense for C++
*** 65434,65456 ****
       When a type involving an ABI tag is used as the type of a variable
       or return type of a function where that tag is not already present
       in the signature of the function, the tag is automatically applied
!      to the variable or function.  '-Wabi-tag' also warns about this
       situation; this warning can be avoided by explicitly tagging the
       variable or function or moving it into a tagged inline namespace.
  
! 'init_priority (PRIORITY)'
  
       In Standard C++, objects defined at namespace scope are guaranteed
       to be initialized in an order in strict accordance with that of
       their definitions _in a given translation unit_.  No guarantee is
       made for initializations across translation units.  However, GNU
       C++ allows you to control the order of initialization of objects
!      defined at namespace scope with the 'init_priority' attribute by
       specifying a relative PRIORITY, with the same meaning as for the
!      'constructor' attribute (*note Common Function Attributes::).
  
!      In the following example, 'A' would normally be created before 'B',
!      but the 'init_priority' attribute reverses that order:
  
            Some_Class  A  __attribute__ ((init_priority (2000)));
            Some_Class  B  __attribute__ ((init_priority (543)));
--- 65443,65465 ----
       When a type involving an ABI tag is used as the type of a variable
       or return type of a function where that tag is not already present
       in the signature of the function, the tag is automatically applied
!      to the variable or function.  â€˜-Wabi-tagâ€™ also warns about this
       situation; this warning can be avoided by explicitly tagging the
       variable or function or moving it into a tagged inline namespace.
  
! â€˜init_priority (PRIORITY)â€™
  
       In Standard C++, objects defined at namespace scope are guaranteed
       to be initialized in an order in strict accordance with that of
       their definitions _in a given translation unit_.  No guarantee is
       made for initializations across translation units.  However, GNU
       C++ allows you to control the order of initialization of objects
!      defined at namespace scope with the â€˜init_priorityâ€™ attribute by
       specifying a relative PRIORITY, with the same meaning as for the
!      â€˜constructorâ€™ attribute (*note Common Function Attributes::).
  
!      In the following example, â€˜Aâ€™ would normally be created before â€˜Bâ€™,
!      but the â€˜init_priorityâ€™ attribute reverses that order:
  
            Some_Class  A  __attribute__ ((init_priority (2000)));
            Some_Class  B  __attribute__ ((init_priority (543)));
*************** Some attributes only make sense for C++
*** 65458,65475 ****
       Note that the particular values of PRIORITY do not matter; only
       their relative ordering.
  
!      As with the PRIORITY argument to the 'constructor' and 'destructor'
!      attributes, a few targets do not support the 'init_priority'
       attribute.  In that case the attribute is rejected with an error
       rather than ignored.
  
! 'no_dangling'
  
       This attribute can be applied on a class type, function, or member
       function.  Dangling references to classes marked with this
!      attribute will have the '-Wdangling-reference' diagnostic
       suppressed; so will references returned from the
!      'gnu::no_dangling'-marked functions.  For example:
  
            class [[gnu::no_dangling]] S { ... };
  
--- 65467,65484 ----
       Note that the particular values of PRIORITY do not matter; only
       their relative ordering.
  
!      As with the PRIORITY argument to the â€˜constructorâ€™ and â€˜destructorâ€™
!      attributes, a few targets do not support the â€˜init_priorityâ€™
       attribute.  In that case the attribute is rejected with an error
       rather than ignored.
  
! â€˜no_danglingâ€™
  
       This attribute can be applied on a class type, function, or member
       function.  Dangling references to classes marked with this
!      attribute will have the â€˜-Wdangling-referenceâ€™ diagnostic
       suppressed; so will references returned from the
!      â€˜gnu::no_danglingâ€™-marked functions.  For example:
  
            class [[gnu::no_dangling]] S { ... };
  
*************** Some attributes only make sense for C++
*** 65502,65508 ****
              ...
            };
  
! 'warn_unused'
  
       For C++ types with non-trivial constructors and/or destructors it
       is impossible for the compiler to determine whether a variable of
--- 65511,65517 ----
              ...
            };
  
! â€˜warn_unusedâ€™
  
       For C++ types with non-trivial constructors and/or destructors it
       is impossible for the compiler to determine whether a variable of
*************** Some attributes only make sense for C++
*** 65512,65547 ****
       fundamental types.
  
       This attribute is appropriate for types which just represent a
!      value, such as 'std::string'; it is not appropriate for types which
!      control a resource, such as 'std::lock_guard'.
  
       This attribute is also accepted in C, but it is unnecessary because
       C does not have constructors or destructors.
  
! 'cold'
  
!      In addition to functions and labels, GNU C++ allows the 'cold'
       attribute to be used on C++ classes, structs, or unions.  Applying
!      the 'cold' attribute on a type has the effect of treating every
       member function of the type, including implicit special member
!      functions, as cold.  If a member function is marked with the 'hot'
!      function attribute, the 'hot' attribute takes precedence and the
!      'cold' attribute is not propagated.
  
!      For the effects of the 'cold' attribute on functions, see *note
       Common Function Attributes::.
  
! 'hot'
  
!      In addition to functions and labels, GNU C++ allows the 'hot'
       attribute to be used on C++ classes, structs, or unions.  Applying
!      the 'hot' attribute on a type has the effect of treating every
       member function of the type, including implicit special member
!      functions, as hot.  If a member function is marked with the 'cold'
!      function attribute, the 'cold' attribute takes precedence and the
!      'hot' attribute is not propagated.
  
!      For the effects of the 'hot' attribute on functions, see *note
       Common Function Attributes::.
  
  
--- 65521,65556 ----
       fundamental types.
  
       This attribute is appropriate for types which just represent a
!      value, such as â€˜std::stringâ€™; it is not appropriate for types which
!      control a resource, such as â€˜std::lock_guardâ€™.
  
       This attribute is also accepted in C, but it is unnecessary because
       C does not have constructors or destructors.
  
! â€˜coldâ€™
  
!      In addition to functions and labels, GNU C++ allows the â€˜coldâ€™
       attribute to be used on C++ classes, structs, or unions.  Applying
!      the â€˜coldâ€™ attribute on a type has the effect of treating every
       member function of the type, including implicit special member
!      functions, as cold.  If a member function is marked with the â€˜hotâ€™
!      function attribute, the â€˜hotâ€™ attribute takes precedence and the
!      â€˜coldâ€™ attribute is not propagated.
  
!      For the effects of the â€˜coldâ€™ attribute on functions, see *note
       Common Function Attributes::.
  
! â€˜hotâ€™
  
!      In addition to functions and labels, GNU C++ allows the â€˜hotâ€™
       attribute to be used on C++ classes, structs, or unions.  Applying
!      the â€˜hotâ€™ attribute on a type has the effect of treating every
       member function of the type, including implicit special member
!      functions, as hot.  If a member function is marked with the â€˜coldâ€™
!      function attribute, the â€˜coldâ€™ attribute takes precedence and the
!      â€˜hotâ€™ attribute is not propagated.
  
!      For the effects of the â€˜hotâ€™ attribute on functions, see *note
       Common Function Attributes::.
  
  
*************** compile-time determination of various ch
*** 65613,65695 ****
  pair of types).
  
   -- Built-in Function: bool __has_nothrow_assign (TYPE)
!      If TYPE is 'const'-qualified or is a reference type then the trait
!      is 'false'.  Otherwise if '__has_trivial_assign (type)' is 'true'
!      then the trait is 'true', else if TYPE is a cv-qualified class or
       union type with copy assignment operators that are known not to
!      throw an exception then the trait is 'true', else it is 'false'.
       Requires: TYPE shall be a complete type, (possibly cv-qualified)
!      'void', or an array of unknown bound.
  
   -- Built-in Function: bool __has_nothrow_copy (TYPE)
!      If '__has_trivial_copy (type)' is 'true' then the trait is 'true',
       else if TYPE is a cv-qualified class or union type with copy
       constructors that are known not to throw an exception then the
!      trait is 'true', else it is 'false'.  Requires: TYPE shall be a
!      complete type, (possibly cv-qualified) 'void', or an array of
       unknown bound.
  
   -- Built-in Function: bool __has_nothrow_constructor (TYPE)
!      If '__has_trivial_constructor (type)' is 'true' then the trait is
!      'true', else if TYPE is a cv class or union type (or array thereof)
       with a default constructor that is known not to throw an exception
!      then the trait is 'true', else it is 'false'.  Requires: TYPE shall
!      be a complete type, (possibly cv-qualified) 'void', or an array of
       unknown bound.
  
   -- Built-in Function: bool __has_trivial_assign (TYPE)
!      If TYPE is 'const'- qualified or is a reference type then the trait
!      is 'false'.  Otherwise if '__is_trivial (type)' is 'true' then the
!      trait is 'true', else if TYPE is a cv-qualified class or union type
       with a trivial copy assignment ([class.copy]) then the trait is
!      'true', else it is 'false'.  Requires: TYPE shall be a complete
!      type, (possibly cv-qualified) 'void', or an array of unknown bound.
  
   -- Built-in Function: bool __has_trivial_copy (TYPE)
!      If '__is_trivial (type)' is 'true' or TYPE is a reference type then
!      the trait is 'true', else if TYPE is a cv class or union type with
!      a trivial copy constructor ([class.copy]) then the trait is 'true',
!      else it is 'false'.  Requires: TYPE shall be a complete type,
!      (possibly cv-qualified) 'void', or an array of unknown bound.
  
   -- Built-in Function: bool __has_trivial_constructor (TYPE)
!      If '__is_trivial (type)' is 'true' then the trait is 'true', else
       if TYPE is a cv-qualified class or union type (or array thereof)
       with a trivial default constructor ([class.ctor]) then the trait is
!      'true', else it is 'false'.  Requires: TYPE shall be a complete
!      type, (possibly cv-qualified) 'void', or an array of unknown bound.
  
   -- Built-in Function: bool __has_trivial_destructor (TYPE)
!      If '__is_trivial (type)' is 'true' or TYPE is a reference type then
!      the trait is 'true', else if TYPE is a cv class or union type (or
       array thereof) with a trivial destructor ([class.dtor]) then the
!      trait is 'true', else it is 'false'.  Requires: TYPE shall be a
!      complete type, (possibly cv-qualified) 'void', or an array of
       unknown bound.
  
   -- Built-in Function: bool __has_virtual_destructor (TYPE)
       If TYPE is a class type with a virtual destructor ([class.dtor])
!      then the trait is 'true', else it is 'false'.  Requires: If TYPE is
       a non-union class type, it shall be a complete type.
  
   -- Built-in Function: bool __is_abstract (TYPE)
       If TYPE is an abstract class ([class.abstract]) then the trait is
!      'true', else it is 'false'.  Requires: If TYPE is a non-union class
       type, it shall be a complete type.
  
   -- Built-in Function: bool __is_aggregate (TYPE)
!      If TYPE is an aggregate type ([dcl.init.aggr]) the trait is 'true',
!      else it is 'false'.  Requires: If TYPE is a class type, it shall be
       a complete type.
  
   -- Built-in Function: bool __is_base_of (BASE_TYPE, DERIVED_TYPE)
       If BASE_TYPE is a base class of DERIVED_TYPE ([class.derived]) then
!      the trait is 'true', otherwise it is 'false'.  Top-level
       cv-qualifications of BASE_TYPE and DERIVED_TYPE are ignored.  For
       the purposes of this trait, a class type is considered is own base.
!      The trait is 'true' even if BASE_TYPE is an ambiguous or
!      inaccessible base class of DERIVED_TYPE.  Requires: if '__is_class
!      (base_type)' and '__is_class (derived_type)' are 'true' and
       BASE_TYPE and DERIVED_TYPE are not the same type (disregarding
       cv-qualifiers), DERIVED_TYPE shall be a complete type.  A
       diagnostic is produced if this requirement is not met.
--- 65622,65704 ----
  pair of types).
  
   -- Built-in Function: bool __has_nothrow_assign (TYPE)
!      If TYPE is â€˜constâ€™-qualified or is a reference type then the trait
!      is â€˜falseâ€™.  Otherwise if â€˜__has_trivial_assign (type)â€™ is â€˜trueâ€™
!      then the trait is â€˜trueâ€™, else if TYPE is a cv-qualified class or
       union type with copy assignment operators that are known not to
!      throw an exception then the trait is â€˜trueâ€™, else it is â€˜falseâ€™.
       Requires: TYPE shall be a complete type, (possibly cv-qualified)
!      â€˜voidâ€™, or an array of unknown bound.
  
   -- Built-in Function: bool __has_nothrow_copy (TYPE)
!      If â€˜__has_trivial_copy (type)â€™ is â€˜trueâ€™ then the trait is â€˜trueâ€™,
       else if TYPE is a cv-qualified class or union type with copy
       constructors that are known not to throw an exception then the
!      trait is â€˜trueâ€™, else it is â€˜falseâ€™.  Requires: TYPE shall be a
!      complete type, (possibly cv-qualified) â€˜voidâ€™, or an array of
       unknown bound.
  
   -- Built-in Function: bool __has_nothrow_constructor (TYPE)
!      If â€˜__has_trivial_constructor (type)â€™ is â€˜trueâ€™ then the trait is
!      â€˜trueâ€™, else if TYPE is a cv class or union type (or array thereof)
       with a default constructor that is known not to throw an exception
!      then the trait is â€˜trueâ€™, else it is â€˜falseâ€™.  Requires: TYPE shall
!      be a complete type, (possibly cv-qualified) â€˜voidâ€™, or an array of
       unknown bound.
  
   -- Built-in Function: bool __has_trivial_assign (TYPE)
!      If TYPE is â€˜constâ€™- qualified or is a reference type then the trait
!      is â€˜falseâ€™.  Otherwise if â€˜__is_trivial (type)â€™ is â€˜trueâ€™ then the
!      trait is â€˜trueâ€™, else if TYPE is a cv-qualified class or union type
       with a trivial copy assignment ([class.copy]) then the trait is
!      â€˜trueâ€™, else it is â€˜falseâ€™.  Requires: TYPE shall be a complete
!      type, (possibly cv-qualified) â€˜voidâ€™, or an array of unknown bound.
  
   -- Built-in Function: bool __has_trivial_copy (TYPE)
!      If â€˜__is_trivial (type)â€™ is â€˜trueâ€™ or TYPE is a reference type then
!      the trait is â€˜trueâ€™, else if TYPE is a cv class or union type with
!      a trivial copy constructor ([class.copy]) then the trait is â€˜trueâ€™,
!      else it is â€˜falseâ€™.  Requires: TYPE shall be a complete type,
!      (possibly cv-qualified) â€˜voidâ€™, or an array of unknown bound.
  
   -- Built-in Function: bool __has_trivial_constructor (TYPE)
!      If â€˜__is_trivial (type)â€™ is â€˜trueâ€™ then the trait is â€˜trueâ€™, else
       if TYPE is a cv-qualified class or union type (or array thereof)
       with a trivial default constructor ([class.ctor]) then the trait is
!      â€˜trueâ€™, else it is â€˜falseâ€™.  Requires: TYPE shall be a complete
!      type, (possibly cv-qualified) â€˜voidâ€™, or an array of unknown bound.
  
   -- Built-in Function: bool __has_trivial_destructor (TYPE)
!      If â€˜__is_trivial (type)â€™ is â€˜trueâ€™ or TYPE is a reference type then
!      the trait is â€˜trueâ€™, else if TYPE is a cv class or union type (or
       array thereof) with a trivial destructor ([class.dtor]) then the
!      trait is â€˜trueâ€™, else it is â€˜falseâ€™.  Requires: TYPE shall be a
!      complete type, (possibly cv-qualified) â€˜voidâ€™, or an array of
       unknown bound.
  
   -- Built-in Function: bool __has_virtual_destructor (TYPE)
       If TYPE is a class type with a virtual destructor ([class.dtor])
!      then the trait is â€˜trueâ€™, else it is â€˜falseâ€™.  Requires: If TYPE is
       a non-union class type, it shall be a complete type.
  
   -- Built-in Function: bool __is_abstract (TYPE)
       If TYPE is an abstract class ([class.abstract]) then the trait is
!      â€˜trueâ€™, else it is â€˜falseâ€™.  Requires: If TYPE is a non-union class
       type, it shall be a complete type.
  
   -- Built-in Function: bool __is_aggregate (TYPE)
!      If TYPE is an aggregate type ([dcl.init.aggr]) the trait is â€˜trueâ€™,
!      else it is â€˜falseâ€™.  Requires: If TYPE is a class type, it shall be
       a complete type.
  
   -- Built-in Function: bool __is_base_of (BASE_TYPE, DERIVED_TYPE)
       If BASE_TYPE is a base class of DERIVED_TYPE ([class.derived]) then
!      the trait is â€˜trueâ€™, otherwise it is â€˜falseâ€™.  Top-level
       cv-qualifications of BASE_TYPE and DERIVED_TYPE are ignored.  For
       the purposes of this trait, a class type is considered is own base.
!      The trait is â€˜trueâ€™ even if BASE_TYPE is an ambiguous or
!      inaccessible base class of DERIVED_TYPE.  Requires: if â€˜__is_class
!      (base_type)â€™ and â€˜__is_class (derived_type)â€™ are â€˜trueâ€™ and
       BASE_TYPE and DERIVED_TYPE are not the same type (disregarding
       cv-qualifiers), DERIVED_TYPE shall be a complete type.  A
       diagnostic is produced if this requirement is not met.
*************** pair of types).
*** 65697,65761 ****
   -- Built-in Function: bool __builtin_is_virtual_base_of (BASE_TYPE,
            DERIVED_TYPE)
       If BASE_TYPE is a virtual base class of DERIVED_TYPE
!      ([class.derived], [class.mi]) then the trait is 'true', otherwise
!      it is 'false'.  Top-level cv-qualifications of BASE_TYPE and
!      DERIVED_TYPE are ignored.  The trait is 'true' even if BASE_TYPE is
       an ambiguous or inaccessible virtual base class of DERIVED_TYPE.
!      Requires: if '__is_class (base_type)' and '__is_class
!      (derived_type)' are 'true', DERIVED_TYPE shall be a complete type.
       A diagnostic is produced if this requirement is not met.
  
   -- Built-in Function: bool __is_class (TYPE)
       If TYPE is a cv-qualified class type, and not a union type
!      ([basic.compound]) the trait is 'true', else it is 'false'.
  
   -- Built-in Function: bool __is_empty (TYPE)
!      If '__is_class (type)' is 'false' then the trait is 'false'.
       Otherwise TYPE is considered empty if and only if: TYPE has no
       non-static data members, or all non-static data members, if any,
       are bit-fields of length 0, and TYPE has no virtual members, and
       TYPE has no virtual base classes, and TYPE has no base classes
!      BASE_TYPE for which '__is_empty (base_type)' is 'false'.  Requires:
       If TYPE is a non-union class type, it shall be a complete type.
  
   -- Built-in Function: bool __is_enum (TYPE)
       If TYPE is a cv enumeration type ([basic.compound]) the trait is
!      'true', else it is 'false'.
  
   -- Built-in Function: bool __is_final (TYPE)
!      If TYPE is a class or union type marked 'final', then the trait is
!      'true', else it is 'false'.  Requires: If TYPE is a class type, it
       shall be a complete type.
  
   -- Built-in Function: bool __is_literal_type (TYPE)
!      If TYPE is a literal type ([basic.types]) the trait is 'true', else
!      it is 'false'.  Requires: TYPE shall be a complete type, (possibly
!      cv-qualified) 'void', or an array of unknown bound.
  
   -- Built-in Function: bool __is_pod (TYPE)
!      If TYPE is a cv POD type ([basic.types]) then the trait is 'true',
!      else it is 'false'.  Requires: TYPE shall be a complete type,
!      (possibly cv-qualified) 'void', or an array of unknown bound.
  
   -- Built-in Function: bool __is_polymorphic (TYPE)
       If TYPE is a polymorphic class ([class.virtual]) then the trait is
!      'true', else it is 'false'.  Requires: If TYPE is a non-union class
       type, it shall be a complete type.
  
   -- Built-in Function: bool __is_standard_layout (TYPE)
       If TYPE is a standard-layout type ([basic.types]) the trait is
!      'true', else it is 'false'.  Requires: TYPE shall be a complete
       type, an array of complete types, or (possibly cv-qualified)
!      'void'.
  
   -- Built-in Function: bool __is_trivial (TYPE)
!      If TYPE is a trivial type ([basic.types]) the trait is 'true', else
!      it is 'false'.  Requires: TYPE shall be a complete type, an array
!      of complete types, or (possibly cv-qualified) 'void'.
  
   -- Built-in Function: bool __is_union (TYPE)
!      If TYPE is a cv union type ([basic.compound]) the trait is 'true',
!      else it is 'false'.
  
   -- Built-in Function: bool __underlying_type (TYPE)
       The underlying type of TYPE.  Requires: TYPE shall be an
--- 65706,65770 ----
   -- Built-in Function: bool __builtin_is_virtual_base_of (BASE_TYPE,
            DERIVED_TYPE)
       If BASE_TYPE is a virtual base class of DERIVED_TYPE
!      ([class.derived], [class.mi]) then the trait is â€˜trueâ€™, otherwise
!      it is â€˜falseâ€™.  Top-level cv-qualifications of BASE_TYPE and
!      DERIVED_TYPE are ignored.  The trait is â€˜trueâ€™ even if BASE_TYPE is
       an ambiguous or inaccessible virtual base class of DERIVED_TYPE.
!      Requires: if â€˜__is_class (base_type)â€™ and â€˜__is_class
!      (derived_type)â€™ are â€˜trueâ€™, DERIVED_TYPE shall be a complete type.
       A diagnostic is produced if this requirement is not met.
  
   -- Built-in Function: bool __is_class (TYPE)
       If TYPE is a cv-qualified class type, and not a union type
!      ([basic.compound]) the trait is â€˜trueâ€™, else it is â€˜falseâ€™.
  
   -- Built-in Function: bool __is_empty (TYPE)
!      If â€˜__is_class (type)â€™ is â€˜falseâ€™ then the trait is â€˜falseâ€™.
       Otherwise TYPE is considered empty if and only if: TYPE has no
       non-static data members, or all non-static data members, if any,
       are bit-fields of length 0, and TYPE has no virtual members, and
       TYPE has no virtual base classes, and TYPE has no base classes
!      BASE_TYPE for which â€˜__is_empty (base_type)â€™ is â€˜falseâ€™.  Requires:
       If TYPE is a non-union class type, it shall be a complete type.
  
   -- Built-in Function: bool __is_enum (TYPE)
       If TYPE is a cv enumeration type ([basic.compound]) the trait is
!      â€˜trueâ€™, else it is â€˜falseâ€™.
  
   -- Built-in Function: bool __is_final (TYPE)
!      If TYPE is a class or union type marked â€˜finalâ€™, then the trait is
!      â€˜trueâ€™, else it is â€˜falseâ€™.  Requires: If TYPE is a class type, it
       shall be a complete type.
  
   -- Built-in Function: bool __is_literal_type (TYPE)
!      If TYPE is a literal type ([basic.types]) the trait is â€˜trueâ€™, else
!      it is â€˜falseâ€™.  Requires: TYPE shall be a complete type, (possibly
!      cv-qualified) â€˜voidâ€™, or an array of unknown bound.
  
   -- Built-in Function: bool __is_pod (TYPE)
!      If TYPE is a cv POD type ([basic.types]) then the trait is â€˜trueâ€™,
!      else it is â€˜falseâ€™.  Requires: TYPE shall be a complete type,
!      (possibly cv-qualified) â€˜voidâ€™, or an array of unknown bound.
  
   -- Built-in Function: bool __is_polymorphic (TYPE)
       If TYPE is a polymorphic class ([class.virtual]) then the trait is
!      â€˜trueâ€™, else it is â€˜falseâ€™.  Requires: If TYPE is a non-union class
       type, it shall be a complete type.
  
   -- Built-in Function: bool __is_standard_layout (TYPE)
       If TYPE is a standard-layout type ([basic.types]) the trait is
!      â€˜trueâ€™, else it is â€˜falseâ€™.  Requires: TYPE shall be a complete
       type, an array of complete types, or (possibly cv-qualified)
!      â€˜voidâ€™.
  
   -- Built-in Function: bool __is_trivial (TYPE)
!      If TYPE is a trivial type ([basic.types]) the trait is â€˜trueâ€™, else
!      it is â€˜falseâ€™.  Requires: TYPE shall be a complete type, an array
!      of complete types, or (possibly cv-qualified) â€˜voidâ€™.
  
   -- Built-in Function: bool __is_union (TYPE)
!      If TYPE is a cv union type ([basic.compound]) the trait is â€˜trueâ€™,
!      else it is â€˜falseâ€™.
  
   -- Built-in Function: bool __underlying_type (TYPE)
       The underlying type of TYPE.  Requires: TYPE shall be an
*************** pair of types).
*** 65764,65774 ****
   -- Built-in Function: bool __integer_pack (LENGTH)
       When used as the pattern of a pack expansion within a template
       definition, expands to a template argument pack containing integers
!      from '0' to 'LENGTH-1'.  This is provided for efficient
!      implementation of 'std::make_integer_sequence'.
  
   -- Built-in Function: bool __is_same (TYPE1, TYPE2)
!      A binary type trait: 'true' whenever the TYPE1 and TYPE2 refer to
       the same type.
  
  
--- 65773,65783 ----
   -- Built-in Function: bool __integer_pack (LENGTH)
       When used as the pattern of a pack expansion within a template
       definition, expands to a template argument pack containing integers
!      from â€˜0â€™ to â€˜LENGTH-1â€™.  This is provided for efficient
!      implementation of â€˜std::make_integer_sequenceâ€™.
  
   -- Built-in Function: bool __is_same (TYPE1, TYPE2)
!      A binary type trait: â€˜trueâ€™ whenever the TYPE1 and TYPE2 refer to
       the same type.
  
  
*************** superior alternatives.  Using the old fe
*** 65784,65790 ****
  some cases that the feature will be dropped in the future.  In other
  cases, the feature might be gone already.
  
!  G++ allows a virtual function returning 'void *' to be overridden by
  one returning a different pointer type.  This extension to the covariant
  return type rules is now deprecated and will be removed from a future
  version.
--- 65793,65799 ----
  some cases that the feature will be dropped in the future.  In other
  cases, the feature might be gone already.
  
!  G++ allows a virtual function returning â€˜void *â€™ to be overridden by
  one returning a different pointer type.  This extension to the covariant
  return type rules is now deprecated and will be removed from a future
  version.
*************** and other places where they are not perm
*** 65794,65800 ****
  deprecated and will be removed from a future version of G++.
  
   G++ allows attributes to follow a parenthesized direct initializer,
! e.g. ' int f (0) __attribute__ ((something)); ' This extension has been
  ignored since G++ 3.3 and is deprecated.
  
   G++ allows anonymous structs and unions to have members that are not
--- 65803,65809 ----
  deprecated and will be removed from a future version of G++.
  
   G++ allows attributes to follow a parenthesized direct initializer,
! e.g. â€˜ int f (0) __attribute__ ((something)); â€™ This extension has been
  ignored since G++ 3.3 and is deprecated.
  
   G++ allows anonymous structs and unions to have members that are not
*************** backwards compatibilities.  _All such ba
*** 65816,65827 ****
  are liable to disappear in future versions of G++._  They should be
  considered deprecated.  *Note Deprecated Features::.
  
! 'Implicit C language'
!      Old C system header files did not contain an 'extern "C" {...}'
       scope to set the language.  On such systems, all system header
       files are implicitly scoped inside a C language scope.  Such
       headers must correctly prototype function argument types, there is
!      no leeway for '()' to indicate an unspecified set of arguments.
  
  
  File: gcc.info,  Node: Objective-C,  Next: Compatibility,  Prev: C++ Extensions,  Up: Top
--- 65825,65836 ----
  are liable to disappear in future versions of G++._  They should be
  considered deprecated.  *Note Deprecated Features::.
  
! â€˜Implicit C languageâ€™
!      Old C system header files did not contain an â€˜extern "C" {...}â€™
       scope to set the language.  On such systems, all system header
       files are implicitly scoped inside a C language scope.  Such
       headers must correctly prototype function argument types, there is
!      no leeway for â€˜()â€™ to indicate an unspecified set of arguments.
  
  
  File: gcc.info,  Node: Objective-C,  Next: Compatibility,  Prev: C++ Extensions,  Up: Top
*************** provided by the "Objective-C 2.0" Apple/
*** 65883,65922 ****
  API is documented in the public header files of the GNU Objective-C
  runtime:
  
!    * 'objc/objc.h': this is the basic Objective-C header file, defining
!      the basic Objective-C types such as 'id', 'Class' and 'BOOL'.  You
       have to include this header to do almost anything with Objective-C.
  
!    * 'objc/runtime.h': this header declares most of the public runtime
       API functions allowing you to inspect and manipulate the
       Objective-C runtime data structures.  These functions are fairly
       standardized across Objective-C runtimes and are almost identical
       to the Apple/NeXT Objective-C runtime ones.  It does not declare
       functions in some specialized areas (constructing and forwarding
       message invocations, threading) which are in the other headers
!      below.  You have to include 'objc/objc.h' and 'objc/runtime.h' to
!      use any of the functions, such as 'class_getName()', declared in
!      'objc/runtime.h'.
  
!    * 'objc/message.h': this header declares public functions used to
       construct, deconstruct and forward message invocations.  Because
       messaging is done in quite a different way on different runtimes,
       functions in this header are specific to the GNU Objective-C
       runtime implementation.
  
!    * 'objc/objc-exception.h': this header declares some public functions
       related to Objective-C exceptions.  For example functions in this
       header allow you to throw an Objective-C exception from plain C/C++
       code.
  
!    * 'objc/objc-sync.h': this header declares some public functions
!      related to the Objective-C '@synchronized()' syntax, allowing you
!      to emulate an Objective-C '@synchronized()' block in plain C/C++
       code.
  
!    * 'objc/thr.h': this header declares a public runtime API threading
       layer that is only provided by the GNU Objective-C runtime.  It
!      declares functions such as 'objc_mutex_lock()', which provide a
       platform-independent set of threading functions.
  
   The header files contain detailed documentation for each function in
--- 65892,65931 ----
  API is documented in the public header files of the GNU Objective-C
  runtime:
  
!    â€¢ â€˜objc/objc.hâ€™: this is the basic Objective-C header file, defining
!      the basic Objective-C types such as â€˜idâ€™, â€˜Classâ€™ and â€˜BOOLâ€™.  You
       have to include this header to do almost anything with Objective-C.
  
!    â€¢ â€˜objc/runtime.hâ€™: this header declares most of the public runtime
       API functions allowing you to inspect and manipulate the
       Objective-C runtime data structures.  These functions are fairly
       standardized across Objective-C runtimes and are almost identical
       to the Apple/NeXT Objective-C runtime ones.  It does not declare
       functions in some specialized areas (constructing and forwarding
       message invocations, threading) which are in the other headers
!      below.  You have to include â€˜objc/objc.hâ€™ and â€˜objc/runtime.hâ€™ to
!      use any of the functions, such as â€˜class_getName()â€™, declared in
!      â€˜objc/runtime.hâ€™.
  
!    â€¢ â€˜objc/message.hâ€™: this header declares public functions used to
       construct, deconstruct and forward message invocations.  Because
       messaging is done in quite a different way on different runtimes,
       functions in this header are specific to the GNU Objective-C
       runtime implementation.
  
!    â€¢ â€˜objc/objc-exception.hâ€™: this header declares some public functions
       related to Objective-C exceptions.  For example functions in this
       header allow you to throw an Objective-C exception from plain C/C++
       code.
  
!    â€¢ â€˜objc/objc-sync.hâ€™: this header declares some public functions
!      related to the Objective-C â€˜@synchronized()â€™ syntax, allowing you
!      to emulate an Objective-C â€˜@synchronized()â€™ block in plain C/C++
       code.
  
!    â€¢ â€˜objc/thr.hâ€™: this header declares a public runtime API threading
       layer that is only provided by the GNU Objective-C runtime.  It
!      declares functions such as â€˜objc_mutex_lock()â€™, which provide a
       platform-independent set of threading functions.
  
   The header files contain detailed documentation for each function in
*************** File: gcc.info,  Node: Traditional GNU O
*** 65931,65939 ****
  The GNU Objective-C runtime used to provide a different API, which we
  call the "traditional" GNU Objective-C runtime API. Functions belonging
  to this API are easy to recognize because they use a different naming
! convention, such as 'class_get_super_class()' (traditional API) instead
! of 'class_getSuperclass()' (modern API). Software using this API
! includes the file 'objc/objc-api.h' where it is declared.
  
   Starting with GCC 4.7.0, the traditional GNU runtime API is no longer
  available.
--- 65940,65948 ----
  The GNU Objective-C runtime used to provide a different API, which we
  call the "traditional" GNU Objective-C runtime API. Functions belonging
  to this API are easy to recognize because they use a different naming
! convention, such as â€˜class_get_super_class()â€™ (traditional API) instead
! of â€˜class_getSuperclass()â€™ (modern API). Software using this API
! includes the file â€˜objc/objc-api.hâ€™ where it is declared.
  
   Starting with GCC 4.7.0, the traditional GNU runtime API is no longer
  available.
*************** available.
*** 65941,65966 ****
  
  File: gcc.info,  Node: Executing code before main,  Next: Type encoding,  Prev: GNU Objective-C runtime API,  Up: Objective-C
  
! 9.2 '+load': Executing Code before 'main'
  =========================================
  
  This section is specific for the GNU Objective-C runtime.  If you are
  using a different runtime, you can skip it.
  
   The GNU Objective-C runtime provides a way that allows you to execute
! code before the execution of the program enters the 'main' function.
  The code is executed on a per-class and a per-category basis, through a
! special class method '+load'.
  
   This facility is very useful if you want to initialize global variables
  which can be accessed by the program directly, without sending a message
  to the class first.  The usual way to initialize global variables, in
! the '+initialize' method, might not be useful because '+initialize' is
  only called when the first message is sent to a class object, which in
  some cases could be too late.
  
!  Suppose for example you have a 'FileStream' class that declares
! 'Stdin', 'Stdout' and 'Stderr' as global variables, like below:
  
  
       FileStream *Stdin = nil;
--- 65950,65975 ----
  
  File: gcc.info,  Node: Executing code before main,  Next: Type encoding,  Prev: GNU Objective-C runtime API,  Up: Objective-C
  
! 9.2 â€˜+loadâ€™: Executing Code before â€˜mainâ€™
  =========================================
  
  This section is specific for the GNU Objective-C runtime.  If you are
  using a different runtime, you can skip it.
  
   The GNU Objective-C runtime provides a way that allows you to execute
! code before the execution of the program enters the â€˜mainâ€™ function.
  The code is executed on a per-class and a per-category basis, through a
! special class method â€˜+loadâ€™.
  
   This facility is very useful if you want to initialize global variables
  which can be accessed by the program directly, without sending a message
  to the class first.  The usual way to initialize global variables, in
! the â€˜+initializeâ€™ method, might not be useful because â€˜+initializeâ€™ is
  only called when the first message is sent to a class object, which in
  some cases could be too late.
  
!  Suppose for example you have a â€˜FileStreamâ€™ class that declares
! â€˜Stdinâ€™, â€˜Stdoutâ€™ and â€˜Stderrâ€™ as global variables, like below:
  
  
       FileStream *Stdin = nil;
*************** some cases could be too late.
*** 65980,65995 ****
       @end
  
  
!  In this example, the initialization of 'Stdin', 'Stdout' and 'Stderr'
! in '+initialize' occurs too late.  The programmer can send a message to
  one of these objects before the variables are actually initialized, thus
! sending messages to the 'nil' object.  The '+initialize' method which
  actually initializes the global variables is not invoked until the first
  message is sent to the class object.  The solution would require these
! variables to be initialized just before entering 'main'.
  
!  The correct solution of the above problem is to use the '+load' method
! instead of '+initialize':
  
  
       @implementation FileStream
--- 65989,66004 ----
       @end
  
  
!  In this example, the initialization of â€˜Stdinâ€™, â€˜Stdoutâ€™ and â€˜Stderrâ€™
! in â€˜+initializeâ€™ occurs too late.  The programmer can send a message to
  one of these objects before the variables are actually initialized, thus
! sending messages to the â€˜nilâ€™ object.  The â€˜+initializeâ€™ method which
  actually initializes the global variables is not invoked until the first
  message is sent to the class object.  The solution would require these
! variables to be initialized just before entering â€˜mainâ€™.
  
!  The correct solution of the above problem is to use the â€˜+loadâ€™ method
! instead of â€˜+initializeâ€™:
  
  
       @implementation FileStream
*************** instead of '+initialize':
*** 66005,66018 ****
       @end
  
  
!  The '+load' is a method that is not overridden by categories.  If a
! class and a category of it both implement '+load', both methods are
  invoked.  This allows some additional initializations to be performed in
  a category.
  
!  This mechanism is not intended to be a replacement for '+initialize'.
  You should be aware of its limitations when you decide to use it instead
! of '+initialize'.
  
  * Menu:
  
--- 66014,66027 ----
       @end
  
  
!  The â€˜+loadâ€™ is a method that is not overridden by categories.  If a
! class and a category of it both implement â€˜+loadâ€™, both methods are
  invoked.  This allows some additional initializations to be performed in
  a category.
  
!  This mechanism is not intended to be a replacement for â€˜+initializeâ€™.
  You should be aware of its limitations when you decide to use it instead
! of â€˜+initializeâ€™.
  
  * Menu:
  
*************** of '+initialize'.
*** 66021,66075 ****
  
  File: gcc.info,  Node: What you can and what you cannot do in +load,  Up: Executing code before main
  
! 9.2.1 What You Can and Cannot Do in '+load'
  -------------------------------------------
  
! '+load' is to be used only as a last resort.  Because it is executed
  very early, most of the Objective-C runtime machinery will not be ready
! when '+load' is executed; hence '+load' works best for executing C code
  that is independent on the Objective-C runtime.
  
!  The '+load' implementation in the GNU runtime guarantees you the
  following things:
  
!    * you can write whatever C code you like;
  
!    * you can allocate and send messages to objects whose class is
       implemented in the same file;
  
!    * the '+load' implementation of all super classes of a class are
!      executed before the '+load' of that class is executed;
  
!    * the '+load' implementation of a class is executed before the
!      '+load' implementation of any category.
  
   In particular, the following things, even if they can work in a
  particular case, are not guaranteed:
  
!    * allocation of or sending messages to arbitrary objects;
  
!    * allocation of or sending messages to objects whose classes have a
       category implemented in the same file;
  
!    * sending messages to Objective-C constant strings ('@"this is a
!      constant string"');
  
!  You should make no assumptions about receiving '+load' in sibling
! classes when you write '+load' of a class.  The order in which sibling
! classes receive '+load' is not guaranteed.
  
!  The order in which '+load' and '+initialize' are called could be
  problematic if this matters.  If you don't allocate objects inside
! '+load', it is guaranteed that '+load' is called before '+initialize'.
! If you create an object inside '+load' the '+initialize' method of
! object's class is invoked even if '+load' was not invoked.  Note if you
! explicitly call '+load' on a class, '+initialize' will be called first.
  To avoid possible problems try to implement only one of these methods.
  
!  The '+load' method is also invoked when a bundle is dynamically loaded
  into your running program.  This happens automatically without any
  intervening operation from you.  When you write bundles and you need to
! write '+load' you can safely create and send messages to objects whose
  classes already exist in the running program.  The same restrictions as
  above apply to classes defined in bundle.
  
--- 66030,66084 ----
  
  File: gcc.info,  Node: What you can and what you cannot do in +load,  Up: Executing code before main
  
! 9.2.1 What You Can and Cannot Do in â€˜+loadâ€™
  -------------------------------------------
  
! â€˜+loadâ€™ is to be used only as a last resort.  Because it is executed
  very early, most of the Objective-C runtime machinery will not be ready
! when â€˜+loadâ€™ is executed; hence â€˜+loadâ€™ works best for executing C code
  that is independent on the Objective-C runtime.
  
!  The â€˜+loadâ€™ implementation in the GNU runtime guarantees you the
  following things:
  
!    â€¢ you can write whatever C code you like;
  
!    â€¢ you can allocate and send messages to objects whose class is
       implemented in the same file;
  
!    â€¢ the â€˜+loadâ€™ implementation of all super classes of a class are
!      executed before the â€˜+loadâ€™ of that class is executed;
  
!    â€¢ the â€˜+loadâ€™ implementation of a class is executed before the
!      â€˜+loadâ€™ implementation of any category.
  
   In particular, the following things, even if they can work in a
  particular case, are not guaranteed:
  
!    â€¢ allocation of or sending messages to arbitrary objects;
  
!    â€¢ allocation of or sending messages to objects whose classes have a
       category implemented in the same file;
  
!    â€¢ sending messages to Objective-C constant strings (â€˜@"this is a
!      constant string"â€™);
  
!  You should make no assumptions about receiving â€˜+loadâ€™ in sibling
! classes when you write â€˜+loadâ€™ of a class.  The order in which sibling
! classes receive â€˜+loadâ€™ is not guaranteed.
  
!  The order in which â€˜+loadâ€™ and â€˜+initializeâ€™ are called could be
  problematic if this matters.  If you don't allocate objects inside
! â€˜+loadâ€™, it is guaranteed that â€˜+loadâ€™ is called before â€˜+initializeâ€™.
! If you create an object inside â€˜+loadâ€™ the â€˜+initializeâ€™ method of
! object's class is invoked even if â€˜+loadâ€™ was not invoked.  Note if you
! explicitly call â€˜+loadâ€™ on a class, â€˜+initializeâ€™ will be called first.
  To avoid possible problems try to implement only one of these methods.
  
!  The â€˜+loadâ€™ method is also invoked when a bundle is dynamically loaded
  into your running program.  This happens automatically without any
  intervening operation from you.  When you write bundles and you need to
! write â€˜+loadâ€™ you can safely create and send messages to objects whose
  classes already exist in the running program.  The same restrictions as
  above apply to classes defined in bundle.
  
*************** selectors and methods and about objects
*** 66089,66122 ****
  
   The types are encoded in the following way:
  
! '_Bool'            'B'
! 'char'             'c'
! 'unsigned char'    'C'
! 'short'            's'
! 'unsigned short'   'S'
! 'int'              'i'
! 'unsigned int'     'I'
! 'long'             'l'
! 'unsigned long'    'L'
! 'long long'        'q'
! 'unsigned long     'Q'
! long'
! 'float'            'f'
! 'double'           'd'
! 'long double'      'D'
! 'void'             'v'
! 'id'               '@'
! 'Class'            '#'
! 'SEL'              ':'
! 'char*'            '*'
! 'enum'             an 'enum' is encoded exactly as the integer type
                     that the compiler uses for it, which depends on the
                     enumeration values.  Often the compiler users
!                    'unsigned int', which is then encoded as 'I'.
! unknown type       '?'
! Complex types      'j' followed by the inner type.  For example
!                    '_Complex double' is encoded as "jd".
! bit-fields         'b' followed by the starting position of the
                     bit-field, the type of the bit-field and the size of
                     the bit-field (the bit-fields encoding was changed
                     from the NeXT's compiler encoding, see below)
--- 66098,66131 ----
  
   The types are encoded in the following way:
  
! â€˜_Boolâ€™            â€˜Bâ€™
! â€˜charâ€™             â€˜câ€™
! â€˜unsigned charâ€™    â€˜Câ€™
! â€˜shortâ€™            â€˜sâ€™
! â€˜unsigned shortâ€™   â€˜Sâ€™
! â€˜intâ€™              â€˜iâ€™
! â€˜unsigned intâ€™     â€˜Iâ€™
! â€˜longâ€™             â€˜lâ€™
! â€˜unsigned longâ€™    â€˜Lâ€™
! â€˜long longâ€™        â€˜qâ€™
! â€˜unsigned long     â€˜Qâ€™
! longâ€™
! â€˜floatâ€™            â€˜fâ€™
! â€˜doubleâ€™           â€˜dâ€™
! â€˜long doubleâ€™      â€˜Dâ€™
! â€˜voidâ€™             â€˜vâ€™
! â€˜idâ€™               â€˜@â€™
! â€˜Classâ€™            â€˜#â€™
! â€˜SELâ€™              â€˜:â€™
! â€˜char*â€™            â€˜*â€™
! â€˜enumâ€™             an â€˜enumâ€™ is encoded exactly as the integer type
                     that the compiler uses for it, which depends on the
                     enumeration values.  Often the compiler users
!                    â€˜unsigned intâ€™, which is then encoded as â€˜Iâ€™.
! unknown type       â€˜?â€™
! Complex types      â€˜jâ€™ followed by the inner type.  For example
!                    â€˜_Complex doubleâ€™ is encoded as "jd".
! bit-fields         â€˜bâ€™ followed by the starting position of the
                     bit-field, the type of the bit-field and the size of
                     the bit-field (the bit-fields encoding was changed
                     from the NeXT's compiler encoding, see below)
*************** bit closest to the beginning of the stru
*** 66137,66155 ****
  
   The non-atomic types are encoded as follows:
  
! pointers       '^' followed by the pointed type.
! arrays         '[' followed by the number of elements in the array
!                followed by the type of the elements followed by ']'
! structures     '{' followed by the name of the structure (or '?' if the
!                structure is unnamed), the '=' sign, the type of the
!                members and by '}'
! unions         '(' followed by the name of the structure (or '?' if the
!                union is unnamed), the '=' sign, the type of the members
!                followed by ')'
! vectors        '![' followed by the vector_size (the number of bytes
                 composing the vector) followed by a comma, followed by
                 the alignment (in bytes) of the vector, followed by the
!                type of the elements followed by ']'
  
   Here are some types and their encodings, as they are generated by the
  compiler on an i386 machine:
--- 66146,66164 ----
  
   The non-atomic types are encoded as follows:
  
! pointers       â€˜^â€™ followed by the pointed type.
! arrays         â€˜[â€™ followed by the number of elements in the array
!                followed by the type of the elements followed by â€˜]â€™
! structures     â€˜{â€™ followed by the name of the structure (or â€˜?â€™ if the
!                structure is unnamed), the â€˜=â€™ sign, the type of the
!                members and by â€˜}â€™
! unions         â€˜(â€™ followed by the name of the structure (or â€˜?â€™ if the
!                union is unnamed), the â€˜=â€™ sign, the type of the members
!                followed by â€˜)â€™
! vectors        â€˜![â€™ followed by the vector_size (the number of bytes
                 composing the vector) followed by a comma, followed by
                 the alignment (in bytes) of the vector, followed by the
!                type of the elements followed by â€˜]â€™
  
   Here are some types and their encodings, as they are generated by the
  compiler on an i386 machine:
*************** compiler on an i386 machine:
*** 66157,66171 ****
  
  Objective-C type                            Compiler encoding
  --------------------------------------------------------------------------
!      int a[10];                             '[10i]'
!      struct {                               '{?=i[3f]b128i3b131i2c}'
         int i;
         float f[3];
         int a:3;
         int b:2;
         char c;
       }
!      int a __attribute__ ((vector_size (16)));'![16,16i]' (alignment
                                              depends on the machine)
  
  
--- 66166,66180 ----
  
  Objective-C type                            Compiler encoding
  --------------------------------------------------------------------------
!      int a[10];                             â€˜[10i]â€™
!      struct {                               â€˜{?=i[3f]b128i3b131i2c}â€™
         int i;
         float f[3];
         int a:3;
         int b:2;
         char c;
       }
!      int a __attribute__ ((vector_size (16)));â€˜![16,16i]â€™ (alignment
                                              depends on the machine)
  
  
*************** specifiers:
*** 66176,66217 ****
  
  Specifier          Encoding
  --------------------------------------------------------------------------
! 'const'            'r'
! 'in'               'n'
! 'inout'            'N'
! 'out'              'o'
! 'bycopy'           'O'
! 'byref'            'R'
! 'oneway'           'V'
  
  
   The type specifiers are encoded just before the type.  Unlike types
  however, the type specifiers are only encoded when they appear in method
  argument types.
  
!  Note how 'const' interacts with pointers:
  
  
  Objective-C type   Compiler encoding
  --------------------------------------------------------------------------
!      const int     'ri'
!      const int*    '^ri'
!      int *const    'r^i'
  
  
!  'const int*' is a pointer to a 'const int', and so is encoded as '^ri'.
! 'int* const', instead, is a 'const' pointer to an 'int', and so is
! encoded as 'r^i'.
  
!  Finally, there is a complication when encoding 'const char *' versus
! 'char * const'.  Because 'char *' is encoded as '*' and not as '^c',
! there is no way to express the fact that 'r' applies to the pointer or
  to the pointee.
  
!  Hence, it is assumed as a convention that 'r*' means 'const char *'
  (since it is what is most often meant), and there is no way to encode
! 'char *const'.  'char *const' would simply be encoded as '*', and the
! 'const' is lost.
  
  * Menu:
  
--- 66185,66226 ----
  
  Specifier          Encoding
  --------------------------------------------------------------------------
! â€˜constâ€™            â€˜râ€™
! â€˜inâ€™               â€˜nâ€™
! â€˜inoutâ€™            â€˜Nâ€™
! â€˜outâ€™              â€˜oâ€™
! â€˜bycopyâ€™           â€˜Oâ€™
! â€˜byrefâ€™            â€˜Râ€™
! â€˜onewayâ€™           â€˜Vâ€™
  
  
   The type specifiers are encoded just before the type.  Unlike types
  however, the type specifiers are only encoded when they appear in method
  argument types.
  
!  Note how â€˜constâ€™ interacts with pointers:
  
  
  Objective-C type   Compiler encoding
  --------------------------------------------------------------------------
!      const int     â€˜riâ€™
!      const int*    â€˜^riâ€™
!      int *const    â€˜r^iâ€™
  
  
!  â€˜const int*â€™ is a pointer to a â€˜const intâ€™, and so is encoded as â€˜^riâ€™.
! â€˜int* constâ€™, instead, is a â€˜constâ€™ pointer to an â€˜intâ€™, and so is
! encoded as â€˜r^iâ€™.
  
!  Finally, there is a complication when encoding â€˜const char *â€™ versus
! â€˜char * constâ€™.  Because â€˜char *â€™ is encoded as â€˜*â€™ and not as â€˜^câ€™,
! there is no way to express the fact that â€˜râ€™ applies to the pointer or
  to the pointee.
  
!  Hence, it is assumed as a convention that â€˜r*â€™ means â€˜const char *â€™
  (since it is what is most often meant), and there is no way to encode
! â€˜char *constâ€™.  â€˜char *constâ€™ would simply be encoded as â€˜*â€™, and the
! â€˜constâ€™ is lost.
  
  * Menu:
  
*************** encoding code.  The NeXT runtime expects
*** 66230,66264 ****
  this historical format (compatible with GCC-3.3), so when using the NeXT
  runtime, GCC will introduce on purpose a number of incorrect encodings:
  
!    * the read-only qualifier of the pointee gets emitted before the '^'.
       The read-only qualifier of the pointer itself gets ignored, unless
       it is a typedef.  Also, the 'r' is only emitted for the outermost
       type.
  
!    * 32-bit longs are encoded as 'l' or 'L', but not always.  For
       typedefs, the compiler uses 'i' or 'I' instead if encoding a struct
       field or a pointer.
  
!    * 'enum's are always encoded as 'i' (int) even if they are actually
       unsigned or long.
  
   In addition to that, the NeXT runtime uses a different encoding for
! bitfields.  It encodes them as 'b' followed by the size, without a bit
  offset or the underlying field type.
  
  
  File: gcc.info,  Node: @encode,  Next: Method signatures,  Prev: Legacy type encoding,  Up: Type encoding
  
! 9.3.2 '@encode'
  ---------------
  
! GNU Objective-C supports the '@encode' syntax that allows you to create
! a type encoding from a C/Objective-C type.  For example, '@encode(int)'
! is compiled by the compiler into '"i"'.
  
!  '@encode' does not support type qualifiers other than 'const'.  For
! example, '@encode(const char*)' is valid and is compiled into '"r*"',
! while '@encode(bycopy char *)' is invalid and will cause a compilation
  error.
  
  
--- 66239,66273 ----
  this historical format (compatible with GCC-3.3), so when using the NeXT
  runtime, GCC will introduce on purpose a number of incorrect encodings:
  
!    â€¢ the read-only qualifier of the pointee gets emitted before the '^'.
       The read-only qualifier of the pointer itself gets ignored, unless
       it is a typedef.  Also, the 'r' is only emitted for the outermost
       type.
  
!    â€¢ 32-bit longs are encoded as 'l' or 'L', but not always.  For
       typedefs, the compiler uses 'i' or 'I' instead if encoding a struct
       field or a pointer.
  
!    â€¢ â€˜enumâ€™s are always encoded as 'i' (int) even if they are actually
       unsigned or long.
  
   In addition to that, the NeXT runtime uses a different encoding for
! bitfields.  It encodes them as â€˜bâ€™ followed by the size, without a bit
  offset or the underlying field type.
  
  
  File: gcc.info,  Node: @encode,  Next: Method signatures,  Prev: Legacy type encoding,  Up: Type encoding
  
! 9.3.2 â€˜@encodeâ€™
  ---------------
  
! GNU Objective-C supports the â€˜@encodeâ€™ syntax that allows you to create
! a type encoding from a C/Objective-C type.  For example, â€˜@encode(int)â€™
! is compiled by the compiler into â€˜"i"â€™.
  
!  â€˜@encodeâ€™ does not support type qualifiers other than â€˜constâ€™.  For
! example, â€˜@encode(const char*)â€™ is valid and is compiled into â€˜"r*"â€™,
! while â€˜@encode(bycopy char *)â€™ is invalid and will cause a compilation
  error.
  
  
*************** arguments.
*** 66284,66309 ****
  
   The "signature" is a null-terminated string, composed of the following:
  
!    * The return type, including type qualifiers.  For example, a method
!      returning 'int' would have 'i' here.
  
!    * The total size (in bytes) required to pass all the parameters.
!      This includes the two hidden parameters (the object 'self' and the
!      method selector '_cmd').
  
!    * Each argument, with the type encoding, followed by the offset (in
       bytes) of the argument in the list of parameters.
  
!  For example, a method with no arguments and returning 'int' would have
! the signature 'i8@0:4' if the size of a pointer is 4.  The signature is
! interpreted as follows: the 'i' is the return type (an 'int'), the '8'
  is the total size of the parameters in bytes (two pointers each of size
! 4), the '@0' is the first parameter (an object at byte offset '0') and
! ':4' is the second parameter (a 'SEL' at byte offset '4').
  
   You can easily find more examples by running the "strings" program on
  an Objective-C object file compiled by GCC. You'll see a lot of strings
! that look very much like 'i8@0:4'.  They are signatures of Objective-C
  methods.
  
  
--- 66293,66318 ----
  
   The "signature" is a null-terminated string, composed of the following:
  
!    â€¢ The return type, including type qualifiers.  For example, a method
!      returning â€˜intâ€™ would have â€˜iâ€™ here.
  
!    â€¢ The total size (in bytes) required to pass all the parameters.
!      This includes the two hidden parameters (the object â€˜selfâ€™ and the
!      method selector â€˜_cmdâ€™).
  
!    â€¢ Each argument, with the type encoding, followed by the offset (in
       bytes) of the argument in the list of parameters.
  
!  For example, a method with no arguments and returning â€˜intâ€™ would have
! the signature â€˜i8@0:4â€™ if the size of a pointer is 4.  The signature is
! interpreted as follows: the â€˜iâ€™ is the return type (an â€˜intâ€™), the â€˜8â€™
  is the total size of the parameters in bytes (two pointers each of size
! 4), the â€˜@0â€™ is the first parameter (an object at byte offset â€˜0â€™) and
! â€˜:4â€™ is the second parameter (a â€˜SELâ€™ at byte offset â€˜4â€™).
  
   You can easily find more examples by running the "strings" program on
  an Objective-C object file compiled by GCC. You'll see a lot of strings
! that look very much like â€˜i8@0:4â€™.  They are signatures of Objective-C
  methods.
  
  
*************** using a powerful conservative garbage co
*** 66320,66329 ****
  Boehm-Demers-Weiser conservative garbage collector.
  
   To enable the support for it you have to configure the compiler using
! an additional argument, '--enable-objc-gc'.  This will build the
  boehm-gc library, and build an additional runtime library which has
  several enhancements to support the garbage collector.  The new library
! has a new name, 'libobjc_gc.a' to not conflict with the
  non-garbage-collected library.
  
   When the garbage collector is used, the objects are allocated using the
--- 66329,66338 ----
  Boehm-Demers-Weiser conservative garbage collector.
  
   To enable the support for it you have to configure the compiler using
! an additional argument, â€˜--enable-objc-gcâ€™.  This will build the
  boehm-gc library, and build an additional runtime library which has
  several enhancements to support the garbage collector.  The new library
! has a new name, â€˜libobjc_gc.aâ€™ to not conflict with the
  non-garbage-collected library.
  
   When the garbage collector is used, the objects are allocated using the
*************** on where pointers are located inside obj
*** 66333,66346 ****
  computed once per class, immediately after the class has been
  initialized.
  
!  There is a new runtime function 'class_ivar_set_gcinvisible()' which
! can be used to declare a so-called "weak pointer" reference.  Such a
  pointer is basically hidden for the garbage collector; this can be
  useful in certain situations, especially when you want to keep track of
  the allocated objects, yet allow them to be collected.  This kind of
  pointers can only be members of objects, you cannot declare a global
  pointer as a weak reference.  Every type which is a pointer type can be
! declared a weak pointer, including 'id', 'Class' and 'SEL'.
  
   Here is an example of how to use this feature.  Suppose you want to
  implement a class whose instances hold a weak pointer reference; the
--- 66342,66355 ----
  computed once per class, immediately after the class has been
  initialized.
  
!  There is a new runtime function â€˜class_ivar_set_gcinvisible()â€™ which
! can be used to declare a so-called â€œweak pointerâ€� reference.  Such a
  pointer is basically hidden for the garbage collector; this can be
  useful in certain situations, especially when you want to keep track of
  the allocated objects, yet allow them to be collected.  This kind of
  pointers can only be members of objects, you cannot declare a global
  pointer as a weak reference.  Every type which is a pointer type can be
! declared a weak pointer, including â€˜idâ€™, â€˜Classâ€™ and â€˜SELâ€™.
  
   Here is an example of how to use this feature.  Suppose you want to
  implement a class whose instances hold a weak pointer reference; the
*************** following class does this:
*** 66380,66386 ****
  
  
   Weak pointers are supported through a new type character specifier
! represented by the '!' character.  The 'class_ivar_set_gcinvisible()'
  function adds or removes this specifier to the string type description
  of the instance variable named as argument.
  
--- 66389,66395 ----
  
  
   Weak pointers are supported through a new type character specifier
! represented by the â€˜!â€™ character.  The â€˜class_ivar_set_gcinvisible()â€™
  function adds or removes this specifier to the string type description
  of the instance variable named as argument.
  
*************** File: gcc.info,  Node: Constant string o
*** 66392,66411 ****
  
  GNU Objective-C provides constant string objects that are generated
  directly by the compiler.  You declare a constant string object by
! prefixing a C constant string with the character '@':
  
         id myString = @"this is a constant string object";
  
   The constant string objects are by default instances of the
! 'NXConstantString' class which is provided by the GNU Objective-C
  runtime.  To get the definition of this class you must include the
! 'objc/NXConstStr.h' header file.
  
   User defined libraries may want to implement their own constant string
  class.  To be able to support them, the GNU Objective-C compiler
  provides a new command line options
! '-fconstant-string-class=CLASS-NAME'.  The provided class should adhere
! to a strict structure, the same as 'NXConstantString''s structure:
  
  
       @interface MyConstantStringClass
--- 66401,66420 ----
  
  GNU Objective-C provides constant string objects that are generated
  directly by the compiler.  You declare a constant string object by
! prefixing a C constant string with the character â€˜@â€™:
  
         id myString = @"this is a constant string object";
  
   The constant string objects are by default instances of the
! â€˜NXConstantStringâ€™ class which is provided by the GNU Objective-C
  runtime.  To get the definition of this class you must include the
! â€˜objc/NXConstStr.hâ€™ header file.
  
   User defined libraries may want to implement their own constant string
  class.  To be able to support them, the GNU Objective-C compiler
  provides a new command line options
! â€˜-fconstant-string-class=CLASS-NAMEâ€™.  The provided class should adhere
! to a strict structure, the same as â€˜NXConstantStringâ€™'s structure:
  
  
       @interface MyConstantStringClass
*************** to a strict structure, the same as 'NXCo
*** 66417,66441 ****
       @end
  
  
!  'NXConstantString' inherits from 'Object'; user class libraries may
  choose to inherit the customized constant string class from a different
! class than 'Object'.  There is no requirement in the methods the
  constant string class has to implement, but the final ivar layout of the
  class must be the compatible with the given structure.
  
   When the compiler creates the statically allocated constant string
! object, the 'c_string' field will be filled by the compiler with the
! string; the 'length' field will be filled by the compiler with the
! string length; the 'isa' pointer will be filled with 'NULL' by the
  compiler, and it will later be fixed up automatically at runtime by the
  GNU Objective-C runtime library to point to the class which was set by
! the '-fconstant-string-class' option when the object file is loaded (if
  you wonder how it works behind the scenes, the name of the class to use,
  and the list of static objects to fixup, are stored by the compiler in
  the object file in a place where the GNU runtime library will find them
  at runtime).
  
!  As a result, when a file is compiled with the '-fconstant-string-class'
  option, all the constant string objects will be instances of the class
  specified as argument to this option.  It is possible to have multiple
  compilation units referring to different constant string classes,
--- 66426,66450 ----
       @end
  
  
!  â€˜NXConstantStringâ€™ inherits from â€˜Objectâ€™; user class libraries may
  choose to inherit the customized constant string class from a different
! class than â€˜Objectâ€™.  There is no requirement in the methods the
  constant string class has to implement, but the final ivar layout of the
  class must be the compatible with the given structure.
  
   When the compiler creates the statically allocated constant string
! object, the â€˜c_stringâ€™ field will be filled by the compiler with the
! string; the â€˜lengthâ€™ field will be filled by the compiler with the
! string length; the â€˜isaâ€™ pointer will be filled with â€˜NULLâ€™ by the
  compiler, and it will later be fixed up automatically at runtime by the
  GNU Objective-C runtime library to point to the class which was set by
! the â€˜-fconstant-string-classâ€™ option when the object file is loaded (if
  you wonder how it works behind the scenes, the name of the class to use,
  and the list of static objects to fixup, are stored by the compiler in
  the object file in a place where the GNU runtime library will find them
  at runtime).
  
!  As a result, when a file is compiled with the â€˜-fconstant-string-classâ€™
  option, all the constant string objects will be instances of the class
  specified as argument to this option.  It is possible to have multiple
  compilation units referring to different constant string classes,
*************** this.
*** 66445,66467 ****
  
  File: gcc.info,  Node: compatibility_alias,  Next: Exceptions,  Prev: Constant string objects,  Up: Objective-C
  
! 9.6 'compatibility_alias'
  =========================
  
! The keyword '@compatibility_alias' allows you to define a class name as
  equivalent to another class name.  For example:
  
       @compatibility_alias WOApplication GSWApplication;
  
!  tells the compiler that each time it encounters 'WOApplication' as a
! class name, it should replace it with 'GSWApplication' (that is,
! 'WOApplication' is just an alias for 'GSWApplication').
  
   There are some constraints on how this can be used--
  
!    * 'WOApplication' (the alias) must not be an existing class;
  
!    * 'GSWApplication' (the real class) must be an existing class.
  
  
  File: gcc.info,  Node: Exceptions,  Next: Synchronization,  Prev: compatibility_alias,  Up: Objective-C
--- 66454,66476 ----
  
  File: gcc.info,  Node: compatibility_alias,  Next: Exceptions,  Prev: Constant string objects,  Up: Objective-C
  
! 9.6 â€˜compatibility_aliasâ€™
  =========================
  
! The keyword â€˜@compatibility_aliasâ€™ allows you to define a class name as
  equivalent to another class name.  For example:
  
       @compatibility_alias WOApplication GSWApplication;
  
!  tells the compiler that each time it encounters â€˜WOApplicationâ€™ as a
! class name, it should replace it with â€˜GSWApplicationâ€™ (that is,
! â€˜WOApplicationâ€™ is just an alias for â€˜GSWApplicationâ€™).
  
   There are some constraints on how this can be used--
  
!    â€¢ â€˜WOApplicationâ€™ (the alias) must not be an existing class;
  
!    â€¢ â€˜GSWApplicationâ€™ (the real class) must be an existing class.
  
  
  File: gcc.info,  Node: Exceptions,  Next: Synchronization,  Prev: compatibility_alias,  Up: Objective-C
*************** in the following example:
*** 66496,66540 ****
           ...
         }
  
!  The '@throw' statement may appear anywhere in an Objective-C or
! Objective-C++ program; when used inside of a '@catch' block, the
! '@throw' may appear without an argument (as shown above), in which case
! the object caught by the '@catch' will be rethrown.
  
   Note that only (pointers to) Objective-C objects may be thrown and
  caught using this scheme.  When an object is thrown, it will be caught
! by the nearest '@catch' clause capable of handling objects of that type,
! analogously to how 'catch' blocks work in C++ and Java.  A '@catch(id
! ...)' clause (as shown above) may also be provided to catch any and all
! Objective-C exceptions not caught by previous '@catch' clauses (if any).
  
!  The '@finally' clause, if present, will be executed upon exit from the
! immediately preceding '@try ... @catch' section.  This will happen
  regardless of whether any exceptions are thrown, caught or rethrown
! inside the '@try ... @catch' section, analogously to the behavior of the
! 'finally' clause in Java.
  
   There are several caveats to using the new exception mechanism:
  
!    * The '-fobjc-exceptions' command line option must be used when
       compiling Objective-C files that use exceptions.
  
!    * With the GNU runtime, exceptions are always implemented as "native"
!      exceptions and it is recommended that the '-fexceptions' and
!      '-shared-libgcc' options are used when linking.
  
!    * With the NeXT runtime, although currently designed to be binary
!      compatible with 'NS_HANDLER'-style idioms provided by the
!      'NSException' class, the new exceptions can only be used on Mac OS
       X 10.3 (Panther) and later systems, due to additional functionality
       needed in the NeXT Objective-C runtime.
  
!    * As mentioned above, the new exceptions do not support handling
       types other than Objective-C objects.  Furthermore, when used from
       Objective-C++, the Objective-C exception model does not
       interoperate with C++ exceptions at this time.  This means you
!      cannot '@throw' an exception from Objective-C and 'catch' it in
!      C++, or vice versa (i.e., 'throw ... @catch').
  
  
  File: gcc.info,  Node: Synchronization,  Next: Fast enumeration,  Prev: Exceptions,  Up: Objective-C
--- 66505,66549 ----
           ...
         }
  
!  The â€˜@throwâ€™ statement may appear anywhere in an Objective-C or
! Objective-C++ program; when used inside of a â€˜@catchâ€™ block, the
! â€˜@throwâ€™ may appear without an argument (as shown above), in which case
! the object caught by the â€˜@catchâ€™ will be rethrown.
  
   Note that only (pointers to) Objective-C objects may be thrown and
  caught using this scheme.  When an object is thrown, it will be caught
! by the nearest â€˜@catchâ€™ clause capable of handling objects of that type,
! analogously to how â€˜catchâ€™ blocks work in C++ and Java.  A â€˜@catch(id
! ...)â€™ clause (as shown above) may also be provided to catch any and all
! Objective-C exceptions not caught by previous â€˜@catchâ€™ clauses (if any).
  
!  The â€˜@finallyâ€™ clause, if present, will be executed upon exit from the
! immediately preceding â€˜@try ... @catchâ€™ section.  This will happen
  regardless of whether any exceptions are thrown, caught or rethrown
! inside the â€˜@try ... @catchâ€™ section, analogously to the behavior of the
! â€˜finallyâ€™ clause in Java.
  
   There are several caveats to using the new exception mechanism:
  
!    â€¢ The â€˜-fobjc-exceptionsâ€™ command line option must be used when
       compiling Objective-C files that use exceptions.
  
!    â€¢ With the GNU runtime, exceptions are always implemented as "native"
!      exceptions and it is recommended that the â€˜-fexceptionsâ€™ and
!      â€˜-shared-libgccâ€™ options are used when linking.
  
!    â€¢ With the NeXT runtime, although currently designed to be binary
!      compatible with â€˜NS_HANDLERâ€™-style idioms provided by the
!      â€˜NSExceptionâ€™ class, the new exceptions can only be used on Mac OS
       X 10.3 (Panther) and later systems, due to additional functionality
       needed in the NeXT Objective-C runtime.
  
!    â€¢ As mentioned above, the new exceptions do not support handling
       types other than Objective-C objects.  Furthermore, when used from
       Objective-C++, the Objective-C exception model does not
       interoperate with C++ exceptions at this time.  This means you
!      cannot â€˜@throwâ€™ an exception from Objective-C and â€˜catchâ€™ it in
!      C++, or vice versa (i.e., â€˜throw ... @catchâ€™).
  
  
  File: gcc.info,  Node: Synchronization,  Next: Fast enumeration,  Prev: Exceptions,  Up: Objective-C
*************** GNU Objective-C provides support for syn
*** 66548,66570 ****
           ...
         }
  
!  Upon entering the '@synchronized' block, a thread of execution shall
! first check whether a lock has been placed on the corresponding 'guard'
  object by another thread.  If it has, the current thread shall wait
! until the other thread relinquishes its lock.  Once 'guard' becomes
  available, the current thread will place its own lock on it, execute the
! code contained in the '@synchronized' block, and finally relinquish the
! lock (thereby making 'guard' available to other threads).
  
   Unlike Java, Objective-C does not allow for entire methods to be marked
! '@synchronized'.  Note that throwing exceptions out of '@synchronized'
  blocks is allowed, and will cause the guarding object to be unlocked
  properly.
  
   Because of the interactions between synchronization and exception
! handling, you can only use '@synchronized' when compiling with
  exceptions enabled, that is with the command line option
! '-fobjc-exceptions'.
  
  
  File: gcc.info,  Node: Fast enumeration,  Next: Messaging with the GNU Objective-C runtime,  Prev: Synchronization,  Up: Objective-C
--- 66557,66579 ----
           ...
         }
  
!  Upon entering the â€˜@synchronizedâ€™ block, a thread of execution shall
! first check whether a lock has been placed on the corresponding â€˜guardâ€™
  object by another thread.  If it has, the current thread shall wait
! until the other thread relinquishes its lock.  Once â€˜guardâ€™ becomes
  available, the current thread will place its own lock on it, execute the
! code contained in the â€˜@synchronizedâ€™ block, and finally relinquish the
! lock (thereby making â€˜guardâ€™ available to other threads).
  
   Unlike Java, Objective-C does not allow for entire methods to be marked
! â€˜@synchronizedâ€™.  Note that throwing exceptions out of â€˜@synchronizedâ€™
  blocks is allowed, and will cause the guarding object to be unlocked
  properly.
  
   Because of the interactions between synchronization and exception
! handling, you can only use â€˜@synchronizedâ€™ when compiling with
  exceptions enabled, that is with the command line option
! â€˜-fobjc-exceptionsâ€™.
  
  
  File: gcc.info,  Node: Fast enumeration,  Next: Messaging with the GNU Objective-C runtime,  Prev: Synchronization,  Up: Objective-C
*************** GNU Objective-C provides support for the
*** 66595,66613 ****
           /* Do something with 'object' */
         }
  
!  'array' needs to be an Objective-C object (usually a collection object,
  for example an array, a dictionary or a set) which implements the "Fast
  Enumeration Protocol" (see below).  If you are using a Foundation
  library such as GNUstep Base or Apple Cocoa Foundation, all collection
  objects in the library implement this protocol and can be used in this
  way.
  
!  The code above would iterate over all objects in 'array'.  For each of
! them, it assigns it to 'object', then executes the 'Do something with
! 'object'' statements.
  
   Here is a fully worked-out example using a Foundation library (which
! provides the implementation of 'NSArray', 'NSString' and 'NSLog'):
  
         NSArray *array = [NSArray arrayWithObjects: @"1", @"2", @"3", nil];
         NSString *object;
--- 66604,66622 ----
           /* Do something with 'object' */
         }
  
!  â€˜arrayâ€™ needs to be an Objective-C object (usually a collection object,
  for example an array, a dictionary or a set) which implements the "Fast
  Enumeration Protocol" (see below).  If you are using a Foundation
  library such as GNUstep Base or Apple Cocoa Foundation, all collection
  objects in the library implement this protocol and can be used in this
  way.
  
!  The code above would iterate over all objects in â€˜arrayâ€™.  For each of
! them, it assigns it to â€˜objectâ€™, then executes the â€˜Do something with
! 'object'â€™ statements.
  
   Here is a fully worked-out example using a Foundation library (which
! provides the implementation of â€˜NSArrayâ€™, â€˜NSStringâ€™ and â€˜NSLogâ€™):
  
         NSArray *array = [NSArray arrayWithObjects: @"1", @"2", @"3", nil];
         NSString *object;
*************** A c99-like declaration syntax is also al
*** 66644,66650 ****
  
   but can save some typing.
  
!  Note that the option '-std=c99' is not required to allow this syntax in
  Objective-C.
  
  
--- 66653,66659 ----
  
   but can save some typing.
  
!  Note that the option â€˜-std=c99â€™ is not required to allow this syntax in
  Objective-C.
  
  
*************** the code
*** 66663,66704 ****
  
   here is what happens when you run it:
  
!    * 'COLLECTION EXPRESSION' is evaluated exactly once and the result is
       used as the collection object to iterate over.  This means it is
!      safe to write code such as 'for (object in [NSDictionary
!      keyEnumerator]) ...'.
  
!    * the iteration is implemented by the compiler by repeatedly getting
       batches of objects from the collection object using the fast
       enumeration protocol (see below), then iterating over all objects
       in the batch.  This is faster than a normal enumeration where
       objects are retrieved one by one (hence the name "fast
       enumeration").
  
!    * if there are no objects in the collection, then 'OBJECT EXPRESSION'
!      is set to 'nil' and the loop immediately terminates.
  
!    * if there are objects in the collection, then for each object in the
!      collection (in the order they are returned) 'OBJECT EXPRESSION' is
!      set to the object, then 'STATEMENTS' are executed.
  
!    * 'STATEMENTS' can contain 'break' and 'continue' commands, which
       will abort the iteration or skip to the next loop iteration as
       expected.
  
!    * when the iteration ends because there are no more objects to
!      iterate over, 'OBJECT EXPRESSION' is set to 'nil'.  This allows you
!      to determine whether the iteration finished because a 'break'
!      command was used (in which case 'OBJECT EXPRESSION' will remain set
       to the last object that was iterated over) or because it iterated
!      over all the objects (in which case 'OBJECT EXPRESSION' will be set
!      to 'nil').
  
!    * 'STATEMENTS' must not make any changes to the collection object; if
       they do, it is a hard error and the fast enumeration terminates by
!      invoking 'objc_enumerationMutation', a runtime function that
       normally aborts the program but which can be customized by
!      Foundation libraries via 'objc_set_mutation_handler' to do
       something different, such as raising an exception.
  
  
--- 66672,66713 ----
  
   here is what happens when you run it:
  
!    â€¢ â€˜COLLECTION EXPRESSIONâ€™ is evaluated exactly once and the result is
       used as the collection object to iterate over.  This means it is
!      safe to write code such as â€˜for (object in [NSDictionary
!      keyEnumerator]) ...â€™.
  
!    â€¢ the iteration is implemented by the compiler by repeatedly getting
       batches of objects from the collection object using the fast
       enumeration protocol (see below), then iterating over all objects
       in the batch.  This is faster than a normal enumeration where
       objects are retrieved one by one (hence the name "fast
       enumeration").
  
!    â€¢ if there are no objects in the collection, then â€˜OBJECT EXPRESSIONâ€™
!      is set to â€˜nilâ€™ and the loop immediately terminates.
  
!    â€¢ if there are objects in the collection, then for each object in the
!      collection (in the order they are returned) â€˜OBJECT EXPRESSIONâ€™ is
!      set to the object, then â€˜STATEMENTSâ€™ are executed.
  
!    â€¢ â€˜STATEMENTSâ€™ can contain â€˜breakâ€™ and â€˜continueâ€™ commands, which
       will abort the iteration or skip to the next loop iteration as
       expected.
  
!    â€¢ when the iteration ends because there are no more objects to
!      iterate over, â€˜OBJECT EXPRESSIONâ€™ is set to â€˜nilâ€™.  This allows you
!      to determine whether the iteration finished because a â€˜breakâ€™
!      command was used (in which case â€˜OBJECT EXPRESSIONâ€™ will remain set
       to the last object that was iterated over) or because it iterated
!      over all the objects (in which case â€˜OBJECT EXPRESSIONâ€™ will be set
!      to â€˜nilâ€™).
  
!    â€¢ â€˜STATEMENTSâ€™ must not make any changes to the collection object; if
       they do, it is a hard error and the fast enumeration terminates by
!      invoking â€˜objc_enumerationMutationâ€™, a runtime function that
       normally aborts the program but which can be customized by
!      Foundation libraries via â€˜objc_set_mutation_handlerâ€™ to do
       something different, such as raising an exception.
  
  
*************** enumeration, you need to have it impleme
*** 66714,66720 ****
                                             objects: (id *)objects
                                               count: (unsigned long)len;
  
!  where 'NSFastEnumerationState' must be defined in your code as follows:
  
       typedef struct
       {
--- 66723,66729 ----
                                             objects: (id *)objects
                                               count: (unsigned long)len;
  
!  where â€˜NSFastEnumerationStateâ€™ must be defined in your code as follows:
  
       typedef struct
       {
*************** enumeration, you need to have it impleme
*** 66724,66734 ****
         unsigned long extra[5];
       } NSFastEnumerationState;
  
!  If no 'NSFastEnumerationState' is defined in your code, the compiler
! will automatically replace 'NSFastEnumerationState *' with 'struct
! __objcFastEnumerationState *', where that type is silently defined by
  the compiler in an identical way.  This can be confusing and we
! recommend that you define 'NSFastEnumerationState' (as shown above)
  instead.
  
   The method is called repeatedly during a fast enumeration to retrieve
--- 66733,66743 ----
         unsigned long extra[5];
       } NSFastEnumerationState;
  
!  If no â€˜NSFastEnumerationStateâ€™ is defined in your code, the compiler
! will automatically replace â€˜NSFastEnumerationState *â€™ with â€˜struct
! __objcFastEnumerationState *â€™, where that type is silently defined by
  the compiler in an identical way.  This can be confusing and we
! recommend that you define â€˜NSFastEnumerationStateâ€™ (as shown above)
  instead.
  
   The method is called repeatedly during a fast enumeration to retrieve
*************** batches of objects.  Each invocation of
*** 66736,66763 ****
  next batch of objects.
  
   The return value of the method is the number of objects in the current
! batch; this should not exceed 'len', which is the maximum size of a
  batch as requested by the caller.  The batch itself is returned in the
! 'itemsPtr' field of the 'NSFastEnumerationState' struct.
  
!  To help with returning the objects, the 'objects' array is a C array
! preallocated by the caller (on the stack) of size 'len'.  In many cases
! you can put the objects you want to return in that 'objects' array, then
! do 'itemsPtr = objects'.  But you don't have to; if your collection
  already has the objects to return in some form of C array, it could
  return them from there instead.
  
!  The 'state' and 'extra' fields of the 'NSFastEnumerationState'
  structure allows your collection object to keep track of the state of
! the enumeration.  In a simple array implementation, 'state' may keep
! track of the index of the last object that was returned, and 'extra' may
  be unused.
  
!  The 'mutationsPtr' field of the 'NSFastEnumerationState' is used to
  keep track of mutations.  It should point to a number; before working on
  each object, the fast enumeration loop will check that this number has
  not changed.  If it has, a mutation has happened and the fast
! enumeration will abort.  So, 'mutationsPtr' could be set to point to
  some sort of version number of your collection, which is increased by
  one every time there is a change (for example when an object is added or
  removed).  Or, if you are content with less strict mutation checks, it
--- 66745,66772 ----
  next batch of objects.
  
   The return value of the method is the number of objects in the current
! batch; this should not exceed â€˜lenâ€™, which is the maximum size of a
  batch as requested by the caller.  The batch itself is returned in the
! â€˜itemsPtrâ€™ field of the â€˜NSFastEnumerationStateâ€™ struct.
  
!  To help with returning the objects, the â€˜objectsâ€™ array is a C array
! preallocated by the caller (on the stack) of size â€˜lenâ€™.  In many cases
! you can put the objects you want to return in that â€˜objectsâ€™ array, then
! do â€˜itemsPtr = objectsâ€™.  But you don't have to; if your collection
  already has the objects to return in some form of C array, it could
  return them from there instead.
  
!  The â€˜stateâ€™ and â€˜extraâ€™ fields of the â€˜NSFastEnumerationStateâ€™
  structure allows your collection object to keep track of the state of
! the enumeration.  In a simple array implementation, â€˜stateâ€™ may keep
! track of the index of the last object that was returned, and â€˜extraâ€™ may
  be unused.
  
!  The â€˜mutationsPtrâ€™ field of the â€˜NSFastEnumerationStateâ€™ is used to
  keep track of mutations.  It should point to a number; before working on
  each object, the fast enumeration loop will check that this number has
  not changed.  If it has, a mutation has happened and the fast
! enumeration will abort.  So, â€˜mutationsPtrâ€™ could be set to point to
  some sort of version number of your collection, which is increased by
  one every time there is a change (for example when an object is added or
  removed).  Or, if you are content with less strict mutation checks, it
*************** could point to the number of objects in
*** 66765,66773 ****
  value that can be checked to perform an approximate check that the
  collection has not been mutated.
  
!  Finally, note how we declared the 'len' argument and the return value
! to be of type 'unsigned long'.  They could also be declared to be of
! type 'unsigned int' and everything would still work.
  
  
  File: gcc.info,  Node: Messaging with the GNU Objective-C runtime,  Prev: Fast enumeration,  Up: Objective-C
--- 66774,66782 ----
  value that can be checked to perform an approximate check that the
  collection has not been mutated.
  
!  Finally, note how we declared the â€˜lenâ€™ argument and the return value
! to be of type â€˜unsigned longâ€™.  They could also be declared to be of
! type â€˜unsigned intâ€™ and everything would still work.
  
  
  File: gcc.info,  Node: Messaging with the GNU Objective-C runtime,  Prev: Fast enumeration,  Up: Objective-C
*************** designed to be portable, and so is based
*** 66783,66799 ****
  
   Sending a message in the GNU Objective-C runtime is composed of two
  separate steps.  First, there is a call to the lookup function,
! 'objc_msg_lookup ()' (or, in the case of messages to super,
! 'objc_msg_lookup_super ()').  This runtime function takes as argument
  the receiver and the selector of the method to be called; it returns the
! 'IMP', that is a pointer to the function implementing the method.  The
  second step of method invocation consists of casting this pointer
  function to the appropriate function pointer type, and calling the
  function pointed to it with the right arguments.
  
   For example, when the compiler encounters a method invocation such as
! '[object init]', it compiles it into a call to 'objc_msg_lookup (object,
! @selector(init))' followed by a cast of the returned value to the
  appropriate function pointer type, and then it calls it.
  
  * Menu:
--- 66792,66808 ----
  
   Sending a message in the GNU Objective-C runtime is composed of two
  separate steps.  First, there is a call to the lookup function,
! â€˜objc_msg_lookup ()â€™ (or, in the case of messages to super,
! â€˜objc_msg_lookup_super ()â€™).  This runtime function takes as argument
  the receiver and the selector of the method to be called; it returns the
! â€˜IMPâ€™, that is a pointer to the function implementing the method.  The
  second step of method invocation consists of casting this pointer
  function to the appropriate function pointer type, and calling the
  function pointed to it with the right arguments.
  
   For example, when the compiler encounters a method invocation such as
! â€˜[object init]â€™, it compiles it into a call to â€˜objc_msg_lookup (object,
! @selector(init))â€™ followed by a cast of the returned value to the
  appropriate function pointer type, and then it calls it.
  
  * Menu:
*************** File: gcc.info,  Node: Dynamically regis
*** 66807,66813 ****
  9.10.1 Dynamically Registering Methods
  --------------------------------------
  
! If 'objc_msg_lookup()' does not find a suitable method implementation,
  because the receiver does not implement the required method, it tries to
  see if the class can dynamically register the method.
  
--- 66816,66822 ----
  9.10.1 Dynamically Registering Methods
  --------------------------------------
  
! If â€˜objc_msg_lookup()â€™ does not find a suitable method implementation,
  because the receiver does not implement the required method, it tries to
  see if the class can dynamically register the method.
  
*************** the method
*** 66822,66843 ****
  
   in the case of a class method.  If the class implements it, the runtime
  invokes it, passing as argument the selector of the original method, and
! if it returns 'YES', the runtime tries the lookup again, which could now
  succeed if a matching method was added dynamically by
! '+resolveInstanceMethod:' or '+resolveClassMethod:'.
  
   This allows classes to dynamically register methods (by adding them to
! the class using 'class_addMethod') when they are first called.  To do
! so, a class should implement '+resolveInstanceMethod:' (or, depending on
! the case, '+resolveClassMethod:') and have it recognize the selectors of
  methods that can be registered dynamically at runtime, register them,
! and return 'YES'.  It should return 'NO' for methods that it does not
  dynamically registered at runtime.
  
!  If '+resolveInstanceMethod:' (or '+resolveClassMethod:') is not
! implemented or returns 'NO', the runtime then tries the forwarding hook.
  
!  Support for '+resolveInstanceMethod:' and 'resolveClassMethod:' was
  added to the GNU Objective-C runtime in GCC version 4.6.
  
  
--- 66831,66852 ----
  
   in the case of a class method.  If the class implements it, the runtime
  invokes it, passing as argument the selector of the original method, and
! if it returns â€˜YESâ€™, the runtime tries the lookup again, which could now
  succeed if a matching method was added dynamically by
! â€˜+resolveInstanceMethod:â€™ or â€˜+resolveClassMethod:â€™.
  
   This allows classes to dynamically register methods (by adding them to
! the class using â€˜class_addMethodâ€™) when they are first called.  To do
! so, a class should implement â€˜+resolveInstanceMethod:â€™ (or, depending on
! the case, â€˜+resolveClassMethod:â€™) and have it recognize the selectors of
  methods that can be registered dynamically at runtime, register them,
! and return â€˜YESâ€™.  It should return â€˜NOâ€™ for methods that it does not
  dynamically registered at runtime.
  
!  If â€˜+resolveInstanceMethod:â€™ (or â€˜+resolveClassMethod:â€™) is not
! implemented or returns â€˜NOâ€™, the runtime then tries the forwarding hook.
  
!  Support for â€˜+resolveInstanceMethod:â€™ and â€˜resolveClassMethod:â€™ was
  added to the GNU Objective-C runtime in GCC version 4.6.
  
  
*************** File: gcc.info,  Node: Forwarding hook,
*** 66847,66899 ****
  ----------------------
  
  The GNU Objective-C runtime provides a hook, called
! '__objc_msg_forward2', which is called by 'objc_msg_lookup()' when it
  cannot find a method implementation in the runtime tables and after
! calling '+resolveInstanceMethod:' and '+resolveClassMethod:' has been
  attempted and did not succeed in dynamically registering the method.
  
   To configure the hook, you set the global variable
! '__objc_msg_forward2' to a function with the same argument and return
! types of 'objc_msg_lookup()'.  When 'objc_msg_lookup()' cannot find a
  method implementation, it invokes the hook function you provided to get
  a method implementation to return.  So, in practice
! '__objc_msg_forward2' allows you to extend 'objc_msg_lookup()' by adding
  some custom code that is called to do a further lookup when no standard
  method implementation can be found using the normal lookup.
  
   This hook is generally reserved for "Foundation" libraries such as
  GNUstep Base, which use it to implement their high-level method
! forwarding API, typically based around the 'forwardInvocation:' method.
  So, unless you are implementing your own "Foundation" library, you
  should not set this hook.
  
!  In a typical forwarding implementation, the '__objc_msg_forward2' hook
  function determines the argument and return type of the method that is
  being looked up, and then creates a function that takes these arguments
  and has that return type, and returns it to the caller.  Creating this
  function is non-trivial and is typically performed using a dedicated
! library such as 'libffi'.
  
   The forwarding method implementation thus created is returned by
! 'objc_msg_lookup()' and is executed as if it was a normal method
  implementation.  When the forwarding method implementation is called, it
  is usually expected to pack all arguments into some sort of object
! (typically, an 'NSInvocation' in a "Foundation" library), and hand it
! over to the programmer ('forwardInvocation:') who is then allowed to
  manipulate the method invocation using a high-level API provided by the
  "Foundation" library.  For example, the programmer may want to examine
  the method invocation arguments and name and potentially change them
  before forwarding the method invocation to one or more local objects
! ('performInvocation:') or even to remote objects (by using Distributed
  Objects or some other mechanism).  When all this completes, the return
  value is passed back and must be returned correctly to the original
  caller.
  
   Note that the GNU Objective-C runtime currently provides no support for
  method forwarding or method invocations other than the
! '__objc_msg_forward2' hook.
  
!  If the forwarding hook does not exist or returns 'NULL', the runtime
  currently attempts forwarding using an older, deprecated API, and if
  that fails, it aborts the program.  In future versions of the GNU
  Objective-C runtime, the runtime will immediately abort.
--- 66856,66908 ----
  ----------------------
  
  The GNU Objective-C runtime provides a hook, called
! â€˜__objc_msg_forward2â€™, which is called by â€˜objc_msg_lookup()â€™ when it
  cannot find a method implementation in the runtime tables and after
! calling â€˜+resolveInstanceMethod:â€™ and â€˜+resolveClassMethod:â€™ has been
  attempted and did not succeed in dynamically registering the method.
  
   To configure the hook, you set the global variable
! â€˜__objc_msg_forward2â€™ to a function with the same argument and return
! types of â€˜objc_msg_lookup()â€™.  When â€˜objc_msg_lookup()â€™ cannot find a
  method implementation, it invokes the hook function you provided to get
  a method implementation to return.  So, in practice
! â€˜__objc_msg_forward2â€™ allows you to extend â€˜objc_msg_lookup()â€™ by adding
  some custom code that is called to do a further lookup when no standard
  method implementation can be found using the normal lookup.
  
   This hook is generally reserved for "Foundation" libraries such as
  GNUstep Base, which use it to implement their high-level method
! forwarding API, typically based around the â€˜forwardInvocation:â€™ method.
  So, unless you are implementing your own "Foundation" library, you
  should not set this hook.
  
!  In a typical forwarding implementation, the â€˜__objc_msg_forward2â€™ hook
  function determines the argument and return type of the method that is
  being looked up, and then creates a function that takes these arguments
  and has that return type, and returns it to the caller.  Creating this
  function is non-trivial and is typically performed using a dedicated
! library such as â€˜libffiâ€™.
  
   The forwarding method implementation thus created is returned by
! â€˜objc_msg_lookup()â€™ and is executed as if it was a normal method
  implementation.  When the forwarding method implementation is called, it
  is usually expected to pack all arguments into some sort of object
! (typically, an â€˜NSInvocationâ€™ in a "Foundation" library), and hand it
! over to the programmer (â€˜forwardInvocation:â€™) who is then allowed to
  manipulate the method invocation using a high-level API provided by the
  "Foundation" library.  For example, the programmer may want to examine
  the method invocation arguments and name and potentially change them
  before forwarding the method invocation to one or more local objects
! (â€˜performInvocation:â€™) or even to remote objects (by using Distributed
  Objects or some other mechanism).  When all this completes, the return
  value is passed back and must be returned correctly to the original
  caller.
  
   Note that the GNU Objective-C runtime currently provides no support for
  method forwarding or method invocations other than the
! â€˜__objc_msg_forward2â€™ hook.
  
!  If the forwarding hook does not exist or returns â€˜NULLâ€™, the runtime
  currently attempts forwarding using an older, deprecated API, and if
  that fails, it aborts the program.  In future versions of the GNU
  Objective-C runtime, the runtime will immediately abort.
*************** File: gcc.info,  Node: Compatibility,  N
*** 66906,66912 ****
  
  Binary compatibility encompasses several related concepts:
  
! "application binary interface (ABI)"
       The set of runtime conventions followed by all of the tools that
       deal with binary representations of a program, including compilers,
       assemblers, linkers, and language runtime support.  Some ABIs are
--- 66915,66921 ----
  
  Binary compatibility encompasses several related concepts:
  
! â€œapplication binary interface (ABI)â€�
       The set of runtime conventions followed by all of the tools that
       deal with binary representations of a program, including compilers,
       assemblers, linkers, and language runtime support.  Some ABIs are
*************** Binary compatibility encompasses several
*** 66914,66920 ****
       interested parties.  Others are simply the way things are actually
       done by a particular set of tools.
  
! "ABI conformance"
       A compiler conforms to an ABI if it generates code that follows all
       of the specifications enumerated by that ABI.  A library conforms
       to an ABI if it is implemented according to that ABI.  An
--- 66923,66929 ----
       interested parties.  Others are simply the way things are actually
       done by a particular set of tools.
  
! â€œABI conformanceâ€�
       A compiler conforms to an ABI if it generates code that follows all
       of the specifications enumerated by that ABI.  A library conforms
       to an ABI if it is implemented according to that ABI.  An
*************** Binary compatibility encompasses several
*** 66922,66932 ****
       conform to that ABI and does not contain source code that
       specifically changes behavior specified by the ABI.
  
! "calling conventions"
       Calling conventions are a subset of an ABI that specify of how
       arguments are passed and function results are returned.
  
! "interoperability"
       Different sets of tools are interoperable if they generate files
       that can be used in the same program.  The set of tools includes
       compilers, assemblers, linkers, libraries, header files, startup
--- 66931,66941 ----
       conform to that ABI and does not contain source code that
       specifically changes behavior specified by the ABI.
  
! â€œcalling conventionsâ€�
       Calling conventions are a subset of an ABI that specify of how
       arguments are passed and function results are returned.
  
! â€œinteroperabilityâ€�
       Different sets of tools are interoperable if they generate files
       that can be used in the same program.  The set of tools includes
       compilers, assemblers, linkers, libraries, header files, startup
*************** Binary compatibility encompasses several
*** 66935,66953 ****
       applies to different versions of the same tools as well as tools
       from different vendors.
  
! "intercallability"
       Whether a function in a binary built by one set of tools can call a
       function in a binary built by a different set of tools is a subset
       of interoperability.
  
! "implementation-defined features"
       Language standards include lists of implementation-defined features
       whose behavior can vary from one implementation to another.  Some
       of these features are normally covered by a platform's ABI and
       others are not.  The features that are not covered by an ABI
       generally affect how a program behaves, but not intercallability.
  
! "compatibility"
       Conformance to the same ABI and the same behavior of
       implementation-defined features are both relevant for
       compatibility.
--- 66944,66962 ----
       applies to different versions of the same tools as well as tools
       from different vendors.
  
! â€œintercallabilityâ€�
       Whether a function in a binary built by one set of tools can call a
       function in a binary built by a different set of tools is a subset
       of interoperability.
  
! â€œimplementation-defined featuresâ€�
       Language standards include lists of implementation-defined features
       whose behavior can vary from one implementation to another.  Some
       of these features are normally covered by a platform's ABI and
       others are not.  The features that are not covered by an ABI
       generally affect how a program behaves, but not intercallability.
  
! â€œcompatibilityâ€�
       Conformance to the same ABI and the same behavior of
       implementation-defined features are both relevant for
       compatibility.
*************** Binary compatibility encompasses several
*** 66955,66974 ****
   The application binary interface implemented by a C or C++ compiler
  affects code generation and runtime support for:
  
!    * size and alignment of data types
!    * layout of structured types
!    * calling conventions
!    * register usage conventions
!    * interfaces for runtime arithmetic support
!    * object file formats
  
   In addition, the application binary interface implemented by a C++
  compiler affects code generation and runtime support for:
!    * name mangling
!    * exception handling
!    * invoking constructors and destructors
!    * layout, alignment, and padding of classes
!    * layout and alignment of virtual tables
  
   Some GCC compilation options cause the compiler to generate code that
  does not conform to the platform's default ABI.  Other options cause
--- 66964,66983 ----
   The application binary interface implemented by a C or C++ compiler
  affects code generation and runtime support for:
  
!    â€¢ size and alignment of data types
!    â€¢ layout of structured types
!    â€¢ calling conventions
!    â€¢ register usage conventions
!    â€¢ interfaces for runtime arithmetic support
!    â€¢ object file formats
  
   In addition, the application binary interface implemented by a C++
  compiler affects code generation and runtime support for:
!    â€¢ name mangling
!    â€¢ exception handling
!    â€¢ invoking constructors and destructors
!    â€¢ layout, alignment, and padding of classes
!    â€¢ layout and alignment of virtual tables
  
   Some GCC compilation options cause the compiler to generate code that
  does not conform to the platform's default ABI.  Other options cause
*************** GCC releases, but it is possible that we
*** 66991,66997 ****
  make this difficult.  Such problems could include different
  interpretations of the C++ ABI by different vendors, bugs in the ABI, or
  bugs in the implementation of the ABI in different compilers.  GCC's
! '-Wabi' switch warns when G++ generates code that is probably not
  compatible with the C++ ABI.
  
   The C++ library used with a C++ compiler includes the Standard C++
--- 67000,67006 ----
  make this difficult.  Such problems could include different
  interpretations of the C++ ABI by different vendors, bugs in the ABI, or
  bugs in the implementation of the ABI in different compilers.  GCC's
! â€˜-Wabiâ€™ switch warns when G++ generates code that is probably not
  compatible with the C++ ABI.
  
   The C++ library used with a C++ compiler includes the Standard C++
*************** with those compilers can be used in the
*** 67010,67016 ****
  the same C++ library.  This requires specifying the location of the C++
  library header files when invoking the compiler whose usual library is
  not being used.  The location of GCC's C++ header files depends on how
! the GCC build was configured, but can be seen by using the G++ '-v'
  option.  With default configuration options for G++ 3.3 the compile line
  for a different C++ compiler needs to include
  
--- 67019,67025 ----
  the same C++ library.  This requires specifying the location of the C++
  library header files when invoking the compiler whose usual library is
  not being used.  The location of GCC's C++ header files depends on how
! the GCC build was configured, but can be seen by using the G++ â€˜-vâ€™
  option.  With default configuration options for G++ 3.3 the compile line
  for a different C++ compiler needs to include
  
*************** files for that other library.
*** 67022,67046 ****
  
   The most straightforward way to link a program to use a particular C++
  library is to use a C++ driver that specifies that C++ library by
! default.  The 'g++' driver, for example, tells the linker where to find
! GCC's C++ library ('libstdc++') plus the other libraries and startup
  files it needs, in the proper order.
  
   If a program must use a different C++ library and it's not possible to
  do the final link using a C++ driver that uses that library by default,
! it is necessary to tell 'g++' the location and name of that library.  It
  might also be necessary to specify different startup files and other
  runtime support libraries, and to suppress the use of GCC's support
! libraries with one or more of the options '-nostdlib', '-nostartfiles',
! and '-nodefaultlibs'.
  
  
  File: gcc.info,  Node: Gcov,  Next: Gcov-tool,  Prev: Compatibility,  Up: Top
  
! 11 'gcov'--a Test Coverage Program
  **********************************
  
! 'gcov' is a tool you can use in conjunction with GCC to test code
  coverage in your programs.
  
  * Menu:
--- 67031,67055 ----
  
   The most straightforward way to link a program to use a particular C++
  library is to use a C++ driver that specifies that C++ library by
! default.  The â€˜g++â€™ driver, for example, tells the linker where to find
! GCC's C++ library (â€˜libstdc++â€™) plus the other libraries and startup
  files it needs, in the proper order.
  
   If a program must use a different C++ library and it's not possible to
  do the final link using a C++ driver that uses that library by default,
! it is necessary to tell â€˜g++â€™ the location and name of that library.  It
  might also be necessary to specify different startup files and other
  runtime support libraries, and to suppress the use of GCC's support
! libraries with one or more of the options â€˜-nostdlibâ€™, â€˜-nostartfilesâ€™,
! and â€˜-nodefaultlibsâ€™.
  
  
  File: gcc.info,  Node: Gcov,  Next: Gcov-tool,  Prev: Compatibility,  Up: Top
  
! 11 â€˜gcovâ€™--a Test Coverage Program
  **********************************
  
! â€˜gcovâ€™ is a tool you can use in conjunction with GCC to test code
  coverage in your programs.
  
  * Menu:
*************** coverage in your programs.
*** 67056,67085 ****
  
  File: gcc.info,  Node: Gcov Intro,  Next: Invoking Gcov,  Up: Gcov
  
! 11.1 Introduction to 'gcov'
  ===========================
  
! 'gcov' is a test coverage program.  Use it in concert with GCC to
  analyze your programs to help create more efficient, faster running code
! and to discover untested parts of your program.  You can use 'gcov' as a
  profiling tool to help discover where your optimization efforts will
! best affect your code.  You can also use 'gcov' along with the other
! profiling tool, 'gprof', to assess which parts of your code use the
  greatest amount of computing time.
  
   Profiling tools help you analyze your code's performance.  Using a
! profiler such as 'gcov' or 'gprof', you can find out some basic
  performance statistics, such as:
  
!    * how often each line of code executes
  
!    * what lines of code are actually executed
  
!    * how much computing time each section of code uses
  
   Once you know these things about how your code works when compiled, you
  can look at each module to see which modules should be optimized.
! 'gcov' helps you determine where to work on optimization.
  
   Software developers also use coverage testing in concert with
  testsuites, to make sure software is actually good enough for a release.
--- 67065,67094 ----
  
  File: gcc.info,  Node: Gcov Intro,  Next: Invoking Gcov,  Up: Gcov
  
! 11.1 Introduction to â€˜gcovâ€™
  ===========================
  
! â€˜gcovâ€™ is a test coverage program.  Use it in concert with GCC to
  analyze your programs to help create more efficient, faster running code
! and to discover untested parts of your program.  You can use â€˜gcovâ€™ as a
  profiling tool to help discover where your optimization efforts will
! best affect your code.  You can also use â€˜gcovâ€™ along with the other
! profiling tool, â€˜gprofâ€™, to assess which parts of your code use the
  greatest amount of computing time.
  
   Profiling tools help you analyze your code's performance.  Using a
! profiler such as â€˜gcovâ€™ or â€˜gprofâ€™, you can find out some basic
  performance statistics, such as:
  
!    â€¢ how often each line of code executes
  
!    â€¢ what lines of code are actually executed
  
!    â€¢ how much computing time each section of code uses
  
   Once you know these things about how your code works when compiled, you
  can look at each module to see which modules should be optimized.
! â€˜gcovâ€™ helps you determine where to work on optimization.
  
   Software developers also use coverage testing in concert with
  testsuites, to make sure software is actually good enough for a release.
*************** to be added to the testsuites to create
*** 67090,67099 ****
  final product.
  
   You should compile your code without optimization if you plan to use
! 'gcov' because the optimization, by combining some lines of code into
  one function, may not give you as much information as you need to look
  for 'hot spots' where the code is using a great deal of computer time.
! Likewise, because 'gcov' accumulates statistics by line (at the lowest
  resolution), it works best with a programming style that places only one
  statement on each line.  If you use complicated macros that expand to
  loops or to other control structures, the statistics are less
--- 67099,67108 ----
  final product.
  
   You should compile your code without optimization if you plan to use
! â€˜gcovâ€™ because the optimization, by combining some lines of code into
  one function, may not give you as much information as you need to look
  for 'hot spots' where the code is using a great deal of computer time.
! Likewise, because â€˜gcovâ€™ accumulates statistics by line (at the lowest
  resolution), it works best with a programming style that places only one
  statement on each line.  If you use complicated macros that expand to
  loops or to other control structures, the statistics are less
*************** helpful--they only report on the line wh
*** 67101,67155 ****
  your complex macros behave like functions, you can replace them with
  inline functions to solve this problem.
  
!  'gcov' creates a logfile called 'SOURCEFILE.gcov' which indicates how
! many times each line of a source file 'SOURCEFILE.c' has executed.  You
! can use these logfiles along with 'gprof' to aid in fine-tuning the
! performance of your programs.  'gprof' gives timing information you can
! use along with the information you get from 'gcov'.
  
!  'gcov' works only on code compiled with GCC.  It is not compatible with
  any other profiling or test coverage mechanism.
  
  
  File: gcc.info,  Node: Invoking Gcov,  Next: Gcov and Optimization,  Prev: Gcov Intro,  Up: Gcov
  
! 11.2 Invoking 'gcov'
  ====================
  
       gcov [OPTIONS] FILES
  
!  'gcov' accepts the following options:
  
! '-a'
! '--all-blocks'
       Write individual execution counts for every basic block.  Normally
       gcov outputs execution counts only for the main blocks of a line.
       With this option you can determine if blocks within a single line
       are not being executed.
  
! '-b'
! '--branch-probabilities'
       Write branch frequencies to the output file, and write branch
       summary info to the standard output.  This option allows you to see
       how often each branch in your program was taken.  Unconditional
!      branches will not be shown, unless the '-u' option is given.
  
! '-c'
! '--branch-counts'
       Write branch frequencies as the number of branches taken, rather
       than the percentage of branches taken.
  
! '-g'
! '--conditions'
       Write condition coverage to the output file, and write condition
       summary info to the standard output.  This option allows you to see
       if the conditions in your program at least once had an independent
       effect on the outcome of the boolean expression (modified
       condition/decision coverage).  This requires you to compile the
!      source with '-fcondition-coverage'.
  
! '-e'
! '--prime-paths'
       Write path coverage to the output file, and write path summary info
       to the standard output.  This option allows you to see how many
       prime paths were taken at least once.  A path is a sequence of
--- 67110,67164 ----
  your complex macros behave like functions, you can replace them with
  inline functions to solve this problem.
  
!  â€˜gcovâ€™ creates a logfile called â€˜SOURCEFILE.gcovâ€™ which indicates how
! many times each line of a source file â€˜SOURCEFILE.câ€™ has executed.  You
! can use these logfiles along with â€˜gprofâ€™ to aid in fine-tuning the
! performance of your programs.  â€˜gprofâ€™ gives timing information you can
! use along with the information you get from â€˜gcovâ€™.
  
!  â€˜gcovâ€™ works only on code compiled with GCC.  It is not compatible with
  any other profiling or test coverage mechanism.
  
  
  File: gcc.info,  Node: Invoking Gcov,  Next: Gcov and Optimization,  Prev: Gcov Intro,  Up: Gcov
  
! 11.2 Invoking â€˜gcovâ€™
  ====================
  
       gcov [OPTIONS] FILES
  
!  â€˜gcovâ€™ accepts the following options:
  
! â€˜-aâ€™
! â€˜--all-blocksâ€™
       Write individual execution counts for every basic block.  Normally
       gcov outputs execution counts only for the main blocks of a line.
       With this option you can determine if blocks within a single line
       are not being executed.
  
! â€˜-bâ€™
! â€˜--branch-probabilitiesâ€™
       Write branch frequencies to the output file, and write branch
       summary info to the standard output.  This option allows you to see
       how often each branch in your program was taken.  Unconditional
!      branches will not be shown, unless the â€˜-uâ€™ option is given.
  
! â€˜-câ€™
! â€˜--branch-countsâ€™
       Write branch frequencies as the number of branches taken, rather
       than the percentage of branches taken.
  
! â€˜-gâ€™
! â€˜--conditionsâ€™
       Write condition coverage to the output file, and write condition
       summary info to the standard output.  This option allows you to see
       if the conditions in your program at least once had an independent
       effect on the outcome of the boolean expression (modified
       condition/decision coverage).  This requires you to compile the
!      source with â€˜-fcondition-coverageâ€™.
  
! â€˜-eâ€™
! â€˜--prime-pathsâ€™
       Write path coverage to the output file, and write path summary info
       to the standard output.  This option allows you to see how many
       prime paths were taken at least once.  A path is a sequence of
*************** File: gcc.info,  Node: Invoking Gcov,  N
*** 67157,67181 ****
       loops) except maybe the first and last block, and prime if it is a
       simple path of maximal length.  For the regular output this option
       only includes the number of paths covered.  For more fine grained
!      information on paths you can use '--prime-paths-lines' or
!      '--prime-paths-source'.  With '--json-format' all path details are
       included in the output.  This requires you to compile the source
!      with '-fpath-coverage'.
  
! '--prime-paths-lines [=TYPE]'
       Write path coverage to the output file, and write path summary info
       to the standard output.  This option allows you to see how many
       prime paths were taken at least once, and dense report on the
       covered or uncovered paths and how to cover them.  This mode is
       useful for automated reporting and progress tracking.  TYPE may be
       omitted, or one of:
!         * UNCOVERED - Include the uncovered (not taken) paths.  This is
            the default.
!         * COVERED - Include the covered (taken) paths.
!         * BOTH - Include all paths.  This is equivalent to using both
            COVERED and UNCOVERED.
  
!      This is an example of '--prime-paths-lines' output:
  
            paths covered 12 of 15
            path  2 not covered: lines 8 8(false) 11(true) 11 13(true) 13(true) 14 17
--- 67166,67190 ----
       loops) except maybe the first and last block, and prime if it is a
       simple path of maximal length.  For the regular output this option
       only includes the number of paths covered.  For more fine grained
!      information on paths you can use â€˜--prime-paths-linesâ€™ or
!      â€˜--prime-paths-sourceâ€™.  With â€˜--json-formatâ€™ all path details are
       included in the output.  This requires you to compile the source
!      with â€˜-fpath-coverageâ€™.
  
! â€˜--prime-paths-lines [=TYPE]â€™
       Write path coverage to the output file, and write path summary info
       to the standard output.  This option allows you to see how many
       prime paths were taken at least once, and dense report on the
       covered or uncovered paths and how to cover them.  This mode is
       useful for automated reporting and progress tracking.  TYPE may be
       omitted, or one of:
!         â€¢ UNCOVERED - Include the uncovered (not taken) paths.  This is
            the default.
!         â€¢ COVERED - Include the covered (taken) paths.
!         â€¢ BOTH - Include all paths.  This is equivalent to using both
            COVERED and UNCOVERED.
  
!      This is an example of â€˜--prime-paths-linesâ€™ output:
  
            paths covered 12 of 15
            path  2 not covered: lines 8 8(false) 11(true) 11 13(true) 13(true) 14 17
*************** File: gcc.info,  Node: Invoking Gcov,  N
*** 67184,67205 ****
  
       This means to cover path 2 you must run lines 8, 11, 13, 14, and
       17, evaluting the decision at 8 false and the decisions at 11 and
!      13 to 'false'.
  
! '--prime-paths-source [=TYPE]'
       Write path coverage to the output file, and write path summary info
       to the standard output.  This option allows you to see how many
       prime paths were taken at least once, and detailed report on the
       uncovered paths an how to cover them.  This mode is useful for
       understanding paths and interactions between sections of your
       program.  TYPE may be omitted, or one of:
!         * UNCOVERED - Include the uncovered (not taken) paths.  This is
            the default.
!         * COVERED - Include the covered (taken) paths.
!         * BOTH - Include all paths.  This is equivalent to using both
            COVERED and UNCOVERED.
  
!      This is an example of '--prime-paths-source' output:
  
            path 10 not covered:
            BB  3:           8:  for (i = 0; i < 10; i++)
--- 67193,67214 ----
  
       This means to cover path 2 you must run lines 8, 11, 13, 14, and
       17, evaluting the decision at 8 false and the decisions at 11 and
!      13 to â€˜falseâ€™.
  
! â€˜--prime-paths-source [=TYPE]â€™
       Write path coverage to the output file, and write path summary info
       to the standard output.  This option allows you to see how many
       prime paths were taken at least once, and detailed report on the
       uncovered paths an how to cover them.  This mode is useful for
       understanding paths and interactions between sections of your
       program.  TYPE may be omitted, or one of:
!         â€¢ UNCOVERED - Include the uncovered (not taken) paths.  This is
            the default.
!         â€¢ COVERED - Include the covered (taken) paths.
!         â€¢ BOTH - Include all paths.  This is equivalent to using both
            COVERED and UNCOVERED.
  
!      This is an example of â€˜--prime-paths-sourceâ€™ output:
  
            path 10 not covered:
            BB  3:           8:  for (i = 0; i < 10; i++)
*************** File: gcc.info,  Node: Invoking Gcov,  N
*** 67211,67258 ****
            BB 11:          16:    printf ("Success\n");
            BB 12:          17:  return 0;
  
!      The first (BB) column is the sequence of basic blocks (see '-w').
       The middle column (true/false) is the decision for that line.  The
       third column is the line number.  The fourth column is the line
       itself.  These lines must be run in this order to cover path 10.
  
! '-d'
! '--display-progress'
       Display the progress on the standard output.
  
! '-f'
! '--function-summaries'
       Output summaries for each function in addition to the file level
       summary.
  
! '--include REGEX'
!      Include functions matching REGEX.  This option makes 'gcov' only
       report on functions that match the extended regular expression
!      REGEX.  This flag can be combined with '--exclude'.  If a function
       matches both includes and excludes, the last include/exclude
!      applies.  By default 'gcov' reports on all functions, but if a
!      '--include' is used then only functions matching the include will
       be reported.
  
! '--exclude REGEX'
!      Exclude functions matching REGEX.  This option makes 'gcov' not
       report on functions that match the extended regular expression
!      REGEX.  This flag can be combined with '--include'.  If a function
       matches both includes and excludes, the last include/exclude
!      applies.  By default 'gcov' reports on all functions, and if
!      '--exclude' is used then functions matching it will be omitted.
  
! '-h'
! '--help'
!      Display help about using 'gcov' (on the standard output), and exit
       without doing any further processing.
  
! '-j'
! '--json-format'
       Output gcov file in an easy-to-parse JSON intermediate format which
       does not require source code for generation.  The JSON file is
       compressed with gzip compression algorithm and the files have
!      '.gcov.json.gz' extension.
  
       Structure of the JSON is following:
  
--- 67220,67267 ----
            BB 11:          16:    printf ("Success\n");
            BB 12:          17:  return 0;
  
!      The first (BB) column is the sequence of basic blocks (see â€˜-wâ€™).
       The middle column (true/false) is the decision for that line.  The
       third column is the line number.  The fourth column is the line
       itself.  These lines must be run in this order to cover path 10.
  
! â€˜-dâ€™
! â€˜--display-progressâ€™
       Display the progress on the standard output.
  
! â€˜-fâ€™
! â€˜--function-summariesâ€™
       Output summaries for each function in addition to the file level
       summary.
  
! â€˜--include REGEXâ€™
!      Include functions matching REGEX.  This option makes â€˜gcovâ€™ only
       report on functions that match the extended regular expression
!      REGEX.  This flag can be combined with â€˜--excludeâ€™.  If a function
       matches both includes and excludes, the last include/exclude
!      applies.  By default â€˜gcovâ€™ reports on all functions, but if a
!      â€˜--includeâ€™ is used then only functions matching the include will
       be reported.
  
! â€˜--exclude REGEXâ€™
!      Exclude functions matching REGEX.  This option makes â€˜gcovâ€™ not
       report on functions that match the extended regular expression
!      REGEX.  This flag can be combined with â€˜--includeâ€™.  If a function
       matches both includes and excludes, the last include/exclude
!      applies.  By default â€˜gcovâ€™ reports on all functions, and if
!      â€˜--excludeâ€™ is used then functions matching it will be omitted.
  
! â€˜-hâ€™
! â€˜--helpâ€™
!      Display help about using â€˜gcovâ€™ (on the standard output), and exit
       without doing any further processing.
  
! â€˜-jâ€™
! â€˜--json-formatâ€™
       Output gcov file in an easy-to-parse JSON intermediate format which
       does not require source code for generation.  The JSON file is
       compressed with gzip compression algorithm and the files have
!      â€˜.gcov.json.gzâ€™ extension.
  
       Structure of the JSON is following:
  
*************** File: gcc.info,  Node: Invoking Gcov,  N
*** 67266,67282 ****
  
       Fields of the root element have following semantics:
  
!         * CURRENT_WORKING_DIRECTORY: working directory where a
            compilation unit was compiled
  
!         * DATA_FILE: name of the data file (GCDA)
  
!         * FORMAT_VERSION: semantic version of the format
  
            Changes in version _2_:
!              * CALLS: information about function calls is added
  
!         * GCC_VERSION: version of the GCC compiler
  
       Each FILE has the following form:
  
--- 67275,67291 ----
  
       Fields of the root element have following semantics:
  
!         â€¢ CURRENT_WORKING_DIRECTORY: working directory where a
            compilation unit was compiled
  
!         â€¢ DATA_FILE: name of the data file (GCDA)
  
!         â€¢ FORMAT_VERSION: semantic version of the format
  
            Changes in version _2_:
!              â€¢ CALLS: information about function calls is added
  
!         â€¢ GCC_VERSION: version of the GCC compiler
  
       Each FILE has the following form:
  
*************** File: gcc.info,  Node: Invoking Gcov,  N
*** 67288,67294 ****
  
       Fields of the FILE element have following semantics:
  
!         * FILE_NAME: name of the source file
  
       Each FUNCTION has the following form:
  
--- 67297,67303 ----
  
       Fields of the FILE element have following semantics:
  
!         â€¢ FILE_NAME: name of the source file
  
       Each FUNCTION has the following form:
  
*************** File: gcc.info,  Node: Invoking Gcov,  N
*** 67306,67329 ****
  
       Fields of the FUNCTION element have following semantics:
  
!         * BLOCKS: number of blocks that are in the function
  
!         * BLOCKS_EXECUTED: number of executed blocks of the function
  
!         * DEMANGLED_NAME: demangled name of the function
  
!         * END_COLUMN: column in the source file where the function ends
  
!         * END_LINE: line in the source file where the function ends
  
!         * EXECUTION_COUNT: number of executions of the function
  
!         * NAME: name of the function
  
!         * START_COLUMN: column in the source file where the function
            begins
  
!         * START_LINE: line in the source file where the function begins
  
       Note that line numbers and column numbers number from 1.  In the
       current implementation, START_LINE and START_COLUMN do not include
--- 67315,67338 ----
  
       Fields of the FUNCTION element have following semantics:
  
!         â€¢ BLOCKS: number of blocks that are in the function
  
!         â€¢ BLOCKS_EXECUTED: number of executed blocks of the function
  
!         â€¢ DEMANGLED_NAME: demangled name of the function
  
!         â€¢ END_COLUMN: column in the source file where the function ends
  
!         â€¢ END_LINE: line in the source file where the function ends
  
!         â€¢ EXECUTION_COUNT: number of executions of the function
  
!         â€¢ NAME: name of the function
  
!         â€¢ START_COLUMN: column in the source file where the function
            begins
  
!         â€¢ START_LINE: line in the source file where the function begins
  
       Note that line numbers and column numbers number from 1.  In the
       current implementation, START_LINE and START_COLUMN do not include
*************** File: gcc.info,  Node: Invoking Gcov,  N
*** 67346,67361 ****
       Branches and calls are present only with -B option.  Fields of the
       LINE element have following semantics:
  
!         * BLOCK_IDS: IDs of basic blocks that belong to the line
  
!         * COUNT: number of executions of the line
  
!         * LINE_NUMBER: line number
  
!         * UNEXECUTED_BLOCK: flag whether the line contains an unexecuted
            block (not all statements on the line are executed)
  
!         * FUNCTION_NAME: a name of a function this LINE belongs to (for
            a line with an inlined statements can be not set)
  
       Each BRANCH has the following form:
--- 67355,67370 ----
       Branches and calls are present only with -B option.  Fields of the
       LINE element have following semantics:
  
!         â€¢ BLOCK_IDS: IDs of basic blocks that belong to the line
  
!         â€¢ COUNT: number of executions of the line
  
!         â€¢ LINE_NUMBER: line number
  
!         â€¢ UNEXECUTED_BLOCK: flag whether the line contains an unexecuted
            block (not all statements on the line are executed)
  
!         â€¢ FUNCTION_NAME: a name of a function this LINE belongs to (for
            a line with an inlined statements can be not set)
  
       Each BRANCH has the following form:
*************** File: gcc.info,  Node: Invoking Gcov,  N
*** 67370,67385 ****
  
       Fields of the BRANCH element have following semantics:
  
!         * COUNT: number of executions of the branch
  
!         * FALLTHROUGH: true when the branch is a fall through branch
  
!         * THROW: true when the branch is an exceptional branch
  
!         * ISOURCE_BLOCK_ID: ID of the basic block where this branch
            happens
  
!         * DESTINATION_BLOCK_ID: ID of the basic block this branch jumps
            to
  
       Each CALL has the following form:
--- 67379,67394 ----
  
       Fields of the BRANCH element have following semantics:
  
!         â€¢ COUNT: number of executions of the branch
  
!         â€¢ FALLTHROUGH: true when the branch is a fall through branch
  
!         â€¢ THROW: true when the branch is an exceptional branch
  
!         â€¢ ISOURCE_BLOCK_ID: ID of the basic block where this branch
            happens
  
!         â€¢ DESTINATION_BLOCK_ID: ID of the basic block this branch jumps
            to
  
       Each CALL has the following form:
*************** File: gcc.info,  Node: Invoking Gcov,  N
*** 67392,67404 ****
  
       Fields of the CALL element have following semantics:
  
!         * RETURNED: number of times a function call returned (call count
            is equal to LINE::COUNT)
  
!         * ISOURCE_BLOCK_ID: ID of the basic block where this call
            happens
  
!         * DESTINATION_BLOCK_ID: ID of the basic block this calls
            continues after return
  
       Each CONDITION has the following form:
--- 67401,67413 ----
  
       Fields of the CALL element have following semantics:
  
!         â€¢ RETURNED: number of times a function call returned (call count
            is equal to LINE::COUNT)
  
!         â€¢ ISOURCE_BLOCK_ID: ID of the basic block where this call
            happens
  
!         â€¢ DESTINATION_BLOCK_ID: ID of the basic block this calls
            continues after return
  
       Each CONDITION has the following form:
*************** File: gcc.info,  Node: Invoking Gcov,  N
*** 67413,67500 ****
  
       Fields of the CONDITION element have following semantics:
  
!         * COUNT: number of condition outcomes in this expression
  
!         * COVERED: number of covered condition outcomes in this
            expression
  
!         * NOT_COVERED_TRUE: terms, by index, not seen as true in this
            expression
  
!         * NOT_COVERED_FALSE: terms, by index, not seen as false in this
            expression
  
! '-H'
! '--human-readable'
       Write counts in human readable format (like 24.6k).
  
! '-k'
! '--use-colors'
  
       Use colors for lines of code that have zero coverage.  We use red
       color for non-exceptional lines and cyan for exceptional.  Same
!      colors are used for basic blocks with '-a' option.
  
! '-l'
! '--long-file-names'
       Create long file names for included source files.  For example, if
!      the header file 'x.h' contains code, and was included in the file
!      'a.c', then running 'gcov' on the file 'a.c' will produce an output
!      file called 'a.c##x.h.gcov' instead of 'x.h.gcov'.  This can be
!      useful if 'x.h' is included in multiple source files and you want
!      to see the individual contributions.  If you use the '-p' option,
       both the including and included file names will be complete path
       names.
  
! '-m'
! '--demangled-names'
       Display demangled function names in output.  The default is to show
       mangled function names.
  
! '-M'
! '--filter-on-demangled'
!      Make '--include' and '--exclude' match demangled names.  This does
!      only affects the matching and does not imply '--demangled-names',
       but it can safely be combined with it.
  
! '-n'
! '--no-output'
!      Do not create the 'gcov' output file.
  
! '-o DIRECTORY|FILE'
! '--object-directory DIRECTORY'
! '--object-file FILE'
       Specify either the directory containing the gcov data files, or the
!      object path name.  The '.gcno', and '.gcda' data files are searched
       for using this option.  If a directory is specified, the data files
       are in that directory and named after the input file name, without
       its extension.  If a file is specified here, the data files are
       named after that file, without its extension.
  
! '-p'
! '--preserve-paths'
       Preserve complete path information in the names of generated
!      '.gcov' files.  Without this option, just the filename component is
!      used.  With this option, all directories are used, with '/'
!      characters translated to '#' characters, '.' directory components
!      removed and unremoveable '..' components renamed to '^'.  This is
       useful if sourcefiles are in several different directories.
  
! '-q'
! '--use-hotness-colors'
  
       Emit perf-like colored output for hot lines.  Legend of the color
       scale is printed at the very beginning of the output file.
  
! '-r'
! '--relative-only'
       Only output information about source files with a relative pathname
       (after source prefix elision).  Absolute paths are usually system
       header files and coverage of any inline functions therein is
       normally uninteresting.
  
! '-s DIRECTORY'
! '--source-prefix DIRECTORY'
       A prefix for source file names to remove when generating the output
       coverage files.  This option is useful when building in a separate
       directory, and the pathname to the source directory is not wanted
--- 67422,67509 ----
  
       Fields of the CONDITION element have following semantics:
  
!         â€¢ COUNT: number of condition outcomes in this expression
  
!         â€¢ COVERED: number of covered condition outcomes in this
            expression
  
!         â€¢ NOT_COVERED_TRUE: terms, by index, not seen as true in this
            expression
  
!         â€¢ NOT_COVERED_FALSE: terms, by index, not seen as false in this
            expression
  
! â€˜-Hâ€™
! â€˜--human-readableâ€™
       Write counts in human readable format (like 24.6k).
  
! â€˜-kâ€™
! â€˜--use-colorsâ€™
  
       Use colors for lines of code that have zero coverage.  We use red
       color for non-exceptional lines and cyan for exceptional.  Same
!      colors are used for basic blocks with â€˜-aâ€™ option.
  
! â€˜-lâ€™
! â€˜--long-file-namesâ€™
       Create long file names for included source files.  For example, if
!      the header file â€˜x.hâ€™ contains code, and was included in the file
!      â€˜a.câ€™, then running â€˜gcovâ€™ on the file â€˜a.câ€™ will produce an output
!      file called â€˜a.c##x.h.gcovâ€™ instead of â€˜x.h.gcovâ€™.  This can be
!      useful if â€˜x.hâ€™ is included in multiple source files and you want
!      to see the individual contributions.  If you use the â€˜-pâ€™ option,
       both the including and included file names will be complete path
       names.
  
! â€˜-mâ€™
! â€˜--demangled-namesâ€™
       Display demangled function names in output.  The default is to show
       mangled function names.
  
! â€˜-Mâ€™
! â€˜--filter-on-demangledâ€™
!      Make â€˜--includeâ€™ and â€˜--excludeâ€™ match demangled names.  This does
!      only affects the matching and does not imply â€˜--demangled-namesâ€™,
       but it can safely be combined with it.
  
! â€˜-nâ€™
! â€˜--no-outputâ€™
!      Do not create the â€˜gcovâ€™ output file.
  
! â€˜-o DIRECTORY|FILEâ€™
! â€˜--object-directory DIRECTORYâ€™
! â€˜--object-file FILEâ€™
       Specify either the directory containing the gcov data files, or the
!      object path name.  The â€˜.gcnoâ€™, and â€˜.gcdaâ€™ data files are searched
       for using this option.  If a directory is specified, the data files
       are in that directory and named after the input file name, without
       its extension.  If a file is specified here, the data files are
       named after that file, without its extension.
  
! â€˜-pâ€™
! â€˜--preserve-pathsâ€™
       Preserve complete path information in the names of generated
!      â€˜.gcovâ€™ files.  Without this option, just the filename component is
!      used.  With this option, all directories are used, with â€˜/â€™
!      characters translated to â€˜#â€™ characters, â€˜.â€™ directory components
!      removed and unremoveable â€˜..â€™ components renamed to â€˜^â€™.  This is
       useful if sourcefiles are in several different directories.
  
! â€˜-qâ€™
! â€˜--use-hotness-colorsâ€™
  
       Emit perf-like colored output for hot lines.  Legend of the color
       scale is printed at the very beginning of the output file.
  
! â€˜-râ€™
! â€˜--relative-onlyâ€™
       Only output information about source files with a relative pathname
       (after source prefix elision).  Absolute paths are usually system
       header files and coverage of any inline functions therein is
       normally uninteresting.
  
! â€˜-s DIRECTORYâ€™
! â€˜--source-prefix DIRECTORYâ€™
       A prefix for source file names to remove when generating the output
       coverage files.  This option is useful when building in a separate
       directory, and the pathname to the source directory is not wanted
*************** File: gcc.info,  Node: Invoking Gcov,  N
*** 67502,67570 ****
       detection is applied before determining whether the source file is
       absolute.
  
! '-t'
! '--stdout'
       Output to standard output instead of output files.
  
! '-u'
! '--unconditional-branches'
       When branch probabilities are given, include those of unconditional
       branches.  Unconditional branches are normally not interesting.
  
! '-v'
! '--version'
!      Display the 'gcov' version number (on the standard output), and
       exit without doing any further processing.
  
! '-w'
! '--verbose'
       Print verbose informations related to basic blocks and arcs.
  
! '-x'
! '--hash-filenames'
       When using -PRESERVE-PATHS, gcov uses the full pathname of the
       source files to create an output filename.  This can lead to long
       filenames that can overflow filesystem limits.  This option creates
!      names of the form 'SOURCE-FILE##MD5.gcov', where the SOURCE-FILE
       component is the final filename part and the MD5 component is
       calculated from the full mangled name that would have been used
       otherwise.  The option is an alternative to the -PRESERVE-PATHS on
       systems which have a filesystem limit.
  
!  'gcov' should be run with the current directory the same as that when
  you invoked the compiler.  Otherwise it will not be able to locate the
! source files.  'gcov' produces files called 'MANGLEDNAME.gcov' in the
  current directory.  These contain the coverage information of the source
! file they correspond to.  One '.gcov' file is produced for each source
  (or header) file containing code, which was compiled to produce the data
  files.  The MANGLEDNAME part of the output file name is usually simply
! the source file name, but can be something more complicated if the '-l'
! or '-p' options are given.  Refer to those options for details.
  
!  If you invoke 'gcov' with multiple input files, the contributions from
  each input file are summed.  Typically you would invoke it with the same
  list of files as the final link of your executable.
  
!  The '.gcov' files contain the ':' separated fields along with program
  source code.  The format is
  
       EXECUTION_COUNT:LINE_NUMBER:SOURCE LINE TEXT
  
   Additional block information may succeed each line, when requested by
! command line option.  The EXECUTION_COUNT is '-' for lines containing no
! code.  Unexecuted lines are marked '#####' or '=====', depending on
  whether they are reachable by non-exceptional paths or only exceptional
! paths such as C++ exception handlers, respectively.  Given the '-a'
! option, unexecuted blocks are marked '$$$$$' or '%%%%%', depending on
  whether a basic block is reachable via non-exceptional or exceptional
  paths.  Executed basic blocks having a statement with zero
! EXECUTION_COUNT end with '*' character and are colored with magenta
! color with the '-k' option.  This functionality is not supported in Ada.
  
   Note that GCC can completely remove the bodies of functions that are
  not needed - for instance if they are inlined everywhere.  Such
! functions are marked with '-', which can be confusing.  Use the
! '-fkeep-inline-functions' and '-fkeep-static-functions' options to
  retain these functions and allow gcov to properly show their
  EXECUTION_COUNT.
  
--- 67511,67579 ----
       detection is applied before determining whether the source file is
       absolute.
  
! â€˜-tâ€™
! â€˜--stdoutâ€™
       Output to standard output instead of output files.
  
! â€˜-uâ€™
! â€˜--unconditional-branchesâ€™
       When branch probabilities are given, include those of unconditional
       branches.  Unconditional branches are normally not interesting.
  
! â€˜-vâ€™
! â€˜--versionâ€™
!      Display the â€˜gcovâ€™ version number (on the standard output), and
       exit without doing any further processing.
  
! â€˜-wâ€™
! â€˜--verboseâ€™
       Print verbose informations related to basic blocks and arcs.
  
! â€˜-xâ€™
! â€˜--hash-filenamesâ€™
       When using -PRESERVE-PATHS, gcov uses the full pathname of the
       source files to create an output filename.  This can lead to long
       filenames that can overflow filesystem limits.  This option creates
!      names of the form â€˜SOURCE-FILE##MD5.gcovâ€™, where the SOURCE-FILE
       component is the final filename part and the MD5 component is
       calculated from the full mangled name that would have been used
       otherwise.  The option is an alternative to the -PRESERVE-PATHS on
       systems which have a filesystem limit.
  
!  â€˜gcovâ€™ should be run with the current directory the same as that when
  you invoked the compiler.  Otherwise it will not be able to locate the
! source files.  â€˜gcovâ€™ produces files called â€˜MANGLEDNAME.gcovâ€™ in the
  current directory.  These contain the coverage information of the source
! file they correspond to.  One â€˜.gcovâ€™ file is produced for each source
  (or header) file containing code, which was compiled to produce the data
  files.  The MANGLEDNAME part of the output file name is usually simply
! the source file name, but can be something more complicated if the â€˜-lâ€™
! or â€˜-pâ€™ options are given.  Refer to those options for details.
  
!  If you invoke â€˜gcovâ€™ with multiple input files, the contributions from
  each input file are summed.  Typically you would invoke it with the same
  list of files as the final link of your executable.
  
!  The â€˜.gcovâ€™ files contain the â€˜:â€™ separated fields along with program
  source code.  The format is
  
       EXECUTION_COUNT:LINE_NUMBER:SOURCE LINE TEXT
  
   Additional block information may succeed each line, when requested by
! command line option.  The EXECUTION_COUNT is â€˜-â€™ for lines containing no
! code.  Unexecuted lines are marked â€˜#####â€™ or â€˜=====â€™, depending on
  whether they are reachable by non-exceptional paths or only exceptional
! paths such as C++ exception handlers, respectively.  Given the â€˜-aâ€™
! option, unexecuted blocks are marked â€˜$$$$$â€™ or â€˜%%%%%â€™, depending on
  whether a basic block is reachable via non-exceptional or exceptional
  paths.  Executed basic blocks having a statement with zero
! EXECUTION_COUNT end with â€˜*â€™ character and are colored with magenta
! color with the â€˜-kâ€™ option.  This functionality is not supported in Ada.
  
   Note that GCC can completely remove the bodies of functions that are
  not needed - for instance if they are inlined everywhere.  Such
! functions are marked with â€˜-â€™, which can be confusing.  Use the
! â€˜-fkeep-inline-functionsâ€™ and â€˜-fkeep-static-functionsâ€™ options to
  retain these functions and allow gcov to properly show their
  EXECUTION_COUNT.
  
*************** preamble lines are of the form
*** 67574,67580 ****
       -:0:TAG:VALUE
  
   The ordering and number of these preamble lines will be augmented as
! 'gcov' development progresses -- do not rely on them remaining
  unchanged.  Use TAG to locate a particular preamble line.
  
   The additional block information is of the form
--- 67583,67589 ----
       -:0:TAG:VALUE
  
   The ordering and number of these preamble lines will be augmented as
! â€˜gcovâ€™ development progresses -- do not rely on them remaining
  unchanged.  Use TAG to locate a particular preamble line.
  
   The additional block information is of the form
*************** are _exactly_ 0% and 100% respectively.
*** 67589,67609 ****
  conventionally be rounded to 0% or 100% are instead printed as the
  nearest non-boundary value.
  
!  When using 'gcov', you must first compile your program with a special
! GCC option '--coverage'.  This tells the compiler to generate additional
  information needed by gcov (basically a flow graph of the program) and
  also includes additional code in the object files for generating the
  extra profiling information needed by gcov.  These additional files are
  placed in the directory where the object file is located.
  
   Running the program will cause profile output to be generated.  For
! each source file compiled with '-fprofile-arcs', an accompanying '.gcda'
  file will be placed in the object file directory.
  
!  Running 'gcov' with your program's source file names as arguments will
  now produce a listing of the code along with frequency of execution for
! each line.  For example, if your program is called 'tmp.cpp', this is
! what you see when you use the basic 'gcov' facility:
  
       $ g++ --coverage tmp.cpp -c
       $ g++ --coverage tmp.o
--- 67598,67618 ----
  conventionally be rounded to 0% or 100% are instead printed as the
  nearest non-boundary value.
  
!  When using â€˜gcovâ€™, you must first compile your program with a special
! GCC option â€˜--coverageâ€™.  This tells the compiler to generate additional
  information needed by gcov (basically a flow graph of the program) and
  also includes additional code in the object files for generating the
  extra profiling information needed by gcov.  These additional files are
  placed in the directory where the object file is located.
  
   Running the program will cause profile output to be generated.  For
! each source file compiled with â€˜-fprofile-arcsâ€™, an accompanying â€˜.gcdaâ€™
  file will be placed in the object file directory.
  
!  Running â€˜gcovâ€™ with your program's source file names as arguments will
  now produce a listing of the code along with frequency of execution for
! each line.  For example, if your program is called â€˜tmp.cppâ€™, this is
! what you see when you use the basic â€˜gcovâ€™ facility:
  
       $ g++ --coverage tmp.cpp -c
       $ g++ --coverage tmp.o
*************** what you see when you use the basic 'gco
*** 67613,67619 ****
       Lines executed:92.86% of 14
       Creating 'tmp.cpp.gcov'
  
!  The file 'tmp.cpp.gcov' contains output from 'gcov'.  Here is a sample:
  
               -:    0:Source:tmp.cpp
               -:    0:Working directory:/home/gcc/testcase
--- 67622,67628 ----
       Lines executed:92.86% of 14
       Creating 'tmp.cpp.gcov'
  
!  The file â€˜tmp.cpp.gcovâ€™ contains output from â€˜gcovâ€™.  Here is a sample:
  
               -:    0:Source:tmp.cpp
               -:    0:Working directory:/home/gcc/testcase
*************** two belong to instances of class Foo con
*** 67679,67685 ****
  line 30 contains some unexecuted basic blocks and thus execution count
  has asterisk symbol.
  
!  When you use the '-a' option, you will get individual block counts, and
  the output looks like this:
  
               -:    0:Source:tmp.cpp
--- 67688,67694 ----
  line 30 contains some unexecuted basic blocks and thus execution count
  has asterisk symbol.
  
!  When you use the â€˜-aâ€™ option, you will get individual block counts, and
  the output looks like this:
  
               -:    0:Source:tmp.cpp
*************** contain code, unless previous blocks end
*** 67760,67772 ****
  execution count of a line is shown and subsequent lines show the
  execution counts for individual blocks that end on that line.  After
  each block, the branch and call counts of the block will be shown, if
! the '-b' option is given.
  
   Because of the way GCC instruments calls, a call count can be shown
  after a line with no individual blocks.  As you can see, line 33
  contains a basic block that was not executed.
  
!  When you use the '-b' option, your output looks like this:
  
               -:    0:Source:tmp.cpp
               -:    0:Working directory:/home/gcc/testcase
--- 67769,67781 ----
  execution count of a line is shown and subsequent lines show the
  execution counts for individual blocks that end on that line.  After
  each block, the branch and call counts of the block will be shown, if
! the â€˜-bâ€™ option is given.
  
   Because of the way GCC instruments calls, a call count can be shown
  after a line with no individual blocks.  As you can see, line 33
  contains a basic block that was not executed.
  
!  When you use the â€˜-bâ€™ option, your output looks like this:
  
               -:    0:Source:tmp.cpp
               -:    0:Working directory:/home/gcc/testcase
*************** message "never executed" is printed.
*** 67873,67882 ****
   For a call, if it was executed at least once, then a percentage
  indicating the number of times the call returned divided by the number
  of times the call was executed will be printed.  This will usually be
! 100%, but may be less for functions that call 'exit' or 'longjmp', and
  thus may not return every time they are called.
  
!  When you use the '-g' option, your output looks like this:
  
       $ gcov -t -m -g tmp
               -:    0:Source:tmp.cpp
--- 67882,67891 ----
   For a call, if it was executed at least once, then a percentage
  indicating the number of times the call returned divided by the number
  of times the call was executed will be printed.  This will usually be
! 100%, but may be less for functions that call â€˜exitâ€™ or â€˜longjmpâ€™, and
  thus may not return every time they are called.
  
!  When you use the â€˜-gâ€™ option, your output looks like this:
  
       $ gcov -t -m -g tmp
               -:    0:Source:tmp.cpp
*************** thus may not return every time they are
*** 67912,67919 ****
   For every condition the number of taken and total outcomes are printed,
  and if there are uncovered outcomes a line will be printed for each
  condition showing the uncovered outcome in parentheses.  Conditions are
! identified by their index - index 0 is the left-most condition.  In 'a
! || (b && c)', A is condition 0, B condition 1, and C condition 2.
  
   An outcome is considered covered if it has an independent effect on the
  decision, also known as masking MC/DC (Modified Condition/Decision
--- 67921,67928 ----
   For every condition the number of taken and total outcomes are printed,
  and if there are uncovered outcomes a line will be printed for each
  condition showing the uncovered outcome in parentheses.  Conditions are
! identified by their index - index 0 is the left-most condition.  In â€˜a
! || (b && c)â€™, A is condition 0, B condition 1, and C condition 2.
  
   An outcome is considered covered if it has an independent effect on the
  decision, also known as masking MC/DC (Modified Condition/Decision
*************** to change.
*** 67943,67950 ****
               1:   11:    printf ("Failure!\n");
               -:   12:}
  
!  When you compile with '--coverage -fpath-coverage' and use the option
! '-e' your output looks like this:
  
       $ gcov -t -e tmp
               -:    0:Source:tmp.cpp
--- 67952,67959 ----
               1:   11:    printf ("Failure!\n");
               -:   12:}
  
!  When you compile with â€˜--coverage -fpath-coverageâ€™ and use the option
! â€˜-eâ€™ your output looks like this:
  
       $ gcov -t -e tmp
               -:    0:Source:tmp.cpp
*************** to change.
*** 67973,67979 ****
  
   This output is useful to figure out roughly where coverage is missing
  and testing how different inputs change the coverage.  The
! '--prime-paths-source' is a useful tool for understanding paths.
  
       $ gcov -t --prime-paths-source tmp
               -:    0:Source:tmp.cpp
--- 67982,67988 ----
  
   This output is useful to figure out roughly where coverage is missing
  and testing how different inputs change the coverage.  The
! â€˜--prime-paths-sourceâ€™ is a useful tool for understanding paths.
  
       $ gcov -t --prime-paths-source tmp
               -:    0:Source:tmp.cpp
*************** column lists the sequence of basic block
*** 68000,68013 ****
  decision to take at that line if there is one.  The final columns are
  the line number and the line itself.  This is useful for understanding
  the paths, in particular those that are hard to cover or even
! unreachable.  Lines may be repeated, for example the 'for' loop, if the
  same line is a part of multiple basic blocks.  This mode is intended for
  humans and good at understanding what code is exercised under testing or
  for given inputs.  This output is quite verbose, and for focusing on
! specific functions it can be combined with the filters '--include' and
! '--exclude'.
  
!  A denser output is available with '--prime-paths-lines', which looks
  like this:
  
               -:    0:Source:tmp.cpp
--- 68009,68022 ----
  decision to take at that line if there is one.  The final columns are
  the line number and the line itself.  This is useful for understanding
  the paths, in particular those that are hard to cover or even
! unreachable.  Lines may be repeated, for example the â€˜forâ€™ loop, if the
  same line is a part of multiple basic blocks.  This mode is intended for
  humans and good at understanding what code is exercised under testing or
  for given inputs.  This output is quite verbose, and for focusing on
! specific functions it can be combined with the filters â€˜--includeâ€™ and
! â€˜--excludeâ€™.
  
!  A denser output is available with â€˜--prime-paths-linesâ€™, which looks
  like this:
  
               -:    0:Source:tmp.cpp
*************** like this:
*** 68032,68043 ****
               -:    4:{
  
   In this mode, every missing path is expanded using the lines and
! decisions like '--prime-paths-source' but printed on a single line.
  This mode provides a good overview over the paths and for tracking how
  different tests and inputs exercises the code.
  
   The execution counts are cumulative.  If the example program were
! executed again without removing the '.gcda' file, the count for the
  number of times each line in the source was executed would be added to
  the results of the previous run(s).  This is potentially useful in
  several ways.  For example, it could be used to accumulate data over a
--- 68041,68052 ----
               -:    4:{
  
   In this mode, every missing path is expanded using the lines and
! decisions like â€˜--prime-paths-sourceâ€™ but printed on a single line.
  This mode provides a good overview over the paths and for tracking how
  different tests and inputs exercises the code.
  
   The execution counts are cumulative.  If the example program were
! executed again without removing the â€˜.gcdaâ€™ file, the count for the
  number of times each line in the source was executed would be added to
  the results of the previous run(s).  This is potentially useful in
  several ways.  For example, it could be used to accumulate data over a
*************** number of program runs as part of a test
*** 68045,68062 ****
  provide more accurate long-term information over a large number of
  program runs.
  
!  The data in the '.gcda' files is saved immediately before the program
! exits.  For each source file compiled with '-fprofile-arcs', the
! profiling code first attempts to read in an existing '.gcda' file; if
  the file doesn't match the executable (differing number of basic block
  counts) it will ignore the contents of the file.  It then adds in the
  new execution counts and finally writes the data to the file.
  
!  You can report on a subset of functions by using '--include' and
! '--exclude'.  This is very useful when combined with '--stdout' trying
  to understand behavior and coverage for a particular function by running
! a test, looking at 'gcov' output, testing another input, and running
! 'gcov' again.
  
       $ gcov -m --stdout --include inc tmp
               -:    0:Source:tmp.cpp
--- 68054,68071 ----
  provide more accurate long-term information over a large number of
  program runs.
  
!  The data in the â€˜.gcdaâ€™ files is saved immediately before the program
! exits.  For each source file compiled with â€˜-fprofile-arcsâ€™, the
! profiling code first attempts to read in an existing â€˜.gcdaâ€™ file; if
  the file doesn't match the executable (differing number of basic block
  counts) it will ignore the contents of the file.  It then adds in the
  new execution counts and finally writes the data to the file.
  
!  You can report on a subset of functions by using â€˜--includeâ€™ and
! â€˜--excludeâ€™.  This is very useful when combined with â€˜--stdoutâ€™ trying
  to understand behavior and coverage for a particular function by running
! a test, looking at â€˜gcovâ€™ output, testing another input, and running
! â€˜gcovâ€™ again.
  
       $ gcov -m --stdout --include inc tmp
               -:    0:Source:tmp.cpp
*************** a test, looking at 'gcov' output, testin
*** 68072,68081 ****
               2:    8:  void inc () { b++; }
       ------------------
  
!  'gcov' will match on mangled names by default, which you can control
! with the '-M' flag.  Note that matching and reporting are independent,
  so you can match on mangled names while printing demangled names, and
! vice versa.  To report on the 'int' instantiation of 'Foo' matching on
  mangled and demangled names:
  
       $ gcov -t -m -M tmp --include 'Foo<int>'
--- 68081,68090 ----
               2:    8:  void inc () { b++; }
       ------------------
  
!  â€˜gcovâ€™ will match on mangled names by default, which you can control
! with the â€˜-Mâ€™ flag.  Note that matching and reporting are independent,
  so you can match on mangled names while printing demangled names, and
! vice versa.  To report on the â€˜intâ€™ instantiation of â€˜Fooâ€™ matching on
  mangled and demangled names:
  
       $ gcov -t -m -M tmp --include 'Foo<int>'
*************** mangled and demangled names:
*** 68094,68106 ****
               1:    7:  Foo(): b (1000) {}
               2:    8:  void inc () { b++; }
  
!  The arguments to '--include' and '--exclude' are extended regular
! expressions (like 'grep -E'), so the pattern 'in.?' matches both 'inc'
! and 'main'.  If used with '-M' then all 'int' instantiations of 'Foo'
! would match too.  '--include' and '--exclude' can be used multiple
  times, and if a name matches multiple filters it is the last one to
! match which takes preference.  For example, to match 'main' and the
! 'int' instatiation of 'inc', while omitting the 'Foo' constructor:
  
       $ gcov -t -m -M --include in --exclude Foo --include '<int>::inc' tmp
               -:    0:Source:tmp.cpp
--- 68103,68115 ----
               1:    7:  Foo(): b (1000) {}
               2:    8:  void inc () { b++; }
  
!  The arguments to â€˜--includeâ€™ and â€˜--excludeâ€™ are extended regular
! expressions (like â€˜grep -Eâ€™), so the pattern â€˜in.?â€™ matches both â€˜incâ€™
! and â€˜mainâ€™.  If used with â€˜-Mâ€™ then all â€˜intâ€™ instantiations of â€˜Fooâ€™
! would match too.  â€˜--includeâ€™ and â€˜--excludeâ€™ can be used multiple
  times, and if a name matches multiple filters it is the last one to
! match which takes preference.  For example, to match â€˜mainâ€™ and the
! â€˜intâ€™ instatiation of â€˜incâ€™, while omitting the â€˜Fooâ€™ constructor:
  
       $ gcov -t -m -M --include in --exclude Foo --include '<int>::inc' tmp
               -:    0:Source:tmp.cpp
*************** match which takes preference.  For examp
*** 68131,68141 ****
  
  File: gcc.info,  Node: Gcov and Optimization,  Next: Gcov Data Files,  Prev: Invoking Gcov,  Up: Gcov
  
! 11.3 Using 'gcov' with GCC Optimization
  =======================================
  
! If you plan to use 'gcov' to help optimize your code, you must first
! compile your program with a special GCC option '--coverage'.  Aside from
  that, you can use any other GCC options; but if you want to prove that
  every single line in your program was executed, you should not compile
  with optimization at the same time.  On some machines the optimizer can
--- 68140,68150 ----
  
  File: gcc.info,  Node: Gcov and Optimization,  Next: Gcov Data Files,  Prev: Invoking Gcov,  Up: Gcov
  
! 11.3 Using â€˜gcovâ€™ with GCC Optimization
  =======================================
  
! If you plan to use â€˜gcovâ€™ to help optimize your code, you must first
! compile your program with a special GCC option â€˜--coverageâ€™.  Aside from
  that, you can use any other GCC options; but if you want to prove that
  every single line in your program was executed, you should not compile
  with optimization at the same time.  On some machines the optimizer can
*************** For example, code like this:
*** 68148,68156 ****
         c = 0;
  
  can be compiled into one instruction on some machines.  In this case,
! there is no way for 'gcov' to calculate separate execution counts for
  each line because there isn't separate code for each line.  Hence the
! 'gcov' output looks like this if you compiled the program with
  optimization:
  
             100:   12:if (a != b)
--- 68157,68165 ----
         c = 0;
  
  can be compiled into one instruction on some machines.  In this case,
! there is no way for â€˜gcovâ€™ to calculate separate execution counts for
  each line because there isn't separate code for each line.  Hence the
! â€˜gcovâ€™ output looks like this if you compiled the program with
  optimization:
  
             100:   12:if (a != b)
*************** shown depends on where the function is i
*** 68170,68179 ****
  at all.
  
   If the function is not inlined, the compiler must emit an out of line
! copy of the function, in any object file that needs it.  If 'fileA.o'
! and 'fileB.o' both contain out of line bodies of a particular inlineable
  function, they will also both contain coverage counts for that function.
! When 'fileA.o' and 'fileB.o' are linked together, the linker will, on
  many systems, select one of those out of line bodies for all calls to
  that function, and remove or ignore the other.  Unfortunately, it will
  not remove the coverage counters for the unused function body.  Hence
--- 68179,68188 ----
  at all.
  
   If the function is not inlined, the compiler must emit an out of line
! copy of the function, in any object file that needs it.  If â€˜fileA.oâ€™
! and â€˜fileB.oâ€™ both contain out of line bodies of a particular inlineable
  function, they will also both contain coverage counts for that function.
! When â€˜fileA.oâ€™ and â€˜fileB.oâ€™ are linked together, the linker will, on
  many systems, select one of those out of line bodies for all calls to
  that function, and remove or ignore the other.  Unfortunately, it will
  not remove the coverage counters for the unused function body.  Hence
*************** now be calculable at compile time in som
*** 68186,68241 ****
  coverage of all the uses of the inline function will be shown for the
  same source lines, the line counts themselves might seem inconsistent.
  
!  Long-running applications can use the '__gcov_reset' and '__gcov_dump'
  facilities to restrict profile collection to the program region of
! interest.  Calling '__gcov_reset(void)' will clear all run-time profile
! counters to zero, and calling '__gcov_dump(void)' will cause the profile
! information collected at that point to be dumped to '.gcda' output
  files.  Instrumented applications use a static destructor with priority
! 99 to invoke the '__gcov_dump' function.  Thus '__gcov_dump' is executed
  after all user defined static destructors, as well as handlers
! registered with 'atexit'.
  
   If an executable loads a dynamic shared object via dlopen
! functionality, '-Wl,--dynamic-list-data' is needed to dump all profile
  data.
  
   Profiling run-time library reports various errors related to profile
  manipulation and profile saving.  Errors are printed into standard error
! output or 'GCOV_ERROR_FILE' file, if environment variable is used.  In
  order to terminate immediately after an errors occurs set
! 'GCOV_EXIT_AT_ERROR' environment variable.  That can help users to find
  profile clashing which leads to a misleading profile.
  
  
  File: gcc.info,  Node: Gcov Data Files,  Next: Cross-profiling,  Prev: Gcov and Optimization,  Up: Gcov
  
! 11.4 Brief Description of 'gcov' Data Files
  ===========================================
  
! 'gcov' uses two files for profiling.  The names of these files are
  derived from the original _object_ file by substituting the file suffix
! with either '.gcno', or '.gcda'.  The files contain coverage and profile
! data stored in a platform-independent format.  The '.gcno' files are
  placed in the same directory as the object file.  By default, the
! '.gcda' files are also stored in the same directory as the object file,
! but the GCC '-fprofile-dir' option may be used to store the '.gcda'
  files in a separate directory.
  
!  The '.gcno' notes file is generated when the source file is compiled
! with the GCC '-ftest-coverage' option.  It contains information to
  reconstruct the basic block graphs and assign source line numbers to
  blocks.
  
!  The '.gcda' count data file is generated when a program containing
! object files built with the GCC '-fprofile-arcs' option is executed.  A
! separate '.gcda' file is created for each object file compiled with this
  option.  It contains arc transition counts, value profile counts, and
  some summary information.
  
   It is not recommended to access the coverage files directly.  Consumers
! should use the intermediate format that is provided by 'gcov' tool via
! '--json-format' option.
  
  
  File: gcc.info,  Node: Cross-profiling,  Next: Freestanding Environments,  Prev: Gcov Data Files,  Up: Gcov
--- 68195,68250 ----
  coverage of all the uses of the inline function will be shown for the
  same source lines, the line counts themselves might seem inconsistent.
  
!  Long-running applications can use the â€˜__gcov_resetâ€™ and â€˜__gcov_dumpâ€™
  facilities to restrict profile collection to the program region of
! interest.  Calling â€˜__gcov_reset(void)â€™ will clear all run-time profile
! counters to zero, and calling â€˜__gcov_dump(void)â€™ will cause the profile
! information collected at that point to be dumped to â€˜.gcdaâ€™ output
  files.  Instrumented applications use a static destructor with priority
! 99 to invoke the â€˜__gcov_dumpâ€™ function.  Thus â€˜__gcov_dumpâ€™ is executed
  after all user defined static destructors, as well as handlers
! registered with â€˜atexitâ€™.
  
   If an executable loads a dynamic shared object via dlopen
! functionality, â€˜-Wl,--dynamic-list-dataâ€™ is needed to dump all profile
  data.
  
   Profiling run-time library reports various errors related to profile
  manipulation and profile saving.  Errors are printed into standard error
! output or â€˜GCOV_ERROR_FILEâ€™ file, if environment variable is used.  In
  order to terminate immediately after an errors occurs set
! â€˜GCOV_EXIT_AT_ERRORâ€™ environment variable.  That can help users to find
  profile clashing which leads to a misleading profile.
  
  
  File: gcc.info,  Node: Gcov Data Files,  Next: Cross-profiling,  Prev: Gcov and Optimization,  Up: Gcov
  
! 11.4 Brief Description of â€˜gcovâ€™ Data Files
  ===========================================
  
! â€˜gcovâ€™ uses two files for profiling.  The names of these files are
  derived from the original _object_ file by substituting the file suffix
! with either â€˜.gcnoâ€™, or â€˜.gcdaâ€™.  The files contain coverage and profile
! data stored in a platform-independent format.  The â€˜.gcnoâ€™ files are
  placed in the same directory as the object file.  By default, the
! â€˜.gcdaâ€™ files are also stored in the same directory as the object file,
! but the GCC â€˜-fprofile-dirâ€™ option may be used to store the â€˜.gcdaâ€™
  files in a separate directory.
  
!  The â€˜.gcnoâ€™ notes file is generated when the source file is compiled
! with the GCC â€˜-ftest-coverageâ€™ option.  It contains information to
  reconstruct the basic block graphs and assign source line numbers to
  blocks.
  
!  The â€˜.gcdaâ€™ count data file is generated when a program containing
! object files built with the GCC â€˜-fprofile-arcsâ€™ option is executed.  A
! separate â€˜.gcdaâ€™ file is created for each object file compiled with this
  option.  It contains arc transition counts, value profile counts, and
  some summary information.
  
   It is not recommended to access the coverage files directly.  Consumers
! should use the intermediate format that is provided by â€˜gcovâ€™ tool via
! â€˜--json-formatâ€™ option.
  
  
  File: gcc.info,  Node: Cross-profiling,  Next: Freestanding Environments,  Prev: Gcov Data Files,  Up: Gcov
*************** File: gcc.info,  Node: Cross-profiling,
*** 68244,68281 ****
  ====================================================
  
  Running the program will cause profile output to be generated.  For each
! source file compiled with '-fprofile-arcs', an accompanying '.gcda' file
  will be placed in the object file directory.  That implicitly requires
  running the program on the same system as it was built or having the
  same absolute directory structure on the target system.  The program
  will try to create the needed directory structure, if it is not already
  present.
  
!  To support cross-profiling, a program compiled with '-fprofile-arcs'
  can relocate the data files based on two environment variables:
  
!    * GCOV_PREFIX contains the prefix to add to the absolute paths in the
       object file.  Prefix can be absolute, or relative.  The default is
       no prefix.
  
!    * GCOV_PREFIX_STRIP indicates the how many initial directory names to
       strip off the hardwired absolute paths.  Default value is 0.
  
       _Note:_ If GCOV_PREFIX_STRIP is set without GCOV_PREFIX is
       undefined, then a relative path is made out of the hardwired
       absolute paths.
  
!  For example, if the object file '/user/build/foo.o' was built with
! '-fprofile-arcs', the final executable will try to create the data file
! '/user/build/foo.gcda' when running on the target system.  This will
  fail if the corresponding directory does not exist and it is unable to
  create it.  This can be overcome by, for example, setting the
! environment as 'GCOV_PREFIX=/target/run' and 'GCOV_PREFIX_STRIP=1'.
! Such a setting will name the data file '/target/run/build/foo.gcda'.
  
   You must move the data files to the expected directory tree in order to
! use them for profile directed optimizations ('-fprofile-use'), or to use
! the 'gcov' tool.
  
  
  File: gcc.info,  Node: Freestanding Environments,  Prev: Cross-profiling,  Up: Gcov
--- 68253,68290 ----
  ====================================================
  
  Running the program will cause profile output to be generated.  For each
! source file compiled with â€˜-fprofile-arcsâ€™, an accompanying â€˜.gcdaâ€™ file
  will be placed in the object file directory.  That implicitly requires
  running the program on the same system as it was built or having the
  same absolute directory structure on the target system.  The program
  will try to create the needed directory structure, if it is not already
  present.
  
!  To support cross-profiling, a program compiled with â€˜-fprofile-arcsâ€™
  can relocate the data files based on two environment variables:
  
!    â€¢ GCOV_PREFIX contains the prefix to add to the absolute paths in the
       object file.  Prefix can be absolute, or relative.  The default is
       no prefix.
  
!    â€¢ GCOV_PREFIX_STRIP indicates the how many initial directory names to
       strip off the hardwired absolute paths.  Default value is 0.
  
       _Note:_ If GCOV_PREFIX_STRIP is set without GCOV_PREFIX is
       undefined, then a relative path is made out of the hardwired
       absolute paths.
  
!  For example, if the object file â€˜/user/build/foo.oâ€™ was built with
! â€˜-fprofile-arcsâ€™, the final executable will try to create the data file
! â€˜/user/build/foo.gcdaâ€™ when running on the target system.  This will
  fail if the corresponding directory does not exist and it is unable to
  create it.  This can be overcome by, for example, setting the
! environment as â€˜GCOV_PREFIX=/target/runâ€™ and â€˜GCOV_PREFIX_STRIP=1â€™.
! Such a setting will name the data file â€˜/target/run/build/foo.gcdaâ€™.
  
   You must move the data files to the expected directory tree in order to
! use them for profile directed optimizations (â€˜-fprofile-useâ€™), or to use
! the â€˜gcovâ€™ tool.
  
  
  File: gcc.info,  Node: Freestanding Environments,  Prev: Cross-profiling,  Up: Gcov
*************** then this section is likely not relevant
*** 68288,68296 ****
  intended for application developers targeting freestanding environments
  (for example embedded systems) with limited resources.  In particular,
  systems or test cases which do not support constructors/destructors or
! the C library file I/O. In this section, the "target system" runs your
  application instrumented for profiling or test coverage.  You develop
! and analyze your application on the "host system".  We now provide an
  overview how profiling and test coverage can be obtained in this
  scenario followed by a tutorial which can be exercised on the host
  system.  Finally, some system initialization caveats are listed.
--- 68297,68305 ----
  intended for application developers targeting freestanding environments
  (for example embedded systems) with limited resources.  In particular,
  systems or test cases which do not support constructors/destructors or
! the C library file I/O. In this section, the â€œtarget systemâ€� runs your
  application instrumented for profiling or test coverage.  You develop
! and analyze your application on the â€œhost systemâ€�.  We now provide an
  overview how profiling and test coverage can be obtained in this
  scenario followed by a tutorial which can be exercised on the host
  system.  Finally, some system initialization caveats are listed.
*************** system.  Finally, some system initializa
*** 68301,68313 ****
  For an application instrumented for profiling or test coverage, the
  compiler generates some global data structures which are updated by
  instrumentation code while the application runs.  These data structures
! are called the "gcov information".  Normally, when the application
! exits, the gcov information is stored to '.gcda' files.  There is one
  file per translation unit instrumented for profiling or test coverage.
! The function '__gcov_exit()', which stores the gcov information to a
  file, is called by a global destructor function for each translation
  unit instrumented for profiling or test coverage.  It runs at process
! exit.  In a global constructor function, the '__gcov_init()' function is
  called to register the gcov information of a translation unit in a
  global list.  In some situations, this procedure does not work.
  Firstly, if you want to profile the global constructor or exit
--- 68310,68322 ----
  For an application instrumented for profiling or test coverage, the
  compiler generates some global data structures which are updated by
  instrumentation code while the application runs.  These data structures
! are called the â€œgcov informationâ€�.  Normally, when the application
! exits, the gcov information is stored to â€˜.gcdaâ€™ files.  There is one
  file per translation unit instrumented for profiling or test coverage.
! The function â€˜__gcov_exit()â€™, which stores the gcov information to a
  file, is called by a global destructor function for each translation
  unit instrumented for profiling or test coverage.  It runs at process
! exit.  In a global constructor function, the â€˜__gcov_init()â€™ function is
  called to register the gcov information of a translation unit in a
  global list.  In some situations, this procedure does not work.
  Firstly, if you want to profile the global constructor or exit
*************** parts of the system initialization or ab
*** 68317,68328 ****
  do not allow a global constructor or exit processing.  Thirdly, you need
  a filesystem to store the files.
  
!  The '-fprofile-info-section' GCC option enables you to use profiling
  and test coverage in freestanding environments.  This option disables
  the use of global constructors and destructors for the gcov information.
  Instead, a pointer to the gcov information is stored in a special linker
  input section for each translation unit which is compiled with this
! option.  By default, the section name is '.gcov_info'.  The gcov
  information is statically initialized.  The pointers to the gcov
  information from all translation units of an executable can be collected
  by the linker in a contiguous memory block.  For the GNU linker, the
--- 68326,68337 ----
  do not allow a global constructor or exit processing.  Thirdly, you need
  a filesystem to store the files.
  
!  The â€˜-fprofile-info-sectionâ€™ GCC option enables you to use profiling
  and test coverage in freestanding environments.  This option disables
  the use of global constructors and destructors for the gcov information.
  Instead, a pointer to the gcov information is stored in a special linker
  input section for each translation unit which is compiled with this
! option.  By default, the section name is â€˜.gcov_infoâ€™.  The gcov
  information is statically initialized.  The pointers to the gcov
  information from all translation units of an executable can be collected
  by the linker in a contiguous memory block.  For the GNU linker, the
*************** this:
*** 68336,68344 ****
           PROVIDE (__gcov_info_end = .);
         }
  
!  The linker will provide two global symbols, '__gcov_info_start' and
! '__gcov_info_end', which define the start and end of the array of
! pointers to gcov information blocks, respectively.  The 'KEEP ()'
  directive is required to prevent a garbage collection of the pointers.
  They are not directly referenced by anything in the executable.  The
  section may be placed in a read-only memory area.
--- 68345,68353 ----
           PROVIDE (__gcov_info_end = .);
         }
  
!  The linker will provide two global symbols, â€˜__gcov_info_startâ€™ and
! â€˜__gcov_info_endâ€™, which define the start and end of the array of
! pointers to gcov information blocks, respectively.  The â€˜KEEP ()â€™
  directive is required to prevent a garbage collection of the pointers.
  They are not directly referenced by anything in the executable.  The
  section may be placed in a read-only memory area.
*************** target to the host system, the applicati
*** 68348,68358 ****
  produce a reliable in order byte stream from the target to the host.
  The byte stream may be compressed and encoded using error detection and
  correction codes to meet application-specific requirements.  The GCC
! provided 'libgcov' target library provides two functions,
! '__gcov_info_to_gcda()' and '__gcov_filename_to_gcfn()', to generate a
  byte stream from a gcov information bock.  The functions are declared in
! '#include <gcov.h>'.  The byte stream can be deserialized by the
! 'merge-stream' subcommand of the 'gcov-tool' to create or update '.gcda'
  files in the host filesystem for the instrumented application.
  
  11.6.2 Tutorial
--- 68357,68367 ----
  produce a reliable in order byte stream from the target to the host.
  The byte stream may be compressed and encoded using error detection and
  correction codes to meet application-specific requirements.  The GCC
! provided â€˜libgcovâ€™ target library provides two functions,
! â€˜__gcov_info_to_gcda()â€™ and â€˜__gcov_filename_to_gcfn()â€™, to generate a
  byte stream from a gcov information bock.  The functions are declared in
! â€˜#include <gcov.h>â€™.  The byte stream can be deserialized by the
! â€˜merge-streamâ€™ subcommand of the â€˜gcov-toolâ€™ to create or update â€˜.gcdaâ€™
  files in the host filesystem for the instrumented application.
  
  11.6.2 Tutorial
*************** files in the host filesystem for the ins
*** 68360,68384 ****
  
  This tutorial should be exercised on the host system.  We will build a
  program instrumented for test coverage.  The program runs an application
! and dumps the gcov information to 'stderr' encoded as a printable
  character stream.  The application simply decodes such character streams
! from 'stdin' and writes the decoded character stream to 'stdout'
  (warning: this is binary data).  The decoded character stream is
! consumed by the 'merge-stream' subcommand of the 'gcov-tool' to create
! or update the '.gcda' files.
  
   To get started, create an empty directory.  Change into the new
  directory.  Then you will create the following three files in this
  directory
  
!   1. 'app.h' - a header file included by 'app.c' and 'main.c',
  
!   2. 'app.c' - a source file which contains an example application, and
  
!   3. 'main.c' - a source file which contains the program main function
       and code to dump the gcov information.
  
!  Firstly, create the header file 'app.h' with the following content:
  
       static const unsigned char a = 'a';
  
--- 68369,68393 ----
  
  This tutorial should be exercised on the host system.  We will build a
  program instrumented for test coverage.  The program runs an application
! and dumps the gcov information to â€˜stderrâ€™ encoded as a printable
  character stream.  The application simply decodes such character streams
! from â€˜stdinâ€™ and writes the decoded character stream to â€˜stdoutâ€™
  (warning: this is binary data).  The decoded character stream is
! consumed by the â€˜merge-streamâ€™ subcommand of the â€˜gcov-toolâ€™ to create
! or update the â€˜.gcdaâ€™ files.
  
   To get started, create an empty directory.  Change into the new
  directory.  Then you will create the following three files in this
  directory
  
!   1. â€˜app.hâ€™ - a header file included by â€˜app.câ€™ and â€˜main.câ€™,
  
!   2. â€˜app.câ€™ - a source file which contains an example application, and
  
!   3. â€˜main.câ€™ - a source file which contains the program main function
       and code to dump the gcov information.
  
!  Firstly, create the header file â€˜app.hâ€™ with the following content:
  
       static const unsigned char a = 'a';
  
*************** directory
*** 68392,68398 ****
  
       extern void application (void);
  
!  Secondly, create the source file 'app.c' with the following content:
  
       #include "app.h"
  
--- 68401,68407 ----
  
       extern void application (void);
  
!  Secondly, create the source file â€˜app.câ€™ with the following content:
  
       #include "app.h"
  
*************** directory
*** 68431,68437 ****
           }
       }
  
!  Thirdly, create the source file 'main.c' with the following content:
  
       #include "app.h"
  
--- 68440,68446 ----
           }
       }
  
!  Thirdly, create the source file â€˜main.câ€™ with the following content:
  
       #include "app.h"
  
*************** directory
*** 68512,68522 ****
         return 0;
       }
  
!  If we compile 'app.c' with test coverage and no extra profiling
! options, then a global constructor ('_sub_I_00100_0' here, it may have a
! different name in your environment) and destructor ('_sub_D_00100_1') is
  used to register and dump the gcov information, respectively.  We also
! see undefined references to '__gcov_init' and '__gcov_exit':
  
       $ gcc --coverage -c app.c
       $ nm app.o
--- 68521,68531 ----
         return 0;
       }
  
!  If we compile â€˜app.câ€™ with test coverage and no extra profiling
! options, then a global constructor (â€˜_sub_I_00100_0â€™ here, it may have a
! different name in your environment) and destructor (â€˜_sub_D_00100_1â€™) is
  used to register and dump the gcov information, respectively.  We also
! see undefined references to â€˜__gcov_initâ€™ and â€˜__gcov_exitâ€™:
  
       $ gcc --coverage -c app.c
       $ nm app.o
*************** see undefined references to '__gcov_init
*** 68537,68546 ****
       0000000000000161 t _sub_D_00100_1
       0000000000000151 t _sub_I_00100_0
  
!  Compile 'app.c' and 'main.c' with test coverage and
! '-fprofile-info-section'.  Now, a read-only pointer size object is
! present in the '.gcov_info' section and there are no undefined
! references to '__gcov_init' and '__gcov_exit':
  
       $ gcc --coverage -fprofile-info-section -c main.c
       $ gcc --coverage -fprofile-info-section -c app.c
--- 68546,68555 ----
       0000000000000161 t _sub_D_00100_1
       0000000000000151 t _sub_I_00100_0
  
!  Compile â€˜app.câ€™ and â€˜main.câ€™ with test coverage and
! â€˜-fprofile-info-sectionâ€™.  Now, a read-only pointer size object is
! present in the â€˜.gcov_infoâ€™ section and there are no undefined
! references to â€˜__gcov_initâ€™ and â€˜__gcov_exitâ€™:
  
       $ gcc --coverage -fprofile-info-section -c main.c
       $ gcc --coverage -fprofile-info-section -c app.c
*************** references to '__gcov_init' and '__gcov_
*** 68568,68590 ****
                         CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA
  
   We have to customize the program link procedure so that all the
! '.gcov_info' linker input sections are placed in a contiguous memory
  block with a begin and end symbol.  Firstly, get the default linker
  script using the following commands (we assume a GNU linker):
  
       $ ld --verbose | sed '1,/^===/d' | sed '/^===/d' > linkcmds
  
!  Secondly, open the file 'linkcmds' with a text editor and place the
! linker output section definition from the overview after the '.rodata'
  section definition.  Link the program executable using the customized
  linker script:
  
       $ gcc --coverage main.o app.o -T linkcmds -Wl,-Map,app.map
  
!  In the linker map file 'app.map', we see that the linker placed the
! read-only pointer size objects of our objects files 'main.o' and 'app.o'
  into a contiguous memory block and provided the symbols
! '__gcov_info_start' and '__gcov_info_end':
  
       $ grep -C 1 "\.gcov_info" app.map
  
--- 68577,68599 ----
                         CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA
  
   We have to customize the program link procedure so that all the
! â€˜.gcov_infoâ€™ linker input sections are placed in a contiguous memory
  block with a begin and end symbol.  Firstly, get the default linker
  script using the following commands (we assume a GNU linker):
  
       $ ld --verbose | sed '1,/^===/d' | sed '/^===/d' > linkcmds
  
!  Secondly, open the file â€˜linkcmdsâ€™ with a text editor and place the
! linker output section definition from the overview after the â€˜.rodataâ€™
  section definition.  Link the program executable using the customized
  linker script:
  
       $ gcc --coverage main.o app.o -T linkcmds -Wl,-Map,app.map
  
!  In the linker map file â€˜app.mapâ€™, we see that the linker placed the
! read-only pointer size objects of our objects files â€˜main.oâ€™ and â€˜app.oâ€™
  into a contiguous memory block and provided the symbols
! â€˜__gcov_info_startâ€™ and â€˜__gcov_info_endâ€™:
  
       $ grep -C 1 "\.gcov_info" app.map
  
*************** into a contiguous memory block and provi
*** 68595,68605 ****
        .gcov_info     0x0000000000403ac8        0x8 app.o
                       0x0000000000403ad0                PROVIDE (__gcov_info_end = .)
  
!  Make sure no '.gcda' files are present.  Run the program with nothing
! to decode and dump 'stderr' to the file 'gcda-0.txt' (first run).  Run
! the program to decode 'gcda-0.txt' and send it to the 'gcov-tool' using
! the 'merge-stream' subcommand to create the '.gcda' files (second run).
! Run 'gcov' to produce a report for 'app.c'.  We see that the first run
  with nothing to decode results in a partially covered application:
  
       $ rm -f app.gcda main.gcda
--- 68604,68614 ----
        .gcov_info     0x0000000000403ac8        0x8 app.o
                       0x0000000000403ad0                PROVIDE (__gcov_info_end = .)
  
!  Make sure no â€˜.gcdaâ€™ files are present.  Run the program with nothing
! to decode and dump â€˜stderrâ€™ to the file â€˜gcda-0.txtâ€™ (first run).  Run
! the program to decode â€˜gcda-0.txtâ€™ and send it to the â€˜gcov-toolâ€™ using
! the â€˜merge-streamâ€™ subcommand to create the â€˜.gcdaâ€™ files (second run).
! Run â€˜gcovâ€™ to produce a report for â€˜app.câ€™.  We see that the first run
  with nothing to decode results in a partially covered application:
  
       $ rm -f app.gcda main.gcda
*************** with nothing to decode results in a part
*** 68615,68623 ****
  
       Lines executed:69.23% of 13
  
!  Run the program to decode 'gcda-1.txt' and send it to the 'gcov-tool'
! using the 'merge-stream' subcommand to update the '.gcda' files.  Run
! 'gcov' to produce a report for 'app.c'.  Since the second run decoded
  the gcov information of the first run, we have now a fully covered
  application:
  
--- 68624,68632 ----
  
       Lines executed:69.23% of 13
  
!  Run the program to decode â€˜gcda-1.txtâ€™ and send it to the â€˜gcov-toolâ€™
! using the â€˜merge-streamâ€™ subcommand to update the â€˜.gcdaâ€™ files.  Run
! â€˜gcovâ€™ to produce a report for â€˜app.câ€™.  Since the second run decoded
  the gcov information of the first run, we have now a fully covered
  application:
  
*************** flow graph edge counters in a zero-initi
*** 68641,68647 ****
  safe to run instrumented code before the zero-initialized data is
  cleared to zero.  The coverage information obtained before the
  zero-initialized data is cleared to zero is unusable.  Dumping the gcov
! information using '__gcov_info_to_gcda()' before the zero-initialized
  data is cleared to zero or the initialized data is loaded, is undefined
  behaviour.  Clearing the zero-initialized data to zero through a
  function instrumented for profiling or test coverage is undefined
--- 68650,68656 ----
  safe to run instrumented code before the zero-initialized data is
  cleared to zero.  The coverage information obtained before the
  zero-initialized data is cleared to zero is unusable.  Dumping the gcov
! information using â€˜__gcov_info_to_gcda()â€™ before the zero-initialized
  data is cleared to zero or the initialized data is loaded, is undefined
  behaviour.  Clearing the zero-initialized data to zero through a
  function instrumented for profiling or test coverage is undefined
*************** counters for example.
*** 68651,68660 ****
  
  File: gcc.info,  Node: Gcov-tool,  Next: Gcov-dump,  Prev: Gcov,  Up: Top
  
! 12 'gcov-tool'--an Offline Gcda Profile Processing Tool
  *******************************************************
  
! 'gcov-tool' is a tool you can use in conjunction with GCC to manipulate
  or process gcda profile files offline.
  
  * Menu:
--- 68660,68669 ----
  
  File: gcc.info,  Node: Gcov-tool,  Next: Gcov-dump,  Prev: Gcov,  Up: Top
  
! 12 â€˜gcov-toolâ€™--an Offline Gcda Profile Processing Tool
  *******************************************************
  
! â€˜gcov-toolâ€™ is a tool you can use in conjunction with GCC to manipulate
  or process gcda profile files offline.
  
  * Menu:
*************** or process gcda profile files offline.
*** 68665,68805 ****
  
  File: gcc.info,  Node: Gcov-tool Intro,  Next: Invoking Gcov-tool,  Up: Gcov-tool
  
! 12.1 Introduction to 'gcov-tool'
  ================================
  
! 'gcov-tool' is an offline tool to process gcc's gcda profile files.
  
   Current gcov-tool supports the following functionalities:
  
!    * merge two sets of profiles with weights.
  
!    * read a stream of profiles with associated filenames and merge it
       with a set of profiles with weights.
  
!    * read one set of profile and rewrite profile contents.  One can
       scale or normalize the count values.
  
   Examples of the use cases for this tool are:
!    * Collect the profiles for different set of inputs, and use this tool
       to merge them.  One can specify the weight to factor in the
       relative importance of each input.
  
!    * Collect profiles from target systems without a filesystem
       (freestanding environments).  Merge the collected profiles with
       associated profiles present on the host system.  One can specify
       the weight to factor in the relative importance of each input.
  
!    * Rewrite the profile after removing a subset of the gcda files,
       while maintaining the consistency of the summary and the histogram.
  
!    * It can also be used to debug or libgcov code as the tools shares
       the majority code as the runtime library.
  
   Note that for the merging operation, this profile generated offline may
  contain slight different values from the online merged profile.  Here
  are a list of typical differences:
  
!    * histogram difference: This offline tool recomputes the histogram
       after merging the counters.  The resulting histogram, therefore, is
       precise.  The online merging does not have this capability - the
       histogram is merged from two histograms and the result is an
       approximation.
  
!    * summary checksum difference: Summary checksum uses a CRC32
       operation.  The value depends on the link list order of gcov-info
       objects.  This order is different in gcov-tool from that in the
       online merge.  It's expected to have different summary checksums.
       It does not really matter as the compiler does not use this
       checksum anywhere.
  
!    * value profile counter values difference: Some counter values for
       value profile are runtime dependent, like heap addresses.  It's
       normal to see some difference in these kind of counters.
  
  
  File: gcc.info,  Node: Invoking Gcov-tool,  Prev: Gcov-tool Intro,  Up: Gcov-tool
  
! 12.2 Invoking 'gcov-tool'
  =========================
  
       gcov-tool [GLOBAL-OPTIONS] SUB_COMMAND [SUB_COMMAND-OPTIONS] PROFILE_DIR
  
!  'gcov-tool' accepts the following options:
  
! '-h'
! '--help'
!      Display help about using 'gcov-tool' (on the standard output), and
       exit without doing any further processing.
  
! '-v'
! '--version'
!      Display the 'gcov-tool' version number (on the standard output),
       and exit without doing any further processing.
  
! 'merge'
       Merge two profile directories.
  
!      '-o DIRECTORY'
!      '--output DIRECTORY'
            Set the output profile directory.  Default output directory
            name is MERGED_PROFILE.
  
!      '-v'
!      '--verbose'
            Set the verbose mode.
  
!      '-w W1,W2'
!      '--weight W1,W2'
            Set the merge weights of the DIRECTORY1 and DIRECTORY2,
            respectively.  The default weights are 1 for both.
  
! 'merge-stream'
       Collect profiles with associated filenames from a _gcfn_ and _gcda_
       data stream.  Read the stream from the file specified by FILE or
!      from 'stdin'.  Merge the profiles with associated profiles in the
       host filesystem.  Apply the optional weights while merging
       profiles.
  
       For the generation of a _gcfn_ and _gcda_ data stream on the target
!      system, please have a look at the '__gcov_filename_to_gcfn()' and
!      '__gcov_info_to_gcda()' functions declared in '#include <gcov.h>'.
  
!      '-v'
!      '--verbose'
            Set the verbose mode.
  
!      '-w W1,W2'
!      '--weight W1,W2'
            Set the merge weights of the profiles from the _gcfn_ and
            _gcda_ data stream and the associated profiles in the host
            filesystem, respectively.  The default weights are 1 for both.
  
! 'rewrite'
       Read the specified profile directory and rewrite to a new
       directory.
  
!      '-n LONG_LONG_VALUE'
!      '--normalize <long_long_value>'
            Normalize the profile.  The specified value is the max counter
            value in the new profile.
  
!      '-o DIRECTORY'
!      '--output DIRECTORY'
            Set the output profile directory.  Default output name is
            REWRITE_PROFILE.
  
!      '-s FLOAT_OR_SIMPLE-FRAC_VALUE'
!      '--scale FLOAT_OR_SIMPLE-FRAC_VALUE'
            Scale the profile counters.  The specified value can be in
            floating point value, or simple fraction value form, such 1,
            2, 2/3, and 5/3.
  
!      '-v'
!      '--verbose'
            Set the verbose mode.
  
! 'overlap'
       Compute the overlap score between the two specified profile
       directories.  The overlap score is computed based on the arc
       profiles.  It is defined as the sum of min (p1_counter[i] /
--- 68674,68814 ----
  
  File: gcc.info,  Node: Gcov-tool Intro,  Next: Invoking Gcov-tool,  Up: Gcov-tool
  
! 12.1 Introduction to â€˜gcov-toolâ€™
  ================================
  
! â€˜gcov-toolâ€™ is an offline tool to process gcc's gcda profile files.
  
   Current gcov-tool supports the following functionalities:
  
!    â€¢ merge two sets of profiles with weights.
  
!    â€¢ read a stream of profiles with associated filenames and merge it
       with a set of profiles with weights.
  
!    â€¢ read one set of profile and rewrite profile contents.  One can
       scale or normalize the count values.
  
   Examples of the use cases for this tool are:
!    â€¢ Collect the profiles for different set of inputs, and use this tool
       to merge them.  One can specify the weight to factor in the
       relative importance of each input.
  
!    â€¢ Collect profiles from target systems without a filesystem
       (freestanding environments).  Merge the collected profiles with
       associated profiles present on the host system.  One can specify
       the weight to factor in the relative importance of each input.
  
!    â€¢ Rewrite the profile after removing a subset of the gcda files,
       while maintaining the consistency of the summary and the histogram.
  
!    â€¢ It can also be used to debug or libgcov code as the tools shares
       the majority code as the runtime library.
  
   Note that for the merging operation, this profile generated offline may
  contain slight different values from the online merged profile.  Here
  are a list of typical differences:
  
!    â€¢ histogram difference: This offline tool recomputes the histogram
       after merging the counters.  The resulting histogram, therefore, is
       precise.  The online merging does not have this capability - the
       histogram is merged from two histograms and the result is an
       approximation.
  
!    â€¢ summary checksum difference: Summary checksum uses a CRC32
       operation.  The value depends on the link list order of gcov-info
       objects.  This order is different in gcov-tool from that in the
       online merge.  It's expected to have different summary checksums.
       It does not really matter as the compiler does not use this
       checksum anywhere.
  
!    â€¢ value profile counter values difference: Some counter values for
       value profile are runtime dependent, like heap addresses.  It's
       normal to see some difference in these kind of counters.
  
  
  File: gcc.info,  Node: Invoking Gcov-tool,  Prev: Gcov-tool Intro,  Up: Gcov-tool
  
! 12.2 Invoking â€˜gcov-toolâ€™
  =========================
  
       gcov-tool [GLOBAL-OPTIONS] SUB_COMMAND [SUB_COMMAND-OPTIONS] PROFILE_DIR
  
!  â€˜gcov-toolâ€™ accepts the following options:
  
! â€˜-hâ€™
! â€˜--helpâ€™
!      Display help about using â€˜gcov-toolâ€™ (on the standard output), and
       exit without doing any further processing.
  
! â€˜-vâ€™
! â€˜--versionâ€™
!      Display the â€˜gcov-toolâ€™ version number (on the standard output),
       and exit without doing any further processing.
  
! â€˜mergeâ€™
       Merge two profile directories.
  
!      â€˜-o DIRECTORYâ€™
!      â€˜--output DIRECTORYâ€™
            Set the output profile directory.  Default output directory
            name is MERGED_PROFILE.
  
!      â€˜-vâ€™
!      â€˜--verboseâ€™
            Set the verbose mode.
  
!      â€˜-w W1,W2â€™
!      â€˜--weight W1,W2â€™
            Set the merge weights of the DIRECTORY1 and DIRECTORY2,
            respectively.  The default weights are 1 for both.
  
! â€˜merge-streamâ€™
       Collect profiles with associated filenames from a _gcfn_ and _gcda_
       data stream.  Read the stream from the file specified by FILE or
!      from â€˜stdinâ€™.  Merge the profiles with associated profiles in the
       host filesystem.  Apply the optional weights while merging
       profiles.
  
       For the generation of a _gcfn_ and _gcda_ data stream on the target
!      system, please have a look at the â€˜__gcov_filename_to_gcfn()â€™ and
!      â€˜__gcov_info_to_gcda()â€™ functions declared in â€˜#include <gcov.h>â€™.
  
!      â€˜-vâ€™
!      â€˜--verboseâ€™
            Set the verbose mode.
  
!      â€˜-w W1,W2â€™
!      â€˜--weight W1,W2â€™
            Set the merge weights of the profiles from the _gcfn_ and
            _gcda_ data stream and the associated profiles in the host
            filesystem, respectively.  The default weights are 1 for both.
  
! â€˜rewriteâ€™
       Read the specified profile directory and rewrite to a new
       directory.
  
!      â€˜-n LONG_LONG_VALUEâ€™
!      â€˜--normalize <long_long_value>â€™
            Normalize the profile.  The specified value is the max counter
            value in the new profile.
  
!      â€˜-o DIRECTORYâ€™
!      â€˜--output DIRECTORYâ€™
            Set the output profile directory.  Default output name is
            REWRITE_PROFILE.
  
!      â€˜-s FLOAT_OR_SIMPLE-FRAC_VALUEâ€™
!      â€˜--scale FLOAT_OR_SIMPLE-FRAC_VALUEâ€™
            Scale the profile counters.  The specified value can be in
            floating point value, or simple fraction value form, such 1,
            2, 2/3, and 5/3.
  
!      â€˜-vâ€™
!      â€˜--verboseâ€™
            Set the verbose mode.
  
! â€˜overlapâ€™
       Compute the overlap score between the two specified profile
       directories.  The overlap score is computed based on the arc
       profiles.  It is defined as the sum of min (p1_counter[i] /
*************** File: gcc.info,  Node: Invoking Gcov-too
*** 68808,68841 ****
       p1_sum_all and p2_sum_all are the sum of counter values in profile
       1 and profile 2, respectively.
  
!      '-f'
!      '--function'
            Print function level overlap score.
  
!      '-F'
!      '--fullname'
            Print full gcda filename.
  
!      '-h'
!      '--hotonly'
            Only print info for hot objects/functions.
  
!      '-o'
!      '--object'
            Print object level overlap score.
  
!      '-t FLOAT'
!      '--hot_threshold <float>'
            Set the threshold for hot counter value.
  
!      '-v'
!      '--verbose'
            Set the verbose mode.
  
  
  File: gcc.info,  Node: Gcov-dump,  Next: lto-dump,  Prev: Gcov-tool,  Up: Top
  
! 13 'gcov-dump'--an Offline Gcda and Gcno Profile Dump Tool
  **********************************************************
  
  * Menu:
--- 68817,68850 ----
       p1_sum_all and p2_sum_all are the sum of counter values in profile
       1 and profile 2, respectively.
  
!      â€˜-fâ€™
!      â€˜--functionâ€™
            Print function level overlap score.
  
!      â€˜-Fâ€™
!      â€˜--fullnameâ€™
            Print full gcda filename.
  
!      â€˜-hâ€™
!      â€˜--hotonlyâ€™
            Only print info for hot objects/functions.
  
!      â€˜-oâ€™
!      â€˜--objectâ€™
            Print object level overlap score.
  
!      â€˜-t FLOATâ€™
!      â€˜--hot_threshold <float>â€™
            Set the threshold for hot counter value.
  
!      â€˜-vâ€™
!      â€˜--verboseâ€™
            Set the verbose mode.
  
  
  File: gcc.info,  Node: Gcov-dump,  Next: lto-dump,  Prev: Gcov-tool,  Up: Top
  
! 13 â€˜gcov-dumpâ€™--an Offline Gcda and Gcno Profile Dump Tool
  **********************************************************
  
  * Menu:
*************** File: gcc.info,  Node: Gcov-dump,  Next:
*** 68846,68897 ****
  
  File: gcc.info,  Node: Gcov-dump Intro,  Next: Invoking Gcov-dump,  Up: Gcov-dump
  
! 13.1 Introduction to 'gcov-dump'
  ================================
  
! 'gcov-dump' is a tool you can use in conjunction with GCC to dump
  content of gcda and gcno profile files offline.
  
  
  File: gcc.info,  Node: Invoking Gcov-dump,  Prev: Gcov-dump Intro,  Up: Gcov-dump
  
! 13.2 Invoking 'gcov-dump'
  =========================
  
       Usage: gcov-dump [OPTION] ... GCOVFILES
  
!  'gcov-dump' accepts the following options:
  
! '-h'
! '--help'
!      Display help about using 'gcov-dump' (on the standard output), and
       exit without doing any further processing.
  
! '-l'
! '--long'
       Dump content of records.
  
! '-p'
! '--positions'
       Dump positions of records.
  
! '-r'
! '--raw'
       Print content records in raw format.
  
! '-s'
! '--stable'
       Print content in stable format usable for comparison.
  
! '-v'
! '--version'
!      Display the 'gcov-dump' version number (on the standard output),
       and exit without doing any further processing.
  
  
  File: gcc.info,  Node: lto-dump,  Next: Trouble,  Prev: Gcov-dump,  Up: Top
  
! 14 'lto-dump'--Tool for dumping LTO object files.
  *************************************************
  
  * Menu:
--- 68855,68906 ----
  
  File: gcc.info,  Node: Gcov-dump Intro,  Next: Invoking Gcov-dump,  Up: Gcov-dump
  
! 13.1 Introduction to â€˜gcov-dumpâ€™
  ================================
  
! â€˜gcov-dumpâ€™ is a tool you can use in conjunction with GCC to dump
  content of gcda and gcno profile files offline.
  
  
  File: gcc.info,  Node: Invoking Gcov-dump,  Prev: Gcov-dump Intro,  Up: Gcov-dump
  
! 13.2 Invoking â€˜gcov-dumpâ€™
  =========================
  
       Usage: gcov-dump [OPTION] ... GCOVFILES
  
!  â€˜gcov-dumpâ€™ accepts the following options:
  
! â€˜-hâ€™
! â€˜--helpâ€™
!      Display help about using â€˜gcov-dumpâ€™ (on the standard output), and
       exit without doing any further processing.
  
! â€˜-lâ€™
! â€˜--longâ€™
       Dump content of records.
  
! â€˜-pâ€™
! â€˜--positionsâ€™
       Dump positions of records.
  
! â€˜-râ€™
! â€˜--rawâ€™
       Print content records in raw format.
  
! â€˜-sâ€™
! â€˜--stableâ€™
       Print content in stable format usable for comparison.
  
! â€˜-vâ€™
! â€˜--versionâ€™
!      Display the â€˜gcov-dumpâ€™ version number (on the standard output),
       and exit without doing any further processing.
  
  
  File: gcc.info,  Node: lto-dump,  Next: Trouble,  Prev: Gcov-dump,  Up: Top
  
! 14 â€˜lto-dumpâ€™--Tool for dumping LTO object files.
  *************************************************
  
  * Menu:
*************** File: gcc.info,  Node: lto-dump,  Next:
*** 68902,68969 ****
  
  File: gcc.info,  Node: lto-dump Intro,  Next: Invoking lto-dump,  Up: lto-dump
  
! 14.1 Introduction to 'lto-dump'
  ===============================
  
! 'lto-dump' is a tool you can use in conjunction with GCC to dump link
  time optimization object files.
  
  
  File: gcc.info,  Node: Invoking lto-dump,  Prev: lto-dump Intro,  Up: lto-dump
  
! 14.2 Invoking 'lto-dump'
  ========================
  
       Usage: lto-dump [OPTION] ... OBJFILES
  
!  'lto-dump' accepts the following options:
  
! '-list'
       Dumps list of details of functions and variables.
  
! '-demangle'
       Dump the demangled output.
  
! '-defined-only'
       Dump only the defined symbols.
  
! '-print-value'
       Dump initial values of the variables.
  
! '-name-sort'
       Sort the symbols alphabetically.
  
! '-size-sort'
       Sort the symbols according to size.
  
! '-reverse-sort'
       Dump the symbols in reverse order.
  
! '-no-sort'
       Dump the symbols in order of occurrence.
  
! '-symbol='
       Dump the details of specific symbol.
  
! '-objects'
       Dump the details of LTO objects.
  
! '-type-stats'
       Dump the statistics of tree types.
  
! '-tree-stats'
       Dump the statistics of trees.
  
! '-gimple-stats'
       Dump the statistics of gimple statements.
  
! '-dump-level='
       For deciding the optimization level of body.
  
! '-dump-body='
       Dump the specific gimple body.
  
! '-help'
       Display the dump tool help.
  
  
--- 68911,68978 ----
  
  File: gcc.info,  Node: lto-dump Intro,  Next: Invoking lto-dump,  Up: lto-dump
  
! 14.1 Introduction to â€˜lto-dumpâ€™
  ===============================
  
! â€˜lto-dumpâ€™ is a tool you can use in conjunction with GCC to dump link
  time optimization object files.
  
  
  File: gcc.info,  Node: Invoking lto-dump,  Prev: lto-dump Intro,  Up: lto-dump
  
! 14.2 Invoking â€˜lto-dumpâ€™
  ========================
  
       Usage: lto-dump [OPTION] ... OBJFILES
  
!  â€˜lto-dumpâ€™ accepts the following options:
  
! â€˜-listâ€™
       Dumps list of details of functions and variables.
  
! â€˜-demangleâ€™
       Dump the demangled output.
  
! â€˜-defined-onlyâ€™
       Dump only the defined symbols.
  
! â€˜-print-valueâ€™
       Dump initial values of the variables.
  
! â€˜-name-sortâ€™
       Sort the symbols alphabetically.
  
! â€˜-size-sortâ€™
       Sort the symbols according to size.
  
! â€˜-reverse-sortâ€™
       Dump the symbols in reverse order.
  
! â€˜-no-sortâ€™
       Dump the symbols in order of occurrence.
  
! â€˜-symbol=â€™
       Dump the details of specific symbol.
  
! â€˜-objectsâ€™
       Dump the details of LTO objects.
  
! â€˜-type-statsâ€™
       Dump the statistics of tree types.
  
! â€˜-tree-statsâ€™
       Dump the statistics of trees.
  
! â€˜-gimple-statsâ€™
       Dump the statistics of gimple statements.
  
! â€˜-dump-level=â€™
       For deciding the optimization level of body.
  
! â€˜-dump-body=â€™
       Dump the specific gimple body.
  
! â€˜-helpâ€™
       Display the dump tool help.
  
  
*************** File: gcc.info,  Node: Actual Bugs,  Nex
*** 69002,69010 ****
  15.1 Actual Bugs We Haven't Fixed Yet
  =====================================
  
!    * The 'fixincludes' script interacts badly with automounters; if the
       directory of system header files is automounted, it tends to be
!      unmounted while 'fixincludes' is running.  This would seem to be a
       bug in the automounter.  We don't know any good way to work around
       it.
  
--- 69011,69019 ----
  15.1 Actual Bugs We Haven't Fixed Yet
  =====================================
  
!    â€¢ The â€˜fixincludesâ€™ script interacts badly with automounters; if the
       directory of system header files is automounted, it tends to be
!      unmounted while â€˜fixincludesâ€™ is running.  This would seem to be a
       bug in the automounter.  We don't know any good way to work around
       it.
  
*************** This section lists various difficulties
*** 69018,69024 ****
  together with other compilers or with the assemblers, linkers, libraries
  and debuggers on certain systems.
  
!    * On many platforms, GCC supports a different ABI for C++ than do
       other compilers, so the object files compiled by GCC cannot be used
       with object files generated by another C++ compiler.
  
--- 69027,69033 ----
  together with other compilers or with the assemblers, linkers, libraries
  and debuggers on certain systems.
  
!    â€¢ On many platforms, GCC supports a different ABI for C++ than do
       other compilers, so the object files compiled by GCC cannot be used
       with object files generated by another C++ compiler.
  
*************** and debuggers on certain systems.
*** 69033,69050 ****
       Incompatible libraries are then detected at link time, rather than
       at run time.
  
!    * On some BSD systems, including some versions of Ultrix, use of
       profiling causes static variable destructors (currently used only
       in C++) not to be run.
  
!    * On a SPARC, GCC aligns all values of type 'double' on an 8-byte
!      boundary, and it expects every 'double' to be so aligned.  The Sun
!      compiler usually gives 'double' values 8-byte alignment, with one
!      exception: function arguments of type 'double' may not be aligned.
  
       As a result, if a function compiled with Sun CC takes the address
!      of an argument of type 'double' and passes this pointer of type
!      'double *' to a function compiled with GCC, dereferencing the
       pointer may cause a fatal signal.
  
       One way to solve this problem is to compile your entire program
--- 69042,69059 ----
       Incompatible libraries are then detected at link time, rather than
       at run time.
  
!    â€¢ On some BSD systems, including some versions of Ultrix, use of
       profiling causes static variable destructors (currently used only
       in C++) not to be run.
  
!    â€¢ On a SPARC, GCC aligns all values of type â€˜doubleâ€™ on an 8-byte
!      boundary, and it expects every â€˜doubleâ€™ to be so aligned.  The Sun
!      compiler usually gives â€˜doubleâ€™ values 8-byte alignment, with one
!      exception: function arguments of type â€˜doubleâ€™ may not be aligned.
  
       As a result, if a function compiled with Sun CC takes the address
!      of an argument of type â€˜doubleâ€™ and passes this pointer of type
!      â€˜double *â€™ to a function compiled with GCC, dereferencing the
       pointer may cause a fatal signal.
  
       One way to solve this problem is to compile your entire program
*************** and debuggers on certain systems.
*** 69052,69059 ****
       compiled with Sun CC to copy the argument into a local variable;
       local variables are always properly aligned.  A third solution is
       to modify the function that uses the pointer to dereference it via
!      the following function 'access_double' instead of directly with
!      '*':
  
            inline double
            access_double (double *unaligned_ptr)
--- 69061,69068 ----
       compiled with Sun CC to copy the argument into a local variable;
       local variables are always properly aligned.  A third solution is
       to modify the function that uses the pointer to dereference it via
!      the following function â€˜access_doubleâ€™ instead of directly with
!      â€˜*â€™:
  
            inline double
            access_double (double *unaligned_ptr)
*************** and debuggers on certain systems.
*** 69071,69112 ****
  
       Storing into the pointer can be done likewise with the same union.
  
!    * On Solaris, the 'malloc' function in the 'libmalloc.a' library may
       allocate memory that is only 4 byte aligned.  Since GCC on the
       SPARC assumes that doubles are 8 byte aligned, this may result in a
       fatal signal if doubles are stored in memory allocated by the
!      'libmalloc.a' library.
  
!      The solution is to not use the 'libmalloc.a' library.  Use instead
!      'malloc' and related functions from 'libc.a'; they do not have this
       problem.
  
!    * On the HP PA machine, ADB sometimes fails to work on functions
       compiled with GCC.  Specifically, it fails to work on functions
!      that use 'alloca' or variable-size arrays.  This is because GCC
       doesn't generate HP-UX unwind descriptors for such functions.  It
       may even be impossible to generate them.
  
!    * Debugging ('-g') is not supported on the HP PA machine, unless you
       use the preliminary GNU tools.
  
!    * Taking the address of a label may generate errors from the HP-UX PA
       assembler.  GAS for the PA does not have this problem.
  
!    * Using floating point parameters for indirect calls to static
       functions will not work when using the HP assembler.  There simply
       is no way for GCC to specify what registers hold arguments for
       static functions when using the HP assembler.  GAS for the PA does
       not have this problem.
  
!    * In extremely rare cases involving some very large functions you may
       receive errors from the HP linker complaining about an out of
       bounds unconditional branch offset.  This used to occur more often
       in previous versions of GCC, but is now exceptionally rare.  If you
       should run into it, you can work around by making your function
       smaller.
  
!    * GCC compiled code sometimes emits warnings from the HP-UX assembler
       of the form:
  
            (warning) Use of GR3 when
--- 69080,69121 ----
  
       Storing into the pointer can be done likewise with the same union.
  
!    â€¢ On Solaris, the â€˜mallocâ€™ function in the â€˜libmalloc.aâ€™ library may
       allocate memory that is only 4 byte aligned.  Since GCC on the
       SPARC assumes that doubles are 8 byte aligned, this may result in a
       fatal signal if doubles are stored in memory allocated by the
!      â€˜libmalloc.aâ€™ library.
  
!      The solution is to not use the â€˜libmalloc.aâ€™ library.  Use instead
!      â€˜mallocâ€™ and related functions from â€˜libc.aâ€™; they do not have this
       problem.
  
!    â€¢ On the HP PA machine, ADB sometimes fails to work on functions
       compiled with GCC.  Specifically, it fails to work on functions
!      that use â€˜allocaâ€™ or variable-size arrays.  This is because GCC
       doesn't generate HP-UX unwind descriptors for such functions.  It
       may even be impossible to generate them.
  
!    â€¢ Debugging (â€˜-gâ€™) is not supported on the HP PA machine, unless you
       use the preliminary GNU tools.
  
!    â€¢ Taking the address of a label may generate errors from the HP-UX PA
       assembler.  GAS for the PA does not have this problem.
  
!    â€¢ Using floating point parameters for indirect calls to static
       functions will not work when using the HP assembler.  There simply
       is no way for GCC to specify what registers hold arguments for
       static functions when using the HP assembler.  GAS for the PA does
       not have this problem.
  
!    â€¢ In extremely rare cases involving some very large functions you may
       receive errors from the HP linker complaining about an out of
       bounds unconditional branch offset.  This used to occur more often
       in previous versions of GCC, but is now exceptionally rare.  If you
       should run into it, you can work around by making your function
       smaller.
  
!    â€¢ GCC compiled code sometimes emits warnings from the HP-UX assembler
       of the form:
  
            (warning) Use of GR3 when
*************** and debuggers on certain systems.
*** 69114,69156 ****
  
       These warnings are harmless and can be safely ignored.
  
!    * In extremely rare cases involving some very large functions you may
       receive errors from the AIX Assembler complaining about a
       displacement that is too large.  If you should run into it, you can
       work around by making your function smaller.
  
!    * The 'libstdc++.a' library in GCC relies on the SVR4 dynamic linker
       semantics which merges global symbols between libraries and
       applications, especially necessary for C++ streams functionality.
       This is not the default behavior of AIX shared libraries and
!      dynamic linking.  'libstdc++.a' is built on AIX with
       "runtime-linking" enabled so that symbol merging can occur.  To
!      utilize this feature, the application linked with 'libstdc++.a'
!      must include the '-Wl,-brtl' flag on the link line.  G++ cannot
       impose this because this option may interfere with the semantics of
!      the user program and users may not always use 'g++' to link his or
       her application.  Applications are not required to use the
!      '-Wl,-brtl' flag on the link line--the rest of the 'libstdc++.a'
       library which is not dependent on the symbol merging semantics will
       continue to function correctly.
  
!    * An application can interpose its own definition of functions for
!      functions invoked by 'libstdc++.a' with "runtime-linking" enabled
       on AIX.  To accomplish this the application must be linked with
       "runtime-linking" option and the functions explicitly must be
!      exported by the application ('-Wl,-brtl,-bE:exportfile').
  
!    * AIX on the RS/6000 provides support (NLS) for environments outside
       of the United States.  Compilers and assemblers use NLS to support
       locale-specific representations of various objects including
!      floating-point numbers ('.' vs ',' for separating decimal
       fractions).  There have been problems reported where the library
       linked with GCC does not produce the same floating-point formats
       that the assembler accepts.  If you have this problem, set the
!      'LANG' environment variable to 'C' or 'En_US'.
  
!    * Even if you specify '-fdollars-in-identifiers', you cannot
!      successfully use '$' in identifiers on the RS/6000 due to a
       restriction in the IBM assembler.  GAS supports these identifiers.
  
  
--- 69123,69165 ----
  
       These warnings are harmless and can be safely ignored.
  
!    â€¢ In extremely rare cases involving some very large functions you may
       receive errors from the AIX Assembler complaining about a
       displacement that is too large.  If you should run into it, you can
       work around by making your function smaller.
  
!    â€¢ The â€˜libstdc++.aâ€™ library in GCC relies on the SVR4 dynamic linker
       semantics which merges global symbols between libraries and
       applications, especially necessary for C++ streams functionality.
       This is not the default behavior of AIX shared libraries and
!      dynamic linking.  â€˜libstdc++.aâ€™ is built on AIX with
       "runtime-linking" enabled so that symbol merging can occur.  To
!      utilize this feature, the application linked with â€˜libstdc++.aâ€™
!      must include the â€˜-Wl,-brtlâ€™ flag on the link line.  G++ cannot
       impose this because this option may interfere with the semantics of
!      the user program and users may not always use â€˜g++â€™ to link his or
       her application.  Applications are not required to use the
!      â€˜-Wl,-brtlâ€™ flag on the link line--the rest of the â€˜libstdc++.aâ€™
       library which is not dependent on the symbol merging semantics will
       continue to function correctly.
  
!    â€¢ An application can interpose its own definition of functions for
!      functions invoked by â€˜libstdc++.aâ€™ with "runtime-linking" enabled
       on AIX.  To accomplish this the application must be linked with
       "runtime-linking" option and the functions explicitly must be
!      exported by the application (â€˜-Wl,-brtl,-bE:exportfileâ€™).
  
!    â€¢ AIX on the RS/6000 provides support (NLS) for environments outside
       of the United States.  Compilers and assemblers use NLS to support
       locale-specific representations of various objects including
!      floating-point numbers (â€˜.â€™ vs â€˜,â€™ for separating decimal
       fractions).  There have been problems reported where the library
       linked with GCC does not produce the same floating-point formats
       that the assembler accepts.  If you have this problem, set the
!      â€˜LANGâ€™ environment variable to â€˜Câ€™ or â€˜En_USâ€™.
  
!    â€¢ Even if you specify â€˜-fdollars-in-identifiersâ€™, you cannot
!      successfully use â€˜$â€™ in identifiers on the RS/6000 due to a
       restriction in the IBM assembler.  GAS supports these identifiers.
  
  
*************** File: gcc.info,  Node: Incompatibilities
*** 69162,69199 ****
  There are several noteworthy incompatibilities between GNU C and K&R
  (non-ISO) versions of C.
  
!    * GCC normally makes string constants read-only.  If several
       identical-looking string constants are used, GCC stores only one
       copy of the string.
  
!      One consequence is that you cannot call 'mktemp' with a string
!      constant argument.  The function 'mktemp' always alters the string
       its argument points to.
  
!      Another consequence is that 'sscanf' does not work on some very old
       systems when passed a string constant as its format control string
!      or input.  This is because 'sscanf' incorrectly tries to write into
!      the string constant.  Likewise 'fscanf' and 'scanf'.
  
       The solution to these problems is to change the program to use
!      'char'-array variables with initialization strings for these
       purposes instead of string constants.
  
!    * '-2147483648' is positive.
  
!      This is because 2147483648 cannot fit in the type 'int', so
!      (following the ISO C rules) its data type is 'unsigned long int'.
       Negating this value yields 2147483648 again.
  
!    * GCC does not substitute macro arguments when they appear inside of
       string constants.  For example, the following macro in GCC
  
            #define foo(a) "a"
  
!      will produce output '"a"' regardless of what the argument A is.
  
!    * When you use 'setjmp' and 'longjmp', the only automatic variables
!      guaranteed to remain valid are those declared 'volatile'.  This is
       a consequence of automatic register allocation.  Consider this
       function:
  
--- 69171,69208 ----
  There are several noteworthy incompatibilities between GNU C and K&R
  (non-ISO) versions of C.
  
!    â€¢ GCC normally makes string constants read-only.  If several
       identical-looking string constants are used, GCC stores only one
       copy of the string.
  
!      One consequence is that you cannot call â€˜mktempâ€™ with a string
!      constant argument.  The function â€˜mktempâ€™ always alters the string
       its argument points to.
  
!      Another consequence is that â€˜sscanfâ€™ does not work on some very old
       systems when passed a string constant as its format control string
!      or input.  This is because â€˜sscanfâ€™ incorrectly tries to write into
!      the string constant.  Likewise â€˜fscanfâ€™ and â€˜scanfâ€™.
  
       The solution to these problems is to change the program to use
!      â€˜charâ€™-array variables with initialization strings for these
       purposes instead of string constants.
  
!    â€¢ â€˜-2147483648â€™ is positive.
  
!      This is because 2147483648 cannot fit in the type â€˜intâ€™, so
!      (following the ISO C rules) its data type is â€˜unsigned long intâ€™.
       Negating this value yields 2147483648 again.
  
!    â€¢ GCC does not substitute macro arguments when they appear inside of
       string constants.  For example, the following macro in GCC
  
            #define foo(a) "a"
  
!      will produce output â€˜"a"â€™ regardless of what the argument A is.
  
!    â€¢ When you use â€˜setjmpâ€™ and â€˜longjmpâ€™, the only automatic variables
!      guaranteed to remain valid are those declared â€˜volatileâ€™.  This is
       a consequence of automatic register allocation.  Consider this
       function:
  
*************** There are several noteworthy incompatibi
*** 69208,69226 ****
                return a;
  
              a = fun2 ();
!             /* 'longjmp (j)' may occur in 'fun3'. */
              return a + fun3 ();
            }
  
!      Here 'a' may or may not be restored to its first value when the
!      'longjmp' occurs.  If 'a' is allocated in a register, then its
       first value is restored; otherwise, it keeps the last value stored
       in it.
  
!      If you use the '-W' option with the '-O' option, you will get a
       warning when GCC thinks such a problem might be possible.
  
!    * Programs that use preprocessing directives in the middle of macro
       arguments do not work with GCC.  For example, a program like this
       will not work:
  
--- 69217,69235 ----
                return a;
  
              a = fun2 ();
!             /* â€˜longjmp (j)â€™ may occur in â€˜fun3â€™. */
              return a + fun3 ();
            }
  
!      Here â€˜aâ€™ may or may not be restored to its first value when the
!      â€˜longjmpâ€™ occurs.  If â€˜aâ€™ is allocated in a register, then its
       first value is restored; otherwise, it keeps the last value stored
       in it.
  
!      If you use the â€˜-Wâ€™ option with the â€˜-Oâ€™ option, you will get a
       warning when GCC thinks such a problem might be possible.
  
!    â€¢ Programs that use preprocessing directives in the middle of macro
       arguments do not work with GCC.  For example, a program like this
       will not work:
  
*************** There are several noteworthy incompatibi
*** 69230,69275 ****
  
       ISO C does not permit such a construct.
  
!    * K&R compilers allow comments to cross over an inclusion boundary
       (i.e. started in an include file and ended in the including file).
  
!    * Declarations of external variables and functions within a block
       apply only to the block containing the declaration.  In other
       words, they have the same scope as any other declaration in the
       same place.
  
!      In some other C compilers, an 'extern' declaration affects all the
       rest of the file even if it happens within a block.
  
!    * In traditional C, you can combine 'long', etc., with a typedef
       name, as shown here:
  
            typedef int foo;
            typedef long foo bar;
  
!      In ISO C, this is not allowed: 'long' and other type modifiers
!      require an explicit 'int'.
  
!    * PCC allows typedef names to be used as function parameters.
  
!    * Traditional C allows the following erroneous pair of declarations
       to appear together in a given scope:
  
            typedef int foo;
            typedef foo foo;
  
!    * GCC treats all characters of identifiers as significant.  According
       to K&R-1 (2.2), "No more than the first eight characters are
       significant, although more may be used.".  Also according to K&R-1
       (2.2), "An identifier is a sequence of letters and digits; the
       first character must be a letter.  The underscore _ counts as a
       letter.", but GCC also allows dollar signs in identifiers.
  
!    * PCC allows whitespace in the middle of compound assignment
!      operators such as '+='.  GCC, following the ISO standard, does not
       allow this.
  
!    * GCC complains about unterminated character constants inside of
       preprocessing conditionals that fail.  Some programs have English
       comments enclosed in conditionals that are guaranteed to fail; if
       these comments contain apostrophes, GCC will probably report an
--- 69239,69284 ----
  
       ISO C does not permit such a construct.
  
!    â€¢ K&R compilers allow comments to cross over an inclusion boundary
       (i.e. started in an include file and ended in the including file).
  
!    â€¢ Declarations of external variables and functions within a block
       apply only to the block containing the declaration.  In other
       words, they have the same scope as any other declaration in the
       same place.
  
!      In some other C compilers, an â€˜externâ€™ declaration affects all the
       rest of the file even if it happens within a block.
  
!    â€¢ In traditional C, you can combine â€˜longâ€™, etc., with a typedef
       name, as shown here:
  
            typedef int foo;
            typedef long foo bar;
  
!      In ISO C, this is not allowed: â€˜longâ€™ and other type modifiers
!      require an explicit â€˜intâ€™.
  
!    â€¢ PCC allows typedef names to be used as function parameters.
  
!    â€¢ Traditional C allows the following erroneous pair of declarations
       to appear together in a given scope:
  
            typedef int foo;
            typedef foo foo;
  
!    â€¢ GCC treats all characters of identifiers as significant.  According
       to K&R-1 (2.2), "No more than the first eight characters are
       significant, although more may be used.".  Also according to K&R-1
       (2.2), "An identifier is a sequence of letters and digits; the
       first character must be a letter.  The underscore _ counts as a
       letter.", but GCC also allows dollar signs in identifiers.
  
!    â€¢ PCC allows whitespace in the middle of compound assignment
!      operators such as â€˜+=â€™.  GCC, following the ISO standard, does not
       allow this.
  
!    â€¢ GCC complains about unterminated character constants inside of
       preprocessing conditionals that fail.  Some programs have English
       comments enclosed in conditionals that are guaranteed to fail; if
       these comments contain apostrophes, GCC will probably report an
*************** There are several noteworthy incompatibi
*** 69280,69305 ****
            #endif
  
       The best solution to such a problem is to put the text into an
!      actual C comment delimited by '/*...*/'.
  
!    * Many user programs contain the declaration 'long time ();'.  In the
       past, the system header files on many systems did not actually
!      declare 'time', so it did not matter what type your program
!      declared it to return.  But in systems with ISO C headers, 'time'
!      is declared to return 'time_t', and if that is not the same as
!      'long', then 'long time ();' is erroneous.
  
       The solution is to change your program to use appropriate system
!      headers ('<time.h>' on systems with ISO C headers) and not to
!      declare 'time' if the system header files declare it, or failing
!      that to use 'time_t' as the return type of 'time'.
  
!    * When compiling functions that return 'float', PCC converts it to a
!      double.  GCC actually returns a 'float'.  If you are concerned with
       PCC compatibility, you should declare your functions to return
!      'double'; you might as well say what you mean.
  
!    * When compiling functions that return structures or unions, GCC
       output code normally uses a method different from that used on most
       versions of Unix.  As a result, code compiled with GCC cannot call
       a structure-returning function compiled with PCC, and vice versa.
--- 69289,69314 ----
            #endif
  
       The best solution to such a problem is to put the text into an
!      actual C comment delimited by â€˜/*...*/â€™.
  
!    â€¢ Many user programs contain the declaration â€˜long time ();â€™.  In the
       past, the system header files on many systems did not actually
!      declare â€˜timeâ€™, so it did not matter what type your program
!      declared it to return.  But in systems with ISO C headers, â€˜timeâ€™
!      is declared to return â€˜time_tâ€™, and if that is not the same as
!      â€˜longâ€™, then â€˜long time ();â€™ is erroneous.
  
       The solution is to change your program to use appropriate system
!      headers (â€˜<time.h>â€™ on systems with ISO C headers) and not to
!      declare â€˜timeâ€™ if the system header files declare it, or failing
!      that to use â€˜time_tâ€™ as the return type of â€˜timeâ€™.
  
!    â€¢ When compiling functions that return â€˜floatâ€™, PCC converts it to a
!      double.  GCC actually returns a â€˜floatâ€™.  If you are concerned with
       PCC compatibility, you should declare your functions to return
!      â€˜doubleâ€™; you might as well say what you mean.
  
!    â€¢ When compiling functions that return structures or unions, GCC
       output code normally uses a method different from that used on most
       versions of Unix.  As a result, code compiled with GCC cannot call
       a structure-returning function compiled with PCC, and vice versa.
*************** There are several noteworthy incompatibi
*** 69309,69315 ****
       union with any other size is stored into an address supplied by the
       caller (usually in a special, fixed register, but on some machines
       it is passed on the stack).  The target hook
!      'TARGET_STRUCT_VALUE_RTX' tells GCC where to pass this address.
  
       By contrast, PCC on most target machines returns structures and
       unions of any size by copying the data into an area of static
--- 69318,69324 ----
       union with any other size is stored into an address supplied by the
       caller (usually in a special, fixed register, but on some machines
       it is passed on the stack).  The target hook
!      â€˜TARGET_STRUCT_VALUE_RTXâ€™ tells GCC where to pass this address.
  
       By contrast, PCC on most target machines returns structures and
       unions of any size by copying the data into an area of static
*************** There are several noteworthy incompatibi
*** 69324,69344 ****
       memory, but still returns small structures and unions in registers.
  
       You can tell GCC to use a compatible convention for all structure
!      and union returning with the option '-fpcc-struct-return'.
  
!    * GCC complains about program fragments such as '0x74ae-0x4000' which
       appear to be two hexadecimal constants separated by the minus
!      operator.  Actually, this string is a single "preprocessing token".
       Each such token must correspond to one token in C.  Since this does
       not, GCC prints an error message.  Although it may appear obvious
       that what is meant is an operator and two values, the ISO C
       standard specifically requires that this be treated as erroneous.
  
!      A "preprocessing token" is a "preprocessing number" if it begins
       with a digit and is followed by letters, underscores, digits,
!      periods and 'e+', 'e-', 'E+', 'E-', 'p+', 'p-', 'P+', or 'P-'
!      character sequences.  (In strict C90 mode, the sequences 'p+',
!      'p-', 'P+' and 'P-' cannot appear in preprocessing numbers.)
  
       To make the above program fragment valid, place whitespace in front
       of the minus sign.  This whitespace will end the preprocessing
--- 69333,69353 ----
       memory, but still returns small structures and unions in registers.
  
       You can tell GCC to use a compatible convention for all structure
!      and union returning with the option â€˜-fpcc-struct-returnâ€™.
  
!    â€¢ GCC complains about program fragments such as â€˜0x74ae-0x4000â€™ which
       appear to be two hexadecimal constants separated by the minus
!      operator.  Actually, this string is a single â€œpreprocessing tokenâ€�.
       Each such token must correspond to one token in C.  Since this does
       not, GCC prints an error message.  Although it may appear obvious
       that what is meant is an operator and two values, the ISO C
       standard specifically requires that this be treated as erroneous.
  
!      A â€œpreprocessing tokenâ€� is a â€œpreprocessing numberâ€� if it begins
       with a digit and is followed by letters, underscores, digits,
!      periods and â€˜e+â€™, â€˜e-â€™, â€˜E+â€™, â€˜E-â€™, â€˜p+â€™, â€˜p-â€™, â€˜P+â€™, or â€˜P-â€™
!      character sequences.  (In strict C90 mode, the sequences â€˜p+â€™,
!      â€˜p-â€™, â€˜P+â€™ and â€˜P-â€™ cannot appear in preprocessing numbers.)
  
       To make the above program fragment valid, place whitespace in front
       of the minus sign.  This whitespace will end the preprocessing
*************** incompatible with ISO C, and some depend
*** 69357,69372 ****
  compilers.
  
   Installing GCC automatically creates and installs the fixed header
! files, by running a program called 'fixincludes'.  Normally, you don't
  need to pay attention to this.  But there are cases where it doesn't do
  the right thing automatically.
  
!    * If you update the system's header files, such as by installing a
       new system version, the fixed header files of GCC are not
!      automatically updated.  They can be updated using the 'mkheaders'
!      script installed in 'LIBEXECDIR/gcc/TARGET/VERSION/install-tools/'.
  
!    * On some systems, header file directories contain machine-specific
       symbolic links in certain places.  This makes it possible to share
       most of the header files among hosts running the same version of
       the system on different machine models.
--- 69366,69381 ----
  compilers.
  
   Installing GCC automatically creates and installs the fixed header
! files, by running a program called â€˜fixincludesâ€™.  Normally, you don't
  need to pay attention to this.  But there are cases where it doesn't do
  the right thing automatically.
  
!    â€¢ If you update the system's header files, such as by installing a
       new system version, the fixed header files of GCC are not
!      automatically updated.  They can be updated using the â€˜mkheadersâ€™
!      script installed in â€˜LIBEXECDIR/gcc/TARGET/VERSION/install-tools/â€™.
  
!    â€¢ On some systems, header file directories contain machine-specific
       symbolic links in certain places.  This makes it possible to share
       most of the header files among hosts running the same version of
       the system on different machine models.
*************** what this means.  Beyond the library fac
*** 69392,69407 ****
  implementation, the rest of the C library is supplied by the vendor of
  the operating system.  If that C library doesn't conform to the C
  standards, then your programs might get warnings (especially when using
! '-Wall') that you don't expect.
  
!  For example, the 'sprintf' function on SunOS 4.1.3 returns 'char *'
! while the C standard says that 'sprintf' returns an 'int'.  The
! 'fixincludes' program could make the prototype for this function match
  the Standard, but that would be wrong, since the function will still
! return 'char *'.
  
   If you need a Standard compliant library, then you need to find one, as
! GCC does not provide one.  The GNU C library (called 'glibc') provides
  ISO C, POSIX, BSD, SystemV and X/Open compatibility for GNU/Linux and
  HURD-based GNU systems; no recent version of it supports other systems,
  though some very old versions did.  Version 2.2 of the GNU C library
--- 69401,69416 ----
  implementation, the rest of the C library is supplied by the vendor of
  the operating system.  If that C library doesn't conform to the C
  standards, then your programs might get warnings (especially when using
! â€˜-Wallâ€™) that you don't expect.
  
!  For example, the â€˜sprintfâ€™ function on SunOS 4.1.3 returns â€˜char *â€™
! while the C standard says that â€˜sprintfâ€™ returns an â€˜intâ€™.  The
! â€˜fixincludesâ€™ program could make the prototype for this function match
  the Standard, but that would be wrong, since the function will still
! return â€˜char *â€™.
  
   If you need a Standard compliant library, then you need to find one, as
! GCC does not provide one.  The GNU C library (called â€˜glibcâ€™) provides
  ISO C, POSIX, BSD, SystemV and X/Open compatibility for GNU/Linux and
  HURD-based GNU systems; no recent version of it supports other systems,
  though some very old versions did.  Version 2.2 of the GNU C library
*************** File: gcc.info,  Node: Disappointments,
*** 69417,69423 ****
  These problems are perhaps regrettable, but we don't know any practical
  way around them.
  
!    * Certain local variables aren't recognized by debuggers when you
       compile with optimization.
  
       This occurs because sometimes GCC optimizes the variable out of
--- 69426,69432 ----
  These problems are perhaps regrettable, but we don't know any practical
  way around them.
  
!    â€¢ Certain local variables aren't recognized by debuggers when you
       compile with optimization.
  
       This occurs because sometimes GCC optimizes the variable out of
*************** way around them.
*** 69429,69435 ****
       You have to expect a certain amount of disagreement between the
       executable and your source code, when you use optimization.
  
!    * Users often think it is a bug when GCC reports an error for code
       like this:
  
            int foo (struct mumble *);
--- 69438,69444 ----
       You have to expect a certain amount of disagreement between the
       executable and your source code, when you use optimization.
  
!    â€¢ Users often think it is a bug when GCC reports an error for code
       like this:
  
            int foo (struct mumble *);
*************** way around them.
*** 69439,69461 ****
            int foo (struct mumble *x)
            { ... }
  
!      This code really is erroneous, because the scope of 'struct mumble'
       in the prototype is limited to the argument list containing it.  It
!      does not refer to the 'struct mumble' defined with file scope
       immediately below--they are two unrelated types with similar names
       in different scopes.
  
!      But in the definition of 'foo', the file-scope type is used because
       that is available to be inherited.  Thus, the definition and the
       prototype do not match, and you get an error.
  
       This behavior may seem silly, but it's what the ISO standard
       specifies.  It is easy enough for you to make your code work by
!      moving the definition of 'struct mumble' above the prototype.  It's
       not worth being incompatible with ISO C just to avoid an error for
       the example shown above.
  
!    * Accesses to bit-fields even in volatile objects works by accessing
       larger objects, such as a byte or a word.  You cannot rely on what
       size of object is accessed in order to read or write the bit-field;
       it may even vary for a given bit-field according to the precise
--- 69448,69470 ----
            int foo (struct mumble *x)
            { ... }
  
!      This code really is erroneous, because the scope of â€˜struct mumbleâ€™
       in the prototype is limited to the argument list containing it.  It
!      does not refer to the â€˜struct mumbleâ€™ defined with file scope
       immediately below--they are two unrelated types with similar names
       in different scopes.
  
!      But in the definition of â€˜fooâ€™, the file-scope type is used because
       that is available to be inherited.  Thus, the definition and the
       prototype do not match, and you get an error.
  
       This behavior may seem silly, but it's what the ISO standard
       specifies.  It is easy enough for you to make your code work by
!      moving the definition of â€˜struct mumbleâ€™ above the prototype.  It's
       not worth being incompatible with ISO C just to avoid an error for
       the example shown above.
  
!    â€¢ Accesses to bit-fields even in volatile objects works by accessing
       larger objects, such as a byte or a word.  You cannot rely on what
       size of object is accessed in order to read or write the bit-field;
       it may even vary for a given bit-field according to the precise
*************** way around them.
*** 69464,69470 ****
       If you care about controlling the amount of memory that is
       accessed, use volatile but do not use bit-fields.
  
!    * GCC comes with shell scripts to fix certain known problems in
       system header files.  They install corrected copies of various
       header files in a special directory where only GCC will normally
       look for them.  The scripts adapt to various systems by searching
--- 69473,69479 ----
       If you care about controlling the amount of memory that is
       accessed, use volatile but do not use bit-fields.
  
!    â€¢ GCC comes with shell scripts to fix certain known problems in
       system header files.  They install corrected copies of various
       header files in a special directory where only GCC will normally
       look for them.  The scripts adapt to various systems by searching
*************** way around them.
*** 69473,69498 ****
  
       If new system header files are installed, nothing automatically
       arranges to update the corrected header files.  They can be updated
!      using the 'mkheaders' script installed in
!      'LIBEXECDIR/gcc/TARGET/VERSION/install-tools/'.
  
!    * On 68000 and x86 systems, for instance, you can get paradoxical
       results if you test the precise values of floating point numbers.
       For example, you can find that a floating point value which is not
       a NaN is not equal to itself.  This results from the fact that the
       floating point registers hold a few more bits of precision than fit
!      in a 'double' in memory.  Compiled code moves values between memory
       and floating point registers at its convenience, and moving them
       into memory truncates them.
  
!      You can partially avoid this problem by using the '-ffloat-store'
       option (*note Optimize Options::).
  
!    * On AIX and other platforms without weak symbol support, templates
       need to be instantiated explicitly and symbols for static members
       of templates will not be generated.
  
!    * On AIX, GCC scans object files and library archives for static
       constructors and destructors when linking an application before the
       linker prunes unreferenced symbols.  This is necessary to prevent
       the AIX linker from mistakenly assuming that static constructor or
--- 69482,69507 ----
  
       If new system header files are installed, nothing automatically
       arranges to update the corrected header files.  They can be updated
!      using the â€˜mkheadersâ€™ script installed in
!      â€˜LIBEXECDIR/gcc/TARGET/VERSION/install-tools/â€™.
  
!    â€¢ On 68000 and x86 systems, for instance, you can get paradoxical
       results if you test the precise values of floating point numbers.
       For example, you can find that a floating point value which is not
       a NaN is not equal to itself.  This results from the fact that the
       floating point registers hold a few more bits of precision than fit
!      in a â€˜doubleâ€™ in memory.  Compiled code moves values between memory
       and floating point registers at its convenience, and moving them
       into memory truncates them.
  
!      You can partially avoid this problem by using the â€˜-ffloat-storeâ€™
       option (*note Optimize Options::).
  
!    â€¢ On AIX and other platforms without weak symbol support, templates
       need to be instantiated explicitly and symbols for static members
       of templates will not be generated.
  
!    â€¢ On AIX, GCC scans object files and library archives for static
       constructors and destructors when linking an application before the
       linker prunes unreferenced symbols.  This is necessary to prevent
       the AIX linker from mistakenly assuming that static constructor or
*************** static member; you must also _define_ it
*** 69537,69554 ****
         static int bar;
       };
  
!  This declaration only establishes that the class 'Foo' has an 'int'
! named 'Foo::bar', and a member function named 'Foo::method'.  But you
! still need to define _both_ 'method' and 'bar' elsewhere.  According to
  the ISO standard, you must supply an initializer in one (and only one)
  source file, such as:
  
       int Foo::bar = 0;
  
   Other C++ compilers may not correctly implement the standard behavior.
! As a result, when you switch to 'g++' from one of these compilers, you
  may discover that a program that appeared to work correctly in fact does
! not conform to the standard: 'g++' reports as undefined symbols any
  static data members that lack definitions.
  
  
--- 69546,69563 ----
         static int bar;
       };
  
!  This declaration only establishes that the class â€˜Fooâ€™ has an â€˜intâ€™
! named â€˜Foo::barâ€™, and a member function named â€˜Foo::methodâ€™.  But you
! still need to define _both_ â€˜methodâ€™ and â€˜barâ€™ elsewhere.  According to
  the ISO standard, you must supply an initializer in one (and only one)
  source file, such as:
  
       int Foo::bar = 0;
  
   Other C++ compilers may not correctly implement the standard behavior.
! As a result, when you switch to â€˜g++â€™ from one of these compilers, you
  may discover that a program that appeared to work correctly in fact does
! not conform to the standard: â€˜g++â€™ reports as undefined symbols any
  static data members that lack definitions.
  
  
*************** looked up at the point of instantiation.
*** 69577,69596 ****
           static const int N;
         };
  
!  Here, the names 'foo' and 'N' appear in a context that does not depend
! on the type of 'T'.  The compiler will thus require that they are
  defined in the context of use in the template, not only before the point
! of instantiation, and will here use '::foo(double)' and 'A::N',
  respectively.  In particular, it will convert the integer value to a
! 'double' when passing it to '::foo(double)'.
  
!  Conversely, 'bar' and the call to 'foo' in the fourth marked line are
! used in contexts that do depend on the type of 'T', so they are only
  looked up at the point of instantiation, and you can provide
  declarations for them after declaring the template, but before
! instantiating it.  In particular, if you instantiate 'A::f<int>', the
! last line will call an overloaded '::foo(int)' if one was provided, even
! if after the declaration of 'struct A'.
  
   This distinction between lookup of dependent and non-dependent names is
  called two-stage (or dependent) name lookup.  G++ implements it since
--- 69586,69605 ----
           static const int N;
         };
  
!  Here, the names â€˜fooâ€™ and â€˜Nâ€™ appear in a context that does not depend
! on the type of â€˜Tâ€™.  The compiler will thus require that they are
  defined in the context of use in the template, not only before the point
! of instantiation, and will here use â€˜::foo(double)â€™ and â€˜A::Nâ€™,
  respectively.  In particular, it will convert the integer value to a
! â€˜doubleâ€™ when passing it to â€˜::foo(double)â€™.
  
!  Conversely, â€˜barâ€™ and the call to â€˜fooâ€™ in the fourth marked line are
! used in contexts that do depend on the type of â€˜Tâ€™, so they are only
  looked up at the point of instantiation, and you can provide
  declarations for them after declaring the template, but before
! instantiating it.  In particular, if you instantiate â€˜A::f<int>â€™, the
! last line will call an overloaded â€˜::foo(int)â€™ if one was provided, even
! if after the declaration of â€˜struct Aâ€™.
  
   This distinction between lookup of dependent and non-dependent names is
  called two-stage (or dependent) name lookup.  G++ implements it since
*************** different from non-template codes.  The
*** 69607,69627 ****
           int get_i() { return i; }
         };
  
!  In 'get_i()', 'i' is not used in a dependent context, so the compiler
  will look for a name declared at the enclosing namespace scope (which is
  the global scope here).  It will not look into the base class, since
! that is dependent and you may declare specializations of 'Base' even
! after declaring 'Derived', so the compiler cannot really know what 'i'
! would refer to.  If there is no global variable 'i', then you will get
  an error message.
  
   In order to make it clear that you want the member of the base class,
  you need to defer lookup until instantiation time, at which the base
! class is known.  For this, you need to access 'i' in a dependent
! context, by either using 'this->i' (remember that 'this' is of type
! 'Derived<T>*', so is obviously dependent), or using 'Base<T>::i'.
! Alternatively, 'Base<T>::i' might be brought into scope by a
! 'using'-declaration.
  
   Another, similar example involves calling member functions of a base
  class:
--- 69616,69636 ----
           int get_i() { return i; }
         };
  
!  In â€˜get_i()â€™, â€˜iâ€™ is not used in a dependent context, so the compiler
  will look for a name declared at the enclosing namespace scope (which is
  the global scope here).  It will not look into the base class, since
! that is dependent and you may declare specializations of â€˜Baseâ€™ even
! after declaring â€˜Derivedâ€™, so the compiler cannot really know what â€˜iâ€™
! would refer to.  If there is no global variable â€˜iâ€™, then you will get
  an error message.
  
   In order to make it clear that you want the member of the base class,
  you need to defer lookup until instantiation time, at which the base
! class is known.  For this, you need to access â€˜iâ€™ in a dependent
! context, by either using â€˜this->iâ€™ (remember that â€˜thisâ€™ is of type
! â€˜Derived<T>*â€™, so is obviously dependent), or using â€˜Base<T>::iâ€™.
! Alternatively, â€˜Base<T>::iâ€™ might be brought into scope by a
! â€˜usingâ€™-declaration.
  
   Another, similar example involves calling member functions of a base
  class:
*************** class:
*** 69634,69641 ****
             int g() { return f(); };
         };
  
!  Again, the call to 'f()' is not dependent on template arguments (there
! are no arguments that depend on the type 'T', and it is also not
  otherwise specified that the call should be in a dependent context).
  Thus a global declaration of such a function must be available, since
  the one in the base class is not visible until instantiation time.  The
--- 69643,69650 ----
             int g() { return f(); };
         };
  
!  Again, the call to â€˜f()â€™ is not dependent on template arguments (there
! are no arguments that depend on the type â€˜Tâ€™, and it is also not
  otherwise specified that the call should be in a dependent context).
  Thus a global declaration of such a function must be available, since
  the one in the base class is not visible until instantiation time.  The
*************** compiler will consequently produce the f
*** 69647,69658 ****
         x.cc:6: error: (if you use `-fpermissive', G++ will accept your code, but
            allowing the use of an undeclared name is deprecated)
  
!  To make the code valid either use 'this->f()', or 'Base<T>::f()'.
! Using the '-fpermissive' flag will also let the compiler accept the
  code, by marking all function calls for which no declaration is visible
  at the time of definition of the template for later lookup at
  instantiation time, as if it were a dependent call.  We do not recommend
! using '-fpermissive' to work around invalid code, and it will also only
  catch cases where functions in base classes are called, not where
  variables in base classes are used (as in the example above).
  
--- 69656,69667 ----
         x.cc:6: error: (if you use `-fpermissive', G++ will accept your code, but
            allowing the use of an undeclared name is deprecated)
  
!  To make the code valid either use â€˜this->f()â€™, or â€˜Base<T>::f()â€™.
! Using the â€˜-fpermissiveâ€™ flag will also let the compiler accept the
  code, by marking all function calls for which no declaration is visible
  at the time of definition of the template for later lookup at
  instantiation time, as if it were a dependent call.  We do not recommend
! using â€˜-fpermissiveâ€™ to work around invalid code, and it will also only
  catch cases where functions in base classes are called, not where
  variables in base classes are used (as in the example above).
  
*************** It is dangerous to use pointers or refer
*** 69676,69690 ****
  temporary object.  The compiler may very well delete the object before
  you expect it to, leaving a pointer to garbage.  The most common place
  where this problem crops up is in classes like string classes,
! especially ones that define a conversion function to type 'char *' or
! 'const char *'--which is one reason why the standard 'string' class
! requires you to call the 'c_str' member function.  However, any class
  that returns a pointer to some internal structure is potentially subject
  to this problem.
  
!  For example, a program may use a function 'strfunc' that returns
! 'string' objects, and another function 'charfunc' that operates on
! pointers to 'char':
  
       string strfunc ();
       void charfunc (const char *);
--- 69685,69699 ----
  temporary object.  The compiler may very well delete the object before
  you expect it to, leaving a pointer to garbage.  The most common place
  where this problem crops up is in classes like string classes,
! especially ones that define a conversion function to type â€˜char *â€™ or
! â€˜const char *â€™--which is one reason why the standard â€˜stringâ€™ class
! requires you to call the â€˜c_strâ€™ member function.  However, any class
  that returns a pointer to some internal structure is potentially subject
  to this problem.
  
!  For example, a program may use a function â€˜strfuncâ€™ that returns
! â€˜stringâ€™ objects, and another function â€˜charfuncâ€™ that operates on
! pointers to â€˜charâ€™:
  
       string strfunc ();
       void charfunc (const char *);
*************** pointers to 'char':
*** 69700,69709 ****
       }
  
  In this situation, it may seem reasonable to save a pointer to the C
! string returned by the 'c_str' member function and use that rather than
! call 'c_str' repeatedly.  However, the temporary string created by the
! call to 'strfunc' is destroyed after 'p' is initialized, at which point
! 'p' is left pointing to freed memory.
  
   Code like this may run successfully under some other compilers,
  particularly obsolete cfront-based compilers that delete temporaries
--- 69709,69718 ----
       }
  
  In this situation, it may seem reasonable to save a pointer to the C
! string returned by the â€˜c_strâ€™ member function and use that rather than
! call â€˜c_strâ€™ repeatedly.  However, the temporary string created by the
! call to â€˜strfuncâ€™ is destroyed after â€˜pâ€™ is initialized, at which point
! â€˜pâ€™ is left pointing to freed memory.
  
   Code like this may run successfully under some other compilers,
  particularly obsolete cfront-based compilers that delete temporaries
*************** such objects behave unspecified when bei
*** 69758,69774 ****
         d1 = d2;
       }
  
!  The C++ standard specifies that 'Base::Base' is only called once when
  constructing or copy-constructing a Derived object.  It is unspecified
! whether 'Base::operator=' is called more than once when the implicit
! copy-assignment for Derived objects is invoked (as it is inside 'func'
  in the example).
  
   G++ implements the "intuitive" algorithm for copy-assignment: assign
  all direct bases, then assign all members.  In that algorithm, the
  virtual base subobject can be encountered more than once.  In the
! example, copying proceeds in the following order: 'name' (via 'strdup'),
! 'val', 'name' again, and 'bval'.
  
   If application code relies on copy-assignment, a user-defined
  copy-assignment operator removes any uncertainties.  With such an
--- 69767,69783 ----
         d1 = d2;
       }
  
!  The C++ standard specifies that â€˜Base::Baseâ€™ is only called once when
  constructing or copy-constructing a Derived object.  It is unspecified
! whether â€˜Base::operator=â€™ is called more than once when the implicit
! copy-assignment for Derived objects is invoked (as it is inside â€˜funcâ€™
  in the example).
  
   G++ implements the "intuitive" algorithm for copy-assignment: assign
  all direct bases, then assign all members.  In that algorithm, the
  virtual base subobject can be encountered more than once.  In the
! example, copying proceeds in the following order: â€˜nameâ€™ (via â€˜strdupâ€™),
! â€˜valâ€™, â€˜nameâ€™ again, and â€˜bvalâ€™.
  
   If application code relies on copy-assignment, a user-defined
  copy-assignment operator removes any uncertainties.  With such an
*************** File: gcc.info,  Node: Non-bugs,  Next:
*** 69784,69790 ****
  This section lists changes that people frequently request, but which we
  do not make because we think GCC is better without them.
  
!    * Checking the number and type of arguments to a function which has
       an old-fashioned definition and no prototype.
  
       Such a feature would work only occasionally--only for calls that
--- 69793,69799 ----
  This section lists changes that people frequently request, but which we
  do not make because we think GCC is better without them.
  
!    â€¢ Checking the number and type of arguments to a function which has
       an old-fashioned definition and no prototype.
  
       Such a feature would work only occasionally--only for calls that
*************** do not make because we think GCC is bett
*** 69793,69823 ****
       prototype for the function.  But adding a prototype eliminates the
       motivation for this feature.  So the feature is not worthwhile.
  
!    * Warning about using an expression whose type is signed as a shift
       count.
  
       Shift count operands are probably signed more often than unsigned.
       Warning about this would cause far more annoyance than good.
  
!    * Warning about assigning a signed value to an unsigned variable.
  
       Such assignments must be very common; warning about them would
       cause more annoyance than good.
  
!    * Warning when a non-void function value is ignored.
  
       C contains many standard functions that return a value that most
!      programs choose to ignore.  One obvious example is 'printf'.
       Warning about this practice only leads the defensive programmer to
!      clutter programs with dozens of casts to 'void'.  Such casts are
       required so frequently that they become visual noise.  Writing
       those casts becomes so automatic that they no longer convey useful
       information about the intentions of the programmer.  For functions
       where the return value should never be ignored, use the
!      'warn_unused_result' function attribute (*note Function
       Attributes::).
  
!    * Making '-fshort-enums' the default.
  
       This would cause storage layout to be incompatible with most other
       C compilers.  And it doesn't seem very important, given that you
--- 69802,69832 ----
       prototype for the function.  But adding a prototype eliminates the
       motivation for this feature.  So the feature is not worthwhile.
  
!    â€¢ Warning about using an expression whose type is signed as a shift
       count.
  
       Shift count operands are probably signed more often than unsigned.
       Warning about this would cause far more annoyance than good.
  
!    â€¢ Warning about assigning a signed value to an unsigned variable.
  
       Such assignments must be very common; warning about them would
       cause more annoyance than good.
  
!    â€¢ Warning when a non-void function value is ignored.
  
       C contains many standard functions that return a value that most
!      programs choose to ignore.  One obvious example is â€˜printfâ€™.
       Warning about this practice only leads the defensive programmer to
!      clutter programs with dozens of casts to â€˜voidâ€™.  Such casts are
       required so frequently that they become visual noise.  Writing
       those casts becomes so automatic that they no longer convey useful
       information about the intentions of the programmer.  For functions
       where the return value should never be ignored, use the
!      â€˜warn_unused_resultâ€™ function attribute (*note Function
       Attributes::).
  
!    â€¢ Making â€˜-fshort-enumsâ€™ the default.
  
       This would cause storage layout to be incompatible with most other
       C compilers.  And it doesn't seem very important, given that you
*************** do not make because we think GCC is bett
*** 69825,69844 ****
       most is when the enumeration-valued object is inside a structure,
       and in that case you can specify a field width explicitly.
  
!    * Making bit-fields unsigned by default on particular machines where
       "the ABI standard" says to do so.
  
       The ISO C standard leaves it up to the implementation whether a
!      bit-field declared plain 'int' is signed or not.  This in effect
       creates two alternative dialects of C.
  
       The GNU C compiler supports both dialects; you can specify the
!      signed dialect with '-fsigned-bitfields' and the unsigned dialect
!      with '-funsigned-bitfields'.  However, this leaves open the
       question of which dialect to use by default.
  
       Currently, the preferred dialect makes plain bit-fields signed,
!      because this is simplest.  Since 'int' is the same as 'signed int'
       in every other context, it is cleanest for them to be the same in
       bit-fields as well.
  
--- 69834,69853 ----
       most is when the enumeration-valued object is inside a structure,
       and in that case you can specify a field width explicitly.
  
!    â€¢ Making bit-fields unsigned by default on particular machines where
       "the ABI standard" says to do so.
  
       The ISO C standard leaves it up to the implementation whether a
!      bit-field declared plain â€˜intâ€™ is signed or not.  This in effect
       creates two alternative dialects of C.
  
       The GNU C compiler supports both dialects; you can specify the
!      signed dialect with â€˜-fsigned-bitfieldsâ€™ and the unsigned dialect
!      with â€˜-funsigned-bitfieldsâ€™.  However, this leaves open the
       question of which dialect to use by default.
  
       Currently, the preferred dialect makes plain bit-fields signed,
!      because this is simplest.  Since â€˜intâ€™ is the same as â€˜signed intâ€™
       in every other context, it is cleanest for them to be the same in
       bit-fields as well.
  
*************** do not make because we think GCC is bett
*** 69882,69943 ****
       In this way, they write programs which have the same meaning in
       both C dialects.)
  
!    * Undefining '__STDC__' when '-ansi' is not used.
  
!      Currently, GCC defines '__STDC__' unconditionally.  This provides
       good results in practice.
  
!      Programmers normally use conditionals on '__STDC__' to ask whether
       it is safe to use certain features of ISO C, such as function
!      prototypes or ISO token concatenation.  Since plain 'gcc' supports
       all the features of ISO C, the correct answer to these questions is
       "yes".
  
!      Some users try to use '__STDC__' to check for the availability of
       certain library facilities.  This is actually incorrect usage in an
       ISO C program, because the ISO C standard says that a conforming
!      freestanding implementation should define '__STDC__' even though it
!      does not have the library facilities.  'gcc -ansi -pedantic' is a
       conforming freestanding implementation, and it is therefore
!      required to define '__STDC__', even though it does not come with an
       ISO C library.
  
!      Sometimes people say that defining '__STDC__' in a compiler that
       does not completely conform to the ISO C standard somehow violates
       the standard.  This is illogical.  The standard is a standard for
!      compilers that claim to support ISO C, such as 'gcc -ansi'--not for
!      other compilers such as plain 'gcc'.  Whatever the ISO C standard
!      says is relevant to the design of plain 'gcc' without '-ansi' only
       for pragmatic reasons, not as a requirement.
  
!      GCC normally defines '__STDC__' to be 1, and in addition defines
!      '__STRICT_ANSI__' if you specify the '-ansi' option, or a '-std'
       option for strict conformance to some version of ISO C.  On some
       hosts, system include files use a different convention, where
!      '__STDC__' is normally 0, but is 1 if the user specifies strict
       conformance to the C Standard.  GCC follows the host convention
       when processing system include files, but when processing user
       files it follows the usual GNU C convention.
  
!    * Undefining '__STDC__' in C++.
  
       Programs written to compile with C++-to-C translators get the value
!      of '__STDC__' that goes with the C compiler that is subsequently
!      used.  These programs must test '__STDC__' to determine what kind
       of C preprocessor that compiler uses: whether they should
       concatenate tokens in the ISO C fashion or in the traditional
       fashion.
  
!      These programs work properly with GNU C++ if '__STDC__' is defined.
       They would not work otherwise.
  
       In addition, many header files are written to provide prototypes in
       ISO C but not in traditional C.  Many of these header files can
!      work without change in C++ provided '__STDC__' is defined.  If
!      '__STDC__' is not defined, they will all fail, and will all need to
       be changed to test explicitly for C++ as well.
  
!    * Deleting "empty" loops.
  
       Historically, GCC has not deleted "empty" loops under the
       assumption that the most likely reason you would put one in a
--- 69891,69952 ----
       In this way, they write programs which have the same meaning in
       both C dialects.)
  
!    â€¢ Undefining â€˜__STDC__â€™ when â€˜-ansiâ€™ is not used.
  
!      Currently, GCC defines â€˜__STDC__â€™ unconditionally.  This provides
       good results in practice.
  
!      Programmers normally use conditionals on â€˜__STDC__â€™ to ask whether
       it is safe to use certain features of ISO C, such as function
!      prototypes or ISO token concatenation.  Since plain â€˜gccâ€™ supports
       all the features of ISO C, the correct answer to these questions is
       "yes".
  
!      Some users try to use â€˜__STDC__â€™ to check for the availability of
       certain library facilities.  This is actually incorrect usage in an
       ISO C program, because the ISO C standard says that a conforming
!      freestanding implementation should define â€˜__STDC__â€™ even though it
!      does not have the library facilities.  â€˜gcc -ansi -pedanticâ€™ is a
       conforming freestanding implementation, and it is therefore
!      required to define â€˜__STDC__â€™, even though it does not come with an
       ISO C library.
  
!      Sometimes people say that defining â€˜__STDC__â€™ in a compiler that
       does not completely conform to the ISO C standard somehow violates
       the standard.  This is illogical.  The standard is a standard for
!      compilers that claim to support ISO C, such as â€˜gcc -ansiâ€™--not for
!      other compilers such as plain â€˜gccâ€™.  Whatever the ISO C standard
!      says is relevant to the design of plain â€˜gccâ€™ without â€˜-ansiâ€™ only
       for pragmatic reasons, not as a requirement.
  
!      GCC normally defines â€˜__STDC__â€™ to be 1, and in addition defines
!      â€˜__STRICT_ANSI__â€™ if you specify the â€˜-ansiâ€™ option, or a â€˜-stdâ€™
       option for strict conformance to some version of ISO C.  On some
       hosts, system include files use a different convention, where
!      â€˜__STDC__â€™ is normally 0, but is 1 if the user specifies strict
       conformance to the C Standard.  GCC follows the host convention
       when processing system include files, but when processing user
       files it follows the usual GNU C convention.
  
!    â€¢ Undefining â€˜__STDC__â€™ in C++.
  
       Programs written to compile with C++-to-C translators get the value
!      of â€˜__STDC__â€™ that goes with the C compiler that is subsequently
!      used.  These programs must test â€˜__STDC__â€™ to determine what kind
       of C preprocessor that compiler uses: whether they should
       concatenate tokens in the ISO C fashion or in the traditional
       fashion.
  
!      These programs work properly with GNU C++ if â€˜__STDC__â€™ is defined.
       They would not work otherwise.
  
       In addition, many header files are written to provide prototypes in
       ISO C but not in traditional C.  Many of these header files can
!      work without change in C++ provided â€˜__STDC__â€™ is defined.  If
!      â€˜__STDC__â€™ is not defined, they will all fail, and will all need to
       be changed to test explicitly for C++ as well.
  
!    â€¢ Deleting "empty" loops.
  
       Historically, GCC has not deleted "empty" loops under the
       assumption that the most likely reason you would put one in a
*************** do not make because we think GCC is bett
*** 69955,69961 ****
  
       Be aware of this when performing timing tests, for instance the
       following loop can be completely removed, provided
!      'some_expression' can provably not change any global state.
  
            {
               int sum = 0;
--- 69964,69970 ----
  
       Be aware of this when performing timing tests, for instance the
       following loop can be completely removed, provided
!      â€˜some_expressionâ€™ can provably not change any global state.
  
            {
               int sum = 0;
*************** do not make because we think GCC is bett
*** 69965,69974 ****
                  sum += some_expression;
            }
  
!      Even though 'sum' is accumulated in the loop, no use is made of
       that summation, so the accumulation can be removed.
  
!    * Making side effects happen in the same order as in some other
       compiler.
  
       It is never safe to depend on the order of evaluation of side
--- 69974,69983 ----
                  sum += some_expression;
            }
  
!      Even though â€˜sumâ€™ is accumulated in the loop, no use is made of
       that summation, so the accumulation can be removed.
  
!    â€¢ Making side effects happen in the same order as in some other
       compiler.
  
       It is never safe to depend on the order of evaluation of side
*************** do not make because we think GCC is bett
*** 69982,69992 ****
  
       There is no guarantee (in either the C or the C++ standard language
       definitions) that the increments will be evaluated in any
!      particular order.  Either increment might happen first.  'func'
!      might get the arguments '2, 3', or it might get '3, 2', or even '2,
!      2'.
  
!    * Making certain warnings into errors by default.
  
       Some ISO C testsuites report failure when the compiler does not
       produce an error message for a certain program.
--- 69991,70001 ----
  
       There is no guarantee (in either the C or the C++ standard language
       definitions) that the increments will be evaluated in any
!      particular order.  Either increment might happen first.  â€˜funcâ€™
!      might get the arguments â€˜2, 3â€™, or it might get â€˜3, 2â€™, or even â€˜2,
!      2â€™.
  
!    â€¢ Making certain warnings into errors by default.
  
       Some ISO C testsuites report failure when the compiler does not
       produce an error message for a certain program.
*************** do not make because we think GCC is bett
*** 69995,70001 ****
       programs, but a warning is defined by GCC to count as a diagnostic.
       If GCC produces a warning but not an error, that is correct ISO C
       support.  If testsuites call this "failure", they should be run
!      with the GCC option '-pedantic-errors', which will turn these
       warnings into errors.
  
  
--- 70004,70010 ----
       programs, but a warning is defined by GCC to count as a diagnostic.
       If GCC produces a warning but not an error, that is correct ISO C
       support.  If testsuites call this "failure", they should be run
!      with the GCC option â€˜-pedantic-errorsâ€™, which will turn these
       warnings into errors.
  
  
*************** File: gcc.info,  Node: Warnings and Erro
*** 70007,70035 ****
  The GNU compiler can produce two kinds of diagnostics: errors and
  warnings.  Each kind has a different purpose:
  
!      "Errors" report problems that make it impossible to compile your
       program.  GCC reports errors with the source file name and line
       number where the problem is apparent.
  
!      "Warnings" report other unusual conditions in your code that _may_
       indicate a problem, although compilation can (and does) proceed.
       Warning messages also report the source file name and line number,
!      but include the text 'warning:' to distinguish them from error
       messages.
  
   Warnings may indicate danger points where you should check to make sure
  that your program really does what you intend; or the use of obsolete
  features; or the use of nonstandard features of GNU C or C++.  Many
! warnings are issued only if you ask for them, with one of the '-W'
! options (for instance, '-Wall' requests a variety of useful warnings).
  
   GCC always tries to compile your program if possible; it never
  gratuitously rejects a program whose meaning is clear merely because
  (for instance) it fails to conform to a standard.  In some cases,
  however, the C and C++ standards specify that certain extensions are
  forbidden, and a diagnostic _must_ be issued by a conforming compiler.
! The '-pedantic' option tells GCC to issue warnings in such cases;
! '-pedantic-errors' says to make them errors instead.  This does not mean
  that _all_ non-ISO constructs get warnings or errors.
  
   *Note Options to Request or Suppress Warnings: Warning Options, for
--- 70016,70044 ----
  The GNU compiler can produce two kinds of diagnostics: errors and
  warnings.  Each kind has a different purpose:
  
!      â€œErrorsâ€� report problems that make it impossible to compile your
       program.  GCC reports errors with the source file name and line
       number where the problem is apparent.
  
!      â€œWarningsâ€� report other unusual conditions in your code that _may_
       indicate a problem, although compilation can (and does) proceed.
       Warning messages also report the source file name and line number,
!      but include the text â€˜warning:â€™ to distinguish them from error
       messages.
  
   Warnings may indicate danger points where you should check to make sure
  that your program really does what you intend; or the use of obsolete
  features; or the use of nonstandard features of GNU C or C++.  Many
! warnings are issued only if you ask for them, with one of the â€˜-Wâ€™
! options (for instance, â€˜-Wallâ€™ requests a variety of useful warnings).
  
   GCC always tries to compile your program if possible; it never
  gratuitously rejects a program whose meaning is clear merely because
  (for instance) it fails to conform to a standard.  In some cases,
  however, the C and C++ standards specify that certain extensions are
  forbidden, and a diagnostic _must_ be issued by a conforming compiler.
! The â€˜-pedanticâ€™ option tells GCC to issue warnings in such cases;
! â€˜-pedantic-errorsâ€™ says to make them errors instead.  This does not mean
  that _all_ non-ISO constructs get warnings or errors.
  
   *Note Options to Request or Suppress Warnings: Warning Options, for
*************** File: gcc.info,  Node: Bug Criteria,  Ne
*** 70061,70075 ****
  If you are not sure whether you have found a bug, here are some
  guidelines:
  
!    * If the compiler gets a fatal signal, for any input whatever, that
       is a compiler bug.  Reliable compilers never crash.
  
!    * If the compiler produces invalid assembly code, for any input
!      whatever (except an 'asm' statement), that is a compiler bug,
       unless the compiler reports errors (not just warnings) which would
       ordinarily prevent the assembler from being run.
  
!    * If the compiler produces valid assembly code that does not
       correctly execute the input source code, that is a compiler bug.
  
       However, you must double-check to make sure, because you may have a
--- 70070,70084 ----
  If you are not sure whether you have found a bug, here are some
  guidelines:
  
!    â€¢ If the compiler gets a fatal signal, for any input whatever, that
       is a compiler bug.  Reliable compilers never crash.
  
!    â€¢ If the compiler produces invalid assembly code, for any input
!      whatever (except an â€˜asmâ€™ statement), that is a compiler bug,
       unless the compiler reports errors (not just warnings) which would
       ordinarily prevent the assembler from being run.
  
!    â€¢ If the compiler produces valid assembly code that does not
       correctly execute the input source code, that is a compiler bug.
  
       However, you must double-check to make sure, because you may have a
*************** guidelines:
*** 70077,70083 ****
       give the desired results with another C or C++ compiler.
  
       Problems often result from expressions with two increment
!      operators, as in 'f (*p++, *p++)'.  Your previous compiler might
       have interpreted that expression the way you intended; GCC might
       interpret it another way.  Neither compiler is wrong.  The bug is
       in your code.
--- 70086,70092 ----
       give the desired results with another C or C++ compiler.
  
       Problems often result from expressions with two increment
!      operators, as in â€˜f (*p++, *p++)â€™.  Your previous compiler might
       have interpreted that expression the way you intended; GCC might
       interpret it another way.  Neither compiler is wrong.  The bug is
       in your code.
*************** guidelines:
*** 70086,70100 ****
       should be easy to check for these things.  If your program is
       correct and well defined, you have found a compiler bug.
  
!    * If the compiler produces an error message for valid input, that is
       a compiler bug.
  
!    * If the compiler does not produce an error message for invalid
       input, that is a compiler bug.  However, you should note that your
       idea of "invalid input" might be someone else's idea of "an
       extension" or "support for traditional practice".
  
!    * If you are an experienced user of one of the languages GCC
       supports, your suggestions for improvement of GCC are welcome in
       any case.
  
--- 70095,70109 ----
       should be easy to check for these things.  If your program is
       correct and well defined, you have found a compiler bug.
  
!    â€¢ If the compiler produces an error message for valid input, that is
       a compiler bug.
  
!    â€¢ If the compiler does not produce an error message for invalid
       input, that is a compiler bug.  However, you should note that your
       idea of "invalid input" might be someone else's idea of "an
       extension" or "support for traditional practice".
  
!    â€¢ If you are an experienced user of one of the languages GCC
       supports, your suggestions for improvement of GCC are welcome in
       any case.
  
*************** File: gcc.info,  Node: Service,  Next: C
*** 70116,70129 ****
  If you need help installing, using or changing GCC, there are two ways
  to find it:
  
!    * Send a message to a suitable network mailing list.  First try
       <gcc-help@gcc.gnu.org> (for help installing or using GCC), and if
       that brings no response, try <gcc@gcc.gnu.org>.  For help changing
       GCC, ask <gcc@gcc.gnu.org>.  If you think you have found a bug in
       GCC, please report it following the instructions at *note Bug
       Reporting::.
  
!    * Look in the service directory for someone who might help you for a
       fee.  The service directory is found at
       <https://www.fsf.org/resources/service>.
  
--- 70125,70138 ----
  If you need help installing, using or changing GCC, there are two ways
  to find it:
  
!    â€¢ Send a message to a suitable network mailing list.  First try
       <gcc-help@gcc.gnu.org> (for help installing or using GCC), and if
       that brings no response, try <gcc@gcc.gnu.org>.  For help changing
       GCC, ask <gcc@gcc.gnu.org>.  If you think you have found a bug in
       GCC, please report it following the instructions at *note Bug
       Reporting::.
  
!    â€¢ Look in the service directory for someone who might help you for a
       fee.  The service directory is found at
       <https://www.fsf.org/resources/service>.
  
*************** more; major new features or packages con
*** 70196,70202 ****
  proper thing to do" when distributing free software for a fee, we can
  assure a steady flow of resources into making more free software.
  
!      Copyright (C) 1994 Free Software Foundation, Inc.
       Verbatim copying and redistribution of this section is permitted
       without royalty; alteration is not permitted.
  
--- 70205,70211 ----
  proper thing to do" when distributing free software for a fee, we can
  assure a steady flow of resources into making more free software.
  
!      Copyright Â© 1994 Free Software Foundation, Inc.
       Verbatim copying and redistribution of this section is permitted
       without royalty; alteration is not permitted.
  
*************** GNU General Public License
*** 70225,70231 ****
  
                          Version 3, 29 June 2007
  
!      Copyright (C) 2007 Free Software Foundation, Inc. <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies of this
       license document, but changing it is not allowed.
--- 70234,70240 ----
  
                          Version 3, 29 June 2007
  
!      Copyright Â© 2007 Free Software Foundation, Inc. <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies of this
       license document, but changing it is not allowed.
*************** mail.
*** 70912,70922 ****
  like this when it starts in an interactive mode:
  
       PROGRAM Copyright (C) YEAR NAME OF AUTHOR
!      This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'.
       This is free software, and you are welcome to redistribute it
!      under certain conditions; type 'show c' for details.
  
!  The hypothetical commands 'show w' and 'show c' should show the
  appropriate parts of the General Public License.  Of course, your
  program's commands might be different; for a GUI interface, you would
  use an "about box".
--- 70921,70931 ----
  like this when it starts in an interactive mode:
  
       PROGRAM Copyright (C) YEAR NAME OF AUTHOR
!      This program comes with ABSOLUTELY NO WARRANTY; for details type â€˜show wâ€™.
       This is free software, and you are welcome to redistribute it
!      under certain conditions; type â€˜show câ€™ for details.
  
!  The hypothetical commands â€˜show wâ€™ and â€˜show câ€™ should show the
  appropriate parts of the General Public License.  Of course, your
  program's commands might be different; for a GUI interface, you would
  use an "about box".
*************** GNU Free Documentation License
*** 70941,70947 ****
  
                       Version 1.3, 3 November 2008
  
!      Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
       <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies
--- 70950,70956 ----
  
                       Version 1.3, 3 November 2008
  
!      Copyright Â© 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
       <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies
*************** GNU Free Documentation License
*** 70950,70956 ****
    0. PREAMBLE
  
       The purpose of this License is to make a manual, textbook, or other
!      functional and useful document "free" in the sense of freedom: to
       assure everyone the effective freedom to copy and redistribute it,
       with or without modifying it, either commercially or
       noncommercially.  Secondarily, this License preserves for the
--- 70959,70965 ----
    0. PREAMBLE
  
       The purpose of this License is to make a manual, textbook, or other
!      functional and useful document â€œfreeâ€� in the sense of freedom: to
       assure everyone the effective freedom to copy and redistribute it,
       with or without modifying it, either commercially or
       noncommercially.  Secondarily, this License preserves for the
*************** Any omissions in this list are accidenta
*** 71428,71815 ****
  out or some of your contributions are not listed.  Please keep this list
  in alphabetical order.
  
!    * Analog Devices helped implement the support for complex data types
       and iterators.
  
!    * John David Anglin for threading-related fixes and improvements to
       libstdc++-v3, and the HP-UX port.
  
!    * James van Artsdalen wrote the code that makes efficient use of the
       Intel 80387 register stack.
  
!    * Abramo and Roberto Bagnara for the SysV68 Motorola 3300 Delta
       Series port.
  
!    * Alasdair Baird for various bug fixes.
  
!    * Giovanni Bajo for analyzing lots of complicated C++ problem
       reports.
  
!    * Peter Barada for his work to improve code generation for new
       ColdFire cores.
  
!    * Gerald Baumgartner added the signature extension to the C++ front
       end.
  
!    * Godmar Back for his Java improvements and encouragement.
  
!    * Scott Bambrough for help porting the Java compiler.
  
!    * Wolfgang Bangerth for processing tons of bug reports.
  
!    * Jon Beniston for his Microsoft Windows port of Java and port to
       Lattice Mico32.
  
!    * Daniel Berlin for better DWARF 2 support, faster/better
       optimizations, improved alias analysis, plus migrating GCC to
       Bugzilla.
  
!    * Geoff Berry for his Java object serialization work and various
       patches.
  
!    * Richard Biener for his ongoing middle-end contributions and bug
       fixes and for release management.
  
!    * David Binderman for testing GCC trunk against Fedora Rawhide and
       csmith.
  
!    * Laurynas Biveinis for memory management work and DJGPP port fixes.
  
!    * Uros Bizjak for the implementation of x87 math built-in functions
       and for various middle end and i386 back end improvements and bug
       fixes.
  
!    * Eric Blake for helping to make GCJ and libgcj conform to the
       specifications.
  
!    * Janne Blomqvist for contributions to GNU Fortran.
  
!    * Hans-J. Boehm for his garbage collector, IA-64 libffi port, and
       other Java work.
  
!    * Segher Boessenkool for helping maintain the PowerPC port and the
       instruction combiner plus various contributions to the middle end.
  
!    * Neil Booth for work on cpplib, lang hooks, debug hooks and other
       miscellaneous clean-ups.
  
!    * Steven Bosscher for integrating the GNU Fortran front end into GCC
       and for contributing to the tree-ssa branch.
  
!    * Eric Botcazou for fixing middle- and backend bugs left and right.
  
!    * Per Bothner for his direction via the steering committee and
       various improvements to the infrastructure for supporting new
       languages.  Chill front end implementation.  Initial
       implementations of cpplib, fix-header, config.guess, libio, and
       past C++ library (libg++) maintainer.  Dreaming up, designing and
       implementing much of GCJ.
  
!    * Devon Bowen helped port GCC to the Tahoe.
  
!    * Don Bowman for mips-vxworks contributions.
  
!    * James Bowman for the FT32 port.
  
!    * Dave Brolley for work on cpplib and Chill.
  
!    * Paul Brook for work on the ARM architecture and maintaining GNU
       Fortran.
  
!    * Robert Brown implemented the support for Encore 32000 systems.
  
!    * Christian Bruel for improvements to local store elimination.
  
!    * Herman A.J. ten Brugge for various fixes.
  
!    * Joerg Brunsmann for Java compiler hacking and help with the GCJ
       FAQ.
  
!    * Joe Buck for his direction via the steering committee from its
       creation to 2013.
  
!    * Iain Buclaw for the D frontend.
  
!    * Craig Burley for leadership of the G77 Fortran effort.
  
!    * Tobias Burnus for contributions to GNU Fortran.
  
!    * Stephan Buys for contributing Doxygen notes for libstdc++.
  
!    * Paolo Carlini for libstdc++ work: lots of efficiency improvements
       to the C++ strings, streambufs and formatted I/O, hard detective
       work on the frustrating localization issues, and keeping up with
       the problem reports.
  
!    * John Carr for his alias work, SPARC hacking, infrastructure
       improvements, previous contributions to the steering committee,
       loop optimizations, etc.
  
!    * Stephane Carrez for 68HC11 and 68HC12 ports.
  
!    * Steve Chamberlain for support for the Renesas SH and H8 processors
       and the PicoJava processor, and for GCJ config fixes.
  
!    * Glenn Chambers for help with the GCJ FAQ.
  
!    * John-Marc Chandonia for various libgcj patches.
  
!    * Denis Chertykov for contributing and maintaining the AVR port, the
       first GCC port for an 8-bit architecture.
  
!    * Kito Cheng for his work on the RISC-V port, including bringing up
       the test suite and maintenance.
  
!    * Scott Christley for his Objective-C contributions.
  
!    * Eric Christopher for his Java porting help and clean-ups.
  
!    * Branko Cibej for more warning contributions.
  
!    * The GNU Classpath project for all of their merged runtime code.
  
!    * Nick Clifton for arm, mcore, fr30, v850, m32r, msp430 rx work,
!      '--help', and other random hacking.
  
!    * Michael Cook for libstdc++ cleanup patches to reduce warnings.
  
!    * R. Kelley Cook for making GCC buildable from a read-only directory
       as well as other miscellaneous build process and documentation
       clean-ups.
  
!    * Ralf Corsepius for SH testing and minor bug fixing.
  
!    * Franc,ois-Xavier Coudert for contributions to GNU Fortran.
  
!    * Stan Cox for care and feeding of the x86 port and lots of behind
       the scenes hacking.
  
!    * Alex Crain provided changes for the 3b1.
  
!    * Ian Dall for major improvements to the NS32k port.
  
!    * Paul Dale for his work to add uClinux platform support to the m68k
       backend.
  
!    * Palmer Dabbelt for his work maintaining the RISC-V port.
  
!    * Dario Dariol contributed the four varieties of sample programs that
       print a copy of their source.
  
!    * Russell Davidson for fstream and stringstream fixes in libstdc++.
  
!    * Bud Davis for work on the G77 and GNU Fortran compilers.
  
!    * Mo DeJong for GCJ and libgcj bug fixes.
  
!    * Jerry DeLisle for contributions to GNU Fortran.
  
!    * DJ Delorie for the DJGPP port, build and libiberty maintenance,
       various bug fixes, and the M32C, MeP, MSP430, and RL78 ports.
  
!    * Arnaud Desitter for helping to debug GNU Fortran.
  
!    * Gabriel Dos Reis for contributions to G++, contributions and
       maintenance of GCC diagnostics infrastructure, libstdc++-v3,
!      including 'valarray<>', 'complex<>', maintaining the numerics
!      library (including that pesky '<limits>' :-) and keeping up-to-date
       anything to do with numbers.
  
!    * Ulrich Drepper for his work on glibc, testing of GCC using glibc,
       ISO C99 support, CFG dumping support, etc., plus support of the C++
       runtime libraries including for all kinds of C interface issues,
!      contributing and maintaining 'complex<>', sanity checking and
       disbursement, configuration architecture, libio maintenance, and
       early math work.
  
!    * Robert J. Dubner for his work on the COBOL front end, mating the
       parser output to the GENERIC tree.
  
!    * Franc,ois Dumont for his work on libstdc++-v3, especially
!      maintaining and improving 'debug-mode' and associative and
       unordered containers.
  
!    * Zdenek Dvorak for a new loop unroller and various fixes.
  
!    * Michael Eager for his work on the Xilinx MicroBlaze port.
  
!    * Richard Earnshaw for his ongoing work with the ARM.
  
!    * David Edelsohn for his direction via the steering committee,
       ongoing work with the RS6000/PowerPC port, help cleaning up Haifa
       loop changes, doing the entire AIX port of libstdc++ with his bare
       hands, and for ensuring GCC properly keeps working on AIX.
  
!    * Kevin Ediger for the floating point formatting of num_put::do_put
       in libstdc++.
  
!    * Phil Edwards for libstdc++ work including configuration hackery,
       documentation maintainer, chief breaker of the web pages, the
       occasional iostream bug fix, and work on shared library symbol
       versioning.
  
!    * Paul Eggert for random hacking all over GCC.
  
!    * Mark Elbrecht for various DJGPP improvements, and for libstdc++
       configuration support for locales and fstream-related fixes.
  
!    * Vadim Egorov for libstdc++ fixes in strings, streambufs, and
       iostreams.
  
!    * Christian Ehrhardt for dealing with bug reports.
  
!    * Ben Elliston for his work to move the Objective-C runtime into its
       own subdirectory and for his work on autoconf.
  
!    * Revital Eres for work on the PowerPC 750CL port.
  
!    * Marc Espie for OpenBSD support.
  
!    * Doug Evans for much of the global optimization framework, arc,
       m32r, and SPARC work.
  
!    * Christopher Faylor for his work on the Cygwin port and for caring
       and feeding the gcc.gnu.org box and saving its users tons of spam.
  
!    * Fred Fish for BeOS support and Ada fixes.
  
!    * Ivan Fontes Garcia for the Portuguese translation of the GCJ FAQ.
  
!    * Peter Gerwinski for various bug fixes and the Pascal front end.
  
!    * Kaveh R. Ghazi for his direction via the steering committee,
!      amazing work to make '-W -Wall -W* -Werror' useful, and testing GCC
       on a plethora of platforms.  Kaveh extends his gratitude to the
       CAIP Center at Rutgers University for providing him with computing
       resources to work on Free Software from the late 1980s to 2010.
  
!    * John Gilmore for a donation to the FSF earmarked improving GNU
       Java.
  
!    * Judy Goldberg for c++ contributions.
  
!    * Torbjorn Granlund for various fixes and the c-torture testsuite,
       multiply- and divide-by-constant optimization, improved long long
       support, improved leaf function register allocation, and his
       direction via the steering committee.
  
!    * Jonny Grant for improvements to 'collect2's' '--help'
       documentation.
  
!    * Anthony Green for his '-Os' contributions, the moxie port, and Java
       front end work.
  
!    * Stu Grossman for gdb hacking, allowing GCJ developers to debug Java
       code.
  
!    * Michael K. Gschwind contributed the port to the PDP-11.
  
!    * Ron Guilmette implemented the 'protoize' and 'unprotoize' tools,
       the support for DWARF 1 symbolic debugging information, and much of
       the support for System V Release 4.  He has also worked heavily on
       the Intel 386 and 860 support.
  
!    * Sumanth Gundapaneni for contributing the CR16 port.
  
!    * Mostafa Hagog for Swing Modulo Scheduling (SMS) and post reload
       GCSE.
  
!    * Bruno Haible for improvements in the runtime overhead for EH, new
       warnings and assorted bug fixes.
  
!    * Andrew Haley for his amazing Java compiler and library efforts.
  
!    * Chris Hanson assisted in making GCC work on HP-UX for the 9000
       series 300.
  
!    * Michael Hayes for various thankless work he's done trying to get
       the c30/c40 ports functional.  Lots of loop and unroll improvements
       and fixes.
  
!    * Dara Hazeghi for wading through myriads of target-specific bug
       reports.
  
!    * Kate Hedstrom for staking the G77 folks with an initial testsuite.
  
!    * Richard Henderson for his ongoing SPARC, alpha, ia32, and ia64
       work, loop opts, and generally fixing lots of old problems we've
       ignored for years, flow rewrite and lots of further stuff,
       including reviewing tons of patches.
  
!    * Aldy Hernandez for working on the PowerPC port, SIMD support, and
       various fixes.
  
!    * Nobuyuki Hikichi of Software Research Associates, Tokyo,
       contributed the support for the Sony NEWS machine.
  
!    * Kazu Hirata for caring and feeding the Renesas H8/300 port and
       various fixes.
  
!    * Katherine Holcomb for work on GNU Fortran.
  
!    * Manfred Hollstein for his ongoing work to keep the m88k alive, lots
       of testing and bug fixing, particularly of GCC configury code.
  
!    * Steve Holmgren for MachTen patches.
  
!    * Mat Hostetter for work on the TILE-Gx and TILEPro ports.
  
!    * Jan Hubicka for his x86 port improvements.
  
!    * Falk Hueffner for working on C and optimization bug reports.
  
!    * Bernardo Innocenti for his m68k work, including merging of ColdFire
       improvements and uClinux support.
  
!    * Christian Iseli for various bug fixes.
  
!    * Kamil Iskra for general m68k hacking.
  
!    * Lee Iverson for random fixes and MIPS testing.
  
!    * Balaji V. Iyer for Cilk+ development and merging.
  
!    * Andreas Jaeger for testing and benchmarking of GCC and various bug
       fixes.
  
!    * Martin Jambor for his work on inter-procedural optimizations, the
       switch conversion pass, and scalar replacement of aggregates.
  
!    * Jakub Jelinek for his SPARC work and sibling call optimizations as
       well as lots of bug fixes and test cases, and for improving the
       Java build system.
  
!    * Janis Johnson for ia64 testing and fixes, her quality improvement
       sidetracks, and web page maintenance.
  
!    * Kean Johnston for SCO OpenServer support and various fixes.
  
!    * Tim Josling for the sample language treelang based originally on
       Richard Kenner's "toy" language.
  
!    * Nicolai Josuttis for additional libstdc++ documentation.
  
!    * Klaus Kaempf for his ongoing work to make alpha-vms a viable
       target.
  
!    * Steven G. Kargl for work on GNU Fortran.
  
!    * David Kashtan of SRI adapted GCC to VMS.
  
!    * Ryszard Kabatek for many, many libstdc++ bug fixes and
       optimizations of strings, especially member functions, and for
       auto_ptr fixes.
  
!    * Geoffrey Keating for his ongoing work to make the PPC work for
       GNU/Linux and his automatic regression tester.
  
!    * Brendan Kehoe for his ongoing work with G++ and for a lot of early
       work in just about every part of libstdc++.
  
!    * Oliver M. Kellogg of Deutsche Aerospace contributed the port to the
       MIL-STD-1750A.
  
!    * Richard Kenner of the New York University Ultracomputer Research
       Laboratory wrote the machine descriptions for the AMD 29000, the
       DEC Alpha, the IBM RT PC, and the IBM RS/6000 as well as the
       support for instruction attributes.  He also made changes to better
--- 71437,71824 ----
  out or some of your contributions are not listed.  Please keep this list
  in alphabetical order.
  
!    â€¢ Analog Devices helped implement the support for complex data types
       and iterators.
  
!    â€¢ John David Anglin for threading-related fixes and improvements to
       libstdc++-v3, and the HP-UX port.
  
!    â€¢ James van Artsdalen wrote the code that makes efficient use of the
       Intel 80387 register stack.
  
!    â€¢ Abramo and Roberto Bagnara for the SysV68 Motorola 3300 Delta
       Series port.
  
!    â€¢ Alasdair Baird for various bug fixes.
  
!    â€¢ Giovanni Bajo for analyzing lots of complicated C++ problem
       reports.
  
!    â€¢ Peter Barada for his work to improve code generation for new
       ColdFire cores.
  
!    â€¢ Gerald Baumgartner added the signature extension to the C++ front
       end.
  
!    â€¢ Godmar Back for his Java improvements and encouragement.
  
!    â€¢ Scott Bambrough for help porting the Java compiler.
  
!    â€¢ Wolfgang Bangerth for processing tons of bug reports.
  
!    â€¢ Jon Beniston for his Microsoft Windows port of Java and port to
       Lattice Mico32.
  
!    â€¢ Daniel Berlin for better DWARF 2 support, faster/better
       optimizations, improved alias analysis, plus migrating GCC to
       Bugzilla.
  
!    â€¢ Geoff Berry for his Java object serialization work and various
       patches.
  
!    â€¢ Richard Biener for his ongoing middle-end contributions and bug
       fixes and for release management.
  
!    â€¢ David Binderman for testing GCC trunk against Fedora Rawhide and
       csmith.
  
!    â€¢ Laurynas Biveinis for memory management work and DJGPP port fixes.
  
!    â€¢ Uros Bizjak for the implementation of x87 math built-in functions
       and for various middle end and i386 back end improvements and bug
       fixes.
  
!    â€¢ Eric Blake for helping to make GCJ and libgcj conform to the
       specifications.
  
!    â€¢ Janne Blomqvist for contributions to GNU Fortran.
  
!    â€¢ Hans-J. Boehm for his garbage collector, IA-64 libffi port, and
       other Java work.
  
!    â€¢ Segher Boessenkool for helping maintain the PowerPC port and the
       instruction combiner plus various contributions to the middle end.
  
!    â€¢ Neil Booth for work on cpplib, lang hooks, debug hooks and other
       miscellaneous clean-ups.
  
!    â€¢ Steven Bosscher for integrating the GNU Fortran front end into GCC
       and for contributing to the tree-ssa branch.
  
!    â€¢ Eric Botcazou for fixing middle- and backend bugs left and right.
  
!    â€¢ Per Bothner for his direction via the steering committee and
       various improvements to the infrastructure for supporting new
       languages.  Chill front end implementation.  Initial
       implementations of cpplib, fix-header, config.guess, libio, and
       past C++ library (libg++) maintainer.  Dreaming up, designing and
       implementing much of GCJ.
  
!    â€¢ Devon Bowen helped port GCC to the Tahoe.
  
!    â€¢ Don Bowman for mips-vxworks contributions.
  
!    â€¢ James Bowman for the FT32 port.
  
!    â€¢ Dave Brolley for work on cpplib and Chill.
  
!    â€¢ Paul Brook for work on the ARM architecture and maintaining GNU
       Fortran.
  
!    â€¢ Robert Brown implemented the support for Encore 32000 systems.
  
!    â€¢ Christian Bruel for improvements to local store elimination.
  
!    â€¢ Herman A.J. ten Brugge for various fixes.
  
!    â€¢ Joerg Brunsmann for Java compiler hacking and help with the GCJ
       FAQ.
  
!    â€¢ Joe Buck for his direction via the steering committee from its
       creation to 2013.
  
!    â€¢ Iain Buclaw for the D frontend.
  
!    â€¢ Craig Burley for leadership of the G77 Fortran effort.
  
!    â€¢ Tobias Burnus for contributions to GNU Fortran.
  
!    â€¢ Stephan Buys for contributing Doxygen notes for libstdc++.
  
!    â€¢ Paolo Carlini for libstdc++ work: lots of efficiency improvements
       to the C++ strings, streambufs and formatted I/O, hard detective
       work on the frustrating localization issues, and keeping up with
       the problem reports.
  
!    â€¢ John Carr for his alias work, SPARC hacking, infrastructure
       improvements, previous contributions to the steering committee,
       loop optimizations, etc.
  
!    â€¢ Stephane Carrez for 68HC11 and 68HC12 ports.
  
!    â€¢ Steve Chamberlain for support for the Renesas SH and H8 processors
       and the PicoJava processor, and for GCJ config fixes.
  
!    â€¢ Glenn Chambers for help with the GCJ FAQ.
  
!    â€¢ John-Marc Chandonia for various libgcj patches.
  
!    â€¢ Denis Chertykov for contributing and maintaining the AVR port, the
       first GCC port for an 8-bit architecture.
  
!    â€¢ Kito Cheng for his work on the RISC-V port, including bringing up
       the test suite and maintenance.
  
!    â€¢ Scott Christley for his Objective-C contributions.
  
!    â€¢ Eric Christopher for his Java porting help and clean-ups.
  
!    â€¢ Branko Cibej for more warning contributions.
  
!    â€¢ The GNU Classpath project for all of their merged runtime code.
  
!    â€¢ Nick Clifton for arm, mcore, fr30, v850, m32r, msp430 rx work,
!      â€˜--helpâ€™, and other random hacking.
  
!    â€¢ Michael Cook for libstdc++ cleanup patches to reduce warnings.
  
!    â€¢ R. Kelley Cook for making GCC buildable from a read-only directory
       as well as other miscellaneous build process and documentation
       clean-ups.
  
!    â€¢ Ralf Corsepius for SH testing and minor bug fixing.
  
!    â€¢ FranÃ§ois-Xavier Coudert for contributions to GNU Fortran.
  
!    â€¢ Stan Cox for care and feeding of the x86 port and lots of behind
       the scenes hacking.
  
!    â€¢ Alex Crain provided changes for the 3b1.
  
!    â€¢ Ian Dall for major improvements to the NS32k port.
  
!    â€¢ Paul Dale for his work to add uClinux platform support to the m68k
       backend.
  
!    â€¢ Palmer Dabbelt for his work maintaining the RISC-V port.
  
!    â€¢ Dario Dariol contributed the four varieties of sample programs that
       print a copy of their source.
  
!    â€¢ Russell Davidson for fstream and stringstream fixes in libstdc++.
  
!    â€¢ Bud Davis for work on the G77 and GNU Fortran compilers.
  
!    â€¢ Mo DeJong for GCJ and libgcj bug fixes.
  
!    â€¢ Jerry DeLisle for contributions to GNU Fortran.
  
!    â€¢ DJ Delorie for the DJGPP port, build and libiberty maintenance,
       various bug fixes, and the M32C, MeP, MSP430, and RL78 ports.
  
!    â€¢ Arnaud Desitter for helping to debug GNU Fortran.
  
!    â€¢ Gabriel Dos Reis for contributions to G++, contributions and
       maintenance of GCC diagnostics infrastructure, libstdc++-v3,
!      including â€˜valarray<>â€™, â€˜complex<>â€™, maintaining the numerics
!      library (including that pesky â€˜<limits>â€™ :-) and keeping up-to-date
       anything to do with numbers.
  
!    â€¢ Ulrich Drepper for his work on glibc, testing of GCC using glibc,
       ISO C99 support, CFG dumping support, etc., plus support of the C++
       runtime libraries including for all kinds of C interface issues,
!      contributing and maintaining â€˜complex<>â€™, sanity checking and
       disbursement, configuration architecture, libio maintenance, and
       early math work.
  
!    â€¢ Robert J. Dubner for his work on the COBOL front end, mating the
       parser output to the GENERIC tree.
  
!    â€¢ FranÃ§ois Dumont for his work on libstdc++-v3, especially
!      maintaining and improving â€˜debug-modeâ€™ and associative and
       unordered containers.
  
!    â€¢ Zdenek Dvorak for a new loop unroller and various fixes.
  
!    â€¢ Michael Eager for his work on the Xilinx MicroBlaze port.
  
!    â€¢ Richard Earnshaw for his ongoing work with the ARM.
  
!    â€¢ David Edelsohn for his direction via the steering committee,
       ongoing work with the RS6000/PowerPC port, help cleaning up Haifa
       loop changes, doing the entire AIX port of libstdc++ with his bare
       hands, and for ensuring GCC properly keeps working on AIX.
  
!    â€¢ Kevin Ediger for the floating point formatting of num_put::do_put
       in libstdc++.
  
!    â€¢ Phil Edwards for libstdc++ work including configuration hackery,
       documentation maintainer, chief breaker of the web pages, the
       occasional iostream bug fix, and work on shared library symbol
       versioning.
  
!    â€¢ Paul Eggert for random hacking all over GCC.
  
!    â€¢ Mark Elbrecht for various DJGPP improvements, and for libstdc++
       configuration support for locales and fstream-related fixes.
  
!    â€¢ Vadim Egorov for libstdc++ fixes in strings, streambufs, and
       iostreams.
  
!    â€¢ Christian Ehrhardt for dealing with bug reports.
  
!    â€¢ Ben Elliston for his work to move the Objective-C runtime into its
       own subdirectory and for his work on autoconf.
  
!    â€¢ Revital Eres for work on the PowerPC 750CL port.
  
!    â€¢ Marc Espie for OpenBSD support.
  
!    â€¢ Doug Evans for much of the global optimization framework, arc,
       m32r, and SPARC work.
  
!    â€¢ Christopher Faylor for his work on the Cygwin port and for caring
       and feeding the gcc.gnu.org box and saving its users tons of spam.
  
!    â€¢ Fred Fish for BeOS support and Ada fixes.
  
!    â€¢ Ivan Fontes Garcia for the Portuguese translation of the GCJ FAQ.
  
!    â€¢ Peter Gerwinski for various bug fixes and the Pascal front end.
  
!    â€¢ Kaveh R. Ghazi for his direction via the steering committee,
!      amazing work to make â€˜-W -Wall -W* -Werrorâ€™ useful, and testing GCC
       on a plethora of platforms.  Kaveh extends his gratitude to the
       CAIP Center at Rutgers University for providing him with computing
       resources to work on Free Software from the late 1980s to 2010.
  
!    â€¢ John Gilmore for a donation to the FSF earmarked improving GNU
       Java.
  
!    â€¢ Judy Goldberg for c++ contributions.
  
!    â€¢ Torbjorn Granlund for various fixes and the c-torture testsuite,
       multiply- and divide-by-constant optimization, improved long long
       support, improved leaf function register allocation, and his
       direction via the steering committee.
  
!    â€¢ Jonny Grant for improvements to â€˜collect2'sâ€™ â€˜--helpâ€™
       documentation.
  
!    â€¢ Anthony Green for his â€˜-Osâ€™ contributions, the moxie port, and Java
       front end work.
  
!    â€¢ Stu Grossman for gdb hacking, allowing GCJ developers to debug Java
       code.
  
!    â€¢ Michael K. Gschwind contributed the port to the PDP-11.
  
!    â€¢ Ron Guilmette implemented the â€˜protoizeâ€™ and â€˜unprotoizeâ€™ tools,
       the support for DWARF 1 symbolic debugging information, and much of
       the support for System V Release 4.  He has also worked heavily on
       the Intel 386 and 860 support.
  
!    â€¢ Sumanth Gundapaneni for contributing the CR16 port.
  
!    â€¢ Mostafa Hagog for Swing Modulo Scheduling (SMS) and post reload
       GCSE.
  
!    â€¢ Bruno Haible for improvements in the runtime overhead for EH, new
       warnings and assorted bug fixes.
  
!    â€¢ Andrew Haley for his amazing Java compiler and library efforts.
  
!    â€¢ Chris Hanson assisted in making GCC work on HP-UX for the 9000
       series 300.
  
!    â€¢ Michael Hayes for various thankless work he's done trying to get
       the c30/c40 ports functional.  Lots of loop and unroll improvements
       and fixes.
  
!    â€¢ Dara Hazeghi for wading through myriads of target-specific bug
       reports.
  
!    â€¢ Kate Hedstrom for staking the G77 folks with an initial testsuite.
  
!    â€¢ Richard Henderson for his ongoing SPARC, alpha, ia32, and ia64
       work, loop opts, and generally fixing lots of old problems we've
       ignored for years, flow rewrite and lots of further stuff,
       including reviewing tons of patches.
  
!    â€¢ Aldy Hernandez for working on the PowerPC port, SIMD support, and
       various fixes.
  
!    â€¢ Nobuyuki Hikichi of Software Research Associates, Tokyo,
       contributed the support for the Sony NEWS machine.
  
!    â€¢ Kazu Hirata for caring and feeding the Renesas H8/300 port and
       various fixes.
  
!    â€¢ Katherine Holcomb for work on GNU Fortran.
  
!    â€¢ Manfred Hollstein for his ongoing work to keep the m88k alive, lots
       of testing and bug fixing, particularly of GCC configury code.
  
!    â€¢ Steve Holmgren for MachTen patches.
  
!    â€¢ Mat Hostetter for work on the TILE-Gx and TILEPro ports.
  
!    â€¢ Jan Hubicka for his x86 port improvements.
  
!    â€¢ Falk Hueffner for working on C and optimization bug reports.
  
!    â€¢ Bernardo Innocenti for his m68k work, including merging of ColdFire
       improvements and uClinux support.
  
!    â€¢ Christian Iseli for various bug fixes.
  
!    â€¢ Kamil Iskra for general m68k hacking.
  
!    â€¢ Lee Iverson for random fixes and MIPS testing.
  
!    â€¢ Balaji V. Iyer for Cilk+ development and merging.
  
!    â€¢ Andreas Jaeger for testing and benchmarking of GCC and various bug
       fixes.
  
!    â€¢ Martin Jambor for his work on inter-procedural optimizations, the
       switch conversion pass, and scalar replacement of aggregates.
  
!    â€¢ Jakub Jelinek for his SPARC work and sibling call optimizations as
       well as lots of bug fixes and test cases, and for improving the
       Java build system.
  
!    â€¢ Janis Johnson for ia64 testing and fixes, her quality improvement
       sidetracks, and web page maintenance.
  
!    â€¢ Kean Johnston for SCO OpenServer support and various fixes.
  
!    â€¢ Tim Josling for the sample language treelang based originally on
       Richard Kenner's "toy" language.
  
!    â€¢ Nicolai Josuttis for additional libstdc++ documentation.
  
!    â€¢ Klaus Kaempf for his ongoing work to make alpha-vms a viable
       target.
  
!    â€¢ Steven G. Kargl for work on GNU Fortran.
  
!    â€¢ David Kashtan of SRI adapted GCC to VMS.
  
!    â€¢ Ryszard Kabatek for many, many libstdc++ bug fixes and
       optimizations of strings, especially member functions, and for
       auto_ptr fixes.
  
!    â€¢ Geoffrey Keating for his ongoing work to make the PPC work for
       GNU/Linux and his automatic regression tester.
  
!    â€¢ Brendan Kehoe for his ongoing work with G++ and for a lot of early
       work in just about every part of libstdc++.
  
!    â€¢ Oliver M. Kellogg of Deutsche Aerospace contributed the port to the
       MIL-STD-1750A.
  
!    â€¢ Richard Kenner of the New York University Ultracomputer Research
       Laboratory wrote the machine descriptions for the AMD 29000, the
       DEC Alpha, the IBM RT PC, and the IBM RS/6000 as well as the
       support for instruction attributes.  He also made changes to better
*************** in alphabetical order.
*** 71820,72740 ****
       Richard Kenner was also the head maintainer of GCC for several
       years.
  
!    * Mumit Khan for various contributions to the Cygwin and Mingw32
       ports and maintaining binary releases for Microsoft Windows hosts,
       and for massive libstdc++ porting work to Cygwin/Mingw32.
  
!    * Robin Kirkham for cpu32 support.
  
!    * Mark Klein for PA improvements.
  
!    * Thomas Koenig for various bug fixes.
  
!    * Bruce Korb for the new and improved fixincludes code.
  
!    * Benjamin Kosnik for his G++ work and for leading the libstdc++-v3
       effort.
  
!    * Maxim Kuvyrkov for contributions to the instruction scheduler, the
       Android and m68k/Coldfire ports, and optimizations.
  
!    * Charles LaBrec contributed the support for the Integrated Solutions
       68020 system.
  
!    * Asher Langton and Mike Kumbera for contributing Cray pointer
       support to GNU Fortran, and for other GNU Fortran improvements.
  
!    * Jeff Law for his direction via the steering committee, coordinating
       the entire egcs project and GCC 2.95, rolling out snapshots and
       releases, handling merges from GCC2, reviewing tons of patches that
       might have fallen through the cracks else, and random but extensive
       hacking.
  
!    * Walter Lee for work on the TILE-Gx and TILEPro ports.
  
!    * Marc Lehmann for his direction via the steering committee and
       helping with analysis and improvements of x86 performance.
  
!    * Victor Leikehman for work on GNU Fortran.
  
!    * Ted Lemon wrote parts of the RTL reader and printer.
  
!    * Kriang Lerdsuwanakij for C++ improvements including template as
       template parameter support, and many C++ fixes.
  
!    * Warren Levy for tremendous work on libgcj (Java Runtime Library)
       and random work on the Java front end.
  
!    * Alain Lichnewsky ported GCC to the MIPS CPU.
  
!    * Oskar Liljeblad for hacking on AWT and his many Java bug reports
       and patches.
  
!    * Robert Lipe for OpenServer support, new testsuites, testing, etc.
  
!    * Chen Liqin for various S+core related fixes/improvement, and for
       maintaining the S+core port.
  
!    * Martin Liska for his work on identical code folding, the
       sanitizers, HSA, general bug fixing and for running automated
       regression testing of GCC and reporting numerous bugs.
  
!    * Weiwen Liu for testing and various bug fixes.
  
!    * Manuel Lo'pez-Iba'n~ez for improving '-Wconversion' and many other
       diagnostics fixes and improvements.
  
!    * Dave Love for his ongoing work with the Fortran front end and
       runtime libraries.
  
!    * James K. Lowden for his work on the COBOL front end, mainly the
       parser and CDF.
  
!    * Martin von Lo"wis for internal consistency checking infrastructure,
       various C++ improvements including namespace support, and tons of
       assistance with libstdc++/compiler merges.
  
!    * H.J. Lu for his previous contributions to the steering committee,
       many x86 bug reports, prototype patches, and keeping the GNU/Linux
       ports working.
  
!    * Greg McGary for random fixes and (someday) bounded pointers.
  
!    * Andrew MacLeod for his ongoing work in building a real EH system,
       various code generation improvements, work on the global optimizer,
       etc.
  
!    * Vladimir Makarov for hacking some ugly i960 problems, PowerPC
       hacking improvements to compile-time performance, overall knowledge
       and direction in the area of instruction scheduling, design and
       implementation of the automaton based instruction scheduler and
       design and implementation of the integrated and local register
       allocators.
  
!    * David Malcolm for his work on improving GCC diagnostics, JIT,
       self-tests and unit testing.
  
!    * Bob Manson for his behind the scenes work on dejagnu.
  
!    * Jose E. Marchesi for contributing the eBPF backend and his ongoing
       work maintaining it.
  
!    * John Marino for contributing the DragonFly BSD port.
  
!    * Philip Martin for lots of libstdc++ string and vector iterator
       fixes and improvements, and string clean up and testsuites.
  
!    * Dhruv Matani for work on libstdc++ allocators.
  
!    * Michael Matz for his work on dominance tree discovery, the x86-64
       port, link-time optimization framework and general optimization
       improvements.
  
!    * All of the Mauve project contributors for Java test code.
  
!    * Bryce McKinlay for numerous GCJ and libgcj fixes and improvements.
  
!    * Adam Megacz for his work on the Microsoft Windows port of GCJ.
  
!    * Michael Meissner for LRS framework, ia32, m32r, v850, m88k, MIPS,
       powerpc, haifa, ECOFF debug support, and other assorted hacking.
  
!    * Jason Merrill for his direction via the steering committee and
       leading the G++ effort.
  
!    * Martin Michlmayr for testing GCC on several architectures using the
       entire Debian archive.
  
!    * David Miller for his direction via the steering committee, lots of
       SPARC work, improvements in jump.cc and interfacing with the Linux
       kernel developers.
  
!    * Gary Miller ported GCC to Charles River Data Systems machines.
  
!    * Alfred Minarik for libstdc++ string and ios bug fixes, and turning
       the entire libstdc++ testsuite namespace-compatible.
  
!    * Mark Mitchell for his direction via the steering committee,
       mountains of C++ work, load/store hoisting out of loops, alias
!      analysis improvements, ISO C 'restrict' support, and serving as
       release manager from 2000 to 2011.
  
!    * Alan Modra for various GNU/Linux bits and testing.
  
!    * Toon Moene for his direction via the steering committee, Fortran
       maintenance, and his ongoing work to make us make Fortran run fast.
  
!    * Jason Molenda for major help in the care and feeding of all the
       services on the gcc.gnu.org (formerly egcs.cygnus.com)
       machine--mail, web services, ftp services, etc etc.  Doing all this
       work on scrap paper and the backs of envelopes would have been...
       difficult.
  
!    * Catherine Moore for fixing various ugly problems we have sent her
       way, including the haifa bug which was killing the Alpha & PowerPC
       Linux kernels.
  
!    * Mike Moreton for his various Java patches.
  
!    * David Mosberger-Tang for various Alpha improvements, and for the
       initial IA-64 port.
  
!    * Stephen Moshier contributed the floating point emulator that
       assists in cross-compilation and permits support for floating point
       numbers wider than 64 bits and for ISO C99 support.
  
!    * Bill Moyer for his behind the scenes work on various issues.
  
!    * Philippe De Muyter for his work on the m68k port.
  
!    * Joseph S. Myers for his work on the PDP-11 port, format checking
       and ISO C99 support, and continuous emphasis on (and contributions
       to) documentation.
  
!    * Nathan Myers for his work on libstdc++-v3: architecture and
       authorship through the first three snapshots, including
       implementation of locale infrastructure, string, shadow C headers,
       and the initial project documentation (DESIGN, CHECKLIST, and so
       forth).  Later, more work on MT-safe string and shadow headers.
  
!    * Felix Natter for documentation on porting libstdc++.
  
!    * Nathanael Nerode for cleaning up the configuration/build process.
  
!    * NeXT, Inc. donated the front end that supports the Objective-C
       language.
  
!    * Hans-Peter Nilsson for the CRIS and MMIX ports, improvements to the
       search engine setup, various documentation fixes and other small
       fixes.
  
!    * Geoff Noer for his work on getting cygwin native builds working.
  
!    * Vegard Nossum for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    * Diego Novillo for his work on Tree SSA, OpenMP, SPEC performance
       tracking web pages, GIMPLE tuples, and assorted fixes.
  
!    * David O'Brien for the FreeBSD/alpha, FreeBSD/AMD x86-64,
       FreeBSD/ARM, FreeBSD/PowerPC, and FreeBSD/SPARC64 ports and related
       infrastructure improvements.
  
!    * Alexandre Oliva for various build infrastructure improvements,
       scripts and amazing testing work, including keeping libtool issues
       sane and happy.
  
!    * Stefan Olsson for work on mt_alloc.
  
!    * Melissa O'Neill for various NeXT fixes.
  
!    * Rainer Orth for random MIPS work, including improvements to GCC's
       o32 ABI support, improvements to dejagnu's MIPS support, Java
       configuration clean-ups and porting work, and maintaining the IRIX,
       Solaris 2, and Tru64 UNIX ports.
  
!    * Patrick Palka for contributions to the C++ library and front end.
  
!    * Steven Pemberton for his contribution of 'enquire' which allowed
       GCC to determine various properties of the floating point unit and
!      generate 'float.h' in older versions of GCC.
  
!    * Hartmut Penner for work on the s390 port.
  
!    * Paul Petersen wrote the machine description for the Alliant FX/8.
  
!    * Alexandre Petit-Bianco for implementing much of the Java compiler
       and continued Java maintainership.
  
!    * Matthias Pfaller for major improvements to the NS32k port.
  
!    * Gerald Pfeifer for his direction via the steering committee,
       pointing out lots of problems we need to solve, maintenance of the
       web pages, and taking care of documentation maintenance in general.
  
!    * Marek Polacek for his work on the C front end, the sanitizers and
       general bug fixing.
  
!    * Andrew Pinski for processing bug reports by the dozen, maintenance
       of the Objective-C runtime libraries, and many scalar
       optimizations.
  
!    * Ovidiu Predescu for his work on the Objective-C front end and
       runtime libraries.
  
!    * Jerry Quinn for major performance improvements in C++ formatted
       I/O.
  
!    * Ken Raeburn for various improvements to checker, MIPS ports and
       various cleanups in the compiler.
  
!    * Rolf W. Rasmussen for hacking on AWT.
  
!    * David Reese of Sun Microsystems contributed to the Solaris on
       PowerPC port.
  
!    * John Regehr for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    * Volker Reichelt for running automated regression testing of GCC and
       reporting numerous bugs and for keeping up with the problem
       reports.
  
!    * Joern Rennecke for maintaining the sh port, loop, regmove & reload
       hacking and developing and maintaining the Epiphany port.
  
!    * Loren J. Rittle for improvements to libstdc++-v3 including the
       FreeBSD port, threading fixes, thread-related configury changes,
       critical threading documentation, and solutions to really tricky
       I/O problems, as well as keeping GCC properly working on FreeBSD
       and continuous testing.
  
!    * Craig Rodrigues for processing tons of bug reports.
  
!    * Ola Ro"nnerup for work on mt_alloc.
  
!    * Gavin Romig-Koch for lots of behind the scenes MIPS work.
  
!    * David Ronis inspired and encouraged Craig to rewrite the G77
       documentation in texinfo format by contributing a first pass at a
!      translation of the old 'g77-0.5.16/f/DOC' file.
  
!    * Ken Rose for fixes to GCC's delay slot filling code.
  
!    * Ira Rosen for her contributions to the auto-vectorizer.
  
!    * Paul Rubin wrote most of the preprocessor.
  
!    * Pe'tur Runo'lfsson for major performance improvements in C++
       formatted I/O and large file support in C++ filebuf.
  
!    * Chip Salzenberg for libstdc++ patches and improvements to locales,
       traits, Makefiles, libio, libtool hackery, and "long long" support.
  
!    * Juha Sarlin for improvements to the H8 code generator.
  
!    * Greg Satz assisted in making GCC work on HP-UX for the 9000 series
       300.
  
!    * Roger Sayle for improvements to constant folding and GCC's RTL
       optimizers as well as for fixing numerous bugs.
  
!    * Bradley Schatz for his work on the GCJ FAQ.
  
!    * Peter Schauer wrote the code to allow debugging to work on the
       Alpha.
  
!    * William Schelter did most of the work on the Intel 80386 support.
  
!    * Tobias Schlu"ter for work on GNU Fortran.
  
!    * Bernd Schmidt for various code generation improvements and major
       work in the reload pass, serving as release manager for GCC 2.95.3,
       and work on the Blackfin and C6X ports.
  
!    * Peter Schmid for constant testing of libstdc++--especially
       application testing, going above and beyond what was requested for
       the release criteria--and libstdc++ header file tweaks.
  
!    * Jason Schroeder for jcf-dump patches.
  
!    * Andreas Schwab for his work on the m68k port.
  
!    * Lars Segerlund for work on GNU Fortran.
  
!    * Dodji Seketeli for numerous C++ bug fixes and debug info
       improvements.
  
!    * Tim Shen for major work on '<regex>'.
  
!    * Joel Sherrill for his direction via the steering committee, RTEMS
       contributions and RTEMS testing.
  
!    * Nathan Sidwell for many C++ fixes/improvements.
  
!    * Jeffrey Siegal for helping RMS with the original design of GCC,
       some code which handles the parse tree and RTL data structures,
       constant folding and help with the original VAX & m68k ports.
  
!    * Kenny Simpson for prompting libstdc++ fixes due to defect reports
       from the LWG (thereby keeping GCC in line with updates from the
       ISO).
  
!    * Franz Sirl for his ongoing work with making the PPC port stable for
       GNU/Linux.
  
!    * Andrey Slepuhin for assorted AIX hacking.
  
!    * Trevor Smigiel for contributing the SPU port.
  
!    * Christopher Smith did the port for Convex machines.
  
!    * Danny Smith for his major efforts on the Mingw (and Cygwin) ports.
       Retired from GCC maintainership August 2010, having mentored two
       new maintainers into the role.
  
!    * Randy Smith finished the Sun FPA support.
  
!    * Ed Smith-Rowland for his continuous work on libstdc++-v3, special
!      functions, '<random>', and various improvements to C++11 features.
  
!    * Scott Snyder for queue, iterator, istream, and string fixes and
       libstdc++ testsuite entries.  Also for providing the patch to G77
!      to add rudimentary support for 'INTEGER*1', 'INTEGER*2', and
!      'LOGICAL*1'.
  
!    * Zdenek Sojka for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    * Arseny Solokha for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    * Jayant Sonar for contributing the CR16 port.
  
!    * Brad Spencer for contributions to the GLIBCPP_FORCE_NEW technique.
  
!    * Richard Stallman, for writing the original GCC and launching the
       GNU project.
  
!    * Jan Stein of the Chalmers Computer Society provided support for
       Genix, as well as part of the 32000 machine description.
  
!    * Gerhard Steinmetz for running automated regression testing of GCC
       and reporting numerous bugs.
  
!    * Nigel Stephens for various mips16 related fixes/improvements.
  
!    * Jonathan Stone wrote the machine description for the Pyramid
       computer.
  
!    * Graham Stott for various infrastructure improvements.
  
!    * John Stracke for his Java HTTP protocol fixes.
  
!    * Mike Stump for his Elxsi port, G++ contributions over the years and
       more recently his vxworks contributions
  
!    * Jeff Sturm for Java porting help, bug fixes, and encouragement.
  
!    * Zhendong Su for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    * Chengnian Sun for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    * Shigeya Suzuki for this fixes for the bsdi platforms.
  
!    * Ian Lance Taylor for the Go frontend, the initial mips16 and mips64
       support, general configury hacking, fixincludes, etc.
  
!    * Holger Teutsch provided the support for the Clipper CPU.
  
!    * Gary Thomas for his ongoing work to make the PPC work for
       GNU/Linux.
  
!    * Paul Thomas for contributions to GNU Fortran.
  
!    * Philipp Thomas for random bug fixes throughout the compiler
  
!    * Jason Thorpe for thread support in libstdc++ on NetBSD.
  
!    * Kresten Krab Thorup wrote the run time support for the Objective-C
       language and the fantastic Java bytecode interpreter.
  
!    * Michael Tiemann for random bug fixes, the first instruction
       scheduler, initial C++ support, function integration, NS32k, SPARC
       and M88k machine description work, delay slot scheduling.
  
!    * Andreas Tobler for his work porting libgcj to Darwin.
  
!    * Teemu Torma for thread safe exception handling support.
  
!    * Leonard Tower wrote parts of the parser, RTL generator, and RTL
       definitions, and of the VAX machine description.
  
!    * Daniel Towner and Hariharan Sandanagobalane contributed and
       maintain the picoChip port.
  
!    * Tom Tromey for internationalization support and for his many Java
       contributions and libgcj maintainership.
  
!    * Lassi Tuura for improvements to config.guess to determine HP
       processor types.
  
!    * Petter Urkedal for libstdc++ CXXFLAGS, math, and algorithms fixes.
  
!    * Andy Vaught for the design and initial implementation of the GNU
       Fortran front end.
  
!    * Brent Verner for work with the libstdc++ cshadow files and their
       associated configure steps.
  
!    * Todd Vierling for contributions for NetBSD ports.
  
!    * Andrew Waterman for contributing the RISC-V port, as well as
       maintaining it.
  
!    * Jonathan Wakely for contributing to and maintaining libstdc++.
  
!    * Dean Wakerley for converting the install documentation from HTML to
       texinfo in time for GCC 3.0.
  
!    * Krister Walfridsson for random bug fixes.
  
!    * Feng Wang for contributions to GNU Fortran.
  
!    * Stephen M. Webb for time and effort on making libstdc++ shadow
       files work with the tricky Solaris 8+ headers, and for pushing the
       build-time header tree.  Also, for starting and driving the
!      '<regex>' effort.
  
!    * John Wehle for various improvements for the x86 code generator,
       related infrastructure improvements to help x86 code generation,
       value range propagation and other work, WE32k port.
  
!    * Ulrich Weigand for work on the s390 port.
  
!    * Janus Weil for contributions to GNU Fortran.
  
!    * Zack Weinberg for major work on cpplib and various other bug fixes.
  
!    * Matt Welsh for help with Linux Threads support in GCJ.
  
!    * Urban Widmark for help fixing java.io.
  
!    * Mark Wielaard for new Java library code and his work integrating
       with Classpath.
  
!    * Dale Wiles helped port GCC to the Tahoe.
  
!    * Bob Wilson from Tensilica, Inc. for the Xtensa port.
  
!    * Jim Wilson for his direction via the steering committee, tackling
       hard problems in various places that nobody else wanted to work on,
       strength reduction and other loop optimizations.
  
!    * Paul Woegerer and Tal Agmon for the CRX port.
  
!    * Carlo Wood for various fixes.
  
!    * Tom Wood for work on the m88k port.
  
!    * Chung-Ju Wu for his work on the Andes NDS32 port.
  
!    * Canqun Yang for work on GNU Fortran.
  
!    * Masanobu Yuhara of Fujitsu Laboratories implemented the machine
       description for the Tron architecture (specifically, the Gmicro).
  
!    * Kevin Zachmann helped port GCC to the Tahoe.
  
!    * Ayal Zaks for Swing Modulo Scheduling (SMS).
  
!    * Qirun Zhang for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    * Xiaoqiang Zhang for work on GNU Fortran.
  
!    * Gilles Zunino for help porting Java to Irix.
  
   The following people are recognized for their contributions to GNAT,
  the Ada front end of GCC:
!    * Bernard Banner
  
!    * Romain Berrendonner
  
!    * Geert Bosch
  
!    * Emmanuel Briot
  
!    * Joel Brobecker
  
!    * Ben Brosgol
  
!    * Vincent Celier
  
!    * Arnaud Charlet
  
!    * Chien Chieng
  
!    * Cyrille Comar
  
!    * Cyrille Crozes
  
!    * Robert Dewar
  
!    * Gary Dismukes
  
!    * Robert Duff
  
!    * Ed Falis
  
!    * Ramon Fernandez
  
!    * Sam Figueroa
  
!    * Vasiliy Fofanov
  
!    * Michael Friess
  
!    * Franco Gasperoni
  
!    * Ted Giering
  
!    * Matthew Gingell
  
!    * Laurent Guerby
  
!    * Jerome Guitton
  
!    * Olivier Hainque
  
!    * Jerome Hugues
  
!    * Hristian Kirtchev
  
!    * Jerome Lambourg
  
!    * Bruno Leclerc
  
!    * Albert Lee
  
!    * Sean McNeil
  
!    * Javier Miranda
  
!    * Laurent Nana
  
!    * Pascal Obry
  
!    * Dong-Ik Oh
  
!    * Laurent Pautet
  
!    * Brett Porter
  
!    * Thomas Quinot
  
!    * Nicolas Roche
  
!    * Pat Rogers
  
!    * Jose Ruiz
  
!    * Douglas Rupp
  
!    * Sergey Rybin
  
!    * Gail Schenker
  
!    * Ed Schonberg
  
!    * Nicolas Setton
  
!    * Samuel Tardieu
  
   The following people are recognized for their contributions of new
  features, bug reports, testing and integration of classpath/libgcj for
  GCC version 4.1:
!    * Lillian Angel for 'JTree' implementation and lots Free Swing
       additions and bug fixes.
  
!    * Wolfgang Baer for 'GapContent' bug fixes.
  
!    * Anthony Balkissoon for 'JList', Free Swing 1.5 updates and mouse
!      event fixes, lots of Free Swing work including 'JTable' editing.
  
!    * Stuart Ballard for RMI constant fixes.
  
!    * Goffredo Baroncelli for 'HTTPURLConnection' fixes.
  
!    * Gary Benson for 'MessageFormat' fixes.
  
!    * Daniel Bonniot for 'Serialization' fixes.
  
!    * Chris Burdess for lots of gnu.xml and http protocol fixes, 'StAX'
!      and 'DOM xml:id' support.
  
!    * Ka-Hing Cheung for 'TreePath' and 'TreeSelection' fixes.
  
!    * Archie Cobbs for build fixes, VM interface updates,
!      'URLClassLoader' updates.
  
!    * Kelley Cook for build fixes.
  
!    * Martin Cordova for Suggestions for better 'SocketTimeoutException'.
  
!    * David Daney for 'BitSet' bug fixes, 'HttpURLConnection' rewrite and
       improvements.
  
!    * Thomas Fitzsimmons for lots of upgrades to the gtk+ AWT and Cairo
       2D support.  Lots of imageio framework additions, lots of AWT and
       Free Swing bug fixes.
  
!    * Jeroen Frijters for 'ClassLoader' and nio cleanups, serialization
!      fixes, better 'Proxy' support, bug fixes and IKVM integration.
  
!    * Santiago Gala for 'AccessControlContext' fixes.
  
!    * Nicolas Geoffray for 'VMClassLoader' and 'AccessController'
       improvements.
  
!    * David Gilbert for 'basic' and 'metal' icon and plaf support and
       lots of documenting, Lots of Free Swing and metal theme additions.
!      'MetalIconFactory' implementation.
  
!    * Anthony Green for 'MIDI' framework, 'ALSA' and 'DSSI' providers.
  
!    * Andrew Haley for 'Serialization' and 'URLClassLoader' fixes, gcj
       build speedups.
  
!    * Kim Ho for 'JFileChooser' implementation.
  
!    * Andrew John Hughes for 'Locale' and net fixes, URI RFC2986 updates,
!      'Serialization' fixes, 'Properties' XML support and generic branch
       work, VMIntegration guide update.
  
!    * Bastiaan Huisman for 'TimeZone' bug fixing.
  
!    * Andreas Jaeger for mprec updates.
  
!    * Paul Jenner for better '-Werror' support.
  
!    * Ito Kazumitsu for 'NetworkInterface' implementation and updates.
  
!    * Roman Kennke for 'BoxLayout', 'GrayFilter' and 'SplitPane', plus
       bug fixes all over.  Lots of Free Swing work including styled text.
  
!    * Simon Kitching for 'String' cleanups and optimization suggestions.
  
!    * Michael Koch for configuration fixes, 'Locale' updates, bug and
       build fixes.
  
!    * Guilhem Lavaux for configuration, thread and channel fixes and
!      Kaffe integration.  JCL native 'Pointer' updates.  Logger bug
       fixes.
  
!    * David Lichteblau for JCL support library global/local reference
       cleanups.
  
!    * Aaron Luchko for JDWP updates and documentation fixes.
  
!    * Ziga Mahkovec for 'Graphics2D' upgraded to Cairo 0.5 and new regex
       features.
  
!    * Sven de Marothy for BMP imageio support, CSS and 'TextLayout'
!      fixes.  'GtkImage' rewrite, 2D, awt, free swing and date/time fixes
       and implementing the Qt4 peers.
  
!    * Casey Marshall for crypto algorithm fixes, 'FileChannel' lock,
!      'SystemLogger' and 'FileHandler' rotate implementations, NIO
!      'FileChannel.map' support, security and policy updates.
  
!    * Bryce McKinlay for RMI work.
  
!    * Audrius Meskauskas for lots of Free Corba, RMI and HTML work plus
       testing and documenting.
  
!    * Kalle Olavi Niemitalo for build fixes.
  
!    * Rainer Orth for build fixes.
  
!    * Andrew Overholt for 'File' locking fixes.
  
!    * Ingo Proetel for 'Image', 'Logger' and 'URLClassLoader' updates.
  
!    * Olga Rodimina for 'MenuSelectionManager' implementation.
  
!    * Jan Roehrich for 'BasicTreeUI' and 'JTree' fixes.
  
!    * Julian Scheid for documentation updates and gjdoc support.
  
!    * Christian Schlichtherle for zip fixes and cleanups.
  
!    * Robert Schuster for documentation updates and beans fixes,
!      'TreeNode' enumerations and 'ActionCommand' and various fixes, XML
       and URL, AWT and Free Swing bug fixes.
  
!    * Keith Seitz for lots of JDWP work.
  
!    * Christian Thalinger for 64-bit cleanups, Configuration and VM
!      interface fixes and 'CACAO' integration, 'fdlibm' updates.
  
!    * Gael Thomas for 'VMClassLoader' boot packages support suggestions.
  
!    * Andreas Tobler for Darwin and Solaris testing and fixing, 'Qt4'
!      support for Darwin / macOS, 'Graphics2D' support, 'gtk+' updates.
  
!    * Dalibor Topic for better 'DEBUG' support, build cleanups and Kaffe
!      integration.  'Qt4' build infrastructure, 'SHA1PRNG' and
!      'GdkPixbugDecoder' updates.
  
!    * Tom Tromey for Eclipse integration, generics work, lots of bug
       fixes and gcj integration including coordinating The Big Merge.
  
!    * Mark Wielaard for bug fixes, packaging and release management,
!      'Clipboard' implementation, system call interrupts and network
!      timeouts and 'GdkPixpufDecoder' fixes.
  
   In addition to the above, all of which also contributed time and energy
  in testing GCC, we would like to thank the following for their
  contributions to testing:
  
!    * Michael Abd-El-Malek
  
!    * Thomas Arend
  
!    * Bonzo Armstrong
  
!    * Steven Ashe
  
!    * Chris Baldwin
  
!    * David Billinghurst
  
!    * Jim Blandy
  
!    * Stephane Bortzmeyer
  
!    * Horst von Brand
  
!    * Frank Braun
  
!    * Rodney Brown
  
!    * Sidney Cadot
  
!    * Bradford Castalia
  
!    * Robert Clark
  
!    * Jonathan Corbet
  
!    * Ralph Doncaster
  
!    * Richard Emberson
  
!    * Levente Farkas
  
!    * Graham Fawcett
  
!    * Mark Fernyhough
  
!    * Robert A. French
  
!    * Jo"rgen Freyh
  
!    * Mark K. Gardner
  
!    * Charles-Antoine Gauthier
  
!    * Yung Shing Gene
  
!    * David Gilbert
  
!    * Simon Gornall
  
!    * Fred Gray
  
!    * John Griffin
  
!    * Patrik Hagglund
  
!    * Phil Hargett
  
!    * Amancio Hasty
  
!    * Takafumi Hayashi
  
!    * Bryan W. Headley
  
!    * Kevin B. Hendricks
  
!    * Joep Jansen
  
!    * Christian Joensson
  
!    * Michel Kern
  
!    * David Kidd
  
!    * Tobias Kuipers
  
!    * Anand Krishnaswamy
  
!    * A. O. V. Le Blanc
  
!    * llewelly
  
!    * Damon Love
  
!    * Brad Lucier
  
!    * Matthias Klose
  
!    * Martin Knoblauch
  
!    * Rick Lutowski
  
!    * Jesse Macnish
  
!    * Stefan Morrell
  
!    * Anon A. Mous
  
!    * Matthias Mueller
  
!    * Pekka Nikander
  
!    * Rick Niles
  
!    * Jon Olson
  
!    * Magnus Persson
  
!    * Chris Pollard
  
!    * Richard Polton
  
!    * Derk Reefman
  
!    * David Rees
  
!    * Paul Reilly
  
!    * Tom Reilly
  
!    * Torsten Rueger
  
!    * Danny Sadinoff
  
!    * Marc Schifer
  
!    * Erik Schnetter
  
!    * Wayne K. Schroll
  
!    * David Schuler
  
!    * Vin Shelton
  
!    * Tim Souder
  
!    * Adam Sulmicki
  
!    * Bill Thorson
  
!    * George Talbot
  
!    * Pedro A. M. Vazquez
  
!    * Gregory Warnes
  
!    * Ian Watson
  
!    * David E. Young
  
!    * And many others
  
   And finally we'd like to thank everyone who uses the compiler, provides
  feedback and generally reminds us why we're doing this work in the first
--- 71829,72749 ----
       Richard Kenner was also the head maintainer of GCC for several
       years.
  
!    â€¢ Mumit Khan for various contributions to the Cygwin and Mingw32
       ports and maintaining binary releases for Microsoft Windows hosts,
       and for massive libstdc++ porting work to Cygwin/Mingw32.
  
!    â€¢ Robin Kirkham for cpu32 support.
  
!    â€¢ Mark Klein for PA improvements.
  
!    â€¢ Thomas Koenig for various bug fixes.
  
!    â€¢ Bruce Korb for the new and improved fixincludes code.
  
!    â€¢ Benjamin Kosnik for his G++ work and for leading the libstdc++-v3
       effort.
  
!    â€¢ Maxim Kuvyrkov for contributions to the instruction scheduler, the
       Android and m68k/Coldfire ports, and optimizations.
  
!    â€¢ Charles LaBrec contributed the support for the Integrated Solutions
       68020 system.
  
!    â€¢ Asher Langton and Mike Kumbera for contributing Cray pointer
       support to GNU Fortran, and for other GNU Fortran improvements.
  
!    â€¢ Jeff Law for his direction via the steering committee, coordinating
       the entire egcs project and GCC 2.95, rolling out snapshots and
       releases, handling merges from GCC2, reviewing tons of patches that
       might have fallen through the cracks else, and random but extensive
       hacking.
  
!    â€¢ Walter Lee for work on the TILE-Gx and TILEPro ports.
  
!    â€¢ Marc Lehmann for his direction via the steering committee and
       helping with analysis and improvements of x86 performance.
  
!    â€¢ Victor Leikehman for work on GNU Fortran.
  
!    â€¢ Ted Lemon wrote parts of the RTL reader and printer.
  
!    â€¢ Kriang Lerdsuwanakij for C++ improvements including template as
       template parameter support, and many C++ fixes.
  
!    â€¢ Warren Levy for tremendous work on libgcj (Java Runtime Library)
       and random work on the Java front end.
  
!    â€¢ Alain Lichnewsky ported GCC to the MIPS CPU.
  
!    â€¢ Oskar Liljeblad for hacking on AWT and his many Java bug reports
       and patches.
  
!    â€¢ Robert Lipe for OpenServer support, new testsuites, testing, etc.
  
!    â€¢ Chen Liqin for various S+core related fixes/improvement, and for
       maintaining the S+core port.
  
!    â€¢ Martin Liska for his work on identical code folding, the
       sanitizers, HSA, general bug fixing and for running automated
       regression testing of GCC and reporting numerous bugs.
  
!    â€¢ Weiwen Liu for testing and various bug fixes.
  
!    â€¢ Manuel LÃ³pez-IbÃ¡Ã±ez for improving â€˜-Wconversionâ€™ and many other
       diagnostics fixes and improvements.
  
!    â€¢ Dave Love for his ongoing work with the Fortran front end and
       runtime libraries.
  
!    â€¢ James K. Lowden for his work on the COBOL front end, mainly the
       parser and CDF.
  
!    â€¢ Martin von LÃ¶wis for internal consistency checking infrastructure,
       various C++ improvements including namespace support, and tons of
       assistance with libstdc++/compiler merges.
  
!    â€¢ H.J. Lu for his previous contributions to the steering committee,
       many x86 bug reports, prototype patches, and keeping the GNU/Linux
       ports working.
  
!    â€¢ Greg McGary for random fixes and (someday) bounded pointers.
  
!    â€¢ Andrew MacLeod for his ongoing work in building a real EH system,
       various code generation improvements, work on the global optimizer,
       etc.
  
!    â€¢ Vladimir Makarov for hacking some ugly i960 problems, PowerPC
       hacking improvements to compile-time performance, overall knowledge
       and direction in the area of instruction scheduling, design and
       implementation of the automaton based instruction scheduler and
       design and implementation of the integrated and local register
       allocators.
  
!    â€¢ David Malcolm for his work on improving GCC diagnostics, JIT,
       self-tests and unit testing.
  
!    â€¢ Bob Manson for his behind the scenes work on dejagnu.
  
!    â€¢ Jose E. Marchesi for contributing the eBPF backend and his ongoing
       work maintaining it.
  
!    â€¢ John Marino for contributing the DragonFly BSD port.
  
!    â€¢ Philip Martin for lots of libstdc++ string and vector iterator
       fixes and improvements, and string clean up and testsuites.
  
!    â€¢ Dhruv Matani for work on libstdc++ allocators.
  
!    â€¢ Michael Matz for his work on dominance tree discovery, the x86-64
       port, link-time optimization framework and general optimization
       improvements.
  
!    â€¢ All of the Mauve project contributors for Java test code.
  
!    â€¢ Bryce McKinlay for numerous GCJ and libgcj fixes and improvements.
  
!    â€¢ Adam Megacz for his work on the Microsoft Windows port of GCJ.
  
!    â€¢ Michael Meissner for LRS framework, ia32, m32r, v850, m88k, MIPS,
       powerpc, haifa, ECOFF debug support, and other assorted hacking.
  
!    â€¢ Jason Merrill for his direction via the steering committee and
       leading the G++ effort.
  
!    â€¢ Martin Michlmayr for testing GCC on several architectures using the
       entire Debian archive.
  
!    â€¢ David Miller for his direction via the steering committee, lots of
       SPARC work, improvements in jump.cc and interfacing with the Linux
       kernel developers.
  
!    â€¢ Gary Miller ported GCC to Charles River Data Systems machines.
  
!    â€¢ Alfred Minarik for libstdc++ string and ios bug fixes, and turning
       the entire libstdc++ testsuite namespace-compatible.
  
!    â€¢ Mark Mitchell for his direction via the steering committee,
       mountains of C++ work, load/store hoisting out of loops, alias
!      analysis improvements, ISO C â€˜restrictâ€™ support, and serving as
       release manager from 2000 to 2011.
  
!    â€¢ Alan Modra for various GNU/Linux bits and testing.
  
!    â€¢ Toon Moene for his direction via the steering committee, Fortran
       maintenance, and his ongoing work to make us make Fortran run fast.
  
!    â€¢ Jason Molenda for major help in the care and feeding of all the
       services on the gcc.gnu.org (formerly egcs.cygnus.com)
       machine--mail, web services, ftp services, etc etc.  Doing all this
       work on scrap paper and the backs of envelopes would have been...
       difficult.
  
!    â€¢ Catherine Moore for fixing various ugly problems we have sent her
       way, including the haifa bug which was killing the Alpha & PowerPC
       Linux kernels.
  
!    â€¢ Mike Moreton for his various Java patches.
  
!    â€¢ David Mosberger-Tang for various Alpha improvements, and for the
       initial IA-64 port.
  
!    â€¢ Stephen Moshier contributed the floating point emulator that
       assists in cross-compilation and permits support for floating point
       numbers wider than 64 bits and for ISO C99 support.
  
!    â€¢ Bill Moyer for his behind the scenes work on various issues.
  
!    â€¢ Philippe De Muyter for his work on the m68k port.
  
!    â€¢ Joseph S. Myers for his work on the PDP-11 port, format checking
       and ISO C99 support, and continuous emphasis on (and contributions
       to) documentation.
  
!    â€¢ Nathan Myers for his work on libstdc++-v3: architecture and
       authorship through the first three snapshots, including
       implementation of locale infrastructure, string, shadow C headers,
       and the initial project documentation (DESIGN, CHECKLIST, and so
       forth).  Later, more work on MT-safe string and shadow headers.
  
!    â€¢ Felix Natter for documentation on porting libstdc++.
  
!    â€¢ Nathanael Nerode for cleaning up the configuration/build process.
  
!    â€¢ NeXT, Inc. donated the front end that supports the Objective-C
       language.
  
!    â€¢ Hans-Peter Nilsson for the CRIS and MMIX ports, improvements to the
       search engine setup, various documentation fixes and other small
       fixes.
  
!    â€¢ Geoff Noer for his work on getting cygwin native builds working.
  
!    â€¢ Vegard Nossum for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    â€¢ Diego Novillo for his work on Tree SSA, OpenMP, SPEC performance
       tracking web pages, GIMPLE tuples, and assorted fixes.
  
!    â€¢ David O'Brien for the FreeBSD/alpha, FreeBSD/AMD x86-64,
       FreeBSD/ARM, FreeBSD/PowerPC, and FreeBSD/SPARC64 ports and related
       infrastructure improvements.
  
!    â€¢ Alexandre Oliva for various build infrastructure improvements,
       scripts and amazing testing work, including keeping libtool issues
       sane and happy.
  
!    â€¢ Stefan Olsson for work on mt_alloc.
  
!    â€¢ Melissa O'Neill for various NeXT fixes.
  
!    â€¢ Rainer Orth for random MIPS work, including improvements to GCC's
       o32 ABI support, improvements to dejagnu's MIPS support, Java
       configuration clean-ups and porting work, and maintaining the IRIX,
       Solaris 2, and Tru64 UNIX ports.
  
!    â€¢ Patrick Palka for contributions to the C++ library and front end.
  
!    â€¢ Steven Pemberton for his contribution of â€˜enquireâ€™ which allowed
       GCC to determine various properties of the floating point unit and
!      generate â€˜float.hâ€™ in older versions of GCC.
  
!    â€¢ Hartmut Penner for work on the s390 port.
  
!    â€¢ Paul Petersen wrote the machine description for the Alliant FX/8.
  
!    â€¢ Alexandre Petit-Bianco for implementing much of the Java compiler
       and continued Java maintainership.
  
!    â€¢ Matthias Pfaller for major improvements to the NS32k port.
  
!    â€¢ Gerald Pfeifer for his direction via the steering committee,
       pointing out lots of problems we need to solve, maintenance of the
       web pages, and taking care of documentation maintenance in general.
  
!    â€¢ Marek Polacek for his work on the C front end, the sanitizers and
       general bug fixing.
  
!    â€¢ Andrew Pinski for processing bug reports by the dozen, maintenance
       of the Objective-C runtime libraries, and many scalar
       optimizations.
  
!    â€¢ Ovidiu Predescu for his work on the Objective-C front end and
       runtime libraries.
  
!    â€¢ Jerry Quinn for major performance improvements in C++ formatted
       I/O.
  
!    â€¢ Ken Raeburn for various improvements to checker, MIPS ports and
       various cleanups in the compiler.
  
!    â€¢ Rolf W. Rasmussen for hacking on AWT.
  
!    â€¢ David Reese of Sun Microsystems contributed to the Solaris on
       PowerPC port.
  
!    â€¢ John Regehr for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    â€¢ Volker Reichelt for running automated regression testing of GCC and
       reporting numerous bugs and for keeping up with the problem
       reports.
  
!    â€¢ Joern Rennecke for maintaining the sh port, loop, regmove & reload
       hacking and developing and maintaining the Epiphany port.
  
!    â€¢ Loren J. Rittle for improvements to libstdc++-v3 including the
       FreeBSD port, threading fixes, thread-related configury changes,
       critical threading documentation, and solutions to really tricky
       I/O problems, as well as keeping GCC properly working on FreeBSD
       and continuous testing.
  
!    â€¢ Craig Rodrigues for processing tons of bug reports.
  
!    â€¢ Ola RÃ¶nnerup for work on mt_alloc.
  
!    â€¢ Gavin Romig-Koch for lots of behind the scenes MIPS work.
  
!    â€¢ David Ronis inspired and encouraged Craig to rewrite the G77
       documentation in texinfo format by contributing a first pass at a
!      translation of the old â€˜g77-0.5.16/f/DOCâ€™ file.
  
!    â€¢ Ken Rose for fixes to GCC's delay slot filling code.
  
!    â€¢ Ira Rosen for her contributions to the auto-vectorizer.
  
!    â€¢ Paul Rubin wrote most of the preprocessor.
  
!    â€¢ PÃ©tur RunÃ³lfsson for major performance improvements in C++
       formatted I/O and large file support in C++ filebuf.
  
!    â€¢ Chip Salzenberg for libstdc++ patches and improvements to locales,
       traits, Makefiles, libio, libtool hackery, and "long long" support.
  
!    â€¢ Juha Sarlin for improvements to the H8 code generator.
  
!    â€¢ Greg Satz assisted in making GCC work on HP-UX for the 9000 series
       300.
  
!    â€¢ Roger Sayle for improvements to constant folding and GCC's RTL
       optimizers as well as for fixing numerous bugs.
  
!    â€¢ Bradley Schatz for his work on the GCJ FAQ.
  
!    â€¢ Peter Schauer wrote the code to allow debugging to work on the
       Alpha.
  
!    â€¢ William Schelter did most of the work on the Intel 80386 support.
  
!    â€¢ Tobias SchlÃ¼ter for work on GNU Fortran.
  
!    â€¢ Bernd Schmidt for various code generation improvements and major
       work in the reload pass, serving as release manager for GCC 2.95.3,
       and work on the Blackfin and C6X ports.
  
!    â€¢ Peter Schmid for constant testing of libstdc++--especially
       application testing, going above and beyond what was requested for
       the release criteria--and libstdc++ header file tweaks.
  
!    â€¢ Jason Schroeder for jcf-dump patches.
  
!    â€¢ Andreas Schwab for his work on the m68k port.
  
!    â€¢ Lars Segerlund for work on GNU Fortran.
  
!    â€¢ Dodji Seketeli for numerous C++ bug fixes and debug info
       improvements.
  
!    â€¢ Tim Shen for major work on â€˜<regex>â€™.
  
!    â€¢ Joel Sherrill for his direction via the steering committee, RTEMS
       contributions and RTEMS testing.
  
!    â€¢ Nathan Sidwell for many C++ fixes/improvements.
  
!    â€¢ Jeffrey Siegal for helping RMS with the original design of GCC,
       some code which handles the parse tree and RTL data structures,
       constant folding and help with the original VAX & m68k ports.
  
!    â€¢ Kenny Simpson for prompting libstdc++ fixes due to defect reports
       from the LWG (thereby keeping GCC in line with updates from the
       ISO).
  
!    â€¢ Franz Sirl for his ongoing work with making the PPC port stable for
       GNU/Linux.
  
!    â€¢ Andrey Slepuhin for assorted AIX hacking.
  
!    â€¢ Trevor Smigiel for contributing the SPU port.
  
!    â€¢ Christopher Smith did the port for Convex machines.
  
!    â€¢ Danny Smith for his major efforts on the Mingw (and Cygwin) ports.
       Retired from GCC maintainership August 2010, having mentored two
       new maintainers into the role.
  
!    â€¢ Randy Smith finished the Sun FPA support.
  
!    â€¢ Ed Smith-Rowland for his continuous work on libstdc++-v3, special
!      functions, â€˜<random>â€™, and various improvements to C++11 features.
  
!    â€¢ Scott Snyder for queue, iterator, istream, and string fixes and
       libstdc++ testsuite entries.  Also for providing the patch to G77
!      to add rudimentary support for â€˜INTEGER*1â€™, â€˜INTEGER*2â€™, and
!      â€˜LOGICAL*1â€™.
  
!    â€¢ Zdenek Sojka for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    â€¢ Arseny Solokha for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    â€¢ Jayant Sonar for contributing the CR16 port.
  
!    â€¢ Brad Spencer for contributions to the GLIBCPP_FORCE_NEW technique.
  
!    â€¢ Richard Stallman, for writing the original GCC and launching the
       GNU project.
  
!    â€¢ Jan Stein of the Chalmers Computer Society provided support for
       Genix, as well as part of the 32000 machine description.
  
!    â€¢ Gerhard Steinmetz for running automated regression testing of GCC
       and reporting numerous bugs.
  
!    â€¢ Nigel Stephens for various mips16 related fixes/improvements.
  
!    â€¢ Jonathan Stone wrote the machine description for the Pyramid
       computer.
  
!    â€¢ Graham Stott for various infrastructure improvements.
  
!    â€¢ John Stracke for his Java HTTP protocol fixes.
  
!    â€¢ Mike Stump for his Elxsi port, G++ contributions over the years and
       more recently his vxworks contributions
  
!    â€¢ Jeff Sturm for Java porting help, bug fixes, and encouragement.
  
!    â€¢ Zhendong Su for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    â€¢ Chengnian Sun for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    â€¢ Shigeya Suzuki for this fixes for the bsdi platforms.
  
!    â€¢ Ian Lance Taylor for the Go frontend, the initial mips16 and mips64
       support, general configury hacking, fixincludes, etc.
  
!    â€¢ Holger Teutsch provided the support for the Clipper CPU.
  
!    â€¢ Gary Thomas for his ongoing work to make the PPC work for
       GNU/Linux.
  
!    â€¢ Paul Thomas for contributions to GNU Fortran.
  
!    â€¢ Philipp Thomas for random bug fixes throughout the compiler
  
!    â€¢ Jason Thorpe for thread support in libstdc++ on NetBSD.
  
!    â€¢ Kresten Krab Thorup wrote the run time support for the Objective-C
       language and the fantastic Java bytecode interpreter.
  
!    â€¢ Michael Tiemann for random bug fixes, the first instruction
       scheduler, initial C++ support, function integration, NS32k, SPARC
       and M88k machine description work, delay slot scheduling.
  
!    â€¢ Andreas Tobler for his work porting libgcj to Darwin.
  
!    â€¢ Teemu Torma for thread safe exception handling support.
  
!    â€¢ Leonard Tower wrote parts of the parser, RTL generator, and RTL
       definitions, and of the VAX machine description.
  
!    â€¢ Daniel Towner and Hariharan Sandanagobalane contributed and
       maintain the picoChip port.
  
!    â€¢ Tom Tromey for internationalization support and for his many Java
       contributions and libgcj maintainership.
  
!    â€¢ Lassi Tuura for improvements to config.guess to determine HP
       processor types.
  
!    â€¢ Petter Urkedal for libstdc++ CXXFLAGS, math, and algorithms fixes.
  
!    â€¢ Andy Vaught for the design and initial implementation of the GNU
       Fortran front end.
  
!    â€¢ Brent Verner for work with the libstdc++ cshadow files and their
       associated configure steps.
  
!    â€¢ Todd Vierling for contributions for NetBSD ports.
  
!    â€¢ Andrew Waterman for contributing the RISC-V port, as well as
       maintaining it.
  
!    â€¢ Jonathan Wakely for contributing to and maintaining libstdc++.
  
!    â€¢ Dean Wakerley for converting the install documentation from HTML to
       texinfo in time for GCC 3.0.
  
!    â€¢ Krister Walfridsson for random bug fixes.
  
!    â€¢ Feng Wang for contributions to GNU Fortran.
  
!    â€¢ Stephen M. Webb for time and effort on making libstdc++ shadow
       files work with the tricky Solaris 8+ headers, and for pushing the
       build-time header tree.  Also, for starting and driving the
!      â€˜<regex>â€™ effort.
  
!    â€¢ John Wehle for various improvements for the x86 code generator,
       related infrastructure improvements to help x86 code generation,
       value range propagation and other work, WE32k port.
  
!    â€¢ Ulrich Weigand for work on the s390 port.
  
!    â€¢ Janus Weil for contributions to GNU Fortran.
  
!    â€¢ Zack Weinberg for major work on cpplib and various other bug fixes.
  
!    â€¢ Matt Welsh for help with Linux Threads support in GCJ.
  
!    â€¢ Urban Widmark for help fixing java.io.
  
!    â€¢ Mark Wielaard for new Java library code and his work integrating
       with Classpath.
  
!    â€¢ Dale Wiles helped port GCC to the Tahoe.
  
!    â€¢ Bob Wilson from Tensilica, Inc. for the Xtensa port.
  
!    â€¢ Jim Wilson for his direction via the steering committee, tackling
       hard problems in various places that nobody else wanted to work on,
       strength reduction and other loop optimizations.
  
!    â€¢ Paul Woegerer and Tal Agmon for the CRX port.
  
!    â€¢ Carlo Wood for various fixes.
  
!    â€¢ Tom Wood for work on the m88k port.
  
!    â€¢ Chung-Ju Wu for his work on the Andes NDS32 port.
  
!    â€¢ Canqun Yang for work on GNU Fortran.
  
!    â€¢ Masanobu Yuhara of Fujitsu Laboratories implemented the machine
       description for the Tron architecture (specifically, the Gmicro).
  
!    â€¢ Kevin Zachmann helped port GCC to the Tahoe.
  
!    â€¢ Ayal Zaks for Swing Modulo Scheduling (SMS).
  
!    â€¢ Qirun Zhang for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    â€¢ Xiaoqiang Zhang for work on GNU Fortran.
  
!    â€¢ Gilles Zunino for help porting Java to Irix.
  
   The following people are recognized for their contributions to GNAT,
  the Ada front end of GCC:
!    â€¢ Bernard Banner
  
!    â€¢ Romain Berrendonner
  
!    â€¢ Geert Bosch
  
!    â€¢ Emmanuel Briot
  
!    â€¢ Joel Brobecker
  
!    â€¢ Ben Brosgol
  
!    â€¢ Vincent Celier
  
!    â€¢ Arnaud Charlet
  
!    â€¢ Chien Chieng
  
!    â€¢ Cyrille Comar
  
!    â€¢ Cyrille Crozes
  
!    â€¢ Robert Dewar
  
!    â€¢ Gary Dismukes
  
!    â€¢ Robert Duff
  
!    â€¢ Ed Falis
  
!    â€¢ Ramon Fernandez
  
!    â€¢ Sam Figueroa
  
!    â€¢ Vasiliy Fofanov
  
!    â€¢ Michael Friess
  
!    â€¢ Franco Gasperoni
  
!    â€¢ Ted Giering
  
!    â€¢ Matthew Gingell
  
!    â€¢ Laurent Guerby
  
!    â€¢ Jerome Guitton
  
!    â€¢ Olivier Hainque
  
!    â€¢ Jerome Hugues
  
!    â€¢ Hristian Kirtchev
  
!    â€¢ Jerome Lambourg
  
!    â€¢ Bruno Leclerc
  
!    â€¢ Albert Lee
  
!    â€¢ Sean McNeil
  
!    â€¢ Javier Miranda
  
!    â€¢ Laurent Nana
  
!    â€¢ Pascal Obry
  
!    â€¢ Dong-Ik Oh
  
!    â€¢ Laurent Pautet
  
!    â€¢ Brett Porter
  
!    â€¢ Thomas Quinot
  
!    â€¢ Nicolas Roche
  
!    â€¢ Pat Rogers
  
!    â€¢ Jose Ruiz
  
!    â€¢ Douglas Rupp
  
!    â€¢ Sergey Rybin
  
!    â€¢ Gail Schenker
  
!    â€¢ Ed Schonberg
  
!    â€¢ Nicolas Setton
  
!    â€¢ Samuel Tardieu
  
   The following people are recognized for their contributions of new
  features, bug reports, testing and integration of classpath/libgcj for
  GCC version 4.1:
!    â€¢ Lillian Angel for â€˜JTreeâ€™ implementation and lots Free Swing
       additions and bug fixes.
  
!    â€¢ Wolfgang Baer for â€˜GapContentâ€™ bug fixes.
  
!    â€¢ Anthony Balkissoon for â€˜JListâ€™, Free Swing 1.5 updates and mouse
!      event fixes, lots of Free Swing work including â€˜JTableâ€™ editing.
  
!    â€¢ Stuart Ballard for RMI constant fixes.
  
!    â€¢ Goffredo Baroncelli for â€˜HTTPURLConnectionâ€™ fixes.
  
!    â€¢ Gary Benson for â€˜MessageFormatâ€™ fixes.
  
!    â€¢ Daniel Bonniot for â€˜Serializationâ€™ fixes.
  
!    â€¢ Chris Burdess for lots of gnu.xml and http protocol fixes, â€˜StAXâ€™
!      and â€˜DOM xml:idâ€™ support.
  
!    â€¢ Ka-Hing Cheung for â€˜TreePathâ€™ and â€˜TreeSelectionâ€™ fixes.
  
!    â€¢ Archie Cobbs for build fixes, VM interface updates,
!      â€˜URLClassLoaderâ€™ updates.
  
!    â€¢ Kelley Cook for build fixes.
  
!    â€¢ Martin Cordova for Suggestions for better â€˜SocketTimeoutExceptionâ€™.
  
!    â€¢ David Daney for â€˜BitSetâ€™ bug fixes, â€˜HttpURLConnectionâ€™ rewrite and
       improvements.
  
!    â€¢ Thomas Fitzsimmons for lots of upgrades to the gtk+ AWT and Cairo
       2D support.  Lots of imageio framework additions, lots of AWT and
       Free Swing bug fixes.
  
!    â€¢ Jeroen Frijters for â€˜ClassLoaderâ€™ and nio cleanups, serialization
!      fixes, better â€˜Proxyâ€™ support, bug fixes and IKVM integration.
  
!    â€¢ Santiago Gala for â€˜AccessControlContextâ€™ fixes.
  
!    â€¢ Nicolas Geoffray for â€˜VMClassLoaderâ€™ and â€˜AccessControllerâ€™
       improvements.
  
!    â€¢ David Gilbert for â€˜basicâ€™ and â€˜metalâ€™ icon and plaf support and
       lots of documenting, Lots of Free Swing and metal theme additions.
!      â€˜MetalIconFactoryâ€™ implementation.
  
!    â€¢ Anthony Green for â€˜MIDIâ€™ framework, â€˜ALSAâ€™ and â€˜DSSIâ€™ providers.
  
!    â€¢ Andrew Haley for â€˜Serializationâ€™ and â€˜URLClassLoaderâ€™ fixes, gcj
       build speedups.
  
!    â€¢ Kim Ho for â€˜JFileChooserâ€™ implementation.
  
!    â€¢ Andrew John Hughes for â€˜Localeâ€™ and net fixes, URI RFC2986 updates,
!      â€˜Serializationâ€™ fixes, â€˜Propertiesâ€™ XML support and generic branch
       work, VMIntegration guide update.
  
!    â€¢ Bastiaan Huisman for â€˜TimeZoneâ€™ bug fixing.
  
!    â€¢ Andreas Jaeger for mprec updates.
  
!    â€¢ Paul Jenner for better â€˜-Werrorâ€™ support.
  
!    â€¢ Ito Kazumitsu for â€˜NetworkInterfaceâ€™ implementation and updates.
  
!    â€¢ Roman Kennke for â€˜BoxLayoutâ€™, â€˜GrayFilterâ€™ and â€˜SplitPaneâ€™, plus
       bug fixes all over.  Lots of Free Swing work including styled text.
  
!    â€¢ Simon Kitching for â€˜Stringâ€™ cleanups and optimization suggestions.
  
!    â€¢ Michael Koch for configuration fixes, â€˜Localeâ€™ updates, bug and
       build fixes.
  
!    â€¢ Guilhem Lavaux for configuration, thread and channel fixes and
!      Kaffe integration.  JCL native â€˜Pointerâ€™ updates.  Logger bug
       fixes.
  
!    â€¢ David Lichteblau for JCL support library global/local reference
       cleanups.
  
!    â€¢ Aaron Luchko for JDWP updates and documentation fixes.
  
!    â€¢ Ziga Mahkovec for â€˜Graphics2Dâ€™ upgraded to Cairo 0.5 and new regex
       features.
  
!    â€¢ Sven de Marothy for BMP imageio support, CSS and â€˜TextLayoutâ€™
!      fixes.  â€˜GtkImageâ€™ rewrite, 2D, awt, free swing and date/time fixes
       and implementing the Qt4 peers.
  
!    â€¢ Casey Marshall for crypto algorithm fixes, â€˜FileChannelâ€™ lock,
!      â€˜SystemLoggerâ€™ and â€˜FileHandlerâ€™ rotate implementations, NIO
!      â€˜FileChannel.mapâ€™ support, security and policy updates.
  
!    â€¢ Bryce McKinlay for RMI work.
  
!    â€¢ Audrius Meskauskas for lots of Free Corba, RMI and HTML work plus
       testing and documenting.
  
!    â€¢ Kalle Olavi Niemitalo for build fixes.
  
!    â€¢ Rainer Orth for build fixes.
  
!    â€¢ Andrew Overholt for â€˜Fileâ€™ locking fixes.
  
!    â€¢ Ingo Proetel for â€˜Imageâ€™, â€˜Loggerâ€™ and â€˜URLClassLoaderâ€™ updates.
  
!    â€¢ Olga Rodimina for â€˜MenuSelectionManagerâ€™ implementation.
  
!    â€¢ Jan Roehrich for â€˜BasicTreeUIâ€™ and â€˜JTreeâ€™ fixes.
  
!    â€¢ Julian Scheid for documentation updates and gjdoc support.
  
!    â€¢ Christian Schlichtherle for zip fixes and cleanups.
  
!    â€¢ Robert Schuster for documentation updates and beans fixes,
!      â€˜TreeNodeâ€™ enumerations and â€˜ActionCommandâ€™ and various fixes, XML
       and URL, AWT and Free Swing bug fixes.
  
!    â€¢ Keith Seitz for lots of JDWP work.
  
!    â€¢ Christian Thalinger for 64-bit cleanups, Configuration and VM
!      interface fixes and â€˜CACAOâ€™ integration, â€˜fdlibmâ€™ updates.
  
!    â€¢ Gael Thomas for â€˜VMClassLoaderâ€™ boot packages support suggestions.
  
!    â€¢ Andreas Tobler for Darwin and Solaris testing and fixing, â€˜Qt4â€™
!      support for Darwin / macOS, â€˜Graphics2Dâ€™ support, â€˜gtk+â€™ updates.
  
!    â€¢ Dalibor Topic for better â€˜DEBUGâ€™ support, build cleanups and Kaffe
!      integration.  â€˜Qt4â€™ build infrastructure, â€˜SHA1PRNGâ€™ and
!      â€˜GdkPixbugDecoderâ€™ updates.
  
!    â€¢ Tom Tromey for Eclipse integration, generics work, lots of bug
       fixes and gcj integration including coordinating The Big Merge.
  
!    â€¢ Mark Wielaard for bug fixes, packaging and release management,
!      â€˜Clipboardâ€™ implementation, system call interrupts and network
!      timeouts and â€˜GdkPixpufDecoderâ€™ fixes.
  
   In addition to the above, all of which also contributed time and energy
  in testing GCC, we would like to thank the following for their
  contributions to testing:
  
!    â€¢ Michael Abd-El-Malek
  
!    â€¢ Thomas Arend
  
!    â€¢ Bonzo Armstrong
  
!    â€¢ Steven Ashe
  
!    â€¢ Chris Baldwin
  
!    â€¢ David Billinghurst
  
!    â€¢ Jim Blandy
  
!    â€¢ Stephane Bortzmeyer
  
!    â€¢ Horst von Brand
  
!    â€¢ Frank Braun
  
!    â€¢ Rodney Brown
  
!    â€¢ Sidney Cadot
  
!    â€¢ Bradford Castalia
  
!    â€¢ Robert Clark
  
!    â€¢ Jonathan Corbet
  
!    â€¢ Ralph Doncaster
  
!    â€¢ Richard Emberson
  
!    â€¢ Levente Farkas
  
!    â€¢ Graham Fawcett
  
!    â€¢ Mark Fernyhough
  
!    â€¢ Robert A. French
  
!    â€¢ JÃ¶rgen Freyh
  
!    â€¢ Mark K. Gardner
  
!    â€¢ Charles-Antoine Gauthier
  
!    â€¢ Yung Shing Gene
  
!    â€¢ David Gilbert
  
!    â€¢ Simon Gornall
  
!    â€¢ Fred Gray
  
!    â€¢ John Griffin
  
!    â€¢ Patrik Hagglund
  
!    â€¢ Phil Hargett
  
!    â€¢ Amancio Hasty
  
!    â€¢ Takafumi Hayashi
  
!    â€¢ Bryan W. Headley
  
!    â€¢ Kevin B. Hendricks
  
!    â€¢ Joep Jansen
  
!    â€¢ Christian Joensson
  
!    â€¢ Michel Kern
  
!    â€¢ David Kidd
  
!    â€¢ Tobias Kuipers
  
!    â€¢ Anand Krishnaswamy
  
!    â€¢ A. O. V. Le Blanc
  
!    â€¢ llewelly
  
!    â€¢ Damon Love
  
!    â€¢ Brad Lucier
  
!    â€¢ Matthias Klose
  
!    â€¢ Martin Knoblauch
  
!    â€¢ Rick Lutowski
  
!    â€¢ Jesse Macnish
  
!    â€¢ Stefan Morrell
  
!    â€¢ Anon A. Mous
  
!    â€¢ Matthias Mueller
  
!    â€¢ Pekka Nikander
  
!    â€¢ Rick Niles
  
!    â€¢ Jon Olson
  
!    â€¢ Magnus Persson
  
!    â€¢ Chris Pollard
  
!    â€¢ Richard Polton
  
!    â€¢ Derk Reefman
  
!    â€¢ David Rees
  
!    â€¢ Paul Reilly
  
!    â€¢ Tom Reilly
  
!    â€¢ Torsten Rueger
  
!    â€¢ Danny Sadinoff
  
!    â€¢ Marc Schifer
  
!    â€¢ Erik Schnetter
  
!    â€¢ Wayne K. Schroll
  
!    â€¢ David Schuler
  
!    â€¢ Vin Shelton
  
!    â€¢ Tim Souder
  
!    â€¢ Adam Sulmicki
  
!    â€¢ Bill Thorson
  
!    â€¢ George Talbot
  
!    â€¢ Pedro A. M. Vazquez
  
!    â€¢ Gregory Warnes
  
!    â€¢ Ian Watson
  
!    â€¢ David E. Young
  
!    â€¢ And many others
  
   And finally we'd like to thank everyone who uses the compiler, provides
  feedback and generally reminds us why we're doing this work in the first
*************** File: gcc.info,  Node: Option Index,  Ne
*** 72757,72778 ****
  A.1 Option Index
  ================
  
! GCC's command line options are indexed here without any initial '-' or
! '--'.  Where an option has both positive and negative forms (such as
! '-fOPTION' and '-fno-OPTION'), relevant entries in the manual are
  indexed under the most appropriate form; it may sometimes be useful to
  look up both forms.
  
  [index]
  * Menu:
  
- * ###:                                   Overall Options.    (line  484)
  * -Wmusttail-local-addr:                 Warning Options.    (line  741)
  * -Wno-maybe-musttail-local-addr:        Warning Options.    (line  746)
  * A:                                     Preprocessor Options.
                                                               (line  348)
- * allowable_client:                      Darwin Options.     (line  204)
  * all_load:                              Darwin Options.     (line  117)
  * analyzer:                              Static Analyzer Options.
                                                               (line    6)
  * ansi:                                  Standards.          (line   13)
--- 72766,72787 ----
  A.1 Option Index
  ================
  
! GCC's command line options are indexed here without any initial â€˜-â€™ or
! â€˜--â€™.  Where an option has both positive and negative forms (such as
! â€˜-fOPTIONâ€™ and â€˜-fno-OPTIONâ€™), relevant entries in the manual are
  indexed under the most appropriate form; it may sometimes be useful to
  look up both forms.
  
  [index]
  * Menu:
  
  * -Wmusttail-local-addr:                 Warning Options.    (line  741)
  * -Wno-maybe-musttail-local-addr:        Warning Options.    (line  746)
+ * ###:                                   Overall Options.    (line  488)
  * A:                                     Preprocessor Options.
                                                               (line  348)
  * all_load:                              Darwin Options.     (line  117)
+ * allowable_client:                      Darwin Options.     (line  204)
  * analyzer:                              Static Analyzer Options.
                                                               (line    6)
  * ansi:                                  Standards.          (line   13)
*************** look up both forms.
*** 72789,72795 ****
  * Bstatic:                               VxWorks Options.    (line   26)
  * bundle:                                Darwin Options.     (line  130)
  * bundle_loader:                         Darwin Options.     (line  134)
! * c:                                     Overall Options.    (line  177)
  * C:                                     Preprocessor Options.
                                                               (line  357)
  * c <1>:                                 Link Options.       (line   17)
--- 72798,72804 ----
  * Bstatic:                               VxWorks Options.    (line   26)
  * bundle:                                Darwin Options.     (line  130)
  * bundle_loader:                         Darwin Options.     (line  134)
! * c:                                     Overall Options.    (line  181)
  * C:                                     Preprocessor Options.
                                                               (line  357)
  * c <1>:                                 Link Options.       (line   17)
*************** look up both forms.
*** 72833,72841 ****
                                                               (line 1030)
  * dump-analyzer-infinite-loop:           Static Analyzer Options.
                                                               (line 1036)
! * dumpbase:                              Overall Options.    (line  264)
! * dumpbase-ext:                          Overall Options.    (line  337)
! * dumpdir:                               Overall Options.    (line  365)
  * dumpfullversion:                       Developer Options.  (line 1129)
  * dumpmachine:                           Developer Options.  (line 1117)
  * dumpspecs:                             Developer Options.  (line 1134)
--- 72842,72850 ----
                                                               (line 1030)
  * dump-analyzer-infinite-loop:           Static Analyzer Options.
                                                               (line 1036)
! * dumpbase:                              Overall Options.    (line  268)
! * dumpbase-ext:                          Overall Options.    (line  341)
! * dumpdir:                               Overall Options.    (line  369)
  * dumpfullversion:                       Developer Options.  (line 1129)
  * dumpmachine:                           Developer Options.  (line 1117)
  * dumpspecs:                             Developer Options.  (line 1134)
*************** look up both forms.
*** 72845,72857 ****
  * dylinker_install_name:                 Darwin Options.     (line  204)
  * dynamic:                               Darwin Options.     (line  204)
  * dynamiclib:                            Darwin Options.     (line  138)
! * E:                                     Overall Options.    (line  198)
  * E <1>:                                 Link Options.       (line   17)
  * e:                                     Link Options.       (line  173)
! * EB:                                    ARC Options.        (line  599)
  * EB <1>:                                C-SKY Options.      (line   27)
  * EB <2>:                                MIPS Options.       (line    6)
! * EL:                                    ARC Options.        (line  608)
  * EL <1>:                                C-SKY Options.      (line   27)
  * EL <2>:                                MIPS Options.       (line    9)
  * embed-dir:                             Directory Options.  (line  112)
--- 72854,72866 ----
  * dylinker_install_name:                 Darwin Options.     (line  204)
  * dynamic:                               Darwin Options.     (line  204)
  * dynamiclib:                            Darwin Options.     (line  138)
! * E:                                     Overall Options.    (line  202)
  * E <1>:                                 Link Options.       (line   17)
  * e:                                     Link Options.       (line  173)
! * EB:                                    ARC Options.        (line  597)
  * EB <1>:                                C-SKY Options.      (line   27)
  * EB <2>:                                MIPS Options.       (line    6)
! * EL:                                    ARC Options.        (line  604)
  * EL <1>:                                C-SKY Options.      (line   27)
  * EL <2>:                                MIPS Options.       (line    9)
  * embed-dir:                             Directory Options.  (line  112)
*************** look up both forms.
*** 72864,72870 ****
                                                               (line   23)
  * faccess-control:                       C++ Dialect Options.
                                                               (line  123)
! * fada-spec-parent:                      Overall Options.    (line  679)
  * faggressive-loop-optimizations:        Optimize Options.   (line  604)
  * falign-functions:                      Optimize Options.   (line 1831)
  * falign-jumps:                          Optimize Options.   (line 1917)
--- 72873,72879 ----
                                                               (line   23)
  * faccess-control:                       C++ Dialect Options.
                                                               (line  123)
! * fada-spec-parent:                      Overall Options.    (line  683)
  * faggressive-loop-optimizations:        Optimize Options.   (line  604)
  * falign-functions:                      Optimize Options.   (line 1831)
  * falign-jumps:                          Optimize Options.   (line 1917)
*************** look up both forms.
*** 72918,72924 ****
  * fcall-used:                            Code Gen Options.   (line  442)
  * fcaller-saves:                         Optimize Options.   (line  987)
  * fcallgraph-info:                       Developer Options.  (line   32)
! * fcanon-prefix-map:                     Overall Options.    (line  653)
  * fcf-protection:                        Instrumentation Options.
                                                               (line  803)
  * fchar8_t:                              C++ Dialect Options.
--- 72927,72933 ----
  * fcall-used:                            Code Gen Options.   (line  442)
  * fcaller-saves:                         Optimize Options.   (line  987)
  * fcallgraph-info:                       Developer Options.  (line   32)
! * fcanon-prefix-map:                     Overall Options.    (line  657)
  * fcf-protection:                        Instrumentation Options.
                                                               (line  803)
  * fchar8_t:                              C++ Dialect Options.
*************** look up both forms.
*** 73055,73061 ****
  * fdollars-in-identifiers <1>:           Interoperation.     (line  141)
  * fdpic:                                 SH Options.         (line  387)
  * fdse:                                  Optimize Options.   (line  636)
! * fdump-ada-spec:                        Overall Options.    (line  674)
  * fdump-analyzer:                        Static Analyzer Options.
                                                               (line  995)
  * fdump-analyzer-callgraph:              Static Analyzer Options.
--- 73064,73070 ----
  * fdollars-in-identifiers <1>:           Interoperation.     (line  141)
  * fdpic:                                 SH Options.         (line  387)
  * fdse:                                  Optimize Options.   (line  636)
! * fdump-ada-spec:                        Overall Options.    (line  678)
  * fdump-analyzer:                        Static Analyzer Options.
                                                               (line  995)
  * fdump-analyzer-callgraph:              Static Analyzer Options.
*************** look up both forms.
*** 73077,73083 ****
  * fdump-debug:                           Developer Options.  (line  266)
  * fdump-earlydebug:                      Developer Options.  (line  270)
  * fdump-final-insns:                     Developer Options.  (line  855)
! * fdump-go-spec:                         Overall Options.    (line  683)
  * fdump-ipa:                             Developer Options.  (line  295)
  * fdump-ipa-clones:                      Developer Options.  (line  334)
  * fdump-lang:                            Developer Options.  (line  405)
--- 73086,73092 ----
  * fdump-debug:                           Developer Options.  (line  266)
  * fdump-earlydebug:                      Developer Options.  (line  270)
  * fdump-final-insns:                     Developer Options.  (line  855)
! * fdump-go-spec:                         Overall Options.    (line  687)
  * fdump-ipa:                             Developer Options.  (line  295)
  * fdump-ipa-clones:                      Developer Options.  (line  334)
  * fdump-lang:                            Developer Options.  (line  405)
*************** look up both forms.
*** 73184,73190 ****
                                                               (line  366)
  * ffast-math:                            Optimize Options.   (line 2485)
  * ffat-lto-objects:                      Optimize Options.   (line 2305)
! * ffile-prefix-map:                      Overall Options.    (line  642)
  * ffinite-loops:                         Optimize Options.   (line 1303)
  * ffinite-math-only:                     Optimize Options.   (line 2562)
  * ffix-and-continue:                     Darwin Options.     (line  109)
--- 73193,73199 ----
                                                               (line  366)
  * ffast-math:                            Optimize Options.   (line 2485)
  * ffat-lto-objects:                      Optimize Options.   (line 2305)
! * ffile-prefix-map:                      Overall Options.    (line  646)
  * ffinite-loops:                         Optimize Options.   (line 1303)
  * ffinite-math-only:                     Optimize Options.   (line 2562)
  * ffix-and-continue:                     Darwin Options.     (line  109)
*************** look up both forms.
*** 73312,73319 ****
                                                               (line  716)
  * flang-info-module-cmi:                 C++ Dialect Options.
                                                               (line  726)
- * flate-combine-instructions:            Optimize Options.   (line 1163)
  * flat_namespace:                        Darwin Options.     (line  204)
  * flax-vector-conversions:               C Dialect Options.  (line  322)
  * fleading-underscore:                   Code Gen Options.   (line  486)
  * flifetime-dse:                         Optimize Options.   (line  725)
--- 73321,73328 ----
                                                               (line  716)
  * flang-info-module-cmi:                 C++ Dialect Options.
                                                               (line  726)
  * flat_namespace:                        Darwin Options.     (line  204)
+ * flate-combine-instructions:            Optimize Options.   (line 1163)
  * flax-vector-conversions:               C Dialect Options.  (line  322)
  * fleading-underscore:                   Code Gen Options.   (line  486)
  * flifetime-dse:                         Optimize Options.   (line  725)
*************** look up both forms.
*** 73621,73628 ****
  * fplan9-extensions:                     C Dialect Options.  (line  392)
  * fplan9-extensions <1>:                 Unnamed Fields.     (line   43)
  * fplt:                                  Code Gen Options.   (line  400)
! * fplugin:                               Overall Options.    (line  663)
! * fplugin-arg:                           Overall Options.    (line  670)
  * fpost-ipa-mem-report:                  Developer Options.  (line  964)
  * fpre-ipa-mem-report:                   Developer Options.  (line  964)
  * fpredictive-commoning:                 Optimize Options.   (line 1654)
--- 73630,73637 ----
  * fplan9-extensions:                     C Dialect Options.  (line  392)
  * fplan9-extensions <1>:                 Unnamed Fields.     (line   43)
  * fplt:                                  Code Gen Options.   (line  400)
! * fplugin:                               Overall Options.    (line  667)
! * fplugin-arg:                           Overall Options.    (line  674)
  * fpost-ipa-mem-report:                  Developer Options.  (line  964)
  * fpre-ipa-mem-report:                   Developer Options.  (line  964)
  * fpredictive-commoning:                 Optimize Options.   (line 1654)
*************** look up both forms.
*** 73825,73830 ****
--- 73834,73840 ----
  * fssa-backprop:                         Optimize Options.   (line 1264)
  * fssa-phiopt:                           Optimize Options.   (line 1270)
  * fsso-struct:                           C Dialect Options.  (line  469)
+ * fstack_reuse:                          Code Gen Options.   (line   14)
  * fstack-check:                          Instrumentation Options.
                                                               (line  995)
  * fstack-clash-protection:               Instrumentation Options.
*************** look up both forms.
*** 73842,73848 ****
  * fstack-protector-strong:               Instrumentation Options.
                                                               (line  984)
  * fstack-usage:                          Developer Options.  (line 1001)
- * fstack_reuse:                          Code Gen Options.   (line   14)
  * fstats:                                Developer Options.  (line 1030)
  * fstdarg-opt:                           Optimize Options.   (line 2872)
  * fstore-merging:                        Optimize Options.   (line 1493)
--- 73852,73857 ----
*************** look up both forms.
*** 73852,73858 ****
  * fstrict-flex-arrays:                   C Dialect Options.  (line  436)
  * fstrict-flex-arrays=LEVEL:             C Dialect Options.  (line  436)
  * fstrict-overflow:                      Code Gen Options.   (line  114)
! * fstrict-volatile-bitfields:            Code Gen Options.   (line  615)
  * fstrong-eval-order:                    C++ Dialect Options.
                                                               (line  592)
  * fstrub=all:                            Instrumentation Options.
--- 73861,73867 ----
  * fstrict-flex-arrays:                   C Dialect Options.  (line  436)
  * fstrict-flex-arrays=LEVEL:             C Dialect Options.  (line  436)
  * fstrict-overflow:                      Code Gen Options.   (line  114)
! * fstrict-volatile-bitfields:            Code Gen Options.   (line  614)
  * fstrong-eval-order:                    C++ Dialect Options.
                                                               (line  592)
  * fstrub=all:                            Instrumentation Options.
*************** look up both forms.
*** 73867,73873 ****
                                                               (line 1098)
  * fstrub=strict:                         Instrumentation Options.
                                                               (line 1091)
! * fsync-libcalls:                        Code Gen Options.   (line  647)
  * fsyntax-only:                          Warning Options.    (line   13)
  * ftabstop:                              Preprocessor Options.
                                                               (line  252)
--- 73876,73882 ----
                                                               (line 1098)
  * fstrub=strict:                         Instrumentation Options.
                                                               (line 1091)
! * fsync-libcalls:                        Code Gen Options.   (line  646)
  * fsyntax-only:                          Warning Options.    (line   13)
  * ftabstop:                              Preprocessor Options.
                                                               (line  252)
*************** look up both forms.
*** 73984,73995 ****
  * fwritable-relocated-rdata:             Cygwin and MinGW Options.
                                                               (line   72)
  * fzero-call-used-regs:                  Optimize Options.   (line 2900)
! * fzero-init-padding-bits=VALUE:         Code Gen Options.   (line  656)
  * fzero-initialized-in-bss:              Optimize Options.   (line  503)
  * fzero-link:                            Objective-C and Objective-C++ Dialect Options.
                                                               (line  141)
  * g:                                     Debugging Options.  (line   27)
! * G:                                     ARC Options.        (line  423)
  * G <1>:                                 LoongArch Options.  (line  155)
  * G <2>:                                 M32R/D Options.     (line   56)
  * G <3>:                                 MIPS Options.       (line  465)
--- 73993,74004 ----
  * fwritable-relocated-rdata:             Cygwin and MinGW Options.
                                                               (line   72)
  * fzero-call-used-regs:                  Optimize Options.   (line 2900)
! * fzero-init-padding-bits=VALUE:         Code Gen Options.   (line  655)
  * fzero-initialized-in-bss:              Optimize Options.   (line  503)
  * fzero-link:                            Objective-C and Objective-C++ Dialect Options.
                                                               (line  141)
  * g:                                     Debugging Options.  (line   27)
! * G:                                     ARC Options.        (line  421)
  * G <1>:                                 LoongArch Options.  (line  155)
  * G <2>:                                 M32R/D Options.     (line   56)
  * G <3>:                                 MIPS Options.       (line  465)
*************** look up both forms.
*** 74037,74043 ****
  * H:                                     Preprocessor Options.
                                                               (line  416)
  * headerpad_max_install_names:           Darwin Options.     (line  204)
! * help:                                  Overall Options.    (line  490)
  * I:                                     Directory Options.  (line    9)
  * I-:                                    Directory Options.  (line   64)
  * idirafter:                             Directory Options.  (line    9)
--- 74046,74052 ----
  * H:                                     Preprocessor Options.
                                                               (line  416)
  * headerpad_max_install_names:           Darwin Options.     (line  204)
! * help:                                  Overall Options.    (line  494)
  * I:                                     Directory Options.  (line    9)
  * I-:                                    Directory Options.  (line   64)
  * idirafter:                             Directory Options.  (line    9)
*************** look up both forms.
*** 74067,74073 ****
  * m10:                                   PDP-11 Options.     (line   28)
  * m128bit-long-double:                   x86 Options.        (line  790)
  * m16:                                   x86 Options.        (line 1785)
! * m16-bit:                               CRIS Options.       (line   60)
  * m16-bit <1>:                           NDS32 Options.      (line   50)
  * m1reg-:                                Adapteva Epiphany Options.
                                                               (line  130)
--- 74076,74082 ----
  * m10:                                   PDP-11 Options.     (line   28)
  * m128bit-long-double:                   x86 Options.        (line  790)
  * m16:                                   x86 Options.        (line 1785)
! * m16-bit:                               CRIS Options.       (line   59)
  * m16-bit <1>:                           NDS32 Options.      (line   50)
  * m1reg-:                                Adapteva Epiphany Options.
                                                               (line  130)
*************** look up both forms.
*** 74084,74090 ****
                                                               (line  246)
  * m32 <1>:                               SPARC Options.      (line  318)
  * m32 <2>:                               x86 Options.        (line 1785)
! * m32-bit:                               CRIS Options.       (line   60)
  * m32bit-doubles:                        RL78 Options.       (line   71)
  * m32bit-doubles <1>:                    RX Options.         (line    8)
  * m32r:                                  M32R/D Options.     (line   14)
--- 74093,74099 ----
                                                               (line  246)
  * m32 <1>:                               SPARC Options.      (line  318)
  * m32 <2>:                               x86 Options.        (line 1785)
! * m32-bit:                               CRIS Options.       (line   59)
  * m32bit-doubles:                        RL78 Options.       (line   71)
  * m32bit-doubles <1>:                    RX Options.         (line    8)
  * m32r:                                  M32R/D Options.     (line   14)
*************** look up both forms.
*** 74143,74149 ****
  * m68040:                                M680x0 Options.     (line  117)
  * m68060:                                M680x0 Options.     (line  126)
  * m68881:                                M680x0 Options.     (line  193)
! * m8-bit:                                CRIS Options.       (line   60)
  * m80387:                                x86 Options.        (line  738)
  * m8bit-idiv:                            x86 Options.        (line 1673)
  * m8byte-align:                          V850 Options.       (line  168)
--- 74152,74158 ----
  * m68040:                                M680x0 Options.     (line  117)
  * m68060:                                M680x0 Options.     (line  126)
  * m68881:                                M680x0 Options.     (line  193)
! * m8-bit:                                CRIS Options.       (line   59)
  * m80387:                                x86 Options.        (line  738)
  * m8bit-idiv:                            x86 Options.        (line 1673)
  * m8byte-align:                          V850 Options.       (line  168)
*************** look up both forms.
*** 74181,74187 ****
  * mac0:                                  PDP-11 Options.     (line   15)
  * macc-4:                                FRV Options.        (line  138)
  * macc-8:                                FRV Options.        (line  142)
! * maccumulate-args:                      AVR Options.        (line  347)
  * maccumulate-outgoing-args:             SH Options.         (line  313)
  * maccumulate-outgoing-args <1>:         x86 Options.        (line 1411)
  * maddr-reg-reg-cost:                    LoongArch Options.  (line  121)
--- 74190,74196 ----
  * mac0:                                  PDP-11 Options.     (line   15)
  * macc-4:                                FRV Options.        (line  138)
  * macc-8:                                FRV Options.        (line  142)
! * maccumulate-args:                      AVR Options.        (line  345)
  * maccumulate-outgoing-args:             SH Options.         (line  313)
  * maccumulate-outgoing-args <1>:         x86 Options.        (line 1411)
  * maddr-reg-reg-cost:                    LoongArch Options.  (line  121)
*************** look up both forms.
*** 74198,74204 ****
  * maix64:                                RS/6000 and PowerPC Options.
                                                               (line  284)
  * malign-300:                            H8/300 Options.     (line   40)
! * malign-call:                           ARC Options.        (line  442)
  * malign-data:                           RISC-V Options.     (line  529)
  * malign-data <1>:                       x86 Options.        (line  831)
  * malign-double:                         x86 Options.        (line  775)
--- 74207,74213 ----
  * maix64:                                RS/6000 and PowerPC Options.
                                                               (line  284)
  * malign-300:                            H8/300 Options.     (line   40)
! * malign-call:                           ARC Options.        (line  440)
  * malign-data:                           RISC-V Options.     (line  529)
  * malign-data <1>:                       x86 Options.        (line  831)
  * malign-double:                         x86 Options.        (line  775)
*************** look up both forms.
*** 74261,74268 ****
  * march <15>:                            x86 Options.        (line    8)
  * march=:                                C-SKY Options.      (line    8)
  * marclinux:                             ARC Options.        (line  395)
! * marclinux_prof:                        ARC Options.        (line  402)
! * margonaut:                             ARC Options.        (line  596)
  * marm:                                  ARM Options.        (line  862)
  * mas100-syntax:                         RX Options.         (line   74)
  * masm-hex:                              MSP430 Options.     (line    8)
--- 74270,74277 ----
  * march <15>:                            x86 Options.        (line    8)
  * march=:                                C-SKY Options.      (line    8)
  * marclinux:                             ARC Options.        (line  395)
! * marclinux_prof:                        ARC Options.        (line  401)
! * margonaut:                             ARC Options.        (line  594)
  * marm:                                  ARM Options.        (line  862)
  * mas100-syntax:                         RX Options.         (line   74)
  * masm-hex:                              MSP430 Options.     (line    8)
*************** look up both forms.
*** 74273,74279 ****
  * matomic-libcalls:                      HPPA Options.       (line   22)
  * matomic-model=MODEL:                   SH Options.         (line  192)
  * mauto-litpools:                        Xtensa Options.     (line   58)
! * mauto-modify-reg:                      ARC Options.        (line  445)
  * mauto-pic:                             IA-64 Options.      (line   49)
  * mavoid-indexed-addresses:              RS/6000 and PowerPC Options.
                                                               (line  361)
--- 74282,74288 ----
  * matomic-libcalls:                      HPPA Options.       (line   22)
  * matomic-model=MODEL:                   SH Options.         (line  192)
  * mauto-litpools:                        Xtensa Options.     (line   58)
! * mauto-modify-reg:                      ARC Options.        (line  443)
  * mauto-pic:                             IA-64 Options.      (line   49)
  * mavoid-indexed-addresses:              RS/6000 and PowerPC Options.
                                                               (line  361)
*************** look up both forms.
*** 74309,74324 ****
  * mb:                                    SH Options.         (line  125)
  * mbackchain:                            S/390 and zSeries Options.
                                                               (line   33)
  * mbarrel-shift-enabled:                 LM32 Options.       (line    8)
  * mbarrel-shifter:                       ARC Options.        (line    9)
- * mbarrel_shifter:                       ARC Options.        (line  616)
  * mbase-addresses:                       MMIX Options.       (line   51)
! * mbbit-peephole:                        ARC Options.        (line  448)
  * mbe8:                                  ARM Options.        (line   70)
  * mbig:                                  RS/6000 and PowerPC Options.
                                                               (line  441)
  * mbig-endian:                           AArch64 Options.    (line   21)
! * mbig-endian <1>:                       ARC Options.        (line  599)
  * mbig-endian <2>:                       ARM Options.        (line   66)
  * mbig-endian <3>:                       C6X Options.        (line   12)
  * mbig-endian <4>:                       C-SKY Options.      (line   27)
--- 74318,74333 ----
  * mb:                                    SH Options.         (line  125)
  * mbackchain:                            S/390 and zSeries Options.
                                                               (line   33)
+ * mbarrel_shifter:                       ARC Options.        (line  611)
  * mbarrel-shift-enabled:                 LM32 Options.       (line    8)
  * mbarrel-shifter:                       ARC Options.        (line    9)
  * mbase-addresses:                       MMIX Options.       (line   51)
! * mbbit-peephole:                        ARC Options.        (line  446)
  * mbe8:                                  ARM Options.        (line   70)
  * mbig:                                  RS/6000 and PowerPC Options.
                                                               (line  441)
  * mbig-endian:                           AArch64 Options.    (line   21)
! * mbig-endian <1>:                       ARC Options.        (line  597)
  * mbig-endian <2>:                       ARM Options.        (line   66)
  * mbig-endian <3>:                       C6X Options.        (line   12)
  * mbig-endian <4>:                       C-SKY Options.      (line   27)
*************** look up both forms.
*** 74350,74356 ****
  * mboard:                                OpenRISC Options.   (line    8)
  * mbranch-cost:                          Adapteva Epiphany Options.
                                                               (line   17)
! * mbranch-cost <1>:                      AVR Options.        (line  363)
  * mbranch-cost <2>:                      LoongArch Options.  (line  118)
  * mbranch-cost <3>:                      MIPS Options.       (line  804)
  * mbranch-cost <4>:                      RISC-V Options.     (line    8)
--- 74359,74365 ----
  * mboard:                                OpenRISC Options.   (line    8)
  * mbranch-cost:                          Adapteva Epiphany Options.
                                                               (line   17)
! * mbranch-cost <1>:                      AVR Options.        (line  361)
  * mbranch-cost <2>:                      LoongArch Options.  (line  118)
  * mbranch-cost <3>:                      MIPS Options.       (line  804)
  * mbranch-cost <4>:                      RISC-V Options.     (line    8)
*************** look up both forms.
*** 74379,74391 ****
                                                               (line  531)
  * mcall-linux:                           RS/6000 and PowerPC Options.
                                                               (line  527)
! * mcall-main:                            AVR Options.        (line  247)
  * mcall-ms2sysv-xlogues:                 x86 Options.        (line 1387)
  * mcall-netbsd:                          RS/6000 and PowerPC Options.
                                                               (line  535)
  * mcall-openbsd:                         RS/6000 and PowerPC Options.
                                                               (line  539)
! * mcall-prologues:                       AVR Options.        (line  368)
  * mcall-sysv:                            RS/6000 and PowerPC Options.
                                                               (line  509)
  * mcall-sysv-eabi:                       RS/6000 and PowerPC Options.
--- 74388,74400 ----
                                                               (line  531)
  * mcall-linux:                           RS/6000 and PowerPC Options.
                                                               (line  527)
! * mcall-main:                            AVR Options.        (line  246)
  * mcall-ms2sysv-xlogues:                 x86 Options.        (line 1387)
  * mcall-netbsd:                          RS/6000 and PowerPC Options.
                                                               (line  535)
  * mcall-openbsd:                         RS/6000 and PowerPC Options.
                                                               (line  539)
! * mcall-prologues:                       AVR Options.        (line  366)
  * mcall-sysv:                            RS/6000 and PowerPC Options.
                                                               (line  509)
  * mcall-sysv-eabi:                       RS/6000 and PowerPC Options.
*************** look up both forms.
*** 74396,74405 ****
  * mcaller-copies:                        HPPA Options.       (line   46)
  * mcaller-super-interworking:            ARM Options.        (line  899)
  * mcallgraph-data:                       MCore Options.      (line   29)
! * mcase-vector-pcrel:                    ARC Options.        (line  457)
  * mcbcond:                               SPARC Options.      (line  263)
  * mcbranch-force-delay-slot:             SH Options.         (line  348)
! * mcc-init:                              CRIS Options.       (line   40)
  * mccrt:                                 C-SKY Options.      (line  153)
  * mcet-switch:                           x86 Options.        (line 1377)
  * mcfv4e:                                M680x0 Options.     (line  169)
--- 74405,74414 ----
  * mcaller-copies:                        HPPA Options.       (line   46)
  * mcaller-super-interworking:            ARM Options.        (line  899)
  * mcallgraph-data:                       MCore Options.      (line   29)
! * mcase-vector-pcrel:                    ARC Options.        (line  455)
  * mcbcond:                               SPARC Options.      (line  263)
  * mcbranch-force-delay-slot:             SH Options.         (line  348)
! * mcc-init:                              CRIS Options.       (line   39)
  * mccrt:                                 C-SKY Options.      (line  153)
  * mcet-switch:                           x86 Options.        (line 1377)
  * mcfv4e:                                M680x0 Options.     (line  169)
*************** look up both forms.
*** 74449,74462 ****
  * mcmse:                                 ARM Options.        (line 1003)
  * mco-re:                                eBPF Options.       (line   79)
  * mcode-density:                         ARC Options.        (line  171)
! * mcode-density-frame:                   ARC Options.        (line  516)
  * mcode-readable:                        MIPS Options.       (line  535)
  * mcode-region:                          MSP430 Options.     (line  148)
  * mcoherent-ldcw:                        HPPA Options.       (line   53)
  * mcompact-branches=always:              MIPS Options.       (line  821)
  * mcompact-branches=never:               MIPS Options.       (line  821)
  * mcompact-branches=optimal:             MIPS Options.       (line  821)
! * mcompact-casesi:                       ARC Options.        (line  461)
  * mcompat-align-parm:                    RS/6000 and PowerPC Options.
                                                               (line  900)
  * mcompress:                             FT32 Options.       (line   24)
--- 74458,74471 ----
  * mcmse:                                 ARM Options.        (line 1003)
  * mco-re:                                eBPF Options.       (line   79)
  * mcode-density:                         ARC Options.        (line  171)
! * mcode-density-frame:                   ARC Options.        (line  514)
  * mcode-readable:                        MIPS Options.       (line  535)
  * mcode-region:                          MSP430 Options.     (line  148)
  * mcoherent-ldcw:                        HPPA Options.       (line   53)
  * mcompact-branches=always:              MIPS Options.       (line  821)
  * mcompact-branches=never:               MIPS Options.       (line  821)
  * mcompact-branches=optimal:             MIPS Options.       (line  821)
! * mcompact-casesi:                       ARC Options.        (line  459)
  * mcompat-align-parm:                    RS/6000 and PowerPC Options.
                                                               (line  900)
  * mcompress:                             FT32 Options.       (line   24)
*************** look up both forms.
*** 74466,74472 ****
  * mcond-move-int:                        LoongArch Options.  (line  130)
  * mconsole:                              Cygwin and MinGW Options.
                                                               (line    8)
! * mconst-align:                          CRIS Options.       (line   48)
  * mconst16:                              Xtensa Options.     (line    8)
  * mconstant-cfstrings:                   Darwin Options.     (line   74)
  * mconstant-gp:                          IA-64 Options.      (line   45)
--- 74475,74481 ----
  * mcond-move-int:                        LoongArch Options.  (line  130)
  * mconsole:                              Cygwin and MinGW Options.
                                                               (line    8)
! * mconst-align:                          CRIS Options.       (line   47)
  * mconst16:                              Xtensa Options.     (line    8)
  * mconstant-cfstrings:                   Darwin Options.     (line   74)
  * mconstant-gp:                          IA-64 Options.      (line   45)
*************** look up both forms.
*** 74490,74501 ****
  * mcpu <12>:                             SPARC Options.      (line  109)
  * mcpu <13>:                             Visium Options.     (line   32)
  * mcpu <14>:                             x86 Options.        (line  671)
- * mcpu32:                                M680x0 Options.     (line  135)
  * mcpu=:                                 Blackfin Options.   (line    6)
  * mcpu= <1>:                             C-SKY Options.      (line   13)
  * mcpu= <2>:                             M32C Options.       (line    6)
  * mcpu= <3>:                             MicroBlaze Options. (line   19)
  * mcpu= <4>:                             MSP430 Options.     (line   71)
  * mcrc:                                  MIPS Options.       (line  420)
  * mcrc32:                                x86 Options.        (line 1247)
  * mcrtdll:                               Cygwin and MinGW Options.
--- 74499,74510 ----
  * mcpu <12>:                             SPARC Options.      (line  109)
  * mcpu <13>:                             Visium Options.     (line   32)
  * mcpu <14>:                             x86 Options.        (line  671)
  * mcpu=:                                 Blackfin Options.   (line    6)
  * mcpu= <1>:                             C-SKY Options.      (line   13)
  * mcpu= <2>:                             M32C Options.       (line    6)
  * mcpu= <3>:                             MicroBlaze Options. (line   19)
  * mcpu= <4>:                             MSP430 Options.     (line   71)
+ * mcpu32:                                M680x0 Options.     (line  135)
  * mcrc:                                  MIPS Options.       (line  420)
  * mcrc32:                                x86 Options.        (line 1247)
  * mcrtdll:                               Cygwin and MinGW Options.
*************** look up both forms.
*** 74513,74519 ****
  * md:                                    VAX Options.        (line   16)
  * md-float:                              VAX Options.        (line   16)
  * mdalign:                               SH Options.         (line  131)
! * mdata-align:                           CRIS Options.       (line   48)
  * mdata-region:                          MSP430 Options.     (line  148)
  * mdaz-ftz:                              x86 Options.        (line  918)
  * mdebug:                                M32R/D Options.     (line   68)
--- 74522,74528 ----
  * md:                                    VAX Options.        (line   16)
  * md-float:                              VAX Options.        (line   16)
  * mdalign:                               SH Options.         (line  131)
! * mdata-align:                           CRIS Options.       (line   47)
  * mdata-region:                          MSP430 Options.     (line  148)
  * mdaz-ftz:                              x86 Options.        (line  918)
  * mdebug:                                M32R/D Options.     (line   68)
*************** look up both forms.
*** 74532,74539 ****
  * mdiv <2>:                              MCore Options.      (line   13)
  * mdiv <3>:                              RISC-V Options.     (line   55)
  * mdiv-rem:                              ARC Options.        (line  168)
- * mdiv32:                                LoongArch Options.  (line  298)
  * mdiv=STRATEGY:                         SH Options.         (line  283)
  * mdivide-breaks:                        MIPS Options.       (line  584)
  * mdivide-enabled:                       LM32 Options.       (line   11)
  * mdivide-traps:                         MIPS Options.       (line  584)
--- 74541,74548 ----
  * mdiv <2>:                              MCore Options.      (line   13)
  * mdiv <3>:                              RISC-V Options.     (line   55)
  * mdiv-rem:                              ARC Options.        (line  168)
  * mdiv=STRATEGY:                         SH Options.         (line  283)
+ * mdiv32:                                LoongArch Options.  (line  298)
  * mdivide-breaks:                        MIPS Options.       (line  584)
  * mdivide-enabled:                       LM32 Options.       (line   11)
  * mdivide-traps:                         MIPS Options.       (line  584)
*************** look up both forms.
*** 74550,74564 ****
  * mdouble-float <2>:                     MIPS Options.       (line  293)
  * mdouble-float <3>:                     OpenRISC Options.   (line   32)
  * mdpfp:                                 ARC Options.        (line  107)
  * mdpfp-compact:                         ARC Options.        (line  107)
  * mdpfp-fast:                            ARC Options.        (line  112)
- * mdpfp_compact:                         ARC Options.        (line  619)
- * mdpfp_fast:                            ARC Options.        (line  622)
  * mdsp:                                  C-SKY Options.      (line  101)
  * mdsp <1>:                              MIPS Options.       (line  357)
  * mdsp-packa:                            ARC Options.        (line  343)
  * mdspr2:                                MIPS Options.       (line  363)
- * mdsp_packa:                            ARC Options.        (line  625)
  * mdump-tune-features:                   x86 Options.        (line 1126)
  * mdvbf:                                 ARC Options.        (line  348)
  * mdwarf2-asm:                           IA-64 Options.      (line   92)
--- 74559,74573 ----
  * mdouble-float <2>:                     MIPS Options.       (line  293)
  * mdouble-float <3>:                     OpenRISC Options.   (line   32)
  * mdpfp:                                 ARC Options.        (line  107)
+ * mdpfp_compact:                         ARC Options.        (line  614)
+ * mdpfp_fast:                            ARC Options.        (line  617)
  * mdpfp-compact:                         ARC Options.        (line  107)
  * mdpfp-fast:                            ARC Options.        (line  112)
  * mdsp:                                  C-SKY Options.      (line  101)
  * mdsp <1>:                              MIPS Options.       (line  357)
+ * mdsp_packa:                            ARC Options.        (line  620)
  * mdsp-packa:                            ARC Options.        (line  343)
  * mdspr2:                                MIPS Options.       (line  363)
  * mdump-tune-features:                   x86 Options.        (line 1126)
  * mdvbf:                                 ARC Options.        (line  348)
  * mdwarf2-asm:                           IA-64 Options.      (line   92)
*************** look up both forms.
*** 74567,74583 ****
  * mdynamic-no-pic:                       RS/6000 and PowerPC Options.
                                                               (line  447)
  * mea:                                   ARC Options.        (line  120)
! * mEA:                                   ARC Options.        (line  628)
  * meabi:                                 RS/6000 and PowerPC Options.
                                                               (line  634)
! * mearly-cbranchsi:                      ARC Options.        (line  483)
  * mearly-ldp-fusion:                     AArch64 Options.    (line  356)
  * mearly-ra:                             AArch64 Options.    (line  341)
  * mearly-stop-bits:                      IA-64 Options.      (line   98)
  * meb:                                   Moxie Options.      (line    6)
  * medsp:                                 C-SKY Options.      (line  101)
  * mel:                                   Moxie Options.      (line   10)
! * melf:                                  CRIS Options.       (line   78)
  * melf <1>:                              MMIX Options.       (line   42)
  * melrw:                                 C-SKY Options.      (line   74)
  * memb:                                  RS/6000 and PowerPC Options.
--- 74576,74592 ----
  * mdynamic-no-pic:                       RS/6000 and PowerPC Options.
                                                               (line  447)
  * mea:                                   ARC Options.        (line  120)
! * mEA:                                   ARC Options.        (line  623)
  * meabi:                                 RS/6000 and PowerPC Options.
                                                               (line  634)
! * mearly-cbranchsi:                      ARC Options.        (line  481)
  * mearly-ldp-fusion:                     AArch64 Options.    (line  356)
  * mearly-ra:                             AArch64 Options.    (line  341)
  * mearly-stop-bits:                      IA-64 Options.      (line   98)
  * meb:                                   Moxie Options.      (line    6)
  * medsp:                                 C-SKY Options.      (line  101)
  * mel:                                   Moxie Options.      (line   10)
! * melf:                                  CRIS Options.       (line   77)
  * melf <1>:                              MMIX Options.       (line   42)
  * melrw:                                 C-SKY Options.      (line   74)
  * memb:                                  RS/6000 and PowerPC Options.
*************** look up both forms.
*** 74589,74599 ****
  * mepsilon:                              MMIX Options.       (line   13)
  * mesa:                                  S/390 and zSeries Options.
                                                               (line   92)
! * metrax100:                             CRIS Options.       (line   24)
! * metrax4:                               CRIS Options.       (line   24)
  * meva:                                  MIPS Options.       (line  407)
  * mevex512:                              x86 Options.        (line 1777)
! * mexpand-adddi:                         ARC Options.        (line  486)
  * mexplicit-relocs:                      DEC Alpha Options.  (line  188)
  * mexplicit-relocs <1>:                  LoongArch Options.  (line  202)
  * mexplicit-relocs <2>:                  MIPS Options.       (line  565)
--- 74598,74608 ----
  * mepsilon:                              MMIX Options.       (line   13)
  * mesa:                                  S/390 and zSeries Options.
                                                               (line   92)
! * metrax100:                             CRIS Options.       (line   23)
! * metrax4:                               CRIS Options.       (line   23)
  * meva:                                  MIPS Options.       (line  407)
  * mevex512:                              x86 Options.        (line 1777)
! * mexpand-adddi:                         ARC Options.        (line  484)
  * mexplicit-relocs:                      DEC Alpha Options.  (line  188)
  * mexplicit-relocs <1>:                  LoongArch Options.  (line  202)
  * mexplicit-relocs <2>:                  MIPS Options.       (line  565)
*************** look up both forms.
*** 74645,74651 ****
  * mflat:                                 SPARC Options.      (line   20)
  * mflip-mips16:                          MIPS Options.       (line  133)
  * mflip-thumb:                           ARM Options.        (line  875)
! * mflmap:                                AVR Options.        (line  791)
  * mfloat-abi:                            ARM Options.        (line   40)
  * mfloat-abi <1>:                        C-SKY Options.      (line   34)
  * mfloat-ieee:                           DEC Alpha Options.  (line  183)
--- 74654,74660 ----
  * mflat:                                 SPARC Options.      (line   20)
  * mflip-mips16:                          MIPS Options.       (line  133)
  * mflip-thumb:                           ARM Options.        (line  875)
! * mflmap:                                AVR Options.        (line  784)
  * mfloat-abi:                            ARM Options.        (line   40)
  * mfloat-abi <1>:                        C-SKY Options.      (line   34)
  * mfloat-ieee:                           DEC Alpha Options.  (line  183)
*************** look up both forms.
*** 74687,74693 ****
  * mfpu <5>:                              Visium Options.     (line   17)
  * mfpu=:                                 C-SKY Options.      (line   68)
  * mfpxx:                                 MIPS Options.       (line  269)
! * mfract-convert-truncate:               AVR Options.        (line  296)
  * mframe-header-opt:                     MIPS Options.       (line  905)
  * mfrecipe:                              LoongArch Options.  (line  292)
  * mfriz:                                 RS/6000 and PowerPC Options.
--- 74696,74702 ----
  * mfpu <5>:                              Visium Options.     (line   17)
  * mfpu=:                                 C-SKY Options.      (line   68)
  * mfpxx:                                 MIPS Options.       (line  269)
! * mfract-convert-truncate:               AVR Options.        (line  294)
  * mframe-header-opt:                     MIPS Options.       (line  905)
  * mfrecipe:                              LoongArch Options.  (line  292)
  * mfriz:                                 RS/6000 and PowerPC Options.
*************** look up both forms.
*** 74701,74709 ****
  * mfull-toc:                             RS/6000 and PowerPC Options.
                                                               (line  255)
  * mfunction-return:                      x86 Options.        (line 1735)
! * mfuse-add:                             AVR Options.        (line  372)
! * mfuse-move:                            AVR Options.        (line  380)
! * mfuse-move2:                           AVR Options.        (line  390)
  * mfused-madd:                           IA-64 Options.      (line   86)
  * mfused-madd <1>:                       MIPS Options.       (line  642)
  * mfused-madd <2>:                       RS/6000 and PowerPC Options.
--- 74710,74718 ----
  * mfull-toc:                             RS/6000 and PowerPC Options.
                                                               (line  255)
  * mfunction-return:                      x86 Options.        (line 1735)
! * mfuse-add:                             AVR Options.        (line  370)
! * mfuse-move:                            AVR Options.        (line  378)
! * mfuse-move2:                           AVR Options.        (line  388)
  * mfused-madd:                           IA-64 Options.      (line   86)
  * mfused-madd <1>:                       MIPS Options.       (line  642)
  * mfused-madd <2>:                       RS/6000 and PowerPC Options.
*************** look up both forms.
*** 74795,74801 ****
  * mimadd:                                MIPS Options.       (line  635)
  * mimpure-text:                          Solaris 2 Options.  (line   14)
  * mincoming-stack-boundary:              x86 Options.        (line  958)
! * mindexed-loads:                        ARC Options.        (line  490)
  * mindirect-branch:                      x86 Options.        (line 1716)
  * mindirect-branch-cs-prefix:            x86 Options.        (line 1764)
  * mindirect-branch-register:             x86 Options.        (line 1754)
--- 74804,74810 ----
  * mimadd:                                MIPS Options.       (line  635)
  * mimpure-text:                          Solaris 2 Options.  (line   14)
  * mincoming-stack-boundary:              x86 Options.        (line  958)
! * mindexed-loads:                        ARC Options.        (line  488)
  * mindirect-branch:                      x86 Options.        (line 1716)
  * mindirect-branch-cs-prefix:            x86 Options.        (line 1764)
  * mindirect-branch-register:             x86 Options.        (line 1754)
*************** look up both forms.
*** 74825,74831 ****
  * mint16:                                PDP-11 Options.     (line   31)
  * mint32:                                H8/300 Options.     (line   37)
  * mint32 <1>:                            PDP-11 Options.     (line   35)
! * mint8:                                 AVR Options.        (line  236)
  * minterlink-compressed:                 MIPS Options.       (line  139)
  * minterlink-mips16:                     MIPS Options.       (line  151)
  * mips1:                                 MIPS Options.       (line   79)
--- 74834,74840 ----
  * mint16:                                PDP-11 Options.     (line   31)
  * mint32:                                H8/300 Options.     (line   37)
  * mint32 <1>:                            PDP-11 Options.     (line   35)
! * mint8:                                 AVR Options.        (line  235)
  * minterlink-compressed:                 MIPS Options.       (line  139)
  * minterlink-mips16:                     MIPS Options.       (line  151)
  * mips1:                                 MIPS Options.       (line   79)
*************** look up both forms.
*** 74862,74867 ****
--- 74871,74877 ----
  * mkl:                                   x86 Options.        (line 1061)
  * mknuthdiv:                             MMIX Options.       (line   30)
  * ml:                                    SH Options.         (line  128)
+ * ml[a]sx:                               LoongArch Options.  (line  105)
  * mlam:                                  x86 Options.        (line 1872)
  * mlam-bh:                               LoongArch Options.  (line  304)
  * mlamcas:                               LoongArch Options.  (line  310)
*************** look up both forms.
*** 74880,74886 ****
  * mlittle:                               RS/6000 and PowerPC Options.
                                                               (line  435)
  * mlittle-endian:                        AArch64 Options.    (line   31)
! * mlittle-endian <1>:                    ARC Options.        (line  608)
  * mlittle-endian <2>:                    ARM Options.        (line   62)
  * mlittle-endian <3>:                    C6X Options.        (line   15)
  * mlittle-endian <4>:                    C-SKY Options.      (line   27)
--- 74890,74896 ----
  * mlittle:                               RS/6000 and PowerPC Options.
                                                               (line  435)
  * mlittle-endian:                        AArch64 Options.    (line   31)
! * mlittle-endian <1>:                    ARC Options.        (line  604)
  * mlittle-endian <2>:                    ARM Options.        (line   62)
  * mlittle-endian <3>:                    C6X Options.        (line   15)
  * mlittle-endian <4>:                    C-SKY Options.      (line   27)
*************** look up both forms.
*** 74901,74907 ****
  * mlock:                                 ARC Options.        (line  353)
  * mlong-calls:                           Adapteva Epiphany Options.
                                                               (line   54)
! * mlong-calls <1>:                       ARC Options.        (line  411)
  * mlong-calls <2>:                       ARM Options.        (line  795)
  * mlong-calls <3>:                       Blackfin Options.   (line  116)
  * mlong-calls <4>:                       FRV Options.        (line  121)
--- 74911,74917 ----
  * mlock:                                 ARC Options.        (line  353)
  * mlong-calls:                           Adapteva Epiphany Options.
                                                               (line   54)
! * mlong-calls <1>:                       ARC Options.        (line  409)
  * mlong-calls <2>:                       ARM Options.        (line  795)
  * mlong-calls <3>:                       Blackfin Options.   (line  116)
  * mlong-calls <4>:                       FRV Options.        (line  121)
*************** look up both forms.
*** 74935,74961 ****
  * mlow64k:                               Blackfin Options.   (line   66)
  * mlp64:                                 IA-64 Options.      (line  119)
  * mlpc-width:                            ARC Options.        (line  321)
! * mlra:                                  ARC Options.        (line  495)
  * mlra <1>:                              FT32 Options.       (line   15)
  * mlra <2>:                              PDP-11 Options.     (line   51)
  * mlra <3>:                              VAX Options.        (line   26)
! * mlra-priority-compact:                 ARC Options.        (line  501)
! * mlra-priority-noncompact:              ARC Options.        (line  504)
! * mlra-priority-none:                    ARC Options.        (line  498)
  * mlwp:                                  x86 Options.        (line 1019)
  * mlxc1-sxc1:                            MIPS Options.       (line  915)
  * mlzcnt:                                x86 Options.        (line 1027)
- * ml[a]sx:                               LoongArch Options.  (line  105)
  * MM:                                    Preprocessor Options.
                                                               (line  101)
  * mmac-24:                               ARC Options.        (line  362)
  * mmac-d16:                              ARC Options.        (line  358)
  * mmacosx-version-min:                   Darwin Options.     (line   79)
- * mmac_24:                               ARC Options.        (line  631)
- * mmac_d16:                              ARC Options.        (line  634)
  * mmad:                                  MIPS Options.       (line  630)
  * mmadd4:                                MIPS Options.       (line  920)
! * mmain-is-OS_task:                      AVR Options.        (line  242)
  * mmainkernel:                           Nvidia PTX Options. (line   43)
  * mmalloc64:                             VMS Options.        (line   16)
  * mmanual-endbr:                         x86 Options.        (line 1371)
--- 74945,74970 ----
  * mlow64k:                               Blackfin Options.   (line   66)
  * mlp64:                                 IA-64 Options.      (line  119)
  * mlpc-width:                            ARC Options.        (line  321)
! * mlra:                                  ARC Options.        (line  493)
  * mlra <1>:                              FT32 Options.       (line   15)
  * mlra <2>:                              PDP-11 Options.     (line   51)
  * mlra <3>:                              VAX Options.        (line   26)
! * mlra-priority-compact:                 ARC Options.        (line  499)
! * mlra-priority-noncompact:              ARC Options.        (line  502)
! * mlra-priority-none:                    ARC Options.        (line  496)
  * mlwp:                                  x86 Options.        (line 1019)
  * mlxc1-sxc1:                            MIPS Options.       (line  915)
  * mlzcnt:                                x86 Options.        (line 1027)
  * MM:                                    Preprocessor Options.
                                                               (line  101)
+ * mmac_24:                               ARC Options.        (line  626)
+ * mmac_d16:                              ARC Options.        (line  629)
  * mmac-24:                               ARC Options.        (line  362)
  * mmac-d16:                              ARC Options.        (line  358)
  * mmacosx-version-min:                   Darwin Options.     (line   79)
  * mmad:                                  MIPS Options.       (line  630)
  * mmadd4:                                MIPS Options.       (line  920)
! * mmain-is-OS_task:                      AVR Options.        (line  241)
  * mmainkernel:                           Nvidia PTX Options. (line   43)
  * mmalloc64:                             VMS Options.        (line   16)
  * mmanual-endbr:                         x86 Options.        (line 1371)
*************** look up both forms.
*** 74963,74969 ****
  * mmax-constant-size:                    RX Options.         (line   81)
  * mmax-inline-memcpy-size:               LoongArch Options.  (line  159)
  * mmax-inline-shift=:                    MSP430 Options.     (line  133)
! * mmax-stack-frame:                      CRIS Options.       (line   21)
  * mmcount-ra-address:                    MIPS Options.       (line  892)
  * mmcu:                                  AVR Options.        (line    8)
  * mmcu <1>:                              MIPS Options.       (line  403)
--- 74972,74978 ----
  * mmax-constant-size:                    RX Options.         (line   81)
  * mmax-inline-memcpy-size:               LoongArch Options.  (line  159)
  * mmax-inline-shift=:                    MSP430 Options.     (line  133)
! * mmax-stack-frame:                      CRIS Options.       (line   20)
  * mmcount-ra-address:                    MIPS Options.       (line  892)
  * mmcu:                                  AVR Options.        (line    8)
  * mmcu <1>:                              MIPS Options.       (line  403)
*************** look up both forms.
*** 74972,74978 ****
  * MMD:                                   Preprocessor Options.
                                                               (line  187)
  * mmedia:                                FRV Options.        (line   55)
! * mmedium-calls:                         ARC Options.        (line  415)
  * mmemcpy:                               LoongArch Options.  (line  140)
  * mmemcpy <1>:                           MicroBlaze Options. (line   12)
  * mmemcpy <2>:                           MIPS Options.       (line  615)
--- 74981,74987 ----
  * MMD:                                   Preprocessor Options.
                                                               (line  187)
  * mmedia:                                FRV Options.        (line   55)
! * mmedium-calls:                         ARC Options.        (line  413)
  * mmemcpy:                               LoongArch Options.  (line  140)
  * mmemcpy <1>:                           MicroBlaze Options. (line   12)
  * mmemcpy <2>:                           MIPS Options.       (line  615)
*************** look up both forms.
*** 74983,74993 ****
  * mmfcrf:                                RS/6000 and PowerPC Options.
                                                               (line   21)
  * mmicromips:                            MIPS Options.       (line  391)
! * mmillicode:                            ARC Options.        (line  507)
  * mminimal-toc:                          RS/6000 and PowerPC Options.
                                                               (line  255)
  * mmips16e2:                             MIPS Options.       (line  127)
! * mmixed-code:                           ARC Options.        (line  521)
  * mmma:                                  RS/6000 and PowerPC Options.
                                                               (line  942)
  * mmmx:                                  x86 Options.        (line  983)
--- 74992,75002 ----
  * mmfcrf:                                RS/6000 and PowerPC Options.
                                                               (line   21)
  * mmicromips:                            MIPS Options.       (line  391)
! * mmillicode:                            ARC Options.        (line  505)
  * mminimal-toc:                          RS/6000 and PowerPC Options.
                                                               (line  255)
  * mmips16e2:                             MIPS Options.       (line  127)
! * mmixed-code:                           ARC Options.        (line  519)
  * mmma:                                  RS/6000 and PowerPC Options.
                                                               (line  942)
  * mmmx:                                  x86 Options.        (line  983)
*************** look up both forms.
*** 75006,75012 ****
  * mms-bitfields:                         x86 Options.        (line 1426)
  * mmt:                                   MIPS Options.       (line  399)
  * mmul:                                  RL78 Options.       (line   10)
! * mmul-bug-workaround:                   CRIS Options.       (line   29)
  * mmul.x:                                Moxie Options.      (line   13)
  * mmul32x16:                             ARC Options.        (line  129)
  * mmul64:                                ARC Options.        (line  132)
--- 75015,75021 ----
  * mms-bitfields:                         x86 Options.        (line 1426)
  * mmt:                                   MIPS Options.       (line  399)
  * mmul:                                  RL78 Options.       (line   10)
! * mmul-bug-workaround:                   CRIS Options.       (line   28)
  * mmul.x:                                Moxie Options.      (line   13)
  * mmul32x16:                             ARC Options.        (line  129)
  * mmul64:                                ARC Options.        (line  132)
*************** look up both forms.
*** 75014,75020 ****
  * mmulhw:                                RS/6000 and PowerPC Options.
                                                               (line  379)
  * mmult-bug:                             MN10300 Options.    (line    8)
! * mmultcost:                             ARC Options.        (line  586)
  * mmulti-cond-exec:                      FRV Options.        (line  214)
  * mmulticore:                            Blackfin Options.   (line  138)
  * mmultiple:                             RS/6000 and PowerPC Options.
--- 75023,75029 ----
  * mmulhw:                                RS/6000 and PowerPC Options.
                                                               (line  379)
  * mmult-bug:                             MN10300 Options.    (line    8)
! * mmultcost:                             ARC Options.        (line  584)
  * mmulti-cond-exec:                      FRV Options.        (line  214)
  * mmulticore:                            Blackfin Options.   (line  138)
  * mmultiple:                             RS/6000 and PowerPC Options.
*************** look up both forms.
*** 75028,75034 ****
  * mmwait:                                x86 Options.        (line 1253)
  * mmwaitx:                               x86 Options.        (line 1036)
  * mn:                                    H8/300 Options.     (line   19)
! * mn-flash:                              AVR Options.        (line  787)
  * mnan=2008:                             MIPS Options.       (line  324)
  * mnan=legacy:                           MIPS Options.       (line  324)
  * mneeded:                               x86 Options.        (line 1849)
--- 75037,75043 ----
  * mmwait:                                x86 Options.        (line 1253)
  * mmwaitx:                               x86 Options.        (line 1036)
  * mn:                                    H8/300 Options.     (line   19)
! * mn-flash:                              AVR Options.        (line  780)
  * mnan=2008:                             MIPS Options.       (line  324)
  * mnan=legacy:                           MIPS Options.       (line  324)
  * mneeded:                               x86 Options.        (line 1849)
*************** look up both forms.
*** 75064,75072 ****
  * mno-bitfield:                          M680x0 Options.     (line  226)
  * mno-branch-likely:                     MIPS Options.       (line  810)
  * mno-branch-predict:                    MMIX Options.       (line   46)
! * mno-brcc:                              ARC Options.        (line  451)
  * mno-bwx:                               DEC Alpha Options.  (line  155)
! * mno-call-main:                         AVR Options.        (line  247)
  * mno-call-ms2sysv-xlogues:              x86 Options.        (line 1387)
  * mno-callgraph-data:                    MCore Options.      (line   29)
  * mno-cbcond:                            SPARC Options.      (line  263)
--- 75073,75081 ----
  * mno-bitfield:                          M680x0 Options.     (line  226)
  * mno-branch-likely:                     MIPS Options.       (line  810)
  * mno-branch-predict:                    MMIX Options.       (line   46)
! * mno-brcc:                              ARC Options.        (line  449)
  * mno-bwx:                               DEC Alpha Options.  (line  155)
! * mno-call-main:                         AVR Options.        (line  246)
  * mno-call-ms2sysv-xlogues:              x86 Options.        (line 1387)
  * mno-callgraph-data:                    MCore Options.      (line   29)
  * mno-cbcond:                            SPARC Options.      (line  263)
*************** look up both forms.
*** 75077,75086 ****
  * mno-cmpb:                              RS/6000 and PowerPC Options.
                                                               (line   21)
  * mno-co-re:                             eBPF Options.       (line   83)
! * mno-cond-exec:                         ARC Options.        (line  465)
  * mno-cond-exec <1>:                     FRV Options.        (line  193)
  * mno-cond-move:                         FRV Options.        (line  165)
! * mno-const-align:                       CRIS Options.       (line   48)
  * mno-const16:                           Xtensa Options.     (line    8)
  * mno-crc:                               MIPS Options.       (line  420)
  * mno-crt0:                              MN10300 Options.    (line   42)
--- 75086,75095 ----
  * mno-cmpb:                              RS/6000 and PowerPC Options.
                                                               (line   21)
  * mno-co-re:                             eBPF Options.       (line   83)
! * mno-cond-exec:                         ARC Options.        (line  463)
  * mno-cond-exec <1>:                     FRV Options.        (line  193)
  * mno-cond-move:                         FRV Options.        (line  165)
! * mno-const-align:                       CRIS Options.       (line   47)
  * mno-const16:                           Xtensa Options.     (line    8)
  * mno-crc:                               MIPS Options.       (line  420)
  * mno-crt0:                              MN10300 Options.    (line   42)
*************** look up both forms.
*** 75088,75094 ****
  * mno-crypto:                            RS/6000 and PowerPC Options.
                                                               (line  187)
  * mno-csync-anomaly:                     Blackfin Options.   (line   62)
! * mno-data-align:                        CRIS Options.       (line   48)
  * mno-debug:                             S/390 and zSeries Options.
                                                               (line  142)
  * mno-default:                           x86 Options.        (line 1140)
--- 75097,75103 ----
  * mno-crypto:                            RS/6000 and PowerPC Options.
                                                               (line  187)
  * mno-csync-anomaly:                     Blackfin Options.   (line   62)
! * mno-data-align:                        CRIS Options.       (line   47)
  * mno-debug:                             S/390 and zSeries Options.
                                                               (line  142)
  * mno-default:                           x86 Options.        (line 1140)
*************** look up both forms.
*** 75189,75195 ****
  * mno-int32:                             PDP-11 Options.     (line   31)
  * mno-interlink-compressed:              MIPS Options.       (line  139)
  * mno-interlink-mips16:                  MIPS Options.       (line  151)
! * mno-interrupts:                        AVR Options.        (line  263)
  * mno-isel:                              RS/6000 and PowerPC Options.
                                                               (line  176)
  * mno-jsr:                               RX Options.         (line  167)
--- 75198,75204 ----
  * mno-int32:                             PDP-11 Options.     (line   31)
  * mno-interlink-compressed:              MIPS Options.       (line  139)
  * mno-interlink-mips16:                  MIPS Options.       (line  151)
! * mno-interrupts:                        AVR Options.        (line  261)
  * mno-isel:                              RS/6000 and PowerPC Options.
                                                               (line  176)
  * mno-jsr:                               RX Options.         (line  167)
*************** look up both forms.
*** 75242,75248 ****
  * mno-mpy:                               ARC Options.        (line  125)
  * mno-ms-bitfields:                      x86 Options.        (line 1426)
  * mno-mt:                                MIPS Options.       (line  399)
! * mno-mul-bug-workaround:                CRIS Options.       (line   29)
  * mno-muladd:                            FRV Options.        (line   67)
  * mno-mulhw:                             RS/6000 and PowerPC Options.
                                                               (line  379)
--- 75251,75257 ----
  * mno-mpy:                               ARC Options.        (line  125)
  * mno-ms-bitfields:                      x86 Options.        (line 1426)
  * mno-mt:                                MIPS Options.       (line  399)
! * mno-mul-bug-workaround:                CRIS Options.       (line   28)
  * mno-muladd:                            FRV Options.        (line   67)
  * mno-mulhw:                             RS/6000 and PowerPC Options.
                                                               (line  379)
*************** look up both forms.
*** 75291,75297 ****
  * mno-privileged:                        RS/6000 and PowerPC Options.
                                                               (line  953)
  * mno-prolog-function:                   V850 Options.       (line   21)
! * mno-prologue-epilogue:                 CRIS Options.       (line   68)
  * mno-prototype:                         RS/6000 and PowerPC Options.
                                                               (line  594)
  * mno-push-args:                         x86 Options.        (line 1403)
--- 75300,75306 ----
  * mno-privileged:                        RS/6000 and PowerPC Options.
                                                               (line  953)
  * mno-prolog-function:                   V850 Options.       (line   21)
! * mno-prologue-epilogue:                 CRIS Options.       (line   67)
  * mno-prototype:                         RS/6000 and PowerPC Options.
                                                               (line  594)
  * mno-push-args:                         x86 Options.        (line 1403)
*************** look up both forms.
*** 75333,75339 ****
  * mno-sched-prefer-non-control-spec-insns: IA-64 Options.    (line  176)
  * mno-sched-prefer-non-data-spec-insns:  IA-64 Options.      (line  169)
  * mno-sched-prolog:                      ARM Options.        (line   31)
! * mno-sdata:                             ARC Options.        (line  429)
  * mno-sdata <1>:                         IA-64 Options.      (line   40)
  * mno-sdata <2>:                         RS/6000 and PowerPC Options.
                                                               (line  680)
--- 75342,75348 ----
  * mno-sched-prefer-non-control-spec-insns: IA-64 Options.    (line  176)
  * mno-sched-prefer-non-data-spec-insns:  IA-64 Options.      (line  169)
  * mno-sched-prolog:                      ARM Options.        (line   31)
! * mno-sdata:                             ARC Options.        (line  427)
  * mno-sdata <1>:                         IA-64 Options.      (line   40)
  * mno-sdata <2>:                         RS/6000 and PowerPC Options.
                                                               (line  680)
*************** look up both forms.
*** 75341,75347 ****
  * mno-serialize-volatile:                Xtensa Options.     (line   33)
  * mno-setlb:                             MN10300 Options.    (line   68)
  * mno-short:                             M680x0 Options.     (line  222)
! * mno-side-effects:                      CRIS Options.       (line   44)
  * mno-sim:                               RX Options.         (line   69)
  * mno-single-exit:                       MMIX Options.       (line   63)
  * mno-slow-bytes:                        MCore Options.      (line   33)
--- 75350,75356 ----
  * mno-serialize-volatile:                Xtensa Options.     (line   33)
  * mno-setlb:                             MN10300 Options.    (line   68)
  * mno-short:                             M680x0 Options.     (line  222)
! * mno-side-effects:                      CRIS Options.       (line   43)
  * mno-sim:                               RX Options.         (line   69)
  * mno-single-exit:                       MMIX Options.       (line   63)
  * mno-slow-bytes:                        MCore Options.      (line   33)
*************** look up both forms.
*** 75357,75363 ****
  * mno-split-addresses:                   MIPS Options.       (line  559)
  * mno-split-lohi:                        Adapteva Epiphany Options.
                                                               (line  106)
! * mno-stack-align:                       CRIS Options.       (line   48)
  * mno-stack-bias:                        SPARC Options.      (line  375)
  * mno-std-struct-return:                 SPARC Options.      (line  100)
  * mno-strict-align:                      AArch64 Options.    (line   61)
--- 75366,75372 ----
  * mno-split-addresses:                   MIPS Options.       (line  559)
  * mno-split-lohi:                        Adapteva Epiphany Options.
                                                               (line  106)
! * mno-stack-align:                       CRIS Options.       (line   47)
  * mno-stack-bias:                        SPARC Options.      (line  375)
  * mno-std-struct-return:                 SPARC Options.      (line  100)
  * mno-strict-align:                      AArch64 Options.    (line   61)
*************** look up both forms.
*** 75404,75410 ****
  * mno-vis4b:                             SPARC Options.      (line  253)
  * mno-vliw-branch:                       FRV Options.        (line  207)
  * mno-volatile-asm-stop:                 IA-64 Options.      (line   30)
! * mno-volatile-cache:                    ARC Options.        (line  438)
  * mno-vrsave:                            RS/6000 and PowerPC Options.
                                                               (line  151)
  * mno-vsx:                               RS/6000 and PowerPC Options.
--- 75413,75419 ----
  * mno-vis4b:                             SPARC Options.      (line  253)
  * mno-vliw-branch:                       FRV Options.        (line  207)
  * mno-volatile-asm-stop:                 IA-64 Options.      (line   30)
! * mno-volatile-cache:                    ARC Options.        (line  436)
  * mno-vrsave:                            RS/6000 and PowerPC Options.
                                                               (line  151)
  * mno-vsx:                               RS/6000 and PowerPC Options.
*************** look up both forms.
*** 75466,75472 ****
  * mpcrel:                                M680x0 Options.     (line  273)
  * mpcrel <1>:                            RS/6000 and PowerPC Options.
                                                               (line  930)
! * mpdebug:                               CRIS Options.       (line   34)
  * mpe:                                   RS/6000 and PowerPC Options.
                                                               (line  312)
  * mpe-aligned-commons:                   Cygwin and MinGW Options.
--- 75475,75481 ----
  * mpcrel:                                M680x0 Options.     (line  273)
  * mpcrel <1>:                            RS/6000 and PowerPC Options.
                                                               (line  930)
! * mpdebug:                               CRIS Options.       (line   33)
  * mpe:                                   RS/6000 and PowerPC Options.
                                                               (line  312)
  * mpe-aligned-commons:                   Cygwin and MinGW Options.
*************** look up both forms.
*** 75520,75526 ****
  * mprivileged:                           RS/6000 and PowerPC Options.
                                                               (line  953)
  * mprolog-function:                      V850 Options.       (line   21)
! * mprologue-epilogue:                    CRIS Options.       (line   68)
  * mprototype:                            RS/6000 and PowerPC Options.
                                                               (line  594)
  * mptwrite:                              x86 Options.        (line 1007)
--- 75529,75535 ----
  * mprivileged:                           RS/6000 and PowerPC Options.
                                                               (line  953)
  * mprolog-function:                      V850 Options.       (line   21)
! * mprologue-epilogue:                    CRIS Options.       (line   67)
  * mprototype:                            RS/6000 and PowerPC Options.
                                                               (line  594)
  * mptwrite:                              x86 Options.        (line 1007)
*************** look up both forms.
*** 75530,75544 ****
  * mpushpop:                              C-SKY Options.      (line  128)
  * MQ:                                    Preprocessor Options.
                                                               (line  161)
! * mq-class:                              ARC Options.        (line  524)
  * mquad-memory:                          RS/6000 and PowerPC Options.
                                                               (line  205)
  * mquad-memory-atomic:                   RS/6000 and PowerPC Options.
                                                               (line  211)
  * mr10k-cache-barrier:                   MIPS Options.       (line  733)
  * mraoint:                               x86 Options.        (line 1070)
! * mRcq:                                  ARC Options.        (line  528)
! * mRcw:                                  ARC Options.        (line  531)
  * mrdpid:                                x86 Options.        (line 1015)
  * mrdrnd:                                x86 Options.        (line 1008)
  * mrdseed:                               x86 Options.        (line 1016)
--- 75539,75553 ----
  * mpushpop:                              C-SKY Options.      (line  128)
  * MQ:                                    Preprocessor Options.
                                                               (line  161)
! * mq-class:                              ARC Options.        (line  522)
  * mquad-memory:                          RS/6000 and PowerPC Options.
                                                               (line  205)
  * mquad-memory-atomic:                   RS/6000 and PowerPC Options.
                                                               (line  211)
  * mr10k-cache-barrier:                   MIPS Options.       (line  733)
  * mraoint:                               x86 Options.        (line 1070)
! * mRcq:                                  ARC Options.        (line  526)
! * mRcw:                                  ARC Options.        (line  529)
  * mrdpid:                                x86 Options.        (line 1015)
  * mrdrnd:                                x86 Options.        (line 1008)
  * mrdseed:                               x86 Options.        (line 1016)
*************** look up both forms.
*** 75562,75568 ****
  * mregnames:                             RS/6000 and PowerPC Options.
                                                               (line  723)
  * mregparm:                              x86 Options.        (line  867)
! * mrelax:                                AVR Options.        (line  267)
  * mrelax <1>:                            H8/300 Options.     (line    8)
  * mrelax <2>:                            LoongArch Options.  (line  220)
  * mrelax <3>:                            MN10300 Options.    (line   45)
--- 75571,75577 ----
  * mregnames:                             RS/6000 and PowerPC Options.
                                                               (line  723)
  * mregparm:                              x86 Options.        (line  867)
! * mrelax:                                AVR Options.        (line  265)
  * mrelax <1>:                            H8/300 Options.     (line    8)
  * mrelax <2>:                            LoongArch Options.  (line  220)
  * mrelax <3>:                            MN10300 Options.    (line   45)
*************** look up both forms.
*** 75587,75594 ****
  * mrh850-abi:                            V850 Options.       (line  125)
  * mriscv-attribute:                      RISC-V Options.     (line  520)
  * mrl78:                                 RL78 Options.       (line   58)
! * mrmw:                                  AVR Options.        (line  795)
! * mrodata-in-ram:                        AVR Options.        (line  281)
  * mrop-protect:                          RS/6000 and PowerPC Options.
                                                               (line  947)
  * mror:                                  OpenRISC Options.   (line   48)
--- 75596,75603 ----
  * mrh850-abi:                            V850 Options.       (line  125)
  * mriscv-attribute:                      RISC-V Options.     (line  520)
  * mrl78:                                 RL78 Options.       (line   58)
! * mrmw:                                  AVR Options.        (line  788)
! * mrodata-in-ram:                        AVR Options.        (line  279)
  * mrop-protect:                          RS/6000 and PowerPC Options.
                                                               (line  947)
  * mror:                                  OpenRISC Options.   (line   48)
*************** look up both forms.
*** 75635,75641 ****
  * msched-stop-bits-after-every-cycle:    IA-64 Options.      (line  197)
  * mschedule:                             HPPA Options.       (line  159)
  * msda:                                  V850 Options.       (line   39)
! * msdata:                                ARC Options.        (line  429)
  * msdata <1>:                            IA-64 Options.      (line   40)
  * msdata <2>:                            RS/6000 and PowerPC Options.
                                                               (line  667)
--- 75644,75650 ----
  * msched-stop-bits-after-every-cycle:    IA-64 Options.      (line  197)
  * mschedule:                             HPPA Options.       (line  159)
  * msda:                                  V850 Options.       (line   39)
! * msdata:                                ARC Options.        (line  427)
  * msdata <1>:                            IA-64 Options.      (line   40)
  * msdata <2>:                            RS/6000 and PowerPC Options.
                                                               (line  667)
*************** look up both forms.
*** 75674,75683 ****
  * mshared-library-id:                    Blackfin Options.   (line   99)
  * mshftimm:                              OpenRISC Options.   (line   67)
  * mshort:                                M680x0 Options.     (line  216)
! * mshort-calls:                          AVR Options.        (line  799)
  * mshorten-memrefs:                      RISC-V Options.     (line  459)
  * mshstk:                                x86 Options.        (line 1243)
! * mside-effects:                         CRIS Options.       (line   44)
  * msign-extend-enabled:                  LM32 Options.       (line   17)
  * msign-return-address:                  AArch64 Options.    (line  311)
  * msilicon-errata:                       MSP430 Options.     (line  158)
--- 75683,75692 ----
  * mshared-library-id:                    Blackfin Options.   (line   99)
  * mshftimm:                              OpenRISC Options.   (line   67)
  * mshort:                                M680x0 Options.     (line  216)
! * mshort-calls:                          AVR Options.        (line  792)
  * mshorten-memrefs:                      RISC-V Options.     (line  459)
  * mshstk:                                x86 Options.        (line 1243)
! * mside-effects:                         CRIS Options.       (line   43)
  * msign-extend-enabled:                  LM32 Options.       (line   17)
  * msign-return-address:                  AArch64 Options.    (line  311)
  * msilicon-errata:                       MSP430 Options.     (line  158)
*************** look up both forms.
*** 75703,75710 ****
  * msingle-pic-base <1>:                  RS/6000 and PowerPC Options.
                                                               (line  453)
  * msio:                                  HPPA Options.       (line  166)
! * msize-level:                           ARC Options.        (line  534)
! * mskip-bug:                             AVR Options.        (line  805)
  * mskip-rax-setup:                       x86 Options.        (line 1660)
  * mslow-bytes:                           MCore Options.      (line   33)
  * mslow-flash-data:                      ARM Options.        (line  968)
--- 75712,75719 ----
  * msingle-pic-base <1>:                  RS/6000 and PowerPC Options.
                                                               (line  453)
  * msio:                                  HPPA Options.       (line  166)
! * msize-level:                           ARC Options.        (line  532)
! * mskip-bug:                             AVR Options.        (line  798)
  * mskip-rax-setup:                       x86 Options.        (line 1660)
  * mslow-bytes:                           MCore Options.      (line   33)
  * mslow-flash-data:                      ARM Options.        (line  968)
*************** look up both forms.
*** 75751,75770 ****
  * msoft-mult:                            HPPA Options.       (line  186)
  * msoft-quad-float:                      SPARC Options.      (line   58)
  * msoft-stack:                           Nvidia PTX Options. (line   51)
! * msp8:                                  AVR Options.        (line  810)
  * mspace:                                V850 Options.       (line   29)
  * mspace-regs:                           HPPA Options.       (line  145)
  * mspecld-anomaly:                       Blackfin Options.   (line   47)
  * mspecld-anomaly <1>:                   Blackfin Options.   (line   52)
  * mspfp:                                 ARC Options.        (line  140)
  * mspfp-compact:                         ARC Options.        (line  140)
  * mspfp-fast:                            ARC Options.        (line  145)
- * mspfp_compact:                         ARC Options.        (line  637)
- * mspfp_fast:                            ARC Options.        (line  640)
  * msplit:                                PDP-11 Options.     (line   39)
  * msplit-addresses:                      MIPS Options.       (line  559)
! * msplit-bit-shift:                      AVR Options.        (line  408)
! * msplit-ldst:                           AVR Options.        (line  416)
  * msplit-lohi:                           Adapteva Epiphany Options.
                                                               (line  106)
  * msplit-patch-nops:                     RS/6000 and PowerPC Options.
--- 75760,75779 ----
  * msoft-mult:                            HPPA Options.       (line  186)
  * msoft-quad-float:                      SPARC Options.      (line   58)
  * msoft-stack:                           Nvidia PTX Options. (line   51)
! * msp8:                                  AVR Options.        (line  803)
  * mspace:                                V850 Options.       (line   29)
  * mspace-regs:                           HPPA Options.       (line  145)
  * mspecld-anomaly:                       Blackfin Options.   (line   47)
  * mspecld-anomaly <1>:                   Blackfin Options.   (line   52)
  * mspfp:                                 ARC Options.        (line  140)
+ * mspfp_compact:                         ARC Options.        (line  632)
+ * mspfp_fast:                            ARC Options.        (line  635)
  * mspfp-compact:                         ARC Options.        (line  140)
  * mspfp-fast:                            ARC Options.        (line  145)
  * msplit:                                PDP-11 Options.     (line   39)
  * msplit-addresses:                      MIPS Options.       (line  559)
! * msplit-bit-shift:                      AVR Options.        (line  406)
! * msplit-ldst:                           AVR Options.        (line  414)
  * msplit-lohi:                           Adapteva Epiphany Options.
                                                               (line  106)
  * msplit-patch-nops:                     RS/6000 and PowerPC Options.
*************** look up both forms.
*** 75782,75788 ****
  * msse4a:                                x86 Options.        (line  989)
  * msseregparm:                           x86 Options.        (line  878)
  * mssse3:                                x86 Options.        (line  987)
! * mstack-align:                          CRIS Options.       (line   48)
  * mstack-bias:                           SPARC Options.      (line  375)
  * mstack-check-l1:                       Blackfin Options.   (line   73)
  * mstack-guard:                          S/390 and zSeries Options.
--- 75791,75797 ----
  * msse4a:                                x86 Options.        (line  989)
  * msseregparm:                           x86 Options.        (line  878)
  * mssse3:                                x86 Options.        (line  987)
! * mstack-align:                          CRIS Options.       (line   47)
  * mstack-bias:                           SPARC Options.      (line  375)
  * mstack-check-l1:                       Blackfin Options.   (line   73)
  * mstack-guard:                          S/390 and zSeries Options.
*************** look up both forms.
*** 75823,75829 ****
  * mstrict-align <5>:                     RS/6000 and PowerPC Options.
                                                               (line  404)
  * mstrict-align <6>:                     Xtensa Options.     (line  130)
! * mstrict-X:                             AVR Options.        (line  394)
  * mstring-compare-inline-limit:          RS/6000 and PowerPC Options.
                                                               (line  710)
  * mstringop-strategy=ALG:                x86 Options.        (line 1564)
--- 75832,75838 ----
  * mstrict-align <5>:                     RS/6000 and PowerPC Options.
                                                               (line  404)
  * mstrict-align <6>:                     Xtensa Options.     (line  130)
! * mstrict-X:                             AVR Options.        (line  392)
  * mstring-compare-inline-limit:          RS/6000 and PowerPC Options.
                                                               (line  710)
  * mstringop-strategy=ALG:                x86 Options.        (line 1564)
*************** look up both forms.
*** 75851,75857 ****
  * mthumb:                                ARM Options.        (line  862)
  * mthumb-interwork:                      ARM Options.        (line   23)
  * mtiny-printf:                          MSP430 Options.     (line  121)
! * mtiny-stack:                           AVR Options.        (line  293)
  * mTLS:                                  FRV Options.        (line   89)
  * mtls:                                  FRV Options.        (line   93)
  * mtls-dialect:                          ARM Options.        (line  918)
--- 75860,75866 ----
  * mthumb:                                ARM Options.        (line  862)
  * mthumb-interwork:                      ARM Options.        (line   23)
  * mtiny-printf:                          MSP430 Options.     (line  121)
! * mtiny-stack:                           AVR Options.        (line  291)
  * mTLS:                                  FRV Options.        (line   89)
  * mtls:                                  FRV Options.        (line   93)
  * mtls-dialect:                          ARM Options.        (line  918)
*************** look up both forms.
*** 75886,75895 ****
  * mtsxldtrk:                             x86 Options.        (line 1051)
  * mtune:                                 AArch64 Options.    (line  214)
  * mtune <1>:                             AMD GCN Options.    (line    8)
! * mtune <2>:                             ARC Options.        (line  555)
! * mtune <3>:                             ARC Options.        (line  643)
  * mtune <4>:                             ARM Options.        (line  580)
! * mtune <5>:                             CRIS Options.       (line   15)
  * mtune <6>:                             DEC Alpha Options.  (line  272)
  * mtune <7>:                             IA-64 Options.      (line  115)
  * mtune <8>:                             LoongArch Options.  (line   32)
--- 75895,75904 ----
  * mtsxldtrk:                             x86 Options.        (line 1051)
  * mtune:                                 AArch64 Options.    (line  214)
  * mtune <1>:                             AMD GCN Options.    (line    8)
! * mtune <2>:                             ARC Options.        (line  553)
! * mtune <3>:                             ARC Options.        (line  638)
  * mtune <4>:                             ARM Options.        (line  580)
! * mtune <5>:                             CRIS Options.       (line   14)
  * mtune <6>:                             DEC Alpha Options.  (line  272)
  * mtune <7>:                             IA-64 Options.      (line  115)
  * mtune <8>:                             LoongArch Options.  (line   32)
*************** look up both forms.
*** 75907,75920 ****
  * mtune-ctrl=FEATURE-LIST:               x86 Options.        (line 1131)
  * muclibc:                               GNU/Linux Options.  (line   13)
  * muintr:                                x86 Options.        (line 1049)
! * multcost:                              ARC Options.        (line  648)
  * multcost=NUMBER:                       SH Options.         (line  280)
  * multilib-library-pic:                  FRV Options.        (line  109)
- * multiply-enabled:                      LM32 Options.       (line   14)
  * multiply_defined:                      Darwin Options.     (line  204)
  * multiply_defined_unused:               Darwin Options.     (line  204)
! * multi_module:                          Darwin Options.     (line  204)
! * munalign-prob-threshold:               ARC Options.        (line  590)
  * munaligned-access:                     ARM Options.        (line  951)
  * munaligned-access <1>:                 MIPS Options.       (line  605)
  * munaligned-doubles:                    SPARC Options.      (line   71)
--- 75916,75929 ----
  * mtune-ctrl=FEATURE-LIST:               x86 Options.        (line 1131)
  * muclibc:                               GNU/Linux Options.  (line   13)
  * muintr:                                x86 Options.        (line 1049)
! * multcost:                              ARC Options.        (line  643)
  * multcost=NUMBER:                       SH Options.         (line  280)
+ * multi_module:                          Darwin Options.     (line  204)
  * multilib-library-pic:                  FRV Options.        (line  109)
  * multiply_defined:                      Darwin Options.     (line  204)
  * multiply_defined_unused:               Darwin Options.     (line  204)
! * multiply-enabled:                      LM32 Options.       (line   14)
! * munalign-prob-threshold:               ARC Options.        (line  588)
  * munaligned-access:                     ARM Options.        (line  951)
  * munaligned-access <1>:                 MIPS Options.       (line  605)
  * munaligned-doubles:                    SPARC Options.      (line   71)
*************** look up both forms.
*** 75928,75934 ****
  * munroll-only-small-loops:              x86 Options.        (line 1866)
  * mupdate:                               RS/6000 and PowerPC Options.
                                                               (line  351)
! * muse-nonzero-bits:                     AVR Options.        (line  421)
  * muser-enabled:                         LM32 Options.       (line   20)
  * muser-mode:                            SPARC Options.      (line   83)
  * muser-mode <1>:                        Visium Options.     (line   56)
--- 75937,75943 ----
  * munroll-only-small-loops:              x86 Options.        (line 1866)
  * mupdate:                               RS/6000 and PowerPC Options.
                                                               (line  351)
! * muse-nonzero-bits:                     AVR Options.        (line  419)
  * muser-enabled:                         LM32 Options.       (line   20)
  * muser-mode:                            SPARC Options.      (line   83)
  * muser-mode <1>:                        Visium Options.     (line   56)
*************** look up both forms.
*** 75966,75973 ****
  * mvliw-branch:                          FRV Options.        (line  200)
  * mvms-return-codes:                     VMS Options.        (line    8)
  * mvolatile-asm-stop:                    IA-64 Options.      (line   30)
! * mvolatile-cache:                       ARC Options.        (line  434)
! * mvolatile-cache <1>:                   ARC Options.        (line  438)
  * mvpclmulqdq:                           x86 Options.        (line 1045)
  * mvr4130-align:                         MIPS Options.       (line  854)
  * mvrsave:                               RS/6000 and PowerPC Options.
--- 75975,75982 ----
  * mvliw-branch:                          FRV Options.        (line  200)
  * mvms-return-codes:                     VMS Options.        (line    8)
  * mvolatile-asm-stop:                    IA-64 Options.      (line   30)
! * mvolatile-cache:                       ARC Options.        (line  432)
! * mvolatile-cache <1>:                   ARC Options.        (line  436)
  * mvpclmulqdq:                           x86 Options.        (line 1045)
  * mvr4130-align:                         MIPS Options.       (line  854)
  * mvrsave:                               RS/6000 and PowerPC Options.
*************** look up both forms.
*** 76027,76032 ****
--- 76036,76042 ----
  * mzero-extend:                          MMIX Options.       (line   24)
  * mzvector:                              S/390 and zSeries Options.
                                                               (line  121)
+ * no_dead_strip_inits_and_terms:         Darwin Options.     (line  204)
  * no-80387:                              x86 Options.        (line  742)
  * no-block-ops-unaligned-vsx:            RS/6000 and PowerPC Options.
                                                               (line  957)
*************** look up both forms.
*** 76039,76046 ****
  * nocpp:                                 MIPS Options.       (line  655)
  * nodefaultlibs:                         Link Options.       (line  121)
  * nodefaultrpaths:                       Darwin Options.     (line  146)
! * nodevicelib:                           AVR Options.        (line  300)
! * nodevicespecs:                         AVR Options.        (line  315)
  * nofixprebinding:                       Darwin Options.     (line  204)
  * nofpu:                                 RX Options.         (line   15)
  * nolibc:                                Link Options.       (line  133)
--- 76049,76056 ----
  * nocpp:                                 MIPS Options.       (line  655)
  * nodefaultlibs:                         Link Options.       (line  121)
  * nodefaultrpaths:                       Darwin Options.     (line  146)
! * nodevicelib:                           AVR Options.        (line  298)
! * nodevicespecs:                         AVR Options.        (line  313)
  * nofixprebinding:                       Darwin Options.     (line  204)
  * nofpu:                                 RX Options.         (line   15)
  * nolibc:                                Link Options.       (line  133)
*************** look up both forms.
*** 76056,76063 ****
  * nostdinc++ <1>:                        Directory Options.  (line  107)
  * nostdlib:                              Link Options.       (line  145)
  * nostdlib++:                            Link Options.       (line  170)
! * no_dead_strip_inits_and_terms:         Darwin Options.     (line  204)
! * o:                                     Overall Options.    (line  205)
  * O:                                     Optimize Options.   (line   37)
  * O0:                                    Optimize Options.   (line  172)
  * O1:                                    Optimize Options.   (line   37)
--- 76066,76072 ----
  * nostdinc++ <1>:                        Directory Options.  (line  107)
  * nostdlib:                              Link Options.       (line  145)
  * nostdlib++:                            Link Options.       (line  170)
! * o:                                     Overall Options.    (line  209)
  * O:                                     Optimize Options.   (line   37)
  * O0:                                    Optimize Options.   (line  172)
  * O1:                                    Optimize Options.   (line   37)
*************** look up both forms.
*** 76075,76081 ****
                                                               (line  885)
  * pagezero_size:                         Darwin Options.     (line  204)
  * param:                                 Optimize Options.   (line 2913)
! * pass-exit-codes:                       Overall Options.    (line  609)
  * pedantic:                              Standards.          (line   13)
  * pedantic <1>:                          Warning Options.    (line   87)
  * pedantic <2>:                          C Extensions.       (line    6)
--- 76084,76090 ----
                                                               (line  885)
  * pagezero_size:                         Darwin Options.     (line  204)
  * param:                                 Optimize Options.   (line 2913)
! * pass-exit-codes:                       Overall Options.    (line  613)
  * pedantic:                              Standards.          (line   13)
  * pedantic <1>:                          Warning Options.    (line   87)
  * pedantic <2>:                          C Extensions.       (line    6)
*************** look up both forms.
*** 76092,76098 ****
  * pg <1>:                                Common Function Attributes.
                                                               (line  885)
  * pie:                                   Link Options.       (line  180)
! * pipe:                                  Overall Options.    (line  617)
  * plt:                                   RISC-V Options.     (line   11)
  * prebind:                               Darwin Options.     (line  204)
  * prebind_all_twolevel_modules:          Darwin Options.     (line  204)
--- 76101,76107 ----
  * pg <1>:                                Common Function Attributes.
                                                               (line  885)
  * pie:                                   Link Options.       (line  180)
! * pipe:                                  Overall Options.    (line  621)
  * plt:                                   RISC-V Options.     (line   11)
  * prebind:                               Darwin Options.     (line  204)
  * prebind_all_twolevel_modules:          Darwin Options.     (line  204)
*************** look up both forms.
*** 76113,76119 ****
                                                               (line   69)
  * pthread <1>:                           Link Options.       (line  197)
  * pthreads:                              Solaris 2 Options.  (line   29)
! * Q:                                     Overall Options.    (line  578)
  * Q <1>:                                 Developer Options.  (line  912)
  * Qn:                                    System V Options.   (line   17)
  * Qy:                                    System V Options.   (line   13)
--- 76122,76128 ----
                                                               (line   69)
  * pthread <1>:                           Link Options.       (line  197)
  * pthreads:                              Solaris 2 Options.  (line   29)
! * Q:                                     Overall Options.    (line  582)
  * Q <1>:                                 Developer Options.  (line  912)
  * Qn:                                    System V Options.   (line   17)
  * Qy:                                    System V Options.   (line   13)
*************** look up both forms.
*** 76122,76128 ****
  * read_only_relocs:                      Darwin Options.     (line  204)
  * remap:                                 Preprocessor Options.
                                                               (line  412)
! * S:                                     Overall Options.    (line  188)
  * S <1>:                                 Link Options.       (line   17)
  * s:                                     Link Options.       (line  215)
  * save-temps:                            Developer Options.  (line  808)
--- 76131,76137 ----
  * read_only_relocs:                      Darwin Options.     (line  204)
  * remap:                                 Preprocessor Options.
                                                               (line  412)
! * S:                                     Overall Options.    (line  192)
  * S <1>:                                 Link Options.       (line   17)
  * s:                                     Link Options.       (line  215)
  * save-temps:                            Developer Options.  (line  808)
*************** look up both forms.
*** 76133,76138 ****
--- 76142,76149 ----
  * sectobjectsymbols:                     Darwin Options.     (line  204)
  * sectobjectsymbols <1>:                 Darwin Options.     (line  204)
  * sectorder:                             Darwin Options.     (line  204)
+ * seg_addr_table:                        Darwin Options.     (line  204)
+ * seg_addr_table_filename:               Darwin Options.     (line  204)
  * seg1addr:                              Darwin Options.     (line  204)
  * segaddr:                               Darwin Options.     (line  204)
  * seglinkedit:                           Darwin Options.     (line  204)
*************** look up both forms.
*** 76141,76156 ****
  * segs_read_only_addr <1>:               Darwin Options.     (line  204)
  * segs_read_write_addr:                  Darwin Options.     (line  204)
  * segs_read_write_addr <1>:              Darwin Options.     (line  204)
- * seg_addr_table:                        Darwin Options.     (line  204)
- * seg_addr_table_filename:               Darwin Options.     (line  204)
  * shared:                                Link Options.       (line  224)
  * shared-libgcc:                         Link Options.       (line  231)
  * short-calls:                           Adapteva Epiphany Options.
                                                               (line   60)
! * sim:                                   CRIS Options.       (line   81)
! * sim2:                                  CRIS Options.       (line   86)
  * single_module:                         Darwin Options.     (line  204)
! * specs:                                 Overall Options.    (line  623)
  * static:                                Link Options.       (line  219)
  * static <1>:                            Darwin Options.     (line  204)
  * static <2>:                            HPPA Options.       (line  221)
--- 76152,76165 ----
  * segs_read_only_addr <1>:               Darwin Options.     (line  204)
  * segs_read_write_addr:                  Darwin Options.     (line  204)
  * segs_read_write_addr <1>:              Darwin Options.     (line  204)
  * shared:                                Link Options.       (line  224)
  * shared-libgcc:                         Link Options.       (line  231)
  * short-calls:                           Adapteva Epiphany Options.
                                                               (line   60)
! * sim:                                   CRIS Options.       (line   80)
! * sim2:                                  CRIS Options.       (line   85)
  * single_module:                         Darwin Options.     (line  204)
! * specs:                                 Overall Options.    (line  627)
  * static:                                Link Options.       (line  219)
  * static <1>:                            Darwin Options.     (line  204)
  * static <2>:                            HPPA Options.       (line  221)
*************** look up both forms.
*** 76172,76178 ****
  * symbolic:                              Link Options.       (line  310)
  * sysroot:                               Directory Options.  (line  175)
  * T:                                     Link Options.       (line  316)
! * target-help:                           Overall Options.    (line  499)
  * threads:                               HPPA Options.       (line  234)
  * time:                                  Developer Options.  (line  828)
  * tno-android-cc:                        GNU/Linux Options.  (line   35)
--- 76181,76187 ----
  * symbolic:                              Link Options.       (line  310)
  * sysroot:                               Directory Options.  (line  175)
  * T:                                     Link Options.       (line  316)
! * target-help:                           Overall Options.    (line  503)
  * threads:                               HPPA Options.       (line  234)
  * time:                                  Developer Options.  (line  828)
  * tno-android-cc:                        GNU/Linux Options.  (line   35)
*************** look up both forms.
*** 76193,76200 ****
                                                               (line   65)
  * undefined:                             Darwin Options.     (line  204)
  * unexported_symbols_list:               Darwin Options.     (line  204)
! * v:                                     Overall Options.    (line  478)
! * version:                               Overall Options.    (line  606)
  * w:                                     Warning Options.    (line   24)
  * W:                                     Warning Options.    (line  291)
  * W <1>:                                 Warning Options.    (line 3556)
--- 76202,76209 ----
                                                               (line   65)
  * undefined:                             Darwin Options.     (line  204)
  * unexported_symbols_list:               Darwin Options.     (line  204)
! * v:                                     Overall Options.    (line  482)
! * version:                               Overall Options.    (line  610)
  * w:                                     Warning Options.    (line   24)
  * W:                                     Warning Options.    (line  291)
  * W <1>:                                 Warning Options.    (line 3556)
*************** look up both forms.
*** 76205,76211 ****
  * Wabi-tag:                              C++ Dialect Options.
                                                               (line  746)
  * Wabsolute-value:                       Warning Options.    (line 2807)
! * Waddr-space-convert:                   AVR Options.        (line  330)
  * Waddress:                              Warning Options.    (line 3326)
  * Waddress-of-packed-member:             Warning Options.    (line 3360)
  * Waggregate-return:                     Warning Options.    (line 3388)
--- 76214,76220 ----
  * Wabi-tag:                              C++ Dialect Options.
                                                               (line  746)
  * Wabsolute-value:                       Warning Options.    (line 2807)
! * Waddr-space-convert:                   AVR Options.        (line  328)
  * Waddress:                              Warning Options.    (line 3326)
  * Waddress-of-packed-member:             Warning Options.    (line 3360)
  * Waggregate-return:                     Warning Options.    (line 3388)
*************** look up both forms.
*** 76547,76553 ****
  * Wmissing-requires:                     Warning Options.    (line 3586)
  * Wmissing-template-keyword:             Warning Options.    (line 3603)
  * Wmissing-variable-declarations:        Warning Options.    (line 3541)
! * Wmisspelled-isr:                       AVR Options.        (line  335)
  * Wmultichar:                            Warning Options.    (line 3631)
  * Wmultiple-inheritance:                 C++ Dialect Options.
                                                               (line 1405)
--- 76556,76562 ----
  * Wmissing-requires:                     Warning Options.    (line 3586)
  * Wmissing-template-keyword:             Warning Options.    (line 3603)
  * Wmissing-variable-declarations:        Warning Options.    (line 3541)
! * Wmisspelled-isr:                       AVR Options.        (line  333)
  * Wmultichar:                            Warning Options.    (line 3631)
  * Wmultiple-inheritance:                 C++ Dialect Options.
                                                               (line 1405)
*************** look up both forms.
*** 76559,76565 ****
  * Wnested-externs:                       Warning Options.    (line 3814)
  * Wno-abi:                               Warning Options.    (line  345)
  * Wno-absolute-value:                    Warning Options.    (line 2807)
! * Wno-addr-space-convert:                AVR Options.        (line  330)
  * Wno-address:                           Warning Options.    (line 3326)
  * Wno-address-of-packed-member:          Warning Options.    (line 3360)
  * Wno-aggregate-return:                  Warning Options.    (line 3388)
--- 76568,76574 ----
  * Wnested-externs:                       Warning Options.    (line 3814)
  * Wno-abi:                               Warning Options.    (line  345)
  * Wno-absolute-value:                    Warning Options.    (line 2807)
! * Wno-addr-space-convert:                AVR Options.        (line  328)
  * Wno-address:                           Warning Options.    (line 3326)
  * Wno-address-of-packed-member:          Warning Options.    (line 3360)
  * Wno-aggregate-return:                  Warning Options.    (line 3388)
*************** look up both forms.
*** 76878,76884 ****
  * Wno-missing-requires:                  Warning Options.    (line 3586)
  * Wno-missing-template-keyword:          Warning Options.    (line 3603)
  * Wno-missing-variable-declarations:     Warning Options.    (line 3541)
! * Wno-misspelled-isr:                    AVR Options.        (line  335)
  * Wno-multichar:                         Warning Options.    (line 3631)
  * Wno-multiple-inheritance:              C++ Dialect Options.
                                                               (line 1405)
--- 76887,76893 ----
  * Wno-missing-requires:                  Warning Options.    (line 3586)
  * Wno-missing-template-keyword:          Warning Options.    (line 3603)
  * Wno-missing-variable-declarations:     Warning Options.    (line 3541)
! * Wno-misspelled-isr:                    AVR Options.        (line  333)
  * Wno-multichar:                         Warning Options.    (line 3631)
  * Wno-multiple-inheritance:              C++ Dialect Options.
                                                               (line 1405)
*************** look up both forms.
*** 77138,77144 ****
  * Wpsabi:                                Warning Options.    (line  442)
  * Wrange-loop-construct:                 C++ Dialect Options.
                                                               (line 1176)
! * wrapper:                               Overall Options.    (line  632)
  * Wredundant-decls:                      Warning Options.    (line 3791)
  * Wredundant-move:                       C++ Dialect Options.
                                                               (line 1137)
--- 77147,77153 ----
  * Wpsabi:                                Warning Options.    (line  442)
  * Wrange-loop-construct:                 C++ Dialect Options.
                                                               (line 1176)
! * wrapper:                               Overall Options.    (line  636)
  * Wredundant-decls:                      Warning Options.    (line 3791)
  * Wredundant-move:                       C++ Dialect Options.
                                                               (line 1137)
*************** A.2 Concept and Symbol Index
*** 77298,77379 ****
  [index]
  * Menu:
  
- * #pragma:                               Pragmas.            (line    6)
- * #pragma implementation:                C++ Interface.      (line   34)
- * #pragma implementation, implied:       C++ Interface.      (line   43)
- * #pragma interface:                     C++ Interface.      (line   15)
- * $:                                     Dollar Signs.       (line    6)
- * % in constraint:                       Modifiers.          (line   52)
- * %include:                              Spec Files.         (line   25)
- * %include_noerr:                        Spec Files.         (line   29)
- * %rename:                               Spec Files.         (line   33)
- * & in constraint:                       Modifiers.          (line   25)
- * ':                                     Incompatibilities.  (line  116)
- * + in constraint:                       Modifiers.          (line   12)
- * - in constraint:                       Modifiers.          (line   65)
- * -lgcc, use with -nodefaultlibs:        Link Options.       (line  157)
- * -lgcc, use with -nostdlib:             Link Options.       (line  157)
- * -march feature modifiers:              AArch64 Options.    (line  395)
- * -mcpu feature modifiers:               AArch64 Options.    (line  395)
- * -nodefaultlibs and unresolved references: Link Options.    (line  157)
- * -nostdlib and unresolved references:   Link Options.       (line  157)
- * .sdata/.sdata2 references (PowerPC):   RS/6000 and PowerPC Options.
-                                                              (line  716)
- * //:                                    C++ Comments.       (line    6)
- * 0 in constraint:                       Simple Constraints. (line  125)
- * : in constraint:                       Simple Constraints. (line  161)
- * < in constraint:                       Simple Constraints. (line   47)
- * = in constraint:                       Modifiers.          (line    8)
- * > in constraint:                       Simple Constraints. (line   59)
- * ?: extensions:                         Conditionals.       (line    6)
- * ?: side effect:                        Conditionals.       (line   20)
  * _ in variables in macros:              Typeof.             (line   46)
- * _Accum data type:                      Fixed-Point.        (line    6)
- * _Bool keyword:                         Boolean Type.       (line    6)
- * _Complex keyword:                      Complex.            (line    6)
- * _Decimal128 data type:                 Decimal Float.      (line    6)
- * _Decimal32 data type:                  Decimal Float.      (line    6)
- * _Decimal64 data type:                  Decimal Float.      (line    6)
- * _Exit:                                 Library Builtins.   (line    6)
- * _exit:                                 Library Builtins.   (line    6)
- * _FloatN data types:                    Floating Types.     (line    6)
- * _FloatNx data types:                   Floating Types.     (line    6)
- * _Fract data type:                      Fixed-Point.        (line    6)
- * _get_ssp:                              x86 control-flow protection intrinsics.
-                                                              (line    6)
- * _HTM_FIRST_USER_ABORT_CODE:            S/390 System z Built-in Functions.
-                                                              (line   47)
- * _HTM_TBEGIN_INDETERMINATE:             S/390 System z Built-in Functions.
-                                                              (line   35)
- * _HTM_TBEGIN_PERSISTENT:                S/390 System z Built-in Functions.
-                                                              (line   43)
- * _HTM_TBEGIN_STARTED:                   S/390 System z Built-in Functions.
-                                                              (line   31)
- * _HTM_TBEGIN_TRANSIENT:                 S/390 System z Built-in Functions.
-                                                              (line   39)
- * _inc_ssp:                              x86 control-flow protection intrinsics.
-                                                              (line   12)
- * _Sat data type:                        Fixed-Point.        (line    6)
- * _xabort:                               x86 transactional memory intrinsics.
-                                                              (line   62)
- * _XABORT_CAPACITY:                      x86 transactional memory intrinsics.
-                                                              (line   40)
- * _XABORT_CONFLICT:                      x86 transactional memory intrinsics.
-                                                              (line   36)
- * _XABORT_DEBUG:                         x86 transactional memory intrinsics.
-                                                              (line   44)
- * _XABORT_EXPLICIT:                      x86 transactional memory intrinsics.
-                                                              (line   28)
- * _XABORT_NESTED:                        x86 transactional memory intrinsics.
-                                                              (line   47)
- * _XABORT_RETRY:                         x86 transactional memory intrinsics.
-                                                              (line   33)
- * _xbegin:                               x86 transactional memory intrinsics.
-                                                              (line   19)
- * _xend:                                 x86 transactional memory intrinsics.
-                                                              (line   53)
- * _xtest:                                x86 transactional memory intrinsics.
-                                                              (line   58)
  * __atomic builtins:                     __atomic Builtins.  (line    6)
  * __atomic_add_fetch:                    __atomic Builtins.  (line  202)
  * __atomic_always_lock_free:             __atomic Builtins.  (line  290)
--- 77307,77313 ----
*************** A.2 Concept and Symbol Index
*** 77402,77407 ****
--- 77336,77375 ----
  * __atomic_thread_fence:                 __atomic Builtins.  (line  276)
  * __atomic_xor_fetch:                    __atomic Builtins.  (line  208)
  * __auto_type in GNU C:                  Typeof.             (line   90)
+ * __builtin___clear_cache:               Other Builtins.     (line  593)
+ * __builtin___memcpy_chk:                Object Size Checking.
+                                                              (line    9)
+ * __builtin___memmove_chk:               Object Size Checking.
+                                                              (line    9)
+ * __builtin___mempcpy_chk:               Object Size Checking.
+                                                              (line    9)
+ * __builtin___memset_chk:                Object Size Checking.
+                                                              (line    9)
+ * __builtin___snprintf_chk:              Object Size Checking.
+                                                              (line  122)
+ * __builtin___sprintf_chk:               Object Size Checking.
+                                                              (line  120)
+ * __builtin___stpcpy_chk:                Object Size Checking.
+                                                              (line    9)
+ * __builtin___strcat_chk:                Object Size Checking.
+                                                              (line    9)
+ * __builtin___strcpy_chk:                Object Size Checking.
+                                                              (line    9)
+ * __builtin___strncat_chk:               Object Size Checking.
+                                                              (line    9)
+ * __builtin___strncpy_chk:               Object Size Checking.
+                                                              (line    9)
+ * __builtin___strub_enter:               Stack Scrubbing.    (line   25)
+ * __builtin___strub_leave:               Stack Scrubbing.    (line   38)
+ * __builtin___strub_update:              Stack Scrubbing.    (line   31)
+ * __builtin___vsnprintf_chk:             Object Size Checking.
+                                                              (line  126)
+ * __builtin___vsprintf_chk:              Object Size Checking.
+                                                              (line  124)
+ * __builtin_add_overflow:                Integer Overflow Builtins.
+                                                              (line    9)
+ * __builtin_add_overflow_p:              Integer Overflow Builtins.
+                                                              (line   86)
  * __builtin_addc:                        Integer Overflow Builtins.
                                                               (line  129)
  * __builtin_addcl:                       Integer Overflow Builtins.
*************** A.2 Concept and Symbol Index
*** 77410,77419 ****
                                                               (line  135)
  * __builtin_addf128_round_to_odd:        Basic PowerPC Built-in Functions Available on ISA 3.0.
                                                               (line   15)
- * __builtin_add_overflow:                Integer Overflow Builtins.
-                                                              (line    9)
- * __builtin_add_overflow_p:              Integer Overflow Builtins.
-                                                              (line   86)
  * __builtin_alloca:                      Stack Allocation.   (line    6)
  * __builtin_alloca_with_align:           Stack Allocation.   (line   43)
  * __builtin_alloca_with_align_and_max:   Stack Allocation.   (line   88)
--- 77378,77383 ----
*************** A.2 Concept and Symbol Index
*** 77584,77590 ****
  * __builtin_divf128_round_to_odd:        Basic PowerPC Built-in Functions Available on ISA 3.0.
                                                               (line   30)
  * __builtin_dynamic_object_size:         Object Size Checking.
!                                                              (line   56)
  * __builtin_expect:                      Other Builtins.     (line  412)
  * __builtin_expect_with_probability:     Other Builtins.     (line  447)
  * __builtin_extend_pointer:              Other Builtins.     (line  671)
--- 77548,77554 ----
  * __builtin_divf128_round_to_odd:        Basic PowerPC Built-in Functions Available on ISA 3.0.
                                                               (line   30)
  * __builtin_dynamic_object_size:         Object Size Checking.
!                                                              (line   57)
  * __builtin_expect:                      Other Builtins.     (line  412)
  * __builtin_expect_with_probability:     Other Builtins.     (line  447)
  * __builtin_extend_pointer:              Other Builtins.     (line  671)
*************** A.2 Concept and Symbol Index
*** 77682,77687 ****
--- 77646,77653 ----
                                                               (line   56)
  * __builtin_infq:                        x86 Built-in Functions.
                                                               (line   46)
+ * __builtin_is_constant_evaluated:       Other Builtins.     (line  318)
+ * __builtin_is_virtual_base_of:          Type Traits.        (line   92)
  * __builtin_iseqsig:                     Library Builtins.   (line    6)
  * __builtin_isfinite:                    Library Builtins.   (line    6)
  * __builtin_isgreater:                   Library Builtins.   (line    6)
*************** A.2 Concept and Symbol Index
*** 77692,77707 ****
  * __builtin_issignaling:                 Floating-Point Format Builtins.
                                                               (line  142)
  * __builtin_isunordered:                 Library Builtins.   (line    6)
- * __builtin_is_constant_evaluated:       Other Builtins.     (line  318)
- * __builtin_is_virtual_base_of:          Type Traits.        (line   92)
  * __builtin_LINE:                        Other Builtins.     (line  553)
  * __builtin_longjmp:                     Nonlocal Gotos.     (line   37)
- * __builtin_mulf128_round_to_odd:        Basic PowerPC Built-in Functions Available on ISA 3.0.
-                                                              (line   25)
  * __builtin_mul_overflow:                Integer Overflow Builtins.
                                                               (line   63)
  * __builtin_mul_overflow_p:              Integer Overflow Builtins.
                                                               (line   90)
  * __builtin_nan:                         Floating-Point Format Builtins.
                                                               (line   74)
  * __builtin_nand128:                     Floating-Point Format Builtins.
--- 77658,77671 ----
  * __builtin_issignaling:                 Floating-Point Format Builtins.
                                                               (line  142)
  * __builtin_isunordered:                 Library Builtins.   (line    6)
  * __builtin_LINE:                        Other Builtins.     (line  553)
  * __builtin_longjmp:                     Nonlocal Gotos.     (line   37)
  * __builtin_mul_overflow:                Integer Overflow Builtins.
                                                               (line   63)
  * __builtin_mul_overflow_p:              Integer Overflow Builtins.
                                                               (line   90)
+ * __builtin_mulf128_round_to_odd:        Basic PowerPC Built-in Functions Available on ISA 3.0.
+                                                              (line   25)
  * __builtin_nan:                         Floating-Point Format Builtins.
                                                               (line   74)
  * __builtin_nand128:                     Floating-Point Format Builtins.
*************** A.2 Concept and Symbol Index
*** 77932,77949 ****
                                                               (line  517)
  * __builtin_riscv_cv_simd_and_sc_h <1>:  CORE-V Built-in Functions.
                                                               (line  521)
- * __builtin_riscv_cv_simd_avgu_b:        CORE-V Built-in Functions.
-                                                              (line  273)
- * __builtin_riscv_cv_simd_avgu_h:        CORE-V Built-in Functions.
-                                                              (line  269)
- * __builtin_riscv_cv_simd_avgu_sc_b:     CORE-V Built-in Functions.
-                                                              (line  285)
- * __builtin_riscv_cv_simd_avgu_sc_b <1>: CORE-V Built-in Functions.
-                                                              (line  289)
- * __builtin_riscv_cv_simd_avgu_sc_h:     CORE-V Built-in Functions.
-                                                              (line  277)
- * __builtin_riscv_cv_simd_avgu_sc_h <1>: CORE-V Built-in Functions.
-                                                              (line  281)
  * __builtin_riscv_cv_simd_avg_b:         CORE-V Built-in Functions.
                                                               (line  249)
  * __builtin_riscv_cv_simd_avg_h:         CORE-V Built-in Functions.
--- 77896,77901 ----
*************** A.2 Concept and Symbol Index
*** 77956,77961 ****
--- 77908,77925 ----
                                                               (line  253)
  * __builtin_riscv_cv_simd_avg_sc_h <1>:  CORE-V Built-in Functions.
                                                               (line  257)
+ * __builtin_riscv_cv_simd_avgu_b:        CORE-V Built-in Functions.
+                                                              (line  273)
+ * __builtin_riscv_cv_simd_avgu_h:        CORE-V Built-in Functions.
+                                                              (line  269)
+ * __builtin_riscv_cv_simd_avgu_sc_b:     CORE-V Built-in Functions.
+                                                              (line  285)
+ * __builtin_riscv_cv_simd_avgu_sc_b <1>: CORE-V Built-in Functions.
+                                                              (line  289)
+ * __builtin_riscv_cv_simd_avgu_sc_h:     CORE-V Built-in Functions.
+                                                              (line  277)
+ * __builtin_riscv_cv_simd_avgu_sc_h <1>: CORE-V Built-in Functions.
+                                                              (line  281)
  * __builtin_riscv_cv_simd_cmpeq_b:       CORE-V Built-in Functions.
                                                               (line  763)
  * __builtin_riscv_cv_simd_cmpeq_h:       CORE-V Built-in Functions.
*************** A.2 Concept and Symbol Index
*** 77968,77985 ****
                                                               (line  767)
  * __builtin_riscv_cv_simd_cmpeq_sc_h <1>: CORE-V Built-in Functions.
                                                               (line  771)
- * __builtin_riscv_cv_simd_cmpgeu_b:      CORE-V Built-in Functions.
-                                                              (line  931)
- * __builtin_riscv_cv_simd_cmpgeu_h:      CORE-V Built-in Functions.
-                                                              (line  927)
- * __builtin_riscv_cv_simd_cmpgeu_sc_b:   CORE-V Built-in Functions.
-                                                              (line  943)
- * __builtin_riscv_cv_simd_cmpgeu_sc_b <1>: CORE-V Built-in Functions.
-                                                              (line  947)
- * __builtin_riscv_cv_simd_cmpgeu_sc_h:   CORE-V Built-in Functions.
-                                                              (line  935)
- * __builtin_riscv_cv_simd_cmpgeu_sc_h <1>: CORE-V Built-in Functions.
-                                                              (line  939)
  * __builtin_riscv_cv_simd_cmpge_b:       CORE-V Built-in Functions.
                                                               (line  835)
  * __builtin_riscv_cv_simd_cmpge_h:       CORE-V Built-in Functions.
--- 77932,77937 ----
*************** A.2 Concept and Symbol Index
*** 77992,78009 ****
                                                               (line  839)
  * __builtin_riscv_cv_simd_cmpge_sc_h <1>: CORE-V Built-in Functions.
                                                               (line  843)
! * __builtin_riscv_cv_simd_cmpgtu_b:      CORE-V Built-in Functions.
!                                                              (line  907)
! * __builtin_riscv_cv_simd_cmpgtu_h:      CORE-V Built-in Functions.
!                                                              (line  903)
! * __builtin_riscv_cv_simd_cmpgtu_sc_b:   CORE-V Built-in Functions.
!                                                              (line  919)
! * __builtin_riscv_cv_simd_cmpgtu_sc_b <1>: CORE-V Built-in Functions.
!                                                              (line  923)
! * __builtin_riscv_cv_simd_cmpgtu_sc_h:   CORE-V Built-in Functions.
!                                                              (line  911)
! * __builtin_riscv_cv_simd_cmpgtu_sc_h <1>: CORE-V Built-in Functions.
!                                                              (line  915)
  * __builtin_riscv_cv_simd_cmpgt_b:       CORE-V Built-in Functions.
                                                               (line  811)
  * __builtin_riscv_cv_simd_cmpgt_h:       CORE-V Built-in Functions.
--- 77944,77961 ----
                                                               (line  839)
  * __builtin_riscv_cv_simd_cmpge_sc_h <1>: CORE-V Built-in Functions.
                                                               (line  843)
! * __builtin_riscv_cv_simd_cmpgeu_b:      CORE-V Built-in Functions.
!                                                              (line  931)
! * __builtin_riscv_cv_simd_cmpgeu_h:      CORE-V Built-in Functions.
!                                                              (line  927)
! * __builtin_riscv_cv_simd_cmpgeu_sc_b:   CORE-V Built-in Functions.
!                                                              (line  943)
! * __builtin_riscv_cv_simd_cmpgeu_sc_b <1>: CORE-V Built-in Functions.
!                                                              (line  947)
! * __builtin_riscv_cv_simd_cmpgeu_sc_h:   CORE-V Built-in Functions.
!                                                              (line  935)
! * __builtin_riscv_cv_simd_cmpgeu_sc_h <1>: CORE-V Built-in Functions.
!                                                              (line  939)
  * __builtin_riscv_cv_simd_cmpgt_b:       CORE-V Built-in Functions.
                                                               (line  811)
  * __builtin_riscv_cv_simd_cmpgt_h:       CORE-V Built-in Functions.
*************** A.2 Concept and Symbol Index
*** 78016,78033 ****
                                                               (line  815)
  * __builtin_riscv_cv_simd_cmpgt_sc_h <1>: CORE-V Built-in Functions.
                                                               (line  819)
! * __builtin_riscv_cv_simd_cmpleu_b:      CORE-V Built-in Functions.
!                                                              (line  979)
! * __builtin_riscv_cv_simd_cmpleu_h:      CORE-V Built-in Functions.
!                                                              (line  975)
! * __builtin_riscv_cv_simd_cmpleu_sc_b:   CORE-V Built-in Functions.
!                                                              (line  991)
! * __builtin_riscv_cv_simd_cmpleu_sc_b <1>: CORE-V Built-in Functions.
!                                                              (line  995)
! * __builtin_riscv_cv_simd_cmpleu_sc_h:   CORE-V Built-in Functions.
!                                                              (line  983)
! * __builtin_riscv_cv_simd_cmpleu_sc_h <1>: CORE-V Built-in Functions.
!                                                              (line  987)
  * __builtin_riscv_cv_simd_cmple_b:       CORE-V Built-in Functions.
                                                               (line  883)
  * __builtin_riscv_cv_simd_cmple_h:       CORE-V Built-in Functions.
--- 77968,77985 ----
                                                               (line  815)
  * __builtin_riscv_cv_simd_cmpgt_sc_h <1>: CORE-V Built-in Functions.
                                                               (line  819)
! * __builtin_riscv_cv_simd_cmpgtu_b:      CORE-V Built-in Functions.
!                                                              (line  907)
! * __builtin_riscv_cv_simd_cmpgtu_h:      CORE-V Built-in Functions.
!                                                              (line  903)
! * __builtin_riscv_cv_simd_cmpgtu_sc_b:   CORE-V Built-in Functions.
!                                                              (line  919)
! * __builtin_riscv_cv_simd_cmpgtu_sc_b <1>: CORE-V Built-in Functions.
!                                                              (line  923)
! * __builtin_riscv_cv_simd_cmpgtu_sc_h:   CORE-V Built-in Functions.
!                                                              (line  911)
! * __builtin_riscv_cv_simd_cmpgtu_sc_h <1>: CORE-V Built-in Functions.
!                                                              (line  915)
  * __builtin_riscv_cv_simd_cmple_b:       CORE-V Built-in Functions.
                                                               (line  883)
  * __builtin_riscv_cv_simd_cmple_h:       CORE-V Built-in Functions.
*************** A.2 Concept and Symbol Index
*** 78040,78057 ****
                                                               (line  887)
  * __builtin_riscv_cv_simd_cmple_sc_h <1>: CORE-V Built-in Functions.
                                                               (line  891)
! * __builtin_riscv_cv_simd_cmpltu_b:      CORE-V Built-in Functions.
!                                                              (line  955)
! * __builtin_riscv_cv_simd_cmpltu_h:      CORE-V Built-in Functions.
!                                                              (line  951)
! * __builtin_riscv_cv_simd_cmpltu_sc_b:   CORE-V Built-in Functions.
!                                                              (line  967)
! * __builtin_riscv_cv_simd_cmpltu_sc_b <1>: CORE-V Built-in Functions.
!                                                              (line  971)
! * __builtin_riscv_cv_simd_cmpltu_sc_h:   CORE-V Built-in Functions.
!                                                              (line  959)
! * __builtin_riscv_cv_simd_cmpltu_sc_h <1>: CORE-V Built-in Functions.
!                                                              (line  963)
  * __builtin_riscv_cv_simd_cmplt_b:       CORE-V Built-in Functions.
                                                               (line  859)
  * __builtin_riscv_cv_simd_cmplt_h:       CORE-V Built-in Functions.
--- 77992,78009 ----
                                                               (line  887)
  * __builtin_riscv_cv_simd_cmple_sc_h <1>: CORE-V Built-in Functions.
                                                               (line  891)
! * __builtin_riscv_cv_simd_cmpleu_b:      CORE-V Built-in Functions.
!                                                              (line  979)
! * __builtin_riscv_cv_simd_cmpleu_h:      CORE-V Built-in Functions.
!                                                              (line  975)
! * __builtin_riscv_cv_simd_cmpleu_sc_b:   CORE-V Built-in Functions.
!                                                              (line  991)
! * __builtin_riscv_cv_simd_cmpleu_sc_b <1>: CORE-V Built-in Functions.
!                                                              (line  995)
! * __builtin_riscv_cv_simd_cmpleu_sc_h:   CORE-V Built-in Functions.
!                                                              (line  983)
! * __builtin_riscv_cv_simd_cmpleu_sc_h <1>: CORE-V Built-in Functions.
!                                                              (line  987)
  * __builtin_riscv_cv_simd_cmplt_b:       CORE-V Built-in Functions.
                                                               (line  859)
  * __builtin_riscv_cv_simd_cmplt_h:       CORE-V Built-in Functions.
*************** A.2 Concept and Symbol Index
*** 78064,78069 ****
--- 78016,78033 ----
                                                               (line  863)
  * __builtin_riscv_cv_simd_cmplt_sc_h <1>: CORE-V Built-in Functions.
                                                               (line  867)
+ * __builtin_riscv_cv_simd_cmpltu_b:      CORE-V Built-in Functions.
+                                                              (line  955)
+ * __builtin_riscv_cv_simd_cmpltu_h:      CORE-V Built-in Functions.
+                                                              (line  951)
+ * __builtin_riscv_cv_simd_cmpltu_sc_b:   CORE-V Built-in Functions.
+                                                              (line  967)
+ * __builtin_riscv_cv_simd_cmpltu_sc_b <1>: CORE-V Built-in Functions.
+                                                              (line  971)
+ * __builtin_riscv_cv_simd_cmpltu_sc_h:   CORE-V Built-in Functions.
+                                                              (line  959)
+ * __builtin_riscv_cv_simd_cmpltu_sc_h <1>: CORE-V Built-in Functions.
+                                                              (line  963)
  * __builtin_riscv_cv_simd_cmpne_b:       CORE-V Built-in Functions.
                                                               (line  787)
  * __builtin_riscv_cv_simd_cmpne_h:       CORE-V Built-in Functions.
*************** A.2 Concept and Symbol Index
*** 78130,78159 ****
                                                               (line  571)
  * __builtin_riscv_cv_simd_dotusp_sc_h <1>: CORE-V Built-in Functions.
                                                               (line  575)
- * __builtin_riscv_cv_simd_extractu_b:    CORE-V Built-in Functions.
-                                                              (line  695)
- * __builtin_riscv_cv_simd_extractu_h:    CORE-V Built-in Functions.
-                                                              (line  691)
  * __builtin_riscv_cv_simd_extract_b:     CORE-V Built-in Functions.
                                                               (line  687)
  * __builtin_riscv_cv_simd_extract_h:     CORE-V Built-in Functions.
                                                               (line  683)
  * __builtin_riscv_cv_simd_insert_b:      CORE-V Built-in Functions.
                                                               (line  703)
  * __builtin_riscv_cv_simd_insert_h:      CORE-V Built-in Functions.
                                                               (line  699)
- * __builtin_riscv_cv_simd_maxu_b:        CORE-V Built-in Functions.
-                                                              (line  369)
- * __builtin_riscv_cv_simd_maxu_h:        CORE-V Built-in Functions.
-                                                              (line  365)
- * __builtin_riscv_cv_simd_maxu_sc_b:     CORE-V Built-in Functions.
-                                                              (line  381)
- * __builtin_riscv_cv_simd_maxu_sc_b <1>: CORE-V Built-in Functions.
-                                                              (line  385)
- * __builtin_riscv_cv_simd_maxu_sc_h:     CORE-V Built-in Functions.
-                                                              (line  373)
- * __builtin_riscv_cv_simd_maxu_sc_h <1>: CORE-V Built-in Functions.
-                                                              (line  377)
  * __builtin_riscv_cv_simd_max_b:         CORE-V Built-in Functions.
                                                               (line  345)
  * __builtin_riscv_cv_simd_max_h:         CORE-V Built-in Functions.
--- 78094,78111 ----
                                                               (line  571)
  * __builtin_riscv_cv_simd_dotusp_sc_h <1>: CORE-V Built-in Functions.
                                                               (line  575)
  * __builtin_riscv_cv_simd_extract_b:     CORE-V Built-in Functions.
                                                               (line  687)
  * __builtin_riscv_cv_simd_extract_h:     CORE-V Built-in Functions.
                                                               (line  683)
+ * __builtin_riscv_cv_simd_extractu_b:    CORE-V Built-in Functions.
+                                                              (line  695)
+ * __builtin_riscv_cv_simd_extractu_h:    CORE-V Built-in Functions.
+                                                              (line  691)
  * __builtin_riscv_cv_simd_insert_b:      CORE-V Built-in Functions.
                                                               (line  703)
  * __builtin_riscv_cv_simd_insert_h:      CORE-V Built-in Functions.
                                                               (line  699)
  * __builtin_riscv_cv_simd_max_b:         CORE-V Built-in Functions.
                                                               (line  345)
  * __builtin_riscv_cv_simd_max_h:         CORE-V Built-in Functions.
*************** A.2 Concept and Symbol Index
*** 78166,78183 ****
                                                               (line  349)
  * __builtin_riscv_cv_simd_max_sc_h <1>:  CORE-V Built-in Functions.
                                                               (line  353)
! * __builtin_riscv_cv_simd_minu_b:        CORE-V Built-in Functions.
!                                                              (line  321)
! * __builtin_riscv_cv_simd_minu_h:        CORE-V Built-in Functions.
!                                                              (line  317)
! * __builtin_riscv_cv_simd_minu_sc_b:     CORE-V Built-in Functions.
!                                                              (line  333)
! * __builtin_riscv_cv_simd_minu_sc_b <1>: CORE-V Built-in Functions.
!                                                              (line  337)
! * __builtin_riscv_cv_simd_minu_sc_h:     CORE-V Built-in Functions.
!                                                              (line  325)
! * __builtin_riscv_cv_simd_minu_sc_h <1>: CORE-V Built-in Functions.
!                                                              (line  329)
  * __builtin_riscv_cv_simd_min_b:         CORE-V Built-in Functions.
                                                               (line  297)
  * __builtin_riscv_cv_simd_min_h:         CORE-V Built-in Functions.
--- 78118,78135 ----
                                                               (line  349)
  * __builtin_riscv_cv_simd_max_sc_h <1>:  CORE-V Built-in Functions.
                                                               (line  353)
! * __builtin_riscv_cv_simd_maxu_b:        CORE-V Built-in Functions.
!                                                              (line  369)
! * __builtin_riscv_cv_simd_maxu_h:        CORE-V Built-in Functions.
!                                                              (line  365)
! * __builtin_riscv_cv_simd_maxu_sc_b:     CORE-V Built-in Functions.
!                                                              (line  381)
! * __builtin_riscv_cv_simd_maxu_sc_b <1>: CORE-V Built-in Functions.
!                                                              (line  385)
! * __builtin_riscv_cv_simd_maxu_sc_h:     CORE-V Built-in Functions.
!                                                              (line  373)
! * __builtin_riscv_cv_simd_maxu_sc_h <1>: CORE-V Built-in Functions.
!                                                              (line  377)
  * __builtin_riscv_cv_simd_min_b:         CORE-V Built-in Functions.
                                                               (line  297)
  * __builtin_riscv_cv_simd_min_h:         CORE-V Built-in Functions.
*************** A.2 Concept and Symbol Index
*** 78190,78195 ****
--- 78142,78159 ----
                                                               (line  301)
  * __builtin_riscv_cv_simd_min_sc_h <1>:  CORE-V Built-in Functions.
                                                               (line  305)
+ * __builtin_riscv_cv_simd_minu_b:        CORE-V Built-in Functions.
+                                                              (line  321)
+ * __builtin_riscv_cv_simd_minu_h:        CORE-V Built-in Functions.
+                                                              (line  317)
+ * __builtin_riscv_cv_simd_minu_sc_b:     CORE-V Built-in Functions.
+                                                              (line  333)
+ * __builtin_riscv_cv_simd_minu_sc_b <1>: CORE-V Built-in Functions.
+                                                              (line  337)
+ * __builtin_riscv_cv_simd_minu_sc_h:     CORE-V Built-in Functions.
+                                                              (line  325)
+ * __builtin_riscv_cv_simd_minu_sc_h <1>: CORE-V Built-in Functions.
+                                                              (line  329)
  * __builtin_riscv_cv_simd_or_b:          CORE-V Built-in Functions.
                                                               (line  465)
  * __builtin_riscv_cv_simd_or_h:          CORE-V Built-in Functions.
*************** A.2 Concept and Symbol Index
*** 78246,78251 ****
--- 78210,78221 ----
                                                               (line  643)
  * __builtin_riscv_cv_simd_sdotusp_sc_h <1>: CORE-V Built-in Functions.
                                                               (line  647)
+ * __builtin_riscv_cv_simd_shuffle_b:     CORE-V Built-in Functions.
+                                                              (line  711)
+ * __builtin_riscv_cv_simd_shuffle_h:     CORE-V Built-in Functions.
+                                                              (line  707)
+ * __builtin_riscv_cv_simd_shuffle_sci_h: CORE-V Built-in Functions.
+                                                              (line  715)
  * __builtin_riscv_cv_simd_shuffle2_b:    CORE-V Built-in Functions.
                                                               (line  739)
  * __builtin_riscv_cv_simd_shuffle2_h:    CORE-V Built-in Functions.
*************** A.2 Concept and Symbol Index
*** 78258,78269 ****
                                                               (line  727)
  * __builtin_riscv_cv_simd_shufflei3_sci_b: CORE-V Built-in Functions.
                                                               (line  731)
- * __builtin_riscv_cv_simd_shuffle_b:     CORE-V Built-in Functions.
-                                                              (line  711)
- * __builtin_riscv_cv_simd_shuffle_h:     CORE-V Built-in Functions.
-                                                              (line  707)
- * __builtin_riscv_cv_simd_shuffle_sci_h: CORE-V Built-in Functions.
-                                                              (line  715)
  * __builtin_riscv_cv_simd_sll_b:         CORE-V Built-in Functions.
                                                               (line  441)
  * __builtin_riscv_cv_simd_sll_h:         CORE-V Built-in Functions.
--- 78228,78233 ----
*************** A.2 Concept and Symbol Index
*** 78300,78313 ****
                                                               (line  397)
  * __builtin_riscv_cv_simd_srl_sc_h <1>:  CORE-V Built-in Functions.
                                                               (line  401)
- * __builtin_riscv_cv_simd_subrotmj:      CORE-V Built-in Functions.
-                                                              (line 1035)
- * __builtin_riscv_cv_simd_subrotmj <1>:  CORE-V Built-in Functions.
-                                                              (line 1039)
- * __builtin_riscv_cv_simd_subrotmj <2>:  CORE-V Built-in Functions.
-                                                              (line 1043)
- * __builtin_riscv_cv_simd_subrotmj <3>:  CORE-V Built-in Functions.
-                                                              (line 1047)
  * __builtin_riscv_cv_simd_sub_b:         CORE-V Built-in Functions.
                                                               (line  225)
  * __builtin_riscv_cv_simd_sub_h:         CORE-V Built-in Functions.
--- 78264,78269 ----
*************** A.2 Concept and Symbol Index
*** 78326,78331 ****
--- 78282,78295 ----
                                                               (line  229)
  * __builtin_riscv_cv_simd_sub_sc_h <1>:  CORE-V Built-in Functions.
                                                               (line  233)
+ * __builtin_riscv_cv_simd_subrotmj:      CORE-V Built-in Functions.
+                                                              (line 1035)
+ * __builtin_riscv_cv_simd_subrotmj <1>:  CORE-V Built-in Functions.
+                                                              (line 1039)
+ * __builtin_riscv_cv_simd_subrotmj <2>:  CORE-V Built-in Functions.
+                                                              (line 1043)
+ * __builtin_riscv_cv_simd_subrotmj <3>:  CORE-V Built-in Functions.
+                                                              (line 1047)
  * __builtin_riscv_cv_simd_xor_b:         CORE-V Built-in Functions.
                                                               (line  489)
  * __builtin_riscv_cv_simd_xor_h:         CORE-V Built-in Functions.
*************** A.2 Concept and Symbol Index
*** 78382,78418 ****
                                                               (line   91)
  * __builtin_rx_wait:                     RX Built-in Functions.
                                                               (line   95)
- * __builtin_saddll_overflow:             Integer Overflow Builtins.
-                                                              (line   15)
- * __builtin_saddl_overflow:              Integer Overflow Builtins.
-                                                              (line   13)
  * __builtin_sadd_overflow:               Integer Overflow Builtins.
                                                               (line   11)
! * __builtin_setjmp:                      Nonlocal Gotos.     (line   32)
  * __builtin_set_thread_pointer:          SH Built-in Functions.
                                                               (line    9)
! * __builtin_shuffle:                     Vector Extensions.  (line  135)
! * __builtin_shufflevector:               Vector Extensions.  (line  173)
  * __builtin_sh_get_fpscr:                SH Built-in Functions.
                                                               (line   35)
  * __builtin_sh_set_fpscr:                SH Built-in Functions.
                                                               (line   38)
! * __builtin_smulll_overflow:             Integer Overflow Builtins.
!                                                              (line   69)
! * __builtin_smull_overflow:              Integer Overflow Builtins.
!                                                              (line   67)
  * __builtin_smul_overflow:               Integer Overflow Builtins.
                                                               (line   65)
  * __builtin_speculation_safe_value:      Library Builtins.   (line    6)
  * __builtin_speculation_safe_value <1>:  Other Builtins.     (line   50)
  * __builtin_sqrtf128_round_to_odd:       Basic PowerPC Built-in Functions Available on ISA 3.0.
                                                               (line   35)
- * __builtin_ssubll_overflow:             Integer Overflow Builtins.
-                                                              (line   49)
- * __builtin_ssubl_overflow:              Integer Overflow Builtins.
-                                                              (line   47)
  * __builtin_ssub_overflow:               Integer Overflow Builtins.
                                                               (line   45)
  * __builtin_stack_address:               Return Address.     (line   92)
  * __builtin_stdc_bit_ceil:               Bit Operation Builtins.
                                                               (line  113)
--- 78346,78382 ----
                                                               (line   91)
  * __builtin_rx_wait:                     RX Built-in Functions.
                                                               (line   95)
  * __builtin_sadd_overflow:               Integer Overflow Builtins.
                                                               (line   11)
! * __builtin_saddl_overflow:              Integer Overflow Builtins.
!                                                              (line   13)
! * __builtin_saddll_overflow:             Integer Overflow Builtins.
!                                                              (line   15)
  * __builtin_set_thread_pointer:          SH Built-in Functions.
                                                               (line    9)
! * __builtin_setjmp:                      Nonlocal Gotos.     (line   32)
  * __builtin_sh_get_fpscr:                SH Built-in Functions.
                                                               (line   35)
  * __builtin_sh_set_fpscr:                SH Built-in Functions.
                                                               (line   38)
! * __builtin_shuffle:                     Vector Extensions.  (line  135)
! * __builtin_shufflevector:               Vector Extensions.  (line  173)
  * __builtin_smul_overflow:               Integer Overflow Builtins.
                                                               (line   65)
+ * __builtin_smull_overflow:              Integer Overflow Builtins.
+                                                              (line   67)
+ * __builtin_smulll_overflow:             Integer Overflow Builtins.
+                                                              (line   69)
  * __builtin_speculation_safe_value:      Library Builtins.   (line    6)
  * __builtin_speculation_safe_value <1>:  Other Builtins.     (line   50)
  * __builtin_sqrtf128_round_to_odd:       Basic PowerPC Built-in Functions Available on ISA 3.0.
                                                               (line   35)
  * __builtin_ssub_overflow:               Integer Overflow Builtins.
                                                               (line   45)
+ * __builtin_ssubl_overflow:              Integer Overflow Builtins.
+                                                              (line   47)
+ * __builtin_ssubll_overflow:             Integer Overflow Builtins.
+                                                              (line   49)
  * __builtin_stack_address:               Return Address.     (line   92)
  * __builtin_stdc_bit_ceil:               Bit Operation Builtins.
                                                               (line  113)
*************** A.2 Concept and Symbol Index
*** 78446,78451 ****
--- 78410,78419 ----
                                                               (line  210)
  * __builtin_stdc_trailing_zeros:         Bit Operation Builtins.
                                                               (line  218)
+ * __builtin_sub_overflow:                Integer Overflow Builtins.
+                                                              (line   43)
+ * __builtin_sub_overflow_p:              Integer Overflow Builtins.
+                                                              (line   88)
  * __builtin_subc:                        Integer Overflow Builtins.
                                                               (line  153)
  * __builtin_subcl:                       Integer Overflow Builtins.
*************** A.2 Concept and Symbol Index
*** 78454,78475 ****
                                                               (line  159)
  * __builtin_subf128_round_to_odd:        Basic PowerPC Built-in Functions Available on ISA 3.0.
                                                               (line   20)
- * __builtin_sub_overflow:                Integer Overflow Builtins.
-                                                              (line   43)
- * __builtin_sub_overflow_p:              Integer Overflow Builtins.
-                                                              (line   88)
  * __builtin_tabort:                      S/390 System z Built-in Functions.
                                                               (line   85)
  * __builtin_tbegin:                      S/390 System z Built-in Functions.
                                                               (line    6)
- * __builtin_tbeginc:                     S/390 System z Built-in Functions.
-                                                              (line   76)
  * __builtin_tbegin_nofloat:              S/390 System z Built-in Functions.
                                                               (line   57)
  * __builtin_tbegin_retry:                S/390 System z Built-in Functions.
                                                               (line   63)
  * __builtin_tbegin_retry_nofloat:        S/390 System z Built-in Functions.
                                                               (line   70)
  * __builtin_tend:                        S/390 System z Built-in Functions.
                                                               (line   80)
  * __builtin_tgmath:                      Other Builtins.     (line  216)
--- 78422,78439 ----
                                                               (line  159)
  * __builtin_subf128_round_to_odd:        Basic PowerPC Built-in Functions Available on ISA 3.0.
                                                               (line   20)
  * __builtin_tabort:                      S/390 System z Built-in Functions.
                                                               (line   85)
  * __builtin_tbegin:                      S/390 System z Built-in Functions.
                                                               (line    6)
  * __builtin_tbegin_nofloat:              S/390 System z Built-in Functions.
                                                               (line   57)
  * __builtin_tbegin_retry:                S/390 System z Built-in Functions.
                                                               (line   63)
  * __builtin_tbegin_retry_nofloat:        S/390 System z Built-in Functions.
                                                               (line   70)
+ * __builtin_tbeginc:                     S/390 System z Built-in Functions.
+                                                              (line   76)
  * __builtin_tend:                        S/390 System z Built-in Functions.
                                                               (line   80)
  * __builtin_tgmath:                      Other Builtins.     (line  216)
*************** A.2 Concept and Symbol Index
*** 78485,78541 ****
  * __builtin_tx_nesting_depth:            S/390 System z Built-in Functions.
                                                               (line   96)
  * __builtin_types_compatible_p:          Other Builtins.     (line  129)
- * __builtin_uaddll_overflow:             Integer Overflow Builtins.
-                                                              (line   21)
- * __builtin_uaddl_overflow:              Integer Overflow Builtins.
-                                                              (line   19)
  * __builtin_uadd_overflow:               Integer Overflow Builtins.
                                                               (line   17)
! * __builtin_umulll_overflow:             Integer Overflow Builtins.
!                                                              (line   75)
! * __builtin_umull_overflow:              Integer Overflow Builtins.
!                                                              (line   73)
  * __builtin_umul_overflow:               Integer Overflow Builtins.
                                                               (line   71)
  * __builtin_unreachable:                 Other Builtins.     (line  463)
- * __builtin_usubll_overflow:             Integer Overflow Builtins.
-                                                              (line   55)
- * __builtin_usubl_overflow:              Integer Overflow Builtins.
-                                                              (line   53)
  * __builtin_usub_overflow:               Integer Overflow Builtins.
                                                               (line   51)
  * __builtin_va_arg_pack:                 Constructing Calls. (line   52)
  * __builtin_va_arg_pack_len:             Constructing Calls. (line   75)
- * __builtin___clear_cache:               Other Builtins.     (line  593)
- * __builtin___memcpy_chk:                Object Size Checking.
-                                                              (line    9)
- * __builtin___memmove_chk:               Object Size Checking.
-                                                              (line    9)
- * __builtin___mempcpy_chk:               Object Size Checking.
-                                                              (line    9)
- * __builtin___memset_chk:                Object Size Checking.
-                                                              (line    9)
- * __builtin___snprintf_chk:              Object Size Checking.
-                                                              (line  121)
- * __builtin___sprintf_chk:               Object Size Checking.
-                                                              (line  119)
- * __builtin___stpcpy_chk:                Object Size Checking.
-                                                              (line    9)
- * __builtin___strcat_chk:                Object Size Checking.
-                                                              (line    9)
- * __builtin___strcpy_chk:                Object Size Checking.
-                                                              (line    9)
- * __builtin___strncat_chk:               Object Size Checking.
-                                                              (line    9)
- * __builtin___strncpy_chk:               Object Size Checking.
-                                                              (line    9)
- * __builtin___strub_enter:               Stack Scrubbing.    (line   25)
- * __builtin___strub_leave:               Stack Scrubbing.    (line   38)
- * __builtin___strub_update:              Stack Scrubbing.    (line   31)
- * __builtin___vsnprintf_chk:             Object Size Checking.
-                                                              (line  125)
- * __builtin___vsprintf_chk:              Object Size Checking.
-                                                              (line  123)
  * __complex__ keyword:                   Complex.            (line    6)
  * __declspec(dllexport):                 Microsoft Windows Function Attributes.
                                                               (line    9)
--- 78449,78475 ----
  * __builtin_tx_nesting_depth:            S/390 System z Built-in Functions.
                                                               (line   96)
  * __builtin_types_compatible_p:          Other Builtins.     (line  129)
  * __builtin_uadd_overflow:               Integer Overflow Builtins.
                                                               (line   17)
! * __builtin_uaddl_overflow:              Integer Overflow Builtins.
!                                                              (line   19)
! * __builtin_uaddll_overflow:             Integer Overflow Builtins.
!                                                              (line   21)
  * __builtin_umul_overflow:               Integer Overflow Builtins.
                                                               (line   71)
+ * __builtin_umull_overflow:              Integer Overflow Builtins.
+                                                              (line   73)
+ * __builtin_umulll_overflow:             Integer Overflow Builtins.
+                                                              (line   75)
  * __builtin_unreachable:                 Other Builtins.     (line  463)
  * __builtin_usub_overflow:               Integer Overflow Builtins.
                                                               (line   51)
+ * __builtin_usubl_overflow:              Integer Overflow Builtins.
+                                                              (line   53)
+ * __builtin_usubll_overflow:             Integer Overflow Builtins.
+                                                              (line   55)
  * __builtin_va_arg_pack:                 Constructing Calls. (line   52)
  * __builtin_va_arg_pack_len:             Constructing Calls. (line   75)
  * __complex__ keyword:                   Complex.            (line    6)
  * __declspec(dllexport):                 Microsoft Windows Function Attributes.
                                                               (line    9)
*************** A.2 Concept and Symbol Index
*** 78547,78553 ****
  * __far M32C Named Address Spaces:       Named Address Spaces.
                                                               (line  162)
  * __far RL78 Named Address Spaces:       Named Address Spaces.
!                                                              (line  186)
  * __flash AVR Named Address Spaces:      Named Address Spaces.
                                                               (line   43)
  * __flash1 AVR Named Address Spaces:     Named Address Spaces.
--- 78481,78487 ----
  * __far M32C Named Address Spaces:       Named Address Spaces.
                                                               (line  162)
  * __far RL78 Named Address Spaces:       Named Address Spaces.
!                                                              (line  185)
  * __flash AVR Named Address Spaces:      Named Address Spaces.
                                                               (line   43)
  * __flash1 AVR Named Address Spaces:     Named Address Spaces.
*************** A.2 Concept and Symbol Index
*** 78566,78573 ****
  * __Float16 data type:                   Half-Precision.     (line    6)
  * __float80 data type:                   Floating Types.     (line    6)
  * __fp16 data type:                      Half-Precision.     (line    6)
- * __FUNCTION__ identifier:               Function Names.     (line    6)
  * __func__ identifier:                   Function Names.     (line    6)
  * __halt:                                PRU Built-in Functions.
                                                               (line   20)
  * __has_nothrow_assign:                  Type Traits.        (line   10)
--- 78500,78507 ----
  * __Float16 data type:                   Half-Precision.     (line    6)
  * __float80 data type:                   Floating Types.     (line    6)
  * __fp16 data type:                      Half-Precision.     (line    6)
  * __func__ identifier:                   Function Names.     (line    6)
+ * __FUNCTION__ identifier:               Function Names.     (line    6)
  * __halt:                                PRU Built-in Functions.
                                                               (line   20)
  * __has_nothrow_assign:                  Type Traits.        (line   10)
*************** A.2 Concept and Symbol Index
*** 78603,78613 ****
  * __PRETTY_FUNCTION__ identifier:        Function Names.     (line    6)
  * __real__ keyword:                      Complex.            (line   46)
  * __regio_symbol PRU Named Address Spaces: Named Address Spaces.
!                                                              (line  171)
  * __seg_fs x86 named address space:      Named Address Spaces.
!                                                              (line  197)
  * __seg_gs x86 named address space:      Named Address Spaces.
!                                                              (line  197)
  * __STDC_HOSTED__:                       Standards.          (line   13)
  * __sync builtins:                       __sync Builtins.    (line    6)
  * __sync_add_and_fetch:                  __sync Builtins.    (line   72)
--- 78537,78547 ----
  * __PRETTY_FUNCTION__ identifier:        Function Names.     (line    6)
  * __real__ keyword:                      Complex.            (line   46)
  * __regio_symbol PRU Named Address Spaces: Named Address Spaces.
!                                                              (line  170)
  * __seg_fs x86 named address space:      Named Address Spaces.
!                                                              (line  196)
  * __seg_gs x86 named address space:      Named Address Spaces.
!                                                              (line  196)
  * __STDC_HOSTED__:                       Standards.          (line   13)
  * __sync builtins:                       __sync Builtins.    (line    6)
  * __sync_add_and_fetch:                  __sync Builtins.    (line   72)
*************** A.2 Concept and Symbol Index
*** 78629,78634 ****
--- 78563,78643 ----
  * __sync_xor_and_fetch:                  __sync Builtins.    (line   80)
  * __thread:                              Thread-Local.       (line    6)
  * __underlying_type:                     Type Traits.        (line  155)
+ * _Accum data type:                      Fixed-Point.        (line    6)
+ * _Bool keyword:                         Boolean Type.       (line    6)
+ * _Complex keyword:                      Complex.            (line    6)
+ * _Decimal128 data type:                 Decimal Float.      (line    6)
+ * _Decimal32 data type:                  Decimal Float.      (line    6)
+ * _Decimal64 data type:                  Decimal Float.      (line    6)
+ * _Exit:                                 Library Builtins.   (line    6)
+ * _exit:                                 Library Builtins.   (line    6)
+ * _FloatN data types:                    Floating Types.     (line    6)
+ * _FloatNx data types:                   Floating Types.     (line    6)
+ * _Fract data type:                      Fixed-Point.        (line    6)
+ * _get_ssp:                              x86 control-flow protection intrinsics.
+                                                              (line    6)
+ * _HTM_FIRST_USER_ABORT_CODE:            S/390 System z Built-in Functions.
+                                                              (line   47)
+ * _HTM_TBEGIN_INDETERMINATE:             S/390 System z Built-in Functions.
+                                                              (line   35)
+ * _HTM_TBEGIN_PERSISTENT:                S/390 System z Built-in Functions.
+                                                              (line   43)
+ * _HTM_TBEGIN_STARTED:                   S/390 System z Built-in Functions.
+                                                              (line   31)
+ * _HTM_TBEGIN_TRANSIENT:                 S/390 System z Built-in Functions.
+                                                              (line   39)
+ * _inc_ssp:                              x86 control-flow protection intrinsics.
+                                                              (line   12)
+ * _Sat data type:                        Fixed-Point.        (line    6)
+ * _xabort:                               x86 transactional memory intrinsics.
+                                                              (line   62)
+ * _XABORT_CAPACITY:                      x86 transactional memory intrinsics.
+                                                              (line   40)
+ * _XABORT_CONFLICT:                      x86 transactional memory intrinsics.
+                                                              (line   36)
+ * _XABORT_DEBUG:                         x86 transactional memory intrinsics.
+                                                              (line   44)
+ * _XABORT_EXPLICIT:                      x86 transactional memory intrinsics.
+                                                              (line   28)
+ * _XABORT_NESTED:                        x86 transactional memory intrinsics.
+                                                              (line   47)
+ * _XABORT_RETRY:                         x86 transactional memory intrinsics.
+                                                              (line   33)
+ * _xbegin:                               x86 transactional memory intrinsics.
+                                                              (line   19)
+ * _xend:                                 x86 transactional memory intrinsics.
+                                                              (line   53)
+ * _xtest:                                x86 transactional memory intrinsics.
+                                                              (line   58)
+ * - in constraint:                       Modifiers.          (line   65)
+ * -lgcc, use with -nodefaultlibs:        Link Options.       (line  157)
+ * -lgcc, use with -nostdlib:             Link Options.       (line  157)
+ * -march feature modifiers:              AArch64 Options.    (line  395)
+ * -mcpu feature modifiers:               AArch64 Options.    (line  395)
+ * -nodefaultlibs and unresolved references: Link Options.    (line  157)
+ * -nostdlib and unresolved references:   Link Options.       (line  157)
+ * : in constraint:                       Simple Constraints. (line  161)
+ * ?: extensions:                         Conditionals.       (line    6)
+ * ?: side effect:                        Conditionals.       (line   20)
+ * .sdata/.sdata2 references (PowerPC):   RS/6000 and PowerPC Options.
+                                                              (line  716)
+ * ':                                     Incompatibilities.  (line  116)
+ * //:                                    C++ Comments.       (line    6)
+ * & in constraint:                       Modifiers.          (line   25)
+ * #pragma:                               Pragmas.            (line    6)
+ * #pragma implementation:                C++ Interface.      (line   34)
+ * #pragma implementation, implied:       C++ Interface.      (line   43)
+ * #pragma interface:                     C++ Interface.      (line   15)
+ * % in constraint:                       Modifiers.          (line   52)
+ * %include:                              Spec Files.         (line   25)
+ * %include_noerr:                        Spec Files.         (line   29)
+ * %rename:                               Spec Files.         (line   33)
+ * + in constraint:                       Modifiers.          (line   12)
+ * < in constraint:                       Simple Constraints. (line   47)
+ * = in constraint:                       Modifiers.          (line    8)
+ * > in constraint:                       Simple Constraints. (line   59)
+ * $:                                     Dollar Signs.       (line    6)
+ * 0 in constraint:                       Simple Constraints. (line  125)
  * AArch64 Options:                       AArch64 Options.    (line    6)
  * ABI:                                   Compatibility.      (line    6)
  * abi_tag function attribute:            C++ Attributes.     (line    8)
*************** A.2 Concept and Symbol Index
*** 78667,78674 ****
  * aligned variable attribute:            Common Variable Attributes.
                                                               (line   31)
  * alignment:                             Alignment.          (line    6)
- * alloca:                                Library Builtins.   (line    6)
- * alloca vs variable-length arrays:      Variable Length.    (line   35)
  * alloc_align function attribute:        Common Function Attributes.
                                                               (line  148)
  * alloc_size function attribute:         Common Function Attributes.
--- 78676,78681 ----
*************** A.2 Concept and Symbol Index
*** 78677,78682 ****
--- 78684,78691 ----
                                                               (line   91)
  * alloc_size variable attribute:         Common Variable Attributes.
                                                               (line  170)
+ * alloca:                                Library Builtins.   (line    6)
+ * alloca vs variable-length arrays:      Variable Length.    (line   35)
  * Allow nesting in an interrupt handler on the Blackfin processor: Blackfin Function Attributes.
                                                               (line   44)
  * alternate keywords:                    Alternate Keywords. (line    6)
*************** A.2 Concept and Symbol Index
*** 78706,78714 ****
                                                               (line   22)
  * arch= function attribute, RISC-V:      RISC-V Function Attributes.
                                                               (line   45)
- * ARM options:                           ARM Options.        (line    6)
  * ARM [Annotated C++ Reference Manual]:  Backwards Compatibility.
                                                               (line    6)
  * arrays of length zero:                 Zero Length.        (line    6)
  * arrays of variable length:             Variable Length.    (line    6)
  * arrays, non-lvalue:                    Subscripting.       (line    6)
--- 78715,78723 ----
                                                               (line   22)
  * arch= function attribute, RISC-V:      RISC-V Function Attributes.
                                                               (line   45)
  * ARM [Annotated C++ Reference Manual]:  Backwards Compatibility.
                                                               (line    6)
+ * ARM options:                           ARM Options.        (line    6)
  * arrays of length zero:                 Zero Length.        (line    6)
  * arrays of variable length:             Variable Length.    (line    6)
  * arrays, non-lvalue:                    Subscripting.       (line    6)
*************** A.2 Concept and Symbol Index
*** 78816,78821 ****
--- 78825,78833 ----
  * C standard:                            Standards.          (line   13)
  * C standard attributes:                 Attribute Syntax.   (line    6)
  * C standards:                           Standards.          (line   13)
+ * C_INCLUDE_PATH:                        Environment Variables.
+                                                              (line  145)
+ * C-SKY Options:                         C-SKY Options.      (line    6)
  * c++:                                   Invoking G++.       (line   16)
  * C++:                                   G++ and GCC.        (line   29)
  * C++ comments:                          C++ Comments.       (line    6)
*************** A.2 Concept and Symbol Index
*** 78837,78843 ****
  * C++ static data, declaring and defining: Static Definitions.
                                                               (line    6)
  * C++11 memory model:                    __atomic Builtins.  (line    6)
- * C-SKY Options:                         C-SKY Options.      (line    6)
  * C11:                                   Standards.          (line   13)
  * C17:                                   Standards.          (line   13)
  * C1X:                                   Standards.          (line   13)
--- 78849,78854 ----
*************** A.2 Concept and Symbol Index
*** 78927,78936 ****
  * COBOL:                                 G++ and GCC.        (line   29)
  * COBOL <1>:                             Standards.          (line  260)
  * code generation conventions:           Code Gen Options.   (line    6)
- * code, mixed with declarations:         Mixed Labels and Declarations.
-                                                              (line    6)
  * code_readable function attribute, MIPS: MIPS Function Attributes.
                                                               (line  119)
  * cold function attribute:               Common Function Attributes.
                                                               (line  236)
  * cold label attribute:                  Label Attributes.   (line   45)
--- 78938,78947 ----
  * COBOL:                                 G++ and GCC.        (line   29)
  * COBOL <1>:                             Standards.          (line  260)
  * code generation conventions:           Code Gen Options.   (line    6)
  * code_readable function attribute, MIPS: MIPS Function Attributes.
                                                               (line  119)
+ * code, mixed with declarations:         Mixed Labels and Declarations.
+                                                              (line    6)
  * cold function attribute:               Common Function Attributes.
                                                               (line  236)
  * cold label attribute:                  Label Attributes.   (line   45)
*************** A.2 Concept and Symbol Index
*** 79035,79042 ****
                                                               (line  481)
  * Cygwin and MinGW Options:              Cygwin and MinGW Options.
                                                               (line    6)
- * C_INCLUDE_PATH:                        Environment Variables.
-                                                              (line  145)
  * D:                                     G++ and GCC.        (line    6)
  * Darwin options:                        Darwin Options.     (line    6)
  * dcgettext:                             Library Builtins.   (line    6)
--- 79046,79051 ----
*************** A.2 Concept and Symbol Index
*** 79057,79069 ****
  * declaring static data in C++:          Static Definitions. (line    6)
  * defining static data in C++:           Static Definitions. (line    6)
  * dependencies for make as output:       Environment Variables.
!                                                              (line  172)
  * dependencies for make as output <1>:   Environment Variables.
!                                                              (line  188)
  * dependencies, make:                    Preprocessor Options.
                                                               (line   76)
- * DEPENDENCIES_OUTPUT:                   Environment Variables.
-                                                              (line  172)
  * dependent name lookup:                 Name lookup.        (line    6)
  * deprecated enumerator attribute:       Enumerator Attributes.
                                                               (line   27)
--- 79066,79078 ----
  * declaring static data in C++:          Static Definitions. (line    6)
  * defining static data in C++:           Static Definitions. (line    6)
  * dependencies for make as output:       Environment Variables.
!                                                              (line  171)
  * dependencies for make as output <1>:   Environment Variables.
!                                                              (line  187)
! * DEPENDENCIES_OUTPUT:                   Environment Variables.
!                                                              (line  171)
  * dependencies, make:                    Preprocessor Options.
                                                               (line   76)
  * dependent name lookup:                 Name lookup.        (line    6)
  * deprecated enumerator attribute:       Enumerator Attributes.
                                                               (line   27)
*************** A.2 Concept and Symbol Index
*** 79123,79129 ****
                                                               (line    8)
  * eightbit_data variable attribute, H8/300: H8/300 Variable Attributes.
                                                               (line    8)
! * EIND:                                  AVR Options.        (line  429)
  * either function attribute, MSP430:     MSP430 Function Attributes.
                                                               (line   54)
  * either variable attribute, MSP430:     MSP430 Variable Attributes.
--- 79132,79138 ----
                                                               (line    8)
  * eightbit_data variable attribute, H8/300: H8/300 Variable Attributes.
                                                               (line    8)
! * EIND:                                  AVR Options.        (line  427)
  * either function attribute, MSP430:     MSP430 Function Attributes.
                                                               (line   54)
  * either variable attribute, MSP430:     MSP430 Variable Attributes.
*************** A.2 Concept and Symbol Index
*** 79192,79217 ****
                                                               (line   13)
  * far function attribute, MIPS:          MIPS Function Attributes.
                                                               (line   59)
- * fastcall function attribute, x86-32:   x86 Function Attributes.
-                                                              (line   14)
  * fast_interrupt function attribute, M32C: M32C Function Attributes.
                                                               (line   13)
  * fast_interrupt function attribute, MicroBlaze: MicroBlaze Function Attributes.
                                                               (line   25)
  * fast_interrupt function attribute, RX: RX Function Attributes.
                                                               (line    8)
  * fatal signal:                          Bug Criteria.       (line    9)
- * fdim:                                  Library Builtins.   (line    6)
- * fdimf:                                 Library Builtins.   (line    6)
- * fdiml:                                 Library Builtins.   (line    6)
- * FDL, GNU Free Documentation License:   GNU Free Documentation License.
-                                                              (line    6)
  * fd_arg function attribute:             Common Function Attributes.
                                                               (line  425)
  * fd_arg_read function attribute:        Common Function Attributes.
                                                               (line  442)
  * fd_arg_write function attribute:       Common Function Attributes.
                                                               (line  452)
  * fentry_name function attribute, x86:   x86 Function Attributes.
                                                               (line  785)
  * fentry_section function attribute, x86: x86 Function Attributes.
--- 79201,79226 ----
                                                               (line   13)
  * far function attribute, MIPS:          MIPS Function Attributes.
                                                               (line   59)
  * fast_interrupt function attribute, M32C: M32C Function Attributes.
                                                               (line   13)
  * fast_interrupt function attribute, MicroBlaze: MicroBlaze Function Attributes.
                                                               (line   25)
  * fast_interrupt function attribute, RX: RX Function Attributes.
                                                               (line    8)
+ * fastcall function attribute, x86-32:   x86 Function Attributes.
+                                                              (line   14)
  * fatal signal:                          Bug Criteria.       (line    9)
  * fd_arg function attribute:             Common Function Attributes.
                                                               (line  425)
  * fd_arg_read function attribute:        Common Function Attributes.
                                                               (line  442)
  * fd_arg_write function attribute:       Common Function Attributes.
                                                               (line  452)
+ * fdim:                                  Library Builtins.   (line    6)
+ * fdimf:                                 Library Builtins.   (line    6)
+ * fdiml:                                 Library Builtins.   (line    6)
+ * FDL, GNU Free Documentation License:   GNU Free Documentation License.
+                                                              (line    6)
  * fentry_name function attribute, x86:   x86 Function Attributes.
                                                               (line  785)
  * fentry_section function attribute, x86: x86 Function Attributes.
*************** A.2 Concept and Symbol Index
*** 79287,79292 ****
--- 79296,79309 ----
                                                               (line    6)
  * function versions:                     Function Multiversioning.
                                                               (line    6)
+ * function_return function attribute, x86: x86 Function Attributes.
+                                                              (line  712)
+ * function_vector function attribute, H8/300: H8/300 Function Attributes.
+                                                              (line    8)
+ * function_vector function attribute, M16C/M32C: M32C Function Attributes.
+                                                              (line   19)
+ * function_vector function attribute, SH: SH Function Attributes.
+                                                              (line    8)
  * function, size of pointer to:          Pointer Arith.      (line    6)
  * functions in arbitrary sections:       Common Function Attributes.
                                                               (line 1360)
*************** A.2 Concept and Symbol Index
*** 79320,79343 ****
                                                               (line  989)
  * functions with printf, scanf, strftime or strfmon style arguments: Common Function Attributes.
                                                               (line  468)
- * function_return function attribute, x86: x86 Function Attributes.
-                                                              (line  712)
- * function_vector function attribute, H8/300: H8/300 Function Attributes.
-                                                              (line    8)
- * function_vector function attribute, M16C/M32C: M32C Function Attributes.
-                                                              (line   19)
- * function_vector function attribute, SH: SH Function Attributes.
-                                                              (line    8)
  * G in constraint:                       Simple Constraints. (line   96)
  * g in constraint:                       Simple Constraints. (line  118)
  * g++:                                   Invoking G++.       (line   16)
  * G++:                                   G++ and GCC.        (line   29)
  * gamma:                                 Library Builtins.   (line    6)
  * gammaf:                                Library Builtins.   (line    6)
  * gammaf_r:                              Library Builtins.   (line    6)
  * gammal:                                Library Builtins.   (line    6)
  * gammal_r:                              Library Builtins.   (line    6)
- * gamma_r:                               Library Builtins.   (line    6)
  * GCC:                                   G++ and GCC.        (line    6)
  * GCC command options:                   Invoking GCC.       (line    6)
  * GCC_COLORS environment variable:       Diagnostic Message Formatting Options.
--- 79337,79352 ----
                                                               (line  989)
  * functions with printf, scanf, strftime or strfmon style arguments: Common Function Attributes.
                                                               (line  468)
  * G in constraint:                       Simple Constraints. (line   96)
  * g in constraint:                       Simple Constraints. (line  118)
  * g++:                                   Invoking G++.       (line   16)
  * G++:                                   G++ and GCC.        (line   29)
  * gamma:                                 Library Builtins.   (line    6)
+ * gamma_r:                               Library Builtins.   (line    6)
  * gammaf:                                Library Builtins.   (line    6)
  * gammaf_r:                              Library Builtins.   (line    6)
  * gammal:                                Library Builtins.   (line    6)
  * gammal_r:                              Library Builtins.   (line    6)
  * GCC:                                   G++ and GCC.        (line    6)
  * GCC command options:                   Invoking GCC.       (line    6)
  * GCC_COLORS environment variable:       Diagnostic Message Formatting Options.
*************** A.2 Concept and Symbol Index
*** 79389,79400 ****
  * hardware models and configurations, specifying: Submodel Options.
                                                               (line    6)
  * hex floats:                            Hex Floats.         (line    6)
- * highlight, color:                      Diagnostic Message Formatting Options.
-                                                              (line   55)
  * highlight-a GCC_COLORS capability:     Diagnostic Message Formatting Options.
                                                               (line  160)
  * highlight-b GCC_COLORS capability:     Diagnostic Message Formatting Options.
                                                               (line  160)
  * hk fixed-suffix:                       Fixed-Point.        (line    6)
  * HK fixed-suffix:                       Fixed-Point.        (line    6)
  * hosted environment:                    Standards.          (line   13)
--- 79398,79409 ----
  * hardware models and configurations, specifying: Submodel Options.
                                                               (line    6)
  * hex floats:                            Hex Floats.         (line    6)
  * highlight-a GCC_COLORS capability:     Diagnostic Message Formatting Options.
                                                               (line  160)
  * highlight-b GCC_COLORS capability:     Diagnostic Message Formatting Options.
                                                               (line  160)
+ * highlight, color:                      Diagnostic Message Formatting Options.
+                                                              (line   55)
  * hk fixed-suffix:                       Fixed-Point.        (line    6)
  * HK fixed-suffix:                       Fixed-Point.        (line    6)
  * hosted environment:                    Standards.          (line   13)
*************** A.2 Concept and Symbol Index
*** 79439,79445 ****
  * increment operators:                   Bug Criteria.       (line   17)
  * index:                                 Library Builtins.   (line    6)
  * indirect calls, ARC:                   ARC Function Attributes.
!                                                              (line   24)
  * indirect calls, ARM:                   ARM Function Attributes.
                                                               (line   36)
  * indirect calls, Blackfin:              Blackfin Function Attributes.
--- 79448,79454 ----
  * increment operators:                   Bug Criteria.       (line   17)
  * index:                                 Library Builtins.   (line    6)
  * indirect calls, ARC:                   ARC Function Attributes.
!                                                              (line   23)
  * indirect calls, ARM:                   ARM Function Attributes.
                                                               (line   36)
  * indirect calls, Blackfin:              Blackfin Function Attributes.
*************** A.2 Concept and Symbol Index
*** 79460,79469 ****
                                                               (line  779)
  * infinity builtins:                     Floating-Point Format Builtins.
                                                               (line    6)
  * initializations in expressions:        Compound Literals.  (line    6)
  * initializers with labeled elements:    Designated Inits.   (line    6)
  * initializers, non-constant:            Initializers.       (line    6)
- * init_priority variable attribute:      C++ Attributes.     (line   49)
  * inline assembly language:              Using Assembly Language with C.
                                                               (line    6)
  * inline automatic for C++ member fns:   Inline.             (line   68)
--- 79469,79478 ----
                                                               (line  779)
  * infinity builtins:                     Floating-Point Format Builtins.
                                                               (line    6)
+ * init_priority variable attribute:      C++ Attributes.     (line   49)
  * initializations in expressions:        Compound Literals.  (line    6)
  * initializers with labeled elements:    Designated Inits.   (line    6)
  * initializers, non-constant:            Initializers.       (line    6)
  * inline assembly language:              Using Assembly Language with C.
                                                               (line    6)
  * inline automatic for C++ member fns:   Inline.             (line   68)
*************** A.2 Concept and Symbol Index
*** 79516,79523 ****
                                                               (line  130)
  * interrupt function attribute, Xstormy16: Xstormy16 Function Attributes.
                                                               (line    8)
- * interrupt(NUM) function attribute, AVR: AVR Function Attributes.
-                                                              (line   44)
  * interrupt_handler function attribute:  Common Function Attributes.
                                                               (line  732)
  * interrupt_handler function attribute, Blackfin: Blackfin Function Attributes.
--- 79525,79530 ----
*************** A.2 Concept and Symbol Index
*** 79534,79539 ****
--- 79541,79548 ----
                                                               (line    8)
  * interrupt_thread function attribute, fido: m68k Function Attributes.
                                                               (line   15)
+ * interrupt(NUM) function attribute, AVR: AVR Function Attributes.
+                                                              (line   44)
  * introduction:                          Top.                (line    6)
  * invalid assembly code:                 Bug Criteria.       (line   12)
  * invalid GCC_COLORS capability:         Diagnostic Message Formatting Options.
*************** A.2 Concept and Symbol Index
*** 79596,79604 ****
  * j1f:                                   Library Builtins.   (line    6)
  * j1l:                                   Library Builtins.   (line    6)
  * jli_always function attribute, ARC:    ARC Function Attributes.
!                                                              (line   43)
  * jli_fixed function attribute, ARC:     ARC Function Attributes.
!                                                              (line   49)
  * jn:                                    Library Builtins.   (line    6)
  * jnf:                                   Library Builtins.   (line    6)
  * jnl:                                   Library Builtins.   (line    6)
--- 79605,79613 ----
  * j1f:                                   Library Builtins.   (line    6)
  * j1l:                                   Library Builtins.   (line    6)
  * jli_always function attribute, ARC:    ARC Function Attributes.
!                                                              (line   42)
  * jli_fixed function attribute, ARC:     ARC Function Attributes.
!                                                              (line   48)
  * jn:                                    Library Builtins.   (line    6)
  * jnf:                                   Library Builtins.   (line    6)
  * jnl:                                   Library Builtins.   (line    6)
*************** A.2 Concept and Symbol Index
*** 79651,79661 ****
  * legacy builtins for atomic memory access: __sync Builtins. (line    6)
  * length-zero arrays:                    Zero Length.        (line    6)
  * lgamma:                                Library Builtins.   (line    6)
  * lgammaf:                               Library Builtins.   (line    6)
  * lgammaf_r:                             Library Builtins.   (line    6)
  * lgammal:                               Library Builtins.   (line    6)
  * lgammal_r:                             Library Builtins.   (line    6)
- * lgamma_r:                              Library Builtins.   (line    6)
  * Libraries:                             Link Options.       (line   85)
  * library function builtins:             Library Builtins.   (line    6)
  * LIBRARY_PATH:                          Environment Variables.
--- 79660,79670 ----
  * legacy builtins for atomic memory access: __sync Builtins. (line    6)
  * length-zero arrays:                    Zero Length.        (line    6)
  * lgamma:                                Library Builtins.   (line    6)
+ * lgamma_r:                              Library Builtins.   (line    6)
  * lgammaf:                               Library Builtins.   (line    6)
  * lgammaf_r:                             Library Builtins.   (line    6)
  * lgammal:                               Library Builtins.   (line    6)
  * lgammal_r:                             Library Builtins.   (line    6)
  * Libraries:                             Link Options.       (line   85)
  * library function builtins:             Library Builtins.   (line    6)
  * LIBRARY_PATH:                          Environment Variables.
*************** A.2 Concept and Symbol Index
*** 79704,79709 ****
--- 79713,79726 ----
  * logf:                                  Library Builtins.   (line    6)
  * logl:                                  Library Builtins.   (line    6)
  * long long data types:                  Long Long.          (line    6)
+ * long_call function attribute, ARC:     ARC Function Attributes.
+                                                              (line   23)
+ * long_call function attribute, ARM:     ARM Function Attributes.
+                                                              (line   36)
+ * long_call function attribute, Epiphany: Epiphany Function Attributes.
+                                                              (line   55)
+ * long_call function attribute, MIPS:    MIPS Function Attributes.
+                                                              (line   59)
  * longcall function attribute, Blackfin: Blackfin Function Attributes.
                                                               (line   36)
  * longcall function attribute, PowerPC:  PowerPC Function Attributes.
*************** A.2 Concept and Symbol Index
*** 79712,79725 ****
                                                               (line   92)
  * longjmp incompatibilities:             Incompatibilities.  (line   39)
  * longjmp warnings:                      Warning Options.    (line 1672)
- * long_call function attribute, ARC:     ARC Function Attributes.
-                                                              (line   24)
- * long_call function attribute, ARM:     ARM Function Attributes.
-                                                              (line   36)
- * long_call function attribute, Epiphany: Epiphany Function Attributes.
-                                                              (line   55)
- * long_call function attribute, MIPS:    MIPS Function Attributes.
-                                                              (line   59)
  * LoongArch Options:                     LoongArch Options.  (line    6)
  * lower function attribute, MSP430:      MSP430 Function Attributes.
                                                               (line   54)
--- 79729,79734 ----
*************** A.2 Concept and Symbol Index
*** 79758,79764 ****
                                                               (line  259)
  * MCore options:                         MCore Options.      (line    6)
  * medium_call function attribute, ARC:   ARC Function Attributes.
!                                                              (line   24)
  * member fns, automatically inline:      Inline.             (line   68)
  * memchr:                                Library Builtins.   (line    6)
  * memcmp:                                Library Builtins.   (line    6)
--- 79767,79773 ----
                                                               (line  259)
  * MCore options:                         MCore Options.      (line    6)
  * medium_call function attribute, ARC:   ARC Function Attributes.
!                                                              (line   23)
  * member fns, automatically inline:      Inline.             (line   68)
  * memchr:                                Library Builtins.   (line    6)
  * memcmp:                                Library Builtins.   (line    6)
*************** A.2 Concept and Symbol Index
*** 79807,79813 ****
  * modfl:                                 Library Builtins.   (line    6)
  * modifiers in constraints:              Modifiers.          (line    6)
  * Moxie Options:                         Moxie Options.      (line    6)
- * MSP430 Options:                        MSP430 Options.     (line    6)
  * ms_abi function attribute, x86:        x86 Function Attributes.
                                                               (line   32)
  * ms_hook_prologue function attribute, x86: x86 Function Attributes.
--- 79816,79821 ----
*************** A.2 Concept and Symbol Index
*** 79822,79834 ****
                                                               (line    9)
  * ms_struct variable attribute, x86:     x86 Variable Attributes.
                                                               (line    9)
  * multiple alternative constraints:      Multi-Alternative.  (line    6)
  * multiprecision arithmetic:             Long Long.          (line    6)
  * musttail statement attribute:          Statement Attributes.
                                                               (line   57)
  * n in constraint:                       Simple Constraints. (line   73)
  * naked function attribute, ARC:         ARC Function Attributes.
!                                                              (line   58)
  * naked function attribute, ARM:         ARM Function Attributes.
                                                               (line   47)
  * naked function attribute, AVR:         AVR Function Attributes.
--- 79830,79843 ----
                                                               (line    9)
  * ms_struct variable attribute, x86:     x86 Variable Attributes.
                                                               (line    9)
+ * MSP430 Options:                        MSP430 Options.     (line    6)
  * multiple alternative constraints:      Multi-Alternative.  (line    6)
  * multiprecision arithmetic:             Long Long.          (line    6)
  * musttail statement attribute:          Statement Attributes.
                                                               (line   57)
  * n in constraint:                       Simple Constraints. (line   73)
  * naked function attribute, ARC:         ARC Function Attributes.
!                                                              (line   57)
  * naked function attribute, ARM:         ARM Function Attributes.
                                                               (line   47)
  * naked function attribute, AVR:         AVR Function Attributes.
*************** A.2 Concept and Symbol Index
*** 79887,79892 ****
--- 79896,79935 ----
                                                               (line   49)
  * nmi_handler function attribute, Blackfin: Blackfin Function Attributes.
                                                               (line   49)
+ * no_callee_saved_registers function attribute, x86: x86 Function Attributes.
+                                                              (line  112)
+ * no_caller_saved_registers function attribute, x86: x86 Function Attributes.
+                                                              (line  119)
+ * no_dangling function attribute:        C++ Attributes.     (line   74)
+ * no_dangling type attribute:            C++ Attributes.     (line   74)
+ * no_gccisr function attribute, AVR:     AVR Function Attributes.
+                                                              (line  100)
+ * no_icf function attribute:             Common Function Attributes.
+                                                              (line  881)
+ * no_icf variable attribute:             Common Variable Attributes.
+                                                              (line  276)
+ * no_instrument_function function attribute: Common Function Attributes.
+                                                              (line  885)
+ * no_profile_instrument_function function attribute: Common Function Attributes.
+                                                              (line  891)
+ * no_reorder function attribute:         Common Function Attributes.
+                                                              (line  896)
+ * no_sanitize function attribute:        Common Function Attributes.
+                                                              (line  904)
+ * no_sanitize_address function attribute: Common Function Attributes.
+                                                              (line  915)
+ * no_sanitize_coverage function attribute: Common Function Attributes.
+                                                              (line  935)
+ * no_sanitize_thread function attribute: Common Function Attributes.
+                                                              (line  924)
+ * no_sanitize_undefined function attribute: Common Function Attributes.
+                                                              (line  929)
+ * no_split_stack function attribute:     Common Function Attributes.
+                                                              (line  940)
+ * no_stack_limit function attribute:     Common Function Attributes.
+                                                              (line  946)
+ * no_stack_protector function attribute: Common Function Attributes.
+                                                              (line  951)
  * noblock function attribute, AVR:       AVR Function Attributes.
                                                               (line   81)
  * nocf_check function attribute:         x86 Function Attributes.
*************** A.2 Concept and Symbol Index
*** 79924,79971 ****
                                                               (line 1085)
  * nosave_low_regs function attribute, SH: SH Function Attributes.
                                                               (line   33)
  * note GCC_COLORS capability:            Diagnostic Message Formatting Options.
                                                               (line  100)
  * nothrow function attribute:            Common Function Attributes.
                                                               (line 1119)
  * notshared type attribute, ARM:         ARM Type Attributes.
                                                               (line    6)
- * not_nested function attribute, NDS32:  NDS32 Function Attributes.
-                                                              (line   19)
- * no_callee_saved_registers function attribute, x86: x86 Function Attributes.
-                                                              (line  112)
- * no_caller_saved_registers function attribute, x86: x86 Function Attributes.
-                                                              (line  119)
- * no_dangling function attribute:        C++ Attributes.     (line   74)
- * no_dangling type attribute:            C++ Attributes.     (line   74)
- * no_gccisr function attribute, AVR:     AVR Function Attributes.
-                                                              (line  100)
- * no_icf function attribute:             Common Function Attributes.
-                                                              (line  881)
- * no_icf variable attribute:             Common Variable Attributes.
-                                                              (line  276)
- * no_instrument_function function attribute: Common Function Attributes.
-                                                              (line  885)
- * no_profile_instrument_function function attribute: Common Function Attributes.
-                                                              (line  891)
- * no_reorder function attribute:         Common Function Attributes.
-                                                              (line  896)
- * no_sanitize function attribute:        Common Function Attributes.
-                                                              (line  904)
- * no_sanitize_address function attribute: Common Function Attributes.
-                                                              (line  915)
- * no_sanitize_coverage function attribute: Common Function Attributes.
-                                                              (line  935)
- * no_sanitize_thread function attribute: Common Function Attributes.
-                                                              (line  924)
- * no_sanitize_undefined function attribute: Common Function Attributes.
-                                                              (line  929)
- * no_split_stack function attribute:     Common Function Attributes.
-                                                              (line  940)
- * no_stack_limit function attribute:     Common Function Attributes.
-                                                              (line  946)
- * no_stack_protector function attribute: Common Function Attributes.
-                                                              (line  951)
  * null_terminated_string_arg function attribute: Common Function Attributes.
                                                               (line 1126)
  * numeric builtins:                      Numeric Builtins.   (line    6)
--- 79967,79980 ----
                                                               (line 1085)
  * nosave_low_regs function attribute, SH: SH Function Attributes.
                                                               (line   33)
+ * not_nested function attribute, NDS32:  NDS32 Function Attributes.
+                                                              (line   19)
  * note GCC_COLORS capability:            Diagnostic Message Formatting Options.
                                                               (line  100)
  * nothrow function attribute:            Common Function Attributes.
                                                               (line 1119)
  * notshared type attribute, ARM:         ARM Type Attributes.
                                                               (line    6)
  * null_terminated_string_arg function attribute: Common Function Attributes.
                                                               (line 1126)
  * numeric builtins:                      Numeric Builtins.   (line    6)
*************** A.2 Concept and Symbol Index
*** 80059,80065 ****
  * other register constraints:            Simple Constraints. (line  173)
  * outline-atomics function attribute, AArch64: AArch64 Function Attributes.
                                                               (line   81)
! * output file option:                    Overall Options.    (line  205)
  * overflow checking builtins:            Integer Overflow Builtins.
                                                               (line    6)
  * overloaded virtual function, warning:  C++ Dialect Options.
--- 80068,80074 ----
  * other register constraints:            Simple Constraints. (line  173)
  * outline-atomics function attribute, AArch64: AArch64 Function Attributes.
                                                               (line   81)
! * output file option:                    Overall Options.    (line  209)
  * overflow checking builtins:            Integer Overflow Builtins.
                                                               (line    6)
  * overloaded virtual function, warning:  C++ Dialect Options.
*************** A.2 Concept and Symbol Index
*** 80126,80135 ****
  * pragma, diagnostic <3>:                Diagnostic Pragmas. (line  113)
  * pragma, fini:                          Solaris Pragmas.    (line   19)
  * pragma, init:                          Solaris Pragmas.    (line   25)
- * pragma, longcall:                      RS/6000 and PowerPC Pragmas.
-                                                              (line   13)
  * pragma, long_calls:                    ARM Pragmas.        (line   10)
  * pragma, long_calls_off:                ARM Pragmas.        (line   16)
  * pragma, mark:                          Darwin Pragmas.     (line   10)
  * pragma, memregs:                       M32C Pragmas.       (line    6)
  * pragma, ms_struct:                     Structure-Layout Pragmas.
--- 80135,80144 ----
  * pragma, diagnostic <3>:                Diagnostic Pragmas. (line  113)
  * pragma, fini:                          Solaris Pragmas.    (line   19)
  * pragma, init:                          Solaris Pragmas.    (line   25)
  * pragma, long_calls:                    ARM Pragmas.        (line   10)
  * pragma, long_calls_off:                ARM Pragmas.        (line   16)
+ * pragma, longcall:                      RS/6000 and PowerPC Pragmas.
+                                                              (line   13)
  * pragma, mark:                          Darwin Pragmas.     (line   10)
  * pragma, memregs:                       M32C Pragmas.       (line    6)
  * pragma, ms_struct:                     Structure-Layout Pragmas.
*************** A.2 Concept and Symbol Index
*** 80191,80200 ****
  * r fixed-suffix:                        Fixed-Point.        (line    6)
  * R fixed-suffix:                        Fixed-Point.        (line    6)
  * r in constraint:                       Simple Constraints. (line   64)
! * RAMPD:                                 AVR Options.        (line  540)
! * RAMPX:                                 AVR Options.        (line  540)
! * RAMPY:                                 AVR Options.        (line  540)
! * RAMPZ:                                 AVR Options.        (line  540)
  * range1 GCC_COLORS capability:          Diagnostic Message Formatting Options.
                                                               (line  109)
  * range2 GCC_COLORS capability:          Diagnostic Message Formatting Options.
--- 80200,80209 ----
  * r fixed-suffix:                        Fixed-Point.        (line    6)
  * R fixed-suffix:                        Fixed-Point.        (line    6)
  * r in constraint:                       Simple Constraints. (line   64)
! * RAMPD:                                 AVR Options.        (line  538)
! * RAMPX:                                 AVR Options.        (line  538)
! * RAMPY:                                 AVR Options.        (line  538)
! * RAMPZ:                                 AVR Options.        (line  538)
  * range1 GCC_COLORS capability:          Diagnostic Message Formatting Options.
                                                               (line  109)
  * range2 GCC_COLORS capability:          Diagnostic Message Formatting Options.
*************** A.2 Concept and Symbol Index
*** 80280,80293 ****
                                                               (line   55)
  * save all registers on the H8/300, H8/300H, and H8S: H8/300 Function Attributes.
                                                               (line   22)
- * saveall function attribute, Blackfin:  Blackfin Function Attributes.
-                                                              (line   55)
- * saveall function attribute, H8/300:    H8/300 Function Attributes.
-                                                              (line   22)
  * save_all function attribute, NDS32:    NDS32 Function Attributes.
                                                               (line   26)
  * save_volatiles function attribute, MicroBlaze: MicroBlaze Function Attributes.
                                                               (line    8)
  * scalar_storage_order type attribute:   Common Type Attributes.
                                                               (line  347)
  * scalb:                                 Library Builtins.   (line    6)
--- 80289,80302 ----
                                                               (line   55)
  * save all registers on the H8/300, H8/300H, and H8S: H8/300 Function Attributes.
                                                               (line   22)
  * save_all function attribute, NDS32:    NDS32 Function Attributes.
                                                               (line   26)
  * save_volatiles function attribute, MicroBlaze: MicroBlaze Function Attributes.
                                                               (line    8)
+ * saveall function attribute, Blackfin:  Blackfin Function Attributes.
+                                                              (line   55)
+ * saveall function attribute, H8/300:    H8/300 Function Attributes.
+                                                              (line   22)
  * scalar_storage_order type attribute:   Common Type Attributes.
                                                               (line  347)
  * scalb:                                 Library Builtins.   (line    6)
*************** A.2 Concept and Symbol Index
*** 80311,80317 ****
  * section variable attribute:            Common Variable Attributes.
                                                               (line  380)
  * secure_call function attribute, ARC:   ARC Function Attributes.
!                                                              (line   53)
  * selectany variable attribute:          Microsoft Windows Variable Attributes.
                                                               (line   15)
  * sentinel function attribute:           Common Function Attributes.
--- 80320,80326 ----
  * section variable attribute:            Common Variable Attributes.
                                                               (line  380)
  * secure_call function attribute, ARC:   ARC Function Attributes.
!                                                              (line   52)
  * selectany variable attribute:          Microsoft Windows Variable Attributes.
                                                               (line   15)
  * sentinel function attribute:           Common Function Attributes.
*************** A.2 Concept and Symbol Index
*** 80324,80341 ****
                                                               (line   36)
  * shared variable attribute, Nvidia PTX: Nvidia PTX Variable Attributes.
                                                               (line    8)
- * shortcall function attribute, Blackfin: Blackfin Function Attributes.
-                                                              (line   36)
- * shortcall function attribute, PowerPC: PowerPC Function Attributes.
-                                                              (line    8)
  * short_call function attribute, ARC:    ARC Function Attributes.
!                                                              (line   24)
  * short_call function attribute, ARM:    ARM Function Attributes.
                                                               (line   36)
  * short_call function attribute, Epiphany: Epiphany Function Attributes.
                                                               (line   55)
  * short_call function attribute, MIPS:   MIPS Function Attributes.
                                                               (line   59)
  * side effect in ?::                     Conditionals.       (line   20)
  * side effects, macro argument:          Statement Exprs.    (line   35)
  * side effects, order of evaluation:     Non-bugs.           (line  196)
--- 80333,80350 ----
                                                               (line   36)
  * shared variable attribute, Nvidia PTX: Nvidia PTX Variable Attributes.
                                                               (line    8)
  * short_call function attribute, ARC:    ARC Function Attributes.
!                                                              (line   23)
  * short_call function attribute, ARM:    ARM Function Attributes.
                                                               (line   36)
  * short_call function attribute, Epiphany: Epiphany Function Attributes.
                                                               (line   55)
  * short_call function attribute, MIPS:   MIPS Function Attributes.
                                                               (line   59)
+ * shortcall function attribute, Blackfin: Blackfin Function Attributes.
+                                                              (line   36)
+ * shortcall function attribute, PowerPC: PowerPC Function Attributes.
+                                                              (line    8)
  * side effect in ?::                     Conditionals.       (line   20)
  * side effects, macro argument:          Statement Exprs.    (line   35)
  * side effects, order of evaluation:     Non-bugs.           (line  196)
*************** A.2 Concept and Symbol Index
*** 80377,80383 ****
  * snprintf:                              Library Builtins.   (line    6)
  * Solaris 2 options:                     Solaris 2 Options.  (line    6)
  * SOURCE_DATE_EPOCH:                     Environment Variables.
!                                                              (line  194)
  * SPARC options:                         SPARC Options.      (line    6)
  * Spec Files:                            Spec Files.         (line    6)
  * specified registers:                   Explicit Register Variables.
--- 80386,80394 ----
  * snprintf:                              Library Builtins.   (line    6)
  * Solaris 2 options:                     Solaris 2 Options.  (line    6)
  * SOURCE_DATE_EPOCH:                     Environment Variables.
!                                                              (line  193)
! * sp_switch function attribute, SH:      SH Function Attributes.
!                                                              (line   57)
  * SPARC options:                         SPARC Options.      (line    6)
  * Spec Files:                            Spec Files.         (line    6)
  * specified registers:                   Explicit Register Variables.
*************** A.2 Concept and Symbol Index
*** 80392,80399 ****
                                                               (line    6)
  * speed of compilation <1>:              C++ Modules.        (line    6)
  * sprintf:                               Library Builtins.   (line    6)
- * sp_switch function attribute, SH:      SH Function Attributes.
-                                                              (line   57)
  * sqrt:                                  Library Builtins.   (line    6)
  * sqrtf:                                 Library Builtins.   (line    6)
  * sqrtl:                                 Library Builtins.   (line    6)
--- 80403,80408 ----
*************** A.2 Concept and Symbol Index
*** 80423,80434 ****
  * strdup:                                Library Builtins.   (line    6)
  * strfmon:                               Library Builtins.   (line    6)
  * strftime:                              Library Builtins.   (line    6)
  * strict-align function attribute, AArch64: AArch64 Function Attributes.
                                                               (line   31)
  * strict-align function attribute, LoongArch: LoongArch Function Attributes.
                                                               (line    8)
- * strict_flex_array variable attribute:  Common Variable Attributes.
-                                                              (line  425)
  * string constants:                      Incompatibilities.  (line    9)
  * string literals, raw:                  Raw String Literals.
                                                               (line    6)
--- 80432,80443 ----
  * strdup:                                Library Builtins.   (line    6)
  * strfmon:                               Library Builtins.   (line    6)
  * strftime:                              Library Builtins.   (line    6)
+ * strict_flex_array variable attribute:  Common Variable Attributes.
+                                                              (line  425)
  * strict-align function attribute, AArch64: AArch64 Function Attributes.
                                                               (line   31)
  * strict-align function attribute, LoongArch: LoongArch Function Attributes.
                                                               (line    8)
  * string constants:                      Incompatibilities.  (line    9)
  * string literals, raw:                  Raw String Literals.
                                                               (line    6)
*************** A.2 Concept and Symbol Index
*** 80461,80467 ****
  * subscripting and function values:      Subscripting.       (line    6)
  * suffixes for C++ source:               Invoking G++.       (line    6)
  * SUNPRO_DEPENDENCIES:                   Environment Variables.
!                                                              (line  188)
  * suppressing warnings:                  Warning Options.    (line    6)
  * surprises in C++:                      C++ Misunderstandings.
                                                               (line    6)
--- 80470,80476 ----
  * subscripting and function values:      Subscripting.       (line    6)
  * suffixes for C++ source:               Invoking G++.       (line    6)
  * SUNPRO_DEPENDENCIES:                   Environment Variables.
!                                                              (line  187)
  * suppressing warnings:                  Warning Options.    (line    6)
  * surprises in C++:                      C++ Misunderstandings.
                                                               (line    6)
*************** A.2 Concept and Symbol Index
*** 80492,80497 ****
--- 80501,80509 ----
  * target function attribute <4>:         x86 Function Attributes.
                                                               (line  186)
  * target machine, specifying:            Invoking GCC.       (line   24)
+ * target_clones function attribute:      Common Function Attributes.
+                                                              (line 1527)
+ * target-dependent options:              Submodel Options.   (line    6)
  * target("3dnow") function attribute, x86: x86 Function Attributes.
                                                               (line  191)
  * target("3dnowa") function attribute, x86: x86 Function Attributes.
*************** A.2 Concept and Symbol Index
*** 80536,80547 ****
                                                               (line  140)
  * target("avx") function attribute, x86: x86 Function Attributes.
                                                               (line  213)
- * target("avx10.1") function attribute, x86: x86 Function Attributes.
-                                                              (line  593)
  * target("avx10.1-256") function attribute, x86: x86 Function Attributes.
                                                               (line  588)
  * target("avx10.1-512") function attribute, x86: x86 Function Attributes.
                                                               (line  598)
  * target("avx10.2") function attribute, x86: x86 Function Attributes.
                                                               (line  603)
  * target("avx2") function attribute, x86: x86 Function Attributes.
--- 80548,80559 ----
                                                               (line  140)
  * target("avx") function attribute, x86: x86 Function Attributes.
                                                               (line  213)
  * target("avx10.1-256") function attribute, x86: x86 Function Attributes.
                                                               (line  588)
  * target("avx10.1-512") function attribute, x86: x86 Function Attributes.
                                                               (line  598)
+ * target("avx10.1") function attribute, x86: x86 Function Attributes.
+                                                              (line  593)
  * target("avx10.2") function attribute, x86: x86 Function Attributes.
                                                               (line  603)
  * target("avx2") function attribute, x86: x86 Function Attributes.
*************** A.2 Concept and Symbol Index
*** 80706,80715 ****
                                                               (line  396)
  * target("rdseed") function attribute, x86: x86 Function Attributes.
                                                               (line  400)
- * target("recip") function attribute, x86: x86 Function Attributes.
-                                                              (line  660)
  * target("recip-precision") function attribute, PowerPC: PowerPC Function Attributes.
                                                               (line  111)
  * target("rtm") function attribute, x86: x86 Function Attributes.
                                                               (line  404)
  * target("sahf") function attribute, x86: x86 Function Attributes.
--- 80718,80727 ----
                                                               (line  396)
  * target("rdseed") function attribute, x86: x86 Function Attributes.
                                                               (line  400)
  * target("recip-precision") function attribute, PowerPC: PowerPC Function Attributes.
                                                               (line  111)
+ * target("recip") function attribute, x86: x86 Function Attributes.
+                                                              (line  660)
  * target("rtm") function attribute, x86: x86 Function Attributes.
                                                               (line  404)
  * target("sahf") function attribute, x86: x86 Function Attributes.
*************** A.2 Concept and Symbol Index
*** 80732,80743 ****
                                                               (line  428)
  * target("sse3") function attribute, x86: x86 Function Attributes.
                                                               (line  432)
- * target("sse4") function attribute, x86: x86 Function Attributes.
-                                                              (line  436)
  * target("sse4.1") function attribute, x86: x86 Function Attributes.
                                                               (line  441)
  * target("sse4.2") function attribute, x86: x86 Function Attributes.
                                                               (line  445)
  * target("sse4a") function attribute, x86: x86 Function Attributes.
                                                               (line  449)
  * target("ssse3") function attribute, x86: x86 Function Attributes.
--- 80744,80755 ----
                                                               (line  428)
  * target("sse3") function attribute, x86: x86 Function Attributes.
                                                               (line  432)
  * target("sse4.1") function attribute, x86: x86 Function Attributes.
                                                               (line  441)
  * target("sse4.2") function attribute, x86: x86 Function Attributes.
                                                               (line  445)
+ * target("sse4") function attribute, x86: x86 Function Attributes.
+                                                              (line  436)
  * target("sse4a") function attribute, x86: x86 Function Attributes.
                                                               (line  449)
  * target("ssse3") function attribute, x86: x86 Function Attributes.
*************** A.2 Concept and Symbol Index
*** 80780,80788 ****
                                                               (line  489)
  * target("xsaves") function attribute, x86: x86 Function Attributes.
                                                               (line  493)
- * target-dependent options:              Submodel Options.   (line    6)
- * target_clones function attribute:      Common Function Attributes.
-                                                              (line 1527)
  * targs GCC_COLORS capability:           Diagnostic Message Formatting Options.
                                                               (line  125)
  * TC1:                                   Standards.          (line   13)
--- 80792,80797 ----
*************** A.2 Concept and Symbol Index
*** 80812,80821 ****
  * tiny_data variable attribute, H8/300:  H8/300 Variable Attributes.
                                                               (line   18)
  * TLS:                                   Thread-Local.       (line    6)
- * tls-dialect= function attribute, AArch64: AArch64 Function Attributes.
-                                                              (line   47)
  * tls_model variable attribute:          Common Variable Attributes.
                                                               (line  456)
  * TMPDIR:                                Environment Variables.
                                                               (line   44)
  * toascii:                               Library Builtins.   (line    6)
--- 80821,80830 ----
  * tiny_data variable attribute, H8/300:  H8/300 Variable Attributes.
                                                               (line   18)
  * TLS:                                   Thread-Local.       (line    6)
  * tls_model variable attribute:          Common Variable Attributes.
                                                               (line  456)
+ * tls-dialect= function attribute, AArch64: AArch64 Function Attributes.
+                                                              (line   47)
  * TMPDIR:                                Environment Variables.
                                                               (line   44)
  * toascii:                               Library Builtins.   (line    6)
*************** A.2 Concept and Symbol Index
*** 80829,80838 ****
                                                               (line  106)
  * transparent_union type attribute:      Common Type Attributes.
                                                               (line  635)
- * trapa_handler function attribute, SH:  SH Function Attributes.
-                                                              (line   72)
  * trap_exit function attribute, SH:      SH Function Attributes.
                                                               (line   67)
  * trunc:                                 Library Builtins.   (line    6)
  * truncf:                                Library Builtins.   (line    6)
  * truncl:                                Library Builtins.   (line    6)
--- 80838,80847 ----
                                                               (line  106)
  * transparent_union type attribute:      Common Type Attributes.
                                                               (line  635)
  * trap_exit function attribute, SH:      SH Function Attributes.
                                                               (line   67)
+ * trapa_handler function attribute, SH:  SH Function Attributes.
+                                                              (line   72)
  * trunc:                                 Library Builtins.   (line    6)
  * truncf:                                Library Builtins.   (line    6)
  * truncl:                                Library Builtins.   (line    6)
*************** A.2 Concept and Symbol Index
*** 80845,80855 ****
  * two-stage name lookup:                 Name lookup.        (line    6)
  * type alignment:                        Alignment.          (line    6)
  * type attributes:                       Type Attributes.    (line    6)
  * type-diff GCC_COLORS capability:       Diagnostic Message Formatting Options.
                                                               (line  148)
  * typedef names as function parameters:  Incompatibilities.  (line   97)
  * typeof:                                Typeof.             (line    6)
- * type_info:                             Vague Linkage.      (line   41)
  * uhk fixed-suffix:                      Fixed-Point.        (line    6)
  * UHK fixed-suffix:                      Fixed-Point.        (line    6)
  * uhr fixed-suffix:                      Fixed-Point.        (line    6)
--- 80854,80864 ----
  * two-stage name lookup:                 Name lookup.        (line    6)
  * type alignment:                        Alignment.          (line    6)
  * type attributes:                       Type Attributes.    (line    6)
+ * type_info:                             Vague Linkage.      (line   41)
  * type-diff GCC_COLORS capability:       Diagnostic Message Formatting Options.
                                                               (line  148)
  * typedef names as function parameters:  Incompatibilities.  (line   97)
  * typeof:                                Typeof.             (line    6)
  * uhk fixed-suffix:                      Fixed-Point.        (line    6)
  * UHK fixed-suffix:                      Fixed-Point.        (line    6)
  * uhr fixed-suffix:                      Fixed-Point.        (line    6)
*************** A.2 Concept and Symbol Index
*** 80908,80925 ****
  * UR fixed-suffix:                       Fixed-Point.        (line    6)
  * urls:                                  Diagnostic Message Formatting Options.
                                                               (line  166)
- * used function attribute:               Common Function Attributes.
-                                                              (line 1570)
- * used variable attribute:               Common Variable Attributes.
-                                                              (line  485)
- * User stack pointer in interrupts on the Blackfin: Blackfin Function Attributes.
-                                                              (line   20)
  * use_debug_exception_return function attribute, MIPS: MIPS Function Attributes.
                                                               (line   38)
  * use_hazard_barrier_return function attribute, MIPS: MIPS Function Attributes.
                                                               (line  113)
  * use_shadow_register_set function attribute, MIPS: MIPS Function Attributes.
                                                               (line   27)
  * V in constraint:                       Simple Constraints. (line   43)
  * V850 Options:                          V850 Options.       (line    6)
  * vague linkage:                         Vague Linkage.      (line    6)
--- 80917,80934 ----
  * UR fixed-suffix:                       Fixed-Point.        (line    6)
  * urls:                                  Diagnostic Message Formatting Options.
                                                               (line  166)
  * use_debug_exception_return function attribute, MIPS: MIPS Function Attributes.
                                                               (line   38)
  * use_hazard_barrier_return function attribute, MIPS: MIPS Function Attributes.
                                                               (line  113)
  * use_shadow_register_set function attribute, MIPS: MIPS Function Attributes.
                                                               (line   27)
+ * used function attribute:               Common Function Attributes.
+                                                              (line 1570)
+ * used variable attribute:               Common Variable Attributes.
+                                                              (line  485)
+ * User stack pointer in interrupts on the Blackfin: Blackfin Function Attributes.
+                                                              (line   20)
  * V in constraint:                       Simple Constraints. (line   43)
  * V850 Options:                          V850 Options.       (line    6)
  * vague linkage:                         Vague Linkage.      (line    6)
*************** A.2 Concept and Symbol Index
*** 80943,80956 ****
                                                               (line    6)
  * variadic macros:                       Variadic Macros.    (line    6)
  * VAX options:                           VAX Options.        (line    6)
- * vector function attribute, RX:         RX Function Attributes.
-                                                              (line   48)
- * vector types, using with x86 intrinsics: Vector Extensions.
-                                                              (line  220)
- * vector_size type attribute:            Common Type Attributes.
-                                                              (line  708)
- * vector_size variable attribute:        Common Variable Attributes.
-                                                              (line  520)
  * vec_blendv:                            PowerPC AltiVec Built-in Functions Available on ISA 3.1.
                                                               (line  330)
  * vec_cfuge:                             PowerPC AltiVec Built-in Functions Available on ISA 3.1.
--- 80952,80957 ----
*************** A.2 Concept and Symbol Index
*** 80989,80998 ****
                                                               (line  253)
  * vec_splati:                            PowerPC AltiVec Built-in Functions Available on ISA 3.1.
                                                               (line  287)
- * vec_splatid:                           PowerPC AltiVec Built-in Functions Available on ISA 3.1.
-                                                              (line  292)
  * vec_splati_ins:                        PowerPC AltiVec Built-in Functions Available on ISA 3.1.
                                                               (line  303)
  * vec_srdb:                              PowerPC AltiVec Built-in Functions Available on ISA 3.1.
                                                               (line  280)
  * vec_stril:                             PowerPC AltiVec Built-in Functions Available on ISA 3.1.
--- 80990,80999 ----
                                                               (line  253)
  * vec_splati:                            PowerPC AltiVec Built-in Functions Available on ISA 3.1.
                                                               (line  287)
  * vec_splati_ins:                        PowerPC AltiVec Built-in Functions Available on ISA 3.1.
                                                               (line  303)
+ * vec_splatid:                           PowerPC AltiVec Built-in Functions Available on ISA 3.1.
+                                                              (line  292)
  * vec_srdb:                              PowerPC AltiVec Built-in Functions Available on ISA 3.1.
                                                               (line  280)
  * vec_stril:                             PowerPC AltiVec Built-in Functions Available on ISA 3.1.
*************** A.2 Concept and Symbol Index
*** 81025,81030 ****
--- 81026,81039 ----
                                                               (line   73)
  * vec_xst_trunc <7>:                     Basic PowerPC Built-in Functions Available on ISA 3.1.
                                                               (line   75)
+ * vector function attribute, RX:         RX Function Attributes.
+                                                              (line   48)
+ * vector types, using with x86 intrinsics: Vector Extensions.
+                                                              (line  220)
+ * vector_size type attribute:            Common Type Attributes.
+                                                              (line  708)
+ * vector_size variable attribute:        Common Variable Attributes.
+                                                              (line  520)
  * version_id function attribute, IA-64:  IA-64 Function Attributes.
                                                               (line   15)
  * vfprintf:                              Library Builtins.   (line    6)
*************** A.2 Concept and Symbol Index
*** 81077,81082 ****
--- 81086,81098 ----
                                                               (line   48)
  * warm function attribute, NDS32:        NDS32 Function Attributes.
                                                               (line   50)
+ * warn_if_not_aligned type attribute:    Common Type Attributes.
+                                                              (line  749)
+ * warn_if_not_aligned variable attribute: Common Variable Attributes.
+                                                              (line  553)
+ * warn_unused type attribute:            C++ Attributes.     (line  113)
+ * warn_unused_result function attribute: Common Function Attributes.
+                                                              (line 1680)
  * warning for comparison of signed and unsigned values: Warning Options.
                                                               (line 3228)
  * warning for overloaded virtual function: C++ Dialect Options.
*************** A.2 Concept and Symbol Index
*** 81092,81104 ****
  * warnings from system headers:          Warning Options.    (line 2454)
  * warnings vs errors:                    Warnings and Errors.
                                                               (line    6)
- * warn_if_not_aligned type attribute:    Common Type Attributes.
-                                                              (line  749)
- * warn_if_not_aligned variable attribute: Common Variable Attributes.
-                                                              (line  553)
- * warn_unused type attribute:            C++ Attributes.     (line  113)
- * warn_unused_result function attribute: Common Function Attributes.
-                                                              (line 1680)
  * weak function attribute:               Common Function Attributes.
                                                               (line 1697)
  * weak variable attribute:               Common Variable Attributes.
--- 81108,81113 ----
*************** A.2 Concept and Symbol Index
*** 81111,81117 ****
  * X in constraint:                       Simple Constraints. (line  122)
  * X3.159-1989:                           Standards.          (line   13)
  * x86 named address spaces:              Named Address Spaces.
!                                                              (line  194)
  * x86 Options:                           x86 Options.        (line    6)
  * x86 transactional memory extensions:   __atomic Builtins.  (line  106)
  * x86 Windows Options:                   x86 Windows Options.
--- 81120,81126 ----
  * X in constraint:                       Simple Constraints. (line  122)
  * X3.159-1989:                           Standards.          (line   13)
  * x86 named address spaces:              Named Address Spaces.
!                                                              (line  193)
  * x86 Options:                           x86 Options.        (line    6)
  * x86 transactional memory extensions:   __atomic Builtins.  (line  106)
  * x86 Windows Options:                   x86 Windows Options.
*************** A.2 Concept and Symbol Index
*** 81129,81623 ****
  * ynl:                                   Library Builtins.   (line    6)
  * zda variable attribute, V850:          V850 Variable Attributes.
                                                               (line   16)
- * zero-length arrays:                    Zero Length.        (line    6)
- * zero-size structures:                  Empty Structures.   (line    6)
  * zero_call_used_regs function attribute: Common Function Attributes.
                                                               (line 1751)
  * zSeries options:                       zSeries Options.    (line    6)
  
  
  
  Tag Table:
! Node: Top2226
! Node: G++ and GCC4187
! Node: Standards6251
! Node: Invoking GCC21486
! Node: Option Summary26788
! Node: Overall Options91604
! Node: Invoking G++120018
! Node: C Dialect Options121631
! Node: C++ Dialect Options141651
! Node: Objective-C and Objective-C++ Dialect Options216861
! Node: OpenMP and OpenACC Options228735
! Node: Diagnostic Message Formatting Options233319
! Node: Warning Options263448
! Ref: Wtrigraphs389215
! Node: Static Analyzer Options442785
! Node: Debugging Options486922
! Node: Optimize Options508125
! Ref: Type-punning586077
! Node: Instrumentation Options718697
! Node: Preprocessor Options782035
! Ref: dashMF786882
! Ref: fdollars-in-identifiers791544
! Node: Assembler Options804515
! Node: Link Options805206
! Ref: Link Options-Footnote-1822238
! Node: Directory Options822752
! Node: Code Gen Options831499
! Node: Developer Options863088
! Node: Submodel Options909414
! Node: AArch64 Options911143
! Ref: aarch64-feature-modifiers930028
! Node: Adapteva Epiphany Options938391
! Node: AMD GCN Options944343
! Node: ARC Options948384
! Node: ARM Options969274
! Node: AVR Options1015022
! Ref: avr21015925
! Ref: avr251016192
! Ref: avr31016772
! Ref: avr311016899
! Ref: avr351017016
! Ref: avr41017311
! Ref: avr51017783
! Ref: avr511019640
! Ref: avr61019941
! Ref: avrxmega21020145
! Ref: avrxmega31020874
! Ref: avrxmega41022409
! Ref: avrxmega51022882
! Ref: avrxmega61023070
! Ref: avrxmega71023542
! Ref: avrtiny1023732
! Ref: avr11024002
! Ref: eind1034282
! Ref: ramp1039066
! Ref: avr-macros1040573
! Node: Blackfin Options1049764
! Node: C6X Options1057656
! Node: CRIS Options1059199
! Node: C-SKY Options1062386
! Node: Cygwin and MinGW Options1068123
! Node: Darwin Options1072155
! Node: DEC Alpha Options1080317
! Node: eBPF Options1092542
! Node: FR30 Options1096124
! Node: FT32 Options1096684
! Node: FRV Options1097557
! Node: GNU/Linux Options1104321
! Node: H8/300 Options1105702
! Node: HPPA Options1107154
! Node: IA-64 Options1117662
! Node: LM32 Options1125790
! Node: LoongArch Options1126318
! Node: M32C Options1139735
! Node: M32R/D Options1141013
! Node: M680x0 Options1144558
! Node: MCore Options1158713
! Node: MicroBlaze Options1160222
! Node: MIPS Options1163289
! Node: MMIX Options1200718
! Node: MN10300 Options1203195
! Node: Moxie Options1205738
! Node: MSP430 Options1206225
! Node: NDS32 Options1213959
! Node: Nvidia PTX Options1216132
! Node: OpenRISC Options1220238
! Node: PDP-11 Options1222992
! Node: PowerPC Options1224240
! Node: PRU Options1224458
! Node: RISC-V Options1227259
! Node: RL78 Options1251307
! Node: RS/6000 and PowerPC Options1255082
! Node: RX Options1297064
! Node: S/390 and zSeries Options1305666
! Node: SH Options1316479
! Node: Solaris 2 Options1331631
! Node: SPARC Options1332869
! Node: System V Options1348823
! Node: V850 Options1349648
! Node: VAX Options1356336
! Node: Visium Options1357196
! Node: VMS Options1359504
! Node: VxWorks Options1360320
! Node: x86 Options1361741
! Node: x86 Windows Options1443890
! Node: Xstormy16 Options1444097
! Node: Xtensa Options1444391
! Node: zSeries Options1451234
! Node: Spec Files1451430
! Node: Environment Variables1477348
! Node: Precompiled Headers1486781
! Node: C++ Modules1492990
! Node: C++ Module Mapper1499602
! Node: C++ Module Preprocessing1504755
! Node: C++ Compiled Module Interface1506607
! Ref: C++ Compiled Module Interface-Footnote-11509991
! Ref: C++ Compiled Module Interface-Footnote-21510080
! Node: C Implementation1510136
! Node: Translation implementation1511827
! Node: Environment implementation1512418
! Node: Identifiers implementation1512972
! Node: Characters implementation1514058
! Node: Integers implementation1517708
! Node: Floating point implementation1519757
! Node: Arrays and pointers implementation1522857
! Ref: Arrays and pointers implementation-Footnote-11524317
! Node: Hints implementation1524443
! Node: Structures unions enumerations and bit-fields implementation1525938
! Node: Qualifiers implementation1528162
! Node: Declarators implementation1530223
! Node: Statements implementation1530564
! Node: Preprocessing directives implementation1530890
! Node: Library functions implementation1533211
! Node: Architecture implementation1533860
! Node: Locale-specific behavior implementation1535505
! Node: C++ Implementation1535810
! Node: Conditionally-supported behavior1537094
! Node: Exception handling1537711
! Node: C Extensions1538119
! Node: Additional Numeric Types1539815
! Node: __int1281540544
! Node: Long Long1541064
! Node: Complex1542569
! Node: Floating Types1547537
! Node: Half-Precision1551047
! Node: Decimal Float1554529
! Node: Fixed-Point1556398
! Node: Aggregate Types1559644
! Node: Variable Length1560792
! Node: Zero Length1563486
! Node: Empty Structures1569339
! Node: Flexible Array Members in Unions1569767
! Node: Flexible Array Members alone in Structures1570224
! Node: Unnamed Fields1570643
! Node: Cast to Union1572881
! Node: Subscripting1574606
! Node: Initializers1575332
! Node: Compound Literals1575832
! Node: Designated Inits1579406
! Node: Named Address Spaces1583317
! Ref: AVR Named Address Spaces1584004
! Node: Attributes1591638
! Node: Function Attributes1593257
! Node: Common Function Attributes1597629
! Ref: Target Format Checks1622308
! Ref: Solaris Format Checks1622512
! Ref: Darwin Format Checks1622803
! Ref: Common Function Attributes-Footnote-11685879
! Node: AArch64 Function Attributes1686196
! Node: AMD GCN Function Attributes1692852
! Node: ARC Function Attributes1695907
! Node: ARM Function Attributes1698846
! Node: AVR Function Attributes1703987
! Node: Blackfin Function Attributes1709984
! Node: BPF Function Attributes1712483
! Node: C-SKY Function Attributes1713609
! Node: Epiphany Function Attributes1714907
! Node: H8/300 Function Attributes1717664
! Node: IA-64 Function Attributes1718864
! Node: LoongArch Function Attributes1719913
! Node: M32C Function Attributes1722230
! Node: M32R/D Function Attributes1724574
! Node: m68k Function Attributes1726050
! Node: MCORE Function Attributes1726996
! Node: MicroBlaze Function Attributes1727816
! Node: Microsoft Windows Function Attributes1729327
! Node: MIPS Function Attributes1733898
! Node: MSP430 Function Attributes1740300
! Node: NDS32 Function Attributes1744381
! Node: Nvidia PTX Function Attributes1746810
! Node: PowerPC Function Attributes1747425
! Node: RISC-V Function Attributes1754201
! Node: RL78 Function Attributes1757544
! Node: RX Function Attributes1758785
! Node: S/390 Function Attributes1761334
! Node: SH Function Attributes1763164
! Node: Symbian OS Function Attributes1766594
! Node: V850 Function Attributes1766932
! Node: Visium Function Attributes1767479
! Node: x86 Function Attributes1768009
! Node: Xstormy16 Function Attributes1794999
! Node: Variable Attributes1795508
! Node: Common Variable Attributes1797233
! Node: ARC Variable Attributes1823675
! Node: AVR Variable Attributes1824058
! Node: Blackfin Variable Attributes1829601
! Node: H8/300 Variable Attributes1830461
! Node: IA-64 Variable Attributes1831536
! Node: LoongArch Variable Attributes1832292
! Node: M32R/D Variable Attributes1832970
! Node: Microsoft Windows Variable Attributes1833773
! Node: MSP430 Variable Attributes1836231
! Node: Nvidia PTX Variable Attributes1837447
! Node: PowerPC Variable Attributes1838066
! Node: RL78 Variable Attributes1838625
! Node: V850 Variable Attributes1839046
! Node: x86 Variable Attributes1839681
! Node: Xstormy16 Variable Attributes1840739
! Node: Type Attributes1841311
! Node: Common Type Attributes1843161
! Node: ARC Type Attributes1880708
! Node: ARM Type Attributes1881182
! Node: BPF Type Attributes1881966
! Node: PowerPC Type Attributes1882489
! Node: x86 Type Attributes1883480
! Node: Label Attributes1884474
! Node: Enumerator Attributes1886501
! Node: Statement Attributes1888033
! Node: Attribute Syntax1893739
! Node: Pragmas1906252
! Node: AArch64 Pragmas1907371
! Node: ARM Pragmas1907826
! Node: LoongArch Pragmas1908456
! Node: M32C Pragmas1908791
! Node: PRU Pragmas1909867
! Node: RS/6000 and PowerPC Pragmas1910444
! Node: S/390 Pragmas1911182
! Node: Darwin Pragmas1911746
! Node: Solaris Pragmas1912796
! Node: Symbol-Renaming Pragmas1913958
! Node: Structure-Layout Pragmas1915593
! Node: Weak Pragmas1918331
! Node: Diagnostic Pragmas1919064
! Node: Visibility Pragmas1923814
! Node: Push/Pop Macro Pragmas1924497
! Node: Function Specific Option Pragmas1925468
! Node: Loop-Specific Pragmas1927423
! Node: Thread-Local1929522
! Node: C99 Thread-Local Edits1931609
! Node: C++98 Thread-Local Edits1933605
! Node: OpenMP1937048
! Node: OpenACC1938207
! Node: Inline1938985
! Node: Volatiles1943798
! Node: Using Assembly Language with C1946697
! Node: Basic Asm1948025
! Node: Extended Asm1953604
! Ref: Volatile1958135
! Ref: AssemblerTemplate1962248
! Ref: OutputOperands1966633
! Ref: FlagOutputOperands1973953
! Ref: InputOperands1977059
! Ref: Clobbers and Scratch Registers1981684
! Ref: GotoLabels1991174
! Ref: GenericOperandmodifiers1994797
! Ref: aarch64Operandmodifiers1995974
! Ref: x86Operandmodifiers1997039
! Ref: x86floatingpointasmoperands2000198
! Ref: msp430Operandmodifiers2003529
! Ref: loongarchOperandmodifiers2005186
! Ref: riscvOperandmodifiers2006974
! Ref: shOperandmodifiers2007441
! Node: Constraints2008986
! Node: Simple Constraints2010096
! Node: Multi-Alternative2017937
! Node: Modifiers2019612
! Node: Machine Constraints2023371
! Node: Asm constexprs2076312
! Node: Asm Labels2077400
! Node: Explicit Register Variables2079019
! Ref: Explicit Reg Vars2079233
! Node: Global Register Variables2079842
! Ref: Global Reg Vars2080050
! Node: Local Register Variables2084832
! Ref: Local Reg Vars2085052
! Node: Size of an asm2088680
! Node: Syntax Extensions2090158
! Node: Statement Exprs2092170
! Node: Local Labels2097553
! Node: Labels as Values2100537
! Ref: Labels as Values-Footnote-12103186
! Node: Nested Functions2103371
! Node: Typeof2107328
! Node: Offsetof2111598
! Node: Alignment2112423
! Node: Enum Extensions2114085
! Ref: Incomplete Enums2114283
! Node: Boolean Type2116074
! Node: Variadic Macros2116747
! Node: Conditionals2119129
! Node: Case Ranges2120043
! Node: Mixed Labels and Declarations2120747
! Node: C++ Comments2121386
! Node: Escaped Newlines2121930
! Node: Hex Floats2122797
! Node: Binary constants2123890
! Node: Dollar Signs2124591
! Node: Character Escapes2125071
! Node: Raw String Literals2125376
! Node: Alternate Keywords2125994
! Node: Function Names2127539
! Node: Semantic Extensions2129433
! Node: Function Prototypes2130075
! Node: Pointer Arith2131842
! Node: Variadic Pointer Args2132437
! Node: Pointers to Arrays2133173
! Node: Const and Volatile Functions2133953
! Node: Built-in Functions2135164
! Node: Library Builtins2137773
! Node: Numeric Builtins2145038
! Node: Floating-Point Format Builtins2146126
! Node: Bit Operation Builtins2153485
! Node: Byte-Swapping Builtins2165759
! Node: CRC Builtins2166679
! Node: Integer Overflow Builtins2171627
! Node: Stack Allocation2180504
! Node: Nonlocal Gotos2185397
! Node: Constructing Calls2187669
! Node: Return Address2192867
! Node: Stack Scrubbing2198718
! Node: Vector Extensions2201012
! Node: Atomic Memory Access2212353
! Node: __atomic Builtins2213111
! Ref: x86 specific memory model extensions for transactional memory2218354
! Node: __sync Builtins2227568
! Node: Object Size Checking2234490
! Node: New/Delete Builtins2241977
! Node: Other Builtins2243795
! Node: Target Builtins2276535
! Node: AArch64 Built-in Functions2278357
! Node: Alpha Built-in Functions2279053
! Node: ARC Built-in Functions2282136
! Node: ARC SIMD Built-in Functions2287693
! Node: ARM iWMMXt Built-in Functions2298035
! Node: ARM C Language Extensions (ACLE)2305171
! Node: ARM Floating Point Status and Control Intrinsics2306448
! Node: ARM ARMv8-M Security Extensions2306935
! Node: AVR Built-in Functions2308227
! Node: Blackfin Built-in Functions2313805
! Node: BPF Built-in Functions2314425
! Node: FR-V Built-in Functions2320837
! Node: Argument Types2321706
! Node: Directly-mapped Integer Functions2323537
! Node: Directly-mapped Media Functions2324697
! Node: Raw read/write Functions2332979
! Node: Other Built-in Functions2333887
! Node: LoongArch Base Built-in Functions2335073
! Node: LoongArch SX Vector Intrinsics2341821
! Node: LoongArch ASX Vector Intrinsics2380627
! Node: MIPS DSP Built-in Functions2421843
! Node: MIPS Paired-Single Support2434606
! Node: MIPS Loongson Built-in Functions2436105
! Node: Paired-Single Arithmetic2442627
! Node: Paired-Single Built-in Functions2443650
! Node: MIPS-3D Built-in Functions2446317
! Node: MIPS SIMD Architecture (MSA) Support2451711
! Node: MIPS SIMD Architecture Built-in Functions2454551
! Node: Other MIPS Built-in Functions2481405
! Node: MSP430 Built-in Functions2482414
! Node: NDS32 Built-in Functions2483815
! Node: Nvidia PTX Built-in Functions2485110
! Node: Basic PowerPC Built-in Functions2485704
! Node: Basic PowerPC Built-in Functions Available on all Configurations2486564
! Node: Basic PowerPC Built-in Functions Available on ISA 2.052495561
! Node: Basic PowerPC Built-in Functions Available on ISA 2.062502776
! Node: Basic PowerPC Built-in Functions Available on ISA 2.072504856
! Node: Basic PowerPC Built-in Functions Available on ISA 3.02505691
! Node: Basic PowerPC Built-in Functions Available on ISA 3.12512969
! Node: PowerPC AltiVec/VSX Built-in Functions2516886
! Node: PowerPC AltiVec Built-in Functions on ISA 2.052524955
! Node: PowerPC AltiVec Built-in Functions Available on ISA 2.062550355
! Node: PowerPC AltiVec Built-in Functions Available on ISA 2.072558024
! Node: PowerPC AltiVec Built-in Functions Available on ISA 3.02568158
! Node: PowerPC AltiVec Built-in Functions Available on ISA 3.12584888
! Node: PowerPC Hardware Transactional Memory Built-in Functions2620631
! Node: PowerPC Atomic Memory Operation Functions2629181
! Node: PowerPC Matrix-Multiply Assist Built-in Functions2631744
! Node: PRU Built-in Functions2637869
! Node: RISC-V Built-in Functions2639149
! Node: RISC-V Vector Intrinsics2639819
! Node: CORE-V Built-in Functions2640318
! Node: RX Built-in Functions2679121
! Node: S/390 System z Built-in Functions2683123
! Node: SH Built-in Functions2688392
! Node: SPARC VIS Built-in Functions2690120
! Node: TI C6X Built-in Functions2698651
! Node: x86 Built-in Functions2699698
! Node: x86 transactional memory intrinsics2766280
! Node: x86 control-flow protection intrinsics2769606
! Node: C++ Extensions2771377
! Node: C++ Volatiles2772947
! Node: Restricted Pointers2775295
! Node: Vague Linkage2776886
! Node: C++ Interface2780509
! Ref: C++ Interface-Footnote-12784306
! Node: Template Instantiation2784444
! Node: Bound member functions2790532
! Node: C++ Attributes2792064
! Node: Function Multiversioning2798504
! Node: Type Traits2800312
! Node: Deprecated Features2808915
! Node: Backwards Compatibility2810236
! Node: Objective-C2811308
! Node: GNU Objective-C runtime API2811915
! Node: Modern GNU Objective-C runtime API2812922
! Node: Traditional GNU Objective-C runtime API2815358
! Node: Executing code before main2816085
! Node: What you can and what you cannot do in +load2818829
! Node: Type encoding2821199
! Node: Legacy type encoding2826565
! Node: @encode2827655
! Node: Method signatures2828200
! Node: Garbage Collection2830192
! Node: Constant string objects2832882
! Node: compatibility_alias2835391
! Node: Exceptions2836116
! Node: Synchronization2838826
! Node: Fast enumeration2840010
! Node: Using fast enumeration2840322
! Node: c99-like fast enumeration syntax2841533
! Node: Fast enumeration details2842236
! Node: Fast enumeration protocol2844576
! Node: Messaging with the GNU Objective-C runtime2847728
! Node: Dynamically registering methods2849100
! Node: Forwarding hook2850791
! Node: Compatibility2853831
! Node: Gcov2860389
! Node: Gcov Intro2861057
! Node: Invoking Gcov2863775
! Ref: gcov prime paths example2894625
! Node: Gcov and Optimization2902541
! Node: Gcov Data Files2906294
! Node: Cross-profiling2907703
! Node: Freestanding Environments2909591
! Node: Gcov-tool2924454
! Node: Gcov-tool Intro2924879
! Node: Invoking Gcov-tool2927233
! Node: Gcov-dump2930646
! Node: Gcov-dump Intro2930969
! Node: Invoking Gcov-dump2931236
! Node: lto-dump2931969
! Node: lto-dump Intro2932268
! Node: Invoking lto-dump2932518
! Node: Trouble2933614
! Node: Actual Bugs2935031
! Node: Interoperation2935478
! Node: Incompatibilities2942369
! Node: Fixed Headers2950521
! Node: Standard Libraries2952179
! Node: Disappointments2953551
! Node: C++ Misunderstandings2957910
! Node: Static Definitions2958721
! Node: Name lookup2959774
! Ref: Name lookup-Footnote-12964555
! Node: Temporaries2964744
! Node: Copy Assignment2966720
! Node: Non-bugs2968555
! Node: Warnings and Errors2979061
! Node: Bugs2980823
! Node: Bug Criteria2981290
! Node: Bug Reporting2983221
! Node: Service2983439
! Node: Contributing2984260
! Node: Funding2985006
! Node: GNU Project2987496
! Node: Copying2988144
! Node: GNU Free Documentation License3025658
! Node: Contributors3050781
! Node: Indices3092203
! Node: Option Index3092449
! Node: Concept and Symbol Index3418230
  
  End Tag Table
--- 81138,81637 ----
  * ynl:                                   Library Builtins.   (line    6)
  * zda variable attribute, V850:          V850 Variable Attributes.
                                                               (line   16)
  * zero_call_used_regs function attribute: Common Function Attributes.
                                                               (line 1751)
+ * zero-length arrays:                    Zero Length.        (line    6)
+ * zero-size structures:                  Empty Structures.   (line    6)
  * zSeries options:                       zSeries Options.    (line    6)
  
  
  
  Tag Table:
! Node: Top2240
! Node: G++ and GCC4233
! Node: Standards6309
! Node: Invoking GCC21986
! Node: Option Summary27392
! Node: Overall Options92208
! Node: Invoking G++121940
! Node: C Dialect Options123661
! Node: C++ Dialect Options144653
! Node: Objective-C and Objective-C++ Dialect Options221815
! Node: OpenMP and OpenACC Options233997
! Node: Diagnostic Message Formatting Options238885
! Node: Warning Options269902
! Ref: Wtrigraphs399924
! Node: Static Analyzer Options455274
! Node: Debugging Options501129
! Node: Optimize Options522916
! Ref: Type-punning603690
! Node: Instrumentation Options739886
! Node: Preprocessor Options805244
! Ref: dashMF810271
! Ref: fdollars-in-identifiers815201
! Node: Assembler Options828600
! Node: Link Options829303
! Ref: Link Options-Footnote-1847043
! Node: Directory Options847581
! Node: Code Gen Options856808
! Node: Developer Options889179
! Node: Submodel Options937183
! Node: AArch64 Options938916
! Ref: aarch64-feature-modifiers959078
! Node: Adapteva Epiphany Options967853
! Node: AMD GCN Options973999
! Node: ARC Options978192
! Node: ARM Options1000282
! Node: AVR Options1048434
! Ref: avr21049371
! Ref: avr251049690
! Ref: avr31050398
! Ref: avr311050538
! Ref: avr351050667
! Ref: avr41051010
! Ref: avr51051590
! Ref: avr511053883
! Ref: avr61054236
! Ref: avrxmega21054460
! Ref: avrxmega31055341
! Ref: avrxmega41057454
! Ref: avrxmega51058011
! Ref: avrxmega61058211
! Ref: avrxmega71058763
! Ref: avrtiny1058969
! Ref: avr11059275
! Ref: eind1070049
! Ref: ramp1074999
! Ref: avr-macros1076592
! Node: Blackfin Options1086499
! Node: C6X Options1094767
! Node: CRIS Options1096410
! Node: C-SKY Options1099757
! Node: Cygwin and MinGW Options1106058
! Node: Darwin Options1110242
! Node: DEC Alpha Options1118984
! Node: eBPF Options1131665
! Node: FR30 Options1135425
! Node: FT32 Options1135997
! Node: FRV Options1136894
! Node: GNU/Linux Options1144002
! Node: H8/300 Options1145487
! Node: HPPA Options1147015
! Node: IA-64 Options1157975
! Node: LM32 Options1166435
! Node: LoongArch Options1166987
! Node: M32C Options1181116
! Node: M32R/D Options1182422
! Node: M680x0 Options1186127
! Node: MCore Options1201342
! Node: MicroBlaze Options1202943
! Node: MIPS Options1206174
! Node: MMIX Options1245741
! Node: MN10300 Options1248330
! Node: Moxie Options1250989
! Node: MSP430 Options1251500
! Node: NDS32 Options1259542
! Node: Nvidia PTX Options1261815
! Node: OpenRISC Options1266185
! Node: PDP-11 Options1269091
! Node: PowerPC Options1270411
! Node: PRU Options1270629
! Node: RISC-V Options1273506
! Node: RL78 Options1298312
! Node: RS/6000 and PowerPC Options1302259
! Node: RX Options1346417
! Node: S/390 and zSeries Options1355375
! Node: SH Options1366716
! Node: Solaris 2 Options1382460
! Node: SPARC Options1383750
! Node: System V Options1400518
! Node: V850 Options1401383
! Node: VAX Options1408419
! Node: Visium Options1409319
! Node: VMS Options1411707
! Node: VxWorks Options1412571
! Node: x86 Options1414040
! Node: x86 Windows Options1499329
! Node: Xstormy16 Options1499536
! Node: Xtensa Options1499834
! Node: zSeries Options1506937
! Node: Spec Files1507133
! Node: Environment Variables1534343
! Node: Precompiled Headers1544164
! Node: C++ Modules1550497
! Node: C++ Module Mapper1557193
! Node: C++ Module Preprocessing1562446
! Node: C++ Compiled Module Interface1564334
! Ref: C++ Compiled Module Interface-Footnote-11567762
! Ref: C++ Compiled Module Interface-Footnote-21567851
! Node: C Implementation1567907
! Node: Translation implementation1569598
! Node: Environment implementation1570201
! Node: Identifiers implementation1570761
! Node: Characters implementation1571865
! Node: Integers implementation1575649
! Node: Floating point implementation1577750
! Node: Arrays and pointers implementation1580982
! Ref: Arrays and pointers implementation-Footnote-11582454
! Node: Hints implementation1582584
! Node: Structures unions enumerations and bit-fields implementation1584137
! Node: Qualifiers implementation1586485
! Node: Declarators implementation1588568
! Node: Statements implementation1588915
! Node: Preprocessing directives implementation1589255
! Node: Library functions implementation1591686
! Node: Architecture implementation1592361
! Node: Locale-specific behavior implementation1594062
! Node: C++ Implementation1594367
! Node: Conditionally-supported behavior1595651
! Node: Exception handling1596278
! Node: C Extensions1596692
! Node: Additional Numeric Types1598396
! Node: __int1281599133
! Node: Long Long1599673
! Node: Complex1601222
! Node: Floating Types1606426
! Node: Half-Precision1610154
! Node: Decimal Float1613760
! Node: Fixed-Point1615729
! Node: Aggregate Types1619501
! Node: Variable Length1620649
! Node: Zero Length1623379
! Node: Empty Structures1629328
! Node: Flexible Array Members in Unions1629760
! Node: Flexible Array Members alone in Structures1630217
! Node: Unnamed Fields1630636
! Node: Cast to Union1632950
! Node: Subscripting1634705
! Node: Initializers1635435
! Node: Compound Literals1635935
! Node: Designated Inits1639557
! Node: Named Address Spaces1643536
! Ref: AVR Named Address Spaces1644231
! Node: Attributes1652151
! Node: Function Attributes1653790
! Node: Common Function Attributes1658214
! Ref: Target Format Checks1683605
! Ref: Solaris Format Checks1683829
! Ref: Darwin Format Checks1684144
! Ref: Common Function Attributes-Footnote-11749054
! Node: AArch64 Function Attributes1749371
! Node: AMD GCN Function Attributes1756303
! Node: ARC Function Attributes1759510
! Node: ARM Function Attributes1762553
! Node: AVR Function Attributes1767858
! Node: Blackfin Function Attributes1774091
! Node: BPF Function Attributes1776682
! Node: C-SKY Function Attributes1777828
! Node: Epiphany Function Attributes1779154
! Node: H8/300 Function Attributes1781983
! Node: IA-64 Function Attributes1783195
! Node: LoongArch Function Attributes1784260
! Node: M32C Function Attributes1786661
! Node: M32R/D Function Attributes1789045
! Node: m68k Function Attributes1790569
! Node: MCORE Function Attributes1791531
! Node: MicroBlaze Function Attributes1792367
! Node: Microsoft Windows Function Attributes1793922
! Node: MIPS Function Attributes1798609
! Node: MSP430 Function Attributes1805207
! Node: NDS32 Function Attributes1809428
! Node: Nvidia PTX Function Attributes1811917
! Node: PowerPC Function Attributes1812540
! Node: RISC-V Function Attributes1819560
! Node: RL78 Function Attributes1823003
! Node: RX Function Attributes1824288
! Node: S/390 Function Attributes1826893
! Node: SH Function Attributes1828843
! Node: Symbian OS Function Attributes1832333
! Node: V850 Function Attributes1832679
! Node: Visium Function Attributes1833234
! Node: x86 Function Attributes1833768
! Node: Xstormy16 Function Attributes1862050
! Node: Variable Attributes1862563
! Node: Common Variable Attributes1864300
! Node: ARC Variable Attributes1891546
! Node: AVR Variable Attributes1891937
! Node: Blackfin Variable Attributes1897692
! Node: H8/300 Variable Attributes1898600
! Node: IA-64 Variable Attributes1899683
! Node: LoongArch Variable Attributes1900451
! Node: M32R/D Variable Attributes1901149
! Node: Microsoft Windows Variable Attributes1901976
! Node: MSP430 Variable Attributes1904494
! Node: Nvidia PTX Variable Attributes1905746
! Node: PowerPC Variable Attributes1906373
! Node: RL78 Variable Attributes1906948
! Node: V850 Variable Attributes1907373
! Node: x86 Variable Attributes1908020
! Node: Xstormy16 Variable Attributes1909114
! Node: Type Attributes1909710
! Node: Common Type Attributes1911592
! Node: ARC Type Attributes1950169
! Node: ARM Type Attributes1950659
! Node: BPF Type Attributes1951471
! Node: PowerPC Type Attributes1952006
! Node: x86 Type Attributes1953045
! Node: Label Attributes1954075
! Node: Enumerator Attributes1956158
! Node: Statement Attributes1957718
! Node: Attribute Syntax1963508
! Node: Pragmas1976285
! Node: AArch64 Pragmas1977412
! Node: ARM Pragmas1977875
! Node: LoongArch Pragmas1978541
! Node: M32C Pragmas1978876
! Node: PRU Pragmas1979972
! Node: RS/6000 and PowerPC Pragmas1980553
! Node: S/390 Pragmas1981323
! Node: Darwin Pragmas1981899
! Node: Solaris Pragmas1982981
! Node: Symbol-Renaming Pragmas1984179
! Node: Structure-Layout Pragmas1985842
! Node: Weak Pragmas1988680
! Node: Diagnostic Pragmas1989425
! Node: Visibility Pragmas1994283
! Node: Push/Pop Macro Pragmas1994978
! Node: Function Specific Option Pragmas1995973
! Node: Loop-Specific Pragmas1997992
! Node: Thread-Local2000123
! Node: C99 Thread-Local Edits2002258
! Node: C++98 Thread-Local Edits2004330
! Node: OpenMP2007869
! Node: OpenACC2009052
! Node: Inline2009842
! Node: Volatiles2014795
! Node: Using Assembly Language with C2017694
! Node: Basic Asm2019058
! Node: Extended Asm2024845
! Ref: Volatile2029524
! Ref: AssemblerTemplate2033729
! Ref: OutputOperands2038206
! Ref: FlagOutputOperands2045734
! Ref: InputOperands2049056
! Ref: Clobbers and Scratch Registers2053773
! Ref: GotoLabels2063487
! Ref: GenericOperandmodifiers2067246
! Ref: aarch64Operandmodifiers2068475
! Ref: x86Operandmodifiers2069604
! Ref: x86floatingpointasmoperands2073059
! Ref: msp430Operandmodifiers2076482
! Ref: loongarchOperandmodifiers2078271
! Ref: riscvOperandmodifiers2080123
! Ref: shOperandmodifiers2080610
! Node: Constraints2082351
! Node: Simple Constraints2083481
! Node: Multi-Alternative2091594
! Node: Modifiers2093293
! Node: Machine Constraints2097176
! Node: Asm constexprs2154245
! Node: Asm Labels2155353
! Node: Explicit Register Variables2157004
! Ref: Explicit Reg Vars2157218
! Node: Global Register Variables2157827
! Ref: Global Reg Vars2158035
! Node: Local Register Variables2162889
! Ref: Local Reg Vars2163109
! Node: Size of an asm2166799
! Node: Syntax Extensions2168301
! Node: Statement Exprs2170345
! Node: Local Labels2175880
! Node: Labels as Values2178880
! Ref: Labels as Values-Footnote-12181569
! Node: Nested Functions2181754
! Node: Typeof2185783
! Node: Offsetof2190203
! Node: Alignment2191040
! Node: Enum Extensions2192758
! Ref: Incomplete Enums2192960
! Node: Boolean Type2194783
! Node: Variadic Macros2195496
! Node: Conditionals2197898
! Node: Case Ranges2198820
! Node: Mixed Labels and Declarations2199536
! Node: C++ Comments2200175
! Node: Escaped Newlines2200735
! Node: Hex Floats2201602
! Node: Binary constants2202751
! Node: Dollar Signs2203480
! Node: Character Escapes2203960
! Node: Raw String Literals2204269
! Node: Alternate Keywords2204895
! Node: Function Names2206512
! Node: Semantic Extensions2208450
! Node: Function Prototypes2209096
! Node: Pointer Arith2210895
! Node: Variadic Pointer Args2211514
! Node: Pointers to Arrays2212266
! Node: Const and Volatile Functions2213058
! Node: Built-in Functions2214305
! Node: Library Builtins2216918
! Node: Numeric Builtins2225951
! Node: Floating-Point Format Builtins2227039
! Node: Bit Operation Builtins2234694
! Node: Byte-Swapping Builtins2247226
! Node: CRC Builtins2248166
! Node: Integer Overflow Builtins2253186
! Node: Stack Allocation2262095
! Node: Nonlocal Gotos2267072
! Node: Constructing Calls2269404
! Node: Return Address2274630
! Node: Stack Scrubbing2280561
! Node: Vector Extensions2282879
! Node: Atomic Memory Access2294508
! Node: __atomic Builtins2295274
! Ref: x86 specific memory model extensions for transactional memory2300609
! Node: __sync Builtins2310063
! Node: Object Size Checking2317117
! Node: New/Delete Builtins2324758
! Node: Other Builtins2326608
! Node: Target Builtins2359828
! Node: AArch64 Built-in Functions2361650
! Node: Alpha Built-in Functions2362346
! Node: ARC Built-in Functions2365473
! Node: ARC SIMD Built-in Functions2371090
! Node: ARM iWMMXt Built-in Functions2381596
! Node: ARM C Language Extensions (ACLE)2388736
! Node: ARM Floating Point Status and Control Intrinsics2390017
! Node: ARM ARMv8-M Security Extensions2390504
! Node: AVR Built-in Functions2391804
! Node: Blackfin Built-in Functions2397494
! Node: BPF Built-in Functions2398122
! Node: FR-V Built-in Functions2404650
! Node: Argument Types2405531
! Node: Directly-mapped Integer Functions2407466
! Node: Directly-mapped Media Functions2408746
! Node: Raw read/write Functions2418084
! Node: Other Built-in Functions2419028
! Node: LoongArch Base Built-in Functions2420246
! Node: LoongArch SX Vector Intrinsics2427046
! Node: LoongArch ASX Vector Intrinsics2465986
! Node: MIPS DSP Built-in Functions2507336
! Node: MIPS Paired-Single Support2520303
! Node: MIPS Loongson Built-in Functions2521826
! Node: Paired-Single Arithmetic2528388
! Node: Paired-Single Built-in Functions2529515
! Node: MIPS-3D Built-in Functions2532378
! Node: MIPS SIMD Architecture (MSA) Support2538152
! Node: MIPS SIMD Architecture Built-in Functions2541156
! Node: Other MIPS Built-in Functions2568010
! Node: MSP430 Built-in Functions2569043
! Node: NDS32 Built-in Functions2570456
! Node: Nvidia PTX Built-in Functions2571751
! Node: Basic PowerPC Built-in Functions2572345
! Node: Basic PowerPC Built-in Functions Available on all Configurations2573205
! Node: Basic PowerPC Built-in Functions Available on ISA 2.052582578
! Node: Basic PowerPC Built-in Functions Available on ISA 2.062589985
! Node: Basic PowerPC Built-in Functions Available on ISA 2.072592101
! Node: Basic PowerPC Built-in Functions Available on ISA 3.02592964
! Node: Basic PowerPC Built-in Functions Available on ISA 3.12600502
! Node: PowerPC AltiVec/VSX Built-in Functions2604483
! Node: PowerPC AltiVec Built-in Functions on ISA 2.052613432
! Node: PowerPC AltiVec Built-in Functions Available on ISA 2.062638836
! Node: PowerPC AltiVec Built-in Functions Available on ISA 2.072646561
! Node: PowerPC AltiVec Built-in Functions Available on ISA 3.02656695
! Node: PowerPC AltiVec Built-in Functions Available on ISA 3.12673725
! Node: PowerPC Hardware Transactional Memory Built-in Functions2709908
! Node: PowerPC Atomic Memory Operation Functions2718510
! Node: PowerPC Matrix-Multiply Assist Built-in Functions2721077
! Node: PRU Built-in Functions2727206
! Node: RISC-V Built-in Functions2728486
! Node: RISC-V Vector Intrinsics2729164
! Node: CORE-V Built-in Functions2729667
! Node: RX Built-in Functions2769546
! Node: S/390 System z Built-in Functions2773640
! Node: SH Built-in Functions2779001
! Node: SPARC VIS Built-in Functions2780765
! Node: TI C6X Built-in Functions2789316
! Node: x86 Built-in Functions2790367
! Node: x86 transactional memory intrinsics2857697
! Node: x86 control-flow protection intrinsics2861051
! Node: C++ Extensions2862838
! Node: C++ Volatiles2864424
! Node: Restricted Pointers2866772
! Node: Vague Linkage2868415
! Node: C++ Interface2872066
! Ref: C++ Interface-Footnote-12875955
! Node: Template Instantiation2876109
! Node: Bound member functions2882229
! Node: C++ Attributes2883773
! Node: Function Multiversioning2890349
! Node: Type Traits2892157
! Node: Deprecated Features2901144
! Node: Backwards Compatibility2902473
! Node: Objective-C2903557
! Node: GNU Objective-C runtime API2904164
! Node: Modern GNU Objective-C runtime API2905171
! Node: Traditional GNU Objective-C runtime API2907683
! Node: Executing code before main2908422
! Node: What you can and what you cannot do in +load2911258
! Node: Type encoding2913742
! Node: Legacy type encoding2919504
! Node: @encode2920608
! Node: Method signatures2921189
! Node: Garbage Collection2923247
! Node: Constant string objects2925973
! Node: compatibility_alias2928538
! Node: Exceptions2929299
! Node: Synchronization2932097
! Node: Fast enumeration2933317
! Node: Using fast enumeration2933629
! Node: c99-like fast enumeration syntax2934868
! Node: Fast enumeration details2935575
! Node: Fast enumeration protocol2938001
! Node: Messaging with the GNU Objective-C runtime2941245
! Node: Dynamically registering methods2942637
! Node: Forwarding hook2944384
! Node: Compatibility2947496
! Node: Gcov2954136
! Node: Gcov Intro2954812
! Node: Invoking Gcov2957604
! Ref: gcov prime paths example2989078
! Node: Gcov and Optimization2997138
! Node: Gcov Data Files3000971
! Node: Cross-profiling3002440
! Node: Freestanding Environments3004376
! Node: Gcov-tool3019507
! Node: Gcov-tool Intro3019940
! Node: Invoking Gcov-tool3022322
! Node: Gcov-dump3025919
! Node: Gcov-dump Intro3026246
! Node: Invoking Gcov-dump3026521
! Node: lto-dump3027318
! Node: lto-dump Intro3027621
! Node: Invoking lto-dump3027879
! Node: Trouble3029047
! Node: Actual Bugs3030464
! Node: Interoperation3030921
! Node: Incompatibilities3037970
! Node: Fixed Headers3046388
! Node: Standard Libraries3048062
! Node: Disappointments3049466
! Node: C++ Misunderstandings3053871
! Node: Static Definitions3054682
! Node: Name lookup3055767
! Ref: Name lookup-Footnote-13060676
! Node: Temporaries3060865
! Node: Copy Assignment3062893
! Node: Non-bugs3064760
! Node: Warnings and Errors3075452
! Node: Bugs3077242
! Node: Bug Criteria3077709
! Node: Bug Reporting3079660
! Node: Service3079878
! Node: Contributing3080703
! Node: Funding3081449
! Node: GNU Project3083938
! Node: Copying3084586
! Node: GNU Free Documentation License3122115
! Node: Contributors3147241
! Node: Indices3190031
! Node: Option Index3190277
! Node: Concept and Symbol Index3516074
  
  End Tag Table
+ 
+ 
+ Local Variables:
+ coding: utf-8
+ End:
diff -Nrcpad gcc-15.2.0/gcc/doc/gccgo.1 gcc-15.3.0/gcc/doc/gccgo.1
*** gcc-15.2.0/gcc/doc/gccgo.1	Fri Aug  8 07:17:58 2025
--- gcc-15.3.0/gcc/doc/gccgo.1	Fri Jun 12 06:36:45 2026
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
--- 1,5 ----
! .\" -*- mode: troff; coding: utf-8 -*-
! .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
***************
*** 15,43 ****
  .ft R
  .fi
  ..
! .\" Set up some character translations and predefined strings.  \*(-- will
! .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
! .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
! .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
! .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
! .\" nothing in troff, for use with C<>.
! .tr \(*W-
! .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
  .ie n \{\
- .    ds -- \(*W-
- .    ds PI pi
- .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
- .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
- .    ds L" ""
- .    ds R" ""
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
- .    ds -- \|\(em\|
- .    ds PI \(*p
- .    ds L" ``
- .    ds R" ''
  .    ds C`
  .    ds C'
  'br\}
--- 16,27 ----
  .ft R
  .fi
  ..
! .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
  .ie n \{\
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
  .    ds C`
  .    ds C'
  'br\}
***************
*** 54,142 ****
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .if !\nF .nr F 0
! .if \nF>0 \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    if !\nF==2 \{\
! .        nr % 0
! .        nr F 2
  .    \}
  .\}
  .\"
! .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
! .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
! .    \" fudge factors for nroff and troff
! .if n \{\
! .    ds #H 0
! .    ds #V .8m
! .    ds #F .3m
! .    ds #[ \f1
! .    ds #] \fP
! .\}
! .if t \{\
! .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
! .    ds #V .6m
! .    ds #F 0
! .    ds #[ \&
! .    ds #] \&
! .\}
! .    \" simple accents for nroff and troff
! .if n \{\
! .    ds ' \&
! .    ds ` \&
! .    ds ^ \&
! .    ds , \&
! .    ds ~ ~
! .    ds /
! .\}
! .if t \{\
! .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
! .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
! .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
! .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
! .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
! .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
! .\}
! .    \" troff and (daisy-wheel) nroff accents
! .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
! .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
! .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
! .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
! .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
! .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
! .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
! .ds ae a\h'-(\w'a'u*4/10)'e
! .ds Ae A\h'-(\w'A'u*4/10)'E
! .    \" corrections for vroff
! .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
! .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
! .    \" for low resolution devices (crt and lpr)
! .if \n(.H>23 .if \n(.V>19 \
! \{\
! .    ds : e
! .    ds 8 ss
! .    ds o a
! .    ds d- d\h'-1'\(ga
! .    ds D- D\h'-1'\(hy
! .    ds th \o'bp'
! .    ds Th \o'LP'
! .    ds ae ae
! .    ds Ae AE
! .\}
! .rm #[ #] #H #V #F C
  .\" ========================================================================
  .\"
  .IX Title "GCCGO 1"
! .TH GCCGO 1 "2025-08-08" "gcc-15.2.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH "NAME"
  gccgo \- A GCC\-based compiler for the Go language
! .SH "SYNOPSIS"
  .IX Header "SYNOPSIS"
  gccgo [\fB\-c\fR|\fB\-S\fR]
        [\fB\-g\fR] [\fB\-pg\fR] [\fB\-O\fR\fIlevel\fR]
--- 38,71 ----
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .nr rF 0
! .if \n(.g .if rF .nr rF 1
! .if (\n(rF:(\n(.g==0)) \{\
! .    if \nF \{\
! .        de IX
! .        tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .        if !\nF==2 \{\
! .            nr % 0
! .            nr F 2
! .        \}
  .    \}
  .\}
+ .rr rF
  .\"
! .\" Required to disable full justification in groff 1.23.0.
! .if n .ds AD l
  .\" ========================================================================
  .\"
  .IX Title "GCCGO 1"
! .TH GCCGO 1 2026-06-12 gcc-15.3.0 GNU
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH NAME
  gccgo \- A GCC\-based compiler for the Go language
! .SH SYNOPSIS
  .IX Header "SYNOPSIS"
  gccgo [\fB\-c\fR|\fB\-S\fR]
        [\fB\-g\fR] [\fB\-pg\fR] [\fB\-O\fR\fIlevel\fR]
*************** gccgo [\fB\-c\fR|\fB\-S\fR]
*** 145,151 ****
  .PP
  Only the most useful options are listed here; see below for the
  remainder.
! .SH "DESCRIPTION"
  .IX Header "DESCRIPTION"
  The \fBgccgo\fR command is a frontend to \fBgcc\fR and
  supports many of the same options.    This manual
--- 74,80 ----
  .PP
  Only the most useful options are listed here; see below for the
  remainder.
! .SH DESCRIPTION
  .IX Header "DESCRIPTION"
  The \fBgccgo\fR command is a frontend to \fBgcc\fR and
  supports many of the same options.    This manual
*************** the link command.
*** 170,186 ****
  Go programs must generally be compiled with debugging information, and
  \&\fB\-g1\fR is the default as described below.  Stripping a Go
  program will generally cause it to misbehave or fail.
! .SH "OPTIONS"
  .IX Header "OPTIONS"
! .IP "\fB\-I\fR\fIdir\fR" 4
  .IX Item "-Idir"
  Specify a directory to use when searching for an import package at
  compile time.
! .IP "\fB\-L\fR\fIdir\fR" 4
  .IX Item "-Ldir"
  When linking, specify a library search directory, as with
  \&\fBgcc\fR.
! .IP "\fB\-fgo\-pkgpath=\fR\fIstring\fR" 4
  .IX Item "-fgo-pkgpath=string"
  Set the package path to use.  This sets the value returned by the
  PkgPath method of reflect.Type objects.  It is also used for the names
--- 99,115 ----
  Go programs must generally be compiled with debugging information, and
  \&\fB\-g1\fR is the default as described below.  Stripping a Go
  program will generally cause it to misbehave or fail.
! .SH OPTIONS
  .IX Header "OPTIONS"
! .IP \fB\-I\fR\fIdir\fR 4
  .IX Item "-Idir"
  Specify a directory to use when searching for an import package at
  compile time.
! .IP \fB\-L\fR\fIdir\fR 4
  .IX Item "-Ldir"
  When linking, specify a library search directory, as with
  \&\fBgcc\fR.
! .IP \fB\-fgo\-pkgpath=\fR\fIstring\fR 4
  .IX Item "-fgo-pkgpath=string"
  Set the package path to use.  This sets the value returned by the
  PkgPath method of reflect.Type objects.  It is also used for the names
*************** of globally visible symbols.  The argume
*** 188,194 ****
  normally be the string that will be used to import this package after
  it has been installed; in other words, a pathname within the
  directories specified by the \fB\-I\fR option.
! .IP "\fB\-fgo\-prefix=\fR\fIstring\fR" 4
  .IX Item "-fgo-prefix=string"
  An alternative to \fB\-fgo\-pkgpath\fR.  The argument will be
  combined with the package name from the source file to produce the
--- 117,123 ----
  normally be the string that will be used to import this package after
  it has been installed; in other words, a pathname within the
  directories specified by the \fB\-I\fR option.
! .IP \fB\-fgo\-prefix=\fR\fIstring\fR 4
  .IX Item "-fgo-prefix=string"
  An alternative to \fB\-fgo\-pkgpath\fR.  The argument will be
  combined with the package name from the source file to produce the
*************** compiling a package.
*** 205,237 ****
  Using either \fB\-fgo\-pkgpath\fR or \fB\-fgo\-prefix\fR disables
  the special treatment of the \f(CW\*(C`main\*(C'\fR package and permits that
  package to be imported like any other.
! .IP "\fB\-fgo\-relative\-import\-path=\fR\fIdir\fR" 4
  .IX Item "-fgo-relative-import-path=dir"
  A relative import is an import that starts with \fI./\fR or
  \&\fI../\fR.  If this option is used, \fBgccgo\fR will use
  \&\fIdir\fR as a prefix for the relative import when searching for it.
! .IP "\fB\-frequire\-return\-statement\fR" 4
  .IX Item "-frequire-return-statement"
  .PD 0
! .IP "\fB\-fno\-require\-return\-statement\fR" 4
  .IX Item "-fno-require-return-statement"
  .PD
  By default \fBgccgo\fR will warn about functions which have one or
  more return parameters but lack an explicit \f(CW\*(C`return\*(C'\fR statement.
  This warning may be disabled using
  \&\fB\-fno\-require\-return\-statement\fR.
! .IP "\fB\-fgo\-check\-divide\-zero\fR" 4
  .IX Item "-fgo-check-divide-zero"
  Add explicit checks for division by zero.  In Go a division (or
  modulos) by zero causes a panic.  On Unix systems this is detected in
  the runtime by catching the \f(CW\*(C`SIGFPE\*(C'\fR signal.  Some processors,
! such as PowerPC, do not generate a \s-1SIGFPE\s0 on division by zero.  Some
  runtimes do not generate a signal that can be caught.  On those
  systems, this option may be used.  Or the checks may be removed via
  \&\fB\-fno\-go\-check\-divide\-zero\fR.  This option is currently on by
  default, but in the future may be off by default on systems that do
  not require it.
! .IP "\fB\-fgo\-check\-divide\-overflow\fR" 4
  .IX Item "-fgo-check-divide-overflow"
  Add explicit checks for division overflow.  For example, division
  overflow occurs when computing \f(CW\*(C`INT_MIN / \-1\*(C'\fR.  In Go this should
--- 134,166 ----
  Using either \fB\-fgo\-pkgpath\fR or \fB\-fgo\-prefix\fR disables
  the special treatment of the \f(CW\*(C`main\*(C'\fR package and permits that
  package to be imported like any other.
! .IP \fB\-fgo\-relative\-import\-path=\fR\fIdir\fR 4
  .IX Item "-fgo-relative-import-path=dir"
  A relative import is an import that starts with \fI./\fR or
  \&\fI../\fR.  If this option is used, \fBgccgo\fR will use
  \&\fIdir\fR as a prefix for the relative import when searching for it.
! .IP \fB\-frequire\-return\-statement\fR 4
  .IX Item "-frequire-return-statement"
  .PD 0
! .IP \fB\-fno\-require\-return\-statement\fR 4
  .IX Item "-fno-require-return-statement"
  .PD
  By default \fBgccgo\fR will warn about functions which have one or
  more return parameters but lack an explicit \f(CW\*(C`return\*(C'\fR statement.
  This warning may be disabled using
  \&\fB\-fno\-require\-return\-statement\fR.
! .IP \fB\-fgo\-check\-divide\-zero\fR 4
  .IX Item "-fgo-check-divide-zero"
  Add explicit checks for division by zero.  In Go a division (or
  modulos) by zero causes a panic.  On Unix systems this is detected in
  the runtime by catching the \f(CW\*(C`SIGFPE\*(C'\fR signal.  Some processors,
! such as PowerPC, do not generate a SIGFPE on division by zero.  Some
  runtimes do not generate a signal that can be caught.  On those
  systems, this option may be used.  Or the checks may be removed via
  \&\fB\-fno\-go\-check\-divide\-zero\fR.  This option is currently on by
  default, but in the future may be off by default on systems that do
  not require it.
! .IP \fB\-fgo\-check\-divide\-overflow\fR 4
  .IX Item "-fgo-check-divide-overflow"
  Add explicit checks for division overflow.  For example, division
  overflow occurs when computing \f(CW\*(C`INT_MIN / \-1\*(C'\fR.  In Go this should
*************** may be used.  Or the checks may be remov
*** 241,288 ****
  \&\fB\-fno\-go\-check\-divide\-overflow\fR.  This option is currently on
  by default, but in the future may be off by default on systems that do
  not require it.
! .IP "\fB\-fno\-go\-optimize\-allocs\fR" 4
  .IX Item "-fno-go-optimize-allocs"
  Disable escape analysis, which tries to allocate objects on the stack
  rather than the heap.
! .IP "\fB\-fgo\-debug\-escape\fR\fIn\fR" 4
  .IX Item "-fgo-debug-escapen"
  Output escape analysis debugging information.  Larger values of
  \&\fIn\fR generate more information.
! .IP "\fB\-fgo\-debug\-escape\-hash=\fR\fIn\fR" 4
  .IX Item "-fgo-debug-escape-hash=n"
  A hash value to debug escape analysis.  \fIn\fR is a binary string.
  This runs escape analysis only on functions whose names hash to values
  that match the given suffix \fIn\fR.  This can be used to binary
  search across functions to uncover escape analysis bugs.
! .IP "\fB\-fgo\-debug\-optimization\fR" 4
  .IX Item "-fgo-debug-optimization"
  Output optimization diagnostics.
! .IP "\fB\-fgo\-c\-header=\fR\fIfile\fR" 4
  .IX Item "-fgo-c-header=file"
! Write top-level named Go struct definitions to \fIfile\fR as C code.
  This is used when compiling the runtime package.
! .IP "\fB\-fgo\-compiling\-runtime\fR" 4
  .IX Item "-fgo-compiling-runtime"
  Apply special rules for compiling the runtime package.  Implicit
  memory allocation is forbidden.  Some additional compiler directives
  are supported.
! .IP "\fB\-fgo\-embedcfg=\fR\fIfile\fR" 4
  .IX Item "-fgo-embedcfg=file"
! Identify a \s-1JSON\s0 file used to map patterns used with special
  \&\f(CW\*(C`//go:embed\*(C'\fR comments to the files named by the patterns.  The
! \&\s-1JSON\s0 file should have two components: \f(CW\*(C`Patterns\*(C'\fR maps each
  pattern to a list of file names, and \f(CW\*(C`Files\*(C'\fR maps each file name
  to a full path to the file.  This option is intended for use by the
  \&\fBgo\fR command to implement \f(CW\*(C`//go:embed\*(C'\fR.
! .IP "\fB\-fgo\-importcfg=\fR\fIfile\fR" 4
  .IX Item "-fgo-importcfg=file"
  Identify a file that provides mappings for import package paths found
  in the Go source files.  The file can contain two commands:
  \&\f(CW\*(C`importpath\*(C'\fR to rename import paths for vendoring and
  \&\f(CW\*(C`packagefile\*(C'\fR to map from package path to files containing export
  data.  This option is intended for use by the \fBgo\fR command.
! .IP "\fB\-g\fR" 4
  .IX Item "-g"
  This is the standard \fBgcc\fR option.  It
  is mentioned here because by default \fBgccgo\fR turns on
--- 170,217 ----
  \&\fB\-fno\-go\-check\-divide\-overflow\fR.  This option is currently on
  by default, but in the future may be off by default on systems that do
  not require it.
! .IP \fB\-fno\-go\-optimize\-allocs\fR 4
  .IX Item "-fno-go-optimize-allocs"
  Disable escape analysis, which tries to allocate objects on the stack
  rather than the heap.
! .IP \fB\-fgo\-debug\-escape\fR\fIn\fR 4
  .IX Item "-fgo-debug-escapen"
  Output escape analysis debugging information.  Larger values of
  \&\fIn\fR generate more information.
! .IP \fB\-fgo\-debug\-escape\-hash=\fR\fIn\fR 4
  .IX Item "-fgo-debug-escape-hash=n"
  A hash value to debug escape analysis.  \fIn\fR is a binary string.
  This runs escape analysis only on functions whose names hash to values
  that match the given suffix \fIn\fR.  This can be used to binary
  search across functions to uncover escape analysis bugs.
! .IP \fB\-fgo\-debug\-optimization\fR 4
  .IX Item "-fgo-debug-optimization"
  Output optimization diagnostics.
! .IP \fB\-fgo\-c\-header=\fR\fIfile\fR 4
  .IX Item "-fgo-c-header=file"
! Write top\-level named Go struct definitions to \fIfile\fR as C code.
  This is used when compiling the runtime package.
! .IP \fB\-fgo\-compiling\-runtime\fR 4
  .IX Item "-fgo-compiling-runtime"
  Apply special rules for compiling the runtime package.  Implicit
  memory allocation is forbidden.  Some additional compiler directives
  are supported.
! .IP \fB\-fgo\-embedcfg=\fR\fIfile\fR 4
  .IX Item "-fgo-embedcfg=file"
! Identify a JSON file used to map patterns used with special
  \&\f(CW\*(C`//go:embed\*(C'\fR comments to the files named by the patterns.  The
! JSON file should have two components: \f(CW\*(C`Patterns\*(C'\fR maps each
  pattern to a list of file names, and \f(CW\*(C`Files\*(C'\fR maps each file name
  to a full path to the file.  This option is intended for use by the
  \&\fBgo\fR command to implement \f(CW\*(C`//go:embed\*(C'\fR.
! .IP \fB\-fgo\-importcfg=\fR\fIfile\fR 4
  .IX Item "-fgo-importcfg=file"
  Identify a file that provides mappings for import package paths found
  in the Go source files.  The file can contain two commands:
  \&\f(CW\*(C`importpath\*(C'\fR to rename import paths for vendoring and
  \&\f(CW\*(C`packagefile\*(C'\fR to map from package path to files containing export
  data.  This option is intended for use by the \fBgo\fR command.
! .IP \fB\-g\fR 4
  .IX Item "-g"
  This is the standard \fBgcc\fR option.  It
  is mentioned here because by default \fBgccgo\fR turns on
*************** debugging information, in which case cer
*** 294,320 ****
  functions, such as \f(CW\*(C`runtime.Callers\*(C'\fR, will not operate correctly.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf\-funding\fR\|(7), \fIgcc\fR\|(1)
  and the Info entries for \fIgccgo\fR and \fIgcc\fR.
! .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 2010\-2025 Free Software Foundation, Inc.
  .PP
  Permission is granted to copy, distribute and/or modify this document
! under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 or
  any later version published by the Free Software Foundation; with no
! Invariant Sections, the Front-Cover Texts being (a) (see below), and
! with the Back-Cover Texts being (b) (see below).
  A copy of the license is included in the
! man page \fIgfdl\fR\|(7).
  .PP
! (a) The \s-1FSF\s0's Front-Cover Text is:
  .PP
  .Vb 1
  \&     A GNU Manual
  .Ve
  .PP
! (b) The \s-1FSF\s0's Back-Cover Text is:
  .PP
  .Vb 3
  \&     You have freedom to copy and modify this GNU Manual, like GNU
--- 223,249 ----
  functions, such as \f(CW\*(C`runtime.Callers\*(C'\fR, will not operate correctly.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fBgpl\fR\|(7), \fBgfdl\fR\|(7), \fBfsf\-funding\fR\|(7), \fBgcc\fR\|(1)
  and the Info entries for \fIgccgo\fR and \fIgcc\fR.
! .SH COPYRIGHT
  .IX Header "COPYRIGHT"
  Copyright (c) 2010\-2025 Free Software Foundation, Inc.
  .PP
  Permission is granted to copy, distribute and/or modify this document
! under the terms of the GNU Free Documentation License, Version 1.3 or
  any later version published by the Free Software Foundation; with no
! Invariant Sections, the Front\-Cover Texts being (a) (see below), and
! with the Back\-Cover Texts being (b) (see below).
  A copy of the license is included in the
! man page \fBgfdl\fR\|(7).
  .PP
! (a) The FSF\*(Aqs Front\-Cover Text is:
  .PP
  .Vb 1
  \&     A GNU Manual
  .Ve
  .PP
! (b) The FSF\*(Aqs Back\-Cover Text is:
  .PP
  .Vb 3
  \&     You have freedom to copy and modify this GNU Manual, like GNU
diff -Nrcpad gcc-15.2.0/gcc/doc/gccgo.info gcc-15.3.0/gcc/doc/gccgo.info
*** gcc-15.2.0/gcc/doc/gccgo.info	Fri Aug  8 07:17:58 2025
--- gcc-15.3.0/gcc/doc/gccgo.info	Fri Jun 12 06:36:45 2026
***************
*** 1,6 ****
! This is gccgo.info, produced by makeinfo version 6.5 from gccgo.texi.
  
! Copyright (C) 2010-2025 Free Software Foundation, Inc.
  
     Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,6 ----
! This is gccgo.info, produced by makeinfo version 7.1 from gccgo.texi.
  
! Copyright Â© 2010-2025 Free Software Foundation, Inc.
  
     Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** START-INFO-DIR-ENTRY
*** 24,30 ****
  END-INFO-DIR-ENTRY
  
  
!    Copyright (C) 2010-2025 Free Software Foundation, Inc.
  
     Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 24,30 ----
  END-INFO-DIR-ENTRY
  
  
!    Copyright Â© 2010-2025 Free Software Foundation, Inc.
  
     Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** File: gccgo.info,  Node: Top,  Next: Cop
*** 49,56 ****
  Introduction
  ************
  
! This manual describes how to use 'gccgo', the GNU compiler for the Go
! programming language.  This manual is specifically about 'gccgo'.  For
  more information about the Go programming language in general, including
  language specifications and standard package documentation, see
  <https://go.dev>.
--- 49,56 ----
  Introduction
  ************
  
! This manual describes how to use â€˜gccgoâ€™, the GNU compiler for the Go
! programming language.  This manual is specifically about â€˜gccgoâ€™.  For
  more information about the Go programming language in general, including
  language specifications and standard package documentation, see
  <https://go.dev>.
*************** GNU General Public License
*** 74,80 ****
  
                          Version 3, 29 June 2007
  
!      Copyright (C) 2007 Free Software Foundation, Inc. <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies of this
       license document, but changing it is not allowed.
--- 74,80 ----
  
                          Version 3, 29 June 2007
  
!      Copyright Â© 2007 Free Software Foundation, Inc. <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies of this
       license document, but changing it is not allowed.
*************** mail.
*** 761,771 ****
  notice like this when it starts in an interactive mode:
  
       PROGRAM Copyright (C) YEAR NAME OF AUTHOR
!      This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'.
       This is free software, and you are welcome to redistribute it
!      under certain conditions; type 'show c' for details.
  
!    The hypothetical commands 'show w' and 'show c' should show the
  appropriate parts of the General Public License.  Of course, your
  program's commands might be different; for a GUI interface, you would
  use an "about box".
--- 761,771 ----
  notice like this when it starts in an interactive mode:
  
       PROGRAM Copyright (C) YEAR NAME OF AUTHOR
!      This program comes with ABSOLUTELY NO WARRANTY; for details type â€˜show wâ€™.
       This is free software, and you are welcome to redistribute it
!      under certain conditions; type â€˜show câ€™ for details.
  
!    The hypothetical commands â€˜show wâ€™ and â€˜show câ€™ should show the
  appropriate parts of the General Public License.  Of course, your
  program's commands might be different; for a GUI interface, you would
  use an "about box".
*************** GNU Free Documentation License
*** 790,796 ****
  
                       Version 1.3, 3 November 2008
  
!      Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
       <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies
--- 790,796 ----
  
                       Version 1.3, 3 November 2008
  
!      Copyright Â© 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
       <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies
*************** GNU Free Documentation License
*** 799,805 ****
    0. PREAMBLE
  
       The purpose of this License is to make a manual, textbook, or other
!      functional and useful document "free" in the sense of freedom: to
       assure everyone the effective freedom to copy and redistribute it,
       with or without modifying it, either commercially or
       noncommercially.  Secondarily, this License preserves for the
--- 799,805 ----
    0. PREAMBLE
  
       The purpose of this License is to make a manual, textbook, or other
!      functional and useful document â€œfreeâ€� in the sense of freedom: to
       assure everyone the effective freedom to copy and redistribute it,
       with or without modifying it, either commercially or
       noncommercially.  Secondarily, this License preserves for the
*************** File: gccgo.info,  Node: Invoking gccgo,
*** 1270,1411 ****
  1 Invoking gccgo
  ****************
  
! The 'gccgo' command is a frontend to 'gcc' and supports many of the same
  options.  *Note Option Summary: (gcc)Option Summary.  This manual only
! documents the options specific to 'gccgo'.
  
!    The 'gccgo' command may be used to compile Go source code into an
  object file, link a collection of object files together, or do both in
  sequence.
  
     Go source code is compiled as packages.  A package consists of one or
  more Go source files.  All the files in a single package must be
! compiled together, by passing all the files as arguments to 'gccgo'.  A
! single invocation of 'gccgo' may only compile a single package.
  
!    One Go package may 'import' a different Go package.  The imported
! package must have already been compiled; 'gccgo' will read the import
  data directly from the compiled package.  When this package is later
  linked, the compiled form of the package must be included in the link
  command.
  
     Go programs must generally be compiled with debugging information,
! and '-g1' is the default as described below.  Stripping a Go program
  will generally cause it to misbehave or fail.
  
! '-IDIR'
       Specify a directory to use when searching for an import package at
       compile time.
  
! '-LDIR'
!      When linking, specify a library search directory, as with 'gcc'.
  
! '-fgo-pkgpath=STRING'
       Set the package path to use.  This sets the value returned by the
       PkgPath method of reflect.Type objects.  It is also used for the
       names of globally visible symbols.  The argument to this option
       should normally be the string that will be used to import this
       package after it has been installed; in other words, a pathname
!      within the directories specified by the '-I' option.
  
! '-fgo-prefix=STRING'
!      An alternative to '-fgo-pkgpath'.  The argument will be combined
       with the package name from the source file to produce the package
!      path.  If '-fgo-pkgpath' is used, '-fgo-prefix' will be ignored.
  
       Go permits a single program to include more than one package with
!      the same name in the 'package' clause in the source file, though
       obviously the two packages must be imported using different
!      pathnames.  In order for this to work with 'gccgo', either
!      '-fgo-pkgpath' or '-fgo-prefix' must be specified when compiling a
       package.
  
!      Using either '-fgo-pkgpath' or '-fgo-prefix' disables the special
!      treatment of the 'main' package and permits that package to be
       imported like any other.
  
! '-fgo-relative-import-path=DIR'
!      A relative import is an import that starts with './' or '../'.  If
!      this option is used, 'gccgo' will use DIR as a prefix for the
       relative import when searching for it.
  
! '-frequire-return-statement'
! '-fno-require-return-statement'
!      By default 'gccgo' will warn about functions which have one or more
!      return parameters but lack an explicit 'return' statement.  This
!      warning may be disabled using '-fno-require-return-statement'.
  
! '-fgo-check-divide-zero'
       Add explicit checks for division by zero.  In Go a division (or
       modulos) by zero causes a panic.  On Unix systems this is detected
!      in the runtime by catching the 'SIGFPE' signal.  Some processors,
       such as PowerPC, do not generate a SIGFPE on division by zero.
       Some runtimes do not generate a signal that can be caught.  On
       those systems, this option may be used.  Or the checks may be
!      removed via '-fno-go-check-divide-zero'.  This option is currently
       on by default, but in the future may be off by default on systems
       that do not require it.
  
! '-fgo-check-divide-overflow'
       Add explicit checks for division overflow.  For example, division
!      overflow occurs when computing 'INT_MIN / -1'.  In Go this should
!      be wrapped, to produce 'INT_MIN'.  Some processors, such as x86,
       generate a trap on division overflow.  On those systems, this
       option may be used.  Or the checks may be removed via
!      '-fno-go-check-divide-overflow'.  This option is currently on by
       default, but in the future may be off by default on systems that do
       not require it.
  
! '-fno-go-optimize-allocs'
       Disable escape analysis, which tries to allocate objects on the
       stack rather than the heap.
  
! '-fgo-debug-escapeN'
       Output escape analysis debugging information.  Larger values of N
       generate more information.
  
! '-fgo-debug-escape-hash=N'
       A hash value to debug escape analysis.  N is a binary string.  This
       runs escape analysis only on functions whose names hash to values
       that match the given suffix N.  This can be used to binary search
       across functions to uncover escape analysis bugs.
  
! '-fgo-debug-optimization'
       Output optimization diagnostics.
  
! '-fgo-c-header=FILE'
       Write top-level named Go struct definitions to FILE as C code.
       This is used when compiling the runtime package.
  
! '-fgo-compiling-runtime'
       Apply special rules for compiling the runtime package.  Implicit
       memory allocation is forbidden.  Some additional compiler
       directives are supported.
  
! '-fgo-embedcfg=FILE'
       Identify a JSON file used to map patterns used with special
!      '//go:embed' comments to the files named by the patterns.  The JSON
!      file should have two components: 'Patterns' maps each pattern to a
!      list of file names, and 'Files' maps each file name to a full path
!      to the file.  This option is intended for use by the 'go' command
!      to implement '//go:embed'.
  
! '-fgo-importcfg=FILE'
       Identify a file that provides mappings for import package paths
       found in the Go source files.  The file can contain two commands:
!      'importpath' to rename import paths for vendoring and 'packagefile'
       to map from package path to files containing export data.  This
!      option is intended for use by the 'go' command.
  
! '-g'
!      This is the standard 'gcc' option (*note Debugging Options:
       (gcc)Debugging Options.).  It is mentioned here because by default
!      'gccgo' turns on debugging information generation with the
!      equivalent of the standard option '-g1'.  This is because Go
       programs require debugging information to be available in order to
!      get backtrace information.  An explicit '-g0' may be used to
       disable the generation of debugging information, in which case
!      certain standard library functions, such as 'runtime.Callers', will
       not operate correctly.
  
  
--- 1270,1411 ----
  1 Invoking gccgo
  ****************
  
! The â€˜gccgoâ€™ command is a frontend to â€˜gccâ€™ and supports many of the same
  options.  *Note Option Summary: (gcc)Option Summary.  This manual only
! documents the options specific to â€˜gccgoâ€™.
  
!    The â€˜gccgoâ€™ command may be used to compile Go source code into an
  object file, link a collection of object files together, or do both in
  sequence.
  
     Go source code is compiled as packages.  A package consists of one or
  more Go source files.  All the files in a single package must be
! compiled together, by passing all the files as arguments to â€˜gccgoâ€™.  A
! single invocation of â€˜gccgoâ€™ may only compile a single package.
  
!    One Go package may â€˜importâ€™ a different Go package.  The imported
! package must have already been compiled; â€˜gccgoâ€™ will read the import
  data directly from the compiled package.  When this package is later
  linked, the compiled form of the package must be included in the link
  command.
  
     Go programs must generally be compiled with debugging information,
! and â€˜-g1â€™ is the default as described below.  Stripping a Go program
  will generally cause it to misbehave or fail.
  
! â€˜-IDIRâ€™
       Specify a directory to use when searching for an import package at
       compile time.
  
! â€˜-LDIRâ€™
!      When linking, specify a library search directory, as with â€˜gccâ€™.
  
! â€˜-fgo-pkgpath=STRINGâ€™
       Set the package path to use.  This sets the value returned by the
       PkgPath method of reflect.Type objects.  It is also used for the
       names of globally visible symbols.  The argument to this option
       should normally be the string that will be used to import this
       package after it has been installed; in other words, a pathname
!      within the directories specified by the â€˜-Iâ€™ option.
  
! â€˜-fgo-prefix=STRINGâ€™
!      An alternative to â€˜-fgo-pkgpathâ€™.  The argument will be combined
       with the package name from the source file to produce the package
!      path.  If â€˜-fgo-pkgpathâ€™ is used, â€˜-fgo-prefixâ€™ will be ignored.
  
       Go permits a single program to include more than one package with
!      the same name in the â€˜packageâ€™ clause in the source file, though
       obviously the two packages must be imported using different
!      pathnames.  In order for this to work with â€˜gccgoâ€™, either
!      â€˜-fgo-pkgpathâ€™ or â€˜-fgo-prefixâ€™ must be specified when compiling a
       package.
  
!      Using either â€˜-fgo-pkgpathâ€™ or â€˜-fgo-prefixâ€™ disables the special
!      treatment of the â€˜mainâ€™ package and permits that package to be
       imported like any other.
  
! â€˜-fgo-relative-import-path=DIRâ€™
!      A relative import is an import that starts with â€˜./â€™ or â€˜../â€™.  If
!      this option is used, â€˜gccgoâ€™ will use DIR as a prefix for the
       relative import when searching for it.
  
! â€˜-frequire-return-statementâ€™
! â€˜-fno-require-return-statementâ€™
!      By default â€˜gccgoâ€™ will warn about functions which have one or more
!      return parameters but lack an explicit â€˜returnâ€™ statement.  This
!      warning may be disabled using â€˜-fno-require-return-statementâ€™.
  
! â€˜-fgo-check-divide-zeroâ€™
       Add explicit checks for division by zero.  In Go a division (or
       modulos) by zero causes a panic.  On Unix systems this is detected
!      in the runtime by catching the â€˜SIGFPEâ€™ signal.  Some processors,
       such as PowerPC, do not generate a SIGFPE on division by zero.
       Some runtimes do not generate a signal that can be caught.  On
       those systems, this option may be used.  Or the checks may be
!      removed via â€˜-fno-go-check-divide-zeroâ€™.  This option is currently
       on by default, but in the future may be off by default on systems
       that do not require it.
  
! â€˜-fgo-check-divide-overflowâ€™
       Add explicit checks for division overflow.  For example, division
!      overflow occurs when computing â€˜INT_MIN / -1â€™.  In Go this should
!      be wrapped, to produce â€˜INT_MINâ€™.  Some processors, such as x86,
       generate a trap on division overflow.  On those systems, this
       option may be used.  Or the checks may be removed via
!      â€˜-fno-go-check-divide-overflowâ€™.  This option is currently on by
       default, but in the future may be off by default on systems that do
       not require it.
  
! â€˜-fno-go-optimize-allocsâ€™
       Disable escape analysis, which tries to allocate objects on the
       stack rather than the heap.
  
! â€˜-fgo-debug-escapeNâ€™
       Output escape analysis debugging information.  Larger values of N
       generate more information.
  
! â€˜-fgo-debug-escape-hash=Nâ€™
       A hash value to debug escape analysis.  N is a binary string.  This
       runs escape analysis only on functions whose names hash to values
       that match the given suffix N.  This can be used to binary search
       across functions to uncover escape analysis bugs.
  
! â€˜-fgo-debug-optimizationâ€™
       Output optimization diagnostics.
  
! â€˜-fgo-c-header=FILEâ€™
       Write top-level named Go struct definitions to FILE as C code.
       This is used when compiling the runtime package.
  
! â€˜-fgo-compiling-runtimeâ€™
       Apply special rules for compiling the runtime package.  Implicit
       memory allocation is forbidden.  Some additional compiler
       directives are supported.
  
! â€˜-fgo-embedcfg=FILEâ€™
       Identify a JSON file used to map patterns used with special
!      â€˜//go:embedâ€™ comments to the files named by the patterns.  The JSON
!      file should have two components: â€˜Patternsâ€™ maps each pattern to a
!      list of file names, and â€˜Filesâ€™ maps each file name to a full path
!      to the file.  This option is intended for use by the â€˜goâ€™ command
!      to implement â€˜//go:embedâ€™.
  
! â€˜-fgo-importcfg=FILEâ€™
       Identify a file that provides mappings for import package paths
       found in the Go source files.  The file can contain two commands:
!      â€˜importpathâ€™ to rename import paths for vendoring and â€˜packagefileâ€™
       to map from package path to files containing export data.  This
!      option is intended for use by the â€˜goâ€™ command.
  
! â€˜-gâ€™
!      This is the standard â€˜gccâ€™ option (*note Debugging Options:
       (gcc)Debugging Options.).  It is mentioned here because by default
!      â€˜gccgoâ€™ turns on debugging information generation with the
!      equivalent of the standard option â€˜-g1â€™.  This is because Go
       programs require debugging information to be available in order to
!      get backtrace information.  An explicit â€˜-g0â€™ may be used to
       disable the generation of debugging information, in which case
!      certain standard library functions, such as â€˜runtime.Callersâ€™, will
       not operate correctly.
  
  
*************** File: gccgo.info,  Node: Import and Expo
*** 1414,1451 ****
  2 Import and Export
  *******************
  
! When 'gccgo' compiles a package which exports anything, the export
  information will be stored directly in the object file.  When a package
! is imported, 'gccgo' must be able to find the file.
  
!    When Go code imports the package 'GOPACKAGE', 'gccgo' will look for
  the import data using the following filenames, using the first one that
  it finds.
  
! 'GOPACKAGE.gox'
! 'libGOPACKAGE.so'
! 'libGOPACKAGE.a'
! 'GOPACKAGE.o'
  
     The compiler will search for these files in the directories named by
! any '-I' options, in order in which the directories appear on the
  command line.  The compiler will then search several standard system
  directories.  Finally the compiler will search the current directory (to
! search the current directory earlier, use '-I.').
  
     The compiler will extract the export information directly from the
! compiled object file.  The file 'GOPACKAGE.gox' will typically contain
! nothing but export data.  This can be generated from 'GOPACKAGE.o' via
  
       objcopy -j .go_export GOPACKAGE.o GOPACKAGE.gox
  
     For example, it may be desirable to extract the export information
! from several different packages into their independent 'GOPACKAGE.gox'
  files, and then to combine the different package object files together
  into a single shared library or archive.
  
!    At link time you must explicitly tell 'gccgo' which files to link
! together into the executable, as is usual with 'gcc'.  This is different
  from the behavior of other Go compilers.
  
  
--- 1414,1451 ----
  2 Import and Export
  *******************
  
! When â€˜gccgoâ€™ compiles a package which exports anything, the export
  information will be stored directly in the object file.  When a package
! is imported, â€˜gccgoâ€™ must be able to find the file.
  
!    When Go code imports the package â€˜GOPACKAGEâ€™, â€˜gccgoâ€™ will look for
  the import data using the following filenames, using the first one that
  it finds.
  
! â€˜GOPACKAGE.goxâ€™
! â€˜libGOPACKAGE.soâ€™
! â€˜libGOPACKAGE.aâ€™
! â€˜GOPACKAGE.oâ€™
  
     The compiler will search for these files in the directories named by
! any â€˜-Iâ€™ options, in order in which the directories appear on the
  command line.  The compiler will then search several standard system
  directories.  Finally the compiler will search the current directory (to
! search the current directory earlier, use â€˜-I.â€™).
  
     The compiler will extract the export information directly from the
! compiled object file.  The file â€˜GOPACKAGE.goxâ€™ will typically contain
! nothing but export data.  This can be generated from â€˜GOPACKAGE.oâ€™ via
  
       objcopy -j .go_export GOPACKAGE.o GOPACKAGE.gox
  
     For example, it may be desirable to extract the export information
! from several different packages into their independent â€˜GOPACKAGE.goxâ€™
  files, and then to combine the different package object files together
  into a single shared library or archive.
  
!    At link time you must explicitly tell â€˜gccgoâ€™ which files to link
! together into the executable, as is usual with â€˜gccâ€™.  This is different
  from the behavior of other Go compilers.
  
  
*************** File: gccgo.info,  Node: Compiler Direct
*** 1455,1481 ****
  *********************
  
  The Go compiler supports a few compiler directives.  A compiler
! directive uses a '//' comment at the start of a line.  There must be no
! space between the '//' and the name of the directive.
  
! '//line FILE:LINE'
!      The '//line' directive specifies that the source line that follows
       should be recorded as having come from the given file path and line
       number.  Successive lines are recorded using increasing line
       numbers, until the next directive.  This directive typically
       appears in machine-generated code, so that compilers and debuggers
       will show lines in the original input to the generator.
  
! '//extern EXTERN_NAME'
!      The 'extern' directive sets the externally visible name of the next
       function declaration.  See *note Function Names::.
  
! '//go:compile GO_NAME EXTERN_NAME'
!      The 'go:compile' directives sets the externally visible name of a
       function definition or declaration.  See *note Function Names::.
  
! '//go:noescape'
!      The '//go:noescape' directive specifies that the next declaration
       in the file, which must be a func without a body (meaning that it
       has an implementation not written in Go) does not allow any of the
       pointers passed as arguments to escape into the heap or into the
--- 1455,1481 ----
  *********************
  
  The Go compiler supports a few compiler directives.  A compiler
! directive uses a â€˜//â€™ comment at the start of a line.  There must be no
! space between the â€˜//â€™ and the name of the directive.
  
! â€˜//line FILE:LINEâ€™
!      The â€˜//lineâ€™ directive specifies that the source line that follows
       should be recorded as having come from the given file path and line
       number.  Successive lines are recorded using increasing line
       numbers, until the next directive.  This directive typically
       appears in machine-generated code, so that compilers and debuggers
       will show lines in the original input to the generator.
  
! â€˜//extern EXTERN_NAMEâ€™
!      The â€˜externâ€™ directive sets the externally visible name of the next
       function declaration.  See *note Function Names::.
  
! â€˜//go:compile GO_NAME EXTERN_NAMEâ€™
!      The â€˜go:compileâ€™ directives sets the externally visible name of a
       function definition or declaration.  See *note Function Names::.
  
! â€˜//go:noescapeâ€™
!      The â€˜//go:noescapeâ€™ directive specifies that the next declaration
       in the file, which must be a func without a body (meaning that it
       has an implementation not written in Go) does not allow any of the
       pointers passed as arguments to escape into the heap or into the
*************** space between the '//' and the name of t
*** 1483,1496 ****
       during the compiler's escape analysis of Go code calling the
       function.
  
! '//go:nosplit'
!      The '//go:nosplit' directive specifies that the next function
       declared in the file must not include a stack overflow check.  This
       is most commonly used by low-level runtime sources invoked at times
       when it is unsafe for the calling goroutine to be preempted.
  
! '//go:noinline'
!      The '//go:noinline' directive specifies that the next function
       defined in the file may not be inlined.
  
  
--- 1483,1496 ----
       during the compiler's escape analysis of Go code calling the
       function.
  
! â€˜//go:nosplitâ€™
!      The â€˜//go:nosplitâ€™ directive specifies that the next function
       declared in the file must not include a stack overflow check.  This
       is most commonly used by low-level runtime sources invoked at times
       when it is unsafe for the calling goroutine to be preempted.
  
! â€˜//go:noinlineâ€™
!      The â€˜//go:noinlineâ€™ directive specifies that the next function
       defined in the file may not be inlined.
  
  
*************** File: gccgo.info,  Node: C Interoperabil
*** 1499,1510 ****
  4 C Interoperability
  ********************
  
! When using 'gccgo' there is limited interoperability with C, or with C++
! code compiled using 'extern "C"'.
  
     This information is provided largely for documentation purposes.  For
  ordinary use it is best to build programs with the go tool and then use
! 'import "C"', as described at <https://pkg.go.dev/cmd/cgo>.
  
  * Menu:
  
--- 1499,1510 ----
  4 C Interoperability
  ********************
  
! When using â€˜gccgoâ€™ there is limited interoperability with C, or with C++
! code compiled using â€˜extern "C"â€™.
  
     This information is provided largely for documentation purposes.  For
  ordinary use it is best to build programs with the go tool and then use
! â€˜import "C"â€™, as described at <https://pkg.go.dev/cmd/cgo>.
  
  * Menu:
  
*************** File: gccgo.info,  Node: C Type Interope
*** 1517,1528 ****
  4.1 C Type Interoperability
  ===========================
  
! Basic types map directly: an 'int' in Go is an 'int' in C, etc.  Go
! 'byte' is equivalent to C 'unsigned char'.  Pointers in Go are pointers
! in C. A Go 'struct' is the same as C 'struct' with the same field names
  and types.
  
!    The Go 'string' type is currently defined as a two-element structure:
  
       struct __go_string {
         const unsigned char *__data;
--- 1517,1528 ----
  4.1 C Type Interoperability
  ===========================
  
! Basic types map directly: an â€˜intâ€™ in Go is an â€˜intâ€™ in C, etc.  Go
! â€˜byteâ€™ is equivalent to C â€˜unsigned charâ€™.  Pointers in Go are pointers
! in C. A Go â€˜structâ€™ is the same as C â€˜structâ€™ with the same field names
  and types.
  
!    The Go â€˜stringâ€™ type is currently defined as a two-element structure:
  
       struct __go_string {
         const unsigned char *__data;
*************** and types.
*** 1531,1537 ****
  
     You can't pass arrays between C and Go.  However, a pointer to an
  array in Go is equivalent to a C pointer to the equivalent of the
! element type.  For example, Go '*[10]int' is equivalent to C 'int*',
  assuming that the C pointer does point to 10 elements.
  
     A slice in Go is a structure.  The current definition is:
--- 1531,1537 ----
  
     You can't pass arrays between C and Go.  However, a pointer to an
  array in Go is equivalent to a C pointer to the equivalent of the
! element type.  For example, Go â€˜*[10]intâ€™ is equivalent to C â€˜int*â€™,
  assuming that the C pointer does point to 10 elements.
  
     A slice in Go is a structure.  The current definition is:
*************** example, these functions have equivalent
*** 1553,1565 ****
     A pointer to a Go function is equivalent to a pointer to a C function
  when the functions have equivalent types.
  
!    Go 'interface', 'channel', and 'map' types have no corresponding C
! type ('interface' is a two-element struct and 'channel' and 'map' are
  pointers to structs in C, but the structs are deliberately
! undocumented).  C 'enum' types correspond to some integer type, but
  precisely which one is difficult to predict in general; use a cast.  C
! 'union' types have no corresponding Go type.  C 'struct' types
! containing bitfields have no corresponding Go type.  C++ 'class' types
  have no corresponding Go type.
  
     Memory allocation is completely different between C and Go, as Go
--- 1553,1565 ----
     A pointer to a Go function is equivalent to a pointer to a C function
  when the functions have equivalent types.
  
!    Go â€˜interfaceâ€™, â€˜channelâ€™, and â€˜mapâ€™ types have no corresponding C
! type (â€˜interfaceâ€™ is a two-element struct and â€˜channelâ€™ and â€˜mapâ€™ are
  pointers to structs in C, but the structs are deliberately
! undocumented).  C â€˜enumâ€™ types correspond to some integer type, but
  precisely which one is difficult to predict in general; use a cast.  C
! â€˜unionâ€™ types have no corresponding Go type.  C â€˜structâ€™ types
! containing bitfields have no corresponding Go type.  C++ â€˜classâ€™ types
  have no corresponding Go type.
  
     Memory allocation is completely different between C and Go, as Go
*************** File: gccgo.info,  Node: Function Names,
*** 1579,1621 ****
  4.2 Function Names
  ==================
  
! Go code can call C functions directly using the '//extern' or
! '//go:linkname' compiler directives.  An '//extern' directive must be at
! the beginning of the line and must start with '//extern'.  This must be
  followed by a space and then the external name of the function.  The
  function declaration must be on the line immediately after the comment.
! For example, here is how the C function 'open' can be declared in Go:
  
       //extern open
       func c_open(name *byte, mode int, perm int) int
  
!    You can do the same thing using the '//go:linkname' compiler
! directive.  The '//go:linkname' directive must be at the start of the
  line.  It is followed by whitespace, the name of the Go function, more
! whitespace, and the external name of the function.  Unlike '//extern',
! '//go:linkname' does not need to appear immediately adjacent to the
  function definition or declaration.
  
       //go:linkname c_open open
       func c_open(name *byte, mode int, perm int) int
  
     The C function naturally expects a nul terminated string, which in Go
! is equivalent to a pointer to an array (not a slice!)  of 'byte' with a
  terminating zero byte.  So a sample call from Go would look like (after
! importing the 'os' package):
  
       var name = [4]byte{'f', 'o', 'o', 0};
       i := c_open(&name[0], os.O_RDONLY, 0);
  
     Note that this serves as an example only.  To open a file in Go
! please use Go's 'os.Open' function instead.
  
     The name of Go functions accessed from C is subject to change.  At
  present the name of a Go function that does not have a receiver is
! 'pkgpath.Functionname'.  The PKGPATH is set by the '-fgo-pkgpath' option
  used when the package is compiled; if the option is not used, the
! default is 'go.PACKAGENAME'.  To call the function from C you must set
! the name using the 'gcc' '__asm__' extension.
  
       extern int go_function(int) __asm__ ("mypkgpath.Function");
  
--- 1579,1621 ----
  4.2 Function Names
  ==================
  
! Go code can call C functions directly using the â€˜//externâ€™ or
! â€˜//go:linknameâ€™ compiler directives.  An â€˜//externâ€™ directive must be at
! the beginning of the line and must start with â€˜//externâ€™.  This must be
  followed by a space and then the external name of the function.  The
  function declaration must be on the line immediately after the comment.
! For example, here is how the C function â€˜openâ€™ can be declared in Go:
  
       //extern open
       func c_open(name *byte, mode int, perm int) int
  
!    You can do the same thing using the â€˜//go:linknameâ€™ compiler
! directive.  The â€˜//go:linknameâ€™ directive must be at the start of the
  line.  It is followed by whitespace, the name of the Go function, more
! whitespace, and the external name of the function.  Unlike â€˜//externâ€™,
! â€˜//go:linknameâ€™ does not need to appear immediately adjacent to the
  function definition or declaration.
  
       //go:linkname c_open open
       func c_open(name *byte, mode int, perm int) int
  
     The C function naturally expects a nul terminated string, which in Go
! is equivalent to a pointer to an array (not a slice!)  of â€˜byteâ€™ with a
  terminating zero byte.  So a sample call from Go would look like (after
! importing the â€˜osâ€™ package):
  
       var name = [4]byte{'f', 'o', 'o', 0};
       i := c_open(&name[0], os.O_RDONLY, 0);
  
     Note that this serves as an example only.  To open a file in Go
! please use Go's â€˜os.Openâ€™ function instead.
  
     The name of Go functions accessed from C is subject to change.  At
  present the name of a Go function that does not have a receiver is
! â€˜pkgpath.Functionnameâ€™.  The PKGPATH is set by the â€˜-fgo-pkgpathâ€™ option
  used when the package is compiled; if the option is not used, the
! default is â€˜go.PACKAGENAMEâ€™.  To call the function from C you must set
! the name using the â€˜gccâ€™ â€˜__asm__â€™ extension.
  
       extern int go_function(int) __asm__ ("mypkgpath.Function");
  
*************** Index
*** 1662,1676 ****
  
  
  Tag Table:
! Node: Top1688
! Node: Copying2543
! Node: GNU Free Documentation License40082
! Node: Invoking gccgo65215
! Node: Import and Export71753
! Node: Compiler Directives73349
! Node: C Interoperability75333
! Node: C Type Interoperability75920
! Node: Function Names78479
! Node: Index80483
  
  End Tag Table
--- 1662,1681 ----
  
  
  Tag Table:
! Node: Top1686
! Node: Copying2549
! Node: GNU Free Documentation License40103
! Node: Invoking gccgo65239
! Node: Import and Export72029
! Node: Compiler Directives73685
! Node: C Interoperability75725
! Node: C Type Interoperability76324
! Node: Function Names78959
! Node: Index81031
  
  End Tag Table
+ 
+ 
+ Local Variables:
+ coding: utf-8
+ End:
diff -Nrcpad gcc-15.2.0/gcc/doc/gccinstall.info gcc-15.3.0/gcc/doc/gccinstall.info
*** gcc-15.2.0/gcc/doc/gccinstall.info	Fri Aug  8 07:10:00 2025
--- gcc-15.3.0/gcc/doc/gccinstall.info	Fri Jun 12 06:28:38 2026
***************
*** 1,7 ****
! This is gccinstall.info, produced by makeinfo version 6.5 from
  install.texi.
  
! Copyright (C) 1988-2025 Free Software Foundation, Inc.
  
     Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,7 ----
! This is gccinstall.info, produced by makeinfo version 7.1 from
  install.texi.
  
! Copyright Â© 1988-2025 Free Software Foundation, Inc.
  
     Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** START-INFO-DIR-ENTRY
*** 24,30 ****
  * gccinstall: (gccinstall).    Installing the GNU Compiler Collection.
  END-INFO-DIR-ENTRY
  
!    Copyright (C) 1988-2025 Free Software Foundation, Inc.
  
     Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 24,30 ----
  * gccinstall: (gccinstall).    Installing the GNU Compiler Collection.
  END-INFO-DIR-ENTRY
  
!    Copyright Â© 1988-2025 Free Software Foundation, Inc.
  
     Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** browse the entire generic installation i
*** 91,97 ****
  * Testing:: (optional)
  * Final install::
  
!    Please note that GCC does not support 'make uninstall' and probably
  won't do so in the near future as this would open a can of worms.
  Instead, we suggest that you install GCC into a directory of its own and
  simply remove that directory when you do not need that specific version
--- 91,97 ----
  * Testing:: (optional)
  * Final install::
  
!    Please note that GCC does not support â€˜make uninstallâ€™ and probably
  won't do so in the near future as this would open a can of worms.
  Instead, we suggest that you install GCC into a directory of its own and
  simply remove that directory when you do not need that specific version
*************** C standard library and headers
*** 136,162 ****
       present for all target variants for which target libraries will be
       built (and not only the variant of the host C++ compiler).
  
!      This affects the popular 'x86_64-pc-linux-gnu' platform (among
!      other multilib targets), for which 64-bit ('x86_64') and 32-bit
!      ('i386') libc headers are usually packaged separately.  If you do a
!      build of a native compiler on 'x86_64-pc-linux-gnu', make sure you
       either have the 32-bit libc developer package properly installed
       (the exact name of the package depends on your distro) or you must
       build GCC as a 64-bit only compiler by configuring with the option
!      '--disable-multilib'.  Otherwise, you may encounter an error such
!      as 'fatal error: gnu/stubs-32.h: No such file'
  
  Python
!      If you configure a RISC-V compiler with the option '--with-arch'
       and the specified architecture string is non-canonical, then you
!      will need 'python' installed on the build system.
  
  GNAT
  
       In order to build GNAT, the Ada compiler, you need a working GNAT
       compiler (GCC version 5.1 or later).
  
!      This includes GNAT tools such as 'gnatmake' and 'gnatlink', since
       the Ada front end is written in Ada and uses some GNAT-specific
       extensions.
  
--- 136,162 ----
       present for all target variants for which target libraries will be
       built (and not only the variant of the host C++ compiler).
  
!      This affects the popular â€˜x86_64-pc-linux-gnuâ€™ platform (among
!      other multilib targets), for which 64-bit (â€˜x86_64â€™) and 32-bit
!      (â€˜i386â€™) libc headers are usually packaged separately.  If you do a
!      build of a native compiler on â€˜x86_64-pc-linux-gnuâ€™, make sure you
       either have the 32-bit libc developer package properly installed
       (the exact name of the package depends on your distro) or you must
       build GCC as a 64-bit only compiler by configuring with the option
!      â€˜--disable-multilibâ€™.  Otherwise, you may encounter an error such
!      as â€˜fatal error: gnu/stubs-32.h: No such fileâ€™
  
  Python
!      If you configure a RISC-V compiler with the option â€˜--with-archâ€™
       and the specified architecture string is non-canonical, then you
!      will need â€˜pythonâ€™ installed on the build system.
  
  GNAT
  
       In order to build GNAT, the Ada compiler, you need a working GNAT
       compiler (GCC version 5.1 or later).
  
!      This includes GNAT tools such as â€˜gnatmakeâ€™ and â€˜gnatlinkâ€™, since
       the Ada front end is written in Ada and uses some GNAT-specific
       extensions.
  
*************** GNAT
*** 171,185 ****
       built are not guaranteed to work and will often fail during the
       build with compilation errors.
  
!      Note that 'configure' does not test whether the GNAT installation
       works and has a sufficiently recent version; if too old a GNAT
!      version is installed and '--enable-languages=ada' is used, the
       build will fail.
  
!      'ADA_INCLUDE_PATH' and 'ADA_OBJECT_PATH' environment variables must
       not be set when building the Ada compiler, the Ada tools, or the
       Ada runtime libraries.  You can check that your build environment
!      is clean by verifying that 'gnatls -v' lists only one explicit path
       in each section.
  
  GCOBOL
--- 171,185 ----
       built are not guaranteed to work and will often fail during the
       build with compilation errors.
  
!      Note that â€˜configureâ€™ does not test whether the GNAT installation
       works and has a sufficiently recent version; if too old a GNAT
!      version is installed and â€˜--enable-languages=adaâ€™ is used, the
       build will fail.
  
!      â€˜ADA_INCLUDE_PATHâ€™ and â€˜ADA_OBJECT_PATHâ€™ environment variables must
       not be set when building the Ada compiler, the Ada tools, or the
       Ada runtime libraries.  You can check that your build environment
!      is clean by verifying that â€˜gnatls -vâ€™ lists only one explicit path
       in each section.
  
  GCOBOL
*************** GCOBOL
*** 199,205 ****
       instructions.  This requirement applies to both host and target.
       For integer and fixed-point computation, gcobol uses
        -- Data type: __int128
!      meaning '16 == sizeof(long long int)'.  For floating point, gcobol
       uses
        -- Data type: _Float128
       (On some architectures, GCC supports 128-bit floating point in
--- 199,205 ----
       instructions.  This requirement applies to both host and target.
       For integer and fixed-point computation, gcobol uses
        -- Data type: __int128
!      meaning â€˜16 == sizeof(long long int)â€™.  For floating point, gcobol
       uses
        -- Data type: _Float128
       (On some architectures, GCC supports 128-bit floating point in
*************** GDC
*** 212,218 ****
  
       In order to build GDC, the D compiler, you need a working GDC
       compiler (GCC version 9.4 or later) and D runtime library,
!      'libphobos', as the D front end is written in D.
  
       Versions of GDC prior to 12 can be built with an ISO C++11
       compiler, which can then be installed and used to bootstrap newer
--- 212,218 ----
  
       In order to build GDC, the D compiler, you need a working GDC
       compiler (GCC version 9.4 or later) and D runtime library,
!      â€˜libphobosâ€™, as the D front end is written in D.
  
       Versions of GDC prior to 12 can be built with an ISO C++11
       compiler, which can then be installed and used to bootstrap newer
*************** GDC
*** 223,243 ****
       guaranteed to work and will often fail during the build with
       compilation errors relating to deprecations or removed features.
  
!      Note that 'configure' does not test whether the GDC installation
       works and has a sufficiently recent version.  Though the
       implementation of the D front end does not make use of any
       GDC-specific extensions, or novel features of the D language, if
!      too old a GDC version is installed and '--enable-languages=d' is
       used, the build will fail.
  
!      On some targets, 'libphobos' isn't enabled by default, but compiles
!      and works if '--enable-libphobos' is used.  Specifics are
       documented for affected targets.
  
  GM2
  
       Python3 is required if you want to build the complete Modula-2
!      documentation including the target 'SYSTEM' definition module.  If
       Python3 is unavailable Modula-2 documentation will include a target
       independent version of the SYSTEM modules.
  
--- 223,243 ----
       guaranteed to work and will often fail during the build with
       compilation errors relating to deprecations or removed features.
  
!      Note that â€˜configureâ€™ does not test whether the GDC installation
       works and has a sufficiently recent version.  Though the
       implementation of the D front end does not make use of any
       GDC-specific extensions, or novel features of the D language, if
!      too old a GDC version is installed and â€˜--enable-languages=dâ€™ is
       used, the build will fail.
  
!      On some targets, â€˜libphobosâ€™ isn't enabled by default, but compiles
!      and works if â€˜--enable-libphobosâ€™ is used.  Specifics are
       documented for affected targets.
  
  GM2
  
       Python3 is required if you want to build the complete Modula-2
!      documentation including the target â€˜SYSTEMâ€™ definition module.  If
       Python3 is unavailable Modula-2 documentation will include a target
       independent version of the SYSTEM modules.
  
*************** gccrs
*** 250,267 ****
  
  A "working" POSIX compatible shell, or GNU bash
  
!      Necessary when running 'configure' because some '/bin/sh' shells
       have bugs and may crash when configuring the target libraries.  In
!      other cases, '/bin/sh' or 'ksh' have disastrous corner-case
!      performance problems.  This can cause target 'configure' runs to
       literally take days to complete in some cases.
  
!      So on some platforms '/bin/ksh' is sufficient, on others it isn't.
       See the host/target specific instructions for your platform, or use
!      'bash' to be sure.  Then set 'CONFIG_SHELL' in your environment to
!      your "good" shell prior to running 'configure'/'make'.
  
!      'zsh' is not a fully compliant POSIX shell and will not work when
       configuring GCC.
  
  GNU flex
--- 250,267 ----
  
  A "working" POSIX compatible shell, or GNU bash
  
!      Necessary when running â€˜configureâ€™ because some â€˜/bin/shâ€™ shells
       have bugs and may crash when configuring the target libraries.  In
!      other cases, â€˜/bin/shâ€™ or â€˜kshâ€™ have disastrous corner-case
!      performance problems.  This can cause target â€˜configureâ€™ runs to
       literally take days to complete in some cases.
  
!      So on some platforms â€˜/bin/kshâ€™ is sufficient, on others it isn't.
       See the host/target specific instructions for your platform, or use
!      â€˜bashâ€™ to be sure.  Then set â€˜CONFIG_SHELLâ€™ in your environment to
!      your "good" shell prior to running â€˜configureâ€™/â€˜makeâ€™.
  
!      â€˜zshâ€™ is not a fully compliant POSIX shell and will not work when
       configuring GCC.
  
  GNU flex
*************** GNU binutils
*** 285,291 ****
  gzip version 1.2.4 (or later) or
  bzip2 version 1.0.2 (or later)
  
!      Necessary to uncompress GCC 'tar' files when source code is
       obtained via HTTPS mirror sites.
  
  GNU make version 3.80 (or later)
--- 285,291 ----
  gzip version 1.2.4 (or later) or
  bzip2 version 1.0.2 (or later)
  
!      Necessary to uncompress GCC â€˜tarâ€™ files when source code is
       obtained via HTTPS mirror sites.
  
  GNU make version 3.80 (or later)
*************** GNU make version 3.80 (or later)
*** 295,319 ****
  GNU tar version 1.14 (or later)
  
       Necessary (only on some platforms) to untar the source code.  Many
!      systems' 'tar' programs will also work, only try GNU 'tar' if you
       have problems.
  
  Perl version 5.6.1 (or later)
  
!      Necessary when targeting Darwin, building 'libstdc++', and not
!      using '--disable-symvers'.  Necessary when targeting Solaris with
!      Solaris 'ld' and not using '--disable-symvers'.
  
!      Necessary when regenerating 'Makefile' dependencies in libiberty.
!      Necessary when regenerating 'libiberty/functions.texi'.  Necessary
       when generating manpages from Texinfo manuals.  Used by various
       scripts to generate some files included in the source repository
       (mainly Unicode-related and rarely changing) from source tables.
  
!      Used by 'automake'.
  
!      If available, enables parallel testing of 'libgomp' in case that
!      'flock' is not available.
  
     Several support libraries are necessary to build GCC, some are
  required, others optional.  While any sufficiently new version of
--- 295,319 ----
  GNU tar version 1.14 (or later)
  
       Necessary (only on some platforms) to untar the source code.  Many
!      systems' â€˜tarâ€™ programs will also work, only try GNU â€˜tarâ€™ if you
       have problems.
  
  Perl version 5.6.1 (or later)
  
!      Necessary when targeting Darwin, building â€˜libstdc++â€™, and not
!      using â€˜--disable-symversâ€™.  Necessary when targeting Solaris with
!      Solaris â€˜ldâ€™ and not using â€˜--disable-symversâ€™.
  
!      Necessary when regenerating â€˜Makefileâ€™ dependencies in libiberty.
!      Necessary when regenerating â€˜libiberty/functions.texiâ€™.  Necessary
       when generating manpages from Texinfo manuals.  Used by various
       scripts to generate some files included in the source repository
       (mainly Unicode-related and rarely changing) from source tables.
  
!      Used by â€˜automakeâ€™.
  
!      If available, enables parallel testing of â€˜libgompâ€™ in case that
!      â€˜flockâ€™ is not available.
  
     Several support libraries are necessary to build GCC, some are
  required, others optional.  While any sufficiently new version of
*************** GNU Multiple Precision Library (GMP) ver
*** 328,349 ****
  
       Necessary to build GCC.  It can be downloaded from
       <https://gmplib.org/>.  If a GMP source distribution is found in a
!      subdirectory of your GCC sources named 'gmp', it will be built
       together with GCC. Alternatively, if GMP is already installed but
       it is not in your library search path, you will have to configure
!      with the '--with-gmp' configure option.  See also '--with-gmp-lib'
!      and '--with-gmp-include'.  The in-tree build is only supported with
       the GMP version that download_prerequisites installs.
  
  MPFR Library version 3.1.0 (or later)
  
       Necessary to build GCC.  It can be downloaded from
       <https://www.mpfr.org>.  If an MPFR source distribution is found in
!      a subdirectory of your GCC sources named 'mpfr', it will be built
       together with GCC. Alternatively, if MPFR is already installed but
!      it is not in your default library search path, the '--with-mpfr'
!      configure option should be used.  See also '--with-mpfr-lib' and
!      '--with-mpfr-include'.  The in-tree build is only supported with
       the MPFR version that download_prerequisites installs.
  
  MPC Library version 1.0.1 (or later)
--- 328,349 ----
  
       Necessary to build GCC.  It can be downloaded from
       <https://gmplib.org/>.  If a GMP source distribution is found in a
!      subdirectory of your GCC sources named â€˜gmpâ€™, it will be built
       together with GCC. Alternatively, if GMP is already installed but
       it is not in your library search path, you will have to configure
!      with the â€˜--with-gmpâ€™ configure option.  See also â€˜--with-gmp-libâ€™
!      and â€˜--with-gmp-includeâ€™.  The in-tree build is only supported with
       the GMP version that download_prerequisites installs.
  
  MPFR Library version 3.1.0 (or later)
  
       Necessary to build GCC.  It can be downloaded from
       <https://www.mpfr.org>.  If an MPFR source distribution is found in
!      a subdirectory of your GCC sources named â€˜mpfrâ€™, it will be built
       together with GCC. Alternatively, if MPFR is already installed but
!      it is not in your default library search path, the â€˜--with-mpfrâ€™
!      configure option should be used.  See also â€˜--with-mpfr-libâ€™ and
!      â€˜--with-mpfr-includeâ€™.  The in-tree build is only supported with
       the MPFR version that download_prerequisites installs.
  
  MPC Library version 1.0.1 (or later)
*************** MPC Library version 1.0.1 (or later)
*** 351,360 ****
       Necessary to build GCC.  It can be downloaded from
       <https://www.multiprecision.org/mpc/>.  If an MPC source
       distribution is found in a subdirectory of your GCC sources named
!      'mpc', it will be built together with GCC. Alternatively, if MPC is
       already installed but it is not in your default library search
!      path, the '--with-mpc' configure option should be used.  See also
!      '--with-mpc-lib' and '--with-mpc-include'.  The in-tree build is
       only supported with the MPC version that download_prerequisites
       installs.
  
--- 351,360 ----
       Necessary to build GCC.  It can be downloaded from
       <https://www.multiprecision.org/mpc/>.  If an MPC source
       distribution is found in a subdirectory of your GCC sources named
!      â€˜mpcâ€™, it will be built together with GCC. Alternatively, if MPC is
       already installed but it is not in your default library search
!      path, the â€˜--with-mpcâ€™ configure option should be used.  See also
!      â€˜--with-mpc-libâ€™ and â€˜--with-mpc-includeâ€™.  The in-tree build is
       only supported with the MPC version that download_prerequisites
       installs.
  
*************** isl Library version 0.15 or later.
*** 364,378 ****
       can be downloaded from
       <https://gcc.gnu.org/pub/gcc/infrastructure/>.  If an isl source
       distribution is found in a subdirectory of your GCC sources named
!      'isl', it will be built together with GCC. Alternatively, the
!      '--with-isl' configure option should be used if isl is not
       installed in your default library search path.
  
  zstd Library.
  
       Necessary to build GCC with zstd compression used for LTO bytecode.
       The library is searched in your default library patch search.
!      Alternatively, the '--with-zstd' configure option should be used.
  
  Python3 modules
  
--- 364,378 ----
       can be downloaded from
       <https://gcc.gnu.org/pub/gcc/infrastructure/>.  If an isl source
       distribution is found in a subdirectory of your GCC sources named
!      â€˜islâ€™, it will be built together with GCC. Alternatively, the
!      â€˜--with-islâ€™ configure option should be used if isl is not
       installed in your default library search path.
  
  zstd Library.
  
       Necessary to build GCC with zstd compression used for LTO bytecode.
       The library is searched in your default library patch search.
!      Alternatively, the â€˜--with-zstdâ€™ configure option should be used.
  
  Python3 modules
  
*************** Python3 modules
*** 380,416 ****
       subcomponent is shown below:
  
       internal debugging in gdbhooks
!           'gdb', 'gdb.printing', 'gdb.types', 'os.path', 're', 'sys' and
!           'tempfile',
  
       g++ testsuite
!           'gcov', 'gzip', 'json', 'os' and 'pytest'.
  
       SARIF testsuite
!           Tests of SARIF output will use the 'check-jsonschema' program
!           from the 'check-jsonschema' module (if available) to validate
            generated .sarif files.  If this tool is not found, the
            validation parts of those tests are skipped.
  
       c++ cxx api generation
!           'csv', 'os', 'sys' and 'time'.
  
       modula-2 documentation
!           'argparse', 'os', 'pathlib', 'shutil' and 'sys'.
  
       git developer tools
!           'os' and 'sys'.
  
       ada documentation
!           'latex_elements', 'os', 'pygments', 're', 'sys' and 'time'.
  
  GNU gettext
  
       Necessary to build GCC with internationalization support via
!      '--enable-nls'.  It can be downloaded from
       <https://www.gnu.org/software/gettext/>.  If a GNU gettext
       distribution is found in a subdirectory of your GCC sources named
!      'gettext', it will be built together with GCC, unless present in
       the system (either in libc or as a stand-alone library).
  
       The in-tree configuration requires GNU gettext version 0.22 or
--- 380,416 ----
       subcomponent is shown below:
  
       internal debugging in gdbhooks
!           â€˜gdbâ€™, â€˜gdb.printingâ€™, â€˜gdb.typesâ€™, â€˜os.pathâ€™, â€˜reâ€™, â€˜sysâ€™ and
!           â€˜tempfileâ€™,
  
       g++ testsuite
!           â€˜gcovâ€™, â€˜gzipâ€™, â€˜jsonâ€™, â€˜osâ€™ and â€˜pytestâ€™.
  
       SARIF testsuite
!           Tests of SARIF output will use the â€˜check-jsonschemaâ€™ program
!           from the â€˜check-jsonschemaâ€™ module (if available) to validate
            generated .sarif files.  If this tool is not found, the
            validation parts of those tests are skipped.
  
       c++ cxx api generation
!           â€˜csvâ€™, â€˜osâ€™, â€˜sysâ€™ and â€˜timeâ€™.
  
       modula-2 documentation
!           â€˜argparseâ€™, â€˜osâ€™, â€˜pathlibâ€™, â€˜shutilâ€™ and â€˜sysâ€™.
  
       git developer tools
!           â€˜osâ€™ and â€˜sysâ€™.
  
       ada documentation
!           â€˜latex_elementsâ€™, â€˜osâ€™, â€˜pygmentsâ€™, â€˜reâ€™, â€˜sysâ€™ and â€˜timeâ€™.
  
  GNU gettext
  
       Necessary to build GCC with internationalization support via
!      â€˜--enable-nlsâ€™.  It can be downloaded from
       <https://www.gnu.org/software/gettext/>.  If a GNU gettext
       distribution is found in a subdirectory of your GCC sources named
!      â€˜gettextâ€™, it will be built together with GCC, unless present in
       the system (either in libc or as a stand-alone library).
  
       The in-tree configuration requires GNU gettext version 0.22 or
*************** Tools/packages necessary for modifying G
*** 422,438 ****
  autoconf version 2.69
  GNU m4 version 1.4.6 (or later)
  
!      Necessary when modifying 'configure.ac', 'aclocal.m4', etc. to
!      regenerate 'configure' and 'config.in' files.
  
  automake version 1.15.1
  
!      Necessary when modifying a 'Makefile.am' file to regenerate its
!      associated 'Makefile.in'.
  
       Much of GCC does not use automake, so directly edit the
!      'Makefile.in' file.  Specifically this applies to the 'gcc',
!      'intl', 'libcpp', 'libiberty', 'libobjc' directories as well as any
       of their subdirectories.
  
       For directories that use automake, GCC requires the latest release
--- 422,438 ----
  autoconf version 2.69
  GNU m4 version 1.4.6 (or later)
  
!      Necessary when modifying â€˜configure.acâ€™, â€˜aclocal.m4â€™, etc. to
!      regenerate â€˜configureâ€™ and â€˜config.inâ€™ files.
  
  automake version 1.15.1
  
!      Necessary when modifying a â€˜Makefile.amâ€™ file to regenerate its
!      associated â€˜Makefile.inâ€™.
  
       Much of GCC does not use automake, so directly edit the
!      â€˜Makefile.inâ€™ file.  Specifically this applies to the â€˜gccâ€™,
!      â€˜intlâ€™, â€˜libcppâ€™, â€˜libibertyâ€™, â€˜libobjcâ€™ directories as well as any
       of their subdirectories.
  
       For directories that use automake, GCC requires the latest release
*************** automake version 1.15.1
*** 442,454 ****
  
  gettext version 0.14.5 (or later)
  
!      Needed to regenerate 'gcc.pot'.
  
  gperf version 2.7.2 (or later)
  
!      Necessary when modifying 'gperf' input files, e.g.
!      'gcc/cp/cfns.gperf' to regenerate its associated header file, e.g.
!      'gcc/cp/cfns.h'.
  
  DejaGnu version 1.5.3 (or later)
  Expect
--- 442,454 ----
  
  gettext version 0.14.5 (or later)
  
!      Needed to regenerate â€˜gcc.potâ€™.
  
  gperf version 2.7.2 (or later)
  
!      Necessary when modifying â€˜gperfâ€™ input files, e.g.
!      â€˜gcc/cp/cfns.gperfâ€™ to regenerate its associated header file, e.g.
!      â€˜gcc/cp/cfns.hâ€™.
  
  DejaGnu version 1.5.3 (or later)
  Expect
*************** Tcl
*** 460,478 ****
  autogen version 5.5.4 (or later) and
  guile version 1.4.1 (or later)
  
!      Necessary to regenerate 'fixinc/fixincl.x' from
!      'fixinc/inclhack.def' and 'fixinc/*.tpl'.
  
!      Necessary to run 'make check' for 'fixinc'.
  
!      Necessary to regenerate the top level 'Makefile.in' file from
!      'Makefile.tpl' and 'Makefile.def'.
  
!      Necessary to regenerate the 'bits/version.h' header for libstdc++.
  
  Flex version 2.5.4 (or later)
  
!      Necessary when modifying '*.l' files.
  
       Necessary to build GCC during development because the generated
       output files are not included in the version-controlled source
--- 460,478 ----
  autogen version 5.5.4 (or later) and
  guile version 1.4.1 (or later)
  
!      Necessary to regenerate â€˜fixinc/fixincl.xâ€™ from
!      â€˜fixinc/inclhack.defâ€™ and â€˜fixinc/*.tplâ€™.
  
!      Necessary to run â€˜make checkâ€™ for â€˜fixincâ€™.
  
!      Necessary to regenerate the top level â€˜Makefile.inâ€™ file from
!      â€˜Makefile.tplâ€™ and â€˜Makefile.defâ€™.
  
!      Necessary to regenerate the â€˜bits/version.hâ€™ header for libstdc++.
  
  Flex version 2.5.4 (or later)
  
!      Necessary when modifying â€˜*.lâ€™ files.
  
       Necessary to build GCC during development because the generated
       output files are not included in the version-controlled source
*************** Flex version 2.5.4 (or later)
*** 480,486 ****
  
  Bison version 3.5.1 or later (but not 3.8.0)
  
!      Necessary when modifying '*.y' files in the COBOL front end.
  
       Necessary to build GCC during development because the generated
       output files are not included in the version-controlled source
--- 480,486 ----
  
  Bison version 3.5.1 or later (but not 3.8.0)
  
!      Necessary when modifying â€˜*.yâ€™ files in the COBOL front end.
  
       Necessary to build GCC during development because the generated
       output files are not included in the version-controlled source
*************** Bison version 3.5.1 or later (but not 3.
*** 488,499 ****
  
  Texinfo version 4.7 (or later)
  
!      Necessary for running 'makeinfo' when modifying '*.texi' files to
       test your changes.
  
!      Necessary for running 'make dvi', 'make pdf', or 'make html' to
       create formatted documentation.  Texinfo version 4.8 or later is
!      required for 'make pdf'.
  
       Necessary to build GCC documentation in info format during
       development because the generated output files are not included in
--- 488,499 ----
  
  Texinfo version 4.7 (or later)
  
!      Necessary for running â€˜makeinfoâ€™ when modifying â€˜*.texiâ€™ files to
       test your changes.
  
!      Necessary for running â€˜make dviâ€™, â€˜make pdfâ€™, or â€˜make htmlâ€™ to
       create formatted documentation.  Texinfo version 4.8 or later is
!      required for â€˜make pdfâ€™.
  
       Necessary to build GCC documentation in info format during
       development because the generated output files are not included in
*************** Texinfo version 4.7 (or later)
*** 509,522 ****
  
  TeX (any working version)
  
!      Necessary for running 'texi2dvi' and 'texi2pdf', which are used
!      when running 'make dvi' or 'make pdf' to create DVI or PDF files,
       respectively.
  
  Sphinx version 1.0 (or later)
  
!      Necessary to regenerate 'jit/docs/_build/texinfo' from the '.rst'
!      files in the directories below 'jit/docs'.
  
  git (any version)
  SSH (any version)
--- 509,522 ----
  
  TeX (any working version)
  
!      Necessary for running â€˜texi2dviâ€™ and â€˜texi2pdfâ€™, which are used
!      when running â€˜make dviâ€™ or â€˜make pdfâ€™ to create DVI or PDF files,
       respectively.
  
  Sphinx version 1.0 (or later)
  
!      Necessary to regenerate â€˜jit/docs/_build/texinfoâ€™ from the â€˜.rstâ€™
!      files in the directories below â€˜jit/docsâ€™.
  
  git (any version)
  SSH (any version)
*************** GNU diffutils version 2.7 (or later)
*** 531,537 ****
  
  patch version 2.5.4 (or later)
  
!      Necessary when applying patches, created with 'diff', to one's own
       sources.
  
  
--- 531,537 ----
  
  patch version 2.5.4 (or later)
  
!      Necessary when applying patches, created with â€˜diffâ€™, to one's own
       sources.
  
  
*************** File: gccinstall.info,  Node: Downloadin
*** 541,547 ****
  *****************
  
  GCC is distributed via git and via HTTPS as tarballs compressed with
! 'gzip' or 'bzip2'.
  
     Please refer to the releases web page for information on how to
  obtain GCC.
--- 541,547 ----
  *****************
  
  GCC is distributed via git and via HTTPS as tarballs compressed with
! â€˜gzipâ€™ or â€˜bzip2â€™.
  
     Please refer to the releases web page for information on how to
  obtain GCC.
*************** language runtime (where appropriate).
*** 559,574 ****
  installation or for use in place of the corresponding tools of your OS),
  unpack the binutils distribution either in the same directory or a
  separate one.  In the latter case, add symbolic links to any components
! of the binutils you intend to build alongside the compiler ('bfd',
! 'binutils', 'gas', 'gprof', 'ld', 'opcodes', ...) to the directory
  containing the GCC sources.
  
     Likewise the GMP, MPFR, MPC and Gettext libraries can be
  automatically built together with GCC. You may simply run the
! 'contrib/download_prerequisites' script in the GCC source directory to
  set up everything.  Otherwise unpack the GMP, MPFR, MPC and/or Gettext
  source distributions in the directory containing the GCC sources and
! rename their directories to 'gmp', 'mpfr', 'mpc' and 'gettext',
  respectively (or use symbolic links with the same name).
  
  
--- 559,574 ----
  installation or for use in place of the corresponding tools of your OS),
  unpack the binutils distribution either in the same directory or a
  separate one.  In the latter case, add symbolic links to any components
! of the binutils you intend to build alongside the compiler (â€˜bfdâ€™,
! â€˜binutilsâ€™, â€˜gasâ€™, â€˜gprofâ€™, â€˜ldâ€™, â€˜opcodesâ€™, ...) to the directory
  containing the GCC sources.
  
     Likewise the GMP, MPFR, MPC and Gettext libraries can be
  automatically built together with GCC. You may simply run the
! â€˜contrib/download_prerequisitesâ€™ script in the GCC source directory to
  set up everything.  Otherwise unpack the GMP, MPFR, MPC and/or Gettext
  source distributions in the directory containing the GCC sources and
! rename their directories to â€˜gmpâ€™, â€˜mpfrâ€™, â€˜mpcâ€™ and â€˜gettextâ€™,
  respectively (or use symbolic links with the same name).
  
  
*************** native and cross targets.
*** 585,599 ****
  use OBJDIR to refer to the toplevel build/object directory.
  
     If you obtained the sources by cloning the repository, SRCDIR must
! refer to the top 'gcc' directory, the one where the 'MAINTAINERS' file
! can be found, and not its 'gcc' subdirectory, otherwise the build will
  fail.
  
     If either SRCDIR or OBJDIR is located on an automounted NFS file
! system, the shell's built-in 'pwd' command will return temporary
  pathnames.  Using these can lead to various sorts of build problems.  To
! avoid this issue, set the 'PWDCMD' environment variable to an
! automounter-aware 'pwd' command, e.g., 'pawd' or 'amq -w', during the
  configuration and build phases.
  
     First, we *highly* recommend that GCC be built into a separate
--- 585,599 ----
  use OBJDIR to refer to the toplevel build/object directory.
  
     If you obtained the sources by cloning the repository, SRCDIR must
! refer to the top â€˜gccâ€™ directory, the one where the â€˜MAINTAINERSâ€™ file
! can be found, and not its â€˜gccâ€™ subdirectory, otherwise the build will
  fail.
  
     If either SRCDIR or OBJDIR is located on an automounted NFS file
! system, the shell's built-in â€˜pwdâ€™ command will return temporary
  pathnames.  Using these can lead to various sorts of build problems.  To
! avoid this issue, set the â€˜PWDCMDâ€™ environment variable to an
! automounter-aware â€˜pwdâ€™ command, e.g., â€˜pawdâ€™ or â€˜amq -wâ€™, during the
  configuration and build phases.
  
     First, we *highly* recommend that GCC be built into a separate
*************** subdirectory of SRCDIR should work as we
*** 603,618 ****
  SRCDIR is unsupported.
  
     If you have previously built GCC in the same directory for a
! different target machine, do 'make distclean' to delete all files that
! might be invalid.  One of the files this deletes is 'Makefile'; if 'make
! distclean' complains that 'Makefile' does not exist or issues a message
  like "don't know how to make distclean" it probably means that the
  directory is already suitably clean.  However, with the recommended
  method of building in a separate OBJDIR, you should simply use a
  different OBJDIR for each target.
  
!    Second, when configuring a native system, either 'cc' or 'gcc' must
! be in your path or you must set 'CC' in your environment before running
  configure.  Otherwise the configuration scripts may fail.
  
     To configure GCC:
--- 603,618 ----
  SRCDIR is unsupported.
  
     If you have previously built GCC in the same directory for a
! different target machine, do â€˜make distcleanâ€™ to delete all files that
! might be invalid.  One of the files this deletes is â€˜Makefileâ€™; if â€˜make
! distcleanâ€™ complains that â€˜Makefileâ€™ does not exist or issues a message
  like "don't know how to make distclean" it probably means that the
  directory is already suitably clean.  However, with the recommended
  method of building in a separate OBJDIR, you should simply use a
  different OBJDIR for each target.
  
!    Second, when configuring a native system, either â€˜ccâ€™ or â€˜gccâ€™ must
! be in your path or you must set â€˜CCâ€™ in your environment before running
  configure.  Otherwise the configuration scripts may fail.
  
     To configure GCC:
*************** If you will be distributing binary versi
*** 628,642 ****
  to the source code, you should use the options described in this section
  to make clear that your version contains modifications.
  
! '--with-pkgversion=VERSION'
       Specify a string that identifies your package.  You may wish to
       include a build number or build date.  This version string will be
!      included in the output of 'gcc --version'.  This suffix does not
!      replace the default version string, only the 'GCC' part.
  
!      The default value is 'GCC'.
  
! '--with-bugurl=URL'
       Specify the URL that users should visit if they wish to report a
       bug.  You are of course welcome to forward bugs reported to you to
       the FSF, if you determine that they are not bugs in your
--- 628,642 ----
  to the source code, you should use the options described in this section
  to make clear that your version contains modifications.
  
! â€˜--with-pkgversion=VERSIONâ€™
       Specify a string that identifies your package.  You may wish to
       include a build number or build date.  This version string will be
!      included in the output of â€˜gcc --versionâ€™.  This suffix does not
!      replace the default version string, only the â€˜GCCâ€™ part.
  
!      The default value is â€˜GCCâ€™.
  
! â€˜--with-bugurl=URLâ€™
       Specify the URL that users should visit if they wish to report a
       bug.  You are of course welcome to forward bugs reported to you to
       the FSF, if you determine that they are not bugs in your
*************** to make clear that your version contains
*** 644,661 ****
  
       The default value refers to the FSF's GCC bug tracker.
  
! '--with-documentation-root-url=URL'
       Specify the URL root that contains GCC option documentation.  The
!      URL should end with a '/' character.
  
       The default value is https://gcc.gnu.org/onlinedocs/ on the GCC
       main development trunk.  On release branches, the default is
!      'https://gcc.gnu.org/onlinedocs/gcc-MAJOR.MINOR.0/'.
  
! '--with-changes-root-url=URL'
       Specify the URL root that contains information about changes in GCC
!      releases like 'gcc-VERSION/changes.html'.  The URL should end with
!      a '/' character.
  
       The default value is https://gcc.gnu.org/.
  
--- 644,661 ----
  
       The default value refers to the FSF's GCC bug tracker.
  
! â€˜--with-documentation-root-url=URLâ€™
       Specify the URL root that contains GCC option documentation.  The
!      URL should end with a â€˜/â€™ character.
  
       The default value is https://gcc.gnu.org/onlinedocs/ on the GCC
       main development trunk.  On release branches, the default is
!      â€˜https://gcc.gnu.org/onlinedocs/gcc-MAJOR.MINOR.0/â€™.
  
! â€˜--with-changes-root-url=URLâ€™
       Specify the URL root that contains information about changes in GCC
!      releases like â€˜gcc-VERSION/changes.htmlâ€™.  The URL should end with
!      a â€˜/â€™ character.
  
       The default value is https://gcc.gnu.org/.
  
*************** Host, Build and Target specification
*** 663,685 ****
  ====================================
  
  Specify the host, build and target machine configurations.  You do this
! when you run the 'configure' script.
  
!    The "build" machine is the system which you are using, the "host"
  machine is the system where you want to run the resulting compiler
! (normally the build machine), and the "target" machine is the system for
  which you want the compiler to generate code.
  
     If you are building a compiler to produce code for the machine it
  runs on (a native compiler), you normally do not need to specify any
! operands to 'configure'; it will try to guess the type of machine you
  are on and use that as the build, host and target machines.  So you
  don't need to specify a configuration when building a native compiler
! unless 'configure' cannot figure out what your configuration is or
  guesses wrong.
  
!    In those cases, specify the build machine's "configuration name" with
! the '--host' option; the host and target will default to be the same as
  the host machine.
  
     Here is an example:
--- 663,685 ----
  ====================================
  
  Specify the host, build and target machine configurations.  You do this
! when you run the â€˜configureâ€™ script.
  
!    The â€œbuildâ€� machine is the system which you are using, the â€œhostâ€�
  machine is the system where you want to run the resulting compiler
! (normally the build machine), and the â€œtargetâ€� machine is the system for
  which you want the compiler to generate code.
  
     If you are building a compiler to produce code for the machine it
  runs on (a native compiler), you normally do not need to specify any
! operands to â€˜configureâ€™; it will try to guess the type of machine you
  are on and use that as the build, host and target machines.  So you
  don't need to specify a configuration when building a native compiler
! unless â€˜configureâ€™ cannot figure out what your configuration is or
  guesses wrong.
  
!    In those cases, specify the build machine's â€œconfiguration nameâ€� with
! the â€˜--hostâ€™ option; the host and target will default to be the same as
  the host machine.
  
     Here is an example:
*************** the host machine.
*** 687,696 ****
       ./configure --host=x86_64-pc-linux-gnu
  
     A configuration name may be canonical or it may be more or less
! abbreviated ('config.sub' script produces canonical versions).
  
     A canonical configuration name has three parts, separated by dashes.
! It looks like this: 'CPU-COMPANY-SYSTEM'.
  
     Here are the possible CPU types:
  
--- 687,696 ----
       ./configure --host=x86_64-pc-linux-gnu
  
     A configuration name may be canonical or it may be more or less
! abbreviated (â€˜config.subâ€™ script produces canonical versions).
  
     A canonical configuration name has three parts, separated by dashes.
! It looks like this: â€˜CPU-COMPANY-SYSTEMâ€™.
  
     Here are the possible CPU types:
  
*************** Options specification
*** 722,839 ****
  =====================
  
  Use OPTIONS to override several configure time options for GCC.  A list
! of supported OPTIONS follows; 'configure --help' may list other options,
  but those not listed below may not work and should not normally be used.
  
!    Note that each '--enable' option has a corresponding '--disable'
! option and that each '--with' option has a corresponding '--without'
  option.
  
! '--prefix=DIRNAME'
       Specify the toplevel installation directory.  This is the
       recommended way to install the tools into a directory other than
       the default.  The toplevel installation directory defaults to
!      '/usr/local'.
  
       We *highly* recommend against DIRNAME being the same or a
       subdirectory of OBJDIR or vice versa.  If specifying a directory
       beneath a user's home directory tree, some shells will not expand
!      DIRNAME correctly if it contains the '~' metacharacter; use '$HOME'
       instead.
  
!      The following standard 'autoconf' options are supported.  Normally
       you should not need to use these options.
!      '--exec-prefix=DIRNAME'
            Specify the toplevel installation directory for
!           architecture-dependent files.  The default is 'PREFIX'.
  
!      '--bindir=DIRNAME'
            Specify the installation directory for the executables called
!           by users (such as 'gcc' and 'g++').  The default is
!           'EXEC-PREFIX/bin'.
  
!      '--libdir=DIRNAME'
            Specify the installation directory for object code libraries
            and internal data files of GCC.  The default is
!           'EXEC-PREFIX/lib'.
  
!      '--libexecdir=DIRNAME'
            Specify the installation directory for internal executables of
!           GCC.  The default is 'EXEC-PREFIX/libexec'.
  
!      '--with-slibdir=DIRNAME'
            Specify the installation directory for the shared libgcc
!           library.  The default is 'LIBDIR'.
  
!      '--datarootdir=DIRNAME'
            Specify the root of the directory tree for read-only
            architecture-independent data files referenced by GCC.  The
!           default is 'PREFIX/share'.
  
!      '--infodir=DIRNAME'
            Specify the installation directory for documentation in info
!           format.  The default is 'DATAROOTDIR/info'.
  
!      '--datadir=DIRNAME'
            Specify the installation directory for some
            architecture-independent data files referenced by GCC.  The
!           default is 'DATAROOTDIR'.
  
!      '--docdir=DIRNAME'
            Specify the installation directory for documentation files
!           (other than Info) for GCC.  The default is 'DATAROOTDIR/doc'.
  
!      '--htmldir=DIRNAME'
            Specify the installation directory for HTML documentation
!           files.  The default is 'DOCDIR'.
  
!      '--pdfdir=DIRNAME'
            Specify the installation directory for PDF documentation
!           files.  The default is 'DOCDIR'.
  
!      '--mandir=DIRNAME'
            Specify the installation directory for manual pages.  The
!           default is 'DATAROOTDIR/man'.  (Note that the manual pages are
            only extracts from the full GCC manuals, which are provided in
            Texinfo format.  The manpages are derived by an automatic
            conversion process from parts of the full manual.)
  
!      '--with-gxx-include-dir=DIRNAME'
            Specify the installation directory for G++ header files.  The
            default depends on other configuration options, and differs
            between cross and native configurations.
  
!      '--with-specs=SPECS'
            Specify additional command line driver SPECS. This can be
            useful if you need to turn on a non-standard feature by
            default without modifying the compiler's source code, for
            instance
!           '--with-specs=%{!fcommon:%{!fno-common:-fno-common}}'.  *Note
            Specifying subprocesses and the switches to pass to them:
            (gcc)Spec Files,
  
! '--program-prefix=PREFIX'
       GCC supports some transformations of the names of its programs when
       installing them.  This option prepends PREFIX to the names of
       programs to install in BINDIR (see above).  For example, specifying
!      '--program-prefix=foo-' would result in 'gcc' being installed as
!      '/usr/local/bin/foo-gcc'.
  
! '--program-suffix=SUFFIX'
       Appends SUFFIX to the names of programs to install in BINDIR (see
!      above).  For example, specifying '--program-suffix=-3.1' would
!      result in 'gcc' being installed as '/usr/local/bin/gcc-3.1'.
  
! '--program-transform-name=PATTERN'
!      Applies the 'sed' script PATTERN to be applied to the names of
       programs to install in BINDIR (see above).  PATTERN has to consist
!      of one or more basic 'sed' editing commands, separated by
!      semicolons.  For example, if you want the 'gcc' program name to be
!      transformed to the installed program '/usr/local/bin/myowngcc' and
!      the 'g++' program name to be transformed to
!      '/usr/local/bin/gspecial++' without changing other program names,
       you could use the pattern
!      '--program-transform-name='s/^gcc$/myowngcc/; s/^g++$/gspecial++/''
       to achieve this effect.
  
       All three options can be combined and used together, resulting in
--- 722,839 ----
  =====================
  
  Use OPTIONS to override several configure time options for GCC.  A list
! of supported OPTIONS follows; â€˜configure --helpâ€™ may list other options,
  but those not listed below may not work and should not normally be used.
  
!    Note that each â€˜--enableâ€™ option has a corresponding â€˜--disableâ€™
! option and that each â€˜--withâ€™ option has a corresponding â€˜--withoutâ€™
  option.
  
! â€˜--prefix=DIRNAMEâ€™
       Specify the toplevel installation directory.  This is the
       recommended way to install the tools into a directory other than
       the default.  The toplevel installation directory defaults to
!      â€˜/usr/localâ€™.
  
       We *highly* recommend against DIRNAME being the same or a
       subdirectory of OBJDIR or vice versa.  If specifying a directory
       beneath a user's home directory tree, some shells will not expand
!      DIRNAME correctly if it contains the â€˜~â€™ metacharacter; use â€˜$HOMEâ€™
       instead.
  
!      The following standard â€˜autoconfâ€™ options are supported.  Normally
       you should not need to use these options.
!      â€˜--exec-prefix=DIRNAMEâ€™
            Specify the toplevel installation directory for
!           architecture-dependent files.  The default is â€˜PREFIXâ€™.
  
!      â€˜--bindir=DIRNAMEâ€™
            Specify the installation directory for the executables called
!           by users (such as â€˜gccâ€™ and â€˜g++â€™).  The default is
!           â€˜EXEC-PREFIX/binâ€™.
  
!      â€˜--libdir=DIRNAMEâ€™
            Specify the installation directory for object code libraries
            and internal data files of GCC.  The default is
!           â€˜EXEC-PREFIX/libâ€™.
  
!      â€˜--libexecdir=DIRNAMEâ€™
            Specify the installation directory for internal executables of
!           GCC.  The default is â€˜EXEC-PREFIX/libexecâ€™.
  
!      â€˜--with-slibdir=DIRNAMEâ€™
            Specify the installation directory for the shared libgcc
!           library.  The default is â€˜LIBDIRâ€™.
  
!      â€˜--datarootdir=DIRNAMEâ€™
            Specify the root of the directory tree for read-only
            architecture-independent data files referenced by GCC.  The
!           default is â€˜PREFIX/shareâ€™.
  
!      â€˜--infodir=DIRNAMEâ€™
            Specify the installation directory for documentation in info
!           format.  The default is â€˜DATAROOTDIR/infoâ€™.
  
!      â€˜--datadir=DIRNAMEâ€™
            Specify the installation directory for some
            architecture-independent data files referenced by GCC.  The
!           default is â€˜DATAROOTDIRâ€™.
  
!      â€˜--docdir=DIRNAMEâ€™
            Specify the installation directory for documentation files
!           (other than Info) for GCC.  The default is â€˜DATAROOTDIR/docâ€™.
  
!      â€˜--htmldir=DIRNAMEâ€™
            Specify the installation directory for HTML documentation
!           files.  The default is â€˜DOCDIRâ€™.
  
!      â€˜--pdfdir=DIRNAMEâ€™
            Specify the installation directory for PDF documentation
!           files.  The default is â€˜DOCDIRâ€™.
  
!      â€˜--mandir=DIRNAMEâ€™
            Specify the installation directory for manual pages.  The
!           default is â€˜DATAROOTDIR/manâ€™.  (Note that the manual pages are
            only extracts from the full GCC manuals, which are provided in
            Texinfo format.  The manpages are derived by an automatic
            conversion process from parts of the full manual.)
  
!      â€˜--with-gxx-include-dir=DIRNAMEâ€™
            Specify the installation directory for G++ header files.  The
            default depends on other configuration options, and differs
            between cross and native configurations.
  
!      â€˜--with-specs=SPECSâ€™
            Specify additional command line driver SPECS. This can be
            useful if you need to turn on a non-standard feature by
            default without modifying the compiler's source code, for
            instance
!           â€˜--with-specs=%{!fcommon:%{!fno-common:-fno-common}}â€™.  *Note
            Specifying subprocesses and the switches to pass to them:
            (gcc)Spec Files,
  
! â€˜--program-prefix=PREFIXâ€™
       GCC supports some transformations of the names of its programs when
       installing them.  This option prepends PREFIX to the names of
       programs to install in BINDIR (see above).  For example, specifying
!      â€˜--program-prefix=foo-â€™ would result in â€˜gccâ€™ being installed as
!      â€˜/usr/local/bin/foo-gccâ€™.
  
! â€˜--program-suffix=SUFFIXâ€™
       Appends SUFFIX to the names of programs to install in BINDIR (see
!      above).  For example, specifying â€˜--program-suffix=-3.1â€™ would
!      result in â€˜gccâ€™ being installed as â€˜/usr/local/bin/gcc-3.1â€™.
  
! â€˜--program-transform-name=PATTERNâ€™
!      Applies the â€˜sedâ€™ script PATTERN to be applied to the names of
       programs to install in BINDIR (see above).  PATTERN has to consist
!      of one or more basic â€˜sedâ€™ editing commands, separated by
!      semicolons.  For example, if you want the â€˜gccâ€™ program name to be
!      transformed to the installed program â€˜/usr/local/bin/myowngccâ€™ and
!      the â€˜g++â€™ program name to be transformed to
!      â€˜/usr/local/bin/gspecial++â€™ without changing other program names,
       you could use the pattern
!      â€˜--program-transform-name='s/^gcc$/myowngcc/; s/^g++$/gspecial++/'â€™
       to achieve this effect.
  
       All three options can be combined and used together, resulting in
*************** option.
*** 848,882 ****
  
       For native builds, some of the installed programs are also
       installed with the target alias in front of their name, as in
!      'i686-pc-linux-gnu-gcc'.  All of the above transformations happen
       before the target alias is prepended to the name--so, specifying
!      '--program-prefix=foo-' and 'program-suffix=-3.1', the resulting
       binary would be installed as
!      '/usr/local/bin/i686-pc-linux-gnu-foo-gcc-3.1'.
  
       As a last shortcoming, none of the installed Ada programs are
       transformed yet, which will be fixed in some time.
  
! '--with-local-prefix=DIRNAME'
       Specify the installation directory for local include files.  The
!      default is '/usr/local'.  Specify this option if you want the
!      compiler to search directory 'DIRNAME/include' for locally
!      installed header files _instead_ of '/usr/local/include'.
  
!      You should specify '--with-local-prefix' *only* if your site has a
!      different convention (not '/usr/local') for where to put
       site-specific files.
  
!      The default value for '--with-local-prefix' is '/usr/local'
!      regardless of the value of '--prefix'.  Specifying '--prefix' has
       no effect on which directory GCC searches for local header files.
       This may seem counterintuitive, but actually it is logical.
  
!      The purpose of '--prefix' is to specify where to _install GCC_. The
!      local header files in '/usr/local/include'--if you put any in that
       directory--are not part of GCC.  They are part of other
       programs--perhaps many others.  (GCC installs its own header files
!      in another directory which is based on the '--prefix' value.)
  
       Both the local-prefix include directory and the GCC-prefix include
       directory are part of GCC's "system include" directories.  Although
--- 848,882 ----
  
       For native builds, some of the installed programs are also
       installed with the target alias in front of their name, as in
!      â€˜i686-pc-linux-gnu-gccâ€™.  All of the above transformations happen
       before the target alias is prepended to the name--so, specifying
!      â€˜--program-prefix=foo-â€™ and â€˜program-suffix=-3.1â€™, the resulting
       binary would be installed as
!      â€˜/usr/local/bin/i686-pc-linux-gnu-foo-gcc-3.1â€™.
  
       As a last shortcoming, none of the installed Ada programs are
       transformed yet, which will be fixed in some time.
  
! â€˜--with-local-prefix=DIRNAMEâ€™
       Specify the installation directory for local include files.  The
!      default is â€˜/usr/localâ€™.  Specify this option if you want the
!      compiler to search directory â€˜DIRNAME/includeâ€™ for locally
!      installed header files _instead_ of â€˜/usr/local/includeâ€™.
  
!      You should specify â€˜--with-local-prefixâ€™ *only* if your site has a
!      different convention (not â€˜/usr/localâ€™) for where to put
       site-specific files.
  
!      The default value for â€˜--with-local-prefixâ€™ is â€˜/usr/localâ€™
!      regardless of the value of â€˜--prefixâ€™.  Specifying â€˜--prefixâ€™ has
       no effect on which directory GCC searches for local header files.
       This may seem counterintuitive, but actually it is logical.
  
!      The purpose of â€˜--prefixâ€™ is to specify where to _install GCC_. The
!      local header files in â€˜/usr/local/includeâ€™--if you put any in that
       directory--are not part of GCC.  They are part of other
       programs--perhaps many others.  (GCC installs its own header files
!      in another directory which is based on the â€˜--prefixâ€™ value.)
  
       Both the local-prefix include directory and the GCC-prefix include
       directory are part of GCC's "system include" directories.  Although
*************** option.
*** 887,893 ****
       include directories is that pedantic warnings are turned off for
       headers in these directories.
  
!      Some autoconf macros add '-I DIRECTORY' options to the compiler
       command line, to ensure that directories containing installed
       packages' headers are searched.  When DIRECTORY is one of GCC's
       system include directories, GCC will ignore the option so that
--- 887,893 ----
       include directories is that pedantic warnings are turned off for
       headers in these directories.
  
!      Some autoconf macros add â€˜-I DIRECTORYâ€™ options to the compiler
       command line, to ensure that directories containing installed
       packages' headers are searched.  When DIRECTORY is one of GCC's
       system include directories, GCC will ignore the option so that
*************** option.
*** 896,946 ****
       but the directory will still be searched.
  
       GCC automatically searches for ordinary libraries using
!      'GCC_EXEC_PREFIX'.  Thus, when the same installation prefix is used
       for both GCC and packages, GCC will automatically search for both
       headers and libraries.  This provides a configuration that is easy
       to use.  GCC behaves in a manner similar to that when it is
!      installed as a system compiler in '/usr'.
  
       Sites that need to install multiple versions of GCC may not want to
       use the above simple configuration.  It is possible to use the
!      '--program-prefix', '--program-suffix' and
!      '--program-transform-name' options to install multiple versions
       into a single directory, but it may be simpler to use different
!      prefixes and the '--with-local-prefix' option to specify the
       location of the site-specific files for each version.  It will then
       be necessary for users to specify explicitly the location of local
!      site libraries (e.g., with 'LIBRARY_PATH').
  
!      The same value can be used for both '--with-local-prefix' and
!      '--prefix' provided it is not '/usr'.  This can be used to avoid
!      the default search of '/usr/local/include'.
  
!      *Do not* specify '/usr' as the '--with-local-prefix'!  The
!      directory you use for '--with-local-prefix' *must not* contain any
       of the system's standard header files.  If it did contain them,
       certain programs would be miscompiled (including GNU Emacs, on
       certain targets), because this would override and nullify the
!      header file corrections made by the 'fixincludes' script.
  
       Indications are that people who use this option use it based on
       mistaken ideas of what it is for.  People use it as if it specified
       where to install part of GCC.  Perhaps they make this assumption
       because installing GCC creates the directory.
  
! '--with-gcc-major-version-only'
       Specifies that GCC should use only the major number rather than
       MAJOR.MINOR.PATCHLEVEL in filesystem paths.
  
! '--with-native-system-header-dir=DIRNAME'
       Specifies that DIRNAME is the directory that contains native system
!      header files, rather than '/usr/include'.  This option is most
       useful if you are creating a compiler that should be isolated from
       the system as much as possible.  It is most commonly used with the
!      '--with-sysroot' option and will cause GCC to search DIRNAME inside
       the system root specified by that option.
  
! '--enable-shared[=PACKAGE[,...]]'
       Build shared versions of libraries, if shared libraries are
       supported on the target platform.  Unlike GCC 2.95.x and earlier,
       shared libraries are enabled by default on all platforms that
--- 896,946 ----
       but the directory will still be searched.
  
       GCC automatically searches for ordinary libraries using
!      â€˜GCC_EXEC_PREFIXâ€™.  Thus, when the same installation prefix is used
       for both GCC and packages, GCC will automatically search for both
       headers and libraries.  This provides a configuration that is easy
       to use.  GCC behaves in a manner similar to that when it is
!      installed as a system compiler in â€˜/usrâ€™.
  
       Sites that need to install multiple versions of GCC may not want to
       use the above simple configuration.  It is possible to use the
!      â€˜--program-prefixâ€™, â€˜--program-suffixâ€™ and
!      â€˜--program-transform-nameâ€™ options to install multiple versions
       into a single directory, but it may be simpler to use different
!      prefixes and the â€˜--with-local-prefixâ€™ option to specify the
       location of the site-specific files for each version.  It will then
       be necessary for users to specify explicitly the location of local
!      site libraries (e.g., with â€˜LIBRARY_PATHâ€™).
  
!      The same value can be used for both â€˜--with-local-prefixâ€™ and
!      â€˜--prefixâ€™ provided it is not â€˜/usrâ€™.  This can be used to avoid
!      the default search of â€˜/usr/local/includeâ€™.
  
!      *Do not* specify â€˜/usrâ€™ as the â€˜--with-local-prefixâ€™!  The
!      directory you use for â€˜--with-local-prefixâ€™ *must not* contain any
       of the system's standard header files.  If it did contain them,
       certain programs would be miscompiled (including GNU Emacs, on
       certain targets), because this would override and nullify the
!      header file corrections made by the â€˜fixincludesâ€™ script.
  
       Indications are that people who use this option use it based on
       mistaken ideas of what it is for.  People use it as if it specified
       where to install part of GCC.  Perhaps they make this assumption
       because installing GCC creates the directory.
  
! â€˜--with-gcc-major-version-onlyâ€™
       Specifies that GCC should use only the major number rather than
       MAJOR.MINOR.PATCHLEVEL in filesystem paths.
  
! â€˜--with-native-system-header-dir=DIRNAMEâ€™
       Specifies that DIRNAME is the directory that contains native system
!      header files, rather than â€˜/usr/includeâ€™.  This option is most
       useful if you are creating a compiler that should be isolated from
       the system as much as possible.  It is most commonly used with the
!      â€˜--with-sysrootâ€™ option and will cause GCC to search DIRNAME inside
       the system root specified by that option.
  
! â€˜--enable-shared[=PACKAGE[,...]]â€™
       Build shared versions of libraries, if shared libraries are
       supported on the target platform.  Unlike GCC 2.95.x and earlier,
       shared libraries are enabled by default on all platforms that
*************** option.
*** 949,1078 ****
       If a list of packages is given as an argument, build shared
       libraries only for the listed packages.  For other packages, only
       static libraries will be built.  Package names currently recognized
!      in the GCC tree are 'libgcc' (also known as 'gcc'), 'libstdc++'
!      (not 'libstdc++-v3'), 'libffi', 'zlib', 'boehm-gc', 'ada',
!      'libada', 'libgo', 'libobjc', and 'libphobos'.  Note 'libiberty'
       does not support shared libraries at all.
  
!      Use '--disable-shared' to build only static libraries.  Note that
!      '--disable-shared' does not accept a list of package names as
!      argument, only '--enable-shared' does.
  
!      Contrast with '--enable-host-shared', which affects _host_ code.
  
! '--enable-host-shared'
       Specify that the _host_ code should be built into
!      position-independent machine code (with '-fPIC'), allowing it to be
       used within shared libraries, but yielding a slightly slower
       compiler.
  
       This option is required when building the libgccjit.so library.
  
!      Contrast with '--enable-shared', which affects _target_ libraries.
  
! '--enable-versioned-jit'
!      Specify that the 'libgccjit' library is built with a soname
       matching the GCC major version.
  
! '--enable-host-pie'
       Specify that the _host_ executables should be built into
!      position-independent executables (with '-fPIE' and '-pie'),
       yielding a slightly slower compiler (but faster than
!      '--enable-host-shared').  Position-independent executables are
       loaded at random addresses each time they are executed, therefore
       provide additional protection against Return Oriented Programming
       (ROP) attacks.
  
!      '--enable-host-pie' may be used with '--enable-host-shared', in
!      which case '-fPIC' is used when compiling, and '-pie' when linking.
  
! '--enable-host-bind-now'
       Specify that the _host_ executables should be linked with the
!      option '-Wl,-z,now', which means that the dynamic linker will
       resolve all symbols when the executables are started, and that in
       turn allows RELRO to mark the GOT read-only, resulting in better
       security.
  
! '--with-gnu-as'
       Specify that the compiler should assume that the assembler it finds
       is the GNU assembler.  However, this does not modify the rules to
       find an assembler and will result in confusion if the assembler
       found is not actually the GNU assembler.  (Confusion may also
       result if the compiler finds the GNU assembler but has not been
!      configured with '--with-gnu-as'.)  If you have more than one
       assembler installed on your system, you may want to use this option
!      in connection with '--with-as=PATHNAME' or
!      '--with-build-time-tools=PATHNAME'.
  
       The following systems are the only ones where it makes a difference
       whether you use the GNU assembler.  On any other system,
!      '--with-gnu-as' has no effect.
  
!         * 'hppa*-ANY-ANY'
!         * '*-*-solaris2.11'
  
! '--with-as=PATHNAME'
       Specify that the compiler should use the assembler pointed to by
       PATHNAME, rather than the one found by the standard rules to find
       an assembler, which are:
!         * Unless GCC is being built with a cross compiler, check the
!           'LIBEXEC/gcc/TARGET/VERSION' directory.  LIBEXEC defaults to
!           'EXEC-PREFIX/libexec'; EXEC-PREFIX defaults to PREFIX, which
!           defaults to '/usr/local' unless overridden by the
!           '--prefix=PATHNAME' switch described above.  TARGET is the
!           target system triple, such as 'sparc-sun-solaris2.11', and
            VERSION denotes the GCC version, such as 3.0.
  
!         * If the target system is the same that you are building on,
            check operating system specific directories.
  
!         * Check in the 'PATH' for a tool whose name is prefixed by the
            target system triple.
  
!         * Check in the 'PATH' for a tool whose name is not prefixed by
            the target system triple, if the host and target system triple
            are the same (in other words, we use a host tool if it can be
            used for the target as well).
  
!      You may want to use '--with-as' if no assembler is installed in the
       directories listed above, or if you have multiple assemblers
       installed and want to choose one that is not found by the above
       rules.
  
! '--with-gnu-ld'
!      Same as '--with-gnu-as' but for the linker.
  
! '--with-ld=PATHNAME'
!      Same as '--with-as' but for the linker.
  
! '--with-dsymutil=PATHNAME'
!      Same as '--with-as' but for the debug linker (only used on Darwin
       platforms so far).
  
! '--with-tls=DIALECT'
!      Specify the default TLS dialect, for systems were there is a
!      choice.  For ARM targets, possible values for DIALECT are 'gnu' or
!      'gnu2', which select between the original GNU dialect and the GNU
       TLS descriptor-based dialect.  For RISC-V targets, possible values
!      for DIALECT are 'trad' or 'desc', which select between the
       traditional GNU dialect and the GNU TLS descriptor-based dialect.
  
! '--enable-multiarch'
       Specify whether to enable or disable multiarch support.  The
       default is to check for glibc start files in a multiarch location,
       and enable it if the files are found.  The auto detection is
       enabled for native builds, and for cross builds configured with
!      '--with-sysroot', and without '--with-native-system-header-dir'.
       More documentation about multiarch can be found at
       <https://wiki.debian.org/Multiarch>.
  
! '--enable-sjlj-exceptions'
!      Force use of the 'setjmp'/'longjmp'-based scheme for exceptions.
!      'configure' ordinarily picks the correct value based on the
       platform.  Only use this option if you are sure you need a
       different setting.
  
! '--enable-vtable-verify'
       Specify whether to enable or disable the vtable verification
       feature.  Enabling this feature causes libstdc++ to be built with
       its virtual calls in verifiable mode.  This means that, when linked
--- 949,1078 ----
       If a list of packages is given as an argument, build shared
       libraries only for the listed packages.  For other packages, only
       static libraries will be built.  Package names currently recognized
!      in the GCC tree are â€˜libgccâ€™ (also known as â€˜gccâ€™), â€˜libstdc++â€™
!      (not â€˜libstdc++-v3â€™), â€˜libffiâ€™, â€˜zlibâ€™, â€˜boehm-gcâ€™, â€˜adaâ€™,
!      â€˜libadaâ€™, â€˜libgoâ€™, â€˜libobjcâ€™, and â€˜libphobosâ€™.  Note â€˜libibertyâ€™
       does not support shared libraries at all.
  
!      Use â€˜--disable-sharedâ€™ to build only static libraries.  Note that
!      â€˜--disable-sharedâ€™ does not accept a list of package names as
!      argument, only â€˜--enable-sharedâ€™ does.
  
!      Contrast with â€˜--enable-host-sharedâ€™, which affects _host_ code.
  
! â€˜--enable-host-sharedâ€™
       Specify that the _host_ code should be built into
!      position-independent machine code (with â€˜-fPICâ€™), allowing it to be
       used within shared libraries, but yielding a slightly slower
       compiler.
  
       This option is required when building the libgccjit.so library.
  
!      Contrast with â€˜--enable-sharedâ€™, which affects _target_ libraries.
  
! â€˜--enable-versioned-jitâ€™
!      Specify that the â€˜libgccjitâ€™ library is built with a soname
       matching the GCC major version.
  
! â€˜--enable-host-pieâ€™
       Specify that the _host_ executables should be built into
!      position-independent executables (with â€˜-fPIEâ€™ and â€˜-pieâ€™),
       yielding a slightly slower compiler (but faster than
!      â€˜--enable-host-sharedâ€™).  Position-independent executables are
       loaded at random addresses each time they are executed, therefore
       provide additional protection against Return Oriented Programming
       (ROP) attacks.
  
!      â€˜--enable-host-pieâ€™ may be used with â€˜--enable-host-sharedâ€™, in
!      which case â€˜-fPICâ€™ is used when compiling, and â€˜-pieâ€™ when linking.
  
! â€˜--enable-host-bind-nowâ€™
       Specify that the _host_ executables should be linked with the
!      option â€˜-Wl,-z,nowâ€™, which means that the dynamic linker will
       resolve all symbols when the executables are started, and that in
       turn allows RELRO to mark the GOT read-only, resulting in better
       security.
  
! â€˜--with-gnu-asâ€™
       Specify that the compiler should assume that the assembler it finds
       is the GNU assembler.  However, this does not modify the rules to
       find an assembler and will result in confusion if the assembler
       found is not actually the GNU assembler.  (Confusion may also
       result if the compiler finds the GNU assembler but has not been
!      configured with â€˜--with-gnu-asâ€™.)  If you have more than one
       assembler installed on your system, you may want to use this option
!      in connection with â€˜--with-as=PATHNAMEâ€™ or
!      â€˜--with-build-time-tools=PATHNAMEâ€™.
  
       The following systems are the only ones where it makes a difference
       whether you use the GNU assembler.  On any other system,
!      â€˜--with-gnu-asâ€™ has no effect.
  
!         â€¢ â€˜hppa*-ANY-ANYâ€™
!         â€¢ â€˜*-*-solaris2.11â€™
  
! â€˜--with-as=PATHNAMEâ€™
       Specify that the compiler should use the assembler pointed to by
       PATHNAME, rather than the one found by the standard rules to find
       an assembler, which are:
!         â€¢ Unless GCC is being built with a cross compiler, check the
!           â€˜LIBEXEC/gcc/TARGET/VERSIONâ€™ directory.  LIBEXEC defaults to
!           â€˜EXEC-PREFIX/libexecâ€™; EXEC-PREFIX defaults to PREFIX, which
!           defaults to â€˜/usr/localâ€™ unless overridden by the
!           â€˜--prefix=PATHNAMEâ€™ switch described above.  TARGET is the
!           target system triple, such as â€˜sparc-sun-solaris2.11â€™, and
            VERSION denotes the GCC version, such as 3.0.
  
!         â€¢ If the target system is the same that you are building on,
            check operating system specific directories.
  
!         â€¢ Check in the â€˜PATHâ€™ for a tool whose name is prefixed by the
            target system triple.
  
!         â€¢ Check in the â€˜PATHâ€™ for a tool whose name is not prefixed by
            the target system triple, if the host and target system triple
            are the same (in other words, we use a host tool if it can be
            used for the target as well).
  
!      You may want to use â€˜--with-asâ€™ if no assembler is installed in the
       directories listed above, or if you have multiple assemblers
       installed and want to choose one that is not found by the above
       rules.
  
! â€˜--with-gnu-ldâ€™
!      Same as â€˜--with-gnu-asâ€™ but for the linker.
  
! â€˜--with-ld=PATHNAMEâ€™
!      Same as â€˜--with-asâ€™ but for the linker.
  
! â€˜--with-dsymutil=PATHNAMEâ€™
!      Same as â€˜--with-asâ€™ but for the debug linker (only used on Darwin
       platforms so far).
  
! â€˜--with-tls=DIALECTâ€™
!      Specify the default TLS dialect, for systems where there is a
!      choice.  For ARM targets, possible values for DIALECT are â€˜gnuâ€™ or
!      â€˜gnu2â€™, which select between the original GNU dialect and the GNU
       TLS descriptor-based dialect.  For RISC-V targets, possible values
!      for DIALECT are â€˜tradâ€™ or â€˜descâ€™, which select between the
       traditional GNU dialect and the GNU TLS descriptor-based dialect.
  
! â€˜--enable-multiarchâ€™
       Specify whether to enable or disable multiarch support.  The
       default is to check for glibc start files in a multiarch location,
       and enable it if the files are found.  The auto detection is
       enabled for native builds, and for cross builds configured with
!      â€˜--with-sysrootâ€™, and without â€˜--with-native-system-header-dirâ€™.
       More documentation about multiarch can be found at
       <https://wiki.debian.org/Multiarch>.
  
! â€˜--enable-sjlj-exceptionsâ€™
!      Force use of the â€˜setjmpâ€™/â€˜longjmpâ€™-based scheme for exceptions.
!      â€˜configureâ€™ ordinarily picks the correct value based on the
       platform.  Only use this option if you are sure you need a
       different setting.
  
! â€˜--enable-vtable-verifyâ€™
       Specify whether to enable or disable the vtable verification
       feature.  Enabling this feature causes libstdc++ to be built with
       its virtual calls in verifiable mode.  This means that, when linked
*************** option.
*** 1082,1282 ****
       functions (in libstdc++ itself) and do nothing.  If vtable
       verification is disabled, then libstdc++ is not built with its
       virtual calls in verifiable mode at all.  However the libvtv
!      library will still be built (see '--disable-libvtv' to turn off
!      building libvtv).  '--disable-vtable-verify' is the default.
  
! '--enable-libgdiagnostics'
!      Specify whether to build 'libgdiagnostics', a shared library
       exposing GCC's diagnostics capabilities via a C API, and a C++
       wrapper API adding "syntactic sugar".
  
!      This option requires '--enable-host-shared' on non-Windows hosts.
  
!      This option also enables 'sarif-replay', a command-line tool for
!      viewing SARIF files.  'sarif-replay' takes one or more '.sarif'
       files as input and attempts to replay any diagnostics within them
!      to stderr (via 'libgdiagnostics') in the style of GCC's
       diagnostics.
  
! '--disable-gcov'
       Specify that the run-time library used for coverage analysis and
       associated host tools should not be built.
  
! '--disable-multilib'
       Specify that multiple target libraries to support different target
       variants, calling conventions, etc. should not be built.  The
       default is to build a predefined set of them.
  
       Some targets provide finer-grained control over which multilibs are
!      built (e.g., '--disable-softfloat'):
!      'arm-*-*'
            fpu, 26bit, underscore, interwork, biendian, nofmult.
  
!      'm68*-*-*'
            softfloat, m68881, m68000, m68020.
  
!      'mips*-*-*'
            single-float, biendian, softfloat.
  
!      'msp430-*-*'
            no-exceptions
  
!      'powerpc*-*-*, rs6000*-*-*'
            aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos,
            biendian, sysv, aix.
  
! '--with-multilib-list=LIST'
! '--without-multilib-list'
       Specify what multilibs to build.  LIST is a comma separated list of
       values, possibly consisting of a single value.  Currently only
       implemented for aarch64*-*-*, amdgcn*-*-*, arm*-*-*,
       loongarch*-*-*, nvptx-*, riscv*-*-*, sh*-*-* and x86-64-*-linux*.
       The accepted values and meaning for each target is given below.
  
!      'aarch64*-*-*'
!           LIST is a comma separated list of 'ilp32', and 'lp64' to
            enable ILP32 and LP64 run-time libraries, respectively.  If
            LIST is empty, then there will be no multilibs and only the
!           default run-time library will be built.  If LIST is 'default'
            or -with-multilib-list= is not specified, then the default set
!           of libraries is selected based on the value of '--target'.
  
!      'amdgcn*-*-*'
            LIST is a comma separated list of ISA names (allowed values:
!           'gfx900', 'gfx902', 'gfx904', 'gfx906', 'gfx908', 'gfx909',
!           'gfx90a', 'gfx90c', 'gfx9-generic', 'gfx1030', 'gfx1031',
!           'gfx1032', 'gfx1033', 'gfx1034', 'gfx1035', 'gfx1036',
!           'gfx10-3-generic', 'gfx1100', 'gfx1101', 'gfx1102', 'gfx1103',
!           'gfx1150', 'gfx1151', 'gfx1152', 'gfx1153', 'gfx11-generic').
            It ought not include the name of the default ISA, specified
!           via '--with-arch'.  If LIST is empty, then there will be no
            multilibs and only the default run-time library will be built.
!           If LIST is 'default' or '--with-multilib-list=' is not
            specified, then the default set of libraries is selected.
  
!      'arm*-*-*'
!           LIST is a comma separated list of 'aprofile' and 'rmprofile'
            to build multilibs for A or R and M architecture profiles
            respectively.  Note that, due to some limitation of the
            current multilib framework, using the combined
!           'aprofile,rmprofile' multilibs selects in some cases a less
            optimal multilib than when using the multilib profile for the
!           architecture targetted.  The special value 'default' is also
            accepted and is equivalent to omitting the option, i.e., only
            the default run-time library will be enabled.
  
!           LIST may instead contain '@name', to use the multilib
!           configuration Makefile fragment 'name' in 'gcc/config/arm' in
            the source tree (it is part of the corresponding sources,
            after all).  It is recommended, but not required, that files
!           used for this purpose to be named starting with 't-ml-', to
            make their intended purpose self-evident, in line with GCC
            conventions.  Such files enable custom, user-chosen multilib
            lists to be configured.  Whether multiple such files can be
            used together depends on the contents of the supplied files.
!           See 'gcc/config/arm/t-multilib' and its supplementary
!           'gcc/config/arm/t-*profile' files for an example of what such
            Makefile fragments might look like for this version of GCC.
            The macros expected to be defined in these fragments are not
            stable across GCC releases, so make sure they define the
!           'MULTILIB'-related macros expected by the version of GCC you
            are building.  *Note Target Makefile Fragments: (gccint)Target
            Fragment.
  
            The table below gives the combination of ISAs, architectures,
            FPUs and floating-point ABIs for which multilibs are built for
            each predefined profile.  The union of these options is
!           considered when specifying both 'aprofile' and 'rmprofile'.
  
            Option      aprofile             rmprofile
!           ISAs        '-marm' and          '-mthumb'
!                       '-mthumb'
            Architecturesdefault             default architecture
!                       architecture         '-march=armv6s-m'
!                       '-march=armv7-a'     '-march=armv7-m'
!                       '-march=armv7ve'     '-march=armv7e-m'
!                       '-march=armv8-a'     '-march=armv8-m.base'
!                                            '-march=armv8-m.main'
!                                            '-march=armv7'
            FPUs        none                 none
!                       '-mfpu=vfpv3-d16'    '-mfpu=vfpv3-d16'
!                       '-mfpu=neon'         '-mfpu=fpv4-sp-d16'
!                       '-mfpu=vfpv4-d16'    '-mfpu=fpv5-sp-d16'
!                       '-mfpu=neon-vfpv4'   '-mfpu=fpv5-d16'
!                       '-mfpu=neon-fp-armv8'
!           floating-point'-mfloat-abi=soft' '-mfloat-abi=soft'
!           ABIs        '-mfloat-abi=softfp' '-mfloat-abi=softfp'
!                       '-mfloat-abi=hard'   '-mfloat-abi=hard'
  
!      'loongarch*-*-*'
            LIST is a comma-separated list, with each of the element
!           starting with the following ABI identifiers: 'lp64d[/base]'
!           'lp64f[/base]' 'lp64d[/base]' (the '/base' suffix may be
            omitted) to enable their respective run-time libraries.
  
!           A suffix '[/ARCH][/OPTION/...]' may follow immediately after
            the ABI identifier to customize the compiler options for
            building the given set of libraries.  ARCH denotes the
!           architecture name recognized by the '-march=ARCH' compiler
            option, which acts as a basic target ISA configuration that
            can be adjusted using the subsequent OPTION suffixes, where
            each OPTION is a compiler option without a leading dash ('-').
  
            If no such suffix is present for a given multilib variant, the
!           configured value of '--with-multilib-default' is appended as a
!           default suffix.  If '--with-multilib-default' is not given,
!           the default build option '-march=abi-default' is applied when
            building the variants without a suffix.
  
!           As a special case, 'fixed' may be used in the position of
            ARCH, which means using the architecture configured with
!           '--with-arch=ARCH', or its default value (e.g.  'loongarch64'
!           for 'loongarch64-*' targets).
  
!           If LIST is empty or 'default', or if '--with-multilib-list' is
            not specified, then only the default variant of the libraries
            are built, where the default ABI is implied by the configured
            target triplet.
  
!      'nvptx-*'
            The target libraries corresponding to the default value of the
!           '-march' option are always built, *note host/target specific
!           installation notes: nvptx-x-none.  If LIST is empty, 'no', or
!           '--without-multilib-list' is specified, then no additional
            multilibs are built.  Otherwise, LIST is a comma separated
            list specifying which multilibs to build.  List items are
!           either 'sm_SM', or 'default', which is a placeholder
!           specifying a default set of multilibs: 'sm_52'.  Any
!           duplicates are filtered out.  If '--with-multilib-list' is not
!           specified, then '--with-multilib-list=default' is assumed.
!           For 'sm_30', 'sm_35' target libraries, '-mptx-3.1'
            sub-variants are additionally built.
  
!      'riscv*-*-*'
            LIST is a single ABI name.  The target architecture must be
!           either 'rv32gc' or 'rv64gc'.  This will build a single
            multilib for the specified architecture and ABI pair.  If
!           '--with-multilib-list' is not given, then a default set of
!           multilibs is selected based on the value of '--target'.  This
            is usually a large set of multilibs.
  
!      'sh*-*-*'
            LIST is a comma separated list of CPU names.  These must be of
!           the form 'sh*' or 'm*' (in which case they match the compiler
            option for that processor).  The list should not contain any
!           endian options - these are handled by '--with-endian'.
  
            If LIST is empty, then there will be no multilibs for extra
            processors.  The multilib for the secondary endian remains
            enabled.
  
!           As a special case, if an entry in the list starts with a '!'
            (exclamation point), then it is added to the list of excluded
            multilibs.  Entries of this sort should be compatible with
!           'MULTILIB_EXCLUDES' (once the leading '!' has been stripped).
  
!           If '--with-multilib-list' is not given, then a default set of
!           multilibs is selected based on the value of '--target'.  This
            is usually the complete set of libraries, but some targets
            imply a more specialized subset.
  
--- 1082,1282 ----
       functions (in libstdc++ itself) and do nothing.  If vtable
       verification is disabled, then libstdc++ is not built with its
       virtual calls in verifiable mode at all.  However the libvtv
!      library will still be built (see â€˜--disable-libvtvâ€™ to turn off
!      building libvtv).  â€˜--disable-vtable-verifyâ€™ is the default.
  
! â€˜--enable-libgdiagnosticsâ€™
!      Specify whether to build â€˜libgdiagnosticsâ€™, a shared library
       exposing GCC's diagnostics capabilities via a C API, and a C++
       wrapper API adding "syntactic sugar".
  
!      This option requires â€˜--enable-host-sharedâ€™ on non-Windows hosts.
  
!      This option also enables â€˜sarif-replayâ€™, a command-line tool for
!      viewing SARIF files.  â€˜sarif-replayâ€™ takes one or more â€˜.sarifâ€™
       files as input and attempts to replay any diagnostics within them
!      to stderr (via â€˜libgdiagnosticsâ€™) in the style of GCC's
       diagnostics.
  
! â€˜--disable-gcovâ€™
       Specify that the run-time library used for coverage analysis and
       associated host tools should not be built.
  
! â€˜--disable-multilibâ€™
       Specify that multiple target libraries to support different target
       variants, calling conventions, etc. should not be built.  The
       default is to build a predefined set of them.
  
       Some targets provide finer-grained control over which multilibs are
!      built (e.g., â€˜--disable-softfloatâ€™):
!      â€˜arm-*-*â€™
            fpu, 26bit, underscore, interwork, biendian, nofmult.
  
!      â€˜m68*-*-*â€™
            softfloat, m68881, m68000, m68020.
  
!      â€˜mips*-*-*â€™
            single-float, biendian, softfloat.
  
!      â€˜msp430-*-*â€™
            no-exceptions
  
!      â€˜powerpc*-*-*, rs6000*-*-*â€™
            aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos,
            biendian, sysv, aix.
  
! â€˜--with-multilib-list=LISTâ€™
! â€˜--without-multilib-listâ€™
       Specify what multilibs to build.  LIST is a comma separated list of
       values, possibly consisting of a single value.  Currently only
       implemented for aarch64*-*-*, amdgcn*-*-*, arm*-*-*,
       loongarch*-*-*, nvptx-*, riscv*-*-*, sh*-*-* and x86-64-*-linux*.
       The accepted values and meaning for each target is given below.
  
!      â€˜aarch64*-*-*â€™
!           LIST is a comma separated list of â€˜ilp32â€™, and â€˜lp64â€™ to
            enable ILP32 and LP64 run-time libraries, respectively.  If
            LIST is empty, then there will be no multilibs and only the
!           default run-time library will be built.  If LIST is â€˜defaultâ€™
            or -with-multilib-list= is not specified, then the default set
!           of libraries is selected based on the value of â€˜--targetâ€™.
  
!      â€˜amdgcn*-*-*â€™
            LIST is a comma separated list of ISA names (allowed values:
!           â€˜gfx900â€™, â€˜gfx902â€™, â€˜gfx904â€™, â€˜gfx906â€™, â€˜gfx908â€™, â€˜gfx909â€™,
!           â€˜gfx90aâ€™, â€˜gfx90câ€™, â€˜gfx9-genericâ€™, â€˜gfx1030â€™, â€˜gfx1031â€™,
!           â€˜gfx1032â€™, â€˜gfx1033â€™, â€˜gfx1034â€™, â€˜gfx1035â€™, â€˜gfx1036â€™,
!           â€˜gfx10-3-genericâ€™, â€˜gfx1100â€™, â€˜gfx1101â€™, â€˜gfx1102â€™, â€˜gfx1103â€™,
!           â€˜gfx1150â€™, â€˜gfx1151â€™, â€˜gfx1152â€™, â€˜gfx1153â€™, â€˜gfx11-genericâ€™).
            It ought not include the name of the default ISA, specified
!           via â€˜--with-archâ€™.  If LIST is empty, then there will be no
            multilibs and only the default run-time library will be built.
!           If LIST is â€˜defaultâ€™ or â€˜--with-multilib-list=â€™ is not
            specified, then the default set of libraries is selected.
  
!      â€˜arm*-*-*â€™
!           LIST is a comma separated list of â€˜aprofileâ€™ and â€˜rmprofileâ€™
            to build multilibs for A or R and M architecture profiles
            respectively.  Note that, due to some limitation of the
            current multilib framework, using the combined
!           â€˜aprofile,rmprofileâ€™ multilibs selects in some cases a less
            optimal multilib than when using the multilib profile for the
!           architecture targetted.  The special value â€˜defaultâ€™ is also
            accepted and is equivalent to omitting the option, i.e., only
            the default run-time library will be enabled.
  
!           LIST may instead contain â€˜@nameâ€™, to use the multilib
!           configuration Makefile fragment â€˜nameâ€™ in â€˜gcc/config/armâ€™ in
            the source tree (it is part of the corresponding sources,
            after all).  It is recommended, but not required, that files
!           used for this purpose to be named starting with â€˜t-ml-â€™, to
            make their intended purpose self-evident, in line with GCC
            conventions.  Such files enable custom, user-chosen multilib
            lists to be configured.  Whether multiple such files can be
            used together depends on the contents of the supplied files.
!           See â€˜gcc/config/arm/t-multilibâ€™ and its supplementary
!           â€˜gcc/config/arm/t-*profileâ€™ files for an example of what such
            Makefile fragments might look like for this version of GCC.
            The macros expected to be defined in these fragments are not
            stable across GCC releases, so make sure they define the
!           â€˜MULTILIBâ€™-related macros expected by the version of GCC you
            are building.  *Note Target Makefile Fragments: (gccint)Target
            Fragment.
  
            The table below gives the combination of ISAs, architectures,
            FPUs and floating-point ABIs for which multilibs are built for
            each predefined profile.  The union of these options is
!           considered when specifying both â€˜aprofileâ€™ and â€˜rmprofileâ€™.
  
            Option      aprofile             rmprofile
!           ISAs        â€˜-marmâ€™ and          â€˜-mthumbâ€™
!                       â€˜-mthumbâ€™
            Architecturesdefault             default architecture
!                       architecture         â€˜-march=armv6s-mâ€™
!                       â€˜-march=armv7-aâ€™     â€˜-march=armv7-mâ€™
!                       â€˜-march=armv7veâ€™     â€˜-march=armv7e-mâ€™
!                       â€˜-march=armv8-aâ€™     â€˜-march=armv8-m.baseâ€™
!                                            â€˜-march=armv8-m.mainâ€™
!                                            â€˜-march=armv7â€™
            FPUs        none                 none
!                       â€˜-mfpu=vfpv3-d16â€™    â€˜-mfpu=vfpv3-d16â€™
!                       â€˜-mfpu=neonâ€™         â€˜-mfpu=fpv4-sp-d16â€™
!                       â€˜-mfpu=vfpv4-d16â€™    â€˜-mfpu=fpv5-sp-d16â€™
!                       â€˜-mfpu=neon-vfpv4â€™   â€˜-mfpu=fpv5-d16â€™
!                       â€˜-mfpu=neon-fp-armv8â€™
!           floating-pointâ€˜-mfloat-abi=softâ€™ â€˜-mfloat-abi=softâ€™
!           ABIs        â€˜-mfloat-abi=softfpâ€™ â€˜-mfloat-abi=softfpâ€™
!                       â€˜-mfloat-abi=hardâ€™   â€˜-mfloat-abi=hardâ€™
  
!      â€˜loongarch*-*-*â€™
            LIST is a comma-separated list, with each of the element
!           starting with the following ABI identifiers: â€˜lp64d[/base]â€™
!           â€˜lp64f[/base]â€™ â€˜lp64d[/base]â€™ (the â€˜/baseâ€™ suffix may be
            omitted) to enable their respective run-time libraries.
  
!           A suffix â€˜[/ARCH][/OPTION/...]â€™ may follow immediately after
            the ABI identifier to customize the compiler options for
            building the given set of libraries.  ARCH denotes the
!           architecture name recognized by the â€˜-march=ARCHâ€™ compiler
            option, which acts as a basic target ISA configuration that
            can be adjusted using the subsequent OPTION suffixes, where
            each OPTION is a compiler option without a leading dash ('-').
  
            If no such suffix is present for a given multilib variant, the
!           configured value of â€˜--with-multilib-defaultâ€™ is appended as a
!           default suffix.  If â€˜--with-multilib-defaultâ€™ is not given,
!           the default build option â€˜-march=abi-defaultâ€™ is applied when
            building the variants without a suffix.
  
!           As a special case, â€˜fixedâ€™ may be used in the position of
            ARCH, which means using the architecture configured with
!           â€˜--with-arch=ARCHâ€™, or its default value (e.g.  â€˜loongarch64â€™
!           for â€˜loongarch64-*â€™ targets).
  
!           If LIST is empty or â€˜defaultâ€™, or if â€˜--with-multilib-listâ€™ is
            not specified, then only the default variant of the libraries
            are built, where the default ABI is implied by the configured
            target triplet.
  
!      â€˜nvptx-*â€™
            The target libraries corresponding to the default value of the
!           â€˜-marchâ€™ option are always built, *note host/target specific
!           installation notes: nvptx-x-none.  If LIST is empty, â€˜noâ€™, or
!           â€˜--without-multilib-listâ€™ is specified, then no additional
            multilibs are built.  Otherwise, LIST is a comma separated
            list specifying which multilibs to build.  List items are
!           either â€˜sm_SMâ€™, or â€˜defaultâ€™, which is a placeholder
!           specifying a default set of multilibs: â€˜sm_52â€™.  Any
!           duplicates are filtered out.  If â€˜--with-multilib-listâ€™ is not
!           specified, then â€˜--with-multilib-list=defaultâ€™ is assumed.
!           For â€˜sm_30â€™, â€˜sm_35â€™ target libraries, â€˜-mptx-3.1â€™
            sub-variants are additionally built.
  
!      â€˜riscv*-*-*â€™
            LIST is a single ABI name.  The target architecture must be
!           either â€˜rv32gcâ€™ or â€˜rv64gcâ€™.  This will build a single
            multilib for the specified architecture and ABI pair.  If
!           â€˜--with-multilib-listâ€™ is not given, then a default set of
!           multilibs is selected based on the value of â€˜--targetâ€™.  This
            is usually a large set of multilibs.
  
!      â€˜sh*-*-*â€™
            LIST is a comma separated list of CPU names.  These must be of
!           the form â€˜sh*â€™ or â€˜m*â€™ (in which case they match the compiler
            option for that processor).  The list should not contain any
!           endian options - these are handled by â€˜--with-endianâ€™.
  
            If LIST is empty, then there will be no multilibs for extra
            processors.  The multilib for the secondary endian remains
            enabled.
  
!           As a special case, if an entry in the list starts with a â€˜!â€™
            (exclamation point), then it is added to the list of excluded
            multilibs.  Entries of this sort should be compatible with
!           â€˜MULTILIB_EXCLUDESâ€™ (once the leading â€˜!â€™ has been stripped).
  
!           If â€˜--with-multilib-listâ€™ is not given, then a default set of
!           multilibs is selected based on the value of â€˜--targetâ€™.  This
            is usually the complete set of libraries, but some targets
            imply a more specialized subset.
  
*************** option.
*** 1289,1321 ****
                 --with-cpu=sh4a --with-endian=little,big \
                 --with-multilib-list=sh4al,!mb/m4al
  
!      'x86-64-*-linux*'
!           LIST is a comma separated list of 'm32', 'm64' and 'mx32' to
            enable 32-bit, 64-bit and x32 run-time libraries,
            respectively.  If LIST is empty, then there will be no
            multilibs and only the default run-time library will be
            enabled.
  
!           If '--with-multilib-list' is not given, then only 32-bit and
            64-bit run-time libraries will be enabled.
  
! '--with-multilib-default'
       On LoongArch targets, set the default build options for enabled
       multilibs without build options appended to their corresponding
!      '--with-multilib-list' items.  The format of this value is
!      '[/ARCH][/OPTION/...]', where ARCH is an architecture name
!      recognized by '-march=ARCH' compiler option, and subsequent OPTION
       suffixes are compiler options minus a leading dash ('-').
  
       Multiple OPTIONs may appear consecutively while ARCH may only
       appear in the beginning or be omitted (which means
!      '-march=abi-default' is applied when building the libraries).
  
! '--with-strict-align-lib'
       On LoongArch targets, build all enabled multilibs with
!      '-mstrict-align' (Not enabled by default).
  
! '--with-multilib-generator=CONFIG'
       Specify what multilibs to build.  CONFIG is a semicolon separated
       list of values, possibly consisting of a single value.  Currently
       only implemented for riscv*-*-elf*.  The accepted values and
--- 1289,1321 ----
                 --with-cpu=sh4a --with-endian=little,big \
                 --with-multilib-list=sh4al,!mb/m4al
  
!      â€˜x86-64-*-linux*â€™
!           LIST is a comma separated list of â€˜m32â€™, â€˜m64â€™ and â€˜mx32â€™ to
            enable 32-bit, 64-bit and x32 run-time libraries,
            respectively.  If LIST is empty, then there will be no
            multilibs and only the default run-time library will be
            enabled.
  
!           If â€˜--with-multilib-listâ€™ is not given, then only 32-bit and
            64-bit run-time libraries will be enabled.
  
! â€˜--with-multilib-defaultâ€™
       On LoongArch targets, set the default build options for enabled
       multilibs without build options appended to their corresponding
!      â€˜--with-multilib-listâ€™ items.  The format of this value is
!      â€˜[/ARCH][/OPTION/...]â€™, where ARCH is an architecture name
!      recognized by â€˜-march=ARCHâ€™ compiler option, and subsequent OPTION
       suffixes are compiler options minus a leading dash ('-').
  
       Multiple OPTIONs may appear consecutively while ARCH may only
       appear in the beginning or be omitted (which means
!      â€˜-march=abi-defaultâ€™ is applied when building the libraries).
  
! â€˜--with-strict-align-libâ€™
       On LoongArch targets, build all enabled multilibs with
!      â€˜-mstrict-alignâ€™ (Not enabled by default).
  
! â€˜--with-multilib-generator=CONFIGâ€™
       Specify what multilibs to build.  CONFIG is a semicolon separated
       list of values, possibly consisting of a single value.  Currently
       only implemented for riscv*-*-elf*.  The accepted values and
*************** option.
*** 1341,1348 ****
       this multi-lib set.
            rv64ima-lp64--f,c,fc
  
!      '--with-multilib-generator' have an optional configuration argument
!      '--cmodel=val' for code model, this option will expand with other
       config options, VAL is a comma separated list of possible code
       model, currently we support medlow and medany.
  
--- 1341,1348 ----
       this multi-lib set.
            rv64ima-lp64--f,c,fc
  
!      â€˜--with-multilib-generatorâ€™ have an optional configuration argument
!      â€˜--cmodel=valâ€™ for code model, this option will expand with other
       config options, VAL is a comma separated list of possible code
       model, currently we support medlow and medany.
  
*************** option.
*** 1355,1381 ****
       model
            rv64ima-lp64--;--cmodel=medlow,medany
  
! '--with-endian=ENDIANS'
       Specify what endians to use.  Currently only implemented for
       sh*-*-*.
  
       ENDIANS may be one of the following:
!      'big'
            Use big endian exclusively.
!      'little'
            Use little endian exclusively.
!      'big,little'
            Use big endian by default.  Provide a multilib for little
            endian.
!      'little,big'
            Use little endian by default.  Provide a multilib for big
            endian.
  
! '--with-cmodel=CMODEL'
       Specify what code model to use by default.  Currently only
       implemented for riscv*-*-*.
  
! '--enable-threads'
       Specify that the target supports threads.  This affects the
       Objective-C compiler and runtime library, and exception handling
       for other languages like C++.  On some systems, this is the
--- 1355,1381 ----
       model
            rv64ima-lp64--;--cmodel=medlow,medany
  
! â€˜--with-endian=ENDIANSâ€™
       Specify what endians to use.  Currently only implemented for
       sh*-*-*.
  
       ENDIANS may be one of the following:
!      â€˜bigâ€™
            Use big endian exclusively.
!      â€˜littleâ€™
            Use little endian exclusively.
!      â€˜big,littleâ€™
            Use big endian by default.  Provide a multilib for little
            endian.
!      â€˜little,bigâ€™
            Use little endian by default.  Provide a multilib for big
            endian.
  
! â€˜--with-cmodel=CMODELâ€™
       Specify what code model to use by default.  Currently only
       implemented for riscv*-*-*.
  
! â€˜--enable-threadsâ€™
       Specify that the target supports threads.  This affects the
       Objective-C compiler and runtime library, and exception handling
       for other languages like C++.  On some systems, this is the
*************** option.
*** 1385,1547 ****
       model available will be configured for use.  Beware that on some
       systems, GCC has not been taught what threading models are
       generally available for the system.  In this case,
!      '--enable-threads' is an alias for '--enable-threads=single'.
  
! '--disable-threads'
       Specify that threading support should be disabled for the system.
!      This is an alias for '--enable-threads=single'.
  
! '--enable-threads=LIB'
       Specify that LIB is the thread support library.  This affects the
       Objective-C compiler and runtime library, and exception handling
       for other languages like C++.  The possibilities for LIB are:
  
!      'aix'
            AIX thread support.
!      'dce'
            DCE thread support.
!      'lynx'
            LynxOS thread support.
!      'mipssde'
            MIPS SDE thread support.
!      'no'
!           This is an alias for 'single'.
!      'posix'
            Generic POSIX/Unix98 thread support.
!      'rtems'
            RTEMS thread support.
!      'single'
            Disable thread support, should work for all platforms.
!      'tpf'
            TPF thread support.
!      'vxworks'
            VxWorks thread support.
!      'win32'
            Microsoft Win32 API thread support.
  
! '--enable-tls'
       Specify that the target supports TLS (Thread Local Storage).
       Usually configure can correctly determine if TLS is supported.  In
       cases where it guesses incorrectly, TLS can be explicitly enabled
!      or disabled with '--enable-tls' or '--disable-tls'.  This can
       happen if the assembler supports TLS but the C library does not, or
       if the assumptions made by the configure test are incorrect.
  
! '--disable-tls'
       Specify that the target does not support TLS. This is an alias for
!      '--enable-tls=no'.
  
! '--disable-tm-clone-registry'
       Disable TM clone registry in libgcc.  It is enabled in libgcc by
       default.  This option helps to reduce code size for embedded
       targets which do not use transactional memory.
  
! '--with-cpu=CPU'
! '--with-cpu-32=CPU'
! '--with-cpu-64=CPU'
       Specify which cpu variant the compiler should generate code for by
!      default.  CPU will be used as the default value of the '-mcpu='
       switch.  This option is only supported on some targets, including
       ARC, ARM, i386, M68k, PowerPC, and SPARC.  It is mandatory for ARC.
!      The '--with-cpu-32' and '--with-cpu-64' options specify separate
       default CPUs for 32-bit and 64-bit modes; these options are only
       supported for aarch64, i386, x86-64, PowerPC, and SPARC.
  
! '--with-schedule=CPU'
! '--with-arch=CPU'
! '--with-arch-32=CPU'
! '--with-arch-64=CPU'
! '--with-tune=CPU'
! '--with-tune-32=CPU'
! '--with-tune-64=CPU'
! '--with-abi=ABI'
! '--with-fpu=TYPE'
! '--with-float=TYPE'
! '--with-simd=TYPE'
       These configure options provide default values for the
!      '-mschedule=', '-march=', '-mtune=', '-mabi=', and '-mfpu=' options
!      and for '-mhard-float' or '-msoft-float'.  As with '--with-cpu',
       which switches will be accepted and acceptable values of the
       arguments depend on the target.
  
! '--with-mode=MODE'
!      Specify if the compiler should default to '-marm' or '-mthumb'.
       This option is only supported on ARM targets.
  
! '--with-stack-offset=NUM'
       This option sets the default for the -mstack-offset=NUM option, and
       will thus generally also control the setting of this option for
       libraries.  This option is only supported on Epiphany targets.
  
! '--with-fpmath=ISA'
!      This options sets '-mfpmath=sse' by default and specifies the
       default ISA for floating-point arithmetics.  You can select either
!      'sse' which enables '-msse2' or 'avx' which enables '-mavx' by
       default.  This option is only supported on i386 and x86-64 targets.
  
! '--with-fp-32=MODE'
!      On MIPS targets, set the default value for the '-mfp' option when
       using the o32 ABI. The possibilities for MODE are:
!      '32'
!           Use the o32 FP32 ABI extension, as with the '-mfp32'
            command-line option.
!      'xx'
!           Use the o32 FPXX ABI extension, as with the '-mfpxx'
            command-line option.
!      '64'
!           Use the o32 FP64 ABI extension, as with the '-mfp64'
            command-line option.
       In the absence of this configuration option the default is to use
       the o32 FP32 ABI extension.
  
! '--with-odd-spreg-32'
!      On MIPS targets, set the '-modd-spreg' option by default when using
       the o32 ABI.
  
! '--without-odd-spreg-32'
!      On MIPS targets, set the '-mno-odd-spreg' option by default when
       using the o32 ABI. This is normally used in conjunction with
!      '--with-fp-32=64' in order to target the o32 FP64A ABI extension.
  
! '--with-nan=ENCODING'
       On MIPS targets, set the default encoding convention to use for the
       special not-a-number (NaN) IEEE 754 floating-point data.  The
       possibilities for ENCODING are:
!      'legacy'
!           Use the legacy encoding, as with the '-mnan=legacy'
            command-line option.
!      '2008'
!           Use the 754-2008 encoding, as with the '-mnan=2008'
            command-line option.
       To use this configuration option you must have an assembler version
!      installed that supports the '-mnan=' command-line option too.  In
       the absence of this configuration option the default convention is
!      the legacy encoding, as when neither of the '-mnan=2008' and
!      '-mnan=legacy' command-line options has been used.
  
! '--with-divide=TYPE'
       Specify how the compiler should generate code for checking for
       division by zero.  This option is only supported on the MIPS
       target.  The possibilities for TYPE are:
!      'traps'
            Division by zero checks use conditional traps (this is the
            default on systems that support conditional traps).
!      'breaks'
            Division by zero checks use the break instruction.
  
! '--with-compact-branches=POLICY'
       Specify how the compiler should generate branch instructions.  This
       option is only supported on the MIPS target.  The possibilities for
       TYPE are:
!      'optimal'
            Cause a delay slot branch to be used if one is available in
            the current ISA and the delay slot is successfully filled.  If
            the delay slot is not filled, a compact branch will be chosen
            if one is available.
!      'never'
            Ensures that compact branch instructions will never be
            generated.
!      'always'
            Ensures that a compact branch instruction will be generated if
            available.  If a compact branch instruction is not available,
            a delay slot form of the branch will be used instead.  This
--- 1385,1547 ----
       model available will be configured for use.  Beware that on some
       systems, GCC has not been taught what threading models are
       generally available for the system.  In this case,
!      â€˜--enable-threadsâ€™ is an alias for â€˜--enable-threads=singleâ€™.
  
! â€˜--disable-threadsâ€™
       Specify that threading support should be disabled for the system.
!      This is an alias for â€˜--enable-threads=singleâ€™.
  
! â€˜--enable-threads=LIBâ€™
       Specify that LIB is the thread support library.  This affects the
       Objective-C compiler and runtime library, and exception handling
       for other languages like C++.  The possibilities for LIB are:
  
!      â€˜aixâ€™
            AIX thread support.
!      â€˜dceâ€™
            DCE thread support.
!      â€˜lynxâ€™
            LynxOS thread support.
!      â€˜mipssdeâ€™
            MIPS SDE thread support.
!      â€˜noâ€™
!           This is an alias for â€˜singleâ€™.
!      â€˜posixâ€™
            Generic POSIX/Unix98 thread support.
!      â€˜rtemsâ€™
            RTEMS thread support.
!      â€˜singleâ€™
            Disable thread support, should work for all platforms.
!      â€˜tpfâ€™
            TPF thread support.
!      â€˜vxworksâ€™
            VxWorks thread support.
!      â€˜win32â€™
            Microsoft Win32 API thread support.
  
! â€˜--enable-tlsâ€™
       Specify that the target supports TLS (Thread Local Storage).
       Usually configure can correctly determine if TLS is supported.  In
       cases where it guesses incorrectly, TLS can be explicitly enabled
!      or disabled with â€˜--enable-tlsâ€™ or â€˜--disable-tlsâ€™.  This can
       happen if the assembler supports TLS but the C library does not, or
       if the assumptions made by the configure test are incorrect.
  
! â€˜--disable-tlsâ€™
       Specify that the target does not support TLS. This is an alias for
!      â€˜--enable-tls=noâ€™.
  
! â€˜--disable-tm-clone-registryâ€™
       Disable TM clone registry in libgcc.  It is enabled in libgcc by
       default.  This option helps to reduce code size for embedded
       targets which do not use transactional memory.
  
! â€˜--with-cpu=CPUâ€™
! â€˜--with-cpu-32=CPUâ€™
! â€˜--with-cpu-64=CPUâ€™
       Specify which cpu variant the compiler should generate code for by
!      default.  CPU will be used as the default value of the â€˜-mcpu=â€™
       switch.  This option is only supported on some targets, including
       ARC, ARM, i386, M68k, PowerPC, and SPARC.  It is mandatory for ARC.
!      The â€˜--with-cpu-32â€™ and â€˜--with-cpu-64â€™ options specify separate
       default CPUs for 32-bit and 64-bit modes; these options are only
       supported for aarch64, i386, x86-64, PowerPC, and SPARC.
  
! â€˜--with-schedule=CPUâ€™
! â€˜--with-arch=CPUâ€™
! â€˜--with-arch-32=CPUâ€™
! â€˜--with-arch-64=CPUâ€™
! â€˜--with-tune=CPUâ€™
! â€˜--with-tune-32=CPUâ€™
! â€˜--with-tune-64=CPUâ€™
! â€˜--with-abi=ABIâ€™
! â€˜--with-fpu=TYPEâ€™
! â€˜--with-float=TYPEâ€™
! â€˜--with-simd=TYPEâ€™
       These configure options provide default values for the
!      â€˜-mschedule=â€™, â€˜-march=â€™, â€˜-mtune=â€™, â€˜-mabi=â€™, and â€˜-mfpu=â€™ options
!      and for â€˜-mhard-floatâ€™ or â€˜-msoft-floatâ€™.  As with â€˜--with-cpuâ€™,
       which switches will be accepted and acceptable values of the
       arguments depend on the target.
  
! â€˜--with-mode=MODEâ€™
!      Specify if the compiler should default to â€˜-marmâ€™ or â€˜-mthumbâ€™.
       This option is only supported on ARM targets.
  
! â€˜--with-stack-offset=NUMâ€™
       This option sets the default for the -mstack-offset=NUM option, and
       will thus generally also control the setting of this option for
       libraries.  This option is only supported on Epiphany targets.
  
! â€˜--with-fpmath=ISAâ€™
!      This options sets â€˜-mfpmath=sseâ€™ by default and specifies the
       default ISA for floating-point arithmetics.  You can select either
!      â€˜sseâ€™ which enables â€˜-msse2â€™ or â€˜avxâ€™ which enables â€˜-mavxâ€™ by
       default.  This option is only supported on i386 and x86-64 targets.
  
! â€˜--with-fp-32=MODEâ€™
!      On MIPS targets, set the default value for the â€˜-mfpâ€™ option when
       using the o32 ABI. The possibilities for MODE are:
!      â€˜32â€™
!           Use the o32 FP32 ABI extension, as with the â€˜-mfp32â€™
            command-line option.
!      â€˜xxâ€™
!           Use the o32 FPXX ABI extension, as with the â€˜-mfpxxâ€™
            command-line option.
!      â€˜64â€™
!           Use the o32 FP64 ABI extension, as with the â€˜-mfp64â€™
            command-line option.
       In the absence of this configuration option the default is to use
       the o32 FP32 ABI extension.
  
! â€˜--with-odd-spreg-32â€™
!      On MIPS targets, set the â€˜-modd-spregâ€™ option by default when using
       the o32 ABI.
  
! â€˜--without-odd-spreg-32â€™
!      On MIPS targets, set the â€˜-mno-odd-spregâ€™ option by default when
       using the o32 ABI. This is normally used in conjunction with
!      â€˜--with-fp-32=64â€™ in order to target the o32 FP64A ABI extension.
  
! â€˜--with-nan=ENCODINGâ€™
       On MIPS targets, set the default encoding convention to use for the
       special not-a-number (NaN) IEEE 754 floating-point data.  The
       possibilities for ENCODING are:
!      â€˜legacyâ€™
!           Use the legacy encoding, as with the â€˜-mnan=legacyâ€™
            command-line option.
!      â€˜2008â€™
!           Use the 754-2008 encoding, as with the â€˜-mnan=2008â€™
            command-line option.
       To use this configuration option you must have an assembler version
!      installed that supports the â€˜-mnan=â€™ command-line option too.  In
       the absence of this configuration option the default convention is
!      the legacy encoding, as when neither of the â€˜-mnan=2008â€™ and
!      â€˜-mnan=legacyâ€™ command-line options has been used.
  
! â€˜--with-divide=TYPEâ€™
       Specify how the compiler should generate code for checking for
       division by zero.  This option is only supported on the MIPS
       target.  The possibilities for TYPE are:
!      â€˜trapsâ€™
            Division by zero checks use conditional traps (this is the
            default on systems that support conditional traps).
!      â€˜breaksâ€™
            Division by zero checks use the break instruction.
  
! â€˜--with-compact-branches=POLICYâ€™
       Specify how the compiler should generate branch instructions.  This
       option is only supported on the MIPS target.  The possibilities for
       TYPE are:
!      â€˜optimalâ€™
            Cause a delay slot branch to be used if one is available in
            the current ISA and the delay slot is successfully filled.  If
            the delay slot is not filled, a compact branch will be chosen
            if one is available.
!      â€˜neverâ€™
            Ensures that compact branch instructions will never be
            generated.
!      â€˜alwaysâ€™
            Ensures that a compact branch instruction will be generated if
            available.  If a compact branch instruction is not available,
            a delay slot form of the branch will be used instead.  This
*************** option.
*** 1549,1578 ****
            pre-R6/microMIPS/MIPS16, this option is just same as
            never/optimal.
  
! '--with-llsc'
!      On MIPS targets, make '-mllsc' the default when no '-mno-llsc'
       option is passed.  This is the default for Linux-based targets, as
       the kernel will emulate them if the ISA does not provide them.
  
! '--without-llsc'
!      On MIPS targets, make '-mno-llsc' the default when no '-mllsc'
       option is passed.
  
! '--with-synci'
!      On MIPS targets, make '-msynci' the default when no '-mno-synci'
       option is passed.
  
! '--without-synci'
!      On MIPS targets, make '-mno-synci' the default when no '-msynci'
       option is passed.  This is the default.
  
! '--with-lxc1-sxc1'
!      On MIPS targets, make '-mlxc1-sxc1' the default when no
!      '-mno-lxc1-sxc1' option is passed.  This is the default.
  
! '--without-lxc1-sxc1'
!      On MIPS targets, make '-mno-lxc1-sxc1' the default when no
!      '-mlxc1-sxc1' option is passed.  The indexed load/store
       instructions are not directly a problem but can lead to unexpected
       behaviour when deployed in an application intended for a 32-bit
       address space but run on a 64-bit processor.  The issue is seen
--- 1549,1578 ----
            pre-R6/microMIPS/MIPS16, this option is just same as
            never/optimal.
  
! â€˜--with-llscâ€™
!      On MIPS targets, make â€˜-mllscâ€™ the default when no â€˜-mno-llscâ€™
       option is passed.  This is the default for Linux-based targets, as
       the kernel will emulate them if the ISA does not provide them.
  
! â€˜--without-llscâ€™
!      On MIPS targets, make â€˜-mno-llscâ€™ the default when no â€˜-mllscâ€™
       option is passed.
  
! â€˜--with-synciâ€™
!      On MIPS targets, make â€˜-msynciâ€™ the default when no â€˜-mno-synciâ€™
       option is passed.
  
! â€˜--without-synciâ€™
!      On MIPS targets, make â€˜-mno-synciâ€™ the default when no â€˜-msynciâ€™
       option is passed.  This is the default.
  
! â€˜--with-lxc1-sxc1â€™
!      On MIPS targets, make â€˜-mlxc1-sxc1â€™ the default when no
!      â€˜-mno-lxc1-sxc1â€™ option is passed.  This is the default.
  
! â€˜--without-lxc1-sxc1â€™
!      On MIPS targets, make â€˜-mno-lxc1-sxc1â€™ the default when no
!      â€˜-mlxc1-sxc1â€™ option is passed.  The indexed load/store
       instructions are not directly a problem but can lead to unexpected
       behaviour when deployed in an application intended for a 32-bit
       address space but run on a 64-bit processor.  The issue is seen
*************** option.
*** 1580,1598 ****
       applications with 64-bit addressing enabled which affects the
       overflow behaviour of the indexed addressing mode.  GCC will assume
       that ordinary 32-bit arithmetic overflow behaviour is the same
!      whether performed as an 'addu' instruction or as part of the
!      address calculation in 'lwxc1' type instructions.  This assumption
       holds true in a pure 32-bit environment and can hold true in a
       64-bit environment if the address space is accurately set to be
       32-bit for o32 and n32.
  
! '--with-madd4'
!      On MIPS targets, make '-mmadd4' the default when no '-mno-madd4'
       option is passed.  This is the default.
  
! '--without-madd4'
!      On MIPS targets, make '-mno-madd4' the default when no '-mmadd4'
!      option is passed.  The 'madd4' instruction family can be
       problematic when targeting a combination of cores that implement
       these instructions differently.  There are two known cores that
       implement these as fused operations instead of unfused (where
--- 1580,1598 ----
       applications with 64-bit addressing enabled which affects the
       overflow behaviour of the indexed addressing mode.  GCC will assume
       that ordinary 32-bit arithmetic overflow behaviour is the same
!      whether performed as an â€˜adduâ€™ instruction or as part of the
!      address calculation in â€˜lwxc1â€™ type instructions.  This assumption
       holds true in a pure 32-bit environment and can hold true in a
       64-bit environment if the address space is accurately set to be
       32-bit for o32 and n32.
  
! â€˜--with-madd4â€™
!      On MIPS targets, make â€˜-mmadd4â€™ the default when no â€˜-mno-madd4â€™
       option is passed.  This is the default.
  
! â€˜--without-madd4â€™
!      On MIPS targets, make â€˜-mno-madd4â€™ the default when no â€˜-mmadd4â€™
!      option is passed.  The â€˜madd4â€™ instruction family can be
       problematic when targeting a combination of cores that implement
       these instructions differently.  There are two known cores that
       implement these as fused operations instead of unfused (where
*************** option.
*** 1600,1676 ****
       only way to ensure compatible code is generated; this will incur a
       performance penalty.
  
! '--with-msa'
!      On MIPS targets, make '-mmsa' the default when no '-mno-msa' option
       is passed.
  
! '--without-msa'
!      On MIPS targets, make '-mno-msa' the default when no '-mmsa' option
       is passed.  This is the default.
  
! '--with-mips-plt'
       On MIPS targets, make use of copy relocations and PLTs.  These
       features are extensions to the traditional SVR4-based MIPS ABIs and
       require support from GNU binutils and the runtime C library.
  
! '--with-stack-clash-protection-guard-size=SIZE'
       On certain targets this option sets the default stack clash
       protection guard size as a power of two in bytes.  On AArch64 SIZE
       is required to be either 12 (4KB) or 16 (64KB).
  
! '--with-isa-spec=ISA-SPEC-STRING'
       On RISC-V targets specify the default version of the RISC-V
       Unprivileged (formerly User-Level) ISA specification to produce
       code conforming to.  The possibilities for ISA-SPEC-STRING are:
!      '2.2'
            Produce code conforming to version 2.2.
!      '20190608'
            Produce code conforming to version 20190608.
!      '20191213'
            Produce code conforming to version 20191213.
       In the absence of this configuration option the default version is
       20191213.
  
! '--enable-__cxa_atexit'
!      Define if you want to use '__cxa_atexit', rather than atexit, to
       register C++ destructors for local statics and global objects.
       This is essential for fully standards-compliant handling of
!      destructors, but requires '__cxa_atexit' in libc.  This option is
       currently only available on systems with GNU libc.  When enabled,
!      this will cause '-fuse-cxa-atexit' to be passed by default.
  
! '--enable-gnu-indirect-function'
!      Define if you want to enable the 'ifunc' attribute.  This option is
       currently only available on systems with GNU libc on certain
       targets.
  
! '--enable-target-optspace'
       Specify that target libraries should be optimized for code space
       instead of code speed.  This is the default for the m32r platform.
  
! '--with-cpp-install-dir=DIRNAME'
!      Specify that the user visible 'cpp' program should be installed in
!      'PREFIX/DIRNAME/cpp', in addition to BINDIR.
  
! '--enable-comdat'
       Enable COMDAT group support.  This is primarily used to override
       the automatically detected value.
  
! '--enable-initfini-array'
!      Force the use of sections '.init_array' and '.fini_array' (instead
!      of '.init' and '.fini') for constructors and destructors.  Option
!      '--disable-initfini-array' has the opposite effect.  If neither
       option is specified, the configure script will try to guess whether
!      the '.init_array' and '.fini_array' sections are supported and, if
       they are, use them.
  
! '--enable-link-mutex'
       When building GCC, use a mutex to avoid linking the compilers for
       multiple languages at the same time, to avoid thrashing on build
       systems with limited free memory.  The default is not to use such a
       mutex.
  
! '--enable-link-serialization'
       When building GCC, use make dependencies to serialize linking the
       compilers for multiple languages, to avoid thrashing on build
       systems with limited free memory.  The default is not to add such
--- 1600,1676 ----
       only way to ensure compatible code is generated; this will incur a
       performance penalty.
  
! â€˜--with-msaâ€™
!      On MIPS targets, make â€˜-mmsaâ€™ the default when no â€˜-mno-msaâ€™ option
       is passed.
  
! â€˜--without-msaâ€™
!      On MIPS targets, make â€˜-mno-msaâ€™ the default when no â€˜-mmsaâ€™ option
       is passed.  This is the default.
  
! â€˜--with-mips-pltâ€™
       On MIPS targets, make use of copy relocations and PLTs.  These
       features are extensions to the traditional SVR4-based MIPS ABIs and
       require support from GNU binutils and the runtime C library.
  
! â€˜--with-stack-clash-protection-guard-size=SIZEâ€™
       On certain targets this option sets the default stack clash
       protection guard size as a power of two in bytes.  On AArch64 SIZE
       is required to be either 12 (4KB) or 16 (64KB).
  
! â€˜--with-isa-spec=ISA-SPEC-STRINGâ€™
       On RISC-V targets specify the default version of the RISC-V
       Unprivileged (formerly User-Level) ISA specification to produce
       code conforming to.  The possibilities for ISA-SPEC-STRING are:
!      â€˜2.2â€™
            Produce code conforming to version 2.2.
!      â€˜20190608â€™
            Produce code conforming to version 20190608.
!      â€˜20191213â€™
            Produce code conforming to version 20191213.
       In the absence of this configuration option the default version is
       20191213.
  
! â€˜--enable-__cxa_atexitâ€™
!      Define if you want to use â€˜__cxa_atexitâ€™, rather than atexit, to
       register C++ destructors for local statics and global objects.
       This is essential for fully standards-compliant handling of
!      destructors, but requires â€˜__cxa_atexitâ€™ in libc.  This option is
       currently only available on systems with GNU libc.  When enabled,
!      this will cause â€˜-fuse-cxa-atexitâ€™ to be passed by default.
  
! â€˜--enable-gnu-indirect-functionâ€™
!      Define if you want to enable the â€˜ifuncâ€™ attribute.  This option is
       currently only available on systems with GNU libc on certain
       targets.
  
! â€˜--enable-target-optspaceâ€™
       Specify that target libraries should be optimized for code space
       instead of code speed.  This is the default for the m32r platform.
  
! â€˜--with-cpp-install-dir=DIRNAMEâ€™
!      Specify that the user visible â€˜cppâ€™ program should be installed in
!      â€˜PREFIX/DIRNAME/cppâ€™, in addition to BINDIR.
  
! â€˜--enable-comdatâ€™
       Enable COMDAT group support.  This is primarily used to override
       the automatically detected value.
  
! â€˜--enable-initfini-arrayâ€™
!      Force the use of sections â€˜.init_arrayâ€™ and â€˜.fini_arrayâ€™ (instead
!      of â€˜.initâ€™ and â€˜.finiâ€™) for constructors and destructors.  Option
!      â€˜--disable-initfini-arrayâ€™ has the opposite effect.  If neither
       option is specified, the configure script will try to guess whether
!      the â€˜.init_arrayâ€™ and â€˜.fini_arrayâ€™ sections are supported and, if
       they are, use them.
  
! â€˜--enable-link-mutexâ€™
       When building GCC, use a mutex to avoid linking the compilers for
       multiple languages at the same time, to avoid thrashing on build
       systems with limited free memory.  The default is not to use such a
       mutex.
  
! â€˜--enable-link-serializationâ€™
       When building GCC, use make dependencies to serialize linking the
       compilers for multiple languages, to avoid thrashing on build
       systems with limited free memory.  The default is not to add such
*************** option.
*** 1679,1707 ****
       allow that number of concurrent link processes for the large
       binaries.
  
! '--enable-maintainer-mode'
       The build rules that regenerate the Autoconf and Automake output
!      files as well as the GCC master message catalog 'gcc.pot' are
       normally disabled.  This is because it can only be rebuilt if the
       complete source tree is present.  If you have changed the sources
       and want to rebuild the catalog, configuring with
!      '--enable-maintainer-mode' will enable this.  Note that you need a
!      recent version of the 'gettext' tools to do so.
  
! '--disable-bootstrap'
       For a native build, the default configuration is to perform a
!      3-stage bootstrap of the compiler when 'make' is invoked, testing
       that GCC can compile itself correctly.  If you want to disable this
!      process, you can configure with '--disable-bootstrap'.
  
! '--enable-bootstrap'
       In special cases, you may want to perform a 3-stage build even if
       the target and host triplets are different.  This is possible when
       the host can run code compiled for the target (e.g. host is
       i686-linux, target is i486-linux).  Starting from GCC 4.2, to do
!      this you have to configure explicitly with '--enable-bootstrap'.
  
! '--enable-generated-files-in-srcdir'
       Neither the .c and .h files that are generated from Bison and flex
       nor the info manuals and man pages that are built from the .texi
       files are present in the repository development tree.  When
--- 1679,1707 ----
       allow that number of concurrent link processes for the large
       binaries.
  
! â€˜--enable-maintainer-modeâ€™
       The build rules that regenerate the Autoconf and Automake output
!      files as well as the GCC master message catalog â€˜gcc.potâ€™ are
       normally disabled.  This is because it can only be rebuilt if the
       complete source tree is present.  If you have changed the sources
       and want to rebuild the catalog, configuring with
!      â€˜--enable-maintainer-modeâ€™ will enable this.  Note that you need a
!      recent version of the â€˜gettextâ€™ tools to do so.
  
! â€˜--disable-bootstrapâ€™
       For a native build, the default configuration is to perform a
!      3-stage bootstrap of the compiler when â€˜makeâ€™ is invoked, testing
       that GCC can compile itself correctly.  If you want to disable this
!      process, you can configure with â€˜--disable-bootstrapâ€™.
  
! â€˜--enable-bootstrapâ€™
       In special cases, you may want to perform a 3-stage build even if
       the target and host triplets are different.  This is possible when
       the host can run code compiled for the target (e.g. host is
       i686-linux, target is i486-linux).  Starting from GCC 4.2, to do
!      this you have to configure explicitly with â€˜--enable-bootstrapâ€™.
  
! â€˜--enable-generated-files-in-srcdirâ€™
       Neither the .c and .h files that are generated from Bison and flex
       nor the info manuals and man pages that are built from the .texi
       files are present in the repository development tree.  When
*************** option.
*** 1710,1907 ****
       directory, which allows for the source to be in a readonly
       directory.
  
!      If you configure with '--enable-generated-files-in-srcdir' then
       those generated files will go into the source directory.  This is
       mainly intended for generating release or prerelease tarballs of
       the GCC sources, since it is not a requirement that the users of
       source releases to have flex, Bison, or makeinfo.
  
! '--enable-version-specific-runtime-libs'
       Specify that runtime libraries should be installed in the compiler
!      specific subdirectory ('LIBDIR/gcc') rather than the usual places.
!      In addition, 'libstdc++''s include files will be installed into
!      'LIBDIR' unless you overruled it by using
!      '--with-gxx-include-dir=DIRNAME'.  Using this option is
       particularly useful if you intend to use several versions of GCC in
!      parallel.  The default is 'yes' for 'libada', and 'no' for the
       remaining libraries.
  
! '--with-darwin-extra-rpath'
       This is provided to allow distributions to add a single additional
       runpath on Darwin / macOS systems.  This allows for cases where the
       installed GCC library directories are then symlinked to a common
       directory outside of the GCC installation.
  
! '--with-aix-soname='aix', 'svr4' or 'both''
!      Traditional AIX shared library versioning (versioned 'Shared
!      Object' files as members of unversioned 'Archive Library' files
!      named 'lib.a') causes numerous headaches for package managers.
!      However, 'Import Files' as members of 'Archive Library' files allow
       for *filename-based versioning* of shared libraries as seen on
       Linux/SVR4, where this is called the "SONAME". But as they prevent
!      static linking, 'Import Files' may be used with 'Runtime Linking'
!      only, where the linker does search for 'libNAME.so' before
!      'libNAME.a' library filenames with the '-lNAME' linker flag.
  
       For detailed information please refer to the AIX ld Command
       reference.
  
       As long as shared library creation is enabled, upon:
!      '--with-aix-soname=aix'
!      '--with-aix-soname=both'
!           A (traditional AIX) 'Shared Archive Library' file is created:
!              * using the 'libNAME.a' filename scheme
!              * with the 'Shared Object' file as archive member named
!                'libNAME.so.V' (except for 'libgcc_s', where the 'Shared
!                Object' file is named 'shr.o' for backwards
                 compatibility), which
!                   - is used for runtime loading from inside the
!                     'libNAME.a' file
!                   - is used for dynamic loading via
!                     'dlopen("libNAME.a(libNAME.so.V)", RTLD_MEMBER)'
!                   - is used for shared linking
!                   - is used for static linking, so no separate 'Static
!                     Archive Library' file is needed
!      '--with-aix-soname=both'
!      '--with-aix-soname=svr4'
!           A (second) 'Shared Archive Library' file is created:
!              * using the 'libNAME.so.V' filename scheme
!              * with the 'Shared Object' file as archive member named
!                'shr.o', which
!                   - is created with the '-G linker flag'
!                   - has the 'F_LOADONLY' flag set
!                   - is used for runtime loading from inside the
!                     'libNAME.so.V' file
!                   - is used for dynamic loading via
!                     'dlopen("libNAME.so.V(shr.o)", RTLD_MEMBER)'
!              * with the 'Import File' as archive member named 'shr.imp',
                 which
!                   - refers to 'libNAME.so.V(shr.o)' as the "SONAME", to
!                     be recorded in the 'Loader Section' of subsequent
                      binaries
!                   - indicates whether 'libNAME.so.V(shr.o)' is 32 or 64
                      bit
!                   - lists all the public symbols exported by
!                     'lib.so.V(shr.o)', eventually decorated with the
!                     ''weak' Keyword'
!                   - is necessary for shared linking against
!                     'lib.so.V(shr.o)'
!           A symbolic link using the 'libNAME.so' filename scheme is
            created:
!              * pointing to the 'libNAME.so.V' 'Shared Archive Library'
                 file
!              * to permit the 'ld Command' to find 'lib.so.V(shr.imp)'
!                via the '-lNAME' argument (requires 'Runtime Linking' to
                 be enabled)
!              * to permit dynamic loading of 'lib.so.V(shr.o)' without
                 the need to specify the version number via
!                'dlopen("libNAME.so(shr.o)", RTLD_MEMBER)'
  
       As long as static library creation is enabled, upon:
!      '--with-aix-soname=svr4'
!           A 'Static Archive Library' is created:
!              * using the 'libNAME.a' filename scheme
!              * with all the 'Static Object' files as archive members,
                 which
!                   - are used for static linking
  
!      While the aix-soname='svr4' option does not create 'Shared Object'
!      files as members of unversioned 'Archive Library' files any more,
!      package managers still are responsible to transfer 'Shared Object'
       files found as member of a previously installed unversioned
!      'Archive Library' file into the newly installed 'Archive Library'
       file with the same filename.
  
!      _WARNING:_ Creating 'Shared Object' files with 'Runtime Linking'
!      enabled may bloat the TOC, eventually leading to 'TOC overflow'
!      errors, requiring the use of either the '-Wl,-bbigtoc' linker flag
!      (seen to break with the 'GDB' debugger) or some of the TOC-related
       compiler flags, *Note RS/6000 and PowerPC Options: (gcc)RS/6000 and
       PowerPC Options.
  
!      '--with-aix-soname' is currently supported by 'libgcc_s' only, so
       this option is still experimental and not for normal use yet.
  
!      Default is the traditional behavior '--with-aix-soname='aix''.
  
! '--enable-languages=LANG1,LANG2,...'
       Specify that only a particular subset of compilers and their
       runtime libraries should be built.  For a list of valid values for
!      LANGN you can issue the following command in the 'gcc' directory of
       your GCC source tree:
            grep ^language= */config-lang.in
!      Currently, you can use any of the following: 'all', 'default',
!      'ada', 'c', 'c++', 'cobol', 'd', 'fortran', 'go', 'jit', 'lto',
!      'm2', 'objc', 'obj-c++'.  Building the Ada compiler has special
       requirements, see below.  If you do not pass this flag, or specify
!      the option 'default', then the default languages available in the
!      'gcc' sub-tree will be configured.  Ada, COBOL, D, Go, Jit,
       Objective-C++ and Modula-2 are not default languages.  LTO is not a
!      default language, but is built by default because '--enable-lto' is
       enabled by default.  The other languages are default languages.  If
!      'all' is specified, then all available languages are built.  An
!      exception is 'jit' language, which requires '--enable-host-shared'
!      to be included with 'all'.
  
! '--enable-stage1-languages=LANG1,LANG2,...'
       Specify that a particular subset of compilers and their runtime
       libraries should be built with the system C compiler during stage 1
       of the bootstrap process, rather than only in later stages with the
       bootstrapped C compiler.  The list of valid values is the same as
!      for '--enable-languages', and the option 'all' will select all of
!      the languages enabled by '--enable-languages'.  This option is
       primarily useful for GCC development; for instance, when a
       development version of the compiler cannot bootstrap due to
       compiler bugs, or when one is debugging front ends other than the C
       front end.  When this option is used, one can then build the target
       libraries for the specified languages with the stage-1 compiler by
!      using 'make stage1-bubble all-target', or run the testsuite on the
!      stage-1 compiler for the specified languages using 'make
!      stage1-start check-gcc'.
  
! '--disable-libada'
       Specify that the run-time libraries and tools used by GNAT should
       not be built.  This can be useful for debugging, or for
       compatibility with previous Ada build procedures, when it was
!      required to explicitly do a 'make -C gcc gnatlib_and_tools'.
  
! '--disable-libgm2'
       Specify that the run-time libraries and tools used by Modula-2
       should not be built.  This can be useful for debugging.
  
! '--disable-libsanitizer'
       Specify that the run-time libraries for the various sanitizers
       should not be built.
  
! '--disable-libssp'
       Specify that the run-time libraries for stack smashing protection
       should not be built or linked against.  On many targets library
       support is provided by the C library instead.
  
! '--disable-libquadmath'
       Specify that the GCC quad-precision math library should not be
       built.  On some systems, the library is required to be linkable
       when building the Fortran front end, unless
!      '--disable-libquadmath-support' is used.
  
! '--disable-libquadmath-support'
!      Specify that the Fortran front end and 'libgfortran' do not add
!      support for 'libquadmath' on systems supporting it.
  
! '--disable-libgomp'
       Specify that the GNU Offloading and Multi Processing Runtime
       Library should not be built.
  
! '--disable-libvtv'
       Specify that the run-time libraries used by vtable verification
       should not be built.
  
! '--with-dwarf2'
       Specify that the compiler should use DWARF debugging information as
       the default; the exact DWARF version that is the default is
       target-specific.
  
! '--with-advance-toolchain=AT'
       On 64-bit PowerPC Linux systems, configure the compiler to use the
       header files, library files, and the dynamic linker from the
       Advance Toolchain release AT instead of the default versions that
--- 1710,1907 ----
       directory, which allows for the source to be in a readonly
       directory.
  
!      If you configure with â€˜--enable-generated-files-in-srcdirâ€™ then
       those generated files will go into the source directory.  This is
       mainly intended for generating release or prerelease tarballs of
       the GCC sources, since it is not a requirement that the users of
       source releases to have flex, Bison, or makeinfo.
  
! â€˜--enable-version-specific-runtime-libsâ€™
       Specify that runtime libraries should be installed in the compiler
!      specific subdirectory (â€˜LIBDIR/gccâ€™) rather than the usual places.
!      In addition, â€˜libstdc++â€™'s include files will be installed into
!      â€˜LIBDIRâ€™ unless you overruled it by using
!      â€˜--with-gxx-include-dir=DIRNAMEâ€™.  Using this option is
       particularly useful if you intend to use several versions of GCC in
!      parallel.  The default is â€˜yesâ€™ for â€˜libadaâ€™, and â€˜noâ€™ for the
       remaining libraries.
  
! â€˜--with-darwin-extra-rpathâ€™
       This is provided to allow distributions to add a single additional
       runpath on Darwin / macOS systems.  This allows for cases where the
       installed GCC library directories are then symlinked to a common
       directory outside of the GCC installation.
  
! â€˜--with-aix-soname=â€˜aixâ€™, â€˜svr4â€™ or â€˜bothâ€™â€™
!      Traditional AIX shared library versioning (versioned â€˜Shared
!      Objectâ€™ files as members of unversioned â€˜Archive Libraryâ€™ files
!      named â€˜lib.aâ€™) causes numerous headaches for package managers.
!      However, â€˜Import Filesâ€™ as members of â€˜Archive Libraryâ€™ files allow
       for *filename-based versioning* of shared libraries as seen on
       Linux/SVR4, where this is called the "SONAME". But as they prevent
!      static linking, â€˜Import Filesâ€™ may be used with â€˜Runtime Linkingâ€™
!      only, where the linker does search for â€˜libNAME.soâ€™ before
!      â€˜libNAME.aâ€™ library filenames with the â€˜-lNAMEâ€™ linker flag.
  
       For detailed information please refer to the AIX ld Command
       reference.
  
       As long as shared library creation is enabled, upon:
!      â€˜--with-aix-soname=aixâ€™
!      â€˜--with-aix-soname=bothâ€™
!           A (traditional AIX) â€˜Shared Archive Libraryâ€™ file is created:
!              â€¢ using the â€˜libNAME.aâ€™ filename scheme
!              â€¢ with the â€˜Shared Objectâ€™ file as archive member named
!                â€˜libNAME.so.Vâ€™ (except for â€˜libgcc_sâ€™, where the â€˜Shared
!                Objectâ€™ file is named â€˜shr.oâ€™ for backwards
                 compatibility), which
!                   âˆ’ is used for runtime loading from inside the
!                     â€˜libNAME.aâ€™ file
!                   âˆ’ is used for dynamic loading via
!                     â€˜dlopen("libNAME.a(libNAME.so.V)", RTLD_MEMBER)â€™
!                   âˆ’ is used for shared linking
!                   âˆ’ is used for static linking, so no separate â€˜Static
!                     Archive Libraryâ€™ file is needed
!      â€˜--with-aix-soname=bothâ€™
!      â€˜--with-aix-soname=svr4â€™
!           A (second) â€˜Shared Archive Libraryâ€™ file is created:
!              â€¢ using the â€˜libNAME.so.Vâ€™ filename scheme
!              â€¢ with the â€˜Shared Objectâ€™ file as archive member named
!                â€˜shr.oâ€™, which
!                   âˆ’ is created with the â€˜-G linker flagâ€™
!                   âˆ’ has the â€˜F_LOADONLYâ€™ flag set
!                   âˆ’ is used for runtime loading from inside the
!                     â€˜libNAME.so.Vâ€™ file
!                   âˆ’ is used for dynamic loading via
!                     â€˜dlopen("libNAME.so.V(shr.o)", RTLD_MEMBER)â€™
!              â€¢ with the â€˜Import Fileâ€™ as archive member named â€˜shr.impâ€™,
                 which
!                   âˆ’ refers to â€˜libNAME.so.V(shr.o)â€™ as the "SONAME", to
!                     be recorded in the â€˜Loader Sectionâ€™ of subsequent
                      binaries
!                   âˆ’ indicates whether â€˜libNAME.so.V(shr.o)â€™ is 32 or 64
                      bit
!                   âˆ’ lists all the public symbols exported by
!                     â€˜lib.so.V(shr.o)â€™, eventually decorated with the
!                     â€˜â€˜weakâ€™ Keywordâ€™
!                   âˆ’ is necessary for shared linking against
!                     â€˜lib.so.V(shr.o)â€™
!           A symbolic link using the â€˜libNAME.soâ€™ filename scheme is
            created:
!              â€¢ pointing to the â€˜libNAME.so.Vâ€™ â€˜Shared Archive Libraryâ€™
                 file
!              â€¢ to permit the â€˜ld Commandâ€™ to find â€˜lib.so.V(shr.imp)â€™
!                via the â€˜-lNAMEâ€™ argument (requires â€˜Runtime Linkingâ€™ to
                 be enabled)
!              â€¢ to permit dynamic loading of â€˜lib.so.V(shr.o)â€™ without
                 the need to specify the version number via
!                â€˜dlopen("libNAME.so(shr.o)", RTLD_MEMBER)â€™
  
       As long as static library creation is enabled, upon:
!      â€˜--with-aix-soname=svr4â€™
!           A â€˜Static Archive Libraryâ€™ is created:
!              â€¢ using the â€˜libNAME.aâ€™ filename scheme
!              â€¢ with all the â€˜Static Objectâ€™ files as archive members,
                 which
!                   âˆ’ are used for static linking
  
!      While the aix-soname=â€˜svr4â€™ option does not create â€˜Shared Objectâ€™
!      files as members of unversioned â€˜Archive Libraryâ€™ files any more,
!      package managers still are responsible to transfer â€˜Shared Objectâ€™
       files found as member of a previously installed unversioned
!      â€˜Archive Libraryâ€™ file into the newly installed â€˜Archive Libraryâ€™
       file with the same filename.
  
!      _WARNING:_ Creating â€˜Shared Objectâ€™ files with â€˜Runtime Linkingâ€™
!      enabled may bloat the TOC, eventually leading to â€˜TOC overflowâ€™
!      errors, requiring the use of either the â€˜-Wl,-bbigtocâ€™ linker flag
!      (seen to break with the â€˜GDBâ€™ debugger) or some of the TOC-related
       compiler flags, *Note RS/6000 and PowerPC Options: (gcc)RS/6000 and
       PowerPC Options.
  
!      â€˜--with-aix-sonameâ€™ is currently supported by â€˜libgcc_sâ€™ only, so
       this option is still experimental and not for normal use yet.
  
!      Default is the traditional behavior â€˜--with-aix-soname=â€˜aixâ€™â€™.
  
! â€˜--enable-languages=LANG1,LANG2,...â€™
       Specify that only a particular subset of compilers and their
       runtime libraries should be built.  For a list of valid values for
!      LANGN you can issue the following command in the â€˜gccâ€™ directory of
       your GCC source tree:
            grep ^language= */config-lang.in
!      Currently, you can use any of the following: â€˜allâ€™, â€˜defaultâ€™,
!      â€˜adaâ€™, â€˜câ€™, â€˜c++â€™, â€˜cobolâ€™, â€˜dâ€™, â€˜fortranâ€™, â€˜goâ€™, â€˜jitâ€™, â€˜ltoâ€™,
!      â€˜m2â€™, â€˜objcâ€™, â€˜obj-c++â€™.  Building the Ada compiler has special
       requirements, see below.  If you do not pass this flag, or specify
!      the option â€˜defaultâ€™, then the default languages available in the
!      â€˜gccâ€™ sub-tree will be configured.  Ada, COBOL, D, Go, Jit,
       Objective-C++ and Modula-2 are not default languages.  LTO is not a
!      default language, but is built by default because â€˜--enable-ltoâ€™ is
       enabled by default.  The other languages are default languages.  If
!      â€˜allâ€™ is specified, then all available languages are built.  An
!      exception is â€˜jitâ€™ language, which requires â€˜--enable-host-sharedâ€™
!      to be included with â€˜allâ€™.
  
! â€˜--enable-stage1-languages=LANG1,LANG2,...â€™
       Specify that a particular subset of compilers and their runtime
       libraries should be built with the system C compiler during stage 1
       of the bootstrap process, rather than only in later stages with the
       bootstrapped C compiler.  The list of valid values is the same as
!      for â€˜--enable-languagesâ€™, and the option â€˜allâ€™ will select all of
!      the languages enabled by â€˜--enable-languagesâ€™.  This option is
       primarily useful for GCC development; for instance, when a
       development version of the compiler cannot bootstrap due to
       compiler bugs, or when one is debugging front ends other than the C
       front end.  When this option is used, one can then build the target
       libraries for the specified languages with the stage-1 compiler by
!      using â€˜make stage1-bubble all-targetâ€™, or run the testsuite on the
!      stage-1 compiler for the specified languages using â€˜make
!      stage1-start check-gccâ€™.
  
! â€˜--disable-libadaâ€™
       Specify that the run-time libraries and tools used by GNAT should
       not be built.  This can be useful for debugging, or for
       compatibility with previous Ada build procedures, when it was
!      required to explicitly do a â€˜make -C gcc gnatlib_and_toolsâ€™.
  
! â€˜--disable-libgm2â€™
       Specify that the run-time libraries and tools used by Modula-2
       should not be built.  This can be useful for debugging.
  
! â€˜--disable-libsanitizerâ€™
       Specify that the run-time libraries for the various sanitizers
       should not be built.
  
! â€˜--disable-libsspâ€™
       Specify that the run-time libraries for stack smashing protection
       should not be built or linked against.  On many targets library
       support is provided by the C library instead.
  
! â€˜--disable-libquadmathâ€™
       Specify that the GCC quad-precision math library should not be
       built.  On some systems, the library is required to be linkable
       when building the Fortran front end, unless
!      â€˜--disable-libquadmath-supportâ€™ is used.
  
! â€˜--disable-libquadmath-supportâ€™
!      Specify that the Fortran front end and â€˜libgfortranâ€™ do not add
!      support for â€˜libquadmathâ€™ on systems supporting it.
  
! â€˜--disable-libgompâ€™
       Specify that the GNU Offloading and Multi Processing Runtime
       Library should not be built.
  
! â€˜--disable-libvtvâ€™
       Specify that the run-time libraries used by vtable verification
       should not be built.
  
! â€˜--with-dwarf2â€™
       Specify that the compiler should use DWARF debugging information as
       the default; the exact DWARF version that is the default is
       target-specific.
  
! â€˜--with-advance-toolchain=ATâ€™
       On 64-bit PowerPC Linux systems, configure the compiler to use the
       header files, library files, and the dynamic linker from the
       Advance Toolchain release AT instead of the default versions that
*************** option.
*** 1909,1916 ****
       intended for the developers of GCC, and it is not intended for
       general use.
  
! '--enable-targets=all'
! '--enable-targets=TARGET_LIST'
       Some GCC targets, e.g. powerpc64-linux, build bi-arch compilers.
       These are compilers that are able to generate either 64-bit or
       32-bit code.  Typically, the corresponding 32-bit target, e.g.
--- 1909,1916 ----
       intended for the developers of GCC, and it is not intended for
       general use.
  
! â€˜--enable-targets=allâ€™
! â€˜--enable-targets=TARGET_LISTâ€™
       Some GCC targets, e.g. powerpc64-linux, build bi-arch compilers.
       These are compilers that are able to generate either 64-bit or
       32-bit code.  Typically, the corresponding 32-bit target, e.g.
*************** option.
*** 1923,1988 ****
       affects sparc-linux, powerpc-linux, x86-linux, mips-linux and
       s390-linux.
  
! '--enable-default-pie'
!      Turn on '-fPIE' and '-pie' by default.
  
! '--enable-secureplt'
!      This option enables '-msecure-plt' by default for powerpc-linux.
       *Note RS/6000 and PowerPC Options: (gcc)RS/6000 and PowerPC
       Options,
  
! '--enable-default-ssp'
!      Turn on '-fstack-protector-strong' by default.
  
! '--enable-cld'
!      This option enables '-mcld' by default for 32-bit x86 targets.
       *Note i386 and x86-64 Options: (gcc)i386 and x86-64 Options,
  
! '--enable-large-address-aware'
!      The '--enable-large-address-aware' option arranges for MinGW
!      executables to be linked using the '--large-address-aware' option,
       that enables the use of more than 2GB of memory.  If GCC is
       configured with this option, its effects can be reversed by passing
!      the '-Wl,--disable-large-address-aware' option to the so-configured
       compiler driver.
  
! '--enable-win32-registry'
! '--enable-win32-registry=KEY'
! '--disable-win32-registry'
!      The '--enable-win32-registry' option enables Microsoft
       Windows-hosted GCC to look up installations paths in the registry
       using the following key:
  
            HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\KEY
  
       KEY defaults to GCC version number, and can be overridden by the
!      '--enable-win32-registry=KEY' option.  Vendors and distributors who
       use custom installers are encouraged to provide a different key,
       perhaps one comprised of vendor name and GCC version number, to
       avoid conflict with existing installations.  This feature is
       enabled by default, and can be disabled by
!      '--disable-win32-registry' option.  This option has no effect on
       the other hosts.
  
! '--nfp'
       Specify that the machine does not have a floating point unit.  This
!      option only applies to 'm68k-sun-sunosN'.  On any other system,
!      '--nfp' has no effect.
  
! '--enable-werror'
! '--disable-werror'
! '--enable-werror=yes'
! '--enable-werror=no'
       When you specify this option, it controls whether certain files in
!      the compiler are built with '-Werror' in bootstrap stage2 and
!      later.  If you don't specify it, '-Werror' is turned on for the
       main development trunk.  However it defaults to off for release
       branches and final releases.  The specific files which get
!      '-Werror' are controlled by the Makefiles.
  
! '--enable-checking'
! '--disable-checking'
! '--enable-checking=LIST'
       This option controls performing internal consistency checks in the
       compiler.  It does not change the generated code, but adds error
       checking of the requested complexity.  This slows down the compiler
--- 1923,1988 ----
       affects sparc-linux, powerpc-linux, x86-linux, mips-linux and
       s390-linux.
  
! â€˜--enable-default-pieâ€™
!      Turn on â€˜-fPIEâ€™ and â€˜-pieâ€™ by default.
  
! â€˜--enable-securepltâ€™
!      This option enables â€˜-msecure-pltâ€™ by default for powerpc-linux.
       *Note RS/6000 and PowerPC Options: (gcc)RS/6000 and PowerPC
       Options,
  
! â€˜--enable-default-sspâ€™
!      Turn on â€˜-fstack-protector-strongâ€™ by default.
  
! â€˜--enable-cldâ€™
!      This option enables â€˜-mcldâ€™ by default for 32-bit x86 targets.
       *Note i386 and x86-64 Options: (gcc)i386 and x86-64 Options,
  
! â€˜--enable-large-address-awareâ€™
!      The â€˜--enable-large-address-awareâ€™ option arranges for MinGW
!      executables to be linked using the â€˜--large-address-awareâ€™ option,
       that enables the use of more than 2GB of memory.  If GCC is
       configured with this option, its effects can be reversed by passing
!      the â€˜-Wl,--disable-large-address-awareâ€™ option to the so-configured
       compiler driver.
  
! â€˜--enable-win32-registryâ€™
! â€˜--enable-win32-registry=KEYâ€™
! â€˜--disable-win32-registryâ€™
!      The â€˜--enable-win32-registryâ€™ option enables Microsoft
       Windows-hosted GCC to look up installations paths in the registry
       using the following key:
  
            HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\KEY
  
       KEY defaults to GCC version number, and can be overridden by the
!      â€˜--enable-win32-registry=KEYâ€™ option.  Vendors and distributors who
       use custom installers are encouraged to provide a different key,
       perhaps one comprised of vendor name and GCC version number, to
       avoid conflict with existing installations.  This feature is
       enabled by default, and can be disabled by
!      â€˜--disable-win32-registryâ€™ option.  This option has no effect on
       the other hosts.
  
! â€˜--nfpâ€™
       Specify that the machine does not have a floating point unit.  This
!      option only applies to â€˜m68k-sun-sunosNâ€™.  On any other system,
!      â€˜--nfpâ€™ has no effect.
  
! â€˜--enable-werrorâ€™
! â€˜--disable-werrorâ€™
! â€˜--enable-werror=yesâ€™
! â€˜--enable-werror=noâ€™
       When you specify this option, it controls whether certain files in
!      the compiler are built with â€˜-Werrorâ€™ in bootstrap stage2 and
!      later.  If you don't specify it, â€˜-Werrorâ€™ is turned on for the
       main development trunk.  However it defaults to off for release
       branches and final releases.  The specific files which get
!      â€˜-Werrorâ€™ are controlled by the Makefiles.
  
! â€˜--enable-checkingâ€™
! â€˜--disable-checkingâ€™
! â€˜--enable-checking=LISTâ€™
       This option controls performing internal consistency checks in the
       compiler.  It does not change the generated code, but adds error
       checking of the requested complexity.  This slows down the compiler
*************** option.
*** 1991,2065 ****
  
       When the option is not specified, the active set of checks depends
       on context.  Namely, bootstrap stage 1 defaults to
!      '--enable-checking=yes', builds from release branches or release
!      archives default to '--enable-checking=release', and otherwise
!      '--enable-checking=yes,extra' is used.  When the option is
       specified without a LIST, the result is the same as
!      '--enable-checking=yes'.  Likewise, '--disable-checking' is
!      equivalent to '--enable-checking=no'.
  
!      The categories of checks available in LIST are 'yes' (most common
!      checks 'assert,misc,gc,gimple,rtlflag,runtime,tree,types'), 'no'
!      (no checks at all), 'all' (all but 'valgrind'), 'release' (cheapest
!      checks 'assert,runtime') or 'none' (same as 'no').  'release'
!      checks are always on and to disable them '--disable-checking' or
!      '--enable-checking=no[,<other checks>]' must be explicitly
       requested.  Disabling assertions makes the compiler and runtime
       slightly faster but increases the risk of undetected internal
       errors causing wrong code to be generated.
  
!      Individual checks can be enabled with these flags: 'assert', 'df',
!      'extra', 'fold', 'gc', 'gcac', 'gimple', 'misc', 'rtl', 'rtlflag',
!      'runtime', 'tree', 'types' and 'valgrind'.  'extra' extends 'misc'
       checking with extra checks that might affect code generation and
       should therefore not differ between stage1 and later stages in
       bootstrap.
  
!      The 'valgrind' check requires the external 'valgrind' simulator,
!      available from <https://valgrind.org>.  The 'rtl' checks are
!      expensive and the 'df', 'gcac' and 'valgrind' checks are very
       expensive.
  
! '--disable-stage1-checking'
! '--enable-stage1-checking'
! '--enable-stage1-checking=LIST'
       This option affects only bootstrap build.  If no
!      '--enable-checking' option is specified the stage1 compiler is
!      built with 'yes' checking enabled, otherwise the stage1 checking
!      flags are the same as specified by '--enable-checking'.  To build
       the stage1 compiler with different checking options use
!      '--enable-stage1-checking'.  The list of checking options is the
!      same as for '--enable-checking'.  If your system is too slow or too
       small to bootstrap a released compiler with checking for stage1
!      enabled, you can use '--disable-stage1-checking' to disable
       checking for the stage1 compiler.
  
! '--enable-coverage'
! '--enable-coverage=LEVEL'
       With this option, the compiler is built to collect self coverage
       information, every time it is run.  This is for internal
       development purposes, and only works when the compiler is being
       built with gcc.  The LEVEL argument controls whether the compiler
!      is built optimized or not, values are 'opt' and 'noopt'.  For
       coverage analysis you want to disable optimization, for performance
       analysis you want to enable optimization.  When coverage is
       enabled, the default level is without optimization.
  
! '--enable-gather-detailed-mem-stats'
       When this option is specified more detailed information on memory
       allocation is gathered.  This information is printed when using
!      '-fmem-report'.
  
! '--enable-valgrind-annotations'
       Mark selected memory related operations in the compiler when run
       under valgrind to suppress false positives.
  
! '--enable-nls'
! '--disable-nls'
!      The '--enable-nls' option enables Native Language Support (NLS),
       which lets GCC output diagnostics in languages other than American
       English.  Native Language Support is enabled by default if not
!      doing a canadian cross build.  The '--disable-nls' option disables
       NLS.
  
       Note that this functionality requires either libintl (provided by
--- 1991,2065 ----
  
       When the option is not specified, the active set of checks depends
       on context.  Namely, bootstrap stage 1 defaults to
!      â€˜--enable-checking=yesâ€™, builds from release branches or release
!      archives default to â€˜--enable-checking=releaseâ€™, and otherwise
!      â€˜--enable-checking=yes,extraâ€™ is used.  When the option is
       specified without a LIST, the result is the same as
!      â€˜--enable-checking=yesâ€™.  Likewise, â€˜--disable-checkingâ€™ is
!      equivalent to â€˜--enable-checking=noâ€™.
  
!      The categories of checks available in LIST are â€˜yesâ€™ (most common
!      checks â€˜assert,misc,gc,gimple,rtlflag,runtime,tree,typesâ€™), â€˜noâ€™
!      (no checks at all), â€˜allâ€™ (all but â€˜valgrindâ€™), â€˜releaseâ€™ (cheapest
!      checks â€˜assert,runtimeâ€™) or â€˜noneâ€™ (same as â€˜noâ€™).  â€˜releaseâ€™
!      checks are always on and to disable them â€˜--disable-checkingâ€™ or
!      â€˜--enable-checking=no[,<other checks>]â€™ must be explicitly
       requested.  Disabling assertions makes the compiler and runtime
       slightly faster but increases the risk of undetected internal
       errors causing wrong code to be generated.
  
!      Individual checks can be enabled with these flags: â€˜assertâ€™, â€˜dfâ€™,
!      â€˜extraâ€™, â€˜foldâ€™, â€˜gcâ€™, â€˜gcacâ€™, â€˜gimpleâ€™, â€˜miscâ€™, â€˜rtlâ€™, â€˜rtlflagâ€™,
!      â€˜runtimeâ€™, â€˜treeâ€™, â€˜typesâ€™ and â€˜valgrindâ€™.  â€˜extraâ€™ extends â€˜miscâ€™
       checking with extra checks that might affect code generation and
       should therefore not differ between stage1 and later stages in
       bootstrap.
  
!      The â€˜valgrindâ€™ check requires the external â€˜valgrindâ€™ simulator,
!      available from <https://valgrind.org>.  The â€˜rtlâ€™ checks are
!      expensive and the â€˜dfâ€™, â€˜gcacâ€™ and â€˜valgrindâ€™ checks are very
       expensive.
  
! â€˜--disable-stage1-checkingâ€™
! â€˜--enable-stage1-checkingâ€™
! â€˜--enable-stage1-checking=LISTâ€™
       This option affects only bootstrap build.  If no
!      â€˜--enable-checkingâ€™ option is specified the stage1 compiler is
!      built with â€˜yesâ€™ checking enabled, otherwise the stage1 checking
!      flags are the same as specified by â€˜--enable-checkingâ€™.  To build
       the stage1 compiler with different checking options use
!      â€˜--enable-stage1-checkingâ€™.  The list of checking options is the
!      same as for â€˜--enable-checkingâ€™.  If your system is too slow or too
       small to bootstrap a released compiler with checking for stage1
!      enabled, you can use â€˜--disable-stage1-checkingâ€™ to disable
       checking for the stage1 compiler.
  
! â€˜--enable-coverageâ€™
! â€˜--enable-coverage=LEVELâ€™
       With this option, the compiler is built to collect self coverage
       information, every time it is run.  This is for internal
       development purposes, and only works when the compiler is being
       built with gcc.  The LEVEL argument controls whether the compiler
!      is built optimized or not, values are â€˜optâ€™ and â€˜nooptâ€™.  For
       coverage analysis you want to disable optimization, for performance
       analysis you want to enable optimization.  When coverage is
       enabled, the default level is without optimization.
  
! â€˜--enable-gather-detailed-mem-statsâ€™
       When this option is specified more detailed information on memory
       allocation is gathered.  This information is printed when using
!      â€˜-fmem-reportâ€™.
  
! â€˜--enable-valgrind-annotationsâ€™
       Mark selected memory related operations in the compiler when run
       under valgrind to suppress false positives.
  
! â€˜--enable-nlsâ€™
! â€˜--disable-nlsâ€™
!      The â€˜--enable-nlsâ€™ option enables Native Language Support (NLS),
       which lets GCC output diagnostics in languages other than American
       English.  Native Language Support is enabled by default if not
!      doing a canadian cross build.  The â€˜--disable-nlsâ€™ option disables
       NLS.
  
       Note that this functionality requires either libintl (provided by
*************** option.
*** 2068,2084 ****
       with-included-gettext, for more information on the conditions
       required to get gettext support.
  
! '--with-libintl-prefix=DIR'
! '--without-libintl-prefix'
!      Searches for libintl in 'DIR/include' and 'DIR/lib', or disables
       manual searching for it, letting the linker handle it.
  
! '--with-libintl-type=TYPE'
       Specifies the type of library to search for when looking for
!      libintl.  TYPE can be one of 'auto', 'static' or 'shared'.
  
! '--with-included-gettext'
!      Only available if 'gettext' is present in the source tree.
  
       Forces the gettext tree to be configured to build and use a new
       static libintl, overriding the system libintl.  Results in GCC
--- 2068,2084 ----
       with-included-gettext, for more information on the conditions
       required to get gettext support.
  
! â€˜--with-libintl-prefix=DIRâ€™
! â€˜--without-libintl-prefixâ€™
!      Searches for libintl in â€˜DIR/includeâ€™ and â€˜DIR/libâ€™, or disables
       manual searching for it, letting the linker handle it.
  
! â€˜--with-libintl-type=TYPEâ€™
       Specifies the type of library to search for when looking for
!      libintl.  TYPE can be one of â€˜autoâ€™, â€˜staticâ€™ or â€˜sharedâ€™.
  
! â€˜--with-included-gettextâ€™
!      Only available if â€˜gettextâ€™ is present in the source tree.
  
       Forces the gettext tree to be configured to build and use a new
       static libintl, overriding the system libintl.  Results in GCC
*************** option.
*** 2089,2095 ****
       where to get gettext routines from.  The following table is a
       summary of the possible options:
  
!      GNU       libintl   'gettext' '--with-included-gettext'Effects on localization
       gettext   installed present                  
       present   on the    in libc
       in        system
--- 2089,2095 ----
       where to get gettext routines from.  The following table is a
       summary of the possible options:
  
!      GNU       libintl   â€˜gettextâ€™ â€˜--with-included-gettextâ€™Effects on localization
       gettext   installed present                  
       present   on the    in libc
       in        system
*************** option.
*** 2109,2126 ****
       Yes       Yes       Yes       No             Localized, libintl
       Yes       Yes       Yes       Yes            Localized, new, static libintl
  
! '--with-catgets'
!      If NLS is enabled, and if the host lacks 'gettext' but has the
!      inferior 'catgets' interface, the GCC build procedure normally
!      ignores 'catgets' and instead uses GCC's copy of the GNU 'gettext'
!      library.  The '--with-catgets' option causes the build procedure to
!      use the host's 'catgets' in this situation.
  
! '--with-libiconv-prefix=DIR'
!      Search for libiconv header files in 'DIR/include' and libiconv
!      library files in 'DIR/lib'.
  
! '--enable-obsolete'
       Enable configuration for an obsoleted system.  If you attempt to
       configure GCC for a system (build, host, or target) which has been
       obsoleted, and you do not specify this flag, configure will halt
--- 2109,2126 ----
       Yes       Yes       Yes       No             Localized, libintl
       Yes       Yes       Yes       Yes            Localized, new, static libintl
  
! â€˜--with-catgetsâ€™
!      If NLS is enabled, and if the host lacks â€˜gettextâ€™ but has the
!      inferior â€˜catgetsâ€™ interface, the GCC build procedure normally
!      ignores â€˜catgetsâ€™ and instead uses GCC's copy of the GNU â€˜gettextâ€™
!      library.  The â€˜--with-catgetsâ€™ option causes the build procedure to
!      use the host's â€˜catgetsâ€™ in this situation.
  
! â€˜--with-libiconv-prefix=DIRâ€™
!      Search for libiconv header files in â€˜DIR/includeâ€™ and libiconv
!      library files in â€˜DIR/libâ€™.
  
! â€˜--enable-obsoleteâ€™
       Enable configuration for an obsoleted system.  If you attempt to
       configure GCC for a system (build, host, or target) which has been
       obsoleted, and you do not specify this flag, configure will halt
*************** option.
*** 2130,2230 ****
       GCC is removed entirely in the next major release, unless someone
       steps forward to maintain the port.
  
! '--enable-decimal-float'
! '--enable-decimal-float=yes'
! '--enable-decimal-float=no'
! '--enable-decimal-float=bid'
! '--enable-decimal-float=dpd'
! '--disable-decimal-float'
       Enable (or disable) support for the C decimal floating point
       extension that is in the IEEE 754-2008 standard.  This is enabled
       by default only on AArch64, PowerPC, i386, and x86_64 GNU/Linux
       systems.  Other systems may also support it, but require the user
       to specifically enable it.  You can optionally control which
!      decimal floating point format is used (either 'bid' or 'dpd').  The
!      'bid' (binary integer decimal) format is default on AArch64, i386
!      and x86_64 systems, and the 'dpd' (densely packed decimal) format
       is default on PowerPC systems.
  
! '--enable-fixed-point'
! '--disable-fixed-point'
       Enable (or disable) support for C fixed-point arithmetic.  This
       option is enabled by default for some targets (such as MIPS) which
       have hardware-support for fixed-point operations.  On other
       targets, you may enable this option manually.
  
! '--with-long-double-128'
!      Specify if 'long double' type should be 128-bit by default on
       selected GNU/Linux architectures.  If using
!      '--without-long-double-128', 'long double' will be by default
!      64-bit, the same as 'double' type.  When neither of these configure
!      options are used, the default will be 128-bit 'long double' when
!      built against GNU C Library 2.4 and later, 64-bit 'long double'
       otherwise.
  
! '--with-long-double-format=ibm'
! '--with-long-double-format=ieee'
!      Specify whether 'long double' uses the IBM extended double format
       or the IEEE 128-bit floating point format on PowerPC Linux systems.
       This configuration switch will only work on little endian PowerPC
       Linux systems and on big endian 64-bit systems where the default
!      cpu is at least power7 (i.e. '--with-cpu=power7',
!      '--with-cpu=power8', or '--with-cpu=power9' is used).
  
!      If you use the '--with-long-double-64' configuration option, the
!      '--with-long-double-format=ibm' and
!      '--with-long-double-format=ieee' options are ignored.
  
!      The default 'long double' format is to use IBM extended double.
       Until all of the libraries are converted to use IEEE 128-bit
       floating point, it is not recommended to use
!      '--with-long-double-format=ieee'.
  
! '--enable-fdpic'
       On SH Linux systems, generate ELF FDPIC code.
  
! '--with-gmp=PATHNAME'
! '--with-gmp-include=PATHNAME'
! '--with-gmp-lib=PATHNAME'
! '--with-mpfr=PATHNAME'
! '--with-mpfr-include=PATHNAME'
! '--with-mpfr-lib=PATHNAME'
! '--with-mpc=PATHNAME'
! '--with-mpc-include=PATHNAME'
! '--with-mpc-lib=PATHNAME'
       If you want to build GCC but do not have the GMP library, the MPFR
       library and/or the MPC library installed in a standard location and
       do not have their sources present in the GCC source tree then you
       can explicitly specify the directory where they are installed
!      ('--with-gmp=GMPINSTALLDIR', '--with-mpfr=MPFRINSTALLDIR',
!      '--with-mpc=MPCINSTALLDIR').  The '--with-gmp=GMPINSTALLDIR' option
!      is shorthand for '--with-gmp-lib=GMPINSTALLDIR/lib' and
!      '--with-gmp-include=GMPINSTALLDIR/include'.  Likewise the
!      '--with-mpfr=MPFRINSTALLDIR' option is shorthand for
!      '--with-mpfr-lib=MPFRINSTALLDIR/lib' and
!      '--with-mpfr-include=MPFRINSTALLDIR/include', also the
!      '--with-mpc=MPCINSTALLDIR' option is shorthand for
!      '--with-mpc-lib=MPCINSTALLDIR/lib' and
!      '--with-mpc-include=MPCINSTALLDIR/include'.  If these shorthand
       assumptions are not correct, you can use the explicit include and
       lib options directly.  You might also need to ensure the shared
       libraries can be found by the dynamic linker when building and
       using GCC, for example by setting the runtime shared library path
!      variable ('LD_LIBRARY_PATH' on GNU/Linux and Solaris systems).
  
       These flags are applicable to the host platform only.  When
       building a cross compiler, they will not be used to configure
       target libraries.
  
! '--with-isl=PATHNAME'
! '--with-isl-include=PATHNAME'
! '--with-isl-lib=PATHNAME'
       If you do not have the isl library installed in a standard location
       and you want to build GCC, you can explicitly specify the directory
!      where it is installed ('--with-isl=ISLINSTALLDIR').  The
!      '--with-isl=ISLINSTALLDIR' option is shorthand for
!      '--with-isl-lib=ISLINSTALLDIR/lib' and
!      '--with-isl-include=ISLINSTALLDIR/include'.  If this shorthand
       assumption is not correct, you can use the explicit include and lib
       options directly.
  
--- 2130,2230 ----
       GCC is removed entirely in the next major release, unless someone
       steps forward to maintain the port.
  
! â€˜--enable-decimal-floatâ€™
! â€˜--enable-decimal-float=yesâ€™
! â€˜--enable-decimal-float=noâ€™
! â€˜--enable-decimal-float=bidâ€™
! â€˜--enable-decimal-float=dpdâ€™
! â€˜--disable-decimal-floatâ€™
       Enable (or disable) support for the C decimal floating point
       extension that is in the IEEE 754-2008 standard.  This is enabled
       by default only on AArch64, PowerPC, i386, and x86_64 GNU/Linux
       systems.  Other systems may also support it, but require the user
       to specifically enable it.  You can optionally control which
!      decimal floating point format is used (either â€˜bidâ€™ or â€˜dpdâ€™).  The
!      â€˜bidâ€™ (binary integer decimal) format is default on AArch64, i386
!      and x86_64 systems, and the â€˜dpdâ€™ (densely packed decimal) format
       is default on PowerPC systems.
  
! â€˜--enable-fixed-pointâ€™
! â€˜--disable-fixed-pointâ€™
       Enable (or disable) support for C fixed-point arithmetic.  This
       option is enabled by default for some targets (such as MIPS) which
       have hardware-support for fixed-point operations.  On other
       targets, you may enable this option manually.
  
! â€˜--with-long-double-128â€™
!      Specify if â€˜long doubleâ€™ type should be 128-bit by default on
       selected GNU/Linux architectures.  If using
!      â€˜--without-long-double-128â€™, â€˜long doubleâ€™ will be by default
!      64-bit, the same as â€˜doubleâ€™ type.  When neither of these configure
!      options are used, the default will be 128-bit â€˜long doubleâ€™ when
!      built against GNU C Library 2.4 and later, 64-bit â€˜long doubleâ€™
       otherwise.
  
! â€˜--with-long-double-format=ibmâ€™
! â€˜--with-long-double-format=ieeeâ€™
!      Specify whether â€˜long doubleâ€™ uses the IBM extended double format
       or the IEEE 128-bit floating point format on PowerPC Linux systems.
       This configuration switch will only work on little endian PowerPC
       Linux systems and on big endian 64-bit systems where the default
!      cpu is at least power7 (i.e. â€˜--with-cpu=power7â€™,
!      â€˜--with-cpu=power8â€™, or â€˜--with-cpu=power9â€™ is used).
  
!      If you use the â€˜--with-long-double-64â€™ configuration option, the
!      â€˜--with-long-double-format=ibmâ€™ and
!      â€˜--with-long-double-format=ieeeâ€™ options are ignored.
  
!      The default â€˜long doubleâ€™ format is to use IBM extended double.
       Until all of the libraries are converted to use IEEE 128-bit
       floating point, it is not recommended to use
!      â€˜--with-long-double-format=ieeeâ€™.
  
! â€˜--enable-fdpicâ€™
       On SH Linux systems, generate ELF FDPIC code.
  
! â€˜--with-gmp=PATHNAMEâ€™
! â€˜--with-gmp-include=PATHNAMEâ€™
! â€˜--with-gmp-lib=PATHNAMEâ€™
! â€˜--with-mpfr=PATHNAMEâ€™
! â€˜--with-mpfr-include=PATHNAMEâ€™
! â€˜--with-mpfr-lib=PATHNAMEâ€™
! â€˜--with-mpc=PATHNAMEâ€™
! â€˜--with-mpc-include=PATHNAMEâ€™
! â€˜--with-mpc-lib=PATHNAMEâ€™
       If you want to build GCC but do not have the GMP library, the MPFR
       library and/or the MPC library installed in a standard location and
       do not have their sources present in the GCC source tree then you
       can explicitly specify the directory where they are installed
!      (â€˜--with-gmp=GMPINSTALLDIRâ€™, â€˜--with-mpfr=MPFRINSTALLDIRâ€™,
!      â€˜--with-mpc=MPCINSTALLDIRâ€™).  The â€˜--with-gmp=GMPINSTALLDIRâ€™ option
!      is shorthand for â€˜--with-gmp-lib=GMPINSTALLDIR/libâ€™ and
!      â€˜--with-gmp-include=GMPINSTALLDIR/includeâ€™.  Likewise the
!      â€˜--with-mpfr=MPFRINSTALLDIRâ€™ option is shorthand for
!      â€˜--with-mpfr-lib=MPFRINSTALLDIR/libâ€™ and
!      â€˜--with-mpfr-include=MPFRINSTALLDIR/includeâ€™, also the
!      â€˜--with-mpc=MPCINSTALLDIRâ€™ option is shorthand for
!      â€˜--with-mpc-lib=MPCINSTALLDIR/libâ€™ and
!      â€˜--with-mpc-include=MPCINSTALLDIR/includeâ€™.  If these shorthand
       assumptions are not correct, you can use the explicit include and
       lib options directly.  You might also need to ensure the shared
       libraries can be found by the dynamic linker when building and
       using GCC, for example by setting the runtime shared library path
!      variable (â€˜LD_LIBRARY_PATHâ€™ on GNU/Linux and Solaris systems).
  
       These flags are applicable to the host platform only.  When
       building a cross compiler, they will not be used to configure
       target libraries.
  
! â€˜--with-isl=PATHNAMEâ€™
! â€˜--with-isl-include=PATHNAMEâ€™
! â€˜--with-isl-lib=PATHNAMEâ€™
       If you do not have the isl library installed in a standard location
       and you want to build GCC, you can explicitly specify the directory
!      where it is installed (â€˜--with-isl=ISLINSTALLDIRâ€™).  The
!      â€˜--with-isl=ISLINSTALLDIRâ€™ option is shorthand for
!      â€˜--with-isl-lib=ISLINSTALLDIR/libâ€™ and
!      â€˜--with-isl-include=ISLINSTALLDIR/includeâ€™.  If this shorthand
       assumption is not correct, you can use the explicit include and lib
       options directly.
  
*************** option.
*** 2232,2315 ****
       building a cross compiler, they will not be used to configure
       target libraries.
  
! '--with-stage1-ldflags=FLAGS'
       This option may be used to set linker flags to be used when linking
       stage 1 of GCC. These are also used when linking GCC if configured
!      with '--disable-bootstrap'.  If '--with-stage1-libs' is not set to
!      a value, then the default is '-static-libstdc++ -static-libgcc', if
       supported.
  
! '--with-stage1-libs=LIBS'
       This option may be used to set libraries to be used when linking
       stage 1 of GCC. These are also used when linking GCC if configured
!      with '--disable-bootstrap'.
  
! '--with-boot-ldflags=FLAGS'
       This option may be used to set linker flags to be used when linking
       stage 2 and later when bootstrapping GCC. If -with-boot-libs is not
!      is set to a value, then the default is '-static-libstdc++
!      -static-libgcc'.
  
! '--with-boot-libs=LIBS'
       This option may be used to set libraries to be used when linking
       stage 2 and later when bootstrapping GCC.
  
! '--with-debug-prefix-map=MAP'
!      Convert source directory names using '-fdebug-prefix-map' when
!      building runtime libraries.  'MAP' is a space-separated list of
!      maps of the form 'OLD=NEW'.
  
! '--enable-linker-build-id'
!      Tells GCC to pass '--build-id' option to the linker for all final
!      links (links performed without the '-r' or '--relocatable' option),
       if the linker supports it.  If you specify
!      '--enable-linker-build-id', but your linker does not support
!      '--build-id' option, a warning is issued and the
!      '--enable-linker-build-id' option is ignored.  The default is off.
  
! '--with-linker-hash-style=CHOICE'
!      Tells GCC to pass '--hash-style=CHOICE' option to the linker for
!      all final links.  CHOICE can be one of 'sysv', 'gnu', and 'both'
!      where 'sysv' is the default.
  
! '--enable-gnu-unique-object'
! '--disable-gnu-unique-object'
       Tells GCC to use the gnu_unique_object relocation for C++ template
       static data members and inline function local statics.  Enabled by
       default for a toolchain with an assembler that accepts it and GLIBC
       2.11 or above, otherwise disabled.
  
! '--with-diagnostics-color=CHOICE'
!      Tells GCC to use CHOICE as the default for '-fdiagnostics-color='
       option (if not used explicitly on the command line).  CHOICE can be
!      one of 'never', 'auto', 'always', and 'auto-if-env' where 'auto' is
!      the default.  'auto-if-env' makes '-fdiagnostics-color=auto' the
!      default if 'GCC_COLORS' is present and non-empty in the environment
!      of the compiler, and '-fdiagnostics-color=never' otherwise.
  
! '--with-diagnostics-urls=CHOICE'
!      Tells GCC to use CHOICE as the default for '-fdiagnostics-urls='
       option (if not used explicitly on the command line).  CHOICE can be
!      one of 'never', 'auto', 'always', and 'auto-if-env' where 'auto' is
!      the default.  'auto-if-env' makes '-fdiagnostics-urls=auto' the
!      default if 'GCC_URLS' or 'TERM_URLS' is present and non-empty in
!      the environment of the compiler, and '-fdiagnostics-urls=never'
       otherwise.
  
! '--enable-lto'
! '--disable-lto'
       Enable support for link-time optimization (LTO). This is enabled by
!      default, and may be disabled using '--disable-lto'.
  
! '--enable-linker-plugin-configure-flags=FLAGS'
! '--enable-linker-plugin-flags=FLAGS'
       By default, linker plugins (such as the LTO plugin) are built for
       the host system architecture.  For the case that the linker has a
       different (but run-time compatible) architecture, these flags can
       be specified to build plugins that are compatible to the linker.
       For example, if you are building GCC for a 64-bit x86_64
!      ('x86_64-pc-linux-gnu') host system, but have a 32-bit x86
!      GNU/Linux ('i686-pc-linux-gnu') linker executable (which is
       executable on the former system), you can configure GCC as follows
       for getting compatible linker plugins:
  
--- 2232,2315 ----
       building a cross compiler, they will not be used to configure
       target libraries.
  
! â€˜--with-stage1-ldflags=FLAGSâ€™
       This option may be used to set linker flags to be used when linking
       stage 1 of GCC. These are also used when linking GCC if configured
!      with â€˜--disable-bootstrapâ€™.  If â€˜--with-stage1-libsâ€™ is not set to
!      a value, then the default is â€˜-static-libstdc++ -static-libgccâ€™, if
       supported.
  
! â€˜--with-stage1-libs=LIBSâ€™
       This option may be used to set libraries to be used when linking
       stage 1 of GCC. These are also used when linking GCC if configured
!      with â€˜--disable-bootstrapâ€™.
  
! â€˜--with-boot-ldflags=FLAGSâ€™
       This option may be used to set linker flags to be used when linking
       stage 2 and later when bootstrapping GCC. If -with-boot-libs is not
!      is set to a value, then the default is â€˜-static-libstdc++
!      -static-libgccâ€™.
  
! â€˜--with-boot-libs=LIBSâ€™
       This option may be used to set libraries to be used when linking
       stage 2 and later when bootstrapping GCC.
  
! â€˜--with-debug-prefix-map=MAPâ€™
!      Convert source directory names using â€˜-fdebug-prefix-mapâ€™ when
!      building runtime libraries.  â€˜MAPâ€™ is a space-separated list of
!      maps of the form â€˜OLD=NEWâ€™.
  
! â€˜--enable-linker-build-idâ€™
!      Tells GCC to pass â€˜--build-idâ€™ option to the linker for all final
!      links (links performed without the â€˜-râ€™ or â€˜--relocatableâ€™ option),
       if the linker supports it.  If you specify
!      â€˜--enable-linker-build-idâ€™, but your linker does not support
!      â€˜--build-idâ€™ option, a warning is issued and the
!      â€˜--enable-linker-build-idâ€™ option is ignored.  The default is off.
  
! â€˜--with-linker-hash-style=CHOICEâ€™
!      Tells GCC to pass â€˜--hash-style=CHOICEâ€™ option to the linker for
!      all final links.  CHOICE can be one of â€˜sysvâ€™, â€˜gnuâ€™, and â€˜bothâ€™
!      where â€˜sysvâ€™ is the default.
  
! â€˜--enable-gnu-unique-objectâ€™
! â€˜--disable-gnu-unique-objectâ€™
       Tells GCC to use the gnu_unique_object relocation for C++ template
       static data members and inline function local statics.  Enabled by
       default for a toolchain with an assembler that accepts it and GLIBC
       2.11 or above, otherwise disabled.
  
! â€˜--with-diagnostics-color=CHOICEâ€™
!      Tells GCC to use CHOICE as the default for â€˜-fdiagnostics-color=â€™
       option (if not used explicitly on the command line).  CHOICE can be
!      one of â€˜neverâ€™, â€˜autoâ€™, â€˜alwaysâ€™, and â€˜auto-if-envâ€™ where â€˜autoâ€™ is
!      the default.  â€˜auto-if-envâ€™ makes â€˜-fdiagnostics-color=autoâ€™ the
!      default if â€˜GCC_COLORSâ€™ is present and non-empty in the environment
!      of the compiler, and â€˜-fdiagnostics-color=neverâ€™ otherwise.
  
! â€˜--with-diagnostics-urls=CHOICEâ€™
!      Tells GCC to use CHOICE as the default for â€˜-fdiagnostics-urls=â€™
       option (if not used explicitly on the command line).  CHOICE can be
!      one of â€˜neverâ€™, â€˜autoâ€™, â€˜alwaysâ€™, and â€˜auto-if-envâ€™ where â€˜autoâ€™ is
!      the default.  â€˜auto-if-envâ€™ makes â€˜-fdiagnostics-urls=autoâ€™ the
!      default if â€˜GCC_URLSâ€™ or â€˜TERM_URLSâ€™ is present and non-empty in
!      the environment of the compiler, and â€˜-fdiagnostics-urls=neverâ€™
       otherwise.
  
! â€˜--enable-ltoâ€™
! â€˜--disable-ltoâ€™
       Enable support for link-time optimization (LTO). This is enabled by
!      default, and may be disabled using â€˜--disable-ltoâ€™.
  
! â€˜--enable-linker-plugin-configure-flags=FLAGSâ€™
! â€˜--enable-linker-plugin-flags=FLAGSâ€™
       By default, linker plugins (such as the LTO plugin) are built for
       the host system architecture.  For the case that the linker has a
       different (but run-time compatible) architecture, these flags can
       be specified to build plugins that are compatible to the linker.
       For example, if you are building GCC for a 64-bit x86_64
!      (â€˜x86_64-pc-linux-gnuâ€™) host system, but have a 32-bit x86
!      GNU/Linux (â€˜i686-pc-linux-gnuâ€™) linker executable (which is
       executable on the former system), you can configure GCC as follows
       for getting compatible linker plugins:
  
*************** option.
*** 2318,2339 ****
                --enable-linker-plugin-configure-flags=--host=i686-pc-linux-gnu \
                --enable-linker-plugin-flags='CC=gcc\ -m32\ -Wl,-rpath,[...]/i686-pc-linux-gnu/lib'
  
! '--with-plugin-ld=PATHNAME'
       Enable an alternate linker to be used at link-time optimization
!      (LTO) link time when '-fuse-linker-plugin' is enabled.  This linker
       should have plugin support such as gold starting with version 2.20
!      or GNU ld starting with version 2.21.  See '-fuse-linker-plugin'
       for details.
  
! '--enable-canonical-system-headers'
! '--disable-canonical-system-headers'
!      Enable system header path canonicalization for 'libcpp'.  This can
       produce shorter header file paths in diagnostics and dependency
       output files, but these changed header paths may conflict with some
       compilation environments.  Enabled by default, and may be disabled
!      using '--disable-canonical-system-headers'.
  
! '--with-glibc-version=MAJOR.MINOR'
       Tell GCC that when the GNU C Library (glibc) is used on the target
       it will be version MAJOR.MINOR or later.  Normally this can be
       detected from the C library's header files, but this option may be
--- 2318,2339 ----
                --enable-linker-plugin-configure-flags=--host=i686-pc-linux-gnu \
                --enable-linker-plugin-flags='CC=gcc\ -m32\ -Wl,-rpath,[...]/i686-pc-linux-gnu/lib'
  
! â€˜--with-plugin-ld=PATHNAMEâ€™
       Enable an alternate linker to be used at link-time optimization
!      (LTO) link time when â€˜-fuse-linker-pluginâ€™ is enabled.  This linker
       should have plugin support such as gold starting with version 2.20
!      or GNU ld starting with version 2.21.  See â€˜-fuse-linker-pluginâ€™
       for details.
  
! â€˜--enable-canonical-system-headersâ€™
! â€˜--disable-canonical-system-headersâ€™
!      Enable system header path canonicalization for â€˜libcppâ€™.  This can
       produce shorter header file paths in diagnostics and dependency
       output files, but these changed header paths may conflict with some
       compilation environments.  Enabled by default, and may be disabled
!      using â€˜--disable-canonical-system-headersâ€™.
  
! â€˜--with-glibc-version=MAJOR.MINORâ€™
       Tell GCC that when the GNU C Library (glibc) is used on the target
       it will be version MAJOR.MINOR or later.  Normally this can be
       detected from the C library's header files, but this option may be
*************** option.
*** 2345,2364 ****
       glibc.  However, such configurations may not work well as not all
       the relevant configuration in GCC is on a per-multilib basis.
  
! '--enable-as-accelerator-for=TARGET'
       Build as offload target compiler.  Specify offload host triple by
       TARGET.
  
! '--enable-offload-targets=TARGET1[=PATH1],...,TARGETN[=PATHN]'
       Enable offloading to targets TARGET1, ..., TARGETN.  Offload
       compilers are expected to be already installed.  Default search
!      path for them is 'EXEC-PREFIX', but it can be changed by specifying
       paths PATH1, ..., PATHN.
  
            % SRCDIR/configure \
                --enable-offload-targets=amdgcn-amdhsa,nvptx-none
  
! '--enable-offload-defaulted'
  
       Tell GCC that configured but not installed offload compilers and
       libgomp plugins are silently ignored.  Useful for distribution
--- 2345,2364 ----
       glibc.  However, such configurations may not work well as not all
       the relevant configuration in GCC is on a per-multilib basis.
  
! â€˜--enable-as-accelerator-for=TARGETâ€™
       Build as offload target compiler.  Specify offload host triple by
       TARGET.
  
! â€˜--enable-offload-targets=TARGET1[=PATH1],...,TARGETN[=PATHN]â€™
       Enable offloading to targets TARGET1, ..., TARGETN.  Offload
       compilers are expected to be already installed.  Default search
!      path for them is â€˜EXEC-PREFIXâ€™, but it can be changed by specifying
       paths PATH1, ..., PATHN.
  
            % SRCDIR/configure \
                --enable-offload-targets=amdgcn-amdhsa,nvptx-none
  
! â€˜--enable-offload-defaultedâ€™
  
       Tell GCC that configured but not installed offload compilers and
       libgomp plugins are silently ignored.  Useful for distribution
*************** option.
*** 2367,2412 ****
       the actual supported offloading target set rather than the GCC
       configure-time selection.
  
! '--enable-cet'
! '--disable-cet'
       Enable building target run-time libraries with control-flow
!      instrumentation, see '-fcf-protection' option.  When '--enable-cet'
       is specified target libraries are configured to add
!      '-fcf-protection' and, if needed, other target specific options to
       a set of building options.
  
!      '--enable-cet=auto' is default.  CET is enabled on Linux/x86 if
!      target binutils supports 'Intel CET' instructions and disabled
       otherwise.  In this case, the target libraries are configured to
!      get additional '-fcf-protection' option.
  
! '--with-riscv-attribute='yes', 'no' or 'default''
       Generate RISC-V attribute by default, in order to record extra
       build information in object.
  
       The option is disabled by default.  It is enabled on RISC-V/ELF
       (bare-metal) target if target binutils supported.
  
! '--enable-s390-excess-float-precision'
! '--disable-s390-excess-float-precision'
       On s390(x) targets, enable treatment of float expressions with
       double precision when in standards-compliant mode (e.g., when
!      '--std=c99' or '-fexcess-precision=standard' are given).
  
       For a native build and cross compiles that have target headers, the
       option's default is derived from glibc's behavior.  When glibc
       clamps float_t to double, GCC follows and enables the option.  For
       other cross compiles, the default is disabled.
  
! '--with-zstd=PATHNAME'
! '--with-zstd-include=PATHNAME'
! '--with-zstd-lib=PATHNAME'
!      If you do not have the 'zstd' library installed in a standard
       location and you want to build GCC, you can explicitly specify the
!      directory where it is installed ('--with-zstd=ZSTDINSTALLDIR').
!      The '--with-zstd=ZSTDINSTALLDIR' option is shorthand for
!      '--with-zstd-lib=ZSTDINSTALLDIR/lib' and
!      '--with-zstd-include=ZSTDINSTALLDIR/include'.  If this shorthand
       assumption is not correct, you can use the explicit include and lib
       options directly.
  
--- 2367,2412 ----
       the actual supported offloading target set rather than the GCC
       configure-time selection.
  
! â€˜--enable-cetâ€™
! â€˜--disable-cetâ€™
       Enable building target run-time libraries with control-flow
!      instrumentation, see â€˜-fcf-protectionâ€™ option.  When â€˜--enable-cetâ€™
       is specified target libraries are configured to add
!      â€˜-fcf-protectionâ€™ and, if needed, other target specific options to
       a set of building options.
  
!      â€˜--enable-cet=autoâ€™ is default.  CET is enabled on Linux/x86 if
!      target binutils supports â€˜Intel CETâ€™ instructions and disabled
       otherwise.  In this case, the target libraries are configured to
!      get additional â€˜-fcf-protectionâ€™ option.
  
! â€˜--with-riscv-attribute=â€˜yesâ€™, â€˜noâ€™ or â€˜defaultâ€™â€™
       Generate RISC-V attribute by default, in order to record extra
       build information in object.
  
       The option is disabled by default.  It is enabled on RISC-V/ELF
       (bare-metal) target if target binutils supported.
  
! â€˜--enable-s390-excess-float-precisionâ€™
! â€˜--disable-s390-excess-float-precisionâ€™
       On s390(x) targets, enable treatment of float expressions with
       double precision when in standards-compliant mode (e.g., when
!      â€˜--std=c99â€™ or â€˜-fexcess-precision=standardâ€™ are given).
  
       For a native build and cross compiles that have target headers, the
       option's default is derived from glibc's behavior.  When glibc
       clamps float_t to double, GCC follows and enables the option.  For
       other cross compiles, the default is disabled.
  
! â€˜--with-zstd=PATHNAMEâ€™
! â€˜--with-zstd-include=PATHNAMEâ€™
! â€˜--with-zstd-lib=PATHNAMEâ€™
!      If you do not have the â€˜zstdâ€™ library installed in a standard
       location and you want to build GCC, you can explicitly specify the
!      directory where it is installed (â€˜--with-zstd=ZSTDINSTALLDIRâ€™).
!      The â€˜--with-zstd=ZSTDINSTALLDIRâ€™ option is shorthand for
!      â€˜--with-zstd-lib=ZSTDINSTALLDIR/libâ€™ and
!      â€˜--with-zstd-include=ZSTDINSTALLDIR/includeâ€™.  If this shorthand
       assumption is not correct, you can use the explicit include and lib
       options directly.
  
*************** Cross-Compiler-Specific Options
*** 2419,2459 ****
  
  The following options only apply to building cross compilers.
  
! '--with-toolexeclibdir=DIR'
       Specify the installation directory for libraries built with a cross
!      compiler.  The default is '${gcc_tooldir}/lib'.
  
! '--with-sysroot'
! '--with-sysroot=DIR'
       Tells GCC to consider DIR as the root of a tree that contains (a
       subset of) the root filesystem of the target operating system.
       Target system headers, libraries and run-time object files will be
       searched for in there.  More specifically, this acts as if
!      '--sysroot=DIR' was added to the default options of the built
       compiler.  The specified directory is not copied into the install
!      tree, unlike the options '--with-headers' and '--with-libs' that
!      this option obsoletes.  The default value, in case '--with-sysroot'
!      is not given an argument, is '${gcc_tooldir}/sys-root'.  If the
!      specified directory is a subdirectory of '${exec_prefix}', then it
       will be found relative to the GCC binaries if the installation tree
       is moved.
  
       This option affects the system root for the compiler used to build
       target libraries (which runs on the build system) and the compiler
!      newly installed with 'make install'; it does not affect the
       compiler which is used to build GCC itself.
  
!      If you specify the '--with-native-system-header-dir=DIRNAME' option
       then the compiler will search that directory within DIRNAME for
!      native system headers rather than the default '/usr/include'.
  
! '--with-build-sysroot'
! '--with-build-sysroot=DIR'
!      Tells GCC to consider DIR as the system root (see '--with-sysroot')
       while building target libraries, instead of the directory specified
!      with '--with-sysroot'.  This option is only useful when you are
!      already using '--with-sysroot'.  You can use '--with-build-sysroot'
!      when you are configuring with '--prefix' set to a directory that is
       different from the one in which you are installing GCC and your
       target libraries.
  
--- 2419,2459 ----
  
  The following options only apply to building cross compilers.
  
! â€˜--with-toolexeclibdir=DIRâ€™
       Specify the installation directory for libraries built with a cross
!      compiler.  The default is â€˜${gcc_tooldir}/libâ€™.
  
! â€˜--with-sysrootâ€™
! â€˜--with-sysroot=DIRâ€™
       Tells GCC to consider DIR as the root of a tree that contains (a
       subset of) the root filesystem of the target operating system.
       Target system headers, libraries and run-time object files will be
       searched for in there.  More specifically, this acts as if
!      â€˜--sysroot=DIRâ€™ was added to the default options of the built
       compiler.  The specified directory is not copied into the install
!      tree, unlike the options â€˜--with-headersâ€™ and â€˜--with-libsâ€™ that
!      this option obsoletes.  The default value, in case â€˜--with-sysrootâ€™
!      is not given an argument, is â€˜${gcc_tooldir}/sys-rootâ€™.  If the
!      specified directory is a subdirectory of â€˜${exec_prefix}â€™, then it
       will be found relative to the GCC binaries if the installation tree
       is moved.
  
       This option affects the system root for the compiler used to build
       target libraries (which runs on the build system) and the compiler
!      newly installed with â€˜make installâ€™; it does not affect the
       compiler which is used to build GCC itself.
  
!      If you specify the â€˜--with-native-system-header-dir=DIRNAMEâ€™ option
       then the compiler will search that directory within DIRNAME for
!      native system headers rather than the default â€˜/usr/includeâ€™.
  
! â€˜--with-build-sysrootâ€™
! â€˜--with-build-sysroot=DIRâ€™
!      Tells GCC to consider DIR as the system root (see â€˜--with-sysrootâ€™)
       while building target libraries, instead of the directory specified
!      with â€˜--with-sysrootâ€™.  This option is only useful when you are
!      already using â€˜--with-sysrootâ€™.  You can use â€˜--with-build-sysrootâ€™
!      when you are configuring with â€˜--prefixâ€™ set to a directory that is
       different from the one in which you are installing GCC and your
       target libraries.
  
*************** The following options only apply to buil
*** 2461,2598 ****
       target libraries (which runs on the build system); it does not
       affect the compiler which is used to build GCC itself.
  
!      If you specify the '--with-native-system-header-dir=DIRNAME' option
       then the compiler will search that directory within DIRNAME for
!      native system headers rather than the default '/usr/include'.
  
! '--with-headers'
! '--with-headers=DIR'
!      Deprecated in favor of '--with-sysroot'.  Specifies that target
       headers are available when building a cross compiler.  The DIR
       argument specifies a directory which has the target include files.
!      These include files will be copied into the 'gcc' install
       directory.  _This option with the DIR argument is required_ when
!      building a cross compiler, if 'PREFIX/TARGET/sys-include' doesn't
!      pre-exist.  If 'PREFIX/TARGET/sys-include' does pre-exist, the DIR
!      argument may be omitted.  'fixincludes' will be run on these files
       to make them compatible with GCC.
  
! '--without-headers'
       Tells GCC not use any target headers from a libc when building a
       cross compiler.  When crossing to GNU/Linux, you need the headers
       so GCC can build the exception handling for libgcc.
  
! '--with-libs'
! '--with-libs="DIR1 DIR2 ... DIRN"'
!      Deprecated in favor of '--with-sysroot'.  Specifies a list of
       directories which contain the target runtime libraries.  These
!      libraries will be copied into the 'gcc' install directory.  If the
       directory list is omitted, this option has no effect.
  
! '--with-newlib'
!      Specifies that 'newlib' is being used as the target C library.
!      This causes '__eprintf' to be omitted from 'libgcc.a' on the
!      assumption that it will be provided by 'newlib'.
  
! '--with-avrlibc'
       Only supported for the AVR target.  Specifies that AVR-LibC is
       being used as the target C  library.  This causes float support
!      functions like '__addsf3' to be omitted from 'libgcc.a' on the
!      assumption that it will be provided by 'libm.a'.  For more
       technical details, cf.  PR54461.  It is not supported for RTEMS
       configurations, which currently use Newlib.  The option is
       supported since version 4.7.2 and is the default in 4.8.0 and
       newer.
  
! '--with-double={32|64|32,64|64,32}'
! '--with-long-double={32|64|32,64|64,32|double}'
       Only supported for the AVR target since version 10.  Specify the
!      default layout available for the C/C++ 'double' and 'long double'
       type, respectively.  The following rules apply:
!         * The first value after the '=' specifies the default layout (in
!           bits) of the type and also the default for the '-mdouble='
!           resp.  '-mlong-double=' compiler option.
!         * If more than one value is specified, respective multilib
!           variants are available, and '-mdouble=' resp.
!           '-mlong-double=' acts as a multilib option.
!         * If '--with-long-double=double' is specified, 'double' and
!           'long double' will have the same layout.
!         * The defaults are '--with-long-double=64,32' and
!           '--with-double=32,64'.  The default 'double' layout imposed by
            the latter is compatible with older versions of the compiler
!           that implement 'double' as a 32-bit type, which does not
            comply to the language standard.
!      Not all combinations of '--with-double=' and '--with-long-double='
!      are valid.  For example, the combination '--with-double=32,64'
!      '--with-long-double=32' will be rejected because the first option
!      specifies the availability of multilibs for 'double', whereas the
!      second option implies that 'long double' -- and hence also 'double'
       -- is always 32 bits wide.
  
! '--with-double-comparison={tristate|bool|libf7}'
       Only supported for the AVR target since version 10.  Specify what
       result format is returned by library functions that compare 64-bit
!      floating point values ('DFmode').  The GCC default is 'tristate'.
       If the floating point implementation returns a boolean instead, set
!      it to 'bool'.
  
! '--with-libf7={libgcc|math|math-symbols|no}'
       Only supported for the AVR target since version 10.  Specify to
       which degree code from LibF7 is included in libgcc.  LibF7 is an
       ad-hoc, AVR-specific, 64-bit floating point emulation written in C
!      and (inline) assembly.  'libgcc' adds support for functions that
       one would usually expect in libgcc like double addition, double
!      comparisons and double conversions.  'math' also adds routines that
!      one would expect in 'libm.a', but with '__' (two underscores)
!      prepended to the symbol names as specified by 'math.h'.
!      'math-symbols' also defines weak aliases for the functions declared
!      in 'math.h'.  However, '--with-libf7' won't install no 'math.h'
       header file whatsoever, this file must come from elsewhere.  This
!      option sets '--with-double-comparison' to 'bool'.
  
! '--with-nds32-lib=LIBRARY'
!      Specifies that LIBRARY setting is used for building 'libgcc.a'.
!      Currently, the valid LIBRARY is 'newlib' or 'mculib'.  This option
       is only supported for the NDS32 target.
  
! '--with-build-time-tools=DIR'
       Specifies where to find the set of target tools (assembler, linker,
       etc.)  that will be used while building GCC itself.  This option
       can be useful if the directory layouts are different between the
       system you are building GCC on, and the system where you will
       deploy it.
  
!      For example, on an 'ia64-hp-hpux' system, you may have the GNU
!      assembler and linker in '/usr/bin', and the native tools in a
       different path, and build a toolchain that expects to find the
!      native tools in '/usr/bin'.
  
!      When you use this option, you should ensure that DIR includes 'ar',
!      'as', 'ld', 'nm', 'ranlib' and 'strip' if necessary, and possibly
!      'objdump'.  Otherwise, GCC may use an inconsistent set of tools.
  
! Overriding 'configure' test results
  ...................................
  
  Sometimes, it might be necessary to override the result of some
! 'configure' test, for example in order to ease porting to a new system
! or work around a bug in a test.  The toplevel 'configure' script
  provides three variables for this:
  
! 'build_configargs'
!      The contents of this variable is passed to all build 'configure'
       scripts.
  
! 'host_configargs'
!      The contents of this variable is passed to all host 'configure'
       scripts.
  
! 'target_configargs'
!      The contents of this variable is passed to all target 'configure'
       scripts.
  
!    In order to avoid shell and 'make' quoting issues for complex
! overrides, you can pass a setting for 'CONFIG_SITE' and set variables in
  the site file.
  
  Objective-C-Specific Options
--- 2461,2598 ----
       target libraries (which runs on the build system); it does not
       affect the compiler which is used to build GCC itself.
  
!      If you specify the â€˜--with-native-system-header-dir=DIRNAMEâ€™ option
       then the compiler will search that directory within DIRNAME for
!      native system headers rather than the default â€˜/usr/includeâ€™.
  
! â€˜--with-headersâ€™
! â€˜--with-headers=DIRâ€™
!      Deprecated in favor of â€˜--with-sysrootâ€™.  Specifies that target
       headers are available when building a cross compiler.  The DIR
       argument specifies a directory which has the target include files.
!      These include files will be copied into the â€˜gccâ€™ install
       directory.  _This option with the DIR argument is required_ when
!      building a cross compiler, if â€˜PREFIX/TARGET/sys-includeâ€™ doesn't
!      pre-exist.  If â€˜PREFIX/TARGET/sys-includeâ€™ does pre-exist, the DIR
!      argument may be omitted.  â€˜fixincludesâ€™ will be run on these files
       to make them compatible with GCC.
  
! â€˜--without-headersâ€™
       Tells GCC not use any target headers from a libc when building a
       cross compiler.  When crossing to GNU/Linux, you need the headers
       so GCC can build the exception handling for libgcc.
  
! â€˜--with-libsâ€™
! â€˜--with-libs="DIR1 DIR2 ... DIRN"â€™
!      Deprecated in favor of â€˜--with-sysrootâ€™.  Specifies a list of
       directories which contain the target runtime libraries.  These
!      libraries will be copied into the â€˜gccâ€™ install directory.  If the
       directory list is omitted, this option has no effect.
  
! â€˜--with-newlibâ€™
!      Specifies that â€˜newlibâ€™ is being used as the target C library.
!      This causes â€˜__eprintfâ€™ to be omitted from â€˜libgcc.aâ€™ on the
!      assumption that it will be provided by â€˜newlibâ€™.
  
! â€˜--with-avrlibcâ€™
       Only supported for the AVR target.  Specifies that AVR-LibC is
       being used as the target C  library.  This causes float support
!      functions like â€˜__addsf3â€™ to be omitted from â€˜libgcc.aâ€™ on the
!      assumption that it will be provided by â€˜libm.aâ€™.  For more
       technical details, cf.  PR54461.  It is not supported for RTEMS
       configurations, which currently use Newlib.  The option is
       supported since version 4.7.2 and is the default in 4.8.0 and
       newer.
  
! â€˜--with-double={32|64|32,64|64,32}â€™
! â€˜--with-long-double={32|64|32,64|64,32|double}â€™
       Only supported for the AVR target since version 10.  Specify the
!      default layout available for the C/C++ â€˜doubleâ€™ and â€˜long doubleâ€™
       type, respectively.  The following rules apply:
!         â€¢ The first value after the â€˜=â€™ specifies the default layout (in
!           bits) of the type and also the default for the â€˜-mdouble=â€™
!           resp.  â€˜-mlong-double=â€™ compiler option.
!         â€¢ If more than one value is specified, respective multilib
!           variants are available, and â€˜-mdouble=â€™ resp.
!           â€˜-mlong-double=â€™ acts as a multilib option.
!         â€¢ If â€˜--with-long-double=doubleâ€™ is specified, â€˜doubleâ€™ and
!           â€˜long doubleâ€™ will have the same layout.
!         â€¢ The defaults are â€˜--with-long-double=64,32â€™ and
!           â€˜--with-double=32,64â€™.  The default â€˜doubleâ€™ layout imposed by
            the latter is compatible with older versions of the compiler
!           that implement â€˜doubleâ€™ as a 32-bit type, which does not
            comply to the language standard.
!      Not all combinations of â€˜--with-double=â€™ and â€˜--with-long-double=â€™
!      are valid.  For example, the combination â€˜--with-double=32,64â€™
!      â€˜--with-long-double=32â€™ will be rejected because the first option
!      specifies the availability of multilibs for â€˜doubleâ€™, whereas the
!      second option implies that â€˜long doubleâ€™ -- and hence also â€˜doubleâ€™
       -- is always 32 bits wide.
  
! â€˜--with-double-comparison={tristate|bool|libf7}â€™
       Only supported for the AVR target since version 10.  Specify what
       result format is returned by library functions that compare 64-bit
!      floating point values (â€˜DFmodeâ€™).  The GCC default is â€˜tristateâ€™.
       If the floating point implementation returns a boolean instead, set
!      it to â€˜boolâ€™.
  
! â€˜--with-libf7={libgcc|math|math-symbols|no}â€™
       Only supported for the AVR target since version 10.  Specify to
       which degree code from LibF7 is included in libgcc.  LibF7 is an
       ad-hoc, AVR-specific, 64-bit floating point emulation written in C
!      and (inline) assembly.  â€˜libgccâ€™ adds support for functions that
       one would usually expect in libgcc like double addition, double
!      comparisons and double conversions.  â€˜mathâ€™ also adds routines that
!      one would expect in â€˜libm.aâ€™, but with â€˜__â€™ (two underscores)
!      prepended to the symbol names as specified by â€˜math.hâ€™.
!      â€˜math-symbolsâ€™ also defines weak aliases for the functions declared
!      in â€˜math.hâ€™.  However, â€˜--with-libf7â€™ won't install no â€˜math.hâ€™
       header file whatsoever, this file must come from elsewhere.  This
!      option sets â€˜--with-double-comparisonâ€™ to â€˜boolâ€™.
  
! â€˜--with-nds32-lib=LIBRARYâ€™
!      Specifies that LIBRARY setting is used for building â€˜libgcc.aâ€™.
!      Currently, the valid LIBRARY is â€˜newlibâ€™ or â€˜mculibâ€™.  This option
       is only supported for the NDS32 target.
  
! â€˜--with-build-time-tools=DIRâ€™
       Specifies where to find the set of target tools (assembler, linker,
       etc.)  that will be used while building GCC itself.  This option
       can be useful if the directory layouts are different between the
       system you are building GCC on, and the system where you will
       deploy it.
  
!      For example, on an â€˜ia64-hp-hpuxâ€™ system, you may have the GNU
!      assembler and linker in â€˜/usr/binâ€™, and the native tools in a
       different path, and build a toolchain that expects to find the
!      native tools in â€˜/usr/binâ€™.
  
!      When you use this option, you should ensure that DIR includes â€˜arâ€™,
!      â€˜asâ€™, â€˜ldâ€™, â€˜nmâ€™, â€˜ranlibâ€™ and â€˜stripâ€™ if necessary, and possibly
!      â€˜objdumpâ€™.  Otherwise, GCC may use an inconsistent set of tools.
  
! Overriding â€˜configureâ€™ test results
  ...................................
  
  Sometimes, it might be necessary to override the result of some
! â€˜configureâ€™ test, for example in order to ease porting to a new system
! or work around a bug in a test.  The toplevel â€˜configureâ€™ script
  provides three variables for this:
  
! â€˜build_configargsâ€™
!      The contents of this variable is passed to all build â€˜configureâ€™
       scripts.
  
! â€˜host_configargsâ€™
!      The contents of this variable is passed to all host â€˜configureâ€™
       scripts.
  
! â€˜target_configargsâ€™
!      The contents of this variable is passed to all target â€˜configureâ€™
       scripts.
  
!    In order to avoid shell and â€˜makeâ€™ quoting issues for complex
! overrides, you can pass a setting for â€˜CONFIG_SITEâ€™ and set variables in
  the site file.
  
  Objective-C-Specific Options
*************** Objective-C-Specific Options
*** 2601,2633 ****
  The following options apply to the build of the Objective-C runtime
  library.
  
! '--enable-objc-gc'
       Specify that an additional variant of the GNU Objective-C runtime
       library is built, using an external build of the
       Boehm-Demers-Weiser garbage collector
       (<https://www.hboehm.info/gc/>).  This library needs to be
       available for each multilib variant, unless configured with
!      '--enable-objc-gc='auto'' in which case the build of the additional
       runtime library is skipped when not available and the build
       continues.
  
! '--with-target-bdw-gc=LIST'
! '--with-target-bdw-gc-include=LIST'
! '--with-target-bdw-gc-lib=LIST'
       Specify search directories for the garbage collector header files
       and libraries.  LIST is a comma separated list of key value pairs
!      of the form 'MULTILIBDIR=PATH', where the default multilib key is
!      named as '.' (dot), or is omitted (e.g.
!      '--with-target-bdw-gc=/opt/bdw-gc,32=/opt-bdw-gc32').
  
!      The options '--with-target-bdw-gc-include' and
!      '--with-target-bdw-gc-lib' must always be specified together for
       each multilib variant and they take precedence over
!      '--with-target-bdw-gc'.  If '--with-target-bdw-gc-include' is
       missing values for a multilib, then the value for the default
       multilib is used (e.g.
!      '--with-target-bdw-gc-include=/opt/bdw-gc/include'
!      '--with-target-bdw-gc-lib=/opt/bdw-gc/lib64,32=/opt-bdw-gc/lib32').
       If none of these options are specified, the library is assumed in
       default locations.
  
--- 2601,2633 ----
  The following options apply to the build of the Objective-C runtime
  library.
  
! â€˜--enable-objc-gcâ€™
       Specify that an additional variant of the GNU Objective-C runtime
       library is built, using an external build of the
       Boehm-Demers-Weiser garbage collector
       (<https://www.hboehm.info/gc/>).  This library needs to be
       available for each multilib variant, unless configured with
!      â€˜--enable-objc-gc=â€˜autoâ€™â€™ in which case the build of the additional
       runtime library is skipped when not available and the build
       continues.
  
! â€˜--with-target-bdw-gc=LISTâ€™
! â€˜--with-target-bdw-gc-include=LISTâ€™
! â€˜--with-target-bdw-gc-lib=LISTâ€™
       Specify search directories for the garbage collector header files
       and libraries.  LIST is a comma separated list of key value pairs
!      of the form â€˜MULTILIBDIR=PATHâ€™, where the default multilib key is
!      named as â€˜.â€™ (dot), or is omitted (e.g.
!      â€˜--with-target-bdw-gc=/opt/bdw-gc,32=/opt-bdw-gc32â€™).
  
!      The options â€˜--with-target-bdw-gc-includeâ€™ and
!      â€˜--with-target-bdw-gc-libâ€™ must always be specified together for
       each multilib variant and they take precedence over
!      â€˜--with-target-bdw-gcâ€™.  If â€˜--with-target-bdw-gc-includeâ€™ is
       missing values for a multilib, then the value for the default
       multilib is used (e.g.
!      â€˜--with-target-bdw-gc-include=/opt/bdw-gc/includeâ€™
!      â€˜--with-target-bdw-gc-lib=/opt/bdw-gc/lib64,32=/opt-bdw-gc/lib32â€™).
       If none of these options are specified, the library is assumed in
       default locations.
  
*************** D-Specific Options
*** 2636,2678 ****
  
  The following options apply to the build of the D runtime library.
  
! '--enable-libphobos-checking'
! '--disable-libphobos-checking'
! '--enable-libphobos-checking=LIST'
       This option controls whether run-time checks and contracts are
       compiled into the D runtime library.  When the option is not
!      specified, the library is built with 'release' checking.  When the
       option is specified without a LIST, the result is the same as
!      '--enable-libphobos-checking=yes'.  Likewise,
!      '--disable-libphobos-checking' is equivalent to
!      '--enable-libphobos-checking=no'.
  
!      The categories of checks available in LIST are 'yes' (compiles
!      libphobos with '-fno-release'), 'no' (compiles libphobos with
!      '-frelease'), 'all' (same as 'yes'), 'none' or 'release' (same as
!      'no').
  
!      Individual checks available in LIST are 'assert' (compiles
!      libphobos with an extra option '-fassert').
  
! '--with-libphobos-druntime-only'
! '--with-libphobos-druntime-only=CHOICE'
       Specify whether to build only the core D runtime library
       (druntime), or both the core and standard library (phobos) into
       libphobos.  This is useful for targets that have full support in
       druntime, but no or incomplete support in phobos.  CHOICE can be
!      one of 'auto', 'yes', and 'no' where 'auto' is the default.
  
!      When the option is not specified, the default choice 'auto' means
       that it is inferred whether the target has support for the phobos
       standard library.  When the option is specified without a CHOICE,
!      the result is the same as '--with-libphobos-druntime-only=yes'.
  
! '--with-target-system-zlib'
!      Use installed 'zlib' rather than that included with GCC.  This
       needs to be available for each multilib variant, unless configured
!      with '--with-target-system-zlib='auto'' in which case the
!      GCC included 'zlib' is only used when the system installed library
       is not available.
  
  
--- 2636,2678 ----
  
  The following options apply to the build of the D runtime library.
  
! â€˜--enable-libphobos-checkingâ€™
! â€˜--disable-libphobos-checkingâ€™
! â€˜--enable-libphobos-checking=LISTâ€™
       This option controls whether run-time checks and contracts are
       compiled into the D runtime library.  When the option is not
!      specified, the library is built with â€˜releaseâ€™ checking.  When the
       option is specified without a LIST, the result is the same as
!      â€˜--enable-libphobos-checking=yesâ€™.  Likewise,
!      â€˜--disable-libphobos-checkingâ€™ is equivalent to
!      â€˜--enable-libphobos-checking=noâ€™.
  
!      The categories of checks available in LIST are â€˜yesâ€™ (compiles
!      libphobos with â€˜-fno-releaseâ€™), â€˜noâ€™ (compiles libphobos with
!      â€˜-freleaseâ€™), â€˜allâ€™ (same as â€˜yesâ€™), â€˜noneâ€™ or â€˜releaseâ€™ (same as
!      â€˜noâ€™).
  
!      Individual checks available in LIST are â€˜assertâ€™ (compiles
!      libphobos with an extra option â€˜-fassertâ€™).
  
! â€˜--with-libphobos-druntime-onlyâ€™
! â€˜--with-libphobos-druntime-only=CHOICEâ€™
       Specify whether to build only the core D runtime library
       (druntime), or both the core and standard library (phobos) into
       libphobos.  This is useful for targets that have full support in
       druntime, but no or incomplete support in phobos.  CHOICE can be
!      one of â€˜autoâ€™, â€˜yesâ€™, and â€˜noâ€™ where â€˜autoâ€™ is the default.
  
!      When the option is not specified, the default choice â€˜autoâ€™ means
       that it is inferred whether the target has support for the phobos
       standard library.  When the option is specified without a CHOICE,
!      the result is the same as â€˜--with-libphobos-druntime-only=yesâ€™.
  
! â€˜--with-target-system-zlibâ€™
!      Use installed â€˜zlibâ€™ rather than that included with GCC.  This
       needs to be available for each multilib variant, unless configured
!      with â€˜--with-target-system-zlib=â€˜autoâ€™â€™ in which case the
!      GCC included â€˜zlibâ€™ is only used when the system installed library
       is not available.
  
  
*************** Now that GCC is configured, you are read
*** 2685,2691 ****
  runtime libraries.
  
     Some commands executed when making the compiler may fail (return a
! nonzero status) and be ignored by 'make'.  These failures, which are
  often due to files that were not found, are expected, and can safely be
  ignored.
  
--- 2685,2691 ----
  runtime libraries.
  
     Some commands executed when making the compiler may fail (return a
! nonzero status) and be ignored by â€˜makeâ€™.  These failures, which are
  often due to files that were not found, are expected, and can safely be
  ignored.
  
*************** ignored.
*** 2693,2702 ****
  Unless you are a GCC developer, you can generally ignore these warnings
  unless they cause compilation to fail.  Developers should attempt to fix
  any warnings encountered, however they can temporarily continue past
! warnings-as-errors by specifying the configure flag '--disable-werror'.
  
     On certain old systems, defining certain environment variables such
! as 'CC' can interfere with the functioning of 'make'.
  
     If you encounter seemingly strange errors when trying to build the
  compiler in a directory other than the source directory, it could be
--- 2693,2702 ----
  Unless you are a GCC developer, you can generally ignore these warnings
  unless they cause compilation to fail.  Developers should attempt to fix
  any warnings encountered, however they can temporarily continue past
! warnings-as-errors by specifying the configure flag â€˜--disable-werrorâ€™.
  
     On certain old systems, defining certain environment variables such
! as â€˜CCâ€™ can interfere with the functioning of â€˜makeâ€™.
  
     If you encounter seemingly strange errors when trying to build the
  compiler in a directory other than the source directory, it could be
*************** because you have previously configured t
*** 2704,2720 ****
  directory.  Make sure you have done all the necessary preparations.
  
     If you build GCC on a BSD system using a directory stored in an old
! System V file system, problems may occur in running 'fixincludes' if the
  System V file system doesn't support symbolic links.  These problems
! result in a failure to fix the declaration of 'size_t' in 'sys/types.h'.
! If you find that 'size_t' is a signed type and that type mismatches
  occur, this could be the cause.
  
     The solution is not to use such a directory for building GCC.
  
     Similarly, when building from the source repository or snapshots, or
! if you modify '*.l' files, you need the Flex lexical analyzer generator
! installed.  If you do not modify '*.l' files, releases contain the
  Flex-generated files and you do not need Flex installed to build them.
  There is still one Flex-based lexical analyzer (part of the build
  machinery, not of GCC itself) that is used even if you only build the C
--- 2704,2720 ----
  directory.  Make sure you have done all the necessary preparations.
  
     If you build GCC on a BSD system using a directory stored in an old
! System V file system, problems may occur in running â€˜fixincludesâ€™ if the
  System V file system doesn't support symbolic links.  These problems
! result in a failure to fix the declaration of â€˜size_tâ€™ in â€˜sys/types.hâ€™.
! If you find that â€˜size_tâ€™ is a signed type and that type mismatches
  occur, this could be the cause.
  
     The solution is not to use such a directory for building GCC.
  
     Similarly, when building from the source repository or snapshots, or
! if you modify â€˜*.lâ€™ files, you need the Flex lexical analyzer generator
! installed.  If you do not modify â€˜*.lâ€™ files, releases contain the
  Flex-generated files and you do not need Flex installed to build them.
  There is still one Flex-based lexical analyzer (part of the build
  machinery, not of GCC itself) that is used even if you only build the C
*************** the release.
*** 2730,2765 ****
  ==============================
  
  For a native build, the default configuration is to perform a 3-stage
! bootstrap of the compiler when 'make' is invoked.  This will build the
  entire GCC system and ensure that it compiles itself correctly.  It can
! be disabled with the '--disable-bootstrap' parameter to 'configure', but
  bootstrapping is suggested because the compiler will be tested more
  completely and could also have better performance.
  
     The bootstrapping process will complete the following steps:
  
!    * Build tools necessary to build the compiler.
  
!    * Perform a 3-stage bootstrap of the compiler.  This includes
       building three times the target tools for use by the compiler such
       as binutils (bfd, binutils, gas, gprof, ld, and opcodes) if they
       have been individually linked or moved into the top level GCC
       source tree before configuring.
  
!    * Perform a comparison test of the stage2 and stage3 compilers.
  
!    * Build runtime libraries using the stage3 compiler from the previous
       step.
  
!    If you are short on disk space you might consider 'make
! bootstrap-lean' instead.  The sequence of compilation is the same
  described above, but object files from the stage1 and stage2 of the
  3-stage bootstrap of the compiler are deleted as soon as they are no
  longer needed.
  
     If you wish to use non-default GCC flags when compiling the stage2
! and stage3 compilers, set 'BOOT_CFLAGS' on the command line when doing
! 'make'.  For example, if you want to save additional space during the
  bootstrap and in the final installation as well, you can build the
  compiler binaries without debugging information as in the following
  example.  This will save roughly 40% of disk space both for the
--- 2730,2765 ----
  ==============================
  
  For a native build, the default configuration is to perform a 3-stage
! bootstrap of the compiler when â€˜makeâ€™ is invoked.  This will build the
  entire GCC system and ensure that it compiles itself correctly.  It can
! be disabled with the â€˜--disable-bootstrapâ€™ parameter to â€˜configureâ€™, but
  bootstrapping is suggested because the compiler will be tested more
  completely and could also have better performance.
  
     The bootstrapping process will complete the following steps:
  
!    â€¢ Build tools necessary to build the compiler.
  
!    â€¢ Perform a 3-stage bootstrap of the compiler.  This includes
       building three times the target tools for use by the compiler such
       as binutils (bfd, binutils, gas, gprof, ld, and opcodes) if they
       have been individually linked or moved into the top level GCC
       source tree before configuring.
  
!    â€¢ Perform a comparison test of the stage2 and stage3 compilers.
  
!    â€¢ Build runtime libraries using the stage3 compiler from the previous
       step.
  
!    If you are short on disk space you might consider â€˜make
! bootstrap-leanâ€™ instead.  The sequence of compilation is the same
  described above, but object files from the stage1 and stage2 of the
  3-stage bootstrap of the compiler are deleted as soon as they are no
  longer needed.
  
     If you wish to use non-default GCC flags when compiling the stage2
! and stage3 compilers, set â€˜BOOT_CFLAGSâ€™ on the command line when doing
! â€˜makeâ€™.  For example, if you want to save additional space during the
  bootstrap and in the final installation as well, you can build the
  compiler binaries without debugging information as in the following
  example.  This will save roughly 40% of disk space both for the
*************** debugging information.)
*** 2768,2923 ****
  
       make BOOT_CFLAGS='-O' bootstrap
  
!    You can place non-default optimization flags into 'BOOT_CFLAGS'; they
! are less well tested here than the default of '-g -O2', but should still
  work.  In a few cases, you may find that you need to specify special
! flags such as '-msoft-float' here to complete the bootstrap; or, if the
  native compiler miscompiles the stage1 compiler, you may need to work
! around this, by choosing 'BOOT_CFLAGS' to avoid the parts of the stage1
! compiler that were miscompiled, or by using 'make bootstrap4' to
  increase the number of stages of bootstrap.
  
!    'BOOT_CFLAGS' does not apply to bootstrapped target libraries.  Since
  these are always compiled with the compiler currently being
! bootstrapped, you can use 'CFLAGS_FOR_TARGET' to modify their
  compilation flags, as for non-bootstrapped target libraries.  Again, if
  the native compiler miscompiles the stage1 compiler, you may need to
  work around this by avoiding non-working parts of the stage1 compiler.
! Use 'STAGE1_TFLAGS' to this end.
  
!    If you used the flag '--enable-languages=...' to restrict the
  compilers to be built, only those you've actually enabled will be built.
  This will of course only build those runtime libraries, for which the
  particular compiler has been built.  Please note, that re-defining
! 'LANGUAGES' when calling 'make' *does not* work anymore!
  
     If the comparison of stage2 and stage3 fails, this normally indicates
  that the stage2 compiler has compiled GCC incorrectly, and is therefore
  a potentially serious bug which you should investigate and report.  (On
  a few systems, meaningful comparison of object files is impossible; they
  always appear "different".  If you encounter this problem, you will need
! to disable comparison in the 'Makefile'.)
  
     If you do not want to bootstrap your compiler, you can configure with
! '--disable-bootstrap'.  In particular cases, you may want to bootstrap
  your compiler even if the target system is not the same as the one you
  are building on: for example, you could build a
! 'powerpc-unknown-linux-gnu' toolchain on a 'powerpc64-unknown-linux-gnu'
! host.  In this case, pass '--enable-bootstrap' to the configure script.
  
!    'BUILD_CONFIG' can be used to bring in additional customization to
  the build.  It can be set to a whitespace-separated list of names.  For
! each such 'NAME', top-level 'config/NAME.mk' will be included by the
! top-level 'Makefile', bringing in any settings it contains.  The default
! 'BUILD_CONFIG' can be set using the configure option
! '--with-build-config=NAME...'.  Some examples of supported build
  configurations are:
  
! 'bootstrap-O1'
!      Removes any '-O'-started option from 'BOOT_CFLAGS', and adds '-O1'
!      to it.  'BUILD_CONFIG=bootstrap-O1' is equivalent to
!      'BOOT_CFLAGS='-g -O1''.
  
! 'bootstrap-O3'
! 'bootstrap-Og'
!      Analogous to 'bootstrap-O1'.
  
! 'bootstrap-lto'
       Enables Link-Time Optimization for host tools during bootstrapping.
!      'BUILD_CONFIG=bootstrap-lto' is equivalent to adding '-flto' to
!      'BOOT_CFLAGS'.  This option assumes that the host supports the
       linker plugin (e.g. GNU ld version 2.21 or later or GNU gold
       version 2.21 or later).
  
! 'bootstrap-lto-noplugin'
!      This option is similar to 'bootstrap-lto', but is intended for
       hosts that do not support the linker plugin.  Without the linker
       plugin static libraries are not compiled with link-time
       optimizations.  Since the GCC middle end and back end are in
!      'libbackend.a' this means that only the front end is actually LTO
       optimized.
  
! 'bootstrap-lto-lean'
!      This option is similar to 'bootstrap-lto', but is intended for
       faster build by only using LTO in the final bootstrap stage.  With
!      'make profiledbootstrap' the LTO frontend is trained only on
       generator files.
  
! 'bootstrap-debug'
       Verifies that the compiler generates the same executable code,
       whether or not it is asked to emit debug information.  To this end,
       this option builds stage2 host programs without debug information,
!      and uses 'contrib/compare-debug' to compare them with the stripped
!      stage3 object files.  If 'BOOT_CFLAGS' is overridden so as to not
       enable debug information, stage2 will have it, and stage3 won't.
       This option is enabled by default when GCC bootstrapping is
!      enabled, if 'strip' can turn object files compiled with and without
       debug info into identical object files.  In addition to better test
       coverage, this option makes default bootstraps faster and leaner.
  
! 'bootstrap-debug-big'
       Rather than comparing stripped object files, as in
!      'bootstrap-debug', this option saves internal compiler dumps during
       stage2 and stage3 and compares them as well, which helps catch
       additional potential problems, but at a great cost in terms of disk
!      space.  It can be specified in addition to 'bootstrap-debug'.
  
! 'bootstrap-debug-lean'
!      This option saves disk space compared with 'bootstrap-debug-big',
       but at the expense of some recompilation.  Instead of saving the
       dumps of stage2 and stage3 until the final compare, it uses
!      '-fcompare-debug' to generate, compare and remove the dumps during
       stage3, repeating the compilation that already took place in
       stage2, whose dumps were not saved.
  
! 'bootstrap-debug-lib'
       This option tests executable code invariance over debug information
!      generation on target libraries, just like 'bootstrap-debug-lean'
       tests it on host programs.  It builds stage3 libraries with
!      '-fcompare-debug', and it can be used along with any of the
!      'bootstrap-debug' options above.
  
!      There aren't '-lean' or '-big' counterparts to this option because
       most libraries are only build in stage3, so bootstrap compares
       would not get significant coverage.  Moreover, the few libraries
       built in stage2 are used in stage3 host programs, so we wouldn't
       want to compile stage2 libraries with different options for
       comparison purposes.
  
! 'bootstrap-debug-ckovw'
       Arranges for error messages to be issued if the compiler built on
!      any stage is run without the option '-fcompare-debug'.  This is
!      useful to verify the full '-fcompare-debug' testing coverage.  It
!      must be used along with 'bootstrap-debug-lean' and
!      'bootstrap-debug-lib'.
  
! 'bootstrap-cet'
       This option enables Intel CET for host tools during bootstrapping.
!      'BUILD_CONFIG=bootstrap-cet' is equivalent to adding
!      '-fcf-protection' to 'BOOT_CFLAGS'.  This option assumes that the
       host supports Intel CET (e.g. GNU assembler version 2.30 or later).
  
! 'bootstrap-time'
       Arranges for the run time of each program started by the GCC
!      driver, built in any stage, to be logged to 'time.log', in the top
       level of the build tree.
  
! 'bootstrap-asan'
       Compiles GCC itself using Address Sanitization in order to catch
       invalid memory accesses within the GCC code.
  
! 'bootstrap-hwasan'
       Compiles GCC itself using HWAddress Sanitization in order to catch
       invalid memory accesses within the GCC code.  This option is only
       available on AArch64 systems that are running Linux kernel version
       5.4 or later.
  
! 'bootstrap-ubsan'
       Compiles GCC itself using Undefined Behavior Sanitization in order
       to catch undefined behavior within the GCC code.  Note that it does
!      not abort on errors by default.  'UBSAN_OPTIONS' can be set to
       change this, like
!      'UBSAN_OPTIONS='abort_on_error=1:halt_on_error=1:print_summary=1:print_stacktrace=1''.
  
  5.2 Building a cross compiler
  =============================
--- 2768,2923 ----
  
       make BOOT_CFLAGS='-O' bootstrap
  
!    You can place non-default optimization flags into â€˜BOOT_CFLAGSâ€™; they
! are less well tested here than the default of â€˜-g -O2â€™, but should still
  work.  In a few cases, you may find that you need to specify special
! flags such as â€˜-msoft-floatâ€™ here to complete the bootstrap; or, if the
  native compiler miscompiles the stage1 compiler, you may need to work
! around this, by choosing â€˜BOOT_CFLAGSâ€™ to avoid the parts of the stage1
! compiler that were miscompiled, or by using â€˜make bootstrap4â€™ to
  increase the number of stages of bootstrap.
  
!    â€˜BOOT_CFLAGSâ€™ does not apply to bootstrapped target libraries.  Since
  these are always compiled with the compiler currently being
! bootstrapped, you can use â€˜CFLAGS_FOR_TARGETâ€™ to modify their
  compilation flags, as for non-bootstrapped target libraries.  Again, if
  the native compiler miscompiles the stage1 compiler, you may need to
  work around this by avoiding non-working parts of the stage1 compiler.
! Use â€˜STAGE1_TFLAGSâ€™ to this end.
  
!    If you used the flag â€˜--enable-languages=...â€™ to restrict the
  compilers to be built, only those you've actually enabled will be built.
  This will of course only build those runtime libraries, for which the
  particular compiler has been built.  Please note, that re-defining
! â€˜LANGUAGESâ€™ when calling â€˜makeâ€™ *does not* work anymore!
  
     If the comparison of stage2 and stage3 fails, this normally indicates
  that the stage2 compiler has compiled GCC incorrectly, and is therefore
  a potentially serious bug which you should investigate and report.  (On
  a few systems, meaningful comparison of object files is impossible; they
  always appear "different".  If you encounter this problem, you will need
! to disable comparison in the â€˜Makefileâ€™.)
  
     If you do not want to bootstrap your compiler, you can configure with
! â€˜--disable-bootstrapâ€™.  In particular cases, you may want to bootstrap
  your compiler even if the target system is not the same as the one you
  are building on: for example, you could build a
! â€˜powerpc-unknown-linux-gnuâ€™ toolchain on a â€˜powerpc64-unknown-linux-gnuâ€™
! host.  In this case, pass â€˜--enable-bootstrapâ€™ to the configure script.
  
!    â€˜BUILD_CONFIGâ€™ can be used to bring in additional customization to
  the build.  It can be set to a whitespace-separated list of names.  For
! each such â€˜NAMEâ€™, top-level â€˜config/NAME.mkâ€™ will be included by the
! top-level â€˜Makefileâ€™, bringing in any settings it contains.  The default
! â€˜BUILD_CONFIGâ€™ can be set using the configure option
! â€˜--with-build-config=NAME...â€™.  Some examples of supported build
  configurations are:
  
! â€˜bootstrap-O1â€™
!      Removes any â€˜-Oâ€™-started option from â€˜BOOT_CFLAGSâ€™, and adds â€˜-O1â€™
!      to it.  â€˜BUILD_CONFIG=bootstrap-O1â€™ is equivalent to
!      â€˜BOOT_CFLAGS='-g -O1'â€™.
  
! â€˜bootstrap-O3â€™
! â€˜bootstrap-Ogâ€™
!      Analogous to â€˜bootstrap-O1â€™.
  
! â€˜bootstrap-ltoâ€™
       Enables Link-Time Optimization for host tools during bootstrapping.
!      â€˜BUILD_CONFIG=bootstrap-ltoâ€™ is equivalent to adding â€˜-fltoâ€™ to
!      â€˜BOOT_CFLAGSâ€™.  This option assumes that the host supports the
       linker plugin (e.g. GNU ld version 2.21 or later or GNU gold
       version 2.21 or later).
  
! â€˜bootstrap-lto-nopluginâ€™
!      This option is similar to â€˜bootstrap-ltoâ€™, but is intended for
       hosts that do not support the linker plugin.  Without the linker
       plugin static libraries are not compiled with link-time
       optimizations.  Since the GCC middle end and back end are in
!      â€˜libbackend.aâ€™ this means that only the front end is actually LTO
       optimized.
  
! â€˜bootstrap-lto-leanâ€™
!      This option is similar to â€˜bootstrap-ltoâ€™, but is intended for
       faster build by only using LTO in the final bootstrap stage.  With
!      â€˜make profiledbootstrapâ€™ the LTO frontend is trained only on
       generator files.
  
! â€˜bootstrap-debugâ€™
       Verifies that the compiler generates the same executable code,
       whether or not it is asked to emit debug information.  To this end,
       this option builds stage2 host programs without debug information,
!      and uses â€˜contrib/compare-debugâ€™ to compare them with the stripped
!      stage3 object files.  If â€˜BOOT_CFLAGSâ€™ is overridden so as to not
       enable debug information, stage2 will have it, and stage3 won't.
       This option is enabled by default when GCC bootstrapping is
!      enabled, if â€˜stripâ€™ can turn object files compiled with and without
       debug info into identical object files.  In addition to better test
       coverage, this option makes default bootstraps faster and leaner.
  
! â€˜bootstrap-debug-bigâ€™
       Rather than comparing stripped object files, as in
!      â€˜bootstrap-debugâ€™, this option saves internal compiler dumps during
       stage2 and stage3 and compares them as well, which helps catch
       additional potential problems, but at a great cost in terms of disk
!      space.  It can be specified in addition to â€˜bootstrap-debugâ€™.
  
! â€˜bootstrap-debug-leanâ€™
!      This option saves disk space compared with â€˜bootstrap-debug-bigâ€™,
       but at the expense of some recompilation.  Instead of saving the
       dumps of stage2 and stage3 until the final compare, it uses
!      â€˜-fcompare-debugâ€™ to generate, compare and remove the dumps during
       stage3, repeating the compilation that already took place in
       stage2, whose dumps were not saved.
  
! â€˜bootstrap-debug-libâ€™
       This option tests executable code invariance over debug information
!      generation on target libraries, just like â€˜bootstrap-debug-leanâ€™
       tests it on host programs.  It builds stage3 libraries with
!      â€˜-fcompare-debugâ€™, and it can be used along with any of the
!      â€˜bootstrap-debugâ€™ options above.
  
!      There aren't â€˜-leanâ€™ or â€˜-bigâ€™ counterparts to this option because
       most libraries are only build in stage3, so bootstrap compares
       would not get significant coverage.  Moreover, the few libraries
       built in stage2 are used in stage3 host programs, so we wouldn't
       want to compile stage2 libraries with different options for
       comparison purposes.
  
! â€˜bootstrap-debug-ckovwâ€™
       Arranges for error messages to be issued if the compiler built on
!      any stage is run without the option â€˜-fcompare-debugâ€™.  This is
!      useful to verify the full â€˜-fcompare-debugâ€™ testing coverage.  It
!      must be used along with â€˜bootstrap-debug-leanâ€™ and
!      â€˜bootstrap-debug-libâ€™.
  
! â€˜bootstrap-cetâ€™
       This option enables Intel CET for host tools during bootstrapping.
!      â€˜BUILD_CONFIG=bootstrap-cetâ€™ is equivalent to adding
!      â€˜-fcf-protectionâ€™ to â€˜BOOT_CFLAGSâ€™.  This option assumes that the
       host supports Intel CET (e.g. GNU assembler version 2.30 or later).
  
! â€˜bootstrap-timeâ€™
       Arranges for the run time of each program started by the GCC
!      driver, built in any stage, to be logged to â€˜time.logâ€™, in the top
       level of the build tree.
  
! â€˜bootstrap-asanâ€™
       Compiles GCC itself using Address Sanitization in order to catch
       invalid memory accesses within the GCC code.
  
! â€˜bootstrap-hwasanâ€™
       Compiles GCC itself using HWAddress Sanitization in order to catch
       invalid memory accesses within the GCC code.  This option is only
       available on AArch64 systems that are running Linux kernel version
       5.4 or later.
  
! â€˜bootstrap-ubsanâ€™
       Compiles GCC itself using Undefined Behavior Sanitization in order
       to catch undefined behavior within the GCC code.  Note that it does
!      not abort on errors by default.  â€˜UBSAN_OPTIONSâ€™ can be set to
       change this, like
!      â€˜UBSAN_OPTIONS='abort_on_error=1:halt_on_error=1:print_summary=1:print_stacktrace=1'â€™.
  
  5.2 Building a cross compiler
  =============================
*************** the cross compiler.  The installed nativ
*** 2932,2969 ****
  version 2.95 or later.
  
     Assuming you have already installed a native copy of GCC and
! configured your cross compiler, issue the command 'make', which performs
  the following steps:
  
!    * Build host tools necessary to build the compiler.
  
!    * Build target tools for use by the compiler such as binutils (bfd,
       binutils, gas, gprof, ld, and opcodes) if they have been
       individually linked or moved into the top level GCC source tree
       before configuring.
  
!    * Build the compiler (single stage only).
  
!    * Build runtime libraries using the compiler from the previous step.
  
     Note that if an error occurs in any step the make process will exit.
  
     If you are not building GNU binutils in the same source tree as GCC,
  you will need a cross-assembler and cross-linker installed before
! configuring GCC.  Put them in the directory 'PREFIX/TARGET/bin'.  Here
  is a table of the tools you should put in this directory:
  
! 'as'
       This should be the cross-assembler.
  
! 'ld'
       This should be the cross-linker.
  
! 'ar'
       This should be the cross-archiver: a program which can manipulate
       archive files (linker libraries) in the target machine's format.
  
! 'ranlib'
       This should be a program to construct a symbol table in an archive
       file.
  
--- 2932,2969 ----
  version 2.95 or later.
  
     Assuming you have already installed a native copy of GCC and
! configured your cross compiler, issue the command â€˜makeâ€™, which performs
  the following steps:
  
!    â€¢ Build host tools necessary to build the compiler.
  
!    â€¢ Build target tools for use by the compiler such as binutils (bfd,
       binutils, gas, gprof, ld, and opcodes) if they have been
       individually linked or moved into the top level GCC source tree
       before configuring.
  
!    â€¢ Build the compiler (single stage only).
  
!    â€¢ Build runtime libraries using the compiler from the previous step.
  
     Note that if an error occurs in any step the make process will exit.
  
     If you are not building GNU binutils in the same source tree as GCC,
  you will need a cross-assembler and cross-linker installed before
! configuring GCC.  Put them in the directory â€˜PREFIX/TARGET/binâ€™.  Here
  is a table of the tools you should put in this directory:
  
! â€˜asâ€™
       This should be the cross-assembler.
  
! â€˜ldâ€™
       This should be the cross-linker.
  
! â€˜arâ€™
       This should be the cross-archiver: a program which can manipulate
       archive files (linker libraries) in the target machine's format.
  
! â€˜ranlibâ€™
       This should be a program to construct a symbol table in an archive
       file.
  
*************** and copy or link them to the proper plac
*** 2972,2997 ****
  find them when run later.
  
     The easiest way to provide these files is to build the Binutils
! package.  Configure it with the same '--host' and '--target' options
  that you use for configuring GCC, then build and install them.  They
  install their executables automatically into the proper directory.
  Alas, they do not support all the targets that GCC supports.
  
     If you are not building a C library in the same source tree as GCC,
  you should also provide the target libraries and headers before
! configuring GCC, specifying the directories with '--with-sysroot' or
! '--with-headers' and '--with-libs'.  Many targets also require "start
! files" such as 'crt0.o' and 'crtn.o' which are linked into each
! executable.  There may be several alternatives for 'crt0.o', for use
  with profiling or other compilation options.  Check your target's
! definition of 'STARTFILE_SPEC' to find out what start files it uses.
  
  5.3 Building in parallel
  ========================
  
  GNU Make 3.80 and above, which is necessary to build GCC, support
! building in parallel.  To activate this, you can use 'make -j 2' instead
! of 'make'.  You can also specify a bigger number, and in most cases
  using a value greater than the number of processors in your machine will
  result in fewer and shorter I/O latency hits, thus improving overall
  throughput; this is especially true for slow drives and network
--- 2972,2997 ----
  find them when run later.
  
     The easiest way to provide these files is to build the Binutils
! package.  Configure it with the same â€˜--hostâ€™ and â€˜--targetâ€™ options
  that you use for configuring GCC, then build and install them.  They
  install their executables automatically into the proper directory.
  Alas, they do not support all the targets that GCC supports.
  
     If you are not building a C library in the same source tree as GCC,
  you should also provide the target libraries and headers before
! configuring GCC, specifying the directories with â€˜--with-sysrootâ€™ or
! â€˜--with-headersâ€™ and â€˜--with-libsâ€™.  Many targets also require "start
! files" such as â€˜crt0.oâ€™ and â€˜crtn.oâ€™ which are linked into each
! executable.  There may be several alternatives for â€˜crt0.oâ€™, for use
  with profiling or other compilation options.  Check your target's
! definition of â€˜STARTFILE_SPECâ€™ to find out what start files it uses.
  
  5.3 Building in parallel
  ========================
  
  GNU Make 3.80 and above, which is necessary to build GCC, support
! building in parallel.  To activate this, you can use â€˜make -j 2â€™ instead
! of â€˜makeâ€™.  You can also specify a bigger number, and in most cases
  using a value greater than the number of processors in your machine will
  result in fewer and shorter I/O latency hits, thus improving overall
  throughput; this is especially true for slow drives and network
*************** filesystems.
*** 3013,3036 ****
  It is possible to use profile feedback to optimize the compiler itself.
  This should result in a faster compiler binary.  Experiments done on x86
  using gcc 3.3 showed approximately 7 percent speedup on compiling C
! programs.  To bootstrap the compiler with profile feedback, use 'make
! profiledbootstrap'.
  
!    When 'make profiledbootstrap' is run, it will first build a 'stage1'
! compiler.  This compiler is used to build a 'stageprofile' compiler
  instrumented to collect execution counts of instruction and branch
! probabilities.  Training run is done by building 'stagetrain' compiler.
! Finally a 'stagefeedback' compiler is built using the information
  collected.
  
     Unlike standard bootstrap, several additional restrictions apply.
! The compiler used to build 'stage1' needs to support a 64-bit integral
  type.  It is recommended to only use GCC for this.
  
     On Linux/x86_64 hosts with some restrictions (no virtualization) it
! is also possible to do autofdo build with 'make autoprofiledbootstrap'.
  This uses Linux perf to sample branches in the binary and then rebuild
! it with feedback derived from the profile.  Linux perf and the 'autofdo'
  toolkit needs to be installed for this.
  
     Only the profile from the current build is used, so when an error
--- 3013,3036 ----
  It is possible to use profile feedback to optimize the compiler itself.
  This should result in a faster compiler binary.  Experiments done on x86
  using gcc 3.3 showed approximately 7 percent speedup on compiling C
! programs.  To bootstrap the compiler with profile feedback, use â€˜make
! profiledbootstrapâ€™.
  
!    When â€˜make profiledbootstrapâ€™ is run, it will first build a â€˜stage1â€™
! compiler.  This compiler is used to build a â€˜stageprofileâ€™ compiler
  instrumented to collect execution counts of instruction and branch
! probabilities.  Training run is done by building â€˜stagetrainâ€™ compiler.
! Finally a â€˜stagefeedbackâ€™ compiler is built using the information
  collected.
  
     Unlike standard bootstrap, several additional restrictions apply.
! The compiler used to build â€˜stage1â€™ needs to support a 64-bit integral
  type.  It is recommended to only use GCC for this.
  
     On Linux/x86_64 hosts with some restrictions (no virtualization) it
! is also possible to do autofdo build with â€˜make autoprofiledbootstrapâ€™.
  This uses Linux perf to sample branches in the binary and then rebuild
! it with feedback derived from the profile.  Linux perf and the â€˜autofdoâ€™
  toolkit needs to be installed for this.
  
     Only the profile from the current build is used, so when an error
*************** in the source tarball.
*** 3057,3066 ****
  DejaGnu, Tcl, and Expect; the DejaGnu site has links to these.  Some
  optional tests also require Python3 and pytest module.
  
!    If the directories where 'runtest' and 'expect' were installed are
! not in the 'PATH', you may need to set the following environment
  variables appropriately, as in the following example (which assumes that
! DejaGnu has been installed under '/usr/local'):
  
       TCL_LIBRARY = /usr/local/share/tcl8.0
       DEJAGNULIBS = /usr/local/share/dejagnu
--- 3057,3066 ----
  DejaGnu, Tcl, and Expect; the DejaGnu site has links to these.  Some
  optional tests also require Python3 and pytest module.
  
!    If the directories where â€˜runtestâ€™ and â€˜expectâ€™ were installed are
! not in the â€˜PATHâ€™, you may need to set the following environment
  variables appropriately, as in the following example (which assumes that
! DejaGnu has been installed under â€˜/usr/localâ€™):
  
       TCL_LIBRARY = /usr/local/share/tcl8.0
       DEJAGNULIBS = /usr/local/share/dejagnu
*************** portability in the DejaGnu code.)
*** 3074,3081 ****
  
     This will test various components of GCC, such as compiler front ends
  and runtime libraries.  While running the testsuite, DejaGnu might emit
! some harmless messages resembling 'WARNING: Couldn't find the global
! config file.' or 'WARNING: Couldn't find tool init file' that can be
  ignored.
  
     If you are testing a cross-compiler, you may want to run the
--- 3074,3081 ----
  
     This will test various components of GCC, such as compiler front ends
  and runtime libraries.  While running the testsuite, DejaGnu might emit
! some harmless messages resembling â€˜WARNING: Couldn't find the global
! config file.â€™ or â€˜WARNING: Couldn't find tool init fileâ€™ that can be
  ignored.
  
     If you are testing a cross-compiler, you may want to run the
*************** testsuite on a simulator as described at
*** 3085,3108 ****
  6.1 How can you run the testsuite on selected tests?
  ====================================================
  
! In order to run sets of tests selectively, there are targets 'make
! check-gcc' and language specific 'make check-c', 'make check-c++', 'make
! check-d' 'make check-fortran', 'make check-ada', 'make check-m2', 'make
! check-objc', 'make check-obj-c++', 'make check-lto' in the 'gcc'
! subdirectory of the object directory.  You can also just run 'make
! check' in a subdirectory of the object directory.
  
!    A more selective way to just run all 'gcc' execute tests in the
  testsuite is to use
  
       make check-gcc RUNTESTFLAGS="execute.exp OTHER-OPTIONS"
  
!    Likewise, in order to run only the 'g++' "old-deja" tests in the
! testsuite with filenames matching '9805*', you would use
  
       make check-g++ RUNTESTFLAGS="old-deja.exp=9805* OTHER-OPTIONS"
  
!    The file-matching expression following FILENAME'.exp=' is treated as
  a series of whitespace-delimited glob expressions so that multiple
  patterns may be passed, although any whitespace must either be escaped
  or surrounded by single quotes if multiple expressions are desired.  For
--- 3085,3108 ----
  6.1 How can you run the testsuite on selected tests?
  ====================================================
  
! In order to run sets of tests selectively, there are targets â€˜make
! check-gccâ€™ and language specific â€˜make check-câ€™, â€˜make check-c++â€™, â€˜make
! check-dâ€™ â€˜make check-fortranâ€™, â€˜make check-adaâ€™, â€˜make check-m2â€™, â€˜make
! check-objcâ€™, â€˜make check-obj-c++â€™, â€˜make check-ltoâ€™ in the â€˜gccâ€™
! subdirectory of the object directory.  You can also just run â€˜make
! checkâ€™ in a subdirectory of the object directory.
  
!    A more selective way to just run all â€˜gccâ€™ execute tests in the
  testsuite is to use
  
       make check-gcc RUNTESTFLAGS="execute.exp OTHER-OPTIONS"
  
!    Likewise, in order to run only the â€˜g++â€™ "old-deja" tests in the
! testsuite with filenames matching â€˜9805*â€™, you would use
  
       make check-g++ RUNTESTFLAGS="old-deja.exp=9805* OTHER-OPTIONS"
  
!    The file-matching expression following FILENAMEâ€˜.exp=â€™ is treated as
  a series of whitespace-delimited glob expressions so that multiple
  patterns may be passed, although any whitespace must either be escaped
  or surrounded by single quotes if multiple expressions are desired.  For
*************** example,
*** 3111,3134 ****
       make check-g++ RUNTESTFLAGS="old-deja.exp=9805*\ virtual2.c OTHER-OPTIONS"
       make check-g++ RUNTESTFLAGS="'old-deja.exp=9805* virtual2.c' OTHER-OPTIONS"
  
!    The '*.exp' files are located in the testsuite directories of the GCC
! source, the most important ones being 'compile.exp', 'execute.exp',
! 'dg.exp' and 'old-deja.exp'.  To get a list of the possible '*.exp'
! files, pipe the output of 'make check' into a file and look at the
! 'Running ... .exp' lines.
  
  6.2 Passing options and running multiple testsuites
  ===================================================
  
  You can pass multiple options to the testsuite using the
! '--target_board' option of DejaGNU, either passed as part of
! 'RUNTESTFLAGS', or directly to 'runtest' if you prefer to work outside
  the makefiles.  For example,
  
       make check-g++ RUNTESTFLAGS="--target_board=unix/-O3/-fmerge-constants"
  
!    will run the standard 'g++' testsuites ("unix" is the target name for
! a standard native testsuite situation), passing '-O3 -fmerge-constants'
  to the compiler on every test, i.e., slashes separate options.
  
     You can run the testsuites multiple times using combinations of
--- 3111,3134 ----
       make check-g++ RUNTESTFLAGS="old-deja.exp=9805*\ virtual2.c OTHER-OPTIONS"
       make check-g++ RUNTESTFLAGS="'old-deja.exp=9805* virtual2.c' OTHER-OPTIONS"
  
!    The â€˜*.expâ€™ files are located in the testsuite directories of the GCC
! source, the most important ones being â€˜compile.expâ€™, â€˜execute.expâ€™,
! â€˜dg.expâ€™ and â€˜old-deja.expâ€™.  To get a list of the possible â€˜*.expâ€™
! files, pipe the output of â€˜make checkâ€™ into a file and look at the
! â€˜Running ... .expâ€™ lines.
  
  6.2 Passing options and running multiple testsuites
  ===================================================
  
  You can pass multiple options to the testsuite using the
! â€˜--target_boardâ€™ option of DejaGNU, either passed as part of
! â€˜RUNTESTFLAGSâ€™, or directly to â€˜runtestâ€™ if you prefer to work outside
  the makefiles.  For example,
  
       make check-g++ RUNTESTFLAGS="--target_board=unix/-O3/-fmerge-constants"
  
!    will run the standard â€˜g++â€™ testsuites ("unix" is the target name for
! a standard native testsuite situation), passing â€˜-O3 -fmerge-constantsâ€™
  to the compiler on every test, i.e., slashes separate options.
  
     You can run the testsuites multiple times using combinations of
*************** options with a syntax similar to the bra
*** 3138,3144 ****
  
     (Note the empty option caused by the trailing comma in the final
  group.)  The following will run each testsuite eight times using the
! 'arm-sim' target, as if you had specified all possible combinations
  yourself:
  
       --target_board='arm-sim/-mhard-float/-O1 \
--- 3138,3144 ----
  
     (Note the empty option caused by the trailing comma in the final
  group.)  The following will run each testsuite eight times using the
! â€˜arm-simâ€™ target, as if you had specified all possible combinations
  yourself:
  
       --target_board='arm-sim/-mhard-float/-O1 \
*************** This list:
*** 3155,3167 ****
  
       ..."--target_board=unix/-Wextra\{-O3,-fno-strength\}\{-fomit-frame,\}"
  
!    will generate four combinations, all involving '-Wextra'.
  
     The disadvantage to this method is that the testsuites are run in
  serial, which is a waste on multiprocessor systems.  For users with GNU
  Make and a shell which performs brace expansion, you can run the
  testsuites in parallel by having the shell perform the combinations and
! 'make' do the parallel runs.  Instead of using '--target_board', use a
  special makefile target:
  
       make -jN check-TESTSUITE//TEST-TARGET/OPTION1/OPTION2/...
--- 3155,3167 ----
  
       ..."--target_board=unix/-Wextra\{-O3,-fno-strength\}\{-fomit-frame,\}"
  
!    will generate four combinations, all involving â€˜-Wextraâ€™.
  
     The disadvantage to this method is that the testsuites are run in
  serial, which is a waste on multiprocessor systems.  For users with GNU
  Make and a shell which performs brace expansion, you can run the
  testsuites in parallel by having the shell perform the combinations and
! â€˜makeâ€™ do the parallel runs.  Instead of using â€˜--target_boardâ€™, use a
  special makefile target:
  
       make -jN check-TESTSUITE//TEST-TARGET/OPTION1/OPTION2/...
*************** special makefile target:
*** 3172,3196 ****
  
     will run three concurrent "make-gcc" testsuites, eventually testing
  all ten combinations as described above.  Note that this is currently
! only supported in the 'gcc' subdirectory.  (To see how this works, try
! typing 'echo' before the example given here.)
  
  6.3 How to interpret test results
  =================================
  
! The result of running the testsuite are various '*.sum' and '*.log'
! files in the testsuite subdirectories.  The '*.log' files contain a
  detailed log of the compiler invocations and the corresponding results,
! the '*.sum' files summarize the results.  These summaries contain status
  codes for all tests:
  
!    * PASS: the test passed as expected
!    * XPASS: the test unexpectedly passed
!    * FAIL: the test unexpectedly failed
!    * XFAIL: the test failed as expected
!    * UNSUPPORTED: the test is not supported on this platform
!    * ERROR: the testsuite detected an error
!    * WARNING: the testsuite detected a possible problem
  
     It is normal for some tests to report unexpected failures.  At the
  current time the testing harness does not allow fine grained control
--- 3172,3196 ----
  
     will run three concurrent "make-gcc" testsuites, eventually testing
  all ten combinations as described above.  Note that this is currently
! only supported in the â€˜gccâ€™ subdirectory.  (To see how this works, try
! typing â€˜echoâ€™ before the example given here.)
  
  6.3 How to interpret test results
  =================================
  
! The result of running the testsuite are various â€˜*.sumâ€™ and â€˜*.logâ€™
! files in the testsuite subdirectories.  The â€˜*.logâ€™ files contain a
  detailed log of the compiler invocations and the corresponding results,
! the â€˜*.sumâ€™ files summarize the results.  These summaries contain status
  codes for all tests:
  
!    â€¢ PASS: the test passed as expected
!    â€¢ XPASS: the test unexpectedly passed
!    â€¢ FAIL: the test unexpectedly failed
!    â€¢ XFAIL: the test failed as expected
!    â€¢ UNSUPPORTED: the test is not supported on this platform
!    â€¢ ERROR: the testsuite detected an error
!    â€¢ WARNING: the testsuite detected a possible problem
  
     It is normal for some tests to report unexpected failures.  At the
  current time the testing harness does not allow fine grained control
*************** fixed in future releases.
*** 3201,3213 ****
  ===========================
  
  If you want to report the results to the GCC project, use the
! 'contrib/test_summary' shell script.  Start it in the OBJDIR with
  
       SRCDIR/contrib/test_summary -p your_commentary.txt \
           -m gcc-testresults@gcc.gnu.org |sh
  
!    This script uses the 'Mail' program to send the results, so make sure
! it is in your 'PATH'.  The file 'your_commentary.txt' is prepended to
  the testsuite summary and should contain any special remarks you have on
  your results or your build environment.  Please do not edit the
  testsuite result block or the subject line, as these messages may be
--- 3201,3213 ----
  ===========================
  
  If you want to report the results to the GCC project, use the
! â€˜contrib/test_summaryâ€™ shell script.  Start it in the OBJDIR with
  
       SRCDIR/contrib/test_summary -p your_commentary.txt \
           -m gcc-testresults@gcc.gnu.org |sh
  
!    This script uses the â€˜Mailâ€™ program to send the results, so make sure
! it is in your â€˜PATHâ€™.  The file â€˜your_commentary.txtâ€™ is prepended to
  the testsuite summary and should contain any special remarks you have on
  your results or your build environment.  Please do not edit the
  testsuite result block or the subject line, as these messages may be
*************** that depend on this debugging informatio
*** 3230,3266 ****
  instance).
  
     That step completes the installation of GCC; user level binaries can
! be found in 'PREFIX/bin' where PREFIX is the value you specified with
! the '--prefix' to configure (or '/usr/local' by default).  (If you
! specified '--bindir', that directory will be used instead; otherwise, if
! you specified '--exec-prefix', 'EXEC-PREFIX/bin' will be used.)  Headers
! for the C++ library are installed in 'PREFIX/include'; libraries in
! 'LIBDIR' (normally 'PREFIX/lib'); internal parts of the compiler in
! 'LIBDIR/gcc' and 'LIBEXECDIR/gcc'; documentation in info format in
! 'INFODIR' (normally 'PREFIX/info').
  
     When installing cross-compilers, GCC's executables are not only
! installed into 'BINDIR', that is, 'EXEC-PREFIX/bin', but additionally
! into 'EXEC-PREFIX/TARGET-ALIAS/bin', if that directory exists.
! Typically, such "tooldirs" hold target-specific binutils, including
  assembler and linker.
  
!    Installation into a temporary staging area or into a 'chroot' jail
  can be achieved with the command
  
       make DESTDIR=PATH-TO-ROOTDIR install
  
  where PATH-TO-ROOTDIR is the absolute path of a directory relative to
  which all installation paths will be interpreted.  Note that the
! directory specified by 'DESTDIR' need not exist yet; it will be created
  if necessary.
  
!    There is a subtle point with tooldirs and 'DESTDIR': If you relocate
! a cross-compiler installation with e.g. 'DESTDIR=ROOTDIR', then the
! directory 'ROOTDIR/EXEC-PREFIX/TARGET-ALIAS/bin' will be filled with
  duplicated GCC executables only if it already exists, it will not be
  created otherwise.  This is regarded as a feature, not as a bug, because
! it gives slightly more control to the packagers using the 'DESTDIR'
  feature.
  
     You can install stripped programs and libraries with
--- 3230,3266 ----
  instance).
  
     That step completes the installation of GCC; user level binaries can
! be found in â€˜PREFIX/binâ€™ where PREFIX is the value you specified with
! the â€˜--prefixâ€™ to configure (or â€˜/usr/localâ€™ by default).  (If you
! specified â€˜--bindirâ€™, that directory will be used instead; otherwise, if
! you specified â€˜--exec-prefixâ€™, â€˜EXEC-PREFIX/binâ€™ will be used.)  Headers
! for the C++ library are installed in â€˜PREFIX/includeâ€™; libraries in
! â€˜LIBDIRâ€™ (normally â€˜PREFIX/libâ€™); internal parts of the compiler in
! â€˜LIBDIR/gccâ€™ and â€˜LIBEXECDIR/gccâ€™; documentation in info format in
! â€˜INFODIRâ€™ (normally â€˜PREFIX/infoâ€™).
  
     When installing cross-compilers, GCC's executables are not only
! installed into â€˜BINDIRâ€™, that is, â€˜EXEC-PREFIX/binâ€™, but additionally
! into â€˜EXEC-PREFIX/TARGET-ALIAS/binâ€™, if that directory exists.
! Typically, such â€œtooldirsâ€� hold target-specific binutils, including
  assembler and linker.
  
!    Installation into a temporary staging area or into a â€˜chrootâ€™ jail
  can be achieved with the command
  
       make DESTDIR=PATH-TO-ROOTDIR install
  
  where PATH-TO-ROOTDIR is the absolute path of a directory relative to
  which all installation paths will be interpreted.  Note that the
! directory specified by â€˜DESTDIRâ€™ need not exist yet; it will be created
  if necessary.
  
!    There is a subtle point with tooldirs and â€˜DESTDIRâ€™: If you relocate
! a cross-compiler installation with e.g. â€˜DESTDIR=ROOTDIRâ€™, then the
! directory â€˜ROOTDIR/EXEC-PREFIX/TARGET-ALIAS/binâ€™ will be filled with
  duplicated GCC executables only if it already exists, it will not be
  created otherwise.  This is regarded as a feature, not as a bug, because
! it gives slightly more control to the packagers using the â€˜DESTDIRâ€™
  feature.
  
     You can install stripped programs and libraries with
*************** various reasons.
*** 3308,3329 ****
  them.  If you have any problems installing them, please contact their
  makers.
  
!    * AIX:
!         * AIX Open Source Packages (AIX5L AIX 6.1 AIX 7.1).
  
!    * DOS--DJGPP.
  
!    * macOS:
!         * The Homebrew package manager;
!         * MacPorts.
  
!    * Microsoft Windows:
!         * The Cygwin project;
!         * The MinGW and mingw-w64 projects.
  
!    * OpenPKG offers binaries for quite a number of platforms.
  
!    * The GFortran Wiki has links to GNU Fortran binaries for several
       platforms.
  
  
--- 3308,3329 ----
  them.  If you have any problems installing them, please contact their
  makers.
  
!    â€¢ AIX:
!         â€¢ AIX Open Source Packages (AIX5L AIX 6.1 AIX 7.1).
  
!    â€¢ DOS--DJGPP.
  
!    â€¢ macOS:
!         â€¢ The Homebrew package manager;
!         â€¢ MacPorts.
  
!    â€¢ Microsoft Windows:
!         â€¢ The Cygwin project;
!         â€¢ The MinGW and mingw-w64 projects.
  
!    â€¢ OpenPKG offers binaries for quite a number of platforms.
  
!    â€¢ The GFortran Wiki has links to GNU Fortran binaries for several
       platforms.
  
  
*************** aarch64*-*-*
*** 3345,3383 ****
  
  To enable a workaround for the Cortex-A53 erratum number 835769 by
  default (for all CPUs regardless of -mcpu option given) at configure
! time use the '--enable-fix-cortex-a53-835769' option.  This will enable
  the fix by default and can be explicitly disabled during compilation by
! passing the '-mno-fix-cortex-a53-835769' option.  Conversely,
! '--disable-fix-cortex-a53-835769' will disable the workaround by
  default.  The workaround is disabled by default if neither of
! '--enable-fix-cortex-a53-835769' or '--disable-fix-cortex-a53-835769' is
  given at configure time.
  
     To enable a workaround for the Cortex-A53 erratum number 843419 by
  default (for all CPUs regardless of -mcpu option given) at configure
! time use the '--enable-fix-cortex-a53-843419' option.  This workaround
  is applied at link time.  Enabling the workaround will cause GCC to pass
  the relevant option to the linker.  It can be explicitly disabled during
! compilation by passing the '-mno-fix-cortex-a53-843419' option.
! Conversely, '--disable-fix-cortex-a53-843419' will disable the
  workaround by default.  The workaround is disabled by default if neither
! of '--enable-fix-cortex-a53-843419' or '--disable-fix-cortex-a53-843419'
  is given at configure time.
  
     To enable Branch Target Identification Mechanism and Return Address
  Signing by default at configure time use the
! '--enable-standard-branch-protection' option.  This is equivalent to
! having '-mbranch-protection=standard' during compilation.  This can be
  explicitly disabled during compilation by passing the
! '-mbranch-protection=none' option which turns off all types of branch
! protections.  Conversely, '--disable-standard-branch-protection' will
  disable both the protections by default.  This mechanism is turned off
  by default if neither of the options are given at configure time.
  
  amd64-*-solaris2*
  =================
  
! This is a synonym for 'x86_64-*-solaris2*'.
  
  amdgcn-*-amdhsa
  ===============
--- 3345,3383 ----
  
  To enable a workaround for the Cortex-A53 erratum number 835769 by
  default (for all CPUs regardless of -mcpu option given) at configure
! time use the â€˜--enable-fix-cortex-a53-835769â€™ option.  This will enable
  the fix by default and can be explicitly disabled during compilation by
! passing the â€˜-mno-fix-cortex-a53-835769â€™ option.  Conversely,
! â€˜--disable-fix-cortex-a53-835769â€™ will disable the workaround by
  default.  The workaround is disabled by default if neither of
! â€˜--enable-fix-cortex-a53-835769â€™ or â€˜--disable-fix-cortex-a53-835769â€™ is
  given at configure time.
  
     To enable a workaround for the Cortex-A53 erratum number 843419 by
  default (for all CPUs regardless of -mcpu option given) at configure
! time use the â€˜--enable-fix-cortex-a53-843419â€™ option.  This workaround
  is applied at link time.  Enabling the workaround will cause GCC to pass
  the relevant option to the linker.  It can be explicitly disabled during
! compilation by passing the â€˜-mno-fix-cortex-a53-843419â€™ option.
! Conversely, â€˜--disable-fix-cortex-a53-843419â€™ will disable the
  workaround by default.  The workaround is disabled by default if neither
! of â€˜--enable-fix-cortex-a53-843419â€™ or â€˜--disable-fix-cortex-a53-843419â€™
  is given at configure time.
  
     To enable Branch Target Identification Mechanism and Return Address
  Signing by default at configure time use the
! â€˜--enable-standard-branch-protectionâ€™ option.  This is equivalent to
! having â€˜-mbranch-protection=standardâ€™ during compilation.  This can be
  explicitly disabled during compilation by passing the
! â€˜-mbranch-protection=noneâ€™ option which turns off all types of branch
! protections.  Conversely, â€˜--disable-standard-branch-protectionâ€™ will
  disable both the protections by default.  This mechanism is turned off
  by default if neither of the options are given at configure time.
  
  amd64-*-solaris2*
  =================
  
! This is a synonym for â€˜x86_64-*-solaris2*â€™.
  
  amdgcn-*-amdhsa
  ===============
*************** amdgcn-*-amdhsa
*** 3385,3415 ****
  AMD GCN GPU target.
  
     Instead of GNU Binutils, you need to install LLVM and copy
! 'bin/llvm-mc' to 'amdgcn-amdhsa/bin/as', 'bin/lld' to
! 'amdgcn-amdhsa/bin/ld', 'bin/llvm-nm' to 'amdgcn-amdhsa/bin/nm', and
! 'bin/llvm-ar' to both 'bin/amdgcn-amdhsa-ar' and
! 'bin/amdgcn-amdhsa-ranlib'.
  
     The required version of LLVM depends on the devices that you want to
  support.  As the list of ISAs is long, GCC by default only builds a
! subset of the supported ISAs as multilib; use '--with-multilib-list=' to
  tailor the built multilibs.  Note that mixing ISAs in the same binary is
  not supported and gives a linker error.
  
!    By default, multilib support is built for 'gfx900', 'gfx906',
! 'gfx908', 'gfx90a', 'gfx90c', 'gfx1030', 'gfx1036', 'gfx1100' and
! 'gfx1103'.  The default multilib configuration requires LLVM 15 or
  newer.  LLVM 13.0.1 or LLVM 14 can be used by specifying a
! '--with-multilib-list=' that does not list any GFX 11 device nor
! 'gfx1036'.  At least LLVM 16 is required for 'gfx1150' and 'gfx1151',
! LLVM 19 for the generic 'gfx9-generic', 'gfx10-3-generic', and
! 'gfx11-generic' targets and for 'gfx1152', while LLVM 20 is required for
! 'gfx1153'.
  
     The supported ISA architectures are listed in the GCC manual.  The
! generic ISA targets 'gfx9-generic', 'gfx10-3-generic', and
! 'gfx11-generic' reduce the number of required multilibs but note that
! 'gfx9-generic' does not include 'gfx908' or 'gfx90a', that linking
  specific ISA code with generic code is currently not supported, and that
  only a future ROCm release (newer than 6.3.3) will be able to execute
  generic code.
--- 3385,3415 ----
  AMD GCN GPU target.
  
     Instead of GNU Binutils, you need to install LLVM and copy
! â€˜bin/llvm-mcâ€™ to â€˜amdgcn-amdhsa/bin/asâ€™, â€˜bin/lldâ€™ to
! â€˜amdgcn-amdhsa/bin/ldâ€™, â€˜bin/llvm-nmâ€™ to â€˜amdgcn-amdhsa/bin/nmâ€™, and
! â€˜bin/llvm-arâ€™ to both â€˜bin/amdgcn-amdhsa-arâ€™ and
! â€˜bin/amdgcn-amdhsa-ranlibâ€™.
  
     The required version of LLVM depends on the devices that you want to
  support.  As the list of ISAs is long, GCC by default only builds a
! subset of the supported ISAs as multilib; use â€˜--with-multilib-list=â€™ to
  tailor the built multilibs.  Note that mixing ISAs in the same binary is
  not supported and gives a linker error.
  
!    By default, multilib support is built for â€˜gfx900â€™, â€˜gfx906â€™,
! â€˜gfx908â€™, â€˜gfx90aâ€™, â€˜gfx90câ€™, â€˜gfx1030â€™, â€˜gfx1036â€™, â€˜gfx1100â€™ and
! â€˜gfx1103â€™.  The default multilib configuration requires LLVM 15 or
  newer.  LLVM 13.0.1 or LLVM 14 can be used by specifying a
! â€˜--with-multilib-list=â€™ that does not list any GFX 11 device nor
! â€˜gfx1036â€™.  At least LLVM 16 is required for â€˜gfx1150â€™ and â€˜gfx1151â€™,
! LLVM 19 for the generic â€˜gfx9-genericâ€™, â€˜gfx10-3-genericâ€™, and
! â€˜gfx11-genericâ€™ targets and for â€˜gfx1152â€™, while LLVM 20 is required for
! â€˜gfx1153â€™.
  
     The supported ISA architectures are listed in the GCC manual.  The
! generic ISA targets â€˜gfx9-genericâ€™, â€˜gfx10-3-genericâ€™, and
! â€˜gfx11-genericâ€™ reduce the number of required multilibs but note that
! â€˜gfx9-genericâ€™ does not include â€˜gfx908â€™ or â€˜gfx90aâ€™, that linking
  specific ISA code with generic code is currently not supported, and that
  only a future ROCm release (newer than 6.3.3) will be able to execute
  generic code.
*************** generic code.
*** 3419,3439 ****
  post-4.5.0 commit 2ef1a37e7 [Mar 25, 2025] fixes a SIMD math issue).
  
     To run the binaries, install the HSA Runtime from the ROCm Platform,
! and use 'libexec/gcc/amdhsa-amdhsa/VERSION/gcn-run' to launch them on
  the GPU.
  
  arc-*-elf32
  ===========
  
! Use 'configure --target=arc-elf32 --with-cpu=CPU
! --enable-languages="c,c++"' to configure GCC, with CPU being one of
! 'arc600', 'arc601', or 'arc700'.
  
  arc-linux-uclibc
  ================
  
! Use 'configure --target=arc-linux-uclibc --with-cpu=arc700
! --enable-languages="c,c++"' to configure GCC.
  
  arm-*-eabi
  ==========
--- 3419,3439 ----
  post-4.5.0 commit 2ef1a37e7 [Mar 25, 2025] fixes a SIMD math issue).
  
     To run the binaries, install the HSA Runtime from the ROCm Platform,
! and use â€˜libexec/gcc/amdhsa-amdhsa/VERSION/gcn-runâ€™ to launch them on
  the GPU.
  
  arc-*-elf32
  ===========
  
! Use â€˜configure --target=arc-elf32 --with-cpu=CPU
! --enable-languages="c,c++"â€™ to configure GCC, with CPU being one of
! â€˜arc600â€™, â€˜arc601â€™, or â€˜arc700â€™.
  
  arc-linux-uclibc
  ================
  
! Use â€˜configure --target=arc-linux-uclibc --with-cpu=arc700
! --enable-languages="c,c++"â€™ to configure GCC.
  
  arm-*-eabi
  ==========
*************** arm-*-eabi
*** 3441,3447 ****
  ARM-family processors.
  
     Building the Ada frontend commonly fails (an infinite loop executing
! 'xsinfo') if the host compiler is GNAT 4.8.  Host compilers built from
  the GNAT 4.6, 4.9 or 5 release branches are known to succeed.
  
  avr
--- 3441,3447 ----
  ARM-family processors.
  
     Building the Ada frontend commonly fails (an infinite loop executing
! â€˜xsinfoâ€™) if the host compiler is GNAT 4.8.  Host compilers built from
  the GNAT 4.6, 4.9 or 5 release branches are known to succeed.
  
  avr
*************** AVR 8-bit microcontrollers.  These are u
*** 3451,3464 ****
  There are no standard Unix configurations.  *Note AVR Options: (gcc)AVR
  Options, for the list of supported MCU types.
  
!    Use 'configure --target=avr --enable-languages="c,c++"' to configure
  GCC.
  
     Further installation notes and other useful information about AVR
  tools can also be obtained from:
  
!    * AVR-LibC: Building and Installing the GNU Tool Chain
!    * AVRtest: Running the avr-gcc Testsuite
  
  Blackfin
  ========
--- 3451,3464 ----
  There are no standard Unix configurations.  *Note AVR Options: (gcc)AVR
  Options, for the list of supported MCU types.
  
!    Use â€˜configure --target=avr --enable-languages="c,c++"â€™ to configure
  GCC.
  
     Further installation notes and other useful information about AVR
  tools can also be obtained from:
  
!    â€¢ AVR-LibC: Building and Installing the GNU Tool Chain
!    â€¢ AVRtest: Running the avr-gcc Testsuite
  
  Blackfin
  ========
*************** example the ETRAX series.  These are use
*** 3479,3485 ****
     *Note CRIS Options: (gcc)CRIS Options, for a list of CRIS-specific
  options.
  
!    Use 'configure --target=cris-elf' to configure GCC for building a
  cross-compiler for CRIS.
  
  DOS
--- 3479,3485 ----
     *Note CRIS Options: (gcc)CRIS Options, for a list of CRIS-specific
  options.
  
!    Use â€˜configure --target=cris-elfâ€™ to configure GCC for building a
  cross-compiler for CRIS.
  
  DOS
*************** Adapteva Epiphany.  This configuration i
*** 3503,3514 ****
  FreeBSD using the ELF file format with DWARF 2 debugging.
  
     We recommend bootstrapping against the latest GNU binutils or the
! version found in the 'devel/binutils' port.  This also has been known to
  enable additional features and improve overall testsuite results.
  
     Ada and D (or rather their respective libraries) are broken on
  FreeBSD/i386.  This also affects building 32-bit libraries on
! FreeBSD/amd64, so configure with '--disable-multilib' there in case you
  are building one of these front ends.
  
     Go (or rather libgo) is generally broken on FreeBSD.
--- 3503,3514 ----
  FreeBSD using the ELF file format with DWARF 2 debugging.
  
     We recommend bootstrapping against the latest GNU binutils or the
! version found in the â€˜devel/binutilsâ€™ port.  This also has been known to
  enable additional features and improve overall testsuite results.
  
     Ada and D (or rather their respective libraries) are broken on
  FreeBSD/i386.  This also affects building 32-bit libraries on
! FreeBSD/amd64, so configure with â€˜--disable-multilibâ€™ there in case you
  are building one of these front ends.
  
     Go (or rather libgo) is generally broken on FreeBSD.
*************** Renesas H8/300 series of processors.
*** 3527,3544 ****
  hppa64-hp-hpux11*
  =================
  
! Only the 64-bit 'hppa' target is supported on HP-UX. Support for 32-bit
! 'hppa' was discontinued in GCC 13.
  
     We require using gas on all hppa platforms.
  
!    It may be helpful to configure GCC with the '--with-gnu-as' and
! '--with-as=...' options to ensure that GCC can find GAS.
  
     Only the HP linker is supported.  Thus, it is best to explicitly
! configure the target with the '--with-ld=...' option.
  
!    The DCE thread library is not supported, so '--enable-threads=dce'
  does not work.
  
     Currently, there are no precompiled binaries for 64-bit HP-UX.
--- 3527,3544 ----
  hppa64-hp-hpux11*
  =================
  
! Only the 64-bit â€˜hppaâ€™ target is supported on HP-UX. Support for 32-bit
! â€˜hppaâ€™ was discontinued in GCC 13.
  
     We require using gas on all hppa platforms.
  
!    It may be helpful to configure GCC with the â€˜--with-gnu-asâ€™ and
! â€˜--with-as=...â€™ options to ensure that GCC can find GAS.
  
     Only the HP linker is supported.  Thus, it is best to explicitly
! configure the target with the â€˜--with-ld=...â€™ option.
  
!    The DCE thread library is not supported, so â€˜--enable-threads=dceâ€™
  does not work.
  
     Currently, there are no precompiled binaries for 64-bit HP-UX.
*************** i?86-*-solaris2*
*** 3565,3572 ****
  ================
  
  Use this for Solaris 11.4 on x86 and x86-64 systems.  Starting with GCC
! 4.7, there is also a 64-bit 'amd64-*-solaris2*' or 'x86_64-*-solaris2*'
! configuration that corresponds to 'sparcv9-sun-solaris2*'.
  
  ia64-*-linux
  ============
--- 3565,3572 ----
  ================
  
  Use this for Solaris 11.4 on x86 and x86-64 systems.  Starting with GCC
! 4.7, there is also a 64-bit â€˜amd64-*-solaris2*â€™ or â€˜x86_64-*-solaris2*â€™
! configuration that corresponds to â€˜sparcv9-sun-solaris2*â€™.
  
  ia64-*-linux
  ============
*************** IA-64 processor (also known as IPF, or I
*** 3575,3588 ****
  GNU/Linux.
  
     If you are using the installed system libunwind library with
! '--with-system-libunwind', then you must use libunwind 0.98 or later.
  
  ia64-*-hpux*
  ============
  
  Building GCC on this target requires the GNU Assembler.  The bundled HP
  assembler will not work.  To prevent GCC from using the wrong assembler,
! the option '--with-gnu-as' may be necessary.
  
  *-ibm-aix*
  ==========
--- 3575,3588 ----
  GNU/Linux.
  
     If you are using the installed system libunwind library with
! â€˜--with-system-libunwindâ€™, then you must use libunwind 0.98 or later.
  
  ia64-*-hpux*
  ============
  
  Building GCC on this target requires the GNU Assembler.  The bundled HP
  assembler will not work.  To prevent GCC from using the wrong assembler,
! the option â€˜--with-gnu-asâ€™ may be necessary.
  
  *-ibm-aix*
  ==========
*************** Support for AIX version 4.2 and older wa
*** 3592,3598 ****
  
     "out of memory" bootstrap failures may indicate a problem with
  process resource limits (ulimit).  Hard limits are configured in the
! '/etc/security/limits' system configuration file.
  
     GCC 4.9 and above require a C++ compiler for bootstrap.  IBM VAC++ /
  xlC cannot bootstrap GCC. xlc can bootstrap an older version of GCC and
--- 3592,3598 ----
  
     "out of memory" bootstrap failures may indicate a problem with
  process resource limits (ulimit).  Hard limits are configured in the
! â€˜/etc/security/limitsâ€™ system configuration file.
  
     GCC 4.9 and above require a C++ compiler for bootstrap.  IBM VAC++ /
  xlC cannot bootstrap GCC. xlc can bootstrap an older version of GCC and
*************** sources.  One may delete GCC's "fixed" h
*** 3611,3617 ****
  version of GCC built for an earlier release of AIX.
  
     To speed up the configuration phases of bootstrapping and installing
! GCC, one may use GNU Bash instead of AIX '/bin/sh', e.g.,
  
       % CONFIG_SHELL=/opt/freeware/bin/bash
       % export CONFIG_SHELL
--- 3611,3617 ----
  version of GCC built for an earlier release of AIX.
  
     To speed up the configuration phases of bootstrapping and installing
! GCC, one may use GNU Bash instead of AIX â€˜/bin/shâ€™, e.g.,
  
       % CONFIG_SHELL=/opt/freeware/bin/bash
       % export CONFIG_SHELL
*************** SRCDIR/configure.
*** 3625,3641 ****
  required by gfortran must be 32-bit libraries.  Building GMP and MPFR as
  static archive libraries works better than shared libraries.
  
!    Errors involving 'alloca' when building GCC generally are due to an
! incorrect definition of 'CC' in the Makefile or mixing files compiled
  with the native C compiler and GCC.  During the stage1 phase of the
! build, the native AIX compiler *must* be invoked as 'cc' (not 'xlc').
! Once 'configure' has been informed of 'xlc', one needs to use 'make
! distclean' to remove the configure cache files and ensure that 'CC'
  environment variable does not provide a definition that will confuse
! 'configure'.  If this error occurs during stage2 or later, then the
  problem most likely is the version of Make (see above).
  
!    The native 'as' and 'ld' are recommended for bootstrapping on AIX.
  The GNU Assembler, GNU Linker, and GNU Binutils version 2.20 is the
  minimum level that supports bootstrap on AIX 5.  The GNU Assembler has
  not been updated to support AIX 6 or AIX 7.  The native AIX tools do
--- 3625,3641 ----
  required by gfortran must be 32-bit libraries.  Building GMP and MPFR as
  static archive libraries works better than shared libraries.
  
!    Errors involving â€˜allocaâ€™ when building GCC generally are due to an
! incorrect definition of â€˜CCâ€™ in the Makefile or mixing files compiled
  with the native C compiler and GCC.  During the stage1 phase of the
! build, the native AIX compiler *must* be invoked as â€˜ccâ€™ (not â€˜xlcâ€™).
! Once â€˜configureâ€™ has been informed of â€˜xlcâ€™, one needs to use â€˜make
! distcleanâ€™ to remove the configure cache files and ensure that â€˜CCâ€™
  environment variable does not provide a definition that will confuse
! â€˜configureâ€™.  If this error occurs during stage2 or later, then the
  problem most likely is the version of Make (see above).
  
!    The native â€˜asâ€™ and â€˜ldâ€™ are recommended for bootstrapping on AIX.
  The GNU Assembler, GNU Linker, and GNU Binutils version 2.20 is the
  minimum level that supports bootstrap on AIX 5.  The GNU Assembler has
  not been updated to support AIX 6 or AIX 7.  The native AIX tools do
*************** AIX 5.3 TL11 and IZ98134 for AIX 5.3 TL1
*** 3656,3690 ****
  TL12 SP5, AIX 6.1 TL04 SP11, AIX 6.1 TL05 SP7, AIX 6.1 TL06 SP6, AIX 6.1
  TL07 and AIX 7.1 TL01 should include the fix.
  
!    Building 'libstdc++.a' requires a fix for an AIX Assembler bug APAR
  IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1).  It also requires a fix for
  another AIX Assembler bug and a co-dependent AIX Archiver fix referenced
  as APAR IY53606 (AIX 5.2) or as APAR IY54774 (AIX 5.1)
  
!    'libstdc++' in GCC 3.4 increments the major version number of the
! shared object and GCC installation places the 'libstdc++.a' shared
  library in a common location which will overwrite the and GCC 3.3
  version of the shared library.  Applications either need to be re-linked
  against the new shared library or the GCC 3.1 and GCC 3.3 versions of
! the 'libstdc++' shared object needs to be available to the AIX runtime
! loader.  The GCC 3.1 'libstdc++.so.4', if present, and GCC 3.3
! 'libstdc++.so.5' shared objects can be installed for runtime dynamic
! loading using the following steps to set the 'F_LOADONLY' flag in the
! shared object for _each_ multilib 'libstdc++.a' installed:
  
!    Extract the shared objects from the currently installed 'libstdc++.a'
  archive:
       % ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5
  
!    Enable the 'F_LOADONLY' flag so that the shared object will be
  available for runtime dynamic loading, but not linking:
       % strip -e libstdc++.so.4 libstdc++.so.5
  
!    Archive the runtime-only shared object in the GCC 3.4 'libstdc++.a'
  archive:
       % ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5
  
!    Eventually, the '--with-aix-soname=svr4' configure option may drop
  the need for this procedure for libraries that support it.
  
     Linking executables and shared libraries may produce warnings of
--- 3656,3690 ----
  TL12 SP5, AIX 6.1 TL04 SP11, AIX 6.1 TL05 SP7, AIX 6.1 TL06 SP6, AIX 6.1
  TL07 and AIX 7.1 TL01 should include the fix.
  
!    Building â€˜libstdc++.aâ€™ requires a fix for an AIX Assembler bug APAR
  IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1).  It also requires a fix for
  another AIX Assembler bug and a co-dependent AIX Archiver fix referenced
  as APAR IY53606 (AIX 5.2) or as APAR IY54774 (AIX 5.1)
  
!    â€˜libstdc++â€™ in GCC 3.4 increments the major version number of the
! shared object and GCC installation places the â€˜libstdc++.aâ€™ shared
  library in a common location which will overwrite the and GCC 3.3
  version of the shared library.  Applications either need to be re-linked
  against the new shared library or the GCC 3.1 and GCC 3.3 versions of
! the â€˜libstdc++â€™ shared object needs to be available to the AIX runtime
! loader.  The GCC 3.1 â€˜libstdc++.so.4â€™, if present, and GCC 3.3
! â€˜libstdc++.so.5â€™ shared objects can be installed for runtime dynamic
! loading using the following steps to set the â€˜F_LOADONLYâ€™ flag in the
! shared object for _each_ multilib â€˜libstdc++.aâ€™ installed:
  
!    Extract the shared objects from the currently installed â€˜libstdc++.aâ€™
  archive:
       % ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5
  
!    Enable the â€˜F_LOADONLYâ€™ flag so that the shared object will be
  available for runtime dynamic loading, but not linking:
       % strip -e libstdc++.so.4 libstdc++.so.5
  
!    Archive the runtime-only shared object in the GCC 3.4 â€˜libstdc++.aâ€™
  archive:
       % ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5
  
!    Eventually, the â€˜--with-aix-soname=svr4â€™ configure option may drop
  the need for this procedure for libraries that support it.
  
     Linking executables and shared libraries may produce warnings of
*************** executable.
*** 3699,3711 ****
  to parse archive libraries did not handle the new format correctly.
  These routines are used by GCC and result in error messages during
  linking such as "not a COFF file".  The version of the routines shipped
! with AIX 4.3.1 should work for a 32-bit environment.  The '-g' option of
  the archive command may be used to create archives of 32-bit objects
  using the original "small format".  A correct version of the routines is
  shipped with AIX 4.3.2 and above.
  
     Some versions of the AIX binder (linker) can fail with a relocation
! overflow severe error when the '-bbigtoc' option is used to link
  GCC-produced object files into an executable that overflows the TOC.  A
  fix for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC)
  is available as PTF U455193.
--- 3699,3711 ----
  to parse archive libraries did not handle the new format correctly.
  These routines are used by GCC and result in error messages during
  linking such as "not a COFF file".  The version of the routines shipped
! with AIX 4.3.1 should work for a 32-bit environment.  The â€˜-gâ€™ option of
  the archive command may be used to create archives of 32-bit objects
  using the original "small format".  A correct version of the routines is
  shipped with AIX 4.3.2 and above.
  
     Some versions of the AIX binder (linker) can fail with a relocation
! overflow severe error when the â€˜-bbigtocâ€™ option is used to link
  GCC-produced object files into an executable that overflows the TOC.  A
  fix for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC)
  is available as PTF U455193.
*************** is incorporated in AIX 4.3.1 and above.
*** 3722,3735 ****
  
     AIX provides National Language Support (NLS).  Compilers and
  assemblers use NLS to support locale-specific representations of various
! data formats including floating-point numbers (e.g., '.' vs ',' for
  separating decimal fractions).  There have been problems reported where
  GCC does not produce the same floating-point formats that the assembler
! expects.  If one encounters this problem, set the 'LANG' environment
! variable to 'C' or 'En_US'.
  
!    A default can be specified with the '-mcpu=CPU_TYPE' switch and using
! the configure option '--with-cpu-CPU_TYPE'.
  
  iq2000-*-elf
  ============
--- 3722,3735 ----
  
     AIX provides National Language Support (NLS).  Compilers and
  assemblers use NLS to support locale-specific representations of various
! data formats including floating-point numbers (e.g., â€˜.â€™ vs â€˜,â€™ for
  separating decimal fractions).  There have been problems reported where
  GCC does not produce the same floating-point formats that the assembler
! expects.  If one encounters this problem, set the â€˜LANGâ€™ environment
! variable to â€˜Câ€™ or â€˜En_USâ€™.
  
!    A default can be specified with the â€˜-mcpu=CPU_TYPEâ€™ switch and using
! the configure option â€˜--with-cpu-CPU_TYPEâ€™.
  
  iq2000-*-elf
  ============
*************** LoongArch
*** 3753,3771 ****
  =========
  
  LoongArch processor.  The following LoongArch targets are available:
! 'loongarch64-linux-gnu*'
       LoongArch processor running GNU/Linux.  This target triplet may be
       coupled with a small set of possible suffixes to identify their
       default ABI type:
!      'f64'
!           Uses 'lp64d/base' ABI by default.
!      'f32'
!           Uses 'lp64f/base' ABI by default.
!      'sf'
!           Uses 'lp64s/base' ABI by default.
  
! 'loongarch64-linux-gnu'
!      Same as 'loongarch64-linux-gnuf64' for legacy support.
  
     More information about LoongArch can be found at
  <https://github.com/loongson/LoongArch-Documentation>.
--- 3753,3771 ----
  =========
  
  LoongArch processor.  The following LoongArch targets are available:
! â€˜loongarch64-linux-gnu*â€™
       LoongArch processor running GNU/Linux.  This target triplet may be
       coupled with a small set of possible suffixes to identify their
       default ABI type:
!      â€˜f64â€™
!           Uses â€˜lp64d/baseâ€™ ABI by default.
!      â€˜f32â€™
!           Uses â€˜lp64f/baseâ€™ ABI by default.
!      â€˜sfâ€™
!           Uses â€˜lp64s/baseâ€™ ABI by default.
  
! â€˜loongarch64-linux-gnuâ€™
!      Same as â€˜loongarch64-linux-gnuf64â€™ for legacy support.
  
     More information about LoongArch can be found at
  <https://github.com/loongson/LoongArch-Documentation>.
*************** systems.
*** 3785,3806 ****
  m68k-*-*
  ========
  
! By default, 'm68k-*-elf*', 'm68k-*-rtems', 'm68k-*-uclinux' and
! 'm68k-*-linux' build libraries for both M680x0 and ColdFire processors.
  If you only need the M680x0 libraries, you can omit the ColdFire ones by
! passing '--with-arch=m68k' to 'configure'.  Alternatively, you can omit
! the M680x0 libraries by passing '--with-arch=cf' to 'configure'.  These
  targets default to 5206 or 5475 code as appropriate for the target
! system when configured with '--with-arch=cf' and 68020 code otherwise.
  
!    The 'm68k-*-netbsd' and 'm68k-*-openbsd' targets also support the
! '--with-arch' option.  They will generate ColdFire CFV4e code when
! configured with '--with-arch=cf' and 68020 code otherwise.
  
     You can override the default processors listed above by configuring
! with '--with-cpu=TARGET'.  This TARGET can either be a '-mcpu' argument
! or one of the following values: 'm68000', 'm68010', 'm68020', 'm68030',
! 'm68040', 'm68060', 'm68020-40' and 'm68020-60'.
  
     GCC requires at least binutils version 2.17 on these targets.
  
--- 3785,3806 ----
  m68k-*-*
  ========
  
! By default, â€˜m68k-*-elf*â€™, â€˜m68k-*-rtemsâ€™, â€˜m68k-*-uclinuxâ€™ and
! â€˜m68k-*-linuxâ€™ build libraries for both M680x0 and ColdFire processors.
  If you only need the M680x0 libraries, you can omit the ColdFire ones by
! passing â€˜--with-arch=m68kâ€™ to â€˜configureâ€™.  Alternatively, you can omit
! the M680x0 libraries by passing â€˜--with-arch=cfâ€™ to â€˜configureâ€™.  These
  targets default to 5206 or 5475 code as appropriate for the target
! system when configured with â€˜--with-arch=cfâ€™ and 68020 code otherwise.
  
!    The â€˜m68k-*-netbsdâ€™ and â€˜m68k-*-openbsdâ€™ targets also support the
! â€˜--with-archâ€™ option.  They will generate ColdFire CFV4e code when
! configured with â€˜--with-arch=cfâ€™ and 68020 code otherwise.
  
     You can override the default processors listed above by configuring
! with â€˜--with-cpu=TARGETâ€™.  This TARGET can either be a â€˜-mcpuâ€™ argument
! or one of the following values: â€˜m68000â€™, â€˜m68010â€™, â€˜m68020â€™, â€˜m68030â€™,
! â€˜m68040â€™, â€˜m68060â€™, â€˜m68020-40â€™ and â€˜m68020-60â€™.
  
     GCC requires at least binutils version 2.17 on these targets.
  
*************** m68k-*-uclinux
*** 3808,3814 ****
  ==============
  
  GCC 4.3 changed the uClinux configuration so that it uses the
! 'm68k-linux-gnu' ABI rather than the 'm68k-elf' ABI. It also added
  improved support for C++ and flat shared libraries, both of which were
  ABI changes.
  
--- 3808,3814 ----
  ==============
  
  GCC 4.3 changed the uClinux configuration so that it uses the
! â€˜m68k-linux-gnuâ€™ ABI rather than the â€˜m68k-elfâ€™ ABI. It also added
  improved support for C++ and flat shared libraries, both of which were
  ABI changes.
  
*************** optional, and there should not be a warn
*** 3832,3858 ****
  
     The libstdc++ atomic locking routines for MIPS targets requires MIPS
  II and later.  A patch went in just after the GCC 3.3 release to make
! 'mips*-*-*' use the generic implementation instead.  You can also
! configure for 'mipsel-elf' as a workaround.  The 'mips*-*-linux*' target
  continues to use the MIPS II routines.  More work on this is expected in
  future releases.
  
!    The built-in '__sync_*' functions are available on MIPS II and later
! systems and others that support the 'll', 'sc' and 'sync' instructions.
! This can be overridden by passing '--with-llsc' or '--without-llsc' when
  configuring GCC. Since the Linux kernel emulates these instructions if
! they are missing, the default for 'mips*-*-linux*' targets is
! '--with-llsc'.  The '--with-llsc' and '--without-llsc' configure options
! may be overridden at compile time by passing the '-mllsc' or '-mno-llsc'
  options to the compiler.
  
     MIPS systems check for division by zero (unless
! '-mno-check-zero-division' is passed to the compiler) by generating
  either a conditional trap or a break instruction.  Using trap results in
  smaller code, but is only supported on MIPS II and later.  Also, some
  versions of the Linux kernel have a bug that prevents trap from
! generating the proper signal ('SIGFPE').  To enable the use of break,
! use the '--with-divide=breaks' 'configure' option when configuring GCC.
  The default is to use traps on systems that support them.
  
  moxie-*-elf
--- 3832,3858 ----
  
     The libstdc++ atomic locking routines for MIPS targets requires MIPS
  II and later.  A patch went in just after the GCC 3.3 release to make
! â€˜mips*-*-*â€™ use the generic implementation instead.  You can also
! configure for â€˜mipsel-elfâ€™ as a workaround.  The â€˜mips*-*-linux*â€™ target
  continues to use the MIPS II routines.  More work on this is expected in
  future releases.
  
!    The built-in â€˜__sync_*â€™ functions are available on MIPS II and later
! systems and others that support the â€˜llâ€™, â€˜scâ€™ and â€˜syncâ€™ instructions.
! This can be overridden by passing â€˜--with-llscâ€™ or â€˜--without-llscâ€™ when
  configuring GCC. Since the Linux kernel emulates these instructions if
! they are missing, the default for â€˜mips*-*-linux*â€™ targets is
! â€˜--with-llscâ€™.  The â€˜--with-llscâ€™ and â€˜--without-llscâ€™ configure options
! may be overridden at compile time by passing the â€˜-mllscâ€™ or â€˜-mno-llscâ€™
  options to the compiler.
  
     MIPS systems check for division by zero (unless
! â€˜-mno-check-zero-divisionâ€™ is passed to the compiler) by generating
  either a conditional trap or a break instruction.  Using trap results in
  smaller code, but is only supported on MIPS II and later.  Also, some
  versions of the Linux kernel have a bug that prevents trap from
! generating the proper signal (â€˜SIGFPEâ€™).  To enable the use of break,
! use the â€˜--with-divide=breaksâ€™ â€˜configureâ€™ option when configuring GCC.
  The default is to use traps on systems that support them.
  
  moxie-*-elf
*************** msp430-*-elf*
*** 3866,3882 ****
  TI MSP430 processor.  This configuration is intended for embedded
  systems.
  
!    'msp430-*-elf' is the standard configuration with most GCC features
  enabled by default.
  
!    'msp430-*-elfbare' is tuned for a bare-metal environment, and
  disables features related to shared libraries and other functionality
  not used for this device.  This reduces code and data usage of the GCC
  libraries, resulting in a minimal run-time environment by default.
  
     Features disabled by default include:
!    * transactional memory
!    * __cxa_atexit
  
  nds32le-*-elf
  =============
--- 3866,3882 ----
  TI MSP430 processor.  This configuration is intended for embedded
  systems.
  
!    â€˜msp430-*-elfâ€™ is the standard configuration with most GCC features
  enabled by default.
  
!    â€˜msp430-*-elfbareâ€™ is tuned for a bare-metal environment, and
  disables features related to shared libraries and other functionality
  not used for this device.  This reduces code and data usage of the GCC
  libraries, resulting in a minimal run-time environment by default.
  
     Features disabled by default include:
!    â€¢ transactional memory
!    â€¢ __cxa_atexit
  
  nds32le-*-elf
  =============
*************** Nvidia PTX target.
*** 3895,3917 ****
  
     Instead of GNU binutils, you will need to install nvptx-tools.  Tell
  GCC where to find it:
! '--with-build-time-tools=[install-nvptx-tools]/nvptx-none/bin'.
  
     You will need newlib 4.3.0 or later.  It can be automatically built
  together with GCC.  For this, add a symbolic link to nvptx-newlib's
! 'newlib' directory to the directory containing the GCC sources.
  
!    Use the '--disable-sjlj-exceptions' and
! '--enable-newlib-io-long-long' options when configuring.
  
!    The '--with-arch' option may be specified to override the default
! value for the '-march' option, and to also build corresponding target
! libraries.  The default is '--with-arch=sm_52'.
  
!    For example, if '--with-arch=sm_70' is specified, code generation
! defaults to '-march=sm_70' and corresponding target libraries are built,
! in addition to those mandated by '--with-multilib-list', if any, *note
! '--with-multilib-list': with-multilib-list.
  
  or1k-*-elf
  ==========
--- 3895,3917 ----
  
     Instead of GNU binutils, you will need to install nvptx-tools.  Tell
  GCC where to find it:
! â€˜--with-build-time-tools=[install-nvptx-tools]/nvptx-none/binâ€™.
  
     You will need newlib 4.3.0 or later.  It can be automatically built
  together with GCC.  For this, add a symbolic link to nvptx-newlib's
! â€˜newlibâ€™ directory to the directory containing the GCC sources.
  
!    Use the â€˜--disable-sjlj-exceptionsâ€™ and
! â€˜--enable-newlib-io-long-longâ€™ options when configuring.
  
!    The â€˜--with-archâ€™ option may be specified to override the default
! value for the â€˜-marchâ€™ option, and to also build corresponding target
! libraries.  The default is â€˜--with-arch=sm_52â€™.
  
!    For example, if â€˜--with-arch=sm_70â€™ is specified, code generation
! defaults to â€˜-march=sm_70â€™ and corresponding target libraries are built,
! in addition to those mandated by â€˜--with-multilib-listâ€™, if any, *note
! â€˜--with-multilib-listâ€™: with-multilib-list.
  
  or1k-*-elf
  ==========
*************** The OpenRISC 1000 32-bit processor with
*** 3927,3934 ****
  powerpc-*-*
  ===========
  
! You can specify a default version for the '-mcpu=CPU_TYPE' switch by
! using the configure option '--with-cpu-CPU_TYPE'.
  
     You will need GNU binutils 2.20 or newer.
  
--- 3927,3934 ----
  powerpc-*-*
  ===========
  
! You can specify a default version for the â€˜-mcpu=CPU_TYPEâ€™ switch by
! using the configure option â€˜--with-cpu-CPU_TYPEâ€™.
  
     You will need GNU binutils 2.20 or newer.
  
*************** riscv32-*-elf
*** 3999,4024 ****
  
  The RISC-V RV32 instruction set.  This configuration is intended for
  embedded systems.  This (and all other RISC-V) targets require the
! binutils 2.30 release.
  
  riscv32-*-linux
  ===============
  
  The RISC-V RV32 instruction set running GNU/Linux.  This (and all other
! RISC-V) targets require the binutils 2.30 release.
  
  riscv64-*-elf
  =============
  
  The RISC-V RV64 instruction set.  This configuration is intended for
  embedded systems.  This (and all other RISC-V) targets require the
! binutils 2.30 release.
  
  riscv64-*-linux
  ===============
  
  The RISC-V RV64 instruction set running GNU/Linux.  This (and all other
! RISC-V) targets require the binutils 2.30 release.
  
  rx-*-elf
  ========
--- 3999,4024 ----
  
  The RISC-V RV32 instruction set.  This configuration is intended for
  embedded systems.  This (and all other RISC-V) targets require the
! binutils 2.40 release.
  
  riscv32-*-linux
  ===============
  
  The RISC-V RV32 instruction set running GNU/Linux.  This (and all other
! RISC-V) targets require the binutils 2.40 release.
  
  riscv64-*-elf
  =============
  
  The RISC-V RV64 instruction set.  This configuration is intended for
  embedded systems.  This (and all other RISC-V) targets require the
! binutils 2.40 release.
  
  riscv64-*-linux
  ===============
  
  The RISC-V RV64 instruction set running GNU/Linux.  This (and all other
! RISC-V) targets require the binutils 2.40 release.
  
  rx-*-elf
  ========
*************** GCC 4.8.  Support for Solaris 7 has been
*** 4052,4111 ****
     Solaris 11.4 provides one or more of GCC 5, 7, 9, 10, 11, 12, 13, and
  14.
  
!    You need to install the 'system/header', 'system/linker', and
! 'developer/assembler' packages.
  
!    Trying to use the compatibility tools in '/usr/ucb', from the
! 'compatibility/ucb' package, to install GCC has been observed to cause
! trouble.  The fix is to remove '/usr/ucb' from your 'PATH'.
  
     The build process works more smoothly with the legacy Solaris tools
! so, if you have '/usr/xpg4/bin' in your 'PATH', we recommend that you
! place '/usr/bin' before '/usr/xpg4/bin' for the duration of the build.
  
     We recommend the use of the Solaris assembler or the GNU assembler,
  in conjunction with the Solaris linker.
  
!    The GNU 'as' versions included in Solaris 11.4, from GNU binutils
! 2.30.1 or newer (in '/usr/bin/gas' and '/usr/gnu/bin/as'), are known to
  work.  The version from GNU binutils 2.44 is known to work as well.
! Recent versions of the Solaris assembler in '/usr/bin/as' work almost as
! well, though.  To use GNU 'as', configure with the options
! '--with-gnu-as --with-as=/usr/gnu/bin/as'.
  
     For linking, the Solaris linker is preferred.  If you want to use the
  GNU linker instead, the version in Solaris 11.4, from GNU binutils
! 2.30.1 or newer (in '/usr/gnu/bin/ld' and '/usr/bin/gld'), works.
  However, it generally lacks platform specific features, so better stay
! with Solaris 'ld'.  When using the version from GNU binutils 2.44,
  there's an important caveat: binutils _must_ be configured with
! 'CONFIG_SHELL=/bin/bash', otherwise the linker's built-in linker scripts
  get corrupted on x86.  To use the LTO linker plugin
! ('-fuse-linker-plugin') with GNU 'ld', GNU binutils _must_ be configured
! with '--enable-largefile'.  To use Solaris 'ld', we recommend to
! configure with '--without-gnu-ld --with-ld=/usr/bin/ld' to guarantee the
! right linker is found irrespective of the user's 'PATH'.
  
     Note that your mileage may vary if you use a combination of the GNU
! tools and the Solaris tools: while the combination GNU 'as' and Solaris
! 'ld' works well, the reverse combination Solaris 'as' with GNU 'ld' may
  fail to build or cause memory corruption at runtime in some cases for
  C++ programs.
  
!    To enable symbol versioning in 'libstdc++' and other runtime
  libraries with the Solaris linker, you need to have any version of GNU
! 'c++filt', which is part of GNU binutils.  Symbol versioning will be
! disabled if no appropriate version is found.  Solaris 'c++filt' from the
  Solaris Studio compilers does _not_ work.
  
     In order to build the GNU Ada compiler, GNAT, a working GNAT is
  needed.  Since Solaris 11.4 SRU 39, GNAT 11, 12, 13 or 14 is bundled in
! the 'developer/gcc/gcc-gnat' package.
  
!    In order to build the GNU D compiler, GDC, a working 'libphobos' is
  needed.  That library wasn't built by default in GCC 9-11 on SPARC, or
  on x86 when the Solaris assembler is used, but can be enabled by
! configuring with '--enable-libphobos'.  Also, GDC 9.4.0 is required on
  x86, while GDC 9.3.0 is known to work on SPARC.
  
     The versions of the GNU Multiple Precision Library (GMP), the MPFR
--- 4052,4111 ----
     Solaris 11.4 provides one or more of GCC 5, 7, 9, 10, 11, 12, 13, and
  14.
  
!    You need to install the â€˜system/headerâ€™, â€˜system/linkerâ€™, and
! â€˜developer/assemblerâ€™ packages.
  
!    Trying to use the compatibility tools in â€˜/usr/ucbâ€™, from the
! â€˜compatibility/ucbâ€™ package, to install GCC has been observed to cause
! trouble.  The fix is to remove â€˜/usr/ucbâ€™ from your â€˜PATHâ€™.
  
     The build process works more smoothly with the legacy Solaris tools
! so, if you have â€˜/usr/xpg4/binâ€™ in your â€˜PATHâ€™, we recommend that you
! place â€˜/usr/binâ€™ before â€˜/usr/xpg4/binâ€™ for the duration of the build.
  
     We recommend the use of the Solaris assembler or the GNU assembler,
  in conjunction with the Solaris linker.
  
!    The GNU â€˜asâ€™ versions included in Solaris 11.4, from GNU binutils
! 2.30.1 or newer (in â€˜/usr/bin/gasâ€™ and â€˜/usr/gnu/bin/asâ€™), are known to
  work.  The version from GNU binutils 2.44 is known to work as well.
! Recent versions of the Solaris assembler in â€˜/usr/bin/asâ€™ work almost as
! well, though.  To use GNU â€˜asâ€™, configure with the options
! â€˜--with-gnu-as --with-as=/usr/gnu/bin/asâ€™.
  
     For linking, the Solaris linker is preferred.  If you want to use the
  GNU linker instead, the version in Solaris 11.4, from GNU binutils
! 2.30.1 or newer (in â€˜/usr/gnu/bin/ldâ€™ and â€˜/usr/bin/gldâ€™), works.
  However, it generally lacks platform specific features, so better stay
! with Solaris â€˜ldâ€™.  When using the version from GNU binutils 2.44,
  there's an important caveat: binutils _must_ be configured with
! â€˜CONFIG_SHELL=/bin/bashâ€™, otherwise the linker's built-in linker scripts
  get corrupted on x86.  To use the LTO linker plugin
! (â€˜-fuse-linker-pluginâ€™) with GNU â€˜ldâ€™, GNU binutils _must_ be configured
! with â€˜--enable-largefileâ€™.  To use Solaris â€˜ldâ€™, we recommend to
! configure with â€˜--without-gnu-ld --with-ld=/usr/bin/ldâ€™ to guarantee the
! right linker is found irrespective of the user's â€˜PATHâ€™.
  
     Note that your mileage may vary if you use a combination of the GNU
! tools and the Solaris tools: while the combination GNU â€˜asâ€™ and Solaris
! â€˜ldâ€™ works well, the reverse combination Solaris â€˜asâ€™ with GNU â€˜ldâ€™ may
  fail to build or cause memory corruption at runtime in some cases for
  C++ programs.
  
!    To enable symbol versioning in â€˜libstdc++â€™ and other runtime
  libraries with the Solaris linker, you need to have any version of GNU
! â€˜c++filtâ€™, which is part of GNU binutils.  Symbol versioning will be
! disabled if no appropriate version is found.  Solaris â€˜c++filtâ€™ from the
  Solaris Studio compilers does _not_ work.
  
     In order to build the GNU Ada compiler, GNAT, a working GNAT is
  needed.  Since Solaris 11.4 SRU 39, GNAT 11, 12, 13 or 14 is bundled in
! the â€˜developer/gcc/gcc-gnatâ€™ package.
  
!    In order to build the GNU D compiler, GDC, a working â€˜libphobosâ€™ is
  needed.  That library wasn't built by default in GCC 9-11 on SPARC, or
  on x86 when the Solaris assembler is used, but can be enabled by
! configuring with â€˜--enable-libphobosâ€™.  Also, GDC 9.4.0 is required on
  x86, while GDC 9.3.0 is known to work on SPARC.
  
     The versions of the GNU Multiple Precision Library (GMP), the MPFR
*************** information.
*** 4135,4146 ****
  
     Starting with Solaris 7, the operating system is capable of executing
  64-bit SPARC V9 binaries.  GCC 3.1 and later properly supports this; the
! '-m64' option enables 64-bit code generation.
  
     When configuring the GNU Multiple Precision Library (GMP), the MPFR
  library or the MPC library on Solaris, the canonical target triplet must
! be specified as the 'build' parameter on the 'configure' line.  This
! target triplet can be obtained by invoking './config.guess' in the
  toplevel source directory of GCC (and not that of GMP or MPFR or MPC).
  For example:
  
--- 4135,4146 ----
  
     Starting with Solaris 7, the operating system is capable of executing
  64-bit SPARC V9 binaries.  GCC 3.1 and later properly supports this; the
! â€˜-m64â€™ option enables 64-bit code generation.
  
     When configuring the GNU Multiple Precision Library (GMP), the MPFR
  library or the MPC library on Solaris, the canonical target triplet must
! be specified as the â€˜buildâ€™ parameter on the â€˜configureâ€™ line.  This
! target triplet can be obtained by invoking â€˜./config.guessâ€™ in the
  toplevel source directory of GCC (and not that of GMP or MPFR or MPC).
  For example:
  
*************** sparc-*-linux*
*** 4152,4172 ****
  sparc64-*-solaris2*
  ===================
  
! This is a synonym for 'sparcv9-*-solaris2*'.
  
  sparcv9-*-solaris2*
  ===================
  
  When configuring a 64-bit-default GCC on Solaris/SPARC, you must use a
  build compiler that generates 64-bit code, either by default or by
! specifying 'CC='gcc -m64' CXX='g++ -m64' GDC='gdc -m64'' to 'configure'.
! Additionally, you _must_ pass '--build=sparcv9-sun-solaris2.11' or
! '--build=sparc64-sun-solaris2.11' because 'config.guess' misdetects this
  situation, which can cause build failures.
  
     When configuring the GNU Multiple Precision Library (GMP), the MPFR
  library or the MPC library, the canonical target triplet must be
! specified as the 'build' parameter on the 'configure' line.  For
  example:
  
       % SRCDIR/configure --build=sparcv9-sun-solaris2.11 --prefix=DIRNAME
--- 4152,4172 ----
  sparc64-*-solaris2*
  ===================
  
! This is a synonym for â€˜sparcv9-*-solaris2*â€™.
  
  sparcv9-*-solaris2*
  ===================
  
  When configuring a 64-bit-default GCC on Solaris/SPARC, you must use a
  build compiler that generates 64-bit code, either by default or by
! specifying â€˜CC='gcc -m64' CXX='g++ -m64' GDC='gdc -m64'â€™ to â€˜configureâ€™.
! Additionally, you _must_ pass â€˜--build=sparcv9-sun-solaris2.11â€™ or
! â€˜--build=sparc64-sun-solaris2.11â€™ because â€˜config.guessâ€™ misdetects this
  situation, which can cause build failures.
  
     When configuring the GNU Multiple Precision Library (GMP), the MPFR
  library or the MPC library, the canonical target triplet must be
! specified as the â€˜buildâ€™ parameter on the â€˜configureâ€™ line.  For
  example:
  
       % SRCDIR/configure --build=sparcv9-sun-solaris2.11 --prefix=DIRNAME
*************** not interested in supporting older, a.ou
*** 4195,4216 ****
  VxWorks in GCC 3.
  
     VxWorks comes with an older version of GCC installed in
! '$WIND_BASE/host'; we recommend you do not overwrite it.  Choose an
  installation PREFIX entirely outside $WIND_BASE.  Before running
! 'configure', create the directories 'PREFIX' and 'PREFIX/bin'.  Link or
! copy the appropriate assembler, linker, etc. into 'PREFIX/bin', and set
! your PATH to include that directory while running both 'configure' and
! 'make'.
  
!    You must give 'configure' the '--with-headers=$WIND_BASE/target/h'
  switch so that it can find the VxWorks system headers.  Since VxWorks is
  a cross compilation target only, you must also specify
! '--target=TARGET'.  'configure' will attempt to create the directory
! 'PREFIX/TARGET/sys-include' and copy files into it; make sure the user
! running 'configure' has sufficient privilege to do so.
  
     GCC's exception handling runtime requires a special "configlette"
! module, 'contrib/gthr_supp_vxw_5x.c'.  Follow the instructions in that
  file to add the module to your kernel build.  (Future versions of
  VxWorks will incorporate this module.)
  
--- 4195,4216 ----
  VxWorks in GCC 3.
  
     VxWorks comes with an older version of GCC installed in
! â€˜$WIND_BASE/hostâ€™; we recommend you do not overwrite it.  Choose an
  installation PREFIX entirely outside $WIND_BASE.  Before running
! â€˜configureâ€™, create the directories â€˜PREFIXâ€™ and â€˜PREFIX/binâ€™.  Link or
! copy the appropriate assembler, linker, etc. into â€˜PREFIX/binâ€™, and set
! your PATH to include that directory while running both â€˜configureâ€™ and
! â€˜makeâ€™.
  
!    You must give â€˜configureâ€™ the â€˜--with-headers=$WIND_BASE/target/hâ€™
  switch so that it can find the VxWorks system headers.  Since VxWorks is
  a cross compilation target only, you must also specify
! â€˜--target=TARGETâ€™.  â€˜configureâ€™ will attempt to create the directory
! â€˜PREFIX/TARGET/sys-includeâ€™ and copy files into it; make sure the user
! running â€˜configureâ€™ has sufficient privilege to do so.
  
     GCC's exception handling runtime requires a special "configlette"
! module, â€˜contrib/gthr_supp_vxw_5x.câ€™.  Follow the instructions in that
  file to add the module to your kernel build.  (Future versions of
  VxWorks will incorporate this module.)
  
*************** x86_64-*-*, amd64-*-*
*** 4220,4248 ****
  GCC supports the x86-64 architecture implemented by the AMD64 processor
  (amd64-*-* is an alias for x86_64-*-*) on GNU/Linux, FreeBSD and NetBSD.
  On GNU/Linux the default is a bi-arch compiler which is able to generate
! both 64-bit x86-64 and 32-bit x86 code (via the '-m32' switch).
  
  x86_64-*-solaris2*
  ==================
  
  Unlike other systems, without special options a bi-arch compiler is
  built which generates 32-bit code by default, but can generate 64-bit
! x86-64 code with the '-m64' switch.  Since GCC 4.7, there is also a
  configuration that defaults to 64-bit code, but can generate 32-bit code
! with '-m32'.  To configure and build this way, you have to provide all
! support libraries like 'libgmp' as 64-bit code, configure with
! '--target=x86_64-pc-solaris2.11' and 'CC=gcc -m64'.
  
  xtensa*-*-elf
  =============
  
! This target is intended for embedded Xtensa systems using the 'newlib' C
  library.  It uses ELF but does not support shared objects.
  Designed-defined instructions specified via the Tensilica Instruction
  Extension (TIE) language are only supported through inline assembly.
  
     The Xtensa configuration information must be specified prior to
! building GCC.  The 'include/xtensa-config.h' header file contains the
  configuration information.  If you created your own Xtensa configuration
  with the Xtensa Processor Generator, the downloaded files include a
  customized copy of this header file, which you can use to replace the
--- 4220,4248 ----
  GCC supports the x86-64 architecture implemented by the AMD64 processor
  (amd64-*-* is an alias for x86_64-*-*) on GNU/Linux, FreeBSD and NetBSD.
  On GNU/Linux the default is a bi-arch compiler which is able to generate
! both 64-bit x86-64 and 32-bit x86 code (via the â€˜-m32â€™ switch).
  
  x86_64-*-solaris2*
  ==================
  
  Unlike other systems, without special options a bi-arch compiler is
  built which generates 32-bit code by default, but can generate 64-bit
! x86-64 code with the â€˜-m64â€™ switch.  Since GCC 4.7, there is also a
  configuration that defaults to 64-bit code, but can generate 32-bit code
! with â€˜-m32â€™.  To configure and build this way, you have to provide all
! support libraries like â€˜libgmpâ€™ as 64-bit code, configure with
! â€˜--target=x86_64-pc-solaris2.11â€™ and â€˜CC=gcc -m64â€™.
  
  xtensa*-*-elf
  =============
  
! This target is intended for embedded Xtensa systems using the â€˜newlibâ€™ C
  library.  It uses ELF but does not support shared objects.
  Designed-defined instructions specified via the Tensilica Instruction
  Extension (TIE) language are only supported through inline assembly.
  
     The Xtensa configuration information must be specified prior to
! building GCC.  The â€˜include/xtensa-config.hâ€™ header file contains the
  configuration information.  If you created your own Xtensa configuration
  with the Xtensa Processor Generator, the downloaded files include a
  customized copy of this header file, which you can use to replace the
*************** xtensa*-*-linux*
*** 4253,4261 ****
  
  This target is for Xtensa systems running GNU/Linux.  It supports ELF
  shared objects and the GNU C library (glibc).  It also generates
! position-independent code (PIC) regardless of whether the '-fpic' or
! '-fPIC' options are used.  In other respects, this target is the same as
! the 'xtensa*-*-elf' target.
  
  Microsoft Windows
  =================
--- 4253,4261 ----
  
  This target is for Xtensa systems running GNU/Linux.  It supports ELF
  shared objects and the GNU C library (glibc).  It also generates
! position-independent code (PIC) regardless of whether the â€˜-fpicâ€™ or
! â€˜-fPICâ€™ options are used.  In other respects, this target is the same as
! the â€˜xtensa*-*-elfâ€™ target.
  
  Microsoft Windows
  =================
*************** Windows XP, and Windows Vista, are suppo
*** 4277,4287 ****
  platforms.  These targets differ in which Windows subsystem they target
  and which C libraries are used.
  
!    * Cygwin *-*-cygwin: Cygwin provides a user-space Linux API emulation
       layer in the Win32 subsystem.
!    * MinGW *-*-mingw32: MinGW is a native GCC port for the Win32
       subsystem that provides a subset of POSIX.
!    * MKS i386-pc-mks: NuTCracker from MKS. See
       <https://www.mkssoftware.com> for more information.
  
  Intel 64-bit versions
--- 4277,4287 ----
  platforms.  These targets differ in which Windows subsystem they target
  and which C libraries are used.
  
!    â€¢ Cygwin *-*-cygwin: Cygwin provides a user-space Linux API emulation
       layer in the Win32 subsystem.
!    â€¢ MinGW *-*-mingw32: MinGW is a native GCC port for the Win32
       subsystem that provides a subset of POSIX.
!    â€¢ MKS i386-pc-mks: NuTCracker from MKS. See
       <https://www.mkssoftware.com> for more information.
  
  Intel 64-bit versions
*************** version 2.20 or above if building your o
*** 4328,4334 ****
  
  GCC will build with and support only MinGW runtime 3.12 and later.
  Earlier versions of headers are incompatible with the new default
! semantics of 'extern inline' in '-std=c99' and '-std=gnu99' modes.
  
  Older systems
  =============
--- 4328,4334 ----
  
  GCC will build with and support only MinGW runtime 3.12 and later.
  Earlier versions of headers are incompatible with the new default
! semantics of â€˜extern inlineâ€™ in â€˜-std=c99â€™ and â€˜-std=gnu99â€™ modes.
  
  Older systems
  =============
*************** and may suffer from bitrot.
*** 4340,4346 ****
  
     Starting with GCC 3.1, each release has a list of "obsoleted"
  systems.  Support for these systems is still present in that release,
! but 'configure' will fail unless the '--enable-obsolete' option is
  given.  Unless a maintainer steps forward, support for these systems
  will be removed from the next release of GCC.
  
--- 4340,4346 ----
  
     Starting with GCC 3.1, each release has a list of "obsoleted"
  systems.  Support for these systems is still present in that release,
! but â€˜configureâ€™ will fail unless the â€˜--enable-obsoleteâ€™ option is
  given.  Unless a maintainer steps forward, support for these systems
  will be removed from the next release of GCC.
  
*************** bring GCC up on such a system, if still
*** 4351,4358 ****
  require first installing an old version of GCC which did work on that
  system, and using it to compile a more recent GCC, to avoid bugs in the
  vendor compiler.  Old releases of GCC 1 and GCC 2 are available in the
! 'old-releases' directory on the GCC mirror sites.  Header bugs may
! generally be avoided using 'fixincludes', but bugs or deficiencies in
  libraries and the operating system may still cause problems.
  
     Support for older systems as targets for cross-compilation is less
--- 4351,4358 ----
  require first installing an old version of GCC which did work on that
  system, and using it to compile a more recent GCC, to avoid bugs in the
  vendor compiler.  Old releases of GCC 1 and GCC 2 are available in the
! â€˜old-releasesâ€™ directory on the GCC mirror sites.  Header bugs may
! generally be avoided using â€˜fixincludesâ€™, but bugs or deficiencies in
  libraries and the operating system may still cause problems.
  
     Support for older systems as targets for cross-compilation is less
*************** GNU Free Documentation License
*** 4383,4389 ****
  
                       Version 1.3, 3 November 2008
  
!      Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
       <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies
--- 4383,4389 ----
  
                       Version 1.3, 3 November 2008
  
!      Copyright Â© 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
       <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies
*************** GNU Free Documentation License
*** 4392,4398 ****
    0. PREAMBLE
  
       The purpose of this License is to make a manual, textbook, or other
!      functional and useful document "free" in the sense of freedom: to
       assure everyone the effective freedom to copy and redistribute it,
       with or without modifying it, either commercially or
       noncommercially.  Secondarily, this License preserves for the
--- 4392,4398 ----
    0. PREAMBLE
  
       The purpose of this License is to make a manual, textbook, or other
!      functional and useful document â€œfreeâ€� in the sense of freedom: to
       assure everyone the effective freedom to copy and redistribute it,
       with or without modifying it, either commercially or
       noncommercially.  Secondarily, this License preserves for the
*************** Concept Index
*** 4867,4873 ****
  * Menu:
  
  * Binaries:                              Binaries.           (line    6)
! * build_configargs:                      Configuration.      (line 2009)
  * cobol:                                 Prerequisites.      (line   84)
  * Configuration:                         Configuration.      (line    6)
  * Downloading GCC:                       Downloading the source.
--- 4867,4873 ----
  * Menu:
  
  * Binaries:                              Binaries.           (line    6)
! * build_configargs:                      Configuration.      (line 2008)
  * cobol:                                 Prerequisites.      (line   84)
  * Configuration:                         Configuration.      (line    6)
  * Downloading GCC:                       Downloading the source.
*************** Concept Index
*** 4877,4883 ****
  * FDL, GNU Free Documentation License:   GNU Free Documentation License.
                                                               (line    6)
  * Host specific installation:            Specific.           (line    6)
! * host_configargs:                       Configuration.      (line 2013)
  * Installing GCC: Binaries:              Binaries.           (line    6)
  * Installing GCC: Building:              Building.           (line    6)
  * Installing GCC: Configuration:         Configuration.      (line    6)
--- 4877,4883 ----
  * FDL, GNU Free Documentation License:   GNU Free Documentation License.
                                                               (line    6)
  * Host specific installation:            Specific.           (line    6)
! * host_configargs:                       Configuration.      (line 2012)
  * Installing GCC: Binaries:              Binaries.           (line    6)
  * Installing GCC: Building:              Building.           (line    6)
  * Installing GCC: Configuration:         Configuration.      (line    6)
*************** Concept Index
*** 4887,4998 ****
  * Specific installation notes:           Specific.           (line    6)
  * Target specific installation:          Specific.           (line    6)
  * Target specific installation notes:    Specific.           (line    6)
! * target_configargs:                     Configuration.      (line 2017)
  * Testing:                               Testing.            (line    6)
  * Testsuite:                             Testing.            (line    6)
  
  
  
  Tag Table:
! Node: Top1696
! Node: Installing GCC2201
! Node: Prerequisites3659
! Ref: GNAT-prerequisite5975
! Ref: GCOBOL-prerequisite7372
! Ref: GDC-prerequisite8465
! Ref: GM2-prerequisite9648
! Ref: gccrs-prerequisite9915
! Node: Downloading the source20896
! Node: Configuration22648
! Ref: with-gnu-as42034
! Ref: with-as42855
! Ref: with-gnu-ld44220
! Ref: with-multilib-list47826
! Ref: WithAixSoname75797
! Ref: AixLdCommand76458
! Ref: with-included-gettext92358
! Node: Building120711
! Node: Testing137269
! Node: Final install144800
! Node: Binaries147978
! Node: Specific148918
! Ref: aarch64-x-x149452
! Ref: amd64-x-solaris2151293
! Ref: amdgcn-x-amdhsa151375
! Ref: arc-x-elf32153340
! Ref: arc-linux-uclibc153516
! Ref: arm-x-eabi153657
! Ref: avr153910
! Ref: bfin154392
! Ref: cris154655
! Ref: dos154981
! Ref: epiphany-x-elf155306
! Ref: x-x-freebsd155411
! Ref: ft32-x-elf156002
! Ref: h8300-hms156100
! Ref: hppa64-hp-hpux11156159
! Ref: x-x-linux-gnu156916
! Ref: ix86-x-linux157109
! Ref: ix86-x-solaris2157311
! Ref: ia64-x-linux157550
! Ref: ia64-x-hpux157797
! Ref: x-ibm-aix158015
! Ref: TransferAixShobj161677
! Ref: iq2000-x-elf165259
! Ref: lm32-x-elf165399
! Ref: lm32-x-uclinux165503
! Ref: loongarch165631
! Ref: m32c-x-elf166268
! Ref: m32r-x-elf166370
! Ref: m68k-x-x166472
! Ref: m68k-x-uclinux167510
! Ref: microblaze-x-elf167755
! Ref: mips-x-x167874
! Ref: moxie-x-elf169784
! Ref: msp430-x-elf169831
! Ref: nds32le-x-elf170388
! Ref: nds32be-x-elf170460
! Ref: nvptx-x-none170529
! Ref: or1k-x-elf171486
! Ref: or1k-x-linux171617
! Ref: powerpc-x-x171698
! Ref: powerpc-x-darwin171889
! Ref: powerpc-x-elf172384
! Ref: powerpc-x-linux-gnu172469
! Ref: powerpc-x-netbsd172564
! Ref: powerpc-x-eabisim172652
! Ref: powerpc-x-eabi172778
! Ref: powerpcle-x-elf172854
! Ref: powerpcle-x-eabisim172946
! Ref: powerpcle-x-eabi173079
! Ref: rl78-x-elf173162
! Ref: riscv32-x-elf173268
! Ref: riscv32-x-linux173457
! Ref: riscv64-x-elf173614
! Ref: riscv64-x-linux173803
! Ref: rx-x-elf173960
! Ref: s390-x-linux174006
! Ref: s390x-x-linux174078
! Ref: s390x-ibm-tpf174165
! Ref: x-x-solaris2174296
! Ref: sparc-x-x177778
! Ref: sparc-sun-solaris2178280
! Ref: sparc-x-linux179179
! Ref: sparc64-x-solaris2179210
! Ref: sparcv9-x-solaris2179297
! Ref: c6x-x-x180018
! Ref: visium-x-elf180110
! Ref: x-x-vxworks180218
! Ref: x86-64-x-x181741
! Ref: x86-64-x-solaris2182069
! Ref: xtensa-x-elf182574
! Ref: xtensa-x-linux183245
! Ref: windows183586
! Ref: x-x-cygwin185172
! Ref: x-x-mingw32185725
! Ref: older185951
! Ref: elf187914
! Node: GNU Free Documentation License188168
! Node: Concept Index213306
  
  End Tag Table
--- 4887,5003 ----
  * Specific installation notes:           Specific.           (line    6)
  * Target specific installation:          Specific.           (line    6)
  * Target specific installation notes:    Specific.           (line    6)
! * target_configargs:                     Configuration.      (line 2016)
  * Testing:                               Testing.            (line    6)
  * Testsuite:                             Testing.            (line    6)
  
  
  
  Tag Table:
! Node: Top1694
! Node: Installing GCC2199
! Node: Prerequisites3661
! Ref: GNAT-prerequisite6009
! Ref: GCOBOL-prerequisite7434
! Ref: GDC-prerequisite8531
! Ref: GM2-prerequisite9734
! Ref: gccrs-prerequisite10005
! Node: Downloading the source21434
! Node: Configuration23238
! Ref: with-gnu-as43270
! Ref: with-as44123
! Ref: with-gnu-ld45532
! Ref: with-multilib-list49283
! Ref: WithAixSoname78486
! Ref: AixLdCommand79201
! Ref: with-included-gettext95963
! Node: Building125616
! Node: Testing142650
! Node: Final install150391
! Node: Binaries153661
! Node: Specific154623
! Ref: aarch64-x-x155157
! Ref: amd64-x-solaris2157054
! Ref: amdgcn-x-amdhsa157140
! Ref: arc-x-elf32159245
! Ref: arc-linux-uclibc159437
! Ref: arm-x-eabi159582
! Ref: avr159839
! Ref: bfin160329
! Ref: cris160592
! Ref: dos160922
! Ref: epiphany-x-elf161247
! Ref: x-x-freebsd161352
! Ref: ft32-x-elf161951
! Ref: h8300-hms162049
! Ref: hppa64-hp-hpux11162108
! Ref: x-x-linux-gnu162889
! Ref: ix86-x-linux163082
! Ref: ix86-x-solaris2163284
! Ref: ia64-x-linux163535
! Ref: ia64-x-hpux163786
! Ref: x-ibm-aix164008
! Ref: TransferAixShobj167726
! Ref: iq2000-x-elf171388
! Ref: lm32-x-elf171528
! Ref: lm32-x-uclinux171632
! Ref: loongarch171760
! Ref: m32c-x-elf172433
! Ref: m32r-x-elf172535
! Ref: m68k-x-x172637
! Ref: m68k-x-uclinux173767
! Ref: microblaze-x-elf174020
! Ref: mips-x-x174139
! Ref: moxie-x-elf176125
! Ref: msp430-x-elf176172
! Ref: nds32le-x-elf176741
! Ref: nds32be-x-elf176813
! Ref: nvptx-x-none176882
! Ref: or1k-x-elf177883
! Ref: or1k-x-linux178014
! Ref: powerpc-x-x178095
! Ref: powerpc-x-darwin178294
! Ref: powerpc-x-elf178789
! Ref: powerpc-x-linux-gnu178874
! Ref: powerpc-x-netbsd178969
! Ref: powerpc-x-eabisim179057
! Ref: powerpc-x-eabi179183
! Ref: powerpcle-x-elf179259
! Ref: powerpcle-x-eabisim179351
! Ref: powerpcle-x-eabi179484
! Ref: rl78-x-elf179567
! Ref: riscv32-x-elf179673
! Ref: riscv32-x-linux179862
! Ref: riscv64-x-elf180019
! Ref: riscv64-x-linux180208
! Ref: rx-x-elf180365
! Ref: s390-x-linux180411
! Ref: s390x-x-linux180483
! Ref: s390x-ibm-tpf180570
! Ref: x-x-solaris2180701
! Ref: sparc-x-x184331
! Ref: sparc-sun-solaris2184833
! Ref: sparc-x-linux185748
! Ref: sparc64-x-solaris2185779
! Ref: sparcv9-x-solaris2185870
! Ref: c6x-x-x186619
! Ref: visium-x-elf186711
! Ref: x-x-vxworks186819
! Ref: x86-64-x-x188398
! Ref: x86-64-x-solaris2188730
! Ref: xtensa-x-elf189255
! Ref: xtensa-x-linux189934
! Ref: windows190287
! Ref: x-x-cygwin191879
! Ref: x-x-mingw32192432
! Ref: older192670
! Ref: elf194649
! Node: GNU Free Documentation License194903
! Node: Concept Index220044
  
  End Tag Table
+ 
+ 
+ Local Variables:
+ coding: utf-8
+ End:
diff -Nrcpad gcc-15.2.0/gcc/doc/gccint.info gcc-15.3.0/gcc/doc/gccint.info
*** gcc-15.2.0/gcc/doc/gccint.info	Fri Aug  8 07:10:05 2025
--- gcc-15.3.0/gcc/doc/gccint.info	Fri Jun 12 06:28:41 2026
***************
*** 1,6 ****
! This is gccint.info, produced by makeinfo version 6.5 from gccint.texi.
  
! Copyright (C) 1988-2025 Free Software Foundation, Inc.
  
   Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,6 ----
! This is gccint.info, produced by makeinfo version 7.1 from gccint.texi.
  
! Copyright Â© 1988-2025 Free Software Foundation, Inc.
  
   Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** END-INFO-DIR-ENTRY
*** 26,32 ****
  
   This file documents the internals of the GNU compilers.
  
!  Copyright (C) 1988-2025 Free Software Foundation, Inc.
  
   Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 26,32 ----
  
   This file documents the internals of the GNU compilers.
  
!  Copyright Â© 1988-2025 Free Software Foundation, Inc.
  
   Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** Copies published by the Free Software Fo
*** 47,53 ****
  development.
  
  
! File: gccint.info,  Node: Top,  Next: Contributing
  
  Introduction
  ************
--- 47,53 ----
  development.
  
  
! File: gccint.info,  Node: Top,  Next: Contributing,  Up: (dir)
  
  Introduction
  ************
*************** Introduction
*** 55,61 ****
  This manual documents the internals of the GNU compilers, including how
  to port them to new targets and some information about how to write
  front ends for new languages.  It corresponds to the compilers (GCC)
! version 15.2.0.  The use of the GNU compilers is documented in a
  separate manual.  *Note Introduction: (gcc)Top.
  
   This manual is mainly a reference manual rather than a tutorial.  It
--- 55,61 ----
  This manual documents the internals of the GNU compilers, including how
  to port them to new targets and some information about how to write
  front ends for new languages.  It corresponds to the compilers (GCC)
! version 15.3.0.  The use of the GNU compilers is documented in a
  separate manual.  *Note Introduction: (gcc)Top.
  
   This manual is mainly a reference manual rather than a tutorial.  It
*************** GCC.
*** 89,97 ****
  * Loop Analysis and Representation:: Analysis and representation of loops
  * Machine Desc::    How to write machine description instruction patterns.
  * Target Macros::   How to write the machine description C macros and functions.
! * Host Config::     Writing the 'xm-MACHINE.h' file.
! * Fragments::       Writing the 't-TARGET' and 'x-HOST' files.
! * Collect2::        How 'collect2' works; how it finds 'ld'.
  * Header Dirs::     Understanding the standard header file directories.
  * Type Information:: GCC's memory management; generating type information.
  * Plugins::         Extending the compiler with plugins.
--- 89,97 ----
  * Loop Analysis and Representation:: Analysis and representation of loops
  * Machine Desc::    How to write machine description instruction patterns.
  * Target Macros::   How to write the machine description C macros and functions.
! * Host Config::     Writing the â€˜xm-MACHINE.hâ€™ file.
! * Fragments::       Writing the â€˜t-TARGETâ€™ and â€˜x-HOSTâ€™ files.
! * Collect2::        How â€˜collect2â€™ works; how it finds â€˜ldâ€™.
  * Header Dirs::     Understanding the standard header file directories.
  * Type Information:: GCC's memory management; generating type information.
  * Plugins::         Extending the compiler with plugins.
*************** File: gccint.info,  Node: Portability,
*** 138,147 ****
  2 GCC and Portability
  *********************
  
! GCC itself aims to be portable to any machine where 'int' is at least a
  32-bit type.  It aims to target machines with a flat (non-segmented)
  byte addressed data address space (the code address space can be
! separate).  Target ABIs may have 8, 16, 32 or 64-bit 'int' type.  'char'
  can be wider than 8 bits.
  
   GCC gets most of the information about the target machine from a
--- 138,147 ----
  2 GCC and Portability
  *********************
  
! GCC itself aims to be portable to any machine where â€˜intâ€™ is at least a
  32-bit type.  It aims to target machines with a flat (non-segmented)
  byte addressed data address space (the code address space can be
! separate).  Target ABIs may have 8, 16, 32 or 64-bit â€˜intâ€™ type.  â€˜charâ€™
  can be wider than 8 bits.
  
   GCC gets most of the information about the target machine from a
*************** that are usable for different combinatio
*** 162,168 ****
  all possible cases have been addressed, but only the common ones or only
  the ones that have been encountered.  As a result, a new target may
  require additional strategies.  You will know if this happens because
! the compiler will call 'abort'.  Fortunately, the new strategies can be
  added in a machine-independent fashion, and will affect only the target
  machines that need them.
  
--- 162,168 ----
  all possible cases have been addressed, but only the common ones or only
  the ones that have been encountered.  As a result, a new target may
  require additional strategies.  You will know if this happens because
! the compiler will call â€˜abortâ€™.  Fortunately, the new strategies can be
  added in a machine-independent fashion, and will affect only the target
  machines that need them.
  
*************** File: gccint.info,  Node: Libgcc,  Next:
*** 172,186 ****
  3 The GCC low-level runtime library
  ***********************************
  
! GCC provides a low-level runtime library, 'libgcc.a' or 'libgcc_s.so.1'
  on some platforms.  GCC generates calls to routines in this library
  automatically, whenever it needs to perform some operation that is too
  complicated to emit inline code for.
  
!  Most of the routines in 'libgcc' handle arithmetic operations that the
  target processor cannot perform directly.  This includes integer
  multiply and divide on some machines, and all floating-point and
! fixed-point operations on other machines.  'libgcc' also includes
  routines for exception handling, and a handful of miscellaneous
  operations.
  
--- 172,186 ----
  3 The GCC low-level runtime library
  ***********************************
  
! GCC provides a low-level runtime library, â€˜libgcc.aâ€™ or â€˜libgcc_s.so.1â€™
  on some platforms.  GCC generates calls to routines in this library
  automatically, whenever it needs to perform some operation that is too
  complicated to emit inline code for.
  
!  Most of the routines in â€˜libgccâ€™ handle arithmetic operations that the
  target processor cannot perform directly.  This includes integer
  multiply and divide on some machines, and all floating-point and
! fixed-point operations on other machines.  â€˜libgccâ€™ also includes
  routines for exception handling, and a handful of miscellaneous
  operations.
  
*************** operations.
*** 188,205 ****
  Others must be hand-written in assembly language for each processor that
  needs them.
  
!  GCC will also generate calls to C library routines, such as 'memcpy'
! and 'memset', in some cases.  The set of routines that GCC may possibly
  use is documented in *note (gcc)Other Builtins::.
  
   These routines take arguments and return values of a specific machine
  mode, not a specific C type.  *Note Machine Modes::, for an explanation
  of this concept.  For illustrative purposes, in this chapter the
! floating point type 'float' is assumed to correspond to 'SFmode';
! 'double' to 'DFmode'; and 'long double' to both 'TFmode' and 'XFmode'.
! Similarly, the integer types 'int' and 'unsigned int' correspond to
! 'SImode'; 'long' and 'unsigned long' to 'DImode'; and 'long long' and
! 'unsigned long long' to 'TImode'.
  
  * Menu:
  
--- 188,205 ----
  Others must be hand-written in assembly language for each processor that
  needs them.
  
!  GCC will also generate calls to C library routines, such as â€˜memcpyâ€™
! and â€˜memsetâ€™, in some cases.  The set of routines that GCC may possibly
  use is documented in *note (gcc)Other Builtins::.
  
   These routines take arguments and return values of a specific machine
  mode, not a specific C type.  *Note Machine Modes::, for an explanation
  of this concept.  For illustrative purposes, in this chapter the
! floating point type â€˜floatâ€™ is assumed to correspond to â€˜SFmodeâ€™;
! â€˜doubleâ€™ to â€˜DFmodeâ€™; and â€˜long doubleâ€™ to both â€˜TFmodeâ€™ and â€˜XFmodeâ€™.
! Similarly, the integer types â€˜intâ€™ and â€˜unsigned intâ€™ correspond to
! â€˜SImodeâ€™; â€˜longâ€™ and â€˜unsigned longâ€™ to â€˜DImodeâ€™; and â€˜long longâ€™ and
! â€˜unsigned long longâ€™ to â€˜TImodeâ€™.
  
  * Menu:
  
*************** result using either signed or unsigned c
*** 313,319 ****
  -----------------------------------
  
  The following functions implement trapping arithmetic.  These functions
! call the libc function 'abort' upon signed arithmetic overflow.
  
   -- Runtime Function: int __absvsi2 (int A)
   -- Runtime Function: long __absvdi2 (long A)
--- 313,319 ----
  -----------------------------------
  
  The following functions implement trapping arithmetic.  These functions
! call the libc function â€˜abortâ€™ upon signed arithmetic overflow.
  
   -- Runtime Function: int __absvsi2 (int A)
   -- Runtime Function: long __absvdi2 (long A)
*************** call the libc function 'abort' upon sign
*** 321,340 ****
  
   -- Runtime Function: int __addvsi3 (int A, int B)
   -- Runtime Function: long __addvdi3 (long A, long B)
!      These functions return the sum of A and B; that is 'A + B'.
  
   -- Runtime Function: int __mulvsi3 (int A, int B)
   -- Runtime Function: long __mulvdi3 (long A, long B)
!      The functions return the product of A and B; that is 'A * B'.
  
   -- Runtime Function: int __negvsi2 (int A)
   -- Runtime Function: long __negvdi2 (long A)
!      These functions return the negation of A; that is '-A'.
  
   -- Runtime Function: int __subvsi3 (int A, int B)
   -- Runtime Function: long __subvdi3 (long A, long B)
!      These functions return the difference between B and A; that is 'A -
!      B'.
  
  3.1.4 Bit operations
  --------------------
--- 321,340 ----
  
   -- Runtime Function: int __addvsi3 (int A, int B)
   -- Runtime Function: long __addvdi3 (long A, long B)
!      These functions return the sum of A and B; that is â€˜A + Bâ€™.
  
   -- Runtime Function: int __mulvsi3 (int A, int B)
   -- Runtime Function: long __mulvdi3 (long A, long B)
!      The functions return the product of A and B; that is â€˜A * Bâ€™.
  
   -- Runtime Function: int __negvsi2 (int A)
   -- Runtime Function: long __negvdi2 (long A)
!      These functions return the negation of A; that is â€˜-Aâ€™.
  
   -- Runtime Function: int __subvsi3 (int A, int B)
   -- Runtime Function: long __subvdi3 (long A, long B)
!      These functions return the difference between B and A; that is â€˜A -
!      Bâ€™.
  
  3.1.4 Bit operations
  --------------------
*************** call the libc function 'abort' upon sign
*** 377,386 ****
  3.1.5 Bit-precise integer arithmetic functions
  ----------------------------------------------
  
! '_BitInt(N)' library functions operate on arrays of limbs, where each
! limb has '__LIBGCC_BITINT_LIMB_WIDTH__' bits and the limbs are ordered
! according to '__LIBGCC_BITINT_ORDER__' ordering.  The most significant
! limb if N is not divisible by '__LIBGCC_BITINT_LIMB_WIDTH__' contains
  padding bits which should be ignored on read (sign or zero extended),
  but extended on write.  For the library functions, all bit-precise
  integers regardless of N are represented like that, even when the target
--- 377,386 ----
  3.1.5 Bit-precise integer arithmetic functions
  ----------------------------------------------
  
! â€˜_BitInt(N)â€™ library functions operate on arrays of limbs, where each
! limb has â€˜__LIBGCC_BITINT_LIMB_WIDTH__â€™ bits and the limbs are ordered
! according to â€˜__LIBGCC_BITINT_ORDER__â€™ ordering.  The most significant
! limb if N is not divisible by â€˜__LIBGCC_BITINT_LIMB_WIDTH__â€™ contains
  padding bits which should be ignored on read (sign or zero extended),
  but extended on write.  For the library functions, all bit-precise
  integers regardless of N are represented like that, even when the target
*************** sign or zero extensions on the input or
*** 396,425 ****
  figures value will need certain lower number of bits.  For big-endian
  ordering of limbs, when lowering the bit size argument the pointer
  argument needs to be adjusted as well.  Negative bit size argument
! should be always smaller or equal to '-2', because 'signed _BitInt(1)'
  is not valid.  For output arguments, either the corresponding bit size
  argument should be always positive (for multiplication and division), or
  is negative when the output of conversion from floating-point value is
  signed and positive when unsigned.  The arrays of limbs output arguments
  point to should not overlap any inputs, while input arrays of limbs can
! overlap.  'UBILtype' below stands for unsigned integer type with
! '__LIBGCC_BITINT_LIMB_WIDTH__' bit precision.
  
!  -- Runtime Function: void __mulbitint3 ('UBILtype' *RET, int32_t
!           RETPREC, const 'UBILtype' *u, int32_t UPREC, const 'UBILtype'
!           *v, int32_t VPREC)
       This function multiplies bit-precise integer operands U and V and
       stores result into RETPREC precision bit-precise integer result
       RET.
  
!  -- Runtime Function: void __divmodbitint4 ('UBILtype' *Q, int32_t
!           QPREC, 'UBILtype' *R, int32_t RPREC, const 'UBILtype' *u,
!           int32_t UPREC, const 'UBILtype' *v, int32_t VPREC)
       This function divides bit-precise integer operands U and V and
       stores quotient into QPREC precision bit-precise integer result Q
!      (unless Q is 'NULL' and QPREC is 0, in that case quotient is not
       stored anywhere) and remainder into RPREC precision bit-precise
!      integer result R (similarly, unless R is 'NULL' and RPREC is 0).
  
  
  File: gccint.info,  Node: Soft float library routines,  Next: Decimal float library routines,  Prev: Integer library routines,  Up: Libgcc
--- 396,425 ----
  figures value will need certain lower number of bits.  For big-endian
  ordering of limbs, when lowering the bit size argument the pointer
  argument needs to be adjusted as well.  Negative bit size argument
! should be always smaller or equal to â€˜-2â€™, because â€˜signed _BitInt(1)â€™
  is not valid.  For output arguments, either the corresponding bit size
  argument should be always positive (for multiplication and division), or
  is negative when the output of conversion from floating-point value is
  signed and positive when unsigned.  The arrays of limbs output arguments
  point to should not overlap any inputs, while input arrays of limbs can
! overlap.  â€˜UBILtypeâ€™ below stands for unsigned integer type with
! â€˜__LIBGCC_BITINT_LIMB_WIDTH__â€™ bit precision.
  
!  -- Runtime Function: void __mulbitint3 (UBILtype *RET, int32_t RETPREC,
!           const UBILtype *u, int32_t UPREC, const UBILtype *v, int32_t
!           VPREC)
       This function multiplies bit-precise integer operands U and V and
       stores result into RETPREC precision bit-precise integer result
       RET.
  
!  -- Runtime Function: void __divmodbitint4 (UBILtype *Q, int32_t QPREC,
!           UBILtype *R, int32_t RPREC, const UBILtype *u, int32_t UPREC,
!           const UBILtype *v, int32_t VPREC)
       This function divides bit-precise integer operands U and V and
       stores quotient into QPREC precision bit-precise integer result Q
!      (unless Q is â€˜NULLâ€™ and QPREC is 0, in that case quotient is not
       stored anywhere) and remainder into RPREC precision bit-precise
!      integer result R (similarly, unless R is â€˜NULLâ€™ and RPREC is 0).
  
  
  File: gccint.info,  Node: Soft float library routines,  Next: Decimal float library routines,  Prev: Integer library routines,  Up: Libgcc
*************** File: gccint.info,  Node: Soft float lib
*** 429,443 ****
  
  The software floating point library is used on machines which do not
  have hardware support for floating point.  It is also used whenever
! '-msoft-float' is used to disable generation of floating point
  instructions.  (Not all targets support this switch.)
  
   For compatibility with other compilers, the floating point emulation
! routines can be renamed with the 'DECLARE_LIBRARY_RENAMES' macro (*note
  Library Calls::).  In this section, the default names are used.
  
!  Presently the library does not support 'XFmode', which is used for
! 'long double' on some architectures.
  
  3.2.1 Arithmetic functions
  --------------------------
--- 429,443 ----
  
  The software floating point library is used on machines which do not
  have hardware support for floating point.  It is also used whenever
! â€˜-msoft-floatâ€™ is used to disable generation of floating point
  instructions.  (Not all targets support this switch.)
  
   For compatibility with other compilers, the floating point emulation
! routines can be renamed with the â€˜DECLARE_LIBRARY_RENAMESâ€™ macro (*note
  Library Calls::).  In this section, the default names are used.
  
!  Presently the library does not support â€˜XFmodeâ€™, which is used for
! â€˜long doubleâ€™ on some architectures.
  
  3.2.1 Arithmetic functions
  --------------------------
*************** Library Calls::).  In this section, the
*** 578,607 ****
       These functions convert I, an unsigned long long, to floating
       point.
  
!  -- Runtime Function: void __fixsfbitint ('UBILtype' *R, int32_t RPREC,
            float A)
!  -- Runtime Function: void __fixdfbitint ('UBILtype' *R, int32_t RPREC,
            double A)
!  -- Runtime Function: void __fixxfbitint ('UBILtype' *R, int32_t RPREC,
            __float80 A)
!  -- Runtime Function: void __fixtfbitint ('UBILtype' *R, int32_t RPREC,
            _Float128 A)
       These functions convert A to bit-precise integer R, rounding toward
       zero.  If RPREC is positive, it converts to unsigned bit-precise
       integer and negative values all become zero, if RPREC is negative,
       it converts to signed bit-precise integer.
  
!  -- Runtime Function: float __floatbitintsf ('UBILtype' *I, int32_t
!           IPREC)
!  -- Runtime Function: double __floatbitintdf ('UBILtype' *I, int32_t
            IPREC)
!  -- Runtime Function: __float80 __floatbitintxf ('UBILtype' *I, int32_t
            IPREC)
!  -- Runtime Function: _Float128 __floatbitinttf ('UBILtype' *I, int32_t
            IPREC)
!  -- Runtime Function: _Float16 __floatbitinthf ('UBILtype' *I, int32_t
            IPREC)
!  -- Runtime Function: __bf16 __floatbitintbf ('UBILtype' *I, int32_t
            IPREC)
       These functions convert bit-precise integer I to floating point.
       If IPREC is positive, it is conversion from unsigned bit-precise
--- 578,606 ----
       These functions convert I, an unsigned long long, to floating
       point.
  
!  -- Runtime Function: void __fixsfbitint (UBILtype *R, int32_t RPREC,
            float A)
!  -- Runtime Function: void __fixdfbitint (UBILtype *R, int32_t RPREC,
            double A)
!  -- Runtime Function: void __fixxfbitint (UBILtype *R, int32_t RPREC,
            __float80 A)
!  -- Runtime Function: void __fixtfbitint (UBILtype *R, int32_t RPREC,
            _Float128 A)
       These functions convert A to bit-precise integer R, rounding toward
       zero.  If RPREC is positive, it converts to unsigned bit-precise
       integer and negative values all become zero, if RPREC is negative,
       it converts to signed bit-precise integer.
  
!  -- Runtime Function: float __floatbitintsf (UBILtype *I, int32_t IPREC)
!  -- Runtime Function: double __floatbitintdf (UBILtype *I, int32_t
            IPREC)
!  -- Runtime Function: __float80 __floatbitintxf (UBILtype *I, int32_t
            IPREC)
!  -- Runtime Function: _Float128 __floatbitinttf (UBILtype *I, int32_t
            IPREC)
!  -- Runtime Function: _Float16 __floatbitinthf (UBILtype *I, int32_t
            IPREC)
!  -- Runtime Function: __bf16 __floatbitintbf (UBILtype *I, int32_t
            IPREC)
       These functions convert bit-precise integer I to floating point.
       If IPREC is positive, it is conversion from unsigned bit-precise
*************** There are two sets of basic comparison f
*** 616,622 ****
   -- Runtime Function: int __cmpdf2 (double A, double B)
   -- Runtime Function: int __cmptf2 (long double A, long double B)
       These functions calculate a <=> b.  That is, if A is less than B,
!      they return -1; if A is greater than B, they return 1; and if A and
       B are equal they return 0.  If either argument is NaN they return
       1, but you should not rely on this; if NaN is a possibility, use
       one of the higher-level comparison functions.
--- 615,621 ----
   -- Runtime Function: int __cmpdf2 (double A, double B)
   -- Runtime Function: int __cmptf2 (long double A, long double B)
       These functions calculate a <=> b.  That is, if A is less than B,
!      they return âˆ’1; if A is greater than B, they return 1; and if A and
       B are equal they return 0.  If either argument is NaN they return
       1, but you should not rely on this; if NaN is a possibility, use
       one of the higher-level comparison functions.
*************** selected at configure time.
*** 937,947 ****
       These functions convert I, an unsigned long, to decimal floating
       point.
  
!  -- Runtime Function: void __bid_fixsdbitint ('UBILtype' *R, int32_t
            RPREC, _Decimal32 A)
!  -- Runtime Function: void __bid_fixddbitint ('UBILtype' *R, int32_t
            RPREC, _Decimal64 A)
!  -- Runtime Function: void __bid_fixtdbitint ('UBILtype' *R, int32_t
            RPREC, _Decimal128 A)
       These functions convert A to bit-precise integer R, rounding toward
       zero.  If RPREC is positive, it converts to unsigned bit-precise
--- 936,946 ----
       These functions convert I, an unsigned long, to decimal floating
       point.
  
!  -- Runtime Function: void __bid_fixsdbitint (UBILtype *R, int32_t
            RPREC, _Decimal32 A)
!  -- Runtime Function: void __bid_fixddbitint (UBILtype *R, int32_t
            RPREC, _Decimal64 A)
!  -- Runtime Function: void __bid_fixtdbitint (UBILtype *R, int32_t
            RPREC, _Decimal128 A)
       These functions convert A to bit-precise integer R, rounding toward
       zero.  If RPREC is positive, it converts to unsigned bit-precise
*************** selected at configure time.
*** 949,959 ****
       it converts to signed bit-precise integer.  So far implemented for
       BID format only.
  
!  -- Runtime Function: _Decimal32 __bid_floatbitintsd ('UBILtype' *I,
            int32_t IPREC)
!  -- Runtime Function: _Decimal64 __bid_floatbitintdd ('UBILtype' *I,
            int32_t IPREC)
!  -- Runtime Function: _Decimal128 __bid_floatbitinttd ('UBILtype' *I,
            int32_t IPREC)
       These functions convert bit-precise integer I to decimal floating
       point.  If IPREC is positive, it is conversion from unsigned
--- 948,958 ----
       it converts to signed bit-precise integer.  So far implemented for
       BID format only.
  
!  -- Runtime Function: _Decimal32 __bid_floatbitintsd (UBILtype *I,
            int32_t IPREC)
!  -- Runtime Function: _Decimal64 __bid_floatbitintdd (UBILtype *I,
            int32_t IPREC)
!  -- Runtime Function: _Decimal128 __bid_floatbitinttd (UBILtype *I,
            int32_t IPREC)
       These functions convert bit-precise integer I to decimal floating
       point.  If IPREC is positive, it is conversion from unsigned
*************** File: gccint.info,  Node: Fixed-point fr
*** 1050,1069 ****
  The software fixed-point library implements fixed-point fractional
  arithmetic, and is only activated on selected targets.
  
!  For ease of comprehension 'fract' is an alias for the '_Fract' type,
! 'accum' an alias for '_Accum', and 'sat' an alias for '_Sat'.
  
   For illustrative purposes, in this section the fixed-point fractional
! type 'short fract' is assumed to correspond to machine mode 'QQmode';
! 'unsigned short fract' to 'UQQmode'; 'fract' to 'HQmode';
! 'unsigned fract' to 'UHQmode'; 'long fract' to 'SQmode';
! 'unsigned long fract' to 'USQmode'; 'long long fract' to 'DQmode'; and
! 'unsigned long long fract' to 'UDQmode'.  Similarly the fixed-point
! accumulator type 'short accum' corresponds to 'HAmode';
! 'unsigned short accum' to 'UHAmode'; 'accum' to 'SAmode';
! 'unsigned accum' to 'USAmode'; 'long accum' to 'DAmode';
! 'unsigned long accum' to 'UDAmode'; 'long long accum' to 'TAmode'; and
! 'unsigned long long accum' to 'UTAmode'.
  
  3.4.1 Arithmetic functions
  --------------------------
--- 1049,1068 ----
  The software fixed-point library implements fixed-point fractional
  arithmetic, and is only activated on selected targets.
  
!  For ease of comprehension â€˜fractâ€™ is an alias for the â€˜_Fractâ€™ type,
! â€˜accumâ€™ an alias for â€˜_Accumâ€™, and â€˜satâ€™ an alias for â€˜_Satâ€™.
  
   For illustrative purposes, in this section the fixed-point fractional
! type â€˜short fractâ€™ is assumed to correspond to machine mode â€˜QQmodeâ€™;
! â€˜unsigned short fractâ€™ to â€˜UQQmodeâ€™; â€˜fractâ€™ to â€˜HQmodeâ€™;
! â€˜unsigned fractâ€™ to â€˜UHQmodeâ€™; â€˜long fractâ€™ to â€˜SQmodeâ€™;
! â€˜unsigned long fractâ€™ to â€˜USQmodeâ€™; â€˜long long fractâ€™ to â€˜DQmodeâ€™; and
! â€˜unsigned long long fractâ€™ to â€˜UDQmodeâ€™.  Similarly the fixed-point
! accumulator type â€˜short accumâ€™ corresponds to â€˜HAmodeâ€™;
! â€˜unsigned short accumâ€™ to â€˜UHAmodeâ€™; â€˜accumâ€™ to â€˜SAmodeâ€™;
! â€˜unsigned accumâ€™ to â€˜USAmodeâ€™; â€˜long accumâ€™ to â€˜DAmodeâ€™;
! â€˜unsigned long accumâ€™ to â€˜UDAmodeâ€™; â€˜long long accumâ€™ to â€˜TAmodeâ€™; and
! â€˜unsigned long long accumâ€™ to â€˜UTAmodeâ€™.
  
  3.4.1 Arithmetic functions
  --------------------------
*************** accumulator type 'short accum' correspon
*** 1158,1164 ****
            A, unsigned long accum B)
   -- Runtime Function: unsigned long long accum __subuta3 (unsigned long
            long accum A, unsigned long long accum B)
!      These functions return the difference of A and B; that is, 'A - B'.
  
   -- Runtime Function: short fract __sssubqq3 (short fract A, short fract
            B)
--- 1157,1163 ----
            A, unsigned long accum B)
   -- Runtime Function: unsigned long long accum __subuta3 (unsigned long
            long accum A, unsigned long long accum B)
!      These functions return the difference of A and B; that is, â€˜A - Bâ€™.
  
   -- Runtime Function: short fract __sssubqq3 (short fract A, short fract
            B)
*************** accumulator type 'short accum' correspon
*** 1173,1179 ****
   -- Runtime Function: long long accum __sssubta3 (long long accum A,
            long long accum B)
       These functions return the difference of A and B with signed
!      saturation; that is, 'A - B'.
  
   -- Runtime Function: unsigned short fract __ussubuqq3 (unsigned short
            fract A, unsigned short fract B)
--- 1172,1178 ----
   -- Runtime Function: long long accum __sssubta3 (long long accum A,
            long long accum B)
       These functions return the difference of A and B with signed
!      saturation; that is, â€˜A - Bâ€™.
  
   -- Runtime Function: unsigned short fract __ussubuqq3 (unsigned short
            fract A, unsigned short fract B)
*************** accumulator type 'short accum' correspon
*** 1192,1198 ****
   -- Runtime Function: unsigned long long accum __ussubuta3 (unsigned
            long long accum A, unsigned long long accum B)
       These functions return the difference of A and B with unsigned
!      saturation; that is, 'A - B'.
  
   -- Runtime Function: short fract __mulqq3 (short fract A, short fract
            B)
--- 1191,1197 ----
   -- Runtime Function: unsigned long long accum __ussubuta3 (unsigned
            long long accum A, unsigned long long accum B)
       These functions return the difference of A and B with unsigned
!      saturation; that is, â€˜A - Bâ€™.
  
   -- Runtime Function: short fract __mulqq3 (short fract A, short fract
            B)
*************** File: gccint.info,  Node: Miscellaneous
*** 2981,2987 ****
   -- Runtime Function: void * __splitstack_find (void *SEGMENT_ARG, void
            *SP, size_t LEN, void **NEXT_SEGMENT, void **NEXT_SP, void
            **INITIAL_SP)
!      When using '-fsplit-stack', this call may be used to iterate over
       the stack segments.  It may be called like this:
              void *next_segment = NULL;
              void *next_sp = NULL;
--- 2980,2986 ----
   -- Runtime Function: void * __splitstack_find (void *SEGMENT_ARG, void
            *SP, size_t LEN, void **NEXT_SEGMENT, void **NEXT_SP, void
            **INITIAL_SP)
!      When using â€˜-fsplit-stackâ€™, this call may be used to iterate over
       the stack segments.  It may be called like this:
              void *next_segment = NULL;
              void *next_sp = NULL;
*************** File: gccint.info,  Node: Miscellaneous
*** 3002,3016 ****
       with the SEGMENT_ARG and SP arguments NULL, to pass NEXT_SEGMENT,
       NEXT_SP, and INITIAL_SP to a different thread, and then to suspend
       one way or another.  A different thread may run the subsequent
!      '__splitstack_find' iterations.  Of course, this will only work if
       the first thread is suspended while the second thread is calling
!      '__splitstack_find'.  If not, the second thread could be looking at
       the stack while it is changing, and anything could happen.
  
   -- Variable: __morestack_segments
   -- Variable: __morestack_current_segment
   -- Variable: __morestack_initial_sp
!      Internal variables used by the '-fsplit-stack' implementation.
  
  
  File: gccint.info,  Node: Languages,  Next: Source Tree,  Prev: Libgcc,  Up: Top
--- 3001,3015 ----
       with the SEGMENT_ARG and SP arguments NULL, to pass NEXT_SEGMENT,
       NEXT_SP, and INITIAL_SP to a different thread, and then to suspend
       one way or another.  A different thread may run the subsequent
!      â€˜__splitstack_findâ€™ iterations.  Of course, this will only work if
       the first thread is suspended while the second thread is calling
!      â€˜__splitstack_findâ€™.  If not, the second thread could be looking at
       the stack while it is changing, and anything could happen.
  
   -- Variable: __morestack_segments
   -- Variable: __morestack_current_segment
   -- Variable: __morestack_initial_sp
!      Internal variables used by the â€˜-fsplit-stackâ€™ implementation.
  
  
  File: gccint.info,  Node: Languages,  Next: Source Tree,  Prev: Libgcc,  Up: Top
*************** File: gccint.info,  Node: Languages,  Ne
*** 3019,3025 ****
  ****************************
  
  The interface to front ends for languages in GCC, and in particular the
! 'tree' structure (*note GENERIC::), was initially designed for C, and
  many aspects of it are still somewhat biased towards C and C-like
  languages.  It is, however, reasonably well suited to other procedural
  languages, and front ends for many such languages have been written for
--- 3018,3024 ----
  ****************************
  
  The interface to front ends for languages in GCC, and in particular the
! â€˜treeâ€™ structure (*note GENERIC::), was initially designed for C, and
  many aspects of it are still somewhat biased towards C and C-like
  languages.  It is, however, reasonably well suited to other procedural
  languages, and front ends for many such languages have been written for
*************** GCC.
*** 3029,3041 ****
  directly to assembler or generating C code which is then compiled by
  GCC, has several advantages:
  
!    * GCC front ends benefit from the support for many different target
       machines already present in GCC.
!    * GCC front ends benefit from all the optimizations in GCC.  Some of
       these, such as alias analysis, may work better when GCC is
       compiling directly from source code than when it is compiling from
       generated C code.
!    * Better debugging information is generated when compiling directly
       from source code than when going via intermediate generated C code.
  
   Because of the advantages of writing a compiler as a GCC front end, GCC
--- 3028,3040 ----
  directly to assembler or generating C code which is then compiled by
  GCC, has several advantages:
  
!    â€¢ GCC front ends benefit from the support for many different target
       machines already present in GCC.
!    â€¢ GCC front ends benefit from all the optimizations in GCC.  Some of
       these, such as alias analysis, may work better when GCC is
       compiling directly from source code than when it is compiling from
       generated C code.
!    â€¢ Better debugging information is generated when compiling directly
       from source code than when going via intermediate generated C code.
  
   Because of the advantages of writing a compiler as a GCC front end, GCC
*************** presumed that you are familiar.
*** 3060,3066 ****
  
  * Configure Terms:: Configuration terminology and history.
  * Top Level::       The top level source directory.
! * gcc Directory::   The 'gcc' subdirectory.
  
  
  File: gccint.info,  Node: Configure Terms,  Next: Top Level,  Up: Source Tree
--- 3059,3065 ----
  
  * Configure Terms:: Configuration terminology and history.
  * Top Level::       The top level source directory.
! * gcc Directory::   The â€˜gccâ€™ subdirectory.
  
  
  File: gccint.info,  Node: Configure Terms,  Next: Top Level,  Up: Source Tree
*************** in detail, here are a few things that ev
*** 3075,3119 ****
  know.
  
   There are three system names that the build knows about: the machine
! you are building on ("build"), the machine that you are building for
! ("host"), and the machine that GCC will produce code for ("target").
! When you configure GCC, you specify these with '--build=', '--host=',
! and '--target='.
  
   Specifying the host without specifying the build should be avoided, as
! 'configure' may (and once did) assume that the host you specify is also
  the build, which may not be true.
  
!  If build, host, and target are all the same, this is called a "native".
  If build and host are the same but target is different, this is called a
! "cross".  If build, host, and target are all different this is called a
! "canadian" (for obscure reasons dealing with Canada's political party
  and the background of the person working on the build at that time).  If
  host and target are the same, but build is different, you are using a
  cross-compiler to build a native for a different system.  Some people
! call this a "host-x-host", "crossed native", or "cross-built native".
  If build and target are the same, but host is different, you are using a
  cross compiler to build a cross compiler that produces code for the
  machine you're building on.  This is rare, so there is no common way of
! describing it.  There is a proposal to call this a "crossback".
  
   If build and host are the same, the GCC you are building will also be
! used to build the target libraries (like 'libstdc++').  If build and
  host are different, you must have already built and installed a cross
  compiler that will be used to build the target libraries (if you
! configured with '--target=foo-bar', this compiler will be called
! 'foo-bar-gcc').
  
   In the case of target libraries, the machine you're building for is the
! machine you specified with '--target'.  So, build is the machine you're
  building on (no change there), host is the machine you're building for
  (the target libraries are built for the target, so host is the target
  you specified), and target doesn't apply (because you're not building a
  compiler, you're building libraries).  The configure/make process will
! adjust these variables as needed.  It also sets '$with_cross_host' to
! the original '--host' value in case you need it.
  
!  The 'libiberty' support library is built up to three times: once for
  the host, once for the target (even if they are the same), and once for
  the build if build and host are different.  This allows it to be used by
  all programs which are generated in the course of the build process.
--- 3074,3118 ----
  know.
  
   There are three system names that the build knows about: the machine
! you are building on (â€œbuildâ€�), the machine that you are building for
! (â€œhostâ€�), and the machine that GCC will produce code for (â€œtargetâ€�).
! When you configure GCC, you specify these with â€˜--build=â€™, â€˜--host=â€™,
! and â€˜--target=â€™.
  
   Specifying the host without specifying the build should be avoided, as
! â€˜configureâ€™ may (and once did) assume that the host you specify is also
  the build, which may not be true.
  
!  If build, host, and target are all the same, this is called a â€œnativeâ€�.
  If build and host are the same but target is different, this is called a
! â€œcrossâ€�.  If build, host, and target are all different this is called a
! â€œcanadianâ€� (for obscure reasons dealing with Canada's political party
  and the background of the person working on the build at that time).  If
  host and target are the same, but build is different, you are using a
  cross-compiler to build a native for a different system.  Some people
! call this a â€œhost-x-hostâ€�, â€œcrossed nativeâ€�, or â€œcross-built nativeâ€�.
  If build and target are the same, but host is different, you are using a
  cross compiler to build a cross compiler that produces code for the
  machine you're building on.  This is rare, so there is no common way of
! describing it.  There is a proposal to call this a â€œcrossbackâ€�.
  
   If build and host are the same, the GCC you are building will also be
! used to build the target libraries (like â€˜libstdc++â€™).  If build and
  host are different, you must have already built and installed a cross
  compiler that will be used to build the target libraries (if you
! configured with â€˜--target=foo-barâ€™, this compiler will be called
! â€˜foo-bar-gccâ€™).
  
   In the case of target libraries, the machine you're building for is the
! machine you specified with â€˜--targetâ€™.  So, build is the machine you're
  building on (no change there), host is the machine you're building for
  (the target libraries are built for the target, so host is the target
  you specified), and target doesn't apply (because you're not building a
  compiler, you're building libraries).  The configure/make process will
! adjust these variables as needed.  It also sets â€˜$with_cross_hostâ€™ to
! the original â€˜--hostâ€™ value in case you need it.
  
!  The â€˜libibertyâ€™ support library is built up to three times: once for
  the host, once for the target (even if they are the same), and once for
  the build if build and host are different.  This allows it to be used by
  all programs which are generated in the course of the build process.
*************** files and directories that are shared wi
*** 3129,3258 ****
  such as that of GNU Binutils.  It also contains several subdirectories
  that contain parts of GCC and its runtime libraries:
  
! 'c++tools'
       Contains the sources for the g++-mapper-server, a tool used with
       C++ modules.
  
! 'config'
       Autoconf macros and Makefile fragments used throughout the tree.
  
! 'contrib'
       Contributed scripts that may be found useful in conjunction with
!      GCC.  One of these, 'contrib/texi2pod.pl', is used to generate man
       pages from Texinfo manuals as part of the GCC build process.
  
! 'fixincludes'
       The support for fixing system headers to work with GCC.  See
!      'fixincludes/README' for more information.  The headers fixed by
!      this mechanism are installed in 'LIBSUBDIR/include-fixed'.  Along
!      with those headers, 'README-fixinc' is also installed, as
!      'LIBSUBDIR/include-fixed/README'.
  
! 'gcc'
       The main sources of GCC itself (except for runtime libraries),
       including optimizers, support for different target architectures,
!      language front ends, and testsuites.  *Note The 'gcc' Subdirectory:
       gcc Directory, for details.
  
! 'gnattools'
       Support tools for GNAT.
  
! 'gotools'
       Support tools for Go.
  
! 'include'
!      Headers for the 'libiberty' library.
  
! 'intl'
!      GNU 'libintl', from GNU 'gettext', for systems which do not include
!      it in 'libc'.
  
! 'libada'
       The Ada runtime library.
  
! 'libatomic'
       The runtime support library for atomic operations (e.g. for
!      '__sync' and '__atomic').
  
! 'libbacktrace'
       A library that allows GCC to produce backtraces when it crashes.
  
! 'libcc1'
       A library that allows GDB to make use of the compiler.
  
! 'libcody'
       A compiler dynamism library to allow communication between
       compilers and build systems, for purposes such as C++ modules.
  
! 'libcpp'
       The C preprocessor library.
  
! 'libdecnumber'
       The Decimal Float support library.
  
! 'libffi'
!      The 'libffi' library, used as part of the Go runtime library.
  
! 'libgcc'
       The GCC runtime library.
  
! 'libgcobol'
       The COBOL runtime library.
  
! 'libgfortran'
       The Fortran runtime library.
  
! 'libgm2'
       The Modula-2 runtime library.
  
! 'libgo'
       The Go runtime library.  The bulk of this library is mirrored from
       the master Go repository (https://github.com/golang/go).
  
! 'libgomp'
       The GNU Offloading and Multi Processing Runtime Library.
  
! 'libiberty'
!      The 'libiberty' library, used for portability and for some
       generally useful data structures and algorithms.  *Note
       Introduction: (libiberty)Top, for more information about this
       library.
  
! 'libitm'
       The runtime support library for transactional memory.
  
! 'libobjc'
       The Objective-C and Objective-C++ runtime library.
  
! 'libphobos'
       The D standard and runtime library.  The bulk of this library is
       mirrored from the master D repositories (https://github.com/dlang).
  
! 'libquadmath'
       The runtime support library for quad-precision math operations.
  
! 'libsanitizer'
       Libraries for various sanitizers.  The bulk of this directory is
       mirrored from the Google sanitizers repositories
       (https://github.com/google/sanitizers).
  
! 'libssp'
       The Stack protector runtime library.
  
! 'libstdc++-v3'
       The C++ runtime library.
  
! 'libvtv'
       The vtable verification library.
  
! 'lto-plugin'
       Plugin used by the linker if link-time optimizations are enabled.
  
! 'maintainer-scripts'
!      Scripts used by the 'gccadmin' account on 'gcc.gnu.org'.
  
! 'zlib'
!      The 'zlib' compression library, used for compressing and
       uncompressing GCC's intermediate language in LTO object files.
  
   The build system in the top level directory, including how recursion
--- 3128,3257 ----
  such as that of GNU Binutils.  It also contains several subdirectories
  that contain parts of GCC and its runtime libraries:
  
! â€˜c++toolsâ€™
       Contains the sources for the g++-mapper-server, a tool used with
       C++ modules.
  
! â€˜configâ€™
       Autoconf macros and Makefile fragments used throughout the tree.
  
! â€˜contribâ€™
       Contributed scripts that may be found useful in conjunction with
!      GCC.  One of these, â€˜contrib/texi2pod.plâ€™, is used to generate man
       pages from Texinfo manuals as part of the GCC build process.
  
! â€˜fixincludesâ€™
       The support for fixing system headers to work with GCC.  See
!      â€˜fixincludes/READMEâ€™ for more information.  The headers fixed by
!      this mechanism are installed in â€˜LIBSUBDIR/include-fixedâ€™.  Along
!      with those headers, â€˜README-fixincâ€™ is also installed, as
!      â€˜LIBSUBDIR/include-fixed/READMEâ€™.
  
! â€˜gccâ€™
       The main sources of GCC itself (except for runtime libraries),
       including optimizers, support for different target architectures,
!      language front ends, and testsuites.  *Note The â€˜gccâ€™ Subdirectory:
       gcc Directory, for details.
  
! â€˜gnattoolsâ€™
       Support tools for GNAT.
  
! â€˜gotoolsâ€™
       Support tools for Go.
  
! â€˜includeâ€™
!      Headers for the â€˜libibertyâ€™ library.
  
! â€˜intlâ€™
!      GNU â€˜libintlâ€™, from GNU â€˜gettextâ€™, for systems which do not include
!      it in â€˜libcâ€™.
  
! â€˜libadaâ€™
       The Ada runtime library.
  
! â€˜libatomicâ€™
       The runtime support library for atomic operations (e.g. for
!      â€˜__syncâ€™ and â€˜__atomicâ€™).
  
! â€˜libbacktraceâ€™
       A library that allows GCC to produce backtraces when it crashes.
  
! â€˜libcc1â€™
       A library that allows GDB to make use of the compiler.
  
! â€˜libcodyâ€™
       A compiler dynamism library to allow communication between
       compilers and build systems, for purposes such as C++ modules.
  
! â€˜libcppâ€™
       The C preprocessor library.
  
! â€˜libdecnumberâ€™
       The Decimal Float support library.
  
! â€˜libffiâ€™
!      The â€˜libffiâ€™ library, used as part of the Go runtime library.
  
! â€˜libgccâ€™
       The GCC runtime library.
  
! â€˜libgcobolâ€™
       The COBOL runtime library.
  
! â€˜libgfortranâ€™
       The Fortran runtime library.
  
! â€˜libgm2â€™
       The Modula-2 runtime library.
  
! â€˜libgoâ€™
       The Go runtime library.  The bulk of this library is mirrored from
       the master Go repository (https://github.com/golang/go).
  
! â€˜libgompâ€™
       The GNU Offloading and Multi Processing Runtime Library.
  
! â€˜libibertyâ€™
!      The â€˜libibertyâ€™ library, used for portability and for some
       generally useful data structures and algorithms.  *Note
       Introduction: (libiberty)Top, for more information about this
       library.
  
! â€˜libitmâ€™
       The runtime support library for transactional memory.
  
! â€˜libobjcâ€™
       The Objective-C and Objective-C++ runtime library.
  
! â€˜libphobosâ€™
       The D standard and runtime library.  The bulk of this library is
       mirrored from the master D repositories (https://github.com/dlang).
  
! â€˜libquadmathâ€™
       The runtime support library for quad-precision math operations.
  
! â€˜libsanitizerâ€™
       Libraries for various sanitizers.  The bulk of this directory is
       mirrored from the Google sanitizers repositories
       (https://github.com/google/sanitizers).
  
! â€˜libsspâ€™
       The Stack protector runtime library.
  
! â€˜libstdc++-v3â€™
       The C++ runtime library.
  
! â€˜libvtvâ€™
       The vtable verification library.
  
! â€˜lto-pluginâ€™
       Plugin used by the linker if link-time optimizations are enabled.
  
! â€˜maintainer-scriptsâ€™
!      Scripts used by the â€˜gccadminâ€™ account on â€˜gcc.gnu.orgâ€™.
  
! â€˜zlibâ€™
!      The â€˜zlibâ€™ compression library, used for compressing and
       uncompressing GCC's intermediate language in LTO object files.
  
   The build system in the top level directory, including how recursion
*************** GNU Binutils.
*** 3263,3272 ****
  
  File: gccint.info,  Node: gcc Directory,  Prev: Top Level,  Up: Source Tree
  
! 5.3 The 'gcc' Subdirectory
  ==========================
  
! The 'gcc' directory contains many files that are part of the C sources
  of GCC, other files used as part of the configuration and build process,
  and subdirectories including documentation and a testsuite.  The files
  that are sources of GCC are documented in a separate chapter.  *Note
--- 3262,3271 ----
  
  File: gccint.info,  Node: gcc Directory,  Prev: Top Level,  Up: Source Tree
  
! 5.3 The â€˜gccâ€™ Subdirectory
  ==========================
  
! The â€˜gccâ€™ directory contains many files that are part of the C sources
  of GCC, other files used as part of the configuration and build process,
  and subdirectories including documentation and a testsuite.  The files
  that are sources of GCC are documented in a separate chapter.  *Note
*************** Passes and Files of the Compiler: Passes
*** 3274,3284 ****
  
  * Menu:
  
! * Subdirectories:: Subdirectories of 'gcc'.
  * Configuration::  The configuration process, and the files it uses.
! * Build::          The build system in the 'gcc' directory.
! * Makefile::       Targets in 'gcc/Makefile'.
! * Library Files::  Library source files and headers under 'gcc/'.
  * Headers::        Headers installed by GCC.
  * Documentation::  Building documentation in GCC.
  * Front End::      Anatomy of a language front end.
--- 3273,3283 ----
  
  * Menu:
  
! * Subdirectories:: Subdirectories of â€˜gccâ€™.
  * Configuration::  The configuration process, and the files it uses.
! * Build::          The build system in the â€˜gccâ€™ directory.
! * Makefile::       Targets in â€˜gcc/Makefileâ€™.
! * Library Files::  Library source files and headers under â€˜gcc/â€™.
  * Headers::        Headers installed by GCC.
  * Documentation::  Building documentation in GCC.
  * Front End::      Anatomy of a language front end.
*************** Passes and Files of the Compiler: Passes
*** 3287,3403 ****
  
  File: gccint.info,  Node: Subdirectories,  Next: Configuration,  Up: gcc Directory
  
! 5.3.1 Subdirectories of 'gcc'
  -----------------------------
  
! The 'gcc' directory contains the following subdirectories:
  
! 'LANGUAGE'
       Subdirectories for various languages.  Directories containing a
!      file 'config-lang.in' are language subdirectories.  The contents of
!      the subdirectories 'c' (for C), 'cp' (for C++), 'm2' (for
!      Modula-2), 'objc' (for Objective-C), 'objcp' (for Objective-C++),
!      and 'lto' (for LTO) are documented in this manual (*note Passes and
       Files of the Compiler: Passes.); those for other languages are not.
       *Note Anatomy of a Language Front End: Front End, for details of
       the files in these directories.
  
! 'common'
!      Source files shared between the compiler drivers (such as 'gcc')
!      and the compilers proper (such as 'cc1').  If an architecture
       defines target hooks shared between those places, it also has a
!      subdirectory in 'common/config'.  *Note Target Structure::.
  
! 'config'
       Configuration files for supported architectures and operating
       systems.  *Note Anatomy of a Target Back End: Back End, for details
       of the files in this directory.
  
! 'doc'
       Texinfo documentation for GCC, together with automatically
       generated man pages and support for converting the installation
       manual to HTML.  *Note Documentation::.
  
! 'ginclude'
       System headers installed by GCC, mainly those required by the C
       standard of freestanding implementations.  *Note Headers Installed
       by GCC: Headers, for details of when these and other headers are
       installed.
  
! 'po'
       Message catalogs with translations of messages produced by GCC into
!      various languages, 'LANGUAGE.po'.  This directory also contains
!      'gcc.pot', the template for these message catalogues, 'exgettext',
!      a wrapper around 'gettext' to extract the messages from the GCC
!      sources and create 'gcc.pot', which is run by 'make gcc.pot', and
!      'EXCLUDES', a list of files from which messages should not be
       extracted.
  
! 'testsuite'
       The GCC testsuites (except for those for runtime libraries).  *Note
       Testsuites::.
  
  
  File: gccint.info,  Node: Configuration,  Next: Build,  Prev: Subdirectories,  Up: gcc Directory
  
! 5.3.2 Configuration in the 'gcc' Directory
  ------------------------------------------
  
! The 'gcc' directory is configured with an Autoconf-generated script
! 'configure'.  The 'configure' script is generated from 'configure.ac'
! and 'aclocal.m4'.  From the files 'configure.ac' and 'acconfig.h',
! Autoheader generates the file 'config.in'.  The file 'cstamp-h.in' is
  used as a timestamp.
  
  * Menu:
  
! * Config Fragments::     Scripts used by 'configure'.
! * System Config::        The 'config.build', 'config.host', and
!                          'config.gcc' files.
! * Configuration Files::  Files created by running 'configure'.
  
  
  File: gccint.info,  Node: Config Fragments,  Next: System Config,  Up: Configuration
  
! 5.3.2.1 Scripts Used by 'configure'
  ...................................
  
! 'configure' uses some other scripts to help in its work:
  
!    * The standard GNU 'config.sub' and 'config.guess' files, kept in the
       top level directory, are used.
  
!    * The file 'config.gcc' is used to handle configuration specific to
!      the particular target machine.  The file 'config.build' is used to
       handle configuration specific to the particular build machine.  The
!      file 'config.host' is used to handle configuration specific to the
       particular host machine.  (In general, these should only be used
       for features that cannot reasonably be tested in Autoconf feature
!      tests.)  *Note The 'config.build'; 'config.host'; and 'config.gcc'
       Files: System Config, for details of the contents of these files.
  
!    * Each language subdirectory has a file 'LANGUAGE/config-lang.in'
       that is used for front-end-specific configuration.  *Note The Front
!      End 'config-lang.in' File: Front End Config, for details of this
       file.
  
!    * A helper script 'configure.frag' is used as part of creating the
!      output of 'configure'.
  
  
  File: gccint.info,  Node: System Config,  Next: Configuration Files,  Prev: Config Fragments,  Up: Configuration
  
! 5.3.2.2 The 'config.build'; 'config.host'; and 'config.gcc' Files
  .................................................................
  
! The 'config.build' file contains specific rules for particular systems
  which GCC is built on.  This should be used as rarely as possible, as
  the behavior of the build system can always be detected by autoconf.
  
!  The 'config.host' file contains specific rules for particular systems
  which GCC will run on.  This is rarely needed.
  
!  The 'config.gcc' file contains specific rules for particular systems
  which GCC will generate code for.  This is usually needed.
  
   Each file has a list of the shell variables it sets, with descriptions,
--- 3286,3402 ----
  
  File: gccint.info,  Node: Subdirectories,  Next: Configuration,  Up: gcc Directory
  
! 5.3.1 Subdirectories of â€˜gccâ€™
  -----------------------------
  
! The â€˜gccâ€™ directory contains the following subdirectories:
  
! â€˜LANGUAGEâ€™
       Subdirectories for various languages.  Directories containing a
!      file â€˜config-lang.inâ€™ are language subdirectories.  The contents of
!      the subdirectories â€˜câ€™ (for C), â€˜cpâ€™ (for C++), â€˜m2â€™ (for
!      Modula-2), â€˜objcâ€™ (for Objective-C), â€˜objcpâ€™ (for Objective-C++),
!      and â€˜ltoâ€™ (for LTO) are documented in this manual (*note Passes and
       Files of the Compiler: Passes.); those for other languages are not.
       *Note Anatomy of a Language Front End: Front End, for details of
       the files in these directories.
  
! â€˜commonâ€™
!      Source files shared between the compiler drivers (such as â€˜gccâ€™)
!      and the compilers proper (such as â€˜cc1â€™).  If an architecture
       defines target hooks shared between those places, it also has a
!      subdirectory in â€˜common/configâ€™.  *Note Target Structure::.
  
! â€˜configâ€™
       Configuration files for supported architectures and operating
       systems.  *Note Anatomy of a Target Back End: Back End, for details
       of the files in this directory.
  
! â€˜docâ€™
       Texinfo documentation for GCC, together with automatically
       generated man pages and support for converting the installation
       manual to HTML.  *Note Documentation::.
  
! â€˜gincludeâ€™
       System headers installed by GCC, mainly those required by the C
       standard of freestanding implementations.  *Note Headers Installed
       by GCC: Headers, for details of when these and other headers are
       installed.
  
! â€˜poâ€™
       Message catalogs with translations of messages produced by GCC into
!      various languages, â€˜LANGUAGE.poâ€™.  This directory also contains
!      â€˜gcc.potâ€™, the template for these message catalogues, â€˜exgettextâ€™,
!      a wrapper around â€˜gettextâ€™ to extract the messages from the GCC
!      sources and create â€˜gcc.potâ€™, which is run by â€˜make gcc.potâ€™, and
!      â€˜EXCLUDESâ€™, a list of files from which messages should not be
       extracted.
  
! â€˜testsuiteâ€™
       The GCC testsuites (except for those for runtime libraries).  *Note
       Testsuites::.
  
  
  File: gccint.info,  Node: Configuration,  Next: Build,  Prev: Subdirectories,  Up: gcc Directory
  
! 5.3.2 Configuration in the â€˜gccâ€™ Directory
  ------------------------------------------
  
! The â€˜gccâ€™ directory is configured with an Autoconf-generated script
! â€˜configureâ€™.  The â€˜configureâ€™ script is generated from â€˜configure.acâ€™
! and â€˜aclocal.m4â€™.  From the files â€˜configure.acâ€™ and â€˜acconfig.hâ€™,
! Autoheader generates the file â€˜config.inâ€™.  The file â€˜cstamp-h.inâ€™ is
  used as a timestamp.
  
  * Menu:
  
! * Config Fragments::     Scripts used by â€˜configureâ€™.
! * System Config::        The â€˜config.buildâ€™, â€˜config.hostâ€™, and
!                          â€˜config.gccâ€™ files.
! * Configuration Files::  Files created by running â€˜configureâ€™.
  
  
  File: gccint.info,  Node: Config Fragments,  Next: System Config,  Up: Configuration
  
! 5.3.2.1 Scripts Used by â€˜configureâ€™
  ...................................
  
! â€˜configureâ€™ uses some other scripts to help in its work:
  
!    â€¢ The standard GNU â€˜config.subâ€™ and â€˜config.guessâ€™ files, kept in the
       top level directory, are used.
  
!    â€¢ The file â€˜config.gccâ€™ is used to handle configuration specific to
!      the particular target machine.  The file â€˜config.buildâ€™ is used to
       handle configuration specific to the particular build machine.  The
!      file â€˜config.hostâ€™ is used to handle configuration specific to the
       particular host machine.  (In general, these should only be used
       for features that cannot reasonably be tested in Autoconf feature
!      tests.)  *Note The â€˜config.buildâ€™; â€˜config.hostâ€™; and â€˜config.gccâ€™
       Files: System Config, for details of the contents of these files.
  
!    â€¢ Each language subdirectory has a file â€˜LANGUAGE/config-lang.inâ€™
       that is used for front-end-specific configuration.  *Note The Front
!      End â€˜config-lang.inâ€™ File: Front End Config, for details of this
       file.
  
!    â€¢ A helper script â€˜configure.fragâ€™ is used as part of creating the
!      output of â€˜configureâ€™.
  
  
  File: gccint.info,  Node: System Config,  Next: Configuration Files,  Prev: Config Fragments,  Up: Configuration
  
! 5.3.2.2 The â€˜config.buildâ€™; â€˜config.hostâ€™; and â€˜config.gccâ€™ Files
  .................................................................
  
! The â€˜config.buildâ€™ file contains specific rules for particular systems
  which GCC is built on.  This should be used as rarely as possible, as
  the behavior of the build system can always be detected by autoconf.
  
!  The â€˜config.hostâ€™ file contains specific rules for particular systems
  which GCC will run on.  This is rarely needed.
  
!  The â€˜config.gccâ€™ file contains specific rules for particular systems
  which GCC will generate code for.  This is usually needed.
  
   Each file has a list of the shell variables it sets, with descriptions,
*************** be set to control build, host and target
*** 3409,3466 ****
  
  File: gccint.info,  Node: Configuration Files,  Prev: System Config,  Up: Configuration
  
! 5.3.2.3 Files Created by 'configure'
  ....................................
  
! Here we spell out what files will be set up by 'configure' in the 'gcc'
  directory.  Some other files are created as temporary files in the
  configuration process, and are not used in the subsequent build; these
  are not documented.
  
!    * 'Makefile' is constructed from 'Makefile.in', together with the
       host and target fragments (*note Makefile Fragments: Fragments.)
!      't-TARGET' and 'x-HOST' from 'config', if any, and language
!      Makefile fragments 'LANGUAGE/Make-lang.in'.
!    * 'auto-host.h' contains information about the host machine
!      determined by 'configure'.  If the host machine is different from
!      the build machine, then 'auto-build.h' is also created, containing
       such information about the build machine.
!    * 'config.status' is a script that may be run to recreate the current
       configuration.
!    * 'configargs.h' is a header containing details of the arguments
!      passed to 'configure' to configure GCC, and of the thread model
       used.
!    * 'cstamp-h' is used as a timestamp.
!    * If a language 'config-lang.in' file (*note The Front End
!      'config-lang.in' File: Front End Config.) sets 'outputs', then the
!      files listed in 'outputs' there are also generated.
  
   The following configuration headers are created from the Makefile,
! using 'mkconfig.sh', rather than directly by 'configure'.  'config.h',
! 'bconfig.h' and 'tconfig.h' all contain the 'xm-MACHINE.h' header, if
  any, appropriate to the host, build and target machines respectively,
  the configuration headers for the target, and some definitions; for the
  host and build machines, these include the autoconfigured headers
! generated by 'configure'.  The other configuration headers are
! determined by 'config.gcc'.  They also contain the typedefs for 'rtx',
! 'rtvec' and 'tree'.
  
!    * 'config.h', for use in programs that run on the host machine.
!    * 'bconfig.h', for use in programs that run on the build machine.
!    * 'tconfig.h', for use in programs and libraries for the target
       machine.
!    * 'tm_p.h', which includes the header 'MACHINE-protos.h' that
!      contains prototypes for functions in the target 'MACHINE.c' file.
!      The 'MACHINE-protos.h' header is included after the 'rtl.h' and/or
!      'tree.h' would have been included.  The 'tm_p.h' also includes the
!      header 'tm-preds.h' which is generated by 'genpreds' program during
       the build to define the declarations and inline functions for the
       predicate functions.
  
  
  File: gccint.info,  Node: Build,  Next: Makefile,  Prev: Configuration,  Up: gcc Directory
  
! 5.3.3 Build System in the 'gcc' Directory
  -----------------------------------------
  
  FIXME: describe the build system, including what is built in what
--- 3408,3465 ----
  
  File: gccint.info,  Node: Configuration Files,  Prev: System Config,  Up: Configuration
  
! 5.3.2.3 Files Created by â€˜configureâ€™
  ....................................
  
! Here we spell out what files will be set up by â€˜configureâ€™ in the â€˜gccâ€™
  directory.  Some other files are created as temporary files in the
  configuration process, and are not used in the subsequent build; these
  are not documented.
  
!    â€¢ â€˜Makefileâ€™ is constructed from â€˜Makefile.inâ€™, together with the
       host and target fragments (*note Makefile Fragments: Fragments.)
!      â€˜t-TARGETâ€™ and â€˜x-HOSTâ€™ from â€˜configâ€™, if any, and language
!      Makefile fragments â€˜LANGUAGE/Make-lang.inâ€™.
!    â€¢ â€˜auto-host.hâ€™ contains information about the host machine
!      determined by â€˜configureâ€™.  If the host machine is different from
!      the build machine, then â€˜auto-build.hâ€™ is also created, containing
       such information about the build machine.
!    â€¢ â€˜config.statusâ€™ is a script that may be run to recreate the current
       configuration.
!    â€¢ â€˜configargs.hâ€™ is a header containing details of the arguments
!      passed to â€˜configureâ€™ to configure GCC, and of the thread model
       used.
!    â€¢ â€˜cstamp-hâ€™ is used as a timestamp.
!    â€¢ If a language â€˜config-lang.inâ€™ file (*note The Front End
!      â€˜config-lang.inâ€™ File: Front End Config.) sets â€˜outputsâ€™, then the
!      files listed in â€˜outputsâ€™ there are also generated.
  
   The following configuration headers are created from the Makefile,
! using â€˜mkconfig.shâ€™, rather than directly by â€˜configureâ€™.  â€˜config.hâ€™,
! â€˜bconfig.hâ€™ and â€˜tconfig.hâ€™ all contain the â€˜xm-MACHINE.hâ€™ header, if
  any, appropriate to the host, build and target machines respectively,
  the configuration headers for the target, and some definitions; for the
  host and build machines, these include the autoconfigured headers
! generated by â€˜configureâ€™.  The other configuration headers are
! determined by â€˜config.gccâ€™.  They also contain the typedefs for â€˜rtxâ€™,
! â€˜rtvecâ€™ and â€˜treeâ€™.
  
!    â€¢ â€˜config.hâ€™, for use in programs that run on the host machine.
!    â€¢ â€˜bconfig.hâ€™, for use in programs that run on the build machine.
!    â€¢ â€˜tconfig.hâ€™, for use in programs and libraries for the target
       machine.
!    â€¢ â€˜tm_p.hâ€™, which includes the header â€˜MACHINE-protos.hâ€™ that
!      contains prototypes for functions in the target â€˜MACHINE.câ€™ file.
!      The â€˜MACHINE-protos.hâ€™ header is included after the â€˜rtl.hâ€™ and/or
!      â€˜tree.hâ€™ would have been included.  The â€˜tm_p.hâ€™ also includes the
!      header â€˜tm-preds.hâ€™ which is generated by â€˜genpredsâ€™ program during
       the build to define the declarations and inline functions for the
       predicate functions.
  
  
  File: gccint.info,  Node: Build,  Next: Makefile,  Prev: Configuration,  Up: gcc Directory
  
! 5.3.3 Build System in the â€˜gccâ€™ Directory
  -----------------------------------------
  
  FIXME: describe the build system, including what is built in what
*************** File: gccint.info,  Node: Makefile,  Nex
*** 3474,3540 ****
  5.3.4 Makefile Targets
  ----------------------
  
! These targets are available from the 'gcc' directory:
  
! 'all'
       This is the default target.  Depending on what your
       build/host/target configuration is, it coordinates all the things
       that need to be built.
  
! 'doc'
       Produce info-formatted documentation and man pages.  Essentially it
!      calls 'make man' and 'make info'.
  
! 'dvi'
       Produce DVI-formatted documentation.
  
! 'pdf'
       Produce PDF-formatted documentation.
  
! 'html'
       Produce HTML-formatted documentation.
  
! 'man'
       Generate man pages.
  
! 'info'
       Generate info-formatted pages.
  
! 'mostlyclean'
       Delete the files made while building the compiler.
  
! 'clean'
!      That, and all the other files built by 'make all'.
  
! 'distclean'
!      That, and all the files created by 'configure'.
  
! 'maintainer-clean'
       Distclean plus any file that can be generated from other files.
       Note that additional tools may be required beyond what is normally
       needed to build GCC.
  
! 'srcextra'
       Generates files in the source directory that are not
       version-controlled but should go into a release tarball.
  
! 'srcinfo'
! 'srcman'
       Copies the info-formatted and manpage documentation into the source
       directory usually for the purpose of generating a release tarball.
  
! 'install'
       Installs GCC.
  
! 'uninstall'
       Deletes installed files, though this is not supported.
  
! 'check'
!      Run the testsuite.  This creates a 'testsuite' subdirectory that
!      has various '.sum' and '.log' files containing the results of the
!      testing.  You can run subsets with, for example, 'make check-gcc'.
!      You can specify specific tests by setting 'RUNTESTFLAGS' to be the
!      name of the '.exp' file, optionally followed by (for some tests) an
       equals and a file wildcard, like:
  
            make check-gcc RUNTESTFLAGS="execute.exp=19980413-*"
--- 3473,3539 ----
  5.3.4 Makefile Targets
  ----------------------
  
! These targets are available from the â€˜gccâ€™ directory:
  
! â€˜allâ€™
       This is the default target.  Depending on what your
       build/host/target configuration is, it coordinates all the things
       that need to be built.
  
! â€˜docâ€™
       Produce info-formatted documentation and man pages.  Essentially it
!      calls â€˜make manâ€™ and â€˜make infoâ€™.
  
! â€˜dviâ€™
       Produce DVI-formatted documentation.
  
! â€˜pdfâ€™
       Produce PDF-formatted documentation.
  
! â€˜htmlâ€™
       Produce HTML-formatted documentation.
  
! â€˜manâ€™
       Generate man pages.
  
! â€˜infoâ€™
       Generate info-formatted pages.
  
! â€˜mostlycleanâ€™
       Delete the files made while building the compiler.
  
! â€˜cleanâ€™
!      That, and all the other files built by â€˜make allâ€™.
  
! â€˜distcleanâ€™
!      That, and all the files created by â€˜configureâ€™.
  
! â€˜maintainer-cleanâ€™
       Distclean plus any file that can be generated from other files.
       Note that additional tools may be required beyond what is normally
       needed to build GCC.
  
! â€˜srcextraâ€™
       Generates files in the source directory that are not
       version-controlled but should go into a release tarball.
  
! â€˜srcinfoâ€™
! â€˜srcmanâ€™
       Copies the info-formatted and manpage documentation into the source
       directory usually for the purpose of generating a release tarball.
  
! â€˜installâ€™
       Installs GCC.
  
! â€˜uninstallâ€™
       Deletes installed files, though this is not supported.
  
! â€˜checkâ€™
!      Run the testsuite.  This creates a â€˜testsuiteâ€™ subdirectory that
!      has various â€˜.sumâ€™ and â€˜.logâ€™ files containing the results of the
!      testing.  You can run subsets with, for example, â€˜make check-gccâ€™.
!      You can specify specific tests by setting â€˜RUNTESTFLAGSâ€™ to be the
!      name of the â€˜.expâ€™ file, optionally followed by (for some tests) an
       equals and a file wildcard, like:
  
            make check-gcc RUNTESTFLAGS="execute.exp=19980413-*"
*************** steps of the build, including bootstrapp
*** 3548,3558 ****
  new compiler to build target libraries.
  
   When GCC is configured for a native configuration, the default action
! for 'make' is to do a full three-stage bootstrap.  This means that GCC
  is built three times--once with the native compiler, once with the
  native-built compiler it just built, and once with the compiler it built
  the second time.  In theory, the last two should produce the same
! results, which 'make compare' can check.  Each stage is configured
  separately and compiled into a separate directory, to minimize problems
  due to ABI incompatibilities between the native compiler and GCC.
  
--- 3547,3557 ----
  new compiler to build target libraries.
  
   When GCC is configured for a native configuration, the default action
! for â€˜makeâ€™ is to do a full three-stage bootstrap.  This means that GCC
  is built three times--once with the native compiler, once with the
  native-built compiler it just built, and once with the compiler it built
  the second time.  In theory, the last two should produce the same
! results, which â€˜make compareâ€™ can check.  Each stage is configured
  separately and compiled into a separate directory, to minimize problems
  due to ABI incompatibilities between the native compiler and GCC.
  
*************** mistake), and avoids spurious bootstrap
*** 3568,3647 ****
  
   Other targets available from the top level include:
  
! 'bootstrap-lean'
!      Like 'bootstrap', except that the various stages are removed once
       they're no longer needed.  This saves disk space.
  
! 'bootstrap2'
! 'bootstrap2-lean'
       Performs only the first two stages of bootstrap.  Unlike a
       three-stage bootstrap, this does not perform a comparison to test
       that the compiler is running properly.  Note that the disk space
       required by a "lean" bootstrap is approximately independent of the
       number of stages.
  
! 'stageN-bubble (N = 1...4, profile, feedback)'
       Rebuild all the stages up to N, with the appropriate flags,
       "bubbling" the changes as described above.
  
! 'all-stageN (N = 1...4, profile, feedback)'
       Assuming that stage N has already been built, rebuild it with the
       appropriate flags.  This is rarely needed.
  
! 'cleanstrap'
!      Remove everything ('make clean') and rebuilds ('make bootstrap').
  
! 'compare'
       Compares the results of stages 2 and 3.  This ensures that the
       compiler is running properly, since it should produce the same
       object files regardless of how it itself was compiled.
  
! 'distclean-stageN (N = 1...4, profile, feedback)'
       Wipe stage N and all the following ones.
  
!      For example, 'make distclean-stage3' wipes stage 3 and all the
!      following ones, so that another 'make' then rebuilds them from
       scratch.  This can be useful if you're doing changes where
       "bubbling" the changes as described above is not sufficient, but a
!      full 'make restrap' isn't necessary either.
  
! 'profiledbootstrap'
       Builds a compiler with profiling feedback information.  In this
!      case, the second and third stages are named 'profile' and
!      'feedback', respectively.  For more information, see the
       installation instructions.
  
! 'restrap'
       Restart a bootstrap, so that everything that was not built with the
       system compiler is rebuilt.
  
! 'stageN-start (N = 1...4, profile, feedback)'
       For each package that is bootstrapped, rename directories so that,
!      for example, 'gcc' points to the stageN GCC, compiled with the
       stageN-1 GCC(2).
  
       You will invoke this target if you need to test or debug the stageN
!      GCC.  If you only need to execute GCC (but you need not run 'make'
       either to rebuild it or to run test suites), you should be able to
!      work directly in the 'stageN-gcc' directory.  This makes it easier
       to debug multiple stages in parallel.
  
! 'stage'
       For each package that is bootstrapped, relocate its build directory
!      to indicate its stage.  For example, if the 'gcc' directory points
       to the stage2 GCC, after invoking this target it will be renamed to
!      'stage2-gcc'.
  
   If you wish to use non-default GCC flags when compiling the stage2 and
! stage3 compilers, set 'BOOT_CFLAGS' on the command line when doing
! 'make'.
  
   Usually, the first stage only builds the languages that the compiler is
  written in: typically, C and maybe Ada.  If you are debugging a
  miscompilation of a different stage2 front-end (for example, of the
  Fortran front-end), you may want to have front-ends for other languages
! in the first stage as well.  To do so, set 'STAGE1_LANGUAGES' on the
! command line when doing 'make'.
  
   For example, in the aforementioned scenario of debugging a Fortran
  front-end miscompilation caused by the stage1 compiler, you may need a
--- 3567,3646 ----
  
   Other targets available from the top level include:
  
! â€˜bootstrap-leanâ€™
!      Like â€˜bootstrapâ€™, except that the various stages are removed once
       they're no longer needed.  This saves disk space.
  
! â€˜bootstrap2â€™
! â€˜bootstrap2-leanâ€™
       Performs only the first two stages of bootstrap.  Unlike a
       three-stage bootstrap, this does not perform a comparison to test
       that the compiler is running properly.  Note that the disk space
       required by a "lean" bootstrap is approximately independent of the
       number of stages.
  
! â€˜stageN-bubble (N = 1...4, profile, feedback)â€™
       Rebuild all the stages up to N, with the appropriate flags,
       "bubbling" the changes as described above.
  
! â€˜all-stageN (N = 1...4, profile, feedback)â€™
       Assuming that stage N has already been built, rebuild it with the
       appropriate flags.  This is rarely needed.
  
! â€˜cleanstrapâ€™
!      Remove everything (â€˜make cleanâ€™) and rebuilds (â€˜make bootstrapâ€™).
  
! â€˜compareâ€™
       Compares the results of stages 2 and 3.  This ensures that the
       compiler is running properly, since it should produce the same
       object files regardless of how it itself was compiled.
  
! â€˜distclean-stageN (N = 1...4, profile, feedback)â€™
       Wipe stage N and all the following ones.
  
!      For example, â€˜make distclean-stage3â€™ wipes stage 3 and all the
!      following ones, so that another â€˜makeâ€™ then rebuilds them from
       scratch.  This can be useful if you're doing changes where
       "bubbling" the changes as described above is not sufficient, but a
!      full â€˜make restrapâ€™ isn't necessary either.
  
! â€˜profiledbootstrapâ€™
       Builds a compiler with profiling feedback information.  In this
!      case, the second and third stages are named â€˜profileâ€™ and
!      â€˜feedbackâ€™, respectively.  For more information, see the
       installation instructions.
  
! â€˜restrapâ€™
       Restart a bootstrap, so that everything that was not built with the
       system compiler is rebuilt.
  
! â€˜stageN-start (N = 1...4, profile, feedback)â€™
       For each package that is bootstrapped, rename directories so that,
!      for example, â€˜gccâ€™ points to the stageN GCC, compiled with the
       stageN-1 GCC(2).
  
       You will invoke this target if you need to test or debug the stageN
!      GCC.  If you only need to execute GCC (but you need not run â€˜makeâ€™
       either to rebuild it or to run test suites), you should be able to
!      work directly in the â€˜stageN-gccâ€™ directory.  This makes it easier
       to debug multiple stages in parallel.
  
! â€˜stageâ€™
       For each package that is bootstrapped, relocate its build directory
!      to indicate its stage.  For example, if the â€˜gccâ€™ directory points
       to the stage2 GCC, after invoking this target it will be renamed to
!      â€˜stage2-gccâ€™.
  
   If you wish to use non-default GCC flags when compiling the stage2 and
! stage3 compilers, set â€˜BOOT_CFLAGSâ€™ on the command line when doing
! â€˜makeâ€™.
  
   Usually, the first stage only builds the languages that the compiler is
  written in: typically, C and maybe Ada.  If you are debugging a
  miscompilation of a different stage2 front-end (for example, of the
  Fortran front-end), you may want to have front-ends for other languages
! in the first stage as well.  To do so, set â€˜STAGE1_LANGUAGESâ€™ on the
! command line when doing â€˜makeâ€™.
  
   For example, in the aforementioned scenario of debugging a Fortran
  front-end miscompilation caused by the stage1 compiler, you may need a
*************** command like
*** 3650,3677 ****
       make stage2-bubble STAGE1_LANGUAGES=c,fortran
  
   Alternatively, you can use per-language targets to build and test
! languages that are not enabled by default in stage1.  For example, 'make
! f951' will build a Fortran compiler even in the stage1 build directory.
  
     ---------- Footnotes ----------
  
     (1) Except if the compiler was buggy and miscompiled some of the
! files that were not modified.  In this case, it's best to use 'make
! restrap'.
  
!    (2) Customarily, the system compiler is also termed the 'stage0' GCC.
  
  
  File: gccint.info,  Node: Library Files,  Next: Headers,  Prev: Makefile,  Up: gcc Directory
  
! 5.3.5 Library Source Files and Headers under the 'gcc' Directory
  ----------------------------------------------------------------
  
  FIXME: list here, with explanation, all the C source files and headers
! under the 'gcc' directory that aren't built into the GCC executable but
  rather are part of runtime libraries and object files, such as
! 'crtstuff.c' and 'unwind-dw2.c'.  *Note Headers Installed by GCC:
! Headers, for more information about the 'ginclude' directory.
  
  
  File: gccint.info,  Node: Headers,  Next: Documentation,  Prev: Library Files,  Up: gcc Directory
--- 3649,3676 ----
       make stage2-bubble STAGE1_LANGUAGES=c,fortran
  
   Alternatively, you can use per-language targets to build and test
! languages that are not enabled by default in stage1.  For example, â€˜make
! f951â€™ will build a Fortran compiler even in the stage1 build directory.
  
     ---------- Footnotes ----------
  
     (1) Except if the compiler was buggy and miscompiled some of the
! files that were not modified.  In this case, it's best to use â€˜make
! restrapâ€™.
  
!    (2) Customarily, the system compiler is also termed the â€˜stage0â€™ GCC.
  
  
  File: gccint.info,  Node: Library Files,  Next: Headers,  Prev: Makefile,  Up: gcc Directory
  
! 5.3.5 Library Source Files and Headers under the â€˜gccâ€™ Directory
  ----------------------------------------------------------------
  
  FIXME: list here, with explanation, all the C source files and headers
! under the â€˜gccâ€™ directory that aren't built into the GCC executable but
  rather are part of runtime libraries and object files, such as
! â€˜crtstuff.câ€™ and â€˜unwind-dw2.câ€™.  *Note Headers Installed by GCC:
! Headers, for more information about the â€˜gincludeâ€™ directory.
  
  
  File: gccint.info,  Node: Headers,  Next: Documentation,  Prev: Library Files,  Up: gcc Directory
*************** In general, GCC expects the system C lib
*** 3683,3720 ****
  headers to be used with it.  However, GCC will fix those headers if
  necessary to make them work with GCC, and will install some headers
  required of freestanding implementations.  These headers are installed
! in 'LIBSUBDIR/include'.  Headers for non-C runtime libraries are also
  installed by GCC; these are not documented here.  (FIXME: document them
  somewhere.)
  
!  Several of the headers GCC installs are in the 'ginclude' directory.
! These headers, 'iso646.h', 'stdarg.h', 'stdbool.h', and 'stddef.h', are
! installed in 'LIBSUBDIR/include', unless the target Makefile fragment
! (*note Target Fragment::) overrides this by setting 'USER_H'.
  
   In addition to these headers and those generated by fixing system
  headers to work with GCC, some other headers may also be installed in
! 'LIBSUBDIR/include'.  'config.gcc' may set 'extra_headers'; this
! specifies additional headers under 'config' to be installed on some
  systems.
  
!  GCC installs its own version of '<float.h>', from 'ginclude/float.h'.
  This is done to cope with command-line options that change the
  representation of floating point numbers.
  
!  GCC also installs its own version of '<limits.h>'; this is generated
! from 'glimits.h', together with 'limitx.h' and 'limity.h' if the system
! also has its own version of '<limits.h>'.  (GCC provides its own header
  because it is required of ISO C freestanding implementations, but needs
  to include the system header from its own header as well because other
  standards such as POSIX specify additional values to be defined in
! '<limits.h>'.)  The system's '<limits.h>' header is used via
! 'LIBSUBDIR/include/syslimits.h', which is copied from 'gsyslimits.h' if
  it does not need fixing to work with GCC; if it needs fixing,
! 'syslimits.h' is the fixed copy.
  
!  GCC can also install '<tgmath.h>'.  It will do this when 'config.gcc'
! sets 'use_gcc_tgmath' to 'yes'.
  
  
  File: gccint.info,  Node: Documentation,  Next: Front End,  Prev: Headers,  Up: gcc Directory
--- 3682,3719 ----
  headers to be used with it.  However, GCC will fix those headers if
  necessary to make them work with GCC, and will install some headers
  required of freestanding implementations.  These headers are installed
! in â€˜LIBSUBDIR/includeâ€™.  Headers for non-C runtime libraries are also
  installed by GCC; these are not documented here.  (FIXME: document them
  somewhere.)
  
!  Several of the headers GCC installs are in the â€˜gincludeâ€™ directory.
! These headers, â€˜iso646.hâ€™, â€˜stdarg.hâ€™, â€˜stdbool.hâ€™, and â€˜stddef.hâ€™, are
! installed in â€˜LIBSUBDIR/includeâ€™, unless the target Makefile fragment
! (*note Target Fragment::) overrides this by setting â€˜USER_Hâ€™.
  
   In addition to these headers and those generated by fixing system
  headers to work with GCC, some other headers may also be installed in
! â€˜LIBSUBDIR/includeâ€™.  â€˜config.gccâ€™ may set â€˜extra_headersâ€™; this
! specifies additional headers under â€˜configâ€™ to be installed on some
  systems.
  
!  GCC installs its own version of â€˜<float.h>â€™, from â€˜ginclude/float.hâ€™.
  This is done to cope with command-line options that change the
  representation of floating point numbers.
  
!  GCC also installs its own version of â€˜<limits.h>â€™; this is generated
! from â€˜glimits.hâ€™, together with â€˜limitx.hâ€™ and â€˜limity.hâ€™ if the system
! also has its own version of â€˜<limits.h>â€™.  (GCC provides its own header
  because it is required of ISO C freestanding implementations, but needs
  to include the system header from its own header as well because other
  standards such as POSIX specify additional values to be defined in
! â€˜<limits.h>â€™.)  The system's â€˜<limits.h>â€™ header is used via
! â€˜LIBSUBDIR/include/syslimits.hâ€™, which is copied from â€˜gsyslimits.hâ€™ if
  it does not need fixing to work with GCC; if it needs fixing,
! â€˜syslimits.hâ€™ is the fixed copy.
  
!  GCC can also install â€˜<tgmath.h>â€™.  It will do this when â€˜config.gccâ€™
! sets â€˜use_gcc_tgmathâ€™ to â€˜yesâ€™.
  
  
  File: gccint.info,  Node: Documentation,  Next: Front End,  Prev: Headers,  Up: gcc Directory
*************** File: gccint.info,  Node: Documentation,
*** 3724,3734 ****
  
  The main GCC documentation is in the form of manuals in Texinfo format.
  These are installed in Info format; DVI versions may be generated by
! 'make dvi', PDF versions by 'make pdf', and HTML versions by 'make
! html'.  In addition, some man pages are generated from the Texinfo
  manuals, there are some other text files with miscellaneous
  documentation, and runtime libraries have their own documentation
! outside the 'gcc' directory.  FIXME: document the documentation for
  runtime libraries somewhere.
  
  * Menu:
--- 3723,3733 ----
  
  The main GCC documentation is in the form of manuals in Texinfo format.
  These are installed in Info format; DVI versions may be generated by
! â€˜make dviâ€™, PDF versions by â€˜make pdfâ€™, and HTML versions by â€˜make
! htmlâ€™.  In addition, some man pages are generated from the Texinfo
  manuals, there are some other text files with miscellaneous
  documentation, and runtime libraries have their own documentation
! outside the â€˜gccâ€™ directory.  FIXME: document the documentation for
  runtime libraries somewhere.
  
  * Menu:
*************** File: gccint.info,  Node: Texinfo Manual
*** 3744,3792 ****
  .......................
  
  The manuals for GCC as a whole, and the C and C++ front ends, are in
! files 'doc/*.texi'.  Other front ends have their own manuals in files
! 'LANGUAGE/*.texi'.  Common files 'doc/include/*.texi' are provided which
  may be included in multiple manuals; the following files are in
! 'doc/include':
  
! 'fdl.texi'
       The GNU Free Documentation License.
! 'funding.texi'
       The section "Funding Free Software".
! 'gcc-common.texi'
       Common definitions for manuals.
! 'gpl_v3.texi'
       The GNU General Public License.
! 'texinfo.tex'
!      A copy of 'texinfo.tex' known to work with the GCC manuals.
  
!  DVI-formatted manuals are generated by 'make dvi', which uses
! 'texi2dvi' (via the Makefile macro '$(TEXI2DVI)').  PDF-formatted
! manuals are generated by 'make pdf', which uses 'texi2pdf' (via the
! Makefile macro '$(TEXI2PDF)').  HTML formatted manuals are generated by
! 'make html'.  Info manuals are generated by 'make info' (which is run as
  part of a bootstrap); this generates the manuals in the source
! directory, using 'makeinfo' via the Makefile macro '$(MAKEINFO)', and
  they are included in release distributions.
  
   Manuals are also provided on the GCC web site, in both HTML and
  PostScript forms.  This is done via the script
! 'maintainer-scripts/update_web_docs_git'.  Each manual to be provided
! online must be listed in the definition of 'MANUALS' in that file; a
! file 'NAME.texi' must only appear once in the source tree, and the
  output manual must have the same name as the source file.  (However,
  other Texinfo files, included in manuals but not themselves the root
  files of manuals, may have names that appear more than once in the
! source tree.)  The manual file 'NAME.texi' should only include other
! files in its own directory or in 'doc/include'.  HTML manuals will be
! generated by 'makeinfo --html', PostScript manuals by 'texi2dvi' and
! 'dvips', and PDF manuals by 'texi2pdf'.  All Texinfo files that are
  parts of manuals must be version-controlled, even if they are generated
  files, for the generation of online manuals to work.
  
!  The installation manual, 'doc/install.texi', is also provided on the
  GCC web site.  The HTML version is generated by the script
! 'doc/install.texi2html'.
  
  
  File: gccint.info,  Node: Man Page Generation,  Next: Miscellaneous Docs,  Prev: Texinfo Manuals,  Up: Documentation
--- 3743,3791 ----
  .......................
  
  The manuals for GCC as a whole, and the C and C++ front ends, are in
! files â€˜doc/*.texiâ€™.  Other front ends have their own manuals in files
! â€˜LANGUAGE/*.texiâ€™.  Common files â€˜doc/include/*.texiâ€™ are provided which
  may be included in multiple manuals; the following files are in
! â€˜doc/includeâ€™:
  
! â€˜fdl.texiâ€™
       The GNU Free Documentation License.
! â€˜funding.texiâ€™
       The section "Funding Free Software".
! â€˜gcc-common.texiâ€™
       Common definitions for manuals.
! â€˜gpl_v3.texiâ€™
       The GNU General Public License.
! â€˜texinfo.texâ€™
!      A copy of â€˜texinfo.texâ€™ known to work with the GCC manuals.
  
!  DVI-formatted manuals are generated by â€˜make dviâ€™, which uses
! â€˜texi2dviâ€™ (via the Makefile macro â€˜$(TEXI2DVI)â€™).  PDF-formatted
! manuals are generated by â€˜make pdfâ€™, which uses â€˜texi2pdfâ€™ (via the
! Makefile macro â€˜$(TEXI2PDF)â€™).  HTML formatted manuals are generated by
! â€˜make htmlâ€™.  Info manuals are generated by â€˜make infoâ€™ (which is run as
  part of a bootstrap); this generates the manuals in the source
! directory, using â€˜makeinfoâ€™ via the Makefile macro â€˜$(MAKEINFO)â€™, and
  they are included in release distributions.
  
   Manuals are also provided on the GCC web site, in both HTML and
  PostScript forms.  This is done via the script
! â€˜maintainer-scripts/update_web_docs_gitâ€™.  Each manual to be provided
! online must be listed in the definition of â€˜MANUALSâ€™ in that file; a
! file â€˜NAME.texiâ€™ must only appear once in the source tree, and the
  output manual must have the same name as the source file.  (However,
  other Texinfo files, included in manuals but not themselves the root
  files of manuals, may have names that appear more than once in the
! source tree.)  The manual file â€˜NAME.texiâ€™ should only include other
! files in its own directory or in â€˜doc/includeâ€™.  HTML manuals will be
! generated by â€˜makeinfo --htmlâ€™, PostScript manuals by â€˜texi2dviâ€™ and
! â€˜dvipsâ€™, and PDF manuals by â€˜texi2pdfâ€™.  All Texinfo files that are
  parts of manuals must be version-controlled, even if they are generated
  files, for the generation of online manuals to work.
  
!  The installation manual, â€˜doc/install.texiâ€™, is also provided on the
  GCC web site.  The HTML version is generated by the script
! â€˜doc/install.texi2htmlâ€™.
  
  
  File: gccint.info,  Node: Man Page Generation,  Next: Miscellaneous Docs,  Prev: Texinfo Manuals,  Up: Documentation
*************** File: gccint.info,  Node: Man Page Gener
*** 3796,3828 ****
  
  Because of user demand, in addition to full Texinfo manuals, man pages
  are provided which contain extracts from those manuals.  These man pages
! are generated from the Texinfo manuals using 'contrib/texi2pod.pl' and
! 'pod2man'.  (The man page for 'g++', 'cp/g++.1', just contains a '.so'
! reference to 'gcc.1', but all the other man pages are generated from
  Texinfo manuals.)
  
   Because many systems may not have the necessary tools installed to
! generate the man pages, they are only generated if the 'configure'
  script detects that recent enough tools are installed, and the Makefiles
  allow generating man pages to fail without aborting the build.  Man
  pages are also included in release distributions.  They are generated in
  the source directory.
  
!  Magic comments in Texinfo files starting '@c man' control what parts of
  a Texinfo file go into a man page.  Only a subset of Texinfo is
! supported by 'texi2pod.pl', and it may be necessary to add support for
  more Texinfo features to this script when generating new man pages.  To
  improve the man page output, some special Texinfo macros are provided in
! 'doc/include/gcc-common.texi' which 'texi2pod.pl' understands:
  
! '@gcctabopt'
!      Use in the form '@table @gcctabopt' for tables of options, where
!      for printed output the effect of '@code' is better than that of
!      '@option' but for man page output a different effect is wanted.
! '@gccoptlist'
       Use for summary lists of options in manuals.
  
!  FIXME: describe the 'texi2pod.pl' input language and magic comments in
  more detail.
  
  
--- 3795,3827 ----
  
  Because of user demand, in addition to full Texinfo manuals, man pages
  are provided which contain extracts from those manuals.  These man pages
! are generated from the Texinfo manuals using â€˜contrib/texi2pod.plâ€™ and
! â€˜pod2manâ€™.  (The man page for â€˜g++â€™, â€˜cp/g++.1â€™, just contains a â€˜.soâ€™
! reference to â€˜gcc.1â€™, but all the other man pages are generated from
  Texinfo manuals.)
  
   Because many systems may not have the necessary tools installed to
! generate the man pages, they are only generated if the â€˜configureâ€™
  script detects that recent enough tools are installed, and the Makefiles
  allow generating man pages to fail without aborting the build.  Man
  pages are also included in release distributions.  They are generated in
  the source directory.
  
!  Magic comments in Texinfo files starting â€˜@c manâ€™ control what parts of
  a Texinfo file go into a man page.  Only a subset of Texinfo is
! supported by â€˜texi2pod.plâ€™, and it may be necessary to add support for
  more Texinfo features to this script when generating new man pages.  To
  improve the man page output, some special Texinfo macros are provided in
! â€˜doc/include/gcc-common.texiâ€™ which â€˜texi2pod.plâ€™ understands:
  
! â€˜@gcctaboptâ€™
!      Use in the form â€˜@table @gcctaboptâ€™ for tables of options, where
!      for printed output the effect of â€˜@codeâ€™ is better than that of
!      â€˜@optionâ€™ but for man page output a different effect is wanted.
! â€˜@gccoptlistâ€™
       Use for summary lists of options in manuals.
  
!  FIXME: describe the â€˜texi2pod.plâ€™ input language and magic comments in
  more detail.
  
  
*************** File: gccint.info,  Node: Miscellaneous
*** 3832,3868 ****
  ...................................
  
  In addition to the formal documentation that is installed by GCC, there
! are several other text files in the 'gcc' subdirectory with
  miscellaneous documentation:
  
! 'ABOUT-GCC-NLS'
       Notes on GCC's Native Language Support.  FIXME: this should be part
       of this manual rather than a separate file.
! 'ABOUT-NLS'
       Notes on the Free Translation Project.
! 'COPYING'
! 'COPYING3'
       The GNU General Public License, Versions 2 and 3.
! 'COPYING.LIB'
! 'COPYING3.LIB'
       The GNU Lesser General Public License, Versions 2.1 and 3.
! '*ChangeLog*'
! '*/ChangeLog*'
       Change log files for various parts of GCC.
! 'LANGUAGES'
       Details of a few changes to the GCC front-end interface.  FIXME:
       the information in this file should be part of general
       documentation of the front-end interface in this manual.
! 'ONEWS'
       Information about new features in old versions of GCC.  (For recent
       versions, the information is on the GCC web site.)
! 'README.Portability'
       Information about portability issues when writing code in GCC.
       FIXME: why isn't this part of this manual or of the GCC Coding
       Conventions?
  
!  FIXME: document such files in subdirectories, at least 'config', 'c',
! 'cp', 'objc', 'testsuite'.
  
  
  File: gccint.info,  Node: Front End,  Next: Back End,  Prev: Documentation,  Up: gcc Directory
--- 3831,3867 ----
  ...................................
  
  In addition to the formal documentation that is installed by GCC, there
! are several other text files in the â€˜gccâ€™ subdirectory with
  miscellaneous documentation:
  
! â€˜ABOUT-GCC-NLSâ€™
       Notes on GCC's Native Language Support.  FIXME: this should be part
       of this manual rather than a separate file.
! â€˜ABOUT-NLSâ€™
       Notes on the Free Translation Project.
! â€˜COPYINGâ€™
! â€˜COPYING3â€™
       The GNU General Public License, Versions 2 and 3.
! â€˜COPYING.LIBâ€™
! â€˜COPYING3.LIBâ€™
       The GNU Lesser General Public License, Versions 2.1 and 3.
! â€˜*ChangeLog*â€™
! â€˜*/ChangeLog*â€™
       Change log files for various parts of GCC.
! â€˜LANGUAGESâ€™
       Details of a few changes to the GCC front-end interface.  FIXME:
       the information in this file should be part of general
       documentation of the front-end interface in this manual.
! â€˜ONEWSâ€™
       Information about new features in old versions of GCC.  (For recent
       versions, the information is on the GCC web site.)
! â€˜README.Portabilityâ€™
       Information about portability issues when writing code in GCC.
       FIXME: why isn't this part of this manual or of the GCC Coding
       Conventions?
  
!  FIXME: document such files in subdirectories, at least â€˜configâ€™, â€˜câ€™,
! â€˜cpâ€™, â€˜objcâ€™, â€˜testsuiteâ€™.
  
  
  File: gccint.info,  Node: Front End,  Next: Back End,  Prev: Documentation,  Up: gcc Directory
*************** File: gccint.info,  Node: Front End,  Ne
*** 3872,4122 ****
  
  A front end for a language in GCC has the following parts:
  
!    * A directory 'LANGUAGE' under 'gcc' containing source files for that
!      front end.  *Note The Front End 'LANGUAGE' Directory: Front End
       Directory, for details.
!    * A mention of the language in the list of supported languages in
!      'gcc/doc/install.texi'.
!    * A mention of the name under which the language's runtime library is
!      recognized by '--enable-shared=PACKAGE' in the documentation of
!      that option in 'gcc/doc/install.texi'.
!    * A mention of any special prerequisites for building the front end
!      in the documentation of prerequisites in 'gcc/doc/install.texi'.
!    * Details of contributors to that front end in
!      'gcc/doc/contrib.texi'.  If the details are in that front end's own
       manual then there should be a link to that manual's list in
!      'contrib.texi'.
!    * Information about support for that language in
!      'gcc/doc/frontends.texi'.
!    * Information about standards for that language, and the front end's
!      support for them, in 'gcc/doc/standards.texi'.  This may be a link
       to such information in the front end's own manual.
!    * Details of source file suffixes for that language and '-x LANG'
!      options supported, in 'gcc/doc/invoke.texi'.
!    * Entries in 'default_compilers' in 'gcc.cc' for source file suffixes
       for that language.
!    * Preferably testsuites, which may be under 'gcc/testsuite' or
       runtime library directories.  FIXME: document somewhere how to
       write testsuite harnesses.
!    * Probably a runtime library for the language, outside the 'gcc'
       directory.  FIXME: document this further.
!    * Details of the directories of any runtime libraries in
!      'gcc/doc/sourcebuild.texi'.
!    * Check targets in 'Makefile.def' for the top-level 'Makefile' to
       check just the compiler or the compiler and runtime library for the
       language.
  
   If the front end is added to the official GCC source repository, the
  following are also necessary:
  
!    * At least one Bugzilla component for bugs in that front end and
       runtime libraries.  This category needs to be added to the Bugzilla
       database.
!    * Normally, one or more maintainers of that front end listed in
!      'MAINTAINERS'.
!    * Mentions on the GCC web site in 'index.html' and 'frontends.html',
!      with any relevant links on 'readings.html'.  (Front ends that are
!      not an official part of GCC may also be listed on 'frontends.html',
       with relevant links.)
!    * A news item on 'index.html', and possibly an announcement on the
       <gcc-announce@gcc.gnu.org> mailing list.
!    * The front end's manuals should be mentioned in
!      'maintainer-scripts/update_web_docs_git' (*note Texinfo Manuals::)
       and the online manuals should be linked to from
!      'onlinedocs/index.html'.
!    * If the front end has its own manual with its own index of options,
!      the generated 'Option-Index.html' should be added to
!      'PER_LANGUAGE_OPTION_INDEXES' in 'gcc/regenerate-opt-urls.py' and
!      to 'OPT_URLS_HTML_DEPS' in 'gcc/Makefile.in'.
!    * Any old releases or CVS repositories of the front end, before its
       inclusion in GCC, should be made available on the GCC web site at
       <https://gcc.gnu.org/pub/gcc/old-releases/>.
!    * The release and snapshot script 'maintainer-scripts/gcc_release'
       should be updated to generate appropriate tarballs for this front
       end.
!    * If this front end includes its own version files that include the
!      current date, 'maintainer-scripts/update_version' should be updated
       accordingly.
  
  * Menu:
  
! * Front End Directory::  The front end 'LANGUAGE' directory.
! * Front End Config::     The front end 'config-lang.in' file.
! * Front End Makefile::   The front end 'Make-lang.in' file.
  
  
  File: gccint.info,  Node: Front End Directory,  Next: Front End Config,  Up: Front End
  
! 5.3.8.1 The Front End 'LANGUAGE' Directory
  ..........................................
  
! A front end 'LANGUAGE' directory contains the source files of that front
! end (but not of any runtime libraries, which should be outside the 'gcc'
  directory).  This includes documentation, and possibly some subsidiary
  programs built alongside the front end.  Certain files are special and
  other parts of the compiler depend on their names:
  
! 'config-lang.in'
       This file is required in all language subdirectories.  *Note The
!      Front End 'config-lang.in' File: Front End Config, for details of
       its contents
! 'Make-lang.in'
       This file is required in all language subdirectories.  *Note The
!      Front End 'Make-lang.in' File: Front End Makefile, for details of
       its contents.
! 'lang.opt'
       This file registers the set of switches that the front end accepts
!      on the command line, and their '--help' text.  *Note Options::.
! 'lang-specs.h'
!      This file provides entries for 'default_compilers' in 'gcc.cc'
       which override the default of giving an error that a compiler for
       that language is not installed.
! 'LANGUAGE-tree.def'
       This file, which need not exist, defines any language-specific tree
       codes.
  
  
  File: gccint.info,  Node: Front End Config,  Next: Front End Makefile,  Prev: Front End Directory,  Up: Front End
  
! 5.3.8.2 The Front End 'config-lang.in' File
  ...........................................
  
! Each language subdirectory contains a 'config-lang.in' file.  This file
  is a shell script that may define some variables describing the
  language:
  
! 'language'
       This definition must be present, and gives the name of the language
!      for some purposes such as arguments to '--enable-languages'.
! 'lang_requires'
       If defined, this variable lists (space-separated) language front
       ends other than C that this front end requires to be enabled (with
!      the names given being their 'language' settings).  For example, the
       Obj-C++ front end depends on the C++ and ObjC front ends, so sets
!      'lang_requires="objc c++"'.
! 'subdir_requires'
       If defined, this variable lists (space-separated) front end
       directories other than C that this front end requires to be
       present.  For example, the Objective-C++ front end uses source
       files from the C++ and Objective-C front ends, so sets
!      'subdir_requires="cp objc"'.
! 'target_libs'
       If defined, this variable lists (space-separated) targets in the
!      top level 'Makefile' to build the runtime libraries for this
!      language, such as 'target-libobjc'.
! 'lang_dirs'
       If defined, this variable lists (space-separated) top level
!      directories (parallel to 'gcc'), apart from the runtime libraries,
       that should not be configured if this front end is not built.
! 'build_by_default'
!      If defined to 'no', this language front end is not built unless
!      enabled in a '--enable-languages' argument.  Otherwise, front ends
       are built by default, subject to any special logic in
!      'configure.ac' (as is present to disable the Ada front end if the
       Ada compiler is not already installed).
! 'boot_language'
!      If defined to 'yes', this front end is built in stage1 of the
       bootstrap.  This is only relevant to front ends written in their
       own languages.
! 'compilers'
       If defined, a space-separated list of compiler executables that
       will be run by the driver.  The names here will each end with
!      '\$(exeext)'.
! 'outputs'
       If defined, a space-separated list of files that should be
!      generated by 'configure' substituting values in them.  This
!      mechanism can be used to create a file 'LANGUAGE/Makefile' from
!      'LANGUAGE/Makefile.in', but this is deprecated, building everything
!      from the single 'gcc/Makefile' is preferred.
! 'gtfiles'
       If defined, a space-separated list of files that should be scanned
!      by 'gengtype.cc' to generate the garbage collection tables and
       routines for this language.  This excludes the files that are
       common to all front ends.  *Note Type Information::.
  
  
  File: gccint.info,  Node: Front End Makefile,  Prev: Front End Config,  Up: Front End
  
! 5.3.8.3 The Front End 'Make-lang.in' File
  .........................................
  
! Each language subdirectory contains a 'Make-lang.in' file.  It contains
! targets 'LANG.HOOK' (where 'LANG' is the setting of 'language' in
! 'config-lang.in') for the following values of 'HOOK', and any other
  Makefile rules required to build those targets (which may if necessary
! use other Makefiles specified in 'outputs' in 'config-lang.in', although
  this is deprecated).  It also adds any testsuite targets that can use
! the standard rule in 'gcc/Makefile.in' to the variable 'lang_checks'.
  
! 'all.cross'
! 'start.encap'
! 'rest.encap'
       FIXME: exactly what goes in each of these targets?
! 'tags'
!      Build an 'etags' 'TAGS' file in the language subdirectory in the
       source tree.
! 'info'
       Build info documentation for the front end, in the build directory.
!      This target is only called by 'make bootstrap' if a suitable
!      version of 'makeinfo' is available, so does not need to check for
       this, and should fail if an error occurs.
! 'dvi'
       Build DVI documentation for the front end, in the build directory.
!      This should be done using '$(TEXI2DVI)', with appropriate '-I'
       arguments pointing to directories of included files.
! 'pdf'
       Build PDF documentation for the front end, in the build directory.
!      This should be done using '$(TEXI2PDF)', with appropriate '-I'
       arguments pointing to directories of included files.
! 'html'
       Build HTML documentation for the front end, in the build directory.
! 'man'
       Build generated man pages for the front end from Texinfo manuals
       (*note Man Page Generation::), in the build directory.  This target
       is only called if the necessary tools are available, but should
       ignore errors so as not to stop the build if errors occur; man
       pages are optional and the tools involved may be installed in a
       broken way.
! 'install-common'
       Install everything that is part of the front end, apart from the
!      compiler executables listed in 'compilers' in 'config-lang.in'.
! 'install-info'
       Install info documentation for the front end, if it is present in
       the source directory.  This target should have dependencies on info
       files that should be installed.
! 'install-man'
       Install man pages for the front end.  This target should ignore
       errors.
! 'install-plugin'
       Install headers needed for plugins.
! 'srcextra'
       Copies its dependencies into the source directory.  This generally
       should be used for generated files such as Bison output files which
       are not version-controlled, but should be included in any release
       tarballs.  This target will be executed during a bootstrap if
!      '--enable-generated-files-in-srcdir' was specified as a 'configure'
       option.
! 'srcinfo'
! 'srcman'
       Copies its dependencies into the source directory.  These targets
       will be executed during a bootstrap if
!      '--enable-generated-files-in-srcdir' was specified as a 'configure'
       option.
! 'uninstall'
       Uninstall files installed by installing the compiler.  This is
       currently documented not to be supported, so the hook need not do
       anything.
! 'mostlyclean'
! 'clean'
! 'distclean'
! 'maintainer-clean'
!      The language parts of the standard GNU '*clean' targets.  *Note
       Standard Targets for Users: (standards)Standard Targets, for
!      details of the standard targets.  For GCC, 'maintainer-clean'
       should delete all generated files in the source directory that are
       not version-controlled, but should not delete anything that is.
  
!  'Make-lang.in' must also define a variable 'LANG_OBJS' to a list of
  host object files that are used by that language.
  
  
--- 3871,4121 ----
  
  A front end for a language in GCC has the following parts:
  
!    â€¢ A directory â€˜LANGUAGEâ€™ under â€˜gccâ€™ containing source files for that
!      front end.  *Note The Front End â€˜LANGUAGEâ€™ Directory: Front End
       Directory, for details.
!    â€¢ A mention of the language in the list of supported languages in
!      â€˜gcc/doc/install.texiâ€™.
!    â€¢ A mention of the name under which the language's runtime library is
!      recognized by â€˜--enable-shared=PACKAGEâ€™ in the documentation of
!      that option in â€˜gcc/doc/install.texiâ€™.
!    â€¢ A mention of any special prerequisites for building the front end
!      in the documentation of prerequisites in â€˜gcc/doc/install.texiâ€™.
!    â€¢ Details of contributors to that front end in
!      â€˜gcc/doc/contrib.texiâ€™.  If the details are in that front end's own
       manual then there should be a link to that manual's list in
!      â€˜contrib.texiâ€™.
!    â€¢ Information about support for that language in
!      â€˜gcc/doc/frontends.texiâ€™.
!    â€¢ Information about standards for that language, and the front end's
!      support for them, in â€˜gcc/doc/standards.texiâ€™.  This may be a link
       to such information in the front end's own manual.
!    â€¢ Details of source file suffixes for that language and â€˜-x LANGâ€™
!      options supported, in â€˜gcc/doc/invoke.texiâ€™.
!    â€¢ Entries in â€˜default_compilersâ€™ in â€˜gcc.ccâ€™ for source file suffixes
       for that language.
!    â€¢ Preferably testsuites, which may be under â€˜gcc/testsuiteâ€™ or
       runtime library directories.  FIXME: document somewhere how to
       write testsuite harnesses.
!    â€¢ Probably a runtime library for the language, outside the â€˜gccâ€™
       directory.  FIXME: document this further.
!    â€¢ Details of the directories of any runtime libraries in
!      â€˜gcc/doc/sourcebuild.texiâ€™.
!    â€¢ Check targets in â€˜Makefile.defâ€™ for the top-level â€˜Makefileâ€™ to
       check just the compiler or the compiler and runtime library for the
       language.
  
   If the front end is added to the official GCC source repository, the
  following are also necessary:
  
!    â€¢ At least one Bugzilla component for bugs in that front end and
       runtime libraries.  This category needs to be added to the Bugzilla
       database.
!    â€¢ Normally, one or more maintainers of that front end listed in
!      â€˜MAINTAINERSâ€™.
!    â€¢ Mentions on the GCC web site in â€˜index.htmlâ€™ and â€˜frontends.htmlâ€™,
!      with any relevant links on â€˜readings.htmlâ€™.  (Front ends that are
!      not an official part of GCC may also be listed on â€˜frontends.htmlâ€™,
       with relevant links.)
!    â€¢ A news item on â€˜index.htmlâ€™, and possibly an announcement on the
       <gcc-announce@gcc.gnu.org> mailing list.
!    â€¢ The front end's manuals should be mentioned in
!      â€˜maintainer-scripts/update_web_docs_gitâ€™ (*note Texinfo Manuals::)
       and the online manuals should be linked to from
!      â€˜onlinedocs/index.htmlâ€™.
!    â€¢ If the front end has its own manual with its own index of options,
!      the generated â€˜Option-Index.htmlâ€™ should be added to
!      â€˜PER_LANGUAGE_OPTION_INDEXESâ€™ in â€˜gcc/regenerate-opt-urls.pyâ€™ and
!      to â€˜OPT_URLS_HTML_DEPSâ€™ in â€˜gcc/Makefile.inâ€™.
!    â€¢ Any old releases or CVS repositories of the front end, before its
       inclusion in GCC, should be made available on the GCC web site at
       <https://gcc.gnu.org/pub/gcc/old-releases/>.
!    â€¢ The release and snapshot script â€˜maintainer-scripts/gcc_releaseâ€™
       should be updated to generate appropriate tarballs for this front
       end.
!    â€¢ If this front end includes its own version files that include the
!      current date, â€˜maintainer-scripts/update_versionâ€™ should be updated
       accordingly.
  
  * Menu:
  
! * Front End Directory::  The front end â€˜LANGUAGEâ€™ directory.
! * Front End Config::     The front end â€˜config-lang.inâ€™ file.
! * Front End Makefile::   The front end â€˜Make-lang.inâ€™ file.
  
  
  File: gccint.info,  Node: Front End Directory,  Next: Front End Config,  Up: Front End
  
! 5.3.8.1 The Front End â€˜LANGUAGEâ€™ Directory
  ..........................................
  
! A front end â€˜LANGUAGEâ€™ directory contains the source files of that front
! end (but not of any runtime libraries, which should be outside the â€˜gccâ€™
  directory).  This includes documentation, and possibly some subsidiary
  programs built alongside the front end.  Certain files are special and
  other parts of the compiler depend on their names:
  
! â€˜config-lang.inâ€™
       This file is required in all language subdirectories.  *Note The
!      Front End â€˜config-lang.inâ€™ File: Front End Config, for details of
       its contents
! â€˜Make-lang.inâ€™
       This file is required in all language subdirectories.  *Note The
!      Front End â€˜Make-lang.inâ€™ File: Front End Makefile, for details of
       its contents.
! â€˜lang.optâ€™
       This file registers the set of switches that the front end accepts
!      on the command line, and their â€˜--helpâ€™ text.  *Note Options::.
! â€˜lang-specs.hâ€™
!      This file provides entries for â€˜default_compilersâ€™ in â€˜gcc.ccâ€™
       which override the default of giving an error that a compiler for
       that language is not installed.
! â€˜LANGUAGE-tree.defâ€™
       This file, which need not exist, defines any language-specific tree
       codes.
  
  
  File: gccint.info,  Node: Front End Config,  Next: Front End Makefile,  Prev: Front End Directory,  Up: Front End
  
! 5.3.8.2 The Front End â€˜config-lang.inâ€™ File
  ...........................................
  
! Each language subdirectory contains a â€˜config-lang.inâ€™ file.  This file
  is a shell script that may define some variables describing the
  language:
  
! â€˜languageâ€™
       This definition must be present, and gives the name of the language
!      for some purposes such as arguments to â€˜--enable-languagesâ€™.
! â€˜lang_requiresâ€™
       If defined, this variable lists (space-separated) language front
       ends other than C that this front end requires to be enabled (with
!      the names given being their â€˜languageâ€™ settings).  For example, the
       Obj-C++ front end depends on the C++ and ObjC front ends, so sets
!      â€˜lang_requires="objc c++"â€™.
! â€˜subdir_requiresâ€™
       If defined, this variable lists (space-separated) front end
       directories other than C that this front end requires to be
       present.  For example, the Objective-C++ front end uses source
       files from the C++ and Objective-C front ends, so sets
!      â€˜subdir_requires="cp objc"â€™.
! â€˜target_libsâ€™
       If defined, this variable lists (space-separated) targets in the
!      top level â€˜Makefileâ€™ to build the runtime libraries for this
!      language, such as â€˜target-libobjcâ€™.
! â€˜lang_dirsâ€™
       If defined, this variable lists (space-separated) top level
!      directories (parallel to â€˜gccâ€™), apart from the runtime libraries,
       that should not be configured if this front end is not built.
! â€˜build_by_defaultâ€™
!      If defined to â€˜noâ€™, this language front end is not built unless
!      enabled in a â€˜--enable-languagesâ€™ argument.  Otherwise, front ends
       are built by default, subject to any special logic in
!      â€˜configure.acâ€™ (as is present to disable the Ada front end if the
       Ada compiler is not already installed).
! â€˜boot_languageâ€™
!      If defined to â€˜yesâ€™, this front end is built in stage1 of the
       bootstrap.  This is only relevant to front ends written in their
       own languages.
! â€˜compilersâ€™
       If defined, a space-separated list of compiler executables that
       will be run by the driver.  The names here will each end with
!      â€˜\$(exeext)â€™.
! â€˜outputsâ€™
       If defined, a space-separated list of files that should be
!      generated by â€˜configureâ€™ substituting values in them.  This
!      mechanism can be used to create a file â€˜LANGUAGE/Makefileâ€™ from
!      â€˜LANGUAGE/Makefile.inâ€™, but this is deprecated, building everything
!      from the single â€˜gcc/Makefileâ€™ is preferred.
! â€˜gtfilesâ€™
       If defined, a space-separated list of files that should be scanned
!      by â€˜gengtype.ccâ€™ to generate the garbage collection tables and
       routines for this language.  This excludes the files that are
       common to all front ends.  *Note Type Information::.
  
  
  File: gccint.info,  Node: Front End Makefile,  Prev: Front End Config,  Up: Front End
  
! 5.3.8.3 The Front End â€˜Make-lang.inâ€™ File
  .........................................
  
! Each language subdirectory contains a â€˜Make-lang.inâ€™ file.  It contains
! targets â€˜LANG.HOOKâ€™ (where â€˜LANGâ€™ is the setting of â€˜languageâ€™ in
! â€˜config-lang.inâ€™) for the following values of â€˜HOOKâ€™, and any other
  Makefile rules required to build those targets (which may if necessary
! use other Makefiles specified in â€˜outputsâ€™ in â€˜config-lang.inâ€™, although
  this is deprecated).  It also adds any testsuite targets that can use
! the standard rule in â€˜gcc/Makefile.inâ€™ to the variable â€˜lang_checksâ€™.
  
! â€˜all.crossâ€™
! â€˜start.encapâ€™
! â€˜rest.encapâ€™
       FIXME: exactly what goes in each of these targets?
! â€˜tagsâ€™
!      Build an â€˜etagsâ€™ â€˜TAGSâ€™ file in the language subdirectory in the
       source tree.
! â€˜infoâ€™
       Build info documentation for the front end, in the build directory.
!      This target is only called by â€˜make bootstrapâ€™ if a suitable
!      version of â€˜makeinfoâ€™ is available, so does not need to check for
       this, and should fail if an error occurs.
! â€˜dviâ€™
       Build DVI documentation for the front end, in the build directory.
!      This should be done using â€˜$(TEXI2DVI)â€™, with appropriate â€˜-Iâ€™
       arguments pointing to directories of included files.
! â€˜pdfâ€™
       Build PDF documentation for the front end, in the build directory.
!      This should be done using â€˜$(TEXI2PDF)â€™, with appropriate â€˜-Iâ€™
       arguments pointing to directories of included files.
! â€˜htmlâ€™
       Build HTML documentation for the front end, in the build directory.
! â€˜manâ€™
       Build generated man pages for the front end from Texinfo manuals
       (*note Man Page Generation::), in the build directory.  This target
       is only called if the necessary tools are available, but should
       ignore errors so as not to stop the build if errors occur; man
       pages are optional and the tools involved may be installed in a
       broken way.
! â€˜install-commonâ€™
       Install everything that is part of the front end, apart from the
!      compiler executables listed in â€˜compilersâ€™ in â€˜config-lang.inâ€™.
! â€˜install-infoâ€™
       Install info documentation for the front end, if it is present in
       the source directory.  This target should have dependencies on info
       files that should be installed.
! â€˜install-manâ€™
       Install man pages for the front end.  This target should ignore
       errors.
! â€˜install-pluginâ€™
       Install headers needed for plugins.
! â€˜srcextraâ€™
       Copies its dependencies into the source directory.  This generally
       should be used for generated files such as Bison output files which
       are not version-controlled, but should be included in any release
       tarballs.  This target will be executed during a bootstrap if
!      â€˜--enable-generated-files-in-srcdirâ€™ was specified as a â€˜configureâ€™
       option.
! â€˜srcinfoâ€™
! â€˜srcmanâ€™
       Copies its dependencies into the source directory.  These targets
       will be executed during a bootstrap if
!      â€˜--enable-generated-files-in-srcdirâ€™ was specified as a â€˜configureâ€™
       option.
! â€˜uninstallâ€™
       Uninstall files installed by installing the compiler.  This is
       currently documented not to be supported, so the hook need not do
       anything.
! â€˜mostlycleanâ€™
! â€˜cleanâ€™
! â€˜distcleanâ€™
! â€˜maintainer-cleanâ€™
!      The language parts of the standard GNU â€˜*cleanâ€™ targets.  *Note
       Standard Targets for Users: (standards)Standard Targets, for
!      details of the standard targets.  For GCC, â€˜maintainer-cleanâ€™
       should delete all generated files in the source directory that are
       not version-controlled, but should not delete anything that is.
  
!  â€˜Make-lang.inâ€™ must also define a variable â€˜LANG_OBJSâ€™ to a list of
  host object files that are used by that language.
  
  
*************** File: gccint.info,  Node: Back End,  Pre
*** 4127,4220 ****
  
  A back end for a target architecture in GCC has the following parts:
  
!    * A directory 'MACHINE' under 'gcc/config', containing a machine
!      description 'MACHINE.md' file (*note Machine Descriptions: Machine
!      Desc.), header files 'MACHINE.h' and 'MACHINE-protos.h' and a
!      source file 'MACHINE.c' (*note Target Description Macros and
       Functions: Target Macros.), possibly a target Makefile fragment
!      't-MACHINE' (*note The Target Makefile Fragment: Target Fragment.),
       and maybe some other files.  The names of these files may be
       changed from the defaults given by explicit specifications in
!      'config.gcc'.
!    * If necessary, a file 'MACHINE-modes.def' in the 'MACHINE'
       directory, containing additional machine modes to represent
       condition codes.  *Note Condition Code::, for further details.
!    * An optional 'MACHINE.opt' file in the 'MACHINE' directory,
       containing a list of target-specific options.  You can also add
!      other option files using the 'extra_options' variable in
!      'config.gcc'.  *Note Options::.
!    * Entries in 'config.gcc' (*note The 'config.gcc' File: System
       Config.) for the systems with this target architecture.
!    * Documentation in 'gcc/doc/invoke.texi' for any command-line options
       supported by this target (*note Run-time Target Specification:
       Run-time Target.).  This means both entries in the summary table of
       options and details of the individual options.
!    * An entry in 'gcc/regenerate-opt-urls.py''s TARGET_SPECIFIC_PAGES
       dictionary mapping from target-specific HTML documentation pages to
       the target specific source directory.
!    * Documentation in 'gcc/doc/extend.texi' for any target-specific
       attributes supported (*note Defining target-specific uses of
!      '__attribute__': Target Attributes.), including where the same
       attribute is already supported on some targets, which are
       enumerated in the manual.
!    * Documentation in 'gcc/doc/extend.texi' for any target-specific
       pragmas supported.
!    * Documentation in 'gcc/doc/extend.texi' of any target-specific
       built-in functions supported.
!    * Documentation in 'gcc/doc/extend.texi' of any target-specific
       format checking styles supported.
!    * Documentation in 'gcc/doc/md.texi' of any target-specific
       constraint letters (*note Constraints for Particular Machines:
       Machine Constraints.).
!    * A note in 'gcc/doc/contrib.texi' under the person or people who
       contributed the target support.
!    * Entries in 'gcc/doc/install.texi' for all target triplets supported
       with this target architecture, giving details of any special notes
       about installation for this target, or saying that there are no
       special notes if there are none.
!    * Possibly other support outside the 'gcc' directory for runtime
!      libraries.  FIXME: reference docs for this.  The 'libstdc++'
       porting manual needs to be installed as info for this to work, or
       to be a chapter of this manual.
  
!  The 'MACHINE.h' header is included very early in GCC's standard
! sequence of header files, while 'MACHINE-protos.h' is included late in
! the sequence.  Thus 'MACHINE-protos.h' can include declarations
! referencing types that are not defined when 'MACHINE.h' is included,
! specifically including those from 'rtl.h' and 'tree.h'.  Since both RTL
  and tree types may not be available in every context where
! 'MACHINE-protos.h' is included, in this file you should guard
! declarations using these types inside appropriate '#ifdef RTX_CODE' or
! '#ifdef TREE_CODE' conditional code segments.
  
!  If the backend uses shared data structures that require 'GTY' markers
  for garbage collection (*note Type Information::), you must declare
! those in 'MACHINE.h' rather than 'MACHINE-protos.h'.  Any definitions
! required for building libgcc must also go in 'MACHINE.h'.
  
!  GCC uses the macro 'IN_TARGET_CODE' to distinguish between
! machine-specific '.c' and '.cc' files and machine-independent '.c' and
! '.cc' files.  Machine-specific files should use the directive:
  
       #define IN_TARGET_CODE 1
  
!  before including 'config.h'.
  
   If the back end is added to the official GCC source repository, the
  following are also necessary:
  
!    * An entry for the target architecture in 'readings.html' on the GCC
       web site, with any relevant links.
!    * Details of the properties of the back end and target architecture
!      in 'backends.html' on the GCC web site.
!    * A news item about the contribution of support for that target
!      architecture, in 'index.html' on the GCC web site.
!    * Normally, one or more maintainers of that target listed in
!      'MAINTAINERS'.  Some existing architectures may be unmaintained,
       but it would be unusual to add support for a target that does not
       have a maintainer when support is added.
!    * Target triplets covering all 'config.gcc' stanzas for the target,
!      in the list in 'contrib/config-list.mk'.
  
  
  File: gccint.info,  Node: Testsuites,  Next: Options,  Prev: Source Tree,  Up: Top
--- 4126,4219 ----
  
  A back end for a target architecture in GCC has the following parts:
  
!    â€¢ A directory â€˜MACHINEâ€™ under â€˜gcc/configâ€™, containing a machine
!      description â€˜MACHINE.mdâ€™ file (*note Machine Descriptions: Machine
!      Desc.), header files â€˜MACHINE.hâ€™ and â€˜MACHINE-protos.hâ€™ and a
!      source file â€˜MACHINE.câ€™ (*note Target Description Macros and
       Functions: Target Macros.), possibly a target Makefile fragment
!      â€˜t-MACHINEâ€™ (*note The Target Makefile Fragment: Target Fragment.),
       and maybe some other files.  The names of these files may be
       changed from the defaults given by explicit specifications in
!      â€˜config.gccâ€™.
!    â€¢ If necessary, a file â€˜MACHINE-modes.defâ€™ in the â€˜MACHINEâ€™
       directory, containing additional machine modes to represent
       condition codes.  *Note Condition Code::, for further details.
!    â€¢ An optional â€˜MACHINE.optâ€™ file in the â€˜MACHINEâ€™ directory,
       containing a list of target-specific options.  You can also add
!      other option files using the â€˜extra_optionsâ€™ variable in
!      â€˜config.gccâ€™.  *Note Options::.
!    â€¢ Entries in â€˜config.gccâ€™ (*note The â€˜config.gccâ€™ File: System
       Config.) for the systems with this target architecture.
!    â€¢ Documentation in â€˜gcc/doc/invoke.texiâ€™ for any command-line options
       supported by this target (*note Run-time Target Specification:
       Run-time Target.).  This means both entries in the summary table of
       options and details of the individual options.
!    â€¢ An entry in â€˜gcc/regenerate-opt-urls.pyâ€™'s TARGET_SPECIFIC_PAGES
       dictionary mapping from target-specific HTML documentation pages to
       the target specific source directory.
!    â€¢ Documentation in â€˜gcc/doc/extend.texiâ€™ for any target-specific
       attributes supported (*note Defining target-specific uses of
!      â€˜__attribute__â€™: Target Attributes.), including where the same
       attribute is already supported on some targets, which are
       enumerated in the manual.
!    â€¢ Documentation in â€˜gcc/doc/extend.texiâ€™ for any target-specific
       pragmas supported.
!    â€¢ Documentation in â€˜gcc/doc/extend.texiâ€™ of any target-specific
       built-in functions supported.
!    â€¢ Documentation in â€˜gcc/doc/extend.texiâ€™ of any target-specific
       format checking styles supported.
!    â€¢ Documentation in â€˜gcc/doc/md.texiâ€™ of any target-specific
       constraint letters (*note Constraints for Particular Machines:
       Machine Constraints.).
!    â€¢ A note in â€˜gcc/doc/contrib.texiâ€™ under the person or people who
       contributed the target support.
!    â€¢ Entries in â€˜gcc/doc/install.texiâ€™ for all target triplets supported
       with this target architecture, giving details of any special notes
       about installation for this target, or saying that there are no
       special notes if there are none.
!    â€¢ Possibly other support outside the â€˜gccâ€™ directory for runtime
!      libraries.  FIXME: reference docs for this.  The â€˜libstdc++â€™
       porting manual needs to be installed as info for this to work, or
       to be a chapter of this manual.
  
!  The â€˜MACHINE.hâ€™ header is included very early in GCC's standard
! sequence of header files, while â€˜MACHINE-protos.hâ€™ is included late in
! the sequence.  Thus â€˜MACHINE-protos.hâ€™ can include declarations
! referencing types that are not defined when â€˜MACHINE.hâ€™ is included,
! specifically including those from â€˜rtl.hâ€™ and â€˜tree.hâ€™.  Since both RTL
  and tree types may not be available in every context where
! â€˜MACHINE-protos.hâ€™ is included, in this file you should guard
! declarations using these types inside appropriate â€˜#ifdef RTX_CODEâ€™ or
! â€˜#ifdef TREE_CODEâ€™ conditional code segments.
  
!  If the backend uses shared data structures that require â€˜GTYâ€™ markers
  for garbage collection (*note Type Information::), you must declare
! those in â€˜MACHINE.hâ€™ rather than â€˜MACHINE-protos.hâ€™.  Any definitions
! required for building libgcc must also go in â€˜MACHINE.hâ€™.
  
!  GCC uses the macro â€˜IN_TARGET_CODEâ€™ to distinguish between
! machine-specific â€˜.câ€™ and â€˜.ccâ€™ files and machine-independent â€˜.câ€™ and
! â€˜.ccâ€™ files.  Machine-specific files should use the directive:
  
       #define IN_TARGET_CODE 1
  
!  before including â€˜config.hâ€™.
  
   If the back end is added to the official GCC source repository, the
  following are also necessary:
  
!    â€¢ An entry for the target architecture in â€˜readings.htmlâ€™ on the GCC
       web site, with any relevant links.
!    â€¢ Details of the properties of the back end and target architecture
!      in â€˜backends.htmlâ€™ on the GCC web site.
!    â€¢ A news item about the contribution of support for that target
!      architecture, in â€˜index.htmlâ€™ on the GCC web site.
!    â€¢ Normally, one or more maintainers of that target listed in
!      â€˜MAINTAINERSâ€™.  Some existing architectures may be unmaintained,
       but it would be unusual to add support for a target that does not
       have a maintainer when support is added.
!    â€¢ Target triplets covering all â€˜config.gccâ€™ stanzas for the target,
!      in the list in â€˜contrib/config-list.mkâ€™.
  
  
  File: gccint.info,  Node: Testsuites,  Next: Options,  Prev: Source Tree,  Up: Top
*************** File: gccint.info,  Node: Test Idioms,
*** 4247,4259 ****
  6.1 Idioms Used in Testsuite Code
  =================================
  
! In general, C testcases have a trailing '-N.c', starting with '-1.c', in
  case other testcases with similar names are added later.  If the test is
  a test of some well-defined feature, it should have a name referring to
! that feature such as 'FEATURE-1.c'.  If it does not test a well-defined
  feature but just happens to exercise a bug somewhere in the compiler,
  and a bug report has been filed for this bug in the GCC bug database,
! 'prBUG-NUMBER-1.c' is the appropriate form of name.  Otherwise (for
  miscellaneous bugs not filed in the GCC bug database), and previously
  more generally, test cases are named after the date on which they were
  added.  This allows people to tell at a glance whether a test failure is
--- 4246,4258 ----
  6.1 Idioms Used in Testsuite Code
  =================================
  
! In general, C testcases have a trailing â€˜-N.câ€™, starting with â€˜-1.câ€™, in
  case other testcases with similar names are added later.  If the test is
  a test of some well-defined feature, it should have a name referring to
! that feature such as â€˜FEATURE-1.câ€™.  If it does not test a well-defined
  feature but just happens to exercise a bug somewhere in the compiler,
  and a bug report has been filed for this bug in the GCC bug database,
! â€˜prBUG-NUMBER-1.câ€™ is the appropriate form of name.  Otherwise (for
  miscellaneous bugs not filed in the GCC bug database), and previously
  more generally, test cases are named after the date on which they were
  added.  This allows people to tell at a glance whether a test failure is
*************** it may be a regression, but does not giv
*** 4262,4271 ****
  the bug or where discussion of it may be found.  Some other language
  testsuites follow similar conventions.
  
!  In the 'gcc.dg' testsuite, it is often necessary to test that an error
  is indeed a hard error and not just a warning--for example, where it is
  a constraint violation in the C standard, which must become an error
! with '-pedantic-errors'.  The following idiom, where the first line
  shown is line LINE of the file and the line that generates the error, is
  used for this:
  
--- 4261,4270 ----
  the bug or where discussion of it may be found.  Some other language
  testsuites follow similar conventions.
  
!  In the â€˜gcc.dgâ€™ testsuite, it is often necessary to test that an error
  is indeed a hard error and not just a warning--for example, where it is
  a constraint violation in the C standard, which must become an error
! with â€˜-pedantic-errorsâ€™.  The following idiom, where the first line
  shown is line LINE of the file and the line that generates the error, is
  used for this:
  
*************** used for this:
*** 4273,4288 ****
       /* { dg-error "REGEXP" "MESSAGE" { target *-*-* } LINE } */
  
   It may be necessary to check that an expression is an integer constant
! expression and has a certain value.  To check that 'E' has value 'V', an
  idiom similar to the following is used:
  
       char x[((E) == (V) ? 1 : -1)];
  
!  In 'gcc.dg' tests, '__typeof__' is sometimes used to make assertions
  about the types of expressions.  See, for example,
! 'gcc.dg/c99-condexpr-1.c'.  The more subtle uses depend on the exact
  rules for the types of conditional expressions in the C standard; see,
! for example, 'gcc.dg/c99-intconst-1.c'.
  
   It is useful to be able to test that optimizations are being made
  properly.  This cannot be done in all cases, but it can be done where
--- 4272,4287 ----
       /* { dg-error "REGEXP" "MESSAGE" { target *-*-* } LINE } */
  
   It may be necessary to check that an expression is an integer constant
! expression and has a certain value.  To check that â€˜Eâ€™ has value â€˜Vâ€™, an
  idiom similar to the following is used:
  
       char x[((E) == (V) ? 1 : -1)];
  
!  In â€˜gcc.dgâ€™ tests, â€˜__typeof__â€™ is sometimes used to make assertions
  about the types of expressions.  See, for example,
! â€˜gcc.dg/c99-condexpr-1.câ€™.  The more subtle uses depend on the exact
  rules for the types of conditional expressions in the C standard; see,
! for example, â€˜gcc.dg/c99-intconst-1.câ€™.
  
   It is useful to be able to test that optimizations are being made
  properly.  This cannot be done in all cases, but it can be done where
*************** the optimization will lead to code being
*** 4290,4297 ****
  where flow analysis or alias analysis should show that certain code
  cannot be called) or to functions not being called because they have
  been expanded as built-in functions.  Such tests go in
! 'gcc.c-torture/execute'.  Where code should be optimized away, a call to
! a nonexistent function such as 'link_failure ()' may be inserted; a
  definition
  
       #ifndef __OPTIMIZE__
--- 4289,4296 ----
  where flow analysis or alias analysis should show that certain code
  cannot be called) or to functions not being called because they have
  been expanded as built-in functions.  Such tests go in
! â€˜gcc.c-torture/executeâ€™.  Where code should be optimized away, a call to
! a nonexistent function such as â€˜link_failure ()â€™ may be inserted; a
  definition
  
       #ifndef __OPTIMIZE__
*************** definition
*** 4305,4312 ****
  will also be needed so that linking still succeeds when the test is run
  without optimization.  When all calls to a built-in function should have
  been optimized and no calls to the non-built-in version of the function
! should remain, that function may be defined as 'static' to call 'abort
! ()' (although redeclaring a function as static may not work on all
  targets).
  
   All testcases must be portable.  Target-specific testcases must have
--- 4304,4311 ----
  will also be needed so that linking still succeeds when the test is run
  without optimization.  When all calls to a built-in function should have
  been optimized and no calls to the non-built-in version of the function
! should remain, that function may be defined as â€˜staticâ€™ to call â€˜abort
! ()â€™ (although redeclaring a function as static may not work on all
  targets).
  
   All testcases must be portable.  Target-specific testcases must have
*************** File: gccint.info,  Node: Test Directive
*** 4326,4335 ****
  * Directives::  Syntax and descriptions of test directives.
  * Selectors:: Selecting targets to which a test applies.
  * Effective-Target Keywords:: Keywords describing target attributes.
! * Add Options:: Features for 'dg-add-options'
! * Remove Options:: Features for 'dg-remove-options'
! * Require Support:: Variants of 'dg-require-SUPPORT'
! * Final Actions:: Commands for use in 'dg-final'
  
  
  File: gccint.info,  Node: Directives,  Next: Selectors,  Up: Test Directives
--- 4325,4334 ----
  * Directives::  Syntax and descriptions of test directives.
  * Selectors:: Selecting targets to which a test applies.
  * Effective-Target Keywords:: Keywords describing target attributes.
! * Add Options:: Features for â€˜dg-add-optionsâ€™
! * Remove Options:: Features for â€˜dg-remove-optionsâ€™
! * Require Support:: Variants of â€˜dg-require-SUPPORTâ€™
! * Final Actions:: Commands for use in â€˜dg-finalâ€™
  
  
  File: gccint.info,  Node: Directives,  Next: Selectors,  Up: Test Directives
*************** File: gccint.info,  Node: Directives,  N
*** 4338,4344 ****
  ------------------------------------------------
  
  Test directives appear within comments in a test source file and begin
! with 'dg-'.  Some of these are defined within DejaGnu and others are
  local to the GCC testsuite.
  
   The order in which test directives appear in a test can be important:
--- 4337,4343 ----
  ------------------------------------------------
  
  Test directives appear within comments in a test source file and begin
! with â€˜dg-â€™.  Some of these are defined within DejaGnu and others are
  local to the GCC testsuite.
  
   The order in which test directives appear in a test can be important:
*************** DejaGnu directives, which know nothing a
*** 4347,4408 ****
  DejaGnu directives must precede GCC directives.
  
   Several test directives include selectors (*note Selectors::) which are
! usually preceded by the keyword 'target' or 'xfail'.
  
  6.2.1.1 Specify how to build the test
  .....................................
  
! '{ dg-do DO-WHAT-KEYWORD [{ target/xfail SELECTOR }] }'
       DO-WHAT-KEYWORD specifies how the test is compiled and whether it
       is executed.  It is one of:
  
!      'preprocess'
!           Compile with '-E' to run only the preprocessor.
!      'compile'
!           Compile with '-S' to produce an assembly code file.
!      'assemble'
!           Compile with '-c' to produce a relocatable object file.
!      'link'
            Compile, assemble, and link to produce an executable file.
!      'run'
            Produce and run an executable file, which is expected to
            return an exit code of 0.
  
!      The default is 'compile'.  That can be overridden for a set of
!      tests by redefining 'dg-do-what-default' within the '.exp' file for
       those tests.
  
!      If the directive includes the optional '{ target SELECTOR }' then
       the test is skipped unless the target system matches the SELECTOR.
  
!      If DO-WHAT-KEYWORD is 'run' and the directive includes the optional
!      '{ xfail SELECTOR }' and the selector is met then the test is
!      expected to fail.  The 'xfail' clause is ignored for other values
!      of DO-WHAT-KEYWORD; those tests can use directive 'dg-xfail-if'.
  
  6.2.1.2 Specify additional compiler options
  ...........................................
  
! '{ dg-options OPTIONS [{ target SELECTOR }] }'
       This DejaGnu directive provides a list of compiler options, to be
       used if the target system matches SELECTOR, that replace the
       default options used for this set of tests.
  
! '{ dg-add-options FEATURE ... }'
       Add any compiler options that are needed to access certain
       features.  This directive does nothing on targets that enable the
       features by default, or that don't provide them at all.  It must
!      come after all 'dg-options' directives.  For supported values of
       FEATURE see *note Add Options::.
  
! '{ dg-remove-options FEATURE ... }'
       Remove any compiler options that are needed to access certain
       features.  This directive does nothing on targets that disable the
       features by default, or that don't provide them at all.  It must
!      come after all 'dg-options' and 'dg-add-options' directives.  For
       supported values of FEATURE see *note Remove Options::.
  
! '{ dg-additional-options OPTIONS [{ target SELECTOR }] }'
       This directive provides a list of compiler options, to be used if
       the target system matches SELECTOR, that are added to the default
       options used for this set of tests.
--- 4346,4407 ----
  DejaGnu directives must precede GCC directives.
  
   Several test directives include selectors (*note Selectors::) which are
! usually preceded by the keyword â€˜targetâ€™ or â€˜xfailâ€™.
  
  6.2.1.1 Specify how to build the test
  .....................................
  
! â€˜{ dg-do DO-WHAT-KEYWORD [{ target/xfail SELECTOR }] }â€™
       DO-WHAT-KEYWORD specifies how the test is compiled and whether it
       is executed.  It is one of:
  
!      â€˜preprocessâ€™
!           Compile with â€˜-Eâ€™ to run only the preprocessor.
!      â€˜compileâ€™
!           Compile with â€˜-Sâ€™ to produce an assembly code file.
!      â€˜assembleâ€™
!           Compile with â€˜-câ€™ to produce a relocatable object file.
!      â€˜linkâ€™
            Compile, assemble, and link to produce an executable file.
!      â€˜runâ€™
            Produce and run an executable file, which is expected to
            return an exit code of 0.
  
!      The default is â€˜compileâ€™.  That can be overridden for a set of
!      tests by redefining â€˜dg-do-what-defaultâ€™ within the â€˜.expâ€™ file for
       those tests.
  
!      If the directive includes the optional â€˜{ target SELECTOR }â€™ then
       the test is skipped unless the target system matches the SELECTOR.
  
!      If DO-WHAT-KEYWORD is â€˜runâ€™ and the directive includes the optional
!      â€˜{ xfail SELECTOR }â€™ and the selector is met then the test is
!      expected to fail.  The â€˜xfailâ€™ clause is ignored for other values
!      of DO-WHAT-KEYWORD; those tests can use directive â€˜dg-xfail-ifâ€™.
  
  6.2.1.2 Specify additional compiler options
  ...........................................
  
! â€˜{ dg-options OPTIONS [{ target SELECTOR }] }â€™
       This DejaGnu directive provides a list of compiler options, to be
       used if the target system matches SELECTOR, that replace the
       default options used for this set of tests.
  
! â€˜{ dg-add-options FEATURE ... }â€™
       Add any compiler options that are needed to access certain
       features.  This directive does nothing on targets that enable the
       features by default, or that don't provide them at all.  It must
!      come after all â€˜dg-optionsâ€™ directives.  For supported values of
       FEATURE see *note Add Options::.
  
! â€˜{ dg-remove-options FEATURE ... }â€™
       Remove any compiler options that are needed to access certain
       features.  This directive does nothing on targets that disable the
       features by default, or that don't provide them at all.  It must
!      come after all â€˜dg-optionsâ€™ and â€˜dg-add-optionsâ€™ directives.  For
       supported values of FEATURE see *note Remove Options::.
  
! â€˜{ dg-additional-options OPTIONS [{ target SELECTOR }] }â€™
       This directive provides a list of compiler options, to be used if
       the target system matches SELECTOR, that are added to the default
       options used for this set of tests.
*************** usually preceded by the keyword 'target'
*** 4413,4494 ****
  The normal timeout limit, in seconds, is found by searching the
  following in order:
  
!    * the value defined by an earlier 'dg-timeout' directive in the test
  
!    * variable TOOL_TIMEOUT defined by the set of tests
  
!    * GCC,TIMEOUT set in the target board
  
!    * 300
  
! '{ dg-timeout N [{target SELECTOR }] }'
       Set the time limit for the compilation and for the execution of the
       test to the specified number of seconds.
  
! '{ dg-timeout-factor X [{ target SELECTOR }] }'
       Multiply the normal time limit for compilation and execution of the
       test by the specified floating-point factor.
  
  6.2.1.4 Skip a test for some targets
  ....................................
  
! '{ dg-do-if ACTION { SELECTOR } }'
       Same as dg-do if the selector matches and the test hasn't already
       been marked as unsupported.  Use it to override an action on a
       target while leaving the default action alone for other targets.
  
! '{ dg-skip-if COMMENT { SELECTOR } [{ INCLUDE-OPTS } [{ EXCLUDE-OPTS }]] }'
       Arguments INCLUDE-OPTS and EXCLUDE-OPTS are lists in which each
       element is a string of zero or more GCC options.  Skip the test if
       all of the following conditions are met:
!         * the test system is included in SELECTOR
  
!         * for at least one of the option strings in INCLUDE-OPTS, every
            option from that string is in the set of options with which
!           the test would be compiled; use '"*"' for an INCLUDE-OPTS list
            that matches any options; that is the default if INCLUDE-OPTS
            is not specified
  
!         * for each of the option strings in EXCLUDE-OPTS, at least one
            option from that string is not in the set of options with
!           which the test would be compiled; use '""' for an empty
            EXCLUDE-OPTS list; that is the default if EXCLUDE-OPTS is not
            specified
  
!      For example, to skip a test if option '-Os' is present:
  
            /* { dg-skip-if "" { *-*-* }  { "-Os" } { "" } } */
  
!      To skip a test if both options '-O2' and '-g' are present:
  
            /* { dg-skip-if "" { *-*-* }  { "-O2 -g" } { "" } } */
  
!      To skip a test if either '-O2' or '-O3' is present:
  
            /* { dg-skip-if "" { *-*-* }  { "-O2" "-O3" } { "" } } */
  
!      To skip a test unless option '-Os' is present:
  
            /* { dg-skip-if "" { *-*-* }  { "*" } { "-Os" } } */
  
!      To skip a test if either '-O2' or '-O3' is used with '-g' but not
!      if '-fpic' is also present:
  
            /* { dg-skip-if "" { *-*-* }  { "-O2 -g" "-O3 -g" } { "-fpic" } } */
  
! '{ dg-require-effective-target KEYWORD [{ target SELECTOR }] }'
       Skip the test if the test target, including current multilib flags,
       is not covered by the effective-target keyword.  If the directive
!      includes the optional '{ SELECTOR }' then the effective-target test
       is only performed if the target system matches the SELECTOR.  This
!      directive must appear after any 'dg-do' directive in the test and
!      before any 'dg-additional-sources' directive.  *Note
       Effective-Target Keywords::.
  
! '{ dg-require-SUPPORT args }'
       Skip the test if the target does not provide the required support.
!      These directives must appear after any 'dg-do' directive in the
!      test and before any 'dg-additional-sources' directive.  They
       require at least one argument, which can be an empty string if the
       specific procedure does not examine the argument.  *Note Require
       Support::, for a complete list of these directives.
--- 4412,4493 ----
  The normal timeout limit, in seconds, is found by searching the
  following in order:
  
!    â€¢ the value defined by an earlier â€˜dg-timeoutâ€™ directive in the test
  
!    â€¢ variable TOOL_TIMEOUT defined by the set of tests
  
!    â€¢ GCC,TIMEOUT set in the target board
  
!    â€¢ 300
  
! â€˜{ dg-timeout N [{target SELECTOR }] }â€™
       Set the time limit for the compilation and for the execution of the
       test to the specified number of seconds.
  
! â€˜{ dg-timeout-factor X [{ target SELECTOR }] }â€™
       Multiply the normal time limit for compilation and execution of the
       test by the specified floating-point factor.
  
  6.2.1.4 Skip a test for some targets
  ....................................
  
! â€˜{ dg-do-if ACTION { SELECTOR } }â€™
       Same as dg-do if the selector matches and the test hasn't already
       been marked as unsupported.  Use it to override an action on a
       target while leaving the default action alone for other targets.
  
! â€˜{ dg-skip-if COMMENT { SELECTOR } [{ INCLUDE-OPTS } [{ EXCLUDE-OPTS }]] }â€™
       Arguments INCLUDE-OPTS and EXCLUDE-OPTS are lists in which each
       element is a string of zero or more GCC options.  Skip the test if
       all of the following conditions are met:
!         â€¢ the test system is included in SELECTOR
  
!         â€¢ for at least one of the option strings in INCLUDE-OPTS, every
            option from that string is in the set of options with which
!           the test would be compiled; use â€˜"*"â€™ for an INCLUDE-OPTS list
            that matches any options; that is the default if INCLUDE-OPTS
            is not specified
  
!         â€¢ for each of the option strings in EXCLUDE-OPTS, at least one
            option from that string is not in the set of options with
!           which the test would be compiled; use â€˜""â€™ for an empty
            EXCLUDE-OPTS list; that is the default if EXCLUDE-OPTS is not
            specified
  
!      For example, to skip a test if option â€˜-Osâ€™ is present:
  
            /* { dg-skip-if "" { *-*-* }  { "-Os" } { "" } } */
  
!      To skip a test if both options â€˜-O2â€™ and â€˜-gâ€™ are present:
  
            /* { dg-skip-if "" { *-*-* }  { "-O2 -g" } { "" } } */
  
!      To skip a test if either â€˜-O2â€™ or â€˜-O3â€™ is present:
  
            /* { dg-skip-if "" { *-*-* }  { "-O2" "-O3" } { "" } } */
  
!      To skip a test unless option â€˜-Osâ€™ is present:
  
            /* { dg-skip-if "" { *-*-* }  { "*" } { "-Os" } } */
  
!      To skip a test if either â€˜-O2â€™ or â€˜-O3â€™ is used with â€˜-gâ€™ but not
!      if â€˜-fpicâ€™ is also present:
  
            /* { dg-skip-if "" { *-*-* }  { "-O2 -g" "-O3 -g" } { "-fpic" } } */
  
! â€˜{ dg-require-effective-target KEYWORD [{ target SELECTOR }] }â€™
       Skip the test if the test target, including current multilib flags,
       is not covered by the effective-target keyword.  If the directive
!      includes the optional â€˜{ SELECTOR }â€™ then the effective-target test
       is only performed if the target system matches the SELECTOR.  This
!      directive must appear after any â€˜dg-doâ€™ directive in the test and
!      before any â€˜dg-additional-sourcesâ€™ directive.  *Note
       Effective-Target Keywords::.
  
! â€˜{ dg-require-SUPPORT args }â€™
       Skip the test if the target does not provide the required support.
!      These directives must appear after any â€˜dg-doâ€™ directive in the
!      test and before any â€˜dg-additional-sourcesâ€™ directive.  They
       require at least one argument, which can be an empty string if the
       specific procedure does not examine the argument.  *Note Require
       Support::, for a complete list of these directives.
*************** following in order:
*** 4496,4640 ****
  6.2.1.5 Expect a test to fail for some targets
  ..............................................
  
! '{ dg-xfail-if COMMENT { SELECTOR } [{ INCLUDE-OPTS } [{ EXCLUDE-OPTS }]] }'
       Expect the test to fail if the conditions (which are the same as
!      for 'dg-skip-if') are met.  This does not affect the execute step.
  
! '{ dg-xfail-run-if COMMENT { SELECTOR } [{ INCLUDE-OPTS } [{ EXCLUDE-OPTS }]] }'
       Expect the execute step of a test to fail if the conditions (which
!      are the same as for 'dg-skip-if') are met.
  
  6.2.1.6 Expect the compiler to crash
  ....................................
  
! '{ dg-ice COMMENT [{ SELECTOR } [{ INCLUDE-OPTS } [{ EXCLUDE-OPTS }]]] }'
       Expect the compiler to crash with an internal compiler error and
       return a nonzero exit status if the conditions (which are the same
!      as for 'dg-skip-if') are met.  Used for tests that test bugs that
       have not been fixed yet.
  
  6.2.1.7 Expect the test executable to fail
  ..........................................
  
! '{ dg-shouldfail COMMENT [{ SELECTOR } [{ INCLUDE-OPTS } [{ EXCLUDE-OPTS }]]] }'
       Expect the test executable to return a nonzero exit status if the
!      conditions (which are the same as for 'dg-skip-if') are met.
  
  6.2.1.8 Verify compiler messages
  ................................
  
! Where LINE is an accepted argument for these commands, a value of '0'
  can be used if there is no line associated with the message.
  
! '{ dg-error REGEXP [COMMENT [{ target/xfail SELECTOR } [LINE] ]] }'
       This DejaGnu directive appears on a source line that is expected to
       get an error message, or else specifies the source line associated
       with the message.  If there is no message for that line or if the
       text of that message is not matched by REGEXP then the check fails
!      and COMMENT is included in the 'FAIL' message.  The check does not
!      look for the string 'error' unless it is part of REGEXP.
  
! '{ dg-warning REGEXP [COMMENT [{ target/xfail SELECTOR } [LINE] ]] }'
       This DejaGnu directive appears on a source line that is expected to
       get a warning message, or else specifies the source line associated
       with the message.  If there is no message for that line or if the
       text of that message is not matched by REGEXP then the check fails
!      and COMMENT is included in the 'FAIL' message.  The check does not
!      look for the string 'warning' unless it is part of REGEXP.
  
! '{ dg-message REGEXP [COMMENT [{ target/xfail SELECTOR } [LINE] ]] }'
       The line is expected to get a message other than an error or
       warning.  If there is no message for that line or if the text of
       that message is not matched by REGEXP then the check fails and
!      COMMENT is included in the 'FAIL' message.
  
! '{ dg-note REGEXP [COMMENT [{ target/xfail SELECTOR } [LINE] ]] }'
!      The line is expected to get a 'note' message.  If there is no
       message for that line or if the text of that message is not matched
       by REGEXP then the check fails and COMMENT is included in the
!      'FAIL' message.
  
!      By default, any _excess_ 'note' messages are pruned, meaning their
!      appearance doesn't trigger _excess errors_.  However, if 'dg-note'
       is used at least once in a testcase, they're not pruned and instead
       must _all_ be handled explicitly.  Thus, if looking for just single
!      instances of messages with 'note: ' prefixes without caring for all
!      of them, use 'dg-message "note: [...]"' instead of 'dg-note', or
!      use 'dg-note' together with 'dg-prune-output "note: "'.
  
! '{ dg-bogus REGEXP [COMMENT [{ target/xfail SELECTOR } [LINE] ]] }'
       This DejaGnu directive appears on a source line that should not get
       a message matching REGEXP, or else specifies the source line
!      associated with the bogus message.  It is usually used with 'xfail'
       to indicate that the message is a known problem for a particular
       set of targets.
  
! '{ dg-line LINENUMVAR }'
       This DejaGnu directive sets the variable LINENUMVAR to the line
       number of the source line.  The variable LINENUMVAR can then be
!      used in subsequent 'dg-error', 'dg-warning', 'dg-message',
!      'dg-note' and 'dg-bogus' directives.  For example:
  
            int a;   /* { dg-line first_def_a } */
            float a; /* { dg-error "conflicting types of" } */
            /* { dg-message "previous declaration of" "" { target *-*-* } first_def_a } */
  
! '{ dg-excess-errors COMMENT [{ target/xfail SELECTOR }] }'
       This DejaGnu directive indicates that the test is expected to fail
!      due to compiler messages that are not handled by 'dg-error',
!      'dg-warning', 'dg-message', 'dg-note' or 'dg-bogus'.  For this
!      directive 'xfail' has the same effect as 'target'.
  
! '{ dg-prune-output REGEXP }'
       Prune messages matching REGEXP from the test output.
  
  6.2.1.9 Verify output of the test executable
  ............................................
  
! '{ dg-output REGEXP [{ target/xfail SELECTOR }] }'
       This DejaGnu directive compares REGEXP to the combined output that
!      the test executable writes to 'stdout' and 'stderr'.
  
! '{ dg-output-file FILE [{ target/xfail SELECTOR }] }'
       Compares the content of FILE against the combined output that the
!      test executable writes to 'stdout' and 'stderr'.
  
  6.2.1.10 Specify environment variables for a test
  .................................................
  
! '{ dg-set-compiler-env-var VAR_NAME "VAR_VALUE" }'
       Specify that the environment variable VAR_NAME needs to be set to
       VAR_VALUE before invoking the compiler on the test file.
  
! '{ dg-set-target-env-var VAR_NAME "VAR_VALUE" }'
       Specify that the environment variable VAR_NAME needs to be set to
       VAR_VALUE before execution of the program created by the test.
  
  6.2.1.11 Specify additional files for a test
  ............................................
  
! '{ dg-additional-files "FILELIST" }'
       Specify additional files, other than source files, that must be
       copied to the system where the compiler runs.
  
! '{ dg-additional-sources "FILELIST" [{ \[linkonly\] \[target SELECTOR\] }] }'
       Specify additional source files to appear in the compile line
       following the main test file.  If the directive includes the
!      optional '{ SELECTOR }' then the additional sources are only added
!      if the target system matches the SELECTOR.  If 'linkonly' is
!      specified, additional sources are used only in 'link' and 'run'
       tests; they are reported as unsupported and discarded in other
       kinds of tests that direct the compiler to output to a single file.
  
  6.2.1.12 Add checks at the end of a test
  ........................................
  
! '{ dg-final { LOCAL-DIRECTIVE } }'
       This DejaGnu directive is placed within a comment anywhere in the
       source file and is processed after the test has been compiled and
!      run.  Multiple 'dg-final' commands are processed in the order in
       which they appear in the source file.  *Note Final Actions::, for a
!      list of directives that can be used within 'dg-final'.
  
  
  File: gccint.info,  Node: Selectors,  Next: Effective-Target Keywords,  Prev: Directives,  Up: Test Directives
--- 4495,4639 ----
  6.2.1.5 Expect a test to fail for some targets
  ..............................................
  
! â€˜{ dg-xfail-if COMMENT { SELECTOR } [{ INCLUDE-OPTS } [{ EXCLUDE-OPTS }]] }â€™
       Expect the test to fail if the conditions (which are the same as
!      for â€˜dg-skip-ifâ€™) are met.  This does not affect the execute step.
  
! â€˜{ dg-xfail-run-if COMMENT { SELECTOR } [{ INCLUDE-OPTS } [{ EXCLUDE-OPTS }]] }â€™
       Expect the execute step of a test to fail if the conditions (which
!      are the same as for â€˜dg-skip-ifâ€™) are met.
  
  6.2.1.6 Expect the compiler to crash
  ....................................
  
! â€˜{ dg-ice COMMENT [{ SELECTOR } [{ INCLUDE-OPTS } [{ EXCLUDE-OPTS }]]] }â€™
       Expect the compiler to crash with an internal compiler error and
       return a nonzero exit status if the conditions (which are the same
!      as for â€˜dg-skip-ifâ€™) are met.  Used for tests that test bugs that
       have not been fixed yet.
  
  6.2.1.7 Expect the test executable to fail
  ..........................................
  
! â€˜{ dg-shouldfail COMMENT [{ SELECTOR } [{ INCLUDE-OPTS } [{ EXCLUDE-OPTS }]]] }â€™
       Expect the test executable to return a nonzero exit status if the
!      conditions (which are the same as for â€˜dg-skip-ifâ€™) are met.
  
  6.2.1.8 Verify compiler messages
  ................................
  
! Where LINE is an accepted argument for these commands, a value of â€˜0â€™
  can be used if there is no line associated with the message.
  
! â€˜{ dg-error REGEXP [COMMENT [{ target/xfail SELECTOR } [LINE] ]] }â€™
       This DejaGnu directive appears on a source line that is expected to
       get an error message, or else specifies the source line associated
       with the message.  If there is no message for that line or if the
       text of that message is not matched by REGEXP then the check fails
!      and COMMENT is included in the â€˜FAILâ€™ message.  The check does not
!      look for the string â€˜errorâ€™ unless it is part of REGEXP.
  
! â€˜{ dg-warning REGEXP [COMMENT [{ target/xfail SELECTOR } [LINE] ]] }â€™
       This DejaGnu directive appears on a source line that is expected to
       get a warning message, or else specifies the source line associated
       with the message.  If there is no message for that line or if the
       text of that message is not matched by REGEXP then the check fails
!      and COMMENT is included in the â€˜FAILâ€™ message.  The check does not
!      look for the string â€˜warningâ€™ unless it is part of REGEXP.
  
! â€˜{ dg-message REGEXP [COMMENT [{ target/xfail SELECTOR } [LINE] ]] }â€™
       The line is expected to get a message other than an error or
       warning.  If there is no message for that line or if the text of
       that message is not matched by REGEXP then the check fails and
!      COMMENT is included in the â€˜FAILâ€™ message.
  
! â€˜{ dg-note REGEXP [COMMENT [{ target/xfail SELECTOR } [LINE] ]] }â€™
!      The line is expected to get a â€˜noteâ€™ message.  If there is no
       message for that line or if the text of that message is not matched
       by REGEXP then the check fails and COMMENT is included in the
!      â€˜FAILâ€™ message.
  
!      By default, any _excess_ â€˜noteâ€™ messages are pruned, meaning their
!      appearance doesn't trigger _excess errors_.  However, if â€˜dg-noteâ€™
       is used at least once in a testcase, they're not pruned and instead
       must _all_ be handled explicitly.  Thus, if looking for just single
!      instances of messages with â€˜note: â€™ prefixes without caring for all
!      of them, use â€˜dg-message "note: [...]"â€™ instead of â€˜dg-noteâ€™, or
!      use â€˜dg-noteâ€™ together with â€˜dg-prune-output "note: "â€™.
  
! â€˜{ dg-bogus REGEXP [COMMENT [{ target/xfail SELECTOR } [LINE] ]] }â€™
       This DejaGnu directive appears on a source line that should not get
       a message matching REGEXP, or else specifies the source line
!      associated with the bogus message.  It is usually used with â€˜xfailâ€™
       to indicate that the message is a known problem for a particular
       set of targets.
  
! â€˜{ dg-line LINENUMVAR }â€™
       This DejaGnu directive sets the variable LINENUMVAR to the line
       number of the source line.  The variable LINENUMVAR can then be
!      used in subsequent â€˜dg-errorâ€™, â€˜dg-warningâ€™, â€˜dg-messageâ€™,
!      â€˜dg-noteâ€™ and â€˜dg-bogusâ€™ directives.  For example:
  
            int a;   /* { dg-line first_def_a } */
            float a; /* { dg-error "conflicting types of" } */
            /* { dg-message "previous declaration of" "" { target *-*-* } first_def_a } */
  
! â€˜{ dg-excess-errors COMMENT [{ target/xfail SELECTOR }] }â€™
       This DejaGnu directive indicates that the test is expected to fail
!      due to compiler messages that are not handled by â€˜dg-errorâ€™,
!      â€˜dg-warningâ€™, â€˜dg-messageâ€™, â€˜dg-noteâ€™ or â€˜dg-bogusâ€™.  For this
!      directive â€˜xfailâ€™ has the same effect as â€˜targetâ€™.
  
! â€˜{ dg-prune-output REGEXP }â€™
       Prune messages matching REGEXP from the test output.
  
  6.2.1.9 Verify output of the test executable
  ............................................
  
! â€˜{ dg-output REGEXP [{ target/xfail SELECTOR }] }â€™
       This DejaGnu directive compares REGEXP to the combined output that
!      the test executable writes to â€˜stdoutâ€™ and â€˜stderrâ€™.
  
! â€˜{ dg-output-file FILE [{ target/xfail SELECTOR }] }â€™
       Compares the content of FILE against the combined output that the
!      test executable writes to â€˜stdoutâ€™ and â€˜stderrâ€™.
  
  6.2.1.10 Specify environment variables for a test
  .................................................
  
! â€˜{ dg-set-compiler-env-var VAR_NAME "VAR_VALUE" }â€™
       Specify that the environment variable VAR_NAME needs to be set to
       VAR_VALUE before invoking the compiler on the test file.
  
! â€˜{ dg-set-target-env-var VAR_NAME "VAR_VALUE" }â€™
       Specify that the environment variable VAR_NAME needs to be set to
       VAR_VALUE before execution of the program created by the test.
  
  6.2.1.11 Specify additional files for a test
  ............................................
  
! â€˜{ dg-additional-files "FILELIST" }â€™
       Specify additional files, other than source files, that must be
       copied to the system where the compiler runs.
  
! â€˜{ dg-additional-sources "FILELIST" [{ \[linkonly\] \[target SELECTOR\] }] }â€™
       Specify additional source files to appear in the compile line
       following the main test file.  If the directive includes the
!      optional â€˜{ SELECTOR }â€™ then the additional sources are only added
!      if the target system matches the SELECTOR.  If â€˜linkonlyâ€™ is
!      specified, additional sources are used only in â€˜linkâ€™ and â€˜runâ€™
       tests; they are reported as unsupported and discarded in other
       kinds of tests that direct the compiler to output to a single file.
  
  6.2.1.12 Add checks at the end of a test
  ........................................
  
! â€˜{ dg-final { LOCAL-DIRECTIVE } }â€™
       This DejaGnu directive is placed within a comment anywhere in the
       source file and is processed after the test has been compiled and
!      run.  Multiple â€˜dg-finalâ€™ commands are processed in the order in
       which they appear in the source file.  *Note Final Actions::, for a
!      list of directives that can be used within â€˜dg-finalâ€™.
  
  
  File: gccint.info,  Node: Selectors,  Next: Effective-Target Keywords,  Prev: Directives,  Up: Test Directives
*************** a test is run or to declare that a test
*** 4647,4681 ****
  particular targets.
  
   A selector is:
!    * one or more target triplets, possibly including wildcard
!      characters; use '*-*-*' to match any target
!    * a single effective-target keyword (*note Effective-Target
       Keywords::)
!    * a list of compiler options that should be included or excluded (as
       described in more detail below)
!    * a logical expression
  
   Depending on the context, the selector specifies whether a test is
  skipped and reported as unsupported or is expected to fail.  A context
! that allows either 'target' or 'xfail' also allows '{ target SELECTOR1
! xfail SELECTOR2 }' to skip the test for targets that don't match
  SELECTOR1 and the test to fail for targets that match SELECTOR2.
  
   A selector expression appears within curly braces and uses a single
! logical operator: one of '!', '&&', or '||'.  An operand is one of the
  following:
  
!    * another selector expression, in curly braces
  
!    * an effective-target keyword, such as 'lp64'
  
!    * a single target triplet
  
!    * a list of target triplets within quotes or curly braces
  
!    * one of the following:
  
!      '{ any-opts OPT1 ... OPTN }'
            Each of OPT1 to OPTN is a space-separated list of option
            globs.  The selector expression evaluates to true if, for one
            of these strings, every glob in the string matches an option
--- 4646,4680 ----
  particular targets.
  
   A selector is:
!    â€¢ one or more target triplets, possibly including wildcard
!      characters; use â€˜*-*-*â€™ to match any target
!    â€¢ a single effective-target keyword (*note Effective-Target
       Keywords::)
!    â€¢ a list of compiler options that should be included or excluded (as
       described in more detail below)
!    â€¢ a logical expression
  
   Depending on the context, the selector specifies whether a test is
  skipped and reported as unsupported or is expected to fail.  A context
! that allows either â€˜targetâ€™ or â€˜xfailâ€™ also allows â€˜{ target SELECTOR1
! xfail SELECTOR2 }â€™ to skip the test for targets that don't match
  SELECTOR1 and the test to fail for targets that match SELECTOR2.
  
   A selector expression appears within curly braces and uses a single
! logical operator: one of â€˜!â€™, â€˜&&â€™, or â€˜||â€™.  An operand is one of the
  following:
  
!    â€¢ another selector expression, in curly braces
  
!    â€¢ an effective-target keyword, such as â€˜lp64â€™
  
!    â€¢ a single target triplet
  
!    â€¢ a list of target triplets within quotes or curly braces
  
!    â€¢ one of the following:
  
!      â€˜{ any-opts OPT1 ... OPTN }â€™
            Each of OPT1 to OPTN is a space-separated list of option
            globs.  The selector expression evaluates to true if, for one
            of these strings, every glob in the string matches an option
*************** following:
*** 4685,4703 ****
  
            is true if any of the following are true:
  
!              * '-O2' was passed to the compiler
  
!              * '-Og' was passed to the compiler
  
!              * both '-O3' and '-flto' were passed to the compiler
  
!           This kind of selector can only be used within 'dg-final'
!           directives.  Use 'dg-skip-if', 'dg-xfail-if' or
!           'dg-xfail-run-if' to skip whole tests based on options, or to
            mark them as expected to fail with certain options.
  
!      '{ no-opts OPT1 ... OPTN }'
!           As for 'any-opts' above, each of OPT1 to OPTN is a
            space-separated list of option globs.  The selector expression
            evaluates to true if, for all of these strings, there is at
            least one glob that does not match an option that was passed
--- 4684,4702 ----
  
            is true if any of the following are true:
  
!              â€¢ â€˜-O2â€™ was passed to the compiler
  
!              â€¢ â€˜-Ogâ€™ was passed to the compiler
  
!              â€¢ both â€˜-O3â€™ and â€˜-fltoâ€™ were passed to the compiler
  
!           This kind of selector can only be used within â€˜dg-finalâ€™
!           directives.  Use â€˜dg-skip-ifâ€™, â€˜dg-xfail-ifâ€™ or
!           â€˜dg-xfail-run-ifâ€™ to skip whole tests based on options, or to
            mark them as expected to fail with certain options.
  
!      â€˜{ no-opts OPT1 ... OPTN }â€™
!           As for â€˜any-optsâ€™ above, each of OPT1 to OPTN is a
            space-separated list of option globs.  The selector expression
            evaluates to true if, for all of these strings, there is at
            least one glob that does not match an option that was passed
*************** following:
*** 4711,4725 ****
  
            is true if all of the following are true:
  
!              * '-O2' was not passed to the compiler
  
!              * '-Og' was not passed to the compiler
  
!              * at least one of '-O3' or '-flto' was not passed to the
                 compiler
  
!           Like 'any-opts', this kind of selector can only be used within
!           'dg-final' directives.
  
   Here are some examples of full target selectors:
  
--- 4710,4724 ----
  
            is true if all of the following are true:
  
!              â€¢ â€˜-O2â€™ was not passed to the compiler
  
!              â€¢ â€˜-Ogâ€™ was not passed to the compiler
  
!              â€¢ at least one of â€˜-O3â€™ or â€˜-fltoâ€™ was not passed to the
                 compiler
  
!           Like â€˜any-optsâ€™, this kind of selector can only be used within
!           â€˜dg-finalâ€™ directives.
  
   Here are some examples of full target selectors:
  
*************** particular functionality.  They are used
*** 4739,5033 ****
  for particular targets, or to specify that particular sets of targets
  are expected to fail some tests.
  
!  Effective-target keywords are defined in 'lib/target-supports.exp' in
  the GCC testsuite, with the exception of those that are documented as
  being local to a particular test directory.
  
!  The 'effective target' takes into account all of the compiler options
  with which the test will be compiled, including the multilib options.
! By convention, keywords ending in '_nocache' can also include options
! specified for the particular test in an earlier 'dg-options' or
! 'dg-add-options' directive.
  
  6.2.3.1 Endianness
  ..................
  
! 'be'
       Target uses big-endian memory order for multi-byte and multi-word
       data.
  
! 'le'
       Target uses little-endian memory order for multi-byte and
       multi-word data.
  
  6.2.3.2 Data type sizes
  .......................
  
! 'ilp32'
!      Target has 32-bit 'int', 'long', and pointers.
  
! 'lp64'
!      Target has 32-bit 'int', 64-bit 'long' and pointers.
  
! 'llp64'
!      Target has 32-bit 'int' and 'long', 64-bit 'long long' and
       pointers.
  
! 'double64'
!      Target has 64-bit 'double'.
  
! 'double64plus'
!      Target has 'double' that is 64 bits or longer.
  
! 'longdouble128'
!      Target has 128-bit 'long double'.
  
! 'int32plus'
!      Target has 'int' that is at 32 bits or longer.
  
! 'int16'
!      Target has 'int' that is 16 bits or shorter.
  
! 'longlong64'
!      Target has 64-bit 'long long'.
  
! 'long_neq_int'
!      Target has 'int' and 'long' with different sizes.
  
! 'short_eq_int'
!      Target has 'short' and 'int' with the same size.
  
! 'ptr_eq_short'
!      Target has pointers ('void *') and 'short' with the same size.
  
! 'int_eq_float'
!      Target has 'int' and 'float' with the same size.
  
! 'ptr_eq_long'
!      Target has pointers ('void *') and 'long' with the same size.
  
! 'large_double'
!      Target supports 'double' that is longer than 'float'.
  
! 'large_long_double'
!      Target supports 'long double' that is longer than 'double'.
  
! 'ptr32plus'
       Target has pointers that are 32 bits or longer.
  
! 'size20plus'
       Target has a 20-bit or larger address space, so supports at least
       16-bit array and structure sizes.
  
! 'size24plus'
       Target has a 24-bit or larger address space, so supports at least
       20-bit array and structure sizes.
  
! 'size32plus'
       Target has a 32-bit or larger address space, so supports at least
       24-bit array and structure sizes.
  
! '4byte_wchar_t'
!      Target has 'wchar_t' that is at least 4 bytes.
  
! 'floatN'
!      Target has the '_FloatN' type.
  
! 'floatNx'
!      Target has the '_FloatNx' type.
  
! 'floatN_runtime'
!      Target has the '_FloatN' type, including runtime support for any
!      options added with 'dg-add-options'.
  
! 'floatNx_runtime'
!      Target has the '_FloatNx' type, including runtime support for any
!      options added with 'dg-add-options'.
  
! 'floatn_nx_runtime'
       Target has runtime support for any options added with
!      'dg-add-options' for any '_FloatN' or '_FloatNx' type.
  
! 'inf'
!      Target supports floating point infinite ('inf') for type 'double'.
  
! 'inff'
!      Target supports floating point infinite ('inf') for type 'float'.
  
  6.2.3.3 Fortran-specific attributes
  ...................................
  
! 'fortran_integer_16'
!      Target supports Fortran 'integer' that is 16 bytes or longer.
  
! 'fortran_real_10'
!      Target supports Fortran 'real' that is 10 bytes or longer.
  
! 'fortran_real_16'
!      Target supports Fortran 'real' that is 16 bytes or longer.
  
! 'fortran_large_int'
!      Target supports Fortran 'integer' kinds larger than 'integer(8)'.
  
! 'fortran_large_real'
!      Target supports Fortran 'real' kinds larger than 'real(8)'.
  
  6.2.3.4 Vector-specific attributes
  ..................................
  
! 'vect_align_stack_vars'
       The target's ABI allows stack variables to be aligned to the
       preferred vector alignment.
  
! 'vect_avg_qi'
       Target supports both signed and unsigned averaging operations on
       vectors of bytes.
  
! 'vect_mulhrs_hi'
       Target supports both signed and unsigned
       multiply-high-with-round-and-scale operations on vectors of
       half-words.
  
! 'vect_sdiv_pow2_si'
       Target supports signed division by constant power-of-2 operations
       on vectors of 4-byte integers.
  
! 'vect_condition'
       Target supports vector conditional operations.
  
! 'vect_cond_mixed'
       Target supports vector conditional operations where comparison
       operands have different type from the value operands.
  
! 'vect_double'
!      Target supports hardware vectors of 'double'.
  
! 'vect_double_cond_arith'
       Target supports conditional addition, subtraction, multiplication,
!      division, minimum and maximum on vectors of 'double', via the
!      'cond_' optabs.
  
! 'vect_element_align_preferred'
       The target's preferred vector alignment is the same as the element
       alignment.
  
! 'vect_float'
!      Target supports hardware vectors of 'float' when
!      '-funsafe-math-optimizations' is in effect.
  
! 'vect_float_strict'
!      Target supports hardware vectors of 'float' when
!      '-funsafe-math-optimizations' is not in effect.  This implies
!      'vect_float'.
  
! 'vect_early_break'
       Target supports vectorization codegen of loops with early breaks.
       This requires an implementation of the cbranch optab for vectors.
  
! 'vect_early_break_hw'
       Target supports hardware vectorization and running of loops with
       early breaks.  This requires an implementation of the cbranch optab
       for vectors.
  
! 'vect_int'
!      Target supports hardware vectors of 'int'.
  
! 'vect_long'
!      Target supports hardware vectors of 'long'.
  
! 'vect_long_long'
!      Target supports hardware vectors of 'long long'.
  
! 'vect_check_ptrs'
!      Target supports the 'check_raw_ptrs' and 'check_war_ptrs' optabs on
       vectors.
  
! 'vect_fully_masked'
       Target supports fully-masked (also known as fully-predicated)
       loops, so that vector loops can handle partial as well as full
       vectors.
  
! 'vect_masked_load'
       Target supports vector masked loads.
  
! 'vect_masked_store'
       Target supports vector masked stores.
  
! 'vect_gather_load_ifn'
       Target supports vector gather loads using internal functions
       (rather than via built-in functions or emulation).
  
! 'vect_scatter_store'
       Target supports vector scatter stores.
  
! 'vect_aligned_arrays'
       Target aligns arrays to vector alignment boundary.
  
! 'vect_hw_misalign'
       Target supports a vector misalign access.
  
! 'vect_no_align'
       Target does not support a vector alignment mechanism.
  
! 'vect_peeling_profitable'
       Target might require to peel loops for alignment purposes.
  
! 'vect_no_int_min_max'
!      Target does not support a vector min and max instruction on 'int'.
  
! 'vect_no_int_add'
!      Target does not support a vector add instruction on 'int'.
  
! 'vect_no_bitwise'
       Target does not support vector bitwise instructions.
  
! 'vect_bool_cmp'
!      Target supports comparison of 'bool' vectors for at least one
       vector length.
  
! 'vect_char_add'
!      Target supports addition of 'char' vectors for at least one vector
       length.
  
! 'vect_char_mult'
!      Target supports 'vector char' multiplication.
  
! 'vect_short_mult'
!      Target supports 'vector short' multiplication.
  
! 'vect_int_mult'
!      Target supports 'vector int' multiplication.
  
! 'vect_long_mult'
!      Target supports 64 bit 'vector long' multiplication.
  
! 'vect_extract_even_odd'
       Target supports vector even/odd element extraction.
  
! 'vect_extract_even_odd_wide'
       Target supports vector even/odd element extraction of vectors with
!      elements 'SImode' or larger.
  
! 'vect_interleave'
       Target supports vector interleaving.
  
! 'vect_strided'
       Target supports vector interleaving and extract even/odd.
  
! 'vect_strided_wide'
       Target supports vector interleaving and extract even/odd for wide
       element types.
  
! 'vect_perm'
       Target supports vector permutation.
  
! 'vect_perm_byte'
       Target supports permutation of vectors with 8-bit elements.
  
! 'vect_perm_short'
       Target supports permutation of vectors with 16-bit elements.
  
! 'vect_perm3_byte'
       Target supports permutation of vectors with 8-bit elements, and for
       the default vector length it is possible to permute:
            { a0, a1, a2, b0, b1, b2, ... }
--- 4738,5032 ----
  for particular targets, or to specify that particular sets of targets
  are expected to fail some tests.
  
!  Effective-target keywords are defined in â€˜lib/target-supports.expâ€™ in
  the GCC testsuite, with the exception of those that are documented as
  being local to a particular test directory.
  
!  The â€˜effective targetâ€™ takes into account all of the compiler options
  with which the test will be compiled, including the multilib options.
! By convention, keywords ending in â€˜_nocacheâ€™ can also include options
! specified for the particular test in an earlier â€˜dg-optionsâ€™ or
! â€˜dg-add-optionsâ€™ directive.
  
  6.2.3.1 Endianness
  ..................
  
! â€˜beâ€™
       Target uses big-endian memory order for multi-byte and multi-word
       data.
  
! â€˜leâ€™
       Target uses little-endian memory order for multi-byte and
       multi-word data.
  
  6.2.3.2 Data type sizes
  .......................
  
! â€˜ilp32â€™
!      Target has 32-bit â€˜intâ€™, â€˜longâ€™, and pointers.
  
! â€˜lp64â€™
!      Target has 32-bit â€˜intâ€™, 64-bit â€˜longâ€™ and pointers.
  
! â€˜llp64â€™
!      Target has 32-bit â€˜intâ€™ and â€˜longâ€™, 64-bit â€˜long longâ€™ and
       pointers.
  
! â€˜double64â€™
!      Target has 64-bit â€˜doubleâ€™.
  
! â€˜double64plusâ€™
!      Target has â€˜doubleâ€™ that is 64 bits or longer.
  
! â€˜longdouble128â€™
!      Target has 128-bit â€˜long doubleâ€™.
  
! â€˜int32plusâ€™
!      Target has â€˜intâ€™ that is at 32 bits or longer.
  
! â€˜int16â€™
!      Target has â€˜intâ€™ that is 16 bits or shorter.
  
! â€˜longlong64â€™
!      Target has 64-bit â€˜long longâ€™.
  
! â€˜long_neq_intâ€™
!      Target has â€˜intâ€™ and â€˜longâ€™ with different sizes.
  
! â€˜short_eq_intâ€™
!      Target has â€˜shortâ€™ and â€˜intâ€™ with the same size.
  
! â€˜ptr_eq_shortâ€™
!      Target has pointers (â€˜void *â€™) and â€˜shortâ€™ with the same size.
  
! â€˜int_eq_floatâ€™
!      Target has â€˜intâ€™ and â€˜floatâ€™ with the same size.
  
! â€˜ptr_eq_longâ€™
!      Target has pointers (â€˜void *â€™) and â€˜longâ€™ with the same size.
  
! â€˜large_doubleâ€™
!      Target supports â€˜doubleâ€™ that is longer than â€˜floatâ€™.
  
! â€˜large_long_doubleâ€™
!      Target supports â€˜long doubleâ€™ that is longer than â€˜doubleâ€™.
  
! â€˜ptr32plusâ€™
       Target has pointers that are 32 bits or longer.
  
! â€˜size20plusâ€™
       Target has a 20-bit or larger address space, so supports at least
       16-bit array and structure sizes.
  
! â€˜size24plusâ€™
       Target has a 24-bit or larger address space, so supports at least
       20-bit array and structure sizes.
  
! â€˜size32plusâ€™
       Target has a 32-bit or larger address space, so supports at least
       24-bit array and structure sizes.
  
! â€˜4byte_wchar_tâ€™
!      Target has â€˜wchar_tâ€™ that is at least 4 bytes.
  
! â€˜floatNâ€™
!      Target has the â€˜_FloatNâ€™ type.
  
! â€˜floatNxâ€™
!      Target has the â€˜_FloatNxâ€™ type.
  
! â€˜floatN_runtimeâ€™
!      Target has the â€˜_FloatNâ€™ type, including runtime support for any
!      options added with â€˜dg-add-optionsâ€™.
  
! â€˜floatNx_runtimeâ€™
!      Target has the â€˜_FloatNxâ€™ type, including runtime support for any
!      options added with â€˜dg-add-optionsâ€™.
  
! â€˜floatn_nx_runtimeâ€™
       Target has runtime support for any options added with
!      â€˜dg-add-optionsâ€™ for any â€˜_FloatNâ€™ or â€˜_FloatNxâ€™ type.
  
! â€˜infâ€™
!      Target supports floating point infinite (â€˜infâ€™) for type â€˜doubleâ€™.
  
! â€˜inffâ€™
!      Target supports floating point infinite (â€˜infâ€™) for type â€˜floatâ€™.
  
  6.2.3.3 Fortran-specific attributes
  ...................................
  
! â€˜fortran_integer_16â€™
!      Target supports Fortran â€˜integerâ€™ that is 16 bytes or longer.
  
! â€˜fortran_real_10â€™
!      Target supports Fortran â€˜realâ€™ that is 10 bytes or longer.
  
! â€˜fortran_real_16â€™
!      Target supports Fortran â€˜realâ€™ that is 16 bytes or longer.
  
! â€˜fortran_large_intâ€™
!      Target supports Fortran â€˜integerâ€™ kinds larger than â€˜integer(8)â€™.
  
! â€˜fortran_large_realâ€™
!      Target supports Fortran â€˜realâ€™ kinds larger than â€˜real(8)â€™.
  
  6.2.3.4 Vector-specific attributes
  ..................................
  
! â€˜vect_align_stack_varsâ€™
       The target's ABI allows stack variables to be aligned to the
       preferred vector alignment.
  
! â€˜vect_avg_qiâ€™
       Target supports both signed and unsigned averaging operations on
       vectors of bytes.
  
! â€˜vect_mulhrs_hiâ€™
       Target supports both signed and unsigned
       multiply-high-with-round-and-scale operations on vectors of
       half-words.
  
! â€˜vect_sdiv_pow2_siâ€™
       Target supports signed division by constant power-of-2 operations
       on vectors of 4-byte integers.
  
! â€˜vect_conditionâ€™
       Target supports vector conditional operations.
  
! â€˜vect_cond_mixedâ€™
       Target supports vector conditional operations where comparison
       operands have different type from the value operands.
  
! â€˜vect_doubleâ€™
!      Target supports hardware vectors of â€˜doubleâ€™.
  
! â€˜vect_double_cond_arithâ€™
       Target supports conditional addition, subtraction, multiplication,
!      division, minimum and maximum on vectors of â€˜doubleâ€™, via the
!      â€˜cond_â€™ optabs.
  
! â€˜vect_element_align_preferredâ€™
       The target's preferred vector alignment is the same as the element
       alignment.
  
! â€˜vect_floatâ€™
!      Target supports hardware vectors of â€˜floatâ€™ when
!      â€˜-funsafe-math-optimizationsâ€™ is in effect.
  
! â€˜vect_float_strictâ€™
!      Target supports hardware vectors of â€˜floatâ€™ when
!      â€˜-funsafe-math-optimizationsâ€™ is not in effect.  This implies
!      â€˜vect_floatâ€™.
  
! â€˜vect_early_breakâ€™
       Target supports vectorization codegen of loops with early breaks.
       This requires an implementation of the cbranch optab for vectors.
  
! â€˜vect_early_break_hwâ€™
       Target supports hardware vectorization and running of loops with
       early breaks.  This requires an implementation of the cbranch optab
       for vectors.
  
! â€˜vect_intâ€™
!      Target supports hardware vectors of â€˜intâ€™.
  
! â€˜vect_longâ€™
!      Target supports hardware vectors of â€˜longâ€™.
  
! â€˜vect_long_longâ€™
!      Target supports hardware vectors of â€˜long longâ€™.
  
! â€˜vect_check_ptrsâ€™
!      Target supports the â€˜check_raw_ptrsâ€™ and â€˜check_war_ptrsâ€™ optabs on
       vectors.
  
! â€˜vect_fully_maskedâ€™
       Target supports fully-masked (also known as fully-predicated)
       loops, so that vector loops can handle partial as well as full
       vectors.
  
! â€˜vect_masked_loadâ€™
       Target supports vector masked loads.
  
! â€˜vect_masked_storeâ€™
       Target supports vector masked stores.
  
! â€˜vect_gather_load_ifnâ€™
       Target supports vector gather loads using internal functions
       (rather than via built-in functions or emulation).
  
! â€˜vect_scatter_storeâ€™
       Target supports vector scatter stores.
  
! â€˜vect_aligned_arraysâ€™
       Target aligns arrays to vector alignment boundary.
  
! â€˜vect_hw_misalignâ€™
       Target supports a vector misalign access.
  
! â€˜vect_no_alignâ€™
       Target does not support a vector alignment mechanism.
  
! â€˜vect_peeling_profitableâ€™
       Target might require to peel loops for alignment purposes.
  
! â€˜vect_no_int_min_maxâ€™
!      Target does not support a vector min and max instruction on â€˜intâ€™.
  
! â€˜vect_no_int_addâ€™
!      Target does not support a vector add instruction on â€˜intâ€™.
  
! â€˜vect_no_bitwiseâ€™
       Target does not support vector bitwise instructions.
  
! â€˜vect_bool_cmpâ€™
!      Target supports comparison of â€˜boolâ€™ vectors for at least one
       vector length.
  
! â€˜vect_char_addâ€™
!      Target supports addition of â€˜charâ€™ vectors for at least one vector
       length.
  
! â€˜vect_char_multâ€™
!      Target supports â€˜vector charâ€™ multiplication.
  
! â€˜vect_short_multâ€™
!      Target supports â€˜vector shortâ€™ multiplication.
  
! â€˜vect_int_multâ€™
!      Target supports â€˜vector intâ€™ multiplication.
  
! â€˜vect_long_multâ€™
!      Target supports 64 bit â€˜vector longâ€™ multiplication.
  
! â€˜vect_extract_even_oddâ€™
       Target supports vector even/odd element extraction.
  
! â€˜vect_extract_even_odd_wideâ€™
       Target supports vector even/odd element extraction of vectors with
!      elements â€˜SImodeâ€™ or larger.
  
! â€˜vect_interleaveâ€™
       Target supports vector interleaving.
  
! â€˜vect_stridedâ€™
       Target supports vector interleaving and extract even/odd.
  
! â€˜vect_strided_wideâ€™
       Target supports vector interleaving and extract even/odd for wide
       element types.
  
! â€˜vect_permâ€™
       Target supports vector permutation.
  
! â€˜vect_perm_byteâ€™
       Target supports permutation of vectors with 8-bit elements.
  
! â€˜vect_perm_shortâ€™
       Target supports permutation of vectors with 16-bit elements.
  
! â€˜vect_perm3_byteâ€™
       Target supports permutation of vectors with 8-bit elements, and for
       the default vector length it is possible to permute:
            { a0, a1, a2, b0, b1, b2, ... }
*************** specified for the particular test in an
*** 5038,6525 ****
       using only two-vector permutes, regardless of how long the sequence
       is.
  
! 'vect_perm3_int'
!      Like 'vect_perm3_byte', but for 32-bit elements.
  
! 'vect_perm3_short'
!      Like 'vect_perm3_byte', but for 16-bit elements.
  
! 'vect_shift'
       Target supports a hardware vector shift operation.
  
! 'vect_unaligned_possible'
       Target prefers vectors to have an alignment greater than element
       alignment, but also allows unaligned vector accesses in some
       circumstances.
  
! 'vect_variable_length'
       Target has variable-length vectors.
  
! 'vect64'
       Target supports vectors of 64 bits.
  
! 'vect32'
       Target supports vectors of 32 bits.
  
! 'vect_widen_sum_hi_to_si'
!      Target supports a vector widening summation of 'short' operands
!      into 'int' results, or can promote (unpack) from 'short' to 'int'.
  
! 'vect_widen_sum_qi_to_hi'
!      Target supports a vector widening summation of 'char' operands into
!      'short' results, or can promote (unpack) from 'char' to 'short'.
  
! 'vect_widen_sum_qi_to_si'
!      Target supports a vector widening summation of 'char' operands into
!      'int' results.
  
! 'vect_widen_mult_qi_to_hi'
!      Target supports a vector widening multiplication of 'char' operands
!      into 'short' results, or can promote (unpack) from 'char' to
!      'short' and perform non-widening multiplication of 'short'.
  
! 'vect_widen_mult_hi_to_si'
!      Target supports a vector widening multiplication of 'short'
!      operands into 'int' results, or can promote (unpack) from 'short'
!      to 'int' and perform non-widening multiplication of 'int'.
  
! 'vect_widen_mult_si_to_di_pattern'
!      Target supports a vector widening multiplication of 'int' operands
!      into 'long' results.
  
! 'vect_sdot_qi'
!      Target supports a vector dot-product of 'signed char'.
  
! 'vect_udot_qi'
!      Target supports a vector dot-product of 'unsigned char'.
  
! 'vect_usdot_qi'
       Target supports a vector dot-product where one operand of the
!      multiply is 'signed char' and the other of 'unsigned char'.
  
! 'vect_sdot_hi'
!      Target supports a vector dot-product of 'signed short'.
  
! 'vect_udot_hi'
!      Target supports a vector dot-product of 'unsigned short'.
  
! 'vect_pack_trunc'
!      Target supports a vector demotion (packing) of 'short' to 'char'
!      and from 'int' to 'short' using modulo arithmetic.
  
! 'vect_unpack'
!      Target supports a vector promotion (unpacking) of 'char' to 'short'
!      and from 'char' to 'int'.
  
! 'vect_intfloat_cvt'
!      Target supports conversion from 'signed int' to 'float'.
  
! 'vect_uintfloat_cvt'
!      Target supports conversion from 'unsigned int' to 'float'.
  
! 'vect_floatint_cvt'
!      Target supports conversion from 'float' to 'signed int'.
  
! 'vect_floatuint_cvt'
!      Target supports conversion from 'float' to 'unsigned int'.
  
! 'vect_intdouble_cvt'
!      Target supports conversion from 'signed int' to 'double'.
  
! 'vect_doubleint_cvt'
!      Target supports conversion from 'double' to 'signed int'.
  
! 'vect_max_reduc'
       Target supports max reduction for vectors.
  
! 'vect_sizes_16B_8B'
       Target supports 16- and 8-bytes vectors.
  
! 'vect_sizes_32B_16B'
       Target supports 32- and 16-bytes vectors.
  
! 'vect_logical_reduc'
       Target supports AND, IOR and XOR reduction on vectors.
  
! 'vect_fold_extract_last'
!      Target supports the 'fold_extract_last' optab.
  
! 'vect_len_load_store'
!      Target supports the 'len_load' and 'len_store' optabs.
  
! 'vect_partial_vectors_usage_1'
       Target supports loop vectorization with partial vectors and
!      'vect-partial-vector-usage' is set to 1.
  
! 'vect_partial_vectors_usage_2'
       Target supports loop vectorization with partial vectors and
!      'vect-partial-vector-usage' is set to 2.
  
! 'vect_partial_vectors'
       Target supports loop vectorization with partial vectors and
!      'vect-partial-vector-usage' is nonzero.
  
! 'vect_slp_v2qi_store_align'
       Target supports vectorization of 2-byte char stores with 2-byte
!      aligned address at plain '-O2'.
  
! 'vect_slp_v4qi_store_align'
       Target supports vectorization of 4-byte char stores with 4-byte
!      aligned address at plain '-O2'.
  
! 'vect_slp_v4qi_store_unalign'
       Target supports vectorization of 4-byte char stores with unaligned
!      address at plain '-O2'.
  
! 'struct_4char_block_move'
       Target supports block move for 8-byte aligned 4-byte size struct
       initialization.
  
! 'vect_slp_v4qi_store_unalign_1'
       Target supports vectorization of 4-byte char stores with unaligned
!      address or store them with constant pool at plain '-O2'.
  
! 'struct_8char_block_move'
       Target supports block move for 8-byte aligned 8-byte size struct
       initialization.
  
! 'vect_slp_v8qi_store_unalign_1'
       Target supports vectorization of 8-byte char stores with unaligned
!      address or store them with constant pool at plain '-O2'.
  
! 'struct_16char_block_move'
       Target supports block move for 8-byte aligned 16-byte size struct
       initialization.
  
! 'vect_slp_v16qi_store_unalign_1'
       Target supports vectorization of 16-byte char stores with unaligned
!      address or store them with constant pool at plain '-O2'.
  
! 'vect_slp_v2hi_store_align'
       Target supports vectorization of 4-byte short stores with 4-byte
!      aligned addressat plain '-O2'.
  
! 'vect_slp_v2hi_store_unalign'
       Target supports vectorization of 4-byte short stores with unaligned
!      address at plain '-O2'.
  
! 'vect_slp_v4hi_store_unalign'
       Target supports vectorization of 8-byte short stores with unaligned
!      address at plain '-O2'.
  
! 'vect_slp_v2si_store_align'
       Target supports vectorization of 8-byte int stores with 8-byte
!      aligned address at plain '-O2'.
  
! 'vect_slp_v4si_store_unalign'
       Target supports vectorization of 16-byte int stores with unaligned
!      address at plain '-O2'.
  
  6.2.3.5 Thread Local Storage attributes
  .......................................
  
! 'tls'
       Target supports thread-local storage.
  
! 'tls_native'
       Target supports native (rather than emulated) thread-local storage.
  
! 'tls_runtime'
       Test system supports executing TLS executables.
  
  6.2.3.6 Decimal floating point attributes
  .........................................
  
! 'dfp'
       Targets supports compiling decimal floating point extension to C.
  
! 'dfp_nocache'
       Including the options used to compile this particular test, the
       target supports compiling decimal floating point extension to C.
  
! 'dfprt'
       Test system can execute decimal floating point tests.
  
! 'dfprt_nocache'
       Including the options used to compile this particular test, the
       test system can execute decimal floating point tests.
  
! 'hard_dfp'
       Target generates decimal floating point instructions with current
       options.
  
! 'dfp_bid'
       Target uses the BID format for decimal floating point.
  
  6.2.3.7 ARM-specific attributes
  ...............................
  
! 'arm32'
       ARM target generates 32-bit code.
  
! 'arm_little_endian'
       ARM target that generates little-endian code.
  
! 'arm_eabi'
       ARM target adheres to the ABI for the ARM Architecture.
  
! 'arm_fp_ok'
!      ARM target defines '__ARM_FP' using '-mfloat-abi=softfp' or
       equivalent options.  Some multilibs may be incompatible with these
       options.
  
! 'arm_fp_dp_ok'
!      ARM target defines '__ARM_FP' with double-precision support using
!      '-mfloat-abi=softfp' or equivalent options.  Some multilibs may be
       incompatible with these options.
  
! 'arm_hf_eabi'
       ARM target adheres to the VFP and Advanced SIMD Register Arguments
       variant of the ABI for the ARM Architecture (as selected with
!      '-mfloat-abi=hard').
  
! 'arm_softfloat'
       ARM target uses emulated floating point operations.
  
! 'arm_hard_vfp_ok'
!      ARM target supports '-mfpu=vfp -mfloat-abi=hard'.  Some multilibs
       may be incompatible with these options.
  
! 'arm_iwmmxt_ok'
!      ARM target supports '-mcpu=iwmmxt'.  Some multilibs may be
       incompatible with this option.
  
! 'arm_neon'
       ARM target supports generating NEON instructions.
  
! 'arm_tune_string_ops_prefer_neon'
       Test CPU tune supports inlining string operations with NEON
       instructions.
  
! 'arm_neon_hw'
       Test system supports executing NEON instructions.
  
! 'arm_neonv2_hw'
       Test system supports executing NEON v2 instructions.
  
! 'arm_neon_ok'
!      ARM Target supports '-mfpu=neon -mfloat-abi=softfp' or compatible
       options.  Some multilibs may be incompatible with these options.
  
! 'arm_neon_ok_no_float_abi'
!      ARM Target supports NEON with '-mfpu=neon', but without any
       -mfloat-abi= option.  Some multilibs may be incompatible with this
       option.
  
! 'arm_neonv2_ok'
!      ARM Target supports '-mfpu=neon-vfpv4 -mfloat-abi=softfp' or
       compatible options.  Some multilibs may be incompatible with these
       options.
  
! 'arm_fp16_ok'
       Target supports options to generate VFP half-precision
       floating-point instructions.  Some multilibs may be incompatible
       with these options.  This test is valid for ARM only.
  
! 'arm_fp16_hw'
       Target supports executing VFP half-precision floating-point
       instructions.  This test is valid for ARM only.
  
! 'arm_neon_fp16_ok'
!      ARM Target supports '-mfpu=neon-fp16 -mfloat-abi=softfp' or
!      compatible options, including '-mfp16-format=ieee' if necessary to
!      obtain the '__fp16' type.  Some multilibs may be incompatible with
       these options.
  
! 'arm_neon_fp16_hw'
       Test system supports executing Neon half-precision float
       instructions.  (Implies previous.)
  
! 'arm_fp16_alternative_ok'
       ARM target supports the ARM FP16 alternative format.  Some
       multilibs may be incompatible with the options needed.
  
! 'arm_fp16_none_ok'
       ARM target supports specifying none as the ARM FP16 format.
  
! 'arm_thumb1_ok'
!      ARM target generates Thumb-1 code for '-mthumb'.
  
! 'arm_thumb2_ok'
!      ARM target generates Thumb-2 code for '-mthumb'.
  
! 'arm_nothumb'
       ARM target that is not using Thumb.
  
! 'arm_vfp_ok'
!      ARM target supports '-mfpu=vfp -mfloat-abi=softfp'.  Some multilibs
       may be incompatible with these options.
  
! 'arm_vfp3_ok'
!      ARM target supports '-mfpu=vfp3 -mfloat-abi=softfp'.  Some
       multilibs may be incompatible with these options.
  
! 'arm_arch_v8a_hard_ok'
!      The compiler is targeting 'arm*-*-*' and can compile and assemble
!      code using the options '-march=armv8-a -mfpu=neon-fp-armv8
!      -mfloat-abi=hard'.  This is not enough to guarantee that linking
       works.
  
! 'arm_arch_v8a_hard_multilib'
!      The compiler is targeting 'arm*-*-*' and can build programs using
!      the options '-march=armv8-a -mfpu=neon-fp-armv8 -mfloat-abi=hard'.
       The target can also run the resulting binaries.
  
! 'arm_v8_vfp_ok'
!      ARM target supports '-mfpu=fp-armv8 -mfloat-abi=softfp'.  Some
       multilibs may be incompatible with these options.
  
! 'arm_v8_neon_ok'
!      ARM target supports '-mfpu=neon-fp-armv8 -mfloat-abi=softfp'.  Some
       multilibs may be incompatible with these options.
  
! 'arm_v8_1a_neon_ok'
       ARM target supports options to generate ARMv8.1-A Adv.SIMD
       instructions.  Some multilibs may be incompatible with these
       options.
  
! 'arm_v8_1a_neon_hw'
       ARM target supports executing ARMv8.1-A Adv.SIMD instructions.
       Some multilibs may be incompatible with the options needed.
       Implies arm_v8_1a_neon_ok.
  
! 'arm_acq_rel'
       ARM target supports acquire-release instructions.
  
! 'arm_v8_2a_fp16_scalar_ok'
       ARM target supports options to generate instructions for ARMv8.2-A
       and scalar instructions from the FP16 extension.  Some multilibs
       may be incompatible with these options.
  
! 'arm_v8_2a_fp16_scalar_hw'
       ARM target supports executing instructions for ARMv8.2-A and scalar
       instructions from the FP16 extension.  Some multilibs may be
       incompatible with these options.  Implies arm_v8_2a_fp16_neon_ok.
  
! 'arm_v8_2a_fp16_neon_ok'
       ARM target supports options to generate instructions from ARMv8.2-A
       with the FP16 extension.  Some multilibs may be incompatible with
       these options.  Implies arm_v8_2a_fp16_scalar_ok.
  
! 'arm_v8_2a_fp16_neon_hw'
       ARM target supports executing instructions from ARMv8.2-A with the
       FP16 extension.  Some multilibs may be incompatible with these
       options.  Implies arm_v8_2a_fp16_neon_ok and
       arm_v8_2a_fp16_scalar_hw.
  
! 'arm_v8_2a_dotprod_neon_ok'
       ARM target supports options to generate instructions from ARMv8.2-A
       with the Dot Product extension.  Some multilibs may be incompatible
       with these options.
  
! 'arm_v8_2a_dotprod_neon_hw'
       ARM target supports executing instructions from ARMv8.2-A with the
       Dot Product extension.  Some multilibs may be incompatible with
       these options.  Implies arm_v8_2a_dotprod_neon_ok.
  
! 'arm_v8_2a_i8mm_neon_hw'
       ARM target supports executing instructions from ARMv8.2-A with the
       8-bit Matrix Multiply extension.  Some multilibs may be
       incompatible with these options.  Implies arm_v8_2a_i8mm_ok.
  
! 'arm_fp16fml_neon_ok'
!      ARM target supports extensions to generate the 'VFMAL' and 'VFMLS'
       half-precision floating-point instructions available from ARMv8.2-A
       and onwards.  Some multilibs may be incompatible with these
       options.
  
! 'arm_v8_2a_bf16_neon_ok'
       ARM target supports options to generate instructions from ARMv8.2-A
       with the BFloat16 extension (bf16).  Some multilibs may be
       incompatible with these options.
  
! 'arm_v8_2a_i8mm_ok'
       ARM target supports options to generate instructions from ARMv8.2-A
       with the 8-Bit Integer Matrix Multiply extension (i8mm).  Some
       multilibs may be incompatible with these options.
  
! 'arm_v8_1m_mve_ok'
       ARM target supports options to generate instructions from ARMv8.1-M
       with the M-Profile Vector Extension (MVE). Some multilibs may be
       incompatible with these options.
  
! 'arm_v8_1m_mve_fp_ok'
       ARM target supports options to generate instructions from ARMv8.1-M
       with the Half-precision floating-point instructions (HP),
       Floating-point Extension (FP) along with M-Profile Vector Extension
       (MVE). Some multilibs may be incompatible with these options.
  
! 'arm_mve_hw'
       Test system supports executing MVE instructions.
  
! 'arm_v8m_main_cde'
       ARM target supports options to generate instructions from ARMv8-M
       with the Custom Datapath Extension (CDE). Some multilibs may be
       incompatible with these options.
  
! 'arm_v8m_main_cde_fp'
       ARM target supports options to generate instructions from ARMv8-M
       with the Custom Datapath Extension (CDE) and floating-point (VFP).
       Some multilibs may be incompatible with these options.
  
! 'arm_v8_1m_main_cde_mve'
       Arm target supports options to generate instructions from Armv8.1-M
       with the Custom Datapath Extension (CDE) and M-Profile Vector
       Extension (MVE). Some multilibs may be incompatible with these
       options.
  
! 'arm_v8_1m_main_cde_mve_fp'
       Arm target supports options to generate instructions from Armv8.1-M
       with the Custom Datapath Extension (CDE) and M-Profile Vector
       Extension (MVE) with floating-point support.  Some multilibs may be
       incompatible with these options.
  
! 'arm_pacbti_hw'
       Test system supports executing Pointer Authentication and Branch
       Target Identification instructions.
  
! 'arm_prefer_ldrd_strd'
!      ARM target prefers 'LDRD' and 'STRD' instructions over 'LDM' and
!      'STM' instructions.
  
! 'arm_thumb1_movt_ok'
!      ARM target generates Thumb-1 code for '-mthumb' with 'MOVW' and
!      'MOVT' instructions available.
  
! 'arm_thumb1_cbz_ok'
!      ARM target generates Thumb-1 code for '-mthumb' with 'CBZ' and
!      'CBNZ' instructions available.
  
! 'arm_divmod_simode'
       ARM target for which divmod transform is disabled, if it supports
       hardware div instruction.
  
! 'arm_cmse_ok'
       ARM target supports ARMv8-M Security Extensions, enabled by the
!      '-mcmse' option.
  
! 'arm_cmse_hw'
       Test system supports executing CMSE instructions.
  
! 'arm_coproc1_ok'
!      ARM target supports the following coprocessor instructions: 'CDP',
!      'LDC', 'STC', 'MCR' and 'MRC'.
  
! 'arm_coproc2_ok'
       ARM target supports all the coprocessor instructions also listed as
       supported in *note arm_coproc1_ok:: in addition to the following:
!      'CDP2', 'LDC2', 'LDC2l', 'STC2', 'STC2l', 'MCR2' and 'MRC2'.
  
! 'arm_coproc3_ok'
       ARM target supports all the coprocessor instructions also listed as
       supported in *note arm_coproc2_ok:: in addition the following:
!      'MCRR' and 'MRRC'.
  
! 'arm_coproc4_ok'
       ARM target supports all the coprocessor instructions also listed as
       supported in *note arm_coproc3_ok:: in addition the following:
!      'MCRR2' and 'MRRC2'.
  
! 'arm_simd32_ok'
       ARM Target supports options suitable for accessing the SIMD32
!      intrinsics from 'arm_acle.h'.  Some multilibs may be incompatible
       with these options.
  
! 'arm_sat_ok'
       ARM Target supports options suitable for accessing the saturation
!      intrinsics from 'arm_acle.h'.  Some multilibs may be incompatible
       with these options.
  
! 'arm_dsp_ok'
       ARM Target supports options suitable for accessing the DSP
!      intrinsics from 'arm_acle.h'.  Some multilibs may be incompatible
       with these options.
  
! 'arm_softfp_ok'
!      ARM target supports the '-mfloat-abi=softfp' option.
  
! 'arm_hard_ok'
!      ARM target supports the '-mfloat-abi=hard' option.
  
! 'arm_mve'
       ARM target supports generating MVE instructions.
  
! 'arm_v8_1_lob_ok'
       ARM Target supports executing the Armv8.1-M Mainline Low Overhead
!      Loop instructions 'DLS' and 'LE'.  Some multilibs may be
       incompatible with these options.
  
! 'arm_thumb2_no_arm_v8_1_lob'
       ARM target where Thumb-2 is used without options but does not
       support executing the Armv8.1-M Mainline Low Overhead Loop
!      instructions 'DLS' and 'LE'.
  
! 'arm_thumb2_ok_no_arm_v8_1_lob'
!      ARM target generates Thumb-2 code for '-mthumb' but does not
       support executing the Armv8.1-M Mainline Low Overhead Loop
!      instructions 'DLS' and 'LE'.
  
! 'mbranch_protection_ok'
!      ARM target supporting '-mbranch-protection=standard'.
  
! 'arm_pacbti_hw'
       Test system supports for executing non nop pacbti instructions.
  
  6.2.3.8 AArch64-specific attributes
  ...................................
  
! 'aarch64_asm_<ext>_ok'
!      AArch64 assembler supports the architecture extension 'ext' via the
!      '.arch_extension' pseudo-op.
! 'aarch64_tiny'
       AArch64 target which generates instruction sequences for tiny
       memory model.
! 'aarch64_small'
       AArch64 target which generates instruction sequences for small
       memory model.
! 'aarch64_large'
       AArch64 target which generates instruction sequences for large
       memory model.
! 'aarch64_little_endian'
       AArch64 target which generates instruction sequences for little
       endian.
! 'aarch64_big_endian'
       AArch64 target which generates instruction sequences for big
       endian.
! 'aarch64_small_fpic'
       Binutils installed on test system supports relocation types
       required by -fpic for AArch64 small memory model.
! 'aarch64_sme'
       AArch64 target that generates instructions for SME.
! 'aarch64_sme2'
       AArch64 target that generates instructions for SME2.
! 'aarch64_sve_hw'
       AArch64 target that is able to generate and execute SVE code
       (regardless of whether it does so by default).
! 'aarch64_sve128_hw'
! 'aarch64_sve256_hw'
! 'aarch64_sve512_hw'
! 'aarch64_sve1024_hw'
! 'aarch64_sve2048_hw'
!      Like 'aarch64_sve_hw', but also test for an exact hardware vector
       length.
! 'aarch64_sve2_hw'
       AArch64 target that is able to generate and execute SVE2 code
       (regardless of whether it does so by default).
! 'aarch64_sve2p1_hw'
       AArch64 target that is able to generate and execute SVE2.1 code
       (regardless of whether it does so by default).
  
! 'aarch64_fjcvtzs_hw'
       AArch64 target that is able to generate and execute armv8.3-a
       FJCVTZS instruction.
  
  6.2.3.9 LoongArch specific attributes
  .....................................
  
! 'loongarch_sx'
       LoongArch target that generates instructions for SX.
  
! 'loongarch_asx'
       LoongArch target that generates instructions for ASX.
  
! 'loongarch_sx_hw'
       LoongArch target that is able to generate and execute SX code.
  
! 'loongarch_asx_hw'
       LoongArch target that is able to generate and execute ASX code.
  
! 'loongarch_call36_support'
       LoongArch binutils supports call36 relocation.
  
  6.2.3.10 MIPS-specific attributes
  .................................
  
! 'mips64'
       MIPS target supports 64-bit instructions.
  
! 'nomips16'
       MIPS target does not produce MIPS16 code.
  
! 'mips16_attribute'
       MIPS target can generate MIPS16 code.
  
! 'mips_loongson'
       MIPS target is a Loongson-2E or -2F target using an ABI that
       supports the Loongson vector modes.
  
! 'mips_msa'
!      MIPS target supports '-mmsa', MIPS SIMD Architecture (MSA).
  
! 'mips_newabi_large_long_double'
!      MIPS target supports 'long double' larger than 'double' when using
       the new ABI.
  
! 'mpaired_single'
!      MIPS target supports '-mpaired-single'.
  
  6.2.3.11 MSP430-specific attributes
  ...................................
  
! 'msp430_small'
!      MSP430 target has the small memory model enabled ('-msmall').
  
! 'msp430_large'
!      MSP430 target has the large memory model enabled ('-mlarge').
  
  6.2.3.12 nvptx-specific attributes
  ..................................
  
! 'nvptx_default_ptx_isa_version_at_least_6_0'
       nvptx code by default compiles for at least PTX ISA version 6.0.
  
! 'nvptx_runtime_alias_ptx'
       The nvptx runtime environment supports the PTX ISA directive
!      '.alias'.
  
! 'nvptx_runtime_alloca_ptx'
       The nvptx runtime environment supports PTX 'alloca'.
  
! 'nvptx_softstack'
!      nvptx '-msoft-stack' is enabled.
  
  6.2.3.13 PowerPC-specific attributes
  ....................................
  
! 'dfp_hw'
       PowerPC target supports executing hardware DFP instructions.
  
! 'p8vector_hw'
       PowerPC target supports executing VSX instructions (ISA 2.07).
  
! 'powerpc64'
       Test system supports executing 64-bit instructions.
  
! 'powerpc_altivec'
       PowerPC target supports AltiVec.
  
! 'powerpc_altivec_ok'
!      PowerPC target supports '-maltivec'.
  
! 'powerpc_eabi_ok'
!      PowerPC target supports '-meabi'.
  
! 'powerpc_elfv2'
!      PowerPC target supports '-mabi=elfv2'.
  
! 'powerpc_fprs'
       PowerPC target supports floating-point registers.
  
! 'powerpc_hard_double'
       PowerPC target supports hardware double-precision floating-point.
  
! 'powerpc_htm_ok'
!      PowerPC target supports '-mhtm'
  
! 'powerpc_popcntb_ok'
!      PowerPC target supports the 'popcntb' instruction, indicating that
!      this target supports '-mcpu=power5'.
  
! 'powerpc_ppu_ok'
!      PowerPC target supports '-mcpu=cell'.
  
! 'powerpc_spe'
       PowerPC target supports PowerPC SPE.
  
! 'powerpc_spe_nocache'
       Including the options used to compile this particular test, the
       PowerPC target supports PowerPC SPE.
  
! 'powerpc_spu'
       PowerPC target supports PowerPC SPU.
  
! 'powerpc_vsx_ok'
!      PowerPC target supports '-mvsx'.
  
! 'powerpc_405_nocache'
       Including the options used to compile this particular test, the
       PowerPC target supports PowerPC 405.
  
! 'ppc_recip_hw'
       PowerPC target supports executing reciprocal estimate instructions.
  
! 'vmx_hw'
       PowerPC target supports executing AltiVec instructions.
  
! 'vsx_hw'
       PowerPC target supports executing VSX instructions (ISA 2.06).
  
! 'has_arch_pwr5'
!      PowerPC target pre-defines macro _ARCH_PWR5 which means the '-mcpu'
       setting is Power5 or later.
  
! 'has_arch_pwr6'
!      PowerPC target pre-defines macro _ARCH_PWR6 which means the '-mcpu'
       setting is Power6 or later.
  
! 'has_arch_pwr7'
!      PowerPC target pre-defines macro _ARCH_PWR7 which means the '-mcpu'
       setting is Power7 or later.
  
! 'has_arch_pwr8'
!      PowerPC target pre-defines macro _ARCH_PWR8 which means the '-mcpu'
       setting is Power8 or later.
  
! 'has_arch_pwr9'
!      PowerPC target pre-defines macro _ARCH_PWR9 which means the '-mcpu'
       setting is Power9 or later.
  
  6.2.3.14 RISC-V specific attributes
  ...................................
  
! 'rv32'
       Test system has an integer register width of 32 bits.
  
! 'rv64'
       Test system has an integer register width of 64 bits.
  
! 'riscv_a'
       Test target architecture has support for the A extension.
  
! 'riscv_zaamo'
       Test target architecture has support for the zaamo extension.
  
! 'riscv_zabha'
       Test target architecture has support for the zabha extension.
  
! 'riscv_zacas'
       Test target architecture has support for the zacas extension.
  
! 'riscv_zalrsc'
       Test target architecture has support for the zalrsc extension.
  
! 'riscv_zbc'
       Test target architecture has support for the zbc extension.
  
! 'riscv_zbc_ok'
       Test target architecture can execute code with zbc extension
       enabled.
  
! 'riscv_zbkb'
       Test target architecture has support for the zbkb extension.
  
! 'riscv_zbkb_ok'
       Test target architecture can execute code with zbkb extension
       enabled.
  
! 'riscv_zbkc'
       Test target architecture has support for the zbkc extension.
  
! 'riscv_zbkc_ok'
       Test target architecture can execute code with zbkc extension
       enabled.
  
! 'riscv_ztso'
       Test target architecture has support for the ztso extension.
  
  6.2.3.15 CORE-V specific attributes
  ...................................
  
! 'cv_mac'
       Test system has support for the CORE-V MAC extension.
  
! 'cv_alu'
       Test system has support for the CORE-V ALU extension.
  
! 'cv_elw'
       Test system has support for the CORE-V ELW extension.
  
! 'cv_simd'
       Test system has support for the CORE-V SIMD extension.
  
! 'cv_bi'
       Test system has support for the CORE-V BI extension.
  
  6.2.3.16 Other hardware attributes
  ..................................
  
! 'autoincdec'
       Target supports autoincrement/decrement addressing.
  
! 'avx'
!      Target supports compiling 'avx' instructions.
  
! 'avx_runtime'
!      Target supports the execution of 'avx' instructions.
  
! 'avx10.1-256'
!      Target supports the execution of 'avx10.1-256' instructions.
  
! 'avx10.1'
!      Target supports the execution of 'avx10.1' instructions.
  
! 'avx10.1-512'
!      Target supports the execution of 'avx10.1-512' instructions.
  
! 'avx10.2'
!      Target supports the execution of 'avx10.2' instructions.
  
! 'avx2'
!      Target supports compiling 'avx2' instructions.
  
! 'avx2_runtime'
!      Target supports the execution of 'avx2' instructions.
  
! 'avxvnni'
!      Target supports the execution of 'avxvnni' instructions.
  
! 'avx512f'
!      Target supports compiling 'avx512f' instructions.
  
! 'avx512f_runtime'
!      Target supports the execution of 'avx512f' instructions.
  
! 'avx512vp2intersect'
!      Target supports the execution of 'avx512vp2intersect' instructions.
  
! 'avxifma'
!      Target supports the execution of 'avxifma' instructions.
  
! 'avxneconvert'
!      Target supports the execution of 'avxneconvert' instructions.
  
! 'avxvnniint8'
!      Target supports the execution of 'avxvnniint8' instructions.
  
! 'avxvnniint16'
!      Target supports the execution of 'avxvnniint16' instructions.
  
! 'amx_tile'
!      Target supports the execution of 'amx-tile' instructions.
  
! 'amx_int8'
!      Target supports the execution of 'amx-int8' instructions.
  
! 'amx_bf16'
!      Target supports the execution of 'amx-bf16' instructions.
  
! 'amx_avx512'
!      Target supports the execution of 'amx-avx512' instructions.
  
! 'amx_complex'
!      Target supports the execution of 'amx-complex' instructions.
  
! 'amx_fp16'
!      Target supports the execution of 'amx-fp16' instructions.
  
! 'amx_movrs'
!      Target supports the execution of 'amx-movrs' instructions.
  
! 'amx_tf32'
!      Target supports the execution of 'amx-tf32' instructions.
  
! 'amx_transpose'
!      Target supports the execution of 'amx-transpose' instructions.
  
! 'amx_fp8'
!      Target supports the execution of 'amx-fp8' instructions.
  
! 'cell_hw'
       Test system can execute AltiVec and Cell PPU instructions.
  
! 'clz'
       Target supports a clz optab on int.
  
! 'clzl'
       Target supports a clz optab on long.
  
! 'clzll'
       Target supports a clz optab on long long.
  
! 'ctz'
       Target supports a ctz optab on int.
  
! 'ctzl'
       Target supports a ctz optab on long.
  
! 'ctzll'
       Target supports a ctz optab on long long.
  
! 'cmpccxadd'
!      Target supports the execution of 'cmpccxadd' instructions.
  
! 'coldfire_fpu'
       Target uses a ColdFire FPU.
  
! 'divmod'
       Target supporting hardware divmod insn or divmod libcall.
  
! 'divmod_simode'
       Target supporting hardware divmod insn or divmod libcall for
       SImode.
  
! 'hard_float'
       Target supports FPU instructions.
  
! 'movrs'
!      Target supports the execution of 'movrs' instructions.
  
! 'non_strict_align'
       Target does not require strict alignment.
  
! 'opt_mstrict_align'
!      Target supports '-mstrict-align' and '-mno-strict-align'.
  
! 'pie_copyreloc'
       The x86-64 target linker supports PIE with copy reloc.
  
! 'popcount'
       Target supports a popcount optab on int.
  
! 'popcountl'
       Target supports a popcount optab on long.
  
! 'popcountll'
       Target supports a popcount optab on long long.
  
! 'prefetchi'
!      Target supports the execution of 'prefetchi' instructions.
  
! 'raoint'
!      Target supports the execution of 'raoint' instructions.
  
! 'rdrand'
!      Target supports x86 'rdrand' instruction.
  
! 'sha512'
!      Target supports the execution of 'sha512' instructions.
  
! 'sm3'
!      Target supports the execution of 'sm3' instructions.
  
! 'sm4'
!      Target supports the execution of 'sm4' instructions.
  
! 'sqrt_insn'
       Target has a square root instruction that the compiler can
       generate.
  
! 'sse'
!      Target supports compiling 'sse' instructions.
  
! 'sse_runtime'
!      Target supports the execution of 'sse' instructions.
  
! 'sse2'
!      Target supports compiling 'sse2' instructions.
  
! 'sse2_runtime'
!      Target supports the execution of 'sse2' instructions.
  
! 'sync_char_short'
!      Target supports atomic operations on 'char' and 'short'.
  
! 'sync_int_long'
!      Target supports atomic operations on 'int' and 'long'.
  
! 'ultrasparc_hw'
       Test environment appears to run executables on a simulator that
!      accepts only 'EM_SPARC' executables and chokes on 'EM_SPARC32PLUS'
!      or 'EM_SPARCV9' executables.
  
! 'user_msr'
!      Target supports the execution of 'user_msr' instructions.
  
! 'vect_cmdline_needed'
       Target requires a command line argument to enable a SIMD
       instruction set.
  
! 'x86'
       Target is ia32 or x86_64.
  
! 'xorsign'
       Target supports the xorsign optab expansion.
  
! 'ifn_copysign'
       Target supports the copysign optab expansion of float and double
       for both scalar and vector modes.
  
  6.2.3.17 Environment attributes
  ...............................
  
! 'alarm'
!      Target supports 'alarm'.
  
! 'c'
       The language for the compiler under test is C.
  
! 'c++'
       The language for the compiler under test is C++.
  
! 'c99_runtime'
       Target provides a full C99 runtime.
  
! 'cfi'
       Target supports DWARF CFI directives.
  
! 'correct_iso_cpp_string_wchar_protos'
!      Target 'string.h' and 'wchar.h' headers provide C++ required
!      overloads for 'strchr' etc.  functions.
  
! 'd_runtime'
       Target provides the D runtime.
  
! 'd_runtime_has_std_library'
       Target provides the D standard library (Phobos).
  
! 'dummy_wcsftime'
!      Target uses a dummy 'wcsftime' function that always returns zero.
  
! 'fd_truncate'
       Target can truncate a file from a file descriptor, as used by
!      'libgfortran/io/unix.c:fd_truncate'; i.e. 'ftruncate' or 'chsize'.
  
! 'fenv'
!      Target provides 'fenv.h' include file.
  
! 'fenv_exceptions'
!      Target supports 'fenv.h' with all the standard IEEE exceptions and
       floating-point exceptions are raised by arithmetic operations.
  
! 'fenv_exceptions_dfp'
!      Target supports 'fenv.h' with all the standard IEEE exceptions and
       floating-point exceptions are raised by arithmetic operations for
       decimal floating point.
  
! 'fileio'
!      Target offers such file I/O library functions as 'fopen', 'fclose',
!      'tmpnam', and 'remove'.  This is a link-time requirement for the
       presence of the functions in the library; even if they fail at
       runtime, the requirement is still regarded as satisfied.
  
! 'freestanding'
!      Target is 'freestanding' as defined in section 4 of the C99
       standard.  Effectively, it is a target which supports no extra
       headers or libraries other than what is considered essential.
  
! 'hostedlib'
!      Target is not 'freestanding', and, if the language is C++,
!      'libstdc++''s hosted mode is not disabled.
  
! 'gettimeofday'
!      Target supports 'gettimeofday'.
  
! 'init_priority'
       Target supports constructors with initialization priority
       arguments.
  
! 'inttypes_types'
!      Target has the basic signed and unsigned types in 'inttypes.h'.
       This is for tests that GCC's notions of these types agree with
!      those in the header, as some systems have only 'inttypes.h'.
  
! 'lax_strtofp'
       Target might have errors of a few ULP in string to floating-point
       conversion functions and overflow is not always detected correctly
       by those functions.
  
! 'mempcpy'
!      Target provides 'mempcpy' function.
  
! 'mmap'
!      Target supports 'mmap'.
  
! 'newlib'
       Target supports Newlib.
  
! 'newlib_nano_io'
!      GCC was configured with '--enable-newlib-nano-formatted-io', which
       reduces the code size of Newlib formatted I/O functions.
  
! 'posix_memalign'
!      Target supports 'posix_memalign'.
  
! 'pow10'
!      Target provides 'pow10' function.
  
! 'pthread'
!      Target can compile using 'pthread.h' with no errors or warnings.
  
! 'pthread_h'
!      Target has 'pthread.h'.
  
! 'sockets'
!      Target can compile using 'sys/socket.h' with no errors or warnings.
  
! 'run_expensive_tests'
       Expensive testcases (usually those that consume excessive amounts
       of CPU time) should be run on this target.  This can be enabled by
!      setting the 'GCC_TEST_RUN_EXPENSIVE' environment variable to a
       non-empty string.
  
! 'simulator'
       Test system runs executables on a simulator (i.e. slowly) rather
       than hardware (i.e. fast).
  
! 'signal'
!      Target has 'signal.h'.
  
! 'stabs'
       Target supports the stabs debugging format.
  
! 'stdint_types'
!      Target has the basic signed and unsigned C types in 'stdint.h'.
!      This will be obsolete when GCC ensures a working 'stdint.h' for all
       targets.
  
! 'stdint_types_mbig_endian'
!      Target accepts the option '-mbig-endian' and 'stdint.h' can be
!      included without error when '-mbig-endian' is passed.
  
! 'stpcpy'
!      Target provides 'stpcpy' function.
  
! 'strndup'
!      Target provides 'strndup' function.
  
! 'sysconf'
!      Target supports 'sysconf'.
  
! 'trampolines'
       Target supports trampolines.
  
! 'two_plus_gigs'
       Target supports linking programs with 2+GiB of data.
  
! 'uclibc'
       Target supports uClibc.
  
! 'unwrapped'
       Target does not use a status wrapper.
  
! 'vxworks_kernel'
       Target is a VxWorks kernel.
  
! 'vxworks_rtp'
       Target is a VxWorks RTP.
  
! 'wchar'
       Target supports wide characters.
  
! 'weak_undefined'
       Target supports weak undefined symbols
  
  6.2.3.18 Other attributes
  .........................
  
! 'R_flag_in_section'
       Target supports the 'R' flag in .section directive in assembly
       inputs.
  
! 'asm_goto_with_outputs'
       Target supports 'asm goto' with outputs.
  
! 'automatic_stack_alignment'
       Target supports automatic stack alignment.
  
! 'branch_cost'
!      Target supports '-branch-cost=N'.
  
! 'const_volatile_readonly_section'
       Target places const volatile variables in readonly sections.
  
! 'cxa_atexit'
!      Target uses '__cxa_atexit'.
  
! 'default_packed'
       Target has packed layout of structure members by default.
  
! 'exceptions'
       Target supports exception handling.  Note that this is orthogonal
!      to effective-target 'exceptions_enabled'.
  
! 'exceptions_enabled'
       Testing configuration has exception handling enabled.  Note that
!      this is orthogonal to effective-target 'exceptions'.
  
! 'fgraphite'
       Target supports Graphite optimizations.
  
! 'fixed_point'
       Target supports fixed-point extension to C.
  
! 'bitint'
       Target supports _BitInt(N).
  
! 'bitint128'
       Target supports _BitInt(128).
  
! 'bitint575'
       Target supports _BitInt(575).
  
! 'bitint65535'
       Target supports _BitInt(65535).
  
! 'fopenacc'
!      Target supports OpenACC via '-fopenacc'.
  
! 'fopenmp'
!      Target supports OpenMP via '-fopenmp'.
  
! 'fpic'
!      Target supports '-fpic' and '-fPIC'.
  
! 'freorder'
!      Target supports '-freorder-blocks-and-partition'.
  
! 'fstack_protector'
!      Target supports '-fstack-protector'.
  
! 'gas'
!      Target uses GNU 'as'.
  
! 'gc_sections'
!      Target supports '--gc-sections'.
  
! 'gld'
!      Target uses GNU 'ld'.
  
! 'keeps_null_pointer_checks'
       Target keeps null pointer checks, either due to the use of
!      '-fno-delete-null-pointer-checks' or hardwired into the target.
  
! 'llvm_binutils'
       Target is using an LLVM assembler and/or linker, instead of GNU
       Binutils.
  
! 'lra'
       Target supports local register allocator (LRA). This must not be
!      called (results in 'ERROR') for targets that don't do register
       allocation, and therefore neither use nor don't use LRA.
  
! 'lto'
       Compiler has been configured to support link-time optimization
       (LTO).
  
! 'lto_incremental'
       Compiler and linker support link-time optimization relocatable
!      linking with '-r' and '-flto' options.
  
! 'thread_fence'
!      Target implements '__atomic_thread_fence' without relying on
!      non-implemented '__sync_synchronize()'.
  
! 'naked_functions'
!      Target supports the 'naked' function attribute.
  
! 'named_sections'
       Target supports named sections.
  
! 'natural_alignment_32'
       Target uses natural alignment (aligned to type size) for types of
       32 bits or less.
  
! 'tail_call'
       Target supports tail-call optimizations.
  
! 'target_natural_alignment_64'
       Target uses natural alignment (aligned to type size) for types of
       64 bits or less.
  
! 'no_alignment_constraints'
       Target defines __BIGGEST_ALIGNMENT__=1.  Hence target imposes no
       alignment constraints.  This is similar, but not necessarily the
!      same as *note default_packed::.  Although 'BIGGEST_FIELD_ALIGNMENT'
!      defaults to 'BIGGEST_ALIGNMENT' for most targets, it is possible
       for a target to set those two with different values and have
       different alignment constraints for aggregate and non-aggregate
       types.
  
! 'noinit'
!      Target supports the 'noinit' variable attribute.
  
! 'nonpic'
       Target does not generate PIC by default.
  
! 'o_flag_in_section'
       Target supports the 'o' flag in .section directive in assembly
       inputs.
  
! 'offload_gcn'
       Target has been configured for OpenACC/OpenMP offloading on AMD
       GCN.
  
! 'persistent'
!      Target supports the 'persistent' variable attribute.
  
! 'pie_enabled'
       Target generates PIE by default.
  
! 'pcc_bitfield_type_matters'
!      Target defines 'PCC_BITFIELD_TYPE_MATTERS'.
  
! 'pe_aligned_commons'
!      Target supports '-mpe-aligned-commons'.
  
! 'pie'
!      Target supports '-pie', '-fpie' and '-fPIE'.
  
! 'linker_plugin'
       Target supports the linker plugin.
  
! 'rdynamic'
!      Target supports '-rdynamic'.
  
! 'scalar_all_fma'
!      Target supports all four fused multiply-add optabs for both 'float'
!      and 'double'.  These optabs are: 'fma_optab', 'fms_optab',
!      'fnma_optab' and 'fnms_optab'.
  
! 'section_anchors'
       Target supports section anchors.
  
! 'short_enums'
       Target defaults to short enums.
  
! 'stack_size'
       Target has limited stack size.  The stack size limit can be
       obtained using the STACK_SIZE macro defined by *note
!      'dg-add-options' feature 'stack_size': stack_size_ao.
  
       Note that for certain targets, stack size limits are relevant for
!      execution only, and therefore considered only if 'dg-do run' is in
       effect, otherwise unlimited.
  
! 'static'
!      Target supports '-static'.
  
! 'static_libgfortran'
!      Target supports statically linking 'libgfortran'.
  
! 'string_merging'
       Target supports merging string constants at link time.
  
! 'strub'
!      Target supports attribute 'strub' for stack scrubbing.
  
! 'ucn'
       Target supports compiling and assembling UCN.
  
! 'ucn_nocache'
       Including the options used to compile this particular test, the
       target supports compiling and assembling UCN.
  
! 'unaligned_stack'
!      Target does not guarantee that its 'STACK_BOUNDARY' is greater than
       or equal to the required vector alignment.
  
! 'vector_alignment_reachable'
       Vector alignment is reachable for types of 32 bits or less.
  
! 'vector_alignment_reachable_for_64bit'
       Vector alignment is reachable for types of 64 bits or less.
  
! 'vma_equals_lma'
       Target generates executable with VMA equal to LMA for .data
       section.
  
! 'wchar_t_char16_t_compatible'
!      Target supports 'wchar_t' that is compatible with 'char16_t'.
  
! 'wchar_t_char32_t_compatible'
!      Target supports 'wchar_t' that is compatible with 'char32_t'.
  
! 'comdat_group'
       Target uses comdat groups.
  
! 'indirect_calls'
       Target supports indirect calls, i.e.  calls where the target is not
       constant.
  
! 'lgccjit'
       Target supports -lgccjit, i.e.  libgccjit.so can be linked into jit
       tests.
  
! '__OPTIMIZE__'
!      Optimizations are enabled ('__OPTIMIZE__') per the current compiler
       flags.
  
! 6.2.3.19 Local to tests in 'gcc.target/i386'
  ............................................
  
! '3dnow'
!      Target supports compiling '3dnow' instructions.
  
! 'aes'
!      Target supports compiling 'aes' instructions.
  
! 'fma4'
!      Target supports compiling 'fma4' instructions.
  
! 'mfentry'
!      Target supports the '-mfentry' option that alters the position of
       profiling calls such that they precede the prologue.
  
! 'ms_hook_prologue'
!      Target supports attribute 'ms_hook_prologue'.
  
! 'pclmul'
!      Target supports compiling 'pclmul' instructions.
  
! 'sse3'
!      Target supports compiling 'sse3' instructions.
  
! 'sse4'
!      Target supports compiling 'sse4' instructions.
  
! 'sse4a'
!      Target supports compiling 'sse4a' instructions.
  
! 'ssse3'
!      Target supports compiling 'ssse3' instructions.
  
! 'vaes'
!      Target supports compiling 'vaes' instructions.
  
! 'vpclmul'
!      Target supports compiling 'vpclmul' instructions.
  
! 'xop'
!      Target supports compiling 'xop' instructions.
  
! 6.2.3.20 Local to tests in 'gcc.test-framework'
  ...............................................
  
! 'no'
       Always returns 0.
  
! 'yes'
       Always returns 1.
  
  
  File: gccint.info,  Node: Add Options,  Next: Remove Options,  Prev: Effective-Target Keywords,  Up: Test Directives
  
! 6.2.4 Features for 'dg-add-options'
  -----------------------------------
  
! The supported values of FEATURE for directive 'dg-add-options' are:
  
! 'arm_fp'
!      '__ARM_FP' definition.  Only ARM targets support this feature, and
       only then in certain modes; see the *note arm_fp_ok effective
       target keyword: arm_fp_ok.
  
! 'arm_fp_dp'
!      '__ARM_FP' definition with double-precision support.  Only ARM
       targets support this feature, and only then in certain modes; see
       the *note arm_fp_dp_ok effective target keyword: arm_fp_dp_ok.
  
! 'arm_neon'
       NEON support.  Only ARM targets support this feature, and only then
       in certain modes; see the *note arm_neon_ok effective target
       keyword: arm_neon_ok.
  
! 'arm_fp16'
       VFP half-precision floating point support.  This does not select
       the FP16 format; for that, use *note arm_fp16_ieee: arm_fp16_ieee.
       or *note arm_fp16_alternative: arm_fp16_alternative. instead.  This
--- 5037,6530 ----
       using only two-vector permutes, regardless of how long the sequence
       is.
  
! â€˜vect_perm3_intâ€™
!      Like â€˜vect_perm3_byteâ€™, but for 32-bit elements.
  
! â€˜vect_perm3_shortâ€™
!      Like â€˜vect_perm3_byteâ€™, but for 16-bit elements.
  
! â€˜vect_shiftâ€™
       Target supports a hardware vector shift operation.
  
! â€˜vect_unaligned_possibleâ€™
       Target prefers vectors to have an alignment greater than element
       alignment, but also allows unaligned vector accesses in some
       circumstances.
  
! â€˜vect_variable_lengthâ€™
       Target has variable-length vectors.
  
! â€˜vect64â€™
       Target supports vectors of 64 bits.
  
! â€˜vect32â€™
       Target supports vectors of 32 bits.
  
! â€˜vect_widen_sum_hi_to_siâ€™
!      Target supports a vector widening summation of â€˜shortâ€™ operands
!      into â€˜intâ€™ results, or can promote (unpack) from â€˜shortâ€™ to â€˜intâ€™.
  
! â€˜vect_widen_sum_qi_to_hiâ€™
!      Target supports a vector widening summation of â€˜charâ€™ operands into
!      â€˜shortâ€™ results, or can promote (unpack) from â€˜charâ€™ to â€˜shortâ€™.
  
! â€˜vect_widen_sum_qi_to_siâ€™
!      Target supports a vector widening summation of â€˜charâ€™ operands into
!      â€˜intâ€™ results.
  
! â€˜vect_widen_mult_qi_to_hiâ€™
!      Target supports a vector widening multiplication of â€˜charâ€™ operands
!      into â€˜shortâ€™ results, or can promote (unpack) from â€˜charâ€™ to
!      â€˜shortâ€™ and perform non-widening multiplication of â€˜shortâ€™.
  
! â€˜vect_widen_mult_hi_to_siâ€™
!      Target supports a vector widening multiplication of â€˜shortâ€™
!      operands into â€˜intâ€™ results, or can promote (unpack) from â€˜shortâ€™
!      to â€˜intâ€™ and perform non-widening multiplication of â€˜intâ€™.
  
! â€˜vect_widen_mult_si_to_di_patternâ€™
!      Target supports a vector widening multiplication of â€˜intâ€™ operands
!      into â€˜longâ€™ results.
  
! â€˜vect_sdot_qiâ€™
!      Target supports a vector dot-product of â€˜signed charâ€™.
  
! â€˜vect_udot_qiâ€™
!      Target supports a vector dot-product of â€˜unsigned charâ€™.
  
! â€˜vect_usdot_qiâ€™
       Target supports a vector dot-product where one operand of the
!      multiply is â€˜signed charâ€™ and the other of â€˜unsigned charâ€™.
  
! â€˜vect_sdot_hiâ€™
!      Target supports a vector dot-product of â€˜signed shortâ€™.
  
! â€˜vect_udot_hiâ€™
!      Target supports a vector dot-product of â€˜unsigned shortâ€™.
  
! â€˜vect_pack_truncâ€™
!      Target supports a vector demotion (packing) of â€˜shortâ€™ to â€˜charâ€™
!      and from â€˜intâ€™ to â€˜shortâ€™ using modulo arithmetic.
  
! â€˜vect_unpackâ€™
!      Target supports a vector promotion (unpacking) of â€˜charâ€™ to â€˜shortâ€™
!      and from â€˜charâ€™ to â€˜intâ€™.
  
! â€˜vect_intfloat_cvtâ€™
!      Target supports conversion from â€˜signed intâ€™ to â€˜floatâ€™.
  
! â€˜vect_uintfloat_cvtâ€™
!      Target supports conversion from â€˜unsigned intâ€™ to â€˜floatâ€™.
  
! â€˜vect_floatint_cvtâ€™
!      Target supports conversion from â€˜floatâ€™ to â€˜signed intâ€™.
  
! â€˜vect_floatuint_cvtâ€™
!      Target supports conversion from â€˜floatâ€™ to â€˜unsigned intâ€™.
  
! â€˜vect_intdouble_cvtâ€™
!      Target supports conversion from â€˜signed intâ€™ to â€˜doubleâ€™.
  
! â€˜vect_doubleint_cvtâ€™
!      Target supports conversion from â€˜doubleâ€™ to â€˜signed intâ€™.
  
! â€˜vect_max_reducâ€™
       Target supports max reduction for vectors.
  
! â€˜vect_sizes_16B_8Bâ€™
       Target supports 16- and 8-bytes vectors.
  
! â€˜vect_sizes_32B_16Bâ€™
       Target supports 32- and 16-bytes vectors.
  
! â€˜vect_logical_reducâ€™
       Target supports AND, IOR and XOR reduction on vectors.
  
! â€˜vect_fold_extract_lastâ€™
!      Target supports the â€˜fold_extract_lastâ€™ optab.
  
! â€˜vect_len_load_storeâ€™
!      Target supports the â€˜len_loadâ€™ and â€˜len_storeâ€™ optabs.
  
! â€˜vect_partial_vectors_usage_1â€™
       Target supports loop vectorization with partial vectors and
!      â€˜vect-partial-vector-usageâ€™ is set to 1.
  
! â€˜vect_partial_vectors_usage_2â€™
       Target supports loop vectorization with partial vectors and
!      â€˜vect-partial-vector-usageâ€™ is set to 2.
  
! â€˜vect_partial_vectorsâ€™
       Target supports loop vectorization with partial vectors and
!      â€˜vect-partial-vector-usageâ€™ is nonzero.
  
! â€˜vect_slp_v2qi_store_alignâ€™
       Target supports vectorization of 2-byte char stores with 2-byte
!      aligned address at plain â€˜-O2â€™.
  
! â€˜vect_slp_v4qi_store_alignâ€™
       Target supports vectorization of 4-byte char stores with 4-byte
!      aligned address at plain â€˜-O2â€™.
  
! â€˜vect_slp_v4qi_store_unalignâ€™
       Target supports vectorization of 4-byte char stores with unaligned
!      address at plain â€˜-O2â€™.
  
! â€˜struct_4char_block_moveâ€™
       Target supports block move for 8-byte aligned 4-byte size struct
       initialization.
  
! â€˜vect_slp_v4qi_store_unalign_1â€™
       Target supports vectorization of 4-byte char stores with unaligned
!      address or store them with constant pool at plain â€˜-O2â€™.
  
! â€˜struct_8char_block_moveâ€™
       Target supports block move for 8-byte aligned 8-byte size struct
       initialization.
  
! â€˜vect_slp_v8qi_store_unalign_1â€™
       Target supports vectorization of 8-byte char stores with unaligned
!      address or store them with constant pool at plain â€˜-O2â€™.
  
! â€˜struct_16char_block_moveâ€™
       Target supports block move for 8-byte aligned 16-byte size struct
       initialization.
  
! â€˜vect_slp_v16qi_store_unalign_1â€™
       Target supports vectorization of 16-byte char stores with unaligned
!      address or store them with constant pool at plain â€˜-O2â€™.
  
! â€˜vect_slp_v2hi_store_alignâ€™
       Target supports vectorization of 4-byte short stores with 4-byte
!      aligned addressat plain â€˜-O2â€™.
  
! â€˜vect_slp_v2hi_store_unalignâ€™
       Target supports vectorization of 4-byte short stores with unaligned
!      address at plain â€˜-O2â€™.
  
! â€˜vect_slp_v4hi_store_unalignâ€™
       Target supports vectorization of 8-byte short stores with unaligned
!      address at plain â€˜-O2â€™.
  
! â€˜vect_slp_v2si_store_alignâ€™
       Target supports vectorization of 8-byte int stores with 8-byte
!      aligned address at plain â€˜-O2â€™.
  
! â€˜vect_slp_v4si_store_unalignâ€™
       Target supports vectorization of 16-byte int stores with unaligned
!      address at plain â€˜-O2â€™.
  
  6.2.3.5 Thread Local Storage attributes
  .......................................
  
! â€˜tlsâ€™
       Target supports thread-local storage.
  
! â€˜tls_linkâ€™
!      Target supports linking TLS executables.
! 
! â€˜tls_nativeâ€™
       Target supports native (rather than emulated) thread-local storage.
  
! â€˜tls_runtimeâ€™
       Test system supports executing TLS executables.
  
  6.2.3.6 Decimal floating point attributes
  .........................................
  
! â€˜dfpâ€™
       Targets supports compiling decimal floating point extension to C.
  
! â€˜dfp_nocacheâ€™
       Including the options used to compile this particular test, the
       target supports compiling decimal floating point extension to C.
  
! â€˜dfprtâ€™
       Test system can execute decimal floating point tests.
  
! â€˜dfprt_nocacheâ€™
       Including the options used to compile this particular test, the
       test system can execute decimal floating point tests.
  
! â€˜hard_dfpâ€™
       Target generates decimal floating point instructions with current
       options.
  
! â€˜dfp_bidâ€™
       Target uses the BID format for decimal floating point.
  
  6.2.3.7 ARM-specific attributes
  ...............................
  
! â€˜arm32â€™
       ARM target generates 32-bit code.
  
! â€˜arm_little_endianâ€™
       ARM target that generates little-endian code.
  
! â€˜arm_eabiâ€™
       ARM target adheres to the ABI for the ARM Architecture.
  
! â€˜arm_fp_okâ€™
!      ARM target defines â€˜__ARM_FPâ€™ using â€˜-mfloat-abi=softfpâ€™ or
       equivalent options.  Some multilibs may be incompatible with these
       options.
  
! â€˜arm_fp_dp_okâ€™
!      ARM target defines â€˜__ARM_FPâ€™ with double-precision support using
!      â€˜-mfloat-abi=softfpâ€™ or equivalent options.  Some multilibs may be
       incompatible with these options.
  
! â€˜arm_hf_eabiâ€™
       ARM target adheres to the VFP and Advanced SIMD Register Arguments
       variant of the ABI for the ARM Architecture (as selected with
!      â€˜-mfloat-abi=hardâ€™).
  
! â€˜arm_softfloatâ€™
       ARM target uses emulated floating point operations.
  
! â€˜arm_hard_vfp_okâ€™
!      ARM target supports â€˜-mfpu=vfp -mfloat-abi=hardâ€™.  Some multilibs
       may be incompatible with these options.
  
! â€˜arm_iwmmxt_okâ€™
!      ARM target supports â€˜-mcpu=iwmmxtâ€™.  Some multilibs may be
       incompatible with this option.
  
! â€˜arm_neonâ€™
       ARM target supports generating NEON instructions.
  
! â€˜arm_tune_string_ops_prefer_neonâ€™
       Test CPU tune supports inlining string operations with NEON
       instructions.
  
! â€˜arm_neon_hwâ€™
       Test system supports executing NEON instructions.
  
! â€˜arm_neonv2_hwâ€™
       Test system supports executing NEON v2 instructions.
  
! â€˜arm_neon_okâ€™
!      ARM Target supports â€˜-mfpu=neon -mfloat-abi=softfpâ€™ or compatible
       options.  Some multilibs may be incompatible with these options.
  
! â€˜arm_neon_ok_no_float_abiâ€™
!      ARM Target supports NEON with â€˜-mfpu=neonâ€™, but without any
       -mfloat-abi= option.  Some multilibs may be incompatible with this
       option.
  
! â€˜arm_neonv2_okâ€™
!      ARM Target supports â€˜-mfpu=neon-vfpv4 -mfloat-abi=softfpâ€™ or
       compatible options.  Some multilibs may be incompatible with these
       options.
  
! â€˜arm_fp16_okâ€™
       Target supports options to generate VFP half-precision
       floating-point instructions.  Some multilibs may be incompatible
       with these options.  This test is valid for ARM only.
  
! â€˜arm_fp16_hwâ€™
       Target supports executing VFP half-precision floating-point
       instructions.  This test is valid for ARM only.
  
! â€˜arm_neon_fp16_okâ€™
!      ARM Target supports â€˜-mfpu=neon-fp16 -mfloat-abi=softfpâ€™ or
!      compatible options, including â€˜-mfp16-format=ieeeâ€™ if necessary to
!      obtain the â€˜__fp16â€™ type.  Some multilibs may be incompatible with
       these options.
  
! â€˜arm_neon_fp16_hwâ€™
       Test system supports executing Neon half-precision float
       instructions.  (Implies previous.)
  
! â€˜arm_fp16_alternative_okâ€™
       ARM target supports the ARM FP16 alternative format.  Some
       multilibs may be incompatible with the options needed.
  
! â€˜arm_fp16_none_okâ€™
       ARM target supports specifying none as the ARM FP16 format.
  
! â€˜arm_thumb1_okâ€™
!      ARM target generates Thumb-1 code for â€˜-mthumbâ€™.
  
! â€˜arm_thumb2_okâ€™
!      ARM target generates Thumb-2 code for â€˜-mthumbâ€™.
  
! â€˜arm_nothumbâ€™
       ARM target that is not using Thumb.
  
! â€˜arm_vfp_okâ€™
!      ARM target supports â€˜-mfpu=vfp -mfloat-abi=softfpâ€™.  Some multilibs
       may be incompatible with these options.
  
! â€˜arm_vfp3_okâ€™
!      ARM target supports â€˜-mfpu=vfp3 -mfloat-abi=softfpâ€™.  Some
       multilibs may be incompatible with these options.
  
! â€˜arm_arch_v8a_hard_okâ€™
!      The compiler is targeting â€˜arm*-*-*â€™ and can compile and assemble
!      code using the options â€˜-march=armv8-a -mfpu=neon-fp-armv8
!      -mfloat-abi=hardâ€™.  This is not enough to guarantee that linking
       works.
  
! â€˜arm_arch_v8a_hard_multilibâ€™
!      The compiler is targeting â€˜arm*-*-*â€™ and can build programs using
!      the options â€˜-march=armv8-a -mfpu=neon-fp-armv8 -mfloat-abi=hardâ€™.
       The target can also run the resulting binaries.
  
! â€˜arm_v8_vfp_okâ€™
!      ARM target supports â€˜-mfpu=fp-armv8 -mfloat-abi=softfpâ€™.  Some
       multilibs may be incompatible with these options.
  
! â€˜arm_v8_neon_okâ€™
!      ARM target supports â€˜-mfpu=neon-fp-armv8 -mfloat-abi=softfpâ€™.  Some
       multilibs may be incompatible with these options.
  
! â€˜arm_v8_1a_neon_okâ€™
       ARM target supports options to generate ARMv8.1-A Adv.SIMD
       instructions.  Some multilibs may be incompatible with these
       options.
  
! â€˜arm_v8_1a_neon_hwâ€™
       ARM target supports executing ARMv8.1-A Adv.SIMD instructions.
       Some multilibs may be incompatible with the options needed.
       Implies arm_v8_1a_neon_ok.
  
! â€˜arm_acq_relâ€™
       ARM target supports acquire-release instructions.
  
! â€˜arm_v8_2a_fp16_scalar_okâ€™
       ARM target supports options to generate instructions for ARMv8.2-A
       and scalar instructions from the FP16 extension.  Some multilibs
       may be incompatible with these options.
  
! â€˜arm_v8_2a_fp16_scalar_hwâ€™
       ARM target supports executing instructions for ARMv8.2-A and scalar
       instructions from the FP16 extension.  Some multilibs may be
       incompatible with these options.  Implies arm_v8_2a_fp16_neon_ok.
  
! â€˜arm_v8_2a_fp16_neon_okâ€™
       ARM target supports options to generate instructions from ARMv8.2-A
       with the FP16 extension.  Some multilibs may be incompatible with
       these options.  Implies arm_v8_2a_fp16_scalar_ok.
  
! â€˜arm_v8_2a_fp16_neon_hwâ€™
       ARM target supports executing instructions from ARMv8.2-A with the
       FP16 extension.  Some multilibs may be incompatible with these
       options.  Implies arm_v8_2a_fp16_neon_ok and
       arm_v8_2a_fp16_scalar_hw.
  
! â€˜arm_v8_2a_dotprod_neon_okâ€™
       ARM target supports options to generate instructions from ARMv8.2-A
       with the Dot Product extension.  Some multilibs may be incompatible
       with these options.
  
! â€˜arm_v8_2a_dotprod_neon_hwâ€™
       ARM target supports executing instructions from ARMv8.2-A with the
       Dot Product extension.  Some multilibs may be incompatible with
       these options.  Implies arm_v8_2a_dotprod_neon_ok.
  
! â€˜arm_v8_2a_i8mm_neon_hwâ€™
       ARM target supports executing instructions from ARMv8.2-A with the
       8-bit Matrix Multiply extension.  Some multilibs may be
       incompatible with these options.  Implies arm_v8_2a_i8mm_ok.
  
! â€˜arm_fp16fml_neon_okâ€™
!      ARM target supports extensions to generate the â€˜VFMALâ€™ and â€˜VFMLSâ€™
       half-precision floating-point instructions available from ARMv8.2-A
       and onwards.  Some multilibs may be incompatible with these
       options.
  
! â€˜arm_v8_2a_bf16_neon_okâ€™
       ARM target supports options to generate instructions from ARMv8.2-A
       with the BFloat16 extension (bf16).  Some multilibs may be
       incompatible with these options.
  
! â€˜arm_v8_2a_i8mm_okâ€™
       ARM target supports options to generate instructions from ARMv8.2-A
       with the 8-Bit Integer Matrix Multiply extension (i8mm).  Some
       multilibs may be incompatible with these options.
  
! â€˜arm_v8_1m_mve_okâ€™
       ARM target supports options to generate instructions from ARMv8.1-M
       with the M-Profile Vector Extension (MVE). Some multilibs may be
       incompatible with these options.
  
! â€˜arm_v8_1m_mve_fp_okâ€™
       ARM target supports options to generate instructions from ARMv8.1-M
       with the Half-precision floating-point instructions (HP),
       Floating-point Extension (FP) along with M-Profile Vector Extension
       (MVE). Some multilibs may be incompatible with these options.
  
! â€˜arm_mve_hwâ€™
       Test system supports executing MVE instructions.
  
! â€˜arm_v8m_main_cdeâ€™
       ARM target supports options to generate instructions from ARMv8-M
       with the Custom Datapath Extension (CDE). Some multilibs may be
       incompatible with these options.
  
! â€˜arm_v8m_main_cde_fpâ€™
       ARM target supports options to generate instructions from ARMv8-M
       with the Custom Datapath Extension (CDE) and floating-point (VFP).
       Some multilibs may be incompatible with these options.
  
! â€˜arm_v8_1m_main_cde_mveâ€™
       Arm target supports options to generate instructions from Armv8.1-M
       with the Custom Datapath Extension (CDE) and M-Profile Vector
       Extension (MVE). Some multilibs may be incompatible with these
       options.
  
! â€˜arm_v8_1m_main_cde_mve_fpâ€™
       Arm target supports options to generate instructions from Armv8.1-M
       with the Custom Datapath Extension (CDE) and M-Profile Vector
       Extension (MVE) with floating-point support.  Some multilibs may be
       incompatible with these options.
  
! â€˜arm_pacbti_hwâ€™
       Test system supports executing Pointer Authentication and Branch
       Target Identification instructions.
  
! â€˜arm_prefer_ldrd_strdâ€™
!      ARM target prefers â€˜LDRDâ€™ and â€˜STRDâ€™ instructions over â€˜LDMâ€™ and
!      â€˜STMâ€™ instructions.
  
! â€˜arm_thumb1_movt_okâ€™
!      ARM target generates Thumb-1 code for â€˜-mthumbâ€™ with â€˜MOVWâ€™ and
!      â€˜MOVTâ€™ instructions available.
  
! â€˜arm_thumb1_cbz_okâ€™
!      ARM target generates Thumb-1 code for â€˜-mthumbâ€™ with â€˜CBZâ€™ and
!      â€˜CBNZâ€™ instructions available.
  
! â€˜arm_divmod_simodeâ€™
       ARM target for which divmod transform is disabled, if it supports
       hardware div instruction.
  
! â€˜arm_cmse_okâ€™
       ARM target supports ARMv8-M Security Extensions, enabled by the
!      â€˜-mcmseâ€™ option.
  
! â€˜arm_cmse_hwâ€™
       Test system supports executing CMSE instructions.
  
! â€˜arm_coproc1_okâ€™
!      ARM target supports the following coprocessor instructions: â€˜CDPâ€™,
!      â€˜LDCâ€™, â€˜STCâ€™, â€˜MCRâ€™ and â€˜MRCâ€™.
  
! â€˜arm_coproc2_okâ€™
       ARM target supports all the coprocessor instructions also listed as
       supported in *note arm_coproc1_ok:: in addition to the following:
!      â€˜CDP2â€™, â€˜LDC2â€™, â€˜LDC2lâ€™, â€˜STC2â€™, â€˜STC2lâ€™, â€˜MCR2â€™ and â€˜MRC2â€™.
  
! â€˜arm_coproc3_okâ€™
       ARM target supports all the coprocessor instructions also listed as
       supported in *note arm_coproc2_ok:: in addition the following:
!      â€˜MCRRâ€™ and â€˜MRRCâ€™.
  
! â€˜arm_coproc4_okâ€™
       ARM target supports all the coprocessor instructions also listed as
       supported in *note arm_coproc3_ok:: in addition the following:
!      â€˜MCRR2â€™ and â€˜MRRC2â€™.
  
! â€˜arm_simd32_okâ€™
       ARM Target supports options suitable for accessing the SIMD32
!      intrinsics from â€˜arm_acle.hâ€™.  Some multilibs may be incompatible
       with these options.
  
! â€˜arm_sat_okâ€™
       ARM Target supports options suitable for accessing the saturation
!      intrinsics from â€˜arm_acle.hâ€™.  Some multilibs may be incompatible
       with these options.
  
! â€˜arm_dsp_okâ€™
       ARM Target supports options suitable for accessing the DSP
!      intrinsics from â€˜arm_acle.hâ€™.  Some multilibs may be incompatible
       with these options.
  
! â€˜arm_softfp_okâ€™
!      ARM target supports the â€˜-mfloat-abi=softfpâ€™ option.
  
! â€˜arm_hard_okâ€™
!      ARM target supports the â€˜-mfloat-abi=hardâ€™ option.
  
! â€˜arm_mveâ€™
       ARM target supports generating MVE instructions.
  
! â€˜arm_v8_1_lob_okâ€™
       ARM Target supports executing the Armv8.1-M Mainline Low Overhead
!      Loop instructions â€˜DLSâ€™ and â€˜LEâ€™.  Some multilibs may be
       incompatible with these options.
  
! â€˜arm_thumb2_no_arm_v8_1_lobâ€™
       ARM target where Thumb-2 is used without options but does not
       support executing the Armv8.1-M Mainline Low Overhead Loop
!      instructions â€˜DLSâ€™ and â€˜LEâ€™.
  
! â€˜arm_thumb2_ok_no_arm_v8_1_lobâ€™
!      ARM target generates Thumb-2 code for â€˜-mthumbâ€™ but does not
       support executing the Armv8.1-M Mainline Low Overhead Loop
!      instructions â€˜DLSâ€™ and â€˜LEâ€™.
  
! â€˜mbranch_protection_okâ€™
!      ARM target supporting â€˜-mbranch-protection=standardâ€™.
  
! â€˜arm_pacbti_hwâ€™
       Test system supports for executing non nop pacbti instructions.
  
  6.2.3.8 AArch64-specific attributes
  ...................................
  
! â€˜aarch64_asm_<ext>_okâ€™
!      AArch64 assembler supports the architecture extension â€˜extâ€™ via the
!      â€˜.arch_extensionâ€™ pseudo-op.
! â€˜aarch64_tinyâ€™
       AArch64 target which generates instruction sequences for tiny
       memory model.
! â€˜aarch64_smallâ€™
       AArch64 target which generates instruction sequences for small
       memory model.
! â€˜aarch64_largeâ€™
       AArch64 target which generates instruction sequences for large
       memory model.
! â€˜aarch64_little_endianâ€™
       AArch64 target which generates instruction sequences for little
       endian.
! â€˜aarch64_big_endianâ€™
       AArch64 target which generates instruction sequences for big
       endian.
! â€˜aarch64_small_fpicâ€™
       Binutils installed on test system supports relocation types
       required by -fpic for AArch64 small memory model.
! â€˜aarch64_smeâ€™
       AArch64 target that generates instructions for SME.
! â€˜aarch64_sme2â€™
       AArch64 target that generates instructions for SME2.
! â€˜aarch64_sve_hwâ€™
       AArch64 target that is able to generate and execute SVE code
       (regardless of whether it does so by default).
! â€˜aarch64_sve128_hwâ€™
! â€˜aarch64_sve256_hwâ€™
! â€˜aarch64_sve512_hwâ€™
! â€˜aarch64_sve1024_hwâ€™
! â€˜aarch64_sve2048_hwâ€™
!      Like â€˜aarch64_sve_hwâ€™, but also test for an exact hardware vector
       length.
! â€˜aarch64_sve2_hwâ€™
       AArch64 target that is able to generate and execute SVE2 code
       (regardless of whether it does so by default).
! â€˜aarch64_sve2p1_hwâ€™
       AArch64 target that is able to generate and execute SVE2.1 code
       (regardless of whether it does so by default).
+ â€˜aarch64_sme_hwâ€™
+      AArch64 target that is able to generate and execute SME code
+      (regardless of whether it does so by default).
  
! â€˜aarch64_fjcvtzs_hwâ€™
       AArch64 target that is able to generate and execute armv8.3-a
       FJCVTZS instruction.
  
  6.2.3.9 LoongArch specific attributes
  .....................................
  
! â€˜loongarch_sxâ€™
       LoongArch target that generates instructions for SX.
  
! â€˜loongarch_asxâ€™
       LoongArch target that generates instructions for ASX.
  
! â€˜loongarch_sx_hwâ€™
       LoongArch target that is able to generate and execute SX code.
  
! â€˜loongarch_asx_hwâ€™
       LoongArch target that is able to generate and execute ASX code.
  
! â€˜loongarch_call36_supportâ€™
       LoongArch binutils supports call36 relocation.
  
  6.2.3.10 MIPS-specific attributes
  .................................
  
! â€˜mips64â€™
       MIPS target supports 64-bit instructions.
  
! â€˜nomips16â€™
       MIPS target does not produce MIPS16 code.
  
! â€˜mips16_attributeâ€™
       MIPS target can generate MIPS16 code.
  
! â€˜mips_loongsonâ€™
       MIPS target is a Loongson-2E or -2F target using an ABI that
       supports the Loongson vector modes.
  
! â€˜mips_msaâ€™
!      MIPS target supports â€˜-mmsaâ€™, MIPS SIMD Architecture (MSA).
  
! â€˜mips_newabi_large_long_doubleâ€™
!      MIPS target supports â€˜long doubleâ€™ larger than â€˜doubleâ€™ when using
       the new ABI.
  
! â€˜mpaired_singleâ€™
!      MIPS target supports â€˜-mpaired-singleâ€™.
  
  6.2.3.11 MSP430-specific attributes
  ...................................
  
! â€˜msp430_smallâ€™
!      MSP430 target has the small memory model enabled (â€˜-msmallâ€™).
  
! â€˜msp430_largeâ€™
!      MSP430 target has the large memory model enabled (â€˜-mlargeâ€™).
  
  6.2.3.12 nvptx-specific attributes
  ..................................
  
! â€˜nvptx_default_ptx_isa_version_at_least_6_0â€™
       nvptx code by default compiles for at least PTX ISA version 6.0.
  
! â€˜nvptx_runtime_alias_ptxâ€™
       The nvptx runtime environment supports the PTX ISA directive
!      â€˜.aliasâ€™.
  
! â€˜nvptx_runtime_alloca_ptxâ€™
       The nvptx runtime environment supports PTX 'alloca'.
  
! â€˜nvptx_softstackâ€™
!      nvptx â€˜-msoft-stackâ€™ is enabled.
  
  6.2.3.13 PowerPC-specific attributes
  ....................................
  
! â€˜dfp_hwâ€™
       PowerPC target supports executing hardware DFP instructions.
  
! â€˜p8vector_hwâ€™
       PowerPC target supports executing VSX instructions (ISA 2.07).
  
! â€˜powerpc64â€™
       Test system supports executing 64-bit instructions.
  
! â€˜powerpc_altivecâ€™
       PowerPC target supports AltiVec.
  
! â€˜powerpc_altivec_okâ€™
!      PowerPC target supports â€˜-maltivecâ€™.
  
! â€˜powerpc_eabi_okâ€™
!      PowerPC target supports â€˜-meabiâ€™.
  
! â€˜powerpc_elfv2â€™
!      PowerPC target supports â€˜-mabi=elfv2â€™.
  
! â€˜powerpc_fprsâ€™
       PowerPC target supports floating-point registers.
  
! â€˜powerpc_hard_doubleâ€™
       PowerPC target supports hardware double-precision floating-point.
  
! â€˜powerpc_htm_okâ€™
!      PowerPC target supports â€˜-mhtmâ€™
  
! â€˜powerpc_popcntb_okâ€™
!      PowerPC target supports the â€˜popcntbâ€™ instruction, indicating that
!      this target supports â€˜-mcpu=power5â€™.
  
! â€˜powerpc_ppu_okâ€™
!      PowerPC target supports â€˜-mcpu=cellâ€™.
  
! â€˜powerpc_speâ€™
       PowerPC target supports PowerPC SPE.
  
! â€˜powerpc_spe_nocacheâ€™
       Including the options used to compile this particular test, the
       PowerPC target supports PowerPC SPE.
  
! â€˜powerpc_spuâ€™
       PowerPC target supports PowerPC SPU.
  
! â€˜powerpc_vsx_okâ€™
!      PowerPC target supports â€˜-mvsxâ€™.
  
! â€˜powerpc_405_nocacheâ€™
       Including the options used to compile this particular test, the
       PowerPC target supports PowerPC 405.
  
! â€˜ppc_recip_hwâ€™
       PowerPC target supports executing reciprocal estimate instructions.
  
! â€˜vmx_hwâ€™
       PowerPC target supports executing AltiVec instructions.
  
! â€˜vsx_hwâ€™
       PowerPC target supports executing VSX instructions (ISA 2.06).
  
! â€˜has_arch_pwr5â€™
!      PowerPC target pre-defines macro _ARCH_PWR5 which means the â€˜-mcpuâ€™
       setting is Power5 or later.
  
! â€˜has_arch_pwr6â€™
!      PowerPC target pre-defines macro _ARCH_PWR6 which means the â€˜-mcpuâ€™
       setting is Power6 or later.
  
! â€˜has_arch_pwr7â€™
!      PowerPC target pre-defines macro _ARCH_PWR7 which means the â€˜-mcpuâ€™
       setting is Power7 or later.
  
! â€˜has_arch_pwr8â€™
!      PowerPC target pre-defines macro _ARCH_PWR8 which means the â€˜-mcpuâ€™
       setting is Power8 or later.
  
! â€˜has_arch_pwr9â€™
!      PowerPC target pre-defines macro _ARCH_PWR9 which means the â€˜-mcpuâ€™
       setting is Power9 or later.
  
  6.2.3.14 RISC-V specific attributes
  ...................................
  
! â€˜rv32â€™
       Test system has an integer register width of 32 bits.
  
! â€˜rv64â€™
       Test system has an integer register width of 64 bits.
  
! â€˜riscv_aâ€™
       Test target architecture has support for the A extension.
  
! â€˜riscv_zaamoâ€™
       Test target architecture has support for the zaamo extension.
  
! â€˜riscv_zabhaâ€™
       Test target architecture has support for the zabha extension.
  
! â€˜riscv_zacasâ€™
       Test target architecture has support for the zacas extension.
  
! â€˜riscv_zalrscâ€™
       Test target architecture has support for the zalrsc extension.
  
! â€˜riscv_zbcâ€™
       Test target architecture has support for the zbc extension.
  
! â€˜riscv_zbc_okâ€™
       Test target architecture can execute code with zbc extension
       enabled.
  
! â€˜riscv_zbkbâ€™
       Test target architecture has support for the zbkb extension.
  
! â€˜riscv_zbkb_okâ€™
       Test target architecture can execute code with zbkb extension
       enabled.
  
! â€˜riscv_zbkcâ€™
       Test target architecture has support for the zbkc extension.
  
! â€˜riscv_zbkc_okâ€™
       Test target architecture can execute code with zbkc extension
       enabled.
  
! â€˜riscv_ztsoâ€™
       Test target architecture has support for the ztso extension.
  
  6.2.3.15 CORE-V specific attributes
  ...................................
  
! â€˜cv_macâ€™
       Test system has support for the CORE-V MAC extension.
  
! â€˜cv_aluâ€™
       Test system has support for the CORE-V ALU extension.
  
! â€˜cv_elwâ€™
       Test system has support for the CORE-V ELW extension.
  
! â€˜cv_simdâ€™
       Test system has support for the CORE-V SIMD extension.
  
! â€˜cv_biâ€™
       Test system has support for the CORE-V BI extension.
  
  6.2.3.16 Other hardware attributes
  ..................................
  
! â€˜autoincdecâ€™
       Target supports autoincrement/decrement addressing.
  
! â€˜avxâ€™
!      Target supports compiling â€˜avxâ€™ instructions.
  
! â€˜avx_runtimeâ€™
!      Target supports the execution of â€˜avxâ€™ instructions.
  
! â€˜avx10.1-256â€™
!      Target supports the execution of â€˜avx10.1-256â€™ instructions.
  
! â€˜avx10.1â€™
!      Target supports the execution of â€˜avx10.1â€™ instructions.
  
! â€˜avx10.1-512â€™
!      Target supports the execution of â€˜avx10.1-512â€™ instructions.
  
! â€˜avx10.2â€™
!      Target supports the execution of â€˜avx10.2â€™ instructions.
  
! â€˜avx2â€™
!      Target supports compiling â€˜avx2â€™ instructions.
  
! â€˜avx2_runtimeâ€™
!      Target supports the execution of â€˜avx2â€™ instructions.
  
! â€˜avxvnniâ€™
!      Target supports the execution of â€˜avxvnniâ€™ instructions.
  
! â€˜avx512fâ€™
!      Target supports compiling â€˜avx512fâ€™ instructions.
  
! â€˜avx512f_runtimeâ€™
!      Target supports the execution of â€˜avx512fâ€™ instructions.
  
! â€˜avx512vp2intersectâ€™
!      Target supports the execution of â€˜avx512vp2intersectâ€™ instructions.
  
! â€˜avxifmaâ€™
!      Target supports the execution of â€˜avxifmaâ€™ instructions.
  
! â€˜avxneconvertâ€™
!      Target supports the execution of â€˜avxneconvertâ€™ instructions.
  
! â€˜avxvnniint8â€™
!      Target supports the execution of â€˜avxvnniint8â€™ instructions.
  
! â€˜avxvnniint16â€™
!      Target supports the execution of â€˜avxvnniint16â€™ instructions.
  
! â€˜amx_tileâ€™
!      Target supports the execution of â€˜amx-tileâ€™ instructions.
  
! â€˜amx_int8â€™
!      Target supports the execution of â€˜amx-int8â€™ instructions.
  
! â€˜amx_bf16â€™
!      Target supports the execution of â€˜amx-bf16â€™ instructions.
  
! â€˜amx_avx512â€™
!      Target supports the execution of â€˜amx-avx512â€™ instructions.
  
! â€˜amx_complexâ€™
!      Target supports the execution of â€˜amx-complexâ€™ instructions.
  
! â€˜amx_fp16â€™
!      Target supports the execution of â€˜amx-fp16â€™ instructions.
  
! â€˜amx_movrsâ€™
!      Target supports the execution of â€˜amx-movrsâ€™ instructions.
  
! â€˜amx_tf32â€™
!      Target supports the execution of â€˜amx-tf32â€™ instructions.
  
! â€˜amx_transposeâ€™
!      Target supports the execution of â€˜amx-transposeâ€™ instructions.
  
! â€˜amx_fp8â€™
!      Target supports the execution of â€˜amx-fp8â€™ instructions.
  
! â€˜cell_hwâ€™
       Test system can execute AltiVec and Cell PPU instructions.
  
! â€˜clzâ€™
       Target supports a clz optab on int.
  
! â€˜clzlâ€™
       Target supports a clz optab on long.
  
! â€˜clzllâ€™
       Target supports a clz optab on long long.
  
! â€˜ctzâ€™
       Target supports a ctz optab on int.
  
! â€˜ctzlâ€™
       Target supports a ctz optab on long.
  
! â€˜ctzllâ€™
       Target supports a ctz optab on long long.
  
! â€˜cmpccxaddâ€™
!      Target supports the execution of â€˜cmpccxaddâ€™ instructions.
  
! â€˜coldfire_fpuâ€™
       Target uses a ColdFire FPU.
  
! â€˜divmodâ€™
       Target supporting hardware divmod insn or divmod libcall.
  
! â€˜divmod_simodeâ€™
       Target supporting hardware divmod insn or divmod libcall for
       SImode.
  
! â€˜hard_floatâ€™
       Target supports FPU instructions.
  
! â€˜movrsâ€™
!      Target supports the execution of â€˜movrsâ€™ instructions.
  
! â€˜non_strict_alignâ€™
       Target does not require strict alignment.
  
! â€˜opt_mstrict_alignâ€™
!      Target supports â€˜-mstrict-alignâ€™ and â€˜-mno-strict-alignâ€™.
  
! â€˜pie_copyrelocâ€™
       The x86-64 target linker supports PIE with copy reloc.
  
! â€˜popcountâ€™
       Target supports a popcount optab on int.
  
! â€˜popcountlâ€™
       Target supports a popcount optab on long.
  
! â€˜popcountllâ€™
       Target supports a popcount optab on long long.
  
! â€˜prefetchiâ€™
!      Target supports the execution of â€˜prefetchiâ€™ instructions.
  
! â€˜raointâ€™
!      Target supports the execution of â€˜raointâ€™ instructions.
  
! â€˜rdrandâ€™
!      Target supports x86 â€˜rdrandâ€™ instruction.
  
! â€˜sha512â€™
!      Target supports the execution of â€˜sha512â€™ instructions.
  
! â€˜sm3â€™
!      Target supports the execution of â€˜sm3â€™ instructions.
  
! â€˜sm4â€™
!      Target supports the execution of â€˜sm4â€™ instructions.
  
! â€˜sqrt_insnâ€™
       Target has a square root instruction that the compiler can
       generate.
  
! â€˜sseâ€™
!      Target supports compiling â€˜sseâ€™ instructions.
  
! â€˜sse_runtimeâ€™
!      Target supports the execution of â€˜sseâ€™ instructions.
  
! â€˜sse2â€™
!      Target supports compiling â€˜sse2â€™ instructions.
  
! â€˜sse2_runtimeâ€™
!      Target supports the execution of â€˜sse2â€™ instructions.
  
! â€˜sync_char_shortâ€™
!      Target supports atomic operations on â€˜charâ€™ and â€˜shortâ€™.
  
! â€˜sync_int_longâ€™
!      Target supports atomic operations on â€˜intâ€™ and â€˜longâ€™.
  
! â€˜ultrasparc_hwâ€™
       Test environment appears to run executables on a simulator that
!      accepts only â€˜EM_SPARCâ€™ executables and chokes on â€˜EM_SPARC32PLUSâ€™
!      or â€˜EM_SPARCV9â€™ executables.
  
! â€˜user_msrâ€™
!      Target supports the execution of â€˜user_msrâ€™ instructions.
  
! â€˜vect_cmdline_neededâ€™
       Target requires a command line argument to enable a SIMD
       instruction set.
  
! â€˜x86â€™
       Target is ia32 or x86_64.
  
! â€˜xorsignâ€™
       Target supports the xorsign optab expansion.
  
! â€˜ifn_copysignâ€™
       Target supports the copysign optab expansion of float and double
       for both scalar and vector modes.
  
  6.2.3.17 Environment attributes
  ...............................
  
! â€˜alarmâ€™
!      Target supports â€˜alarmâ€™.
  
! â€˜câ€™
       The language for the compiler under test is C.
  
! â€˜c++â€™
       The language for the compiler under test is C++.
  
! â€˜c99_runtimeâ€™
       Target provides a full C99 runtime.
  
! â€˜cfiâ€™
       Target supports DWARF CFI directives.
  
! â€˜correct_iso_cpp_string_wchar_protosâ€™
!      Target â€˜string.hâ€™ and â€˜wchar.hâ€™ headers provide C++ required
!      overloads for â€˜strchrâ€™ etc.  functions.
  
! â€˜d_runtimeâ€™
       Target provides the D runtime.
  
! â€˜d_runtime_has_std_libraryâ€™
       Target provides the D standard library (Phobos).
  
! â€˜dummy_wcsftimeâ€™
!      Target uses a dummy â€˜wcsftimeâ€™ function that always returns zero.
  
! â€˜fd_truncateâ€™
       Target can truncate a file from a file descriptor, as used by
!      â€˜libgfortran/io/unix.c:fd_truncateâ€™; i.e. â€˜ftruncateâ€™ or â€˜chsizeâ€™.
  
! â€˜fenvâ€™
!      Target provides â€˜fenv.hâ€™ include file.
  
! â€˜fenv_exceptionsâ€™
!      Target supports â€˜fenv.hâ€™ with all the standard IEEE exceptions and
       floating-point exceptions are raised by arithmetic operations.
  
! â€˜fenv_exceptions_dfpâ€™
!      Target supports â€˜fenv.hâ€™ with all the standard IEEE exceptions and
       floating-point exceptions are raised by arithmetic operations for
       decimal floating point.
  
! â€˜fileioâ€™
!      Target offers such file I/O library functions as â€˜fopenâ€™, â€˜fcloseâ€™,
!      â€˜tmpnamâ€™, and â€˜removeâ€™.  This is a link-time requirement for the
       presence of the functions in the library; even if they fail at
       runtime, the requirement is still regarded as satisfied.
  
! â€˜freestandingâ€™
!      Target is â€˜freestandingâ€™ as defined in section 4 of the C99
       standard.  Effectively, it is a target which supports no extra
       headers or libraries other than what is considered essential.
  
! â€˜hostedlibâ€™
!      Target is not â€˜freestandingâ€™, and, if the language is C++,
!      â€˜libstdc++â€™'s hosted mode is not disabled.
  
! â€˜gettimeofdayâ€™
!      Target supports â€˜gettimeofdayâ€™.
  
! â€˜init_priorityâ€™
       Target supports constructors with initialization priority
       arguments.
  
! â€˜inttypes_typesâ€™
!      Target has the basic signed and unsigned types in â€˜inttypes.hâ€™.
       This is for tests that GCC's notions of these types agree with
!      those in the header, as some systems have only â€˜inttypes.hâ€™.
  
! â€˜lax_strtofpâ€™
       Target might have errors of a few ULP in string to floating-point
       conversion functions and overflow is not always detected correctly
       by those functions.
  
! â€˜mempcpyâ€™
!      Target provides â€˜mempcpyâ€™ function.
  
! â€˜mmapâ€™
!      Target supports â€˜mmapâ€™.
  
! â€˜newlibâ€™
       Target supports Newlib.
  
! â€˜newlib_nano_ioâ€™
!      GCC was configured with â€˜--enable-newlib-nano-formatted-ioâ€™, which
       reduces the code size of Newlib formatted I/O functions.
  
! â€˜posix_memalignâ€™
!      Target supports â€˜posix_memalignâ€™.
  
! â€˜pow10â€™
!      Target provides â€˜pow10â€™ function.
  
! â€˜pthreadâ€™
!      Target can compile using â€˜pthread.hâ€™ with no errors or warnings.
  
! â€˜pthread_hâ€™
!      Target has â€˜pthread.hâ€™.
  
! â€˜socketsâ€™
!      Target can compile using â€˜sys/socket.hâ€™ with no errors or warnings.
  
! â€˜run_expensive_testsâ€™
       Expensive testcases (usually those that consume excessive amounts
       of CPU time) should be run on this target.  This can be enabled by
!      setting the â€˜GCC_TEST_RUN_EXPENSIVEâ€™ environment variable to a
       non-empty string.
  
! â€˜simulatorâ€™
       Test system runs executables on a simulator (i.e. slowly) rather
       than hardware (i.e. fast).
  
! â€˜signalâ€™
!      Target has â€˜signal.hâ€™.
  
! â€˜stabsâ€™
       Target supports the stabs debugging format.
  
! â€˜stdint_typesâ€™
!      Target has the basic signed and unsigned C types in â€˜stdint.hâ€™.
!      This will be obsolete when GCC ensures a working â€˜stdint.hâ€™ for all
       targets.
  
! â€˜stdint_types_mbig_endianâ€™
!      Target accepts the option â€˜-mbig-endianâ€™ and â€˜stdint.hâ€™ can be
!      included without error when â€˜-mbig-endianâ€™ is passed.
  
! â€˜stpcpyâ€™
!      Target provides â€˜stpcpyâ€™ function.
  
! â€˜strndupâ€™
!      Target provides â€˜strndupâ€™ function.
  
! â€˜sysconfâ€™
!      Target supports â€˜sysconfâ€™.
  
! â€˜trampolinesâ€™
       Target supports trampolines.
  
! â€˜two_plus_gigsâ€™
       Target supports linking programs with 2+GiB of data.
  
! â€˜uclibcâ€™
       Target supports uClibc.
  
! â€˜unwrappedâ€™
       Target does not use a status wrapper.
  
! â€˜vxworks_kernelâ€™
       Target is a VxWorks kernel.
  
! â€˜vxworks_rtpâ€™
       Target is a VxWorks RTP.
  
! â€˜wcharâ€™
       Target supports wide characters.
  
! â€˜weak_undefinedâ€™
       Target supports weak undefined symbols
  
  6.2.3.18 Other attributes
  .........................
  
! â€˜R_flag_in_sectionâ€™
       Target supports the 'R' flag in .section directive in assembly
       inputs.
  
! â€˜asm_goto_with_outputsâ€™
       Target supports 'asm goto' with outputs.
  
! â€˜automatic_stack_alignmentâ€™
       Target supports automatic stack alignment.
  
! â€˜branch_costâ€™
!      Target supports â€˜-branch-cost=Nâ€™.
  
! â€˜const_volatile_readonly_sectionâ€™
       Target places const volatile variables in readonly sections.
  
! â€˜cxa_atexitâ€™
!      Target uses â€˜__cxa_atexitâ€™.
  
! â€˜default_packedâ€™
       Target has packed layout of structure members by default.
  
! â€˜exceptionsâ€™
       Target supports exception handling.  Note that this is orthogonal
!      to effective-target â€˜exceptions_enabledâ€™.
  
! â€˜exceptions_enabledâ€™
       Testing configuration has exception handling enabled.  Note that
!      this is orthogonal to effective-target â€˜exceptionsâ€™.
  
! â€˜fgraphiteâ€™
       Target supports Graphite optimizations.
  
! â€˜fixed_pointâ€™
       Target supports fixed-point extension to C.
  
! â€˜bitintâ€™
       Target supports _BitInt(N).
  
! â€˜bitint128â€™
       Target supports _BitInt(128).
  
! â€˜bitint575â€™
       Target supports _BitInt(575).
  
! â€˜bitint65535â€™
       Target supports _BitInt(65535).
  
! â€˜fopenaccâ€™
!      Target supports OpenACC via â€˜-fopenaccâ€™.
  
! â€˜fopenmpâ€™
!      Target supports OpenMP via â€˜-fopenmpâ€™.
  
! â€˜fpicâ€™
!      Target supports â€˜-fpicâ€™ and â€˜-fPICâ€™.
  
! â€˜freorderâ€™
!      Target supports â€˜-freorder-blocks-and-partitionâ€™.
  
! â€˜fstack_protectorâ€™
!      Target supports â€˜-fstack-protectorâ€™.
  
! â€˜gasâ€™
!      Target uses GNU â€˜asâ€™.
  
! â€˜gc_sectionsâ€™
!      Target supports â€˜--gc-sectionsâ€™.
  
! â€˜gldâ€™
!      Target uses GNU â€˜ldâ€™.
  
! â€˜keeps_null_pointer_checksâ€™
       Target keeps null pointer checks, either due to the use of
!      â€˜-fno-delete-null-pointer-checksâ€™ or hardwired into the target.
  
! â€˜llvm_binutilsâ€™
       Target is using an LLVM assembler and/or linker, instead of GNU
       Binutils.
  
! â€˜lraâ€™
       Target supports local register allocator (LRA). This must not be
!      called (results in â€˜ERRORâ€™) for targets that don't do register
       allocation, and therefore neither use nor don't use LRA.
  
! â€˜ltoâ€™
       Compiler has been configured to support link-time optimization
       (LTO).
  
! â€˜lto_incrementalâ€™
       Compiler and linker support link-time optimization relocatable
!      linking with â€˜-râ€™ and â€˜-fltoâ€™ options.
  
! â€˜thread_fenceâ€™
!      Target implements â€˜__atomic_thread_fenceâ€™ without relying on
!      non-implemented â€˜__sync_synchronize()â€™.
  
! â€˜naked_functionsâ€™
!      Target supports the â€˜nakedâ€™ function attribute.
  
! â€˜named_sectionsâ€™
       Target supports named sections.
  
! â€˜natural_alignment_32â€™
       Target uses natural alignment (aligned to type size) for types of
       32 bits or less.
  
! â€˜tail_callâ€™
       Target supports tail-call optimizations.
  
! â€˜target_natural_alignment_64â€™
       Target uses natural alignment (aligned to type size) for types of
       64 bits or less.
  
! â€˜no_alignment_constraintsâ€™
       Target defines __BIGGEST_ALIGNMENT__=1.  Hence target imposes no
       alignment constraints.  This is similar, but not necessarily the
!      same as *note default_packed::.  Although â€˜BIGGEST_FIELD_ALIGNMENTâ€™
!      defaults to â€˜BIGGEST_ALIGNMENTâ€™ for most targets, it is possible
       for a target to set those two with different values and have
       different alignment constraints for aggregate and non-aggregate
       types.
  
! â€˜noinitâ€™
!      Target supports the â€˜noinitâ€™ variable attribute.
  
! â€˜nonpicâ€™
       Target does not generate PIC by default.
  
! â€˜o_flag_in_sectionâ€™
       Target supports the 'o' flag in .section directive in assembly
       inputs.
  
! â€˜offload_gcnâ€™
       Target has been configured for OpenACC/OpenMP offloading on AMD
       GCN.
  
! â€˜persistentâ€™
!      Target supports the â€˜persistentâ€™ variable attribute.
  
! â€˜pie_enabledâ€™
       Target generates PIE by default.
  
! â€˜pcc_bitfield_type_mattersâ€™
!      Target defines â€˜PCC_BITFIELD_TYPE_MATTERSâ€™.
  
! â€˜pe_aligned_commonsâ€™
!      Target supports â€˜-mpe-aligned-commonsâ€™.
  
! â€˜pieâ€™
!      Target supports â€˜-pieâ€™, â€˜-fpieâ€™ and â€˜-fPIEâ€™.
  
! â€˜linker_pluginâ€™
       Target supports the linker plugin.
  
! â€˜rdynamicâ€™
!      Target supports â€˜-rdynamicâ€™.
  
! â€˜scalar_all_fmaâ€™
!      Target supports all four fused multiply-add optabs for both â€˜floatâ€™
!      and â€˜doubleâ€™.  These optabs are: â€˜fma_optabâ€™, â€˜fms_optabâ€™,
!      â€˜fnma_optabâ€™ and â€˜fnms_optabâ€™.
  
! â€˜section_anchorsâ€™
       Target supports section anchors.
  
! â€˜short_enumsâ€™
       Target defaults to short enums.
  
! â€˜stack_sizeâ€™
       Target has limited stack size.  The stack size limit can be
       obtained using the STACK_SIZE macro defined by *note
!      â€˜dg-add-optionsâ€™ feature â€˜stack_sizeâ€™: stack_size_ao.
  
       Note that for certain targets, stack size limits are relevant for
!      execution only, and therefore considered only if â€˜dg-do runâ€™ is in
       effect, otherwise unlimited.
  
! â€˜staticâ€™
!      Target supports â€˜-staticâ€™.
  
! â€˜static_libgfortranâ€™
!      Target supports statically linking â€˜libgfortranâ€™.
  
! â€˜string_mergingâ€™
       Target supports merging string constants at link time.
  
! â€˜strubâ€™
!      Target supports attribute â€˜strubâ€™ for stack scrubbing.
  
! â€˜ucnâ€™
       Target supports compiling and assembling UCN.
  
! â€˜ucn_nocacheâ€™
       Including the options used to compile this particular test, the
       target supports compiling and assembling UCN.
  
! â€˜unaligned_stackâ€™
!      Target does not guarantee that its â€˜STACK_BOUNDARYâ€™ is greater than
       or equal to the required vector alignment.
  
! â€˜vector_alignment_reachableâ€™
       Vector alignment is reachable for types of 32 bits or less.
  
! â€˜vector_alignment_reachable_for_64bitâ€™
       Vector alignment is reachable for types of 64 bits or less.
  
! â€˜vma_equals_lmaâ€™
       Target generates executable with VMA equal to LMA for .data
       section.
  
! â€˜wchar_t_char16_t_compatibleâ€™
!      Target supports â€˜wchar_tâ€™ that is compatible with â€˜char16_tâ€™.
  
! â€˜wchar_t_char32_t_compatibleâ€™
!      Target supports â€˜wchar_tâ€™ that is compatible with â€˜char32_tâ€™.
  
! â€˜comdat_groupâ€™
       Target uses comdat groups.
  
! â€˜indirect_callsâ€™
       Target supports indirect calls, i.e.  calls where the target is not
       constant.
  
! â€˜lgccjitâ€™
       Target supports -lgccjit, i.e.  libgccjit.so can be linked into jit
       tests.
  
! â€˜__OPTIMIZE__â€™
!      Optimizations are enabled (â€˜__OPTIMIZE__â€™) per the current compiler
       flags.
  
! 6.2.3.19 Local to tests in â€˜gcc.target/i386â€™
  ............................................
  
! â€˜3dnowâ€™
!      Target supports compiling â€˜3dnowâ€™ instructions.
  
! â€˜aesâ€™
!      Target supports compiling â€˜aesâ€™ instructions.
  
! â€˜fma4â€™
!      Target supports compiling â€˜fma4â€™ instructions.
  
! â€˜mfentryâ€™
!      Target supports the â€˜-mfentryâ€™ option that alters the position of
       profiling calls such that they precede the prologue.
  
! â€˜ms_hook_prologueâ€™
!      Target supports attribute â€˜ms_hook_prologueâ€™.
  
! â€˜pclmulâ€™
!      Target supports compiling â€˜pclmulâ€™ instructions.
  
! â€˜sse3â€™
!      Target supports compiling â€˜sse3â€™ instructions.
  
! â€˜sse4â€™
!      Target supports compiling â€˜sse4â€™ instructions.
  
! â€˜sse4aâ€™
!      Target supports compiling â€˜sse4aâ€™ instructions.
  
! â€˜ssse3â€™
!      Target supports compiling â€˜ssse3â€™ instructions.
  
! â€˜vaesâ€™
!      Target supports compiling â€˜vaesâ€™ instructions.
  
! â€˜vpclmulâ€™
!      Target supports compiling â€˜vpclmulâ€™ instructions.
  
! â€˜xopâ€™
!      Target supports compiling â€˜xopâ€™ instructions.
  
! 6.2.3.20 Local to tests in â€˜gcc.test-frameworkâ€™
  ...............................................
  
! â€˜noâ€™
       Always returns 0.
  
! â€˜yesâ€™
       Always returns 1.
  
  
  File: gccint.info,  Node: Add Options,  Next: Remove Options,  Prev: Effective-Target Keywords,  Up: Test Directives
  
! 6.2.4 Features for â€˜dg-add-optionsâ€™
  -----------------------------------
  
! The supported values of FEATURE for directive â€˜dg-add-optionsâ€™ are:
  
! â€˜arm_fpâ€™
!      â€˜__ARM_FPâ€™ definition.  Only ARM targets support this feature, and
       only then in certain modes; see the *note arm_fp_ok effective
       target keyword: arm_fp_ok.
  
! â€˜arm_fp_dpâ€™
!      â€˜__ARM_FPâ€™ definition with double-precision support.  Only ARM
       targets support this feature, and only then in certain modes; see
       the *note arm_fp_dp_ok effective target keyword: arm_fp_dp_ok.
  
! â€˜arm_neonâ€™
       NEON support.  Only ARM targets support this feature, and only then
       in certain modes; see the *note arm_neon_ok effective target
       keyword: arm_neon_ok.
  
! â€˜arm_fp16â€™
       VFP half-precision floating point support.  This does not select
       the FP16 format; for that, use *note arm_fp16_ieee: arm_fp16_ieee.
       or *note arm_fp16_alternative: arm_fp16_alternative. instead.  This
*************** The supported values of FEATURE for dire
*** 6527,6849 ****
       modes; see the *note arm_fp16_ok effective target keyword:
       arm_fp16_ok.
  
! 'arm_fp16_ieee'
       ARM IEEE 754-2008 format VFP half-precision floating point support.
       This feature is only supported by ARM targets and then only in
       certain modes; see the *note arm_fp16_ok effective target keyword:
       arm_fp16_ok.
  
! 'arm_fp16_alternative'
       ARM Alternative format VFP half-precision floating point support.
       This feature is only supported by ARM targets and then only in
       certain modes; see the *note arm_fp16_ok effective target keyword:
       arm_fp16_ok.
  
! 'arm_neon_fp16'
       NEON and half-precision floating point support.  Only ARM targets
       support this feature, and only then in certain modes; see the *note
       arm_neon_fp16_ok effective target keyword: arm_neon_fp16_ok.
  
! 'arm_vfp3'
       arm vfp3 floating point support; see the *note arm_vfp3_ok
       effective target keyword: arm_vfp3_ok.
  
! 'arm_arch_v8a_hard'
       Add options for ARMv8-A and the hard-float variant of the AAPCS, if
       this is supported by the compiler; see the *note
       arm_arch_v8a_hard_ok: arm_arch_v8a_hard_ok. effective target
       keyword.
  
! 'arm_v8_1a_neon'
       Add options for ARMv8.1-A with Adv.SIMD support, if this is
       supported by the target; see the *note arm_v8_1a_neon_ok:
       arm_v8_1a_neon_ok. effective target keyword.
  
! 'arm_v8_2a_fp16_scalar'
       Add options for ARMv8.2-A with scalar FP16 support, if this is
       supported by the target; see the *note arm_v8_2a_fp16_scalar_ok:
       arm_v8_2a_fp16_scalar_ok. effective target keyword.
  
! 'arm_v8_2a_fp16_neon'
       Add options for ARMv8.2-A with Adv.SIMD FP16 support, if this is
       supported by the target; see the *note arm_v8_2a_fp16_neon_ok:
       arm_v8_2a_fp16_neon_ok. effective target keyword.
  
! 'arm_v8_2a_dotprod_neon'
       Add options for ARMv8.2-A with Adv.SIMD Dot Product support, if
       this is supported by the target; see the *note
       arm_v8_2a_dotprod_neon_ok:: effective target keyword.
  
! 'arm_fp16fml_neon'
!      Add options to enable generation of the 'VFMAL' and 'VFMSL'
       instructions, if this is supported by the target; see the *note
       arm_fp16fml_neon_ok:: effective target keyword.
  
! 'arm_dsp'
       Add options for ARM DSP intrinsics support, if this is supported by
       the target; see the *note arm_dsp_ok effective target keyword:
       arm_dsp_ok.
  
! 'bind_pic_locally'
       Add the target-specific flags needed to enable functions to bind
       locally when using pic/PIC passes in the testsuite.
  
! 'floatN'
!      Add the target-specific flags needed to use the '_FloatN' type.
  
! 'floatNx'
!      Add the target-specific flags needed to use the '_FloatNx' type.
  
! 'ieee'
       Add the target-specific flags needed to enable full IEEE compliance
       mode.
  
! 'mips16_attribute'
!      'mips16' function attributes.  Only MIPS targets support this
       feature, and only then in certain modes.
  
! 'nvptx_alias_ptx'
!      Enable using the PTX ISA directive '.alias' on nvptx targets.
  
! 'nvptx_alloca_ptx'
       Enable PTX 'alloca' on nvptx targets.
  
! 'riscv_a'
       Add the 'A' extension to the -march string on RISC-V targets.
  
! 'riscv_zaamo'
       Add the zaamo extension to the -march string on RISC-V targets.
  
! 'riscv_zabha'
       Add the zabha extension to the -march string on RISC-V targets.
  
! 'riscv_zacas'
       Add the zacas extension to the -march string on RISC-V targets.
  
! 'riscv_zalrsc'
       Add the zalrsc extension to the -march string on RISC-V targets.
  
! 'riscv_ztso'
       Add the ztso extension to the -march string on RISC-V targets.
  
! 'stack_size'
       Add the flags needed to define macro STACK_SIZE and set it to the
!      stack size limit associated with the *note 'stack_size' effective
       target: stack_size_et.
  
! 'sqrt_insn'
       Add the target-specific flags needed to enable hardware square root
       instructions, if any.
  
! 'tls'
       Add the target-specific flags needed to use thread-local storage.
  
! 'vect_early_break'
       Add the target-specific flags needed to enable early break
       vectorization for a target, if any.  This requires the target to
!      have an implementation of the 'cbranch' optab.
  
! 'weak_undefined'
       Add the flags needed to enable support for weak undefined symbols.
  
  
  File: gccint.info,  Node: Remove Options,  Next: Require Support,  Prev: Add Options,  Up: Test Directives
  
! 6.2.5 Features for 'dg-remove-options'
  --------------------------------------
  
! The supported values of FEATURE for directive 'dg-remove-options' are:
  
! 'riscv_a'
       Remove the 'A' extension and all implied extensions from the -march
       string on RISC-V targets.
  
! 'riscv_zaamo'
       Remove the zaamo extension from the -march string on RISC-V. If the
       'A' extension is present downgrade it to zalrsc.
  
! 'riscv_zabha'
       Remove the zabha extension and implied zaamo extension from the
       -march string on RISC-V.
  
! 'riscv_zacas'
       Remove the zacas extension and implied zaamo extension from the
       -march string on RISC-V.
  
! 'riscv_zalrsc'
       Remove the zalrsc extension from the -march string on RISC-V. If
       the 'A' extension is present downgrade it to zaamo.
  
! 'riscv_ztso'
       Remove the ztso extension from the -march string on RISC-V targets.
  
  
  File: gccint.info,  Node: Require Support,  Next: Final Actions,  Prev: Remove Options,  Up: Test Directives
  
! 6.2.6 Variants of 'dg-require-SUPPORT'
  --------------------------------------
  
! A few of the 'dg-require' directives take arguments.
  
! 'dg-require-iconv CODESET'
       Skip the test if the target does not support iconv.  CODESET is the
       codeset to convert to.
  
! 'dg-require-profiling PROFOPT'
       Skip the test if the target does not support profiling with option
       PROFOPT.
  
! 'dg-require-stack-check CHECK'
!      Skip the test if the target does not support the '-fstack-check'
!      option.  If CHECK is '""', support for '-fstack-check' is checked,
!      for '-fstack-check=("CHECK")' otherwise.
  
! 'dg-require-stack-size SIZE'
       Skip the test if the target does not support a stack size of SIZE.
  
! 'dg-require-visibility VIS'
!      Skip the test if the target does not support the 'visibility'
!      attribute.  If VIS is '""', support for 'visibility("hidden")' is
!      checked, for 'visibility("VIS")' otherwise.
  
!  The original 'dg-require' directives were defined before there was
  support for effective-target keywords.  The directives that do not take
  arguments could be replaced with effective-target keywords.
  
! 'dg-require-alias ""'
!      Skip the test if the target does not support the 'alias' attribute.
  
! 'dg-require-ascii-locale ""'
       Skip the test if the host does not support an ASCII locale.
  
! 'dg-require-compat-dfp ""'
!      Skip this test unless both compilers in a 'compat' testsuite
       support decimal floating point.
  
! 'dg-require-cxa-atexit ""'
!      Skip the test if the target does not support '__cxa_atexit'.  This
!      is equivalent to 'dg-require-effective-target cxa_atexit'.
  
! 'dg-require-dll ""'
       Skip the test if the target does not support DLL attributes.
  
! 'dg-require-dot ""'
!      Skip the test if the host does not have 'dot'.
  
! 'dg-require-fork ""'
!      Skip the test if the target does not support 'fork'.
  
! 'dg-require-gc-sections ""'
       Skip the test if the target's linker does not support the
!      '--gc-sections' flags.  This is equivalent to
!      'dg-require-effective-target gc-sections'.
  
! 'dg-require-host-local ""'
       Skip the test if the host is remote, rather than the same as the
       build system.  Some tests are incompatible with DejaGnu's handling
       of remote hosts, which involves copying the source file to the host
!      and compiling it with a relative path and "'-o a.out'".
  
! 'dg-require-linker-plugin ""'
       Skip the test is the target does not support the linker plugin.
!      This is equivalent to 'dg-require-effective-target linker_plugin'.
  
! 'dg-require-mkfifo ""'
!      Skip the test if the target does not support 'mkfifo'.
  
! 'dg-require-named-sections ""'
       Skip the test is the target does not support named sections.  This
!      is equivalent to 'dg-require-effective-target named_sections'.
  
! 'dg-require-weak ""'
       Skip the test if the target does not support weak symbols.
  
! 'dg-require-weak-override ""'
       Skip the test if the target does not support overriding weak
       symbols.
  
  
  File: gccint.info,  Node: Final Actions,  Prev: Require Support,  Up: Test Directives
  
! 6.2.7 Commands for use in 'dg-final'
  ------------------------------------
  
  The GCC testsuite defines the following directives to be used within
! 'dg-final'.
  
  6.2.7.1 Scan a particular file
  ..............................
  
! 'scan-file FILENAME REGEXP [{ target/xfail SELECTOR }]'
       Passes if REGEXP matches text in FILENAME.
! 'scan-file-not FILENAME REGEXP [{ target/xfail SELECTOR }]'
       Passes if REGEXP does not match text in FILENAME.
! 'scan-module MODULE REGEXP [{ target/xfail SELECTOR }]'
       Passes if REGEXP matches in Fortran module MODULE.
! 'dg-check-dot FILENAME'
!      Passes if FILENAME is a valid '.dot' file (by running 'dot -Tpng'
       on it, and verifying the exit code is 0).
! 'scan-sarif-file REGEXP [{ target/xfail SELECTOR }]'
       Passes if REGEXP matches text in the file generated by
!      '-fdiagnostics-format=sarif-file'.
! 'scan-sarif-file-not REGEXP [{ target/xfail SELECTOR }]'
       Passes if REGEXP does not match text in the file generated by
!      '-fdiagnostics-format=sarif-file'.
  
  6.2.7.2 Scan the assembly output
  ................................
  
! 'scan-assembler REGEX [{ target/xfail SELECTOR }]'
       Passes if REGEX matches text in the test's assembler output,
       excluding LTO sections.
  
! 'scan-raw-assembler REGEX [{ target/xfail SELECTOR }]'
       Passes if REGEX matches text in the test's assembler output,
       including LTO sections.
  
! 'scan-assembler-not REGEX [{ target/xfail SELECTOR }]'
       Passes if REGEX does not match text in the test's assembler output,
       excluding LTO sections.
  
! 'scan-assembler-times REGEX NUM [{ target/xfail SELECTOR }]'
       Passes if REGEX is matched exactly NUM times in the test's
       assembler output, excluding LTO sections.
  
! 'scan-assembler-bound REGEX CMP NUM [{ target/xfail SELECTOR }]'
       Passes if REGEX is matched CMP NUM times in the test's assembler
       output, excluding LTO sections.  CMP is a comparitor.
  
! 'scan-assembler-dem REGEX [{ target/xfail SELECTOR }]'
       Passes if REGEX matches text in the test's demangled assembler
       output, excluding LTO sections.
  
! 'scan-assembler-dem-not REGEX [{ target/xfail SELECTOR }]'
       Passes if REGEX does not match text in the test's demangled
       assembler output, excluding LTO sections.
  
! 'scan-assembler-symbol-section FUNCTIONS SECTION [{ target/xfail SELECTOR }]'
       Passes if FUNCTIONS are all in SECTION.  The caller needs to allow
!      for 'USER_LABEL_PREFIX' and different section name conventions.
  
! 'scan-symbol-section FILENAME FUNCTIONS SECTION [{ target/xfail SELECTOR }]'
       Passes if FUNCTIONS are all in SECTIONin FILENAME.  The same
!      caveats as for 'scan-assembler-symbol-section' apply.
  
! 'scan-hidden SYMBOL [{ target/xfail SELECTOR }]'
       Passes if SYMBOL is defined as a hidden symbol in the test's
       assembly output.
  
! 'scan-not-hidden SYMBOL [{ target/xfail SELECTOR }]'
       Passes if SYMBOL is not defined as a hidden symbol in the test's
       assembly output.
  
! 'check-function-bodies PREFIX TERMINATOR [OPTIONS [{ target/xfail SELECTOR } [MATCHED]]]'
       Looks through the source file for comments that give the expected
       assembly output for selected functions.  Each line of expected
       output starts with the prefix string PREFIX and the expected output
       for a function as a whole is followed by a line that starts with
       the string TERMINATOR.  Specifying an empty terminator is
!      equivalent to specifying '"*/"'.
  
       OPTIONS, if specified, is a list of regular expressions, each of
       which matches a full command-line option.  A non-empty list
--- 6532,6854 ----
       modes; see the *note arm_fp16_ok effective target keyword:
       arm_fp16_ok.
  
! â€˜arm_fp16_ieeeâ€™
       ARM IEEE 754-2008 format VFP half-precision floating point support.
       This feature is only supported by ARM targets and then only in
       certain modes; see the *note arm_fp16_ok effective target keyword:
       arm_fp16_ok.
  
! â€˜arm_fp16_alternativeâ€™
       ARM Alternative format VFP half-precision floating point support.
       This feature is only supported by ARM targets and then only in
       certain modes; see the *note arm_fp16_ok effective target keyword:
       arm_fp16_ok.
  
! â€˜arm_neon_fp16â€™
       NEON and half-precision floating point support.  Only ARM targets
       support this feature, and only then in certain modes; see the *note
       arm_neon_fp16_ok effective target keyword: arm_neon_fp16_ok.
  
! â€˜arm_vfp3â€™
       arm vfp3 floating point support; see the *note arm_vfp3_ok
       effective target keyword: arm_vfp3_ok.
  
! â€˜arm_arch_v8a_hardâ€™
       Add options for ARMv8-A and the hard-float variant of the AAPCS, if
       this is supported by the compiler; see the *note
       arm_arch_v8a_hard_ok: arm_arch_v8a_hard_ok. effective target
       keyword.
  
! â€˜arm_v8_1a_neonâ€™
       Add options for ARMv8.1-A with Adv.SIMD support, if this is
       supported by the target; see the *note arm_v8_1a_neon_ok:
       arm_v8_1a_neon_ok. effective target keyword.
  
! â€˜arm_v8_2a_fp16_scalarâ€™
       Add options for ARMv8.2-A with scalar FP16 support, if this is
       supported by the target; see the *note arm_v8_2a_fp16_scalar_ok:
       arm_v8_2a_fp16_scalar_ok. effective target keyword.
  
! â€˜arm_v8_2a_fp16_neonâ€™
       Add options for ARMv8.2-A with Adv.SIMD FP16 support, if this is
       supported by the target; see the *note arm_v8_2a_fp16_neon_ok:
       arm_v8_2a_fp16_neon_ok. effective target keyword.
  
! â€˜arm_v8_2a_dotprod_neonâ€™
       Add options for ARMv8.2-A with Adv.SIMD Dot Product support, if
       this is supported by the target; see the *note
       arm_v8_2a_dotprod_neon_ok:: effective target keyword.
  
! â€˜arm_fp16fml_neonâ€™
!      Add options to enable generation of the â€˜VFMALâ€™ and â€˜VFMSLâ€™
       instructions, if this is supported by the target; see the *note
       arm_fp16fml_neon_ok:: effective target keyword.
  
! â€˜arm_dspâ€™
       Add options for ARM DSP intrinsics support, if this is supported by
       the target; see the *note arm_dsp_ok effective target keyword:
       arm_dsp_ok.
  
! â€˜bind_pic_locallyâ€™
       Add the target-specific flags needed to enable functions to bind
       locally when using pic/PIC passes in the testsuite.
  
! â€˜floatNâ€™
!      Add the target-specific flags needed to use the â€˜_FloatNâ€™ type.
  
! â€˜floatNxâ€™
!      Add the target-specific flags needed to use the â€˜_FloatNxâ€™ type.
  
! â€˜ieeeâ€™
       Add the target-specific flags needed to enable full IEEE compliance
       mode.
  
! â€˜mips16_attributeâ€™
!      â€˜mips16â€™ function attributes.  Only MIPS targets support this
       feature, and only then in certain modes.
  
! â€˜nvptx_alias_ptxâ€™
!      Enable using the PTX ISA directive â€˜.aliasâ€™ on nvptx targets.
  
! â€˜nvptx_alloca_ptxâ€™
       Enable PTX 'alloca' on nvptx targets.
  
! â€˜riscv_aâ€™
       Add the 'A' extension to the -march string on RISC-V targets.
  
! â€˜riscv_zaamoâ€™
       Add the zaamo extension to the -march string on RISC-V targets.
  
! â€˜riscv_zabhaâ€™
       Add the zabha extension to the -march string on RISC-V targets.
  
! â€˜riscv_zacasâ€™
       Add the zacas extension to the -march string on RISC-V targets.
  
! â€˜riscv_zalrscâ€™
       Add the zalrsc extension to the -march string on RISC-V targets.
  
! â€˜riscv_ztsoâ€™
       Add the ztso extension to the -march string on RISC-V targets.
  
! â€˜stack_sizeâ€™
       Add the flags needed to define macro STACK_SIZE and set it to the
!      stack size limit associated with the *note â€˜stack_sizeâ€™ effective
       target: stack_size_et.
  
! â€˜sqrt_insnâ€™
       Add the target-specific flags needed to enable hardware square root
       instructions, if any.
  
! â€˜tlsâ€™
       Add the target-specific flags needed to use thread-local storage.
  
! â€˜vect_early_breakâ€™
       Add the target-specific flags needed to enable early break
       vectorization for a target, if any.  This requires the target to
!      have an implementation of the â€˜cbranchâ€™ optab.
  
! â€˜weak_undefinedâ€™
       Add the flags needed to enable support for weak undefined symbols.
  
  
  File: gccint.info,  Node: Remove Options,  Next: Require Support,  Prev: Add Options,  Up: Test Directives
  
! 6.2.5 Features for â€˜dg-remove-optionsâ€™
  --------------------------------------
  
! The supported values of FEATURE for directive â€˜dg-remove-optionsâ€™ are:
  
! â€˜riscv_aâ€™
       Remove the 'A' extension and all implied extensions from the -march
       string on RISC-V targets.
  
! â€˜riscv_zaamoâ€™
       Remove the zaamo extension from the -march string on RISC-V. If the
       'A' extension is present downgrade it to zalrsc.
  
! â€˜riscv_zabhaâ€™
       Remove the zabha extension and implied zaamo extension from the
       -march string on RISC-V.
  
! â€˜riscv_zacasâ€™
       Remove the zacas extension and implied zaamo extension from the
       -march string on RISC-V.
  
! â€˜riscv_zalrscâ€™
       Remove the zalrsc extension from the -march string on RISC-V. If
       the 'A' extension is present downgrade it to zaamo.
  
! â€˜riscv_ztsoâ€™
       Remove the ztso extension from the -march string on RISC-V targets.
  
  
  File: gccint.info,  Node: Require Support,  Next: Final Actions,  Prev: Remove Options,  Up: Test Directives
  
! 6.2.6 Variants of â€˜dg-require-SUPPORTâ€™
  --------------------------------------
  
! A few of the â€˜dg-requireâ€™ directives take arguments.
  
! â€˜dg-require-iconv CODESETâ€™
       Skip the test if the target does not support iconv.  CODESET is the
       codeset to convert to.
  
! â€˜dg-require-profiling PROFOPTâ€™
       Skip the test if the target does not support profiling with option
       PROFOPT.
  
! â€˜dg-require-stack-check CHECKâ€™
!      Skip the test if the target does not support the â€˜-fstack-checkâ€™
!      option.  If CHECK is â€˜""â€™, support for â€˜-fstack-checkâ€™ is checked,
!      for â€˜-fstack-check=("CHECK")â€™ otherwise.
  
! â€˜dg-require-stack-size SIZEâ€™
       Skip the test if the target does not support a stack size of SIZE.
  
! â€˜dg-require-visibility VISâ€™
!      Skip the test if the target does not support the â€˜visibilityâ€™
!      attribute.  If VIS is â€˜""â€™, support for â€˜visibility("hidden")â€™ is
!      checked, for â€˜visibility("VIS")â€™ otherwise.
  
!  The original â€˜dg-requireâ€™ directives were defined before there was
  support for effective-target keywords.  The directives that do not take
  arguments could be replaced with effective-target keywords.
  
! â€˜dg-require-alias ""â€™
!      Skip the test if the target does not support the â€˜aliasâ€™ attribute.
  
! â€˜dg-require-ascii-locale ""â€™
       Skip the test if the host does not support an ASCII locale.
  
! â€˜dg-require-compat-dfp ""â€™
!      Skip this test unless both compilers in a â€˜compatâ€™ testsuite
       support decimal floating point.
  
! â€˜dg-require-cxa-atexit ""â€™
!      Skip the test if the target does not support â€˜__cxa_atexitâ€™.  This
!      is equivalent to â€˜dg-require-effective-target cxa_atexitâ€™.
  
! â€˜dg-require-dll ""â€™
       Skip the test if the target does not support DLL attributes.
  
! â€˜dg-require-dot ""â€™
!      Skip the test if the host does not have â€˜dotâ€™.
  
! â€˜dg-require-fork ""â€™
!      Skip the test if the target does not support â€˜forkâ€™.
  
! â€˜dg-require-gc-sections ""â€™
       Skip the test if the target's linker does not support the
!      â€˜--gc-sectionsâ€™ flags.  This is equivalent to
!      â€˜dg-require-effective-target gc-sectionsâ€™.
  
! â€˜dg-require-host-local ""â€™
       Skip the test if the host is remote, rather than the same as the
       build system.  Some tests are incompatible with DejaGnu's handling
       of remote hosts, which involves copying the source file to the host
!      and compiling it with a relative path and "â€˜-o a.outâ€™".
  
! â€˜dg-require-linker-plugin ""â€™
       Skip the test is the target does not support the linker plugin.
!      This is equivalent to â€˜dg-require-effective-target linker_pluginâ€™.
  
! â€˜dg-require-mkfifo ""â€™
!      Skip the test if the target does not support â€˜mkfifoâ€™.
  
! â€˜dg-require-named-sections ""â€™
       Skip the test is the target does not support named sections.  This
!      is equivalent to â€˜dg-require-effective-target named_sectionsâ€™.
  
! â€˜dg-require-weak ""â€™
       Skip the test if the target does not support weak symbols.
  
! â€˜dg-require-weak-override ""â€™
       Skip the test if the target does not support overriding weak
       symbols.
  
  
  File: gccint.info,  Node: Final Actions,  Prev: Require Support,  Up: Test Directives
  
! 6.2.7 Commands for use in â€˜dg-finalâ€™
  ------------------------------------
  
  The GCC testsuite defines the following directives to be used within
! â€˜dg-finalâ€™.
  
  6.2.7.1 Scan a particular file
  ..............................
  
! â€˜scan-file FILENAME REGEXP [{ target/xfail SELECTOR }]â€™
       Passes if REGEXP matches text in FILENAME.
! â€˜scan-file-not FILENAME REGEXP [{ target/xfail SELECTOR }]â€™
       Passes if REGEXP does not match text in FILENAME.
! â€˜scan-module MODULE REGEXP [{ target/xfail SELECTOR }]â€™
       Passes if REGEXP matches in Fortran module MODULE.
! â€˜dg-check-dot FILENAMEâ€™
!      Passes if FILENAME is a valid â€˜.dotâ€™ file (by running â€˜dot -Tpngâ€™
       on it, and verifying the exit code is 0).
! â€˜scan-sarif-file REGEXP [{ target/xfail SELECTOR }]â€™
       Passes if REGEXP matches text in the file generated by
!      â€˜-fdiagnostics-format=sarif-fileâ€™.
! â€˜scan-sarif-file-not REGEXP [{ target/xfail SELECTOR }]â€™
       Passes if REGEXP does not match text in the file generated by
!      â€˜-fdiagnostics-format=sarif-fileâ€™.
  
  6.2.7.2 Scan the assembly output
  ................................
  
! â€˜scan-assembler REGEX [{ target/xfail SELECTOR }]â€™
       Passes if REGEX matches text in the test's assembler output,
       excluding LTO sections.
  
! â€˜scan-raw-assembler REGEX [{ target/xfail SELECTOR }]â€™
       Passes if REGEX matches text in the test's assembler output,
       including LTO sections.
  
! â€˜scan-assembler-not REGEX [{ target/xfail SELECTOR }]â€™
       Passes if REGEX does not match text in the test's assembler output,
       excluding LTO sections.
  
! â€˜scan-assembler-times REGEX NUM [{ target/xfail SELECTOR }]â€™
       Passes if REGEX is matched exactly NUM times in the test's
       assembler output, excluding LTO sections.
  
! â€˜scan-assembler-bound REGEX CMP NUM [{ target/xfail SELECTOR }]â€™
       Passes if REGEX is matched CMP NUM times in the test's assembler
       output, excluding LTO sections.  CMP is a comparitor.
  
! â€˜scan-assembler-dem REGEX [{ target/xfail SELECTOR }]â€™
       Passes if REGEX matches text in the test's demangled assembler
       output, excluding LTO sections.
  
! â€˜scan-assembler-dem-not REGEX [{ target/xfail SELECTOR }]â€™
       Passes if REGEX does not match text in the test's demangled
       assembler output, excluding LTO sections.
  
! â€˜scan-assembler-symbol-section FUNCTIONS SECTION [{ target/xfail SELECTOR }]â€™
       Passes if FUNCTIONS are all in SECTION.  The caller needs to allow
!      for â€˜USER_LABEL_PREFIXâ€™ and different section name conventions.
  
! â€˜scan-symbol-section FILENAME FUNCTIONS SECTION [{ target/xfail SELECTOR }]â€™
       Passes if FUNCTIONS are all in SECTIONin FILENAME.  The same
!      caveats as for â€˜scan-assembler-symbol-sectionâ€™ apply.
  
! â€˜scan-hidden SYMBOL [{ target/xfail SELECTOR }]â€™
       Passes if SYMBOL is defined as a hidden symbol in the test's
       assembly output.
  
! â€˜scan-not-hidden SYMBOL [{ target/xfail SELECTOR }]â€™
       Passes if SYMBOL is not defined as a hidden symbol in the test's
       assembly output.
  
! â€˜check-function-bodies PREFIX TERMINATOR [OPTIONS [{ target/xfail SELECTOR } [MATCHED]]]â€™
       Looks through the source file for comments that give the expected
       assembly output for selected functions.  Each line of expected
       output starts with the prefix string PREFIX and the expected output
       for a function as a whole is followed by a line that starts with
       the string TERMINATOR.  Specifying an empty terminator is
!      equivalent to specifying â€˜"*/"â€™.
  
       OPTIONS, if specified, is a list of regular expressions, each of
       which matches a full command-line option.  A non-empty list
*************** The GCC testsuite defines the following
*** 6861,6877 ****
       both cases, whitespace after PREFIX is not significant.
  
       Depending on the configuration (see
!      'configure_check-function-bodies' in
!      'gcc/testsuite/lib/scanasm.exp'), the test may discard from the
!      compiler's assembly output directives such as '.cfi_startproc',
!      local label definitions such as '.LFB0', and more.  This behavior
       can be overridden using the optional MATCHED argument, which
       specifies a regexp for lines that should not be discarded in this
       way.
  
       The test then matches the result against the expected output for a
       function as a single regular expression.  This means that later
!      lines can use backslashes to refer back to '(...)' captures on
       earlier lines.  For example:
  
            /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
--- 6866,6882 ----
       both cases, whitespace after PREFIX is not significant.
  
       Depending on the configuration (see
!      â€˜configure_check-function-bodiesâ€™ in
!      â€˜gcc/testsuite/lib/scanasm.expâ€™), the test may discard from the
!      compiler's assembly output directives such as â€˜.cfi_startprocâ€™,
!      local label definitions such as â€˜.LFB0â€™, and more.  This behavior
       can be overridden using the optional MATCHED argument, which
       specifies a regexp for lines that should not be discarded in this
       way.
  
       The test then matches the result against the expected output for a
       function as a single regular expression.  This means that later
!      lines can use backslashes to refer back to â€˜(...)â€™ captures on
       earlier lines.  For example:
  
            /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
*************** The GCC testsuite defines the following
*** 6892,6904 ****
            */
            svint8_t add_b0_s8_m (...) { ... }
  
!      checks whether the implementations of 'add_w0_s8_m' and
!      'add_b0_s8_m' match the regular expressions given.  The test only
!      runs when '-DCHECK_ASM' is passed on the command line.
  
       It is possible to create non-capturing multi-line regular
!      expression groups of the form '(A|B|...)' by putting the '(', '|'
!      and ')' on separate lines (each still using PREFIX).  For example:
  
            /*
            ** cmple_f16_tied:
--- 6897,6909 ----
            */
            svint8_t add_b0_s8_m (...) { ... }
  
!      checks whether the implementations of â€˜add_w0_s8_mâ€™ and
!      â€˜add_b0_s8_mâ€™ match the regular expressions given.  The test only
!      runs when â€˜-DCHECK_ASMâ€™ is passed on the command line.
  
       It is possible to create non-capturing multi-line regular
!      expression groups of the form â€˜(A|B|...)â€™ by putting the â€˜(â€™, â€˜|â€™
!      and â€˜)â€™ on separate lines (each still using PREFIX).  For example:
  
            /*
            ** cmple_f16_tied:
*************** The GCC testsuite defines the following
*** 6911,6919 ****
            */
            svbool_t cmple_f16_tied (...) { ... }
  
!      checks whether 'cmple_f16_tied' is implemented by the 'fcmge'
!      instruction followed by 'ret' or by the 'fcmle' instruction
!      followed by 'ret'.  The test is still a single regular rexpression.
  
       A line containing just:
  
--- 6916,6924 ----
            */
            svbool_t cmple_f16_tied (...) { ... }
  
!      checks whether â€˜cmple_f16_tiedâ€™ is implemented by the â€˜fcmgeâ€™
!      instruction followed by â€˜retâ€™ or by the â€˜fcmleâ€™ instruction
!      followed by â€˜retâ€™.  The test is still a single regular rexpression.
  
       A line containing just:
  
*************** The GCC testsuite defines the following
*** 6925,6950 ****
  6.2.7.3 Scan optimization dump files
  ....................................
  
! These commands are available for KIND of 'tree', 'ltrans-tree',
! 'offload-tree', 'rtl', 'ltrans-rtl', 'offload-rtl', 'ipa',
! 'offload-ipa', and 'wpa-ipa'.
  
! 'scan-KIND-dump REGEX SUFFIX [{ target/xfail SELECTOR }]'
       Passes if REGEX matches text in the dump file with suffix SUFFIX.
  
! 'scan-KIND-dump-not REGEX SUFFIX [{ target/xfail SELECTOR }]'
       Passes if REGEX does not match text in the dump file with suffix
       SUFFIX.
  
! 'scan-KIND-dump-times REGEX NUM SUFFIX [{ target/xfail SELECTOR }]'
       Passes if REGEX is found exactly NUM times in the dump file with
       suffix SUFFIX.
  
! 'scan-KIND-dump-dem REGEX SUFFIX [{ target/xfail SELECTOR }]'
       Passes if REGEX matches demangled text in the dump file with suffix
       SUFFIX.
  
! 'scan-KIND-dump-dem-not REGEX SUFFIX [{ target/xfail SELECTOR }]'
       Passes if REGEX does not match demangled text in the dump file with
       suffix SUFFIX.
  
--- 6930,6955 ----
  6.2.7.3 Scan optimization dump files
  ....................................
  
! These commands are available for KIND of â€˜treeâ€™, â€˜ltrans-treeâ€™,
! â€˜offload-treeâ€™, â€˜rtlâ€™, â€˜ltrans-rtlâ€™, â€˜offload-rtlâ€™, â€˜ipaâ€™,
! â€˜offload-ipaâ€™, and â€˜wpa-ipaâ€™.
  
! â€˜scan-KIND-dump REGEX SUFFIX [{ target/xfail SELECTOR }]â€™
       Passes if REGEX matches text in the dump file with suffix SUFFIX.
  
! â€˜scan-KIND-dump-not REGEX SUFFIX [{ target/xfail SELECTOR }]â€™
       Passes if REGEX does not match text in the dump file with suffix
       SUFFIX.
  
! â€˜scan-KIND-dump-times REGEX NUM SUFFIX [{ target/xfail SELECTOR }]â€™
       Passes if REGEX is found exactly NUM times in the dump file with
       suffix SUFFIX.
  
! â€˜scan-KIND-dump-dem REGEX SUFFIX [{ target/xfail SELECTOR }]â€™
       Passes if REGEX matches demangled text in the dump file with suffix
       SUFFIX.
  
! â€˜scan-KIND-dump-dem-not REGEX SUFFIX [{ target/xfail SELECTOR }]â€™
       Passes if REGEX does not match demangled text in the dump file with
       suffix SUFFIX.
  
*************** instances 1, 2, 3 of a tree pass "mypass
*** 6958,6965 ****
       /* { dg-options "-fdump-tree-mypass" } */
       /* { dg-final { scan-tree-dump "code has been optimized" "mypass\[1-3\]" } } */
  
!  The 'offload-...' ones by default separately scan the dump file of each
! enabled offload target.  You may use the 'only_for_offload_target'
  wrapper to restrict the scanning to one specific offload target:
  
       /* { dg-do link { target offload_target_amdgcn } } */
--- 6963,6970 ----
       /* { dg-options "-fdump-tree-mypass" } */
       /* { dg-final { scan-tree-dump "code has been optimized" "mypass\[1-3\]" } } */
  
!  The â€˜offload-...â€™ ones by default separately scan the dump file of each
! enabled offload target.  You may use the â€˜only_for_offload_targetâ€™
  wrapper to restrict the scanning to one specific offload target:
  
       /* { dg-do link { target offload_target_amdgcn } } */
*************** wrapper to restrict the scanning to one
*** 6967,6977 ****
       /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-ipa-dump REGEX_AMDGCN simdclone } } */
  
   This test case is active if GCN offload compilation is enabled (but
! potentially also additional offload targets).  The 'simdclone' IPA dump
  file is (potentially) produced for all offload targets, but only the GCN
  offload one is scanned.
  
!  If a test case doesn't have a '{ target SELECTOR }', and you need to
  scan, for example, for different REGEXes for each of host and
  potentially several offload targets, use a pattern like this:
  
--- 6972,6982 ----
       /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-ipa-dump REGEX_AMDGCN simdclone } } */
  
   This test case is active if GCN offload compilation is enabled (but
! potentially also additional offload targets).  The â€˜simdcloneâ€™ IPA dump
  file is (potentially) produced for all offload targets, but only the GCN
  offload one is scanned.
  
!  If a test case doesn't have a â€˜{ target SELECTOR }â€™, and you need to
  scan, for example, for different REGEXes for each of host and
  potentially several offload targets, use a pattern like this:
  
*************** in the nvptx offload compilation dump fi
*** 6988,7017 ****
  6.2.7.4 Check for output files
  ..............................
  
! 'output-exists [{ target/xfail SELECTOR }]'
       Passes if compiler output file exists.
  
! 'output-exists-not [{ target/xfail SELECTOR }]'
       Passes if compiler output file does not exist.
  
! 'scan-symbol REGEXP [{ target/xfail SELECTOR }]'
       Passes if the pattern is present in the final executable.
  
! 'scan-symbol-not REGEXP [{ target/xfail SELECTOR }]'
       Passes if the pattern is absent from the final executable.
  
! 6.2.7.5 Checks for 'gcov' tests
  ...............................
  
! 'run-gcov SOURCEFILE'
!      Check line counts in 'gcov' tests.
  
! 'run-gcov [branches] [calls] { OPTS SOURCEFILE }'
       Check branch and/or call counts, in addition to line counts, in
!      'gcov' tests.
  
! 'run-gcov-pytest { SOURCEFILE PYTEST_FILE }'
!      Check output of 'gcov' intermediate format with a pytest script.
  
  6.2.7.6 Clean up generated test files
  .....................................
--- 6993,7022 ----
  6.2.7.4 Check for output files
  ..............................
  
! â€˜output-exists [{ target/xfail SELECTOR }]â€™
       Passes if compiler output file exists.
  
! â€˜output-exists-not [{ target/xfail SELECTOR }]â€™
       Passes if compiler output file does not exist.
  
! â€˜scan-symbol REGEXP [{ target/xfail SELECTOR }]â€™
       Passes if the pattern is present in the final executable.
  
! â€˜scan-symbol-not REGEXP [{ target/xfail SELECTOR }]â€™
       Passes if the pattern is absent from the final executable.
  
! 6.2.7.5 Checks for â€˜gcovâ€™ tests
  ...............................
  
! â€˜run-gcov SOURCEFILEâ€™
!      Check line counts in â€˜gcovâ€™ tests.
  
! â€˜run-gcov [branches] [calls] { OPTS SOURCEFILE }â€™
       Check branch and/or call counts, in addition to line counts, in
!      â€˜gcovâ€™ tests.
  
! â€˜run-gcov-pytest { SOURCEFILE PYTEST_FILE }â€™
!      Check output of â€˜gcovâ€™ intermediate format with a pytest script.
  
  6.2.7.6 Clean up generated test files
  .....................................
*************** passed to the tool and schedules a final
*** 7023,7032 ****
  
   There are, however, following additional cleanup directives that can be
  used to annotate a testcase "manually".
! 'cleanup-coverage-files'
       Removes coverage data files generated for this test.
  
! 'cleanup-modules "LIST-OF-EXTRA-MODULES"'
       Removes Fortran module files generated for this test, excluding the
       module names listed in keep-modules.  Cleaning up module files is
       usually done automatically by the testsuite by looking at the
--- 7028,7037 ----
  
   There are, however, following additional cleanup directives that can be
  used to annotate a testcase "manually".
! â€˜cleanup-coverage-filesâ€™
       Removes coverage data files generated for this test.
  
! â€˜cleanup-modules "LIST-OF-EXTRA-MODULES"â€™
       Removes Fortran module files generated for this test, excluding the
       module names listed in keep-modules.  Cleaning up module files is
       usually done automatically by the testsuite by looking at the
*************** used to annotate a testcase "manually".
*** 7043,7049 ****
            ! { dg-final { cleanup-modules "mod1 mod2" } } ! redundant
            ! { dg-final { keep-modules "mod3 mod4" } }
  
! 'keep-modules "LIST-OF-MODULES-NOT-TO-DELETE"'
       Whitespace separated list of module names that should not be
       deleted by cleanup-modules.  If the list of modules is empty, all
       modules defined in this file are kept.
--- 7048,7054 ----
            ! { dg-final { cleanup-modules "mod1 mod2" } } ! redundant
            ! { dg-final { keep-modules "mod3 mod4" } }
  
! â€˜keep-modules "LIST-OF-MODULES-NOT-TO-DELETE"â€™
       Whitespace separated list of module names that should not be
       deleted by cleanup-modules.  If the list of modules is empty, all
       modules defined in this file are kept.
*************** used to annotate a testcase "manually".
*** 7056,7071 ****
            ! { dg-final { keep-modules "keep1 keep2" } } ! just keep these two
            ! { dg-final { keep-modules "" } } ! keep all
  
! 'dg-keep-saved-temps "LIST-OF-SUFFIXES-NOT-TO-DELETE"'
       Whitespace separated list of suffixes that should not be deleted
!      automatically in a testcase that uses '-save-temps'.
            // { dg-options "-save-temps -fpch-preprocess -I." }
            int main() { return 0; }
            // { dg-keep-saved-temps ".s" } ! just keep assembler file
            // { dg-keep-saved-temps ".s" ".i" } ! ... and .i
            // { dg-keep-saved-temps ".ii" ".o" } ! or just .ii and .o
  
! 'cleanup-profile-file'
       Removes profiling files generated for this test.
  
  
--- 7061,7076 ----
            ! { dg-final { keep-modules "keep1 keep2" } } ! just keep these two
            ! { dg-final { keep-modules "" } } ! keep all
  
! â€˜dg-keep-saved-temps "LIST-OF-SUFFIXES-NOT-TO-DELETE"â€™
       Whitespace separated list of suffixes that should not be deleted
!      automatically in a testcase that uses â€˜-save-tempsâ€™.
            // { dg-options "-save-temps -fpch-preprocess -I." }
            int main() { return 0; }
            // { dg-keep-saved-temps ".s" } ! just keep assembler file
            // { dg-keep-saved-temps ".s" ".i" } ! ... and .i
            // { dg-keep-saved-temps ".ii" ".o" } ! or just .ii and .o
  
! â€˜cleanup-profile-fileâ€™
       Removes profiling files generated for this test.
  
  
*************** File: gccint.info,  Node: Ada Tests,  Ne
*** 7077,7102 ****
  The Ada testsuite includes executable tests from the ACATS testsuite,
  publicly available at <http://www.ada-auth.org/acats.html>.
  
!  These tests are integrated in the GCC testsuite in the 'ada/acats'
! directory, and enabled automatically when running 'make check', assuming
  the Ada language has been enabled when configuring GCC.
  
!  You can also run the Ada testsuite independently, using 'make
! check-ada', or run a subset of the tests by specifying which chapter to
  run, e.g.:
  
       $ make check-ada CHAPTERS="c3 c9"
  
   The tests are organized by directory, each directory corresponding to a
! chapter of the Ada Reference Manual.  So for example, 'c9' corresponds
  to chapter 9, which deals with tasking features of the language.
  
!  The tests are run using two 'sh' scripts: 'run_acats' and 'run_all.sh'.
  To run the tests using a simulator or a cross target, see the small
! customization section at the top of 'run_all.sh'.
  
   These tests are run using the build tree: they can be run without doing
! a 'make install'.
  
  
  File: gccint.info,  Node: C Tests,  Next: LTO Testing,  Prev: Ada Tests,  Up: Testsuites
--- 7082,7107 ----
  The Ada testsuite includes executable tests from the ACATS testsuite,
  publicly available at <http://www.ada-auth.org/acats.html>.
  
!  These tests are integrated in the GCC testsuite in the â€˜ada/acatsâ€™
! directory, and enabled automatically when running â€˜make checkâ€™, assuming
  the Ada language has been enabled when configuring GCC.
  
!  You can also run the Ada testsuite independently, using â€˜make
! check-adaâ€™, or run a subset of the tests by specifying which chapter to
  run, e.g.:
  
       $ make check-ada CHAPTERS="c3 c9"
  
   The tests are organized by directory, each directory corresponding to a
! chapter of the Ada Reference Manual.  So for example, â€˜c9â€™ corresponds
  to chapter 9, which deals with tasking features of the language.
  
!  The tests are run using two â€˜shâ€™ scripts: â€˜run_acatsâ€™ and â€˜run_all.shâ€™.
  To run the tests using a simulator or a cross target, see the small
! customization section at the top of â€˜run_all.shâ€™.
  
   These tests are run using the build tree: they can be run without doing
! a â€˜make installâ€™.
  
  
  File: gccint.info,  Node: C Tests,  Next: LTO Testing,  Prev: Ada Tests,  Up: Testsuites
*************** File: gccint.info,  Node: C Tests,  Next
*** 7104,7146 ****
  6.4 C Language Testsuites
  =========================
  
! GCC contains the following C language testsuites, in the 'gcc/testsuite'
  directory:
  
! 'gcc.dg'
       This contains tests of particular features of the C compiler, using
!      the more modern 'dg' harness.  Correctness tests for various
       compiler features should go here if possible.
  
       Magic comments determine whether the file is preprocessed,
       compiled, linked or run.  In these tests, error and warning message
       texts are compared against expected texts or regular expressions
!      given in comments.  These tests are run with the options '-ansi
!      -pedantic' unless other options are given in the test.  Except as
       noted below they are not run with multiple optimization options.
! 'gcc.dg/compat'
       This subdirectory contains tests for binary compatibility using
!      'lib/compat.exp', which in turn uses the language-independent
       support (*note Support for testing binary compatibility: compat
       Testing.).
! 'gcc.dg/cpp'
       This subdirectory contains tests of the preprocessor.
! 'gcc.dg/debug'
       This subdirectory contains tests for debug formats.  Tests in this
       subdirectory are run for each debug format that the compiler
       supports.
! 'gcc.dg/format'
!      This subdirectory contains tests of the '-Wformat' format checking.
!      Tests in this directory are run with and without '-DWIDE'.
! 'gcc.dg/noncompile'
       This subdirectory contains tests of code that should not compile
       and does not need any special compilation options.  They are run
       with multiple optimization options, since sometimes invalid code
       crashes the compiler with optimization.
! 'gcc.dg/special'
       FIXME: describe this.
  
! 'gcc.c-torture'
       This contains particular code fragments which have historically
       broken easily.  These tests are run with multiple optimization
       options, so tests for features which only break at some
--- 7109,7151 ----
  6.4 C Language Testsuites
  =========================
  
! GCC contains the following C language testsuites, in the â€˜gcc/testsuiteâ€™
  directory:
  
! â€˜gcc.dgâ€™
       This contains tests of particular features of the C compiler, using
!      the more modern â€˜dgâ€™ harness.  Correctness tests for various
       compiler features should go here if possible.
  
       Magic comments determine whether the file is preprocessed,
       compiled, linked or run.  In these tests, error and warning message
       texts are compared against expected texts or regular expressions
!      given in comments.  These tests are run with the options â€˜-ansi
!      -pedanticâ€™ unless other options are given in the test.  Except as
       noted below they are not run with multiple optimization options.
! â€˜gcc.dg/compatâ€™
       This subdirectory contains tests for binary compatibility using
!      â€˜lib/compat.expâ€™, which in turn uses the language-independent
       support (*note Support for testing binary compatibility: compat
       Testing.).
! â€˜gcc.dg/cppâ€™
       This subdirectory contains tests of the preprocessor.
! â€˜gcc.dg/debugâ€™
       This subdirectory contains tests for debug formats.  Tests in this
       subdirectory are run for each debug format that the compiler
       supports.
! â€˜gcc.dg/formatâ€™
!      This subdirectory contains tests of the â€˜-Wformatâ€™ format checking.
!      Tests in this directory are run with and without â€˜-DWIDEâ€™.
! â€˜gcc.dg/noncompileâ€™
       This subdirectory contains tests of code that should not compile
       and does not need any special compilation options.  They are run
       with multiple optimization options, since sometimes invalid code
       crashes the compiler with optimization.
! â€˜gcc.dg/specialâ€™
       FIXME: describe this.
  
! â€˜gcc.c-tortureâ€™
       This contains particular code fragments which have historically
       broken easily.  These tests are run with multiple optimization
       options, so tests for features which only break at some
*************** directory:
*** 7149,7204 ****
       separate the correctness tests cleanly from the code quality tests,
       but it hasn't been done yet.
  
! 'gcc.c-torture/compat'
       FIXME: describe this.
  
       This directory should probably not be used for new tests.
! 'gcc.c-torture/compile'
       This testsuite contains test cases that should compile, but do not
       need to link or run.  These test cases are compiled with several
       different combinations of optimization options.  All warnings are
       disabled for these test cases, so this directory is not suitable if
       you wish to test for the presence or absence of compiler warnings.
       While special options can be set, and tests disabled on specific
!      platforms, by the use of '.x' files, mostly these test cases should
       not contain platform dependencies.  FIXME: discuss how defines such
!      as 'STACK_SIZE' are used.
! 'gcc.c-torture/execute'
       This testsuite contains test cases that should compile, link and
!      run; otherwise the same comments as for 'gcc.c-torture/compile'
       apply.
! 'gcc.c-torture/execute/ieee'
       This contains tests which are specific to IEEE floating point.
! 'gcc.c-torture/unsorted'
       FIXME: describe this.
  
       This directory should probably not be used for new tests.
! 'gcc.misc-tests'
       This directory contains C tests that require special handling.
       Some of these tests have individual expect files, and others share
       special-purpose expect files:
  
!      'bprob*.c'
!           Test '-fbranch-probabilities' using
!           'gcc.misc-tests/bprob.exp', which in turn uses the generic,
            language-independent framework (*note Support for testing
            profile-directed optimizations: profopt Testing.).
  
!      'gcov*.c'
!           Test 'gcov' output using 'gcov.exp', which in turn uses the
            language-independent support (*note Support for testing gcov:
            gcov Testing.).
  
!      'i386-pf-*.c'
            Test i386-specific support for data prefetch using
!           'i386-prefetch.exp'.
  
! 'gcc.test-framework'
!      'dg-*.c'
            Test the testsuite itself using
!           'gcc.test-framework/test-framework.exp'.
  
!  FIXME: merge in 'testsuite/README.gcc' and discuss the format of test
  cases and magic comments more.
  
  
--- 7154,7209 ----
       separate the correctness tests cleanly from the code quality tests,
       but it hasn't been done yet.
  
! â€˜gcc.c-torture/compatâ€™
       FIXME: describe this.
  
       This directory should probably not be used for new tests.
! â€˜gcc.c-torture/compileâ€™
       This testsuite contains test cases that should compile, but do not
       need to link or run.  These test cases are compiled with several
       different combinations of optimization options.  All warnings are
       disabled for these test cases, so this directory is not suitable if
       you wish to test for the presence or absence of compiler warnings.
       While special options can be set, and tests disabled on specific
!      platforms, by the use of â€˜.xâ€™ files, mostly these test cases should
       not contain platform dependencies.  FIXME: discuss how defines such
!      as â€˜STACK_SIZEâ€™ are used.
! â€˜gcc.c-torture/executeâ€™
       This testsuite contains test cases that should compile, link and
!      run; otherwise the same comments as for â€˜gcc.c-torture/compileâ€™
       apply.
! â€˜gcc.c-torture/execute/ieeeâ€™
       This contains tests which are specific to IEEE floating point.
! â€˜gcc.c-torture/unsortedâ€™
       FIXME: describe this.
  
       This directory should probably not be used for new tests.
! â€˜gcc.misc-testsâ€™
       This directory contains C tests that require special handling.
       Some of these tests have individual expect files, and others share
       special-purpose expect files:
  
!      â€˜bprob*.câ€™
!           Test â€˜-fbranch-probabilitiesâ€™ using
!           â€˜gcc.misc-tests/bprob.expâ€™, which in turn uses the generic,
            language-independent framework (*note Support for testing
            profile-directed optimizations: profopt Testing.).
  
!      â€˜gcov*.câ€™
!           Test â€˜gcovâ€™ output using â€˜gcov.expâ€™, which in turn uses the
            language-independent support (*note Support for testing gcov:
            gcov Testing.).
  
!      â€˜i386-pf-*.câ€™
            Test i386-specific support for data prefetch using
!           â€˜i386-prefetch.expâ€™.
  
! â€˜gcc.test-frameworkâ€™
!      â€˜dg-*.câ€™
            Test the testsuite itself using
!           â€˜gcc.test-framework/test-framework.expâ€™.
  
!  FIXME: merge in â€˜testsuite/README.gccâ€™ and discuss the format of test
  cases and magic comments more.
  
  
*************** Tests for link-time optimizations usuall
*** 7211,7287 ****
  that are compiled separately, perhaps with different sets of options.
  There are several special-purpose test directives used for these tests.
  
! '{ dg-lto-do DO-WHAT-KEYWORD }'
       DO-WHAT-KEYWORD specifies how the test is compiled and whether it
       is executed.  It is one of:
  
!      'assemble'
!           Compile with '-c' to produce a relocatable object file.
!      'link'
            Compile, assemble, and link to produce an executable file.
!      'run'
            Produce and run an executable file, which is expected to
            return an exit code of 0.
  
!      The default is 'assemble'.  That can be overridden for a set of
!      tests by redefining 'dg-do-what-default' within the '.exp' file for
       those tests.
  
!      Unlike 'dg-do', 'dg-lto-do' does not support an optional 'target'
!      or 'xfail' list.  Use 'dg-skip-if', 'dg-xfail-if', or
!      'dg-xfail-run-if'.
  
! '{ dg-lto-options { { OPTIONS } [{ OPTIONS }] } [{ target SELECTOR }]}'
       This directive provides a list of one or more sets of compiler
       options to override LTO_OPTIONS.  Each test will be compiled and
       run with each of these sets of options.
  
! '{ dg-extra-ld-options OPTIONS [{ target SELECTOR }]}'
       This directive adds OPTIONS to the linker options used.
  
! '{ dg-suppress-ld-options OPTIONS [{ target SELECTOR }]}'
       This directive removes OPTIONS from the set of linker options used.
  
  
  File: gccint.info,  Node: gcov Testing,  Next: profopt Testing,  Prev: LTO Testing,  Up: Testsuites
  
! 6.6 Support for testing 'gcov'
  ==============================
  
! Language-independent support for testing 'gcov', and for checking that
  branch profiling produces expected values, is provided by the expect
! file 'lib/gcov.exp'.  'gcov' tests also rely on procedures in
! 'lib/gcc-dg.exp' to compile and run the test program.  A typical 'gcov'
  test contains the following DejaGnu commands within comments:
  
       { dg-options "--coverage" }
       { dg-do run { target native } }
       { dg-final { run-gcov sourcefile } }
  
!  Checks of 'gcov' output can include line counts, branch percentages,
  and call return percentages.  All of these checks are requested via
  commands that appear in comments in the test's source file.  Commands to
  check line counts are processed by default.  Commands to check branch
! percentages and call return percentages are processed if the 'run-gcov'
! command has arguments 'branches' or 'calls', respectively.  For example,
! the following specifies checking both, as well as passing '-b' to
! 'gcov':
  
       { dg-final { run-gcov branches calls { -b sourcefile } } }
  
   A line count command appears within a comment on the source line that
! is expected to get the specified count and has the form 'count(CNT)'.  A
  test should only check line counts for lines that will get the same
  count for any architecture.
  
!  Commands to check branch percentages ('branch') and call return
! percentages ('returns') are very similar to each other.  A beginning
  command appears on or before the first of a range of lines that will
  report the percentage, and the ending command follows that range of
  lines.  The beginning command can include a list of percentages, all of
  which are expected to be found within the range.  A range is terminated
! by the next command of the same kind.  A command 'branch(end)' or
! 'returns(end)' marks the end of a range without starting a new one.  For
  example:
  
       if (i > 10 && j > i && j < 20)  /* branch(27 50 75) */
--- 7216,7292 ----
  that are compiled separately, perhaps with different sets of options.
  There are several special-purpose test directives used for these tests.
  
! â€˜{ dg-lto-do DO-WHAT-KEYWORD }â€™
       DO-WHAT-KEYWORD specifies how the test is compiled and whether it
       is executed.  It is one of:
  
!      â€˜assembleâ€™
!           Compile with â€˜-câ€™ to produce a relocatable object file.
!      â€˜linkâ€™
            Compile, assemble, and link to produce an executable file.
!      â€˜runâ€™
            Produce and run an executable file, which is expected to
            return an exit code of 0.
  
!      The default is â€˜assembleâ€™.  That can be overridden for a set of
!      tests by redefining â€˜dg-do-what-defaultâ€™ within the â€˜.expâ€™ file for
       those tests.
  
!      Unlike â€˜dg-doâ€™, â€˜dg-lto-doâ€™ does not support an optional â€˜targetâ€™
!      or â€˜xfailâ€™ list.  Use â€˜dg-skip-ifâ€™, â€˜dg-xfail-ifâ€™, or
!      â€˜dg-xfail-run-ifâ€™.
  
! â€˜{ dg-lto-options { { OPTIONS } [{ OPTIONS }] } [{ target SELECTOR }]}â€™
       This directive provides a list of one or more sets of compiler
       options to override LTO_OPTIONS.  Each test will be compiled and
       run with each of these sets of options.
  
! â€˜{ dg-extra-ld-options OPTIONS [{ target SELECTOR }]}â€™
       This directive adds OPTIONS to the linker options used.
  
! â€˜{ dg-suppress-ld-options OPTIONS [{ target SELECTOR }]}â€™
       This directive removes OPTIONS from the set of linker options used.
  
  
  File: gccint.info,  Node: gcov Testing,  Next: profopt Testing,  Prev: LTO Testing,  Up: Testsuites
  
! 6.6 Support for testing â€˜gcovâ€™
  ==============================
  
! Language-independent support for testing â€˜gcovâ€™, and for checking that
  branch profiling produces expected values, is provided by the expect
! file â€˜lib/gcov.expâ€™.  â€˜gcovâ€™ tests also rely on procedures in
! â€˜lib/gcc-dg.expâ€™ to compile and run the test program.  A typical â€˜gcovâ€™
  test contains the following DejaGnu commands within comments:
  
       { dg-options "--coverage" }
       { dg-do run { target native } }
       { dg-final { run-gcov sourcefile } }
  
!  Checks of â€˜gcovâ€™ output can include line counts, branch percentages,
  and call return percentages.  All of these checks are requested via
  commands that appear in comments in the test's source file.  Commands to
  check line counts are processed by default.  Commands to check branch
! percentages and call return percentages are processed if the â€˜run-gcovâ€™
! command has arguments â€˜branchesâ€™ or â€˜callsâ€™, respectively.  For example,
! the following specifies checking both, as well as passing â€˜-bâ€™ to
! â€˜gcovâ€™:
  
       { dg-final { run-gcov branches calls { -b sourcefile } } }
  
   A line count command appears within a comment on the source line that
! is expected to get the specified count and has the form â€˜count(CNT)â€™.  A
  test should only check line counts for lines that will get the same
  count for any architecture.
  
!  Commands to check branch percentages (â€˜branchâ€™) and call return
! percentages (â€˜returnsâ€™) are very similar to each other.  A beginning
  command appears on or before the first of a range of lines that will
  report the percentage, and the ending command follows that range of
  lines.  The beginning command can include a list of percentages, all of
  which are expected to be found within the range.  A range is terminated
! by the next command of the same kind.  A command â€˜branch(end)â€™ or
! â€˜returns(end)â€™ marks the end of a range without starting a new one.  For
  example:
  
       if (i > 10 && j > i && j < 20)  /* branch(27 50 75) */
*************** File: gccint.info,  Node: profopt Testin
*** 7310,7316 ****
  6.7 Support for testing profile-directed optimizations
  ======================================================
  
! The file 'profopt.exp' provides language-independent support for
  checking correct execution of a test built with profile-directed
  optimization.  This testing requires that a test program be built and
  executed twice.  The first time it is compiled to generate profile data,
--- 7315,7321 ----
  6.7 Support for testing profile-directed optimizations
  ======================================================
  
! The file â€˜profopt.expâ€™ provides language-independent support for
  checking correct execution of a test built with profile-directed
  optimization.  This testing requires that a test program be built and
  executed twice.  The first time it is compiled to generate profile data,
*************** test produces the expected results.
*** 7321,7353 ****
   To check that the optimization actually generated better code, a test
  can be built and run a third time with normal optimizations to verify
  that the performance is better with the profile-directed optimizations.
! 'profopt.exp' has the beginnings of this kind of support.
  
!  'profopt.exp' provides generic support for profile-directed
  optimizations.  Each set of tests that uses it provides information
  about a specific optimization:
  
! 'tool'
!      tool being tested, e.g., 'gcc'
  
! 'profile_option'
       options used to generate profile data
  
! 'feedback_option'
       options used to optimize using that profile data
  
! 'prof_ext'
       suffix of profile data files
  
! 'PROFOPT_OPTIONS'
       list of options with which to run each test, similar to the lists
       for torture tests
  
! '{ dg-final-generate { LOCAL-DIRECTIVE } }'
!      This directive is similar to 'dg-final', but the LOCAL-DIRECTIVE is
       run after the generation of profile data.
  
! '{ dg-final-use { LOCAL-DIRECTIVE } }'
       The LOCAL-DIRECTIVE is run after the profile data have been used.
  
  
--- 7326,7358 ----
   To check that the optimization actually generated better code, a test
  can be built and run a third time with normal optimizations to verify
  that the performance is better with the profile-directed optimizations.
! â€˜profopt.expâ€™ has the beginnings of this kind of support.
  
!  â€˜profopt.expâ€™ provides generic support for profile-directed
  optimizations.  Each set of tests that uses it provides information
  about a specific optimization:
  
! â€˜toolâ€™
!      tool being tested, e.g., â€˜gccâ€™
  
! â€˜profile_optionâ€™
       options used to generate profile data
  
! â€˜feedback_optionâ€™
       options used to optimize using that profile data
  
! â€˜prof_extâ€™
       suffix of profile data files
  
! â€˜PROFOPT_OPTIONSâ€™
       list of options with which to run each test, similar to the lists
       for torture tests
  
! â€˜{ dg-final-generate { LOCAL-DIRECTIVE } }â€™
!      This directive is similar to â€˜dg-finalâ€™, but the LOCAL-DIRECTIVE is
       run after the generation of profile data.
  
! â€˜{ dg-final-use { LOCAL-DIRECTIVE } }â€™
       The LOCAL-DIRECTIVE is run after the profile data have been used.
  
  
*************** File: gccint.info,  Node: compat Testing
*** 7356,7362 ****
  6.8 Support for testing binary compatibility
  ============================================
  
! The file 'compat.exp' provides language-independent support for binary
  compatibility testing.  It supports testing interoperability of two
  compilers that follow the same ABI, or of multiple sets of compiler
  options that should not affect binary compatibility.  It is intended to
--- 7361,7367 ----
  6.8 Support for testing binary compatibility
  ============================================
  
! The file â€˜compat.expâ€™ provides language-independent support for binary
  compatibility testing.  It supports testing interoperability of two
  compilers that follow the same ABI, or of multiple sets of compiler
  options that should not affect binary compatibility.  It is intended to
*************** be used for testsuites that complement A
*** 7366,7380 ****
  source file: a main program and two pieces that interact with each other
  to split up the functionality being tested.
  
! 'TESTNAME_main.SUFFIX'
       Contains the main program, which calls a function in file
!      'TESTNAME_x.SUFFIX'.
  
! 'TESTNAME_x.SUFFIX'
!      Contains at least one call to a function in 'TESTNAME_y.SUFFIX'.
  
! 'TESTNAME_y.SUFFIX'
!      Shares data with, or gets arguments from, 'TESTNAME_x.SUFFIX'.
  
   Within each test, the main program and one functional piece are
  compiled by the GCC under test.  The other piece can be compiled by an
--- 7371,7385 ----
  source file: a main program and two pieces that interact with each other
  to split up the functionality being tested.
  
! â€˜TESTNAME_main.SUFFIXâ€™
       Contains the main program, which calls a function in file
!      â€˜TESTNAME_x.SUFFIXâ€™.
  
! â€˜TESTNAME_x.SUFFIXâ€™
!      Contains at least one call to a function in â€˜TESTNAME_y.SUFFIXâ€™.
  
! â€˜TESTNAME_y.SUFFIXâ€™
!      Shares data with, or gets arguments from, â€˜TESTNAME_x.SUFFIXâ€™.
  
   Within each test, the main program and one functional piece are
  compiled by the GCC under test.  The other piece can be compiled by an
*************** pair specifies options used with the GCC
*** 7385,7417 ****
  element of the pair specifies options used with the alternate compiler.
  Each test is compiled with each pair of options.
  
!  'compat.exp' defines default pairs of compiler options.  These can be
! overridden by defining the environment variable 'COMPAT_OPTIONS' as:
  
       COMPAT_OPTIONS="[list [list {TST1} {ALT1}]
         ...[list {TSTN} {ALTN}]]"
  
   where TSTI and ALTI are lists of options, with TSTI used by the
  compiler under test and ALTI used by the alternate compiler.  For
! example, with '[list [list {-g -O0} {-O3}] [list {-fpic} {-fPIC -O2}]]',
! the test is first built with '-g -O0' by the compiler under test and
! with '-O3' by the alternate compiler.  The test is built a second time
! using '-fpic' by the compiler under test and '-fPIC -O2' by the
  alternate compiler.
  
   An alternate compiler is specified by defining an environment variable
  to be the full pathname of an installed compiler; for C define
! 'ALT_CC_UNDER_TEST', and for C++ define 'ALT_CXX_UNDER_TEST'.  These
! will be written to the 'site.exp' file used by DejaGnu.  The default is
  to build each test with the compiler under test using the first of each
! pair of compiler options from 'COMPAT_OPTIONS'.  When
! 'ALT_CC_UNDER_TEST' or 'ALT_CXX_UNDER_TEST' is 'same', each test is
  built using the compiler under test but with combinations of the options
! from 'COMPAT_OPTIONS'.
  
   To run only the basic C++ compatibility suite using the compiler under
  test and another version of GCC using specific compiler options, do the
! following from 'OBJDIR/gcc':
  
       rm site.exp
       make -k \
--- 7390,7422 ----
  element of the pair specifies options used with the alternate compiler.
  Each test is compiled with each pair of options.
  
!  â€˜compat.expâ€™ defines default pairs of compiler options.  These can be
! overridden by defining the environment variable â€˜COMPAT_OPTIONSâ€™ as:
  
       COMPAT_OPTIONS="[list [list {TST1} {ALT1}]
         ...[list {TSTN} {ALTN}]]"
  
   where TSTI and ALTI are lists of options, with TSTI used by the
  compiler under test and ALTI used by the alternate compiler.  For
! example, with â€˜[list [list {-g -O0} {-O3}] [list {-fpic} {-fPIC -O2}]]â€™,
! the test is first built with â€˜-g -O0â€™ by the compiler under test and
! with â€˜-O3â€™ by the alternate compiler.  The test is built a second time
! using â€˜-fpicâ€™ by the compiler under test and â€˜-fPIC -O2â€™ by the
  alternate compiler.
  
   An alternate compiler is specified by defining an environment variable
  to be the full pathname of an installed compiler; for C define
! â€˜ALT_CC_UNDER_TESTâ€™, and for C++ define â€˜ALT_CXX_UNDER_TESTâ€™.  These
! will be written to the â€˜site.expâ€™ file used by DejaGnu.  The default is
  to build each test with the compiler under test using the first of each
! pair of compiler options from â€˜COMPAT_OPTIONSâ€™.  When
! â€˜ALT_CC_UNDER_TESTâ€™ or â€˜ALT_CXX_UNDER_TESTâ€™ is â€˜sameâ€™, each test is
  built using the compiler under test but with combinations of the options
! from â€˜COMPAT_OPTIONSâ€™.
  
   To run only the basic C++ compatibility suite using the compiler under
  test and another version of GCC using specific compiler options, do the
! following from â€˜OBJDIR/gccâ€™:
  
       rm site.exp
       make -k \
*************** following from 'OBJDIR/gcc':
*** 7420,7428 ****
         check-c++ \
         RUNTESTFLAGS="compat.exp"
  
!  The file 'struct-layout-1.exp' provides a few more test cases
  exercising pseudo-randomly generated structure layouts.  Defining
! 'RUN_ALL_COMPAT_TESTS' would increase the number of generated tests to
  yield even more coverage.  As an example, to modify the above test
  command to run the maximum number of ABI tests for C++, do:
  
--- 7425,7433 ----
         check-c++ \
         RUNTESTFLAGS="compat.exp"
  
!  The file â€˜struct-layout-1.expâ€™ provides a few more test cases
  exercising pseudo-randomly generated structure layouts.  Defining
! â€˜RUN_ALL_COMPAT_TESTSâ€™ would increase the number of generated tests to
  yield even more coverage.  As an example, to modify the above test
  command to run the maximum number of ABI tests for C++, do:
  
*************** compiler under test but is present in th
*** 7444,7460 ****
   The binary compatibility tests support a small number of test framework
  commands that appear within comments in a test file.
  
! 'dg-require-*'
!      These commands can be used in 'TESTNAME_main.SUFFIX' to skip the
       test if specific support is not available on the target.
  
! 'dg-options'
       The specified options are used for compiling this particular source
!      file, appended to the options from 'COMPAT_OPTIONS'.  When this
!      command appears in 'TESTNAME_main.SUFFIX' the options are also used
       to link the test program.
  
! 'dg-xfail-if'
       This command can be used in a secondary source file to specify that
       compilation is expected to fail for particular options on
       particular targets.
--- 7449,7465 ----
   The binary compatibility tests support a small number of test framework
  commands that appear within comments in a test file.
  
! â€˜dg-require-*â€™
!      These commands can be used in â€˜TESTNAME_main.SUFFIXâ€™ to skip the
       test if specific support is not available on the target.
  
! â€˜dg-optionsâ€™
       The specified options are used for compiling this particular source
!      file, appended to the options from â€˜COMPAT_OPTIONSâ€™.  When this
!      command appears in â€˜TESTNAME_main.SUFFIXâ€™ the options are also used
       to link the test program.
  
! â€˜dg-xfail-ifâ€™
       This command can be used in a secondary source file to specify that
       compilation is expected to fail for particular options on
       particular targets.
*************** File: gccint.info,  Node: Torture Tests,
*** 7467,7502 ****
  
  Throughout the compiler testsuite there are several directories whose
  tests are run multiple times, each with a different set of options.
! These are known as torture tests.  'lib/torture-options.exp' defines
  procedures to set up these lists:
  
! 'torture-init'
       Initialize use of torture lists.
! 'set-torture-options'
       Set lists of torture options to use for tests with and without
       loops.  Optionally combine a set of torture options with a set of
       other options, as is done with Objective-C runtime options.
! 'torture-finish'
       Finalize use of torture lists.
  
!  The '.exp' file for a set of tests that use torture options must
  include calls to these three procedures if:
  
!    * It calls 'gcc-dg-runtest' and overrides DG_TORTURE_OPTIONS.
  
!    * It calls ${TOOL}'-torture' or ${TOOL}'-torture-execute', where TOOL
!      is 'c', 'fortran', or 'objc'.
  
!    * It calls 'dg-pch'.
  
!  It is not necessary for a '.exp' file that calls 'gcc-dg-runtest' to
  call the torture procedures if the tests should use the list in
! DG_TORTURE_OPTIONS defined in 'gcc-dg.exp'.
  
   Most uses of torture options can override the default lists by defining
  TORTURE_OPTIONS or add to the default list by defining
! ADDITIONAL_TORTURE_OPTIONS.  Define these in a '.dejagnurc' file or add
! them to the 'site.exp' file; for example
  
       set ADDITIONAL_TORTURE_OPTIONS  [list \
         { -O2 -ftree-loop-linear } \
--- 7472,7507 ----
  
  Throughout the compiler testsuite there are several directories whose
  tests are run multiple times, each with a different set of options.
! These are known as torture tests.  â€˜lib/torture-options.expâ€™ defines
  procedures to set up these lists:
  
! â€˜torture-initâ€™
       Initialize use of torture lists.
! â€˜set-torture-optionsâ€™
       Set lists of torture options to use for tests with and without
       loops.  Optionally combine a set of torture options with a set of
       other options, as is done with Objective-C runtime options.
! â€˜torture-finishâ€™
       Finalize use of torture lists.
  
!  The â€˜.expâ€™ file for a set of tests that use torture options must
  include calls to these three procedures if:
  
!    â€¢ It calls â€˜gcc-dg-runtestâ€™ and overrides DG_TORTURE_OPTIONS.
  
!    â€¢ It calls ${TOOL}â€˜-tortureâ€™ or ${TOOL}â€˜-torture-executeâ€™, where TOOL
!      is â€˜câ€™, â€˜fortranâ€™, or â€˜objcâ€™.
  
!    â€¢ It calls â€˜dg-pchâ€™.
  
!  It is not necessary for a â€˜.expâ€™ file that calls â€˜gcc-dg-runtestâ€™ to
  call the torture procedures if the tests should use the list in
! DG_TORTURE_OPTIONS defined in â€˜gcc-dg.expâ€™.
  
   Most uses of torture options can override the default lists by defining
  TORTURE_OPTIONS or add to the default list by defining
! ADDITIONAL_TORTURE_OPTIONS.  Define these in a â€˜.dejagnurcâ€™ file or add
! them to the â€˜site.expâ€™ file; for example
  
       set ADDITIONAL_TORTURE_OPTIONS  [list \
         { -O2 -ftree-loop-linear } \
*************** File: gccint.info,  Node: GIMPLE Tests,
*** 7508,7516 ****
  6.10 Support for testing GIMPLE passes
  ======================================
  
! As of gcc 7, C functions can be tagged with '__GIMPLE' to indicate that
  the function body will be GIMPLE, rather than C. The compiler requires
! the option '-fgimple' to enable this functionality.  For example:
  
       /* { dg-do compile } */
       /* { dg-options "-O -fgimple" } */
--- 7513,7521 ----
  6.10 Support for testing GIMPLE passes
  ======================================
  
! As of gcc 7, C functions can be tagged with â€˜__GIMPLEâ€™ to indicate that
  the function body will be GIMPLE, rather than C. The compiler requires
! the option â€˜-fgimpleâ€™ to enable this functionality.  For example:
  
       /* { dg-do compile } */
       /* { dg-options "-O -fgimple" } */
*************** the option '-fgimple' to enable this fun
*** 7539,7553 ****
         return;
       }
  
!  The 'startwith' argument indicates at which pass to begin.
  
!  Use the dump modifier '-gimple' (e.g. '-fdump-tree-all-gimple') to make
  tree dumps more closely follow the format accepted by the GIMPLE parser.
  
   Example DejaGnu tests of GIMPLE can be seen in the source tree at
! 'gcc/testsuite/gcc.dg/gimplefe-*.c'.
  
!  The '__GIMPLE' parser is integrated with the C tokenizer and
  preprocessor, so it should be possible to use macros to build out test
  coverage.
  
--- 7544,7558 ----
         return;
       }
  
!  The â€˜startwithâ€™ argument indicates at which pass to begin.
  
!  Use the dump modifier â€˜-gimpleâ€™ (e.g. â€˜-fdump-tree-all-gimpleâ€™) to make
  tree dumps more closely follow the format accepted by the GIMPLE parser.
  
   Example DejaGnu tests of GIMPLE can be seen in the source tree at
! â€˜gcc/testsuite/gcc.dg/gimplefe-*.câ€™.
  
!  The â€˜__GIMPLEâ€™ parser is integrated with the C tokenizer and
  preprocessor, so it should be possible to use macros to build out test
  coverage.
  
*************** File: gccint.info,  Node: RTL Tests,  Pr
*** 7557,7563 ****
  6.11 Support for testing RTL passes
  ===================================
  
! As of gcc 7, C functions can be tagged with '__RTL' to indicate that the
  function body will be RTL, rather than C. For example:
  
       double __RTL (startwith ("ira")) test (struct foo *f, const struct bar *b)
--- 7562,7568 ----
  6.11 Support for testing RTL passes
  ===================================
  
! As of gcc 7, C functions can be tagged with â€˜__RTLâ€™ to indicate that the
  function body will be RTL, rather than C. For example:
  
       double __RTL (startwith ("ira")) test (struct foo *f, const struct bar *b)
*************** function body will be RTL, rather than C
*** 7567,7573 ****
         ) ;; function "test"
       }
  
!  The 'startwith' argument indicates at which pass to begin.
  
   The parser expects the RTL body to be in the format emitted by this
  dumping function:
--- 7572,7578 ----
         ) ;; function "test"
       }
  
!  The â€˜startwithâ€™ argument indicates at which pass to begin.
  
   The parser expects the RTL body to be in the format emitted by this
  dumping function:
*************** from the debugger using:
*** 7583,7591 ****
   and copy and paste the output into the body of the C function.
  
   Example DejaGnu tests of RTL can be seen in the source tree under
! 'gcc/testsuite/gcc.dg/rtl'.
  
!  The '__RTL' parser is not integrated with the C tokenizer or
  preprocessor, and works simply by reading the relevant lines within the
  braces.  In particular, the RTL body must be on separate lines from the
  enclosing braces, and the preprocessor is not usable within it.
--- 7588,7596 ----
   and copy and paste the output into the body of the C function.
  
   Example DejaGnu tests of RTL can be seen in the source tree under
! â€˜gcc/testsuite/gcc.dg/rtlâ€™.
  
!  The â€˜__RTLâ€™ parser is not integrated with the C tokenizer or
  preprocessor, and works simply by reading the relevant lines within the
  braces.  In particular, the RTL body must be on separate lines from the
  enclosing braces, and the preprocessor is not usable within it.
*************** File: gccint.info,  Node: Options,  Next
*** 7597,7603 ****
  ****************************
  
  Most GCC command-line options are described by special option definition
! files, the names of which conventionally end in '.opt'.  This chapter
  describes the format of these files.
  
  * Menu:
--- 7602,7608 ----
  ****************************
  
  Most GCC command-line options are described by special option definition
! files, the names of which conventionally end in â€˜.optâ€™.  This chapter
  describes the format of these files.
  
  * Menu:
*************** semicolon.
*** 7619,7746 ****
  
   The files can contain the following types of record:
  
!    * A language definition record.  These records have two fields: the
!      string 'Language' and the name of the language.  Once a language
       has been declared in this way, it can be used as an option
       property.  *Note Option properties::.
  
!    * A target specific save record to save additional information.
!      These records have two fields: the string 'TargetSave', and a
!      declaration type to go in the 'cl_target_option' structure.
  
!    * A variable record to define a variable used to store option
!      information.  These records have two fields: the string 'Variable',
       and a declaration of the type and name of the variable, optionally
!      with an initializer (but without any trailing ';').  These records
       may be used for variables used for many options where declaring the
       initializer in a single option definition record, or duplicating it
       in many records, would be inappropriate, or for variables set in
!      option handlers rather than referenced by 'Var' properties.
  
!    * A variable record to define a variable used to store option
       information.  These records have two fields: the string
!      'TargetVariable', and a declaration of the type and name of the
       variable, optionally with an initializer (but without any trailing
!      ';').  'TargetVariable' is a combination of 'Variable' and
!      'TargetSave' records in that the variable is defined in the
!      'gcc_options' structure, but these variables are also stored in the
!      'cl_target_option' structure.  The variables are saved in the
       target save code and restored in the target restore code.
  
!    * A variable record to record any additional files that the
!      'options.h' file should include.  This is useful to provide
       enumeration or structure definitions needed for target variables.
!      These records have two fields: the string 'HeaderInclude' and the
       name of the include file.
  
!    * A variable record to record any additional files that the
!      'options.cc' or 'options-save.cc' file should include.  This is
       useful to provide inline functions needed for target variables
!      and/or '#ifdef' sequences to properly set up the initialization.
!      These records have two fields: the string 'SourceInclude' and the
       name of the include file.
  
!    * An enumeration record to define a set of strings that may be used
       as arguments to an option or options.  These records have three
!      fields: the string 'Enum', a space-separated list of properties and
!      help text used to describe the set of strings in '--help' output.
       Properties use the same format as option properties; the following
       are valid:
!      'Name(NAME)'
            This property is required; NAME must be a name (suitable for
            use in C identifiers) used to identify the set of strings in
!           'Enum' option properties.
  
!      'Type(TYPE)'
            This property is required; TYPE is the C type for variables
!           set by options using this enumeration together with 'Var'.
  
!      'UnknownError(MESSAGE)'
            The message MESSAGE will be used as an error message if the
!           argument is invalid; for enumerations without 'UnknownError',
            a generic error message is used.  MESSAGE should contain a
!           single '%qs' format, which will be used to format the invalid
            argument.
  
!    * An enumeration value record to define one of the strings in a set
!      given in an 'Enum' record.  These records have two fields: the
!      string 'EnumValue' and a space-separated list of properties.
       Properties use the same format as option properties; the following
       are valid:
!      'Enum(NAME)'
!           This property is required; NAME says which 'Enum' record this
!           'EnumValue' record corresponds to.
  
!      'String(STRING)'
            This property is required; STRING is the string option
            argument being described by this record.
  
!      'Value(VALUE)'
            This property is required; it says what value (representable
!           as 'int') should be used for the given string.
  
!      'Canonical'
            This property is optional.  If present, it says the present
            string is the canonical one among all those with the given
            value.  Other strings yielding that value will be mapped to
            this one so specs do not need to handle them.
  
!      'DriverOnly'
            This property is optional.  If present, the present string
            will only be accepted by the driver.  This is used for cases
!           such as '-march=native' that are processed by the driver so
!           that 'gcc -v' shows how the options chosen depended on the
            system on which the compiler was run.
  
!      'Set(NUMBER)'
            This property is optional, required for enumerations used in
!           'EnumSet' options.  NUMBER should be decimal number between 1
            and 64 inclusive and divides the enumeration into a set of
            sets of mutually exclusive arguments.  Arguments with the same
            NUMBER can't be specified together in the same option, but
            arguments with different NUMBER can.  VALUE needs to be chosen
            such that a mask of all VALUE values from the same set NUMBER
            bitwise ored doesn't overlap with masks for other sets.  When
!           '-foption=arg_from_set1,arg_from_set4' and
!           '-fno-option=arg_from_set3' are used, the effect is that
!           previous value of the 'Var' will get bits from set 1 and 4
!           masks cleared, ored 'Value' of 'arg_from_set1' and
!           'arg_from_set4' and then will get bits from set 3 mask
            cleared.
  
!    * An option definition record.  These records have the following
       fields:
         1. the name of the option, with the leading "-" removed
         2. a space-separated list of option properties (*note Option
            properties::)
!        3. the help text to use for '--help' (omitted if the second field
!           contains the 'Undocumented' property).
  
       By default, all options beginning with "f", "g", "W" or "m" are
       implicitly assumed to take a "no-" form.  This form should not be
       listed separately.  If an option beginning with one of these
       letters does not have a "no-" form, you can use the
!      'RejectNegative' property to reject it.
  
       The help text is automatically line-wrapped before being displayed.
       Normally the name of the option is printed on the left-hand side of
--- 7624,7751 ----
  
   The files can contain the following types of record:
  
!    â€¢ A language definition record.  These records have two fields: the
!      string â€˜Languageâ€™ and the name of the language.  Once a language
       has been declared in this way, it can be used as an option
       property.  *Note Option properties::.
  
!    â€¢ A target specific save record to save additional information.
!      These records have two fields: the string â€˜TargetSaveâ€™, and a
!      declaration type to go in the â€˜cl_target_optionâ€™ structure.
  
!    â€¢ A variable record to define a variable used to store option
!      information.  These records have two fields: the string â€˜Variableâ€™,
       and a declaration of the type and name of the variable, optionally
!      with an initializer (but without any trailing â€˜;â€™).  These records
       may be used for variables used for many options where declaring the
       initializer in a single option definition record, or duplicating it
       in many records, would be inappropriate, or for variables set in
!      option handlers rather than referenced by â€˜Varâ€™ properties.
  
!    â€¢ A variable record to define a variable used to store option
       information.  These records have two fields: the string
!      â€˜TargetVariableâ€™, and a declaration of the type and name of the
       variable, optionally with an initializer (but without any trailing
!      â€˜;â€™).  â€˜TargetVariableâ€™ is a combination of â€˜Variableâ€™ and
!      â€˜TargetSaveâ€™ records in that the variable is defined in the
!      â€˜gcc_optionsâ€™ structure, but these variables are also stored in the
!      â€˜cl_target_optionâ€™ structure.  The variables are saved in the
       target save code and restored in the target restore code.
  
!    â€¢ A variable record to record any additional files that the
!      â€˜options.hâ€™ file should include.  This is useful to provide
       enumeration or structure definitions needed for target variables.
!      These records have two fields: the string â€˜HeaderIncludeâ€™ and the
       name of the include file.
  
!    â€¢ A variable record to record any additional files that the
!      â€˜options.ccâ€™ or â€˜options-save.ccâ€™ file should include.  This is
       useful to provide inline functions needed for target variables
!      and/or â€˜#ifdefâ€™ sequences to properly set up the initialization.
!      These records have two fields: the string â€˜SourceIncludeâ€™ and the
       name of the include file.
  
!    â€¢ An enumeration record to define a set of strings that may be used
       as arguments to an option or options.  These records have three
!      fields: the string â€˜Enumâ€™, a space-separated list of properties and
!      help text used to describe the set of strings in â€˜--helpâ€™ output.
       Properties use the same format as option properties; the following
       are valid:
!      â€˜Name(NAME)â€™
            This property is required; NAME must be a name (suitable for
            use in C identifiers) used to identify the set of strings in
!           â€˜Enumâ€™ option properties.
  
!      â€˜Type(TYPE)â€™
            This property is required; TYPE is the C type for variables
!           set by options using this enumeration together with â€˜Varâ€™.
  
!      â€˜UnknownError(MESSAGE)â€™
            The message MESSAGE will be used as an error message if the
!           argument is invalid; for enumerations without â€˜UnknownErrorâ€™,
            a generic error message is used.  MESSAGE should contain a
!           single â€˜%qsâ€™ format, which will be used to format the invalid
            argument.
  
!    â€¢ An enumeration value record to define one of the strings in a set
!      given in an â€˜Enumâ€™ record.  These records have two fields: the
!      string â€˜EnumValueâ€™ and a space-separated list of properties.
       Properties use the same format as option properties; the following
       are valid:
!      â€˜Enum(NAME)â€™
!           This property is required; NAME says which â€˜Enumâ€™ record this
!           â€˜EnumValueâ€™ record corresponds to.
  
!      â€˜String(STRING)â€™
            This property is required; STRING is the string option
            argument being described by this record.
  
!      â€˜Value(VALUE)â€™
            This property is required; it says what value (representable
!           as â€˜intâ€™) should be used for the given string.
  
!      â€˜Canonicalâ€™
            This property is optional.  If present, it says the present
            string is the canonical one among all those with the given
            value.  Other strings yielding that value will be mapped to
            this one so specs do not need to handle them.
  
!      â€˜DriverOnlyâ€™
            This property is optional.  If present, the present string
            will only be accepted by the driver.  This is used for cases
!           such as â€˜-march=nativeâ€™ that are processed by the driver so
!           that â€˜gcc -vâ€™ shows how the options chosen depended on the
            system on which the compiler was run.
  
!      â€˜Set(NUMBER)â€™
            This property is optional, required for enumerations used in
!           â€˜EnumSetâ€™ options.  NUMBER should be decimal number between 1
            and 64 inclusive and divides the enumeration into a set of
            sets of mutually exclusive arguments.  Arguments with the same
            NUMBER can't be specified together in the same option, but
            arguments with different NUMBER can.  VALUE needs to be chosen
            such that a mask of all VALUE values from the same set NUMBER
            bitwise ored doesn't overlap with masks for other sets.  When
!           â€˜-foption=arg_from_set1,arg_from_set4â€™ and
!           â€˜-fno-option=arg_from_set3â€™ are used, the effect is that
!           previous value of the â€˜Varâ€™ will get bits from set 1 and 4
!           masks cleared, ored â€˜Valueâ€™ of â€˜arg_from_set1â€™ and
!           â€˜arg_from_set4â€™ and then will get bits from set 3 mask
            cleared.
  
!    â€¢ An option definition record.  These records have the following
       fields:
         1. the name of the option, with the leading "-" removed
         2. a space-separated list of option properties (*note Option
            properties::)
!        3. the help text to use for â€˜--helpâ€™ (omitted if the second field
!           contains the â€˜Undocumentedâ€™ property).
  
       By default, all options beginning with "f", "g", "W" or "m" are
       implicitly assumed to take a "no-" form.  This form should not be
       listed separately.  If an option beginning with one of these
       letters does not have a "no-" form, you can use the
!      â€˜RejectNegativeâ€™ property to reject it.
  
       The help text is automatically line-wrapped before being displayed.
       Normally the name of the option is printed on the left-hand side of
*************** semicolon.
*** 7755,7772 ****
       generic description that is correct for all of them.
  
       If an option has multiple option definition records (in different
!      front ends' '*.opt' files, and/or 'gcc/common.opt', for example),
       convention is to not duplicate the help text for each of them, but
!      instead put a comment like '; documented in common.opt' in place of
       the help text for all but one of the multiple option definition
       records.
  
!    * A target mask record.  These records have one field of the form
!      'Mask(X)'.  The options-processing script will automatically
!      allocate a bit in 'target_flags' (*note Run-time Target::) for each
!      mask name X and set the macro 'MASK_X' to the appropriate bitmask.
!      It will also declare a 'TARGET_X' macro that has the value 1 when
!      bit 'MASK_X' is set and 0 otherwise.
  
       They are primarily intended to declare target masks that are not
       associated with user options, either because these masks represent
--- 7760,7777 ----
       generic description that is correct for all of them.
  
       If an option has multiple option definition records (in different
!      front ends' â€˜*.optâ€™ files, and/or â€˜gcc/common.optâ€™, for example),
       convention is to not duplicate the help text for each of them, but
!      instead put a comment like â€˜; documented in common.optâ€™ in place of
       the help text for all but one of the multiple option definition
       records.
  
!    â€¢ A target mask record.  These records have one field of the form
!      â€˜Mask(X)â€™.  The options-processing script will automatically
!      allocate a bit in â€˜target_flagsâ€™ (*note Run-time Target::) for each
!      mask name X and set the macro â€˜MASK_Xâ€™ to the appropriate bitmask.
!      It will also declare a â€˜TARGET_Xâ€™ macro that has the value 1 when
!      bit â€˜MASK_Xâ€™ is set and 0 otherwise.
  
       They are primarily intended to declare target masks that are not
       associated with user options, either because these masks represent
*************** demarcate it, e.g.:
*** 7789,8176 ****
  
       Condition({defined (USE_CYGWIN_LIBSTDCXX_WRAPPERS)})
  
! 'Common'
       The option is available for all languages and targets.
  
! 'Target'
       The option is available for all languages but is target-specific.
  
! 'Driver'
       The option is handled by the compiler driver using code not shared
!      with the compilers proper ('cc1' etc.).
  
! 'LANGUAGE'
       The option is available when compiling for the given language.
  
       It is possible to specify several different languages for the same
       option.  Each LANGUAGE must have been declared by an earlier
!      'Language' record.  *Note Option file format::.
  
! 'RejectDriver'
!      The option is only handled by the compilers proper ('cc1' etc.) and
       should not be accepted by the driver.
  
! 'RejectNegative'
       The option does not have a "no-" form.  All options beginning with
       "f", "g", "W" or "m" are assumed to have a "no-" form unless this
       property is used.
  
! 'Negative(OTHERNAME)'
       The option will turn off another option OTHERNAME, which is the
       option name with the leading "-" removed.  This chain action will
!      propagate through the 'Negative' property of the option to be
       turned off.  The driver will prune options, removing those that are
       turned off by some later option.  This pruning is not done for
!      options with 'Joined' or 'JoinedOrMissing' properties, unless the
!      options have both the 'RejectNegative' property and the 'Negative'
       property mentions itself.
  
       As a consequence, if you have a group of mutually-exclusive
!      options, their 'Negative' properties should form a circular chain.
!      For example, if options '-A', '-B' and '-C' are mutually exclusive,
!      their respective 'Negative' properties should be 'Negative(B)',
!      'Negative(C)' and 'Negative(A)'.
  
! 'Joined'
! 'Separate'
!      The option takes a mandatory argument.  'Joined' indicates that the
!      option and argument can be included in the same 'argv' entry (as
!      with '-mflush-func=NAME', for example).  'Separate' indicates that
!      the option and argument can be separate 'argv' entries (as with
!      '-o').  An option is allowed to have both of these properties.
  
! 'JoinedOrMissing'
       The option takes an optional argument.  If the argument is given,
!      it will be part of the same 'argv' entry as the option itself.
  
!      This property cannot be used alongside 'Joined' or 'Separate'.
  
! 'MissingArgError(MESSAGE)'
!      For an option marked 'Joined' or 'Separate', the message MESSAGE
       will be used as an error message if the mandatory argument is
!      missing; for options without 'MissingArgError', a generic error
!      message is used.  MESSAGE should contain a single '%qs' format,
       which will be used to format the name of the option passed.
  
! 'Args(N)'
!      For an option marked 'Separate', indicate that it takes N
       arguments.  The default is 1.
  
! 'UInteger'
       The option's argument is a non-negative integer consisting of
!      either decimal or hexadecimal digits interpreted as 'int'.
!      Hexadecimal integers may optionally start with the '0x' or '0X'
       prefix.  The option parser validates and converts the argument
!      before passing it to the relevant option handler.  'UInteger'
!      should also be used with options like '-falign-loops' where both
!      '-falign-loops' and '-falign-loops'=N are supported to make sure
       the saved options are given a full integer.  Positive values of the
!      argument in excess of 'INT_MAX' wrap around zero.
  
! 'Host_Wide_Int'
       The option's argument is a non-negative integer consisting of
       either decimal or hexadecimal digits interpreted as the widest
!      integer type on the host.  As with an 'UInteger' argument,
!      hexadecimal integers may optionally start with the '0x' or '0X'
       prefix.  The option parser validates and converts the argument
!      before passing it to the relevant option handler.  'Host_Wide_Int'
       should be used with options that need to accept very large values.
!      Positive values of the argument in excess of 'HOST_WIDE_INT_M1U'
!      are assigned 'HOST_WIDE_INT_M1U'.
  
! 'IntegerRange(N, M)'
!      The options's arguments are integers of type 'int'.  The option's
       parser validates that the value of an option integer argument is
       within the closed range [N, M].
  
! 'ByteSize'
!      A property applicable only to 'UInteger' or 'Host_Wide_Int'
       arguments.  The option's integer argument is interpreted as if in
       infinite precision using saturation arithmetic in the corresponding
!      type.  The argument may be followed by a 'byte-size' suffix
!      designating a multiple of bytes such as 'kB' and 'KiB' for kilobyte
!      and kibibyte, respectively, 'MB' and 'MiB' for megabyte and
!      mebibyte, 'GB' and 'GiB' for gigabyte and gigibyte, and so on.
!      'ByteSize' should be used for with options that take a very large
!      argument representing a size in bytes, such as '-Wlarger-than='.
  
! 'ToLower'
       The option's argument should be converted to lowercase as part of
       putting it in canonical form, and before comparing with the strings
!      indicated by any 'Enum' property.
  
! 'NoDriverArg'
!      For an option marked 'Separate', the option only takes an argument
       in the compiler proper, not in the driver.  This is for
       compatibility with existing options that are used both directly and
!      via '-Wp,'; new options should not have this property.
  
! 'Var(VAR)'
       The state of this option should be stored in variable VAR (actually
!      a macro for 'global_options.x_VAR').  The way that the state is
       stored depends on the type of option:
  
!         * If the option uses the 'Mask' or 'InverseMask' properties, VAR
            is the integer variable that contains the mask.
  
!         * If the option is a normal on/off switch, VAR is an integer
            variable that is nonzero when the option is enabled.  The
            options parser will set the variable to 1 when the positive
            form of the option is used and 0 when the "no-" form is used.
  
!         * If the option takes an argument and has the 'UInteger'
            property, VAR is an integer variable that stores the value of
            the argument.
  
!         * If the option takes an argument and has the 'Enum' property,
!           VAR is a variable (type given in the 'Type' property of the
!           'Enum' record whose 'Name' property has the same argument as
!           the 'Enum' property of this option) that stores the value of
            the argument.
  
!         * If the option has the 'Defer' property, VAR is a pointer to a
!           'VEC(cl_deferred_option,heap)' that stores the option for
!           later processing.  (VAR is declared with type 'void *' and
!           needs to be cast to 'VEC(cl_deferred_option,heap)' before
            use.)
  
!         * Otherwise, if the option takes an argument, VAR is a pointer
            to the argument string.  The pointer will be null if the
            argument is optional and wasn't given.
  
       The option-processing script will usually zero-initialize VAR.  You
!      can modify this behavior using 'Init'.
  
! 'Var(VAR, SET)'
       The option controls an integer variable VAR and is active when VAR
       equals SET.  The option parser will set VAR to SET when the
!      positive form of the option is used and '!SET' when the "no-" form
       is used.
  
       VAR is declared in the same way as for the single-argument form
       described above.
  
! 'Init(VALUE)'
!      The variable specified by the 'Var' property should be statically
       initialized to VALUE.  If more than one option using the same
!      variable specifies 'Init', all must specify the same initializer.
  
! 'WarnRemoved'
       The option is removed and every usage of such option will result in
       a warning.  We use it option backward compatibility.
  
! 'Mask(NAME)'
!      The option is associated with a bit in the 'target_flags' variable
       (*note Run-time Target::) and is active when that bit is set.  You
!      may also specify 'Var' to select a variable other than
!      'target_flags'.
  
       The options-processing script will automatically allocate a unique
!      bit for the option.  If the option is attached to 'target_flags' or
!      'Var' which is defined by 'TargetVariable', the script will set the
!      macro 'MASK_NAME' to the appropriate bitmask.  It will also declare
!      a 'TARGET_NAME', 'TARGET_NAME_P' and 'TARGET_NAME_OPTS_P':
!      'TARGET_NAME' macros that has the value 1 when the option is active
!      and 0 otherwise, 'TARGET_NAME_P' is similar to 'TARGET_NAME' but
!      take an argument as 'target_flags' or 'TargetVariable', and
!      'TARGET_NAME_OPTS_P' also similar to 'TARGET_NAME' but take an
!      argument as 'gcc_options'.  If you use 'Var' to attach the option
!      to a different variable which is not defined by 'TargetVariable',
!      the bitmask macro with be called 'OPTION_MASK_NAME'.
  
! 'InverseMask(OTHERNAME)'
! 'InverseMask(OTHERNAME, THISNAME)'
       The option is the inverse of another option that has the
!      'Mask(OTHERNAME)' property.  If THISNAME is given, the
!      options-processing script will declare 'TARGET_THISNAME',
!      'TARGET_NAME_P' and 'TARGET_NAME_OPTS_P' macros: 'TARGET_THISNAME'
!      is 1 when the option is active and 0 otherwise, 'TARGET_NAME_P' is
!      similar to 'TARGET_NAME' but takes an argument as 'target_flags',
!      and 'TARGET_NAME_OPTS_P' is also similar to 'TARGET_NAME' but takes
!      an argument as 'gcc_options'.
  
! 'Enum(NAME)'
       The option's argument is a string from the set of strings
!      associated with the corresponding 'Enum' record.  The string is
       checked and converted to the integer specified in the corresponding
!      'EnumValue' record before being passed to option handlers.
  
! 'EnumSet'
!      Must be used together with the 'Enum(NAME)' property.
!      Corresponding 'Enum' record must use 'Set' properties.  The
       option's argument is either a string from the set like for
!      'Enum(NAME)', but with a slightly different behavior that the whole
!      'Var' isn't overwritten, but only the bits in all the enumeration
       values with the same set bitwise ored together.  Or option's
       argument can be a comma separated list of strings where each string
!      is from a different 'Set(NUMBER)'.
  
! 'EnumBitSet'
!      Must be used together with the 'Enum(NAME)' property.  Similar to
!      'EnumSet', but corresponding 'Enum' record must not use 'Set'
!      properties, each 'EnumValue' should have 'Value' that is a power of
       2, each value is treated as its own set and its value as the set's
       mask, so there are no mutually exclusive arguments.
  
! 'Defer'
!      The option should be stored in a vector, specified with 'Var', for
       later processing.
  
! 'Alias(OPT)'
! 'Alias(OPT, ARG)'
! 'Alias(OPT, POSARG, NEGARG)'
!      The option is an alias for '-OPT' (or the negative form of that
!      option, depending on 'NegativeAlias').  In the first form, any
!      argument passed to the alias is considered to be passed to '-OPT',
!      and '-OPT' is considered to be negated if the alias is used in
       negated form.  In the second form, the alias may not be negated or
       have an argument, and POSARG is considered to be passed as an
!      argument to '-OPT'.  In the third form, the alias may not have an
       argument, if the alias is used in the positive form then POSARG is
!      considered to be passed to '-OPT', and if the alias is used in the
!      negative form then NEGARG is considered to be passed to '-OPT'.
  
!      Aliases should not specify 'Var' or 'Mask' or 'UInteger'.  Aliases
       should normally specify the same languages as the target of the
       alias; the flags on the target will be used to determine any
       diagnostic for use of an option for the wrong language, while those
       on the alias will be used to identify what command-line text is the
       option and what text is any argument to that option.
  
!      When an 'Alias' definition is used for an option, driver specs do
!      not need to handle it and no 'OPT_' enumeration value is defined
       for it; only the canonical form of the option will be seen in those
       places.
  
! 'NegativeAlias'
!      For an option marked with 'Alias(OPT)', the option is considered to
!      be an alias for the positive form of '-OPT' if negated and for the
!      negative form of '-OPT' if not negated.  'NegativeAlias' may not be
!      used with the forms of 'Alias' taking more than one argument.
  
! 'Ignore'
       This option is ignored apart from printing any warning specified
!      using 'Warn'.  The option will not be seen by specs and no 'OPT_'
       enumeration value is defined for it.
  
! 'SeparateAlias'
!      For an option marked with 'Joined', 'Separate' and 'Alias', the
       option only acts as an alias when passed a separate argument; with
!      a joined argument it acts as a normal option, with an 'OPT_'
!      enumeration value.  This is for compatibility with the Java '-d'
       option and should not be used for new options.
  
! 'Warn(MESSAGE)'
       If this option is used, output the warning MESSAGE.  MESSAGE is a
!      format string, either taking a single operand with a '%qs' format
       which is the option name, or not taking any operands, which is
!      passed to the 'warning' function.  If an alias is marked 'Warn',
!      the target of the alias must not also be marked 'Warn'.
  
! 'Warning'
!      This is a warning option and should be shown as such in '--help'
       output.  This flag does not currently affect anything other than
!      '--help'.
  
! 'Optimization'
       This is an optimization option.  It should be shown as such in
!      '--help' output, and any associated variable named using 'Var'
       should be saved and restored when the optimization level is changed
!      with 'optimize' attributes.
  
! 'PerFunction'
       This is an option that can be overridden on a per-function basis.
!      'Optimization' implies 'PerFunction', but options that do not
       affect executable code generation may use this flag instead, so
       that the option is not taken into account in ways that might affect
       executable code generation.
  
! 'Param'
       This is an option that is a parameter.
  
! 'Undocumented'
       The option is deliberately missing documentation and should not be
!      included in the '--help' output.
  
! 'Condition(COND)'
       The option should only be accepted if preprocessor condition COND
       is true.  Note that any C declarations associated with the option
       will be present even if COND is false; COND simply controls whether
!      the option is accepted and whether it is printed in the '--help'
       output.
  
! 'Save'
!      Build the 'cl_target_option' structure to hold a copy of the
!      option, add the functions 'cl_target_option_save' and
!      'cl_target_option_restore' to save and restore the options.
  
! 'SetByCombined'
       The option may also be set by a combined option such as
!      '-ffast-math'.  This causes the 'gcc_options' struct to have a
!      field 'frontend_set_NAME', where 'NAME' is the name of the field
!      holding the value of this option (without the leading 'x_').  This
       gives the front end a way to indicate that the value has been set
       explicitly and should not be changed by the combined option.  For
!      example, some front ends use this to prevent '-ffast-math' and
!      '-fno-fast-math' from changing the value of '-fmath-errno' for
!      languages that do not use 'errno'.
  
! 'EnabledBy(OPT)'
! 'EnabledBy(OPT || OPT2)'
! 'EnabledBy(OPT && OPT2)'
!      If not explicitly set, the option is set to the value of '-OPT';
!      multiple options can be given, separated by '||'.  The third form
!      using '&&' specifies that the option is only set if both OPT and
!      OPT2 are set.  The options OPT and OPT2 must have the 'Common'
!      property; otherwise, use 'LangEnabledBy'.
  
! 'LangEnabledBy(LANGUAGE, OPT)'
! 'LangEnabledBy(LANGUAGE, OPT, POSARG, NEGARG)'
       When compiling for the given language, the option is set to the
!      value of '-OPT', if not explicitly set.  OPT can be also a list of
!      '||' separated options.  In the second form, if OPT is used in the
       positive form then POSARG is considered to be passed to the option,
       and if OPT is used in the negative form then NEGARG is considered
       to be passed to the option.  It is possible to specify several
       different languages.  Each LANGUAGE must have been declared by an
!      earlier 'Language' record.  *Note Option file format::.
  
! 'NoDWARFRecord'
       The option is omitted from the producer string written by
!      '-grecord-gcc-switches'.
  
! 'PchIgnore'
       Even if this is a target option, this option will not be recorded /
       compared to determine if a precompiled header file matches.
  
! 'CPP(VAR)'
       The state of this option should be kept in sync with the
       preprocessor option VAR.  If this property is set, then properties
!      'Var' and 'Init' must be set as well.
  
! 'CppReason(CPP_W_ENUM)'
!      This warning option corresponds to 'cpplib.h' warning reason code
       CPP_W_ENUM.  This should only be used for warning options of the
       C-family front-ends.
  
! 'UrlSuffix(URL_SUFFIX)'
!      Adjacent to each human-written '.opt' file in the source tree is a
!      corresponding file with a '.opt.urls' extension.  These files
!      contain 'UrlSuffix' directives giving the ending part of the URL
       for the documentation of the option, such as:
  
            Wabi-tag
            UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wabi-tag)
  
!      These URL suffixes are relative to 'DOCUMENTATION_ROOT_URL'.
  
!      There files are generated from the '.opt' files and the generated
!      HTML documentation by 'regenerate-opt-urls.py', and should be
!      regenerated when adding new options, via manually invoking 'make
!      regenerate-opt-urls'.
  
! 'LangUrlSuffix_LANG(URL_SUFFIX)'
!      In addition to 'UrlSuffix' directives, 'regenerate-opt-urls.py' can
       generate language-specific URLs, such as:
  
            LangUrlSuffix_D(gdc/Code-Generation.html#index-MMD)
--- 7794,8181 ----
  
       Condition({defined (USE_CYGWIN_LIBSTDCXX_WRAPPERS)})
  
! â€˜Commonâ€™
       The option is available for all languages and targets.
  
! â€˜Targetâ€™
       The option is available for all languages but is target-specific.
  
! â€˜Driverâ€™
       The option is handled by the compiler driver using code not shared
!      with the compilers proper (â€˜cc1â€™ etc.).
  
! â€˜LANGUAGEâ€™
       The option is available when compiling for the given language.
  
       It is possible to specify several different languages for the same
       option.  Each LANGUAGE must have been declared by an earlier
!      â€˜Languageâ€™ record.  *Note Option file format::.
  
! â€˜RejectDriverâ€™
!      The option is only handled by the compilers proper (â€˜cc1â€™ etc.) and
       should not be accepted by the driver.
  
! â€˜RejectNegativeâ€™
       The option does not have a "no-" form.  All options beginning with
       "f", "g", "W" or "m" are assumed to have a "no-" form unless this
       property is used.
  
! â€˜Negative(OTHERNAME)â€™
       The option will turn off another option OTHERNAME, which is the
       option name with the leading "-" removed.  This chain action will
!      propagate through the â€˜Negativeâ€™ property of the option to be
       turned off.  The driver will prune options, removing those that are
       turned off by some later option.  This pruning is not done for
!      options with â€˜Joinedâ€™ or â€˜JoinedOrMissingâ€™ properties, unless the
!      options have both the â€˜RejectNegativeâ€™ property and the â€˜Negativeâ€™
       property mentions itself.
  
       As a consequence, if you have a group of mutually-exclusive
!      options, their â€˜Negativeâ€™ properties should form a circular chain.
!      For example, if options â€˜-Aâ€™, â€˜-Bâ€™ and â€˜-Câ€™ are mutually exclusive,
!      their respective â€˜Negativeâ€™ properties should be â€˜Negative(B)â€™,
!      â€˜Negative(C)â€™ and â€˜Negative(A)â€™.
  
! â€˜Joinedâ€™
! â€˜Separateâ€™
!      The option takes a mandatory argument.  â€˜Joinedâ€™ indicates that the
!      option and argument can be included in the same â€˜argvâ€™ entry (as
!      with â€˜-mflush-func=NAMEâ€™, for example).  â€˜Separateâ€™ indicates that
!      the option and argument can be separate â€˜argvâ€™ entries (as with
!      â€˜-oâ€™).  An option is allowed to have both of these properties.
  
! â€˜JoinedOrMissingâ€™
       The option takes an optional argument.  If the argument is given,
!      it will be part of the same â€˜argvâ€™ entry as the option itself.
  
!      This property cannot be used alongside â€˜Joinedâ€™ or â€˜Separateâ€™.
  
! â€˜MissingArgError(MESSAGE)â€™
!      For an option marked â€˜Joinedâ€™ or â€˜Separateâ€™, the message MESSAGE
       will be used as an error message if the mandatory argument is
!      missing; for options without â€˜MissingArgErrorâ€™, a generic error
!      message is used.  MESSAGE should contain a single â€˜%qsâ€™ format,
       which will be used to format the name of the option passed.
  
! â€˜Args(N)â€™
!      For an option marked â€˜Separateâ€™, indicate that it takes N
       arguments.  The default is 1.
  
! â€˜UIntegerâ€™
       The option's argument is a non-negative integer consisting of
!      either decimal or hexadecimal digits interpreted as â€˜intâ€™.
!      Hexadecimal integers may optionally start with the â€˜0xâ€™ or â€˜0Xâ€™
       prefix.  The option parser validates and converts the argument
!      before passing it to the relevant option handler.  â€˜UIntegerâ€™
!      should also be used with options like â€˜-falign-loopsâ€™ where both
!      â€˜-falign-loopsâ€™ and â€˜-falign-loopsâ€™=N are supported to make sure
       the saved options are given a full integer.  Positive values of the
!      argument in excess of â€˜INT_MAXâ€™ wrap around zero.
  
! â€˜Host_Wide_Intâ€™
       The option's argument is a non-negative integer consisting of
       either decimal or hexadecimal digits interpreted as the widest
!      integer type on the host.  As with an â€˜UIntegerâ€™ argument,
!      hexadecimal integers may optionally start with the â€˜0xâ€™ or â€˜0Xâ€™
       prefix.  The option parser validates and converts the argument
!      before passing it to the relevant option handler.  â€˜Host_Wide_Intâ€™
       should be used with options that need to accept very large values.
!      Positive values of the argument in excess of â€˜HOST_WIDE_INT_M1Uâ€™
!      are assigned â€˜HOST_WIDE_INT_M1Uâ€™.
  
! â€˜IntegerRange(N, M)â€™
!      The options's arguments are integers of type â€˜intâ€™.  The option's
       parser validates that the value of an option integer argument is
       within the closed range [N, M].
  
! â€˜ByteSizeâ€™
!      A property applicable only to â€˜UIntegerâ€™ or â€˜Host_Wide_Intâ€™
       arguments.  The option's integer argument is interpreted as if in
       infinite precision using saturation arithmetic in the corresponding
!      type.  The argument may be followed by a â€˜byte-sizeâ€™ suffix
!      designating a multiple of bytes such as â€˜kBâ€™ and â€˜KiBâ€™ for kilobyte
!      and kibibyte, respectively, â€˜MBâ€™ and â€˜MiBâ€™ for megabyte and
!      mebibyte, â€˜GBâ€™ and â€˜GiBâ€™ for gigabyte and gigibyte, and so on.
!      â€˜ByteSizeâ€™ should be used for with options that take a very large
!      argument representing a size in bytes, such as â€˜-Wlarger-than=â€™.
  
! â€˜ToLowerâ€™
       The option's argument should be converted to lowercase as part of
       putting it in canonical form, and before comparing with the strings
!      indicated by any â€˜Enumâ€™ property.
  
! â€˜NoDriverArgâ€™
!      For an option marked â€˜Separateâ€™, the option only takes an argument
       in the compiler proper, not in the driver.  This is for
       compatibility with existing options that are used both directly and
!      via â€˜-Wp,â€™; new options should not have this property.
  
! â€˜Var(VAR)â€™
       The state of this option should be stored in variable VAR (actually
!      a macro for â€˜global_options.x_VARâ€™).  The way that the state is
       stored depends on the type of option:
  
!         â€¢ If the option uses the â€˜Maskâ€™ or â€˜InverseMaskâ€™ properties, VAR
            is the integer variable that contains the mask.
  
!         â€¢ If the option is a normal on/off switch, VAR is an integer
            variable that is nonzero when the option is enabled.  The
            options parser will set the variable to 1 when the positive
            form of the option is used and 0 when the "no-" form is used.
  
!         â€¢ If the option takes an argument and has the â€˜UIntegerâ€™
            property, VAR is an integer variable that stores the value of
            the argument.
  
!         â€¢ If the option takes an argument and has the â€˜Enumâ€™ property,
!           VAR is a variable (type given in the â€˜Typeâ€™ property of the
!           â€˜Enumâ€™ record whose â€˜Nameâ€™ property has the same argument as
!           the â€˜Enumâ€™ property of this option) that stores the value of
            the argument.
  
!         â€¢ If the option has the â€˜Deferâ€™ property, VAR is a pointer to a
!           â€˜VEC(cl_deferred_option,heap)â€™ that stores the option for
!           later processing.  (VAR is declared with type â€˜void *â€™ and
!           needs to be cast to â€˜VEC(cl_deferred_option,heap)â€™ before
            use.)
  
!         â€¢ Otherwise, if the option takes an argument, VAR is a pointer
            to the argument string.  The pointer will be null if the
            argument is optional and wasn't given.
  
       The option-processing script will usually zero-initialize VAR.  You
!      can modify this behavior using â€˜Initâ€™.
  
! â€˜Var(VAR, SET)â€™
       The option controls an integer variable VAR and is active when VAR
       equals SET.  The option parser will set VAR to SET when the
!      positive form of the option is used and â€˜!SETâ€™ when the "no-" form
       is used.
  
       VAR is declared in the same way as for the single-argument form
       described above.
  
! â€˜Init(VALUE)â€™
!      The variable specified by the â€˜Varâ€™ property should be statically
       initialized to VALUE.  If more than one option using the same
!      variable specifies â€˜Initâ€™, all must specify the same initializer.
  
! â€˜WarnRemovedâ€™
       The option is removed and every usage of such option will result in
       a warning.  We use it option backward compatibility.
  
! â€˜Mask(NAME)â€™
!      The option is associated with a bit in the â€˜target_flagsâ€™ variable
       (*note Run-time Target::) and is active when that bit is set.  You
!      may also specify â€˜Varâ€™ to select a variable other than
!      â€˜target_flagsâ€™.
  
       The options-processing script will automatically allocate a unique
!      bit for the option.  If the option is attached to â€˜target_flagsâ€™ or
!      â€˜Varâ€™ which is defined by â€˜TargetVariableâ€™, the script will set the
!      macro â€˜MASK_NAMEâ€™ to the appropriate bitmask.  It will also declare
!      a â€˜TARGET_NAMEâ€™, â€˜TARGET_NAME_Pâ€™ and â€˜TARGET_NAME_OPTS_Pâ€™:
!      â€˜TARGET_NAMEâ€™ macros that has the value 1 when the option is active
!      and 0 otherwise, â€˜TARGET_NAME_Pâ€™ is similar to â€˜TARGET_NAMEâ€™ but
!      take an argument as â€˜target_flagsâ€™ or â€˜TargetVariableâ€™, and
!      â€˜TARGET_NAME_OPTS_Pâ€™ also similar to â€˜TARGET_NAMEâ€™ but take an
!      argument as â€˜gcc_optionsâ€™.  If you use â€˜Varâ€™ to attach the option
!      to a different variable which is not defined by â€˜TargetVariableâ€™,
!      the bitmask macro with be called â€˜OPTION_MASK_NAMEâ€™.
  
! â€˜InverseMask(OTHERNAME)â€™
! â€˜InverseMask(OTHERNAME, THISNAME)â€™
       The option is the inverse of another option that has the
!      â€˜Mask(OTHERNAME)â€™ property.  If THISNAME is given, the
!      options-processing script will declare â€˜TARGET_THISNAMEâ€™,
!      â€˜TARGET_NAME_Pâ€™ and â€˜TARGET_NAME_OPTS_Pâ€™ macros: â€˜TARGET_THISNAMEâ€™
!      is 1 when the option is active and 0 otherwise, â€˜TARGET_NAME_Pâ€™ is
!      similar to â€˜TARGET_NAMEâ€™ but takes an argument as â€˜target_flagsâ€™,
!      and â€˜TARGET_NAME_OPTS_Pâ€™ is also similar to â€˜TARGET_NAMEâ€™ but takes
!      an argument as â€˜gcc_optionsâ€™.
  
! â€˜Enum(NAME)â€™
       The option's argument is a string from the set of strings
!      associated with the corresponding â€˜Enumâ€™ record.  The string is
       checked and converted to the integer specified in the corresponding
!      â€˜EnumValueâ€™ record before being passed to option handlers.
  
! â€˜EnumSetâ€™
!      Must be used together with the â€˜Enum(NAME)â€™ property.
!      Corresponding â€˜Enumâ€™ record must use â€˜Setâ€™ properties.  The
       option's argument is either a string from the set like for
!      â€˜Enum(NAME)â€™, but with a slightly different behavior that the whole
!      â€˜Varâ€™ isn't overwritten, but only the bits in all the enumeration
       values with the same set bitwise ored together.  Or option's
       argument can be a comma separated list of strings where each string
!      is from a different â€˜Set(NUMBER)â€™.
  
! â€˜EnumBitSetâ€™
!      Must be used together with the â€˜Enum(NAME)â€™ property.  Similar to
!      â€˜EnumSetâ€™, but corresponding â€˜Enumâ€™ record must not use â€˜Setâ€™
!      properties, each â€˜EnumValueâ€™ should have â€˜Valueâ€™ that is a power of
       2, each value is treated as its own set and its value as the set's
       mask, so there are no mutually exclusive arguments.
  
! â€˜Deferâ€™
!      The option should be stored in a vector, specified with â€˜Varâ€™, for
       later processing.
  
! â€˜Alias(OPT)â€™
! â€˜Alias(OPT, ARG)â€™
! â€˜Alias(OPT, POSARG, NEGARG)â€™
!      The option is an alias for â€˜-OPTâ€™ (or the negative form of that
!      option, depending on â€˜NegativeAliasâ€™).  In the first form, any
!      argument passed to the alias is considered to be passed to â€˜-OPTâ€™,
!      and â€˜-OPTâ€™ is considered to be negated if the alias is used in
       negated form.  In the second form, the alias may not be negated or
       have an argument, and POSARG is considered to be passed as an
!      argument to â€˜-OPTâ€™.  In the third form, the alias may not have an
       argument, if the alias is used in the positive form then POSARG is
!      considered to be passed to â€˜-OPTâ€™, and if the alias is used in the
!      negative form then NEGARG is considered to be passed to â€˜-OPTâ€™.
  
!      Aliases should not specify â€˜Varâ€™ or â€˜Maskâ€™ or â€˜UIntegerâ€™.  Aliases
       should normally specify the same languages as the target of the
       alias; the flags on the target will be used to determine any
       diagnostic for use of an option for the wrong language, while those
       on the alias will be used to identify what command-line text is the
       option and what text is any argument to that option.
  
!      When an â€˜Aliasâ€™ definition is used for an option, driver specs do
!      not need to handle it and no â€˜OPT_â€™ enumeration value is defined
       for it; only the canonical form of the option will be seen in those
       places.
  
! â€˜NegativeAliasâ€™
!      For an option marked with â€˜Alias(OPT)â€™, the option is considered to
!      be an alias for the positive form of â€˜-OPTâ€™ if negated and for the
!      negative form of â€˜-OPTâ€™ if not negated.  â€˜NegativeAliasâ€™ may not be
!      used with the forms of â€˜Aliasâ€™ taking more than one argument.
  
! â€˜Ignoreâ€™
       This option is ignored apart from printing any warning specified
!      using â€˜Warnâ€™.  The option will not be seen by specs and no â€˜OPT_â€™
       enumeration value is defined for it.
  
! â€˜SeparateAliasâ€™
!      For an option marked with â€˜Joinedâ€™, â€˜Separateâ€™ and â€˜Aliasâ€™, the
       option only acts as an alias when passed a separate argument; with
!      a joined argument it acts as a normal option, with an â€˜OPT_â€™
!      enumeration value.  This is for compatibility with the Java â€˜-dâ€™
       option and should not be used for new options.
  
! â€˜Warn(MESSAGE)â€™
       If this option is used, output the warning MESSAGE.  MESSAGE is a
!      format string, either taking a single operand with a â€˜%qsâ€™ format
       which is the option name, or not taking any operands, which is
!      passed to the â€˜warningâ€™ function.  If an alias is marked â€˜Warnâ€™,
!      the target of the alias must not also be marked â€˜Warnâ€™.
  
! â€˜Warningâ€™
!      This is a warning option and should be shown as such in â€˜--helpâ€™
       output.  This flag does not currently affect anything other than
!      â€˜--helpâ€™.
  
! â€˜Optimizationâ€™
       This is an optimization option.  It should be shown as such in
!      â€˜--helpâ€™ output, and any associated variable named using â€˜Varâ€™
       should be saved and restored when the optimization level is changed
!      with â€˜optimizeâ€™ attributes.
  
! â€˜PerFunctionâ€™
       This is an option that can be overridden on a per-function basis.
!      â€˜Optimizationâ€™ implies â€˜PerFunctionâ€™, but options that do not
       affect executable code generation may use this flag instead, so
       that the option is not taken into account in ways that might affect
       executable code generation.
  
! â€˜Paramâ€™
       This is an option that is a parameter.
  
! â€˜Undocumentedâ€™
       The option is deliberately missing documentation and should not be
!      included in the â€˜--helpâ€™ output.
  
! â€˜Condition(COND)â€™
       The option should only be accepted if preprocessor condition COND
       is true.  Note that any C declarations associated with the option
       will be present even if COND is false; COND simply controls whether
!      the option is accepted and whether it is printed in the â€˜--helpâ€™
       output.
  
! â€˜Saveâ€™
!      Build the â€˜cl_target_optionâ€™ structure to hold a copy of the
!      option, add the functions â€˜cl_target_option_saveâ€™ and
!      â€˜cl_target_option_restoreâ€™ to save and restore the options.
  
! â€˜SetByCombinedâ€™
       The option may also be set by a combined option such as
!      â€˜-ffast-mathâ€™.  This causes the â€˜gcc_optionsâ€™ struct to have a
!      field â€˜frontend_set_NAMEâ€™, where â€˜NAMEâ€™ is the name of the field
!      holding the value of this option (without the leading â€˜x_â€™).  This
       gives the front end a way to indicate that the value has been set
       explicitly and should not be changed by the combined option.  For
!      example, some front ends use this to prevent â€˜-ffast-mathâ€™ and
!      â€˜-fno-fast-mathâ€™ from changing the value of â€˜-fmath-errnoâ€™ for
!      languages that do not use â€˜errnoâ€™.
  
! â€˜EnabledBy(OPT)â€™
! â€˜EnabledBy(OPT || OPT2)â€™
! â€˜EnabledBy(OPT && OPT2)â€™
!      If not explicitly set, the option is set to the value of â€˜-OPTâ€™;
!      multiple options can be given, separated by â€˜||â€™.  The third form
!      using â€˜&&â€™ specifies that the option is only set if both OPT and
!      OPT2 are set.  The options OPT and OPT2 must have the â€˜Commonâ€™
!      property; otherwise, use â€˜LangEnabledByâ€™.
  
! â€˜LangEnabledBy(LANGUAGE, OPT)â€™
! â€˜LangEnabledBy(LANGUAGE, OPT, POSARG, NEGARG)â€™
       When compiling for the given language, the option is set to the
!      value of â€˜-OPTâ€™, if not explicitly set.  OPT can be also a list of
!      â€˜||â€™ separated options.  In the second form, if OPT is used in the
       positive form then POSARG is considered to be passed to the option,
       and if OPT is used in the negative form then NEGARG is considered
       to be passed to the option.  It is possible to specify several
       different languages.  Each LANGUAGE must have been declared by an
!      earlier â€˜Languageâ€™ record.  *Note Option file format::.
  
! â€˜NoDWARFRecordâ€™
       The option is omitted from the producer string written by
!      â€˜-grecord-gcc-switchesâ€™.
  
! â€˜PchIgnoreâ€™
       Even if this is a target option, this option will not be recorded /
       compared to determine if a precompiled header file matches.
  
! â€˜CPP(VAR)â€™
       The state of this option should be kept in sync with the
       preprocessor option VAR.  If this property is set, then properties
!      â€˜Varâ€™ and â€˜Initâ€™ must be set as well.
  
! â€˜CppReason(CPP_W_ENUM)â€™
!      This warning option corresponds to â€˜cpplib.hâ€™ warning reason code
       CPP_W_ENUM.  This should only be used for warning options of the
       C-family front-ends.
  
! â€˜UrlSuffix(URL_SUFFIX)â€™
!      Adjacent to each human-written â€˜.optâ€™ file in the source tree is a
!      corresponding file with a â€˜.opt.urlsâ€™ extension.  These files
!      contain â€˜UrlSuffixâ€™ directives giving the ending part of the URL
       for the documentation of the option, such as:
  
            Wabi-tag
            UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wabi-tag)
  
!      These URL suffixes are relative to â€˜DOCUMENTATION_ROOT_URLâ€™.
  
!      There files are generated from the â€˜.optâ€™ files and the generated
!      HTML documentation by â€˜regenerate-opt-urls.pyâ€™, and should be
!      regenerated when adding new options, via manually invoking â€˜make
!      regenerate-opt-urlsâ€™.
  
! â€˜LangUrlSuffix_LANG(URL_SUFFIX)â€™
!      In addition to â€˜UrlSuffixâ€™ directives, â€˜regenerate-opt-urls.pyâ€™ can
       generate language-specific URLs, such as:
  
            LangUrlSuffix_D(gdc/Code-Generation.html#index-MMD)
*************** File: gccint.info,  Node: Parsing pass,
*** 8203,8212 ****
  ================
  
  The language front end is invoked only once, via
! 'lang_hooks.parse_file', to parse the entire input.  The language front
  end may use any intermediate language representation deemed appropriate.
  The C front end uses GENERIC trees (*note GENERIC::), plus a double
! handful of language specific tree codes defined in 'c-common.def'.  The
  Fortran front end uses a completely different private representation.
  
   At some point the front end must translate the representation used in
--- 8208,8217 ----
  ================
  
  The language front end is invoked only once, via
! â€˜lang_hooks.parse_fileâ€™, to parse the entire input.  The language front
  end may use any intermediate language representation deemed appropriate.
  The C front end uses GENERIC trees (*note GENERIC::), plus a double
! handful of language specific tree codes defined in â€˜c-common.defâ€™.  The
  Fortran front end uses a completely different private representation.
  
   At some point the front end must translate the representation used in
*************** all be passed as well.
*** 8249,8257 ****
  
   In any case, the front end needs each complete top-level function or
  data declaration, and each data definition should be passed to
! 'rest_of_decl_compilation'.  Each complete type definition should be
! passed to 'rest_of_type_compilation'.  Each function definition should
! be passed to 'cgraph_finalize_function'.
  
   TODO: I know rest_of_compilation currently has all sorts of RTL
  generation semantics.  I plan to move all code generation bits (both
--- 8254,8262 ----
  
   In any case, the front end needs each complete top-level function or
  data declaration, and each data definition should be passed to
! â€˜rest_of_decl_compilationâ€™.  Each complete type definition should be
! passed to â€˜rest_of_type_compilationâ€™.  Each function definition should
! be passed to â€˜cgraph_finalize_functionâ€™.
  
   TODO: I know rest_of_compilation currently has all sorts of RTL
  generation semantics.  I plan to move all code generation bits (both
*************** File: gccint.info,  Node: Gimplification
*** 8269,8275 ****
  8.2 Gimplification pass
  =======================
  
! "Gimplification" is a whimsical term for the process of converting the
  intermediate representation of a function into the GIMPLE language
  (*note GIMPLE::).  The term stuck, and so words like "gimplification",
  "gimplify", "gimplifier" and the like are sprinkled throughout this
--- 8274,8280 ----
  8.2 Gimplification pass
  =======================
  
! â€œGimplificationâ€� is a whimsical term for the process of converting the
  intermediate representation of a function into the GIMPLE language
  (*note GIMPLE::).  The term stuck, and so words like "gimplification",
  "gimplify", "gimplifier" and the like are sprinkled throughout this
*************** intermediate language used by the front
*** 8281,8303 ****
  Usually it is easier to generate GENERIC trees plus extensions and let
  the language-independent gimplifier do most of the work.
  
!  The main entry point to this pass is 'gimplify_function_tree' located
! in 'gimplify.cc'.  From here we process the entire function gimplifying
  each statement in turn.  The main workhorse for this pass is
! 'gimplify_expr'.  Approximately everything passes through here at least
! once, and it is from here that we invoke the 'lang_hooks.gimplify_expr'
  callback.
  
   The callback should examine the expression in question and return
! 'GS_UNHANDLED' if the expression is not a language specific construct
  that requires attention.  Otherwise it should alter the expression in
  some way to such that forward progress is made toward producing valid
  GIMPLE.  If the callback is certain that the transformation is complete
! and the expression is valid GIMPLE, it should return 'GS_ALL_DONE'.
! Otherwise it should return 'GS_OK', which will cause the expression to
  be processed again.  If the callback encounters an error during the
  transformation (because the front end is relying on the gimplification
! process to finish semantic checks), it should return 'GS_ERROR'.
  
  
  File: gccint.info,  Node: Pass manager,  Next: IPA passes,  Prev: Gimplification pass,  Up: Passes
--- 8286,8308 ----
  Usually it is easier to generate GENERIC trees plus extensions and let
  the language-independent gimplifier do most of the work.
  
!  The main entry point to this pass is â€˜gimplify_function_treeâ€™ located
! in â€˜gimplify.ccâ€™.  From here we process the entire function gimplifying
  each statement in turn.  The main workhorse for this pass is
! â€˜gimplify_exprâ€™.  Approximately everything passes through here at least
! once, and it is from here that we invoke the â€˜lang_hooks.gimplify_exprâ€™
  callback.
  
   The callback should examine the expression in question and return
! â€˜GS_UNHANDLEDâ€™ if the expression is not a language specific construct
  that requires attention.  Otherwise it should alter the expression in
  some way to such that forward progress is made toward producing valid
  GIMPLE.  If the callback is certain that the transformation is complete
! and the expression is valid GIMPLE, it should return â€˜GS_ALL_DONEâ€™.
! Otherwise it should return â€˜GS_OKâ€™, which will cause the expression to
  be processed again.  If the callback encounters an error during the
  transformation (because the front end is relying on the gimplification
! process to finish semantic checks), it should return â€˜GS_ERRORâ€™.
  
  
  File: gccint.info,  Node: Pass manager,  Next: IPA passes,  Prev: Gimplification pass,  Up: Passes
*************** File: gccint.info,  Node: Pass manager,
*** 8305,8312 ****
  8.3 Pass manager
  ================
  
! The pass manager is located in 'passes.cc', 'tree-optimize.c' and
! 'tree-pass.h'.  It processes passes as described in 'passes.def'.  Its
  job is to run all of the individual passes in the correct order, and
  take care of standard bookkeeping that applies to every pass.
  
--- 8310,8317 ----
  8.3 Pass manager
  ================
  
! The pass manager is located in â€˜passes.ccâ€™, â€˜tree-optimize.câ€™ and
! â€˜tree-pass.hâ€™.  It processes passes as described in â€˜passes.defâ€™.  Its
  job is to run all of the individual passes in the correct order, and
  take care of standard bookkeeping that applies to every pass.
  
*************** some particular order, and the pass mana
*** 8318,8324 ****
  happen in the correct order.
  
   The actuality doesn't completely live up to the theory at present.
! Command-line switches and 'timevar_id_t' enumerations must still be
  defined elsewhere.  The pass manager validates constraints but does not
  attempt to (re-)generate data structures or lower intermediate language
  form based on the requirements of the next pass.  Nevertheless, what is
--- 8323,8329 ----
  happen in the correct order.
  
   The actuality doesn't completely live up to the theory at present.
! Command-line switches and â€˜timevar_id_tâ€™ enumerations must still be
  defined elsewhere.  The pass manager validates constraints but does not
  attempt to (re-)generate data structures or lower intermediate language
  form based on the requirements of the next pass.  Nevertheless, what is
*************** File: gccint.info,  Node: Small IPA pass
*** 8366,8458 ****
  8.4.1 Small IPA passes
  ----------------------
  
! A small IPA pass is a pass derived from 'simple_ipa_opt_pass'.  As
  described in *note IPA::, it does everything at once and defines only
  the _Execute_ stage.  During this stage it accesses and modifies the
! function bodies.  No 'generate_summary', 'read_summary', or
! 'write_summary' hooks are defined.
  
!    * IPA free lang data
  
       This pass frees resources that are used by the front end but are
!      not needed once it is done.  It is located in 'tree.cc' and is
!      described by 'pass_ipa_free_lang_data'.
  
!    * IPA function and variable visibility
  
       This is a local function pass handling visibilities of all symbols.
!      This happens before LTO streaming, so '-fwhole-program' should be
!      ignored at this level.  It is located in 'ipa-visibility.cc' and is
!      described by 'pass_ipa_function_and_variable_visibility'.
  
!    * IPA remove symbols
  
       This pass performs reachability analysis and reclaims all
!      unreachable nodes.  It is located in 'passes.cc' and is described
!      by 'pass_ipa_remove_symbols'.
  
!    * IPA OpenACC
  
       This is a pass group for OpenACC processing.  It is located in
!      'tree-ssa-loop.cc' and is described by 'pass_ipa_oacc'.
  
!    * IPA points-to analysis
  
       This is a tree-based points-to analysis pass.  The idea behind this
       analyzer is to generate set constraints from the program, then
       solve the resulting constraints in order to generate the points-to
!      sets.  It is located in 'tree-ssa-structalias.cc' and is described
!      by 'pass_ipa_pta'.
  
!    * IPA OpenACC kernels
  
       This is a pass group for processing OpenACC kernels regions.  It is
       a subpass of the IPA OpenACC pass group that runs on offloaded
       functions containing OpenACC kernels loops.  It is located in
!      'tree-ssa-loop.cc' and is described by 'pass_ipa_oacc_kernels'.
  
!    * Target clone
  
       This is a pass for parsing functions with multiple target
!      attributes.  It is located in 'multiple_target.cc' and is described
!      by 'pass_target_clone'.
  
!    * IPA auto profile
  
       This pass uses AutoFDO profiling data to annotate the control flow
!      graph.  It is located in 'auto-profile.cc' and is described by
!      'pass_ipa_auto_profile'.
  
!    * IPA tree profile
  
       This pass does profiling for all functions in the call graph.  It
       calculates branch probabilities and basic block execution counts.
!      It is located in 'tree-profile.cc' and is described by
!      'pass_ipa_tree_profile'.
  
!    * IPA free function summary
  
!      This pass is a small IPA pass when argument 'small_p' is true.  It
       releases inline function summaries and call summaries.  It is
!      located in 'ipa-fnsummary.cc' and is described by
!      'pass_ipa_free_free_fn_summary'.
  
!    * IPA increase alignment
  
       This pass increases the alignment of global arrays to improve
!      vectorization.  It is located in 'tree-vectorizer.cc' and is
!      described by 'pass_ipa_increase_alignment'.
  
!    * IPA transactional memory
  
       This pass is for transactional memory support.  It is located in
!      'trans-mem.cc' and is described by 'pass_ipa_tm'.
  
!    * IPA lower emulated TLS
  
       This pass lowers thread-local storage (TLS) operations to emulation
!      functions provided by libgcc.  It is located in 'tree-emutls.cc'
!      and is described by 'pass_ipa_lower_emutls'.
  
  
  File: gccint.info,  Node: Regular IPA passes,  Next: Late IPA passes,  Prev: Small IPA passes,  Up: IPA passes
--- 8371,8463 ----
  8.4.1 Small IPA passes
  ----------------------
  
! A small IPA pass is a pass derived from â€˜simple_ipa_opt_passâ€™.  As
  described in *note IPA::, it does everything at once and defines only
  the _Execute_ stage.  During this stage it accesses and modifies the
! function bodies.  No â€˜generate_summaryâ€™, â€˜read_summaryâ€™, or
! â€˜write_summaryâ€™ hooks are defined.
  
!    â€¢ IPA free lang data
  
       This pass frees resources that are used by the front end but are
!      not needed once it is done.  It is located in â€˜tree.ccâ€™ and is
!      described by â€˜pass_ipa_free_lang_dataâ€™.
  
!    â€¢ IPA function and variable visibility
  
       This is a local function pass handling visibilities of all symbols.
!      This happens before LTO streaming, so â€˜-fwhole-programâ€™ should be
!      ignored at this level.  It is located in â€˜ipa-visibility.ccâ€™ and is
!      described by â€˜pass_ipa_function_and_variable_visibilityâ€™.
  
!    â€¢ IPA remove symbols
  
       This pass performs reachability analysis and reclaims all
!      unreachable nodes.  It is located in â€˜passes.ccâ€™ and is described
!      by â€˜pass_ipa_remove_symbolsâ€™.
  
!    â€¢ IPA OpenACC
  
       This is a pass group for OpenACC processing.  It is located in
!      â€˜tree-ssa-loop.ccâ€™ and is described by â€˜pass_ipa_oaccâ€™.
  
!    â€¢ IPA points-to analysis
  
       This is a tree-based points-to analysis pass.  The idea behind this
       analyzer is to generate set constraints from the program, then
       solve the resulting constraints in order to generate the points-to
!      sets.  It is located in â€˜tree-ssa-structalias.ccâ€™ and is described
!      by â€˜pass_ipa_ptaâ€™.
  
!    â€¢ IPA OpenACC kernels
  
       This is a pass group for processing OpenACC kernels regions.  It is
       a subpass of the IPA OpenACC pass group that runs on offloaded
       functions containing OpenACC kernels loops.  It is located in
!      â€˜tree-ssa-loop.ccâ€™ and is described by â€˜pass_ipa_oacc_kernelsâ€™.
  
!    â€¢ Target clone
  
       This is a pass for parsing functions with multiple target
!      attributes.  It is located in â€˜multiple_target.ccâ€™ and is described
!      by â€˜pass_target_cloneâ€™.
  
!    â€¢ IPA auto profile
  
       This pass uses AutoFDO profiling data to annotate the control flow
!      graph.  It is located in â€˜auto-profile.ccâ€™ and is described by
!      â€˜pass_ipa_auto_profileâ€™.
  
!    â€¢ IPA tree profile
  
       This pass does profiling for all functions in the call graph.  It
       calculates branch probabilities and basic block execution counts.
!      It is located in â€˜tree-profile.ccâ€™ and is described by
!      â€˜pass_ipa_tree_profileâ€™.
  
!    â€¢ IPA free function summary
  
!      This pass is a small IPA pass when argument â€˜small_pâ€™ is true.  It
       releases inline function summaries and call summaries.  It is
!      located in â€˜ipa-fnsummary.ccâ€™ and is described by
!      â€˜pass_ipa_free_free_fn_summaryâ€™.
  
!    â€¢ IPA increase alignment
  
       This pass increases the alignment of global arrays to improve
!      vectorization.  It is located in â€˜tree-vectorizer.ccâ€™ and is
!      described by â€˜pass_ipa_increase_alignmentâ€™.
  
!    â€¢ IPA transactional memory
  
       This pass is for transactional memory support.  It is located in
!      â€˜trans-mem.ccâ€™ and is described by â€˜pass_ipa_tmâ€™.
  
!    â€¢ IPA lower emulated TLS
  
       This pass lowers thread-local storage (TLS) operations to emulation
!      functions provided by libgcc.  It is located in â€˜tree-emutls.ccâ€™
!      and is described by â€˜pass_ipa_lower_emutlsâ€™.
  
  
  File: gccint.info,  Node: Regular IPA passes,  Next: Late IPA passes,  Prev: Small IPA passes,  Up: IPA passes
*************** File: gccint.info,  Node: Regular IPA pa
*** 8460,8575 ****
  8.4.2 Regular IPA passes
  ------------------------
  
! A regular IPA pass is a pass derived from 'ipa_opt_pass_d' that is
  executed in WHOPR compilation.  Regular IPA passes may have summary
  hooks implemented in any of the LGEN, WPA or LTRANS stages (*note
  IPA::).
  
!    * IPA whole program visibility
  
       This pass performs various optimizations involving symbol
!      visibility with '-fwhole-program', including symbol privatization,
       discovering local functions, and dismantling comdat groups.  It is
!      located in 'ipa-visibility.cc' and is described by
!      'pass_ipa_whole_program_visibility'.
  
!    * IPA profile
  
       The IPA profile pass propagates profiling frequencies across the
!      call graph.  It is located in 'ipa-profile.cc' and is described by
!      'pass_ipa_profile'.
  
!    * IPA identical code folding
  
       This is the inter-procedural identical code folding pass.  The goal
       of this transformation is to discover functions and read-only
       variables that have exactly the same semantics.  It is located in
!      'ipa-icf.cc' and is described by 'pass_ipa_icf'.
  
!    * IPA devirtualization
  
       This pass performs speculative devirtualization based on the type
       inheritance graph.  When a polymorphic call has only one likely
       target in the unit, it is turned into a speculative call.  It is
!      located in 'ipa-devirt.cc' and is described by 'pass_ipa_devirt'.
  
!    * IPA constant propagation
  
       The goal of this pass is to discover functions that are always
       invoked with some arguments with the same known constant values and
       to modify the functions accordingly.  It can also do partial
       specialization and type-based devirtualization.  It is located in
!      'ipa-cp.cc' and is described by 'pass_ipa_cp'.
  
!    * IPA scalar replacement of aggregates
  
       This pass can replace an aggregate parameter with a set of other
       parameters representing part of the original, turning those passed
       by reference into new ones which pass the value directly.  It also
       removes unused function return values and unused function
!      parameters.  This pass is located in 'ipa-sra.cc' and is described
!      by 'pass_ipa_sra'.
  
!    * IPA constructor/destructor merge
  
       This pass merges multiple constructors and destructors for static
       objects into single functions.  It's only run at LTO time unless
       the target doesn't support constructors and destructors natively.
!      The pass is located in 'ipa.cc' and is described by
!      'pass_ipa_cdtor_merge'.
  
!    * IPA function summary
  
       This pass provides function analysis for inter-procedural passes.
       It collects estimates of function body size, execution time, and
       frame size for each function.  It also estimates information about
       function calls: call statement size, time and how often the
       parameters change for each call.  It is located in
!      'ipa-fnsummary.cc' and is described by 'pass_ipa_fn_summary'.
  
!    * IPA inline
  
       The IPA inline pass handles function inlining with whole-program
       knowledge.  Small functions that are candidates for inlining are
       ordered in increasing badness, bounded by unit growth parameters.
       Unreachable functions are removed from the call graph.  Functions
       called once and not exported from the unit are inlined.  This pass
!      is located in 'ipa-inline.cc' and is described by
!      'pass_ipa_inline'.
  
!    * IPA pure/const analysis
  
!      This pass marks functions as being either const ('TREE_READONLY')
!      or pure ('DECL_PURE_P').  The per-function information is produced
!      by 'pure_const_generate_summary', then the global information is
       computed by performing a transitive closure over the call graph.
!      It is located in 'ipa-pure-const.cc' and is described by
!      'pass_ipa_pure_const'.
  
!    * IPA free function summary
  
!      This pass is a regular IPA pass when argument 'small_p' is false.
       It releases inline function summaries and call summaries.  It is
!      located in 'ipa-fnsummary.cc' and is described by
!      'pass_ipa_free_fn_summary'.
  
!    * IPA reference
  
       This pass gathers information about how variables whose scope is
       confined to the compilation unit are used.  It is located in
!      'ipa-reference.cc' and is described by 'pass_ipa_reference'.
  
!    * IPA single use
  
       This pass checks whether variables are used by a single function.
!      It is located in 'ipa.cc' and is described by
!      'pass_ipa_single_use'.
  
!    * IPA comdats
  
       This pass looks for static symbols that are used exclusively within
       one comdat group, and moves them into that comdat group.  It is
!      located in 'ipa-comdats.cc' and is described by 'pass_ipa_comdats'.
  
  
  File: gccint.info,  Node: Late IPA passes,  Prev: Regular IPA passes,  Up: IPA passes
--- 8465,8580 ----
  8.4.2 Regular IPA passes
  ------------------------
  
! A regular IPA pass is a pass derived from â€˜ipa_opt_pass_dâ€™ that is
  executed in WHOPR compilation.  Regular IPA passes may have summary
  hooks implemented in any of the LGEN, WPA or LTRANS stages (*note
  IPA::).
  
!    â€¢ IPA whole program visibility
  
       This pass performs various optimizations involving symbol
!      visibility with â€˜-fwhole-programâ€™, including symbol privatization,
       discovering local functions, and dismantling comdat groups.  It is
!      located in â€˜ipa-visibility.ccâ€™ and is described by
!      â€˜pass_ipa_whole_program_visibilityâ€™.
  
!    â€¢ IPA profile
  
       The IPA profile pass propagates profiling frequencies across the
!      call graph.  It is located in â€˜ipa-profile.ccâ€™ and is described by
!      â€˜pass_ipa_profileâ€™.
  
!    â€¢ IPA identical code folding
  
       This is the inter-procedural identical code folding pass.  The goal
       of this transformation is to discover functions and read-only
       variables that have exactly the same semantics.  It is located in
!      â€˜ipa-icf.ccâ€™ and is described by â€˜pass_ipa_icfâ€™.
  
!    â€¢ IPA devirtualization
  
       This pass performs speculative devirtualization based on the type
       inheritance graph.  When a polymorphic call has only one likely
       target in the unit, it is turned into a speculative call.  It is
!      located in â€˜ipa-devirt.ccâ€™ and is described by â€˜pass_ipa_devirtâ€™.
  
!    â€¢ IPA constant propagation
  
       The goal of this pass is to discover functions that are always
       invoked with some arguments with the same known constant values and
       to modify the functions accordingly.  It can also do partial
       specialization and type-based devirtualization.  It is located in
!      â€˜ipa-cp.ccâ€™ and is described by â€˜pass_ipa_cpâ€™.
  
!    â€¢ IPA scalar replacement of aggregates
  
       This pass can replace an aggregate parameter with a set of other
       parameters representing part of the original, turning those passed
       by reference into new ones which pass the value directly.  It also
       removes unused function return values and unused function
!      parameters.  This pass is located in â€˜ipa-sra.ccâ€™ and is described
!      by â€˜pass_ipa_sraâ€™.
  
!    â€¢ IPA constructor/destructor merge
  
       This pass merges multiple constructors and destructors for static
       objects into single functions.  It's only run at LTO time unless
       the target doesn't support constructors and destructors natively.
!      The pass is located in â€˜ipa.ccâ€™ and is described by
!      â€˜pass_ipa_cdtor_mergeâ€™.
  
!    â€¢ IPA function summary
  
       This pass provides function analysis for inter-procedural passes.
       It collects estimates of function body size, execution time, and
       frame size for each function.  It also estimates information about
       function calls: call statement size, time and how often the
       parameters change for each call.  It is located in
!      â€˜ipa-fnsummary.ccâ€™ and is described by â€˜pass_ipa_fn_summaryâ€™.
  
!    â€¢ IPA inline
  
       The IPA inline pass handles function inlining with whole-program
       knowledge.  Small functions that are candidates for inlining are
       ordered in increasing badness, bounded by unit growth parameters.
       Unreachable functions are removed from the call graph.  Functions
       called once and not exported from the unit are inlined.  This pass
!      is located in â€˜ipa-inline.ccâ€™ and is described by
!      â€˜pass_ipa_inlineâ€™.
  
!    â€¢ IPA pure/const analysis
  
!      This pass marks functions as being either const (â€˜TREE_READONLYâ€™)
!      or pure (â€˜DECL_PURE_Pâ€™).  The per-function information is produced
!      by â€˜pure_const_generate_summaryâ€™, then the global information is
       computed by performing a transitive closure over the call graph.
!      It is located in â€˜ipa-pure-const.ccâ€™ and is described by
!      â€˜pass_ipa_pure_constâ€™.
  
!    â€¢ IPA free function summary
  
!      This pass is a regular IPA pass when argument â€˜small_pâ€™ is false.
       It releases inline function summaries and call summaries.  It is
!      located in â€˜ipa-fnsummary.ccâ€™ and is described by
!      â€˜pass_ipa_free_fn_summaryâ€™.
  
!    â€¢ IPA reference
  
       This pass gathers information about how variables whose scope is
       confined to the compilation unit are used.  It is located in
!      â€˜ipa-reference.ccâ€™ and is described by â€˜pass_ipa_referenceâ€™.
  
!    â€¢ IPA single use
  
       This pass checks whether variables are used by a single function.
!      It is located in â€˜ipa.ccâ€™ and is described by
!      â€˜pass_ipa_single_useâ€™.
  
!    â€¢ IPA comdats
  
       This pass looks for static symbols that are used exclusively within
       one comdat group, and moves them into that comdat group.  It is
!      located in â€˜ipa-comdats.ccâ€™ and is described by â€˜pass_ipa_comdatsâ€™.
  
  
  File: gccint.info,  Node: Late IPA passes,  Prev: Regular IPA passes,  Up: IPA passes
*************** Late IPA passes are simple IPA passes ex
*** 8581,8603 ****
  In WHOPR mode the passes are executed after partitioning and thus see
  just parts of the compiled unit.
  
!    * Materialize all clones
  
       Once all functions from compilation unit are in memory, produce all
!      clones and update all calls.  It is located in 'ipa.cc' and is
!      described by 'pass_materialize_all_clones'.
  
!    * IPA points-to analysis
  
       Points-to analysis; this is the same as the points-to-analysis pass
       run with the small IPA passes (*note Small IPA passes::).
  
!    * OpenMP simd clone
  
       This is the OpenMP constructs' SIMD clone pass.  It creates the
       appropriate SIMD clones for functions tagged as elemental SIMD
!      functions.  It is located in 'omp-simd-clone.cc' and is described
!      by 'pass_omp_simd_clone'.
  
  
  File: gccint.info,  Node: Tree SSA passes,  Next: RTL passes,  Prev: IPA passes,  Up: Passes
--- 8586,8608 ----
  In WHOPR mode the passes are executed after partitioning and thus see
  just parts of the compiled unit.
  
!    â€¢ Materialize all clones
  
       Once all functions from compilation unit are in memory, produce all
!      clones and update all calls.  It is located in â€˜ipa.ccâ€™ and is
!      described by â€˜pass_materialize_all_clonesâ€™.
  
!    â€¢ IPA points-to analysis
  
       Points-to analysis; this is the same as the points-to-analysis pass
       run with the small IPA passes (*note Small IPA passes::).
  
!    â€¢ OpenMP simd clone
  
       This is the OpenMP constructs' SIMD clone pass.  It creates the
       appropriate SIMD clones for functions tagged as elemental SIMD
!      functions.  It is located in â€˜omp-simd-clone.ccâ€™ and is described
!      by â€˜pass_omp_simd_cloneâ€™.
  
  
  File: gccint.info,  Node: Tree SSA passes,  Next: RTL passes,  Prev: IPA passes,  Up: Passes
*************** File: gccint.info,  Node: Tree SSA passe
*** 8608,8889 ****
  The following briefly describes the Tree optimization passes that are
  run after gimplification and what source files they are located in.
  
!    * OpenMP lowering
  
!      If OpenMP generation ('-fopenmp') is enabled, this pass lowers
       OpenMP constructs into GIMPLE.
  
       Lowering of OpenMP constructs involves creating replacement
       expressions for local variables that have been mapped using data
       sharing clauses, exposing the control flow of most synchronization
       directives and adding region markers to facilitate the creation of
!      the control flow graph.  The pass is located in 'omp-low.cc' and is
!      described by 'pass_lower_omp'.
  
!    * OpenMP expansion
  
!      If OpenMP generation ('-fopenmp') is enabled, this pass expands
       parallel regions into their own functions to be invoked by the
!      thread library.  The pass is located in 'omp-low.cc' and is
!      described by 'pass_expand_omp'.
  
!    * Lower control flow
  
!      This pass flattens 'if' statements ('COND_EXPR') and moves lexical
!      bindings ('BIND_EXPR') out of line.  After this pass, all 'if'
!      statements will have exactly two 'goto' statements in its 'then'
!      and 'else' arms.  Lexical binding information for each statement
!      will be found in 'TREE_BLOCK' rather than being inferred from its
!      position under a 'BIND_EXPR'.  This pass is found in
!      'gimple-low.cc' and is described by 'pass_lower_cf'.
  
!    * Lower exception handling control flow
  
       This pass decomposes high-level exception handling constructs
!      ('TRY_FINALLY_EXPR' and 'TRY_CATCH_EXPR') into a form that
       explicitly represents the control flow involved.  After this pass,
!      'lookup_stmt_eh_region' will return a non-negative number for any
       statement that may have EH control flow semantics; examine
!      'tree_can_throw_internal' or 'tree_can_throw_external' for exact
       semantics.  Exact control flow may be extracted from
!      'foreach_reachable_handler'.  The EH region nesting tree is defined
!      in 'except.h' and built in 'except.cc'.  The lowering pass itself
!      is in 'tree-eh.cc' and is described by 'pass_lower_eh'.
  
!    * Build the control flow graph
  
       This pass decomposes a function into basic blocks and creates all
!      of the edges that connect them.  It is located in 'tree-cfg.cc' and
!      is described by 'pass_build_cfg'.
  
!    * Enter static single assignment form
  
       This pass rewrites the function such that it is in SSA form.  After
!      this pass, all 'is_gimple_reg' variables will be referenced by
!      'SSA_NAME', and all occurrences of other variables will be
!      annotated with 'VDEFS' and 'VUSES'; PHI nodes will have been
       inserted as necessary for each basic block.  This pass is located
!      in 'tree-into-ssa.cc' and is described by 'pass_build_ssa'.
  
!    * Warn for uninitialized variables
  
!      This pass scans the function for uses of 'SSA_NAME's that are fed
       by default definition.  For non-parameter variables, such uses are
       uninitialized.  The pass is run twice, before and after
       optimization (if turned on).  In the first pass we only warn for
       uses that are positively uninitialized; in the second pass we warn
       for uses that are possibly uninitialized.  The pass is located in
!      'tree-ssa-uninit.cc' and is defined by
!      'pass_early_warn_uninitialized' and 'pass_late_warn_uninitialized'.
  
!    * Dead code elimination
  
       This pass scans the function for statements without side effects
       whose result is unused.  It does not do memory lifetime analysis,
       so any value that is stored in memory is considered used.  The pass
       is run multiple times throughout the optimization process.  It is
!      located in 'tree-ssa-dce.cc' and is described by 'pass_dce'.
  
!    * Dominator optimizations
  
       This pass performs trivial dominator-based copy and constant
       propagation, expression simplification, and jump threading.  It is
       run multiple times throughout the optimization process.  It is
!      located in 'tree-ssa-dom.cc' and is described by 'pass_dominator'.
  
!    * Forward propagation of single-use variables
  
       This pass attempts to remove redundant computation by substituting
       variables that are used once into the expression that uses them and
       seeing if the result can be simplified.  It is located in
!      'tree-ssa-forwprop.cc' and is described by 'pass_forwprop'.
  
!    * PHI node optimizations
  
       This pass recognizes forms of PHI inputs that can be represented as
       conditional expressions and rewrites them into straight line code.
!      It is located in 'tree-ssa-phiopt.cc' and is described by
!      'pass_phiopt'.
  
!    * May-alias optimization
  
       This pass performs a flow sensitive SSA-based points-to analysis.
       The resulting may-alias, must-alias, and escape analysis
       information is used to promote variables from in-memory addressable
       objects to non-aliased variables that can be renamed into SSA form.
!      We also update the 'VDEF'/'VUSE' memory tags for non-renameable
       aggregates so that we get fewer false kills.  The pass is located
!      in 'tree-ssa-structalias.cc' and is described by 'pass_may_alias'.
  
       Interprocedural points-to information is described by
!      'pass_ipa_pta'.
  
!    * Profiling
  
       This pass instruments the function in order to collect runtime
       block and value profiling data.  Such data may be fed back into the
       compiler on a subsequent run so as to allow optimization based on
       expected execution frequencies.  The pass is located in
!      'tree-profile.cc' and is described by 'pass_ipa_tree_profile'.
  
!    * Static profile estimation
  
       This pass implements series of heuristics to guess propababilities
       of branches.  The resulting predictions are turned into edge
       profile by propagating branches across the control flow graphs.
!      The pass is located in 'tree-profile.cc' and is described by
!      'pass_profile'.
  
!    * Lower complex arithmetic
  
       This pass rewrites complex arithmetic operations into their
       component scalar arithmetic operations.  The pass is located in
!      'tree-complex.cc' and is described by 'pass_lower_complex'.
  
!    * Scalar replacement of aggregates
  
       This pass rewrites suitable non-aliased local aggregate variables
       into a set of scalar variables.  The resulting scalar variables are
       rewritten into SSA form, which allows subsequent optimization
       passes to do a significantly better job with them.  The pass is
!      located in 'tree-sra.cc' and is described by 'pass_sra'.
  
!    * Dead store elimination
  
       This pass eliminates stores to memory that are subsequently
       overwritten by another store, without any intervening loads.  The
!      pass is located in 'tree-ssa-dse.cc' and is described by
!      'pass_dse'.
  
!    * Tail recursion elimination
  
       This pass transforms tail recursion into a loop.  It is located in
!      'tree-tailcall.cc' and is described by 'pass_tail_recursion'.
  
!    * Forward store motion
  
       This pass sinks stores and assignments down the flowgraph closer to
!      their use point.  The pass is located in 'tree-ssa-sink.cc' and is
!      described by 'pass_sink_code'.
  
!    * Partial redundancy elimination
  
       This pass eliminates partially redundant computations, as well as
!      performing load motion.  The pass is located in 'tree-ssa-pre.cc'
!      and is described by 'pass_pre'.
  
!    * CSE of reciprocals
  
!      If '-funsafe-math-optimizations' is on, GCC tries to convert
       divisions to multiplications by the reciprocal.  The pass is
!      located in 'tree-ssa-math-opts.cc' and is described by
!      'pass_cse_reciprocal'.
  
!    * Full redundancy elimination
  
       This is a simpler form of PRE that only eliminates redundancies
!      that occur on all paths.  It is located in 'tree-ssa-pre.cc' and
!      described by 'pass_fre'.
  
!    * Loop optimization
  
!      The main driver of the pass is placed in 'tree-ssa-loop.cc' and
!      described by 'pass_loop'.
  
       The optimizations performed by this pass are:
  
       Loop invariant motion.  This pass moves only invariants that would
       be hard to handle on RTL level (function calls, operations that
!      expand to nontrivial sequences of insns).  With '-funswitch-loops'
       it also moves operands of conditions that are invariant out of the
       loop, so that we can use just trivial invariantness analysis in
       loop unswitching.  The pass also includes store motion.  The pass
!      is implemented in 'tree-ssa-loop-im.cc'.
  
       Canonical induction variable creation.  This pass creates a simple
       counter for number of iterations of the loop and replaces the exit
       condition of the loop using it, in case when a complicated analysis
       is necessary to determine the number of iterations.  Later
       optimizations then may determine the number easily.  The pass is
!      implemented in 'tree-ssa-loop-ivcanon.cc'.
  
       Induction variable optimizations.  This pass performs standard
       induction variable optimizations, including strength reduction,
       induction variable merging and induction variable elimination.  The
!      pass is implemented in 'tree-ssa-loop-ivopts.cc'.
  
       Loop unswitching.  This pass moves the conditional jumps that are
       invariant out of the loops.  To achieve this, a duplicate of the
       loop is created for each possible outcome of conditional jump(s).
!      The pass is implemented in 'tree-ssa-loop-unswitch.cc'.
  
       Loop splitting.  If a loop contains a conditional statement that is
       always true for one part of the iteration space and false for the
       other this pass splits the loop into two, one dealing with one side
       the other only with the other, thereby removing one inner-loop
!      conditional.  The pass is implemented in 'tree-ssa-loop-split.cc'.
  
       The optimizations also use various utility functions contained in
!      'tree-ssa-loop-manip.cc', 'cfgloop.cc', 'cfgloopanal.cc' and
!      'cfgloopmanip.cc'.
  
       Vectorization.  This pass transforms loops to operate on vector
       types instead of scalar types.  Data parallelism across loop
       iterations is exploited to group data elements from consecutive
       iterations into a vector and operate on them in parallel.
       Depending on available target support the loop is conceptually
!      unrolled by a factor 'VF' (vectorization factor), which is the
       number of elements operated upon in parallel in each iteration, and
!      the 'VF' copies of each scalar operation are fused to form a vector
       operation.  Additional loop transformations such as peeling and
       versioning may take place to align the number of iterations, and to
       align the memory accesses in the loop.  The pass is implemented in
!      'tree-vectorizer.cc' (the main driver), 'tree-vect-loop.cc' and
!      'tree-vect-loop-manip.cc' (loop specific parts and general loop
!      utilities), 'tree-vect-slp' (loop-aware SLP functionality),
!      'tree-vect-stmts.cc', 'tree-vect-data-refs.cc' and
!      'tree-vect-slp-patterns.cc' containing the SLP pattern matcher.
!      Analysis of data references is in 'tree-data-ref.cc'.
  
       SLP Vectorization.  This pass performs vectorization of
       straight-line code.  The pass is implemented in
!      'tree-vectorizer.cc' (the main driver), 'tree-vect-slp.cc',
!      'tree-vect-stmts.cc' and 'tree-vect-data-refs.cc'.
  
       Autoparallelization.  This pass splits the loop iteration space to
       run into several threads.  The pass is implemented in
!      'tree-parloops.cc'.
  
       Graphite is a loop transformation framework based on the polyhedral
       model.  Graphite stands for Gimple Represented as Polyhedra.  The
       internals of this infrastructure are documented in
       <https://gcc.gnu.org/wiki/Graphite>.  The passes working on this
!      representation are implemented in the various 'graphite-*' files.
  
!    * Tree level if-conversion for vectorizer
  
       This pass applies if-conversion to simple loops to help vectorizer.
       We identify if convertible loops, if-convert statements and merge
       basic blocks in one big block.  The idea is to present loop in such
       form so that vectorizer can have one to one mapping between
       statements and available vector operations.  This pass is located
!      in 'tree-if-conv.cc' and is described by 'pass_if_conversion'.
  
!    * Conditional constant propagation
  
       This pass relaxes a lattice of values in order to identify those
       that must be constant even in the presence of conditional branches.
!      The pass is located in 'tree-ssa-ccp.cc' and is described by
!      'pass_ccp'.
  
!    * Conditional copy propagation
  
       This is similar to constant propagation but the lattice of values
       is the "copy-of" relation.  It eliminates redundant copies from the
!      code.  The pass is located in 'tree-ssa-copy.cc' and described by
!      'pass_copy_prop'.
  
!    * Value range propagation
  
       This transformation is similar to constant propagation but instead
       of propagating single constant values, it propagates known value
--- 8613,8894 ----
  The following briefly describes the Tree optimization passes that are
  run after gimplification and what source files they are located in.
  
!    â€¢ OpenMP lowering
  
!      If OpenMP generation (â€˜-fopenmpâ€™) is enabled, this pass lowers
       OpenMP constructs into GIMPLE.
  
       Lowering of OpenMP constructs involves creating replacement
       expressions for local variables that have been mapped using data
       sharing clauses, exposing the control flow of most synchronization
       directives and adding region markers to facilitate the creation of
!      the control flow graph.  The pass is located in â€˜omp-low.ccâ€™ and is
!      described by â€˜pass_lower_ompâ€™.
  
!    â€¢ OpenMP expansion
  
!      If OpenMP generation (â€˜-fopenmpâ€™) is enabled, this pass expands
       parallel regions into their own functions to be invoked by the
!      thread library.  The pass is located in â€˜omp-low.ccâ€™ and is
!      described by â€˜pass_expand_ompâ€™.
  
!    â€¢ Lower control flow
  
!      This pass flattens â€˜ifâ€™ statements (â€˜COND_EXPRâ€™) and moves lexical
!      bindings (â€˜BIND_EXPRâ€™) out of line.  After this pass, all â€˜ifâ€™
!      statements will have exactly two â€˜gotoâ€™ statements in its â€˜thenâ€™
!      and â€˜elseâ€™ arms.  Lexical binding information for each statement
!      will be found in â€˜TREE_BLOCKâ€™ rather than being inferred from its
!      position under a â€˜BIND_EXPRâ€™.  This pass is found in
!      â€˜gimple-low.ccâ€™ and is described by â€˜pass_lower_cfâ€™.
  
!    â€¢ Lower exception handling control flow
  
       This pass decomposes high-level exception handling constructs
!      (â€˜TRY_FINALLY_EXPRâ€™ and â€˜TRY_CATCH_EXPRâ€™) into a form that
       explicitly represents the control flow involved.  After this pass,
!      â€˜lookup_stmt_eh_regionâ€™ will return a non-negative number for any
       statement that may have EH control flow semantics; examine
!      â€˜tree_can_throw_internalâ€™ or â€˜tree_can_throw_externalâ€™ for exact
       semantics.  Exact control flow may be extracted from
!      â€˜foreach_reachable_handlerâ€™.  The EH region nesting tree is defined
!      in â€˜except.hâ€™ and built in â€˜except.ccâ€™.  The lowering pass itself
!      is in â€˜tree-eh.ccâ€™ and is described by â€˜pass_lower_ehâ€™.
  
!    â€¢ Build the control flow graph
  
       This pass decomposes a function into basic blocks and creates all
!      of the edges that connect them.  It is located in â€˜tree-cfg.ccâ€™ and
!      is described by â€˜pass_build_cfgâ€™.
  
!    â€¢ Enter static single assignment form
  
       This pass rewrites the function such that it is in SSA form.  After
!      this pass, all â€˜is_gimple_regâ€™ variables will be referenced by
!      â€˜SSA_NAMEâ€™, and all occurrences of other variables will be
!      annotated with â€˜VDEFSâ€™ and â€˜VUSESâ€™; PHI nodes will have been
       inserted as necessary for each basic block.  This pass is located
!      in â€˜tree-into-ssa.ccâ€™ and is described by â€˜pass_build_ssaâ€™.
  
!    â€¢ Warn for uninitialized variables
  
!      This pass scans the function for uses of â€˜SSA_NAMEâ€™s that are fed
       by default definition.  For non-parameter variables, such uses are
       uninitialized.  The pass is run twice, before and after
       optimization (if turned on).  In the first pass we only warn for
       uses that are positively uninitialized; in the second pass we warn
       for uses that are possibly uninitialized.  The pass is located in
!      â€˜tree-ssa-uninit.ccâ€™ and is defined by
!      â€˜pass_early_warn_uninitializedâ€™ and â€˜pass_late_warn_uninitializedâ€™.
  
!    â€¢ Dead code elimination
  
       This pass scans the function for statements without side effects
       whose result is unused.  It does not do memory lifetime analysis,
       so any value that is stored in memory is considered used.  The pass
       is run multiple times throughout the optimization process.  It is
!      located in â€˜tree-ssa-dce.ccâ€™ and is described by â€˜pass_dceâ€™.
  
!    â€¢ Dominator optimizations
  
       This pass performs trivial dominator-based copy and constant
       propagation, expression simplification, and jump threading.  It is
       run multiple times throughout the optimization process.  It is
!      located in â€˜tree-ssa-dom.ccâ€™ and is described by â€˜pass_dominatorâ€™.
  
!    â€¢ Forward propagation of single-use variables
  
       This pass attempts to remove redundant computation by substituting
       variables that are used once into the expression that uses them and
       seeing if the result can be simplified.  It is located in
!      â€˜tree-ssa-forwprop.ccâ€™ and is described by â€˜pass_forwpropâ€™.
  
!    â€¢ PHI node optimizations
  
       This pass recognizes forms of PHI inputs that can be represented as
       conditional expressions and rewrites them into straight line code.
!      It is located in â€˜tree-ssa-phiopt.ccâ€™ and is described by
!      â€˜pass_phioptâ€™.
  
!    â€¢ May-alias optimization
  
       This pass performs a flow sensitive SSA-based points-to analysis.
       The resulting may-alias, must-alias, and escape analysis
       information is used to promote variables from in-memory addressable
       objects to non-aliased variables that can be renamed into SSA form.
!      We also update the â€˜VDEFâ€™/â€˜VUSEâ€™ memory tags for non-renameable
       aggregates so that we get fewer false kills.  The pass is located
!      in â€˜tree-ssa-structalias.ccâ€™ and is described by â€˜pass_may_aliasâ€™.
  
       Interprocedural points-to information is described by
!      â€˜pass_ipa_ptaâ€™.
  
!    â€¢ Profiling
  
       This pass instruments the function in order to collect runtime
       block and value profiling data.  Such data may be fed back into the
       compiler on a subsequent run so as to allow optimization based on
       expected execution frequencies.  The pass is located in
!      â€˜tree-profile.ccâ€™ and is described by â€˜pass_ipa_tree_profileâ€™.
  
!    â€¢ Static profile estimation
  
       This pass implements series of heuristics to guess propababilities
       of branches.  The resulting predictions are turned into edge
       profile by propagating branches across the control flow graphs.
!      The pass is located in â€˜tree-profile.ccâ€™ and is described by
!      â€˜pass_profileâ€™.
  
!    â€¢ Lower complex arithmetic
  
       This pass rewrites complex arithmetic operations into their
       component scalar arithmetic operations.  The pass is located in
!      â€˜tree-complex.ccâ€™ and is described by â€˜pass_lower_complexâ€™.
  
!    â€¢ Scalar replacement of aggregates
  
       This pass rewrites suitable non-aliased local aggregate variables
       into a set of scalar variables.  The resulting scalar variables are
       rewritten into SSA form, which allows subsequent optimization
       passes to do a significantly better job with them.  The pass is
!      located in â€˜tree-sra.ccâ€™ and is described by â€˜pass_sraâ€™.
  
!    â€¢ Dead store elimination
  
       This pass eliminates stores to memory that are subsequently
       overwritten by another store, without any intervening loads.  The
!      pass is located in â€˜tree-ssa-dse.ccâ€™ and is described by
!      â€˜pass_dseâ€™.
  
!    â€¢ Tail recursion elimination
  
       This pass transforms tail recursion into a loop.  It is located in
!      â€˜tree-tailcall.ccâ€™ and is described by â€˜pass_tail_recursionâ€™.
  
!    â€¢ Forward store motion
  
       This pass sinks stores and assignments down the flowgraph closer to
!      their use point.  The pass is located in â€˜tree-ssa-sink.ccâ€™ and is
!      described by â€˜pass_sink_codeâ€™.
  
!    â€¢ Partial redundancy elimination
  
       This pass eliminates partially redundant computations, as well as
!      performing load motion.  The pass is located in â€˜tree-ssa-pre.ccâ€™
!      and is described by â€˜pass_preâ€™.
  
!    â€¢ CSE of reciprocals
  
!      If â€˜-funsafe-math-optimizationsâ€™ is on, GCC tries to convert
       divisions to multiplications by the reciprocal.  The pass is
!      located in â€˜tree-ssa-math-opts.ccâ€™ and is described by
!      â€˜pass_cse_reciprocalâ€™.
  
!    â€¢ Full redundancy elimination
  
       This is a simpler form of PRE that only eliminates redundancies
!      that occur on all paths.  It is located in â€˜tree-ssa-pre.ccâ€™ and
!      described by â€˜pass_freâ€™.
  
!    â€¢ Loop optimization
  
!      The main driver of the pass is placed in â€˜tree-ssa-loop.ccâ€™ and
!      described by â€˜pass_loopâ€™.
  
       The optimizations performed by this pass are:
  
       Loop invariant motion.  This pass moves only invariants that would
       be hard to handle on RTL level (function calls, operations that
!      expand to nontrivial sequences of insns).  With â€˜-funswitch-loopsâ€™
       it also moves operands of conditions that are invariant out of the
       loop, so that we can use just trivial invariantness analysis in
       loop unswitching.  The pass also includes store motion.  The pass
!      is implemented in â€˜tree-ssa-loop-im.ccâ€™.
  
       Canonical induction variable creation.  This pass creates a simple
       counter for number of iterations of the loop and replaces the exit
       condition of the loop using it, in case when a complicated analysis
       is necessary to determine the number of iterations.  Later
       optimizations then may determine the number easily.  The pass is
!      implemented in â€˜tree-ssa-loop-ivcanon.ccâ€™.
  
       Induction variable optimizations.  This pass performs standard
       induction variable optimizations, including strength reduction,
       induction variable merging and induction variable elimination.  The
!      pass is implemented in â€˜tree-ssa-loop-ivopts.ccâ€™.
  
       Loop unswitching.  This pass moves the conditional jumps that are
       invariant out of the loops.  To achieve this, a duplicate of the
       loop is created for each possible outcome of conditional jump(s).
!      The pass is implemented in â€˜tree-ssa-loop-unswitch.ccâ€™.
  
       Loop splitting.  If a loop contains a conditional statement that is
       always true for one part of the iteration space and false for the
       other this pass splits the loop into two, one dealing with one side
       the other only with the other, thereby removing one inner-loop
!      conditional.  The pass is implemented in â€˜tree-ssa-loop-split.ccâ€™.
  
       The optimizations also use various utility functions contained in
!      â€˜tree-ssa-loop-manip.ccâ€™, â€˜cfgloop.ccâ€™, â€˜cfgloopanal.ccâ€™ and
!      â€˜cfgloopmanip.ccâ€™.
  
       Vectorization.  This pass transforms loops to operate on vector
       types instead of scalar types.  Data parallelism across loop
       iterations is exploited to group data elements from consecutive
       iterations into a vector and operate on them in parallel.
       Depending on available target support the loop is conceptually
!      unrolled by a factor â€˜VFâ€™ (vectorization factor), which is the
       number of elements operated upon in parallel in each iteration, and
!      the â€˜VFâ€™ copies of each scalar operation are fused to form a vector
       operation.  Additional loop transformations such as peeling and
       versioning may take place to align the number of iterations, and to
       align the memory accesses in the loop.  The pass is implemented in
!      â€˜tree-vectorizer.ccâ€™ (the main driver), â€˜tree-vect-loop.ccâ€™ and
!      â€˜tree-vect-loop-manip.ccâ€™ (loop specific parts and general loop
!      utilities), â€˜tree-vect-slpâ€™ (loop-aware SLP functionality),
!      â€˜tree-vect-stmts.ccâ€™, â€˜tree-vect-data-refs.ccâ€™ and
!      â€˜tree-vect-slp-patterns.ccâ€™ containing the SLP pattern matcher.
!      Analysis of data references is in â€˜tree-data-ref.ccâ€™.
  
       SLP Vectorization.  This pass performs vectorization of
       straight-line code.  The pass is implemented in
!      â€˜tree-vectorizer.ccâ€™ (the main driver), â€˜tree-vect-slp.ccâ€™,
!      â€˜tree-vect-stmts.ccâ€™ and â€˜tree-vect-data-refs.ccâ€™.
  
       Autoparallelization.  This pass splits the loop iteration space to
       run into several threads.  The pass is implemented in
!      â€˜tree-parloops.ccâ€™.
  
       Graphite is a loop transformation framework based on the polyhedral
       model.  Graphite stands for Gimple Represented as Polyhedra.  The
       internals of this infrastructure are documented in
       <https://gcc.gnu.org/wiki/Graphite>.  The passes working on this
!      representation are implemented in the various â€˜graphite-*â€™ files.
  
!    â€¢ Tree level if-conversion for vectorizer
  
       This pass applies if-conversion to simple loops to help vectorizer.
       We identify if convertible loops, if-convert statements and merge
       basic blocks in one big block.  The idea is to present loop in such
       form so that vectorizer can have one to one mapping between
       statements and available vector operations.  This pass is located
!      in â€˜tree-if-conv.ccâ€™ and is described by â€˜pass_if_conversionâ€™.
  
!    â€¢ Conditional constant propagation
  
       This pass relaxes a lattice of values in order to identify those
       that must be constant even in the presence of conditional branches.
!      The pass is located in â€˜tree-ssa-ccp.ccâ€™ and is described by
!      â€˜pass_ccpâ€™.
  
!    â€¢ Conditional copy propagation
  
       This is similar to constant propagation but the lattice of values
       is the "copy-of" relation.  It eliminates redundant copies from the
!      code.  The pass is located in â€˜tree-ssa-copy.ccâ€™ and described by
!      â€˜pass_copy_propâ€™.
  
!    â€¢ Value range propagation
  
       This transformation is similar to constant propagation but instead
       of propagating single constant values, it propagates known value
*************** run after gimplification and what source
*** 8894,8998 ****
       branch probabilities nor it uses more than a single range per SSA
       name.  This means that the current implementation cannot be used
       for branch prediction (though adapting it would not be difficult).
!      The pass is located in 'tree-vrp.cc' and is described by
!      'pass_vrp'.
  
!    * Folding built-in functions
  
       This pass simplifies built-in functions, as applicable, with
       constant arguments or with inferable string lengths.  It is located
!      in 'tree-ssa-ccp.cc' and is described by 'pass_fold_builtins'.
  
!    * Split critical edges
  
       This pass identifies critical edges and inserts empty basic blocks
       such that the edge is no longer critical.  The pass is located in
!      'tree-cfg.cc' and is described by 'pass_split_crit_edges'.
  
!    * Control dependence dead code elimination
  
       This pass is a stronger form of dead code elimination that can
       eliminate unnecessary control flow statements.  It is located in
!      'tree-ssa-dce.cc' and is described by 'pass_cd_dce'.
  
!    * Tail call elimination
  
       This pass identifies function calls that may be rewritten into
       jumps.  No code transformation is actually applied here, but the
       data and control flow problem is solved.  The code transformation
       requires target support, and so is delayed until RTL.  In the
!      meantime 'CALL_EXPR_TAILCALL' is set indicating the possibility.
!      The pass is located in 'tree-tailcall.cc' and is described by
!      'pass_tail_calls'.  The RTL transformation is handled by
!      'fixup_tail_calls' in 'calls.cc'.
  
!    * Warn for function return without value
  
       For non-void functions, this pass locates return statements that do
       not specify a value and issues a warning.  Such a statement may
       have been injected by falling off the end of the function.  This
       pass is run last so that we have as much time as possible to prove
       that the statement is not reachable.  It is located in
!      'tree-cfg.cc' and is described by 'pass_warn_function_return'.
  
!    * Merge PHI nodes that feed into one another
  
       This is part of the CFG cleanup passes.  It attempts to join PHI
       nodes from a forwarder CFG block into another block with PHI nodes.
!      The pass is located in 'tree-cfgcleanup.cc' and is described by
!      'pass_merge_phi'.
  
!    * Return value optimization
  
       If a function always returns the same local variable, and that
       local variable is an aggregate type, then the variable is replaced
       with the return value for the function (i.e., the function's
       DECL_RESULT). This is equivalent to the C++ named return value
       optimization applied to GIMPLE.  The pass is located in
!      'tree-nrv.cc' and is described by 'pass_nrv'.
  
!    * Return slot optimization
  
!      If a function returns a memory object and is called as 'var =
!      foo()', this pass tries to change the call so that the address of
!      'var' is sent to the caller to avoid an extra memory copy.  This
!      pass is located in 'tree-nrv.cc' and is described by
!      'pass_return_slot'.
  
!    * Optimize calls to '__builtin_object_size' or
!      '__builtin_dynamic_object_size'
  
       This is a propagation pass similar to CCP that tries to remove
!      calls to '__builtin_object_size' when the upper or lower bound for
       the size of the object can be computed at compile-time.  It also
!      tries to replace calls to '__builtin_dynamic_object_size' with an
       expression that evaluates the upper or lower bound for the size of
!      the object.  This pass is located in 'tree-object-size.cc' and is
!      described by 'pass_object_sizes'.
  
!    * Loop invariant motion
  
       This pass removes expensive loop-invariant computations out of
!      loops.  The pass is located in 'tree-ssa-loop.cc' and described by
!      'pass_lim'.
  
!    * Loop nest optimizations
  
       This is a family of loop transformations that works on loop nests.
       It includes loop interchange, scaling, skewing and reversal and
       they are all geared to the optimization of data locality in array
       traversals and the removal of dependencies that hamper
       optimizations such as loop parallelization and vectorization.  The
!      pass is located in the 'graphile-*.cc' files and described by
!      'pass_graphite'.
  
!    * Unrolling of small loops
  
       This pass completely unrolls loops with few iterations.  The pass
!      is located in 'tree-ssa-loop-ivcanon.cc' and described by
!      'pass_complete_unroll'.
  
!    * Predictive commoning
  
       This pass makes the code reuse the computations from the previous
       iterations of the loops, especially loads and stores to memory.  It
--- 8899,9003 ----
       branch probabilities nor it uses more than a single range per SSA
       name.  This means that the current implementation cannot be used
       for branch prediction (though adapting it would not be difficult).
!      The pass is located in â€˜tree-vrp.ccâ€™ and is described by
!      â€˜pass_vrpâ€™.
  
!    â€¢ Folding built-in functions
  
       This pass simplifies built-in functions, as applicable, with
       constant arguments or with inferable string lengths.  It is located
!      in â€˜tree-ssa-ccp.ccâ€™ and is described by â€˜pass_fold_builtinsâ€™.
  
!    â€¢ Split critical edges
  
       This pass identifies critical edges and inserts empty basic blocks
       such that the edge is no longer critical.  The pass is located in
!      â€˜tree-cfg.ccâ€™ and is described by â€˜pass_split_crit_edgesâ€™.
  
!    â€¢ Control dependence dead code elimination
  
       This pass is a stronger form of dead code elimination that can
       eliminate unnecessary control flow statements.  It is located in
!      â€˜tree-ssa-dce.ccâ€™ and is described by â€˜pass_cd_dceâ€™.
  
!    â€¢ Tail call elimination
  
       This pass identifies function calls that may be rewritten into
       jumps.  No code transformation is actually applied here, but the
       data and control flow problem is solved.  The code transformation
       requires target support, and so is delayed until RTL.  In the
!      meantime â€˜CALL_EXPR_TAILCALLâ€™ is set indicating the possibility.
!      The pass is located in â€˜tree-tailcall.ccâ€™ and is described by
!      â€˜pass_tail_callsâ€™.  The RTL transformation is handled by
!      â€˜fixup_tail_callsâ€™ in â€˜calls.ccâ€™.
  
!    â€¢ Warn for function return without value
  
       For non-void functions, this pass locates return statements that do
       not specify a value and issues a warning.  Such a statement may
       have been injected by falling off the end of the function.  This
       pass is run last so that we have as much time as possible to prove
       that the statement is not reachable.  It is located in
!      â€˜tree-cfg.ccâ€™ and is described by â€˜pass_warn_function_returnâ€™.
  
!    â€¢ Merge PHI nodes that feed into one another
  
       This is part of the CFG cleanup passes.  It attempts to join PHI
       nodes from a forwarder CFG block into another block with PHI nodes.
!      The pass is located in â€˜tree-cfgcleanup.ccâ€™ and is described by
!      â€˜pass_merge_phiâ€™.
  
!    â€¢ Return value optimization
  
       If a function always returns the same local variable, and that
       local variable is an aggregate type, then the variable is replaced
       with the return value for the function (i.e., the function's
       DECL_RESULT). This is equivalent to the C++ named return value
       optimization applied to GIMPLE.  The pass is located in
!      â€˜tree-nrv.ccâ€™ and is described by â€˜pass_nrvâ€™.
  
!    â€¢ Return slot optimization
  
!      If a function returns a memory object and is called as â€˜var =
!      foo()â€™, this pass tries to change the call so that the address of
!      â€˜varâ€™ is sent to the caller to avoid an extra memory copy.  This
!      pass is located in â€˜tree-nrv.ccâ€™ and is described by
!      â€˜pass_return_slotâ€™.
  
!    â€¢ Optimize calls to â€˜__builtin_object_sizeâ€™ or
!      â€˜__builtin_dynamic_object_sizeâ€™
  
       This is a propagation pass similar to CCP that tries to remove
!      calls to â€˜__builtin_object_sizeâ€™ when the upper or lower bound for
       the size of the object can be computed at compile-time.  It also
!      tries to replace calls to â€˜__builtin_dynamic_object_sizeâ€™ with an
       expression that evaluates the upper or lower bound for the size of
!      the object.  This pass is located in â€˜tree-object-size.ccâ€™ and is
!      described by â€˜pass_object_sizesâ€™.
  
!    â€¢ Loop invariant motion
  
       This pass removes expensive loop-invariant computations out of
!      loops.  The pass is located in â€˜tree-ssa-loop.ccâ€™ and described by
!      â€˜pass_limâ€™.
  
!    â€¢ Loop nest optimizations
  
       This is a family of loop transformations that works on loop nests.
       It includes loop interchange, scaling, skewing and reversal and
       they are all geared to the optimization of data locality in array
       traversals and the removal of dependencies that hamper
       optimizations such as loop parallelization and vectorization.  The
!      pass is located in the â€˜graphile-*.ccâ€™ files and described by
!      â€˜pass_graphiteâ€™.
  
!    â€¢ Unrolling of small loops
  
       This pass completely unrolls loops with few iterations.  The pass
!      is located in â€˜tree-ssa-loop-ivcanon.ccâ€™ and described by
!      â€˜pass_complete_unrollâ€™.
  
!    â€¢ Predictive commoning
  
       This pass makes the code reuse the computations from the previous
       iterations of the loops, especially loads and stores to memory.  It
*************** run after gimplification and what source
*** 9001,9032 ****
       the need for this rotation, the loop is then unrolled and the
       copies of the loop body are rewritten to use the appropriate
       version of the temporary variable.  This pass is located in
!      'tree-predcom.cc' and described by 'pass_predcom'.
  
!    * Array prefetching
  
       This pass issues prefetch instructions for array references inside
!      loops.  The pass is located in 'tree-ssa-loop-prefetch.cc' and
!      described by 'pass_loop_prefetch'.
  
!    * Reassociation
  
       This pass rewrites arithmetic expressions to enable optimizations
       that operate on them, like redundancy elimination and
!      vectorization.  The pass is located in 'tree-ssa-reassoc.cc' and
!      described by 'pass_reassoc'.
  
!    * Optimization of 'stdarg' functions
  
       This pass tries to avoid the saving of register arguments into the
!      stack on entry to 'stdarg' functions.  If the function doesn't use
!      any 'va_start' macros, no registers need to be saved.  If
!      'va_start' macros are used, the 'va_list' variables don't escape
       the function, it is only necessary to save registers that will be
!      used in 'va_arg' macros.  For instance, if 'va_arg' is only used
       with integral types in the function, floating point registers don't
!      need to be saved.  This pass is located in 'tree-stdarg.cc' and
!      described by 'pass_stdarg'.
  
  
  File: gccint.info,  Node: RTL passes,  Next: Optimization info,  Prev: Tree SSA passes,  Up: Passes
--- 9006,9037 ----
       the need for this rotation, the loop is then unrolled and the
       copies of the loop body are rewritten to use the appropriate
       version of the temporary variable.  This pass is located in
!      â€˜tree-predcom.ccâ€™ and described by â€˜pass_predcomâ€™.
  
!    â€¢ Array prefetching
  
       This pass issues prefetch instructions for array references inside
!      loops.  The pass is located in â€˜tree-ssa-loop-prefetch.ccâ€™ and
!      described by â€˜pass_loop_prefetchâ€™.
  
!    â€¢ Reassociation
  
       This pass rewrites arithmetic expressions to enable optimizations
       that operate on them, like redundancy elimination and
!      vectorization.  The pass is located in â€˜tree-ssa-reassoc.ccâ€™ and
!      described by â€˜pass_reassocâ€™.
  
!    â€¢ Optimization of â€˜stdargâ€™ functions
  
       This pass tries to avoid the saving of register arguments into the
!      stack on entry to â€˜stdargâ€™ functions.  If the function doesn't use
!      any â€˜va_startâ€™ macros, no registers need to be saved.  If
!      â€˜va_startâ€™ macros are used, the â€˜va_listâ€™ variables don't escape
       the function, it is only necessary to save registers that will be
!      used in â€˜va_argâ€™ macros.  For instance, if â€˜va_argâ€™ is only used
       with integral types in the function, floating point registers don't
!      need to be saved.  This pass is located in â€˜tree-stdarg.ccâ€™ and
!      described by â€˜pass_stdargâ€™.
  
  
  File: gccint.info,  Node: RTL passes,  Next: Optimization info,  Prev: Tree SSA passes,  Up: Passes
*************** File: gccint.info,  Node: RTL passes,  N
*** 9037,9098 ****
  The following briefly describes the RTL generation and optimization
  passes that are run after the Tree optimization passes.
  
!    * RTL generation
  
!      The source files for RTL generation include 'stmt.cc', 'calls.cc',
!      'expr.cc', 'explow.cc', 'expmed.cc', 'function.cc', 'optabs.cc' and
!      'emit-rtl.cc'.  Also, the file 'insn-emit.cc', generated from the
!      machine description by the program 'genemit', is used in this pass.
!      The header file 'expr.h' is used for communication within this
       pass.
  
!      The header files 'insn-flags.h' and 'insn-codes.h', generated from
!      the machine description by the programs 'genflags' and 'gencodes',
       tell this pass which standard names are available for use and which
       patterns correspond to them.
  
!    * Generation of exception landing pads
  
       This pass generates the glue that handles communication between the
       exception handling library routines and the exception handlers
       within the function.  Entry points in the function that are invoked
!      by the exception handling library are called "landing pads".  The
!      code for this pass is located in 'except.cc'.
  
!    * Control flow graph cleanup
  
       This pass removes unreachable code, simplifies jumps to next, jumps
       to jump, jumps across jumps, etc.  The pass is run multiple times.
       For historical reasons, it is occasionally referred to as the "jump
       optimization pass".  The bulk of the code for this pass is in
!      'cfgcleanup.cc', and there are support routines in 'cfgrtl.cc' and
!      'jump.cc'.
  
!    * Forward propagation of single-def values
  
       This pass attempts to remove redundant computation by substituting
       variables that come from a single definition, and seeing if the
       result can be simplified.  It performs copy propagation and
       addressing mode selection.  The pass is run twice, with values
       being propagated into loops only on the second run.  The code is
!      located in 'fwprop.cc'.
  
!    * Store forwarding avoidance
  
       This pass attempts to reduce the overhead of store to load
       forwarding.  It detects when a load reads from one or more previous
       smaller stores and then rearranges them so that the stores are done
       after the load.  The loaded value is adjusted with a series of bit
       insert instructions so that it stays the same.  The code is located
!      in 'avoid-store-forwarding.cc'.
  
!    * Common subexpression elimination
  
       This pass removes redundant computation within basic blocks, and
       optimizes addressing modes based on cost.  The pass is run twice.
!      The code for this pass is located in 'cse.cc'.
  
!    * Global common subexpression elimination
  
       This pass performs two different types of GCSE depending on whether
       you are optimizing for size or not (LCM based GCSE tends to
--- 9042,9103 ----
  The following briefly describes the RTL generation and optimization
  passes that are run after the Tree optimization passes.
  
!    â€¢ RTL generation
  
!      The source files for RTL generation include â€˜stmt.ccâ€™, â€˜calls.ccâ€™,
!      â€˜expr.ccâ€™, â€˜explow.ccâ€™, â€˜expmed.ccâ€™, â€˜function.ccâ€™, â€˜optabs.ccâ€™ and
!      â€˜emit-rtl.ccâ€™.  Also, the file â€˜insn-emit.ccâ€™, generated from the
!      machine description by the program â€˜genemitâ€™, is used in this pass.
!      The header file â€˜expr.hâ€™ is used for communication within this
       pass.
  
!      The header files â€˜insn-flags.hâ€™ and â€˜insn-codes.hâ€™, generated from
!      the machine description by the programs â€˜genflagsâ€™ and â€˜gencodesâ€™,
       tell this pass which standard names are available for use and which
       patterns correspond to them.
  
!    â€¢ Generation of exception landing pads
  
       This pass generates the glue that handles communication between the
       exception handling library routines and the exception handlers
       within the function.  Entry points in the function that are invoked
!      by the exception handling library are called â€œlanding padsâ€�.  The
!      code for this pass is located in â€˜except.ccâ€™.
  
!    â€¢ Control flow graph cleanup
  
       This pass removes unreachable code, simplifies jumps to next, jumps
       to jump, jumps across jumps, etc.  The pass is run multiple times.
       For historical reasons, it is occasionally referred to as the "jump
       optimization pass".  The bulk of the code for this pass is in
!      â€˜cfgcleanup.ccâ€™, and there are support routines in â€˜cfgrtl.ccâ€™ and
!      â€˜jump.ccâ€™.
  
!    â€¢ Forward propagation of single-def values
  
       This pass attempts to remove redundant computation by substituting
       variables that come from a single definition, and seeing if the
       result can be simplified.  It performs copy propagation and
       addressing mode selection.  The pass is run twice, with values
       being propagated into loops only on the second run.  The code is
!      located in â€˜fwprop.ccâ€™.
  
!    â€¢ Store forwarding avoidance
  
       This pass attempts to reduce the overhead of store to load
       forwarding.  It detects when a load reads from one or more previous
       smaller stores and then rearranges them so that the stores are done
       after the load.  The loaded value is adjusted with a series of bit
       insert instructions so that it stays the same.  The code is located
!      in â€˜avoid-store-forwarding.ccâ€™.
  
!    â€¢ Common subexpression elimination
  
       This pass removes redundant computation within basic blocks, and
       optimizes addressing modes based on cost.  The pass is run twice.
!      The code for this pass is located in â€˜cse.ccâ€™.
  
!    â€¢ Global common subexpression elimination
  
       This pass performs two different types of GCSE depending on whether
       you are optimizing for size or not (LCM based GCSE tends to
*************** passes that are run after the Tree optim
*** 9108,9114 ****
       perform load and store motion when optimizing for speed.
       Regardless of which type of GCSE is used, the GCSE pass also
       performs global constant and copy propagation.  The source file for
!      this pass is 'gcse.cc', and the LCM routines are in 'lcm.cc'.
  
       A third version of this pass is run on some targets to optimise
       assignments to specific hard registers.  This can be used in cases
--- 9113,9119 ----
       perform load and store motion when optimizing for speed.
       Regardless of which type of GCSE is used, the GCSE pass also
       performs global constant and copy propagation.  The source file for
!      this pass is â€˜gcse.ccâ€™, and the LCM routines are in â€˜lcm.ccâ€™.
  
       A third version of this pass is run on some targets to optimise
       assignments to specific hard registers.  This can be used in cases
*************** passes that are run after the Tree optim
*** 9116,9175 ****
       an extra input for specific instructions (*note mode switching
       optimization:: for another way of handling instruction modes).
  
!    * Loop optimization
  
       This pass performs several loop related optimizations.  The source
!      files 'cfgloopanal.cc' and 'cfgloopmanip.cc' contain generic loop
       analysis and manipulation code.  Initialization and finalization of
!      loop structures is handled by 'loop-init.cc'.  A loop invariant
!      motion pass is implemented in 'loop-invariant.cc'.  Basic block
       level optimizations--unrolling, and peeling loops-- are implemented
!      in 'loop-unroll.cc'.  Replacing of the exit condition of loops by
       special machine-dependent instructions is handled by
!      'loop-doloop.cc'.
  
!    * Jump bypassing
  
       This pass is an aggressive form of GCSE that transforms the control
       flow graph of a function by propagating constants into conditional
!      branch instructions.  The source file for this pass is 'gcse.cc'.
  
!    * If conversion
  
       This pass attempts to replace conditional branches and surrounding
       assignments with arithmetic, boolean value producing comparison
       instructions, and conditional move instructions.  In the very last
       invocation after reload/LRA, it will generate predicated
       instructions when supported by the target.  The code is located in
!      'ifcvt.cc'.
  
!    * Web construction
  
       This pass splits independent uses of each pseudo-register.  This
       can improve effect of the other transformation, such as CSE or
       register allocation.  The code for this pass is located in
!      'web.cc'.
  
!    * Instruction combination
  
       This pass attempts to combine groups of two or three instructions
       that are related by data flow into single instructions.  It
       combines the RTL expressions for the instructions by substitution,
       simplifies the result using algebra, and then attempts to match the
       result against the machine description.  The code is located in
!      'combine.cc'.
  
!    * Late instruction combination
  
       This pass attempts to do further instruction combination, on top of
!      that performed by 'combine.cc'.  Its current purpose is to
       substitute definitions into all uses simultaneously, so that the
       definition can be removed.  This differs from the forward
       propagation pass, whose purpose is instead to simplify individual
       uses on the assumption that the definition will remain.  It differs
!      from 'combine.cc' in that there is no hard-coded limit on the
       number of instructions that can be combined at once.  It also
!      differs from 'combine.cc' in that it can move instructions, where
       necessary.
  
       However, the pass is not in principle limited to this form of
--- 9121,9180 ----
       an extra input for specific instructions (*note mode switching
       optimization:: for another way of handling instruction modes).
  
!    â€¢ Loop optimization
  
       This pass performs several loop related optimizations.  The source
!      files â€˜cfgloopanal.ccâ€™ and â€˜cfgloopmanip.ccâ€™ contain generic loop
       analysis and manipulation code.  Initialization and finalization of
!      loop structures is handled by â€˜loop-init.ccâ€™.  A loop invariant
!      motion pass is implemented in â€˜loop-invariant.ccâ€™.  Basic block
       level optimizations--unrolling, and peeling loops-- are implemented
!      in â€˜loop-unroll.ccâ€™.  Replacing of the exit condition of loops by
       special machine-dependent instructions is handled by
!      â€˜loop-doloop.ccâ€™.
  
!    â€¢ Jump bypassing
  
       This pass is an aggressive form of GCSE that transforms the control
       flow graph of a function by propagating constants into conditional
!      branch instructions.  The source file for this pass is â€˜gcse.ccâ€™.
  
!    â€¢ If conversion
  
       This pass attempts to replace conditional branches and surrounding
       assignments with arithmetic, boolean value producing comparison
       instructions, and conditional move instructions.  In the very last
       invocation after reload/LRA, it will generate predicated
       instructions when supported by the target.  The code is located in
!      â€˜ifcvt.ccâ€™.
  
!    â€¢ Web construction
  
       This pass splits independent uses of each pseudo-register.  This
       can improve effect of the other transformation, such as CSE or
       register allocation.  The code for this pass is located in
!      â€˜web.ccâ€™.
  
!    â€¢ Instruction combination
  
       This pass attempts to combine groups of two or three instructions
       that are related by data flow into single instructions.  It
       combines the RTL expressions for the instructions by substitution,
       simplifies the result using algebra, and then attempts to match the
       result against the machine description.  The code is located in
!      â€˜combine.ccâ€™.
  
!    â€¢ Late instruction combination
  
       This pass attempts to do further instruction combination, on top of
!      that performed by â€˜combine.ccâ€™.  Its current purpose is to
       substitute definitions into all uses simultaneously, so that the
       definition can be removed.  This differs from the forward
       propagation pass, whose purpose is instead to simplify individual
       uses on the assumption that the definition will remain.  It differs
!      from â€˜combine.ccâ€™ in that there is no hard-coded limit on the
       number of instructions that can be combined at once.  It also
!      differs from â€˜combine.ccâ€™ in that it can move instructions, where
       necessary.
  
       However, the pass is not in principle limited to this form of
*************** passes that are run after the Tree optim
*** 9177,9200 ****
       combination approaches as well.
  
       The pass runs twice, once before register allocation and once after
!      register allocation.  The code is located in 'late-combine.cc'.
  
!    * Mode switching optimization
  
       This pass looks for instructions that require the processor to be
       in a specific "mode" and minimizes the number of mode changes
       required to satisfy all users.  What these modes are, and what they
       apply to are completely target-specific.  The code for this pass is
!      located in 'mode-switching.cc'.
  
!    * Modulo scheduling
  
       This pass looks at innermost loops and reorders their instructions
       by overlapping different iterations.  Modulo scheduling is
       performed immediately before instruction scheduling.  The code for
!      this pass is located in 'modulo-sched.cc'.
  
!    * Instruction scheduling
  
       This pass looks for instructions whose output will not be available
       by the time that it is used in subsequent instructions.  Memory
--- 9182,9205 ----
       combination approaches as well.
  
       The pass runs twice, once before register allocation and once after
!      register allocation.  The code is located in â€˜late-combine.ccâ€™.
  
!    â€¢ Mode switching optimization
  
       This pass looks for instructions that require the processor to be
       in a specific "mode" and minimizes the number of mode changes
       required to satisfy all users.  What these modes are, and what they
       apply to are completely target-specific.  The code for this pass is
!      located in â€˜mode-switching.ccâ€™.
  
!    â€¢ Modulo scheduling
  
       This pass looks at innermost loops and reorders their instructions
       by overlapping different iterations.  Modulo scheduling is
       performed immediately before instruction scheduling.  The code for
!      this pass is located in â€˜modulo-sched.ccâ€™.
  
!    â€¢ Instruction scheduling
  
       This pass looks for instructions whose output will not be available
       by the time that it is used in subsequent instructions.  Memory
*************** passes that are run after the Tree optim
*** 9203,9219 ****
       try to separate the definition and use of items that otherwise
       would cause pipeline stalls.  This pass is performed twice, before
       and after register allocation.  The code for this pass is located
!      in 'haifa-sched.cc', 'sched-deps.cc', 'sched-ebb.cc',
!      'sched-rgn.cc' and 'sched-vis.c'.
  
!    * Register allocation
  
       These passes make sure that all occurrences of pseudo registers are
       eliminated, either by allocating them to a hard register, replacing
       them by an equivalent expression (e.g. a constant) or by placing
       them on the stack.  This is done in several subpasses:
  
!         * The integrated register allocator (IRA).  It is called
            integrated because coalescing, register live range splitting,
            and hard register preferencing are done on-the-fly during
            coloring.  It also has better integration with the reload/LRA
--- 9208,9224 ----
       try to separate the definition and use of items that otherwise
       would cause pipeline stalls.  This pass is performed twice, before
       and after register allocation.  The code for this pass is located
!      in â€˜haifa-sched.ccâ€™, â€˜sched-deps.ccâ€™, â€˜sched-ebb.ccâ€™,
!      â€˜sched-rgn.ccâ€™ and â€˜sched-vis.câ€™.
  
!    â€¢ Register allocation
  
       These passes make sure that all occurrences of pseudo registers are
       eliminated, either by allocating them to a hard register, replacing
       them by an equivalent expression (e.g. a constant) or by placing
       them on the stack.  This is done in several subpasses:
  
!         â€¢ The integrated register allocator (IRA).  It is called
            integrated because coalescing, register live range splitting,
            and hard register preferencing are done on-the-fly during
            coloring.  It also has better integration with the reload/LRA
*************** passes that are run after the Tree optim
*** 9228,9240 ****
            regions using register pressure but the user can force it to
            use one region or regions corresponding to all loops.
  
!           Source files of the allocator are 'ira.cc', 'ira-build.cc',
!           'ira-costs.cc', 'ira-conflicts.cc', 'ira-color.cc',
!           'ira-emit.cc', 'ira-lives', plus header files 'ira.h' and
!           'ira-int.h' used for the communication between the allocator
            and the rest of the compiler and between the IRA files.
  
!         * Reloading.  This pass renumbers pseudo registers with the
            hardware registers numbers they were allocated.  Pseudo
            registers that did not get hard registers are replaced with
            stack slots.  Then it finds instructions that are invalid
--- 9233,9245 ----
            regions using register pressure but the user can force it to
            use one region or regions corresponding to all loops.
  
!           Source files of the allocator are â€˜ira.ccâ€™, â€˜ira-build.ccâ€™,
!           â€˜ira-costs.ccâ€™, â€˜ira-conflicts.ccâ€™, â€˜ira-color.ccâ€™,
!           â€˜ira-emit.ccâ€™, â€˜ira-livesâ€™, plus header files â€˜ira.hâ€™ and
!           â€˜ira-int.hâ€™ used for the communication between the allocator
            and the rest of the compiler and between the IRA files.
  
!         â€¢ Reloading.  This pass renumbers pseudo registers with the
            hardware registers numbers they were allocated.  Pseudo
            registers that did not get hard registers are replaced with
            stack slots.  Then it finds instructions that are invalid
*************** passes that are run after the Tree optim
*** 9248,9261 ****
            and inserts instructions to save and restore call-clobbered
            registers around calls.
  
!           Source files are 'reload.cc' and 'reload1.cc', plus the header
!           'reload.h' used for communication between them.
  
!         * This pass is a modern replacement of the reload pass.  Source
!           files are 'lra.cc', 'lra-assign.c', 'lra-coalesce.cc',
!           'lra-constraints.cc', 'lra-eliminations.cc', 'lra-lives.cc',
!           'lra-remat.cc', 'lra-spills.cc', the header 'lra-int.h' used
!           for communication between them, and the header 'lra.h' used
            for communication between LRA and the rest of compiler.
  
            Unlike the reload pass, intermediate LRA decisions are
--- 9253,9266 ----
            and inserts instructions to save and restore call-clobbered
            registers around calls.
  
!           Source files are â€˜reload.ccâ€™ and â€˜reload1.ccâ€™, plus the header
!           â€˜reload.hâ€™ used for communication between them.
  
!         â€¢ This pass is a modern replacement of the reload pass.  Source
!           files are â€˜lra.ccâ€™, â€˜lra-assign.câ€™, â€˜lra-coalesce.ccâ€™,
!           â€˜lra-constraints.ccâ€™, â€˜lra-eliminations.ccâ€™, â€˜lra-lives.ccâ€™,
!           â€˜lra-remat.ccâ€™, â€˜lra-spills.ccâ€™, the header â€˜lra-int.hâ€™ used
!           for communication between them, and the header â€˜lra.hâ€™ used
            for communication between LRA and the rest of compiler.
  
            Unlike the reload pass, intermediate LRA decisions are
*************** passes that are run after the Tree optim
*** 9265,9294 ****
  
            LRA is run on targets for which TARGET_LRA_P returns true.
  
!    * Basic block reordering
  
       This pass implements profile guided code positioning.  If profile
       information is not available, various types of static analysis are
       performed to make the predictions normally coming from the profile
       feedback (IE execution frequency, branch probability, etc).  It is
!      implemented in the file 'bb-reorder.cc', and the various prediction
!      routines are in 'predict.cc'.
  
!    * Variable tracking
  
       This pass computes where the variables are stored at each position
       in code and generates notes describing the variable locations to
       RTL code.  The location lists are then generated according to these
       notes to debug information if the debugging information format
!      supports location lists.  The code is located in 'var-tracking.cc'.
  
!    * Delayed branch scheduling
  
       This optional pass attempts to find instructions that can go into
       the delay slots of other instructions, usually jumps and calls.
!      The code for this pass is located in 'reorg.cc'.
  
!    * Branch shortening
  
       On many RISC machines, branch instructions have a limited range.
       Thus, longer sequences of instructions must be used for long
--- 9270,9299 ----
  
            LRA is run on targets for which TARGET_LRA_P returns true.
  
!    â€¢ Basic block reordering
  
       This pass implements profile guided code positioning.  If profile
       information is not available, various types of static analysis are
       performed to make the predictions normally coming from the profile
       feedback (IE execution frequency, branch probability, etc).  It is
!      implemented in the file â€˜bb-reorder.ccâ€™, and the various prediction
!      routines are in â€˜predict.ccâ€™.
  
!    â€¢ Variable tracking
  
       This pass computes where the variables are stored at each position
       in code and generates notes describing the variable locations to
       RTL code.  The location lists are then generated according to these
       notes to debug information if the debugging information format
!      supports location lists.  The code is located in â€˜var-tracking.ccâ€™.
  
!    â€¢ Delayed branch scheduling
  
       This optional pass attempts to find instructions that can go into
       the delay slots of other instructions, usually jumps and calls.
!      The code for this pass is located in â€˜reorg.ccâ€™.
  
!    â€¢ Branch shortening
  
       On many RISC machines, branch instructions have a limited range.
       Thus, longer sequences of instructions must be used for long
*************** passes that are run after the Tree optim
*** 9296,9325 ****
       instruction will be from each other instruction, and therefore
       whether the usual instructions, or the longer sequences, must be
       used for each branch.  The code for this pass is located in
!      'final.cc'.
  
!    * Register-to-stack conversion
  
       Conversion from usage of some hard registers to usage of a register
       stack may be done at this point.  Currently, this is supported only
       for the floating-point registers of the Intel 80387 coprocessor.
!      The code for this pass is located in 'reg-stack.cc'.
  
!    * Final
  
       This pass outputs the assembler code for the function.  The source
!      files are 'final.cc' plus 'insn-output.cc'; the latter is generated
!      automatically from the machine description by the tool 'genoutput'.
!      The header file 'conditions.h' is used for communication between
       these files.
  
!    * Debugging information output
  
       This is run after final because it must output the stack slot
       offsets for pseudo registers that did not get hard registers.
!      Source files are 'dwarfout.c' for DWARF symbol table format, files
!      'dwarf2out.cc' and 'dwarf2asm.cc' for DWARF2 symbol table format,
!      and 'vmsdbgout.cc' for VMS debug symbol table format.
  
  
  File: gccint.info,  Node: Optimization info,  Prev: RTL passes,  Up: Passes
--- 9301,9330 ----
       instruction will be from each other instruction, and therefore
       whether the usual instructions, or the longer sequences, must be
       used for each branch.  The code for this pass is located in
!      â€˜final.ccâ€™.
  
!    â€¢ Register-to-stack conversion
  
       Conversion from usage of some hard registers to usage of a register
       stack may be done at this point.  Currently, this is supported only
       for the floating-point registers of the Intel 80387 coprocessor.
!      The code for this pass is located in â€˜reg-stack.ccâ€™.
  
!    â€¢ Final
  
       This pass outputs the assembler code for the function.  The source
!      files are â€˜final.ccâ€™ plus â€˜insn-output.ccâ€™; the latter is generated
!      automatically from the machine description by the tool â€˜genoutputâ€™.
!      The header file â€˜conditions.hâ€™ is used for communication between
       these files.
  
!    â€¢ Debugging information output
  
       This is run after final because it must output the stack slot
       offsets for pseudo registers that did not get hard registers.
!      Source files are â€˜dwarfout.câ€™ for DWARF symbol table format, files
!      â€˜dwarf2out.ccâ€™ and â€˜dwarf2asm.ccâ€™ for DWARF2 symbol table format,
!      and â€˜vmsdbgout.ccâ€™ for VMS debug symbol table format.
  
  
  File: gccint.info,  Node: Optimization info,  Prev: RTL passes,  Up: Passes
*************** File: gccint.info,  Node: Dump setup,  N
*** 9347,9370 ****
  8.7.1 Dump setup
  ----------------
  
! A dump_manager class is defined in 'dumpfile.h'.  Various passes
! register dumping pass-specific information via 'dump_register' in
! 'passes.cc'.  During the registration, an optimization pass can select
  its optimization group (*note Optimization groups::).  After that
  optimization information corresponding to the entire group (presumably
  from multiple passes) can be output via command-line switches.  Note
  that if a pass does not fit into any of the pre-defined groups, it can
! select 'OPTGROUP_NONE'.
  
   Note that in general, a pass need not know its dump output file name,
  whether certain flags are enabled, etc.  However, for legacy reasons,
! passes could also call 'dump_begin' which returns a stream in case the
  particular pass has optimization dumps enabled.  A pass could call
! 'dump_end' when the dump has ended.  These methods should go away once
  all the passes are converted to use the new dump infrastructure.
  
!  The recommended way to setup the dump output is via 'dump_start' and
! 'dump_end'.
  
  
  File: gccint.info,  Node: Optimization groups,  Next: Dump files and streams,  Prev: Dump setup,  Up: Optimization info
--- 9352,9375 ----
  8.7.1 Dump setup
  ----------------
  
! A dump_manager class is defined in â€˜dumpfile.hâ€™.  Various passes
! register dumping pass-specific information via â€˜dump_registerâ€™ in
! â€˜passes.ccâ€™.  During the registration, an optimization pass can select
  its optimization group (*note Optimization groups::).  After that
  optimization information corresponding to the entire group (presumably
  from multiple passes) can be output via command-line switches.  Note
  that if a pass does not fit into any of the pre-defined groups, it can
! select â€˜OPTGROUP_NONEâ€™.
  
   Note that in general, a pass need not know its dump output file name,
  whether certain flags are enabled, etc.  However, for legacy reasons,
! passes could also call â€˜dump_beginâ€™ which returns a stream in case the
  particular pass has optimization dumps enabled.  A pass could call
! â€˜dump_endâ€™ when the dump has ended.  These methods should go away once
  all the passes are converted to use the new dump infrastructure.
  
!  The recommended way to setup the dump output is via â€˜dump_startâ€™ and
! â€˜dump_endâ€™.
  
  
  File: gccint.info,  Node: Optimization groups,  Next: Dump files and streams,  Prev: Dump setup,  Up: Optimization info
*************** File: gccint.info,  Node: Optimization g
*** 9373,9401 ****
  -------------------------
  
  The optimization passes are grouped into several categories.  Currently
! defined categories in 'dumpfile.h' are
  
! 'OPTGROUP_IPA'
!      IPA optimization passes.  Enabled by '-ipa'
  
! 'OPTGROUP_LOOP'
!      Loop optimization passes.  Enabled by '-loop'.
  
! 'OPTGROUP_INLINE'
!      Inlining passes.  Enabled by '-inline'.
  
! 'OPTGROUP_OMP'
!      OMP (Offloading and Multi Processing) passes.  Enabled by '-omp'.
  
! 'OPTGROUP_VEC'
!      Vectorization passes.  Enabled by '-vec'.
  
! 'OPTGROUP_OTHER'
       All other optimization passes which do not fall into one of the
       above.
  
! 'OPTGROUP_ALL'
!      All optimization passes.  Enabled by '-optall'.
  
   By using groups a user could selectively enable optimization
  information only for a group of passes.  By default, the optimization
--- 9378,9406 ----
  -------------------------
  
  The optimization passes are grouped into several categories.  Currently
! defined categories in â€˜dumpfile.hâ€™ are
  
! â€˜OPTGROUP_IPAâ€™
!      IPA optimization passes.  Enabled by â€˜-ipaâ€™
  
! â€˜OPTGROUP_LOOPâ€™
!      Loop optimization passes.  Enabled by â€˜-loopâ€™.
  
! â€˜OPTGROUP_INLINEâ€™
!      Inlining passes.  Enabled by â€˜-inlineâ€™.
  
! â€˜OPTGROUP_OMPâ€™
!      OMP (Offloading and Multi Processing) passes.  Enabled by â€˜-ompâ€™.
  
! â€˜OPTGROUP_VECâ€™
!      Vectorization passes.  Enabled by â€˜-vecâ€™.
  
! â€˜OPTGROUP_OTHERâ€™
       All other optimization passes which do not fall into one of the
       above.
  
! â€˜OPTGROUP_ALLâ€™
!      All optimization passes.  Enabled by â€˜-optallâ€™.
  
   By using groups a user could selectively enable optimization
  information only for a group of passes.  By default, the optimization
*************** File: gccint.info,  Node: Dump files and
*** 9409,9432 ****
  
  There are two separate output streams available for outputting
  optimization information from passes.  Note that both these streams
! accept 'stderr' and 'stdout' as valid streams and thus it is possible to
  dump output to standard output or error.  This is specially handy for
  outputting all available information in a single file by redirecting
! 'stderr'.
  
! 'pstream'
       This stream is for pass-specific dump output.  For example,
!      '-fdump-tree-vect=foo.v' dumps tree vectorization pass output into
!      the given file name 'foo.v'.  If the file name is not provided, the
       default file name is based on the source file and pass number.
!      Note that one could also use special file names 'stdout' and
!      'stderr' for dumping to standard output and standard error
       respectively.
  
! 'alt_stream'
       This stream is used for printing optimization specific output in
!      response to the '-fopt-info'.  Again a file name can be given.  If
!      the file name is not given, it defaults to 'stderr'.
  
  
  File: gccint.info,  Node: Dump output verbosity,  Next: Dump types,  Prev: Dump files and streams,  Up: Optimization info
--- 9414,9437 ----
  
  There are two separate output streams available for outputting
  optimization information from passes.  Note that both these streams
! accept â€˜stderrâ€™ and â€˜stdoutâ€™ as valid streams and thus it is possible to
  dump output to standard output or error.  This is specially handy for
  outputting all available information in a single file by redirecting
! â€˜stderrâ€™.
  
! â€˜pstreamâ€™
       This stream is for pass-specific dump output.  For example,
!      â€˜-fdump-tree-vect=foo.vâ€™ dumps tree vectorization pass output into
!      the given file name â€˜foo.vâ€™.  If the file name is not provided, the
       default file name is based on the source file and pass number.
!      Note that one could also use special file names â€˜stdoutâ€™ and
!      â€˜stderrâ€™ for dumping to standard output and standard error
       respectively.
  
! â€˜alt_streamâ€™
       This stream is used for printing optimization specific output in
!      response to the â€˜-fopt-infoâ€™.  Again a file name can be given.  If
!      the file name is not given, it defaults to â€˜stderrâ€™.
  
  
  File: gccint.info,  Node: Dump output verbosity,  Next: Dump types,  Prev: Dump files and streams,  Up: Optimization info
*************** File: gccint.info,  Node: Dump output ve
*** 9436,9448 ****
  
  The dump verbosity has the following options
  
! 'optimized'
       Print information when an optimization is successfully applied.  It
       is up to a pass to decide which information is relevant.  For
       example, the vectorizer passes print the source location of loops
       which got successfully vectorized.
  
! 'missed'
       Print information about missed optimizations.  Individual passes
       control which information to include in the output.  For example,
  
--- 9441,9453 ----
  
  The dump verbosity has the following options
  
! â€˜optimizedâ€™
       Print information when an optimization is successfully applied.  It
       is up to a pass to decide which information is relevant.  For
       example, the vectorizer passes print the source location of loops
       which got successfully vectorized.
  
! â€˜missedâ€™
       Print information about missed optimizations.  Individual passes
       control which information to include in the output.  For example,
  
*************** The dump verbosity has the following opt
*** 9451,9461 ****
       will print information about missed optimization opportunities from
       vectorization passes on stderr.
  
! 'note'
       Print verbose information about optimizations, such as certain
       transformations, more detailed messages about decisions etc.
  
! 'all'
       Print detailed optimization information.  This includes OPTIMIZED,
       MISSED, and NOTE.
  
--- 9456,9466 ----
       will print information about missed optimization opportunities from
       vectorization passes on stderr.
  
! â€˜noteâ€™
       Print verbose information about optimizations, such as certain
       transformations, more detailed messages about decisions etc.
  
! â€˜allâ€™
       Print detailed optimization information.  This includes OPTIMIZED,
       MISSED, and NOTE.
  
*************** File: gccint.info,  Node: Dump types,  N
*** 9465,9515 ****
  8.7.5 Dump types
  ----------------
  
! 'dump_printf'
  
       This is a generic method for doing formatted output.  It takes an
!      additional argument 'dump_kind' which signifies the type of dump.
       This method outputs information only when the dumps are enabled for
!      this particular 'dump_kind'.  Note that the caller doesn't need to
       know if the particular dump is enabled or not, or even the file
       name.  The caller only needs to decide which dump output
       information is relevant, and under what conditions.  This
       determines the associated flags.
  
!      Consider the following example from 'loop-unroll.cc' where an
       informative message about a loop (along with its location) is
       printed when any of the following flags is enabled
  
!         - optimization messages
!         - RTL dumps
!         - detailed dumps
  
            int report_flags = MSG_OPTIMIZED_LOCATIONS | TDF_RTL | TDF_DETAILS;
            dump_printf_loc (report_flags, insn,
                             "loop turned into non-loop; it never loops.\n");
  
! 'dump_basic_block'
       Output basic block.
! 'dump_generic_expr'
       Output generic expression.
! 'dump_gimple_stmt'
       Output gimple statement.
  
       Note that the above methods also have variants prefixed with
!      '_loc', such as 'dump_printf_loc', which are similar except they
!      also output the source location information.  The '_loc' variants
!      take a 'const dump_location_t &'.  This class can be constructed
!      from a 'gimple *' or from a 'rtx_insn *', and so callers can pass a
!      'gimple *' or a 'rtx_insn *' as the '_loc' argument.  The
!      'dump_location_t' constructor will extract the source location from
       the statement or instruction, along with the profile count, and the
       location in GCC's own source code (or the plugin) from which the
       dump call was emitted.  Only the source location is currently used.
!      There is also a 'dump_user_location_t' class, capturing the source
       location and profile count, but not the dump emission location, so
       that locations in the user's code can be passed around.  This can
!      also be constructed from a 'gimple *' and from a 'rtx_insn *', and
!      it too can be passed as the '_loc' argument.
  
  
  File: gccint.info,  Node: Dump examples,  Prev: Dump types,  Up: Optimization info
--- 9470,9520 ----
  8.7.5 Dump types
  ----------------
  
! â€˜dump_printfâ€™
  
       This is a generic method for doing formatted output.  It takes an
!      additional argument â€˜dump_kindâ€™ which signifies the type of dump.
       This method outputs information only when the dumps are enabled for
!      this particular â€˜dump_kindâ€™.  Note that the caller doesn't need to
       know if the particular dump is enabled or not, or even the file
       name.  The caller only needs to decide which dump output
       information is relevant, and under what conditions.  This
       determines the associated flags.
  
!      Consider the following example from â€˜loop-unroll.ccâ€™ where an
       informative message about a loop (along with its location) is
       printed when any of the following flags is enabled
  
!         âˆ’ optimization messages
!         âˆ’ RTL dumps
!         âˆ’ detailed dumps
  
            int report_flags = MSG_OPTIMIZED_LOCATIONS | TDF_RTL | TDF_DETAILS;
            dump_printf_loc (report_flags, insn,
                             "loop turned into non-loop; it never loops.\n");
  
! â€˜dump_basic_blockâ€™
       Output basic block.
! â€˜dump_generic_exprâ€™
       Output generic expression.
! â€˜dump_gimple_stmtâ€™
       Output gimple statement.
  
       Note that the above methods also have variants prefixed with
!      â€˜_locâ€™, such as â€˜dump_printf_locâ€™, which are similar except they
!      also output the source location information.  The â€˜_locâ€™ variants
!      take a â€˜const dump_location_t &â€™.  This class can be constructed
!      from a â€˜gimple *â€™ or from a â€˜rtx_insn *â€™, and so callers can pass a
!      â€˜gimple *â€™ or a â€˜rtx_insn *â€™ as the â€˜_locâ€™ argument.  The
!      â€˜dump_location_tâ€™ constructor will extract the source location from
       the statement or instruction, along with the profile count, and the
       location in GCC's own source code (or the plugin) from which the
       dump call was emitted.  Only the source location is currently used.
!      There is also a â€˜dump_user_location_tâ€™ class, capturing the source
       location and profile count, but not the dump emission location, so
       that locations in the user's code can be passed around.  This can
!      also be constructed from a â€˜gimple *â€™ and from a â€˜rtx_insn *â€™, and
!      it too can be passed as the â€˜_locâ€™ argument.
  
  
  File: gccint.info,  Node: Dump examples,  Prev: Dump types,  Up: Optimization info
*************** File: gccint.info,  Node: Dump examples,
*** 9520,9554 ****
       gcc -O3 -fopt-info-missed=missed.all
  
   outputs missed optimization report from all the passes into
! 'missed.all'.
  
   As another example,
       gcc -O3 -fopt-info-inline-optimized-missed=inline.txt
  
   will output information about missed optimizations as well as optimized
! locations from all the inlining passes into 'inline.txt'.
  
   If the FILENAME is provided, then the dumps from all the applicable
! optimizations are concatenated into the 'filename'.  Otherwise the dump
! is output onto 'stderr'.  If OPTIONS is omitted, it defaults to
! 'optimized-optall', which means dump all information about successful
  optimizations from all the passes.  In the following example, the
! optimization information is output on to 'stderr'.
  
       gcc -O3 -fopt-info
  
!  Note that '-fopt-info-vec-missed' behaves the same as
! '-fopt-info-missed-vec'.  The order of the optimization group names and
! message types listed after '-fopt-info' does not matter.
  
   As another example, consider
  
       gcc -fopt-info-vec-missed=vec.miss -fopt-info-loop-optimized=loop.opt
  
!  Here the two output file names 'vec.miss' and 'loop.opt' are in
  conflict since only one output file is allowed.  In this case, only the
  first option takes effect and the subsequent options are ignored.  Thus
! only the 'vec.miss' is produced which containts dumps from the
  vectorizer about missed opportunities.
  
  
--- 9525,9559 ----
       gcc -O3 -fopt-info-missed=missed.all
  
   outputs missed optimization report from all the passes into
! â€˜missed.allâ€™.
  
   As another example,
       gcc -O3 -fopt-info-inline-optimized-missed=inline.txt
  
   will output information about missed optimizations as well as optimized
! locations from all the inlining passes into â€˜inline.txtâ€™.
  
   If the FILENAME is provided, then the dumps from all the applicable
! optimizations are concatenated into the â€˜filenameâ€™.  Otherwise the dump
! is output onto â€˜stderrâ€™.  If OPTIONS is omitted, it defaults to
! â€˜optimized-optallâ€™, which means dump all information about successful
  optimizations from all the passes.  In the following example, the
! optimization information is output on to â€˜stderrâ€™.
  
       gcc -O3 -fopt-info
  
!  Note that â€˜-fopt-info-vec-missedâ€™ behaves the same as
! â€˜-fopt-info-missed-vecâ€™.  The order of the optimization group names and
! message types listed after â€˜-fopt-infoâ€™ does not matter.
  
   As another example, consider
  
       gcc -fopt-info-vec-missed=vec.miss -fopt-info-loop-optimized=loop.opt
  
!  Here the two output file names â€˜vec.missâ€™ and â€˜loop.optâ€™ are in
  conflict since only one output file is allowed.  In this case, only the
  first option takes effect and the subsequent options are ignored.  Thus
! only the â€˜vec.missâ€™ is produced which containts dumps from the
  vectorizer about missed opportunities.
  
  
*************** rather than a compile-time constant.  Th
*** 9562,9586 ****
  sizes and offsets must also be runtime invariants rather than
  compile-time constants, such as:
  
!    * the size of a general 'machine_mode' (*note Machine Modes::);
  
!    * the size of a spill slot;
  
!    * the offset of something within a stack frame;
  
!    * the number of elements in a vector;
  
!    * the size and offset of a 'mem' rtx (*note Regs and Memory::); and
  
!    * the byte offset in a 'subreg' rtx (*note Regs and Memory::).
  
   The motivating example is the Arm SVE ISA, whose vector registers can
  be any multiple of 128 bits between 128 and 2048 inclusive.  The
  compiler normally produces code that works for all SVE register sizes,
  with the actual size only being known at runtime.
  
!  GCC's main representation of such runtime invariants is the 'poly_int'
! class.  This chapter describes what 'poly_int' does, lists the available
  operations, and gives some general usage guidelines.
  
  * Menu:
--- 9567,9591 ----
  sizes and offsets must also be runtime invariants rather than
  compile-time constants, such as:
  
!    â€¢ the size of a general â€˜machine_modeâ€™ (*note Machine Modes::);
  
!    â€¢ the size of a spill slot;
  
!    â€¢ the offset of something within a stack frame;
  
!    â€¢ the number of elements in a vector;
  
!    â€¢ the size and offset of a â€˜memâ€™ rtx (*note Regs and Memory::); and
  
!    â€¢ the byte offset in a â€˜subregâ€™ rtx (*note Regs and Memory::).
  
   The motivating example is the Arm SVE ISA, whose vector registers can
  be any multiple of 128 bits between 128 and 2048 inclusive.  The
  compiler normally produces code that works for all SVE register sizes,
  with the actual size only being known at runtime.
  
!  GCC's main representation of such runtime invariants is the â€˜poly_intâ€™
! class.  This chapter describes what â€˜poly_intâ€™ does, lists the available
  operations, and gives some general usage guidelines.
  
  * Menu:
*************** operations, and gives some general usage
*** 9598,9604 ****
  
  File: gccint.info,  Node: Overview of poly_int,  Next: Consequences of using poly_int,  Up: poly_int
  
! 9.1 Overview of 'poly_int'
  ==========================
  
  We define indeterminates X1, ..., XN whose values are only known at
--- 9603,9609 ----
  
  File: gccint.info,  Node: Overview of poly_int,  Next: Consequences of using poly_int,  Up: poly_int
  
! 9.1 Overview of â€˜poly_intâ€™
  ==========================
  
  We define indeterminates X1, ..., XN whose values are only known at
*************** indeterminates.  The coefficients C0, ..
*** 9611,9632 ****
  compile time, with the C0 term being the "constant" part that does not
  depend on any runtime value.
  
!  GCC uses the 'poly_int' class to represent these coefficients.  The
  class has two template parameters: the first specifies the number of
  coefficients (N + 1) and the second specifies the type of the
! coefficients.  For example, 'poly_int<2, unsigned short>' represents a
  polynomial with two coefficients (and thus one indeterminate), with each
! coefficient having type 'unsigned short'.  When N is 0, the class
  degenerates to a single compile-time constant C0.
  
   The number of coefficients needed for compilation is a fixed property
  of each target and is specified by the configuration macro
! 'NUM_POLY_INT_COEFFS'.  The default value is 1, since most targets do
  not have such runtime invariants.  Targets that need a different value
! should '#define' the macro in their 'CPU-modes.def' file.  *Note Back
  End::.
  
!  'poly_int' makes the simplifying requirement that each indeterminate
  must be a nonnegative integer.  An indeterminate value of 0 should
  usually represent the minimum possible runtime value, with C0 specifying
  the value in that case.
--- 9616,9637 ----
  compile time, with the C0 term being the "constant" part that does not
  depend on any runtime value.
  
!  GCC uses the â€˜poly_intâ€™ class to represent these coefficients.  The
  class has two template parameters: the first specifies the number of
  coefficients (N + 1) and the second specifies the type of the
! coefficients.  For example, â€˜poly_int<2, unsigned short>â€™ represents a
  polynomial with two coefficients (and thus one indeterminate), with each
! coefficient having type â€˜unsigned shortâ€™.  When N is 0, the class
  degenerates to a single compile-time constant C0.
  
   The number of coefficients needed for compilation is a fixed property
  of each target and is specified by the configuration macro
! â€˜NUM_POLY_INT_COEFFSâ€™.  The default value is 1, since most targets do
  not have such runtime invariants.  Targets that need a different value
! should â€˜#defineâ€™ the macro in their â€˜CPU-modes.defâ€™ file.  *Note Back
  End::.
  
!  â€˜poly_intâ€™ makes the simplifying requirement that each indeterminate
  must be a nonnegative integer.  An indeterminate value of 0 should
  usually represent the minimum possible runtime value, with C0 specifying
  the value in that case.
*************** length of 128 bits_.  Thus the number of
*** 9637,9680 ****
  is 2 + 2 * X1.  If an aggregate has a single SVE vector and 16
  additional bytes, its total size is 32 + 16 * X1 bytes.
  
!  The header file 'poly-int-types.h' provides typedefs for the most
! common forms of 'poly_int', all having 'NUM_POLY_INT_COEFFS'
  coefficients:
  
! 'poly_uint16'
!      a 'poly_int' with 'unsigned short' coefficients.
  
! 'poly_int64'
!      a 'poly_int' with 'HOST_WIDE_INT' coefficients.
  
! 'poly_uint64'
!      a 'poly_int' with 'unsigned HOST_WIDE_INT' coefficients.
  
! 'poly_offset_int'
!      a 'poly_int' with 'offset_int' coefficients.
  
! 'poly_wide_int'
!      a 'poly_int' with 'wide_int' coefficients.
  
! 'poly_widest_int'
!      a 'poly_int' with 'widest_int' coefficients.
  
!  Since the main purpose of 'poly_int' is to represent sizes and offsets,
  the last two typedefs are only rarely used.
  
  
  File: gccint.info,  Node: Consequences of using poly_int,  Next: Comparisons involving poly_int,  Prev: Overview of poly_int,  Up: poly_int
  
! 9.2 Consequences of using 'poly_int'
  ====================================
  
  The two main consequences of using polynomial sizes and offsets are
  that:
  
!    * there is no total ordering between the values at compile time, and
  
!    * some operations might yield results that cannot be expressed as a
!      'poly_int'.
  
   For example, if X is a runtime invariant, we cannot tell at compile
  time whether:
--- 9642,9685 ----
  is 2 + 2 * X1.  If an aggregate has a single SVE vector and 16
  additional bytes, its total size is 32 + 16 * X1 bytes.
  
!  The header file â€˜poly-int-types.hâ€™ provides typedefs for the most
! common forms of â€˜poly_intâ€™, all having â€˜NUM_POLY_INT_COEFFSâ€™
  coefficients:
  
! â€˜poly_uint16â€™
!      a â€˜poly_intâ€™ with â€˜unsigned shortâ€™ coefficients.
  
! â€˜poly_int64â€™
!      a â€˜poly_intâ€™ with â€˜HOST_WIDE_INTâ€™ coefficients.
  
! â€˜poly_uint64â€™
!      a â€˜poly_intâ€™ with â€˜unsigned HOST_WIDE_INTâ€™ coefficients.
  
! â€˜poly_offset_intâ€™
!      a â€˜poly_intâ€™ with â€˜offset_intâ€™ coefficients.
  
! â€˜poly_wide_intâ€™
!      a â€˜poly_intâ€™ with â€˜wide_intâ€™ coefficients.
  
! â€˜poly_widest_intâ€™
!      a â€˜poly_intâ€™ with â€˜widest_intâ€™ coefficients.
  
!  Since the main purpose of â€˜poly_intâ€™ is to represent sizes and offsets,
  the last two typedefs are only rarely used.
  
  
  File: gccint.info,  Node: Consequences of using poly_int,  Next: Comparisons involving poly_int,  Prev: Overview of poly_int,  Up: poly_int
  
! 9.2 Consequences of using â€˜poly_intâ€™
  ====================================
  
  The two main consequences of using polynomial sizes and offsets are
  that:
  
!    â€¢ there is no total ordering between the values at compile time, and
  
!    â€¢ some operations might yield results that cannot be expressed as a
!      â€˜poly_intâ€™.
  
   For example, if X is a runtime invariant, we cannot tell at compile
  time whether:
*************** time whether:
*** 9683,9689 ****
  
   since the condition is false when X <= 1 and true when X >= 2.
  
!  Similarly, 'poly_int' cannot represent the result of:
  
       (3 + 4X) * (1 + 5X)
  
--- 9688,9694 ----
  
   since the condition is false when X <= 1 and true when X >= 2.
  
!  Similarly, â€˜poly_intâ€™ cannot represent the result of:
  
       (3 + 4X) * (1 + 5X)
  
*************** than one.  It also cannot represent the
*** 9694,9716 ****
  
   The following sections describe how we deal with these restrictions.
  
!  As described earlier, a 'poly_int<1, T>' has no indeterminates and so
  degenerates to a compile-time constant of type T.  It would be possible
  in that case to do all normal arithmetic on the T, and to compare the T
  using the normal C++ operators.  We deliberately prevent
  target-independent code from doing this, since the compiler needs to
! support other 'poly_int<N, T>' as well, regardless of the current
! target's 'NUM_POLY_INT_COEFFS'.
  
   However, it would be very artificial to force target-specific code to
  follow these restrictions if the target has no runtime indeterminates.
! There is therefore an implicit conversion from 'poly_int<1, T>' to T
  when compiling target-specific translation units.
  
  
  File: gccint.info,  Node: Comparisons involving poly_int,  Next: Arithmetic on poly_ints,  Prev: Consequences of using poly_int,  Up: poly_int
  
! 9.3 Comparisons involving 'poly_int'
  ====================================
  
  In general we need to compare sizes and offsets in two situations: those
--- 9699,9721 ----
  
   The following sections describe how we deal with these restrictions.
  
!  As described earlier, a â€˜poly_int<1, T>â€™ has no indeterminates and so
  degenerates to a compile-time constant of type T.  It would be possible
  in that case to do all normal arithmetic on the T, and to compare the T
  using the normal C++ operators.  We deliberately prevent
  target-independent code from doing this, since the compiler needs to
! support other â€˜poly_int<N, T>â€™ as well, regardless of the current
! target's â€˜NUM_POLY_INT_COEFFSâ€™.
  
   However, it would be very artificial to force target-specific code to
  follow these restrictions if the target has no runtime indeterminates.
! There is therefore an implicit conversion from â€˜poly_int<1, T>â€™ to T
  when compiling target-specific translation units.
  
  
  File: gccint.info,  Node: Comparisons involving poly_int,  Next: Arithmetic on poly_ints,  Prev: Consequences of using poly_int,  Up: poly_int
  
! 9.3 Comparisons involving â€˜poly_intâ€™
  ====================================
  
  In general we need to compare sizes and offsets in two situations: those
*************** latter is alias analysis: we might want
*** 9725,9733 ****
  memory references overlap.
  
   Referring back to the examples in the previous section, it makes sense
! to ask whether a memory reference of size '3 + 4X' overlaps one of size
! '1 + 5X', but it does not make sense to have a subreg in which the outer
! mode has '3 + 4X' bytes and the inner mode has '1 + 5X' bytes (or vice
  versa).  Such subregs are always invalid and should trigger an internal
  compiler error if formed.
  
--- 9730,9738 ----
  memory references overlap.
  
   Referring back to the examples in the previous section, it makes sense
! to ask whether a memory reference of size â€˜3 + 4Xâ€™ overlaps one of size
! â€˜1 + 5Xâ€™, but it does not make sense to have a subreg in which the outer
! mode has â€˜3 + 4Xâ€™ bytes and the inner mode has â€˜1 + 5Xâ€™ bytes (or vice
  versa).  Such subregs are always invalid and should trigger an internal
  compiler error if formed.
  
*************** distinction affects how they are used.
*** 9747,9756 ****
  
  File: gccint.info,  Node: Comparison functions for poly_int,  Next: Properties of the poly_int comparisons,  Up: Comparisons involving poly_int
  
! 9.3.1 Comparison functions for 'poly_int'
  -----------------------------------------
  
! 'poly_int' provides the following routines for checking whether a
  particular condition "may be" (might be) true:
  
       maybe_lt maybe_le maybe_eq maybe_ge maybe_gt
--- 9752,9761 ----
  
  File: gccint.info,  Node: Comparison functions for poly_int,  Next: Properties of the poly_int comparisons,  Up: Comparisons involving poly_int
  
! 9.3.1 Comparison functions for â€˜poly_intâ€™
  -----------------------------------------
  
! â€˜poly_intâ€™ provides the following routines for checking whether a
  particular condition "may be" (might be) true:
  
       maybe_lt maybe_le maybe_eq maybe_ge maybe_gt
*************** particular condition "may be" (might be)
*** 9758,9782 ****
  
   The functions have their natural meaning:
  
! 'maybe_lt(A, B)'
       Return true if A might be less than B.
  
! 'maybe_le(A, B)'
       Return true if A might be less than or equal to B.
  
! 'maybe_eq(A, B)'
       Return true if A might be equal to B.
  
! 'maybe_ne(A, B)'
       Return true if A might not be equal to B.
  
! 'maybe_ge(A, B)'
       Return true if A might be greater than or equal to B.
  
! 'maybe_gt(A, B)'
       Return true if A might be greater than B.
  
!  For readability, 'poly_int' also provides "known" inverses of these
  functions:
  
       known_lt (A, B) == !maybe_ge (A, B)
--- 9763,9787 ----
  
   The functions have their natural meaning:
  
! â€˜maybe_lt(A, B)â€™
       Return true if A might be less than B.
  
! â€˜maybe_le(A, B)â€™
       Return true if A might be less than or equal to B.
  
! â€˜maybe_eq(A, B)â€™
       Return true if A might be equal to B.
  
! â€˜maybe_ne(A, B)â€™
       Return true if A might not be equal to B.
  
! â€˜maybe_ge(A, B)â€™
       Return true if A might be greater than or equal to B.
  
! â€˜maybe_gt(A, B)â€™
       Return true if A might be greater than B.
  
!  For readability, â€˜poly_intâ€™ also provides "known" inverses of these
  functions:
  
       known_lt (A, B) == !maybe_ge (A, B)
*************** functions:
*** 9789,9812 ****
  
  File: gccint.info,  Node: Properties of the poly_int comparisons,  Next: Comparing potentially-unordered poly_ints,  Prev: Comparison functions for poly_int,  Up: Comparisons involving poly_int
  
! 9.3.2 Properties of the 'poly_int' comparisons
  ----------------------------------------------
  
! All "maybe" relations except 'maybe_ne' are transitive, so for example:
  
       maybe_lt (A, B) && maybe_lt (B, C) implies maybe_lt (A, C)
  
!  for all A, B and C.  'maybe_lt', 'maybe_gt' and 'maybe_ne' are
  irreflexive, so for example:
  
       !maybe_lt (A, A)
  
!  is true for all A.  'maybe_le', 'maybe_eq' and 'maybe_ge' are
  reflexive, so for example:
  
       maybe_le (A, A)
  
!  is true for all A.  'maybe_eq' and 'maybe_ne' are symmetric, so:
  
       maybe_eq (A, B) == maybe_eq (B, A)
       maybe_ne (A, B) == maybe_ne (B, A)
--- 9794,9817 ----
  
  File: gccint.info,  Node: Properties of the poly_int comparisons,  Next: Comparing potentially-unordered poly_ints,  Prev: Comparison functions for poly_int,  Up: Comparisons involving poly_int
  
! 9.3.2 Properties of the â€˜poly_intâ€™ comparisons
  ----------------------------------------------
  
! All "maybe" relations except â€˜maybe_neâ€™ are transitive, so for example:
  
       maybe_lt (A, B) && maybe_lt (B, C) implies maybe_lt (A, C)
  
!  for all A, B and C.  â€˜maybe_ltâ€™, â€˜maybe_gtâ€™ and â€˜maybe_neâ€™ are
  irreflexive, so for example:
  
       !maybe_lt (A, A)
  
!  is true for all A.  â€˜maybe_leâ€™, â€˜maybe_eqâ€™ and â€˜maybe_geâ€™ are
  reflexive, so for example:
  
       maybe_le (A, A)
  
!  is true for all A.  â€˜maybe_eqâ€™ and â€˜maybe_neâ€™ are symmetric, so:
  
       maybe_eq (A, B) == maybe_eq (B, A)
       maybe_ne (A, B) == maybe_ne (B, A)
*************** reflexive, so for example:
*** 9823,9840 ****
       maybe_le (A, B) && maybe_le (B, A) does not imply !maybe_ne (A, B) [== known_eq (A, B)]
       maybe_ge (A, B) && maybe_ge (B, A) does not imply !maybe_ne (A, B) [== known_eq (A, B)]
  
!  One example is again 'A == 3 + 4X' and 'B == 1 + 5X', where 'maybe_le
! (A, B)', 'maybe_ge (A, B)' and 'maybe_ne (A, B)' all hold.  'maybe_le'
! and 'maybe_ge' are therefore not antisymetric and do not form a partial
  order.
  
   From the above, it follows that:
  
!    * All "known" relations except 'known_ne' are transitive.
  
!    * 'known_lt', 'known_ne' and 'known_gt' are irreflexive.
  
!    * 'known_le', 'known_eq' and 'known_ge' are reflexive.
  
   Also:
  
--- 9828,9845 ----
       maybe_le (A, B) && maybe_le (B, A) does not imply !maybe_ne (A, B) [== known_eq (A, B)]
       maybe_ge (A, B) && maybe_ge (B, A) does not imply !maybe_ne (A, B) [== known_eq (A, B)]
  
!  One example is again â€˜A == 3 + 4Xâ€™ and â€˜B == 1 + 5Xâ€™, where â€˜maybe_le
! (A, B)â€™, â€˜maybe_ge (A, B)â€™ and â€˜maybe_ne (A, B)â€™ all hold.  â€˜maybe_leâ€™
! and â€˜maybe_geâ€™ are therefore not antisymetric and do not form a partial
  order.
  
   From the above, it follows that:
  
!    â€¢ All "known" relations except â€˜known_neâ€™ are transitive.
  
!    â€¢ â€˜known_ltâ€™, â€˜known_neâ€™ and â€˜known_gtâ€™ are irreflexive.
  
!    â€¢ â€˜known_leâ€™, â€˜known_eqâ€™ and â€˜known_geâ€™ are reflexive.
  
   Also:
  
*************** order.
*** 9845,9873 ****
       known_le (A, B) && known_le (B, A) == known_eq (A, B) [== !maybe_ne (A, B)]
       known_ge (A, B) && known_ge (B, A) == known_eq (A, B) [== !maybe_ne (A, B)]
  
!  'known_le' and 'known_ge' are therefore antisymmetric and are partial
  orders.  However:
  
       known_le (A, B) does not imply known_lt (A, B) || known_eq (A, B)
       known_ge (A, B) does not imply known_gt (A, B) || known_eq (A, B)
  
!  For example, 'known_le (4, 4 + 4X)' holds because the runtime
! indeterminate X is a nonnegative integer, but neither 'known_lt (4, 4 +
! 4X)' nor 'known_eq (4, 4 + 4X)' hold.
  
  
  File: gccint.info,  Node: Comparing potentially-unordered poly_ints,  Next: Comparing ordered poly_ints,  Prev: Properties of the poly_int comparisons,  Up: Comparisons involving poly_int
  
! 9.3.3 Comparing potentially-unordered 'poly_int's
  -------------------------------------------------
  
! In cases where there is no definite link between two 'poly_int's, we can
  usually make a conservatively-correct assumption.  For example, the
  conservative assumption for alias analysis is that two references
  _might_ alias.
  
   One way of checking whether [BEGIN1, END1) might overlap [BEGIN2, END2)
! using the 'poly_int' comparisons is:
  
       maybe_gt (END1, BEGIN2) && maybe_gt (END2, BEGIN1)
  
--- 9850,9878 ----
       known_le (A, B) && known_le (B, A) == known_eq (A, B) [== !maybe_ne (A, B)]
       known_ge (A, B) && known_ge (B, A) == known_eq (A, B) [== !maybe_ne (A, B)]
  
!  â€˜known_leâ€™ and â€˜known_geâ€™ are therefore antisymmetric and are partial
  orders.  However:
  
       known_le (A, B) does not imply known_lt (A, B) || known_eq (A, B)
       known_ge (A, B) does not imply known_gt (A, B) || known_eq (A, B)
  
!  For example, â€˜known_le (4, 4 + 4X)â€™ holds because the runtime
! indeterminate X is a nonnegative integer, but neither â€˜known_lt (4, 4 +
! 4X)â€™ nor â€˜known_eq (4, 4 + 4X)â€™ hold.
  
  
  File: gccint.info,  Node: Comparing potentially-unordered poly_ints,  Next: Comparing ordered poly_ints,  Prev: Properties of the poly_int comparisons,  Up: Comparisons involving poly_int
  
! 9.3.3 Comparing potentially-unordered â€˜poly_intâ€™s
  -------------------------------------------------
  
! In cases where there is no definite link between two â€˜poly_intâ€™s, we can
  usually make a conservatively-correct assumption.  For example, the
  conservative assumption for alias analysis is that two references
  _might_ alias.
  
   One way of checking whether [BEGIN1, END1) might overlap [BEGIN2, END2)
! using the â€˜poly_intâ€™ comparisons is:
  
       maybe_gt (END1, BEGIN2) && maybe_gt (END2, BEGIN1)
  
*************** helper functions instead.  *Note Range c
*** 9881,9939 ****
  
  File: gccint.info,  Node: Comparing ordered poly_ints,  Next: Checking for a poly_int marker value,  Prev: Comparing potentially-unordered poly_ints,  Up: Comparisons involving poly_int
  
! 9.3.4 Comparing ordered 'poly_int's
  -----------------------------------
  
! In cases where there is a definite link between two 'poly_int's, such as
  the outer and inner sizes of subregs, we usually require the sizes to be
! ordered by the 'known_le' partial order.  'poly_int' provides the
  following utility functions for ordered values:
  
! 'ordered_p (A, B)'
!      Return true if A and B are ordered by the 'known_le' partial order.
  
! 'ordered_min (A, B)'
!      Assert that A and B are ordered by 'known_le' and return the
       minimum of the two.  When using this function, please add a comment
       explaining why the values are known to be ordered.
  
! 'ordered_max (A, B)'
!      Assert that A and B are ordered by 'known_le' and return the
       maximum of the two.  When using this function, please add a comment
       explaining why the values are known to be ordered.
  
   For example, if a subreg has an outer mode of size OUTER and an inner
  mode of size INNER:
  
!    * the subreg is complete if known_eq (INNER, OUTER)
  
!    * otherwise, the subreg is paradoxical if known_le (INNER, OUTER)
  
!    * otherwise, the subreg is partial if known_le (OUTER, INNER)
  
!    * otherwise, the subreg is ill-formed
  
!  Thus the subreg is only valid if 'ordered_p (OUTER, INNER)' is true.
  If this condition is already known to be true then:
  
!    * the subreg is complete if known_eq (INNER, OUTER)
  
!    * the subreg is paradoxical if maybe_lt (INNER, OUTER)
  
!    * the subreg is partial if maybe_lt (OUTER, INNER)
  
   with the three conditions being mutually exclusive.
  
   Code that checks whether a subreg is valid would therefore generally
! check whether 'ordered_p' holds (in addition to whatever other checks
  are required for subreg validity).  Code that is dealing with existing
! subregs can assert that 'ordered_p' holds and use either of the
  classifications above.
  
  
  File: gccint.info,  Node: Checking for a poly_int marker value,  Next: Range checks on poly_ints,  Prev: Comparing ordered poly_ints,  Up: Comparisons involving poly_int
  
! 9.3.5 Checking for a 'poly_int' marker value
  --------------------------------------------
  
  It is sometimes useful to have a special "marker value" that is not
--- 9886,9944 ----
  
  File: gccint.info,  Node: Comparing ordered poly_ints,  Next: Checking for a poly_int marker value,  Prev: Comparing potentially-unordered poly_ints,  Up: Comparisons involving poly_int
  
! 9.3.4 Comparing ordered â€˜poly_intâ€™s
  -----------------------------------
  
! In cases where there is a definite link between two â€˜poly_intâ€™s, such as
  the outer and inner sizes of subregs, we usually require the sizes to be
! ordered by the â€˜known_leâ€™ partial order.  â€˜poly_intâ€™ provides the
  following utility functions for ordered values:
  
! â€˜ordered_p (A, B)â€™
!      Return true if A and B are ordered by the â€˜known_leâ€™ partial order.
  
! â€˜ordered_min (A, B)â€™
!      Assert that A and B are ordered by â€˜known_leâ€™ and return the
       minimum of the two.  When using this function, please add a comment
       explaining why the values are known to be ordered.
  
! â€˜ordered_max (A, B)â€™
!      Assert that A and B are ordered by â€˜known_leâ€™ and return the
       maximum of the two.  When using this function, please add a comment
       explaining why the values are known to be ordered.
  
   For example, if a subreg has an outer mode of size OUTER and an inner
  mode of size INNER:
  
!    â€¢ the subreg is complete if known_eq (INNER, OUTER)
  
!    â€¢ otherwise, the subreg is paradoxical if known_le (INNER, OUTER)
  
!    â€¢ otherwise, the subreg is partial if known_le (OUTER, INNER)
  
!    â€¢ otherwise, the subreg is ill-formed
  
!  Thus the subreg is only valid if â€˜ordered_p (OUTER, INNER)â€™ is true.
  If this condition is already known to be true then:
  
!    â€¢ the subreg is complete if known_eq (INNER, OUTER)
  
!    â€¢ the subreg is paradoxical if maybe_lt (INNER, OUTER)
  
!    â€¢ the subreg is partial if maybe_lt (OUTER, INNER)
  
   with the three conditions being mutually exclusive.
  
   Code that checks whether a subreg is valid would therefore generally
! check whether â€˜ordered_pâ€™ holds (in addition to whatever other checks
  are required for subreg validity).  Code that is dealing with existing
! subregs can assert that â€˜ordered_pâ€™ holds and use either of the
  classifications above.
  
  
  File: gccint.info,  Node: Checking for a poly_int marker value,  Next: Range checks on poly_ints,  Prev: Comparing ordered poly_ints,  Up: Comparisons involving poly_int
  
! 9.3.5 Checking for a â€˜poly_intâ€™ marker value
  --------------------------------------------
  
  It is sometimes useful to have a special "marker value" that is not
*************** to represent an unknown size, rather tha
*** 9942,9962 ****
  separate boolean to say whether the size is known.
  
   The best way of checking whether something is a marker value is
! 'known_eq'.  Conversely the best way of checking whether something is
! _not_ a marker value is 'maybe_ne'.
  
!  Thus in the size example just mentioned, 'known_eq (size, -1)' would
! check for an unknown size and 'maybe_ne (size, -1)' would check for a
  known size.
  
  
  File: gccint.info,  Node: Range checks on poly_ints,  Next: Sorting poly_ints,  Prev: Checking for a poly_int marker value,  Up: Comparisons involving poly_int
  
! 9.3.6 Range checks on 'poly_int's
  ---------------------------------
  
  As well as the core comparisons (*note Comparison functions for
! poly_int::), 'poly_int' provides utilities for various kinds of range
  check.  In each case the range is represented by a start position and a
  size rather than a start position and an end position; this is because
  the former is used much more often than the latter in GCC.  Also, the
--- 9947,9967 ----
  separate boolean to say whether the size is known.
  
   The best way of checking whether something is a marker value is
! â€˜known_eqâ€™.  Conversely the best way of checking whether something is
! _not_ a marker value is â€˜maybe_neâ€™.
  
!  Thus in the size example just mentioned, â€˜known_eq (size, -1)â€™ would
! check for an unknown size and â€˜maybe_ne (size, -1)â€™ would check for a
  known size.
  
  
  File: gccint.info,  Node: Range checks on poly_ints,  Next: Sorting poly_ints,  Prev: Checking for a poly_int marker value,  Up: Comparisons involving poly_int
  
! 9.3.6 Range checks on â€˜poly_intâ€™s
  ---------------------------------
  
  As well as the core comparisons (*note Comparison functions for
! poly_int::), â€˜poly_intâ€™ provides utilities for various kinds of range
  check.  In each case the range is represented by a start position and a
  size rather than a start position and an end position; this is because
  the former is used much more often than the latter in GCC.  Also, the
*************** with a known start position but an unkno
*** 9965,10021 ****
  be nonnegative.  A range of size 0 does not contain anything or overlap
  anything.
  
! 'known_size_p (SIZE)'
       Return true if SIZE represents a known range size, false if it is
       -1 or all ones (for signed and unsigned types respectively).
  
! 'ranges_maybe_overlap_p (POS1, SIZE1, POS2, SIZE2)'
       Return true if the range described by POS1 and SIZE1 _might_
       overlap the range described by POS2 and SIZE2 (in other words,
       return true if we cannot prove that the ranges are disjoint).
  
! 'ranges_known_overlap_p (POS1, SIZE1, POS2, SIZE2)'
       Return true if the range described by POS1 and SIZE1 is known to
       overlap the range described by POS2 and SIZE2.
  
! 'known_subrange_p (POS1, SIZE1, POS2, SIZE2)'
       Return true if the range described by POS1 and SIZE1 is known to be
       contained in the range described by POS2 and SIZE2.
  
! 'maybe_in_range_p (VALUE, POS, SIZE)'
       Return true if VALUE _might_ be in the range described by POS and
       SIZE (in other words, return true if we cannot prove that VALUE is
       outside that range).
  
! 'known_in_range_p (VALUE, POS, SIZE)'
       Return true if VALUE is known to be in the range described by POS
       and SIZE.
  
! 'endpoint_representable_p (POS, SIZE)'
       Return true if the range described by POS and SIZE is open-ended or
       if the endpoint (POS + SIZE) is representable in the same type as
       POS and SIZE.  The function returns false if adding SIZE to POS
       makes conceptual sense but could overflow.
  
!  There is also a 'poly_int' version of the 'IN_RANGE_P' macro:
  
! 'coeffs_in_range_p (X, LOWER, UPPER)'
       Return true if every coefficient of X is in the inclusive range
       [LOWER, UPPER].  This function can be useful when testing whether
       an operation would cause the values of coefficients to overflow.
  
       Note that the function does not indicate whether X itself is in the
!      given range.  X can be either a constant or a 'poly_int'.
  
  
  File: gccint.info,  Node: Sorting poly_ints,  Prev: Range checks on poly_ints,  Up: Comparisons involving poly_int
  
! 9.3.7 Sorting 'poly_int's
  -------------------------
  
! 'poly_int' provides the following routine for sorting:
  
! 'compare_sizes_for_sort (A, B)'
       Compare A and B in reverse lexicographical order (that is, compare
       the highest-indexed coefficients first).  This can be useful when
       sorting data structures, since it has the effect of separating
--- 9970,10026 ----
  be nonnegative.  A range of size 0 does not contain anything or overlap
  anything.
  
! â€˜known_size_p (SIZE)â€™
       Return true if SIZE represents a known range size, false if it is
       -1 or all ones (for signed and unsigned types respectively).
  
! â€˜ranges_maybe_overlap_p (POS1, SIZE1, POS2, SIZE2)â€™
       Return true if the range described by POS1 and SIZE1 _might_
       overlap the range described by POS2 and SIZE2 (in other words,
       return true if we cannot prove that the ranges are disjoint).
  
! â€˜ranges_known_overlap_p (POS1, SIZE1, POS2, SIZE2)â€™
       Return true if the range described by POS1 and SIZE1 is known to
       overlap the range described by POS2 and SIZE2.
  
! â€˜known_subrange_p (POS1, SIZE1, POS2, SIZE2)â€™
       Return true if the range described by POS1 and SIZE1 is known to be
       contained in the range described by POS2 and SIZE2.
  
! â€˜maybe_in_range_p (VALUE, POS, SIZE)â€™
       Return true if VALUE _might_ be in the range described by POS and
       SIZE (in other words, return true if we cannot prove that VALUE is
       outside that range).
  
! â€˜known_in_range_p (VALUE, POS, SIZE)â€™
       Return true if VALUE is known to be in the range described by POS
       and SIZE.
  
! â€˜endpoint_representable_p (POS, SIZE)â€™
       Return true if the range described by POS and SIZE is open-ended or
       if the endpoint (POS + SIZE) is representable in the same type as
       POS and SIZE.  The function returns false if adding SIZE to POS
       makes conceptual sense but could overflow.
  
!  There is also a â€˜poly_intâ€™ version of the â€˜IN_RANGE_Pâ€™ macro:
  
! â€˜coeffs_in_range_p (X, LOWER, UPPER)â€™
       Return true if every coefficient of X is in the inclusive range
       [LOWER, UPPER].  This function can be useful when testing whether
       an operation would cause the values of coefficients to overflow.
  
       Note that the function does not indicate whether X itself is in the
!      given range.  X can be either a constant or a â€˜poly_intâ€™.
  
  
  File: gccint.info,  Node: Sorting poly_ints,  Prev: Range checks on poly_ints,  Up: Comparisons involving poly_int
  
! 9.3.7 Sorting â€˜poly_intâ€™s
  -------------------------
  
! â€˜poly_intâ€™ provides the following routine for sorting:
  
! â€˜compare_sizes_for_sort (A, B)â€™
       Compare A and B in reverse lexicographical order (that is, compare
       the highest-indexed coefficients first).  This can be useful when
       sorting data structures, since it has the effect of separating
*************** File: gccint.info,  Node: Sorting poly_i
*** 10023,10041 ****
       the constant values come first.
  
       Note that the values do not necessarily end up in numerical order.
!      For example, '1 + 1X' would come after '100' in the sort order, but
!      may well be less than '100' at run time.
  
  
  File: gccint.info,  Node: Arithmetic on poly_ints,  Next: Alignment of poly_ints,  Prev: Comparisons involving poly_int,  Up: poly_int
  
! 9.4 Arithmetic on 'poly_int's
  =============================
  
  Addition, subtraction, negation and bit inversion all work normally for
! 'poly_int's.  Multiplication by a constant multiplier and left shifting
  by a constant shift amount also work normally.  General multiplication
! of two 'poly_int's is not supported and is not useful in practice.
  
   Other operations are only conditionally supported: the operation might
  succeed or might fail, depending on the inputs.
--- 10028,10046 ----
       the constant values come first.
  
       Note that the values do not necessarily end up in numerical order.
!      For example, â€˜1 + 1Xâ€™ would come after â€˜100â€™ in the sort order, but
!      may well be less than â€˜100â€™ at run time.
  
  
  File: gccint.info,  Node: Arithmetic on poly_ints,  Next: Alignment of poly_ints,  Prev: Comparisons involving poly_int,  Up: poly_int
  
! 9.4 Arithmetic on â€˜poly_intâ€™s
  =============================
  
  Addition, subtraction, negation and bit inversion all work normally for
! â€˜poly_intâ€™s.  Multiplication by a constant multiplier and left shifting
  by a constant shift amount also work normally.  General multiplication
! of two â€˜poly_intâ€™s is not supported and is not useful in practice.
  
   Other operations are only conditionally supported: the operation might
  succeed or might fail, depending on the inputs.
*************** succeed or might fail, depending on the
*** 10052,10062 ****
  
  File: gccint.info,  Node: Using poly_int with C++ arithmetic operators,  Next: wi arithmetic on poly_ints,  Up: Arithmetic on poly_ints
  
! 9.4.1 Using 'poly_int' with C++ arithmetic operators
  ----------------------------------------------------
  
  The following C++ expressions are supported, where P1 and P2 are
! 'poly_int's and where C1 and C2 are scalars:
  
       -P1
       ~P1
--- 10057,10067 ----
  
  File: gccint.info,  Node: Using poly_int with C++ arithmetic operators,  Next: wi arithmetic on poly_ints,  Up: Arithmetic on poly_ints
  
! 9.4.1 Using â€˜poly_intâ€™ with C++ arithmetic operators
  ----------------------------------------------------
  
  The following C++ expressions are supported, where P1 and P2 are
! â€˜poly_intâ€™s and where C1 and C2 are scalars:
  
       -P1
       ~P1
*************** The following C++ expressions are suppor
*** 10085,10092 ****
  
   These arithmetic operations handle integer ranks in a similar way to
  C++.  The main difference is that every coefficient narrower than
! 'HOST_WIDE_INT' promotes to 'HOST_WIDE_INT', whereas in C++ everything
! narrower than 'int' promotes to 'int'.  For example:
  
       poly_uint16     + int          -> poly_int64
       unsigned int    + poly_uint16  -> poly_int64
--- 10090,10097 ----
  
   These arithmetic operations handle integer ranks in a similar way to
  C++.  The main difference is that every coefficient narrower than
! â€˜HOST_WIDE_INTâ€™ promotes to â€˜HOST_WIDE_INTâ€™, whereas in C++ everything
! narrower than â€˜intâ€™ promotes to â€˜intâ€™.  For example:
  
       poly_uint16     + int          -> poly_int64
       unsigned int    + poly_uint16  -> poly_int64
*************** narrower than 'int' promotes to 'int'.
*** 10097,10115 ****
       offset_int      + poly_uint16  -> poly_offset_int
  
   In the first two examples, both coefficients are narrower than
! 'HOST_WIDE_INT', so the result has coefficients of type 'HOST_WIDE_INT'.
  In the other examples, the coefficient with the highest rank "wins".
  
!  If one of the operands is 'wide_int' or 'poly_wide_int', the rules are
! the same as for 'wide_int' arithmetic.
  
  
  File: gccint.info,  Node: wi arithmetic on poly_ints,  Next: Division of poly_ints,  Prev: Using poly_int with C++ arithmetic operators,  Up: Arithmetic on poly_ints
  
! 9.4.2 'wi' arithmetic on 'poly_int's
  ------------------------------------
  
! As well as the C++ operators, 'poly_int' supports the following 'wi'
  routines:
  
       wi::neg (P1, &OVERFLOW)
--- 10102,10120 ----
       offset_int      + poly_uint16  -> poly_offset_int
  
   In the first two examples, both coefficients are narrower than
! â€˜HOST_WIDE_INTâ€™, so the result has coefficients of type â€˜HOST_WIDE_INTâ€™.
  In the other examples, the coefficient with the highest rank "wins".
  
!  If one of the operands is â€˜wide_intâ€™ or â€˜poly_wide_intâ€™, the rules are
! the same as for â€˜wide_intâ€™ arithmetic.
  
  
  File: gccint.info,  Node: wi arithmetic on poly_ints,  Next: Division of poly_ints,  Prev: Using poly_int with C++ arithmetic operators,  Up: Arithmetic on poly_ints
  
! 9.4.2 â€˜wiâ€™ arithmetic on â€˜poly_intâ€™s
  ------------------------------------
  
! As well as the C++ operators, â€˜poly_intâ€™ supports the following â€˜wiâ€™
  routines:
  
       wi::neg (P1, &OVERFLOW)
*************** final runtime value would overflow.
*** 10137,10208 ****
  
  File: gccint.info,  Node: Division of poly_ints,  Next: Other poly_int arithmetic,  Prev: wi arithmetic on poly_ints,  Up: Arithmetic on poly_ints
  
! 9.4.3 Division of 'poly_int's
  -----------------------------
  
! Division of 'poly_int's is possible for certain inputs.  The functions
  for division return true if the operation is possible and in most cases
  return the results by pointer.  The routines are:
  
! 'multiple_p (A, B)'
! 'multiple_p (A, B, &QUOTIENT)'
       Return true if A is an exact multiple of B, storing the result in
       QUOTIENT if so.  There are overloads for various combinations of
       polynomial and constant A, B and QUOTIENT.
  
! 'constant_multiple_p (A, B)'
! 'constant_multiple_p (A, B, &QUOTIENT)'
!      Like 'multiple_p', but also test whether the multiple is a
       compile-time constant.
  
! 'can_div_trunc_p (A, B, &QUOTIENT)'
! 'can_div_trunc_p (A, B, &QUOTIENT, &REMAINDER)'
!      Return true if we can calculate 'trunc (A / B)' at compile time,
       storing the result in QUOTIENT and REMAINDER if so.
  
! 'can_div_away_from_zero_p (A, B, &QUOTIENT)'
!      Return true if we can calculate 'A / B' at compile time, rounding
       away from zero.  Store the result in QUOTIENT if so.
  
!      Note that this is true if and only if 'can_div_trunc_p' is true.
       The only difference is in the rounding of the result.
  
   There is also an asserting form of division:
  
! 'exact_div (A, B)'
!      Assert that A is a multiple of B and return 'A / B'.  The result is
!      a 'poly_int' if A is a 'poly_int'.
  
  
  File: gccint.info,  Node: Other poly_int arithmetic,  Prev: Division of poly_ints,  Up: Arithmetic on poly_ints
  
! 9.4.4 Other 'poly_int' arithmetic
  ---------------------------------
  
  There are tentative routines for other operations besides division:
  
! 'can_ior_p (A, B, &RESULT)'
!      Return true if we can calculate 'A | B' at compile time, storing
       the result in RESULT if so.
  
!  Also, ANDs with a value '(1 << Y) - 1' or its inverse can be treated as
  alignment operations.  *Note Alignment of poly_ints::.
  
   In addition, the following miscellaneous routines are available:
  
! 'coeff_gcd (A)'
       Return the greatest common divisor of all nonzero coefficients in
       A, or zero if A is known to be zero.
  
! 'common_multiple (A, B)'
       Return a value that is a multiple of both A and B, where one value
!      is a 'poly_int' and the other is a scalar.  The result will be the
       least common multiple for some indeterminate values but not
       necessarily for all.
  
! 'force_common_multiple (A, B)'
!      Return a value that is a multiple of both 'poly_int' A and
!      'poly_int' B, asserting that such a value exists.  The result will
       be the least common multiple for some indeterminate values but not
       necessarily for all.
  
--- 10142,10213 ----
  
  File: gccint.info,  Node: Division of poly_ints,  Next: Other poly_int arithmetic,  Prev: wi arithmetic on poly_ints,  Up: Arithmetic on poly_ints
  
! 9.4.3 Division of â€˜poly_intâ€™s
  -----------------------------
  
! Division of â€˜poly_intâ€™s is possible for certain inputs.  The functions
  for division return true if the operation is possible and in most cases
  return the results by pointer.  The routines are:
  
! â€˜multiple_p (A, B)â€™
! â€˜multiple_p (A, B, &QUOTIENT)â€™
       Return true if A is an exact multiple of B, storing the result in
       QUOTIENT if so.  There are overloads for various combinations of
       polynomial and constant A, B and QUOTIENT.
  
! â€˜constant_multiple_p (A, B)â€™
! â€˜constant_multiple_p (A, B, &QUOTIENT)â€™
!      Like â€˜multiple_pâ€™, but also test whether the multiple is a
       compile-time constant.
  
! â€˜can_div_trunc_p (A, B, &QUOTIENT)â€™
! â€˜can_div_trunc_p (A, B, &QUOTIENT, &REMAINDER)â€™
!      Return true if we can calculate â€˜trunc (A / B)â€™ at compile time,
       storing the result in QUOTIENT and REMAINDER if so.
  
! â€˜can_div_away_from_zero_p (A, B, &QUOTIENT)â€™
!      Return true if we can calculate â€˜A / Bâ€™ at compile time, rounding
       away from zero.  Store the result in QUOTIENT if so.
  
!      Note that this is true if and only if â€˜can_div_trunc_pâ€™ is true.
       The only difference is in the rounding of the result.
  
   There is also an asserting form of division:
  
! â€˜exact_div (A, B)â€™
!      Assert that A is a multiple of B and return â€˜A / Bâ€™.  The result is
!      a â€˜poly_intâ€™ if A is a â€˜poly_intâ€™.
  
  
  File: gccint.info,  Node: Other poly_int arithmetic,  Prev: Division of poly_ints,  Up: Arithmetic on poly_ints
  
! 9.4.4 Other â€˜poly_intâ€™ arithmetic
  ---------------------------------
  
  There are tentative routines for other operations besides division:
  
! â€˜can_ior_p (A, B, &RESULT)â€™
!      Return true if we can calculate â€˜A | Bâ€™ at compile time, storing
       the result in RESULT if so.
  
!  Also, ANDs with a value â€˜(1 << Y) - 1â€™ or its inverse can be treated as
  alignment operations.  *Note Alignment of poly_ints::.
  
   In addition, the following miscellaneous routines are available:
  
! â€˜coeff_gcd (A)â€™
       Return the greatest common divisor of all nonzero coefficients in
       A, or zero if A is known to be zero.
  
! â€˜common_multiple (A, B)â€™
       Return a value that is a multiple of both A and B, where one value
!      is a â€˜poly_intâ€™ and the other is a scalar.  The result will be the
       least common multiple for some indeterminate values but not
       necessarily for all.
  
! â€˜force_common_multiple (A, B)â€™
!      Return a value that is a multiple of both â€˜poly_intâ€™ A and
!      â€˜poly_intâ€™ B, asserting that such a value exists.  The result will
       be the least common multiple for some indeterminate values but not
       necessarily for all.
  
*************** alignment operations.  *Note Alignment o
*** 10214,10248 ****
  
  File: gccint.info,  Node: Alignment of poly_ints,  Next: Computing bounds on poly_ints,  Prev: Arithmetic on poly_ints,  Up: poly_int
  
! 9.5 Alignment of 'poly_int's
  ============================
  
! 'poly_int' provides various routines for aligning values and for
  querying misalignments.  In each case the alignment must be a power of
  2.
  
! 'can_align_p (VALUE, ALIGN)'
       Return true if we can align VALUE up or down to the nearest
       multiple of ALIGN at compile time.  The answer is the same for both
       directions.
  
! 'can_align_down (VALUE, ALIGN, &ALIGNED)'
!      Return true if 'can_align_p'; if so, set ALIGNED to the greatest
       aligned value that is less than or equal to VALUE.
  
! 'can_align_up (VALUE, ALIGN, &ALIGNED)'
!      Return true if 'can_align_p'; if so, set ALIGNED to the lowest
       aligned value that is greater than or equal to VALUE.
  
! 'known_equal_after_align_down (A, B, ALIGN)'
       Return true if we can align A and B down to the nearest ALIGN
       boundary at compile time and if the two results are equal.
  
! 'known_equal_after_align_up (A, B, ALIGN)'
       Return true if we can align A and B up to the nearest ALIGN
       boundary at compile time and if the two results are equal.
  
! 'aligned_lower_bound (VALUE, ALIGN)'
       Return a result that is no greater than VALUE and that is aligned
       to ALIGN.  The result will the closest aligned value for some
       indeterminate values but not necessarily for all.
--- 10219,10253 ----
  
  File: gccint.info,  Node: Alignment of poly_ints,  Next: Computing bounds on poly_ints,  Prev: Arithmetic on poly_ints,  Up: poly_int
  
! 9.5 Alignment of â€˜poly_intâ€™s
  ============================
  
! â€˜poly_intâ€™ provides various routines for aligning values and for
  querying misalignments.  In each case the alignment must be a power of
  2.
  
! â€˜can_align_p (VALUE, ALIGN)â€™
       Return true if we can align VALUE up or down to the nearest
       multiple of ALIGN at compile time.  The answer is the same for both
       directions.
  
! â€˜can_align_down (VALUE, ALIGN, &ALIGNED)â€™
!      Return true if â€˜can_align_pâ€™; if so, set ALIGNED to the greatest
       aligned value that is less than or equal to VALUE.
  
! â€˜can_align_up (VALUE, ALIGN, &ALIGNED)â€™
!      Return true if â€˜can_align_pâ€™; if so, set ALIGNED to the lowest
       aligned value that is greater than or equal to VALUE.
  
! â€˜known_equal_after_align_down (A, B, ALIGN)â€™
       Return true if we can align A and B down to the nearest ALIGN
       boundary at compile time and if the two results are equal.
  
! â€˜known_equal_after_align_up (A, B, ALIGN)â€™
       Return true if we can align A and B up to the nearest ALIGN
       boundary at compile time and if the two results are equal.
  
! â€˜aligned_lower_bound (VALUE, ALIGN)â€™
       Return a result that is no greater than VALUE and that is aligned
       to ALIGN.  The result will the closest aligned value for some
       indeterminate values but not necessarily for all.
*************** querying misalignments.  In each case th
*** 10254,10292 ****
  
            aligned_lower_bound (LIMIT - SIZE, ALIGN)
  
! 'aligned_upper_bound (VALUE, ALIGN)'
       Likewise return a result that is no less than VALUE and that is
       aligned to ALIGN.  This is the routine that would be used for
       upward-growing stacks in the scenario just described.
  
! 'known_misalignment (VALUE, ALIGN, &MISALIGN)'
       Return true if we can calculate the misalignment of VALUE with
       respect to ALIGN at compile time, storing the result in MISALIGN if
       so.
  
! 'known_alignment (VALUE)'
       Return the minimum alignment that VALUE is known to have (in other
       words, the largest alignment that can be guaranteed whatever the
       values of the indeterminates turn out to be).  Return 0 if VALUE is
       known to be 0.
  
! 'force_align_down (VALUE, ALIGN)'
       Assert that VALUE can be aligned down to ALIGN at compile time and
       return the result.  When using this routine, please add a comment
       explaining why the assertion is known to hold.
  
! 'force_align_up (VALUE, ALIGN)'
       Likewise, but aligning up.
  
! 'force_align_down_and_div (VALUE, ALIGN)'
!      Divide the result of 'force_align_down' by ALIGN.  Again, please
!      add a comment explaining why the assertion in 'force_align_down' is
       known to hold.
  
! 'force_align_up_and_div (VALUE, ALIGN)'
!      Likewise for 'force_align_up'.
  
! 'force_get_misalignment (VALUE, ALIGN)'
       Assert that we can calculate the misalignment of VALUE with respect
       to ALIGN at compile time and return the misalignment.  When using
       this function, please add a comment explaining why the assertion is
--- 10259,10297 ----
  
            aligned_lower_bound (LIMIT - SIZE, ALIGN)
  
! â€˜aligned_upper_bound (VALUE, ALIGN)â€™
       Likewise return a result that is no less than VALUE and that is
       aligned to ALIGN.  This is the routine that would be used for
       upward-growing stacks in the scenario just described.
  
! â€˜known_misalignment (VALUE, ALIGN, &MISALIGN)â€™
       Return true if we can calculate the misalignment of VALUE with
       respect to ALIGN at compile time, storing the result in MISALIGN if
       so.
  
! â€˜known_alignment (VALUE)â€™
       Return the minimum alignment that VALUE is known to have (in other
       words, the largest alignment that can be guaranteed whatever the
       values of the indeterminates turn out to be).  Return 0 if VALUE is
       known to be 0.
  
! â€˜force_align_down (VALUE, ALIGN)â€™
       Assert that VALUE can be aligned down to ALIGN at compile time and
       return the result.  When using this routine, please add a comment
       explaining why the assertion is known to hold.
  
! â€˜force_align_up (VALUE, ALIGN)â€™
       Likewise, but aligning up.
  
! â€˜force_align_down_and_div (VALUE, ALIGN)â€™
!      Divide the result of â€˜force_align_downâ€™ by ALIGN.  Again, please
!      add a comment explaining why the assertion in â€˜force_align_downâ€™ is
       known to hold.
  
! â€˜force_align_up_and_div (VALUE, ALIGN)â€™
!      Likewise for â€˜force_align_upâ€™.
  
! â€˜force_get_misalignment (VALUE, ALIGN)â€™
       Assert that we can calculate the misalignment of VALUE with respect
       to ALIGN at compile time and return the misalignment.  When using
       this function, please add a comment explaining why the assertion is
*************** querying misalignments.  In each case th
*** 10295,10328 ****
  
  File: gccint.info,  Node: Computing bounds on poly_ints,  Next: Converting poly_ints,  Prev: Alignment of poly_ints,  Up: poly_int
  
! 9.6 Computing bounds on 'poly_int's
  ===================================
  
! 'poly_int' also provides routines for calculating lower and upper
  bounds:
  
! 'constant_lower_bound (A)'
       Assert that A is nonnegative and return the smallest value it can
       have.
  
! 'constant_lower_bound_with_limit (A, B)'
       Return the least value A can have, given that the context in which
       A appears guarantees that the answer is no less than B.  In other
       words, the caller is asserting that A is greater than or equal to B
!      even if 'known_ge (A, B)' doesn't hold.
  
! 'constant_upper_bound_with_limit (A, B)'
       Return the greatest value A can have, given that the context in
       which A appears guarantees that the answer is no greater than B.
       In other words, the caller is asserting that A is less than or
!      equal to B even if 'known_le (A, B)' doesn't hold.
  
! 'lower_bound (A, B)'
       Return a value that is always less than or equal to both A and B.
       It will be the greatest such value for some indeterminate values
       but necessarily for all.
  
! 'upper_bound (A, B)'
       Return a value that is always greater than or equal to both A and
       B.  It will be the least such value for some indeterminate values
       but necessarily for all.
--- 10300,10333 ----
  
  File: gccint.info,  Node: Computing bounds on poly_ints,  Next: Converting poly_ints,  Prev: Alignment of poly_ints,  Up: poly_int
  
! 9.6 Computing bounds on â€˜poly_intâ€™s
  ===================================
  
! â€˜poly_intâ€™ also provides routines for calculating lower and upper
  bounds:
  
! â€˜constant_lower_bound (A)â€™
       Assert that A is nonnegative and return the smallest value it can
       have.
  
! â€˜constant_lower_bound_with_limit (A, B)â€™
       Return the least value A can have, given that the context in which
       A appears guarantees that the answer is no less than B.  In other
       words, the caller is asserting that A is greater than or equal to B
!      even if â€˜known_ge (A, B)â€™ doesn't hold.
  
! â€˜constant_upper_bound_with_limit (A, B)â€™
       Return the greatest value A can have, given that the context in
       which A appears guarantees that the answer is no greater than B.
       In other words, the caller is asserting that A is less than or
!      equal to B even if â€˜known_le (A, B)â€™ doesn't hold.
  
! â€˜lower_bound (A, B)â€™
       Return a value that is always less than or equal to both A and B.
       It will be the greatest such value for some indeterminate values
       but necessarily for all.
  
! â€˜upper_bound (A, B)â€™
       Return a value that is always greater than or equal to both A and
       B.  It will be the least such value for some indeterminate values
       but necessarily for all.
*************** bounds:
*** 10330,10462 ****
  
  File: gccint.info,  Node: Converting poly_ints,  Next: Miscellaneous poly_int routines,  Prev: Computing bounds on poly_ints,  Up: poly_int
  
! 9.7 Converting 'poly_int's
  ==========================
  
! A 'poly_int<N, T>' can be constructed from up to N individual T
  coefficients, with the remaining coefficients being implicitly zero.  In
! particular, this means that every 'poly_int<N, T>' can be constructed
  from a single scalar T, or something compatible with T.
  
!  Also, a 'poly_int<N, T>' can be constructed from a 'poly_int<N, U>' if
  T can be constructed from U.
  
   The following functions provide other forms of conversion, or test
  whether such a conversion would succeed.
  
! 'VALUE.is_constant ()'
!      Return true if 'poly_int' VALUE is a compile-time constant.
  
! 'VALUE.is_constant (&C1)'
!      Return true if 'poly_int' VALUE is a compile-time constant, storing
       it in C1 if so.  C1 must be able to hold all constant values of
       VALUE without loss of precision.
  
! 'VALUE.to_constant ()'
       Assert that VALUE is a compile-time constant and return its value.
       When using this function, please add a comment explaining why the
       condition is known to hold (for example, because an earlier phase
       of analysis rejected non-constants).
  
! 'VALUE.to_shwi (&P2)'
!      Return true if 'poly_int<N, T>' VALUE can be represented without
!      loss of precision as a 'poly_int<N, 'HOST_WIDE_INT'>', storing it
       in that form in P2 if so.
  
! 'VALUE.to_uhwi (&P2)'
!      Return true if 'poly_int<N, T>' VALUE can be represented without
!      loss of precision as a 'poly_int<N, 'unsigned HOST_WIDE_INT'>',
       storing it in that form in P2 if so.
  
! 'VALUE.force_shwi ()'
!      Forcibly convert each coefficient of 'poly_int<N, T>' VALUE to
!      'HOST_WIDE_INT', truncating any that are out of range.  Return the
!      result as a 'poly_int<N, 'HOST_WIDE_INT'>'.
  
! 'VALUE.force_uhwi ()'
!      Forcibly convert each coefficient of 'poly_int<N, T>' VALUE to
!      'unsigned HOST_WIDE_INT', truncating any that are out of range.
!      Return the result as a 'poly_int<N, 'unsigned HOST_WIDE_INT'>'.
  
! 'wi::shwi (VALUE, PRECISION)'
!      Return a 'poly_int' with the same value as VALUE, but with the
!      coefficients converted from 'HOST_WIDE_INT' to 'wide_int'.
!      PRECISION specifies the precision of the 'wide_int' cofficients; if
!      this is wider than a 'HOST_WIDE_INT', the coefficients of VALUE
       will be sign-extended to fit.
  
! 'wi::uhwi (VALUE, PRECISION)'
!      Like 'wi::shwi', except that VALUE has coefficients of type
!      'unsigned HOST_WIDE_INT'.  If PRECISION is wider than a
!      'HOST_WIDE_INT', the coefficients of VALUE will be zero-extended to
       fit.
  
! 'wi::sext (VALUE, PRECISION)'
!      Return a 'poly_int' of the same type as VALUE, sign-extending every
       coefficient from the low PRECISION bits.  This in effect applies
!      'wi::sext' to each coefficient individually.
  
! 'wi::zext (VALUE, PRECISION)'
!      Like 'wi::sext', but for zero extension.
  
! 'poly_wide_int::from (VALUE, PRECISION, SIGN)'
!      Convert VALUE to a 'poly_wide_int' in which each coefficient has
       PRECISION bits.  Extend the coefficients according to SIGN if the
       coefficients have fewer bits.
  
! 'poly_offset_int::from (VALUE, SIGN)'
!      Convert VALUE to a 'poly_offset_int', extending its coefficients
!      according to SIGN if they have fewer bits than 'offset_int'.
  
! 'poly_widest_int::from (VALUE, SIGN)'
!      Convert VALUE to a 'poly_widest_int', extending its coefficients
!      according to SIGN if they have fewer bits than 'widest_int'.
  
  
  File: gccint.info,  Node: Miscellaneous poly_int routines,  Next: Guidelines for using poly_int,  Prev: Converting poly_ints,  Up: poly_int
  
! 9.8 Miscellaneous 'poly_int' routines
  =====================================
  
! 'print_dec (VALUE, FILE, SIGN)'
! 'print_dec (VALUE, FILE)'
       Print VALUE to FILE as a decimal value, interpreting the
       coefficients according to SIGN.  The final argument is optional if
!      VALUE has an inherent sign; for example, 'poly_int64' values print
!      as signed by default and 'poly_uint64' values print as unsigned by
       default.
  
!      This is a simply a 'poly_int' version of a wide-int routine.
  
  
  File: gccint.info,  Node: Guidelines for using poly_int,  Prev: Miscellaneous poly_int routines,  Up: poly_int
  
! 9.9 Guidelines for using 'poly_int'
  ===================================
  
! One of the main design goals of 'poly_int' was to make it easy to write
  target-independent code that handles variable-sized registers even when
  the current target has fixed-sized registers.  There are two aspects to
  this:
  
!    * The set of 'poly_int' operations should be complete enough that the
       question in most cases becomes "Can we do this operation on these
!      particular 'poly_int' values?  If not, bail out" rather than "Are
!      these 'poly_int' values constant?  If so, do the operation,
       otherwise bail out".
  
!    * If target-independent code compiles and runs correctly on a target
!      with one value of 'NUM_POLY_INT_COEFFS', and if the code does not
!      use asserting functions like 'to_constant', it is reasonable to
       assume that the code also works on targets with other values of
!      'NUM_POLY_INT_COEFFS'.  There is no need to check this during
       everyday development.
  
   So the general principle is: if target-independent code is dealing with
! a 'poly_int' value, it is better to operate on it as a 'poly_int' if at
  all possible, choosing conservatively-correct behavior if a particular
! operation fails.  For example, the following code handles an index 'pos'
! into a sequence of vectors that each have 'nunits' elements:
  
       /* Calculate which vector contains the result, and which lane of
          that vector we need.  */
--- 10335,10467 ----
  
  File: gccint.info,  Node: Converting poly_ints,  Next: Miscellaneous poly_int routines,  Prev: Computing bounds on poly_ints,  Up: poly_int
  
! 9.7 Converting â€˜poly_intâ€™s
  ==========================
  
! A â€˜poly_int<N, T>â€™ can be constructed from up to N individual T
  coefficients, with the remaining coefficients being implicitly zero.  In
! particular, this means that every â€˜poly_int<N, T>â€™ can be constructed
  from a single scalar T, or something compatible with T.
  
!  Also, a â€˜poly_int<N, T>â€™ can be constructed from a â€˜poly_int<N, U>â€™ if
  T can be constructed from U.
  
   The following functions provide other forms of conversion, or test
  whether such a conversion would succeed.
  
! â€˜VALUE.is_constant ()â€™
!      Return true if â€˜poly_intâ€™ VALUE is a compile-time constant.
  
! â€˜VALUE.is_constant (&C1)â€™
!      Return true if â€˜poly_intâ€™ VALUE is a compile-time constant, storing
       it in C1 if so.  C1 must be able to hold all constant values of
       VALUE without loss of precision.
  
! â€˜VALUE.to_constant ()â€™
       Assert that VALUE is a compile-time constant and return its value.
       When using this function, please add a comment explaining why the
       condition is known to hold (for example, because an earlier phase
       of analysis rejected non-constants).
  
! â€˜VALUE.to_shwi (&P2)â€™
!      Return true if â€˜poly_int<N, T>â€™ VALUE can be represented without
!      loss of precision as a â€˜poly_int<N, â€˜HOST_WIDE_INTâ€™>â€™, storing it
       in that form in P2 if so.
  
! â€˜VALUE.to_uhwi (&P2)â€™
!      Return true if â€˜poly_int<N, T>â€™ VALUE can be represented without
!      loss of precision as a â€˜poly_int<N, â€˜unsigned HOST_WIDE_INTâ€™>â€™,
       storing it in that form in P2 if so.
  
! â€˜VALUE.force_shwi ()â€™
!      Forcibly convert each coefficient of â€˜poly_int<N, T>â€™ VALUE to
!      â€˜HOST_WIDE_INTâ€™, truncating any that are out of range.  Return the
!      result as a â€˜poly_int<N, â€˜HOST_WIDE_INTâ€™>â€™.
  
! â€˜VALUE.force_uhwi ()â€™
!      Forcibly convert each coefficient of â€˜poly_int<N, T>â€™ VALUE to
!      â€˜unsigned HOST_WIDE_INTâ€™, truncating any that are out of range.
!      Return the result as a â€˜poly_int<N, â€˜unsigned HOST_WIDE_INTâ€™>â€™.
  
! â€˜wi::shwi (VALUE, PRECISION)â€™
!      Return a â€˜poly_intâ€™ with the same value as VALUE, but with the
!      coefficients converted from â€˜HOST_WIDE_INTâ€™ to â€˜wide_intâ€™.
!      PRECISION specifies the precision of the â€˜wide_intâ€™ cofficients; if
!      this is wider than a â€˜HOST_WIDE_INTâ€™, the coefficients of VALUE
       will be sign-extended to fit.
  
! â€˜wi::uhwi (VALUE, PRECISION)â€™
!      Like â€˜wi::shwiâ€™, except that VALUE has coefficients of type
!      â€˜unsigned HOST_WIDE_INTâ€™.  If PRECISION is wider than a
!      â€˜HOST_WIDE_INTâ€™, the coefficients of VALUE will be zero-extended to
       fit.
  
! â€˜wi::sext (VALUE, PRECISION)â€™
!      Return a â€˜poly_intâ€™ of the same type as VALUE, sign-extending every
       coefficient from the low PRECISION bits.  This in effect applies
!      â€˜wi::sextâ€™ to each coefficient individually.
  
! â€˜wi::zext (VALUE, PRECISION)â€™
!      Like â€˜wi::sextâ€™, but for zero extension.
  
! â€˜poly_wide_int::from (VALUE, PRECISION, SIGN)â€™
!      Convert VALUE to a â€˜poly_wide_intâ€™ in which each coefficient has
       PRECISION bits.  Extend the coefficients according to SIGN if the
       coefficients have fewer bits.
  
! â€˜poly_offset_int::from (VALUE, SIGN)â€™
!      Convert VALUE to a â€˜poly_offset_intâ€™, extending its coefficients
!      according to SIGN if they have fewer bits than â€˜offset_intâ€™.
  
! â€˜poly_widest_int::from (VALUE, SIGN)â€™
!      Convert VALUE to a â€˜poly_widest_intâ€™, extending its coefficients
!      according to SIGN if they have fewer bits than â€˜widest_intâ€™.
  
  
  File: gccint.info,  Node: Miscellaneous poly_int routines,  Next: Guidelines for using poly_int,  Prev: Converting poly_ints,  Up: poly_int
  
! 9.8 Miscellaneous â€˜poly_intâ€™ routines
  =====================================
  
! â€˜print_dec (VALUE, FILE, SIGN)â€™
! â€˜print_dec (VALUE, FILE)â€™
       Print VALUE to FILE as a decimal value, interpreting the
       coefficients according to SIGN.  The final argument is optional if
!      VALUE has an inherent sign; for example, â€˜poly_int64â€™ values print
!      as signed by default and â€˜poly_uint64â€™ values print as unsigned by
       default.
  
!      This is a simply a â€˜poly_intâ€™ version of a wide-int routine.
  
  
  File: gccint.info,  Node: Guidelines for using poly_int,  Prev: Miscellaneous poly_int routines,  Up: poly_int
  
! 9.9 Guidelines for using â€˜poly_intâ€™
  ===================================
  
! One of the main design goals of â€˜poly_intâ€™ was to make it easy to write
  target-independent code that handles variable-sized registers even when
  the current target has fixed-sized registers.  There are two aspects to
  this:
  
!    â€¢ The set of â€˜poly_intâ€™ operations should be complete enough that the
       question in most cases becomes "Can we do this operation on these
!      particular â€˜poly_intâ€™ values?  If not, bail out" rather than "Are
!      these â€˜poly_intâ€™ values constant?  If so, do the operation,
       otherwise bail out".
  
!    â€¢ If target-independent code compiles and runs correctly on a target
!      with one value of â€˜NUM_POLY_INT_COEFFSâ€™, and if the code does not
!      use asserting functions like â€˜to_constantâ€™, it is reasonable to
       assume that the code also works on targets with other values of
!      â€˜NUM_POLY_INT_COEFFSâ€™.  There is no need to check this during
       everyday development.
  
   So the general principle is: if target-independent code is dealing with
! a â€˜poly_intâ€™ value, it is better to operate on it as a â€˜poly_intâ€™ if at
  all possible, choosing conservatively-correct behavior if a particular
! operation fails.  For example, the following code handles an index â€˜posâ€™
! into a sequence of vectors that each have â€˜nunitsâ€™ elements:
  
       /* Calculate which vector contains the result, and which lane of
          that vector we need.  */
*************** into a sequence of vectors that each hav
*** 10469,10475 ****
           return false;
         }
  
!  However, there are some contexts in which operating on a 'poly_int' is
  not possible or does not make sense.  One example is when handling
  static initializers, since no current target supports the concept of a
  variable-length static initializer.  In these situations, a reasonable
--- 10474,10480 ----
           return false;
         }
  
!  However, there are some contexts in which operating on a â€˜poly_intâ€™ is
  not possible or does not make sense.  One example is when handling
  static initializers, since no current target supports the concept of a
  variable-length static initializer.  In these situations, a reasonable
*************** fallback is:
*** 10488,10505 ****
           ...
         }
  
!  'poly_int' also provides some asserting functions like 'to_constant'.
  Please only use these functions if there is a good theoretical reason to
  believe that the assertion cannot fire.  For example, if some work is
  divided into an analysis phase and an implementation phase, the analysis
! phase might reject inputs that are not 'is_constant', in which case the
! implementation phase can reasonably use 'to_constant' on the remaining
  inputs.  The assertions should not be used to discover whether a
  condition ever occurs "in the field"; in other words, they should not be
  used to restrict code to constants at first, with the intention of only
! implementing a 'poly_int' version if a user hits the assertion.
  
!  If a particular asserting function like 'to_constant' is needed more
  than once for the same reason, it is probably worth adding a helper
  function or macro for that situation, so that the justification only
  needs to be given once.  For example:
--- 10493,10510 ----
           ...
         }
  
!  â€˜poly_intâ€™ also provides some asserting functions like â€˜to_constantâ€™.
  Please only use these functions if there is a good theoretical reason to
  believe that the assertion cannot fire.  For example, if some work is
  divided into an analysis phase and an implementation phase, the analysis
! phase might reject inputs that are not â€˜is_constantâ€™, in which case the
! implementation phase can reasonably use â€˜to_constantâ€™ on the remaining
  inputs.  The assertions should not be used to discover whether a
  condition ever occurs "in the field"; in other words, they should not be
  used to restrict code to constants at first, with the intention of only
! implementing a â€˜poly_intâ€™ version if a user hits the assertion.
  
!  If a particular asserting function like â€˜to_constantâ€™ is needed more
  than once for the same reason, it is probably worth adding a helper
  function or macro for that situation, so that the justification only
  needs to be given once.  For example:
*************** needs to be given once.  For example:
*** 10513,10540 ****
       #define vector_element_size(SIZE, NELTS) \
         (exact_div (SIZE, NELTS).to_constant ())
  
!  Target-specific code in 'config/CPU' only needs to handle non-constant
! 'poly_int's if 'NUM_POLY_INT_COEFFS' is greater than one.  For other
! targets, 'poly_int' degenerates to a compile-time constant and is often
  interchangable with a normal scalar integer.  There are two main
  exceptions:
  
!    * Sometimes an explicit cast to an integer type might be needed, such
!      as to resolve ambiguities in a '?:' expression, or when passing
!      values through '...' to things like print functions.
  
!    * Target macros are included in target-independent code and so do not
       have access to the implicit conversion to a scalar integer.  If
       this becomes a problem for a particular target macro, the possible
       solutions, in order of preference, are:
  
!         * Convert the target macro to a target hook (for all targets).
  
!         * Put the target's implementation of the target macro in its
!           'CPU.c' file and call it from the target macro in the 'CPU.h'
            file.
  
!         * Add 'to_constant ()' calls where necessary.  The previous
            option is preferable because it will help with any future
            conversion of the macro to a hook.
  
--- 10518,10545 ----
       #define vector_element_size(SIZE, NELTS) \
         (exact_div (SIZE, NELTS).to_constant ())
  
!  Target-specific code in â€˜config/CPUâ€™ only needs to handle non-constant
! â€˜poly_intâ€™s if â€˜NUM_POLY_INT_COEFFSâ€™ is greater than one.  For other
! targets, â€˜poly_intâ€™ degenerates to a compile-time constant and is often
  interchangable with a normal scalar integer.  There are two main
  exceptions:
  
!    â€¢ Sometimes an explicit cast to an integer type might be needed, such
!      as to resolve ambiguities in a â€˜?:â€™ expression, or when passing
!      values through â€˜...â€™ to things like print functions.
  
!    â€¢ Target macros are included in target-independent code and so do not
       have access to the implicit conversion to a scalar integer.  If
       this becomes a problem for a particular target macro, the possible
       solutions, in order of preference, are:
  
!         â€¢ Convert the target macro to a target hook (for all targets).
  
!         â€¢ Put the target's implementation of the target macro in its
!           â€˜CPU.câ€™ file and call it from the target macro in the â€˜CPU.hâ€™
            file.
  
!         â€¢ Add â€˜to_constant ()â€™ calls where necessary.  The previous
            option is preferable because it will help with any future
            conversion of the macro to a hook.
  
*************** The purpose of GENERIC is simply to prov
*** 10548,10560 ****
  of representing an entire function in trees.  To this end, it was
  necessary to add a few new tree codes to the back end, but almost
  everything was already there.  If you can express it with the codes in
! 'gcc/tree.def', it's GENERIC.
  
   Early on, there was a great deal of debate about how to think about
  statements in a tree IL.  In GENERIC, a statement is defined as any
  expression whose value, if any, is ignored.  A statement will always
! have 'TREE_SIDE_EFFECTS' set (or it will be discarded), but a
! non-statement expression may also have side effects.  A 'CALL_EXPR', for
  instance.
  
   It would be possible for some local optimizations to work on the
--- 10553,10565 ----
  of representing an entire function in trees.  To this end, it was
  necessary to add a few new tree codes to the back end, but almost
  everything was already there.  If you can express it with the codes in
! â€˜gcc/tree.defâ€™, it's GENERIC.
  
   Early on, there was a great deal of debate about how to think about
  statements in a tree IL.  In GENERIC, a statement is defined as any
  expression whose value, if any, is ignored.  A statement will always
! have â€˜TREE_SIDE_EFFECTSâ€™ set (or it will be discarded), but a
! non-statement expression may also have side effects.  A â€˜CALL_EXPRâ€™, for
  instance.
  
   It would be possible for some local optimizations to work on the
*************** GENERIC form of a function; indeed, the
*** 10562,10573 ****
  on GENERIC, but the current compiler performs inlining after lowering to
  GIMPLE (a restricted form described in the next section).  Indeed,
  currently the frontends perform this lowering before handing off to
! 'tree_rest_of_compilation', but this seems inelegant.
  
  * Menu:
  
  * Deficiencies::                Topics not yet covered in this document.
! * Tree overview::               All about 'tree's.
  * Types::                       Fundamental and aggregate types.
  * Declarations::                Type declarations and variables.
  * Attributes::                  Declaration and type attributes.
--- 10567,10578 ----
  on GENERIC, but the current compiler performs inlining after lowering to
  GIMPLE (a restricted form described in the next section).  Indeed,
  currently the frontends perform this lowering before handing off to
! â€˜tree_rest_of_compilationâ€™, but this seems inelegant.
  
  * Menu:
  
  * Deficiencies::                Topics not yet covered in this document.
! * Tree overview::               All about â€˜treeâ€™s.
  * Types::                       Fundamental and aggregate types.
  * Declarations::                Type declarations and variables.
  * Attributes::                  Declaration and type attributes.
*************** File: gccint.info,  Node: Tree overview,
*** 10593,10626 ****
  =============
  
  The central data structure used by the internal representation is the
! 'tree'.  These nodes, while all of the C type 'tree', are of many
! varieties.  A 'tree' is a pointer type, but the object to which it
  points may be of a variety of types.  From this point forward, we will
! refer to trees in ordinary type, rather than in 'this font', except when
! talking about the actual C type 'tree'.
  
   You can tell what kind of node a particular tree is by using the
! 'TREE_CODE' macro.  Many, many macros take trees as input and return
  trees as output.  However, most macros require a certain kind of tree
  node as input.  In other words, there is a type-system for trees, but it
  is not reflected in the C type-system.
  
!  For safety, it is useful to configure GCC with '--enable-checking'.
  Although this results in a significant performance penalty (since all
  tree types are checked at run-time), and is therefore inappropriate in a
  release version, it is extremely helpful during the development process.
  
   Many macros behave as predicates.  Many, although not all, of these
! predicates end in '_P'.  Do not rely on the result type of these macros
  being of any particular type.  You may, however, rely on the fact that
! the type can be compared to '0', so that statements like
       if (TEST_P (t) && !TEST_P (y))
         x = 1;
  and
       int i = (TEST_P (t) != 0);
! are legal.  Macros that return 'int' values now may be changed to return
! 'tree' values, or other pointers in the future.  Even those that
! continue to return 'int' may return multiple nonzero codes where
  previously they returned only zero and one.  Therefore, you should not
  write code like
       if (TEST_P (t) == 1)
--- 10598,10631 ----
  =============
  
  The central data structure used by the internal representation is the
! â€˜treeâ€™.  These nodes, while all of the C type â€˜treeâ€™, are of many
! varieties.  A â€˜treeâ€™ is a pointer type, but the object to which it
  points may be of a variety of types.  From this point forward, we will
! refer to trees in ordinary type, rather than in â€˜this fontâ€™, except when
! talking about the actual C type â€˜treeâ€™.
  
   You can tell what kind of node a particular tree is by using the
! â€˜TREE_CODEâ€™ macro.  Many, many macros take trees as input and return
  trees as output.  However, most macros require a certain kind of tree
  node as input.  In other words, there is a type-system for trees, but it
  is not reflected in the C type-system.
  
!  For safety, it is useful to configure GCC with â€˜--enable-checkingâ€™.
  Although this results in a significant performance penalty (since all
  tree types are checked at run-time), and is therefore inappropriate in a
  release version, it is extremely helpful during the development process.
  
   Many macros behave as predicates.  Many, although not all, of these
! predicates end in â€˜_Pâ€™.  Do not rely on the result type of these macros
  being of any particular type.  You may, however, rely on the fact that
! the type can be compared to â€˜0â€™, so that statements like
       if (TEST_P (t) && !TEST_P (y))
         x = 1;
  and
       int i = (TEST_P (t) != 0);
! are legal.  Macros that return â€˜intâ€™ values now may be changed to return
! â€˜treeâ€™ values, or other pointers in the future.  Even those that
! continue to return â€˜intâ€™ may return multiple nonzero codes where
  previously they returned only zero and one.  Therefore, you should not
  write code like
       if (TEST_P (t) == 1)
*************** made up entirely of uppercase letters ma
*** 10637,10653 ****
  than once.  You may assume that a macro or function whose name is made
  up entirely of lowercase letters will evaluate its arguments only once.
  
!  The 'error_mark_node' is a special tree.  Its tree code is
! 'ERROR_MARK', but since there is only ever one node with that code, the
! usual practice is to compare the tree against 'error_mark_node'.  (This
  test is just a test for pointer equality.)  If an error has occurred
! during front-end processing the flag 'errorcount' will be set.  If the
  front end has encountered code it cannot handle, it will issue a message
! to the user and set 'sorrycount'.  When these flags are set, any macro
  or function which normally returns a tree of a particular kind may
! instead return the 'error_mark_node'.  Thus, if you intend to do any
  processing of erroneous code, you must be prepared to deal with the
! 'error_mark_node'.
  
   Occasionally, a particular tree slot (like an operand to an expression,
  or a particular field in a declaration) will be referred to as "reserved
--- 10642,10658 ----
  than once.  You may assume that a macro or function whose name is made
  up entirely of lowercase letters will evaluate its arguments only once.
  
!  The â€˜error_mark_nodeâ€™ is a special tree.  Its tree code is
! â€˜ERROR_MARKâ€™, but since there is only ever one node with that code, the
! usual practice is to compare the tree against â€˜error_mark_nodeâ€™.  (This
  test is just a test for pointer equality.)  If an error has occurred
! during front-end processing the flag â€˜errorcountâ€™ will be set.  If the
  front end has encountered code it cannot handle, it will issue a message
! to the user and set â€˜sorrycountâ€™.  When these flags are set, any macro
  or function which normally returns a tree of a particular kind may
! instead return the â€˜error_mark_nodeâ€™.  Thus, if you intend to do any
  processing of erroneous code, you must be prepared to deal with the
! â€˜error_mark_nodeâ€™.
  
   Occasionally, a particular tree slot (like an operand to an expression,
  or a particular field in a declaration) will be referred to as "reserved
*************** File: gccint.info,  Node: Macros and Fun
*** 10675,10702 ****
  10.2.1 Trees
  ------------
  
! All GENERIC trees have two fields in common.  First, 'TREE_CHAIN' is a
  pointer that can be used as a singly-linked list to other trees.  The
! other is 'TREE_TYPE'.  Many trees store the type of an expression or
  declaration in this field.
  
   These are some other functions for handling trees:
  
! 'tree_size'
       Return the number of bytes a tree takes.
  
! 'build0'
! 'build1'
! 'build2'
! 'build3'
! 'build4'
! 'build5'
! 'build6'
  
       These functions build a tree and supply values to put in each
!      parameter.  The basic signature is 'code, type, [operands]'.
!      'code' is the 'TREE_CODE', and 'type' is a tree representing the
!      'TREE_TYPE'.  These are followed by the operands, each of which is
       also a tree.
  
  
--- 10680,10707 ----
  10.2.1 Trees
  ------------
  
! All GENERIC trees have two fields in common.  First, â€˜TREE_CHAINâ€™ is a
  pointer that can be used as a singly-linked list to other trees.  The
! other is â€˜TREE_TYPEâ€™.  Many trees store the type of an expression or
  declaration in this field.
  
   These are some other functions for handling trees:
  
! â€˜tree_sizeâ€™
       Return the number of bytes a tree takes.
  
! â€˜build0â€™
! â€˜build1â€™
! â€˜build2â€™
! â€˜build3â€™
! â€˜build4â€™
! â€˜build5â€™
! â€˜build6â€™
  
       These functions build a tree and supply values to put in each
!      parameter.  The basic signature is â€˜code, type, [operands]â€™.
!      â€˜codeâ€™ is the â€˜TREE_CODEâ€™, and â€˜typeâ€™ is a tree representing the
!      â€˜TREE_TYPEâ€™.  These are followed by the operands, each of which is
       also a tree.
  
  
*************** File: gccint.info,  Node: Identifiers,
*** 10705,10741 ****
  10.2.2 Identifiers
  ------------------
  
! An 'IDENTIFIER_NODE' represents a slightly more general concept than the
  standard C or C++ concept of identifier.  In particular, an
! 'IDENTIFIER_NODE' may contain a '$', or other extraordinary characters.
  
!  There are never two distinct 'IDENTIFIER_NODE's representing the same
  identifier.  Therefore, you may use pointer equality to compare
! 'IDENTIFIER_NODE's, rather than using a routine like 'strcmp'.  Use
! 'get_identifier' to obtain the unique 'IDENTIFIER_NODE' for a supplied
  string.
  
   You can use the following macros to access identifiers:
! 'IDENTIFIER_POINTER'
!      The string represented by the identifier, represented as a 'char*'.
!      This string is always 'NUL'-terminated, and contains no embedded
!      'NUL' characters.
  
! 'IDENTIFIER_LENGTH'
!      The length of the string returned by 'IDENTIFIER_POINTER', not
!      including the trailing 'NUL'.  This value of 'IDENTIFIER_LENGTH
!      (x)' is always the same as 'strlen (IDENTIFIER_POINTER (x))'.
  
! 'IDENTIFIER_OPNAME_P'
       This predicate holds if the identifier represents the name of an
       overloaded operator.  In this case, you should not depend on the
!      contents of either the 'IDENTIFIER_POINTER' or the
!      'IDENTIFIER_LENGTH'.
  
! 'IDENTIFIER_TYPENAME_P'
       This predicate holds if the identifier represents the name of a
!      user-defined conversion operator.  In this case, the 'TREE_TYPE' of
!      the 'IDENTIFIER_NODE' holds the type to which the conversion
       operator converts.
  
  
--- 10710,10746 ----
  10.2.2 Identifiers
  ------------------
  
! An â€˜IDENTIFIER_NODEâ€™ represents a slightly more general concept than the
  standard C or C++ concept of identifier.  In particular, an
! â€˜IDENTIFIER_NODEâ€™ may contain a â€˜$â€™, or other extraordinary characters.
  
!  There are never two distinct â€˜IDENTIFIER_NODEâ€™s representing the same
  identifier.  Therefore, you may use pointer equality to compare
! â€˜IDENTIFIER_NODEâ€™s, rather than using a routine like â€˜strcmpâ€™.  Use
! â€˜get_identifierâ€™ to obtain the unique â€˜IDENTIFIER_NODEâ€™ for a supplied
  string.
  
   You can use the following macros to access identifiers:
! â€˜IDENTIFIER_POINTERâ€™
!      The string represented by the identifier, represented as a â€˜char*â€™.
!      This string is always â€˜NULâ€™-terminated, and contains no embedded
!      â€˜NULâ€™ characters.
  
! â€˜IDENTIFIER_LENGTHâ€™
!      The length of the string returned by â€˜IDENTIFIER_POINTERâ€™, not
!      including the trailing â€˜NULâ€™.  This value of â€˜IDENTIFIER_LENGTH
!      (x)â€™ is always the same as â€˜strlen (IDENTIFIER_POINTER (x))â€™.
  
! â€˜IDENTIFIER_OPNAME_Pâ€™
       This predicate holds if the identifier represents the name of an
       overloaded operator.  In this case, you should not depend on the
!      contents of either the â€˜IDENTIFIER_POINTERâ€™ or the
!      â€˜IDENTIFIER_LENGTHâ€™.
  
! â€˜IDENTIFIER_TYPENAME_Pâ€™
       This predicate holds if the identifier represents the name of a
!      user-defined conversion operator.  In this case, the â€˜TREE_TYPEâ€™ of
!      the â€˜IDENTIFIER_NODEâ€™ holds the type to which the conversion
       operator converts.
  
  
*************** File: gccint.info,  Node: Containers,  P
*** 10745,10764 ****
  -----------------
  
  Two common container data structures can be represented directly with
! tree nodes.  A 'TREE_LIST' is a singly linked list containing two trees
! per node.  These are the 'TREE_PURPOSE' and 'TREE_VALUE' of each node.
! (Often, the 'TREE_PURPOSE' contains some kind of tag, or additional
! information, while the 'TREE_VALUE' contains the majority of the
! payload.  In other cases, the 'TREE_PURPOSE' is simply 'NULL_TREE',
! while in still others both the 'TREE_PURPOSE' and 'TREE_VALUE' are of
! equal stature.)  Given one 'TREE_LIST' node, the next node is found by
! following the 'TREE_CHAIN'.  If the 'TREE_CHAIN' is 'NULL_TREE', then
  you have reached the end of the list.
  
!  A 'TREE_VEC' is a simple vector.  The 'TREE_VEC_LENGTH' is an integer
  (not a tree) giving the number of nodes in the vector.  The nodes
! themselves are accessed using the 'TREE_VEC_ELT' macro, which takes two
! arguments.  The first is the 'TREE_VEC' in question; the second is an
  integer indicating which element in the vector is desired.  The elements
  are indexed from zero.
  
--- 10750,10769 ----
  -----------------
  
  Two common container data structures can be represented directly with
! tree nodes.  A â€˜TREE_LISTâ€™ is a singly linked list containing two trees
! per node.  These are the â€˜TREE_PURPOSEâ€™ and â€˜TREE_VALUEâ€™ of each node.
! (Often, the â€˜TREE_PURPOSEâ€™ contains some kind of tag, or additional
! information, while the â€˜TREE_VALUEâ€™ contains the majority of the
! payload.  In other cases, the â€˜TREE_PURPOSEâ€™ is simply â€˜NULL_TREEâ€™,
! while in still others both the â€˜TREE_PURPOSEâ€™ and â€˜TREE_VALUEâ€™ are of
! equal stature.)  Given one â€˜TREE_LISTâ€™ node, the next node is found by
! following the â€˜TREE_CHAINâ€™.  If the â€˜TREE_CHAINâ€™ is â€˜NULL_TREEâ€™, then
  you have reached the end of the list.
  
!  A â€˜TREE_VECâ€™ is a simple vector.  The â€˜TREE_VEC_LENGTHâ€™ is an integer
  (not a tree) giving the number of nodes in the vector.  The nodes
! themselves are accessed using the â€˜TREE_VEC_ELTâ€™ macro, which takes two
! arguments.  The first is the â€˜TREE_VECâ€™ in question; the second is an
  integer indicating which element in the vector is desired.  The elements
  are indexed from zero.
  
*************** that there is exactly one tree node corr
*** 10773,11032 ****
  are often multiple nodes corresponding to the same type.
  
   For the most part, different kinds of types have different tree codes.
! (For example, pointer types use a 'POINTER_TYPE' code while arrays use
! an 'ARRAY_TYPE' code.)  However, pointers to member functions use the
! 'RECORD_TYPE' code.  Therefore, when writing a 'switch' statement that
  depends on the code associated with a particular type, you should take
! care to handle pointers to member functions under the 'RECORD_TYPE' case
  label.
  
   The following functions and macros deal with cv-qualification of types:
! 'TYPE_MAIN_VARIANT'
       This macro returns the unqualified version of a type.  It may be
       applied to an unqualified type, but it is not always the identity
       function in that case.
  
   A few other macros and functions are usable with all types:
! 'TYPE_SIZE'
       The number of bits required to represent the type, represented as
!      an 'INTEGER_CST'.  For an incomplete type, 'TYPE_SIZE' will be
!      'NULL_TREE'.
  
! 'TYPE_ALIGN'
!      The alignment of the type, in bits, represented as an 'int'.
  
! 'TYPE_NAME'
!      This macro returns a declaration (in the form of a 'TYPE_DECL') for
!      the type.  (Note this macro does _not_ return an 'IDENTIFIER_NODE',
       as you might expect, given its name!)  You can look at the
!      'DECL_NAME' of the 'TYPE_DECL' to obtain the actual name of the
!      type.  The 'TYPE_NAME' will be 'NULL_TREE' for a type that is not a
       built-in type, the result of a typedef, or a named class type.
  
! 'TYPE_CANONICAL'
       This macro returns the "canonical" type for the given type node.
       Canonical types are used to improve performance in the C++ and
       Objective-C++ front ends by allowing efficient comparison between
!      two type nodes in 'same_type_p': if the 'TYPE_CANONICAL' values of
       the types are equal, the types are equivalent; otherwise, the types
       are not equivalent.  The notion of equivalence for canonical types
       is the same as the notion of type equivalence in the language
       itself.  For instance,
  
!      When 'TYPE_CANONICAL' is 'NULL_TREE', there is no canonical type
       for the given type node.  In this case, comparison between this
       type and any other type requires the compiler to perform a deep,
       "structural" comparison to see if the two type nodes have the same
       form and properties.
  
       The canonical type for a node is always the most fundamental type
!      in the equivalence class of types.  For instance, 'int' is its own
!      canonical type.  A typedef 'I' of 'int' will have 'int' as its
!      canonical type.  Similarly, 'I*' and a typedef 'IP' (defined to
!      'I*') will has 'int*' as their canonical type.  When building a new
!      type node, be sure to set 'TYPE_CANONICAL' to the appropriate
       canonical type.  If the new type is a compound type (built from
       other types), and any of those other types require structural
!      equality, use 'SET_TYPE_STRUCTURAL_EQUALITY' to ensure that the new
       type also requires structural equality.  Finally, if for some
!      reason you cannot guarantee that 'TYPE_CANONICAL' will point to the
!      canonical type, use 'SET_TYPE_STRUCTURAL_EQUALITY' to make sure
       that the new type-and any type constructed based on it-requires
       structural equality.  If you suspect that the canonical type system
!      is miscomparing types, pass '--param verify-canonical-types=1' to
!      the compiler or configure with '--enable-checking' to force the
       compiler to verify its canonical-type comparisons against the
       structural comparisons; the compiler will then print any warnings
       if the canonical types miscompare.
  
! 'TYPE_STRUCTURAL_EQUALITY_P'
       This predicate holds when the node requires structural equality
!      checks, e.g., when 'TYPE_CANONICAL' is 'NULL_TREE'.
  
! 'SET_TYPE_STRUCTURAL_EQUALITY'
       This macro states that the type node it is given requires
!      structural equality checks, e.g., it sets 'TYPE_CANONICAL' to
!      'NULL_TREE'.
  
! 'same_type_p'
       This predicate takes two types as input, and holds if they are the
!      same type.  For example, if one type is a 'typedef' for the other,
!      or both are 'typedef's for the same type.  This predicate also
       holds if the two trees given as input are simply copies of one
       another; i.e., there is no difference between them at the source
       level, but, for whatever reason, a duplicate has been made in the
!      representation.  You should never use '==' (pointer equality) to
!      compare types; always use 'same_type_p' instead.
  
   Detailed below are the various kinds of types, and the macros that can
  be used to access them.  Although other kinds of types are used
  elsewhere in G++, the types described here are the only ones that you
  will encounter while examining the intermediate representation.
  
! 'VOID_TYPE'
!      Used to represent the 'void' type.
  
! 'INTEGER_TYPE'
!      Used to represent the various integral types, including 'char',
!      'short', 'int', 'long', and 'long long'.  This code is not used for
!      enumeration types, nor for the 'bool' type.  The 'TYPE_PRECISION'
       is the number of bits used in the representation, represented as an
!      'unsigned int'.  (Note that in the general case this is not the
!      same value as 'TYPE_SIZE'; suppose that there were a 24-bit integer
       type, but that alignment requirements for the ABI required 32-bit
!      alignment.  Then, 'TYPE_SIZE' would be an 'INTEGER_CST' for 32,
!      while 'TYPE_PRECISION' would be 24.)  The integer type is unsigned
!      if 'TYPE_UNSIGNED' holds; otherwise, it is signed.
  
!      The 'TYPE_MIN_VALUE' is an 'INTEGER_CST' for the smallest integer
       that may be represented by this type.  Similarly, the
!      'TYPE_MAX_VALUE' is an 'INTEGER_CST' for the largest integer that
       may be represented by this type.
  
! 'BITINT_TYPE'
!      Used to represent the bit-precise integer types, '_BitInt(N)'.
!      These types are similar to 'INTEGER_TYPE', but can have arbitrary
       user selected precisions and do or can have different alignment,
       function argument and return value passing conventions.  Larger
!      BITINT_TYPEs can have 'BLKmode' 'TYPE_MODE' and need to be lowered
       by a special BITINT_TYPE lowering pass.
  
! 'REAL_TYPE'
!      Used to represent the 'float', 'double', and 'long double' types.
       The number of bits in the floating-point representation is given by
!      'TYPE_PRECISION', as in the 'INTEGER_TYPE' case.
  
! 'FIXED_POINT_TYPE'
!      Used to represent the 'short _Fract', '_Fract', 'long _Fract',
!      'long long _Fract', 'short _Accum', '_Accum', 'long _Accum', and
!      'long long _Accum' types.  The number of bits in the fixed-point
!      representation is given by 'TYPE_PRECISION', as in the
!      'INTEGER_TYPE' case.  There may be padding bits, fractional bits
       and integral bits.  The number of fractional bits is given by
!      'TYPE_FBIT', and the number of integral bits is given by
!      'TYPE_IBIT'.  The fixed-point type is unsigned if 'TYPE_UNSIGNED'
       holds; otherwise, it is signed.  The fixed-point type is saturating
!      if 'TYPE_SATURATING' holds; otherwise, it is not saturating.
  
! 'COMPLEX_TYPE'
!      Used to represent GCC built-in '__complex__' data types.  The
!      'TREE_TYPE' is the type of the real and imaginary parts.
  
! 'ENUMERAL_TYPE'
!      Used to represent an enumeration type.  The 'TYPE_PRECISION' gives
!      (as an 'int'), the number of bits used to represent the type.  If
!      there are no negative enumeration constants, 'TYPE_UNSIGNED' will
       hold.  The minimum and maximum enumeration constants may be
!      obtained with 'TYPE_MIN_VALUE' and 'TYPE_MAX_VALUE', respectively;
!      each of these macros returns an 'INTEGER_CST'.
  
       The actual enumeration constants themselves may be obtained by
!      looking at the 'TYPE_VALUES'.  This macro will return a
!      'TREE_LIST', containing the constants.  The 'TREE_PURPOSE' of each
!      node will be an 'IDENTIFIER_NODE' giving the name of the constant;
!      the 'TREE_VALUE' will be an 'INTEGER_CST' giving the value assigned
       to that constant.  These constants will appear in the order in
!      which they were declared.  The 'TREE_TYPE' of each of these
       constants will be the type of enumeration type itself.
  
! 'OPAQUE_TYPE'
!      Used for things that have a 'MODE_OPAQUE' mode class in the
       backend.  Opaque types have a size and precision, and can be held
       in memory or registers.  They are used when we do not want the
       compiler to make assumptions about the availability of other
       operations as would happen with integer types.
  
! 'BOOLEAN_TYPE'
!      Used to represent the 'bool' type.
  
! 'POINTER_TYPE'
       Used to represent pointer types, and pointer to data member types.
!      The 'TREE_TYPE' gives the type to which this type points.
  
! 'REFERENCE_TYPE'
!      Used to represent reference types.  The 'TREE_TYPE' gives the type
       to which this type refers.
  
! 'FUNCTION_TYPE'
       Used to represent the type of non-member functions and of static
!      member functions.  The 'TREE_TYPE' gives the return type of the
!      function.  The 'TYPE_ARG_TYPES' are a 'TREE_LIST' of the argument
!      types.  The 'TREE_VALUE' of each node in this list is the type of
!      the corresponding argument; the 'TREE_PURPOSE' is an expression for
       the default argument value, if any.  If the last node in the list
!      is 'void_list_node' (a 'TREE_LIST' node whose 'TREE_VALUE' is the
!      'void_type_node'), then functions of this type do not take variable
       arguments.  Otherwise, they do take a variable number of arguments.
  
!      Note that in C (but not in C++) a function declared like 'void f()'
       is an unprototyped function taking a variable number of arguments;
!      the 'TYPE_ARG_TYPES' of such a function will be 'NULL'.
  
! 'METHOD_TYPE'
       Used to represent the type of a non-static member function.  Like a
!      'FUNCTION_TYPE', the return type is given by the 'TREE_TYPE'.  The
!      type of '*this', i.e., the class of which functions of this type
!      are a member, is given by the 'TYPE_METHOD_BASETYPE'.  The
!      'TYPE_ARG_TYPES' is the parameter list, as for a 'FUNCTION_TYPE',
!      and includes the 'this' argument.
  
! 'ARRAY_TYPE'
!      Used to represent array types.  The 'TREE_TYPE' gives the type of
       the elements in the array.  If the array-bound is present in the
!      type, the 'TYPE_DOMAIN' is an 'INTEGER_TYPE' whose 'TYPE_MIN_VALUE'
!      and 'TYPE_MAX_VALUE' will be the lower and upper bounds of the
!      array, respectively.  The 'TYPE_MIN_VALUE' will always be an
!      'INTEGER_CST' for zero, while the 'TYPE_MAX_VALUE' will be one less
       than the number of elements in the array, i.e., the highest value
       which may be used to index an element in the array.
  
! 'RECORD_TYPE'
!      Used to represent 'struct' and 'class' types, as well as pointers
       to member functions and similar constructs in other languages.
!      'TYPE_FIELDS' contains the items contained in this type, each of
!      which can be a 'FIELD_DECL', 'VAR_DECL', 'CONST_DECL', or
!      'TYPE_DECL'.  You may not make any assumptions about the ordering
       of the fields in the type or whether one or more of them overlap.
  
! 'UNION_TYPE'
!      Used to represent 'union' types.  Similar to 'RECORD_TYPE' except
!      that all 'FIELD_DECL' nodes in 'TYPE_FIELD' start at bit position
       zero.
  
! 'QUAL_UNION_TYPE'
       Used to represent part of a variant record in Ada.  Similar to
!      'UNION_TYPE' except that each 'FIELD_DECL' has a 'DECL_QUALIFIER'
       field, which contains a boolean expression that indicates whether
       the field is present in the object.  The type will only have one
!      field, so each field's 'DECL_QUALIFIER' is only evaluated if none
!      of the expressions in the previous fields in 'TYPE_FIELDS' are
       nonzero.  Normally these expressions will reference a field in the
!      outer object using a 'PLACEHOLDER_EXPR'.
  
! 'LANG_TYPE'
       This node is used to represent a language-specific type.  The front
       end must handle it.
  
! 'OFFSET_TYPE'
       This node is used to represent a pointer-to-data member.  For a
!      data member 'X::m' the 'TYPE_OFFSET_BASETYPE' is 'X' and the
!      'TREE_TYPE' is the type of 'm'.
  
   There are variables whose values represent some of the basic types.
  These include:
! 'void_type_node'
!      A node for 'void'.
  
! 'integer_type_node'
!      A node for 'int'.
  
! 'unsigned_type_node.'
!      A node for 'unsigned int'.
  
! 'char_type_node.'
!      A node for 'char'.
  It may sometimes be useful to compare one of these variables with a type
! in hand, using 'same_type_p'.
  
  
  File: gccint.info,  Node: Declarations,  Next: Attributes,  Prev: Types,  Up: GENERIC
--- 10778,11037 ----
  are often multiple nodes corresponding to the same type.
  
   For the most part, different kinds of types have different tree codes.
! (For example, pointer types use a â€˜POINTER_TYPEâ€™ code while arrays use
! an â€˜ARRAY_TYPEâ€™ code.)  However, pointers to member functions use the
! â€˜RECORD_TYPEâ€™ code.  Therefore, when writing a â€˜switchâ€™ statement that
  depends on the code associated with a particular type, you should take
! care to handle pointers to member functions under the â€˜RECORD_TYPEâ€™ case
  label.
  
   The following functions and macros deal with cv-qualification of types:
! â€˜TYPE_MAIN_VARIANTâ€™
       This macro returns the unqualified version of a type.  It may be
       applied to an unqualified type, but it is not always the identity
       function in that case.
  
   A few other macros and functions are usable with all types:
! â€˜TYPE_SIZEâ€™
       The number of bits required to represent the type, represented as
!      an â€˜INTEGER_CSTâ€™.  For an incomplete type, â€˜TYPE_SIZEâ€™ will be
!      â€˜NULL_TREEâ€™.
  
! â€˜TYPE_ALIGNâ€™
!      The alignment of the type, in bits, represented as an â€˜intâ€™.
  
! â€˜TYPE_NAMEâ€™
!      This macro returns a declaration (in the form of a â€˜TYPE_DECLâ€™) for
!      the type.  (Note this macro does _not_ return an â€˜IDENTIFIER_NODEâ€™,
       as you might expect, given its name!)  You can look at the
!      â€˜DECL_NAMEâ€™ of the â€˜TYPE_DECLâ€™ to obtain the actual name of the
!      type.  The â€˜TYPE_NAMEâ€™ will be â€˜NULL_TREEâ€™ for a type that is not a
       built-in type, the result of a typedef, or a named class type.
  
! â€˜TYPE_CANONICALâ€™
       This macro returns the "canonical" type for the given type node.
       Canonical types are used to improve performance in the C++ and
       Objective-C++ front ends by allowing efficient comparison between
!      two type nodes in â€˜same_type_pâ€™: if the â€˜TYPE_CANONICALâ€™ values of
       the types are equal, the types are equivalent; otherwise, the types
       are not equivalent.  The notion of equivalence for canonical types
       is the same as the notion of type equivalence in the language
       itself.  For instance,
  
!      When â€˜TYPE_CANONICALâ€™ is â€˜NULL_TREEâ€™, there is no canonical type
       for the given type node.  In this case, comparison between this
       type and any other type requires the compiler to perform a deep,
       "structural" comparison to see if the two type nodes have the same
       form and properties.
  
       The canonical type for a node is always the most fundamental type
!      in the equivalence class of types.  For instance, â€˜intâ€™ is its own
!      canonical type.  A typedef â€˜Iâ€™ of â€˜intâ€™ will have â€˜intâ€™ as its
!      canonical type.  Similarly, â€˜I*â€™ and a typedef â€˜IPâ€™ (defined to
!      â€˜I*â€™) will has â€˜int*â€™ as their canonical type.  When building a new
!      type node, be sure to set â€˜TYPE_CANONICALâ€™ to the appropriate
       canonical type.  If the new type is a compound type (built from
       other types), and any of those other types require structural
!      equality, use â€˜SET_TYPE_STRUCTURAL_EQUALITYâ€™ to ensure that the new
       type also requires structural equality.  Finally, if for some
!      reason you cannot guarantee that â€˜TYPE_CANONICALâ€™ will point to the
!      canonical type, use â€˜SET_TYPE_STRUCTURAL_EQUALITYâ€™ to make sure
       that the new type-and any type constructed based on it-requires
       structural equality.  If you suspect that the canonical type system
!      is miscomparing types, pass â€˜--param verify-canonical-types=1â€™ to
!      the compiler or configure with â€˜--enable-checkingâ€™ to force the
       compiler to verify its canonical-type comparisons against the
       structural comparisons; the compiler will then print any warnings
       if the canonical types miscompare.
  
! â€˜TYPE_STRUCTURAL_EQUALITY_Pâ€™
       This predicate holds when the node requires structural equality
!      checks, e.g., when â€˜TYPE_CANONICALâ€™ is â€˜NULL_TREEâ€™.
  
! â€˜SET_TYPE_STRUCTURAL_EQUALITYâ€™
       This macro states that the type node it is given requires
!      structural equality checks, e.g., it sets â€˜TYPE_CANONICALâ€™ to
!      â€˜NULL_TREEâ€™.
  
! â€˜same_type_pâ€™
       This predicate takes two types as input, and holds if they are the
!      same type.  For example, if one type is a â€˜typedefâ€™ for the other,
!      or both are â€˜typedefâ€™s for the same type.  This predicate also
       holds if the two trees given as input are simply copies of one
       another; i.e., there is no difference between them at the source
       level, but, for whatever reason, a duplicate has been made in the
!      representation.  You should never use â€˜==â€™ (pointer equality) to
!      compare types; always use â€˜same_type_pâ€™ instead.
  
   Detailed below are the various kinds of types, and the macros that can
  be used to access them.  Although other kinds of types are used
  elsewhere in G++, the types described here are the only ones that you
  will encounter while examining the intermediate representation.
  
! â€˜VOID_TYPEâ€™
!      Used to represent the â€˜voidâ€™ type.
  
! â€˜INTEGER_TYPEâ€™
!      Used to represent the various integral types, including â€˜charâ€™,
!      â€˜shortâ€™, â€˜intâ€™, â€˜longâ€™, and â€˜long longâ€™.  This code is not used for
!      enumeration types, nor for the â€˜boolâ€™ type.  The â€˜TYPE_PRECISIONâ€™
       is the number of bits used in the representation, represented as an
!      â€˜unsigned intâ€™.  (Note that in the general case this is not the
!      same value as â€˜TYPE_SIZEâ€™; suppose that there were a 24-bit integer
       type, but that alignment requirements for the ABI required 32-bit
!      alignment.  Then, â€˜TYPE_SIZEâ€™ would be an â€˜INTEGER_CSTâ€™ for 32,
!      while â€˜TYPE_PRECISIONâ€™ would be 24.)  The integer type is unsigned
!      if â€˜TYPE_UNSIGNEDâ€™ holds; otherwise, it is signed.
  
!      The â€˜TYPE_MIN_VALUEâ€™ is an â€˜INTEGER_CSTâ€™ for the smallest integer
       that may be represented by this type.  Similarly, the
!      â€˜TYPE_MAX_VALUEâ€™ is an â€˜INTEGER_CSTâ€™ for the largest integer that
       may be represented by this type.
  
! â€˜BITINT_TYPEâ€™
!      Used to represent the bit-precise integer types, â€˜_BitInt(N)â€™.
!      These types are similar to â€˜INTEGER_TYPEâ€™, but can have arbitrary
       user selected precisions and do or can have different alignment,
       function argument and return value passing conventions.  Larger
!      BITINT_TYPEs can have â€˜BLKmodeâ€™ â€˜TYPE_MODEâ€™ and need to be lowered
       by a special BITINT_TYPE lowering pass.
  
! â€˜REAL_TYPEâ€™
!      Used to represent the â€˜floatâ€™, â€˜doubleâ€™, and â€˜long doubleâ€™ types.
       The number of bits in the floating-point representation is given by
!      â€˜TYPE_PRECISIONâ€™, as in the â€˜INTEGER_TYPEâ€™ case.
  
! â€˜FIXED_POINT_TYPEâ€™
!      Used to represent the â€˜short _Fractâ€™, â€˜_Fractâ€™, â€˜long _Fractâ€™,
!      â€˜long long _Fractâ€™, â€˜short _Accumâ€™, â€˜_Accumâ€™, â€˜long _Accumâ€™, and
!      â€˜long long _Accumâ€™ types.  The number of bits in the fixed-point
!      representation is given by â€˜TYPE_PRECISIONâ€™, as in the
!      â€˜INTEGER_TYPEâ€™ case.  There may be padding bits, fractional bits
       and integral bits.  The number of fractional bits is given by
!      â€˜TYPE_FBITâ€™, and the number of integral bits is given by
!      â€˜TYPE_IBITâ€™.  The fixed-point type is unsigned if â€˜TYPE_UNSIGNEDâ€™
       holds; otherwise, it is signed.  The fixed-point type is saturating
!      if â€˜TYPE_SATURATINGâ€™ holds; otherwise, it is not saturating.
  
! â€˜COMPLEX_TYPEâ€™
!      Used to represent GCC built-in â€˜__complex__â€™ data types.  The
!      â€˜TREE_TYPEâ€™ is the type of the real and imaginary parts.
  
! â€˜ENUMERAL_TYPEâ€™
!      Used to represent an enumeration type.  The â€˜TYPE_PRECISIONâ€™ gives
!      (as an â€˜intâ€™), the number of bits used to represent the type.  If
!      there are no negative enumeration constants, â€˜TYPE_UNSIGNEDâ€™ will
       hold.  The minimum and maximum enumeration constants may be
!      obtained with â€˜TYPE_MIN_VALUEâ€™ and â€˜TYPE_MAX_VALUEâ€™, respectively;
!      each of these macros returns an â€˜INTEGER_CSTâ€™.
  
       The actual enumeration constants themselves may be obtained by
!      looking at the â€˜TYPE_VALUESâ€™.  This macro will return a
!      â€˜TREE_LISTâ€™, containing the constants.  The â€˜TREE_PURPOSEâ€™ of each
!      node will be an â€˜IDENTIFIER_NODEâ€™ giving the name of the constant;
!      the â€˜TREE_VALUEâ€™ will be an â€˜INTEGER_CSTâ€™ giving the value assigned
       to that constant.  These constants will appear in the order in
!      which they were declared.  The â€˜TREE_TYPEâ€™ of each of these
       constants will be the type of enumeration type itself.
  
! â€˜OPAQUE_TYPEâ€™
!      Used for things that have a â€˜MODE_OPAQUEâ€™ mode class in the
       backend.  Opaque types have a size and precision, and can be held
       in memory or registers.  They are used when we do not want the
       compiler to make assumptions about the availability of other
       operations as would happen with integer types.
  
! â€˜BOOLEAN_TYPEâ€™
!      Used to represent the â€˜boolâ€™ type.
  
! â€˜POINTER_TYPEâ€™
       Used to represent pointer types, and pointer to data member types.
!      The â€˜TREE_TYPEâ€™ gives the type to which this type points.
  
! â€˜REFERENCE_TYPEâ€™
!      Used to represent reference types.  The â€˜TREE_TYPEâ€™ gives the type
       to which this type refers.
  
! â€˜FUNCTION_TYPEâ€™
       Used to represent the type of non-member functions and of static
!      member functions.  The â€˜TREE_TYPEâ€™ gives the return type of the
!      function.  The â€˜TYPE_ARG_TYPESâ€™ are a â€˜TREE_LISTâ€™ of the argument
!      types.  The â€˜TREE_VALUEâ€™ of each node in this list is the type of
!      the corresponding argument; the â€˜TREE_PURPOSEâ€™ is an expression for
       the default argument value, if any.  If the last node in the list
!      is â€˜void_list_nodeâ€™ (a â€˜TREE_LISTâ€™ node whose â€˜TREE_VALUEâ€™ is the
!      â€˜void_type_nodeâ€™), then functions of this type do not take variable
       arguments.  Otherwise, they do take a variable number of arguments.
  
!      Note that in C (but not in C++) a function declared like â€˜void f()â€™
       is an unprototyped function taking a variable number of arguments;
!      the â€˜TYPE_ARG_TYPESâ€™ of such a function will be â€˜NULLâ€™.
  
! â€˜METHOD_TYPEâ€™
       Used to represent the type of a non-static member function.  Like a
!      â€˜FUNCTION_TYPEâ€™, the return type is given by the â€˜TREE_TYPEâ€™.  The
!      type of â€˜*thisâ€™, i.e., the class of which functions of this type
!      are a member, is given by the â€˜TYPE_METHOD_BASETYPEâ€™.  The
!      â€˜TYPE_ARG_TYPESâ€™ is the parameter list, as for a â€˜FUNCTION_TYPEâ€™,
!      and includes the â€˜thisâ€™ argument.
  
! â€˜ARRAY_TYPEâ€™
!      Used to represent array types.  The â€˜TREE_TYPEâ€™ gives the type of
       the elements in the array.  If the array-bound is present in the
!      type, the â€˜TYPE_DOMAINâ€™ is an â€˜INTEGER_TYPEâ€™ whose â€˜TYPE_MIN_VALUEâ€™
!      and â€˜TYPE_MAX_VALUEâ€™ will be the lower and upper bounds of the
!      array, respectively.  The â€˜TYPE_MIN_VALUEâ€™ will always be an
!      â€˜INTEGER_CSTâ€™ for zero, while the â€˜TYPE_MAX_VALUEâ€™ will be one less
       than the number of elements in the array, i.e., the highest value
       which may be used to index an element in the array.
  
! â€˜RECORD_TYPEâ€™
!      Used to represent â€˜structâ€™ and â€˜classâ€™ types, as well as pointers
       to member functions and similar constructs in other languages.
!      â€˜TYPE_FIELDSâ€™ contains the items contained in this type, each of
!      which can be a â€˜FIELD_DECLâ€™, â€˜VAR_DECLâ€™, â€˜CONST_DECLâ€™, or
!      â€˜TYPE_DECLâ€™.  You may not make any assumptions about the ordering
       of the fields in the type or whether one or more of them overlap.
  
! â€˜UNION_TYPEâ€™
!      Used to represent â€˜unionâ€™ types.  Similar to â€˜RECORD_TYPEâ€™ except
!      that all â€˜FIELD_DECLâ€™ nodes in â€˜TYPE_FIELDâ€™ start at bit position
       zero.
  
! â€˜QUAL_UNION_TYPEâ€™
       Used to represent part of a variant record in Ada.  Similar to
!      â€˜UNION_TYPEâ€™ except that each â€˜FIELD_DECLâ€™ has a â€˜DECL_QUALIFIERâ€™
       field, which contains a boolean expression that indicates whether
       the field is present in the object.  The type will only have one
!      field, so each field's â€˜DECL_QUALIFIERâ€™ is only evaluated if none
!      of the expressions in the previous fields in â€˜TYPE_FIELDSâ€™ are
       nonzero.  Normally these expressions will reference a field in the
!      outer object using a â€˜PLACEHOLDER_EXPRâ€™.
  
! â€˜LANG_TYPEâ€™
       This node is used to represent a language-specific type.  The front
       end must handle it.
  
! â€˜OFFSET_TYPEâ€™
       This node is used to represent a pointer-to-data member.  For a
!      data member â€˜X::mâ€™ the â€˜TYPE_OFFSET_BASETYPEâ€™ is â€˜Xâ€™ and the
!      â€˜TREE_TYPEâ€™ is the type of â€˜mâ€™.
  
   There are variables whose values represent some of the basic types.
  These include:
! â€˜void_type_nodeâ€™
!      A node for â€˜voidâ€™.
  
! â€˜integer_type_nodeâ€™
!      A node for â€˜intâ€™.
  
! â€˜unsigned_type_node.â€™
!      A node for â€˜unsigned intâ€™.
  
! â€˜char_type_node.â€™
!      A node for â€˜charâ€™.
  It may sometimes be useful to compare one of these variables with a type
! in hand, using â€˜same_type_pâ€™.
  
  
  File: gccint.info,  Node: Declarations,  Next: Attributes,  Prev: Types,  Up: GENERIC
*************** File: gccint.info,  Node: Declarations,
*** 11036,11042 ****
  
  This section covers the various kinds of declarations that appear in the
  internal representation, except for declarations of functions
! (represented by 'FUNCTION_DECL' nodes), which are described in *note
  Functions::.
  
  * Menu:
--- 11041,11047 ----
  
  This section covers the various kinds of declarations that appear in the
  internal representation, except for declarations of functions
! (represented by â€˜FUNCTION_DECLâ€™ nodes), which are described in *note
  Functions::.
  
  * Menu:
*************** File: gccint.info,  Node: Working with d
*** 11052,11174 ****
  --------------------------------
  
  Some macros can be used with any kind of declaration.  These include:
! 'DECL_NAME'
!      This macro returns an 'IDENTIFIER_NODE' giving the name of the
       entity.
  
! 'TREE_TYPE'
       This macro returns the type of the entity declared.
  
! 'EXPR_FILENAME'
       This macro returns the name of the file in which the entity was
!      declared, as a 'char*'.  For an entity declared implicitly by the
!      compiler (like '__builtin_memcpy'), this will be the string
!      '"<internal>"'.
  
! 'EXPR_LINENO'
       This macro returns the line number at which the entity was
!      declared, as an 'int'.
  
! 'DECL_ARTIFICIAL'
       This predicate holds if the declaration was implicitly generated by
       the compiler.  For example, this predicate will hold of an
!      implicitly declared member function, or of the 'TYPE_DECL'
       implicitly generated for a class type.  Recall that in C++ code
       like:
            struct S {};
       is roughly equivalent to C code like:
            struct S {};
            typedef struct S S;
!      The implicitly generated 'typedef' declaration is represented by a
!      'TYPE_DECL' for which 'DECL_ARTIFICIAL' holds.
  
   The various kinds of declarations include:
! 'LABEL_DECL'
       These nodes are used to represent labels in function bodies.  For
       more information, see *note Functions::.  These nodes only appear
       in block scopes.
  
! 'CONST_DECL'
       These nodes are used to represent enumeration constants.  The value
!      of the constant is given by 'DECL_INITIAL' which will be an
!      'INTEGER_CST' with the same type as the 'TREE_TYPE' of the
!      'CONST_DECL', i.e., an 'ENUMERAL_TYPE'.
  
! 'RESULT_DECL'
       These nodes represent the value returned by a function.  When a
!      value is assigned to a 'RESULT_DECL', that indicates that the value
       should be returned, via bitwise copy, by the function.  You can use
!      'DECL_SIZE' and 'DECL_ALIGN' on a 'RESULT_DECL', just as with a
!      'VAR_DECL'.
  
! 'TYPE_DECL'
!      These nodes represent 'typedef' declarations.  The 'TREE_TYPE' is
!      the type declared to have the name given by 'DECL_NAME'.  In some
       cases, there is no associated name.
  
! 'VAR_DECL'
       These nodes represent variables with namespace or block scope, as
!      well as static data members.  The 'DECL_SIZE' and 'DECL_ALIGN' are
!      analogous to 'TYPE_SIZE' and 'TYPE_ALIGN'.  For a declaration, you
!      should always use the 'DECL_SIZE' and 'DECL_ALIGN' rather than the
!      'TYPE_SIZE' and 'TYPE_ALIGN' given by the 'TREE_TYPE', since
       special attributes may have been applied to the variable to give it
       a particular size and alignment.  You may use the predicates
!      'DECL_THIS_STATIC' or 'DECL_THIS_EXTERN' to test whether the
!      storage class specifiers 'static' or 'extern' were used to declare
       a variable.
  
       If this variable is initialized (but does not require a
!      constructor), the 'DECL_INITIAL' will be an expression for the
       initializer.  The initializer should be evaluated, and a bitwise
!      copy into the variable performed.  If the 'DECL_INITIAL' is the
!      'error_mark_node', there is an initializer, but it is given by an
       explicit statement later in the code; no bitwise copy is required.
  
       GCC provides an extension that allows either automatic variables,
       or global variables, to be placed in particular registers.  This
!      extension is being used for a particular 'VAR_DECL' if
!      'DECL_REGISTER' holds for the 'VAR_DECL', and if
!      'DECL_ASSEMBLER_NAME' is not equal to 'DECL_NAME'.  In that case,
!      'DECL_ASSEMBLER_NAME' is the name of the register into which the
       variable will be placed.
  
! 'PARM_DECL'
       Used to represent a parameter to a function.  Treat these nodes
!      similarly to 'VAR_DECL' nodes.  These nodes only appear in the
!      'DECL_ARGUMENTS' for a 'FUNCTION_DECL'.
  
!      The 'DECL_ARG_TYPE' for a 'PARM_DECL' is the type that will
       actually be used when a value is passed to this function.  It may
!      be a wider type than the 'TREE_TYPE' of the parameter; for example,
!      the ordinary type might be 'short' while the 'DECL_ARG_TYPE' is
!      'int'.
  
! 'DEBUG_EXPR_DECL'
       Used to represent an anonymous debug-information temporary created
       to hold an expression as it is optimized away, so that its value
       can be referenced in debug bind statements.
  
! 'FIELD_DECL'
!      These nodes represent non-static data members.  The 'DECL_SIZE' and
!      'DECL_ALIGN' behave as for 'VAR_DECL' nodes.  The position of the
       field within the parent record is specified by a combination of
!      three attributes.  'DECL_FIELD_OFFSET' is the position, counting in
!      bytes, of the 'DECL_OFFSET_ALIGN'-bit sized word containing the bit
       of the field closest to the beginning of the structure.
!      'DECL_FIELD_BIT_OFFSET' is the bit offset of the first bit of the
       field within this word; this may be nonzero even for fields that
!      are not bit-fields, since 'DECL_OFFSET_ALIGN' may be greater than
       the natural alignment of the field's type.
  
!      If 'DECL_C_BIT_FIELD' holds, this field is a bit-field.  In a
!      bit-field, 'DECL_BIT_FIELD_TYPE' also contains the type that was
       originally specified for it, while DECL_TYPE may be a modified type
       with lesser precision, according to the size of the bit field.
  
! 'NAMESPACE_DECL'
       Namespaces provide a name hierarchy for other declarations.  They
!      appear in the 'DECL_CONTEXT' of other '_DECL' nodes.
  
  
  File: gccint.info,  Node: Internal structure,  Prev: Working with declarations,  Up: Declarations
--- 11057,11179 ----
  --------------------------------
  
  Some macros can be used with any kind of declaration.  These include:
! â€˜DECL_NAMEâ€™
!      This macro returns an â€˜IDENTIFIER_NODEâ€™ giving the name of the
       entity.
  
! â€˜TREE_TYPEâ€™
       This macro returns the type of the entity declared.
  
! â€˜EXPR_FILENAMEâ€™
       This macro returns the name of the file in which the entity was
!      declared, as a â€˜char*â€™.  For an entity declared implicitly by the
!      compiler (like â€˜__builtin_memcpyâ€™), this will be the string
!      â€˜"<internal>"â€™.
  
! â€˜EXPR_LINENOâ€™
       This macro returns the line number at which the entity was
!      declared, as an â€˜intâ€™.
  
! â€˜DECL_ARTIFICIALâ€™
       This predicate holds if the declaration was implicitly generated by
       the compiler.  For example, this predicate will hold of an
!      implicitly declared member function, or of the â€˜TYPE_DECLâ€™
       implicitly generated for a class type.  Recall that in C++ code
       like:
            struct S {};
       is roughly equivalent to C code like:
            struct S {};
            typedef struct S S;
!      The implicitly generated â€˜typedefâ€™ declaration is represented by a
!      â€˜TYPE_DECLâ€™ for which â€˜DECL_ARTIFICIALâ€™ holds.
  
   The various kinds of declarations include:
! â€˜LABEL_DECLâ€™
       These nodes are used to represent labels in function bodies.  For
       more information, see *note Functions::.  These nodes only appear
       in block scopes.
  
! â€˜CONST_DECLâ€™
       These nodes are used to represent enumeration constants.  The value
!      of the constant is given by â€˜DECL_INITIALâ€™ which will be an
!      â€˜INTEGER_CSTâ€™ with the same type as the â€˜TREE_TYPEâ€™ of the
!      â€˜CONST_DECLâ€™, i.e., an â€˜ENUMERAL_TYPEâ€™.
  
! â€˜RESULT_DECLâ€™
       These nodes represent the value returned by a function.  When a
!      value is assigned to a â€˜RESULT_DECLâ€™, that indicates that the value
       should be returned, via bitwise copy, by the function.  You can use
!      â€˜DECL_SIZEâ€™ and â€˜DECL_ALIGNâ€™ on a â€˜RESULT_DECLâ€™, just as with a
!      â€˜VAR_DECLâ€™.
  
! â€˜TYPE_DECLâ€™
!      These nodes represent â€˜typedefâ€™ declarations.  The â€˜TREE_TYPEâ€™ is
!      the type declared to have the name given by â€˜DECL_NAMEâ€™.  In some
       cases, there is no associated name.
  
! â€˜VAR_DECLâ€™
       These nodes represent variables with namespace or block scope, as
!      well as static data members.  The â€˜DECL_SIZEâ€™ and â€˜DECL_ALIGNâ€™ are
!      analogous to â€˜TYPE_SIZEâ€™ and â€˜TYPE_ALIGNâ€™.  For a declaration, you
!      should always use the â€˜DECL_SIZEâ€™ and â€˜DECL_ALIGNâ€™ rather than the
!      â€˜TYPE_SIZEâ€™ and â€˜TYPE_ALIGNâ€™ given by the â€˜TREE_TYPEâ€™, since
       special attributes may have been applied to the variable to give it
       a particular size and alignment.  You may use the predicates
!      â€˜DECL_THIS_STATICâ€™ or â€˜DECL_THIS_EXTERNâ€™ to test whether the
!      storage class specifiers â€˜staticâ€™ or â€˜externâ€™ were used to declare
       a variable.
  
       If this variable is initialized (but does not require a
!      constructor), the â€˜DECL_INITIALâ€™ will be an expression for the
       initializer.  The initializer should be evaluated, and a bitwise
!      copy into the variable performed.  If the â€˜DECL_INITIALâ€™ is the
!      â€˜error_mark_nodeâ€™, there is an initializer, but it is given by an
       explicit statement later in the code; no bitwise copy is required.
  
       GCC provides an extension that allows either automatic variables,
       or global variables, to be placed in particular registers.  This
!      extension is being used for a particular â€˜VAR_DECLâ€™ if
!      â€˜DECL_REGISTERâ€™ holds for the â€˜VAR_DECLâ€™, and if
!      â€˜DECL_ASSEMBLER_NAMEâ€™ is not equal to â€˜DECL_NAMEâ€™.  In that case,
!      â€˜DECL_ASSEMBLER_NAMEâ€™ is the name of the register into which the
       variable will be placed.
  
! â€˜PARM_DECLâ€™
       Used to represent a parameter to a function.  Treat these nodes
!      similarly to â€˜VAR_DECLâ€™ nodes.  These nodes only appear in the
!      â€˜DECL_ARGUMENTSâ€™ for a â€˜FUNCTION_DECLâ€™.
  
!      The â€˜DECL_ARG_TYPEâ€™ for a â€˜PARM_DECLâ€™ is the type that will
       actually be used when a value is passed to this function.  It may
!      be a wider type than the â€˜TREE_TYPEâ€™ of the parameter; for example,
!      the ordinary type might be â€˜shortâ€™ while the â€˜DECL_ARG_TYPEâ€™ is
!      â€˜intâ€™.
  
! â€˜DEBUG_EXPR_DECLâ€™
       Used to represent an anonymous debug-information temporary created
       to hold an expression as it is optimized away, so that its value
       can be referenced in debug bind statements.
  
! â€˜FIELD_DECLâ€™
!      These nodes represent non-static data members.  The â€˜DECL_SIZEâ€™ and
!      â€˜DECL_ALIGNâ€™ behave as for â€˜VAR_DECLâ€™ nodes.  The position of the
       field within the parent record is specified by a combination of
!      three attributes.  â€˜DECL_FIELD_OFFSETâ€™ is the position, counting in
!      bytes, of the â€˜DECL_OFFSET_ALIGNâ€™-bit sized word containing the bit
       of the field closest to the beginning of the structure.
!      â€˜DECL_FIELD_BIT_OFFSETâ€™ is the bit offset of the first bit of the
       field within this word; this may be nonzero even for fields that
!      are not bit-fields, since â€˜DECL_OFFSET_ALIGNâ€™ may be greater than
       the natural alignment of the field's type.
  
!      If â€˜DECL_C_BIT_FIELDâ€™ holds, this field is a bit-field.  In a
!      bit-field, â€˜DECL_BIT_FIELD_TYPEâ€™ also contains the type that was
       originally specified for it, while DECL_TYPE may be a modified type
       with lesser precision, according to the size of the bit field.
  
! â€˜NAMESPACE_DECLâ€™
       Namespaces provide a name hierarchy for other declarations.  They
!      appear in the â€˜DECL_CONTEXTâ€™ of other â€˜_DECLâ€™ nodes.
  
  
  File: gccint.info,  Node: Internal structure,  Prev: Working with declarations,  Up: Declarations
*************** File: gccint.info,  Node: Internal struc
*** 11176,11182 ****
  10.4.2 Internal structure
  -------------------------
  
! 'DECL' nodes are represented internally as a hierarchy of structures.
  
  * Menu:
  
--- 11181,11187 ----
  10.4.2 Internal structure
  -------------------------
  
! â€˜DECLâ€™ nodes are represented internally as a hierarchy of structures.
  
  * Menu:
  
*************** File: gccint.info,  Node: Current struct
*** 11191,11247 ****
  10.4.2.1 Current structure hierarchy
  ....................................
  
! 'struct tree_decl_minimal'
       This is the minimal structure to inherit from in order for common
!      'DECL' macros to work.  The fields it contains are a unique ID,
       source location, context, and name.
  
! 'struct tree_decl_common'
!      This structure inherits from 'struct tree_decl_minimal'.  It
!      contains fields that most 'DECL' nodes need, such as a field to
       store alignment, machine mode, size, and attributes.
  
! 'struct tree_field_decl'
!      This structure inherits from 'struct tree_decl_common'.  It is used
!      to represent 'FIELD_DECL'.
  
! 'struct tree_label_decl'
!      This structure inherits from 'struct tree_decl_common'.  It is used
!      to represent 'LABEL_DECL'.
  
! 'struct tree_translation_unit_decl'
!      This structure inherits from 'struct tree_decl_common'.  It is used
!      to represent 'TRANSLATION_UNIT_DECL'.
  
! 'struct tree_decl_with_rtl'
!      This structure inherits from 'struct tree_decl_common'.  It
       contains a field to store the low-level RTL associated with a
!      'DECL' node.
  
! 'struct tree_result_decl'
!      This structure inherits from 'struct tree_decl_with_rtl'.  It is
!      used to represent 'RESULT_DECL'.
  
! 'struct tree_const_decl'
!      This structure inherits from 'struct tree_decl_with_rtl'.  It is
!      used to represent 'CONST_DECL'.
  
! 'struct tree_parm_decl'
!      This structure inherits from 'struct tree_decl_with_rtl'.  It is
!      used to represent 'PARM_DECL'.
  
! 'struct tree_decl_with_vis'
!      This structure inherits from 'struct tree_decl_with_rtl'.  It
       contains fields necessary to store visibility information, as well
       as a section name and assembler name.
  
! 'struct tree_var_decl'
!      This structure inherits from 'struct tree_decl_with_vis'.  It is
!      used to represent 'VAR_DECL'.
  
! 'struct tree_function_decl'
!      This structure inherits from 'struct tree_decl_with_vis'.  It is
!      used to represent 'FUNCTION_DECL'.
  
  
  File: gccint.info,  Node: Adding new DECL node types,  Prev: Current structure hierarchy,  Up: Internal structure
--- 11196,11252 ----
  10.4.2.1 Current structure hierarchy
  ....................................
  
! â€˜struct tree_decl_minimalâ€™
       This is the minimal structure to inherit from in order for common
!      â€˜DECLâ€™ macros to work.  The fields it contains are a unique ID,
       source location, context, and name.
  
! â€˜struct tree_decl_commonâ€™
!      This structure inherits from â€˜struct tree_decl_minimalâ€™.  It
!      contains fields that most â€˜DECLâ€™ nodes need, such as a field to
       store alignment, machine mode, size, and attributes.
  
! â€˜struct tree_field_declâ€™
!      This structure inherits from â€˜struct tree_decl_commonâ€™.  It is used
!      to represent â€˜FIELD_DECLâ€™.
  
! â€˜struct tree_label_declâ€™
!      This structure inherits from â€˜struct tree_decl_commonâ€™.  It is used
!      to represent â€˜LABEL_DECLâ€™.
  
! â€˜struct tree_translation_unit_declâ€™
!      This structure inherits from â€˜struct tree_decl_commonâ€™.  It is used
!      to represent â€˜TRANSLATION_UNIT_DECLâ€™.
  
! â€˜struct tree_decl_with_rtlâ€™
!      This structure inherits from â€˜struct tree_decl_commonâ€™.  It
       contains a field to store the low-level RTL associated with a
!      â€˜DECLâ€™ node.
  
! â€˜struct tree_result_declâ€™
!      This structure inherits from â€˜struct tree_decl_with_rtlâ€™.  It is
!      used to represent â€˜RESULT_DECLâ€™.
  
! â€˜struct tree_const_declâ€™
!      This structure inherits from â€˜struct tree_decl_with_rtlâ€™.  It is
!      used to represent â€˜CONST_DECLâ€™.
  
! â€˜struct tree_parm_declâ€™
!      This structure inherits from â€˜struct tree_decl_with_rtlâ€™.  It is
!      used to represent â€˜PARM_DECLâ€™.
  
! â€˜struct tree_decl_with_visâ€™
!      This structure inherits from â€˜struct tree_decl_with_rtlâ€™.  It
       contains fields necessary to store visibility information, as well
       as a section name and assembler name.
  
! â€˜struct tree_var_declâ€™
!      This structure inherits from â€˜struct tree_decl_with_visâ€™.  It is
!      used to represent â€˜VAR_DECLâ€™.
  
! â€˜struct tree_function_declâ€™
!      This structure inherits from â€˜struct tree_decl_with_visâ€™.  It is
!      used to represent â€˜FUNCTION_DECLâ€™.
  
  
  File: gccint.info,  Node: Adding new DECL node types,  Prev: Current structure hierarchy,  Up: Internal structure
*************** File: gccint.info,  Node: Adding new DEC
*** 11249,11263 ****
  10.4.2.2 Adding new DECL node types
  ...................................
  
! Adding a new 'DECL' tree consists of the following steps
  
! Add a new tree code for the 'DECL' node
!      For language specific 'DECL' nodes, there is a '.def' file in each
!      frontend directory where the tree code should be added.  For 'DECL'
       nodes that are part of the middle-end, the code should be added to
!      'tree.def'.
  
! Create a new structure type for the 'DECL' node
       These structures should inherit from one of the existing structures
       in the language hierarchy by using that structure as the first
       member.
--- 11254,11268 ----
  10.4.2.2 Adding new DECL node types
  ...................................
  
! Adding a new â€˜DECLâ€™ tree consists of the following steps
  
! Add a new tree code for the â€˜DECLâ€™ node
!      For language specific â€˜DECLâ€™ nodes, there is a â€˜.defâ€™ file in each
!      frontend directory where the tree code should be added.  For â€˜DECLâ€™
       nodes that are part of the middle-end, the code should be added to
!      â€˜tree.defâ€™.
  
! Create a new structure type for the â€˜DECLâ€™ node
       These structures should inherit from one of the existing structures
       in the language hierarchy by using that structure as the first
       member.
*************** Create a new structure type for the 'DEC
*** 11267,11325 ****
               struct tree_decl_with_vis common;
            }
  
!      Would create a structure name 'tree_foo_decl' that inherits from
!      'struct tree_decl_with_vis'.
  
!      For language specific 'DECL' nodes, this new structure type should
!      go in the appropriate '.h' file.  For 'DECL' nodes that are part of
!      the middle-end, the structure type should go in 'tree.h'.
  
  Add a member to the tree structure enumerator for the node
!      For garbage collection and dynamic checking purposes, each 'DECL'
       node structure type is required to have a unique enumerator value
!      specified with it.  For language specific 'DECL' nodes, this new
!      enumerator value should go in the appropriate '.def' file.  For
!      'DECL' nodes that are part of the middle-end, the enumerator values
!      are specified in 'treestruct.def'.
  
! Update 'union tree_node'
       In order to make your new structure type usable, it must be added
!      to 'union tree_node'.  For language specific 'DECL' nodes, a new
!      entry should be added to the appropriate '.h' file of the form
              struct tree_foo_decl GTY ((tag ("TS_VAR_DECL"))) foo_decl;
!      For 'DECL' nodes that are part of the middle-end, the additional
!      member goes directly into 'union tree_node' in 'tree.h'.
  
  Update dynamic checking info
       In order to be able to check whether accessing a named portion of
!      'union tree_node' is legal, and whether a certain 'DECL' node
!      contains one of the enumerated 'DECL' node structures in the
       hierarchy, a simple lookup table is used.  This lookup table needs
       to be kept up to date with the tree structure hierarchy, or else
       checking and containment macros will fail inappropriately.
  
!      For language specific 'DECL' nodes, there is an 'init_ts' function
!      in an appropriate '.c' file, which initializes the lookup table.
!      Code setting up the table for new 'DECL' nodes should be added
!      there.  For each 'DECL' tree code and enumerator value representing
       a member of the inheritance hierarchy, the table should contain 1
       if that tree code inherits (directly or indirectly) from that
!      member.  Thus, a 'FOO_DECL' node derived from 'struct
!      decl_with_rtl', and enumerator value 'TS_FOO_DECL', would be set up
       as follows
            tree_contains_struct[FOO_DECL][TS_FOO_DECL] = 1;
            tree_contains_struct[FOO_DECL][TS_DECL_WRTL] = 1;
            tree_contains_struct[FOO_DECL][TS_DECL_COMMON] = 1;
            tree_contains_struct[FOO_DECL][TS_DECL_MINIMAL] = 1;
  
!      For 'DECL' nodes that are part of the middle-end, the setup code
!      goes into 'tree.cc'.
  
  Add macros to access any new fields and flags
  
       Each added field or flag should have a macro that is used to access
       it, that performs appropriate checking to ensure only the right
!      type of 'DECL' nodes access the field.
  
       These macros generally take the following form
            #define FOO_DECL_FIELDNAME(NODE) FOO_DECL_CHECK(NODE)->foo_decl.fieldname
--- 11272,11330 ----
               struct tree_decl_with_vis common;
            }
  
!      Would create a structure name â€˜tree_foo_declâ€™ that inherits from
!      â€˜struct tree_decl_with_visâ€™.
  
!      For language specific â€˜DECLâ€™ nodes, this new structure type should
!      go in the appropriate â€˜.hâ€™ file.  For â€˜DECLâ€™ nodes that are part of
!      the middle-end, the structure type should go in â€˜tree.hâ€™.
  
  Add a member to the tree structure enumerator for the node
!      For garbage collection and dynamic checking purposes, each â€˜DECLâ€™
       node structure type is required to have a unique enumerator value
!      specified with it.  For language specific â€˜DECLâ€™ nodes, this new
!      enumerator value should go in the appropriate â€˜.defâ€™ file.  For
!      â€˜DECLâ€™ nodes that are part of the middle-end, the enumerator values
!      are specified in â€˜treestruct.defâ€™.
  
! Update â€˜union tree_nodeâ€™
       In order to make your new structure type usable, it must be added
!      to â€˜union tree_nodeâ€™.  For language specific â€˜DECLâ€™ nodes, a new
!      entry should be added to the appropriate â€˜.hâ€™ file of the form
              struct tree_foo_decl GTY ((tag ("TS_VAR_DECL"))) foo_decl;
!      For â€˜DECLâ€™ nodes that are part of the middle-end, the additional
!      member goes directly into â€˜union tree_nodeâ€™ in â€˜tree.hâ€™.
  
  Update dynamic checking info
       In order to be able to check whether accessing a named portion of
!      â€˜union tree_nodeâ€™ is legal, and whether a certain â€˜DECLâ€™ node
!      contains one of the enumerated â€˜DECLâ€™ node structures in the
       hierarchy, a simple lookup table is used.  This lookup table needs
       to be kept up to date with the tree structure hierarchy, or else
       checking and containment macros will fail inappropriately.
  
!      For language specific â€˜DECLâ€™ nodes, there is an â€˜init_tsâ€™ function
!      in an appropriate â€˜.câ€™ file, which initializes the lookup table.
!      Code setting up the table for new â€˜DECLâ€™ nodes should be added
!      there.  For each â€˜DECLâ€™ tree code and enumerator value representing
       a member of the inheritance hierarchy, the table should contain 1
       if that tree code inherits (directly or indirectly) from that
!      member.  Thus, a â€˜FOO_DECLâ€™ node derived from â€˜struct
!      decl_with_rtlâ€™, and enumerator value â€˜TS_FOO_DECLâ€™, would be set up
       as follows
            tree_contains_struct[FOO_DECL][TS_FOO_DECL] = 1;
            tree_contains_struct[FOO_DECL][TS_DECL_WRTL] = 1;
            tree_contains_struct[FOO_DECL][TS_DECL_COMMON] = 1;
            tree_contains_struct[FOO_DECL][TS_DECL_MINIMAL] = 1;
  
!      For â€˜DECLâ€™ nodes that are part of the middle-end, the setup code
!      goes into â€˜tree.ccâ€™.
  
  Add macros to access any new fields and flags
  
       Each added field or flag should have a macro that is used to access
       it, that performs appropriate checking to ensure only the right
!      type of â€˜DECLâ€™ nodes access the field.
  
       These macros generally take the following form
            #define FOO_DECL_FIELDNAME(NODE) FOO_DECL_CHECK(NODE)->foo_decl.fieldname
*************** Add macros to access any new fields and
*** 11329,11337 ****
            #define BASE_STRUCT_FIELDNAME(NODE) \
               (BASE_STRUCT_CHECK(NODE)->base_struct.fieldname
  
!      Reading them from the generated 'all-tree.def' file (which in turn
!      includes all the 'tree.def' files), 'gencheck.cc' is used during
!      GCC's build to generate the '*_CHECK' macros for all tree codes.
  
  
  File: gccint.info,  Node: Attributes,  Next: Expression trees,  Prev: Declarations,  Up: GENERIC
--- 11334,11342 ----
            #define BASE_STRUCT_FIELDNAME(NODE) \
               (BASE_STRUCT_CHECK(NODE)->base_struct.fieldname
  
!      Reading them from the generated â€˜all-tree.defâ€™ file (which in turn
!      includes all the â€˜tree.defâ€™ files), â€˜gencheck.ccâ€™ is used during
!      GCC's build to generate the â€˜*_CHECKâ€™ macros for all tree codes.
  
  
  File: gccint.info,  Node: Attributes,  Next: Expression trees,  Prev: Declarations,  Up: GENERIC
*************** File: gccint.info,  Node: Attributes,  N
*** 11339,11352 ****
  10.5 Attributes in trees
  ========================
  
! Attributes, as specified using the '__attribute__' keyword, are
! represented internally as a 'TREE_LIST'.  The 'TREE_PURPOSE' is the name
! of the attribute, as an 'IDENTIFIER_NODE'.  The 'TREE_VALUE' is a
! 'TREE_LIST' of the arguments of the attribute, if any, or 'NULL_TREE' if
! there are no arguments; the arguments are stored as the 'TREE_VALUE' of
  successive entries in the list, and may be identifiers or expressions.
! The 'TREE_CHAIN' of the attribute is the next attribute in a list of
! attributes applying to the same declaration or type, or 'NULL_TREE' if
  there are no further attributes in the list.
  
   Attributes may be attached to declarations and to types; these
--- 11344,11357 ----
  10.5 Attributes in trees
  ========================
  
! Attributes, as specified using the â€˜__attribute__â€™ keyword, are
! represented internally as a â€˜TREE_LISTâ€™.  The â€˜TREE_PURPOSEâ€™ is the name
! of the attribute, as an â€˜IDENTIFIER_NODEâ€™.  The â€˜TREE_VALUEâ€™ is a
! â€˜TREE_LISTâ€™ of the arguments of the attribute, if any, or â€˜NULL_TREEâ€™ if
! there are no arguments; the arguments are stored as the â€˜TREE_VALUEâ€™ of
  successive entries in the list, and may be identifiers or expressions.
! The â€˜TREE_CHAINâ€™ of the attribute is the next attribute in a list of
! attributes applying to the same declaration or type, or â€˜NULL_TREEâ€™ if
  there are no further attributes in the list.
  
   Attributes may be attached to declarations and to types; these
*************** of nodes being unshared.
*** 11377,11389 ****
  
   The following macros can be used with all expression nodes:
  
! 'TREE_TYPE'
       Returns the type of the expression.  This value may not be
       precisely the same type that would be given the expression in the
       original program.
  
   In what follows, some nodes that one might expect to always have type
! 'bool' are documented to have either integral or boolean type.  At some
  point in the future, the C front end may also make use of this same
  intermediate representation, and at this point these nodes will
  certainly have integral type.  The previous sentence is not meant to
--- 11382,11394 ----
  
   The following macros can be used with all expression nodes:
  
! â€˜TREE_TYPEâ€™
       Returns the type of the expression.  This value may not be
       precisely the same type that would be given the expression in the
       original program.
  
   In what follows, some nodes that one might expect to always have type
! â€˜boolâ€™ are documented to have either integral or boolean type.  At some
  point in the future, the C front end may also make use of this same
  intermediate representation, and at this point these nodes will
  certainly have integral type.  The previous sentence is not meant to
*************** integral type.
*** 11392,11399 ****
  
   Below, we list the various kinds of expression nodes.  Except where
  noted otherwise, the operands to an expression are accessed using the
! 'TREE_OPERAND' macro.  For example, to access the first operand to a
! binary plus expression 'expr', use:
  
       TREE_OPERAND (expr, 0)
  
--- 11397,11404 ----
  
   Below, we list the various kinds of expression nodes.  Except where
  noted otherwise, the operands to an expression are accessed using the
! â€˜TREE_OPERANDâ€™ macro.  For example, to access the first operand to a
! binary plus expression â€˜exprâ€™, use:
  
       TREE_OPERAND (expr, 0)
  
*************** The table below begins with constants, m
*** 11416,11462 ****
  then proceeds to binary expressions, and concludes with various other
  kinds of expressions:
  
! 'INTEGER_CST'
       These nodes represent integer constants.  Note that the type of
!      these constants is obtained with 'TREE_TYPE'; they are not always
!      of type 'int'.  In particular, 'char' constants are represented
!      with 'INTEGER_CST' nodes.  The value of the integer constant 'e' is
       represented in an array of HOST_WIDE_INT. There are enough elements
       in the array to represent the value without taking extra elements
       for redundant 0s or -1.  The number of elements used to represent
!      'e' is available via 'TREE_INT_CST_NUNITS'.  Element 'i' can be
!      extracted by using 'TREE_INT_CST_ELT (e, i)'.  'TREE_INT_CST_LOW'
!      is a shorthand for 'TREE_INT_CST_ELT (e, 0)'.
  
!      The functions 'tree_fits_shwi_p' and 'tree_fits_uhwi_p' can be used
       to tell if the value is small enough to fit in a signed
       HOST_WIDE_INT or an unsigned HOST_WIDE_INT respectively.  The value
!      can then be extracted using 'tree_to_shwi' and 'tree_to_uhwi'.
  
! 'REAL_CST'
  
       FIXME: Talk about how to obtain representations of this constant,
       do comparisons, and so forth.
  
! 'FIXED_CST'
  
       These nodes represent fixed-point constants.  The type of these
!      constants is obtained with 'TREE_TYPE'.  'TREE_FIXED_CST_PTR'
!      points to a 'struct fixed_value'; 'TREE_FIXED_CST' returns the
!      structure itself.  'struct fixed_value' contains 'data' with the
!      size of two 'HOST_BITS_PER_WIDE_INT' and 'mode' as the associated
!      fixed-point machine mode for 'data'.
  
! 'COMPLEX_CST'
       These nodes are used to represent complex number constants, that is
!      a '__complex__' whose parts are constant nodes.  The
!      'TREE_REALPART' and 'TREE_IMAGPART' return the real and the
       imaginary parts respectively.
  
! 'VECTOR_CST'
       These nodes are used to represent vector constants.  Each vector
       constant V is treated as a specific instance of an arbitrary-length
!      sequence that itself contains 'VECTOR_CST_NPATTERNS (V)'
       interleaved patterns.  Each pattern has the form:
  
            { BASE0, BASE1, BASE1 + STEP, BASE1 + STEP * 2, ... }
--- 11421,11467 ----
  then proceeds to binary expressions, and concludes with various other
  kinds of expressions:
  
! â€˜INTEGER_CSTâ€™
       These nodes represent integer constants.  Note that the type of
!      these constants is obtained with â€˜TREE_TYPEâ€™; they are not always
!      of type â€˜intâ€™.  In particular, â€˜charâ€™ constants are represented
!      with â€˜INTEGER_CSTâ€™ nodes.  The value of the integer constant â€˜eâ€™ is
       represented in an array of HOST_WIDE_INT. There are enough elements
       in the array to represent the value without taking extra elements
       for redundant 0s or -1.  The number of elements used to represent
!      â€˜eâ€™ is available via â€˜TREE_INT_CST_NUNITSâ€™.  Element â€˜iâ€™ can be
!      extracted by using â€˜TREE_INT_CST_ELT (e, i)â€™.  â€˜TREE_INT_CST_LOWâ€™
!      is a shorthand for â€˜TREE_INT_CST_ELT (e, 0)â€™.
  
!      The functions â€˜tree_fits_shwi_pâ€™ and â€˜tree_fits_uhwi_pâ€™ can be used
       to tell if the value is small enough to fit in a signed
       HOST_WIDE_INT or an unsigned HOST_WIDE_INT respectively.  The value
!      can then be extracted using â€˜tree_to_shwiâ€™ and â€˜tree_to_uhwiâ€™.
  
! â€˜REAL_CSTâ€™
  
       FIXME: Talk about how to obtain representations of this constant,
       do comparisons, and so forth.
  
! â€˜FIXED_CSTâ€™
  
       These nodes represent fixed-point constants.  The type of these
!      constants is obtained with â€˜TREE_TYPEâ€™.  â€˜TREE_FIXED_CST_PTRâ€™
!      points to a â€˜struct fixed_valueâ€™; â€˜TREE_FIXED_CSTâ€™ returns the
!      structure itself.  â€˜struct fixed_valueâ€™ contains â€˜dataâ€™ with the
!      size of two â€˜HOST_BITS_PER_WIDE_INTâ€™ and â€˜modeâ€™ as the associated
!      fixed-point machine mode for â€˜dataâ€™.
  
! â€˜COMPLEX_CSTâ€™
       These nodes are used to represent complex number constants, that is
!      a â€˜__complex__â€™ whose parts are constant nodes.  The
!      â€˜TREE_REALPARTâ€™ and â€˜TREE_IMAGPARTâ€™ return the real and the
       imaginary parts respectively.
  
! â€˜VECTOR_CSTâ€™
       These nodes are used to represent vector constants.  Each vector
       constant V is treated as a specific instance of an arbitrary-length
!      sequence that itself contains â€˜VECTOR_CST_NPATTERNS (V)â€™
       interleaved patterns.  Each pattern has the form:
  
            { BASE0, BASE1, BASE1 + STEP, BASE1 + STEP * 2, ... }
*************** kinds of expressions:
*** 11466,11472 ****
       only the first two elements are needed.  If in addition each BASE1
       is equal to the corresponding BASE0, only the first element in each
       pattern is needed.  The number of encoded elements per pattern is
!      given by 'VECTOR_CST_NELTS_PER_PATTERN (V)'.
  
       For example, the constant:
  
--- 11471,11477 ----
       only the first two elements are needed.  If in addition each BASE1
       is equal to the corresponding BASE0, only the first element in each
       pattern is needed.  The number of encoded elements per pattern is
!      given by â€˜VECTOR_CST_NELTS_PER_PATTERN (V)â€™.
  
       For example, the constant:
  
*************** kinds of expressions:
*** 11487,11494 ****
            VECTOR_CST_NPATTERNS (V) == 2
            VECTOR_CST_NELTS_PER_PATTERN (V) == 3
  
!      The vector is therefore encoded using the first 6 elements ('{ 0,
!      1, 2, 6, 3, 8 }'), with the remaining 10 elements being implicit
       extensions of them.
  
       Sometimes this scheme can create two possible encodings of the same
--- 11492,11499 ----
            VECTOR_CST_NPATTERNS (V) == 2
            VECTOR_CST_NELTS_PER_PATTERN (V) == 3
  
!      The vector is therefore encoded using the first 6 elements (â€˜{ 0,
!      1, 2, 6, 3, 8 }â€™), with the remaining 10 elements being implicit
       extensions of them.
  
       Sometimes this scheme can create two possible encodings of the same
*************** kinds of expressions:
*** 11498,11549 ****
       patterns or (if both encodings have the same number of patterns)
       the one with the fewest encoded elements.
  
!      'vector_cst_encoding_nelts (V)' gives the total number of encoded
       elements in V, which is 6 in the example above.
!      'VECTOR_CST_ENCODED_ELTS (V)' gives a pointer to the elements
!      encoded in V and 'VECTOR_CST_ENCODED_ELT (V, I)' accesses the value
       of encoded element I.
  
!      'VECTOR_CST_DUPLICATE_P (V)' is true if V simply contains repeated
!      instances of 'VECTOR_CST_NPATTERNS (V)' values.  This is a
!      shorthand for testing 'VECTOR_CST_NELTS_PER_PATTERN (V) == 1'.
  
!      'VECTOR_CST_STEPPED_P (V)' is true if at least one pattern in V has
       a nonzero step.  This is a shorthand for testing
!      'VECTOR_CST_NELTS_PER_PATTERN (V) == 3'.
  
!      The utility function 'vector_cst_elt' gives the value of an
!      arbitrary index as a 'tree'.  'vector_cst_int_elt' gives the same
!      value as a 'wide_int'.
  
! 'STRING_CST'
!      These nodes represent string-constants.  The 'TREE_STRING_LENGTH'
!      returns the length of the string, as an 'int'.  The
!      'TREE_STRING_POINTER' is a 'char*' containing the string itself.
!      The string may not be 'NUL'-terminated, and it may contain embedded
!      'NUL' characters.  Therefore, the 'TREE_STRING_LENGTH' includes the
!      trailing 'NUL' if it is present.
  
!      For wide string constants, the 'TREE_STRING_LENGTH' is the number
!      of bytes in the string, and the 'TREE_STRING_POINTER' points to an
       array of the bytes of the string, as represented on the target
       system (that is, as integers in the target endianness).  Wide and
!      non-wide string constants are distinguished only by the 'TREE_TYPE'
!      of the 'STRING_CST'.
  
       FIXME: The formats of string constants are not well-defined when
       the target system bytes are not the same width as host system
       bytes.
  
! 'POLY_INT_CST'
       These nodes represent invariants that depend on some
       target-specific runtime parameters.  They consist of
!      'NUM_POLY_INT_COEFFS' coefficients, with the first coefficient
       being the constant term and the others being multipliers that are
       applied to the runtime parameters.
  
!      'POLY_INT_CST_ELT (X, I)' references coefficient number I of
!      'POLY_INT_CST' node X.  Each coefficient is an 'INTEGER_CST'.
  
  
  File: gccint.info,  Node: Storage References,  Next: Unary and Binary Expressions,  Prev: Constant expressions,  Up: Expression trees
--- 11503,11554 ----
       patterns or (if both encodings have the same number of patterns)
       the one with the fewest encoded elements.
  
!      â€˜vector_cst_encoding_nelts (V)â€™ gives the total number of encoded
       elements in V, which is 6 in the example above.
!      â€˜VECTOR_CST_ENCODED_ELTS (V)â€™ gives a pointer to the elements
!      encoded in V and â€˜VECTOR_CST_ENCODED_ELT (V, I)â€™ accesses the value
       of encoded element I.
  
!      â€˜VECTOR_CST_DUPLICATE_P (V)â€™ is true if V simply contains repeated
!      instances of â€˜VECTOR_CST_NPATTERNS (V)â€™ values.  This is a
!      shorthand for testing â€˜VECTOR_CST_NELTS_PER_PATTERN (V) == 1â€™.
  
!      â€˜VECTOR_CST_STEPPED_P (V)â€™ is true if at least one pattern in V has
       a nonzero step.  This is a shorthand for testing
!      â€˜VECTOR_CST_NELTS_PER_PATTERN (V) == 3â€™.
  
!      The utility function â€˜vector_cst_eltâ€™ gives the value of an
!      arbitrary index as a â€˜treeâ€™.  â€˜vector_cst_int_eltâ€™ gives the same
!      value as a â€˜wide_intâ€™.
  
! â€˜STRING_CSTâ€™
!      These nodes represent string-constants.  The â€˜TREE_STRING_LENGTHâ€™
!      returns the length of the string, as an â€˜intâ€™.  The
!      â€˜TREE_STRING_POINTERâ€™ is a â€˜char*â€™ containing the string itself.
!      The string may not be â€˜NULâ€™-terminated, and it may contain embedded
!      â€˜NULâ€™ characters.  Therefore, the â€˜TREE_STRING_LENGTHâ€™ includes the
!      trailing â€˜NULâ€™ if it is present.
  
!      For wide string constants, the â€˜TREE_STRING_LENGTHâ€™ is the number
!      of bytes in the string, and the â€˜TREE_STRING_POINTERâ€™ points to an
       array of the bytes of the string, as represented on the target
       system (that is, as integers in the target endianness).  Wide and
!      non-wide string constants are distinguished only by the â€˜TREE_TYPEâ€™
!      of the â€˜STRING_CSTâ€™.
  
       FIXME: The formats of string constants are not well-defined when
       the target system bytes are not the same width as host system
       bytes.
  
! â€˜POLY_INT_CSTâ€™
       These nodes represent invariants that depend on some
       target-specific runtime parameters.  They consist of
!      â€˜NUM_POLY_INT_COEFFSâ€™ coefficients, with the first coefficient
       being the constant term and the others being multipliers that are
       applied to the runtime parameters.
  
!      â€˜POLY_INT_CST_ELT (X, I)â€™ references coefficient number I of
!      â€˜POLY_INT_CSTâ€™ node X.  Each coefficient is an â€˜INTEGER_CSTâ€™.
  
  
  File: gccint.info,  Node: Storage References,  Next: Unary and Binary Expressions,  Prev: Constant expressions,  Up: Expression trees
*************** File: gccint.info,  Node: Storage Refere
*** 11551,11557 ****
  10.6.2 References to storage
  ----------------------------
  
! 'ARRAY_REF'
       These nodes represent array accesses.  The first operand is the
       array; the second is the index.  To calculate the address of the
       memory accessed, you must scale the index by the size of the type
--- 11556,11562 ----
  10.6.2 References to storage
  ----------------------------
  
! â€˜ARRAY_REFâ€™
       These nodes represent array accesses.  The first operand is the
       array; the second is the index.  To calculate the address of the
       memory accessed, you must scale the index by the size of the type
*************** File: gccint.info,  Node: Storage Refere
*** 11559,11599 ****
       type of a component of the array.  The third and fourth operands
       are used after gimplification to represent the lower bound and
       component size but should not be used directly; call
!      'array_ref_low_bound' and 'array_ref_element_size' instead.
  
! 'ARRAY_RANGE_REF'
       These nodes represent access to a range (or "slice") of an array.
!      The operands are the same as that for 'ARRAY_REF' and have the same
       meanings.  The type of these expressions must be an array whose
       component type is the same as that of the first operand.  The range
       of that array type determines the amount of data these expressions
       access.
  
! 'COMPONENT_REF'
       These nodes represent non-static data member accesses.  The first
       operand is the object (rather than a pointer to it); the second
!      operand is the 'FIELD_DECL' for the data member.  The third operand
       represents the byte offset of the field, but should not be used
!      directly; call 'component_ref_field_offset' instead.
  
! 'ADDR_EXPR'
       These nodes are used to represent the address of an object.  (These
       expressions will always have pointer or reference type.)  The
       operand may be another expression, or it may be a declaration.
  
       As an extension, GCC allows users to take the address of a label.
!      In this case, the operand of the 'ADDR_EXPR' will be a
!      'LABEL_DECL'.  The type of such an expression is 'void*'.
  
       If the object addressed is not an lvalue, a temporary is created,
       and the address of the temporary is used.
  
! 'INDIRECT_REF'
       These nodes are used to represent the object pointed to by a
       pointer.  The operand is the pointer being dereferenced; it will
       always have pointer or reference type.
  
! 'MEM_REF'
       These nodes are used to represent the object pointed to by a
       pointer offset by a constant.  The first operand is the pointer
       being dereferenced; it will always have pointer or reference type.
--- 11564,11604 ----
       type of a component of the array.  The third and fourth operands
       are used after gimplification to represent the lower bound and
       component size but should not be used directly; call
!      â€˜array_ref_low_boundâ€™ and â€˜array_ref_element_sizeâ€™ instead.
  
! â€˜ARRAY_RANGE_REFâ€™
       These nodes represent access to a range (or "slice") of an array.
!      The operands are the same as that for â€˜ARRAY_REFâ€™ and have the same
       meanings.  The type of these expressions must be an array whose
       component type is the same as that of the first operand.  The range
       of that array type determines the amount of data these expressions
       access.
  
! â€˜COMPONENT_REFâ€™
       These nodes represent non-static data member accesses.  The first
       operand is the object (rather than a pointer to it); the second
!      operand is the â€˜FIELD_DECLâ€™ for the data member.  The third operand
       represents the byte offset of the field, but should not be used
!      directly; call â€˜component_ref_field_offsetâ€™ instead.
  
! â€˜ADDR_EXPRâ€™
       These nodes are used to represent the address of an object.  (These
       expressions will always have pointer or reference type.)  The
       operand may be another expression, or it may be a declaration.
  
       As an extension, GCC allows users to take the address of a label.
!      In this case, the operand of the â€˜ADDR_EXPRâ€™ will be a
!      â€˜LABEL_DECLâ€™.  The type of such an expression is â€˜void*â€™.
  
       If the object addressed is not an lvalue, a temporary is created,
       and the address of the temporary is used.
  
! â€˜INDIRECT_REFâ€™
       These nodes are used to represent the object pointed to by a
       pointer.  The operand is the pointer being dereferenced; it will
       always have pointer or reference type.
  
! â€˜MEM_REFâ€™
       These nodes are used to represent the object pointed to by a
       pointer offset by a constant.  The first operand is the pointer
       being dereferenced; it will always have pointer or reference type.
*************** File: gccint.info,  Node: Storage Refere
*** 11602,11622 ****
       the type to be used for type-based alias analysis.  The type of the
       node specifies the alignment of the access.
  
! 'TARGET_MEM_REF'
       These nodes represent memory accesses whose address directly map to
       an addressing mode of the target architecture.  The first argument
!      is 'TMR_BASE' and is a pointer to the object being accessed.  The
!      second argument is 'TMR_OFFSET' which is a pointer constant with
       dual purpose serving both as constant offset and holder of the type
       used for type-based alias analysis.  The first two operands have
!      exactly the same semantics as 'MEM_REF'.  The third and fourth
!      operand are 'TMR_INDEX' and 'TMR_STEP' where the former is an
       integer and the latter an integer constant.  The fifth and last
!      operand is 'TMR_INDEX2' which is an alternate non-constant offset.
!      Any of the third to last operands may be 'NULL' if the
       corresponding component does not appear in the address, but
!      'TMR_INDEX' and 'TMR_STEP' shall be always supplied in pair.  The
!      Address of the 'TARGET_MEM_REF' is determined in the following way.
  
            TMR_BASE + TMR_OFFSET + TMR_INDEX * TMR_STEP + TMR_INDEX2
  
--- 11607,11627 ----
       the type to be used for type-based alias analysis.  The type of the
       node specifies the alignment of the access.
  
! â€˜TARGET_MEM_REFâ€™
       These nodes represent memory accesses whose address directly map to
       an addressing mode of the target architecture.  The first argument
!      is â€˜TMR_BASEâ€™ and is a pointer to the object being accessed.  The
!      second argument is â€˜TMR_OFFSETâ€™ which is a pointer constant with
       dual purpose serving both as constant offset and holder of the type
       used for type-based alias analysis.  The first two operands have
!      exactly the same semantics as â€˜MEM_REFâ€™.  The third and fourth
!      operand are â€˜TMR_INDEXâ€™ and â€˜TMR_STEPâ€™ where the former is an
       integer and the latter an integer constant.  The fifth and last
!      operand is â€˜TMR_INDEX2â€™ which is an alternate non-constant offset.
!      Any of the third to last operands may be â€˜NULLâ€™ if the
       corresponding component does not appear in the address, but
!      â€˜TMR_INDEXâ€™ and â€˜TMR_STEPâ€™ shall be always supplied in pair.  The
!      Address of the â€˜TARGET_MEM_REFâ€™ is determined in the following way.
  
            TMR_BASE + TMR_OFFSET + TMR_INDEX * TMR_STEP + TMR_INDEX2
  
*************** File: gccint.info,  Node: Unary and Bina
*** 11628,11737 ****
  10.6.3 Unary and Binary Expressions
  -----------------------------------
  
! 'NEGATE_EXPR'
       These nodes represent unary negation of the single operand, for
       both integer and floating-point types.  The type of negation can be
       determined by looking at the type of the expression.
  
       The behavior of this operation on signed arithmetic overflow is
!      controlled by the 'flag_wrapv' and 'flag_trapv' variables.
  
! 'ABS_EXPR'
       These nodes represent the absolute value of the single operand, for
       both integer and floating-point types.  This is typically used to
!      implement the 'abs', 'labs' and 'llabs' builtins for integer types,
!      and the 'fabs', 'fabsf' and 'fabsl' builtins for floating point
       types.  The type of abs operation can be determined by looking at
       the type of the expression.
  
       This node is not used for complex types.  To represent the modulus
!      or complex abs of a complex value, use the 'BUILT_IN_CABS',
!      'BUILT_IN_CABSF' or 'BUILT_IN_CABSL' builtins, as used to implement
!      the C99 'cabs', 'cabsf' and 'cabsl' built-in functions.
  
! 'ABSU_EXPR'
       These nodes represent the absolute value of the single operand in
!      equivalent unsigned type such that 'ABSU_EXPR' of 'TYPE_MIN' is
       well defined.
  
! 'BIT_NOT_EXPR'
       These nodes represent bitwise complement, and will always have
       integral type.  The only operand is the value to be complemented.
  
! 'TRUTH_NOT_EXPR'
       These nodes represent logical negation, and will always have
       integral (or boolean) type.  The operand is the value being
       negated.  The type of the operand and that of the result are always
!      of 'BOOLEAN_TYPE' or 'INTEGER_TYPE'.
  
! 'PREDECREMENT_EXPR'
! 'PREINCREMENT_EXPR'
! 'POSTDECREMENT_EXPR'
! 'POSTINCREMENT_EXPR'
       These nodes represent increment and decrement expressions.  The
       value of the single operand is computed, and the operand
!      incremented or decremented.  In the case of 'PREDECREMENT_EXPR' and
!      'PREINCREMENT_EXPR', the value of the expression is the value
       resulting after the increment or decrement; in the case of
!      'POSTDECREMENT_EXPR' and 'POSTINCREMENT_EXPR' is the value before
       the increment or decrement occurs.  The type of the operand, like
       that of the result, will be either integral, boolean, or
       floating-point.
  
! 'FIX_TRUNC_EXPR'
       These nodes represent conversion of a floating-point value to an
       integer.  The single operand will have a floating-point type, while
       the complete expression will have an integral (or boolean) type.
       The operand is rounded towards zero.
  
! 'FLOAT_EXPR'
       These nodes represent conversion of an integral (or boolean) value
       to a floating-point value.  The single operand will have integral
       type, while the complete expression will have a floating-point
       type.
  
       FIXME: How is the operand supposed to be rounded?  Is this
!      dependent on '-mieee'?
  
! 'COMPLEX_EXPR'
       These nodes are used to represent complex numbers constructed from
       two expressions of the same (integer or real) type.  The first
       operand is the real part and the second operand is the imaginary
       part.
  
! 'CONJ_EXPR'
       These nodes represent the conjugate of their operand.
  
! 'REALPART_EXPR'
! 'IMAGPART_EXPR'
       These nodes represent respectively the real and the imaginary parts
       of complex numbers (their sole argument).
  
! 'NON_LVALUE_EXPR'
       These nodes indicate that their one and only operand is not an
       lvalue.  A back end can treat these identically to the single
       operand.
  
! 'NOP_EXPR'
       These nodes are used to represent conversions that do not require
!      any code-generation.  For example, conversion of a 'char*' to an
!      'int*' does not require any code be generated; such a conversion is
!      represented by a 'NOP_EXPR'.  The single operand is the expression
       to be converted.  The conversion from a pointer to a reference is
!      also represented with a 'NOP_EXPR'.
  
! 'CONVERT_EXPR'
!      These nodes are similar to 'NOP_EXPR's, but are used in those
       situations where code may need to be generated.  For example, if an
!      'int*' is converted to an 'int' code may need to be generated on
       some platforms.  These nodes are never used for C++-specific
       conversions, like conversions between pointers to different classes
       in an inheritance hierarchy.  Any adjustments that need to be made
       in such cases are always indicated explicitly.  Similarly, a
!      user-defined conversion is never represented by a 'CONVERT_EXPR';
       instead, the function calls are made explicit.
  
! 'FIXED_CONVERT_EXPR'
       These nodes are used to represent conversions that involve
       fixed-point values.  For example, from a fixed-point value to
       another fixed-point value, from an integer to a fixed-point value,
--- 11633,11742 ----
  10.6.3 Unary and Binary Expressions
  -----------------------------------
  
! â€˜NEGATE_EXPRâ€™
       These nodes represent unary negation of the single operand, for
       both integer and floating-point types.  The type of negation can be
       determined by looking at the type of the expression.
  
       The behavior of this operation on signed arithmetic overflow is
!      controlled by the â€˜flag_wrapvâ€™ and â€˜flag_trapvâ€™ variables.
  
! â€˜ABS_EXPRâ€™
       These nodes represent the absolute value of the single operand, for
       both integer and floating-point types.  This is typically used to
!      implement the â€˜absâ€™, â€˜labsâ€™ and â€˜llabsâ€™ builtins for integer types,
!      and the â€˜fabsâ€™, â€˜fabsfâ€™ and â€˜fabslâ€™ builtins for floating point
       types.  The type of abs operation can be determined by looking at
       the type of the expression.
  
       This node is not used for complex types.  To represent the modulus
!      or complex abs of a complex value, use the â€˜BUILT_IN_CABSâ€™,
!      â€˜BUILT_IN_CABSFâ€™ or â€˜BUILT_IN_CABSLâ€™ builtins, as used to implement
!      the C99 â€˜cabsâ€™, â€˜cabsfâ€™ and â€˜cabslâ€™ built-in functions.
  
! â€˜ABSU_EXPRâ€™
       These nodes represent the absolute value of the single operand in
!      equivalent unsigned type such that â€˜ABSU_EXPRâ€™ of â€˜TYPE_MINâ€™ is
       well defined.
  
! â€˜BIT_NOT_EXPRâ€™
       These nodes represent bitwise complement, and will always have
       integral type.  The only operand is the value to be complemented.
  
! â€˜TRUTH_NOT_EXPRâ€™
       These nodes represent logical negation, and will always have
       integral (or boolean) type.  The operand is the value being
       negated.  The type of the operand and that of the result are always
!      of â€˜BOOLEAN_TYPEâ€™ or â€˜INTEGER_TYPEâ€™.
  
! â€˜PREDECREMENT_EXPRâ€™
! â€˜PREINCREMENT_EXPRâ€™
! â€˜POSTDECREMENT_EXPRâ€™
! â€˜POSTINCREMENT_EXPRâ€™
       These nodes represent increment and decrement expressions.  The
       value of the single operand is computed, and the operand
!      incremented or decremented.  In the case of â€˜PREDECREMENT_EXPRâ€™ and
!      â€˜PREINCREMENT_EXPRâ€™, the value of the expression is the value
       resulting after the increment or decrement; in the case of
!      â€˜POSTDECREMENT_EXPRâ€™ and â€˜POSTINCREMENT_EXPRâ€™ is the value before
       the increment or decrement occurs.  The type of the operand, like
       that of the result, will be either integral, boolean, or
       floating-point.
  
! â€˜FIX_TRUNC_EXPRâ€™
       These nodes represent conversion of a floating-point value to an
       integer.  The single operand will have a floating-point type, while
       the complete expression will have an integral (or boolean) type.
       The operand is rounded towards zero.
  
! â€˜FLOAT_EXPRâ€™
       These nodes represent conversion of an integral (or boolean) value
       to a floating-point value.  The single operand will have integral
       type, while the complete expression will have a floating-point
       type.
  
       FIXME: How is the operand supposed to be rounded?  Is this
!      dependent on â€˜-mieeeâ€™?
  
! â€˜COMPLEX_EXPRâ€™
       These nodes are used to represent complex numbers constructed from
       two expressions of the same (integer or real) type.  The first
       operand is the real part and the second operand is the imaginary
       part.
  
! â€˜CONJ_EXPRâ€™
       These nodes represent the conjugate of their operand.
  
! â€˜REALPART_EXPRâ€™
! â€˜IMAGPART_EXPRâ€™
       These nodes represent respectively the real and the imaginary parts
       of complex numbers (their sole argument).
  
! â€˜NON_LVALUE_EXPRâ€™
       These nodes indicate that their one and only operand is not an
       lvalue.  A back end can treat these identically to the single
       operand.
  
! â€˜NOP_EXPRâ€™
       These nodes are used to represent conversions that do not require
!      any code-generation.  For example, conversion of a â€˜char*â€™ to an
!      â€˜int*â€™ does not require any code be generated; such a conversion is
!      represented by a â€˜NOP_EXPRâ€™.  The single operand is the expression
       to be converted.  The conversion from a pointer to a reference is
!      also represented with a â€˜NOP_EXPRâ€™.
  
! â€˜CONVERT_EXPRâ€™
!      These nodes are similar to â€˜NOP_EXPRâ€™s, but are used in those
       situations where code may need to be generated.  For example, if an
!      â€˜int*â€™ is converted to an â€˜intâ€™ code may need to be generated on
       some platforms.  These nodes are never used for C++-specific
       conversions, like conversions between pointers to different classes
       in an inheritance hierarchy.  Any adjustments that need to be made
       in such cases are always indicated explicitly.  Similarly, a
!      user-defined conversion is never represented by a â€˜CONVERT_EXPRâ€™;
       instead, the function calls are made explicit.
  
! â€˜FIXED_CONVERT_EXPRâ€™
       These nodes are used to represent conversions that involve
       fixed-point values.  For example, from a fixed-point value to
       another fixed-point value, from an integer to a fixed-point value,
*************** File: gccint.info,  Node: Unary and Bina
*** 11739,11748 ****
       to a fixed-point value, or from a fixed-point value to a
       floating-point value.
  
! 'LSHIFT_EXPR'
! 'RSHIFT_EXPR'
! 'LROTATE_EXPR'
! 'RROTATE_EXPR'
       These nodes represent left and right shifts and rotates,
       respectively.  The first operand is the value to shift or rotate;
       it will always be of integral type.  The second operand is an
--- 11744,11753 ----
       to a fixed-point value, or from a fixed-point value to a
       floating-point value.
  
! â€˜LSHIFT_EXPRâ€™
! â€˜RSHIFT_EXPRâ€™
! â€˜LROTATE_EXPRâ€™
! â€˜RROTATE_EXPRâ€™
       These nodes represent left and right shifts and rotates,
       respectively.  The first operand is the value to shift or rotate;
       it will always be of integral type.  The second operand is an
*************** File: gccint.info,  Node: Unary and Bina
*** 11756,11795 ****
       Unlike most nodes, these can have a vector as first operand and a
       scalar as second operand.
  
! 'BIT_IOR_EXPR'
! 'BIT_XOR_EXPR'
! 'BIT_AND_EXPR'
       These nodes represent bitwise inclusive or, bitwise exclusive or,
       and bitwise and, respectively.  Both operands will always have
       integral type.
  
! 'TRUTH_ANDIF_EXPR'
! 'TRUTH_ORIF_EXPR'
       These nodes represent logical "and" and logical "or", respectively.
       These operators are not strict; i.e., the second operand is
       evaluated only if the value of the expression is not determined by
       evaluation of the first operand.  The type of the operands and that
!      of the result are always of 'BOOLEAN_TYPE' or 'INTEGER_TYPE'.
  
! 'TRUTH_AND_EXPR'
! 'TRUTH_OR_EXPR'
! 'TRUTH_XOR_EXPR'
       These nodes represent logical and, logical or, and logical
       exclusive or.  They are strict; both arguments are always
       evaluated.  There are no corresponding operators in C or C++, but
       the front end will sometimes generate these expressions anyhow, if
       it can tell that strictness does not matter.  The type of the
!      operands and that of the result are always of 'BOOLEAN_TYPE' or
!      'INTEGER_TYPE'.
  
! 'POINTER_PLUS_EXPR'
       This node represents pointer arithmetic.  The first operand is
       always a pointer/reference type.  The second operand is always an
       unsigned integer type compatible with sizetype.  This and
       POINTER_DIFF_EXPR are the only binary arithmetic operators that can
       operate on pointer types.
  
! 'POINTER_DIFF_EXPR'
       This node represents pointer subtraction.  The two operands always
       have pointer/reference type.  It returns a signed integer of the
       same precision as the pointers.  The behavior is undefined if the
--- 11761,11800 ----
       Unlike most nodes, these can have a vector as first operand and a
       scalar as second operand.
  
! â€˜BIT_IOR_EXPRâ€™
! â€˜BIT_XOR_EXPRâ€™
! â€˜BIT_AND_EXPRâ€™
       These nodes represent bitwise inclusive or, bitwise exclusive or,
       and bitwise and, respectively.  Both operands will always have
       integral type.
  
! â€˜TRUTH_ANDIF_EXPRâ€™
! â€˜TRUTH_ORIF_EXPRâ€™
       These nodes represent logical "and" and logical "or", respectively.
       These operators are not strict; i.e., the second operand is
       evaluated only if the value of the expression is not determined by
       evaluation of the first operand.  The type of the operands and that
!      of the result are always of â€˜BOOLEAN_TYPEâ€™ or â€˜INTEGER_TYPEâ€™.
  
! â€˜TRUTH_AND_EXPRâ€™
! â€˜TRUTH_OR_EXPRâ€™
! â€˜TRUTH_XOR_EXPRâ€™
       These nodes represent logical and, logical or, and logical
       exclusive or.  They are strict; both arguments are always
       evaluated.  There are no corresponding operators in C or C++, but
       the front end will sometimes generate these expressions anyhow, if
       it can tell that strictness does not matter.  The type of the
!      operands and that of the result are always of â€˜BOOLEAN_TYPEâ€™ or
!      â€˜INTEGER_TYPEâ€™.
  
! â€˜POINTER_PLUS_EXPRâ€™
       This node represents pointer arithmetic.  The first operand is
       always a pointer/reference type.  The second operand is always an
       unsigned integer type compatible with sizetype.  This and
       POINTER_DIFF_EXPR are the only binary arithmetic operators that can
       operate on pointer types.
  
! â€˜POINTER_DIFF_EXPRâ€™
       This node represents pointer subtraction.  The two operands always
       have pointer/reference type.  It returns a signed integer of the
       same precision as the pointers.  The behavior is undefined if the
*************** File: gccint.info,  Node: Unary and Bina
*** 11798,11806 ****
       does not depend on the pointer type, it is not divided by the size
       of the pointed-to type.
  
! 'PLUS_EXPR'
! 'MINUS_EXPR'
! 'MULT_EXPR'
       These nodes represent various binary arithmetic operations.
       Respectively, these operations are addition, subtraction (of the
       second operand from the first) and multiplication.  Their operands
--- 11803,11811 ----
       does not depend on the pointer type, it is not divided by the size
       of the pointed-to type.
  
! â€˜PLUS_EXPRâ€™
! â€˜MINUS_EXPRâ€™
! â€˜MULT_EXPRâ€™
       These nodes represent various binary arithmetic operations.
       Respectively, these operations are addition, subtraction (of the
       second operand from the first) and multiplication.  Their operands
*************** File: gccint.info,  Node: Unary and Bina
*** 11809,11873 ****
       integral type.
  
       The behavior of these operations on signed arithmetic overflow is
!      controlled by the 'flag_wrapv' and 'flag_trapv' variables.
  
! 'WIDEN_MULT_EXPR'
       This node represents a widening multiplication.  The operands have
       integral types with same B bits of precision, producing an integral
       type result with at least 2B bits of precision.  The behaviour is
       equivalent to extending both operands, possibly of different
       signedness, to the result type, then multiplying them.
  
! 'MULT_HIGHPART_EXPR'
       This node represents the "high-part" of a widening multiplication.
       For an integral type with B bits of precision, the result is the
       most significant B bits of the full 2B product.  Both operands must
       have the same precision and same signedness.
  
! 'RDIV_EXPR'
       This node represents a floating point division operation.
  
! 'TRUNC_DIV_EXPR'
! 'FLOOR_DIV_EXPR'
! 'CEIL_DIV_EXPR'
! 'ROUND_DIV_EXPR'
       These nodes represent integer division operations that return an
!      integer result.  'TRUNC_DIV_EXPR' rounds towards zero,
!      'FLOOR_DIV_EXPR' rounds towards negative infinity, 'CEIL_DIV_EXPR'
!      rounds towards positive infinity and 'ROUND_DIV_EXPR' rounds to the
       closest integer.  Integer division in C and C++ is truncating, i.e.
!      'TRUNC_DIV_EXPR'.
  
       The behavior of these operations on signed arithmetic overflow,
       when dividing the minimum signed integer by minus one, is
!      controlled by the 'flag_wrapv' and 'flag_trapv' variables.
  
! 'TRUNC_MOD_EXPR'
! 'FLOOR_MOD_EXPR'
! 'CEIL_MOD_EXPR'
! 'ROUND_MOD_EXPR'
       These nodes represent the integer remainder or modulus operation.
!      The integer modulus of two operands 'a' and 'b' is defined as 'a -
!      (a/b)*b' where the division calculated using the corresponding
!      division operator.  Hence for 'TRUNC_MOD_EXPR' this definition
       assumes division using truncation towards zero, i.e.
!      'TRUNC_DIV_EXPR'.  Integer remainder in C and C++ uses truncating
!      division, i.e. 'TRUNC_MOD_EXPR'.
  
! 'EXACT_DIV_EXPR'
!      The 'EXACT_DIV_EXPR' code is used to represent integer divisions
       where the numerator is known to be an exact multiple of the
       denominator.  This allows the backend to choose between the faster
!      of 'TRUNC_DIV_EXPR', 'CEIL_DIV_EXPR' and 'FLOOR_DIV_EXPR' for the
       current target.
  
! 'LT_EXPR'
! 'LE_EXPR'
! 'GT_EXPR'
! 'GE_EXPR'
! 'LTGT_EXPR'
! 'EQ_EXPR'
! 'NE_EXPR'
       These nodes represent the less than, less than or equal to, greater
       than, greater than or equal to, less or greater than, equal, and
       not equal comparison operators.  The first and second operands will
--- 11814,11878 ----
       integral type.
  
       The behavior of these operations on signed arithmetic overflow is
!      controlled by the â€˜flag_wrapvâ€™ and â€˜flag_trapvâ€™ variables.
  
! â€˜WIDEN_MULT_EXPRâ€™
       This node represents a widening multiplication.  The operands have
       integral types with same B bits of precision, producing an integral
       type result with at least 2B bits of precision.  The behaviour is
       equivalent to extending both operands, possibly of different
       signedness, to the result type, then multiplying them.
  
! â€˜MULT_HIGHPART_EXPRâ€™
       This node represents the "high-part" of a widening multiplication.
       For an integral type with B bits of precision, the result is the
       most significant B bits of the full 2B product.  Both operands must
       have the same precision and same signedness.
  
! â€˜RDIV_EXPRâ€™
       This node represents a floating point division operation.
  
! â€˜TRUNC_DIV_EXPRâ€™
! â€˜FLOOR_DIV_EXPRâ€™
! â€˜CEIL_DIV_EXPRâ€™
! â€˜ROUND_DIV_EXPRâ€™
       These nodes represent integer division operations that return an
!      integer result.  â€˜TRUNC_DIV_EXPRâ€™ rounds towards zero,
!      â€˜FLOOR_DIV_EXPRâ€™ rounds towards negative infinity, â€˜CEIL_DIV_EXPRâ€™
!      rounds towards positive infinity and â€˜ROUND_DIV_EXPRâ€™ rounds to the
       closest integer.  Integer division in C and C++ is truncating, i.e.
!      â€˜TRUNC_DIV_EXPRâ€™.
  
       The behavior of these operations on signed arithmetic overflow,
       when dividing the minimum signed integer by minus one, is
!      controlled by the â€˜flag_wrapvâ€™ and â€˜flag_trapvâ€™ variables.
  
! â€˜TRUNC_MOD_EXPRâ€™
! â€˜FLOOR_MOD_EXPRâ€™
! â€˜CEIL_MOD_EXPRâ€™
! â€˜ROUND_MOD_EXPRâ€™
       These nodes represent the integer remainder or modulus operation.
!      The integer modulus of two operands â€˜aâ€™ and â€˜bâ€™ is defined as â€˜a -
!      (a/b)*bâ€™ where the division calculated using the corresponding
!      division operator.  Hence for â€˜TRUNC_MOD_EXPRâ€™ this definition
       assumes division using truncation towards zero, i.e.
!      â€˜TRUNC_DIV_EXPRâ€™.  Integer remainder in C and C++ uses truncating
!      division, i.e. â€˜TRUNC_MOD_EXPRâ€™.
  
! â€˜EXACT_DIV_EXPRâ€™
!      The â€˜EXACT_DIV_EXPRâ€™ code is used to represent integer divisions
       where the numerator is known to be an exact multiple of the
       denominator.  This allows the backend to choose between the faster
!      of â€˜TRUNC_DIV_EXPRâ€™, â€˜CEIL_DIV_EXPRâ€™ and â€˜FLOOR_DIV_EXPRâ€™ for the
       current target.
  
! â€˜LT_EXPRâ€™
! â€˜LE_EXPRâ€™
! â€˜GT_EXPRâ€™
! â€˜GE_EXPRâ€™
! â€˜LTGT_EXPRâ€™
! â€˜EQ_EXPRâ€™
! â€˜NE_EXPRâ€™
       These nodes represent the less than, less than or equal to, greater
       than, greater than or equal to, less or greater than, equal, and
       not equal comparison operators.  The first and second operands will
*************** File: gccint.info,  Node: Unary and Bina
*** 11880,11892 ****
       zero (false) or minus one (true) for vectors.
  
       For floating point comparisons, if we honor IEEE NaNs and either
!      operand is NaN, then 'NE_EXPR' always returns true and the
       remaining operators always return false.  On some targets,
       comparisons against an IEEE NaN, other than equality and
       inequality, may generate a floating-point exception.
  
! 'ORDERED_EXPR'
! 'UNORDERED_EXPR'
       These nodes represent non-trapping ordered and unordered comparison
       operators.  These operations take two floating point operands and
       determine whether they are ordered or unordered relative to each
--- 11885,11897 ----
       zero (false) or minus one (true) for vectors.
  
       For floating point comparisons, if we honor IEEE NaNs and either
!      operand is NaN, then â€˜NE_EXPRâ€™ always returns true and the
       remaining operators always return false.  On some targets,
       comparisons against an IEEE NaN, other than equality and
       inequality, may generate a floating-point exception.
  
! â€˜ORDERED_EXPRâ€™
! â€˜UNORDERED_EXPRâ€™
       These nodes represent non-trapping ordered and unordered comparison
       operators.  These operations take two floating point operands and
       determine whether they are ordered or unordered relative to each
*************** File: gccint.info,  Node: Unary and Bina
*** 11897,11944 ****
       type's zero value for false, and the result type's one value for
       true.
  
! 'UNLT_EXPR'
! 'UNLE_EXPR'
! 'UNGT_EXPR'
! 'UNGE_EXPR'
! 'UNEQ_EXPR'
       These nodes represent the unordered comparison operators.  These
       operations take two floating point operands and determine whether
       the operands are unordered or are less than, less than or equal to,
       greater than, greater than or equal to, or equal respectively.  For
!      example, 'UNLT_EXPR' returns true if either operand is an IEEE NaN
       or the first operand is less than the second.  All these operations
       are guaranteed not to generate a floating point exception.  The
       result type of these expressions will always be of integral or
       boolean type.  These operations return the result type's zero value
       for false, and the result type's one value for true.
  
! 'MODIFY_EXPR'
       These nodes represent assignment.  The left-hand side is the first
       operand; the right-hand side is the second operand.  The left-hand
!      side will be a 'VAR_DECL', 'INDIRECT_REF', 'COMPONENT_REF', or
       other lvalue.
  
!      These nodes are used to represent not only assignment with '=' but
!      also compound assignments (like '+='), by reduction to '='
!      assignment.  In other words, the representation for 'i += 3' looks
!      just like that for 'i = i + 3'.
  
! 'INIT_EXPR'
!      These nodes are just like 'MODIFY_EXPR', but are used only when a
       variable is initialized, rather than assigned to subsequently.
       This means that we can assume that the target of the initialization
       is not used in computing its own value; any reference to the lhs in
       computing the rhs is undefined.
  
! 'COMPOUND_EXPR'
       These nodes represent comma-expressions.  The first operand is an
       expression whose value is computed and thrown away prior to the
       evaluation of the second operand.  The value of the entire
       expression is the value of the second operand.
  
! 'COND_EXPR'
!      These nodes represent '?:' expressions.  The first operand is of
       boolean or integral type.  If it evaluates to a nonzero value, the
       second operand should be evaluated, and returned as the value of
       the expression.  Otherwise, the third operand is evaluated, and
--- 11902,11949 ----
       type's zero value for false, and the result type's one value for
       true.
  
! â€˜UNLT_EXPRâ€™
! â€˜UNLE_EXPRâ€™
! â€˜UNGT_EXPRâ€™
! â€˜UNGE_EXPRâ€™
! â€˜UNEQ_EXPRâ€™
       These nodes represent the unordered comparison operators.  These
       operations take two floating point operands and determine whether
       the operands are unordered or are less than, less than or equal to,
       greater than, greater than or equal to, or equal respectively.  For
!      example, â€˜UNLT_EXPRâ€™ returns true if either operand is an IEEE NaN
       or the first operand is less than the second.  All these operations
       are guaranteed not to generate a floating point exception.  The
       result type of these expressions will always be of integral or
       boolean type.  These operations return the result type's zero value
       for false, and the result type's one value for true.
  
! â€˜MODIFY_EXPRâ€™
       These nodes represent assignment.  The left-hand side is the first
       operand; the right-hand side is the second operand.  The left-hand
!      side will be a â€˜VAR_DECLâ€™, â€˜INDIRECT_REFâ€™, â€˜COMPONENT_REFâ€™, or
       other lvalue.
  
!      These nodes are used to represent not only assignment with â€˜=â€™ but
!      also compound assignments (like â€˜+=â€™), by reduction to â€˜=â€™
!      assignment.  In other words, the representation for â€˜i += 3â€™ looks
!      just like that for â€˜i = i + 3â€™.
  
! â€˜INIT_EXPRâ€™
!      These nodes are just like â€˜MODIFY_EXPRâ€™, but are used only when a
       variable is initialized, rather than assigned to subsequently.
       This means that we can assume that the target of the initialization
       is not used in computing its own value; any reference to the lhs in
       computing the rhs is undefined.
  
! â€˜COMPOUND_EXPRâ€™
       These nodes represent comma-expressions.  The first operand is an
       expression whose value is computed and thrown away prior to the
       evaluation of the second operand.  The value of the entire
       expression is the value of the second operand.
  
! â€˜COND_EXPRâ€™
!      These nodes represent â€˜?:â€™ expressions.  The first operand is of
       boolean or integral type.  If it evaluates to a nonzero value, the
       second operand should be evaluated, and returned as the value of
       the expression.  Otherwise, the third operand is evaluated, and
*************** File: gccint.info,  Node: Unary and Bina
*** 11948,11979 ****
       expression, unless it unconditionally throws an exception or calls
       a noreturn function, in which case it should have void type.  The
       same constraints apply to the third operand.  This allows array
!      bounds checks to be represented conveniently as '(i >= 0 && i < 10)
!      ? i : abort()'.
  
       As a GNU extension, the C language front-ends allow the second
!      operand of the '?:' operator may be omitted in the source.  For
!      example, 'x ? : 3' is equivalent to 'x ? x : 3', assuming that 'x'
       is an expression without side effects.  In the tree representation,
       however, the second operand is always present, possibly protected
!      by 'SAVE_EXPR' if the first argument does cause side effects.
  
! 'CALL_EXPR'
       These nodes are used to represent calls to functions, including
!      non-static member functions.  'CALL_EXPR's are implemented as
       expression nodes with a variable number of operands.  Rather than
!      using 'TREE_OPERAND' to extract them, it is preferable to use the
       specialized accessor macros and functions that operate specifically
!      on 'CALL_EXPR' nodes.
  
!      'CALL_EXPR_FN' returns a pointer to the function to call; it is
!      always an expression whose type is a 'POINTER_TYPE'.
  
       The number of arguments to the call is returned by
!      'call_expr_nargs', while the arguments themselves can be accessed
!      with the 'CALL_EXPR_ARG' macro.  The arguments are zero-indexed and
       numbered left-to-right.  You can iterate over the arguments using
!      'FOR_EACH_CALL_EXPR_ARG', as in:
  
            tree call, arg;
            call_expr_arg_iterator iter;
--- 11953,11984 ----
       expression, unless it unconditionally throws an exception or calls
       a noreturn function, in which case it should have void type.  The
       same constraints apply to the third operand.  This allows array
!      bounds checks to be represented conveniently as â€˜(i >= 0 && i < 10)
!      ? i : abort()â€™.
  
       As a GNU extension, the C language front-ends allow the second
!      operand of the â€˜?:â€™ operator may be omitted in the source.  For
!      example, â€˜x ? : 3â€™ is equivalent to â€˜x ? x : 3â€™, assuming that â€˜xâ€™
       is an expression without side effects.  In the tree representation,
       however, the second operand is always present, possibly protected
!      by â€˜SAVE_EXPRâ€™ if the first argument does cause side effects.
  
! â€˜CALL_EXPRâ€™
       These nodes are used to represent calls to functions, including
!      non-static member functions.  â€˜CALL_EXPRâ€™s are implemented as
       expression nodes with a variable number of operands.  Rather than
!      using â€˜TREE_OPERANDâ€™ to extract them, it is preferable to use the
       specialized accessor macros and functions that operate specifically
!      on â€˜CALL_EXPRâ€™ nodes.
  
!      â€˜CALL_EXPR_FNâ€™ returns a pointer to the function to call; it is
!      always an expression whose type is a â€˜POINTER_TYPEâ€™.
  
       The number of arguments to the call is returned by
!      â€˜call_expr_nargsâ€™, while the arguments themselves can be accessed
!      with the â€˜CALL_EXPR_ARGâ€™ macro.  The arguments are zero-indexed and
       numbered left-to-right.  You can iterate over the arguments using
!      â€˜FOR_EACH_CALL_EXPR_ARGâ€™, as in:
  
            tree call, arg;
            call_expr_arg_iterator iter;
*************** File: gccint.info,  Node: Unary and Bina
*** 11982,12021 ****
              ...;
  
       For non-static member functions, there will be an operand
!      corresponding to the 'this' pointer.  There will always be
       expressions corresponding to all of the arguments, even if the
       function is declared with default arguments and some arguments are
       not explicitly provided at the call sites.
  
!      'CALL_EXPR's also have a 'CALL_EXPR_STATIC_CHAIN' operand that is
       used to implement nested functions.  This operand is otherwise
       null.
  
! 'CLEANUP_POINT_EXPR'
       These nodes represent full-expressions.  The single operand is an
       expression to evaluate.  Any destructor calls engendered by the
       creation of temporaries during the evaluation of that expression
       should be performed immediately after the expression is evaluated.
  
! 'CONSTRUCTOR'
       These nodes represent the brace-enclosed initializers for a
       structure or an array.  They contain a sequence of component values
!      made out of a vector of constructor_elt, which is a ('INDEX',
!      'VALUE') pair.
  
!      If the 'TREE_TYPE' of the 'CONSTRUCTOR' is a 'RECORD_TYPE',
!      'UNION_TYPE' or 'QUAL_UNION_TYPE' then the 'INDEX' of each node in
!      the sequence will be a 'FIELD_DECL' and the 'VALUE' will be the
       expression used to initialize that field.
  
!      If the 'TREE_TYPE' of the 'CONSTRUCTOR' is an 'ARRAY_TYPE', then
!      the 'INDEX' of each node in the sequence will be an 'INTEGER_CST'
!      or a 'RANGE_EXPR' of two 'INTEGER_CST's.  A single 'INTEGER_CST'
       indicates which element of the array is being assigned to.  A
!      'RANGE_EXPR' indicates an inclusive range of elements to
!      initialize.  In both cases the 'VALUE' is the corresponding
       initializer.  It is re-evaluated for each element of a
!      'RANGE_EXPR'.  If the 'INDEX' is 'NULL_TREE', then the initializer
       is for the next available array element.
  
       In the front end, you should not depend on the fields appearing in
--- 11987,12026 ----
              ...;
  
       For non-static member functions, there will be an operand
!      corresponding to the â€˜thisâ€™ pointer.  There will always be
       expressions corresponding to all of the arguments, even if the
       function is declared with default arguments and some arguments are
       not explicitly provided at the call sites.
  
!      â€˜CALL_EXPRâ€™s also have a â€˜CALL_EXPR_STATIC_CHAINâ€™ operand that is
       used to implement nested functions.  This operand is otherwise
       null.
  
! â€˜CLEANUP_POINT_EXPRâ€™
       These nodes represent full-expressions.  The single operand is an
       expression to evaluate.  Any destructor calls engendered by the
       creation of temporaries during the evaluation of that expression
       should be performed immediately after the expression is evaluated.
  
! â€˜CONSTRUCTORâ€™
       These nodes represent the brace-enclosed initializers for a
       structure or an array.  They contain a sequence of component values
!      made out of a vector of constructor_elt, which is a (â€˜INDEXâ€™,
!      â€˜VALUEâ€™) pair.
  
!      If the â€˜TREE_TYPEâ€™ of the â€˜CONSTRUCTORâ€™ is a â€˜RECORD_TYPEâ€™,
!      â€˜UNION_TYPEâ€™ or â€˜QUAL_UNION_TYPEâ€™ then the â€˜INDEXâ€™ of each node in
!      the sequence will be a â€˜FIELD_DECLâ€™ and the â€˜VALUEâ€™ will be the
       expression used to initialize that field.
  
!      If the â€˜TREE_TYPEâ€™ of the â€˜CONSTRUCTORâ€™ is an â€˜ARRAY_TYPEâ€™, then
!      the â€˜INDEXâ€™ of each node in the sequence will be an â€˜INTEGER_CSTâ€™
!      or a â€˜RANGE_EXPRâ€™ of two â€˜INTEGER_CSTâ€™s.  A single â€˜INTEGER_CSTâ€™
       indicates which element of the array is being assigned to.  A
!      â€˜RANGE_EXPRâ€™ indicates an inclusive range of elements to
!      initialize.  In both cases the â€˜VALUEâ€™ is the corresponding
       initializer.  It is re-evaluated for each element of a
!      â€˜RANGE_EXPRâ€™.  If the â€˜INDEXâ€™ is â€˜NULL_TREEâ€™, then the initializer
       is for the next available array element.
  
       In the front end, you should not depend on the fields appearing in
*************** File: gccint.info,  Node: Unary and Bina
*** 12025,12086 ****
       (zeroed), unless the CONSTRUCTOR_NO_CLEARING flag is set, in which
       case their value becomes undefined.
  
! 'COMPOUND_LITERAL_EXPR'
       These nodes represent ISO C99 compound literals.  The
!      'COMPOUND_LITERAL_EXPR_DECL_EXPR' is a 'DECL_EXPR' containing an
!      anonymous 'VAR_DECL' for the unnamed object represented by the
!      compound literal; the 'DECL_INITIAL' of that 'VAR_DECL' is a
!      'CONSTRUCTOR' representing the brace-enclosed list of initializers
!      in the compound literal.  That anonymous 'VAR_DECL' can also be
!      accessed directly by the 'COMPOUND_LITERAL_EXPR_DECL' macro.
  
! 'SAVE_EXPR'
  
!      A 'SAVE_EXPR' represents an expression (possibly involving side
       effects) that is used more than once.  The side effects should
       occur only the first time the expression is evaluated.  Subsequent
       uses should just reuse the computed value.  The first operand to
!      the 'SAVE_EXPR' is the expression to evaluate.  The side effects
!      should be executed where the 'SAVE_EXPR' is first encountered in a
       depth-first preorder traversal of the expression tree.
  
! 'TARGET_EXPR'
!      A 'TARGET_EXPR' represents a temporary object.  The first operand
!      is a 'VAR_DECL' for the temporary variable.  The second operand is
       the initializer for the temporary.  The initializer is evaluated
       and, if non-void, copied (bitwise) into the temporary.  If the
       initializer is void, that means that it will perform the
       initialization itself.
  
!      Often, a 'TARGET_EXPR' occurs on the right-hand side of an
       assignment, or as the second operand to a comma-expression which is
       itself the right-hand side of an assignment, etc.  In this case, we
!      say that the 'TARGET_EXPR' is "normal"; otherwise, we say it is
!      "orphaned".  For a normal 'TARGET_EXPR' the temporary variable
       should be treated as an alias for the left-hand side of the
       assignment, rather than as a new temporary variable.
  
!      The third operand to the 'TARGET_EXPR', if present, is a
       cleanup-expression (i.e., destructor call) for the temporary.  If
       this expression is orphaned, then this expression must be executed
       when the statement containing this expression is complete.  These
       cleanups must always be executed in the order opposite to that in
       which they were encountered.  Note that if a temporary is created
       on one branch of a conditional operator (i.e., in the second or
!      third operand to a 'COND_EXPR'), the cleanup must be run only if
       that branch is actually executed.
  
! 'VA_ARG_EXPR'
       This node is used to implement support for the C/C++ variable
!      argument-list mechanism.  It represents expressions like 'va_arg
!      (ap, type)'.  Its 'TREE_TYPE' yields the tree representation for
!      'type' and its sole argument yields the representation for 'ap'.
  
! 'ANNOTATE_EXPR'
       This node is used to attach markers to an expression.  The first
!      operand is the annotated expression, the second is an 'INTEGER_CST'
!      with a value from 'enum annot_expr_kind', the third is an
!      'INTEGER_CST'.
  
  
  File: gccint.info,  Node: Vectors,  Prev: Unary and Binary Expressions,  Up: Expression trees
--- 12030,12091 ----
       (zeroed), unless the CONSTRUCTOR_NO_CLEARING flag is set, in which
       case their value becomes undefined.
  
! â€˜COMPOUND_LITERAL_EXPRâ€™
       These nodes represent ISO C99 compound literals.  The
!      â€˜COMPOUND_LITERAL_EXPR_DECL_EXPRâ€™ is a â€˜DECL_EXPRâ€™ containing an
!      anonymous â€˜VAR_DECLâ€™ for the unnamed object represented by the
!      compound literal; the â€˜DECL_INITIALâ€™ of that â€˜VAR_DECLâ€™ is a
!      â€˜CONSTRUCTORâ€™ representing the brace-enclosed list of initializers
!      in the compound literal.  That anonymous â€˜VAR_DECLâ€™ can also be
!      accessed directly by the â€˜COMPOUND_LITERAL_EXPR_DECLâ€™ macro.
  
! â€˜SAVE_EXPRâ€™
  
!      A â€˜SAVE_EXPRâ€™ represents an expression (possibly involving side
       effects) that is used more than once.  The side effects should
       occur only the first time the expression is evaluated.  Subsequent
       uses should just reuse the computed value.  The first operand to
!      the â€˜SAVE_EXPRâ€™ is the expression to evaluate.  The side effects
!      should be executed where the â€˜SAVE_EXPRâ€™ is first encountered in a
       depth-first preorder traversal of the expression tree.
  
! â€˜TARGET_EXPRâ€™
!      A â€˜TARGET_EXPRâ€™ represents a temporary object.  The first operand
!      is a â€˜VAR_DECLâ€™ for the temporary variable.  The second operand is
       the initializer for the temporary.  The initializer is evaluated
       and, if non-void, copied (bitwise) into the temporary.  If the
       initializer is void, that means that it will perform the
       initialization itself.
  
!      Often, a â€˜TARGET_EXPRâ€™ occurs on the right-hand side of an
       assignment, or as the second operand to a comma-expression which is
       itself the right-hand side of an assignment, etc.  In this case, we
!      say that the â€˜TARGET_EXPRâ€™ is "normal"; otherwise, we say it is
!      "orphaned".  For a normal â€˜TARGET_EXPRâ€™ the temporary variable
       should be treated as an alias for the left-hand side of the
       assignment, rather than as a new temporary variable.
  
!      The third operand to the â€˜TARGET_EXPRâ€™, if present, is a
       cleanup-expression (i.e., destructor call) for the temporary.  If
       this expression is orphaned, then this expression must be executed
       when the statement containing this expression is complete.  These
       cleanups must always be executed in the order opposite to that in
       which they were encountered.  Note that if a temporary is created
       on one branch of a conditional operator (i.e., in the second or
!      third operand to a â€˜COND_EXPRâ€™), the cleanup must be run only if
       that branch is actually executed.
  
! â€˜VA_ARG_EXPRâ€™
       This node is used to implement support for the C/C++ variable
!      argument-list mechanism.  It represents expressions like â€˜va_arg
!      (ap, type)â€™.  Its â€˜TREE_TYPEâ€™ yields the tree representation for
!      â€˜typeâ€™ and its sole argument yields the representation for â€˜apâ€™.
  
! â€˜ANNOTATE_EXPRâ€™
       This node is used to attach markers to an expression.  The first
!      operand is the annotated expression, the second is an â€˜INTEGER_CSTâ€™
!      with a value from â€˜enum annot_expr_kindâ€™, the third is an
!      â€˜INTEGER_CSTâ€™.
  
  
  File: gccint.info,  Node: Vectors,  Prev: Unary and Binary Expressions,  Up: Expression trees
*************** File: gccint.info,  Node: Vectors,  Prev
*** 12088,12107 ****
  10.6.4 Vectors
  --------------
  
! 'VEC_DUPLICATE_EXPR'
       This node has a single operand and represents a vector in which
       every element is equal to that operand.
  
! 'VEC_SERIES_EXPR'
       This node represents a vector formed from a scalar base and step,
       given as the first and second operands respectively.  Element I of
!      the result is equal to 'BASE + I*STEP'.
  
       This node is restricted to integral types, in order to avoid
       specifying the rounding behavior for floating-point types.
  
! 'VEC_LSHIFT_EXPR'
! 'VEC_RSHIFT_EXPR'
       These nodes represent whole vector left and right shifts,
       respectively.  The first operand is the vector to shift; it will
       always be of vector type.  The second operand is an expression for
--- 12093,12112 ----
  10.6.4 Vectors
  --------------
  
! â€˜VEC_DUPLICATE_EXPRâ€™
       This node has a single operand and represents a vector in which
       every element is equal to that operand.
  
! â€˜VEC_SERIES_EXPRâ€™
       This node represents a vector formed from a scalar base and step,
       given as the first and second operands respectively.  Element I of
!      the result is equal to â€˜BASE + I*STEPâ€™.
  
       This node is restricted to integral types, in order to avoid
       specifying the rounding behavior for floating-point types.
  
! â€˜VEC_LSHIFT_EXPRâ€™
! â€˜VEC_RSHIFT_EXPRâ€™
       These nodes represent whole vector left and right shifts,
       respectively.  The first operand is the vector to shift; it will
       always be of vector type.  The second operand is an expression for
*************** File: gccint.info,  Node: Vectors,  Prev
*** 12109,12247 ****
       undefined if the second operand is larger than or equal to the
       first operand's type size.
  
! 'VEC_WIDEN_MULT_HI_EXPR'
! 'VEC_WIDEN_MULT_LO_EXPR'
       These nodes represent widening vector multiplication of the high
       and low parts of the two input vectors, respectively.  Their
!      operands are vectors that contain the same number of elements ('N')
       of the same integral type.  The result is a vector that contains
       half as many elements, of an integral type whose size is twice as
!      wide.  In the case of 'VEC_WIDEN_MULT_HI_EXPR' the high 'N/2'
       elements of the two vector are multiplied to produce the vector of
!      'N/2' products.  In the case of 'VEC_WIDEN_MULT_LO_EXPR' the low
!      'N/2' elements of the two vector are multiplied to produce the
!      vector of 'N/2' products.
  
! 'IFN_VEC_WIDEN_PLUS'
       This internal function represents widening vector addition of two
       input vectors.  Its operands are vectors that contain the same
!      number of elements ('N') of the same integral type.  The result is
!      a vector that contains the same amount ('N') of elements, of an
       integral type whose size is twice as wide, as the input vectors.
       If the current target does not implement the corresponding optabs
       the vectorizer may choose to split it into either a pair of
!      'IFN_VEC_WIDEN_PLUS_HI' and 'IFN_VEC_WIDEN_PLUS_LO' or
!      'IFN_VEC_WIDEN_PLUS_EVEN' and 'IFN_VEC_WIDEN_PLUS_ODD', depending
       on what optabs the target implements.
  
! 'IFN_VEC_WIDEN_PLUS_HI'
! 'IFN_VEC_WIDEN_PLUS_LO'
       These internal functions represent widening vector addition of the
       high and low parts of the two input vectors, respectively.  Their
!      operands are vectors that contain the same number of elements ('N')
       of the same integral type.  The result is a vector that contains
       half as many elements, of an integral type whose size is twice as
!      wide.  In the case of 'IFN_VEC_WIDEN_PLUS_HI' the high 'N/2'
       elements of the two vectors are added to produce the vector of
!      'N/2' additions.  In the case of 'IFN_VEC_WIDEN_PLUS_LO' the low
!      'N/2' elements of the two vectors are added to produce the vector
!      of 'N/2' additions.
  
! 'IFN_VEC_WIDEN_PLUS_EVEN'
! 'IFN_VEC_WIDEN_PLUS_ODD'
       These internal functions represent widening vector addition of the
       even and odd elements of the two input vectors, respectively.
       Their operands are vectors that contain the same number of elements
!      ('N') of the same integral type.  The result is a vector that
       contains half as many elements, of an integral type whose size is
!      twice as wide.  In the case of 'IFN_VEC_WIDEN_PLUS_EVEN' the even
!      'N/2' elements of the two vectors are added to produce the vector
!      of 'N/2' additions.  In the case of 'IFN_VEC_WIDEN_PLUS_ODD' the
!      odd 'N/2' elements of the two vectors are added to produce the
!      vector of 'N/2' additions.
  
! 'IFN_VEC_WIDEN_MINUS'
       This internal function represents widening vector subtraction of
       two input vectors.  Its operands are vectors that contain the same
!      number of elements ('N') of the same integral type.  The result is
!      a vector that contains the same amount ('N') of elements, of an
       integral type whose size is twice as wide, as the input vectors.
       If the current target does not implement the corresponding optabs
       the vectorizer may choose to split it into either a pair of
!      'IFN_VEC_WIDEN_MINUS_HI' and 'IFN_VEC_WIDEN_MINUS_LO' or
!      'IFN_VEC_WIDEN_MINUS_EVEN' and 'IFN_VEC_WIDEN_MINUS_ODD', depending
       on what optabs the target implements.
  
! 'IFN_VEC_WIDEN_MINUS_HI'
! 'IFN_VEC_WIDEN_MINUS_LO'
       These internal functions represent widening vector subtraction of
       the high and low parts of the two input vectors, respectively.
       Their operands are vectors that contain the same number of elements
!      ('N') of the same integral type.  The high/low elements of the
       second vector are subtracted from the high/low elements of the
       first.  The result is a vector that contains half as many elements,
       of an integral type whose size is twice as wide.  In the case of
!      'IFN_VEC_WIDEN_MINUS_HI' the high 'N/2' elements of the second
!      vector are subtracted from the high 'N/2' of the first to produce
!      the vector of 'N/2' subtractions.  In the case of
!      'IFN_VEC_WIDEN_MINUS_LO' the low 'N/2' elements of the second
!      vector are subtracted from the low 'N/2' of the first to produce
!      the vector of 'N/2' subtractions.
  
! 'IFN_VEC_WIDEN_MINUS_EVEN'
! 'IFN_VEC_WIDEN_MINUS_ODD'
       These internal functions represent widening vector subtraction of
       the even and odd parts of the two input vectors, respectively.
       Their operands are vectors that contain the same number of elements
!      ('N') of the same integral type.  The even/odd elements of the
       second vector are subtracted from the even/odd elements of the
       first.  The result is a vector that contains half as many elements,
       of an integral type whose size is twice as wide.  In the case of
!      'IFN_VEC_WIDEN_MINUS_EVEN' the even 'N/2' elements of the second
!      vector are subtracted from the even 'N/2' of the first to produce
!      the vector of 'N/2' subtractions.  In the case of
!      'IFN_VEC_WIDEN_MINUS_ODD' the odd 'N/2' elements of the second
!      vector are subtracted from the odd 'N/2' of the first to produce
!      the vector of 'N/2' subtractions.
  
! 'VEC_UNPACK_HI_EXPR'
! 'VEC_UNPACK_LO_EXPR'
       These nodes represent unpacking of the high and low parts of the
       input vector, respectively.  The single operand is a vector that
!      contains 'N' elements of the same integral or floating point type.
       The result is a vector that contains half as many elements, of an
       integral or floating point type whose size is twice as wide.  In
!      the case of 'VEC_UNPACK_HI_EXPR' the high 'N/2' elements of the
       vector are extracted and widened (promoted).  In the case of
!      'VEC_UNPACK_LO_EXPR' the low 'N/2' elements of the vector are
       extracted and widened (promoted).
  
! 'VEC_UNPACK_FLOAT_HI_EXPR'
! 'VEC_UNPACK_FLOAT_LO_EXPR'
       These nodes represent unpacking of the high and low parts of the
       input vector, where the values are converted from fixed point to
!      floating point.  The single operand is a vector that contains 'N'
       elements of the same integral type.  The result is a vector that
       contains half as many elements of a floating point type whose size
!      is twice as wide.  In the case of 'VEC_UNPACK_FLOAT_HI_EXPR' the
!      high 'N/2' elements of the vector are extracted, converted and
!      widened.  In the case of 'VEC_UNPACK_FLOAT_LO_EXPR' the low 'N/2'
       elements of the vector are extracted, converted and widened.
  
! 'VEC_UNPACK_FIX_TRUNC_HI_EXPR'
! 'VEC_UNPACK_FIX_TRUNC_LO_EXPR'
       These nodes represent unpacking of the high and low parts of the
       input vector, where the values are truncated from floating point to
!      fixed point.  The single operand is a vector that contains 'N'
       elements of the same floating point type.  The result is a vector
       that contains half as many elements of an integral type whose size
!      is twice as wide.  In the case of 'VEC_UNPACK_FIX_TRUNC_HI_EXPR'
!      the high 'N/2' elements of the vector are extracted and converted
!      with truncation.  In the case of 'VEC_UNPACK_FIX_TRUNC_LO_EXPR' the
!      low 'N/2' elements of the vector are extracted and converted with
       truncation.
  
! 'VEC_PACK_TRUNC_EXPR'
       This node represents packing of truncated elements of the two input
       vectors into the output vector.  Input operands are vectors that
       contain the same number of elements of the same integral or
--- 12114,12252 ----
       undefined if the second operand is larger than or equal to the
       first operand's type size.
  
! â€˜VEC_WIDEN_MULT_HI_EXPRâ€™
! â€˜VEC_WIDEN_MULT_LO_EXPRâ€™
       These nodes represent widening vector multiplication of the high
       and low parts of the two input vectors, respectively.  Their
!      operands are vectors that contain the same number of elements (â€˜Nâ€™)
       of the same integral type.  The result is a vector that contains
       half as many elements, of an integral type whose size is twice as
!      wide.  In the case of â€˜VEC_WIDEN_MULT_HI_EXPRâ€™ the high â€˜N/2â€™
       elements of the two vector are multiplied to produce the vector of
!      â€˜N/2â€™ products.  In the case of â€˜VEC_WIDEN_MULT_LO_EXPRâ€™ the low
!      â€˜N/2â€™ elements of the two vector are multiplied to produce the
!      vector of â€˜N/2â€™ products.
  
! â€˜IFN_VEC_WIDEN_PLUSâ€™
       This internal function represents widening vector addition of two
       input vectors.  Its operands are vectors that contain the same
!      number of elements (â€˜Nâ€™) of the same integral type.  The result is
!      a vector that contains the same amount (â€˜Nâ€™) of elements, of an
       integral type whose size is twice as wide, as the input vectors.
       If the current target does not implement the corresponding optabs
       the vectorizer may choose to split it into either a pair of
!      â€˜IFN_VEC_WIDEN_PLUS_HIâ€™ and â€˜IFN_VEC_WIDEN_PLUS_LOâ€™ or
!      â€˜IFN_VEC_WIDEN_PLUS_EVENâ€™ and â€˜IFN_VEC_WIDEN_PLUS_ODDâ€™, depending
       on what optabs the target implements.
  
! â€˜IFN_VEC_WIDEN_PLUS_HIâ€™
! â€˜IFN_VEC_WIDEN_PLUS_LOâ€™
       These internal functions represent widening vector addition of the
       high and low parts of the two input vectors, respectively.  Their
!      operands are vectors that contain the same number of elements (â€˜Nâ€™)
       of the same integral type.  The result is a vector that contains
       half as many elements, of an integral type whose size is twice as
!      wide.  In the case of â€˜IFN_VEC_WIDEN_PLUS_HIâ€™ the high â€˜N/2â€™
       elements of the two vectors are added to produce the vector of
!      â€˜N/2â€™ additions.  In the case of â€˜IFN_VEC_WIDEN_PLUS_LOâ€™ the low
!      â€˜N/2â€™ elements of the two vectors are added to produce the vector
!      of â€˜N/2â€™ additions.
  
! â€˜IFN_VEC_WIDEN_PLUS_EVENâ€™
! â€˜IFN_VEC_WIDEN_PLUS_ODDâ€™
       These internal functions represent widening vector addition of the
       even and odd elements of the two input vectors, respectively.
       Their operands are vectors that contain the same number of elements
!      (â€˜Nâ€™) of the same integral type.  The result is a vector that
       contains half as many elements, of an integral type whose size is
!      twice as wide.  In the case of â€˜IFN_VEC_WIDEN_PLUS_EVENâ€™ the even
!      â€˜N/2â€™ elements of the two vectors are added to produce the vector
!      of â€˜N/2â€™ additions.  In the case of â€˜IFN_VEC_WIDEN_PLUS_ODDâ€™ the
!      odd â€˜N/2â€™ elements of the two vectors are added to produce the
!      vector of â€˜N/2â€™ additions.
  
! â€˜IFN_VEC_WIDEN_MINUSâ€™
       This internal function represents widening vector subtraction of
       two input vectors.  Its operands are vectors that contain the same
!      number of elements (â€˜Nâ€™) of the same integral type.  The result is
!      a vector that contains the same amount (â€˜Nâ€™) of elements, of an
       integral type whose size is twice as wide, as the input vectors.
       If the current target does not implement the corresponding optabs
       the vectorizer may choose to split it into either a pair of
!      â€˜IFN_VEC_WIDEN_MINUS_HIâ€™ and â€˜IFN_VEC_WIDEN_MINUS_LOâ€™ or
!      â€˜IFN_VEC_WIDEN_MINUS_EVENâ€™ and â€˜IFN_VEC_WIDEN_MINUS_ODDâ€™, depending
       on what optabs the target implements.
  
! â€˜IFN_VEC_WIDEN_MINUS_HIâ€™
! â€˜IFN_VEC_WIDEN_MINUS_LOâ€™
       These internal functions represent widening vector subtraction of
       the high and low parts of the two input vectors, respectively.
       Their operands are vectors that contain the same number of elements
!      (â€˜Nâ€™) of the same integral type.  The high/low elements of the
       second vector are subtracted from the high/low elements of the
       first.  The result is a vector that contains half as many elements,
       of an integral type whose size is twice as wide.  In the case of
!      â€˜IFN_VEC_WIDEN_MINUS_HIâ€™ the high â€˜N/2â€™ elements of the second
!      vector are subtracted from the high â€˜N/2â€™ of the first to produce
!      the vector of â€˜N/2â€™ subtractions.  In the case of
!      â€˜IFN_VEC_WIDEN_MINUS_LOâ€™ the low â€˜N/2â€™ elements of the second
!      vector are subtracted from the low â€˜N/2â€™ of the first to produce
!      the vector of â€˜N/2â€™ subtractions.
  
! â€˜IFN_VEC_WIDEN_MINUS_EVENâ€™
! â€˜IFN_VEC_WIDEN_MINUS_ODDâ€™
       These internal functions represent widening vector subtraction of
       the even and odd parts of the two input vectors, respectively.
       Their operands are vectors that contain the same number of elements
!      (â€˜Nâ€™) of the same integral type.  The even/odd elements of the
       second vector are subtracted from the even/odd elements of the
       first.  The result is a vector that contains half as many elements,
       of an integral type whose size is twice as wide.  In the case of
!      â€˜IFN_VEC_WIDEN_MINUS_EVENâ€™ the even â€˜N/2â€™ elements of the second
!      vector are subtracted from the even â€˜N/2â€™ of the first to produce
!      the vector of â€˜N/2â€™ subtractions.  In the case of
!      â€˜IFN_VEC_WIDEN_MINUS_ODDâ€™ the odd â€˜N/2â€™ elements of the second
!      vector are subtracted from the odd â€˜N/2â€™ of the first to produce
!      the vector of â€˜N/2â€™ subtractions.
  
! â€˜VEC_UNPACK_HI_EXPRâ€™
! â€˜VEC_UNPACK_LO_EXPRâ€™
       These nodes represent unpacking of the high and low parts of the
       input vector, respectively.  The single operand is a vector that
!      contains â€˜Nâ€™ elements of the same integral or floating point type.
       The result is a vector that contains half as many elements, of an
       integral or floating point type whose size is twice as wide.  In
!      the case of â€˜VEC_UNPACK_HI_EXPRâ€™ the high â€˜N/2â€™ elements of the
       vector are extracted and widened (promoted).  In the case of
!      â€˜VEC_UNPACK_LO_EXPRâ€™ the low â€˜N/2â€™ elements of the vector are
       extracted and widened (promoted).
  
! â€˜VEC_UNPACK_FLOAT_HI_EXPRâ€™
! â€˜VEC_UNPACK_FLOAT_LO_EXPRâ€™
       These nodes represent unpacking of the high and low parts of the
       input vector, where the values are converted from fixed point to
!      floating point.  The single operand is a vector that contains â€˜Nâ€™
       elements of the same integral type.  The result is a vector that
       contains half as many elements of a floating point type whose size
!      is twice as wide.  In the case of â€˜VEC_UNPACK_FLOAT_HI_EXPRâ€™ the
!      high â€˜N/2â€™ elements of the vector are extracted, converted and
!      widened.  In the case of â€˜VEC_UNPACK_FLOAT_LO_EXPRâ€™ the low â€˜N/2â€™
       elements of the vector are extracted, converted and widened.
  
! â€˜VEC_UNPACK_FIX_TRUNC_HI_EXPRâ€™
! â€˜VEC_UNPACK_FIX_TRUNC_LO_EXPRâ€™
       These nodes represent unpacking of the high and low parts of the
       input vector, where the values are truncated from floating point to
!      fixed point.  The single operand is a vector that contains â€˜Nâ€™
       elements of the same floating point type.  The result is a vector
       that contains half as many elements of an integral type whose size
!      is twice as wide.  In the case of â€˜VEC_UNPACK_FIX_TRUNC_HI_EXPRâ€™
!      the high â€˜N/2â€™ elements of the vector are extracted and converted
!      with truncation.  In the case of â€˜VEC_UNPACK_FIX_TRUNC_LO_EXPRâ€™ the
!      low â€˜N/2â€™ elements of the vector are extracted and converted with
       truncation.
  
! â€˜VEC_PACK_TRUNC_EXPRâ€™
       This node represents packing of truncated elements of the two input
       vectors into the output vector.  Input operands are vectors that
       contain the same number of elements of the same integral or
*************** File: gccint.info,  Node: Vectors,  Prev
*** 12250,12256 ****
       half as wide.  The elements of the two vectors are demoted and
       merged (concatenated) to form the output vector.
  
! 'VEC_PACK_SAT_EXPR'
       This node represents packing of elements of the two input vectors
       into the output vector using saturation.  Input operands are
       vectors that contain the same number of elements of the same
--- 12255,12261 ----
       half as wide.  The elements of the two vectors are demoted and
       merged (concatenated) to form the output vector.
  
! â€˜VEC_PACK_SAT_EXPRâ€™
       This node represents packing of elements of the two input vectors
       into the output vector using saturation.  Input operands are
       vectors that contain the same number of elements of the same
*************** File: gccint.info,  Node: Vectors,  Prev
*** 12259,12265 ****
       elements of the two vectors are demoted and merged (concatenated)
       to form the output vector.
  
! 'VEC_PACK_FIX_TRUNC_EXPR'
       This node represents packing of elements of the two input vectors
       into the output vector, where the values are converted from
       floating point to fixed point.  Input operands are vectors that
--- 12264,12270 ----
       elements of the two vectors are demoted and merged (concatenated)
       to form the output vector.
  
! â€˜VEC_PACK_FIX_TRUNC_EXPRâ€™
       This node represents packing of elements of the two input vectors
       into the output vector, where the values are converted from
       floating point to fixed point.  Input operands are vectors that
*************** File: gccint.info,  Node: Vectors,  Prev
*** 12268,12274 ****
       integral type whose size is half as wide.  The elements of the two
       vectors are merged (concatenated) to form the output vector.
  
! 'VEC_PACK_FLOAT_EXPR'
       This node represents packing of elements of the two input vectors
       into the output vector, where the values are converted from fixed
       point to floating point.  Input operands are vectors that contain
--- 12273,12279 ----
       integral type whose size is half as wide.  The elements of the two
       vectors are merged (concatenated) to form the output vector.
  
! â€˜VEC_PACK_FLOAT_EXPRâ€™
       This node represents packing of elements of the two input vectors
       into the output vector, where the values are converted from fixed
       point to floating point.  Input operands are vectors that contain
*************** File: gccint.info,  Node: Vectors,  Prev
*** 12277,12284 ****
       whose size is half as wide.  The elements of the two vectors are
       merged (concatenated) to form the output vector.
  
! 'VEC_COND_EXPR'
!      These nodes represent '?:' expressions.  The three operands must be
       vectors of the same size and number of elements.  The second and
       third operands must have the same type as the entire expression.
       The first operand is of signed integral vector type.  If an element
--- 12282,12289 ----
       whose size is half as wide.  The elements of the two vectors are
       merged (concatenated) to form the output vector.
  
! â€˜VEC_COND_EXPRâ€™
!      These nodes represent â€˜?:â€™ expressions.  The three operands must be
       vectors of the same size and number of elements.  The second and
       third operands must have the same type as the entire expression.
       The first operand is of signed integral vector type.  If an element
*************** File: gccint.info,  Node: Vectors,  Prev
*** 12287,12295 ****
       evaluates to a minus one value, it is taken from the second
       operand.  It should never evaluate to any other value currently,
       but optimizations should not rely on that property.  In contrast
!      with a 'COND_EXPR', all operands are always evaluated.
  
! 'SAD_EXPR'
       This node represents the Sum of Absolute Differences operation.
       The three operands must be vectors of integral types.  The first
       and second operand must have the same type.  The size of the vector
--- 12292,12300 ----
       evaluates to a minus one value, it is taken from the second
       operand.  It should never evaluate to any other value currently,
       but optimizations should not rely on that property.  In contrast
!      with a â€˜COND_EXPRâ€™, all operands are always evaluated.
  
! â€˜SAD_EXPRâ€™
       This node represents the Sum of Absolute Differences operation.
       The three operands must be vectors of integral types.  The first
       and second operand must have the same type.  The size of the vector
*************** File: gccint.info,  Node: Statements,  N
*** 12305,12312 ****
  ===============
  
  Most statements in GIMPLE are assignment statements, represented by
! 'GIMPLE_ASSIGN'.  No other C expressions can appear at statement level;
! a reference to a volatile object is converted into a 'GIMPLE_ASSIGN'.
  
   There are also several varieties of complex statements.
  
--- 12310,12317 ----
  ===============
  
  Most statements in GIMPLE are assignment statements, represented by
! â€˜GIMPLE_ASSIGNâ€™.  No other C expressions can appear at statement level;
! a reference to a volatile object is converted into a â€˜GIMPLE_ASSIGNâ€™.
  
   There are also several varieties of complex statements.
  
*************** File: gccint.info,  Node: Basic Statemen
*** 12327,12439 ****
  10.7.1 Basic Statements
  -----------------------
  
! 'ASM_EXPR'
  
       Used to represent an inline assembly statement.  For an inline
       assembly statement like:
            asm ("mov x, y");
!      The 'ASM_STRING' macro will return a 'STRING_CST' node for '"mov x,
!      y"'.  If the original statement made use of the extended-assembly
!      syntax, then 'ASM_OUTPUTS', 'ASM_INPUTS', and 'ASM_CLOBBERS' will
       be the outputs, inputs, and clobbers for the statement, represented
!      as 'STRING_CST' nodes.  The extended-assembly syntax looks like:
            asm ("fsinx %1,%0" : "=f" (result) : "f" (angle));
!      The first string is the 'ASM_STRING', containing the instruction
       template.  The next two strings are the output and inputs,
       respectively; this statement has no clobbers.  All of the strings
!      will be 'NUL'-terminated, and will contain no embedded
!      'NUL'-characters.
  
!      'ASM_BASIC_P' indicates whether the assembly statement used the
       "basic" syntax (as for the first example above) or whether it used
       the extended syntax (as for the second example above).  In many
       cases this information could be inferred from other accessors, but
       the flag is necessary to distinguish extended statements that have
       no operands from basic statements.  A key difference between the
!      two is that '%' substitution is applied to 'ASM_STRING' for
       extended statements but not for basic statements.
  
!      If the assembly statement is declared 'volatile', or if the
       statement was not an extended assembly statement, and is therefore
!      implicitly volatile, then the predicate 'ASM_VOLATILE_P' will hold
!      of the 'ASM_EXPR'.
  
! 'DECL_EXPR'
  
!      Used to represent a local declaration.  The 'DECL_EXPR_DECL' macro
       can be used to obtain the entity declared.  This declaration may be
!      a 'LABEL_DECL', indicating that the label declared is a local
       label.  (As an extension, GCC allows the declaration of labels with
!      scope.)  In C, this declaration may be a 'FUNCTION_DECL',
       indicating the use of the GCC nested function extension.  For more
       information, *note Functions::.
  
! 'LABEL_EXPR'
  
!      Used to represent a label.  The 'LABEL_DECL' declared by this
!      statement can be obtained with the 'LABEL_EXPR_LABEL' macro.  The
!      'IDENTIFIER_NODE' giving the name of the label can be obtained from
!      the 'LABEL_DECL' with 'DECL_NAME'.
  
! 'GOTO_EXPR'
  
!      Used to represent a 'goto' statement.  The 'GOTO_DESTINATION' will
!      usually be a 'LABEL_DECL'.  However, if the "computed goto"
!      extension has been used, the 'GOTO_DESTINATION' will be an
       arbitrary expression indicating the destination.  This expression
       will always have pointer type.
  
! 'RETURN_EXPR'
  
!      Used to represent a 'return' statement.  Operand 0 represents the
!      value to return.  It should either be the 'RESULT_DECL' for the
!      containing function, or a 'MODIFY_EXPR' or 'INIT_EXPR' setting the
!      function's 'RESULT_DECL'.  It will be 'NULL_TREE' if the statement
       was just
            return;
  
! 'LOOP_EXPR'
!      These nodes represent "infinite" loops.  The 'LOOP_EXPR_BODY'
       represents the body of the loop.  It should be executed forever,
!      unless an 'EXIT_EXPR' is encountered.
  
! 'EXIT_EXPR'
       These nodes represent conditional exits from the nearest enclosing
!      'LOOP_EXPR'.  The single operand is the condition; if it is
!      nonzero, then the loop should be exited.  An 'EXIT_EXPR' will only
!      appear within a 'LOOP_EXPR'.
  
! 'SWITCH_EXPR'
  
!      Used to represent a 'switch' statement.  The 'SWITCH_COND' is the
!      expression on which the switch is occurring.  The 'SWITCH_BODY' is
!      the body of the switch statement.  'SWITCH_ALL_CASES_P' is true if
       the switch includes a default label or the case label ranges cover
       all possible values of the condition expression.
  
!      Note that 'TREE_TYPE' for a 'SWITCH_EXPR' represents the original
       type of switch expression as given in the source, before any
       compiler conversions, instead of the type of the switch expression
       itself (which is not meaningful).
  
! 'CASE_LABEL_EXPR'
  
!      Use to represent a 'case' label, range of 'case' labels, or a
!      'default' label.  If 'CASE_LOW' is 'NULL_TREE', then this is a
!      'default' label.  Otherwise, if 'CASE_HIGH' is 'NULL_TREE', then
!      this is an ordinary 'case' label.  In this case, 'CASE_LOW' is an
!      expression giving the value of the label.  Both 'CASE_LOW' and
!      'CASE_HIGH' are 'INTEGER_CST' nodes.  These values will have the
       same type as the condition expression in the switch statement.
  
!      Otherwise, if both 'CASE_LOW' and 'CASE_HIGH' are defined, the
       statement is a range of case labels.  Such statements originate
       with the extension that allows users to write things of the form:
            case 2 ... 5:
!      The first value will be 'CASE_LOW', while the second will be
!      'CASE_HIGH'.
  
! 'DEBUG_BEGIN_STMT'
  
       Marks the beginning of a source statement, for purposes of debug
       information generation.
--- 12332,12444 ----
  10.7.1 Basic Statements
  -----------------------
  
! â€˜ASM_EXPRâ€™
  
       Used to represent an inline assembly statement.  For an inline
       assembly statement like:
            asm ("mov x, y");
!      The â€˜ASM_STRINGâ€™ macro will return a â€˜STRING_CSTâ€™ node for â€˜"mov x,
!      y"â€™.  If the original statement made use of the extended-assembly
!      syntax, then â€˜ASM_OUTPUTSâ€™, â€˜ASM_INPUTSâ€™, and â€˜ASM_CLOBBERSâ€™ will
       be the outputs, inputs, and clobbers for the statement, represented
!      as â€˜STRING_CSTâ€™ nodes.  The extended-assembly syntax looks like:
            asm ("fsinx %1,%0" : "=f" (result) : "f" (angle));
!      The first string is the â€˜ASM_STRINGâ€™, containing the instruction
       template.  The next two strings are the output and inputs,
       respectively; this statement has no clobbers.  All of the strings
!      will be â€˜NULâ€™-terminated, and will contain no embedded
!      â€˜NULâ€™-characters.
  
!      â€˜ASM_BASIC_Pâ€™ indicates whether the assembly statement used the
       "basic" syntax (as for the first example above) or whether it used
       the extended syntax (as for the second example above).  In many
       cases this information could be inferred from other accessors, but
       the flag is necessary to distinguish extended statements that have
       no operands from basic statements.  A key difference between the
!      two is that â€˜%â€™ substitution is applied to â€˜ASM_STRINGâ€™ for
       extended statements but not for basic statements.
  
!      If the assembly statement is declared â€˜volatileâ€™, or if the
       statement was not an extended assembly statement, and is therefore
!      implicitly volatile, then the predicate â€˜ASM_VOLATILE_Pâ€™ will hold
!      of the â€˜ASM_EXPRâ€™.
  
! â€˜DECL_EXPRâ€™
  
!      Used to represent a local declaration.  The â€˜DECL_EXPR_DECLâ€™ macro
       can be used to obtain the entity declared.  This declaration may be
!      a â€˜LABEL_DECLâ€™, indicating that the label declared is a local
       label.  (As an extension, GCC allows the declaration of labels with
!      scope.)  In C, this declaration may be a â€˜FUNCTION_DECLâ€™,
       indicating the use of the GCC nested function extension.  For more
       information, *note Functions::.
  
! â€˜LABEL_EXPRâ€™
  
!      Used to represent a label.  The â€˜LABEL_DECLâ€™ declared by this
!      statement can be obtained with the â€˜LABEL_EXPR_LABELâ€™ macro.  The
!      â€˜IDENTIFIER_NODEâ€™ giving the name of the label can be obtained from
!      the â€˜LABEL_DECLâ€™ with â€˜DECL_NAMEâ€™.
  
! â€˜GOTO_EXPRâ€™
  
!      Used to represent a â€˜gotoâ€™ statement.  The â€˜GOTO_DESTINATIONâ€™ will
!      usually be a â€˜LABEL_DECLâ€™.  However, if the "computed goto"
!      extension has been used, the â€˜GOTO_DESTINATIONâ€™ will be an
       arbitrary expression indicating the destination.  This expression
       will always have pointer type.
  
! â€˜RETURN_EXPRâ€™
  
!      Used to represent a â€˜returnâ€™ statement.  Operand 0 represents the
!      value to return.  It should either be the â€˜RESULT_DECLâ€™ for the
!      containing function, or a â€˜MODIFY_EXPRâ€™ or â€˜INIT_EXPRâ€™ setting the
!      function's â€˜RESULT_DECLâ€™.  It will be â€˜NULL_TREEâ€™ if the statement
       was just
            return;
  
! â€˜LOOP_EXPRâ€™
!      These nodes represent "infinite" loops.  The â€˜LOOP_EXPR_BODYâ€™
       represents the body of the loop.  It should be executed forever,
!      unless an â€˜EXIT_EXPRâ€™ is encountered.
  
! â€˜EXIT_EXPRâ€™
       These nodes represent conditional exits from the nearest enclosing
!      â€˜LOOP_EXPRâ€™.  The single operand is the condition; if it is
!      nonzero, then the loop should be exited.  An â€˜EXIT_EXPRâ€™ will only
!      appear within a â€˜LOOP_EXPRâ€™.
  
! â€˜SWITCH_EXPRâ€™
  
!      Used to represent a â€˜switchâ€™ statement.  The â€˜SWITCH_CONDâ€™ is the
!      expression on which the switch is occurring.  The â€˜SWITCH_BODYâ€™ is
!      the body of the switch statement.  â€˜SWITCH_ALL_CASES_Pâ€™ is true if
       the switch includes a default label or the case label ranges cover
       all possible values of the condition expression.
  
!      Note that â€˜TREE_TYPEâ€™ for a â€˜SWITCH_EXPRâ€™ represents the original
       type of switch expression as given in the source, before any
       compiler conversions, instead of the type of the switch expression
       itself (which is not meaningful).
  
! â€˜CASE_LABEL_EXPRâ€™
  
!      Use to represent a â€˜caseâ€™ label, range of â€˜caseâ€™ labels, or a
!      â€˜defaultâ€™ label.  If â€˜CASE_LOWâ€™ is â€˜NULL_TREEâ€™, then this is a
!      â€˜defaultâ€™ label.  Otherwise, if â€˜CASE_HIGHâ€™ is â€˜NULL_TREEâ€™, then
!      this is an ordinary â€˜caseâ€™ label.  In this case, â€˜CASE_LOWâ€™ is an
!      expression giving the value of the label.  Both â€˜CASE_LOWâ€™ and
!      â€˜CASE_HIGHâ€™ are â€˜INTEGER_CSTâ€™ nodes.  These values will have the
       same type as the condition expression in the switch statement.
  
!      Otherwise, if both â€˜CASE_LOWâ€™ and â€˜CASE_HIGHâ€™ are defined, the
       statement is a range of case labels.  Such statements originate
       with the extension that allows users to write things of the form:
            case 2 ... 5:
!      The first value will be â€˜CASE_LOWâ€™, while the second will be
!      â€˜CASE_HIGHâ€™.
  
! â€˜DEBUG_BEGIN_STMTâ€™
  
       Marks the beginning of a source statement, for purposes of debug
       information generation.
*************** File: gccint.info,  Node: Blocks,  Next:
*** 12445,12476 ****
  -------------
  
  Block scopes and the variables they declare in GENERIC are expressed
! using the 'BIND_EXPR' code, which in previous versions of GCC was
  primarily used for the C statement-expression extension.
  
!  Variables in a block are collected into 'BIND_EXPR_VARS' in declaration
! order through their 'TREE_CHAIN' field.  Any runtime initialization is
! moved out of 'DECL_INITIAL' and into a statement in the controlled
  block.  When gimplifying from C or C++, this initialization replaces the
! 'DECL_STMT'.  These variables will never require cleanups.  The scope of
  these variables is just the body
  
   Variable-length arrays (VLAs) complicate this process, as their size
  often refers to variables initialized earlier in the block and their
  initialization involves an explicit stack allocation.  To handle this,
  we add an indirection and replace them with a pointer to stack space
! allocated by means of 'alloca'.  In most cases, we also arrange for this
! space to be reclaimed when the enclosing 'BIND_EXPR' is exited, the
! exception to this being when there is an explicit call to 'alloca' in
  the source code, in which case the stack is left depressed on exit of
! the 'BIND_EXPR'.
  
!  A C++ program will usually contain more 'BIND_EXPR's than there are
  syntactic blocks in the source code, since several C++ constructs have
  implicit scopes associated with them.  On the other hand, although the
  C++ front end uses pseudo-scopes to handle cleanups for objects with
  destructors, these don't translate into the GIMPLE form; multiple
! declarations at the same level use the same 'BIND_EXPR'.
  
  
  File: gccint.info,  Node: Statement Sequences,  Next: Empty Statements,  Prev: Blocks,  Up: Statements
--- 12450,12481 ----
  -------------
  
  Block scopes and the variables they declare in GENERIC are expressed
! using the â€˜BIND_EXPRâ€™ code, which in previous versions of GCC was
  primarily used for the C statement-expression extension.
  
!  Variables in a block are collected into â€˜BIND_EXPR_VARSâ€™ in declaration
! order through their â€˜TREE_CHAINâ€™ field.  Any runtime initialization is
! moved out of â€˜DECL_INITIALâ€™ and into a statement in the controlled
  block.  When gimplifying from C or C++, this initialization replaces the
! â€˜DECL_STMTâ€™.  These variables will never require cleanups.  The scope of
  these variables is just the body
  
   Variable-length arrays (VLAs) complicate this process, as their size
  often refers to variables initialized earlier in the block and their
  initialization involves an explicit stack allocation.  To handle this,
  we add an indirection and replace them with a pointer to stack space
! allocated by means of â€˜allocaâ€™.  In most cases, we also arrange for this
! space to be reclaimed when the enclosing â€˜BIND_EXPRâ€™ is exited, the
! exception to this being when there is an explicit call to â€˜allocaâ€™ in
  the source code, in which case the stack is left depressed on exit of
! the â€˜BIND_EXPRâ€™.
  
!  A C++ program will usually contain more â€˜BIND_EXPRâ€™s than there are
  syntactic blocks in the source code, since several C++ constructs have
  implicit scopes associated with them.  On the other hand, although the
  C++ front end uses pseudo-scopes to handle cleanups for objects with
  destructors, these don't translate into the GIMPLE form; multiple
! declarations at the same level use the same â€˜BIND_EXPRâ€™.
  
  
  File: gccint.info,  Node: Statement Sequences,  Next: Empty Statements,  Prev: Blocks,  Up: Statements
*************** File: gccint.info,  Node: Statement Sequ
*** 12479,12486 ****
  --------------------------
  
  Multiple statements at the same nesting level are collected into a
! 'STATEMENT_LIST'.  Statement lists are modified and traversed using the
! interface in 'tree-iterator.h'.
  
  
  File: gccint.info,  Node: Empty Statements,  Next: Jumps,  Prev: Statement Sequences,  Up: Statements
--- 12484,12491 ----
  --------------------------
  
  Multiple statements at the same nesting level are collected into a
! â€˜STATEMENT_LISTâ€™.  Statement lists are modified and traversed using the
! interface in â€˜tree-iterator.hâ€™.
  
  
  File: gccint.info,  Node: Empty Statements,  Next: Jumps,  Prev: Statement Sequences,  Up: Statements
*************** File: gccint.info,  Node: Empty Statemen
*** 12491,12501 ****
  Whenever possible, statements with no effect are discarded.  But if they
  are nested within another construct which cannot be discarded for some
  reason, they are instead replaced with an empty statement, generated by
! 'build_empty_stmt'.  Initially, all empty statements were shared, after
  the pattern of the Java front end, but this caused a lot of trouble in
  practice.
  
!  An empty statement is represented as '(void)0'.
  
  
  File: gccint.info,  Node: Jumps,  Next: Cleanups,  Prev: Empty Statements,  Up: Statements
--- 12496,12506 ----
  Whenever possible, statements with no effect are discarded.  But if they
  are nested within another construct which cannot be discarded for some
  reason, they are instead replaced with an empty statement, generated by
! â€˜build_empty_stmtâ€™.  Initially, all empty statements were shared, after
  the pattern of the Java front end, but this caused a lot of trouble in
  practice.
  
!  An empty statement is represented as â€˜(void)0â€™.
  
  
  File: gccint.info,  Node: Jumps,  Next: Cleanups,  Prev: Empty Statements,  Up: Statements
*************** File: gccint.info,  Node: Jumps,  Next:
*** 12503,12519 ****
  10.7.5 Jumps
  ------------
  
! Other jumps are expressed by either 'GOTO_EXPR' or 'RETURN_EXPR'.
  
!  The operand of a 'GOTO_EXPR' must be either a label or a variable
  containing the address to jump to.
  
!  The operand of a 'RETURN_EXPR' is either 'NULL_TREE', 'RESULT_DECL', or
! a 'MODIFY_EXPR' which sets the return value.  It would be nice to move
! the 'MODIFY_EXPR' into a separate statement, but the special return
! semantics in 'expand_return' make that difficult.  It may still happen
  in the future, perhaps by moving most of that logic into
! 'expand_assignment'.
  
  
  File: gccint.info,  Node: Cleanups,  Next: OpenMP,  Prev: Jumps,  Up: Statements
--- 12508,12524 ----
  10.7.5 Jumps
  ------------
  
! Other jumps are expressed by either â€˜GOTO_EXPRâ€™ or â€˜RETURN_EXPRâ€™.
  
!  The operand of a â€˜GOTO_EXPRâ€™ must be either a label or a variable
  containing the address to jump to.
  
!  The operand of a â€˜RETURN_EXPRâ€™ is either â€˜NULL_TREEâ€™, â€˜RESULT_DECLâ€™, or
! a â€˜MODIFY_EXPRâ€™ which sets the return value.  It would be nice to move
! the â€˜MODIFY_EXPRâ€™ into a separate statement, but the special return
! semantics in â€˜expand_returnâ€™ make that difficult.  It may still happen
  in the future, perhaps by moving most of that logic into
! â€˜expand_assignmentâ€™.
  
  
  File: gccint.info,  Node: Cleanups,  Next: OpenMP,  Prev: Jumps,  Up: Statements
*************** File: gccint.info,  Node: Cleanups,  Nex
*** 12522,12528 ****
  ---------------
  
  Destructors for local C++ objects and similar dynamic cleanups are
! represented in GIMPLE by a 'TRY_FINALLY_EXPR'.  'TRY_FINALLY_EXPR' has
  two operands, both of which are a sequence of statements to execute.
  The first sequence is executed.  When it completes the second sequence
  is executed.
--- 12527,12533 ----
  ---------------
  
  Destructors for local C++ objects and similar dynamic cleanups are
! represented in GIMPLE by a â€˜TRY_FINALLY_EXPRâ€™.  â€˜TRY_FINALLY_EXPRâ€™ has
  two operands, both of which are a sequence of statements to execute.
  The first sequence is executed.  When it completes the second sequence
  is executed.
*************** is executed.
*** 12531,12546 ****
  
    1. Execute the last statement in the sequence and fall off the end.
  
!   2. Execute a goto statement ('GOTO_EXPR') to an ordinary label outside
       the sequence.
  
!   3. Execute a return statement ('RETURN_EXPR').
  
    4. Throw an exception.  This is currently not explicitly represented
       in GIMPLE.
  
   The second sequence is not executed if the first sequence completes by
! calling 'setjmp' or 'exit' or any other function that does not return.
  The second sequence is also not executed if the first sequence completes
  via a non-local goto or a computed goto (in general the compiler does
  not know whether such a goto statement exits the first sequence or not,
--- 12536,12551 ----
  
    1. Execute the last statement in the sequence and fall off the end.
  
!   2. Execute a goto statement (â€˜GOTO_EXPRâ€™) to an ordinary label outside
       the sequence.
  
!   3. Execute a return statement (â€˜RETURN_EXPRâ€™).
  
    4. Throw an exception.  This is currently not explicitly represented
       in GIMPLE.
  
   The second sequence is not executed if the first sequence completes by
! calling â€˜setjmpâ€™ or â€˜exitâ€™ or any other function that does not return.
  The second sequence is also not executed if the first sequence completes
  via a non-local goto or a computed goto (in general the compiler does
  not know whether such a goto statement exits the first sequence or not,
*************** so we assume that it doesn't).
*** 12550,12566 ****
  falling off the end, execution continues wherever the first sequence
  would have continued, by falling off the end, or doing a goto, etc.
  
!  If the second sequence is an 'EH_ELSE_EXPR' selector, then the sequence
  in its first operand is used when the first sequence completes normally,
  and that in its second operand is used for exceptional cleanups, i.e.,
  when an exception propagates out of the first sequence.
  
!  'TRY_FINALLY_EXPR' complicates the flow graph, since the cleanup needs
  to appear on every edge out of the controlled block; this reduces the
  freedom to move code across these edges.  Therefore, the EH lowering
  pass which runs before most of the optimization passes eliminates these
  expressions by explicitly adding the cleanup to each edge.  Rethrowing
! the exception is represented using 'RESX_EXPR'.
  
  
  File: gccint.info,  Node: OpenMP,  Next: OpenACC,  Prev: Cleanups,  Up: Statements
--- 12555,12571 ----
  falling off the end, execution continues wherever the first sequence
  would have continued, by falling off the end, or doing a goto, etc.
  
!  If the second sequence is an â€˜EH_ELSE_EXPRâ€™ selector, then the sequence
  in its first operand is used when the first sequence completes normally,
  and that in its second operand is used for exceptional cleanups, i.e.,
  when an exception propagates out of the first sequence.
  
!  â€˜TRY_FINALLY_EXPRâ€™ complicates the flow graph, since the cleanup needs
  to appear on every edge out of the controlled block; this reduces the
  freedom to move code across these edges.  Therefore, the EH lowering
  pass which runs before most of the optimization passes eliminates these
  expressions by explicitly adding the cleanup to each edge.  Rethrowing
! the exception is represented using â€˜RESX_EXPRâ€™.
  
  
  File: gccint.info,  Node: OpenMP,  Next: OpenACC,  Prev: Cleanups,  Up: Statements
*************** File: gccint.info,  Node: OpenMP,  Next:
*** 12568,12608 ****
  10.7.7 OpenMP
  -------------
  
! All the statements starting with 'OMP_' represent directives and clauses
  used by the OpenMP API <https://www.openmp.org>.
  
! 'OMP_PARALLEL'
  
!      Represents '#pragma omp parallel [clause1 ... clauseN]'.  It has
       four operands:
  
!      Operand 'OMP_PARALLEL_BODY' is valid while in GENERIC and High
       GIMPLE forms.  It contains the body of code to be executed by all
!      the threads.  During GIMPLE lowering, this operand becomes 'NULL'
!      and the body is emitted linearly after 'OMP_PARALLEL'.
  
!      Operand 'OMP_PARALLEL_CLAUSES' is the list of clauses associated
       with the directive.
  
!      Operand 'OMP_PARALLEL_FN' is created by 'pass_lower_omp', it
!      contains the 'FUNCTION_DECL' for the function that will contain the
       body of the parallel region.
  
!      Operand 'OMP_PARALLEL_DATA_ARG' is also created by
!      'pass_lower_omp'.  If there are shared variables to be communicated
!      to the children threads, this operand will contain the 'VAR_DECL'
       that contains all the shared values and variables.
  
! 'OMP_FOR'
! 'OMP_SIMD'
! 'OMP_DISTRIBUTE'
! 'OMP_TASKLOOP'
! 'OMP_LOOP'
  
!      Represents '#pragma omp for [clause1 ... clauseN]' and related loop
       constructs (respectively).
  
!      A single 'OMP_FOR' node represents an entire nest of collapsed
       loops; as noted below, some of its arguments are vectors of length
       equal to the collapse depth, and the corresponding elements holding
       data specific to a particular loop in the nest.  These vectors are
--- 12573,12613 ----
  10.7.7 OpenMP
  -------------
  
! All the statements starting with â€˜OMP_â€™ represent directives and clauses
  used by the OpenMP API <https://www.openmp.org>.
  
! â€˜OMP_PARALLELâ€™
  
!      Represents â€˜#pragma omp parallel [clause1 ... clauseN]â€™.  It has
       four operands:
  
!      Operand â€˜OMP_PARALLEL_BODYâ€™ is valid while in GENERIC and High
       GIMPLE forms.  It contains the body of code to be executed by all
!      the threads.  During GIMPLE lowering, this operand becomes â€˜NULLâ€™
!      and the body is emitted linearly after â€˜OMP_PARALLELâ€™.
  
!      Operand â€˜OMP_PARALLEL_CLAUSESâ€™ is the list of clauses associated
       with the directive.
  
!      Operand â€˜OMP_PARALLEL_FNâ€™ is created by â€˜pass_lower_ompâ€™, it
!      contains the â€˜FUNCTION_DECLâ€™ for the function that will contain the
       body of the parallel region.
  
!      Operand â€˜OMP_PARALLEL_DATA_ARGâ€™ is also created by
!      â€˜pass_lower_ompâ€™.  If there are shared variables to be communicated
!      to the children threads, this operand will contain the â€˜VAR_DECLâ€™
       that contains all the shared values and variables.
  
! â€˜OMP_FORâ€™
! â€˜OMP_SIMDâ€™
! â€˜OMP_DISTRIBUTEâ€™
! â€˜OMP_TASKLOOPâ€™
! â€˜OMP_LOOPâ€™
  
!      Represents â€˜#pragma omp for [clause1 ... clauseN]â€™ and related loop
       constructs (respectively).
  
!      A single â€˜OMP_FORâ€™ node represents an entire nest of collapsed
       loops; as noted below, some of its arguments are vectors of length
       equal to the collapse depth, and the corresponding elements holding
       data specific to a particular loop in the nest.  These vectors are
*************** used by the OpenMP API <https://www.open
*** 12611,12652 ****
  
       These constructs have seven operands:
  
!      Operand 'OMP_FOR_BODY' contains the loop body.
  
!      Operand 'OMP_FOR_CLAUSES' is the list of clauses associated with
       the directive.
  
!      Operand 'OMP_FOR_INIT' is a vector containing iteration variable
!      initializations of the form 'VAR = N1'.
  
!      Operand 'OMP_FOR_COND' is vector containing loop conditional
!      expressions of the form 'VAR {<,>,<=,>=,!=} N2'.
  
!      Operand 'OMP_FOR_INCR' is a vector containing loop index increment
!      expressions of the form 'VAR {+=,-=} INCR'.
  
!      Operand 'OMP_FOR_PRE_BODY' contains side effect code from operands
!      'OMP_FOR_INIT', 'OMP_FOR_COND' and 'OMP_FOR_INCR'.  These side
!      effects are part of the 'OMP_FOR' block but must be evaluated
!      before the start of loop body.  'OMP_FOR_PRE_BODY' specifically
!      includes 'DECL_EXPR's for iteration variables that are declared in
!      the nested 'for' loops.  Note this field is not a vector; it may be
       null, but otherwise is usually a statement list collecting the side
       effect code from all the collapsed loops.
  
!      Operand 'OMP_FOR_ORIG_DECLS' holds 'VAR_DECLS' for the original
       user-specified iterator variables in the source code.  In some
!      cases, like C++ class iterators or range 'for' with decomposition,
!      the 'for' loop is rewritten by the front end to use a temporary
       iteration variable.  The purpose of this field is to make the
       original variables available to the gimplifier so it can adjust
       their data-sharing attributes and diagnose errors.
!      'OMP_FOR_ORIG_DECLS' is a vector field, with each element holding a
!      list of 'VAR_DECLS' for the corresponding collapse level.
  
!      The loop index variable 'VAR' must be an integer variable, which is
       implicitly private to each thread.  For rectangular loops, the
!      bounds 'N1' and 'N2' and the increment expression 'INCR' are
       required to be loop-invariant integer expressions that are
       evaluated without any synchronization.  The evaluation order,
       frequency of evaluation and side effects are otherwise unspecified
--- 12616,12657 ----
  
       These constructs have seven operands:
  
!      Operand â€˜OMP_FOR_BODYâ€™ contains the loop body.
  
!      Operand â€˜OMP_FOR_CLAUSESâ€™ is the list of clauses associated with
       the directive.
  
!      Operand â€˜OMP_FOR_INITâ€™ is a vector containing iteration variable
!      initializations of the form â€˜VAR = N1â€™.
  
!      Operand â€˜OMP_FOR_CONDâ€™ is vector containing loop conditional
!      expressions of the form â€˜VAR {<,>,<=,>=,!=} N2â€™.
  
!      Operand â€˜OMP_FOR_INCRâ€™ is a vector containing loop index increment
!      expressions of the form â€˜VAR {+=,-=} INCRâ€™.
  
!      Operand â€˜OMP_FOR_PRE_BODYâ€™ contains side effect code from operands
!      â€˜OMP_FOR_INITâ€™, â€˜OMP_FOR_CONDâ€™ and â€˜OMP_FOR_INCRâ€™.  These side
!      effects are part of the â€˜OMP_FORâ€™ block but must be evaluated
!      before the start of loop body.  â€˜OMP_FOR_PRE_BODYâ€™ specifically
!      includes â€˜DECL_EXPRâ€™s for iteration variables that are declared in
!      the nested â€˜forâ€™ loops.  Note this field is not a vector; it may be
       null, but otherwise is usually a statement list collecting the side
       effect code from all the collapsed loops.
  
!      Operand â€˜OMP_FOR_ORIG_DECLSâ€™ holds â€˜VAR_DECLSâ€™ for the original
       user-specified iterator variables in the source code.  In some
!      cases, like C++ class iterators or range â€˜forâ€™ with decomposition,
!      the â€˜forâ€™ loop is rewritten by the front end to use a temporary
       iteration variable.  The purpose of this field is to make the
       original variables available to the gimplifier so it can adjust
       their data-sharing attributes and diagnose errors.
!      â€˜OMP_FOR_ORIG_DECLSâ€™ is a vector field, with each element holding a
!      list of â€˜VAR_DECLSâ€™ for the corresponding collapse level.
  
!      The loop index variable â€˜VARâ€™ must be an integer variable, which is
       implicitly private to each thread.  For rectangular loops, the
!      bounds â€˜N1â€™ and â€˜N2â€™ and the increment expression â€˜INCRâ€™ are
       required to be loop-invariant integer expressions that are
       evaluated without any synchronization.  The evaluation order,
       frequency of evaluation and side effects are otherwise unspecified
*************** used by the OpenMP API <https://www.open
*** 12654,12737 ****
  
       For non-rectangular loops, in which the bounds of an inner loop
       depend on the index of an outer loop, the bit
!      'OMP_FOR_NON_RECTANGULAR' must be set.  In this case 'N1' and 'N2'
!      are not ordinary expressions, but instead a 'TREE_VEC' with three
!      elements: the 'DECL' for the outer loop variable, a multiplication
       factor, and an offset.
  
! 'OMP_SECTIONS'
  
!      Represents '#pragma omp sections [clause1 ... clauseN]'.
  
!      Operand 'OMP_SECTIONS_BODY' contains the sections body, which in
!      turn contains a set of 'OMP_SECTION' nodes for each of the
!      concurrent sections delimited by '#pragma omp section'.
  
!      Operand 'OMP_SECTIONS_CLAUSES' is the list of clauses associated
       with the directive.
  
! 'OMP_SECTION'
  
!      Section delimiter for 'OMP_SECTIONS'.
  
! 'OMP_SINGLE'
  
!      Represents '#pragma omp single'.
  
!      Operand 'OMP_SINGLE_BODY' contains the body of code to be executed
       by a single thread.
  
!      Operand 'OMP_SINGLE_CLAUSES' is the list of clauses associated with
       the directive.
  
! 'OMP_MASTER'
  
!      Represents '#pragma omp master'.
  
!      Operand 'OMP_MASTER_BODY' contains the body of code to be executed
       by the master thread.
  
! 'OMP_ORDERED'
  
!      Represents '#pragma omp ordered'.
  
!      Operand 'OMP_ORDERED_BODY' contains the body of code to be executed
       in the sequential order dictated by the loop index variable.
  
! 'OMP_CRITICAL'
  
!      Represents '#pragma omp critical [name]'.
  
!      Operand 'OMP_CRITICAL_BODY' is the critical section.
  
!      Operand 'OMP_CRITICAL_NAME' is an optional identifier to label the
       critical section.
  
! 'OMP_RETURN'
  
       This does not represent any OpenMP directive, it is an artificial
       marker to indicate the end of the body of an OpenMP.  It is used by
!      the flow graph ('tree-cfg.cc') and OpenMP region building code
!      ('omp-low.cc').
  
! 'OMP_CONTINUE'
  
       Similarly, this instruction does not represent an OpenMP directive,
!      it is used by 'OMP_FOR' (and similar codes) as well as
!      'OMP_SECTIONS' to mark the place where the code needs to loop to
       the next iteration, or the next section, respectively.
  
!      In some cases, 'OMP_CONTINUE' is placed right before 'OMP_RETURN'.
       But if there are cleanups that need to occur right after the
!      looping body, it will be emitted between 'OMP_CONTINUE' and
!      'OMP_RETURN'.
  
! 'OMP_STRUCTURED_BLOCK'
  
       This is another statement that doesn't correspond to an OpenMP
       directive.  It is used to mark sections of code in another
       directive that must be structured block sequences, in particular
!      for sequences of intervening code in the body of an 'OMP_FOR'.  It
       is not necessary to use this when the entire body of a directive is
       required to be a structured block sequence, since that is implicit
       in the representation of the corresponding node.
--- 12659,12742 ----
  
       For non-rectangular loops, in which the bounds of an inner loop
       depend on the index of an outer loop, the bit
!      â€˜OMP_FOR_NON_RECTANGULARâ€™ must be set.  In this case â€˜N1â€™ and â€˜N2â€™
!      are not ordinary expressions, but instead a â€˜TREE_VECâ€™ with three
!      elements: the â€˜DECLâ€™ for the outer loop variable, a multiplication
       factor, and an offset.
  
! â€˜OMP_SECTIONSâ€™
  
!      Represents â€˜#pragma omp sections [clause1 ... clauseN]â€™.
  
!      Operand â€˜OMP_SECTIONS_BODYâ€™ contains the sections body, which in
!      turn contains a set of â€˜OMP_SECTIONâ€™ nodes for each of the
!      concurrent sections delimited by â€˜#pragma omp sectionâ€™.
  
!      Operand â€˜OMP_SECTIONS_CLAUSESâ€™ is the list of clauses associated
       with the directive.
  
! â€˜OMP_SECTIONâ€™
  
!      Section delimiter for â€˜OMP_SECTIONSâ€™.
  
! â€˜OMP_SINGLEâ€™
  
!      Represents â€˜#pragma omp singleâ€™.
  
!      Operand â€˜OMP_SINGLE_BODYâ€™ contains the body of code to be executed
       by a single thread.
  
!      Operand â€˜OMP_SINGLE_CLAUSESâ€™ is the list of clauses associated with
       the directive.
  
! â€˜OMP_MASTERâ€™
  
!      Represents â€˜#pragma omp masterâ€™.
  
!      Operand â€˜OMP_MASTER_BODYâ€™ contains the body of code to be executed
       by the master thread.
  
! â€˜OMP_ORDEREDâ€™
  
!      Represents â€˜#pragma omp orderedâ€™.
  
!      Operand â€˜OMP_ORDERED_BODYâ€™ contains the body of code to be executed
       in the sequential order dictated by the loop index variable.
  
! â€˜OMP_CRITICALâ€™
  
!      Represents â€˜#pragma omp critical [name]â€™.
  
!      Operand â€˜OMP_CRITICAL_BODYâ€™ is the critical section.
  
!      Operand â€˜OMP_CRITICAL_NAMEâ€™ is an optional identifier to label the
       critical section.
  
! â€˜OMP_RETURNâ€™
  
       This does not represent any OpenMP directive, it is an artificial
       marker to indicate the end of the body of an OpenMP.  It is used by
!      the flow graph (â€˜tree-cfg.ccâ€™) and OpenMP region building code
!      (â€˜omp-low.ccâ€™).
  
! â€˜OMP_CONTINUEâ€™
  
       Similarly, this instruction does not represent an OpenMP directive,
!      it is used by â€˜OMP_FORâ€™ (and similar codes) as well as
!      â€˜OMP_SECTIONSâ€™ to mark the place where the code needs to loop to
       the next iteration, or the next section, respectively.
  
!      In some cases, â€˜OMP_CONTINUEâ€™ is placed right before â€˜OMP_RETURNâ€™.
       But if there are cleanups that need to occur right after the
!      looping body, it will be emitted between â€˜OMP_CONTINUEâ€™ and
!      â€˜OMP_RETURNâ€™.
  
! â€˜OMP_STRUCTURED_BLOCKâ€™
  
       This is another statement that doesn't correspond to an OpenMP
       directive.  It is used to mark sections of code in another
       directive that must be structured block sequences, in particular
!      for sequences of intervening code in the body of an â€˜OMP_FORâ€™.  It
       is not necessary to use this when the entire body of a directive is
       required to be a structured block sequence, since that is implicit
       in the representation of the corresponding node.
*************** used by the OpenMP API <https://www.open
*** 12739,12750 ****
       This tree node is used only to allow error checking transfers of
       control in/out of the structured block sequence after
       gimplification.  It has a single operand
!      ('OMP_STRUCTURED_BLOCK_BODY') that is the code within the
       structured block sequence.
  
! 'OMP_ATOMIC'
  
!      Represents '#pragma omp atomic'.
  
       Operand 0 is the address at which the atomic operation is to be
       performed.
--- 12744,12755 ----
       This tree node is used only to allow error checking transfers of
       control in/out of the structured block sequence after
       gimplification.  It has a single operand
!      (â€˜OMP_STRUCTURED_BLOCK_BODYâ€™) that is the code within the
       structured block sequence.
  
! â€˜OMP_ATOMICâ€™
  
!      Represents â€˜#pragma omp atomicâ€™.
  
       Operand 0 is the address at which the atomic operation is to be
       performed.
*************** used by the OpenMP API <https://www.open
*** 12755,12841 ****
       compare-and-swap loop is attempted.  If that also fails, a regular
       critical section around the expression is used.
  
! 'OMP_CLAUSE'
  
!      Represents clauses associated with one of the 'OMP_' directives.
!      Clauses are represented by separate subcodes defined in 'tree.h'.
!      Clauses codes can be one of: 'OMP_CLAUSE_PRIVATE',
!      'OMP_CLAUSE_SHARED', 'OMP_CLAUSE_FIRSTPRIVATE',
!      'OMP_CLAUSE_LASTPRIVATE', 'OMP_CLAUSE_COPYIN',
!      'OMP_CLAUSE_COPYPRIVATE', 'OMP_CLAUSE_IF',
!      'OMP_CLAUSE_NUM_THREADS', 'OMP_CLAUSE_SCHEDULE',
!      'OMP_CLAUSE_NOWAIT', 'OMP_CLAUSE_ORDERED', 'OMP_CLAUSE_DEFAULT',
!      'OMP_CLAUSE_REDUCTION', 'OMP_CLAUSE_COLLAPSE', 'OMP_CLAUSE_UNTIED',
!      'OMP_CLAUSE_FINAL', and 'OMP_CLAUSE_MERGEABLE'.  Each code
       represents the corresponding OpenMP clause.
  
       Clauses associated with the same directive are chained together via
!      'OMP_CLAUSE_CHAIN'.  Those clauses that accept a list of variables
!      are restricted to exactly one, accessed with 'OMP_CLAUSE_VAR'.
!      Therefore, multiple variables under the same clause 'C' need to be
!      represented as multiple 'C' clauses chained together.  This
       facilitates adding new clauses during compilation.
  
! 'OMP_METADIRECTIVE'
  
!      Represents '#pragma omp metadirective'.  This node has one field,
!      accessed by the 'OMP_METADIRECTIVE_VARIANTS (NODE)' macro.
  
!      Metadirective variants are represented internally as 'TREE_LIST'
!      nodes but you should use the interface provided in 'tree.h' to
       access their components.
  
!      'OMP_METADIRECTIVE_VARIANT_SELECTOR (VARIANT)' is the selector
       associated with the variant; this is null for the
!      'otherwise'/'default' alternative.
  
!      'OMP_METADIRECTIVE_VARIANT_DIRECTIVE (VARIANT)' is the nested
       directive for the variant.
  
!      'OMP_METADIRECTIVE_VARIANT_BODY (VARIANT)' represents statements
       following a nested standalone or utility directive.  In other
       cases, this field is null and the body is part of the nested
       directive instead.
  
       Metadirective context selectors (as well as context selectors for
!      '#pragma omp declare variant') are also represented internally
!      using a 'TREE_LIST' representation but with accessors and
!      constructors declared in 'omp-general.h'.  A complete context
       selector is a list of trait-set selectors, which are in turn
       composed of a list of trait selectors, each of which may have a
       list of trait properties.  Identifiers for trait-set selectors and
!      trait selectors are enums defined in 'omp-selectors.h', while trait
       property identifiers are string constants.
  
! 'OMP_NEXT_VARIANT'
       Some OpenMP variant constructs cannot be resolved until the
!      ompdevlow pass, in 'omp-offload.cc'.  The gimplifier turns these
!      into a 'switch' statement in a loop, using 'OMP_NEXT_VARIANT' as a
       placeholder to set the switch control variable.  The ompdevlow pass
       replaces these with constant integers after resolution.
  
!      'OMP_NEXT_VARIANT' has two operands.  Operand 0 is
!      'OMP_NEXT_VARIANT_INDEX', an 'INTEGER_CST' for the current current
!      index.  Operand 1 is 'OMP_NEXT_VARIANT_STATE', a 'TREE_LIST' shared
!      among all 'OMP_NEXT_VARIANT' expressions for the same variant
       construct that holds resolution state information for that
       construct.
  
! 'OMP_TARGET_DEVICE_MATCHES'
!      Similarly to 'OMP_NEXT_VARIANT', this tree node is a placeholder
       that is resolved in the ompdevlow pass.  It is used to implement
!      the 'target_device' dynamic selector.  The gimplifier generates
       these nodes and arranges for them to be executed on the
!      'device_num' specified in the selector.  The ompdevlow pass
!      replaces each 'OMP_TARGET_DEVICE_MATCHES' node with a constant
       value, depending on the corresponding kind, arch, or isa properties
       configured for the offload compiler.
  
!      'OMP_TARGET_DEVICES' has two operands.  Operand 0 is
!      'OMP_TARGET_DEVICE_MATCHES_SELECTOR', an 'INTEGER_CST' encoding one
!      of the constants 'OMP_TRAIT_DEVICE_KIND', 'OMP_TRAIT_DEVICE_ARCH',
!      or 'OMP_TRAIT_DEVICE_ISA'.  Operand 1 is
!      'OMP_TARGET_DEVICE_MATCHES_PROPERTIES', a 'TREE_LIST' using the
       same internal representation as the properties part of the
       selector.
  
--- 12760,12846 ----
       compare-and-swap loop is attempted.  If that also fails, a regular
       critical section around the expression is used.
  
! â€˜OMP_CLAUSEâ€™
  
!      Represents clauses associated with one of the â€˜OMP_â€™ directives.
!      Clauses are represented by separate subcodes defined in â€˜tree.hâ€™.
!      Clauses codes can be one of: â€˜OMP_CLAUSE_PRIVATEâ€™,
!      â€˜OMP_CLAUSE_SHAREDâ€™, â€˜OMP_CLAUSE_FIRSTPRIVATEâ€™,
!      â€˜OMP_CLAUSE_LASTPRIVATEâ€™, â€˜OMP_CLAUSE_COPYINâ€™,
!      â€˜OMP_CLAUSE_COPYPRIVATEâ€™, â€˜OMP_CLAUSE_IFâ€™,
!      â€˜OMP_CLAUSE_NUM_THREADSâ€™, â€˜OMP_CLAUSE_SCHEDULEâ€™,
!      â€˜OMP_CLAUSE_NOWAITâ€™, â€˜OMP_CLAUSE_ORDEREDâ€™, â€˜OMP_CLAUSE_DEFAULTâ€™,
!      â€˜OMP_CLAUSE_REDUCTIONâ€™, â€˜OMP_CLAUSE_COLLAPSEâ€™, â€˜OMP_CLAUSE_UNTIEDâ€™,
!      â€˜OMP_CLAUSE_FINALâ€™, and â€˜OMP_CLAUSE_MERGEABLEâ€™.  Each code
       represents the corresponding OpenMP clause.
  
       Clauses associated with the same directive are chained together via
!      â€˜OMP_CLAUSE_CHAINâ€™.  Those clauses that accept a list of variables
!      are restricted to exactly one, accessed with â€˜OMP_CLAUSE_VARâ€™.
!      Therefore, multiple variables under the same clause â€˜Câ€™ need to be
!      represented as multiple â€˜Câ€™ clauses chained together.  This
       facilitates adding new clauses during compilation.
  
! â€˜OMP_METADIRECTIVEâ€™
  
!      Represents â€˜#pragma omp metadirectiveâ€™.  This node has one field,
!      accessed by the â€˜OMP_METADIRECTIVE_VARIANTS (NODE)â€™ macro.
  
!      Metadirective variants are represented internally as â€˜TREE_LISTâ€™
!      nodes but you should use the interface provided in â€˜tree.hâ€™ to
       access their components.
  
!      â€˜OMP_METADIRECTIVE_VARIANT_SELECTOR (VARIANT)â€™ is the selector
       associated with the variant; this is null for the
!      â€˜otherwiseâ€™/â€˜defaultâ€™ alternative.
  
!      â€˜OMP_METADIRECTIVE_VARIANT_DIRECTIVE (VARIANT)â€™ is the nested
       directive for the variant.
  
!      â€˜OMP_METADIRECTIVE_VARIANT_BODY (VARIANT)â€™ represents statements
       following a nested standalone or utility directive.  In other
       cases, this field is null and the body is part of the nested
       directive instead.
  
       Metadirective context selectors (as well as context selectors for
!      â€˜#pragma omp declare variantâ€™) are also represented internally
!      using a â€˜TREE_LISTâ€™ representation but with accessors and
!      constructors declared in â€˜omp-general.hâ€™.  A complete context
       selector is a list of trait-set selectors, which are in turn
       composed of a list of trait selectors, each of which may have a
       list of trait properties.  Identifiers for trait-set selectors and
!      trait selectors are enums defined in â€˜omp-selectors.hâ€™, while trait
       property identifiers are string constants.
  
! â€˜OMP_NEXT_VARIANTâ€™
       Some OpenMP variant constructs cannot be resolved until the
!      ompdevlow pass, in â€˜omp-offload.ccâ€™.  The gimplifier turns these
!      into a â€˜switchâ€™ statement in a loop, using â€˜OMP_NEXT_VARIANTâ€™ as a
       placeholder to set the switch control variable.  The ompdevlow pass
       replaces these with constant integers after resolution.
  
!      â€˜OMP_NEXT_VARIANTâ€™ has two operands.  Operand 0 is
!      â€˜OMP_NEXT_VARIANT_INDEXâ€™, an â€˜INTEGER_CSTâ€™ for the current current
!      index.  Operand 1 is â€˜OMP_NEXT_VARIANT_STATEâ€™, a â€˜TREE_LISTâ€™ shared
!      among all â€˜OMP_NEXT_VARIANTâ€™ expressions for the same variant
       construct that holds resolution state information for that
       construct.
  
! â€˜OMP_TARGET_DEVICE_MATCHESâ€™
!      Similarly to â€˜OMP_NEXT_VARIANTâ€™, this tree node is a placeholder
       that is resolved in the ompdevlow pass.  It is used to implement
!      the â€˜target_deviceâ€™ dynamic selector.  The gimplifier generates
       these nodes and arranges for them to be executed on the
!      â€˜device_numâ€™ specified in the selector.  The ompdevlow pass
!      replaces each â€˜OMP_TARGET_DEVICE_MATCHESâ€™ node with a constant
       value, depending on the corresponding kind, arch, or isa properties
       configured for the offload compiler.
  
!      â€˜OMP_TARGET_DEVICESâ€™ has two operands.  Operand 0 is
!      â€˜OMP_TARGET_DEVICE_MATCHES_SELECTORâ€™, an â€˜INTEGER_CSTâ€™ encoding one
!      of the constants â€˜OMP_TRAIT_DEVICE_KINDâ€™, â€˜OMP_TRAIT_DEVICE_ARCHâ€™,
!      or â€˜OMP_TRAIT_DEVICE_ISAâ€™.  Operand 1 is
!      â€˜OMP_TARGET_DEVICE_MATCHES_PROPERTIESâ€™, a â€˜TREE_LISTâ€™ using the
       same internal representation as the properties part of the
       selector.
  
*************** File: gccint.info,  Node: OpenACC,  Prev
*** 12845,12898 ****
  10.7.8 OpenACC
  --------------
  
! All the statements starting with 'OACC_' represent directives and
  clauses used by the OpenACC API <https://www.openacc.org>.
  
! 'OACC_CACHE'
  
!      Represents '#pragma acc cache (var ...)'.
  
! 'OACC_DATA'
  
!      Represents '#pragma acc data [clause1 ... clauseN]'.
  
! 'OACC_DECLARE'
  
!      Represents '#pragma acc declare [clause1 ... clauseN]'.
  
! 'OACC_ENTER_DATA'
  
!      Represents '#pragma acc enter data [clause1 ... clauseN]'.
  
! 'OACC_EXIT_DATA'
  
!      Represents '#pragma acc exit data [clause1 ... clauseN]'.
  
! 'OACC_HOST_DATA'
  
!      Represents '#pragma acc host_data [clause1 ... clauseN]'.
  
! 'OACC_KERNELS'
  
!      Represents '#pragma acc kernels [clause1 ... clauseN]'.
  
! 'OACC_LOOP'
  
!      Represents '#pragma acc loop [clause1 ... clauseN]'.
  
!      See the description of the 'OMP_FOR' code.
  
! 'OACC_PARALLEL'
  
!      Represents '#pragma acc parallel [clause1 ... clauseN]'.
  
! 'OACC_SERIAL'
  
!      Represents '#pragma acc serial [clause1 ... clauseN]'.
  
! 'OACC_UPDATE'
  
!      Represents '#pragma acc update [clause1 ... clauseN]'.
  
  
  File: gccint.info,  Node: Functions,  Next: Language-dependent trees,  Prev: Statements,  Up: GENERIC
--- 12850,12903 ----
  10.7.8 OpenACC
  --------------
  
! All the statements starting with â€˜OACC_â€™ represent directives and
  clauses used by the OpenACC API <https://www.openacc.org>.
  
! â€˜OACC_CACHEâ€™
  
!      Represents â€˜#pragma acc cache (var ...)â€™.
  
! â€˜OACC_DATAâ€™
  
!      Represents â€˜#pragma acc data [clause1 ... clauseN]â€™.
  
! â€˜OACC_DECLAREâ€™
  
!      Represents â€˜#pragma acc declare [clause1 ... clauseN]â€™.
  
! â€˜OACC_ENTER_DATAâ€™
  
!      Represents â€˜#pragma acc enter data [clause1 ... clauseN]â€™.
  
! â€˜OACC_EXIT_DATAâ€™
  
!      Represents â€˜#pragma acc exit data [clause1 ... clauseN]â€™.
  
! â€˜OACC_HOST_DATAâ€™
  
!      Represents â€˜#pragma acc host_data [clause1 ... clauseN]â€™.
  
! â€˜OACC_KERNELSâ€™
  
!      Represents â€˜#pragma acc kernels [clause1 ... clauseN]â€™.
  
! â€˜OACC_LOOPâ€™
  
!      Represents â€˜#pragma acc loop [clause1 ... clauseN]â€™.
  
!      See the description of the â€˜OMP_FORâ€™ code.
  
! â€˜OACC_PARALLELâ€™
  
!      Represents â€˜#pragma acc parallel [clause1 ... clauseN]â€™.
  
! â€˜OACC_SERIALâ€™
  
!      Represents â€˜#pragma acc serial [clause1 ... clauseN]â€™.
  
! â€˜OACC_UPDATEâ€™
  
!      Represents â€˜#pragma acc update [clause1 ... clauseN]â€™.
  
  
  File: gccint.info,  Node: Functions,  Next: Language-dependent trees,  Prev: Statements,  Up: GENERIC
*************** File: gccint.info,  Node: Functions,  Ne
*** 12900,12906 ****
  10.8 Functions
  ==============
  
! A function is represented by a 'FUNCTION_DECL' node.  It stores the
  basic pieces of the function such as body, parameters, and return type
  as well as information on the surrounding context, visibility, and
  linkage.
--- 12905,12911 ----
  10.8 Functions
  ==============
  
! A function is represented by a â€˜FUNCTION_DECLâ€™ node.  It stores the
  basic pieces of the function such as body, parameters, and return type
  as well as information on the surrounding context, visibility, and
  linkage.
*************** File: gccint.info,  Node: Function Basic
*** 12918,12977 ****
  
  A function has four core parts: the name, the parameters, the result,
  and the body.  The following macros and functions access these parts of
! a 'FUNCTION_DECL' as well as other basic features:
! 'DECL_NAME'
       This macro returns the unqualified name of the function, as an
!      'IDENTIFIER_NODE'.  For an instantiation of a function template,
!      the 'DECL_NAME' is the unqualified name of the template, not
!      something like 'f<int>'.  The value of 'DECL_NAME' is undefined
       when used on a constructor, destructor, overloaded operator, or
       type-conversion operator, or any function that is implicitly
       generated by the compiler.  See below for macros that can be used
       to distinguish these cases.
  
! 'DECL_ASSEMBLER_NAME'
       This macro returns the mangled name of the function, also an
!      'IDENTIFIER_NODE'.  This name does not contain leading underscores
       on systems that prefix all identifiers with underscores.  The
       mangled name is computed in the same way on all platforms; if
       special processing is required to deal with the object file format
       used on a particular platform, it is the responsibility of the back
       end to perform those modifications.  (Of course, the back end
!      should not modify 'DECL_ASSEMBLER_NAME' itself.)
  
!      Using 'DECL_ASSEMBLER_NAME' will cause additional memory to be
       allocated (for the mangled name of the entity) so it should be used
       only when emitting assembly code.  It should not be used within the
       optimizers to determine whether or not two declarations are the
       same, even though some of the existing optimizers do use it in that
       way.  These uses will be removed over time.
  
! 'DECL_ARGUMENTS'
!      This macro returns the 'PARM_DECL' for the first argument to the
!      function.  Subsequent 'PARM_DECL' nodes can be obtained by
!      following the 'TREE_CHAIN' links.
  
! 'DECL_RESULT'
!      This macro returns the 'RESULT_DECL' for the function.
  
! 'DECL_SAVED_TREE'
       This macro returns the complete body of the function.
  
! 'TREE_TYPE'
!      This macro returns the 'FUNCTION_TYPE' or 'METHOD_TYPE' for the
       function.
  
! 'DECL_INITIAL'
       A function that has a definition in the current translation unit
!      will have a non-'NULL' 'DECL_INITIAL'.  However, back ends should
!      not make use of the particular value given by 'DECL_INITIAL'.
  
!      It should contain a tree of 'BLOCK' nodes that mirrors the scopes
       that variables are bound in the function.  Each block contains a
       list of decls declared in a basic block, a pointer to a chain of
       blocks at the next lower scope level, then a pointer to the next
!      block at the same level and a backpointer to the parent 'BLOCK' or
!      'FUNCTION_DECL'.  So given a function as follows:
  
            void foo()
            {
--- 12923,12982 ----
  
  A function has four core parts: the name, the parameters, the result,
  and the body.  The following macros and functions access these parts of
! a â€˜FUNCTION_DECLâ€™ as well as other basic features:
! â€˜DECL_NAMEâ€™
       This macro returns the unqualified name of the function, as an
!      â€˜IDENTIFIER_NODEâ€™.  For an instantiation of a function template,
!      the â€˜DECL_NAMEâ€™ is the unqualified name of the template, not
!      something like â€˜f<int>â€™.  The value of â€˜DECL_NAMEâ€™ is undefined
       when used on a constructor, destructor, overloaded operator, or
       type-conversion operator, or any function that is implicitly
       generated by the compiler.  See below for macros that can be used
       to distinguish these cases.
  
! â€˜DECL_ASSEMBLER_NAMEâ€™
       This macro returns the mangled name of the function, also an
!      â€˜IDENTIFIER_NODEâ€™.  This name does not contain leading underscores
       on systems that prefix all identifiers with underscores.  The
       mangled name is computed in the same way on all platforms; if
       special processing is required to deal with the object file format
       used on a particular platform, it is the responsibility of the back
       end to perform those modifications.  (Of course, the back end
!      should not modify â€˜DECL_ASSEMBLER_NAMEâ€™ itself.)
  
!      Using â€˜DECL_ASSEMBLER_NAMEâ€™ will cause additional memory to be
       allocated (for the mangled name of the entity) so it should be used
       only when emitting assembly code.  It should not be used within the
       optimizers to determine whether or not two declarations are the
       same, even though some of the existing optimizers do use it in that
       way.  These uses will be removed over time.
  
! â€˜DECL_ARGUMENTSâ€™
!      This macro returns the â€˜PARM_DECLâ€™ for the first argument to the
!      function.  Subsequent â€˜PARM_DECLâ€™ nodes can be obtained by
!      following the â€˜TREE_CHAINâ€™ links.
  
! â€˜DECL_RESULTâ€™
!      This macro returns the â€˜RESULT_DECLâ€™ for the function.
  
! â€˜DECL_SAVED_TREEâ€™
       This macro returns the complete body of the function.
  
! â€˜TREE_TYPEâ€™
!      This macro returns the â€˜FUNCTION_TYPEâ€™ or â€˜METHOD_TYPEâ€™ for the
       function.
  
! â€˜DECL_INITIALâ€™
       A function that has a definition in the current translation unit
!      will have a non-â€˜NULLâ€™ â€˜DECL_INITIALâ€™.  However, back ends should
!      not make use of the particular value given by â€˜DECL_INITIALâ€™.
  
!      It should contain a tree of â€˜BLOCKâ€™ nodes that mirrors the scopes
       that variables are bound in the function.  Each block contains a
       list of decls declared in a basic block, a pointer to a chain of
       blocks at the next lower scope level, then a pointer to the next
!      block at the same level and a backpointer to the parent â€˜BLOCKâ€™ or
!      â€˜FUNCTION_DECLâ€™.  So given a function as follows:
  
            void foo()
            {
*************** File: gccint.info,  Node: Function Prope
*** 13007,13054 ****
  10.8.2 Function Properties
  --------------------------
  
! To determine the scope of a function, you can use the 'DECL_CONTEXT'
! macro.  This macro will return the class (either a 'RECORD_TYPE' or a
! 'UNION_TYPE') or namespace (a 'NAMESPACE_DECL') of which the function is
  a member.  For a virtual function, this macro returns the class in which
  the function was actually defined, not the base class in which the
  virtual declaration occurred.
  
!  In C, the 'DECL_CONTEXT' for a function maybe another function.  This
  representation indicates that the GNU nested function extension is in
  use.  For details on the semantics of nested functions, see the GCC
  Manual.  The nested function can refer to local variables in its
  containing function.  Such references are not explicitly marked in the
! tree structure; back ends must look at the 'DECL_CONTEXT' for the
! referenced 'VAR_DECL'.  If the 'DECL_CONTEXT' for the referenced
! 'VAR_DECL' is not the same as the function currently being processed,
! and neither 'DECL_EXTERNAL' nor 'TREE_STATIC' hold, then the reference
  is to a local variable in a containing function, and the back end must
  take appropriate action.
  
! 'DECL_EXTERNAL'
       This predicate holds if the function is undefined.
  
! 'TREE_PUBLIC'
       This predicate holds if the function has external linkage.
  
! 'TREE_STATIC'
       This predicate holds if the function has been defined.
  
! 'TREE_THIS_VOLATILE'
       This predicate holds if the function does not return normally.
  
! 'TREE_READONLY'
       This predicate holds if the function can only read its arguments.
  
! 'DECL_PURE_P'
       This predicate holds if the function can only read its arguments,
       but may also read global memory.
  
! 'DECL_VIRTUAL_P'
       This predicate holds if the function is virtual.
  
! 'DECL_ARTIFICIAL'
       This macro holds if the function was implicitly generated by the
       compiler, rather than explicitly declared.  In addition to
       implicitly generated class member functions, this macro holds for
--- 13012,13059 ----
  10.8.2 Function Properties
  --------------------------
  
! To determine the scope of a function, you can use the â€˜DECL_CONTEXTâ€™
! macro.  This macro will return the class (either a â€˜RECORD_TYPEâ€™ or a
! â€˜UNION_TYPEâ€™) or namespace (a â€˜NAMESPACE_DECLâ€™) of which the function is
  a member.  For a virtual function, this macro returns the class in which
  the function was actually defined, not the base class in which the
  virtual declaration occurred.
  
!  In C, the â€˜DECL_CONTEXTâ€™ for a function maybe another function.  This
  representation indicates that the GNU nested function extension is in
  use.  For details on the semantics of nested functions, see the GCC
  Manual.  The nested function can refer to local variables in its
  containing function.  Such references are not explicitly marked in the
! tree structure; back ends must look at the â€˜DECL_CONTEXTâ€™ for the
! referenced â€˜VAR_DECLâ€™.  If the â€˜DECL_CONTEXTâ€™ for the referenced
! â€˜VAR_DECLâ€™ is not the same as the function currently being processed,
! and neither â€˜DECL_EXTERNALâ€™ nor â€˜TREE_STATICâ€™ hold, then the reference
  is to a local variable in a containing function, and the back end must
  take appropriate action.
  
! â€˜DECL_EXTERNALâ€™
       This predicate holds if the function is undefined.
  
! â€˜TREE_PUBLICâ€™
       This predicate holds if the function has external linkage.
  
! â€˜TREE_STATICâ€™
       This predicate holds if the function has been defined.
  
! â€˜TREE_THIS_VOLATILEâ€™
       This predicate holds if the function does not return normally.
  
! â€˜TREE_READONLYâ€™
       This predicate holds if the function can only read its arguments.
  
! â€˜DECL_PURE_Pâ€™
       This predicate holds if the function can only read its arguments,
       but may also read global memory.
  
! â€˜DECL_VIRTUAL_Pâ€™
       This predicate holds if the function is virtual.
  
! â€˜DECL_ARTIFICIALâ€™
       This macro holds if the function was implicitly generated by the
       compiler, rather than explicitly declared.  In addition to
       implicitly generated class member functions, this macro holds for
*************** take appropriate action.
*** 13056,13071 ****
       and destruction, to compute run-time type information, and so
       forth.
  
! 'DECL_FUNCTION_SPECIFIC_TARGET'
       This macro returns a tree node that holds the target options that
!      are to be used to compile this particular function or 'NULL_TREE'
       if the function is to be compiled with the target options specified
       on the command line.
  
! 'DECL_FUNCTION_SPECIFIC_OPTIMIZATION'
       This macro returns a tree node that holds the optimization options
       that are to be used to compile this particular function or
!      'NULL_TREE' if the function is to be compiled with the optimization
       options specified on the command line.
  
  
--- 13061,13076 ----
       and destruction, to compute run-time type information, and so
       forth.
  
! â€˜DECL_FUNCTION_SPECIFIC_TARGETâ€™
       This macro returns a tree node that holds the target options that
!      are to be used to compile this particular function or â€˜NULL_TREEâ€™
       if the function is to be compiled with the target options specified
       on the command line.
  
! â€˜DECL_FUNCTION_SPECIFIC_OPTIMIZATIONâ€™
       This macro returns a tree node that holds the optimization options
       that are to be used to compile this particular function or
!      â€˜NULL_TREEâ€™ if the function is to be compiled with the optimization
       options specified on the command line.
  
  
*************** File: gccint.info,  Node: Language-depen
*** 13077,13083 ****
  Front ends may wish to keep some state associated with various GENERIC
  trees while parsing.  To support this, trees provide a set of flags that
  may be used by the front end.  They are accessed using
! 'TREE_LANG_FLAG_n' where 'n' is currently 0 through 6.
  
   If necessary, a front end can use some language-dependent tree codes in
  its GENERIC representation, so long as it provides a hook for converting
--- 13082,13088 ----
  Front ends may wish to keep some state associated with various GENERIC
  trees while parsing.  To support this, trees provide a set of flags that
  may be used by the front end.  They are accessed using
! â€˜TREE_LANG_FLAG_nâ€™ where â€˜nâ€™ is currently 0 through 6.
  
   If necessary, a front end can use some language-dependent tree codes in
  its GENERIC representation, so long as it provides a hook for converting
*************** submit your patches for inclusion in GCC
*** 13141,13147 ****
  * Classes::                     Classes.
  * Functions for C++::           Overloading and accessors for C++.
  * Statements for C and C++::    Statements specific to C and C++.
! * C++ Expressions::    From 'typeid' to 'throw'.
  
  
  File: gccint.info,  Node: Types for C++,  Next: Namespaces,  Up: C and C++ Trees
--- 13146,13152 ----
  * Classes::                     Classes.
  * Functions for C++::           Overloading and accessors for C++.
  * Statements for C and C++::    Statements specific to C and C++.
! * C++ Expressions::    From â€˜typeidâ€™ to â€˜throwâ€™.
  
  
  File: gccint.info,  Node: Types for C++,  Next: Namespaces,  Up: C and C++ Trees
*************** representation.  The macros described he
*** 13155,13267 ****
  qualification of the underlying element type when applied to an array
  type.  (If the element type is itself an array, then the recursion
  continues until a non-array type is found, and the qualification of this
! type is examined.)  So, for example, 'CP_TYPE_CONST_P' will hold of the
! type 'const int ()[7]', denoting an array of seven 'int's.
  
   The following functions and macros deal with cv-qualification of types:
! 'cp_type_quals'
       This function returns the set of type qualifiers applied to this
!      type.  This value is 'TYPE_UNQUALIFIED' if no qualifiers have been
!      applied.  The 'TYPE_QUAL_CONST' bit is set if the type is
!      'const'-qualified.  The 'TYPE_QUAL_VOLATILE' bit is set if the type
!      is 'volatile'-qualified.  The 'TYPE_QUAL_RESTRICT' bit is set if
!      the type is 'restrict'-qualified.
  
! 'CP_TYPE_CONST_P'
!      This macro holds if the type is 'const'-qualified.
  
! 'CP_TYPE_VOLATILE_P'
!      This macro holds if the type is 'volatile'-qualified.
  
! 'CP_TYPE_RESTRICT_P'
!      This macro holds if the type is 'restrict'-qualified.
  
! 'CP_TYPE_CONST_NON_VOLATILE_P'
!      This predicate holds for a type that is 'const'-qualified, but
!      _not_ 'volatile'-qualified; other cv-qualifiers are ignored as
!      well: only the 'const'-ness is tested.
  
   A few other macros and functions are usable with all types:
! 'TYPE_SIZE'
       The number of bits required to represent the type, represented as
!      an 'INTEGER_CST'.  For an incomplete type, 'TYPE_SIZE' will be
!      'NULL_TREE'.
  
! 'TYPE_ALIGN'
!      The alignment of the type, in bits, represented as an 'int'.
  
! 'TYPE_NAME'
!      This macro returns a declaration (in the form of a 'TYPE_DECL') for
!      the type.  (Note this macro does _not_ return an 'IDENTIFIER_NODE',
       as you might expect, given its name!)  You can look at the
!      'DECL_NAME' of the 'TYPE_DECL' to obtain the actual name of the
!      type.  The 'TYPE_NAME' will be 'NULL_TREE' for a type that is not a
       built-in type, the result of a typedef, or a named class type.
  
! 'CP_INTEGRAL_TYPE'
       This predicate holds if the type is an integral type.  Notice that
       in C++, enumerations are _not_ integral types.
  
! 'ARITHMETIC_TYPE_P'
       This predicate holds if the type is an integral type (in the C++
       sense) or a floating point type.
  
! 'CLASS_TYPE_P'
       This predicate holds for a class-type.
  
! 'TYPE_BUILT_IN'
       This predicate holds for a built-in type.
  
! 'TYPE_PTRDATAMEM_P'
       This predicate holds if the type is a pointer to data member.
  
! 'TYPE_PTR_P'
       This predicate holds if the type is a pointer type, and the pointee
       is not a data member.
  
! 'TYPE_PTRFN_P'
       This predicate holds for a pointer to function type.
  
! 'TYPE_PTROB_P'
       This predicate holds for a pointer to object type.  Note however
!      that it does not hold for the generic pointer to object type 'void
!      *'.  You may use 'TYPE_PTROBV_P' to test for a pointer to object
!      type as well as 'void *'.
  
   The table below describes types specific to C and C++ as well as
  language-dependent info about GENERIC types.
  
! 'POINTER_TYPE'
       Used to represent pointer types, and pointer to data member types.
!      If 'TREE_TYPE' is a pointer to data member type, then
!      'TYPE_PTRDATAMEM_P' will hold.  For a pointer to data member type
!      of the form 'T X::*', 'TYPE_PTRMEM_CLASS_TYPE' will be the type
!      'X', while 'TYPE_PTRMEM_POINTED_TO_TYPE' will be the type 'T'.
  
! 'RECORD_TYPE'
!      Used to represent 'struct' and 'class' types in C and C++.  If
!      'TYPE_PTRMEMFUNC_P' holds, then this type is a pointer-to-member
!      type.  In that case, the 'TYPE_PTRMEMFUNC_FN_TYPE' is a
!      'POINTER_TYPE' pointing to a 'METHOD_TYPE'.  The 'METHOD_TYPE' is
       the type of a function pointed to by the pointer-to-member
!      function.  If 'TYPE_PTRMEMFUNC_P' does not hold, this type is a
       class type.  For more information, *note Classes::.
  
! 'UNKNOWN_TYPE'
       This node is used to represent a type the knowledge of which is
       insufficient for a sound processing.
  
! 'TYPENAME_TYPE'
!      Used to represent a construct of the form 'typename T::A'.  The
!      'TYPE_CONTEXT' is 'T'; the 'TYPE_NAME' is an 'IDENTIFIER_NODE' for
!      'A'.  If the type is specified via a template-id, then
!      'TYPENAME_TYPE_FULLNAME' yields a 'TEMPLATE_ID_EXPR'.  The
!      'TREE_TYPE' is non-'NULL' if the node is implicitly generated in
       support for the implicit typename extension; in which case the
!      'TREE_TYPE' is a type node for the base-class.
  
! 'TYPEOF_TYPE'
!      Used to represent the '__typeof__' extension.  The 'TYPE_FIELDS' is
       the expression the type of which is being represented.
  
  
--- 13160,13272 ----
  qualification of the underlying element type when applied to an array
  type.  (If the element type is itself an array, then the recursion
  continues until a non-array type is found, and the qualification of this
! type is examined.)  So, for example, â€˜CP_TYPE_CONST_Pâ€™ will hold of the
! type â€˜const int ()[7]â€™, denoting an array of seven â€˜intâ€™s.
  
   The following functions and macros deal with cv-qualification of types:
! â€˜cp_type_qualsâ€™
       This function returns the set of type qualifiers applied to this
!      type.  This value is â€˜TYPE_UNQUALIFIEDâ€™ if no qualifiers have been
!      applied.  The â€˜TYPE_QUAL_CONSTâ€™ bit is set if the type is
!      â€˜constâ€™-qualified.  The â€˜TYPE_QUAL_VOLATILEâ€™ bit is set if the type
!      is â€˜volatileâ€™-qualified.  The â€˜TYPE_QUAL_RESTRICTâ€™ bit is set if
!      the type is â€˜restrictâ€™-qualified.
  
! â€˜CP_TYPE_CONST_Pâ€™
!      This macro holds if the type is â€˜constâ€™-qualified.
  
! â€˜CP_TYPE_VOLATILE_Pâ€™
!      This macro holds if the type is â€˜volatileâ€™-qualified.
  
! â€˜CP_TYPE_RESTRICT_Pâ€™
!      This macro holds if the type is â€˜restrictâ€™-qualified.
  
! â€˜CP_TYPE_CONST_NON_VOLATILE_Pâ€™
!      This predicate holds for a type that is â€˜constâ€™-qualified, but
!      _not_ â€˜volatileâ€™-qualified; other cv-qualifiers are ignored as
!      well: only the â€˜constâ€™-ness is tested.
  
   A few other macros and functions are usable with all types:
! â€˜TYPE_SIZEâ€™
       The number of bits required to represent the type, represented as
!      an â€˜INTEGER_CSTâ€™.  For an incomplete type, â€˜TYPE_SIZEâ€™ will be
!      â€˜NULL_TREEâ€™.
  
! â€˜TYPE_ALIGNâ€™
!      The alignment of the type, in bits, represented as an â€˜intâ€™.
  
! â€˜TYPE_NAMEâ€™
!      This macro returns a declaration (in the form of a â€˜TYPE_DECLâ€™) for
!      the type.  (Note this macro does _not_ return an â€˜IDENTIFIER_NODEâ€™,
       as you might expect, given its name!)  You can look at the
!      â€˜DECL_NAMEâ€™ of the â€˜TYPE_DECLâ€™ to obtain the actual name of the
!      type.  The â€˜TYPE_NAMEâ€™ will be â€˜NULL_TREEâ€™ for a type that is not a
       built-in type, the result of a typedef, or a named class type.
  
! â€˜CP_INTEGRAL_TYPEâ€™
       This predicate holds if the type is an integral type.  Notice that
       in C++, enumerations are _not_ integral types.
  
! â€˜ARITHMETIC_TYPE_Pâ€™
       This predicate holds if the type is an integral type (in the C++
       sense) or a floating point type.
  
! â€˜CLASS_TYPE_Pâ€™
       This predicate holds for a class-type.
  
! â€˜TYPE_BUILT_INâ€™
       This predicate holds for a built-in type.
  
! â€˜TYPE_PTRDATAMEM_Pâ€™
       This predicate holds if the type is a pointer to data member.
  
! â€˜TYPE_PTR_Pâ€™
       This predicate holds if the type is a pointer type, and the pointee
       is not a data member.
  
! â€˜TYPE_PTRFN_Pâ€™
       This predicate holds for a pointer to function type.
  
! â€˜TYPE_PTROB_Pâ€™
       This predicate holds for a pointer to object type.  Note however
!      that it does not hold for the generic pointer to object type â€˜void
!      *â€™.  You may use â€˜TYPE_PTROBV_Pâ€™ to test for a pointer to object
!      type as well as â€˜void *â€™.
  
   The table below describes types specific to C and C++ as well as
  language-dependent info about GENERIC types.
  
! â€˜POINTER_TYPEâ€™
       Used to represent pointer types, and pointer to data member types.
!      If â€˜TREE_TYPEâ€™ is a pointer to data member type, then
!      â€˜TYPE_PTRDATAMEM_Pâ€™ will hold.  For a pointer to data member type
!      of the form â€˜T X::*â€™, â€˜TYPE_PTRMEM_CLASS_TYPEâ€™ will be the type
!      â€˜Xâ€™, while â€˜TYPE_PTRMEM_POINTED_TO_TYPEâ€™ will be the type â€˜Tâ€™.
  
! â€˜RECORD_TYPEâ€™
!      Used to represent â€˜structâ€™ and â€˜classâ€™ types in C and C++.  If
!      â€˜TYPE_PTRMEMFUNC_Pâ€™ holds, then this type is a pointer-to-member
!      type.  In that case, the â€˜TYPE_PTRMEMFUNC_FN_TYPEâ€™ is a
!      â€˜POINTER_TYPEâ€™ pointing to a â€˜METHOD_TYPEâ€™.  The â€˜METHOD_TYPEâ€™ is
       the type of a function pointed to by the pointer-to-member
!      function.  If â€˜TYPE_PTRMEMFUNC_Pâ€™ does not hold, this type is a
       class type.  For more information, *note Classes::.
  
! â€˜UNKNOWN_TYPEâ€™
       This node is used to represent a type the knowledge of which is
       insufficient for a sound processing.
  
! â€˜TYPENAME_TYPEâ€™
!      Used to represent a construct of the form â€˜typename T::Aâ€™.  The
!      â€˜TYPE_CONTEXTâ€™ is â€˜Tâ€™; the â€˜TYPE_NAMEâ€™ is an â€˜IDENTIFIER_NODEâ€™ for
!      â€˜Aâ€™.  If the type is specified via a template-id, then
!      â€˜TYPENAME_TYPE_FULLNAMEâ€™ yields a â€˜TEMPLATE_ID_EXPRâ€™.  The
!      â€˜TREE_TYPEâ€™ is non-â€˜NULLâ€™ if the node is implicitly generated in
       support for the implicit typename extension; in which case the
!      â€˜TREE_TYPEâ€™ is a type node for the base-class.
  
! â€˜TYPEOF_TYPEâ€™
!      Used to represent the â€˜__typeof__â€™ extension.  The â€˜TYPE_FIELDSâ€™ is
       the expression the type of which is being represented.
  
  
*************** File: gccint.info,  Node: Namespaces,  N
*** 13271,13277 ****
  ------------------
  
  The root of the entire intermediate representation is the variable
! 'global_namespace'.  This is the namespace specified with '::' in C++
  source code.  All other namespaces, types, variables, functions, and so
  forth can be found starting with this namespace.
  
--- 13276,13282 ----
  ------------------
  
  The root of the entire intermediate representation is the variable
! â€˜global_namespaceâ€™.  This is the namespace specified with â€˜::â€™ in C++
  source code.  All other namespaces, types, variables, functions, and so
  forth can be found starting with this namespace.
  
*************** the representation, the global namespace
*** 13280,13339 ****
  namespace.  Thus, in what follows, we describe namespaces generally,
  rather than the global namespace in particular.
  
!  A namespace is represented by a 'NAMESPACE_DECL' node.
  
!  The following macros and functions can be used on a 'NAMESPACE_DECL':
  
! 'DECL_NAME'
!      This macro is used to obtain the 'IDENTIFIER_NODE' corresponding to
       the unqualified name of the name of the namespace (*note
!      Identifiers::).  The name of the global namespace is '::', even
       though in C++ the global namespace is unnamed.  However, you should
!      use comparison with 'global_namespace', rather than 'DECL_NAME' to
       determine whether or not a namespace is the global one.  An unnamed
!      namespace will have a 'DECL_NAME' equal to
!      'anonymous_namespace_name'.  Within a single translation unit, all
       unnamed namespaces will have the same name.
  
! 'DECL_CONTEXT'
!      This macro returns the enclosing namespace.  The 'DECL_CONTEXT' for
!      the 'global_namespace' is 'NULL_TREE'.
  
! 'DECL_NAMESPACE_ALIAS'
       If this declaration is for a namespace alias, then
!      'DECL_NAMESPACE_ALIAS' is the namespace for which this one is an
       alias.
  
!      Do not attempt to use 'cp_namespace_decls' for a namespace which is
!      an alias.  Instead, follow 'DECL_NAMESPACE_ALIAS' links until you
       reach an ordinary, non-alias, namespace, and call
!      'cp_namespace_decls' there.
  
! 'DECL_NAMESPACE_STD_P'
!      This predicate holds if the namespace is the special '::std'
       namespace.
  
! 'cp_namespace_decls'
       This function will return the declarations contained in the
       namespace, including types, overloaded functions, other namespaces,
       and so forth.  If there are no declarations, this function will
!      return 'NULL_TREE'.  The declarations are connected through their
!      'TREE_CHAIN' fields.
  
       Although most entries on this list will be declarations,
!      'TREE_LIST' nodes may also appear.  In this case, the 'TREE_VALUE'
!      will be an 'OVERLOAD'.  The value of the 'TREE_PURPOSE' is
       unspecified; back ends should ignore this value.  As with the other
!      kinds of declarations returned by 'cp_namespace_decls', the
!      'TREE_CHAIN' will point to the next declaration in this list.
  
       For more information on the kinds of declarations that can occur on
       this list, *Note Declarations::.  Some declarations will not appear
!      on this list.  In particular, no 'FIELD_DECL', 'LABEL_DECL', or
!      'PARM_DECL' nodes will appear here.
  
       This function cannot be used with namespaces that have
!      'DECL_NAMESPACE_ALIAS' set.
  
  
  File: gccint.info,  Node: Classes,  Next: Functions for C++,  Prev: Namespaces,  Up: C and C++ Trees
--- 13285,13344 ----
  namespace.  Thus, in what follows, we describe namespaces generally,
  rather than the global namespace in particular.
  
!  A namespace is represented by a â€˜NAMESPACE_DECLâ€™ node.
  
!  The following macros and functions can be used on a â€˜NAMESPACE_DECLâ€™:
  
! â€˜DECL_NAMEâ€™
!      This macro is used to obtain the â€˜IDENTIFIER_NODEâ€™ corresponding to
       the unqualified name of the name of the namespace (*note
!      Identifiers::).  The name of the global namespace is â€˜::â€™, even
       though in C++ the global namespace is unnamed.  However, you should
!      use comparison with â€˜global_namespaceâ€™, rather than â€˜DECL_NAMEâ€™ to
       determine whether or not a namespace is the global one.  An unnamed
!      namespace will have a â€˜DECL_NAMEâ€™ equal to
!      â€˜anonymous_namespace_nameâ€™.  Within a single translation unit, all
       unnamed namespaces will have the same name.
  
! â€˜DECL_CONTEXTâ€™
!      This macro returns the enclosing namespace.  The â€˜DECL_CONTEXTâ€™ for
!      the â€˜global_namespaceâ€™ is â€˜NULL_TREEâ€™.
  
! â€˜DECL_NAMESPACE_ALIASâ€™
       If this declaration is for a namespace alias, then
!      â€˜DECL_NAMESPACE_ALIASâ€™ is the namespace for which this one is an
       alias.
  
!      Do not attempt to use â€˜cp_namespace_declsâ€™ for a namespace which is
!      an alias.  Instead, follow â€˜DECL_NAMESPACE_ALIASâ€™ links until you
       reach an ordinary, non-alias, namespace, and call
!      â€˜cp_namespace_declsâ€™ there.
  
! â€˜DECL_NAMESPACE_STD_Pâ€™
!      This predicate holds if the namespace is the special â€˜::stdâ€™
       namespace.
  
! â€˜cp_namespace_declsâ€™
       This function will return the declarations contained in the
       namespace, including types, overloaded functions, other namespaces,
       and so forth.  If there are no declarations, this function will
!      return â€˜NULL_TREEâ€™.  The declarations are connected through their
!      â€˜TREE_CHAINâ€™ fields.
  
       Although most entries on this list will be declarations,
!      â€˜TREE_LISTâ€™ nodes may also appear.  In this case, the â€˜TREE_VALUEâ€™
!      will be an â€˜OVERLOADâ€™.  The value of the â€˜TREE_PURPOSEâ€™ is
       unspecified; back ends should ignore this value.  As with the other
!      kinds of declarations returned by â€˜cp_namespace_declsâ€™, the
!      â€˜TREE_CHAINâ€™ will point to the next declaration in this list.
  
       For more information on the kinds of declarations that can occur on
       this list, *Note Declarations::.  Some declarations will not appear
!      on this list.  In particular, no â€˜FIELD_DECLâ€™, â€˜LABEL_DECLâ€™, or
!      â€˜PARM_DECLâ€™ nodes will appear here.
  
       This function cannot be used with namespaces that have
!      â€˜DECL_NAMESPACE_ALIASâ€™ set.
  
  
  File: gccint.info,  Node: Classes,  Next: Functions for C++,  Prev: Namespaces,  Up: C and C++ Trees
*************** File: gccint.info,  Node: Classes,  Next
*** 13342,13446 ****
  ---------------
  
  Besides namespaces, the other high-level scoping construct in C++ is the
! class.  (Throughout this manual the term "class" is used to mean the
  types referred to in the ANSI/ISO C++ Standard as classes; these include
! types defined with the 'class', 'struct', and 'union' keywords.)
  
!  A class type is represented by either a 'RECORD_TYPE' or a
! 'UNION_TYPE'.  A class declared with the 'union' tag is represented by a
! 'UNION_TYPE', while classes declared with either the 'struct' or the
! 'class' tag are represented by 'RECORD_TYPE's.  You can use the
! 'CLASSTYPE_DECLARED_CLASS' macro to discern whether or not a particular
! type is a 'class' as opposed to a 'struct'.  This macro will be true
! only for classes declared with the 'class' tag.
  
!  Almost all members are available on the 'TYPE_FIELDS' list.  Given one
! member, the next can be found by following the 'TREE_CHAIN'.  You should
  not depend in any way on the order in which fields appear on this list.
! All nodes on this list will be 'DECL' nodes.  A 'FIELD_DECL' is used to
! represent a non-static data member, a 'VAR_DECL' is used to represent a
! static data member, and a 'TYPE_DECL' is used to represent a type.  Note
! that the 'CONST_DECL' for an enumeration constant will appear on this
  list, if the enumeration type was declared in the class.  (Of course,
! the 'TYPE_DECL' for the enumeration type will appear here as well.)
  There are no entries for base classes on this list.  In particular,
! there is no 'FIELD_DECL' for the "base-class portion" of an object.  If
  a function member is overloaded, each of the overloaded functions
! appears; no 'OVERLOAD' nodes appear on the 'TYPE_FIELDS' list.
  Implicitly declared functions (including default constructors, copy
  constructors, assignment operators, and destructors) will appear on this
  list as well.
  
!  The 'TYPE_VFIELD' is a compiler-generated field used to point to
! virtual function tables.  It may or may not appear on the 'TYPE_FIELDS'
! list.  However, back ends should handle the 'TYPE_VFIELD' just like all
! the entries on the 'TYPE_FIELDS' list.
  
!  Every class has an associated "binfo", which can be obtained with
! 'TYPE_BINFO'.  Binfos are used to represent base-classes.  The binfo
! given by 'TYPE_BINFO' is the degenerate case, whereby every class is
  considered to be its own base-class.  The base binfos for a particular
  binfo are held in a vector, whose length is obtained with
! 'BINFO_N_BASE_BINFOS'.  The base binfos themselves are obtained with
! 'BINFO_BASE_BINFO' and 'BINFO_BASE_ITERATE'.  To add a new binfo, use
! 'BINFO_BASE_APPEND'.  The vector of base binfos can be obtained with
! 'BINFO_BASE_BINFOS', but normally you do not need to use that.  The
! class type associated with a binfo is given by 'BINFO_TYPE'.  It is not
! always the case that 'BINFO_TYPE (TYPE_BINFO (x))', because of typedefs
! and qualified types.  Neither is it the case that 'TYPE_BINFO
! (BINFO_TYPE (y))' is the same binfo as 'y'.  The reason is that if 'y'
! is a binfo representing a base-class 'B' of a derived class 'D', then
! 'BINFO_TYPE (y)' will be 'B', and 'TYPE_BINFO (BINFO_TYPE (y))' will be
! 'B' as its own base-class, rather than as a base-class of 'D'.
  
!  The access to a base type can be found with 'BINFO_BASE_ACCESS'.  This
! will produce 'access_public_node', 'access_private_node' or
! 'access_protected_node'.  If bases are always public,
! 'BINFO_BASE_ACCESSES' may be 'NULL'.
  
!  'BINFO_VIRTUAL_P' is used to specify whether the binfo is inherited
! virtually or not.  The other flags, 'BINFO_FLAG_0' to 'BINFO_FLAG_6',
  can be used for language specific use.
  
   The following macros can be used on a tree node representing a
  class-type.
  
! 'LOCAL_CLASS_P'
       This predicate holds if the class is local class _i.e._ declared
       inside a function body.
  
! 'TYPE_POLYMORPHIC_P'
       This predicate holds if the class has at least one virtual function
       (declared or inherited).
  
! 'TYPE_HAS_DEFAULT_CONSTRUCTOR'
       This predicate holds whenever its argument represents a class-type
       with default constructor.
  
! 'CLASSTYPE_HAS_MUTABLE'
! 'TYPE_HAS_MUTABLE_P'
       These predicates hold for a class-type having a mutable data
       member.
  
! 'CLASSTYPE_NON_POD_P'
       This predicate holds only for class-types that are not PODs.
  
! 'TYPE_HAS_NEW_OPERATOR'
!      This predicate holds for a class-type that defines 'operator new'.
  
! 'TYPE_HAS_ARRAY_NEW_OPERATOR'
!      This predicate holds for a class-type for which 'operator new[]' is
       defined.
  
! 'TYPE_OVERLOADS_CALL_EXPR'
       This predicate holds for class-type for which the function call
!      'operator()' is overloaded.
  
! 'TYPE_OVERLOADS_ARRAY_REF'
!      This predicate holds for a class-type that overloads 'operator[]'
  
! 'TYPE_OVERLOADS_ARROW'
!      This predicate holds for a class-type for which 'operator->' is
       overloaded.
  
  
--- 13347,13451 ----
  ---------------
  
  Besides namespaces, the other high-level scoping construct in C++ is the
! class.  (Throughout this manual the term â€œclassâ€� is used to mean the
  types referred to in the ANSI/ISO C++ Standard as classes; these include
! types defined with the â€˜classâ€™, â€˜structâ€™, and â€˜unionâ€™ keywords.)
  
!  A class type is represented by either a â€˜RECORD_TYPEâ€™ or a
! â€˜UNION_TYPEâ€™.  A class declared with the â€˜unionâ€™ tag is represented by a
! â€˜UNION_TYPEâ€™, while classes declared with either the â€˜structâ€™ or the
! â€˜classâ€™ tag are represented by â€˜RECORD_TYPEâ€™s.  You can use the
! â€˜CLASSTYPE_DECLARED_CLASSâ€™ macro to discern whether or not a particular
! type is a â€˜classâ€™ as opposed to a â€˜structâ€™.  This macro will be true
! only for classes declared with the â€˜classâ€™ tag.
  
!  Almost all members are available on the â€˜TYPE_FIELDSâ€™ list.  Given one
! member, the next can be found by following the â€˜TREE_CHAINâ€™.  You should
  not depend in any way on the order in which fields appear on this list.
! All nodes on this list will be â€˜DECLâ€™ nodes.  A â€˜FIELD_DECLâ€™ is used to
! represent a non-static data member, a â€˜VAR_DECLâ€™ is used to represent a
! static data member, and a â€˜TYPE_DECLâ€™ is used to represent a type.  Note
! that the â€˜CONST_DECLâ€™ for an enumeration constant will appear on this
  list, if the enumeration type was declared in the class.  (Of course,
! the â€˜TYPE_DECLâ€™ for the enumeration type will appear here as well.)
  There are no entries for base classes on this list.  In particular,
! there is no â€˜FIELD_DECLâ€™ for the "base-class portion" of an object.  If
  a function member is overloaded, each of the overloaded functions
! appears; no â€˜OVERLOADâ€™ nodes appear on the â€˜TYPE_FIELDSâ€™ list.
  Implicitly declared functions (including default constructors, copy
  constructors, assignment operators, and destructors) will appear on this
  list as well.
  
!  The â€˜TYPE_VFIELDâ€™ is a compiler-generated field used to point to
! virtual function tables.  It may or may not appear on the â€˜TYPE_FIELDSâ€™
! list.  However, back ends should handle the â€˜TYPE_VFIELDâ€™ just like all
! the entries on the â€˜TYPE_FIELDSâ€™ list.
  
!  Every class has an associated â€œbinfoâ€�, which can be obtained with
! â€˜TYPE_BINFOâ€™.  Binfos are used to represent base-classes.  The binfo
! given by â€˜TYPE_BINFOâ€™ is the degenerate case, whereby every class is
  considered to be its own base-class.  The base binfos for a particular
  binfo are held in a vector, whose length is obtained with
! â€˜BINFO_N_BASE_BINFOSâ€™.  The base binfos themselves are obtained with
! â€˜BINFO_BASE_BINFOâ€™ and â€˜BINFO_BASE_ITERATEâ€™.  To add a new binfo, use
! â€˜BINFO_BASE_APPENDâ€™.  The vector of base binfos can be obtained with
! â€˜BINFO_BASE_BINFOSâ€™, but normally you do not need to use that.  The
! class type associated with a binfo is given by â€˜BINFO_TYPEâ€™.  It is not
! always the case that â€˜BINFO_TYPE (TYPE_BINFO (x))â€™, because of typedefs
! and qualified types.  Neither is it the case that â€˜TYPE_BINFO
! (BINFO_TYPE (y))â€™ is the same binfo as â€˜yâ€™.  The reason is that if â€˜yâ€™
! is a binfo representing a base-class â€˜Bâ€™ of a derived class â€˜Dâ€™, then
! â€˜BINFO_TYPE (y)â€™ will be â€˜Bâ€™, and â€˜TYPE_BINFO (BINFO_TYPE (y))â€™ will be
! â€˜Bâ€™ as its own base-class, rather than as a base-class of â€˜Dâ€™.
  
!  The access to a base type can be found with â€˜BINFO_BASE_ACCESSâ€™.  This
! will produce â€˜access_public_nodeâ€™, â€˜access_private_nodeâ€™ or
! â€˜access_protected_nodeâ€™.  If bases are always public,
! â€˜BINFO_BASE_ACCESSESâ€™ may be â€˜NULLâ€™.
  
!  â€˜BINFO_VIRTUAL_Pâ€™ is used to specify whether the binfo is inherited
! virtually or not.  The other flags, â€˜BINFO_FLAG_0â€™ to â€˜BINFO_FLAG_6â€™,
  can be used for language specific use.
  
   The following macros can be used on a tree node representing a
  class-type.
  
! â€˜LOCAL_CLASS_Pâ€™
       This predicate holds if the class is local class _i.e._ declared
       inside a function body.
  
! â€˜TYPE_POLYMORPHIC_Pâ€™
       This predicate holds if the class has at least one virtual function
       (declared or inherited).
  
! â€˜TYPE_HAS_DEFAULT_CONSTRUCTORâ€™
       This predicate holds whenever its argument represents a class-type
       with default constructor.
  
! â€˜CLASSTYPE_HAS_MUTABLEâ€™
! â€˜TYPE_HAS_MUTABLE_Pâ€™
       These predicates hold for a class-type having a mutable data
       member.
  
! â€˜CLASSTYPE_NON_POD_Pâ€™
       This predicate holds only for class-types that are not PODs.
  
! â€˜TYPE_HAS_NEW_OPERATORâ€™
!      This predicate holds for a class-type that defines â€˜operator newâ€™.
  
! â€˜TYPE_HAS_ARRAY_NEW_OPERATORâ€™
!      This predicate holds for a class-type for which â€˜operator new[]â€™ is
       defined.
  
! â€˜TYPE_OVERLOADS_CALL_EXPRâ€™
       This predicate holds for class-type for which the function call
!      â€˜operator()â€™ is overloaded.
  
! â€˜TYPE_OVERLOADS_ARRAY_REFâ€™
!      This predicate holds for a class-type that overloads â€˜operator[]â€™
  
! â€˜TYPE_OVERLOADS_ARROWâ€™
!      This predicate holds for a class-type for which â€˜operator->â€™ is
       overloaded.
  
  
*************** File: gccint.info,  Node: Functions for
*** 13449,13576 ****
  10.10.4 Functions for C++
  -------------------------
  
! A function is represented by a 'FUNCTION_DECL' node.  A set of
! overloaded functions is sometimes represented by an 'OVERLOAD' node.
  
!  An 'OVERLOAD' node is not a declaration, so none of the 'DECL_' macros
! should be used on an 'OVERLOAD'.  An 'OVERLOAD' node is similar to a
! 'TREE_LIST'.  Use 'OVL_CURRENT' to get the function associated with an
! 'OVERLOAD' node; use 'OVL_NEXT' to get the next 'OVERLOAD' node in the
! list of overloaded functions.  The macros 'OVL_CURRENT' and 'OVL_NEXT'
! are actually polymorphic; you can use them to work with 'FUNCTION_DECL'
! nodes as well as with overloads.  In the case of a 'FUNCTION_DECL',
! 'OVL_CURRENT' will always return the function itself, and 'OVL_NEXT'
! will always be 'NULL_TREE'.
  
!  To determine the scope of a function, you can use the 'DECL_CONTEXT'
! macro.  This macro will return the class (either a 'RECORD_TYPE' or a
! 'UNION_TYPE') or namespace (a 'NAMESPACE_DECL') of which the function is
  a member.  For a virtual function, this macro returns the class in which
  the function was actually defined, not the base class in which the
  virtual declaration occurred.
  
   If a friend function is defined in a class scope, the
! 'DECL_FRIEND_CONTEXT' macro can be used to determine the class in which
  it was defined.  For example, in
       class C { friend void f() {} };
! the 'DECL_CONTEXT' for 'f' will be the 'global_namespace', but the
! 'DECL_FRIEND_CONTEXT' will be the 'RECORD_TYPE' for 'C'.
  
!  The following macros and functions can be used on a 'FUNCTION_DECL':
! 'DECL_MAIN_P'
       This predicate holds for a function that is the program entry point
!      '::code'.
  
! 'DECL_LOCAL_FUNCTION_P'
       This predicate holds if the function was declared at block scope,
       even though it has a global scope.
  
! 'DECL_ANTICIPATED'
       This predicate holds if the function is a built-in function but its
       prototype is not yet explicitly declared.
  
! 'DECL_EXTERN_C_FUNCTION_P'
!      This predicate holds if the function is declared as an ''extern
!      "C"'' function.
  
! 'DECL_LINKONCE_P'
       This macro holds if multiple copies of this function may be emitted
       in various translation units.  It is the responsibility of the
       linker to merge the various copies.  Template instantiations are
!      the most common example of functions for which 'DECL_LINKONCE_P'
       holds; G++ instantiates needed templates in all translation units
       which require them, and then relies on the linker to remove
       duplicate instantiations.
  
       FIXME: This macro is not yet implemented.
  
! 'DECL_FUNCTION_MEMBER_P'
       This macro holds if the function is a member of a class, rather
       than a member of a namespace.
  
! 'DECL_STATIC_FUNCTION_P'
       This predicate holds if the function a static member function.
  
! 'DECL_NONSTATIC_MEMBER_FUNCTION_P'
       This macro holds for a non-static member function.
  
! 'DECL_CONST_MEMFUNC_P'
!      This predicate holds for a 'const'-member function.
  
! 'DECL_VOLATILE_MEMFUNC_P'
!      This predicate holds for a 'volatile'-member function.
  
! 'DECL_CONSTRUCTOR_P'
       This macro holds if the function is a constructor.
  
! 'DECL_NONCONVERTING_P'
       This predicate holds if the constructor is a non-converting
       constructor.
  
! 'DECL_COMPLETE_CONSTRUCTOR_P'
       This predicate holds for a function which is a constructor for an
       object of a complete type.
  
! 'DECL_BASE_CONSTRUCTOR_P'
       This predicate holds for a function which is a constructor for a
       base class sub-object.
  
! 'DECL_COPY_CONSTRUCTOR_P'
       This predicate holds for a function which is a copy-constructor.
  
! 'DECL_DESTRUCTOR_P'
       This macro holds if the function is a destructor.
  
! 'DECL_COMPLETE_DESTRUCTOR_P'
       This predicate holds if the function is the destructor for an
       object a complete type.
  
! 'DECL_OVERLOADED_OPERATOR_P'
       This macro holds if the function is an overloaded operator.
  
! 'DECL_CONV_FN_P'
       This macro holds if the function is a type-conversion operator.
  
! 'DECL_GLOBAL_CTOR_P'
       This predicate holds if the function is a file-scope initialization
       function.
  
! 'DECL_GLOBAL_DTOR_P'
       This predicate holds if the function is a file-scope finalization
       function.
  
! 'DECL_THUNK_P'
       This predicate holds if the function is a thunk.
  
!      These functions represent stub code that adjusts the 'this' pointer
       and then jumps to another function.  When the jumped-to function
       returns, control is transferred directly to the caller, without
       returning to the thunk.  The first parameter to the thunk is always
!      the 'this' pointer; the thunk should add 'THUNK_DELTA' to this
!      value.  (The 'THUNK_DELTA' is an 'int', not an 'INTEGER_CST'.)
  
!      Then, if 'THUNK_VCALL_OFFSET' (an 'INTEGER_CST') is nonzero the
!      adjusted 'this' pointer must be adjusted again.  The complete
       calculation is given by the following pseudo-code:
  
            this += THUNK_DELTA
--- 13454,13581 ----
  10.10.4 Functions for C++
  -------------------------
  
! A function is represented by a â€˜FUNCTION_DECLâ€™ node.  A set of
! overloaded functions is sometimes represented by an â€˜OVERLOADâ€™ node.
  
!  An â€˜OVERLOADâ€™ node is not a declaration, so none of the â€˜DECL_â€™ macros
! should be used on an â€˜OVERLOADâ€™.  An â€˜OVERLOADâ€™ node is similar to a
! â€˜TREE_LISTâ€™.  Use â€˜OVL_CURRENTâ€™ to get the function associated with an
! â€˜OVERLOADâ€™ node; use â€˜OVL_NEXTâ€™ to get the next â€˜OVERLOADâ€™ node in the
! list of overloaded functions.  The macros â€˜OVL_CURRENTâ€™ and â€˜OVL_NEXTâ€™
! are actually polymorphic; you can use them to work with â€˜FUNCTION_DECLâ€™
! nodes as well as with overloads.  In the case of a â€˜FUNCTION_DECLâ€™,
! â€˜OVL_CURRENTâ€™ will always return the function itself, and â€˜OVL_NEXTâ€™
! will always be â€˜NULL_TREEâ€™.
  
!  To determine the scope of a function, you can use the â€˜DECL_CONTEXTâ€™
! macro.  This macro will return the class (either a â€˜RECORD_TYPEâ€™ or a
! â€˜UNION_TYPEâ€™) or namespace (a â€˜NAMESPACE_DECLâ€™) of which the function is
  a member.  For a virtual function, this macro returns the class in which
  the function was actually defined, not the base class in which the
  virtual declaration occurred.
  
   If a friend function is defined in a class scope, the
! â€˜DECL_FRIEND_CONTEXTâ€™ macro can be used to determine the class in which
  it was defined.  For example, in
       class C { friend void f() {} };
! the â€˜DECL_CONTEXTâ€™ for â€˜fâ€™ will be the â€˜global_namespaceâ€™, but the
! â€˜DECL_FRIEND_CONTEXTâ€™ will be the â€˜RECORD_TYPEâ€™ for â€˜Câ€™.
  
!  The following macros and functions can be used on a â€˜FUNCTION_DECLâ€™:
! â€˜DECL_MAIN_Pâ€™
       This predicate holds for a function that is the program entry point
!      â€˜::codeâ€™.
  
! â€˜DECL_LOCAL_FUNCTION_Pâ€™
       This predicate holds if the function was declared at block scope,
       even though it has a global scope.
  
! â€˜DECL_ANTICIPATEDâ€™
       This predicate holds if the function is a built-in function but its
       prototype is not yet explicitly declared.
  
! â€˜DECL_EXTERN_C_FUNCTION_Pâ€™
!      This predicate holds if the function is declared as an 'â€˜extern
!      "C"â€™' function.
  
! â€˜DECL_LINKONCE_Pâ€™
       This macro holds if multiple copies of this function may be emitted
       in various translation units.  It is the responsibility of the
       linker to merge the various copies.  Template instantiations are
!      the most common example of functions for which â€˜DECL_LINKONCE_Pâ€™
       holds; G++ instantiates needed templates in all translation units
       which require them, and then relies on the linker to remove
       duplicate instantiations.
  
       FIXME: This macro is not yet implemented.
  
! â€˜DECL_FUNCTION_MEMBER_Pâ€™
       This macro holds if the function is a member of a class, rather
       than a member of a namespace.
  
! â€˜DECL_STATIC_FUNCTION_Pâ€™
       This predicate holds if the function a static member function.
  
! â€˜DECL_NONSTATIC_MEMBER_FUNCTION_Pâ€™
       This macro holds for a non-static member function.
  
! â€˜DECL_CONST_MEMFUNC_Pâ€™
!      This predicate holds for a â€˜constâ€™-member function.
  
! â€˜DECL_VOLATILE_MEMFUNC_Pâ€™
!      This predicate holds for a â€˜volatileâ€™-member function.
  
! â€˜DECL_CONSTRUCTOR_Pâ€™
       This macro holds if the function is a constructor.
  
! â€˜DECL_NONCONVERTING_Pâ€™
       This predicate holds if the constructor is a non-converting
       constructor.
  
! â€˜DECL_COMPLETE_CONSTRUCTOR_Pâ€™
       This predicate holds for a function which is a constructor for an
       object of a complete type.
  
! â€˜DECL_BASE_CONSTRUCTOR_Pâ€™
       This predicate holds for a function which is a constructor for a
       base class sub-object.
  
! â€˜DECL_COPY_CONSTRUCTOR_Pâ€™
       This predicate holds for a function which is a copy-constructor.
  
! â€˜DECL_DESTRUCTOR_Pâ€™
       This macro holds if the function is a destructor.
  
! â€˜DECL_COMPLETE_DESTRUCTOR_Pâ€™
       This predicate holds if the function is the destructor for an
       object a complete type.
  
! â€˜DECL_OVERLOADED_OPERATOR_Pâ€™
       This macro holds if the function is an overloaded operator.
  
! â€˜DECL_CONV_FN_Pâ€™
       This macro holds if the function is a type-conversion operator.
  
! â€˜DECL_GLOBAL_CTOR_Pâ€™
       This predicate holds if the function is a file-scope initialization
       function.
  
! â€˜DECL_GLOBAL_DTOR_Pâ€™
       This predicate holds if the function is a file-scope finalization
       function.
  
! â€˜DECL_THUNK_Pâ€™
       This predicate holds if the function is a thunk.
  
!      These functions represent stub code that adjusts the â€˜thisâ€™ pointer
       and then jumps to another function.  When the jumped-to function
       returns, control is transferred directly to the caller, without
       returning to the thunk.  The first parameter to the thunk is always
!      the â€˜thisâ€™ pointer; the thunk should add â€˜THUNK_DELTAâ€™ to this
!      value.  (The â€˜THUNK_DELTAâ€™ is an â€˜intâ€™, not an â€˜INTEGER_CSTâ€™.)
  
!      Then, if â€˜THUNK_VCALL_OFFSETâ€™ (an â€˜INTEGER_CSTâ€™) is nonzero the
!      adjusted â€˜thisâ€™ pointer must be adjusted again.  The complete
       calculation is given by the following pseudo-code:
  
            this += THUNK_DELTA
*************** the 'DECL_CONTEXT' for 'f' will be the '
*** 13578,13609 ****
              this += (*((ptrdiff_t **) this))[THUNK_VCALL_OFFSET]
  
       Finally, the thunk should jump to the location given by
!      'DECL_INITIAL'; this will always be an expression for the address
       of a function.
  
! 'DECL_NON_THUNK_FUNCTION_P'
       This predicate holds if the function is _not_ a thunk function.
  
! 'GLOBAL_INIT_PRIORITY'
!      If either 'DECL_GLOBAL_CTOR_P' or 'DECL_GLOBAL_DTOR_P' holds, then
       this gives the initialization priority for the function.  The
       linker will arrange that all functions for which
!      'DECL_GLOBAL_CTOR_P' holds are run in increasing order of priority
!      before 'main' is called.  When the program exits, all functions for
!      which 'DECL_GLOBAL_DTOR_P' holds are run in the reverse order.
  
! 'TYPE_RAISES_EXCEPTIONS'
       This macro returns the list of exceptions that a (member-)function
!      can raise.  The returned list, if non 'NULL', is comprised of nodes
!      whose 'TREE_VALUE' represents a type.
  
! 'TYPE_NOTHROW_P'
       This predicate holds when the exception-specification of its
!      arguments is of the form ''()''.
  
! 'DECL_ARRAY_DELETE_OPERATOR_P'
!      This predicate holds if the function an overloaded 'operator
!      delete[]'.
  
  
  File: gccint.info,  Node: Statements for C and C++,  Next: C++ Expressions,  Prev: Functions for C++,  Up: C and C++ Trees
--- 13583,13614 ----
              this += (*((ptrdiff_t **) this))[THUNK_VCALL_OFFSET]
  
       Finally, the thunk should jump to the location given by
!      â€˜DECL_INITIALâ€™; this will always be an expression for the address
       of a function.
  
! â€˜DECL_NON_THUNK_FUNCTION_Pâ€™
       This predicate holds if the function is _not_ a thunk function.
  
! â€˜GLOBAL_INIT_PRIORITYâ€™
!      If either â€˜DECL_GLOBAL_CTOR_Pâ€™ or â€˜DECL_GLOBAL_DTOR_Pâ€™ holds, then
       this gives the initialization priority for the function.  The
       linker will arrange that all functions for which
!      â€˜DECL_GLOBAL_CTOR_Pâ€™ holds are run in increasing order of priority
!      before â€˜mainâ€™ is called.  When the program exits, all functions for
!      which â€˜DECL_GLOBAL_DTOR_Pâ€™ holds are run in the reverse order.
  
! â€˜TYPE_RAISES_EXCEPTIONSâ€™
       This macro returns the list of exceptions that a (member-)function
!      can raise.  The returned list, if non â€˜NULLâ€™, is comprised of nodes
!      whose â€˜TREE_VALUEâ€™ represents a type.
  
! â€˜TYPE_NOTHROW_Pâ€™
       This predicate holds when the exception-specification of its
!      arguments is of the form 'â€˜()â€™'.
  
! â€˜DECL_ARRAY_DELETE_OPERATOR_Pâ€™
!      This predicate holds if the function an overloaded â€˜operator
!      delete[]â€™.
  
  
  File: gccint.info,  Node: Statements for C and C++,  Next: C++ Expressions,  Prev: Functions for C++,  Up: C and C++ Trees
*************** File: gccint.info,  Node: Statements for
*** 13612,13621 ****
  --------------------------------
  
  A function that has a definition in the current translation unit has a
! non-'NULL' 'DECL_INITIAL'.  However, back ends should not make use of
! the particular value given by 'DECL_INITIAL'.
  
!  The 'DECL_SAVED_TREE' gives the complete body of the function.
  
   There are tree nodes corresponding to all of the source-level statement
  constructs, used within the C and C++ frontends.  These are enumerated
--- 13617,13626 ----
  --------------------------------
  
  A function that has a definition in the current translation unit has a
! non-â€˜NULLâ€™ â€˜DECL_INITIALâ€™.  However, back ends should not make use of
! the particular value given by â€˜DECL_INITIALâ€™.
  
!  The â€˜DECL_SAVED_TREEâ€™ gives the complete body of the function.
  
   There are tree nodes corresponding to all of the source-level statement
  constructs, used within the C and C++ frontends.  These are enumerated
*************** here, together with a list of the variou
*** 13623,13636 ****
  obtain information about them.  There are a few macros that can be used
  with all statements:
  
! 'STMT_IS_FULL_EXPR_P'
       In C++, statements normally constitute "full expressions";
       temporaries created during a statement are destroyed when the
       statement is complete.  However, G++ sometimes represents
       expressions by statements; these statements will not have
!      'STMT_IS_FULL_EXPR_P' set.  Temporaries created during such
       statements should be destroyed when the innermost enclosing
!      statement with 'STMT_IS_FULL_EXPR_P' set is exited.
  
   Here is the list of the various statement nodes, and the macros used to
  access them.  This documentation describes the use of these nodes in
--- 13628,13641 ----
  obtain information about them.  There are a few macros that can be used
  with all statements:
  
! â€˜STMT_IS_FULL_EXPR_Pâ€™
       In C++, statements normally constitute "full expressions";
       temporaries created during a statement are destroyed when the
       statement is complete.  However, G++ sometimes represents
       expressions by statements; these statements will not have
!      â€˜STMT_IS_FULL_EXPR_Pâ€™ set.  Temporaries created during such
       statements should be destroyed when the innermost enclosing
!      statement with â€˜STMT_IS_FULL_EXPR_Pâ€™ set is exited.
  
   Here is the list of the various statement nodes, and the macros used to
  access them.  This documentation describes the use of these nodes in
*************** non-template functions (including instan
*** 13638,13649 ****
  In template functions, the same nodes are used, but sometimes in
  slightly different ways.
  
!  Many of the statements have substatements.  For example, a 'while' loop
  has a body, which is itself a statement.  If the substatement is
! 'NULL_TREE', it is considered equivalent to a statement consisting of a
! single ';', i.e., an expression statement in which the expression has
  been omitted.  A substatement may in fact be a list of statements,
! connected via their 'TREE_CHAIN's.  So, you should always process the
  statement tree by looping over substatements, like this:
       void process_stmt (stmt)
            tree stmt;
--- 13643,13654 ----
  In template functions, the same nodes are used, but sometimes in
  slightly different ways.
  
!  Many of the statements have substatements.  For example, a â€˜whileâ€™ loop
  has a body, which is itself a statement.  If the substatement is
! â€˜NULL_TREEâ€™, it is considered equivalent to a statement consisting of a
! single â€˜;â€™, i.e., an expression statement in which the expression has
  been omitted.  A substatement may in fact be a list of statements,
! connected via their â€˜TREE_CHAINâ€™s.  So, you should always process the
  statement tree by looping over substatements, like this:
       void process_stmt (stmt)
            tree stmt;
*************** statement tree by looping over substatem
*** 13663,13748 ****
             stmt = TREE_CHAIN (stmt);
           }
       }
!  In other words, while the 'then' clause of an 'if' statement in C++ can
  be only one statement (although that one statement may be a compound
  statement), the intermediate representation sometimes uses several
  statements chained together.
  
! 'BREAK_STMT'
  
!      Used to represent a 'break' statement.  There are no additional
       fields.
  
! 'CLEANUP_STMT'
  
       Used to represent an action that should take place upon exit from
       the enclosing scope.  Typically, these actions are calls to
       destructors for local objects, but back ends cannot rely on this
       fact.  If these nodes are in fact representing such destructors,
!      'CLEANUP_DECL' will be the 'VAR_DECL' destroyed.  Otherwise,
!      'CLEANUP_DECL' will be 'NULL_TREE'.  In any case, the
!      'CLEANUP_EXPR' is the expression to execute.  The cleanups executed
       on exit from a scope should be run in the reverse order of the
!      order in which the associated 'CLEANUP_STMT's were encountered.
  
! 'CONTINUE_STMT'
  
!      Used to represent a 'continue' statement.  There are no additional
       fields.
  
! 'CTOR_STMT'
  
!      Used to mark the beginning (if 'CTOR_BEGIN_P' holds) or end (if
!      'CTOR_END_P' holds of the main body of a constructor.  See also
!      'SUBOBJECT' for more information on how to use these nodes.
  
! 'DO_STMT'
  
!      Used to represent a 'do' loop.  The body of the loop is given by
!      'DO_BODY' while the termination condition for the loop is given by
!      'DO_COND'.  The condition for a 'do'-statement is always an
       expression.
  
! 'EMPTY_CLASS_EXPR'
  
       Used to represent a temporary object of a class with no data whose
       address is never taken.  (All such objects are interchangeable.)
!      The 'TREE_TYPE' represents the type of the object.
  
! 'EXPR_STMT'
  
!      Used to represent an expression statement.  Use 'EXPR_STMT_EXPR' to
       obtain the expression.
  
! 'FOR_STMT'
  
!      Used to represent a 'for' statement.  The 'FOR_INIT_STMT' is the
!      initialization statement for the loop.  The 'FOR_COND' is the
!      termination condition.  The 'FOR_EXPR' is the expression executed
!      right before the 'FOR_COND' on each loop iteration; often, this
       expression increments a counter.  The body of the loop is given by
!      'FOR_BODY'.  'FOR_SCOPE' holds the scope of the 'for' statement
!      (used in the C++ front end only).  Note that 'FOR_INIT_STMT' and
!      'FOR_BODY' return statements, while 'FOR_COND' and 'FOR_EXPR'
       return expressions.
  
! 'HANDLER'
  
!      Used to represent a C++ 'catch' block.  The 'HANDLER_TYPE' is the
       type of exception that will be caught by this handler; it is equal
!      (by pointer equality) to 'NULL' if this handler is for all types.
!      'HANDLER_PARMS' is the 'DECL_STMT' for the catch parameter, and
!      'HANDLER_BODY' is the code for the block itself.
  
! 'IF_STMT'
  
!      Used to represent an 'if' statement.  The 'IF_COND' is the
       expression.
  
!      If the condition is a 'TREE_LIST', then the 'TREE_PURPOSE' is a
!      statement (usually a 'DECL_STMT').  Each time the condition is
       evaluated, the statement should be executed.  Then, the
!      'TREE_VALUE' should be used as the conditional expression itself.
       This representation is used to handle C++ code like this:
  
            if (int i = 7) ...
--- 13668,13753 ----
             stmt = TREE_CHAIN (stmt);
           }
       }
!  In other words, while the â€˜thenâ€™ clause of an â€˜ifâ€™ statement in C++ can
  be only one statement (although that one statement may be a compound
  statement), the intermediate representation sometimes uses several
  statements chained together.
  
! â€˜BREAK_STMTâ€™
  
!      Used to represent a â€˜breakâ€™ statement.  There are no additional
       fields.
  
! â€˜CLEANUP_STMTâ€™
  
       Used to represent an action that should take place upon exit from
       the enclosing scope.  Typically, these actions are calls to
       destructors for local objects, but back ends cannot rely on this
       fact.  If these nodes are in fact representing such destructors,
!      â€˜CLEANUP_DECLâ€™ will be the â€˜VAR_DECLâ€™ destroyed.  Otherwise,
!      â€˜CLEANUP_DECLâ€™ will be â€˜NULL_TREEâ€™.  In any case, the
!      â€˜CLEANUP_EXPRâ€™ is the expression to execute.  The cleanups executed
       on exit from a scope should be run in the reverse order of the
!      order in which the associated â€˜CLEANUP_STMTâ€™s were encountered.
  
! â€˜CONTINUE_STMTâ€™
  
!      Used to represent a â€˜continueâ€™ statement.  There are no additional
       fields.
  
! â€˜CTOR_STMTâ€™
  
!      Used to mark the beginning (if â€˜CTOR_BEGIN_Pâ€™ holds) or end (if
!      â€˜CTOR_END_Pâ€™ holds of the main body of a constructor.  See also
!      â€˜SUBOBJECTâ€™ for more information on how to use these nodes.
  
! â€˜DO_STMTâ€™
  
!      Used to represent a â€˜doâ€™ loop.  The body of the loop is given by
!      â€˜DO_BODYâ€™ while the termination condition for the loop is given by
!      â€˜DO_CONDâ€™.  The condition for a â€˜doâ€™-statement is always an
       expression.
  
! â€˜EMPTY_CLASS_EXPRâ€™
  
       Used to represent a temporary object of a class with no data whose
       address is never taken.  (All such objects are interchangeable.)
!      The â€˜TREE_TYPEâ€™ represents the type of the object.
  
! â€˜EXPR_STMTâ€™
  
!      Used to represent an expression statement.  Use â€˜EXPR_STMT_EXPRâ€™ to
       obtain the expression.
  
! â€˜FOR_STMTâ€™
  
!      Used to represent a â€˜forâ€™ statement.  The â€˜FOR_INIT_STMTâ€™ is the
!      initialization statement for the loop.  The â€˜FOR_CONDâ€™ is the
!      termination condition.  The â€˜FOR_EXPRâ€™ is the expression executed
!      right before the â€˜FOR_CONDâ€™ on each loop iteration; often, this
       expression increments a counter.  The body of the loop is given by
!      â€˜FOR_BODYâ€™.  â€˜FOR_SCOPEâ€™ holds the scope of the â€˜forâ€™ statement
!      (used in the C++ front end only).  Note that â€˜FOR_INIT_STMTâ€™ and
!      â€˜FOR_BODYâ€™ return statements, while â€˜FOR_CONDâ€™ and â€˜FOR_EXPRâ€™
       return expressions.
  
! â€˜HANDLERâ€™
  
!      Used to represent a C++ â€˜catchâ€™ block.  The â€˜HANDLER_TYPEâ€™ is the
       type of exception that will be caught by this handler; it is equal
!      (by pointer equality) to â€˜NULLâ€™ if this handler is for all types.
!      â€˜HANDLER_PARMSâ€™ is the â€˜DECL_STMTâ€™ for the catch parameter, and
!      â€˜HANDLER_BODYâ€™ is the code for the block itself.
  
! â€˜IF_STMTâ€™
  
!      Used to represent an â€˜ifâ€™ statement.  The â€˜IF_CONDâ€™ is the
       expression.
  
!      If the condition is a â€˜TREE_LISTâ€™, then the â€˜TREE_PURPOSEâ€™ is a
!      statement (usually a â€˜DECL_STMTâ€™).  Each time the condition is
       evaluated, the statement should be executed.  Then, the
!      â€˜TREE_VALUEâ€™ should be used as the conditional expression itself.
       This representation is used to handle C++ code like this:
  
            if (int i = 7) ...
*************** statements chained together.
*** 13750,13817 ****
       where there is a new local variable (or variables) declared within
       the condition.
  
!      The 'THEN_CLAUSE' represents the statement given by the 'then'
!      condition, while the 'ELSE_CLAUSE' represents the statement given
!      by the 'else' condition.
  
!      C++ distinguishes between this and 'COND_EXPR' for handling
       templates.
  
! 'SUBOBJECT'
  
       In a constructor, these nodes are used to mark the point at which a
!      subobject of 'this' is fully constructed.  If, after this point, an
!      exception is thrown before a 'CTOR_STMT' with 'CTOR_END_P' set is
!      encountered, the 'SUBOBJECT_CLEANUP' must be executed.  The
       cleanups must be executed in the reverse order in which they
       appear.
  
! 'SWITCH_STMT'
  
!      Used to represent a 'switch' statement.  The 'SWITCH_STMT_COND' is
       the expression on which the switch is occurring.  See the
!      documentation for an 'IF_STMT' for more information on the
!      representation used for the condition.  The 'SWITCH_STMT_BODY' is
!      the body of the switch statement.  The 'SWITCH_STMT_TYPE' is the
       original type of switch expression as given in the source, before
!      any compiler conversions.  The 'SWITCH_STMT_SCOPE' is the statement
       scope (used in the C++ front end only).
  
!      There are also two boolean flags used with 'SWITCH_STMT'.
!      'SWITCH_STMT_ALL_CASES_P' is true if the switch includes a default
       label or the case label ranges cover all possible values of the
!      condition expression.  'SWITCH_STMT_NO_BREAK_P' is true if there
!      are no 'break' statements in the switch.
  
! 'TRY_BLOCK'
!      Used to represent a 'try' block.  The body of the try block is
!      given by 'TRY_STMTS'.  Each of the catch blocks is a 'HANDLER'
!      node.  The first handler is given by 'TRY_HANDLERS'.  Subsequent
!      handlers are obtained by following the 'TREE_CHAIN' link from one
       handler to the next.  The body of the handler is given by
!      'HANDLER_BODY'.
  
!      If 'CLEANUP_P' holds of the 'TRY_BLOCK', then the 'TRY_HANDLERS'
!      will not be a 'HANDLER' node.  Instead, it will be an expression
       that should be executed if an exception is thrown in the try block.
       It must rethrow the exception after executing that code.  And, if
       an exception is thrown while the expression is executing,
!      'terminate' must be called.
  
! 'USING_STMT'
!      Used to represent a 'using' directive.  The namespace is given by
!      'USING_STMT_NAMESPACE', which will be a NAMESPACE_DECL.  This node
       is needed inside template functions, to implement using directives
       during instantiation.
  
! 'WHILE_STMT'
  
!      Used to represent a 'while' loop.  The 'WHILE_COND' is the
       termination condition for the loop.  See the documentation for an
!      'IF_STMT' for more information on the representation used for the
       condition.
  
!      The 'WHILE_BODY' is the body of the loop.
  
  
  File: gccint.info,  Node: C++ Expressions,  Prev: Statements for C and C++,  Up: C and C++ Trees
--- 13755,13822 ----
       where there is a new local variable (or variables) declared within
       the condition.
  
!      The â€˜THEN_CLAUSEâ€™ represents the statement given by the â€˜thenâ€™
!      condition, while the â€˜ELSE_CLAUSEâ€™ represents the statement given
!      by the â€˜elseâ€™ condition.
  
!      C++ distinguishes between this and â€˜COND_EXPRâ€™ for handling
       templates.
  
! â€˜SUBOBJECTâ€™
  
       In a constructor, these nodes are used to mark the point at which a
!      subobject of â€˜thisâ€™ is fully constructed.  If, after this point, an
!      exception is thrown before a â€˜CTOR_STMTâ€™ with â€˜CTOR_END_Pâ€™ set is
!      encountered, the â€˜SUBOBJECT_CLEANUPâ€™ must be executed.  The
       cleanups must be executed in the reverse order in which they
       appear.
  
! â€˜SWITCH_STMTâ€™
  
!      Used to represent a â€˜switchâ€™ statement.  The â€˜SWITCH_STMT_CONDâ€™ is
       the expression on which the switch is occurring.  See the
!      documentation for an â€˜IF_STMTâ€™ for more information on the
!      representation used for the condition.  The â€˜SWITCH_STMT_BODYâ€™ is
!      the body of the switch statement.  The â€˜SWITCH_STMT_TYPEâ€™ is the
       original type of switch expression as given in the source, before
!      any compiler conversions.  The â€˜SWITCH_STMT_SCOPEâ€™ is the statement
       scope (used in the C++ front end only).
  
!      There are also two boolean flags used with â€˜SWITCH_STMTâ€™.
!      â€˜SWITCH_STMT_ALL_CASES_Pâ€™ is true if the switch includes a default
       label or the case label ranges cover all possible values of the
!      condition expression.  â€˜SWITCH_STMT_NO_BREAK_Pâ€™ is true if there
!      are no â€˜breakâ€™ statements in the switch.
  
! â€˜TRY_BLOCKâ€™
!      Used to represent a â€˜tryâ€™ block.  The body of the try block is
!      given by â€˜TRY_STMTSâ€™.  Each of the catch blocks is a â€˜HANDLERâ€™
!      node.  The first handler is given by â€˜TRY_HANDLERSâ€™.  Subsequent
!      handlers are obtained by following the â€˜TREE_CHAINâ€™ link from one
       handler to the next.  The body of the handler is given by
!      â€˜HANDLER_BODYâ€™.
  
!      If â€˜CLEANUP_Pâ€™ holds of the â€˜TRY_BLOCKâ€™, then the â€˜TRY_HANDLERSâ€™
!      will not be a â€˜HANDLERâ€™ node.  Instead, it will be an expression
       that should be executed if an exception is thrown in the try block.
       It must rethrow the exception after executing that code.  And, if
       an exception is thrown while the expression is executing,
!      â€˜terminateâ€™ must be called.
  
! â€˜USING_STMTâ€™
!      Used to represent a â€˜usingâ€™ directive.  The namespace is given by
!      â€˜USING_STMT_NAMESPACEâ€™, which will be a NAMESPACE_DECL.  This node
       is needed inside template functions, to implement using directives
       during instantiation.
  
! â€˜WHILE_STMTâ€™
  
!      Used to represent a â€˜whileâ€™ loop.  The â€˜WHILE_CONDâ€™ is the
       termination condition for the loop.  See the documentation for an
!      â€˜IF_STMTâ€™ for more information on the representation used for the
       condition.
  
!      The â€˜WHILE_BODYâ€™ is the body of the loop.
  
  
  File: gccint.info,  Node: C++ Expressions,  Prev: Statements for C and C++,  Up: C and C++ Trees
*************** File: gccint.info,  Node: C++ Expression
*** 13821,13861 ****
  
  This section describes expressions specific to the C and C++ front ends.
  
! 'TYPEID_EXPR'
  
!      Used to represent a 'typeid' expression.
  
! 'NEW_EXPR'
! 'VEC_NEW_EXPR'
  
!      Used to represent a call to 'new' and 'new[]' respectively.
  
! 'DELETE_EXPR'
! 'VEC_DELETE_EXPR'
  
!      Used to represent a call to 'delete' and 'delete[]' respectively.
  
! 'MEMBER_REF'
  
       Represents a reference to a member of a class.
  
! 'THROW_EXPR'
  
!      Represents an instance of 'throw' in the program.  Operand 0, which
!      is the expression to throw, may be 'NULL_TREE'.
  
! 'AGGR_INIT_EXPR'
!      An 'AGGR_INIT_EXPR' represents the initialization as the return
       value of a function call, or as the result of a constructor.  An
!      'AGGR_INIT_EXPR' will only appear as a full-expression, or as the
!      second operand of a 'TARGET_EXPR'.  'AGGR_INIT_EXPR's have a
!      representation similar to that of 'CALL_EXPR's.  You can use the
!      'AGGR_INIT_EXPR_FN' and 'AGGR_INIT_EXPR_ARG' macros to access the
       function to call and the arguments to pass.
  
!      If 'AGGR_INIT_VIA_CTOR_P' holds of the 'AGGR_INIT_EXPR', then the
       initialization is via a constructor call.  The address of the
!      'AGGR_INIT_EXPR_SLOT' operand, which is always a 'VAR_DECL', is
       taken, and this value replaces the first argument in the argument
       list.
  
--- 13826,13866 ----
  
  This section describes expressions specific to the C and C++ front ends.
  
! â€˜TYPEID_EXPRâ€™
  
!      Used to represent a â€˜typeidâ€™ expression.
  
! â€˜NEW_EXPRâ€™
! â€˜VEC_NEW_EXPRâ€™
  
!      Used to represent a call to â€˜newâ€™ and â€˜new[]â€™ respectively.
  
! â€˜DELETE_EXPRâ€™
! â€˜VEC_DELETE_EXPRâ€™
  
!      Used to represent a call to â€˜deleteâ€™ and â€˜delete[]â€™ respectively.
  
! â€˜MEMBER_REFâ€™
  
       Represents a reference to a member of a class.
  
! â€˜THROW_EXPRâ€™
  
!      Represents an instance of â€˜throwâ€™ in the program.  Operand 0, which
!      is the expression to throw, may be â€˜NULL_TREEâ€™.
  
! â€˜AGGR_INIT_EXPRâ€™
!      An â€˜AGGR_INIT_EXPRâ€™ represents the initialization as the return
       value of a function call, or as the result of a constructor.  An
!      â€˜AGGR_INIT_EXPRâ€™ will only appear as a full-expression, or as the
!      second operand of a â€˜TARGET_EXPRâ€™.  â€˜AGGR_INIT_EXPRâ€™s have a
!      representation similar to that of â€˜CALL_EXPRâ€™s.  You can use the
!      â€˜AGGR_INIT_EXPR_FNâ€™ and â€˜AGGR_INIT_EXPR_ARGâ€™ macros to access the
       function to call and the arguments to pass.
  
!      If â€˜AGGR_INIT_VIA_CTOR_Pâ€™ holds of the â€˜AGGR_INIT_EXPRâ€™, then the
       initialization is via a constructor call.  The address of the
!      â€˜AGGR_INIT_EXPR_SLOTâ€™ operand, which is always a â€˜VAR_DECLâ€™, is
       taken, and this value replaces the first argument in the argument
       list.
  
*************** breaking down GENERIC expressions into t
*** 13872,13878 ****
  (with some exceptions like function calls).  GIMPLE was heavily
  influenced by the SIMPLE IL used by the McCAT compiler project at McGill
  University, though we have made some different choices.  For one thing,
! SIMPLE doesn't support 'goto'.
  
   Temporaries are introduced to hold intermediate values needed to
  compute complex expressions.  Additionally, all the control structures
--- 13877,13883 ----
  (with some exceptions like function calls).  GIMPLE was heavily
  influenced by the SIMPLE IL used by the McCAT compiler project at McGill
  University, though we have made some different choices.  For one thing,
! SIMPLE doesn't support â€˜gotoâ€™.
  
   Temporaries are introduced to hold intermediate values needed to
  compute complex expressions.  Additionally, all the control structures
*************** removed and exception regions are conver
*** 13881,13887 ****
  exception region tree.
  
   The compiler pass which converts GENERIC into GIMPLE is referred to as
! the 'gimplifier'.  The gimplifier works recursively, generating GIMPLE
  tuples out of the original GENERIC expressions.
  
   One of the early implementation strategies used for the GIMPLE
--- 13886,13892 ----
  exception region tree.
  
   The compiler pass which converts GENERIC into GIMPLE is referred to as
! the â€˜gimplifierâ€™.  The gimplifier works recursively, generating GIMPLE
  tuples out of the original GENERIC expressions.
  
   One of the early implementation strategies used for the GIMPLE
*************** syntax trees (AST), therefore it does no
*** 13893,13921 ****
  complexity provided by the main tree data structure.
  
   The GENERIC representation of a function is stored in the
! 'DECL_SAVED_TREE' field of the associated 'FUNCTION_DECL' tree node.  It
! is converted to GIMPLE by a call to 'gimplify_function_tree'.
  
   If a front end wants to include language-specific tree codes in the
  tree representation which it provides to the back end, it must provide a
! definition of 'LANG_HOOKS_GIMPLIFY_EXPR' which knows how to convert the
  front end trees to GIMPLE.  Usually such a hook will involve much of the
  same code for expanding front end trees to RTL.  This function can
  return fully lowered GIMPLE, or it can return GENERIC trees and let the
  main gimplifier lower them the rest of the way; this is often simpler.
  GIMPLE that is not fully lowered is known as "High GIMPLE" and consists
! of the IL before the pass 'pass_lower_cf'.  High GIMPLE contains some
! container statements like lexical scopes (represented by 'GIMPLE_BIND')
! and nested expressions (e.g., 'GIMPLE_TRY'), while "Low GIMPLE" exposes
  all of the implicit jumps for control and exception expressions directly
  in the IL and EH region trees.
  
   The C and C++ front ends currently convert directly from front end
  trees to GIMPLE, and hand that off to the back end rather than first
  converting to GENERIC.  Their gimplifier hooks know about all the
! '_STMT' nodes and how to convert them to GENERIC forms.  There was some
  work done on a genericization pass which would run first, but the
! existence of 'STMT_EXPR' meant that in order to convert all of the C
  statements into GENERIC equivalents would involve walking the entire
  tree anyway, so it was simpler to lower all the way.  This might change
  in the future if someone writes an optimization pass which would work
--- 13898,13926 ----
  complexity provided by the main tree data structure.
  
   The GENERIC representation of a function is stored in the
! â€˜DECL_SAVED_TREEâ€™ field of the associated â€˜FUNCTION_DECLâ€™ tree node.  It
! is converted to GIMPLE by a call to â€˜gimplify_function_treeâ€™.
  
   If a front end wants to include language-specific tree codes in the
  tree representation which it provides to the back end, it must provide a
! definition of â€˜LANG_HOOKS_GIMPLIFY_EXPRâ€™ which knows how to convert the
  front end trees to GIMPLE.  Usually such a hook will involve much of the
  same code for expanding front end trees to RTL.  This function can
  return fully lowered GIMPLE, or it can return GENERIC trees and let the
  main gimplifier lower them the rest of the way; this is often simpler.
  GIMPLE that is not fully lowered is known as "High GIMPLE" and consists
! of the IL before the pass â€˜pass_lower_cfâ€™.  High GIMPLE contains some
! container statements like lexical scopes (represented by â€˜GIMPLE_BINDâ€™)
! and nested expressions (e.g., â€˜GIMPLE_TRYâ€™), while "Low GIMPLE" exposes
  all of the implicit jumps for control and exception expressions directly
  in the IL and EH region trees.
  
   The C and C++ front ends currently convert directly from front end
  trees to GIMPLE, and hand that off to the back end rather than first
  converting to GENERIC.  Their gimplifier hooks know about all the
! â€˜_STMTâ€™ nodes and how to convert them to GENERIC forms.  There was some
  work done on a genericization pass which would run first, but the
! existence of â€˜STMT_EXPRâ€™ meant that in order to convert all of the C
  statements into GENERIC equivalents would involve walking the entire
  tree anyway, so it was simpler to lower all the way.  This might change
  in the future if someone writes an optimization pass which would work
*************** better with higher-level trees, but curr
*** 13923,13929 ****
  GIMPLE.
  
   You can request to dump a C-like representation of the GIMPLE form with
! the flag '-fdump-tree-gimple'.
  
  * Menu:
  
--- 13928,13934 ----
  GIMPLE.
  
   You can request to dump a C-like representation of the GIMPLE form with
! the flag â€˜-fdump-tree-gimpleâ€™.
  
  * Menu:
  
*************** header describing the instruction and it
*** 13951,13957 ****
  length body with all the operands.  Tuples are organized into a
  hierarchy with 3 main classes of tuples.
  
! 11.1.1 'gimple' (gsbase)
  ------------------------
  
  This is the root of the hierarchy, it holds basic information needed by
--- 13956,13962 ----
  length body with all the operands.  Tuples are organized into a
  hierarchy with 3 main classes of tuples.
  
! 11.1.1 â€˜gimpleâ€™ (gsbase)
  ------------------------
  
  This is the root of the hierarchy, it holds basic information needed by
*************** structure more compact).  The structure
*** 13962,14112 ****
  bit hosts:
  
  Field                   Size (bits)
! 'code'                  8
! 'subcode'               16
! 'no_warning'            1
! 'visited'               1
! 'nontemporal_move'      1
! 'plf'                   2
! 'modified'              1
! 'has_volatile_ops'      1
! 'references_memory_p'   1
! 'uid'                   32
! 'location'              32
! 'num_ops'               32
! 'bb'                    64
! 'block'                 63
  Total size              32 bytes
  
!    * 'code' Main identifier for a GIMPLE instruction.
  
!    * 'subcode' Used to distinguish different variants of the same basic
       instruction or provide flags applicable to a given code.  The
!      'subcode' flags field has different uses depending on the code of
       the instruction, but mostly it distinguishes instructions of the
       same family.  The most prominent use of this field is in
       assignments, where subcode indicates the operation done on the RHS
       of the assignment.  For example, a = b + c is encoded as
!      'GIMPLE_ASSIGN <PLUS_EXPR, a, b, c>'.
  
!    * 'no_warning' Bitflag to indicate whether a warning has already been
       issued on this statement.
  
!    * 'visited' General purpose "visited" marker.  Set and cleared by
       each pass when needed.
  
!    * 'nontemporal_move' Bitflag used in assignments that represent
       non-temporal moves.  Although this bitflag is only used in
       assignments, it was moved into the base to take advantage of the
       bit holes left by the previous fields.
  
!    * 'plf' Pass Local Flags.  This 2-bit mask can be used as general
       purpose markers by any pass.  Passes are responsible for clearing
       and setting these two flags accordingly.
  
!    * 'modified' Bitflag to indicate whether the statement has been
       modified.  Used mainly by the operand scanner to determine when to
       re-scan a statement for operands.
  
!    * 'has_volatile_ops' Bitflag to indicate whether this statement
       contains operands that have been marked volatile.
  
!    * 'references_memory_p' Bitflag to indicate whether this statement
       contains memory references (i.e., its operands are either global
       variables, or pointer dereferences or anything that must reside in
       memory).
  
!    * 'uid' This is an unsigned integer used by passes that want to
       assign IDs to every statement.  These IDs must be assigned and used
       by each pass.
  
!    * 'location' This is a 'location_t' identifier to specify source code
       location for this statement.  It is inherited from the front end.
  
!    * 'num_ops' Number of operands that this statement has.  This
       specifies the size of the operand vector embedded in the tuple.
       Only used in some tuples, but it is declared in the base tuple to
       take advantage of the 32-bit hole left by the previous fields.
  
!    * 'bb' Basic block holding the instruction.
  
!    * 'block' Lexical block holding this statement.  Also used for debug
       information generation.
  
! 11.1.2 'gimple_statement_with_ops'
  ----------------------------------
  
! This tuple is actually split in two: 'gimple_statement_with_ops_base'
! and 'gimple_statement_with_ops'.  This is needed to accommodate the way
  the operand vector is allocated.  The operand vector is defined to be an
  array of 1 element.  So, to allocate a dynamic number of operands, the
! memory allocator ('gimple_alloc') simply allocates enough memory to hold
! the structure itself plus 'N - 1' operands which run "off the end" of
  the structure.  For example, to allocate space for a tuple with 3
! operands, 'gimple_alloc' reserves 'sizeof (struct
! gimple_statement_with_ops) + 2 * sizeof (tree)' bytes.
  
   On the other hand, several fields in this tuple need to be shared with
! the 'gimple_statement_with_memory_ops' tuple.  So, these common fields
! are placed in 'gimple_statement_with_ops_base' which is then inherited
  from the other two tuples.
  
! 'gsbase'    256
! 'def_ops'   64
! 'use_ops'   64
! 'op'        'num_ops' * 64
! Total       48 + 8 * 'num_ops' bytes
  size
  
!    * 'gsbase' Inherited from 'struct gimple'.
  
!    * 'def_ops' Array of pointers into the operand array indicating all
       the slots that contain a variable written-to by the statement.
       This array is also used for immediate use chaining.  Note that it
       would be possible to not rely on this array, but the changes
       required to implement this are pretty invasive.
  
!    * 'use_ops' Similar to 'def_ops' but for variables read by the
       statement.
  
!    * 'op' Array of trees with 'num_ops' slots.
  
! 11.1.3 'gimple_statement_with_memory_ops'
  -----------------------------------------
  
! This tuple is essentially identical to 'gimple_statement_with_ops',
  except that it contains 4 additional fields to hold vectors related
  memory stores and loads.  Similar to the previous case, the structure is
  split in two to accommodate for the operand vector
! ('gimple_statement_with_memory_ops_base' and
! 'gimple_statement_with_memory_ops').
  
  Field        Size (bits)
! 'gsbase'     256
! 'def_ops'    64
! 'use_ops'    64
! 'vdef_ops'   64
! 'vuse_ops'   64
! 'stores'     64
! 'loads'      64
! 'op'         'num_ops' * 64
! Total size   80 + 8 * 'num_ops' bytes
  
!    * 'vdef_ops' Similar to 'def_ops' but for 'VDEF' operators.  There is
       one entry per memory symbol written by this statement.  This is
       used to maintain the memory SSA use-def and def-def chains.
  
!    * 'vuse_ops' Similar to 'use_ops' but for 'VUSE' operators.  There is
       one entry per memory symbol loaded by this statement.  This is used
       to maintain the memory SSA use-def chains.
  
!    * 'stores' Bitset with all the UIDs for the symbols written-to by the
!      statement.  This is different than 'vdef_ops' in that all the
       affected symbols are mentioned in this set.  If memory partitioning
!      is enabled, the 'vdef_ops' vector will refer to memory partitions.
       Furthermore, no SSA information is stored in this set.
  
!    * 'loads' Similar to 'stores', but for memory loads.  (Note that
       there is some amount of redundancy here, it should be possible to
       reduce memory utilization further by removing these sets).
  
--- 13967,14117 ----
  bit hosts:
  
  Field                   Size (bits)
! â€˜codeâ€™                  8
! â€˜subcodeâ€™               16
! â€˜no_warningâ€™            1
! â€˜visitedâ€™               1
! â€˜nontemporal_moveâ€™      1
! â€˜plfâ€™                   2
! â€˜modifiedâ€™              1
! â€˜has_volatile_opsâ€™      1
! â€˜references_memory_pâ€™   1
! â€˜uidâ€™                   32
! â€˜locationâ€™              32
! â€˜num_opsâ€™               32
! â€˜bbâ€™                    64
! â€˜blockâ€™                 63
  Total size              32 bytes
  
!    â€¢ â€˜codeâ€™ Main identifier for a GIMPLE instruction.
  
!    â€¢ â€˜subcodeâ€™ Used to distinguish different variants of the same basic
       instruction or provide flags applicable to a given code.  The
!      â€˜subcodeâ€™ flags field has different uses depending on the code of
       the instruction, but mostly it distinguishes instructions of the
       same family.  The most prominent use of this field is in
       assignments, where subcode indicates the operation done on the RHS
       of the assignment.  For example, a = b + c is encoded as
!      â€˜GIMPLE_ASSIGN <PLUS_EXPR, a, b, c>â€™.
  
!    â€¢ â€˜no_warningâ€™ Bitflag to indicate whether a warning has already been
       issued on this statement.
  
!    â€¢ â€˜visitedâ€™ General purpose "visited" marker.  Set and cleared by
       each pass when needed.
  
!    â€¢ â€˜nontemporal_moveâ€™ Bitflag used in assignments that represent
       non-temporal moves.  Although this bitflag is only used in
       assignments, it was moved into the base to take advantage of the
       bit holes left by the previous fields.
  
!    â€¢ â€˜plfâ€™ Pass Local Flags.  This 2-bit mask can be used as general
       purpose markers by any pass.  Passes are responsible for clearing
       and setting these two flags accordingly.
  
!    â€¢ â€˜modifiedâ€™ Bitflag to indicate whether the statement has been
       modified.  Used mainly by the operand scanner to determine when to
       re-scan a statement for operands.
  
!    â€¢ â€˜has_volatile_opsâ€™ Bitflag to indicate whether this statement
       contains operands that have been marked volatile.
  
!    â€¢ â€˜references_memory_pâ€™ Bitflag to indicate whether this statement
       contains memory references (i.e., its operands are either global
       variables, or pointer dereferences or anything that must reside in
       memory).
  
!    â€¢ â€˜uidâ€™ This is an unsigned integer used by passes that want to
       assign IDs to every statement.  These IDs must be assigned and used
       by each pass.
  
!    â€¢ â€˜locationâ€™ This is a â€˜location_tâ€™ identifier to specify source code
       location for this statement.  It is inherited from the front end.
  
!    â€¢ â€˜num_opsâ€™ Number of operands that this statement has.  This
       specifies the size of the operand vector embedded in the tuple.
       Only used in some tuples, but it is declared in the base tuple to
       take advantage of the 32-bit hole left by the previous fields.
  
!    â€¢ â€˜bbâ€™ Basic block holding the instruction.
  
!    â€¢ â€˜blockâ€™ Lexical block holding this statement.  Also used for debug
       information generation.
  
! 11.1.2 â€˜gimple_statement_with_opsâ€™
  ----------------------------------
  
! This tuple is actually split in two: â€˜gimple_statement_with_ops_baseâ€™
! and â€˜gimple_statement_with_opsâ€™.  This is needed to accommodate the way
  the operand vector is allocated.  The operand vector is defined to be an
  array of 1 element.  So, to allocate a dynamic number of operands, the
! memory allocator (â€˜gimple_allocâ€™) simply allocates enough memory to hold
! the structure itself plus â€˜N - 1â€™ operands which run "off the end" of
  the structure.  For example, to allocate space for a tuple with 3
! operands, â€˜gimple_allocâ€™ reserves â€˜sizeof (struct
! gimple_statement_with_ops) + 2 * sizeof (tree)â€™ bytes.
  
   On the other hand, several fields in this tuple need to be shared with
! the â€˜gimple_statement_with_memory_opsâ€™ tuple.  So, these common fields
! are placed in â€˜gimple_statement_with_ops_baseâ€™ which is then inherited
  from the other two tuples.
  
! â€˜gsbaseâ€™    256
! â€˜def_opsâ€™   64
! â€˜use_opsâ€™   64
! â€˜opâ€™        â€˜num_opsâ€™ * 64
! Total       48 + 8 * â€˜num_opsâ€™ bytes
  size
  
!    â€¢ â€˜gsbaseâ€™ Inherited from â€˜struct gimpleâ€™.
  
!    â€¢ â€˜def_opsâ€™ Array of pointers into the operand array indicating all
       the slots that contain a variable written-to by the statement.
       This array is also used for immediate use chaining.  Note that it
       would be possible to not rely on this array, but the changes
       required to implement this are pretty invasive.
  
!    â€¢ â€˜use_opsâ€™ Similar to â€˜def_opsâ€™ but for variables read by the
       statement.
  
!    â€¢ â€˜opâ€™ Array of trees with â€˜num_opsâ€™ slots.
  
! 11.1.3 â€˜gimple_statement_with_memory_opsâ€™
  -----------------------------------------
  
! This tuple is essentially identical to â€˜gimple_statement_with_opsâ€™,
  except that it contains 4 additional fields to hold vectors related
  memory stores and loads.  Similar to the previous case, the structure is
  split in two to accommodate for the operand vector
! (â€˜gimple_statement_with_memory_ops_baseâ€™ and
! â€˜gimple_statement_with_memory_opsâ€™).
  
  Field        Size (bits)
! â€˜gsbaseâ€™     256
! â€˜def_opsâ€™    64
! â€˜use_opsâ€™    64
! â€˜vdef_opsâ€™   64
! â€˜vuse_opsâ€™   64
! â€˜storesâ€™     64
! â€˜loadsâ€™      64
! â€˜opâ€™         â€˜num_opsâ€™ * 64
! Total size   80 + 8 * â€˜num_opsâ€™ bytes
  
!    â€¢ â€˜vdef_opsâ€™ Similar to â€˜def_opsâ€™ but for â€˜VDEFâ€™ operators.  There is
       one entry per memory symbol written by this statement.  This is
       used to maintain the memory SSA use-def and def-def chains.
  
!    â€¢ â€˜vuse_opsâ€™ Similar to â€˜use_opsâ€™ but for â€˜VUSEâ€™ operators.  There is
       one entry per memory symbol loaded by this statement.  This is used
       to maintain the memory SSA use-def chains.
  
!    â€¢ â€˜storesâ€™ Bitset with all the UIDs for the symbols written-to by the
!      statement.  This is different than â€˜vdef_opsâ€™ in that all the
       affected symbols are mentioned in this set.  If memory partitioning
!      is enabled, the â€˜vdef_opsâ€™ vector will refer to memory partitions.
       Furthermore, no SSA information is stored in this set.
  
!    â€¢ â€˜loadsâ€™ Similar to â€˜storesâ€™, but for memory loads.  (Note that
       there is some amount of redundancy here, it should be possible to
       reduce memory utilization further by removing these sets).
  
*************** File: gccint.info,  Node: Class hierarch
*** 14120,14127 ****
  =========================================
  
  The following diagram shows the C++ inheritance hierarchy of statement
! kinds, along with their relationships to 'GSS_' values (layouts) and
! 'GIMPLE_' values (codes):
  
          gimple
            |    layout: GSS_BASE
--- 14125,14132 ----
  =========================================
  
  The following diagram shows the C++ inheritance hierarchy of statement
! kinds, along with their relationships to â€˜GSS_â€™ values (layouts) and
! â€˜GIMPLE_â€™ values (codes):
  
          gimple
            |    layout: GSS_BASE
*************** File: gccint.info,  Node: GIMPLE instruc
*** 14265,14300 ****
  The following table briefly describes the GIMPLE instruction set.
  
  Instruction                    High GIMPLE   Low GIMPLE
! 'GIMPLE_ASM'                   x             x
! 'GIMPLE_ASSIGN'                x             x
! 'GIMPLE_BIND'                  x
! 'GIMPLE_CALL'                  x             x
! 'GIMPLE_CATCH'                 x
! 'GIMPLE_COND'                  x             x
! 'GIMPLE_DEBUG'                 x             x
! 'GIMPLE_EH_FILTER'             x
! 'GIMPLE_GOTO'                  x             x
! 'GIMPLE_LABEL'                 x             x
! 'GIMPLE_NOP'                   x             x
! 'GIMPLE_OMP_ATOMIC_LOAD'       x             x
! 'GIMPLE_OMP_ATOMIC_STORE'      x             x
! 'GIMPLE_OMP_CONTINUE'          x             x
! 'GIMPLE_OMP_CRITICAL'          x             x
! 'GIMPLE_OMP_FOR'               x             x
! 'GIMPLE_OMP_MASTER'            x             x
! 'GIMPLE_OMP_ORDERED'           x             x
! 'GIMPLE_OMP_PARALLEL'          x             x
! 'GIMPLE_OMP_RETURN'            x             x
! 'GIMPLE_OMP_SECTION'           x             x
! 'GIMPLE_OMP_SECTIONS'          x             x
! 'GIMPLE_OMP_SECTIONS_SWITCH'   x             x
! 'GIMPLE_OMP_SINGLE'            x             x
! 'GIMPLE_PHI'                                 x
! 'GIMPLE_OMP_STRUCTURED_BLOCK'  x
! 'GIMPLE_RESX'                                x
! 'GIMPLE_RETURN'                x             x
! 'GIMPLE_SWITCH'                x             x
! 'GIMPLE_TRY'                   x
  
  
  File: gccint.info,  Node: GIMPLE Exception Handling,  Next: Temporaries,  Prev: GIMPLE instruction set,  Up: GIMPLE
--- 14270,14305 ----
  The following table briefly describes the GIMPLE instruction set.
  
  Instruction                    High GIMPLE   Low GIMPLE
! â€˜GIMPLE_ASMâ€™                   x             x
! â€˜GIMPLE_ASSIGNâ€™                x             x
! â€˜GIMPLE_BINDâ€™                  x
! â€˜GIMPLE_CALLâ€™                  x             x
! â€˜GIMPLE_CATCHâ€™                 x
! â€˜GIMPLE_CONDâ€™                  x             x
! â€˜GIMPLE_DEBUGâ€™                 x             x
! â€˜GIMPLE_EH_FILTERâ€™             x
! â€˜GIMPLE_GOTOâ€™                  x             x
! â€˜GIMPLE_LABELâ€™                 x             x
! â€˜GIMPLE_NOPâ€™                   x             x
! â€˜GIMPLE_OMP_ATOMIC_LOADâ€™       x             x
! â€˜GIMPLE_OMP_ATOMIC_STOREâ€™      x             x
! â€˜GIMPLE_OMP_CONTINUEâ€™          x             x
! â€˜GIMPLE_OMP_CRITICALâ€™          x             x
! â€˜GIMPLE_OMP_FORâ€™               x             x
! â€˜GIMPLE_OMP_MASTERâ€™            x             x
! â€˜GIMPLE_OMP_ORDEREDâ€™           x             x
! â€˜GIMPLE_OMP_PARALLELâ€™          x             x
! â€˜GIMPLE_OMP_RETURNâ€™            x             x
! â€˜GIMPLE_OMP_SECTIONâ€™           x             x
! â€˜GIMPLE_OMP_SECTIONSâ€™          x             x
! â€˜GIMPLE_OMP_SECTIONS_SWITCHâ€™   x             x
! â€˜GIMPLE_OMP_SINGLEâ€™            x             x
! â€˜GIMPLE_PHIâ€™                                 x
! â€˜GIMPLE_OMP_STRUCTURED_BLOCKâ€™  x
! â€˜GIMPLE_RESXâ€™                                x
! â€˜GIMPLE_RETURNâ€™                x             x
! â€˜GIMPLE_SWITCHâ€™                x             x
! â€˜GIMPLE_TRYâ€™                   x
  
  
  File: gccint.info,  Node: GIMPLE Exception Handling,  Next: Temporaries,  Prev: GIMPLE instruction set,  Up: GIMPLE
*************** File: gccint.info,  Node: GIMPLE Excepti
*** 14303,14325 ****
  =======================
  
  Other exception handling constructs are represented using
! 'GIMPLE_TRY_CATCH'.  'GIMPLE_TRY_CATCH' has two operands.  The first
  operand is a sequence of statements to execute.  If executing these
  statements does not throw an exception, then the second operand is
  ignored.  Otherwise, if an exception is thrown, then the second operand
! of the 'GIMPLE_TRY_CATCH' is checked.  The second operand may have the
  following forms:
  
    1. A sequence of statements to execute.  When an exception occurs,
       these statements are executed, and then the exception is rethrown.
  
!   2. A sequence of 'GIMPLE_CATCH' statements.  Each 'GIMPLE_CATCH' has a
       list of applicable exception types and handler code.  If the thrown
       exception matches one of the caught types, the associated handler
       code is executed.  If the handler code falls off the bottom,
!      execution continues after the original 'GIMPLE_TRY_CATCH'.
  
!   3. A 'GIMPLE_EH_FILTER' statement.  This has a list of permitted
       exception types, and code to handle a match failure.  If the thrown
       exception does not match one of the allowed types, the associated
       match failure code is executed.  If the thrown exception does
--- 14308,14330 ----
  =======================
  
  Other exception handling constructs are represented using
! â€˜GIMPLE_TRY_CATCHâ€™.  â€˜GIMPLE_TRY_CATCHâ€™ has two operands.  The first
  operand is a sequence of statements to execute.  If executing these
  statements does not throw an exception, then the second operand is
  ignored.  Otherwise, if an exception is thrown, then the second operand
! of the â€˜GIMPLE_TRY_CATCHâ€™ is checked.  The second operand may have the
  following forms:
  
    1. A sequence of statements to execute.  When an exception occurs,
       these statements are executed, and then the exception is rethrown.
  
!   2. A sequence of â€˜GIMPLE_CATCHâ€™ statements.  Each â€˜GIMPLE_CATCHâ€™ has a
       list of applicable exception types and handler code.  If the thrown
       exception matches one of the caught types, the associated handler
       code is executed.  If the handler code falls off the bottom,
!      execution continues after the original â€˜GIMPLE_TRY_CATCHâ€™.
  
!   3. A â€˜GIMPLE_EH_FILTERâ€™ statement.  This has a list of permitted
       exception types, and code to handle a match failure.  If the thrown
       exception does not match one of the allowed types, the associated
       match failure code is executed.  If the thrown exception does
*************** future we will want to add some way to e
*** 14332,14340 ****
  an exception of a known type.
  
   Just before running the optimizers, the compiler lowers the high-level
! EH constructs above into a set of 'goto's, magic labels, and EH regions.
  Continuing to unwind at the end of a cleanup is represented with a
! 'GIMPLE_RESX'.
  
  
  File: gccint.info,  Node: Temporaries,  Next: Operands,  Prev: GIMPLE Exception Handling,  Up: GIMPLE
--- 14337,14345 ----
  an exception of a known type.
  
   Just before running the optimizers, the compiler lowers the high-level
! EH constructs above into a set of â€˜gotoâ€™s, magic labels, and EH regions.
  Continuing to unwind at the end of a cleanup is represented with a
! â€˜GIMPLE_RESXâ€™.
  
  
  File: gccint.info,  Node: Temporaries,  Next: Operands,  Prev: GIMPLE Exception Handling,  Up: GIMPLE
*************** File: gccint.info,  Node: Temporaries,
*** 14345,14361 ****
  When gimplification encounters a subexpression that is too complex, it
  creates a new temporary variable to hold the value of the subexpression,
  and adds a new statement to initialize it before the current statement.
! These special temporaries are known as 'expression temporaries', and are
! allocated using 'get_formal_tmp_var'.  The compiler tries to always
  evaluate identical expressions into the same temporary, to simplify
  elimination of redundant calculations.
  
   We can only use expression temporaries when we know that it will not be
  reevaluated before its value is used, and that it will not be otherwise
  modified(1).  Other temporaries can be allocated using
! 'get_initialized_tmp_var' or 'create_tmp_var'.
  
!  Currently, an expression like 'a = b + 5' is not reduced any further.
  We tried converting it to something like
       T1 = b + 5;
       a = T1;
--- 14350,14366 ----
  When gimplification encounters a subexpression that is too complex, it
  creates a new temporary variable to hold the value of the subexpression,
  and adds a new statement to initialize it before the current statement.
! These special temporaries are known as â€˜expression temporariesâ€™, and are
! allocated using â€˜get_formal_tmp_varâ€™.  The compiler tries to always
  evaluate identical expressions into the same temporary, to simplify
  elimination of redundant calculations.
  
   We can only use expression temporaries when we know that it will not be
  reevaluated before its value is used, and that it will not be otherwise
  modified(1).  Other temporaries can be allocated using
! â€˜get_initialized_tmp_varâ€™ or â€˜create_tmp_varâ€™.
  
!  Currently, an expression like â€˜a = b + 5â€™ is not reduced any further.
  We tried converting it to something like
       T1 = b + 5;
       a = T1;
*************** File: gccint.info,  Node: Operands,  Nex
*** 14377,14393 ****
  
  In general, expressions in GIMPLE consist of an operation and the
  appropriate number of simple operands; these operands must either be a
! GIMPLE rvalue ('is_gimple_val'), i.e. a constant or a register variable.
  More complex operands are factored out into temporaries, so that
       a = b + c + d
   becomes
       T1 = b + c;
       a = T1 + d;
  
!  The same rule holds for arguments to a 'GIMPLE_CALL'.
  
   The target of an assignment is usually a variable, but can also be a
! 'MEM_REF' or a compound lvalue as described below.
  
  * Menu:
  
--- 14382,14398 ----
  
  In general, expressions in GIMPLE consist of an operation and the
  appropriate number of simple operands; these operands must either be a
! GIMPLE rvalue (â€˜is_gimple_valâ€™), i.e. a constant or a register variable.
  More complex operands are factored out into temporaries, so that
       a = b + c + d
   becomes
       T1 = b + c;
       a = T1 + d;
  
!  The same rule holds for arguments to a â€˜GIMPLE_CALLâ€™.
  
   The target of an assignment is usually a variable, but can also be a
! â€˜MEM_REFâ€™ or a compound lvalue as described below.
  
  * Menu:
  
*************** File: gccint.info,  Node: Compound Lvalu
*** 14412,14418 ****
  -----------------------
  
  Currently compound lvalues involving array and structure field
! references are not broken down; an expression like 'a.b[2] = 42' is not
  reduced any further (though complex array subscripts are).  This
  restriction is a workaround for limitations in later optimizers; if we
  were to convert this to
--- 14417,14423 ----
  -----------------------
  
  Currently compound lvalues involving array and structure field
! references are not broken down; an expression like â€˜a.b[2] = 42â€™ is not
  reduced any further (though complex array subscripts are).  This
  restriction is a workaround for limitations in later optimizers; if we
  were to convert this to
*************** were to convert this to
*** 14420,14428 ****
       T1 = &a.b;
       T1[2] = 42;
  
!  alias analysis would not remember that the reference to 'T1[2]' came by
! way of 'a.b', so it would think that the assignment could alias another
! member of 'a'; this broke 'struct-alias-1.c'.  Future optimizer
  improvements may make this limitation unnecessary.
  
  
--- 14425,14433 ----
       T1 = &a.b;
       T1[2] = 42;
  
!  alias analysis would not remember that the reference to â€˜T1[2]â€™ came by
! way of â€˜a.bâ€™, so it would think that the assignment could alias another
! member of â€˜aâ€™; this broke â€˜struct-alias-1.câ€™.  Future optimizer
  improvements may make this limitation unnecessary.
  
  
*************** File: gccint.info,  Node: Conditional Ex
*** 14431,14437 ****
  11.6.3 Conditional Expressions
  ------------------------------
  
! A C '?:' expression is converted into an 'if' statement with each branch
  assigning to the same temporary.  So,
  
       a = b ? c : d;
--- 14436,14442 ----
  11.6.3 Conditional Expressions
  ------------------------------
  
! A C â€˜?:â€™ expression is converted into an â€˜ifâ€™ statement with each branch
  assigning to the same temporary.  So,
  
       a = b ? c : d;
*************** assigning to the same temporary.  So,
*** 14442,14453 ****
         T1 = d;
       a = T1;
  
!  The GIMPLE level if-conversion pass re-introduces '?:' expression, if
  appropriate.  It is used to vectorize loops with conditions using vector
  conditional operations.
  
!  Note that in GIMPLE, 'if' statements are represented using
! 'GIMPLE_COND', as described below.
  
  
  File: gccint.info,  Node: Logical Operators,  Prev: Conditional Expressions,  Up: Operands
--- 14447,14458 ----
         T1 = d;
       a = T1;
  
!  The GIMPLE level if-conversion pass re-introduces â€˜?:â€™ expression, if
  appropriate.  It is used to vectorize loops with conditions using vector
  conditional operations.
  
!  Note that in GIMPLE, â€˜ifâ€™ statements are represented using
! â€˜GIMPLE_CONDâ€™, as described below.
  
  
  File: gccint.info,  Node: Logical Operators,  Prev: Conditional Expressions,  Up: Operands
*************** File: gccint.info,  Node: Logical Operat
*** 14455,14462 ****
  11.6.4 Logical Operators
  ------------------------
  
! Except when they appear in the condition operand of a 'GIMPLE_COND',
! logical 'and' and 'or' operators are simplified as follows: 'a = b && c'
  becomes
  
       T1 = (bool)b;
--- 14460,14467 ----
  11.6.4 Logical Operators
  ------------------------
  
! Except when they appear in the condition operand of a â€˜GIMPLE_CONDâ€™,
! logical 'and' and 'or' operators are simplified as follows: â€˜a = b && câ€™
  becomes
  
       T1 = (bool)b;
*************** becomes
*** 14464,14504 ****
         T1 = (bool)c;
       a = T1;
  
!  Note that 'T1' in this example cannot be an expression temporary,
  because it has two different assignments.
  
  11.6.5 Manipulating operands
  ----------------------------
  
! All gimple operands are of type 'tree'.  But only certain types of trees
  are allowed to be used as operand tuples.  Basic validation is
! controlled by the function 'get_gimple_rhs_class', which given a tree
! code, returns an 'enum' with the following values of type 'enum
! gimple_rhs_class'
  
!    * 'GIMPLE_INVALID_RHS' The tree cannot be used as a GIMPLE operand.
  
!    * 'GIMPLE_TERNARY_RHS' The tree is a valid GIMPLE ternary operation.
  
!    * 'GIMPLE_BINARY_RHS' The tree is a valid GIMPLE binary operation.
  
!    * 'GIMPLE_UNARY_RHS' The tree is a valid GIMPLE unary operation.
  
!    * 'GIMPLE_SINGLE_RHS' The tree is a single object, that cannot be
!      split into simpler operands (for instance, 'SSA_NAME', 'VAR_DECL',
!      'COMPONENT_REF', etc).
  
       This operand class also acts as an escape hatch for tree nodes that
       may be flattened out into the operand vector, but would need more
!      than two slots on the RHS. For instance, a 'COND_EXPR' expression
!      of the form '(a op b) ? x : y' could be flattened out on the
       operand vector using 4 slots, but it would also require additional
!      processing to distinguish 'c = a op b' from 'c = a op b ? x : y'.
       In time, these special case tree expressions should be flattened
       into the operand vector.
  
!  For tree nodes in the categories 'GIMPLE_TERNARY_RHS',
! 'GIMPLE_BINARY_RHS' and 'GIMPLE_UNARY_RHS', they cannot be stored inside
  tuples directly.  They first need to be flattened and separated into
  individual components.  For instance, given the GENERIC expression
  
--- 14469,14509 ----
         T1 = (bool)c;
       a = T1;
  
!  Note that â€˜T1â€™ in this example cannot be an expression temporary,
  because it has two different assignments.
  
  11.6.5 Manipulating operands
  ----------------------------
  
! All gimple operands are of type â€˜treeâ€™.  But only certain types of trees
  are allowed to be used as operand tuples.  Basic validation is
! controlled by the function â€˜get_gimple_rhs_classâ€™, which given a tree
! code, returns an â€˜enumâ€™ with the following values of type â€˜enum
! gimple_rhs_classâ€™
  
!    â€¢ â€˜GIMPLE_INVALID_RHSâ€™ The tree cannot be used as a GIMPLE operand.
  
!    â€¢ â€˜GIMPLE_TERNARY_RHSâ€™ The tree is a valid GIMPLE ternary operation.
  
!    â€¢ â€˜GIMPLE_BINARY_RHSâ€™ The tree is a valid GIMPLE binary operation.
  
!    â€¢ â€˜GIMPLE_UNARY_RHSâ€™ The tree is a valid GIMPLE unary operation.
  
!    â€¢ â€˜GIMPLE_SINGLE_RHSâ€™ The tree is a single object, that cannot be
!      split into simpler operands (for instance, â€˜SSA_NAMEâ€™, â€˜VAR_DECLâ€™,
!      â€˜COMPONENT_REFâ€™, etc).
  
       This operand class also acts as an escape hatch for tree nodes that
       may be flattened out into the operand vector, but would need more
!      than two slots on the RHS. For instance, a â€˜COND_EXPRâ€™ expression
!      of the form â€˜(a op b) ? x : yâ€™ could be flattened out on the
       operand vector using 4 slots, but it would also require additional
!      processing to distinguish â€˜c = a op bâ€™ from â€˜c = a op b ? x : yâ€™.
       In time, these special case tree expressions should be flattened
       into the operand vector.
  
!  For tree nodes in the categories â€˜GIMPLE_TERNARY_RHSâ€™,
! â€˜GIMPLE_BINARY_RHSâ€™ and â€˜GIMPLE_UNARY_RHSâ€™, they cannot be stored inside
  tuples directly.  They first need to be flattened and separated into
  individual components.  For instance, given the GENERIC expression
  
*************** individual components.  For instance, gi
*** 14509,14517 ****
       MODIFY_EXPR <VAR_DECL  <a>, PLUS_EXPR <VAR_DECL <b>, VAR_DECL <c>>>
  
   In this case, the GIMPLE form for this statement is logically identical
! to its GENERIC form but in GIMPLE, the 'PLUS_EXPR' on the RHS of the
  assignment is not represented as a tree, instead the two operands are
! taken out of the 'PLUS_EXPR' sub-tree and flattened into the GIMPLE
  tuple as follows:
  
       GIMPLE_ASSIGN <PLUS_EXPR, VAR_DECL <a>, VAR_DECL <b>, VAR_DECL <c>>
--- 14514,14522 ----
       MODIFY_EXPR <VAR_DECL  <a>, PLUS_EXPR <VAR_DECL <b>, VAR_DECL <c>>>
  
   In this case, the GIMPLE form for this statement is logically identical
! to its GENERIC form but in GIMPLE, the â€˜PLUS_EXPRâ€™ on the RHS of the
  assignment is not represented as a tree, instead the two operands are
! taken out of the â€˜PLUS_EXPRâ€™ sub-tree and flattened into the GIMPLE
  tuple as follows:
  
       GIMPLE_ASSIGN <PLUS_EXPR, VAR_DECL <a>, VAR_DECL <b>, VAR_DECL <c>>
*************** of the structure.  To access tuple opera
*** 14528,14549 ****
       Returns the number of operands in statement G.
  
   -- GIMPLE function: tree gimple_op (gimple g, unsigned i)
!      Returns operand 'I' from statement 'G'.
  
   -- GIMPLE function: tree * gimple_ops (gimple g)
!      Returns a pointer into the operand vector for statement 'G'.  This
!      is computed using an internal table called 'gimple_ops_offset_'[].
!      This table is indexed by the gimple code of 'G'.
  
       When the compiler is built, this table is filled-in using the sizes
       of the structures used by each statement code defined in
       gimple.def.  Since the operand vector is at the bottom of the
!      structure, for a gimple code 'C' the offset is computed as sizeof
!      (struct-of 'C') - sizeof (tree).
  
       This mechanism adds one memory indirection to every access when
!      using 'gimple_op'(), if this becomes a bottleneck, a pass can
!      choose to memoize the result from 'gimple_ops'() and use that to
       access the operands.
  
  11.6.7 Operand validation
--- 14533,14554 ----
       Returns the number of operands in statement G.
  
   -- GIMPLE function: tree gimple_op (gimple g, unsigned i)
!      Returns operand â€˜Iâ€™ from statement â€˜Gâ€™.
  
   -- GIMPLE function: tree * gimple_ops (gimple g)
!      Returns a pointer into the operand vector for statement â€˜Gâ€™.  This
!      is computed using an internal table called â€˜gimple_ops_offset_â€™[].
!      This table is indexed by the gimple code of â€˜Gâ€™.
  
       When the compiler is built, this table is filled-in using the sizes
       of the structures used by each statement code defined in
       gimple.def.  Since the operand vector is at the bottom of the
!      structure, for a gimple code â€˜Câ€™ the offset is computed as sizeof
!      (struct-of â€˜Câ€™) - sizeof (tree).
  
       This mechanism adds one memory indirection to every access when
!      using â€˜gimple_opâ€™(), if this becomes a bottleneck, a pass can
!      choose to memoize the result from â€˜gimple_opsâ€™() and use that to
       access the operands.
  
  11.6.7 Operand validation
*************** of the structure.  To access tuple opera
*** 14551,14580 ****
  
  When adding a new operand to a gimple statement, the operand will be
  validated according to what each tuple accepts in its operand vector.
! These predicates are called by the 'gimple_NAME_set_...()'.  Each tuple
  will use one of the following predicates (Note, this list is not
  exhaustive):
  
   -- GIMPLE function: bool is_gimple_val (tree t)
       Returns true if t is a "GIMPLE value", which are all the
       non-addressable stack variables (variables for which
!      'is_gimple_reg' returns true) and constants (expressions for which
!      'is_gimple_min_invariant' returns true).
  
   -- GIMPLE function: bool is_gimple_addressable (tree t)
       Returns true if t is a symbol or memory reference whose address can
       be taken.
  
   -- GIMPLE function: bool is_gimple_asm_val (tree t)
!      Similar to 'is_gimple_val' but it also accepts hard registers.
  
   -- GIMPLE function: bool is_gimple_call_addr (tree t)
       Return true if t is a valid expression to use as the function
!      called by a 'GIMPLE_CALL'.
  
   -- GIMPLE function: bool is_gimple_mem_ref_addr (tree t)
       Return true if t is a valid expression to use as first operand of a
!      'MEM_REF' expression.
  
   -- GIMPLE function: bool is_gimple_constant (tree t)
       Return true if t is a valid gimple constant.
--- 14556,14585 ----
  
  When adding a new operand to a gimple statement, the operand will be
  validated according to what each tuple accepts in its operand vector.
! These predicates are called by the â€˜gimple_NAME_set_...()â€™.  Each tuple
  will use one of the following predicates (Note, this list is not
  exhaustive):
  
   -- GIMPLE function: bool is_gimple_val (tree t)
       Returns true if t is a "GIMPLE value", which are all the
       non-addressable stack variables (variables for which
!      â€˜is_gimple_regâ€™ returns true) and constants (expressions for which
!      â€˜is_gimple_min_invariantâ€™ returns true).
  
   -- GIMPLE function: bool is_gimple_addressable (tree t)
       Returns true if t is a symbol or memory reference whose address can
       be taken.
  
   -- GIMPLE function: bool is_gimple_asm_val (tree t)
!      Similar to â€˜is_gimple_valâ€™ but it also accepts hard registers.
  
   -- GIMPLE function: bool is_gimple_call_addr (tree t)
       Return true if t is a valid expression to use as the function
!      called by a â€˜GIMPLE_CALLâ€™.
  
   -- GIMPLE function: bool is_gimple_mem_ref_addr (tree t)
       Return true if t is a valid expression to use as first operand of a
!      â€˜MEM_REFâ€™ expression.
  
   -- GIMPLE function: bool is_gimple_constant (tree t)
       Return true if t is a valid gimple constant.
*************** exhaustive):
*** 14591,14632 ****
       of a global variable but not of a local one).
  
   -- GIMPLE function: bool is_gimple_ip_invariant_address (tree t)
!      Return true if t is an 'ADDR_EXPR' that does not change once the
       program is running (and which is valid in all functions).
  
  11.6.8 Statement validation
  ---------------------------
  
   -- GIMPLE function: bool is_gimple_assign (gimple g)
!      Return true if the code of g is 'GIMPLE_ASSIGN'.
  
   -- GIMPLE function: bool is_gimple_call (gimple g)
!      Return true if the code of g is 'GIMPLE_CALL'.
  
   -- GIMPLE function: bool is_gimple_debug (gimple g)
!      Return true if the code of g is 'GIMPLE_DEBUG'.
  
   -- GIMPLE function: bool gimple_assign_cast_p (const_gimple g)
!      Return true if g is a 'GIMPLE_ASSIGN' that performs a type cast
       operation.
  
   -- GIMPLE function: bool gimple_debug_bind_p (gimple g)
!      Return true if g is a 'GIMPLE_DEBUG' that binds the value of an
       expression to a variable.
  
   -- GIMPLE function: bool is_gimple_omp (gimple g)
       Return true if g is any of the OpenMP codes.
  
   -- GIMPLE function: bool gimple_debug_begin_stmt_p (gimple g)
!      Return true if g is a 'GIMPLE_DEBUG' that marks the beginning of a
       source statement.
  
   -- GIMPLE function: bool gimple_debug_inline_entry_p (gimple g)
!      Return true if g is a 'GIMPLE_DEBUG' that marks the entry point of
       an inlined function.
  
   -- GIMPLE function: bool gimple_debug_nonbind_marker_p (gimple g)
!      Return true if g is a 'GIMPLE_DEBUG' that marks a program location,
       without any variable binding.
  
  
--- 14596,14637 ----
       of a global variable but not of a local one).
  
   -- GIMPLE function: bool is_gimple_ip_invariant_address (tree t)
!      Return true if t is an â€˜ADDR_EXPRâ€™ that does not change once the
       program is running (and which is valid in all functions).
  
  11.6.8 Statement validation
  ---------------------------
  
   -- GIMPLE function: bool is_gimple_assign (gimple g)
!      Return true if the code of g is â€˜GIMPLE_ASSIGNâ€™.
  
   -- GIMPLE function: bool is_gimple_call (gimple g)
!      Return true if the code of g is â€˜GIMPLE_CALLâ€™.
  
   -- GIMPLE function: bool is_gimple_debug (gimple g)
!      Return true if the code of g is â€˜GIMPLE_DEBUGâ€™.
  
   -- GIMPLE function: bool gimple_assign_cast_p (const_gimple g)
!      Return true if g is a â€˜GIMPLE_ASSIGNâ€™ that performs a type cast
       operation.
  
   -- GIMPLE function: bool gimple_debug_bind_p (gimple g)
!      Return true if g is a â€˜GIMPLE_DEBUGâ€™ that binds the value of an
       expression to a variable.
  
   -- GIMPLE function: bool is_gimple_omp (gimple g)
       Return true if g is any of the OpenMP codes.
  
   -- GIMPLE function: bool gimple_debug_begin_stmt_p (gimple g)
!      Return true if g is a â€˜GIMPLE_DEBUGâ€™ that marks the beginning of a
       source statement.
  
   -- GIMPLE function: bool gimple_debug_inline_entry_p (gimple g)
!      Return true if g is a â€˜GIMPLE_DEBUGâ€™ that marks the entry point of
       an inlined function.
  
   -- GIMPLE function: bool gimple_debug_nonbind_marker_p (gimple g)
!      Return true if g is a â€˜GIMPLE_DEBUGâ€™ that marks a program location,
       without any variable binding.
  
  
*************** GIMPLE instructions.
*** 14644,14775 ****
  The following are common accessors for gimple statements.
  
   -- GIMPLE function: enum gimple_code gimple_code (gimple g)
!      Return the code for statement 'G'.
  
   -- GIMPLE function: basic_block gimple_bb (gimple g)
!      Return the basic block to which statement 'G' belongs to.
  
   -- GIMPLE function: tree gimple_block (gimple g)
!      Return the lexical scope block holding statement 'G'.
  
   -- GIMPLE function: enum tree_code gimple_expr_code (gimple stmt)
!      Return the tree code for the expression computed by 'STMT'.  This
!      is only meaningful for 'GIMPLE_CALL', 'GIMPLE_ASSIGN' and
!      'GIMPLE_COND'.  If 'STMT' is 'GIMPLE_CALL', it will return
!      'CALL_EXPR'.  For 'GIMPLE_COND', it returns the code of the
!      comparison predicate.  For 'GIMPLE_ASSIGN' it returns the code of
!      the operation performed by the 'RHS' of the assignment.
  
   -- GIMPLE function: void gimple_set_block (gimple g, tree block)
!      Set the lexical scope block of 'G' to 'BLOCK'.
  
   -- GIMPLE function: location_t gimple_locus (gimple g)
!      Return locus information for statement 'G'.
  
   -- GIMPLE function: void gimple_set_locus (gimple g, location_t locus)
!      Set locus information for statement 'G'.
  
   -- GIMPLE function: bool gimple_locus_empty_p (gimple g)
!      Return true if 'G' does not have locus information.
  
   -- GIMPLE function: bool gimple_no_warning_p (gimple stmt)
!      Return true if no warnings should be emitted for statement 'STMT'.
  
   -- GIMPLE function: void gimple_set_visited (gimple stmt, bool
            visited_p)
!      Set the visited status on statement 'STMT' to 'VISITED_P'.
  
   -- GIMPLE function: bool gimple_visited_p (gimple stmt)
!      Return the visited status on statement 'STMT'.
  
   -- GIMPLE function: void gimple_set_plf (gimple stmt, enum plf_mask
            plf, bool val_p)
!      Set pass local flag 'PLF' on statement 'STMT' to 'VAL_P'.
  
   -- GIMPLE function: unsigned int gimple_plf (gimple stmt, enum plf_mask
            plf)
!      Return the value of pass local flag 'PLF' on statement 'STMT'.
  
   -- GIMPLE function: bool gimple_has_ops (gimple g)
!      Return true if statement 'G' has register or memory operands.
  
   -- GIMPLE function: bool gimple_has_mem_ops (gimple g)
!      Return true if statement 'G' has memory operands.
  
   -- GIMPLE function: unsigned gimple_num_ops (gimple g)
!      Return the number of operands for statement 'G'.
  
   -- GIMPLE function: tree * gimple_ops (gimple g)
!      Return the array of operands for statement 'G'.
  
   -- GIMPLE function: tree gimple_op (gimple g, unsigned i)
!      Return operand 'I' for statement 'G'.
  
   -- GIMPLE function: tree * gimple_op_ptr (gimple g, unsigned i)
!      Return a pointer to operand 'I' for statement 'G'.
  
   -- GIMPLE function: void gimple_set_op (gimple g, unsigned i, tree op)
!      Set operand 'I' of statement 'G' to 'OP'.
  
   -- GIMPLE function: bitmap gimple_addresses_taken (gimple stmt)
       Return the set of symbols that have had their address taken by
!      'STMT'.
  
   -- GIMPLE function: struct def_optype_d * gimple_def_ops (gimple g)
!      Return the set of 'DEF' operands for statement 'G'.
  
   -- GIMPLE function: void gimple_set_def_ops (gimple g, struct
            def_optype_d *def)
!      Set 'DEF' to be the set of 'DEF' operands for statement 'G'.
  
   -- GIMPLE function: struct use_optype_d * gimple_use_ops (gimple g)
!      Return the set of 'USE' operands for statement 'G'.
  
   -- GIMPLE function: void gimple_set_use_ops (gimple g, struct
            use_optype_d *use)
!      Set 'USE' to be the set of 'USE' operands for statement 'G'.
  
   -- GIMPLE function: struct voptype_d * gimple_vuse_ops (gimple g)
!      Return the set of 'VUSE' operands for statement 'G'.
  
   -- GIMPLE function: void gimple_set_vuse_ops (gimple g, struct
            voptype_d *ops)
!      Set 'OPS' to be the set of 'VUSE' operands for statement 'G'.
  
   -- GIMPLE function: struct voptype_d * gimple_vdef_ops (gimple g)
!      Return the set of 'VDEF' operands for statement 'G'.
  
   -- GIMPLE function: void gimple_set_vdef_ops (gimple g, struct
            voptype_d *ops)
!      Set 'OPS' to be the set of 'VDEF' operands for statement 'G'.
  
   -- GIMPLE function: bitmap gimple_loaded_syms (gimple g)
!      Return the set of symbols loaded by statement 'G'.  Each element of
!      the set is the 'DECL_UID' of the corresponding symbol.
  
   -- GIMPLE function: bitmap gimple_stored_syms (gimple g)
!      Return the set of symbols stored by statement 'G'.  Each element of
!      the set is the 'DECL_UID' of the corresponding symbol.
  
   -- GIMPLE function: bool gimple_modified_p (gimple g)
!      Return true if statement 'G' has operands and the modified field
       has been set.
  
   -- GIMPLE function: bool gimple_has_volatile_ops (gimple stmt)
!      Return true if statement 'STMT' contains volatile operands.
  
   -- GIMPLE function: void gimple_set_has_volatile_ops (gimple stmt, bool
            volatilep)
!      Return true if statement 'STMT' contains volatile operands.
  
   -- GIMPLE function: void update_stmt (gimple s)
!      Mark statement 'S' as modified, and update it.
  
   -- GIMPLE function: void update_stmt_if_modified (gimple s)
!      Update statement 'S' if it has been marked modified.
  
   -- GIMPLE function: gimple gimple_copy (gimple stmt)
!      Return a deep copy of statement 'STMT'.
  
  
  File: gccint.info,  Node: Tuple specific accessors,  Next: GIMPLE sequences,  Prev: Manipulating GIMPLE statements,  Up: GIMPLE
--- 14649,14780 ----
  The following are common accessors for gimple statements.
  
   -- GIMPLE function: enum gimple_code gimple_code (gimple g)
!      Return the code for statement â€˜Gâ€™.
  
   -- GIMPLE function: basic_block gimple_bb (gimple g)
!      Return the basic block to which statement â€˜Gâ€™ belongs to.
  
   -- GIMPLE function: tree gimple_block (gimple g)
!      Return the lexical scope block holding statement â€˜Gâ€™.
  
   -- GIMPLE function: enum tree_code gimple_expr_code (gimple stmt)
!      Return the tree code for the expression computed by â€˜STMTâ€™.  This
!      is only meaningful for â€˜GIMPLE_CALLâ€™, â€˜GIMPLE_ASSIGNâ€™ and
!      â€˜GIMPLE_CONDâ€™.  If â€˜STMTâ€™ is â€˜GIMPLE_CALLâ€™, it will return
!      â€˜CALL_EXPRâ€™.  For â€˜GIMPLE_CONDâ€™, it returns the code of the
!      comparison predicate.  For â€˜GIMPLE_ASSIGNâ€™ it returns the code of
!      the operation performed by the â€˜RHSâ€™ of the assignment.
  
   -- GIMPLE function: void gimple_set_block (gimple g, tree block)
!      Set the lexical scope block of â€˜Gâ€™ to â€˜BLOCKâ€™.
  
   -- GIMPLE function: location_t gimple_locus (gimple g)
!      Return locus information for statement â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_set_locus (gimple g, location_t locus)
!      Set locus information for statement â€˜Gâ€™.
  
   -- GIMPLE function: bool gimple_locus_empty_p (gimple g)
!      Return true if â€˜Gâ€™ does not have locus information.
  
   -- GIMPLE function: bool gimple_no_warning_p (gimple stmt)
!      Return true if no warnings should be emitted for statement â€˜STMTâ€™.
  
   -- GIMPLE function: void gimple_set_visited (gimple stmt, bool
            visited_p)
!      Set the visited status on statement â€˜STMTâ€™ to â€˜VISITED_Pâ€™.
  
   -- GIMPLE function: bool gimple_visited_p (gimple stmt)
!      Return the visited status on statement â€˜STMTâ€™.
  
   -- GIMPLE function: void gimple_set_plf (gimple stmt, enum plf_mask
            plf, bool val_p)
!      Set pass local flag â€˜PLFâ€™ on statement â€˜STMTâ€™ to â€˜VAL_Pâ€™.
  
   -- GIMPLE function: unsigned int gimple_plf (gimple stmt, enum plf_mask
            plf)
!      Return the value of pass local flag â€˜PLFâ€™ on statement â€˜STMTâ€™.
  
   -- GIMPLE function: bool gimple_has_ops (gimple g)
!      Return true if statement â€˜Gâ€™ has register or memory operands.
  
   -- GIMPLE function: bool gimple_has_mem_ops (gimple g)
!      Return true if statement â€˜Gâ€™ has memory operands.
  
   -- GIMPLE function: unsigned gimple_num_ops (gimple g)
!      Return the number of operands for statement â€˜Gâ€™.
  
   -- GIMPLE function: tree * gimple_ops (gimple g)
!      Return the array of operands for statement â€˜Gâ€™.
  
   -- GIMPLE function: tree gimple_op (gimple g, unsigned i)
!      Return operand â€˜Iâ€™ for statement â€˜Gâ€™.
  
   -- GIMPLE function: tree * gimple_op_ptr (gimple g, unsigned i)
!      Return a pointer to operand â€˜Iâ€™ for statement â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_set_op (gimple g, unsigned i, tree op)
!      Set operand â€˜Iâ€™ of statement â€˜Gâ€™ to â€˜OPâ€™.
  
   -- GIMPLE function: bitmap gimple_addresses_taken (gimple stmt)
       Return the set of symbols that have had their address taken by
!      â€˜STMTâ€™.
  
   -- GIMPLE function: struct def_optype_d * gimple_def_ops (gimple g)
!      Return the set of â€˜DEFâ€™ operands for statement â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_set_def_ops (gimple g, struct
            def_optype_d *def)
!      Set â€˜DEFâ€™ to be the set of â€˜DEFâ€™ operands for statement â€˜Gâ€™.
  
   -- GIMPLE function: struct use_optype_d * gimple_use_ops (gimple g)
!      Return the set of â€˜USEâ€™ operands for statement â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_set_use_ops (gimple g, struct
            use_optype_d *use)
!      Set â€˜USEâ€™ to be the set of â€˜USEâ€™ operands for statement â€˜Gâ€™.
  
   -- GIMPLE function: struct voptype_d * gimple_vuse_ops (gimple g)
!      Return the set of â€˜VUSEâ€™ operands for statement â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_set_vuse_ops (gimple g, struct
            voptype_d *ops)
!      Set â€˜OPSâ€™ to be the set of â€˜VUSEâ€™ operands for statement â€˜Gâ€™.
  
   -- GIMPLE function: struct voptype_d * gimple_vdef_ops (gimple g)
!      Return the set of â€˜VDEFâ€™ operands for statement â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_set_vdef_ops (gimple g, struct
            voptype_d *ops)
!      Set â€˜OPSâ€™ to be the set of â€˜VDEFâ€™ operands for statement â€˜Gâ€™.
  
   -- GIMPLE function: bitmap gimple_loaded_syms (gimple g)
!      Return the set of symbols loaded by statement â€˜Gâ€™.  Each element of
!      the set is the â€˜DECL_UIDâ€™ of the corresponding symbol.
  
   -- GIMPLE function: bitmap gimple_stored_syms (gimple g)
!      Return the set of symbols stored by statement â€˜Gâ€™.  Each element of
!      the set is the â€˜DECL_UIDâ€™ of the corresponding symbol.
  
   -- GIMPLE function: bool gimple_modified_p (gimple g)
!      Return true if statement â€˜Gâ€™ has operands and the modified field
       has been set.
  
   -- GIMPLE function: bool gimple_has_volatile_ops (gimple stmt)
!      Return true if statement â€˜STMTâ€™ contains volatile operands.
  
   -- GIMPLE function: void gimple_set_has_volatile_ops (gimple stmt, bool
            volatilep)
!      Return true if statement â€˜STMTâ€™ contains volatile operands.
  
   -- GIMPLE function: void update_stmt (gimple s)
!      Mark statement â€˜Sâ€™ as modified, and update it.
  
   -- GIMPLE function: void update_stmt_if_modified (gimple s)
!      Update statement â€˜Sâ€™ if it has been marked modified.
  
   -- GIMPLE function: gimple gimple_copy (gimple stmt)
!      Return a deep copy of statement â€˜STMTâ€™.
  
  
  File: gccint.info,  Node: Tuple specific accessors,  Next: GIMPLE sequences,  Prev: Manipulating GIMPLE statements,  Up: GIMPLE
*************** File: gccint.info,  Node: Tuple specific
*** 14813,14889 ****
  
  File: gccint.info,  Node: GIMPLE_ASM,  Next: GIMPLE_ASSIGN,  Up: Tuple specific accessors
  
! 11.8.1 'GIMPLE_ASM'
  -------------------
  
   -- GIMPLE function: gasm *gimple_build_asm_vec ( const char *string,
            vec<tree, va_gc> *inputs, vec<tree, va_gc> *outputs, vec<tree,
            va_gc> *clobbers, vec<tree, va_gc> *labels)
!      Build a 'GIMPLE_ASM' statement.  This statement is used for
!      building in-line assembly constructs.  'STRING' is the assembly
!      code.  'INPUTS', 'OUTPUTS', 'CLOBBERS' and 'LABELS' are the inputs,
       outputs, clobbered registers and labels.
  
   -- GIMPLE function: unsigned gimple_asm_ninputs (const gasm *g)
!      Return the number of input operands for 'GIMPLE_ASM' 'G'.
  
   -- GIMPLE function: unsigned gimple_asm_noutputs (const gasm *g)
!      Return the number of output operands for 'GIMPLE_ASM' 'G'.
  
   -- GIMPLE function: unsigned gimple_asm_nclobbers (const gasm *g)
!      Return the number of clobber operands for 'GIMPLE_ASM' 'G'.
  
   -- GIMPLE function: tree gimple_asm_input_op (const gasm *g, unsigned
            index)
!      Return input operand 'INDEX' of 'GIMPLE_ASM' 'G'.
  
   -- GIMPLE function: void gimple_asm_set_input_op (gasm *g, unsigned
            index, tree in_op)
!      Set 'IN_OP' to be input operand 'INDEX' in 'GIMPLE_ASM' 'G'.
  
   -- GIMPLE function: tree gimple_asm_output_op (const gasm *g, unsigned
            index)
!      Return output operand 'INDEX' of 'GIMPLE_ASM' 'G'.
  
   -- GIMPLE function: void gimple_asm_set_output_op (gasm *g, unsigned
            index, tree out_op)
!      Set 'OUT_OP' to be output operand 'INDEX' in 'GIMPLE_ASM' 'G'.
  
   -- GIMPLE function: tree gimple_asm_clobber_op (const gasm *g, unsigned
            index)
!      Return clobber operand 'INDEX' of 'GIMPLE_ASM' 'G'.
  
   -- GIMPLE function: void gimple_asm_set_clobber_op (gasm *g, unsigned
            index, tree clobber_op)
!      Set 'CLOBBER_OP' to be clobber operand 'INDEX' in 'GIMPLE_ASM' 'G'.
  
   -- GIMPLE function: const char * gimple_asm_string (const gasm *g)
       Return the string representing the assembly instruction in
!      'GIMPLE_ASM' 'G'.
  
   -- GIMPLE function: bool gimple_asm_basic_p (const gasm *g)
!      Return true if 'G' is a basic asm rather than an extended asm.
  
   -- GIMPLE function: void gimple_asm_set_basic (gasm *g, bool basic_p)
!      Mark asm statement 'G' as a basic asm or an extended asm based on
!      'BASIC_P'.
  
   -- GIMPLE function: bool gimple_asm_volatile_p (const gasm *g)
!      Return true if 'G' is an asm statement marked volatile.
  
   -- GIMPLE function: void gimple_asm_set_volatile (gasm *g, bool
            volatile_p)
!      Mark asm statement 'G' as volatile or non-volatile based on
!      'VOLATILE_P'.
  
  
  File: gccint.info,  Node: GIMPLE_ASSIGN,  Next: GIMPLE_BIND,  Prev: GIMPLE_ASM,  Up: Tuple specific accessors
  
! 11.8.2 'GIMPLE_ASSIGN'
  ----------------------
  
   -- GIMPLE function: gassign *gimple_build_assign (tree lhs, tree rhs)
!      Build a 'GIMPLE_ASSIGN' statement.  The left-hand side is an lvalue
       passed in lhs.  The right-hand side can be either a unary or binary
       tree expression.  The expression tree rhs will be flattened and its
       operands assigned to the corresponding operand slots in the new
--- 14818,14894 ----
  
  File: gccint.info,  Node: GIMPLE_ASM,  Next: GIMPLE_ASSIGN,  Up: Tuple specific accessors
  
! 11.8.1 â€˜GIMPLE_ASMâ€™
  -------------------
  
   -- GIMPLE function: gasm *gimple_build_asm_vec ( const char *string,
            vec<tree, va_gc> *inputs, vec<tree, va_gc> *outputs, vec<tree,
            va_gc> *clobbers, vec<tree, va_gc> *labels)
!      Build a â€˜GIMPLE_ASMâ€™ statement.  This statement is used for
!      building in-line assembly constructs.  â€˜STRINGâ€™ is the assembly
!      code.  â€˜INPUTSâ€™, â€˜OUTPUTSâ€™, â€˜CLOBBERSâ€™ and â€˜LABELSâ€™ are the inputs,
       outputs, clobbered registers and labels.
  
   -- GIMPLE function: unsigned gimple_asm_ninputs (const gasm *g)
!      Return the number of input operands for â€˜GIMPLE_ASMâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: unsigned gimple_asm_noutputs (const gasm *g)
!      Return the number of output operands for â€˜GIMPLE_ASMâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: unsigned gimple_asm_nclobbers (const gasm *g)
!      Return the number of clobber operands for â€˜GIMPLE_ASMâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: tree gimple_asm_input_op (const gasm *g, unsigned
            index)
!      Return input operand â€˜INDEXâ€™ of â€˜GIMPLE_ASMâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_asm_set_input_op (gasm *g, unsigned
            index, tree in_op)
!      Set â€˜IN_OPâ€™ to be input operand â€˜INDEXâ€™ in â€˜GIMPLE_ASMâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: tree gimple_asm_output_op (const gasm *g, unsigned
            index)
!      Return output operand â€˜INDEXâ€™ of â€˜GIMPLE_ASMâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_asm_set_output_op (gasm *g, unsigned
            index, tree out_op)
!      Set â€˜OUT_OPâ€™ to be output operand â€˜INDEXâ€™ in â€˜GIMPLE_ASMâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: tree gimple_asm_clobber_op (const gasm *g, unsigned
            index)
!      Return clobber operand â€˜INDEXâ€™ of â€˜GIMPLE_ASMâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_asm_set_clobber_op (gasm *g, unsigned
            index, tree clobber_op)
!      Set â€˜CLOBBER_OPâ€™ to be clobber operand â€˜INDEXâ€™ in â€˜GIMPLE_ASMâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: const char * gimple_asm_string (const gasm *g)
       Return the string representing the assembly instruction in
!      â€˜GIMPLE_ASMâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: bool gimple_asm_basic_p (const gasm *g)
!      Return true if â€˜Gâ€™ is a basic asm rather than an extended asm.
  
   -- GIMPLE function: void gimple_asm_set_basic (gasm *g, bool basic_p)
!      Mark asm statement â€˜Gâ€™ as a basic asm or an extended asm based on
!      â€˜BASIC_Pâ€™.
  
   -- GIMPLE function: bool gimple_asm_volatile_p (const gasm *g)
!      Return true if â€˜Gâ€™ is an asm statement marked volatile.
  
   -- GIMPLE function: void gimple_asm_set_volatile (gasm *g, bool
            volatile_p)
!      Mark asm statement â€˜Gâ€™ as volatile or non-volatile based on
!      â€˜VOLATILE_Pâ€™.
  
  
  File: gccint.info,  Node: GIMPLE_ASSIGN,  Next: GIMPLE_BIND,  Prev: GIMPLE_ASM,  Up: Tuple specific accessors
  
! 11.8.2 â€˜GIMPLE_ASSIGNâ€™
  ----------------------
  
   -- GIMPLE function: gassign *gimple_build_assign (tree lhs, tree rhs)
!      Build a â€˜GIMPLE_ASSIGNâ€™ statement.  The left-hand side is an lvalue
       passed in lhs.  The right-hand side can be either a unary or binary
       tree expression.  The expression tree rhs will be flattened and its
       operands assigned to the corresponding operand slots in the new
*************** File: gccint.info,  Node: GIMPLE_ASSIGN,
*** 14891,15320 ****
       expression that you want to convert into a tuple.  However, try to
       avoid building expression trees for the sole purpose of calling
       this function.  If you already have the operands in separate trees,
!      it is better to use 'gimple_build_assign' with 'enum tree_code'
       argument and separate arguments for each operand.
  
   -- GIMPLE function: gassign *gimple_build_assign (tree lhs, enum
            tree_code subcode, tree op1, tree op2, tree op3)
!      This function is similar to two operand 'gimple_build_assign', but
!      is used to build a 'GIMPLE_ASSIGN' statement when the operands of
       the right-hand side of the assignment are already split into
       different operands.
  
       The left-hand side is an lvalue passed in lhs.  Subcode is the
!      'tree_code' for the right-hand side of the assignment.  Op1, op2
       and op3 are the operands.
  
   -- GIMPLE function: gassign *gimple_build_assign (tree lhs, enum
            tree_code subcode, tree op1, tree op2)
!      Like the above 5 operand 'gimple_build_assign', but with the last
!      argument 'NULL' - this overload should not be used for
!      'GIMPLE_TERNARY_RHS' assignments.
  
   -- GIMPLE function: gassign *gimple_build_assign (tree lhs, enum
            tree_code subcode, tree op1)
!      Like the above 4 operand 'gimple_build_assign', but with the last
!      argument 'NULL' - this overload should be used only for
!      'GIMPLE_UNARY_RHS' and 'GIMPLE_SINGLE_RHS' assignments.
  
   -- GIMPLE function: gimple gimplify_assign (tree dst, tree src,
            gimple_seq *seq_p)
!      Build a new 'GIMPLE_ASSIGN' tuple and append it to the end of
!      '*SEQ_P'.
  
!  'DST'/'SRC' are the destination and source respectively.  You can pass
! ungimplified trees in 'DST' or 'SRC', in which case they will be
  converted to a gimple operand if necessary.
  
!  This function returns the newly created 'GIMPLE_ASSIGN' tuple.
  
   -- GIMPLE function: enum tree_code gimple_assign_rhs_code (gimple g)
!      Return the code of the expression computed on the 'RHS' of
!      assignment statement 'G'.
  
   -- GIMPLE function: enum gimple_rhs_class gimple_assign_rhs_class
            (gimple g)
       Return the gimple rhs class of the code for the expression computed
!      on the rhs of assignment statement 'G'.  This will never return
!      'GIMPLE_INVALID_RHS'.
  
   -- GIMPLE function: tree gimple_assign_lhs (gimple g)
!      Return the 'LHS' of assignment statement 'G'.
  
   -- GIMPLE function: tree * gimple_assign_lhs_ptr (gimple g)
!      Return a pointer to the 'LHS' of assignment statement 'G'.
  
   -- GIMPLE function: tree gimple_assign_rhs1 (gimple g)
!      Return the first operand on the 'RHS' of assignment statement 'G'.
  
   -- GIMPLE function: tree * gimple_assign_rhs1_ptr (gimple g)
!      Return the address of the first operand on the 'RHS' of assignment
!      statement 'G'.
  
   -- GIMPLE function: tree gimple_assign_rhs2 (gimple g)
!      Return the second operand on the 'RHS' of assignment statement 'G'.
  
   -- GIMPLE function: tree * gimple_assign_rhs2_ptr (gimple g)
!      Return the address of the second operand on the 'RHS' of assignment
!      statement 'G'.
  
   -- GIMPLE function: tree gimple_assign_rhs3 (gimple g)
!      Return the third operand on the 'RHS' of assignment statement 'G'.
  
   -- GIMPLE function: tree * gimple_assign_rhs3_ptr (gimple g)
!      Return the address of the third operand on the 'RHS' of assignment
!      statement 'G'.
  
   -- GIMPLE function: void gimple_assign_set_lhs (gimple g, tree lhs)
!      Set 'LHS' to be the 'LHS' operand of assignment statement 'G'.
  
   -- GIMPLE function: void gimple_assign_set_rhs1 (gimple g, tree rhs)
!      Set 'RHS' to be the first operand on the 'RHS' of assignment
!      statement 'G'.
  
   -- GIMPLE function: void gimple_assign_set_rhs2 (gimple g, tree rhs)
!      Set 'RHS' to be the second operand on the 'RHS' of assignment
!      statement 'G'.
  
   -- GIMPLE function: void gimple_assign_set_rhs3 (gimple g, tree rhs)
!      Set 'RHS' to be the third operand on the 'RHS' of assignment
!      statement 'G'.
  
   -- GIMPLE function: bool gimple_assign_cast_p (const_gimple s)
!      Return true if 'S' is a type-cast assignment.
  
  
  File: gccint.info,  Node: GIMPLE_BIND,  Next: GIMPLE_CALL,  Prev: GIMPLE_ASSIGN,  Up: Tuple specific accessors
  
! 11.8.3 'GIMPLE_BIND'
  --------------------
  
   -- GIMPLE function: gbind *gimple_build_bind (tree vars, gimple_seq
            body)
!      Build a 'GIMPLE_BIND' statement with a list of variables in 'VARS'
!      and a body of statements in sequence 'BODY'.
  
   -- GIMPLE function: tree gimple_bind_vars (const gbind *g)
!      Return the variables declared in the 'GIMPLE_BIND' statement 'G'.
  
   -- GIMPLE function: void gimple_bind_set_vars (gbind *g, tree vars)
!      Set 'VARS' to be the set of variables declared in the 'GIMPLE_BIND'
!      statement 'G'.
  
   -- GIMPLE function: void gimple_bind_append_vars (gbind *g, tree vars)
!      Append 'VARS' to the set of variables declared in the 'GIMPLE_BIND'
!      statement 'G'.
  
   -- GIMPLE function: gimple_seq gimple_bind_body (gbind *g)
!      Return the GIMPLE sequence contained in the 'GIMPLE_BIND' statement
!      'G'.
  
   -- GIMPLE function: void gimple_bind_set_body (gbind *g, gimple_seq
            seq)
!      Set 'SEQ' to be sequence contained in the 'GIMPLE_BIND' statement
!      'G'.
  
   -- GIMPLE function: void gimple_bind_add_stmt (gbind *gs, gimple stmt)
!      Append a statement to the end of a 'GIMPLE_BIND''s body.
  
   -- GIMPLE function: void gimple_bind_add_seq (gbind *gs, gimple_seq
            seq)
!      Append a sequence of statements to the end of a 'GIMPLE_BIND''s
       body.
  
   -- GIMPLE function: tree gimple_bind_block (const gbind *g)
!      Return the 'TREE_BLOCK' node associated with 'GIMPLE_BIND'
!      statement 'G'.  This is analogous to the 'BIND_EXPR_BLOCK' field in
       trees.
  
   -- GIMPLE function: void gimple_bind_set_block (gbind *g, tree block)
!      Set 'BLOCK' to be the 'TREE_BLOCK' node associated with
!      'GIMPLE_BIND' statement 'G'.
  
  
  File: gccint.info,  Node: GIMPLE_CALL,  Next: GIMPLE_CATCH,  Prev: GIMPLE_BIND,  Up: Tuple specific accessors
  
! 11.8.4 'GIMPLE_CALL'
  --------------------
  
   -- GIMPLE function: gcall *gimple_build_call (tree fn, unsigned nargs,
            ...)
!      Build a 'GIMPLE_CALL' statement to function 'FN'.  The argument
!      'FN' must be either a 'FUNCTION_DECL' or a gimple call address as
!      determined by 'is_gimple_call_addr'.  'NARGS' are the number of
!      arguments.  The rest of the arguments follow the argument 'NARGS',
       and must be trees that are valid as rvalues in gimple (i.e., each
!      operand is validated with 'is_gimple_operand').
  
   -- GIMPLE function: gcall *gimple_build_call_from_tree (tree call_expr,
            tree fnptrtype)
!      Build a 'GIMPLE_CALL' from a 'CALL_EXPR' node.  The arguments and
       the function are taken from the expression directly.  The type of
!      the 'GIMPLE_CALL' is set from the second parameter passed by a
!      caller.  This routine assumes that 'call_expr' is already in GIMPLE
       form.  That is, its operands are GIMPLE values and the function
       call needs no further simplification.  All the call flags in
!      'call_expr' are copied over to the new 'GIMPLE_CALL'.
  
!  -- GIMPLE function: gcall *gimple_build_call_vec (tree fn, 'vec<tree>'
            args)
!      Identical to 'gimple_build_call' but the arguments are stored in a
!      'vec<tree>'.
  
   -- GIMPLE function: tree gimple_call_lhs (gimple g)
!      Return the 'LHS' of call statement 'G'.
  
   -- GIMPLE function: tree * gimple_call_lhs_ptr (gimple g)
!      Return a pointer to the 'LHS' of call statement 'G'.
  
   -- GIMPLE function: void gimple_call_set_lhs (gimple g, tree lhs)
!      Set 'LHS' to be the 'LHS' operand of call statement 'G'.
  
   -- GIMPLE function: tree gimple_call_fn (gimple g)
       Return the tree node representing the function called by call
!      statement 'G'.
  
   -- GIMPLE function: void gimple_call_set_fn (gcall *g, tree fn)
!      Set 'FN' to be the function called by call statement 'G'.  This has
       to be a gimple value specifying the address of the called function.
  
   -- GIMPLE function: tree gimple_call_fndecl (gimple g)
!      If a given 'GIMPLE_CALL''s callee is a 'FUNCTION_DECL', return it.
!      Otherwise return 'NULL'.  This function is analogous to
!      'get_callee_fndecl' in 'GENERIC'.
  
   -- GIMPLE function: tree gimple_call_set_fndecl (gimple g, tree fndecl)
!      Set the called function to 'FNDECL'.
  
   -- GIMPLE function: tree gimple_call_return_type (const gcall *g)
!      Return the type returned by call statement 'G'.
  
   -- GIMPLE function: tree gimple_call_chain (gimple g)
!      Return the static chain for call statement 'G'.
  
   -- GIMPLE function: void gimple_call_set_chain (gcall *g, tree chain)
!      Set 'CHAIN' to be the static chain for call statement 'G'.
  
   -- GIMPLE function: unsigned gimple_call_num_args (gimple g)
!      Return the number of arguments used by call statement 'G'.
  
   -- GIMPLE function: tree gimple_call_arg (gimple g, unsigned index)
!      Return the argument at position 'INDEX' for call statement 'G'.
       The first argument is 0.
  
   -- GIMPLE function: tree * gimple_call_arg_ptr (gimple g, unsigned
            index)
!      Return a pointer to the argument at position 'INDEX' for call
!      statement 'G'.
  
   -- GIMPLE function: void gimple_call_set_arg (gimple g, unsigned index,
            tree arg)
!      Set 'ARG' to be the argument at position 'INDEX' for call statement
!      'G'.
  
   -- GIMPLE function: void gimple_call_set_tail (gcall *s)
!      Mark call statement 'S' as being a tail call (i.e., a call just
       before the exit of a function).  These calls are candidate for tail
       call optimization.
  
   -- GIMPLE function: bool gimple_call_tail_p (gcall *s)
!      Return true if 'GIMPLE_CALL' 'S' is marked as a tail call.
  
   -- GIMPLE function: bool gimple_call_noreturn_p (gimple s)
!      Return true if 'S' is a noreturn call.
  
   -- GIMPLE function: gimple gimple_call_copy_skip_args (gcall *stmt,
            bitmap args_to_skip)
!      Build a 'GIMPLE_CALL' identical to 'STMT' but skipping the
!      arguments in the positions marked by the set 'ARGS_TO_SKIP'.
  
  
  File: gccint.info,  Node: GIMPLE_CATCH,  Next: GIMPLE_COND,  Prev: GIMPLE_CALL,  Up: Tuple specific accessors
  
! 11.8.5 'GIMPLE_CATCH'
  ---------------------
  
   -- GIMPLE function: gcatch *gimple_build_catch (tree types, gimple_seq
            handler)
!      Build a 'GIMPLE_CATCH' statement.  'TYPES' are the tree types this
!      catch handles.  'HANDLER' is a sequence of statements with the code
       for the handler.
  
   -- GIMPLE function: tree gimple_catch_types (const gcatch *g)
!      Return the types handled by 'GIMPLE_CATCH' statement 'G'.
  
   -- GIMPLE function: tree * gimple_catch_types_ptr (gcatch *g)
!      Return a pointer to the types handled by 'GIMPLE_CATCH' statement
!      'G'.
  
   -- GIMPLE function: gimple_seq gimple_catch_handler (gcatch *g)
       Return the GIMPLE sequence representing the body of the handler of
!      'GIMPLE_CATCH' statement 'G'.
  
   -- GIMPLE function: void gimple_catch_set_types (gcatch *g, tree t)
!      Set 'T' to be the set of types handled by 'GIMPLE_CATCH' 'G'.
  
   -- GIMPLE function: void gimple_catch_set_handler (gcatch *g,
            gimple_seq handler)
!      Set 'HANDLER' to be the body of 'GIMPLE_CATCH' 'G'.
  
  
  File: gccint.info,  Node: GIMPLE_COND,  Next: GIMPLE_DEBUG,  Prev: GIMPLE_CATCH,  Up: Tuple specific accessors
  
! 11.8.6 'GIMPLE_COND'
  --------------------
  
   -- GIMPLE function: gcond *gimple_build_cond ( enum tree_code
            pred_code, tree lhs, tree rhs, tree t_label, tree f_label)
!      Build a 'GIMPLE_COND' statement.  'A' 'GIMPLE_COND' statement
!      compares 'LHS' and 'RHS' and if the condition in 'PRED_CODE' is
!      true, jump to the label in 't_label', otherwise jump to the label
!      in 'f_label'.  'PRED_CODE' are relational operator tree codes like
!      'EQ_EXPR', 'LT_EXPR', 'LE_EXPR', 'NE_EXPR', etc.
  
   -- GIMPLE function: gcond *gimple_build_cond_from_tree (tree cond, tree
            t_label, tree f_label)
!      Build a 'GIMPLE_COND' statement from the conditional expression
!      tree 'COND'.  'T_LABEL' and 'F_LABEL' are as in
!      'gimple_build_cond'.
  
   -- GIMPLE function: enum tree_code gimple_cond_code (gimple g)
       Return the code of the predicate computed by conditional statement
!      'G'.
  
   -- GIMPLE function: void gimple_cond_set_code (gcond *g, enum tree_code
            code)
!      Set 'CODE' to be the predicate code for the conditional statement
!      'G'.
  
   -- GIMPLE function: tree gimple_cond_lhs (gimple g)
!      Return the 'LHS' of the predicate computed by conditional statement
!      'G'.
  
   -- GIMPLE function: void gimple_cond_set_lhs (gcond *g, tree lhs)
!      Set 'LHS' to be the 'LHS' operand of the predicate computed by
!      conditional statement 'G'.
  
   -- GIMPLE function: tree gimple_cond_rhs (gimple g)
!      Return the 'RHS' operand of the predicate computed by conditional
!      'G'.
  
   -- GIMPLE function: void gimple_cond_set_rhs (gcond *g, tree rhs)
!      Set 'RHS' to be the 'RHS' operand of the predicate computed by
!      conditional statement 'G'.
  
   -- GIMPLE function: tree gimple_cond_true_label (const gcond *g)
!      Return the label used by conditional statement 'G' when its
       predicate evaluates to true.
  
   -- GIMPLE function: void gimple_cond_set_true_label (gcond *g, tree
            label)
!      Set 'LABEL' to be the label used by conditional statement 'G' when
       its predicate evaluates to true.
  
   -- GIMPLE function: void gimple_cond_set_false_label (gcond *g, tree
            label)
!      Set 'LABEL' to be the label used by conditional statement 'G' when
       its predicate evaluates to false.
  
   -- GIMPLE function: tree gimple_cond_false_label (const gcond *g)
!      Return the label used by conditional statement 'G' when its
       predicate evaluates to false.
  
   -- GIMPLE function: void gimple_cond_make_false (gcond *g)
!      Set the conditional 'COND_STMT' to be of the form 'if (1 == 0)'.
  
   -- GIMPLE function: void gimple_cond_make_true (gcond *g)
!      Set the conditional 'COND_STMT' to be of the form 'if (1 == 1)'.
  
  
  File: gccint.info,  Node: GIMPLE_DEBUG,  Next: GIMPLE_EH_FILTER,  Prev: GIMPLE_COND,  Up: Tuple specific accessors
  
! 11.8.7 'GIMPLE_DEBUG'
  ---------------------
  
   -- GIMPLE function: gdebug *gimple_build_debug_bind (tree var, tree
            value, gimple stmt)
!      Build a 'GIMPLE_DEBUG' statement with 'GIMPLE_DEBUG_BIND'
!      'subcode'.  The effect of this statement is to tell debug
       information generation machinery that the value of user variable
!      'var' is given by 'value' at that point, and to remain with that
!      value until 'var' runs out of scope, a dynamically-subsequent debug
       bind statement overrides the binding, or conflicting values reach a
!      control flow merge point.  Even if components of the 'value'
       expression change afterwards, the variable is supposed to retain
       the same value, though not necessarily the same location.
  
!      It is expected that 'var' be most often a tree for automatic user
!      variables ('VAR_DECL' or 'PARM_DECL') that satisfy the requirements
       for gimple registers, but it may also be a tree for a scalarized
!      component of a user variable ('ARRAY_REF', 'COMPONENT_REF'), or a
!      debug temporary ('DEBUG_EXPR_DECL').
  
!      As for 'value', it can be an arbitrary tree expression, but it is
       recommended that it be in a suitable form for a gimple assignment
!      'RHS'.  It is not expected that user variables that could appear as
!      'var' ever appear in 'value', because in the latter we'd have their
!      'SSA_NAME's instead, but even if they were not in SSA form, user
!      variables appearing in 'value' are to be regarded as part of the
!      executable code space, whereas those in 'var' are to be regarded as
       part of the source code space.  There is no way to refer to the
!      value bound to a user variable within a 'value' expression.
  
!      If 'value' is 'GIMPLE_DEBUG_BIND_NOVALUE', debug information
!      generation machinery is informed that the variable 'var' is
       unbound, i.e., that its value is indeterminate, which sometimes
       means it is really unavailable, and other times that the compiler
       could not keep track of it.
  
       Block and location information for the newly-created stmt are taken
!      from 'stmt', if given.
  
   -- GIMPLE function: tree gimple_debug_bind_get_var (gimple stmt)
!      Return the user variable VAR that is bound at 'stmt'.
  
   -- GIMPLE function: tree gimple_debug_bind_get_value (gimple stmt)
       Return the value expression that is bound to a user variable at
!      'stmt'.
  
   -- GIMPLE function: tree * gimple_debug_bind_get_value_ptr (gimple
            stmt)
       Return a pointer to the value expression that is bound to a user
!      variable at 'stmt'.
  
   -- GIMPLE function: void gimple_debug_bind_set_var (gimple stmt, tree
            var)
!      Modify the user variable bound at 'stmt' to VAR.
  
   -- GIMPLE function: void gimple_debug_bind_set_value (gimple stmt, tree
            var)
!      Modify the value bound to the user variable bound at 'stmt' to
       VALUE.
  
   -- GIMPLE function: void gimple_debug_bind_reset_value (gimple stmt)
!      Modify the value bound to the user variable bound at 'stmt' so that
       the variable becomes unbound.
  
   -- GIMPLE function: bool gimple_debug_bind_has_value_p (gimple stmt)
!      Return 'TRUE' if 'stmt' binds a user variable to a value, and
!      'FALSE' if it unbinds the variable.
  
   -- GIMPLE function: gimple gimple_build_debug_begin_stmt (tree block,
            location_t location)
!      Build a 'GIMPLE_DEBUG' statement with 'GIMPLE_DEBUG_BEGIN_STMT'
!      'subcode'.  The effect of this statement is to tell debug
       information generation machinery that the user statement at the
!      given 'location' and 'block' starts at the point at which the
       statement is inserted.  The intent is that side effects (e.g.
       variable bindings) of all prior user statements are observable, and
       that none of the side effects of subsequent user statements are.
  
   -- GIMPLE function: gimple gimple_build_debug_inline_entry (tree block,
            location_t location)
!      Build a 'GIMPLE_DEBUG' statement with 'GIMPLE_DEBUG_INLINE_ENTRY'
!      'subcode'.  The effect of this statement is to tell debug
!      information generation machinery that a function call at 'location'
!      underwent inline substitution, that 'block' is the enclosing
       lexical block created for the substitution, and that at the point
       of the program in which the stmt is inserted, all parameters for
       the inlined function are bound to the respective arguments, and
--- 14896,15325 ----
       expression that you want to convert into a tuple.  However, try to
       avoid building expression trees for the sole purpose of calling
       this function.  If you already have the operands in separate trees,
!      it is better to use â€˜gimple_build_assignâ€™ with â€˜enum tree_codeâ€™
       argument and separate arguments for each operand.
  
   -- GIMPLE function: gassign *gimple_build_assign (tree lhs, enum
            tree_code subcode, tree op1, tree op2, tree op3)
!      This function is similar to two operand â€˜gimple_build_assignâ€™, but
!      is used to build a â€˜GIMPLE_ASSIGNâ€™ statement when the operands of
       the right-hand side of the assignment are already split into
       different operands.
  
       The left-hand side is an lvalue passed in lhs.  Subcode is the
!      â€˜tree_codeâ€™ for the right-hand side of the assignment.  Op1, op2
       and op3 are the operands.
  
   -- GIMPLE function: gassign *gimple_build_assign (tree lhs, enum
            tree_code subcode, tree op1, tree op2)
!      Like the above 5 operand â€˜gimple_build_assignâ€™, but with the last
!      argument â€˜NULLâ€™ - this overload should not be used for
!      â€˜GIMPLE_TERNARY_RHSâ€™ assignments.
  
   -- GIMPLE function: gassign *gimple_build_assign (tree lhs, enum
            tree_code subcode, tree op1)
!      Like the above 4 operand â€˜gimple_build_assignâ€™, but with the last
!      argument â€˜NULLâ€™ - this overload should be used only for
!      â€˜GIMPLE_UNARY_RHSâ€™ and â€˜GIMPLE_SINGLE_RHSâ€™ assignments.
  
   -- GIMPLE function: gimple gimplify_assign (tree dst, tree src,
            gimple_seq *seq_p)
!      Build a new â€˜GIMPLE_ASSIGNâ€™ tuple and append it to the end of
!      â€˜*SEQ_Pâ€™.
  
!  â€˜DSTâ€™/â€˜SRCâ€™ are the destination and source respectively.  You can pass
! ungimplified trees in â€˜DSTâ€™ or â€˜SRCâ€™, in which case they will be
  converted to a gimple operand if necessary.
  
!  This function returns the newly created â€˜GIMPLE_ASSIGNâ€™ tuple.
  
   -- GIMPLE function: enum tree_code gimple_assign_rhs_code (gimple g)
!      Return the code of the expression computed on the â€˜RHSâ€™ of
!      assignment statement â€˜Gâ€™.
  
   -- GIMPLE function: enum gimple_rhs_class gimple_assign_rhs_class
            (gimple g)
       Return the gimple rhs class of the code for the expression computed
!      on the rhs of assignment statement â€˜Gâ€™.  This will never return
!      â€˜GIMPLE_INVALID_RHSâ€™.
  
   -- GIMPLE function: tree gimple_assign_lhs (gimple g)
!      Return the â€˜LHSâ€™ of assignment statement â€˜Gâ€™.
  
   -- GIMPLE function: tree * gimple_assign_lhs_ptr (gimple g)
!      Return a pointer to the â€˜LHSâ€™ of assignment statement â€˜Gâ€™.
  
   -- GIMPLE function: tree gimple_assign_rhs1 (gimple g)
!      Return the first operand on the â€˜RHSâ€™ of assignment statement â€˜Gâ€™.
  
   -- GIMPLE function: tree * gimple_assign_rhs1_ptr (gimple g)
!      Return the address of the first operand on the â€˜RHSâ€™ of assignment
!      statement â€˜Gâ€™.
  
   -- GIMPLE function: tree gimple_assign_rhs2 (gimple g)
!      Return the second operand on the â€˜RHSâ€™ of assignment statement â€˜Gâ€™.
  
   -- GIMPLE function: tree * gimple_assign_rhs2_ptr (gimple g)
!      Return the address of the second operand on the â€˜RHSâ€™ of assignment
!      statement â€˜Gâ€™.
  
   -- GIMPLE function: tree gimple_assign_rhs3 (gimple g)
!      Return the third operand on the â€˜RHSâ€™ of assignment statement â€˜Gâ€™.
  
   -- GIMPLE function: tree * gimple_assign_rhs3_ptr (gimple g)
!      Return the address of the third operand on the â€˜RHSâ€™ of assignment
!      statement â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_assign_set_lhs (gimple g, tree lhs)
!      Set â€˜LHSâ€™ to be the â€˜LHSâ€™ operand of assignment statement â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_assign_set_rhs1 (gimple g, tree rhs)
!      Set â€˜RHSâ€™ to be the first operand on the â€˜RHSâ€™ of assignment
!      statement â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_assign_set_rhs2 (gimple g, tree rhs)
!      Set â€˜RHSâ€™ to be the second operand on the â€˜RHSâ€™ of assignment
!      statement â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_assign_set_rhs3 (gimple g, tree rhs)
!      Set â€˜RHSâ€™ to be the third operand on the â€˜RHSâ€™ of assignment
!      statement â€˜Gâ€™.
  
   -- GIMPLE function: bool gimple_assign_cast_p (const_gimple s)
!      Return true if â€˜Sâ€™ is a type-cast assignment.
  
  
  File: gccint.info,  Node: GIMPLE_BIND,  Next: GIMPLE_CALL,  Prev: GIMPLE_ASSIGN,  Up: Tuple specific accessors
  
! 11.8.3 â€˜GIMPLE_BINDâ€™
  --------------------
  
   -- GIMPLE function: gbind *gimple_build_bind (tree vars, gimple_seq
            body)
!      Build a â€˜GIMPLE_BINDâ€™ statement with a list of variables in â€˜VARSâ€™
!      and a body of statements in sequence â€˜BODYâ€™.
  
   -- GIMPLE function: tree gimple_bind_vars (const gbind *g)
!      Return the variables declared in the â€˜GIMPLE_BINDâ€™ statement â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_bind_set_vars (gbind *g, tree vars)
!      Set â€˜VARSâ€™ to be the set of variables declared in the â€˜GIMPLE_BINDâ€™
!      statement â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_bind_append_vars (gbind *g, tree vars)
!      Append â€˜VARSâ€™ to the set of variables declared in the â€˜GIMPLE_BINDâ€™
!      statement â€˜Gâ€™.
  
   -- GIMPLE function: gimple_seq gimple_bind_body (gbind *g)
!      Return the GIMPLE sequence contained in the â€˜GIMPLE_BINDâ€™ statement
!      â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_bind_set_body (gbind *g, gimple_seq
            seq)
!      Set â€˜SEQâ€™ to be sequence contained in the â€˜GIMPLE_BINDâ€™ statement
!      â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_bind_add_stmt (gbind *gs, gimple stmt)
!      Append a statement to the end of a â€˜GIMPLE_BINDâ€™'s body.
  
   -- GIMPLE function: void gimple_bind_add_seq (gbind *gs, gimple_seq
            seq)
!      Append a sequence of statements to the end of a â€˜GIMPLE_BINDâ€™'s
       body.
  
   -- GIMPLE function: tree gimple_bind_block (const gbind *g)
!      Return the â€˜TREE_BLOCKâ€™ node associated with â€˜GIMPLE_BINDâ€™
!      statement â€˜Gâ€™.  This is analogous to the â€˜BIND_EXPR_BLOCKâ€™ field in
       trees.
  
   -- GIMPLE function: void gimple_bind_set_block (gbind *g, tree block)
!      Set â€˜BLOCKâ€™ to be the â€˜TREE_BLOCKâ€™ node associated with
!      â€˜GIMPLE_BINDâ€™ statement â€˜Gâ€™.
  
  
  File: gccint.info,  Node: GIMPLE_CALL,  Next: GIMPLE_CATCH,  Prev: GIMPLE_BIND,  Up: Tuple specific accessors
  
! 11.8.4 â€˜GIMPLE_CALLâ€™
  --------------------
  
   -- GIMPLE function: gcall *gimple_build_call (tree fn, unsigned nargs,
            ...)
!      Build a â€˜GIMPLE_CALLâ€™ statement to function â€˜FNâ€™.  The argument
!      â€˜FNâ€™ must be either a â€˜FUNCTION_DECLâ€™ or a gimple call address as
!      determined by â€˜is_gimple_call_addrâ€™.  â€˜NARGSâ€™ are the number of
!      arguments.  The rest of the arguments follow the argument â€˜NARGSâ€™,
       and must be trees that are valid as rvalues in gimple (i.e., each
!      operand is validated with â€˜is_gimple_operandâ€™).
  
   -- GIMPLE function: gcall *gimple_build_call_from_tree (tree call_expr,
            tree fnptrtype)
!      Build a â€˜GIMPLE_CALLâ€™ from a â€˜CALL_EXPRâ€™ node.  The arguments and
       the function are taken from the expression directly.  The type of
!      the â€˜GIMPLE_CALLâ€™ is set from the second parameter passed by a
!      caller.  This routine assumes that â€˜call_exprâ€™ is already in GIMPLE
       form.  That is, its operands are GIMPLE values and the function
       call needs no further simplification.  All the call flags in
!      â€˜call_exprâ€™ are copied over to the new â€˜GIMPLE_CALLâ€™.
  
!  -- GIMPLE function: gcall *gimple_build_call_vec (tree fn, vec<tree>
            args)
!      Identical to â€˜gimple_build_callâ€™ but the arguments are stored in a
!      â€˜vec<tree>â€™.
  
   -- GIMPLE function: tree gimple_call_lhs (gimple g)
!      Return the â€˜LHSâ€™ of call statement â€˜Gâ€™.
  
   -- GIMPLE function: tree * gimple_call_lhs_ptr (gimple g)
!      Return a pointer to the â€˜LHSâ€™ of call statement â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_call_set_lhs (gimple g, tree lhs)
!      Set â€˜LHSâ€™ to be the â€˜LHSâ€™ operand of call statement â€˜Gâ€™.
  
   -- GIMPLE function: tree gimple_call_fn (gimple g)
       Return the tree node representing the function called by call
!      statement â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_call_set_fn (gcall *g, tree fn)
!      Set â€˜FNâ€™ to be the function called by call statement â€˜Gâ€™.  This has
       to be a gimple value specifying the address of the called function.
  
   -- GIMPLE function: tree gimple_call_fndecl (gimple g)
!      If a given â€˜GIMPLE_CALLâ€™'s callee is a â€˜FUNCTION_DECLâ€™, return it.
!      Otherwise return â€˜NULLâ€™.  This function is analogous to
!      â€˜get_callee_fndeclâ€™ in â€˜GENERICâ€™.
  
   -- GIMPLE function: tree gimple_call_set_fndecl (gimple g, tree fndecl)
!      Set the called function to â€˜FNDECLâ€™.
  
   -- GIMPLE function: tree gimple_call_return_type (const gcall *g)
!      Return the type returned by call statement â€˜Gâ€™.
  
   -- GIMPLE function: tree gimple_call_chain (gimple g)
!      Return the static chain for call statement â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_call_set_chain (gcall *g, tree chain)
!      Set â€˜CHAINâ€™ to be the static chain for call statement â€˜Gâ€™.
  
   -- GIMPLE function: unsigned gimple_call_num_args (gimple g)
!      Return the number of arguments used by call statement â€˜Gâ€™.
  
   -- GIMPLE function: tree gimple_call_arg (gimple g, unsigned index)
!      Return the argument at position â€˜INDEXâ€™ for call statement â€˜Gâ€™.
       The first argument is 0.
  
   -- GIMPLE function: tree * gimple_call_arg_ptr (gimple g, unsigned
            index)
!      Return a pointer to the argument at position â€˜INDEXâ€™ for call
!      statement â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_call_set_arg (gimple g, unsigned index,
            tree arg)
!      Set â€˜ARGâ€™ to be the argument at position â€˜INDEXâ€™ for call statement
!      â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_call_set_tail (gcall *s)
!      Mark call statement â€˜Sâ€™ as being a tail call (i.e., a call just
       before the exit of a function).  These calls are candidate for tail
       call optimization.
  
   -- GIMPLE function: bool gimple_call_tail_p (gcall *s)
!      Return true if â€˜GIMPLE_CALLâ€™ â€˜Sâ€™ is marked as a tail call.
  
   -- GIMPLE function: bool gimple_call_noreturn_p (gimple s)
!      Return true if â€˜Sâ€™ is a noreturn call.
  
   -- GIMPLE function: gimple gimple_call_copy_skip_args (gcall *stmt,
            bitmap args_to_skip)
!      Build a â€˜GIMPLE_CALLâ€™ identical to â€˜STMTâ€™ but skipping the
!      arguments in the positions marked by the set â€˜ARGS_TO_SKIPâ€™.
  
  
  File: gccint.info,  Node: GIMPLE_CATCH,  Next: GIMPLE_COND,  Prev: GIMPLE_CALL,  Up: Tuple specific accessors
  
! 11.8.5 â€˜GIMPLE_CATCHâ€™
  ---------------------
  
   -- GIMPLE function: gcatch *gimple_build_catch (tree types, gimple_seq
            handler)
!      Build a â€˜GIMPLE_CATCHâ€™ statement.  â€˜TYPESâ€™ are the tree types this
!      catch handles.  â€˜HANDLERâ€™ is a sequence of statements with the code
       for the handler.
  
   -- GIMPLE function: tree gimple_catch_types (const gcatch *g)
!      Return the types handled by â€˜GIMPLE_CATCHâ€™ statement â€˜Gâ€™.
  
   -- GIMPLE function: tree * gimple_catch_types_ptr (gcatch *g)
!      Return a pointer to the types handled by â€˜GIMPLE_CATCHâ€™ statement
!      â€˜Gâ€™.
  
   -- GIMPLE function: gimple_seq gimple_catch_handler (gcatch *g)
       Return the GIMPLE sequence representing the body of the handler of
!      â€˜GIMPLE_CATCHâ€™ statement â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_catch_set_types (gcatch *g, tree t)
!      Set â€˜Tâ€™ to be the set of types handled by â€˜GIMPLE_CATCHâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_catch_set_handler (gcatch *g,
            gimple_seq handler)
!      Set â€˜HANDLERâ€™ to be the body of â€˜GIMPLE_CATCHâ€™ â€˜Gâ€™.
  
  
  File: gccint.info,  Node: GIMPLE_COND,  Next: GIMPLE_DEBUG,  Prev: GIMPLE_CATCH,  Up: Tuple specific accessors
  
! 11.8.6 â€˜GIMPLE_CONDâ€™
  --------------------
  
   -- GIMPLE function: gcond *gimple_build_cond ( enum tree_code
            pred_code, tree lhs, tree rhs, tree t_label, tree f_label)
!      Build a â€˜GIMPLE_CONDâ€™ statement.  â€˜Aâ€™ â€˜GIMPLE_CONDâ€™ statement
!      compares â€˜LHSâ€™ and â€˜RHSâ€™ and if the condition in â€˜PRED_CODEâ€™ is
!      true, jump to the label in â€˜t_labelâ€™, otherwise jump to the label
!      in â€˜f_labelâ€™.  â€˜PRED_CODEâ€™ are relational operator tree codes like
!      â€˜EQ_EXPRâ€™, â€˜LT_EXPRâ€™, â€˜LE_EXPRâ€™, â€˜NE_EXPRâ€™, etc.
  
   -- GIMPLE function: gcond *gimple_build_cond_from_tree (tree cond, tree
            t_label, tree f_label)
!      Build a â€˜GIMPLE_CONDâ€™ statement from the conditional expression
!      tree â€˜CONDâ€™.  â€˜T_LABELâ€™ and â€˜F_LABELâ€™ are as in
!      â€˜gimple_build_condâ€™.
  
   -- GIMPLE function: enum tree_code gimple_cond_code (gimple g)
       Return the code of the predicate computed by conditional statement
!      â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_cond_set_code (gcond *g, enum tree_code
            code)
!      Set â€˜CODEâ€™ to be the predicate code for the conditional statement
!      â€˜Gâ€™.
  
   -- GIMPLE function: tree gimple_cond_lhs (gimple g)
!      Return the â€˜LHSâ€™ of the predicate computed by conditional statement
!      â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_cond_set_lhs (gcond *g, tree lhs)
!      Set â€˜LHSâ€™ to be the â€˜LHSâ€™ operand of the predicate computed by
!      conditional statement â€˜Gâ€™.
  
   -- GIMPLE function: tree gimple_cond_rhs (gimple g)
!      Return the â€˜RHSâ€™ operand of the predicate computed by conditional
!      â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_cond_set_rhs (gcond *g, tree rhs)
!      Set â€˜RHSâ€™ to be the â€˜RHSâ€™ operand of the predicate computed by
!      conditional statement â€˜Gâ€™.
  
   -- GIMPLE function: tree gimple_cond_true_label (const gcond *g)
!      Return the label used by conditional statement â€˜Gâ€™ when its
       predicate evaluates to true.
  
   -- GIMPLE function: void gimple_cond_set_true_label (gcond *g, tree
            label)
!      Set â€˜LABELâ€™ to be the label used by conditional statement â€˜Gâ€™ when
       its predicate evaluates to true.
  
   -- GIMPLE function: void gimple_cond_set_false_label (gcond *g, tree
            label)
!      Set â€˜LABELâ€™ to be the label used by conditional statement â€˜Gâ€™ when
       its predicate evaluates to false.
  
   -- GIMPLE function: tree gimple_cond_false_label (const gcond *g)
!      Return the label used by conditional statement â€˜Gâ€™ when its
       predicate evaluates to false.
  
   -- GIMPLE function: void gimple_cond_make_false (gcond *g)
!      Set the conditional â€˜COND_STMTâ€™ to be of the form 'if (1 == 0)'.
  
   -- GIMPLE function: void gimple_cond_make_true (gcond *g)
!      Set the conditional â€˜COND_STMTâ€™ to be of the form 'if (1 == 1)'.
  
  
  File: gccint.info,  Node: GIMPLE_DEBUG,  Next: GIMPLE_EH_FILTER,  Prev: GIMPLE_COND,  Up: Tuple specific accessors
  
! 11.8.7 â€˜GIMPLE_DEBUGâ€™
  ---------------------
  
   -- GIMPLE function: gdebug *gimple_build_debug_bind (tree var, tree
            value, gimple stmt)
!      Build a â€˜GIMPLE_DEBUGâ€™ statement with â€˜GIMPLE_DEBUG_BINDâ€™
!      â€˜subcodeâ€™.  The effect of this statement is to tell debug
       information generation machinery that the value of user variable
!      â€˜varâ€™ is given by â€˜valueâ€™ at that point, and to remain with that
!      value until â€˜varâ€™ runs out of scope, a dynamically-subsequent debug
       bind statement overrides the binding, or conflicting values reach a
!      control flow merge point.  Even if components of the â€˜valueâ€™
       expression change afterwards, the variable is supposed to retain
       the same value, though not necessarily the same location.
  
!      It is expected that â€˜varâ€™ be most often a tree for automatic user
!      variables (â€˜VAR_DECLâ€™ or â€˜PARM_DECLâ€™) that satisfy the requirements
       for gimple registers, but it may also be a tree for a scalarized
!      component of a user variable (â€˜ARRAY_REFâ€™, â€˜COMPONENT_REFâ€™), or a
!      debug temporary (â€˜DEBUG_EXPR_DECLâ€™).
  
!      As for â€˜valueâ€™, it can be an arbitrary tree expression, but it is
       recommended that it be in a suitable form for a gimple assignment
!      â€˜RHSâ€™.  It is not expected that user variables that could appear as
!      â€˜varâ€™ ever appear in â€˜valueâ€™, because in the latter we'd have their
!      â€˜SSA_NAMEâ€™s instead, but even if they were not in SSA form, user
!      variables appearing in â€˜valueâ€™ are to be regarded as part of the
!      executable code space, whereas those in â€˜varâ€™ are to be regarded as
       part of the source code space.  There is no way to refer to the
!      value bound to a user variable within a â€˜valueâ€™ expression.
  
!      If â€˜valueâ€™ is â€˜GIMPLE_DEBUG_BIND_NOVALUEâ€™, debug information
!      generation machinery is informed that the variable â€˜varâ€™ is
       unbound, i.e., that its value is indeterminate, which sometimes
       means it is really unavailable, and other times that the compiler
       could not keep track of it.
  
       Block and location information for the newly-created stmt are taken
!      from â€˜stmtâ€™, if given.
  
   -- GIMPLE function: tree gimple_debug_bind_get_var (gimple stmt)
!      Return the user variable VAR that is bound at â€˜stmtâ€™.
  
   -- GIMPLE function: tree gimple_debug_bind_get_value (gimple stmt)
       Return the value expression that is bound to a user variable at
!      â€˜stmtâ€™.
  
   -- GIMPLE function: tree * gimple_debug_bind_get_value_ptr (gimple
            stmt)
       Return a pointer to the value expression that is bound to a user
!      variable at â€˜stmtâ€™.
  
   -- GIMPLE function: void gimple_debug_bind_set_var (gimple stmt, tree
            var)
!      Modify the user variable bound at â€˜stmtâ€™ to VAR.
  
   -- GIMPLE function: void gimple_debug_bind_set_value (gimple stmt, tree
            var)
!      Modify the value bound to the user variable bound at â€˜stmtâ€™ to
       VALUE.
  
   -- GIMPLE function: void gimple_debug_bind_reset_value (gimple stmt)
!      Modify the value bound to the user variable bound at â€˜stmtâ€™ so that
       the variable becomes unbound.
  
   -- GIMPLE function: bool gimple_debug_bind_has_value_p (gimple stmt)
!      Return â€˜TRUEâ€™ if â€˜stmtâ€™ binds a user variable to a value, and
!      â€˜FALSEâ€™ if it unbinds the variable.
  
   -- GIMPLE function: gimple gimple_build_debug_begin_stmt (tree block,
            location_t location)
!      Build a â€˜GIMPLE_DEBUGâ€™ statement with â€˜GIMPLE_DEBUG_BEGIN_STMTâ€™
!      â€˜subcodeâ€™.  The effect of this statement is to tell debug
       information generation machinery that the user statement at the
!      given â€˜locationâ€™ and â€˜blockâ€™ starts at the point at which the
       statement is inserted.  The intent is that side effects (e.g.
       variable bindings) of all prior user statements are observable, and
       that none of the side effects of subsequent user statements are.
  
   -- GIMPLE function: gimple gimple_build_debug_inline_entry (tree block,
            location_t location)
!      Build a â€˜GIMPLE_DEBUGâ€™ statement with â€˜GIMPLE_DEBUG_INLINE_ENTRYâ€™
!      â€˜subcodeâ€™.  The effect of this statement is to tell debug
!      information generation machinery that a function call at â€˜locationâ€™
!      underwent inline substitution, that â€˜blockâ€™ is the enclosing
       lexical block created for the substitution, and that at the point
       of the program in which the stmt is inserted, all parameters for
       the inlined function are bound to the respective arguments, and
*************** File: gccint.info,  Node: GIMPLE_DEBUG,
*** 15323,15356 ****
  
  File: gccint.info,  Node: GIMPLE_EH_FILTER,  Next: GIMPLE_LABEL,  Prev: GIMPLE_DEBUG,  Up: Tuple specific accessors
  
! 11.8.8 'GIMPLE_EH_FILTER'
  -------------------------
  
   -- GIMPLE function: geh_filter *gimple_build_eh_filter (tree types,
            gimple_seq failure)
!      Build a 'GIMPLE_EH_FILTER' statement.  'TYPES' are the filter's
!      types.  'FAILURE' is a sequence with the filter's failure action.
  
   -- GIMPLE function: tree gimple_eh_filter_types (gimple g)
!      Return the types handled by 'GIMPLE_EH_FILTER' statement 'G'.
  
   -- GIMPLE function: tree * gimple_eh_filter_types_ptr (gimple g)
!      Return a pointer to the types handled by 'GIMPLE_EH_FILTER'
!      statement 'G'.
  
   -- GIMPLE function: gimple_seq gimple_eh_filter_failure (gimple g)
!      Return the sequence of statement to execute when 'GIMPLE_EH_FILTER'
       statement fails.
  
   -- GIMPLE function: void gimple_eh_filter_set_types (geh_filter *g,
            tree types)
!      Set 'TYPES' to be the set of types handled by 'GIMPLE_EH_FILTER'
!      'G'.
  
   -- GIMPLE function: void gimple_eh_filter_set_failure (geh_filter *g,
            gimple_seq failure)
!      Set 'FAILURE' to be the sequence of statements to execute on
!      failure for 'GIMPLE_EH_FILTER' 'G'.
  
   -- GIMPLE function: tree gimple_eh_must_not_throw_fndecl ( geh_mnt
            *eh_mnt_stmt)
--- 15328,15361 ----
  
  File: gccint.info,  Node: GIMPLE_EH_FILTER,  Next: GIMPLE_LABEL,  Prev: GIMPLE_DEBUG,  Up: Tuple specific accessors
  
! 11.8.8 â€˜GIMPLE_EH_FILTERâ€™
  -------------------------
  
   -- GIMPLE function: geh_filter *gimple_build_eh_filter (tree types,
            gimple_seq failure)
!      Build a â€˜GIMPLE_EH_FILTERâ€™ statement.  â€˜TYPESâ€™ are the filter's
!      types.  â€˜FAILUREâ€™ is a sequence with the filter's failure action.
  
   -- GIMPLE function: tree gimple_eh_filter_types (gimple g)
!      Return the types handled by â€˜GIMPLE_EH_FILTERâ€™ statement â€˜Gâ€™.
  
   -- GIMPLE function: tree * gimple_eh_filter_types_ptr (gimple g)
!      Return a pointer to the types handled by â€˜GIMPLE_EH_FILTERâ€™
!      statement â€˜Gâ€™.
  
   -- GIMPLE function: gimple_seq gimple_eh_filter_failure (gimple g)
!      Return the sequence of statement to execute when â€˜GIMPLE_EH_FILTERâ€™
       statement fails.
  
   -- GIMPLE function: void gimple_eh_filter_set_types (geh_filter *g,
            tree types)
!      Set â€˜TYPESâ€™ to be the set of types handled by â€˜GIMPLE_EH_FILTERâ€™
!      â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_eh_filter_set_failure (geh_filter *g,
            gimple_seq failure)
!      Set â€˜FAILUREâ€™ to be the sequence of statements to execute on
!      failure for â€˜GIMPLE_EH_FILTERâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: tree gimple_eh_must_not_throw_fndecl ( geh_mnt
            *eh_mnt_stmt)
*************** File: gccint.info,  Node: GIMPLE_EH_FILT
*** 15363,15446 ****
  
  File: gccint.info,  Node: GIMPLE_LABEL,  Next: GIMPLE_GOTO,  Prev: GIMPLE_EH_FILTER,  Up: Tuple specific accessors
  
! 11.8.9 'GIMPLE_LABEL'
  ---------------------
  
   -- GIMPLE function: glabel *gimple_build_label (tree label)
!      Build a 'GIMPLE_LABEL' statement with corresponding to the tree
!      label, 'LABEL'.
  
   -- GIMPLE function: tree gimple_label_label (const glabel *g)
!      Return the 'LABEL_DECL' node used by 'GIMPLE_LABEL' statement 'G'.
  
   -- GIMPLE function: void gimple_label_set_label (glabel *g, tree label)
!      Set 'LABEL' to be the 'LABEL_DECL' node used by 'GIMPLE_LABEL'
!      statement 'G'.
  
  
  File: gccint.info,  Node: GIMPLE_GOTO,  Next: GIMPLE_NOP,  Prev: GIMPLE_LABEL,  Up: Tuple specific accessors
  
! 11.8.10 'GIMPLE_GOTO'
  ---------------------
  
   -- GIMPLE function: ggoto *gimple_build_goto (tree dest)
!      Build a 'GIMPLE_GOTO' statement to label 'DEST'.
  
   -- GIMPLE function: tree gimple_goto_dest (gimple g)
!      Return the destination of the unconditional jump 'G'.
  
   -- GIMPLE function: void gimple_goto_set_dest (ggoto *g, tree dest)
!      Set 'DEST' to be the destination of the unconditional jump 'G'.
  
  
  File: gccint.info,  Node: GIMPLE_NOP,  Next: GIMPLE_OMP_ATOMIC_LOAD,  Prev: GIMPLE_GOTO,  Up: Tuple specific accessors
  
! 11.8.11 'GIMPLE_NOP'
  --------------------
  
   -- GIMPLE function: gimple gimple_build_nop (void)
!      Build a 'GIMPLE_NOP' statement.
  
   -- GIMPLE function: bool gimple_nop_p (gimple g)
!      Returns 'TRUE' if statement 'G' is a 'GIMPLE_NOP'.
  
  
  File: gccint.info,  Node: GIMPLE_OMP_ATOMIC_LOAD,  Next: GIMPLE_OMP_ATOMIC_STORE,  Prev: GIMPLE_NOP,  Up: Tuple specific accessors
  
! 11.8.12 'GIMPLE_OMP_ATOMIC_LOAD'
  --------------------------------
  
   -- GIMPLE function: gomp_atomic_load *gimple_build_omp_atomic_load (
            tree lhs, tree rhs)
!      Build a 'GIMPLE_OMP_ATOMIC_LOAD' statement.  'LHS' is the left-hand
!      side of the assignment.  'RHS' is the right-hand side of the
       assignment.
  
   -- GIMPLE function: void gimple_omp_atomic_load_set_lhs (
            gomp_atomic_load *g, tree lhs)
!      Set the 'LHS' of an atomic load.
  
   -- GIMPLE function: tree gimple_omp_atomic_load_lhs ( const
            gomp_atomic_load *g)
!      Get the 'LHS' of an atomic load.
  
   -- GIMPLE function: void gimple_omp_atomic_load_set_rhs (
            gomp_atomic_load *g, tree rhs)
!      Set the 'RHS' of an atomic set.
  
   -- GIMPLE function: tree gimple_omp_atomic_load_rhs ( const
            gomp_atomic_load *g)
!      Get the 'RHS' of an atomic set.
  
  
  File: gccint.info,  Node: GIMPLE_OMP_ATOMIC_STORE,  Next: GIMPLE_OMP_CONTINUE,  Prev: GIMPLE_OMP_ATOMIC_LOAD,  Up: Tuple specific accessors
  
! 11.8.13 'GIMPLE_OMP_ATOMIC_STORE'
  ---------------------------------
  
   -- GIMPLE function: gomp_atomic_store *gimple_build_omp_atomic_store (
            tree val)
!      Build a 'GIMPLE_OMP_ATOMIC_STORE' statement.  'VAL' is the value to
       be stored.
  
   -- GIMPLE function: void gimple_omp_atomic_store_set_val (
--- 15368,15451 ----
  
  File: gccint.info,  Node: GIMPLE_LABEL,  Next: GIMPLE_GOTO,  Prev: GIMPLE_EH_FILTER,  Up: Tuple specific accessors
  
! 11.8.9 â€˜GIMPLE_LABELâ€™
  ---------------------
  
   -- GIMPLE function: glabel *gimple_build_label (tree label)
!      Build a â€˜GIMPLE_LABELâ€™ statement with corresponding to the tree
!      label, â€˜LABELâ€™.
  
   -- GIMPLE function: tree gimple_label_label (const glabel *g)
!      Return the â€˜LABEL_DECLâ€™ node used by â€˜GIMPLE_LABELâ€™ statement â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_label_set_label (glabel *g, tree label)
!      Set â€˜LABELâ€™ to be the â€˜LABEL_DECLâ€™ node used by â€˜GIMPLE_LABELâ€™
!      statement â€˜Gâ€™.
  
  
  File: gccint.info,  Node: GIMPLE_GOTO,  Next: GIMPLE_NOP,  Prev: GIMPLE_LABEL,  Up: Tuple specific accessors
  
! 11.8.10 â€˜GIMPLE_GOTOâ€™
  ---------------------
  
   -- GIMPLE function: ggoto *gimple_build_goto (tree dest)
!      Build a â€˜GIMPLE_GOTOâ€™ statement to label â€˜DESTâ€™.
  
   -- GIMPLE function: tree gimple_goto_dest (gimple g)
!      Return the destination of the unconditional jump â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_goto_set_dest (ggoto *g, tree dest)
!      Set â€˜DESTâ€™ to be the destination of the unconditional jump â€˜Gâ€™.
  
  
  File: gccint.info,  Node: GIMPLE_NOP,  Next: GIMPLE_OMP_ATOMIC_LOAD,  Prev: GIMPLE_GOTO,  Up: Tuple specific accessors
  
! 11.8.11 â€˜GIMPLE_NOPâ€™
  --------------------
  
   -- GIMPLE function: gimple gimple_build_nop (void)
!      Build a â€˜GIMPLE_NOPâ€™ statement.
  
   -- GIMPLE function: bool gimple_nop_p (gimple g)
!      Returns â€˜TRUEâ€™ if statement â€˜Gâ€™ is a â€˜GIMPLE_NOPâ€™.
  
  
  File: gccint.info,  Node: GIMPLE_OMP_ATOMIC_LOAD,  Next: GIMPLE_OMP_ATOMIC_STORE,  Prev: GIMPLE_NOP,  Up: Tuple specific accessors
  
! 11.8.12 â€˜GIMPLE_OMP_ATOMIC_LOADâ€™
  --------------------------------
  
   -- GIMPLE function: gomp_atomic_load *gimple_build_omp_atomic_load (
            tree lhs, tree rhs)
!      Build a â€˜GIMPLE_OMP_ATOMIC_LOADâ€™ statement.  â€˜LHSâ€™ is the left-hand
!      side of the assignment.  â€˜RHSâ€™ is the right-hand side of the
       assignment.
  
   -- GIMPLE function: void gimple_omp_atomic_load_set_lhs (
            gomp_atomic_load *g, tree lhs)
!      Set the â€˜LHSâ€™ of an atomic load.
  
   -- GIMPLE function: tree gimple_omp_atomic_load_lhs ( const
            gomp_atomic_load *g)
!      Get the â€˜LHSâ€™ of an atomic load.
  
   -- GIMPLE function: void gimple_omp_atomic_load_set_rhs (
            gomp_atomic_load *g, tree rhs)
!      Set the â€˜RHSâ€™ of an atomic set.
  
   -- GIMPLE function: tree gimple_omp_atomic_load_rhs ( const
            gomp_atomic_load *g)
!      Get the â€˜RHSâ€™ of an atomic set.
  
  
  File: gccint.info,  Node: GIMPLE_OMP_ATOMIC_STORE,  Next: GIMPLE_OMP_CONTINUE,  Prev: GIMPLE_OMP_ATOMIC_LOAD,  Up: Tuple specific accessors
  
! 11.8.13 â€˜GIMPLE_OMP_ATOMIC_STOREâ€™
  ---------------------------------
  
   -- GIMPLE function: gomp_atomic_store *gimple_build_omp_atomic_store (
            tree val)
!      Build a â€˜GIMPLE_OMP_ATOMIC_STOREâ€™ statement.  â€˜VALâ€™ is the value to
       be stored.
  
   -- GIMPLE function: void gimple_omp_atomic_store_set_val (
*************** File: gccint.info,  Node: GIMPLE_OMP_ATO
*** 15454,15472 ****
  
  File: gccint.info,  Node: GIMPLE_OMP_CONTINUE,  Next: GIMPLE_OMP_CRITICAL,  Prev: GIMPLE_OMP_ATOMIC_STORE,  Up: Tuple specific accessors
  
! 11.8.14 'GIMPLE_OMP_CONTINUE'
  -----------------------------
  
   -- GIMPLE function: gomp_continue *gimple_build_omp_continue ( tree
            control_def, tree control_use)
!      Build a 'GIMPLE_OMP_CONTINUE' statement.  'CONTROL_DEF' is the
!      definition of the control variable.  'CONTROL_USE' is the use of
       the control variable.
  
   -- GIMPLE function: tree gimple_omp_continue_control_def ( const
            gomp_continue *s)
       Return the definition of the control variable on a
!      'GIMPLE_OMP_CONTINUE' in 'S'.
  
   -- GIMPLE function: tree gimple_omp_continue_control_def_ptr (
            gomp_continue *s)
--- 15459,15477 ----
  
  File: gccint.info,  Node: GIMPLE_OMP_CONTINUE,  Next: GIMPLE_OMP_CRITICAL,  Prev: GIMPLE_OMP_ATOMIC_STORE,  Up: Tuple specific accessors
  
! 11.8.14 â€˜GIMPLE_OMP_CONTINUEâ€™
  -----------------------------
  
   -- GIMPLE function: gomp_continue *gimple_build_omp_continue ( tree
            control_def, tree control_use)
!      Build a â€˜GIMPLE_OMP_CONTINUEâ€™ statement.  â€˜CONTROL_DEFâ€™ is the
!      definition of the control variable.  â€˜CONTROL_USEâ€™ is the use of
       the control variable.
  
   -- GIMPLE function: tree gimple_omp_continue_control_def ( const
            gomp_continue *s)
       Return the definition of the control variable on a
!      â€˜GIMPLE_OMP_CONTINUEâ€™ in â€˜Sâ€™.
  
   -- GIMPLE function: tree gimple_omp_continue_control_def_ptr (
            gomp_continue *s)
*************** File: gccint.info,  Node: GIMPLE_OMP_CON
*** 15474,15486 ****
  
   -- GIMPLE function: tree gimple_omp_continue_set_control_def (
            gomp_continue *s)
!      Set the control variable definition for a 'GIMPLE_OMP_CONTINUE'
!      statement in 'S'.
  
   -- GIMPLE function: tree gimple_omp_continue_control_use ( const
            gomp_continue *s)
!      Return the use of the control variable on a 'GIMPLE_OMP_CONTINUE'
!      in 'S'.
  
   -- GIMPLE function: tree gimple_omp_continue_control_use_ptr (
            gomp_continue *s)
--- 15479,15491 ----
  
   -- GIMPLE function: tree gimple_omp_continue_set_control_def (
            gomp_continue *s)
!      Set the control variable definition for a â€˜GIMPLE_OMP_CONTINUEâ€™
!      statement in â€˜Sâ€™.
  
   -- GIMPLE function: tree gimple_omp_continue_control_use ( const
            gomp_continue *s)
!      Return the use of the control variable on a â€˜GIMPLE_OMP_CONTINUEâ€™
!      in â€˜Sâ€™.
  
   -- GIMPLE function: tree gimple_omp_continue_control_use_ptr (
            gomp_continue *s)
*************** File: gccint.info,  Node: GIMPLE_OMP_CON
*** 15488,15918 ****
  
   -- GIMPLE function: tree gimple_omp_continue_set_control_use (
            gomp_continue *s)
!      Set the control variable use for a 'GIMPLE_OMP_CONTINUE' statement
!      in 'S'.
  
  
  File: gccint.info,  Node: GIMPLE_OMP_CRITICAL,  Next: GIMPLE_OMP_FOR,  Prev: GIMPLE_OMP_CONTINUE,  Up: Tuple specific accessors
  
! 11.8.15 'GIMPLE_OMP_CRITICAL'
  -----------------------------
  
   -- GIMPLE function: gomp_critical *gimple_build_omp_critical (
            gimple_seq body, tree name)
!      Build a 'GIMPLE_OMP_CRITICAL' statement.  'BODY' is the sequence of
!      statements for which only one thread can execute.  'NAME' is an
       optional identifier for this critical block.
  
   -- GIMPLE function: tree gimple_omp_critical_name ( const gomp_critical
            *g)
!      Return the name associated with 'OMP_CRITICAL' statement 'G'.
  
   -- GIMPLE function: tree * gimple_omp_critical_name_ptr ( gomp_critical
            *g)
!      Return a pointer to the name associated with 'OMP' critical
!      statement 'G'.
  
   -- GIMPLE function: void gimple_omp_critical_set_name ( gomp_critical
            *g, tree name)
!      Set 'NAME' to be the name associated with 'OMP' critical statement
!      'G'.
  
  
  File: gccint.info,  Node: GIMPLE_OMP_FOR,  Next: GIMPLE_OMP_MASTER,  Prev: GIMPLE_OMP_CRITICAL,  Up: Tuple specific accessors
  
! 11.8.16 'GIMPLE_OMP_FOR'
  ------------------------
  
   -- GIMPLE function: gomp_for *gimple_build_omp_for (gimple_seq body,
            tree clauses, tree index, tree initial, tree final, tree incr,
            gimple_seq pre_body, enum tree_code omp_for_cond)
!      Build a 'GIMPLE_OMP_FOR' statement.  'BODY' is sequence of
!      statements inside the for loop.  'CLAUSES', are any of the loop
!      construct's clauses.  'PRE_BODY' is the sequence of statements that
!      are loop invariant.  'INDEX' is the index variable.  'INITIAL' is
!      the initial value of 'INDEX'.  'FINAL' is final value of 'INDEX'.
!      OMP_FOR_COND is the predicate used to compare 'INDEX' and 'FINAL'.
!      'INCR' is the increment expression.
  
   -- GIMPLE function: tree gimple_omp_for_clauses (gimple g)
!      Return the clauses associated with 'OMP_FOR' 'G'.
  
   -- GIMPLE function: tree * gimple_omp_for_clauses_ptr (gimple g)
!      Return a pointer to the 'OMP_FOR' 'G'.
  
   -- GIMPLE function: void gimple_omp_for_set_clauses (gimple g, tree
            clauses)
!      Set 'CLAUSES' to be the list of clauses associated with 'OMP_FOR'
!      'G'.
  
   -- GIMPLE function: tree gimple_omp_for_index (gimple g)
!      Return the index variable for 'OMP_FOR' 'G'.
  
   -- GIMPLE function: tree * gimple_omp_for_index_ptr (gimple g)
!      Return a pointer to the index variable for 'OMP_FOR' 'G'.
  
   -- GIMPLE function: void gimple_omp_for_set_index (gimple g, tree
            index)
!      Set 'INDEX' to be the index variable for 'OMP_FOR' 'G'.
  
   -- GIMPLE function: tree gimple_omp_for_initial (gimple g)
!      Return the initial value for 'OMP_FOR' 'G'.
  
   -- GIMPLE function: tree * gimple_omp_for_initial_ptr (gimple g)
!      Return a pointer to the initial value for 'OMP_FOR' 'G'.
  
   -- GIMPLE function: void gimple_omp_for_set_initial (gimple g, tree
            initial)
!      Set 'INITIAL' to be the initial value for 'OMP_FOR' 'G'.
  
   -- GIMPLE function: tree gimple_omp_for_final (gimple g)
!      Return the final value for 'OMP_FOR' 'G'.
  
   -- GIMPLE function: tree * gimple_omp_for_final_ptr (gimple g)
!      turn a pointer to the final value for 'OMP_FOR' 'G'.
  
   -- GIMPLE function: void gimple_omp_for_set_final (gimple g, tree
            final)
!      Set 'FINAL' to be the final value for 'OMP_FOR' 'G'.
  
   -- GIMPLE function: tree gimple_omp_for_incr (gimple g)
!      Return the increment value for 'OMP_FOR' 'G'.
  
   -- GIMPLE function: tree * gimple_omp_for_incr_ptr (gimple g)
!      Return a pointer to the increment value for 'OMP_FOR' 'G'.
  
   -- GIMPLE function: void gimple_omp_for_set_incr (gimple g, tree incr)
!      Set 'INCR' to be the increment value for 'OMP_FOR' 'G'.
  
   -- GIMPLE function: gimple_seq gimple_omp_for_pre_body (gimple g)
!      Return the sequence of statements to execute before the 'OMP_FOR'
!      statement 'G' starts.
  
   -- GIMPLE function: void gimple_omp_for_set_pre_body (gimple g,
            gimple_seq pre_body)
!      Set 'PRE_BODY' to be the sequence of statements to execute before
!      the 'OMP_FOR' statement 'G' starts.
  
   -- GIMPLE function: void gimple_omp_for_set_cond (gimple g, enum
            tree_code cond)
!      Set 'COND' to be the condition code for 'OMP_FOR' 'G'.
  
   -- GIMPLE function: enum tree_code gimple_omp_for_cond (gimple g)
!      Return the condition code associated with 'OMP_FOR' 'G'.
  
  
  File: gccint.info,  Node: GIMPLE_OMP_MASTER,  Next: GIMPLE_OMP_ORDERED,  Prev: GIMPLE_OMP_FOR,  Up: Tuple specific accessors
  
! 11.8.17 'GIMPLE_OMP_MASTER'
  ---------------------------
  
   -- GIMPLE function: gimple gimple_build_omp_master (gimple_seq body)
!      Build a 'GIMPLE_OMP_MASTER' statement.  'BODY' is the sequence of
       statements to be executed by just the master.
  
  
  File: gccint.info,  Node: GIMPLE_OMP_ORDERED,  Next: GIMPLE_OMP_PARALLEL,  Prev: GIMPLE_OMP_MASTER,  Up: Tuple specific accessors
  
! 11.8.18 'GIMPLE_OMP_ORDERED'
  ----------------------------
  
   -- GIMPLE function: gimple gimple_build_omp_ordered (gimple_seq body)
!      Build a 'GIMPLE_OMP_ORDERED' statement.
  
!      'BODY' is the sequence of statements inside a loop that will
       executed in sequence.
  
  
  File: gccint.info,  Node: GIMPLE_OMP_PARALLEL,  Next: GIMPLE_OMP_RETURN,  Prev: GIMPLE_OMP_ORDERED,  Up: Tuple specific accessors
  
! 11.8.19 'GIMPLE_OMP_PARALLEL'
  -----------------------------
  
   -- GIMPLE function: gomp_parallel *gimple_build_omp_parallel
            (gimple_seq body, tree clauses, tree child_fn, tree data_arg)
!      Build a 'GIMPLE_OMP_PARALLEL' statement.
  
!      'BODY' is sequence of statements which are executed in parallel.
!      'CLAUSES', are the 'OMP' parallel construct's clauses.  'CHILD_FN'
       is the function created for the parallel threads to execute.
!      'DATA_ARG' are the shared data argument(s).
  
   -- GIMPLE function: bool gimple_omp_parallel_combined_p (gimple g)
!      Return true if 'OMP' parallel statement 'G' has the
!      'GF_OMP_PARALLEL_COMBINED' flag set.
  
   -- GIMPLE function: void gimple_omp_parallel_set_combined_p (gimple g)
!      Set the 'GF_OMP_PARALLEL_COMBINED' field in 'OMP' parallel
!      statement 'G'.
  
   -- GIMPLE function: gimple_seq gimple_omp_body (gimple g)
!      Return the body for the 'OMP' statement 'G'.
  
   -- GIMPLE function: void gimple_omp_set_body (gimple g, gimple_seq
            body)
!      Set 'BODY' to be the body for the 'OMP' statement 'G'.
  
   -- GIMPLE function: tree gimple_omp_parallel_clauses (gimple g)
!      Return the clauses associated with 'OMP_PARALLEL' 'G'.
  
   -- GIMPLE function: tree * gimple_omp_parallel_clauses_ptr (
            gomp_parallel *g)
!      Return a pointer to the clauses associated with 'OMP_PARALLEL' 'G'.
  
   -- GIMPLE function: void gimple_omp_parallel_set_clauses (
            gomp_parallel *g, tree clauses)
!      Set 'CLAUSES' to be the list of clauses associated with
!      'OMP_PARALLEL' 'G'.
  
   -- GIMPLE function: tree gimple_omp_parallel_child_fn ( const
            gomp_parallel *g)
!      Return the child function used to hold the body of 'OMP_PARALLEL'
!      'G'.
  
   -- GIMPLE function: tree * gimple_omp_parallel_child_fn_ptr (
            gomp_parallel *g)
       Return a pointer to the child function used to hold the body of
!      'OMP_PARALLEL' 'G'.
  
   -- GIMPLE function: void gimple_omp_parallel_set_child_fn (
            gomp_parallel *g, tree child_fn)
!      Set 'CHILD_FN' to be the child function for 'OMP_PARALLEL' 'G'.
  
   -- GIMPLE function: tree gimple_omp_parallel_data_arg ( const
            gomp_parallel *g)
       Return the artificial argument used to send variables and values
!      from the parent to the children threads in 'OMP_PARALLEL' 'G'.
  
   -- GIMPLE function: tree * gimple_omp_parallel_data_arg_ptr (
            gomp_parallel *g)
!      Return a pointer to the data argument for 'OMP_PARALLEL' 'G'.
  
   -- GIMPLE function: void gimple_omp_parallel_set_data_arg (
            gomp_parallel *g, tree data_arg)
!      Set 'DATA_ARG' to be the data argument for 'OMP_PARALLEL' 'G'.
  
  
  File: gccint.info,  Node: GIMPLE_OMP_RETURN,  Next: GIMPLE_OMP_SECTION,  Prev: GIMPLE_OMP_PARALLEL,  Up: Tuple specific accessors
  
! 11.8.20 'GIMPLE_OMP_RETURN'
  ---------------------------
  
   -- GIMPLE function: gimple gimple_build_omp_return (bool wait_p)
!      Build a 'GIMPLE_OMP_RETURN' statement.  'WAIT_P' is true if this is
       a non-waiting return.
  
   -- GIMPLE function: void gimple_omp_return_set_nowait (gimple s)
!      Set the nowait flag on 'GIMPLE_OMP_RETURN' statement 'S'.
  
   -- GIMPLE function: bool gimple_omp_return_nowait_p (gimple g)
!      Return true if 'OMP' return statement 'G' has the
!      'GF_OMP_RETURN_NOWAIT' flag set.
  
  
  File: gccint.info,  Node: GIMPLE_OMP_SECTION,  Next: GIMPLE_OMP_SECTIONS,  Prev: GIMPLE_OMP_RETURN,  Up: Tuple specific accessors
  
! 11.8.21 'GIMPLE_OMP_SECTION'
  ----------------------------
  
   -- GIMPLE function: gimple gimple_build_omp_section (gimple_seq body)
!      Build a 'GIMPLE_OMP_SECTION' statement for a sections statement.
  
!      'BODY' is the sequence of statements in the section.
  
   -- GIMPLE function: bool gimple_omp_section_last_p (gimple g)
!      Return true if 'OMP' section statement 'G' has the
!      'GF_OMP_SECTION_LAST' flag set.
  
   -- GIMPLE function: void gimple_omp_section_set_last (gimple g)
!      Set the 'GF_OMP_SECTION_LAST' flag on 'G'.
  
  
  File: gccint.info,  Node: GIMPLE_OMP_SECTIONS,  Next: GIMPLE_OMP_SINGLE,  Prev: GIMPLE_OMP_SECTION,  Up: Tuple specific accessors
  
! 11.8.22 'GIMPLE_OMP_SECTIONS'
  -----------------------------
  
   -- GIMPLE function: gomp_sections *gimple_build_omp_sections (
            gimple_seq body, tree clauses)
!      Build a 'GIMPLE_OMP_SECTIONS' statement.  'BODY' is a sequence of
!      section statements.  'CLAUSES' are any of the 'OMP' sections
       construct's clauses: private, firstprivate, lastprivate, reduction,
       and nowait.
  
   -- GIMPLE function: gimple gimple_build_omp_sections_switch (void)
!      Build a 'GIMPLE_OMP_SECTIONS_SWITCH' statement.
  
   -- GIMPLE function: tree gimple_omp_sections_control (gimple g)
       Return the control variable associated with the
!      'GIMPLE_OMP_SECTIONS' in 'G'.
  
   -- GIMPLE function: tree * gimple_omp_sections_control_ptr (gimple g)
       Return a pointer to the clauses associated with the
!      'GIMPLE_OMP_SECTIONS' in 'G'.
  
   -- GIMPLE function: void gimple_omp_sections_set_control (gimple g,
            tree control)
!      Set 'CONTROL' to be the set of clauses associated with the
!      'GIMPLE_OMP_SECTIONS' in 'G'.
  
   -- GIMPLE function: tree gimple_omp_sections_clauses (gimple g)
!      Return the clauses associated with 'OMP_SECTIONS' 'G'.
  
   -- GIMPLE function: tree * gimple_omp_sections_clauses_ptr (gimple g)
!      Return a pointer to the clauses associated with 'OMP_SECTIONS' 'G'.
  
   -- GIMPLE function: void gimple_omp_sections_set_clauses (gimple g,
            tree clauses)
!      Set 'CLAUSES' to be the set of clauses associated with
!      'OMP_SECTIONS' 'G'.
  
  
  File: gccint.info,  Node: GIMPLE_OMP_SINGLE,  Next: GIMPLE_OMP_STRUCTURED_BLOCK,  Prev: GIMPLE_OMP_SECTIONS,  Up: Tuple specific accessors
  
! 11.8.23 'GIMPLE_OMP_SINGLE'
  ---------------------------
  
   -- GIMPLE function: gomp_single *gimple_build_omp_single ( gimple_seq
            body, tree clauses)
!      Build a 'GIMPLE_OMP_SINGLE' statement.  'BODY' is the sequence of
!      statements that will be executed once.  'CLAUSES' are any of the
!      'OMP' single construct's clauses: private, firstprivate,
       copyprivate, nowait.
  
   -- GIMPLE function: tree gimple_omp_single_clauses (gimple g)
!      Return the clauses associated with 'OMP_SINGLE' 'G'.
  
   -- GIMPLE function: tree * gimple_omp_single_clauses_ptr (gimple g)
!      Return a pointer to the clauses associated with 'OMP_SINGLE' 'G'.
  
   -- GIMPLE function: void gimple_omp_single_set_clauses ( gomp_single
            *g, tree clauses)
!      Set 'CLAUSES' to be the clauses associated with 'OMP_SINGLE' 'G'.
  
  
  File: gccint.info,  Node: GIMPLE_OMP_STRUCTURED_BLOCK,  Next: GIMPLE_PHI,  Prev: GIMPLE_OMP_SINGLE,  Up: Tuple specific accessors
  
! 11.8.24 'GIMPLE_OMP_STRUCTURED_BLOCK'
  -------------------------------------
  
! Like the GENERIC equivalent 'OMP_STRUCTURED_BLOCK', this GIMPLE
  statement does not correspond directly to an OpenMP directive, and
  exists only to permit error checking of transfers of control in/out of
! structured block sequences (the 'diagnose_omp_blocks' pass in
! 'omp-low.cc').  All 'GIMPLE_OMP_STRUCTURED_BLOCK' nodes are eliminated
  during OpenMP lowering.
  
   -- GIMPLE function: gimple gimple_build_omp_structured_block
            (gimple_seq body)
!      Build a 'GIMPLE_OMP_STRUCTURED_BLOCK' statement.  'BODY' is the
       sequence of statements in the structured block sequence.
  
  
  File: gccint.info,  Node: GIMPLE_PHI,  Next: GIMPLE_RESX,  Prev: GIMPLE_OMP_STRUCTURED_BLOCK,  Up: Tuple specific accessors
  
! 11.8.25 'GIMPLE_PHI'
  --------------------
  
   -- GIMPLE function: unsigned gimple_phi_capacity (gimple g)
!      Return the maximum number of arguments supported by 'GIMPLE_PHI'
!      'G'.
  
   -- GIMPLE function: unsigned gimple_phi_num_args (gimple g)
!      Return the number of arguments in 'GIMPLE_PHI' 'G'.  This must
       always be exactly the number of incoming edges for the basic block
!      holding 'G'.
  
   -- GIMPLE function: tree gimple_phi_result (gimple g)
!      Return the 'SSA' name created by 'GIMPLE_PHI' 'G'.
  
   -- GIMPLE function: tree * gimple_phi_result_ptr (gimple g)
!      Return a pointer to the 'SSA' name created by 'GIMPLE_PHI' 'G'.
  
   -- GIMPLE function: void gimple_phi_set_result (gphi *g, tree result)
!      Set 'RESULT' to be the 'SSA' name created by 'GIMPLE_PHI' 'G'.
  
   -- GIMPLE function: struct phi_arg_d * gimple_phi_arg (gimple g, index)
!      Return the 'PHI' argument corresponding to incoming edge 'INDEX'
!      for 'GIMPLE_PHI' 'G'.
  
   -- GIMPLE function: void gimple_phi_set_arg (gphi *g, index, struct
            phi_arg_d * phiarg)
!      Set 'PHIARG' to be the argument corresponding to incoming edge
!      'INDEX' for 'GIMPLE_PHI' 'G'.
  
  
  File: gccint.info,  Node: GIMPLE_RESX,  Next: GIMPLE_RETURN,  Prev: GIMPLE_PHI,  Up: Tuple specific accessors
  
! 11.8.26 'GIMPLE_RESX'
  ---------------------
  
   -- GIMPLE function: gresx *gimple_build_resx (int region)
!      Build a 'GIMPLE_RESX' statement which is a statement.  This
       statement is a placeholder for _Unwind_Resume before we know if a
!      function call or a branch is needed.  'REGION' is the exception
       region from which control is flowing.
  
   -- GIMPLE function: int gimple_resx_region (const gresx *g)
!      Return the region number for 'GIMPLE_RESX' 'G'.
  
   -- GIMPLE function: void gimple_resx_set_region (gresx *g, int region)
!      Set 'REGION' to be the region number for 'GIMPLE_RESX' 'G'.
  
  
  File: gccint.info,  Node: GIMPLE_RETURN,  Next: GIMPLE_SWITCH,  Prev: GIMPLE_RESX,  Up: Tuple specific accessors
  
! 11.8.27 'GIMPLE_RETURN'
  -----------------------
  
   -- GIMPLE function: greturn *gimple_build_return (tree retval)
!      Build a 'GIMPLE_RETURN' statement whose return value is retval.
  
   -- GIMPLE function: tree gimple_return_retval (const greturn *g)
!      Return the return value for 'GIMPLE_RETURN' 'G'.
  
   -- GIMPLE function: void gimple_return_set_retval (greturn *g, tree
            retval)
!      Set 'RETVAL' to be the return value for 'GIMPLE_RETURN' 'G'.
  
  
  File: gccint.info,  Node: GIMPLE_SWITCH,  Next: GIMPLE_TRY,  Prev: GIMPLE_RETURN,  Up: Tuple specific accessors
  
! 11.8.28 'GIMPLE_SWITCH'
  -----------------------
  
   -- GIMPLE function: gswitch *gimple_build_switch (tree index, tree
!           default_label, 'vec'<tree> *args)
!      Build a 'GIMPLE_SWITCH' statement.  'INDEX' is the index variable
!      to switch on, and 'DEFAULT_LABEL' represents the default label.
!      'ARGS' is a vector of 'CASE_LABEL_EXPR' trees that contain the
       non-default case labels.  Each label is a tree of code
!      'CASE_LABEL_EXPR'.
  
   -- GIMPLE function: unsigned gimple_switch_num_labels ( const gswitch
            *g)
       Return the number of labels associated with the switch statement
!      'G'.
  
   -- GIMPLE function: void gimple_switch_set_num_labels (gswitch *g,
            unsigned nlabels)
!      Set 'NLABELS' to be the number of labels for the switch statement
!      'G'.
  
   -- GIMPLE function: tree gimple_switch_index (const gswitch *g)
!      Return the index variable used by the switch statement 'G'.
  
   -- GIMPLE function: void gimple_switch_set_index (gswitch *g, tree
            index)
!      Set 'INDEX' to be the index variable for switch statement 'G'.
  
   -- GIMPLE function: tree gimple_switch_label (const gswitch *g,
            unsigned index)
!      Return the label numbered 'INDEX'.  The default label is 0,
       followed by any labels in a switch statement.
  
   -- GIMPLE function: void gimple_switch_set_label (gswitch *g, unsigned
            index, tree label)
!      Set the label number 'INDEX' to 'LABEL'.  0 is always the default
       label.
  
   -- GIMPLE function: tree gimple_switch_default_label ( const gswitch
--- 15493,15923 ----
  
   -- GIMPLE function: tree gimple_omp_continue_set_control_use (
            gomp_continue *s)
!      Set the control variable use for a â€˜GIMPLE_OMP_CONTINUEâ€™ statement
!      in â€˜Sâ€™.
  
  
  File: gccint.info,  Node: GIMPLE_OMP_CRITICAL,  Next: GIMPLE_OMP_FOR,  Prev: GIMPLE_OMP_CONTINUE,  Up: Tuple specific accessors
  
! 11.8.15 â€˜GIMPLE_OMP_CRITICALâ€™
  -----------------------------
  
   -- GIMPLE function: gomp_critical *gimple_build_omp_critical (
            gimple_seq body, tree name)
!      Build a â€˜GIMPLE_OMP_CRITICALâ€™ statement.  â€˜BODYâ€™ is the sequence of
!      statements for which only one thread can execute.  â€˜NAMEâ€™ is an
       optional identifier for this critical block.
  
   -- GIMPLE function: tree gimple_omp_critical_name ( const gomp_critical
            *g)
!      Return the name associated with â€˜OMP_CRITICALâ€™ statement â€˜Gâ€™.
  
   -- GIMPLE function: tree * gimple_omp_critical_name_ptr ( gomp_critical
            *g)
!      Return a pointer to the name associated with â€˜OMPâ€™ critical
!      statement â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_omp_critical_set_name ( gomp_critical
            *g, tree name)
!      Set â€˜NAMEâ€™ to be the name associated with â€˜OMPâ€™ critical statement
!      â€˜Gâ€™.
  
  
  File: gccint.info,  Node: GIMPLE_OMP_FOR,  Next: GIMPLE_OMP_MASTER,  Prev: GIMPLE_OMP_CRITICAL,  Up: Tuple specific accessors
  
! 11.8.16 â€˜GIMPLE_OMP_FORâ€™
  ------------------------
  
   -- GIMPLE function: gomp_for *gimple_build_omp_for (gimple_seq body,
            tree clauses, tree index, tree initial, tree final, tree incr,
            gimple_seq pre_body, enum tree_code omp_for_cond)
!      Build a â€˜GIMPLE_OMP_FORâ€™ statement.  â€˜BODYâ€™ is sequence of
!      statements inside the for loop.  â€˜CLAUSESâ€™, are any of the loop
!      construct's clauses.  â€˜PRE_BODYâ€™ is the sequence of statements that
!      are loop invariant.  â€˜INDEXâ€™ is the index variable.  â€˜INITIALâ€™ is
!      the initial value of â€˜INDEXâ€™.  â€˜FINALâ€™ is final value of â€˜INDEXâ€™.
!      OMP_FOR_COND is the predicate used to compare â€˜INDEXâ€™ and â€˜FINALâ€™.
!      â€˜INCRâ€™ is the increment expression.
  
   -- GIMPLE function: tree gimple_omp_for_clauses (gimple g)
!      Return the clauses associated with â€˜OMP_FORâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: tree * gimple_omp_for_clauses_ptr (gimple g)
!      Return a pointer to the â€˜OMP_FORâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_omp_for_set_clauses (gimple g, tree
            clauses)
!      Set â€˜CLAUSESâ€™ to be the list of clauses associated with â€˜OMP_FORâ€™
!      â€˜Gâ€™.
  
   -- GIMPLE function: tree gimple_omp_for_index (gimple g)
!      Return the index variable for â€˜OMP_FORâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: tree * gimple_omp_for_index_ptr (gimple g)
!      Return a pointer to the index variable for â€˜OMP_FORâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_omp_for_set_index (gimple g, tree
            index)
!      Set â€˜INDEXâ€™ to be the index variable for â€˜OMP_FORâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: tree gimple_omp_for_initial (gimple g)
!      Return the initial value for â€˜OMP_FORâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: tree * gimple_omp_for_initial_ptr (gimple g)
!      Return a pointer to the initial value for â€˜OMP_FORâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_omp_for_set_initial (gimple g, tree
            initial)
!      Set â€˜INITIALâ€™ to be the initial value for â€˜OMP_FORâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: tree gimple_omp_for_final (gimple g)
!      Return the final value for â€˜OMP_FORâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: tree * gimple_omp_for_final_ptr (gimple g)
!      turn a pointer to the final value for â€˜OMP_FORâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_omp_for_set_final (gimple g, tree
            final)
!      Set â€˜FINALâ€™ to be the final value for â€˜OMP_FORâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: tree gimple_omp_for_incr (gimple g)
!      Return the increment value for â€˜OMP_FORâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: tree * gimple_omp_for_incr_ptr (gimple g)
!      Return a pointer to the increment value for â€˜OMP_FORâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_omp_for_set_incr (gimple g, tree incr)
!      Set â€˜INCRâ€™ to be the increment value for â€˜OMP_FORâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: gimple_seq gimple_omp_for_pre_body (gimple g)
!      Return the sequence of statements to execute before the â€˜OMP_FORâ€™
!      statement â€˜Gâ€™ starts.
  
   -- GIMPLE function: void gimple_omp_for_set_pre_body (gimple g,
            gimple_seq pre_body)
!      Set â€˜PRE_BODYâ€™ to be the sequence of statements to execute before
!      the â€˜OMP_FORâ€™ statement â€˜Gâ€™ starts.
  
   -- GIMPLE function: void gimple_omp_for_set_cond (gimple g, enum
            tree_code cond)
!      Set â€˜CONDâ€™ to be the condition code for â€˜OMP_FORâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: enum tree_code gimple_omp_for_cond (gimple g)
!      Return the condition code associated with â€˜OMP_FORâ€™ â€˜Gâ€™.
  
  
  File: gccint.info,  Node: GIMPLE_OMP_MASTER,  Next: GIMPLE_OMP_ORDERED,  Prev: GIMPLE_OMP_FOR,  Up: Tuple specific accessors
  
! 11.8.17 â€˜GIMPLE_OMP_MASTERâ€™
  ---------------------------
  
   -- GIMPLE function: gimple gimple_build_omp_master (gimple_seq body)
!      Build a â€˜GIMPLE_OMP_MASTERâ€™ statement.  â€˜BODYâ€™ is the sequence of
       statements to be executed by just the master.
  
  
  File: gccint.info,  Node: GIMPLE_OMP_ORDERED,  Next: GIMPLE_OMP_PARALLEL,  Prev: GIMPLE_OMP_MASTER,  Up: Tuple specific accessors
  
! 11.8.18 â€˜GIMPLE_OMP_ORDEREDâ€™
  ----------------------------
  
   -- GIMPLE function: gimple gimple_build_omp_ordered (gimple_seq body)
!      Build a â€˜GIMPLE_OMP_ORDEREDâ€™ statement.
  
!      â€˜BODYâ€™ is the sequence of statements inside a loop that will
       executed in sequence.
  
  
  File: gccint.info,  Node: GIMPLE_OMP_PARALLEL,  Next: GIMPLE_OMP_RETURN,  Prev: GIMPLE_OMP_ORDERED,  Up: Tuple specific accessors
  
! 11.8.19 â€˜GIMPLE_OMP_PARALLELâ€™
  -----------------------------
  
   -- GIMPLE function: gomp_parallel *gimple_build_omp_parallel
            (gimple_seq body, tree clauses, tree child_fn, tree data_arg)
!      Build a â€˜GIMPLE_OMP_PARALLELâ€™ statement.
  
!      â€˜BODYâ€™ is sequence of statements which are executed in parallel.
!      â€˜CLAUSESâ€™, are the â€˜OMPâ€™ parallel construct's clauses.  â€˜CHILD_FNâ€™
       is the function created for the parallel threads to execute.
!      â€˜DATA_ARGâ€™ are the shared data argument(s).
  
   -- GIMPLE function: bool gimple_omp_parallel_combined_p (gimple g)
!      Return true if â€˜OMPâ€™ parallel statement â€˜Gâ€™ has the
!      â€˜GF_OMP_PARALLEL_COMBINEDâ€™ flag set.
  
   -- GIMPLE function: void gimple_omp_parallel_set_combined_p (gimple g)
!      Set the â€˜GF_OMP_PARALLEL_COMBINEDâ€™ field in â€˜OMPâ€™ parallel
!      statement â€˜Gâ€™.
  
   -- GIMPLE function: gimple_seq gimple_omp_body (gimple g)
!      Return the body for the â€˜OMPâ€™ statement â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_omp_set_body (gimple g, gimple_seq
            body)
!      Set â€˜BODYâ€™ to be the body for the â€˜OMPâ€™ statement â€˜Gâ€™.
  
   -- GIMPLE function: tree gimple_omp_parallel_clauses (gimple g)
!      Return the clauses associated with â€˜OMP_PARALLELâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: tree * gimple_omp_parallel_clauses_ptr (
            gomp_parallel *g)
!      Return a pointer to the clauses associated with â€˜OMP_PARALLELâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_omp_parallel_set_clauses (
            gomp_parallel *g, tree clauses)
!      Set â€˜CLAUSESâ€™ to be the list of clauses associated with
!      â€˜OMP_PARALLELâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: tree gimple_omp_parallel_child_fn ( const
            gomp_parallel *g)
!      Return the child function used to hold the body of â€˜OMP_PARALLELâ€™
!      â€˜Gâ€™.
  
   -- GIMPLE function: tree * gimple_omp_parallel_child_fn_ptr (
            gomp_parallel *g)
       Return a pointer to the child function used to hold the body of
!      â€˜OMP_PARALLELâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_omp_parallel_set_child_fn (
            gomp_parallel *g, tree child_fn)
!      Set â€˜CHILD_FNâ€™ to be the child function for â€˜OMP_PARALLELâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: tree gimple_omp_parallel_data_arg ( const
            gomp_parallel *g)
       Return the artificial argument used to send variables and values
!      from the parent to the children threads in â€˜OMP_PARALLELâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: tree * gimple_omp_parallel_data_arg_ptr (
            gomp_parallel *g)
!      Return a pointer to the data argument for â€˜OMP_PARALLELâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_omp_parallel_set_data_arg (
            gomp_parallel *g, tree data_arg)
!      Set â€˜DATA_ARGâ€™ to be the data argument for â€˜OMP_PARALLELâ€™ â€˜Gâ€™.
  
  
  File: gccint.info,  Node: GIMPLE_OMP_RETURN,  Next: GIMPLE_OMP_SECTION,  Prev: GIMPLE_OMP_PARALLEL,  Up: Tuple specific accessors
  
! 11.8.20 â€˜GIMPLE_OMP_RETURNâ€™
  ---------------------------
  
   -- GIMPLE function: gimple gimple_build_omp_return (bool wait_p)
!      Build a â€˜GIMPLE_OMP_RETURNâ€™ statement.  â€˜WAIT_Pâ€™ is true if this is
       a non-waiting return.
  
   -- GIMPLE function: void gimple_omp_return_set_nowait (gimple s)
!      Set the nowait flag on â€˜GIMPLE_OMP_RETURNâ€™ statement â€˜Sâ€™.
  
   -- GIMPLE function: bool gimple_omp_return_nowait_p (gimple g)
!      Return true if â€˜OMPâ€™ return statement â€˜Gâ€™ has the
!      â€˜GF_OMP_RETURN_NOWAITâ€™ flag set.
  
  
  File: gccint.info,  Node: GIMPLE_OMP_SECTION,  Next: GIMPLE_OMP_SECTIONS,  Prev: GIMPLE_OMP_RETURN,  Up: Tuple specific accessors
  
! 11.8.21 â€˜GIMPLE_OMP_SECTIONâ€™
  ----------------------------
  
   -- GIMPLE function: gimple gimple_build_omp_section (gimple_seq body)
!      Build a â€˜GIMPLE_OMP_SECTIONâ€™ statement for a sections statement.
  
!      â€˜BODYâ€™ is the sequence of statements in the section.
  
   -- GIMPLE function: bool gimple_omp_section_last_p (gimple g)
!      Return true if â€˜OMPâ€™ section statement â€˜Gâ€™ has the
!      â€˜GF_OMP_SECTION_LASTâ€™ flag set.
  
   -- GIMPLE function: void gimple_omp_section_set_last (gimple g)
!      Set the â€˜GF_OMP_SECTION_LASTâ€™ flag on â€˜Gâ€™.
  
  
  File: gccint.info,  Node: GIMPLE_OMP_SECTIONS,  Next: GIMPLE_OMP_SINGLE,  Prev: GIMPLE_OMP_SECTION,  Up: Tuple specific accessors
  
! 11.8.22 â€˜GIMPLE_OMP_SECTIONSâ€™
  -----------------------------
  
   -- GIMPLE function: gomp_sections *gimple_build_omp_sections (
            gimple_seq body, tree clauses)
!      Build a â€˜GIMPLE_OMP_SECTIONSâ€™ statement.  â€˜BODYâ€™ is a sequence of
!      section statements.  â€˜CLAUSESâ€™ are any of the â€˜OMPâ€™ sections
       construct's clauses: private, firstprivate, lastprivate, reduction,
       and nowait.
  
   -- GIMPLE function: gimple gimple_build_omp_sections_switch (void)
!      Build a â€˜GIMPLE_OMP_SECTIONS_SWITCHâ€™ statement.
  
   -- GIMPLE function: tree gimple_omp_sections_control (gimple g)
       Return the control variable associated with the
!      â€˜GIMPLE_OMP_SECTIONSâ€™ in â€˜Gâ€™.
  
   -- GIMPLE function: tree * gimple_omp_sections_control_ptr (gimple g)
       Return a pointer to the clauses associated with the
!      â€˜GIMPLE_OMP_SECTIONSâ€™ in â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_omp_sections_set_control (gimple g,
            tree control)
!      Set â€˜CONTROLâ€™ to be the set of clauses associated with the
!      â€˜GIMPLE_OMP_SECTIONSâ€™ in â€˜Gâ€™.
  
   -- GIMPLE function: tree gimple_omp_sections_clauses (gimple g)
!      Return the clauses associated with â€˜OMP_SECTIONSâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: tree * gimple_omp_sections_clauses_ptr (gimple g)
!      Return a pointer to the clauses associated with â€˜OMP_SECTIONSâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_omp_sections_set_clauses (gimple g,
            tree clauses)
!      Set â€˜CLAUSESâ€™ to be the set of clauses associated with
!      â€˜OMP_SECTIONSâ€™ â€˜Gâ€™.
  
  
  File: gccint.info,  Node: GIMPLE_OMP_SINGLE,  Next: GIMPLE_OMP_STRUCTURED_BLOCK,  Prev: GIMPLE_OMP_SECTIONS,  Up: Tuple specific accessors
  
! 11.8.23 â€˜GIMPLE_OMP_SINGLEâ€™
  ---------------------------
  
   -- GIMPLE function: gomp_single *gimple_build_omp_single ( gimple_seq
            body, tree clauses)
!      Build a â€˜GIMPLE_OMP_SINGLEâ€™ statement.  â€˜BODYâ€™ is the sequence of
!      statements that will be executed once.  â€˜CLAUSESâ€™ are any of the
!      â€˜OMPâ€™ single construct's clauses: private, firstprivate,
       copyprivate, nowait.
  
   -- GIMPLE function: tree gimple_omp_single_clauses (gimple g)
!      Return the clauses associated with â€˜OMP_SINGLEâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: tree * gimple_omp_single_clauses_ptr (gimple g)
!      Return a pointer to the clauses associated with â€˜OMP_SINGLEâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_omp_single_set_clauses ( gomp_single
            *g, tree clauses)
!      Set â€˜CLAUSESâ€™ to be the clauses associated with â€˜OMP_SINGLEâ€™ â€˜Gâ€™.
  
  
  File: gccint.info,  Node: GIMPLE_OMP_STRUCTURED_BLOCK,  Next: GIMPLE_PHI,  Prev: GIMPLE_OMP_SINGLE,  Up: Tuple specific accessors
  
! 11.8.24 â€˜GIMPLE_OMP_STRUCTURED_BLOCKâ€™
  -------------------------------------
  
! Like the GENERIC equivalent â€˜OMP_STRUCTURED_BLOCKâ€™, this GIMPLE
  statement does not correspond directly to an OpenMP directive, and
  exists only to permit error checking of transfers of control in/out of
! structured block sequences (the â€˜diagnose_omp_blocksâ€™ pass in
! â€˜omp-low.ccâ€™).  All â€˜GIMPLE_OMP_STRUCTURED_BLOCKâ€™ nodes are eliminated
  during OpenMP lowering.
  
   -- GIMPLE function: gimple gimple_build_omp_structured_block
            (gimple_seq body)
!      Build a â€˜GIMPLE_OMP_STRUCTURED_BLOCKâ€™ statement.  â€˜BODYâ€™ is the
       sequence of statements in the structured block sequence.
  
  
  File: gccint.info,  Node: GIMPLE_PHI,  Next: GIMPLE_RESX,  Prev: GIMPLE_OMP_STRUCTURED_BLOCK,  Up: Tuple specific accessors
  
! 11.8.25 â€˜GIMPLE_PHIâ€™
  --------------------
  
   -- GIMPLE function: unsigned gimple_phi_capacity (gimple g)
!      Return the maximum number of arguments supported by â€˜GIMPLE_PHIâ€™
!      â€˜Gâ€™.
  
   -- GIMPLE function: unsigned gimple_phi_num_args (gimple g)
!      Return the number of arguments in â€˜GIMPLE_PHIâ€™ â€˜Gâ€™.  This must
       always be exactly the number of incoming edges for the basic block
!      holding â€˜Gâ€™.
  
   -- GIMPLE function: tree gimple_phi_result (gimple g)
!      Return the â€˜SSAâ€™ name created by â€˜GIMPLE_PHIâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: tree * gimple_phi_result_ptr (gimple g)
!      Return a pointer to the â€˜SSAâ€™ name created by â€˜GIMPLE_PHIâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_phi_set_result (gphi *g, tree result)
!      Set â€˜RESULTâ€™ to be the â€˜SSAâ€™ name created by â€˜GIMPLE_PHIâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: struct phi_arg_d * gimple_phi_arg (gimple g, index)
!      Return the â€˜PHIâ€™ argument corresponding to incoming edge â€˜INDEXâ€™
!      for â€˜GIMPLE_PHIâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_phi_set_arg (gphi *g, index, struct
            phi_arg_d * phiarg)
!      Set â€˜PHIARGâ€™ to be the argument corresponding to incoming edge
!      â€˜INDEXâ€™ for â€˜GIMPLE_PHIâ€™ â€˜Gâ€™.
  
  
  File: gccint.info,  Node: GIMPLE_RESX,  Next: GIMPLE_RETURN,  Prev: GIMPLE_PHI,  Up: Tuple specific accessors
  
! 11.8.26 â€˜GIMPLE_RESXâ€™
  ---------------------
  
   -- GIMPLE function: gresx *gimple_build_resx (int region)
!      Build a â€˜GIMPLE_RESXâ€™ statement which is a statement.  This
       statement is a placeholder for _Unwind_Resume before we know if a
!      function call or a branch is needed.  â€˜REGIONâ€™ is the exception
       region from which control is flowing.
  
   -- GIMPLE function: int gimple_resx_region (const gresx *g)
!      Return the region number for â€˜GIMPLE_RESXâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_resx_set_region (gresx *g, int region)
!      Set â€˜REGIONâ€™ to be the region number for â€˜GIMPLE_RESXâ€™ â€˜Gâ€™.
  
  
  File: gccint.info,  Node: GIMPLE_RETURN,  Next: GIMPLE_SWITCH,  Prev: GIMPLE_RESX,  Up: Tuple specific accessors
  
! 11.8.27 â€˜GIMPLE_RETURNâ€™
  -----------------------
  
   -- GIMPLE function: greturn *gimple_build_return (tree retval)
!      Build a â€˜GIMPLE_RETURNâ€™ statement whose return value is retval.
  
   -- GIMPLE function: tree gimple_return_retval (const greturn *g)
!      Return the return value for â€˜GIMPLE_RETURNâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_return_set_retval (greturn *g, tree
            retval)
!      Set â€˜RETVALâ€™ to be the return value for â€˜GIMPLE_RETURNâ€™ â€˜Gâ€™.
  
  
  File: gccint.info,  Node: GIMPLE_SWITCH,  Next: GIMPLE_TRY,  Prev: GIMPLE_RETURN,  Up: Tuple specific accessors
  
! 11.8.28 â€˜GIMPLE_SWITCHâ€™
  -----------------------
  
   -- GIMPLE function: gswitch *gimple_build_switch (tree index, tree
!           default_label, vec<tree> *args)
!      Build a â€˜GIMPLE_SWITCHâ€™ statement.  â€˜INDEXâ€™ is the index variable
!      to switch on, and â€˜DEFAULT_LABELâ€™ represents the default label.
!      â€˜ARGSâ€™ is a vector of â€˜CASE_LABEL_EXPRâ€™ trees that contain the
       non-default case labels.  Each label is a tree of code
!      â€˜CASE_LABEL_EXPRâ€™.
  
   -- GIMPLE function: unsigned gimple_switch_num_labels ( const gswitch
            *g)
       Return the number of labels associated with the switch statement
!      â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_switch_set_num_labels (gswitch *g,
            unsigned nlabels)
!      Set â€˜NLABELSâ€™ to be the number of labels for the switch statement
!      â€˜Gâ€™.
  
   -- GIMPLE function: tree gimple_switch_index (const gswitch *g)
!      Return the index variable used by the switch statement â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_switch_set_index (gswitch *g, tree
            index)
!      Set â€˜INDEXâ€™ to be the index variable for switch statement â€˜Gâ€™.
  
   -- GIMPLE function: tree gimple_switch_label (const gswitch *g,
            unsigned index)
!      Return the label numbered â€˜INDEXâ€™.  The default label is 0,
       followed by any labels in a switch statement.
  
   -- GIMPLE function: void gimple_switch_set_label (gswitch *g, unsigned
            index, tree label)
!      Set the label number â€˜INDEXâ€™ to â€˜LABELâ€™.  0 is always the default
       label.
  
   -- GIMPLE function: tree gimple_switch_default_label ( const gswitch
*************** File: gccint.info,  Node: GIMPLE_SWITCH,
*** 15926,15994 ****
  
  File: gccint.info,  Node: GIMPLE_TRY,  Next: GIMPLE_WITH_CLEANUP_EXPR,  Prev: GIMPLE_SWITCH,  Up: Tuple specific accessors
  
! 11.8.29 'GIMPLE_TRY'
  --------------------
  
   -- GIMPLE function: gtry *gimple_build_try (gimple_seq eval, gimple_seq
            cleanup, unsigned int kind)
!      Build a 'GIMPLE_TRY' statement.  'EVAL' is a sequence with the
!      expression to evaluate.  'CLEANUP' is a sequence of statements to
!      run at clean-up time.  'KIND' is the enumeration value
!      'GIMPLE_TRY_CATCH' if this statement denotes a try/catch construct
!      or 'GIMPLE_TRY_FINALLY' if this statement denotes a try/finally
       construct.
  
   -- GIMPLE function: enum gimple_try_flags gimple_try_kind (gimple g)
!      Return the kind of try block represented by 'GIMPLE_TRY' 'G'.  This
!      is either 'GIMPLE_TRY_CATCH' or 'GIMPLE_TRY_FINALLY'.
  
   -- GIMPLE function: bool gimple_try_catch_is_cleanup (gimple g)
!      Return the 'GIMPLE_TRY_CATCH_IS_CLEANUP' flag.
  
   -- GIMPLE function: gimple_seq gimple_try_eval (gimple g)
!      Return the sequence of statements used as the body for 'GIMPLE_TRY'
!      'G'.
  
   -- GIMPLE function: gimple_seq gimple_try_cleanup (gimple g)
       Return the sequence of statements used as the cleanup body for
!      'GIMPLE_TRY' 'G'.
  
   -- GIMPLE function: void gimple_try_set_catch_is_cleanup (gimple g,
            bool catch_is_cleanup)
!      Set the 'GIMPLE_TRY_CATCH_IS_CLEANUP' flag.
  
   -- GIMPLE function: void gimple_try_set_eval (gtry *g, gimple_seq eval)
!      Set 'EVAL' to be the sequence of statements to use as the body for
!      'GIMPLE_TRY' 'G'.
  
   -- GIMPLE function: void gimple_try_set_cleanup (gtry *g, gimple_seq
            cleanup)
!      Set 'CLEANUP' to be the sequence of statements to use as the
!      cleanup body for 'GIMPLE_TRY' 'G'.
  
  
  File: gccint.info,  Node: GIMPLE_WITH_CLEANUP_EXPR,  Prev: GIMPLE_TRY,  Up: Tuple specific accessors
  
! 11.8.30 'GIMPLE_WITH_CLEANUP_EXPR'
  ----------------------------------
  
   -- GIMPLE function: gimple gimple_build_wce (gimple_seq cleanup)
!      Build a 'GIMPLE_WITH_CLEANUP_EXPR' statement.  'CLEANUP' is the
       clean-up expression.
  
   -- GIMPLE function: gimple_seq gimple_wce_cleanup (gimple g)
!      Return the cleanup sequence for cleanup statement 'G'.
  
   -- GIMPLE function: void gimple_wce_set_cleanup (gimple g, gimple_seq
            cleanup)
!      Set 'CLEANUP' to be the cleanup sequence for 'G'.
  
   -- GIMPLE function: bool gimple_wce_cleanup_eh_only (gimple g)
!      Return the 'CLEANUP_EH_ONLY' flag for a 'WCE' tuple.
  
   -- GIMPLE function: void gimple_wce_set_cleanup_eh_only (gimple g, bool
            eh_only_p)
!      Set the 'CLEANUP_EH_ONLY' flag for a 'WCE' tuple.
  
  
  File: gccint.info,  Node: GIMPLE sequences,  Next: Sequence iterators,  Prev: Tuple specific accessors,  Up: GIMPLE
--- 15931,15999 ----
  
  File: gccint.info,  Node: GIMPLE_TRY,  Next: GIMPLE_WITH_CLEANUP_EXPR,  Prev: GIMPLE_SWITCH,  Up: Tuple specific accessors
  
! 11.8.29 â€˜GIMPLE_TRYâ€™
  --------------------
  
   -- GIMPLE function: gtry *gimple_build_try (gimple_seq eval, gimple_seq
            cleanup, unsigned int kind)
!      Build a â€˜GIMPLE_TRYâ€™ statement.  â€˜EVALâ€™ is a sequence with the
!      expression to evaluate.  â€˜CLEANUPâ€™ is a sequence of statements to
!      run at clean-up time.  â€˜KINDâ€™ is the enumeration value
!      â€˜GIMPLE_TRY_CATCHâ€™ if this statement denotes a try/catch construct
!      or â€˜GIMPLE_TRY_FINALLYâ€™ if this statement denotes a try/finally
       construct.
  
   -- GIMPLE function: enum gimple_try_flags gimple_try_kind (gimple g)
!      Return the kind of try block represented by â€˜GIMPLE_TRYâ€™ â€˜Gâ€™.  This
!      is either â€˜GIMPLE_TRY_CATCHâ€™ or â€˜GIMPLE_TRY_FINALLYâ€™.
  
   -- GIMPLE function: bool gimple_try_catch_is_cleanup (gimple g)
!      Return the â€˜GIMPLE_TRY_CATCH_IS_CLEANUPâ€™ flag.
  
   -- GIMPLE function: gimple_seq gimple_try_eval (gimple g)
!      Return the sequence of statements used as the body for â€˜GIMPLE_TRYâ€™
!      â€˜Gâ€™.
  
   -- GIMPLE function: gimple_seq gimple_try_cleanup (gimple g)
       Return the sequence of statements used as the cleanup body for
!      â€˜GIMPLE_TRYâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_try_set_catch_is_cleanup (gimple g,
            bool catch_is_cleanup)
!      Set the â€˜GIMPLE_TRY_CATCH_IS_CLEANUPâ€™ flag.
  
   -- GIMPLE function: void gimple_try_set_eval (gtry *g, gimple_seq eval)
!      Set â€˜EVALâ€™ to be the sequence of statements to use as the body for
!      â€˜GIMPLE_TRYâ€™ â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_try_set_cleanup (gtry *g, gimple_seq
            cleanup)
!      Set â€˜CLEANUPâ€™ to be the sequence of statements to use as the
!      cleanup body for â€˜GIMPLE_TRYâ€™ â€˜Gâ€™.
  
  
  File: gccint.info,  Node: GIMPLE_WITH_CLEANUP_EXPR,  Prev: GIMPLE_TRY,  Up: Tuple specific accessors
  
! 11.8.30 â€˜GIMPLE_WITH_CLEANUP_EXPRâ€™
  ----------------------------------
  
   -- GIMPLE function: gimple gimple_build_wce (gimple_seq cleanup)
!      Build a â€˜GIMPLE_WITH_CLEANUP_EXPRâ€™ statement.  â€˜CLEANUPâ€™ is the
       clean-up expression.
  
   -- GIMPLE function: gimple_seq gimple_wce_cleanup (gimple g)
!      Return the cleanup sequence for cleanup statement â€˜Gâ€™.
  
   -- GIMPLE function: void gimple_wce_set_cleanup (gimple g, gimple_seq
            cleanup)
!      Set â€˜CLEANUPâ€™ to be the cleanup sequence for â€˜Gâ€™.
  
   -- GIMPLE function: bool gimple_wce_cleanup_eh_only (gimple g)
!      Return the â€˜CLEANUP_EH_ONLYâ€™ flag for a â€˜WCEâ€™ tuple.
  
   -- GIMPLE function: void gimple_wce_set_cleanup_eh_only (gimple g, bool
            eh_only_p)
!      Set the â€˜CLEANUP_EH_ONLYâ€™ flag for a â€˜WCEâ€™ tuple.
  
  
  File: gccint.info,  Node: GIMPLE sequences,  Next: Sequence iterators,  Prev: Tuple specific accessors,  Up: GIMPLE
*************** File: gccint.info,  Node: GIMPLE sequenc
*** 15996,16013 ****
  11.9 GIMPLE sequences
  =====================
  
! GIMPLE sequences are the tuple equivalent of 'STATEMENT_LIST''s used in
! 'GENERIC'.  They are used to chain statements together, and when used in
  conjunction with sequence iterators, provide a framework for iterating
  through statements.
  
!  GIMPLE sequences are of type struct 'gimple_sequence', but are more
  commonly passed by reference to functions dealing with sequences.  The
! type for a sequence pointer is 'gimple_seq' which is the same as struct
! 'gimple_sequence' *.  When declaring a local sequence, you can define a
! local variable of type struct 'gimple_sequence'.  When declaring a
  sequence allocated on the garbage collected heap, use the function
! 'gimple_seq_alloc' documented below.
  
   There are convenience functions for iterating through sequences in the
  section entitled Sequence Iterators.
--- 16001,16018 ----
  11.9 GIMPLE sequences
  =====================
  
! GIMPLE sequences are the tuple equivalent of â€˜STATEMENT_LISTâ€™'s used in
! â€˜GENERICâ€™.  They are used to chain statements together, and when used in
  conjunction with sequence iterators, provide a framework for iterating
  through statements.
  
!  GIMPLE sequences are of type struct â€˜gimple_sequenceâ€™, but are more
  commonly passed by reference to functions dealing with sequences.  The
! type for a sequence pointer is â€˜gimple_seqâ€™ which is the same as struct
! â€˜gimple_sequenceâ€™ *.  When declaring a local sequence, you can define a
! local variable of type struct â€˜gimple_sequenceâ€™.  When declaring a
  sequence allocated on the garbage collected heap, use the function
! â€˜gimple_seq_allocâ€™ documented below.
  
   There are convenience functions for iterating through sequences in the
  section entitled Sequence Iterators.
*************** section entitled Sequence Iterators.
*** 16016,16055 ****
  
   -- GIMPLE function: void gimple_seq_add_stmt (gimple_seq *seq, gimple
            g)
!      Link a gimple statement to the end of the sequence *'SEQ' if 'G' is
!      not 'NULL'.  If *'SEQ' is 'NULL', allocate a sequence before
       linking.
  
   -- GIMPLE function: void gimple_seq_add_seq (gimple_seq *dest,
            gimple_seq src)
!      Append sequence 'SRC' to the end of sequence *'DEST' if 'SRC' is
!      not 'NULL'.  If *'DEST' is 'NULL', allocate a new sequence before
       appending.
  
   -- GIMPLE function: gimple_seq gimple_seq_deep_copy (gimple_seq src)
!      Perform a deep copy of sequence 'SRC' and return the result.
  
   -- GIMPLE function: gimple_seq gimple_seq_reverse (gimple_seq seq)
!      Reverse the order of the statements in the sequence 'SEQ'.  Return
!      'SEQ'.
  
   -- GIMPLE function: gimple gimple_seq_first (gimple_seq s)
!      Return the first statement in sequence 'S'.
  
   -- GIMPLE function: gimple gimple_seq_last (gimple_seq s)
!      Return the last statement in sequence 'S'.
  
   -- GIMPLE function: void gimple_seq_set_last (gimple_seq s, gimple
            last)
!      Set the last statement in sequence 'S' to the statement in 'LAST'.
  
   -- GIMPLE function: void gimple_seq_set_first (gimple_seq s, gimple
            first)
!      Set the first statement in sequence 'S' to the statement in
!      'FIRST'.
  
   -- GIMPLE function: void gimple_seq_init (gimple_seq s)
!      Initialize sequence 'S' to an empty sequence.
  
   -- GIMPLE function: gimple_seq gimple_seq_alloc (void)
       Allocate a new sequence in the garbage collected store and return
--- 16021,16060 ----
  
   -- GIMPLE function: void gimple_seq_add_stmt (gimple_seq *seq, gimple
            g)
!      Link a gimple statement to the end of the sequence *â€˜SEQâ€™ if â€˜Gâ€™ is
!      not â€˜NULLâ€™.  If *â€˜SEQâ€™ is â€˜NULLâ€™, allocate a sequence before
       linking.
  
   -- GIMPLE function: void gimple_seq_add_seq (gimple_seq *dest,
            gimple_seq src)
!      Append sequence â€˜SRCâ€™ to the end of sequence *â€˜DESTâ€™ if â€˜SRCâ€™ is
!      not â€˜NULLâ€™.  If *â€˜DESTâ€™ is â€˜NULLâ€™, allocate a new sequence before
       appending.
  
   -- GIMPLE function: gimple_seq gimple_seq_deep_copy (gimple_seq src)
!      Perform a deep copy of sequence â€˜SRCâ€™ and return the result.
  
   -- GIMPLE function: gimple_seq gimple_seq_reverse (gimple_seq seq)
!      Reverse the order of the statements in the sequence â€˜SEQâ€™.  Return
!      â€˜SEQâ€™.
  
   -- GIMPLE function: gimple gimple_seq_first (gimple_seq s)
!      Return the first statement in sequence â€˜Sâ€™.
  
   -- GIMPLE function: gimple gimple_seq_last (gimple_seq s)
!      Return the last statement in sequence â€˜Sâ€™.
  
   -- GIMPLE function: void gimple_seq_set_last (gimple_seq s, gimple
            last)
!      Set the last statement in sequence â€˜Sâ€™ to the statement in â€˜LASTâ€™.
  
   -- GIMPLE function: void gimple_seq_set_first (gimple_seq s, gimple
            first)
!      Set the first statement in sequence â€˜Sâ€™ to the statement in
!      â€˜FIRSTâ€™.
  
   -- GIMPLE function: void gimple_seq_init (gimple_seq s)
!      Initialize sequence â€˜Sâ€™ to an empty sequence.
  
   -- GIMPLE function: gimple_seq gimple_seq_alloc (void)
       Allocate a new sequence in the garbage collected store and return
*************** section entitled Sequence Iterators.
*** 16057,16075 ****
  
   -- GIMPLE function: void gimple_seq_copy (gimple_seq dest, gimple_seq
            src)
!      Copy the sequence 'SRC' into the sequence 'DEST'.
  
   -- GIMPLE function: bool gimple_seq_empty_p (gimple_seq s)
!      Return true if the sequence 'S' is empty.
  
   -- GIMPLE function: gimple_seq bb_seq (basic_block bb)
!      Returns the sequence of statements in 'BB'.
  
   -- GIMPLE function: void set_bb_seq (basic_block bb, gimple_seq seq)
!      Sets the sequence of statements in 'BB' to 'SEQ'.
  
   -- GIMPLE function: bool gimple_seq_singleton_p (gimple_seq seq)
!      Determine whether 'SEQ' contains exactly one statement.
  
  
  File: gccint.info,  Node: Sequence iterators,  Next: Adding a new GIMPLE statement code,  Prev: GIMPLE sequences,  Up: GIMPLE
--- 16062,16080 ----
  
   -- GIMPLE function: void gimple_seq_copy (gimple_seq dest, gimple_seq
            src)
!      Copy the sequence â€˜SRCâ€™ into the sequence â€˜DESTâ€™.
  
   -- GIMPLE function: bool gimple_seq_empty_p (gimple_seq s)
!      Return true if the sequence â€˜Sâ€™ is empty.
  
   -- GIMPLE function: gimple_seq bb_seq (basic_block bb)
!      Returns the sequence of statements in â€˜BBâ€™.
  
   -- GIMPLE function: void set_bb_seq (basic_block bb, gimple_seq seq)
!      Sets the sequence of statements in â€˜BBâ€™ to â€˜SEQâ€™.
  
   -- GIMPLE function: bool gimple_seq_singleton_p (gimple_seq seq)
!      Determine whether â€˜SEQâ€™ contains exactly one statement.
  
  
  File: gccint.info,  Node: Sequence iterators,  Next: Adding a new GIMPLE statement code,  Prev: GIMPLE sequences,  Up: GIMPLE
*************** File: gccint.info,  Node: Sequence itera
*** 16078,16084 ****
  ========================
  
  Sequence iterators are convenience constructs for iterating through
! statements in a sequence.  Given a sequence 'SEQ', here is a typical use
  of gimple sequence iterators:
  
       gimple_stmt_iterator gsi;
--- 16083,16089 ----
  ========================
  
  Sequence iterators are convenience constructs for iterating through
! statements in a sequence.  Given a sequence â€˜SEQâ€™, here is a typical use
  of gimple sequence iterators:
  
       gimple_stmt_iterator gsi;
*************** of gimple sequence iterators:
*** 16094,16140 ****
               for (gsi = gsi_last (seq); !gsi_end_p (gsi); gsi_prev (&gsi))
  
   Forward and backward iterations on basic blocks are possible with
! 'gsi_start_bb' and 'gsi_last_bb'.
  
   In the documentation below we sometimes refer to enum
! 'gsi_iterator_update'.  The valid options for this enumeration are:
  
!    * 'GSI_NEW_STMT' Only valid when a single statement is added.  Move
       the iterator to it.
  
!    * 'GSI_SAME_STMT' Leave the iterator at the same statement.
  
!    * 'GSI_CONTINUE_LINKING' Move iterator to whatever position is
       suitable for linking other statements in the same direction.
  
   Below is a list of the functions used to manipulate and use statement
  iterators.
  
   -- GIMPLE function: gimple_stmt_iterator gsi_start (gimple_seq seq)
!      Return a new iterator pointing to the sequence 'SEQ''s first
!      statement.  If 'SEQ' is empty, the iterator's basic block is
!      'NULL'.  Use 'gsi_start_bb' instead when the iterator needs to
       always have the correct basic block set.
  
   -- GIMPLE function: gimple_stmt_iterator gsi_start_bb (basic_block bb)
       Return a new iterator pointing to the first statement in basic
!      block 'BB'.
  
   -- GIMPLE function: gimple_stmt_iterator gsi_last (gimple_seq seq)
       Return a new iterator initially pointing to the last statement of
!      sequence 'SEQ'.  If 'SEQ' is empty, the iterator's basic block is
!      'NULL'.  Use 'gsi_last_bb' instead when the iterator needs to
       always have the correct basic block set.
  
   -- GIMPLE function: gimple_stmt_iterator gsi_last_bb (basic_block bb)
       Return a new iterator pointing to the last statement in basic block
!      'BB'.
  
   -- GIMPLE function: bool gsi_end_p (gimple_stmt_iterator i)
!      Return 'TRUE' if at the end of 'I'.
  
   -- GIMPLE function: bool gsi_one_before_end_p (gimple_stmt_iterator i)
!      Return 'TRUE' if we're one statement before the end of 'I'.
  
   -- GIMPLE function: void gsi_next (gimple_stmt_iterator *i)
       Advance the iterator to the next gimple statement.
--- 16099,16145 ----
               for (gsi = gsi_last (seq); !gsi_end_p (gsi); gsi_prev (&gsi))
  
   Forward and backward iterations on basic blocks are possible with
! â€˜gsi_start_bbâ€™ and â€˜gsi_last_bbâ€™.
  
   In the documentation below we sometimes refer to enum
! â€˜gsi_iterator_updateâ€™.  The valid options for this enumeration are:
  
!    â€¢ â€˜GSI_NEW_STMTâ€™ Only valid when a single statement is added.  Move
       the iterator to it.
  
!    â€¢ â€˜GSI_SAME_STMTâ€™ Leave the iterator at the same statement.
  
!    â€¢ â€˜GSI_CONTINUE_LINKINGâ€™ Move iterator to whatever position is
       suitable for linking other statements in the same direction.
  
   Below is a list of the functions used to manipulate and use statement
  iterators.
  
   -- GIMPLE function: gimple_stmt_iterator gsi_start (gimple_seq seq)
!      Return a new iterator pointing to the sequence â€˜SEQâ€™'s first
!      statement.  If â€˜SEQâ€™ is empty, the iterator's basic block is
!      â€˜NULLâ€™.  Use â€˜gsi_start_bbâ€™ instead when the iterator needs to
       always have the correct basic block set.
  
   -- GIMPLE function: gimple_stmt_iterator gsi_start_bb (basic_block bb)
       Return a new iterator pointing to the first statement in basic
!      block â€˜BBâ€™.
  
   -- GIMPLE function: gimple_stmt_iterator gsi_last (gimple_seq seq)
       Return a new iterator initially pointing to the last statement of
!      sequence â€˜SEQâ€™.  If â€˜SEQâ€™ is empty, the iterator's basic block is
!      â€˜NULLâ€™.  Use â€˜gsi_last_bbâ€™ instead when the iterator needs to
       always have the correct basic block set.
  
   -- GIMPLE function: gimple_stmt_iterator gsi_last_bb (basic_block bb)
       Return a new iterator pointing to the last statement in basic block
!      â€˜BBâ€™.
  
   -- GIMPLE function: bool gsi_end_p (gimple_stmt_iterator i)
!      Return â€˜TRUEâ€™ if at the end of â€˜Iâ€™.
  
   -- GIMPLE function: bool gsi_one_before_end_p (gimple_stmt_iterator i)
!      Return â€˜TRUEâ€™ if we're one statement before the end of â€˜Iâ€™.
  
   -- GIMPLE function: void gsi_next (gimple_stmt_iterator *i)
       Advance the iterator to the next gimple statement.
*************** iterators.
*** 16148,16154 ****
   -- GIMPLE function: gimple_stmt_iterator gsi_after_labels (basic_block
            bb)
       Return a block statement iterator that points to the first
!      non-label statement in block 'BB'.
  
   -- GIMPLE function: gimple * gsi_stmt_ptr (gimple_stmt_iterator *i)
       Return a pointer to the current stmt.
--- 16153,16159 ----
   -- GIMPLE function: gimple_stmt_iterator gsi_after_labels (basic_block
            bb)
       Return a block statement iterator that points to the first
!      non-label statement in block â€˜BBâ€™.
  
   -- GIMPLE function: gimple * gsi_stmt_ptr (gimple_stmt_iterator *i)
       Return a pointer to the current stmt.
*************** iterators.
*** 16162,16268 ****
   -- GIMPLE function: void gsi_remove (gimple_stmt_iterator *i, bool
            remove_eh_info)
       Remove the current stmt from the sequence.  The iterator is updated
!      to point to the next statement.  When 'REMOVE_EH_INFO' is true we
!      remove the statement pointed to by iterator 'I' from the 'EH'
!      tables.  Otherwise we do not modify the 'EH' tables.  Generally,
!      'REMOVE_EH_INFO' should be true when the statement is going to be
!      removed from the 'IL' and not reinserted elsewhere.
  
   -- GIMPLE function: void gsi_link_seq_before (gimple_stmt_iterator *i,
            gimple_seq seq, enum gsi_iterator_update mode)
!      Links the sequence of statements 'SEQ' before the statement pointed
!      by iterator 'I'.  'MODE' indicates what to do with the iterator
!      after insertion (see 'enum gsi_iterator_update' above).
  
   -- GIMPLE function: void gsi_link_before (gimple_stmt_iterator *i,
            gimple g, enum gsi_iterator_update mode)
!      Links statement 'G' before the statement pointed-to by iterator
!      'I'.  Updates iterator 'I' according to 'MODE'.
  
   -- GIMPLE function: void gsi_link_seq_after (gimple_stmt_iterator *i,
            gimple_seq seq, enum gsi_iterator_update mode)
!      Links sequence 'SEQ' after the statement pointed-to by iterator
!      'I'.  'MODE' is as in 'gsi_insert_after'.
  
   -- GIMPLE function: void gsi_link_after (gimple_stmt_iterator *i,
            gimple g, enum gsi_iterator_update mode)
!      Links statement 'G' after the statement pointed-to by iterator 'I'.
!      'MODE' is as in 'gsi_insert_after'.
  
   -- GIMPLE function: gimple_seq gsi_split_seq_after
            (gimple_stmt_iterator i)
!      Move all statements in the sequence after 'I' to a new sequence.
       Return this new sequence.
  
   -- GIMPLE function: gimple_seq gsi_split_seq_before
            (gimple_stmt_iterator *i)
!      Move all statements in the sequence before 'I' to a new sequence.
       Return this new sequence.
  
   -- GIMPLE function: void gsi_replace (gimple_stmt_iterator *i, gimple
            stmt, bool update_eh_info)
!      Replace the statement pointed-to by 'I' to 'STMT'.  If
!      'UPDATE_EH_INFO' is true, the exception handling information of the
       original statement is moved to the new statement.
  
   -- GIMPLE function: void gsi_insert_before (gimple_stmt_iterator *i,
            gimple stmt, enum gsi_iterator_update mode)
!      Insert statement 'STMT' before the statement pointed-to by iterator
!      'I', update 'STMT''s basic block and scan it for new operands.
!      'MODE' specifies how to update iterator 'I' after insertion (see
!      enum 'gsi_iterator_update').
  
   -- GIMPLE function: void gsi_insert_seq_before (gimple_stmt_iterator
            *i, gimple_seq seq, enum gsi_iterator_update mode)
!      Like 'gsi_insert_before', but for all the statements in 'SEQ'.
  
   -- GIMPLE function: void gsi_insert_after (gimple_stmt_iterator *i,
            gimple stmt, enum gsi_iterator_update mode)
!      Insert statement 'STMT' after the statement pointed-to by iterator
!      'I', update 'STMT''s basic block and scan it for new operands.
!      'MODE' specifies how to update iterator 'I' after insertion (see
!      enum 'gsi_iterator_update').
  
   -- GIMPLE function: void gsi_insert_seq_after (gimple_stmt_iterator *i,
            gimple_seq seq, enum gsi_iterator_update mode)
!      Like 'gsi_insert_after', but for all the statements in 'SEQ'.
  
   -- GIMPLE function: gimple_stmt_iterator gsi_for_stmt (gimple stmt)
!      Finds iterator for 'STMT'.
  
   -- GIMPLE function: void gsi_move_after (gimple_stmt_iterator *from,
            gimple_stmt_iterator *to)
!      Move the statement at 'FROM' so it comes right after the statement
!      at 'TO'.
  
   -- GIMPLE function: void gsi_move_before (gimple_stmt_iterator *from,
            gimple_stmt_iterator *to)
!      Move the statement at 'FROM' so it comes right before the statement
!      at 'TO'.
  
   -- GIMPLE function: void gsi_move_to_bb_end (gimple_stmt_iterator
            *from, basic_block bb)
!      Move the statement at 'FROM' to the end of basic block 'BB'.
  
   -- GIMPLE function: void gsi_insert_on_edge (edge e, gimple stmt)
!      Add 'STMT' to the pending list of edge 'E'.  No actual insertion is
!      made until a call to 'gsi_commit_edge_inserts'() is made.
  
   -- GIMPLE function: void gsi_insert_seq_on_edge (edge e, gimple_seq
            seq)
!      Add the sequence of statements in 'SEQ' to the pending list of edge
!      'E'.  No actual insertion is made until a call to
!      'gsi_commit_edge_inserts'() is made.
  
   -- GIMPLE function: basic_block gsi_insert_on_edge_immediate (edge e,
            gimple stmt)
!      Similar to 'gsi_insert_on_edge'+'gsi_commit_edge_inserts'.  If a
       new block has to be created, it is returned.
  
   -- GIMPLE function: void gsi_commit_one_edge_insert (edge e,
            basic_block *new_bb)
!      Commit insertions pending at edge 'E'.  If a new block is created,
!      set 'NEW_BB' to this block, otherwise set it to 'NULL'.
  
   -- GIMPLE function: void gsi_commit_edge_inserts (void)
       This routine will commit all pending edge insertions, creating any
--- 16167,16273 ----
   -- GIMPLE function: void gsi_remove (gimple_stmt_iterator *i, bool
            remove_eh_info)
       Remove the current stmt from the sequence.  The iterator is updated
!      to point to the next statement.  When â€˜REMOVE_EH_INFOâ€™ is true we
!      remove the statement pointed to by iterator â€˜Iâ€™ from the â€˜EHâ€™
!      tables.  Otherwise we do not modify the â€˜EHâ€™ tables.  Generally,
!      â€˜REMOVE_EH_INFOâ€™ should be true when the statement is going to be
!      removed from the â€˜ILâ€™ and not reinserted elsewhere.
  
   -- GIMPLE function: void gsi_link_seq_before (gimple_stmt_iterator *i,
            gimple_seq seq, enum gsi_iterator_update mode)
!      Links the sequence of statements â€˜SEQâ€™ before the statement pointed
!      by iterator â€˜Iâ€™.  â€˜MODEâ€™ indicates what to do with the iterator
!      after insertion (see â€˜enum gsi_iterator_updateâ€™ above).
  
   -- GIMPLE function: void gsi_link_before (gimple_stmt_iterator *i,
            gimple g, enum gsi_iterator_update mode)
!      Links statement â€˜Gâ€™ before the statement pointed-to by iterator
!      â€˜Iâ€™.  Updates iterator â€˜Iâ€™ according to â€˜MODEâ€™.
  
   -- GIMPLE function: void gsi_link_seq_after (gimple_stmt_iterator *i,
            gimple_seq seq, enum gsi_iterator_update mode)
!      Links sequence â€˜SEQâ€™ after the statement pointed-to by iterator
!      â€˜Iâ€™.  â€˜MODEâ€™ is as in â€˜gsi_insert_afterâ€™.
  
   -- GIMPLE function: void gsi_link_after (gimple_stmt_iterator *i,
            gimple g, enum gsi_iterator_update mode)
!      Links statement â€˜Gâ€™ after the statement pointed-to by iterator â€˜Iâ€™.
!      â€˜MODEâ€™ is as in â€˜gsi_insert_afterâ€™.
  
   -- GIMPLE function: gimple_seq gsi_split_seq_after
            (gimple_stmt_iterator i)
!      Move all statements in the sequence after â€˜Iâ€™ to a new sequence.
       Return this new sequence.
  
   -- GIMPLE function: gimple_seq gsi_split_seq_before
            (gimple_stmt_iterator *i)
!      Move all statements in the sequence before â€˜Iâ€™ to a new sequence.
       Return this new sequence.
  
   -- GIMPLE function: void gsi_replace (gimple_stmt_iterator *i, gimple
            stmt, bool update_eh_info)
!      Replace the statement pointed-to by â€˜Iâ€™ to â€˜STMTâ€™.  If
!      â€˜UPDATE_EH_INFOâ€™ is true, the exception handling information of the
       original statement is moved to the new statement.
  
   -- GIMPLE function: void gsi_insert_before (gimple_stmt_iterator *i,
            gimple stmt, enum gsi_iterator_update mode)
!      Insert statement â€˜STMTâ€™ before the statement pointed-to by iterator
!      â€˜Iâ€™, update â€˜STMTâ€™'s basic block and scan it for new operands.
!      â€˜MODEâ€™ specifies how to update iterator â€˜Iâ€™ after insertion (see
!      enum â€˜gsi_iterator_updateâ€™).
  
   -- GIMPLE function: void gsi_insert_seq_before (gimple_stmt_iterator
            *i, gimple_seq seq, enum gsi_iterator_update mode)
!      Like â€˜gsi_insert_beforeâ€™, but for all the statements in â€˜SEQâ€™.
  
   -- GIMPLE function: void gsi_insert_after (gimple_stmt_iterator *i,
            gimple stmt, enum gsi_iterator_update mode)
!      Insert statement â€˜STMTâ€™ after the statement pointed-to by iterator
!      â€˜Iâ€™, update â€˜STMTâ€™'s basic block and scan it for new operands.
!      â€˜MODEâ€™ specifies how to update iterator â€˜Iâ€™ after insertion (see
!      enum â€˜gsi_iterator_updateâ€™).
  
   -- GIMPLE function: void gsi_insert_seq_after (gimple_stmt_iterator *i,
            gimple_seq seq, enum gsi_iterator_update mode)
!      Like â€˜gsi_insert_afterâ€™, but for all the statements in â€˜SEQâ€™.
  
   -- GIMPLE function: gimple_stmt_iterator gsi_for_stmt (gimple stmt)
!      Finds iterator for â€˜STMTâ€™.
  
   -- GIMPLE function: void gsi_move_after (gimple_stmt_iterator *from,
            gimple_stmt_iterator *to)
!      Move the statement at â€˜FROMâ€™ so it comes right after the statement
!      at â€˜TOâ€™.
  
   -- GIMPLE function: void gsi_move_before (gimple_stmt_iterator *from,
            gimple_stmt_iterator *to)
!      Move the statement at â€˜FROMâ€™ so it comes right before the statement
!      at â€˜TOâ€™.
  
   -- GIMPLE function: void gsi_move_to_bb_end (gimple_stmt_iterator
            *from, basic_block bb)
!      Move the statement at â€˜FROMâ€™ to the end of basic block â€˜BBâ€™.
  
   -- GIMPLE function: void gsi_insert_on_edge (edge e, gimple stmt)
!      Add â€˜STMTâ€™ to the pending list of edge â€˜Eâ€™.  No actual insertion is
!      made until a call to â€˜gsi_commit_edge_insertsâ€™() is made.
  
   -- GIMPLE function: void gsi_insert_seq_on_edge (edge e, gimple_seq
            seq)
!      Add the sequence of statements in â€˜SEQâ€™ to the pending list of edge
!      â€˜Eâ€™.  No actual insertion is made until a call to
!      â€˜gsi_commit_edge_insertsâ€™() is made.
  
   -- GIMPLE function: basic_block gsi_insert_on_edge_immediate (edge e,
            gimple stmt)
!      Similar to â€˜gsi_insert_on_edgeâ€™+â€˜gsi_commit_edge_insertsâ€™.  If a
       new block has to be created, it is returned.
  
   -- GIMPLE function: void gsi_commit_one_edge_insert (edge e,
            basic_block *new_bb)
!      Commit insertions pending at edge â€˜Eâ€™.  If a new block is created,
!      set â€˜NEW_BBâ€™ to this block, otherwise set it to â€˜NULLâ€™.
  
   -- GIMPLE function: void gsi_commit_edge_inserts (void)
       This routine will commit all pending edge insertions, creating any
*************** File: gccint.info,  Node: Adding a new G
*** 16275,16301 ****
  ========================================
  
  The first step in adding a new GIMPLE statement code, is modifying the
! file 'gimple.def', which contains all the GIMPLE codes.  Then you must
! add a corresponding gimple subclass located in 'gimple.h'.  This in
! turn, will require you to add a corresponding 'GTY' tag in
! 'gsstruct.def', and code to handle this tag in 'gss_for_code' which is
! located in 'gimple.cc'.
  
   In order for the garbage collector to know the size of the structure
! you created in 'gimple.h', you need to add a case to handle your new
! GIMPLE statement in 'gimple_size' which is located in 'gimple.cc'.
  
   You will probably want to create a function to build the new gimple
! statement in 'gimple.cc'.  The function should be called
! 'gimple_build_NEW-TUPLE-NAME', and should return the new tuple as a
  pointer to the appropriate gimple subclass.
  
   If your new statement requires accessors for any members or operands it
! may have, put simple inline accessors in 'gimple.h' and any non-trivial
! accessors in 'gimple.cc' with a corresponding prototype in 'gimple.h'.
  
   You should add the new statement subclass to the class hierarchy
! diagram in 'gimple.texi'.
  
  
  File: gccint.info,  Node: Statement and operand traversals,  Prev: Adding a new GIMPLE statement code,  Up: GIMPLE
--- 16280,16306 ----
  ========================================
  
  The first step in adding a new GIMPLE statement code, is modifying the
! file â€˜gimple.defâ€™, which contains all the GIMPLE codes.  Then you must
! add a corresponding gimple subclass located in â€˜gimple.hâ€™.  This in
! turn, will require you to add a corresponding â€˜GTYâ€™ tag in
! â€˜gsstruct.defâ€™, and code to handle this tag in â€˜gss_for_codeâ€™ which is
! located in â€˜gimple.ccâ€™.
  
   In order for the garbage collector to know the size of the structure
! you created in â€˜gimple.hâ€™, you need to add a case to handle your new
! GIMPLE statement in â€˜gimple_sizeâ€™ which is located in â€˜gimple.ccâ€™.
  
   You will probably want to create a function to build the new gimple
! statement in â€˜gimple.ccâ€™.  The function should be called
! â€˜gimple_build_NEW-TUPLE-NAMEâ€™, and should return the new tuple as a
  pointer to the appropriate gimple subclass.
  
   If your new statement requires accessors for any members or operands it
! may have, put simple inline accessors in â€˜gimple.hâ€™ and any non-trivial
! accessors in â€˜gimple.ccâ€™ with a corresponding prototype in â€˜gimple.hâ€™.
  
   You should add the new statement subclass to the class hierarchy
! diagram in â€˜gimple.texiâ€™.
  
  
  File: gccint.info,  Node: Statement and operand traversals,  Prev: Adding a new GIMPLE statement code,  Up: GIMPLE
*************** File: gccint.info,  Node: Statement and
*** 16304,16357 ****
  ======================================
  
  There are two functions available for walking statements and sequences:
! 'walk_gimple_stmt' and 'walk_gimple_seq', accordingly, and a third
! function for walking the operands in a statement: 'walk_gimple_op'.
  
   -- GIMPLE function: tree walk_gimple_stmt (gimple_stmt_iterator *gsi,
            walk_stmt_fn callback_stmt, walk_tree_fn callback_op, struct
            walk_stmt_info *wi)
!      This function is used to walk the current statement in 'GSI',
!      optionally using traversal state stored in 'WI'.  If 'WI' is
!      'NULL', no state is kept during the traversal.
  
!      The callback 'CALLBACK_STMT' is called.  If 'CALLBACK_STMT' returns
       true, it means that the callback function has handled all the
       operands of the statement and it is not necessary to walk its
       operands.
  
!      If 'CALLBACK_STMT' is 'NULL' or it returns false, 'CALLBACK_OP' is
!      called on each operand of the statement via 'walk_gimple_op'.  If
!      'walk_gimple_op' returns non-'NULL' for any operand, the remaining
       operands are not scanned.
  
       The return value is that returned by the last call to
!      'walk_gimple_op', or 'NULL_TREE' if no 'CALLBACK_OP' is specified.
  
   -- GIMPLE function: tree walk_gimple_op (gimple stmt, walk_tree_fn
            callback_op, struct walk_stmt_info *wi)
!      Use this function to walk the operands of statement 'STMT'.  Every
!      operand is walked via 'walk_tree' with optional state information
!      in 'WI'.
  
!      'CALLBACK_OP' is called on each operand of 'STMT' via 'walk_tree'.
!      Additional parameters to 'walk_tree' must be stored in 'WI'.  For
!      each operand 'OP', 'walk_tree' is called as:
  
            walk_tree (&OP, CALLBACK_OP, WI, PSET)
  
!      If 'CALLBACK_OP' returns non-'NULL' for an operand, the remaining
       operands are not scanned.  The return value is that returned by the
!      last call to 'walk_tree', or 'NULL_TREE' if no 'CALLBACK_OP' is
       specified.
  
   -- GIMPLE function: tree walk_gimple_seq (gimple_seq seq, walk_stmt_fn
            callback_stmt, walk_tree_fn callback_op, struct walk_stmt_info
            *wi)
!      This function walks all the statements in the sequence 'SEQ'
!      calling 'walk_gimple_stmt' on each one.  'WI' is as in
!      'walk_gimple_stmt'.  If 'walk_gimple_stmt' returns non-'NULL', the
       walk is stopped and the value returned.  Otherwise, all the
!      statements are walked and 'NULL_TREE' returned.
  
  
  File: gccint.info,  Node: Tree SSA,  Next: RTL,  Prev: GIMPLE,  Up: Top
--- 16309,16362 ----
  ======================================
  
  There are two functions available for walking statements and sequences:
! â€˜walk_gimple_stmtâ€™ and â€˜walk_gimple_seqâ€™, accordingly, and a third
! function for walking the operands in a statement: â€˜walk_gimple_opâ€™.
  
   -- GIMPLE function: tree walk_gimple_stmt (gimple_stmt_iterator *gsi,
            walk_stmt_fn callback_stmt, walk_tree_fn callback_op, struct
            walk_stmt_info *wi)
!      This function is used to walk the current statement in â€˜GSIâ€™,
!      optionally using traversal state stored in â€˜WIâ€™.  If â€˜WIâ€™ is
!      â€˜NULLâ€™, no state is kept during the traversal.
  
!      The callback â€˜CALLBACK_STMTâ€™ is called.  If â€˜CALLBACK_STMTâ€™ returns
       true, it means that the callback function has handled all the
       operands of the statement and it is not necessary to walk its
       operands.
  
!      If â€˜CALLBACK_STMTâ€™ is â€˜NULLâ€™ or it returns false, â€˜CALLBACK_OPâ€™ is
!      called on each operand of the statement via â€˜walk_gimple_opâ€™.  If
!      â€˜walk_gimple_opâ€™ returns non-â€˜NULLâ€™ for any operand, the remaining
       operands are not scanned.
  
       The return value is that returned by the last call to
!      â€˜walk_gimple_opâ€™, or â€˜NULL_TREEâ€™ if no â€˜CALLBACK_OPâ€™ is specified.
  
   -- GIMPLE function: tree walk_gimple_op (gimple stmt, walk_tree_fn
            callback_op, struct walk_stmt_info *wi)
!      Use this function to walk the operands of statement â€˜STMTâ€™.  Every
!      operand is walked via â€˜walk_treeâ€™ with optional state information
!      in â€˜WIâ€™.
  
!      â€˜CALLBACK_OPâ€™ is called on each operand of â€˜STMTâ€™ via â€˜walk_treeâ€™.
!      Additional parameters to â€˜walk_treeâ€™ must be stored in â€˜WIâ€™.  For
!      each operand â€˜OPâ€™, â€˜walk_treeâ€™ is called as:
  
            walk_tree (&OP, CALLBACK_OP, WI, PSET)
  
!      If â€˜CALLBACK_OPâ€™ returns non-â€˜NULLâ€™ for an operand, the remaining
       operands are not scanned.  The return value is that returned by the
!      last call to â€˜walk_treeâ€™, or â€˜NULL_TREEâ€™ if no â€˜CALLBACK_OPâ€™ is
       specified.
  
   -- GIMPLE function: tree walk_gimple_seq (gimple_seq seq, walk_stmt_fn
            callback_stmt, walk_tree_fn callback_op, struct walk_stmt_info
            *wi)
!      This function walks all the statements in the sequence â€˜SEQâ€™
!      calling â€˜walk_gimple_stmtâ€™ on each one.  â€˜WIâ€™ is as in
!      â€˜walk_gimple_stmtâ€™.  If â€˜walk_gimple_stmtâ€™ returns non-â€˜NULLâ€™, the
       walk is stopped and the value returned.  Otherwise, all the
!      statements are walked and â€˜NULL_TREEâ€™ returned.
  
  
  File: gccint.info,  Node: Tree SSA,  Next: RTL,  Prev: GIMPLE,  Up: Top
*************** File: gccint.info,  Node: Annotations,
*** 16400,16407 ****
  The optimizers need to associate attributes with variables during the
  optimization process.  For instance, we need to know whether a variable
  has aliases.  All these attributes are stored in data structures called
! annotations which are then linked to the field 'ann' in 'struct
! tree_common'.
  
  
  File: gccint.info,  Node: SSA Operands,  Next: SSA,  Prev: Annotations,  Up: Tree SSA
--- 16405,16412 ----
  The optimizers need to associate attributes with variables during the
  optimization process.  For instance, we need to know whether a variable
  has aliases.  All these attributes are stored in data structures called
! annotations which are then linked to the field â€˜annâ€™ in â€˜struct
! tree_commonâ€™.
  
  
  File: gccint.info,  Node: SSA Operands,  Next: SSA,  Prev: Annotations,  Up: Tree SSA
*************** their operands are going to be located a
*** 16415,16427 ****
  statement's tree.  To facilitate access to the statement's operands,
  they are organized into lists associated inside each statement's
  annotation.  Each element in an operand list is a pointer to a
! 'VAR_DECL', 'PARM_DECL' or 'SSA_NAME' tree node.  This provides a very
  convenient way of examining and replacing operands.
  
   Data flow analysis and optimization is done on all tree nodes
! representing variables.  Any node for which 'SSA_VAR_P' returns nonzero
  is considered when scanning statement operands.  However, not all
! 'SSA_VAR_P' variables are processed in the same way.  For the purposes
  of optimization, we need to distinguish between references to local
  scalar variables and references to globals, statics, structures, arrays,
  aliased variables, etc.  The reason is simple, the compiler can gather
--- 16420,16432 ----
  statement's tree.  To facilitate access to the statement's operands,
  they are organized into lists associated inside each statement's
  annotation.  Each element in an operand list is a pointer to a
! â€˜VAR_DECLâ€™, â€˜PARM_DECLâ€™ or â€˜SSA_NAMEâ€™ tree node.  This provides a very
  convenient way of examining and replacing operands.
  
   Data flow analysis and optimization is done on all tree nodes
! representing variables.  Any node for which â€˜SSA_VAR_Pâ€™ returns nonzero
  is considered when scanning statement operands.  However, not all
! â€˜SSA_VAR_Pâ€™ variables are processed in the same way.  For the purposes
  of optimization, we need to distinguish between references to local
  scalar variables and references to globals, statics, structures, arrays,
  aliased variables, etc.  The reason is simple, the compiler can gather
*************** global variable may be modified by a fun
*** 16430,16437 ****
  possible to keep track of all the elements of an array or the fields of
  a structure, etc.
  
!  The operand scanner gathers two kinds of operands: "real" and
! "virtual".  An operand for which 'is_gimple_reg' returns true is
  considered real, otherwise it is a virtual operand.  We also distinguish
  between uses and definitions.  An operand is used if its value is loaded
  by the statement (e.g., the operand at the RHS of an assignment).  If
--- 16435,16442 ----
  possible to keep track of all the elements of an array or the fields of
  a structure, etc.
  
!  The operand scanner gathers two kinds of operands: â€œrealâ€� and
! â€œvirtualâ€�.  An operand for which â€˜is_gimple_regâ€™ returns true is
  considered real, otherwise it is a virtual operand.  We also distinguish
  between uses and definitions.  An operand is used if its value is loaded
  by the statement (e.g., the operand at the RHS of an assignment).  If
*************** that they represent.  For instance, give
*** 16447,16456 ****
         a = b
       }
  
!  Since 'a' and 'b' are non-aliased locals, the statement 'a = b' will
! have one real definition and one real use because variable 'a' is
! completely modified with the contents of variable 'b'.  Real definition
! are also known as "killing definitions".  Similarly, the use of 'b'
  reads all its bits.
  
   In contrast, virtual operands are used with variables that can have a
--- 16452,16461 ----
         a = b
       }
  
!  Since â€˜aâ€™ and â€˜bâ€™ are non-aliased locals, the statement â€˜a = bâ€™ will
! have one real definition and one real use because variable â€˜aâ€™ is
! completely modified with the contents of variable â€˜bâ€™.  Real definition
! are also known as â€œkilling definitionsâ€�.  Similarly, the use of â€˜bâ€™
  reads all its bits.
  
   In contrast, virtual operands are used with variables that can have a
*************** partial or ambiguous reference.  This in
*** 16458,16468 ****
  globals, and aliased variables.  In these cases, we have two types of
  definitions.  For globals, structures, and arrays, we can determine from
  a statement whether a variable of these types has a killing definition.
! If the variable does, then the statement is marked as having a "must
! definition" of that variable.  However, if a statement is only defining
  a part of the variable (i.e. a field in a structure), or if we know that
  a statement might define the variable but we cannot say for sure, then
! we mark that statement as having a "may definition".  For instance,
  given
  
       {
--- 16463,16473 ----
  globals, and aliased variables.  In these cases, we have two types of
  definitions.  For globals, structures, and arrays, we can determine from
  a statement whether a variable of these types has a killing definition.
! If the variable does, then the statement is marked as having a â€œmust
! definitionâ€� of that variable.  However, if a statement is only defining
  a part of the variable (i.e. a field in a structure), or if we know that
  a statement might define the variable but we cannot say for sure, then
! we mark that statement as having a â€œmay definitionâ€�.  For instance,
  given
  
       {
*************** given
*** 16476,16488 ****
         return *p;
       }
  
!  The assignment '*p = 5' may be a definition of 'a' or 'b'.  If we
! cannot determine statically where 'p' is pointing to at the time of the
  store operation, we create virtual definitions to mark that statement as
! a potential definition site for 'a' and 'b'.  Memory loads are similarly
  marked with virtual use operands.  Virtual operands are shown in tree
  dumps right before the statement that contains them.  To request a tree
! dump with virtual operands, use the '-vops' option to '-fdump-tree':
  
       {
         int a, b, *p;
--- 16481,16493 ----
         return *p;
       }
  
!  The assignment â€˜*p = 5â€™ may be a definition of â€˜aâ€™ or â€˜bâ€™.  If we
! cannot determine statically where â€˜pâ€™ is pointing to at the time of the
  store operation, we create virtual definitions to mark that statement as
! a potential definition site for â€˜aâ€™ and â€˜bâ€™.  Memory loads are similarly
  marked with virtual use operands.  Virtual operands are shown in tree
  dumps right before the statement that contains them.  To request a tree
! dump with virtual operands, use the â€˜-vopsâ€™ option to â€˜-fdump-treeâ€™:
  
       {
         int a, b, *p;
*************** dump with virtual operands, use the '-vo
*** 16500,16553 ****
         return *p;
       }
  
!  Notice that 'VDEF' operands have two copies of the referenced variable.
  This indicates that this is not a killing definition of that variable.
! In this case we refer to it as a "may definition" or "aliased store".
! The presence of the second copy of the variable in the 'VDEF' operand
  will become important when the function is converted into SSA form.
  This will be used to link all the non-killing definitions to prevent
  optimizations from making incorrect assumptions about them.
  
   Operands are updated as soon as the statement is finished via a call to
! 'update_stmt'.  If statement elements are changed via 'SET_USE' or
! 'SET_DEF', then no further action is required (i.e., those macros take
  care of updating the statement).  If changes are made by manipulating
! the statement's tree directly, then a call must be made to 'update_stmt'
! when complete.  Calling one of the 'bsi_insert' routines or
! 'bsi_replace' performs an implicit call to 'update_stmt'.
  
  12.2.1 Operand Iterators And Access Routines
  --------------------------------------------
  
! Operands are collected by 'tree-ssa-operands.cc'.  They are stored
  inside each statement's annotation and can be accessed through either
  the operand iterators or an access routine.
  
   The following access routines are available for examining operands:
  
!   1. 'SINGLE_SSA_{USE,DEF,TREE}_OPERAND': These accessors will return
       NULL unless there is exactly one operand matching the specified
       flags.  If there is exactly one operand, the operand is returned as
!      either a 'tree', 'def_operand_p', or 'use_operand_p'.
  
            tree t = SINGLE_SSA_TREE_OPERAND (stmt, flags);
            use_operand_p u = SINGLE_SSA_USE_OPERAND (stmt, SSA_ALL_VIRTUAL_USES);
            def_operand_p d = SINGLE_SSA_DEF_OPERAND (stmt, SSA_OP_ALL_DEFS);
  
!   2. 'ZERO_SSA_OPERANDS': This macro returns true if there are no
       operands matching the specified flags.
  
            if (ZERO_SSA_OPERANDS (stmt, SSA_OP_ALL_VIRTUALS))
              return;
  
!   3. 'NUM_SSA_OPERANDS': This macro Returns the number of operands
       matching 'flags'.  This actually executes a loop to perform the
       count, so only use this if it is really needed.
  
            int count = NUM_SSA_OPERANDS (stmt, flags)
  
   If you wish to iterate over some or all operands, use the
! 'FOR_EACH_SSA_{USE,DEF,TREE}_OPERAND' iterator.  For example, to print
  all the operands for a statement:
  
       void
--- 16505,16558 ----
         return *p;
       }
  
!  Notice that â€˜VDEFâ€™ operands have two copies of the referenced variable.
  This indicates that this is not a killing definition of that variable.
! In this case we refer to it as a â€œmay definitionâ€� or â€œaliased storeâ€�.
! The presence of the second copy of the variable in the â€˜VDEFâ€™ operand
  will become important when the function is converted into SSA form.
  This will be used to link all the non-killing definitions to prevent
  optimizations from making incorrect assumptions about them.
  
   Operands are updated as soon as the statement is finished via a call to
! â€˜update_stmtâ€™.  If statement elements are changed via â€˜SET_USEâ€™ or
! â€˜SET_DEFâ€™, then no further action is required (i.e., those macros take
  care of updating the statement).  If changes are made by manipulating
! the statement's tree directly, then a call must be made to â€˜update_stmtâ€™
! when complete.  Calling one of the â€˜bsi_insertâ€™ routines or
! â€˜bsi_replaceâ€™ performs an implicit call to â€˜update_stmtâ€™.
  
  12.2.1 Operand Iterators And Access Routines
  --------------------------------------------
  
! Operands are collected by â€˜tree-ssa-operands.ccâ€™.  They are stored
  inside each statement's annotation and can be accessed through either
  the operand iterators or an access routine.
  
   The following access routines are available for examining operands:
  
!   1. â€˜SINGLE_SSA_{USE,DEF,TREE}_OPERANDâ€™: These accessors will return
       NULL unless there is exactly one operand matching the specified
       flags.  If there is exactly one operand, the operand is returned as
!      either a â€˜treeâ€™, â€˜def_operand_pâ€™, or â€˜use_operand_pâ€™.
  
            tree t = SINGLE_SSA_TREE_OPERAND (stmt, flags);
            use_operand_p u = SINGLE_SSA_USE_OPERAND (stmt, SSA_ALL_VIRTUAL_USES);
            def_operand_p d = SINGLE_SSA_DEF_OPERAND (stmt, SSA_OP_ALL_DEFS);
  
!   2. â€˜ZERO_SSA_OPERANDSâ€™: This macro returns true if there are no
       operands matching the specified flags.
  
            if (ZERO_SSA_OPERANDS (stmt, SSA_OP_ALL_VIRTUALS))
              return;
  
!   3. â€˜NUM_SSA_OPERANDSâ€™: This macro Returns the number of operands
       matching 'flags'.  This actually executes a loop to perform the
       count, so only use this if it is really needed.
  
            int count = NUM_SSA_OPERANDS (stmt, flags)
  
   If you wish to iterate over some or all operands, use the
! â€˜FOR_EACH_SSA_{USE,DEF,TREE}_OPERANDâ€™ iterator.  For example, to print
  all the operands for a statement:
  
       void
*************** all the operands for a statement:
*** 16577,16583 ****
  
    3. Determine which operands you wish to use, and specify the flags of
       those you are interested in.  They are documented in
!      'tree-ssa-operands.h':
  
            #define SSA_OP_USE              0x01    /* Real USE operands.  */
            #define SSA_OP_DEF              0x02    /* Real DEF operands.  */
--- 16582,16588 ----
  
    3. Determine which operands you wish to use, and specify the flags of
       those you are interested in.  They are documented in
!      â€˜tree-ssa-operands.hâ€™:
  
            #define SSA_OP_USE              0x01    /* Real USE operands.  */
            #define SSA_OP_DEF              0x02    /* Real DEF operands.  */
*************** all the operands for a statement:
*** 16592,16598 ****
            #define SSA_OP_ALL_DEFS		(SSA_OP_VIRTUAL_DEFS | SSA_OP_DEF)
            #define SSA_OP_ALL_OPERANDS	(SSA_OP_ALL_USES | SSA_OP_ALL_DEFS)
  
!  So if you want to look at the use pointers for all the 'USE' and 'VUSE'
  operands, you would do something like:
  
         use_operand_p use_p;
--- 16597,16603 ----
            #define SSA_OP_ALL_DEFS		(SSA_OP_VIRTUAL_DEFS | SSA_OP_DEF)
            #define SSA_OP_ALL_OPERANDS	(SSA_OP_ALL_USES | SSA_OP_ALL_DEFS)
  
!  So if you want to look at the use pointers for all the â€˜USEâ€™ and â€˜VUSEâ€™
  operands, you would do something like:
  
         use_operand_p use_p;
*************** operands, you would do something like:
*** 16603,16611 ****
             process_use_ptr (use_p);
           }
  
!  The 'TREE' macro is basically the same as the 'USE' and 'DEF' macros,
! only with the use or def dereferenced via 'USE_FROM_PTR (use_p)' and
! 'DEF_FROM_PTR (def_p)'.  Since we aren't using operand pointers, use and
  defs flags can be mixed.
  
         tree var;
--- 16608,16616 ----
             process_use_ptr (use_p);
           }
  
!  The â€˜TREEâ€™ macro is basically the same as the â€˜USEâ€™ and â€˜DEFâ€™ macros,
! only with the use or def dereferenced via â€˜USE_FROM_PTR (use_p)â€™ and
! â€˜DEF_FROM_PTR (def_p)â€™.  Since we aren't using operand pointers, use and
  defs flags can be mixed.
  
         tree var;
*************** defs flags can be mixed.
*** 16616,16632 ****
              print_generic_expr (stderr, var, TDF_SLIM);
           }
  
!  'VDEF's are broken into two flags, one for the 'DEF' portion
! ('SSA_OP_VDEF') and one for the USE portion ('SSA_OP_VUSE').
  
   There are many examples in the code, in addition to the documentation
! in 'tree-ssa-operands.h' and 'ssa-iterators.h'.
  
   There are also a couple of variants on the stmt iterators regarding PHI
  nodes.
  
!  'FOR_EACH_PHI_ARG' Works exactly like 'FOR_EACH_SSA_USE_OPERAND',
! except it works over 'PHI' arguments instead of statement operands.
  
       /* Look at every virtual PHI use.  */
       FOR_EACH_PHI_ARG (use_p, phi_stmt, iter, SSA_OP_VIRTUAL_USES)
--- 16621,16637 ----
              print_generic_expr (stderr, var, TDF_SLIM);
           }
  
!  â€˜VDEFâ€™s are broken into two flags, one for the â€˜DEFâ€™ portion
! (â€˜SSA_OP_VDEFâ€™) and one for the USE portion (â€˜SSA_OP_VUSEâ€™).
  
   There are many examples in the code, in addition to the documentation
! in â€˜tree-ssa-operands.hâ€™ and â€˜ssa-iterators.hâ€™.
  
   There are also a couple of variants on the stmt iterators regarding PHI
  nodes.
  
!  â€˜FOR_EACH_PHI_ARGâ€™ Works exactly like â€˜FOR_EACH_SSA_USE_OPERANDâ€™,
! except it works over â€˜PHIâ€™ arguments instead of statement operands.
  
       /* Look at every virtual PHI use.  */
       FOR_EACH_PHI_ARG (use_p, phi_stmt, iter, SSA_OP_VIRTUAL_USES)
*************** except it works over 'PHI' arguments ins
*** 16642,16652 ****
       FOR_EACH_PHI_ARG (use_p, phi_stmt, iter, SSA_OP_ALL_USES)
         my_code;
  
!  'FOR_EACH_PHI_OR_STMT_{USE,DEF}' works exactly like
! 'FOR_EACH_SSA_{USE,DEF}_OPERAND', except it will function on either a
! statement or a 'PHI' node.  These should be used when it is appropriate
! but they are not quite as efficient as the individual 'FOR_EACH_PHI' and
! 'FOR_EACH_SSA' routines.
  
       FOR_EACH_PHI_OR_STMT_USE (use_operand_p, stmt, iter, flags)
         {
--- 16647,16657 ----
       FOR_EACH_PHI_ARG (use_p, phi_stmt, iter, SSA_OP_ALL_USES)
         my_code;
  
!  â€˜FOR_EACH_PHI_OR_STMT_{USE,DEF}â€™ works exactly like
! â€˜FOR_EACH_SSA_{USE,DEF}_OPERANDâ€™, except it will function on either a
! statement or a â€˜PHIâ€™ node.  These should be used when it is appropriate
! but they are not quite as efficient as the individual â€˜FOR_EACH_PHIâ€™ and
! â€˜FOR_EACH_SSAâ€™ routines.
  
       FOR_EACH_PHI_OR_STMT_USE (use_operand_p, stmt, iter, flags)
         {
*************** but they are not quite as efficient as t
*** 16662,16669 ****
  ---------------------
  
  Immediate use information is now always available.  Using the immediate
! use iterators, you may examine every use of any 'SSA_NAME'.  For
! instance, to change each use of 'ssa_var' to 'ssa_var2' and call
  fold_stmt on each stmt after that is done:
  
         use_operand_p imm_use_p;
--- 16667,16674 ----
  ---------------------
  
  Immediate use information is now always available.  Using the immediate
! use iterators, you may examine every use of any â€˜SSA_NAMEâ€™.  For
! instance, to change each use of â€˜ssa_varâ€™ to â€˜ssa_var2â€™ and call
  fold_stmt on each stmt after that is done:
  
         use_operand_p imm_use_p;
*************** fold_stmt on each stmt after that is don
*** 16678,16690 ****
             fold_stmt (stmt);
           }
  
!  There are 2 iterators which can be used.  'FOR_EACH_IMM_USE_FAST' is
  used when the immediate uses are not changed, i.e., you are looking at
  the uses, but not setting them.
  
   If they do get changed, then care must be taken that things are not
! changed under the iterators, so use the 'FOR_EACH_IMM_USE_STMT' and
! 'FOR_EACH_IMM_USE_ON_STMT' iterators.  They attempt to preserve the
  sanity of the use list by moving all the uses for a statement into a
  controlled position, and then iterating over those uses.  Then the
  optimization can manipulate the stmt when all the uses have been
--- 16683,16695 ----
             fold_stmt (stmt);
           }
  
!  There are 2 iterators which can be used.  â€˜FOR_EACH_IMM_USE_FASTâ€™ is
  used when the immediate uses are not changed, i.e., you are looking at
  the uses, but not setting them.
  
   If they do get changed, then care must be taken that things are not
! changed under the iterators, so use the â€˜FOR_EACH_IMM_USE_STMTâ€™ and
! â€˜FOR_EACH_IMM_USE_ON_STMTâ€™ iterators.  They attempt to preserve the
  sanity of the use list by moving all the uses for a statement into a
  controlled position, and then iterating over those uses.  Then the
  optimization can manipulate the stmt when all the uses have been
*************** processed.  This is a little slower than
*** 16692,16723 ****
  a placeholder element and must sort through the list a bit for each
  statement.  This placeholder element must be also be removed if the loop
  is terminated early; a destructor takes care of that when leaving the
! 'FOR_EACH_IMM_USE_STMT' scope.
  
!  There are checks in 'verify_ssa' which verify that the immediate use
  list is up to date, as well as checking that an optimization didn't
  break from the loop without using this macro.  It is safe to simply
! 'break'; from a 'FOR_EACH_IMM_USE_FAST' traverse.
  
   Some useful functions and macros:
!   1. 'has_zero_uses (ssa_var)' : Returns true if there are no uses of
!      'ssa_var'.
!   2. 'has_single_use (ssa_var)' : Returns true if there is only a single
!      use of 'ssa_var'.
!   3. 'single_imm_use (ssa_var, use_operand_p *ptr, tree *stmt)' :
!      Returns true if there is only a single use of 'ssa_var', and also
       returns the use pointer and statement it occurs in, in the second
       and third parameters.
!   4. 'num_imm_uses (ssa_var)' : Returns the number of immediate uses of
!      'ssa_var'.  It is better not to use this if possible since it
       simply utilizes a loop to count the uses.
!   5. 'PHI_ARG_INDEX_FROM_USE (use_p)' : Given a use within a 'PHI' node,
       return the index number for the use.  An assert is triggered if the
!      use isn't located in a 'PHI' node.
!   6. 'USE_STMT (use_p)' : Return the statement a use occurs in.
  
   Note that uses are not put into an immediate use list until their
! statement is actually inserted into the instruction stream via a 'bsi_*'
  routine.
  
   It is also still possible to utilize lazy updating of statements, but
--- 16697,16728 ----
  a placeholder element and must sort through the list a bit for each
  statement.  This placeholder element must be also be removed if the loop
  is terminated early; a destructor takes care of that when leaving the
! â€˜FOR_EACH_IMM_USE_STMTâ€™ scope.
  
!  There are checks in â€˜verify_ssaâ€™ which verify that the immediate use
  list is up to date, as well as checking that an optimization didn't
  break from the loop without using this macro.  It is safe to simply
! 'break'; from a â€˜FOR_EACH_IMM_USE_FASTâ€™ traverse.
  
   Some useful functions and macros:
!   1. â€˜has_zero_uses (ssa_var)â€™ : Returns true if there are no uses of
!      â€˜ssa_varâ€™.
!   2. â€˜has_single_use (ssa_var)â€™ : Returns true if there is only a single
!      use of â€˜ssa_varâ€™.
!   3. â€˜single_imm_use (ssa_var, use_operand_p *ptr, tree *stmt)â€™ :
!      Returns true if there is only a single use of â€˜ssa_varâ€™, and also
       returns the use pointer and statement it occurs in, in the second
       and third parameters.
!   4. â€˜num_imm_uses (ssa_var)â€™ : Returns the number of immediate uses of
!      â€˜ssa_varâ€™.  It is better not to use this if possible since it
       simply utilizes a loop to count the uses.
!   5. â€˜PHI_ARG_INDEX_FROM_USE (use_p)â€™ : Given a use within a â€˜PHIâ€™ node,
       return the index number for the use.  An assert is triggered if the
!      use isn't located in a â€˜PHIâ€™ node.
!   6. â€˜USE_STMT (use_p)â€™ : Return the statement a use occurs in.
  
   Note that uses are not put into an immediate use list until their
! statement is actually inserted into the instruction stream via a â€˜bsi_*â€™
  routine.
  
   It is also still possible to utilize lazy updating of statements, but
*************** and the dominator optimizations currentl
*** 16726,16736 ****
  
   When lazy updating is being used, the immediate use information is out
  of date and cannot be used reliably.  Lazy updating is achieved by
! simply marking statements modified via calls to 'gimple_set_modified'
! instead of 'update_stmt'.  When lazy updating is no longer required, all
! the modified statements must have 'update_stmt' called in order to bring
  them up to date.  This must be done before the optimization is finished,
! or 'verify_ssa' will trigger an abort.
  
   This is done with a simple loop over the instruction stream:
         block_stmt_iterator bsi;
--- 16731,16741 ----
  
   When lazy updating is being used, the immediate use information is out
  of date and cannot be used reliably.  Lazy updating is achieved by
! simply marking statements modified via calls to â€˜gimple_set_modifiedâ€™
! instead of â€˜update_stmtâ€™.  When lazy updating is no longer required, all
! the modified statements must have â€˜update_stmtâ€™ called in order to bring
  them up to date.  This must be done before the optimization is finished,
! or â€˜verify_ssaâ€™ will trigger an abort.
  
   This is done with a simple loop over the instruction stream:
         block_stmt_iterator bsi;
*************** File: gccint.info,  Node: SSA,  Next: Al
*** 16749,16758 ****
  
  Most of the tree optimizers rely on the data flow information provided
  by the Static Single Assignment (SSA) form.  We implement the SSA form
! as described in 'R. Cytron, J. Ferrante, B. Rosen, M. Wegman, and K.
  Zadeck. Efficiently Computing Static Single Assignment Form and the
  Control Dependence Graph. ACM Transactions on Programming Languages and
! Systems, 13(4):451-490, October 1991'.
  
   The SSA form is based on the premise that program variables are
  assigned in exactly one location in the program.  Multiple assignments
--- 16754,16763 ----
  
  Most of the tree optimizers rely on the data flow information provided
  by the Static Single Assignment (SSA) form.  We implement the SSA form
! as described in â€˜R. Cytron, J. Ferrante, B. Rosen, M. Wegman, and K.
  Zadeck. Efficiently Computing Static Single Assignment Form and the
  Control Dependence Graph. ACM Transactions on Programming Languages and
! Systems, 13(4):451-490, October 1991â€™.
  
   The SSA form is based on the premise that program variables are
  assigned in exactly one location in the program.  Multiple assignments
*************** version number.  Variables used in the r
*** 16766,16781 ****
  are renamed so that their version number matches that of the most recent
  assignment.
  
!  We represent variable versions using 'SSA_NAME' nodes.  The renaming
! process in 'tree-ssa.cc' wraps every real and virtual operand with an
! 'SSA_NAME' node which contains the version number and the statement that
! created the 'SSA_NAME'.  Only definitions and virtual definitions may
! create new 'SSA_NAME' nodes.
  
   Sometimes, flow of control makes it impossible to determine the most
  recent version of a variable.  In these cases, the compiler inserts an
! artificial definition for that variable called "PHI function" or "PHI
! node".  This new definition merges all the incoming versions of the
  variable to create a new name for it.  For instance,
  
       if (...)
--- 16771,16786 ----
  are renamed so that their version number matches that of the most recent
  assignment.
  
!  We represent variable versions using â€˜SSA_NAMEâ€™ nodes.  The renaming
! process in â€˜tree-ssa.ccâ€™ wraps every real and virtual operand with an
! â€˜SSA_NAMEâ€™ node which contains the version number and the statement that
! created the â€˜SSA_NAMEâ€™.  Only definitions and virtual definitions may
! create new â€˜SSA_NAMEâ€™ nodes.
  
   Sometimes, flow of control makes it impossible to determine the most
  recent version of a variable.  In these cases, the compiler inserts an
! artificial definition for that variable called â€œPHI functionâ€� or â€œPHI
! nodeâ€�.  This new definition merges all the incoming versions of the
  variable to create a new name for it.  For instance,
  
       if (...)
*************** variable to create a new name for it.  F
*** 16789,16803 ****
       return a_4;
  
   Since it is not possible to determine which of the three branches will
! be taken at runtime, we don't know which of 'a_1', 'a_2' or 'a_3' to use
  at the return statement.  So, the SSA renamer creates a new version
! 'a_4' which is assigned the result of "merging" 'a_1', 'a_2' and 'a_3'.
  Hence, PHI nodes mean "one of these operands.  I don't know which".
  
   The following functions can be used to examine PHI nodes
  
   -- Function: gimple_phi_result (PHI)
!      Returns the 'SSA_NAME' created by PHI node PHI (i.e., PHI's LHS).
  
   -- Function: gimple_phi_num_args (PHI)
       Returns the number of arguments in PHI.  This number is exactly the
--- 16794,16808 ----
       return a_4;
  
   Since it is not possible to determine which of the three branches will
! be taken at runtime, we don't know which of â€˜a_1â€™, â€˜a_2â€™ or â€˜a_3â€™ to use
  at the return statement.  So, the SSA renamer creates a new version
! â€˜a_4â€™ which is assigned the result of "merging" â€˜a_1â€™, â€˜a_2â€™ and â€˜a_3â€™.
  Hence, PHI nodes mean "one of these operands.  I don't know which".
  
   The following functions can be used to examine PHI nodes
  
   -- Function: gimple_phi_result (PHI)
!      Returns the â€˜SSA_NAMEâ€™ created by PHI node PHI (i.e., PHI's LHS).
  
   -- Function: gimple_phi_num_args (PHI)
       Returns the number of arguments in PHI.  This number is exactly the
*************** Hence, PHI nodes mean "one of these oper
*** 16810,16816 ****
       Returns the incoming edge for the Ith argument of PHI.
  
   -- Function: gimple_phi_arg_def (PHI, I)
!      Returns the 'SSA_NAME' for the Ith argument of PHI.
  
  12.3.1 Preserving the SSA form
  ------------------------------
--- 16815,16821 ----
       Returns the incoming edge for the Ith argument of PHI.
  
   -- Function: gimple_phi_arg_def (PHI, I)
!      Returns the â€˜SSA_NAMEâ€™ for the Ith argument of PHI.
  
  12.3.1 Preserving the SSA form
  ------------------------------
*************** program.
*** 16844,16850 ****
            10   goto L0;
            11 endif
  
!  Suppose that we insert new names 'x_10' and 'x_11' (lines '4' and '8').
  
            1  L0:
            2  x_1 = PHI (0, x_5)
--- 16849,16855 ----
            10   goto L0;
            11 endif
  
!  Suppose that we insert new names â€˜x_10â€™ and â€˜x_11â€™ (lines â€˜4â€™ and â€˜8â€™).
  
            1  L0:
            2  x_1 = PHI (0, x_5)
*************** program.
*** 16860,16874 ****
            12   goto L0;
            13 endif
  
!  We want to replace all the uses of 'x_1' with the new definitions of
! 'x_10' and 'x_11'.  Note that the only uses that should be replaced are
! those at lines '5', '9' and '11'.  Also, the use of 'x_7' at line '9'
! should _not_ be replaced (this is why we cannot just mark symbol 'x' for
  renaming).
  
!  Additionally, we may need to insert a PHI node at line '11' because
! that is a merge point for 'x_10' and 'x_11'.  So the use of 'x_1' at
! line '11' will be replaced with the new PHI node.  The insertion of PHI
  nodes is optional.  They are not strictly necessary to preserve the SSA
  form, and depending on what the caller inserted, they may not even be
  useful for the optimizers.
--- 16865,16879 ----
            12   goto L0;
            13 endif
  
!  We want to replace all the uses of â€˜x_1â€™ with the new definitions of
! â€˜x_10â€™ and â€˜x_11â€™.  Note that the only uses that should be replaced are
! those at lines â€˜5â€™, â€˜9â€™ and â€˜11â€™.  Also, the use of â€˜x_7â€™ at line â€˜9â€™
! should _not_ be replaced (this is why we cannot just mark symbol â€˜xâ€™ for
  renaming).
  
!  Additionally, we may need to insert a PHI node at line â€˜11â€™ because
! that is a merge point for â€˜x_10â€™ and â€˜x_11â€™.  So the use of â€˜x_1â€™ at
! line â€˜11â€™ will be replaced with the new PHI node.  The insertion of PHI
  nodes is optional.  They are not strictly necessary to preserve the SSA
  form, and depending on what the caller inserted, they may not even be
  useful for the optimizers.
*************** useful for the optimizers.
*** 16877,16937 ****
  identify which names need to be updated and/or which symbols need to be
  renamed into SSA form for the first time.  When new names are introduced
  to replace existing names in the program, the mapping between the old
! and the new names are registered by calling 'register_new_name_mapping'
  (note that if your pass creates new code by duplicating basic blocks,
! the call to 'tree_duplicate_bb' will set up the necessary mappings
  automatically).
  
   After the replacement mappings have been registered and new symbols
! marked for renaming, a call to 'update_ssa' makes the registered
! changes.  This can be done with an explicit call or by creating 'TODO'
! flags in the 'tree_opt_pass' structure for your pass.  There are several
! 'TODO' flags that control the behavior of 'update_ssa':
  
!    * 'TODO_update_ssa'.  Update the SSA form inserting PHI nodes for
       newly exposed symbols and virtual names marked for updating.  When
!      updating real names, only insert PHI nodes for a real name 'O_j' in
!      blocks reached by all the new and old definitions for 'O_j'.  If
!      the iterated dominance frontier for 'O_j' is not pruned, we may end
       up inserting PHI nodes in blocks that have one or more edges with
!      no incoming definition for 'O_j'.  This would lead to uninitialized
!      warnings for 'O_j''s symbol.
  
!    * 'TODO_update_ssa_no_phi'.  Update the SSA form without inserting
       any new PHI nodes at all.  This is used by passes that have either
       inserted all the PHI nodes themselves or passes that need only to
       patch use-def and def-def chains for virtuals (e.g., DCE).
  
!    * 'TODO_update_ssa_full_phi'.  Insert PHI nodes everywhere they are
       needed.  No pruning of the IDF is done.  This is used by passes
!      that need the PHI nodes for 'O_j' even if it means that some
!      arguments will come from the default definition of 'O_j''s symbol
!      (e.g., 'pass_linear_transform').
  
       WARNING: If you need to use this flag, chances are that your pass
       may be doing something wrong.  Inserting PHI nodes for an old name
       where not all edges carry a new replacement may lead to silent
       codegen errors or spurious uninitialized warnings.
  
!    * 'TODO_update_ssa_only_virtuals'.  Passes that update the SSA form
       on their own may want to delegate the updating of virtual names to
       the generic updater.  Since FUD chains are easier to maintain, this
       simplifies the work they need to do.  NOTE: If this flag is used,
       any OLD->NEW mappings for real names are explicitly destroyed and
       only the symbols marked for renaming are processed.
  
! 12.3.2 Examining 'SSA_NAME' nodes
  ---------------------------------
  
! The following macros can be used to examine 'SSA_NAME' nodes
  
   -- Macro: SSA_NAME_DEF_STMT (VAR)
!      Returns the statement S that creates the 'SSA_NAME' VAR.  If S is
!      an empty statement (i.e., 'IS_EMPTY_STMT (S)' returns 'true'), it
       means that the first reference to this variable is a USE or a VUSE.
  
   -- Macro: SSA_NAME_VERSION (VAR)
!      Returns the version number of the 'SSA_NAME' object VAR.
  
  12.3.3 Walking the dominator tree
  ---------------------------------
--- 16882,16942 ----
  identify which names need to be updated and/or which symbols need to be
  renamed into SSA form for the first time.  When new names are introduced
  to replace existing names in the program, the mapping between the old
! and the new names are registered by calling â€˜register_new_name_mappingâ€™
  (note that if your pass creates new code by duplicating basic blocks,
! the call to â€˜tree_duplicate_bbâ€™ will set up the necessary mappings
  automatically).
  
   After the replacement mappings have been registered and new symbols
! marked for renaming, a call to â€˜update_ssaâ€™ makes the registered
! changes.  This can be done with an explicit call or by creating â€˜TODOâ€™
! flags in the â€˜tree_opt_passâ€™ structure for your pass.  There are several
! â€˜TODOâ€™ flags that control the behavior of â€˜update_ssaâ€™:
  
!    â€¢ â€˜TODO_update_ssaâ€™.  Update the SSA form inserting PHI nodes for
       newly exposed symbols and virtual names marked for updating.  When
!      updating real names, only insert PHI nodes for a real name â€˜O_jâ€™ in
!      blocks reached by all the new and old definitions for â€˜O_jâ€™.  If
!      the iterated dominance frontier for â€˜O_jâ€™ is not pruned, we may end
       up inserting PHI nodes in blocks that have one or more edges with
!      no incoming definition for â€˜O_jâ€™.  This would lead to uninitialized
!      warnings for â€˜O_jâ€™'s symbol.
  
!    â€¢ â€˜TODO_update_ssa_no_phiâ€™.  Update the SSA form without inserting
       any new PHI nodes at all.  This is used by passes that have either
       inserted all the PHI nodes themselves or passes that need only to
       patch use-def and def-def chains for virtuals (e.g., DCE).
  
!    â€¢ â€˜TODO_update_ssa_full_phiâ€™.  Insert PHI nodes everywhere they are
       needed.  No pruning of the IDF is done.  This is used by passes
!      that need the PHI nodes for â€˜O_jâ€™ even if it means that some
!      arguments will come from the default definition of â€˜O_jâ€™'s symbol
!      (e.g., â€˜pass_linear_transformâ€™).
  
       WARNING: If you need to use this flag, chances are that your pass
       may be doing something wrong.  Inserting PHI nodes for an old name
       where not all edges carry a new replacement may lead to silent
       codegen errors or spurious uninitialized warnings.
  
!    â€¢ â€˜TODO_update_ssa_only_virtualsâ€™.  Passes that update the SSA form
       on their own may want to delegate the updating of virtual names to
       the generic updater.  Since FUD chains are easier to maintain, this
       simplifies the work they need to do.  NOTE: If this flag is used,
       any OLD->NEW mappings for real names are explicitly destroyed and
       only the symbols marked for renaming are processed.
  
! 12.3.2 Examining â€˜SSA_NAMEâ€™ nodes
  ---------------------------------
  
! The following macros can be used to examine â€˜SSA_NAMEâ€™ nodes
  
   -- Macro: SSA_NAME_DEF_STMT (VAR)
!      Returns the statement S that creates the â€˜SSA_NAMEâ€™ VAR.  If S is
!      an empty statement (i.e., â€˜IS_EMPTY_STMT (S)â€™ returns â€˜trueâ€™), it
       means that the first reference to this variable is a USE or a VUSE.
  
   -- Macro: SSA_NAME_VERSION (VAR)
!      Returns the version number of the â€˜SSA_NAMEâ€™ object VAR.
  
  12.3.3 Walking the dominator tree
  ---------------------------------
*************** The following macros can be used to exam
*** 16940,16946 ****
  
       This function walks the dominator tree for the current CFG calling
       a set of callback functions defined in STRUCT DOM_WALK_DATA in
!      'domwalk.h'.  The call back functions you need to define give you
       hooks to execute custom code at various points during traversal:
  
         1. Once to initialize any local data needed while processing BB
--- 16945,16951 ----
  
       This function walks the dominator tree for the current CFG calling
       a set of callback functions defined in STRUCT DOM_WALK_DATA in
!      â€˜domwalk.hâ€™.  The call back functions you need to define give you
       hooks to execute custom code at various points during traversal:
  
         1. Once to initialize any local data needed while processing BB
*************** disambiguate explicit and implicit memor
*** 16997,17005 ****
              return i;
            }
  
!      The virtual SSA names in this case are '.MEM_2(D)' and '.MEM_3'.
!      The store to the global variable 'i' defines '.MEM_3' invalidating
!      '.MEM_2(D)'.  The load from 'i' uses that new state '.MEM_3'.
  
       The virtual SSA web serves as constraints to SSA optimizers
       preventing illegitimate code-motion and optimization.  It also
--- 17002,17010 ----
              return i;
            }
  
!      The virtual SSA names in this case are â€˜.MEM_2(D)â€™ and â€˜.MEM_3â€™.
!      The store to the global variable â€˜iâ€™ defines â€˜.MEM_3â€™ invalidating
!      â€˜.MEM_2(D)â€™.  The load from â€˜iâ€™ uses that new state â€˜.MEM_3â€™.
  
       The virtual SSA web serves as constraints to SSA optimizers
       preventing illegitimate code-motion and optimization.  It also
*************** disambiguate explicit and implicit memor
*** 17015,17042 ****
       what it may possibly point to.
  
       This points-to solution for a given SSA name pointer is stored in
!      the 'pt_solution' sub-structure of the 'SSA_NAME_PTR_INFO' record.
       The following accessor functions are available:
  
!         * 'pt_solution_includes'
!         * 'pt_solutions_intersect'
  
       Points-to analysis also computes the solution for two special set
!      of pointers, 'ESCAPED' and 'CALLUSED'.  Those represent all memory
       that has escaped the scope of analysis or that is used by pure or
       nested const calls.
  
    3. Type-based alias analysis
  
       Type-based alias analysis is frontend dependent though generic
!      support is provided by the middle-end in 'alias.cc'.  TBAA code is
       used by both tree optimizers and RTL optimizers.
  
       Every language that wishes to perform language-specific alias
!      analysis should define a function that computes, given a 'tree'
       node, an alias set for the node.  Nodes in different alias sets are
       not allowed to alias.  For an example, see the C front-end function
!      'c_get_alias_set'.
  
    4. Tree alias-oracle
  
--- 17020,17047 ----
       what it may possibly point to.
  
       This points-to solution for a given SSA name pointer is stored in
!      the â€˜pt_solutionâ€™ sub-structure of the â€˜SSA_NAME_PTR_INFOâ€™ record.
       The following accessor functions are available:
  
!         â€¢ â€˜pt_solution_includesâ€™
!         â€¢ â€˜pt_solutions_intersectâ€™
  
       Points-to analysis also computes the solution for two special set
!      of pointers, â€˜ESCAPEDâ€™ and â€˜CALLUSEDâ€™.  Those represent all memory
       that has escaped the scope of analysis or that is used by pure or
       nested const calls.
  
    3. Type-based alias analysis
  
       Type-based alias analysis is frontend dependent though generic
!      support is provided by the middle-end in â€˜alias.ccâ€™.  TBAA code is
       used by both tree optimizers and RTL optimizers.
  
       Every language that wishes to perform language-specific alias
!      analysis should define a function that computes, given a â€˜treeâ€™
       node, an alias set for the node.  Nodes in different alias sets are
       not allowed to alias.  For an example, see the C front-end function
!      â€˜c_get_alias_setâ€™.
  
    4. Tree alias-oracle
  
*************** disambiguate explicit and implicit memor
*** 17044,17059 ****
       references and memory references against statements.  The following
       queries are available:
  
!         * 'refs_may_alias_p'
!         * 'ref_maybe_used_by_stmt_p'
!         * 'stmt_may_clobber_ref_p'
  
       In addition to those two kind of statement walkers are available
       walking statements related to a reference ref.
!      'walk_non_aliased_vuses' walks over dominating memory defining
       statements and calls back if the statement does not clobber ref
       providing the non-aliased VUSE. The walk stops at the first
!      clobbering statement or if asked to.  'walk_aliased_vdefs' walks
       over dominating memory defining statements and calls back on each
       statement clobbering ref providing its aliasing VDEF. The walk
       stops if asked to.
--- 17049,17064 ----
       references and memory references against statements.  The following
       queries are available:
  
!         â€¢ â€˜refs_may_alias_pâ€™
!         â€¢ â€˜ref_maybe_used_by_stmt_pâ€™
!         â€¢ â€˜stmt_may_clobber_ref_pâ€™
  
       In addition to those two kind of statement walkers are available
       walking statements related to a reference ref.
!      â€˜walk_non_aliased_vusesâ€™ walks over dominating memory defining
       statements and calls back if the statement does not clobber ref
       providing the non-aliased VUSE. The walk stops at the first
!      clobbering statement or if asked to.  â€˜walk_aliased_vdefsâ€™ walks
       over dominating memory defining statements and calls back on each
       statement clobbering ref providing its aliasing VDEF. The walk
       stops if asked to.
*************** internal form.
*** 17120,17126 ****
  * RTL Declarations::  Declaring volatility, constancy, etc.
  * Side Effects::      Expressions for storing in registers, etc.
  * Incdec::            Embedded side-effects for autoincrement addressing.
! * Assembler::         Representing 'asm' with operands.
  * Debug Information:: Expressions representing debugging information.
  * Insns::             Expression types for entire insns.
  * Calls::             RTL representation of function call insns.
--- 17125,17131 ----
  * RTL Declarations::  Declaring volatility, constancy, etc.
  * Side Effects::      Expressions for storing in registers, etc.
  * Incdec::            Embedded side-effects for autoincrement addressing.
! * Assembler::         Representing â€˜asmâ€™ with operands.
  * Debug Information:: Expressions representing debugging information.
  * Insns::             Expression types for entire insns.
  * Calls::             RTL representation of function call insns.
*************** File: gccint.info,  Node: RTL Objects,
*** 17137,17155 ****
  RTL uses five kinds of objects: expressions, integers, wide integers,
  strings and vectors.  Expressions are the most important ones.  An RTL
  expression ("RTX", for short) is a C structure, but it is usually
! referred to with a pointer; a type that is given the typedef name 'rtx'.
  
!  An integer is simply an 'int'; their written form uses decimal digits.
! A wide integer is an integral object whose type is 'HOST_WIDE_INT';
  their written form uses decimal digits.
  
   A string is a sequence of characters.  In core it is represented as a
! 'char *' in usual C fashion, and it is written in C syntax as well.
  However, strings in RTL may never be null.  If you write an empty string
  in a machine description, it is represented in core as a null pointer
  rather than as a pointer to a null character.  In certain contexts,
  these null pointers instead of strings are valid.  Within RTL code,
! strings are most commonly found inside 'symbol_ref' expressions, but
  they appear in other contexts in the RTL expressions that make up
  machine descriptions.
  
--- 17142,17160 ----
  RTL uses five kinds of objects: expressions, integers, wide integers,
  strings and vectors.  Expressions are the most important ones.  An RTL
  expression ("RTX", for short) is a C structure, but it is usually
! referred to with a pointer; a type that is given the typedef name â€˜rtxâ€™.
  
!  An integer is simply an â€˜intâ€™; their written form uses decimal digits.
! A wide integer is an integral object whose type is â€˜HOST_WIDE_INTâ€™;
  their written form uses decimal digits.
  
   A string is a sequence of characters.  In core it is represented as a
! â€˜char *â€™ in usual C fashion, and it is written in C syntax as well.
  However, strings in RTL may never be null.  If you write an empty string
  in a machine description, it is represented in core as a null pointer
  rather than as a pointer to a null character.  In certain contexts,
  these null pointers instead of strings are valid.  Within RTL code,
! strings are most commonly found inside â€˜symbol_refâ€™ expressions, but
  they appear in other contexts in the RTL expressions that make up
  machine descriptions.
  
*************** special.  Therefore, if you write string
*** 17169,17211 ****
  need not escape each quote character with a backslash.  Note escaped
  quotes are treated the same as a plain quote character and if you need a
  escaped quote in a C string, you need an extra backslash to escape the
! backslash like '"a=\\"c\\";"'.
  
   A vector contains an arbitrary number of pointers to expressions.  The
  number of elements in the vector is explicitly present in the vector.
! The written form of a vector consists of square brackets ('[...]')
  surrounding the elements, in sequence and with whitespace separating
  them.  Vectors of length zero are not created; null pointers are used
  instead.
  
!  Expressions are classified by "expression codes" (also called RTX
! codes).  The expression code is a name defined in 'rtl.def', which is
  also (in uppercase) a C enumeration constant.  The possible expression
  codes and their meanings are machine-independent.  The code of an RTX
! can be extracted with the macro 'GET_CODE (X)' and altered with
! 'PUT_CODE (X, NEWCODE)'.
  
   The expression code determines how many operands the expression
  contains, and what kinds of objects they are.  In RTL, unlike Lisp, you
  cannot tell by looking at an operand what kind of object it is.
  Instead, you must know from its context--from the expression code of the
! containing expression.  For example, in an expression of code 'subreg',
  the first operand is to be regarded as an expression and the second
! operand as a polynomial integer.  In an expression of code 'plus', there
  are two operands, both of which are to be regarded as expressions.  In a
! 'symbol_ref' expression, there is one operand, which is to be regarded
  as a string.
  
   Expressions are written as parentheses containing the name of the
  expression type, its flags and machine mode if any, and then the
  operands of the expression (separated by spaces).
  
!  Expression code names in the 'md' file are written in lowercase, but
  when they appear in C code they are written in uppercase.  In this
! manual, they are shown as follows: 'const_int'.
  
   In a few contexts a null pointer is valid where an expression is
! normally wanted.  The written form of this is '(nil)'.
  
  
  File: gccint.info,  Node: RTL Classes,  Next: Accessors,  Prev: RTL Objects,  Up: RTL
--- 17174,17216 ----
  need not escape each quote character with a backslash.  Note escaped
  quotes are treated the same as a plain quote character and if you need a
  escaped quote in a C string, you need an extra backslash to escape the
! backslash like â€˜"a=\\"c\\";"â€™.
  
   A vector contains an arbitrary number of pointers to expressions.  The
  number of elements in the vector is explicitly present in the vector.
! The written form of a vector consists of square brackets (â€˜[...]â€™)
  surrounding the elements, in sequence and with whitespace separating
  them.  Vectors of length zero are not created; null pointers are used
  instead.
  
!  Expressions are classified by â€œexpression codesâ€� (also called RTX
! codes).  The expression code is a name defined in â€˜rtl.defâ€™, which is
  also (in uppercase) a C enumeration constant.  The possible expression
  codes and their meanings are machine-independent.  The code of an RTX
! can be extracted with the macro â€˜GET_CODE (X)â€™ and altered with
! â€˜PUT_CODE (X, NEWCODE)â€™.
  
   The expression code determines how many operands the expression
  contains, and what kinds of objects they are.  In RTL, unlike Lisp, you
  cannot tell by looking at an operand what kind of object it is.
  Instead, you must know from its context--from the expression code of the
! containing expression.  For example, in an expression of code â€˜subregâ€™,
  the first operand is to be regarded as an expression and the second
! operand as a polynomial integer.  In an expression of code â€˜plusâ€™, there
  are two operands, both of which are to be regarded as expressions.  In a
! â€˜symbol_refâ€™ expression, there is one operand, which is to be regarded
  as a string.
  
   Expressions are written as parentheses containing the name of the
  expression type, its flags and machine mode if any, and then the
  operands of the expression (separated by spaces).
  
!  Expression code names in the â€˜mdâ€™ file are written in lowercase, but
  when they appear in C code they are written in uppercase.  In this
! manual, they are shown as follows: â€˜const_intâ€™.
  
   In a few contexts a null pointer is valid where an expression is
! normally wanted.  The written form of this is â€˜(nil)â€™.
  
  
  File: gccint.info,  Node: RTL Classes,  Next: Accessors,  Prev: RTL Objects,  Up: RTL
*************** File: gccint.info,  Node: RTL Classes,
*** 17213,17376 ****
  13.2 RTL Classes and Formats
  ============================
  
! The various expression codes are divided into several "classes", which
  are represented by single characters.  You can determine the class of an
! RTX code with the macro 'GET_RTX_CLASS (CODE)'.  Currently, 'rtl.def'
  defines these classes:
  
! 'RTX_OBJ'
       An RTX code that represents an actual object, such as a register
!      ('REG') or a memory location ('MEM', 'SYMBOL_REF').  'LO_SUM' is
!      also included; instead, 'SUBREG' and 'STRICT_LOW_PART' are not in
!      this class, but in class 'RTX_EXTRA'.
  
! 'RTX_CONST_OBJ'
!      An RTX code that represents a constant object.  'HIGH' is also
       included in this class.
  
! 'RTX_COMPARE'
!      An RTX code for a non-symmetric comparison, such as 'GEU' or 'LT'.
  
! 'RTX_COMM_COMPARE'
!      An RTX code for a symmetric (commutative) comparison, such as 'EQ'
!      or 'ORDERED'.
  
! 'RTX_UNARY'
!      An RTX code for a unary arithmetic operation, such as 'NEG', 'NOT',
!      or 'ABS'.  This category also includes value extension (sign or
       zero) and conversions between integer and floating point.
  
! 'RTX_COMM_ARITH'
!      An RTX code for a commutative binary operation, such as 'PLUS' or
!      'AND'.  'NE' and 'EQ' are comparisons, so they have class
!      'RTX_COMM_COMPARE'.
  
! 'RTX_BIN_ARITH'
       An RTX code for a non-commutative binary operation, such as
!      'MINUS', 'DIV', or 'ASHIFTRT'.
  
! 'RTX_BITFIELD_OPS'
       An RTX code for a bit-field operation.  Currently only
!      'ZERO_EXTRACT' and 'SIGN_EXTRACT'.  These have three inputs and are
       lvalues (so they can be used for insertion as well).  *Note
       Bit-Fields::.
  
! 'RTX_TERNARY'
       An RTX code for other three input operations.  Currently only
!      'IF_THEN_ELSE', 'VEC_MERGE', 'SIGN_EXTRACT', 'ZERO_EXTRACT', and
!      'FMA'.
  
! 'RTX_INSN'
!      An RTX code for an entire instruction: 'INSN', 'JUMP_INSN', and
!      'CALL_INSN'.  *Note Insns::.
  
! 'RTX_MATCH'
       An RTX code for something that matches in insns, such as
!      'MATCH_DUP'.  These only occur in machine descriptions.
  
! 'RTX_AUTOINC'
       An RTX code for an auto-increment addressing mode, such as
!      'POST_INC'.  'XEXP (X, 0)' gives the auto-modified register.
  
! 'RTX_EXTRA'
       All other RTX codes.  This category includes the remaining codes
!      used only in machine descriptions ('DEFINE_*', etc.).  It also
!      includes all the codes describing side effects ('SET', 'USE',
!      'CLOBBER', etc.)  and the non-insns that may appear on an insn
!      chain, such as 'NOTE', 'BARRIER', and 'CODE_LABEL'.  'SUBREG' is
       also part of this class.
  
!  For each expression code, 'rtl.def' specifies the number of contained
  objects and their kinds using a sequence of characters called the
! "format" of the expression code.  For example, the format of 'subreg' is
! 'ep'.
  
   These are the most commonly used format characters:
  
! 'e'
       An expression (actually a pointer to an expression).
  
! 'i'
       An integer.
  
! 'w'
       A wide integer.
  
! 's'
       A string.
  
! 'E'
       A vector of expressions.
  
   A few other format characters are used occasionally:
  
! 'u'
!      'u' is equivalent to 'e' except that it is printed differently in
       debugging dumps.  It is used for pointers to insns.
  
! 'n'
!      'n' is equivalent to 'i' except that it is printed differently in
       debugging dumps.  It is used for the line number or code number of
!      a 'note' insn.
  
! 'S'
!      'S' indicates a string which is optional.  In the RTL objects in
!      core, 'S' is equivalent to 's', but when the object is read, from
!      an 'md' file, the string value of this operand may be omitted.  An
       omitted string is taken to be the null string.
  
! 'V'
!      'V' indicates a vector which is optional.  In the RTL objects in
!      core, 'V' is equivalent to 'E', but when the object is read from an
!      'md' file, the vector value of this operand may be omitted.  An
       omitted vector is effectively the same as a vector of no elements.
  
! 'B'
!      'B' indicates a pointer to basic block structure.
  
! 'p'
       A polynomial integer.  At present this is used only for
!      'SUBREG_BYTE'.
  
! '0'
!      '0' means a slot whose contents do not fit any normal category.
!      '0' slots are not printed at all in dumps, and are often used in
       special ways by small parts of the compiler.
  
   There are macros to get the number of operands and the format of an
  expression code:
  
! 'GET_RTX_LENGTH (CODE)'
       Number of operands of an RTX of code CODE.
  
! 'GET_RTX_FORMAT (CODE)'
       The format of an RTX of code CODE, as a C string.
  
   Some classes of RTX codes always have the same format.  For example, it
! is safe to assume that all comparison operations have format 'ee'.
  
! 'RTX_UNARY'
!      All codes of this class have format 'e'.
  
! 'RTX_BIN_ARITH'
! 'RTX_COMM_ARITH'
! 'RTX_COMM_COMPARE'
! 'RTX_COMPARE'
!      All codes of these classes have format 'ee'.
  
! 'RTX_BITFIELD_OPS'
! 'RTX_TERNARY'
!      All codes of these classes have format 'eee'.
  
! 'RTX_INSN'
!      All codes of this class have formats that begin with 'iuueiee'.
       *Note Insns::.  Note that not all RTL objects linked onto an insn
!      chain are of class 'RTX_INSN'.
  
! 'RTX_CONST_OBJ'
! 'RTX_OBJ'
! 'RTX_MATCH'
! 'RTX_EXTRA'
       You can make no assumptions about the format of these codes.
  
  
--- 17218,17381 ----
  13.2 RTL Classes and Formats
  ============================
  
! The various expression codes are divided into several â€œclassesâ€�, which
  are represented by single characters.  You can determine the class of an
! RTX code with the macro â€˜GET_RTX_CLASS (CODE)â€™.  Currently, â€˜rtl.defâ€™
  defines these classes:
  
! â€˜RTX_OBJâ€™
       An RTX code that represents an actual object, such as a register
!      (â€˜REGâ€™) or a memory location (â€˜MEMâ€™, â€˜SYMBOL_REFâ€™).  â€˜LO_SUMâ€™ is
!      also included; instead, â€˜SUBREGâ€™ and â€˜STRICT_LOW_PARTâ€™ are not in
!      this class, but in class â€˜RTX_EXTRAâ€™.
  
! â€˜RTX_CONST_OBJâ€™
!      An RTX code that represents a constant object.  â€˜HIGHâ€™ is also
       included in this class.
  
! â€˜RTX_COMPAREâ€™
!      An RTX code for a non-symmetric comparison, such as â€˜GEUâ€™ or â€˜LTâ€™.
  
! â€˜RTX_COMM_COMPAREâ€™
!      An RTX code for a symmetric (commutative) comparison, such as â€˜EQâ€™
!      or â€˜ORDEREDâ€™.
  
! â€˜RTX_UNARYâ€™
!      An RTX code for a unary arithmetic operation, such as â€˜NEGâ€™, â€˜NOTâ€™,
!      or â€˜ABSâ€™.  This category also includes value extension (sign or
       zero) and conversions between integer and floating point.
  
! â€˜RTX_COMM_ARITHâ€™
!      An RTX code for a commutative binary operation, such as â€˜PLUSâ€™ or
!      â€˜ANDâ€™.  â€˜NEâ€™ and â€˜EQâ€™ are comparisons, so they have class
!      â€˜RTX_COMM_COMPAREâ€™.
  
! â€˜RTX_BIN_ARITHâ€™
       An RTX code for a non-commutative binary operation, such as
!      â€˜MINUSâ€™, â€˜DIVâ€™, or â€˜ASHIFTRTâ€™.
  
! â€˜RTX_BITFIELD_OPSâ€™
       An RTX code for a bit-field operation.  Currently only
!      â€˜ZERO_EXTRACTâ€™ and â€˜SIGN_EXTRACTâ€™.  These have three inputs and are
       lvalues (so they can be used for insertion as well).  *Note
       Bit-Fields::.
  
! â€˜RTX_TERNARYâ€™
       An RTX code for other three input operations.  Currently only
!      â€˜IF_THEN_ELSEâ€™, â€˜VEC_MERGEâ€™, â€˜SIGN_EXTRACTâ€™, â€˜ZERO_EXTRACTâ€™, and
!      â€˜FMAâ€™.
  
! â€˜RTX_INSNâ€™
!      An RTX code for an entire instruction: â€˜INSNâ€™, â€˜JUMP_INSNâ€™, and
!      â€˜CALL_INSNâ€™.  *Note Insns::.
  
! â€˜RTX_MATCHâ€™
       An RTX code for something that matches in insns, such as
!      â€˜MATCH_DUPâ€™.  These only occur in machine descriptions.
  
! â€˜RTX_AUTOINCâ€™
       An RTX code for an auto-increment addressing mode, such as
!      â€˜POST_INCâ€™.  â€˜XEXP (X, 0)â€™ gives the auto-modified register.
  
! â€˜RTX_EXTRAâ€™
       All other RTX codes.  This category includes the remaining codes
!      used only in machine descriptions (â€˜DEFINE_*â€™, etc.).  It also
!      includes all the codes describing side effects (â€˜SETâ€™, â€˜USEâ€™,
!      â€˜CLOBBERâ€™, etc.)  and the non-insns that may appear on an insn
!      chain, such as â€˜NOTEâ€™, â€˜BARRIERâ€™, and â€˜CODE_LABELâ€™.  â€˜SUBREGâ€™ is
       also part of this class.
  
!  For each expression code, â€˜rtl.defâ€™ specifies the number of contained
  objects and their kinds using a sequence of characters called the
! â€œformatâ€� of the expression code.  For example, the format of â€˜subregâ€™ is
! â€˜epâ€™.
  
   These are the most commonly used format characters:
  
! â€˜eâ€™
       An expression (actually a pointer to an expression).
  
! â€˜iâ€™
       An integer.
  
! â€˜wâ€™
       A wide integer.
  
! â€˜sâ€™
       A string.
  
! â€˜Eâ€™
       A vector of expressions.
  
   A few other format characters are used occasionally:
  
! â€˜uâ€™
!      â€˜uâ€™ is equivalent to â€˜eâ€™ except that it is printed differently in
       debugging dumps.  It is used for pointers to insns.
  
! â€˜nâ€™
!      â€˜nâ€™ is equivalent to â€˜iâ€™ except that it is printed differently in
       debugging dumps.  It is used for the line number or code number of
!      a â€˜noteâ€™ insn.
  
! â€˜Sâ€™
!      â€˜Sâ€™ indicates a string which is optional.  In the RTL objects in
!      core, â€˜Sâ€™ is equivalent to â€˜sâ€™, but when the object is read, from
!      an â€˜mdâ€™ file, the string value of this operand may be omitted.  An
       omitted string is taken to be the null string.
  
! â€˜Vâ€™
!      â€˜Vâ€™ indicates a vector which is optional.  In the RTL objects in
!      core, â€˜Vâ€™ is equivalent to â€˜Eâ€™, but when the object is read from an
!      â€˜mdâ€™ file, the vector value of this operand may be omitted.  An
       omitted vector is effectively the same as a vector of no elements.
  
! â€˜Bâ€™
!      â€˜Bâ€™ indicates a pointer to basic block structure.
  
! â€˜pâ€™
       A polynomial integer.  At present this is used only for
!      â€˜SUBREG_BYTEâ€™.
  
! â€˜0â€™
!      â€˜0â€™ means a slot whose contents do not fit any normal category.
!      â€˜0â€™ slots are not printed at all in dumps, and are often used in
       special ways by small parts of the compiler.
  
   There are macros to get the number of operands and the format of an
  expression code:
  
! â€˜GET_RTX_LENGTH (CODE)â€™
       Number of operands of an RTX of code CODE.
  
! â€˜GET_RTX_FORMAT (CODE)â€™
       The format of an RTX of code CODE, as a C string.
  
   Some classes of RTX codes always have the same format.  For example, it
! is safe to assume that all comparison operations have format â€˜eeâ€™.
  
! â€˜RTX_UNARYâ€™
!      All codes of this class have format â€˜eâ€™.
  
! â€˜RTX_BIN_ARITHâ€™
! â€˜RTX_COMM_ARITHâ€™
! â€˜RTX_COMM_COMPAREâ€™
! â€˜RTX_COMPAREâ€™
!      All codes of these classes have format â€˜eeâ€™.
  
! â€˜RTX_BITFIELD_OPSâ€™
! â€˜RTX_TERNARYâ€™
!      All codes of these classes have format â€˜eeeâ€™.
  
! â€˜RTX_INSNâ€™
!      All codes of this class have formats that begin with â€˜iuueieeâ€™.
       *Note Insns::.  Note that not all RTL objects linked onto an insn
!      chain are of class â€˜RTX_INSNâ€™.
  
! â€˜RTX_CONST_OBJâ€™
! â€˜RTX_OBJâ€™
! â€˜RTX_MATCHâ€™
! â€˜RTX_EXTRAâ€™
       You can make no assumptions about the format of these codes.
  
  
*************** File: gccint.info,  Node: Accessors,  Ne
*** 17379,17386 ****
  13.3 Access to Operands
  =======================
  
! Operands of expressions are accessed using the macros 'XEXP', 'XINT',
! 'XWINT' and 'XSTR'.  Each of these macros takes two arguments: an
  expression-pointer (RTX) and an operand number (counting from zero).
  Thus,
  
--- 17384,17391 ----
  13.3 Access to Operands
  =======================
  
! Operands of expressions are accessed using the macros â€˜XEXPâ€™, â€˜XINTâ€™,
! â€˜XWINTâ€™ and â€˜XSTRâ€™.  Each of these macros takes two arguments: an
  expression-pointer (RTX) and an operand number (counting from zero).
  Thus,
  
*************** accesses operand 2 of expression X, as a
*** 17390,17396 ****
  
       XINT (X, 2)
  
! accesses the same operand as an integer.  'XSTR', used in the same
  fashion, would access it as a string.
  
   Any operand can be accessed as an integer, as an expression or as a
--- 17395,17401 ----
  
       XINT (X, 2)
  
! accesses the same operand as an integer.  â€˜XSTRâ€™, used in the same
  fashion, would access it as a string.
  
   Any operand can be accessed as an integer, as an expression or as a
*************** value actually stored in the operand.  Y
*** 17399,17429 ****
  expression code of the containing expression.  That is also how you
  would know how many operands there are.
  
!  For example, if X is an 'int_list' expression, you know that it has two
! operands which can be correctly accessed as 'XINT (X, 0)' and 'XEXP (X,
! 1)'.  Incorrect accesses like 'XEXP (X, 0)' and 'XINT (X, 1)' would
  compile, but would trigger an internal compiler error when rtl checking
! is enabled.  Nothing stops you from writing 'XEXP (X, 28)' either, but
  this will access memory past the end of the expression with
  unpredictable results.
  
   Access to operands which are vectors is more complicated.  You can use
! the macro 'XVEC' to get the vector-pointer itself, or the macros
! 'XVECEXP' and 'XVECLEN' to access the elements and length of a vector.
  
! 'XVEC (EXP, IDX)'
       Access the vector-pointer which is operand number IDX in EXP.
  
! 'XVECLEN (EXP, IDX)'
       Access the length (number of elements) in the vector which is in
!      operand number IDX in EXP.  This value is an 'int'.
  
! 'XVECEXP (EXP, IDX, ELTNUM)'
       Access element number ELTNUM in the vector which is in operand
       number IDX in EXP.  This value is an RTX.
  
       It is up to you to make sure that ELTNUM is not negative and is
!      less than 'XVECLEN (EXP, IDX)'.
  
   All the macros defined in this section expand into lvalues and
  therefore can be used to assign the operands, lengths and vector
--- 17404,17434 ----
  expression code of the containing expression.  That is also how you
  would know how many operands there are.
  
!  For example, if X is an â€˜int_listâ€™ expression, you know that it has two
! operands which can be correctly accessed as â€˜XINT (X, 0)â€™ and â€˜XEXP (X,
! 1)â€™.  Incorrect accesses like â€˜XEXP (X, 0)â€™ and â€˜XINT (X, 1)â€™ would
  compile, but would trigger an internal compiler error when rtl checking
! is enabled.  Nothing stops you from writing â€˜XEXP (X, 28)â€™ either, but
  this will access memory past the end of the expression with
  unpredictable results.
  
   Access to operands which are vectors is more complicated.  You can use
! the macro â€˜XVECâ€™ to get the vector-pointer itself, or the macros
! â€˜XVECEXPâ€™ and â€˜XVECLENâ€™ to access the elements and length of a vector.
  
! â€˜XVEC (EXP, IDX)â€™
       Access the vector-pointer which is operand number IDX in EXP.
  
! â€˜XVECLEN (EXP, IDX)â€™
       Access the length (number of elements) in the vector which is in
!      operand number IDX in EXP.  This value is an â€˜intâ€™.
  
! â€˜XVECEXP (EXP, IDX, ELTNUM)â€™
       Access element number ELTNUM in the vector which is in operand
       number IDX in EXP.  This value is an RTX.
  
       It is up to you to make sure that ELTNUM is not negative and is
!      less than â€˜XVECLEN (EXP, IDX)â€™.
  
   All the macros defined in this section expand into lvalues and
  therefore can be used to assign the operands, lengths and vector
*************** File: gccint.info,  Node: Special Access
*** 17437,17572 ****
  
  Some RTL nodes have special annotations associated with them.
  
! 'MEM'
!      'MEM_ALIAS_SET (X)'
            If 0, X is not in any alias set, and may alias anything.
!           Otherwise, X can only alias 'MEM's in a conflicting alias set.
            This value is set in a language-dependent manner in the
            front-end, and should not be altered in the back-end.  In some
            front-ends, these numbers may correspond in some way to types,
            or other language-level entities, but they need not, and the
            back-end makes no such assumptions.  These set numbers are
!           tested with 'alias_sets_conflict_p'.
  
!      'MEM_EXPR (X)'
            If this register is known to hold the value of some user-level
            declaration, this is that tree node.  It may also be a
!           'COMPONENT_REF', in which case this is some field reference,
!           and 'TREE_OPERAND (X, 0)' contains the declaration, or another
!           'COMPONENT_REF', or null if there is no compile-time object
            associated with the reference.
  
!      'MEM_OFFSET_KNOWN_P (X)'
!           True if the offset of the memory reference from 'MEM_EXPR' is
!           known.  'MEM_OFFSET (X)' provides the offset if so.
  
!      'MEM_OFFSET (X)'
!           The offset from the start of 'MEM_EXPR'.  The value is only
!           valid if 'MEM_OFFSET_KNOWN_P (X)' is true.
  
!      'MEM_SIZE_KNOWN_P (X)'
!           True if the size of the memory reference is known.  'MEM_SIZE
!           (X)' provides its size if so.
  
!      'MEM_SIZE (X)'
            The size in bytes of the memory reference.  This is mostly
!           relevant for 'BLKmode' references as otherwise the size is
            implied by the mode.  The value is only valid if
!           'MEM_SIZE_KNOWN_P (X)' is true.
  
!      'MEM_ALIGN (X)'
            The known alignment in bits of the memory reference.
  
!      'MEM_ADDR_SPACE (X)'
            The address space of the memory reference.  This will commonly
            be zero for the generic address space.
  
! 'REG'
!      'ORIGINAL_REGNO (X)'
            This field holds the number the register "originally" had; for
            a pseudo register turned into a hard reg this will hold the
            old pseudo register number.
  
!      'REG_EXPR (X)'
            If this register is known to hold the value of some user-level
            declaration, this is that tree node.
  
!      'REG_OFFSET (X)'
            If this register is known to hold the value of some user-level
            declaration, this is the offset into that logical storage.
  
! 'SYMBOL_REF'
!      'SYMBOL_REF_DECL (X)'
!           If the 'symbol_ref' X was created for a 'VAR_DECL' or a
!           'FUNCTION_DECL', that tree is recorded here.  If this value is
            null, then X was created by back end code generation routines,
            and there is no associated front end symbol table entry.
  
!           'SYMBOL_REF_DECL' may also point to a tree of class ''c'',
            that is, some sort of constant.  In this case, the
!           'symbol_ref' is an entry in the per-file constant pool; again,
            there is no associated front end symbol table entry.
  
!      'SYMBOL_REF_CONSTANT (X)'
!           If 'CONSTANT_POOL_ADDRESS_P (X)' is true, this is the constant
            pool entry for X.  It is null otherwise.
  
!      'SYMBOL_REF_DATA (X)'
!           A field of opaque type used to store 'SYMBOL_REF_DECL' or
!           'SYMBOL_REF_CONSTANT'.
  
!      'SYMBOL_REF_FLAGS (X)'
!           In a 'symbol_ref', this is used to communicate various
            predicates about the symbol.  Some of these are common enough
            to be computed by common code, some are specific to the
            target.  The common bits are:
  
!           'SYMBOL_FLAG_FUNCTION'
                 Set if the symbol refers to a function.
  
!           'SYMBOL_FLAG_LOCAL'
                 Set if the symbol is local to this "module".  See
!                'TARGET_BINDS_LOCAL_P'.
  
!           'SYMBOL_FLAG_EXTERNAL'
                 Set if this symbol is not defined in this translation
                 unit.  Note that this is not the inverse of
!                'SYMBOL_FLAG_LOCAL'.
  
!           'SYMBOL_FLAG_SMALL'
                 Set if the symbol is located in the small data section.
!                See 'TARGET_IN_SMALL_DATA_P'.
  
!           'SYMBOL_REF_TLS_MODEL (X)'
                 This is a multi-bit field accessor that returns the
!                'tls_model' to be used for a thread-local storage symbol.
                 It returns zero for non-thread-local symbols.
  
!           'SYMBOL_FLAG_HAS_BLOCK_INFO'
!                Set if the symbol has 'SYMBOL_REF_BLOCK' and
!                'SYMBOL_REF_BLOCK_OFFSET' fields.
  
!           'SYMBOL_FLAG_ANCHOR'
                 Set if the symbol is used as a section anchor.  "Section
                 anchors" are symbols that have a known position within an
!                'object_block' and that can be used to access nearby
                 members of that block.  They are used to implement
!                '-fsection-anchors'.
  
!                If this flag is set, then 'SYMBOL_FLAG_HAS_BLOCK_INFO'
                 will be too.
  
!           Bits beginning with 'SYMBOL_FLAG_MACH_DEP' are available for
            the target's use.
  
! 'SYMBOL_REF_BLOCK (X)'
!      If 'SYMBOL_REF_HAS_BLOCK_INFO_P (X)', this is the 'object_block'
!      structure to which the symbol belongs, or 'NULL' if it has not been
       assigned a block.
  
! 'SYMBOL_REF_BLOCK_OFFSET (X)'
!      If 'SYMBOL_REF_HAS_BLOCK_INFO_P (X)', this is the offset of X from
!      the first object in 'SYMBOL_REF_BLOCK (X)'.  The value is negative
       if X has not yet been assigned to a block, or it has not been given
       an offset within that block.
  
--- 17442,17577 ----
  
  Some RTL nodes have special annotations associated with them.
  
! â€˜MEMâ€™
!      â€˜MEM_ALIAS_SET (X)â€™
            If 0, X is not in any alias set, and may alias anything.
!           Otherwise, X can only alias â€˜MEMâ€™s in a conflicting alias set.
            This value is set in a language-dependent manner in the
            front-end, and should not be altered in the back-end.  In some
            front-ends, these numbers may correspond in some way to types,
            or other language-level entities, but they need not, and the
            back-end makes no such assumptions.  These set numbers are
!           tested with â€˜alias_sets_conflict_pâ€™.
  
!      â€˜MEM_EXPR (X)â€™
            If this register is known to hold the value of some user-level
            declaration, this is that tree node.  It may also be a
!           â€˜COMPONENT_REFâ€™, in which case this is some field reference,
!           and â€˜TREE_OPERAND (X, 0)â€™ contains the declaration, or another
!           â€˜COMPONENT_REFâ€™, or null if there is no compile-time object
            associated with the reference.
  
!      â€˜MEM_OFFSET_KNOWN_P (X)â€™
!           True if the offset of the memory reference from â€˜MEM_EXPRâ€™ is
!           known.  â€˜MEM_OFFSET (X)â€™ provides the offset if so.
  
!      â€˜MEM_OFFSET (X)â€™
!           The offset from the start of â€˜MEM_EXPRâ€™.  The value is only
!           valid if â€˜MEM_OFFSET_KNOWN_P (X)â€™ is true.
  
!      â€˜MEM_SIZE_KNOWN_P (X)â€™
!           True if the size of the memory reference is known.  â€˜MEM_SIZE
!           (X)â€™ provides its size if so.
  
!      â€˜MEM_SIZE (X)â€™
            The size in bytes of the memory reference.  This is mostly
!           relevant for â€˜BLKmodeâ€™ references as otherwise the size is
            implied by the mode.  The value is only valid if
!           â€˜MEM_SIZE_KNOWN_P (X)â€™ is true.
  
!      â€˜MEM_ALIGN (X)â€™
            The known alignment in bits of the memory reference.
  
!      â€˜MEM_ADDR_SPACE (X)â€™
            The address space of the memory reference.  This will commonly
            be zero for the generic address space.
  
! â€˜REGâ€™
!      â€˜ORIGINAL_REGNO (X)â€™
            This field holds the number the register "originally" had; for
            a pseudo register turned into a hard reg this will hold the
            old pseudo register number.
  
!      â€˜REG_EXPR (X)â€™
            If this register is known to hold the value of some user-level
            declaration, this is that tree node.
  
!      â€˜REG_OFFSET (X)â€™
            If this register is known to hold the value of some user-level
            declaration, this is the offset into that logical storage.
  
! â€˜SYMBOL_REFâ€™
!      â€˜SYMBOL_REF_DECL (X)â€™
!           If the â€˜symbol_refâ€™ X was created for a â€˜VAR_DECLâ€™ or a
!           â€˜FUNCTION_DECLâ€™, that tree is recorded here.  If this value is
            null, then X was created by back end code generation routines,
            and there is no associated front end symbol table entry.
  
!           â€˜SYMBOL_REF_DECLâ€™ may also point to a tree of class â€˜'c'â€™,
            that is, some sort of constant.  In this case, the
!           â€˜symbol_refâ€™ is an entry in the per-file constant pool; again,
            there is no associated front end symbol table entry.
  
!      â€˜SYMBOL_REF_CONSTANT (X)â€™
!           If â€˜CONSTANT_POOL_ADDRESS_P (X)â€™ is true, this is the constant
            pool entry for X.  It is null otherwise.
  
!      â€˜SYMBOL_REF_DATA (X)â€™
!           A field of opaque type used to store â€˜SYMBOL_REF_DECLâ€™ or
!           â€˜SYMBOL_REF_CONSTANTâ€™.
  
!      â€˜SYMBOL_REF_FLAGS (X)â€™
!           In a â€˜symbol_refâ€™, this is used to communicate various
            predicates about the symbol.  Some of these are common enough
            to be computed by common code, some are specific to the
            target.  The common bits are:
  
!           â€˜SYMBOL_FLAG_FUNCTIONâ€™
                 Set if the symbol refers to a function.
  
!           â€˜SYMBOL_FLAG_LOCALâ€™
                 Set if the symbol is local to this "module".  See
!                â€˜TARGET_BINDS_LOCAL_Pâ€™.
  
!           â€˜SYMBOL_FLAG_EXTERNALâ€™
                 Set if this symbol is not defined in this translation
                 unit.  Note that this is not the inverse of
!                â€˜SYMBOL_FLAG_LOCALâ€™.
  
!           â€˜SYMBOL_FLAG_SMALLâ€™
                 Set if the symbol is located in the small data section.
!                See â€˜TARGET_IN_SMALL_DATA_Pâ€™.
  
!           â€˜SYMBOL_REF_TLS_MODEL (X)â€™
                 This is a multi-bit field accessor that returns the
!                â€˜tls_modelâ€™ to be used for a thread-local storage symbol.
                 It returns zero for non-thread-local symbols.
  
!           â€˜SYMBOL_FLAG_HAS_BLOCK_INFOâ€™
!                Set if the symbol has â€˜SYMBOL_REF_BLOCKâ€™ and
!                â€˜SYMBOL_REF_BLOCK_OFFSETâ€™ fields.
  
!           â€˜SYMBOL_FLAG_ANCHORâ€™
                 Set if the symbol is used as a section anchor.  "Section
                 anchors" are symbols that have a known position within an
!                â€˜object_blockâ€™ and that can be used to access nearby
                 members of that block.  They are used to implement
!                â€˜-fsection-anchorsâ€™.
  
!                If this flag is set, then â€˜SYMBOL_FLAG_HAS_BLOCK_INFOâ€™
                 will be too.
  
!           Bits beginning with â€˜SYMBOL_FLAG_MACH_DEPâ€™ are available for
            the target's use.
  
! â€˜SYMBOL_REF_BLOCK (X)â€™
!      If â€˜SYMBOL_REF_HAS_BLOCK_INFO_P (X)â€™, this is the â€˜object_blockâ€™
!      structure to which the symbol belongs, or â€˜NULLâ€™ if it has not been
       assigned a block.
  
! â€˜SYMBOL_REF_BLOCK_OFFSET (X)â€™
!      If â€˜SYMBOL_REF_HAS_BLOCK_INFO_P (X)â€™, this is the offset of X from
!      the first object in â€˜SYMBOL_REF_BLOCK (X)â€™.  The value is negative
       if X has not yet been assigned to a block, or it has not been given
       an offset within that block.
  
*************** RTL expressions contain several flags (o
*** 17580,17587 ****
  in certain types of expression.  Most often they are accessed with the
  following macros, which expand into lvalues.
  
! 'CROSSING_JUMP_P (X)'
!      Nonzero in a 'jump_insn' if it crosses between hot and cold
       sections, which could potentially be very far apart in the
       executable.  The presence of this flag indicates to other
       optimizations that this branching instruction should not be
--- 17585,17592 ----
  in certain types of expression.  Most often they are accessed with the
  following macros, which expand into lvalues.
  
! â€˜CROSSING_JUMP_P (X)â€™
!      Nonzero in a â€˜jump_insnâ€™ if it crosses between hot and cold
       sections, which could potentially be very far apart in the
       executable.  The presence of this flag indicates to other
       optimizations that this branching instruction should not be
*************** following macros, which expand into lval
*** 17589,17655 ****
       the optimization to partition basic blocks into hot and cold
       sections is turned on.
  
! 'CONSTANT_POOL_ADDRESS_P (X)'
!      Nonzero in a 'symbol_ref' if it refers to part of the current
       function's constant pool.  For most targets these addresses are in
!      a '.rodata' section entirely separate from the function, but for
       some targets the addresses are close to the beginning of the
       function.  In either case GCC assumes these addresses can be
       addressed directly, perhaps with the help of base registers.
!      Stored in the 'unchanging' field and printed as '/u'.
  
! 'INSN_ANNULLED_BRANCH_P (X)'
!      In a 'jump_insn', 'call_insn', or 'insn' indicates that the branch
!      is an annulling one.  See the discussion under 'sequence' below.
!      Stored in the 'unchanging' field and printed as '/u'.
  
! 'INSN_DELETED_P (X)'
!      In an 'insn', 'call_insn', 'jump_insn', 'code_label',
!      'jump_table_data', 'barrier', or 'note', nonzero if the insn has
!      been deleted.  Stored in the 'volatil' field and printed as '/v'.
  
! 'INSN_FROM_TARGET_P (X)'
!      In an 'insn' or 'jump_insn' or 'call_insn' in a delay slot of a
       branch, indicates that the insn is from the target of the branch.
!      If the branch insn has 'INSN_ANNULLED_BRANCH_P' set, this insn will
       only be executed if the branch is taken.  For annulled branches
!      with 'INSN_FROM_TARGET_P' clear, the insn will be executed only if
!      the branch is not taken.  When 'INSN_ANNULLED_BRANCH_P' is not set,
!      this insn will always be executed.  Stored in the 'in_struct' field
!      and printed as '/s'.
  
! 'LABEL_PRESERVE_P (X)'
!      In a 'code_label' or 'note', indicates that the label is referenced
       by code or data not visible to the RTL of a given function.  Labels
       referenced by a non-local goto will have this bit set.  Stored in
!      the 'in_struct' field and printed as '/s'.
  
! 'LABEL_REF_NONLOCAL_P (X)'
!      In 'label_ref' and 'reg_label' expressions, nonzero if this is a
!      reference to a non-local label.  Stored in the 'volatil' field and
!      printed as '/v'.
  
! 'MEM_KEEP_ALIAS_SET_P (X)'
!      In 'mem' expressions, 1 if we should keep the alias set for this
       mem unchanged when we access a component.  Set to 1, for example,
       when we are already in a non-addressable component of an aggregate.
!      Stored in the 'jump' field and printed as '/j'.
  
! 'MEM_VOLATILE_P (X)'
!      In 'mem', 'asm_operands', and 'asm_input' expressions, nonzero for
!      volatile memory references.  Stored in the 'volatil' field and
!      printed as '/v'.
  
! 'MEM_NOTRAP_P (X)'
!      In 'mem', nonzero for memory references that will not trap.  Stored
!      in the 'call' field and printed as '/c'.
  
! 'MEM_POINTER (X)'
!      Nonzero in a 'mem' if the memory reference holds a pointer.  Stored
!      in the 'frame_related' field and printed as '/f'.
  
! 'MEM_READONLY_P (X)'
!      Nonzero in a 'mem', if the memory is statically allocated and
       read-only.
  
       Read-only in this context means never modified during the lifetime
--- 17594,17660 ----
       the optimization to partition basic blocks into hot and cold
       sections is turned on.
  
! â€˜CONSTANT_POOL_ADDRESS_P (X)â€™
!      Nonzero in a â€˜symbol_refâ€™ if it refers to part of the current
       function's constant pool.  For most targets these addresses are in
!      a â€˜.rodataâ€™ section entirely separate from the function, but for
       some targets the addresses are close to the beginning of the
       function.  In either case GCC assumes these addresses can be
       addressed directly, perhaps with the help of base registers.
!      Stored in the â€˜unchangingâ€™ field and printed as â€˜/uâ€™.
  
! â€˜INSN_ANNULLED_BRANCH_P (X)â€™
!      In a â€˜jump_insnâ€™, â€˜call_insnâ€™, or â€˜insnâ€™ indicates that the branch
!      is an annulling one.  See the discussion under â€˜sequenceâ€™ below.
!      Stored in the â€˜unchangingâ€™ field and printed as â€˜/uâ€™.
  
! â€˜INSN_DELETED_P (X)â€™
!      In an â€˜insnâ€™, â€˜call_insnâ€™, â€˜jump_insnâ€™, â€˜code_labelâ€™,
!      â€˜jump_table_dataâ€™, â€˜barrierâ€™, or â€˜noteâ€™, nonzero if the insn has
!      been deleted.  Stored in the â€˜volatilâ€™ field and printed as â€˜/vâ€™.
  
! â€˜INSN_FROM_TARGET_P (X)â€™
!      In an â€˜insnâ€™ or â€˜jump_insnâ€™ or â€˜call_insnâ€™ in a delay slot of a
       branch, indicates that the insn is from the target of the branch.
!      If the branch insn has â€˜INSN_ANNULLED_BRANCH_Pâ€™ set, this insn will
       only be executed if the branch is taken.  For annulled branches
!      with â€˜INSN_FROM_TARGET_Pâ€™ clear, the insn will be executed only if
!      the branch is not taken.  When â€˜INSN_ANNULLED_BRANCH_Pâ€™ is not set,
!      this insn will always be executed.  Stored in the â€˜in_structâ€™ field
!      and printed as â€˜/sâ€™.
  
! â€˜LABEL_PRESERVE_P (X)â€™
!      In a â€˜code_labelâ€™ or â€˜noteâ€™, indicates that the label is referenced
       by code or data not visible to the RTL of a given function.  Labels
       referenced by a non-local goto will have this bit set.  Stored in
!      the â€˜in_structâ€™ field and printed as â€˜/sâ€™.
  
! â€˜LABEL_REF_NONLOCAL_P (X)â€™
!      In â€˜label_refâ€™ and â€˜reg_labelâ€™ expressions, nonzero if this is a
!      reference to a non-local label.  Stored in the â€˜volatilâ€™ field and
!      printed as â€˜/vâ€™.
  
! â€˜MEM_KEEP_ALIAS_SET_P (X)â€™
!      In â€˜memâ€™ expressions, 1 if we should keep the alias set for this
       mem unchanged when we access a component.  Set to 1, for example,
       when we are already in a non-addressable component of an aggregate.
!      Stored in the â€˜jumpâ€™ field and printed as â€˜/jâ€™.
  
! â€˜MEM_VOLATILE_P (X)â€™
!      In â€˜memâ€™, â€˜asm_operandsâ€™, and â€˜asm_inputâ€™ expressions, nonzero for
!      volatile memory references.  Stored in the â€˜volatilâ€™ field and
!      printed as â€˜/vâ€™.
  
! â€˜MEM_NOTRAP_P (X)â€™
!      In â€˜memâ€™, nonzero for memory references that will not trap.  Stored
!      in the â€˜callâ€™ field and printed as â€˜/câ€™.
  
! â€˜MEM_POINTER (X)â€™
!      Nonzero in a â€˜memâ€™ if the memory reference holds a pointer.  Stored
!      in the â€˜frame_relatedâ€™ field and printed as â€˜/fâ€™.
  
! â€˜MEM_READONLY_P (X)â€™
!      Nonzero in a â€˜memâ€™, if the memory is statically allocated and
       read-only.
  
       Read-only in this context means never modified during the lifetime
*************** following macros, which expand into lval
*** 17660,17717 ****
       from the runtime loader to the application, this memory will never
       be subsequently modified.
  
!      Stored in the 'unchanging' field and printed as '/u'.
  
! 'PREFETCH_SCHEDULE_BARRIER_P (X)'
!      In a 'prefetch', indicates that the prefetch is a scheduling
       barrier.  No other INSNs will be moved over it.  Stored in the
!      'volatil' field and printed as '/v'.
  
! 'REG_FUNCTION_VALUE_P (X)'
!      Nonzero in a 'reg' if it is the place in which this function's
       value is going to be returned.  (This happens only in a hard
!      register.)  Stored in the 'return_val' field and printed as '/i'.
  
! 'REG_POINTER (X)'
!      Nonzero in a 'reg' if the register holds a pointer.  Stored in the
!      'frame_related' field and printed as '/f'.
  
! 'REG_USERVAR_P (X)'
!      In a 'reg', nonzero if it corresponds to a variable present in the
       user's source code.  Zero for temporaries generated internally by
!      the compiler.  Stored in the 'volatil' field and printed as '/v'.
  
       The same hard register may be used also for collecting the values
!      of functions called by this one, but 'REG_FUNCTION_VALUE_P' is zero
       in this kind of use.
  
! 'RTL_CONST_CALL_P (X)'
!      In a 'call_insn' indicates that the insn represents a call to a
!      const function.  Stored in the 'unchanging' field and printed as
!      '/u'.
  
! 'RTL_PURE_CALL_P (X)'
!      In a 'call_insn' indicates that the insn represents a call to a
!      pure function.  Stored in the 'return_val' field and printed as
!      '/i'.
  
! 'RTL_CONST_OR_PURE_CALL_P (X)'
!      In a 'call_insn', true if 'RTL_CONST_CALL_P' or 'RTL_PURE_CALL_P'
       is true.
  
! 'RTL_LOOPING_CONST_OR_PURE_CALL_P (X)'
!      In a 'call_insn' indicates that the insn represents a possibly
       infinite looping call to a const or pure function.  Stored in the
!      'call' field and printed as '/c'.  Only true if one of
!      'RTL_CONST_CALL_P' or 'RTL_PURE_CALL_P' is true.
  
! 'RTX_FRAME_RELATED_P (X)'
!      Nonzero in an 'insn', 'call_insn', 'jump_insn', 'barrier', or 'set'
       which is part of a function prologue and sets the stack pointer,
       sets the frame pointer, or saves a register.  This flag should also
       be set on an instruction that sets up a temporary register to use
!      in place of the frame pointer.  Stored in the 'frame_related' field
!      and printed as '/f'.
  
       In particular, on RISC targets where there are limits on the sizes
       of immediate constants, it is sometimes impossible to reach the
--- 17665,17722 ----
       from the runtime loader to the application, this memory will never
       be subsequently modified.
  
!      Stored in the â€˜unchangingâ€™ field and printed as â€˜/uâ€™.
  
! â€˜PREFETCH_SCHEDULE_BARRIER_P (X)â€™
!      In a â€˜prefetchâ€™, indicates that the prefetch is a scheduling
       barrier.  No other INSNs will be moved over it.  Stored in the
!      â€˜volatilâ€™ field and printed as â€˜/vâ€™.
  
! â€˜REG_FUNCTION_VALUE_P (X)â€™
!      Nonzero in a â€˜regâ€™ if it is the place in which this function's
       value is going to be returned.  (This happens only in a hard
!      register.)  Stored in the â€˜return_valâ€™ field and printed as â€˜/iâ€™.
  
! â€˜REG_POINTER (X)â€™
!      Nonzero in a â€˜regâ€™ if the register holds a pointer.  Stored in the
!      â€˜frame_relatedâ€™ field and printed as â€˜/fâ€™.
  
! â€˜REG_USERVAR_P (X)â€™
!      In a â€˜regâ€™, nonzero if it corresponds to a variable present in the
       user's source code.  Zero for temporaries generated internally by
!      the compiler.  Stored in the â€˜volatilâ€™ field and printed as â€˜/vâ€™.
  
       The same hard register may be used also for collecting the values
!      of functions called by this one, but â€˜REG_FUNCTION_VALUE_Pâ€™ is zero
       in this kind of use.
  
! â€˜RTL_CONST_CALL_P (X)â€™
!      In a â€˜call_insnâ€™ indicates that the insn represents a call to a
!      const function.  Stored in the â€˜unchangingâ€™ field and printed as
!      â€˜/uâ€™.
  
! â€˜RTL_PURE_CALL_P (X)â€™
!      In a â€˜call_insnâ€™ indicates that the insn represents a call to a
!      pure function.  Stored in the â€˜return_valâ€™ field and printed as
!      â€˜/iâ€™.
  
! â€˜RTL_CONST_OR_PURE_CALL_P (X)â€™
!      In a â€˜call_insnâ€™, true if â€˜RTL_CONST_CALL_Pâ€™ or â€˜RTL_PURE_CALL_Pâ€™
       is true.
  
! â€˜RTL_LOOPING_CONST_OR_PURE_CALL_P (X)â€™
!      In a â€˜call_insnâ€™ indicates that the insn represents a possibly
       infinite looping call to a const or pure function.  Stored in the
!      â€˜callâ€™ field and printed as â€˜/câ€™.  Only true if one of
!      â€˜RTL_CONST_CALL_Pâ€™ or â€˜RTL_PURE_CALL_Pâ€™ is true.
  
! â€˜RTX_FRAME_RELATED_P (X)â€™
!      Nonzero in an â€˜insnâ€™, â€˜call_insnâ€™, â€˜jump_insnâ€™, â€˜barrierâ€™, or â€˜setâ€™
       which is part of a function prologue and sets the stack pointer,
       sets the frame pointer, or saves a register.  This flag should also
       be set on an instruction that sets up a temporary register to use
!      in place of the frame pointer.  Stored in the â€˜frame_relatedâ€™ field
!      and printed as â€˜/fâ€™.
  
       In particular, on RISC targets where there are limits on the sizes
       of immediate constants, it is sometimes impossible to reach the
*************** following macros, which expand into lval
*** 17720,17934 ****
       save area, and the Canonical Frame Address, i.e., DWARF2's logical
       frame pointer, register must (temporarily) be changed to be this
       temporary register.  So, the instruction that sets this temporary
!      register must be marked as 'RTX_FRAME_RELATED_P'.
  
       If the marked instruction is overly complex (defined in terms of
!      what 'dwarf2out_frame_debug_expr' can handle), you will also have
!      to create a 'REG_FRAME_RELATED_EXPR' note and attach it to the
       instruction.  This note should contain a simple expression of the
       computation performed by this instruction, i.e., one that
!      'dwarf2out_frame_debug_expr' can handle.
  
       This flag is required for exception handling support on targets
       with RTL prologues.
  
! 'SCHED_GROUP_P (X)'
!      During instruction scheduling, in an 'insn', 'call_insn',
!      'jump_insn' or 'jump_table_data', indicates that the previous insn
       must be scheduled together with this insn.  This is used to ensure
       that certain groups of instructions will not be split up by the
!      instruction scheduling pass, for example, 'use' insns before a
!      'call_insn' may not be separated from the 'call_insn'.  Stored in
!      the 'in_struct' field and printed as '/s'.
  
! 'SET_IS_RETURN_P (X)'
!      For a 'set', nonzero if it is for a return.  Stored in the 'jump'
!      field and printed as '/j'.
  
! 'SIBLING_CALL_P (X)'
!      For a 'call_insn', nonzero if the insn is a sibling call.  Stored
!      in the 'jump' field and printed as '/j'.
  
! 'STRING_POOL_ADDRESS_P (X)'
!      For a 'symbol_ref' expression, nonzero if it addresses this
!      function's string constant pool.  Stored in the 'frame_related'
!      field and printed as '/f'.
  
! 'SUBREG_PROMOTED_UNSIGNED_P (X)'
!      Returns a value greater then zero for a 'subreg' that has
!      'SUBREG_PROMOTED_VAR_P' nonzero if the object being referenced is
       kept zero-extended, zero if it is kept sign-extended, and less then
!      zero if it is extended some other way via the 'ptr_extend'
!      instruction.  Stored in the 'unchanging' field and 'volatil' field,
!      printed as '/u' and '/v'.  This macro may only be used to get the
       value it may not be used to change the value.  Use
!      'SUBREG_PROMOTED_UNSIGNED_SET' to change the value.
  
! 'SUBREG_PROMOTED_UNSIGNED_SET (X)'
!      Set the 'unchanging' and 'volatil' fields in a 'subreg' to reflect
!      zero, sign, or other extension.  If 'volatil' is zero, then
!      'unchanging' as nonzero means zero extension and as zero means sign
!      extension.  If 'volatil' is nonzero then some other type of
!      extension was done via the 'ptr_extend' instruction.
  
! 'SUBREG_PROMOTED_VAR_P (X)'
!      Nonzero in a 'subreg' if it was made when accessing an object that
!      was promoted to a wider mode in accord with the 'PROMOTED_MODE'
       machine description macro (*note Storage Layout::).  In this case,
!      the mode of the 'subreg' is the declared mode of the object and the
!      mode of 'SUBREG_REG' is the mode of the register that holds the
       object.  Promoted variables are always either sign- or
       zero-extended to the wider mode on every assignment.  Stored in the
!      'in_struct' field and printed as '/s'.
  
! 'SYMBOL_REF_USED (X)'
!      In a 'symbol_ref', indicates that X has been used.  This is
       normally only used to ensure that X is only declared external once.
!      Stored in the 'used' field.
  
! 'SYMBOL_REF_WEAK (X)'
!      In a 'symbol_ref', indicates that X has been declared weak.  Stored
!      in the 'return_val' field and printed as '/i'.
  
! 'SYMBOL_REF_FLAG (X)'
!      In a 'symbol_ref', this is used as a flag for machine-specific
!      purposes.  Stored in the 'volatil' field and printed as '/v'.
  
!      Most uses of 'SYMBOL_REF_FLAG' are historic and may be subsumed by
!      'SYMBOL_REF_FLAGS'.  Certainly use of 'SYMBOL_REF_FLAGS' is
       mandatory if the target requires more than one bit of storage.
  
   These are the fields to which the above macros refer:
  
! 'call'
!      In a 'mem', 1 means that the memory reference will not trap.
  
!      In a 'call', 1 means that this pure or const call may possibly
       infinite loop.
  
!      In an RTL dump, this flag is represented as '/c'.
  
! 'frame_related'
!      In an 'insn' or 'set' expression, 1 means that it is part of a
       function prologue and sets the stack pointer, sets the frame
       pointer, saves a register, or sets up a temporary register to use
       in place of the frame pointer.
  
!      In 'reg' expressions, 1 means that the register holds a pointer.
  
!      In 'mem' expressions, 1 means that the memory reference holds a
       pointer.
  
!      In 'symbol_ref' expressions, 1 means that the reference addresses
       this function's string constant pool.
  
!      In an RTL dump, this flag is represented as '/f'.
  
! 'in_struct'
!      In 'reg' expressions, it is 1 if the register has its entire life
       contained within the test expression of some loop.
  
!      In 'subreg' expressions, 1 means that the 'subreg' is accessing an
       object that has had its mode promoted from a wider mode.
  
!      In 'label_ref' expressions, 1 means that the referenced label is
       outside the innermost loop containing the insn in which the
!      'label_ref' was found.
  
!      In 'code_label' expressions, it is 1 if the label may never be
       deleted.  This is used for labels which are the target of non-local
       gotos.  Such a label that would have been deleted is replaced with
!      a 'note' of type 'NOTE_INSN_DELETED_LABEL'.
  
!      In an 'insn' during dead-code elimination, 1 means that the insn is
       dead code.
  
!      In an 'insn' or 'jump_insn' during reorg for an insn in the delay
       slot of a branch, 1 means that this insn is from the target of the
       branch.
  
!      In an 'insn' during instruction scheduling, 1 means that this insn
       must be scheduled as part of a group together with the previous
       insn.
  
!      In an RTL dump, this flag is represented as '/s'.
  
! 'return_val'
!      In 'reg' expressions, 1 means the register contains the value to be
       returned by the current function.  On machines that pass parameters
       in registers, the same register number may be used for parameters
       as well, but this flag is not set on such uses.
  
!      In 'symbol_ref' expressions, 1 means the referenced symbol is weak.
  
!      In 'call' expressions, 1 means the call is pure.
  
!      In an RTL dump, this flag is represented as '/i'.
  
! 'jump'
!      In a 'mem' expression, 1 means we should keep the alias set for
       this mem unchanged when we access a component.
  
!      In a 'set', 1 means it is for a return.
  
!      In a 'call_insn', 1 means it is a sibling call.
  
!      In a 'jump_insn', 1 means it is a crossing jump.
  
!      In an RTL dump, this flag is represented as '/j'.
  
! 'unchanging'
!      In 'reg' and 'mem' expressions, 1 means that the value of the
       expression never changes.
  
!      In 'subreg' expressions, it is 1 if the 'subreg' references an
       unsigned object whose mode has been promoted to a wider mode.
  
!      In an 'insn' or 'jump_insn' in the delay slot of a branch
       instruction, 1 means an annulling branch should be used.
  
!      In a 'symbol_ref' expression, 1 means that this symbol addresses
       something in the per-function constant pool.
  
!      In a 'call_insn' 1 means that this instruction is a call to a const
       function.
  
!      In an RTL dump, this flag is represented as '/u'.
  
! 'used'
       This flag is used directly (without an access macro) at the end of
       RTL generation for a function, to count the number of times an
       expression appears in insns.  Expressions that appear more than
       once are copied, according to the rules for shared structure (*note
       Sharing::).
  
!      For a 'reg', it is used directly (without an access macro) by the
       leaf register renumbering code to ensure that each register is only
       renumbered once.
  
!      In a 'symbol_ref', it indicates that an external declaration for
       the symbol has already been written.
  
! 'volatil'
!      In a 'mem', 'asm_operands', or 'asm_input' expression, it is 1 if
       the memory reference is volatile.  Volatile memory references may
       not be deleted, reordered or combined.
  
!      In a 'symbol_ref' expression, it is used for machine-specific
       purposes.
  
!      In a 'reg' expression, it is 1 if the value is a user-level
       variable.  0 indicates an internal compiler temporary.
  
!      In an 'insn', 1 means the insn has been deleted.
  
!      In 'label_ref' and 'reg_label' expressions, 1 means a reference to
       a non-local label.
  
!      In 'prefetch' expressions, 1 means that the containing insn is a
       scheduling barrier.
  
!      In an RTL dump, this flag is represented as '/v'.
  
  
  File: gccint.info,  Node: Machine Modes,  Next: Constants,  Prev: Flags,  Up: RTL
--- 17725,17939 ----
       save area, and the Canonical Frame Address, i.e., DWARF2's logical
       frame pointer, register must (temporarily) be changed to be this
       temporary register.  So, the instruction that sets this temporary
!      register must be marked as â€˜RTX_FRAME_RELATED_Pâ€™.
  
       If the marked instruction is overly complex (defined in terms of
!      what â€˜dwarf2out_frame_debug_exprâ€™ can handle), you will also have
!      to create a â€˜REG_FRAME_RELATED_EXPRâ€™ note and attach it to the
       instruction.  This note should contain a simple expression of the
       computation performed by this instruction, i.e., one that
!      â€˜dwarf2out_frame_debug_exprâ€™ can handle.
  
       This flag is required for exception handling support on targets
       with RTL prologues.
  
! â€˜SCHED_GROUP_P (X)â€™
!      During instruction scheduling, in an â€˜insnâ€™, â€˜call_insnâ€™,
!      â€˜jump_insnâ€™ or â€˜jump_table_dataâ€™, indicates that the previous insn
       must be scheduled together with this insn.  This is used to ensure
       that certain groups of instructions will not be split up by the
!      instruction scheduling pass, for example, â€˜useâ€™ insns before a
!      â€˜call_insnâ€™ may not be separated from the â€˜call_insnâ€™.  Stored in
!      the â€˜in_structâ€™ field and printed as â€˜/sâ€™.
  
! â€˜SET_IS_RETURN_P (X)â€™
!      For a â€˜setâ€™, nonzero if it is for a return.  Stored in the â€˜jumpâ€™
!      field and printed as â€˜/jâ€™.
  
! â€˜SIBLING_CALL_P (X)â€™
!      For a â€˜call_insnâ€™, nonzero if the insn is a sibling call.  Stored
!      in the â€˜jumpâ€™ field and printed as â€˜/jâ€™.
  
! â€˜STRING_POOL_ADDRESS_P (X)â€™
!      For a â€˜symbol_refâ€™ expression, nonzero if it addresses this
!      function's string constant pool.  Stored in the â€˜frame_relatedâ€™
!      field and printed as â€˜/fâ€™.
  
! â€˜SUBREG_PROMOTED_UNSIGNED_P (X)â€™
!      Returns a value greater then zero for a â€˜subregâ€™ that has
!      â€˜SUBREG_PROMOTED_VAR_Pâ€™ nonzero if the object being referenced is
       kept zero-extended, zero if it is kept sign-extended, and less then
!      zero if it is extended some other way via the â€˜ptr_extendâ€™
!      instruction.  Stored in the â€˜unchangingâ€™ field and â€˜volatilâ€™ field,
!      printed as â€˜/uâ€™ and â€˜/vâ€™.  This macro may only be used to get the
       value it may not be used to change the value.  Use
!      â€˜SUBREG_PROMOTED_UNSIGNED_SETâ€™ to change the value.
  
! â€˜SUBREG_PROMOTED_UNSIGNED_SET (X)â€™
!      Set the â€˜unchangingâ€™ and â€˜volatilâ€™ fields in a â€˜subregâ€™ to reflect
!      zero, sign, or other extension.  If â€˜volatilâ€™ is zero, then
!      â€˜unchangingâ€™ as nonzero means zero extension and as zero means sign
!      extension.  If â€˜volatilâ€™ is nonzero then some other type of
!      extension was done via the â€˜ptr_extendâ€™ instruction.
  
! â€˜SUBREG_PROMOTED_VAR_P (X)â€™
!      Nonzero in a â€˜subregâ€™ if it was made when accessing an object that
!      was promoted to a wider mode in accord with the â€˜PROMOTED_MODEâ€™
       machine description macro (*note Storage Layout::).  In this case,
!      the mode of the â€˜subregâ€™ is the declared mode of the object and the
!      mode of â€˜SUBREG_REGâ€™ is the mode of the register that holds the
       object.  Promoted variables are always either sign- or
       zero-extended to the wider mode on every assignment.  Stored in the
!      â€˜in_structâ€™ field and printed as â€˜/sâ€™.
  
! â€˜SYMBOL_REF_USED (X)â€™
!      In a â€˜symbol_refâ€™, indicates that X has been used.  This is
       normally only used to ensure that X is only declared external once.
!      Stored in the â€˜usedâ€™ field.
  
! â€˜SYMBOL_REF_WEAK (X)â€™
!      In a â€˜symbol_refâ€™, indicates that X has been declared weak.  Stored
!      in the â€˜return_valâ€™ field and printed as â€˜/iâ€™.
  
! â€˜SYMBOL_REF_FLAG (X)â€™
!      In a â€˜symbol_refâ€™, this is used as a flag for machine-specific
!      purposes.  Stored in the â€˜volatilâ€™ field and printed as â€˜/vâ€™.
  
!      Most uses of â€˜SYMBOL_REF_FLAGâ€™ are historic and may be subsumed by
!      â€˜SYMBOL_REF_FLAGSâ€™.  Certainly use of â€˜SYMBOL_REF_FLAGSâ€™ is
       mandatory if the target requires more than one bit of storage.
  
   These are the fields to which the above macros refer:
  
! â€˜callâ€™
!      In a â€˜memâ€™, 1 means that the memory reference will not trap.
  
!      In a â€˜callâ€™, 1 means that this pure or const call may possibly
       infinite loop.
  
!      In an RTL dump, this flag is represented as â€˜/câ€™.
  
! â€˜frame_relatedâ€™
!      In an â€˜insnâ€™ or â€˜setâ€™ expression, 1 means that it is part of a
       function prologue and sets the stack pointer, sets the frame
       pointer, saves a register, or sets up a temporary register to use
       in place of the frame pointer.
  
!      In â€˜regâ€™ expressions, 1 means that the register holds a pointer.
  
!      In â€˜memâ€™ expressions, 1 means that the memory reference holds a
       pointer.
  
!      In â€˜symbol_refâ€™ expressions, 1 means that the reference addresses
       this function's string constant pool.
  
!      In an RTL dump, this flag is represented as â€˜/fâ€™.
  
! â€˜in_structâ€™
!      In â€˜regâ€™ expressions, it is 1 if the register has its entire life
       contained within the test expression of some loop.
  
!      In â€˜subregâ€™ expressions, 1 means that the â€˜subregâ€™ is accessing an
       object that has had its mode promoted from a wider mode.
  
!      In â€˜label_refâ€™ expressions, 1 means that the referenced label is
       outside the innermost loop containing the insn in which the
!      â€˜label_refâ€™ was found.
  
!      In â€˜code_labelâ€™ expressions, it is 1 if the label may never be
       deleted.  This is used for labels which are the target of non-local
       gotos.  Such a label that would have been deleted is replaced with
!      a â€˜noteâ€™ of type â€˜NOTE_INSN_DELETED_LABELâ€™.
  
!      In an â€˜insnâ€™ during dead-code elimination, 1 means that the insn is
       dead code.
  
!      In an â€˜insnâ€™ or â€˜jump_insnâ€™ during reorg for an insn in the delay
       slot of a branch, 1 means that this insn is from the target of the
       branch.
  
!      In an â€˜insnâ€™ during instruction scheduling, 1 means that this insn
       must be scheduled as part of a group together with the previous
       insn.
  
!      In an RTL dump, this flag is represented as â€˜/sâ€™.
  
! â€˜return_valâ€™
!      In â€˜regâ€™ expressions, 1 means the register contains the value to be
       returned by the current function.  On machines that pass parameters
       in registers, the same register number may be used for parameters
       as well, but this flag is not set on such uses.
  
!      In â€˜symbol_refâ€™ expressions, 1 means the referenced symbol is weak.
  
!      In â€˜callâ€™ expressions, 1 means the call is pure.
  
!      In an RTL dump, this flag is represented as â€˜/iâ€™.
  
! â€˜jumpâ€™
!      In a â€˜memâ€™ expression, 1 means we should keep the alias set for
       this mem unchanged when we access a component.
  
!      In a â€˜setâ€™, 1 means it is for a return.
  
!      In a â€˜call_insnâ€™, 1 means it is a sibling call.
  
!      In a â€˜jump_insnâ€™, 1 means it is a crossing jump.
  
!      In an RTL dump, this flag is represented as â€˜/jâ€™.
  
! â€˜unchangingâ€™
!      In â€˜regâ€™ and â€˜memâ€™ expressions, 1 means that the value of the
       expression never changes.
  
!      In â€˜subregâ€™ expressions, it is 1 if the â€˜subregâ€™ references an
       unsigned object whose mode has been promoted to a wider mode.
  
!      In an â€˜insnâ€™ or â€˜jump_insnâ€™ in the delay slot of a branch
       instruction, 1 means an annulling branch should be used.
  
!      In a â€˜symbol_refâ€™ expression, 1 means that this symbol addresses
       something in the per-function constant pool.
  
!      In a â€˜call_insnâ€™ 1 means that this instruction is a call to a const
       function.
  
!      In an RTL dump, this flag is represented as â€˜/uâ€™.
  
! â€˜usedâ€™
       This flag is used directly (without an access macro) at the end of
       RTL generation for a function, to count the number of times an
       expression appears in insns.  Expressions that appear more than
       once are copied, according to the rules for shared structure (*note
       Sharing::).
  
!      For a â€˜regâ€™, it is used directly (without an access macro) by the
       leaf register renumbering code to ensure that each register is only
       renumbered once.
  
!      In a â€˜symbol_refâ€™, it indicates that an external declaration for
       the symbol has already been written.
  
! â€˜volatilâ€™
!      In a â€˜memâ€™, â€˜asm_operandsâ€™, or â€˜asm_inputâ€™ expression, it is 1 if
       the memory reference is volatile.  Volatile memory references may
       not be deleted, reordered or combined.
  
!      In a â€˜symbol_refâ€™ expression, it is used for machine-specific
       purposes.
  
!      In a â€˜regâ€™ expression, it is 1 if the value is a user-level
       variable.  0 indicates an internal compiler temporary.
  
!      In an â€˜insnâ€™, 1 means the insn has been deleted.
  
!      In â€˜label_refâ€™ and â€˜reg_labelâ€™ expressions, 1 means a reference to
       a non-local label.
  
!      In â€˜prefetchâ€™ expressions, 1 means that the containing insn is a
       scheduling barrier.
  
!      In an RTL dump, this flag is represented as â€˜/vâ€™.
  
  
  File: gccint.info,  Node: Machine Modes,  Next: Constants,  Prev: Flags,  Up: RTL
*************** File: gccint.info,  Node: Machine Modes,
*** 17938,18376 ****
  
  A machine mode describes a size of data object and the representation
  used for it.  In the C code, machine modes are represented by an
! enumeration type, 'machine_mode', defined in 'machmode.def'.  Each RTL
  expression has room for a machine mode and so do certain kinds of tree
  expressions (declarations and types, to be precise).
  
   In debugging dumps and machine descriptions, the machine mode of an RTL
  expression is written after the expression code with a colon to separate
! them.  The letters 'mode' which appear at the end of each machine mode
! name are omitted.  For example, '(reg:SI 38)' is a 'reg' expression with
! machine mode 'SImode'.  If the mode is 'VOIDmode', it is not written at
  all.
  
   Here is a table of machine modes.  The term "byte" below refers to an
! object of 'BITS_PER_UNIT' bits (*note Storage Layout::).
  
! 'BImode'
       "Bit" mode represents a single bit, for predicate registers.
  
! 'QImode'
       "Quarter-Integer" mode represents a single byte treated as an
       integer.
  
! 'HImode'
       "Half-Integer" mode represents a two-byte integer.
  
! 'PSImode'
       "Partial Single Integer" mode represents an integer which occupies
       four bytes but which doesn't really use all four.  On some
       machines, this is the right mode to use for pointers.
  
! 'SImode'
       "Single Integer" mode represents a four-byte integer.
  
! 'PDImode'
       "Partial Double Integer" mode represents an integer which occupies
       eight bytes but which doesn't really use all eight.  On some
       machines, this is the right mode to use for certain pointers.
  
! 'DImode'
       "Double Integer" mode represents an eight-byte integer.
  
! 'TImode'
       "Tetra Integer" (?)  mode represents a sixteen-byte integer.
  
! 'OImode'
       "Octa Integer" (?)  mode represents a thirty-two-byte integer.
  
! 'XImode'
       "Hexadeca Integer" (?)  mode represents a sixty-four-byte integer.
  
! 'QFmode'
       "Quarter-Floating" mode represents a quarter-precision (single
       byte) floating point number.
  
! 'HFmode'
       "Half-Floating" mode represents a half-precision (two byte)
       floating point number.
  
! 'TQFmode'
       "Three-Quarter-Floating" (?)  mode represents a
       three-quarter-precision (three byte) floating point number.
  
! 'SFmode'
       "Single Floating" mode represents a four byte floating point
       number.  In the common case, of a processor with IEEE arithmetic
       and 8-bit bytes, this is a single-precision IEEE floating point
       number; it can also be used for double-precision (on processors
       with 16-bit bytes) and single-precision VAX and IBM types.
  
! 'DFmode'
       "Double Floating" mode represents an eight byte floating point
       number.  In the common case, of a processor with IEEE arithmetic
       and 8-bit bytes, this is a double-precision IEEE floating point
       number.
  
! 'XFmode'
       "Extended Floating" mode represents an IEEE extended floating point
       number.  This mode only has 80 meaningful bits (ten bytes).  Some
       processors require such numbers to be padded to twelve bytes,
       others to sixteen; this mode is used for either.
  
! 'SDmode'
       "Single Decimal Floating" mode represents a four byte decimal
       floating point number (as distinct from conventional binary
       floating point).
  
! 'DDmode'
       "Double Decimal Floating" mode represents an eight byte decimal
       floating point number.
  
! 'TDmode'
       "Tetra Decimal Floating" mode represents a sixteen byte decimal
       floating point number all 128 of whose bits are meaningful.
  
! 'TFmode'
       "Tetra Floating" mode represents a sixteen byte floating point
       number all 128 of whose bits are meaningful.  One common use is the
       IEEE quad-precision format.
  
! 'QQmode'
       "Quarter-Fractional" mode represents a single byte treated as a
       signed fractional number.  The default format is "s.7".
  
! 'HQmode'
       "Half-Fractional" mode represents a two-byte signed fractional
       number.  The default format is "s.15".
  
! 'SQmode'
       "Single Fractional" mode represents a four-byte signed fractional
       number.  The default format is "s.31".
  
! 'DQmode'
       "Double Fractional" mode represents an eight-byte signed fractional
       number.  The default format is "s.63".
  
! 'TQmode'
       "Tetra Fractional" mode represents a sixteen-byte signed fractional
       number.  The default format is "s.127".
  
! 'UQQmode'
       "Unsigned Quarter-Fractional" mode represents a single byte treated
       as an unsigned fractional number.  The default format is ".8".
  
! 'UHQmode'
       "Unsigned Half-Fractional" mode represents a two-byte unsigned
       fractional number.  The default format is ".16".
  
! 'USQmode'
       "Unsigned Single Fractional" mode represents a four-byte unsigned
       fractional number.  The default format is ".32".
  
! 'UDQmode'
       "Unsigned Double Fractional" mode represents an eight-byte unsigned
       fractional number.  The default format is ".64".
  
! 'UTQmode'
       "Unsigned Tetra Fractional" mode represents a sixteen-byte unsigned
       fractional number.  The default format is ".128".
  
! 'HAmode'
       "Half-Accumulator" mode represents a two-byte signed accumulator.
       The default format is "s8.7".
  
! 'SAmode'
       "Single Accumulator" mode represents a four-byte signed
       accumulator.  The default format is "s16.15".
  
! 'DAmode'
       "Double Accumulator" mode represents an eight-byte signed
       accumulator.  The default format is "s32.31".
  
! 'TAmode'
       "Tetra Accumulator" mode represents a sixteen-byte signed
       accumulator.  The default format is "s64.63".
  
! 'UHAmode'
       "Unsigned Half-Accumulator" mode represents a two-byte unsigned
       accumulator.  The default format is "8.8".
  
! 'USAmode'
       "Unsigned Single Accumulator" mode represents a four-byte unsigned
       accumulator.  The default format is "16.16".
  
! 'UDAmode'
       "Unsigned Double Accumulator" mode represents an eight-byte
       unsigned accumulator.  The default format is "32.32".
  
! 'UTAmode'
       "Unsigned Tetra Accumulator" mode represents a sixteen-byte
       unsigned accumulator.  The default format is "64.64".
  
! 'CCmode'
       "Condition Code" mode represents the value of a condition code,
       which is a machine-specific set of bits used to represent the
       result of a comparison operation.  Other machine-specific modes may
       also be used for the condition code.  (*note Condition Code::).
  
! 'BLKmode'
       "Block" mode represents values that are aggregates to which none of
       the other modes apply.  In RTL, only memory references can have
       this mode, and only if they appear in string-move or vector
       instructions.  On machines which have no such instructions,
!      'BLKmode' will not appear in RTL.
  
! 'VOIDmode'
       Void mode means the absence of a mode or an unspecified mode.  For
!      example, RTL expressions of code 'const_int' have mode 'VOIDmode'
       because they can be taken to have whatever mode the context
!      requires.  In debugging dumps of RTL, 'VOIDmode' is expressed by
       the absence of any mode.
  
! 'QCmode, HCmode, SCmode, DCmode, XCmode, TCmode'
       These modes stand for a complex number represented as a pair of
!      floating point values.  The floating point values are in 'QFmode',
!      'HFmode', 'SFmode', 'DFmode', 'XFmode', and 'TFmode', respectively.
  
! 'CQImode, CHImode, CSImode, CDImode, CTImode, COImode, CPSImode'
       These modes stand for a complex number represented as a pair of
!      integer values.  The integer values are in 'QImode', 'HImode',
!      'SImode', 'DImode', 'TImode', 'OImode', and 'PSImode',
       respectively.
  
! 'BND32mode BND64mode'
       These modes stand for bounds for pointer of 32 and 64 bit size
       respectively.  Mode size is double pointer mode size.
  
!  The machine description defines 'Pmode' as a C macro which expands into
  the machine mode used for addresses.  Normally this is the mode whose
! size is 'BITS_PER_WORD', 'SImode' on 32-bit machines.
  
!  The only modes which a machine description must support are 'QImode',
! and the modes corresponding to 'BITS_PER_WORD', C type 'float' and C
! type 'double'.  The compiler will attempt to use 'DImode' for 8-byte
  structures and unions, but this can be prevented by overriding the
! definition of 'MAX_FIXED_MODE_SIZE'.  Alternatively, you can have the
! compiler use 'TImode' for 16-byte structures and unions.  Likewise, you
! can arrange for the C type 'short int' to avoid using 'HImode'.
  
   Very few explicit references to machine modes remain in the compiler
  and these few references will soon be removed.  Instead, the machine
  modes are divided into mode classes.  These are represented by the
! enumeration type 'enum mode_class' defined in 'machmode.h'.  The
  possible mode classes are:
  
! 'MODE_INT'
!      Integer modes.  By default these are 'BImode', 'QImode', 'HImode',
!      'SImode', 'DImode', 'TImode', and 'OImode'.
  
! 'MODE_PARTIAL_INT'
!      The "partial integer" modes, 'PQImode', 'PHImode', 'PSImode' and
!      'PDImode'.
  
! 'MODE_FLOAT'
!      Floating point modes.  By default these are 'QFmode', 'HFmode',
!      'TQFmode', 'SFmode', 'DFmode', 'XFmode' and 'TFmode'.
  
! 'MODE_DECIMAL_FLOAT'
!      Decimal floating point modes.  By default these are 'SDmode',
!      'DDmode' and 'TDmode'.
  
! 'MODE_FRACT'
!      Signed fractional modes.  By default these are 'QQmode', 'HQmode',
!      'SQmode', 'DQmode' and 'TQmode'.
  
! 'MODE_UFRACT'
!      Unsigned fractional modes.  By default these are 'UQQmode',
!      'UHQmode', 'USQmode', 'UDQmode' and 'UTQmode'.
  
! 'MODE_ACCUM'
!      Signed accumulator modes.  By default these are 'HAmode', 'SAmode',
!      'DAmode' and 'TAmode'.
  
! 'MODE_UACCUM'
!      Unsigned accumulator modes.  By default these are 'UHAmode',
!      'USAmode', 'UDAmode' and 'UTAmode'.
  
! 'MODE_COMPLEX_INT'
       Complex integer modes.  (These are not currently implemented).
  
! 'MODE_COMPLEX_FLOAT'
!      Complex floating point modes.  By default these are 'QCmode',
!      'HCmode', 'SCmode', 'DCmode', 'XCmode', and 'TCmode'.
  
! 'MODE_CC'
!      Modes representing condition code values.  These are 'CCmode' plus
!      any 'CC_MODE' modes listed in the 'MACHINE-modes.def'.  *Note Jump
       Patterns::, also see *note Condition Code::.
  
! 'MODE_POINTER_BOUNDS'
       Pointer bounds modes.  Used to represent values of pointer bounds
       type.  Operations in these modes may be executed as NOPs depending
       on hardware features and environment setup.
  
! 'MODE_OPAQUE'
       This is a mode class for modes that don't want to provide
       operations other than register moves, memory moves, loads, stores,
!      and 'unspec's.  They have a size and precision and that's all.
  
! 'MODE_RANDOM'
       This is a catchall mode class for modes which don't fit into the
!      above classes.  Currently 'VOIDmode' and 'BLKmode' are in
!      'MODE_RANDOM'.
  
!  'machmode.h' also defines various wrapper classes that combine a
! 'machine_mode' with a static assertion that a particular condition
  holds.  The classes are:
  
! 'scalar_int_mode'
!      A mode that has class 'MODE_INT' or 'MODE_PARTIAL_INT'.
  
! 'scalar_float_mode'
!      A mode that has class 'MODE_FLOAT' or 'MODE_DECIMAL_FLOAT'.
  
! 'scalar_mode'
       A mode that holds a single numerical value.  In practice this means
!      that the mode is a 'scalar_int_mode', is a 'scalar_float_mode', or
!      has class 'MODE_FRACT', 'MODE_UFRACT', 'MODE_ACCUM', 'MODE_UACCUM'
!      or 'MODE_POINTER_BOUNDS'.
  
! 'complex_mode'
!      A mode that has class 'MODE_COMPLEX_INT' or 'MODE_COMPLEX_FLOAT'.
  
! 'fixed_size_mode'
       A mode whose size is known at compile time.
  
   Named modes use the most constrained of the available wrapper classes,
! if one exists, otherwise they use 'machine_mode'.  For example, 'QImode'
! is a 'scalar_int_mode', 'SFmode' is a 'scalar_float_mode' and 'BLKmode'
! is a plain 'machine_mode'.  It is possible to refer to any mode as a raw
! 'machine_mode' by adding the 'E_' prefix, where 'E' stands for
! "enumeration".  For example, the raw 'machine_mode' names of the modes
! just mentioned are 'E_QImode', 'E_SFmode' and 'E_BLKmode' respectively.
  
!  The wrapper classes implicitly convert to 'machine_mode' and to any
  wrapper class that represents a more general condition; for example
! 'scalar_int_mode' and 'scalar_float_mode' both convert to 'scalar_mode'
! and all three convert to 'fixed_size_mode'.  The classes act like
! 'machine_mode's that accept only certain named modes.
  
!  'machmode.h' also defines a template class 'opt_mode<T>' that holds a
! 'T' or nothing, where 'T' can be either 'machine_mode' or one of the
! wrapper classes above.  The main operations on an 'opt_mode<T>' X are as
  follows:
  
! 'X.exists ()'
       Return true if X holds a mode rather than nothing.
  
! 'X.exists (&Y)'
       Return true if X holds a mode rather than nothing, storing the mode
       in Y if so.  Y must be assignment-compatible with T.
  
! 'X.require ()'
       Assert that X holds a mode rather than nothing and return that
       mode.
  
! 'X = Y'
       Set X to Y, where Y is a T or implicitly converts to a T.
  
!  The default constructor sets an 'opt_mode<T>' to nothing.  There is
  also a constructor that takes an initial value of type T.
  
!  It is possible to use the 'is-a.h' accessors on a 'machine_mode' or
  machine mode wrapper X:
  
! 'is_a <T> (X)'
       Return true if X meets the conditions for wrapper class T.
  
! 'is_a <T> (X, &Y)'
       Return true if X meets the conditions for wrapper class T, storing
       it in Y if so.  Y must be assignment-compatible with T.
  
! 'as_a <T> (X)'
       Assert that X meets the conditions for wrapper class T and return
       it as a T.
  
! 'dyn_cast <T> (X)'
!      Return an 'opt_mode<T>' that holds X if X meets the conditions for
       wrapper class T and that holds nothing otherwise.
  
   The purpose of these wrapper classes is to give stronger static type
! checking.  For example, if a function takes a 'scalar_int_mode', a
! caller that has a general 'machine_mode' must either check or assert
  that the code is indeed a scalar integer first, using one of the
  functions above.
  
   The wrapper classes are normal C++ classes, with user-defined
  constructors.  Sometimes it is useful to have a POD version of the same
! type, particularly if the type appears in a 'union'.  The template class
! 'pod_mode<T>' provides a POD version of wrapper class T.  It is
  assignment-compatible with T and implicitly converts to both
! 'machine_mode' and T.
  
   Here are some C macros that relate to machine modes:
  
! 'GET_MODE (X)'
       Returns the machine mode of the RTX X.
  
! 'PUT_MODE (X, NEWMODE)'
       Alters the machine mode of the RTX X to be NEWMODE.
  
! 'NUM_MACHINE_MODES'
       Stands for the number of machine modes available on the target
       machine.  This is one greater than the largest numeric value of any
       machine mode.
  
! 'GET_MODE_NAME (M)'
       Returns the name of mode M as a string.
  
! 'GET_MODE_CLASS (M)'
       Returns the mode class of mode M.
  
! 'GET_MODE_WIDER_MODE (M)'
       Returns the next wider natural mode.  For example, the expression
!      'GET_MODE_WIDER_MODE (QImode)' returns 'HImode'.
  
! 'GET_MODE_SIZE (M)'
       Returns the size in bytes of a datum of mode M.
  
! 'GET_MODE_BITSIZE (M)'
       Returns the size in bits of a datum of mode M.
  
! 'GET_MODE_IBIT (M)'
       Returns the number of integral bits of a datum of fixed-point mode
       M.
  
! 'GET_MODE_FBIT (M)'
       Returns the number of fractional bits of a datum of fixed-point
       mode M.
  
! 'GET_MODE_MASK (M)'
       Returns a bitmask containing 1 for all bits in a word that fit
       within mode M.  This macro can only be used for modes whose bitsize
!      is less than or equal to 'HOST_BITS_PER_INT'.
  
! 'GET_MODE_ALIGNMENT (M)'
       Return the required alignment, in bits, for an object of mode M.
  
! 'GET_MODE_INNER (M)'
       Returns the mode of the basic parts of mode M.  For vector modes
       this is the mode of the vector elements.  For complex modes it is
       the mode of the real and imaginary parts.  For other modes it is
       mode M itself.
  
! 'GET_MODE_UNIT_SIZE (M)'
       Returns the size in bytes of the subunits of a datum of mode M.
!      This is the same as 'GET_MODE_SIZE' except in the case of complex
       modes.  For them, the unit size is the size of the real or
       imaginary part.
  
! 'GET_MODE_NUNITS (M)'
       Returns the number of units contained in a mode, i.e.,
!      'GET_MODE_SIZE' divided by 'GET_MODE_UNIT_SIZE'.
  
! 'GET_CLASS_NARROWEST_MODE (C)'
       Returns the narrowest mode in mode class C.
  
   The following 3 variables are defined on every target.  They can be
--- 17943,18381 ----
  
  A machine mode describes a size of data object and the representation
  used for it.  In the C code, machine modes are represented by an
! enumeration type, â€˜machine_modeâ€™, defined in â€˜machmode.defâ€™.  Each RTL
  expression has room for a machine mode and so do certain kinds of tree
  expressions (declarations and types, to be precise).
  
   In debugging dumps and machine descriptions, the machine mode of an RTL
  expression is written after the expression code with a colon to separate
! them.  The letters â€˜modeâ€™ which appear at the end of each machine mode
! name are omitted.  For example, â€˜(reg:SI 38)â€™ is a â€˜regâ€™ expression with
! machine mode â€˜SImodeâ€™.  If the mode is â€˜VOIDmodeâ€™, it is not written at
  all.
  
   Here is a table of machine modes.  The term "byte" below refers to an
! object of â€˜BITS_PER_UNITâ€™ bits (*note Storage Layout::).
  
! â€˜BImodeâ€™
       "Bit" mode represents a single bit, for predicate registers.
  
! â€˜QImodeâ€™
       "Quarter-Integer" mode represents a single byte treated as an
       integer.
  
! â€˜HImodeâ€™
       "Half-Integer" mode represents a two-byte integer.
  
! â€˜PSImodeâ€™
       "Partial Single Integer" mode represents an integer which occupies
       four bytes but which doesn't really use all four.  On some
       machines, this is the right mode to use for pointers.
  
! â€˜SImodeâ€™
       "Single Integer" mode represents a four-byte integer.
  
! â€˜PDImodeâ€™
       "Partial Double Integer" mode represents an integer which occupies
       eight bytes but which doesn't really use all eight.  On some
       machines, this is the right mode to use for certain pointers.
  
! â€˜DImodeâ€™
       "Double Integer" mode represents an eight-byte integer.
  
! â€˜TImodeâ€™
       "Tetra Integer" (?)  mode represents a sixteen-byte integer.
  
! â€˜OImodeâ€™
       "Octa Integer" (?)  mode represents a thirty-two-byte integer.
  
! â€˜XImodeâ€™
       "Hexadeca Integer" (?)  mode represents a sixty-four-byte integer.
  
! â€˜QFmodeâ€™
       "Quarter-Floating" mode represents a quarter-precision (single
       byte) floating point number.
  
! â€˜HFmodeâ€™
       "Half-Floating" mode represents a half-precision (two byte)
       floating point number.
  
! â€˜TQFmodeâ€™
       "Three-Quarter-Floating" (?)  mode represents a
       three-quarter-precision (three byte) floating point number.
  
! â€˜SFmodeâ€™
       "Single Floating" mode represents a four byte floating point
       number.  In the common case, of a processor with IEEE arithmetic
       and 8-bit bytes, this is a single-precision IEEE floating point
       number; it can also be used for double-precision (on processors
       with 16-bit bytes) and single-precision VAX and IBM types.
  
! â€˜DFmodeâ€™
       "Double Floating" mode represents an eight byte floating point
       number.  In the common case, of a processor with IEEE arithmetic
       and 8-bit bytes, this is a double-precision IEEE floating point
       number.
  
! â€˜XFmodeâ€™
       "Extended Floating" mode represents an IEEE extended floating point
       number.  This mode only has 80 meaningful bits (ten bytes).  Some
       processors require such numbers to be padded to twelve bytes,
       others to sixteen; this mode is used for either.
  
! â€˜SDmodeâ€™
       "Single Decimal Floating" mode represents a four byte decimal
       floating point number (as distinct from conventional binary
       floating point).
  
! â€˜DDmodeâ€™
       "Double Decimal Floating" mode represents an eight byte decimal
       floating point number.
  
! â€˜TDmodeâ€™
       "Tetra Decimal Floating" mode represents a sixteen byte decimal
       floating point number all 128 of whose bits are meaningful.
  
! â€˜TFmodeâ€™
       "Tetra Floating" mode represents a sixteen byte floating point
       number all 128 of whose bits are meaningful.  One common use is the
       IEEE quad-precision format.
  
! â€˜QQmodeâ€™
       "Quarter-Fractional" mode represents a single byte treated as a
       signed fractional number.  The default format is "s.7".
  
! â€˜HQmodeâ€™
       "Half-Fractional" mode represents a two-byte signed fractional
       number.  The default format is "s.15".
  
! â€˜SQmodeâ€™
       "Single Fractional" mode represents a four-byte signed fractional
       number.  The default format is "s.31".
  
! â€˜DQmodeâ€™
       "Double Fractional" mode represents an eight-byte signed fractional
       number.  The default format is "s.63".
  
! â€˜TQmodeâ€™
       "Tetra Fractional" mode represents a sixteen-byte signed fractional
       number.  The default format is "s.127".
  
! â€˜UQQmodeâ€™
       "Unsigned Quarter-Fractional" mode represents a single byte treated
       as an unsigned fractional number.  The default format is ".8".
  
! â€˜UHQmodeâ€™
       "Unsigned Half-Fractional" mode represents a two-byte unsigned
       fractional number.  The default format is ".16".
  
! â€˜USQmodeâ€™
       "Unsigned Single Fractional" mode represents a four-byte unsigned
       fractional number.  The default format is ".32".
  
! â€˜UDQmodeâ€™
       "Unsigned Double Fractional" mode represents an eight-byte unsigned
       fractional number.  The default format is ".64".
  
! â€˜UTQmodeâ€™
       "Unsigned Tetra Fractional" mode represents a sixteen-byte unsigned
       fractional number.  The default format is ".128".
  
! â€˜HAmodeâ€™
       "Half-Accumulator" mode represents a two-byte signed accumulator.
       The default format is "s8.7".
  
! â€˜SAmodeâ€™
       "Single Accumulator" mode represents a four-byte signed
       accumulator.  The default format is "s16.15".
  
! â€˜DAmodeâ€™
       "Double Accumulator" mode represents an eight-byte signed
       accumulator.  The default format is "s32.31".
  
! â€˜TAmodeâ€™
       "Tetra Accumulator" mode represents a sixteen-byte signed
       accumulator.  The default format is "s64.63".
  
! â€˜UHAmodeâ€™
       "Unsigned Half-Accumulator" mode represents a two-byte unsigned
       accumulator.  The default format is "8.8".
  
! â€˜USAmodeâ€™
       "Unsigned Single Accumulator" mode represents a four-byte unsigned
       accumulator.  The default format is "16.16".
  
! â€˜UDAmodeâ€™
       "Unsigned Double Accumulator" mode represents an eight-byte
       unsigned accumulator.  The default format is "32.32".
  
! â€˜UTAmodeâ€™
       "Unsigned Tetra Accumulator" mode represents a sixteen-byte
       unsigned accumulator.  The default format is "64.64".
  
! â€˜CCmodeâ€™
       "Condition Code" mode represents the value of a condition code,
       which is a machine-specific set of bits used to represent the
       result of a comparison operation.  Other machine-specific modes may
       also be used for the condition code.  (*note Condition Code::).
  
! â€˜BLKmodeâ€™
       "Block" mode represents values that are aggregates to which none of
       the other modes apply.  In RTL, only memory references can have
       this mode, and only if they appear in string-move or vector
       instructions.  On machines which have no such instructions,
!      â€˜BLKmodeâ€™ will not appear in RTL.
  
! â€˜VOIDmodeâ€™
       Void mode means the absence of a mode or an unspecified mode.  For
!      example, RTL expressions of code â€˜const_intâ€™ have mode â€˜VOIDmodeâ€™
       because they can be taken to have whatever mode the context
!      requires.  In debugging dumps of RTL, â€˜VOIDmodeâ€™ is expressed by
       the absence of any mode.
  
! â€˜QCmode, HCmode, SCmode, DCmode, XCmode, TCmodeâ€™
       These modes stand for a complex number represented as a pair of
!      floating point values.  The floating point values are in â€˜QFmodeâ€™,
!      â€˜HFmodeâ€™, â€˜SFmodeâ€™, â€˜DFmodeâ€™, â€˜XFmodeâ€™, and â€˜TFmodeâ€™, respectively.
  
! â€˜CQImode, CHImode, CSImode, CDImode, CTImode, COImode, CPSImodeâ€™
       These modes stand for a complex number represented as a pair of
!      integer values.  The integer values are in â€˜QImodeâ€™, â€˜HImodeâ€™,
!      â€˜SImodeâ€™, â€˜DImodeâ€™, â€˜TImodeâ€™, â€˜OImodeâ€™, and â€˜PSImodeâ€™,
       respectively.
  
! â€˜BND32mode BND64modeâ€™
       These modes stand for bounds for pointer of 32 and 64 bit size
       respectively.  Mode size is double pointer mode size.
  
!  The machine description defines â€˜Pmodeâ€™ as a C macro which expands into
  the machine mode used for addresses.  Normally this is the mode whose
! size is â€˜BITS_PER_WORDâ€™, â€˜SImodeâ€™ on 32-bit machines.
  
!  The only modes which a machine description must support are â€˜QImodeâ€™,
! and the modes corresponding to â€˜BITS_PER_WORDâ€™, C type â€˜floatâ€™ and C
! type â€˜doubleâ€™.  The compiler will attempt to use â€˜DImodeâ€™ for 8-byte
  structures and unions, but this can be prevented by overriding the
! definition of â€˜MAX_FIXED_MODE_SIZEâ€™.  Alternatively, you can have the
! compiler use â€˜TImodeâ€™ for 16-byte structures and unions.  Likewise, you
! can arrange for the C type â€˜short intâ€™ to avoid using â€˜HImodeâ€™.
  
   Very few explicit references to machine modes remain in the compiler
  and these few references will soon be removed.  Instead, the machine
  modes are divided into mode classes.  These are represented by the
! enumeration type â€˜enum mode_classâ€™ defined in â€˜machmode.hâ€™.  The
  possible mode classes are:
  
! â€˜MODE_INTâ€™
!      Integer modes.  By default these are â€˜BImodeâ€™, â€˜QImodeâ€™, â€˜HImodeâ€™,
!      â€˜SImodeâ€™, â€˜DImodeâ€™, â€˜TImodeâ€™, and â€˜OImodeâ€™.
  
! â€˜MODE_PARTIAL_INTâ€™
!      The "partial integer" modes, â€˜PQImodeâ€™, â€˜PHImodeâ€™, â€˜PSImodeâ€™ and
!      â€˜PDImodeâ€™.
  
! â€˜MODE_FLOATâ€™
!      Floating point modes.  By default these are â€˜QFmodeâ€™, â€˜HFmodeâ€™,
!      â€˜TQFmodeâ€™, â€˜SFmodeâ€™, â€˜DFmodeâ€™, â€˜XFmodeâ€™ and â€˜TFmodeâ€™.
  
! â€˜MODE_DECIMAL_FLOATâ€™
!      Decimal floating point modes.  By default these are â€˜SDmodeâ€™,
!      â€˜DDmodeâ€™ and â€˜TDmodeâ€™.
  
! â€˜MODE_FRACTâ€™
!      Signed fractional modes.  By default these are â€˜QQmodeâ€™, â€˜HQmodeâ€™,
!      â€˜SQmodeâ€™, â€˜DQmodeâ€™ and â€˜TQmodeâ€™.
  
! â€˜MODE_UFRACTâ€™
!      Unsigned fractional modes.  By default these are â€˜UQQmodeâ€™,
!      â€˜UHQmodeâ€™, â€˜USQmodeâ€™, â€˜UDQmodeâ€™ and â€˜UTQmodeâ€™.
  
! â€˜MODE_ACCUMâ€™
!      Signed accumulator modes.  By default these are â€˜HAmodeâ€™, â€˜SAmodeâ€™,
!      â€˜DAmodeâ€™ and â€˜TAmodeâ€™.
  
! â€˜MODE_UACCUMâ€™
!      Unsigned accumulator modes.  By default these are â€˜UHAmodeâ€™,
!      â€˜USAmodeâ€™, â€˜UDAmodeâ€™ and â€˜UTAmodeâ€™.
  
! â€˜MODE_COMPLEX_INTâ€™
       Complex integer modes.  (These are not currently implemented).
  
! â€˜MODE_COMPLEX_FLOATâ€™
!      Complex floating point modes.  By default these are â€˜QCmodeâ€™,
!      â€˜HCmodeâ€™, â€˜SCmodeâ€™, â€˜DCmodeâ€™, â€˜XCmodeâ€™, and â€˜TCmodeâ€™.
  
! â€˜MODE_CCâ€™
!      Modes representing condition code values.  These are â€˜CCmodeâ€™ plus
!      any â€˜CC_MODEâ€™ modes listed in the â€˜MACHINE-modes.defâ€™.  *Note Jump
       Patterns::, also see *note Condition Code::.
  
! â€˜MODE_POINTER_BOUNDSâ€™
       Pointer bounds modes.  Used to represent values of pointer bounds
       type.  Operations in these modes may be executed as NOPs depending
       on hardware features and environment setup.
  
! â€˜MODE_OPAQUEâ€™
       This is a mode class for modes that don't want to provide
       operations other than register moves, memory moves, loads, stores,
!      and â€˜unspecâ€™s.  They have a size and precision and that's all.
  
! â€˜MODE_RANDOMâ€™
       This is a catchall mode class for modes which don't fit into the
!      above classes.  Currently â€˜VOIDmodeâ€™ and â€˜BLKmodeâ€™ are in
!      â€˜MODE_RANDOMâ€™.
  
!  â€˜machmode.hâ€™ also defines various wrapper classes that combine a
! â€˜machine_modeâ€™ with a static assertion that a particular condition
  holds.  The classes are:
  
! â€˜scalar_int_modeâ€™
!      A mode that has class â€˜MODE_INTâ€™ or â€˜MODE_PARTIAL_INTâ€™.
  
! â€˜scalar_float_modeâ€™
!      A mode that has class â€˜MODE_FLOATâ€™ or â€˜MODE_DECIMAL_FLOATâ€™.
  
! â€˜scalar_modeâ€™
       A mode that holds a single numerical value.  In practice this means
!      that the mode is a â€˜scalar_int_modeâ€™, is a â€˜scalar_float_modeâ€™, or
!      has class â€˜MODE_FRACTâ€™, â€˜MODE_UFRACTâ€™, â€˜MODE_ACCUMâ€™, â€˜MODE_UACCUMâ€™
!      or â€˜MODE_POINTER_BOUNDSâ€™.
  
! â€˜complex_modeâ€™
!      A mode that has class â€˜MODE_COMPLEX_INTâ€™ or â€˜MODE_COMPLEX_FLOATâ€™.
  
! â€˜fixed_size_modeâ€™
       A mode whose size is known at compile time.
  
   Named modes use the most constrained of the available wrapper classes,
! if one exists, otherwise they use â€˜machine_modeâ€™.  For example, â€˜QImodeâ€™
! is a â€˜scalar_int_modeâ€™, â€˜SFmodeâ€™ is a â€˜scalar_float_modeâ€™ and â€˜BLKmodeâ€™
! is a plain â€˜machine_modeâ€™.  It is possible to refer to any mode as a raw
! â€˜machine_modeâ€™ by adding the â€˜E_â€™ prefix, where â€˜Eâ€™ stands for
! "enumeration".  For example, the raw â€˜machine_modeâ€™ names of the modes
! just mentioned are â€˜E_QImodeâ€™, â€˜E_SFmodeâ€™ and â€˜E_BLKmodeâ€™ respectively.
  
!  The wrapper classes implicitly convert to â€˜machine_modeâ€™ and to any
  wrapper class that represents a more general condition; for example
! â€˜scalar_int_modeâ€™ and â€˜scalar_float_modeâ€™ both convert to â€˜scalar_modeâ€™
! and all three convert to â€˜fixed_size_modeâ€™.  The classes act like
! â€˜machine_modeâ€™s that accept only certain named modes.
  
!  â€˜machmode.hâ€™ also defines a template class â€˜opt_mode<T>â€™ that holds a
! â€˜Tâ€™ or nothing, where â€˜Tâ€™ can be either â€˜machine_modeâ€™ or one of the
! wrapper classes above.  The main operations on an â€˜opt_mode<T>â€™ X are as
  follows:
  
! â€˜X.exists ()â€™
       Return true if X holds a mode rather than nothing.
  
! â€˜X.exists (&Y)â€™
       Return true if X holds a mode rather than nothing, storing the mode
       in Y if so.  Y must be assignment-compatible with T.
  
! â€˜X.require ()â€™
       Assert that X holds a mode rather than nothing and return that
       mode.
  
! â€˜X = Yâ€™
       Set X to Y, where Y is a T or implicitly converts to a T.
  
!  The default constructor sets an â€˜opt_mode<T>â€™ to nothing.  There is
  also a constructor that takes an initial value of type T.
  
!  It is possible to use the â€˜is-a.hâ€™ accessors on a â€˜machine_modeâ€™ or
  machine mode wrapper X:
  
! â€˜is_a <T> (X)â€™
       Return true if X meets the conditions for wrapper class T.
  
! â€˜is_a <T> (X, &Y)â€™
       Return true if X meets the conditions for wrapper class T, storing
       it in Y if so.  Y must be assignment-compatible with T.
  
! â€˜as_a <T> (X)â€™
       Assert that X meets the conditions for wrapper class T and return
       it as a T.
  
! â€˜dyn_cast <T> (X)â€™
!      Return an â€˜opt_mode<T>â€™ that holds X if X meets the conditions for
       wrapper class T and that holds nothing otherwise.
  
   The purpose of these wrapper classes is to give stronger static type
! checking.  For example, if a function takes a â€˜scalar_int_modeâ€™, a
! caller that has a general â€˜machine_modeâ€™ must either check or assert
  that the code is indeed a scalar integer first, using one of the
  functions above.
  
   The wrapper classes are normal C++ classes, with user-defined
  constructors.  Sometimes it is useful to have a POD version of the same
! type, particularly if the type appears in a â€˜unionâ€™.  The template class
! â€˜pod_mode<T>â€™ provides a POD version of wrapper class T.  It is
  assignment-compatible with T and implicitly converts to both
! â€˜machine_modeâ€™ and T.
  
   Here are some C macros that relate to machine modes:
  
! â€˜GET_MODE (X)â€™
       Returns the machine mode of the RTX X.
  
! â€˜PUT_MODE (X, NEWMODE)â€™
       Alters the machine mode of the RTX X to be NEWMODE.
  
! â€˜NUM_MACHINE_MODESâ€™
       Stands for the number of machine modes available on the target
       machine.  This is one greater than the largest numeric value of any
       machine mode.
  
! â€˜GET_MODE_NAME (M)â€™
       Returns the name of mode M as a string.
  
! â€˜GET_MODE_CLASS (M)â€™
       Returns the mode class of mode M.
  
! â€˜GET_MODE_WIDER_MODE (M)â€™
       Returns the next wider natural mode.  For example, the expression
!      â€˜GET_MODE_WIDER_MODE (QImode)â€™ returns â€˜HImodeâ€™.
  
! â€˜GET_MODE_SIZE (M)â€™
       Returns the size in bytes of a datum of mode M.
  
! â€˜GET_MODE_BITSIZE (M)â€™
       Returns the size in bits of a datum of mode M.
  
! â€˜GET_MODE_IBIT (M)â€™
       Returns the number of integral bits of a datum of fixed-point mode
       M.
  
! â€˜GET_MODE_FBIT (M)â€™
       Returns the number of fractional bits of a datum of fixed-point
       mode M.
  
! â€˜GET_MODE_MASK (M)â€™
       Returns a bitmask containing 1 for all bits in a word that fit
       within mode M.  This macro can only be used for modes whose bitsize
!      is less than or equal to â€˜HOST_BITS_PER_INTâ€™.
  
! â€˜GET_MODE_ALIGNMENT (M)â€™
       Return the required alignment, in bits, for an object of mode M.
  
! â€˜GET_MODE_INNER (M)â€™
       Returns the mode of the basic parts of mode M.  For vector modes
       this is the mode of the vector elements.  For complex modes it is
       the mode of the real and imaginary parts.  For other modes it is
       mode M itself.
  
! â€˜GET_MODE_UNIT_SIZE (M)â€™
       Returns the size in bytes of the subunits of a datum of mode M.
!      This is the same as â€˜GET_MODE_SIZEâ€™ except in the case of complex
       modes.  For them, the unit size is the size of the real or
       imaginary part.
  
! â€˜GET_MODE_NUNITS (M)â€™
       Returns the number of units contained in a mode, i.e.,
!      â€˜GET_MODE_SIZEâ€™ divided by â€˜GET_MODE_UNIT_SIZEâ€™.
  
! â€˜GET_CLASS_NARROWEST_MODE (C)â€™
       Returns the narrowest mode in mode class C.
  
   The following 3 variables are defined on every target.  They can be
*************** overridden by defining them in the targe
*** 18380,18407 ****
  value must be a constant that can determined very early in the
  compilation process.  The third symbol cannot be overridden.
  
! 'BITS_PER_UNIT'
       The number of bits in an addressable storage unit (byte).  If you
       do not define this, the default is 8.
  
! 'MAX_BITSIZE_MODE_ANY_INT'
       The maximum bitsize of any mode that is used in integer math.  This
       should be overridden by the target if it uses large integers as
       containers for larger vectors but otherwise never uses the contents
       to compute integer values.
  
! 'MAX_BITSIZE_MODE_ANY_MODE'
       The bitsize of the largest mode on the target.  The default value
       is the largest mode size given in the mode definition file, which
       is always correct for targets whose modes have a fixed size.
       Targets that might increase the size of a mode beyond this default
!      should define 'MAX_BITSIZE_MODE_ANY_MODE' to the actual upper limit
!      in 'MACHINE-modes.def'.
  
!  The global variables 'byte_mode' and 'word_mode' contain modes whose
! classes are 'MODE_INT' and whose bitsizes are either 'BITS_PER_UNIT' or
! 'BITS_PER_WORD', respectively.  On 32-bit machines, these are 'QImode'
! and 'SImode', respectively.
  
  
  File: gccint.info,  Node: Constants,  Next: Regs and Memory,  Prev: Machine Modes,  Up: RTL
--- 18385,18412 ----
  value must be a constant that can determined very early in the
  compilation process.  The third symbol cannot be overridden.
  
! â€˜BITS_PER_UNITâ€™
       The number of bits in an addressable storage unit (byte).  If you
       do not define this, the default is 8.
  
! â€˜MAX_BITSIZE_MODE_ANY_INTâ€™
       The maximum bitsize of any mode that is used in integer math.  This
       should be overridden by the target if it uses large integers as
       containers for larger vectors but otherwise never uses the contents
       to compute integer values.
  
! â€˜MAX_BITSIZE_MODE_ANY_MODEâ€™
       The bitsize of the largest mode on the target.  The default value
       is the largest mode size given in the mode definition file, which
       is always correct for targets whose modes have a fixed size.
       Targets that might increase the size of a mode beyond this default
!      should define â€˜MAX_BITSIZE_MODE_ANY_MODEâ€™ to the actual upper limit
!      in â€˜MACHINE-modes.defâ€™.
  
!  The global variables â€˜byte_modeâ€™ and â€˜word_modeâ€™ contain modes whose
! classes are â€˜MODE_INTâ€™ and whose bitsizes are either â€˜BITS_PER_UNITâ€™ or
! â€˜BITS_PER_WORDâ€™, respectively.  On 32-bit machines, these are â€˜QImodeâ€™
! and â€˜SImodeâ€™, respectively.
  
  
  File: gccint.info,  Node: Constants,  Next: Regs and Memory,  Prev: Machine Modes,  Up: RTL
*************** File: gccint.info,  Node: Constants,  Ne
*** 18411,18478 ****
  
  The simplest RTL expressions are those that represent constant values.
  
! '(const_int I)'
       This type of expression represents the integer value I.  I is
!      customarily accessed with the macro 'INTVAL' as in 'INTVAL (EXP)',
!      which is equivalent to 'XWINT (EXP, 0)'.
  
       Constants generated for modes with fewer bits than in
!      'HOST_WIDE_INT' must be sign extended to full width (e.g., with
!      'gen_int_mode').  For constants for modes with more bits than in
!      'HOST_WIDE_INT' the implied high order bits of that constant are
       copies of the top bit.  Note however that values are neither
       inherently signed nor inherently unsigned; where necessary,
       signedness is determined by the rtl operation instead.
  
       There is only one expression object for the integer value zero; it
!      is the value of the variable 'const0_rtx'.  Likewise, the only
!      expression for integer value one is found in 'const1_rtx', the only
!      expression for integer value two is found in 'const2_rtx', and the
       only expression for integer value negative one is found in
!      'constm1_rtx'.  Any attempt to create an expression of code
!      'const_int' and value zero, one, two or negative one will return
!      'const0_rtx', 'const1_rtx', 'const2_rtx' or 'constm1_rtx' as
       appropriate.
  
       Similarly, there is only one object for the integer whose value is
!      'STORE_FLAG_VALUE'.  It is found in 'const_true_rtx'.  If
!      'STORE_FLAG_VALUE' is one, 'const_true_rtx' and 'const1_rtx' will
!      point to the same object.  If 'STORE_FLAG_VALUE' is -1,
!      'const_true_rtx' and 'constm1_rtx' will point to the same object.
  
! '(const_double:M I0 I1 ...)'
       This represents either a floating-point constant of mode M or (on
!      older ports that do not define 'TARGET_SUPPORTS_WIDE_INT') an
!      integer constant too large to fit into 'HOST_BITS_PER_WIDE_INT'
       bits but small enough to fit within twice that number of bits.  In
!      the latter case, M will be 'VOIDmode'.  For integral values
       constants for modes with more bits than twice the number in
!      'HOST_WIDE_INT' the implied high order bits of that constant are
!      copies of the top bit of 'CONST_DOUBLE_HIGH'.  Note however that
       integral values are neither inherently signed nor inherently
       unsigned; where necessary, signedness is determined by the rtl
       operation instead.
  
!      On more modern ports, 'CONST_DOUBLE' only represents floating point
!      values.  New ports define 'TARGET_SUPPORTS_WIDE_INT' to make this
       designation.
  
!      If M is 'VOIDmode', the bits of the value are stored in I0 and I1.
!      I0 is customarily accessed with the macro 'CONST_DOUBLE_LOW' and I1
!      with 'CONST_DOUBLE_HIGH'.
  
       If the constant is floating point (regardless of its precision),
       then the number of integers used to store the value depends on the
!      size of 'REAL_VALUE_TYPE' (*note Floating Point::).  The integers
       represent a floating point number, but not precisely in the target
       machine's or host machine's floating point format.  To convert them
       to the precise bit pattern used by the target machine, use the
!      macro 'REAL_VALUE_TO_TARGET_DOUBLE' and friends (*note Data
       Output::).
  
       The host dependency for the number of integers used to store a
       double value makes it problematic for machine descriptions to use
!      expressions of code 'const_double' and therefore a syntactic alias
       has been provided:
  
            (const_double_zero:M)
--- 18416,18483 ----
  
  The simplest RTL expressions are those that represent constant values.
  
! â€˜(const_int I)â€™
       This type of expression represents the integer value I.  I is
!      customarily accessed with the macro â€˜INTVALâ€™ as in â€˜INTVAL (EXP)â€™,
!      which is equivalent to â€˜XWINT (EXP, 0)â€™.
  
       Constants generated for modes with fewer bits than in
!      â€˜HOST_WIDE_INTâ€™ must be sign extended to full width (e.g., with
!      â€˜gen_int_modeâ€™).  For constants for modes with more bits than in
!      â€˜HOST_WIDE_INTâ€™ the implied high order bits of that constant are
       copies of the top bit.  Note however that values are neither
       inherently signed nor inherently unsigned; where necessary,
       signedness is determined by the rtl operation instead.
  
       There is only one expression object for the integer value zero; it
!      is the value of the variable â€˜const0_rtxâ€™.  Likewise, the only
!      expression for integer value one is found in â€˜const1_rtxâ€™, the only
!      expression for integer value two is found in â€˜const2_rtxâ€™, and the
       only expression for integer value negative one is found in
!      â€˜constm1_rtxâ€™.  Any attempt to create an expression of code
!      â€˜const_intâ€™ and value zero, one, two or negative one will return
!      â€˜const0_rtxâ€™, â€˜const1_rtxâ€™, â€˜const2_rtxâ€™ or â€˜constm1_rtxâ€™ as
       appropriate.
  
       Similarly, there is only one object for the integer whose value is
!      â€˜STORE_FLAG_VALUEâ€™.  It is found in â€˜const_true_rtxâ€™.  If
!      â€˜STORE_FLAG_VALUEâ€™ is one, â€˜const_true_rtxâ€™ and â€˜const1_rtxâ€™ will
!      point to the same object.  If â€˜STORE_FLAG_VALUEâ€™ is âˆ’1,
!      â€˜const_true_rtxâ€™ and â€˜constm1_rtxâ€™ will point to the same object.
  
! â€˜(const_double:M I0 I1 ...)â€™
       This represents either a floating-point constant of mode M or (on
!      older ports that do not define â€˜TARGET_SUPPORTS_WIDE_INTâ€™) an
!      integer constant too large to fit into â€˜HOST_BITS_PER_WIDE_INTâ€™
       bits but small enough to fit within twice that number of bits.  In
!      the latter case, M will be â€˜VOIDmodeâ€™.  For integral values
       constants for modes with more bits than twice the number in
!      â€˜HOST_WIDE_INTâ€™ the implied high order bits of that constant are
!      copies of the top bit of â€˜CONST_DOUBLE_HIGHâ€™.  Note however that
       integral values are neither inherently signed nor inherently
       unsigned; where necessary, signedness is determined by the rtl
       operation instead.
  
!      On more modern ports, â€˜CONST_DOUBLEâ€™ only represents floating point
!      values.  New ports define â€˜TARGET_SUPPORTS_WIDE_INTâ€™ to make this
       designation.
  
!      If M is â€˜VOIDmodeâ€™, the bits of the value are stored in I0 and I1.
!      I0 is customarily accessed with the macro â€˜CONST_DOUBLE_LOWâ€™ and I1
!      with â€˜CONST_DOUBLE_HIGHâ€™.
  
       If the constant is floating point (regardless of its precision),
       then the number of integers used to store the value depends on the
!      size of â€˜REAL_VALUE_TYPEâ€™ (*note Floating Point::).  The integers
       represent a floating point number, but not precisely in the target
       machine's or host machine's floating point format.  To convert them
       to the precise bit pattern used by the target machine, use the
!      macro â€˜REAL_VALUE_TO_TARGET_DOUBLEâ€™ and friends (*note Data
       Output::).
  
       The host dependency for the number of integers used to store a
       double value makes it problematic for machine descriptions to use
!      expressions of code â€˜const_doubleâ€™ and therefore a syntactic alias
       has been provided:
  
            (const_double_zero:M)
*************** The simplest RTL expressions are those t
*** 18484,18537 ****
       for matching the floating-point value zero, possibly the only
       useful one.
  
! '(const_wide_int:M NUNITS ELT0 ...)'
!      This contains an array of 'HOST_WIDE_INT's that is large enough to
       hold any constant that can be represented on the target.  This form
       of rtl is only used on targets that define
!      'TARGET_SUPPORTS_WIDE_INT' to be nonzero and then 'CONST_DOUBLE's
       are only used to hold floating-point values.  If the target leaves
!      'TARGET_SUPPORTS_WIDE_INT' defined as 0, 'CONST_WIDE_INT's are not
!      used and 'CONST_DOUBLE's are as they were before.
  
       The values are stored in a compressed format.  The higher-order 0s
       or -1s are not represented if they are just the logical sign
       extension of the number that is represented.
  
! 'CONST_WIDE_INT_VEC (CODE)'
!      Returns the entire array of 'HOST_WIDE_INT's that are used to store
       the value.  This macro should be rarely used.
  
! 'CONST_WIDE_INT_NUNITS (CODE)'
!      The number of 'HOST_WIDE_INT's used to represent the number.  Note
!      that this generally is smaller than the number of 'HOST_WIDE_INT's
       implied by the mode size.
  
! 'CONST_WIDE_INT_ELT (CODE,I)'
!      Returns the 'i'th element of the array.  Element 0 is contains the
       low order bits of the constant.
  
! '(const_fixed:M ...)'
       Represents a fixed-point constant of mode M.  The operand is a data
!      structure of type 'struct fixed_value' and is accessed with the
!      macro 'CONST_FIXED_VALUE'.  The high part of data is accessed with
!      'CONST_FIXED_VALUE_HIGH'; the low part is accessed with
!      'CONST_FIXED_VALUE_LOW'.
  
! '(const_poly_int:M [C0 C1 ...])'
!      Represents a 'poly_int'-style polynomial integer with coefficients
!      C0, C1, ....  The coefficients are 'wide_int'-based integers rather
!      than rtxes.  'CONST_POLY_INT_COEFFS' gives the values of individual
       coefficients (which is mostly only useful in low-level routines)
!      and 'const_poly_int_value' gives the full 'poly_int' value.
  
! '(const_vector:M [X0 X1 ...])'
       Represents a vector constant.  The values in square brackets are
!      elements of the vector, which are always 'const_int',
!      'const_wide_int', 'const_double' or 'const_fixed' expressions.
  
       Each vector constant V is treated as a specific instance of an
       arbitrary-length sequence that itself contains
!      'CONST_VECTOR_NPATTERNS (V)' interleaved patterns.  Each pattern
       has the form:
  
            { BASE0, BASE1, BASE1 + STEP, BASE1 + STEP * 2, ... }
--- 18489,18542 ----
       for matching the floating-point value zero, possibly the only
       useful one.
  
! â€˜(const_wide_int:M NUNITS ELT0 ...)â€™
!      This contains an array of â€˜HOST_WIDE_INTâ€™s that is large enough to
       hold any constant that can be represented on the target.  This form
       of rtl is only used on targets that define
!      â€˜TARGET_SUPPORTS_WIDE_INTâ€™ to be nonzero and then â€˜CONST_DOUBLEâ€™s
       are only used to hold floating-point values.  If the target leaves
!      â€˜TARGET_SUPPORTS_WIDE_INTâ€™ defined as 0, â€˜CONST_WIDE_INTâ€™s are not
!      used and â€˜CONST_DOUBLEâ€™s are as they were before.
  
       The values are stored in a compressed format.  The higher-order 0s
       or -1s are not represented if they are just the logical sign
       extension of the number that is represented.
  
! â€˜CONST_WIDE_INT_VEC (CODE)â€™
!      Returns the entire array of â€˜HOST_WIDE_INTâ€™s that are used to store
       the value.  This macro should be rarely used.
  
! â€˜CONST_WIDE_INT_NUNITS (CODE)â€™
!      The number of â€˜HOST_WIDE_INTâ€™s used to represent the number.  Note
!      that this generally is smaller than the number of â€˜HOST_WIDE_INTâ€™s
       implied by the mode size.
  
! â€˜CONST_WIDE_INT_ELT (CODE,I)â€™
!      Returns the â€˜iâ€™th element of the array.  Element 0 is contains the
       low order bits of the constant.
  
! â€˜(const_fixed:M ...)â€™
       Represents a fixed-point constant of mode M.  The operand is a data
!      structure of type â€˜struct fixed_valueâ€™ and is accessed with the
!      macro â€˜CONST_FIXED_VALUEâ€™.  The high part of data is accessed with
!      â€˜CONST_FIXED_VALUE_HIGHâ€™; the low part is accessed with
!      â€˜CONST_FIXED_VALUE_LOWâ€™.
  
! â€˜(const_poly_int:M [C0 C1 ...])â€™
!      Represents a â€˜poly_intâ€™-style polynomial integer with coefficients
!      C0, C1, ....  The coefficients are â€˜wide_intâ€™-based integers rather
!      than rtxes.  â€˜CONST_POLY_INT_COEFFSâ€™ gives the values of individual
       coefficients (which is mostly only useful in low-level routines)
!      and â€˜const_poly_int_valueâ€™ gives the full â€˜poly_intâ€™ value.
  
! â€˜(const_vector:M [X0 X1 ...])â€™
       Represents a vector constant.  The values in square brackets are
!      elements of the vector, which are always â€˜const_intâ€™,
!      â€˜const_wide_intâ€™, â€˜const_doubleâ€™ or â€˜const_fixedâ€™ expressions.
  
       Each vector constant V is treated as a specific instance of an
       arbitrary-length sequence that itself contains
!      â€˜CONST_VECTOR_NPATTERNS (V)â€™ interleaved patterns.  Each pattern
       has the form:
  
            { BASE0, BASE1, BASE1 + STEP, BASE1 + STEP * 2, ... }
*************** The simplest RTL expressions are those t
*** 18541,18547 ****
       only the first two elements are needed.  If in addition each BASE1
       is equal to the corresponding BASE0, only the first element in each
       pattern is needed.  The number of determining elements per pattern
!      is given by 'CONST_VECTOR_NELTS_PER_PATTERN (V)'.
  
       For example, the constant:
  
--- 18546,18552 ----
       only the first two elements are needed.  If in addition each BASE1
       is equal to the corresponding BASE0, only the first element in each
       pattern is needed.  The number of determining elements per pattern
!      is given by â€˜CONST_VECTOR_NELTS_PER_PATTERN (V)â€™.
  
       For example, the constant:
  
*************** The simplest RTL expressions are those t
*** 18562,18575 ****
            CONST_VECTOR_NPATTERNS (V) == 2
            CONST_VECTOR_NELTS_PER_PATTERN (V) == 3
  
!      Thus the first 6 elements ('{ 0, 1, 2, 6, 3, 8 }') are enough to
       determine the whole sequence; we refer to them as the "encoded"
       elements.  They are the only elements present in the square
!      brackets for variable-length 'const_vector's (i.e. for
!      'const_vector's whose mode M has a variable number of elements).
       However, as a convenience to code that needs to handle both
!      'const_vector's and 'parallel's, all elements are present in the
!      square brackets for fixed-length 'const_vector's; the encoding
       scheme simply reduces the amount of work involved in processing
       constants that follow a regular pattern.
  
--- 18567,18580 ----
            CONST_VECTOR_NPATTERNS (V) == 2
            CONST_VECTOR_NELTS_PER_PATTERN (V) == 3
  
!      Thus the first 6 elements (â€˜{ 0, 1, 2, 6, 3, 8 }â€™) are enough to
       determine the whole sequence; we refer to them as the "encoded"
       elements.  They are the only elements present in the square
!      brackets for variable-length â€˜const_vectorâ€™s (i.e. for
!      â€˜const_vectorâ€™s whose mode M has a variable number of elements).
       However, as a convenience to code that needs to handle both
!      â€˜const_vectorâ€™s and â€˜parallelâ€™s, all elements are present in the
!      square brackets for fixed-length â€˜const_vectorâ€™s; the encoding
       scheme simply reduces the amount of work involved in processing
       constants that follow a regular pattern.
  
*************** The simplest RTL expressions are those t
*** 18580,18659 ****
       patterns or (if both encodings have the same number of patterns)
       the one with the fewest encoded elements.
  
!      'const_vector_encoding_nelts (V)' gives the total number of encoded
       elements in V, which is 6 in the example above.
!      'CONST_VECTOR_ENCODED_ELT (V, I)' accesses the value of encoded
       element I.
  
!      'CONST_VECTOR_DUPLICATE_P (V)' is true if V simply contains
!      repeated instances of 'CONST_VECTOR_NPATTERNS (V)' values.  This is
!      a shorthand for testing 'CONST_VECTOR_NELTS_PER_PATTERN (V) == 1'.
  
!      'CONST_VECTOR_STEPPED_P (V)' is true if at least one pattern in V
       has a nonzero step.  This is a shorthand for testing
!      'CONST_VECTOR_NELTS_PER_PATTERN (V) == 3'.
  
!      'CONST_VECTOR_NUNITS (V)' gives the total number of elements in V;
!      it is a shorthand for getting the number of units in 'GET_MODE
!      (V)'.
  
!      The utility function 'const_vector_elt' gives the value of an
!      arbitrary element as an 'rtx'.  'const_vector_int_elt' gives the
!      same value as a 'wide_int'.
  
! '(const_string STR)'
       Represents a constant string with value STR.  Currently this is
       used only for insn attributes (*note Insn Attributes::) since
       constant strings in C are placed in memory.
  
! '(symbol_ref:MODE SYMBOL)'
       Represents the value of an assembler label for data.  SYMBOL is a
       string that describes the name of the assembler label.  If it
!      starts with a '*', the label is the rest of SYMBOL not including
!      the '*'.  Otherwise, the label is SYMBOL, usually prefixed with
!      '_'.
  
!      The 'symbol_ref' contains a mode, which is usually 'Pmode'.
       Usually that is the only mode for which a symbol is directly valid.
  
! '(label_ref:MODE LABEL)'
       Represents the value of an assembler label for code.  It contains
!      one operand, an expression, which must be a 'code_label' or a
!      'note' of type 'NOTE_INSN_DELETED_LABEL' that appears in the
       instruction sequence to identify the place where the label should
       go.
  
       The reason for using a distinct expression type for code label
       references is so that jump optimization can distinguish them.
  
!      The 'label_ref' contains a mode, which is usually 'Pmode'.  Usually
       that is the only mode for which a label is directly valid.
  
! '(const:M EXP)'
       Represents a constant that is the result of an assembly-time
       arithmetic computation.  The operand, EXP, contains only
!      'const_int', 'symbol_ref', 'label_ref' or 'unspec' expressions,
!      combined with 'plus' and 'minus'.  Any such 'unspec's are
       target-specific and typically represent some form of relocation
       operator.  M should be a valid address mode.
  
! '(high:M EXP)'
       Represents the high-order bits of EXP.  The number of bits is
       machine-dependent and is normally the number of bits specified in
       an instruction that initializes the high order bits of a register.
!      It is used with 'lo_sum' to represent the typical two-instruction
       sequence used in RISC machines to reference large immediate values
       and/or link-time constants such as global memory addresses.  In the
!      latter case, M is 'Pmode' and EXP is usually a constant expression
!      involving 'symbol_ref'.
  
!  The macro 'CONST0_RTX (MODE)' refers to an expression with value 0 in
! mode MODE.  If mode MODE is of mode class 'MODE_INT', it returns
! 'const0_rtx'.  If mode MODE is of mode class 'MODE_FLOAT', it returns a
! 'CONST_DOUBLE' expression in mode MODE.  Otherwise, it returns a
! 'CONST_VECTOR' expression in mode MODE.  Similarly, the macro
! 'CONST1_RTX (MODE)' refers to an expression with value 1 in mode MODE
! and similarly for 'CONST2_RTX'.  The 'CONST1_RTX' and 'CONST2_RTX'
  macros are undefined for vector modes.
  
  
--- 18585,18664 ----
       patterns or (if both encodings have the same number of patterns)
       the one with the fewest encoded elements.
  
!      â€˜const_vector_encoding_nelts (V)â€™ gives the total number of encoded
       elements in V, which is 6 in the example above.
!      â€˜CONST_VECTOR_ENCODED_ELT (V, I)â€™ accesses the value of encoded
       element I.
  
!      â€˜CONST_VECTOR_DUPLICATE_P (V)â€™ is true if V simply contains
!      repeated instances of â€˜CONST_VECTOR_NPATTERNS (V)â€™ values.  This is
!      a shorthand for testing â€˜CONST_VECTOR_NELTS_PER_PATTERN (V) == 1â€™.
  
!      â€˜CONST_VECTOR_STEPPED_P (V)â€™ is true if at least one pattern in V
       has a nonzero step.  This is a shorthand for testing
!      â€˜CONST_VECTOR_NELTS_PER_PATTERN (V) == 3â€™.
  
!      â€˜CONST_VECTOR_NUNITS (V)â€™ gives the total number of elements in V;
!      it is a shorthand for getting the number of units in â€˜GET_MODE
!      (V)â€™.
  
!      The utility function â€˜const_vector_eltâ€™ gives the value of an
!      arbitrary element as an â€˜rtxâ€™.  â€˜const_vector_int_eltâ€™ gives the
!      same value as a â€˜wide_intâ€™.
  
! â€˜(const_string STR)â€™
       Represents a constant string with value STR.  Currently this is
       used only for insn attributes (*note Insn Attributes::) since
       constant strings in C are placed in memory.
  
! â€˜(symbol_ref:MODE SYMBOL)â€™
       Represents the value of an assembler label for data.  SYMBOL is a
       string that describes the name of the assembler label.  If it
!      starts with a â€˜*â€™, the label is the rest of SYMBOL not including
!      the â€˜*â€™.  Otherwise, the label is SYMBOL, usually prefixed with
!      â€˜_â€™.
  
!      The â€˜symbol_refâ€™ contains a mode, which is usually â€˜Pmodeâ€™.
       Usually that is the only mode for which a symbol is directly valid.
  
! â€˜(label_ref:MODE LABEL)â€™
       Represents the value of an assembler label for code.  It contains
!      one operand, an expression, which must be a â€˜code_labelâ€™ or a
!      â€˜noteâ€™ of type â€˜NOTE_INSN_DELETED_LABELâ€™ that appears in the
       instruction sequence to identify the place where the label should
       go.
  
       The reason for using a distinct expression type for code label
       references is so that jump optimization can distinguish them.
  
!      The â€˜label_refâ€™ contains a mode, which is usually â€˜Pmodeâ€™.  Usually
       that is the only mode for which a label is directly valid.
  
! â€˜(const:M EXP)â€™
       Represents a constant that is the result of an assembly-time
       arithmetic computation.  The operand, EXP, contains only
!      â€˜const_intâ€™, â€˜symbol_refâ€™, â€˜label_refâ€™ or â€˜unspecâ€™ expressions,
!      combined with â€˜plusâ€™ and â€˜minusâ€™.  Any such â€˜unspecâ€™s are
       target-specific and typically represent some form of relocation
       operator.  M should be a valid address mode.
  
! â€˜(high:M EXP)â€™
       Represents the high-order bits of EXP.  The number of bits is
       machine-dependent and is normally the number of bits specified in
       an instruction that initializes the high order bits of a register.
!      It is used with â€˜lo_sumâ€™ to represent the typical two-instruction
       sequence used in RISC machines to reference large immediate values
       and/or link-time constants such as global memory addresses.  In the
!      latter case, M is â€˜Pmodeâ€™ and EXP is usually a constant expression
!      involving â€˜symbol_refâ€™.
  
!  The macro â€˜CONST0_RTX (MODE)â€™ refers to an expression with value 0 in
! mode MODE.  If mode MODE is of mode class â€˜MODE_INTâ€™, it returns
! â€˜const0_rtxâ€™.  If mode MODE is of mode class â€˜MODE_FLOATâ€™, it returns a
! â€˜CONST_DOUBLEâ€™ expression in mode MODE.  Otherwise, it returns a
! â€˜CONST_VECTORâ€™ expression in mode MODE.  Similarly, the macro
! â€˜CONST1_RTX (MODE)â€™ refers to an expression with value 1 in mode MODE
! and similarly for â€˜CONST2_RTXâ€™.  The â€˜CONST1_RTXâ€™ and â€˜CONST2_RTXâ€™
  macros are undefined for vector modes.
  
  
*************** File: gccint.info,  Node: Regs and Memor
*** 18665,18675 ****
  Here are the RTL expression types for describing access to machine
  registers and to main memory.
  
! '(reg:M N)'
       For small values of the integer N (those that are less than
!      'FIRST_PSEUDO_REGISTER'), this stands for a reference to machine
!      register number N: a "hard register".  For larger values of N, it
!      stands for a temporary value or "pseudo register".  The compiler's
       strategy is to generate code assuming an unlimited number of such
       pseudo registers, and later convert them into hard registers or
       into memory references.
--- 18670,18680 ----
  Here are the RTL expression types for describing access to machine
  registers and to main memory.
  
! â€˜(reg:M N)â€™
       For small values of the integer N (those that are less than
!      â€˜FIRST_PSEUDO_REGISTERâ€™), this stands for a reference to machine
!      register number N: a â€œhard registerâ€�.  For larger values of N, it
!      stands for a temporary value or â€œpseudo registerâ€�.  The compiler's
       strategy is to generate code assuming an unlimited number of such
       pseudo registers, and later convert them into hard registers or
       into memory references.
*************** registers and to main memory.
*** 18684,18690 ****
       Even for a register that the machine can access in only one mode,
       the mode must always be specified.
  
!      The symbol 'FIRST_PSEUDO_REGISTER' is defined by the machine
       description, since the number of hard registers on the machine is
       an invariant characteristic of the machine.  Note, however, that
       not all of the machine registers must be general registers.  All
--- 18689,18695 ----
       Even for a register that the machine can access in only one mode,
       the mode must always be specified.
  
!      The symbol â€˜FIRST_PSEUDO_REGISTERâ€™ is defined by the machine
       description, since the number of hard registers on the machine is
       an invariant characteristic of the machine.  Note, however, that
       not all of the machine registers must be general registers.  All
*************** registers and to main memory.
*** 18695,18721 ****
       A hard register may be accessed in various modes throughout one
       function, but each pseudo register is given a natural mode and is
       accessed only in that mode.  When it is necessary to describe an
!      access to a pseudo register using a nonnatural mode, a 'subreg'
       expression is used.
  
!      A 'reg' expression with a machine mode that specifies more than one
       word of data may actually stand for several consecutive registers.
       If in addition the register number specifies a hardware register,
       then it actually represents several consecutive hardware registers
       starting with the specified one.
  
       Each pseudo register number used in a function's RTL code is
!      represented by a unique 'reg' expression.
  
       Some pseudo register numbers, those within the range of
!      'FIRST_VIRTUAL_REGISTER' to 'LAST_VIRTUAL_REGISTER' only appear
       during the RTL generation phase and are eliminated before the
       optimization phases.  These represent locations in the stack frame
       that cannot be determined until RTL generation for the function has
       been completed.  The following virtual register numbers are
       defined:
  
!      'VIRTUAL_INCOMING_ARGS_REGNUM'
            This points to the first word of the incoming arguments passed
            on the stack.  Normally these arguments are placed there by
            the caller, but the callee may have pushed some arguments that
--- 18700,18726 ----
       A hard register may be accessed in various modes throughout one
       function, but each pseudo register is given a natural mode and is
       accessed only in that mode.  When it is necessary to describe an
!      access to a pseudo register using a nonnatural mode, a â€˜subregâ€™
       expression is used.
  
!      A â€˜regâ€™ expression with a machine mode that specifies more than one
       word of data may actually stand for several consecutive registers.
       If in addition the register number specifies a hardware register,
       then it actually represents several consecutive hardware registers
       starting with the specified one.
  
       Each pseudo register number used in a function's RTL code is
!      represented by a unique â€˜regâ€™ expression.
  
       Some pseudo register numbers, those within the range of
!      â€˜FIRST_VIRTUAL_REGISTERâ€™ to â€˜LAST_VIRTUAL_REGISTERâ€™ only appear
       during the RTL generation phase and are eliminated before the
       optimization phases.  These represent locations in the stack frame
       that cannot be determined until RTL generation for the function has
       been completed.  The following virtual register numbers are
       defined:
  
!      â€˜VIRTUAL_INCOMING_ARGS_REGNUMâ€™
            This points to the first word of the incoming arguments passed
            on the stack.  Normally these arguments are placed there by
            the caller, but the callee may have pushed some arguments that
*************** registers and to main memory.
*** 18723,18836 ****
  
            When RTL generation is complete, this virtual register is
            replaced by the sum of the register given by
!           'ARG_POINTER_REGNUM' and the value of 'FIRST_PARM_OFFSET'.
  
!      'VIRTUAL_STACK_VARS_REGNUM'
!           If 'FRAME_GROWS_DOWNWARD' is defined to a nonzero value, this
            points to immediately above the first variable on the stack.
            Otherwise, it points to the first variable on the stack.
  
!           'VIRTUAL_STACK_VARS_REGNUM' is replaced with the sum of the
!           register given by 'FRAME_POINTER_REGNUM' and the value
!           'TARGET_STARTING_FRAME_OFFSET'.
  
!      'VIRTUAL_STACK_DYNAMIC_REGNUM'
            This points to the location of dynamically allocated memory on
            the stack immediately after the stack pointer has been
            adjusted by the amount of memory desired.
  
            This virtual register is replaced by the sum of the register
!           given by 'STACK_POINTER_REGNUM' and the value
!           'STACK_DYNAMIC_OFFSET'.
  
!      'VIRTUAL_OUTGOING_ARGS_REGNUM'
            This points to the location in the stack at which outgoing
            arguments should be written when the stack is pre-pushed
            (arguments pushed using push insns should always use
!           'STACK_POINTER_REGNUM').
  
            This virtual register is replaced by the sum of the register
!           given by 'STACK_POINTER_REGNUM' and the value
!           'STACK_POINTER_OFFSET'.
  
! '(subreg:M1 REG:M2 BYTENUM)'
  
!      'subreg' expressions are used to refer to a register in a machine
       mode other than its natural one, or to refer to one register of a
!      multi-part 'reg' that actually refers to several registers.
  
       Each pseudo register has a natural mode.  If it is necessary to
       operate on it in a different mode, the register must be enclosed in
!      a 'subreg'.
  
       There are currently three supported types for the first operand of
!      a 'subreg':
!         * pseudo registers This is the most common case.  Most 'subreg's
!           have pseudo 'reg's as their first operand.
  
!         * mem 'subreg's of 'mem' were common in earlier versions of GCC
            and are still supported.  During the reload pass these are
!           replaced by plain 'mem's.  On machines that do not do
!           instruction scheduling, use of 'subreg's of 'mem' are still
!           used, but this is no longer recommended.  Such 'subreg's are
!           considered to be 'register_operand's rather than
!           'memory_operand's before and during reload.  Because of this,
            the scheduling passes cannot properly schedule instructions
!           with 'subreg's of 'mem', so for machines that do scheduling,
!           'subreg's of 'mem' should never be used.  To support this, the
            combine and recog passes have explicit code to inhibit the
!           creation of 'subreg's of 'mem' when 'INSN_SCHEDULING' is
            defined.
  
!           The use of 'subreg's of 'mem' after the reload pass is an area
            that is not well understood and should be avoided.  There is
            still some code in the compiler to support this, but this code
!           has possibly rotted.  This use of 'subreg's is discouraged and
            will most likely not be supported in the future.
  
!         * hard registers It is seldom necessary to wrap hard registers
!           in 'subreg's; such registers would normally reduce to a single
!           'reg' rtx.  This use of 'subreg's is discouraged and may not
            be supported in the future.
  
!      'subreg's of 'subreg's are not supported.  Using
!      'simplify_gen_subreg' is the recommended way to avoid this problem.
  
!      'subreg's come in two distinct flavors, each having its own usage
       and rules:
  
       Paradoxical subregs
!           When M1 is strictly wider than M2, the 'subreg' expression is
!           called "paradoxical".  The canonical test for this class of
!           'subreg' is:
  
                 paradoxical_subreg_p (M1, M2)
  
!           Paradoxical 'subreg's can be used as both lvalues and rvalues.
            When used as an lvalue, the low-order bits of the source value
            are stored in REG and the high-order bits are discarded.  When
!           used as an rvalue, the low-order bits of the 'subreg' are
            taken from REG while the high-order bits may or may not be
            defined.
  
            The high-order bits of rvalues are defined in the following
            circumstances:
  
!              * 'subreg's of 'mem' When M2 is smaller than a word, the
!                macro 'LOAD_EXTEND_OP', can control how the high-order
                 bits are defined.
  
!              * 'subreg' of 'reg's The upper bits are defined when
!                'SUBREG_PROMOTED_VAR_P' is true.
!                'SUBREG_PROMOTED_UNSIGNED_P' describes what the upper
                 bits hold.  Such subregs usually represent local
                 variables, register variables and parameter pseudo
                 variables that have been promoted to a wider mode.
  
!           BYTENUM is always zero for a paradoxical 'subreg', even on
            big-endian targets.
  
!           For example, the paradoxical 'subreg':
  
                 (set (subreg:SI (reg:HI X) 0) Y)
  
--- 18728,18841 ----
  
            When RTL generation is complete, this virtual register is
            replaced by the sum of the register given by
!           â€˜ARG_POINTER_REGNUMâ€™ and the value of â€˜FIRST_PARM_OFFSETâ€™.
  
!      â€˜VIRTUAL_STACK_VARS_REGNUMâ€™
!           If â€˜FRAME_GROWS_DOWNWARDâ€™ is defined to a nonzero value, this
            points to immediately above the first variable on the stack.
            Otherwise, it points to the first variable on the stack.
  
!           â€˜VIRTUAL_STACK_VARS_REGNUMâ€™ is replaced with the sum of the
!           register given by â€˜FRAME_POINTER_REGNUMâ€™ and the value
!           â€˜TARGET_STARTING_FRAME_OFFSETâ€™.
  
!      â€˜VIRTUAL_STACK_DYNAMIC_REGNUMâ€™
            This points to the location of dynamically allocated memory on
            the stack immediately after the stack pointer has been
            adjusted by the amount of memory desired.
  
            This virtual register is replaced by the sum of the register
!           given by â€˜STACK_POINTER_REGNUMâ€™ and the value
!           â€˜STACK_DYNAMIC_OFFSETâ€™.
  
!      â€˜VIRTUAL_OUTGOING_ARGS_REGNUMâ€™
            This points to the location in the stack at which outgoing
            arguments should be written when the stack is pre-pushed
            (arguments pushed using push insns should always use
!           â€˜STACK_POINTER_REGNUMâ€™).
  
            This virtual register is replaced by the sum of the register
!           given by â€˜STACK_POINTER_REGNUMâ€™ and the value
!           â€˜STACK_POINTER_OFFSETâ€™.
  
! â€˜(subreg:M1 REG:M2 BYTENUM)â€™
  
!      â€˜subregâ€™ expressions are used to refer to a register in a machine
       mode other than its natural one, or to refer to one register of a
!      multi-part â€˜regâ€™ that actually refers to several registers.
  
       Each pseudo register has a natural mode.  If it is necessary to
       operate on it in a different mode, the register must be enclosed in
!      a â€˜subregâ€™.
  
       There are currently three supported types for the first operand of
!      a â€˜subregâ€™:
!         â€¢ pseudo registers This is the most common case.  Most â€˜subregâ€™s
!           have pseudo â€˜regâ€™s as their first operand.
  
!         â€¢ mem â€˜subregâ€™s of â€˜memâ€™ were common in earlier versions of GCC
            and are still supported.  During the reload pass these are
!           replaced by plain â€˜memâ€™s.  On machines that do not do
!           instruction scheduling, use of â€˜subregâ€™s of â€˜memâ€™ are still
!           used, but this is no longer recommended.  Such â€˜subregâ€™s are
!           considered to be â€˜register_operandâ€™s rather than
!           â€˜memory_operandâ€™s before and during reload.  Because of this,
            the scheduling passes cannot properly schedule instructions
!           with â€˜subregâ€™s of â€˜memâ€™, so for machines that do scheduling,
!           â€˜subregâ€™s of â€˜memâ€™ should never be used.  To support this, the
            combine and recog passes have explicit code to inhibit the
!           creation of â€˜subregâ€™s of â€˜memâ€™ when â€˜INSN_SCHEDULINGâ€™ is
            defined.
  
!           The use of â€˜subregâ€™s of â€˜memâ€™ after the reload pass is an area
            that is not well understood and should be avoided.  There is
            still some code in the compiler to support this, but this code
!           has possibly rotted.  This use of â€˜subregâ€™s is discouraged and
            will most likely not be supported in the future.
  
!         â€¢ hard registers It is seldom necessary to wrap hard registers
!           in â€˜subregâ€™s; such registers would normally reduce to a single
!           â€˜regâ€™ rtx.  This use of â€˜subregâ€™s is discouraged and may not
            be supported in the future.
  
!      â€˜subregâ€™s of â€˜subregâ€™s are not supported.  Using
!      â€˜simplify_gen_subregâ€™ is the recommended way to avoid this problem.
  
!      â€˜subregâ€™s come in two distinct flavors, each having its own usage
       and rules:
  
       Paradoxical subregs
!           When M1 is strictly wider than M2, the â€˜subregâ€™ expression is
!           called â€œparadoxicalâ€�.  The canonical test for this class of
!           â€˜subregâ€™ is:
  
                 paradoxical_subreg_p (M1, M2)
  
!           Paradoxical â€˜subregâ€™s can be used as both lvalues and rvalues.
            When used as an lvalue, the low-order bits of the source value
            are stored in REG and the high-order bits are discarded.  When
!           used as an rvalue, the low-order bits of the â€˜subregâ€™ are
            taken from REG while the high-order bits may or may not be
            defined.
  
            The high-order bits of rvalues are defined in the following
            circumstances:
  
!              â€¢ â€˜subregâ€™s of â€˜memâ€™ When M2 is smaller than a word, the
!                macro â€˜LOAD_EXTEND_OPâ€™, can control how the high-order
                 bits are defined.
  
!              â€¢ â€˜subregâ€™ of â€˜regâ€™s The upper bits are defined when
!                â€˜SUBREG_PROMOTED_VAR_Pâ€™ is true.
!                â€˜SUBREG_PROMOTED_UNSIGNED_Pâ€™ describes what the upper
                 bits hold.  Such subregs usually represent local
                 variables, register variables and parameter pseudo
                 variables that have been promoted to a wider mode.
  
!           BYTENUM is always zero for a paradoxical â€˜subregâ€™, even on
            big-endian targets.
  
!           For example, the paradoxical â€˜subregâ€™:
  
                 (set (subreg:SI (reg:HI X) 0) Y)
  
*************** registers and to main memory.
*** 18840,18914 ****
                 (set Z (subreg:SI (reg:HI X) 0))
  
            would set the lower two bytes of Z to Y and set the upper two
!           bytes to an unknown value assuming 'SUBREG_PROMOTED_VAR_P' is
            false.
  
       Normal subregs
!           When M1 is at least as narrow as M2 the 'subreg' expression is
!           called "normal".
  
!           Normal 'subreg's restrict consideration to certain bits of
            REG.  For this purpose, REG is divided into
            individually-addressable blocks in which each block has:
  
                 REGMODE_NATURAL_SIZE (M2)
  
!           bytes.  Usually the value is 'UNITS_PER_WORD'; that is, most
            targets usually treat each word of a register as being
            independently addressable.
  
!           There are two types of normal 'subreg'.  If M1 is known to be
!           no bigger than a block, the 'subreg' refers to the
!           least-significant part (or "lowpart") of one block of REG.  If
!           M1 is known to be larger than a block, the 'subreg' refers to
            two or more complete blocks.
  
!           When used as an lvalue, 'subreg' is a block-based accessor.
!           Storing to a 'subreg' modifies all the blocks of REG that
!           overlap the 'subreg', but it leaves the other blocks of REG
            alone.
  
!           When storing to a normal 'subreg' that is smaller than a
            block, the other bits of the referenced block are usually left
            in an undefined state.  This laxity makes it easier to
            generate efficient code for such instructions.  To represent
            an instruction that preserves all the bits outside of those in
!           the 'subreg', use 'strict_low_part' or 'zero_extract' around
!           the 'subreg'.
  
            BYTENUM must identify the offset of the first byte of the
!           'subreg' from the start of REG, assuming that REG is laid out
            in memory order.  The memory order of bytes is defined by two
!           target macros, 'WORDS_BIG_ENDIAN' and 'BYTES_BIG_ENDIAN':
  
!              * 'WORDS_BIG_ENDIAN', if set to 1, says that byte number
                 zero is part of the most significant word; otherwise, it
                 is part of the least significant word.
  
!              * 'BYTES_BIG_ENDIAN', if set to 1, says that byte number
                 zero is the most significant byte within a word;
                 otherwise, it is the least significant byte within a
                 word.
  
!           On a few targets, 'FLOAT_WORDS_BIG_ENDIAN' disagrees with
!           'WORDS_BIG_ENDIAN'.  However, most parts of the compiler treat
            floating point values as if they had the same endianness as
            integer values.  This works because they handle them solely as
            a collection of integer values, with no particular numerical
            value.  Only real.cc and the runtime libraries care about
!           'FLOAT_WORDS_BIG_ENDIAN'.
  
            Thus,
  
                 (subreg:HI (reg:SI X) 2)
  
!           on a 'BYTES_BIG_ENDIAN', 'UNITS_PER_WORD == 4' target is the
            same as
  
                 (subreg:HI (reg:SI X) 0)
  
!           on a little-endian, 'UNITS_PER_WORD == 4' target.  Both
!           'subreg's access the lower two bytes of register X.
  
            Note that the byte offset is a polynomial integer; it may not
            be a compile-time constant on targets with variable-sized
--- 18845,18919 ----
                 (set Z (subreg:SI (reg:HI X) 0))
  
            would set the lower two bytes of Z to Y and set the upper two
!           bytes to an unknown value assuming â€˜SUBREG_PROMOTED_VAR_Pâ€™ is
            false.
  
       Normal subregs
!           When M1 is at least as narrow as M2 the â€˜subregâ€™ expression is
!           called â€œnormalâ€�.
  
!           Normal â€˜subregâ€™s restrict consideration to certain bits of
            REG.  For this purpose, REG is divided into
            individually-addressable blocks in which each block has:
  
                 REGMODE_NATURAL_SIZE (M2)
  
!           bytes.  Usually the value is â€˜UNITS_PER_WORDâ€™; that is, most
            targets usually treat each word of a register as being
            independently addressable.
  
!           There are two types of normal â€˜subregâ€™.  If M1 is known to be
!           no bigger than a block, the â€˜subregâ€™ refers to the
!           least-significant part (or â€œlowpartâ€�) of one block of REG.  If
!           M1 is known to be larger than a block, the â€˜subregâ€™ refers to
            two or more complete blocks.
  
!           When used as an lvalue, â€˜subregâ€™ is a block-based accessor.
!           Storing to a â€˜subregâ€™ modifies all the blocks of REG that
!           overlap the â€˜subregâ€™, but it leaves the other blocks of REG
            alone.
  
!           When storing to a normal â€˜subregâ€™ that is smaller than a
            block, the other bits of the referenced block are usually left
            in an undefined state.  This laxity makes it easier to
            generate efficient code for such instructions.  To represent
            an instruction that preserves all the bits outside of those in
!           the â€˜subregâ€™, use â€˜strict_low_partâ€™ or â€˜zero_extractâ€™ around
!           the â€˜subregâ€™.
  
            BYTENUM must identify the offset of the first byte of the
!           â€˜subregâ€™ from the start of REG, assuming that REG is laid out
            in memory order.  The memory order of bytes is defined by two
!           target macros, â€˜WORDS_BIG_ENDIANâ€™ and â€˜BYTES_BIG_ENDIANâ€™:
  
!              â€¢ â€˜WORDS_BIG_ENDIANâ€™, if set to 1, says that byte number
                 zero is part of the most significant word; otherwise, it
                 is part of the least significant word.
  
!              â€¢ â€˜BYTES_BIG_ENDIANâ€™, if set to 1, says that byte number
                 zero is the most significant byte within a word;
                 otherwise, it is the least significant byte within a
                 word.
  
!           On a few targets, â€˜FLOAT_WORDS_BIG_ENDIANâ€™ disagrees with
!           â€˜WORDS_BIG_ENDIANâ€™.  However, most parts of the compiler treat
            floating point values as if they had the same endianness as
            integer values.  This works because they handle them solely as
            a collection of integer values, with no particular numerical
            value.  Only real.cc and the runtime libraries care about
!           â€˜FLOAT_WORDS_BIG_ENDIANâ€™.
  
            Thus,
  
                 (subreg:HI (reg:SI X) 2)
  
!           on a â€˜BYTES_BIG_ENDIANâ€™, â€˜UNITS_PER_WORD == 4â€™ target is the
            same as
  
                 (subreg:HI (reg:SI X) 0)
  
!           on a little-endian, â€˜UNITS_PER_WORD == 4â€™ target.  Both
!           â€˜subregâ€™s access the lower two bytes of register X.
  
            Note that the byte offset is a polynomial integer; it may not
            be a compile-time constant on targets with variable-sized
*************** registers and to main memory.
*** 18918,18959 ****
            blocks a valid subreg occupies, and whether the subreg is a
            lowpart of a block.
  
!      A 'MODE_PARTIAL_INT' mode behaves as if it were as wide as the
!      corresponding 'MODE_INT' mode, except that it has a number of
       undefined bits, which are determined by the precision of the mode.
  
!      For example, on a little-endian target which defines 'PSImode' to
       have a precision of 20 bits:
  
            (subreg:PSI (reg:SI 0) 0)
  
!      accesses the low 20 bits of '(reg:SI 0)'.
  
!      Continuing with a 'PSImode' precision of 20 bits, if we assume
!      'REGMODE_NATURAL_SIZE (DImode) <= 4', then the following two
!      'subreg's:
  
            (subreg:PSI (reg:DI 0) 0)
            (subreg:PSI (reg:DI 0) 4)
  
!      represent accesses to the low 20 bits of the two halves of '(reg:DI
!      0)'.
  
!      If 'REGMODE_NATURAL_SIZE (PSImode) <= 2' then these two 'subreg's:
  
            (subreg:HI (reg:PSI 0) 0)
            (subreg:HI (reg:PSI 0) 2)
  
       represent independent 2-byte accesses that together span the whole
!      of '(reg:PSI 0)'.  Storing to the first 'subreg' does not affect
       the value of the second, and vice versa, so the assignment:
  
            (set (subreg:HI (reg:PSI 0) 0) (reg:HI 4))
  
!      sets the low 16 bits of '(reg:PSI 0)' to '(reg:HI 4)', and the high
!      4 defined bits of '(reg:PSI 0)' retain their original value.  The
!      behavior here is the same as for normal 'subreg's, when there are
!      no 'MODE_PARTIAL_INT' modes involved.
  
       The rules above apply to both pseudo REGs and hard REGs.  If the
       semantics are not correct for particular combinations of M1, M2 and
--- 18923,18964 ----
            blocks a valid subreg occupies, and whether the subreg is a
            lowpart of a block.
  
!      A â€˜MODE_PARTIAL_INTâ€™ mode behaves as if it were as wide as the
!      corresponding â€˜MODE_INTâ€™ mode, except that it has a number of
       undefined bits, which are determined by the precision of the mode.
  
!      For example, on a little-endian target which defines â€˜PSImodeâ€™ to
       have a precision of 20 bits:
  
            (subreg:PSI (reg:SI 0) 0)
  
!      accesses the low 20 bits of â€˜(reg:SI 0)â€™.
  
!      Continuing with a â€˜PSImodeâ€™ precision of 20 bits, if we assume
!      â€˜REGMODE_NATURAL_SIZE (DImode) <= 4â€™, then the following two
!      â€˜subregâ€™s:
  
            (subreg:PSI (reg:DI 0) 0)
            (subreg:PSI (reg:DI 0) 4)
  
!      represent accesses to the low 20 bits of the two halves of â€˜(reg:DI
!      0)â€™.
  
!      If â€˜REGMODE_NATURAL_SIZE (PSImode) <= 2â€™ then these two â€˜subregâ€™s:
  
            (subreg:HI (reg:PSI 0) 0)
            (subreg:HI (reg:PSI 0) 2)
  
       represent independent 2-byte accesses that together span the whole
!      of â€˜(reg:PSI 0)â€™.  Storing to the first â€˜subregâ€™ does not affect
       the value of the second, and vice versa, so the assignment:
  
            (set (subreg:HI (reg:PSI 0) 0) (reg:HI 4))
  
!      sets the low 16 bits of â€˜(reg:PSI 0)â€™ to â€˜(reg:HI 4)â€™, and the high
!      4 defined bits of â€˜(reg:PSI 0)â€™ retain their original value.  The
!      behavior here is the same as for normal â€˜subregâ€™s, when there are
!      no â€˜MODE_PARTIAL_INTâ€™ modes involved.
  
       The rules above apply to both pseudo REGs and hard REGs.  If the
       semantics are not correct for particular combinations of M1, M2 and
*************** registers and to main memory.
*** 18968,18997 ****
       paradoxical, whether it occupies a whole number of blocks, or
       whether it is a lowpart of a block.  This means that certain
       combinations of variable-sized mode are not permitted.  For
!      example, if M2 holds N 'SI' values, where N is greater than zero,
!      it is not possible to form a 'DI' 'subreg' of it; such a 'subreg'
       would be paradoxical when N is 1 but not when N is greater than 1.
  
!      The first operand of a 'subreg' expression is customarily accessed
!      with the 'SUBREG_REG' macro and the second operand is customarily
!      accessed with the 'SUBREG_BYTE' macro.
  
       It has been several years since a platform in which
!      'BYTES_BIG_ENDIAN' not equal to 'WORDS_BIG_ENDIAN' has been tested.
       Anyone wishing to support such a platform in the future may be
       confronted with code rot.
  
! '(scratch:M)'
       This represents a scratch register that will be required for the
       execution of a single instruction and not used subsequently.  It is
!      converted into a 'reg' by either the local register allocator or
       the reload pass.
  
!      'scratch' is usually present inside a 'clobber' operation (*note
       Side Effects::).
  
       On some machines, the condition code register is given a register
!      number and a 'reg' is used.  Other machines store condition codes
       in general registers; in such cases a pseudo register should be
       used.
  
--- 18973,19002 ----
       paradoxical, whether it occupies a whole number of blocks, or
       whether it is a lowpart of a block.  This means that certain
       combinations of variable-sized mode are not permitted.  For
!      example, if M2 holds N â€˜SIâ€™ values, where N is greater than zero,
!      it is not possible to form a â€˜DIâ€™ â€˜subregâ€™ of it; such a â€˜subregâ€™
       would be paradoxical when N is 1 but not when N is greater than 1.
  
!      The first operand of a â€˜subregâ€™ expression is customarily accessed
!      with the â€˜SUBREG_REGâ€™ macro and the second operand is customarily
!      accessed with the â€˜SUBREG_BYTEâ€™ macro.
  
       It has been several years since a platform in which
!      â€˜BYTES_BIG_ENDIANâ€™ not equal to â€˜WORDS_BIG_ENDIANâ€™ has been tested.
       Anyone wishing to support such a platform in the future may be
       confronted with code rot.
  
! â€˜(scratch:M)â€™
       This represents a scratch register that will be required for the
       execution of a single instruction and not used subsequently.  It is
!      converted into a â€˜regâ€™ by either the local register allocator or
       the reload pass.
  
!      â€˜scratchâ€™ is usually present inside a â€˜clobberâ€™ operation (*note
       Side Effects::).
  
       On some machines, the condition code register is given a register
!      number and a â€˜regâ€™ is used.  Other machines store condition codes
       in general registers; in such cases a pseudo register should be
       used.
  
*************** registers and to main memory.
*** 19000,19041 ****
       the condition code.  This is best handled by normally generating
       the instruction that does not set the condition code, and making a
       pattern that both performs the arithmetic and sets the condition
!      code register.  For examples, search for 'addcc' and 'andcc' in
!      'sparc.md'.
  
! '(pc)'
       This represents the machine's program counter.  It has no operands
!      and may not have a machine mode.  '(pc)' may be validly used only
       in certain specific contexts in jump instructions.
  
!      There is only one expression object of code 'pc'; it is the value
!      of the variable 'pc_rtx'.  Any attempt to create an expression of
!      code 'pc' will return 'pc_rtx'.
  
       All instructions that do not jump alter the program counter
       implicitly by incrementing it, but there is no need to mention this
       in the RTL.
  
! '(mem:M ADDR ALIAS)'
       This RTX represents a reference to main memory at an address
       represented by the expression ADDR.  M specifies how large a unit
       of memory is accessed.  ALIAS specifies an alias set for the
       reference.  In general two items are in different alias sets if
       they cannot reference the same memory address.
  
!      The construct '(mem:BLK (scratch))' is considered to alias all
       other memories.  Thus it may be used as a memory barrier in
       epilogue stack deallocation patterns.
  
! '(concatM RTX RTX)'
       This RTX represents the concatenation of two other RTXs.  This is
       used for complex values.  It should only appear in the RTL attached
       to declarations and during RTL generation.  It should not appear in
       the ordinary insn chain.
  
! '(concatnM [RTX ...])'
       This RTX represents the concatenation of all the RTX to make a
!      single value.  Like 'concat', this should only appear in
       declarations, and not in the insn chain.
  
  
--- 19005,19046 ----
       the condition code.  This is best handled by normally generating
       the instruction that does not set the condition code, and making a
       pattern that both performs the arithmetic and sets the condition
!      code register.  For examples, search for â€˜addccâ€™ and â€˜andccâ€™ in
!      â€˜sparc.mdâ€™.
  
! â€˜(pc)â€™
       This represents the machine's program counter.  It has no operands
!      and may not have a machine mode.  â€˜(pc)â€™ may be validly used only
       in certain specific contexts in jump instructions.
  
!      There is only one expression object of code â€˜pcâ€™; it is the value
!      of the variable â€˜pc_rtxâ€™.  Any attempt to create an expression of
!      code â€˜pcâ€™ will return â€˜pc_rtxâ€™.
  
       All instructions that do not jump alter the program counter
       implicitly by incrementing it, but there is no need to mention this
       in the RTL.
  
! â€˜(mem:M ADDR ALIAS)â€™
       This RTX represents a reference to main memory at an address
       represented by the expression ADDR.  M specifies how large a unit
       of memory is accessed.  ALIAS specifies an alias set for the
       reference.  In general two items are in different alias sets if
       they cannot reference the same memory address.
  
!      The construct â€˜(mem:BLK (scratch))â€™ is considered to alias all
       other memories.  Thus it may be used as a memory barrier in
       epilogue stack deallocation patterns.
  
! â€˜(concatM RTX RTX)â€™
       This RTX represents the concatenation of two other RTXs.  This is
       used for complex values.  It should only appear in the RTL attached
       to declarations and during RTL generation.  It should not appear in
       the ordinary insn chain.
  
! â€˜(concatnM [RTX ...])â€™
       This RTX represents the concatenation of all the RTX to make a
!      single value.  Like â€˜concatâ€™, this should only appear in
       declarations, and not in the insn chain.
  
  
*************** File: gccint.info,  Node: Arithmetic,  N
*** 19046,19090 ****
  
  Unless otherwise specified, all the operands of arithmetic expressions
  must be valid for mode M.  An operand is valid for mode M if it has mode
! M, or if it is a 'const_int' or 'const_double' and M is a mode of class
! 'MODE_INT'.
  
   For commutative binary operations, constants should be placed in the
  second operand.
  
! '(plus:M X Y)'
! '(ss_plus:M X Y)'
! '(us_plus:M X Y)'
  
       These three expressions all represent the sum of the values
       represented by X and Y carried out in machine mode M.  They differ
!      in their behavior on overflow of integer modes.  'plus' wraps round
!      modulo the width of M; 'ss_plus' saturates at the maximum signed
!      value representable in M; 'us_plus' saturates at the maximum
       unsigned value.
  
! '(lo_sum:M X Y)'
  
       This expression represents the sum of X and the low-order bits of
!      Y.  It is used with 'high' (*note Constants::) to represent the
       typical two-instruction sequence used in RISC machines to reference
       large immediate values and/or link-time constants such as global
!      memory addresses.  In the latter case, M is 'Pmode' and Y is
!      usually a constant expression involving 'symbol_ref'.
  
       The number of low order bits is machine-dependent but is normally
       the number of bits in mode M minus the number of bits set by
!      'high'.
  
! '(minus:M X Y)'
! '(ss_minus:M X Y)'
! '(us_minus:M X Y)'
  
       These three expressions represent the result of subtracting Y from
       X, carried out in mode M.  Behavior on overflow is the same as for
!      the three variants of 'plus' (see above).
  
! '(compare:M X Y)'
       Represents the result of subtracting Y from X for purposes of
       comparison.  The result is computed without overflow, as if with
       infinite precision.
--- 19051,19095 ----
  
  Unless otherwise specified, all the operands of arithmetic expressions
  must be valid for mode M.  An operand is valid for mode M if it has mode
! M, or if it is a â€˜const_intâ€™ or â€˜const_doubleâ€™ and M is a mode of class
! â€˜MODE_INTâ€™.
  
   For commutative binary operations, constants should be placed in the
  second operand.
  
! â€˜(plus:M X Y)â€™
! â€˜(ss_plus:M X Y)â€™
! â€˜(us_plus:M X Y)â€™
  
       These three expressions all represent the sum of the values
       represented by X and Y carried out in machine mode M.  They differ
!      in their behavior on overflow of integer modes.  â€˜plusâ€™ wraps round
!      modulo the width of M; â€˜ss_plusâ€™ saturates at the maximum signed
!      value representable in M; â€˜us_plusâ€™ saturates at the maximum
       unsigned value.
  
! â€˜(lo_sum:M X Y)â€™
  
       This expression represents the sum of X and the low-order bits of
!      Y.  It is used with â€˜highâ€™ (*note Constants::) to represent the
       typical two-instruction sequence used in RISC machines to reference
       large immediate values and/or link-time constants such as global
!      memory addresses.  In the latter case, M is â€˜Pmodeâ€™ and Y is
!      usually a constant expression involving â€˜symbol_refâ€™.
  
       The number of low order bits is machine-dependent but is normally
       the number of bits in mode M minus the number of bits set by
!      â€˜highâ€™.
  
! â€˜(minus:M X Y)â€™
! â€˜(ss_minus:M X Y)â€™
! â€˜(us_minus:M X Y)â€™
  
       These three expressions represent the result of subtracting Y from
       X, carried out in mode M.  Behavior on overflow is the same as for
!      the three variants of â€˜plusâ€™ (see above).
  
! â€˜(compare:M X Y)â€™
       Represents the result of subtracting Y from X for purposes of
       comparison.  The result is computed without overflow, as if with
       infinite precision.
*************** second operand.
*** 19098,19140 ****
  
       The mode M is not related to the modes of X and Y, but instead is
       the mode of the condition code value.  It is some mode in class
!      'MODE_CC', often 'CCmode'.  *Note Condition Code::.  If M is
!      'CCmode', the operation returns sufficient information (in an
       unspecified format) so that any comparison operator can be applied
!      to the result of the 'COMPARE' operation.  For other modes in class
!      'MODE_CC', the operation only returns a subset of this information.
  
!      Normally, X and Y must have the same mode.  Otherwise, 'compare' is
!      valid only if the mode of X is in class 'MODE_INT' and Y is a
!      'const_int' or 'const_double' with mode 'VOIDmode'.  The mode of X
       determines what mode the comparison is to be done in; thus it must
!      not be 'VOIDmode'.
  
       If one of the operands is a constant, it should be placed in the
       second operand and the comparison code adjusted as appropriate.
  
!      A 'compare' specifying two 'VOIDmode' constants is not valid since
       there is no way to know in what mode the comparison is to be
       performed; the comparison must either be folded during the
       compilation or the first operand must be loaded into a register
       while its mode is still known.
  
! '(neg:M X)'
! '(ss_neg:M X)'
! '(us_neg:M X)'
       These two expressions represent the negation (subtraction from
       zero) of the value represented by X, carried out in mode M.  They
       differ in the behavior on overflow of integer modes.  In the case
!      of 'neg', the negation of the operand may be a number not
       representable in mode M, in which case it is truncated to M.
!      'ss_neg' and 'us_neg' ensure that an out-of-bounds result saturates
       to the maximum or minimum signed or unsigned value.
  
! '(mult:M X Y)'
! '(ss_mult:M X Y)'
! '(us_mult:M X Y)'
       Represents the signed product of the values represented by X and Y
!      carried out in machine mode M.  'ss_mult' and 'us_mult' ensure that
       an out-of-bounds result saturates to the maximum or minimum signed
       or unsigned value.
  
--- 19103,19145 ----
  
       The mode M is not related to the modes of X and Y, but instead is
       the mode of the condition code value.  It is some mode in class
!      â€˜MODE_CCâ€™, often â€˜CCmodeâ€™.  *Note Condition Code::.  If M is
!      â€˜CCmodeâ€™, the operation returns sufficient information (in an
       unspecified format) so that any comparison operator can be applied
!      to the result of the â€˜COMPAREâ€™ operation.  For other modes in class
!      â€˜MODE_CCâ€™, the operation only returns a subset of this information.
  
!      Normally, X and Y must have the same mode.  Otherwise, â€˜compareâ€™ is
!      valid only if the mode of X is in class â€˜MODE_INTâ€™ and Y is a
!      â€˜const_intâ€™ or â€˜const_doubleâ€™ with mode â€˜VOIDmodeâ€™.  The mode of X
       determines what mode the comparison is to be done in; thus it must
!      not be â€˜VOIDmodeâ€™.
  
       If one of the operands is a constant, it should be placed in the
       second operand and the comparison code adjusted as appropriate.
  
!      A â€˜compareâ€™ specifying two â€˜VOIDmodeâ€™ constants is not valid since
       there is no way to know in what mode the comparison is to be
       performed; the comparison must either be folded during the
       compilation or the first operand must be loaded into a register
       while its mode is still known.
  
! â€˜(neg:M X)â€™
! â€˜(ss_neg:M X)â€™
! â€˜(us_neg:M X)â€™
       These two expressions represent the negation (subtraction from
       zero) of the value represented by X, carried out in mode M.  They
       differ in the behavior on overflow of integer modes.  In the case
!      of â€˜negâ€™, the negation of the operand may be a number not
       representable in mode M, in which case it is truncated to M.
!      â€˜ss_negâ€™ and â€˜us_negâ€™ ensure that an out-of-bounds result saturates
       to the maximum or minimum signed or unsigned value.
  
! â€˜(mult:M X Y)â€™
! â€˜(ss_mult:M X Y)â€™
! â€˜(us_mult:M X Y)â€™
       Represents the signed product of the values represented by X and Y
!      carried out in machine mode M.  â€˜ss_multâ€™ and â€˜us_multâ€™ ensure that
       an out-of-bounds result saturates to the maximum or minimum signed
       or unsigned value.
  
*************** second operand.
*** 19147,19306 ****
       same.
  
       For unsigned widening multiplication, use the same idiom, but with
!      'zero_extend' instead of 'sign_extend'.
  
! '(smul_highpart:M X Y)'
! '(umul_highpart:M X Y)'
       Represents the high-part multiplication of X and Y carried out in
!      machine mode M.  'smul_highpart' returns the high part of a signed
!      multiplication, 'umul_highpart' returns the high part of an
       unsigned multiplication.
  
! '(fma:M X Y Z)'
!      Represents the 'fma', 'fmaf', and 'fmal' builtin functions, which
!      compute 'X * Y + Z' without doing an intermediate rounding step.
  
! '(div:M X Y)'
! '(ss_div:M X Y)'
       Represents the quotient in signed division of X by Y, carried out
       in machine mode M.  If M is a floating point mode, it represents
!      the exact quotient; otherwise, the integerized quotient.  'ss_div'
       ensures that an out-of-bounds result saturates to the maximum or
       minimum signed value.
  
       Some machines have division instructions in which the operands and
       quotient widths are not all the same; you should represent such
!      instructions using 'truncate' and 'sign_extend' as in,
  
            (truncate:M1 (div:M2 X (sign_extend:M2 Y)))
  
! '(udiv:M X Y)'
! '(us_div:M X Y)'
!      Like 'div' but represents unsigned division.  'us_div' ensures that
       an out-of-bounds result saturates to the maximum or minimum
       unsigned value.
  
! '(mod:M X Y)'
! '(umod:M X Y)'
!      Like 'div' and 'udiv' but represent the remainder instead of the
       quotient.
  
! '(smin:M X Y)'
! '(smax:M X Y)'
!      Represents the smaller (for 'smin') or larger (for 'smax') of X and
       Y, interpreted as signed values in mode M.  When used with floating
!      point, if both operands are zeros, or if either operand is 'NaN',
       then it is unspecified which of the two operands is returned as the
       result.
  
! '(umin:M X Y)'
! '(umax:M X Y)'
!      Like 'smin' and 'smax', but the values are interpreted as unsigned
       integers.
  
! '(not:M X)'
       Represents the bitwise complement of the value represented by X,
       carried out in mode M, which must be a fixed-point machine mode.
  
! '(and:M X Y)'
       Represents the bitwise logical-and of the values represented by X
       and Y, carried out in machine mode M, which must be a fixed-point
       machine mode.
  
! '(ior:M X Y)'
       Represents the bitwise inclusive-or of the values represented by X
       and Y, carried out in machine mode M, which must be a fixed-point
       mode.
  
! '(xor:M X Y)'
       Represents the bitwise exclusive-or of the values represented by X
       and Y, carried out in machine mode M, which must be a fixed-point
       mode.
  
! '(ashift:M X C)'
! '(ss_ashift:M X C)'
! '(us_ashift:M X C)'
       These three expressions represent the result of arithmetically
       shifting X left by C places.  They differ in their behavior on
!      overflow of integer modes.  An 'ashift' operation is a plain shift
       with no special behavior in case of a change in the sign bit;
!      'ss_ashift' and 'us_ashift' saturates to the minimum or maximum
       representable value if any of the bits shifted out differs from the
       final sign bit.
  
       X have mode M, a fixed-point machine mode.  C be a fixed-point mode
!      or be a constant with mode 'VOIDmode'; which mode is determined by
       the mode called for in the machine description entry for the
       left-shift instruction.  For example, on the VAX, the mode of C is
!      'QImode' regardless of M.
  
! '(lshiftrt:M X C)'
! '(ashiftrt:M X C)'
!      Like 'ashift' but for right shift.  Unlike the case for left shift,
       these two operations are distinct.
  
! '(rotate:M X C)'
! '(rotatert:M X C)'
       Similar but represent left and right rotate.  If C is a constant,
!      use 'rotate'.
  
! '(abs:M X)'
! '(ss_abs:M X)'
!      Represents the absolute value of X, computed in mode M.  'ss_abs'
       ensures that an out-of-bounds result saturates to the maximum
       signed value.
  
! '(sqrt:M X)'
       Represents the square root of X, computed in mode M.  Most often M
       will be a floating point mode.
  
! '(ffs:M X)'
       Represents one plus the index of the least significant 1-bit in X,
       represented as an integer of mode M.  (The value is zero if X is
!      zero.)  The mode of X must be M or 'VOIDmode'.
  
! '(clrsb:M X)'
       Represents the number of redundant leading sign bits in X,
       represented as an integer of mode M, starting at the most
       significant bit position.  This is one less than the number of
       leading sign bits (either 0 or 1), with no special cases.  The mode
!      of X must be M or 'VOIDmode'.
  
! '(clz:M X)'
       Represents the number of leading 0-bits in X, represented as an
       integer of mode M, starting at the most significant bit position.
       If X is zero, the value is determined by
!      'CLZ_DEFINED_VALUE_AT_ZERO' (*note Misc::).  Note that this is one
       of the few expressions that is not invariant under widening.  The
!      mode of X must be M or 'VOIDmode'.
  
! '(ctz:M X)'
       Represents the number of trailing 0-bits in X, represented as an
       integer of mode M, starting at the least significant bit position.
       If X is zero, the value is determined by
!      'CTZ_DEFINED_VALUE_AT_ZERO' (*note Misc::).  Except for this case,
!      'ctz(x)' is equivalent to 'ffs(X) - 1'.  The mode of X must be M or
!      'VOIDmode'.
  
! '(popcount:M X)'
       Represents the number of 1-bits in X, represented as an integer of
!      mode M.  The mode of X must be M or 'VOIDmode'.
  
! '(parity:M X)'
       Represents the number of 1-bits modulo 2 in X, represented as an
!      integer of mode M.  The mode of X must be M or 'VOIDmode'.
  
! '(bswap:M X)'
       Represents the value X with the order of bytes reversed, carried
       out in mode M, which must be a fixed-point machine mode.  The mode
!      of X must be M or 'VOIDmode'.
  
! '(bitreverse:M X)'
       Represents the value X with the order of bits reversed, carried out
       in mode M, which must be a fixed-point machine mode.  The mode of X
!      must be M or 'VOIDmode'.
  
! '(copysign:M X Y)'
       Represents the value X with the sign of Y.  Both X and Y must have
       floating point machine mode M.
  
--- 19152,19311 ----
       same.
  
       For unsigned widening multiplication, use the same idiom, but with
!      â€˜zero_extendâ€™ instead of â€˜sign_extendâ€™.
  
! â€˜(smul_highpart:M X Y)â€™
! â€˜(umul_highpart:M X Y)â€™
       Represents the high-part multiplication of X and Y carried out in
!      machine mode M.  â€˜smul_highpartâ€™ returns the high part of a signed
!      multiplication, â€˜umul_highpartâ€™ returns the high part of an
       unsigned multiplication.
  
! â€˜(fma:M X Y Z)â€™
!      Represents the â€˜fmaâ€™, â€˜fmafâ€™, and â€˜fmalâ€™ builtin functions, which
!      compute â€˜X * Y + Zâ€™ without doing an intermediate rounding step.
  
! â€˜(div:M X Y)â€™
! â€˜(ss_div:M X Y)â€™
       Represents the quotient in signed division of X by Y, carried out
       in machine mode M.  If M is a floating point mode, it represents
!      the exact quotient; otherwise, the integerized quotient.  â€˜ss_divâ€™
       ensures that an out-of-bounds result saturates to the maximum or
       minimum signed value.
  
       Some machines have division instructions in which the operands and
       quotient widths are not all the same; you should represent such
!      instructions using â€˜truncateâ€™ and â€˜sign_extendâ€™ as in,
  
            (truncate:M1 (div:M2 X (sign_extend:M2 Y)))
  
! â€˜(udiv:M X Y)â€™
! â€˜(us_div:M X Y)â€™
!      Like â€˜divâ€™ but represents unsigned division.  â€˜us_divâ€™ ensures that
       an out-of-bounds result saturates to the maximum or minimum
       unsigned value.
  
! â€˜(mod:M X Y)â€™
! â€˜(umod:M X Y)â€™
!      Like â€˜divâ€™ and â€˜udivâ€™ but represent the remainder instead of the
       quotient.
  
! â€˜(smin:M X Y)â€™
! â€˜(smax:M X Y)â€™
!      Represents the smaller (for â€˜sminâ€™) or larger (for â€˜smaxâ€™) of X and
       Y, interpreted as signed values in mode M.  When used with floating
!      point, if both operands are zeros, or if either operand is â€˜NaNâ€™,
       then it is unspecified which of the two operands is returned as the
       result.
  
! â€˜(umin:M X Y)â€™
! â€˜(umax:M X Y)â€™
!      Like â€˜sminâ€™ and â€˜smaxâ€™, but the values are interpreted as unsigned
       integers.
  
! â€˜(not:M X)â€™
       Represents the bitwise complement of the value represented by X,
       carried out in mode M, which must be a fixed-point machine mode.
  
! â€˜(and:M X Y)â€™
       Represents the bitwise logical-and of the values represented by X
       and Y, carried out in machine mode M, which must be a fixed-point
       machine mode.
  
! â€˜(ior:M X Y)â€™
       Represents the bitwise inclusive-or of the values represented by X
       and Y, carried out in machine mode M, which must be a fixed-point
       mode.
  
! â€˜(xor:M X Y)â€™
       Represents the bitwise exclusive-or of the values represented by X
       and Y, carried out in machine mode M, which must be a fixed-point
       mode.
  
! â€˜(ashift:M X C)â€™
! â€˜(ss_ashift:M X C)â€™
! â€˜(us_ashift:M X C)â€™
       These three expressions represent the result of arithmetically
       shifting X left by C places.  They differ in their behavior on
!      overflow of integer modes.  An â€˜ashiftâ€™ operation is a plain shift
       with no special behavior in case of a change in the sign bit;
!      â€˜ss_ashiftâ€™ and â€˜us_ashiftâ€™ saturates to the minimum or maximum
       representable value if any of the bits shifted out differs from the
       final sign bit.
  
       X have mode M, a fixed-point machine mode.  C be a fixed-point mode
!      or be a constant with mode â€˜VOIDmodeâ€™; which mode is determined by
       the mode called for in the machine description entry for the
       left-shift instruction.  For example, on the VAX, the mode of C is
!      â€˜QImodeâ€™ regardless of M.
  
! â€˜(lshiftrt:M X C)â€™
! â€˜(ashiftrt:M X C)â€™
!      Like â€˜ashiftâ€™ but for right shift.  Unlike the case for left shift,
       these two operations are distinct.
  
! â€˜(rotate:M X C)â€™
! â€˜(rotatert:M X C)â€™
       Similar but represent left and right rotate.  If C is a constant,
!      use â€˜rotateâ€™.
  
! â€˜(abs:M X)â€™
! â€˜(ss_abs:M X)â€™
!      Represents the absolute value of X, computed in mode M.  â€˜ss_absâ€™
       ensures that an out-of-bounds result saturates to the maximum
       signed value.
  
! â€˜(sqrt:M X)â€™
       Represents the square root of X, computed in mode M.  Most often M
       will be a floating point mode.
  
! â€˜(ffs:M X)â€™
       Represents one plus the index of the least significant 1-bit in X,
       represented as an integer of mode M.  (The value is zero if X is
!      zero.)  The mode of X must be M or â€˜VOIDmodeâ€™.
  
! â€˜(clrsb:M X)â€™
       Represents the number of redundant leading sign bits in X,
       represented as an integer of mode M, starting at the most
       significant bit position.  This is one less than the number of
       leading sign bits (either 0 or 1), with no special cases.  The mode
!      of X must be M or â€˜VOIDmodeâ€™.
  
! â€˜(clz:M X)â€™
       Represents the number of leading 0-bits in X, represented as an
       integer of mode M, starting at the most significant bit position.
       If X is zero, the value is determined by
!      â€˜CLZ_DEFINED_VALUE_AT_ZEROâ€™ (*note Misc::).  Note that this is one
       of the few expressions that is not invariant under widening.  The
!      mode of X must be M or â€˜VOIDmodeâ€™.
  
! â€˜(ctz:M X)â€™
       Represents the number of trailing 0-bits in X, represented as an
       integer of mode M, starting at the least significant bit position.
       If X is zero, the value is determined by
!      â€˜CTZ_DEFINED_VALUE_AT_ZEROâ€™ (*note Misc::).  Except for this case,
!      â€˜ctz(x)â€™ is equivalent to â€˜ffs(X) - 1â€™.  The mode of X must be M or
!      â€˜VOIDmodeâ€™.
  
! â€˜(popcount:M X)â€™
       Represents the number of 1-bits in X, represented as an integer of
!      mode M.  The mode of X must be M or â€˜VOIDmodeâ€™.
  
! â€˜(parity:M X)â€™
       Represents the number of 1-bits modulo 2 in X, represented as an
!      integer of mode M.  The mode of X must be M or â€˜VOIDmodeâ€™.
  
! â€˜(bswap:M X)â€™
       Represents the value X with the order of bytes reversed, carried
       out in mode M, which must be a fixed-point machine mode.  The mode
!      of X must be M or â€˜VOIDmodeâ€™.
  
! â€˜(bitreverse:M X)â€™
       Represents the value X with the order of bits reversed, carried out
       in mode M, which must be a fixed-point machine mode.  The mode of X
!      must be M or â€˜VOIDmodeâ€™.
  
! â€˜(copysign:M X Y)â€™
       Represents the value X with the sign of Y.  Both X and Y must have
       floating point machine mode M.
  
*************** File: gccint.info,  Node: Comparisons,
*** 19312,19328 ****
  
  Comparison operators test a relation on two operands and are considered
  to represent a machine-dependent nonzero value described by, but not
! necessarily equal to, 'STORE_FLAG_VALUE' (*note Misc::) if the relation
  holds, or zero if it does not, for comparison operators whose results
! have a 'MODE_INT' mode, 'FLOAT_STORE_FLAG_VALUE' (*note Misc::) if the
  relation holds, or zero if it does not, for comparison operators that
  return floating-point values, and a vector of either
! 'VECTOR_STORE_FLAG_VALUE' (*note Misc::) if the relation holds, or of
  zeros if it does not, for comparison operators that return vector
  results.  The mode of the comparison operation is independent of the
  mode of the data being compared.  If the comparison operation is being
! tested (e.g., the first operand of an 'if_then_else'), the mode must be
! 'VOIDmode'.
  
   A comparison operation compares two data objects.  The mode of the
  comparison is determined by the operands; they must both be valid for a
--- 19317,19333 ----
  
  Comparison operators test a relation on two operands and are considered
  to represent a machine-dependent nonzero value described by, but not
! necessarily equal to, â€˜STORE_FLAG_VALUEâ€™ (*note Misc::) if the relation
  holds, or zero if it does not, for comparison operators whose results
! have a 'MODE_INT' mode, â€˜FLOAT_STORE_FLAG_VALUEâ€™ (*note Misc::) if the
  relation holds, or zero if it does not, for comparison operators that
  return floating-point values, and a vector of either
! â€˜VECTOR_STORE_FLAG_VALUEâ€™ (*note Misc::) if the relation holds, or of
  zeros if it does not, for comparison operators that return vector
  results.  The mode of the comparison operation is independent of the
  mode of the data being compared.  If the comparison operation is being
! tested (e.g., the first operand of an â€˜if_then_elseâ€™), the mode must be
! â€˜VOIDmodeâ€™.
  
   A comparison operation compares two data objects.  The mode of the
  comparison is determined by the operands; they must both be valid for a
*************** comparison should never exist in RTL due
*** 19332,19391 ****
  
   Usually only one style of comparisons is supported on a particular
  machine, but the combine pass will try to merge operations to produce
! code like '(eq X Y)', in case it exists in the context of the particular
  insn involved.
  
   Inequality comparisons come in two flavors, signed and unsigned.  Thus,
! there are distinct expression codes 'gt' and 'gtu' for signed and
  unsigned greater-than.  These can produce different results for the same
! pair of integer values: for example, 1 is signed greater-than -1 but not
! unsigned greater-than, because -1 when regarded as unsigned is actually
! '0xffffffff' which is greater than 1.
  
   The signed comparisons are also used for floating point values.
  Floating point comparisons are distinguished by the machine modes of the
  operands.
  
! '(eq:M X Y)'
!      'STORE_FLAG_VALUE' if the values represented by X and Y are equal,
       otherwise 0.
  
! '(ne:M X Y)'
!      'STORE_FLAG_VALUE' if the values represented by X and Y are not
       equal, otherwise 0.
  
! '(gt:M X Y)'
!      'STORE_FLAG_VALUE' if the X is greater than Y.  If they are
       fixed-point, the comparison is done in a signed sense.
  
! '(gtu:M X Y)'
!      Like 'gt' but does unsigned comparison, on fixed-point numbers
       only.
  
! '(lt:M X Y)'
! '(ltu:M X Y)'
!      Like 'gt' and 'gtu' but test for "less than".
  
! '(ge:M X Y)'
! '(geu:M X Y)'
!      Like 'gt' and 'gtu' but test for "greater than or equal".
  
! '(le:M X Y)'
! '(leu:M X Y)'
!      Like 'gt' and 'gtu' but test for "less than or equal".
  
! '(if_then_else COND THEN ELSE)'
       This is not a comparison operation but is listed here because it is
       always used in conjunction with a comparison operation.  To be
       precise, COND is a comparison expression.  This expression
       represents a choice, according to COND, between the value
       represented by THEN and the one represented by ELSE.
  
!      On most machines, 'if_then_else' expressions are valid only to
       express conditional jumps.
  
! '(cond [TEST1 VALUE1 TEST2 VALUE2 ...] DEFAULT)'
!      Similar to 'if_then_else', but more general.  Each of TEST1, TEST2,
       ... is performed in turn.  The result of this expression is the
       VALUE corresponding to the first nonzero test, or DEFAULT if none
       of the tests are nonzero expressions.
--- 19337,19396 ----
  
   Usually only one style of comparisons is supported on a particular
  machine, but the combine pass will try to merge operations to produce
! code like â€˜(eq X Y)â€™, in case it exists in the context of the particular
  insn involved.
  
   Inequality comparisons come in two flavors, signed and unsigned.  Thus,
! there are distinct expression codes â€˜gtâ€™ and â€˜gtuâ€™ for signed and
  unsigned greater-than.  These can produce different results for the same
! pair of integer values: for example, 1 is signed greater-than âˆ’1 but not
! unsigned greater-than, because âˆ’1 when regarded as unsigned is actually
! â€˜0xffffffffâ€™ which is greater than 1.
  
   The signed comparisons are also used for floating point values.
  Floating point comparisons are distinguished by the machine modes of the
  operands.
  
! â€˜(eq:M X Y)â€™
!      â€˜STORE_FLAG_VALUEâ€™ if the values represented by X and Y are equal,
       otherwise 0.
  
! â€˜(ne:M X Y)â€™
!      â€˜STORE_FLAG_VALUEâ€™ if the values represented by X and Y are not
       equal, otherwise 0.
  
! â€˜(gt:M X Y)â€™
!      â€˜STORE_FLAG_VALUEâ€™ if the X is greater than Y.  If they are
       fixed-point, the comparison is done in a signed sense.
  
! â€˜(gtu:M X Y)â€™
!      Like â€˜gtâ€™ but does unsigned comparison, on fixed-point numbers
       only.
  
! â€˜(lt:M X Y)â€™
! â€˜(ltu:M X Y)â€™
!      Like â€˜gtâ€™ and â€˜gtuâ€™ but test for "less than".
  
! â€˜(ge:M X Y)â€™
! â€˜(geu:M X Y)â€™
!      Like â€˜gtâ€™ and â€˜gtuâ€™ but test for "greater than or equal".
  
! â€˜(le:M X Y)â€™
! â€˜(leu:M X Y)â€™
!      Like â€˜gtâ€™ and â€˜gtuâ€™ but test for "less than or equal".
  
! â€˜(if_then_else COND THEN ELSE)â€™
       This is not a comparison operation but is listed here because it is
       always used in conjunction with a comparison operation.  To be
       precise, COND is a comparison expression.  This expression
       represents a choice, according to COND, between the value
       represented by THEN and the one represented by ELSE.
  
!      On most machines, â€˜if_then_elseâ€™ expressions are valid only to
       express conditional jumps.
  
! â€˜(cond [TEST1 VALUE1 TEST2 VALUE2 ...] DEFAULT)â€™
!      Similar to â€˜if_then_elseâ€™, but more general.  Each of TEST1, TEST2,
       ... is performed in turn.  The result of this expression is the
       VALUE corresponding to the first nonzero test, or DEFAULT if none
       of the tests are nonzero expressions.
*************** File: gccint.info,  Node: Bit-Fields,  N
*** 19401,19434 ****
  
  Special expression codes exist to represent bit-field instructions.
  
! '(sign_extract:M LOC SIZE POS)'
       This represents a reference to a sign-extended bit-field contained
       or starting in LOC (a memory or register reference).  The bit-field
       is SIZE bits wide and starts at bit POS.  The compilation option
!      'BITS_BIG_ENDIAN' says which end of the memory unit POS counts
       from.
  
       If LOC is in memory, its mode must be a single-byte integer mode.
       If LOC is in a register, the mode to use is specified by the
!      operand of the 'insv' or 'extv' pattern (*note Standard Names::)
       and is usually a full-word integer mode, which is the default if
       none is specified.
  
       The mode of POS is machine-specific and is also specified in the
!      'insv' or 'extv' pattern.
  
       The mode M is the same as the mode that would be used for LOC if it
       were a register.
  
!      A 'sign_extract' cannot appear as an lvalue, or part thereof, in
       RTL.
  
! '(zero_extract:M LOC SIZE POS)'
!      Like 'sign_extract' but refers to an unsigned or zero-extended
       bit-field.  The same sequence of bits are extracted, but they are
       filled to an entire word with zeros instead of by sign-extension.
  
!      Unlike 'sign_extract', this type of expressions can be lvalues in
       RTL; they may appear on the left side of an assignment, indicating
       insertion of a value into the specified bit-field.
  
--- 19406,19439 ----
  
  Special expression codes exist to represent bit-field instructions.
  
! â€˜(sign_extract:M LOC SIZE POS)â€™
       This represents a reference to a sign-extended bit-field contained
       or starting in LOC (a memory or register reference).  The bit-field
       is SIZE bits wide and starts at bit POS.  The compilation option
!      â€˜BITS_BIG_ENDIANâ€™ says which end of the memory unit POS counts
       from.
  
       If LOC is in memory, its mode must be a single-byte integer mode.
       If LOC is in a register, the mode to use is specified by the
!      operand of the â€˜insvâ€™ or â€˜extvâ€™ pattern (*note Standard Names::)
       and is usually a full-word integer mode, which is the default if
       none is specified.
  
       The mode of POS is machine-specific and is also specified in the
!      â€˜insvâ€™ or â€˜extvâ€™ pattern.
  
       The mode M is the same as the mode that would be used for LOC if it
       were a register.
  
!      A â€˜sign_extractâ€™ cannot appear as an lvalue, or part thereof, in
       RTL.
  
! â€˜(zero_extract:M LOC SIZE POS)â€™
!      Like â€˜sign_extractâ€™ but refers to an unsigned or zero-extended
       bit-field.  The same sequence of bits are extracted, but they are
       filled to an entire word with zeros instead of by sign-extension.
  
!      Unlike â€˜sign_extractâ€™, this type of expressions can be lvalues in
       RTL; they may appear on the left side of an assignment, indicating
       insertion of a value into the specified bit-field.
  
*************** interpreted as operating on each part of
*** 19443,19481 ****
  Additionally, there are a few new expressions to describe specific
  vector operations.
  
! '(vec_merge:M VEC1 VEC2 ITEMS)'
       This describes a merge operation between two vectors.  The result
       is a vector of mode M; its elements are selected from either VEC1
       or VEC2.  Which elements are selected is described by ITEMS, which
!      is a bit mask represented by a 'const_int'; a zero bit indicates
       the corresponding element in the result vector is taken from VEC2
       while a set bit indicates it is taken from VEC1.
  
! '(vec_select:M VEC1 SELECTION)'
       This describes an operation that selects parts of a vector.  VEC1
!      is the source vector, and SELECTION is a 'parallel' that contains a
!      'const_int' (or another expression, if the selection can be made at
       runtime) for each of the subparts of the result vector, giving the
       number of the source subpart that should be stored into it.  The
       result mode M is either the submode for a single element of VEC1
       (if only one subpart is selected), or another vector mode with that
       element submode (if multiple subparts are selected).
  
! '(vec_concat:M X1 X2)'
       Describes a vector concat operation.  The result is a concatenation
       of the vectors or scalars X1 and X2; its length is the sum of the
       lengths of the two inputs.
  
! '(vec_duplicate:M X)'
       This operation converts a scalar into a vector or a small vector
       into a larger one by duplicating the input values.  The output
       vector mode must have the same submodes as the input vector mode or
       the scalar modes, and the number of output parts must be an integer
       multiple of the number of input parts.
  
! '(vec_series:M BASE STEP)'
       This operation creates a vector in which element I is equal to
!      'BASE + I*STEP'.  M must be a vector integer mode.
  
  
  File: gccint.info,  Node: Conversions,  Next: RTL Declarations,  Prev: Vector Operations,  Up: RTL
--- 19448,19486 ----
  Additionally, there are a few new expressions to describe specific
  vector operations.
  
! â€˜(vec_merge:M VEC1 VEC2 ITEMS)â€™
       This describes a merge operation between two vectors.  The result
       is a vector of mode M; its elements are selected from either VEC1
       or VEC2.  Which elements are selected is described by ITEMS, which
!      is a bit mask represented by a â€˜const_intâ€™; a zero bit indicates
       the corresponding element in the result vector is taken from VEC2
       while a set bit indicates it is taken from VEC1.
  
! â€˜(vec_select:M VEC1 SELECTION)â€™
       This describes an operation that selects parts of a vector.  VEC1
!      is the source vector, and SELECTION is a â€˜parallelâ€™ that contains a
!      â€˜const_intâ€™ (or another expression, if the selection can be made at
       runtime) for each of the subparts of the result vector, giving the
       number of the source subpart that should be stored into it.  The
       result mode M is either the submode for a single element of VEC1
       (if only one subpart is selected), or another vector mode with that
       element submode (if multiple subparts are selected).
  
! â€˜(vec_concat:M X1 X2)â€™
       Describes a vector concat operation.  The result is a concatenation
       of the vectors or scalars X1 and X2; its length is the sum of the
       lengths of the two inputs.
  
! â€˜(vec_duplicate:M X)â€™
       This operation converts a scalar into a vector or a small vector
       into a larger one by duplicating the input values.  The output
       vector mode must have the same submodes as the input vector mode or
       the scalar modes, and the number of output parts must be an integer
       multiple of the number of input parts.
  
! â€˜(vec_series:M BASE STEP)â€™
       This operation creates a vector in which element I is equal to
!      â€˜BASE + I*STEPâ€™.  M must be a vector integer mode.
  
  
  File: gccint.info,  Node: Conversions,  Next: RTL Declarations,  Prev: Vector Operations,  Up: RTL
*************** File: gccint.info,  Node: Conversions,
*** 19485,19492 ****
  
  All conversions between machine modes must be represented by explicit
  conversion operations.  For example, an expression which is the sum of a
! byte and a full word cannot be written as '(plus:SI (reg:QI 34) (reg:SI
! 80))' because the 'plus' operation requires two operands of the same
  machine mode.  Therefore, the byte-sized operand is enclosed in a
  conversion operation, as in
  
--- 19490,19497 ----
  
  All conversions between machine modes must be represented by explicit
  conversion operations.  For example, an expression which is the sum of a
! byte and a full word cannot be written as â€˜(plus:SI (reg:QI 34) (reg:SI
! 80))â€™ because the â€˜plusâ€™ operation requires two operands of the same
  machine mode.  Therefore, the byte-sized operand is enclosed in a
  conversion operation, as in
  
*************** conversion operation, as in
*** 19496,19549 ****
  be more than one way of converting from a given starting mode to the
  desired final mode.  The conversion operation code says how to do it.
  
!  For all conversion operations, X must not be 'VOIDmode' because the
  mode in which to do the conversion would not be known.  The conversion
  must either be done at compile-time or X must be placed into a register.
  
! '(sign_extend:M X)'
       Represents the result of sign-extending the value X to machine mode
       M.  M must be a fixed-point mode and X a fixed-point value of a
       mode narrower than M.
  
! '(zero_extend:M X)'
       Represents the result of zero-extending the value X to machine mode
       M.  M must be a fixed-point mode and X a fixed-point value of a
       mode narrower than M.
  
! '(float_extend:M X)'
       Represents the result of extending the value X to machine mode M.
       M must be a floating point mode and X a floating point value of a
       mode narrower than M.
  
! '(truncate:M X)'
       Represents the result of truncating the value X to machine mode M.
       M must be a fixed-point mode and X a fixed-point value of a mode
       wider than M.
  
! '(ss_truncate:M X)'
       Represents the result of truncating the value X to machine mode M,
       using signed saturation in the case of overflow.  Both M and the
       mode of X must be fixed-point modes.
  
! '(us_truncate:M X)'
       Represents the result of truncating the value X to machine mode M,
       using unsigned saturation in the case of overflow.  Both M and the
       mode of X must be fixed-point modes.
  
! '(float_truncate:M X)'
       Represents the result of truncating the value X to machine mode M.
       M must be a floating point mode and X a floating point value of a
       mode wider than M.
  
! '(float:M X)'
       Represents the result of converting fixed point value X, regarded
       as signed, to floating point mode M.
  
! '(unsigned_float:M X)'
       Represents the result of converting fixed point value X, regarded
       as unsigned, to floating point mode M.
  
! '(fix:M X)'
       When M is a floating-point mode, represents the result of
       converting floating point value X (valid for mode M) to an integer,
       still represented in floating point mode M, by rounding towards
--- 19501,19554 ----
  be more than one way of converting from a given starting mode to the
  desired final mode.  The conversion operation code says how to do it.
  
!  For all conversion operations, X must not be â€˜VOIDmodeâ€™ because the
  mode in which to do the conversion would not be known.  The conversion
  must either be done at compile-time or X must be placed into a register.
  
! â€˜(sign_extend:M X)â€™
       Represents the result of sign-extending the value X to machine mode
       M.  M must be a fixed-point mode and X a fixed-point value of a
       mode narrower than M.
  
! â€˜(zero_extend:M X)â€™
       Represents the result of zero-extending the value X to machine mode
       M.  M must be a fixed-point mode and X a fixed-point value of a
       mode narrower than M.
  
! â€˜(float_extend:M X)â€™
       Represents the result of extending the value X to machine mode M.
       M must be a floating point mode and X a floating point value of a
       mode narrower than M.
  
! â€˜(truncate:M X)â€™
       Represents the result of truncating the value X to machine mode M.
       M must be a fixed-point mode and X a fixed-point value of a mode
       wider than M.
  
! â€˜(ss_truncate:M X)â€™
       Represents the result of truncating the value X to machine mode M,
       using signed saturation in the case of overflow.  Both M and the
       mode of X must be fixed-point modes.
  
! â€˜(us_truncate:M X)â€™
       Represents the result of truncating the value X to machine mode M,
       using unsigned saturation in the case of overflow.  Both M and the
       mode of X must be fixed-point modes.
  
! â€˜(float_truncate:M X)â€™
       Represents the result of truncating the value X to machine mode M.
       M must be a floating point mode and X a floating point value of a
       mode wider than M.
  
! â€˜(float:M X)â€™
       Represents the result of converting fixed point value X, regarded
       as signed, to floating point mode M.
  
! â€˜(unsigned_float:M X)â€™
       Represents the result of converting fixed point value X, regarded
       as unsigned, to floating point mode M.
  
! â€˜(fix:M X)â€™
       When M is a floating-point mode, represents the result of
       converting floating point value X (valid for mode M) to an integer,
       still represented in floating point mode M, by rounding towards
*************** must either be done at compile-time or X
*** 19554,19565 ****
       is done is not specified, so this operation may be used validly in
       compiling C code only for integer-valued operands.
  
! '(unsigned_fix:M X)'
       Represents the result of converting floating point value X to fixed
       point mode M, regarded as unsigned.  How rounding is done is not
       specified.
  
! '(fract_convert:M X)'
       Represents the result of converting fixed-point value X to
       fixed-point mode M, signed integer value X to fixed-point mode M,
       floating-point value X to fixed-point mode M, fixed-point value X
--- 19559,19570 ----
       is done is not specified, so this operation may be used validly in
       compiling C code only for integer-valued operands.
  
! â€˜(unsigned_fix:M X)â€™
       Represents the result of converting floating point value X to fixed
       point mode M, regarded as unsigned.  How rounding is done is not
       specified.
  
! â€˜(fract_convert:M X)â€™
       Represents the result of converting fixed-point value X to
       fixed-point mode M, signed integer value X to fixed-point mode M,
       floating-point value X to fixed-point mode M, fixed-point value X
*************** must either be done at compile-time or X
*** 19567,19586 ****
       floating-point mode M.  When overflows or underflows happen, the
       results are undefined.
  
! '(sat_fract:M X)'
       Represents the result of converting fixed-point value X to
       fixed-point mode M, signed integer value X to fixed-point mode M,
       or floating-point value X to fixed-point mode M.  When overflows or
       underflows happen, the results are saturated to the maximum or the
       minimum.
  
! '(unsigned_fract_convert:M X)'
       Represents the result of converting fixed-point value X to integer
       mode M regarded as unsigned, or unsigned integer value X to
       fixed-point mode M.  When overflows or underflows happen, the
       results are undefined.
  
! '(unsigned_sat_fract:M X)'
       Represents the result of converting unsigned integer value X to
       fixed-point mode M.  When overflows or underflows happen, the
       results are saturated to the maximum or the minimum.
--- 19572,19591 ----
       floating-point mode M.  When overflows or underflows happen, the
       results are undefined.
  
! â€˜(sat_fract:M X)â€™
       Represents the result of converting fixed-point value X to
       fixed-point mode M, signed integer value X to fixed-point mode M,
       or floating-point value X to fixed-point mode M.  When overflows or
       underflows happen, the results are saturated to the maximum or the
       minimum.
  
! â€˜(unsigned_fract_convert:M X)â€™
       Represents the result of converting fixed-point value X to integer
       mode M regarded as unsigned, or unsigned integer value X to
       fixed-point mode M.  When overflows or underflows happen, the
       results are undefined.
  
! â€˜(unsigned_sat_fract:M X)â€™
       Represents the result of converting unsigned integer value X to
       fixed-point mode M.  When overflows or underflows happen, the
       results are saturated to the maximum or the minimum.
*************** File: gccint.info,  Node: RTL Declaratio
*** 19594,19610 ****
  Declaration expression codes do not represent arithmetic operations but
  rather state assertions about their operands.
  
! '(strict_low_part (subreg:M (reg:N R) 0))'
       This expression code is used in only one context: as the
!      destination operand of a 'set' expression.  In addition, the
!      operand of this expression must be a non-paradoxical 'subreg'
       expression.
  
!      The presence of 'strict_low_part' says that the part of the
       register which is meaningful in mode N, but is not part of mode M,
       is not to be altered.  Normally, an assignment to such a subreg is
       allowed to have undefined effects on the rest of the register when
!      M is smaller than 'REGMODE_NATURAL_SIZE (N)'.
  
  
  File: gccint.info,  Node: Side Effects,  Next: Incdec,  Prev: RTL Declarations,  Up: RTL
--- 19599,19615 ----
  Declaration expression codes do not represent arithmetic operations but
  rather state assertions about their operands.
  
! â€˜(strict_low_part (subreg:M (reg:N R) 0))â€™
       This expression code is used in only one context: as the
!      destination operand of a â€˜setâ€™ expression.  In addition, the
!      operand of this expression must be a non-paradoxical â€˜subregâ€™
       expression.
  
!      The presence of â€˜strict_low_partâ€™ says that the part of the
       register which is meaningful in mode N, but is not part of mode M,
       is not to be altered.  Normally, an assignment to such a subreg is
       allowed to have undefined effects on the rest of the register when
!      M is smaller than â€˜REGMODE_NATURAL_SIZE (N)â€™.
  
  
  File: gccint.info,  Node: Side Effects,  Next: Incdec,  Prev: RTL Declarations,  Up: RTL
*************** codes are used to represent side effects
*** 19621,19714 ****
  the codes described above, which represent values, appear only as the
  operands of these.
  
! '(set LVAL X)'
       Represents the action of storing the value of X into the place
       represented by LVAL.  LVAL must be an expression representing a
!      place that can be stored in: 'reg' (or 'subreg', 'strict_low_part'
!      or 'zero_extract'), 'mem', 'pc', or 'parallel'.
  
!      If LVAL is a 'reg', 'subreg' or 'mem', it has a machine mode; then
       X must be valid for that mode.
  
!      If LVAL is a 'reg' whose machine mode is less than the full width
       of the register, then it means that the part of the register
       specified by the machine mode is given the specified value and the
       rest of the register receives an undefined value.  Likewise, if
!      LVAL is a 'subreg' whose machine mode is narrower than the mode of
       the register, the rest of the register can be changed in an
       undefined way.
  
!      If LVAL is a 'strict_low_part' of a subreg, then the part of the
!      register specified by the machine mode of the 'subreg' is given the
       value X and the rest of the register is not changed.
  
!      If LVAL is a 'zero_extract', then the referenced part of the
       bit-field (a memory or register reference) specified by the
!      'zero_extract' is given the value X and the rest of the bit-field
!      is not changed.  Note that 'sign_extract' cannot appear in LVAL.
  
!      If LVAL is a 'parallel', it is used to represent the case of a
       function returning a structure in multiple registers.  Each element
!      of the 'parallel' is an 'expr_list' whose first operand is a 'reg'
!      and whose second operand is a 'const_int' representing the offset
       (in bytes) into the structure at which the data in that register
       corresponds.  The first element may be null to indicate that the
       structure is also passed partly in memory.
  
!      If LVAL is '(pc)', we have a jump instruction, and the
!      possibilities for X are very limited.  It may be a 'label_ref'
!      expression (unconditional jump).  It may be an 'if_then_else'
       (conditional jump), in which case either the second or the third
!      operand must be '(pc)' (for the case which does not jump) and the
!      other of the two must be a 'label_ref' (for the case which does
!      jump).  X may also be a 'mem' or '(plus:SI (pc) Y)', where Y may be
!      a 'reg' or a 'mem'; these unusual patterns are used to represent
       jumps through branch tables.
  
!      If LVAL is not '(pc)', the mode of LVAL must not be 'VOIDmode' and
       the mode of X must be valid for the mode of LVAL.
  
!      LVAL is customarily accessed with the 'SET_DEST' macro and X with
!      the 'SET_SRC' macro.
  
! '(return)'
       As the sole expression in a pattern, represents a return from the
       current function, on machines where this can be done with one
       instruction, such as VAXen.  On machines where a multi-instruction
       "epilogue" must be executed in order to return from the function,
       returning is done by jumping to a label which precedes the
!      epilogue, and the 'return' expression code is never used.
  
!      Inside an 'if_then_else' expression, represents the value to be
!      placed in 'pc' to return to the caller.
  
!      Note that an insn pattern of '(return)' is logically equivalent to
!      '(set (pc) (return))', but the latter form is never used.
  
! '(simple_return)'
!      Like '(return)', but truly represents only a function return, while
!      '(return)' may represent an insn that also performs other functions
!      of the function epilogue.  Like '(return)', this may also occur in
       conditional jumps.
  
! '(call FUNCTION NARGS)'
!      Represents a function call.  FUNCTION is a 'mem' expression whose
       address is the address of the function to be called.  NARGS is an
       expression which can be used for two purposes: on some machines it
       represents the number of bytes of stack argument; on others, it
       represents the number of argument registers.
  
       Each machine has a standard machine mode which FUNCTION must have.
!      The machine description defines macro 'FUNCTION_MODE' to expand
       into the requisite mode name.  The purpose of this mode is to
       specify what kind of addressing is allowed, on machines where the
       allowed kinds of addressing depend on the machine mode being
       addressed.
  
! '(clobber X)'
       Represents the storing or possible storing of an unpredictable,
!      undescribed value into X, which must be a 'reg', 'scratch',
!      'parallel' or 'mem' expression.
  
       One place this is used is in string instructions that store
       standard values into particular hard registers.  It may not be
--- 19626,19719 ----
  the codes described above, which represent values, appear only as the
  operands of these.
  
! â€˜(set LVAL X)â€™
       Represents the action of storing the value of X into the place
       represented by LVAL.  LVAL must be an expression representing a
!      place that can be stored in: â€˜regâ€™ (or â€˜subregâ€™, â€˜strict_low_partâ€™
!      or â€˜zero_extractâ€™), â€˜memâ€™, â€˜pcâ€™, or â€˜parallelâ€™.
  
!      If LVAL is a â€˜regâ€™, â€˜subregâ€™ or â€˜memâ€™, it has a machine mode; then
       X must be valid for that mode.
  
!      If LVAL is a â€˜regâ€™ whose machine mode is less than the full width
       of the register, then it means that the part of the register
       specified by the machine mode is given the specified value and the
       rest of the register receives an undefined value.  Likewise, if
!      LVAL is a â€˜subregâ€™ whose machine mode is narrower than the mode of
       the register, the rest of the register can be changed in an
       undefined way.
  
!      If LVAL is a â€˜strict_low_partâ€™ of a subreg, then the part of the
!      register specified by the machine mode of the â€˜subregâ€™ is given the
       value X and the rest of the register is not changed.
  
!      If LVAL is a â€˜zero_extractâ€™, then the referenced part of the
       bit-field (a memory or register reference) specified by the
!      â€˜zero_extractâ€™ is given the value X and the rest of the bit-field
!      is not changed.  Note that â€˜sign_extractâ€™ cannot appear in LVAL.
  
!      If LVAL is a â€˜parallelâ€™, it is used to represent the case of a
       function returning a structure in multiple registers.  Each element
!      of the â€˜parallelâ€™ is an â€˜expr_listâ€™ whose first operand is a â€˜regâ€™
!      and whose second operand is a â€˜const_intâ€™ representing the offset
       (in bytes) into the structure at which the data in that register
       corresponds.  The first element may be null to indicate that the
       structure is also passed partly in memory.
  
!      If LVAL is â€˜(pc)â€™, we have a jump instruction, and the
!      possibilities for X are very limited.  It may be a â€˜label_refâ€™
!      expression (unconditional jump).  It may be an â€˜if_then_elseâ€™
       (conditional jump), in which case either the second or the third
!      operand must be â€˜(pc)â€™ (for the case which does not jump) and the
!      other of the two must be a â€˜label_refâ€™ (for the case which does
!      jump).  X may also be a â€˜memâ€™ or â€˜(plus:SI (pc) Y)â€™, where Y may be
!      a â€˜regâ€™ or a â€˜memâ€™; these unusual patterns are used to represent
       jumps through branch tables.
  
!      If LVAL is not â€˜(pc)â€™, the mode of LVAL must not be â€˜VOIDmodeâ€™ and
       the mode of X must be valid for the mode of LVAL.
  
!      LVAL is customarily accessed with the â€˜SET_DESTâ€™ macro and X with
!      the â€˜SET_SRCâ€™ macro.
  
! â€˜(return)â€™
       As the sole expression in a pattern, represents a return from the
       current function, on machines where this can be done with one
       instruction, such as VAXen.  On machines where a multi-instruction
       "epilogue" must be executed in order to return from the function,
       returning is done by jumping to a label which precedes the
!      epilogue, and the â€˜returnâ€™ expression code is never used.
  
!      Inside an â€˜if_then_elseâ€™ expression, represents the value to be
!      placed in â€˜pcâ€™ to return to the caller.
  
!      Note that an insn pattern of â€˜(return)â€™ is logically equivalent to
!      â€˜(set (pc) (return))â€™, but the latter form is never used.
  
! â€˜(simple_return)â€™
!      Like â€˜(return)â€™, but truly represents only a function return, while
!      â€˜(return)â€™ may represent an insn that also performs other functions
!      of the function epilogue.  Like â€˜(return)â€™, this may also occur in
       conditional jumps.
  
! â€˜(call FUNCTION NARGS)â€™
!      Represents a function call.  FUNCTION is a â€˜memâ€™ expression whose
       address is the address of the function to be called.  NARGS is an
       expression which can be used for two purposes: on some machines it
       represents the number of bytes of stack argument; on others, it
       represents the number of argument registers.
  
       Each machine has a standard machine mode which FUNCTION must have.
!      The machine description defines macro â€˜FUNCTION_MODEâ€™ to expand
       into the requisite mode name.  The purpose of this mode is to
       specify what kind of addressing is allowed, on machines where the
       allowed kinds of addressing depend on the machine mode being
       addressed.
  
! â€˜(clobber X)â€™
       Represents the storing or possible storing of an unpredictable,
!      undescribed value into X, which must be a â€˜regâ€™, â€˜scratchâ€™,
!      â€˜parallelâ€™ or â€˜memâ€™ expression.
  
       One place this is used is in string instructions that store
       standard values into particular hard registers.  It may not be
*************** operands of these.
*** 19717,19738 ****
       altered, lest it attempt to keep data in them across the string
       instruction.
  
!      If X is '(mem:BLK (const_int 0))' or '(mem:BLK (scratch))', it
       means that all memory locations must be presumed clobbered.  If X
!      is a 'parallel', it has the same meaning as a 'parallel' in a 'set'
       expression.
  
       Note that the machine description classifies certain hard registers
       as "call-clobbered".  All function call instructions are assumed by
       default to clobber these registers, so there is no need to use
!      'clobber' expressions to indicate this fact.  Also, each function
       call is assumed to have the potential to alter any memory location,
!      unless the function is declared 'const'.
  
!      If the last group of expressions in a 'parallel' are each a
!      'clobber' expression whose arguments are 'reg' or 'match_scratch'
       (*note RTL Template::) expressions, the combiner phase can add the
!      appropriate 'clobber' expressions to an insn it has constructed
       when doing so will cause a pattern to be matched.
  
       This feature can be used, for example, on a machine that whose
--- 19722,19743 ----
       altered, lest it attempt to keep data in them across the string
       instruction.
  
!      If X is â€˜(mem:BLK (const_int 0))â€™ or â€˜(mem:BLK (scratch))â€™, it
       means that all memory locations must be presumed clobbered.  If X
!      is a â€˜parallelâ€™, it has the same meaning as a â€˜parallelâ€™ in a â€˜setâ€™
       expression.
  
       Note that the machine description classifies certain hard registers
       as "call-clobbered".  All function call instructions are assumed by
       default to clobber these registers, so there is no need to use
!      â€˜clobberâ€™ expressions to indicate this fact.  Also, each function
       call is assumed to have the potential to alter any memory location,
!      unless the function is declared â€˜constâ€™.
  
!      If the last group of expressions in a â€˜parallelâ€™ are each a
!      â€˜clobberâ€™ expression whose arguments are â€˜regâ€™ or â€˜match_scratchâ€™
       (*note RTL Template::) expressions, the combiner phase can add the
!      appropriate â€˜clobberâ€™ expressions to an insn it has constructed
       when doing so will cause a pattern to be matched.
  
       This feature can be used, for example, on a machine that whose
*************** operands of these.
*** 19741,19781 ****
       register.  Similarly, a combined instruction might require a
       temporary register while the constituent instructions might not.
  
!      When a 'clobber' expression for a register appears inside a
!      'parallel' with other side effects, the register allocator
       guarantees that the register is unoccupied both before and after
       that insn if it is a hard register clobber.  For pseudo-register
       clobber, the register allocator and the reload pass do not assign
       the same hard register to the clobber and the input operands if
!      there is an insn alternative containing the '&' constraint (*note
       Modifiers::) for the clobber and the hard register is in register
       classes of the clobber in the alternative.  You can clobber either
!      a specific hard register, a pseudo register, or a 'scratch'
       expression; in the latter two cases, GCC will allocate a hard
       register that is available there for use as a temporary.
  
       For instructions that require a temporary register, you should use
!      'scratch' instead of a pseudo-register because this will allow the
!      combiner phase to add the 'clobber' when required.  You do this by
!      coding ('clobber' ('match_scratch' ...)).  If you do clobber a
       pseudo register, use one which appears nowhere else--generate a new
       one each time.  Otherwise, you may confuse CSE.
  
       There is one other known use for clobbering a pseudo register in a
!      'parallel': when one of the input operands of the insn is also
       clobbered by the insn.  In this case, using the same pseudo
       register in the clobber and elsewhere in the insn produces the
       expected results.
  
! '(use X)'
       Represents the use of the value of X.  It indicates that the value
       in X at this point in the program is needed, even though it may not
       be apparent why this is so.  Therefore, the compiler will not
       attempt to delete previous instructions whose only effect is to
!      store a value in X.  X must be a 'reg' expression.
  
!      In some situations, it may be tempting to add a 'use' of a register
!      in a 'parallel' to describe a situation where the value of a
       special register will modify the behavior of the instruction.  A
       hypothetical example might be a pattern for an addition that can
       either wrap around or use saturating addition depending on the
--- 19746,19786 ----
       register.  Similarly, a combined instruction might require a
       temporary register while the constituent instructions might not.
  
!      When a â€˜clobberâ€™ expression for a register appears inside a
!      â€˜parallelâ€™ with other side effects, the register allocator
       guarantees that the register is unoccupied both before and after
       that insn if it is a hard register clobber.  For pseudo-register
       clobber, the register allocator and the reload pass do not assign
       the same hard register to the clobber and the input operands if
!      there is an insn alternative containing the â€˜&â€™ constraint (*note
       Modifiers::) for the clobber and the hard register is in register
       classes of the clobber in the alternative.  You can clobber either
!      a specific hard register, a pseudo register, or a â€˜scratchâ€™
       expression; in the latter two cases, GCC will allocate a hard
       register that is available there for use as a temporary.
  
       For instructions that require a temporary register, you should use
!      â€˜scratchâ€™ instead of a pseudo-register because this will allow the
!      combiner phase to add the â€˜clobberâ€™ when required.  You do this by
!      coding (â€˜clobberâ€™ (â€˜match_scratchâ€™ ...)).  If you do clobber a
       pseudo register, use one which appears nowhere else--generate a new
       one each time.  Otherwise, you may confuse CSE.
  
       There is one other known use for clobbering a pseudo register in a
!      â€˜parallelâ€™: when one of the input operands of the insn is also
       clobbered by the insn.  In this case, using the same pseudo
       register in the clobber and elsewhere in the insn produces the
       expected results.
  
! â€˜(use X)â€™
       Represents the use of the value of X.  It indicates that the value
       in X at this point in the program is needed, even though it may not
       be apparent why this is so.  Therefore, the compiler will not
       attempt to delete previous instructions whose only effect is to
!      store a value in X.  X must be a â€˜regâ€™ expression.
  
!      In some situations, it may be tempting to add a â€˜useâ€™ of a register
!      in a â€˜parallelâ€™ to describe a situation where the value of a
       special register will modify the behavior of the instruction.  A
       hypothetical example might be a pattern for an addition that can
       either wrap around or use saturating addition depending on the
*************** operands of these.
*** 19785,19820 ****
                                                   (reg:SI 4)] 0))
                       (use (reg:SI 1))])
  
- 
       This will not work, several of the optimizers only look at
       expressions locally; it is very likely that if you have multiple
!      insns with identical inputs to the 'unspec', they will be optimized
       away even if register 1 changes in between.
  
!      This means that 'use' can _only_ be used to describe that the
!      register is live.  You should think twice before adding 'use'
!      statements, more often you will want to use 'unspec' instead.  The
!      'use' RTX is most commonly useful to describe that a fixed register
       is implicitly used in an insn.  It is also safe to use in patterns
       where the compiler knows for other reasons that the result of the
!      whole pattern is variable, such as 'cpymemM' or 'call' patterns.
  
!      During the reload phase, an insn that has a 'use' as pattern can
!      carry a reg_equal note.  These 'use' insns will be deleted before
       the reload phase exits.
  
       During the delayed branch scheduling phase, X may be an insn.  This
       indicates that X previously was located at this place in the code
       and its data dependencies need to be taken into account.  These
!      'use' insns will be deleted before the delayed branch scheduling
       phase exits.
  
! '(parallel [X0 X1 ...])'
       Represents several side effects performed in parallel.  The square
!      brackets stand for a vector; the operand of 'parallel' is a vector
       of expressions.  X0, X1 and so on are individual side effect
!      expressions--expressions of code 'set', 'call', 'return',
!      'simple_return', 'clobber' or 'use'.
  
       "In parallel" means that first all the values used in the
       individual side-effects are computed, and second all the actual
--- 19790,19824 ----
                                                   (reg:SI 4)] 0))
                       (use (reg:SI 1))])
  
       This will not work, several of the optimizers only look at
       expressions locally; it is very likely that if you have multiple
!      insns with identical inputs to the â€˜unspecâ€™, they will be optimized
       away even if register 1 changes in between.
  
!      This means that â€˜useâ€™ can _only_ be used to describe that the
!      register is live.  You should think twice before adding â€˜useâ€™
!      statements, more often you will want to use â€˜unspecâ€™ instead.  The
!      â€˜useâ€™ RTX is most commonly useful to describe that a fixed register
       is implicitly used in an insn.  It is also safe to use in patterns
       where the compiler knows for other reasons that the result of the
!      whole pattern is variable, such as â€˜cpymemMâ€™ or â€˜callâ€™ patterns.
  
!      During the reload phase, an insn that has a â€˜useâ€™ as pattern can
!      carry a reg_equal note.  These â€˜useâ€™ insns will be deleted before
       the reload phase exits.
  
       During the delayed branch scheduling phase, X may be an insn.  This
       indicates that X previously was located at this place in the code
       and its data dependencies need to be taken into account.  These
!      â€˜useâ€™ insns will be deleted before the delayed branch scheduling
       phase exits.
  
! â€˜(parallel [X0 X1 ...])â€™
       Represents several side effects performed in parallel.  The square
!      brackets stand for a vector; the operand of â€˜parallelâ€™ is a vector
       of expressions.  X0, X1 and so on are individual side effect
!      expressions--expressions of code â€˜setâ€™, â€˜callâ€™, â€˜returnâ€™,
!      â€˜simple_returnâ€™, â€˜clobberâ€™ or â€˜useâ€™.
  
       "In parallel" means that first all the values used in the
       individual side-effects are computed, and second all the actual
*************** operands of these.
*** 19825,19835 ****
  
       says unambiguously that the values of hard register 1 and the
       memory location addressed by it are interchanged.  In both places
!      where '(reg:SI 1)' appears as a memory address it refers to the
       value in register 1 _before_ the execution of the insn.
  
!      It follows that it is _incorrect_ to use 'parallel' and expect the
!      result of one 'set' to be available for the next one.  For example,
       people sometimes attempt to represent a jump-if-zero instruction
       this way:
  
--- 19829,19839 ----
  
       says unambiguously that the values of hard register 1 and the
       memory location addressed by it are interchanged.  In both places
!      where â€˜(reg:SI 1)â€™ appears as a memory address it refers to the
       value in register 1 _before_ the execution of the insn.
  
!      It follows that it is _incorrect_ to use â€˜parallelâ€™ and expect the
!      result of one â€˜setâ€™ to be available for the next one.  For example,
       people sometimes attempt to represent a jump-if-zero instruction
       this way:
  
*************** operands of these.
*** 19845,19919 ****
  
       Peephole optimization, which takes place together with final
       assembly code output, can produce insns whose patterns consist of a
!      'parallel' whose elements are the operands needed to output the
!      resulting assembler code--often 'reg', 'mem' or constant
       expressions.  This would not be well-formed RTL at any other stage
       in compilation, but it is OK then because no further optimization
       remains to be done.
  
! '(cond_exec [COND EXPR])'
       Represents a conditionally executed expression.  The EXPR is
       executed only if the COND is nonzero.  The COND expression must not
       have side-effects, but the EXPR may very well have side-effects.
  
! '(sequence [INSNS ...])'
!      Represents a sequence of insns.  If a 'sequence' appears in the
       chain of insns, then each of the INSNS that appears in the sequence
       must be suitable for appearing in the chain of insns, i.e. must
!      satisfy the 'INSN_P' predicate.
  
       After delay-slot scheduling is completed, an insn and all the insns
       that reside in its delay slots are grouped together into a
!      'sequence'.  The insn requiring the delay slot is the first insn in
       the vector; subsequent insns are to be placed in the delay slot.
  
!      'INSN_ANNULLED_BRANCH_P' is set on an insn in a delay slot to
       indicate that a branch insn should be used that will conditionally
       annul the effect of the insns in the delay slots.  In such a case,
!      'INSN_FROM_TARGET_P' indicates that the insn is from the target of
       the branch and should be executed only if the branch is taken;
       otherwise the insn should be executed only if the branch is not
       taken.  *Note Delay Slots::.
  
!      Some back ends also use 'sequence' objects for purposes other than
       delay-slot groups.  This is not supported in the common parts of
       the compiler, which treat such sequences as delay-slot groups.
  
       DWARF2 Call Frame Address (CFA) adjustments are sometimes also
!      expressed using 'sequence' objects as the value of a
!      'RTX_FRAME_RELATED_P' note.  This only happens if the CFA
       adjustments cannot be easily derived from the pattern of the
       instruction to which the note is attached.  In such cases, the
       value of the note is used instead of best-guesing the semantics of
       the instruction.  The back end can attach notes containing a
!      'sequence' of 'set' patterns that express the effect of the parent
       instruction.
  
   These expression codes appear in place of a side effect, as the body of
  an insn, though strictly speaking they do not always describe side
  effects as such:
  
! '(asm_input S)'
       Represents literal assembler code as described by the string S.
  
! '(unspec [OPERANDS ...] INDEX)'
! '(unspec_volatile [OPERANDS ...] INDEX)'
       Represents a machine-specific operation on OPERANDS.  INDEX selects
!      between multiple machine-specific operations.  'unspec_volatile' is
!      used for volatile operations and operations that may trap; 'unspec'
       is used for other operations.
  
!      These codes may appear inside a 'pattern' of an insn, inside a
!      'parallel', or inside an expression.
  
! '(addr_vec:M [LR0 LR1 ...])'
       Represents a table of jump addresses.  The vector elements LR0,
!      etc., are 'label_ref' expressions.  The mode M specifies how much
!      space is given to each address; normally M would be 'Pmode'.
  
! '(addr_diff_vec:M BASE [LR0 LR1 ...] MIN MAX FLAGS)'
       Represents a table of jump addresses expressed as offsets from
!      BASE.  The vector elements LR0, etc., are 'label_ref' expressions
       and so is BASE.  The mode M specifies how much space is given to
       each address-difference.  MIN and MAX are set up by branch
       shortening and hold a label with a minimum and a maximum address,
--- 19849,19923 ----
  
       Peephole optimization, which takes place together with final
       assembly code output, can produce insns whose patterns consist of a
!      â€˜parallelâ€™ whose elements are the operands needed to output the
!      resulting assembler code--often â€˜regâ€™, â€˜memâ€™ or constant
       expressions.  This would not be well-formed RTL at any other stage
       in compilation, but it is OK then because no further optimization
       remains to be done.
  
! â€˜(cond_exec [COND EXPR])â€™
       Represents a conditionally executed expression.  The EXPR is
       executed only if the COND is nonzero.  The COND expression must not
       have side-effects, but the EXPR may very well have side-effects.
  
! â€˜(sequence [INSNS ...])â€™
!      Represents a sequence of insns.  If a â€˜sequenceâ€™ appears in the
       chain of insns, then each of the INSNS that appears in the sequence
       must be suitable for appearing in the chain of insns, i.e. must
!      satisfy the â€˜INSN_Pâ€™ predicate.
  
       After delay-slot scheduling is completed, an insn and all the insns
       that reside in its delay slots are grouped together into a
!      â€˜sequenceâ€™.  The insn requiring the delay slot is the first insn in
       the vector; subsequent insns are to be placed in the delay slot.
  
!      â€˜INSN_ANNULLED_BRANCH_Pâ€™ is set on an insn in a delay slot to
       indicate that a branch insn should be used that will conditionally
       annul the effect of the insns in the delay slots.  In such a case,
!      â€˜INSN_FROM_TARGET_Pâ€™ indicates that the insn is from the target of
       the branch and should be executed only if the branch is taken;
       otherwise the insn should be executed only if the branch is not
       taken.  *Note Delay Slots::.
  
!      Some back ends also use â€˜sequenceâ€™ objects for purposes other than
       delay-slot groups.  This is not supported in the common parts of
       the compiler, which treat such sequences as delay-slot groups.
  
       DWARF2 Call Frame Address (CFA) adjustments are sometimes also
!      expressed using â€˜sequenceâ€™ objects as the value of a
!      â€˜RTX_FRAME_RELATED_Pâ€™ note.  This only happens if the CFA
       adjustments cannot be easily derived from the pattern of the
       instruction to which the note is attached.  In such cases, the
       value of the note is used instead of best-guesing the semantics of
       the instruction.  The back end can attach notes containing a
!      â€˜sequenceâ€™ of â€˜setâ€™ patterns that express the effect of the parent
       instruction.
  
   These expression codes appear in place of a side effect, as the body of
  an insn, though strictly speaking they do not always describe side
  effects as such:
  
! â€˜(asm_input S)â€™
       Represents literal assembler code as described by the string S.
  
! â€˜(unspec [OPERANDS ...] INDEX)â€™
! â€˜(unspec_volatile [OPERANDS ...] INDEX)â€™
       Represents a machine-specific operation on OPERANDS.  INDEX selects
!      between multiple machine-specific operations.  â€˜unspec_volatileâ€™ is
!      used for volatile operations and operations that may trap; â€˜unspecâ€™
       is used for other operations.
  
!      These codes may appear inside a â€˜patternâ€™ of an insn, inside a
!      â€˜parallelâ€™, or inside an expression.
  
! â€˜(addr_vec:M [LR0 LR1 ...])â€™
       Represents a table of jump addresses.  The vector elements LR0,
!      etc., are â€˜label_refâ€™ expressions.  The mode M specifies how much
!      space is given to each address; normally M would be â€˜Pmodeâ€™.
  
! â€˜(addr_diff_vec:M BASE [LR0 LR1 ...] MIN MAX FLAGS)â€™
       Represents a table of jump addresses expressed as offsets from
!      BASE.  The vector elements LR0, etc., are â€˜label_refâ€™ expressions
       and so is BASE.  The mode M specifies how much space is given to
       each address-difference.  MIN and MAX are set up by branch
       shortening and hold a label with a minimum and a maximum address,
*************** effects as such:
*** 19921,19927 ****
       and MAX to the containing insn and of MIN and MAX to BASE.  See
       rtl.def for details.
  
! '(prefetch:M ADDR RWS LOCALITY CACHE)'
       Represents prefetch of memory at address ADDR.  Operand RWS is 0 if
       the prefetch is for data to be read, 1 for being written; 2 if read
       shared; targets that do not support write or read shared prefetches
--- 19925,19931 ----
       and MAX to the containing insn and of MIN and MAX to BASE.  See
       rtl.def for details.
  
! â€˜(prefetch:M ADDR RWS LOCALITY CACHE)â€™
       Represents prefetch of memory at address ADDR.  Operand RWS is 0 if
       the prefetch is for data to be read, 1 for being written; 2 if read
       shared; targets that do not support write or read shared prefetches
*************** File: gccint.info,  Node: Incdec,  Next:
*** 19942,19951 ****
  
  Six special side-effect expression codes appear as memory addresses.
  
! '(pre_dec:M X)'
       Represents the side effect of decrementing X by a standard amount
       and represents also the value that X has after being decremented.
!      X must be a 'reg' or 'mem', but most machines allow only a 'reg'.
       M must be the machine mode for pointers on the machine in use.  The
       amount X is decremented by is the length in bytes of the machine
       mode of the containing memory reference of which this expression
--- 19946,19955 ----
  
  Six special side-effect expression codes appear as memory addresses.
  
! â€˜(pre_dec:M X)â€™
       Represents the side effect of decrementing X by a standard amount
       and represents also the value that X has after being decremented.
!      X must be a â€˜regâ€™ or â€˜memâ€™, but most machines allow only a â€˜regâ€™.
       M must be the machine mode for pointers on the machine in use.  The
       amount X is decremented by is the length in bytes of the machine
       mode of the containing memory reference of which this expression
*************** Six special side-effect expression codes
*** 19954,19981 ****
            (mem:DF (pre_dec:SI (reg:SI 39)))
  
       This says to decrement pseudo register 39 by the length of a
!      'DFmode' value and use the result to address a 'DFmode' value.
  
! '(pre_inc:M X)'
       Similar, but specifies incrementing X instead of decrementing it.
  
! '(post_dec:M X)'
!      Represents the same side effect as 'pre_dec' but a different value.
       The value represented here is the value X has before being
       decremented.
  
! '(post_inc:M X)'
       Similar, but specifies incrementing X instead of decrementing it.
  
! '(post_modify:M X Y)'
  
       Represents the side effect of setting X to Y and represents X
!      before X is modified.  X must be a 'reg' or 'mem', but most
!      machines allow only a 'reg'.  M must be the machine mode for
       pointers on the machine in use.
  
!      The expression Y must be one of three forms: '(plus:M X Z)',
!      '(minus:M X Z)', or '(plus:M X I)', where Z is an index register
       and I is a constant.
  
       Here is an example of its use:
--- 19958,19985 ----
            (mem:DF (pre_dec:SI (reg:SI 39)))
  
       This says to decrement pseudo register 39 by the length of a
!      â€˜DFmodeâ€™ value and use the result to address a â€˜DFmodeâ€™ value.
  
! â€˜(pre_inc:M X)â€™
       Similar, but specifies incrementing X instead of decrementing it.
  
! â€˜(post_dec:M X)â€™
!      Represents the same side effect as â€˜pre_decâ€™ but a different value.
       The value represented here is the value X has before being
       decremented.
  
! â€˜(post_inc:M X)â€™
       Similar, but specifies incrementing X instead of decrementing it.
  
! â€˜(post_modify:M X Y)â€™
  
       Represents the side effect of setting X to Y and represents X
!      before X is modified.  X must be a â€˜regâ€™ or â€˜memâ€™, but most
!      machines allow only a â€˜regâ€™.  M must be the machine mode for
       pointers on the machine in use.
  
!      The expression Y must be one of three forms: â€˜(plus:M X Z)â€™,
!      â€˜(minus:M X Z)â€™, or â€˜(plus:M X I)â€™, where Z is an index register
       and I is a constant.
  
       Here is an example of its use:
*************** Six special side-effect expression codes
*** 19986,19998 ****
       This says to modify pseudo register 42 by adding the contents of
       pseudo register 48 to it, after the use of what ever 42 points to.
  
! '(pre_modify:M X EXPR)'
       Similar except side effects happen before the use.
  
   These embedded side effect expressions must be used with care.
! Instruction patterns may not use them.  Until the 'flow' pass of the
  compiler, they may occur only to represent pushes onto the stack.  The
! 'flow' pass finds cases where registers are incremented or decremented
  in one instruction and used as an address shortly before or after; these
  cases are then transformed to use pre- or post-increment or -decrement.
  
--- 19990,20002 ----
       This says to modify pseudo register 42 by adding the contents of
       pseudo register 48 to it, after the use of what ever 42 points to.
  
! â€˜(pre_modify:M X EXPR)â€™
       Similar except side effects happen before the use.
  
   These embedded side effect expressions must be used with care.
! Instruction patterns may not use them.  Until the â€˜flowâ€™ pass of the
  compiler, they may occur only to represent pushes onto the stack.  The
! â€˜flowâ€™ pass finds cases where registers are incremented or decremented
  in one instruction and used as an address shortly before or after; these
  cases are then transformed to use pre- or post-increment or -decrement.
  
*************** insns behave differently on different ma
*** 20004,20011 ****
  as ambiguous and disallowed.
  
   An instruction that can be represented with an embedded side effect
! could also be represented using 'parallel' containing an additional
! 'set' to describe how the address register is altered.  This is not done
  because machines that allow these operations at all typically allow them
  wherever a memory address is called for.  Describing them as additional
  parallel stores would require doubling the number of entries in the
--- 20008,20015 ----
  as ambiguous and disallowed.
  
   An instruction that can be represented with an embedded side effect
! could also be represented using â€˜parallelâ€™ containing an additional
! â€˜setâ€™ to describe how the address register is altered.  This is not done
  because machines that allow these operations at all typically allow them
  wherever a memory address is called for.  Describing them as additional
  parallel stores would require doubling the number of entries in the
*************** File: gccint.info,  Node: Assembler,  Ne
*** 20017,20031 ****
  13.17 Assembler Instructions as Expressions
  ===========================================
  
! The RTX code 'asm_operands' represents a value produced by a
! user-specified assembler instruction.  It is used to represent an 'asm'
! statement with arguments.  An 'asm' statement with a single output
  operand, like this:
  
       asm ("foo %1,%2,%0" : "=a" (outputvar) : "g" (x + y), "di" (*z));
  
! is represented using a single 'asm_operands' RTX which represents the
! value that is stored in 'outputvar':
  
       (set RTX-FOR-OUTPUTVAR
            (asm_operands "foo %1,%2,%0" "a" 0
--- 20021,20035 ----
  13.17 Assembler Instructions as Expressions
  ===========================================
  
! The RTX code â€˜asm_operandsâ€™ represents a value produced by a
! user-specified assembler instruction.  It is used to represent an â€˜asmâ€™
! statement with arguments.  An â€˜asmâ€™ statement with a single output
  operand, like this:
  
       asm ("foo %1,%2,%0" : "=a" (outputvar) : "g" (x + y), "di" (*z));
  
! is represented using a single â€˜asm_operandsâ€™ RTX which represents the
! value that is stored in â€˜outputvarâ€™:
  
       (set RTX-FOR-OUTPUTVAR
            (asm_operands "foo %1,%2,%0" "a" 0
*************** value that is stored in 'outputvar':
*** 20033,20047 ****
                          [(asm_input:M1 "g")
                           (asm_input:M2 "di")]))
  
! Here the operands of the 'asm_operands' RTX are the assembler template
  string, the output-operand's constraint, the index-number of the output
  operand among the output operands specified, a vector of input operand
  RTX's, and a vector of input-operand modes and constraints.  The mode M1
! is the mode of the sum 'x+y'; M2 is that of '*z'.
  
!  When an 'asm' statement has multiple output values, its insn has
! several such 'set' RTX's inside of a 'parallel'.  Each 'set' contains an
! 'asm_operands'; all of these share the same assembler template and
  vectors, but each contains the constraint for the respective output
  operand.  They are also distinguished by the output-operand index
  number, which is 0, 1, ... for successive output operands.
--- 20037,20051 ----
                          [(asm_input:M1 "g")
                           (asm_input:M2 "di")]))
  
! Here the operands of the â€˜asm_operandsâ€™ RTX are the assembler template
  string, the output-operand's constraint, the index-number of the output
  operand among the output operands specified, a vector of input operand
  RTX's, and a vector of input-operand modes and constraints.  The mode M1
! is the mode of the sum â€˜x+yâ€™; M2 is that of â€˜*zâ€™.
  
!  When an â€˜asmâ€™ statement has multiple output values, its insn has
! several such â€˜setâ€™ RTX's inside of a â€˜parallelâ€™.  Each â€˜setâ€™ contains an
! â€˜asm_operandsâ€™; all of these share the same assembler template and
  vectors, but each contains the constraint for the respective output
  operand.  They are also distinguished by the output-operand index
  number, which is 0, 1, ... for successive output operands.
*************** File: gccint.info,  Node: Debug Informat
*** 20052,20058 ****
  13.18 Variable Location Debug Information in RTL
  ================================================
  
! Variable tracking relies on 'MEM_EXPR' and 'REG_EXPR' annotations to
  determine what user variables memory and register references refer to.
  
   Variable tracking at assignments uses these notes only when they refer
--- 20056,20062 ----
  13.18 Variable Location Debug Information in RTL
  ================================================
  
! Variable tracking relies on â€˜MEM_EXPRâ€™ and â€˜REG_EXPRâ€™ annotations to
  determine what user variables memory and register references refer to.
  
   Variable tracking at assignments uses these notes only when they refer
*************** to variables that live at fixed location
*** 20060,20094 ****
  global non-automatic variables).  For variables whose location may vary,
  it relies on the following types of notes.
  
! '(var_location:MODE VAR EXP STAT)'
!      Binds variable 'var', a tree, to value EXP, an RTL expression.  It
!      appears only in 'NOTE_INSN_VAR_LOCATION' and 'DEBUG_INSN's, with
       slightly different meanings.  MODE, if present, represents the mode
       of EXP, which is useful if it is a modeless expression.  STAT is
       only meaningful in notes, indicating whether the variable is known
       to be initialized or uninitialized.
  
! '(debug_expr:MODE DECL)'
!      Stands for the value bound to the 'DEBUG_EXPR_DECL' DECL, that
!      points back to it, within value expressions in 'VAR_LOCATION'
       nodes.
  
! '(debug_implicit_ptr:MODE DECL)'
       Stands for the location of a DECL that is no longer addressable.
  
! '(entry_value:MODE DECL)'
       Stands for the value a DECL had at the entry point of the
       containing function.
  
! '(debug_parameter_ref:MODE DECL)'
       Refers to a parameter that was completely optimized out.
  
! '(debug_marker:MODE)'
!      Marks a program location.  With 'VOIDmode', it stands for the
       beginning of a statement, a recommended inspection point logically
       after all prior side effects, and before any subsequent side
!      effects.  With 'BLKmode', it indicates an inline entry point: the
!      lexical block encoded in the 'INSN_LOCATION' is the enclosing block
       that encloses the inlined function.
  
  
--- 20064,20098 ----
  global non-automatic variables).  For variables whose location may vary,
  it relies on the following types of notes.
  
! â€˜(var_location:MODE VAR EXP STAT)â€™
!      Binds variable â€˜varâ€™, a tree, to value EXP, an RTL expression.  It
!      appears only in â€˜NOTE_INSN_VAR_LOCATIONâ€™ and â€˜DEBUG_INSNâ€™s, with
       slightly different meanings.  MODE, if present, represents the mode
       of EXP, which is useful if it is a modeless expression.  STAT is
       only meaningful in notes, indicating whether the variable is known
       to be initialized or uninitialized.
  
! â€˜(debug_expr:MODE DECL)â€™
!      Stands for the value bound to the â€˜DEBUG_EXPR_DECLâ€™ DECL, that
!      points back to it, within value expressions in â€˜VAR_LOCATIONâ€™
       nodes.
  
! â€˜(debug_implicit_ptr:MODE DECL)â€™
       Stands for the location of a DECL that is no longer addressable.
  
! â€˜(entry_value:MODE DECL)â€™
       Stands for the value a DECL had at the entry point of the
       containing function.
  
! â€˜(debug_parameter_ref:MODE DECL)â€™
       Refers to a parameter that was completely optimized out.
  
! â€˜(debug_marker:MODE)â€™
!      Marks a program location.  With â€˜VOIDmodeâ€™, it stands for the
       beginning of a statement, a recommended inspection point logically
       after all prior side effects, and before any subsequent side
!      effects.  With â€˜BLKmodeâ€™, it indicates an inline entry point: the
!      lexical block encoded in the â€˜INSN_LOCATIONâ€™ is the enclosing block
       that encloses the inlined function.
  
  
*************** File: gccint.info,  Node: Insns,  Next:
*** 20098,20106 ****
  ===========
  
  The RTL representation of the code for a function is a doubly-linked
! chain of objects called "insns".  Insns are expressions with special
  codes that are used for no other purpose.  Some insns are actual
! instructions; others represent dispatch tables for 'switch' statements;
  others represent labels to jump to or various sorts of declarative
  information.
  
--- 20102,20110 ----
  ===========
  
  The RTL representation of the code for a function is a doubly-linked
! chain of objects called â€œinsnsâ€�.  Insns are expressions with special
  codes that are used for no other purpose.  Some insns are actual
! instructions; others represent dispatch tables for â€˜switchâ€™ statements;
  others represent labels to jump to or various sorts of declarative
  information.
  
*************** id-number that distinguishes it from all
*** 20109,20133 ****
  function (after delayed branch scheduling, copies of an insn with the
  same id-number may be present in multiple places in a function, but
  these copies will always be identical and will only appear inside a
! 'sequence'), and chain pointers to the preceding and following insns.
  These three fields occupy the same position in every insn, independent
! of the expression code of the insn.  They could be accessed with 'XEXP'
! and 'XINT', but instead three special macros are always used:
  
! 'INSN_UID (I)'
       Accesses the unique id of insn I.
  
! 'PREV_INSN (I)'
       Accesses the chain pointer to the insn preceding I.  If I is the
       first insn, this is a null pointer.
  
! 'NEXT_INSN (I)'
       Accesses the chain pointer to the insn following I.  If I is the
       last insn, this is a null pointer.
  
!  The first insn in the chain is obtained by calling 'get_insns'; the
! last insn is the result of calling 'get_last_insn'.  Within the chain
! delimited by these insns, the 'NEXT_INSN' and 'PREV_INSN' pointers must
  always correspond: if INSN is not the first insn,
  
       NEXT_INSN (PREV_INSN (INSN)) == INSN
--- 20113,20137 ----
  function (after delayed branch scheduling, copies of an insn with the
  same id-number may be present in multiple places in a function, but
  these copies will always be identical and will only appear inside a
! â€˜sequenceâ€™), and chain pointers to the preceding and following insns.
  These three fields occupy the same position in every insn, independent
! of the expression code of the insn.  They could be accessed with â€˜XEXPâ€™
! and â€˜XINTâ€™, but instead three special macros are always used:
  
! â€˜INSN_UID (I)â€™
       Accesses the unique id of insn I.
  
! â€˜PREV_INSN (I)â€™
       Accesses the chain pointer to the insn preceding I.  If I is the
       first insn, this is a null pointer.
  
! â€˜NEXT_INSN (I)â€™
       Accesses the chain pointer to the insn following I.  If I is the
       last insn, this is a null pointer.
  
!  The first insn in the chain is obtained by calling â€˜get_insnsâ€™; the
! last insn is the result of calling â€˜get_last_insnâ€™.  Within the chain
! delimited by these insns, the â€˜NEXT_INSNâ€™ and â€˜PREV_INSNâ€™ pointers must
  always correspond: if INSN is not the first insn,
  
       NEXT_INSN (PREV_INSN (INSN)) == INSN
*************** is always true and if INSN is not the la
*** 20139,20246 ****
  is always true.
  
   After delay slot scheduling, some of the insns in the chain might be
! 'sequence' expressions, which contain a vector of insns.  The value of
! 'NEXT_INSN' in all but the last of these insns is the next insn in the
! vector; the value of 'NEXT_INSN' of the last insn in the vector is the
! same as the value of 'NEXT_INSN' for the 'sequence' in which it is
! contained.  Similar rules apply for 'PREV_INSN'.
  
   This means that the above invariants are not necessarily true for insns
! inside 'sequence' expressions.  Specifically, if INSN is the first insn
! in a 'sequence', 'NEXT_INSN (PREV_INSN (INSN))' is the insn containing
! the 'sequence' expression, as is the value of 'PREV_INSN (NEXT_INSN
! (INSN))' if INSN is the last insn in the 'sequence' expression.  You can
! use these expressions to find the containing 'sequence' expression.
  
   Every insn has one of the following expression codes:
  
! 'insn'
!      The expression code 'insn' is used for instructions that do not
!      jump and do not do function calls.  'sequence' expressions are
!      always contained in insns with code 'insn' even if one of those
       insns should jump or do function calls.
  
!      Insns with code 'insn' have four additional fields beyond the three
       mandatory ones listed above.  These four are described in a table
       below.
  
! 'jump_insn'
!      The expression code 'jump_insn' is used for instructions that may
!      jump (or, more generally, may contain 'label_ref' expressions to
!      which 'pc' can be set in that instruction).  If there is an
       instruction to return from the current function, it is recorded as
!      a 'jump_insn'.
  
!      'jump_insn' insns have the same extra fields as 'insn' insns,
       accessed in the same way and in addition contain a field
!      'JUMP_LABEL' which is defined once jump optimization has completed.
  
       For simple conditional and unconditional jumps, this field contains
!      the 'code_label' to which this insn will (possibly conditionally)
!      branch.  In a more complex jump, 'JUMP_LABEL' records one of the
       labels that the insn refers to; other jump target labels are
!      recorded as 'REG_LABEL_TARGET' notes.  The exception is 'addr_vec'
!      and 'addr_diff_vec', where 'JUMP_LABEL' is 'NULL_RTX' and the only
       way to find the labels is to scan the entire body of the insn.
  
!      Return insns count as jumps, but their 'JUMP_LABEL' is 'RETURN' or
!      'SIMPLE_RETURN'.
  
! 'call_insn'
!      The expression code 'call_insn' is used for instructions that may
       do function calls.  It is important to distinguish these
       instructions because they imply that certain registers and memory
       locations may be altered unpredictably.
  
!      'call_insn' insns have the same extra fields as 'insn' insns,
       accessed in the same way and in addition contain a field
!      'CALL_INSN_FUNCTION_USAGE', which contains a list (chain of
!      'expr_list' expressions) containing 'use', 'clobber' and sometimes
!      'set' expressions that denote hard registers and 'mem's used or
       clobbered by the called function.
  
!      A 'mem' generally points to a stack slot in which arguments passed
       to the libcall by reference (*note TARGET_PASS_BY_REFERENCE:
       Register Arguments.) are stored.  If the argument is caller-copied
       (*note TARGET_CALLEE_COPIES: Register Arguments.), the stack slot
!      will be mentioned in 'clobber' and 'use' entries; if it's
!      callee-copied, only a 'use' will appear, and the 'mem' may point to
       addresses that are not stack slots.
  
!      Registers occurring inside a 'clobber' in this list augment
!      registers specified in 'CALL_USED_REGISTERS' (*note Register
       Basics::).
  
!      If the list contains a 'set' involving two registers, it indicates
!      that the function returns one of its arguments.  Such a 'set' may
       look like a no-op if the same register holds the argument and the
       return value.
  
! 'code_label'
!      A 'code_label' insn represents a label that a jump insn can jump
       to.  It contains two special fields of data in addition to the
!      three standard ones.  'CODE_LABEL_NUMBER' is used to hold the
!      "label number", a number that identifies this label uniquely among
       all the labels in the compilation (not just in the current
       function).  Ultimately, the label is represented in the assembler
!      output as an assembler label, usually of the form 'LN' where N is
       the label number.
  
!      When a 'code_label' appears in an RTL expression, it normally
!      appears within a 'label_ref' which represents the address of the
       label, as a number.
  
!      Besides as a 'code_label', a label can also be represented as a
!      'note' of type 'NOTE_INSN_DELETED_LABEL'.
  
!      The field 'LABEL_NUSES' is only defined once the jump optimization
       phase is completed.  It contains the number of times this label is
       referenced in the current function.
  
!      The field 'LABEL_KIND' differentiates four different types of
!      labels: 'LABEL_NORMAL', 'LABEL_STATIC_ENTRY', 'LABEL_GLOBAL_ENTRY',
!      and 'LABEL_WEAK_ENTRY'.  The only labels that do not have type
!      'LABEL_NORMAL' are "alternate entry points" to the current
       function.  These may be static (visible only in the containing
       translation unit), global (exposed to all translation units), or
       weak (global, but can be overridden by another symbol with the same
--- 20143,20250 ----
  is always true.
  
   After delay slot scheduling, some of the insns in the chain might be
! â€˜sequenceâ€™ expressions, which contain a vector of insns.  The value of
! â€˜NEXT_INSNâ€™ in all but the last of these insns is the next insn in the
! vector; the value of â€˜NEXT_INSNâ€™ of the last insn in the vector is the
! same as the value of â€˜NEXT_INSNâ€™ for the â€˜sequenceâ€™ in which it is
! contained.  Similar rules apply for â€˜PREV_INSNâ€™.
  
   This means that the above invariants are not necessarily true for insns
! inside â€˜sequenceâ€™ expressions.  Specifically, if INSN is the first insn
! in a â€˜sequenceâ€™, â€˜NEXT_INSN (PREV_INSN (INSN))â€™ is the insn containing
! the â€˜sequenceâ€™ expression, as is the value of â€˜PREV_INSN (NEXT_INSN
! (INSN))â€™ if INSN is the last insn in the â€˜sequenceâ€™ expression.  You can
! use these expressions to find the containing â€˜sequenceâ€™ expression.
  
   Every insn has one of the following expression codes:
  
! â€˜insnâ€™
!      The expression code â€˜insnâ€™ is used for instructions that do not
!      jump and do not do function calls.  â€˜sequenceâ€™ expressions are
!      always contained in insns with code â€˜insnâ€™ even if one of those
       insns should jump or do function calls.
  
!      Insns with code â€˜insnâ€™ have four additional fields beyond the three
       mandatory ones listed above.  These four are described in a table
       below.
  
! â€˜jump_insnâ€™
!      The expression code â€˜jump_insnâ€™ is used for instructions that may
!      jump (or, more generally, may contain â€˜label_refâ€™ expressions to
!      which â€˜pcâ€™ can be set in that instruction).  If there is an
       instruction to return from the current function, it is recorded as
!      a â€˜jump_insnâ€™.
  
!      â€˜jump_insnâ€™ insns have the same extra fields as â€˜insnâ€™ insns,
       accessed in the same way and in addition contain a field
!      â€˜JUMP_LABELâ€™ which is defined once jump optimization has completed.
  
       For simple conditional and unconditional jumps, this field contains
!      the â€˜code_labelâ€™ to which this insn will (possibly conditionally)
!      branch.  In a more complex jump, â€˜JUMP_LABELâ€™ records one of the
       labels that the insn refers to; other jump target labels are
!      recorded as â€˜REG_LABEL_TARGETâ€™ notes.  The exception is â€˜addr_vecâ€™
!      and â€˜addr_diff_vecâ€™, where â€˜JUMP_LABELâ€™ is â€˜NULL_RTXâ€™ and the only
       way to find the labels is to scan the entire body of the insn.
  
!      Return insns count as jumps, but their â€˜JUMP_LABELâ€™ is â€˜RETURNâ€™ or
!      â€˜SIMPLE_RETURNâ€™.
  
! â€˜call_insnâ€™
!      The expression code â€˜call_insnâ€™ is used for instructions that may
       do function calls.  It is important to distinguish these
       instructions because they imply that certain registers and memory
       locations may be altered unpredictably.
  
!      â€˜call_insnâ€™ insns have the same extra fields as â€˜insnâ€™ insns,
       accessed in the same way and in addition contain a field
!      â€˜CALL_INSN_FUNCTION_USAGEâ€™, which contains a list (chain of
!      â€˜expr_listâ€™ expressions) containing â€˜useâ€™, â€˜clobberâ€™ and sometimes
!      â€˜setâ€™ expressions that denote hard registers and â€˜memâ€™s used or
       clobbered by the called function.
  
!      A â€˜memâ€™ generally points to a stack slot in which arguments passed
       to the libcall by reference (*note TARGET_PASS_BY_REFERENCE:
       Register Arguments.) are stored.  If the argument is caller-copied
       (*note TARGET_CALLEE_COPIES: Register Arguments.), the stack slot
!      will be mentioned in â€˜clobberâ€™ and â€˜useâ€™ entries; if it's
!      callee-copied, only a â€˜useâ€™ will appear, and the â€˜memâ€™ may point to
       addresses that are not stack slots.
  
!      Registers occurring inside a â€˜clobberâ€™ in this list augment
!      registers specified in â€˜CALL_USED_REGISTERSâ€™ (*note Register
       Basics::).
  
!      If the list contains a â€˜setâ€™ involving two registers, it indicates
!      that the function returns one of its arguments.  Such a â€˜setâ€™ may
       look like a no-op if the same register holds the argument and the
       return value.
  
! â€˜code_labelâ€™
!      A â€˜code_labelâ€™ insn represents a label that a jump insn can jump
       to.  It contains two special fields of data in addition to the
!      three standard ones.  â€˜CODE_LABEL_NUMBERâ€™ is used to hold the
!      â€œlabel numberâ€�, a number that identifies this label uniquely among
       all the labels in the compilation (not just in the current
       function).  Ultimately, the label is represented in the assembler
!      output as an assembler label, usually of the form â€˜LNâ€™ where N is
       the label number.
  
!      When a â€˜code_labelâ€™ appears in an RTL expression, it normally
!      appears within a â€˜label_refâ€™ which represents the address of the
       label, as a number.
  
!      Besides as a â€˜code_labelâ€™, a label can also be represented as a
!      â€˜noteâ€™ of type â€˜NOTE_INSN_DELETED_LABELâ€™.
  
!      The field â€˜LABEL_NUSESâ€™ is only defined once the jump optimization
       phase is completed.  It contains the number of times this label is
       referenced in the current function.
  
!      The field â€˜LABEL_KINDâ€™ differentiates four different types of
!      labels: â€˜LABEL_NORMALâ€™, â€˜LABEL_STATIC_ENTRYâ€™, â€˜LABEL_GLOBAL_ENTRYâ€™,
!      and â€˜LABEL_WEAK_ENTRYâ€™.  The only labels that do not have type
!      â€˜LABEL_NORMALâ€™ are â€œalternate entry pointsâ€� to the current
       function.  These may be static (visible only in the containing
       translation unit), global (exposed to all translation units), or
       weak (global, but can be overridden by another symbol with the same
*************** use these expressions to find the contai
*** 20248,20337 ****
  
       Much of the compiler treats all four kinds of label identically.
       Some of it needs to know whether or not a label is an alternate
!      entry point; for this purpose, the macro 'LABEL_ALT_ENTRY_P' is
!      provided.  It is equivalent to testing whether 'LABEL_KIND (label)
!      == LABEL_NORMAL'.  The only place that cares about the distinction
       between static, global, and weak alternate entry points, besides
       the front-end code that creates them, is the function
!      'output_alternate_entry_point', in 'final.cc'.
  
!      To set the kind of a label, use the 'SET_LABEL_KIND' macro.
  
! 'jump_table_data'
!      A 'jump_table_data' insn is a placeholder for the jump-table data
!      of a 'casesi' or 'tablejump' insn.  They are placed after a
!      'tablejump_p' insn.  A 'jump_table_data' insn is not part of a
       basic block but it is associated with the basic block that ends
!      with the 'tablejump_p' insn.  The 'PATTERN' of a 'jump_table_data'
!      is always either an 'addr_vec' or an 'addr_diff_vec', and a
!      'jump_table_data' insn is always preceded by a 'code_label'.  The
!      'tablejump_p' insn refers to that 'code_label' via its
!      'JUMP_LABEL'.
  
! 'barrier'
       Barriers are placed in the instruction stream when control cannot
       flow past them.  They are placed after unconditional jump
       instructions to indicate that the jumps are unconditional and after
!      calls to 'volatile' functions, which do not return (e.g., 'exit').
       They contain no information beyond the three standard fields.
  
! 'note'
!      'note' insns are used to represent additional debugging and
       declarative information.  They contain two nonstandard fields, an
!      integer which is accessed with the macro 'NOTE_LINE_NUMBER' and a
!      string accessed with 'NOTE_SOURCE_FILE'.
  
!      If 'NOTE_LINE_NUMBER' is positive, the note represents the position
!      of a source line and 'NOTE_SOURCE_FILE' is the source file name
       that the line came from.  These notes control generation of line
       number data in the assembler output.
  
!      Otherwise, 'NOTE_LINE_NUMBER' is not really a line number but a
!      code with one of the following values (and 'NOTE_SOURCE_FILE' must
       contain a null pointer):
  
!      'NOTE_INSN_DELETED'
            Such a note is completely ignorable.  Some passes of the
            compiler delete insns by altering them into notes of this
            kind.
  
!      'NOTE_INSN_DELETED_LABEL'
!           This marks what used to be a 'code_label', but was not used
            for other purposes than taking its address and was transformed
            to mark that no code jumps to it.
  
!      'NOTE_INSN_BLOCK_BEG'
!      'NOTE_INSN_BLOCK_END'
            These types of notes indicate the position of the beginning
            and end of a level of scoping of variable names.  They control
            the output of debugging information.
  
!      'NOTE_INSN_EH_REGION_BEG'
!      'NOTE_INSN_EH_REGION_END'
            These types of notes indicate the position of the beginning
            and end of a level of scoping for exception handling.
!           'NOTE_EH_HANDLER' identifies which region is associated with
            these notes.
  
!      'NOTE_INSN_FUNCTION_BEG'
            Appears at the start of the function body, after the function
            prologue.
  
!      'NOTE_INSN_VAR_LOCATION'
            This note is used to generate variable location debugging
            information.  It indicates that the user variable in its
!           'VAR_LOCATION' operand is at the location given in the RTL
            expression, or holds a value that can be computed by
            evaluating the RTL expression from that static point in the
            program up to the next such note for the same user variable.
  
!      'NOTE_INSN_BEGIN_STMT'
!           This note is used to generate 'is_stmt' markers in line number
            debugging information.  It indicates the beginning of a user
            statement.
  
!      'NOTE_INSN_INLINE_ENTRY'
!           This note is used to generate 'entry_pc' for inlined
            subroutines in debugging information.  It indicates an
            inspection point at which all arguments for the inlined
            function have been bound, and before its first statement.
--- 20252,20341 ----
  
       Much of the compiler treats all four kinds of label identically.
       Some of it needs to know whether or not a label is an alternate
!      entry point; for this purpose, the macro â€˜LABEL_ALT_ENTRY_Pâ€™ is
!      provided.  It is equivalent to testing whether â€˜LABEL_KIND (label)
!      == LABEL_NORMALâ€™.  The only place that cares about the distinction
       between static, global, and weak alternate entry points, besides
       the front-end code that creates them, is the function
!      â€˜output_alternate_entry_pointâ€™, in â€˜final.ccâ€™.
  
!      To set the kind of a label, use the â€˜SET_LABEL_KINDâ€™ macro.
  
! â€˜jump_table_dataâ€™
!      A â€˜jump_table_dataâ€™ insn is a placeholder for the jump-table data
!      of a â€˜casesiâ€™ or â€˜tablejumpâ€™ insn.  They are placed after a
!      â€˜tablejump_pâ€™ insn.  A â€˜jump_table_dataâ€™ insn is not part of a
       basic block but it is associated with the basic block that ends
!      with the â€˜tablejump_pâ€™ insn.  The â€˜PATTERNâ€™ of a â€˜jump_table_dataâ€™
!      is always either an â€˜addr_vecâ€™ or an â€˜addr_diff_vecâ€™, and a
!      â€˜jump_table_dataâ€™ insn is always preceded by a â€˜code_labelâ€™.  The
!      â€˜tablejump_pâ€™ insn refers to that â€˜code_labelâ€™ via its
!      â€˜JUMP_LABELâ€™.
  
! â€˜barrierâ€™
       Barriers are placed in the instruction stream when control cannot
       flow past them.  They are placed after unconditional jump
       instructions to indicate that the jumps are unconditional and after
!      calls to â€˜volatileâ€™ functions, which do not return (e.g., â€˜exitâ€™).
       They contain no information beyond the three standard fields.
  
! â€˜noteâ€™
!      â€˜noteâ€™ insns are used to represent additional debugging and
       declarative information.  They contain two nonstandard fields, an
!      integer which is accessed with the macro â€˜NOTE_LINE_NUMBERâ€™ and a
!      string accessed with â€˜NOTE_SOURCE_FILEâ€™.
  
!      If â€˜NOTE_LINE_NUMBERâ€™ is positive, the note represents the position
!      of a source line and â€˜NOTE_SOURCE_FILEâ€™ is the source file name
       that the line came from.  These notes control generation of line
       number data in the assembler output.
  
!      Otherwise, â€˜NOTE_LINE_NUMBERâ€™ is not really a line number but a
!      code with one of the following values (and â€˜NOTE_SOURCE_FILEâ€™ must
       contain a null pointer):
  
!      â€˜NOTE_INSN_DELETEDâ€™
            Such a note is completely ignorable.  Some passes of the
            compiler delete insns by altering them into notes of this
            kind.
  
!      â€˜NOTE_INSN_DELETED_LABELâ€™
!           This marks what used to be a â€˜code_labelâ€™, but was not used
            for other purposes than taking its address and was transformed
            to mark that no code jumps to it.
  
!      â€˜NOTE_INSN_BLOCK_BEGâ€™
!      â€˜NOTE_INSN_BLOCK_ENDâ€™
            These types of notes indicate the position of the beginning
            and end of a level of scoping of variable names.  They control
            the output of debugging information.
  
!      â€˜NOTE_INSN_EH_REGION_BEGâ€™
!      â€˜NOTE_INSN_EH_REGION_ENDâ€™
            These types of notes indicate the position of the beginning
            and end of a level of scoping for exception handling.
!           â€˜NOTE_EH_HANDLERâ€™ identifies which region is associated with
            these notes.
  
!      â€˜NOTE_INSN_FUNCTION_BEGâ€™
            Appears at the start of the function body, after the function
            prologue.
  
!      â€˜NOTE_INSN_VAR_LOCATIONâ€™
            This note is used to generate variable location debugging
            information.  It indicates that the user variable in its
!           â€˜VAR_LOCATIONâ€™ operand is at the location given in the RTL
            expression, or holds a value that can be computed by
            evaluating the RTL expression from that static point in the
            program up to the next such note for the same user variable.
  
!      â€˜NOTE_INSN_BEGIN_STMTâ€™
!           This note is used to generate â€˜is_stmtâ€™ markers in line number
            debugging information.  It indicates the beginning of a user
            statement.
  
!      â€˜NOTE_INSN_INLINE_ENTRYâ€™
!           This note is used to generate â€˜entry_pcâ€™ for inlined
            subroutines in debugging information.  It indicates an
            inspection point at which all arguments for the inlined
            function have been bound, and before its first statement.
*************** use these expressions to find the contai
*** 20339,20448 ****
       These codes are printed symbolically when they appear in debugging
       dumps.
  
! 'debug_insn'
!      The expression code 'debug_insn' is used for pseudo-instructions
       that hold debugging information for variable tracking at
!      assignments (see '-fvar-tracking-assignments' option).  They are
!      the RTL representation of 'GIMPLE_DEBUG' statements (*note
!      GIMPLE_DEBUG::), with a 'VAR_LOCATION' operand that binds a user
!      variable tree to an RTL representation of the 'value' in the
!      corresponding statement.  A 'DEBUG_EXPR' in it stands for the value
!      bound to the corresponding 'DEBUG_EXPR_DECL'.
  
!      'GIMPLE_DEBUG_BEGIN_STMT' and 'GIMPLE_DEBUG_INLINE_ENTRY' are
!      expanded to RTL as a 'DEBUG_INSN' with a 'DEBUG_MARKER' 'PATTERN';
!      the difference is the RTL mode: the former's 'DEBUG_MARKER' is
!      'VOIDmode', whereas the latter is 'BLKmode'; information about the
       inlined function can be taken from the lexical block encoded in the
!      'INSN_LOCATION'.  These 'DEBUG_INSN's, that do not carry
!      'VAR_LOCATION' information, just 'DEBUG_MARKER's, can be detected
!      by testing 'DEBUG_MARKER_INSN_P', whereas those that do can be
!      recognized as 'DEBUG_BIND_INSN_P'.
  
!      Throughout optimization passes, 'DEBUG_INSN's are not reordered
       with respect to each other, particularly during scheduling.
       Binding information is kept in pseudo-instruction form, so that,
       unlike notes, it gets the same treatment and adjustments that
       regular instructions would.  It is the variable tracking pass that
!      turns these pseudo-instructions into 'NOTE_INSN_VAR_LOCATION',
!      'NOTE_INSN_BEGIN_STMT' and 'NOTE_INSN_INLINE_ENTRY' notes,
       analyzing control flow, value equivalences and changes to registers
       and memory referenced in value expressions, propagating the values
       of debug temporaries and determining expressions that can be used
       to compute the value of each user variable at as many points
       (ranges, actually) in the program as possible.
  
!      Unlike 'NOTE_INSN_VAR_LOCATION', the value expression in an
!      'INSN_VAR_LOCATION' denotes a value at that specific point in the
       program, rather than an expression that can be evaluated at any
!      later point before an overriding 'VAR_LOCATION' is encountered.
!      E.g., if a user variable is bound to a 'REG' and then a subsequent
!      insn modifies the 'REG', the note location would keep mapping the
       user variable to the register across the insn, whereas the insn
       location would keep the variable bound to the value, so that the
       variable tracking pass would emit another location note for the
       variable at the point in which the register is modified.
  
!  The machine mode of an insn is normally 'VOIDmode', but some phases use
  the mode for various purposes.
  
   The common subexpression elimination pass sets the mode of an insn to
! 'QImode' when it is the first insn in a block that has already been
  processed.
  
   The second Haifa scheduling pass, for targets that can multiple issue,
! sets the mode of an insn to 'TImode' when it is believed that the
  instruction begins an issue group.  That is, when the instruction cannot
  issue simultaneously with the previous.  This may be relied on by later
  passes, in particular machine-dependent reorg.
  
!  Here is a table of the extra fields of 'insn', 'jump_insn' and
! 'call_insn' insns:
  
! 'PATTERN (I)'
       An expression for the side effect performed by this insn.  This
!      must be one of the following codes: 'set', 'call', 'use',
!      'clobber', 'return', 'simple_return', 'asm_input', 'asm_output',
!      'addr_vec', 'addr_diff_vec', 'trap_if', 'unspec',
!      'unspec_volatile', 'parallel', 'cond_exec', or 'sequence'.  If it
!      is a 'parallel', each element of the 'parallel' must be one these
!      codes, except that 'parallel' expressions cannot be nested and
!      'addr_vec' and 'addr_diff_vec' are not permitted inside a
!      'parallel' expression.
  
! 'INSN_CODE (I)'
       An integer that says which pattern in the machine description
!      matches this insn, or -1 if the matching has not yet been
       attempted.
  
!      Such matching is never attempted and this field remains -1 on an
!      insn whose pattern consists of a single 'use', 'clobber',
!      'asm_input', 'addr_vec' or 'addr_diff_vec' expression.
  
!      Matching is also never attempted on insns that result from an 'asm'
!      statement.  These contain at least one 'asm_operands' expression.
!      The function 'asm_noperands' returns a non-negative value for such
       insns.
  
       In the debugging output, this field is printed as a number followed
!      by a symbolic representation that locates the pattern in the 'md'
       file as some small positive or negative offset from a named
       pattern.
  
! 'REG_NOTES (I)'
!      A list (chain of 'expr_list', 'insn_list' and 'int_list'
       expressions) giving miscellaneous information about the insn.  It
       is often information pertaining to the registers used in this insn.
  
!  The 'REG_NOTES' field of an insn is a chain that includes 'expr_list'
! and 'int_list' expressions as well as 'insn_list' expressions.  There
  are several kinds of register notes, which are distinguished by the
  machine mode, which in a register note is really understood as being an
! 'enum reg_note'.  The first operand OP of the note is data whose meaning
  depends on the kind of note.
  
!  The macro 'REG_NOTE_KIND (X)' returns the kind of register note.  Its
! counterpart, the macro 'PUT_REG_NOTE_KIND (X, NEWKIND)' sets the
  register note type of X to be NEWKIND.
  
   Register notes are of three classes: They may say something about an
--- 20343,20452 ----
       These codes are printed symbolically when they appear in debugging
       dumps.
  
! â€˜debug_insnâ€™
!      The expression code â€˜debug_insnâ€™ is used for pseudo-instructions
       that hold debugging information for variable tracking at
!      assignments (see â€˜-fvar-tracking-assignmentsâ€™ option).  They are
!      the RTL representation of â€˜GIMPLE_DEBUGâ€™ statements (*note
!      GIMPLE_DEBUG::), with a â€˜VAR_LOCATIONâ€™ operand that binds a user
!      variable tree to an RTL representation of the â€˜valueâ€™ in the
!      corresponding statement.  A â€˜DEBUG_EXPRâ€™ in it stands for the value
!      bound to the corresponding â€˜DEBUG_EXPR_DECLâ€™.
  
!      â€˜GIMPLE_DEBUG_BEGIN_STMTâ€™ and â€˜GIMPLE_DEBUG_INLINE_ENTRYâ€™ are
!      expanded to RTL as a â€˜DEBUG_INSNâ€™ with a â€˜DEBUG_MARKERâ€™ â€˜PATTERNâ€™;
!      the difference is the RTL mode: the former's â€˜DEBUG_MARKERâ€™ is
!      â€˜VOIDmodeâ€™, whereas the latter is â€˜BLKmodeâ€™; information about the
       inlined function can be taken from the lexical block encoded in the
!      â€˜INSN_LOCATIONâ€™.  These â€˜DEBUG_INSNâ€™s, that do not carry
!      â€˜VAR_LOCATIONâ€™ information, just â€˜DEBUG_MARKERâ€™s, can be detected
!      by testing â€˜DEBUG_MARKER_INSN_Pâ€™, whereas those that do can be
!      recognized as â€˜DEBUG_BIND_INSN_Pâ€™.
  
!      Throughout optimization passes, â€˜DEBUG_INSNâ€™s are not reordered
       with respect to each other, particularly during scheduling.
       Binding information is kept in pseudo-instruction form, so that,
       unlike notes, it gets the same treatment and adjustments that
       regular instructions would.  It is the variable tracking pass that
!      turns these pseudo-instructions into â€˜NOTE_INSN_VAR_LOCATIONâ€™,
!      â€˜NOTE_INSN_BEGIN_STMTâ€™ and â€˜NOTE_INSN_INLINE_ENTRYâ€™ notes,
       analyzing control flow, value equivalences and changes to registers
       and memory referenced in value expressions, propagating the values
       of debug temporaries and determining expressions that can be used
       to compute the value of each user variable at as many points
       (ranges, actually) in the program as possible.
  
!      Unlike â€˜NOTE_INSN_VAR_LOCATIONâ€™, the value expression in an
!      â€˜INSN_VAR_LOCATIONâ€™ denotes a value at that specific point in the
       program, rather than an expression that can be evaluated at any
!      later point before an overriding â€˜VAR_LOCATIONâ€™ is encountered.
!      E.g., if a user variable is bound to a â€˜REGâ€™ and then a subsequent
!      insn modifies the â€˜REGâ€™, the note location would keep mapping the
       user variable to the register across the insn, whereas the insn
       location would keep the variable bound to the value, so that the
       variable tracking pass would emit another location note for the
       variable at the point in which the register is modified.
  
!  The machine mode of an insn is normally â€˜VOIDmodeâ€™, but some phases use
  the mode for various purposes.
  
   The common subexpression elimination pass sets the mode of an insn to
! â€˜QImodeâ€™ when it is the first insn in a block that has already been
  processed.
  
   The second Haifa scheduling pass, for targets that can multiple issue,
! sets the mode of an insn to â€˜TImodeâ€™ when it is believed that the
  instruction begins an issue group.  That is, when the instruction cannot
  issue simultaneously with the previous.  This may be relied on by later
  passes, in particular machine-dependent reorg.
  
!  Here is a table of the extra fields of â€˜insnâ€™, â€˜jump_insnâ€™ and
! â€˜call_insnâ€™ insns:
  
! â€˜PATTERN (I)â€™
       An expression for the side effect performed by this insn.  This
!      must be one of the following codes: â€˜setâ€™, â€˜callâ€™, â€˜useâ€™,
!      â€˜clobberâ€™, â€˜returnâ€™, â€˜simple_returnâ€™, â€˜asm_inputâ€™, â€˜asm_outputâ€™,
!      â€˜addr_vecâ€™, â€˜addr_diff_vecâ€™, â€˜trap_ifâ€™, â€˜unspecâ€™,
!      â€˜unspec_volatileâ€™, â€˜parallelâ€™, â€˜cond_execâ€™, or â€˜sequenceâ€™.  If it
!      is a â€˜parallelâ€™, each element of the â€˜parallelâ€™ must be one these
!      codes, except that â€˜parallelâ€™ expressions cannot be nested and
!      â€˜addr_vecâ€™ and â€˜addr_diff_vecâ€™ are not permitted inside a
!      â€˜parallelâ€™ expression.
  
! â€˜INSN_CODE (I)â€™
       An integer that says which pattern in the machine description
!      matches this insn, or âˆ’1 if the matching has not yet been
       attempted.
  
!      Such matching is never attempted and this field remains âˆ’1 on an
!      insn whose pattern consists of a single â€˜useâ€™, â€˜clobberâ€™,
!      â€˜asm_inputâ€™, â€˜addr_vecâ€™ or â€˜addr_diff_vecâ€™ expression.
  
!      Matching is also never attempted on insns that result from an â€˜asmâ€™
!      statement.  These contain at least one â€˜asm_operandsâ€™ expression.
!      The function â€˜asm_noperandsâ€™ returns a non-negative value for such
       insns.
  
       In the debugging output, this field is printed as a number followed
!      by a symbolic representation that locates the pattern in the â€˜mdâ€™
       file as some small positive or negative offset from a named
       pattern.
  
! â€˜REG_NOTES (I)â€™
!      A list (chain of â€˜expr_listâ€™, â€˜insn_listâ€™ and â€˜int_listâ€™
       expressions) giving miscellaneous information about the insn.  It
       is often information pertaining to the registers used in this insn.
  
!  The â€˜REG_NOTESâ€™ field of an insn is a chain that includes â€˜expr_listâ€™
! and â€˜int_listâ€™ expressions as well as â€˜insn_listâ€™ expressions.  There
  are several kinds of register notes, which are distinguished by the
  machine mode, which in a register note is really understood as being an
! â€˜enum reg_noteâ€™.  The first operand OP of the note is data whose meaning
  depends on the kind of note.
  
!  The macro â€˜REG_NOTE_KIND (X)â€™ returns the kind of register note.  Its
! counterpart, the macro â€˜PUT_REG_NOTE_KIND (X, NEWKIND)â€™ sets the
  register note type of X to be NEWKIND.
  
   Register notes are of three classes: They may say something about an
*************** they may create a linkage between two in
*** 20451,20457 ****
  
   These register notes annotate inputs to an insn:
  
! 'REG_DEAD'
       The value in OP dies in this insn; that is to say, altering the
       value immediately after this insn would not affect the future
       behavior of the program.
--- 20455,20461 ----
  
   These register notes annotate inputs to an insn:
  
! â€˜REG_DEADâ€™
       The value in OP dies in this insn; that is to say, altering the
       value immediately after this insn would not affect the future
       behavior of the program.
*************** they may create a linkage between two in
*** 20460,20522 ****
       this insn since OP is not necessarily modified by this insn.
       Rather, no subsequent instruction uses the contents of OP.
  
! 'REG_UNUSED'
       The register OP being set by this insn will not be used in a
!      subsequent insn.  This differs from a 'REG_DEAD' note, which
       indicates that the value in an input will not be used subsequently.
       These two notes are independent; both may be present for the same
       register.
  
! 'REG_INC'
       The register OP is incremented (or decremented; at this level there
       is no distinction) by an embedded side effect inside this insn.
!      This means it appears in a 'post_inc', 'pre_inc', 'post_dec' or
!      'pre_dec' expression.
  
! 'REG_NONNEG'
       The register OP is known to have a nonnegative value when this insn
       is reached.  This is used by special looping instructions that
       terminate when the register goes negative.
  
!      The 'REG_NONNEG' note is added only to 'doloop_end' insns, if its
!      pattern uses a 'ge' condition.
  
! 'REG_LABEL_OPERAND'
!      This insn uses OP, a 'code_label' or a 'note' of type
!      'NOTE_INSN_DELETED_LABEL', but is not a 'jump_insn', or it is a
!      'jump_insn' that refers to the operand as an ordinary operand.  The
       label may still eventually be a jump target, but if so in an
       indirect jump in a subsequent insn.  The presence of this note
       allows jump optimization to be aware that OP is, in fact, being
       used, and flow optimization to build an accurate flow graph.
  
! 'REG_LABEL_TARGET'
!      This insn is a 'jump_insn' but not an 'addr_vec' or
!      'addr_diff_vec'.  It uses OP, a 'code_label' as a direct or
       indirect jump target.  Its purpose is similar to that of
!      'REG_LABEL_OPERAND'.  This note is only present if the insn has
       multiple targets; the last label in the insn (in the highest
!      numbered insn-field) goes into the 'JUMP_LABEL' field and does not
!      have a 'REG_LABEL_TARGET' note.  *Note JUMP_LABEL: Insns.
  
! 'REG_SETJMP'
!      Appears attached to each 'CALL_INSN' to 'setjmp' or a related
       function.
  
   The following notes describe attributes of outputs of an insn:
  
! 'REG_EQUIV'
! 'REG_EQUAL'
       This note is only valid on an insn that sets only one register and
       indicates that that register will be equal to OP at run time; the
       scope of this equivalence differs between the two types of notes.
       The value which the insn explicitly copies into the register may
       look different from OP, but they will be equal at run time.  If the
!      output of the single 'set' is a 'strict_low_part' or 'zero_extract'
       expression, the note refers to the register that is contained in
       its first operand.
  
!      For 'REG_EQUIV', the register is equivalent to OP throughout the
       entire function, and could validly be replaced in all its
       occurrences by OP.  ("Validly" here refers to the data flow of the
       program; simple replacement may make some insns invalid.)  For
--- 20464,20526 ----
       this insn since OP is not necessarily modified by this insn.
       Rather, no subsequent instruction uses the contents of OP.
  
! â€˜REG_UNUSEDâ€™
       The register OP being set by this insn will not be used in a
!      subsequent insn.  This differs from a â€˜REG_DEADâ€™ note, which
       indicates that the value in an input will not be used subsequently.
       These two notes are independent; both may be present for the same
       register.
  
! â€˜REG_INCâ€™
       The register OP is incremented (or decremented; at this level there
       is no distinction) by an embedded side effect inside this insn.
!      This means it appears in a â€˜post_incâ€™, â€˜pre_incâ€™, â€˜post_decâ€™ or
!      â€˜pre_decâ€™ expression.
  
! â€˜REG_NONNEGâ€™
       The register OP is known to have a nonnegative value when this insn
       is reached.  This is used by special looping instructions that
       terminate when the register goes negative.
  
!      The â€˜REG_NONNEGâ€™ note is added only to â€˜doloop_endâ€™ insns, if its
!      pattern uses a â€˜geâ€™ condition.
  
! â€˜REG_LABEL_OPERANDâ€™
!      This insn uses OP, a â€˜code_labelâ€™ or a â€˜noteâ€™ of type
!      â€˜NOTE_INSN_DELETED_LABELâ€™, but is not a â€˜jump_insnâ€™, or it is a
!      â€˜jump_insnâ€™ that refers to the operand as an ordinary operand.  The
       label may still eventually be a jump target, but if so in an
       indirect jump in a subsequent insn.  The presence of this note
       allows jump optimization to be aware that OP is, in fact, being
       used, and flow optimization to build an accurate flow graph.
  
! â€˜REG_LABEL_TARGETâ€™
!      This insn is a â€˜jump_insnâ€™ but not an â€˜addr_vecâ€™ or
!      â€˜addr_diff_vecâ€™.  It uses OP, a â€˜code_labelâ€™ as a direct or
       indirect jump target.  Its purpose is similar to that of
!      â€˜REG_LABEL_OPERANDâ€™.  This note is only present if the insn has
       multiple targets; the last label in the insn (in the highest
!      numbered insn-field) goes into the â€˜JUMP_LABELâ€™ field and does not
!      have a â€˜REG_LABEL_TARGETâ€™ note.  *Note JUMP_LABEL: Insns.
  
! â€˜REG_SETJMPâ€™
!      Appears attached to each â€˜CALL_INSNâ€™ to â€˜setjmpâ€™ or a related
       function.
  
   The following notes describe attributes of outputs of an insn:
  
! â€˜REG_EQUIVâ€™
! â€˜REG_EQUALâ€™
       This note is only valid on an insn that sets only one register and
       indicates that that register will be equal to OP at run time; the
       scope of this equivalence differs between the two types of notes.
       The value which the insn explicitly copies into the register may
       look different from OP, but they will be equal at run time.  If the
!      output of the single â€˜setâ€™ is a â€˜strict_low_partâ€™ or â€˜zero_extractâ€™
       expression, the note refers to the register that is contained in
       its first operand.
  
!      For â€˜REG_EQUIVâ€™, the register is equivalent to OP throughout the
       entire function, and could validly be replaced in all its
       occurrences by OP.  ("Validly" here refers to the data flow of the
       program; simple replacement may make some insns invalid.)  For
*************** they may create a linkage between two in
*** 20530,20536 ****
       still valid to replace the register by the stack slot throughout
       the function.
  
!      A 'REG_EQUIV' note is also used on an instruction which copies a
       register parameter into a pseudo-register at entry to a function,
       if there is a stack slot where that parameter could be stored.
       Although other insns may set the pseudo-register, it is valid for
--- 20534,20540 ----
       still valid to replace the register by the stack slot throughout
       the function.
  
!      A â€˜REG_EQUIVâ€™ note is also used on an instruction which copies a
       register parameter into a pseudo-register at entry to a function,
       if there is a stack slot where that parameter could be stored.
       Although other insns may set the pseudo-register, it is valid for
*************** they may create a linkage between two in
*** 20539,20547 ****
       stack slot is properly initialized by making the replacement in the
       initial copy instruction as well.  This is used on machines for
       which the calling convention allocates stack space for register
!      parameters.  See 'REG_PARM_STACK_SPACE' in *note Stack Arguments::.
  
!      In the case of 'REG_EQUAL', the register that is set by this insn
       will be equal to OP at run time at the end of this insn but not
       necessarily elsewhere in the function.  In this case, OP is
       typically an arithmetic expression.  For example, when a sequence
--- 20543,20551 ----
       stack slot is properly initialized by making the replacement in the
       initial copy instruction as well.  This is used on machines for
       which the calling convention allocates stack space for register
!      parameters.  See â€˜REG_PARM_STACK_SPACEâ€™ in *note Stack Arguments::.
  
!      In the case of â€˜REG_EQUALâ€™, the register that is set by this insn
       will be equal to OP at run time at the end of this insn but not
       necessarily elsewhere in the function.  In this case, OP is
       typically an arithmetic expression.  For example, when a sequence
*************** they may create a linkage between two in
*** 20550,20633 ****
       or copies the final value.
  
       These two notes are used in different ways by the compiler passes.
!      'REG_EQUAL' is used by passes prior to register allocation (such as
       common subexpression elimination and loop optimization) to tell
!      them how to think of that value.  'REG_EQUIV' notes are used by
       register allocation to indicate that there is an available
!      substitute expression (either a constant or a 'mem' expression for
       the location of a parameter on the stack) that may be used in place
       of a register if insufficient registers are available.
  
       Except for stack homes for parameters, which are indicated by a
!      'REG_EQUIV' note and are not useful to the early optimization
       passes and pseudo registers that are equivalent to a memory
       location throughout their entire life, which is not detected until
       later in the compilation, all equivalences are initially indicated
!      by an attached 'REG_EQUAL' note.  In the early stages of register
!      allocation, a 'REG_EQUAL' note is changed into a 'REG_EQUIV' note
       if OP is a constant and the insn represents the only set of its
       destination register.
  
       Thus, compiler passes prior to register allocation need only check
!      for 'REG_EQUAL' notes and passes subsequent to register allocation
!      need only check for 'REG_EQUIV' notes.
  
   These notes describe linkages between insns.  They occur in pairs: one
  insn has one of a pair of notes that points to a second insn, which has
  the inverse note pointing back to the first insn.
  
! 'REG_DEP_TRUE'
       This indicates a true dependence (a read after write dependence).
  
! 'REG_DEP_OUTPUT'
       This indicates an output dependence (a write after write
       dependence).
  
! 'REG_DEP_ANTI'
       This indicates an anti dependence (a write after read dependence).
  
   These notes describe information gathered from gcov profile data.  They
! are stored in the 'REG_NOTES' field of an insn.
  
! 'REG_BR_PROB'
       This is used to specify the ratio of branches to non-branches of a
       branch insn according to the profile data.  The note is represented
!      as an 'int_list' expression whose integer value is an encoding of
!      'profile_probability' type.  'profile_probability' provide member
!      function 'from_reg_br_prob_note' and 'to_reg_br_prob_note' to
       extract and store the probability into the RTL encoding.
  
! 'REG_BR_PRED'
       These notes are found in JUMP insns after delayed branch scheduling
       has taken place.  They indicate both the direction and the
       likelihood of the JUMP.  The format is a bitmask of ATTR_FLAG_*
       values.
  
! 'REG_FRAME_RELATED_EXPR'
       This is used on an RTX_FRAME_RELATED_P insn wherein the attached
       expression is used in place of the actual insn pattern.  This is
       done in cases where the pattern is either complex or misleading.
  
!  The note 'REG_CALL_NOCF_CHECK' is used in conjunction with the
! '-fcf-protection=branch' option.  The note is set if a 'nocf_check'
  attribute is specified for a function type or a pointer to function
! type.  The note is stored in the 'REG_NOTES' field of an insn.
  
! 'REG_CALL_NOCF_CHECK'
!      Users have control through the 'nocf_check' attribute to identify
       which calls to a function should be skipped from control-flow
!      instrumentation when the option '-fcf-protection=branch' is
!      specified.  The compiler puts a 'REG_CALL_NOCF_CHECK' note on each
!      'CALL_INSN' instruction that has a function type marked with a
!      'nocf_check' attribute.
  
!  For convenience, the machine mode in an 'insn_list' or 'expr_list' is
  printed using these symbolic codes in debugging dumps.
  
!  The only difference between the expression codes 'insn_list' and
! 'expr_list' is that the first operand of an 'insn_list' is assumed to be
  an insn and is printed in debugging dumps as the insn's unique id; the
! first operand of an 'expr_list' is printed in the ordinary way as an
  expression.
  
  
--- 20554,20637 ----
       or copies the final value.
  
       These two notes are used in different ways by the compiler passes.
!      â€˜REG_EQUALâ€™ is used by passes prior to register allocation (such as
       common subexpression elimination and loop optimization) to tell
!      them how to think of that value.  â€˜REG_EQUIVâ€™ notes are used by
       register allocation to indicate that there is an available
!      substitute expression (either a constant or a â€˜memâ€™ expression for
       the location of a parameter on the stack) that may be used in place
       of a register if insufficient registers are available.
  
       Except for stack homes for parameters, which are indicated by a
!      â€˜REG_EQUIVâ€™ note and are not useful to the early optimization
       passes and pseudo registers that are equivalent to a memory
       location throughout their entire life, which is not detected until
       later in the compilation, all equivalences are initially indicated
!      by an attached â€˜REG_EQUALâ€™ note.  In the early stages of register
!      allocation, a â€˜REG_EQUALâ€™ note is changed into a â€˜REG_EQUIVâ€™ note
       if OP is a constant and the insn represents the only set of its
       destination register.
  
       Thus, compiler passes prior to register allocation need only check
!      for â€˜REG_EQUALâ€™ notes and passes subsequent to register allocation
!      need only check for â€˜REG_EQUIVâ€™ notes.
  
   These notes describe linkages between insns.  They occur in pairs: one
  insn has one of a pair of notes that points to a second insn, which has
  the inverse note pointing back to the first insn.
  
! â€˜REG_DEP_TRUEâ€™
       This indicates a true dependence (a read after write dependence).
  
! â€˜REG_DEP_OUTPUTâ€™
       This indicates an output dependence (a write after write
       dependence).
  
! â€˜REG_DEP_ANTIâ€™
       This indicates an anti dependence (a write after read dependence).
  
   These notes describe information gathered from gcov profile data.  They
! are stored in the â€˜REG_NOTESâ€™ field of an insn.
  
! â€˜REG_BR_PROBâ€™
       This is used to specify the ratio of branches to non-branches of a
       branch insn according to the profile data.  The note is represented
!      as an â€˜int_listâ€™ expression whose integer value is an encoding of
!      â€˜profile_probabilityâ€™ type.  â€˜profile_probabilityâ€™ provide member
!      function â€˜from_reg_br_prob_noteâ€™ and â€˜to_reg_br_prob_noteâ€™ to
       extract and store the probability into the RTL encoding.
  
! â€˜REG_BR_PREDâ€™
       These notes are found in JUMP insns after delayed branch scheduling
       has taken place.  They indicate both the direction and the
       likelihood of the JUMP.  The format is a bitmask of ATTR_FLAG_*
       values.
  
! â€˜REG_FRAME_RELATED_EXPRâ€™
       This is used on an RTX_FRAME_RELATED_P insn wherein the attached
       expression is used in place of the actual insn pattern.  This is
       done in cases where the pattern is either complex or misleading.
  
!  The note â€˜REG_CALL_NOCF_CHECKâ€™ is used in conjunction with the
! â€˜-fcf-protection=branchâ€™ option.  The note is set if a â€˜nocf_checkâ€™
  attribute is specified for a function type or a pointer to function
! type.  The note is stored in the â€˜REG_NOTESâ€™ field of an insn.
  
! â€˜REG_CALL_NOCF_CHECKâ€™
!      Users have control through the â€˜nocf_checkâ€™ attribute to identify
       which calls to a function should be skipped from control-flow
!      instrumentation when the option â€˜-fcf-protection=branchâ€™ is
!      specified.  The compiler puts a â€˜REG_CALL_NOCF_CHECKâ€™ note on each
!      â€˜CALL_INSNâ€™ instruction that has a function type marked with a
!      â€˜nocf_checkâ€™ attribute.
  
!  For convenience, the machine mode in an â€˜insn_listâ€™ or â€˜expr_listâ€™ is
  printed using these symbolic codes in debugging dumps.
  
!  The only difference between the expression codes â€˜insn_listâ€™ and
! â€˜expr_listâ€™ is that the first operand of an â€˜insn_listâ€™ is assumed to be
  an insn and is printed in debugging dumps as the insn's unique id; the
! first operand of an â€˜expr_listâ€™ is printed in the ordinary way as an
  expression.
  
  
*************** File: gccint.info,  Node: Calls,  Next:
*** 20636,20659 ****
  13.20 RTL Representation of Function-Call Insns
  ===============================================
  
! Insns that call subroutines have the RTL expression code 'call_insn'.
  These insns must satisfy special rules, and their bodies must use a
! special RTL expression code, 'call'.
  
!  A 'call' expression has two operands, as follows:
  
       (call (mem:FM ADDR) NBYTES)
  
  Here NBYTES is an operand that represents the number of bytes of
  argument data being passed to the subroutine, FM is a machine mode
! (which must equal as the definition of the 'FUNCTION_MODE' macro in the
  machine description) and ADDR represents the address of the subroutine.
  
!  For a subroutine that returns no value, the 'call' expression as shown
  above is the entire body of the insn, except that the insn might also
! contain 'use' or 'clobber' expressions.
  
!  For a subroutine that returns a value whose mode is not 'BLKmode', the
  value is returned in a hard register.  If this register's number is R,
  then the body of the call insn looks like this:
  
--- 20640,20663 ----
  13.20 RTL Representation of Function-Call Insns
  ===============================================
  
! Insns that call subroutines have the RTL expression code â€˜call_insnâ€™.
  These insns must satisfy special rules, and their bodies must use a
! special RTL expression code, â€˜callâ€™.
  
!  A â€˜callâ€™ expression has two operands, as follows:
  
       (call (mem:FM ADDR) NBYTES)
  
  Here NBYTES is an operand that represents the number of bytes of
  argument data being passed to the subroutine, FM is a machine mode
! (which must equal as the definition of the â€˜FUNCTION_MODEâ€™ macro in the
  machine description) and ADDR represents the address of the subroutine.
  
!  For a subroutine that returns no value, the â€˜callâ€™ expression as shown
  above is the entire body of the insn, except that the insn might also
! contain â€˜useâ€™ or â€˜clobberâ€™ expressions.
  
!  For a subroutine that returns a value whose mode is not â€˜BLKmodeâ€™, the
  value is returned in a hard register.  If this register's number is R,
  then the body of the call insn looks like this:
  
*************** then the body of the call insn looks lik
*** 20663,20692 ****
  This RTL expression makes it clear (to the optimizer passes) that the
  appropriate register receives a useful value in this insn.
  
!  When a subroutine returns a 'BLKmode' value, it is handled by passing
  to the subroutine the address of a place to store the value.  So the
  call insn itself does not "return" any value, and it has the same RTL
  form as a call that returns nothing.
  
   On some machines, the call instruction itself clobbers some register,
! for example to contain the return address.  'call_insn' insns on these
! machines should have a body which is a 'parallel' that contains both the
! 'call' expression and 'clobber' expressions that indicate which
  registers are destroyed.  Similarly, if the call instruction requires
  some register other than the stack pointer that is not explicitly
! mentioned in its RTL, a 'use' subexpression should mention that
  register.
  
   Functions that are called are assumed to modify all registers listed in
! the configuration macro 'CALL_USED_REGISTERS' (*note Register Basics::)
! and, with the exception of 'const' functions and library calls, to
  modify all of memory.
  
!  Insns containing just 'use' expressions directly precede the
! 'call_insn' insn to indicate which registers contain inputs to the
  function.  Similarly, if registers other than those in
! 'CALL_USED_REGISTERS' are clobbered by the called function, insns
! containing a single 'clobber' follow immediately after the call to
  indicate which registers.
  
  
--- 20667,20696 ----
  This RTL expression makes it clear (to the optimizer passes) that the
  appropriate register receives a useful value in this insn.
  
!  When a subroutine returns a â€˜BLKmodeâ€™ value, it is handled by passing
  to the subroutine the address of a place to store the value.  So the
  call insn itself does not "return" any value, and it has the same RTL
  form as a call that returns nothing.
  
   On some machines, the call instruction itself clobbers some register,
! for example to contain the return address.  â€˜call_insnâ€™ insns on these
! machines should have a body which is a â€˜parallelâ€™ that contains both the
! â€˜callâ€™ expression and â€˜clobberâ€™ expressions that indicate which
  registers are destroyed.  Similarly, if the call instruction requires
  some register other than the stack pointer that is not explicitly
! mentioned in its RTL, a â€˜useâ€™ subexpression should mention that
  register.
  
   Functions that are called are assumed to modify all registers listed in
! the configuration macro â€˜CALL_USED_REGISTERSâ€™ (*note Register Basics::)
! and, with the exception of â€˜constâ€™ functions and library calls, to
  modify all of memory.
  
!  Insns containing just â€˜useâ€™ expressions directly precede the
! â€˜call_insnâ€™ insn to indicate which registers contain inputs to the
  function.  Similarly, if registers other than those in
! â€˜CALL_USED_REGISTERSâ€™ are clobbered by the called function, insns
! containing a single â€˜clobberâ€™ follow immediately after the call to
  indicate which registers.
  
  
*************** is used.  One way of obtaining this info
*** 20703,20709 ****
  form, which provides a Static Single Assignment representation of the
  RTL instructions.
  
!  The RTL SSA code is located in the 'rtl-ssa' subdirectory of the GCC
  source tree.  This section only gives a brief overview of it; please see
  the comments in the source code for more details.
  
--- 20707,20713 ----
  form, which provides a Static Single Assignment representation of the
  RTL instructions.
  
!  The RTL SSA code is located in the â€˜rtl-ssaâ€™ subdirectory of the GCC
  source tree.  This section only gives a brief overview of it; please see
  the comments in the source code for more details.
  
*************** following:
*** 20738,20744 ****
       #include "df.h"
       #include "rtl-ssa.h"
  
!  All the RTL SSA code is contained in the 'rtl_ssa' namespace, so most
  passes will then want to do:
  
       using namespace rtl_ssa;
--- 20742,20748 ----
       #include "df.h"
       #include "rtl-ssa.h"
  
!  All the RTL SSA code is contained in the â€˜rtl_ssaâ€™ namespace, so most
  passes will then want to do:
  
       using namespace rtl_ssa;
*************** applies on top of the normal RTL instruc
*** 20751,20764 ****
  individual RTL passes and is not maintained across passes.
  
   However, in order to allow the RTL SSA information to be preserved
! across passes in future, 'crtl->ssa' points to the current function's
  SSA form (if any).  Passes that want to use the RTL SSA form should
  first do:
  
       crtl->ssa = new rtl_ssa::function_info (FN);
  
   where FN is the function that the pass is processing.  (Passes that are
! 'using namespace rtl_ssa' do not need the 'rtl_ssa::'.)
  
   Once the pass has finished with the SSA form, it should do the
  following:
--- 20755,20768 ----
  individual RTL passes and is not maintained across passes.
  
   However, in order to allow the RTL SSA information to be preserved
! across passes in future, â€˜crtl->ssaâ€™ points to the current function's
  SSA form (if any).  Passes that want to use the RTL SSA form should
  first do:
  
       crtl->ssa = new rtl_ssa::function_info (FN);
  
   where FN is the function that the pass is processing.  (Passes that are
! â€˜using namespace rtl_ssaâ€™ do not need the â€˜rtl_ssa::â€™.)
  
   Once the pass has finished with the SSA form, it should do the
  following:
*************** following:
*** 20770,20780 ****
       delete crtl->ssa;
       crtl->ssa = nullptr;
  
!  The 'free_dominance_info' call is necessary because dominance
  information is not currently maintained between RTL passes.  The next
  two lines commit any changes to the RTL instructions that were queued
  for later; see the comment above the declaration of
! 'perform_pending_updates' for details.  The final two lines discard the
  RTL SSA form and free the associated memory.
  
  
--- 20774,20784 ----
       delete crtl->ssa;
       crtl->ssa = nullptr;
  
!  The â€˜free_dominance_infoâ€™ call is necessary because dominance
  information is not currently maintained between RTL passes.  The next
  two lines commit any changes to the RTL instructions that were queued
  for later; see the comment above the declaration of
! â€˜perform_pending_updatesâ€™ for details.  The final two lines discard the
  RTL SSA form and free the associated memory.
  
  
*************** File: gccint.info,  Node: RTL SSA Instru
*** 20783,20789 ****
  13.21.2 RTL SSA Instructions
  ----------------------------
  
! RTL SSA instructions are represented by an 'rtl_ssa::insn_info'.  These
  instructions are chained together in a single list that follows a
  reverse postorder (RPO) traversal of the function.  This means that if
  any path through the function can execute an instruction I1 and then
--- 20787,20793 ----
  13.21.2 RTL SSA Instructions
  ----------------------------
  
! RTL SSA instructions are represented by an â€˜rtl_ssa::insn_infoâ€™.  These
  instructions are chained together in a single list that follows a
  reverse postorder (RPO) traversal of the function.  This means that if
  any path through the function can execute an instruction I1 and then
*************** the C++ comparison operators, such as:
*** 20796,20802 ****
  
       *INSN1 < *INSN2
  
!  Another way is to use the 'compare_with' function:
  
       INSN1->compare_with (INSN2)
  
--- 20800,20806 ----
  
       *INSN1 < *INSN2
  
!  Another way is to use the â€˜compare_withâ€™ function:
  
       INSN1->compare_with (INSN2)
  
*************** RPO, less than zero if INSN1 comes befor
*** 20805,20811 ****
  INSN1 and INSN2 are the same.  This order is maintained even if
  instructions are added to the function or moved around.
  
!  The main purpose of 'rtl_ssa::insn_info' is to hold SSA information
  about an instruction.  However, it also caches certain properties of the
  instruction, such as whether it is an inline assembly instruction,
  whether it has volatile accesses, and so on.
--- 20809,20815 ----
  INSN1 and INSN2 are the same.  This order is maintained even if
  instructions are added to the function or moved around.
  
!  The main purpose of â€˜rtl_ssa::insn_infoâ€™ is to hold SSA information
  about an instruction.  However, it also caches certain properties of the
  instruction, such as whether it is an inline assembly instruction,
  whether it has volatile accesses, and so on.
*************** File: gccint.info,  Node: RTL SSA Basic
*** 20822,20830 ****
  ----------------------------
  
  RTL SSA instructions (*note RTL SSA Instructions::) are organized into
! basic blocks, with each block being represented by an 'rtl_ssa:bb_info'.
! There is a one-to-one mapping between these 'rtl_ssa:bb_info' structures
! and the underlying CFG 'basic_block' structures (*note Basic Blocks::).
  
   If a CFG basic block BB contains an RTL instruction INSN, the RTL SSA
  represenation of BB also contains an RTL SSA representation of INSN(1).
--- 20826,20834 ----
  ----------------------------
  
  RTL SSA instructions (*note RTL SSA Instructions::) are organized into
! basic blocks, with each block being represented by an â€˜rtl_ssa:bb_infoâ€™.
! There is a one-to-one mapping between these â€˜rtl_ssa:bb_infoâ€™ structures
! and the underlying CFG â€˜basic_blockâ€™ structures (*note Basic Blocks::).
  
   If a CFG basic block BB contains an RTL instruction INSN, the RTL SSA
  represenation of BB also contains an RTL SSA representation of INSN(1).
*************** postorder.  This list includes the entry
*** 20845,20851 ****
  first) and the exit block (which always comes last).
  
   RTL SSA basic blocks are chained together into "extended basic blocks"
! (EBBs), represented by an 'rtl_ssa::ebb_info'.  Extended basic blocks
  contain one or more basic blocks.  They have the property that if a
  block BBY comes immediately after a block BBX in an EBB, then BBY can
  only be reached by BBX; in other words, BBX is the sole predecessor of
--- 20849,20855 ----
  first) and the exit block (which always comes last).
  
   RTL SSA basic blocks are chained together into "extended basic blocks"
! (EBBs), represented by an â€˜rtl_ssa::ebb_infoâ€™.  Extended basic blocks
  contain one or more basic blocks.  They have the property that if a
  block BBY comes immediately after a block BBX in an EBB, then BBY can
  only be reached by BBX; in other words, BBX is the sole predecessor of
*************** nodes because their live values can only
*** 20859,20881 ****
   The contents of a function are therefore represented using a four-level
  hierarchy:
  
!    * functions ('rtl_ssa::function_info'), which contain ...
  
!    * extended basic blocks ('rtl_ssa::ebb_info'), which contain ...
  
!    * basic blocks ('rtl_ssa::bb_info'), which contain ...
  
!    * instructions ('rtl_ssa::insn_info')
  
!  In dumps, a basic block is identified as 'bbN', where N is the index of
! the associated CFG 'basic_block' structure.  An EBB is in turn
  identified by the index of its first block.  For example, an EBB that
! contains 'bb10', 'bb5', 'bb6' and 'bb9' is identified as EBB10.
  
     ---------- Footnotes ----------
  
!    (1) Note that this excludes non-instruction things like 'note's and
! 'barrier's that also appear in the chain of RTL instructions.
  
  
  File: gccint.info,  Node: RTL SSA Resources,  Next: RTL SSA Accesses,  Prev: RTL SSA Basic Blocks,  Up: RTL SSA
--- 20863,20885 ----
   The contents of a function are therefore represented using a four-level
  hierarchy:
  
!    â€¢ functions (â€˜rtl_ssa::function_infoâ€™), which contain ...
  
!    â€¢ extended basic blocks (â€˜rtl_ssa::ebb_infoâ€™), which contain ...
  
!    â€¢ basic blocks (â€˜rtl_ssa::bb_infoâ€™), which contain ...
  
!    â€¢ instructions (â€˜rtl_ssa::insn_infoâ€™)
  
!  In dumps, a basic block is identified as â€˜bbNâ€™, where N is the index of
! the associated CFG â€˜basic_blockâ€™ structure.  An EBB is in turn
  identified by the index of its first block.  For example, an EBB that
! contains â€˜bb10â€™, â€˜bb5â€™, â€˜bb6â€™ and â€˜bb9â€™ is identified as EBB10.
  
     ---------- Footnotes ----------
  
!    (1) Note that this excludes non-instruction things like â€˜noteâ€™s and
! â€˜barrierâ€™s that also appear in the chain of RTL instructions.
  
  
  File: gccint.info,  Node: RTL SSA Resources,  Next: RTL SSA Accesses,  Prev: RTL SSA Basic Blocks,  Up: RTL SSA
*************** single unified resource, like it is in G
*** 20889,20902 ****
  
   Each resource has a unique identifier.  The unique identifier for a
  register is simply its register number.  The unique identifier for
! memory is a special register number called 'MEM_REGNO'.
  
   Since resource numbers so closely match register numbers, it is
  sometimes convenient to refer to them simply as register numbers, or
  "regnos" for short.  However, the RTL SSA form also provides an
! abstraction of resources in the form of 'rtl_ssa::resource_info'.  This
  is a lightweight class that records both the regno of a resource and the
! 'machine_mode' that the resource has (*note Machine Modes::).  It has
  functions for testing whether a resource is a register or memory.  In
  principle it could be extended to other kinds of resource in future.
  
--- 20893,20906 ----
  
   Each resource has a unique identifier.  The unique identifier for a
  register is simply its register number.  The unique identifier for
! memory is a special register number called â€˜MEM_REGNOâ€™.
  
   Since resource numbers so closely match register numbers, it is
  sometimes convenient to refer to them simply as register numbers, or
  "regnos" for short.  However, the RTL SSA form also provides an
! abstraction of resources in the form of â€˜rtl_ssa::resource_infoâ€™.  This
  is a lightweight class that records both the regno of a resource and the
! â€˜machine_modeâ€™ that the resource has (*note Machine Modes::).  It has
  functions for testing whether a resource is a register or memory.  In
  principle it could be extended to other kinds of resource in future.
  
*************** File: gccint.info,  Node: RTL SSA Access
*** 20907,20913 ****
  --------------------------------------------
  
  In the RTL SSA form, most reads or writes of a resource are represented
! as a 'rtl_ssa::access_info'(1).  These 'rtl_ssa::access_info's are
  organized into the following class hierarchy:
  
       rtl_ssa::access_info
--- 20911,20917 ----
  --------------------------------------------
  
  In the RTL SSA form, most reads or writes of a resource are represented
! as a â€˜rtl_ssa::access_infoâ€™(1).  These â€˜rtl_ssa::access_infoâ€™s are
  organized into the following class hierarchy:
  
       rtl_ssa::access_info
*************** organized into the following class hiera
*** 20922,20950 ****
                     |
                     +-- rtl_ssa::phi_info
  
!  A 'rtl_ssa::use_info' represents a read or use of a resource and a
! 'rtl_ssa::def_info' represents a write or definition of a resource.  As
  in the main RTL representation, there are two basic types of definition:
  clobbers and sets.  The difference is that a clobber leaves the register
  with an unspecified value that cannot be used or relied on by later
  instructions, while a set leaves the register with a known value that
  later instructions could use if they wanted to.  A
! 'rtl_ssa::clobber_info' represents a clobber and a 'rtl_ssa::set_info'
  represent a set.
  
!  Each 'rtl_ssa::use_info' records which single 'rtl_ssa::set_info'
  provides the value of the resource; this is null if the resource is
! completely undefined at the point of use.  Each 'rtl_ssa::set_info' in
! turn records all the 'rtl_ssa::use_info's that use its value.
  
   If a value of a resource can come from multiple sources, a
! 'rtl_ssa::phi_info' brings those multiple sources together into a single
  definition (*note RTL SSA Phi Nodes::).
  
     ---------- Footnotes ----------
  
     (1) The exceptions are call clobbers, which are generally represented
! separately.  See the comment above 'rtl_ssa::insn_info' for details.
  
  
  File: gccint.info,  Node: RTL SSA Phi Nodes,  Next: RTL SSA Access Lists,  Prev: RTL SSA Accesses,  Up: RTL SSA
--- 20926,20954 ----
                     |
                     +-- rtl_ssa::phi_info
  
!  A â€˜rtl_ssa::use_infoâ€™ represents a read or use of a resource and a
! â€˜rtl_ssa::def_infoâ€™ represents a write or definition of a resource.  As
  in the main RTL representation, there are two basic types of definition:
  clobbers and sets.  The difference is that a clobber leaves the register
  with an unspecified value that cannot be used or relied on by later
  instructions, while a set leaves the register with a known value that
  later instructions could use if they wanted to.  A
! â€˜rtl_ssa::clobber_infoâ€™ represents a clobber and a â€˜rtl_ssa::set_infoâ€™
  represent a set.
  
!  Each â€˜rtl_ssa::use_infoâ€™ records which single â€˜rtl_ssa::set_infoâ€™
  provides the value of the resource; this is null if the resource is
! completely undefined at the point of use.  Each â€˜rtl_ssa::set_infoâ€™ in
! turn records all the â€˜rtl_ssa::use_infoâ€™s that use its value.
  
   If a value of a resource can come from multiple sources, a
! â€˜rtl_ssa::phi_infoâ€™ brings those multiple sources together into a single
  definition (*note RTL SSA Phi Nodes::).
  
     ---------- Footnotes ----------
  
     (1) The exceptions are call clobbers, which are generally represented
! separately.  See the comment above â€˜rtl_ssa::insn_infoâ€™ for details.
  
  
  File: gccint.info,  Node: RTL SSA Phi Nodes,  Next: RTL SSA Access Lists,  Prev: RTL SSA Accesses,  Up: RTL SSA
*************** This is in contrast to a native SSA repr
*** 20993,21000 ****
  the phi inputs can be arbitrary expressions.  As a result, RTL SSA phi
  nodes never involve "hidden" moves: all moves are instead explicit.
  
!  Phi nodes are represented as a 'rtl_ssa::phi_node'.  Each input to a
! phi node is represented as an 'rtl_ssa::use_info'.
  
  
  File: gccint.info,  Node: RTL SSA Access Lists,  Next: Changing RTL Instructions,  Prev: RTL SSA Phi Nodes,  Up: RTL SSA
--- 20997,21004 ----
  the phi inputs can be arbitrary expressions.  As a result, RTL SSA phi
  nodes never involve "hidden" moves: all moves are instead explicit.
  
!  Phi nodes are represented as a â€˜rtl_ssa::phi_nodeâ€™.  Each input to a
! phi node is represented as an â€˜rtl_ssa::use_infoâ€™.
  
  
  File: gccint.info,  Node: RTL SSA Access Lists,  Next: Changing RTL Instructions,  Prev: RTL SSA Phi Nodes,  Up: RTL SSA
*************** File: gccint.info,  Node: RTL SSA Access
*** 21004,21015 ****
  
  All the definitions of a resource are chained together in reverse
  postorder.  In general, this list can contain an arbitrary mix of both
! sets ('rtl_ssa::set_info') and clobbers ('rtl_ssa::clobber_info').
  However, it is often useful to skip over all intervening clobbers of a
  resource in order to find the next set.  The list is constructed in such
  a way that this can be done in amortized constant time.
  
!  All uses ('rtl_ssa::use_info') of a given set are also chained together
  into a list.  This list of uses is divided into three parts:
  
    1. uses by "real" nondebug instructions (*note real RTL SSA insns::)
--- 21008,21019 ----
  
  All the definitions of a resource are chained together in reverse
  postorder.  In general, this list can contain an arbitrary mix of both
! sets (â€˜rtl_ssa::set_infoâ€™) and clobbers (â€˜rtl_ssa::clobber_infoâ€™).
  However, it is often useful to skip over all intervening clobbers of a
  resource in order to find the next set.  The list is constructed in such
  a way that this can be done in amortized constant time.
  
!  All uses (â€˜rtl_ssa::use_infoâ€™) of a given set are also chained together
  into a list.  This list of uses is divided into three parts:
  
    1. uses by "real" nondebug instructions (*note real RTL SSA insns::)
*************** third part has no particular order.
*** 21025,21060 ****
  reverse postorder than the next definition of the resource (if any).
  This means that the accesses follow a linear sequence of the form:
  
!    * first definition of resource R
  
!         * first use by a real nondebug instruction of the first
            definition of resource R
  
!         * ...
  
!         * last use by a real nondebug instruction of the first
            definition of resource R
  
!    * second definition of resource R
  
!         * first use by a real nondebug instruction of the second
            definition of resource R
  
!         * ...
  
!         * last use by a real nondebug instruction of the second
            definition of resource R
  
!    * ...
  
!    * last definition of resource R
  
!         * first use by a real nondebug instruction of the last
            definition of resource R
  
!         * ...
  
!         * last use by a real nondebug instruction of the last definition
            of resource R
  
   (Note that clobbers never have uses; only sets do.)
--- 21029,21064 ----
  reverse postorder than the next definition of the resource (if any).
  This means that the accesses follow a linear sequence of the form:
  
!    â€¢ first definition of resource R
  
!         â€¢ first use by a real nondebug instruction of the first
            definition of resource R
  
!         â€¢ ...
  
!         â€¢ last use by a real nondebug instruction of the first
            definition of resource R
  
!    â€¢ second definition of resource R
  
!         â€¢ first use by a real nondebug instruction of the second
            definition of resource R
  
!         â€¢ ...
  
!         â€¢ last use by a real nondebug instruction of the second
            definition of resource R
  
!    â€¢ ...
  
!    â€¢ last definition of resource R
  
!         â€¢ first use by a real nondebug instruction of the last
            definition of resource R
  
!         â€¢ ...
  
!         â€¢ last use by a real nondebug instruction of the last definition
            of resource R
  
   (Note that clobbers never have uses; only sets do.)
*************** following:
*** 21081,21096 ****
  
   The list of accesses would begin as follows:
  
!    * definition of R by A
  
!         * use of A's definition of R by B
  
!    * definition of R by C
  
   The next access to R is in D, but the value of R that D uses comes from
  A rather than C.
  
!  This is resolved by adding a phi node for 'ebb4'.  All inputs to this
  phi node have the same value, which in the example above is A's
  definition of R.  In other circumstances, it would not be necessary to
  create a phi node when all inputs are equal, so these phi nodes are
--- 21085,21100 ----
  
   The list of accesses would begin as follows:
  
!    â€¢ definition of R by A
  
!         â€¢ use of A's definition of R by B
  
!    â€¢ definition of R by C
  
   The next access to R is in D, but the value of R that D uses comes from
  A rather than C.
  
!  This is resolved by adding a phi node for â€˜ebb4â€™.  All inputs to this
  phi node have the same value, which in the example above is A's
  definition of R.  In other circumstances, it would not be necessary to
  create a phi node when all inputs are equal, so these phi nodes are
*************** referred to as "degenerate" phi nodes.
*** 21098,21120 ****
  
   The full list of accesses to R is therefore:
  
!    * definition of R by A
  
!         * use of A's definition of R by B
  
!    * definition of R by C
  
!    * definition of R by ebb4's phi instruction, with the input coming
       from A
  
!         * use of the ebb4's R phi definition of R by B
  
   Note that A's definition is also used by ebb4's phi node, but this use
  belongs to the third part of the use list described above and so does
  not form part of the linear sequence.
  
   It is possible to "look through" any degenerate phi to the ultimate
! definition using the function 'look_through_degenerate_phi'.  Note that
  the input to a degenerate phi is never itself provided by a degenerate
  phi.
  
--- 21102,21124 ----
  
   The full list of accesses to R is therefore:
  
!    â€¢ definition of R by A
  
!         â€¢ use of A's definition of R by B
  
!    â€¢ definition of R by C
  
!    â€¢ definition of R by ebb4's phi instruction, with the input coming
       from A
  
!         â€¢ use of the ebb4's R phi definition of R by B
  
   Note that A's definition is also used by ebb4's phi node, but this use
  belongs to the third part of the use list described above and so does
  not form part of the linear sequence.
  
   It is possible to "look through" any degenerate phi to the ultimate
! definition using the function â€˜look_through_degenerate_phiâ€™.  Note that
  the input to a degenerate phi is never itself provided by a degenerate
  phi.
  
*************** phi.
*** 21122,21132 ****
  guarantees that, for any given resource RES, one of the following is
  true:
  
!    * The resource has a single definition DEF, which is not a phi node.
       Excluding uses of undefined registers, all uses of RES by real
       nondebug instructions use the value provided by DEF.
  
!    * Excluding uses of undefined registers, all uses of RES use values
       provided by definitions that occur earlier in the same extended
       basic block.  These definitions might come from phi nodes or from
       real instructions.
--- 21126,21136 ----
  guarantees that, for any given resource RES, one of the following is
  true:
  
!    â€¢ The resource has a single definition DEF, which is not a phi node.
       Excluding uses of undefined registers, all uses of RES by real
       nondebug instructions use the value provided by DEF.
  
!    â€¢ Excluding uses of undefined registers, all uses of RES use values
       provided by definitions that occur earlier in the same extended
       basic block.  These definitions might come from phi nodes or from
       real instructions.
*************** following:
*** 21159,21196 ****
  
       auto attempt = crtl->ssa->new_change_attempt ();
  
!  Here, 'attempt' is an RAII object that should remain in scope for the
  entire change attempt.  It automatically frees temporary memory related
  to the changes when it goes out of scope.
  
!  Next, the pass should create an 'rtl_ssa::insn_change' object for the
  instruction that it wants to change.  This object specifies several
  things:
  
!    * what the instruction's new list of uses should be ('new_uses').  By
       default this is the same as the instruction's current list of uses.
  
!    * what the instruction's new list of definitions should be
!      ('new_defs').  By default this is the same as the instruction's
       current list of definitions.
  
!    * where the instruction should be located ('move_range').  This is a
       range of instructions after which the instruction could be placed,
!      represented as an 'rtl_ssa::insn_range'.  By default the
       instruction must remain at its current position.
  
   If a pass was attempting to change all these properties of an
! instruction 'insn', it might do something like this:
  
       rtl_ssa::insn_change change (insn);
       change.new_defs = ...;
       change.new_uses = ...;
       change.move_range = ...;
  
!  This 'rtl_ssa::insn_change' only describes something that the pass
  _might_ do; at this stage, nothing has actually changed.
  
!  As noted above, the default 'move_range' requires the instruction to
  remain where it is.  At the other extreme, it is possible to allow the
  instruction to move anywhere within its extended basic block, provided
  that all the new uses and definitions can be performed at the new
--- 21163,21200 ----
  
       auto attempt = crtl->ssa->new_change_attempt ();
  
!  Here, â€˜attemptâ€™ is an RAII object that should remain in scope for the
  entire change attempt.  It automatically frees temporary memory related
  to the changes when it goes out of scope.
  
!  Next, the pass should create an â€˜rtl_ssa::insn_changeâ€™ object for the
  instruction that it wants to change.  This object specifies several
  things:
  
!    â€¢ what the instruction's new list of uses should be (â€˜new_usesâ€™).  By
       default this is the same as the instruction's current list of uses.
  
!    â€¢ what the instruction's new list of definitions should be
!      (â€˜new_defsâ€™).  By default this is the same as the instruction's
       current list of definitions.
  
!    â€¢ where the instruction should be located (â€˜move_rangeâ€™).  This is a
       range of instructions after which the instruction could be placed,
!      represented as an â€˜rtl_ssa::insn_rangeâ€™.  By default the
       instruction must remain at its current position.
  
   If a pass was attempting to change all these properties of an
! instruction â€˜insnâ€™, it might do something like this:
  
       rtl_ssa::insn_change change (insn);
       change.new_defs = ...;
       change.new_uses = ...;
       change.move_range = ...;
  
!  This â€˜rtl_ssa::insn_changeâ€™ only describes something that the pass
  _might_ do; at this stage, nothing has actually changed.
  
!  As noted above, the default â€˜move_rangeâ€™ requires the instruction to
  remain where it is.  At the other extreme, it is possible to allow the
  instruction to move anywhere within its extended basic block, provided
  that all the new uses and definitions can be performed at the new
*************** consistent with the new uses and definit
*** 21204,21224 ****
       if (!rtl_ssa::restrict_movement (change))
         return false;
  
!  This function tries to limit 'move_range' to a range of instructions at
! which 'new_uses' and 'new_defs' can be correctly performed.  It returns
  true on success or false if no suitable location exists.
  
   The pass should also tentatively change the pattern of the instruction
  to whatever form the pass wants the instruction to have.  This should
! use the facilities provided by 'recog.cc'.  For example:
  
       rtl_insn *rtl = insn->rtl ();
       insn_change_watermark watermark;
       validate_change (rtl, &PATTERN (rtl), new_pat, 1);
  
!  will tentatively replace 'insn''s pattern with 'new_pat'.
  
!  These changes and the construction of the 'rtl_ssa::insn_change' can
  happen in either order or be interleaved.
  
   After the tentative changes to the instruction are complete, the pass
--- 21208,21228 ----
       if (!rtl_ssa::restrict_movement (change))
         return false;
  
!  This function tries to limit â€˜move_rangeâ€™ to a range of instructions at
! which â€˜new_usesâ€™ and â€˜new_defsâ€™ can be correctly performed.  It returns
  true on success or false if no suitable location exists.
  
   The pass should also tentatively change the pattern of the instruction
  to whatever form the pass wants the instruction to have.  This should
! use the facilities provided by â€˜recog.ccâ€™.  For example:
  
       rtl_insn *rtl = insn->rtl ();
       insn_change_watermark watermark;
       validate_change (rtl, &PATTERN (rtl), new_pat, 1);
  
!  will tentatively replace â€˜insnâ€™'s pattern with â€˜new_patâ€™.
  
!  These changes and the construction of the â€˜rtl_ssa::insn_changeâ€™ can
  happen in either order or be interleaved.
  
   After the tentative changes to the instruction are complete, the pass
*************** satisfies the requirements of an inline
*** 21232,21249 ****
  it match.  It might also add new definitions or restrict the range of
  the move.  For example, if the new pattern did not match in its original
  form, but could be made to match by adding a clobber of the flags
! register, 'rtl_ssa::recog' will check whether the flags register is free
  at an appropriate point.  If so, it will add a clobber of the flags
! register to 'new_defs' and restrict 'move_range' to the locations at
  which the flags register can be safely clobbered.
  
   Even if the proposed new instruction is valid according to
! 'rtl_ssa::recog', the change might not be worthwhile.  For example, when
  optimizing for speed, the new instruction might turn out to be slower
  than the original one.  When optimizing for size, the new instruction
  might turn out to be bigger than the original one.
  
!  Passes should check for this case using 'change_is_worthwhile'.  For
  example:
  
       if (!rtl_ssa::change_is_worthwhile (change))
--- 21236,21253 ----
  it match.  It might also add new definitions or restrict the range of
  the move.  For example, if the new pattern did not match in its original
  form, but could be made to match by adding a clobber of the flags
! register, â€˜rtl_ssa::recogâ€™ will check whether the flags register is free
  at an appropriate point.  If so, it will add a clobber of the flags
! register to â€˜new_defsâ€™ and restrict â€˜move_rangeâ€™ to the locations at
  which the flags register can be safely clobbered.
  
   Even if the proposed new instruction is valid according to
! â€˜rtl_ssa::recogâ€™, the change might not be worthwhile.  For example, when
  optimizing for speed, the new instruction might turn out to be slower
  than the original one.  When optimizing for size, the new instruction
  might turn out to be bigger than the original one.
  
!  Passes should check for this case using â€˜change_is_worthwhileâ€™.  For
  example:
  
       if (!rtl_ssa::change_is_worthwhile (change))
*************** Instruction::).  The pass should again s
*** 21289,21300 ****
  
       auto attempt = crtl->ssa->new_change_attempt ();
  
!  and keep 'attempt' in scope for the duration of the change attempt.  It
! should then construct an 'rtl_ssa::insn_change' for each change that it
  wants to make.
  
   After this, it should combine the changes into a sequence of
! 'rtl_ssa::insn_change' pointers.  This sequence must be in reverse
  postorder; the instructions will remain strictly in the order that the
  sequence specifies.
  
--- 21293,21304 ----
  
       auto attempt = crtl->ssa->new_change_attempt ();
  
!  and keep â€˜attemptâ€™ in scope for the duration of the change attempt.  It
! should then construct an â€˜rtl_ssa::insn_changeâ€™ for each change that it
  wants to make.
  
   After this, it should combine the changes into a sequence of
! â€˜rtl_ssa::insn_changeâ€™ pointers.  This sequence must be in reverse
  postorder; the instructions will remain strictly in the order that the
  sequence specifies.
  
*************** do:
*** 21303,21314 ****
  
       rtl_ssa::insn_change *changes[] = { &change1, &change2 };
  
!  where 'change1''s instruction must come before 'change2''s.
  Alternatively, if the pass is changing a variable number of
  instructions, it might build up the sequence in a
! 'vec<rtl_ssa::insn_change *>'.
  
!  By default, 'rtl_ssa::restrict_movement' assumes that all instructions
  other than the one passed to it will remain in their current positions
  and will retain their current uses and definitions.  When changing
  multiple instructions, it is usually more effective to ignore the other
--- 21307,21318 ----
  
       rtl_ssa::insn_change *changes[] = { &change1, &change2 };
  
!  where â€˜change1â€™'s instruction must come before â€˜change2â€™'s.
  Alternatively, if the pass is changing a variable number of
  instructions, it might build up the sequence in a
! â€˜vec<rtl_ssa::insn_change *>â€™.
  
!  By default, â€˜rtl_ssa::restrict_movementâ€™ assumes that all instructions
  other than the one passed to it will remain in their current positions
  and will retain their current uses and definitions.  When changing
  multiple instructions, it is usually more effective to ignore the other
*************** to each other.  The way to do this is:
*** 21319,21325 ****
       if (!rtl_ssa::restrict_movement (change, ignore_changing_insns (changes)))
         return false;
  
!  Similarly, when 'rtl_ssa::restrict_movement' is detecting whether a
  register can be clobbered, it by default assumes that all other
  instructions will remain in their current positions and retain their
  current form.  It is again more effective to ignore changing
--- 21323,21329 ----
       if (!rtl_ssa::restrict_movement (change, ignore_changing_insns (changes)))
         return false;
  
!  Similarly, when â€˜rtl_ssa::restrict_movementâ€™ is detecting whether a
  register can be clobbered, it by default assumes that all other
  instructions will remain in their current positions and retain their
  current form.  It is again more effective to ignore changing
*************** changes as a whole are worthwhile.  The
*** 21337,21346 ****
         return false;
  
   The process for changing single instructions makes sure that one
! 'rtl_ssa::insn_change' in isolation is valid.  But when changing
  multiple instructions, it is also necessary to test whether the sequence
  as a whole is valid.  For example, it might be impossible to satisfy all
! of the 'move_range's at once.
  
   Therefore, once the pass has a sequence of changes that are
  individually correct, it should use:
--- 21341,21350 ----
         return false;
  
   The process for changing single instructions makes sure that one
! â€˜rtl_ssa::insn_changeâ€™ in isolation is valid.  But when changing
  multiple instructions, it is also necessary to test whether the sequence
  as a whole is valid.  For example, it might be impossible to satisfy all
! of the â€˜move_rangeâ€™s at once.
  
   Therefore, once the pass has a sequence of changes that are
  individually correct, it should use:
*************** objects that describe global variables a
*** 21404,21461 ****
  standard objects such as small integer constants, no RTL objects are
  common to two functions.
  
!    * Each pseudo-register has only a single 'reg' object to represent
       it, and therefore only a single machine mode.
  
!    * For any symbolic label, there is only one 'symbol_ref' object
       referring to it.
  
!    * All 'const_int' expressions with equal values are shared.
  
!    * All 'const_poly_int' expressions with equal modes and values are
       shared.
  
!    * There is only one 'pc' expression.
  
!    * There is only one 'const_double' expression with value 0 for each
       floating point mode.  Likewise for values 1 and 2.
  
!    * There is only one 'const_vector' expression with value 0 for each
       vector mode, be it an integer or a double constant vector.
  
!    * No 'label_ref' or 'scratch' appears in more than one place in the
       RTL structure; in other words, it is safe to do a tree-walk of all
!      the insns in the function and assume that each time a 'label_ref'
!      or 'scratch' is seen it is distinct from all others that are seen.
  
!    * Only one 'mem' object is normally created for each static variable
       or stack slot, so these objects are frequently shared in all the
       places they appear.  However, separate but equal objects for these
       variables are occasionally made.
  
!    * When a single 'asm' statement has multiple output operands, a
!      distinct 'asm_operands' expression is made for each output operand.
       However, these all share the vector which contains the sequence of
       input operands.  This sharing is used later on to test whether two
!      'asm_operands' expressions come from the same statement, so all
       optimizations must carefully preserve the sharing if they copy the
       vector at all.
  
!    * No RTL object appears in more than one place in the RTL structure
       except as described above.  Many passes of the compiler rely on
       this by assuming that they can modify RTL objects in place without
       unwanted side-effects on other insns.
  
!    * During initial RTL generation, shared structure is freely
       introduced.  After all the RTL for a function has been generated,
!      all shared structure is copied by 'unshare_all_rtl' in
!      'emit-rtl.cc', after which the above rules are guaranteed to be
       followed.
  
!    * During the combiner pass, shared structure within an insn can exist
       temporarily.  However, the shared structure is copied before the
       combiner is finished with the insn.  This is done by calling
!      'copy_rtx_if_shared', which is a subroutine of 'unshare_all_rtl'.
  
  
  File: gccint.info,  Node: Reading RTL,  Prev: Sharing,  Up: RTL
--- 21408,21465 ----
  standard objects such as small integer constants, no RTL objects are
  common to two functions.
  
!    â€¢ Each pseudo-register has only a single â€˜regâ€™ object to represent
       it, and therefore only a single machine mode.
  
!    â€¢ For any symbolic label, there is only one â€˜symbol_refâ€™ object
       referring to it.
  
!    â€¢ All â€˜const_intâ€™ expressions with equal values are shared.
  
!    â€¢ All â€˜const_poly_intâ€™ expressions with equal modes and values are
       shared.
  
!    â€¢ There is only one â€˜pcâ€™ expression.
  
!    â€¢ There is only one â€˜const_doubleâ€™ expression with value 0 for each
       floating point mode.  Likewise for values 1 and 2.
  
!    â€¢ There is only one â€˜const_vectorâ€™ expression with value 0 for each
       vector mode, be it an integer or a double constant vector.
  
!    â€¢ No â€˜label_refâ€™ or â€˜scratchâ€™ appears in more than one place in the
       RTL structure; in other words, it is safe to do a tree-walk of all
!      the insns in the function and assume that each time a â€˜label_refâ€™
!      or â€˜scratchâ€™ is seen it is distinct from all others that are seen.
  
!    â€¢ Only one â€˜memâ€™ object is normally created for each static variable
       or stack slot, so these objects are frequently shared in all the
       places they appear.  However, separate but equal objects for these
       variables are occasionally made.
  
!    â€¢ When a single â€˜asmâ€™ statement has multiple output operands, a
!      distinct â€˜asm_operandsâ€™ expression is made for each output operand.
       However, these all share the vector which contains the sequence of
       input operands.  This sharing is used later on to test whether two
!      â€˜asm_operandsâ€™ expressions come from the same statement, so all
       optimizations must carefully preserve the sharing if they copy the
       vector at all.
  
!    â€¢ No RTL object appears in more than one place in the RTL structure
       except as described above.  Many passes of the compiler rely on
       this by assuming that they can modify RTL objects in place without
       unwanted side-effects on other insns.
  
!    â€¢ During initial RTL generation, shared structure is freely
       introduced.  After all the RTL for a function has been generated,
!      all shared structure is copied by â€˜unshare_all_rtlâ€™ in
!      â€˜emit-rtl.ccâ€™, after which the above rules are guaranteed to be
       followed.
  
!    â€¢ During the combiner pass, shared structure within an insn can exist
       temporarily.  However, the shared structure is copied before the
       combiner is finished with the insn.  This is done by calling
!      â€˜copy_rtx_if_sharedâ€™, which is a subroutine of â€˜unshare_all_rtlâ€™.
  
  
  File: gccint.info,  Node: Reading RTL,  Prev: Sharing,  Up: RTL
*************** File: gccint.info,  Node: Reading RTL,
*** 21463,21471 ****
  13.23 Reading RTL
  =================
  
! To read an RTL object from a file, call 'read_rtx'.  It takes one
  argument, a stdio stream, and returns a single RTL object.  This routine
! is defined in 'read-rtl.cc'.  It is not available in the compiler
  itself, only the various programs that generate the compiler back end
  from the machine description.
  
--- 21467,21475 ----
  13.23 Reading RTL
  =================
  
! To read an RTL object from a file, call â€˜read_rtxâ€™.  It takes one
  argument, a stdio stream, and returns a single RTL object.  This routine
! is defined in â€˜read-rtl.ccâ€™.  It is not available in the compiler
  itself, only the various programs that generate the compiler back end
  from the machine description.
  
*************** program is very dependent on the particu
*** 21478,21484 ****
  does not contain all the information about the program.
  
   The proper way to interface GCC to a new language front end is with the
! "tree" data structure, described in the files 'tree.h' and 'tree.def'.
  The documentation for this structure (*note GENERIC::) is incomplete.
  
  
--- 21482,21488 ----
  does not contain all the information about the program.
  
   The proper way to interface GCC to a new language front end is with the
! "tree" data structure, described in the files â€˜tree.hâ€™ and â€˜tree.defâ€™.
  The documentation for this structure (*note GENERIC::) is incomplete.
  
  
*************** File: gccint.info,  Node: Control Flow,
*** 21488,21508 ****
  *********************
  
  A control flow graph (CFG) is a data structure built on top of the
! intermediate code representation (the RTL or 'GIMPLE' instruction
  stream) abstracting the control flow behavior of a function that is
  being compiled.  The CFG is a directed graph where the vertices
  represent basic blocks and edges represent possible transfer of control
  flow from one basic block to another.  The data structures used to
! represent the control flow graph are defined in 'basic-block.h'.
  
   In GCC, the representation of control flow is maintained throughout the
! compilation process, from constructing the CFG early in 'pass_build_cfg'
! to 'pass_free_cfg' (see 'passes.def').  The CFG takes various different
  modes and may undergo extensive manipulations, but the graph is always
  valid between its construction and its release.  This way, transfer of
  information such as data flow, a measured profile, or the loop tree, can
! be propagated through the passes pipeline, and even from 'GIMPLE' to
! 'RTL'.
  
   Often the CFG may be better viewed as integral part of instruction
  chain, than structure built on the top of it.  Updating the compiler's
--- 21492,21512 ----
  *********************
  
  A control flow graph (CFG) is a data structure built on top of the
! intermediate code representation (the RTL or â€˜GIMPLEâ€™ instruction
  stream) abstracting the control flow behavior of a function that is
  being compiled.  The CFG is a directed graph where the vertices
  represent basic blocks and edges represent possible transfer of control
  flow from one basic block to another.  The data structures used to
! represent the control flow graph are defined in â€˜basic-block.hâ€™.
  
   In GCC, the representation of control flow is maintained throughout the
! compilation process, from constructing the CFG early in â€˜pass_build_cfgâ€™
! to â€˜pass_free_cfgâ€™ (see â€˜passes.defâ€™).  The CFG takes various different
  modes and may undergo extensive manipulations, but the graph is always
  valid between its construction and its release.  This way, transfer of
  information such as data flow, a measured profile, or the loop tree, can
! be propagated through the passes pipeline, and even from â€˜GIMPLEâ€™ to
! â€˜RTLâ€™.
  
   Often the CFG may be better viewed as integral part of instruction
  chain, than structure built on the top of it.  Updating the compiler's
*************** File: gccint.info,  Node: Basic Blocks,
*** 21525,21587 ****
  
  A basic block is a straight-line sequence of code with only one entry
  point and only one exit.  In GCC, basic blocks are represented using the
! 'basic_block' data type.
  
   Special basic blocks represent possible entry and exit points of a
! function.  These blocks are called 'ENTRY_BLOCK_PTR' and
! 'EXIT_BLOCK_PTR'.  These blocks do not contain any code.
  
!  The 'BASIC_BLOCK' array contains all basic blocks in an unspecified
! order.  Each 'basic_block' structure has a field that holds a unique
! integer identifier 'index' that is the index of the block in the
! 'BASIC_BLOCK' array.  The total number of basic blocks in the function
! is 'n_basic_blocks'.  Both the basic block indices and the total number
  of basic blocks may vary during the compilation process, as passes
  reorder, create, duplicate, and destroy basic blocks.  The index for any
! block should never be greater than 'last_basic_block'.  The indices 0
! and 1 are special codes reserved for 'ENTRY_BLOCK' and 'EXIT_BLOCK', the
! indices of 'ENTRY_BLOCK_PTR' and 'EXIT_BLOCK_PTR'.
  
!  Two pointer members of the 'basic_block' structure are the pointers
! 'next_bb' and 'prev_bb'.  These are used to keep doubly linked chain of
  basic blocks in the same order as the underlying instruction stream.
  The chain of basic blocks is updated transparently by the provided API
! for manipulating the CFG.  The macro 'FOR_EACH_BB' can be used to visit
! all the basic blocks in lexicographical order, except 'ENTRY_BLOCK' and
! 'EXIT_BLOCK'.  The macro 'FOR_ALL_BB' also visits all basic blocks in
! lexicographical order, including 'ENTRY_BLOCK' and 'EXIT_BLOCK'.
  
!  The functions 'post_order_compute' and 'inverted_post_order_compute'
  can be used to compute topological orders of the CFG. The orders are
! stored as vectors of basic block indices.  The 'BASIC_BLOCK' array can
  be used to iterate each basic block by index.  Dominator traversals are
! also possible using 'dom_walker::walk'.  Given two basic blocks A and B,
  block A dominates block B if A is _always_ executed before B.
  
!  Each 'basic_block' also contains pointers to the first instruction (the
! "head") and the last instruction (the "tail") or "end" of the
  instruction stream contained in a basic block.  In fact, since the
! 'basic_block' data type is used to represent blocks in both major
! intermediate representations of GCC ('GIMPLE' and RTL), there are
  pointers to the head and end of a basic block for both representations,
! stored in intermediate representation specific data in the 'il' field of
! 'struct basic_block_def'.
  
!  For RTL, these pointers are 'BB_HEAD' and 'BB_END'.
  
   In the RTL representation of a function, the instruction stream
! contains not only the "real" instructions, but also "notes" or "insn
! notes" (to distinguish them from "reg notes").  Any function that moves
  or duplicates the basic blocks needs to take care of updating of these
  notes.  Many of these notes expect that the instruction stream consists
  of linear regions, so updating can sometimes be tedious.  All types of
! insn notes are defined in 'insn-notes.def'.
  
   In the RTL function representation, the instructions contained in a
! basic block always follow a 'NOTE_INSN_BASIC_BLOCK', but zero or more
! 'CODE_LABEL' nodes can precede the block note.  A basic block ends with
  a control flow instruction or with the last instruction before the next
! 'CODE_LABEL' or 'NOTE_INSN_BASIC_BLOCK'.  By definition, a 'CODE_LABEL'
  cannot appear in the middle of the instruction stream of a basic block.
  
   In addition to notes, the jump table vectors are also represented as
--- 21529,21591 ----
  
  A basic block is a straight-line sequence of code with only one entry
  point and only one exit.  In GCC, basic blocks are represented using the
! â€˜basic_blockâ€™ data type.
  
   Special basic blocks represent possible entry and exit points of a
! function.  These blocks are called â€˜ENTRY_BLOCK_PTRâ€™ and
! â€˜EXIT_BLOCK_PTRâ€™.  These blocks do not contain any code.
  
!  The â€˜BASIC_BLOCKâ€™ array contains all basic blocks in an unspecified
! order.  Each â€˜basic_blockâ€™ structure has a field that holds a unique
! integer identifier â€˜indexâ€™ that is the index of the block in the
! â€˜BASIC_BLOCKâ€™ array.  The total number of basic blocks in the function
! is â€˜n_basic_blocksâ€™.  Both the basic block indices and the total number
  of basic blocks may vary during the compilation process, as passes
  reorder, create, duplicate, and destroy basic blocks.  The index for any
! block should never be greater than â€˜last_basic_blockâ€™.  The indices 0
! and 1 are special codes reserved for â€˜ENTRY_BLOCKâ€™ and â€˜EXIT_BLOCKâ€™, the
! indices of â€˜ENTRY_BLOCK_PTRâ€™ and â€˜EXIT_BLOCK_PTRâ€™.
  
!  Two pointer members of the â€˜basic_blockâ€™ structure are the pointers
! â€˜next_bbâ€™ and â€˜prev_bbâ€™.  These are used to keep doubly linked chain of
  basic blocks in the same order as the underlying instruction stream.
  The chain of basic blocks is updated transparently by the provided API
! for manipulating the CFG.  The macro â€˜FOR_EACH_BBâ€™ can be used to visit
! all the basic blocks in lexicographical order, except â€˜ENTRY_BLOCKâ€™ and
! â€˜EXIT_BLOCKâ€™.  The macro â€˜FOR_ALL_BBâ€™ also visits all basic blocks in
! lexicographical order, including â€˜ENTRY_BLOCKâ€™ and â€˜EXIT_BLOCKâ€™.
  
!  The functions â€˜post_order_computeâ€™ and â€˜inverted_post_order_computeâ€™
  can be used to compute topological orders of the CFG. The orders are
! stored as vectors of basic block indices.  The â€˜BASIC_BLOCKâ€™ array can
  be used to iterate each basic block by index.  Dominator traversals are
! also possible using â€˜dom_walker::walkâ€™.  Given two basic blocks A and B,
  block A dominates block B if A is _always_ executed before B.
  
!  Each â€˜basic_blockâ€™ also contains pointers to the first instruction (the
! â€œheadâ€�) and the last instruction (the â€œtailâ€�) or â€œendâ€� of the
  instruction stream contained in a basic block.  In fact, since the
! â€˜basic_blockâ€™ data type is used to represent blocks in both major
! intermediate representations of GCC (â€˜GIMPLEâ€™ and RTL), there are
  pointers to the head and end of a basic block for both representations,
! stored in intermediate representation specific data in the â€˜ilâ€™ field of
! â€˜struct basic_block_defâ€™.
  
!  For RTL, these pointers are â€˜BB_HEADâ€™ and â€˜BB_ENDâ€™.
  
   In the RTL representation of a function, the instruction stream
! contains not only the "real" instructions, but also â€œnotesâ€� or â€œinsn
! notesâ€� (to distinguish them from â€œreg notesâ€�).  Any function that moves
  or duplicates the basic blocks needs to take care of updating of these
  notes.  Many of these notes expect that the instruction stream consists
  of linear regions, so updating can sometimes be tedious.  All types of
! insn notes are defined in â€˜insn-notes.defâ€™.
  
   In the RTL function representation, the instructions contained in a
! basic block always follow a â€˜NOTE_INSN_BASIC_BLOCKâ€™, but zero or more
! â€˜CODE_LABELâ€™ nodes can precede the block note.  A basic block ends with
  a control flow instruction or with the last instruction before the next
! â€˜CODE_LABELâ€™ or â€˜NOTE_INSN_BASIC_BLOCKâ€™.  By definition, a â€˜CODE_LABELâ€™
  cannot appear in the middle of the instruction stream of a basic block.
  
   In addition to notes, the jump table vectors are also represented as
*************** it is often difficult to eliminate the c
*** 21592,21608 ****
  referencing the vector, so cleaning up these vectors is postponed until
  after liveness analysis.  Thus the jump table vectors may appear in the
  insn stream unreferenced and without any purpose.  Before any edge is
! made "fall-thru", the existence of such construct in the way needs to be
! checked by calling 'can_fallthru' function.
  
!  For the 'GIMPLE' representation, the PHI nodes and statements contained
! in a basic block are in a 'gimple_seq' pointed to by the basic block
  intermediate language specific pointers.  Abstract containers and
  iterators are used to access the PHI nodes and statements in a basic
! blocks.  These iterators are called "GIMPLE statement iterators" (GSIs).
! Grep for '^gsi' in the various 'gimple-*' and 'tree-*' files.  There is
! a 'gimple_stmt_iterator' type for iterating over all kinds of statement,
! and a 'gphi_iterator' subclass for iterating over PHI nodes.  The
  following snippet will pretty-print all PHI nodes the statements of the
  current function in the GIMPLE representation.
  
--- 21596,21612 ----
  referencing the vector, so cleaning up these vectors is postponed until
  after liveness analysis.  Thus the jump table vectors may appear in the
  insn stream unreferenced and without any purpose.  Before any edge is
! made â€œfall-thruâ€�, the existence of such construct in the way needs to be
! checked by calling â€˜can_fallthruâ€™ function.
  
!  For the â€˜GIMPLEâ€™ representation, the PHI nodes and statements contained
! in a basic block are in a â€˜gimple_seqâ€™ pointed to by the basic block
  intermediate language specific pointers.  Abstract containers and
  iterators are used to access the PHI nodes and statements in a basic
! blocks.  These iterators are called â€œGIMPLE statement iteratorsâ€� (GSIs).
! Grep for â€˜^gsiâ€™ in the various â€˜gimple-*â€™ and â€˜tree-*â€™ files.  There is
! a â€˜gimple_stmt_iteratorâ€™ type for iterating over all kinds of statement,
! and a â€˜gphi_iteratorâ€™ subclass for iterating over PHI nodes.  The
  following snippet will pretty-print all PHI nodes the statements of the
  current function in the GIMPLE representation.
  
*************** File: gccint.info,  Node: Edges,  Next:
*** 21634,21685 ****
  Edges represent possible control flow transfers from the end of some
  basic block A to the head of another basic block B.  We say that A is a
  predecessor of B, and B is a successor of A.  Edges are represented in
! GCC with the 'edge' data type.  Each 'edge' acts as a link between two
! basic blocks: The 'src' member of an edge points to the predecessor
! basic block of the 'dest' basic block.  The members 'preds' and 'succs'
! of the 'basic_block' data type point to type-safe vectors of edges to
  the predecessors and successors of the block.
  
!  When walking the edges in an edge vector, "edge iterators" should be
! used.  Edge iterators are constructed using the 'edge_iterator' data
  structure and several methods are available to operate on them:
  
! 'ei_start'
!      This function initializes an 'edge_iterator' that points to the
       first edge in a vector of edges.
  
! 'ei_last'
!      This function initializes an 'edge_iterator' that points to the
       last edge in a vector of edges.
  
! 'ei_end_p'
!      This predicate is 'true' if an 'edge_iterator' represents the last
       edge in an edge vector.
  
! 'ei_one_before_end_p'
!      This predicate is 'true' if an 'edge_iterator' represents the
       second last edge in an edge vector.
  
! 'ei_next'
!      This function takes a pointer to an 'edge_iterator' and makes it
       point to the next edge in the sequence.
  
! 'ei_prev'
!      This function takes a pointer to an 'edge_iterator' and makes it
       point to the previous edge in the sequence.
  
! 'ei_edge'
!      This function returns the 'edge' currently pointed to by an
!      'edge_iterator'.
  
! 'ei_safe_edge'
!      This function returns the 'edge' currently pointed to by an
!      'edge_iterator', but returns 'NULL' if the iterator is pointing at
       the end of the sequence.  This function has been provided for
!      existing code makes the assumption that a 'NULL' edge indicates the
       end of the sequence.
  
!  The convenience macro 'FOR_EACH_EDGE' can be used to visit all of the
  edges in a sequence of predecessor or successor edges.  It must not be
  used when an element might be removed during the traversal, otherwise
  elements will be missed.  Here is an example of how to use the macro:
--- 21638,21689 ----
  Edges represent possible control flow transfers from the end of some
  basic block A to the head of another basic block B.  We say that A is a
  predecessor of B, and B is a successor of A.  Edges are represented in
! GCC with the â€˜edgeâ€™ data type.  Each â€˜edgeâ€™ acts as a link between two
! basic blocks: The â€˜srcâ€™ member of an edge points to the predecessor
! basic block of the â€˜destâ€™ basic block.  The members â€˜predsâ€™ and â€˜succsâ€™
! of the â€˜basic_blockâ€™ data type point to type-safe vectors of edges to
  the predecessors and successors of the block.
  
!  When walking the edges in an edge vector, â€œedge iteratorsâ€� should be
! used.  Edge iterators are constructed using the â€˜edge_iteratorâ€™ data
  structure and several methods are available to operate on them:
  
! â€˜ei_startâ€™
!      This function initializes an â€˜edge_iteratorâ€™ that points to the
       first edge in a vector of edges.
  
! â€˜ei_lastâ€™
!      This function initializes an â€˜edge_iteratorâ€™ that points to the
       last edge in a vector of edges.
  
! â€˜ei_end_pâ€™
!      This predicate is â€˜trueâ€™ if an â€˜edge_iteratorâ€™ represents the last
       edge in an edge vector.
  
! â€˜ei_one_before_end_pâ€™
!      This predicate is â€˜trueâ€™ if an â€˜edge_iteratorâ€™ represents the
       second last edge in an edge vector.
  
! â€˜ei_nextâ€™
!      This function takes a pointer to an â€˜edge_iteratorâ€™ and makes it
       point to the next edge in the sequence.
  
! â€˜ei_prevâ€™
!      This function takes a pointer to an â€˜edge_iteratorâ€™ and makes it
       point to the previous edge in the sequence.
  
! â€˜ei_edgeâ€™
!      This function returns the â€˜edgeâ€™ currently pointed to by an
!      â€˜edge_iteratorâ€™.
  
! â€˜ei_safe_edgeâ€™
!      This function returns the â€˜edgeâ€™ currently pointed to by an
!      â€˜edge_iteratorâ€™, but returns â€˜NULLâ€™ if the iterator is pointing at
       the end of the sequence.  This function has been provided for
!      existing code makes the assumption that a â€˜NULLâ€™ edge indicates the
       end of the sequence.
  
!  The convenience macro â€˜FOR_EACH_EDGEâ€™ can be used to visit all of the
  edges in a sequence of predecessor or successor edges.  It must not be
  used when an element might be removed during the traversal, otherwise
  elements will be missed.  Here is an example of how to use the macro:
*************** elements will be missed.  Here is an exa
*** 21695,21704 ****
  
   There are various reasons why control flow may transfer from one block
  to another.  One possibility is that some instruction, for example a
! 'CODE_LABEL', in a linearized instruction stream just always starts a
! new basic block.  In this case a "fall-thru" edge links the basic block
  to the first following basic block.  But there are several other reasons
! why edges may be created.  The 'flags' field of the 'edge' data type is
  used to store information about the type of edge we are dealing with.
  Each edge is of one of the following types:
  
--- 21699,21708 ----
  
   There are various reasons why control flow may transfer from one block
  to another.  One possibility is that some instruction, for example a
! â€˜CODE_LABELâ€™, in a linearized instruction stream just always starts a
! new basic block.  In this case a â€œfall-thruâ€� edge links the basic block
  to the first following basic block.  But there are several other reasons
! why edges may be created.  The â€˜flagsâ€™ field of the â€˜edgeâ€™ data type is
  used to store information about the type of edge we are dealing with.
  Each edge is of one of the following types:
  
*************** _jump_
*** 21712,21721 ****
  _fall-thru_
       Fall-thru edges are present in case where the basic block may
       continue execution to the following one without branching.  These
!      edges have the 'EDGE_FALLTHRU' flag set.  Unlike other types of
       edges, these edges must come into the basic block immediately
       following in the instruction stream.  The function
!      'force_nonfallthru' is available to insert an unconditional jump in
       the case that redirection is needed.  Note that this may require
       creation of a new basic block.
  
--- 21716,21725 ----
  _fall-thru_
       Fall-thru edges are present in case where the basic block may
       continue execution to the following one without branching.  These
!      edges have the â€˜EDGE_FALLTHRUâ€™ flag set.  Unlike other types of
       edges, these edges must come into the basic block immediately
       following in the instruction stream.  The function
!      â€˜force_nonfallthruâ€™ is available to insert an unconditional jump in
       the case that redirection is needed.  Note that this may require
       creation of a new basic block.
  
*************** _exception handling_
*** 21726,21759 ****
       Ada exceptions like division by zero or segmentation fault are
       defined and thus each instruction possibly throwing this kind of
       exception needs to be handled as control flow instruction.
!      Exception edges have the 'EDGE_ABNORMAL' and 'EDGE_EH' flags set.
  
       When updating the instruction stream it is easy to change possibly
       trapping instruction to non-trapping, by simply removing the
       exception edge.  The opposite conversion is difficult, but should
       not happen anyway.  The edges can be eliminated via
!      'purge_dead_edges' call.
  
       In the RTL representation, the destination of an exception edge is
!      specified by 'REG_EH_REGION' note attached to the insn.  In case of
!      a trapping call the 'EDGE_ABNORMAL_CALL' flag is set too.  In the
!      'GIMPLE' representation, this extra flag is not set.
  
!      In the RTL representation, the predicate 'may_trap_p' may be used
       to check whether instruction still may trap or not.  For the tree
!      representation, the 'tree_could_trap_p' predicate is available, but
       this predicate only checks for possible memory traps, as in
       dereferencing an invalid pointer location.
  
  _sibling calls_
       Sibling calls or tail calls terminate the function in a
       non-standard way and thus an edge to the exit must be present.
!      'EDGE_SIBCALL' and 'EDGE_ABNORMAL' are set in such case.  These
       edges only exist in the RTL representation.
  
  _computed jumps_
       Computed jumps contain edges to all labels in the function
!      referenced from the code.  All those edges have 'EDGE_ABNORMAL'
       flag set.  The edges used to represent computed jumps often cause
       compile time performance problems, since functions consisting of
       many taken labels and many computed jumps may have _very_ dense
--- 21730,21763 ----
       Ada exceptions like division by zero or segmentation fault are
       defined and thus each instruction possibly throwing this kind of
       exception needs to be handled as control flow instruction.
!      Exception edges have the â€˜EDGE_ABNORMALâ€™ and â€˜EDGE_EHâ€™ flags set.
  
       When updating the instruction stream it is easy to change possibly
       trapping instruction to non-trapping, by simply removing the
       exception edge.  The opposite conversion is difficult, but should
       not happen anyway.  The edges can be eliminated via
!      â€˜purge_dead_edgesâ€™ call.
  
       In the RTL representation, the destination of an exception edge is
!      specified by â€˜REG_EH_REGIONâ€™ note attached to the insn.  In case of
!      a trapping call the â€˜EDGE_ABNORMAL_CALLâ€™ flag is set too.  In the
!      â€˜GIMPLEâ€™ representation, this extra flag is not set.
  
!      In the RTL representation, the predicate â€˜may_trap_pâ€™ may be used
       to check whether instruction still may trap or not.  For the tree
!      representation, the â€˜tree_could_trap_pâ€™ predicate is available, but
       this predicate only checks for possible memory traps, as in
       dereferencing an invalid pointer location.
  
  _sibling calls_
       Sibling calls or tail calls terminate the function in a
       non-standard way and thus an edge to the exit must be present.
!      â€˜EDGE_SIBCALLâ€™ and â€˜EDGE_ABNORMALâ€™ are set in such case.  These
       edges only exist in the RTL representation.
  
  _computed jumps_
       Computed jumps contain edges to all labels in the function
!      referenced from the code.  All those edges have â€˜EDGE_ABNORMALâ€™
       flag set.  The edges used to represent computed jumps often cause
       compile time performance problems, since functions consisting of
       many taken labels and many computed jumps may have _very_ dense
*************** _computed jumps_
*** 21790,21815 ****
       has a runtime cost in there resulting code: An extra jump.
       Therefore, the computed jumps are un-factored in the later passes
       of the compiler (in the pass called
!      'pass_duplicate_computed_gotos').  Be aware of that when you work
       on passes in that area.  There have been numerous examples already
       where the compile time for code with unfactored computed jumps
       caused some serious headaches.
  
  _nonlocal goto handlers_
!      GCC allows nested functions to return into caller using a 'goto' to
       a label passed to as an argument to the callee.  The labels passed
       to nested functions contain special code to cleanup after function
       call.  Such sections of code are referred to as "nonlocal goto
       receivers".  If a function contains such nonlocal goto receivers,
       an edge from the call to the label is created with the
!      'EDGE_ABNORMAL' and 'EDGE_ABNORMAL_CALL' flags set.
  
  _function entry points_
       By definition, execution of function starts at basic block 0, so
!      there is always an edge from the 'ENTRY_BLOCK_PTR' to basic block
!      0.  There is no 'GIMPLE' representation for alternate entry points
       at this moment.  In RTL, alternate entry points are specified by
!      'CODE_LABEL' with 'LABEL_ALTERNATE_NAME' defined.  This feature is
       currently used for multiple entry point prologues and is limited to
       post-reload passes only.  This can be used by back-ends to emit
       alternate prologues for functions called from different contexts.
--- 21794,21819 ----
       has a runtime cost in there resulting code: An extra jump.
       Therefore, the computed jumps are un-factored in the later passes
       of the compiler (in the pass called
!      â€˜pass_duplicate_computed_gotosâ€™).  Be aware of that when you work
       on passes in that area.  There have been numerous examples already
       where the compile time for code with unfactored computed jumps
       caused some serious headaches.
  
  _nonlocal goto handlers_
!      GCC allows nested functions to return into caller using a â€˜gotoâ€™ to
       a label passed to as an argument to the callee.  The labels passed
       to nested functions contain special code to cleanup after function
       call.  Such sections of code are referred to as "nonlocal goto
       receivers".  If a function contains such nonlocal goto receivers,
       an edge from the call to the label is created with the
!      â€˜EDGE_ABNORMALâ€™ and â€˜EDGE_ABNORMAL_CALLâ€™ flags set.
  
  _function entry points_
       By definition, execution of function starts at basic block 0, so
!      there is always an edge from the â€˜ENTRY_BLOCK_PTRâ€™ to basic block
!      0.  There is no â€˜GIMPLEâ€™ representation for alternate entry points
       at this moment.  In RTL, alternate entry points are specified by
!      â€˜CODE_LABELâ€™ with â€˜LABEL_ALTERNATE_NAMEâ€™ defined.  This feature is
       currently used for multiple entry point prologues and is limited to
       post-reload passes only.  This can be used by back-ends to emit
       alternate prologues for functions called from different contexts.
*************** one part of code for speed in another, o
*** 21835,21841 ****
  speed.  In such cases it is useful to know information about how often
  some given block will be executed.  That is the purpose for maintaining
  profile within the flow graph.  GCC can handle profile information
! obtained through "profile feedback", but it can also estimate branch
  probabilities based on statics and heuristics.
  
   The feedback based profile is produced by compiling the program with
--- 21839,21845 ----
  speed.  In such cases it is useful to know information about how often
  some given block will be executed.  That is the purpose for maintaining
  profile within the flow graph.  GCC can handle profile information
! obtained through â€œprofile feedbackâ€�, but it can also estimate branch
  probabilities based on statics and heuristics.
  
   The feedback based profile is produced by compiling the program with
*************** different data sets.
*** 21850,21874 ****
  
   When profile feedback is not available, the compiler may be asked to
  attempt to predict the behavior of each branch in the program using a
! set of heuristics (see 'predict.def' for details) and compute estimated
  frequencies of each basic block by propagating the probabilities over
  the graph.
  
!  Each 'basic_block' contains two integer fields to represent profile
! information: 'frequency' and 'count'.  The 'frequency' is an estimation
  how often is basic block executed within a function.  It is represented
! as an integer scaled in the range from 0 to 'BB_FREQ_BASE'.  The most
  frequently executed basic block in function is initially set to
! 'BB_FREQ_BASE' and the rest of frequencies are scaled accordingly.
  During optimization, the frequency of the most frequent basic block can
  both decrease (for instance by loop unrolling) or grow (for instance by
  cross-jumping optimization), so scaling sometimes has to be performed
  multiple times.
  
!  The 'count' contains hard-counted numbers of execution measured during
  training runs and is nonzero only when profile feedback is available.
  This value is represented as the host's widest integer (typically a 64
! bit integer) of the special type 'gcov_type'.
  
   Most optimization passes can use only the frequency information of a
  basic block, but a few passes may want to know hard execution counts.
--- 21854,21878 ----
  
   When profile feedback is not available, the compiler may be asked to
  attempt to predict the behavior of each branch in the program using a
! set of heuristics (see â€˜predict.defâ€™ for details) and compute estimated
  frequencies of each basic block by propagating the probabilities over
  the graph.
  
!  Each â€˜basic_blockâ€™ contains two integer fields to represent profile
! information: â€˜frequencyâ€™ and â€˜countâ€™.  The â€˜frequencyâ€™ is an estimation
  how often is basic block executed within a function.  It is represented
! as an integer scaled in the range from 0 to â€˜BB_FREQ_BASEâ€™.  The most
  frequently executed basic block in function is initially set to
! â€˜BB_FREQ_BASEâ€™ and the rest of frequencies are scaled accordingly.
  During optimization, the frequency of the most frequent basic block can
  both decrease (for instance by loop unrolling) or grow (for instance by
  cross-jumping optimization), so scaling sometimes has to be performed
  multiple times.
  
!  The â€˜countâ€™ contains hard-counted numbers of execution measured during
  training runs and is nonzero only when profile feedback is available.
  This value is represented as the host's widest integer (typically a 64
! bit integer) of the special type â€˜gcov_typeâ€™.
  
   Most optimization passes can use only the frequency information of a
  basic block, but a few passes may want to know hard execution counts.
*************** during updating of the profile informati
*** 21877,21904 ****
  accumulate into quite large errors.
  
   Each edge also contains a branch probability field: an integer in the
! range from 0 to 'REG_BR_PROB_BASE'.  It represents probability of
! passing control from the end of the 'src' basic block to the 'dest'
  basic block, i.e. the probability that control will flow along this
! edge.  The 'EDGE_FREQUENCY' macro is available to compute how frequently
! a given edge is taken.  There is a 'count' field for each edge as well,
  representing same information as for a basic block.
  
   The basic block frequencies are not represented in the instruction
  stream, but in the RTL representation the edge frequencies are
! represented for conditional jumps (via the 'REG_BR_PROB' macro) since
  they are used when instructions are output to the assembly file and the
  flow graph is no longer maintained.
  
   The probability that control flow arrives via a given edge to its
! destination basic block is called "reverse probability" and is not
  directly represented, but it may be easily computed from frequencies of
  basic blocks.
  
   Updating profile information is a delicate task that can unfortunately
  not be easily integrated with the CFG manipulation API.  Many of the
  functions and hooks to modify the CFG, such as
! 'redirect_edge_and_branch', do not have enough information to easily
  update the profile, so updating it is in the majority of cases left up
  to the caller.  It is difficult to uncover bugs in the profile updating
  code, because they manifest themselves only by producing worse code, and
--- 21881,21908 ----
  accumulate into quite large errors.
  
   Each edge also contains a branch probability field: an integer in the
! range from 0 to â€˜REG_BR_PROB_BASEâ€™.  It represents probability of
! passing control from the end of the â€˜srcâ€™ basic block to the â€˜destâ€™
  basic block, i.e. the probability that control will flow along this
! edge.  The â€˜EDGE_FREQUENCYâ€™ macro is available to compute how frequently
! a given edge is taken.  There is a â€˜countâ€™ field for each edge as well,
  representing same information as for a basic block.
  
   The basic block frequencies are not represented in the instruction
  stream, but in the RTL representation the edge frequencies are
! represented for conditional jumps (via the â€˜REG_BR_PROBâ€™ macro) since
  they are used when instructions are output to the assembly file and the
  flow graph is no longer maintained.
  
   The probability that control flow arrives via a given edge to its
! destination basic block is called â€œreverse probabilityâ€� and is not
  directly represented, but it may be easily computed from frequencies of
  basic blocks.
  
   Updating profile information is a delicate task that can unfortunately
  not be easily integrated with the CFG manipulation API.  Many of the
  functions and hooks to modify the CFG, such as
! â€˜redirect_edge_and_branchâ€™, do not have enough information to easily
  update the profile, so updating it is in the majority of cases left up
  to the caller.  It is difficult to uncover bugs in the profile updating
  code, because they manifest themselves only by producing worse code, and
*************** checking profile consistency is not poss
*** 21906,21915 ****
  accumulation.  Hence special attention needs to be given to this issue
  in each pass that modifies the CFG.
  
!  It is important to point out that 'REG_BR_PROB_BASE' and 'BB_FREQ_BASE'
  are both set low enough to be possible to compute second power of any
  frequency or probability in the flow graph, it is not possible to even
! square the 'count' field, as modern CPUs are fast enough to execute
  $2^32$ operations quickly.
  
  
--- 21910,21919 ----
  accumulation.  Hence special attention needs to be given to this issue
  in each pass that modifies the CFG.
  
!  It is important to point out that â€˜REG_BR_PROB_BASEâ€™ and â€˜BB_FREQ_BASEâ€™
  are both set low enough to be possible to compute second power of any
  frequency or probability in the flow graph, it is not possible to even
! square the â€˜countâ€™ field, as modern CPUs are fast enough to execute
  $2^32$ operations quickly.
  
  
*************** very expensive and lost profile informat
*** 21925,22034 ****
  all.
  
   GCC has two major intermediate representations, and both use the
! 'basic_block' and 'edge' data types to represent control flow.  Both
  representations share as much of the CFG maintenance code as possible.
! For each representation, a set of "hooks" is defined so that each
  representation can provide its own implementation of CFG manipulation
! routines when necessary.  These hooks are defined in 'cfghooks.h'.
  There are hooks for almost all common CFG manipulations, including block
  splitting and merging, edge redirection and creating and deleting basic
  blocks.  These hooks should provide everything you need to maintain and
! manipulate the CFG in both the RTL and 'GIMPLE' representation.
  
   At the moment, the basic block boundaries are maintained transparently
  when modifying instructions, so there rarely is a need to move them
  manually (such as in case someone wants to output instruction outside
  basic block explicitly).
  
!  In the RTL representation, each instruction has a 'BLOCK_FOR_INSN'
  value that represents pointer to the basic block that contains the
! instruction.  In the 'GIMPLE' representation, the function 'gimple_bb'
  returns a pointer to the basic block containing the queried statement.
  
!  When changes need to be applied to a function in its 'GIMPLE'
! representation, "GIMPLE statement iterators" should be used.  These
  iterators provide an integrated abstraction of the flow graph and the
  instruction stream.  Block statement iterators are constructed using the
! 'gimple_stmt_iterator' data structure and several modifiers are
  available, including the following:
  
! 'gsi_start'
!      This function initializes a 'gimple_stmt_iterator' that points to
       the first non-empty statement in a basic block.
  
! 'gsi_last'
!      This function initializes a 'gimple_stmt_iterator' that points to
       the last statement in a basic block.
  
! 'gsi_end_p'
!      This predicate is 'true' if a 'gimple_stmt_iterator' represents the
       end of a basic block.
  
! 'gsi_next'
!      This function takes a 'gimple_stmt_iterator' and makes it point to
       its successor.
  
! 'gsi_prev'
!      This function takes a 'gimple_stmt_iterator' and makes it point to
       its predecessor.
  
! 'gsi_insert_after'
!      This function inserts a statement after the 'gimple_stmt_iterator'
       passed in.  The final parameter determines whether the statement
       iterator is updated to point to the newly inserted statement, or
       left pointing to the original statement.
  
! 'gsi_insert_before'
!      This function inserts a statement before the 'gimple_stmt_iterator'
       passed in.  The final parameter determines whether the statement
       iterator is updated to point to the newly inserted statement, or
       left pointing to the original statement.
  
! 'gsi_remove'
!      This function removes the 'gimple_stmt_iterator' passed in and
       rechains the remaining statements in a basic block, if any.
  
!  In the RTL representation, the macros 'BB_HEAD' and 'BB_END' may be
! used to get the head and end 'rtx' of a basic block.  No abstract
  iterators are defined for traversing the insn chain, but you can just
! use 'NEXT_INSN' and 'PREV_INSN' instead.  *Note Insns::.
  
   Usually a code manipulating pass simplifies the instruction stream and
  the flow of control, possibly eliminating some edges.  This may for
  example happen when a conditional jump is replaced with an unconditional
  jump.  Updating of edges is not transparent and each optimization pass
  is required to do so manually.  However only few cases occur in
! practice.  The pass may call 'purge_dead_edges' on a given basic block
  to remove superfluous edges, if any.
  
   Another common scenario is redirection of branch instructions, but this
  is best modeled as redirection of edges in the control flow graph and
! thus use of 'redirect_edge_and_branch' is preferred over more low level
! functions, such as 'redirect_jump' that operate on RTL chain only.  The
! CFG hooks defined in 'cfghooks.h' should provide the complete API
  required for manipulating and maintaining the CFG.
  
   It is also possible that a pass has to insert control flow instruction
  into the middle of a basic block, thus creating an entry point in the
  middle of the basic block, which is impossible by definition: The block
  must be split to make sure it only has one entry point, i.e. the head of
! the basic block.  The CFG hook 'split_block' may be used when an
  instruction in the middle of a basic block has to become the target of a
  jump or branch instruction.
  
   For a global optimizer, a common operation is to split edges in the
  flow graph and insert instructions on them.  In the RTL representation,
! this can be easily done using the 'insert_insn_on_edge' function that
  emits an instruction "on the edge", caching it for a later
! 'commit_edge_insertions' call that will take care of moving the inserted
  instructions off the edge into the instruction stream contained in a
  basic block.  This includes the creation of new basic blocks where
! needed.  In the 'GIMPLE' representation, the equivalent functions are
! 'gsi_insert_on_edge' which inserts a block statement iterator on an
! edge, and 'gsi_commit_edge_inserts' which flushes the instruction to
  actual instruction stream.
  
!  While debugging the optimization pass, the 'verify_flow_info' function
  may be useful to find bugs in the control flow graph updating code.
  
  
--- 21929,22038 ----
  all.
  
   GCC has two major intermediate representations, and both use the
! â€˜basic_blockâ€™ and â€˜edgeâ€™ data types to represent control flow.  Both
  representations share as much of the CFG maintenance code as possible.
! For each representation, a set of â€œhooksâ€� is defined so that each
  representation can provide its own implementation of CFG manipulation
! routines when necessary.  These hooks are defined in â€˜cfghooks.hâ€™.
  There are hooks for almost all common CFG manipulations, including block
  splitting and merging, edge redirection and creating and deleting basic
  blocks.  These hooks should provide everything you need to maintain and
! manipulate the CFG in both the RTL and â€˜GIMPLEâ€™ representation.
  
   At the moment, the basic block boundaries are maintained transparently
  when modifying instructions, so there rarely is a need to move them
  manually (such as in case someone wants to output instruction outside
  basic block explicitly).
  
!  In the RTL representation, each instruction has a â€˜BLOCK_FOR_INSNâ€™
  value that represents pointer to the basic block that contains the
! instruction.  In the â€˜GIMPLEâ€™ representation, the function â€˜gimple_bbâ€™
  returns a pointer to the basic block containing the queried statement.
  
!  When changes need to be applied to a function in its â€˜GIMPLEâ€™
! representation, â€œGIMPLE statement iteratorsâ€� should be used.  These
  iterators provide an integrated abstraction of the flow graph and the
  instruction stream.  Block statement iterators are constructed using the
! â€˜gimple_stmt_iteratorâ€™ data structure and several modifiers are
  available, including the following:
  
! â€˜gsi_startâ€™
!      This function initializes a â€˜gimple_stmt_iteratorâ€™ that points to
       the first non-empty statement in a basic block.
  
! â€˜gsi_lastâ€™
!      This function initializes a â€˜gimple_stmt_iteratorâ€™ that points to
       the last statement in a basic block.
  
! â€˜gsi_end_pâ€™
!      This predicate is â€˜trueâ€™ if a â€˜gimple_stmt_iteratorâ€™ represents the
       end of a basic block.
  
! â€˜gsi_nextâ€™
!      This function takes a â€˜gimple_stmt_iteratorâ€™ and makes it point to
       its successor.
  
! â€˜gsi_prevâ€™
!      This function takes a â€˜gimple_stmt_iteratorâ€™ and makes it point to
       its predecessor.
  
! â€˜gsi_insert_afterâ€™
!      This function inserts a statement after the â€˜gimple_stmt_iteratorâ€™
       passed in.  The final parameter determines whether the statement
       iterator is updated to point to the newly inserted statement, or
       left pointing to the original statement.
  
! â€˜gsi_insert_beforeâ€™
!      This function inserts a statement before the â€˜gimple_stmt_iteratorâ€™
       passed in.  The final parameter determines whether the statement
       iterator is updated to point to the newly inserted statement, or
       left pointing to the original statement.
  
! â€˜gsi_removeâ€™
!      This function removes the â€˜gimple_stmt_iteratorâ€™ passed in and
       rechains the remaining statements in a basic block, if any.
  
!  In the RTL representation, the macros â€˜BB_HEADâ€™ and â€˜BB_ENDâ€™ may be
! used to get the head and end â€˜rtxâ€™ of a basic block.  No abstract
  iterators are defined for traversing the insn chain, but you can just
! use â€˜NEXT_INSNâ€™ and â€˜PREV_INSNâ€™ instead.  *Note Insns::.
  
   Usually a code manipulating pass simplifies the instruction stream and
  the flow of control, possibly eliminating some edges.  This may for
  example happen when a conditional jump is replaced with an unconditional
  jump.  Updating of edges is not transparent and each optimization pass
  is required to do so manually.  However only few cases occur in
! practice.  The pass may call â€˜purge_dead_edgesâ€™ on a given basic block
  to remove superfluous edges, if any.
  
   Another common scenario is redirection of branch instructions, but this
  is best modeled as redirection of edges in the control flow graph and
! thus use of â€˜redirect_edge_and_branchâ€™ is preferred over more low level
! functions, such as â€˜redirect_jumpâ€™ that operate on RTL chain only.  The
! CFG hooks defined in â€˜cfghooks.hâ€™ should provide the complete API
  required for manipulating and maintaining the CFG.
  
   It is also possible that a pass has to insert control flow instruction
  into the middle of a basic block, thus creating an entry point in the
  middle of the basic block, which is impossible by definition: The block
  must be split to make sure it only has one entry point, i.e. the head of
! the basic block.  The CFG hook â€˜split_blockâ€™ may be used when an
  instruction in the middle of a basic block has to become the target of a
  jump or branch instruction.
  
   For a global optimizer, a common operation is to split edges in the
  flow graph and insert instructions on them.  In the RTL representation,
! this can be easily done using the â€˜insert_insn_on_edgeâ€™ function that
  emits an instruction "on the edge", caching it for a later
! â€˜commit_edge_insertionsâ€™ call that will take care of moving the inserted
  instructions off the edge into the instruction stream contained in a
  basic block.  This includes the creation of new basic blocks where
! needed.  In the â€˜GIMPLEâ€™ representation, the equivalent functions are
! â€˜gsi_insert_on_edgeâ€™ which inserts a block statement iterator on an
! edge, and â€˜gsi_commit_edge_insertsâ€™ which flushes the instruction to
  actual instruction stream.
  
!  While debugging the optimization pass, the â€˜verify_flow_infoâ€™ function
  may be useful to find bugs in the control flow graph updating code.
  
  
*************** live.  The hard registers and stack slot
*** 22046,22073 ****
  values when a register is dead.
  
   Liveness information is available in the back end starting with
! 'pass_df_initialize' and ending with 'pass_df_finish'.  Three flavors of
! live analysis are available: With 'LR', it is possible to determine at
! any point 'P' in the function if the register may be used on some path
! from 'P' to the end of the function.  With 'UR', it is possible to
! determine if there is a path from the beginning of the function to 'P'
! that defines the variable.  'LIVE' is the intersection of the 'LR' and
! 'UR' and a variable is live at 'P' if there is both an assignment that
  reaches it from the beginning of the function and a use that can be
! reached on some path from 'P' to the end of the function.
  
!  In general 'LIVE' is the most useful of the three.  The macros
! 'DF_[LR,UR,LIVE]_[IN,OUT]' can be used to access this information.  The
  macros take a basic block number and return a bitmap that is indexed by
  the register number.  This information is only guaranteed to be up to
! date after calls are made to 'df_analyze'.  See the file 'df-core.cc'
  for details on using the dataflow.
  
   The liveness information is stored partly in the RTL instruction stream
  and partly in the flow graph.  Local information is stored in the
! instruction stream: Each instruction may contain 'REG_DEAD' notes
  representing that the value of a given register is no longer needed, or
! 'REG_UNUSED' notes representing that the value computed by the
  instruction is never used.  The second is useful for instructions
  computing multiple values at once.
  
--- 22050,22077 ----
  values when a register is dead.
  
   Liveness information is available in the back end starting with
! â€˜pass_df_initializeâ€™ and ending with â€˜pass_df_finishâ€™.  Three flavors of
! live analysis are available: With â€˜LRâ€™, it is possible to determine at
! any point â€˜Pâ€™ in the function if the register may be used on some path
! from â€˜Pâ€™ to the end of the function.  With â€˜URâ€™, it is possible to
! determine if there is a path from the beginning of the function to â€˜Pâ€™
! that defines the variable.  â€˜LIVEâ€™ is the intersection of the â€˜LRâ€™ and
! â€˜URâ€™ and a variable is live at â€˜Pâ€™ if there is both an assignment that
  reaches it from the beginning of the function and a use that can be
! reached on some path from â€˜Pâ€™ to the end of the function.
  
!  In general â€˜LIVEâ€™ is the most useful of the three.  The macros
! â€˜DF_[LR,UR,LIVE]_[IN,OUT]â€™ can be used to access this information.  The
  macros take a basic block number and return a bitmap that is indexed by
  the register number.  This information is only guaranteed to be up to
! date after calls are made to â€˜df_analyzeâ€™.  See the file â€˜df-core.ccâ€™
  for details on using the dataflow.
  
   The liveness information is stored partly in the RTL instruction stream
  and partly in the flow graph.  Local information is stored in the
! instruction stream: Each instruction may contain â€˜REG_DEADâ€™ notes
  representing that the value of a given register is no longer needed, or
! â€˜REG_UNUSEDâ€™ notes representing that the value computed by the
  instruction is never used.  The second is useful for instructions
  computing multiple values at once.
  
*************** File: gccint.info,  Node: Loop represent
*** 22102,22108 ****
  
  This chapter describes the representation of loops in GCC, and functions
  that can be used to build, modify and analyze this representation.  Most
! of the interfaces and data structures are declared in 'cfgloop.h'.  Loop
  structures are analyzed and this information disposed or updated at the
  discretion of individual passes.  Still most of the generic CFG
  manipulation routines are aware of loop structures and try to keep them
--- 22106,22112 ----
  
  This chapter describes the representation of loops in GCC, and functions
  that can be used to build, modify and analyze this representation.  Most
! of the interfaces and data structures are declared in â€˜cfgloop.hâ€™.  Loop
  structures are analyzed and this information disposed or updated at the
  discretion of individual passes.  Still most of the generic CFG
  manipulation routines are aware of loop structures and try to keep them
*************** correspond to sub-loops or to control fl
*** 22124,22130 ****
  that the analysis sometimes changes the CFG, and if you run it in the
  middle of an optimization pass, you must be able to deal with the new
  blocks.  You may avoid CFG changes by passing
! 'LOOPS_MAY_HAVE_MULTIPLE_LATCHES' flag to the loop discovery, note
  however that most other loop manipulation functions will not work
  correctly for loops with multiple latch edges (the functions that only
  query membership of blocks to loops and subloop relationships, or
--- 22128,22134 ----
  that the analysis sometimes changes the CFG, and if you run it in the
  middle of an optimization pass, you must be able to deal with the new
  blocks.  You may avoid CFG changes by passing
! â€˜LOOPS_MAY_HAVE_MULTIPLE_LATCHESâ€™ flag to the loop discovery, note
  however that most other loop manipulation functions will not work
  correctly for loops with multiple latch edges (the functions that only
  query membership of blocks to loops and subloop relationships, or
*************** enumerate and test loop exits, can be ex
*** 22134,22156 ****
  and reachable from its latch against the direction of edges in CFG.  The
  loops are organized in a containment hierarchy (tree) such that all the
  loops immediately contained inside loop L are the children of L in the
! tree.  This tree is represented by the 'struct loops' structure.  The
  root of this tree is a fake loop that contains all blocks in the
! function.  Each of the loops is represented in a 'struct loop'
! structure.  Each loop is assigned an index ('num' field of the 'struct
! loop' structure), and the pointer to the loop is stored in the
! corresponding field of the 'larray' vector in the loops structure.  The
! indices do not have to be continuous, there may be empty ('NULL')
! entries in the 'larray' created by deleting loops.  Also, there is no
  guarantee on the relative order of a loop and its subloops in the
  numbering.  The index of a loop never changes.
  
!  The entries of the 'larray' field should not be accessed directly.  The
! function 'get_loop' returns the loop description for a loop with the
! given index.  'number_of_loops' function returns number of loops in the
  function.  To traverse all loops, use a range-based for loop with class
! 'loops_list' instance.  The 'flags' argument passed to the constructor
! function of class 'loops_list' is used to determine the direction of
  traversal and the set of loops visited.  Each loop is guaranteed to be
  visited exactly once, regardless of the changes to the loop tree, and
  the loops may be removed during the traversal.  The newly created loops
--- 22138,22160 ----
  and reachable from its latch against the direction of edges in CFG.  The
  loops are organized in a containment hierarchy (tree) such that all the
  loops immediately contained inside loop L are the children of L in the
! tree.  This tree is represented by the â€˜struct loopsâ€™ structure.  The
  root of this tree is a fake loop that contains all blocks in the
! function.  Each of the loops is represented in a â€˜struct loopâ€™
! structure.  Each loop is assigned an index (â€˜numâ€™ field of the â€˜struct
! loopâ€™ structure), and the pointer to the loop is stored in the
! corresponding field of the â€˜larrayâ€™ vector in the loops structure.  The
! indices do not have to be continuous, there may be empty (â€˜NULLâ€™)
! entries in the â€˜larrayâ€™ created by deleting loops.  Also, there is no
  guarantee on the relative order of a loop and its subloops in the
  numbering.  The index of a loop never changes.
  
!  The entries of the â€˜larrayâ€™ field should not be accessed directly.  The
! function â€˜get_loopâ€™ returns the loop description for a loop with the
! given index.  â€˜number_of_loopsâ€™ function returns number of loops in the
  function.  To traverse all loops, use a range-based for loop with class
! â€˜loops_listâ€™ instance.  The â€˜flagsâ€™ argument passed to the constructor
! function of class â€˜loops_listâ€™ is used to determine the direction of
  traversal and the set of loops visited.  Each loop is guaranteed to be
  visited exactly once, regardless of the changes to the loop tree, and
  the loops may be removed during the traversal.  The newly created loops
*************** are never traversed, if they need to be
*** 22158,22188 ****
  separately after their creation.
  
   Each basic block contains the reference to the innermost loop it
! belongs to ('loop_father').  For this reason, it is only possible to
! have one 'struct loops' structure initialized at the same time for each
! CFG.  The global variable 'current_loops' contains the 'struct loops'
  structure.  Many of the loop manipulation functions assume that
  dominance information is up-to-date.
  
!  The loops are analyzed through 'loop_optimizer_init' function.  The
  argument of this function is a set of flags represented in an integer
  bitmask.  These flags specify what other properties of the loop
  structures should be calculated/enforced and preserved later:
  
!    * 'LOOPS_MAY_HAVE_MULTIPLE_LATCHES': If this flag is set, no changes
       to CFG will be performed in the loop analysis, in particular, loops
       with multiple latch edges will not be disambiguated.  If a loop has
       multiple latches, its latch block is set to NULL.  Most of the loop
       manipulation functions will not work for loops in this shape.  No
       other flags that require CFG changes can be passed to
       loop_optimizer_init.
!    * 'LOOPS_HAVE_PREHEADERS': Forwarder blocks are created in such a way
       that each loop has only one entry edge, and additionally, the
       source block of this entry edge has only one successor.  This
       creates a natural place where the code can be moved out of the
       loop, and ensures that the entry edge of the loop leads from its
       immediate super-loop.
!    * 'LOOPS_HAVE_SIMPLE_LATCHES': Forwarder blocks are created to force
       the latch block of each loop to have only one successor.  This
       ensures that the latch of the loop does not belong to any of its
       sub-loops, and makes manipulation with the loops significantly
--- 22162,22192 ----
  separately after their creation.
  
   Each basic block contains the reference to the innermost loop it
! belongs to (â€˜loop_fatherâ€™).  For this reason, it is only possible to
! have one â€˜struct loopsâ€™ structure initialized at the same time for each
! CFG.  The global variable â€˜current_loopsâ€™ contains the â€˜struct loopsâ€™
  structure.  Many of the loop manipulation functions assume that
  dominance information is up-to-date.
  
!  The loops are analyzed through â€˜loop_optimizer_initâ€™ function.  The
  argument of this function is a set of flags represented in an integer
  bitmask.  These flags specify what other properties of the loop
  structures should be calculated/enforced and preserved later:
  
!    â€¢ â€˜LOOPS_MAY_HAVE_MULTIPLE_LATCHESâ€™: If this flag is set, no changes
       to CFG will be performed in the loop analysis, in particular, loops
       with multiple latch edges will not be disambiguated.  If a loop has
       multiple latches, its latch block is set to NULL.  Most of the loop
       manipulation functions will not work for loops in this shape.  No
       other flags that require CFG changes can be passed to
       loop_optimizer_init.
!    â€¢ â€˜LOOPS_HAVE_PREHEADERSâ€™: Forwarder blocks are created in such a way
       that each loop has only one entry edge, and additionally, the
       source block of this entry edge has only one successor.  This
       creates a natural place where the code can be moved out of the
       loop, and ensures that the entry edge of the loop leads from its
       immediate super-loop.
!    â€¢ â€˜LOOPS_HAVE_SIMPLE_LATCHESâ€™: Forwarder blocks are created to force
       the latch block of each loop to have only one successor.  This
       ensures that the latch of the loop does not belong to any of its
       sub-loops, and makes manipulation with the loops significantly
*************** structures should be calculated/enforced
*** 22190,22227 ****
       loops are in this shape.  Note that with this flag, the "normal"
       loop without any control flow inside and with one exit consists of
       two basic blocks.
!    * 'LOOPS_HAVE_MARKED_IRREDUCIBLE_REGIONS': Basic blocks and edges in
       the strongly connected components that are not natural loops (have
!      more than one entry block) are marked with 'BB_IRREDUCIBLE_LOOP'
!      and 'EDGE_IRREDUCIBLE_LOOP' flags.  The flag is not set for blocks
       and edges that belong to natural loops that are in such an
       irreducible region (but it is set for the entry and exit edges of
       such a loop, if they lead to/from this region).
!    * 'LOOPS_HAVE_RECORDED_EXITS': The lists of exits are recorded and
       updated for each loop.  This makes some functions (e.g.,
!      'get_loop_exit_edges') more efficient.  Some functions (e.g.,
!      'single_exit') can be used only if the lists of exits are recorded.
  
   These properties may also be computed/enforced later, using functions
! 'create_preheaders', 'force_single_succ_latches',
! 'mark_irreducible_loops' and 'record_loop_exits'.  The properties can be
! queried using 'loops_state_satisfies_p'.
  
   The memory occupied by the loops structures should be freed with
! 'loop_optimizer_finalize' function.  When loop structures are setup to
  be preserved across passes this function reduces the information to be
! kept up-to-date to a minimum (only 'LOOPS_MAY_HAVE_MULTIPLE_LATCHES'
  set).
  
   The CFG manipulation functions in general do not update loop
  structures.  Specialized versions that additionally do so are provided
! for the most common tasks.  On GIMPLE, 'cleanup_tree_cfg_loop' function
  can be used to cleanup CFG while updating the loops structures if
! 'current_loops' is set.
  
   At the moment loop structure is preserved from the start of GIMPLE loop
  optimizations until the end of RTL loop optimizations.  During this time
! a loop can be tracked by its 'struct loop' and number.
  
  
  File: gccint.info,  Node: Loop querying,  Next: Loop manipulation,  Prev: Loop representation,  Up: Loop Analysis and Representation
--- 22194,22231 ----
       loops are in this shape.  Note that with this flag, the "normal"
       loop without any control flow inside and with one exit consists of
       two basic blocks.
!    â€¢ â€˜LOOPS_HAVE_MARKED_IRREDUCIBLE_REGIONSâ€™: Basic blocks and edges in
       the strongly connected components that are not natural loops (have
!      more than one entry block) are marked with â€˜BB_IRREDUCIBLE_LOOPâ€™
!      and â€˜EDGE_IRREDUCIBLE_LOOPâ€™ flags.  The flag is not set for blocks
       and edges that belong to natural loops that are in such an
       irreducible region (but it is set for the entry and exit edges of
       such a loop, if they lead to/from this region).
!    â€¢ â€˜LOOPS_HAVE_RECORDED_EXITSâ€™: The lists of exits are recorded and
       updated for each loop.  This makes some functions (e.g.,
!      â€˜get_loop_exit_edgesâ€™) more efficient.  Some functions (e.g.,
!      â€˜single_exitâ€™) can be used only if the lists of exits are recorded.
  
   These properties may also be computed/enforced later, using functions
! â€˜create_preheadersâ€™, â€˜force_single_succ_latchesâ€™,
! â€˜mark_irreducible_loopsâ€™ and â€˜record_loop_exitsâ€™.  The properties can be
! queried using â€˜loops_state_satisfies_pâ€™.
  
   The memory occupied by the loops structures should be freed with
! â€˜loop_optimizer_finalizeâ€™ function.  When loop structures are setup to
  be preserved across passes this function reduces the information to be
! kept up-to-date to a minimum (only â€˜LOOPS_MAY_HAVE_MULTIPLE_LATCHESâ€™
  set).
  
   The CFG manipulation functions in general do not update loop
  structures.  Specialized versions that additionally do so are provided
! for the most common tasks.  On GIMPLE, â€˜cleanup_tree_cfg_loopâ€™ function
  can be used to cleanup CFG while updating the loops structures if
! â€˜current_loopsâ€™ is set.
  
   At the moment loop structure is preserved from the start of GIMPLE loop
  optimizations until the end of RTL loop optimizations.  During this time
! a loop can be tracked by its â€˜struct loopâ€™ and number.
  
  
  File: gccint.info,  Node: Loop querying,  Next: Loop manipulation,  Prev: Loop representation,  Up: Loop Analysis and Representation
*************** File: gccint.info,  Node: Loop querying,
*** 22230,22244 ****
  ==================
  
  The functions to query the information about loops are declared in
! 'cfgloop.h'.  Some of the information can be taken directly from the
! structures.  'loop_father' field of each basic block contains the
  innermost loop to that the block belongs.  The most useful fields of
  loop structure (that are kept up-to-date at all times) are:
  
!    * 'header', 'latch': Header and latch basic blocks of the loop.
!    * 'num_nodes': Number of basic blocks in the loop (including the
       basic blocks of the sub-loops).
!    * 'outer', 'inner', 'next': The super-loop, the first sub-loop, and
       the sibling of the loop in the loops tree.
  
   There are other fields in the loop structures, many of them used only
--- 22234,22248 ----
  ==================
  
  The functions to query the information about loops are declared in
! â€˜cfgloop.hâ€™.  Some of the information can be taken directly from the
! structures.  â€˜loop_fatherâ€™ field of each basic block contains the
  innermost loop to that the block belongs.  The most useful fields of
  loop structure (that are kept up-to-date at all times) are:
  
!    â€¢ â€˜headerâ€™, â€˜latchâ€™: Header and latch basic blocks of the loop.
!    â€¢ â€˜num_nodesâ€™: Number of basic blocks in the loop (including the
       basic blocks of the sub-loops).
!    â€¢ â€˜outerâ€™, â€˜innerâ€™, â€˜nextâ€™: The super-loop, the first sub-loop, and
       the sibling of the loop in the loops tree.
  
   There are other fields in the loop structures, many of them used only
*************** they should not be accessed directly.
*** 22247,22280 ****
  
   The most important functions to query loop structures are:
  
!    * 'loop_depth': The depth of the loop in the loops tree, i.e., the
       number of super-loops of the loop.
!    * 'flow_loops_dump': Dumps the information about loops to a file.
!    * 'verify_loop_structure': Checks consistency of the loop structures.
!    * 'loop_latch_edge': Returns the latch edge of a loop.
!    * 'loop_preheader_edge': If loops have preheaders, returns the
       preheader edge of a loop.
!    * 'flow_loop_nested_p': Tests whether loop is a sub-loop of another
       loop.
!    * 'flow_bb_inside_loop_p': Tests whether a basic block belongs to a
       loop (including its sub-loops).
!    * 'find_common_loop': Finds the common super-loop of two loops.
!    * 'superloop_at_depth': Returns the super-loop of a loop with the
       given depth.
!    * 'tree_num_loop_insns', 'num_loop_insns': Estimates the number of
       insns in the loop, on GIMPLE and on RTL.
!    * 'loop_exit_edge_p': Tests whether edge is an exit from a loop.
!    * 'mark_loop_exit_edges': Marks all exit edges of all loops with
!      'EDGE_LOOP_EXIT' flag.
!    * 'get_loop_body', 'get_loop_body_in_dom_order',
!      'get_loop_body_in_bfs_order': Enumerates the basic blocks in the
       loop in depth-first search order in reversed CFG, ordered by
       dominance relation, and breath-first search order, respectively.
!    * 'single_exit': Returns the single exit edge of the loop, or 'NULL'
       if the loop has more than one exit.  You can only use this function
!      if 'LOOPS_HAVE_RECORDED_EXITS' is used.
!    * 'get_loop_exit_edges': Enumerates the exit edges of a loop.
!    * 'just_once_each_iteration_p': Returns true if the basic block is
       executed exactly once during each iteration of a loop (that is, it
       does not belong to a sub-loop, and it dominates the latch of the
       loop).
--- 22251,22284 ----
  
   The most important functions to query loop structures are:
  
!    â€¢ â€˜loop_depthâ€™: The depth of the loop in the loops tree, i.e., the
       number of super-loops of the loop.
!    â€¢ â€˜flow_loops_dumpâ€™: Dumps the information about loops to a file.
!    â€¢ â€˜verify_loop_structureâ€™: Checks consistency of the loop structures.
!    â€¢ â€˜loop_latch_edgeâ€™: Returns the latch edge of a loop.
!    â€¢ â€˜loop_preheader_edgeâ€™: If loops have preheaders, returns the
       preheader edge of a loop.
!    â€¢ â€˜flow_loop_nested_pâ€™: Tests whether loop is a sub-loop of another
       loop.
!    â€¢ â€˜flow_bb_inside_loop_pâ€™: Tests whether a basic block belongs to a
       loop (including its sub-loops).
!    â€¢ â€˜find_common_loopâ€™: Finds the common super-loop of two loops.
!    â€¢ â€˜superloop_at_depthâ€™: Returns the super-loop of a loop with the
       given depth.
!    â€¢ â€˜tree_num_loop_insnsâ€™, â€˜num_loop_insnsâ€™: Estimates the number of
       insns in the loop, on GIMPLE and on RTL.
!    â€¢ â€˜loop_exit_edge_pâ€™: Tests whether edge is an exit from a loop.
!    â€¢ â€˜mark_loop_exit_edgesâ€™: Marks all exit edges of all loops with
!      â€˜EDGE_LOOP_EXITâ€™ flag.
!    â€¢ â€˜get_loop_bodyâ€™, â€˜get_loop_body_in_dom_orderâ€™,
!      â€˜get_loop_body_in_bfs_orderâ€™: Enumerates the basic blocks in the
       loop in depth-first search order in reversed CFG, ordered by
       dominance relation, and breath-first search order, respectively.
!    â€¢ â€˜single_exitâ€™: Returns the single exit edge of the loop, or â€˜NULLâ€™
       if the loop has more than one exit.  You can only use this function
!      if â€˜LOOPS_HAVE_RECORDED_EXITSâ€™ is used.
!    â€¢ â€˜get_loop_exit_edgesâ€™: Enumerates the exit edges of a loop.
!    â€¢ â€˜just_once_each_iteration_pâ€™: Returns true if the basic block is
       executed exactly once during each iteration of a loop (that is, it
       does not belong to a sub-loop, and it dominates the latch of the
       loop).
*************** File: gccint.info,  Node: Loop manipulat
*** 22287,22302 ****
  
  The loops tree can be manipulated using the following functions:
  
!    * 'flow_loop_tree_node_add': Adds a node to the tree.
!    * 'flow_loop_tree_node_remove': Removes a node from the tree.
!    * 'add_bb_to_loop': Adds a basic block to a loop.
!    * 'remove_bb_from_loops': Removes a basic block from loops.
  
   Most low-level CFG functions update loops automatically.  The following
  functions handle some more complicated cases of CFG manipulations:
  
!    * 'remove_path': Removes an edge and all blocks it dominates.
!    * 'split_loop_exit_edge': Splits exit edge of the loop, ensuring that
       PHI node arguments remain in the loop (this ensures that
       loop-closed SSA form is preserved).  Only useful on GIMPLE.
  
--- 22291,22306 ----
  
  The loops tree can be manipulated using the following functions:
  
!    â€¢ â€˜flow_loop_tree_node_addâ€™: Adds a node to the tree.
!    â€¢ â€˜flow_loop_tree_node_removeâ€™: Removes a node from the tree.
!    â€¢ â€˜add_bb_to_loopâ€™: Adds a basic block to a loop.
!    â€¢ â€˜remove_bb_from_loopsâ€™: Removes a basic block from loops.
  
   Most low-level CFG functions update loops automatically.  The following
  functions handle some more complicated cases of CFG manipulations:
  
!    â€¢ â€˜remove_pathâ€™: Removes an edge and all blocks it dominates.
!    â€¢ â€˜split_loop_exit_edgeâ€™: Splits exit edge of the loop, ensuring that
       PHI node arguments remain in the loop (this ensures that
       loop-closed SSA form is preserved).  Only useful on GIMPLE.
  
*************** While some of them are written so that t
*** 22305,22327 ****
  loops, they are mostly untested in that case, and at the moment, they
  are only reliable for the innermost loops:
  
!    * 'create_iv': Creates a new induction variable.  Only works on
!      GIMPLE.  'standard_iv_increment_position' can be used to find a
       suitable place for the iv increment.
!    * 'duplicate_loop_body_to_header_edge',
!      'tree_duplicate_loop_body_to_header_edge': These functions (on RTL
       and on GIMPLE) duplicate the body of the loop prescribed number of
       times on one of the edges entering loop header, thus performing
!      either loop unrolling or loop peeling.  'can_duplicate_loop_p'
!      ('can_unroll_loop_p' on GIMPLE) must be true for the duplicated
       loop.
!    * 'loop_version': This function creates a copy of a loop, and a
       branch before them that selects one of them depending on the
       prescribed condition.  This is useful for optimizations that need
       to verify some assumptions in runtime (one of the copies of the
       loop is usually left unchanged, while the other one is transformed
       in some way).
!    * 'tree_unroll_loop': Unrolls the loop, including peeling the extra
       iterations to make the number of iterations divisible by unroll
       factor, updating the exit condition, and removing the exits that
       now cannot be taken.  Works only on GIMPLE.
--- 22309,22331 ----
  loops, they are mostly untested in that case, and at the moment, they
  are only reliable for the innermost loops:
  
!    â€¢ â€˜create_ivâ€™: Creates a new induction variable.  Only works on
!      GIMPLE.  â€˜standard_iv_increment_positionâ€™ can be used to find a
       suitable place for the iv increment.
!    â€¢ â€˜duplicate_loop_body_to_header_edgeâ€™,
!      â€˜tree_duplicate_loop_body_to_header_edgeâ€™: These functions (on RTL
       and on GIMPLE) duplicate the body of the loop prescribed number of
       times on one of the edges entering loop header, thus performing
!      either loop unrolling or loop peeling.  â€˜can_duplicate_loop_pâ€™
!      (â€˜can_unroll_loop_pâ€™ on GIMPLE) must be true for the duplicated
       loop.
!    â€¢ â€˜loop_versionâ€™: This function creates a copy of a loop, and a
       branch before them that selects one of them depending on the
       prescribed condition.  This is useful for optimizations that need
       to verify some assumptions in runtime (one of the copies of the
       loop is usually left unchanged, while the other one is transformed
       in some way).
!    â€¢ â€˜tree_unroll_loopâ€™: Unrolls the loop, including peeling the extra
       iterations to make the number of iterations divisible by unroll
       factor, updating the exit condition, and removing the exits that
       now cannot be taken.  Works only on GIMPLE.
*************** held in LCSSA, in order to save memory.
*** 22342,22356 ****
  
   There are various benefits of LCSSA:
  
!    * Many optimizations (value range analysis, final value replacement)
       are interested in the values that are defined in the loop and used
       outside of it, i.e., exactly those for that we create new PHI
       nodes.
!    * In induction variable analysis, it is not necessary to specify the
       loop in that the analysis should be performed - the scalar
       evolution analysis always returns the results with respect to the
       loop in that the SSA name is defined.
!    * It makes updating of SSA form during loop transformations simpler.
       Without LCSSA, operations like loop unrolling may force creation of
       PHI nodes arbitrarily far from the loop, while in LCSSA, the SSA
       form can be updated locally.  However, since we only keep real
--- 22346,22360 ----
  
   There are various benefits of LCSSA:
  
!    â€¢ Many optimizations (value range analysis, final value replacement)
       are interested in the values that are defined in the loop and used
       outside of it, i.e., exactly those for that we create new PHI
       nodes.
!    â€¢ In induction variable analysis, it is not necessary to specify the
       loop in that the analysis should be performed - the scalar
       evolution analysis always returns the results with respect to the
       loop in that the SSA name is defined.
!    â€¢ It makes updating of SSA form during loop transformations simpler.
       Without LCSSA, operations like loop unrolling may force creation of
       PHI nodes arbitrarily far from the loop, while in LCSSA, the SSA
       form can be updated locally.  However, since we only keep real
*************** held in LCSSA, in order to save memory.
*** 22363,22370 ****
  straightforward, unless you create a new value in loop and use it
  outside, or unless you manipulate loop exit edges (functions are
  provided to make these manipulations simple).
! 'rewrite_into_loop_closed_ssa' is used to rewrite SSA form to LCSSA, and
! 'verify_loop_closed_ssa' to check that the invariant of LCSSA is
  preserved.
  
  
--- 22367,22374 ----
  straightforward, unless you create a new value in loop and use it
  outside, or unless you manipulate loop exit edges (functions are
  provided to make these manipulations simple).
! â€˜rewrite_into_loop_closed_ssaâ€™ is used to rewrite SSA form to LCSSA, and
! â€˜verify_loop_closed_ssaâ€™ to check that the invariant of LCSSA is
  preserved.
  
  
*************** variable analysis on GIMPLE.  They enabl
*** 22378,22414 ****
  complicated behavior in a simple and consistent way (we only use it to
  express values of polynomial induction variables, but it is possible to
  extend it).  The interfaces to SCEV analysis are declared in
! 'tree-scalar-evolution.h'.  To use scalar evolutions analysis,
! 'scev_initialize' must be used.  To stop using SCEV, 'scev_finalize'
  should be used.  SCEV analysis caches results in order to save time and
  memory.  This cache however is made invalid by most of the loop
  transformations, including removal of code.  If such a transformation is
! performed, 'scev_reset' must be called to clean the caches.
  
   Given an SSA name, its behavior in loops can be analyzed using the
! 'analyze_scalar_evolution' function.  The returned SCEV however does not
  have to be fully analyzed and it may contain references to other SSA
  names defined in the loop.  To resolve these (potentially recursive)
! references, 'instantiate_parameters' or 'resolve_mixers' functions must
! be used.  'instantiate_parameters' is useful when you use the results of
  SCEV only for some analysis, and when you work with whole nest of loops
  at once.  It will try replacing all SSA names by their SCEV in all
  loops, including the super-loops of the current loop, thus providing a
  complete information about the behavior of the variable in the loop
! nest.  'resolve_mixers' is useful if you work with only one loop at a
  time, and if you possibly need to create code based on the value of the
  induction variable.  It will only resolve the SSA names defined in the
  current loop, leaving the SSA names defined outside unchanged, even if
  their evolution in the outer loops is known.
  
   The SCEV is a normal tree expression, except for the fact that it may
! contain several special tree nodes.  One of them is 'SCEV_NOT_KNOWN',
  used for SSA names whose value cannot be expressed.  The other one is
! 'POLYNOMIAL_CHREC'.  Polynomial chrec has three arguments - base, step
  and loop (both base and step may contain further polynomial chrecs).
  Type of the expression and of base and step must be the same.  A
! variable has evolution 'POLYNOMIAL_CHREC(base, step, loop)' if it is (in
! the specified loop) equivalent to 'x_1' in the following example
  
       while (...)
         {
--- 22382,22418 ----
  complicated behavior in a simple and consistent way (we only use it to
  express values of polynomial induction variables, but it is possible to
  extend it).  The interfaces to SCEV analysis are declared in
! â€˜tree-scalar-evolution.hâ€™.  To use scalar evolutions analysis,
! â€˜scev_initializeâ€™ must be used.  To stop using SCEV, â€˜scev_finalizeâ€™
  should be used.  SCEV analysis caches results in order to save time and
  memory.  This cache however is made invalid by most of the loop
  transformations, including removal of code.  If such a transformation is
! performed, â€˜scev_resetâ€™ must be called to clean the caches.
  
   Given an SSA name, its behavior in loops can be analyzed using the
! â€˜analyze_scalar_evolutionâ€™ function.  The returned SCEV however does not
  have to be fully analyzed and it may contain references to other SSA
  names defined in the loop.  To resolve these (potentially recursive)
! references, â€˜instantiate_parametersâ€™ or â€˜resolve_mixersâ€™ functions must
! be used.  â€˜instantiate_parametersâ€™ is useful when you use the results of
  SCEV only for some analysis, and when you work with whole nest of loops
  at once.  It will try replacing all SSA names by their SCEV in all
  loops, including the super-loops of the current loop, thus providing a
  complete information about the behavior of the variable in the loop
! nest.  â€˜resolve_mixersâ€™ is useful if you work with only one loop at a
  time, and if you possibly need to create code based on the value of the
  induction variable.  It will only resolve the SSA names defined in the
  current loop, leaving the SSA names defined outside unchanged, even if
  their evolution in the outer loops is known.
  
   The SCEV is a normal tree expression, except for the fact that it may
! contain several special tree nodes.  One of them is â€˜SCEV_NOT_KNOWNâ€™,
  used for SSA names whose value cannot be expressed.  The other one is
! â€˜POLYNOMIAL_CHRECâ€™.  Polynomial chrec has three arguments - base, step
  and loop (both base and step may contain further polynomial chrecs).
  Type of the expression and of base and step must be the same.  A
! variable has evolution â€˜POLYNOMIAL_CHREC(base, step, loop)â€™ if it is (in
! the specified loop) equivalent to â€˜x_1â€™ in the following example
  
       while (...)
         {
*************** the specified loop) equivalent to 'x_1'
*** 22417,22423 ****
         }
  
   Note that this includes the language restrictions on the operations.
! For example, if we compile C code and 'x' has signed type, then the
  overflow in addition would cause undefined behavior, and we may assume
  that this does not happen.  Hence, the value with this SCEV cannot
  overflow (which restricts the number of iterations of such a loop).
--- 22421,22427 ----
         }
  
   Note that this includes the language restrictions on the operations.
! For example, if we compile C code and â€˜xâ€™ has signed type, then the
  overflow in addition would cause undefined behavior, and we may assume
  that this does not happen.  Hence, the value with this SCEV cannot
  overflow (which restricts the number of iterations of such a loop).
*************** overflow (which restricts the number of
*** 22425,22431 ****
   In many cases, one wants to restrict the attention just to affine
  induction variables.  In this case, the extra expressive power of SCEV
  is not useful, and may complicate the optimizations.  In this case,
! 'simple_iv' function may be used to analyze a value - the result is a
  loop-invariant base and step.
  
  
--- 22429,22435 ----
   In many cases, one wants to restrict the attention just to affine
  induction variables.  In this case, the extra expressive power of SCEV
  is not useful, and may complicate the optimizations.  In this case,
! â€˜simple_ivâ€™ function may be used to analyze a value - the result is a
  loop-invariant base and step.
  
  
*************** File: gccint.info,  Node: loop-iv,  Next
*** 22436,22473 ****
  
  The induction variable on RTL is simple and only allows analysis of
  affine induction variables, and only in one loop at once.  The interface
! is declared in 'cfgloop.h'.  Before analyzing induction variables in a
! loop L, 'iv_analysis_loop_init' function must be called on L. After the
! analysis (possibly calling 'iv_analysis_loop_init' for several loops) is
! finished, 'iv_analysis_done' should be called.  The following functions
  can be used to access the results of the analysis:
  
!    * 'iv_analyze': Analyzes a single register used in the given insn.
       If no use of the register in this insn is found, the following
       insns are scanned, so that this function can be called on the insn
       returned by get_condition.
!    * 'iv_analyze_result': Analyzes result of the assignment in the given
       insn.
!    * 'iv_analyze_expr': Analyzes a more complicated expression.  All its
!      operands are analyzed by 'iv_analyze', and hence they must be used
       in the specified insn or one of the following insns.
  
!  The description of the induction variable is provided in 'struct
! rtx_iv'.  In order to handle subregs, the representation is a bit
! complicated; if the value of the 'extend' field is not 'UNKNOWN', the
  value of the induction variable in the i-th iteration is
  
       delta + mult * extend_{extend_mode} (subreg_{mode} (base + i * step)),
  
!  with the following exception: if 'first_special' is true, then the
! value in the first iteration (when 'i' is zero) is 'delta + mult *
! base'.  However, if 'extend' is equal to 'UNKNOWN', then 'first_special'
! must be false, 'delta' 0, 'mult' 1 and the value in the i-th iteration
  is
  
       subreg_{mode} (base + i * step)
  
!  The function 'get_iv_value' can be used to perform these calculations.
  
  
  File: gccint.info,  Node: Number of iterations,  Next: Dependency analysis,  Prev: loop-iv,  Up: Loop Analysis and Representation
--- 22440,22477 ----
  
  The induction variable on RTL is simple and only allows analysis of
  affine induction variables, and only in one loop at once.  The interface
! is declared in â€˜cfgloop.hâ€™.  Before analyzing induction variables in a
! loop L, â€˜iv_analysis_loop_initâ€™ function must be called on L. After the
! analysis (possibly calling â€˜iv_analysis_loop_initâ€™ for several loops) is
! finished, â€˜iv_analysis_doneâ€™ should be called.  The following functions
  can be used to access the results of the analysis:
  
!    â€¢ â€˜iv_analyzeâ€™: Analyzes a single register used in the given insn.
       If no use of the register in this insn is found, the following
       insns are scanned, so that this function can be called on the insn
       returned by get_condition.
!    â€¢ â€˜iv_analyze_resultâ€™: Analyzes result of the assignment in the given
       insn.
!    â€¢ â€˜iv_analyze_exprâ€™: Analyzes a more complicated expression.  All its
!      operands are analyzed by â€˜iv_analyzeâ€™, and hence they must be used
       in the specified insn or one of the following insns.
  
!  The description of the induction variable is provided in â€˜struct
! rtx_ivâ€™.  In order to handle subregs, the representation is a bit
! complicated; if the value of the â€˜extendâ€™ field is not â€˜UNKNOWNâ€™, the
  value of the induction variable in the i-th iteration is
  
       delta + mult * extend_{extend_mode} (subreg_{mode} (base + i * step)),
  
!  with the following exception: if â€˜first_specialâ€™ is true, then the
! value in the first iteration (when â€˜iâ€™ is zero) is â€˜delta + mult *
! baseâ€™.  However, if â€˜extendâ€™ is equal to â€˜UNKNOWNâ€™, then â€˜first_specialâ€™
! must be false, â€˜deltaâ€™ 0, â€˜multâ€™ 1 and the value in the i-th iteration
  is
  
       subreg_{mode} (base + i * step)
  
!  The function â€˜get_iv_valueâ€™ can be used to perform these calculations.
  
  
  File: gccint.info,  Node: Number of iterations,  Next: Dependency analysis,  Prev: loop-iv,  Up: Loop Analysis and Representation
*************** program; if it fails, the conditions are
*** 22486,22547 ****
  result.  The following information and conditions are provided by the
  analysis:
  
!    * 'assumptions': If this condition is false, the rest of the
       information is invalid.
!    * 'noloop_assumptions' on RTL, 'may_be_zero' on GIMPLE: If this
       condition is true, the loop exits in the first iteration.
!    * 'infinite': If this condition is true, the loop is infinite.  This
       condition is only available on RTL.  On GIMPLE, conditions for
!      finiteness of the loop are included in 'assumptions'.
!    * 'niter_expr' on RTL, 'niter' on GIMPLE: The expression that gives
       number of iterations.  The number of iterations is defined as the
       number of executions of the loop latch.
  
   Both on GIMPLE and on RTL, it necessary for the induction variable
  analysis framework to be initialized (SCEV on GIMPLE, loop-iv on RTL).
! On GIMPLE, the results are stored to 'struct tree_niter_desc' structure.
  Number of iterations before the loop is exited through a given exit can
! be determined using 'number_of_iterations_exit' function.  On RTL, the
! results are returned in 'struct niter_desc' structure.  The
! corresponding function is named 'check_simple_exit'.  There are also
  functions that pass through all the exits of a loop and try to find one
! with easy to determine number of iterations - 'find_loop_niter' on
! GIMPLE and 'find_simple_exit' on RTL.  Finally, there are functions that
  provide the same information, but additionally cache it, so that
  repeated calls to number of iterations are not so costly -
! 'number_of_latch_executions' on GIMPLE and 'get_simple_loop_desc' on
  RTL.
  
   Note that some of these functions may behave slightly differently than
  others - some of them return only the expression for the number of
  iterations, and fail if there are some assumptions.  The function
! 'number_of_latch_executions' works only for single-exit loops.  The
! function 'number_of_cond_exit_executions' can be used to determine
  number of executions of the exit condition of a single-exit loop (i.e.,
! the 'number_of_latch_executions' increased by one).
  
   On GIMPLE, below constraint flags affect semantics of some APIs of
  number of iterations analyzer:
  
!    * 'LOOP_C_INFINITE': If this constraint flag is set, the loop is
!      known to be infinite.  APIs like 'number_of_iterations_exit' can
       return false directly without doing any analysis.
!    * 'LOOP_C_FINITE': If this constraint flag is set, the loop is known
       to be finite, in other words, loop's number of iterations can be
!      computed with 'assumptions' be true.
  
   Generally, the constraint flags are set/cleared by consumers which are
  loop optimizers.  It's also the consumers' responsibility to set/clear
  constraints correctly.  Failing to do that might result in hard to track
  down bugs in scev/niter consumers.  One typical use case is vectorizer:
! it drives number of iterations analyzer by setting 'LOOP_C_FINITE' and
  vectorizes possibly infinite loop by versioning loop with analysis
  result.  In return, constraints set by consumers can also help number of
! iterations analyzer in following optimizers.  For example, 'niter' of a
! loop versioned under 'assumptions' is valid unconditionally.
  
   Other constraints may be added in the future, for example, a constraint
! indicating that loops' latch must roll thus 'may_be_zero' would be false
  unconditionally.
  
  
--- 22490,22551 ----
  result.  The following information and conditions are provided by the
  analysis:
  
!    â€¢ â€˜assumptionsâ€™: If this condition is false, the rest of the
       information is invalid.
!    â€¢ â€˜noloop_assumptionsâ€™ on RTL, â€˜may_be_zeroâ€™ on GIMPLE: If this
       condition is true, the loop exits in the first iteration.
!    â€¢ â€˜infiniteâ€™: If this condition is true, the loop is infinite.  This
       condition is only available on RTL.  On GIMPLE, conditions for
!      finiteness of the loop are included in â€˜assumptionsâ€™.
!    â€¢ â€˜niter_exprâ€™ on RTL, â€˜niterâ€™ on GIMPLE: The expression that gives
       number of iterations.  The number of iterations is defined as the
       number of executions of the loop latch.
  
   Both on GIMPLE and on RTL, it necessary for the induction variable
  analysis framework to be initialized (SCEV on GIMPLE, loop-iv on RTL).
! On GIMPLE, the results are stored to â€˜struct tree_niter_descâ€™ structure.
  Number of iterations before the loop is exited through a given exit can
! be determined using â€˜number_of_iterations_exitâ€™ function.  On RTL, the
! results are returned in â€˜struct niter_descâ€™ structure.  The
! corresponding function is named â€˜check_simple_exitâ€™.  There are also
  functions that pass through all the exits of a loop and try to find one
! with easy to determine number of iterations - â€˜find_loop_niterâ€™ on
! GIMPLE and â€˜find_simple_exitâ€™ on RTL.  Finally, there are functions that
  provide the same information, but additionally cache it, so that
  repeated calls to number of iterations are not so costly -
! â€˜number_of_latch_executionsâ€™ on GIMPLE and â€˜get_simple_loop_descâ€™ on
  RTL.
  
   Note that some of these functions may behave slightly differently than
  others - some of them return only the expression for the number of
  iterations, and fail if there are some assumptions.  The function
! â€˜number_of_latch_executionsâ€™ works only for single-exit loops.  The
! function â€˜number_of_cond_exit_executionsâ€™ can be used to determine
  number of executions of the exit condition of a single-exit loop (i.e.,
! the â€˜number_of_latch_executionsâ€™ increased by one).
  
   On GIMPLE, below constraint flags affect semantics of some APIs of
  number of iterations analyzer:
  
!    â€¢ â€˜LOOP_C_INFINITEâ€™: If this constraint flag is set, the loop is
!      known to be infinite.  APIs like â€˜number_of_iterations_exitâ€™ can
       return false directly without doing any analysis.
!    â€¢ â€˜LOOP_C_FINITEâ€™: If this constraint flag is set, the loop is known
       to be finite, in other words, loop's number of iterations can be
!      computed with â€˜assumptionsâ€™ be true.
  
   Generally, the constraint flags are set/cleared by consumers which are
  loop optimizers.  It's also the consumers' responsibility to set/clear
  constraints correctly.  Failing to do that might result in hard to track
  down bugs in scev/niter consumers.  One typical use case is vectorizer:
! it drives number of iterations analyzer by setting â€˜LOOP_C_FINITEâ€™ and
  vectorizes possibly infinite loop by versioning loop with analysis
  result.  In return, constraints set by consumers can also help number of
! iterations analyzer in following optimizers.  For example, â€˜niterâ€™ of a
! loop versioned under â€˜assumptionsâ€™ is valid unconditionally.
  
   Other constraints may be added in the future, for example, a constraint
! indicating that loops' latch must roll thus â€˜may_be_zeroâ€™ would be false
  unconditionally.
  
  
*************** File: gccint.info,  Node: Dependency ana
*** 22551,22570 ****
  =============================
  
  The code for the data dependence analysis can be found in
! 'tree-data-ref.cc' and its interface and data structures are described
! in 'tree-data-ref.h'.  The function that computes the data dependences
  for all the array and pointer references for a given loop is
! 'compute_data_dependences_for_loop'.  This function is currently used by
  the linear loop transform and the vectorization passes.  Before calling
  this function, one has to allocate two vectors: a first vector will
  contain the set of data references that are contained in the analyzed
  loop body, and the second vector will contain the dependence relations
  between the data references.  Thus if the vector of data references is
! of size 'n', the vector containing the dependence relations will contain
! 'n*n' elements.  However if the analyzed loop contains side effects,
  such as calls that potentially can interfere with the data references in
  the current analyzed loop, the analysis stops while scanning the loop
! body for data references, and inserts a single 'chrec_dont_know' in the
  dependence relation array.
  
   The data references are discovered in a particular order during the
--- 22555,22574 ----
  =============================
  
  The code for the data dependence analysis can be found in
! â€˜tree-data-ref.ccâ€™ and its interface and data structures are described
! in â€˜tree-data-ref.hâ€™.  The function that computes the data dependences
  for all the array and pointer references for a given loop is
! â€˜compute_data_dependences_for_loopâ€™.  This function is currently used by
  the linear loop transform and the vectorization passes.  Before calling
  this function, one has to allocate two vectors: a first vector will
  contain the set of data references that are contained in the analyzed
  loop body, and the second vector will contain the dependence relations
  between the data references.  Thus if the vector of data references is
! of size â€˜nâ€™, the vector containing the dependence relations will contain
! â€˜n*nâ€™ elements.  However if the analyzed loop contains side effects,
  such as calls that potentially can interfere with the data references in
  the current analyzed loop, the analysis stops while scanning the loop
! body for data references, and inserts a single â€˜chrec_dont_knowâ€™ in the
  dependence relation array.
  
   The data references are discovered in a particular order during the
*************** queries to the loop body representation.
*** 22578,22597 ****
  
   Three types of data references are currently handled: ARRAY_REF,
  INDIRECT_REF and COMPONENT_REF.  The data structure for the data
! reference is 'data_reference', where 'data_reference_p' is a name of a
  pointer to the data reference structure.  The structure contains the
  following elements:
  
!    * 'base_object_info': Provides information about the base object of
       the data reference and its access functions.  These access
       functions represent the evolution of the data reference in the loop
       relative to its base, in keeping with the classical meaning of the
       data reference access function for the support of arrays.  For
!      example, for a reference 'a.b[i][j]', the base object is 'a.b' and
!      the access functions, one for each array subscript, are: '{i_init,
!      + i_step}_1, {j_init, +, j_step}_2'.
  
!    * 'first_location_in_loop': Provides information about the first
       location accessed by the data reference in the loop and about the
       access function used to represent evolution relative to this
       location.  This data is used to support pointers, and is not used
--- 22582,22601 ----
  
   Three types of data references are currently handled: ARRAY_REF,
  INDIRECT_REF and COMPONENT_REF.  The data structure for the data
! reference is â€˜data_referenceâ€™, where â€˜data_reference_pâ€™ is a name of a
  pointer to the data reference structure.  The structure contains the
  following elements:
  
!    â€¢ â€˜base_object_infoâ€™: Provides information about the base object of
       the data reference and its access functions.  These access
       functions represent the evolution of the data reference in the loop
       relative to its base, in keeping with the classical meaning of the
       data reference access function for the support of arrays.  For
!      example, for a reference â€˜a.b[i][j]â€™, the base object is â€˜a.bâ€™ and
!      the access functions, one for each array subscript, are: â€˜{i_init,
!      + i_step}_1, {j_init, +, j_step}_2â€™.
  
!    â€¢ â€˜first_location_in_loopâ€™: Provides information about the first
       location accessed by the data reference in the loop and about the
       access function used to represent evolution relative to this
       location.  This data is used to support pointers, and is not used
*************** following elements:
*** 22603,22612 ****
                     for2 j
                      *((int *)p + i + j) = a[i][j];
  
!      The access function of the pointer access is '{0, + 4B}_for2'
!      relative to 'p + i'.  The access functions of the array are
!      '{i_init, + i_step}_for1' and '{j_init, +, j_step}_for2' relative
!      to 'a'.
  
       Usually, the object the pointer refers to is either unknown, or we
       cannot prove that the access is confined to the boundaries of a
--- 22607,22616 ----
                     for2 j
                      *((int *)p + i + j) = a[i][j];
  
!      The access function of the pointer access is â€˜{0, + 4B}_for2â€™
!      relative to â€˜p + iâ€™.  The access functions of the array are
!      â€˜{i_init, + i_step}_for1â€™ and â€˜{j_init, +, j_step}_for2â€™ relative
!      to â€˜aâ€™.
  
       Usually, the object the pointer refers to is either unknown, or we
       cannot prove that the access is confined to the boundaries of a
*************** following elements:
*** 22617,22666 ****
       references.
  
       The current strategy for data dependence tests is as follows: If
!      both 'a' and 'b' are represented as arrays, compare 'a.base_object'
!      and 'b.base_object'; if they are equal, apply dependence tests (use
!      access functions based on base_objects).  Else if both 'a' and 'b'
!      are represented as pointers, compare 'a.first_location' and
!      'b.first_location'; if they are equal, apply dependence tests (use
!      access functions based on first location).  However, if 'a' and 'b'
       are represented differently, only try to prove that the bases are
       definitely different.
  
!    * Aliasing information.
!    * Alignment information.
  
   The structure describing the relation between two data references is
! 'data_dependence_relation' and the shorter name for a pointer to such a
! structure is 'ddr_p'.  This structure contains:
  
!    * a pointer to each data reference,
!    * a tree node 'are_dependent' that is set to 'chrec_known' if the
       analysis has proved that there is no dependence between these two
!      data references, 'chrec_dont_know' if the analysis was not able to
       determine any useful result and potentially there could exist a
!      dependence between these data references, and 'are_dependent' is
!      set to 'NULL_TREE' if there exist a dependence relation between the
       data references, and the description of this dependence relation is
!      given in the 'subscripts', 'dir_vects', and 'dist_vects' arrays,
!    * a boolean that determines whether the dependence relation can be
       represented by a classical distance vector,
!    * an array 'subscripts' that contains a description of each subscript
       of the data references.  Given two array accesses a subscript is
       the tuple composed of the access functions for a given dimension.
!      For example, given 'A[f1][f2][f3]' and 'B[g1][g2][g3]', there are
!      three subscripts: '(f1, g1), (f2, g2), (f3, g3)'.
!    * two arrays 'dir_vects' and 'dist_vects' that contain classical
       representations of the data dependences under the form of direction
       and distance dependence vectors,
!    * an array of loops 'loop_nest' that contains the loops to which the
       distance and direction vectors refer to.
  
   Several functions for pretty printing the information extracted by the
! data dependence analysis are available: 'dump_ddrs' prints with a
  maximum verbosity the details of a data dependence relations array,
! 'dump_dist_dir_vectors' prints only the classical distance and direction
  vectors for a data dependence relations array, and
! 'dump_data_references' prints the details of the data references
  contained in a data reference array.
  
  
--- 22621,22670 ----
       references.
  
       The current strategy for data dependence tests is as follows: If
!      both â€˜aâ€™ and â€˜bâ€™ are represented as arrays, compare â€˜a.base_objectâ€™
!      and â€˜b.base_objectâ€™; if they are equal, apply dependence tests (use
!      access functions based on base_objects).  Else if both â€˜aâ€™ and â€˜bâ€™
!      are represented as pointers, compare â€˜a.first_locationâ€™ and
!      â€˜b.first_locationâ€™; if they are equal, apply dependence tests (use
!      access functions based on first location).  However, if â€˜aâ€™ and â€˜bâ€™
       are represented differently, only try to prove that the bases are
       definitely different.
  
!    â€¢ Aliasing information.
!    â€¢ Alignment information.
  
   The structure describing the relation between two data references is
! â€˜data_dependence_relationâ€™ and the shorter name for a pointer to such a
! structure is â€˜ddr_pâ€™.  This structure contains:
  
!    â€¢ a pointer to each data reference,
!    â€¢ a tree node â€˜are_dependentâ€™ that is set to â€˜chrec_knownâ€™ if the
       analysis has proved that there is no dependence between these two
!      data references, â€˜chrec_dont_knowâ€™ if the analysis was not able to
       determine any useful result and potentially there could exist a
!      dependence between these data references, and â€˜are_dependentâ€™ is
!      set to â€˜NULL_TREEâ€™ if there exist a dependence relation between the
       data references, and the description of this dependence relation is
!      given in the â€˜subscriptsâ€™, â€˜dir_vectsâ€™, and â€˜dist_vectsâ€™ arrays,
!    â€¢ a boolean that determines whether the dependence relation can be
       represented by a classical distance vector,
!    â€¢ an array â€˜subscriptsâ€™ that contains a description of each subscript
       of the data references.  Given two array accesses a subscript is
       the tuple composed of the access functions for a given dimension.
!      For example, given â€˜A[f1][f2][f3]â€™ and â€˜B[g1][g2][g3]â€™, there are
!      three subscripts: â€˜(f1, g1), (f2, g2), (f3, g3)â€™.
!    â€¢ two arrays â€˜dir_vectsâ€™ and â€˜dist_vectsâ€™ that contain classical
       representations of the data dependences under the form of direction
       and distance dependence vectors,
!    â€¢ an array of loops â€˜loop_nestâ€™ that contains the loops to which the
       distance and direction vectors refer to.
  
   Several functions for pretty printing the information extracted by the
! data dependence analysis are available: â€˜dump_ddrsâ€™ prints with a
  maximum verbosity the details of a data dependence relations array,
! â€˜dump_dist_dir_vectorsâ€™ prints only the classical distance and direction
  vectors for a data dependence relations array, and
! â€˜dump_data_referencesâ€™ prints the details of the data references
  contained in a data reference array.
  
  
*************** File: gccint.info,  Node: Machine Desc,
*** 22670,22678 ****
  ***********************
  
  A machine description has two parts: a file of instruction patterns
! ('.md' file) and a C header file of macro definitions.
  
!  The '.md' file for a target machine contains a pattern for each
  instruction that the target machine supports (or at least each
  instruction that is worth telling the compiler about).  It may also
  contain comments.  A semicolon causes the rest of the line to be a
--- 22674,22682 ----
  ***********************
  
  A machine description has two parts: a file of instruction patterns
! (â€˜.mdâ€™ file) and a C header file of macro definitions.
  
!  The â€˜.mdâ€™ file for a target machine contains a pattern for each
  instruction that the target machine supports (or at least each
  instruction that is worth telling the compiler about).  It may also
  contain comments.  A semicolon causes the rest of the line to be a
*************** comment, unless the semicolon is inside
*** 22684,22690 ****
  
  * Overview::            How the machine description is used.
  * Patterns::            How to write instruction patterns.
! * Example::             An explained example of a 'define_insn' pattern.
  * RTL Template::        The RTL template defines what insns match a pattern.
  * Output Template::     The output template says how to make assembler code
                          from such an insn.
--- 22688,22694 ----
  
  * Overview::            How the machine description is used.
  * Patterns::            How to write instruction patterns.
! * Example::             An explained example of a â€˜define_insnâ€™ pattern.
  * RTL Template::        The RTL template defines what insns match a pattern.
  * Output Template::     The output template says how to make assembler code
                          from such an insn.
*************** comment, unless the semicolon is inside
*** 22706,22714 ****
  * Including Patterns::  Including Patterns in Machine Descriptions.
  * Peephole Definitions::Defining machine-specific peephole optimizations.
  * Insn Attributes::     Specifying the value of attributes for generated insns.
! * Conditional Execution::Generating 'define_insn' patterns for
                           predication.
! * Define Subst::	Generating 'define_insn' and 'define_expand'
  			patterns from other patterns.
  * Constant Definitions::Defining symbolic constants that can be used in the
                          md file.
--- 22710,22718 ----
  * Including Patterns::  Including Patterns in Machine Descriptions.
  * Peephole Definitions::Defining machine-specific peephole optimizations.
  * Insn Attributes::     Specifying the value of attributes for generated insns.
! * Conditional Execution::Generating â€˜define_insnâ€™ patterns for
                           predication.
! * Define Subst::	Generating â€˜define_insnâ€™ and â€˜define_expandâ€™
  			patterns from other patterns.
  * Constant Definitions::Defining symbolic constants that can be used in the
                          md file.
*************** There are three main conversions that ha
*** 22731,22737 ****
       assembler code.
  
   For the generate pass, only the names of the insns matter, from either
! a named 'define_insn' or a 'define_expand'.  The compiler will choose
  the pattern with the right name and apply the operands according to the
  documentation later in this chapter, without regard for the RTL template
  or operand constraints.  Note that the names the compiler looks for are
--- 22735,22741 ----
       assembler code.
  
   For the generate pass, only the names of the insns matter, from either
! a named â€˜define_insnâ€™ or a â€˜define_expandâ€™.  The compiler will choose
  the pattern with the right name and apply the operands according to the
  documentation later in this chapter, without regard for the RTL template
  or operand constraints.  Note that the names the compiler looks for are
*************** hard-coded in the compiler--it will igno
*** 22739,22760 ****
  with names it doesn't know about, but if you don't provide a named
  pattern it needs, it will abort.
  
!  If a 'define_insn' is used, the template given is inserted into the
! insn list.  If a 'define_expand' is used, one of three things happens,
  based on the condition logic.  The condition logic may manually create
! new insns for the insn list, say via 'emit_insn()', and invoke 'DONE'.
! For certain named patterns, it may invoke 'FAIL' to tell the compiler to
  use an alternate way of performing that task.  If it invokes neither
! 'DONE' nor 'FAIL', the template given in the pattern is inserted, as if
! the 'define_expand' were a 'define_insn'.
  
   Once the insn list is generated, various optimization passes convert,
  replace, and rearrange the insns in the insn list.  This is where the
! 'define_split' and 'define_peephole' patterns get used, for example.
  
   Finally, the insn list's RTL is matched up with the RTL templates in
! the 'define_insn' patterns, and those patterns are used to emit the
! final assembly code.  For this purpose, each named 'define_insn' acts
  like it's unnamed, since the names are ignored.
  
  
--- 22743,22764 ----
  with names it doesn't know about, but if you don't provide a named
  pattern it needs, it will abort.
  
!  If a â€˜define_insnâ€™ is used, the template given is inserted into the
! insn list.  If a â€˜define_expandâ€™ is used, one of three things happens,
  based on the condition logic.  The condition logic may manually create
! new insns for the insn list, say via â€˜emit_insn()â€™, and invoke â€˜DONEâ€™.
! For certain named patterns, it may invoke â€˜FAILâ€™ to tell the compiler to
  use an alternate way of performing that task.  If it invokes neither
! â€˜DONEâ€™ nor â€˜FAILâ€™, the template given in the pattern is inserted, as if
! the â€˜define_expandâ€™ were a â€˜define_insnâ€™.
  
   Once the insn list is generated, various optimization passes convert,
  replace, and rearrange the insns in the insn list.  This is where the
! â€˜define_splitâ€™ and â€˜define_peepholeâ€™ patterns get used, for example.
  
   Finally, the insn list's RTL is matched up with the RTL templates in
! the â€˜define_insnâ€™ patterns, and those patterns are used to emit the
! final assembly code.  For this purpose, each named â€˜define_insnâ€™ acts
  like it's unnamed, since the names are ignored.
  
  
*************** File: gccint.info,  Node: Patterns,  Nex
*** 22763,22782 ****
  16.2 Everything about Instruction Patterns
  ==========================================
  
! A 'define_insn' expression is used to define instruction patterns to
! which insns may be matched.  A 'define_insn' expression contains an
  incomplete RTL expression, with pieces to be filled in later, operand
  constraints that restrict how the pieces can be filled in, and an output
  template or C code to generate the assembler output.
  
!  A 'define_insn' is an RTL expression containing four or five operands:
  
    1. An optional name N.  When a name is present, the compiler
!      automically generates a C++ function 'gen_N' that takes the
       operands of the instruction as arguments and returns the
       instruction's rtx pattern.  The compiler also assigns the
!      instruction a unique code 'CODE_FOR_N', with all such codes
!      belonging to an enum called 'insn_code'.
  
       These names serve one of two purposes.  The first is to indicate
       that the instruction performs a certain standard job for the
--- 22767,22786 ----
  16.2 Everything about Instruction Patterns
  ==========================================
  
! A â€˜define_insnâ€™ expression is used to define instruction patterns to
! which insns may be matched.  A â€˜define_insnâ€™ expression contains an
  incomplete RTL expression, with pieces to be filled in later, operand
  constraints that restrict how the pieces can be filled in, and an output
  template or C code to generate the assembler output.
  
!  A â€˜define_insnâ€™ is an RTL expression containing four or five operands:
  
    1. An optional name N.  When a name is present, the compiler
!      automically generates a C++ function â€˜gen_Nâ€™ that takes the
       operands of the instruction as arguments and returns the
       instruction's rtx pattern.  The compiler also assigns the
!      instruction a unique code â€˜CODE_FOR_Nâ€™, with all such codes
!      belonging to an enum called â€˜insn_codeâ€™.
  
       These names serve one of two purposes.  The first is to indicate
       that the instruction performs a certain standard job for the
*************** template or C code to generate the assem
*** 22794,22822 ****
       to be combined later on.
  
       For the purpose of debugging the compiler, you may also specify a
!      name beginning with the '*' character.  Such a name is used only
       for identifying the instruction in RTL dumps; it is equivalent to
       having a nameless pattern for all other purposes.  Names beginning
!      with the '*' character are not required to be unique.
  
!      The name may also have the form '@N'.  This has the same effect as
!      a name 'N', but in addition tells the compiler to generate further
       helper functions; see *note Parameterized Names:: for details.
  
!   2. The "RTL template": This is a vector of incomplete RTL expressions
       which describe the semantics of the instruction (*note RTL
       Template::).  It is incomplete because it may contain
!      'match_operand', 'match_operator', and 'match_dup' expressions that
       stand for operands of the instruction.
  
       If the vector has multiple elements, the RTL template is treated as
!      a 'parallel' expression.
  
    3. The condition: This is a string which contains a C expression.
       When the compiler attempts to match RTL against a pattern, the
!      condition is evaluated.  If the condition evaluates to 'true', the
       match is permitted.  The condition may be an empty string, which is
!      treated as always 'true'.
  
       For a named pattern, the condition may not depend on the data in
       the insn being matched, but only the target-machine-type flags.
--- 22798,22826 ----
       to be combined later on.
  
       For the purpose of debugging the compiler, you may also specify a
!      name beginning with the â€˜*â€™ character.  Such a name is used only
       for identifying the instruction in RTL dumps; it is equivalent to
       having a nameless pattern for all other purposes.  Names beginning
!      with the â€˜*â€™ character are not required to be unique.
  
!      The name may also have the form â€˜@Nâ€™.  This has the same effect as
!      a name â€˜Nâ€™, but in addition tells the compiler to generate further
       helper functions; see *note Parameterized Names:: for details.
  
!   2. The â€œRTL templateâ€�: This is a vector of incomplete RTL expressions
       which describe the semantics of the instruction (*note RTL
       Template::).  It is incomplete because it may contain
!      â€˜match_operandâ€™, â€˜match_operatorâ€™, and â€˜match_dupâ€™ expressions that
       stand for operands of the instruction.
  
       If the vector has multiple elements, the RTL template is treated as
!      a â€˜parallelâ€™ expression.
  
    3. The condition: This is a string which contains a C expression.
       When the compiler attempts to match RTL against a pattern, the
!      condition is evaluated.  If the condition evaluates to â€˜trueâ€™, the
       match is permitted.  The condition may be an empty string, which is
!      treated as always â€˜trueâ€™.
  
       For a named pattern, the condition may not depend on the data in
       the insn being matched, but only the target-machine-type flags.
*************** template or C code to generate the assem
*** 22827,22839 ****
       For nameless patterns, the condition is applied only when matching
       an individual insn, and only after the insn has matched the
       pattern's recognition template.  The insn's operands may be found
!      in the vector 'operands'.
  
       An instruction condition cannot become more restrictive as
       compilation progresses.  If the condition accepts a particular RTL
       instruction at one stage of compilation, it must continue to accept
       that instruction until the final pass.  For example,
!      '!reload_completed' and 'can_create_pseudo_p ()' are both invalid
       instruction conditions, because they are true during the earlier
       RTL passes and false during the later ones.  For the same reason,
       if a condition accepts an instruction before register allocation,
--- 22831,22843 ----
       For nameless patterns, the condition is applied only when matching
       an individual insn, and only after the insn has matched the
       pattern's recognition template.  The insn's operands may be found
!      in the vector â€˜operandsâ€™.
  
       An instruction condition cannot become more restrictive as
       compilation progresses.  If the condition accepts a particular RTL
       instruction at one stage of compilation, it must continue to accept
       that instruction until the final pass.  For example,
!      â€˜!reload_completedâ€™ and â€˜can_create_pseudo_p ()â€™ are both invalid
       instruction conditions, because they are true during the earlier
       RTL passes and false during the later ones.  For the same reason,
       if a condition accepts an instruction before register allocation,
*************** template or C code to generate the assem
*** 22843,22865 ****
       Although a condition cannot become more restrictive as compilation
       progresses, the condition for a nameless pattern _can_ become more
       permissive.  For example, a nameless instruction can require
!      'reload_completed' to be true, in which case it only matches after
       register allocation.
  
!   4. The "output template" or "output statement": This is either a
       string, or a fragment of C code which returns a string.
  
       When simple substitution isn't general enough, you can specify a
       piece of C code to compute the output.  *Note Output Statement::.
  
!   5. The "insn attributes": This is an optional vector containing the
       values of attributes for insns matching this pattern (*note Insn
       Attributes::).
  
  
  File: gccint.info,  Node: Example,  Next: RTL Template,  Prev: Patterns,  Up: Machine Desc
  
! 16.3 Example of 'define_insn'
  =============================
  
  Here is an example of an instruction pattern, taken from the machine
--- 22847,22869 ----
       Although a condition cannot become more restrictive as compilation
       progresses, the condition for a nameless pattern _can_ become more
       permissive.  For example, a nameless instruction can require
!      â€˜reload_completedâ€™ to be true, in which case it only matches after
       register allocation.
  
!   4. The â€œoutput templateâ€� or â€œoutput statementâ€�: This is either a
       string, or a fragment of C code which returns a string.
  
       When simple substitution isn't general enough, you can specify a
       piece of C code to compute the output.  *Note Output Statement::.
  
!   5. The â€œinsn attributesâ€�: This is an optional vector containing the
       values of attributes for insns matching this pattern (*note Insn
       Attributes::).
  
  
  File: gccint.info,  Node: Example,  Next: RTL Template,  Prev: Patterns,  Up: Machine Desc
  
! 16.3 Example of â€˜define_insnâ€™
  =============================
  
  Here is an example of an instruction pattern, taken from the machine
*************** This can also be written using braced st
*** 22891,22897 ****
   This describes an instruction which sets the condition codes based on
  the value of a general operand.  It has no condition, so any insn with
  an RTL description of the form shown may be matched to this pattern.
! The name 'tstsi' means "test a 'SImode' value" and tells the RTL
  generation pass that, when it is necessary to test such a value, an insn
  to do so can be constructed using this pattern.
  
--- 22895,22901 ----
   This describes an instruction which sets the condition codes based on
  the value of a general operand.  It has no condition, so any insn with
  an RTL description of the form shown may be matched to this pattern.
! The name â€˜tstsiâ€™ means "test a â€˜SImodeâ€™ value" and tells the RTL
  generation pass that, when it is necessary to test such a value, an insn
  to do so can be constructed using this pattern.
  
*************** to do so can be constructed using this p
*** 22899,22905 ****
  output template to return based on the kind of operand and the specific
  type of CPU for which code is being generated.
  
!  '"rm"' is an operand constraint.  Its meaning is explained below.
  
  
  File: gccint.info,  Node: RTL Template,  Next: Output Template,  Prev: Example,  Up: Machine Desc
--- 22903,22909 ----
  output template to return based on the kind of operand and the specific
  type of CPU for which code is being generated.
  
!  â€˜"rm"â€™ is an operand constraint.  Its meaning is explained below.
  
  
  File: gccint.info,  Node: RTL Template,  Next: Output Template,  Prev: Example,  Up: Machine Desc
*************** the operands in the insn being matched.
*** 22917,22923 ****
  controlled by special expression types that direct matching and
  substitution of the operands.
  
! '(match_operand:M N PREDICATE CONSTRAINT)'
       This expression is a placeholder for operand number N of the insn.
       When constructing an insn, operand number N will be substituted at
       this point.  When matching an insn, whatever appears at this
--- 22921,22927 ----
  controlled by special expression types that direct matching and
  substitution of the operands.
  
! â€˜(match_operand:M N PREDICATE CONSTRAINT)â€™
       This expression is a placeholder for operand number N of the insn.
       When constructing an insn, operand number N will be substituted at
       this point.  When matching an insn, whatever appears at this
*************** substitution of the operands.
*** 22926,22953 ****
       all.
  
       Operand numbers must be chosen consecutively counting from zero in
!      each instruction pattern.  There may be only one 'match_operand'
       expression in the pattern for each operand number.  Usually
!      operands are numbered in the order of appearance in 'match_operand'
!      expressions.  In the case of a 'define_expand', any operand numbers
!      used only in 'match_dup' expressions have higher values than all
       other operand numbers.
  
       PREDICATE is a string that is the name of a function that accepts
       two arguments, an expression and a machine mode.  *Note
       Predicates::.  During matching, the function will be called with
       the putative operand as the expression and M as the mode argument
!      (if M is not specified, 'VOIDmode' will be used, which normally
       causes PREDICATE to accept any mode).  If it returns zero, this
       instruction pattern fails to match.  PREDICATE may be an empty
       string; then it means no test is to be done on the operand, so
       anything which occurs in this position is valid.
  
       Most of the time, PREDICATE will reject modes other than M--but not
!      always.  For example, the predicate 'address_operand' uses M as the
       mode of memory ref that the address should be valid for.  Many
!      predicates accept 'const_int' nodes even though their mode is
!      'VOIDmode'.
  
       CONSTRAINT controls reloading and the choice of the best register
       class to use for a value, as explained later (*note Constraints::).
--- 22930,22957 ----
       all.
  
       Operand numbers must be chosen consecutively counting from zero in
!      each instruction pattern.  There may be only one â€˜match_operandâ€™
       expression in the pattern for each operand number.  Usually
!      operands are numbered in the order of appearance in â€˜match_operandâ€™
!      expressions.  In the case of a â€˜define_expandâ€™, any operand numbers
!      used only in â€˜match_dupâ€™ expressions have higher values than all
       other operand numbers.
  
       PREDICATE is a string that is the name of a function that accepts
       two arguments, an expression and a machine mode.  *Note
       Predicates::.  During matching, the function will be called with
       the putative operand as the expression and M as the mode argument
!      (if M is not specified, â€˜VOIDmodeâ€™ will be used, which normally
       causes PREDICATE to accept any mode).  If it returns zero, this
       instruction pattern fails to match.  PREDICATE may be an empty
       string; then it means no test is to be done on the operand, so
       anything which occurs in this position is valid.
  
       Most of the time, PREDICATE will reject modes other than M--but not
!      always.  For example, the predicate â€˜address_operandâ€™ uses M as the
       mode of memory ref that the address should be valid for.  Many
!      predicates accept â€˜const_intâ€™ nodes even though their mode is
!      â€˜VOIDmodeâ€™.
  
       CONSTRAINT controls reloading and the choice of the best register
       class to use for a value, as explained later (*note Constraints::).
*************** substitution of the operands.
*** 22959,23002 ****
       decision; instead, it controls various decisions in the case of an
       insn which does match.
  
! '(match_scratch:M N CONSTRAINT)'
       This expression is also a placeholder for operand number N and
!      indicates that operand must be a 'scratch' or 'reg' expression.
  
       When matching patterns, this is equivalent to
  
            (match_operand:M N "scratch_operand" CONSTRAINT)
  
!      but, when generating RTL, it produces a ('scratch':M) expression.
  
!      If the last few expressions in a 'parallel' are 'clobber'
       expressions whose operands are either a hard register or
!      'match_scratch', the combiner can add or delete them when
       necessary.  *Note Side Effects::.
  
! '(match_dup N)'
       This expression is also a placeholder for operand number N.  It is
       used when the operand needs to appear more than once in the insn.
  
!      In construction, 'match_dup' acts just like 'match_operand': the
       operand is substituted into the insn being constructed.  But in
!      matching, 'match_dup' behaves differently.  It assumes that operand
!      number N has already been determined by a 'match_operand' appearing
       earlier in the recognition template, and it matches only an
       identical-looking expression.
  
!      Note that 'match_dup' should not be used to tell the compiler that
       a particular register is being used for two operands (example:
!      'add' that adds one register to another; the second register is
       both an input operand and the output operand).  Use a matching
!      constraint (*note Simple Constraints::) for those.  'match_dup' is
       for the cases where one operand is used in two places in the
       template, such as an instruction that computes both a quotient and
       a remainder, where the opcode takes two input operands but the RTL
       template has to refer to each of those twice; once for the quotient
       pattern and once for the remainder pattern.
  
! '(match_operator:M N PREDICATE [OPERANDS...])'
       This pattern is a kind of placeholder for a variable RTL expression
       code.
  
--- 22963,23006 ----
       decision; instead, it controls various decisions in the case of an
       insn which does match.
  
! â€˜(match_scratch:M N CONSTRAINT)â€™
       This expression is also a placeholder for operand number N and
!      indicates that operand must be a â€˜scratchâ€™ or â€˜regâ€™ expression.
  
       When matching patterns, this is equivalent to
  
            (match_operand:M N "scratch_operand" CONSTRAINT)
  
!      but, when generating RTL, it produces a (â€˜scratchâ€™:M) expression.
  
!      If the last few expressions in a â€˜parallelâ€™ are â€˜clobberâ€™
       expressions whose operands are either a hard register or
!      â€˜match_scratchâ€™, the combiner can add or delete them when
       necessary.  *Note Side Effects::.
  
! â€˜(match_dup N)â€™
       This expression is also a placeholder for operand number N.  It is
       used when the operand needs to appear more than once in the insn.
  
!      In construction, â€˜match_dupâ€™ acts just like â€˜match_operandâ€™: the
       operand is substituted into the insn being constructed.  But in
!      matching, â€˜match_dupâ€™ behaves differently.  It assumes that operand
!      number N has already been determined by a â€˜match_operandâ€™ appearing
       earlier in the recognition template, and it matches only an
       identical-looking expression.
  
!      Note that â€˜match_dupâ€™ should not be used to tell the compiler that
       a particular register is being used for two operands (example:
!      â€˜addâ€™ that adds one register to another; the second register is
       both an input operand and the output operand).  Use a matching
!      constraint (*note Simple Constraints::) for those.  â€˜match_dupâ€™ is
       for the cases where one operand is used in two places in the
       template, such as an instruction that computes both a quotient and
       a remainder, where the opcode takes two input operands but the RTL
       template has to refer to each of those twice; once for the quotient
       pattern and once for the remainder pattern.
  
! â€˜(match_operator:M N PREDICATE [OPERANDS...])â€™
       This pattern is a kind of placeholder for a variable RTL expression
       code.
  
*************** substitution of the operands.
*** 23008,23014 ****
       function PREDICATE returns nonzero on that expression _and_ the
       patterns OPERANDS match the operands of the expression.
  
!      Suppose that the function 'commutative_operator' is defined as
       follows, to match any expression whose operator is one of the
       commutative arithmetic operators of RTL and whose mode is MODE:
  
--- 23012,23018 ----
       function PREDICATE returns nonzero on that expression _and_ the
       patterns OPERANDS match the operands of the expression.
  
!      Suppose that the function â€˜commutative_operatorâ€™ is defined as
       follows, to match any expression whose operator is one of the
       commutative arithmetic operators of RTL and whose mode is MODE:
  
*************** substitution of the operands.
*** 23031,23047 ****
              [(match_operand:SI 1 "general_operand" "g")
               (match_operand:SI 2 "general_operand" "g")])
  
!      Here the vector '[OPERANDS...]' contains two patterns because the
       expressions to be matched all contain two operands.
  
       When this pattern does match, the two operands of the commutative
       operator are recorded as operands 1 and 2 of the insn.  (This is
!      done by the two instances of 'match_operand'.)  Operand 3 of the
!      insn will be the entire commutative expression: use 'GET_CODE
!      (operands[3])' to see which commutative operator was used.
  
!      The machine mode M of 'match_operator' works like that of
!      'match_operand': it is passed as the second argument to the
       predicate function, and that function is solely responsible for
       deciding whether the expression to be matched "has" that mode.
  
--- 23035,23051 ----
              [(match_operand:SI 1 "general_operand" "g")
               (match_operand:SI 2 "general_operand" "g")])
  
!      Here the vector â€˜[OPERANDS...]â€™ contains two patterns because the
       expressions to be matched all contain two operands.
  
       When this pattern does match, the two operands of the commutative
       operator are recorded as operands 1 and 2 of the insn.  (This is
!      done by the two instances of â€˜match_operandâ€™.)  Operand 3 of the
!      insn will be the entire commutative expression: use â€˜GET_CODE
!      (operands[3])â€™ to see which commutative operator was used.
  
!      The machine mode M of â€˜match_operatorâ€™ works like that of
!      â€˜match_operandâ€™: it is passed as the second argument to the
       predicate function, and that function is solely responsible for
       deciding whether the expression to be matched "has" that mode.
  
*************** substitution of the operands.
*** 23052,23096 ****
       2 of the gen-function.  The subexpressions of argument 3 are not
       used; only its expression code matters.
  
!      When 'match_operator' is used in a pattern for matching an insn, it
!      usually best if the operand number of the 'match_operator' is
       higher than that of the actual operands of the insn.  This improves
       register allocation because the register allocator often looks at
       operands 1 and 2 of insns to see if it can do register tying.
  
!      There is no way to specify constraints in 'match_operator'.  The
!      operand of the insn which corresponds to the 'match_operator' never
       has any constraints because it is never reloaded as a whole.
!      However, if parts of its OPERANDS are matched by 'match_operand'
       patterns, those parts may have constraints of their own.
  
! '(match_op_dup:M N[OPERANDS...])'
!      Like 'match_dup', except that it applies to operators instead of
       operands.  When constructing an insn, operand number N will be
!      substituted at this point.  But in matching, 'match_op_dup' behaves
       differently.  It assumes that operand number N has already been
!      determined by a 'match_operator' appearing earlier in the
       recognition template, and it matches only an identical-looking
       expression.
  
! '(match_parallel N PREDICATE [SUBPAT...])'
       This pattern is a placeholder for an insn that consists of a
!      'parallel' expression with a variable number of elements.  This
       expression should only appear at the top level of an insn pattern.
  
       When constructing an insn, operand number N will be substituted at
       this point.  When matching an insn, it matches if the body of the
!      insn is a 'parallel' expression with at least as many elements as
!      the vector of SUBPAT expressions in the 'match_parallel', if each
!      SUBPAT matches the corresponding element of the 'parallel', _and_
!      the function PREDICATE returns nonzero on the 'parallel' that is
       the body of the insn.  It is the responsibility of the predicate to
!      validate elements of the 'parallel' beyond those listed in the
!      'match_parallel'.
  
!      A typical use of 'match_parallel' is to match load and store
       multiple expressions, which can contain a variable number of
!      elements in a 'parallel'.  For example,
  
            (define_insn ""
              [(match_parallel 0 "load_multiple_operation"
--- 23056,23100 ----
       2 of the gen-function.  The subexpressions of argument 3 are not
       used; only its expression code matters.
  
!      When â€˜match_operatorâ€™ is used in a pattern for matching an insn, it
!      usually best if the operand number of the â€˜match_operatorâ€™ is
       higher than that of the actual operands of the insn.  This improves
       register allocation because the register allocator often looks at
       operands 1 and 2 of insns to see if it can do register tying.
  
!      There is no way to specify constraints in â€˜match_operatorâ€™.  The
!      operand of the insn which corresponds to the â€˜match_operatorâ€™ never
       has any constraints because it is never reloaded as a whole.
!      However, if parts of its OPERANDS are matched by â€˜match_operandâ€™
       patterns, those parts may have constraints of their own.
  
! â€˜(match_op_dup:M N[OPERANDS...])â€™
!      Like â€˜match_dupâ€™, except that it applies to operators instead of
       operands.  When constructing an insn, operand number N will be
!      substituted at this point.  But in matching, â€˜match_op_dupâ€™ behaves
       differently.  It assumes that operand number N has already been
!      determined by a â€˜match_operatorâ€™ appearing earlier in the
       recognition template, and it matches only an identical-looking
       expression.
  
! â€˜(match_parallel N PREDICATE [SUBPAT...])â€™
       This pattern is a placeholder for an insn that consists of a
!      â€˜parallelâ€™ expression with a variable number of elements.  This
       expression should only appear at the top level of an insn pattern.
  
       When constructing an insn, operand number N will be substituted at
       this point.  When matching an insn, it matches if the body of the
!      insn is a â€˜parallelâ€™ expression with at least as many elements as
!      the vector of SUBPAT expressions in the â€˜match_parallelâ€™, if each
!      SUBPAT matches the corresponding element of the â€˜parallelâ€™, _and_
!      the function PREDICATE returns nonzero on the â€˜parallelâ€™ that is
       the body of the insn.  It is the responsibility of the predicate to
!      validate elements of the â€˜parallelâ€™ beyond those listed in the
!      â€˜match_parallelâ€™.
  
!      A typical use of â€˜match_parallelâ€™ is to match load and store
       multiple expressions, which can contain a variable number of
!      elements in a â€˜parallelâ€™.  For example,
  
            (define_insn ""
              [(match_parallel 0 "load_multiple_operation"
*************** substitution of the operands.
*** 23101,23109 ****
              ""
              "loadm 0,0,%1,%2")
  
!      This example comes from 'a29k.md'.  The function
!      'load_multiple_operation' is defined in 'a29k.c' and checks that
!      subsequent elements in the 'parallel' are the same as the 'set' in
       the pattern, except that they are referencing subsequent registers
       and memory locations.
  
--- 23105,23113 ----
              ""
              "loadm 0,0,%1,%2")
  
!      This example comes from â€˜a29k.mdâ€™.  The function
!      â€˜load_multiple_operationâ€™ is defined in â€˜a29k.câ€™ and checks that
!      subsequent elements in the â€˜parallelâ€™ are the same as the â€˜setâ€™ in
       the pattern, except that they are referencing subsequent registers
       and memory locations.
  
*************** substitution of the operands.
*** 23120,23128 ****
                   (mem:SI (plus:SI (reg:SI 100)
                                    (const_int 8))))])
  
! '(match_par_dup N [SUBPAT...])'
!      Like 'match_op_dup', but for 'match_parallel' instead of
!      'match_operator'.
  
  
  File: gccint.info,  Node: Output Template,  Next: Output Statement,  Prev: RTL Template,  Up: Machine Desc
--- 23124,23132 ----
                   (mem:SI (plus:SI (reg:SI 100)
                                    (const_int 8))))])
  
! â€˜(match_par_dup N [SUBPAT...])â€™
!      Like â€˜match_op_dupâ€™, but for â€˜match_parallelâ€™ instead of
!      â€˜match_operatorâ€™.
  
  
  File: gccint.info,  Node: Output Template,  Next: Output Statement,  Prev: RTL Template,  Up: Machine Desc
*************** File: gccint.info,  Node: Output Templat
*** 23130,23177 ****
  16.5 Output Templates and Operand Substitution
  ==============================================
  
! The "output template" is a string which specifies how to output the
  assembler code for an instruction pattern.  Most of the template is a
! fixed string which is output literally.  The character '%' is used to
  specify where to substitute an operand; it can also be used to identify
  places where different variants of the assembler require different
  syntax.
  
!  In the simplest case, a '%' followed by a digit N says to output
  operand N at that point in the string.
  
!  '%' followed by a letter and a digit says to output an operand in an
  alternate fashion.  Four letters have standard, built-in meanings
! described below.  The machine description macro 'PRINT_OPERAND' can
  define additional letters with nonstandard meanings.
  
!  '%cDIGIT' can be used to substitute an operand that is a constant value
  without the syntax that normally indicates an immediate operand.
  
!  '%nDIGIT' is like '%cDIGIT' except that the value of the constant is
  negated before printing.
  
!  '%aDIGIT' can be used to substitute an operand as if it were a memory
  reference, with the actual operand treated as the address.  This may be
  useful when outputting a "load address" instruction, because often the
  assembler syntax for such an instruction requires you to write the
  operand as if it were a memory reference.
  
!  '%lDIGIT' is used to substitute a 'label_ref' into a jump instruction.
  
!  '%=' outputs a number which is unique to each instruction in the entire
  compilation.  This is useful for making local labels to be referred to
  more than once in a single template that generates multiple assembler
  instructions.
  
!  '%' followed by a punctuation character specifies a substitution that
! does not use an operand.  Only one case is standard: '%%' outputs a '%'
  into the assembler code.  Other nonstandard cases can be defined in the
! 'PRINT_OPERAND' macro.  You must also define which punctuation
! characters are valid with the 'PRINT_OPERAND_PUNCT_VALID_P' macro.
  
   The template may generate multiple assembler instructions.  Write the
! text for the instructions, with '\;' between them.
  
   When the RTL contains two operands which are required by constraint to
  match each other, the output template must refer only to the
--- 23134,23181 ----
  16.5 Output Templates and Operand Substitution
  ==============================================
  
! The â€œoutput templateâ€� is a string which specifies how to output the
  assembler code for an instruction pattern.  Most of the template is a
! fixed string which is output literally.  The character â€˜%â€™ is used to
  specify where to substitute an operand; it can also be used to identify
  places where different variants of the assembler require different
  syntax.
  
!  In the simplest case, a â€˜%â€™ followed by a digit N says to output
  operand N at that point in the string.
  
!  â€˜%â€™ followed by a letter and a digit says to output an operand in an
  alternate fashion.  Four letters have standard, built-in meanings
! described below.  The machine description macro â€˜PRINT_OPERANDâ€™ can
  define additional letters with nonstandard meanings.
  
!  â€˜%cDIGITâ€™ can be used to substitute an operand that is a constant value
  without the syntax that normally indicates an immediate operand.
  
!  â€˜%nDIGITâ€™ is like â€˜%cDIGITâ€™ except that the value of the constant is
  negated before printing.
  
!  â€˜%aDIGITâ€™ can be used to substitute an operand as if it were a memory
  reference, with the actual operand treated as the address.  This may be
  useful when outputting a "load address" instruction, because often the
  assembler syntax for such an instruction requires you to write the
  operand as if it were a memory reference.
  
!  â€˜%lDIGITâ€™ is used to substitute a â€˜label_refâ€™ into a jump instruction.
  
!  â€˜%=â€™ outputs a number which is unique to each instruction in the entire
  compilation.  This is useful for making local labels to be referred to
  more than once in a single template that generates multiple assembler
  instructions.
  
!  â€˜%â€™ followed by a punctuation character specifies a substitution that
! does not use an operand.  Only one case is standard: â€˜%%â€™ outputs a â€˜%â€™
  into the assembler code.  Other nonstandard cases can be defined in the
! â€˜PRINT_OPERANDâ€™ macro.  You must also define which punctuation
! characters are valid with the â€˜PRINT_OPERAND_PUNCT_VALID_Pâ€™ macro.
  
   The template may generate multiple assembler instructions.  Write the
! text for the instructions, with â€˜\;â€™ between them.
  
   When the RTL contains two operands which are required by constraint to
  match each other, the output template must refer only to the
*************** lower-numbered operand.  Matching operan
*** 23179,23211 ****
  the rest of the compiler arranges to put the proper RTL expression for
  printing into the lower-numbered operand.
  
!  One use of nonstandard letters or punctuation following '%' is to
  distinguish between different assembler languages for the same machine;
  for example, Motorola syntax versus MIT syntax for the 68000.  Motorola
  syntax requires periods in most opcode names, while MIT syntax does not.
! For example, the opcode 'movel' in MIT syntax is 'move.l' in Motorola
  syntax.  The same file of patterns is used for both kinds of output
! syntax, but the character sequence '%.' is used in each place where
! Motorola syntax wants a period.  The 'PRINT_OPERAND' macro for Motorola
  syntax defines the sequence to output a period; the macro for MIT syntax
  defines it to do nothing.
  
!  As a special case, a template consisting of the single character '#'
  instructs the compiler to first split the insn, and then output the
  resulting instructions separately.  This helps eliminate redundancy in
! the output templates.  If you have a 'define_insn' that needs to emit
! multiple assembler instructions, and there is a matching 'define_split'
! already defined, then you can simply use '#' as the output template
  instead of writing an output template that emits the multiple assembler
  instructions.
  
!  Note that '#' only has an effect while generating assembly code; it
  does not affect whether a split occurs earlier.  An associated
! 'define_split' must exist and it must be suitable for use after register
  allocation.
  
!  If the macro 'ASSEMBLER_DIALECT' is defined, you can use construct of
! the form '{option0|option1|option2}' in the templates.  These describe
  multiple variants of assembler language syntax.  *Note Instruction
  Output::.
  
--- 23183,23215 ----
  the rest of the compiler arranges to put the proper RTL expression for
  printing into the lower-numbered operand.
  
!  One use of nonstandard letters or punctuation following â€˜%â€™ is to
  distinguish between different assembler languages for the same machine;
  for example, Motorola syntax versus MIT syntax for the 68000.  Motorola
  syntax requires periods in most opcode names, while MIT syntax does not.
! For example, the opcode â€˜movelâ€™ in MIT syntax is â€˜move.lâ€™ in Motorola
  syntax.  The same file of patterns is used for both kinds of output
! syntax, but the character sequence â€˜%.â€™ is used in each place where
! Motorola syntax wants a period.  The â€˜PRINT_OPERANDâ€™ macro for Motorola
  syntax defines the sequence to output a period; the macro for MIT syntax
  defines it to do nothing.
  
!  As a special case, a template consisting of the single character â€˜#â€™
  instructs the compiler to first split the insn, and then output the
  resulting instructions separately.  This helps eliminate redundancy in
! the output templates.  If you have a â€˜define_insnâ€™ that needs to emit
! multiple assembler instructions, and there is a matching â€˜define_splitâ€™
! already defined, then you can simply use â€˜#â€™ as the output template
  instead of writing an output template that emits the multiple assembler
  instructions.
  
!  Note that â€˜#â€™ only has an effect while generating assembly code; it
  does not affect whether a split occurs earlier.  An associated
! â€˜define_splitâ€™ must exist and it must be suitable for use after register
  allocation.
  
!  If the macro â€˜ASSEMBLER_DIALECTâ€™ is defined, you can use construct of
! the form â€˜{option0|option1|option2}â€™ in the templates.  These describe
  multiple variants of assembler language syntax.  *Note Instruction
  Output::.
  
*************** single instruction pattern.  For example
*** 23221,23232 ****
  kinds of operands; or some unfortunate combinations of operands may
  require extra machine instructions.
  
!  If the output control string starts with a '@', then it is actually a
  series of templates, each on a separate line.  (Blank lines and leading
  spaces and tabs are ignored.)  The templates correspond to the pattern's
  constraint alternatives (*note Multi-Alternative::).  For example, if a
! target machine has a two-address add instruction 'addr' to add into a
! register and another 'addm' to add a register to memory, you might write
  this pattern:
  
       (define_insn "addsi3"
--- 23225,23236 ----
  kinds of operands; or some unfortunate combinations of operands may
  require extra machine instructions.
  
!  If the output control string starts with a â€˜@â€™, then it is actually a
  series of templates, each on a separate line.  (Blank lines and leading
  spaces and tabs are ignored.)  The templates correspond to the pattern's
  constraint alternatives (*note Multi-Alternative::).  For example, if a
! target machine has a two-address add instruction â€˜addrâ€™ to add into a
! register and another â€˜addmâ€™ to add a register to memory, you might write
  this pattern:
  
       (define_insn "addsi3"
*************** this pattern:
*** 23238,23282 ****
          addr %2,%0
          addm %2,%0")
  
!  If the output control string starts with a '*', then it is not an
  output template but rather a piece of C program that should compute a
! template.  It should execute a 'return' statement to return the
  template-string you want.  Most such templates use C string literals,
  which require doublequote characters to delimit them.  To include these
! doublequote characters in the string, prefix each one with '\'.
  
   If the output control string is written as a brace block instead of a
  double-quoted string, it is automatically assumed to be C code.  In that
  case, it is not necessary to put in a leading asterisk, or to escape the
  doublequotes surrounding C string literals.
  
!  The operands may be found in the array 'operands', whose C data type is
! 'rtx []'.
  
   It is very common to select different ways of generating assembler code
  based on whether an immediate operand is within a certain range.  Be
! careful when doing this, because the result of 'INTVAL' is an integer on
! the host machine.  If the host machine has more bits in an 'int' than
  the target machine has in the mode in which the constant will be used,
! then some of the bits you get from 'INTVAL' will be superfluous.  For
  proper results, you must carefully disregard the values of those bits.
  
   It is possible to output an assembler instruction and then go on to
! output or compute more of them, using the subroutine 'output_asm_insn'.
  This receives two arguments: a template-string and a vector of operands.
! The vector may be 'operands', or it may be another array of 'rtx' that
  you declare locally and initialize yourself.
  
   When an insn pattern has multiple alternatives in its constraints,
  often the appearance of the assembler code is determined mostly by which
  alternative was matched.  When this is so, the C code can test the
! variable 'which_alternative', which is the ordinal number of the
  alternative that was actually satisfied (0 for the first, 1 for the
  second alternative, etc.).
  
!  For example, suppose there are two opcodes for storing zero, 'clrreg'
! for registers and 'clrmem' for memory locations.  Here is how a pattern
! could use 'which_alternative' to choose between them:
  
       (define_insn ""
         [(set (match_operand:SI 0 "general_operand" "=r,m")
--- 23242,23286 ----
          addr %2,%0
          addm %2,%0")
  
!  If the output control string starts with a â€˜*â€™, then it is not an
  output template but rather a piece of C program that should compute a
! template.  It should execute a â€˜returnâ€™ statement to return the
  template-string you want.  Most such templates use C string literals,
  which require doublequote characters to delimit them.  To include these
! doublequote characters in the string, prefix each one with â€˜\â€™.
  
   If the output control string is written as a brace block instead of a
  double-quoted string, it is automatically assumed to be C code.  In that
  case, it is not necessary to put in a leading asterisk, or to escape the
  doublequotes surrounding C string literals.
  
!  The operands may be found in the array â€˜operandsâ€™, whose C data type is
! â€˜rtx []â€™.
  
   It is very common to select different ways of generating assembler code
  based on whether an immediate operand is within a certain range.  Be
! careful when doing this, because the result of â€˜INTVALâ€™ is an integer on
! the host machine.  If the host machine has more bits in an â€˜intâ€™ than
  the target machine has in the mode in which the constant will be used,
! then some of the bits you get from â€˜INTVALâ€™ will be superfluous.  For
  proper results, you must carefully disregard the values of those bits.
  
   It is possible to output an assembler instruction and then go on to
! output or compute more of them, using the subroutine â€˜output_asm_insnâ€™.
  This receives two arguments: a template-string and a vector of operands.
! The vector may be â€˜operandsâ€™, or it may be another array of â€˜rtxâ€™ that
  you declare locally and initialize yourself.
  
   When an insn pattern has multiple alternatives in its constraints,
  often the appearance of the assembler code is determined mostly by which
  alternative was matched.  When this is so, the C code can test the
! variable â€˜which_alternativeâ€™, which is the ordinal number of the
  alternative that was actually satisfied (0 for the first, 1 for the
  second alternative, etc.).
  
!  For example, suppose there are two opcodes for storing zero, â€˜clrregâ€™
! for registers and â€˜clrmemâ€™ for memory locations.  Here is how a pattern
! could use â€˜which_alternativeâ€™ to choose between them:
  
       (define_insn ""
         [(set (match_operand:SI 0 "general_operand" "=r,m")
*************** could use 'which_alternative' to choose
*** 23289,23295 ****
  
   The example above, where the assembler code to generate was _solely_
  determined by the alternative, could also have been specified as
! follows, having the output control string start with a '@':
  
       (define_insn ""
         [(set (match_operand:SI 0 "general_operand" "=r,m")
--- 23293,23299 ----
  
   The example above, where the assembler code to generate was _solely_
  determined by the alternative, could also have been specified as
! follows, having the output control string start with a â€˜@â€™:
  
       (define_insn ""
         [(set (match_operand:SI 0 "general_operand" "=r,m")
*************** follows, having the output control strin
*** 23300,23306 ****
          clrmem %0")
  
   If you just need a little bit of C code in one (or a few) alternatives,
! you can use '*' inside of a '@' multi-alternative template:
  
       (define_insn ""
         [(set (match_operand:SI 0 "general_operand" "=r,<,m")
--- 23304,23310 ----
          clrmem %0")
  
   If you just need a little bit of C code in one (or a few) alternatives,
! you can use â€˜*â€™ inside of a â€˜@â€™ multi-alternative template:
  
       (define_insn ""
         [(set (match_operand:SI 0 "general_operand" "=r,<,m")
*************** File: gccint.info,  Node: Compact Syntax
*** 23317,23323 ****
  16.7 Compact Syntax
  ===================
  
! When a 'define_insn' or 'define_insn_and_split' has multiple
  alternatives it may be beneficial to use the compact syntax when
  specifying alternatives.
  
--- 23321,23327 ----
  16.7 Compact Syntax
  ===================
  
! When a â€˜define_insnâ€™ or â€˜define_insn_and_splitâ€™ has multiple
  alternatives it may be beneficial to use the compact syntax when
  specifying alternatives.
  
*************** line as the instruction assembly templat
*** 23372,23424 ****
       )
  
   The syntax rules are as follows:
!    * Templates must start with '{@' to use the new syntax.
  
!    * '{@' is followed by a layout in square brackets which is 'cons:'
       followed by a comma-separated list of
!      'match_operand'/'match_scratch' operand numbers, then a semicolon,
!      followed by the same for attributes ('attrs:').  Operand modifiers
!      like '=' and '+' can be placed before an operand number.  Both
!      sections are optional (so you can use only 'cons', or only 'attrs',
!      or both), and 'cons' must come before 'attrs' if present.
  
!    * Each alternative begins with any amount of whitespace.
  
!    * Following the whitespace is a comma-separated list of "constraints"
!      and/or "attributes" within brackets '[]', with sections separated
       by a semicolon.
  
!    * Should you want to copy the previous asm line, the symbol '^' can
       be used.  This allows less copy pasting between alternative and
       reduces the number of lines to update on changes.
  
!    * When using C functions for output, the idiom '* return FUNCTION;'
!      can be replaced with the shorthand '<< FUNCTION;'.
  
!    * Following the closing ']' is any amount of whitespace, and then the
       actual asm output.
  
!    * Spaces are allowed in the list (they will simply be removed).
  
!    * All constraint alternatives should be specified.  For example, a
!      list of of three blank alternatives should be written '[,,]' rather
!      than '[]'.
  
!    * All attribute alternatives should be non-empty, with '*'
       representing the default attribute value.  For example, a list of
!      three default attribute values should be written '[*,*,*]' rather
!      than '[]'.
  
!    * Within an '{@' block both multiline and singleline C comments are
       allowed, but when used outside of a C block they must be the only
       non-whitespace blocks on the line.
  
!    * Within an '{@' block, any iterators that do not get expanded will
!      result in an error.  If for some reason it is required to have '<'
!      or '>' in the output then these must be escaped using '\'.
  
!    * It is possible to use the 'attrs' list to specify some attributes
!      and to use the normal 'set_attr' syntax to specify other
       attributes.  There must not be any overlap between the two lists.
  
       In other words, the following is valid:
--- 23376,23428 ----
       )
  
   The syntax rules are as follows:
!    â€¢ Templates must start with â€˜{@â€™ to use the new syntax.
  
!    â€¢ â€˜{@â€™ is followed by a layout in square brackets which is â€˜cons:â€™
       followed by a comma-separated list of
!      â€˜match_operandâ€™/â€˜match_scratchâ€™ operand numbers, then a semicolon,
!      followed by the same for attributes (â€˜attrs:â€™).  Operand modifiers
!      like â€˜=â€™ and â€˜+â€™ can be placed before an operand number.  Both
!      sections are optional (so you can use only â€˜consâ€™, or only â€˜attrsâ€™,
!      or both), and â€˜consâ€™ must come before â€˜attrsâ€™ if present.
  
!    â€¢ Each alternative begins with any amount of whitespace.
  
!    â€¢ Following the whitespace is a comma-separated list of "constraints"
!      and/or "attributes" within brackets â€˜[]â€™, with sections separated
       by a semicolon.
  
!    â€¢ Should you want to copy the previous asm line, the symbol â€˜^â€™ can
       be used.  This allows less copy pasting between alternative and
       reduces the number of lines to update on changes.
  
!    â€¢ When using C functions for output, the idiom â€˜* return FUNCTION;â€™
!      can be replaced with the shorthand â€˜<< FUNCTION;â€™.
  
!    â€¢ Following the closing â€˜]â€™ is any amount of whitespace, and then the
       actual asm output.
  
!    â€¢ Spaces are allowed in the list (they will simply be removed).
  
!    â€¢ All constraint alternatives should be specified.  For example, a
!      list of of three blank alternatives should be written â€˜[,,]â€™ rather
!      than â€˜[]â€™.
  
!    â€¢ All attribute alternatives should be non-empty, with â€˜*â€™
       representing the default attribute value.  For example, a list of
!      three default attribute values should be written â€˜[*,*,*]â€™ rather
!      than â€˜[]â€™.
  
!    â€¢ Within an â€˜{@â€™ block both multiline and singleline C comments are
       allowed, but when used outside of a C block they must be the only
       non-whitespace blocks on the line.
  
!    â€¢ Within an â€˜{@â€™ block, any iterators that do not get expanded will
!      result in an error.  If for some reason it is required to have â€˜<â€™
!      or â€˜>â€™ in the output then these must be escaped using â€˜\â€™.
  
!    â€¢ It is possible to use the â€˜attrsâ€™ list to specify some attributes
!      and to use the normal â€˜set_attrâ€™ syntax to specify other
       attributes.  There must not be any overlap between the two lists.
  
       In other words, the following is valid:
*************** line as the instruction assembly templat
*** 23442,23448 ****
               (set_attr "foo" "mov_imm")]
            )
  
!      because it specifies 'arch' twice.
  
  
  File: gccint.info,  Node: Predicates,  Next: Constraints,  Prev: Compact Syntax,  Up: Machine Desc
--- 23446,23452 ----
               (set_attr "foo" "mov_imm")]
            )
  
!      because it specifies â€˜archâ€™ twice.
  
  
  File: gccint.info,  Node: Predicates,  Next: Constraints,  Prev: Compact Syntax,  Up: Machine Desc
*************** File: gccint.info,  Node: Predicates,  N
*** 23450,23467 ****
  16.8 Predicates
  ===============
  
! A predicate determines whether a 'match_operand' or 'match_operator'
  expression matches, and therefore whether the surrounding instruction
  pattern will be used for that combination of operands.  GCC has a number
  of machine-independent predicates, and you can define machine-specific
  predicates as needed.  By convention, predicates used with
! 'match_operand' have names that end in '_operand', and those used with
! 'match_operator' have names that end in '_operator'.
  
   All predicates are boolean functions (in the mathematical sense) of two
  arguments: the RTL expression that is being considered at that position
  in the instruction pattern, and the machine mode that the
! 'match_operand' or 'match_operator' specifies.  In this section, the
  first argument is called OP and the second argument MODE.  Predicates
  can be called from C as ordinary two-argument functions; this can be
  useful in output templates or other machine-specific code.
--- 23454,23471 ----
  16.8 Predicates
  ===============
  
! A predicate determines whether a â€˜match_operandâ€™ or â€˜match_operatorâ€™
  expression matches, and therefore whether the surrounding instruction
  pattern will be used for that combination of operands.  GCC has a number
  of machine-independent predicates, and you can define machine-specific
  predicates as needed.  By convention, predicates used with
! â€˜match_operandâ€™ have names that end in â€˜_operandâ€™, and those used with
! â€˜match_operatorâ€™ have names that end in â€˜_operatorâ€™.
  
   All predicates are boolean functions (in the mathematical sense) of two
  arguments: the RTL expression that is being considered at that position
  in the instruction pattern, and the machine mode that the
! â€˜match_operandâ€™ or â€˜match_operatorâ€™ specifies.  In this section, the
  first argument is called OP and the second argument MODE.  Predicates
  can be called from C as ordinary two-argument functions; this can be
  useful in output templates or other machine-specific code.
*************** allows only constants, or else enforce t
*** 23476,23498 ****
  condition.
  
   Most predicates handle their MODE argument in a uniform manner.  If
! MODE is 'VOIDmode' (unspecified), then OP can have any mode.  If MODE is
  anything else, then OP must have the same mode, unless OP is a
! 'CONST_INT' or integer 'CONST_DOUBLE'.  These RTL expressions always
! have 'VOIDmode', so it would be counterproductive to check that their
! mode matches.  Instead, predicates that accept 'CONST_INT' and/or
! integer 'CONST_DOUBLE' check that the value stored in the constant will
  fit in the requested mode.
  
!  Predicates with this behavior are called "normal".  'genrecog' can
  optimize the instruction recognizer based on knowledge of how normal
  predicates treat modes.  It can also diagnose certain kinds of common
  errors in the use of normal predicates; for instance, it is almost
  always an error to use a normal predicate without specifying a mode.
  
   Predicates that do something different with their MODE argument are
! called "special".  The generic predicates 'address_operand' and
! 'pmode_register_operand' are special predicates.  'genrecog' does not do
  any optimizations or diagnosis when special predicates are used.
  
  * Menu:
--- 23480,23502 ----
  condition.
  
   Most predicates handle their MODE argument in a uniform manner.  If
! MODE is â€˜VOIDmodeâ€™ (unspecified), then OP can have any mode.  If MODE is
  anything else, then OP must have the same mode, unless OP is a
! â€˜CONST_INTâ€™ or integer â€˜CONST_DOUBLEâ€™.  These RTL expressions always
! have â€˜VOIDmodeâ€™, so it would be counterproductive to check that their
! mode matches.  Instead, predicates that accept â€˜CONST_INTâ€™ and/or
! integer â€˜CONST_DOUBLEâ€™ check that the value stored in the constant will
  fit in the requested mode.
  
!  Predicates with this behavior are called â€œnormalâ€�.  â€˜genrecogâ€™ can
  optimize the instruction recognizer based on knowledge of how normal
  predicates treat modes.  It can also diagnose certain kinds of common
  errors in the use of normal predicates; for instance, it is almost
  always an error to use a normal predicate without specifying a mode.
  
   Predicates that do something different with their MODE argument are
! called â€œspecialâ€�.  The generic predicates â€˜address_operandâ€™ and
! â€˜pmode_register_operandâ€™ are special predicates.  â€˜genrecogâ€™ does not do
  any optimizations or diagnosis when special predicates are used.
  
  * Menu:
*************** File: gccint.info,  Node: Machine-Indepe
*** 23508,23515 ****
  -------------------------------------
  
  These are the generic predicates available to all back ends.  They are
! defined in 'recog.cc'.  The first category of predicates allow only
! constant, or "immediate", operands.
  
   -- Function: immediate_operand
       This predicate allows any sort of constant that fits in MODE.  It
--- 23512,23519 ----
  -------------------------------------
  
  These are the generic predicates available to all back ends.  They are
! defined in â€˜recog.ccâ€™.  The first category of predicates allow only
! constant, or â€œimmediateâ€�, operands.
  
   -- Function: immediate_operand
       This predicate allows any sort of constant that fits in MODE.  It
*************** constant, or "immediate", operands.
*** 23517,23542 ****
       must be constant.
  
   -- Function: const_int_operand
!      This predicate allows any 'CONST_INT' expression that fits in MODE.
       It is an appropriate choice for an immediate operand that does not
       allow a symbol or label.
  
   -- Function: const_double_operand
!      This predicate accepts any 'CONST_DOUBLE' expression that has
!      exactly MODE.  If MODE is 'VOIDmode', it will also accept
!      'CONST_INT'.  It is intended for immediate floating point
       constants.
  
  The second category of predicates allow only some kind of machine
  register.
  
   -- Function: register_operand
!      This predicate allows any 'REG' or 'SUBREG' expression that is
       valid for MODE.  It is often suitable for arithmetic instruction
       operands on a RISC machine.
  
   -- Function: pmode_register_operand
!      This is a slight variant on 'register_operand' which works around a
       limitation in the machine-description reader.
  
            (match_operand N "pmode_register_operand" CONSTRAINT)
--- 23521,23546 ----
       must be constant.
  
   -- Function: const_int_operand
!      This predicate allows any â€˜CONST_INTâ€™ expression that fits in MODE.
       It is an appropriate choice for an immediate operand that does not
       allow a symbol or label.
  
   -- Function: const_double_operand
!      This predicate accepts any â€˜CONST_DOUBLEâ€™ expression that has
!      exactly MODE.  If MODE is â€˜VOIDmodeâ€™, it will also accept
!      â€˜CONST_INTâ€™.  It is intended for immediate floating point
       constants.
  
  The second category of predicates allow only some kind of machine
  register.
  
   -- Function: register_operand
!      This predicate allows any â€˜REGâ€™ or â€˜SUBREGâ€™ expression that is
       valid for MODE.  It is often suitable for arithmetic instruction
       operands on a RISC machine.
  
   -- Function: pmode_register_operand
!      This is a slight variant on â€˜register_operandâ€™ which works around a
       limitation in the machine-description reader.
  
            (match_operand N "pmode_register_operand" CONSTRAINT)
*************** register.
*** 23545,23558 ****
  
            (match_operand:P N "register_operand" CONSTRAINT)
  
!      would mean, if the machine-description reader accepted ':P' mode
!      suffixes.  Unfortunately, it cannot, because 'Pmode' is an alias
       for some other mode, and might vary with machine-specific options.
       *Note Misc::.
  
   -- Function: scratch_operand
!      This predicate allows hard registers and 'SCRATCH' expressions, but
!      not pseudo-registers.  It is used internally by 'match_scratch'; it
       should not be used directly.
  
  The third category of predicates allow only some kind of memory
--- 23549,23562 ----
  
            (match_operand:P N "register_operand" CONSTRAINT)
  
!      would mean, if the machine-description reader accepted â€˜:Pâ€™ mode
!      suffixes.  Unfortunately, it cannot, because â€˜Pmodeâ€™ is an alias
       for some other mode, and might vary with machine-specific options.
       *Note Misc::.
  
   -- Function: scratch_operand
!      This predicate allows hard registers and â€˜SCRATCHâ€™ expressions, but
!      not pseudo-registers.  It is used internally by â€˜match_scratchâ€™; it
       should not be used directly.
  
  The third category of predicates allow only some kind of memory
*************** reference.
*** 23561,23598 ****
   -- Function: memory_operand
       This predicate allows any valid reference to a quantity of mode
       MODE in memory, as determined by the weak form of
!      'GO_IF_LEGITIMATE_ADDRESS' (*note Addressing Modes::).
  
   -- Function: address_operand
       This predicate is a little unusual; it allows any operand that is a
       valid expression for the _address_ of a quantity of mode MODE,
!      again determined by the weak form of 'GO_IF_LEGITIMATE_ADDRESS'.
!      To first order, if '(mem:MODE (EXP))' is acceptable to
!      'memory_operand', then EXP is acceptable to 'address_operand'.
       Note that EXP does not necessarily have the mode MODE.
  
   -- Function: indirect_operand
!      This is a stricter form of 'memory_operand' which allows only
!      memory references with a 'general_operand' as the address
       expression.  New uses of this predicate are discouraged, because
!      'general_operand' is very permissive, so it's hard to tell what an
!      'indirect_operand' does or does not allow.  If a target has
       different requirements for memory operands for different
       instructions, it is better to define target-specific predicates
       which enforce the hardware's requirements explicitly.
  
   -- Function: push_operand
       This predicate allows a memory reference suitable for pushing a
!      value onto the stack.  This will be a 'MEM' which refers to
!      'stack_pointer_rtx', with a side effect in its address expression
!      (*note Incdec::); which one is determined by the 'STACK_PUSH_CODE'
       macro (*note Frame Layout::).
  
   -- Function: pop_operand
       This predicate allows a memory reference suitable for popping a
!      value off the stack.  Again, this will be a 'MEM' referring to
!      'stack_pointer_rtx', with a side effect in its address expression.
!      However, this time 'STACK_POP_CODE' is expected.
  
  The fourth category of predicates allow some combination of the above
  operands.
--- 23565,23602 ----
   -- Function: memory_operand
       This predicate allows any valid reference to a quantity of mode
       MODE in memory, as determined by the weak form of
!      â€˜GO_IF_LEGITIMATE_ADDRESSâ€™ (*note Addressing Modes::).
  
   -- Function: address_operand
       This predicate is a little unusual; it allows any operand that is a
       valid expression for the _address_ of a quantity of mode MODE,
!      again determined by the weak form of â€˜GO_IF_LEGITIMATE_ADDRESSâ€™.
!      To first order, if â€˜(mem:MODE (EXP))â€™ is acceptable to
!      â€˜memory_operandâ€™, then EXP is acceptable to â€˜address_operandâ€™.
       Note that EXP does not necessarily have the mode MODE.
  
   -- Function: indirect_operand
!      This is a stricter form of â€˜memory_operandâ€™ which allows only
!      memory references with a â€˜general_operandâ€™ as the address
       expression.  New uses of this predicate are discouraged, because
!      â€˜general_operandâ€™ is very permissive, so it's hard to tell what an
!      â€˜indirect_operandâ€™ does or does not allow.  If a target has
       different requirements for memory operands for different
       instructions, it is better to define target-specific predicates
       which enforce the hardware's requirements explicitly.
  
   -- Function: push_operand
       This predicate allows a memory reference suitable for pushing a
!      value onto the stack.  This will be a â€˜MEMâ€™ which refers to
!      â€˜stack_pointer_rtxâ€™, with a side effect in its address expression
!      (*note Incdec::); which one is determined by the â€˜STACK_PUSH_CODEâ€™
       macro (*note Frame Layout::).
  
   -- Function: pop_operand
       This predicate allows a memory reference suitable for popping a
!      value off the stack.  Again, this will be a â€˜MEMâ€™ referring to
!      â€˜stack_pointer_rtxâ€™, with a side effect in its address expression.
!      However, this time â€˜STACK_POP_CODEâ€™ is expected.
  
  The fourth category of predicates allow some combination of the above
  operands.
*************** Finally, there are two generic operator
*** 23613,23626 ****
  
   -- Function: comparison_operator
       This predicate matches any expression which performs an arithmetic
!      comparison in MODE; that is, 'COMPARISON_P' is true for the
       expression code.
  
   -- Function: ordered_comparison_operator
       This predicate matches any expression which performs an arithmetic
       comparison in MODE and whose expression code is valid for integer
!      modes; that is, the expression code will be one of 'eq', 'ne',
!      'lt', 'ltu', 'le', 'leu', 'gt', 'gtu', 'ge', 'geu'.
  
  
  File: gccint.info,  Node: Defining Predicates,  Prev: Machine-Independent Predicates,  Up: Predicates
--- 23617,23630 ----
  
   -- Function: comparison_operator
       This predicate matches any expression which performs an arithmetic
!      comparison in MODE; that is, â€˜COMPARISON_Pâ€™ is true for the
       expression code.
  
   -- Function: ordered_comparison_operator
       This predicate matches any expression which performs an arithmetic
       comparison in MODE and whose expression code is valid for integer
!      modes; that is, the expression code will be one of â€˜eqâ€™, â€˜neâ€™,
!      â€˜ltâ€™, â€˜ltuâ€™, â€˜leâ€™, â€˜leuâ€™, â€˜gtâ€™, â€˜gtuâ€™, â€˜geâ€™, â€˜geuâ€™.
  
  
  File: gccint.info,  Node: Defining Predicates,  Prev: Machine-Independent Predicates,  Up: Predicates
*************** File: gccint.info,  Node: Defining Predi
*** 23630,23660 ****
  
  Many machines have requirements for their operands that cannot be
  expressed precisely using the generic predicates.  You can define
! additional predicates using 'define_predicate' and
! 'define_special_predicate' expressions.  These expressions have three
  operands:
  
!    * The name of the predicate, as it will be referred to in
!      'match_operand' or 'match_operator' expressions.
  
!    * An RTL expression which evaluates to true if the predicate allows
       the operand OP, false if it does not.  This expression can only use
       the following RTL codes:
  
!      'MATCH_OPERAND'
!           When written inside a predicate expression, a 'MATCH_OPERAND'
            expression evaluates to true if the predicate it names would
            allow OP.  The operand number and constraint are ignored.  Due
!           to limitations in 'genrecog', you can only refer to generic
            predicates and predicates that have already been defined.
  
!      'MATCH_CODE'
            This expression evaluates to true if OP or a specified
            subexpression of OP has one of a given list of RTX codes.
  
            The first operand of this expression is a string constant
            containing a comma-separated list of RTX code names (in lower
!           case).  These are the codes for which the 'MATCH_CODE' will be
            true.
  
            The second operand is a string constant which indicates what
--- 23634,23664 ----
  
  Many machines have requirements for their operands that cannot be
  expressed precisely using the generic predicates.  You can define
! additional predicates using â€˜define_predicateâ€™ and
! â€˜define_special_predicateâ€™ expressions.  These expressions have three
  operands:
  
!    â€¢ The name of the predicate, as it will be referred to in
!      â€˜match_operandâ€™ or â€˜match_operatorâ€™ expressions.
  
!    â€¢ An RTL expression which evaluates to true if the predicate allows
       the operand OP, false if it does not.  This expression can only use
       the following RTL codes:
  
!      â€˜MATCH_OPERANDâ€™
!           When written inside a predicate expression, a â€˜MATCH_OPERANDâ€™
            expression evaluates to true if the predicate it names would
            allow OP.  The operand number and constraint are ignored.  Due
!           to limitations in â€˜genrecogâ€™, you can only refer to generic
            predicates and predicates that have already been defined.
  
!      â€˜MATCH_CODEâ€™
            This expression evaluates to true if OP or a specified
            subexpression of OP has one of a given list of RTX codes.
  
            The first operand of this expression is a string constant
            containing a comma-separated list of RTX code names (in lower
!           case).  These are the codes for which the â€˜MATCH_CODEâ€™ will be
            true.
  
            The second operand is a string constant which indicates what
*************** operands:
*** 23664,23716 ****
            character indicates a subexpression to extract from the
            current expression; for the first character this is OP, for
            the second and subsequent characters it is the result of the
!           previous character.  A digit N extracts 'XEXP (E, N)'; a
!           letter L extracts 'XVECEXP (E, 0, N)' where N is the
            alphabetic ordinal of L (0 for 'a', 1 for 'b', and so on).
!           The 'MATCH_CODE' then examines the RTX code of the
            subexpression extracted by the complete string.  It is not
!           possible to extract components of an 'rtvec' that is not at
            position 0 within its RTX object.
  
!      'MATCH_TEST'
            This expression has one operand, a string constant containing
            a C expression.  The predicate's arguments, OP and MODE, are
            available with those names in the C expression.  The
!           'MATCH_TEST' evaluates to true if the C expression evaluates
!           to a nonzero value.  'MATCH_TEST' expressions must not have
            side effects.
  
!      'AND'
!      'IOR'
!      'NOT'
!      'IF_THEN_ELSE'
!           The basic 'MATCH_' expressions can be combined using these
            logical operators, which have the semantics of the C operators
!           '&&', '||', '!', and '? :' respectively.  As in Common Lisp,
!           you may give an 'AND' or 'IOR' expression an arbitrary number
            of arguments; this has exactly the same effect as writing a
!           chain of two-argument 'AND' or 'IOR' expressions.
  
!    * An optional block of C code, which should execute 'return true' if
!      the predicate is found to match and 'return false' if it does not.
       It must not have any side effects.  The predicate arguments, OP and
       MODE, are available with those names.
  
       If a code block is present in a predicate definition, then the RTL
       expression must evaluate to true _and_ the code block must execute
!      'return true' for the predicate to allow the operand.  The RTL
       expression is evaluated first; do not re-check anything in the code
       block that was checked in the RTL expression.
  
!  The program 'genrecog' scans 'define_predicate' and
! 'define_special_predicate' expressions to determine which RTX codes are
  possibly allowed.  You should always make this explicit in the RTL
! predicate expression, using 'MATCH_OPERAND' and 'MATCH_CODE'.
  
   Here is an example of a simple predicate definition, from the IA64
  machine description:
  
!      ;; True if OP is a 'SYMBOL_REF' which refers to the sdata section.
       (define_predicate "small_addr_symbolic_operand"
         (and (match_code "symbol_ref")
              (match_test "SYMBOL_REF_SMALL_ADDR_P (op)")))
--- 23668,23720 ----
            character indicates a subexpression to extract from the
            current expression; for the first character this is OP, for
            the second and subsequent characters it is the result of the
!           previous character.  A digit N extracts â€˜XEXP (E, N)â€™; a
!           letter L extracts â€˜XVECEXP (E, 0, N)â€™ where N is the
            alphabetic ordinal of L (0 for 'a', 1 for 'b', and so on).
!           The â€˜MATCH_CODEâ€™ then examines the RTX code of the
            subexpression extracted by the complete string.  It is not
!           possible to extract components of an â€˜rtvecâ€™ that is not at
            position 0 within its RTX object.
  
!      â€˜MATCH_TESTâ€™
            This expression has one operand, a string constant containing
            a C expression.  The predicate's arguments, OP and MODE, are
            available with those names in the C expression.  The
!           â€˜MATCH_TESTâ€™ evaluates to true if the C expression evaluates
!           to a nonzero value.  â€˜MATCH_TESTâ€™ expressions must not have
            side effects.
  
!      â€˜ANDâ€™
!      â€˜IORâ€™
!      â€˜NOTâ€™
!      â€˜IF_THEN_ELSEâ€™
!           The basic â€˜MATCH_â€™ expressions can be combined using these
            logical operators, which have the semantics of the C operators
!           â€˜&&â€™, â€˜||â€™, â€˜!â€™, and â€˜? :â€™ respectively.  As in Common Lisp,
!           you may give an â€˜ANDâ€™ or â€˜IORâ€™ expression an arbitrary number
            of arguments; this has exactly the same effect as writing a
!           chain of two-argument â€˜ANDâ€™ or â€˜IORâ€™ expressions.
  
!    â€¢ An optional block of C code, which should execute â€˜return trueâ€™ if
!      the predicate is found to match and â€˜return falseâ€™ if it does not.
       It must not have any side effects.  The predicate arguments, OP and
       MODE, are available with those names.
  
       If a code block is present in a predicate definition, then the RTL
       expression must evaluate to true _and_ the code block must execute
!      â€˜return trueâ€™ for the predicate to allow the operand.  The RTL
       expression is evaluated first; do not re-check anything in the code
       block that was checked in the RTL expression.
  
!  The program â€˜genrecogâ€™ scans â€˜define_predicateâ€™ and
! â€˜define_special_predicateâ€™ expressions to determine which RTX codes are
  possibly allowed.  You should always make this explicit in the RTL
! predicate expression, using â€˜MATCH_OPERANDâ€™ and â€˜MATCH_CODEâ€™.
  
   Here is an example of a simple predicate definition, from the IA64
  machine description:
  
!      ;; True if OP is a â€˜SYMBOL_REFâ€™ which refers to the sdata section.
       (define_predicate "small_addr_symbolic_operand"
         (and (match_code "symbol_ref")
              (match_test "SYMBOL_REF_SMALL_ADDR_P (op)")))
*************** And here is another, showing the use of
*** 23729,23753 ****
         return (regno >= FIRST_PSEUDO_REGISTER || GENERAL_REGNO_P (regno));
       })
  
!  Predicates written with 'define_predicate' automatically include a test
! that MODE is 'VOIDmode', or OP has the same mode as MODE, or OP is a
! 'CONST_INT' or 'CONST_DOUBLE'.  They do _not_ check specifically for
! integer 'CONST_DOUBLE', nor do they test that the value of either kind
  of constant fits in the requested mode.  This is because target-specific
  predicates that take constants usually have to do more stringent value
! checks anyway.  If you need the exact same treatment of 'CONST_INT' or
! 'CONST_DOUBLE' that the generic predicates provide, use a
! 'MATCH_OPERAND' subexpression to call 'const_int_operand',
! 'const_double_operand', or 'immediate_operand'.
  
!  Predicates written with 'define_special_predicate' do not get any
  automatic mode checks, and are treated as having special mode handling
! by 'genrecog'.
  
!  The program 'genpreds' is responsible for generating code to test
  predicates.  It also writes a header file containing function
  declarations for all machine-specific predicates.  It is not necessary
! to declare these predicates in 'CPU-protos.h'.
  
  
  File: gccint.info,  Node: Constraints,  Next: Standard Names,  Prev: Predicates,  Up: Machine Desc
--- 23733,23757 ----
         return (regno >= FIRST_PSEUDO_REGISTER || GENERAL_REGNO_P (regno));
       })
  
!  Predicates written with â€˜define_predicateâ€™ automatically include a test
! that MODE is â€˜VOIDmodeâ€™, or OP has the same mode as MODE, or OP is a
! â€˜CONST_INTâ€™ or â€˜CONST_DOUBLEâ€™.  They do _not_ check specifically for
! integer â€˜CONST_DOUBLEâ€™, nor do they test that the value of either kind
  of constant fits in the requested mode.  This is because target-specific
  predicates that take constants usually have to do more stringent value
! checks anyway.  If you need the exact same treatment of â€˜CONST_INTâ€™ or
! â€˜CONST_DOUBLEâ€™ that the generic predicates provide, use a
! â€˜MATCH_OPERANDâ€™ subexpression to call â€˜const_int_operandâ€™,
! â€˜const_double_operandâ€™, or â€˜immediate_operandâ€™.
  
!  Predicates written with â€˜define_special_predicateâ€™ do not get any
  automatic mode checks, and are treated as having special mode handling
! by â€˜genrecogâ€™.
  
!  The program â€˜genpredsâ€™ is responsible for generating code to test
  predicates.  It also writes a header file containing function
  declarations for all machine-specific predicates.  It is not necessary
! to declare these predicates in â€˜CPU-protos.hâ€™.
  
  
  File: gccint.info,  Node: Constraints,  Next: Standard Names,  Prev: Predicates,  Up: Machine Desc
*************** File: gccint.info,  Node: Constraints,
*** 23755,23761 ****
  16.9 Operand Constraints
  ========================
  
! Each 'match_operand' in an instruction pattern can specify constraints
  for the operands allowed.  The constraints allow you to fine-tune
  matching within the set of operands allowed by the predicate.
  
--- 23759,23765 ----
  16.9 Operand Constraints
  ========================
  
! Each â€˜match_operandâ€™ in an instruction pattern can specify constraints
  for the operands allowed.  The constraints allow you to fine-tune
  matching within the set of operands allowed by the predicate.
  
*************** kinds of register; whether the operand c
*** 23764,23770 ****
  which kinds of address; whether the operand may be an immediate
  constant, and which possible values it may have.  Constraints can also
  require two operands to match.  Side-effects aren't allowed in operands
! of inline 'asm', unless '<' or '>' constraints are used, because there
  is no guarantee that the side effects will happen exactly once in an
  instruction that can update the addressing register.
  
--- 23768,23774 ----
  which kinds of address; whether the operand may be an immediate
  constant, and which possible values it may have.  Constraints can also
  require two operands to match.  Side-effects aren't allowed in operands
! of inline â€˜asmâ€™, unless â€˜<â€™ or â€˜>â€™ constraints are used, because there
  is no guarantee that the side effects will happen exactly once in an
  instruction that can update the addressing register.
  
*************** whitespace
*** 23796,23810 ****
       description even if they have different number of constraints and
       modifiers.
  
! 'm'
       A memory operand is allowed, with any kind of address that the
       machine supports in general.  Note that the letter used for the
       general memory constraint can be re-defined by a back end using the
!      'TARGET_MEM_CONSTRAINT' macro.
  
! 'o'
       A memory operand is allowed, but only if the address is
!      "offsettable".  This means that adding a small integer (actually,
       the width in bytes of the operand, as determined by its machine
       mode) may be added to the address and the result is also a valid
       memory address.
--- 23800,23814 ----
       description even if they have different number of constraints and
       modifiers.
  
! â€˜mâ€™
       A memory operand is allowed, with any kind of address that the
       machine supports in general.  Note that the letter used for the
       general memory constraint can be re-defined by a back end using the
!      â€˜TARGET_MEM_CONSTRAINTâ€™ macro.
  
! â€˜oâ€™
       A memory operand is allowed, but only if the address is
!      â€œoffsettableâ€�.  This means that adding a small integer (actually,
       the width in bytes of the operand, as determined by its machine
       mode) may be added to the address and the result is also a valid
       memory address.
*************** whitespace
*** 23818,23913 ****
       on the other addressing modes that the machine supports.
  
       Note that in an output operand which can be matched by another
!      operand, the constraint letter 'o' is valid only when accompanied
!      by both '<' (if the target machine has predecrement addressing) and
!      '>' (if the target machine has preincrement addressing).
  
! 'V'
       A memory operand that is not offsettable.  In other words, anything
!      that would fit the 'm' constraint but not the 'o' constraint.
  
! '<'
       A memory operand with autodecrement addressing (either predecrement
!      or postdecrement) is allowed.  In inline 'asm' this constraint is
       only allowed if the operand is used exactly once in an instruction
!      that can handle the side effects.  Not using an operand with '<' in
!      constraint string in the inline 'asm' pattern at all or using it in
       multiple instructions isn't valid, because the side effects
       wouldn't be performed or would be performed more than once.
!      Furthermore, on some targets the operand with '<' in constraint
       string must be accompanied by special instruction suffixes like
!      '%U0' instruction suffix on PowerPC or '%P0' on IA-64.
  
! '>'
       A memory operand with autoincrement addressing (either preincrement
!      or postincrement) is allowed.  In inline 'asm' the same
!      restrictions as for '<' apply.
  
! 'r'
       A register operand is allowed provided that it is in a general
       register.
  
! 'i'
       An immediate integer operand (one with constant value) is allowed.
       This includes symbolic constants whose values will be known only at
       assembly time or later.
  
! 'n'
       An immediate integer operand with a known numeric value is allowed.
       Many systems cannot support assembly-time constants for operands
       less than a word wide.  Constraints for these operands should use
!      'n' rather than 'i'.
  
! 'I', 'J', 'K', ... 'P'
!      Other letters in the range 'I' through 'P' may be defined in a
       machine-dependent fashion to permit immediate integer operands with
       explicit integer values in specified ranges.  For example, on the
!      68000, 'I' is defined to stand for the range of values 1 to 8.
       This is the range permitted as a shift count in the shift
       instructions.
  
! 'E'
!      An immediate floating operand (expression code 'const_double') is
       allowed, but only if the target floating point format is the same
       as that of the host machine (on which the compiler is running).
  
! 'F'
!      An immediate floating operand (expression code 'const_double' or
!      'const_vector') is allowed.
  
! 'G', 'H'
!      'G' and 'H' may be defined in a machine-dependent fashion to permit
       immediate floating operands in particular ranges of values.
  
! 's'
       An immediate integer operand whose value is not an explicit integer
       is allowed.
  
       This might appear strange; if an insn allows a constant operand
       with a value not known at compile time, it certainly must allow any
!      known value.  So why use 's' instead of 'i'?  Sometimes it allows
       better code to be generated.
  
       For example, on the 68000 in a fullword instruction it is possible
       to use an immediate operand; but if the immediate value is between
!      -128 and 127, better code results from loading the value into a
       register and using the register.  This is because the load into the
!      register can be done with a 'moveq' instruction.  We arrange for
!      this to happen by defining the letter 'K' to mean "any integer
!      outside the range -128 to 127", and then specifying 'Ks' in the
       operand constraints.
  
! 'g'
       Any register, memory or immediate integer operand is allowed,
       except for registers that are not general registers.
  
! 'X'
       Any operand whatsoever is allowed, even if it does not satisfy
!      'general_operand'.  This is normally used in the constraint of a
!      'match_scratch' when certain alternatives will not actually require
       a scratch register.
  
! '0', '1', '2', ... '9'
       An operand that matches the specified operand number is allowed.
       If a digit is used together with letters within the same
       alternative, the digit should come last.
--- 23822,23917 ----
       on the other addressing modes that the machine supports.
  
       Note that in an output operand which can be matched by another
!      operand, the constraint letter â€˜oâ€™ is valid only when accompanied
!      by both â€˜<â€™ (if the target machine has predecrement addressing) and
!      â€˜>â€™ (if the target machine has preincrement addressing).
  
! â€˜Vâ€™
       A memory operand that is not offsettable.  In other words, anything
!      that would fit the â€˜mâ€™ constraint but not the â€˜oâ€™ constraint.
  
! â€˜<â€™
       A memory operand with autodecrement addressing (either predecrement
!      or postdecrement) is allowed.  In inline â€˜asmâ€™ this constraint is
       only allowed if the operand is used exactly once in an instruction
!      that can handle the side effects.  Not using an operand with â€˜<â€™ in
!      constraint string in the inline â€˜asmâ€™ pattern at all or using it in
       multiple instructions isn't valid, because the side effects
       wouldn't be performed or would be performed more than once.
!      Furthermore, on some targets the operand with â€˜<â€™ in constraint
       string must be accompanied by special instruction suffixes like
!      â€˜%U0â€™ instruction suffix on PowerPC or â€˜%P0â€™ on IA-64.
  
! â€˜>â€™
       A memory operand with autoincrement addressing (either preincrement
!      or postincrement) is allowed.  In inline â€˜asmâ€™ the same
!      restrictions as for â€˜<â€™ apply.
  
! â€˜râ€™
       A register operand is allowed provided that it is in a general
       register.
  
! â€˜iâ€™
       An immediate integer operand (one with constant value) is allowed.
       This includes symbolic constants whose values will be known only at
       assembly time or later.
  
! â€˜nâ€™
       An immediate integer operand with a known numeric value is allowed.
       Many systems cannot support assembly-time constants for operands
       less than a word wide.  Constraints for these operands should use
!      â€˜nâ€™ rather than â€˜iâ€™.
  
! â€˜Iâ€™, â€˜Jâ€™, â€˜Kâ€™, ... â€˜Pâ€™
!      Other letters in the range â€˜Iâ€™ through â€˜Pâ€™ may be defined in a
       machine-dependent fashion to permit immediate integer operands with
       explicit integer values in specified ranges.  For example, on the
!      68000, â€˜Iâ€™ is defined to stand for the range of values 1 to 8.
       This is the range permitted as a shift count in the shift
       instructions.
  
! â€˜Eâ€™
!      An immediate floating operand (expression code â€˜const_doubleâ€™) is
       allowed, but only if the target floating point format is the same
       as that of the host machine (on which the compiler is running).
  
! â€˜Fâ€™
!      An immediate floating operand (expression code â€˜const_doubleâ€™ or
!      â€˜const_vectorâ€™) is allowed.
  
! â€˜Gâ€™, â€˜Hâ€™
!      â€˜Gâ€™ and â€˜Hâ€™ may be defined in a machine-dependent fashion to permit
       immediate floating operands in particular ranges of values.
  
! â€˜sâ€™
       An immediate integer operand whose value is not an explicit integer
       is allowed.
  
       This might appear strange; if an insn allows a constant operand
       with a value not known at compile time, it certainly must allow any
!      known value.  So why use â€˜sâ€™ instead of â€˜iâ€™?  Sometimes it allows
       better code to be generated.
  
       For example, on the 68000 in a fullword instruction it is possible
       to use an immediate operand; but if the immediate value is between
!      âˆ’128 and 127, better code results from loading the value into a
       register and using the register.  This is because the load into the
!      register can be done with a â€˜moveqâ€™ instruction.  We arrange for
!      this to happen by defining the letter â€˜Kâ€™ to mean "any integer
!      outside the range âˆ’128 to 127", and then specifying â€˜Ksâ€™ in the
       operand constraints.
  
! â€˜gâ€™
       Any register, memory or immediate integer operand is allowed,
       except for registers that are not general registers.
  
! â€˜Xâ€™
       Any operand whatsoever is allowed, even if it does not satisfy
!      â€˜general_operandâ€™.  This is normally used in the constraint of a
!      â€˜match_scratchâ€™ when certain alternatives will not actually require
       a scratch register.
  
! â€˜0â€™, â€˜1â€™, â€˜2â€™, ... â€˜9â€™
       An operand that matches the specified operand number is allowed.
       If a digit is used together with letters within the same
       alternative, the digit should come last.
*************** whitespace
*** 23915,23925 ****
       This number is allowed to be more than a single digit.  If multiple
       digits are encountered consecutively, they are interpreted as a
       single decimal integer.  There is scant chance for ambiguity, since
!      to-date it has never been desirable that '10' be interpreted as
       matching either operand 1 _or_ operand 0.  Should this be desired,
       one can use multiple alternatives instead.
  
!      This is called a "matching constraint" and what it really means is
       that the assembler has only a single operand that fills two roles
       considered separate in the RTL insn.  For example, an add insn has
       two input operands and one output operand in the RTL, but on most
--- 23919,23929 ----
       This number is allowed to be more than a single digit.  If multiple
       digits are encountered consecutively, they are interpreted as a
       single decimal integer.  There is scant chance for ambiguity, since
!      to-date it has never been desirable that â€˜10â€™ be interpreted as
       matching either operand 1 _or_ operand 0.  Should this be desired,
       one can use multiple alternatives instead.
  
!      This is called a â€œmatching constraintâ€� and what it really means is
       that the assembler has only a single operand that fills two roles
       considered separate in the RTL insn.  For example, an add insn has
       two input operands and one output operand in the RTL, but on most
*************** whitespace
*** 23936,23961 ****
  
       For operands to match in a particular case usually means that they
       are identical-looking RTL expressions.  But in a few special cases
!      specific kinds of dissimilarity are allowed.  For example, '*x' as
!      an input operand will match '*x++' as an output operand.  For
       proper results in such cases, the output template should always use
       the output-operand's number when printing the operand.
  
! 'p'
       An operand that is a valid memory address is allowed.  This is for
       "load address" and "push address" instructions.
  
!      'p' in the constraint must be accompanied by 'address_operand' as
!      the predicate in the 'match_operand'.  This predicate interprets
!      the mode specified in the 'match_operand' as the mode of the memory
       reference for which the address would be valid.
  
! ':'
       This constraint, allowed only in input operands, says the inline
!      'asm' pattern defines specific function or variable symbol.  The
       constraint shouldn't be mixed with other constraints on the same
       operand and the operand should be address of a function or
!      non-automatic variable.  Best used with the 'cc' modifier when
       printing the operand, so that even in position independent code it
       prints as a label.
  
--- 23940,23965 ----
  
       For operands to match in a particular case usually means that they
       are identical-looking RTL expressions.  But in a few special cases
!      specific kinds of dissimilarity are allowed.  For example, â€˜*xâ€™ as
!      an input operand will match â€˜*x++â€™ as an output operand.  For
       proper results in such cases, the output template should always use
       the output-operand's number when printing the operand.
  
! â€˜pâ€™
       An operand that is a valid memory address is allowed.  This is for
       "load address" and "push address" instructions.
  
!      â€˜pâ€™ in the constraint must be accompanied by â€˜address_operandâ€™ as
!      the predicate in the â€˜match_operandâ€™.  This predicate interprets
!      the mode specified in the â€˜match_operandâ€™ as the mode of the memory
       reference for which the address would be valid.
  
! â€˜:â€™
       This constraint, allowed only in input operands, says the inline
!      â€˜asmâ€™ pattern defines specific function or variable symbol.  The
       constraint shouldn't be mixed with other constraints on the same
       operand and the operand should be address of a function or
!      non-automatic variable.  Best used with the â€˜ccâ€™ modifier when
       printing the operand, so that even in position independent code it
       prints as a label.
  
*************** whitespace
*** 23965,23971 ****
  OTHER-LETTERS
       Other letters can be defined in machine-dependent fashion to stand
       for particular classes of registers or other arbitrary operand
!      types.  'd', 'a' and 'f' are defined on the 68000/68020 to stand
       for data, address and floating point registers.
  
   In order to have valid assembler code, each operand must satisfy its
--- 23969,23975 ----
  OTHER-LETTERS
       Other letters can be defined in machine-dependent fashion to stand
       for particular classes of registers or other arbitrary operand
!      types.  â€˜dâ€™, â€˜aâ€™ and â€˜fâ€™ are defined on the 68000/68020 to stand
       for data, address and floating point registers.
  
   In order to have valid assembler code, each operand must satisfy its
*************** The constraints don't need to _allow_ an
*** 24026,24060 ****
  the case, they do not constrain--but they must at least point the way to
  reloading any possible operand so that it will fit.
  
!    * If the constraint accepts whatever operands the predicate permits,
       there is no problem: reloading is never necessary for this operand.
  
       For example, an operand whose constraints permit everything except
       registers is safe provided its predicate rejects registers.
  
       An operand whose predicate accepts only constant values is safe
!      provided its constraints include the letter 'i'.  If any possible
!      constant value is accepted, then nothing less than 'i' will do; if
       the predicate is more selective, then the constraints may also be
       more selective.
  
!    * Any operand expression can be reloaded by copying it into a
       register.  So if an operand's constraints allow some kind of
       register, it is certain to be safe.  It need not permit all classes
       of registers; the compiler knows how to copy a register into
       another register of the proper class in order to make an
       instruction valid.
  
!    * A nonoffsettable memory reference can be reloaded by copying the
!      address into a register.  So if the constraint uses the letter 'o',
       all memory references are taken care of.
  
!    * A constant operand can be reloaded by allocating space in memory to
       hold it as preinitialized data.  Then the memory reference can be
       used in place of the constant.  So if the constraint uses the
!      letters 'o' or 'm', constant operands are not a problem.
  
!    * If the constraint permits a constant and a pseudo register used in
       an insn was not allocated to a hard register and is equivalent to a
       constant, the register will be replaced with the constant.  If the
       predicate does not permit a constant and the insn is re-recognized
--- 24030,24064 ----
  the case, they do not constrain--but they must at least point the way to
  reloading any possible operand so that it will fit.
  
!    â€¢ If the constraint accepts whatever operands the predicate permits,
       there is no problem: reloading is never necessary for this operand.
  
       For example, an operand whose constraints permit everything except
       registers is safe provided its predicate rejects registers.
  
       An operand whose predicate accepts only constant values is safe
!      provided its constraints include the letter â€˜iâ€™.  If any possible
!      constant value is accepted, then nothing less than â€˜iâ€™ will do; if
       the predicate is more selective, then the constraints may also be
       more selective.
  
!    â€¢ Any operand expression can be reloaded by copying it into a
       register.  So if an operand's constraints allow some kind of
       register, it is certain to be safe.  It need not permit all classes
       of registers; the compiler knows how to copy a register into
       another register of the proper class in order to make an
       instruction valid.
  
!    â€¢ A nonoffsettable memory reference can be reloaded by copying the
!      address into a register.  So if the constraint uses the letter â€˜oâ€™,
       all memory references are taken care of.
  
!    â€¢ A constant operand can be reloaded by allocating space in memory to
       hold it as preinitialized data.  Then the memory reference can be
       used in place of the constant.  So if the constraint uses the
!      letters â€˜oâ€™ or â€˜mâ€™, constant operands are not a problem.
  
!    â€¢ If the constraint permits a constant and a pseudo register used in
       an insn was not allocated to a hard register and is equivalent to a
       constant, the register will be replaced with the constant.  If the
       predicate does not permit a constant and the insn is re-recognized
*************** does not know how to copy a register tem
*** 24068,24078 ****
  
   If the predicate accepts a unary operator, the constraint applies to
  the operand.  For example, the MIPS processor at ISA level 3 supports an
! instruction which adds two registers in 'SImode' to produce a 'DImode'
  result, but only if the registers are correctly sign extended.  This
! predicate for the input operands accepts a 'sign_extend' of an 'SImode'
  register.  Write the constraint to indicate the type of register that is
! required for the operand of the 'sign_extend'.
  
  
  File: gccint.info,  Node: Multi-Alternative,  Next: Class Preferences,  Prev: Simple Constraints,  Up: Constraints
--- 24072,24082 ----
  
   If the predicate accepts a unary operator, the constraint applies to
  the operand.  For example, the MIPS processor at ISA level 3 supports an
! instruction which adds two registers in â€˜SImodeâ€™ to produce a â€˜DImodeâ€™
  result, but only if the registers are correctly sign extended.  This
! predicate for the input operands accepts a â€˜sign_extendâ€™ of an â€˜SImodeâ€™
  register.  Write the constraint to indicate the type of register that is
! required for the operand of the â€˜sign_extendâ€™.
  
  
  File: gccint.info,  Node: Multi-Alternative,  Next: Class Preferences,  Prev: Simple Constraints,  Up: Constraints
*************** on the 68000:
*** 24101,24110 ****
                       (match_operand:SI 2 "general_operand" "dKs,dmKs")))]
         ...)
  
!  The first alternative has 'm' (memory) for operand 0, '0' for operand 1
! (meaning it must match operand 0), and 'dKs' for operand 2.  The second
! alternative has 'd' (data register) for operand 0, '0' for operand 1,
! and 'dmKs' for operand 2.  The '=' and '%' in the constraints apply to
  all the alternatives; their meaning is explained in a later section
  (*note Modifiers::).
  
--- 24105,24114 ----
                       (match_operand:SI 2 "general_operand" "dKs,dmKs")))]
         ...)
  
!  The first alternative has â€˜mâ€™ (memory) for operand 0, â€˜0â€™ for operand 1
! (meaning it must match operand 0), and â€˜dKsâ€™ for operand 2.  The second
! alternative has â€˜dâ€™ (data register) for operand 0, â€˜0â€™ for operand 1,
! and â€˜dmKsâ€™ for operand 2.  The â€˜=â€™ and â€˜%â€™ in the constraints apply to
  all the alternatives; their meaning is explained in a later section
  (*note Modifiers::).
  
*************** Otherwise, for each alternative, the com
*** 24113,24144 ****
  instructions must be added to copy the operands so that that alternative
  applies.  The alternative requiring the least copying is chosen.  If two
  alternatives need the same amount of copying, the one that comes first
! is chosen.  These choices can be altered with the '?' and '!'
  characters:
  
! '?'
!      Disparage slightly the alternative that the '?' appears in, as a
       choice when no alternative applies exactly.  The compiler regards
!      this alternative as one unit more costly for each '?' that appears
       in it.
  
! '!'
!      Disparage severely the alternative that the '!' appears in.  This
       alternative can still be used if it fits without reloading, but if
       reloading is needed, some other alternative will be used.
  
! '^'
!      This constraint is analogous to '?' but it disparages slightly the
!      alternative only if the operand with the '^' needs a reload.
  
! '$'
!      This constraint is analogous to '!' but it disparages severely the
!      alternative only if the operand with the '$' needs a reload.
  
   When an insn pattern has multiple alternatives in its constraints,
  often the appearance of the assembler code is determined mostly by which
  alternative was matched.  When this is so, the C code for writing the
! assembler code can use the variable 'which_alternative', which is the
  ordinal number of the alternative that was actually satisfied (0 for the
  first, 1 for the second alternative, etc.).  *Note Output Statement::.
  
--- 24117,24148 ----
  instructions must be added to copy the operands so that that alternative
  applies.  The alternative requiring the least copying is chosen.  If two
  alternatives need the same amount of copying, the one that comes first
! is chosen.  These choices can be altered with the â€˜?â€™ and â€˜!â€™
  characters:
  
! â€˜?â€™
!      Disparage slightly the alternative that the â€˜?â€™ appears in, as a
       choice when no alternative applies exactly.  The compiler regards
!      this alternative as one unit more costly for each â€˜?â€™ that appears
       in it.
  
! â€˜!â€™
!      Disparage severely the alternative that the â€˜!â€™ appears in.  This
       alternative can still be used if it fits without reloading, but if
       reloading is needed, some other alternative will be used.
  
! â€˜^â€™
!      This constraint is analogous to â€˜?â€™ but it disparages slightly the
!      alternative only if the operand with the â€˜^â€™ needs a reload.
  
! â€˜$â€™
!      This constraint is analogous to â€˜!â€™ but it disparages severely the
!      alternative only if the operand with the â€˜$â€™ needs a reload.
  
   When an insn pattern has multiple alternatives in its constraints,
  often the appearance of the assembler code is determined mostly by which
  alternative was matched.  When this is so, the C code for writing the
! assembler code can use the variable â€˜which_alternativeâ€™, which is the
  ordinal number of the alternative that was actually satisfied (0 for the
  first, 1 for the second alternative, etc.).  *Note Output Statement::.
  
*************** The operand constraints have another fun
*** 24152,24160 ****
  to decide which kind of hardware register a pseudo register is best
  allocated to.  The compiler examines the constraints that apply to the
  insns that use the pseudo register, looking for the machine-dependent
! letters such as 'd' and 'a' that specify classes of registers.  The
  pseudo register is put in whichever class gets the most "votes".  The
! constraint letters 'g' and 'r' also vote: they vote in favor of a
  general register.  The machine description says which registers are
  considered general.
  
--- 24156,24164 ----
  to decide which kind of hardware register a pseudo register is best
  allocated to.  The compiler examines the constraints that apply to the
  insns that use the pseudo register, looking for the machine-dependent
! letters such as â€˜dâ€™ and â€˜aâ€™ that specify classes of registers.  The
  pseudo register is put in whichever class gets the most "votes".  The
! constraint letters â€˜gâ€™ and â€˜râ€™ also vote: they vote in favor of a
  general register.  The machine description says which registers are
  considered general.
  
*************** File: gccint.info,  Node: Modifiers,  Ne
*** 24169,24201 ****
  
  Here are constraint modifier characters.
  
! '='
       Means that this operand is written to by this instruction: the
       previous value is discarded and replaced by new data.
  
! '+'
       Means that this operand is both read and written by the
       instruction.
  
       When the compiler fixes up the operands to satisfy the constraints,
       it needs to know which operands are read by the instruction and
!      which are written by it.  '=' identifies an operand which is only
!      written; '+' identifies an operand that is both read and written;
       all other operands are assumed to only be read.
  
!      If you specify '=' or '+' in a constraint, you put it in the first
       character of the constraint string.
  
! '&'
       Means (in a particular alternative) that this operand is an
!      "earlyclobber" operand, which is written before the instruction is
       finished using the input operands.  Therefore, this operand may not
       lie in a register that is read by the instruction or as part of any
       memory address.
  
!      '&' applies only to the alternative in which it is written.  In
       constraints with multiple alternatives, sometimes one alternative
!      requires '&' while others do not.  See, for example, the 'movdf'
       insn of the 68000.
  
       An operand which is read by the instruction can be tied to an
--- 24173,24205 ----
  
  Here are constraint modifier characters.
  
! â€˜=â€™
       Means that this operand is written to by this instruction: the
       previous value is discarded and replaced by new data.
  
! â€˜+â€™
       Means that this operand is both read and written by the
       instruction.
  
       When the compiler fixes up the operands to satisfy the constraints,
       it needs to know which operands are read by the instruction and
!      which are written by it.  â€˜=â€™ identifies an operand which is only
!      written; â€˜+â€™ identifies an operand that is both read and written;
       all other operands are assumed to only be read.
  
!      If you specify â€˜=â€™ or â€˜+â€™ in a constraint, you put it in the first
       character of the constraint string.
  
! â€˜&â€™
       Means (in a particular alternative) that this operand is an
!      â€œearlyclobberâ€� operand, which is written before the instruction is
       finished using the input operands.  Therefore, this operand may not
       lie in a register that is read by the instruction or as part of any
       memory address.
  
!      â€˜&â€™ applies only to the alternative in which it is written.  In
       constraints with multiple alternatives, sometimes one alternative
!      requires â€˜&â€™ while others do not.  See, for example, the â€˜movdfâ€™
       insn of the 68000.
  
       An operand which is read by the instruction can be tied to an
*************** Here are constraint modifier characters.
*** 24203,24225 ****
       early result is written.  Adding alternatives of this form often
       allows GCC to produce better code when only some of the read
       operands can be affected by the earlyclobber.  See, for example,
!      the 'mulsi3' insn of the ARM.
  
!      Furthermore, if the "earlyclobber" operand is also a read/write
       operand, then that operand is written only after it's used.
  
!      '&' does not obviate the need to write '=' or '+'.  As
!      "earlyclobber" operands are always written, a read-only
!      "earlyclobber" operand is ill-formed and will be rejected by the
       compiler.
  
! '%'
       Declares the instruction to be commutative for this operand and the
       following operand.  This means that the compiler may interchange
       the two operands if that is the cheapest way to make all operands
!      fit the constraints.  '%' applies to all alternatives and must
       appear as the first character in the constraint.  Only read-only
!      operands can use '%'.
  
       This is often used in patterns for addition instructions that
       really have only two operands: the result must go in one of the
--- 24207,24229 ----
       early result is written.  Adding alternatives of this form often
       allows GCC to produce better code when only some of the read
       operands can be affected by the earlyclobber.  See, for example,
!      the â€˜mulsi3â€™ insn of the ARM.
  
!      Furthermore, if the â€œearlyclobberâ€� operand is also a read/write
       operand, then that operand is written only after it's used.
  
!      â€˜&â€™ does not obviate the need to write â€˜=â€™ or â€˜+â€™.  As
!      â€œearlyclobberâ€� operands are always written, a read-only
!      â€œearlyclobberâ€� operand is ill-formed and will be rejected by the
       compiler.
  
! â€˜%â€™
       Declares the instruction to be commutative for this operand and the
       following operand.  This means that the compiler may interchange
       the two operands if that is the cheapest way to make all operands
!      fit the constraints.  â€˜%â€™ applies to all alternatives and must
       appear as the first character in the constraint.  Only read-only
!      operands can use â€˜%â€™.
  
       This is often used in patterns for addition instructions that
       really have only two operands: the result must go in one of the
*************** Here are constraint modifier characters.
*** 24236,24254 ****
       modifier if the two alternatives are strictly identical; this would
       only waste time in the reload pass.  The modifier is not
       operational after register allocation, so the result of
!      'define_peephole2' and 'define_split's performed after reload
!      cannot rely on '%' to make the intended insn match.
  
! '#'
       Says that all following characters, up to the next comma, are to be
       ignored as a constraint.  They are significant only for choosing
       register preferences.
  
! '*'
       Says that the following character should be ignored when choosing
!      register preferences.  '*' has no effect on the meaning of the
       constraint as a constraint, and no effect on reloading.  For LRA
!      '*' additionally disparages slightly the alternative if the
       following character matches the operand.
  
       Here is an example: the 68000 has an instruction to sign-extend a
--- 24240,24258 ----
       modifier if the two alternatives are strictly identical; this would
       only waste time in the reload pass.  The modifier is not
       operational after register allocation, so the result of
!      â€˜define_peephole2â€™ and â€˜define_splitâ€™s performed after reload
!      cannot rely on â€˜%â€™ to make the intended insn match.
  
! â€˜#â€™
       Says that all following characters, up to the next comma, are to be
       ignored as a constraint.  They are significant only for choosing
       register preferences.
  
! â€˜*â€™
       Says that the following character should be ignored when choosing
!      register preferences.  â€˜*â€™ has no effect on the meaning of the
       constraint as a constraint, and no effect on reloading.  For LRA
!      â€˜*â€™ additionally disparages slightly the alternative if the
       following character matches the operand.
  
       Here is an example: the 68000 has an instruction to sign-extend a
*************** Here are constraint modifier characters.
*** 24256,24262 ****
       copying it into an address register.  While either kind of register
       is acceptable, the constraints on an address-register destination
       are less strict, so it is best if register allocation makes an
!      address register its goal.  Therefore, '*' is used so that the 'd'
       constraint letter (for data register) is ignored when computing
       register preferences.
  
--- 24260,24266 ----
       copying it into an address register.  While either kind of register
       is acceptable, the constraints on an address-register destination
       are less strict, so it is best if register allocation makes an
!      address register its goal.  Therefore, â€˜*â€™ is used so that the â€˜dâ€™
       constraint letter (for data register) is ignored when computing
       register preferences.
  
*************** Here are constraint modifier characters.
*** 24266,24278 ****
                     (match_operand:HI 1 "general_operand" "0,g")))]
              ...)
  
! '-'
       Says that the selected following constraints within the same
       alternative should be matched differently.  Normally in PIC code
!      symbolic operands in constraints like 'i', 's' or 'n' are not
!      allowed at all or severely restricted.  The '-' modifier, which is
       only allowed outside of functions, allows symbolic operands even in
!      PIC code.  This modifier is usually used together with the 'cc'
       operand modifier.
  
            extern void foo (void), bar (void);
--- 24270,24282 ----
                     (match_operand:HI 1 "general_operand" "0,g")))]
              ...)
  
! â€˜-â€™
       Says that the selected following constraints within the same
       alternative should be matched differently.  Normally in PIC code
!      symbolic operands in constraints like â€˜iâ€™, â€˜sâ€™ or â€˜nâ€™ are not
!      allowed at all or severely restricted.  The â€˜-â€™ modifier, which is
       only allowed outside of functions, allows symbolic operands even in
!      PIC code.  This modifier is usually used together with the â€˜ccâ€™
       operand modifier.
  
            extern void foo (void), bar (void);
*************** Here are constraint modifier characters.
*** 24281,24288 ****
            asm (".globl %cc0, %cc2; .text; %cc0: call %cc1; ret; .data; %cc2: .word %cc3"
                 :: ":" (foo), "-s" (&bar), ":" (&w), "-i" (&v));
  
!      This asm declaration tells the compiler it defines function 'foo'
!      and variable 'w' and uses function 'bar' and variable 'v'.  This
       will compile even with PIC, but it is up to the user to ensure it
       will assemble correctly and have the expected behavior.
  
--- 24285,24292 ----
            asm (".globl %cc0, %cc2; .text; %cc0: call %cc1; ret; .data; %cc2: .word %cc3"
                 :: ":" (foo), "-s" (&bar), ":" (&w), "-i" (&v));
  
!      This asm declaration tells the compiler it defines function â€˜fooâ€™
!      and variable â€˜wâ€™ and uses function â€˜barâ€™ and variable â€˜vâ€™.  This
       will compile even with PIC, but it is up to the user to ensure it
       will assemble correctly and have the expected behavior.
  
*************** File: gccint.info,  Node: Machine Constr
*** 24293,24817 ****
  ------------------------------------------
  
  Whenever possible, you should use the general-purpose constraint letters
! in 'asm' arguments, since they will convey meaning more readily to
  people reading your code.  Failing that, use the constraint letters that
  usually have very similar meanings across architectures.  The most
! commonly used constraints are 'm' and 'r' (for memory and
  general-purpose registers respectively; *note Simple Constraints::), and
! 'I', usually the letter indicating the most common immediate-constant
  format.
  
   Each architecture defines additional constraints.  These constraints
  are used by the compiler itself for instruction generation, as well as
! for 'asm' statements; therefore, some of the constraints are not
! particularly useful for 'asm'.  Here is a summary of some of the
  machine-dependent constraints available on some particular machines; it
! includes both constraints that are useful for 'asm' and constraints that
  aren't.  The compiler source file mentioned in the table heading for
  each architecture is the definitive reference for the meanings of that
  architecture's constraints.
  
! _AArch64 family--'config/aarch64/constraints.md'_
!      'k'
!           The stack pointer register ('SP')
  
!      'w'
            Floating point register, Advanced SIMD vector register or SVE
            vector register
  
!      'x'
!           Like 'w', but restricted to registers 0 to 15 inclusive.
  
!      'y'
!           Like 'w', but restricted to registers 0 to 7 inclusive.
  
!      'Upl'
!           One of the low eight SVE predicate registers ('P0' to 'P7')
  
!      'Upa'
!           Any of the SVE predicate registers ('P0' to 'P15')
  
!      'I'
            Integer constant that is valid as an immediate operand in an
!           'ADD' instruction
  
!      'J'
            Integer constant that is valid as an immediate operand in a
!           'SUB' instruction (once negated)
  
!      'K'
            Integer constant that can be used with a 32-bit logical
            instruction
  
!      'L'
            Integer constant that can be used with a 64-bit logical
            instruction
  
!      'M'
            Integer constant that is valid as an immediate operand in a
!           32-bit 'MOV' pseudo instruction.  The 'MOV' may be assembled
            to one of several different machine instructions depending on
            the value
  
!      'N'
            Integer constant that is valid as an immediate operand in a
!           64-bit 'MOV' pseudo instruction
  
!      'S'
            An absolute symbolic address or a label reference
  
!      'Y'
            Floating point constant zero
  
!      'Z'
            Integer constant zero
  
!      'Ush'
            The high part (bits 12 and upwards) of the pc-relative address
            of a symbol within 4GB of the instruction
  
!      'Q'
            A memory address which uses a single base register with no
            offset
  
!      'Ump'
            A memory address suitable for a load/store pair instruction in
            SI, DI, SF and DF modes
  
! _AMD GCN --'config/gcn/constraints.md'_
!      'I'
!           Immediate integer in the range -16 to 64
  
!      'J'
            Immediate 16-bit signed integer
  
!      'Kf'
!           Immediate constant -1
  
!      'L'
            Immediate 15-bit unsigned integer
  
!      'A'
            Immediate constant that can be inlined in an instruction
!           encoding: integer -16..64, or float 0.0, +/-0.5, +/-1.0,
!           +/-2.0, +/-4.0, 1.0/(2.0*PI)
  
!      'B'
            Immediate 32-bit signed integer that can be attached to an
            instruction encoding
  
!      'C'
!           Immediate 32-bit integer in range -16..4294967295 (i.e.
!           32-bit unsigned integer or 'A' constraint)
  
!      'DA'
!           Immediate 64-bit constant that can be split into two 'A'
            constants
  
!      'DB'
!           Immediate 64-bit constant that can be split into two 'B'
            constants
  
!      'U'
!           Any 'unspec'
  
!      'Y'
!           Any 'symbol_ref' or 'label_ref'
  
!      'v'
            VGPR register
  
!      'a'
            Accelerator VGPR register (CDNA1 onwards)
  
!      'Sg'
            SGPR register
  
!      'SD'
            SGPR registers valid for instruction destinations, including
            VCC, M0 and EXEC
  
!      'SS'
            SGPR registers valid for instruction sources, including VCC,
            M0, EXEC and SCC
  
!      'Sm'
            SGPR registers valid as a source for scalar memory
            instructions (excludes M0 and EXEC)
  
!      'Sv'
            SGPR registers valid as a source or destination for vector
            instructions (excludes EXEC)
  
!      'ca'
            All condition registers: SCC, VCCZ, EXECZ
  
!      'cs'
            Scalar condition register: SCC
  
!      'cV'
            Vector condition register: VCC, VCC_LO, VCC_HI
  
!      'e'
            EXEC register (EXEC_LO and EXEC_HI)
  
!      'RB'
!           Memory operand with address space suitable for 'buffer_*'
            instructions
  
!      'RF'
!           Memory operand with address space suitable for 'flat_*'
            instructions
  
!      'RS'
!           Memory operand with address space suitable for 's_*'
            instructions
  
!      'RL'
!           Memory operand with address space suitable for 'ds_*' LDS
            instructions
  
!      'RG'
!           Memory operand with address space suitable for 'ds_*' GDS
            instructions
  
!      'RD'
!           Memory operand with address space suitable for any 'ds_*'
            instructions
  
!      'RM'
!           Memory operand with address space suitable for 'global_*'
            instructions
  
! _ARC --'config/arc/constraints.md'_
!      'q'
!           Registers usable in ARCompact 16-bit instructions: 'r0'-'r3',
!           'r12'-'r15'.  This constraint can only match when the '-mq'
            option is in effect.
  
!      'e'
            Registers usable as base-regs of memory addresses in ARCompact
!           16-bit memory instructions: 'r0'-'r3', 'r12'-'r15', 'sp'.
!           This constraint can only match when the '-mq' option is in
            effect.
!      'D'
!           ARC FPX (dpfp) 64-bit registers.  'D0', 'D1'.
  
!      'I'
            A signed 12-bit integer constant.
  
!      'Cal'
            constant for arithmetic/logical operations.  This might be any
            constant that can be put into a long immediate by the assmbler
            or linker without involving a PIC relocation.
  
!      'K'
            A 3-bit unsigned integer constant.
  
!      'L'
            A 6-bit unsigned integer constant.
  
!      'CnL'
            One's complement of a 6-bit unsigned integer constant.
  
!      'CmL'
            Two's complement of a 6-bit unsigned integer constant.
  
!      'M'
            A 5-bit unsigned integer constant.
  
!      'O'
            A 7-bit unsigned integer constant.
  
!      'P'
            A 8-bit unsigned integer constant.
  
!      'H'
            Any const_double value.
  
! _ARM family--'config/arm/constraints.md'_
  
!      'h'
!           In Thumb state, the core registers 'r8'-'r15'.
  
!      'k'
            The stack pointer register.
  
!      'l'
!           In Thumb State the core registers 'r0'-'r7'.  In ARM state
!           this is an alias for the 'r' constraint.
  
!      't'
!           VFP floating-point registers 's0'-'s31'.  Used for 32 bit
            values.
  
!      'w'
!           VFP floating-point registers 'd0'-'d31' and the appropriate
!           subset 'd0'-'d15' based on command line options.  Used for 64
            bit values only.  Not valid for Thumb1.
  
!      'y'
            The iWMMX co-processor registers.
  
!      'z'
            The iWMMX GR registers.
  
!      'G'
            The floating-point constant 0.0
  
!      'I'
            Integer that is valid as an immediate operand in a data
            processing instruction.  That is, an integer in the range 0 to
            255 rotated by a multiple of 2
  
!      'J'
!           Integer in the range -4095 to 4095
  
!      'K'
!           Integer that satisfies constraint 'I' when inverted (ones
            complement)
  
!      'L'
!           Integer that satisfies constraint 'I' when negated (twos
            complement)
  
!      'M'
            Integer in the range 0 to 32
  
!      'Q'
            A memory reference where the exact address is in a single
!           register (''m'' is preferable for 'asm' statements)
  
!      'R'
            An item in the constant pool
  
!      'S'
            A symbol in the text segment of the current file
  
!      'Uv'
            A memory reference suitable for VFP load/store insns
            (reg+constant offset)
  
!      'Uy'
            A memory reference suitable for iWMMXt load/store
            instructions.
  
!      'Uq'
            A memory reference suitable for the ARMv4 ldrsb instruction.
  
! _AVR family--'config/avr/constraints.md'_
!      'l'
            Registers from r0 to r15
  
!      'a'
            Registers from r16 to r23
  
!      'd'
            Registers from r16 to r31
  
!      'w'
            Registers from r24 to r31.  These registers can be used in
!           'adiw' command
  
!      'e'
            Pointer register (r26-r31)
  
!      'b'
            Base pointer register (r28-r31)
  
!      'q'
            Stack pointer register (SPH:SPL)
  
!      't'
            Temporary register r0
  
!      'x'
            Register pair X (r27:r26)
  
!      'y'
            Register pair Y (r29:r28)
  
!      'z'
            Register pair Z (r31:r30)
  
!      'I'
!           Constant greater than -1, less than 64
  
!      'J'
!           Constant greater than -64, less than 1
  
!      'K'
            Constant integer 2
  
!      'L'
            Constant integer 0
  
!      'M'
            Constant that fits in 8 bits
  
!      'N'
!           Constant integer -1
  
!      'O'
            Constant integer 8, 16, or 24
  
!      'P'
            Constant integer 1
  
!      'G'
            A floating point constant 0.0
  
!      'Q'
            A memory address based on Y or Z pointer with displacement.
  
! _Blackfin family--'config/bfin/constraints.md'_
!      'a'
            P register
  
!      'd'
            D register
  
!      'z'
            A call clobbered P register.
  
!      'qN'
            A single register.  If N is in the range 0 to 7, the
!           corresponding D register.  If it is 'A', then the register P0.
  
!      'D'
            Even-numbered D register
  
!      'W'
            Odd-numbered D register
  
!      'e'
            Accumulator register.
  
!      'A'
            Even-numbered accumulator register.
  
!      'B'
            Odd-numbered accumulator register.
  
!      'b'
            I register
  
!      'v'
            B register
  
!      'f'
            M register
  
!      'c'
            Registers used for circular buffering, i.e. I, B, or L
            registers.
  
!      'C'
            The CC register.
  
!      't'
            LT0 or LT1.
  
!      'k'
            LC0 or LC1.
  
!      'u'
            LB0 or LB1.
  
!      'x'
            Any D, P, B, M, I or L register.
  
!      'y'
            Additional registers typically used only in prologues and
            epilogues: RETS, RETN, RETI, RETX, RETE, ASTAT, SEQSTAT and
            USP.
  
!      'w'
            Any register except accumulators or CC.
  
!      'Ksh'
!           Signed 16 bit integer (in the range -32768 to 32767)
  
!      'Kuh'
            Unsigned 16 bit integer (in the range 0 to 65535)
  
!      'Ks7'
!           Signed 7 bit integer (in the range -64 to 63)
  
!      'Ku7'
            Unsigned 7 bit integer (in the range 0 to 127)
  
!      'Ku5'
            Unsigned 5 bit integer (in the range 0 to 31)
  
!      'Ks4'
!           Signed 4 bit integer (in the range -8 to 7)
  
!      'Ks3'
!           Signed 3 bit integer (in the range -3 to 4)
  
!      'Ku3'
            Unsigned 3 bit integer (in the range 0 to 7)
  
!      'PN'
            Constant N, where N is a single-digit constant in the range 0
            to 4.
  
!      'PA'
            An integer equal to one of the MACFLAG_XXX constants that is
            suitable for use with either accumulator.
  
!      'PB'
            An integer equal to one of the MACFLAG_XXX constants that is
            suitable for use only with accumulator A1.
  
!      'M1'
            Constant 255.
  
!      'M2'
            Constant 65535.
  
!      'J'
            An integer constant with exactly a single bit set.
  
!      'L'
            An integer constant with all bits set except exactly one.
  
!      'H'
!      'Q'
            Any SYMBOL_REF.
  
! _C-SKY--'config/csky/constraints.md'_
  
!      'a'
            The mini registers r0 - r7.
  
!      'b'
            The low registers r0 - r15.
  
!      'c'
            C register.
  
!      'y'
            HI and LO registers.
  
!      'l'
            LO register.
  
!      'h'
            HI register.
  
!      'v'
            Vector registers.
  
!      'z'
            Stack pointer register (SP).
  
!      'Q'
            A memory address which uses a base register with a short
            offset or with a index register with its scale.
  
!      'W'
            A memory address which uses a base register with a index
            register with its scale.
  
--- 24297,24821 ----
  ------------------------------------------
  
  Whenever possible, you should use the general-purpose constraint letters
! in â€˜asmâ€™ arguments, since they will convey meaning more readily to
  people reading your code.  Failing that, use the constraint letters that
  usually have very similar meanings across architectures.  The most
! commonly used constraints are â€˜mâ€™ and â€˜râ€™ (for memory and
  general-purpose registers respectively; *note Simple Constraints::), and
! â€˜Iâ€™, usually the letter indicating the most common immediate-constant
  format.
  
   Each architecture defines additional constraints.  These constraints
  are used by the compiler itself for instruction generation, as well as
! for â€˜asmâ€™ statements; therefore, some of the constraints are not
! particularly useful for â€˜asmâ€™.  Here is a summary of some of the
  machine-dependent constraints available on some particular machines; it
! includes both constraints that are useful for â€˜asmâ€™ and constraints that
  aren't.  The compiler source file mentioned in the table heading for
  each architecture is the definitive reference for the meanings of that
  architecture's constraints.
  
! _AArch64 family--â€˜config/aarch64/constraints.mdâ€™_
!      â€˜kâ€™
!           The stack pointer register (â€˜SPâ€™)
  
!      â€˜wâ€™
            Floating point register, Advanced SIMD vector register or SVE
            vector register
  
!      â€˜xâ€™
!           Like â€˜wâ€™, but restricted to registers 0 to 15 inclusive.
  
!      â€˜yâ€™
!           Like â€˜wâ€™, but restricted to registers 0 to 7 inclusive.
  
!      â€˜Uplâ€™
!           One of the low eight SVE predicate registers (â€˜P0â€™ to â€˜P7â€™)
  
!      â€˜Upaâ€™
!           Any of the SVE predicate registers (â€˜P0â€™ to â€˜P15â€™)
  
!      â€˜Iâ€™
            Integer constant that is valid as an immediate operand in an
!           â€˜ADDâ€™ instruction
  
!      â€˜Jâ€™
            Integer constant that is valid as an immediate operand in a
!           â€˜SUBâ€™ instruction (once negated)
  
!      â€˜Kâ€™
            Integer constant that can be used with a 32-bit logical
            instruction
  
!      â€˜Lâ€™
            Integer constant that can be used with a 64-bit logical
            instruction
  
!      â€˜Mâ€™
            Integer constant that is valid as an immediate operand in a
!           32-bit â€˜MOVâ€™ pseudo instruction.  The â€˜MOVâ€™ may be assembled
            to one of several different machine instructions depending on
            the value
  
!      â€˜Nâ€™
            Integer constant that is valid as an immediate operand in a
!           64-bit â€˜MOVâ€™ pseudo instruction
  
!      â€˜Sâ€™
            An absolute symbolic address or a label reference
  
!      â€˜Yâ€™
            Floating point constant zero
  
!      â€˜Zâ€™
            Integer constant zero
  
!      â€˜Ushâ€™
            The high part (bits 12 and upwards) of the pc-relative address
            of a symbol within 4GB of the instruction
  
!      â€˜Qâ€™
            A memory address which uses a single base register with no
            offset
  
!      â€˜Umpâ€™
            A memory address suitable for a load/store pair instruction in
            SI, DI, SF and DF modes
  
! _AMD GCN --â€˜config/gcn/constraints.mdâ€™_
!      â€˜Iâ€™
!           Immediate integer in the range âˆ’16 to 64
  
!      â€˜Jâ€™
            Immediate 16-bit signed integer
  
!      â€˜Kfâ€™
!           Immediate constant âˆ’1
  
!      â€˜Lâ€™
            Immediate 15-bit unsigned integer
  
!      â€˜Aâ€™
            Immediate constant that can be inlined in an instruction
!           encoding: integer âˆ’16..64, or float 0.0, +/âˆ’0.5, +/âˆ’1.0,
!           +/âˆ’2.0, +/âˆ’4.0, 1.0/(2.0*PI)
  
!      â€˜Bâ€™
            Immediate 32-bit signed integer that can be attached to an
            instruction encoding
  
!      â€˜Câ€™
!           Immediate 32-bit integer in range âˆ’16..4294967295 (i.e.
!           32-bit unsigned integer or â€˜Aâ€™ constraint)
  
!      â€˜DAâ€™
!           Immediate 64-bit constant that can be split into two â€˜Aâ€™
            constants
  
!      â€˜DBâ€™
!           Immediate 64-bit constant that can be split into two â€˜Bâ€™
            constants
  
!      â€˜Uâ€™
!           Any â€˜unspecâ€™
  
!      â€˜Yâ€™
!           Any â€˜symbol_refâ€™ or â€˜label_refâ€™
  
!      â€˜vâ€™
            VGPR register
  
!      â€˜aâ€™
            Accelerator VGPR register (CDNA1 onwards)
  
!      â€˜Sgâ€™
            SGPR register
  
!      â€˜SDâ€™
            SGPR registers valid for instruction destinations, including
            VCC, M0 and EXEC
  
!      â€˜SSâ€™
            SGPR registers valid for instruction sources, including VCC,
            M0, EXEC and SCC
  
!      â€˜Smâ€™
            SGPR registers valid as a source for scalar memory
            instructions (excludes M0 and EXEC)
  
!      â€˜Svâ€™
            SGPR registers valid as a source or destination for vector
            instructions (excludes EXEC)
  
!      â€˜caâ€™
            All condition registers: SCC, VCCZ, EXECZ
  
!      â€˜csâ€™
            Scalar condition register: SCC
  
!      â€˜cVâ€™
            Vector condition register: VCC, VCC_LO, VCC_HI
  
!      â€˜eâ€™
            EXEC register (EXEC_LO and EXEC_HI)
  
!      â€˜RBâ€™
!           Memory operand with address space suitable for â€˜buffer_*â€™
            instructions
  
!      â€˜RFâ€™
!           Memory operand with address space suitable for â€˜flat_*â€™
            instructions
  
!      â€˜RSâ€™
!           Memory operand with address space suitable for â€˜s_*â€™
            instructions
  
!      â€˜RLâ€™
!           Memory operand with address space suitable for â€˜ds_*â€™ LDS
            instructions
  
!      â€˜RGâ€™
!           Memory operand with address space suitable for â€˜ds_*â€™ GDS
            instructions
  
!      â€˜RDâ€™
!           Memory operand with address space suitable for any â€˜ds_*â€™
            instructions
  
!      â€˜RMâ€™
!           Memory operand with address space suitable for â€˜global_*â€™
            instructions
  
! _ARC --â€˜config/arc/constraints.mdâ€™_
!      â€˜qâ€™
!           Registers usable in ARCompact 16-bit instructions: â€˜r0â€™-â€˜r3â€™,
!           â€˜r12â€™-â€˜r15â€™.  This constraint can only match when the â€˜-mqâ€™
            option is in effect.
  
!      â€˜eâ€™
            Registers usable as base-regs of memory addresses in ARCompact
!           16-bit memory instructions: â€˜r0â€™-â€˜r3â€™, â€˜r12â€™-â€˜r15â€™, â€˜spâ€™.
!           This constraint can only match when the â€˜-mqâ€™ option is in
            effect.
!      â€˜Dâ€™
!           ARC FPX (dpfp) 64-bit registers.  â€˜D0â€™, â€˜D1â€™.
  
!      â€˜Iâ€™
            A signed 12-bit integer constant.
  
!      â€˜Calâ€™
            constant for arithmetic/logical operations.  This might be any
            constant that can be put into a long immediate by the assmbler
            or linker without involving a PIC relocation.
  
!      â€˜Kâ€™
            A 3-bit unsigned integer constant.
  
!      â€˜Lâ€™
            A 6-bit unsigned integer constant.
  
!      â€˜CnLâ€™
            One's complement of a 6-bit unsigned integer constant.
  
!      â€˜CmLâ€™
            Two's complement of a 6-bit unsigned integer constant.
  
!      â€˜Mâ€™
            A 5-bit unsigned integer constant.
  
!      â€˜Oâ€™
            A 7-bit unsigned integer constant.
  
!      â€˜Pâ€™
            A 8-bit unsigned integer constant.
  
!      â€˜Hâ€™
            Any const_double value.
  
! _ARM family--â€˜config/arm/constraints.mdâ€™_
  
!      â€˜hâ€™
!           In Thumb state, the core registers â€˜r8â€™-â€˜r15â€™.
  
!      â€˜kâ€™
            The stack pointer register.
  
!      â€˜lâ€™
!           In Thumb State the core registers â€˜r0â€™-â€˜r7â€™.  In ARM state
!           this is an alias for the â€˜râ€™ constraint.
  
!      â€˜tâ€™
!           VFP floating-point registers â€˜s0â€™-â€˜s31â€™.  Used for 32 bit
            values.
  
!      â€˜wâ€™
!           VFP floating-point registers â€˜d0â€™-â€˜d31â€™ and the appropriate
!           subset â€˜d0â€™-â€˜d15â€™ based on command line options.  Used for 64
            bit values only.  Not valid for Thumb1.
  
!      â€˜yâ€™
            The iWMMX co-processor registers.
  
!      â€˜zâ€™
            The iWMMX GR registers.
  
!      â€˜Gâ€™
            The floating-point constant 0.0
  
!      â€˜Iâ€™
            Integer that is valid as an immediate operand in a data
            processing instruction.  That is, an integer in the range 0 to
            255 rotated by a multiple of 2
  
!      â€˜Jâ€™
!           Integer in the range âˆ’4095 to 4095
  
!      â€˜Kâ€™
!           Integer that satisfies constraint â€˜Iâ€™ when inverted (ones
            complement)
  
!      â€˜Lâ€™
!           Integer that satisfies constraint â€˜Iâ€™ when negated (twos
            complement)
  
!      â€˜Mâ€™
            Integer in the range 0 to 32
  
!      â€˜Qâ€™
            A memory reference where the exact address is in a single
!           register ('â€˜mâ€™' is preferable for â€˜asmâ€™ statements)
  
!      â€˜Râ€™
            An item in the constant pool
  
!      â€˜Sâ€™
            A symbol in the text segment of the current file
  
!      â€˜Uvâ€™
            A memory reference suitable for VFP load/store insns
            (reg+constant offset)
  
!      â€˜Uyâ€™
            A memory reference suitable for iWMMXt load/store
            instructions.
  
!      â€˜Uqâ€™
            A memory reference suitable for the ARMv4 ldrsb instruction.
  
! _AVR family--â€˜config/avr/constraints.mdâ€™_
!      â€˜lâ€™
            Registers from r0 to r15
  
!      â€˜aâ€™
            Registers from r16 to r23
  
!      â€˜dâ€™
            Registers from r16 to r31
  
!      â€˜wâ€™
            Registers from r24 to r31.  These registers can be used in
!           â€˜adiwâ€™ command
  
!      â€˜eâ€™
            Pointer register (r26-r31)
  
!      â€˜bâ€™
            Base pointer register (r28-r31)
  
!      â€˜qâ€™
            Stack pointer register (SPH:SPL)
  
!      â€˜tâ€™
            Temporary register r0
  
!      â€˜xâ€™
            Register pair X (r27:r26)
  
!      â€˜yâ€™
            Register pair Y (r29:r28)
  
!      â€˜zâ€™
            Register pair Z (r31:r30)
  
!      â€˜Iâ€™
!           Constant greater than âˆ’1, less than 64
  
!      â€˜Jâ€™
!           Constant greater than âˆ’64, less than 1
  
!      â€˜Kâ€™
            Constant integer 2
  
!      â€˜Lâ€™
            Constant integer 0
  
!      â€˜Mâ€™
            Constant that fits in 8 bits
  
!      â€˜Nâ€™
!           Constant integer âˆ’1
  
!      â€˜Oâ€™
            Constant integer 8, 16, or 24
  
!      â€˜Pâ€™
            Constant integer 1
  
!      â€˜Gâ€™
            A floating point constant 0.0
  
!      â€˜Qâ€™
            A memory address based on Y or Z pointer with displacement.
  
! _Blackfin family--â€˜config/bfin/constraints.mdâ€™_
!      â€˜aâ€™
            P register
  
!      â€˜dâ€™
            D register
  
!      â€˜zâ€™
            A call clobbered P register.
  
!      â€˜qNâ€™
            A single register.  If N is in the range 0 to 7, the
!           corresponding D register.  If it is â€˜Aâ€™, then the register P0.
  
!      â€˜Dâ€™
            Even-numbered D register
  
!      â€˜Wâ€™
            Odd-numbered D register
  
!      â€˜eâ€™
            Accumulator register.
  
!      â€˜Aâ€™
            Even-numbered accumulator register.
  
!      â€˜Bâ€™
            Odd-numbered accumulator register.
  
!      â€˜bâ€™
            I register
  
!      â€˜vâ€™
            B register
  
!      â€˜fâ€™
            M register
  
!      â€˜câ€™
            Registers used for circular buffering, i.e. I, B, or L
            registers.
  
!      â€˜Câ€™
            The CC register.
  
!      â€˜tâ€™
            LT0 or LT1.
  
!      â€˜kâ€™
            LC0 or LC1.
  
!      â€˜uâ€™
            LB0 or LB1.
  
!      â€˜xâ€™
            Any D, P, B, M, I or L register.
  
!      â€˜yâ€™
            Additional registers typically used only in prologues and
            epilogues: RETS, RETN, RETI, RETX, RETE, ASTAT, SEQSTAT and
            USP.
  
!      â€˜wâ€™
            Any register except accumulators or CC.
  
!      â€˜Kshâ€™
!           Signed 16 bit integer (in the range âˆ’32768 to 32767)
  
!      â€˜Kuhâ€™
            Unsigned 16 bit integer (in the range 0 to 65535)
  
!      â€˜Ks7â€™
!           Signed 7 bit integer (in the range âˆ’64 to 63)
  
!      â€˜Ku7â€™
            Unsigned 7 bit integer (in the range 0 to 127)
  
!      â€˜Ku5â€™
            Unsigned 5 bit integer (in the range 0 to 31)
  
!      â€˜Ks4â€™
!           Signed 4 bit integer (in the range âˆ’8 to 7)
  
!      â€˜Ks3â€™
!           Signed 3 bit integer (in the range âˆ’3 to 4)
  
!      â€˜Ku3â€™
            Unsigned 3 bit integer (in the range 0 to 7)
  
!      â€˜PNâ€™
            Constant N, where N is a single-digit constant in the range 0
            to 4.
  
!      â€˜PAâ€™
            An integer equal to one of the MACFLAG_XXX constants that is
            suitable for use with either accumulator.
  
!      â€˜PBâ€™
            An integer equal to one of the MACFLAG_XXX constants that is
            suitable for use only with accumulator A1.
  
!      â€˜M1â€™
            Constant 255.
  
!      â€˜M2â€™
            Constant 65535.
  
!      â€˜Jâ€™
            An integer constant with exactly a single bit set.
  
!      â€˜Lâ€™
            An integer constant with all bits set except exactly one.
  
!      â€˜Hâ€™
!      â€˜Qâ€™
            Any SYMBOL_REF.
  
! _C-SKY--â€˜config/csky/constraints.mdâ€™_
  
!      â€˜aâ€™
            The mini registers r0 - r7.
  
!      â€˜bâ€™
            The low registers r0 - r15.
  
!      â€˜câ€™
            C register.
  
!      â€˜yâ€™
            HI and LO registers.
  
!      â€˜lâ€™
            LO register.
  
!      â€˜hâ€™
            HI register.
  
!      â€˜vâ€™
            Vector registers.
  
!      â€˜zâ€™
            Stack pointer register (SP).
  
!      â€˜Qâ€™
            A memory address which uses a base register with a short
            offset or with a index register with its scale.
  
!      â€˜Wâ€™
            A memory address which uses a base register with a index
            register with its scale.
  
*************** _C-SKY--'config/csky/constraints.md'_
*** 24821,25853 ****
       ranges accepted by particular instruction encodings.  Refer to the
       source code for details.
  
! _Epiphany--'config/epiphany/constraints.md'_
!      'U16'
            An unsigned 16-bit constant.
  
!      'K'
            An unsigned 5-bit constant.
  
!      'L'
            A signed 11-bit constant.
  
!      'Cm1'
!           A signed 11-bit constant added to -1.  Can only match when the
!           '-m1reg-REG' option is active.
  
!      'Cl1'
!           Left-shift of -1, i.e., a bit mask with a block of leading
            ones, the rest being a block of trailing zeroes.  Can only
!           match when the '-m1reg-REG' option is active.
  
!      'Cr1'
!           Right-shift of -1, i.e., a bit mask with a trailing block of
            ones, the rest being zeroes.  Or to put it another way, one
            less than a power of two.  Can only match when the
!           '-m1reg-REG' option is active.
  
!      'Cal'
!           Constant for arithmetic/logical operations.  This is like 'i',
            except that for position independent code, no symbols /
            expressions needing relocations are allowed.
  
!      'Csy'
            Symbolic constant for call/jump instruction.
  
!      'Rcs'
            The register class usable in short insns.  This is a register
            class constraint, and can thus drive register allocation.
!           This constraint won't match unless '-mprefer-short-insn-regs'
            is in effect.
  
!      'Rsc'
            The register class of registers that can be used to hold a
            sibcall call address.  I.e., a caller-saved register.
  
!      'Rct'
            Core control register class.
  
!      'Rgs'
            The register group usable in short insns.  This constraint
            does not use a register class, so that it only passively
            matches suitable registers, and doesn't drive register
            allocation.
  
!      'Car'
            Constant suitable for the addsi3_r pattern.  This is a valid
            offset For byte, halfword, or word addressing.
  
!      'Rra'
            Matches the return address if it can be replaced with the link
            register.
  
!      'Rcc'
            Matches the integer condition code register.
  
!      'Sra'
            Matches the return address if it is in a stack slot.
  
!      'Cfm'
            Matches control register values to switch fp mode, which are
!           encapsulated in 'UNSPEC_FP_MODE'.
  
! _FRV--'config/frv/frv.h'_
!      'a'
!           Register in the class 'ACC_REGS' ('acc0' to 'acc7').
  
!      'b'
!           Register in the class 'EVEN_ACC_REGS' ('acc0' to 'acc7').
  
!      'c'
!           Register in the class 'CC_REGS' ('fcc0' to 'fcc3' and 'icc0'
!           to 'icc3').
  
!      'd'
!           Register in the class 'GPR_REGS' ('gr0' to 'gr63').
  
!      'e'
!           Register in the class 'EVEN_REGS' ('gr0' to 'gr63').  Odd
            registers are excluded not in the class but through the use of
            a machine mode larger than 4 bytes.
  
!      'f'
!           Register in the class 'FPR_REGS' ('fr0' to 'fr63').
  
!      'h'
!           Register in the class 'FEVEN_REGS' ('fr0' to 'fr63').  Odd
            registers are excluded not in the class but through the use of
            a machine mode larger than 4 bytes.
  
!      'l'
!           Register in the class 'LR_REG' (the 'lr' register).
  
!      'q'
!           Register in the class 'QUAD_REGS' ('gr2' to 'gr63').  Register
            numbers not divisible by 4 are excluded not in the class but
            through the use of a machine mode larger than 8 bytes.
  
!      't'
!           Register in the class 'ICC_REGS' ('icc0' to 'icc3').
  
!      'u'
!           Register in the class 'FCC_REGS' ('fcc0' to 'fcc3').
  
!      'v'
!           Register in the class 'ICR_REGS' ('cc4' to 'cc7').
  
!      'w'
!           Register in the class 'FCR_REGS' ('cc0' to 'cc3').
  
!      'x'
!           Register in the class 'QUAD_FPR_REGS' ('fr0' to 'fr63').
            Register numbers not divisible by 4 are excluded not in the
            class but through the use of a machine mode larger than 8
            bytes.
  
!      'z'
!           Register in the class 'SPR_REGS' ('lcr' and 'lr').
  
!      'A'
!           Register in the class 'QUAD_ACC_REGS' ('acc0' to 'acc7').
  
!      'B'
!           Register in the class 'ACCG_REGS' ('accg0' to 'accg7').
  
!      'C'
!           Register in the class 'CR_REGS' ('cc0' to 'cc7').
  
!      'G'
            Floating point constant zero
  
!      'I'
            6-bit signed integer constant
  
!      'J'
            10-bit signed integer constant
  
!      'L'
            16-bit signed integer constant
  
!      'M'
            16-bit unsigned integer constant
  
!      'N'
            12-bit signed integer constant that is negative--i.e. in the
!           range of -2048 to -1
  
!      'O'
            Constant zero
  
!      'P'
            12-bit signed integer constant that is greater than zero--i.e.
            in the range of 1 to 2047.
  
! _FT32--'config/ft32/constraints.md'_
!      'A'
            An absolute address
  
!      'B'
            An offset address
  
!      'W'
            A register indirect memory operand
  
!      'e'
            An offset address.
  
!      'f'
            An offset address.
  
!      'O'
            The constant zero or one
  
!      'I'
!           A 16-bit signed constant (-32768 ... 32767)
  
!      'w'
            A bitfield mask suitable for bext or bins
  
!      'x'
            An inverted bitfield mask suitable for bext or bins
  
!      'L'
            A 16-bit unsigned constant, multiple of 4 (0 ... 65532)
  
!      'S'
!           A 20-bit signed constant (-524288 ... 524287)
  
!      'b'
            A constant for a bitfield width (1 ... 16)
  
!      'KA'
!           A 10-bit signed constant (-512 ... 511)
  
! _Hewlett-Packard PA-RISC--'config/pa/pa.h'_
!      'a'
            General register 1
  
!      'f'
            Floating point register
  
!      'q'
            Shift amount register
  
!      'x'
            Floating point register (deprecated)
  
!      'y'
            Upper floating point register (32-bit), floating point
            register (64-bit)
  
!      'Z'
            Any register
  
!      'I'
            Signed 11-bit integer constant
  
!      'J'
            Signed 14-bit integer constant
  
!      'K'
!           Integer constant that can be deposited with a 'zdepi'
            instruction
  
!      'L'
            Signed 5-bit integer constant
  
!      'M'
            Integer constant 0
  
!      'N'
!           Integer constant that can be loaded with a 'ldil' instruction
  
!      'O'
            Integer constant whose value plus one is a power of 2
  
!      'P'
!           Integer constant that can be used for 'and' operations in
!           'depi' and 'extru' instructions
  
!      'S'
            Integer constant 31
  
!      'U'
            Integer constant 63
  
!      'G'
            Floating-point constant 0.0
  
!      'A'
!           A 'lo_sum' data-linkage-table memory operand
  
!      'Q'
            A memory operand that can be used as the destination operand
            of an integer store instruction
  
!      'R'
            A scaled or unscaled indexed memory operand
  
!      'T'
            A memory operand for floating-point loads and stores
  
!      'W'
            A register indirect memory operand
  
! _Intel IA-64--'config/ia64/ia64.h'_
!      'a'
!           General register 'r0' to 'r3' for 'addl' instruction
  
!      'b'
            Branch register
  
!      'c'
!           Predicate register ('c' as in "conditional")
  
!      'd'
            Application register residing in M-unit
  
!      'e'
            Application register residing in I-unit
  
!      'f'
            Floating-point register
  
!      'm'
!           Memory operand.  If used together with '<' or '>', the operand
            can have postincrement and postdecrement which require
!           printing with '%Pn' on IA-64.
  
!      'G'
            Floating-point constant 0.0 or 1.0
  
!      'I'
            14-bit signed integer constant
  
!      'J'
            22-bit signed integer constant
  
!      'K'
            8-bit signed integer constant for logical instructions
  
!      'L'
            8-bit adjusted signed integer constant for compare pseudo-ops
  
!      'M'
            6-bit unsigned integer constant for shift counts
  
!      'N'
            9-bit signed integer constant for load and store
            postincrements
  
!      'O'
            The constant zero
  
!      'P'
!           0 or -1 for 'dep' instruction
  
!      'Q'
            Non-volatile memory for floating-point loads and stores
  
!      'R'
!           Integer constant in the range 1 to 4 for 'shladd' instruction
  
!      'S'
            Memory operand except postincrement and postdecrement.  This
!           is now roughly the same as 'm' when not used together with '<'
!           or '>'.
  
! _M32C--'config/m32c/m32c.cc'_
!      'Rsp'
!      'Rfb'
!      'Rsb'
!           '$sp', '$fb', '$sb'.
  
!      'Rcr'
            Any control register, when they're 16 bits wide (nothing if
            control registers are 24 bits wide)
  
!      'Rcl'
            Any control register, when they're 24 bits wide.
  
!      'R0w'
!      'R1w'
!      'R2w'
!      'R3w'
            $r0, $r1, $r2, $r3.
  
!      'R02'
            $r0 or $r2, or $r2r0 for 32 bit values.
  
!      'R13'
            $r1 or $r3, or $r3r1 for 32 bit values.
  
!      'Rdi'
            A register that can hold a 64 bit value.
  
!      'Rhl'
            $r0 or $r1 (registers with addressable high/low bytes)
  
!      'R23'
            $r2 or $r3
  
!      'Raa'
            Address registers
  
!      'Raw'
            Address registers when they're 16 bits wide.
  
!      'Ral'
            Address registers when they're 24 bits wide.
  
!      'Rqi'
            Registers that can hold QI values.
  
!      'Rad'
            Registers that can be used with displacements ($a0, $a1, $sb).
  
!      'Rsi'
            Registers that can hold 32 bit values.
  
!      'Rhi'
            Registers that can hold 16 bit values.
  
!      'Rhc'
            Registers chat can hold 16 bit values, including all control
            registers.
  
!      'Rra'
            $r0 through R1, plus $a0 and $a1.
  
!      'Rfl'
            The flags register.
  
!      'Rmm'
            The memory-based pseudo-registers $mem0 through $mem15.
  
!      'Rpi'
            Registers that can hold pointers (16 bit registers for r8c,
            m16c; 24 bit registers for m32cm, m32c).
  
!      'Rpa'
            Matches multiple registers in a PARALLEL to form a larger
            register.  Used to match function return values.
  
!      'Is3'
!           -8 ... 7
  
!      'IS1'
!           -128 ... 127
  
!      'IS2'
!           -32768 ... 32767
  
!      'IU2'
            0 ... 65535
  
!      'In4'
!           -8 ... -1 or 1 ... 8
  
!      'In5'
!           -16 ... -1 or 1 ... 16
  
!      'In6'
!           -32 ... -1 or 1 ... 32
  
!      'IM2'
!           -65536 ... -1
  
!      'Ilb'
            An 8 bit value with exactly one bit set.
  
!      'Ilw'
            A 16 bit value with exactly one bit set.
  
!      'Sd'
            The common src/dest memory addressing modes.
  
!      'Sa'
            Memory addressed using $a0 or $a1.
  
!      'Si'
            Memory addressed with immediate addresses.
  
!      'Ss'
            Memory addressed using the stack pointer ($sp).
  
!      'Sf'
            Memory addressed using the frame base register ($fb).
  
!      'Ss'
            Memory addressed using the small base register ($sb).
  
!      'S1'
            $r1h
  
! _LoongArch--'config/loongarch/constraints.md'_
!      'f'
            A floating-point or vector register (if available).
!      'k'
            A memory operand whose address is formed by a base register
            and (optionally scaled) index register.
!      'l'
            A signed 16-bit constant.
!      'm'
            A memory operand whose address is formed by a base register
            and offset that is suitable for use in instructions with the
!           same addressing mode as 'st.w' and 'ld.w'.
!      'I'
            A signed 12-bit constant (for arithmetic instructions).
!      'K'
            An unsigned 12-bit constant (for logic instructions).
!      'M'
!           A constant that cannot be loaded using 'lui', 'addiu' or
!           'ori'.
!      'N'
            A constant in the range -65535 to -1 (inclusive).
!      'O'
            A signed 15-bit constant.
!      'P'
            A constant in the range 1 to 65535 (inclusive).
!      'R'
            An address that can be used in a non-macro load or store.
!      'ZB'
            An address that is held in a general-purpose register.  The
            offset is zero.
!      'ZC'
            A memory operand whose address is formed by a base register
            and offset that is suitable for use in instructions with the
!           same addressing mode as 'll.w' and 'sc.w'.
  
! _MicroBlaze--'config/microblaze/constraints.md'_
!      'd'
!           A general register ('r0' to 'r31').
  
!      'z'
!           A status register ('rmsr', '$fcc1' to '$fcc7').
  
! _MIPS--'config/mips/constraints.md'_
!      'd'
!           A general-purpose register.  This is equivalent to 'r' unless
            generating MIPS16 code, in which case the MIPS16 register set
            is used.
  
!      'f'
            A floating-point register (if available).
  
!      'h'
!           Formerly the 'hi' register.  This constraint is no longer
            supported.
  
!      'l'
!           The 'lo' register.  Use this register to store values that are
            no bigger than a word.
  
!      'x'
!           The concatenated 'hi' and 'lo' registers.  Use this register
            to store doubleword values.
  
!      'c'
            A register suitable for use in an indirect jump.  This will
!           always be '$25' for '-mabicalls'.
  
!      'v'
!           Register '$3'.  Do not use this constraint in new code; it is
            retained only for compatibility with glibc.
  
!      'y'
!           Equivalent to 'r'; retained for backwards compatibility.
  
!      'z'
            A floating-point condition code register.
  
!      'I'
            A signed 16-bit constant (for arithmetic instructions).
  
!      'J'
            Integer zero.
  
!      'K'
            An unsigned 16-bit constant (for logic instructions).
  
!      'L'
            A signed 32-bit constant in which the lower 16 bits are zero.
!           Such constants can be loaded using 'lui'.
  
!      'M'
!           A constant that cannot be loaded using 'lui', 'addiu' or
!           'ori'.
  
!      'N'
!           A constant in the range -65535 to -1 (inclusive).
  
!      'O'
            A signed 15-bit constant.
  
!      'P'
            A constant in the range 1 to 65535 (inclusive).
  
!      'G'
            Floating-point zero.
  
!      'R'
            An address that can be used in a non-macro load or store.
  
!      'ZC'
            A memory operand whose address is formed by a base register
            and offset that is suitable for use in instructions with the
!           same addressing mode as 'll' and 'sc'.
  
!      'ZD'
!           An address suitable for a 'prefetch' instruction, or for any
!           other instruction with the same addressing mode as 'prefetch'.
  
! _Motorola 680x0--'config/m68k/constraints.md'_
!      'a'
            Address register
  
!      'd'
            Data register
  
!      'f'
            68881 floating-point register, if available
  
!      'I'
            Integer in the range 1 to 8
  
!      'J'
            16-bit signed number
  
!      'K'
            Signed number whose magnitude is greater than 0x80
  
!      'L'
!           Integer in the range -8 to -1
  
!      'M'
            Signed number whose magnitude is greater than 0x100
  
!      'N'
            Range 24 to 31, rotatert:SI 8 to 1 expressed as rotate
  
!      'O'
            16 (for rotate using swap)
  
!      'P'
            Range 8 to 15, rotatert:HI 8 to 1 expressed as rotate
  
!      'R'
            Numbers that mov3q can handle
  
!      'G'
            Floating point constant that is not a 68881 constant
  
!      'S'
            Operands that satisfy 'm' when -mpcrel is in effect
  
!      'T'
            Operands that satisfy 's' when -mpcrel is not in effect
  
!      'Q'
            Address register indirect addressing mode
  
!      'U'
            Register offset addressing
  
!      'W'
            const_call_operand
  
!      'Cs'
            symbol_ref or const
  
!      'Ci'
            const_int
  
!      'C0'
            const_int 0
  
!      'Cj'
            Range of signed numbers that don't fit in 16 bits
  
!      'Cmvq'
            Integers valid for mvq
  
!      'Capsw'
            Integers valid for a moveq followed by a swap
  
!      'Cmvz'
            Integers valid for mvz
  
!      'Cmvs'
            Integers valid for mvs
  
!      'Ap'
            push_operand
  
!      'Ac'
            Non-register operands allowed in clr
  
! _Moxie--'config/moxie/constraints.md'_
!      'A'
            An absolute address
  
!      'B'
            An offset address
  
!      'W'
            A register indirect memory operand
  
!      'I'
            A constant in the range of 0 to 255.
  
!      'N'
!           A constant in the range of 0 to -255.
  
! _MSP430-'config/msp430/constraints.md'_
  
!      'R12'
            Register R12.
  
!      'R13'
            Register R13.
  
!      'K'
            Integer constant 1.
  
!      'L'
            Integer constant -1^20..1^19.
  
!      'M'
            Integer constant 1-4.
  
!      'Ya'
            Memory references which do not require an extended MOVX
            instruction.
  
!      'Yl'
            Memory reference, labels only.
  
!      'Ys'
            Memory reference, stack only.
  
! _NDS32--'config/nds32/constraints.md'_
!      'w'
            LOW register class $r0 to $r7 constraint for V3/V3M ISA.
!      'l'
            LOW register class $r0 to $r7.
!      'd'
            MIDDLE register class $r0 to $r11, $r16 to $r19.
!      'h'
            HIGH register class $r12 to $r14, $r20 to $r31.
!      't'
            Temporary assist register $ta (i.e. $r15).
!      'k'
            Stack register $sp.
!      'Iu03'
            Unsigned immediate 3-bit value.
!      'In03'
!           Negative immediate 3-bit value in the range of -7-0.
!      'Iu04'
            Unsigned immediate 4-bit value.
!      'Is05'
            Signed immediate 5-bit value.
!      'Iu05'
            Unsigned immediate 5-bit value.
!      'In05'
!           Negative immediate 5-bit value in the range of -31-0.
!      'Ip05'
            Unsigned immediate 5-bit value for movpi45 instruction with
            range 16-47.
!      'Iu06'
            Unsigned immediate 6-bit value constraint for addri36.sp
            instruction.
!      'Iu08'
            Unsigned immediate 8-bit value.
!      'Iu09'
            Unsigned immediate 9-bit value.
!      'Is10'
            Signed immediate 10-bit value.
!      'Is11'
            Signed immediate 11-bit value.
!      'Is15'
            Signed immediate 15-bit value.
!      'Iu15'
            Unsigned immediate 15-bit value.
!      'Ic15'
            A constant which is not in the range of imm15u but ok for bclr
            instruction.
!      'Ie15'
            A constant which is not in the range of imm15u but ok for bset
            instruction.
!      'It15'
            A constant which is not in the range of imm15u but ok for btgl
            instruction.
!      'Ii15'
            A constant whose compliment value is in the range of imm15u
            and ok for bitci instruction.
!      'Is16'
            Signed immediate 16-bit value.
!      'Is17'
            Signed immediate 17-bit value.
!      'Is19'
            Signed immediate 19-bit value.
!      'Is20'
            Signed immediate 20-bit value.
!      'Ihig'
            The immediate value that can be simply set high 20-bit.
!      'Izeb'
            The immediate value 0xff.
!      'Izeh'
            The immediate value 0xffff.
!      'Ixls'
            The immediate value 0x01.
!      'Ix11'
            The immediate value 0x7ff.
!      'Ibms'
            The immediate value with power of 2.
!      'Ifex'
            The immediate value with power of 2 minus 1.
!      'U33'
            Memory constraint for 333 format.
!      'U45'
            Memory constraint for 45 format.
!      'U37'
            Memory constraint for 37 format.
  
! _OpenRISC--'config/or1k/constraints.md'_
!      'I'
            Integer that is valid as an immediate operand in an
!           instruction taking a signed 16-bit number.  Range -32768 to
            32767.
  
!      'K'
            Integer that is valid as an immediate operand in an
            instruction taking an unsigned 16-bit number.  Range 0 to
            65535.
  
!      'M'
            Signed 16-bit constant shifted left 16 bits.  (Used with
!           'l.movhi')
  
!      'O'
            Zero
  
!      'c'
            Register usable for sibcalls.
  
! _PDP-11--'config/pdp11/constraints.md'_
!      'a'
            Floating point registers AC0 through AC3.  These can be loaded
            from/to memory with a single instruction.
  
!      'd'
            Odd numbered general registers (R1, R3, R5).  These are used
            for 16-bit multiply operations.
  
!      'D'
            A memory reference that is encoded within the opcode, but not
            auto-increment or auto-decrement.
  
!      'f'
            Any of the floating point registers (AC0 through AC5).
  
!      'G'
            Floating point constant 0.
  
!      'h'
            Floating point registers AC4 and AC5.  These cannot be loaded
            from/to memory with a single instruction.
  
!      'I'
            An integer constant that fits in 16 bits.
  
!      'J'
            An integer constant whose low order 16 bits are zero.
  
!      'K'
            An integer constant that does not meet the constraints for
!           codes 'I' or 'J'.
  
!      'L'
            The integer constant 1.
  
!      'M'
!           The integer constant -1.
  
!      'N'
            The integer constant 0.
  
!      'O'
            Integer constants 0 through 3; shifts by these amounts are
            handled as multiple single-bit shifts rather than a single
            variable-length shift.
  
!      'Q'
            A memory reference which requires an additional word (address
            or offset) after the opcode.
  
!      'R'
            A memory reference that is encoded within the opcode.
  
! _PowerPC and IBM RS6000--'config/rs6000/constraints.md'_
!      'r'
!           A general purpose register (GPR), 'r0'...'r31'.
  
!      'b'
!           A base register.  Like 'r', but 'r0' is not allowed, so
!           'r1'...'r31'.
  
!      'f'
!           A floating point register (FPR), 'f0'...'f31'.
  
!      'd'
!           A floating point register.  This is the same as 'f' nowadays;
!           historically 'f' was for single-precision and 'd' was for
            double-precision floating point.
  
!      'v'
!           An Altivec vector register (VR), 'v0'...'v31'.
  
!      'wa'
!           A VSX register (VSR), 'vs0'...'vs63'.  This is either an FPR
!           ('vs0'...'vs31' are 'f0'...'f31') or a VR ('vs32'...'vs63' are
!           'v0'...'v31').
  
!           When using 'wa', you should use the '%x' output modifier, so
            that the correct register number is printed.  For example:
  
                 asm ("xvadddp %x0,%x1,%x2"
                      : "=wa" (v1)
                      : "wa" (v2), "wa" (v3));
  
!           You should not use '%x' for 'v' operands:
  
                 asm ("xsaddqp %0,%1,%2"
                      : "=v" (v1)
                      : "v" (v2), "v" (v3));
  
!      'h'
!           A special register ('vrsave', 'ctr', or 'lr').
  
!      'c'
!           The count register, 'ctr'.
  
!      'l'
!           The link register, 'lr'.
  
!      'x'
!           Condition register field 0, 'cr0'.
  
!      'y'
!           Any condition register field, 'cr0'...'cr7'.
  
!      'z'
!           The carry bit, 'XER[CA]'.
  
!      'we'
!           Like 'wa', if this is a POWER9 or later and '-mvsx' and '-m64'
!           are used; otherwise, 'NO_REGS'.
  
!      'wn'
!           No register ('NO_REGS').
  
!      'wr'
!           Like 'r', if '-mpowerpc64' is used; otherwise, 'NO_REGS'.
  
!      'wx'
!           Like 'd', if '-mpowerpc-gfxopt' is used; otherwise, 'NO_REGS'.
  
!      'wA'
!           Like 'b', if '-mpowerpc64' is used; otherwise, 'NO_REGS'.
  
!      'wB'
            Signed 5-bit constant integer that can be loaded into an
            Altivec register.
  
!      'wE'
            Vector constant that can be loaded with the XXSPLTIB
            instruction.
  
!      'wF'
            Memory operand suitable for power8 GPR load fusion.
  
!      'wL'
            Int constant that is the element number mfvsrld accesses in a
            vector.
  
!      'wM'
            Match vector constant with all 1's if the XXLORC instruction
            is available.
  
!      'wO'
            Memory operand suitable for the ISA 3.0 vector d-form
            instructions.
  
!      'wQ'
            Memory operand suitable for the load/store quad instructions.
  
!      'wS'
            Vector constant that can be loaded with XXSPLTIB & sign
            extension.
  
!      'wY'
            A memory operand for a DS-form instruction.
  
!      'wZ'
            An indexed or indirect memory operand, ignoring the bottom 4
            bits.
  
!      'I'
            A signed 16-bit constant.
  
!      'J'
!           An unsigned 16-bit constant shifted left 16 bits (use 'L'
!           instead for 'SImode' constants).
  
!      'K'
            An unsigned 16-bit constant.
  
!      'L'
            A signed 16-bit constant shifted left 16 bits.
  
!      'M'
            An integer constant greater than 31.
  
!      'N'
            An exact power of 2.
  
!      'O'
            The integer constant zero.
  
!      'P'
            A constant whose negation is a signed 16-bit constant.
  
!      'eI'
            A signed 34-bit integer constant if prefixed instructions are
            supported.
  
!      'eP'
            A scalar floating point constant or a vector constant that can
            be loaded to a VSX register with one prefixed instruction.
  
!      'eQ'
            An IEEE 128-bit constant that can be loaded into a VSX
!           register with the 'lxvkq' instruction.
  
!      'G'
            A floating point constant that can be loaded into a register
            with one instruction per word.
  
!      'H'
            A floating point constant that can be loaded into a register
            using three instructions.
  
!      'm'
!           A memory operand.  Normally, 'm' does not allow addresses that
!           update the base register.  If the '<' or '>' constraint is
            also used, they are allowed and therefore on PowerPC targets
!           in that case it is only safe to use 'm<>' in an 'asm'
!           statement if that 'asm' statement accesses the operand exactly
!           once.  The 'asm' statement must also use '%U<OPNO>' as a
            placeholder for the "update" flag in the corresponding load or
            store instruction.  For example:
  
--- 24825,25857 ----
       ranges accepted by particular instruction encodings.  Refer to the
       source code for details.
  
! _Epiphany--â€˜config/epiphany/constraints.mdâ€™_
!      â€˜U16â€™
            An unsigned 16-bit constant.
  
!      â€˜Kâ€™
            An unsigned 5-bit constant.
  
!      â€˜Lâ€™
            A signed 11-bit constant.
  
!      â€˜Cm1â€™
!           A signed 11-bit constant added to âˆ’1.  Can only match when the
!           â€˜-m1reg-REGâ€™ option is active.
  
!      â€˜Cl1â€™
!           Left-shift of âˆ’1, i.e., a bit mask with a block of leading
            ones, the rest being a block of trailing zeroes.  Can only
!           match when the â€˜-m1reg-REGâ€™ option is active.
  
!      â€˜Cr1â€™
!           Right-shift of âˆ’1, i.e., a bit mask with a trailing block of
            ones, the rest being zeroes.  Or to put it another way, one
            less than a power of two.  Can only match when the
!           â€˜-m1reg-REGâ€™ option is active.
  
!      â€˜Calâ€™
!           Constant for arithmetic/logical operations.  This is like â€˜iâ€™,
            except that for position independent code, no symbols /
            expressions needing relocations are allowed.
  
!      â€˜Csyâ€™
            Symbolic constant for call/jump instruction.
  
!      â€˜Rcsâ€™
            The register class usable in short insns.  This is a register
            class constraint, and can thus drive register allocation.
!           This constraint won't match unless â€˜-mprefer-short-insn-regsâ€™
            is in effect.
  
!      â€˜Rscâ€™
            The register class of registers that can be used to hold a
            sibcall call address.  I.e., a caller-saved register.
  
!      â€˜Rctâ€™
            Core control register class.
  
!      â€˜Rgsâ€™
            The register group usable in short insns.  This constraint
            does not use a register class, so that it only passively
            matches suitable registers, and doesn't drive register
            allocation.
  
!      â€˜Carâ€™
            Constant suitable for the addsi3_r pattern.  This is a valid
            offset For byte, halfword, or word addressing.
  
!      â€˜Rraâ€™
            Matches the return address if it can be replaced with the link
            register.
  
!      â€˜Rccâ€™
            Matches the integer condition code register.
  
!      â€˜Sraâ€™
            Matches the return address if it is in a stack slot.
  
!      â€˜Cfmâ€™
            Matches control register values to switch fp mode, which are
!           encapsulated in â€˜UNSPEC_FP_MODEâ€™.
  
! _FRV--â€˜config/frv/frv.hâ€™_
!      â€˜aâ€™
!           Register in the class â€˜ACC_REGSâ€™ (â€˜acc0â€™ to â€˜acc7â€™).
  
!      â€˜bâ€™
!           Register in the class â€˜EVEN_ACC_REGSâ€™ (â€˜acc0â€™ to â€˜acc7â€™).
  
!      â€˜câ€™
!           Register in the class â€˜CC_REGSâ€™ (â€˜fcc0â€™ to â€˜fcc3â€™ and â€˜icc0â€™
!           to â€˜icc3â€™).
  
!      â€˜dâ€™
!           Register in the class â€˜GPR_REGSâ€™ (â€˜gr0â€™ to â€˜gr63â€™).
  
!      â€˜eâ€™
!           Register in the class â€˜EVEN_REGSâ€™ (â€˜gr0â€™ to â€˜gr63â€™).  Odd
            registers are excluded not in the class but through the use of
            a machine mode larger than 4 bytes.
  
!      â€˜fâ€™
!           Register in the class â€˜FPR_REGSâ€™ (â€˜fr0â€™ to â€˜fr63â€™).
  
!      â€˜hâ€™
!           Register in the class â€˜FEVEN_REGSâ€™ (â€˜fr0â€™ to â€˜fr63â€™).  Odd
            registers are excluded not in the class but through the use of
            a machine mode larger than 4 bytes.
  
!      â€˜lâ€™
!           Register in the class â€˜LR_REGâ€™ (the â€˜lrâ€™ register).
  
!      â€˜qâ€™
!           Register in the class â€˜QUAD_REGSâ€™ (â€˜gr2â€™ to â€˜gr63â€™).  Register
            numbers not divisible by 4 are excluded not in the class but
            through the use of a machine mode larger than 8 bytes.
  
!      â€˜tâ€™
!           Register in the class â€˜ICC_REGSâ€™ (â€˜icc0â€™ to â€˜icc3â€™).
  
!      â€˜uâ€™
!           Register in the class â€˜FCC_REGSâ€™ (â€˜fcc0â€™ to â€˜fcc3â€™).
  
!      â€˜vâ€™
!           Register in the class â€˜ICR_REGSâ€™ (â€˜cc4â€™ to â€˜cc7â€™).
  
!      â€˜wâ€™
!           Register in the class â€˜FCR_REGSâ€™ (â€˜cc0â€™ to â€˜cc3â€™).
  
!      â€˜xâ€™
!           Register in the class â€˜QUAD_FPR_REGSâ€™ (â€˜fr0â€™ to â€˜fr63â€™).
            Register numbers not divisible by 4 are excluded not in the
            class but through the use of a machine mode larger than 8
            bytes.
  
!      â€˜zâ€™
!           Register in the class â€˜SPR_REGSâ€™ (â€˜lcrâ€™ and â€˜lrâ€™).
  
!      â€˜Aâ€™
!           Register in the class â€˜QUAD_ACC_REGSâ€™ (â€˜acc0â€™ to â€˜acc7â€™).
  
!      â€˜Bâ€™
!           Register in the class â€˜ACCG_REGSâ€™ (â€˜accg0â€™ to â€˜accg7â€™).
  
!      â€˜Câ€™
!           Register in the class â€˜CR_REGSâ€™ (â€˜cc0â€™ to â€˜cc7â€™).
  
!      â€˜Gâ€™
            Floating point constant zero
  
!      â€˜Iâ€™
            6-bit signed integer constant
  
!      â€˜Jâ€™
            10-bit signed integer constant
  
!      â€˜Lâ€™
            16-bit signed integer constant
  
!      â€˜Mâ€™
            16-bit unsigned integer constant
  
!      â€˜Nâ€™
            12-bit signed integer constant that is negative--i.e. in the
!           range of âˆ’2048 to âˆ’1
  
!      â€˜Oâ€™
            Constant zero
  
!      â€˜Pâ€™
            12-bit signed integer constant that is greater than zero--i.e.
            in the range of 1 to 2047.
  
! _FT32--â€˜config/ft32/constraints.mdâ€™_
!      â€˜Aâ€™
            An absolute address
  
!      â€˜Bâ€™
            An offset address
  
!      â€˜Wâ€™
            A register indirect memory operand
  
!      â€˜eâ€™
            An offset address.
  
!      â€˜fâ€™
            An offset address.
  
!      â€˜Oâ€™
            The constant zero or one
  
!      â€˜Iâ€™
!           A 16-bit signed constant (âˆ’32768 ... 32767)
  
!      â€˜wâ€™
            A bitfield mask suitable for bext or bins
  
!      â€˜xâ€™
            An inverted bitfield mask suitable for bext or bins
  
!      â€˜Lâ€™
            A 16-bit unsigned constant, multiple of 4 (0 ... 65532)
  
!      â€˜Sâ€™
!           A 20-bit signed constant (âˆ’524288 ... 524287)
  
!      â€˜bâ€™
            A constant for a bitfield width (1 ... 16)
  
!      â€˜KAâ€™
!           A 10-bit signed constant (âˆ’512 ... 511)
  
! _Hewlett-Packard PA-RISC--â€˜config/pa/pa.hâ€™_
!      â€˜aâ€™
            General register 1
  
!      â€˜fâ€™
            Floating point register
  
!      â€˜qâ€™
            Shift amount register
  
!      â€˜xâ€™
            Floating point register (deprecated)
  
!      â€˜yâ€™
            Upper floating point register (32-bit), floating point
            register (64-bit)
  
!      â€˜Zâ€™
            Any register
  
!      â€˜Iâ€™
            Signed 11-bit integer constant
  
!      â€˜Jâ€™
            Signed 14-bit integer constant
  
!      â€˜Kâ€™
!           Integer constant that can be deposited with a â€˜zdepiâ€™
            instruction
  
!      â€˜Lâ€™
            Signed 5-bit integer constant
  
!      â€˜Mâ€™
            Integer constant 0
  
!      â€˜Nâ€™
!           Integer constant that can be loaded with a â€˜ldilâ€™ instruction
  
!      â€˜Oâ€™
            Integer constant whose value plus one is a power of 2
  
!      â€˜Pâ€™
!           Integer constant that can be used for â€˜andâ€™ operations in
!           â€˜depiâ€™ and â€˜extruâ€™ instructions
  
!      â€˜Sâ€™
            Integer constant 31
  
!      â€˜Uâ€™
            Integer constant 63
  
!      â€˜Gâ€™
            Floating-point constant 0.0
  
!      â€˜Aâ€™
!           A â€˜lo_sumâ€™ data-linkage-table memory operand
  
!      â€˜Qâ€™
            A memory operand that can be used as the destination operand
            of an integer store instruction
  
!      â€˜Râ€™
            A scaled or unscaled indexed memory operand
  
!      â€˜Tâ€™
            A memory operand for floating-point loads and stores
  
!      â€˜Wâ€™
            A register indirect memory operand
  
! _Intel IA-64--â€˜config/ia64/ia64.hâ€™_
!      â€˜aâ€™
!           General register â€˜r0â€™ to â€˜r3â€™ for â€˜addlâ€™ instruction
  
!      â€˜bâ€™
            Branch register
  
!      â€˜câ€™
!           Predicate register (â€˜câ€™ as in "conditional")
  
!      â€˜dâ€™
            Application register residing in M-unit
  
!      â€˜eâ€™
            Application register residing in I-unit
  
!      â€˜fâ€™
            Floating-point register
  
!      â€˜mâ€™
!           Memory operand.  If used together with â€˜<â€™ or â€˜>â€™, the operand
            can have postincrement and postdecrement which require
!           printing with â€˜%Pnâ€™ on IA-64.
  
!      â€˜Gâ€™
            Floating-point constant 0.0 or 1.0
  
!      â€˜Iâ€™
            14-bit signed integer constant
  
!      â€˜Jâ€™
            22-bit signed integer constant
  
!      â€˜Kâ€™
            8-bit signed integer constant for logical instructions
  
!      â€˜Lâ€™
            8-bit adjusted signed integer constant for compare pseudo-ops
  
!      â€˜Mâ€™
            6-bit unsigned integer constant for shift counts
  
!      â€˜Nâ€™
            9-bit signed integer constant for load and store
            postincrements
  
!      â€˜Oâ€™
            The constant zero
  
!      â€˜Pâ€™
!           0 or âˆ’1 for â€˜depâ€™ instruction
  
!      â€˜Qâ€™
            Non-volatile memory for floating-point loads and stores
  
!      â€˜Râ€™
!           Integer constant in the range 1 to 4 for â€˜shladdâ€™ instruction
  
!      â€˜Sâ€™
            Memory operand except postincrement and postdecrement.  This
!           is now roughly the same as â€˜mâ€™ when not used together with â€˜<â€™
!           or â€˜>â€™.
  
! _M32C--â€˜config/m32c/m32c.ccâ€™_
!      â€˜Rspâ€™
!      â€˜Rfbâ€™
!      â€˜Rsbâ€™
!           â€˜$spâ€™, â€˜$fbâ€™, â€˜$sbâ€™.
  
!      â€˜Rcrâ€™
            Any control register, when they're 16 bits wide (nothing if
            control registers are 24 bits wide)
  
!      â€˜Rclâ€™
            Any control register, when they're 24 bits wide.
  
!      â€˜R0wâ€™
!      â€˜R1wâ€™
!      â€˜R2wâ€™
!      â€˜R3wâ€™
            $r0, $r1, $r2, $r3.
  
!      â€˜R02â€™
            $r0 or $r2, or $r2r0 for 32 bit values.
  
!      â€˜R13â€™
            $r1 or $r3, or $r3r1 for 32 bit values.
  
!      â€˜Rdiâ€™
            A register that can hold a 64 bit value.
  
!      â€˜Rhlâ€™
            $r0 or $r1 (registers with addressable high/low bytes)
  
!      â€˜R23â€™
            $r2 or $r3
  
!      â€˜Raaâ€™
            Address registers
  
!      â€˜Rawâ€™
            Address registers when they're 16 bits wide.
  
!      â€˜Ralâ€™
            Address registers when they're 24 bits wide.
  
!      â€˜Rqiâ€™
            Registers that can hold QI values.
  
!      â€˜Radâ€™
            Registers that can be used with displacements ($a0, $a1, $sb).
  
!      â€˜Rsiâ€™
            Registers that can hold 32 bit values.
  
!      â€˜Rhiâ€™
            Registers that can hold 16 bit values.
  
!      â€˜Rhcâ€™
            Registers chat can hold 16 bit values, including all control
            registers.
  
!      â€˜Rraâ€™
            $r0 through R1, plus $a0 and $a1.
  
!      â€˜Rflâ€™
            The flags register.
  
!      â€˜Rmmâ€™
            The memory-based pseudo-registers $mem0 through $mem15.
  
!      â€˜Rpiâ€™
            Registers that can hold pointers (16 bit registers for r8c,
            m16c; 24 bit registers for m32cm, m32c).
  
!      â€˜Rpaâ€™
            Matches multiple registers in a PARALLEL to form a larger
            register.  Used to match function return values.
  
!      â€˜Is3â€™
!           âˆ’8 ... 7
  
!      â€˜IS1â€™
!           âˆ’128 ... 127
  
!      â€˜IS2â€™
!           âˆ’32768 ... 32767
  
!      â€˜IU2â€™
            0 ... 65535
  
!      â€˜In4â€™
!           âˆ’8 ... âˆ’1 or 1 ... 8
  
!      â€˜In5â€™
!           âˆ’16 ... âˆ’1 or 1 ... 16
  
!      â€˜In6â€™
!           âˆ’32 ... âˆ’1 or 1 ... 32
  
!      â€˜IM2â€™
!           âˆ’65536 ... âˆ’1
  
!      â€˜Ilbâ€™
            An 8 bit value with exactly one bit set.
  
!      â€˜Ilwâ€™
            A 16 bit value with exactly one bit set.
  
!      â€˜Sdâ€™
            The common src/dest memory addressing modes.
  
!      â€˜Saâ€™
            Memory addressed using $a0 or $a1.
  
!      â€˜Siâ€™
            Memory addressed with immediate addresses.
  
!      â€˜Ssâ€™
            Memory addressed using the stack pointer ($sp).
  
!      â€˜Sfâ€™
            Memory addressed using the frame base register ($fb).
  
!      â€˜Ssâ€™
            Memory addressed using the small base register ($sb).
  
!      â€˜S1â€™
            $r1h
  
! _LoongArch--â€˜config/loongarch/constraints.mdâ€™_
!      â€˜fâ€™
            A floating-point or vector register (if available).
!      â€˜kâ€™
            A memory operand whose address is formed by a base register
            and (optionally scaled) index register.
!      â€˜lâ€™
            A signed 16-bit constant.
!      â€˜mâ€™
            A memory operand whose address is formed by a base register
            and offset that is suitable for use in instructions with the
!           same addressing mode as â€˜st.wâ€™ and â€˜ld.wâ€™.
!      â€˜Iâ€™
            A signed 12-bit constant (for arithmetic instructions).
!      â€˜Kâ€™
            An unsigned 12-bit constant (for logic instructions).
!      â€˜Mâ€™
!           A constant that cannot be loaded using â€˜luiâ€™, â€˜addiuâ€™ or
!           â€˜oriâ€™.
!      â€˜Nâ€™
            A constant in the range -65535 to -1 (inclusive).
!      â€˜Oâ€™
            A signed 15-bit constant.
!      â€˜Pâ€™
            A constant in the range 1 to 65535 (inclusive).
!      â€˜Râ€™
            An address that can be used in a non-macro load or store.
!      â€˜ZBâ€™
            An address that is held in a general-purpose register.  The
            offset is zero.
!      â€˜ZCâ€™
            A memory operand whose address is formed by a base register
            and offset that is suitable for use in instructions with the
!           same addressing mode as â€˜ll.wâ€™ and â€˜sc.wâ€™.
  
! _MicroBlaze--â€˜config/microblaze/constraints.mdâ€™_
!      â€˜dâ€™
!           A general register (â€˜r0â€™ to â€˜r31â€™).
  
!      â€˜zâ€™
!           A status register (â€˜rmsrâ€™, â€˜$fcc1â€™ to â€˜$fcc7â€™).
  
! _MIPS--â€˜config/mips/constraints.mdâ€™_
!      â€˜dâ€™
!           A general-purpose register.  This is equivalent to â€˜râ€™ unless
            generating MIPS16 code, in which case the MIPS16 register set
            is used.
  
!      â€˜fâ€™
            A floating-point register (if available).
  
!      â€˜hâ€™
!           Formerly the â€˜hiâ€™ register.  This constraint is no longer
            supported.
  
!      â€˜lâ€™
!           The â€˜loâ€™ register.  Use this register to store values that are
            no bigger than a word.
  
!      â€˜xâ€™
!           The concatenated â€˜hiâ€™ and â€˜loâ€™ registers.  Use this register
            to store doubleword values.
  
!      â€˜câ€™
            A register suitable for use in an indirect jump.  This will
!           always be â€˜$25â€™ for â€˜-mabicallsâ€™.
  
!      â€˜vâ€™
!           Register â€˜$3â€™.  Do not use this constraint in new code; it is
            retained only for compatibility with glibc.
  
!      â€˜yâ€™
!           Equivalent to â€˜râ€™; retained for backwards compatibility.
  
!      â€˜zâ€™
            A floating-point condition code register.
  
!      â€˜Iâ€™
            A signed 16-bit constant (for arithmetic instructions).
  
!      â€˜Jâ€™
            Integer zero.
  
!      â€˜Kâ€™
            An unsigned 16-bit constant (for logic instructions).
  
!      â€˜Lâ€™
            A signed 32-bit constant in which the lower 16 bits are zero.
!           Such constants can be loaded using â€˜luiâ€™.
  
!      â€˜Mâ€™
!           A constant that cannot be loaded using â€˜luiâ€™, â€˜addiuâ€™ or
!           â€˜oriâ€™.
  
!      â€˜Nâ€™
!           A constant in the range âˆ’65535 to âˆ’1 (inclusive).
  
!      â€˜Oâ€™
            A signed 15-bit constant.
  
!      â€˜Pâ€™
            A constant in the range 1 to 65535 (inclusive).
  
!      â€˜Gâ€™
            Floating-point zero.
  
!      â€˜Râ€™
            An address that can be used in a non-macro load or store.
  
!      â€˜ZCâ€™
            A memory operand whose address is formed by a base register
            and offset that is suitable for use in instructions with the
!           same addressing mode as â€˜llâ€™ and â€˜scâ€™.
  
!      â€˜ZDâ€™
!           An address suitable for a â€˜prefetchâ€™ instruction, or for any
!           other instruction with the same addressing mode as â€˜prefetchâ€™.
  
! _Motorola 680x0--â€˜config/m68k/constraints.mdâ€™_
!      â€˜aâ€™
            Address register
  
!      â€˜dâ€™
            Data register
  
!      â€˜fâ€™
            68881 floating-point register, if available
  
!      â€˜Iâ€™
            Integer in the range 1 to 8
  
!      â€˜Jâ€™
            16-bit signed number
  
!      â€˜Kâ€™
            Signed number whose magnitude is greater than 0x80
  
!      â€˜Lâ€™
!           Integer in the range âˆ’8 to âˆ’1
  
!      â€˜Mâ€™
            Signed number whose magnitude is greater than 0x100
  
!      â€˜Nâ€™
            Range 24 to 31, rotatert:SI 8 to 1 expressed as rotate
  
!      â€˜Oâ€™
            16 (for rotate using swap)
  
!      â€˜Pâ€™
            Range 8 to 15, rotatert:HI 8 to 1 expressed as rotate
  
!      â€˜Râ€™
            Numbers that mov3q can handle
  
!      â€˜Gâ€™
            Floating point constant that is not a 68881 constant
  
!      â€˜Sâ€™
            Operands that satisfy 'm' when -mpcrel is in effect
  
!      â€˜Tâ€™
            Operands that satisfy 's' when -mpcrel is not in effect
  
!      â€˜Qâ€™
            Address register indirect addressing mode
  
!      â€˜Uâ€™
            Register offset addressing
  
!      â€˜Wâ€™
            const_call_operand
  
!      â€˜Csâ€™
            symbol_ref or const
  
!      â€˜Ciâ€™
            const_int
  
!      â€˜C0â€™
            const_int 0
  
!      â€˜Cjâ€™
            Range of signed numbers that don't fit in 16 bits
  
!      â€˜Cmvqâ€™
            Integers valid for mvq
  
!      â€˜Capswâ€™
            Integers valid for a moveq followed by a swap
  
!      â€˜Cmvzâ€™
            Integers valid for mvz
  
!      â€˜Cmvsâ€™
            Integers valid for mvs
  
!      â€˜Apâ€™
            push_operand
  
!      â€˜Acâ€™
            Non-register operands allowed in clr
  
! _Moxie--â€˜config/moxie/constraints.mdâ€™_
!      â€˜Aâ€™
            An absolute address
  
!      â€˜Bâ€™
            An offset address
  
!      â€˜Wâ€™
            A register indirect memory operand
  
!      â€˜Iâ€™
            A constant in the range of 0 to 255.
  
!      â€˜Nâ€™
!           A constant in the range of 0 to âˆ’255.
  
! _MSP430-â€˜config/msp430/constraints.mdâ€™_
  
!      â€˜R12â€™
            Register R12.
  
!      â€˜R13â€™
            Register R13.
  
!      â€˜Kâ€™
            Integer constant 1.
  
!      â€˜Lâ€™
            Integer constant -1^20..1^19.
  
!      â€˜Mâ€™
            Integer constant 1-4.
  
!      â€˜Yaâ€™
            Memory references which do not require an extended MOVX
            instruction.
  
!      â€˜Ylâ€™
            Memory reference, labels only.
  
!      â€˜Ysâ€™
            Memory reference, stack only.
  
! _NDS32--â€˜config/nds32/constraints.mdâ€™_
!      â€˜wâ€™
            LOW register class $r0 to $r7 constraint for V3/V3M ISA.
!      â€˜lâ€™
            LOW register class $r0 to $r7.
!      â€˜dâ€™
            MIDDLE register class $r0 to $r11, $r16 to $r19.
!      â€˜hâ€™
            HIGH register class $r12 to $r14, $r20 to $r31.
!      â€˜tâ€™
            Temporary assist register $ta (i.e. $r15).
!      â€˜kâ€™
            Stack register $sp.
!      â€˜Iu03â€™
            Unsigned immediate 3-bit value.
!      â€˜In03â€™
!           Negative immediate 3-bit value in the range of âˆ’7-0.
!      â€˜Iu04â€™
            Unsigned immediate 4-bit value.
!      â€˜Is05â€™
            Signed immediate 5-bit value.
!      â€˜Iu05â€™
            Unsigned immediate 5-bit value.
!      â€˜In05â€™
!           Negative immediate 5-bit value in the range of âˆ’31-0.
!      â€˜Ip05â€™
            Unsigned immediate 5-bit value for movpi45 instruction with
            range 16-47.
!      â€˜Iu06â€™
            Unsigned immediate 6-bit value constraint for addri36.sp
            instruction.
!      â€˜Iu08â€™
            Unsigned immediate 8-bit value.
!      â€˜Iu09â€™
            Unsigned immediate 9-bit value.
!      â€˜Is10â€™
            Signed immediate 10-bit value.
!      â€˜Is11â€™
            Signed immediate 11-bit value.
!      â€˜Is15â€™
            Signed immediate 15-bit value.
!      â€˜Iu15â€™
            Unsigned immediate 15-bit value.
!      â€˜Ic15â€™
            A constant which is not in the range of imm15u but ok for bclr
            instruction.
!      â€˜Ie15â€™
            A constant which is not in the range of imm15u but ok for bset
            instruction.
!      â€˜It15â€™
            A constant which is not in the range of imm15u but ok for btgl
            instruction.
!      â€˜Ii15â€™
            A constant whose compliment value is in the range of imm15u
            and ok for bitci instruction.
!      â€˜Is16â€™
            Signed immediate 16-bit value.
!      â€˜Is17â€™
            Signed immediate 17-bit value.
!      â€˜Is19â€™
            Signed immediate 19-bit value.
!      â€˜Is20â€™
            Signed immediate 20-bit value.
!      â€˜Ihigâ€™
            The immediate value that can be simply set high 20-bit.
!      â€˜Izebâ€™
            The immediate value 0xff.
!      â€˜Izehâ€™
            The immediate value 0xffff.
!      â€˜Ixlsâ€™
            The immediate value 0x01.
!      â€˜Ix11â€™
            The immediate value 0x7ff.
!      â€˜Ibmsâ€™
            The immediate value with power of 2.
!      â€˜Ifexâ€™
            The immediate value with power of 2 minus 1.
!      â€˜U33â€™
            Memory constraint for 333 format.
!      â€˜U45â€™
            Memory constraint for 45 format.
!      â€˜U37â€™
            Memory constraint for 37 format.
  
! _OpenRISC--â€˜config/or1k/constraints.mdâ€™_
!      â€˜Iâ€™
            Integer that is valid as an immediate operand in an
!           instruction taking a signed 16-bit number.  Range âˆ’32768 to
            32767.
  
!      â€˜Kâ€™
            Integer that is valid as an immediate operand in an
            instruction taking an unsigned 16-bit number.  Range 0 to
            65535.
  
!      â€˜Mâ€™
            Signed 16-bit constant shifted left 16 bits.  (Used with
!           â€˜l.movhiâ€™)
  
!      â€˜Oâ€™
            Zero
  
!      â€˜câ€™
            Register usable for sibcalls.
  
! _PDP-11--â€˜config/pdp11/constraints.mdâ€™_
!      â€˜aâ€™
            Floating point registers AC0 through AC3.  These can be loaded
            from/to memory with a single instruction.
  
!      â€˜dâ€™
            Odd numbered general registers (R1, R3, R5).  These are used
            for 16-bit multiply operations.
  
!      â€˜Dâ€™
            A memory reference that is encoded within the opcode, but not
            auto-increment or auto-decrement.
  
!      â€˜fâ€™
            Any of the floating point registers (AC0 through AC5).
  
!      â€˜Gâ€™
            Floating point constant 0.
  
!      â€˜hâ€™
            Floating point registers AC4 and AC5.  These cannot be loaded
            from/to memory with a single instruction.
  
!      â€˜Iâ€™
            An integer constant that fits in 16 bits.
  
!      â€˜Jâ€™
            An integer constant whose low order 16 bits are zero.
  
!      â€˜Kâ€™
            An integer constant that does not meet the constraints for
!           codes â€˜Iâ€™ or â€˜Jâ€™.
  
!      â€˜Lâ€™
            The integer constant 1.
  
!      â€˜Mâ€™
!           The integer constant âˆ’1.
  
!      â€˜Nâ€™
            The integer constant 0.
  
!      â€˜Oâ€™
            Integer constants 0 through 3; shifts by these amounts are
            handled as multiple single-bit shifts rather than a single
            variable-length shift.
  
!      â€˜Qâ€™
            A memory reference which requires an additional word (address
            or offset) after the opcode.
  
!      â€˜Râ€™
            A memory reference that is encoded within the opcode.
  
! _PowerPC and IBM RS6000--â€˜config/rs6000/constraints.mdâ€™_
!      â€˜râ€™
!           A general purpose register (GPR), â€˜r0â€™...â€˜r31â€™.
  
!      â€˜bâ€™
!           A base register.  Like â€˜râ€™, but â€˜r0â€™ is not allowed, so
!           â€˜r1â€™...â€˜r31â€™.
  
!      â€˜fâ€™
!           A floating point register (FPR), â€˜f0â€™...â€˜f31â€™.
  
!      â€˜dâ€™
!           A floating point register.  This is the same as â€˜fâ€™ nowadays;
!           historically â€˜fâ€™ was for single-precision and â€˜dâ€™ was for
            double-precision floating point.
  
!      â€˜vâ€™
!           An Altivec vector register (VR), â€˜v0â€™...â€˜v31â€™.
  
!      â€˜waâ€™
!           A VSX register (VSR), â€˜vs0â€™...â€˜vs63â€™.  This is either an FPR
!           (â€˜vs0â€™...â€˜vs31â€™ are â€˜f0â€™...â€˜f31â€™) or a VR (â€˜vs32â€™...â€˜vs63â€™ are
!           â€˜v0â€™...â€˜v31â€™).
  
!           When using â€˜waâ€™, you should use the â€˜%xâ€™ output modifier, so
            that the correct register number is printed.  For example:
  
                 asm ("xvadddp %x0,%x1,%x2"
                      : "=wa" (v1)
                      : "wa" (v2), "wa" (v3));
  
!           You should not use â€˜%xâ€™ for â€˜vâ€™ operands:
  
                 asm ("xsaddqp %0,%1,%2"
                      : "=v" (v1)
                      : "v" (v2), "v" (v3));
  
!      â€˜hâ€™
!           A special register (â€˜vrsaveâ€™, â€˜ctrâ€™, or â€˜lrâ€™).
  
!      â€˜câ€™
!           The count register, â€˜ctrâ€™.
  
!      â€˜lâ€™
!           The link register, â€˜lrâ€™.
  
!      â€˜xâ€™
!           Condition register field 0, â€˜cr0â€™.
  
!      â€˜yâ€™
!           Any condition register field, â€˜cr0â€™...â€˜cr7â€™.
  
!      â€˜zâ€™
!           The carry bit, â€˜XER[CA]â€™.
  
!      â€˜weâ€™
!           Like â€˜waâ€™, if this is a POWER9 or later and â€˜-mvsxâ€™ and â€˜-m64â€™
!           are used; otherwise, â€˜NO_REGSâ€™.
  
!      â€˜wnâ€™
!           No register (â€˜NO_REGSâ€™).
  
!      â€˜wrâ€™
!           Like â€˜râ€™, if â€˜-mpowerpc64â€™ is used; otherwise, â€˜NO_REGSâ€™.
  
!      â€˜wxâ€™
!           Like â€˜dâ€™, if â€˜-mpowerpc-gfxoptâ€™ is used; otherwise, â€˜NO_REGSâ€™.
  
!      â€˜wAâ€™
!           Like â€˜bâ€™, if â€˜-mpowerpc64â€™ is used; otherwise, â€˜NO_REGSâ€™.
  
!      â€˜wBâ€™
            Signed 5-bit constant integer that can be loaded into an
            Altivec register.
  
!      â€˜wEâ€™
            Vector constant that can be loaded with the XXSPLTIB
            instruction.
  
!      â€˜wFâ€™
            Memory operand suitable for power8 GPR load fusion.
  
!      â€˜wLâ€™
            Int constant that is the element number mfvsrld accesses in a
            vector.
  
!      â€˜wMâ€™
            Match vector constant with all 1's if the XXLORC instruction
            is available.
  
!      â€˜wOâ€™
            Memory operand suitable for the ISA 3.0 vector d-form
            instructions.
  
!      â€˜wQâ€™
            Memory operand suitable for the load/store quad instructions.
  
!      â€˜wSâ€™
            Vector constant that can be loaded with XXSPLTIB & sign
            extension.
  
!      â€˜wYâ€™
            A memory operand for a DS-form instruction.
  
!      â€˜wZâ€™
            An indexed or indirect memory operand, ignoring the bottom 4
            bits.
  
!      â€˜Iâ€™
            A signed 16-bit constant.
  
!      â€˜Jâ€™
!           An unsigned 16-bit constant shifted left 16 bits (use â€˜Lâ€™
!           instead for â€˜SImodeâ€™ constants).
  
!      â€˜Kâ€™
            An unsigned 16-bit constant.
  
!      â€˜Lâ€™
            A signed 16-bit constant shifted left 16 bits.
  
!      â€˜Mâ€™
            An integer constant greater than 31.
  
!      â€˜Nâ€™
            An exact power of 2.
  
!      â€˜Oâ€™
            The integer constant zero.
  
!      â€˜Pâ€™
            A constant whose negation is a signed 16-bit constant.
  
!      â€˜eIâ€™
            A signed 34-bit integer constant if prefixed instructions are
            supported.
  
!      â€˜ePâ€™
            A scalar floating point constant or a vector constant that can
            be loaded to a VSX register with one prefixed instruction.
  
!      â€˜eQâ€™
            An IEEE 128-bit constant that can be loaded into a VSX
!           register with the â€˜lxvkqâ€™ instruction.
  
!      â€˜Gâ€™
            A floating point constant that can be loaded into a register
            with one instruction per word.
  
!      â€˜Hâ€™
            A floating point constant that can be loaded into a register
            using three instructions.
  
!      â€˜mâ€™
!           A memory operand.  Normally, â€˜mâ€™ does not allow addresses that
!           update the base register.  If the â€˜<â€™ or â€˜>â€™ constraint is
            also used, they are allowed and therefore on PowerPC targets
!           in that case it is only safe to use â€˜m<>â€™ in an â€˜asmâ€™
!           statement if that â€˜asmâ€™ statement accesses the operand exactly
!           once.  The â€˜asmâ€™ statement must also use â€˜%U<OPNO>â€™ as a
            placeholder for the "update" flag in the corresponding load or
            store instruction.  For example:
  
*************** _PowerPC and IBM RS6000--'config/rs6000/
*** 25859,26403 ****
  
            is not.
  
!      'es'
            A "stable" memory operand; that is, one which does not include
            any automodification of the base register.  This used to be
!           useful when 'm' allowed automodification of the base register,
!           but as those are now only allowed when '<' or '>' is used,
!           'es' is basically the same as 'm' without '<' and '>'.
  
!      'Q'
            A memory operand addressed by just a base register.
  
!      'Y'
            A memory operand for a DQ-form instruction.
  
!      'Z'
            A memory operand accessed with indexed or indirect addressing.
  
!      'R'
            An AIX TOC entry.
  
!      'a'
            An indexed or indirect address.
  
!      'U'
            A V.4 small data reference.
  
!      'W'
            A vector constant that does not require memory.
  
!      'j'
            The zero vector constant.
  
! _PRU--'config/pru/constraints.md'_
!      'I'
            An unsigned 8-bit integer constant.
  
!      'J'
            An unsigned 16-bit integer constant.
  
!      'L'
            An unsigned 5-bit integer constant (for shift counts).
  
!      'T'
            A text segment (program memory) constant label.
  
!      'Z'
            Integer constant zero.
  
! _RL78--'config/rl78/constraints.md'_
  
!      'Int3'
            An integer constant in the range 1 ... 7.
!      'Int8'
            An integer constant in the range 0 ... 255.
!      'J'
!           An integer constant in the range -255 ... 0
!      'K'
            The integer constant 1.
!      'L'
            The integer constant -1.
!      'M'
            The integer constant 0.
!      'N'
            The integer constant 2.
!      'O'
            The integer constant -2.
!      'P'
            An integer constant in the range 1 ... 15.
!      'Qbi'
            The built-in compare types-eq, ne, gtu, ltu, geu, and leu.
!      'Qsc'
            The synthetic compare types-gt, lt, ge, and le.
!      'Wab'
            A memory reference with an absolute address.
!      'Wbc'
!           A memory reference using 'BC' as a base register, with an
            optional offset.
!      'Wca'
!           A memory reference using 'AX', 'BC', 'DE', or 'HL' for the
            address, for calls.
!      'Wcv'
            A memory reference using any 16-bit register pair for the
            address, for calls.
!      'Wd2'
!           A memory reference using 'DE' as a base register, with an
            optional offset.
!      'Wde'
!           A memory reference using 'DE' as a base register, without any
            offset.
!      'Wfr'
            Any memory reference to an address in the far address space.
!      'Wh1'
!           A memory reference using 'HL' as a base register, with an
            optional one-byte offset.
!      'Whb'
!           A memory reference using 'HL' as a base register, with 'B' or
!           'C' as the index register.
!      'Whl'
!           A memory reference using 'HL' as a base register, without any
            offset.
!      'Ws1'
!           A memory reference using 'SP' as a base register, with an
            optional one-byte offset.
!      'Y'
            Any memory reference to an address in the near address space.
!      'A'
!           The 'AX' register.
!      'B'
!           The 'BC' register.
!      'D'
!           The 'DE' register.
!      'R'
!           'A' through 'L' registers.
!      'S'
!           The 'SP' register.
!      'T'
!           The 'HL' register.
!      'Z08W'
!           The 16-bit 'R8' register.
!      'Z10W'
!           The 16-bit 'R10' register.
!      'Zint'
!           The registers reserved for interrupts ('R24' to 'R31').
!      'a'
!           The 'A' register.
!      'b'
!           The 'B' register.
!      'c'
!           The 'C' register.
!      'd'
!           The 'D' register.
!      'e'
!           The 'E' register.
!      'h'
!           The 'H' register.
!      'l'
!           The 'L' register.
!      'v'
            The virtual registers.
!      'w'
!           The 'PSW' register.
!      'x'
!           The 'X' register.
  
! _RISC-V--'config/riscv/constraints.md'_
  
!      'f'
            A floating-point register (if available).
  
!      'I'
            An I-type 12-bit signed immediate.
  
!      'J'
            Integer zero.
  
!      'K'
            A 5-bit unsigned immediate for CSR access instructions.
  
!      'A'
            An address that is held in a general-purpose register.
  
!      'S'
            A constraint that matches an absolute symbolic address.
  
!      'vr'
            A vector register (if available)..
  
!      'vd'
            A vector register, excluding v0 (if available).
  
!      'vm'
            A vector register, only v0 (if available).
  
!      'cr'
            RVC general purpose register (x8-x15).
  
!      'cf'
            RVC floating-point registers (f8-f15), if available, reuse GPR
            as FPR when use zfinx.
  
!      'R'
            Even-odd general purpose register pair.
  
! _RX--'config/rx/constraints.md'_
!      'Q'
            An address which does not involve register indirect addressing
            or pre/post increment/decrement addressing.
  
!      'Symbol'
            A symbol reference.
  
!      'Int08'
!           A constant in the range -256 to 255, inclusive.
  
!      'Sint08'
!           A constant in the range -128 to 127, inclusive.
  
!      'Sint16'
!           A constant in the range -32768 to 32767, inclusive.
  
!      'Sint24'
!           A constant in the range -8388608 to 8388607, inclusive.
  
!      'Uint04'
            A constant in the range 0 to 15, inclusive.
  
! _S/390 and zSeries--'config/s390/s390.h'_
!      'a'
            Address register (general purpose register except r0)
  
!      'c'
            Condition code register
  
!      'd'
            Data register (arbitrary general purpose register)
  
!      'f'
            Floating-point register
  
!      'I'
            Unsigned 8-bit constant (0-255)
  
!      'J'
            Unsigned 12-bit constant (0-4095)
  
!      'K'
!           Signed 16-bit constant (-32768-32767)
  
!      'L'
            Value appropriate as displacement.
!           '(0..4095)'
                 for short displacement
!           '(-524288..524287)'
                 for long displacement
  
!      'M'
            Constant integer with a value of 0x7fffffff.
  
!      'N'
            Multiple letter constraint followed by 4 parameter letters.
!           '0..9:'
                 number of the part counting from most to least
                 significant
!           'H,Q:'
                 mode of the part
!           'D,S,H:'
                 mode of the containing operand
!           '0,F:'
                 value of the other parts (F--all bits set)
            The constraint matches if the specified part of a constant has
            a value different from its other parts.
  
!      'Q'
            Memory reference without index register and with short
            displacement.
  
!      'R'
            Memory reference with index register and short displacement.
  
!      'S'
            Memory reference without index register but with long
            displacement.
  
!      'T'
            Memory reference with index register and long displacement.
  
!      'U'
            Pointer with short displacement.
  
!      'W'
            Pointer with long displacement.
  
!      'Y'
            Shift count operand.
  
! _SPARC--'config/sparc/sparc.h'_
!      'f'
            Floating-point register on the SPARC-V8 architecture and lower
            floating-point register on the SPARC-V9 architecture.
  
!      'e'
!           Floating-point register.  It is equivalent to 'f' on the
            SPARC-V8 architecture and contains both lower and upper
            floating-point registers on the SPARC-V9 architecture.
  
!      'c'
            Floating-point condition code register.
  
!      'd'
            Lower floating-point register.  It is only valid on the
            SPARC-V9 architecture when the Visual Instruction Set is
            available.
  
!      'b'
            Floating-point register.  It is only valid on the SPARC-V9
            architecture when the Visual Instruction Set is available.
  
!      'h'
            64-bit global or out register for the SPARC-V8+ architecture.
  
!      'C'
            The constant all-ones, for floating-point.
  
!      'A'
            Signed 5-bit constant
  
!      'D'
            A vector constant
  
!      'I'
            Signed 13-bit constant
  
!      'J'
            Zero
  
!      'K'
            32-bit constant with the low 12 bits clear (a constant that
!           can be loaded with the 'sethi' instruction)
  
!      'L'
!           A constant in the range supported by 'movcc' instructions
            (11-bit signed immediate)
  
!      'M'
!           A constant in the range supported by 'movrcc' instructions
            (10-bit signed immediate)
  
!      'N'
!           Same as 'K', except that it verifies that bits that are not in
            the lower 32-bit range are all zero.  Must be used instead of
!           'K' for modes wider than 'SImode'
  
!      'O'
            The constant 4096
  
!      'G'
            Floating-point zero
  
!      'H'
            Signed 13-bit constant, sign-extended to 32 or 64 bits
  
!      'P'
            The constant -1
  
!      'Q'
            Floating-point constant whose integral representation can be
            moved into an integer register using a single sethi
            instruction
  
!      'R'
            Floating-point constant whose integral representation can be
            moved into an integer register using a single mov instruction
  
!      'S'
            Floating-point constant whose integral representation can be
            moved into an integer register using a high/lo_sum instruction
            sequence
  
!      'T'
            Memory address aligned to an 8-byte boundary
  
!      'W'
!           Memory address for 'e' constraint registers
  
!      'w'
            Memory address with only a base register
  
!      'Y'
            Vector zero
  
! _TI C6X family--'config/c6x/constraints.md'_
!      'a'
            Register file A (A0-A31).
  
!      'b'
            Register file B (B0-B31).
  
!      'A'
            Predicate registers in register file A (A0-A2 on C64X and
            higher, A1 and A2 otherwise).
  
!      'B'
            Predicate registers in register file B (B0-B2).
  
!      'C'
            A call-used register in register file B (B0-B9, B16-B31).
  
!      'Da'
            Register file A, excluding predicate registers (A3-A31, plus
            A0 if not C64X or higher).
  
!      'Db'
            Register file B, excluding predicate registers (B3-B31).
  
!      'Iu4'
            Integer constant in the range 0 ... 15.
  
!      'Iu5'
            Integer constant in the range 0 ... 31.
  
!      'In5'
!           Integer constant in the range -31 ... 0.
  
!      'Is5'
!           Integer constant in the range -16 ... 15.
  
!      'I5x'
            Integer constant that can be the operand of an ADDA or a SUBA
            insn.
  
!      'IuB'
            Integer constant in the range 0 ... 65535.
  
!      'IsB'
!           Integer constant in the range -32768 ... 32767.
  
!      'IsC'
            Integer constant in the range -2^{20} ... 2^{20} - 1.
  
!      'Jc'
            Integer constant that is a valid mask for the clr instruction.
  
!      'Js'
            Integer constant that is a valid mask for the set instruction.
  
!      'Q'
            Memory location with A base register.
  
!      'R'
            Memory location with B base register.
  
!      'S0'
            On C64x+ targets, a GP-relative small data reference.
  
!      'S1'
!           Any kind of 'SYMBOL_REF', for use in a call address.
  
!      'Si'
            Any kind of immediate operand, unless it matches the S0
            constraint.
  
!      'T'
            Memory location with B base register, but not using a long
            offset.
  
!      'W'
            A memory operand with an address that cannot be used in an
            unaligned access.
  
!      'Z'
            Register B14 (aka DP).
  
! _Visium--'config/visium/constraints.md'_
!      'b'
!           EAM register 'mdb'
  
!      'c'
!           EAM register 'mdc'
  
!      'f'
            Floating point register
  
!      'k'
            Register for sibcall optimization
  
!      'l'
!           General register, but not 'r29', 'r30' and 'r31'
  
!      't'
!           Register 'r1'
  
!      'u'
!           Register 'r2'
  
!      'v'
!           Register 'r3'
  
!      'G'
            Floating-point constant 0.0
  
!      'J'
            Integer constant in the range 0 ..  65535 (16-bit immediate)
  
!      'K'
            Integer constant in the range 1 ..  31 (5-bit immediate)
  
!      'L'
!           Integer constant in the range -65535 ..  -1 (16-bit negative
            immediate)
  
!      'M'
!           Integer constant -1
  
!      'O'
            Integer constant 0
  
!      'P'
            Integer constant 32
  
! _x86 family--'config/i386/constraints.md'_
!      'R'
            Legacy register--the eight integer registers available on all
!           i386 processors ('a', 'b', 'c', 'd', 'si', 'di', 'bp', 'sp').
  
!      'q'
!           Any register accessible as 'Rl'.  In 32-bit mode, 'a', 'b',
!           'c', and 'd'; in 64-bit mode, any integer register.
  
!      'Q'
!           Any register accessible as 'Rh': 'a', 'b', 'c', and 'd'.
  
!      'l'
            Any register that can be used as the index in a base+index
            memory access: that is, any general register except the stack
            pointer.
  
!      'a'
!           The 'a' register.
  
!      'b'
!           The 'b' register.
  
!      'c'
!           The 'c' register.
  
!      'd'
!           The 'd' register.
  
!      'S'
!           The 'si' register.
  
!      'D'
!           The 'di' register.
  
!      'A'
!           The 'a' and 'd' registers.  This class is used for
!           instructions that return double word results in the 'ax:dx'
            register pair.  Single word values will be allocated either in
!           'ax' or 'dx'.  For example on i386 the following implements
!           'rdtsc':
  
                 unsigned long long rdtsc (void)
                 {
--- 25863,26407 ----
  
            is not.
  
!      â€˜esâ€™
            A "stable" memory operand; that is, one which does not include
            any automodification of the base register.  This used to be
!           useful when â€˜mâ€™ allowed automodification of the base register,
!           but as those are now only allowed when â€˜<â€™ or â€˜>â€™ is used,
!           â€˜esâ€™ is basically the same as â€˜mâ€™ without â€˜<â€™ and â€˜>â€™.
  
!      â€˜Qâ€™
            A memory operand addressed by just a base register.
  
!      â€˜Yâ€™
            A memory operand for a DQ-form instruction.
  
!      â€˜Zâ€™
            A memory operand accessed with indexed or indirect addressing.
  
!      â€˜Râ€™
            An AIX TOC entry.
  
!      â€˜aâ€™
            An indexed or indirect address.
  
!      â€˜Uâ€™
            A V.4 small data reference.
  
!      â€˜Wâ€™
            A vector constant that does not require memory.
  
!      â€˜jâ€™
            The zero vector constant.
  
! _PRU--â€˜config/pru/constraints.mdâ€™_
!      â€˜Iâ€™
            An unsigned 8-bit integer constant.
  
!      â€˜Jâ€™
            An unsigned 16-bit integer constant.
  
!      â€˜Lâ€™
            An unsigned 5-bit integer constant (for shift counts).
  
!      â€˜Tâ€™
            A text segment (program memory) constant label.
  
!      â€˜Zâ€™
            Integer constant zero.
  
! _RL78--â€˜config/rl78/constraints.mdâ€™_
  
!      â€˜Int3â€™
            An integer constant in the range 1 ... 7.
!      â€˜Int8â€™
            An integer constant in the range 0 ... 255.
!      â€˜Jâ€™
!           An integer constant in the range âˆ’255 ... 0
!      â€˜Kâ€™
            The integer constant 1.
!      â€˜Lâ€™
            The integer constant -1.
!      â€˜Mâ€™
            The integer constant 0.
!      â€˜Nâ€™
            The integer constant 2.
!      â€˜Oâ€™
            The integer constant -2.
!      â€˜Pâ€™
            An integer constant in the range 1 ... 15.
!      â€˜Qbiâ€™
            The built-in compare types-eq, ne, gtu, ltu, geu, and leu.
!      â€˜Qscâ€™
            The synthetic compare types-gt, lt, ge, and le.
!      â€˜Wabâ€™
            A memory reference with an absolute address.
!      â€˜Wbcâ€™
!           A memory reference using â€˜BCâ€™ as a base register, with an
            optional offset.
!      â€˜Wcaâ€™
!           A memory reference using â€˜AXâ€™, â€˜BCâ€™, â€˜DEâ€™, or â€˜HLâ€™ for the
            address, for calls.
!      â€˜Wcvâ€™
            A memory reference using any 16-bit register pair for the
            address, for calls.
!      â€˜Wd2â€™
!           A memory reference using â€˜DEâ€™ as a base register, with an
            optional offset.
!      â€˜Wdeâ€™
!           A memory reference using â€˜DEâ€™ as a base register, without any
            offset.
!      â€˜Wfrâ€™
            Any memory reference to an address in the far address space.
!      â€˜Wh1â€™
!           A memory reference using â€˜HLâ€™ as a base register, with an
            optional one-byte offset.
!      â€˜Whbâ€™
!           A memory reference using â€˜HLâ€™ as a base register, with â€˜Bâ€™ or
!           â€˜Câ€™ as the index register.
!      â€˜Whlâ€™
!           A memory reference using â€˜HLâ€™ as a base register, without any
            offset.
!      â€˜Ws1â€™
!           A memory reference using â€˜SPâ€™ as a base register, with an
            optional one-byte offset.
!      â€˜Yâ€™
            Any memory reference to an address in the near address space.
!      â€˜Aâ€™
!           The â€˜AXâ€™ register.
!      â€˜Bâ€™
!           The â€˜BCâ€™ register.
!      â€˜Dâ€™
!           The â€˜DEâ€™ register.
!      â€˜Râ€™
!           â€˜Aâ€™ through â€˜Lâ€™ registers.
!      â€˜Sâ€™
!           The â€˜SPâ€™ register.
!      â€˜Tâ€™
!           The â€˜HLâ€™ register.
!      â€˜Z08Wâ€™
!           The 16-bit â€˜R8â€™ register.
!      â€˜Z10Wâ€™
!           The 16-bit â€˜R10â€™ register.
!      â€˜Zintâ€™
!           The registers reserved for interrupts (â€˜R24â€™ to â€˜R31â€™).
!      â€˜aâ€™
!           The â€˜Aâ€™ register.
!      â€˜bâ€™
!           The â€˜Bâ€™ register.
!      â€˜câ€™
!           The â€˜Câ€™ register.
!      â€˜dâ€™
!           The â€˜Dâ€™ register.
!      â€˜eâ€™
!           The â€˜Eâ€™ register.
!      â€˜hâ€™
!           The â€˜Hâ€™ register.
!      â€˜lâ€™
!           The â€˜Lâ€™ register.
!      â€˜vâ€™
            The virtual registers.
!      â€˜wâ€™
!           The â€˜PSWâ€™ register.
!      â€˜xâ€™
!           The â€˜Xâ€™ register.
  
! _RISC-V--â€˜config/riscv/constraints.mdâ€™_
  
!      â€˜fâ€™
            A floating-point register (if available).
  
!      â€˜Iâ€™
            An I-type 12-bit signed immediate.
  
!      â€˜Jâ€™
            Integer zero.
  
!      â€˜Kâ€™
            A 5-bit unsigned immediate for CSR access instructions.
  
!      â€˜Aâ€™
            An address that is held in a general-purpose register.
  
!      â€˜Sâ€™
            A constraint that matches an absolute symbolic address.
  
!      â€˜vrâ€™
            A vector register (if available)..
  
!      â€˜vdâ€™
            A vector register, excluding v0 (if available).
  
!      â€˜vmâ€™
            A vector register, only v0 (if available).
  
!      â€˜crâ€™
            RVC general purpose register (x8-x15).
  
!      â€˜cfâ€™
            RVC floating-point registers (f8-f15), if available, reuse GPR
            as FPR when use zfinx.
  
!      â€˜Râ€™
            Even-odd general purpose register pair.
  
! _RX--â€˜config/rx/constraints.mdâ€™_
!      â€˜Qâ€™
            An address which does not involve register indirect addressing
            or pre/post increment/decrement addressing.
  
!      â€˜Symbolâ€™
            A symbol reference.
  
!      â€˜Int08â€™
!           A constant in the range âˆ’256 to 255, inclusive.
  
!      â€˜Sint08â€™
!           A constant in the range âˆ’128 to 127, inclusive.
  
!      â€˜Sint16â€™
!           A constant in the range âˆ’32768 to 32767, inclusive.
  
!      â€˜Sint24â€™
!           A constant in the range âˆ’8388608 to 8388607, inclusive.
  
!      â€˜Uint04â€™
            A constant in the range 0 to 15, inclusive.
  
! _S/390 and zSeries--â€˜config/s390/s390.hâ€™_
!      â€˜aâ€™
            Address register (general purpose register except r0)
  
!      â€˜câ€™
            Condition code register
  
!      â€˜dâ€™
            Data register (arbitrary general purpose register)
  
!      â€˜fâ€™
            Floating-point register
  
!      â€˜Iâ€™
            Unsigned 8-bit constant (0-255)
  
!      â€˜Jâ€™
            Unsigned 12-bit constant (0-4095)
  
!      â€˜Kâ€™
!           Signed 16-bit constant (âˆ’32768-32767)
  
!      â€˜Lâ€™
            Value appropriate as displacement.
!           â€˜(0..4095)â€™
                 for short displacement
!           â€˜(âˆ’524288..524287)â€™
                 for long displacement
  
!      â€˜Mâ€™
            Constant integer with a value of 0x7fffffff.
  
!      â€˜Nâ€™
            Multiple letter constraint followed by 4 parameter letters.
!           â€˜0..9:â€™
                 number of the part counting from most to least
                 significant
!           â€˜H,Q:â€™
                 mode of the part
!           â€˜D,S,H:â€™
                 mode of the containing operand
!           â€˜0,F:â€™
                 value of the other parts (F--all bits set)
            The constraint matches if the specified part of a constant has
            a value different from its other parts.
  
!      â€˜Qâ€™
            Memory reference without index register and with short
            displacement.
  
!      â€˜Râ€™
            Memory reference with index register and short displacement.
  
!      â€˜Sâ€™
            Memory reference without index register but with long
            displacement.
  
!      â€˜Tâ€™
            Memory reference with index register and long displacement.
  
!      â€˜Uâ€™
            Pointer with short displacement.
  
!      â€˜Wâ€™
            Pointer with long displacement.
  
!      â€˜Yâ€™
            Shift count operand.
  
! _SPARC--â€˜config/sparc/sparc.hâ€™_
!      â€˜fâ€™
            Floating-point register on the SPARC-V8 architecture and lower
            floating-point register on the SPARC-V9 architecture.
  
!      â€˜eâ€™
!           Floating-point register.  It is equivalent to â€˜fâ€™ on the
            SPARC-V8 architecture and contains both lower and upper
            floating-point registers on the SPARC-V9 architecture.
  
!      â€˜câ€™
            Floating-point condition code register.
  
!      â€˜dâ€™
            Lower floating-point register.  It is only valid on the
            SPARC-V9 architecture when the Visual Instruction Set is
            available.
  
!      â€˜bâ€™
            Floating-point register.  It is only valid on the SPARC-V9
            architecture when the Visual Instruction Set is available.
  
!      â€˜hâ€™
            64-bit global or out register for the SPARC-V8+ architecture.
  
!      â€˜Câ€™
            The constant all-ones, for floating-point.
  
!      â€˜Aâ€™
            Signed 5-bit constant
  
!      â€˜Dâ€™
            A vector constant
  
!      â€˜Iâ€™
            Signed 13-bit constant
  
!      â€˜Jâ€™
            Zero
  
!      â€˜Kâ€™
            32-bit constant with the low 12 bits clear (a constant that
!           can be loaded with the â€˜sethiâ€™ instruction)
  
!      â€˜Lâ€™
!           A constant in the range supported by â€˜movccâ€™ instructions
            (11-bit signed immediate)
  
!      â€˜Mâ€™
!           A constant in the range supported by â€˜movrccâ€™ instructions
            (10-bit signed immediate)
  
!      â€˜Nâ€™
!           Same as â€˜Kâ€™, except that it verifies that bits that are not in
            the lower 32-bit range are all zero.  Must be used instead of
!           â€˜Kâ€™ for modes wider than â€˜SImodeâ€™
  
!      â€˜Oâ€™
            The constant 4096
  
!      â€˜Gâ€™
            Floating-point zero
  
!      â€˜Hâ€™
            Signed 13-bit constant, sign-extended to 32 or 64 bits
  
!      â€˜Pâ€™
            The constant -1
  
!      â€˜Qâ€™
            Floating-point constant whose integral representation can be
            moved into an integer register using a single sethi
            instruction
  
!      â€˜Râ€™
            Floating-point constant whose integral representation can be
            moved into an integer register using a single mov instruction
  
!      â€˜Sâ€™
            Floating-point constant whose integral representation can be
            moved into an integer register using a high/lo_sum instruction
            sequence
  
!      â€˜Tâ€™
            Memory address aligned to an 8-byte boundary
  
!      â€˜Wâ€™
!           Memory address for â€˜eâ€™ constraint registers
  
!      â€˜wâ€™
            Memory address with only a base register
  
!      â€˜Yâ€™
            Vector zero
  
! _TI C6X family--â€˜config/c6x/constraints.mdâ€™_
!      â€˜aâ€™
            Register file A (A0-A31).
  
!      â€˜bâ€™
            Register file B (B0-B31).
  
!      â€˜Aâ€™
            Predicate registers in register file A (A0-A2 on C64X and
            higher, A1 and A2 otherwise).
  
!      â€˜Bâ€™
            Predicate registers in register file B (B0-B2).
  
!      â€˜Câ€™
            A call-used register in register file B (B0-B9, B16-B31).
  
!      â€˜Daâ€™
            Register file A, excluding predicate registers (A3-A31, plus
            A0 if not C64X or higher).
  
!      â€˜Dbâ€™
            Register file B, excluding predicate registers (B3-B31).
  
!      â€˜Iu4â€™
            Integer constant in the range 0 ... 15.
  
!      â€˜Iu5â€™
            Integer constant in the range 0 ... 31.
  
!      â€˜In5â€™
!           Integer constant in the range âˆ’31 ... 0.
  
!      â€˜Is5â€™
!           Integer constant in the range âˆ’16 ... 15.
  
!      â€˜I5xâ€™
            Integer constant that can be the operand of an ADDA or a SUBA
            insn.
  
!      â€˜IuBâ€™
            Integer constant in the range 0 ... 65535.
  
!      â€˜IsBâ€™
!           Integer constant in the range âˆ’32768 ... 32767.
  
!      â€˜IsCâ€™
            Integer constant in the range -2^{20} ... 2^{20} - 1.
  
!      â€˜Jcâ€™
            Integer constant that is a valid mask for the clr instruction.
  
!      â€˜Jsâ€™
            Integer constant that is a valid mask for the set instruction.
  
!      â€˜Qâ€™
            Memory location with A base register.
  
!      â€˜Râ€™
            Memory location with B base register.
  
!      â€˜S0â€™
            On C64x+ targets, a GP-relative small data reference.
  
!      â€˜S1â€™
!           Any kind of â€˜SYMBOL_REFâ€™, for use in a call address.
  
!      â€˜Siâ€™
            Any kind of immediate operand, unless it matches the S0
            constraint.
  
!      â€˜Tâ€™
            Memory location with B base register, but not using a long
            offset.
  
!      â€˜Wâ€™
            A memory operand with an address that cannot be used in an
            unaligned access.
  
!      â€˜Zâ€™
            Register B14 (aka DP).
  
! _Visium--â€˜config/visium/constraints.mdâ€™_
!      â€˜bâ€™
!           EAM register â€˜mdbâ€™
  
!      â€˜câ€™
!           EAM register â€˜mdcâ€™
  
!      â€˜fâ€™
            Floating point register
  
!      â€˜kâ€™
            Register for sibcall optimization
  
!      â€˜lâ€™
!           General register, but not â€˜r29â€™, â€˜r30â€™ and â€˜r31â€™
  
!      â€˜tâ€™
!           Register â€˜r1â€™
  
!      â€˜uâ€™
!           Register â€˜r2â€™
  
!      â€˜vâ€™
!           Register â€˜r3â€™
  
!      â€˜Gâ€™
            Floating-point constant 0.0
  
!      â€˜Jâ€™
            Integer constant in the range 0 ..  65535 (16-bit immediate)
  
!      â€˜Kâ€™
            Integer constant in the range 1 ..  31 (5-bit immediate)
  
!      â€˜Lâ€™
!           Integer constant in the range âˆ’65535 ..  âˆ’1 (16-bit negative
            immediate)
  
!      â€˜Mâ€™
!           Integer constant âˆ’1
  
!      â€˜Oâ€™
            Integer constant 0
  
!      â€˜Pâ€™
            Integer constant 32
  
! _x86 family--â€˜config/i386/constraints.mdâ€™_
!      â€˜Râ€™
            Legacy register--the eight integer registers available on all
!           i386 processors (â€˜aâ€™, â€˜bâ€™, â€˜câ€™, â€˜dâ€™, â€˜siâ€™, â€˜diâ€™, â€˜bpâ€™, â€˜spâ€™).
  
!      â€˜qâ€™
!           Any register accessible as â€˜Rlâ€™.  In 32-bit mode, â€˜aâ€™, â€˜bâ€™,
!           â€˜câ€™, and â€˜dâ€™; in 64-bit mode, any integer register.
  
!      â€˜Qâ€™
!           Any register accessible as â€˜Rhâ€™: â€˜aâ€™, â€˜bâ€™, â€˜câ€™, and â€˜dâ€™.
  
!      â€˜lâ€™
            Any register that can be used as the index in a base+index
            memory access: that is, any general register except the stack
            pointer.
  
!      â€˜aâ€™
!           The â€˜aâ€™ register.
  
!      â€˜bâ€™
!           The â€˜bâ€™ register.
  
!      â€˜câ€™
!           The â€˜câ€™ register.
  
!      â€˜dâ€™
!           The â€˜dâ€™ register.
  
!      â€˜Sâ€™
!           The â€˜siâ€™ register.
  
!      â€˜Dâ€™
!           The â€˜diâ€™ register.
  
!      â€˜Aâ€™
!           The â€˜aâ€™ and â€˜dâ€™ registers.  This class is used for
!           instructions that return double word results in the â€˜ax:dxâ€™
            register pair.  Single word values will be allocated either in
!           â€˜axâ€™ or â€˜dxâ€™.  For example on i386 the following implements
!           â€˜rdtscâ€™:
  
                 unsigned long long rdtsc (void)
                 {
*************** _x86 family--'config/i386/constraints.md
*** 26407,26413 ****
                 }
  
            This is not correct on x86-64 as it would allocate tick in
!           either 'ax' or 'dx'.  You have to use the following variant
            instead:
  
                 unsigned long long rdtsc (void)
--- 26411,26417 ----
                 }
  
            This is not correct on x86-64 as it would allocate tick in
!           either â€˜axâ€™ or â€˜dxâ€™.  You have to use the following variant
            instead:
  
                 unsigned long long rdtsc (void)
*************** _x86 family--'config/i386/constraints.md
*** 26417,26730 ****
                   return ((unsigned long long)tickh << 32)|tickl;
                 }
  
!      'U'
            The call-clobbered integer registers.
  
!      'f'
            Any 80387 floating-point (stack) register.
  
!      't'
!           Top of 80387 floating-point stack ('%st(0)').
  
!      'u'
!           Second from top of 80387 floating-point stack ('%st(1)').
  
!      'Yk'
            Any mask register that can be used as a predicate, i.e.
!           'k1-k7'.
  
!      'k'
            Any mask register.
  
!      'y'
            Any MMX register.
  
!      'x'
            Any SSE register.
  
!      'v'
!           Any EVEX encodable SSE register ('%xmm0-%xmm31').
  
!      'w'
            Any bound register.
  
!      'Yz'
!           First SSE register ('%xmm0').
  
!      'Yi'
            Any SSE register, when SSE2 and inter-unit moves are enabled.
  
!      'Yj'
            Any SSE register, when SSE2 and inter-unit moves from vector
            registers are enabled.
  
!      'Ym'
            Any MMX register, when inter-unit moves are enabled.
  
!      'Yn'
            Any MMX register, when inter-unit moves from vector registers
            are enabled.
  
!      'Yp'
!           Any integer register when 'TARGET_PARTIAL_REG_STALL' is
            disabled.
  
!      'Ya'
!           Any integer register when zero extensions with 'AND' are
            disabled.
  
!      'Yb'
            Any register that can be used as the GOT base when calling
!           '___tls_get_addr': that is, any general register except 'a'
!           and 'sp' registers, for '-fno-plt' if linker supports it.
!           Otherwise, 'b' register.
  
!      'Yf'
            Any x87 register when 80387 floating-point arithmetic is
            enabled.
  
!      'Yr'
            Lower SSE register when avoiding REX prefix and all SSE
            registers otherwise.
  
!      'Yv'
            For AVX512VL, any EVEX-encodable SSE register
!           ('%xmm0-%xmm31'), otherwise any SSE register.
  
!      'Yh'
            Any EVEX-encodable SSE register, that has number factor of
            four.
  
!      'Bf'
            Flags register operand.
  
!      'Bg'
            GOT memory operand.
  
!      'Bm'
            Vector memory operand.
  
!      'Bc'
            Constant memory operand.
  
!      'Bn'
            Memory operand without REX prefix.
  
!      'Bs'
            Sibcall memory operand.
  
!      'Bw'
            Call memory operand.
  
!      'Bz'
            Constant call address operand.
  
!      'BC'
            SSE constant -1 operand.
  
!      'I'
            Integer constant in the range 0 ... 31, for 32-bit shifts.
  
!      'J'
            Integer constant in the range 0 ... 63, for 64-bit shifts.
  
!      'K'
            Signed 8-bit integer constant.
  
!      'L'
!           '0xFF' or '0xFFFF', for andsi as a zero-extending move.
  
!      'M'
!           0, 1, 2, or 3 (shifts for the 'lea' instruction).
  
!      'N'
!           Unsigned 8-bit integer constant (for 'in' and 'out'
            instructions).
  
!      'O'
            Integer constant in the range 0 ... 127, for 128-bit shifts.
  
!      'G'
            Standard 80387 floating point constant.
  
!      'C'
            SSE constant zero operand.
  
!      'e'
            32-bit signed integer constant, or a symbolic reference known
            to fit that range (for immediate operands in sign-extending
            x86-64 instructions).
  
!      'We'
            32-bit signed integer constant, or a symbolic reference known
            to fit that range (for sign-extending conversion operations
!           that require non-'VOIDmode' immediate operands).
  
!      'Wz'
            32-bit unsigned integer constant, or a symbolic reference
            known to fit that range (for zero-extending conversion
!           operations that require non-'VOIDmode' immediate operands).
  
!      'Wd'
            128-bit integer constant where both the high and low 64-bit
!           word satisfy the 'e' constraint.
  
!      'Ws'
!           A symbolic reference or label reference.  You can use the '%p'
            modifier to print the raw symbol.
  
!      'Z'
            32-bit unsigned integer constant, or a symbolic reference
            known to fit that range (for immediate operands in
            zero-extending x86-64 instructions).
  
!      'Tv'
            VSIB address operand.
  
!      'Ts'
            Address operand without segment register.
  
! _Xstormy16--'config/stormy16/stormy16.h'_
!      'a'
            Register r0.
  
!      'b'
            Register r1.
  
!      'c'
            Register r2.
  
!      'd'
            Register r8.
  
!      'e'
            Registers r0 through r7.
  
!      't'
            Registers r0 and r1.
  
!      'y'
            The carry register.
  
!      'z'
            Registers r8 and r9.
  
!      'I'
            A constant between 0 and 3 inclusive.
  
!      'J'
            A constant that has exactly one bit set.
  
!      'K'
            A constant that has exactly one bit clear.
  
!      'L'
            A constant between 0 and 255 inclusive.
  
!      'M'
!           A constant between -255 and 0 inclusive.
  
!      'N'
!           A constant between -3 and 0 inclusive.
  
!      'O'
            A constant between 1 and 4 inclusive.
  
!      'P'
!           A constant between -4 and -1 inclusive.
  
!      'Q'
            A memory reference that is a stack push.
  
!      'R'
            A memory reference that is a stack pop.
  
!      'S'
            A memory reference that refers to a constant address of known
            value.
  
!      'T'
            The register indicated by Rx (not implemented yet).
  
!      'U'
            A constant that is not between 2 and 15 inclusive.
  
!      'Z'
            The constant 0.
  
! _Xtensa--'config/xtensa/constraints.md'_
!      'a'
            General-purpose 32-bit register
  
!      'b'
            One-bit boolean register
  
!      'A'
            MAC16 40-bit accumulator register
  
!      'I'
            Signed 12-bit integer constant, for use in MOVI instructions
  
!      'J'
            Signed 8-bit integer constant, for use in ADDI instructions
  
!      'K'
            Integer constant valid for BccI instructions
  
!      'L'
            Unsigned constant valid for BccUI instructions
  
  
  File: gccint.info,  Node: Disable Insn Alternatives,  Next: Define Constraints,  Prev: Machine Constraints,  Up: Constraints
  
! 16.9.6 Disable insn alternatives using the 'enabled' attribute
  --------------------------------------------------------------
  
  There are three insn attributes that may be used to selectively disable
  instruction alternatives:
  
! 'enabled'
       Says whether an alternative is available on the current subtarget.
  
! 'preferred_for_size'
       Says whether an enabled alternative should be used in code that is
       optimized for size.
  
! 'preferred_for_speed'
       Says whether an enabled alternative should be used in code that is
       optimized for speed.
  
!  All these attributes should use '(const_int 1)' to allow an alternative
! or '(const_int 0)' to disallow it.  The attributes must be a static
  property of the subtarget; they cannot for example depend on the current
  operands, on the current optimization level, on the location of the insn
  within the body of a loop, on whether register allocation has finished,
  or on the current compiler pass.
  
!  The 'enabled' attribute is a correctness property.  It tells GCC to act
  as though the disabled alternatives were never defined in the first
  place.  This is useful when adding new instructions to an existing
  pattern in cases where the new instructions are only available for
! certain cpu architecture levels (typically mapped to the '-march='
  command-line option).
  
!  In contrast, the 'preferred_for_size' and 'preferred_for_speed'
  attributes are strong optimization hints rather than correctness
! properties.  'preferred_for_size' tells GCC which alternatives to
  consider when adding or modifying an instruction that GCC wants to
! optimize for size.  'preferred_for_speed' does the same thing for speed.
  Note that things like code motion can lead to cases where code optimized
  for size uses alternatives that are not preferred for size, and
  similarly for speed.
  
!  Although 'define_insn's can in principle specify the 'enabled'
  attribute directly, it is often clearer to have subsiduary attributes
! for each architectural feature of interest.  The 'define_insn's can then
  use these subsiduary attributes to say which alternatives require which
! features.  The example below does this for 'cpu_facility'.
  
   E.g.  the following two patterns could easily be merged using the
! 'enabled' attribute:
  
  
       (define_insn "*movdi_old"
--- 26421,26734 ----
                   return ((unsigned long long)tickh << 32)|tickl;
                 }
  
!      â€˜Uâ€™
            The call-clobbered integer registers.
  
!      â€˜fâ€™
            Any 80387 floating-point (stack) register.
  
!      â€˜tâ€™
!           Top of 80387 floating-point stack (â€˜%st(0)â€™).
  
!      â€˜uâ€™
!           Second from top of 80387 floating-point stack (â€˜%st(1)â€™).
  
!      â€˜Ykâ€™
            Any mask register that can be used as a predicate, i.e.
!           â€˜k1-k7â€™.
  
!      â€˜kâ€™
            Any mask register.
  
!      â€˜yâ€™
            Any MMX register.
  
!      â€˜xâ€™
            Any SSE register.
  
!      â€˜vâ€™
!           Any EVEX encodable SSE register (â€˜%xmm0-%xmm31â€™).
  
!      â€˜wâ€™
            Any bound register.
  
!      â€˜Yzâ€™
!           First SSE register (â€˜%xmm0â€™).
  
!      â€˜Yiâ€™
            Any SSE register, when SSE2 and inter-unit moves are enabled.
  
!      â€˜Yjâ€™
            Any SSE register, when SSE2 and inter-unit moves from vector
            registers are enabled.
  
!      â€˜Ymâ€™
            Any MMX register, when inter-unit moves are enabled.
  
!      â€˜Ynâ€™
            Any MMX register, when inter-unit moves from vector registers
            are enabled.
  
!      â€˜Ypâ€™
!           Any integer register when â€˜TARGET_PARTIAL_REG_STALLâ€™ is
            disabled.
  
!      â€˜Yaâ€™
!           Any integer register when zero extensions with â€˜ANDâ€™ are
            disabled.
  
!      â€˜Ybâ€™
            Any register that can be used as the GOT base when calling
!           â€˜___tls_get_addrâ€™: that is, any general register except â€˜aâ€™
!           and â€˜spâ€™ registers, for â€˜-fno-pltâ€™ if linker supports it.
!           Otherwise, â€˜bâ€™ register.
  
!      â€˜Yfâ€™
            Any x87 register when 80387 floating-point arithmetic is
            enabled.
  
!      â€˜Yrâ€™
            Lower SSE register when avoiding REX prefix and all SSE
            registers otherwise.
  
!      â€˜Yvâ€™
            For AVX512VL, any EVEX-encodable SSE register
!           (â€˜%xmm0-%xmm31â€™), otherwise any SSE register.
  
!      â€˜Yhâ€™
            Any EVEX-encodable SSE register, that has number factor of
            four.
  
!      â€˜Bfâ€™
            Flags register operand.
  
!      â€˜Bgâ€™
            GOT memory operand.
  
!      â€˜Bmâ€™
            Vector memory operand.
  
!      â€˜Bcâ€™
            Constant memory operand.
  
!      â€˜Bnâ€™
            Memory operand without REX prefix.
  
!      â€˜Bsâ€™
            Sibcall memory operand.
  
!      â€˜Bwâ€™
            Call memory operand.
  
!      â€˜Bzâ€™
            Constant call address operand.
  
!      â€˜BCâ€™
            SSE constant -1 operand.
  
!      â€˜Iâ€™
            Integer constant in the range 0 ... 31, for 32-bit shifts.
  
!      â€˜Jâ€™
            Integer constant in the range 0 ... 63, for 64-bit shifts.
  
!      â€˜Kâ€™
            Signed 8-bit integer constant.
  
!      â€˜Lâ€™
!           â€˜0xFFâ€™ or â€˜0xFFFFâ€™, for andsi as a zero-extending move.
  
!      â€˜Mâ€™
!           0, 1, 2, or 3 (shifts for the â€˜leaâ€™ instruction).
  
!      â€˜Nâ€™
!           Unsigned 8-bit integer constant (for â€˜inâ€™ and â€˜outâ€™
            instructions).
  
!      â€˜Oâ€™
            Integer constant in the range 0 ... 127, for 128-bit shifts.
  
!      â€˜Gâ€™
            Standard 80387 floating point constant.
  
!      â€˜Câ€™
            SSE constant zero operand.
  
!      â€˜eâ€™
            32-bit signed integer constant, or a symbolic reference known
            to fit that range (for immediate operands in sign-extending
            x86-64 instructions).
  
!      â€˜Weâ€™
            32-bit signed integer constant, or a symbolic reference known
            to fit that range (for sign-extending conversion operations
!           that require non-â€˜VOIDmodeâ€™ immediate operands).
  
!      â€˜Wzâ€™
            32-bit unsigned integer constant, or a symbolic reference
            known to fit that range (for zero-extending conversion
!           operations that require non-â€˜VOIDmodeâ€™ immediate operands).
  
!      â€˜Wdâ€™
            128-bit integer constant where both the high and low 64-bit
!           word satisfy the â€˜eâ€™ constraint.
  
!      â€˜Wsâ€™
!           A symbolic reference or label reference.  You can use the â€˜%pâ€™
            modifier to print the raw symbol.
  
!      â€˜Zâ€™
            32-bit unsigned integer constant, or a symbolic reference
            known to fit that range (for immediate operands in
            zero-extending x86-64 instructions).
  
!      â€˜Tvâ€™
            VSIB address operand.
  
!      â€˜Tsâ€™
            Address operand without segment register.
  
! _Xstormy16--â€˜config/stormy16/stormy16.hâ€™_
!      â€˜aâ€™
            Register r0.
  
!      â€˜bâ€™
            Register r1.
  
!      â€˜câ€™
            Register r2.
  
!      â€˜dâ€™
            Register r8.
  
!      â€˜eâ€™
            Registers r0 through r7.
  
!      â€˜tâ€™
            Registers r0 and r1.
  
!      â€˜yâ€™
            The carry register.
  
!      â€˜zâ€™
            Registers r8 and r9.
  
!      â€˜Iâ€™
            A constant between 0 and 3 inclusive.
  
!      â€˜Jâ€™
            A constant that has exactly one bit set.
  
!      â€˜Kâ€™
            A constant that has exactly one bit clear.
  
!      â€˜Lâ€™
            A constant between 0 and 255 inclusive.
  
!      â€˜Mâ€™
!           A constant between âˆ’255 and 0 inclusive.
  
!      â€˜Nâ€™
!           A constant between âˆ’3 and 0 inclusive.
  
!      â€˜Oâ€™
            A constant between 1 and 4 inclusive.
  
!      â€˜Pâ€™
!           A constant between âˆ’4 and âˆ’1 inclusive.
  
!      â€˜Qâ€™
            A memory reference that is a stack push.
  
!      â€˜Râ€™
            A memory reference that is a stack pop.
  
!      â€˜Sâ€™
            A memory reference that refers to a constant address of known
            value.
  
!      â€˜Tâ€™
            The register indicated by Rx (not implemented yet).
  
!      â€˜Uâ€™
            A constant that is not between 2 and 15 inclusive.
  
!      â€˜Zâ€™
            The constant 0.
  
! _Xtensa--â€˜config/xtensa/constraints.mdâ€™_
!      â€˜aâ€™
            General-purpose 32-bit register
  
!      â€˜bâ€™
            One-bit boolean register
  
!      â€˜Aâ€™
            MAC16 40-bit accumulator register
  
!      â€˜Iâ€™
            Signed 12-bit integer constant, for use in MOVI instructions
  
!      â€˜Jâ€™
            Signed 8-bit integer constant, for use in ADDI instructions
  
!      â€˜Kâ€™
            Integer constant valid for BccI instructions
  
!      â€˜Lâ€™
            Unsigned constant valid for BccUI instructions
  
  
  File: gccint.info,  Node: Disable Insn Alternatives,  Next: Define Constraints,  Prev: Machine Constraints,  Up: Constraints
  
! 16.9.6 Disable insn alternatives using the â€˜enabledâ€™ attribute
  --------------------------------------------------------------
  
  There are three insn attributes that may be used to selectively disable
  instruction alternatives:
  
! â€˜enabledâ€™
       Says whether an alternative is available on the current subtarget.
  
! â€˜preferred_for_sizeâ€™
       Says whether an enabled alternative should be used in code that is
       optimized for size.
  
! â€˜preferred_for_speedâ€™
       Says whether an enabled alternative should be used in code that is
       optimized for speed.
  
!  All these attributes should use â€˜(const_int 1)â€™ to allow an alternative
! or â€˜(const_int 0)â€™ to disallow it.  The attributes must be a static
  property of the subtarget; they cannot for example depend on the current
  operands, on the current optimization level, on the location of the insn
  within the body of a loop, on whether register allocation has finished,
  or on the current compiler pass.
  
!  The â€˜enabledâ€™ attribute is a correctness property.  It tells GCC to act
  as though the disabled alternatives were never defined in the first
  place.  This is useful when adding new instructions to an existing
  pattern in cases where the new instructions are only available for
! certain cpu architecture levels (typically mapped to the â€˜-march=â€™
  command-line option).
  
!  In contrast, the â€˜preferred_for_sizeâ€™ and â€˜preferred_for_speedâ€™
  attributes are strong optimization hints rather than correctness
! properties.  â€˜preferred_for_sizeâ€™ tells GCC which alternatives to
  consider when adding or modifying an instruction that GCC wants to
! optimize for size.  â€˜preferred_for_speedâ€™ does the same thing for speed.
  Note that things like code motion can lead to cases where code optimized
  for size uses alternatives that are not preferred for size, and
  similarly for speed.
  
!  Although â€˜define_insnâ€™s can in principle specify the â€˜enabledâ€™
  attribute directly, it is often clearer to have subsiduary attributes
! for each architectural feature of interest.  The â€˜define_insnâ€™s can then
  use these subsiduary attributes to say which alternatives require which
! features.  The example below does this for â€˜cpu_facilityâ€™.
  
   E.g.  the following two patterns could easily be merged using the
! â€˜enabledâ€™ attribute:
  
  
       (define_insn "*movdi_old"
*************** features.  The example below does this f
*** 26757,26763 ****
         [(set_attr "cpu_facility" "*,new,new")])
  
  
!  with the 'enabled' attribute defined like this:
  
  
       (define_attr "cpu_facility" "standard,new" (const_string "standard"))
--- 26761,26767 ----
         [(set_attr "cpu_facility" "*,new,new")])
  
  
!  with the â€˜enabledâ€™ attribute defined like this:
  
  
       (define_attr "cpu_facility" "standard,new" (const_string "standard"))
*************** File: gccint.info,  Node: Define Constra
*** 26779,26796 ****
  Machine-specific constraints fall into two categories: register and
  non-register constraints.  Within the latter category, constraints which
  allow subsets of all possible memory or address operands should be
! specially marked, to give 'reload' more information.
  
   Machine-specific constraints can be given names of arbitrary length,
  but they must be entirely composed of letters, digits, underscores
! ('_'), and angle brackets ('< >').  Like C identifiers, they must begin
  with a letter or underscore.
  
   In order to avoid ambiguity in operand constraint strings, no
  constraint can have a name that begins with any other constraint's name.
! For example, if 'x' is defined as a constraint name, 'xy' may not be,
  and vice versa.  As a consequence of this rule, no constraint may begin
! with one of the generic constraint letters: 'E F V X g i m n o p r s'.
  
   Register constraints correspond directly to register classes.  *Note
  Register Classes::.  There is thus not much flexibility in their
--- 26783,26800 ----
  Machine-specific constraints fall into two categories: register and
  non-register constraints.  Within the latter category, constraints which
  allow subsets of all possible memory or address operands should be
! specially marked, to give â€˜reloadâ€™ more information.
  
   Machine-specific constraints can be given names of arbitrary length,
  but they must be entirely composed of letters, digits, underscores
! (â€˜_â€™), and angle brackets (â€˜< >â€™).  Like C identifiers, they must begin
  with a letter or underscore.
  
   In order to avoid ambiguity in operand constraint strings, no
  constraint can have a name that begins with any other constraint's name.
! For example, if â€˜xâ€™ is defined as a constraint name, â€˜xyâ€™ may not be,
  and vice versa.  As a consequence of this rule, no constraint may begin
! with one of the generic constraint letters: â€˜E F V X g i m n o p r sâ€™.
  
   Register constraints correspond directly to register classes.  *Note
  Register Classes::.  There is thus not much flexibility in their
*************** definitions.
*** 26799,26832 ****
   -- MD Expression: define_register_constraint name regclass docstring
            [filter]
       All arguments are string constants.  NAME is the name of the
!      constraint, as it will appear in 'match_operand' expressions.  If
       NAME is a multi-letter constraint its length shall be the same for
       all constraints starting with the same letter.  REGCLASS can be
       either the name of the corresponding register class (*note Register
       Classes::), or a C expression which evaluates to the appropriate
       register class.  If it is an expression, it must have no side
       effects, and it cannot look at the operand.  The usual use of
!      expressions is to map some register constraints to 'NO_REGS' when
       the register class is not available on a given subarchitecture.
  
       If an operand occupies multiple hard registers, the constraint
       requires all of those registers to belong to REGCLASS.  For
!      example, if REGCLASS is 'GENERAL_REGS' and 'GENERAL_REGS' contains
!      registers 'r0' to 'r15', the constraint does not allow R15 to be
       used for modes that occupy more than one register.
  
       The choice of register is also constrained by
!      'TARGET_HARD_REGNO_MODE_OK'.  For example, if
!      'TARGET_HARD_REGNO_MODE_OK' disallows '(reg:DI r1)', that
!      requirement applies to all constraints whose classes include 'r1'.
  
       However, it is sometimes useful to impose extra operand-specific
       requirements on the register number.  For example, a target might
!      not want to prevent _all_ odd-even pairs from holding 'DImode'
       values, but it might still need to prevent specific operands from
       having an odd-numbered register.  The optional FILTER argument
       exists for such cases.  When given, FILTER is a C++ expression that
!      evaluates to true if 'regno' is a valid register for the operand.
       If an operand occupies multiple registers, the condition applies
       only to the first register.
  
--- 26803,26836 ----
   -- MD Expression: define_register_constraint name regclass docstring
            [filter]
       All arguments are string constants.  NAME is the name of the
!      constraint, as it will appear in â€˜match_operandâ€™ expressions.  If
       NAME is a multi-letter constraint its length shall be the same for
       all constraints starting with the same letter.  REGCLASS can be
       either the name of the corresponding register class (*note Register
       Classes::), or a C expression which evaluates to the appropriate
       register class.  If it is an expression, it must have no side
       effects, and it cannot look at the operand.  The usual use of
!      expressions is to map some register constraints to â€˜NO_REGSâ€™ when
       the register class is not available on a given subarchitecture.
  
       If an operand occupies multiple hard registers, the constraint
       requires all of those registers to belong to REGCLASS.  For
!      example, if REGCLASS is â€˜GENERAL_REGSâ€™ and â€˜GENERAL_REGSâ€™ contains
!      registers â€˜r0â€™ to â€˜r15â€™, the constraint does not allow R15 to be
       used for modes that occupy more than one register.
  
       The choice of register is also constrained by
!      â€˜TARGET_HARD_REGNO_MODE_OKâ€™.  For example, if
!      â€˜TARGET_HARD_REGNO_MODE_OKâ€™ disallows â€˜(reg:DI r1)â€™, that
!      requirement applies to all constraints whose classes include â€˜r1â€™.
  
       However, it is sometimes useful to impose extra operand-specific
       requirements on the register number.  For example, a target might
!      not want to prevent _all_ odd-even pairs from holding â€˜DImodeâ€™
       values, but it might still need to prevent specific operands from
       having an odd-numbered register.  The optional FILTER argument
       exists for such cases.  When given, FILTER is a C++ expression that
!      evaluates to true if â€˜regnoâ€™ is a valid register for the operand.
       If an operand occupies multiple registers, the condition applies
       only to the first register.
  
*************** definitions.
*** 26838,26844 ****
       register.
  
       Filter conditions that impose an alignment are encouraged to test
!      the alignment of 'regno' itself, as in the example, rather than
       calculate an offset relative to the start of the class.  If it is
       sometimes necessary for a register of class C to be aligned to N,
       the first register in C should itself by divisible by N.
--- 26842,26848 ----
       register.
  
       Filter conditions that impose an alignment are encouraged to test
!      the alignment of â€˜regnoâ€™ itself, as in the example, rather than
       calculate an offset relative to the start of the class.  If it is
       sometimes necessary for a register of class C to be aligned to N,
       the first register in C should itself by divisible by N.
*************** constraint matches.
*** 26852,26858 ****
  
   -- MD Expression: define_constraint name docstring exp
       The NAME and DOCSTRING arguments are the same as for
!      'define_register_constraint', but note that the docstring comes
       immediately after the name for these expressions.  EXP is an RTL
       expression, obeying the same rules as the RTL expressions in
       predicate definitions.  *Note Defining Predicates::, for details.
--- 26856,26862 ----
  
   -- MD Expression: define_constraint name docstring exp
       The NAME and DOCSTRING arguments are the same as for
!      â€˜define_register_constraintâ€™, but note that the docstring comes
       immediately after the name for these expressions.  EXP is an RTL
       expression, obeying the same rules as the RTL expressions in
       predicate definitions.  *Note Defining Predicates::, for details.
*************** constraint matches.
*** 26860,26989 ****
       false, it doesn't.  Constraint expressions should indicate which
       RTL codes they might match, just like predicate expressions.
  
!      'match_test' C expressions have access to the following variables:
  
       OP
            The RTL object defining the operand.
       MODE
            The machine mode of OP.
       IVAL
!           'INTVAL (OP)', if OP is a 'const_int'.
       HVAL
!           'CONST_DOUBLE_HIGH (OP)', if OP is an integer 'const_double'.
       LVAL
!           'CONST_DOUBLE_LOW (OP)', if OP is an integer 'const_double'.
       RVAL
!           'CONST_DOUBLE_REAL_VALUE (OP)', if OP is a floating-point
!           'const_double'.
  
       The *VAL variables should only be used once another piece of the
       expression has verified that OP is the appropriate kind of RTL
       object.
  
   Most non-register constraints should be defined with
! 'define_constraint'.  The remaining two definition expressions are only
! appropriate for constraints that should be handled specially by 'reload'
  if they fail to match.
  
   -- MD Expression: define_memory_constraint name docstring exp
       Use this expression for constraints that match a subset of all
!      memory operands: that is, 'reload' can make them match by
!      converting the operand to the form '(mem (reg X))', where X is a
       base register (from the register class specified by
!      'BASE_REG_CLASS', *note Register Classes::).
  
       For example, on the S/390, some instructions do not accept
       arbitrary memory references, but only those that do not make use of
!      an index register.  The constraint letter 'Q' is defined to
!      represent a memory address of this type.  If 'Q' is defined with
!      'define_memory_constraint', a 'Q' constraint can handle any memory
!      operand, because 'reload' knows it can simply copy the memory
       address into a base register if required.  This is analogous to the
!      way an 'o' constraint can handle any memory operand.
  
       The syntax and semantics are otherwise identical to
!      'define_constraint'.
  
   -- MD Expression: define_special_memory_constraint name docstring exp
       Use this expression for constraints that match a subset of all
!      memory operands: that is, 'reload' cannot make them match by
       reloading the address as it is described for
!      'define_memory_constraint' or such address reload is undesirable
       with the performance point of view.
  
!      For example, 'define_special_memory_constraint' can be useful if
       specifically aligned memory is necessary or desirable for some insn
       operand.
  
       The syntax and semantics are otherwise identical to
!      'define_memory_constraint'.
  
   -- MD Expression: define_relaxed_memory_constraint name docstring exp
!      The test expression in a 'define_memory_constraint' can assume that
!      'TARGET_LEGITIMATE_ADDRESS_P' holds for the address inside a 'mem'
       rtx and so it does not need to test this condition itself.  In
!      other words, a 'define_memory_constraint' test of the form:
  
            (match_test "mem")
  
!      is enough to test whether an rtx is a 'mem' _and_ whether its
!      address satisfies 'TARGET_MEM_CONSTRAINT' (which is usually ''m'').
!      Thus the conditions imposed by a 'define_memory_constraint' always
!      apply on top of the conditions imposed by 'TARGET_MEM_CONSTRAINT'.
  
       However, it is sometimes useful to define memory constraints that
       allow addresses beyond those accepted by
!      'TARGET_LEGITIMATE_ADDRESS_P'.  'define_relaxed_memory_constraint'
       exists for this case.  The test expression in a
!      'define_relaxed_memory_constraint' is applied with no
       preconditions, so that the expression can determine "from scratch"
       exactly which addresses are valid and which are not.
  
       The syntax and semantics are otherwise identical to
!      'define_memory_constraint'.
  
   -- MD Expression: define_address_constraint name docstring exp
       Use this expression for constraints that match a subset of all
!      address operands: that is, 'reload' can make the constraint match
!      by converting the operand to the form '(reg X)', again with X a
       base register.
  
!      Constraints defined with 'define_address_constraint' can only be
!      used with the 'address_operand' predicate, or machine-specific
       predicates that work the same way.  They are treated analogously to
!      the generic 'p' constraint.
  
       The syntax and semantics are otherwise identical to
!      'define_constraint'.
  
!  For historical reasons, names beginning with the letters 'G H' are
! reserved for constraints that match only 'const_double's, and names
! beginning with the letters 'I J K L M N O P' are reserved for
! constraints that match only 'const_int's.  This may change in the
  future.  For the time being, constraints with these names must be
! written in a stylized form, so that 'genpreds' can tell you did it
  correctly:
  
       (define_constraint "[GHIJKLMNOP]..."
         "DOC..."
!        (and (match_code "const_int")  ; 'const_double' for G/H
!             CONDITION...))            ; usually a 'match_test'
  
   It is fine to use names beginning with other letters for constraints
! that match 'const_double's or 'const_int's.
  
   Each docstring in a constraint definition should be one or more
  complete sentences, marked up in Texinfo format.  _They are currently
  unused._  In the future they will be copied into the GCC manual, in
  *note Machine Constraints::, replacing the hand-maintained tables
  currently found in that section.  Also, in the future the compiler may
! use this to give more helpful diagnostics when poor choice of 'asm'
  constraints causes a reload failure.
  
!  If you put the pseudo-Texinfo directive '@internal' at the beginning of
  a docstring, then (in the future) it will appear only in the internals
  manual's version of the machine-specific constraint tables.  Use this
! for constraints that should not appear in 'asm' statements.
  
  
  File: gccint.info,  Node: C Constraint Interface,  Prev: Define Constraints,  Up: Constraints
--- 26864,26993 ----
       false, it doesn't.  Constraint expressions should indicate which
       RTL codes they might match, just like predicate expressions.
  
!      â€˜match_testâ€™ C expressions have access to the following variables:
  
       OP
            The RTL object defining the operand.
       MODE
            The machine mode of OP.
       IVAL
!           â€˜INTVAL (OP)â€™, if OP is a â€˜const_intâ€™.
       HVAL
!           â€˜CONST_DOUBLE_HIGH (OP)â€™, if OP is an integer â€˜const_doubleâ€™.
       LVAL
!           â€˜CONST_DOUBLE_LOW (OP)â€™, if OP is an integer â€˜const_doubleâ€™.
       RVAL
!           â€˜CONST_DOUBLE_REAL_VALUE (OP)â€™, if OP is a floating-point
!           â€˜const_doubleâ€™.
  
       The *VAL variables should only be used once another piece of the
       expression has verified that OP is the appropriate kind of RTL
       object.
  
   Most non-register constraints should be defined with
! â€˜define_constraintâ€™.  The remaining two definition expressions are only
! appropriate for constraints that should be handled specially by â€˜reloadâ€™
  if they fail to match.
  
   -- MD Expression: define_memory_constraint name docstring exp
       Use this expression for constraints that match a subset of all
!      memory operands: that is, â€˜reloadâ€™ can make them match by
!      converting the operand to the form â€˜(mem (reg X))â€™, where X is a
       base register (from the register class specified by
!      â€˜BASE_REG_CLASSâ€™, *note Register Classes::).
  
       For example, on the S/390, some instructions do not accept
       arbitrary memory references, but only those that do not make use of
!      an index register.  The constraint letter â€˜Qâ€™ is defined to
!      represent a memory address of this type.  If â€˜Qâ€™ is defined with
!      â€˜define_memory_constraintâ€™, a â€˜Qâ€™ constraint can handle any memory
!      operand, because â€˜reloadâ€™ knows it can simply copy the memory
       address into a base register if required.  This is analogous to the
!      way an â€˜oâ€™ constraint can handle any memory operand.
  
       The syntax and semantics are otherwise identical to
!      â€˜define_constraintâ€™.
  
   -- MD Expression: define_special_memory_constraint name docstring exp
       Use this expression for constraints that match a subset of all
!      memory operands: that is, â€˜reloadâ€™ cannot make them match by
       reloading the address as it is described for
!      â€˜define_memory_constraintâ€™ or such address reload is undesirable
       with the performance point of view.
  
!      For example, â€˜define_special_memory_constraintâ€™ can be useful if
       specifically aligned memory is necessary or desirable for some insn
       operand.
  
       The syntax and semantics are otherwise identical to
!      â€˜define_memory_constraintâ€™.
  
   -- MD Expression: define_relaxed_memory_constraint name docstring exp
!      The test expression in a â€˜define_memory_constraintâ€™ can assume that
!      â€˜TARGET_LEGITIMATE_ADDRESS_Pâ€™ holds for the address inside a â€˜memâ€™
       rtx and so it does not need to test this condition itself.  In
!      other words, a â€˜define_memory_constraintâ€™ test of the form:
  
            (match_test "mem")
  
!      is enough to test whether an rtx is a â€˜memâ€™ _and_ whether its
!      address satisfies â€˜TARGET_MEM_CONSTRAINTâ€™ (which is usually â€˜'m'â€™).
!      Thus the conditions imposed by a â€˜define_memory_constraintâ€™ always
!      apply on top of the conditions imposed by â€˜TARGET_MEM_CONSTRAINTâ€™.
  
       However, it is sometimes useful to define memory constraints that
       allow addresses beyond those accepted by
!      â€˜TARGET_LEGITIMATE_ADDRESS_Pâ€™.  â€˜define_relaxed_memory_constraintâ€™
       exists for this case.  The test expression in a
!      â€˜define_relaxed_memory_constraintâ€™ is applied with no
       preconditions, so that the expression can determine "from scratch"
       exactly which addresses are valid and which are not.
  
       The syntax and semantics are otherwise identical to
!      â€˜define_memory_constraintâ€™.
  
   -- MD Expression: define_address_constraint name docstring exp
       Use this expression for constraints that match a subset of all
!      address operands: that is, â€˜reloadâ€™ can make the constraint match
!      by converting the operand to the form â€˜(reg X)â€™, again with X a
       base register.
  
!      Constraints defined with â€˜define_address_constraintâ€™ can only be
!      used with the â€˜address_operandâ€™ predicate, or machine-specific
       predicates that work the same way.  They are treated analogously to
!      the generic â€˜pâ€™ constraint.
  
       The syntax and semantics are otherwise identical to
!      â€˜define_constraintâ€™.
  
!  For historical reasons, names beginning with the letters â€˜G Hâ€™ are
! reserved for constraints that match only â€˜const_doubleâ€™s, and names
! beginning with the letters â€˜I J K L M N O Pâ€™ are reserved for
! constraints that match only â€˜const_intâ€™s.  This may change in the
  future.  For the time being, constraints with these names must be
! written in a stylized form, so that â€˜genpredsâ€™ can tell you did it
  correctly:
  
       (define_constraint "[GHIJKLMNOP]..."
         "DOC..."
!        (and (match_code "const_int")  ; â€˜const_doubleâ€™ for G/H
!             CONDITION...))            ; usually a â€˜match_testâ€™
  
   It is fine to use names beginning with other letters for constraints
! that match â€˜const_doubleâ€™s or â€˜const_intâ€™s.
  
   Each docstring in a constraint definition should be one or more
  complete sentences, marked up in Texinfo format.  _They are currently
  unused._  In the future they will be copied into the GCC manual, in
  *note Machine Constraints::, replacing the hand-maintained tables
  currently found in that section.  Also, in the future the compiler may
! use this to give more helpful diagnostics when poor choice of â€˜asmâ€™
  constraints causes a reload failure.
  
!  If you put the pseudo-Texinfo directive â€˜@internalâ€™ at the beginning of
  a docstring, then (in the future) it will appear only in the internals
  manual's version of the machine-specific constraint tables.  Use this
! for constraints that should not appear in â€˜asmâ€™ statements.
  
  
  File: gccint.info,  Node: C Constraint Interface,  Prev: Define Constraints,  Up: Constraints
*************** File: gccint.info,  Node: C Constraint I
*** 26992,27007 ****
  ---------------------------------
  
  It is occasionally useful to test a constraint from C code rather than
! implicitly via the constraint string in a 'match_operand'.  The
! generated file 'tm_p.h' declares a few interfaces for working with
  constraints.  At present these are defined for all constraints except
! 'g' (which is equivalent to 'general_operand').
  
   Some valid constraint names are not valid C identifiers, so there is a
  mangling scheme for referring to them from C.  Constraint names that do
  not contain angle brackets or underscores are left unchanged.
! Underscores are doubled, each '<' is replaced with '_l', and each '>'
! with '_g'.  Here are some examples:
  
       *Original* *Mangled*
       x          x
--- 26996,27011 ----
  ---------------------------------
  
  It is occasionally useful to test a constraint from C code rather than
! implicitly via the constraint string in a â€˜match_operandâ€™.  The
! generated file â€˜tm_p.hâ€™ declares a few interfaces for working with
  constraints.  At present these are defined for all constraints except
! â€˜gâ€™ (which is equivalent to â€˜general_operandâ€™).
  
   Some valid constraint names are not valid C identifiers, so there is a
  mangling scheme for referring to them from C.  Constraint names that do
  not contain angle brackets or underscores are left unchanged.
! Underscores are doubled, each â€˜<â€™ is replaced with â€˜_lâ€™, and each â€˜>â€™
! with â€˜_gâ€™.  Here are some examples:
  
       *Original* *Mangled*
       x          x
*************** with '_g'.  Here are some examples:
*** 27012,27049 ****
       P4_g>      P4__g_g
  
   Throughout this section, the variable C is either a constraint in the
! abstract sense, or a constant from 'enum constraint_num'; the variable M
  is a mangled constraint name (usually as part of a larger identifier).
  
   -- Enum: constraint_num
!      For each constraint except 'g', there is a corresponding
!      enumeration constant: 'CONSTRAINT_' plus the mangled name of the
!      constraint.  Functions that take an 'enum constraint_num' as an
       argument expect one of these constants.
  
   -- Function: inline bool satisfies_constraint_M (rtx EXP)
!      For each non-register constraint M except 'g', there is one of
!      these functions; it returns 'true' if EXP satisfies the constraint.
!      These functions are only visible if 'rtl.h' was included before
!      'tm_p.h'.
  
   -- Function: bool constraint_satisfied_p (rtx EXP, enum constraint_num
            C)
!      Like the 'satisfies_constraint_M' functions, but the constraint to
       test is given as an argument, C.  If C specifies a register
!      constraint, this function will always return 'false'.
  
   -- Function: enum reg_class reg_class_for_constraint (enum
            constraint_num C)
       Returns the register class associated with C.  If C is not a
       register constraint, or those registers are not available for the
!      currently selected subtarget, returns 'NO_REGS'.
  
!  Here is an example use of 'satisfies_constraint_M'.  In peephole
  optimizations (*note Peephole Definitions::), operand constraint strings
  are ignored, so if there are relevant constraints, they must be tested
  in the C condition.  In the example, the optimization is applied if
! operand 2 does _not_ satisfy the 'K' constraint.  (This is a simplified
  version of a peephole definition from the i386 machine description.)
  
       (define_peephole2
--- 27016,27053 ----
       P4_g>      P4__g_g
  
   Throughout this section, the variable C is either a constraint in the
! abstract sense, or a constant from â€˜enum constraint_numâ€™; the variable M
  is a mangled constraint name (usually as part of a larger identifier).
  
   -- Enum: constraint_num
!      For each constraint except â€˜gâ€™, there is a corresponding
!      enumeration constant: â€˜CONSTRAINT_â€™ plus the mangled name of the
!      constraint.  Functions that take an â€˜enum constraint_numâ€™ as an
       argument expect one of these constants.
  
   -- Function: inline bool satisfies_constraint_M (rtx EXP)
!      For each non-register constraint M except â€˜gâ€™, there is one of
!      these functions; it returns â€˜trueâ€™ if EXP satisfies the constraint.
!      These functions are only visible if â€˜rtl.hâ€™ was included before
!      â€˜tm_p.hâ€™.
  
   -- Function: bool constraint_satisfied_p (rtx EXP, enum constraint_num
            C)
!      Like the â€˜satisfies_constraint_Mâ€™ functions, but the constraint to
       test is given as an argument, C.  If C specifies a register
!      constraint, this function will always return â€˜falseâ€™.
  
   -- Function: enum reg_class reg_class_for_constraint (enum
            constraint_num C)
       Returns the register class associated with C.  If C is not a
       register constraint, or those registers are not available for the
!      currently selected subtarget, returns â€˜NO_REGSâ€™.
  
!  Here is an example use of â€˜satisfies_constraint_Mâ€™.  In peephole
  optimizations (*note Peephole Definitions::), operand constraint strings
  are ignored, so if there are relevant constraints, they must be tested
  in the C condition.  In the example, the optimization is applied if
! operand 2 does _not_ satisfy the â€˜Kâ€™ constraint.  (This is a simplified
  version of a peephole definition from the i386 machine description.)
  
       (define_peephole2
*************** generation pass of the compiler.  Giving
*** 27070,27092 ****
  instruction pattern tells the RTL generation pass that it can use the
  pattern to accomplish a certain task.
  
! 'movM'
       Here M stands for a two-letter machine mode name, in lowercase.
       This instruction pattern moves data with that machine mode from
!      operand 1 to operand 0.  For example, 'movsi' moves full-word data.
  
!      If operand 0 is a 'subreg' with mode M of a register whose own mode
       is wider than M, the effect of this instruction is to store the
       specified value in the part of the register that corresponds to
       mode M.  Bits outside of M, but which are within the same target
!      word as the 'subreg' are undefined.  Bits which are outside the
       target word are left unchanged.
  
       This class of patterns is special in several ways.  First of all,
       each of these names up to and including full word size _must_ be
       defined, because there is no other way to copy a datum from one
       place to another.  If there are patterns accepting operands in
!      larger modes, 'movM' must be defined for integer modes of those
       sizes.
  
       Second, these patterns are not used solely in the RTL generation
--- 27074,27096 ----
  instruction pattern tells the RTL generation pass that it can use the
  pattern to accomplish a certain task.
  
! â€˜movMâ€™
       Here M stands for a two-letter machine mode name, in lowercase.
       This instruction pattern moves data with that machine mode from
!      operand 1 to operand 0.  For example, â€˜movsiâ€™ moves full-word data.
  
!      If operand 0 is a â€˜subregâ€™ with mode M of a register whose own mode
       is wider than M, the effect of this instruction is to store the
       specified value in the part of the register that corresponds to
       mode M.  Bits outside of M, but which are within the same target
!      word as the â€˜subregâ€™ are undefined.  Bits which are outside the
       target word are left unchanged.
  
       This class of patterns is special in several ways.  First of all,
       each of these names up to and including full word size _must_ be
       defined, because there is no other way to copy a datum from one
       place to another.  If there are patterns accepting operands in
!      larger modes, â€˜movMâ€™ must be defined for integer modes of those
       sizes.
  
       Second, these patterns are not used solely in the RTL generation
*************** pattern to accomplish a certain task.
*** 27098,27105 ****
       Therefore, when given such a pair of operands, the pattern must
       generate RTL which needs no reloading and needs no temporary
       registers--no registers other than the operands.  For example, if
!      you support the pattern with a 'define_expand', then in such a case
!      the 'define_expand' mustn't call 'force_reg' or any other such
       function which might generate new pseudo registers.
  
       This requirement exists even for subword modes on a RISC machine
--- 27102,27109 ----
       Therefore, when given such a pair of operands, the pattern must
       generate RTL which needs no reloading and needs no temporary
       registers--no registers other than the operands.  For example, if
!      you support the pattern with a â€˜define_expandâ€™, then in such a case
!      the â€˜define_expandâ€™ mustn't call â€˜force_regâ€™ or any other such
       function which might generate new pseudo registers.
  
       This requirement exists even for subword modes on a RISC machine
*************** pattern to accomplish a certain task.
*** 27112,27122 ****
       be done with the address except to use it as it stands.  If it is
       copied, it will not be replaced with a valid address.  No attempt
       should be made to make such an address into a valid address and no
!      routine (such as 'change_address') that will do so may be called.
!      Note that 'general_operand' will fail when applied to such an
       address.
  
!      The global variable 'reload_in_progress' (which must be explicitly
       declared if required) can be used to determine whether such special
       handling is required.
  
--- 27116,27126 ----
       be done with the address except to use it as it stands.  If it is
       copied, it will not be replaced with a valid address.  No attempt
       should be made to make such an address into a valid address and no
!      routine (such as â€˜change_addressâ€™) that will do so may be called.
!      Note that â€˜general_operandâ€™ will fail when applied to such an
       address.
  
!      The global variable â€˜reload_in_progressâ€™ (which must be explicitly
       declared if required) can be used to determine whether such special
       handling is required.
  
*************** pattern to accomplish a certain task.
*** 27127,27190 ****
       reloads.
  
       If a scratch register is required to move an object to or from
!      memory, it can be allocated using 'gen_reg_rtx' prior to life
       analysis.
  
       If there are cases which need scratch registers during or after
       reload, you must provide an appropriate secondary_reload target
       hook.
  
!      The macro 'can_create_pseudo_p' can be used to determine if it is
       unsafe to create new pseudo registers.  If this variable is
!      nonzero, then it is unsafe to call 'gen_reg_rtx' to allocate a new
       pseudo.
  
!      The constraints on a 'movM' must permit moving any hard register to
!      any other hard register provided that 'TARGET_HARD_REGNO_MODE_OK'
!      permits mode M in both registers and 'TARGET_REGISTER_MOVE_COST'
       applied to their classes returns a value of 2.
  
!      It is obligatory to support floating point 'movM' instructions into
       and out of any registers that can hold fixed point values, because
!      unions and structures (which have modes 'SImode' or 'DImode') can
       be in those registers and they may have floating point members.
  
!      There may also be a need to support fixed point 'movM' instructions
       in and out of floating point registers.  Unfortunately, I have
       forgotten why this was so, and I don't know whether it is still
!      true.  If 'TARGET_HARD_REGNO_MODE_OK' rejects fixed point values in
       floating point registers, then the constraints of the fixed point
!      'movM' instructions must be designed to avoid ever trying to reload
       into a floating point register.
  
! 'reload_inM'
! 'reload_outM'
       These named patterns have been obsoleted by the target hook
!      'secondary_reload'.
  
!      Like 'movM', but used when a scratch register is required to move
       between operand 0 and operand 1.  Operand 2 describes the scratch
!      register.  See the discussion of the 'SECONDARY_RELOAD_CLASS' macro
       in *note Register Classes::.
  
!      There are special restrictions on the form of the 'match_operand's
       used in these patterns.  First, only the predicate for the reload
!      operand is examined, i.e., 'reload_in' examines operand 1, but not
       the predicates for operand 0 or 2.  Second, there may be only one
       alternative in the constraints.  Third, only a single register
       class letter may be used for the constraint; subsequent constraint
       letters are ignored.  As a special exception, an empty constraint
!      string matches the 'ALL_REGS' register class.  This may relieve
!      ports of the burden of defining an 'ALL_REGS' constraint letter
       just for these patterns.
  
! 'movstrictM'
!      Like 'movM' except that if operand 0 is a 'subreg' with mode M of a
!      register whose natural mode is wider, the 'movstrictM' instruction
       is guaranteed not to alter any of the register except the part
       which belongs to mode M.
  
! 'movmisalignM'
       This variant of a move pattern is designed to load or store a value
       from a memory address that is not naturally aligned for its mode.
       For a store, the memory will be in operand 0; for a load, the
--- 27131,27194 ----
       reloads.
  
       If a scratch register is required to move an object to or from
!      memory, it can be allocated using â€˜gen_reg_rtxâ€™ prior to life
       analysis.
  
       If there are cases which need scratch registers during or after
       reload, you must provide an appropriate secondary_reload target
       hook.
  
!      The macro â€˜can_create_pseudo_pâ€™ can be used to determine if it is
       unsafe to create new pseudo registers.  If this variable is
!      nonzero, then it is unsafe to call â€˜gen_reg_rtxâ€™ to allocate a new
       pseudo.
  
!      The constraints on a â€˜movMâ€™ must permit moving any hard register to
!      any other hard register provided that â€˜TARGET_HARD_REGNO_MODE_OKâ€™
!      permits mode M in both registers and â€˜TARGET_REGISTER_MOVE_COSTâ€™
       applied to their classes returns a value of 2.
  
!      It is obligatory to support floating point â€˜movMâ€™ instructions into
       and out of any registers that can hold fixed point values, because
!      unions and structures (which have modes â€˜SImodeâ€™ or â€˜DImodeâ€™) can
       be in those registers and they may have floating point members.
  
!      There may also be a need to support fixed point â€˜movMâ€™ instructions
       in and out of floating point registers.  Unfortunately, I have
       forgotten why this was so, and I don't know whether it is still
!      true.  If â€˜TARGET_HARD_REGNO_MODE_OKâ€™ rejects fixed point values in
       floating point registers, then the constraints of the fixed point
!      â€˜movMâ€™ instructions must be designed to avoid ever trying to reload
       into a floating point register.
  
! â€˜reload_inMâ€™
! â€˜reload_outMâ€™
       These named patterns have been obsoleted by the target hook
!      â€˜secondary_reloadâ€™.
  
!      Like â€˜movMâ€™, but used when a scratch register is required to move
       between operand 0 and operand 1.  Operand 2 describes the scratch
!      register.  See the discussion of the â€˜SECONDARY_RELOAD_CLASSâ€™ macro
       in *note Register Classes::.
  
!      There are special restrictions on the form of the â€˜match_operandâ€™s
       used in these patterns.  First, only the predicate for the reload
!      operand is examined, i.e., â€˜reload_inâ€™ examines operand 1, but not
       the predicates for operand 0 or 2.  Second, there may be only one
       alternative in the constraints.  Third, only a single register
       class letter may be used for the constraint; subsequent constraint
       letters are ignored.  As a special exception, an empty constraint
!      string matches the â€˜ALL_REGSâ€™ register class.  This may relieve
!      ports of the burden of defining an â€˜ALL_REGSâ€™ constraint letter
       just for these patterns.
  
! â€˜movstrictMâ€™
!      Like â€˜movMâ€™ except that if operand 0 is a â€˜subregâ€™ with mode M of a
!      register whose natural mode is wider, the â€˜movstrictMâ€™ instruction
       is guaranteed not to alter any of the register except the part
       which belongs to mode M.
  
! â€˜movmisalignMâ€™
       This variant of a move pattern is designed to load or store a value
       from a memory address that is not naturally aligned for its mode.
       For a store, the memory will be in operand 0; for a load, the
*************** pattern to accomplish a certain task.
*** 27193,27201 ****
       store.
  
       This pattern is used by the autovectorizer, and when expanding a
!      'MISALIGNED_INDIRECT_REF' expression.
  
! 'load_multiple'
       Load several consecutive memory locations into consecutive
       registers.  Operand 0 is the first of the consecutive registers,
       operand 1 is the first memory location, and operand 2 is a
--- 27197,27205 ----
       store.
  
       This pattern is used by the autovectorizer, and when expanding a
!      â€˜MISALIGNED_INDIRECT_REFâ€™ expression.
  
! â€˜load_multipleâ€™
       Load several consecutive memory locations into consecutive
       registers.  Operand 0 is the first of the consecutive registers,
       operand 1 is the first memory location, and operand 2 is a
*************** pattern to accomplish a certain task.
*** 27209,27230 ****
       On some machines, there are restrictions as to which consecutive
       registers can be stored into memory, such as particular starting or
       ending register numbers or only a range of valid counts.  For those
!      machines, use a 'define_expand' (*note Expander Definitions::) and
       make the pattern fail if the restrictions are not met.
  
!      Write the generated insn as a 'parallel' with elements being a
!      'set' of one register from the appropriate memory location (you may
!      also need 'use' or 'clobber' elements).  Use a 'match_parallel'
!      (*note RTL Template::) to recognize the insn.  See 'rs6000.md' for
       examples of the use of this insn pattern.
  
! 'store_multiple'
!      Similar to 'load_multiple', but store several consecutive registers
       into consecutive memory locations.  Operand 0 is the first of the
       consecutive memory locations, operand 1 is the first register, and
       operand 2 is a constant: the number of consecutive registers.
  
! 'vec_load_lanesMN'
       Perform an interleaved load of several vectors from memory operand
       1 into register operand 0.  Both operands have mode M.  The
       register operand is viewed as holding consecutive vectors of mode
--- 27213,27234 ----
       On some machines, there are restrictions as to which consecutive
       registers can be stored into memory, such as particular starting or
       ending register numbers or only a range of valid counts.  For those
!      machines, use a â€˜define_expandâ€™ (*note Expander Definitions::) and
       make the pattern fail if the restrictions are not met.
  
!      Write the generated insn as a â€˜parallelâ€™ with elements being a
!      â€˜setâ€™ of one register from the appropriate memory location (you may
!      also need â€˜useâ€™ or â€˜clobberâ€™ elements).  Use a â€˜match_parallelâ€™
!      (*note RTL Template::) to recognize the insn.  See â€˜rs6000.mdâ€™ for
       examples of the use of this insn pattern.
  
! â€˜store_multipleâ€™
!      Similar to â€˜load_multipleâ€™, but store several consecutive registers
       into consecutive memory locations.  Operand 0 is the first of the
       consecutive memory locations, operand 1 is the first register, and
       operand 2 is a constant: the number of consecutive registers.
  
! â€˜vec_load_lanesMNâ€™
       Perform an interleaved load of several vectors from memory operand
       1 into register operand 0.  Both operands have mode M.  The
       register operand is viewed as holding consecutive vectors of mode
*************** pattern to accomplish a certain task.
*** 27236,27244 ****
              for (i = 0; i < c; i++)
                operand0[i][j] = operand1[j * c + i];
  
!      For example, 'vec_load_lanestiv4hi' loads 8 16-bit values from
!      memory into a register of mode 'TI'.  The register contains two
!      consecutive vectors of mode 'V4HI'.
  
       This pattern can only be used if:
            TARGET_ARRAY_MODE_SUPPORTED_P (N, C)
--- 27240,27248 ----
              for (i = 0; i < c; i++)
                operand0[i][j] = operand1[j * c + i];
  
!      For example, â€˜vec_load_lanestiv4hiâ€™ loads 8 16-bit values from
!      memory into a register of mode â€˜TIâ€™.  The register contains two
!      consecutive vectors of mode â€˜V4HIâ€™.
  
       This pattern can only be used if:
            TARGET_ARRAY_MODE_SUPPORTED_P (N, C)
*************** pattern to accomplish a certain task.
*** 27246,27259 ****
       instruction for some mode N, it also supports unaligned loads for
       vectors of mode N.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'vec_mask_load_lanesMN'
!      Like 'vec_load_lanesMN', but takes an additional mask operand
       (operand 2) that specifies which elements of the destination
       vectors should be loaded.  Other elements of the destination
       vectors are taken from operand 3, which is an else operand similar
!      to the one in 'maskload'.  The operation is equivalent to:
  
            int c = GET_MODE_SIZE (M) / GET_MODE_SIZE (N);
            for (j = 0; j < GET_MODE_NUNITS (N); j++)
--- 27250,27263 ----
       instruction for some mode N, it also supports unaligned loads for
       vectors of mode N.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜vec_mask_load_lanesMNâ€™
!      Like â€˜vec_load_lanesMNâ€™, but takes an additional mask operand
       (operand 2) that specifies which elements of the destination
       vectors should be loaded.  Other elements of the destination
       vectors are taken from operand 3, which is an else operand similar
!      to the one in â€˜maskloadâ€™.  The operation is equivalent to:
  
            int c = GET_MODE_SIZE (M) / GET_MODE_SIZE (N);
            for (j = 0; j < GET_MODE_NUNITS (N); j++)
*************** pattern to accomplish a certain task.
*** 27264,27278 ****
                for (i = 0; i < c; i++)
                  operand0[i][j] = operand3[j];
  
!      This pattern is not allowed to 'FAIL'.
  
! 'vec_mask_len_load_lanesMN'
!      Like 'vec_load_lanesMN', but takes an additional mask operand
       (operand 2), length operand (operand 4) as well as bias operand
       (operand 5) that specifies which elements of the destination
       vectors should be loaded.  Other elements of the destination
       vectors are taken from operand 3, which is an else operand similar
!      to the one in 'maskload'.  The operation is equivalent to:
  
            int c = GET_MODE_SIZE (M) / GET_MODE_SIZE (N);
            for (j = 0; j < operand4 + operand5; j++)
--- 27268,27282 ----
                for (i = 0; i < c; i++)
                  operand0[i][j] = operand3[j];
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜vec_mask_len_load_lanesMNâ€™
!      Like â€˜vec_load_lanesMNâ€™, but takes an additional mask operand
       (operand 2), length operand (operand 4) as well as bias operand
       (operand 5) that specifies which elements of the destination
       vectors should be loaded.  Other elements of the destination
       vectors are taken from operand 3, which is an else operand similar
!      to the one in â€˜maskloadâ€™.  The operation is equivalent to:
  
            int c = GET_MODE_SIZE (M) / GET_MODE_SIZE (N);
            for (j = 0; j < operand4 + operand5; j++)
*************** pattern to accomplish a certain task.
*** 27282,27291 ****
                else
                  operand0[i][j] = operand3[j];
  
!      This pattern is not allowed to 'FAIL'.
  
! 'vec_store_lanesMN'
!      Equivalent to 'vec_load_lanesMN', with the memory and register
       operands reversed.  That is, the instruction is equivalent to:
  
            int c = GET_MODE_SIZE (M) / GET_MODE_SIZE (N);
--- 27286,27295 ----
                else
                  operand0[i][j] = operand3[j];
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜vec_store_lanesMNâ€™
!      Equivalent to â€˜vec_load_lanesMNâ€™, with the memory and register
       operands reversed.  That is, the instruction is equivalent to:
  
            int c = GET_MODE_SIZE (M) / GET_MODE_SIZE (N);
*************** pattern to accomplish a certain task.
*** 27295,27304 ****
  
       for a memory operand 0 and register operand 1.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'vec_mask_store_lanesMN'
!      Like 'vec_store_lanesMN', but takes an additional mask operand
       (operand 2) that specifies which elements of the source vectors
       should be stored.  The operation is equivalent to:
  
--- 27299,27308 ----
  
       for a memory operand 0 and register operand 1.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜vec_mask_store_lanesMNâ€™
!      Like â€˜vec_store_lanesMNâ€™, but takes an additional mask operand
       (operand 2) that specifies which elements of the source vectors
       should be stored.  The operation is equivalent to:
  
*************** pattern to accomplish a certain task.
*** 27308,27317 ****
                for (i = 0; i < c; i++)
                  operand0[j * c + i] = operand1[i][j];
  
!      This pattern is not allowed to 'FAIL'.
  
! 'vec_mask_len_store_lanesMN'
!      Like 'vec_store_lanesMN', but takes an additional mask operand
       (operand 2), length operand (operand 3) as well as bias operand
       (operand 4) that specifies which elements of the source vectors
       should be stored.  The operation is equivalent to:
--- 27312,27321 ----
                for (i = 0; i < c; i++)
                  operand0[j * c + i] = operand1[i][j];
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜vec_mask_len_store_lanesMNâ€™
!      Like â€˜vec_store_lanesMNâ€™, but takes an additional mask operand
       (operand 2), length operand (operand 3) as well as bias operand
       (operand 4) that specifies which elements of the source vectors
       should be stored.  The operation is equivalent to:
*************** pattern to accomplish a certain task.
*** 27322,27356 ****
                for (i = 0; i < c; i++)
                  operand0[j * c + i] = operand1[i][j];
  
!      This pattern is not allowed to 'FAIL'.
  
! 'gather_loadMN'
       Load several separate memory locations into a vector of mode M.
       Operand 1 is a scalar base address and operand 2 is a vector of
       mode N containing offsets from that base.  Operand 0 is a
       destination vector with the same number of elements as N.  For each
       element index I:
  
!         * extend the offset element I to address width, using zero
            extension if operand 3 is 1 and sign extension if operand 3 is
            zero;
!         * multiply the extended offset by operand 4;
!         * add the result to the base; and
!         * load the value at that address into element I of operand 0.
  
       The value of operand 3 does not matter if the offsets are already
       address width.
  
! 'mask_gather_loadMN'
!      Like 'gather_loadMN', but takes an extra mask operand as operand 5.
       Other elements of the destination vectors are taken from operand 6,
!      which is an else operand similar to the one in 'maskload'.  Bit I
       of the mask is set if element I of the result should be loaded from
       memory and clear if element I of the result should be set to
       operand 6.
  
! 'mask_len_gather_loadMN'
!      Like 'gather_loadMN', but takes an extra mask operand (operand 5)
       and an else operand (operand 6) as well as a len operand (operand
       7) and a bias operand (operand 8).
  
--- 27326,27360 ----
                for (i = 0; i < c; i++)
                  operand0[j * c + i] = operand1[i][j];
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜gather_loadMNâ€™
       Load several separate memory locations into a vector of mode M.
       Operand 1 is a scalar base address and operand 2 is a vector of
       mode N containing offsets from that base.  Operand 0 is a
       destination vector with the same number of elements as N.  For each
       element index I:
  
!         â€¢ extend the offset element I to address width, using zero
            extension if operand 3 is 1 and sign extension if operand 3 is
            zero;
!         â€¢ multiply the extended offset by operand 4;
!         â€¢ add the result to the base; and
!         â€¢ load the value at that address into element I of operand 0.
  
       The value of operand 3 does not matter if the offsets are already
       address width.
  
! â€˜mask_gather_loadMNâ€™
!      Like â€˜gather_loadMNâ€™, but takes an extra mask operand as operand 5.
       Other elements of the destination vectors are taken from operand 6,
!      which is an else operand similar to the one in â€˜maskloadâ€™.  Bit I
       of the mask is set if element I of the result should be loaded from
       memory and clear if element I of the result should be set to
       operand 6.
  
! â€˜mask_len_gather_loadMNâ€™
!      Like â€˜gather_loadMNâ€™, but takes an extra mask operand (operand 5)
       and an else operand (operand 6) as well as a len operand (operand
       7) and a bias operand (operand 8).
  
*************** pattern to accomplish a certain task.
*** 27360,27373 ****
       element I of the result should be set to element I of operand 6.
       Mask elements I with I > (operand 7 + operand 8) are ignored.
  
! 'mask_len_strided_loadM'
       Load several separate memory locations into a destination vector of
       mode M.  Operand 0 is a destination vector of mode M.  Operand 1 is
       a scalar base address and operand 2 is a scalar stride of Pmode.
       operand 3 is mask operand, operand 4 is length operand and operand
       5 is bias operand.  The instruction can be seen as a special case
!      of 'mask_len_gather_loadMN' with an offset vector that is a
!      'vec_series' with zero as base and operand 2 as step.  For each
       element the load address is operand 1 + I * operand 2.  Similar to
       mask_len_load, the instruction loads at most (operand 4 + operand
       5) elements from memory.  Element I of the mask (operand 3) is set
--- 27364,27377 ----
       element I of the result should be set to element I of operand 6.
       Mask elements I with I > (operand 7 + operand 8) are ignored.
  
! â€˜mask_len_strided_loadMâ€™
       Load several separate memory locations into a destination vector of
       mode M.  Operand 0 is a destination vector of mode M.  Operand 1 is
       a scalar base address and operand 2 is a scalar stride of Pmode.
       operand 3 is mask operand, operand 4 is length operand and operand
       5 is bias operand.  The instruction can be seen as a special case
!      of â€˜mask_len_gather_loadMNâ€™ with an offset vector that is a
!      â€˜vec_seriesâ€™ with zero as base and operand 2 as step.  For each
       element the load address is operand 1 + I * operand 2.  Similar to
       mask_len_load, the instruction loads at most (operand 4 + operand
       5) elements from memory.  Element I of the mask (operand 3) is set
*************** pattern to accomplish a certain task.
*** 27375,27418 ****
       if element I of the result should be zero.  Mask elements I with I
       > (operand 4 + operand 5) are ignored.
  
! 'scatter_storeMN'
       Store a vector of mode M into several distinct memory locations.
       Operand 0 is a scalar base address and operand 1 is a vector of
       mode N containing offsets from that base.  Operand 4 is the vector
       of values that should be stored, which has the same number of
       elements as N.  For each element index I:
  
!         * extend the offset element I to address width, using zero
            extension if operand 2 is 1 and sign extension if operand 2 is
            zero;
!         * multiply the extended offset by operand 3;
!         * add the result to the base; and
!         * store element I of operand 4 to that address.
  
       The value of operand 2 does not matter if the offsets are already
       address width.
  
! 'mask_scatter_storeMN'
!      Like 'scatter_storeMN', but takes an extra mask operand as operand
       5.  Bit I of the mask is set if element I of the result should be
       stored to memory.
  
! 'mask_len_scatter_storeMN'
!      Like 'scatter_storeMN', but takes an extra mask operand (operand
       5), a len operand (operand 6) as well as a bias operand (operand
       7).  The instruction stores at most (operand 6 + operand 7)
       elements of (operand 4) to memory.  Bit I of the mask is set if
       element I of (operand 4) should be stored.  Mask elements I with I
       > (operand 6 + operand 7) are ignored.
  
! 'mask_len_strided_storeM'
       Store a vector of mode m into several distinct memory locations.
       Operand 0 is a scalar base address and operand 1 is scalar stride
       of Pmode.  Operand 2 is the vector of values that should be stored,
       which is of mode M.  operand 3 is mask operand, operand 4 is length
       operand and operand 5 is bias operand.  The instruction can be seen
!      as a special case of 'mask_len_scatter_storeMN' with an offset
!      vector that is a 'vec_series' with zero as base and operand 1 as
       step.  For each element the store address is operand 0 + I *
       operand 1.  Similar to mask_len_store, the instruction stores at
       most (operand 4 + operand 5) elements of mask (operand 3) to
--- 27379,27422 ----
       if element I of the result should be zero.  Mask elements I with I
       > (operand 4 + operand 5) are ignored.
  
! â€˜scatter_storeMNâ€™
       Store a vector of mode M into several distinct memory locations.
       Operand 0 is a scalar base address and operand 1 is a vector of
       mode N containing offsets from that base.  Operand 4 is the vector
       of values that should be stored, which has the same number of
       elements as N.  For each element index I:
  
!         â€¢ extend the offset element I to address width, using zero
            extension if operand 2 is 1 and sign extension if operand 2 is
            zero;
!         â€¢ multiply the extended offset by operand 3;
!         â€¢ add the result to the base; and
!         â€¢ store element I of operand 4 to that address.
  
       The value of operand 2 does not matter if the offsets are already
       address width.
  
! â€˜mask_scatter_storeMNâ€™
!      Like â€˜scatter_storeMNâ€™, but takes an extra mask operand as operand
       5.  Bit I of the mask is set if element I of the result should be
       stored to memory.
  
! â€˜mask_len_scatter_storeMNâ€™
!      Like â€˜scatter_storeMNâ€™, but takes an extra mask operand (operand
       5), a len operand (operand 6) as well as a bias operand (operand
       7).  The instruction stores at most (operand 6 + operand 7)
       elements of (operand 4) to memory.  Bit I of the mask is set if
       element I of (operand 4) should be stored.  Mask elements I with I
       > (operand 6 + operand 7) are ignored.
  
! â€˜mask_len_strided_storeMâ€™
       Store a vector of mode m into several distinct memory locations.
       Operand 0 is a scalar base address and operand 1 is scalar stride
       of Pmode.  Operand 2 is the vector of values that should be stored,
       which is of mode M.  operand 3 is mask operand, operand 4 is length
       operand and operand 5 is bias operand.  The instruction can be seen
!      as a special case of â€˜mask_len_scatter_storeMNâ€™ with an offset
!      vector that is a â€˜vec_seriesâ€™ with zero as base and operand 1 as
       step.  For each element the store address is operand 0 + I *
       operand 1.  Similar to mask_len_store, the instruction stores at
       most (operand 4 + operand 5) elements of mask (operand 3) to
*************** pattern to accomplish a certain task.
*** 27420,27433 ****
       should be stored.  Mask elements I with I > (operand 4 + operand 5)
       are ignored.
  
! 'vec_setM'
       Set given field in the vector value.  Operand 0 is the vector to
       modify, operand 1 is new value of field and operand 2 specify the
       field index.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'vec_extractMN'
       Extract given field from the vector value.  Operand 1 is the
       vector, operand 2 specify field index and operand 0 place to store
       value into.  The N mode is the mode of the field or vector of
--- 27424,27437 ----
       should be stored.  Mask elements I with I > (operand 4 + operand 5)
       are ignored.
  
! â€˜vec_setMâ€™
       Set given field in the vector value.  Operand 0 is the vector to
       modify, operand 1 is new value of field and operand 2 specify the
       field index.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜vec_extractMNâ€™
       Extract given field from the vector value.  Operand 1 is the
       vector, operand 2 specify field index and operand 0 place to store
       value into.  The N mode is the mode of the field or vector of
*************** pattern to accomplish a certain task.
*** 27436,27461 ****
       smaller number of elements.  If N is a vector mode the index is
       counted in multiples of mode N.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'vec_initMN'
       Initialize the vector to given values.  Operand 0 is the vector to
       initialize and operand 1 is parallel containing values for
       individual fields.  The N mode is the mode of the elements, should
       be either element mode of the vector mode M, or a vector mode with
       the same element mode and smaller number of elements.
  
! 'vec_duplicateM'
       Initialize vector output operand 0 so that each element has the
       value given by scalar input operand 1.  The vector has mode M and
       the scalar has the mode appropriate for one element of M.
  
       This pattern only handles duplicates of non-constant inputs.
!      Constant vectors go through the 'movM' pattern instead.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'vec_seriesM'
       Initialize vector output operand 0 so that element I is equal to
       operand 1 plus I times operand 2.  In other words, create a linear
       series whose base value is operand 1 and whose step is operand 2.
--- 27440,27465 ----
       smaller number of elements.  If N is a vector mode the index is
       counted in multiples of mode N.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜vec_initMNâ€™
       Initialize the vector to given values.  Operand 0 is the vector to
       initialize and operand 1 is parallel containing values for
       individual fields.  The N mode is the mode of the elements, should
       be either element mode of the vector mode M, or a vector mode with
       the same element mode and smaller number of elements.
  
! â€˜vec_duplicateMâ€™
       Initialize vector output operand 0 so that each element has the
       value given by scalar input operand 1.  The vector has mode M and
       the scalar has the mode appropriate for one element of M.
  
       This pattern only handles duplicates of non-constant inputs.
!      Constant vectors go through the â€˜movMâ€™ pattern instead.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜vec_seriesMâ€™
       Initialize vector output operand 0 so that element I is equal to
       operand 1 plus I times operand 2.  In other words, create a linear
       series whose base value is operand 1 and whose step is operand 2.
*************** pattern to accomplish a certain task.
*** 27465,27478 ****
       floating-point vectors, in order to avoid having to specify the
       rounding behavior for I > 1.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'while_ultMN'
       Set operand 0 to a mask that is true while incrementing operand 1
       gives a value that is less than operand 2, for a vector length up
       to operand 3.  Operand 0 has mode N and operands 1 and 2 are scalar
       integers of mode M.  Operand 3 should be omitted when N is a vector
!      mode, and a 'CONST_INT' otherwise.  The operation for vector modes
       is equivalent to:
  
            operand0[0] = operand1 < operand2;
--- 27469,27482 ----
       floating-point vectors, in order to avoid having to specify the
       rounding behavior for I > 1.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜while_ultMNâ€™
       Set operand 0 to a mask that is true while incrementing operand 1
       gives a value that is less than operand 2, for a vector length up
       to operand 3.  Operand 0 has mode N and operands 1 and 2 are scalar
       integers of mode M.  Operand 3 should be omitted when N is a vector
!      mode, and a â€˜CONST_INTâ€™ otherwise.  The operation for vector modes
       is equivalent to:
  
            operand0[0] = operand1 < operand2;
*************** pattern to accomplish a certain task.
*** 27485,27491 ****
            for (i = 1; i < operand3; i++)
              operand0[i] = operand0[i - 1] && (operand1 + i < operand2);
  
! 'select_vlM'
       Set operand 0 to the number of scalar iterations that should be
       handled by one iteration of a vector loop.  Operand 1 is the total
       number of scalar iterations that the loop needs to process and
--- 27489,27495 ----
            for (i = 1; i < operand3; i++)
              operand0[i] = operand0[i - 1] && (operand1 + i < operand2);
  
! â€˜select_vlMâ€™
       Set operand 0 to the number of scalar iterations that should be
       handled by one iteration of a vector loop.  Operand 1 is the total
       number of scalar iterations that the loop needs to process and
*************** pattern to accomplish a certain task.
*** 27501,27513 ****
       Because of this, it is generally not useful to define this
       instruction if it will always calculate the maximum value.
  
!      This optab is only useful on targets that implement 'len_load_M'
!      and/or 'len_store_M'.
  
! 'check_raw_ptrsM'
       Check whether, given two pointers A and B and a length LEN, a write
       of LEN bytes at A followed by a read of LEN bytes at B can be split
!      into interleaved byte accesses 'A[0], B[0], A[1], B[1], ...'
       without affecting the dependencies between the bytes.  Set operand
       0 to true if the split is possible and false otherwise.
  
--- 27505,27517 ----
       Because of this, it is generally not useful to define this
       instruction if it will always calculate the maximum value.
  
!      This optab is only useful on targets that implement â€˜len_load_Mâ€™
!      and/or â€˜len_store_Mâ€™.
  
! â€˜check_raw_ptrsMâ€™
       Check whether, given two pointers A and B and a length LEN, a write
       of LEN bytes at A followed by a read of LEN bytes at B can be split
!      into interleaved byte accesses â€˜A[0], B[0], A[1], B[1], ...â€™
       without affecting the dependencies between the bytes.  Set operand
       0 to true if the split is possible and false otherwise.
  
*************** pattern to accomplish a certain task.
*** 27523,27552 ****
       accelerating the test without having to do the individual
       comparisons.
  
! 'check_war_ptrsM'
!      Like 'check_raw_ptrsM', but with the read and write swapped round.
       The split is possible in this case if:
  
            B <= A || A + LEN <= B
  
! 'vec_cmpMN'
       Output a vector comparison.  Operand 0 of mode N is the destination
       for predicate in operand 1 which is a signed vector comparison with
       operands of mode M in operands 2 and 3.  Predicate is computed by
       element-wise evaluation of the vector comparison with a truth value
       of all-ones and a false value of all-zeros.
  
! 'vec_cmpuMN'
!      Similar to 'vec_cmpMN' but perform unsigned vector comparison.
  
! 'vec_cmpeqMN'
!      Similar to 'vec_cmpMN' but perform equality or non-equality vector
!      comparison only.  If 'vec_cmpMN' or 'vec_cmpuMN' instruction
!      pattern is supported, it will be preferred over 'vec_cmpeqMN', so
       there is no need to define this instruction pattern if the others
       are supported.
  
! 'vcond_mask_MN'
       Output a conditional vector move.  Operand 0 is the destination to
       receive a combination of operand 1 and operand 2, depending on the
       mask in operand 3.  Operands 0, 1, and 2 have mode M while operand
--- 27527,27556 ----
       accelerating the test without having to do the individual
       comparisons.
  
! â€˜check_war_ptrsMâ€™
!      Like â€˜check_raw_ptrsMâ€™, but with the read and write swapped round.
       The split is possible in this case if:
  
            B <= A || A + LEN <= B
  
! â€˜vec_cmpMNâ€™
       Output a vector comparison.  Operand 0 of mode N is the destination
       for predicate in operand 1 which is a signed vector comparison with
       operands of mode M in operands 2 and 3.  Predicate is computed by
       element-wise evaluation of the vector comparison with a truth value
       of all-ones and a false value of all-zeros.
  
! â€˜vec_cmpuMNâ€™
!      Similar to â€˜vec_cmpMNâ€™ but perform unsigned vector comparison.
  
! â€˜vec_cmpeqMNâ€™
!      Similar to â€˜vec_cmpMNâ€™ but perform equality or non-equality vector
!      comparison only.  If â€˜vec_cmpMNâ€™ or â€˜vec_cmpuMNâ€™ instruction
!      pattern is supported, it will be preferred over â€˜vec_cmpeqMNâ€™, so
       there is no need to define this instruction pattern if the others
       are supported.
  
! â€˜vcond_mask_MNâ€™
       Output a conditional vector move.  Operand 0 is the destination to
       receive a combination of operand 1 and operand 2, depending on the
       mask in operand 3.  Operands 0, 1, and 2 have mode M while operand
*************** pattern to accomplish a certain task.
*** 27565,27571 ****
            for (i = 0; i < E; i++)
              op0[i] = op3[i] ? op1[i] : op2[i];
  
! 'vcond_mask_len_MN'
       Set each element of operand 0 to the corresponding element of
       operand 2 or operand 3.  Choose operand 2 if both the element index
       is less than operand 4 plus operand 5 and the corresponding element
--- 27569,27575 ----
            for (i = 0; i < E; i++)
              op0[i] = op3[i] ? op1[i] : op2[i];
  
! â€˜vcond_mask_len_MNâ€™
       Set each element of operand 0 to the corresponding element of
       operand 2 or operand 3.  Choose operand 2 if both the element index
       is less than operand 4 plus operand 5 and the corresponding element
*************** pattern to accomplish a certain task.
*** 27577,27583 ****
       Operands 0, 2 and 3 have mode M.  Operand 1 has mode N.  Operands 4
       and 5 have a target-dependent scalar integer mode.
  
! 'maskloadMN'
       Perform a masked load of vector from memory operand 1 of mode M
       into register operand 0.  The mask is provided in register operand
       2 of mode N.  Operand 3 (the "else value") is of mode M and
--- 27581,27587 ----
       Operands 0, 2 and 3 have mode M.  Operand 1 has mode N.  Operands 4
       and 5 have a target-dependent scalar integer mode.
  
! â€˜maskloadMNâ€™
       Perform a masked load of vector from memory operand 1 of mode M
       into register operand 0.  The mask is provided in register operand
       2 of mode N.  Operand 3 (the "else value") is of mode M and
*************** pattern to accomplish a certain task.
*** 27587,27607 ****
       zero, -1, and undefined.  GCC handles an else value of zero more
       efficiently than -1 or undefined.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'maskstoreMN'
       Perform a masked store of vector from register operand 1 of mode M
       into memory operand 0.  Mask is provided in register operand 2 of
       mode N.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'len_load_M'
       Load (operand 2 + operand 3) elements from memory operand 1 into
       vector register operand 0, setting the other elements of operand 0
       to undefined values.  Operands 0 and 1 have mode M, which must be a
       vector mode.  Operand 2 has whichever integer mode the target
!      prefers.  Operand 3 conceptually has mode 'QI'.
  
       Operand 2 can be a variable or a constant amount.  Operand 3
       specifies a constant bias: it is either a constant 0 or a constant
--- 27591,27611 ----
       zero, -1, and undefined.  GCC handles an else value of zero more
       efficiently than -1 or undefined.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜maskstoreMNâ€™
       Perform a masked store of vector from register operand 1 of mode M
       into memory operand 0.  Mask is provided in register operand 2 of
       mode N.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜len_load_Mâ€™
       Load (operand 2 + operand 3) elements from memory operand 1 into
       vector register operand 0, setting the other elements of operand 0
       to undefined values.  Operands 0 and 1 have mode M, which must be a
       vector mode.  Operand 2 has whichever integer mode the target
!      prefers.  Operand 3 conceptually has mode â€˜QIâ€™.
  
       Operand 2 can be a variable or a constant amount.  Operand 3
       specifies a constant bias: it is either a constant 0 or a constant
*************** pattern to accomplish a certain task.
*** 27614,27629 ****
  
       If the target prefers the length to be measured in bytes rather
       than elements, it should only implement this pattern for vectors of
!      'QI' elements.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'len_store_M'
       Store (operand 2 + operand 3) vector elements from vector register
       operand 1 into memory operand 0, leaving the other elements of
       operand 0 unchanged.  Operands 0 and 1 have mode M, which must be a
       vector mode.  Operand 2 has whichever integer mode the target
!      prefers.  Operand 3 conceptually has mode 'QI'.
  
       Operand 2 can be a variable or a constant amount.  Operand 3
       specifies a constant bias: it is either a constant 0 or a constant
--- 27618,27633 ----
  
       If the target prefers the length to be measured in bytes rather
       than elements, it should only implement this pattern for vectors of
!      â€˜QIâ€™ elements.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜len_store_Mâ€™
       Store (operand 2 + operand 3) vector elements from vector register
       operand 1 into memory operand 0, leaving the other elements of
       operand 0 unchanged.  Operands 0 and 1 have mode M, which must be a
       vector mode.  Operand 2 has whichever integer mode the target
!      prefers.  Operand 3 conceptually has mode â€˜QIâ€™.
  
       Operand 2 can be a variable or a constant amount.  Operand 3
       specifies a constant bias: it is either a constant 0 or a constant
*************** pattern to accomplish a certain task.
*** 27636,27646 ****
  
       If the target prefers the length to be measured in bytes rather
       than elements, it should only implement this pattern for vectors of
!      'QI' elements.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'mask_len_loadMN'
       Perform a masked load from the memory location pointed to by
       operand 1 into register operand 0.  (operand 3 + operand 4)
       elements are loaded from memory and other elements in operand 0 are
--- 27640,27650 ----
  
       If the target prefers the length to be measured in bytes rather
       than elements, it should only implement this pattern for vectors of
!      â€˜QIâ€™ elements.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜mask_len_loadMNâ€™
       Perform a masked load from the memory location pointed to by
       operand 1 into register operand 0.  (operand 3 + operand 4)
       elements are loaded from memory and other elements in operand 0 are
*************** pattern to accomplish a certain task.
*** 27651,27657 ****
       has lower precedence than the length and is itself subject to
       length masking, i.e.  only mask indices < (operand 4 + operand 5)
       are used.  Operand 3 is an else operand similar to the one in
!      'maskload'.  Operand 4 conceptually has mode 'QI'.
  
       Operand 4 can be a variable or a constant amount.  Operand 5
       specifies a constant bias: it is either a constant 0 or a constant
--- 27655,27661 ----
       has lower precedence than the length and is itself subject to
       length masking, i.e.  only mask indices < (operand 4 + operand 5)
       are used.  Operand 3 is an else operand similar to the one in
!      â€˜maskloadâ€™.  Operand 4 conceptually has mode â€˜QIâ€™.
  
       Operand 4 can be a variable or a constant amount.  Operand 5
       specifies a constant bias: it is either a constant 0 or a constant
*************** pattern to accomplish a certain task.
*** 27664,27674 ****
  
       If the target prefers the length to be measured in bytes rather
       than elements, it should only implement this pattern for vectors of
!      'QI' elements.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'mask_len_storeMN'
       Perform a masked store from vector register operand 1 into memory
       operand 0.  (operand 3 + operand 4) elements are stored to memory
       and leave the other elements of operand 0 unchanged.  This is a
--- 27668,27678 ----
  
       If the target prefers the length to be measured in bytes rather
       than elements, it should only implement this pattern for vectors of
!      â€˜QIâ€™ elements.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜mask_len_storeMNâ€™
       Perform a masked store from vector register operand 1 into memory
       operand 0.  (operand 3 + operand 4) elements are stored to memory
       and leave the other elements of operand 0 unchanged.  This is a
*************** pattern to accomplish a certain task.
*** 27678,27684 ****
       must be of type N.  The mask has lower precedence than the length
       and is itself subject to length masking, i.e.  only mask indices <
       (operand 3 + operand 4) are used.  Operand 4 conceptually has mode
!      'QI'.
  
       Operand 2 can be a variable or a constant amount.  Operand 3
       specifies a constant bias: it is either a constant 0 or a constant
--- 27682,27688 ----
       must be of type N.  The mask has lower precedence than the length
       and is itself subject to length masking, i.e.  only mask indices <
       (operand 3 + operand 4) are used.  Operand 4 conceptually has mode
!      â€˜QIâ€™.
  
       Operand 2 can be a variable or a constant amount.  Operand 3
       specifies a constant bias: it is either a constant 0 or a constant
*************** pattern to accomplish a certain task.
*** 27691,27743 ****
  
       If the target prefers the length to be measured in bytes rather
       than elements, it should only implement this pattern for vectors of
!      'QI' elements.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'vec_permM'
       Output a (variable) vector permutation.  Operand 0 is the
       destination to receive elements from operand 1 and operand 2, which
!      are of mode M.  Operand 3 is the "selector".  It is an integral
       mode vector of the same width and number of elements as mode M.
  
       The input elements are numbered from 0 in operand 1 through 2*N-1
       in operand 2.  The elements of the selector must be computed modulo
!      2*N.  Note that if 'rtx_equal_p(operand1, operand2)', this can be
       implemented with just operand 1 and selector elements modulo N.
  
       In order to make things easy for a number of targets, if there is
!      no 'vec_perm' pattern for mode M, but there is for mode Q where Q
!      is a vector of 'QImode' of the same width as M, the middle-end will
!      lower the mode M 'VEC_PERM_EXPR' to mode Q.
  
!      See also 'TARGET_VECTORIZER_VEC_PERM_CONST', which performs the
       analogous operation for constant selectors.
  
! 'pushM1'
       Output a push instruction.  Operand 0 is value to push.  Used only
!      when 'PUSH_ROUNDING' is defined.  For historical reason, this
!      pattern may be missing and in such case an 'mov' expander is used
!      instead, with a 'MEM' expression forming the push operation.  The
!      'mov' expander method is deprecated.
  
! 'addM3'
       Add operand 2 and operand 1, storing the result in operand 0.  All
       operands must have mode M.  This can be used even on two-address
       machines, by means of constraints requiring operands 1 and 0 to be
       the same location.
  
! 'ssaddM3', 'usaddM3'
! 'subM3', 'sssubM3', 'ussubM3'
! 'mulM3', 'ssmulM3', 'usmulM3'
! 'divM3', 'ssdivM3'
! 'udivM3', 'usdivM3'
! 'modM3', 'umodM3'
! 'uminM3', 'umaxM3'
! 'andM3', 'iorM3', 'xorM3'
       Similar, for other arithmetic operations.
  
! 'ustruncMN2'
       Truncate the operand 1, and storing the result in operand 0.  There
       will be saturation during the trunction.  The result will be
       saturated to the maximal value of operand 0 type if there is
--- 27695,27747 ----
  
       If the target prefers the length to be measured in bytes rather
       than elements, it should only implement this pattern for vectors of
!      â€˜QIâ€™ elements.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜vec_permMâ€™
       Output a (variable) vector permutation.  Operand 0 is the
       destination to receive elements from operand 1 and operand 2, which
!      are of mode M.  Operand 3 is the â€œselectorâ€�.  It is an integral
       mode vector of the same width and number of elements as mode M.
  
       The input elements are numbered from 0 in operand 1 through 2*N-1
       in operand 2.  The elements of the selector must be computed modulo
!      2*N.  Note that if â€˜rtx_equal_p(operand1, operand2)â€™, this can be
       implemented with just operand 1 and selector elements modulo N.
  
       In order to make things easy for a number of targets, if there is
!      no â€˜vec_permâ€™ pattern for mode M, but there is for mode Q where Q
!      is a vector of â€˜QImodeâ€™ of the same width as M, the middle-end will
!      lower the mode M â€˜VEC_PERM_EXPRâ€™ to mode Q.
  
!      See also â€˜TARGET_VECTORIZER_VEC_PERM_CONSTâ€™, which performs the
       analogous operation for constant selectors.
  
! â€˜pushM1â€™
       Output a push instruction.  Operand 0 is value to push.  Used only
!      when â€˜PUSH_ROUNDINGâ€™ is defined.  For historical reason, this
!      pattern may be missing and in such case an â€˜movâ€™ expander is used
!      instead, with a â€˜MEMâ€™ expression forming the push operation.  The
!      â€˜movâ€™ expander method is deprecated.
  
! â€˜addM3â€™
       Add operand 2 and operand 1, storing the result in operand 0.  All
       operands must have mode M.  This can be used even on two-address
       machines, by means of constraints requiring operands 1 and 0 to be
       the same location.
  
! â€˜ssaddM3â€™, â€˜usaddM3â€™
! â€˜subM3â€™, â€˜sssubM3â€™, â€˜ussubM3â€™
! â€˜mulM3â€™, â€˜ssmulM3â€™, â€˜usmulM3â€™
! â€˜divM3â€™, â€˜ssdivM3â€™
! â€˜udivM3â€™, â€˜usdivM3â€™
! â€˜modM3â€™, â€˜umodM3â€™
! â€˜uminM3â€™, â€˜umaxM3â€™
! â€˜andM3â€™, â€˜iorM3â€™, â€˜xorM3â€™
       Similar, for other arithmetic operations.
  
! â€˜ustruncMN2â€™
       Truncate the operand 1, and storing the result in operand 0.  There
       will be saturation during the trunction.  The result will be
       saturated to the maximal value of operand 0 type if there is
*************** pattern to accomplish a certain task.
*** 27745,27779 ****
       operand 0 must have mode M.  Both scalar and vector integer modes
       are allowed.
  
! 'sstruncMN2'
       Similar but for signed.
  
! 'andnM3'
!      Like 'andM3', but it uses bitwise-complement of operand 2 rather
       than operand 2 itself.
  
! 'iornM3'
!      Like 'iorM3', but it uses bitwise-complement of operand 2 rather
       than operand 2 itself.
  
! 'addvM4'
!      Like 'addM3' but takes a 'code_label' as operand 3 and emits code
       to jump to it if signed overflow occurs during the addition.  This
       pattern is used to implement the built-in functions performing
       signed integer addition with overflow checking.
  
! 'subvM4', 'mulvM4'
       Similar, for other signed arithmetic operations.
  
! 'uaddvM4'
!      Like 'addvM4' but for unsigned addition.  That is to say, the
       operation is the same as signed addition but the jump is taken only
       on unsigned overflow.
  
! 'usubvM4', 'umulvM4'
       Similar, for other unsigned arithmetic operations.
  
! 'uaddcM5'
       Adds unsigned operands 2, 3 and 4 (where the last operand is
       guaranteed to have only values 0 or 1) together, sets operand 0 to
       the result of the addition of the 3 operands and sets operand 1 to
--- 27749,27783 ----
       operand 0 must have mode M.  Both scalar and vector integer modes
       are allowed.
  
! â€˜sstruncMN2â€™
       Similar but for signed.
  
! â€˜andnM3â€™
!      Like â€˜andM3â€™, but it uses bitwise-complement of operand 2 rather
       than operand 2 itself.
  
! â€˜iornM3â€™
!      Like â€˜iorM3â€™, but it uses bitwise-complement of operand 2 rather
       than operand 2 itself.
  
! â€˜addvM4â€™
!      Like â€˜addM3â€™ but takes a â€˜code_labelâ€™ as operand 3 and emits code
       to jump to it if signed overflow occurs during the addition.  This
       pattern is used to implement the built-in functions performing
       signed integer addition with overflow checking.
  
! â€˜subvM4â€™, â€˜mulvM4â€™
       Similar, for other signed arithmetic operations.
  
! â€˜uaddvM4â€™
!      Like â€˜addvM4â€™ but for unsigned addition.  That is to say, the
       operation is the same as signed addition but the jump is taken only
       on unsigned overflow.
  
! â€˜usubvM4â€™, â€˜umulvM4â€™
       Similar, for other unsigned arithmetic operations.
  
! â€˜uaddcM5â€™
       Adds unsigned operands 2, 3 and 4 (where the last operand is
       guaranteed to have only values 0 or 1) together, sets operand 0 to
       the result of the addition of the 3 operands and sets operand 1 to
*************** pattern to accomplish a certain task.
*** 27781,27906 ****
       otherwise.  So, it is an addition with carry in (operand 4) and
       carry out (operand 1).  All operands have the same mode.
  
! 'usubcM5'
!      Similarly to 'uaddcM5', except subtracts unsigned operands 3 and 4
       from operand 2 instead of adding them.  So, it is a subtraction
       with carry/borrow in (operand 4) and carry/borrow out (operand 1).
       All operands have the same mode.
  
! 'addptrM3'
!      Like 'addM3' but is guaranteed to only be used for address
       calculations.  The expanded code is not allowed to clobber the
!      condition code.  It only needs to be defined if 'addM3' sets the
       condition code.  If adds used for address calculations and normal
       adds are not compatible it is required to expand a distinct pattern
       (e.g. using an unspec).  The pattern is used by LRA to emit address
!      calculations.  'addM3' is used if 'addptrM3' is not defined.
  
! 'fmaM4'
       Multiply operand 2 and operand 1, then add operand 3, storing the
       result in operand 0 without doing an intermediate rounding step.
       All operands must have mode M.  This pattern is used to implement
!      the 'fma', 'fmaf', and 'fmal' builtin functions from the ISO C99
       standard.
  
! 'fmsM4'
!      Like 'fmaM4', except operand 3 subtracted from the product instead
       of added to the product.  This is represented in the rtl as
  
            (fma:M OP1 OP2 (neg:M OP3))
  
! 'fnmaM4'
!      Like 'fmaM4' except that the intermediate product is negated before
       being added to operand 3.  This is represented in the rtl as
  
            (fma:M (neg:M OP1) OP2 OP3)
  
! 'fnmsM4'
!      Like 'fmsM4' except that the intermediate product is negated before
       subtracting operand 3.  This is represented in the rtl as
  
            (fma:M (neg:M OP1) OP2 (neg:M OP3))
  
! 'sminM3', 'smaxM3'
       Signed minimum and maximum operations.  When used with floating
!      point, if both operands are zeros, or if either operand is 'NaN',
       then it is unspecified which of the two operands is returned as the
       result.
  
! 'fminM3', 'fmaxM3'
       IEEE-conformant minimum and maximum operations.  If one operand is
!      a quiet 'NaN', then the other operand is returned.  If both
!      operands are quiet 'NaN', then a quiet 'NaN' is returned.  In the
!      case when gcc supports signaling 'NaN' (-fsignaling-nans) an
!      invalid floating point exception is raised and a quiet 'NaN' is
       returned.
  
       All operands have mode M, which is a scalar or vector
!      floating-point mode.  These patterns are not allowed to 'FAIL'.
  
! 'reduc_smin_scal_M', 'reduc_smax_scal_M'
       Find the signed minimum/maximum of the elements of a vector.  The
       vector is operand 1, and operand 0 is the scalar result, with mode
       equal to the mode of the elements of the input vector.
  
! 'reduc_umin_scal_M', 'reduc_umax_scal_M'
       Find the unsigned minimum/maximum of the elements of a vector.  The
       vector is operand 1, and operand 0 is the scalar result, with mode
       equal to the mode of the elements of the input vector.
  
! 'reduc_fmin_scal_M', 'reduc_fmax_scal_M'
       Find the floating-point minimum/maximum of the elements of a
!      vector, using the same rules as 'fminM3' and 'fmaxM3'.  Operand 1
       is a vector of mode M and operand 0 is the scalar result, which has
!      mode 'GET_MODE_INNER (M)'.
  
! 'reduc_plus_scal_M'
       Compute the sum of the elements of a vector.  The vector is operand
       1, and operand 0 is the scalar result, with mode equal to the mode
       of the elements of the input vector.
  
! 'reduc_and_scal_M'
! 'reduc_ior_scal_M'
! 'reduc_xor_scal_M'
!      Compute the bitwise 'AND'/'IOR'/'XOR' reduction of the elements of
       a vector of mode M.  Operand 1 is the vector input and operand 0 is
       the scalar result.  The mode of the scalar result is the same as
       one element of M.
  
! 'extract_last_M'
       Find the last set bit in mask operand 1 and extract the associated
       element of vector operand 2.  Store the result in scalar operand 0.
       Operand 2 has vector mode M while operand 0 has the mode
       appropriate for one element of M.  Operand 1 has the usual mask
!      mode for vectors of mode M; see 'TARGET_VECTORIZE_GET_MASK_MODE'.
  
! 'fold_extract_last_M'
       If any bits of mask operand 2 are set, find the last set bit,
       extract the associated element from vector operand 3, and store the
       result in operand 0.  Store operand 1 in operand 0 otherwise.
       Operand 3 has mode M and operands 0 and 1 have the mode appropriate
       for one element of M.  Operand 2 has the usual mask mode for
!      vectors of mode M; see 'TARGET_VECTORIZE_GET_MASK_MODE'.
  
! 'len_fold_extract_last_M'
!      Like 'fold_extract_last_M', but takes an extra length operand as
       operand 4 and an extra bias operand as operand 5.  The last
       associated element is extracted should have the index i < len
       (operand 4) + bias (operand 5).
  
! 'fold_left_plus_M'
       Take scalar operand 1 and successively add each element from vector
       operand 2.  Store the result in scalar operand 0.  The vector has
       mode M and the scalars have the mode appropriate for one element of
       M.  The operation is strictly in-order: there is no reassociation.
  
! 'mask_fold_left_plus_M'
!      Like 'fold_left_plus_M', but takes an additional mask operand
       (operand 3) that specifies which elements of the source vector
       should be added.
  
! 'mask_len_fold_left_plus_M'
!      Like 'fold_left_plus_M', but takes an additional mask operand
       (operand 3), len operand (operand 4) and bias operand (operand 5)
       that performs following operations strictly in-order (no
       reassociation):
--- 27785,27910 ----
       otherwise.  So, it is an addition with carry in (operand 4) and
       carry out (operand 1).  All operands have the same mode.
  
! â€˜usubcM5â€™
!      Similarly to â€˜uaddcM5â€™, except subtracts unsigned operands 3 and 4
       from operand 2 instead of adding them.  So, it is a subtraction
       with carry/borrow in (operand 4) and carry/borrow out (operand 1).
       All operands have the same mode.
  
! â€˜addptrM3â€™
!      Like â€˜addM3â€™ but is guaranteed to only be used for address
       calculations.  The expanded code is not allowed to clobber the
!      condition code.  It only needs to be defined if â€˜addM3â€™ sets the
       condition code.  If adds used for address calculations and normal
       adds are not compatible it is required to expand a distinct pattern
       (e.g. using an unspec).  The pattern is used by LRA to emit address
!      calculations.  â€˜addM3â€™ is used if â€˜addptrM3â€™ is not defined.
  
! â€˜fmaM4â€™
       Multiply operand 2 and operand 1, then add operand 3, storing the
       result in operand 0 without doing an intermediate rounding step.
       All operands must have mode M.  This pattern is used to implement
!      the â€˜fmaâ€™, â€˜fmafâ€™, and â€˜fmalâ€™ builtin functions from the ISO C99
       standard.
  
! â€˜fmsM4â€™
!      Like â€˜fmaM4â€™, except operand 3 subtracted from the product instead
       of added to the product.  This is represented in the rtl as
  
            (fma:M OP1 OP2 (neg:M OP3))
  
! â€˜fnmaM4â€™
!      Like â€˜fmaM4â€™ except that the intermediate product is negated before
       being added to operand 3.  This is represented in the rtl as
  
            (fma:M (neg:M OP1) OP2 OP3)
  
! â€˜fnmsM4â€™
!      Like â€˜fmsM4â€™ except that the intermediate product is negated before
       subtracting operand 3.  This is represented in the rtl as
  
            (fma:M (neg:M OP1) OP2 (neg:M OP3))
  
! â€˜sminM3â€™, â€˜smaxM3â€™
       Signed minimum and maximum operations.  When used with floating
!      point, if both operands are zeros, or if either operand is â€˜NaNâ€™,
       then it is unspecified which of the two operands is returned as the
       result.
  
! â€˜fminM3â€™, â€˜fmaxM3â€™
       IEEE-conformant minimum and maximum operations.  If one operand is
!      a quiet â€˜NaNâ€™, then the other operand is returned.  If both
!      operands are quiet â€˜NaNâ€™, then a quiet â€˜NaNâ€™ is returned.  In the
!      case when gcc supports signaling â€˜NaNâ€™ (-fsignaling-nans) an
!      invalid floating point exception is raised and a quiet â€˜NaNâ€™ is
       returned.
  
       All operands have mode M, which is a scalar or vector
!      floating-point mode.  These patterns are not allowed to â€˜FAILâ€™.
  
! â€˜reduc_smin_scal_Mâ€™, â€˜reduc_smax_scal_Mâ€™
       Find the signed minimum/maximum of the elements of a vector.  The
       vector is operand 1, and operand 0 is the scalar result, with mode
       equal to the mode of the elements of the input vector.
  
! â€˜reduc_umin_scal_Mâ€™, â€˜reduc_umax_scal_Mâ€™
       Find the unsigned minimum/maximum of the elements of a vector.  The
       vector is operand 1, and operand 0 is the scalar result, with mode
       equal to the mode of the elements of the input vector.
  
! â€˜reduc_fmin_scal_Mâ€™, â€˜reduc_fmax_scal_Mâ€™
       Find the floating-point minimum/maximum of the elements of a
!      vector, using the same rules as â€˜fminM3â€™ and â€˜fmaxM3â€™.  Operand 1
       is a vector of mode M and operand 0 is the scalar result, which has
!      mode â€˜GET_MODE_INNER (M)â€™.
  
! â€˜reduc_plus_scal_Mâ€™
       Compute the sum of the elements of a vector.  The vector is operand
       1, and operand 0 is the scalar result, with mode equal to the mode
       of the elements of the input vector.
  
! â€˜reduc_and_scal_Mâ€™
! â€˜reduc_ior_scal_Mâ€™
! â€˜reduc_xor_scal_Mâ€™
!      Compute the bitwise â€˜ANDâ€™/â€˜IORâ€™/â€˜XORâ€™ reduction of the elements of
       a vector of mode M.  Operand 1 is the vector input and operand 0 is
       the scalar result.  The mode of the scalar result is the same as
       one element of M.
  
! â€˜extract_last_Mâ€™
       Find the last set bit in mask operand 1 and extract the associated
       element of vector operand 2.  Store the result in scalar operand 0.
       Operand 2 has vector mode M while operand 0 has the mode
       appropriate for one element of M.  Operand 1 has the usual mask
!      mode for vectors of mode M; see â€˜TARGET_VECTORIZE_GET_MASK_MODEâ€™.
  
! â€˜fold_extract_last_Mâ€™
       If any bits of mask operand 2 are set, find the last set bit,
       extract the associated element from vector operand 3, and store the
       result in operand 0.  Store operand 1 in operand 0 otherwise.
       Operand 3 has mode M and operands 0 and 1 have the mode appropriate
       for one element of M.  Operand 2 has the usual mask mode for
!      vectors of mode M; see â€˜TARGET_VECTORIZE_GET_MASK_MODEâ€™.
  
! â€˜len_fold_extract_last_Mâ€™
!      Like â€˜fold_extract_last_Mâ€™, but takes an extra length operand as
       operand 4 and an extra bias operand as operand 5.  The last
       associated element is extracted should have the index i < len
       (operand 4) + bias (operand 5).
  
! â€˜fold_left_plus_Mâ€™
       Take scalar operand 1 and successively add each element from vector
       operand 2.  Store the result in scalar operand 0.  The vector has
       mode M and the scalars have the mode appropriate for one element of
       M.  The operation is strictly in-order: there is no reassociation.
  
! â€˜mask_fold_left_plus_Mâ€™
!      Like â€˜fold_left_plus_Mâ€™, but takes an additional mask operand
       (operand 3) that specifies which elements of the source vector
       should be added.
  
! â€˜mask_len_fold_left_plus_Mâ€™
!      Like â€˜fold_left_plus_Mâ€™, but takes an additional mask operand
       (operand 3), len operand (operand 4) and bias operand (operand 5)
       that performs following operations strictly in-order (no
       reassociation):
*************** pattern to accomplish a certain task.
*** 27910,27916 ****
              if (operand3[i])
                operand0 += operand2[i];
  
! 'sdot_prodMN'
  
       Multiply operand 1 by operand 2 without loss of precision, given
       that both operands contain signed elements.  Add each product to
--- 27914,27920 ----
              if (operand3[i])
                operand0 += operand2[i];
  
! â€˜sdot_prodMNâ€™
  
       Multiply operand 1 by operand 2 without loss of precision, given
       that both operands contain signed elements.  Add each product to
*************** pattern to accomplish a certain task.
*** 27925,27931 ****
               op0 = sign-ext (op1) * sign-ext (op2) + op3
            ...
  
! 'udot_prodMN'
  
       Multiply operand 1 by operand 2 without loss of precision, given
       that both operands contain unsigned elements.  Add each product to
--- 27929,27935 ----
               op0 = sign-ext (op1) * sign-ext (op2) + op3
            ...
  
! â€˜udot_prodMNâ€™
  
       Multiply operand 1 by operand 2 without loss of precision, given
       that both operands contain unsigned elements.  Add each product to
*************** pattern to accomplish a certain task.
*** 27940,27946 ****
               op0 = zero-ext (op1) * zero-ext (op2) + op3
            ...
  
! 'usdot_prodMN'
       Compute the sum of the products of elements of different signs.
       Multiply operand 1 by operand 2 without loss of precision, given
       that operand 1 is unsigned and operand 2 is signed.  Add each
--- 27944,27950 ----
               op0 = zero-ext (op1) * zero-ext (op2) + op3
            ...
  
! â€˜usdot_prodMNâ€™
       Compute the sum of the products of elements of different signs.
       Multiply operand 1 by operand 2 without loss of precision, given
       that operand 1 is unsigned and operand 2 is signed.  Add each
*************** pattern to accomplish a certain task.
*** 27955,27962 ****
               op0 = ((signed-conv) zero-ext (op1)) * sign-ext (op2) + op3
            ...
  
! 'ssadM'
! 'usadM'
       Compute the sum of absolute differences of two signed/unsigned
       elements.  Operand 1 and operand 2 are of the same mode.  Their
       absolute difference, which is of a wider mode, is computed and
--- 27959,27966 ----
               op0 = ((signed-conv) zero-ext (op1)) * sign-ext (op2) + op3
            ...
  
! â€˜ssadMâ€™
! â€˜usadMâ€™
       Compute the sum of absolute differences of two signed/unsigned
       elements.  Operand 1 and operand 2 are of the same mode.  Their
       absolute difference, which is of a wider mode, is computed and
*************** pattern to accomplish a certain task.
*** 27965,28090 ****
       0, which is of the same mode as operand 3.  M is the mode of
       operand 1 and operand 2.
  
! 'widen_ssumM3'
! 'widen_usumM3'
       Operands 0 and 2 are of the same mode, which is wider than the mode
       of operand 1.  Add operand 1 to operand 2 and place the widened
       result in operand 0.  (This is used express accumulation of
       elements into an accumulator of a wider mode.)  M is the mode of
       operand 1.
  
! 'smulhsM3'
! 'umulhsM3'
       Signed/unsigned multiply high with scale.  This is equivalent to
       the C code:
            narrow op0, op1, op2;
            ...
            op0 = (narrow) (((wide) op1 * (wide) op2) >> (N / 2 - 1));
!      where the sign of 'narrow' determines whether this is a signed or
!      unsigned operation, and N is the size of 'wide' in bits.  M is the
       mode for all 3 operands (narrow).  The wide mode is not specified
       and is defined to fit the whole multiply.
  
! 'smulhrsM3'
! 'umulhrsM3'
       Signed/unsigned multiply high with round and scale.  This is
       equivalent to the C code:
            narrow op0, op1, op2;
            ...
            op0 = (narrow) (((((wide) op1 * (wide) op2) >> (N / 2 - 2)) + 1) >> 1);
!      where the sign of 'narrow' determines whether this is a signed or
!      unsigned operation, and N is the size of 'wide' in bits.  M is the
       mode for all 3 operands (narrow).  The wide mode is not specified
       and is defined to fit the whole multiply.
  
! 'sdiv_pow2M3'
! 'sdiv_pow2M3'
       Signed division by power-of-2 immediate.  Equivalent to:
            signed op0, op1;
            ...
            op0 = op1 / (1 << imm);
  
! 'vec_shl_insert_M'
       Shift the elements in vector input operand 1 left one element (i.e.
       away from element 0) and fill the vacated element 0 with the scalar
       in operand 2.  Store the result in vector output operand 0.
       Operands 0 and 1 have mode M and operand 2 has the mode appropriate
       for one element of M.
  
! 'vec_shl_M'
       Whole vector left shift in bits, i.e. away from element 0.  Operand
       1 is a vector to be shifted.  Operand 2 is an integer shift amount
       in bits.  Operand 0 is where the resulting shifted vector is
       stored.  The output and input vectors should have the same modes.
  
! 'vec_shr_M'
       Whole vector right shift in bits, i.e. towards element 0.  Operand
       1 is a vector to be shifted.  Operand 2 is an integer shift amount
       in bits.  Operand 0 is where the resulting shifted vector is
       stored.  The output and input vectors should have the same modes.
  
! 'vec_pack_trunc_M'
       Narrow (demote) and merge the elements of two vectors.  Operands 1
       and 2 are vectors of the same mode having N integral or floating
       point elements of size S.  Operand 0 is the resulting vector in
       which 2*N elements of size S/2 are concatenated after narrowing
       them down using truncation.
  
! 'vec_pack_sbool_trunc_M'
       Narrow and merge the elements of two vectors.  Operands 1 and 2 are
       vectors of the same type having N boolean elements.  Operand 0 is
       the resulting vector in which 2*N elements are concatenated.  The
       last operand (operand 3) is the number of elements in the output
!      vector 2*N as a 'CONST_INT'.  This instruction pattern is used when
       all the vector input and output operands have the same scalar mode
!      M and thus using 'vec_pack_trunc_M' would be ambiguous.
  
! 'vec_pack_ssat_M', 'vec_pack_usat_M'
       Narrow (demote) and merge the elements of two vectors.  Operands 1
       and 2 are vectors of the same mode having N integral elements of
       size S. Operand 0 is the resulting vector in which the elements of
       the two input vectors are concatenated after narrowing them down
       using signed/unsigned saturating arithmetic.
  
! 'vec_pack_sfix_trunc_M', 'vec_pack_ufix_trunc_M'
       Narrow, convert to signed/unsigned integral type and merge the
       elements of two vectors.  Operands 1 and 2 are vectors of the same
       mode having N floating point elements of size S.  Operand 0 is the
       resulting vector in which 2*N elements of size S/2 are
       concatenated.
  
! 'vec_packs_float_M', 'vec_packu_float_M'
       Narrow, convert to floating point type and merge the elements of
       two vectors.  Operands 1 and 2 are vectors of the same mode having
       N signed/unsigned integral elements of size S.  Operand 0 is the
       resulting vector in which 2*N elements of size S/2 are
       concatenated.
  
! 'vec_unpacks_hi_M', 'vec_unpacks_lo_M'
       Extract and widen (promote) the high/low part of a vector of signed
       integral or floating point elements.  The input vector (operand 1)
       has N elements of size S.  Widen (promote) the high/low elements of
       the vector using signed or floating point extension and place the
       resulting N/2 values of size 2*S in the output vector (operand 0).
  
! 'vec_unpacku_hi_M', 'vec_unpacku_lo_M'
       Extract and widen (promote) the high/low part of a vector of
       unsigned integral elements.  The input vector (operand 1) has N
       elements of size S. Widen (promote) the high/low elements of the
       vector using zero extension and place the resulting N/2 values of
       size 2*S in the output vector (operand 0).
  
! 'vec_unpacks_sbool_hi_M', 'vec_unpacks_sbool_lo_M'
       Extract the high/low part of a vector of boolean elements that have
       scalar mode M.  The input vector (operand 1) has N elements, the
       output vector (operand 0) has N/2 elements.  The last operand
       (operand 2) is the number of elements of the input vector N as a
!      'CONST_INT'.  These patterns are used if both the input and output
       vectors have the same scalar mode M and thus using
!      'vec_unpacks_hi_M' or 'vec_unpacks_lo_M' would be ambiguous.
  
! 'vec_unpacks_float_hi_M', 'vec_unpacks_float_lo_M'
! 'vec_unpacku_float_hi_M', 'vec_unpacku_float_lo_M'
       Extract, convert to floating point type and widen the high/low part
       of a vector of signed/unsigned integral elements.  The input vector
       (operand 1) has N elements of size S.  Convert the high/low
--- 27969,28094 ----
       0, which is of the same mode as operand 3.  M is the mode of
       operand 1 and operand 2.
  
! â€˜widen_ssumM3â€™
! â€˜widen_usumM3â€™
       Operands 0 and 2 are of the same mode, which is wider than the mode
       of operand 1.  Add operand 1 to operand 2 and place the widened
       result in operand 0.  (This is used express accumulation of
       elements into an accumulator of a wider mode.)  M is the mode of
       operand 1.
  
! â€˜smulhsM3â€™
! â€˜umulhsM3â€™
       Signed/unsigned multiply high with scale.  This is equivalent to
       the C code:
            narrow op0, op1, op2;
            ...
            op0 = (narrow) (((wide) op1 * (wide) op2) >> (N / 2 - 1));
!      where the sign of â€˜narrowâ€™ determines whether this is a signed or
!      unsigned operation, and N is the size of â€˜wideâ€™ in bits.  M is the
       mode for all 3 operands (narrow).  The wide mode is not specified
       and is defined to fit the whole multiply.
  
! â€˜smulhrsM3â€™
! â€˜umulhrsM3â€™
       Signed/unsigned multiply high with round and scale.  This is
       equivalent to the C code:
            narrow op0, op1, op2;
            ...
            op0 = (narrow) (((((wide) op1 * (wide) op2) >> (N / 2 - 2)) + 1) >> 1);
!      where the sign of â€˜narrowâ€™ determines whether this is a signed or
!      unsigned operation, and N is the size of â€˜wideâ€™ in bits.  M is the
       mode for all 3 operands (narrow).  The wide mode is not specified
       and is defined to fit the whole multiply.
  
! â€˜sdiv_pow2M3â€™
! â€˜sdiv_pow2M3â€™
       Signed division by power-of-2 immediate.  Equivalent to:
            signed op0, op1;
            ...
            op0 = op1 / (1 << imm);
  
! â€˜vec_shl_insert_Mâ€™
       Shift the elements in vector input operand 1 left one element (i.e.
       away from element 0) and fill the vacated element 0 with the scalar
       in operand 2.  Store the result in vector output operand 0.
       Operands 0 and 1 have mode M and operand 2 has the mode appropriate
       for one element of M.
  
! â€˜vec_shl_Mâ€™
       Whole vector left shift in bits, i.e. away from element 0.  Operand
       1 is a vector to be shifted.  Operand 2 is an integer shift amount
       in bits.  Operand 0 is where the resulting shifted vector is
       stored.  The output and input vectors should have the same modes.
  
! â€˜vec_shr_Mâ€™
       Whole vector right shift in bits, i.e. towards element 0.  Operand
       1 is a vector to be shifted.  Operand 2 is an integer shift amount
       in bits.  Operand 0 is where the resulting shifted vector is
       stored.  The output and input vectors should have the same modes.
  
! â€˜vec_pack_trunc_Mâ€™
       Narrow (demote) and merge the elements of two vectors.  Operands 1
       and 2 are vectors of the same mode having N integral or floating
       point elements of size S.  Operand 0 is the resulting vector in
       which 2*N elements of size S/2 are concatenated after narrowing
       them down using truncation.
  
! â€˜vec_pack_sbool_trunc_Mâ€™
       Narrow and merge the elements of two vectors.  Operands 1 and 2 are
       vectors of the same type having N boolean elements.  Operand 0 is
       the resulting vector in which 2*N elements are concatenated.  The
       last operand (operand 3) is the number of elements in the output
!      vector 2*N as a â€˜CONST_INTâ€™.  This instruction pattern is used when
       all the vector input and output operands have the same scalar mode
!      M and thus using â€˜vec_pack_trunc_Mâ€™ would be ambiguous.
  
! â€˜vec_pack_ssat_Mâ€™, â€˜vec_pack_usat_Mâ€™
       Narrow (demote) and merge the elements of two vectors.  Operands 1
       and 2 are vectors of the same mode having N integral elements of
       size S. Operand 0 is the resulting vector in which the elements of
       the two input vectors are concatenated after narrowing them down
       using signed/unsigned saturating arithmetic.
  
! â€˜vec_pack_sfix_trunc_Mâ€™, â€˜vec_pack_ufix_trunc_Mâ€™
       Narrow, convert to signed/unsigned integral type and merge the
       elements of two vectors.  Operands 1 and 2 are vectors of the same
       mode having N floating point elements of size S.  Operand 0 is the
       resulting vector in which 2*N elements of size S/2 are
       concatenated.
  
! â€˜vec_packs_float_Mâ€™, â€˜vec_packu_float_Mâ€™
       Narrow, convert to floating point type and merge the elements of
       two vectors.  Operands 1 and 2 are vectors of the same mode having
       N signed/unsigned integral elements of size S.  Operand 0 is the
       resulting vector in which 2*N elements of size S/2 are
       concatenated.
  
! â€˜vec_unpacks_hi_Mâ€™, â€˜vec_unpacks_lo_Mâ€™
       Extract and widen (promote) the high/low part of a vector of signed
       integral or floating point elements.  The input vector (operand 1)
       has N elements of size S.  Widen (promote) the high/low elements of
       the vector using signed or floating point extension and place the
       resulting N/2 values of size 2*S in the output vector (operand 0).
  
! â€˜vec_unpacku_hi_Mâ€™, â€˜vec_unpacku_lo_Mâ€™
       Extract and widen (promote) the high/low part of a vector of
       unsigned integral elements.  The input vector (operand 1) has N
       elements of size S. Widen (promote) the high/low elements of the
       vector using zero extension and place the resulting N/2 values of
       size 2*S in the output vector (operand 0).
  
! â€˜vec_unpacks_sbool_hi_Mâ€™, â€˜vec_unpacks_sbool_lo_Mâ€™
       Extract the high/low part of a vector of boolean elements that have
       scalar mode M.  The input vector (operand 1) has N elements, the
       output vector (operand 0) has N/2 elements.  The last operand
       (operand 2) is the number of elements of the input vector N as a
!      â€˜CONST_INTâ€™.  These patterns are used if both the input and output
       vectors have the same scalar mode M and thus using
!      â€˜vec_unpacks_hi_Mâ€™ or â€˜vec_unpacks_lo_Mâ€™ would be ambiguous.
  
! â€˜vec_unpacks_float_hi_Mâ€™, â€˜vec_unpacks_float_lo_Mâ€™
! â€˜vec_unpacku_float_hi_Mâ€™, â€˜vec_unpacku_float_lo_Mâ€™
       Extract, convert to floating point type and widen the high/low part
       of a vector of signed/unsigned integral elements.  The input vector
       (operand 1) has N elements of size S.  Convert the high/low
*************** pattern to accomplish a certain task.
*** 28092,28111 ****
       the resulting N/2 values of size 2*S in the output vector (operand
       0).
  
! 'vec_unpack_sfix_trunc_hi_M',
! 'vec_unpack_sfix_trunc_lo_M'
! 'vec_unpack_ufix_trunc_hi_M'
! 'vec_unpack_ufix_trunc_lo_M'
       Extract, convert to signed/unsigned integer type and widen the
       high/low part of a vector of floating point elements.  The input
       vector (operand 1) has N elements of size S.  Convert the high/low
       elements of the vector to integers and place the resulting N/2
       values of size 2*S in the output vector (operand 0).
  
! 'vec_widen_umult_hi_M', 'vec_widen_umult_lo_M'
! 'vec_widen_smult_hi_M', 'vec_widen_smult_lo_M'
! 'vec_widen_umult_even_M', 'vec_widen_umult_odd_M'
! 'vec_widen_smult_even_M', 'vec_widen_smult_odd_M'
       Signed/Unsigned widening multiplication.  The two inputs (operands
       1 and 2) are vectors with N signed/unsigned elements of size S.
       Multiply the high/low or even/odd elements of the two vectors, and
--- 28096,28115 ----
       the resulting N/2 values of size 2*S in the output vector (operand
       0).
  
! â€˜vec_unpack_sfix_trunc_hi_Mâ€™,
! â€˜vec_unpack_sfix_trunc_lo_Mâ€™
! â€˜vec_unpack_ufix_trunc_hi_Mâ€™
! â€˜vec_unpack_ufix_trunc_lo_Mâ€™
       Extract, convert to signed/unsigned integer type and widen the
       high/low part of a vector of floating point elements.  The input
       vector (operand 1) has N elements of size S.  Convert the high/low
       elements of the vector to integers and place the resulting N/2
       values of size 2*S in the output vector (operand 0).
  
! â€˜vec_widen_umult_hi_Mâ€™, â€˜vec_widen_umult_lo_Mâ€™
! â€˜vec_widen_smult_hi_Mâ€™, â€˜vec_widen_smult_lo_Mâ€™
! â€˜vec_widen_umult_even_Mâ€™, â€˜vec_widen_umult_odd_Mâ€™
! â€˜vec_widen_smult_even_Mâ€™, â€˜vec_widen_smult_odd_Mâ€™
       Signed/Unsigned widening multiplication.  The two inputs (operands
       1 and 2) are vectors with N signed/unsigned elements of size S.
       Multiply the high/low or even/odd elements of the two vectors, and
*************** pattern to accomplish a certain task.
*** 28113,28290 ****
       A target shouldn't implement even/odd pattern pair if it is less
       efficient than lo/hi one.
  
! 'vec_widen_ushiftl_hi_M', 'vec_widen_ushiftl_lo_M'
! 'vec_widen_sshiftl_hi_M', 'vec_widen_sshiftl_lo_M'
       Signed/Unsigned widening shift left.  The first input (operand 1)
       is a vector with N signed/unsigned elements of size S.  Operand 2
       is a constant.  Shift the high/low elements of operand 1, and put
       the N/2 results of size 2*S in the output vector (operand 0).
  
! 'vec_widen_uaddl_hi_M', 'vec_widen_uaddl_lo_M'
! 'vec_widen_saddl_hi_M', 'vec_widen_saddl_lo_M'
       Signed/Unsigned widening add long.  Operands 1 and 2 are vectors
       with N signed/unsigned elements of size S.  Add the high/low
       elements of 1 and 2 together, widen the resulting elements and put
       the N/2 results of size 2*S in the output vector (operand 0).
  
! 'vec_widen_usubl_hi_M', 'vec_widen_usubl_lo_M'
! 'vec_widen_ssubl_hi_M', 'vec_widen_ssubl_lo_M'
       Signed/Unsigned widening subtract long.  Operands 1 and 2 are
       vectors with N signed/unsigned elements of size S.  Subtract the
       high/low elements of 2 from 1 and widen the resulting elements.
       Put the N/2 results of size 2*S in the output vector (operand 0).
  
! 'vec_widen_uabd_hi_M', 'vec_widen_uabd_lo_M'
! 'vec_widen_uabd_odd_M', 'vec_widen_uabd_even_M'
! 'vec_widen_sabd_hi_M', 'vec_widen_sabd_lo_M'
! 'vec_widen_sabd_odd_M', 'vec_widen_sabd_even_M'
       Signed/Unsigned widening absolute difference.  Operands 1 and 2 are
       vectors with N signed/unsigned elements of size S.  Find the
       absolute difference between operands 1 and 2 and widen the
       resulting elements.  Put the N/2 results of size 2*S in the output
       vector (operand 0).
  
! 'vec_addsubM3'
       Alternating subtract, add with even lanes doing subtract and odd
       lanes doing addition.  Operands 1 and 2 and the outout operand are
       vectors with mode M.
  
! 'vec_fmaddsubM4'
       Alternating multiply subtract, add with even lanes doing subtract
       and odd lanes doing addition of the third operand to the
       multiplication result of the first two operands.  Operands 1, 2 and
       3 and the outout operand are vectors with mode M.
  
! 'vec_fmsubaddM4'
       Alternating multiply add, subtract with even lanes doing addition
       and odd lanes doing subtraction of the third operand to the
       multiplication result of the first two operands.  Operands 1, 2 and
       3 and the outout operand are vectors with mode M.
  
!      These instructions are not allowed to 'FAIL'.
  
! 'mulhisi3'
!      Multiply operands 1 and 2, which have mode 'HImode', and store a
!      'SImode' product in operand 0.
  
! 'mulqihi3', 'mulsidi3'
       Similar widening-multiplication instructions of other widths.
  
! 'umulqihi3', 'umulhisi3', 'umulsidi3'
       Similar widening-multiplication instructions that do unsigned
       multiplication.
  
! 'usmulqihi3', 'usmulhisi3', 'usmulsidi3'
       Similar widening-multiplication instructions that interpret the
       first operand as unsigned and the second operand as signed, then do
       a signed multiplication.
  
! 'smulM3_highpart'
       Perform a signed multiplication of operands 1 and 2, which have
       mode M, and store the most significant half of the product in
       operand 0.  The least significant half of the product is discarded.
!      This may be represented in RTL using a 'smul_highpart' RTX
       expression.
  
! 'umulM3_highpart'
       Similar, but the multiplication is unsigned.  This may be
!      represented in RTL using an 'umul_highpart' RTX expression.
  
! 'maddMN4'
       Multiply operands 1 and 2, sign-extend them to mode N, add operand
       3, and store the result in operand 0.  Operands 1 and 2 have mode M
       and operands 0 and 3 have mode N.  Both modes must be integer or
       fixed-point modes and N must be twice the size of M.
  
!      In other words, 'maddMN4' is like 'mulMN3' except that it also adds
       operand 3.
  
!      These instructions are not allowed to 'FAIL'.
  
! 'umaddMN4'
!      Like 'maddMN4', but zero-extend the multiplication operands instead
       of sign-extending them.
  
! 'ssmaddMN4'
!      Like 'maddMN4', but all involved operations must be
       signed-saturating.
  
! 'usmaddMN4'
!      Like 'umaddMN4', but all involved operations must be
       unsigned-saturating.
  
! 'msubMN4'
       Multiply operands 1 and 2, sign-extend them to mode N, subtract the
       result from operand 3, and store the result in operand 0.  Operands
       1 and 2 have mode M and operands 0 and 3 have mode N.  Both modes
       must be integer or fixed-point modes and N must be twice the size
       of M.
  
!      In other words, 'msubMN4' is like 'mulMN3' except that it also
       subtracts the result from operand 3.
  
!      These instructions are not allowed to 'FAIL'.
  
! 'umsubMN4'
!      Like 'msubMN4', but zero-extend the multiplication operands instead
       of sign-extending them.
  
! 'ssmsubMN4'
!      Like 'msubMN4', but all involved operations must be
       signed-saturating.
  
! 'usmsubMN4'
!      Like 'umsubMN4', but all involved operations must be
       unsigned-saturating.
  
! 'divmodM4'
       Signed division that produces both a quotient and a remainder.
       Operand 1 is divided by operand 2 to produce a quotient stored in
       operand 0 and a remainder stored in operand 3.
  
       For machines with an instruction that produces both a quotient and
!      a remainder, provide a pattern for 'divmodM4' but do not provide
!      patterns for 'divM3' and 'modM3'.  This allows optimization in the
       relatively common case when both the quotient and remainder are
       computed.
  
       If an instruction that just produces a quotient or just a remainder
       exists and is more efficient than the instruction that produces
!      both, write the output routine of 'divmodM4' to call
!      'find_reg_note' and look for a 'REG_UNUSED' note on the quotient or
       remainder and generate the appropriate instruction.
  
! 'udivmodM4'
       Similar, but does unsigned division.
  
! 'ashlM3', 'ssashlM3', 'usashlM3'
       Arithmetic-shift operand 1 left by a number of bits specified by
       operand 2, and store the result in operand 0.  Here M is the mode
       of operand 0 and operand 1; operand 2's mode is specified by the
       instruction pattern, and the compiler will convert the operand to
       that mode before generating the instruction.  The shift or rotate
       expander or instruction pattern should explicitly specify the mode
!      of the operand 2, it should never be 'VOIDmode'.  The meaning of
       out-of-range shift counts can optionally be specified by
!      'TARGET_SHIFT_TRUNCATION_MASK'.  *Note
       TARGET_SHIFT_TRUNCATION_MASK::.  Operand 2 is always a scalar type.
  
! 'ashrM3', 'lshrM3', 'rotlM3', 'rotrM3'
!      Other shift and rotate instructions, analogous to the 'ashlM3'
       instructions.  Operand 2 is always a scalar type.
  
! 'vashlM3', 'vashrM3', 'vlshrM3', 'vrotlM3', 'vrotrM3'
       Vector shift and rotate instructions that take vectors as operand 2
       instead of a scalar type.
  
! 'uabdM', 'sabdM'
       Signed and unsigned absolute difference instructions.  These
       instructions find the difference between operands 1 and 2 then
       return the absolute value.  A C code equivalent would be:
            op0 = op1 > op2 ? op1 - op2 : op2 - op1;
  
! 'avgM3_floor'
! 'uavgM3_floor'
       Signed and unsigned average instructions.  These instructions add
       operands 1 and 2 without truncation, divide the result by 2, round
       towards -Inf, and store the result in operand 0.  This is
--- 28117,28294 ----
       A target shouldn't implement even/odd pattern pair if it is less
       efficient than lo/hi one.
  
! â€˜vec_widen_ushiftl_hi_Mâ€™, â€˜vec_widen_ushiftl_lo_Mâ€™
! â€˜vec_widen_sshiftl_hi_Mâ€™, â€˜vec_widen_sshiftl_lo_Mâ€™
       Signed/Unsigned widening shift left.  The first input (operand 1)
       is a vector with N signed/unsigned elements of size S.  Operand 2
       is a constant.  Shift the high/low elements of operand 1, and put
       the N/2 results of size 2*S in the output vector (operand 0).
  
! â€˜vec_widen_uaddl_hi_Mâ€™, â€˜vec_widen_uaddl_lo_Mâ€™
! â€˜vec_widen_saddl_hi_Mâ€™, â€˜vec_widen_saddl_lo_Mâ€™
       Signed/Unsigned widening add long.  Operands 1 and 2 are vectors
       with N signed/unsigned elements of size S.  Add the high/low
       elements of 1 and 2 together, widen the resulting elements and put
       the N/2 results of size 2*S in the output vector (operand 0).
  
! â€˜vec_widen_usubl_hi_Mâ€™, â€˜vec_widen_usubl_lo_Mâ€™
! â€˜vec_widen_ssubl_hi_Mâ€™, â€˜vec_widen_ssubl_lo_Mâ€™
       Signed/Unsigned widening subtract long.  Operands 1 and 2 are
       vectors with N signed/unsigned elements of size S.  Subtract the
       high/low elements of 2 from 1 and widen the resulting elements.
       Put the N/2 results of size 2*S in the output vector (operand 0).
  
! â€˜vec_widen_uabd_hi_Mâ€™, â€˜vec_widen_uabd_lo_Mâ€™
! â€˜vec_widen_uabd_odd_Mâ€™, â€˜vec_widen_uabd_even_Mâ€™
! â€˜vec_widen_sabd_hi_Mâ€™, â€˜vec_widen_sabd_lo_Mâ€™
! â€˜vec_widen_sabd_odd_Mâ€™, â€˜vec_widen_sabd_even_Mâ€™
       Signed/Unsigned widening absolute difference.  Operands 1 and 2 are
       vectors with N signed/unsigned elements of size S.  Find the
       absolute difference between operands 1 and 2 and widen the
       resulting elements.  Put the N/2 results of size 2*S in the output
       vector (operand 0).
  
! â€˜vec_addsubM3â€™
       Alternating subtract, add with even lanes doing subtract and odd
       lanes doing addition.  Operands 1 and 2 and the outout operand are
       vectors with mode M.
  
! â€˜vec_fmaddsubM4â€™
       Alternating multiply subtract, add with even lanes doing subtract
       and odd lanes doing addition of the third operand to the
       multiplication result of the first two operands.  Operands 1, 2 and
       3 and the outout operand are vectors with mode M.
  
! â€˜vec_fmsubaddM4â€™
       Alternating multiply add, subtract with even lanes doing addition
       and odd lanes doing subtraction of the third operand to the
       multiplication result of the first two operands.  Operands 1, 2 and
       3 and the outout operand are vectors with mode M.
  
!      These instructions are not allowed to â€˜FAILâ€™.
  
! â€˜mulhisi3â€™
!      Multiply operands 1 and 2, which have mode â€˜HImodeâ€™, and store a
!      â€˜SImodeâ€™ product in operand 0.
  
! â€˜mulqihi3â€™, â€˜mulsidi3â€™
       Similar widening-multiplication instructions of other widths.
  
! â€˜umulqihi3â€™, â€˜umulhisi3â€™, â€˜umulsidi3â€™
       Similar widening-multiplication instructions that do unsigned
       multiplication.
  
! â€˜usmulqihi3â€™, â€˜usmulhisi3â€™, â€˜usmulsidi3â€™
       Similar widening-multiplication instructions that interpret the
       first operand as unsigned and the second operand as signed, then do
       a signed multiplication.
  
! â€˜smulM3_highpartâ€™
       Perform a signed multiplication of operands 1 and 2, which have
       mode M, and store the most significant half of the product in
       operand 0.  The least significant half of the product is discarded.
!      This may be represented in RTL using a â€˜smul_highpartâ€™ RTX
       expression.
  
! â€˜umulM3_highpartâ€™
       Similar, but the multiplication is unsigned.  This may be
!      represented in RTL using an â€˜umul_highpartâ€™ RTX expression.
  
! â€˜maddMN4â€™
       Multiply operands 1 and 2, sign-extend them to mode N, add operand
       3, and store the result in operand 0.  Operands 1 and 2 have mode M
       and operands 0 and 3 have mode N.  Both modes must be integer or
       fixed-point modes and N must be twice the size of M.
  
!      In other words, â€˜maddMN4â€™ is like â€˜mulMN3â€™ except that it also adds
       operand 3.
  
!      These instructions are not allowed to â€˜FAILâ€™.
  
! â€˜umaddMN4â€™
!      Like â€˜maddMN4â€™, but zero-extend the multiplication operands instead
       of sign-extending them.
  
! â€˜ssmaddMN4â€™
!      Like â€˜maddMN4â€™, but all involved operations must be
       signed-saturating.
  
! â€˜usmaddMN4â€™
!      Like â€˜umaddMN4â€™, but all involved operations must be
       unsigned-saturating.
  
! â€˜msubMN4â€™
       Multiply operands 1 and 2, sign-extend them to mode N, subtract the
       result from operand 3, and store the result in operand 0.  Operands
       1 and 2 have mode M and operands 0 and 3 have mode N.  Both modes
       must be integer or fixed-point modes and N must be twice the size
       of M.
  
!      In other words, â€˜msubMN4â€™ is like â€˜mulMN3â€™ except that it also
       subtracts the result from operand 3.
  
!      These instructions are not allowed to â€˜FAILâ€™.
  
! â€˜umsubMN4â€™
!      Like â€˜msubMN4â€™, but zero-extend the multiplication operands instead
       of sign-extending them.
  
! â€˜ssmsubMN4â€™
!      Like â€˜msubMN4â€™, but all involved operations must be
       signed-saturating.
  
! â€˜usmsubMN4â€™
!      Like â€˜umsubMN4â€™, but all involved operations must be
       unsigned-saturating.
  
! â€˜divmodM4â€™
       Signed division that produces both a quotient and a remainder.
       Operand 1 is divided by operand 2 to produce a quotient stored in
       operand 0 and a remainder stored in operand 3.
  
       For machines with an instruction that produces both a quotient and
!      a remainder, provide a pattern for â€˜divmodM4â€™ but do not provide
!      patterns for â€˜divM3â€™ and â€˜modM3â€™.  This allows optimization in the
       relatively common case when both the quotient and remainder are
       computed.
  
       If an instruction that just produces a quotient or just a remainder
       exists and is more efficient than the instruction that produces
!      both, write the output routine of â€˜divmodM4â€™ to call
!      â€˜find_reg_noteâ€™ and look for a â€˜REG_UNUSEDâ€™ note on the quotient or
       remainder and generate the appropriate instruction.
  
! â€˜udivmodM4â€™
       Similar, but does unsigned division.
  
! â€˜ashlM3â€™, â€˜ssashlM3â€™, â€˜usashlM3â€™
       Arithmetic-shift operand 1 left by a number of bits specified by
       operand 2, and store the result in operand 0.  Here M is the mode
       of operand 0 and operand 1; operand 2's mode is specified by the
       instruction pattern, and the compiler will convert the operand to
       that mode before generating the instruction.  The shift or rotate
       expander or instruction pattern should explicitly specify the mode
!      of the operand 2, it should never be â€˜VOIDmodeâ€™.  The meaning of
       out-of-range shift counts can optionally be specified by
!      â€˜TARGET_SHIFT_TRUNCATION_MASKâ€™.  *Note
       TARGET_SHIFT_TRUNCATION_MASK::.  Operand 2 is always a scalar type.
  
! â€˜ashrM3â€™, â€˜lshrM3â€™, â€˜rotlM3â€™, â€˜rotrM3â€™
!      Other shift and rotate instructions, analogous to the â€˜ashlM3â€™
       instructions.  Operand 2 is always a scalar type.
  
! â€˜vashlM3â€™, â€˜vashrM3â€™, â€˜vlshrM3â€™, â€˜vrotlM3â€™, â€˜vrotrM3â€™
       Vector shift and rotate instructions that take vectors as operand 2
       instead of a scalar type.
  
! â€˜uabdMâ€™, â€˜sabdMâ€™
       Signed and unsigned absolute difference instructions.  These
       instructions find the difference between operands 1 and 2 then
       return the absolute value.  A C code equivalent would be:
            op0 = op1 > op2 ? op1 - op2 : op2 - op1;
  
! â€˜avgM3_floorâ€™
! â€˜uavgM3_floorâ€™
       Signed and unsigned average instructions.  These instructions add
       operands 1 and 2 without truncation, divide the result by 2, round
       towards -Inf, and store the result in operand 0.  This is
*************** pattern to accomplish a certain task.
*** 28292,28625 ****
            narrow op0, op1, op2;
            ...
            op0 = (narrow) (((wide) op1 + (wide) op2) >> 1);
!      where the sign of 'narrow' determines whether this is a signed or
       unsigned operation.
  
! 'avgM3_ceil'
! 'uavgM3_ceil'
!      Like 'avgM3_floor' and 'uavgM3_floor', but round towards +Inf.
       This is equivalent to the C code:
            narrow op0, op1, op2;
            ...
            op0 = (narrow) (((wide) op1 + (wide) op2 + 1) >> 1);
  
! 'bswapM2'
       Reverse the order of bytes of operand 1 and store the result in
       operand 0.
  
! 'negM2', 'ssnegM2', 'usnegM2'
       Negate operand 1 and store the result in operand 0.
  
! 'negvM3'
!      Like 'negM2' but takes a 'code_label' as operand 2 and emits code
       to jump to it if signed overflow occurs during the negation.
  
! 'absM2'
       Store the absolute value of operand 1 into operand 0.
  
! 'sqrtM2'
       Store the square root of operand 1 into operand 0.  Both operands
       have mode M, which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'rsqrtM2'
       Store the reciprocal of the square root of operand 1 into operand
       0.  Both operands have mode M, which is a scalar or vector
       floating-point mode.
  
       On most architectures this pattern is only approximate, so either
!      its C condition or the 'TARGET_OPTAB_SUPPORTED_P' hook should check
       for the appropriate math flags.  (Using the C condition is more
!      direct, but using 'TARGET_OPTAB_SUPPORTED_P' can be useful if a
!      target-specific built-in also uses the 'rsqrtM2' pattern.)
  
!      This pattern is not allowed to 'FAIL'.
  
! 'fmodM3'
       Store the remainder of dividing operand 1 by operand 2 into operand
       0, rounded towards zero to an integer.  All operands have mode M,
       which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'remainderM3'
       Store the remainder of dividing operand 1 by operand 2 into operand
       0, rounded to the nearest integer.  All operands have mode M, which
       is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'scalbM3'
!      Raise 'FLT_RADIX' to the power of operand 2, multiply it by operand
       1, and store the result in operand 0.  All operands have mode M,
       which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'ldexpM3'
       Raise 2 to the power of operand 2, multiply it by operand 1, and
       store the result in operand 0.  Operands 0 and 1 have mode M, which
       is a scalar or vector floating-point mode.  Operand 2's mode has
       the same number of elements as M and each element is wide enough to
!      store an 'int'.  The integers are signed.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'cosM2'
       Store the cosine of operand 1 into operand 0.  Both operands have
       mode M, which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'sinM2'
       Store the sine of operand 1 into operand 0.  Both operands have
       mode M, which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'sincosM3'
       Store the cosine of operand 2 into operand 0 and the sine of
       operand 2 into operand 1.  All operands have mode M, which is a
       scalar or vector floating-point mode.
  
       Targets that can calculate the sine and cosine simultaneously can
       implement this pattern as opposed to implementing individual
!      'sinM2' and 'cosM2' patterns.  The 'sin' and 'cos' built-in
!      functions will then be expanded to the 'sincosM3' pattern, with one
       of the output values left unused.
  
! 'tanM2'
       Store the tangent of operand 1 into operand 0.  Both operands have
       mode M, which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'asinM2'
       Store the arc sine of operand 1 into operand 0.  Both operands have
       mode M, which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'acosM2'
       Store the arc cosine of operand 1 into operand 0.  Both operands
       have mode M, which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'atanM2'
       Store the arc tangent of operand 1 into operand 0.  Both operands
       have mode M, which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'fegetroundM'
       Store the current machine floating-point rounding mode into operand
       0.  Operand 0 has mode M, which is scalar.  This pattern is used to
!      implement the 'fegetround' function from the ISO C99 standard.
  
! 'feclearexceptM'
! 'feraiseexceptM'
       Clears or raises the supported machine floating-point exceptions
       represented by the bits in operand 1.  Error status is stored as
       nonzero value in operand 0.  Both operands have mode M, which is a
!      scalar.  These patterns are used to implement the 'feclearexcept'
!      and 'feraiseexcept' functions from the ISO C99 standard.
  
! 'expM2'
       Raise e (the base of natural logarithms) to the power of operand 1
       and store the result in operand 0.  Both operands have mode M,
       which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'expm1M2'
       Raise e (the base of natural logarithms) to the power of operand 1,
       subtract 1, and store the result in operand 0.  Both operands have
       mode M, which is a scalar or vector floating-point mode.
  
       For inputs close to zero, the pattern is expected to be more
!      accurate than a separate 'expM2' and 'subM3' would be.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'exp10M2'
       Raise 10 to the power of operand 1 and store the result in operand
       0.  Both operands have mode M, which is a scalar or vector
       floating-point mode.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'exp2M2'
       Raise 2 to the power of operand 1 and store the result in operand
       0.  Both operands have mode M, which is a scalar or vector
       floating-point mode.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'logM2'
       Store the natural logarithm of operand 1 into operand 0.  Both
       operands have mode M, which is a scalar or vector floating-point
       mode.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'log1pM2'
       Add 1 to operand 1, compute the natural logarithm, and store the
       result in operand 0.  Both operands have mode M, which is a scalar
       or vector floating-point mode.
  
       For inputs close to zero, the pattern is expected to be more
!      accurate than a separate 'addM3' and 'logM2' would be.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'log10M2'
       Store the base-10 logarithm of operand 1 into operand 0.  Both
       operands have mode M, which is a scalar or vector floating-point
       mode.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'log2M2'
       Store the base-2 logarithm of operand 1 into operand 0.  Both
       operands have mode M, which is a scalar or vector floating-point
       mode.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'logbM2'
!      Store the base-'FLT_RADIX' logarithm of operand 1 into operand 0.
       Both operands have mode M, which is a scalar or vector
       floating-point mode.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'signbitM2'
       Store the sign bit of floating-point operand 1 in operand 0.  M is
       either a scalar or vector mode.  When it is a scalar, operand 1 has
!      mode M but operand 0 must have mode 'SImode'.  When M is a vector,
       operand 1 has the mode M.  operand 0's mode should be an vector
       integer mode which has the same number of elements and the same
       size as mode M.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'significandM2'
       Store the significand of floating-point operand 1 in operand 0.
       Both operands have mode M, which is a scalar or vector
       floating-point mode.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'powM3'
       Store the value of operand 1 raised to the exponent operand 2 into
       operand 0.  All operands have mode M, which is a scalar or vector
       floating-point mode.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'atan2M3'
       Store the arc tangent (inverse tangent) of operand 1 divided by
       operand 2 into operand 0, using the signs of both arguments to
       determine the quadrant of the result.  All operands have mode M,
       which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'floorM2'
       Store the largest integral value not greater than operand 1 in
       operand 0.  Both operands have mode M, which is a scalar or vector
!      floating-point mode.  If '-ffp-int-builtin-inexact' is in effect,
       the "inexact" exception may be raised for noninteger operands;
       otherwise, it may not.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'btruncM2'
       Round operand 1 to an integer, towards zero, and store the result
       in operand 0.  Both operands have mode M, which is a scalar or
!      vector floating-point mode.  If '-ffp-int-builtin-inexact' is in
       effect, the "inexact" exception may be raised for noninteger
       operands; otherwise, it may not.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'roundM2'
       Round operand 1 to the nearest integer, rounding away from zero in
       the event of a tie, and store the result in operand 0.  Both
       operands have mode M, which is a scalar or vector floating-point
!      mode.  If '-ffp-int-builtin-inexact' is in effect, the "inexact"
       exception may be raised for noninteger operands; otherwise, it may
       not.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'ceilM2'
       Store the smallest integral value not less than operand 1 in
       operand 0.  Both operands have mode M, which is a scalar or vector
!      floating-point mode.  If '-ffp-int-builtin-inexact' is in effect,
       the "inexact" exception may be raised for noninteger operands;
       otherwise, it may not.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'nearbyintM2'
       Round operand 1 to an integer, using the current rounding mode, and
       store the result in operand 0.  Do not raise an inexact condition
       when the result is different from the argument.  Both operands have
       mode M, which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'rintM2'
       Round operand 1 to an integer, using the current rounding mode, and
       store the result in operand 0.  Raise an inexact condition when the
       result is different from the argument.  Both operands have mode M,
       which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'lrintMN2'
       Convert operand 1 (valid for floating point mode M) to fixed point
       mode N as a signed number according to the current rounding mode
       and store in operand 0 (which has mode N).
  
! 'lroundMN2'
       Convert operand 1 (valid for floating point mode M) to fixed point
       mode N as a signed number rounding to nearest and away from zero
       and store in operand 0 (which has mode N).
  
! 'lfloorMN2'
       Convert operand 1 (valid for floating point mode M) to fixed point
       mode N as a signed number rounding down and store in operand 0
       (which has mode N).
  
! 'lceilMN2'
       Convert operand 1 (valid for floating point mode M) to fixed point
       mode N as a signed number rounding up and store in operand 0 (which
       has mode N).
  
! 'copysignM3'
       Store a value with the magnitude of operand 1 and the sign of
       operand 2 into operand 0.  All operands have mode M, which is a
       scalar or vector floating-point mode.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'xorsignM3'
!      Equivalent to 'op0 = op1 * copysign (1.0, op2)': store a value with
       the magnitude of operand 1 and the sign of operand 2 into operand
       0.  All operands have mode M, which is a scalar or vector
       floating-point mode.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'issignalingM2'
       Set operand 0 to 1 if operand 1 is a signaling NaN and to 0
       otherwise.
  
! 'cadd90M3'
       Perform vector add and subtract on even/odd number pairs.  The
       operation being matched is semantically described as
  
--- 28296,28629 ----
            narrow op0, op1, op2;
            ...
            op0 = (narrow) (((wide) op1 + (wide) op2) >> 1);
!      where the sign of â€˜narrowâ€™ determines whether this is a signed or
       unsigned operation.
  
! â€˜avgM3_ceilâ€™
! â€˜uavgM3_ceilâ€™
!      Like â€˜avgM3_floorâ€™ and â€˜uavgM3_floorâ€™, but round towards +Inf.
       This is equivalent to the C code:
            narrow op0, op1, op2;
            ...
            op0 = (narrow) (((wide) op1 + (wide) op2 + 1) >> 1);
  
! â€˜bswapM2â€™
       Reverse the order of bytes of operand 1 and store the result in
       operand 0.
  
! â€˜negM2â€™, â€˜ssnegM2â€™, â€˜usnegM2â€™
       Negate operand 1 and store the result in operand 0.
  
! â€˜negvM3â€™
!      Like â€˜negM2â€™ but takes a â€˜code_labelâ€™ as operand 2 and emits code
       to jump to it if signed overflow occurs during the negation.
  
! â€˜absM2â€™
       Store the absolute value of operand 1 into operand 0.
  
! â€˜sqrtM2â€™
       Store the square root of operand 1 into operand 0.  Both operands
       have mode M, which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜rsqrtM2â€™
       Store the reciprocal of the square root of operand 1 into operand
       0.  Both operands have mode M, which is a scalar or vector
       floating-point mode.
  
       On most architectures this pattern is only approximate, so either
!      its C condition or the â€˜TARGET_OPTAB_SUPPORTED_Pâ€™ hook should check
       for the appropriate math flags.  (Using the C condition is more
!      direct, but using â€˜TARGET_OPTAB_SUPPORTED_Pâ€™ can be useful if a
!      target-specific built-in also uses the â€˜rsqrtM2â€™ pattern.)
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜fmodM3â€™
       Store the remainder of dividing operand 1 by operand 2 into operand
       0, rounded towards zero to an integer.  All operands have mode M,
       which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜remainderM3â€™
       Store the remainder of dividing operand 1 by operand 2 into operand
       0, rounded to the nearest integer.  All operands have mode M, which
       is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜scalbM3â€™
!      Raise â€˜FLT_RADIXâ€™ to the power of operand 2, multiply it by operand
       1, and store the result in operand 0.  All operands have mode M,
       which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜ldexpM3â€™
       Raise 2 to the power of operand 2, multiply it by operand 1, and
       store the result in operand 0.  Operands 0 and 1 have mode M, which
       is a scalar or vector floating-point mode.  Operand 2's mode has
       the same number of elements as M and each element is wide enough to
!      store an â€˜intâ€™.  The integers are signed.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜cosM2â€™
       Store the cosine of operand 1 into operand 0.  Both operands have
       mode M, which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜sinM2â€™
       Store the sine of operand 1 into operand 0.  Both operands have
       mode M, which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜sincosM3â€™
       Store the cosine of operand 2 into operand 0 and the sine of
       operand 2 into operand 1.  All operands have mode M, which is a
       scalar or vector floating-point mode.
  
       Targets that can calculate the sine and cosine simultaneously can
       implement this pattern as opposed to implementing individual
!      â€˜sinM2â€™ and â€˜cosM2â€™ patterns.  The â€˜sinâ€™ and â€˜cosâ€™ built-in
!      functions will then be expanded to the â€˜sincosM3â€™ pattern, with one
       of the output values left unused.
  
! â€˜tanM2â€™
       Store the tangent of operand 1 into operand 0.  Both operands have
       mode M, which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜asinM2â€™
       Store the arc sine of operand 1 into operand 0.  Both operands have
       mode M, which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜acosM2â€™
       Store the arc cosine of operand 1 into operand 0.  Both operands
       have mode M, which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜atanM2â€™
       Store the arc tangent of operand 1 into operand 0.  Both operands
       have mode M, which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜fegetroundMâ€™
       Store the current machine floating-point rounding mode into operand
       0.  Operand 0 has mode M, which is scalar.  This pattern is used to
!      implement the â€˜fegetroundâ€™ function from the ISO C99 standard.
  
! â€˜feclearexceptMâ€™
! â€˜feraiseexceptMâ€™
       Clears or raises the supported machine floating-point exceptions
       represented by the bits in operand 1.  Error status is stored as
       nonzero value in operand 0.  Both operands have mode M, which is a
!      scalar.  These patterns are used to implement the â€˜feclearexceptâ€™
!      and â€˜feraiseexceptâ€™ functions from the ISO C99 standard.
  
! â€˜expM2â€™
       Raise e (the base of natural logarithms) to the power of operand 1
       and store the result in operand 0.  Both operands have mode M,
       which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜expm1M2â€™
       Raise e (the base of natural logarithms) to the power of operand 1,
       subtract 1, and store the result in operand 0.  Both operands have
       mode M, which is a scalar or vector floating-point mode.
  
       For inputs close to zero, the pattern is expected to be more
!      accurate than a separate â€˜expM2â€™ and â€˜subM3â€™ would be.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜exp10M2â€™
       Raise 10 to the power of operand 1 and store the result in operand
       0.  Both operands have mode M, which is a scalar or vector
       floating-point mode.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜exp2M2â€™
       Raise 2 to the power of operand 1 and store the result in operand
       0.  Both operands have mode M, which is a scalar or vector
       floating-point mode.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜logM2â€™
       Store the natural logarithm of operand 1 into operand 0.  Both
       operands have mode M, which is a scalar or vector floating-point
       mode.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜log1pM2â€™
       Add 1 to operand 1, compute the natural logarithm, and store the
       result in operand 0.  Both operands have mode M, which is a scalar
       or vector floating-point mode.
  
       For inputs close to zero, the pattern is expected to be more
!      accurate than a separate â€˜addM3â€™ and â€˜logM2â€™ would be.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜log10M2â€™
       Store the base-10 logarithm of operand 1 into operand 0.  Both
       operands have mode M, which is a scalar or vector floating-point
       mode.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜log2M2â€™
       Store the base-2 logarithm of operand 1 into operand 0.  Both
       operands have mode M, which is a scalar or vector floating-point
       mode.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜logbM2â€™
!      Store the base-â€˜FLT_RADIXâ€™ logarithm of operand 1 into operand 0.
       Both operands have mode M, which is a scalar or vector
       floating-point mode.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜signbitM2â€™
       Store the sign bit of floating-point operand 1 in operand 0.  M is
       either a scalar or vector mode.  When it is a scalar, operand 1 has
!      mode M but operand 0 must have mode â€˜SImodeâ€™.  When M is a vector,
       operand 1 has the mode M.  operand 0's mode should be an vector
       integer mode which has the same number of elements and the same
       size as mode M.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜significandM2â€™
       Store the significand of floating-point operand 1 in operand 0.
       Both operands have mode M, which is a scalar or vector
       floating-point mode.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜powM3â€™
       Store the value of operand 1 raised to the exponent operand 2 into
       operand 0.  All operands have mode M, which is a scalar or vector
       floating-point mode.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜atan2M3â€™
       Store the arc tangent (inverse tangent) of operand 1 divided by
       operand 2 into operand 0, using the signs of both arguments to
       determine the quadrant of the result.  All operands have mode M,
       which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜floorM2â€™
       Store the largest integral value not greater than operand 1 in
       operand 0.  Both operands have mode M, which is a scalar or vector
!      floating-point mode.  If â€˜-ffp-int-builtin-inexactâ€™ is in effect,
       the "inexact" exception may be raised for noninteger operands;
       otherwise, it may not.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜btruncM2â€™
       Round operand 1 to an integer, towards zero, and store the result
       in operand 0.  Both operands have mode M, which is a scalar or
!      vector floating-point mode.  If â€˜-ffp-int-builtin-inexactâ€™ is in
       effect, the "inexact" exception may be raised for noninteger
       operands; otherwise, it may not.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜roundM2â€™
       Round operand 1 to the nearest integer, rounding away from zero in
       the event of a tie, and store the result in operand 0.  Both
       operands have mode M, which is a scalar or vector floating-point
!      mode.  If â€˜-ffp-int-builtin-inexactâ€™ is in effect, the "inexact"
       exception may be raised for noninteger operands; otherwise, it may
       not.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜ceilM2â€™
       Store the smallest integral value not less than operand 1 in
       operand 0.  Both operands have mode M, which is a scalar or vector
!      floating-point mode.  If â€˜-ffp-int-builtin-inexactâ€™ is in effect,
       the "inexact" exception may be raised for noninteger operands;
       otherwise, it may not.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜nearbyintM2â€™
       Round operand 1 to an integer, using the current rounding mode, and
       store the result in operand 0.  Do not raise an inexact condition
       when the result is different from the argument.  Both operands have
       mode M, which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜rintM2â€™
       Round operand 1 to an integer, using the current rounding mode, and
       store the result in operand 0.  Raise an inexact condition when the
       result is different from the argument.  Both operands have mode M,
       which is a scalar or vector floating-point mode.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜lrintMN2â€™
       Convert operand 1 (valid for floating point mode M) to fixed point
       mode N as a signed number according to the current rounding mode
       and store in operand 0 (which has mode N).
  
! â€˜lroundMN2â€™
       Convert operand 1 (valid for floating point mode M) to fixed point
       mode N as a signed number rounding to nearest and away from zero
       and store in operand 0 (which has mode N).
  
! â€˜lfloorMN2â€™
       Convert operand 1 (valid for floating point mode M) to fixed point
       mode N as a signed number rounding down and store in operand 0
       (which has mode N).
  
! â€˜lceilMN2â€™
       Convert operand 1 (valid for floating point mode M) to fixed point
       mode N as a signed number rounding up and store in operand 0 (which
       has mode N).
  
! â€˜copysignM3â€™
       Store a value with the magnitude of operand 1 and the sign of
       operand 2 into operand 0.  All operands have mode M, which is a
       scalar or vector floating-point mode.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜xorsignM3â€™
!      Equivalent to â€˜op0 = op1 * copysign (1.0, op2)â€™: store a value with
       the magnitude of operand 1 and the sign of operand 2 into operand
       0.  All operands have mode M, which is a scalar or vector
       floating-point mode.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜issignalingM2â€™
       Set operand 0 to 1 if operand 1 is a signaling NaN and to 0
       otherwise.
  
! â€˜cadd90M3â€™
       Perform vector add and subtract on even/odd number pairs.  The
       operation being matched is semantically described as
  
*************** pattern to accomplish a certain task.
*** 28639,28647 ****
  
       The operation is only supported for vector modes M.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'cadd270M3'
       Perform vector add and subtract on even/odd number pairs.  The
       operation being matched is semantically described as
  
--- 28643,28651 ----
  
       The operation is only supported for vector modes M.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜cadd270M3â€™
       Perform vector add and subtract on even/odd number pairs.  The
       operation being matched is semantically described as
  
*************** pattern to accomplish a certain task.
*** 28661,28669 ****
  
       The operation is only supported for vector modes M.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'cmlaM4'
       Perform a vector multiply and accumulate that is semantically the
       same as a multiply and accumulate of complex numbers.
  
--- 28665,28673 ----
  
       The operation is only supported for vector modes M.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜cmlaM4â€™
       Perform a vector multiply and accumulate that is semantically the
       same as a multiply and accumulate of complex numbers.
  
*************** pattern to accomplish a certain task.
*** 28681,28689 ****
  
       The operation is only supported for vector modes M.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'cmla_conjM4'
       Perform a vector multiply by conjugate and accumulate that is
       semantically the same as a multiply and accumulate of complex
       numbers where the second multiply arguments is conjugated.
--- 28685,28693 ----
  
       The operation is only supported for vector modes M.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜cmla_conjM4â€™
       Perform a vector multiply by conjugate and accumulate that is
       semantically the same as a multiply and accumulate of complex
       numbers where the second multiply arguments is conjugated.
*************** pattern to accomplish a certain task.
*** 28702,28710 ****
  
       The operation is only supported for vector modes M.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'cmlsM4'
       Perform a vector multiply and subtract that is semantically the
       same as a multiply and subtract of complex numbers.
  
--- 28706,28714 ----
  
       The operation is only supported for vector modes M.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜cmlsM4â€™
       Perform a vector multiply and subtract that is semantically the
       same as a multiply and subtract of complex numbers.
  
*************** pattern to accomplish a certain task.
*** 28722,28730 ****
  
       The operation is only supported for vector modes M.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'cmls_conjM4'
       Perform a vector multiply by conjugate and subtract that is
       semantically the same as a multiply and subtract of complex numbers
       where the second multiply arguments is conjugated.
--- 28726,28734 ----
  
       The operation is only supported for vector modes M.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜cmls_conjM4â€™
       Perform a vector multiply by conjugate and subtract that is
       semantically the same as a multiply and subtract of complex numbers
       where the second multiply arguments is conjugated.
*************** pattern to accomplish a certain task.
*** 28743,28751 ****
  
       The operation is only supported for vector modes M.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'cmulM4'
       Perform a vector multiply that is semantically the same as multiply
       of complex numbers.
  
--- 28747,28755 ----
  
       The operation is only supported for vector modes M.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜cmulM4â€™
       Perform a vector multiply that is semantically the same as multiply
       of complex numbers.
  
*************** pattern to accomplish a certain task.
*** 28762,28770 ****
  
       The operation is only supported for vector modes M.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'cmul_conjM4'
       Perform a vector multiply by conjugate that is semantically the
       same as a multiply of complex numbers where the second multiply
       arguments is conjugated.
--- 28766,28774 ----
  
       The operation is only supported for vector modes M.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜cmul_conjM4â€™
       Perform a vector multiply by conjugate that is semantically the
       same as a multiply of complex numbers where the second multiply
       arguments is conjugated.
*************** pattern to accomplish a certain task.
*** 28782,28790 ****
  
       The operation is only supported for vector modes M.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'ffsM2'
       Store into operand 0 one plus the index of the least significant
       1-bit of operand 1.  If operand 1 is zero, store zero.
  
--- 28786,28794 ----
  
       The operation is only supported for vector modes M.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜ffsM2â€™
       Store into operand 0 one plus the index of the least significant
       1-bit of operand 1.  If operand 1 is zero, store zero.
  
*************** pattern to accomplish a certain task.
*** 28792,28803 ****
       operand 1 has mode M but operand 0 can have whatever scalar integer
       mode is suitable for the target.  The compiler will insert
       conversion instructions as necessary (typically to convert the
!      result to the same width as 'int').  When M is a vector, both
       operands must have mode M.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'clrsbM2'
       Count leading redundant sign bits.  Store into operand 0 the number
       of redundant sign bits in operand 1, starting at the most
       significant bit position.  A redundant sign bit is defined as any
--- 28796,28807 ----
       operand 1 has mode M but operand 0 can have whatever scalar integer
       mode is suitable for the target.  The compiler will insert
       conversion instructions as necessary (typically to convert the
!      result to the same width as â€˜intâ€™).  When M is a vector, both
       operands must have mode M.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜clrsbM2â€™
       Count leading redundant sign bits.  Store into operand 0 the number
       of redundant sign bits in operand 1, starting at the most
       significant bit position.  A redundant sign bit is defined as any
*************** pattern to accomplish a certain task.
*** 28808,28861 ****
       operand 1 has mode M but operand 0 can have whatever scalar integer
       mode is suitable for the target.  The compiler will insert
       conversion instructions as necessary (typically to convert the
!      result to the same width as 'int').  When M is a vector, both
       operands must have mode M.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'clzM2'
       Store into operand 0 the number of leading 0-bits in operand 1,
       starting at the most significant bit position.  If operand 1 is 0,
!      the 'CLZ_DEFINED_VALUE_AT_ZERO' (*note Misc::) macro defines if the
       result is undefined or has a useful value.
  
       M is either a scalar or vector integer mode.  When it is a scalar,
       operand 1 has mode M but operand 0 can have whatever scalar integer
       mode is suitable for the target.  The compiler will insert
       conversion instructions as necessary (typically to convert the
!      result to the same width as 'int').  When M is a vector, both
       operands must have mode M.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'ctzM2'
       Store into operand 0 the number of trailing 0-bits in operand 1,
       starting at the least significant bit position.  If operand 1 is 0,
!      the 'CTZ_DEFINED_VALUE_AT_ZERO' (*note Misc::) macro defines if the
       result is undefined or has a useful value.
  
       M is either a scalar or vector integer mode.  When it is a scalar,
       operand 1 has mode M but operand 0 can have whatever scalar integer
       mode is suitable for the target.  The compiler will insert
       conversion instructions as necessary (typically to convert the
!      result to the same width as 'int').  When M is a vector, both
       operands must have mode M.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'popcountM2'
       Store into operand 0 the number of 1-bits in operand 1.
  
       M is either a scalar or vector integer mode.  When it is a scalar,
       operand 1 has mode M but operand 0 can have whatever scalar integer
       mode is suitable for the target.  The compiler will insert
       conversion instructions as necessary (typically to convert the
!      result to the same width as 'int').  When M is a vector, both
       operands must have mode M.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'parityM2'
       Store into operand 0 the parity of operand 1, i.e. the number of
       1-bits in operand 1 modulo 2.
  
--- 28812,28865 ----
       operand 1 has mode M but operand 0 can have whatever scalar integer
       mode is suitable for the target.  The compiler will insert
       conversion instructions as necessary (typically to convert the
!      result to the same width as â€˜intâ€™).  When M is a vector, both
       operands must have mode M.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜clzM2â€™
       Store into operand 0 the number of leading 0-bits in operand 1,
       starting at the most significant bit position.  If operand 1 is 0,
!      the â€˜CLZ_DEFINED_VALUE_AT_ZEROâ€™ (*note Misc::) macro defines if the
       result is undefined or has a useful value.
  
       M is either a scalar or vector integer mode.  When it is a scalar,
       operand 1 has mode M but operand 0 can have whatever scalar integer
       mode is suitable for the target.  The compiler will insert
       conversion instructions as necessary (typically to convert the
!      result to the same width as â€˜intâ€™).  When M is a vector, both
       operands must have mode M.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜ctzM2â€™
       Store into operand 0 the number of trailing 0-bits in operand 1,
       starting at the least significant bit position.  If operand 1 is 0,
!      the â€˜CTZ_DEFINED_VALUE_AT_ZEROâ€™ (*note Misc::) macro defines if the
       result is undefined or has a useful value.
  
       M is either a scalar or vector integer mode.  When it is a scalar,
       operand 1 has mode M but operand 0 can have whatever scalar integer
       mode is suitable for the target.  The compiler will insert
       conversion instructions as necessary (typically to convert the
!      result to the same width as â€˜intâ€™).  When M is a vector, both
       operands must have mode M.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜popcountM2â€™
       Store into operand 0 the number of 1-bits in operand 1.
  
       M is either a scalar or vector integer mode.  When it is a scalar,
       operand 1 has mode M but operand 0 can have whatever scalar integer
       mode is suitable for the target.  The compiler will insert
       conversion instructions as necessary (typically to convert the
!      result to the same width as â€˜intâ€™).  When M is a vector, both
       operands must have mode M.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜parityM2â€™
       Store into operand 0 the parity of operand 1, i.e. the number of
       1-bits in operand 1 modulo 2.
  
*************** pattern to accomplish a certain task.
*** 28863,28892 ****
       operand 1 has mode M but operand 0 can have whatever scalar integer
       mode is suitable for the target.  The compiler will insert
       conversion instructions as necessary (typically to convert the
!      result to the same width as 'int').  When M is a vector, both
       operands must have mode M.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'one_cmplM2'
       Store the bitwise-complement of operand 1 into operand 0.
  
! 'cpymemM'
       Block copy instruction.  The destination and source blocks of
!      memory are the first two operands, and both are 'mem:BLK's with an
!      address in mode 'Pmode'.
  
       The number of bytes to copy is the third operand, in mode M.
!      Usually, you specify 'Pmode' for M.  However, if you can generate
       better code knowing the range of valid lengths is smaller than
       those representable in a full Pmode pointer, you should provide a
       pattern with a mode corresponding to the range of values you can
!      handle efficiently (e.g., 'QImode' for values in the range 0-127;
       note we avoid numbers that appear negative) and also a pattern with
!      'Pmode'.
  
       The fourth operand is the known shared alignment of the source and
!      destination, in the form of a 'const_int' rtx.  Thus, if the
       compiler knows that both source and destination are word-aligned,
       it may provide the value 4 for this operand.
  
--- 28867,28896 ----
       operand 1 has mode M but operand 0 can have whatever scalar integer
       mode is suitable for the target.  The compiler will insert
       conversion instructions as necessary (typically to convert the
!      result to the same width as â€˜intâ€™).  When M is a vector, both
       operands must have mode M.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜one_cmplM2â€™
       Store the bitwise-complement of operand 1 into operand 0.
  
! â€˜cpymemMâ€™
       Block copy instruction.  The destination and source blocks of
!      memory are the first two operands, and both are â€˜mem:BLKâ€™s with an
!      address in mode â€˜Pmodeâ€™.
  
       The number of bytes to copy is the third operand, in mode M.
!      Usually, you specify â€˜Pmodeâ€™ for M.  However, if you can generate
       better code knowing the range of valid lengths is smaller than
       those representable in a full Pmode pointer, you should provide a
       pattern with a mode corresponding to the range of values you can
!      handle efficiently (e.g., â€˜QImodeâ€™ for values in the range 0-127;
       note we avoid numbers that appear negative) and also a pattern with
!      â€˜Pmodeâ€™.
  
       The fourth operand is the known shared alignment of the source and
!      destination, in the form of a â€˜const_intâ€™ rtx.  Thus, if the
       compiler knows that both source and destination are word-aligned,
       it may provide the value 4 for this operand.
  
*************** pattern to accomplish a certain task.
*** 28895,28930 ****
       in operand 4 in a way that the blocks are not required to be
       aligned according to it in all cases.  This expected alignment is
       also in bytes, just like operand 4.  Expected size, when unknown,
!      is set to '(const_int -1)'.
  
!      Descriptions of multiple 'cpymemM' patterns can only be beneficial
       if the patterns for smaller modes have fewer restrictions on their
       first, second and fourth operands.  Note that the mode M in
!      'cpymemM' does not impose any restriction on the mode of
       individually copied data units in the block.
  
!      The 'cpymemM' patterns need not give special consideration to the
       possibility that the source and destination strings might overlap.
       An exception is the case where source and destination are equal,
       this case needs to be handled correctly.  These patterns are used
!      to do inline expansion of '__builtin_memcpy'.
  
! 'movmemM'
       Block move instruction.  The destination and source blocks of
!      memory are the first two operands, and both are 'mem:BLK's with an
!      address in mode 'Pmode'.
  
       The number of bytes to copy is the third operand, in mode M.
!      Usually, you specify 'Pmode' for M.  However, if you can generate
       better code knowing the range of valid lengths is smaller than
       those representable in a full Pmode pointer, you should provide a
       pattern with a mode corresponding to the range of values you can
!      handle efficiently (e.g., 'QImode' for values in the range 0-127;
       note we avoid numbers that appear negative) and also a pattern with
!      'Pmode'.
  
       The fourth operand is the known shared alignment of the source and
!      destination, in the form of a 'const_int' rtx.  Thus, if the
       compiler knows that both source and destination are word-aligned,
       it may provide the value 4 for this operand.
  
--- 28899,28934 ----
       in operand 4 in a way that the blocks are not required to be
       aligned according to it in all cases.  This expected alignment is
       also in bytes, just like operand 4.  Expected size, when unknown,
!      is set to â€˜(const_int -1)â€™.
  
!      Descriptions of multiple â€˜cpymemMâ€™ patterns can only be beneficial
       if the patterns for smaller modes have fewer restrictions on their
       first, second and fourth operands.  Note that the mode M in
!      â€˜cpymemMâ€™ does not impose any restriction on the mode of
       individually copied data units in the block.
  
!      The â€˜cpymemMâ€™ patterns need not give special consideration to the
       possibility that the source and destination strings might overlap.
       An exception is the case where source and destination are equal,
       this case needs to be handled correctly.  These patterns are used
!      to do inline expansion of â€˜__builtin_memcpyâ€™.
  
! â€˜movmemMâ€™
       Block move instruction.  The destination and source blocks of
!      memory are the first two operands, and both are â€˜mem:BLKâ€™s with an
!      address in mode â€˜Pmodeâ€™.
  
       The number of bytes to copy is the third operand, in mode M.
!      Usually, you specify â€˜Pmodeâ€™ for M.  However, if you can generate
       better code knowing the range of valid lengths is smaller than
       those representable in a full Pmode pointer, you should provide a
       pattern with a mode corresponding to the range of values you can
!      handle efficiently (e.g., â€˜QImodeâ€™ for values in the range 0-127;
       note we avoid numbers that appear negative) and also a pattern with
!      â€˜Pmodeâ€™.
  
       The fourth operand is the known shared alignment of the source and
!      destination, in the form of a â€˜const_intâ€™ rtx.  Thus, if the
       compiler knows that both source and destination are word-aligned,
       it may provide the value 4 for this operand.
  
*************** pattern to accomplish a certain task.
*** 28933,28972 ****
       in operand 4 in a way that the blocks are not required to be
       aligned according to it in all cases.  This expected alignment is
       also in bytes, just like operand 4.  Expected size, when unknown,
!      is set to '(const_int -1)'.
  
!      Descriptions of multiple 'movmemM' patterns can only be beneficial
       if the patterns for smaller modes have fewer restrictions on their
       first, second and fourth operands.  Note that the mode M in
!      'movmemM' does not impose any restriction on the mode of
       individually copied data units in the block.
  
!      The 'movmemM' patterns must correctly handle the case where the
       source and destination strings overlap.  These patterns are used to
!      do inline expansion of '__builtin_memmove'.
  
! 'movstr'
!      String copy instruction, with 'stpcpy' semantics.  Operand 0 is an
!      output operand in mode 'Pmode'.  The addresses of the destination
!      and source strings are operands 1 and 2, and both are 'mem:BLK's
!      with addresses in mode 'Pmode'.  The execution of the expansion of
       this pattern should store in operand 0 the address in which the
!      'NUL' terminator was stored in the destination string.
  
       This pattern has also several optional operands that are same as in
!      'setmem'.
  
! 'setmemM'
       Block set instruction.  The destination string is the first
!      operand, given as a 'mem:BLK' whose address is in mode 'Pmode'.
       The number of bytes to set is the second operand, in mode M.  The
       value to initialize the memory with is the third operand.  Targets
       that only support the clearing of memory should reject any value
!      that is not the constant 0.  See 'cpymemM' for a discussion of the
       choice of mode.
  
       The fourth operand is the known alignment of the destination, in
!      the form of a 'const_int' rtx.  Thus, if the compiler knows that
       the destination is word-aligned, it may provide the value 4 for
       this operand.
  
--- 28937,28976 ----
       in operand 4 in a way that the blocks are not required to be
       aligned according to it in all cases.  This expected alignment is
       also in bytes, just like operand 4.  Expected size, when unknown,
!      is set to â€˜(const_int -1)â€™.
  
!      Descriptions of multiple â€˜movmemMâ€™ patterns can only be beneficial
       if the patterns for smaller modes have fewer restrictions on their
       first, second and fourth operands.  Note that the mode M in
!      â€˜movmemMâ€™ does not impose any restriction on the mode of
       individually copied data units in the block.
  
!      The â€˜movmemMâ€™ patterns must correctly handle the case where the
       source and destination strings overlap.  These patterns are used to
!      do inline expansion of â€˜__builtin_memmoveâ€™.
  
! â€˜movstrâ€™
!      String copy instruction, with â€˜stpcpyâ€™ semantics.  Operand 0 is an
!      output operand in mode â€˜Pmodeâ€™.  The addresses of the destination
!      and source strings are operands 1 and 2, and both are â€˜mem:BLKâ€™s
!      with addresses in mode â€˜Pmodeâ€™.  The execution of the expansion of
       this pattern should store in operand 0 the address in which the
!      â€˜NULâ€™ terminator was stored in the destination string.
  
       This pattern has also several optional operands that are same as in
!      â€˜setmemâ€™.
  
! â€˜setmemMâ€™
       Block set instruction.  The destination string is the first
!      operand, given as a â€˜mem:BLKâ€™ whose address is in mode â€˜Pmodeâ€™.
       The number of bytes to set is the second operand, in mode M.  The
       value to initialize the memory with is the third operand.  Targets
       that only support the clearing of memory should reject any value
!      that is not the constant 0.  See â€˜cpymemMâ€™ for a discussion of the
       choice of mode.
  
       The fourth operand is the known alignment of the destination, in
!      the form of a â€˜const_intâ€™ rtx.  Thus, if the compiler knows that
       the destination is word-aligned, it may provide the value 4 for
       this operand.
  
*************** pattern to accomplish a certain task.
*** 28975,28992 ****
       in operand 4 in a way that the blocks are not required to be
       aligned according to it in all cases.  This expected alignment is
       also in bytes, just like operand 4.  Expected size, when unknown,
!      is set to '(const_int -1)'.  Operand 7 is the minimal size of the
       block and operand 8 is the maximal size of the block (NULL if it
       cannot be represented as CONST_INT). Operand 9 is the probable
       maximal size (i.e. we cannot rely on it for correctness, but it can
       be used for choosing proper code sequence for a given size).
  
!      The use for multiple 'setmemM' is as for 'cpymemM'.
  
! 'cmpstrnM'
       String compare instruction, with five operands.  Operand 0 is the
       output; it has mode M.  The remaining four operands are like the
!      operands of 'cpymemM'.  The two memory blocks specified are
       compared byte by byte in lexicographic order starting at the
       beginning of each string.  The instruction is not allowed to
       prefetch more than one byte at a time since either string may end
--- 28979,28996 ----
       in operand 4 in a way that the blocks are not required to be
       aligned according to it in all cases.  This expected alignment is
       also in bytes, just like operand 4.  Expected size, when unknown,
!      is set to â€˜(const_int -1)â€™.  Operand 7 is the minimal size of the
       block and operand 8 is the maximal size of the block (NULL if it
       cannot be represented as CONST_INT). Operand 9 is the probable
       maximal size (i.e. we cannot rely on it for correctness, but it can
       be used for choosing proper code sequence for a given size).
  
!      The use for multiple â€˜setmemMâ€™ is as for â€˜cpymemMâ€™.
  
! â€˜cmpstrnMâ€™
       String compare instruction, with five operands.  Operand 0 is the
       output; it has mode M.  The remaining four operands are like the
!      operands of â€˜cpymemMâ€™.  The two memory blocks specified are
       compared byte by byte in lexicographic order starting at the
       beginning of each string.  The instruction is not allowed to
       prefetch more than one byte at a time since either string may end
*************** pattern to accomplish a certain task.
*** 28996,29009 ****
       effect of the instruction is to store a value in operand 0 whose
       sign indicates the result of the comparison.
  
! 'cmpstrM'
       String compare instruction, without known maximum length.  Operand
       0 is the output; it has mode M.  The second and third operand are
!      the blocks of memory to be compared; both are 'mem:BLK' with an
!      address in mode 'Pmode'.
  
       The fourth operand is the known shared alignment of the source and
!      destination, in the form of a 'const_int' rtx.  Thus, if the
       compiler knows that both source and destination are word-aligned,
       it may provide the value 4 for this operand.
  
--- 29000,29013 ----
       effect of the instruction is to store a value in operand 0 whose
       sign indicates the result of the comparison.
  
! â€˜cmpstrMâ€™
       String compare instruction, without known maximum length.  Operand
       0 is the output; it has mode M.  The second and third operand are
!      the blocks of memory to be compared; both are â€˜mem:BLKâ€™ with an
!      address in mode â€˜Pmodeâ€™.
  
       The fourth operand is the known shared alignment of the source and
!      destination, in the form of a â€˜const_intâ€™ rtx.  Thus, if the
       compiler knows that both source and destination are word-aligned,
       it may provide the value 4 for this operand.
  
*************** pattern to accomplish a certain task.
*** 29017,29096 ****
       store a value in operand 0 whose sign indicates the result of the
       comparison.
  
! 'cmpmemM'
       Block compare instruction, with five operands like the operands of
!      'cmpstrM'.  The two memory blocks specified are compared byte by
       byte in lexicographic order starting at the beginning of each
!      block.  Unlike 'cmpstrM' the instruction can prefetch any bytes in
!      the two memory blocks.  Also unlike 'cmpstrM' the comparison will
       not stop if both bytes are zero.  The effect of the instruction is
       to store a value in operand 0 whose sign indicates the result of
       the comparison.
  
! 'strlenM'
       Compute the length of a string, with three operands.  Operand 0 is
!      the result (of mode M), operand 1 is a 'mem' referring to the first
       character of the string, operand 2 is the character to search for
       (normally zero), and operand 3 is a constant describing the known
       alignment of the beginning of the string.
  
! 'rawmemchrM'
       Scan memory referred to by operand 1 for the first occurrence of
!      operand 2.  Operand 1 is a 'mem' and operand 2 a 'const_int' of
       mode M.  Operand 0 is the result, i.e., a pointer to the first
       occurrence of operand 2 in the memory block given by operand 1.
  
! 'floatMN2'
       Convert signed integer operand 1 (valid for fixed point mode M) to
       floating point mode N and store in operand 0 (which has mode N).
  
! 'floatunsMN2'
       Convert unsigned integer operand 1 (valid for fixed point mode M)
       to floating point mode N and store in operand 0 (which has mode N).
  
! 'fixMN2'
       Convert operand 1 (valid for floating point mode M) to fixed point
       mode N as a signed number and store in operand 0 (which has mode
       N).  This instruction's result is defined only when the value of
       operand 1 is an integer.
  
       If the machine description defines this pattern, it also needs to
!      define the 'ftrunc' pattern.
  
! 'fixunsMN2'
       Convert operand 1 (valid for floating point mode M) to fixed point
       mode N as an unsigned number and store in operand 0 (which has mode
       N).  This instruction's result is defined only when the value of
       operand 1 is an integer.
  
! 'ftruncM2'
       Convert operand 1 (valid for floating point mode M) to an integer
       value, still represented in floating point mode M, and store it in
       operand 0 (valid for floating point mode M).
  
! 'fix_truncMN2'
!      Like 'fixMN2' but works for any floating point value of mode M by
       converting the value to an integer.
  
! 'fixuns_truncMN2'
!      Like 'fixunsMN2' but works for any floating point value of mode M
       by converting the value to an integer.
  
! 'truncMN2'
       Truncate operand 1 (valid for mode M) to mode N and store in
       operand 0 (which has mode N).  Both modes must be fixed point or
       both floating point.
  
! 'extendMN2'
       Sign-extend operand 1 (valid for mode M) to mode N and store in
       operand 0 (which has mode N).  Both modes must be fixed point or
       both floating point.
  
! 'zero_extendMN2'
       Zero-extend operand 1 (valid for mode M) to mode N and store in
       operand 0 (which has mode N).  Both modes must be fixed point.
  
! 'fractMN2'
       Convert operand 1 of mode M to mode N and store in operand 0 (which
       has mode N).  Mode M and mode N could be fixed-point to
       fixed-point, signed integer to fixed-point, fixed-point to signed
--- 29021,29100 ----
       store a value in operand 0 whose sign indicates the result of the
       comparison.
  
! â€˜cmpmemMâ€™
       Block compare instruction, with five operands like the operands of
!      â€˜cmpstrMâ€™.  The two memory blocks specified are compared byte by
       byte in lexicographic order starting at the beginning of each
!      block.  Unlike â€˜cmpstrMâ€™ the instruction can prefetch any bytes in
!      the two memory blocks.  Also unlike â€˜cmpstrMâ€™ the comparison will
       not stop if both bytes are zero.  The effect of the instruction is
       to store a value in operand 0 whose sign indicates the result of
       the comparison.
  
! â€˜strlenMâ€™
       Compute the length of a string, with three operands.  Operand 0 is
!      the result (of mode M), operand 1 is a â€˜memâ€™ referring to the first
       character of the string, operand 2 is the character to search for
       (normally zero), and operand 3 is a constant describing the known
       alignment of the beginning of the string.
  
! â€˜rawmemchrMâ€™
       Scan memory referred to by operand 1 for the first occurrence of
!      operand 2.  Operand 1 is a â€˜memâ€™ and operand 2 a â€˜const_intâ€™ of
       mode M.  Operand 0 is the result, i.e., a pointer to the first
       occurrence of operand 2 in the memory block given by operand 1.
  
! â€˜floatMN2â€™
       Convert signed integer operand 1 (valid for fixed point mode M) to
       floating point mode N and store in operand 0 (which has mode N).
  
! â€˜floatunsMN2â€™
       Convert unsigned integer operand 1 (valid for fixed point mode M)
       to floating point mode N and store in operand 0 (which has mode N).
  
! â€˜fixMN2â€™
       Convert operand 1 (valid for floating point mode M) to fixed point
       mode N as a signed number and store in operand 0 (which has mode
       N).  This instruction's result is defined only when the value of
       operand 1 is an integer.
  
       If the machine description defines this pattern, it also needs to
!      define the â€˜ftruncâ€™ pattern.
  
! â€˜fixunsMN2â€™
       Convert operand 1 (valid for floating point mode M) to fixed point
       mode N as an unsigned number and store in operand 0 (which has mode
       N).  This instruction's result is defined only when the value of
       operand 1 is an integer.
  
! â€˜ftruncM2â€™
       Convert operand 1 (valid for floating point mode M) to an integer
       value, still represented in floating point mode M, and store it in
       operand 0 (valid for floating point mode M).
  
! â€˜fix_truncMN2â€™
!      Like â€˜fixMN2â€™ but works for any floating point value of mode M by
       converting the value to an integer.
  
! â€˜fixuns_truncMN2â€™
!      Like â€˜fixunsMN2â€™ but works for any floating point value of mode M
       by converting the value to an integer.
  
! â€˜truncMN2â€™
       Truncate operand 1 (valid for mode M) to mode N and store in
       operand 0 (which has mode N).  Both modes must be fixed point or
       both floating point.
  
! â€˜extendMN2â€™
       Sign-extend operand 1 (valid for mode M) to mode N and store in
       operand 0 (which has mode N).  Both modes must be fixed point or
       both floating point.
  
! â€˜zero_extendMN2â€™
       Zero-extend operand 1 (valid for mode M) to mode N and store in
       operand 0 (which has mode N).  Both modes must be fixed point.
  
! â€˜fractMN2â€™
       Convert operand 1 of mode M to mode N and store in operand 0 (which
       has mode N).  Mode M and mode N could be fixed-point to
       fixed-point, signed integer to fixed-point, fixed-point to signed
*************** pattern to accomplish a certain task.
*** 29098,29184 ****
       floating-point.  When overflows or underflows happen, the results
       are undefined.
  
! 'satfractMN2'
       Convert operand 1 of mode M to mode N and store in operand 0 (which
       has mode N).  Mode M and mode N could be fixed-point to
       fixed-point, signed integer to fixed-point, or floating-point to
       fixed-point.  When overflows or underflows happen, the instruction
       saturates the results to the maximum or the minimum.
  
! 'fractunsMN2'
       Convert operand 1 of mode M to mode N and store in operand 0 (which
       has mode N).  Mode M and mode N could be unsigned integer to
       fixed-point, or fixed-point to unsigned integer.  When overflows or
       underflows happen, the results are undefined.
  
! 'satfractunsMN2'
       Convert unsigned integer operand 1 of mode M to fixed-point mode N
       and store in operand 0 (which has mode N).  When overflows or
       underflows happen, the instruction saturates the results to the
       maximum or the minimum.
  
! 'extvM'
       Extract a bit-field from register operand 1, sign-extend it, and
       store it in operand 0.  Operand 2 specifies the width of the field
       in bits and operand 3 the starting bit, which counts from the most
!      significant bit if 'BITS_BIG_ENDIAN' is true and from the least
       significant bit otherwise.
  
       Operands 0 and 1 both have mode M.  Operands 2 and 3 have a
       target-specific mode.
  
! 'extvmisalignM'
       Extract a bit-field from memory operand 1, sign extend it, and
       store it in operand 0.  Operand 2 specifies the width in bits and
       operand 3 the starting bit.  The starting bit is always somewhere
       in the first byte of operand 1; it counts from the most significant
!      bit if 'BITS_BIG_ENDIAN' is true and from the least significant bit
       otherwise.
  
!      Operand 0 has mode M while operand 1 has 'BLK' mode.  Operands 2
       and 3 have a target-specific mode.
  
       The instruction must not read beyond the last byte of the
       bit-field.
  
! 'extzvM'
!      Like 'extvM' except that the bit-field value is zero-extended.
  
! 'extzvmisalignM'
!      Like 'extvmisalignM' except that the bit-field value is
       zero-extended.
  
! 'insvM'
       Insert operand 3 into a bit-field of register operand 0.  Operand 1
       specifies the width of the field in bits and operand 2 the starting
       bit, which counts from the most significant bit if
!      'BITS_BIG_ENDIAN' is true and from the least significant bit
       otherwise.
  
       Operands 0 and 3 both have mode M.  Operands 1 and 2 have a
       target-specific mode.
  
! 'insvmisalignM'
       Insert operand 3 into a bit-field of memory operand 0.  Operand 1
       specifies the width of the field in bits and operand 2 the starting
       bit.  The starting bit is always somewhere in the first byte of
       operand 0; it counts from the most significant bit if
!      'BITS_BIG_ENDIAN' is true and from the least significant bit
       otherwise.
  
!      Operand 3 has mode M while operand 0 has 'BLK' mode.  Operands 1
       and 2 have a target-specific mode.
  
       The instruction must not read or write beyond the last byte of the
       bit-field.
  
! 'extv'
       Extract a bit-field from operand 1 (a register or memory operand),
       where operand 2 specifies the width in bits and operand 3 the
       starting bit, and store it in operand 0.  Operand 0 must have mode
!      'word_mode'.  Operand 1 may have mode 'byte_mode' or 'word_mode';
!      often 'word_mode' is allowed only for registers.  Operands 2 and 3
!      must be valid for 'word_mode'.
  
       The RTL generation pass generates this instruction only with
       constants for operands 2 and 3 and the constant is never zero for
--- 29102,29188 ----
       floating-point.  When overflows or underflows happen, the results
       are undefined.
  
! â€˜satfractMN2â€™
       Convert operand 1 of mode M to mode N and store in operand 0 (which
       has mode N).  Mode M and mode N could be fixed-point to
       fixed-point, signed integer to fixed-point, or floating-point to
       fixed-point.  When overflows or underflows happen, the instruction
       saturates the results to the maximum or the minimum.
  
! â€˜fractunsMN2â€™
       Convert operand 1 of mode M to mode N and store in operand 0 (which
       has mode N).  Mode M and mode N could be unsigned integer to
       fixed-point, or fixed-point to unsigned integer.  When overflows or
       underflows happen, the results are undefined.
  
! â€˜satfractunsMN2â€™
       Convert unsigned integer operand 1 of mode M to fixed-point mode N
       and store in operand 0 (which has mode N).  When overflows or
       underflows happen, the instruction saturates the results to the
       maximum or the minimum.
  
! â€˜extvMâ€™
       Extract a bit-field from register operand 1, sign-extend it, and
       store it in operand 0.  Operand 2 specifies the width of the field
       in bits and operand 3 the starting bit, which counts from the most
!      significant bit if â€˜BITS_BIG_ENDIANâ€™ is true and from the least
       significant bit otherwise.
  
       Operands 0 and 1 both have mode M.  Operands 2 and 3 have a
       target-specific mode.
  
! â€˜extvmisalignMâ€™
       Extract a bit-field from memory operand 1, sign extend it, and
       store it in operand 0.  Operand 2 specifies the width in bits and
       operand 3 the starting bit.  The starting bit is always somewhere
       in the first byte of operand 1; it counts from the most significant
!      bit if â€˜BITS_BIG_ENDIANâ€™ is true and from the least significant bit
       otherwise.
  
!      Operand 0 has mode M while operand 1 has â€˜BLKâ€™ mode.  Operands 2
       and 3 have a target-specific mode.
  
       The instruction must not read beyond the last byte of the
       bit-field.
  
! â€˜extzvMâ€™
!      Like â€˜extvMâ€™ except that the bit-field value is zero-extended.
  
! â€˜extzvmisalignMâ€™
!      Like â€˜extvmisalignMâ€™ except that the bit-field value is
       zero-extended.
  
! â€˜insvMâ€™
       Insert operand 3 into a bit-field of register operand 0.  Operand 1
       specifies the width of the field in bits and operand 2 the starting
       bit, which counts from the most significant bit if
!      â€˜BITS_BIG_ENDIANâ€™ is true and from the least significant bit
       otherwise.
  
       Operands 0 and 3 both have mode M.  Operands 1 and 2 have a
       target-specific mode.
  
! â€˜insvmisalignMâ€™
       Insert operand 3 into a bit-field of memory operand 0.  Operand 1
       specifies the width of the field in bits and operand 2 the starting
       bit.  The starting bit is always somewhere in the first byte of
       operand 0; it counts from the most significant bit if
!      â€˜BITS_BIG_ENDIANâ€™ is true and from the least significant bit
       otherwise.
  
!      Operand 3 has mode M while operand 0 has â€˜BLKâ€™ mode.  Operands 1
       and 2 have a target-specific mode.
  
       The instruction must not read or write beyond the last byte of the
       bit-field.
  
! â€˜extvâ€™
       Extract a bit-field from operand 1 (a register or memory operand),
       where operand 2 specifies the width in bits and operand 3 the
       starting bit, and store it in operand 0.  Operand 0 must have mode
!      â€˜word_modeâ€™.  Operand 1 may have mode â€˜byte_modeâ€™ or â€˜word_modeâ€™;
!      often â€˜word_modeâ€™ is allowed only for registers.  Operands 2 and 3
!      must be valid for â€˜word_modeâ€™.
  
       The RTL generation pass generates this instruction only with
       constants for operands 2 and 3 and the constant is never zero for
*************** pattern to accomplish a certain task.
*** 29187,29216 ****
       The bit-field value is sign-extended to a full word integer before
       it is stored in operand 0.
  
!      This pattern is deprecated; please use 'extvM' and 'extvmisalignM'
       instead.
  
! 'extzv'
!      Like 'extv' except that the bit-field value is zero-extended.
  
!      This pattern is deprecated; please use 'extzvM' and
!      'extzvmisalignM' instead.
  
! 'insv'
!      Store operand 3 (which must be valid for 'word_mode') into a
       bit-field in operand 0, where operand 1 specifies the width in bits
       and operand 2 the starting bit.  Operand 0 may have mode
!      'byte_mode' or 'word_mode'; often 'word_mode' is allowed only for
!      registers.  Operands 1 and 2 must be valid for 'word_mode'.
  
       The RTL generation pass generates this instruction only with
       constants for operands 1 and 2 and the constant is never zero for
       operand 1.
  
!      This pattern is deprecated; please use 'insvM' and 'insvmisalignM'
       instead.
  
! 'movMODEcc'
       Conditionally move operand 2 or operand 3 into operand 0 according
       to the comparison in operand 1.  If the comparison is true, operand
       2 is moved into operand 0, otherwise operand 3 is moved.
--- 29191,29220 ----
       The bit-field value is sign-extended to a full word integer before
       it is stored in operand 0.
  
!      This pattern is deprecated; please use â€˜extvMâ€™ and â€˜extvmisalignMâ€™
       instead.
  
! â€˜extzvâ€™
!      Like â€˜extvâ€™ except that the bit-field value is zero-extended.
  
!      This pattern is deprecated; please use â€˜extzvMâ€™ and
!      â€˜extzvmisalignMâ€™ instead.
  
! â€˜insvâ€™
!      Store operand 3 (which must be valid for â€˜word_modeâ€™) into a
       bit-field in operand 0, where operand 1 specifies the width in bits
       and operand 2 the starting bit.  Operand 0 may have mode
!      â€˜byte_modeâ€™ or â€˜word_modeâ€™; often â€˜word_modeâ€™ is allowed only for
!      registers.  Operands 1 and 2 must be valid for â€˜word_modeâ€™.
  
       The RTL generation pass generates this instruction only with
       constants for operands 1 and 2 and the constant is never zero for
       operand 1.
  
!      This pattern is deprecated; please use â€˜insvMâ€™ and â€˜insvmisalignMâ€™
       instead.
  
! â€˜movMODEccâ€™
       Conditionally move operand 2 or operand 3 into operand 0 according
       to the comparison in operand 1.  If the comparison is true, operand
       2 is moved into operand 0, otherwise operand 3 is moved.
*************** pattern to accomplish a certain task.
*** 29223,29237 ****
       If the machine does not have conditional move instructions, do not
       define these patterns.
  
! 'addMODEcc'
!      Similar to 'movMODEcc' but for conditional addition.  Conditionally
       move operand 2 or (operands 2 + operand 3) into operand 0 according
       to the comparison in operand 1.  If the comparison is false,
       operand 2 is moved into operand 0, otherwise (operand 2 + operand
       3) is moved.
  
! 'cond_negMODE'
! 'cond_one_cmplMODE'
       When operand 1 is true, perform an operation on operands 2 and
       store the result in operand 0, otherwise store operand 3 in operand
       0.  The operation works elementwise if the operands are vectors.
--- 29227,29241 ----
       If the machine does not have conditional move instructions, do not
       define these patterns.
  
! â€˜addMODEccâ€™
!      Similar to â€˜movMODEccâ€™ but for conditional addition.  Conditionally
       move operand 2 or (operands 2 + operand 3) into operand 0 according
       to the comparison in operand 1.  If the comparison is false,
       operand 2 is moved into operand 0, otherwise (operand 2 + operand
       3) is moved.
  
! â€˜cond_negMODEâ€™
! â€˜cond_one_cmplMODEâ€™
       When operand 1 is true, perform an operation on operands 2 and
       store the result in operand 0, otherwise store operand 3 in operand
       0.  The operation works elementwise if the operands are vectors.
*************** pattern to accomplish a certain task.
*** 29245,29283 ****
            for (i = 0; i < GET_MODE_NUNITS (M); i++)
              op0[i] = op1[i] ? OP op2[i] : op3[i];
  
!      where, for example, OP is '~' for 'cond_one_cmplMODE'.
  
!      When defined for floating-point modes, the contents of 'op2[i]' are
!      not interpreted if 'op1[i]' is false, just like they would not be
!      in a normal C '?:' condition.
  
       Operands 0, 2, and 3 all have mode M.  Operand 1 is a scalar
       integer if M is scalar, otherwise it has the mode returned by
!      'TARGET_VECTORIZE_GET_MASK_MODE'.
  
!      'cond_OPMODE' generally corresponds to a conditional form of
!      'OPMODE2'.
  
! 'cond_addMODE'
! 'cond_subMODE'
! 'cond_mulMODE'
! 'cond_divMODE'
! 'cond_udivMODE'
! 'cond_modMODE'
! 'cond_umodMODE'
! 'cond_andMODE'
! 'cond_iorMODE'
! 'cond_xorMODE'
! 'cond_sminMODE'
! 'cond_smaxMODE'
! 'cond_uminMODE'
! 'cond_umaxMODE'
! 'cond_copysignMODE'
! 'cond_fminMODE'
! 'cond_fmaxMODE'
! 'cond_ashlMODE'
! 'cond_ashrMODE'
! 'cond_lshrMODE'
       When operand 1 is true, perform an operation on operands 2 and 3
       and store the result in operand 0, otherwise store operand 4 in
       operand 0.  The operation works elementwise if the operands are
--- 29249,29287 ----
            for (i = 0; i < GET_MODE_NUNITS (M); i++)
              op0[i] = op1[i] ? OP op2[i] : op3[i];
  
!      where, for example, OP is â€˜~â€™ for â€˜cond_one_cmplMODEâ€™.
  
!      When defined for floating-point modes, the contents of â€˜op2[i]â€™ are
!      not interpreted if â€˜op1[i]â€™ is false, just like they would not be
!      in a normal C â€˜?:â€™ condition.
  
       Operands 0, 2, and 3 all have mode M.  Operand 1 is a scalar
       integer if M is scalar, otherwise it has the mode returned by
!      â€˜TARGET_VECTORIZE_GET_MASK_MODEâ€™.
  
!      â€˜cond_OPMODEâ€™ generally corresponds to a conditional form of
!      â€˜OPMODE2â€™.
  
! â€˜cond_addMODEâ€™
! â€˜cond_subMODEâ€™
! â€˜cond_mulMODEâ€™
! â€˜cond_divMODEâ€™
! â€˜cond_udivMODEâ€™
! â€˜cond_modMODEâ€™
! â€˜cond_umodMODEâ€™
! â€˜cond_andMODEâ€™
! â€˜cond_iorMODEâ€™
! â€˜cond_xorMODEâ€™
! â€˜cond_sminMODEâ€™
! â€˜cond_smaxMODEâ€™
! â€˜cond_uminMODEâ€™
! â€˜cond_umaxMODEâ€™
! â€˜cond_copysignMODEâ€™
! â€˜cond_fminMODEâ€™
! â€˜cond_fmaxMODEâ€™
! â€˜cond_ashlMODEâ€™
! â€˜cond_ashrMODEâ€™
! â€˜cond_lshrMODEâ€™
       When operand 1 is true, perform an operation on operands 2 and 3
       and store the result in operand 0, otherwise store operand 4 in
       operand 0.  The operation works elementwise if the operands are
*************** pattern to accomplish a certain task.
*** 29292,29327 ****
            for (i = 0; i < GET_MODE_NUNITS (M); i++)
              op0[i] = op1[i] ? op2[i] OP op3[i] : op4[i];
  
!      where, for example, OP is '+' for 'cond_addMODE'.
  
!      When defined for floating-point modes, the contents of 'op3[i]' are
!      not interpreted if 'op1[i]' is false, just like they would not be
!      in a normal C '?:' condition.
  
       Operands 0, 2, 3 and 4 all have mode M.  Operand 1 is a scalar
       integer if M is scalar, otherwise it has the mode returned by
!      'TARGET_VECTORIZE_GET_MASK_MODE'.
  
!      'cond_OPMODE' generally corresponds to a conditional form of
!      'OPMODE3'.  As an exception, the vector forms of shifts correspond
!      to patterns like 'vashlMODE3' rather than patterns like
!      'ashlMODE3'.
  
!      'cond_copysignMODE' is only defined for floating point modes.
  
! 'cond_fmaMODE'
! 'cond_fmsMODE'
! 'cond_fnmaMODE'
! 'cond_fnmsMODE'
!      Like 'cond_addM', except that the conditional operation takes 3
       operands rather than two.  For example, the vector form of
!      'cond_fmaMODE' is equivalent to:
  
            for (i = 0; i < GET_MODE_NUNITS (M); i++)
              op0[i] = op1[i] ? fma (op2[i], op3[i], op4[i]) : op5[i];
  
! 'cond_len_negMODE'
! 'cond_len_one_cmplMODE'
       When operand 1 is true and element index < operand 4 + operand 5,
       perform an operation on operands 1 and store the result in operand
       0, otherwise store operand 2 in operand 0.  The operation only
--- 29296,29331 ----
            for (i = 0; i < GET_MODE_NUNITS (M); i++)
              op0[i] = op1[i] ? op2[i] OP op3[i] : op4[i];
  
!      where, for example, OP is â€˜+â€™ for â€˜cond_addMODEâ€™.
  
!      When defined for floating-point modes, the contents of â€˜op3[i]â€™ are
!      not interpreted if â€˜op1[i]â€™ is false, just like they would not be
!      in a normal C â€˜?:â€™ condition.
  
       Operands 0, 2, 3 and 4 all have mode M.  Operand 1 is a scalar
       integer if M is scalar, otherwise it has the mode returned by
!      â€˜TARGET_VECTORIZE_GET_MASK_MODEâ€™.
  
!      â€˜cond_OPMODEâ€™ generally corresponds to a conditional form of
!      â€˜OPMODE3â€™.  As an exception, the vector forms of shifts correspond
!      to patterns like â€˜vashlMODE3â€™ rather than patterns like
!      â€˜ashlMODE3â€™.
  
!      â€˜cond_copysignMODEâ€™ is only defined for floating point modes.
  
! â€˜cond_fmaMODEâ€™
! â€˜cond_fmsMODEâ€™
! â€˜cond_fnmaMODEâ€™
! â€˜cond_fnmsMODEâ€™
!      Like â€˜cond_addMâ€™, except that the conditional operation takes 3
       operands rather than two.  For example, the vector form of
!      â€˜cond_fmaMODEâ€™ is equivalent to:
  
            for (i = 0; i < GET_MODE_NUNITS (M); i++)
              op0[i] = op1[i] ? fma (op2[i], op3[i], op4[i]) : op5[i];
  
! â€˜cond_len_negMODEâ€™
! â€˜cond_len_one_cmplMODEâ€™
       When operand 1 is true and element index < operand 4 + operand 5,
       perform an operation on operands 1 and store the result in operand
       0, otherwise store operand 2 in operand 0.  The operation only
*************** pattern to accomplish a certain task.
*** 29332,29371 ****
                        ? OP op2[i]
                        : op3[i]);
  
!      where, for example, OP is '~' for 'cond_len_one_cmplMODE'.
  
!      When defined for floating-point modes, the contents of 'op2[i]' are
!      not interpreted if 'op1[i]' is false, just like they would not be
!      in a normal C '?:' condition.
  
       Operands 0, 2, and 3 all have mode M.  Operand 1 is a scalar
       integer if M is scalar, otherwise it has the mode returned by
!      'TARGET_VECTORIZE_GET_MASK_MODE'.  Operand 4 has whichever integer
       mode the target prefers.
  
!      'cond_len_OPMODE' generally corresponds to a conditional form of
!      'OPMODE2'.
  
! 'cond_len_addMODE'
! 'cond_len_subMODE'
! 'cond_len_mulMODE'
! 'cond_len_divMODE'
! 'cond_len_udivMODE'
! 'cond_len_modMODE'
! 'cond_len_umodMODE'
! 'cond_len_andMODE'
! 'cond_len_iorMODE'
! 'cond_len_xorMODE'
! 'cond_len_sminMODE'
! 'cond_len_smaxMODE'
! 'cond_len_uminMODE'
! 'cond_len_umaxMODE'
! 'cond_len_copysignMODE'
! 'cond_len_fminMODE'
! 'cond_len_fmaxMODE'
! 'cond_len_ashlMODE'
! 'cond_len_ashrMODE'
! 'cond_len_lshrMODE'
       When operand 1 is true and element index < operand 5 + operand 6,
       perform an operation on operands 2 and 3 and store the result in
       operand 0, otherwise store operand 4 in operand 0.  The operation
--- 29336,29375 ----
                        ? OP op2[i]
                        : op3[i]);
  
!      where, for example, OP is â€˜~â€™ for â€˜cond_len_one_cmplMODEâ€™.
  
!      When defined for floating-point modes, the contents of â€˜op2[i]â€™ are
!      not interpreted if â€˜op1[i]â€™ is false, just like they would not be
!      in a normal C â€˜?:â€™ condition.
  
       Operands 0, 2, and 3 all have mode M.  Operand 1 is a scalar
       integer if M is scalar, otherwise it has the mode returned by
!      â€˜TARGET_VECTORIZE_GET_MASK_MODEâ€™.  Operand 4 has whichever integer
       mode the target prefers.
  
!      â€˜cond_len_OPMODEâ€™ generally corresponds to a conditional form of
!      â€˜OPMODE2â€™.
  
! â€˜cond_len_addMODEâ€™
! â€˜cond_len_subMODEâ€™
! â€˜cond_len_mulMODEâ€™
! â€˜cond_len_divMODEâ€™
! â€˜cond_len_udivMODEâ€™
! â€˜cond_len_modMODEâ€™
! â€˜cond_len_umodMODEâ€™
! â€˜cond_len_andMODEâ€™
! â€˜cond_len_iorMODEâ€™
! â€˜cond_len_xorMODEâ€™
! â€˜cond_len_sminMODEâ€™
! â€˜cond_len_smaxMODEâ€™
! â€˜cond_len_uminMODEâ€™
! â€˜cond_len_umaxMODEâ€™
! â€˜cond_len_copysignMODEâ€™
! â€˜cond_len_fminMODEâ€™
! â€˜cond_len_fmaxMODEâ€™
! â€˜cond_len_ashlMODEâ€™
! â€˜cond_len_ashrMODEâ€™
! â€˜cond_len_lshrMODEâ€™
       When operand 1 is true and element index < operand 5 + operand 6,
       perform an operation on operands 2 and 3 and store the result in
       operand 0, otherwise store operand 4 in operand 0.  The operation
*************** pattern to accomplish a certain task.
*** 29376,29432 ****
                        ? op2[i] OP op3[i]
                        : op4[i]);
  
!      where, for example, OP is '+' for 'cond_len_addMODE'.
  
!      When defined for floating-point modes, the contents of 'op3[i]' are
!      not interpreted if 'op1[i]' is false, just like they would not be
!      in a normal C '?:' condition.
  
       Operands 0, 2, 3 and 4 all have mode M.  Operand 1 is a scalar
       integer if M is scalar, otherwise it has the mode returned by
!      'TARGET_VECTORIZE_GET_MASK_MODE'.  Operand 5 has whichever integer
       mode the target prefers.
  
!      'cond_len_OPMODE' generally corresponds to a conditional form of
!      'OPMODE3'.  As an exception, the vector forms of shifts correspond
!      to patterns like 'vashlMODE3' rather than patterns like
!      'ashlMODE3'.
  
!      'cond_len_copysignMODE' is only defined for floating point modes.
  
! 'cond_len_fmaMODE'
! 'cond_len_fmsMODE'
! 'cond_len_fnmaMODE'
! 'cond_len_fnmsMODE'
!      Like 'cond_len_addM', except that the conditional operation takes 3
       operands rather than two.  For example, the vector form of
!      'cond_len_fmaMODE' is equivalent to:
  
            for (i = 0; i < GET_MODE_NUNITS (M); i++)
              op0[i] = (i < ops[6] + ops[7] && op1[i]
                        ? fma (op2[i], op3[i], op4[i])
                        : op5[i]);
  
! 'negMODEcc'
!      Similar to 'movMODEcc' but for conditional negation.  Conditionally
       move the negation of operand 2 or the unchanged operand 3 into
       operand 0 according to the comparison in operand 1.  If the
       comparison is true, the negation of operand 2 is moved into operand
       0, otherwise operand 3 is moved.
  
! 'notMODEcc'
!      Similar to 'negMODEcc' but for conditional complement.
       Conditionally move the bitwise complement of operand 2 or the
       unchanged operand 3 into operand 0 according to the comparison in
       operand 1.  If the comparison is true, the complement of operand 2
       is moved into operand 0, otherwise operand 3 is moved.
  
! 'cstoreMODE4'
       Store zero or nonzero in operand 0 according to whether a
       comparison is true.  Operand 1 is a comparison operator.  Operand 2
       and operand 3 are the first and second operand of the comparison,
       respectively.  You specify the mode that operand 0 must have when
!      you write the 'match_operand' expression.  The compiler
       automatically sees which mode you have used and supplies an operand
       of that mode.
  
--- 29380,29436 ----
                        ? op2[i] OP op3[i]
                        : op4[i]);
  
!      where, for example, OP is â€˜+â€™ for â€˜cond_len_addMODEâ€™.
  
!      When defined for floating-point modes, the contents of â€˜op3[i]â€™ are
!      not interpreted if â€˜op1[i]â€™ is false, just like they would not be
!      in a normal C â€˜?:â€™ condition.
  
       Operands 0, 2, 3 and 4 all have mode M.  Operand 1 is a scalar
       integer if M is scalar, otherwise it has the mode returned by
!      â€˜TARGET_VECTORIZE_GET_MASK_MODEâ€™.  Operand 5 has whichever integer
       mode the target prefers.
  
!      â€˜cond_len_OPMODEâ€™ generally corresponds to a conditional form of
!      â€˜OPMODE3â€™.  As an exception, the vector forms of shifts correspond
!      to patterns like â€˜vashlMODE3â€™ rather than patterns like
!      â€˜ashlMODE3â€™.
  
!      â€˜cond_len_copysignMODEâ€™ is only defined for floating point modes.
  
! â€˜cond_len_fmaMODEâ€™
! â€˜cond_len_fmsMODEâ€™
! â€˜cond_len_fnmaMODEâ€™
! â€˜cond_len_fnmsMODEâ€™
!      Like â€˜cond_len_addMâ€™, except that the conditional operation takes 3
       operands rather than two.  For example, the vector form of
!      â€˜cond_len_fmaMODEâ€™ is equivalent to:
  
            for (i = 0; i < GET_MODE_NUNITS (M); i++)
              op0[i] = (i < ops[6] + ops[7] && op1[i]
                        ? fma (op2[i], op3[i], op4[i])
                        : op5[i]);
  
! â€˜negMODEccâ€™
!      Similar to â€˜movMODEccâ€™ but for conditional negation.  Conditionally
       move the negation of operand 2 or the unchanged operand 3 into
       operand 0 according to the comparison in operand 1.  If the
       comparison is true, the negation of operand 2 is moved into operand
       0, otherwise operand 3 is moved.
  
! â€˜notMODEccâ€™
!      Similar to â€˜negMODEccâ€™ but for conditional complement.
       Conditionally move the bitwise complement of operand 2 or the
       unchanged operand 3 into operand 0 according to the comparison in
       operand 1.  If the comparison is true, the complement of operand 2
       is moved into operand 0, otherwise operand 3 is moved.
  
! â€˜cstoreMODE4â€™
       Store zero or nonzero in operand 0 according to whether a
       comparison is true.  Operand 1 is a comparison operator.  Operand 2
       and operand 3 are the first and second operand of the comparison,
       respectively.  You specify the mode that operand 0 must have when
!      you write the â€˜match_operandâ€™ expression.  The compiler
       automatically sees which mode you have used and supplies an operand
       of that mode.
  
*************** pattern to accomplish a certain task.
*** 29434,29450 ****
       or else must be negative.  Otherwise the instruction is not
       suitable and you should omit it from the machine description.  You
       describe to the compiler exactly which value is stored by defining
!      the macro 'STORE_FLAG_VALUE' (*note Misc::).  If a description
       cannot be found that can be used for all the possible comparison
!      operators, you should pick one and use a 'define_expand' to map all
       results onto the one you chose.
  
!      These operations may 'FAIL', but should do so only in relatively
!      uncommon cases; if they would 'FAIL' for common cases involving
       integer comparisons, it is best to restrict the predicates to not
       allow these operands.  Likewise if a given comparison operator will
       always fail, independent of the operands (for floating-point modes,
!      the 'ordered_comparison_operator' predicate is often useful in this
       case).
  
       If this pattern is omitted, the compiler will generate a
--- 29438,29454 ----
       or else must be negative.  Otherwise the instruction is not
       suitable and you should omit it from the machine description.  You
       describe to the compiler exactly which value is stored by defining
!      the macro â€˜STORE_FLAG_VALUEâ€™ (*note Misc::).  If a description
       cannot be found that can be used for all the possible comparison
!      operators, you should pick one and use a â€˜define_expandâ€™ to map all
       results onto the one you chose.
  
!      These operations may â€˜FAILâ€™, but should do so only in relatively
!      uncommon cases; if they would â€˜FAILâ€™ for common cases involving
       integer comparisons, it is best to restrict the predicates to not
       allow these operands.  Likewise if a given comparison operator will
       always fail, independent of the operands (for floating-point modes,
!      the â€˜ordered_comparison_operatorâ€™ predicate is often useful in this
       case).
  
       If this pattern is omitted, the compiler will generate a
*************** pattern to accomplish a certain task.
*** 29454,29545 ****
       operators, it will also try reordering the operands and/or
       inverting the result value (e.g. by an exclusive OR). These
       possibilities could be cheaper or equivalent to the instructions
!      used for the 'cstoreMODE4' pattern followed by those required to
!      convert a positive result from 'STORE_FLAG_VALUE' to 1; in this
       case, you can and should make operand 1's predicate reject some
!      operators in the 'cstoreMODE4' pattern, or remove the pattern
       altogether from the machine description.
  
! 'tbranch_OPMODE3'
       Conditional branch instruction combined with a bit test-and-compare
       instruction.  Operand 0 is the operand of the comparison.  Operand
       1 is the bit position of Operand 1 to test.  Operand 3 is the
!      'code_label' to jump to.  OP is one of EQ or NE.
  
! 'cbranchMODE4'
       Conditional branch instruction combined with a compare instruction.
       Operand 0 is a comparison operator.  Operand 1 and operand 2 are
       the first and second operands of the comparison, respectively.
!      Operand 3 is the 'code_label' to jump to.
  
! 'jump'
       A jump inside a function; an unconditional branch.  Operand 0 is
!      the 'code_label' to jump to.  This pattern name is mandatory on all
       machines.
  
! 'call'
       Subroutine call instruction returning no value.  Operand 0 is the
       function to call; operand 1 is the number of bytes of arguments
!      pushed as a 'const_int'.  Operand 2 is the result of calling the
!      target hook 'TARGET_FUNCTION_ARG' with the second argument 'arg'
!      yielding true for 'arg.end_marker_p ()', in a call after all
       parameters have been passed to that hook.  By default this is the
       first register beyond those used for arguments in the call, or
!      'NULL' if all the argument-registers are used in the call.
  
       On most machines, operand 2 is not actually stored into the RTL
       pattern.  It is supplied for the sake of some RISC machines which
       need to put this information into the assembler code; they can put
       it in the RTL instead of operand 1.
  
!      Operand 0 should be a 'mem' RTX whose address is the address of the
!      function.  Note, however, that this address can be a 'symbol_ref'
       expression even if it would not be a legitimate memory address on
       the target machine.  If it is also not a valid argument for a call
       instruction, the pattern for this operation should be a
!      'define_expand' (*note Expander Definitions::) that places the
       address into a register and uses that register in the call
       instruction.
  
! 'call_value'
       Subroutine call instruction returning a value.  Operand 0 is the
       hard register in which the value is returned.  There are three more
!      operands, the same as the three operands of the 'call' instruction
       (but with numbers increased by one).
  
!      Subroutines that return 'BLKmode' objects use the 'call' insn.
  
! 'call_pop', 'call_value_pop'
!      Similar to 'call' and 'call_value', except used if defined and if
!      'RETURN_POPS_ARGS' is nonzero.  They should emit a 'parallel' that
!      contains both the function call and a 'set' to indicate the
       adjustment made to the frame pointer.
  
!      For machines where 'RETURN_POPS_ARGS' can be nonzero, the use of
       these patterns increases the number of functions for which the
       frame pointer can be eliminated, if desired.
  
! 'untyped_call'
       Subroutine call instruction returning a value of any type.  Operand
       0 is the function to call; operand 1 is a memory location where the
       result of calling the function is to be stored; operand 2 is a
!      'parallel' expression where each element is a 'set' expression that
       indicates the saving of a function return value into the result
       block.
  
       This instruction pattern should be defined to support
!      '__builtin_apply' on machines where special instructions are needed
       to call a subroutine with arbitrary arguments or to save the value
       returned.  This instruction pattern is required on machines that
       have multiple registers that can hold a return value (i.e.
!      'FUNCTION_VALUE_REGNO_P' is true for more than one register).
  
! 'return'
       Subroutine return instruction.  This instruction pattern name
       should be defined only if a single instruction can do all the work
       of returning from a function.
  
!      Like the 'movM' patterns, this pattern is also used after the RTL
       generation phase.  In this case it is to support machines where
       multiple instructions are usually needed to return from a function,
       but some class of functions only requires one instruction to
--- 29458,29549 ----
       operators, it will also try reordering the operands and/or
       inverting the result value (e.g. by an exclusive OR). These
       possibilities could be cheaper or equivalent to the instructions
!      used for the â€˜cstoreMODE4â€™ pattern followed by those required to
!      convert a positive result from â€˜STORE_FLAG_VALUEâ€™ to 1; in this
       case, you can and should make operand 1's predicate reject some
!      operators in the â€˜cstoreMODE4â€™ pattern, or remove the pattern
       altogether from the machine description.
  
! â€˜tbranch_OPMODE3â€™
       Conditional branch instruction combined with a bit test-and-compare
       instruction.  Operand 0 is the operand of the comparison.  Operand
       1 is the bit position of Operand 1 to test.  Operand 3 is the
!      â€˜code_labelâ€™ to jump to.  OP is one of EQ or NE.
  
! â€˜cbranchMODE4â€™
       Conditional branch instruction combined with a compare instruction.
       Operand 0 is a comparison operator.  Operand 1 and operand 2 are
       the first and second operands of the comparison, respectively.
!      Operand 3 is the â€˜code_labelâ€™ to jump to.
  
! â€˜jumpâ€™
       A jump inside a function; an unconditional branch.  Operand 0 is
!      the â€˜code_labelâ€™ to jump to.  This pattern name is mandatory on all
       machines.
  
! â€˜callâ€™
       Subroutine call instruction returning no value.  Operand 0 is the
       function to call; operand 1 is the number of bytes of arguments
!      pushed as a â€˜const_intâ€™.  Operand 2 is the result of calling the
!      target hook â€˜TARGET_FUNCTION_ARGâ€™ with the second argument â€˜argâ€™
!      yielding true for â€˜arg.end_marker_p ()â€™, in a call after all
       parameters have been passed to that hook.  By default this is the
       first register beyond those used for arguments in the call, or
!      â€˜NULLâ€™ if all the argument-registers are used in the call.
  
       On most machines, operand 2 is not actually stored into the RTL
       pattern.  It is supplied for the sake of some RISC machines which
       need to put this information into the assembler code; they can put
       it in the RTL instead of operand 1.
  
!      Operand 0 should be a â€˜memâ€™ RTX whose address is the address of the
!      function.  Note, however, that this address can be a â€˜symbol_refâ€™
       expression even if it would not be a legitimate memory address on
       the target machine.  If it is also not a valid argument for a call
       instruction, the pattern for this operation should be a
!      â€˜define_expandâ€™ (*note Expander Definitions::) that places the
       address into a register and uses that register in the call
       instruction.
  
! â€˜call_valueâ€™
       Subroutine call instruction returning a value.  Operand 0 is the
       hard register in which the value is returned.  There are three more
!      operands, the same as the three operands of the â€˜callâ€™ instruction
       (but with numbers increased by one).
  
!      Subroutines that return â€˜BLKmodeâ€™ objects use the â€˜callâ€™ insn.
  
! â€˜call_popâ€™, â€˜call_value_popâ€™
!      Similar to â€˜callâ€™ and â€˜call_valueâ€™, except used if defined and if
!      â€˜RETURN_POPS_ARGSâ€™ is nonzero.  They should emit a â€˜parallelâ€™ that
!      contains both the function call and a â€˜setâ€™ to indicate the
       adjustment made to the frame pointer.
  
!      For machines where â€˜RETURN_POPS_ARGSâ€™ can be nonzero, the use of
       these patterns increases the number of functions for which the
       frame pointer can be eliminated, if desired.
  
! â€˜untyped_callâ€™
       Subroutine call instruction returning a value of any type.  Operand
       0 is the function to call; operand 1 is a memory location where the
       result of calling the function is to be stored; operand 2 is a
!      â€˜parallelâ€™ expression where each element is a â€˜setâ€™ expression that
       indicates the saving of a function return value into the result
       block.
  
       This instruction pattern should be defined to support
!      â€˜__builtin_applyâ€™ on machines where special instructions are needed
       to call a subroutine with arbitrary arguments or to save the value
       returned.  This instruction pattern is required on machines that
       have multiple registers that can hold a return value (i.e.
!      â€˜FUNCTION_VALUE_REGNO_Pâ€™ is true for more than one register).
  
! â€˜returnâ€™
       Subroutine return instruction.  This instruction pattern name
       should be defined only if a single instruction can do all the work
       of returning from a function.
  
!      Like the â€˜movMâ€™ patterns, this pattern is also used after the RTL
       generation phase.  In this case it is to support machines where
       multiple instructions are usually needed to return from a function,
       but some class of functions only requires one instruction to
*************** pattern to accomplish a certain task.
*** 29547,29559 ****
       which do not need to save any registers or allocate stack space.
  
       It is valid for this pattern to expand to an instruction using
!      'simple_return' if no epilogue is required.
  
! 'simple_return'
       Subroutine return instruction.  This instruction pattern name
       should be defined only if a single instruction can do all the work
       of returning from a function on a path where no epilogue is
!      required.  This pattern is very similar to the 'return' instruction
       pattern, but it is emitted only by the shrink-wrapping optimization
       on paths where the function prologue has not been executed, and a
       function return should occur without any of the effects of the
--- 29551,29563 ----
       which do not need to save any registers or allocate stack space.
  
       It is valid for this pattern to expand to an instruction using
!      â€˜simple_returnâ€™ if no epilogue is required.
  
! â€˜simple_returnâ€™
       Subroutine return instruction.  This instruction pattern name
       should be defined only if a single instruction can do all the work
       of returning from a function on a path where no epilogue is
!      required.  This pattern is very similar to the â€˜returnâ€™ instruction
       pattern, but it is emitted only by the shrink-wrapping optimization
       on paths where the function prologue has not been executed, and a
       function return should occur without any of the effects of the
*************** pattern to accomplish a certain task.
*** 29561,29569 ****
       the prologue and the epilogue have executed.
  
       For such machines, the condition specified in this pattern should
!      only be true when 'reload_completed' is nonzero and the function's
       epilogue would only be a single instruction.  For machines with
!      register windows, the routine 'leaf_function_p' may be used to
       determine if a register window push is required.
  
       Machines that have conditional return instructions should define
--- 29565,29573 ----
       the prologue and the epilogue have executed.
  
       For such machines, the condition specified in this pattern should
!      only be true when â€˜reload_completedâ€™ is nonzero and the function's
       epilogue would only be a single instruction.  For machines with
!      register windows, the routine â€˜leaf_function_pâ€™ may be used to
       determine if a register window push is required.
  
       Machines that have conditional return instructions should define
*************** pattern to accomplish a certain task.
*** 29580,29612 ****
              "...")
  
       where CONDITION would normally be the same condition specified on
!      the named 'return' pattern.
  
! 'untyped_return'
       Untyped subroutine return instruction.  This instruction pattern
!      should be defined to support '__builtin_return' on machines where
       special instructions are needed to return a value of any type.
  
       Operand 0 is a memory location where the result of calling a
!      function with '__builtin_apply' is stored; operand 1 is a
!      'parallel' expression where each element is a 'set' expression that
       indicates the restoring of a function return value from the result
       block.
  
! 'nop'
       No-op instruction.  This instruction pattern name should always be
!      defined to output a no-op in assembler code.  '(const_int 0)' will
       do as an RTL pattern.
  
! 'indirect_jump'
       An instruction to jump to an address which is operand zero.  This
       pattern name is mandatory on all machines.
  
! 'casesi'
       Instruction to jump through a dispatch table, including bounds
       checking.  This instruction takes five operands:
  
!        1. The index to dispatch on, which has mode 'SImode'.
  
         2. The lower bound for indices in the table, an integer constant.
  
--- 29584,29616 ----
              "...")
  
       where CONDITION would normally be the same condition specified on
!      the named â€˜returnâ€™ pattern.
  
! â€˜untyped_returnâ€™
       Untyped subroutine return instruction.  This instruction pattern
!      should be defined to support â€˜__builtin_returnâ€™ on machines where
       special instructions are needed to return a value of any type.
  
       Operand 0 is a memory location where the result of calling a
!      function with â€˜__builtin_applyâ€™ is stored; operand 1 is a
!      â€˜parallelâ€™ expression where each element is a â€˜setâ€™ expression that
       indicates the restoring of a function return value from the result
       block.
  
! â€˜nopâ€™
       No-op instruction.  This instruction pattern name should always be
!      defined to output a no-op in assembler code.  â€˜(const_int 0)â€™ will
       do as an RTL pattern.
  
! â€˜indirect_jumpâ€™
       An instruction to jump to an address which is operand zero.  This
       pattern name is mandatory on all machines.
  
! â€˜casesiâ€™
       Instruction to jump through a dispatch table, including bounds
       checking.  This instruction takes five operands:
  
!        1. The index to dispatch on, which has mode â€˜SImodeâ€™.
  
         2. The lower bound for indices in the table, an integer constant.
  
*************** pattern to accomplish a certain task.
*** 29618,29645 ****
         5. A label to jump to if the index has a value outside the
            bounds.
  
!      The table is an 'addr_vec' or 'addr_diff_vec' inside of a
!      'jump_table_data'.  The number of elements in the table is one plus
       the difference between the upper bound and the lower bound.
  
! 'tablejump'
       Instruction to jump to a variable address.  This is a low-level
       capability which can be used to implement a dispatch table when
!      there is no 'casesi' pattern.
  
       This pattern requires two operands: the address or offset, and a
       label which should immediately precede the jump table.  If the
!      macro 'CASE_VECTOR_PC_RELATIVE' evaluates to a nonzero value then
       the first operand is an offset which counts from the address of the
       table; otherwise, it is an absolute address to jump to.  In either
!      case, the first operand has mode 'Pmode'.
  
!      The 'tablejump' insn is always the last insn before the jump table
       it uses.  Its assembler code normally has no need to use the second
       operand, but you should incorporate it in the RTL pattern so that
       the jump optimizer will not delete the table as unreachable code.
  
! 'doloop_end'
       Conditional branch instruction that decrements a register and jumps
       if the register is nonzero.  Operand 0 is the register to decrement
       and test; operand 1 is the label to jump to if the register is
--- 29622,29649 ----
         5. A label to jump to if the index has a value outside the
            bounds.
  
!      The table is an â€˜addr_vecâ€™ or â€˜addr_diff_vecâ€™ inside of a
!      â€˜jump_table_dataâ€™.  The number of elements in the table is one plus
       the difference between the upper bound and the lower bound.
  
! â€˜tablejumpâ€™
       Instruction to jump to a variable address.  This is a low-level
       capability which can be used to implement a dispatch table when
!      there is no â€˜casesiâ€™ pattern.
  
       This pattern requires two operands: the address or offset, and a
       label which should immediately precede the jump table.  If the
!      macro â€˜CASE_VECTOR_PC_RELATIVEâ€™ evaluates to a nonzero value then
       the first operand is an offset which counts from the address of the
       table; otherwise, it is an absolute address to jump to.  In either
!      case, the first operand has mode â€˜Pmodeâ€™.
  
!      The â€˜tablejumpâ€™ insn is always the last insn before the jump table
       it uses.  Its assembler code normally has no need to use the second
       operand, but you should incorporate it in the RTL pattern so that
       the jump optimizer will not delete the table as unreachable code.
  
! â€˜doloop_endâ€™
       Conditional branch instruction that decrements a register and jumps
       if the register is nonzero.  Operand 0 is the register to decrement
       and test; operand 1 is the label to jump to if the register is
*************** pattern to accomplish a certain task.
*** 29648,29672 ****
       This optional instruction pattern should be defined for machines
       with low-overhead looping instructions as the loop optimizer will
       try to modify suitable loops to utilize it.  The target hook
!      'TARGET_CAN_USE_DOLOOP_P' controls the conditions under which
       low-overhead loops can be used.
  
! 'doloop_begin'
!      Companion instruction to 'doloop_end' required for machines that
       need to perform some initialization, such as loading a special
!      counter register.  Operand 1 is the associated 'doloop_end' pattern
       and operand 0 is the register that it decrements.
  
       If initialization insns do not always need to be emitted, use a
!      'define_expand' (*note Expander Definitions::) and make it fail.
  
! 'canonicalize_funcptr_for_compare'
       Canonicalize the function pointer in operand 1 and store the result
       into operand 0.
  
!      Operand 0 is always a 'reg' and has mode 'Pmode'; operand 1 may be
!      a 'reg', 'mem', 'symbol_ref', 'const_int', etc and also has mode
!      'Pmode'.
  
       Canonicalization of a function pointer usually involves computing
       the address of the function which would be called if the function
--- 29652,29676 ----
       This optional instruction pattern should be defined for machines
       with low-overhead looping instructions as the loop optimizer will
       try to modify suitable loops to utilize it.  The target hook
!      â€˜TARGET_CAN_USE_DOLOOP_Pâ€™ controls the conditions under which
       low-overhead loops can be used.
  
! â€˜doloop_beginâ€™
!      Companion instruction to â€˜doloop_endâ€™ required for machines that
       need to perform some initialization, such as loading a special
!      counter register.  Operand 1 is the associated â€˜doloop_endâ€™ pattern
       and operand 0 is the register that it decrements.
  
       If initialization insns do not always need to be emitted, use a
!      â€˜define_expandâ€™ (*note Expander Definitions::) and make it fail.
  
! â€˜canonicalize_funcptr_for_compareâ€™
       Canonicalize the function pointer in operand 1 and store the result
       into operand 0.
  
!      Operand 0 is always a â€˜regâ€™ and has mode â€˜Pmodeâ€™; operand 1 may be
!      a â€˜regâ€™, â€˜memâ€™, â€˜symbol_refâ€™, â€˜const_intâ€™, etc and also has mode
!      â€˜Pmodeâ€™.
  
       Canonicalization of a function pointer usually involves computing
       the address of the function which would be called if the function
*************** pattern to accomplish a certain task.
*** 29676,29712 ****
       can have different values but still call the same function when
       used in an indirect call.
  
! 'save_stack_block'
! 'save_stack_function'
! 'save_stack_nonlocal'
! 'restore_stack_block'
! 'restore_stack_function'
! 'restore_stack_nonlocal'
       Most machines save and restore the stack pointer by copying it to
!      or from an object of mode 'Pmode'.  Do not define these patterns on
       such machines.
  
       Some machines require special handling for stack pointer saves and
       restores.  On those machines, define the patterns corresponding to
!      the non-standard cases by using a 'define_expand' (*note Expander
       Definitions::) that produces the required insns.  The three types
       of saves and restores are:
  
!        1. 'save_stack_block' saves the stack pointer at the start of a
            block that allocates a variable-sized object, and
!           'restore_stack_block' restores the stack pointer when the
            block is exited.
  
!        2. 'save_stack_function' and 'restore_stack_function' do a
            similar job for the outermost block of a function and are used
            when the function allocates variable-sized objects or calls
!           'alloca'.  Only the epilogue uses the restored stack pointer,
            allowing a simpler save or restore sequence on some machines.
  
!        3. 'save_stack_nonlocal' is used in functions that contain labels
            branched to by nested functions.  It saves the stack pointer
            in such a way that the inner function can use
!           'restore_stack_nonlocal' to restore the stack pointer.  The
            compiler generates code to restore the frame and argument
            pointer registers, but some machines require saving and
            restoring additional data such as register window information
--- 29680,29716 ----
       can have different values but still call the same function when
       used in an indirect call.
  
! â€˜save_stack_blockâ€™
! â€˜save_stack_functionâ€™
! â€˜save_stack_nonlocalâ€™
! â€˜restore_stack_blockâ€™
! â€˜restore_stack_functionâ€™
! â€˜restore_stack_nonlocalâ€™
       Most machines save and restore the stack pointer by copying it to
!      or from an object of mode â€˜Pmodeâ€™.  Do not define these patterns on
       such machines.
  
       Some machines require special handling for stack pointer saves and
       restores.  On those machines, define the patterns corresponding to
!      the non-standard cases by using a â€˜define_expandâ€™ (*note Expander
       Definitions::) that produces the required insns.  The three types
       of saves and restores are:
  
!        1. â€˜save_stack_blockâ€™ saves the stack pointer at the start of a
            block that allocates a variable-sized object, and
!           â€˜restore_stack_blockâ€™ restores the stack pointer when the
            block is exited.
  
!        2. â€˜save_stack_functionâ€™ and â€˜restore_stack_functionâ€™ do a
            similar job for the outermost block of a function and are used
            when the function allocates variable-sized objects or calls
!           â€˜allocaâ€™.  Only the epilogue uses the restored stack pointer,
            allowing a simpler save or restore sequence on some machines.
  
!        3. â€˜save_stack_nonlocalâ€™ is used in functions that contain labels
            branched to by nested functions.  It saves the stack pointer
            in such a way that the inner function can use
!           â€˜restore_stack_nonlocalâ€™ to restore the stack pointer.  The
            compiler generates code to restore the frame and argument
            pointer registers, but some machines require saving and
            restoring additional data such as register window information
*************** pattern to accomplish a certain task.
*** 29715,29741 ****
  
       When saving the stack pointer, operand 0 is the save area and
       operand 1 is the stack pointer.  The mode used to allocate the save
!      area defaults to 'Pmode' but you can override that choice by
!      defining the 'STACK_SAVEAREA_MODE' macro (*note Storage Layout::).
!      You must specify an integral mode, or 'VOIDmode' if no save area is
       needed for a particular type of save (either because no save is
       needed or because a machine-specific save area can be used).
       Operand 0 is the stack pointer and operand 1 is the save area for
!      restore operations.  If 'save_stack_block' is defined, operand 0
!      must not be 'VOIDmode' since these saves can be arbitrarily nested.
  
!      A save area is a 'mem' that is at a constant offset from
!      'virtual_stack_vars_rtx' when the stack pointer is saved for use by
!      nonlocal gotos and a 'reg' in the other two cases.
  
! 'allocate_stack'
!      Subtract (or add if 'STACK_GROWS_DOWNWARD' is undefined) operand 1
       from the stack pointer to create space for dynamically allocated
       data.
  
       Store the resultant pointer to this space into operand 0.  If you
       are allocating space from the main stack, do this by emitting a
!      move insn to copy 'virtual_stack_dynamic_rtx' to operand 0.  If you
       are allocating the space elsewhere, generate code to copy the
       location of the space to operand 0.  In the latter case, you must
       ensure this space gets freed when the corresponding space on the
--- 29719,29745 ----
  
       When saving the stack pointer, operand 0 is the save area and
       operand 1 is the stack pointer.  The mode used to allocate the save
!      area defaults to â€˜Pmodeâ€™ but you can override that choice by
!      defining the â€˜STACK_SAVEAREA_MODEâ€™ macro (*note Storage Layout::).
!      You must specify an integral mode, or â€˜VOIDmodeâ€™ if no save area is
       needed for a particular type of save (either because no save is
       needed or because a machine-specific save area can be used).
       Operand 0 is the stack pointer and operand 1 is the save area for
!      restore operations.  If â€˜save_stack_blockâ€™ is defined, operand 0
!      must not be â€˜VOIDmodeâ€™ since these saves can be arbitrarily nested.
  
!      A save area is a â€˜memâ€™ that is at a constant offset from
!      â€˜virtual_stack_vars_rtxâ€™ when the stack pointer is saved for use by
!      nonlocal gotos and a â€˜regâ€™ in the other two cases.
  
! â€˜allocate_stackâ€™
!      Subtract (or add if â€˜STACK_GROWS_DOWNWARDâ€™ is undefined) operand 1
       from the stack pointer to create space for dynamically allocated
       data.
  
       Store the resultant pointer to this space into operand 0.  If you
       are allocating space from the main stack, do this by emitting a
!      move insn to copy â€˜virtual_stack_dynamic_rtxâ€™ to operand 0.  If you
       are allocating the space elsewhere, generate code to copy the
       location of the space to operand 0.  In the latter case, you must
       ensure this space gets freed when the corresponding space on the
*************** pattern to accomplish a certain task.
*** 29746,29752 ****
       probes or maintaining the back chain.  Define this pattern to emit
       those operations in addition to updating the stack pointer.
  
! 'check_stack'
       If stack checking (*note Stack Checking::) cannot be done on your
       system by probing the stack, define this pattern to perform the
       needed check and signal an error if the stack has overflowed.  The
--- 29750,29756 ----
       probes or maintaining the back chain.  Define this pattern to emit
       those operations in addition to updating the stack pointer.
  
! â€˜check_stackâ€™
       If stack checking (*note Stack Checking::) cannot be done on your
       system by probing the stack, define this pattern to perform the
       needed check and signal an error if the stack has overflowed.  The
*************** pattern to accomplish a certain task.
*** 29755,29768 ****
       platforms where this pattern is needed, you would obtain the stack
       limit from a global or thread-specific variable or register.
  
! 'probe_stack_address'
       If stack checking (*note Stack Checking::) can be done on your
       system by probing the stack but without the need to actually access
       it, define this pattern and signal an error if the stack has
       overflowed.  The single operand is the memory address in the stack
       that needs to be probed.
  
! 'probe_stack'
       If stack checking (*note Stack Checking::) can be done on your
       system by probing the stack but doing it with a "store zero"
       instruction is not valid or optimal, define this pattern to do the
--- 29759,29772 ----
       platforms where this pattern is needed, you would obtain the stack
       limit from a global or thread-specific variable or register.
  
! â€˜probe_stack_addressâ€™
       If stack checking (*note Stack Checking::) can be done on your
       system by probing the stack but without the need to actually access
       it, define this pattern and signal an error if the stack has
       overflowed.  The single operand is the memory address in the stack
       that needs to be probed.
  
! â€˜probe_stackâ€™
       If stack checking (*note Stack Checking::) can be done on your
       system by probing the stack but doing it with a "store zero"
       instruction is not valid or optimal, define this pattern to do the
*************** pattern to accomplish a certain task.
*** 29770,29776 ****
       overflowed.  The single operand is the memory reference in the
       stack that needs to be probed.
  
! 'nonlocal_goto'
       Emit code to generate a non-local goto, e.g., a jump from one
       function to a label in an outer function.  This pattern has four
       arguments, each representing a value to be used in the jump.  The
--- 29774,29780 ----
       overflowed.  The single operand is the memory reference in the
       stack that needs to be probed.
  
! â€˜nonlocal_gotoâ€™
       Emit code to generate a non-local goto, e.g., a jump from one
       function to a label in an outer function.  This pattern has four
       arguments, each representing a value to be used in the jump.  The
*************** pattern to accomplish a certain task.
*** 29783,29793 ****
       On most machines you need not define this pattern, since GCC will
       already generate the correct code, which is to load the frame
       pointer and static chain, restore the stack (using the
!      'restore_stack_nonlocal' pattern, if defined), and jump indirectly
       to the dispatcher.  You need only define this pattern if this code
       will not work on your machine.
  
! 'nonlocal_goto_receiver'
       This pattern, if defined, contains code needed at the target of a
       nonlocal goto after the code already generated by GCC.  You will
       not normally need to define this pattern.  A typical reason why you
--- 29787,29797 ----
       On most machines you need not define this pattern, since GCC will
       already generate the correct code, which is to load the frame
       pointer and static chain, restore the stack (using the
!      â€˜restore_stack_nonlocalâ€™ pattern, if defined), and jump indirectly
       to the dispatcher.  You need only define this pattern if this code
       will not work on your machine.
  
! â€˜nonlocal_goto_receiverâ€™
       This pattern, if defined, contains code needed at the target of a
       nonlocal goto after the code already generated by GCC.  You will
       not normally need to define this pattern.  A typical reason why you
*************** pattern to accomplish a certain task.
*** 29797,29803 ****
       so a global table pointer that is shared by all functions of a
       given module need not be restored.  There are no arguments.
  
! 'exception_receiver'
       This pattern, if defined, contains code needed at the site of an
       exception handler that isn't needed at the site of a nonlocal goto.
       You will not normally need to define this pattern.  A typical
--- 29801,29807 ----
       so a global table pointer that is shared by all functions of a
       given module need not be restored.  There are no arguments.
  
! â€˜exception_receiverâ€™
       This pattern, if defined, contains code needed at the site of an
       exception handler that isn't needed at the site of a nonlocal goto.
       You will not normally need to define this pattern.  A typical
*************** pattern to accomplish a certain task.
*** 29805,29822 ****
       pointer to a global table, must be restored after control flow is
       branched to the handler of an exception.  There are no arguments.
  
! 'builtin_setjmp_setup'
       This pattern, if defined, contains additional code needed to
!      initialize the 'jmp_buf'.  You will not normally need to define
       this pattern.  A typical reason why you might need this pattern is
       if some value, such as a pointer to a global table, must be
       restored.  Though it is preferred that the pointer value be
       recalculated if possible (given the address of a label for
!      instance).  The single argument is a pointer to the 'jmp_buf'.
       Note that the buffer is five words long and that the first three
       are normally used by the generic mechanism.
  
! 'builtin_setjmp_receiver'
       This pattern, if defined, contains code needed at the site of a
       built-in setjmp that isn't needed at the site of a nonlocal goto.
       You will not normally need to define this pattern.  A typical
--- 29809,29826 ----
       pointer to a global table, must be restored after control flow is
       branched to the handler of an exception.  There are no arguments.
  
! â€˜builtin_setjmp_setupâ€™
       This pattern, if defined, contains additional code needed to
!      initialize the â€˜jmp_bufâ€™.  You will not normally need to define
       this pattern.  A typical reason why you might need this pattern is
       if some value, such as a pointer to a global table, must be
       restored.  Though it is preferred that the pointer value be
       recalculated if possible (given the address of a label for
!      instance).  The single argument is a pointer to the â€˜jmp_bufâ€™.
       Note that the buffer is five words long and that the first three
       are normally used by the generic mechanism.
  
! â€˜builtin_setjmp_receiverâ€™
       This pattern, if defined, contains code needed at the site of a
       built-in setjmp that isn't needed at the site of a nonlocal goto.
       You will not normally need to define this pattern.  A typical
*************** pattern to accomplish a certain task.
*** 29826,29839 ****
       control; this pattern may be emitted at a small offset from that
       label.
  
! 'builtin_longjmp'
       This pattern, if defined, performs the entire action of the
       longjmp.  You will not normally need to define this pattern unless
!      you also define 'builtin_setjmp_setup'.  The single argument is a
!      pointer to the 'jmp_buf'.
  
! 'eh_return'
!      This pattern, if defined, affects the way '__builtin_eh_return',
       and thence the call frame exception handling library routines, are
       built.  It is intended to handle non-trivial actions needed along
       the abnormal return path.
--- 29830,29843 ----
       control; this pattern may be emitted at a small offset from that
       label.
  
! â€˜builtin_longjmpâ€™
       This pattern, if defined, performs the entire action of the
       longjmp.  You will not normally need to define this pattern unless
!      you also define â€˜builtin_setjmp_setupâ€™.  The single argument is a
!      pointer to the â€˜jmp_bufâ€™.
  
! â€˜eh_returnâ€™
!      This pattern, if defined, affects the way â€˜__builtin_eh_returnâ€™,
       and thence the call frame exception handling library routines, are
       built.  It is intended to handle non-trivial actions needed along
       the abnormal return path.
*************** pattern to accomplish a certain task.
*** 29843,29908 ****
       to copied by the pattern to some special register or memory
       location.  If the pattern needs to determine the location of the
       target call frame in order to do so, it may use
!      'EH_RETURN_STACKADJ_RTX', if defined; it will have already been
       assigned.
  
       If this pattern is not defined, the default action will be to
!      simply copy the return address to 'EH_RETURN_HANDLER_RTX'.  Either
       that macro or this pattern needs to be defined if call frame
       exception handling is to be used.
  
! 'prologue'
       This pattern, if defined, emits RTL for entry to a function.  The
       function entry is responsible for setting up the stack frame,
       initializing the frame pointer register, saving callee saved
       registers, etc.
  
       Using a prologue pattern is generally preferred over defining
!      'TARGET_ASM_FUNCTION_PROLOGUE' to emit assembly code for the
       prologue.
  
!      The 'prologue' pattern is particularly useful for targets which
       perform instruction scheduling.
  
! 'window_save'
       This pattern, if defined, emits RTL for a register window save.  It
       should be defined if the target machine has register windows but
       the window events are decoupled from calls to subroutines.  The
       canonical example is the SPARC architecture.
  
! 'epilogue'
       This pattern emits RTL for exit from a function.  The function exit
       is responsible for deallocating the stack frame, restoring callee
       saved registers and emitting the return instruction.
  
       Using an epilogue pattern is generally preferred over defining
!      'TARGET_ASM_FUNCTION_EPILOGUE' to emit assembly code for the
       epilogue.
  
!      The 'epilogue' pattern is particularly useful for targets which
       perform instruction scheduling or which have delay slots for their
       return instruction.
  
! 'sibcall_epilogue'
       This pattern, if defined, emits RTL for exit from a function
       without the final branch back to the calling function.  This
       pattern will be emitted before any sibling call (aka tail call)
       sites.
  
!      The 'sibcall_epilogue' pattern must not clobber any arguments used
       for parameter passing or any stack slots for arguments passed to
       the current function.
  
! 'trap'
       This pattern, if defined, signals an error, typically by causing
       some kind of signal to be raised.
  
! 'ctrapMM4'
       Conditional trap instruction.  Operand 0 is a piece of RTL which
       performs a comparison, and operands 1 and 2 are the arms of the
       comparison.  Operand 3 is the trap code, an integer.
  
!      A typical 'ctrap' pattern looks like
  
            (define_insn "ctrapsi4"
              [(trap_if (match_operator 0 "trap_operator"
--- 29847,29912 ----
       to copied by the pattern to some special register or memory
       location.  If the pattern needs to determine the location of the
       target call frame in order to do so, it may use
!      â€˜EH_RETURN_STACKADJ_RTXâ€™, if defined; it will have already been
       assigned.
  
       If this pattern is not defined, the default action will be to
!      simply copy the return address to â€˜EH_RETURN_HANDLER_RTXâ€™.  Either
       that macro or this pattern needs to be defined if call frame
       exception handling is to be used.
  
! â€˜prologueâ€™
       This pattern, if defined, emits RTL for entry to a function.  The
       function entry is responsible for setting up the stack frame,
       initializing the frame pointer register, saving callee saved
       registers, etc.
  
       Using a prologue pattern is generally preferred over defining
!      â€˜TARGET_ASM_FUNCTION_PROLOGUEâ€™ to emit assembly code for the
       prologue.
  
!      The â€˜prologueâ€™ pattern is particularly useful for targets which
       perform instruction scheduling.
  
! â€˜window_saveâ€™
       This pattern, if defined, emits RTL for a register window save.  It
       should be defined if the target machine has register windows but
       the window events are decoupled from calls to subroutines.  The
       canonical example is the SPARC architecture.
  
! â€˜epilogueâ€™
       This pattern emits RTL for exit from a function.  The function exit
       is responsible for deallocating the stack frame, restoring callee
       saved registers and emitting the return instruction.
  
       Using an epilogue pattern is generally preferred over defining
!      â€˜TARGET_ASM_FUNCTION_EPILOGUEâ€™ to emit assembly code for the
       epilogue.
  
!      The â€˜epilogueâ€™ pattern is particularly useful for targets which
       perform instruction scheduling or which have delay slots for their
       return instruction.
  
! â€˜sibcall_epilogueâ€™
       This pattern, if defined, emits RTL for exit from a function
       without the final branch back to the calling function.  This
       pattern will be emitted before any sibling call (aka tail call)
       sites.
  
!      The â€˜sibcall_epilogueâ€™ pattern must not clobber any arguments used
       for parameter passing or any stack slots for arguments passed to
       the current function.
  
! â€˜trapâ€™
       This pattern, if defined, signals an error, typically by causing
       some kind of signal to be raised.
  
! â€˜ctrapMM4â€™
       Conditional trap instruction.  Operand 0 is a piece of RTL which
       performs a comparison, and operands 1 and 2 are the arms of the
       comparison.  Operand 3 is the trap code, an integer.
  
!      A typical â€˜ctrapâ€™ pattern looks like
  
            (define_insn "ctrapsi4"
              [(trap_if (match_operator 0 "trap_operator"
*************** pattern to accomplish a certain task.
*** 29912,29918 ****
              ""
              "...")
  
! 'prefetch'
       This pattern, if defined, emits code for a non-faulting data
       prefetch instruction.  Operand 0 is the address of the memory to
       prefetch.  Operand 1 is a constant 1 if the prefetch is preparing
--- 29916,29922 ----
              ""
              "...")
  
! â€˜prefetchâ€™
       This pattern, if defined, emits code for a non-faulting data
       prefetch instruction.  Operand 0 is the address of the memory to
       prefetch.  Operand 1 is a constant 1 if the prefetch is preparing
*************** pattern to accomplish a certain task.
*** 29928,29956 ****
       Targets that do not support write prefetches or locality hints can
       ignore the values of operands 1 and 2.
  
! 'blockage'
       This pattern defines a pseudo insn that prevents the instruction
       scheduler and other passes from moving instructions and using
       register equivalences across the boundary defined by the blockage
       insn.  This needs to be an UNSPEC_VOLATILE pattern or a volatile
       ASM.
  
! 'memory_blockage'
       This pattern, if defined, represents a compiler memory barrier, and
       will be placed at points across which RTL passes may not propagate
       memory accesses.  This instruction needs to read and write volatile
       BLKmode memory.  It does not need to generate any machine
       instruction.  If this pattern is not defined, the compiler falls
!      back to emitting an instruction corresponding to 'asm volatile (""
!      ::: "memory")'.
  
! 'memory_barrier'
       If the target memory model is not fully synchronous, then this
       pattern should be defined to an instruction that orders both loads
       and stores before the instruction with respect to loads and stores
       after the instruction.  This pattern has no operands.
  
! 'speculation_barrier'
       If the target can support speculative execution, then this pattern
       should be defined to an instruction that will block subsequent
       execution until any prior speculation conditions has been resolved.
--- 29932,29960 ----
       Targets that do not support write prefetches or locality hints can
       ignore the values of operands 1 and 2.
  
! â€˜blockageâ€™
       This pattern defines a pseudo insn that prevents the instruction
       scheduler and other passes from moving instructions and using
       register equivalences across the boundary defined by the blockage
       insn.  This needs to be an UNSPEC_VOLATILE pattern or a volatile
       ASM.
  
! â€˜memory_blockageâ€™
       This pattern, if defined, represents a compiler memory barrier, and
       will be placed at points across which RTL passes may not propagate
       memory accesses.  This instruction needs to read and write volatile
       BLKmode memory.  It does not need to generate any machine
       instruction.  If this pattern is not defined, the compiler falls
!      back to emitting an instruction corresponding to â€˜asm volatile (""
!      ::: "memory")â€™.
  
! â€˜memory_barrierâ€™
       If the target memory model is not fully synchronous, then this
       pattern should be defined to an instruction that orders both loads
       and stores before the instruction with respect to loads and stores
       after the instruction.  This pattern has no operands.
  
! â€˜speculation_barrierâ€™
       If the target can support speculative execution, then this pattern
       should be defined to an instruction that will block subsequent
       execution until any prior speculation conditions has been resolved.
*************** pattern to accomplish a certain task.
*** 29959,29970 ****
       pattern.  The pattern has no operands.
  
       If this pattern is not defined then the default expansion of
!      '__builtin_speculation_safe_value' will emit a warning.  You can
       suppress this warning by defining this pattern with a final
!      condition of '0' (zero), which tells the compiler that a
       speculation barrier is not needed for this target.
  
! 'sync_compare_and_swapMODE'
       This pattern, if defined, emits code for an atomic compare-and-swap
       operation.  Operand 1 is the memory on which the atomic operation
       is performed.  Operand 2 is the "old" value to be compared against
--- 29963,29974 ----
       pattern.  The pattern has no operands.
  
       If this pattern is not defined then the default expansion of
!      â€˜__builtin_speculation_safe_valueâ€™ will emit a warning.  You can
       suppress this warning by defining this pattern with a final
!      condition of â€˜0â€™ (zero), which tells the compiler that a
       speculation barrier is not needed for this target.
  
! â€˜sync_compare_and_swapMODEâ€™
       This pattern, if defined, emits code for an atomic compare-and-swap
       operation.  Operand 1 is the memory on which the atomic operation
       is performed.  Operand 2 is the "old" value to be compared against
*************** pattern to accomplish a certain task.
*** 29986,30012 ****
       operation is available via the status flags, it is possible to
       avoid a separate compare operation and issue the subsequent branch
       or store-flag operation immediately after the compare-and-swap.  To
!      this end, GCC will look for a 'MODE_CC' set in the output of
!      'sync_compare_and_swapMODE'; if the machine description includes
!      such a set, the target should also define special 'cbranchcc4'
!      and/or 'cstorecc4' instructions.  GCC will then be able to take the
!      destination of the 'MODE_CC' set and pass it to the 'cbranchcc4' or
!      'cstorecc4' pattern as the first operand of the comparison (the
!      second will be '(const_int 0)').
  
       For targets where the operating system may provide support for this
!      operation via library calls, the 'sync_compare_and_swap_optab' may
       be initialized to a function with the same interface as the
!      '__sync_val_compare_and_swap_N' built-in.  If the entire set of
       __SYNC builtins are supported via library calls, the target can
!      initialize all of the optabs at once with 'init_sync_libfuncs'.
!      For the purposes of C++11 'std::atomic::is_lock_free', it is
       assumed that these library calls do _not_ use any kind of
       interruptable locking.
  
! 'sync_addMODE', 'sync_subMODE'
! 'sync_iorMODE', 'sync_andMODE'
! 'sync_xorMODE', 'sync_nandMODE'
       These patterns emit code for an atomic operation on memory.
       Operand 0 is the memory on which the atomic operation is performed.
       Operand 1 is the second operand to the binary operator.
--- 29990,30016 ----
       operation is available via the status flags, it is possible to
       avoid a separate compare operation and issue the subsequent branch
       or store-flag operation immediately after the compare-and-swap.  To
!      this end, GCC will look for a â€˜MODE_CCâ€™ set in the output of
!      â€˜sync_compare_and_swapMODEâ€™; if the machine description includes
!      such a set, the target should also define special â€˜cbranchcc4â€™
!      and/or â€˜cstorecc4â€™ instructions.  GCC will then be able to take the
!      destination of the â€˜MODE_CCâ€™ set and pass it to the â€˜cbranchcc4â€™ or
!      â€˜cstorecc4â€™ pattern as the first operand of the comparison (the
!      second will be â€˜(const_int 0)â€™).
  
       For targets where the operating system may provide support for this
!      operation via library calls, the â€˜sync_compare_and_swap_optabâ€™ may
       be initialized to a function with the same interface as the
!      â€˜__sync_val_compare_and_swap_Nâ€™ built-in.  If the entire set of
       __SYNC builtins are supported via library calls, the target can
!      initialize all of the optabs at once with â€˜init_sync_libfuncsâ€™.
!      For the purposes of C++11 â€˜std::atomic::is_lock_freeâ€™, it is
       assumed that these library calls do _not_ use any kind of
       interruptable locking.
  
! â€˜sync_addMODEâ€™, â€˜sync_subMODEâ€™
! â€˜sync_iorMODEâ€™, â€˜sync_andMODEâ€™
! â€˜sync_xorMODEâ€™, â€˜sync_nandMODEâ€™
       These patterns emit code for an atomic operation on memory.
       Operand 0 is the memory on which the atomic operation is performed.
       Operand 1 is the second operand to the binary operator.
*************** pattern to accomplish a certain task.
*** 30019,30027 ****
       If these patterns are not defined, the operation will be
       constructed from a compare-and-swap operation, if defined.
  
! 'sync_old_addMODE', 'sync_old_subMODE'
! 'sync_old_iorMODE', 'sync_old_andMODE'
! 'sync_old_xorMODE', 'sync_old_nandMODE'
       These patterns emit code for an atomic operation on memory, and
       return the value that the memory contained before the operation.
       Operand 0 is the result value, operand 1 is the memory on which the
--- 30023,30031 ----
       If these patterns are not defined, the operation will be
       constructed from a compare-and-swap operation, if defined.
  
! â€˜sync_old_addMODEâ€™, â€˜sync_old_subMODEâ€™
! â€˜sync_old_iorMODEâ€™, â€˜sync_old_andMODEâ€™
! â€˜sync_old_xorMODEâ€™, â€˜sync_old_nandMODEâ€™
       These patterns emit code for an atomic operation on memory, and
       return the value that the memory contained before the operation.
       Operand 0 is the result value, operand 1 is the memory on which the
*************** pattern to accomplish a certain task.
*** 30036,30049 ****
       If these patterns are not defined, the operation will be
       constructed from a compare-and-swap operation, if defined.
  
! 'sync_new_addMODE', 'sync_new_subMODE'
! 'sync_new_iorMODE', 'sync_new_andMODE'
! 'sync_new_xorMODE', 'sync_new_nandMODE'
!      These patterns are like their 'sync_old_OP' counterparts, except
       that they return the value that exists in the memory location after
       the operation, rather than before the operation.
  
! 'sync_lock_test_and_setMODE'
       This pattern takes two forms, based on the capabilities of the
       target.  In either case, operand 0 is the result of the operand,
       operand 1 is the memory on which the atomic operation is performed,
--- 30040,30053 ----
       If these patterns are not defined, the operation will be
       constructed from a compare-and-swap operation, if defined.
  
! â€˜sync_new_addMODEâ€™, â€˜sync_new_subMODEâ€™
! â€˜sync_new_iorMODEâ€™, â€˜sync_new_andMODEâ€™
! â€˜sync_new_xorMODEâ€™, â€˜sync_new_nandMODEâ€™
!      These patterns are like their â€˜sync_old_OPâ€™ counterparts, except
       that they return the value that exists in the memory location after
       the operation, rather than before the operation.
  
! â€˜sync_lock_test_and_setMODEâ€™
       This pattern takes two forms, based on the capabilities of the
       target.  In either case, operand 0 is the result of the operand,
       operand 1 is the memory on which the atomic operation is performed,
*************** pattern to accomplish a certain task.
*** 30055,30061 ****
       operand.
  
       For less capable targets, any value operand that is not the
!      constant 1 should be rejected with 'FAIL'.  In this case the target
       may use an atomic test-and-set bit operation.  The result operand
       should contain 1 if the bit was previously set and 0 if the bit was
       previously clear.  The true contents of the memory operand are
--- 30059,30065 ----
       operand.
  
       For less capable targets, any value operand that is not the
!      constant 1 should be rejected with â€˜FAILâ€™.  In this case the target
       may use an atomic test-and-set bit operation.  The result operand
       should contain 1 if the bit was previously set and 0 if the bit was
       previously clear.  The true contents of the memory operand are
*************** pattern to accomplish a certain task.
*** 30069,30082 ****
       If this pattern is not defined, the operation will be constructed
       from a compare-and-swap operation, if defined.
  
! 'sync_lock_releaseMODE'
       This pattern, if defined, releases a lock set by
!      'sync_lock_test_and_setMODE'.  Operand 0 is the memory that
       contains the lock; operand 1 is the value to store in the lock.
  
       If the target doesn't implement full semantics for
!      'sync_lock_test_and_setMODE', any value operand which is not the
!      constant 0 should be rejected with 'FAIL', and the true contents of
       the memory operand are implementation defined.
  
       This pattern must issue any memory barrier instructions such that
--- 30073,30086 ----
       If this pattern is not defined, the operation will be constructed
       from a compare-and-swap operation, if defined.
  
! â€˜sync_lock_releaseMODEâ€™
       This pattern, if defined, releases a lock set by
!      â€˜sync_lock_test_and_setMODEâ€™.  Operand 0 is the memory that
       contains the lock; operand 1 is the value to store in the lock.
  
       If the target doesn't implement full semantics for
!      â€˜sync_lock_test_and_setMODEâ€™, any value operand which is not the
!      constant 0 should be rejected with â€˜FAILâ€™, and the true contents of
       the memory operand are implementation defined.
  
       This pattern must issue any memory barrier instructions such that
*************** pattern to accomplish a certain task.
*** 30084,30094 ****
       is released only after all previous memory operations have
       completed.
  
!      If this pattern is not defined, then a 'memory_barrier' pattern
       will be emitted, followed by a store of the value to the memory
       operand.
  
! 'atomic_compare_and_swapMODE'
       This pattern, if defined, emits code for an atomic compare-and-swap
       operation with memory model semantics.  Operand 2 is the memory on
       which the atomic operation is performed.  Operand 0 is an output
--- 30088,30098 ----
       is released only after all previous memory operations have
       completed.
  
!      If this pattern is not defined, then a â€˜memory_barrierâ€™ pattern
       will be emitted, followed by a store of the value to the memory
       operand.
  
! â€˜atomic_compare_and_swapMODEâ€™
       This pattern, if defined, emits code for an atomic compare-and-swap
       operation with memory model semantics.  Operand 2 is the memory on
       which the atomic operation is performed.  Operand 0 is an output
*************** pattern to accomplish a certain task.
*** 30115,30146 ****
       operand 5 can be ignored.  Note a strong implementation must be
       provided.
  
!      If this pattern is not provided, the '__atomic_compare_exchange'
!      built-in functions will utilize the legacy 'sync_compare_and_swap'
!      pattern with an '__ATOMIC_SEQ_CST' memory model.
  
! 'atomic_loadMODE'
       This pattern implements an atomic load operation with memory model
       semantics.  Operand 1 is the memory address being loaded from.
       Operand 0 is the result of the load.  Operand 2 is the memory model
       to be used for the load operation.
  
!      If not present, the '__atomic_load' built-in function will either
       resort to a normal load with memory barriers, or a compare-and-swap
       operation if a normal load would not be atomic.
  
! 'atomic_storeMODE'
       This pattern implements an atomic store operation with memory model
       semantics.  Operand 0 is the memory address being stored to.
       Operand 1 is the value to be written.  Operand 2 is the memory
       model to be used for the operation.
  
!      If not present, the '__atomic_store' built-in function will attempt
       to perform a normal store and surround it with any required memory
       fences.  If the store would not be atomic, then an
!      '__atomic_exchange' is attempted with the result being ignored.
  
! 'atomic_exchangeMODE'
       This pattern implements an atomic exchange operation with memory
       model semantics.  Operand 1 is the memory location the operation is
       performed on.  Operand 0 is an output operand which is set to the
--- 30119,30150 ----
       operand 5 can be ignored.  Note a strong implementation must be
       provided.
  
!      If this pattern is not provided, the â€˜__atomic_compare_exchangeâ€™
!      built-in functions will utilize the legacy â€˜sync_compare_and_swapâ€™
!      pattern with an â€˜__ATOMIC_SEQ_CSTâ€™ memory model.
  
! â€˜atomic_loadMODEâ€™
       This pattern implements an atomic load operation with memory model
       semantics.  Operand 1 is the memory address being loaded from.
       Operand 0 is the result of the load.  Operand 2 is the memory model
       to be used for the load operation.
  
!      If not present, the â€˜__atomic_loadâ€™ built-in function will either
       resort to a normal load with memory barriers, or a compare-and-swap
       operation if a normal load would not be atomic.
  
! â€˜atomic_storeMODEâ€™
       This pattern implements an atomic store operation with memory model
       semantics.  Operand 0 is the memory address being stored to.
       Operand 1 is the value to be written.  Operand 2 is the memory
       model to be used for the operation.
  
!      If not present, the â€˜__atomic_storeâ€™ built-in function will attempt
       to perform a normal store and surround it with any required memory
       fences.  If the store would not be atomic, then an
!      â€˜__atomic_exchangeâ€™ is attempted with the result being ignored.
  
! â€˜atomic_exchangeMODEâ€™
       This pattern implements an atomic exchange operation with memory
       model semantics.  Operand 1 is the memory location the operation is
       performed on.  Operand 0 is an output operand which is set to the
*************** pattern to accomplish a certain task.
*** 30149,30160 ****
       to be used.
  
       If this pattern is not present, the built-in function
!      '__atomic_exchange' will attempt to preform the operation with a
       compare and swap loop.
  
! 'atomic_addMODE', 'atomic_subMODE'
! 'atomic_orMODE', 'atomic_andMODE'
! 'atomic_xorMODE', 'atomic_nandMODE'
       These patterns emit code for an atomic operation on memory with
       memory model semantics.  Operand 0 is the memory on which the
       atomic operation is performed.  Operand 1 is the second operand to
--- 30153,30164 ----
       to be used.
  
       If this pattern is not present, the built-in function
!      â€˜__atomic_exchangeâ€™ will attempt to preform the operation with a
       compare and swap loop.
  
! â€˜atomic_addMODEâ€™, â€˜atomic_subMODEâ€™
! â€˜atomic_orMODEâ€™, â€˜atomic_andMODEâ€™
! â€˜atomic_xorMODEâ€™, â€˜atomic_nandMODEâ€™
       These patterns emit code for an atomic operation on memory with
       memory model semantics.  Operand 0 is the memory on which the
       atomic operation is performed.  Operand 1 is the second operand to
*************** pattern to accomplish a certain task.
*** 30162,30174 ****
       the operation.
  
       If these patterns are not defined, attempts will be made to use
!      legacy 'sync' patterns, or equivalent patterns which return a
       result.  If none of these are available a compare-and-swap loop
       will be used.
  
! 'atomic_fetch_addMODE', 'atomic_fetch_subMODE'
! 'atomic_fetch_orMODE', 'atomic_fetch_andMODE'
! 'atomic_fetch_xorMODE', 'atomic_fetch_nandMODE'
       These patterns emit code for an atomic operation on memory with
       memory model semantics, and return the original value.  Operand 0
       is an output operand which contains the value of the memory
--- 30166,30178 ----
       the operation.
  
       If these patterns are not defined, attempts will be made to use
!      legacy â€˜syncâ€™ patterns, or equivalent patterns which return a
       result.  If none of these are available a compare-and-swap loop
       will be used.
  
! â€˜atomic_fetch_addMODEâ€™, â€˜atomic_fetch_subMODEâ€™
! â€˜atomic_fetch_orMODEâ€™, â€˜atomic_fetch_andMODEâ€™
! â€˜atomic_fetch_xorMODEâ€™, â€˜atomic_fetch_nandMODEâ€™
       These patterns emit code for an atomic operation on memory with
       memory model semantics, and return the original value.  Operand 0
       is an output operand which contains the value of the memory
*************** pattern to accomplish a certain task.
*** 30178,30189 ****
       model to be used by the operation.
  
       If these patterns are not defined, attempts will be made to use
!      legacy 'sync' patterns.  If none of these are available a
       compare-and-swap loop will be used.
  
! 'atomic_add_fetchMODE', 'atomic_sub_fetchMODE'
! 'atomic_or_fetchMODE', 'atomic_and_fetchMODE'
! 'atomic_xor_fetchMODE', 'atomic_nand_fetchMODE'
       These patterns emit code for an atomic operation on memory with
       memory model semantics and return the result after the operation is
       performed.  Operand 0 is an output operand which contains the value
--- 30182,30193 ----
       model to be used by the operation.
  
       If these patterns are not defined, attempts will be made to use
!      legacy â€˜syncâ€™ patterns.  If none of these are available a
       compare-and-swap loop will be used.
  
! â€˜atomic_add_fetchMODEâ€™, â€˜atomic_sub_fetchMODEâ€™
! â€˜atomic_or_fetchMODEâ€™, â€˜atomic_and_fetchMODEâ€™
! â€˜atomic_xor_fetchMODEâ€™, â€˜atomic_nand_fetchMODEâ€™
       These patterns emit code for an atomic operation on memory with
       memory model semantics and return the result after the operation is
       performed.  Operand 0 is an output operand which contains the value
*************** pattern to accomplish a certain task.
*** 30193,30217 ****
       operation.
  
       If these patterns are not defined, attempts will be made to use
!      legacy 'sync' patterns, or equivalent patterns which return the
       result before the operation followed by the arithmetic operation
       required to produce the result.  If none of these are available a
       compare-and-swap loop will be used.
  
! 'atomic_test_and_set'
!      This pattern emits code for '__builtin_atomic_test_and_set'.
       Operand 0 is an output operand which is set to true if the previous
       previous contents of the byte was "set", and false otherwise.
!      Operand 1 is the 'QImode' memory to be modified.  Operand 2 is the
       memory model to be used.
  
       The specific value that defines "set" is implementation defined,
       and is normally based on what is performed by the native atomic
       test and set instruction.
  
! 'atomic_bit_test_and_setMODE'
! 'atomic_bit_test_and_complementMODE'
! 'atomic_bit_test_and_resetMODE'
       These patterns emit code for an atomic bitwise operation on memory
       with memory model semantics, and return the original value of the
       specified bit.  Operand 0 is an output operand which contains the
--- 30197,30221 ----
       operation.
  
       If these patterns are not defined, attempts will be made to use
!      legacy â€˜syncâ€™ patterns, or equivalent patterns which return the
       result before the operation followed by the arithmetic operation
       required to produce the result.  If none of these are available a
       compare-and-swap loop will be used.
  
! â€˜atomic_test_and_setâ€™
!      This pattern emits code for â€˜__builtin_atomic_test_and_setâ€™.
       Operand 0 is an output operand which is set to true if the previous
       previous contents of the byte was "set", and false otherwise.
!      Operand 1 is the â€˜QImodeâ€™ memory to be modified.  Operand 2 is the
       memory model to be used.
  
       The specific value that defines "set" is implementation defined,
       and is normally based on what is performed by the native atomic
       test and set instruction.
  
! â€˜atomic_bit_test_and_setMODEâ€™
! â€˜atomic_bit_test_and_complementMODEâ€™
! â€˜atomic_bit_test_and_resetMODEâ€™
       These patterns emit code for an atomic bitwise operation on memory
       with memory model semantics, and return the original value of the
       specified bit.  Operand 0 is an output operand which contains the
*************** pattern to accomplish a certain task.
*** 30220,30244 ****
       atomic operation is performed.  Operand 2 is the bit within the
       operand, starting with least significant bit.  Operand 3 is the
       memory model to be used by the operation.  Operand 4 is a flag - it
!      is 'const1_rtx' if operand 0 should contain the original value of
       the specified bit in the least significant bit of the operand, and
!      'const0_rtx' if the bit should be in its original position in the
!      operand.  'atomic_bit_test_and_setMODE' atomically sets the
       specified bit after remembering its original value,
!      'atomic_bit_test_and_complementMODE' inverts the specified bit and
!      'atomic_bit_test_and_resetMODE' clears the specified bit.
  
       If these patterns are not defined, attempts will be made to use
!      'atomic_fetch_orMODE', 'atomic_fetch_xorMODE' or
!      'atomic_fetch_andMODE' instruction patterns, or their 'sync'
       counterparts.  If none of these are available a compare-and-swap
       loop will be used.
  
! 'atomic_add_fetch_cmp_0MODE'
! 'atomic_sub_fetch_cmp_0MODE'
! 'atomic_and_fetch_cmp_0MODE'
! 'atomic_or_fetch_cmp_0MODE'
! 'atomic_xor_fetch_cmp_0MODE'
       These patterns emit code for an atomic operation on memory with
       memory model semantics if the fetch result is used only in a
       comparison against zero.  Operand 0 is an output operand which
--- 30224,30248 ----
       atomic operation is performed.  Operand 2 is the bit within the
       operand, starting with least significant bit.  Operand 3 is the
       memory model to be used by the operation.  Operand 4 is a flag - it
!      is â€˜const1_rtxâ€™ if operand 0 should contain the original value of
       the specified bit in the least significant bit of the operand, and
!      â€˜const0_rtxâ€™ if the bit should be in its original position in the
!      operand.  â€˜atomic_bit_test_and_setMODEâ€™ atomically sets the
       specified bit after remembering its original value,
!      â€˜atomic_bit_test_and_complementMODEâ€™ inverts the specified bit and
!      â€˜atomic_bit_test_and_resetMODEâ€™ clears the specified bit.
  
       If these patterns are not defined, attempts will be made to use
!      â€˜atomic_fetch_orMODEâ€™, â€˜atomic_fetch_xorMODEâ€™ or
!      â€˜atomic_fetch_andMODEâ€™ instruction patterns, or their â€˜syncâ€™
       counterparts.  If none of these are available a compare-and-swap
       loop will be used.
  
! â€˜atomic_add_fetch_cmp_0MODEâ€™
! â€˜atomic_sub_fetch_cmp_0MODEâ€™
! â€˜atomic_and_fetch_cmp_0MODEâ€™
! â€˜atomic_or_fetch_cmp_0MODEâ€™
! â€˜atomic_xor_fetch_cmp_0MODEâ€™
       These patterns emit code for an atomic operation on memory with
       memory model semantics if the fetch result is used only in a
       comparison against zero.  Operand 0 is an output operand which
*************** pattern to accomplish a certain task.
*** 30247,30301 ****
       atomic operation is performed.  Operand 2 is the second operand to
       the binary operator.  Operand 3 is the memory model to be used by
       the operation.  Operand 4 is an integer holding the comparison
!      code, one of 'EQ', 'NE', 'LT', 'GT', 'LE' or 'GE'.
  
       If these patterns are not defined, attempts will be made to use
       separate atomic operation and fetch pattern followed by comparison
       of the result against zero.
  
! 'mem_thread_fence'
       This pattern emits code required to implement a thread fence with
       memory model semantics.  Operand 0 is the memory model to be used.
  
!      For the '__ATOMIC_RELAXED' model no instructions need to be issued
       and this expansion is not invoked.
  
       The compiler always emits a compiler memory barrier regardless of
       what expanding this pattern produced.
  
       If this pattern is not defined, the compiler falls back to
!      expanding the 'memory_barrier' pattern, then to emitting
!      '__sync_synchronize' library call, and finally to just placing a
       compiler memory barrier.
  
! 'get_thread_pointerMODE'
! 'set_thread_pointerMODE'
       These patterns emit code that reads/sets the TLS thread pointer.
       Currently, these are only needed if the target needs to support the
!      '__builtin_thread_pointer' and '__builtin_set_thread_pointer'
       builtins.
  
       The get/set patterns have a single output/input operand
!      respectively, with MODE intended to be 'Pmode'.
  
! 'stack_protect_combined_set'
!      This pattern, if defined, moves a 'ptr_mode' value from an address
       whose declaration RTX is given in operand 1 to the memory in
       operand 0 without leaving the value in a register afterward.  If
       several instructions are needed by the target to perform the
       operation (eg.  to load the address from a GOT entry then load the
!      'ptr_mode' value and finally store it), it is the backend's
       responsibility to ensure no intermediate result gets spilled.  This
       is to avoid leaking the value some place that an attacker might use
       to rewrite the stack guard slot after having clobbered it.
  
       If this pattern is not defined, then the address declaration is
!      expanded first in the standard way and a 'stack_protect_set'
       pattern is then generated to move the value from that address to
       the address in operand 0.
  
! 'stack_protect_set'
!      This pattern, if defined, moves a 'ptr_mode' value from the valid
       memory location in operand 1 to the memory in operand 0 without
       leaving the value in a register afterward.  This is to avoid
       leaking the value some place that an attacker might use to rewrite
--- 30251,30305 ----
       atomic operation is performed.  Operand 2 is the second operand to
       the binary operator.  Operand 3 is the memory model to be used by
       the operation.  Operand 4 is an integer holding the comparison
!      code, one of â€˜EQâ€™, â€˜NEâ€™, â€˜LTâ€™, â€˜GTâ€™, â€˜LEâ€™ or â€˜GEâ€™.
  
       If these patterns are not defined, attempts will be made to use
       separate atomic operation and fetch pattern followed by comparison
       of the result against zero.
  
! â€˜mem_thread_fenceâ€™
       This pattern emits code required to implement a thread fence with
       memory model semantics.  Operand 0 is the memory model to be used.
  
!      For the â€˜__ATOMIC_RELAXEDâ€™ model no instructions need to be issued
       and this expansion is not invoked.
  
       The compiler always emits a compiler memory barrier regardless of
       what expanding this pattern produced.
  
       If this pattern is not defined, the compiler falls back to
!      expanding the â€˜memory_barrierâ€™ pattern, then to emitting
!      â€˜__sync_synchronizeâ€™ library call, and finally to just placing a
       compiler memory barrier.
  
! â€˜get_thread_pointerMODEâ€™
! â€˜set_thread_pointerMODEâ€™
       These patterns emit code that reads/sets the TLS thread pointer.
       Currently, these are only needed if the target needs to support the
!      â€˜__builtin_thread_pointerâ€™ and â€˜__builtin_set_thread_pointerâ€™
       builtins.
  
       The get/set patterns have a single output/input operand
!      respectively, with MODE intended to be â€˜Pmodeâ€™.
  
! â€˜stack_protect_combined_setâ€™
!      This pattern, if defined, moves a â€˜ptr_modeâ€™ value from an address
       whose declaration RTX is given in operand 1 to the memory in
       operand 0 without leaving the value in a register afterward.  If
       several instructions are needed by the target to perform the
       operation (eg.  to load the address from a GOT entry then load the
!      â€˜ptr_modeâ€™ value and finally store it), it is the backend's
       responsibility to ensure no intermediate result gets spilled.  This
       is to avoid leaking the value some place that an attacker might use
       to rewrite the stack guard slot after having clobbered it.
  
       If this pattern is not defined, then the address declaration is
!      expanded first in the standard way and a â€˜stack_protect_setâ€™
       pattern is then generated to move the value from that address to
       the address in operand 0.
  
! â€˜stack_protect_setâ€™
!      This pattern, if defined, moves a â€˜ptr_modeâ€™ value from the valid
       memory location in operand 1 to the memory in operand 0 without
       leaving the value in a register afterward.  This is to avoid
       leaking the value some place that an attacker might use to rewrite
*************** pattern to accomplish a certain task.
*** 30308,30332 ****
       If this pattern is not defined, then a plain move pattern is
       generated.
  
! 'stack_protect_combined_test'
!      This pattern, if defined, compares a 'ptr_mode' value from an
       address whose declaration RTX is given in operand 1 with the memory
       in operand 0 without leaving the value in a register afterward and
       branches to operand 2 if the values were equal.  If several
       instructions are needed by the target to perform the operation (eg.
!      to load the address from a GOT entry then load the 'ptr_mode' value
       and finally store it), it is the backend's responsibility to ensure
       no intermediate result gets spilled.  This is to avoid leaking the
       value some place that an attacker might use to rewrite the stack
       guard slot after having clobbered it.
  
       If this pattern is not defined, then the address declaration is
!      expanded first in the standard way and a 'stack_protect_test'
       pattern is then generated to compare the value from that address to
       the value at the memory in operand 0.
  
! 'stack_protect_test'
!      This pattern, if defined, compares a 'ptr_mode' value from the
       valid memory location in operand 1 with the memory in operand 0
       without leaving the value in a register afterward and branches to
       operand 2 if the values were equal.
--- 30312,30336 ----
       If this pattern is not defined, then a plain move pattern is
       generated.
  
! â€˜stack_protect_combined_testâ€™
!      This pattern, if defined, compares a â€˜ptr_modeâ€™ value from an
       address whose declaration RTX is given in operand 1 with the memory
       in operand 0 without leaving the value in a register afterward and
       branches to operand 2 if the values were equal.  If several
       instructions are needed by the target to perform the operation (eg.
!      to load the address from a GOT entry then load the â€˜ptr_modeâ€™ value
       and finally store it), it is the backend's responsibility to ensure
       no intermediate result gets spilled.  This is to avoid leaking the
       value some place that an attacker might use to rewrite the stack
       guard slot after having clobbered it.
  
       If this pattern is not defined, then the address declaration is
!      expanded first in the standard way and a â€˜stack_protect_testâ€™
       pattern is then generated to compare the value from that address to
       the value at the memory in operand 0.
  
! â€˜stack_protect_testâ€™
!      This pattern, if defined, compares a â€˜ptr_modeâ€™ value from the
       valid memory location in operand 1 with the memory in operand 0
       without leaving the value in a register afterward and branches to
       operand 2 if the values were equal.
*************** pattern to accomplish a certain task.
*** 30334,30383 ****
       If this pattern is not defined, then a plain compare pattern and
       conditional branch pattern is used.
  
! 'clear_cache'
       This pattern, if defined, flushes the instruction cache for a
       region of memory.  The region is bounded to by the Pmode pointers
       in operand 0 inclusive and operand 1 exclusive.
  
       If this pattern is not defined, a call to the library function
!      '__clear_cache' is used.
  
! 'spaceshipM4'
       Initialize output operand 0 with mode of integer type to -1, 0, 1
       or 2 if operand 1 with mode M compares less than operand 2, equal
       to operand 2, greater than operand 2 or is unordered with operand
!      2.  Operand 3 should be 'const0_rtx' if the result is used in
!      comparisons, 'const1_rtx' if the result is used as integer value
!      and the comparison is integral unsigned, 'constm1_rtx' if the
       result is used as integer value and the comparison is integral
!      signed and some other 'CONST_INT' if the result is used as integer
       value and the comparison is floating point.  In the last case,
       instead of setting output operand 0 to 2 for unordered, set it to
       operand 3.  M should be a scalar floating point mode.
  
!      This pattern is not allowed to 'FAIL'.
  
! 'isfiniteM2'
       Return 1 if operand 1 is a finite floating point number and 0
       otherwise.  M is a scalar floating point mode.  Operand 0 has mode
!      'SImode', and operand 1 has mode M.
  
! 'isnormalM2'
       Return 1 if operand 1 is a normal floating point number and 0
       otherwise.  M is a scalar floating point mode.  Operand 0 has mode
!      'SImode', and operand 1 has mode M.
  
! 'crcMN4'
       Calculate a bit-forward CRC using operands 1, 2 and 3, then store
       the result in operand 0.  Operands 1 is the initial CRC, operands 2
       is the data and operands 3 is the polynomial without leading 1.
       Operands 0, 1 and 3 have mode N and operand 2 has mode M, where
       both modes are integers.  The size of CRC to be calculated is
!      determined by the mode; for example, if N is 'HImode', a CRC16 is
       calculated.
  
! 'crc_revMN4'
!      Similar to 'crcMN4', but calculates a bit-reversed CRC.
  
  
  File: gccint.info,  Node: Pattern Ordering,  Next: Dependent Patterns,  Prev: Standard Names,  Up: Machine Desc
--- 30338,30387 ----
       If this pattern is not defined, then a plain compare pattern and
       conditional branch pattern is used.
  
! â€˜clear_cacheâ€™
       This pattern, if defined, flushes the instruction cache for a
       region of memory.  The region is bounded to by the Pmode pointers
       in operand 0 inclusive and operand 1 exclusive.
  
       If this pattern is not defined, a call to the library function
!      â€˜__clear_cacheâ€™ is used.
  
! â€˜spaceshipM4â€™
       Initialize output operand 0 with mode of integer type to -1, 0, 1
       or 2 if operand 1 with mode M compares less than operand 2, equal
       to operand 2, greater than operand 2 or is unordered with operand
!      2.  Operand 3 should be â€˜const0_rtxâ€™ if the result is used in
!      comparisons, â€˜const1_rtxâ€™ if the result is used as integer value
!      and the comparison is integral unsigned, â€˜constm1_rtxâ€™ if the
       result is used as integer value and the comparison is integral
!      signed and some other â€˜CONST_INTâ€™ if the result is used as integer
       value and the comparison is floating point.  In the last case,
       instead of setting output operand 0 to 2 for unordered, set it to
       operand 3.  M should be a scalar floating point mode.
  
!      This pattern is not allowed to â€˜FAILâ€™.
  
! â€˜isfiniteM2â€™
       Return 1 if operand 1 is a finite floating point number and 0
       otherwise.  M is a scalar floating point mode.  Operand 0 has mode
!      â€˜SImodeâ€™, and operand 1 has mode M.
  
! â€˜isnormalM2â€™
       Return 1 if operand 1 is a normal floating point number and 0
       otherwise.  M is a scalar floating point mode.  Operand 0 has mode
!      â€˜SImodeâ€™, and operand 1 has mode M.
  
! â€˜crcMN4â€™
       Calculate a bit-forward CRC using operands 1, 2 and 3, then store
       the result in operand 0.  Operands 1 is the initial CRC, operands 2
       is the data and operands 3 is the polynomial without leading 1.
       Operands 0, 1 and 3 have mode N and operand 2 has mode M, where
       both modes are integers.  The size of CRC to be calculated is
!      determined by the mode; for example, if N is â€˜HImodeâ€™, a CRC16 is
       calculated.
  
! â€˜crc_revMN4â€™
!      Similar to â€˜crcMN4â€™, but calculates a bit-reversed CRC.
  
  
  File: gccint.info,  Node: Pattern Ordering,  Next: Dependent Patterns,  Prev: Standard Names,  Up: Machine Desc
*************** Constant integers do not specify a machi
*** 30423,30429 ****
  extend a constant value could match either pattern.  The pattern it
  actually will match is the one that appears first in the file.  For
  correct results, this must be the one for the widest possible mode
! ('HImode', here).  If the pattern matches the 'QImode' instruction, the
  results will be incorrect if the constant value does not actually fit
  that mode.
  
--- 30427,30433 ----
  extend a constant value could match either pattern.  The pattern it
  actually will match is the one that appears first in the file.  For
  correct results, this must be the one for the widest possible mode
! (â€˜HImodeâ€™, here).  If the pattern matches the â€˜QImodeâ€™ instruction, the
  results will be incorrect if the constant value does not actually fit
  that mode.
  
*************** File: gccint.info,  Node: Jump Patterns,
*** 30447,30459 ****
  
  GCC does not assume anything about how the machine realizes jumps.  The
  machine description should define a single pattern, usually a
! 'define_expand', which expands to all the required insns.
  
   Usually, this would be a comparison insn to set the condition code and
  a separate branch insn testing the condition code and branching or not
  according to its value.  For many machines, however, separating compares
  and branches is limiting, which is why the more flexible approach with
! one 'define_expand' is used in GCC. The machine description becomes
  clearer for architectures that have compare-and-branch instructions but
  no condition code.  It also works better when different sets of
  comparison operators are supported by different kinds of conditional
--- 30451,30463 ----
  
  GCC does not assume anything about how the machine realizes jumps.  The
  machine description should define a single pattern, usually a
! â€˜define_expandâ€™, which expands to all the required insns.
  
   Usually, this would be a comparison insn to set the condition code and
  a separate branch insn testing the condition code and branching or not
  according to its value.  For many machines, however, separating compares
  and branches is limiting, which is why the more flexible approach with
! one â€˜define_expandâ€™ is used in GCC. The machine description becomes
  clearer for architectures that have compare-and-branch instructions but
  no condition code.  It also works better when different sets of
  comparison operators are supported by different kinds of conditional
*************** File: gccint.info,  Node: Looping Patter
*** 30478,30484 ****
  ===========================================
  
  Some machines have special jump instructions that can be utilized to
! make loops more efficient.  A common example is the 68000 'dbra'
  instruction which performs a decrement of a register and a branch if the
  result was greater than zero.  Other machines, in particular digital
  signal processors (DSPs), have special block repeat instructions to
--- 30482,30488 ----
  ===========================================
  
  Some machines have special jump instructions that can be utilized to
! make loops more efficient.  A common example is the 68000 â€˜dbraâ€™
  instruction which performs a decrement of a register and a branch if the
  result was greater than zero.  Other machines, in particular digital
  signal processors (DSPs), have special block repeat instructions to
*************** provide low-overhead loop support.  For
*** 30486,30510 ****
  DSPs have a block repeat instruction that loads special registers to
  mark the top and end of a loop and to count the number of loop
  iterations.  This avoids the need for fetching and executing a
! 'dbra'-like instruction and avoids pipeline stalls associated with the
  jump.
  
   GCC has two special named patterns to support low overhead looping.
! They are 'doloop_begin' and 'doloop_end'.  These are emitted by the loop
  optimizer for certain well-behaved loops with a finite number of loop
  iterations using information collected during strength reduction.
  
!  The 'doloop_end' pattern describes the actual looping instruction (or
! the implicit looping operation) and the 'doloop_begin' pattern is an
  optional companion pattern that can be used for initialization needed
  for some low-overhead looping instructions.
  
   Note that some machines require the actual looping instruction to be
  emitted at the top of the loop (e.g., the TMS320C3x/C4x DSPs).  Emitting
  the true RTL for a looping instruction at the top of the loop can cause
! problems with flow analysis.  So instead, a dummy 'doloop' insn is
  emitted at the end of the loop.  The machine dependent reorg pass checks
! for the presence of this 'doloop' insn and then searches back to the top
  of the loop, where it inserts the true looping insn (provided there are
  no instructions in the loop which would cause problems).  Any additional
  labels can be emitted at this point.  In addition, if the desired
--- 30490,30514 ----
  DSPs have a block repeat instruction that loads special registers to
  mark the top and end of a loop and to count the number of loop
  iterations.  This avoids the need for fetching and executing a
! â€˜dbraâ€™-like instruction and avoids pipeline stalls associated with the
  jump.
  
   GCC has two special named patterns to support low overhead looping.
! They are â€˜doloop_beginâ€™ and â€˜doloop_endâ€™.  These are emitted by the loop
  optimizer for certain well-behaved loops with a finite number of loop
  iterations using information collected during strength reduction.
  
!  The â€˜doloop_endâ€™ pattern describes the actual looping instruction (or
! the implicit looping operation) and the â€˜doloop_beginâ€™ pattern is an
  optional companion pattern that can be used for initialization needed
  for some low-overhead looping instructions.
  
   Note that some machines require the actual looping instruction to be
  emitted at the top of the loop (e.g., the TMS320C3x/C4x DSPs).  Emitting
  the true RTL for a looping instruction at the top of the loop can cause
! problems with flow analysis.  So instead, a dummy â€˜doloopâ€™ insn is
  emitted at the end of the loop.  The machine dependent reorg pass checks
! for the presence of this â€˜doloopâ€™ insn and then searches back to the top
  of the loop, where it inserts the true looping insn (provided there are
  no instructions in the loop which would cause problems).  Any additional
  labels can be emitted at this point.  In addition, if the desired
*************** special iteration counter register was n
*** 30512,30524 ****
  dependent reorg pass could emit a traditional compare and jump
  instruction pair.
  
!  For the 'doloop_end' pattern, the loop optimizer allocates an
  additional pseudo register as an iteration counter.  This pseudo
  register cannot be used within the loop (i.e., general induction
  variables cannot be derived from it), however, in many cases the loop
  induction variable may become redundant and removed by the flow pass.
  
!  The 'doloop_end' pattern must have a specific structure to be handled
  correctly by GCC. The example below is taken (slightly simplified) from
  the PDP-11 target:
  
--- 30516,30528 ----
  dependent reorg pass could emit a traditional compare and jump
  instruction pair.
  
!  For the â€˜doloop_endâ€™ pattern, the loop optimizer allocates an
  additional pseudo register as an iteration counter.  This pseudo
  register cannot be used within the loop (i.e., general induction
  variables cannot be derived from it), however, in many cases the loop
  induction variable may become redundant and removed by the flow pass.
  
!  The â€˜doloop_endâ€™ pattern must have a specific structure to be handled
  correctly by GCC. The example below is taken (slightly simplified) from
  the PDP-11 target:
  
*************** the PDP-11 target:
*** 30562,30595 ****
   The first part of the pattern describes the branch condition.  GCC
  supports three cases for the way the target machine handles the loop
  counter:
!    * Loop terminates when the loop register decrements to zero.  This is
!      represented by a 'ne' comparison of the register (its old value)
       with constant 1 (as in the example above).
!    * Loop terminates when the loop register decrements to -1.  This is
!      represented by a 'ne' comparison of the register with constant
       zero.
!    * Loop terminates when the loop register decrements to a negative
!      value.  This is represented by a 'ge' comparison of the register
!      with constant zero.  For this case, GCC will attach a 'REG_NONNEG'
!      note to the 'doloop_end' insn if it can determine that the register
       will be non-negative.
  
!  Since the 'doloop_end' insn is a jump insn that also has an output, the
  reload pass does not handle the output operand.  Therefore, the
  constraint must allow for that operand to be in memory rather than a
  register.  In the example shown above, that is handled (in the
! 'doloop_end_insn' pattern) by using a loop instruction sequence that can
  handle memory operands when the memory alternative appears.
  
   GCC does not check the mode of the loop register operand when
! generating the 'doloop_end' pattern.  If the pattern is only valid for
! some modes but not others, the pattern should be a 'define_expand'
  pattern that checks the operand mode in the preparation code, and issues
! 'FAIL' if an unsupported mode is found.  The example above does this,
! since the machine instruction to be used only exists for 'HImode'.
  
!  If the 'doloop_end' pattern is a 'define_expand', there must also be a
! 'define_insn' or 'define_insn_and_split' matching the generated pattern.
  Otherwise, the compiler will fail during loop optimization.
  
  
--- 30566,30599 ----
   The first part of the pattern describes the branch condition.  GCC
  supports three cases for the way the target machine handles the loop
  counter:
!    â€¢ Loop terminates when the loop register decrements to zero.  This is
!      represented by a â€˜neâ€™ comparison of the register (its old value)
       with constant 1 (as in the example above).
!    â€¢ Loop terminates when the loop register decrements to âˆ’1.  This is
!      represented by a â€˜neâ€™ comparison of the register with constant
       zero.
!    â€¢ Loop terminates when the loop register decrements to a negative
!      value.  This is represented by a â€˜geâ€™ comparison of the register
!      with constant zero.  For this case, GCC will attach a â€˜REG_NONNEGâ€™
!      note to the â€˜doloop_endâ€™ insn if it can determine that the register
       will be non-negative.
  
!  Since the â€˜doloop_endâ€™ insn is a jump insn that also has an output, the
  reload pass does not handle the output operand.  Therefore, the
  constraint must allow for that operand to be in memory rather than a
  register.  In the example shown above, that is handled (in the
! â€˜doloop_end_insnâ€™ pattern) by using a loop instruction sequence that can
  handle memory operands when the memory alternative appears.
  
   GCC does not check the mode of the loop register operand when
! generating the â€˜doloop_endâ€™ pattern.  If the pattern is only valid for
! some modes but not others, the pattern should be a â€˜define_expandâ€™
  pattern that checks the operand mode in the preparation code, and issues
! â€˜FAILâ€™ if an unsupported mode is found.  The example above does this,
! since the machine instruction to be used only exists for â€˜HImodeâ€™.
  
!  If the â€˜doloop_endâ€™ pattern is a â€˜define_expandâ€™, there must also be a
! â€˜define_insnâ€™ or â€˜define_insn_and_splitâ€™ matching the generated pattern.
  Otherwise, the compiler will fail during loop optimization.
  
  
*************** number of insn patterns required.
*** 30608,30645 ****
   In addition to algebraic simplifications, following canonicalizations
  are performed:
  
!    * For commutative and comparison operators, a constant is always made
       the second operand.  If a machine only supports a constant as the
       second operand, only patterns that match a constant in the second
       operand need be supplied.
  
!    * For the 'vec_merge' with constant mask(the third operand), the
       first and the second operand can be exchanged by inverting the
       mask.  In such cases, a constant is always made the second operand,
       otherwise the least significant bit of the mask is always
       set(select the first operand first).
  
!    * For associative operators, a sequence of operators will always
       chain to the left; for instance, only the left operand of an
!      integer 'plus' can itself be a 'plus'.  'and', 'ior', 'xor',
!      'plus', 'mult', 'smin', 'smax', 'umin', and 'umax' are associative
       when applied to integers, and sometimes to floating-point.
  
!    * For these operators, if only one operand is a 'neg', 'not', 'mult',
!      'plus', or 'minus' expression, it will be the first operand.
  
!    * In combinations of 'neg', 'mult', 'plus', and 'minus', the 'neg'
       operations (if any) will be moved inside the operations as far as
!      possible.  For instance, '(neg (mult A B))' is canonicalized as
!      '(mult (neg A) B)', but '(plus (mult (neg B) C) A)' is
!      canonicalized as '(minus A (mult B C))'.
  
!    * For the 'compare' operator, a constant is always the second operand
       if the first argument is a condition code register.
  
!    * For instructions that inherently set a condition code register, the
!      'compare' operator is always written as the first RTL expression of
!      the 'parallel' instruction pattern.  For example,
  
            (define_insn ""
              [(set (reg:CCZ FLAGS_REG)
--- 30612,30649 ----
   In addition to algebraic simplifications, following canonicalizations
  are performed:
  
!    â€¢ For commutative and comparison operators, a constant is always made
       the second operand.  If a machine only supports a constant as the
       second operand, only patterns that match a constant in the second
       operand need be supplied.
  
!    â€¢ For the â€˜vec_mergeâ€™ with constant mask(the third operand), the
       first and the second operand can be exchanged by inverting the
       mask.  In such cases, a constant is always made the second operand,
       otherwise the least significant bit of the mask is always
       set(select the first operand first).
  
!    â€¢ For associative operators, a sequence of operators will always
       chain to the left; for instance, only the left operand of an
!      integer â€˜plusâ€™ can itself be a â€˜plusâ€™.  â€˜andâ€™, â€˜iorâ€™, â€˜xorâ€™,
!      â€˜plusâ€™, â€˜multâ€™, â€˜sminâ€™, â€˜smaxâ€™, â€˜uminâ€™, and â€˜umaxâ€™ are associative
       when applied to integers, and sometimes to floating-point.
  
!    â€¢ For these operators, if only one operand is a â€˜negâ€™, â€˜notâ€™, â€˜multâ€™,
!      â€˜plusâ€™, or â€˜minusâ€™ expression, it will be the first operand.
  
!    â€¢ In combinations of â€˜negâ€™, â€˜multâ€™, â€˜plusâ€™, and â€˜minusâ€™, the â€˜negâ€™
       operations (if any) will be moved inside the operations as far as
!      possible.  For instance, â€˜(neg (mult A B))â€™ is canonicalized as
!      â€˜(mult (neg A) B)â€™, but â€˜(plus (mult (neg B) C) A)â€™ is
!      canonicalized as â€˜(minus A (mult B C))â€™.
  
!    â€¢ For the â€˜compareâ€™ operator, a constant is always the second operand
       if the first argument is a condition code register.
  
!    â€¢ For instructions that inherently set a condition code register, the
!      â€˜compareâ€™ operator is always written as the first RTL expression of
!      the â€˜parallelâ€™ instruction pattern.  For example,
  
            (define_insn ""
              [(set (reg:CCZ FLAGS_REG)
*************** are performed:
*** 30653,30673 ****
              ""
              "addl %0, %1, %2")
  
!    * An operand of 'neg', 'not', 'mult', 'plus', or 'minus' is made the
       first operand under the same conditions as above.
  
!    * '(ltu (plus A B) B)' is converted to '(ltu (plus A B) A)'.
!      Likewise with 'geu' instead of 'ltu'.
  
!    * '(minus X (const_int N))' is converted to '(plus X (const_int
!      -N))'.
  
!    * Within address computations (i.e., inside 'mem'), a left shift is
       converted into the appropriate multiplication by a power of two.
  
!    * De Morgan's Law is used to move bitwise negation inside a bitwise
       logical-and or logical-or operation.  If this results in only one
!      operand being a 'not' expression, it will be the first one.
  
       A machine that has an instruction that performs a bitwise
       logical-and of one operand with the bitwise negation of the other
--- 30657,30677 ----
              ""
              "addl %0, %1, %2")
  
!    â€¢ An operand of â€˜negâ€™, â€˜notâ€™, â€˜multâ€™, â€˜plusâ€™, or â€˜minusâ€™ is made the
       first operand under the same conditions as above.
  
!    â€¢ â€˜(ltu (plus A B) B)â€™ is converted to â€˜(ltu (plus A B) A)â€™.
!      Likewise with â€˜geuâ€™ instead of â€˜ltuâ€™.
  
!    â€¢ â€˜(minus X (const_int N))â€™ is converted to â€˜(plus X (const_int
!      -N))â€™.
  
!    â€¢ Within address computations (i.e., inside â€˜memâ€™), a left shift is
       converted into the appropriate multiplication by a power of two.
  
!    â€¢ De Morgan's Law is used to move bitwise negation inside a bitwise
       logical-and or logical-or operation.  If this results in only one
!      operand being a â€˜notâ€™ expression, it will be the first one.
  
       A machine that has an instruction that performs a bitwise
       logical-and of one operand with the bitwise negation of the other
*************** are performed:
*** 30692,30724 ****
       In both cases, it is not necessary to include patterns for the many
       logically equivalent RTL expressions.
  
!    * The only possible RTL expressions involving both bitwise
!      exclusive-or and bitwise negation are '(xor:M X Y)' and '(not:M
!      (xor:M X Y))'.
  
!    * The sum of three items, one of which is a constant, will only
       appear in the form
  
            (plus:M (plus:M X Y) CONSTANT)
  
!    * Equality comparisons of a group of bits (usually a single bit) with
!      zero will be written using 'zero_extract' rather than the
!      equivalent 'and' or 'sign_extract' operations.
  
!    * '(sign_extend:M1 (mult:M2 (sign_extend:M2 X) (sign_extend:M2 Y)))'
!      is converted to '(mult:M1 (sign_extend:M1 X) (sign_extend:M1 Y))',
!      and likewise for 'zero_extend'.
  
!    * '(sign_extend:M1 (mult:M2 (ashiftrt:M2 X S) (sign_extend:M2 Y)))'
!      is converted to '(mult:M1 (sign_extend:M1 (ashiftrt:M2 X S))
!      (sign_extend:M1 Y))', and likewise for patterns using 'zero_extend'
!      and 'lshiftrt'.  If the second operand of 'mult' is also a shift,
       then that is extended also.  This transformation is only applied
       when it can be proven that the original operation had sufficient
       precision to prevent overflow.
  
   Further canonicalization rules are defined in the function
! 'commutative_operand_precedence' in 'gcc/rtlanal.cc'.
  
  
  File: gccint.info,  Node: Expander Definitions,  Next: Insn Splitting,  Prev: Insn Canonicalizations,  Up: Machine Desc
--- 30696,30728 ----
       In both cases, it is not necessary to include patterns for the many
       logically equivalent RTL expressions.
  
!    â€¢ The only possible RTL expressions involving both bitwise
!      exclusive-or and bitwise negation are â€˜(xor:M X Y)â€™ and â€˜(not:M
!      (xor:M X Y))â€™.
  
!    â€¢ The sum of three items, one of which is a constant, will only
       appear in the form
  
            (plus:M (plus:M X Y) CONSTANT)
  
!    â€¢ Equality comparisons of a group of bits (usually a single bit) with
!      zero will be written using â€˜zero_extractâ€™ rather than the
!      equivalent â€˜andâ€™ or â€˜sign_extractâ€™ operations.
  
!    â€¢ â€˜(sign_extend:M1 (mult:M2 (sign_extend:M2 X) (sign_extend:M2 Y)))â€™
!      is converted to â€˜(mult:M1 (sign_extend:M1 X) (sign_extend:M1 Y))â€™,
!      and likewise for â€˜zero_extendâ€™.
  
!    â€¢ â€˜(sign_extend:M1 (mult:M2 (ashiftrt:M2 X S) (sign_extend:M2 Y)))â€™
!      is converted to â€˜(mult:M1 (sign_extend:M1 (ashiftrt:M2 X S))
!      (sign_extend:M1 Y))â€™, and likewise for patterns using â€˜zero_extendâ€™
!      and â€˜lshiftrtâ€™.  If the second operand of â€˜multâ€™ is also a shift,
       then that is extended also.  This transformation is only applied
       when it can be proven that the original operation had sufficient
       precision to prevent overflow.
  
   Further canonicalization rules are defined in the function
! â€˜commutative_operand_precedenceâ€™ in â€˜gcc/rtlanal.ccâ€™.
  
  
  File: gccint.info,  Node: Expander Definitions,  Next: Insn Splitting,  Prev: Insn Canonicalizations,  Up: Machine Desc
*************** File: gccint.info,  Node: Expander Defin
*** 30729,30773 ****
  On some target machines, some standard pattern names for RTL generation
  cannot be handled with single insn, but a sequence of RTL insns can
  represent them.  For these target machines, you can write a
! 'define_expand' to specify how to generate the sequence of RTL.
  
!  A 'define_expand' is an RTL expression that looks almost like a
! 'define_insn'; but, unlike the latter, a 'define_expand' is used only
  for RTL generation and it can produce more than one RTL insn.
  
!  A 'define_expand' RTX has four operands:
  
!    * The name.  Each 'define_expand' must have a name, since the only
       use for it is to refer to it by name.
  
!    * The RTL template.  This is a vector of RTL expressions representing
!      a sequence of separate instructions.  Unlike 'define_insn', there
!      is no implicit surrounding 'PARALLEL'.
  
!    * The condition, a string containing a C expression.  This expression
       is used to express how the availability of this pattern depends on
       subclasses of target machine, selected by command-line options when
!      GCC is run.  This is just like the condition of a 'define_insn'
       that has a standard name.  Therefore, the condition (if present)
       may not depend on the data in the insn being matched, but only the
       target-machine-type flags.  The compiler needs to test these
       conditions during initialization in order to learn exactly which
       named instructions are available in a particular run.
  
!    * The preparation statements, a string containing zero or more C
       statements which are to be executed before RTL code is generated
       from the RTL template.
  
       Usually these statements prepare temporary registers for use as
       internal operands in the RTL template, but they can also generate
!      RTL insns directly by calling routines such as 'emit_insn', etc.
       Any such insns precede the ones that come from the RTL template.
  
!    * Optionally, a vector containing the values of attributes.  *Note
       Insn Attributes::.
  
!  Every RTL insn emitted by a 'define_expand' must match some
! 'define_insn' in the machine description.  Otherwise, the compiler will
  crash when trying to generate code for the insn or trying to optimize
  it.
  
--- 30733,30777 ----
  On some target machines, some standard pattern names for RTL generation
  cannot be handled with single insn, but a sequence of RTL insns can
  represent them.  For these target machines, you can write a
! â€˜define_expandâ€™ to specify how to generate the sequence of RTL.
  
!  A â€˜define_expandâ€™ is an RTL expression that looks almost like a
! â€˜define_insnâ€™; but, unlike the latter, a â€˜define_expandâ€™ is used only
  for RTL generation and it can produce more than one RTL insn.
  
!  A â€˜define_expandâ€™ RTX has four operands:
  
!    â€¢ The name.  Each â€˜define_expandâ€™ must have a name, since the only
       use for it is to refer to it by name.
  
!    â€¢ The RTL template.  This is a vector of RTL expressions representing
!      a sequence of separate instructions.  Unlike â€˜define_insnâ€™, there
!      is no implicit surrounding â€˜PARALLELâ€™.
  
!    â€¢ The condition, a string containing a C expression.  This expression
       is used to express how the availability of this pattern depends on
       subclasses of target machine, selected by command-line options when
!      GCC is run.  This is just like the condition of a â€˜define_insnâ€™
       that has a standard name.  Therefore, the condition (if present)
       may not depend on the data in the insn being matched, but only the
       target-machine-type flags.  The compiler needs to test these
       conditions during initialization in order to learn exactly which
       named instructions are available in a particular run.
  
!    â€¢ The preparation statements, a string containing zero or more C
       statements which are to be executed before RTL code is generated
       from the RTL template.
  
       Usually these statements prepare temporary registers for use as
       internal operands in the RTL template, but they can also generate
!      RTL insns directly by calling routines such as â€˜emit_insnâ€™, etc.
       Any such insns precede the ones that come from the RTL template.
  
!    â€¢ Optionally, a vector containing the values of attributes.  *Note
       Insn Attributes::.
  
!  Every RTL insn emitted by a â€˜define_expandâ€™ must match some
! â€˜define_insnâ€™ in the machine description.  Otherwise, the compiler will
  crash when trying to generate code for the insn or trying to optimize
  it.
  
*************** also describes the operands that need to
*** 30776,30825 ****
  is used.  In particular, it gives a predicate for each operand.
  
   A true operand, which needs to be specified in order to generate RTL
! from the pattern, should be described with a 'match_operand' in its
  first occurrence in the RTL template.  This enters information on the
  operand's predicate into the tables that record such things.  GCC uses
  the information to preload the operand into a register if that is
  required for valid RTL code.  If the operand is referred to more than
! once, subsequent references should use 'match_dup'.
  
   The RTL template may also refer to internal "operands" which are
  temporary registers or labels used only within the sequence made by the
! 'define_expand'.  Internal operands are substituted into the RTL
! template with 'match_dup', never with 'match_operand'.  The values of
  the internal operands are not passed in as arguments by the compiler
  when it requests use of this pattern.  Instead, they are computed within
  the pattern, in the preparation statements.  These statements compute
! the values and store them into the appropriate elements of 'operands' so
! that 'match_dup' can find them.
  
   There are two special macros defined for use in the preparation
! statements: 'DONE' and 'FAIL'.  Use them with a following semicolon, as
  a statement.
  
! 'DONE'
!      Use the 'DONE' macro to end RTL generation for the pattern.  The
       only RTL insns resulting from the pattern on this occasion will be
!      those already emitted by explicit calls to 'emit_insn' within the
       preparation statements; the RTL template will not be generated.
  
! 'FAIL'
       Make the pattern fail on this occasion.  When a pattern fails, it
       means that the pattern was not truly available.  The calling
       routines in the compiler will try other strategies for code
       generation using other patterns.
  
       Failure is currently supported only for binary (addition,
!      multiplication, shifting, etc.)  and bit-field ('extv', 'extzv',
!      and 'insv') operations.
  
!  If the preparation falls through (invokes neither 'DONE' nor 'FAIL'),
! then the 'define_expand' acts like a 'define_insn' in that the RTL
  template is used to generate the insn.
  
   The RTL template is not used for matching, only for generating the
! initial insn list.  If the preparation statement always invokes 'DONE'
! or 'FAIL', the RTL template may be reduced to a simple list of operands,
  such as this example:
  
       (define_expand "addsi3"
--- 30780,30829 ----
  is used.  In particular, it gives a predicate for each operand.
  
   A true operand, which needs to be specified in order to generate RTL
! from the pattern, should be described with a â€˜match_operandâ€™ in its
  first occurrence in the RTL template.  This enters information on the
  operand's predicate into the tables that record such things.  GCC uses
  the information to preload the operand into a register if that is
  required for valid RTL code.  If the operand is referred to more than
! once, subsequent references should use â€˜match_dupâ€™.
  
   The RTL template may also refer to internal "operands" which are
  temporary registers or labels used only within the sequence made by the
! â€˜define_expandâ€™.  Internal operands are substituted into the RTL
! template with â€˜match_dupâ€™, never with â€˜match_operandâ€™.  The values of
  the internal operands are not passed in as arguments by the compiler
  when it requests use of this pattern.  Instead, they are computed within
  the pattern, in the preparation statements.  These statements compute
! the values and store them into the appropriate elements of â€˜operandsâ€™ so
! that â€˜match_dupâ€™ can find them.
  
   There are two special macros defined for use in the preparation
! statements: â€˜DONEâ€™ and â€˜FAILâ€™.  Use them with a following semicolon, as
  a statement.
  
! â€˜DONEâ€™
!      Use the â€˜DONEâ€™ macro to end RTL generation for the pattern.  The
       only RTL insns resulting from the pattern on this occasion will be
!      those already emitted by explicit calls to â€˜emit_insnâ€™ within the
       preparation statements; the RTL template will not be generated.
  
! â€˜FAILâ€™
       Make the pattern fail on this occasion.  When a pattern fails, it
       means that the pattern was not truly available.  The calling
       routines in the compiler will try other strategies for code
       generation using other patterns.
  
       Failure is currently supported only for binary (addition,
!      multiplication, shifting, etc.)  and bit-field (â€˜extvâ€™, â€˜extzvâ€™,
!      and â€˜insvâ€™) operations.
  
!  If the preparation falls through (invokes neither â€˜DONEâ€™ nor â€˜FAILâ€™),
! then the â€˜define_expandâ€™ acts like a â€˜define_insnâ€™ in that the RTL
  template is used to generate the insn.
  
   The RTL template is not used for matching, only for generating the
! initial insn list.  If the preparation statement always invokes â€˜DONEâ€™
! or â€˜FAILâ€™, the RTL template may be reduced to a simple list of operands,
  such as this example:
  
       (define_expand "addsi3"
*************** such as this example:
*** 30848,30863 ****
           FAIL;
       }")
  
! This example uses 'define_expand' so that it can generate an RTL insn
  for shifting when the shift-count is in the supported range of 0 to 3
  but fail in other cases where machine insns aren't available.  When it
  fails, the compiler tries another strategy using different patterns
  (such as, a library call).
  
   If the compiler were able to handle nontrivial condition-strings in
! patterns with names, then it would be possible to use a 'define_insn' in
  that case.  Here is another case (zero-extension on the 68000) which
! makes more use of the power of 'define_expand':
  
       (define_expand "zero_extendhisi2"
         [(set (match_operand:SI 0 "general_operand" "")
--- 30852,30867 ----
           FAIL;
       }")
  
! This example uses â€˜define_expandâ€™ so that it can generate an RTL insn
  for shifting when the shift-count is in the supported range of 0 to 3
  but fail in other cases where machine insns aren't available.  When it
  fails, the compiler tries another strategy using different patterns
  (such as, a library call).
  
   If the compiler were able to handle nontrivial condition-strings in
! patterns with names, then it would be possible to use a â€˜define_insnâ€™ in
  that case.  Here is another case (zero-extension on the 68000) which
! makes more use of the power of â€˜define_expandâ€™:
  
       (define_expand "zero_extendhisi2"
         [(set (match_operand:SI 0 "general_operand" "")
*************** Here two RTL insns are generated, one to
*** 30874,30889 ****
  and the other to copy the input operand into its low half.  This
  sequence is incorrect if the input operand refers to [the old value of]
  the output operand, so the preparation statement makes sure this isn't
! so.  The function 'make_safe_from' copies the 'operands[1]' into a
! temporary register if it refers to 'operands[0]'.  It does this by
  emitting another RTL insn.
  
   Finally, a third example shows the use of an internal operand.
! Zero-extension on the SPUR chip is done by 'and'-ing the result against
! a halfword mask.  But this mask cannot be represented by a 'const_int'
  because the constant value is too large to be legitimate on this
! machine.  So it must be copied into a register with 'force_reg' and then
! the register used in the 'and'.
  
       (define_expand "zero_extendhisi2"
         [(set (match_operand:SI 0 "register_operand" "")
--- 30878,30893 ----
  and the other to copy the input operand into its low half.  This
  sequence is incorrect if the input operand refers to [the old value of]
  the output operand, so the preparation statement makes sure this isn't
! so.  The function â€˜make_safe_fromâ€™ copies the â€˜operands[1]â€™ into a
! temporary register if it refers to â€˜operands[0]â€™.  It does this by
  emitting another RTL insn.
  
   Finally, a third example shows the use of an internal operand.
! Zero-extension on the SPUR chip is done by â€˜andâ€™-ing the result against
! a halfword mask.  But this mask cannot be represented by a â€˜const_intâ€™
  because the constant value is too large to be legitimate on this
! machine.  So it must be copied into a register with â€˜force_regâ€™ and then
! the register used in the â€˜andâ€™.
  
       (define_expand "zero_extendhisi2"
         [(set (match_operand:SI 0 "register_operand" "")
*************** the register used in the 'and'.
*** 30895,30904 ****
         "operands[2]
            = force_reg (SImode, GEN_INT (65535)); ")
  
!  _Note:_ If the 'define_expand' is used to serve a standard binary or
  unary arithmetic operation or a bit-field operation, then the last insn
! it generates must not be a 'code_label', 'barrier' or 'note'.  It must
! be an 'insn', 'jump_insn' or 'call_insn'.  If you don't need a real insn
  at the end, emit an insn to copy the result of the operation into
  itself.  Such an insn will generate no code, but it can avoid problems
  in the compiler.
--- 30899,30908 ----
         "operands[2]
            = force_reg (SImode, GEN_INT (65535)); ")
  
!  _Note:_ If the â€˜define_expandâ€™ is used to serve a standard binary or
  unary arithmetic operation or a bit-field operation, then the last insn
! it generates must not be a â€˜code_labelâ€™, â€˜barrierâ€™ or â€˜noteâ€™.  It must
! be an â€˜insnâ€™, â€˜jump_insnâ€™ or â€˜call_insnâ€™.  If you don't need a real insn
  at the end, emit an insn to copy the result of the operation into
  itself.  Such an insn will generate no code, but it can avoid problems
  in the compiler.
*************** scheduling.
*** 30928,30941 ****
  
   The insn combiner phase also splits putative insns.  If three insns are
  merged into one insn with a complex expression that cannot be matched by
! some 'define_insn' pattern, the combiner phase attempts to split the
  complex pattern into two insns that are recognized.  Usually it can
  break the complex pattern into two patterns by splitting out some
  subexpression.  However, in some other cases, such as performing an
  addition of a large constant in two insns on a RISC machine, the way to
  split the addition into two insns is machine-dependent.
  
!  The 'define_split' definition tells the compiler how to split a complex
  insn into several simpler insns.  It looks like this:
  
       (define_split
--- 30932,30945 ----
  
   The insn combiner phase also splits putative insns.  If three insns are
  merged into one insn with a complex expression that cannot be matched by
! some â€˜define_insnâ€™ pattern, the combiner phase attempts to split the
  complex pattern into two insns that are recognized.  Usually it can
  break the complex pattern into two patterns by splitting out some
  subexpression.  However, in some other cases, such as performing an
  addition of a large constant in two insns on a RISC machine, the way to
  split the addition into two insns is machine-dependent.
  
!  The â€˜define_splitâ€™ definition tells the compiler how to split a complex
  insn into several simpler insns.  It looks like this:
  
       (define_split
*************** insn into several simpler insns.  It loo
*** 30947,30997 ****
         "PREPARATION-STATEMENTS")
  
   INSN-PATTERN is a pattern that needs to be split and CONDITION is the
! final condition to be tested, as in a 'define_insn'.  When an insn
  matching INSN-PATTERN and satisfying CONDITION is found, it is replaced
  in the insn list with the insns given by NEW-INSN-PATTERN-1,
  NEW-INSN-PATTERN-2, etc.
  
   The PREPARATION-STATEMENTS are similar to those statements that are
! specified for 'define_expand' (*note Expander Definitions::) and are
  executed before the new RTL is generated to prepare for the generated
  code or emit some insns whose pattern is not fixed.  Unlike those in
! 'define_expand', however, these statements must not generate any new
  pseudo-registers.  Once reload has completed, they also must not
  allocate any space in the stack frame.
  
   There are two special macros defined for use in the preparation
! statements: 'DONE' and 'FAIL'.  Use them with a following semicolon, as
  a statement.
  
! 'DONE'
!      Use the 'DONE' macro to end RTL generation for the splitter.  The
       only RTL insns generated as replacement for the matched input insn
!      will be those already emitted by explicit calls to 'emit_insn'
       within the preparation statements; the replacement pattern is not
       used.
  
! 'FAIL'
!      Make the 'define_split' fail on this occasion.  When a
!      'define_split' fails, it means that the splitter was not truly
       available for the inputs it was given, and the input insn will not
       be split.
  
!  If the preparation falls through (invokes neither 'DONE' nor 'FAIL'),
! then the 'define_split' uses the replacement template.
  
   Patterns are matched against INSN-PATTERN in two different
  circumstances.  If an insn needs to be split for delay slot scheduling
  or insn scheduling, the insn is already known to be valid, which means
! that it must have been matched by some 'define_insn' and, if
! 'reload_completed' is nonzero, is known to satisfy the constraints of
! that 'define_insn'.  In that case, the new insn patterns must also be
! insns that are matched by some 'define_insn' and, if 'reload_completed'
  is nonzero, must also satisfy the constraints of those definitions.
  
!  As an example of this usage of 'define_split', consider the following
! example from 'a29k.md', which splits a 'sign_extend' from 'HImode' to
! 'SImode' into a pair of shift insns:
  
       (define_split
         [(set (match_operand:SI 0 "gen_reg_operand" "")
--- 30951,31001 ----
         "PREPARATION-STATEMENTS")
  
   INSN-PATTERN is a pattern that needs to be split and CONDITION is the
! final condition to be tested, as in a â€˜define_insnâ€™.  When an insn
  matching INSN-PATTERN and satisfying CONDITION is found, it is replaced
  in the insn list with the insns given by NEW-INSN-PATTERN-1,
  NEW-INSN-PATTERN-2, etc.
  
   The PREPARATION-STATEMENTS are similar to those statements that are
! specified for â€˜define_expandâ€™ (*note Expander Definitions::) and are
  executed before the new RTL is generated to prepare for the generated
  code or emit some insns whose pattern is not fixed.  Unlike those in
! â€˜define_expandâ€™, however, these statements must not generate any new
  pseudo-registers.  Once reload has completed, they also must not
  allocate any space in the stack frame.
  
   There are two special macros defined for use in the preparation
! statements: â€˜DONEâ€™ and â€˜FAILâ€™.  Use them with a following semicolon, as
  a statement.
  
! â€˜DONEâ€™
!      Use the â€˜DONEâ€™ macro to end RTL generation for the splitter.  The
       only RTL insns generated as replacement for the matched input insn
!      will be those already emitted by explicit calls to â€˜emit_insnâ€™
       within the preparation statements; the replacement pattern is not
       used.
  
! â€˜FAILâ€™
!      Make the â€˜define_splitâ€™ fail on this occasion.  When a
!      â€˜define_splitâ€™ fails, it means that the splitter was not truly
       available for the inputs it was given, and the input insn will not
       be split.
  
!  If the preparation falls through (invokes neither â€˜DONEâ€™ nor â€˜FAILâ€™),
! then the â€˜define_splitâ€™ uses the replacement template.
  
   Patterns are matched against INSN-PATTERN in two different
  circumstances.  If an insn needs to be split for delay slot scheduling
  or insn scheduling, the insn is already known to be valid, which means
! that it must have been matched by some â€˜define_insnâ€™ and, if
! â€˜reload_completedâ€™ is nonzero, is known to satisfy the constraints of
! that â€˜define_insnâ€™.  In that case, the new insn patterns must also be
! insns that are matched by some â€˜define_insnâ€™ and, if â€˜reload_completedâ€™
  is nonzero, must also satisfy the constraints of those definitions.
  
!  As an example of this usage of â€˜define_splitâ€™, consider the following
! example from â€˜a29k.mdâ€™, which splits a â€˜sign_extendâ€™ from â€˜HImodeâ€™ to
! â€˜SImodeâ€™ into a pair of shift insns:
  
       (define_split
         [(set (match_operand:SI 0 "gen_reg_operand" "")
*************** example from 'a29k.md', which splits a '
*** 31007,31024 ****
       { operands[1] = gen_lowpart (SImode, operands[1]); }")
  
   When the combiner phase tries to split an insn pattern, it is always
! the case that the pattern is _not_ matched by any 'define_insn'.  The
! combiner pass first tries to split a single 'set' expression and then
! the same 'set' expression inside a 'parallel', but followed by a
! 'clobber' of a pseudo-reg to use as a scratch register.  In these cases,
  the combiner expects exactly one or two new insn patterns to be
! generated.  It will verify that these patterns match some 'define_insn'
! definitions, so you need not do this test in the 'define_split' (of
! course, there is no point in writing a 'define_split' that will never
  produce insns that match).
  
!  Here is an example of this use of 'define_split', taken from
! 'rs6000.md':
  
       (define_split
         [(set (match_operand:SI 0 "gen_reg_operand" "")
--- 31011,31028 ----
       { operands[1] = gen_lowpart (SImode, operands[1]); }")
  
   When the combiner phase tries to split an insn pattern, it is always
! the case that the pattern is _not_ matched by any â€˜define_insnâ€™.  The
! combiner pass first tries to split a single â€˜setâ€™ expression and then
! the same â€˜setâ€™ expression inside a â€˜parallelâ€™, but followed by a
! â€˜clobberâ€™ of a pseudo-reg to use as a scratch register.  In these cases,
  the combiner expects exactly one or two new insn patterns to be
! generated.  It will verify that these patterns match some â€˜define_insnâ€™
! definitions, so you need not do this test in the â€˜define_splitâ€™ (of
! course, there is no point in writing a â€˜define_splitâ€™ that will never
  produce insns that match).
  
!  Here is an example of this use of â€˜define_splitâ€™, taken from
! â€˜rs6000.mdâ€™:
  
       (define_split
         [(set (match_operand:SI 0 "gen_reg_operand" "")
*************** produce insns that match).
*** 31039,31045 ****
         operands[4] = GEN_INT (low);
       }")
  
!  Here the predicate 'non_add_cint_operand' matches any 'const_int' that
  is _not_ a valid operand of a single add insn.  The add with the smaller
  displacement is written so that it can be substituted into the address
  of a subsequent operation.
--- 31043,31049 ----
         operands[4] = GEN_INT (low);
       }")
  
!  Here the predicate â€˜non_add_cint_operandâ€™ matches any â€˜const_intâ€™ that
  is _not_ a valid operand of a single add insn.  The add with the smaller
  displacement is written so that it can be substituted into the address
  of a subsequent operation.
*************** an equality comparison of a register and
*** 31071,31079 ****
         operands[5] = GEN_INT (sextc);
       }")
  
!  To avoid confusion, don't write a single 'define_split' that accepts
! some insns that match some 'define_insn' as well as some insns that
! don't.  Instead, write two separate 'define_split' definitions, one for
  the insns that are valid and one for the insns that are not valid.
  
   The splitter is allowed to split jump instructions into a sequence of
--- 31075,31083 ----
         operands[5] = GEN_INT (sextc);
       }")
  
!  To avoid confusion, don't write a single â€˜define_splitâ€™ that accepts
! some insns that match some â€˜define_insnâ€™ as well as some insns that
! don't.  Instead, write two separate â€˜define_splitâ€™ definitions, one for
  the insns that are valid and one for the insns that are not valid.
  
   The splitter is allowed to split jump instructions into a sequence of
*************** identical behavior of the new jump.  Whe
*** 31087,31100 ****
  multiple jump instructions or new labels, more assistance is needed.
  The splitter is permitted to create only unconditional jumps, or simple
  conditional jump instructions.  Additionally it must attach a
! 'REG_BR_PROB' note to each conditional jump.  A global variable
! 'split_branch_probability' holds the probability of the original branch
! in case it was a simple conditional jump, -1 otherwise.  To simplify
  recomputing of edge frequencies, the new sequence is permitted to have
  only forward jumps to the newly-created labels.
  
   For the common case where the pattern of a define_split exactly matches
! the pattern of a define_insn, use 'define_insn_and_split'.  It looks
  like this:
  
       (define_insn_and_split
--- 31091,31104 ----
  multiple jump instructions or new labels, more assistance is needed.
  The splitter is permitted to create only unconditional jumps, or simple
  conditional jump instructions.  Additionally it must attach a
! â€˜REG_BR_PROBâ€™ note to each conditional jump.  A global variable
! â€˜split_branch_probabilityâ€™ holds the probability of the original branch
! in case it was a simple conditional jump, âˆ’1 otherwise.  To simplify
  recomputing of edge frequencies, the new sequence is permitted to have
  only forward jumps to the newly-created labels.
  
   For the common case where the pattern of a define_split exactly matches
! the pattern of a define_insn, use â€˜define_insn_and_splitâ€™.  It looks
  like this:
  
       (define_insn_and_split
*************** like this:
*** 31110,31119 ****
  
  
   INSN-PATTERN, CONDITION, OUTPUT-TEMPLATE, and INSN-ATTRIBUTES are used
! as in 'define_insn'.  The NEW-INSN-PATTERN vector and the
! PREPARATION-STATEMENTS are used as in a 'define_split'.  The
! SPLIT-CONDITION is also used as in 'define_split', with the additional
! behavior that if the condition starts with '&&', the condition used for
  the split will be the constructed as a logical "and" of the split
  condition with the insn condition.  For example, from i386.md:
  
--- 31114,31123 ----
  
  
   INSN-PATTERN, CONDITION, OUTPUT-TEMPLATE, and INSN-ATTRIBUTES are used
! as in â€˜define_insnâ€™.  The NEW-INSN-PATTERN vector and the
! PREPARATION-STATEMENTS are used as in a â€˜define_splitâ€™.  The
! SPLIT-CONDITION is also used as in â€˜define_splitâ€™, with the additional
! behavior that if the condition starts with â€˜&&â€™, the condition used for
  the split will be the constructed as a logical "and" of the split
  condition with the insn condition.  For example, from i386.md:
  
*************** condition with the insn condition.  For
*** 31132,31157 ****
  
  
   In this case, the actual split condition will be
! 'TARGET_ZERO_EXTEND_WITH_AND && !optimize_size && reload_completed'.
  
!  The 'define_insn_and_split' construction provides exactly the same
! functionality as two separate 'define_insn' and 'define_split' patterns.
  It exists for compactness, and as a maintenance tool to prevent having
  to ensure the two patterns' templates match.
  
!  It is sometimes useful to have a 'define_insn_and_split' that replaces
  specific operands of an instruction but leaves the rest of the
  instruction pattern unchanged.  You can do this directly with a
! 'define_insn_and_split', but it requires a NEW-INSN-PATTERN-1 that
  repeats most of the original INSN-PATTERN.  There is also the
! complication that an implicit 'parallel' in INSN-PATTERN must become an
! explicit 'parallel' in NEW-INSN-PATTERN-1, which is easy to overlook.  A
! simpler alternative is to use 'define_insn_and_rewrite', which is a form
! of 'define_insn_and_split' that automatically generates
! NEW-INSN-PATTERN-1 by replacing each 'match_operand' in INSN-PATTERN
! with a corresponding 'match_dup', and each 'match_operator' in the
! pattern with a corresponding 'match_op_dup'.  The arguments are
! otherwise identical to 'define_insn_and_split':
  
       (define_insn_and_rewrite
         [INSN-PATTERN]
--- 31136,31161 ----
  
  
   In this case, the actual split condition will be
! â€˜TARGET_ZERO_EXTEND_WITH_AND && !optimize_size && reload_completedâ€™.
  
!  The â€˜define_insn_and_splitâ€™ construction provides exactly the same
! functionality as two separate â€˜define_insnâ€™ and â€˜define_splitâ€™ patterns.
  It exists for compactness, and as a maintenance tool to prevent having
  to ensure the two patterns' templates match.
  
!  It is sometimes useful to have a â€˜define_insn_and_splitâ€™ that replaces
  specific operands of an instruction but leaves the rest of the
  instruction pattern unchanged.  You can do this directly with a
! â€˜define_insn_and_splitâ€™, but it requires a NEW-INSN-PATTERN-1 that
  repeats most of the original INSN-PATTERN.  There is also the
! complication that an implicit â€˜parallelâ€™ in INSN-PATTERN must become an
! explicit â€˜parallelâ€™ in NEW-INSN-PATTERN-1, which is easy to overlook.  A
! simpler alternative is to use â€˜define_insn_and_rewriteâ€™, which is a form
! of â€˜define_insn_and_splitâ€™ that automatically generates
! NEW-INSN-PATTERN-1 by replacing each â€˜match_operandâ€™ in INSN-PATTERN
! with a corresponding â€˜match_dupâ€™, and each â€˜match_operatorâ€™ in the
! pattern with a corresponding â€˜match_op_dupâ€™.  The arguments are
! otherwise identical to â€˜define_insn_and_splitâ€™:
  
       (define_insn_and_rewrite
         [INSN-PATTERN]
*************** otherwise identical to 'define_insn_and_
*** 31161,31177 ****
         "PREPARATION-STATEMENTS"
         [INSN-ATTRIBUTES])
  
!  The 'match_dup's and 'match_op_dup's in the new instruction pattern use
  any new operand values that the PREPARATION-STATEMENTS store in the
! 'operands' array, as for a normal 'define_insn_and_split'.
  PREPARATION-STATEMENTS can also emit additional instructions before the
  new instruction.  They can even emit an entirely different sequence of
! instructions and use 'DONE' to avoid emitting a new form of the original
  instruction.
  
!  The split in a 'define_insn_and_rewrite' is only intended to apply to
  existing instructions that match INSN-PATTERN.  SPLIT-CONDITION must
! therefore start with '&&', so that the split condition applies on top of
  CONDITION.
  
   Here is an example from the AArch64 SVE port, in which operand 1 is
--- 31165,31181 ----
         "PREPARATION-STATEMENTS"
         [INSN-ATTRIBUTES])
  
!  The â€˜match_dupâ€™s and â€˜match_op_dupâ€™s in the new instruction pattern use
  any new operand values that the PREPARATION-STATEMENTS store in the
! â€˜operandsâ€™ array, as for a normal â€˜define_insn_and_splitâ€™.
  PREPARATION-STATEMENTS can also emit additional instructions before the
  new instruction.  They can even emit an entirely different sequence of
! instructions and use â€˜DONEâ€™ to avoid emitting a new form of the original
  instruction.
  
!  The split in a â€˜define_insn_and_rewriteâ€™ is only intended to apply to
  existing instructions that match INSN-PATTERN.  SPLIT-CONDITION must
! therefore start with â€˜&&â€™, so that the split condition applies on top of
  CONDITION.
  
   Here is an example from the AArch64 SVE port, in which operand 1 is
*************** output template:
*** 31203,31209 ****
       )
  
   The splitter in this case simply replaces operand 1 with the constant
! value that it is known to have.  The equivalent 'define_insn_and_split'
  would be:
  
       (define_insn_and_split "*while_ult<GPI:mode><PRED_ALL:mode>_cc"
--- 31207,31213 ----
       )
  
   The splitter in this case simply replaces operand 1 with the constant
! value that it is known to have.  The equivalent â€˜define_insn_and_splitâ€™
  would be:
  
       (define_insn_and_split "*while_ult<GPI:mode><PRED_ALL:mode>_cc"
*************** File: gccint.info,  Node: Including Patt
*** 31249,31256 ****
  16.18 Including Patterns in Machine Descriptions.
  =================================================
  
! The 'include' pattern tells the compiler tools where to look for
! patterns that are in files other than in the file '.md'.  This is used
  only at build time and there is no preprocessing allowed.
  
   It looks like:
--- 31253,31260 ----
  16.18 Including Patterns in Machine Descriptions.
  =================================================
  
! The â€˜includeâ€™ pattern tells the compiler tools where to look for
! patterns that are in files other than in the file â€˜.mdâ€™.  This is used
  only at build time and there is no preprocessing allowed.
  
   It looks like:
*************** only at build time and there is no prepr
*** 31265,31272 ****
  
  
   Where PATHNAME is a string that specifies the location of the file,
! specifies the include file to be in 'gcc/config/target/filestuff'.  The
! directory 'gcc/config/target' is regarded as the default directory.
  
   Machine descriptions may be split up into smaller more manageable
  subsections and placed into subdirectories.
--- 31269,31276 ----
  
  
   Where PATHNAME is a string that specifies the location of the file,
! specifies the include file to be in â€˜gcc/config/target/filestuffâ€™.  The
! directory â€˜gcc/config/targetâ€™ is regarded as the default directory.
  
   Machine descriptions may be split up into smaller more manageable
  subsections and placed into subdirectories.
*************** subsections and placed into subdirectori
*** 31278,31284 ****
  
  
   the include file is specified to be in
! 'gcc/config/TARGET/BOGUS/filestuff'.
  
   Specifying an absolute path for the include file such as;
  
--- 31282,31288 ----
  
  
   the include file is specified to be in
! â€˜gcc/config/TARGET/BOGUS/filestuffâ€™.
  
   Specifying an absolute path for the include file such as;
  
*************** subsections and placed into subdirectori
*** 31289,31295 ****
  16.18.1 RTL Generation Tool Options for Directory Search
  --------------------------------------------------------
  
! The '-IDIR' option specifies directories to search for machine
  descriptions.  For example:
  
  
--- 31293,31299 ----
  16.18.1 RTL Generation Tool Options for Directory Search
  --------------------------------------------------------
  
! The â€˜-IDIRâ€™ option specifies directories to search for machine
  descriptions.  For example:
  
  
*************** descriptions.  For example:
*** 31300,31306 ****
  searched for header files.  This can be used to override a system
  machine definition file, substituting your own version, since these
  directories are searched before the default machine description file
! directories.  If you use more than one '-I' option, the directories are
  scanned in left-to-right order; the standard default directory come
  after.
  
--- 31304,31310 ----
  searched for header files.  This can be used to override a system
  machine definition file, substituting your own version, since these
  directories are searched before the default machine description file
! directories.  If you use more than one â€˜-Iâ€™ option, the directories are
  scanned in left-to-right order; the standard default directory come
  after.
  
*************** File: gccint.info,  Node: Peephole Defin
*** 31310,31316 ****
  16.19 Machine-Specific Peephole Optimizers
  ==========================================
  
! In addition to instruction patterns the 'md' file may contain
  definitions of machine-specific peephole optimizations.
  
   The combiner does not notice certain peephole optimizations when the
--- 31314,31320 ----
  16.19 Machine-Specific Peephole Optimizers
  ==========================================
  
! In addition to instruction patterns the â€˜mdâ€™ file may contain
  definitions of machine-specific peephole optimizations.
  
   The combiner does not notice certain peephole optimizations when the
*************** computed in the first one.  A machine-sp
*** 31321,31331 ****
  detect such opportunities.
  
   There are two forms of peephole definitions that may be used.  The
! original 'define_peephole' is run at assembly output time to match insns
! and substitute assembly text.  Use of 'define_peephole' is deprecated.
  
!  A newer 'define_peephole2' matches insns and substitutes new insns.
! The 'peephole2' pass is run after register allocation but before
  scheduling, which may result in much better code for targets that do
  scheduling.
  
--- 31325,31335 ----
  detect such opportunities.
  
   There are two forms of peephole definitions that may be used.  The
! original â€˜define_peepholeâ€™ is run at assembly output time to match insns
! and substitute assembly text.  Use of â€˜define_peepholeâ€™ is deprecated.
  
!  A newer â€˜define_peephole2â€™ matches insns and substitutes new insns.
! The â€˜peephole2â€™ pass is run after register allocation but before
  scheduling, which may result in much better code for targets that do
  scheduling.
  
*************** A definition looks like this:
*** 31352,31358 ****
  
  The last string operand may be omitted if you are not using any
  machine-specific information in this machine description.  If present,
! it must obey the same rules as in a 'define_insn'.
  
   In this skeleton, INSN-PATTERN-1 and so on are patterns to match
  consecutive insns.  The optimization applies to a sequence of insns when
--- 31356,31362 ----
  
  The last string operand may be omitted if you are not using any
  machine-specific information in this machine description.  If present,
! it must obey the same rules as in a â€˜define_insnâ€™.
  
   In this skeleton, INSN-PATTERN-1 and so on are patterns to match
  consecutive insns.  The optimization applies to a sequence of insns when
*************** INSN-PATTERN-1 matches the first one, IN
*** 31360,31378 ****
  and so on.
  
   Each of the insns matched by a peephole must also match a
! 'define_insn'.  Peepholes are checked only at the last stage just before
  code generation, and only optionally.  Therefore, any insn which would
! match a peephole but no 'define_insn' will cause a crash in code
  generation in an unoptimized compilation, or at various optimization
  stages.
  
!  The operands of the insns are matched with 'match_operands',
! 'match_operator', and 'match_dup', as usual.  What is not usual is that
  the operand numbers apply to all the insn patterns in the definition.
  So, you can check for identical operands in two insns by using
! 'match_operand' in one insn and 'match_dup' in the other.
  
!  The operand constraints used in 'match_operand' patterns do not have
  any direct effect on the applicability of the peephole, but they will be
  validated afterward, so make sure your constraints are general enough to
  apply whenever the peephole matches.  If the peephole matches but the
--- 31364,31382 ----
  and so on.
  
   Each of the insns matched by a peephole must also match a
! â€˜define_insnâ€™.  Peepholes are checked only at the last stage just before
  code generation, and only optionally.  Therefore, any insn which would
! match a peephole but no â€˜define_insnâ€™ will cause a crash in code
  generation in an unoptimized compilation, or at various optimization
  stages.
  
!  The operands of the insns are matched with â€˜match_operandsâ€™,
! â€˜match_operatorâ€™, and â€˜match_dupâ€™, as usual.  What is not usual is that
  the operand numbers apply to all the insn patterns in the definition.
  So, you can check for identical operands in two insns by using
! â€˜match_operandâ€™ in one insn and â€˜match_dupâ€™ in the other.
  
!  The operand constraints used in â€˜match_operandâ€™ patterns do not have
  any direct effect on the applicability of the peephole, but they will be
  validated afterward, so make sure your constraints are general enough to
  apply whenever the peephole matches.  If the peephole matches but the
*************** allocation is complete.  Therefore, the
*** 31394,31415 ****
  which operands have ended up in which kinds of registers, just by
  looking at the operands.
  
!  The way to refer to the operands in CONDITION is to write 'operands[I]'
! for operand number I (as matched by '(match_operand I ...)').  Use the
! variable 'insn' to refer to the last of the insns being matched; use
! 'prev_active_insn' to find the preceding insns.
  
   When optimizing computations with intermediate results, you can use
  CONDITION to match only when the intermediate results are not used
! elsewhere.  Use the C expression 'dead_or_set_p (INSN, OP)', where INSN
  is the insn in which you expect the value to be used for the last time
! (from the value of 'insn', together with use of 'prev_nonnote_insn'),
! and OP is the intermediate value (from 'operands[I]').
  
   Applying the optimization means replacing the sequence of insns with
  one new insn.  The TEMPLATE controls ultimate output of assembler code
  for this combined insn.  It works exactly like the template of a
! 'define_insn'.  Operand numbers in this template are the same ones used
  in matching the original sequence of insns.
  
   The result of a defined peephole optimizer does not need to match any
--- 31398,31419 ----
  which operands have ended up in which kinds of registers, just by
  looking at the operands.
  
!  The way to refer to the operands in CONDITION is to write â€˜operands[I]â€™
! for operand number I (as matched by â€˜(match_operand I ...)â€™).  Use the
! variable â€˜insnâ€™ to refer to the last of the insns being matched; use
! â€˜prev_active_insnâ€™ to find the preceding insns.
  
   When optimizing computations with intermediate results, you can use
  CONDITION to match only when the intermediate results are not used
! elsewhere.  Use the C expression â€˜dead_or_set_p (INSN, OP)â€™, where INSN
  is the insn in which you expect the value to be used for the last time
! (from the value of â€˜insnâ€™, together with use of â€˜prev_nonnote_insnâ€™),
! and OP is the intermediate value (from â€˜operands[I]â€™).
  
   Applying the optimization means replacing the sequence of insns with
  one new insn.  The TEMPLATE controls ultimate output of assembler code
  for this combined insn.  It works exactly like the template of a
! â€˜define_insnâ€™.  Operand numbers in this template are the same ones used
  in matching the original sequence of insns.
  
   The result of a defined peephole optimizer does not need to match any
*************** into
*** 31457,31469 ****
       fmoved sp@+,fp0
  
   INSN-PATTERN-1 and so on look _almost_ like the second operand of
! 'define_insn'.  There is one important difference: the second operand of
! 'define_insn' consists of one or more RTX's enclosed in square brackets.
  Usually, there is only one: then the same action can be written as an
! element of a 'define_peephole'.  But when there are multiple actions in
! a 'define_insn', they are implicitly enclosed in a 'parallel'.  Then you
! must explicitly write the 'parallel', and the square brackets within it,
! in the 'define_peephole'.  Thus, if an insn pattern looks like this,
  
       (define_insn "divmodsi4"
         [(set (match_operand:SI 0 "general_operand" "=d")
--- 31461,31473 ----
       fmoved sp@+,fp0
  
   INSN-PATTERN-1 and so on look _almost_ like the second operand of
! â€˜define_insnâ€™.  There is one important difference: the second operand of
! â€˜define_insnâ€™ consists of one or more RTX's enclosed in square brackets.
  Usually, there is only one: then the same action can be written as an
! element of a â€˜define_peepholeâ€™.  But when there are multiple actions in
! a â€˜define_insnâ€™, they are implicitly enclosed in a â€˜parallelâ€™.  Then you
! must explicitly write the â€˜parallelâ€™, and the square brackets within it,
! in the â€˜define_peepholeâ€™.  Thus, if an insn pattern looks like this,
  
       (define_insn "divmodsi4"
         [(set (match_operand:SI 0 "general_operand" "=d")
*************** File: gccint.info,  Node: define_peephol
*** 31493,31499 ****
  16.19.2 RTL to RTL Peephole Optimizers
  --------------------------------------
  
! The 'define_peephole2' definition tells the compiler how to substitute
  one sequence of instructions for another sequence, what additional
  scratch registers may be needed and what their lifetimes must be.
  
--- 31497,31503 ----
  16.19.2 RTL to RTL Peephole Optimizers
  --------------------------------------
  
! The â€˜define_peephole2â€™ definition tells the compiler how to substitute
  one sequence of instructions for another sequence, what additional
  scratch registers may be needed and what their lifetimes must be.
  
*************** scratch registers may be needed and what
*** 31507,31513 ****
          ...]
         "PREPARATION-STATEMENTS")
  
!  The definition is almost identical to 'define_split' (*note Insn
  Splitting::) except that the pattern to match is not a single
  instruction, but a sequence of instructions.
  
--- 31511,31517 ----
          ...]
         "PREPARATION-STATEMENTS")
  
!  The definition is almost identical to â€˜define_splitâ€™ (*note Insn
  Splitting::) except that the pattern to match is not a single
  instruction, but a sequence of instructions.
  
*************** instruction, but a sequence of instructi
*** 31515,31524 ****
  output template.  If appropriate registers are not free, the pattern
  will simply not match.
  
!  Scratch registers are requested with a 'match_scratch' pattern at the
  top level of the input pattern.  The allocated register (initially) will
  be dead at the point requested within the original sequence.  If the
! scratch is used at more than a single point, a 'match_dup' pattern at
  the top level of the input pattern marks the last position in the input
  sequence at which the register must be available.
  
--- 31519,31528 ----
  output template.  If appropriate registers are not free, the pattern
  will simply not match.
  
!  Scratch registers are requested with a â€˜match_scratchâ€™ pattern at the
  top level of the input pattern.  The allocated register (initially) will
  be dead at the point requested within the original sequence.  If the
! scratch is used at more than a single point, a â€˜match_dupâ€™ pattern at
  the top level of the input pattern marks the last position in the input
  sequence at which the register must be available.
  
*************** sequence at which the register must be a
*** 31540,31546 ****
  
  This pattern tries to split a load from its use in the hopes that we'll
  be able to schedule around the memory load latency.  It allocates a
! single 'SImode' register of class 'GENERAL_REGS' ('"r"') that needs to
  be live only at the point just before the arithmetic.
  
   A real example requiring extended scratch lifetimes is harder to come
--- 31544,31550 ----
  
  This pattern tries to split a load from its use in the hopes that we'll
  be able to schedule around the memory load latency.  It allocates a
! single â€˜SImodeâ€™ register of class â€˜GENERAL_REGSâ€™ (â€˜"r"â€™) that needs to
  be live only at the point just before the arithmetic.
  
   A real example requiring extended scratch lifetimes is harder to come
*************** by, so here's a silly made-up example:
*** 31559,31599 ****
          (set (match_dup 3) (match_dup 4))]
         "")
  
! If we had not added the '(match_dup 4)' in the middle of the input
  sequence, it might have been the case that the register we chose at the
! beginning of the sequence is killed by the first or second 'set'.
  
   There are two special macros defined for use in the preparation
! statements: 'DONE' and 'FAIL'.  Use them with a following semicolon, as
  a statement.
  
! 'DONE'
!      Use the 'DONE' macro to end RTL generation for the peephole.  The
       only RTL insns generated as replacement for the matched input insn
!      will be those already emitted by explicit calls to 'emit_insn'
       within the preparation statements; the replacement pattern is not
       used.
  
! 'FAIL'
!      Make the 'define_peephole2' fail on this occasion.  When a
!      'define_peephole2' fails, it means that the replacement was not
       truly available for the particular inputs it was given.  In that
!      case, GCC may still apply a later 'define_peephole2' that also
       matches the given insn pattern.  (Note that this is different from
!      'define_split', where 'FAIL' prevents the input insn from being
       split at all.)
  
!  If the preparation falls through (invokes neither 'DONE' nor 'FAIL'),
! then the 'define_peephole2' uses the replacement template.
  
   Insns are scanned in forward order from beginning to end for each basic
! block.  Matches are attempted in order of 'define_peephole2' appearance
! in the 'md' file.  After a successful replacement, scanning for further
! opportunities for 'define_peephole2', resumes with the first generated
  replacement insn as the first insn to be matched against all
! 'define_peephole2'.  For the example above, after its successful
! replacement, the first insn that can be matched by a 'define_peephole2'
! is '(set (match_dup 4) (match_dup 1))'.
  
  
  File: gccint.info,  Node: Insn Attributes,  Next: Conditional Execution,  Prev: Peephole Definitions,  Up: Machine Desc
--- 31563,31603 ----
          (set (match_dup 3) (match_dup 4))]
         "")
  
! If we had not added the â€˜(match_dup 4)â€™ in the middle of the input
  sequence, it might have been the case that the register we chose at the
! beginning of the sequence is killed by the first or second â€˜setâ€™.
  
   There are two special macros defined for use in the preparation
! statements: â€˜DONEâ€™ and â€˜FAILâ€™.  Use them with a following semicolon, as
  a statement.
  
! â€˜DONEâ€™
!      Use the â€˜DONEâ€™ macro to end RTL generation for the peephole.  The
       only RTL insns generated as replacement for the matched input insn
!      will be those already emitted by explicit calls to â€˜emit_insnâ€™
       within the preparation statements; the replacement pattern is not
       used.
  
! â€˜FAILâ€™
!      Make the â€˜define_peephole2â€™ fail on this occasion.  When a
!      â€˜define_peephole2â€™ fails, it means that the replacement was not
       truly available for the particular inputs it was given.  In that
!      case, GCC may still apply a later â€˜define_peephole2â€™ that also
       matches the given insn pattern.  (Note that this is different from
!      â€˜define_splitâ€™, where â€˜FAILâ€™ prevents the input insn from being
       split at all.)
  
!  If the preparation falls through (invokes neither â€˜DONEâ€™ nor â€˜FAILâ€™),
! then the â€˜define_peephole2â€™ uses the replacement template.
  
   Insns are scanned in forward order from beginning to end for each basic
! block.  Matches are attempted in order of â€˜define_peephole2â€™ appearance
! in the â€˜mdâ€™ file.  After a successful replacement, scanning for further
! opportunities for â€˜define_peephole2â€™, resumes with the first generated
  replacement insn as the first insn to be matched against all
! â€˜define_peephole2â€™.  For the example above, after its successful
! replacement, the first insn that can be matched by a â€˜define_peephole2â€™
! is â€˜(set (match_dup 4) (match_dup 1))â€™.
  
  
  File: gccint.info,  Node: Insn Attributes,  Next: Conditional Execution,  Prev: Peephole Definitions,  Up: Machine Desc
*************** File: gccint.info,  Node: Insn Attribute
*** 31602,31608 ****
  ============================
  
  In addition to describing the instruction supported by the target
! machine, the 'md' file also defines a group of "attributes" and a set of
  values for each.  Every generated insn is assigned a value for each
  attribute.  One possible attribute would be the effect that the insn has
  on the machine's condition code.
--- 31606,31612 ----
  ============================
  
  In addition to describing the instruction supported by the target
! machine, the â€˜mdâ€™ file also defines a group of â€œattributesâ€� and a set of
  values for each.  Every generated insn is assigned a value for each
  attribute.  One possible attribute would be the effect that the insn has
  on the machine's condition code.
*************** File: gccint.info,  Node: Defining Attri
*** 31625,31645 ****
  16.20.1 Defining Attributes and their Values
  --------------------------------------------
  
! The 'define_attr' expression is used to define each attribute required
  by the target machine.  It looks like:
  
       (define_attr NAME LIST-OF-VALUES DEFAULT)
  
   NAME is a string specifying the name of the attribute being defined.
  Some attributes are used in a special way by the rest of the compiler.
! The 'enabled' attribute can be used to conditionally enable or disable
! insn alternatives (*note Disable Insn Alternatives::).  The 'predicable'
! attribute, together with a suitable 'define_cond_exec' (*note
  Conditional Execution::), can be used to automatically generate
! conditional variants of instruction patterns.  The 'mnemonic' attribute
  can be used to check for the instruction mnemonic (*note Mnemonic
! Attribute::).  The compiler internally uses the names 'ce_enabled' and
! 'nonce_enabled', so they should not be used elsewhere as alternative
  names.
  
   LIST-OF-VALUES is either a string that specifies a comma-separated list
--- 31629,31649 ----
  16.20.1 Defining Attributes and their Values
  --------------------------------------------
  
! The â€˜define_attrâ€™ expression is used to define each attribute required
  by the target machine.  It looks like:
  
       (define_attr NAME LIST-OF-VALUES DEFAULT)
  
   NAME is a string specifying the name of the attribute being defined.
  Some attributes are used in a special way by the rest of the compiler.
! The â€˜enabledâ€™ attribute can be used to conditionally enable or disable
! insn alternatives (*note Disable Insn Alternatives::).  The â€˜predicableâ€™
! attribute, together with a suitable â€˜define_cond_execâ€™ (*note
  Conditional Execution::), can be used to automatically generate
! conditional variants of instruction patterns.  The â€˜mnemonicâ€™ attribute
  can be used to check for the instruction mnemonic (*note Mnemonic
! Attribute::).  The compiler internally uses the names â€˜ce_enabledâ€™ and
! â€˜nonce_enabledâ€™, so they should not be used elsewhere as alternative
  names.
  
   LIST-OF-VALUES is either a string that specifies a comma-separated list
*************** Attributes::, for information on attribu
*** 31654,31712 ****
  particular insn.
  
   For each defined attribute, a number of definitions are written to the
! 'insn-attr.h' file.  For cases where an explicit set of values is
  specified for an attribute, the following are defined:
  
!    * A '#define' is written for the symbol 'HAVE_ATTR_NAME'.
  
!    * An enumerated class is defined for 'attr_NAME' with elements of the
!      form 'UPPER-NAME_UPPER-VALUE' where the attribute name and value
       are first converted to uppercase.
  
!    * A function 'get_attr_NAME' is defined that is passed an insn and
       returns the attribute value for that insn.
  
!  For example, if the following is present in the 'md' file:
  
       (define_attr "type" "branch,fp,load,store,arith" ...)
  
! the following lines will be written to the file 'insn-attr.h'.
  
       #define HAVE_ATTR_type 1
       enum attr_type {TYPE_BRANCH, TYPE_FP, TYPE_LOAD,
                        TYPE_STORE, TYPE_ARITH};
       extern enum attr_type get_attr_type ();
  
!  If the attribute takes numeric values, no 'enum' type will be defined
! and the function to obtain the attribute's value will return 'int'.
  
   There are attributes which are tied to a specific meaning.  These
  attributes are not free to use for other purposes:
  
! 'length'
!      The 'length' attribute is used to calculate the length of emitted
       code chunks.  This is especially important when verifying branch
       distances.  *Note Insn Lengths::.
  
! 'enabled'
!      The 'enabled' attribute can be defined to prevent certain
       alternatives of an insn definition from being used during code
       generation.  *Note Disable Insn Alternatives::.
  
! 'mnemonic'
!      The 'mnemonic' attribute can be defined to implement instruction
       specific checks in e.g. the pipeline description.  *Note Mnemonic
       Attribute::.
  
   For each of these special attributes, the corresponding
! 'HAVE_ATTR_NAME' '#define' is also written when the attribute is not
! defined; in that case, it is defined as '0'.
  
   Another way of defining an attribute is to use:
  
       (define_enum_attr "ATTR" "ENUM" DEFAULT)
  
!  This works in just the same way as 'define_attr', except that the list
  of values is taken from a separate enumeration called ENUM (*note
  define_enum::).  This form allows you to use the same list of values for
  several attributes without having to repeat the list each time.  For
--- 31658,31716 ----
  particular insn.
  
   For each defined attribute, a number of definitions are written to the
! â€˜insn-attr.hâ€™ file.  For cases where an explicit set of values is
  specified for an attribute, the following are defined:
  
!    â€¢ A â€˜#defineâ€™ is written for the symbol â€˜HAVE_ATTR_NAMEâ€™.
  
!    â€¢ An enumerated class is defined for â€˜attr_NAMEâ€™ with elements of the
!      form â€˜UPPER-NAME_UPPER-VALUEâ€™ where the attribute name and value
       are first converted to uppercase.
  
!    â€¢ A function â€˜get_attr_NAMEâ€™ is defined that is passed an insn and
       returns the attribute value for that insn.
  
!  For example, if the following is present in the â€˜mdâ€™ file:
  
       (define_attr "type" "branch,fp,load,store,arith" ...)
  
! the following lines will be written to the file â€˜insn-attr.hâ€™.
  
       #define HAVE_ATTR_type 1
       enum attr_type {TYPE_BRANCH, TYPE_FP, TYPE_LOAD,
                        TYPE_STORE, TYPE_ARITH};
       extern enum attr_type get_attr_type ();
  
!  If the attribute takes numeric values, no â€˜enumâ€™ type will be defined
! and the function to obtain the attribute's value will return â€˜intâ€™.
  
   There are attributes which are tied to a specific meaning.  These
  attributes are not free to use for other purposes:
  
! â€˜lengthâ€™
!      The â€˜lengthâ€™ attribute is used to calculate the length of emitted
       code chunks.  This is especially important when verifying branch
       distances.  *Note Insn Lengths::.
  
! â€˜enabledâ€™
!      The â€˜enabledâ€™ attribute can be defined to prevent certain
       alternatives of an insn definition from being used during code
       generation.  *Note Disable Insn Alternatives::.
  
! â€˜mnemonicâ€™
!      The â€˜mnemonicâ€™ attribute can be defined to implement instruction
       specific checks in e.g. the pipeline description.  *Note Mnemonic
       Attribute::.
  
   For each of these special attributes, the corresponding
! â€˜HAVE_ATTR_NAMEâ€™ â€˜#defineâ€™ is also written when the attribute is not
! defined; in that case, it is defined as â€˜0â€™.
  
   Another way of defining an attribute is to use:
  
       (define_enum_attr "ATTR" "ENUM" DEFAULT)
  
!  This works in just the same way as â€˜define_attrâ€™, except that the list
  of values is taken from a separate enumeration called ENUM (*note
  define_enum::).  This form allows you to use the same list of values for
  several attributes without having to repeat the list each time.  For
*************** example:
*** 31730,31737 ****
         (const (symbol_ref "target_tune")))
  
   but without duplicating the processor list.  The second example defines
! two separate C enums ('attr_arch' and 'attr_tune') whereas the first
! defines a single C enum ('processor').
  
  
  File: gccint.info,  Node: Expressions,  Next: Tagging Insns,  Prev: Defining Attributes,  Up: Insn Attributes
--- 31734,31741 ----
         (const (symbol_ref "target_tune")))
  
   but without duplicating the processor list.  The second example defines
! two separate C enums (â€˜attr_archâ€™ and â€˜attr_tuneâ€™) whereas the first
! defines a single C enum (â€˜processorâ€™).
  
  
  File: gccint.info,  Node: Expressions,  Next: Tagging Insns,  Prev: Defining Attributes,  Up: Insn Attributes
*************** RTL expressions used to define attribute
*** 31743,31850 ****
  plus a few specific to attribute definitions, to be discussed below.
  Attribute value expressions must have one of the following forms:
  
! '(const_int I)'
       The integer I specifies the value of a numeric attribute.  I must
       be non-negative.
  
       The value of a numeric attribute can be specified either with a
!      'const_int', or as an integer represented as a string in
!      'const_string', 'eq_attr' (see below), 'attr', 'symbol_ref', simple
!      arithmetic expressions, and 'set_attr' overrides on specific
       instructions (*note Tagging Insns::).
  
! '(const_string VALUE)'
       The string VALUE specifies a constant attribute value.  If VALUE is
!      specified as '"*"', it means that the default value of the
       attribute is to be used for the insn containing this expression.
!      '"*"' obviously cannot be used in the DEFAULT expression of a
!      'define_attr'.
  
       If the attribute whose value is being specified is numeric, VALUE
       must be a string containing a non-negative integer (normally
!      'const_int' would be used in this case).  Otherwise, it must
       contain one of the valid values for the attribute.
  
! '(if_then_else TEST TRUE-VALUE FALSE-VALUE)'
       TEST specifies an attribute test, whose format is defined below.
       The value of this expression is TRUE-VALUE if TEST is true,
       otherwise it is FALSE-VALUE.
  
! '(cond [TEST1 VALUE1 ...] DEFAULT)'
       The first operand of this expression is a vector containing an even
       number of expressions and consisting of pairs of TEST and VALUE
!      expressions.  The value of the 'cond' expression is that of the
       VALUE corresponding to the first true TEST expression.  If none of
!      the TEST expressions are true, the value of the 'cond' expression
       is that of the DEFAULT expression.
  
   TEST expressions can have one of the following forms:
  
! '(const_int I)'
       This test is true if I is nonzero and false otherwise.
  
! '(not TEST)'
! '(ior TEST1 TEST2)'
! '(and TEST1 TEST2)'
       These tests are true if the indicated logical function is true.
  
! '(match_operand:M N PRED CONSTRAINTS)'
       This test is true if operand N of the insn whose attribute value is
       being determined has mode M (this part of the test is ignored if M
!      is 'VOIDmode') and the function specified by the string PRED
       returns a nonzero value when passed operand N and mode M (this part
       of the test is ignored if PRED is the null string).
  
       The CONSTRAINTS operand is ignored and should be the null string.
  
! '(match_test C-EXPR)'
       The test is true if C expression C-EXPR is true.  In non-constant
       attributes, C-EXPR has access to the following variables:
  
       INSN
            The rtl instruction under test.
       WHICH_ALTERNATIVE
!           The 'define_insn' alternative that INSN matches.  *Note Output
            Statement::.
       OPERANDS
            An array of INSN's rtl operands.
  
!      C-EXPR behaves like the condition in a C 'if' statement, so there
       is no need to explicitly convert the expression into a boolean 0 or
       1 value.  For example, the following two tests are equivalent:
  
            (match_test "x & 2")
            (match_test "(x & 2) != 0")
  
! '(le ARITH1 ARITH2)'
! '(leu ARITH1 ARITH2)'
! '(lt ARITH1 ARITH2)'
! '(ltu ARITH1 ARITH2)'
! '(gt ARITH1 ARITH2)'
! '(gtu ARITH1 ARITH2)'
! '(ge ARITH1 ARITH2)'
! '(geu ARITH1 ARITH2)'
! '(ne ARITH1 ARITH2)'
! '(eq ARITH1 ARITH2)'
       These tests are true if the indicated comparison of the two
       arithmetic expressions is true.  Arithmetic expressions are formed
!      with 'plus', 'minus', 'mult', 'div', 'mod', 'abs', 'neg', 'and',
!      'ior', 'xor', 'not', 'ashift', 'lshiftrt', and 'ashiftrt'
       expressions.
  
!      'const_int' and 'symbol_ref' are always valid terms (*note Insn
!      Lengths::,for additional forms).  'symbol_ref' is a string denoting
!      a C expression that yields an 'int' when evaluated by the
!      'get_attr_...' routine.  It should normally be a global variable.
  
! '(eq_attr NAME VALUE)'
       NAME is a string specifying the name of an attribute.
  
       VALUE is a string that is either a valid value for attribute NAME,
!      a comma-separated list of values, or '!' followed by a value or
!      list.  If VALUE does not begin with a '!', this test is true if the
       value of the NAME attribute of the current insn is in the list
!      specified by VALUE.  If VALUE begins with a '!', this test is true
       if the attribute's value is _not_ in the specified list.
  
       For example,
--- 31747,31854 ----
  plus a few specific to attribute definitions, to be discussed below.
  Attribute value expressions must have one of the following forms:
  
! â€˜(const_int I)â€™
       The integer I specifies the value of a numeric attribute.  I must
       be non-negative.
  
       The value of a numeric attribute can be specified either with a
!      â€˜const_intâ€™, or as an integer represented as a string in
!      â€˜const_stringâ€™, â€˜eq_attrâ€™ (see below), â€˜attrâ€™, â€˜symbol_refâ€™, simple
!      arithmetic expressions, and â€˜set_attrâ€™ overrides on specific
       instructions (*note Tagging Insns::).
  
! â€˜(const_string VALUE)â€™
       The string VALUE specifies a constant attribute value.  If VALUE is
!      specified as â€˜"*"â€™, it means that the default value of the
       attribute is to be used for the insn containing this expression.
!      â€˜"*"â€™ obviously cannot be used in the DEFAULT expression of a
!      â€˜define_attrâ€™.
  
       If the attribute whose value is being specified is numeric, VALUE
       must be a string containing a non-negative integer (normally
!      â€˜const_intâ€™ would be used in this case).  Otherwise, it must
       contain one of the valid values for the attribute.
  
! â€˜(if_then_else TEST TRUE-VALUE FALSE-VALUE)â€™
       TEST specifies an attribute test, whose format is defined below.
       The value of this expression is TRUE-VALUE if TEST is true,
       otherwise it is FALSE-VALUE.
  
! â€˜(cond [TEST1 VALUE1 ...] DEFAULT)â€™
       The first operand of this expression is a vector containing an even
       number of expressions and consisting of pairs of TEST and VALUE
!      expressions.  The value of the â€˜condâ€™ expression is that of the
       VALUE corresponding to the first true TEST expression.  If none of
!      the TEST expressions are true, the value of the â€˜condâ€™ expression
       is that of the DEFAULT expression.
  
   TEST expressions can have one of the following forms:
  
! â€˜(const_int I)â€™
       This test is true if I is nonzero and false otherwise.
  
! â€˜(not TEST)â€™
! â€˜(ior TEST1 TEST2)â€™
! â€˜(and TEST1 TEST2)â€™
       These tests are true if the indicated logical function is true.
  
! â€˜(match_operand:M N PRED CONSTRAINTS)â€™
       This test is true if operand N of the insn whose attribute value is
       being determined has mode M (this part of the test is ignored if M
!      is â€˜VOIDmodeâ€™) and the function specified by the string PRED
       returns a nonzero value when passed operand N and mode M (this part
       of the test is ignored if PRED is the null string).
  
       The CONSTRAINTS operand is ignored and should be the null string.
  
! â€˜(match_test C-EXPR)â€™
       The test is true if C expression C-EXPR is true.  In non-constant
       attributes, C-EXPR has access to the following variables:
  
       INSN
            The rtl instruction under test.
       WHICH_ALTERNATIVE
!           The â€˜define_insnâ€™ alternative that INSN matches.  *Note Output
            Statement::.
       OPERANDS
            An array of INSN's rtl operands.
  
!      C-EXPR behaves like the condition in a C â€˜ifâ€™ statement, so there
       is no need to explicitly convert the expression into a boolean 0 or
       1 value.  For example, the following two tests are equivalent:
  
            (match_test "x & 2")
            (match_test "(x & 2) != 0")
  
! â€˜(le ARITH1 ARITH2)â€™
! â€˜(leu ARITH1 ARITH2)â€™
! â€˜(lt ARITH1 ARITH2)â€™
! â€˜(ltu ARITH1 ARITH2)â€™
! â€˜(gt ARITH1 ARITH2)â€™
! â€˜(gtu ARITH1 ARITH2)â€™
! â€˜(ge ARITH1 ARITH2)â€™
! â€˜(geu ARITH1 ARITH2)â€™
! â€˜(ne ARITH1 ARITH2)â€™
! â€˜(eq ARITH1 ARITH2)â€™
       These tests are true if the indicated comparison of the two
       arithmetic expressions is true.  Arithmetic expressions are formed
!      with â€˜plusâ€™, â€˜minusâ€™, â€˜multâ€™, â€˜divâ€™, â€˜modâ€™, â€˜absâ€™, â€˜negâ€™, â€˜andâ€™,
!      â€˜iorâ€™, â€˜xorâ€™, â€˜notâ€™, â€˜ashiftâ€™, â€˜lshiftrtâ€™, and â€˜ashiftrtâ€™
       expressions.
  
!      â€˜const_intâ€™ and â€˜symbol_refâ€™ are always valid terms (*note Insn
!      Lengths::,for additional forms).  â€˜symbol_refâ€™ is a string denoting
!      a C expression that yields an â€˜intâ€™ when evaluated by the
!      â€˜get_attr_...â€™ routine.  It should normally be a global variable.
  
! â€˜(eq_attr NAME VALUE)â€™
       NAME is a string specifying the name of an attribute.
  
       VALUE is a string that is either a valid value for attribute NAME,
!      a comma-separated list of values, or â€˜!â€™ followed by a value or
!      list.  If VALUE does not begin with a â€˜!â€™, this test is true if the
       value of the NAME attribute of the current insn is in the list
!      specified by VALUE.  If VALUE begins with a â€˜!â€™, this test is true
       if the attribute's value is _not_ in the specified list.
  
       For example,
*************** Attribute value expressions must have on
*** 31855,31862 ****
  
            (ior (eq_attr "type" "load") (eq_attr "type" "store"))
  
!      If NAME specifies an attribute of 'alternative', it refers to the
!      value of the compiler variable 'which_alternative' (*note Output
       Statement::) and the values must be small integers.  For example,
  
            (eq_attr "alternative" "2,3")
--- 31859,31866 ----
  
            (ior (eq_attr "type" "load") (eq_attr "type" "store"))
  
!      If NAME specifies an attribute of â€˜alternativeâ€™, it refers to the
!      value of the compiler variable â€˜which_alternativeâ€™ (*note Output
       Statement::) and the values must be small integers.  For example,
  
            (eq_attr "alternative" "2,3")
*************** Attribute value expressions must have on
*** 31866,31882 ****
            (ior (eq (symbol_ref "which_alternative") (const_int 2))
                 (eq (symbol_ref "which_alternative") (const_int 3)))
  
!      Note that, for most attributes, an 'eq_attr' test is simplified in
       cases where the value of the attribute being tested is known for
       all insns matching a particular pattern.  This is by far the most
       common case.
  
! '(attr_flag NAME)'
!      The value of an 'attr_flag' expression is true if the flag
!      specified by NAME is true for the 'insn' currently being scheduled.
  
       NAME is a string specifying one of a fixed set of flags to test.
!      Test the flags 'forward' and 'backward' to determine the direction
       of a conditional branch.
  
       This example describes a conditional branch delay slot which can be
--- 31870,31886 ----
            (ior (eq (symbol_ref "which_alternative") (const_int 2))
                 (eq (symbol_ref "which_alternative") (const_int 3)))
  
!      Note that, for most attributes, an â€˜eq_attrâ€™ test is simplified in
       cases where the value of the attribute being tested is known for
       all insns matching a particular pattern.  This is by far the most
       common case.
  
! â€˜(attr_flag NAME)â€™
!      The value of an â€˜attr_flagâ€™ expression is true if the flag
!      specified by NAME is true for the â€˜insnâ€™ currently being scheduled.
  
       NAME is a string specifying one of a fixed set of flags to test.
!      Test the flags â€˜forwardâ€™ and â€˜backwardâ€™ to determine the direction
       of a conditional branch.
  
       This example describes a conditional branch delay slot which can be
*************** Attribute value expressions must have on
*** 31890,31904 ****
               (and (eq_attr "in_branch_delay" "true")
                    (attr_flag "backward"))])
  
!      The 'forward' and 'backward' flags are false if the current 'insn'
       being scheduled is not a conditional branch.
  
!      'attr_flag' is only used during delay slot scheduling and has no
       meaning to other passes of the compiler.
  
! '(attr NAME)'
       The value of another attribute is returned.  This is most useful
!      for numeric attributes, as 'eq_attr' and 'attr_flag' produce more
       efficient code for non-numeric attributes.
  
  
--- 31894,31908 ----
               (and (eq_attr "in_branch_delay" "true")
                    (attr_flag "backward"))])
  
!      The â€˜forwardâ€™ and â€˜backwardâ€™ flags are false if the current â€˜insnâ€™
       being scheduled is not a conditional branch.
  
!      â€˜attr_flagâ€™ is only used during delay slot scheduling and has no
       meaning to other passes of the compiler.
  
! â€˜(attr NAME)â€™
       The value of another attribute is returned.  This is most useful
!      for numeric attributes, as â€˜eq_attrâ€™ and â€˜attr_flagâ€™ produce more
       efficient code for non-numeric attributes.
  
  
*************** File: gccint.info,  Node: Tagging Insns,
*** 31908,31963 ****
  -------------------------------------------
  
  The value assigned to an attribute of an insn is primarily determined by
! which pattern is matched by that insn (or which 'define_peephole'
! generated it).  Every 'define_insn' and 'define_peephole' can have an
  optional last argument to specify the values of attributes for matching
  insns.  The value of any attribute not specified in a particular insn is
  set to the default value for that attribute, as specified in its
! 'define_attr'.  Extensive use of default values for attributes permits
  the specification of the values for only one or two attributes in the
  definition of most insn patterns, as seen in the example in the next
  section.
  
!  The optional last argument of 'define_insn' and 'define_peephole' is a
  vector of expressions, each of which defines the value for a single
  attribute.  The most general way of assigning an attribute's value is to
! use a 'set' expression whose first operand is an 'attr' expression
  giving the name of the attribute being set.  The second operand of the
! 'set' is an attribute expression (*note Expressions::) giving the value
  of the attribute.
  
!  When the attribute value depends on the 'alternative' attribute (i.e.,
  which is the applicable alternative in the constraint of the insn), the
! 'set_attr_alternative' expression can be used.  It allows the
  specification of a vector of attribute expressions, one for each
  alternative.
  
   When the generality of arbitrary attribute expressions is not required,
! the simpler 'set_attr' expression can be used, which allows specifying a
  string giving either a single attribute value or a list of attribute
  values, one for each alternative.
  
   The form of each of the above specifications is shown below.  In each
  case, NAME is a string specifying the attribute to be set.
  
! '(set_attr NAME VALUE-STRING)'
       VALUE-STRING is either a string giving the desired attribute value,
       or a string containing a comma-separated list giving the values for
       succeeding alternatives.  The number of elements must match the
       number of alternatives in the constraint of the insn pattern.
  
!      Note that it may be useful to specify '*' for some alternative, in
       which case the attribute will assume its default value for insns
       matching that alternative.
  
! '(set_attr_alternative NAME [VALUE1 VALUE2 ...])'
       Depending on the alternative of the insn, the value will be one of
!      the specified values.  This is a shorthand for using a 'cond' with
!      tests on the 'alternative' attribute.
  
! '(set (attr NAME) VALUE)'
!      The first operand of this 'set' must be the special RTL expression
!      'attr', whose sole operand is a string giving the name of the
       attribute being set.  VALUE is the value of the attribute.
  
   The following shows three different ways of representing the same
--- 31912,31967 ----
  -------------------------------------------
  
  The value assigned to an attribute of an insn is primarily determined by
! which pattern is matched by that insn (or which â€˜define_peepholeâ€™
! generated it).  Every â€˜define_insnâ€™ and â€˜define_peepholeâ€™ can have an
  optional last argument to specify the values of attributes for matching
  insns.  The value of any attribute not specified in a particular insn is
  set to the default value for that attribute, as specified in its
! â€˜define_attrâ€™.  Extensive use of default values for attributes permits
  the specification of the values for only one or two attributes in the
  definition of most insn patterns, as seen in the example in the next
  section.
  
!  The optional last argument of â€˜define_insnâ€™ and â€˜define_peepholeâ€™ is a
  vector of expressions, each of which defines the value for a single
  attribute.  The most general way of assigning an attribute's value is to
! use a â€˜setâ€™ expression whose first operand is an â€˜attrâ€™ expression
  giving the name of the attribute being set.  The second operand of the
! â€˜setâ€™ is an attribute expression (*note Expressions::) giving the value
  of the attribute.
  
!  When the attribute value depends on the â€˜alternativeâ€™ attribute (i.e.,
  which is the applicable alternative in the constraint of the insn), the
! â€˜set_attr_alternativeâ€™ expression can be used.  It allows the
  specification of a vector of attribute expressions, one for each
  alternative.
  
   When the generality of arbitrary attribute expressions is not required,
! the simpler â€˜set_attrâ€™ expression can be used, which allows specifying a
  string giving either a single attribute value or a list of attribute
  values, one for each alternative.
  
   The form of each of the above specifications is shown below.  In each
  case, NAME is a string specifying the attribute to be set.
  
! â€˜(set_attr NAME VALUE-STRING)â€™
       VALUE-STRING is either a string giving the desired attribute value,
       or a string containing a comma-separated list giving the values for
       succeeding alternatives.  The number of elements must match the
       number of alternatives in the constraint of the insn pattern.
  
!      Note that it may be useful to specify â€˜*â€™ for some alternative, in
       which case the attribute will assume its default value for insns
       matching that alternative.
  
! â€˜(set_attr_alternative NAME [VALUE1 VALUE2 ...])â€™
       Depending on the alternative of the insn, the value will be one of
!      the specified values.  This is a shorthand for using a â€˜condâ€™ with
!      tests on the â€˜alternativeâ€™ attribute.
  
! â€˜(set (attr NAME) VALUE)â€™
!      The first operand of this â€˜setâ€™ must be the special RTL expression
!      â€˜attrâ€™, whose sole operand is a string giving the name of the
       attribute being set.  VALUE is the value of the attribute.
  
   The following shows three different ways of representing the same
*************** attribute value specification:
*** 31974,31998 ****
                   (eq_attr "alternative" "2") (const_string "store")]
                  (const_string "arith")))
  
!  The 'define_asm_attributes' expression provides a mechanism to specify
! the attributes assigned to insns produced from an 'asm' statement.  It
  has the form:
  
       (define_asm_attributes [ATTR-SETS])
  
! where ATTR-SETS is specified the same as for both the 'define_insn' and
! the 'define_peephole' expressions.
  
   These values will typically be the "worst case" attribute values.  For
  example, they might indicate that the condition code will be clobbered.
  
!  A specification for a 'length' attribute is handled specially.  The way
! to compute the length of an 'asm' insn is to multiply the length
! specified in the expression 'define_asm_attributes' by the number of
! machine instructions specified in the 'asm' statement, determined by
  counting the number of semicolons and newlines in the string.
! Therefore, the value of the 'length' attribute specified in a
! 'define_asm_attributes' should be the maximum possible length of a
  single machine instruction.
  
  
--- 31978,32002 ----
                   (eq_attr "alternative" "2") (const_string "store")]
                  (const_string "arith")))
  
!  The â€˜define_asm_attributesâ€™ expression provides a mechanism to specify
! the attributes assigned to insns produced from an â€˜asmâ€™ statement.  It
  has the form:
  
       (define_asm_attributes [ATTR-SETS])
  
! where ATTR-SETS is specified the same as for both the â€˜define_insnâ€™ and
! the â€˜define_peepholeâ€™ expressions.
  
   These values will typically be the "worst case" attribute values.  For
  example, they might indicate that the condition code will be clobbered.
  
!  A specification for a â€˜lengthâ€™ attribute is handled specially.  The way
! to compute the length of an â€˜asmâ€™ insn is to multiply the length
! specified in the expression â€˜define_asm_attributesâ€™ by the number of
! machine instructions specified in the â€˜asmâ€™ statement, determined by
  counting the number of semicolons and newlines in the string.
! Therefore, the value of the â€˜lengthâ€™ attribute specified in a
! â€˜define_asm_attributesâ€™ should be the maximum possible length of a
  single machine instruction.
  
  
*************** File: gccint.info,  Node: Attr Example,
*** 32002,32009 ****
  -------------------------------------------
  
  The judicious use of defaulting is important in the efficient use of
! insn attributes.  Typically, insns are divided into "types" and an
! attribute, customarily called 'type', is used to represent this value.
  This attribute is normally used only to define the default value for
  other attributes.  An example will clarify this usage.
  
--- 32006,32013 ----
  -------------------------------------------
  
  The judicious use of defaulting is important in the efficient use of
! insn attributes.  Typically, insns are divided into â€œtypesâ€� and an
! attribute, customarily called â€˜typeâ€™, is used to represent this value.
  This attribute is normally used only to define the default value for
  other attributes.  An example will clarify this usage.
  
*************** changed, be set to agree with the result
*** 32019,32025 ****
  changed if the item previously set into the condition code has been
  modified.
  
!  Here is part of a sample 'md' file for such a machine:
  
       (define_attr "type" "load,store,arith,fp,branch" (const_string "arith"))
  
--- 32023,32029 ----
  changed if the item previously set into the condition code has been
  modified.
  
!  Here is part of a sample â€˜mdâ€™ file for such a machine:
  
       (define_attr "type" "load,store,arith,fp,branch" (const_string "arith"))
  
*************** File: gccint.info,  Node: Insn Lengths,
*** 32058,32107 ****
  For many machines, multiple types of branch instructions are provided,
  each for different length branch displacements.  In most cases, the
  assembler will choose the correct instruction to use.  However, when the
! assembler cannot do so, GCC can when a special attribute, the 'length'
  attribute, is defined.  This attribute must be defined to have numeric
! values by specifying a null string in its 'define_attr'.
  
!  In the case of the 'length' attribute, two additional forms of
  arithmetic terms are allowed in test expressions:
  
! '(match_dup N)'
       This refers to the address of operand N of the current insn, which
!      must be a 'label_ref'.
  
! '(pc)'
       For non-branch instructions and backward branch instructions, this
       refers to the address of the current insn.  But for forward branch
       instructions, this refers to the address of the next insn, because
       the length of the current insn is to be computed.
  
   For normal insns, the length will be determined by value of the
! 'length' attribute.  In the case of 'addr_vec' and 'addr_diff_vec' insn
  patterns, the length is computed as the number of vectors multiplied by
  the size of each vector.
  
   Lengths are measured in addressable storage units (bytes).
  
!  Note that it is possible to call functions via the 'symbol_ref'
  mechanism to compute the length of an insn.  However, if you use this
  mechanism you must provide dummy clauses to express the maximum length
  without using the function call.  You can see an example of this in the
! 'pa' machine description for the 'call_symref' pattern.
  
   The following macros can be used to refine the length computation:
  
! 'ADJUST_INSN_LENGTH (INSN, LENGTH)'
       If defined, modifies the length assigned to instruction INSN as a
       function of the context in which it is used.  LENGTH is an lvalue
       that contains the initially computed length of the insn and should
       be updated with the correct length of the insn.
  
       This macro will normally not be required.  A case in which it is
!      required is the ROMP.  On this machine, the size of an 'addr_vec'
       insn must be increased by two to compensate for the fact that
       alignment may be required.
  
!  The routine that returns 'get_attr_length' (the value of the 'length'
  attribute) can be used by the output routine to determine the form of
  the branch instruction to be written, as the example below illustrates.
  
--- 32062,32111 ----
  For many machines, multiple types of branch instructions are provided,
  each for different length branch displacements.  In most cases, the
  assembler will choose the correct instruction to use.  However, when the
! assembler cannot do so, GCC can when a special attribute, the â€˜lengthâ€™
  attribute, is defined.  This attribute must be defined to have numeric
! values by specifying a null string in its â€˜define_attrâ€™.
  
!  In the case of the â€˜lengthâ€™ attribute, two additional forms of
  arithmetic terms are allowed in test expressions:
  
! â€˜(match_dup N)â€™
       This refers to the address of operand N of the current insn, which
!      must be a â€˜label_refâ€™.
  
! â€˜(pc)â€™
       For non-branch instructions and backward branch instructions, this
       refers to the address of the current insn.  But for forward branch
       instructions, this refers to the address of the next insn, because
       the length of the current insn is to be computed.
  
   For normal insns, the length will be determined by value of the
! â€˜lengthâ€™ attribute.  In the case of â€˜addr_vecâ€™ and â€˜addr_diff_vecâ€™ insn
  patterns, the length is computed as the number of vectors multiplied by
  the size of each vector.
  
   Lengths are measured in addressable storage units (bytes).
  
!  Note that it is possible to call functions via the â€˜symbol_refâ€™
  mechanism to compute the length of an insn.  However, if you use this
  mechanism you must provide dummy clauses to express the maximum length
  without using the function call.  You can see an example of this in the
! â€˜paâ€™ machine description for the â€˜call_symrefâ€™ pattern.
  
   The following macros can be used to refine the length computation:
  
! â€˜ADJUST_INSN_LENGTH (INSN, LENGTH)â€™
       If defined, modifies the length assigned to instruction INSN as a
       function of the context in which it is used.  LENGTH is an lvalue
       that contains the initially computed length of the insn and should
       be updated with the correct length of the insn.
  
       This macro will normally not be required.  A case in which it is
!      required is the ROMP.  On this machine, the size of an â€˜addr_vecâ€™
       insn must be increased by two to compensate for the fact that
       alignment may be required.
  
!  The routine that returns â€˜get_attr_lengthâ€™ (the value of the â€˜lengthâ€™
  attribute) can be used by the output routine to determine the form of
  the branch instruction to be written, as the example below illustrates.
  
*************** File: gccint.info,  Node: Constant Attri
*** 32134,32141 ****
  16.20.6 Constant Attributes
  ---------------------------
  
! A special form of 'define_attr', where the expression for the default
! value is a 'const' expression, indicates an attribute that is constant
  for a given run of the compiler.  Constant attributes may be used to
  specify which variety of processor is used.  For example,
  
--- 32138,32145 ----
  16.20.6 Constant Attributes
  ---------------------------
  
! A special form of â€˜define_attrâ€™, where the expression for the default
! value is a â€˜constâ€™ expression, indicates an attribute that is constant
  for a given run of the compiler.  Constant attributes may be used to
  specify which variety of processor is used.  For example,
  
*************** specify which variety of processor is us
*** 32153,32160 ****
  
   The routine generated for constant attributes has no parameters as it
  does not depend on any particular insn.  RTL expressions used to define
! the value of a constant attribute may use the 'symbol_ref' form, but may
! not use either the 'match_operand' form or 'eq_attr' forms involving
  insn attributes.
  
  
--- 32157,32164 ----
  
   The routine generated for constant attributes has no parameters as it
  does not depend on any particular insn.  RTL expressions used to define
! the value of a constant attribute may use the â€˜symbol_refâ€™ form, but may
! not use either the â€˜match_operandâ€™ form or â€˜eq_attrâ€™ forms involving
  insn attributes.
  
  
*************** File: gccint.info,  Node: Mnemonic Attri
*** 32163,32169 ****
  16.20.7 Mnemonic Attribute
  --------------------------
  
! The 'mnemonic' attribute is a string type attribute holding the
  instruction mnemonic for an insn alternative.  The attribute values will
  automatically be generated by the machine description parser if there is
  an attribute definition in the md file:
--- 32167,32173 ----
  16.20.7 Mnemonic Attribute
  --------------------------
  
! The â€˜mnemonicâ€™ attribute is a string type attribute holding the
  instruction mnemonic for an insn alternative.  The attribute values will
  automatically be generated by the machine description parser if there is
  an attribute definition in the md file:
*************** an attribute definition in the md file:
*** 32174,32190 ****
  with any of the instruction mnemonics.  This value will be used whenever
  the machine description parser is not able to determine the mnemonic
  string.  This might be the case for output templates containing more
! than a single instruction as in '"mvcle\t%0,%1,0\;jo\t.-4"'.
  
!  The 'mnemonic' attribute set is not generated automatically if the
  instruction string is generated via C code.
  
!  An existing 'mnemonic' attribute set in an insn definition will not be
  overriden by the md file parser.  That way it is possible to manually
  set the instruction mnemonics for the cases where the md file parser
  fails to determine it automatically.
  
!  The 'mnemonic' attribute is useful for dealing with instruction
  specific properties in the pipeline description without defining
  additional insn attributes.
  
--- 32178,32194 ----
  with any of the instruction mnemonics.  This value will be used whenever
  the machine description parser is not able to determine the mnemonic
  string.  This might be the case for output templates containing more
! than a single instruction as in â€˜"mvcle\t%0,%1,0\;jo\t.-4"â€™.
  
!  The â€˜mnemonicâ€™ attribute set is not generated automatically if the
  instruction string is generated via C code.
  
!  An existing â€˜mnemonicâ€™ attribute set in an insn definition will not be
  overriden by the md file parser.  That way it is possible to manually
  set the instruction mnemonics for the cases where the md file parser
  fails to determine it automatically.
  
!  The â€˜mnemonicâ€™ attribute is useful for dealing with instruction
  specific properties in the pipeline description without defining
  additional insn attributes.
  
*************** File: gccint.info,  Node: Delay Slots,
*** 32201,32213 ****
  
  The insn attribute mechanism can be used to specify the requirements for
  delay slots, if any, on a target machine.  An instruction is said to
! require a "delay slot" if some instructions that are physically after
  the instruction are executed as if they were located before it.  Classic
  examples are branch and call instructions, which often execute the
  following instruction before the branch or call is performed.
  
   On some machines, conditional branch instructions can optionally
! "annul" instructions in the delay slot.  This means that the instruction
  will not be executed for certain branch outcomes.  Both instructions
  that annul if the branch is true and instructions that annul if the
  branch is false are supported.
--- 32205,32217 ----
  
  The insn attribute mechanism can be used to specify the requirements for
  delay slots, if any, on a target machine.  An instruction is said to
! require a â€œdelay slotâ€� if some instructions that are physically after
  the instruction are executed as if they were located before it.  Classic
  examples are branch and call instructions, which often execute the
  following instruction before the branch or call is performed.
  
   On some machines, conditional branch instructions can optionally
! â€œannulâ€� instructions in the delay slot.  This means that the instruction
  will not be executed for certain branch outcomes.  Both instructions
  that annul if the branch is true and instructions that annul if the
  branch is false are supported.
*************** instructions.  See the next section for
*** 32219,32251 ****
  instruction scheduling.
  
   The requirement of an insn needing one or more delay slots is indicated
! via the 'define_delay' expression.  It has the following form:
  
       (define_delay TEST
                     [DELAY-1 ANNUL-TRUE-1 ANNUL-FALSE-1
                      DELAY-2 ANNUL-TRUE-2 ANNUL-FALSE-2
                      ...])
  
!  TEST is an attribute test that indicates whether this 'define_delay'
  applies to a particular insn.  If so, the number of required delay slots
  is determined by the length of the vector specified as the second
  argument.  An insn placed in delay slot N must satisfy attribute test
  DELAY-N.  ANNUL-TRUE-N is an attribute test that specifies which insns
  may be annulled if the branch is true.  Similarly, ANNUL-FALSE-N
  specifies which insns in the delay slot may be annulled if the branch is
! false.  If annulling is not supported for that delay slot, '(nil)'
  should be coded.
  
   For example, in the common case where branch and call insns require a
  single delay slot, which may contain any insn other than a branch or
! call, the following would be placed in the 'md' file:
  
       (define_delay (eq_attr "type" "branch,call")
                     [(eq_attr "type" "!branch,call") (nil) (nil)])
  
!  Multiple 'define_delay' expressions may be specified.  In this case,
  each such expression specifies different delay slot requirements and
! there must be no insn for which tests in two 'define_delay' expressions
  are both true.
  
   For example, if we have a machine that requires one delay slot for
--- 32223,32255 ----
  instruction scheduling.
  
   The requirement of an insn needing one or more delay slots is indicated
! via the â€˜define_delayâ€™ expression.  It has the following form:
  
       (define_delay TEST
                     [DELAY-1 ANNUL-TRUE-1 ANNUL-FALSE-1
                      DELAY-2 ANNUL-TRUE-2 ANNUL-FALSE-2
                      ...])
  
!  TEST is an attribute test that indicates whether this â€˜define_delayâ€™
  applies to a particular insn.  If so, the number of required delay slots
  is determined by the length of the vector specified as the second
  argument.  An insn placed in delay slot N must satisfy attribute test
  DELAY-N.  ANNUL-TRUE-N is an attribute test that specifies which insns
  may be annulled if the branch is true.  Similarly, ANNUL-FALSE-N
  specifies which insns in the delay slot may be annulled if the branch is
! false.  If annulling is not supported for that delay slot, â€˜(nil)â€™
  should be coded.
  
   For example, in the common case where branch and call insns require a
  single delay slot, which may contain any insn other than a branch or
! call, the following would be placed in the â€˜mdâ€™ file:
  
       (define_delay (eq_attr "type" "branch,call")
                     [(eq_attr "type" "!branch,call") (nil) (nil)])
  
!  Multiple â€˜define_delayâ€™ expressions may be specified.  In this case,
  each such expression specifies different delay slot requirements and
! there must be no insn for which tests in two â€˜define_delayâ€™ expressions
  are both true.
  
   For example, if we have a machine that requires one delay slot for
*************** File: gccint.info,  Node: Processor pipe
*** 32269,32285 ****
  -------------------------------------------------
  
  To achieve better performance, most modern processors (super-pipelined,
! superscalar RISC, and VLIW processors) have many "functional units" on
  which several instructions can be executed simultaneously.  An
  instruction starts execution if its issue conditions are satisfied.  If
  not, the instruction is stalled until its conditions are satisfied.
! Such "interlock (pipeline) delay" causes interruption of the fetching of
  successor instructions (or demands nop instructions, e.g. for some MIPS
  processors).
  
   There are two major kinds of interlock delays in modern processors.
! The first one is a data dependence delay determining "instruction
! latency time".  The instruction execution is not started until all
  source data have been evaluated by prior instructions (there are more
  complex cases when the instruction execution starts even when the data
  are not available but will be ready in given time after the instruction
--- 32273,32289 ----
  -------------------------------------------------
  
  To achieve better performance, most modern processors (super-pipelined,
! superscalar RISC, and VLIW processors) have many â€œfunctional unitsâ€� on
  which several instructions can be executed simultaneously.  An
  instruction starts execution if its issue conditions are satisfied.  If
  not, the instruction is stalled until its conditions are satisfied.
! Such â€œinterlock (pipeline) delayâ€� causes interruption of the fetching of
  successor instructions (or demands nop instructions, e.g. for some MIPS
  processors).
  
   There are two major kinds of interlock delays in modern processors.
! The first one is a data dependence delay determining â€œinstruction
! latency timeâ€�.  The instruction execution is not started until all
  source data have been evaluated by prior instructions (there are more
  complex cases when the instruction execution starts even when the data
  are not available but will be ready in given time after the instruction
*************** especially for modern RISC processors.
*** 32296,32307 ****
   The task of exploiting more processor parallelism is solved by an
  instruction scheduler.  For a better solution to this problem, the
  instruction scheduler has to have an adequate description of the
! processor parallelism (or "pipeline description").  GCC machine
  descriptions describe processor parallelism and functional unit
! reservations for groups of instructions with the aid of "regular
! expressions".
  
!  The GCC instruction scheduler uses a "pipeline hazard recognizer" to
  figure out the possibility of the instruction issue by the processor on
  a given simulated processor cycle.  The pipeline hazard recognizer is
  automatically generated from the processor pipeline description.  The
--- 32300,32311 ----
   The task of exploiting more processor parallelism is solved by an
  instruction scheduler.  For a better solution to this problem, the
  instruction scheduler has to have an adequate description of the
! processor parallelism (or â€œpipeline descriptionâ€�).  GCC machine
  descriptions describe processor parallelism and functional unit
! reservations for groups of instructions with the aid of â€œregular
! expressionsâ€�.
  
!  The GCC instruction scheduler uses a â€œpipeline hazard recognizerâ€� to
  figure out the possibility of the instruction issue by the processor on
  a given simulated processor cycle.  The pipeline hazard recognizer is
  automatically generated from the processor pipeline description.  The
*************** only one finite state automaton is gener
*** 32327,32334 ****
  
   AUTOMATA-NAMES is a string giving names of the automata.  The names are
  separated by commas.  All the automata should have unique names.  The
! automaton name is used in the constructions 'define_cpu_unit' and
! 'define_query_cpu_unit'.
  
   Each processor functional unit used in the description of instruction
  reservations should be described by the following construction.
--- 32331,32338 ----
  
   AUTOMATA-NAMES is a string giving names of the automata.  The names are
  separated by commas.  All the automata should have unique names.  The
! automaton name is used in the constructions â€˜define_cpu_unitâ€™ and
! â€˜define_query_cpu_unitâ€™.
  
   Each processor functional unit used in the description of instruction
  reservations should be described by the following construction.
*************** reservations should be described by the
*** 32336,32347 ****
       (define_cpu_unit UNIT-NAMES [AUTOMATON-NAME])
  
   UNIT-NAMES is a string giving the names of the functional units
! separated by commas.  Don't use name 'nothing', it is reserved for other
  goals.
  
   AUTOMATON-NAME is a string giving the name of the automaton with which
  the unit is bound.  The automaton should be described in construction
! 'define_automaton'.  You should give "automaton-name", if there is a
  defined automaton.
  
   The assignment of units to automata are constrained by the uses of the
--- 32340,32351 ----
       (define_cpu_unit UNIT-NAMES [AUTOMATON-NAME])
  
   UNIT-NAMES is a string giving the names of the functional units
! separated by commas.  Don't use name â€˜nothingâ€™, it is reserved for other
  goals.
  
   AUTOMATON-NAME is a string giving the name of the automaton with which
  the unit is bound.  The automaton should be described in construction
! â€˜define_automatonâ€™.  You should give â€œautomaton-nameâ€�, if there is a
  defined automaton.
  
   The assignment of units to automata are constrained by the uses of the
*************** The rest of the constraints are mentione
*** 32353,32359 ****
  subsequent constructions.
  
   The following construction describes CPU functional units analogously
! to 'define_cpu_unit'.  The reservation of such units can be queried for
  an automaton state.  The instruction scheduler never queries reservation
  of functional units for given automaton state.  So as a rule, you don't
  need this construction.  This construction could be used for future code
--- 32357,32363 ----
  subsequent constructions.
  
   The following construction describes CPU functional units analogously
! to â€˜define_cpu_unitâ€™.  The reservation of such units can be queried for
  an automaton state.  The instruction scheduler never queries reservation
  of functional units for given automaton state.  So as a rule, you don't
  need this construction.  This construction could be used for future code
*************** dependencies.  The cost of anti-dependen
*** 32382,32404 ****
  of output dependencies is the difference between latency times of the
  producing and consuming insns (if the difference is negative, the cost
  is considered to be zero).  You can always change the default costs for
! any description by using the target hook 'TARGET_SCHED_ADJUST_COST'
  (*note Scheduling::).
  
   INSN-NAME is a string giving the internal name of the insn.  The
! internal names are used in constructions 'define_bypass' and in the
  automaton description file generated for debugging.  The internal name
! has nothing in common with the names in 'define_insn'.  It is a good
  practice to use insn classes described in the processor manual.
  
   CONDITION defines what RTL insns are described by this construction.
  You should remember that you will be in trouble if CONDITION for two or
! more different 'define_insn_reservation' constructions is TRUE for an
  insn.  In this case what reservation will be used for the insn is not
  defined.  Such cases are not checked during generation of the pipeline
  hazards recognizer because in general recognizing that two conditions
  may have the same value is quite difficult (especially if the conditions
! contain 'symbol_ref').  It is also not checked during the pipeline
  hazard recognizer work because it would slow down the recognizer
  considerably.
  
--- 32386,32408 ----
  of output dependencies is the difference between latency times of the
  producing and consuming insns (if the difference is negative, the cost
  is considered to be zero).  You can always change the default costs for
! any description by using the target hook â€˜TARGET_SCHED_ADJUST_COSTâ€™
  (*note Scheduling::).
  
   INSN-NAME is a string giving the internal name of the insn.  The
! internal names are used in constructions â€˜define_bypassâ€™ and in the
  automaton description file generated for debugging.  The internal name
! has nothing in common with the names in â€˜define_insnâ€™.  It is a good
  practice to use insn classes described in the processor manual.
  
   CONDITION defines what RTL insns are described by this construction.
  You should remember that you will be in trouble if CONDITION for two or
! more different â€˜define_insn_reservationâ€™ constructions is TRUE for an
  insn.  In this case what reservation will be used for the insn is not
  defined.  Such cases are not checked during generation of the pipeline
  hazards recognizer because in general recognizing that two conditions
  may have the same value is quite difficult (especially if the conditions
! contain â€˜symbol_refâ€™).  It is also not checked during the pipeline
  hazard recognizer work because it would slow down the recognizer
  considerably.
  
*************** expression according to the following sy
*** 32424,32451 ****
                      | "nothing"
                      | "(" regexp ")"
  
!    * ',' is used for describing the start of the next cycle in the
       reservation.
  
!    * '|' is used for describing a reservation described by the first
       regular expression *or* a reservation described by the second
       regular expression *or* etc.
  
!    * '+' is used for describing a reservation described by the first
       regular expression *and* a reservation described by the second
       regular expression *and* etc.
  
!    * '*' is used for convenience and simply means a sequence in which
       the regular expression are repeated NUMBER times with cycle
!      advancing (see ',').
  
!    * 'cpu_function_unit_name' denotes reservation of the named
       functional unit.
  
!    * 'reservation_name' -- see description of construction
!      'define_reservation'.
  
!    * 'nothing' denotes no unit reservations.
  
   Sometimes unit reservations for different insns contain common parts.
  In such case, you can simplify the pipeline description by describing
--- 32428,32455 ----
                      | "nothing"
                      | "(" regexp ")"
  
!    â€¢ â€˜,â€™ is used for describing the start of the next cycle in the
       reservation.
  
!    â€¢ â€˜|â€™ is used for describing a reservation described by the first
       regular expression *or* a reservation described by the second
       regular expression *or* etc.
  
!    â€¢ â€˜+â€™ is used for describing a reservation described by the first
       regular expression *and* a reservation described by the second
       regular expression *and* etc.
  
!    â€¢ â€˜*â€™ is used for convenience and simply means a sequence in which
       the regular expression are repeated NUMBER times with cycle
!      advancing (see â€˜,â€™).
  
!    â€¢ â€˜cpu_function_unit_nameâ€™ denotes reservation of the named
       functional unit.
  
!    â€¢ â€˜reservation_nameâ€™ -- see description of construction
!      â€˜define_reservationâ€™.
  
!    â€¢ â€˜nothingâ€™ denotes no unit reservations.
  
   Sometimes unit reservations for different insns contain common parts.
  In such case, you can simplify the pipeline description by describing
*************** the common part by the following constru
*** 32456,32462 ****
   RESERVATION-NAME is a string giving name of REGEXP.  Functional unit
  names and reservation names are in the same name space.  So the
  reservation names should be different from the functional unit names and
! cannot be the reserved name 'nothing'.
  
   The following construction is used to describe exceptions in the
  latency time for given instruction pair.  This is so called bypasses.
--- 32460,32466 ----
   RESERVATION-NAME is a string giving name of REGEXP.  Functional unit
  names and reservation names are in the same name space.  So the
  reservation names should be different from the functional unit names and
! cannot be the reserved name â€˜nothingâ€™.
  
   The following construction is used to describe exceptions in the
  latency time for given instruction pair.  This is so called bypasses.
*************** latency time for given instruction pair.
*** 32468,32484 ****
  string OUT_INSN_NAMES will be ready for the instructions given in string
  IN_INSN_NAMES.  Each of these strings is a comma-separated list of
  filename-style globs and they refer to the names of
! 'define_insn_reservation's.  For example:
       (define_bypass 1 "cpu1_load_*, cpu1_store_*" "cpu1_load_*")
!  defines a bypass between instructions that start with 'cpu1_load_' or
! 'cpu1_store_' and those that start with 'cpu1_load_'.
  
   GUARD is an optional string giving the name of a C function which
  defines an additional guard for the bypass.  The function will get the
  two insns as parameters.  If the function returns zero the bypass will
  be ignored for this case.  The additional guard is necessary to
  recognize complicated bypasses, e.g. when the consumer is only an
! address of insn 'store' (not a stored value).
  
   If there are more one bypass with the same output and input insns, the
  chosen bypass is the first bypass with a guard in description whose
--- 32472,32488 ----
  string OUT_INSN_NAMES will be ready for the instructions given in string
  IN_INSN_NAMES.  Each of these strings is a comma-separated list of
  filename-style globs and they refer to the names of
! â€˜define_insn_reservationâ€™s.  For example:
       (define_bypass 1 "cpu1_load_*, cpu1_store_*" "cpu1_load_*")
!  defines a bypass between instructions that start with â€˜cpu1_load_â€™ or
! â€˜cpu1_store_â€™ and those that start with â€˜cpu1_load_â€™.
  
   GUARD is an optional string giving the name of a C function which
  defines an additional guard for the bypass.  The function will get the
  two insns as parameters.  If the function returns zero the bypass will
  be ignored for this case.  The additional guard is necessary to
  recognize complicated bypasses, e.g. when the consumer is only an
! address of insn â€˜storeâ€™ (not a stored value).
  
   If there are more one bypass with the same output and input insns, the
  chosen bypass is the first bypass with a guard in description whose
*************** commas.
*** 32503,32509 ****
  comma.  Currently pattern is one unit or units separated by
  white-spaces.
  
!  The first construction ('exclusion_set') means that each functional
  unit in the first string cannot be reserved simultaneously with a unit
  whose name is in the second string and vice versa.  For example, the
  construction is useful for describing processors (e.g. some SPARC
--- 32507,32513 ----
  comma.  Currently pattern is one unit or units separated by
  white-spaces.
  
!  The first construction (â€˜exclusion_setâ€™) means that each functional
  unit in the first string cannot be reserved simultaneously with a unit
  whose name is in the second string and vice versa.  For example, the
  construction is useful for describing processors (e.g. some SPARC
*************** processors) with a fully pipelined float
*** 32511,32570 ****
  can execute simultaneously only single floating point insns or only
  double floating point insns.
  
!  The second construction ('presence_set') means that each functional
  unit in the first string cannot be reserved unless at least one of
  pattern of units whose names are in the second string is reserved.  This
  is an asymmetric relation.  For example, it is useful for description
! that VLIW 'slot1' is reserved after 'slot0' reservation.  We could
  describe it by the following construction
  
       (presence_set "slot1" "slot0")
  
!  Or 'slot1' is reserved only after 'slot0' and unit 'b0' reservation.
  In this case we could write
  
       (presence_set "slot1" "slot0 b0")
  
!  The third construction ('final_presence_set') is analogous to
! 'presence_set'.  The difference between them is when checking is done.
  When an instruction is issued in given automaton state reflecting all
  current and planned unit reservations, the automaton state is changed.
  The first state is a source state, the second one is a result state.
! Checking for 'presence_set' is done on the source state reservation,
! checking for 'final_presence_set' is done on the result reservation.
  This construction is useful to describe a reservation which is actually
  two subsequent reservations.  For example, if we use
  
       (presence_set "slot1" "slot0")
  
!  the following insn will be never issued (because 'slot1' requires
! 'slot0' which is absent in the source state).
  
       (define_reservation "insn_and_nop" "slot0 + slot1")
  
!  but it can be issued if we use analogous 'final_presence_set'.
  
!  The forth construction ('absence_set') means that each functional unit
  in the first string can be reserved only if each pattern of units whose
  names are in the second string is not reserved.  This is an asymmetric
! relation (actually 'exclusion_set' is analogous to this one but it is
  symmetric).  For example it might be useful in a VLIW description to say
! that 'slot0' cannot be reserved after either 'slot1' or 'slot2' have
  been reserved.  This can be described as:
  
       (absence_set "slot0" "slot1, slot2")
  
!  Or 'slot2' cannot be reserved if 'slot0' and unit 'b0' are reserved or
! 'slot1' and unit 'b1' are reserved.  In this case we could write
  
       (absence_set "slot2" "slot0 b0, slot1 b1")
  
   All functional units mentioned in a set should belong to the same
  automaton.
  
!  The last construction ('final_absence_set') is analogous to
! 'absence_set' but checking is done on the result (state) reservation.
! See comments for 'final_presence_set'.
  
   You can control the generator of the pipeline hazard recognizer with
  the following construction.
--- 32515,32574 ----
  can execute simultaneously only single floating point insns or only
  double floating point insns.
  
!  The second construction (â€˜presence_setâ€™) means that each functional
  unit in the first string cannot be reserved unless at least one of
  pattern of units whose names are in the second string is reserved.  This
  is an asymmetric relation.  For example, it is useful for description
! that VLIW â€˜slot1â€™ is reserved after â€˜slot0â€™ reservation.  We could
  describe it by the following construction
  
       (presence_set "slot1" "slot0")
  
!  Or â€˜slot1â€™ is reserved only after â€˜slot0â€™ and unit â€˜b0â€™ reservation.
  In this case we could write
  
       (presence_set "slot1" "slot0 b0")
  
!  The third construction (â€˜final_presence_setâ€™) is analogous to
! â€˜presence_setâ€™.  The difference between them is when checking is done.
  When an instruction is issued in given automaton state reflecting all
  current and planned unit reservations, the automaton state is changed.
  The first state is a source state, the second one is a result state.
! Checking for â€˜presence_setâ€™ is done on the source state reservation,
! checking for â€˜final_presence_setâ€™ is done on the result reservation.
  This construction is useful to describe a reservation which is actually
  two subsequent reservations.  For example, if we use
  
       (presence_set "slot1" "slot0")
  
!  the following insn will be never issued (because â€˜slot1â€™ requires
! â€˜slot0â€™ which is absent in the source state).
  
       (define_reservation "insn_and_nop" "slot0 + slot1")
  
!  but it can be issued if we use analogous â€˜final_presence_setâ€™.
  
!  The forth construction (â€˜absence_setâ€™) means that each functional unit
  in the first string can be reserved only if each pattern of units whose
  names are in the second string is not reserved.  This is an asymmetric
! relation (actually â€˜exclusion_setâ€™ is analogous to this one but it is
  symmetric).  For example it might be useful in a VLIW description to say
! that â€˜slot0â€™ cannot be reserved after either â€˜slot1â€™ or â€˜slot2â€™ have
  been reserved.  This can be described as:
  
       (absence_set "slot0" "slot1, slot2")
  
!  Or â€˜slot2â€™ cannot be reserved if â€˜slot0â€™ and unit â€˜b0â€™ are reserved or
! â€˜slot1â€™ and unit â€˜b1â€™ are reserved.  In this case we could write
  
       (absence_set "slot2" "slot0 b0, slot1 b1")
  
   All functional units mentioned in a set should belong to the same
  automaton.
  
!  The last construction (â€˜final_absence_setâ€™) is analogous to
! â€˜absence_setâ€™ but checking is done on the result (state) reservation.
! See comments for â€˜final_presence_setâ€™.
  
   You can control the generator of the pipeline hazard recognizer with
  the following construction.
*************** the following construction.
*** 32574,32620 ****
   OPTIONS is a string giving options which affect the generated code.
  Currently there are the following options:
  
!    * "no-minimization" makes no minimization of the automaton.  This is
       only worth to do when we are debugging the description and need to
       look more accurately at reservations of states.
  
!    * "time" means printing time statistics about the generation of
       automata.
  
!    * "stats" means printing statistics about the generated automata such
       as the number of DFA states, NDFA states and arcs.
  
!    * "v" means a generation of the file describing the result automata.
!      The file has suffix '.dfa' and can be used for the description
       verification and debugging.
  
!    * "w" means a generation of warning instead of error for non-critical
       errors.
  
!    * "no-comb-vect" prevents the automaton generator from generating two
       data structures and comparing them for space efficiency.  Using a
       comb vector to represent transitions may be better, but it can be
       very expensive to construct.  This option is useful if the build
       process spends an unacceptably long time in genautomata.
  
!    * "ndfa" makes nondeterministic finite state automata.  This affects
!      the treatment of operator '|' in the regular expressions.  The
       usual treatment of the operator is to try the first alternative
       and, if the reservation is not possible, the second alternative.
       The nondeterministic treatment means trying all alternatives, some
       of them may be rejected by reservations in the subsequent insns.
  
!    * "collapse-ndfa" modifies the behavior of the generator when
       producing an automaton.  An additional state transition to collapse
       a nondeterministic NDFA state to a deterministic DFA state is
!      generated.  It can be triggered by passing 'const0_rtx' to
       state_transition.  In such an automaton, cycle advance transitions
       are available only for these collapsed states.  This option is
!      useful for ports that want to use the 'ndfa' option, but also want
!      to use 'define_query_cpu_unit' to assign units to insns issued in a
       cycle.
  
!    * "progress" means output of a progress bar showing how many states
       were generated so far for automaton being processed.  This is
       useful during debugging a DFA description.  If you see too many
       generated states, you could interrupt the generator of the pipeline
--- 32578,32624 ----
   OPTIONS is a string giving options which affect the generated code.
  Currently there are the following options:
  
!    â€¢ â€œno-minimizationâ€� makes no minimization of the automaton.  This is
       only worth to do when we are debugging the description and need to
       look more accurately at reservations of states.
  
!    â€¢ â€œtimeâ€� means printing time statistics about the generation of
       automata.
  
!    â€¢ â€œstatsâ€� means printing statistics about the generated automata such
       as the number of DFA states, NDFA states and arcs.
  
!    â€¢ â€œvâ€� means a generation of the file describing the result automata.
!      The file has suffix â€˜.dfaâ€™ and can be used for the description
       verification and debugging.
  
!    â€¢ â€œwâ€� means a generation of warning instead of error for non-critical
       errors.
  
!    â€¢ â€œno-comb-vectâ€� prevents the automaton generator from generating two
       data structures and comparing them for space efficiency.  Using a
       comb vector to represent transitions may be better, but it can be
       very expensive to construct.  This option is useful if the build
       process spends an unacceptably long time in genautomata.
  
!    â€¢ â€œndfaâ€� makes nondeterministic finite state automata.  This affects
!      the treatment of operator â€˜|â€™ in the regular expressions.  The
       usual treatment of the operator is to try the first alternative
       and, if the reservation is not possible, the second alternative.
       The nondeterministic treatment means trying all alternatives, some
       of them may be rejected by reservations in the subsequent insns.
  
!    â€¢ â€œcollapse-ndfaâ€� modifies the behavior of the generator when
       producing an automaton.  An additional state transition to collapse
       a nondeterministic NDFA state to a deterministic DFA state is
!      generated.  It can be triggered by passing â€˜const0_rtxâ€™ to
       state_transition.  In such an automaton, cycle advance transitions
       are available only for these collapsed states.  This option is
!      useful for ports that want to use the â€˜ndfaâ€™ option, but also want
!      to use â€˜define_query_cpu_unitâ€™ to assign units to insns issued in a
       cycle.
  
!    â€¢ â€œprogressâ€� means output of a progress bar showing how many states
       were generated so far for automaton being processed.  This is
       useful during debugging a DFA description.  If you see too many
       generated states, you could interrupt the generator of the pipeline
*************** could specify
*** 32662,32668 ****
  
       (define_reservation "finish" "port0|port1")
  
!  and use it in all 'define_insn_reservation' as in the following
  construction
  
       (define_insn_reservation "simple" 2 (eq_attr "type" "int")
--- 32666,32672 ----
  
       (define_reservation "finish" "port0|port1")
  
!  and use it in all â€˜define_insn_reservationâ€™ as in the following
  construction
  
       (define_insn_reservation "simple" 2 (eq_attr "type" "int")
*************** A number of architectures provide for so
*** 32686,32693 ****
  execution, or predication.  The hallmark of this feature is the ability
  to nullify most of the instructions in the instruction set.  When the
  instruction set is large and not entirely symmetric, it can be quite
! tedious to describe these forms directly in the '.md' file.  An
! alternative is the 'define_cond_exec' template.
  
       (define_cond_exec
         [PREDICATE-PATTERN]
--- 32690,32697 ----
  execution, or predication.  The hallmark of this feature is the ability
  to nullify most of the instructions in the instruction set.  When the
  instruction set is large and not entirely symmetric, it can be quite
! tedious to describe these forms directly in the â€˜.mdâ€™ file.  An
! alternative is the â€˜define_cond_execâ€™ template.
  
       (define_cond_exec
         [PREDICATE-PATTERN]
*************** alternative is the 'define_cond_exec' te
*** 32697,32715 ****
  
   PREDICATE-PATTERN is the condition that must be true for the insn to be
  executed at runtime and should match a relational operator.  One can use
! 'match_operator' to match several relational operators at once.  Any
! 'match_operand' operands must have no more than one alternative.
  
   CONDITION is a C expression that must be true for the generated pattern
  to match.
  
!  OUTPUT-TEMPLATE is a string similar to the 'define_insn' output
! template (*note Output Template::), except that the '*' and '@' special
  cases do not apply.  This is only useful if the assembly text for the
  predicate is a simple prefix to the main insn.  In order to handle the
! general case, there is a global variable 'current_insn_predicate' that
  will contain the entire predicate if the current insn is predicated, and
! will otherwise be 'NULL'.
  
   OPTIONAL-INSN-ATTRIBUTES is an optional vector of attributes that gets
  appended to the insn attributes of the produced cond_exec rtx.  It can
--- 32701,32719 ----
  
   PREDICATE-PATTERN is the condition that must be true for the insn to be
  executed at runtime and should match a relational operator.  One can use
! â€˜match_operatorâ€™ to match several relational operators at once.  Any
! â€˜match_operandâ€™ operands must have no more than one alternative.
  
   CONDITION is a C expression that must be true for the generated pattern
  to match.
  
!  OUTPUT-TEMPLATE is a string similar to the â€˜define_insnâ€™ output
! template (*note Output Template::), except that the â€˜*â€™ and â€˜@â€™ special
  cases do not apply.  This is only useful if the assembly text for the
  predicate is a simple prefix to the main insn.  In order to handle the
! general case, there is a global variable â€˜current_insn_predicateâ€™ that
  will contain the entire predicate if the current insn is predicated, and
! will otherwise be â€˜NULLâ€™.
  
   OPTIONAL-INSN-ATTRIBUTES is an optional vector of attributes that gets
  appended to the insn attributes of the produced cond_exec rtx.  It can
*************** that way.  An example usage would be to
*** 32718,32736 ****
  conjunction with attributes on the main pattern to disable particular
  alternatives under certain conditions.
  
!  When 'define_cond_exec' is used, an implicit reference to the
! 'predicable' instruction attribute is made.  *Note Insn Attributes::.
  This attribute must be a boolean (i.e. have exactly two elements in its
! LIST-OF-VALUES), with the possible values being 'no' and 'yes'.  The
  default and all uses in the insns must be a simple constant, not a
  complex expressions.  It may, however, depend on the alternative, by
  using a comma-separated list of values.  If that is the case, the port
! should also define an 'enabled' attribute (*note Disable Insn
! Alternatives::), which should also allow only 'no' and 'yes' as its
  values.
  
!  For each 'define_insn' for which the 'predicable' attribute is true, a
! new 'define_insn' pattern will be generated that matches a predicated
  version of the instruction.  For example,
  
       (define_insn "addsi"
--- 32722,32740 ----
  conjunction with attributes on the main pattern to disable particular
  alternatives under certain conditions.
  
!  When â€˜define_cond_execâ€™ is used, an implicit reference to the
! â€˜predicableâ€™ instruction attribute is made.  *Note Insn Attributes::.
  This attribute must be a boolean (i.e. have exactly two elements in its
! LIST-OF-VALUES), with the possible values being â€˜noâ€™ and â€˜yesâ€™.  The
  default and all uses in the insns must be a simple constant, not a
  complex expressions.  It may, however, depend on the alternative, by
  using a comma-separated list of values.  If that is the case, the port
! should also define an â€˜enabledâ€™ attribute (*note Disable Insn
! Alternatives::), which should also allow only â€˜noâ€™ and â€˜yesâ€™ as its
  values.
  
!  For each â€˜define_insnâ€™ for which the â€˜predicableâ€™ attribute is true, a
! new â€˜define_insnâ€™ pattern will be generated that matches a predicated
  version of the instruction.  For example,
  
       (define_insn "addsi"
*************** File: gccint.info,  Node: Define Subst,
*** 32765,32773 ****
  
  For some hardware architectures there are common cases when the RTL
  templates for the instructions can be derived from the other RTL
! templates using simple transformations.  E.g., 'i386.md' contains an RTL
! template for the ordinary 'sub' instruction-- '*subsi_1', and for the
! 'sub' instruction with subsequent zero-extension--'*subsi_1_zext'.  Such
  cases can be easily implemented by a single meta-template capable of
  generating a modified case based on the initial one:
  
--- 32769,32777 ----
  
  For some hardware architectures there are common cases when the RTL
  templates for the instructions can be derived from the other RTL
! templates using simple transformations.  E.g., â€˜i386.mdâ€™ contains an RTL
! template for the ordinary â€˜subâ€™ instruction-- â€˜*subsi_1â€™, and for the
! â€˜subâ€™ instruction with subsequent zero-extension--â€˜*subsi_1_zextâ€™.  Such
  cases can be easily implemented by a single meta-template capable of
  generating a modified case based on the initial one:
  
*************** output-template.
*** 32785,32822 ****
   OUTPUT-TEMPLATE is a pattern that will be used in the resulting
  template.
  
!  'define_subst' mechanism is tightly coupled with the notion of the
! subst attribute (*note Subst Iterators::).  The use of 'define_subst' is
  triggered by a reference to a subst attribute in the transforming RTL
  template.  This reference initiates duplication of the source RTL
  template and substitution of the attributes with their values.  The
  source RTL template is left unchanged, while the copy is transformed by
! 'define_subst'.  This transformation can fail in the case when the
  source RTL template is not matched against the input-template of the
! 'define_subst'.  In such case the copy is deleted.
  
!  'define_subst' can be used only in 'define_insn' and 'define_expand',
  it cannot be used in other expressions (e.g. in
! 'define_insn_and_split').
  
  * Menu:
  
! * Define Subst Example::	    Example of 'define_subst' work.
  * Define Subst Pattern Matching::   Process of template comparison.
  * Define Subst Output Template::    Generation of output template.
  
  
  File: gccint.info,  Node: Define Subst Example,  Next: Define Subst Pattern Matching,  Up: Define Subst
  
! 16.22.1 'define_subst' Example
  ------------------------------
  
! To illustrate how 'define_subst' works, let us examine a simple template
  transformation.
  
   Suppose there are two kinds of instructions: one that touches flags and
  the other that does not.  The instructions of the second type could be
! generated with the following 'define_subst':
  
       (define_subst "add_clobber_subst"
         [(set (match_operand:SI 0 "" "")
--- 32789,32826 ----
   OUTPUT-TEMPLATE is a pattern that will be used in the resulting
  template.
  
!  â€˜define_substâ€™ mechanism is tightly coupled with the notion of the
! subst attribute (*note Subst Iterators::).  The use of â€˜define_substâ€™ is
  triggered by a reference to a subst attribute in the transforming RTL
  template.  This reference initiates duplication of the source RTL
  template and substitution of the attributes with their values.  The
  source RTL template is left unchanged, while the copy is transformed by
! â€˜define_substâ€™.  This transformation can fail in the case when the
  source RTL template is not matched against the input-template of the
! â€˜define_substâ€™.  In such case the copy is deleted.
  
!  â€˜define_substâ€™ can be used only in â€˜define_insnâ€™ and â€˜define_expandâ€™,
  it cannot be used in other expressions (e.g. in
! â€˜define_insn_and_splitâ€™).
  
  * Menu:
  
! * Define Subst Example::	    Example of â€˜define_substâ€™ work.
  * Define Subst Pattern Matching::   Process of template comparison.
  * Define Subst Output Template::    Generation of output template.
  
  
  File: gccint.info,  Node: Define Subst Example,  Next: Define Subst Pattern Matching,  Up: Define Subst
  
! 16.22.1 â€˜define_substâ€™ Example
  ------------------------------
  
! To illustrate how â€˜define_substâ€™ works, let us examine a simple template
  transformation.
  
   Suppose there are two kinds of instructions: one that touches flags and
  the other that does not.  The instructions of the second type could be
! generated with the following â€˜define_substâ€™:
  
       (define_subst "add_clobber_subst"
         [(set (match_operand:SI 0 "" "")
*************** generated with the following 'define_sub
*** 32826,32836 ****
               (match_dup 1))
          (clobber (reg:CC FLAGS_REG))])
  
!  This 'define_subst' can be applied to any RTL pattern containing 'set'
  of mode SI and generates a copy with clobber when it is applied.
  
!  Assume there is an RTL template for a 'max' instruction to be used in
! 'define_subst' mentioned above:
  
       (define_insn "maxsi"
         [(set (match_operand:SI 0 "register_operand" "=r")
--- 32830,32840 ----
               (match_dup 1))
          (clobber (reg:CC FLAGS_REG))])
  
!  This â€˜define_substâ€™ can be applied to any RTL pattern containing â€˜setâ€™
  of mode SI and generates a copy with clobber when it is applied.
  
!  Assume there is an RTL template for a â€˜maxâ€™ instruction to be used in
! â€˜define_substâ€™ mentioned above:
  
       (define_insn "maxsi"
         [(set (match_operand:SI 0 "register_operand" "=r")
*************** of mode SI and generates a copy with clo
*** 32841,32860 ****
         "max\t{%2, %1, %0|%0, %1, %2}"
        [...])
  
!  To mark the RTL template for 'define_subst' application,
  subst-attributes are used.  They should be declared in advance:
  
       (define_subst_attr "add_clobber_name" "add_clobber_subst" "_noclobber" "_clobber")
  
!  Here 'add_clobber_name' is the attribute name, 'add_clobber_subst' is
! the name of the corresponding 'define_subst', the third argument
! ('_noclobber') is the attribute value that would be substituted into the
  unchanged version of the source RTL template, and the last argument
! ('_clobber') is the value that would be substituted into the second,
  transformed, version of the RTL template.
  
   Once the subst-attribute has been defined, it should be used in RTL
! templates which need to be processed by the 'define_subst'.  So, the
  original RTL template should be changed:
  
       (define_insn "maxsi<add_clobber_name>"
--- 32845,32864 ----
         "max\t{%2, %1, %0|%0, %1, %2}"
        [...])
  
!  To mark the RTL template for â€˜define_substâ€™ application,
  subst-attributes are used.  They should be declared in advance:
  
       (define_subst_attr "add_clobber_name" "add_clobber_subst" "_noclobber" "_clobber")
  
!  Here â€˜add_clobber_nameâ€™ is the attribute name, â€˜add_clobber_substâ€™ is
! the name of the corresponding â€˜define_substâ€™, the third argument
! (â€˜_noclobberâ€™) is the attribute value that would be substituted into the
  unchanged version of the source RTL template, and the last argument
! (â€˜_clobberâ€™) is the value that would be substituted into the second,
  transformed, version of the RTL template.
  
   Once the subst-attribute has been defined, it should be used in RTL
! templates which need to be processed by the â€˜define_substâ€™.  So, the
  original RTL template should be changed:
  
       (define_insn "maxsi<add_clobber_name>"
*************** original RTL template should be changed:
*** 32866,32872 ****
         "max\t{%2, %1, %0|%0, %1, %2}"
        [...])
  
!  The result of the 'define_subst' usage would look like the following:
  
       (define_insn "maxsi_noclobber"
         [(set (match_operand:SI 0 "register_operand" "=r")
--- 32870,32876 ----
         "max\t{%2, %1, %0|%0, %1, %2}"
        [...])
  
!  The result of the â€˜define_substâ€™ usage would look like the following:
  
       (define_insn "maxsi_noclobber"
         [(set (match_operand:SI 0 "register_operand" "=r")
*************** original RTL template should be changed:
*** 32889,32958 ****
  
  File: gccint.info,  Node: Define Subst Pattern Matching,  Next: Define Subst Output Template,  Prev: Define Subst Example,  Up: Define Subst
  
! 16.22.2 Pattern Matching in 'define_subst'
  ------------------------------------------
  
! All expressions, allowed in 'define_insn' or 'define_expand', are
! allowed in the input-template of 'define_subst', except 'match_par_dup',
! 'match_scratch', 'match_parallel'.  The meanings of expressions in the
  input-template were changed:
  
!  'match_operand' matches any expression (possibly, a subtree in
! RTL-template), if modes of the 'match_operand' and this expression are
! the same, or mode of the 'match_operand' is 'VOIDmode', or this
! expression is 'match_dup', 'match_op_dup'.  If the expression is
! 'match_operand' too, and predicate of 'match_operand' from the input
  pattern is not empty, then the predicates are compared.  That can be
  used for more accurate filtering of accepted RTL-templates.
  
!  'match_operator' matches common operators (like 'plus', 'minus'),
! 'unspec', 'unspec_volatile' operators and 'match_operator's from the
! original pattern if the modes match and 'match_operator' from the input
  pattern has the same number of operands as the operator from the
  original pattern.
  
  
  File: gccint.info,  Node: Define Subst Output Template,  Prev: Define Subst Pattern Matching,  Up: Define Subst
  
! 16.22.3 Generation of output template in 'define_subst'
  -------------------------------------------------------
  
! If all necessary checks for 'define_subst' application pass, a new
  RTL-pattern, based on the output-template, is created to replace the old
  template.  Like in input-patterns, meanings of some RTL expressions are
! changed when they are used in output-patterns of a 'define_subst'.
! Thus, 'match_dup' is used for copying the whole expression from the
! original pattern, which matched corresponding 'match_operand' from the
  input pattern.
  
!  'match_dup N' is used in the output template to be replaced with the
! expression from the original pattern, which matched 'match_operand N'
! from the input pattern.  As a consequence, 'match_dup' cannot be used to
! point to 'match_operand's from the output pattern, it should always
! refer to a 'match_operand' from the input pattern.  If a 'match_dup N'
  occurs more than once in the output template, its first occurrence is
  replaced with the expression from the original pattern, and the
! subsequent expressions are replaced with 'match_dup N', i.e., a
  reference to the first expression.
  
   In the output template one can refer to the expressions from the
  original pattern and create new ones.  For instance, some operands could
! be added by means of standard 'match_operand'.
  
!  After replacing 'match_dup' with some RTL-subtree from the original
! pattern, it could happen that several 'match_operand's in the output
  pattern have the same indexes.  It is unknown, how many and what indexes
! would be used in the expression which would replace 'match_dup', so such
  conflicts in indexes are inevitable.  To overcome this issue,
! 'match_operands' and 'match_operators', which were introduced into the
! output pattern, are renumerated when all 'match_dup's are replaced.
  
!  Number of alternatives in 'match_operand's introduced into the output
! template 'M' could differ from the number of alternatives in the
! original pattern 'N', so in the resultant pattern there would be 'N*M'
  alternatives.  Thus, constraints from the original pattern would be
! duplicated 'N' times, constraints from the output pattern would be
! duplicated 'M' times, producing all possible combinations.
  
  
  File: gccint.info,  Node: Constant Definitions,  Next: Iterators,  Prev: Define Subst,  Up: Machine Desc
--- 32893,32962 ----
  
  File: gccint.info,  Node: Define Subst Pattern Matching,  Next: Define Subst Output Template,  Prev: Define Subst Example,  Up: Define Subst
  
! 16.22.2 Pattern Matching in â€˜define_substâ€™
  ------------------------------------------
  
! All expressions, allowed in â€˜define_insnâ€™ or â€˜define_expandâ€™, are
! allowed in the input-template of â€˜define_substâ€™, except â€˜match_par_dupâ€™,
! â€˜match_scratchâ€™, â€˜match_parallelâ€™.  The meanings of expressions in the
  input-template were changed:
  
!  â€˜match_operandâ€™ matches any expression (possibly, a subtree in
! RTL-template), if modes of the â€˜match_operandâ€™ and this expression are
! the same, or mode of the â€˜match_operandâ€™ is â€˜VOIDmodeâ€™, or this
! expression is â€˜match_dupâ€™, â€˜match_op_dupâ€™.  If the expression is
! â€˜match_operandâ€™ too, and predicate of â€˜match_operandâ€™ from the input
  pattern is not empty, then the predicates are compared.  That can be
  used for more accurate filtering of accepted RTL-templates.
  
!  â€˜match_operatorâ€™ matches common operators (like â€˜plusâ€™, â€˜minusâ€™),
! â€˜unspecâ€™, â€˜unspec_volatileâ€™ operators and â€˜match_operatorâ€™s from the
! original pattern if the modes match and â€˜match_operatorâ€™ from the input
  pattern has the same number of operands as the operator from the
  original pattern.
  
  
  File: gccint.info,  Node: Define Subst Output Template,  Prev: Define Subst Pattern Matching,  Up: Define Subst
  
! 16.22.3 Generation of output template in â€˜define_substâ€™
  -------------------------------------------------------
  
! If all necessary checks for â€˜define_substâ€™ application pass, a new
  RTL-pattern, based on the output-template, is created to replace the old
  template.  Like in input-patterns, meanings of some RTL expressions are
! changed when they are used in output-patterns of a â€˜define_substâ€™.
! Thus, â€˜match_dupâ€™ is used for copying the whole expression from the
! original pattern, which matched corresponding â€˜match_operandâ€™ from the
  input pattern.
  
!  â€˜match_dup Nâ€™ is used in the output template to be replaced with the
! expression from the original pattern, which matched â€˜match_operand Nâ€™
! from the input pattern.  As a consequence, â€˜match_dupâ€™ cannot be used to
! point to â€˜match_operandâ€™s from the output pattern, it should always
! refer to a â€˜match_operandâ€™ from the input pattern.  If a â€˜match_dup Nâ€™
  occurs more than once in the output template, its first occurrence is
  replaced with the expression from the original pattern, and the
! subsequent expressions are replaced with â€˜match_dup Nâ€™, i.e., a
  reference to the first expression.
  
   In the output template one can refer to the expressions from the
  original pattern and create new ones.  For instance, some operands could
! be added by means of standard â€˜match_operandâ€™.
  
!  After replacing â€˜match_dupâ€™ with some RTL-subtree from the original
! pattern, it could happen that several â€˜match_operandâ€™s in the output
  pattern have the same indexes.  It is unknown, how many and what indexes
! would be used in the expression which would replace â€˜match_dupâ€™, so such
  conflicts in indexes are inevitable.  To overcome this issue,
! â€˜match_operandsâ€™ and â€˜match_operatorsâ€™, which were introduced into the
! output pattern, are renumerated when all â€˜match_dupâ€™s are replaced.
  
!  Number of alternatives in â€˜match_operandâ€™s introduced into the output
! template â€˜Mâ€™ could differ from the number of alternatives in the
! original pattern â€˜Nâ€™, so in the resultant pattern there would be â€˜N*Mâ€™
  alternatives.  Thus, constraints from the original pattern would be
! duplicated â€˜Nâ€™ times, constraints from the output pattern would be
! duplicated â€˜Mâ€™ times, producing all possible combinations.
  
  
  File: gccint.info,  Node: Constant Definitions,  Next: Iterators,  Prev: Define Subst,  Up: Machine Desc
*************** File: gccint.info,  Node: Constant Defin
*** 32963,32973 ****
  Using literal constants inside instruction patterns reduces legibility
  and can be a maintenance problem.
  
!  To overcome this problem, you may use the 'define_constants'
  expression.  It contains a vector of name-value pairs.  From that point
  on, wherever any of the names appears in the MD file, it is as if the
  corresponding value had been written instead.  You may use
! 'define_constants' multiple times; each appearance adds more constants
  to the table.  It is an error to redefine a constant with a different
  value.
  
--- 32967,32977 ----
  Using literal constants inside instruction patterns reduces legibility
  and can be a maintenance problem.
  
!  To overcome this problem, you may use the â€˜define_constantsâ€™
  expression.  It contains a vector of name-value pairs.  From that point
  on, wherever any of the names appears in the MD file, it is as if the
  corresponding value had been written instead.  You may use
! â€˜define_constantsâ€™ multiple times; each appearance adds more constants
  to the table.  It is an error to redefine a constant with a different
  value.
  
*************** value.
*** 33004,33010 ****
  in the insn-codes.h header file as #defines.
  
   You can also use the machine description file to define enumerations.
! Like the constants defined by 'define_constant', these enumerations are
  visible to both the machine description file and the main C code.
  
   The syntax is as follows:
--- 33008,33014 ----
  in the insn-codes.h header file as #defines.
  
   You can also use the machine description file to define enumerations.
! Like the constants defined by â€˜define_constantâ€™, these enumerations are
  visible to both the machine description file and the main C code.
  
   The syntax is as follows:
*************** visible to both the machine description
*** 33019,33025 ****
       ])
  
   This definition causes the equivalent of the following C code to appear
! in 'insn-constants.h':
  
       enum NAME {
         VALUE0 = 0,
--- 33023,33029 ----
       ])
  
   This definition causes the equivalent of the following C code to appear
! in â€˜insn-constants.hâ€™:
  
       enum NAME {
         VALUE0 = 0,
*************** like.  The above example is directly equ
*** 33049,33082 ****
       (define_c_enum "NAME" [VALUEN])
  
   Splitting the enumeration helps to improve the modularity of each
! individual '.md' file.  For example, if a port defines its
! synchronization instructions in a separate 'sync.md' file, it is
  convenient to define all synchronization-specific enumeration values in
! 'sync.md' rather than in the main '.md' file.
  
   Some enumeration names have special significance to GCC:
  
! 'unspecv'
!      If an enumeration called 'unspecv' is defined, GCC will use it when
!      printing out 'unspec_volatile' expressions.  For example:
  
            (define_c_enum "unspecv" [
              UNSPECV_BLOCKAGE
            ])
  
!      causes GCC to print '(unspec_volatile ... 0)' as:
  
            (unspec_volatile ... UNSPECV_BLOCKAGE)
  
! 'unspec'
!      If an enumeration called 'unspec' is defined, GCC will use it when
!      printing out 'unspec' expressions.  GCC will also use it when
!      printing out 'unspec_volatile' expressions unless an 'unspecv'
       enumeration is also defined.  You can therefore decide whether to
       keep separate enumerations for volatile and non-volatile
       expressions or whether to use the same enumeration for both.
  
!  Another way of defining an enumeration is to use 'define_enum':
  
       (define_enum "NAME" [
         VALUE0
--- 33053,33086 ----
       (define_c_enum "NAME" [VALUEN])
  
   Splitting the enumeration helps to improve the modularity of each
! individual â€˜.mdâ€™ file.  For example, if a port defines its
! synchronization instructions in a separate â€˜sync.mdâ€™ file, it is
  convenient to define all synchronization-specific enumeration values in
! â€˜sync.mdâ€™ rather than in the main â€˜.mdâ€™ file.
  
   Some enumeration names have special significance to GCC:
  
! â€˜unspecvâ€™
!      If an enumeration called â€˜unspecvâ€™ is defined, GCC will use it when
!      printing out â€˜unspec_volatileâ€™ expressions.  For example:
  
            (define_c_enum "unspecv" [
              UNSPECV_BLOCKAGE
            ])
  
!      causes GCC to print â€˜(unspec_volatile ... 0)â€™ as:
  
            (unspec_volatile ... UNSPECV_BLOCKAGE)
  
! â€˜unspecâ€™
!      If an enumeration called â€˜unspecâ€™ is defined, GCC will use it when
!      printing out â€˜unspecâ€™ expressions.  GCC will also use it when
!      printing out â€˜unspec_volatileâ€™ expressions unless an â€˜unspecvâ€™
       enumeration is also defined.  You can therefore decide whether to
       keep separate enumerations for volatile and non-volatile
       expressions or whether to use the same enumeration for both.
  
!  Another way of defining an enumeration is to use â€˜define_enumâ€™:
  
       (define_enum "NAME" [
         VALUE0
*************** convenient to define all synchronization
*** 33095,33101 ****
       ])
  
   where CVALUEI is the capitalized form of VALUEI.  However, unlike
! 'define_c_enum', the enumerations defined by 'define_enum' can be used
  in attribute specifications (*note define_enum_attr::).
  
  
--- 33099,33105 ----
       ])
  
   where CVALUEI is the capitalized form of VALUEI.  However, unlike
! â€˜define_c_enumâ€™, the enumerations defined by â€˜define_enumâ€™ can be used
  in attribute specifications (*note define_enum_attr::).
  
  
*************** File: gccint.info,  Node: Mode Iterators
*** 33125,33141 ****
  Ports often need to define similar patterns for two or more different
  modes.  For example:
  
!    * If a processor has hardware support for both single and double
!      floating-point arithmetic, the 'SFmode' patterns tend to be very
!      similar to the 'DFmode' ones.
  
!    * If a port uses 'SImode' pointers in one configuration and 'DImode'
!      pointers in another, it will usually have very similar 'SImode' and
!      'DImode' patterns for manipulating pointers.
  
!  Mode iterators allow several patterns to be instantiated from one '.md'
  file template.  They can be used with any type of rtx-based construct,
! such as a 'define_insn', 'define_split', or 'define_peephole2'.
  
  * Menu:
  
--- 33129,33145 ----
  Ports often need to define similar patterns for two or more different
  modes.  For example:
  
!    â€¢ If a processor has hardware support for both single and double
!      floating-point arithmetic, the â€˜SFmodeâ€™ patterns tend to be very
!      similar to the â€˜DFmodeâ€™ ones.
  
!    â€¢ If a port uses â€˜SImodeâ€™ pointers in one configuration and â€˜DImodeâ€™
!      pointers in another, it will usually have very similar â€˜SImodeâ€™ and
!      â€˜DImodeâ€™ patterns for manipulating pointers.
  
!  Mode iterators allow several patterns to be instantiated from one â€˜.mdâ€™
  file template.  They can be used with any type of rtx-based construct,
! such as a â€˜define_insnâ€™, â€˜define_splitâ€™, or â€˜define_peephole2â€™.
  
  * Menu:
  
*************** The syntax for defining a mode iterator
*** 33153,33181 ****
  
       (define_mode_iterator NAME [(MODE1 "COND1") ... (MODEN "CONDN")])
  
!  This allows subsequent '.md' file constructs to use the mode suffix
! ':NAME'.  Every construct that does so will be expanded N times, once
! with every use of ':NAME' replaced by ':MODE1', once with every use
! replaced by ':MODE2', and so on.  In the expansion for a particular
  MODEI, every C condition will also require that CONDI be true.
  
   For example:
  
       (define_mode_iterator P [(SI "Pmode == SImode") (DI "Pmode == DImode")])
  
!  defines a new mode suffix ':P'.  Every construct that uses ':P' will be
! expanded twice, once with every ':P' replaced by ':SI' and once with
! every ':P' replaced by ':DI'.  The ':SI' version will only apply if
! 'Pmode == SImode' and the ':DI' version will only apply if 'Pmode ==
! DImode'.
  
!  As with other '.md' conditions, an empty string is treated as "always
! true".  '(MODE "")' can also be abbreviated to 'MODE'.  For example:
  
       (define_mode_iterator GPR [SI (DI "TARGET_64BIT")])
  
!  means that the ':DI' expansion only applies if 'TARGET_64BIT' but that
! the ':SI' expansion has no such constraint.
  
   It is also possible to include iterators in other iterators.  For
  example:
--- 33157,33185 ----
  
       (define_mode_iterator NAME [(MODE1 "COND1") ... (MODEN "CONDN")])
  
!  This allows subsequent â€˜.mdâ€™ file constructs to use the mode suffix
! â€˜:NAMEâ€™.  Every construct that does so will be expanded N times, once
! with every use of â€˜:NAMEâ€™ replaced by â€˜:MODE1â€™, once with every use
! replaced by â€˜:MODE2â€™, and so on.  In the expansion for a particular
  MODEI, every C condition will also require that CONDI be true.
  
   For example:
  
       (define_mode_iterator P [(SI "Pmode == SImode") (DI "Pmode == DImode")])
  
!  defines a new mode suffix â€˜:Pâ€™.  Every construct that uses â€˜:Pâ€™ will be
! expanded twice, once with every â€˜:Pâ€™ replaced by â€˜:SIâ€™ and once with
! every â€˜:Pâ€™ replaced by â€˜:DIâ€™.  The â€˜:SIâ€™ version will only apply if
! â€˜Pmode == SImodeâ€™ and the â€˜:DIâ€™ version will only apply if â€˜Pmode ==
! DImodeâ€™.
  
!  As with other â€˜.mdâ€™ conditions, an empty string is treated as "always
! true".  â€˜(MODE "")â€™ can also be abbreviated to â€˜MODEâ€™.  For example:
  
       (define_mode_iterator GPR [SI (DI "TARGET_64BIT")])
  
!  means that the â€˜:DIâ€™ expansion only applies if â€˜TARGET_64BITâ€™ but that
! the â€˜:SIâ€™ expansion has no such constraint.
  
   It is also possible to include iterators in other iterators.  For
  example:
*************** example:
*** 33184,33193 ****
       (define_mode_iterator VF [V8HF V4SF (V2DF "TARGET_DOUBLE")])
       (define_mode_iterator V [VI (VF "TARGET_FLOAT")])
  
!  makes ':V' iterate over the modes in 'VI' and the modes in 'VF'.  When
! a construct uses ':V', the 'V8HF' and 'V4SF' expansions require
! 'TARGET_FLOAT' while the 'V2DF' expansion requires 'TARGET_DOUBLE &&
! TARGET_FLOAT'.
  
   Iterators are applied in the order they are defined.  This can be
  significant if two iterators are used in a construct that requires
--- 33188,33197 ----
       (define_mode_iterator VF [V8HF V4SF (V2DF "TARGET_DOUBLE")])
       (define_mode_iterator V [VI (VF "TARGET_FLOAT")])
  
!  makes â€˜:Vâ€™ iterate over the modes in â€˜VIâ€™ and the modes in â€˜VFâ€™.  When
! a construct uses â€˜:Vâ€™, the â€˜V8HFâ€™ and â€˜V4SFâ€™ expansions require
! â€˜TARGET_FLOATâ€™ while the â€˜V2DFâ€™ expansion requires â€˜TARGET_DOUBLE &&
! TARGET_FLOATâ€™.
  
   Iterators are applied in the order they are defined.  This can be
  significant if two iterators are used in a construct that requires
*************** File: gccint.info,  Node: Substitutions,
*** 33199,33222 ****
  16.24.1.2 Substitution in Mode Iterators
  ........................................
  
! If an '.md' file construct uses mode iterators, each version of the
  construct will often need slightly different strings or modes.  For
  example:
  
!    * When a 'define_expand' defines several 'addM3' patterns (*note
       Standard Names::), each expander will need to use the appropriate
       mode name for M.
  
!    * When a 'define_insn' defines several instruction patterns, each
       instruction will often use a different assembler mnemonic.
  
!    * When a 'define_insn' requires operands with different modes, using
       an iterator for one of the operand modes usually requires a
       specific mode for the other operand(s).
  
   GCC supports such variations through a system of "mode attributes".
! There are two standard attributes: 'mode', which is the name of the mode
! in lower case, and 'MODE', which is the same thing in upper case.  You
  can define other attributes using:
  
       (define_mode_attr NAME [(MODE1 "VALUE1") ... (MODEN "VALUEN")])
--- 33203,33226 ----
  16.24.1.2 Substitution in Mode Iterators
  ........................................
  
! If an â€˜.mdâ€™ file construct uses mode iterators, each version of the
  construct will often need slightly different strings or modes.  For
  example:
  
!    â€¢ When a â€˜define_expandâ€™ defines several â€˜addM3â€™ patterns (*note
       Standard Names::), each expander will need to use the appropriate
       mode name for M.
  
!    â€¢ When a â€˜define_insnâ€™ defines several instruction patterns, each
       instruction will often use a different assembler mnemonic.
  
!    â€¢ When a â€˜define_insnâ€™ requires operands with different modes, using
       an iterator for one of the operand modes usually requires a
       specific mode for the other operand(s).
  
   GCC supports such variations through a system of "mode attributes".
! There are two standard attributes: â€˜modeâ€™, which is the name of the mode
! in lower case, and â€˜MODEâ€™, which is the same thing in upper case.  You
  can define other attributes using:
  
       (define_mode_attr NAME [(MODE1 "VALUE1") ... (MODEN "VALUEN")])
*************** can define other attributes using:
*** 33225,33243 ****
  associated with MODEI.
  
   When GCC replaces some :ITERATOR with :MODE, it will scan each string
! and mode in the pattern for sequences of the form '<ITERATOR:ATTR>',
  where ATTR is the name of a mode attribute.  If the attribute is defined
! for MODE, the whole '<...>' sequence will be replaced by the appropriate
  attribute value.
  
!  For example, suppose an '.md' file has:
  
       (define_mode_iterator P [(SI "Pmode == SImode") (DI "Pmode == DImode")])
       (define_mode_attr load [(SI "lw") (DI "ld")])
  
!  If one of the patterns that uses ':P' contains the string
! '"<P:load>\t%0,%1"', the 'SI' version of that pattern will use
! '"lw\t%0,%1"' and the 'DI' version will use '"ld\t%0,%1"'.
  
   Here is an example of using an attribute for a mode:
  
--- 33229,33247 ----
  associated with MODEI.
  
   When GCC replaces some :ITERATOR with :MODE, it will scan each string
! and mode in the pattern for sequences of the form â€˜<ITERATOR:ATTR>â€™,
  where ATTR is the name of a mode attribute.  If the attribute is defined
! for MODE, the whole â€˜<...>â€™ sequence will be replaced by the appropriate
  attribute value.
  
!  For example, suppose an â€˜.mdâ€™ file has:
  
       (define_mode_iterator P [(SI "Pmode == SImode") (DI "Pmode == DImode")])
       (define_mode_attr load [(SI "lw") (DI "ld")])
  
!  If one of the patterns that uses â€˜:Pâ€™ contains the string
! â€˜"<P:load>\t%0,%1"â€™, the â€˜SIâ€™ version of that pattern will use
! â€˜"lw\t%0,%1"â€™ and the â€˜DIâ€™ version will use â€˜"ld\t%0,%1"â€™.
  
   Here is an example of using an attribute for a mode:
  
*************** attribute value.
*** 33246,33252 ****
       (define_insn ...
         (sign_extend:LONG (match_operand:<LONG:SHORT> ...)) ...)
  
!  The 'ITERATOR:' prefix may be omitted, in which case the substitution
  will be attempted for every iterator expansion.
  
  
--- 33250,33256 ----
       (define_insn ...
         (sign_extend:LONG (match_operand:<LONG:SHORT> ...)) ...)
  
!  The â€˜ITERATOR:â€™ prefix may be omitted, in which case the substitution
  will be attempted for every iterator expansion.
  
  
*************** and attributes (among others):
*** 33261,33267 ****
       (define_mode_iterator GPR [SI (DI "TARGET_64BIT")])
       (define_mode_attr d [(SI "") (DI "d")])
  
!  and uses the following template to define both 'subsi3' and 'subdi3':
  
       (define_insn "sub<mode>3"
         [(set (match_operand:GPR 0 "register_operand" "=d")
--- 33265,33271 ----
       (define_mode_iterator GPR [SI (DI "TARGET_64BIT")])
       (define_mode_attr d [(SI "") (DI "d")])
  
!  and uses the following template to define both â€˜subsi3â€™ and â€˜subdi3â€™:
  
       (define_insn "sub<mode>3"
         [(set (match_operand:GPR 0 "register_operand" "=d")
*************** times, once with all uses of NAME replac
*** 33314,33328 ****
  replaced by CODE2, and so on.  *Note Defining Mode Iterators::.
  
   It is possible to define attributes for codes as well as for modes.
! There are two standard code attributes: 'code', the name of the code in
! lower case, and 'CODE', the name of the code in upper case.  Other
  attributes are defined using:
  
       (define_code_attr NAME [(CODE1 "VALUE1") ... (CODEN "VALUEN")])
  
   Instruction patterns can use code attributes as rtx codes, which can be
  useful if two sets of codes act in tandem.  For example, the following
! 'define_insn' defines two patterns, one calculating a signed absolute
  difference and another calculating an unsigned absolute difference:
  
       (define_code_iterator any_max [smax umax])
--- 33318,33332 ----
  replaced by CODE2, and so on.  *Note Defining Mode Iterators::.
  
   It is possible to define attributes for codes as well as for modes.
! There are two standard code attributes: â€˜codeâ€™, the name of the code in
! lower case, and â€˜CODEâ€™, the name of the code in upper case.  Other
  attributes are defined using:
  
       (define_code_attr NAME [(CODE1 "VALUE1") ... (CODEN "VALUEN")])
  
   Instruction patterns can use code attributes as rtx codes, which can be
  useful if two sets of codes act in tandem.  For example, the following
! â€˜define_insnâ€™ defines two patterns, one calculating a signed absolute
  difference and another calculating an unsigned absolute difference:
  
       (define_code_iterator any_max [smax umax])
*************** difference and another calculating an un
*** 33334,33346 ****
                         (<paired_min>:SI (match_dup 1) (match_dup 2))))]
         ...)
  
!  The signed version of the instruction uses 'smax' and 'smin' while the
! unsigned version uses 'umax' and 'umin'.  There are no versions that
! pair 'smax' with 'umin' or 'umax' with 'smin'.
  
   It is also possible to use other types of attributes as codes, in a
  similar way.  For example, an int iterator could be used to iterate over
! 'unspec' numbers, with an int attribute specifying an associated rtx
  code.  *Note Int Iterators::.
  
   Here's an example of code iterators in action, taken from the MIPS
--- 33338,33350 ----
                         (<paired_min>:SI (match_dup 1) (match_dup 2))))]
         ...)
  
!  The signed version of the instruction uses â€˜smaxâ€™ and â€˜sminâ€™ while the
! unsigned version uses â€˜umaxâ€™ and â€˜uminâ€™.  There are no versions that
! pair â€˜smaxâ€™ with â€˜uminâ€™ or â€˜umaxâ€™ with â€˜sminâ€™.
  
   It is also possible to use other types of attributes as codes, in a
  similar way.  For example, an int iterator could be used to iterate over
! â€˜unspecâ€™ numbers, with an int attribute specifying an associated rtx
  code.  *Note Int Iterators::.
  
   Here's an example of code iterators in action, taken from the MIPS
*************** Iterators::.
*** 33405,33412 ****
   defines a pseudo integer constant NAME that can be instantiated as INTI
  if condition CONDI is true.  Int iterators can appear in only those rtx
  fields that have 'i', 'n', 'w', or 'p' as the specifier.  This means
! that each INT has to be a constant defined using 'define_constant' or
! 'define_c_enum'.
  
   As with mode and code iterators, each pattern that uses NAME will be
  expanded N times, once with all uses of NAME replaced by INT1, once with
--- 33409,33416 ----
   defines a pseudo integer constant NAME that can be instantiated as INTI
  if condition CONDI is true.  Int iterators can appear in only those rtx
  fields that have 'i', 'n', 'w', or 'p' as the specifier.  This means
! that each INT has to be a constant defined using â€˜define_constantâ€™ or
! â€˜define_c_enumâ€™.
  
   As with mode and code iterators, each pattern that uses NAME will be
  expanded N times, once with all uses of NAME replaced by INT1, once with
*************** modes.  Attributes are defined using:
*** 33418,33424 ****
       (define_int_attr ATTR_NAME [(INT1 "VALUE1") ... (INTN "VALUEN")])
  
   In additon to these user-defined attributes, it is possible to use
! '<NAME>' to refer to the current expansion of iterator NAME (such as
  INT1, INT2, and so on).
  
   Here's an example of int iterators in action, taken from the ARM port:
--- 33422,33428 ----
       (define_int_attr ATTR_NAME [(INT1 "VALUE1") ... (INTN "VALUEN")])
  
   In additon to these user-defined attributes, it is possible to use
! â€˜<NAME>â€™ to refer to the current expansion of iterator NAME (such as
  INT1, INT2, and so on).
  
   Here's an example of int iterators in action, taken from the ARM port:
*************** used in RTL-pattern.
*** 33476,33489 ****
   Subst iterators transform templates in the following way: the templates
  are duplicated, the subst-attributes in these templates are replaced
  with the corresponding values, and a new attribute is implicitly added
! to the given 'define_insn'/'define_expand'.  The name of the added
! attribute matches the name of 'define_subst'.  Such attributes are
! declared implicitly, and it is not allowed to have a 'define_attr' named
! as a 'define_subst'.
  
!  Each subst iterator is linked to a 'define_subst'.  It is declared
  implicitly by the first appearance of the corresponding
! 'define_subst_attr', and it is not allowed to define it explicitly.
  
   Declarations of subst-attributes have the following syntax:
  
--- 33480,33493 ----
   Subst iterators transform templates in the following way: the templates
  are duplicated, the subst-attributes in these templates are replaced
  with the corresponding values, and a new attribute is implicitly added
! to the given â€˜define_insnâ€™/â€˜define_expandâ€™.  The name of the added
! attribute matches the name of â€˜define_substâ€™.  Such attributes are
! declared implicitly, and it is not allowed to have a â€˜define_attrâ€™ named
! as a â€˜define_substâ€™.
  
!  Each subst iterator is linked to a â€˜define_substâ€™.  It is declared
  implicitly by the first appearance of the corresponding
! â€˜define_subst_attrâ€™, and it is not allowed to define it explicitly.
  
   Declarations of subst-attributes have the following syntax:
  
*************** implicitly by the first appearance of th
*** 33495,33501 ****
   NAME is a string with which the given subst-attribute could be referred
  to.
  
!  SUBST-NAME shows which 'define_subst' should be applied to an
  RTL-template if the given subst-attribute is present in the
  RTL-template.
  
--- 33499,33505 ----
   NAME is a string with which the given subst-attribute could be referred
  to.
  
!  SUBST-NAME shows which â€˜define_substâ€™ should be applied to an
  RTL-template if the given subst-attribute is present in the
  RTL-template.
  
*************** File: gccint.info,  Node: Parameterized
*** 33513,33519 ****
  
  Ports sometimes need to apply iterators using C++ code, in order to get
  the code or RTL pattern for a specific instruction.  For example,
! suppose we have the 'neon_vq<absneg><mode>' pattern given above:
  
       (define_int_iterator QABSNEG [UNSPEC_VQABS UNSPEC_VQNEG])
  
--- 33517,33523 ----
  
  Ports sometimes need to apply iterators using C++ code, in order to get
  the code or RTL pattern for a specific instruction.  For example,
! suppose we have the â€˜neon_vq<absneg><mode>â€™ pattern given above:
  
       (define_int_iterator QABSNEG [UNSPEC_VQABS UNSPEC_VQNEG])
  
*************** suppose we have the 'neon_vq<absneg><mod
*** 33527,33562 ****
         ...
       )
  
!  A port might need to generate this pattern for a variable 'QABSNEG'
! value and a variable 'VDQIW' mode.  There are two ways of doing this.
  The first is to build the rtx for the pattern directly from C++ code;
  this is a valid technique and avoids any risk of combinatorial
  explosion.  The second is to prefix the instruction name with the
! special character '@', which tells GCC to generate the four additional
  functions below.  In each case, NAME is the name of the instruction
! without the leading '@' character, without the '<...>' placeholders, and
! with any underscore before a '<...>' placeholder removed if keeping it
  would lead to a double or trailing underscore.
  
! 'insn_code maybe_code_for_NAME (I1, I2, ...)'
!      See whether replacing the first '<...>' placeholder with iterator
       value I1, the second with iterator value I2, and so on, gives a
       valid instruction.  Return its code if so, otherwise return
!      'CODE_FOR_nothing'.
  
! 'insn_code code_for_NAME (I1, I2, ...)'
       Same, but abort the compiler if the requested instruction does not
       exist.
  
! 'rtx maybe_gen_NAME (I1, I2, ..., OP0, OP1, ...)'
       Check for a valid instruction in the same way as
!      'maybe_code_for_NAME'.  If the instruction exists, generate an
       instance of it using the operand values given by OP0, OP1, and so
       on, otherwise return null.
  
! 'rtx gen_NAME (I1, I2, ..., OP0, OP1, ...)'
       Same, but abort the compiler if the requested instruction does not
!      exist, or if the instruction generator invoked the 'FAIL' macro.
  
   For example, changing the pattern above to:
  
--- 33531,33566 ----
         ...
       )
  
!  A port might need to generate this pattern for a variable â€˜QABSNEGâ€™
! value and a variable â€˜VDQIWâ€™ mode.  There are two ways of doing this.
  The first is to build the rtx for the pattern directly from C++ code;
  this is a valid technique and avoids any risk of combinatorial
  explosion.  The second is to prefix the instruction name with the
! special character â€˜@â€™, which tells GCC to generate the four additional
  functions below.  In each case, NAME is the name of the instruction
! without the leading â€˜@â€™ character, without the â€˜<...>â€™ placeholders, and
! with any underscore before a â€˜<...>â€™ placeholder removed if keeping it
  would lead to a double or trailing underscore.
  
! â€˜insn_code maybe_code_for_NAME (I1, I2, ...)â€™
!      See whether replacing the first â€˜<...>â€™ placeholder with iterator
       value I1, the second with iterator value I2, and so on, gives a
       valid instruction.  Return its code if so, otherwise return
!      â€˜CODE_FOR_nothingâ€™.
  
! â€˜insn_code code_for_NAME (I1, I2, ...)â€™
       Same, but abort the compiler if the requested instruction does not
       exist.
  
! â€˜rtx maybe_gen_NAME (I1, I2, ..., OP0, OP1, ...)â€™
       Check for a valid instruction in the same way as
!      â€˜maybe_code_for_NAMEâ€™.  If the instruction exists, generate an
       instance of it using the operand values given by OP0, OP1, and so
       on, otherwise return null.
  
! â€˜rtx gen_NAME (I1, I2, ..., OP0, OP1, ...)â€™
       Same, but abort the compiler if the requested instruction does not
!      exist, or if the instruction generator invoked the â€˜FAILâ€™ macro.
  
   For example, changing the pattern above to:
  
*************** generate the four functions below:
*** 33576,33585 ****
       rtx maybe_gen_neon_vq (int, machine_mode, rtx, rtx, rtx);
       rtx gen_neon_vq (int, machine_mode, rtx, rtx, rtx);
  
!  Calling 'code_for_neon_vq (UNSPEC_VQABS, V8QImode)' would then give
! 'CODE_FOR_neon_vqabsv8qi'.
  
!  It is possible to have multiple '@' patterns with the same name and
  same types of iterator.  For example:
  
       (define_insn "@some_arithmetic_op<mode>"
--- 33580,33589 ----
       rtx maybe_gen_neon_vq (int, machine_mode, rtx, rtx, rtx);
       rtx gen_neon_vq (int, machine_mode, rtx, rtx, rtx);
  
!  Calling â€˜code_for_neon_vq (UNSPEC_VQABS, V8QImode)â€™ would then give
! â€˜CODE_FOR_neon_vqabsv8qiâ€™.
  
!  It is possible to have multiple â€˜@â€™ patterns with the same name and
  same types of iterator.  For example:
  
       (define_insn "@some_arithmetic_op<mode>"
*************** same types of iterator.  For example:
*** 33593,33610 ****
       )
  
   would produce a single set of functions that handles both
! 'INTEGER_MODES' and 'FLOAT_MODES'.
  
!  It is also possible for these '@' patterns to have different numbers of
  operands from each other.  For example, patterns with a binary rtl code
  might take three operands (one output and two inputs) while patterns
  with a ternary rtl code might take four operands (one output and three
! inputs).  This combination would produce separate 'maybe_gen_NAME' and
! 'gen_NAME' functions for each operand count, but it would still produce
! a single 'maybe_code_for_NAME' and a single 'code_for_NAME'.
  
!  Currently, these '@' patterns only take into account patterns for which
! no 'define_subst' has been applied (*note Define Subst::).  Any '<...>'
  placeholders that refer to subst attributes (*note Subst Iterators::)
  are ignored.
  
--- 33597,33614 ----
       )
  
   would produce a single set of functions that handles both
! â€˜INTEGER_MODESâ€™ and â€˜FLOAT_MODESâ€™.
  
!  It is also possible for these â€˜@â€™ patterns to have different numbers of
  operands from each other.  For example, patterns with a binary rtl code
  might take three operands (one output and two inputs) while patterns
  with a ternary rtl code might take four operands (one output and three
! inputs).  This combination would produce separate â€˜maybe_gen_NAMEâ€™ and
! â€˜gen_NAMEâ€™ functions for each operand count, but it would still produce
! a single â€˜maybe_code_for_NAMEâ€™ and a single â€˜code_for_NAMEâ€™.
  
!  Currently, these â€˜@â€™ patterns only take into account patterns for which
! no â€˜define_substâ€™ has been applied (*note Define Subst::).  Any â€˜<...>â€™
  placeholders that refer to subst attributes (*note Subst Iterators::)
  are ignored.
  
*************** File: gccint.info,  Node: Target Macros,
*** 33614,33637 ****
  17 Target Description Macros and Functions
  ******************************************
  
! In addition to the file 'MACHINE.md', a machine description includes a C
! header file conventionally given the name 'MACHINE.h' and a C source
! file named 'MACHINE.c'.  The header file defines numerous macros that
  convey the information about the target machine that does not fit into
! the scheme of the '.md' file.  The file 'tm.h' should be a link to
! 'MACHINE.h'.  The header file 'config.h' includes 'tm.h' and most
! compiler source files include 'config.h'.  The source file defines a
! variable 'targetm', which is a structure containing pointers to
! functions and data relating to the target machine.  'MACHINE.c' should
  also contain their definitions, if they are not defined elsewhere in
! GCC, and other functions called through the macros defined in the '.h'
  file.
  
  * Menu:
  
! * Target Structure::    The 'targetm' variable.
  * Driver::              Controlling how the driver runs the compilation passes.
! * Run-time Target::     Defining '-m' options like '-m68000' and '-m68020'.
  * Per-Function Data::   Defining data structures for per-function information.
  * Storage Layout::      Defining sizes and alignments of data.
  * Type Layout::         Defining sizes and properties of basic user data types.
--- 33618,33641 ----
  17 Target Description Macros and Functions
  ******************************************
  
! In addition to the file â€˜MACHINE.mdâ€™, a machine description includes a C
! header file conventionally given the name â€˜MACHINE.hâ€™ and a C source
! file named â€˜MACHINE.câ€™.  The header file defines numerous macros that
  convey the information about the target machine that does not fit into
! the scheme of the â€˜.mdâ€™ file.  The file â€˜tm.hâ€™ should be a link to
! â€˜MACHINE.hâ€™.  The header file â€˜config.hâ€™ includes â€˜tm.hâ€™ and most
! compiler source files include â€˜config.hâ€™.  The source file defines a
! variable â€˜targetmâ€™, which is a structure containing pointers to
! functions and data relating to the target machine.  â€˜MACHINE.câ€™ should
  also contain their definitions, if they are not defined elsewhere in
! GCC, and other functions called through the macros defined in the â€˜.hâ€™
  file.
  
  * Menu:
  
! * Target Structure::    The â€˜targetmâ€™ variable.
  * Driver::              Controlling how the driver runs the compilation passes.
! * Run-time Target::     Defining â€˜-mâ€™ options like â€˜-m68000â€™ and â€˜-m68020â€™.
  * Per-Function Data::   Defining data structures for per-function information.
  * Storage Layout::      Defining sizes and alignments of data.
  * Type Layout::         Defining sizes and properties of basic user data types.
*************** file.
*** 33642,33648 ****
  * Trampolines::         Code set up at run time to enter a nested function.
  * Library Calls::       Controlling how library routines are implicitly called.
  * Addressing Modes::    Defining addressing modes valid for memory operands.
! * Anchored Addresses::  Defining how '-fsection-anchors' should work.
  * Condition Code::      Defining how insns update the condition code.
  * Costs::               Defining relative costs of different operations.
  * Scheduling::          Adjusting the behavior of the instruction scheduler.
--- 33646,33652 ----
  * Trampolines::         Code set up at run time to enter a nested function.
  * Library Calls::       Controlling how library routines are implicitly called.
  * Addressing Modes::    Defining addressing modes valid for memory operands.
! * Anchored Addresses::  Defining how â€˜-fsection-anchorsâ€™ should work.
  * Condition Code::      Defining how insns update the condition code.
  * Costs::               Defining relative costs of different operations.
  * Scheduling::          Adjusting the behavior of the instruction scheduler.
*************** file.
*** 33652,33658 ****
  * Debugging Info::      Defining the format of debugging output.
  * Floating Point::      Handling floating point for cross-compilers.
  * Mode Switching::      Insertion of mode-switching instructions.
! * Target Attributes::   Defining target-specific uses of '__attribute__'.
  * Emulated TLS::        Emulated TLS support.
  * MIPS Coprocessors::   MIPS coprocessor support and how to customize it.
  * PCH Target::          Validity checking for precompiled headers.
--- 33656,33662 ----
  * Debugging Info::      Defining the format of debugging output.
  * Floating Point::      Handling floating point for cross-compilers.
  * Mode Switching::      Insertion of mode-switching instructions.
! * Target Attributes::   Defining target-specific uses of â€˜__attribute__â€™.
  * Emulated TLS::        Emulated TLS support.
  * MIPS Coprocessors::   MIPS coprocessor support and how to customize it.
  * PCH Target::          Validity checking for precompiled headers.
*************** file.
*** 33665,33680 ****
  
  File: gccint.info,  Node: Target Structure,  Next: Driver,  Up: Target Macros
  
! 17.1 The Global 'targetm' Variable
  ==================================
  
   -- Variable: struct gcc_target targetm
!      The target '.c' file must define the global 'targetm' variable
       which contains pointers to functions and data relating to the
!      target machine.  The variable is declared in 'target.h';
!      'target-def.h' defines the macro 'TARGET_INITIALIZER' which is used
       to initialize the variable, and macros for the default initializers
!      for elements of the structure.  The '.c' file should override those
       macros for which the default definition is inappropriate.  For
       example:
            #include "target.h"
--- 33669,33684 ----
  
  File: gccint.info,  Node: Target Structure,  Next: Driver,  Up: Target Macros
  
! 17.1 The Global â€˜targetmâ€™ Variable
  ==================================
  
   -- Variable: struct gcc_target targetm
!      The target â€˜.câ€™ file must define the global â€˜targetmâ€™ variable
       which contains pointers to functions and data relating to the
!      target machine.  The variable is declared in â€˜target.hâ€™;
!      â€˜target-def.hâ€™ defines the macro â€˜TARGET_INITIALIZERâ€™ which is used
       to initialize the variable, and macros for the default initializers
!      for elements of the structure.  The â€˜.câ€™ file should override those
       macros for which the default definition is inappropriate.  For
       example:
            #include "target.h"
*************** File: gccint.info,  Node: Target Structu
*** 33687,33732 ****
  
            struct gcc_target targetm = TARGET_INITIALIZER;
  
!  Where a macro should be defined in the '.c' file in this manner to form
! part of the 'targetm' structure, it is documented below as a "Target
  Hook" with a prototype.  Many macros will change in future from being
! defined in the '.h' file to being part of the 'targetm' structure.
  
!  Similarly, there is a 'targetcm' variable for hooks that are specific
  to front ends for C-family languages, documented as "C Target Hook".
! This is declared in 'c-family/c-target.h', the initializer
! 'TARGETCM_INITIALIZER' in 'c-family/c-target-def.h'.  If targets
! initialize 'targetcm' themselves, they should set
! 'target_has_targetcm=yes' in 'config.gcc'; otherwise a default
  definition is used.
  
!  Similarly, there is a 'targetm_common' variable for hooks that are
  shared between the compiler driver and the compilers proper, documented
! as "Common Target Hook".  This is declared in 'common/common-target.h',
! the initializer 'TARGETM_COMMON_INITIALIZER' in
! 'common/common-target-def.h'.  If targets initialize 'targetm_common'
! themselves, they should set 'target_has_targetm_common=yes' in
! 'config.gcc'; otherwise a default definition is used.
  
!  Similarly, there is a 'targetdm' variable for hooks that are specific
  to the D language front end, documented as "D Target Hook".  This is
! declared in 'd/d-target.h', the initializer 'TARGETDM_INITIALIZER' in
! 'd/d-target-def.h'.  If targets initialize 'targetdm' themselves, they
! should set 'target_has_targetdm=yes' in 'config.gcc'; otherwise a
  default definition is used.
  
!  Similarly, there is a 'targetrustm' variable for hooks that are
  specific to the Rust language front end, documented as "Rust Target
! Hook".  This is declared in 'rust/rust-target.h', the initializer
! 'TARGETRUSTM_INITIALIZER' in 'rust/rust-target-def.h'.  If targets
! initialize 'targetrustm' themselves, they should set
! 'target_has_targetrustm=yes' in 'config.gcc'; otherwise a default
  definition is used.
  
  
  File: gccint.info,  Node: Driver,  Next: Run-time Target,  Prev: Target Structure,  Up: Target Macros
  
! 17.2 Controlling the Compilation Driver, 'gcc'
  ==============================================
  
  You can control the compilation driver.
--- 33691,33736 ----
  
            struct gcc_target targetm = TARGET_INITIALIZER;
  
!  Where a macro should be defined in the â€˜.câ€™ file in this manner to form
! part of the â€˜targetmâ€™ structure, it is documented below as a "Target
  Hook" with a prototype.  Many macros will change in future from being
! defined in the â€˜.hâ€™ file to being part of the â€˜targetmâ€™ structure.
  
!  Similarly, there is a â€˜targetcmâ€™ variable for hooks that are specific
  to front ends for C-family languages, documented as "C Target Hook".
! This is declared in â€˜c-family/c-target.hâ€™, the initializer
! â€˜TARGETCM_INITIALIZERâ€™ in â€˜c-family/c-target-def.hâ€™.  If targets
! initialize â€˜targetcmâ€™ themselves, they should set
! â€˜target_has_targetcm=yesâ€™ in â€˜config.gccâ€™; otherwise a default
  definition is used.
  
!  Similarly, there is a â€˜targetm_commonâ€™ variable for hooks that are
  shared between the compiler driver and the compilers proper, documented
! as "Common Target Hook".  This is declared in â€˜common/common-target.hâ€™,
! the initializer â€˜TARGETM_COMMON_INITIALIZERâ€™ in
! â€˜common/common-target-def.hâ€™.  If targets initialize â€˜targetm_commonâ€™
! themselves, they should set â€˜target_has_targetm_common=yesâ€™ in
! â€˜config.gccâ€™; otherwise a default definition is used.
  
!  Similarly, there is a â€˜targetdmâ€™ variable for hooks that are specific
  to the D language front end, documented as "D Target Hook".  This is
! declared in â€˜d/d-target.hâ€™, the initializer â€˜TARGETDM_INITIALIZERâ€™ in
! â€˜d/d-target-def.hâ€™.  If targets initialize â€˜targetdmâ€™ themselves, they
! should set â€˜target_has_targetdm=yesâ€™ in â€˜config.gccâ€™; otherwise a
  default definition is used.
  
!  Similarly, there is a â€˜targetrustmâ€™ variable for hooks that are
  specific to the Rust language front end, documented as "Rust Target
! Hook".  This is declared in â€˜rust/rust-target.hâ€™, the initializer
! â€˜TARGETRUSTM_INITIALIZERâ€™ in â€˜rust/rust-target-def.hâ€™.  If targets
! initialize â€˜targetrustmâ€™ themselves, they should set
! â€˜target_has_targetrustm=yesâ€™ in â€˜config.gccâ€™; otherwise a default
  definition is used.
  
  
  File: gccint.info,  Node: Driver,  Next: Run-time Target,  Prev: Target Structure,  Up: Target Macros
  
! 17.2 Controlling the Compilation Driver, â€˜gccâ€™
  ==============================================
  
  You can control the compilation driver.
*************** You can control the compilation driver.
*** 33736,33746 ****
       initializer for an array of strings, with no surrounding braces.
  
       The driver applies these specs to its own command line between
!      loading default 'specs' files (but not command-line specified ones)
       and choosing the multilib directory or running any subcommands.  It
       applies them in the order given, so each spec can depend on the
       options added by earlier ones.  It is also possible to remove
!      options using '%<OPTION' in the usual way.
  
       This macro can be useful when a port has several interdependent
       target options.  It provides a way of standardizing the command
--- 33740,33750 ----
       initializer for an array of strings, with no surrounding braces.
  
       The driver applies these specs to its own command line between
!      loading default â€˜specsâ€™ files (but not command-line specified ones)
       and choosing the multilib directory or running any subcommands.  It
       applies them in the order given, so each spec can depend on the
       options added by earlier ones.  It is also possible to remove
!      options using â€˜%<OPTIONâ€™ in the usual way.
  
       This macro can be useful when a port has several interdependent
       target options.  It provides a way of standardizing the command
*************** You can control the compilation driver.
*** 33750,33768 ****
  
   -- Macro: OPTION_DEFAULT_SPECS
       A list of specs used to support configure-time default options
!      (i.e. '--with' options) in the driver.  It should be a suitable
       initializer for an array of structures, each containing two
       strings, without the outermost pair of surrounding braces.
  
       The first item in the pair is the name of the default.  This must
!      match the code in 'config.gcc' for the target.  The second item is
       a spec to apply if a default with this name was specified.  The
!      string '%(VALUE)' in the spec will be replaced by the value of the
       default everywhere it occurs.
  
       The driver will apply these specs to its own command line between
!      loading default 'specs' files and processing 'DRIVER_SELF_SPECS',
!      using the same mechanism as 'DRIVER_SELF_SPECS'.
  
       Do not define this macro if it does not need to do anything.
  
--- 33754,33772 ----
  
   -- Macro: OPTION_DEFAULT_SPECS
       A list of specs used to support configure-time default options
!      (i.e. â€˜--withâ€™ options) in the driver.  It should be a suitable
       initializer for an array of structures, each containing two
       strings, without the outermost pair of surrounding braces.
  
       The first item in the pair is the name of the default.  This must
!      match the code in â€˜config.gccâ€™ for the target.  The second item is
       a spec to apply if a default with this name was specified.  The
!      string â€˜%(VALUE)â€™ in the spec will be replaced by the value of the
       default everywhere it occurs.
  
       The driver will apply these specs to its own command line between
!      loading default â€˜specsâ€™ files and processing â€˜DRIVER_SELF_SPECSâ€™,
!      using the same mechanism as â€˜DRIVER_SELF_SPECSâ€™.
  
       Do not define this macro if it does not need to do anything.
  
*************** You can control the compilation driver.
*** 33774,33786 ****
       Do not define this macro if it does not need to do anything.
  
   -- Macro: CPLUSPLUS_CPP_SPEC
!      This macro is just like 'CPP_SPEC', but is used for C++, rather
       than C.  If you do not define this macro, then the value of
!      'CPP_SPEC' (if any) will be used instead.
  
   -- Macro: CC1_SPEC
       A C string constant that tells the GCC driver program options to
!      pass to 'cc1', 'cc1plus', 'f771', and the other language front
       ends.  It can also specify how to translate options you give to GCC
       into options for GCC to pass to front ends.
  
--- 33778,33790 ----
       Do not define this macro if it does not need to do anything.
  
   -- Macro: CPLUSPLUS_CPP_SPEC
!      This macro is just like â€˜CPP_SPECâ€™, but is used for C++, rather
       than C.  If you do not define this macro, then the value of
!      â€˜CPP_SPECâ€™ (if any) will be used instead.
  
   -- Macro: CC1_SPEC
       A C string constant that tells the GCC driver program options to
!      pass to â€˜cc1â€™, â€˜cc1plusâ€™, â€˜f771â€™, and the other language front
       ends.  It can also specify how to translate options you give to GCC
       into options for GCC to pass to front ends.
  
*************** You can control the compilation driver.
*** 33788,33798 ****
  
   -- Macro: CC1PLUS_SPEC
       A C string constant that tells the GCC driver program options to
!      pass to 'cc1plus'.  It can also specify how to translate options
!      you give to GCC into options for GCC to pass to the 'cc1plus'.
  
       Do not define this macro if it does not need to do anything.  Note
!      that everything defined in CC1_SPEC is already passed to 'cc1plus'
       so there is no need to duplicate the contents of CC1_SPEC in
       CC1PLUS_SPEC.
  
--- 33792,33802 ----
  
   -- Macro: CC1PLUS_SPEC
       A C string constant that tells the GCC driver program options to
!      pass to â€˜cc1plusâ€™.  It can also specify how to translate options
!      you give to GCC into options for GCC to pass to the â€˜cc1plusâ€™.
  
       Do not define this macro if it does not need to do anything.  Note
!      that everything defined in CC1_SPEC is already passed to â€˜cc1plusâ€™
       so there is no need to duplicate the contents of CC1_SPEC in
       CC1PLUS_SPEC.
  
*************** You can control the compilation driver.
*** 33800,33827 ****
       A C string constant that tells the GCC driver program options to
       pass to the assembler.  It can also specify how to translate
       options you give to GCC into options for GCC to pass to the
!      assembler.  See the file 'sun3.h' for an example of this.
  
       Do not define this macro if it does not need to do anything.
  
   -- Macro: ASM_FINAL_SPEC
       A C string constant that tells the GCC driver program how to run
       any programs which cleanup after the normal assembler.  Normally,
!      this is not needed.  See the file 'mips.h' for an example of this.
  
       Do not define this macro if it does not need to do anything.
  
   -- Macro: AS_NEEDS_DASH_FOR_PIPED_INPUT
       Define this macro, with no value, if the driver should give the
!      assembler an argument consisting of a single dash, '-', to instruct
       it to read from its standard input (which will be a pipe connected
       to the output of the compiler proper).  This argument is given
!      after any '-o' option specifying the name of the output file.
  
       If you do not define this macro, the assembler is assumed to read
       its standard input if given no non-option arguments.  If your
!      assembler cannot read standard input at all, use a '%{pipe:%e}'
!      construct; see 'mips.h' for instance.
  
   -- Macro: LINK_SPEC
       A C string constant that tells the GCC driver program options to
--- 33804,33831 ----
       A C string constant that tells the GCC driver program options to
       pass to the assembler.  It can also specify how to translate
       options you give to GCC into options for GCC to pass to the
!      assembler.  See the file â€˜sun3.hâ€™ for an example of this.
  
       Do not define this macro if it does not need to do anything.
  
   -- Macro: ASM_FINAL_SPEC
       A C string constant that tells the GCC driver program how to run
       any programs which cleanup after the normal assembler.  Normally,
!      this is not needed.  See the file â€˜mips.hâ€™ for an example of this.
  
       Do not define this macro if it does not need to do anything.
  
   -- Macro: AS_NEEDS_DASH_FOR_PIPED_INPUT
       Define this macro, with no value, if the driver should give the
!      assembler an argument consisting of a single dash, â€˜-â€™, to instruct
       it to read from its standard input (which will be a pipe connected
       to the output of the compiler proper).  This argument is given
!      after any â€˜-oâ€™ option specifying the name of the output file.
  
       If you do not define this macro, the assembler is assumed to read
       its standard input if given no non-option arguments.  If your
!      assembler cannot read standard input at all, use a â€˜%{pipe:%e}â€™
!      construct; see â€˜mips.hâ€™ for instance.
  
   -- Macro: LINK_SPEC
       A C string constant that tells the GCC driver program options to
*************** You can control the compilation driver.
*** 33831,33898 ****
       Do not define this macro if it does not need to do anything.
  
   -- Macro: LIB_SPEC
!      Another C string constant used much like 'LINK_SPEC'.  The
!      difference between the two is that 'LIB_SPEC' is used at the end of
       the command given to the linker.
  
       If this macro is not defined, a default is provided that loads the
!      standard C library from the usual place.  See 'gcc.cc'.
  
   -- Macro: LIBGCC_SPEC
       Another C string constant that tells the GCC driver program how and
!      when to place a reference to 'libgcc.a' into the linker command
       line.  This constant is placed both before and after the value of
!      'LIB_SPEC'.
  
       If this macro is not defined, the GCC driver provides a default
!      that passes the string '-lgcc' to the linker.
  
   -- Macro: REAL_LIBGCC_SPEC
!      By default, if 'ENABLE_SHARED_LIBGCC' is defined, the 'LIBGCC_SPEC'
       is not directly used by the driver program but is instead modified
!      to refer to different versions of 'libgcc.a' depending on the
!      values of the command line flags '-static', '-shared',
!      '-static-libgcc', and '-shared-libgcc'.  On targets where these
!      modifications are inappropriate, define 'REAL_LIBGCC_SPEC' instead.
!      'REAL_LIBGCC_SPEC' tells the driver how to place a reference to
!      'libgcc' on the link command line, but, unlike 'LIBGCC_SPEC', it is
       used unmodified.
  
   -- Macro: USE_LD_AS_NEEDED
!      A macro that controls the modifications to 'LIBGCC_SPEC' mentioned
!      in 'REAL_LIBGCC_SPEC'.  If nonzero, a spec will be generated that
!      uses '--as-needed' or equivalent options and the shared 'libgcc' in
       place of the static exception handler library, when linking without
!      any of '-static', '-static-libgcc', or '-shared-libgcc'.
  
   -- Macro: LINK_EH_SPEC
!      If defined, this C string constant is added to 'LINK_SPEC'.  When
!      'USE_LD_AS_NEEDED' is zero or undefined, it also affects the
!      modifications to 'LIBGCC_SPEC' mentioned in 'REAL_LIBGCC_SPEC'.
  
   -- Macro: STARTFILE_SPEC
!      Another C string constant used much like 'LINK_SPEC'.  The
!      difference between the two is that 'STARTFILE_SPEC' is used at the
       very beginning of the command given to the linker.
  
       If this macro is not defined, a default is provided that loads the
!      standard C startup file from the usual place.  See 'gcc.cc'.
  
   -- Macro: ENDFILE_SPEC
!      Another C string constant used much like 'LINK_SPEC'.  The
!      difference between the two is that 'ENDFILE_SPEC' is used at the
       very end of the command given to the linker.
  
       Do not define this macro if it does not need to do anything.
  
   -- Macro: THREAD_MODEL_SPEC
!      GCC '-v' will print the thread model GCC was configured to use.
       However, this doesn't work on platforms that are multilibbed on
       thread models, such as AIX 4.3.  On such platforms, define
!      'THREAD_MODEL_SPEC' such that it evaluates to a string without
!      blanks that names one of the recognized thread models.  '%*', the
       default value of this macro, will expand to the value of
!      'thread_file' set in 'config.gcc'.
  
   -- Macro: SYSROOT_SUFFIX_SPEC
       Define this macro to add a suffix to the target sysroot when GCC is
--- 33835,33902 ----
       Do not define this macro if it does not need to do anything.
  
   -- Macro: LIB_SPEC
!      Another C string constant used much like â€˜LINK_SPECâ€™.  The
!      difference between the two is that â€˜LIB_SPECâ€™ is used at the end of
       the command given to the linker.
  
       If this macro is not defined, a default is provided that loads the
!      standard C library from the usual place.  See â€˜gcc.ccâ€™.
  
   -- Macro: LIBGCC_SPEC
       Another C string constant that tells the GCC driver program how and
!      when to place a reference to â€˜libgcc.aâ€™ into the linker command
       line.  This constant is placed both before and after the value of
!      â€˜LIB_SPECâ€™.
  
       If this macro is not defined, the GCC driver provides a default
!      that passes the string â€˜-lgccâ€™ to the linker.
  
   -- Macro: REAL_LIBGCC_SPEC
!      By default, if â€˜ENABLE_SHARED_LIBGCCâ€™ is defined, the â€˜LIBGCC_SPECâ€™
       is not directly used by the driver program but is instead modified
!      to refer to different versions of â€˜libgcc.aâ€™ depending on the
!      values of the command line flags â€˜-staticâ€™, â€˜-sharedâ€™,
!      â€˜-static-libgccâ€™, and â€˜-shared-libgccâ€™.  On targets where these
!      modifications are inappropriate, define â€˜REAL_LIBGCC_SPECâ€™ instead.
!      â€˜REAL_LIBGCC_SPECâ€™ tells the driver how to place a reference to
!      â€˜libgccâ€™ on the link command line, but, unlike â€˜LIBGCC_SPECâ€™, it is
       used unmodified.
  
   -- Macro: USE_LD_AS_NEEDED
!      A macro that controls the modifications to â€˜LIBGCC_SPECâ€™ mentioned
!      in â€˜REAL_LIBGCC_SPECâ€™.  If nonzero, a spec will be generated that
!      uses â€˜--as-neededâ€™ or equivalent options and the shared â€˜libgccâ€™ in
       place of the static exception handler library, when linking without
!      any of â€˜-staticâ€™, â€˜-static-libgccâ€™, or â€˜-shared-libgccâ€™.
  
   -- Macro: LINK_EH_SPEC
!      If defined, this C string constant is added to â€˜LINK_SPECâ€™.  When
!      â€˜USE_LD_AS_NEEDEDâ€™ is zero or undefined, it also affects the
!      modifications to â€˜LIBGCC_SPECâ€™ mentioned in â€˜REAL_LIBGCC_SPECâ€™.
  
   -- Macro: STARTFILE_SPEC
!      Another C string constant used much like â€˜LINK_SPECâ€™.  The
!      difference between the two is that â€˜STARTFILE_SPECâ€™ is used at the
       very beginning of the command given to the linker.
  
       If this macro is not defined, a default is provided that loads the
!      standard C startup file from the usual place.  See â€˜gcc.ccâ€™.
  
   -- Macro: ENDFILE_SPEC
!      Another C string constant used much like â€˜LINK_SPECâ€™.  The
!      difference between the two is that â€˜ENDFILE_SPECâ€™ is used at the
       very end of the command given to the linker.
  
       Do not define this macro if it does not need to do anything.
  
   -- Macro: THREAD_MODEL_SPEC
!      GCC â€˜-vâ€™ will print the thread model GCC was configured to use.
       However, this doesn't work on platforms that are multilibbed on
       thread models, such as AIX 4.3.  On such platforms, define
!      â€˜THREAD_MODEL_SPECâ€™ such that it evaluates to a string without
!      blanks that names one of the recognized thread models.  â€˜%*â€™, the
       default value of this macro, will expand to the value of
!      â€˜thread_fileâ€™ set in â€˜config.gccâ€™.
  
   -- Macro: SYSROOT_SUFFIX_SPEC
       Define this macro to add a suffix to the target sysroot when GCC is
*************** You can control the compilation driver.
*** 33907,33914 ****
  
   -- Macro: EXTRA_SPECS
       Define this macro to provide additional specifications to put in
!      the 'specs' file that can be used in various specifications like
!      'CC1_SPEC'.
  
       The definition should be an initializer for an array of structures,
       containing a string constant, that defines the specification name,
--- 33911,33918 ----
  
   -- Macro: EXTRA_SPECS
       Define this macro to provide additional specifications to put in
!      the â€˜specsâ€™ file that can be used in various specifications like
!      â€˜CC1_SPECâ€™.
  
       The definition should be an initializer for an array of structures,
       containing a string constant, that defines the specification name,
*************** You can control the compilation driver.
*** 33916,33939 ****
  
       Do not define this macro if it does not need to do anything.
  
!      'EXTRA_SPECS' is useful when an architecture contains several
!      related targets, which have various '..._SPECS' which are similar
       to each other, and the maintainer would like one central place to
       keep these definitions.
  
!      For example, the PowerPC System V.4 targets use 'EXTRA_SPECS' to
!      define either '_CALL_SYSV' when the System V calling sequence is
!      used or '_CALL_AIX' when the older AIX-based calling sequence is
       used.
  
!      The 'config/rs6000/rs6000.h' target file defines:
  
            #define EXTRA_SPECS \
              { "cpp_sysv_default", CPP_SYSV_DEFAULT },
  
            #define CPP_SYS_DEFAULT ""
  
!      The 'config/rs6000/sysv.h' target file defines:
            #undef CPP_SPEC
            #define CPP_SPEC \
            "%{posix: -D_POSIX_SOURCE } \
--- 33920,33943 ----
  
       Do not define this macro if it does not need to do anything.
  
!      â€˜EXTRA_SPECSâ€™ is useful when an architecture contains several
!      related targets, which have various â€˜..._SPECSâ€™ which are similar
       to each other, and the maintainer would like one central place to
       keep these definitions.
  
!      For example, the PowerPC System V.4 targets use â€˜EXTRA_SPECSâ€™ to
!      define either â€˜_CALL_SYSVâ€™ when the System V calling sequence is
!      used or â€˜_CALL_AIXâ€™ when the older AIX-based calling sequence is
       used.
  
!      The â€˜config/rs6000/rs6000.hâ€™ target file defines:
  
            #define EXTRA_SPECS \
              { "cpp_sysv_default", CPP_SYSV_DEFAULT },
  
            #define CPP_SYS_DEFAULT ""
  
!      The â€˜config/rs6000/sysv.hâ€™ target file defines:
            #undef CPP_SPEC
            #define CPP_SPEC \
            "%{posix: -D_POSIX_SOURCE } \
*************** You can control the compilation driver.
*** 33944,33963 ****
            #undef CPP_SYSV_DEFAULT
            #define CPP_SYSV_DEFAULT "-D_CALL_SYSV"
  
!      while the 'config/rs6000/eabiaix.h' target file defines
!      'CPP_SYSV_DEFAULT' as:
  
            #undef CPP_SYSV_DEFAULT
            #define CPP_SYSV_DEFAULT "-D_CALL_AIX"
  
   -- Macro: LINK_LIBGCC_SPECIAL_1
       Define this macro if the driver program should find the library
!      'libgcc.a'.  If you do not define this macro, the driver program
!      will pass the argument '-lgcc' to tell the linker to do the search.
  
   -- Macro: LINK_GCC_C_SEQUENCE_SPEC
       The sequence in which libgcc and libc are specified to the linker.
!      By default this is '%G %L %G'.
  
   -- Macro: POST_LINK_SPEC
       Define this macro to add additional steps to be executed after
--- 33948,33967 ----
            #undef CPP_SYSV_DEFAULT
            #define CPP_SYSV_DEFAULT "-D_CALL_SYSV"
  
!      while the â€˜config/rs6000/eabiaix.hâ€™ target file defines
!      â€˜CPP_SYSV_DEFAULTâ€™ as:
  
            #undef CPP_SYSV_DEFAULT
            #define CPP_SYSV_DEFAULT "-D_CALL_AIX"
  
   -- Macro: LINK_LIBGCC_SPECIAL_1
       Define this macro if the driver program should find the library
!      â€˜libgcc.aâ€™.  If you do not define this macro, the driver program
!      will pass the argument â€˜-lgccâ€™ to tell the linker to do the search.
  
   -- Macro: LINK_GCC_C_SEQUENCE_SPEC
       The sequence in which libgcc and libc are specified to the linker.
!      By default this is â€˜%G %L %Gâ€™.
  
   -- Macro: POST_LINK_SPEC
       Define this macro to add additional steps to be executed after
*************** You can control the compilation driver.
*** 33967,33980 ****
       A C string constant giving the complete command line need to
       execute the linker.  When you do this, you will need to update your
       port each time a change is made to the link command line within
!      'gcc.cc'.  Therefore, define this macro only if you need to
       completely redefine the command line for invoking the linker and
       there is no other way to accomplish the effect you need.
       Overriding this macro may be avoidable by overriding
!      'LINK_GCC_C_SEQUENCE_SPEC' instead.
  
   -- Common Target Hook: bool TARGET_ALWAYS_STRIP_DOTDOT
!      True if '..' components should always be removed from directory
       names computed relative to GCC's internal directories, false
       (default) if such components should be preserved and directory
       names containing them passed to other tools such as the linker.
--- 33971,33984 ----
       A C string constant giving the complete command line need to
       execute the linker.  When you do this, you will need to update your
       port each time a change is made to the link command line within
!      â€˜gcc.ccâ€™.  Therefore, define this macro only if you need to
       completely redefine the command line for invoking the linker and
       there is no other way to accomplish the effect you need.
       Overriding this macro may be avoidable by overriding
!      â€˜LINK_GCC_C_SEQUENCE_SPECâ€™ instead.
  
   -- Common Target Hook: bool TARGET_ALWAYS_STRIP_DOTDOT
!      True if â€˜..â€™ components should always be removed from directory
       names computed relative to GCC's internal directories, false
       (default) if such components should be preserved and directory
       names containing them passed to other tools such as the linker.
*************** You can control the compilation driver.
*** 33983,34030 ****
       Define this macro as a C expression for the initializer of an array
       of string to tell the driver program which options are defaults for
       this target and thus do not need to be handled specially when using
!      'MULTILIB_OPTIONS'.
  
!      Do not define this macro if 'MULTILIB_OPTIONS' is not defined in
       the target makefile fragment or if none of the options listed in
!      'MULTILIB_OPTIONS' are set by default.  *Note Target Fragment::.
  
   -- Macro: RELATIVE_PREFIX_NOT_LINKDIR
!      Define this macro to tell 'gcc' that it should only translate a
!      '-B' prefix into a '-L' linker option if the prefix indicates an
       absolute file name.
  
   -- Macro: MD_EXEC_PREFIX
       If defined, this macro is an additional prefix to try after
!      'STANDARD_EXEC_PREFIX'.  'MD_EXEC_PREFIX' is not searched when the
       compiler is built as a cross compiler.  If you define
!      'MD_EXEC_PREFIX', then be sure to add it to the list of directories
!      used to find the assembler in 'configure.ac'.
  
   -- Macro: STANDARD_STARTFILE_PREFIX
       Define this macro as a C string constant if you wish to override
!      the standard choice of 'libdir' as the default prefix to try when
!      searching for startup files such as 'crt0.o'.
!      'STANDARD_STARTFILE_PREFIX' is not searched when the compiler is
       built as a cross compiler.
  
   -- Macro: STANDARD_STARTFILE_PREFIX_1
       Define this macro as a C string constant if you wish to override
!      the standard choice of '/lib' as a prefix to try after the default
!      prefix when searching for startup files such as 'crt0.o'.
!      'STANDARD_STARTFILE_PREFIX_1' is not searched when the compiler is
       built as a cross compiler.
  
   -- Macro: STANDARD_STARTFILE_PREFIX_2
       Define this macro as a C string constant if you wish to override
!      the standard choice of '/lib' as yet another prefix to try after
       the default prefix when searching for startup files such as
!      'crt0.o'.  'STANDARD_STARTFILE_PREFIX_2' is not searched when the
       compiler is built as a cross compiler.
  
   -- Macro: MD_STARTFILE_PREFIX
       If defined, this macro supplies an additional prefix to try after
!      the standard prefixes.  'MD_EXEC_PREFIX' is not searched when the
       compiler is built as a cross compiler.
  
   -- Macro: MD_STARTFILE_PREFIX_1
--- 33987,34034 ----
       Define this macro as a C expression for the initializer of an array
       of string to tell the driver program which options are defaults for
       this target and thus do not need to be handled specially when using
!      â€˜MULTILIB_OPTIONSâ€™.
  
!      Do not define this macro if â€˜MULTILIB_OPTIONSâ€™ is not defined in
       the target makefile fragment or if none of the options listed in
!      â€˜MULTILIB_OPTIONSâ€™ are set by default.  *Note Target Fragment::.
  
   -- Macro: RELATIVE_PREFIX_NOT_LINKDIR
!      Define this macro to tell â€˜gccâ€™ that it should only translate a
!      â€˜-Bâ€™ prefix into a â€˜-Lâ€™ linker option if the prefix indicates an
       absolute file name.
  
   -- Macro: MD_EXEC_PREFIX
       If defined, this macro is an additional prefix to try after
!      â€˜STANDARD_EXEC_PREFIXâ€™.  â€˜MD_EXEC_PREFIXâ€™ is not searched when the
       compiler is built as a cross compiler.  If you define
!      â€˜MD_EXEC_PREFIXâ€™, then be sure to add it to the list of directories
!      used to find the assembler in â€˜configure.acâ€™.
  
   -- Macro: STANDARD_STARTFILE_PREFIX
       Define this macro as a C string constant if you wish to override
!      the standard choice of â€˜libdirâ€™ as the default prefix to try when
!      searching for startup files such as â€˜crt0.oâ€™.
!      â€˜STANDARD_STARTFILE_PREFIXâ€™ is not searched when the compiler is
       built as a cross compiler.
  
   -- Macro: STANDARD_STARTFILE_PREFIX_1
       Define this macro as a C string constant if you wish to override
!      the standard choice of â€˜/libâ€™ as a prefix to try after the default
!      prefix when searching for startup files such as â€˜crt0.oâ€™.
!      â€˜STANDARD_STARTFILE_PREFIX_1â€™ is not searched when the compiler is
       built as a cross compiler.
  
   -- Macro: STANDARD_STARTFILE_PREFIX_2
       Define this macro as a C string constant if you wish to override
!      the standard choice of â€˜/libâ€™ as yet another prefix to try after
       the default prefix when searching for startup files such as
!      â€˜crt0.oâ€™.  â€˜STANDARD_STARTFILE_PREFIX_2â€™ is not searched when the
       compiler is built as a cross compiler.
  
   -- Macro: MD_STARTFILE_PREFIX
       If defined, this macro supplies an additional prefix to try after
!      the standard prefixes.  â€˜MD_EXEC_PREFIXâ€™ is not searched when the
       compiler is built as a cross compiler.
  
   -- Macro: MD_STARTFILE_PREFIX_1
*************** You can control the compilation driver.
*** 34036,34080 ****
       Define this macro as a C string constant if you wish to set
       environment variables for programs called by the driver, such as
       the assembler and loader.  The driver passes the value of this
!      macro to 'putenv' to initialize the necessary environment
       variables.
  
   -- Macro: LOCAL_INCLUDE_DIR
       Define this macro as a C string constant if you wish to override
!      the standard choice of '/usr/local/include' as the default prefix
!      to try when searching for local header files.  'LOCAL_INCLUDE_DIR'
!      comes before 'NATIVE_SYSTEM_HEADER_DIR' (set in 'config.gcc',
!      normally '/usr/include') in the search order.
  
!      Cross compilers do not search either '/usr/local/include' or its
       replacement.
  
   -- Macro: NATIVE_SYSTEM_HEADER_COMPONENT
!      The "component" corresponding to 'NATIVE_SYSTEM_HEADER_DIR'.  See
!      'INCLUDE_DEFAULTS', below, for the description of components.  If
       you do not define this macro, no component is used.
  
   -- Macro: INCLUDE_DEFAULTS
       Define this macro if you wish to override the entire default search
       path for include files.  For a native compiler, the default search
!      path usually consists of 'GCC_INCLUDE_DIR', 'LOCAL_INCLUDE_DIR',
!      'GPLUSPLUS_INCLUDE_DIR', and 'NATIVE_SYSTEM_HEADER_DIR'.  In
!      addition, 'GPLUSPLUS_INCLUDE_DIR' and 'GCC_INCLUDE_DIR' are defined
!      automatically by 'Makefile', and specify private search areas for
!      GCC.  The directory 'GPLUSPLUS_INCLUDE_DIR' is used only for C++
       programs.
  
       The definition should be an initializer for an array of structures.
       Each array element should have four elements: the directory name (a
       string constant), the component name (also a string constant), a
       flag for C++-only directories, and a flag showing that the includes
!      in the directory don't need to be wrapped in 'extern 'C'' when
       compiling C++.  Mark the end of the array with a null element.
  
       The component name denotes what GNU package the include file is
       part of, if any, in all uppercase letters.  For example, it might
!      be 'GCC' or 'BINUTILS'.  If the package is part of a
!      vendor-supplied operating system, code the component name as '0'.
  
       For example, here is the definition used for VAX/VMS:
  
--- 34040,34084 ----
       Define this macro as a C string constant if you wish to set
       environment variables for programs called by the driver, such as
       the assembler and loader.  The driver passes the value of this
!      macro to â€˜putenvâ€™ to initialize the necessary environment
       variables.
  
   -- Macro: LOCAL_INCLUDE_DIR
       Define this macro as a C string constant if you wish to override
!      the standard choice of â€˜/usr/local/includeâ€™ as the default prefix
!      to try when searching for local header files.  â€˜LOCAL_INCLUDE_DIRâ€™
!      comes before â€˜NATIVE_SYSTEM_HEADER_DIRâ€™ (set in â€˜config.gccâ€™,
!      normally â€˜/usr/includeâ€™) in the search order.
  
!      Cross compilers do not search either â€˜/usr/local/includeâ€™ or its
       replacement.
  
   -- Macro: NATIVE_SYSTEM_HEADER_COMPONENT
!      The "component" corresponding to â€˜NATIVE_SYSTEM_HEADER_DIRâ€™.  See
!      â€˜INCLUDE_DEFAULTSâ€™, below, for the description of components.  If
       you do not define this macro, no component is used.
  
   -- Macro: INCLUDE_DEFAULTS
       Define this macro if you wish to override the entire default search
       path for include files.  For a native compiler, the default search
!      path usually consists of â€˜GCC_INCLUDE_DIRâ€™, â€˜LOCAL_INCLUDE_DIRâ€™,
!      â€˜GPLUSPLUS_INCLUDE_DIRâ€™, and â€˜NATIVE_SYSTEM_HEADER_DIRâ€™.  In
!      addition, â€˜GPLUSPLUS_INCLUDE_DIRâ€™ and â€˜GCC_INCLUDE_DIRâ€™ are defined
!      automatically by â€˜Makefileâ€™, and specify private search areas for
!      GCC.  The directory â€˜GPLUSPLUS_INCLUDE_DIRâ€™ is used only for C++
       programs.
  
       The definition should be an initializer for an array of structures.
       Each array element should have four elements: the directory name (a
       string constant), the component name (also a string constant), a
       flag for C++-only directories, and a flag showing that the includes
!      in the directory don't need to be wrapped in â€˜extern â€˜Câ€™â€™ when
       compiling C++.  Mark the end of the array with a null element.
  
       The component name denotes what GNU package the include file is
       part of, if any, in all uppercase letters.  For example, it might
!      be â€˜GCCâ€™ or â€˜BINUTILSâ€™.  If the package is part of a
!      vendor-supplied operating system, code the component name as â€˜0â€™.
  
       For example, here is the definition used for VAX/VMS:
  
*************** You can control the compilation driver.
*** 34089,34154 ****
  
   Here is the order of prefixes tried for exec files:
  
!   1. Any prefixes specified by the user with '-B'.
  
!   2. The environment variable 'GCC_EXEC_PREFIX' or, if 'GCC_EXEC_PREFIX'
       is not set and the compiler has not been installed in the
       configure-time PREFIX, the location in which the compiler has
       actually been installed.
  
    3. The directories specified by the environment variable
!      'COMPILER_PATH'.
  
!   4. The macro 'STANDARD_EXEC_PREFIX', if the compiler has been
       installed in the configured-time PREFIX.
  
!   5. The location '/usr/libexec/gcc/', but only if this is a native
       compiler.
  
!   6. The location '/usr/lib/gcc/', but only if this is a native
       compiler.
  
!   7. The macro 'MD_EXEC_PREFIX', if defined, but only if this is a
       native compiler.
  
   Here is the order of prefixes tried for startfiles:
  
!   1. Any prefixes specified by the user with '-B'.
  
!   2. The environment variable 'GCC_EXEC_PREFIX' or its automatically
       determined value based on the installed toolchain location.
  
    3. The directories specified by the environment variable
!      'LIBRARY_PATH' (or port-specific name; native only, cross compilers
       do not use this).
  
!   4. The macro 'STANDARD_EXEC_PREFIX', but only if the toolchain is
       installed in the configured PREFIX or this is a native compiler.
  
!   5. The location '/usr/lib/gcc/', but only if this is a native
       compiler.
  
!   6. The macro 'MD_EXEC_PREFIX', if defined, but only if this is a
       native compiler.
  
!   7. The macro 'MD_STARTFILE_PREFIX', if defined, but only if this is a
       native compiler, or we have a target system root.
  
!   8. The macro 'MD_STARTFILE_PREFIX_1', if defined, but only if this is
       a native compiler, or we have a target system root.
  
!   9. The macro 'STANDARD_STARTFILE_PREFIX', with any sysroot
       modifications.  If this path is relative it will be prefixed by
!      'GCC_EXEC_PREFIX' and the machine suffix or 'STANDARD_EXEC_PREFIX'
       and the machine suffix.
  
!   10. The macro 'STANDARD_STARTFILE_PREFIX_1', but only if this is a
       native compiler, or we have a target system root.  The default for
!      this macro is '/lib/'.
  
!   11. The macro 'STANDARD_STARTFILE_PREFIX_2', but only if this is a
       native compiler, or we have a target system root.  The default for
!      this macro is '/usr/lib/'.
  
  
  File: gccint.info,  Node: Run-time Target,  Next: Per-Function Data,  Prev: Driver,  Up: Target Macros
--- 34093,34158 ----
  
   Here is the order of prefixes tried for exec files:
  
!   1. Any prefixes specified by the user with â€˜-Bâ€™.
  
!   2. The environment variable â€˜GCC_EXEC_PREFIXâ€™ or, if â€˜GCC_EXEC_PREFIXâ€™
       is not set and the compiler has not been installed in the
       configure-time PREFIX, the location in which the compiler has
       actually been installed.
  
    3. The directories specified by the environment variable
!      â€˜COMPILER_PATHâ€™.
  
!   4. The macro â€˜STANDARD_EXEC_PREFIXâ€™, if the compiler has been
       installed in the configured-time PREFIX.
  
!   5. The location â€˜/usr/libexec/gcc/â€™, but only if this is a native
       compiler.
  
!   6. The location â€˜/usr/lib/gcc/â€™, but only if this is a native
       compiler.
  
!   7. The macro â€˜MD_EXEC_PREFIXâ€™, if defined, but only if this is a
       native compiler.
  
   Here is the order of prefixes tried for startfiles:
  
!   1. Any prefixes specified by the user with â€˜-Bâ€™.
  
!   2. The environment variable â€˜GCC_EXEC_PREFIXâ€™ or its automatically
       determined value based on the installed toolchain location.
  
    3. The directories specified by the environment variable
!      â€˜LIBRARY_PATHâ€™ (or port-specific name; native only, cross compilers
       do not use this).
  
!   4. The macro â€˜STANDARD_EXEC_PREFIXâ€™, but only if the toolchain is
       installed in the configured PREFIX or this is a native compiler.
  
!   5. The location â€˜/usr/lib/gcc/â€™, but only if this is a native
       compiler.
  
!   6. The macro â€˜MD_EXEC_PREFIXâ€™, if defined, but only if this is a
       native compiler.
  
!   7. The macro â€˜MD_STARTFILE_PREFIXâ€™, if defined, but only if this is a
       native compiler, or we have a target system root.
  
!   8. The macro â€˜MD_STARTFILE_PREFIX_1â€™, if defined, but only if this is
       a native compiler, or we have a target system root.
  
!   9. The macro â€˜STANDARD_STARTFILE_PREFIXâ€™, with any sysroot
       modifications.  If this path is relative it will be prefixed by
!      â€˜GCC_EXEC_PREFIXâ€™ and the machine suffix or â€˜STANDARD_EXEC_PREFIXâ€™
       and the machine suffix.
  
!   10. The macro â€˜STANDARD_STARTFILE_PREFIX_1â€™, but only if this is a
       native compiler, or we have a target system root.  The default for
!      this macro is â€˜/lib/â€™.
  
!   11. The macro â€˜STANDARD_STARTFILE_PREFIX_2â€™, but only if this is a
       native compiler, or we have a target system root.  The default for
!      this macro is â€˜/usr/lib/â€™.
  
  
  File: gccint.info,  Node: Run-time Target,  Next: Per-Function Data,  Prev: Driver,  Up: Target Macros
*************** Here are run-time target specifications.
*** 34161,34242 ****
   -- Macro: TARGET_CPU_CPP_BUILTINS ()
       This function-like macro expands to a block of code that defines
       built-in preprocessor macros and assertions for the target CPU,
!      using the functions 'builtin_define', 'builtin_define_std' and
!      'builtin_assert'.  When the front end calls this macro it provides
       a trailing semicolon, and since it has finished command line option
       processing your code can use those results freely.
  
!      'builtin_assert' takes a string in the form you pass to the
!      command-line option '-A', such as 'cpu=mips', and creates the
!      assertion.  'builtin_define' takes a string in the form accepted by
!      option '-D' and unconditionally defines the macro.
  
!      'builtin_define_std' takes a string representing the name of an
       object-like macro.  If it doesn't lie in the user's namespace,
!      'builtin_define_std' defines it unconditionally.  Otherwise, it
       defines a version with two leading underscores, and another version
       with two leading and trailing underscores, and defines the original
       only if an ISO standard was not requested on the command line.  For
!      example, passing 'unix' defines '__unix', '__unix__' and possibly
!      'unix'; passing '_mips' defines '__mips', '__mips__' and possibly
!      '_mips', and passing '_ABI64' defines only '_ABI64'.
  
       You can also test for the C dialect being compiled.  The variable
!      'c_language' is set to one of 'clk_c', 'clk_cplusplus' or
!      'clk_objective_c'.  Note that if we are preprocessing assembler,
!      this variable will be 'clk_c' but the function-like macro
!      'preprocessing_asm_p()' will return true, so you might want to
       check for that first.  If you need to check for strict ANSI, the
!      variable 'flag_iso' can be used.  The function-like macro
!      'preprocessing_trad_p()' can be used to check for traditional
       preprocessing.
  
   -- Macro: TARGET_OS_CPP_BUILTINS ()
!      Similarly to 'TARGET_CPU_CPP_BUILTINS' but this macro is optional
       and is used for the target operating system instead.
  
   -- Macro: TARGET_OBJFMT_CPP_BUILTINS ()
!      Similarly to 'TARGET_CPU_CPP_BUILTINS' but this macro is optional
!      and is used for the target object format.  'elfos.h' uses this
!      macro to define '__ELF__', so you probably do not need to define it
       yourself.
  
   -- Variable: extern int target_flags
!      This variable is declared in 'options.h', which is included before
       any target-specific headers.
  
   -- Common Target Hook: int TARGET_DEFAULT_TARGET_FLAGS
!      This variable specifies the initial value of 'target_flags'.  Its
       default setting is 0.
  
   -- Common Target Hook: bool TARGET_HANDLE_OPTION (struct gcc_options
            *OPTS, struct gcc_options *OPTS_SET, const struct
            cl_decoded_option *DECODED, location_t LOC)
       This hook is called whenever the user specifies one of the
!      target-specific options described by the '.opt' definition files
       (*note Options::).  It has the opportunity to do some
       option-specific processing and should return true if the option is
       valid.  The default definition does nothing but return true.
  
       DECODED specifies the option and its arguments.  OPTS and OPTS_SET
!      are the 'gcc_options' structures to be used for storing option
       state, and LOC is the location at which the option was passed
!      ('UNKNOWN_LOCATION' except for options passed via attributes).
  
   -- C Target Hook: bool TARGET_HANDLE_C_OPTION (size_t CODE, const char
            *ARG, int VALUE)
       This target hook is called whenever the user specifies one of the
!      target-specific C language family options described by the '.opt'
       definition files(*note Options::).  It has the opportunity to do
       some option-specific processing and should return true if the
       option is valid.  The arguments are like for
!      'TARGET_HANDLE_OPTION'.  The default definition does nothing but
       return false.
  
!      In general, you should use 'TARGET_HANDLE_OPTION' to handle
       options.  However, if processing an option requires routines that
       are only available in the C (and related language) front ends, then
!      you should use 'TARGET_HANDLE_C_OPTION' instead.
  
   -- C Target Hook: tree TARGET_OBJC_CONSTRUCT_STRING_OBJECT (tree
            STRING)
--- 34165,34246 ----
   -- Macro: TARGET_CPU_CPP_BUILTINS ()
       This function-like macro expands to a block of code that defines
       built-in preprocessor macros and assertions for the target CPU,
!      using the functions â€˜builtin_defineâ€™, â€˜builtin_define_stdâ€™ and
!      â€˜builtin_assertâ€™.  When the front end calls this macro it provides
       a trailing semicolon, and since it has finished command line option
       processing your code can use those results freely.
  
!      â€˜builtin_assertâ€™ takes a string in the form you pass to the
!      command-line option â€˜-Aâ€™, such as â€˜cpu=mipsâ€™, and creates the
!      assertion.  â€˜builtin_defineâ€™ takes a string in the form accepted by
!      option â€˜-Dâ€™ and unconditionally defines the macro.
  
!      â€˜builtin_define_stdâ€™ takes a string representing the name of an
       object-like macro.  If it doesn't lie in the user's namespace,
!      â€˜builtin_define_stdâ€™ defines it unconditionally.  Otherwise, it
       defines a version with two leading underscores, and another version
       with two leading and trailing underscores, and defines the original
       only if an ISO standard was not requested on the command line.  For
!      example, passing â€˜unixâ€™ defines â€˜__unixâ€™, â€˜__unix__â€™ and possibly
!      â€˜unixâ€™; passing â€˜_mipsâ€™ defines â€˜__mipsâ€™, â€˜__mips__â€™ and possibly
!      â€˜_mipsâ€™, and passing â€˜_ABI64â€™ defines only â€˜_ABI64â€™.
  
       You can also test for the C dialect being compiled.  The variable
!      â€˜c_languageâ€™ is set to one of â€˜clk_câ€™, â€˜clk_cplusplusâ€™ or
!      â€˜clk_objective_câ€™.  Note that if we are preprocessing assembler,
!      this variable will be â€˜clk_câ€™ but the function-like macro
!      â€˜preprocessing_asm_p()â€™ will return true, so you might want to
       check for that first.  If you need to check for strict ANSI, the
!      variable â€˜flag_isoâ€™ can be used.  The function-like macro
!      â€˜preprocessing_trad_p()â€™ can be used to check for traditional
       preprocessing.
  
   -- Macro: TARGET_OS_CPP_BUILTINS ()
!      Similarly to â€˜TARGET_CPU_CPP_BUILTINSâ€™ but this macro is optional
       and is used for the target operating system instead.
  
   -- Macro: TARGET_OBJFMT_CPP_BUILTINS ()
!      Similarly to â€˜TARGET_CPU_CPP_BUILTINSâ€™ but this macro is optional
!      and is used for the target object format.  â€˜elfos.hâ€™ uses this
!      macro to define â€˜__ELF__â€™, so you probably do not need to define it
       yourself.
  
   -- Variable: extern int target_flags
!      This variable is declared in â€˜options.hâ€™, which is included before
       any target-specific headers.
  
   -- Common Target Hook: int TARGET_DEFAULT_TARGET_FLAGS
!      This variable specifies the initial value of â€˜target_flagsâ€™.  Its
       default setting is 0.
  
   -- Common Target Hook: bool TARGET_HANDLE_OPTION (struct gcc_options
            *OPTS, struct gcc_options *OPTS_SET, const struct
            cl_decoded_option *DECODED, location_t LOC)
       This hook is called whenever the user specifies one of the
!      target-specific options described by the â€˜.optâ€™ definition files
       (*note Options::).  It has the opportunity to do some
       option-specific processing and should return true if the option is
       valid.  The default definition does nothing but return true.
  
       DECODED specifies the option and its arguments.  OPTS and OPTS_SET
!      are the â€˜gcc_optionsâ€™ structures to be used for storing option
       state, and LOC is the location at which the option was passed
!      (â€˜UNKNOWN_LOCATIONâ€™ except for options passed via attributes).
  
   -- C Target Hook: bool TARGET_HANDLE_C_OPTION (size_t CODE, const char
            *ARG, int VALUE)
       This target hook is called whenever the user specifies one of the
!      target-specific C language family options described by the â€˜.optâ€™
       definition files(*note Options::).  It has the opportunity to do
       some option-specific processing and should return true if the
       option is valid.  The arguments are like for
!      â€˜TARGET_HANDLE_OPTIONâ€™.  The default definition does nothing but
       return false.
  
!      In general, you should use â€˜TARGET_HANDLE_OPTIONâ€™ to handle
       options.  However, if processing an option requires routines that
       are only available in the C (and related language) front ends, then
!      you should use â€˜TARGET_HANDLE_C_OPTIONâ€™ instead.
  
   -- C Target Hook: tree TARGET_OBJC_CONSTRUCT_STRING_OBJECT (tree
            STRING)
*************** Here are run-time target specifications.
*** 34246,34252 ****
       information.  These objects are considered opaque to the compiler
       and handled as references.  An ideal implementation makes the
       composition of the string object match that of the Objective-C
!      'NSString' ('NXString' for GNUStep), allowing efficient
       interworking between C-only and Objective-C code.  If a target
       implements string objects then this hook should return a reference
       to such an object constructed from the normal 'C' string
--- 34250,34256 ----
       information.  These objects are considered opaque to the compiler
       and handled as references.  An ideal implementation makes the
       composition of the string object match that of the Objective-C
!      â€˜NSStringâ€™ (â€˜NXStringâ€™ for GNUStep), allowing efficient
       interworking between C-only and Objective-C code.  If a target
       implements string objects then this hook should return a reference
       to such an object constructed from the normal 'C' string
*************** Here are run-time target specifications.
*** 34267,34273 ****
   -- C Target Hook: bool TARGET_STRING_OBJECT_REF_TYPE_P (const_tree
            STRINGREF)
       If a target implements string objects then this hook should return
!      'true' if STRINGREF is a valid reference to such an object.
  
   -- C Target Hook: void TARGET_CHECK_STRING_OBJECT_FORMAT_ARG (tree
            FORMAT_ARG, tree ARGS_LIST)
--- 34271,34277 ----
   -- C Target Hook: bool TARGET_STRING_OBJECT_REF_TYPE_P (const_tree
            STRINGREF)
       If a target implements string objects then this hook should return
!      â€˜trueâ€™ if STRINGREF is a valid reference to such an object.
  
   -- C Target Hook: void TARGET_CHECK_STRING_OBJECT_FORMAT_ARG (tree
            FORMAT_ARG, tree ARGS_LIST)
*************** Here are run-time target specifications.
*** 34278,34293 ****
  
   -- Target Hook: void TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE (void)
       This target function is similar to the hook
!      'TARGET_OPTION_OVERRIDE' but is called when the optimize level is
       changed via an attribute or pragma or when it is reset at the end
       of the code affected by the attribute or pragma.  It is not called
!      at the beginning of compilation when 'TARGET_OPTION_OVERRIDE' is
       called so if you want to perform these actions then, you should
!      have 'TARGET_OPTION_OVERRIDE' call
!      'TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE'.
  
   -- Macro: C_COMMON_OVERRIDE_OPTIONS
!      This is similar to the 'TARGET_OPTION_OVERRIDE' hook but is only
       used in the C language frontends (C, Objective-C, C++,
       Objective-C++) and so can be used to alter option flag variables
       which only exist in those frontends.
--- 34282,34297 ----
  
   -- Target Hook: void TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE (void)
       This target function is similar to the hook
!      â€˜TARGET_OPTION_OVERRIDEâ€™ but is called when the optimize level is
       changed via an attribute or pragma or when it is reset at the end
       of the code affected by the attribute or pragma.  It is not called
!      at the beginning of compilation when â€˜TARGET_OPTION_OVERRIDEâ€™ is
       called so if you want to perform these actions then, you should
!      have â€˜TARGET_OPTION_OVERRIDEâ€™ call
!      â€˜TARGET_OVERRIDE_OPTIONS_AFTER_CHANGEâ€™.
  
   -- Macro: C_COMMON_OVERRIDE_OPTIONS
!      This is similar to the â€˜TARGET_OPTION_OVERRIDEâ€™ hook but is only
       used in the C language frontends (C, Objective-C, C++,
       Objective-C++) and so can be used to alter option flag variables
       which only exist in those frontends.
*************** Here are run-time target specifications.
*** 34303,34310 ****
       options passed explicitly.
  
       This processing is run once at program startup and when the
!      optimization options are changed via '#pragma GCC optimize' or by
!      using the 'optimize' attribute.
  
   -- Common Target Hook: void TARGET_OPTION_INIT_STRUCT (struct
            gcc_options *OPTS)
--- 34307,34314 ----
       options passed explicitly.
  
       This processing is run once at program startup and when the
!      optimization options are changed via â€˜#pragma GCC optimizeâ€™ or by
!      using the â€˜optimizeâ€™ attribute.
  
   -- Common Target Hook: void TARGET_OPTION_INIT_STRUCT (struct
            gcc_options *OPTS)
*************** Here are run-time target specifications.
*** 34333,34339 ****
       subtargets during compilation.  For example, the MIPS target has
       one subtarget for the traditional MIPS architecture and another for
       MIPS16.  Source code can switch between these two subarchitectures
!      using the 'mips16' and 'nomips16' attributes.
  
       Such subtargets can differ in things like the set of available
       registers, the set of available instructions, the costs of various
--- 34337,34343 ----
       subtargets during compilation.  For example, the MIPS target has
       one subtarget for the traditional MIPS architecture and another for
       MIPS16.  Source code can switch between these two subarchitectures
!      using the â€˜mips16â€™ and â€˜nomips16â€™ attributes.
  
       Such subtargets can differ in things like the set of available
       registers, the set of available instructions, the costs of various
*************** Here are run-time target specifications.
*** 34342,34348 ****
       subtarget takes a significant amount of time.  The compiler
       therefore provides a facility for maintaining several versions of
       the global variables and quickly switching between them; see
!      'target-globals.h' for details.
  
       Define this macro to 1 if your target needs this facility.  The
       default is 0.
--- 34346,34352 ----
       subtarget takes a significant amount of time.  The compiler
       therefore provides a facility for maintaining several versions of
       the global variables and quickly switching between them; see
!      â€˜target-globals.hâ€™ for details.
  
       Define this macro to 1 if your target needs this facility.  The
       default is 0.
*************** Here are run-time target specifications.
*** 34351,34358 ****
            (void)
       Returns true if the target supports IEEE 754 floating-point
       exceptions and rounding modes, false otherwise.  This is intended
!      to relate to the 'float' and 'double' types, but not necessarily
!      'long double'.  By default, returns true if the 'adddf3'
       instruction pattern is available and false otherwise, on the
       assumption that hardware floating point supports exceptions and
       rounding modes but software floating point does not.
--- 34355,34362 ----
            (void)
       Returns true if the target supports IEEE 754 floating-point
       exceptions and rounding modes, false otherwise.  This is intended
!      to relate to the â€˜floatâ€™ and â€˜doubleâ€™ types, but not necessarily
!      â€˜long doubleâ€™.  By default, returns true if the â€˜adddf3â€™
       instruction pattern is available and false otherwise, on the
       assumption that hardware floating point supports exceptions and
       rounding modes but software floating point does not.
*************** using statics to store the information i
*** 34369,34395 ****
  nested functions, so you can be halfway through encoding one function
  when another one comes along.
  
!  GCC defines a data structure called 'struct function' which contains
  all of the data specific to an individual function.  This structure
! contains a field called 'machine' whose type is 'struct machine_function
! *', which can be used by targets to point to their own specific data.
  
   If a target needs per-function specific data it should define the type
! 'struct machine_function' and also the macro 'INIT_EXPANDERS'.  This
  macro should be used to initialize the function pointer
! 'init_machine_status'.  This pointer is explained below.
  
   One typical use of per-function, target specific data is to create an
  RTX to hold the register containing the function's return address.  This
! RTX can then be used to implement the '__builtin_return_address'
  function, for level 0.
  
   Note--earlier implementations of GCC used a single data area to hold
  all of the per-function information.  Thus when processing of a nested
  function began the old per-function data had to be pushed onto a stack,
  and when the processing was finished, it had to be popped off the stack.
! GCC used to provide function pointers called 'save_machine_status' and
! 'restore_machine_status' to handle the saving and restoring of the
  target specific information.  Since the single data area approach is no
  longer used, these pointers are no longer supported.
  
--- 34373,34399 ----
  nested functions, so you can be halfway through encoding one function
  when another one comes along.
  
!  GCC defines a data structure called â€˜struct functionâ€™ which contains
  all of the data specific to an individual function.  This structure
! contains a field called â€˜machineâ€™ whose type is â€˜struct machine_function
! *â€™, which can be used by targets to point to their own specific data.
  
   If a target needs per-function specific data it should define the type
! â€˜struct machine_functionâ€™ and also the macro â€˜INIT_EXPANDERSâ€™.  This
  macro should be used to initialize the function pointer
! â€˜init_machine_statusâ€™.  This pointer is explained below.
  
   One typical use of per-function, target specific data is to create an
  RTX to hold the register containing the function's return address.  This
! RTX can then be used to implement the â€˜__builtin_return_addressâ€™
  function, for level 0.
  
   Note--earlier implementations of GCC used a single data area to hold
  all of the per-function information.  Thus when processing of a nested
  function began the old per-function data had to be pushed onto a stack,
  and when the processing was finished, it had to be popped off the stack.
! GCC used to provide function pointers called â€˜save_machine_statusâ€™ and
! â€˜restore_machine_statusâ€™ to handle the saving and restoring of the
  target specific information.  Since the single data area approach is no
  longer used, these pointers are no longer supported.
  
*************** longer used, these pointers are no longe
*** 34397,34412 ****
       Macro called to initialize any target specific information.  This
       macro is called once per function, before generation of any RTL has
       begun.  The intention of this macro is to allow the initialization
!      of the function pointer 'init_machine_status'.
  
   -- Variable: void (*)(struct function *) init_machine_status
!      If this function pointer is non-'NULL' it will be called once per
       function, before function compilation starts, in order to allow the
!      target to perform any target specific initialization of the 'struct
!      function' structure.  It is intended that this would be used to
!      initialize the 'machine' of that structure.
  
!      'struct machine_function' structures are expected to be freed by
       GC.  Generally, any memory that they reference must be allocated by
       using GC allocation, including the structure itself.
  
--- 34401,34416 ----
       Macro called to initialize any target specific information.  This
       macro is called once per function, before generation of any RTL has
       begun.  The intention of this macro is to allow the initialization
!      of the function pointer â€˜init_machine_statusâ€™.
  
   -- Variable: void (*)(struct function *) init_machine_status
!      If this function pointer is non-â€˜NULLâ€™ it will be called once per
       function, before function compilation starts, in order to allow the
!      target to perform any target specific initialization of the â€˜struct
!      functionâ€™ structure.  It is intended that this would be used to
!      initialize the â€˜machineâ€™ of that structure.
  
!      â€˜struct machine_functionâ€™ structures are expected to be freed by
       GC.  Generally, any memory that they reference must be allocated by
       using GC allocation, including the structure itself.
  
*************** File: gccint.info,  Node: Storage Layout
*** 34418,34424 ****
  
  Note that the definitions of the macros in this table which are sizes or
  alignments measured in bits do not need to be constant.  They can be C
! expressions that refer to static variables, such as the 'target_flags'.
  *Note Run-time Target::.
  
   -- Macro: BITS_BIG_ENDIAN
--- 34422,34428 ----
  
  Note that the definitions of the macros in this table which are sizes or
  alignments measured in bits do not need to be constant.  They can be C
! expressions that refer to static variables, such as the â€˜target_flagsâ€™.
  *Note Run-time Target::.
  
   -- Macro: BITS_BIG_ENDIAN
*************** expressions that refer to static variabl
*** 34431,34437 ****
       constant.
  
       This macro does not affect the way structure fields are packed into
!      bytes or words; that is controlled by 'BYTES_BIG_ENDIAN'.
  
   -- Macro: BYTES_BIG_ENDIAN
       Define this macro to have the value 1 if the most significant byte
--- 34435,34441 ----
       constant.
  
       This macro does not affect the way structure fields are packed into
!      bytes or words; that is controlled by â€˜BYTES_BIG_ENDIANâ€™.
  
   -- Macro: BYTES_BIG_ENDIAN
       Define this macro to have the value 1 if the most significant byte
*************** expressions that refer to static variabl
*** 34441,34447 ****
   -- Macro: WORDS_BIG_ENDIAN
       Define this macro to have the value 1 if, in a multiword object,
       the most significant word has the lowest number.  This applies to
!      both memory locations and registers; see 'REG_WORDS_BIG_ENDIAN' if
       the order of words in memory is not the same as the order in
       registers.  This macro need not be a constant.
  
--- 34445,34451 ----
   -- Macro: WORDS_BIG_ENDIAN
       Define this macro to have the value 1 if, in a multiword object,
       the most significant word has the lowest number.  This applies to
!      both memory locations and registers; see â€˜REG_WORDS_BIG_ENDIANâ€™ if
       the order of words in memory is not the same as the order in
       registers.  This macro need not be a constant.
  
*************** expressions that refer to static variabl
*** 34449,34459 ****
       On some machines, the order of words in a multiword object differs
       between registers in memory.  In such a situation, define this
       macro to describe the order of words in a register.  The macro
!      'WORDS_BIG_ENDIAN' controls the order of words in memory.
  
   -- Macro: FLOAT_WORDS_BIG_ENDIAN
!      Define this macro to have the value 1 if 'DFmode', 'XFmode' or
!      'TFmode' floating point numbers are stored in memory with the word
       containing the sign bit at the lowest address; otherwise define it
       to have the value 0.  This macro need not be a constant.
  
--- 34453,34463 ----
       On some machines, the order of words in a multiword object differs
       between registers in memory.  In such a situation, define this
       macro to describe the order of words in a register.  The macro
!      â€˜WORDS_BIG_ENDIANâ€™ controls the order of words in memory.
  
   -- Macro: FLOAT_WORDS_BIG_ENDIAN
!      Define this macro to have the value 1 if â€˜DFmodeâ€™, â€˜XFmodeâ€™ or
!      â€˜TFmodeâ€™ floating point numbers are stored in memory with the word
       containing the sign bit at the lowest address; otherwise define it
       to have the value 0.  This macro need not be a constant.
  
*************** expressions that refer to static variabl
*** 34462,34473 ****
  
   -- Macro: BITS_PER_WORD
       Number of bits in a word.  If you do not define this macro, the
!      default is 'BITS_PER_UNIT * UNITS_PER_WORD'.
  
   -- Macro: MAX_BITS_PER_WORD
       Maximum number of bits in a word.  If this is undefined, the
!      default is 'BITS_PER_WORD'.  Otherwise, it is the constant value
!      that is the largest value that 'BITS_PER_WORD' can have at
       run-time.
  
   -- Macro: UNITS_PER_WORD
--- 34466,34477 ----
  
   -- Macro: BITS_PER_WORD
       Number of bits in a word.  If you do not define this macro, the
!      default is â€˜BITS_PER_UNIT * UNITS_PER_WORDâ€™.
  
   -- Macro: MAX_BITS_PER_WORD
       Maximum number of bits in a word.  If this is undefined, the
!      default is â€˜BITS_PER_WORDâ€™.  Otherwise, it is the constant value
!      that is the largest value that â€˜BITS_PER_WORDâ€™ can have at
       run-time.
  
   -- Macro: UNITS_PER_WORD
*************** expressions that refer to static variabl
*** 34476,34501 ****
  
   -- Macro: MIN_UNITS_PER_WORD
       Minimum number of units in a word.  If this is undefined, the
!      default is 'UNITS_PER_WORD'.  Otherwise, it is the constant value
!      that is the smallest value that 'UNITS_PER_WORD' can have at
       run-time.
  
   -- Macro: POINTER_SIZE
       Width of a pointer, in bits.  You must specify a value no wider
!      than the width of 'Pmode'.  If it is not equal to the width of
!      'Pmode', you must define 'POINTERS_EXTEND_UNSIGNED'.  If you do not
!      specify a value the default is 'BITS_PER_WORD'.
  
   -- Macro: POINTERS_EXTEND_UNSIGNED
       A C expression that determines how pointers should be extended from
!      'ptr_mode' to either 'Pmode' or 'word_mode'.  It is greater than
       zero if pointers should be zero-extended, zero if they should be
       sign-extended, and negative if some other sort of conversion is
       needed.  In the last case, the extension is done by the target's
!      'ptr_extend' instruction.
  
!      You need not define this macro if the 'ptr_mode', 'Pmode' and
!      'word_mode' are all the same width.
  
   -- Macro: PROMOTE_MODE (M, UNSIGNEDP, TYPE)
       A macro to update M and UNSIGNEDP when an object whose type is TYPE
--- 34480,34505 ----
  
   -- Macro: MIN_UNITS_PER_WORD
       Minimum number of units in a word.  If this is undefined, the
!      default is â€˜UNITS_PER_WORDâ€™.  Otherwise, it is the constant value
!      that is the smallest value that â€˜UNITS_PER_WORDâ€™ can have at
       run-time.
  
   -- Macro: POINTER_SIZE
       Width of a pointer, in bits.  You must specify a value no wider
!      than the width of â€˜Pmodeâ€™.  If it is not equal to the width of
!      â€˜Pmodeâ€™, you must define â€˜POINTERS_EXTEND_UNSIGNEDâ€™.  If you do not
!      specify a value the default is â€˜BITS_PER_WORDâ€™.
  
   -- Macro: POINTERS_EXTEND_UNSIGNED
       A C expression that determines how pointers should be extended from
!      â€˜ptr_modeâ€™ to either â€˜Pmodeâ€™ or â€˜word_modeâ€™.  It is greater than
       zero if pointers should be zero-extended, zero if they should be
       sign-extended, and negative if some other sort of conversion is
       needed.  In the last case, the extension is done by the target's
!      â€˜ptr_extendâ€™ instruction.
  
!      You need not define this macro if the â€˜ptr_modeâ€™, â€˜Pmodeâ€™ and
!      â€˜word_modeâ€™ are all the same width.
  
   -- Macro: PROMOTE_MODE (M, UNSIGNEDP, TYPE)
       A macro to update M and UNSIGNEDP when an object whose type is TYPE
*************** expressions that refer to static variabl
*** 34503,34510 ****
       a register.  This macro is only called when TYPE is a scalar type.
  
       On most RISC machines, which only have operations that operate on a
!      full register, define this macro to set M to 'word_mode' if M is an
!      integer mode narrower than 'BITS_PER_WORD'.  In most cases, only
       integer modes should be widened because wider-precision
       floating-point operations are usually more expensive than their
       narrower counterparts.
--- 34507,34514 ----
       a register.  This macro is only called when TYPE is a scalar type.
  
       On most RISC machines, which only have operations that operate on a
!      full register, define this macro to set M to â€˜word_modeâ€™ if M is an
!      integer mode narrower than â€˜BITS_PER_WORDâ€™.  In most cases, only
       integer modes should be widened because wider-precision
       floating-point operations are usually more expensive than their
       narrower counterparts.
*************** expressions that refer to static variabl
*** 34522,34591 ****
   -- Target Hook: enum flt_eval_method TARGET_C_EXCESS_PRECISION (enum
            excess_precision_type TYPE)
       Return a value, with the same meaning as the C99 macro
!      'FLT_EVAL_METHOD' that describes which excess precision should be
!      applied.  TYPE is either 'EXCESS_PRECISION_TYPE_IMPLICIT',
!      'EXCESS_PRECISION_TYPE_FAST', 'EXCESS_PRECISION_TYPE_STANDARD', or
!      'EXCESS_PRECISION_TYPE_FLOAT16'.  For
!      'EXCESS_PRECISION_TYPE_IMPLICIT', the target should return which
       precision and range operations will be implictly evaluated in
       regardless of the excess precision explicitly added.  For
!      'EXCESS_PRECISION_TYPE_STANDARD', 'EXCESS_PRECISION_TYPE_FLOAT16',
!      and 'EXCESS_PRECISION_TYPE_FAST', the target should return the
       explicit excess precision that should be added depending on the
!      value set for '-fexcess-precision=[standard|fast|16]'.  Note that
       unpredictable explicit excess precision does not make sense, so a
!      target should never return 'FLT_EVAL_METHOD_UNPREDICTABLE' when
!      TYPE is 'EXCESS_PRECISION_TYPE_STANDARD',
!      'EXCESS_PRECISION_TYPE_FLOAT16' or 'EXCESS_PRECISION_TYPE_FAST'.
   Return a value, with the same meaning as the C99 macro
! 'FLT_EVAL_METHOD' that describes which excess precision should be
  applied.
  
   -- Target Hook: bool TARGET_C_BITINT_TYPE_INFO (int N, struct
            bitint_info *INFO)
!      This target hook returns true if '_BitInt(N)' is supported and
!      provides details on it.  '_BitInt(N)' is to be represented as
!      series of 'info->abi_limb_mode' 'CEIL (N, GET_MODE_PRECISION
!      (info->abi_limb_mode))' limbs, ordered from least significant to
!      most significant if '!info->big_endian', otherwise from most
!      significant to least significant.  If 'info->extended' is false,
       the bits above or equal to N are undefined when stored in a
       register or memory, otherwise they are zero or sign extended
!      depending on if it is 'unsigned _BitInt(N)' or one of '_BitInt(N)'
!      or 'signed _BitInt(N)'.  Alignment of the type is
!      'GET_MODE_ALIGNMENT (info->limb_mode)'.
  
   -- Target Hook: machine_mode TARGET_C_MODE_FOR_FLOATING_TYPE (enum
            tree_index TI)
       Return machine mode for a C floating point type which is indicated
!      by a given 'enum tree_index' TI, TI should be 'TI_FLOAT_TYPE',
!      'TI_DOUBLE_TYPE' or 'TI_LONG_DOUBLE_TYPE'.  The default
!      implementation returns 'SFmode' for 'TI_FLOAT_TYPE', and 'DFmode'
!      for 'TI_DOUBLE_TYPE' or 'TI_LONG_DOUBLE_TYPE'.
  
   -- Target Hook: machine_mode TARGET_PROMOTE_FUNCTION_MODE (const_tree
            TYPE, machine_mode MODE, int *PUNSIGNEDP, const_tree FUNTYPE,
            int FOR_RETURN)
!      Like 'PROMOTE_MODE', but it is applied to outgoing function
       arguments or function return values.  The target hook should return
!      the new mode and possibly change '*PUNSIGNEDP' if the promotion
       should change signedness.  This function is called only for scalar
       _or pointer_ types.
  
       FOR_RETURN allows to distinguish the promotion of arguments and
!      return values.  If it is '1', a return value is being promoted and
!      'TARGET_FUNCTION_VALUE' must perform the same promotions done here.
!      If it is '2', the returned mode should be that of the register in
       which an incoming parameter is copied, or the outgoing result is
       computed; then the hook should return the same mode as
!      'promote_mode', though the signedness may be different.
  
       TYPE can be NULL when promoting function arguments of libcalls.
  
       The default is to not promote arguments and return values.  You can
       also define the hook to
!      'default_promote_function_mode_always_promote' if you would like to
!      apply the same rules given by 'PROMOTE_MODE'.
  
   -- Macro: PARM_BOUNDARY
       Normal alignment required for function parameters on the stack, in
--- 34526,34595 ----
   -- Target Hook: enum flt_eval_method TARGET_C_EXCESS_PRECISION (enum
            excess_precision_type TYPE)
       Return a value, with the same meaning as the C99 macro
!      â€˜FLT_EVAL_METHODâ€™ that describes which excess precision should be
!      applied.  TYPE is either â€˜EXCESS_PRECISION_TYPE_IMPLICITâ€™,
!      â€˜EXCESS_PRECISION_TYPE_FASTâ€™, â€˜EXCESS_PRECISION_TYPE_STANDARDâ€™, or
!      â€˜EXCESS_PRECISION_TYPE_FLOAT16â€™.  For
!      â€˜EXCESS_PRECISION_TYPE_IMPLICITâ€™, the target should return which
       precision and range operations will be implictly evaluated in
       regardless of the excess precision explicitly added.  For
!      â€˜EXCESS_PRECISION_TYPE_STANDARDâ€™, â€˜EXCESS_PRECISION_TYPE_FLOAT16â€™,
!      and â€˜EXCESS_PRECISION_TYPE_FASTâ€™, the target should return the
       explicit excess precision that should be added depending on the
!      value set for â€˜-fexcess-precision=[standard|fast|16]â€™.  Note that
       unpredictable explicit excess precision does not make sense, so a
!      target should never return â€˜FLT_EVAL_METHOD_UNPREDICTABLEâ€™ when
!      TYPE is â€˜EXCESS_PRECISION_TYPE_STANDARDâ€™,
!      â€˜EXCESS_PRECISION_TYPE_FLOAT16â€™ or â€˜EXCESS_PRECISION_TYPE_FASTâ€™.
   Return a value, with the same meaning as the C99 macro
! â€˜FLT_EVAL_METHODâ€™ that describes which excess precision should be
  applied.
  
   -- Target Hook: bool TARGET_C_BITINT_TYPE_INFO (int N, struct
            bitint_info *INFO)
!      This target hook returns true if â€˜_BitInt(N)â€™ is supported and
!      provides details on it.  â€˜_BitInt(N)â€™ is to be represented as
!      series of â€˜info->abi_limb_modeâ€™ â€˜CEIL (N, GET_MODE_PRECISION
!      (info->abi_limb_mode))â€™ limbs, ordered from least significant to
!      most significant if â€˜!info->big_endianâ€™, otherwise from most
!      significant to least significant.  If â€˜info->extendedâ€™ is false,
       the bits above or equal to N are undefined when stored in a
       register or memory, otherwise they are zero or sign extended
!      depending on if it is â€˜unsigned _BitInt(N)â€™ or one of â€˜_BitInt(N)â€™
!      or â€˜signed _BitInt(N)â€™.  Alignment of the type is
!      â€˜GET_MODE_ALIGNMENT (info->limb_mode)â€™.
  
   -- Target Hook: machine_mode TARGET_C_MODE_FOR_FLOATING_TYPE (enum
            tree_index TI)
       Return machine mode for a C floating point type which is indicated
!      by a given â€˜enum tree_indexâ€™ TI, TI should be â€˜TI_FLOAT_TYPEâ€™,
!      â€˜TI_DOUBLE_TYPEâ€™ or â€˜TI_LONG_DOUBLE_TYPEâ€™.  The default
!      implementation returns â€˜SFmodeâ€™ for â€˜TI_FLOAT_TYPEâ€™, and â€˜DFmodeâ€™
!      for â€˜TI_DOUBLE_TYPEâ€™ or â€˜TI_LONG_DOUBLE_TYPEâ€™.
  
   -- Target Hook: machine_mode TARGET_PROMOTE_FUNCTION_MODE (const_tree
            TYPE, machine_mode MODE, int *PUNSIGNEDP, const_tree FUNTYPE,
            int FOR_RETURN)
!      Like â€˜PROMOTE_MODEâ€™, but it is applied to outgoing function
       arguments or function return values.  The target hook should return
!      the new mode and possibly change â€˜*PUNSIGNEDPâ€™ if the promotion
       should change signedness.  This function is called only for scalar
       _or pointer_ types.
  
       FOR_RETURN allows to distinguish the promotion of arguments and
!      return values.  If it is â€˜1â€™, a return value is being promoted and
!      â€˜TARGET_FUNCTION_VALUEâ€™ must perform the same promotions done here.
!      If it is â€˜2â€™, the returned mode should be that of the register in
       which an incoming parameter is copied, or the outgoing result is
       computed; then the hook should return the same mode as
!      â€˜promote_modeâ€™, though the signedness may be different.
  
       TYPE can be NULL when promoting function arguments of libcalls.
  
       The default is to not promote arguments and return values.  You can
       also define the hook to
!      â€˜default_promote_function_mode_always_promoteâ€™ if you would like to
!      apply the same rules given by â€˜PROMOTE_MODEâ€™.
  
   -- Macro: PARM_BOUNDARY
       Normal alignment required for function parameters on the stack, in
*************** applied.
*** 34597,34617 ****
       Define this macro to the minimum alignment enforced by hardware for
       the stack pointer on this machine.  The definition is a C
       expression for the desired alignment (measured in bits).  This
!      value is used as a default if 'PREFERRED_STACK_BOUNDARY' is not
       defined.  On most machines, this should be the same as
!      'PARM_BOUNDARY'.
  
   -- Macro: PREFERRED_STACK_BOUNDARY
       Define this macro if you wish to preserve a certain alignment for
       the stack pointer, greater than what the hardware enforces.  The
       definition is a C expression for the desired alignment (measured in
       bits).  This macro must evaluate to a value equal to or larger than
!      'STACK_BOUNDARY'.
  
   -- Macro: INCOMING_STACK_BOUNDARY
       Define this macro if the incoming stack boundary may be different
!      from 'PREFERRED_STACK_BOUNDARY'.  This macro must evaluate to a
!      value equal to or larger than 'STACK_BOUNDARY'.
  
   -- Macro: FUNCTION_BOUNDARY
       Alignment required for a function entry point, in bits.
--- 34601,34621 ----
       Define this macro to the minimum alignment enforced by hardware for
       the stack pointer on this machine.  The definition is a C
       expression for the desired alignment (measured in bits).  This
!      value is used as a default if â€˜PREFERRED_STACK_BOUNDARYâ€™ is not
       defined.  On most machines, this should be the same as
!      â€˜PARM_BOUNDARYâ€™.
  
   -- Macro: PREFERRED_STACK_BOUNDARY
       Define this macro if you wish to preserve a certain alignment for
       the stack pointer, greater than what the hardware enforces.  The
       definition is a C expression for the desired alignment (measured in
       bits).  This macro must evaluate to a value equal to or larger than
!      â€˜STACK_BOUNDARYâ€™.
  
   -- Macro: INCOMING_STACK_BOUNDARY
       Define this macro if the incoming stack boundary may be different
!      from â€˜PREFERRED_STACK_BOUNDARYâ€™.  This macro must evaluate to a
!      value equal to or larger than â€˜STACK_BOUNDARYâ€™.
  
   -- Macro: FUNCTION_BOUNDARY
       Alignment required for a function entry point, in bits.
*************** applied.
*** 34625,34661 ****
   -- Target Hook: HOST_WIDE_INT TARGET_ABSOLUTE_BIGGEST_ALIGNMENT
       If defined, this target hook specifies the absolute biggest
       alignment that a type or variable can have on this machine,
!      otherwise, 'BIGGEST_ALIGNMENT' is used.
  
   -- Macro: MALLOC_ABI_ALIGNMENT
       Alignment, in bits, a C conformant malloc implementation has to
!      provide.  If not defined, the default value is 'BITS_PER_WORD'.
  
   -- Macro: ATTRIBUTE_ALIGNED_VALUE
!      Alignment used by the '__attribute__ ((aligned))' construct.  If
!      not defined, the default value is 'BIGGEST_ALIGNMENT'.
  
   -- Macro: MINIMUM_ATOMIC_ALIGNMENT
       If defined, the smallest alignment, in bits, that can be given to
       an object that can be referenced in one operation, without
!      disturbing any nearby object.  Normally, this is 'BITS_PER_UNIT',
       but may be larger on machines that don't have byte or half-word
       store operations.
  
   -- Macro: BIGGEST_FIELD_ALIGNMENT
       Biggest alignment that any structure or union field can require on
       this machine, in bits.  If defined, this overrides
!      'BIGGEST_ALIGNMENT' for structure and union fields only, unless the
!      field alignment has been set by the '__attribute__ ((aligned (N)))'
       construct.
  
   -- Macro: ADJUST_FIELD_ALIGN (FIELD, TYPE, COMPUTED)
       An expression for the alignment of a structure field FIELD of type
       TYPE if the alignment computed in the usual way (including applying
!      of 'BIGGEST_ALIGNMENT' and 'BIGGEST_FIELD_ALIGNMENT' to the
       alignment) is COMPUTED.  It overrides alignment only if the field
!      alignment has not been set by the '__attribute__ ((aligned (N)))'
!      construct.  Note that FIELD may be 'NULL_TREE' in case we just
       query for the minimum alignment of a field of type TYPE in
       structure context.
  
--- 34629,34665 ----
   -- Target Hook: HOST_WIDE_INT TARGET_ABSOLUTE_BIGGEST_ALIGNMENT
       If defined, this target hook specifies the absolute biggest
       alignment that a type or variable can have on this machine,
!      otherwise, â€˜BIGGEST_ALIGNMENTâ€™ is used.
  
   -- Macro: MALLOC_ABI_ALIGNMENT
       Alignment, in bits, a C conformant malloc implementation has to
!      provide.  If not defined, the default value is â€˜BITS_PER_WORDâ€™.
  
   -- Macro: ATTRIBUTE_ALIGNED_VALUE
!      Alignment used by the â€˜__attribute__ ((aligned))â€™ construct.  If
!      not defined, the default value is â€˜BIGGEST_ALIGNMENTâ€™.
  
   -- Macro: MINIMUM_ATOMIC_ALIGNMENT
       If defined, the smallest alignment, in bits, that can be given to
       an object that can be referenced in one operation, without
!      disturbing any nearby object.  Normally, this is â€˜BITS_PER_UNITâ€™,
       but may be larger on machines that don't have byte or half-word
       store operations.
  
   -- Macro: BIGGEST_FIELD_ALIGNMENT
       Biggest alignment that any structure or union field can require on
       this machine, in bits.  If defined, this overrides
!      â€˜BIGGEST_ALIGNMENTâ€™ for structure and union fields only, unless the
!      field alignment has been set by the â€˜__attribute__ ((aligned (N)))â€™
       construct.
  
   -- Macro: ADJUST_FIELD_ALIGN (FIELD, TYPE, COMPUTED)
       An expression for the alignment of a structure field FIELD of type
       TYPE if the alignment computed in the usual way (including applying
!      of â€˜BIGGEST_ALIGNMENTâ€™ and â€˜BIGGEST_FIELD_ALIGNMENTâ€™ to the
       alignment) is COMPUTED.  It overrides alignment only if the field
!      alignment has not been set by the â€˜__attribute__ ((aligned (N)))â€™
!      construct.  Note that FIELD may be â€˜NULL_TREEâ€™ in case we just
       query for the minimum alignment of a field of type TYPE in
       structure context.
  
*************** applied.
*** 34663,34695 ****
       Biggest stack alignment guaranteed by the backend.  Use this macro
       to specify the maximum alignment of a variable on stack.
  
!      If not defined, the default value is 'STACK_BOUNDARY'.
  
   -- Macro: MAX_OFILE_ALIGNMENT
       Biggest alignment supported by the object file format of this
       machine.  Use this macro to limit the alignment which can be
!      specified using the '__attribute__ ((aligned (N)))' construct for
       functions and objects with static storage duration.  The alignment
       of automatic objects may exceed the object file format maximum up
       to the maximum supported by GCC. If not defined, the default value
!      is 'BIGGEST_ALIGNMENT'.
  
!      On systems that use ELF, the default (in 'config/elfos.h') is the
       largest supported 32-bit ELF section alignment representable on a
!      32-bit host e.g. '(((uint64_t) 1 << 28) * 8)'.  On 32-bit ELF the
!      largest supported section alignment in bits is '(0x80000000 * 8)',
       but this is not representable on 32-bit hosts.
  
   -- Target Hook: void TARGET_LOWER_LOCAL_DECL_ALIGNMENT (tree DECL)
       Define this hook to lower alignment of local, parm or result decl
!      '(DECL)'.
  
   -- Target Hook: HOST_WIDE_INT TARGET_STATIC_RTX_ALIGNMENT (machine_mode
            MODE)
       This hook returns the preferred alignment in bits for a
       statically-allocated rtx, such as a constant pool entry.  MODE is
       the mode of the rtx.  The default implementation returns
!      'GET_MODE_ALIGNMENT (MODE)'.
  
   -- Macro: DATA_ALIGNMENT (TYPE, BASIC-ALIGN)
       If defined, a C expression to compute the alignment for a variable
--- 34667,34699 ----
       Biggest stack alignment guaranteed by the backend.  Use this macro
       to specify the maximum alignment of a variable on stack.
  
!      If not defined, the default value is â€˜STACK_BOUNDARYâ€™.
  
   -- Macro: MAX_OFILE_ALIGNMENT
       Biggest alignment supported by the object file format of this
       machine.  Use this macro to limit the alignment which can be
!      specified using the â€˜__attribute__ ((aligned (N)))â€™ construct for
       functions and objects with static storage duration.  The alignment
       of automatic objects may exceed the object file format maximum up
       to the maximum supported by GCC. If not defined, the default value
!      is â€˜BIGGEST_ALIGNMENTâ€™.
  
!      On systems that use ELF, the default (in â€˜config/elfos.hâ€™) is the
       largest supported 32-bit ELF section alignment representable on a
!      32-bit host e.g. â€˜(((uint64_t) 1 << 28) * 8)â€™.  On 32-bit ELF the
!      largest supported section alignment in bits is â€˜(0x80000000 * 8)â€™,
       but this is not representable on 32-bit hosts.
  
   -- Target Hook: void TARGET_LOWER_LOCAL_DECL_ALIGNMENT (tree DECL)
       Define this hook to lower alignment of local, parm or result decl
!      â€˜(DECL)â€™.
  
   -- Target Hook: HOST_WIDE_INT TARGET_STATIC_RTX_ALIGNMENT (machine_mode
            MODE)
       This hook returns the preferred alignment in bits for a
       statically-allocated rtx, such as a constant pool entry.  MODE is
       the mode of the rtx.  The default implementation returns
!      â€˜GET_MODE_ALIGNMENT (MODE)â€™.
  
   -- Macro: DATA_ALIGNMENT (TYPE, BASIC-ALIGN)
       If defined, a C expression to compute the alignment for a variable
*************** applied.
*** 34701,34711 ****
  
       One use of this macro is to increase alignment of medium-size data
       to make it all fit in fewer cache lines.  Another is to cause
!      character arrays to be word-aligned so that 'strcpy' calls that
       copy constants to character arrays can be done inline.
  
   -- Macro: DATA_ABI_ALIGNMENT (TYPE, BASIC-ALIGN)
!      Similar to 'DATA_ALIGNMENT', but for the cases where the ABI
       mandates some alignment increase, instead of optimization only
       purposes.  E.g. AMD x86-64 psABI says that variables with array
       type larger than 15 bytes must be aligned to 16 byte boundaries.
--- 34705,34715 ----
  
       One use of this macro is to increase alignment of medium-size data
       to make it all fit in fewer cache lines.  Another is to cause
!      character arrays to be word-aligned so that â€˜strcpyâ€™ calls that
       copy constants to character arrays can be done inline.
  
   -- Macro: DATA_ABI_ALIGNMENT (TYPE, BASIC-ALIGN)
!      Similar to â€˜DATA_ALIGNMENTâ€™, but for the cases where the ABI
       mandates some alignment increase, instead of optimization only
       purposes.  E.g. AMD x86-64 psABI says that variables with array
       type larger than 15 bytes must be aligned to 16 byte boundaries.
*************** applied.
*** 34721,34729 ****
       The default definition just returns BASIC_ALIGN.
  
       The typical use of this hook is to increase alignment for string
!      constants to be word aligned so that 'strcpy' calls that copy
       constants can be done inline.  The function
!      'constant_alignment_word_strings' provides such a definition.
  
   -- Macro: LOCAL_ALIGNMENT (TYPE, BASIC-ALIGN)
       If defined, a C expression to compute the alignment for a variable
--- 34725,34733 ----
       The default definition just returns BASIC_ALIGN.
  
       The typical use of this hook is to increase alignment for string
!      constants to be word aligned so that â€˜strcpyâ€™ calls that copy
       constants can be done inline.  The function
!      â€˜constant_alignment_word_stringsâ€™ provides such a definition.
  
   -- Macro: LOCAL_ALIGNMENT (TYPE, BASIC-ALIGN)
       If defined, a C expression to compute the alignment for a variable
*************** applied.
*** 34754,34760 ****
       the slot.
  
       If this macro is not defined, then BASIC-ALIGN is used when TYPE is
!      'NULL'.  Otherwise, 'LOCAL_ALIGNMENT' will be used.
  
       This macro is to set alignment of stack slot to the maximum
       alignment of all possible modes which the slot may have.
--- 34758,34764 ----
       the slot.
  
       If this macro is not defined, then BASIC-ALIGN is used when TYPE is
!      â€˜NULLâ€™.  Otherwise, â€˜LOCAL_ALIGNMENTâ€™ will be used.
  
       This macro is to set alignment of stack slot to the maximum
       alignment of all possible modes which the slot may have.
*************** applied.
*** 34766,34773 ****
       If defined, a C expression to compute the alignment for a local
       variable DECL.
  
!      If this macro is not defined, then 'LOCAL_ALIGNMENT (TREE_TYPE
!      (DECL), DECL_ALIGN (DECL))' is used.
  
       One use of this macro is to increase alignment of medium-size data
       to make it all fit in fewer cache lines.
--- 34770,34777 ----
       If defined, a C expression to compute the alignment for a local
       variable DECL.
  
!      If this macro is not defined, then â€˜LOCAL_ALIGNMENT (TREE_TYPE
!      (DECL), DECL_ALIGN (DECL))â€™ is used.
  
       One use of this macro is to increase alignment of medium-size data
       to make it all fit in fewer cache lines.
*************** applied.
*** 34784,34792 ****
  
   -- Macro: EMPTY_FIELD_BOUNDARY
       Alignment in bits to be given to a structure bit-field that follows
!      an empty field such as 'int : 0;'.
  
!      If 'PCC_BITFIELD_TYPE_MATTERS' is true, it overrides this macro.
  
   -- Macro: STRUCTURE_SIZE_BOUNDARY
       Number of bits which any structure or union's size must be a
--- 34788,34796 ----
  
   -- Macro: EMPTY_FIELD_BOUNDARY
       Alignment in bits to be given to a structure bit-field that follows
!      an empty field such as â€˜int : 0;â€™.
  
!      If â€˜PCC_BITFIELD_TYPE_MATTERSâ€™ is true, it overrides this macro.
  
   -- Macro: STRUCTURE_SIZE_BOUNDARY
       Number of bits which any structure or union's size must be a
*************** applied.
*** 34794,34800 ****
       multiple of this.
  
       If you do not define this macro, the default is the same as
!      'BITS_PER_UNIT'.
  
   -- Macro: STRICT_ALIGNMENT
       Define this macro to be the value 1 if instructions will fail to
--- 34798,34804 ----
       multiple of this.
  
       If you do not define this macro, the default is the same as
!      â€˜BITS_PER_UNITâ€™.
  
   -- Macro: STRICT_ALIGNMENT
       Define this macro to be the value 1 if instructions will fail to
*************** applied.
*** 34806,34820 ****
       handle alignment of bit-fields and the structures that contain
       them.
  
!      The behavior is that the type written for a named bit-field ('int',
!      'short', or other integer type) imposes an alignment for the entire
       structure, as if the structure really did contain an ordinary field
       of that type.  In addition, the bit-field is placed within the
       structure so that it would fit within such a field, not crossing a
       boundary for it.
  
       Thus, on most machines, a named bit-field whose type is written as
!      'int' would not cross a four-byte boundary, and would force
       four-byte alignment for the whole structure.  (The alignment used
       may not be four bytes; it is controlled by the other alignment
       parameters.)
--- 34810,34824 ----
       handle alignment of bit-fields and the structures that contain
       them.
  
!      The behavior is that the type written for a named bit-field (â€˜intâ€™,
!      â€˜shortâ€™, or other integer type) imposes an alignment for the entire
       structure, as if the structure really did contain an ordinary field
       of that type.  In addition, the bit-field is placed within the
       structure so that it would fit within such a field, not crossing a
       boundary for it.
  
       Thus, on most machines, a named bit-field whose type is written as
!      â€˜intâ€™ would not cross a four-byte boundary, and would force
       four-byte alignment for the whole structure.  (The alignment used
       may not be four bytes; it is controlled by the other alignment
       parameters.)
*************** applied.
*** 34827,34842 ****
  
       Note that if this macro is not defined, or its value is zero, some
       bit-fields may cross more than one alignment boundary.  The
!      compiler can support such references if there are 'insv', 'extv',
!      and 'extzv' insns that can directly reference memory.
  
       The other known way of making bit-fields work is to define
!      'STRUCTURE_SIZE_BOUNDARY' as large as 'BIGGEST_ALIGNMENT'.  Then
       every structure can be accessed with fullwords.
  
       Unless the machine has bit-field instructions or you define
!      'STRUCTURE_SIZE_BOUNDARY' that way, you must define
!      'PCC_BITFIELD_TYPE_MATTERS' to have a nonzero value.
  
       If your aim is to make GCC use the same conventions for laying out
       bit-fields as are used by another compiler, here is how to
--- 34831,34846 ----
  
       Note that if this macro is not defined, or its value is zero, some
       bit-fields may cross more than one alignment boundary.  The
!      compiler can support such references if there are â€˜insvâ€™, â€˜extvâ€™,
!      and â€˜extzvâ€™ insns that can directly reference memory.
  
       The other known way of making bit-fields work is to define
!      â€˜STRUCTURE_SIZE_BOUNDARYâ€™ as large as â€˜BIGGEST_ALIGNMENTâ€™.  Then
       every structure can be accessed with fullwords.
  
       Unless the machine has bit-field instructions or you define
!      â€˜STRUCTURE_SIZE_BOUNDARYâ€™ that way, you must define
!      â€˜PCC_BITFIELD_TYPE_MATTERSâ€™ to have a nonzero value.
  
       If your aim is to make GCC use the same conventions for laying out
       bit-fields as are used by another compiler, here is how to
*************** applied.
*** 34867,34895 ****
            }
  
       If this prints 2 and 5, then the compiler's behavior is what you
!      would get from 'PCC_BITFIELD_TYPE_MATTERS'.
  
   -- Macro: BITFIELD_NBYTES_LIMITED
!      Like 'PCC_BITFIELD_TYPE_MATTERS' except that its effect is limited
       to aligning a bit-field within the structure.
  
   -- Target Hook: bool TARGET_ALIGN_ANON_BITFIELD (void)
!      When 'PCC_BITFIELD_TYPE_MATTERS' is true this hook will determine
       whether unnamed bitfields affect the alignment of the containing
       structure.  The hook should return true if the structure should
       inherit the alignment requirements of an unnamed bitfield's type.
  
   -- Target Hook: bool TARGET_NARROW_VOLATILE_BITFIELD (void)
!      This target hook should return 'true' if accesses to volatile
       bitfields should use the narrowest mode possible.  It should return
!      'false' if these accesses should use the bitfield container type.
  
!      The default is 'false'.
  
   -- Target Hook: bool TARGET_MEMBER_TYPE_FORCES_BLK (const_tree FIELD,
            machine_mode MODE)
       Return true if a structure, union or array containing FIELD should
!      be accessed using 'BLKMODE'.
  
       If FIELD is the only field in the structure, MODE is its mode,
       otherwise MODE is VOIDmode.  MODE is provided in the case where
--- 34871,34899 ----
            }
  
       If this prints 2 and 5, then the compiler's behavior is what you
!      would get from â€˜PCC_BITFIELD_TYPE_MATTERSâ€™.
  
   -- Macro: BITFIELD_NBYTES_LIMITED
!      Like â€˜PCC_BITFIELD_TYPE_MATTERSâ€™ except that its effect is limited
       to aligning a bit-field within the structure.
  
   -- Target Hook: bool TARGET_ALIGN_ANON_BITFIELD (void)
!      When â€˜PCC_BITFIELD_TYPE_MATTERSâ€™ is true this hook will determine
       whether unnamed bitfields affect the alignment of the containing
       structure.  The hook should return true if the structure should
       inherit the alignment requirements of an unnamed bitfield's type.
  
   -- Target Hook: bool TARGET_NARROW_VOLATILE_BITFIELD (void)
!      This target hook should return â€˜trueâ€™ if accesses to volatile
       bitfields should use the narrowest mode possible.  It should return
!      â€˜falseâ€™ if these accesses should use the bitfield container type.
  
!      The default is â€˜falseâ€™.
  
   -- Target Hook: bool TARGET_MEMBER_TYPE_FORCES_BLK (const_tree FIELD,
            machine_mode MODE)
       Return true if a structure, union or array containing FIELD should
!      be accessed using â€˜BLKMODEâ€™.
  
       If FIELD is the only field in the structure, MODE is its mode,
       otherwise MODE is VOIDmode.  MODE is provided in the case where
*************** applied.
*** 34905,34958 ****
       SPECIFIED.
  
       The default is to use SPECIFIED if it is larger; otherwise, use the
!      smaller of COMPUTED and 'BIGGEST_ALIGNMENT'
  
   -- Macro: MAX_FIXED_MODE_SIZE
       An integer expression for the size in bits of the largest integer
       machine mode that should actually be used.  All integer machine
       modes of this size or smaller can be used for structures and unions
       with the appropriate sizes.  If this macro is undefined,
!      'GET_MODE_BITSIZE (DImode)' is assumed.
  
   -- Macro: STACK_SAVEAREA_MODE (SAVE_LEVEL)
!      If defined, an expression of type 'machine_mode' that specifies the
!      mode of the save area operand of a 'save_stack_LEVEL' named pattern
!      (*note Standard Names::).  SAVE_LEVEL is one of 'SAVE_BLOCK',
!      'SAVE_FUNCTION', or 'SAVE_NONLOCAL' and selects which of the three
       named patterns is having its mode specified.
  
!      You need not define this macro if it always returns 'Pmode'.  You
!      would most commonly define this macro if the 'save_stack_LEVEL'
       patterns need to support both a 32- and a 64-bit mode.
  
   -- Macro: STACK_SIZE_MODE
!      If defined, an expression of type 'machine_mode' that specifies the
!      mode of the size increment operand of an 'allocate_stack' named
       pattern (*note Standard Names::).
  
!      You need not define this macro if it always returns 'word_mode'.
!      You would most commonly define this macro if the 'allocate_stack'
       pattern needs to support both a 32- and a 64-bit mode.
  
   -- Target Hook: scalar_int_mode TARGET_LIBGCC_CMP_RETURN_MODE (void)
       This target hook should return the mode to be used for the return
       value of compare instructions expanded to libgcc calls.  If not
!      defined 'word_mode' is returned which is the right choice for a
       majority of targets.
  
   -- Target Hook: scalar_int_mode TARGET_LIBGCC_SHIFT_COUNT_MODE (void)
       This target hook should return the mode to be used for the shift
       count operand of shift instructions expanded to libgcc calls.  If
!      not defined 'word_mode' is returned which is the right choice for a
       majority of targets.
  
   -- Target Hook: scalar_int_mode TARGET_UNWIND_WORD_MODE (void)
!      Return machine mode to be used for '_Unwind_Word' type.  The
!      default is to use 'word_mode'.
  
   -- Target Hook: bool TARGET_MS_BITFIELD_LAYOUT_P (const_tree
            RECORD_TYPE)
!      This target hook returns 'true' if bit-fields in the given
       RECORD_TYPE are to be laid out following the rules of Microsoft
       Visual C/C++, namely: (i) a bit-field won't share the same storage
       unit with the previous bit-field if their underlying types have
--- 34909,34962 ----
       SPECIFIED.
  
       The default is to use SPECIFIED if it is larger; otherwise, use the
!      smaller of COMPUTED and â€˜BIGGEST_ALIGNMENTâ€™
  
   -- Macro: MAX_FIXED_MODE_SIZE
       An integer expression for the size in bits of the largest integer
       machine mode that should actually be used.  All integer machine
       modes of this size or smaller can be used for structures and unions
       with the appropriate sizes.  If this macro is undefined,
!      â€˜GET_MODE_BITSIZE (DImode)â€™ is assumed.
  
   -- Macro: STACK_SAVEAREA_MODE (SAVE_LEVEL)
!      If defined, an expression of type â€˜machine_modeâ€™ that specifies the
!      mode of the save area operand of a â€˜save_stack_LEVELâ€™ named pattern
!      (*note Standard Names::).  SAVE_LEVEL is one of â€˜SAVE_BLOCKâ€™,
!      â€˜SAVE_FUNCTIONâ€™, or â€˜SAVE_NONLOCALâ€™ and selects which of the three
       named patterns is having its mode specified.
  
!      You need not define this macro if it always returns â€˜Pmodeâ€™.  You
!      would most commonly define this macro if the â€˜save_stack_LEVELâ€™
       patterns need to support both a 32- and a 64-bit mode.
  
   -- Macro: STACK_SIZE_MODE
!      If defined, an expression of type â€˜machine_modeâ€™ that specifies the
!      mode of the size increment operand of an â€˜allocate_stackâ€™ named
       pattern (*note Standard Names::).
  
!      You need not define this macro if it always returns â€˜word_modeâ€™.
!      You would most commonly define this macro if the â€˜allocate_stackâ€™
       pattern needs to support both a 32- and a 64-bit mode.
  
   -- Target Hook: scalar_int_mode TARGET_LIBGCC_CMP_RETURN_MODE (void)
       This target hook should return the mode to be used for the return
       value of compare instructions expanded to libgcc calls.  If not
!      defined â€˜word_modeâ€™ is returned which is the right choice for a
       majority of targets.
  
   -- Target Hook: scalar_int_mode TARGET_LIBGCC_SHIFT_COUNT_MODE (void)
       This target hook should return the mode to be used for the shift
       count operand of shift instructions expanded to libgcc calls.  If
!      not defined â€˜word_modeâ€™ is returned which is the right choice for a
       majority of targets.
  
   -- Target Hook: scalar_int_mode TARGET_UNWIND_WORD_MODE (void)
!      Return machine mode to be used for â€˜_Unwind_Wordâ€™ type.  The
!      default is to use â€˜word_modeâ€™.
  
   -- Target Hook: bool TARGET_MS_BITFIELD_LAYOUT_P (const_tree
            RECORD_TYPE)
!      This target hook returns â€˜trueâ€™ if bit-fields in the given
       RECORD_TYPE are to be laid out following the rules of Microsoft
       Visual C/C++, namely: (i) a bit-field won't share the same storage
       unit with the previous bit-field if their underlying types have
*************** applied.
*** 34961,34967 ****
       bit-field; (ii) a zero-sized bit-field will affect the alignment of
       the whole enclosing structure, even if it is unnamed; except that
       (iii) a zero-sized bit-field will be disregarded unless it follows
!      another bit-field of nonzero size.  If this hook returns 'true',
       other macros that control bit-field layout are ignored.
  
       When a bit-field is inserted into a packed record, the whole size
--- 34965,34971 ----
       bit-field; (ii) a zero-sized bit-field will affect the alignment of
       the whole enclosing structure, even if it is unnamed; except that
       (iii) a zero-sized bit-field will be disregarded unless it follows
!      another bit-field of nonzero size.  If this hook returns â€˜trueâ€™,
       other macros that control bit-field layout are ignored.
  
       When a bit-field is inserted into a packed record, the whole size
*************** applied.
*** 34972,34979 ****
       of that size is allocated).  In an unpacked record, this is the
       same as using alignment, but not equivalent when packing.
  
!      If both MS bit-fields and '__attribute__((packed))' are used, the
!      latter will take precedence.  If '__attribute__((packed))' is used
       on a single field when MS bit-fields are in use, it will take
       precedence for that field, but the alignment of the rest of the
       structure may affect its placement.
--- 34976,34983 ----
       of that size is allocated).  In an unpacked record, this is the
       same as using alignment, but not equivalent when packing.
  
!      If both MS bit-fields and â€˜__attribute__((packed))â€™ are used, the
!      latter will take precedence.  If â€˜__attribute__((packed))â€™ is used
       on a single field when MS bit-fields are in use, it will take
       precedence for that field, but the alignment of the rest of the
       structure may affect its placement.
*************** applied.
*** 35003,35030 ****
       part of a C++ mangled name.  The TYPE argument is the tree
       structure representing the type to be mangled.  The hook may be
       applied to trees which are not target-specific fundamental types;
!      it should return 'NULL' for all such types, as well as arguments it
!      does not recognize.  If the return value is not 'NULL', it must
       point to a statically-allocated string constant.
  
       Target-specific fundamental types might be new fundamental types or
       qualified versions of ordinary fundamental types.  Encode new
!      fundamental types as 'u N NAME', where NAME is the name used for
       the type in source code, and N is the length of NAME in decimal.
!      Encode qualified versions of ordinary types as 'U N NAME CODE',
       where NAME is the name used for the type qualifier in source code,
       N is the length of NAME as above, and CODE is the code used to
       represent the unqualified version of this type.  (See
!      'write_builtin_type' in 'cp/mangle.cc' for the list of codes.)  In
       both cases the spaces are for clarity; do not include any spaces in
       your string.
  
       This hook is applied to types prior to typedef resolution.  If the
       mangled name for a particular type depends only on that type's main
       variant, you can perform typedef resolution yourself using
!      'TYPE_MAIN_VARIANT' before mangling.
  
!      The default version of this hook always returns 'NULL', which is
       appropriate for a target that does not define any new fundamental
       types.
  
--- 35007,35034 ----
       part of a C++ mangled name.  The TYPE argument is the tree
       structure representing the type to be mangled.  The hook may be
       applied to trees which are not target-specific fundamental types;
!      it should return â€˜NULLâ€™ for all such types, as well as arguments it
!      does not recognize.  If the return value is not â€˜NULLâ€™, it must
       point to a statically-allocated string constant.
  
       Target-specific fundamental types might be new fundamental types or
       qualified versions of ordinary fundamental types.  Encode new
!      fundamental types as â€˜u N NAMEâ€™, where NAME is the name used for
       the type in source code, and N is the length of NAME in decimal.
!      Encode qualified versions of ordinary types as â€˜U N NAME CODEâ€™,
       where NAME is the name used for the type qualifier in source code,
       N is the length of NAME as above, and CODE is the code used to
       represent the unqualified version of this type.  (See
!      â€˜write_builtin_typeâ€™ in â€˜cp/mangle.ccâ€™ for the list of codes.)  In
       both cases the spaces are for clarity; do not include any spaces in
       your string.
  
       This hook is applied to types prior to typedef resolution.  If the
       mangled name for a particular type depends only on that type's main
       variant, you can perform typedef resolution yourself using
!      â€˜TYPE_MAIN_VARIANTâ€™ before mangling.
  
!      The default version of this hook always returns â€˜NULLâ€™, which is
       appropriate for a target that does not define any new fundamental
       types.
  
*************** applied.
*** 35035,35041 ****
       regardless of ISA flags the library is compiled with.  This hook
       allows creating tinfo symbols even for those cases, by temporarily
       creating each corresponding fundamental type trees, calling the
!      CALLBACK function on it and setting the type back to 'nullptr'.
  
  
  File: gccint.info,  Node: Type Layout,  Next: Registers,  Prev: Storage Layout,  Up: Target Macros
--- 35039,35045 ----
       regardless of ISA flags the library is compiled with.  This hook
       allows creating tinfo symbols even for those cases, by temporarily
       creating each corresponding fundamental type trees, calling the
!      CALLBACK function on it and setting the type back to â€˜nullptrâ€™.
  
  
  File: gccint.info,  Node: Type Layout,  Next: Registers,  Prev: Storage Layout,  Up: Target Macros
*************** the previous section, these apply to spe
*** 35049,35237 ****
  languages, rather than to fundamental aspects of storage layout.
  
   -- Macro: INT_TYPE_SIZE
!      A C expression for the size in bits of the type 'int' on the target
       machine.  If you don't define this, the default is one word.
  
   -- Macro: SHORT_TYPE_SIZE
!      A C expression for the size in bits of the type 'short' on the
       target machine.  If you don't define this, the default is half a
       word.  (If this would be less than one storage unit, it is rounded
       up to one unit.)
  
   -- Macro: LONG_TYPE_SIZE
!      A C expression for the size in bits of the type 'long' on the
       target machine.  If you don't define this, the default is one word.
  
   -- Macro: ADA_LONG_TYPE_SIZE
       On some machines, the size used for the Ada equivalent of the type
!      'long' by a native Ada compiler differs from that used by C.  In
       that situation, define this macro to be a C expression to be used
       for the size of that type.  If you don't define this, the default
!      is the value of 'LONG_TYPE_SIZE'.
  
   -- Macro: LONG_LONG_TYPE_SIZE
!      A C expression for the size in bits of the type 'long long' on the
       target machine.  If you don't define this, the default is two
       words.  If you want to support GNU Ada on your machine, the value
       of this macro must be at least 64.
  
   -- Macro: CHAR_TYPE_SIZE
!      A C expression for the size in bits of the type 'char' on the
       target machine.  If you don't define this, the default is
!      'BITS_PER_UNIT'.
  
   -- Macro: BOOL_TYPE_SIZE
!      A C expression for the size in bits of the C++ type 'bool' and C99
!      type '_Bool' on the target machine.  If you don't define this, and
!      you probably shouldn't, the default is 'CHAR_TYPE_SIZE'.
  
   -- Macro: SHORT_FRACT_TYPE_SIZE
!      A C expression for the size in bits of the type 'short _Fract' on
       the target machine.  If you don't define this, the default is
!      'BITS_PER_UNIT'.
  
   -- Macro: FRACT_TYPE_SIZE
!      A C expression for the size in bits of the type '_Fract' on the
       target machine.  If you don't define this, the default is
!      'BITS_PER_UNIT * 2'.
  
   -- Macro: LONG_FRACT_TYPE_SIZE
!      A C expression for the size in bits of the type 'long _Fract' on
       the target machine.  If you don't define this, the default is
!      'BITS_PER_UNIT * 4'.
  
   -- Macro: LONG_LONG_FRACT_TYPE_SIZE
!      A C expression for the size in bits of the type 'long long _Fract'
       on the target machine.  If you don't define this, the default is
!      'BITS_PER_UNIT * 8'.
  
   -- Macro: SHORT_ACCUM_TYPE_SIZE
!      A C expression for the size in bits of the type 'short _Accum' on
       the target machine.  If you don't define this, the default is
!      'BITS_PER_UNIT * 2'.
  
   -- Macro: ACCUM_TYPE_SIZE
!      A C expression for the size in bits of the type '_Accum' on the
       target machine.  If you don't define this, the default is
!      'BITS_PER_UNIT * 4'.
  
   -- Macro: LONG_ACCUM_TYPE_SIZE
!      A C expression for the size in bits of the type 'long _Accum' on
       the target machine.  If you don't define this, the default is
!      'BITS_PER_UNIT * 8'.
  
   -- Macro: LONG_LONG_ACCUM_TYPE_SIZE
!      A C expression for the size in bits of the type 'long long _Accum'
       on the target machine.  If you don't define this, the default is
!      'BITS_PER_UNIT * 16'.
  
   -- Macro: LIBGCC2_GNU_PREFIX
!      This macro corresponds to the 'TARGET_LIBFUNC_GNU_PREFIX' target
       hook and should be defined if that hook is overriden to be true.
!      It causes function names in libgcc to be changed to use a '__gnu_'
!      prefix for their name rather than the default '__'.  A port which
!      uses this macro should also arrange to use 't-gnu-prefix' in the
!      libgcc 'config.host'.
  
   -- Macro: WIDEST_HARDWARE_FP_SIZE
       A C expression for the size in bits of the widest floating-point
       format supported by the hardware.  If you define this macro, you
       must specify a value less than or equal to mode precision of the
!      mode used for C type 'long double' (from hook
!      'targetm.c.mode_for_floating_type' with argument
!      'TI_LONG_DOUBLE_TYPE').  If you do not define this macro, mode
!      precision of the mode used for C type 'long double' is the default.
  
   -- Macro: DEFAULT_SIGNED_CHAR
       An expression whose value is 1 or 0, according to whether the type
!      'char' should be signed or unsigned by default.  The user can
!      always override this default with the options '-fsigned-char' and
!      '-funsigned-char'.
  
   -- Target Hook: bool TARGET_DEFAULT_SHORT_ENUMS (void)
       This target hook should return true if the compiler should give an
!      'enum' type only as many bytes as it takes to represent the range
       of possible values of that type.  It should return false if all
!      'enum' types should be allocated like 'int'.
  
       The default is to return false.
  
   -- Macro: SIZE_TYPE
       A C expression for a string describing the name of the data type to
!      use for size values.  The typedef name 'size_t' is defined using
       the contents of the string.
  
       The string can contain more than one keyword.  If so, separate them
!      with spaces, and write first any length keyword, then 'unsigned' if
!      appropriate, and finally 'int'.  The string must exactly match one
       of the data type names defined in the function
!      'c_common_nodes_and_builtins' in the file 'c-family/c-common.cc'.
!      You may not omit 'int' or change the order--that would cause the
       compiler to crash on startup.
  
!      If you don't define this macro, the default is '"long unsigned
!      int"'.
  
   -- Macro: SIZETYPE
!      GCC defines internal types ('sizetype', 'ssizetype', 'bitsizetype'
!      and 'sbitsizetype') for expressions dealing with size.  This macro
       is a C expression for a string describing the name of the data type
!      from which the precision of 'sizetype' is extracted.
  
!      The string has the same restrictions as 'SIZE_TYPE' string.
  
!      If you don't define this macro, the default is 'SIZE_TYPE'.
  
   -- Macro: PTRDIFF_TYPE
       A C expression for a string describing the name of the data type to
       use for the result of subtracting two pointers.  The typedef name
!      'ptrdiff_t' is defined using the contents of the string.  See
!      'SIZE_TYPE' above for more information.
  
!      If you don't define this macro, the default is '"long int"'.
  
   -- Macro: WCHAR_TYPE
       A C expression for a string describing the name of the data type to
!      use for wide characters.  The typedef name 'wchar_t' is defined
!      using the contents of the string.  See 'SIZE_TYPE' above for more
       information.
  
!      If you don't define this macro, the default is '"int"'.
  
   -- Macro: WCHAR_TYPE_SIZE
       A C expression for the size in bits of the data type for wide
!      characters.  This is used in 'cpp', which cannot make use of
!      'WCHAR_TYPE'.
  
   -- Macro: WINT_TYPE
       A C expression for a string describing the name of the data type to
!      use for wide characters passed to 'printf' and returned from
!      'getwc'.  The typedef name 'wint_t' is defined using the contents
!      of the string.  See 'SIZE_TYPE' above for more information.
  
!      If you don't define this macro, the default is '"unsigned int"'.
  
   -- Macro: INTMAX_TYPE
       A C expression for a string describing the name of the data type
       that can represent any value of any standard or extended signed
!      integer type.  The typedef name 'intmax_t' is defined using the
!      contents of the string.  See 'SIZE_TYPE' above for more
       information.
  
       If you don't define this macro, the default is the first of
!      '"int"', '"long int"', or '"long long int"' that has as much
!      precision as 'long long int'.
  
   -- Macro: UINTMAX_TYPE
       A C expression for a string describing the name of the data type
       that can represent any value of any standard or extended unsigned
!      integer type.  The typedef name 'uintmax_t' is defined using the
!      contents of the string.  See 'SIZE_TYPE' above for more
       information.
  
       If you don't define this macro, the default is the first of
!      '"unsigned int"', '"long unsigned int"', or '"long long unsigned
!      int"' that has as much precision as 'long long unsigned int'.
  
   -- Macro: SIG_ATOMIC_TYPE
   -- Macro: INT8_TYPE
--- 35053,35241 ----
  languages, rather than to fundamental aspects of storage layout.
  
   -- Macro: INT_TYPE_SIZE
!      A C expression for the size in bits of the type â€˜intâ€™ on the target
       machine.  If you don't define this, the default is one word.
  
   -- Macro: SHORT_TYPE_SIZE
!      A C expression for the size in bits of the type â€˜shortâ€™ on the
       target machine.  If you don't define this, the default is half a
       word.  (If this would be less than one storage unit, it is rounded
       up to one unit.)
  
   -- Macro: LONG_TYPE_SIZE
!      A C expression for the size in bits of the type â€˜longâ€™ on the
       target machine.  If you don't define this, the default is one word.
  
   -- Macro: ADA_LONG_TYPE_SIZE
       On some machines, the size used for the Ada equivalent of the type
!      â€˜longâ€™ by a native Ada compiler differs from that used by C.  In
       that situation, define this macro to be a C expression to be used
       for the size of that type.  If you don't define this, the default
!      is the value of â€˜LONG_TYPE_SIZEâ€™.
  
   -- Macro: LONG_LONG_TYPE_SIZE
!      A C expression for the size in bits of the type â€˜long longâ€™ on the
       target machine.  If you don't define this, the default is two
       words.  If you want to support GNU Ada on your machine, the value
       of this macro must be at least 64.
  
   -- Macro: CHAR_TYPE_SIZE
!      A C expression for the size in bits of the type â€˜charâ€™ on the
       target machine.  If you don't define this, the default is
!      â€˜BITS_PER_UNITâ€™.
  
   -- Macro: BOOL_TYPE_SIZE
!      A C expression for the size in bits of the C++ type â€˜boolâ€™ and C99
!      type â€˜_Boolâ€™ on the target machine.  If you don't define this, and
!      you probably shouldn't, the default is â€˜CHAR_TYPE_SIZEâ€™.
  
   -- Macro: SHORT_FRACT_TYPE_SIZE
!      A C expression for the size in bits of the type â€˜short _Fractâ€™ on
       the target machine.  If you don't define this, the default is
!      â€˜BITS_PER_UNITâ€™.
  
   -- Macro: FRACT_TYPE_SIZE
!      A C expression for the size in bits of the type â€˜_Fractâ€™ on the
       target machine.  If you don't define this, the default is
!      â€˜BITS_PER_UNIT * 2â€™.
  
   -- Macro: LONG_FRACT_TYPE_SIZE
!      A C expression for the size in bits of the type â€˜long _Fractâ€™ on
       the target machine.  If you don't define this, the default is
!      â€˜BITS_PER_UNIT * 4â€™.
  
   -- Macro: LONG_LONG_FRACT_TYPE_SIZE
!      A C expression for the size in bits of the type â€˜long long _Fractâ€™
       on the target machine.  If you don't define this, the default is
!      â€˜BITS_PER_UNIT * 8â€™.
  
   -- Macro: SHORT_ACCUM_TYPE_SIZE
!      A C expression for the size in bits of the type â€˜short _Accumâ€™ on
       the target machine.  If you don't define this, the default is
!      â€˜BITS_PER_UNIT * 2â€™.
  
   -- Macro: ACCUM_TYPE_SIZE
!      A C expression for the size in bits of the type â€˜_Accumâ€™ on the
       target machine.  If you don't define this, the default is
!      â€˜BITS_PER_UNIT * 4â€™.
  
   -- Macro: LONG_ACCUM_TYPE_SIZE
!      A C expression for the size in bits of the type â€˜long _Accumâ€™ on
       the target machine.  If you don't define this, the default is
!      â€˜BITS_PER_UNIT * 8â€™.
  
   -- Macro: LONG_LONG_ACCUM_TYPE_SIZE
!      A C expression for the size in bits of the type â€˜long long _Accumâ€™
       on the target machine.  If you don't define this, the default is
!      â€˜BITS_PER_UNIT * 16â€™.
  
   -- Macro: LIBGCC2_GNU_PREFIX
!      This macro corresponds to the â€˜TARGET_LIBFUNC_GNU_PREFIXâ€™ target
       hook and should be defined if that hook is overriden to be true.
!      It causes function names in libgcc to be changed to use a â€˜__gnu_â€™
!      prefix for their name rather than the default â€˜__â€™.  A port which
!      uses this macro should also arrange to use â€˜t-gnu-prefixâ€™ in the
!      libgcc â€˜config.hostâ€™.
  
   -- Macro: WIDEST_HARDWARE_FP_SIZE
       A C expression for the size in bits of the widest floating-point
       format supported by the hardware.  If you define this macro, you
       must specify a value less than or equal to mode precision of the
!      mode used for C type â€˜long doubleâ€™ (from hook
!      â€˜targetm.c.mode_for_floating_typeâ€™ with argument
!      â€˜TI_LONG_DOUBLE_TYPEâ€™).  If you do not define this macro, mode
!      precision of the mode used for C type â€˜long doubleâ€™ is the default.
  
   -- Macro: DEFAULT_SIGNED_CHAR
       An expression whose value is 1 or 0, according to whether the type
!      â€˜charâ€™ should be signed or unsigned by default.  The user can
!      always override this default with the options â€˜-fsigned-charâ€™ and
!      â€˜-funsigned-charâ€™.
  
   -- Target Hook: bool TARGET_DEFAULT_SHORT_ENUMS (void)
       This target hook should return true if the compiler should give an
!      â€˜enumâ€™ type only as many bytes as it takes to represent the range
       of possible values of that type.  It should return false if all
!      â€˜enumâ€™ types should be allocated like â€˜intâ€™.
  
       The default is to return false.
  
   -- Macro: SIZE_TYPE
       A C expression for a string describing the name of the data type to
!      use for size values.  The typedef name â€˜size_tâ€™ is defined using
       the contents of the string.
  
       The string can contain more than one keyword.  If so, separate them
!      with spaces, and write first any length keyword, then â€˜unsignedâ€™ if
!      appropriate, and finally â€˜intâ€™.  The string must exactly match one
       of the data type names defined in the function
!      â€˜c_common_nodes_and_builtinsâ€™ in the file â€˜c-family/c-common.ccâ€™.
!      You may not omit â€˜intâ€™ or change the order--that would cause the
       compiler to crash on startup.
  
!      If you don't define this macro, the default is â€˜"long unsigned
!      int"â€™.
  
   -- Macro: SIZETYPE
!      GCC defines internal types (â€˜sizetypeâ€™, â€˜ssizetypeâ€™, â€˜bitsizetypeâ€™
!      and â€˜sbitsizetypeâ€™) for expressions dealing with size.  This macro
       is a C expression for a string describing the name of the data type
!      from which the precision of â€˜sizetypeâ€™ is extracted.
  
!      The string has the same restrictions as â€˜SIZE_TYPEâ€™ string.
  
!      If you don't define this macro, the default is â€˜SIZE_TYPEâ€™.
  
   -- Macro: PTRDIFF_TYPE
       A C expression for a string describing the name of the data type to
       use for the result of subtracting two pointers.  The typedef name
!      â€˜ptrdiff_tâ€™ is defined using the contents of the string.  See
!      â€˜SIZE_TYPEâ€™ above for more information.
  
!      If you don't define this macro, the default is â€˜"long int"â€™.
  
   -- Macro: WCHAR_TYPE
       A C expression for a string describing the name of the data type to
!      use for wide characters.  The typedef name â€˜wchar_tâ€™ is defined
!      using the contents of the string.  See â€˜SIZE_TYPEâ€™ above for more
       information.
  
!      If you don't define this macro, the default is â€˜"int"â€™.
  
   -- Macro: WCHAR_TYPE_SIZE
       A C expression for the size in bits of the data type for wide
!      characters.  This is used in â€˜cppâ€™, which cannot make use of
!      â€˜WCHAR_TYPEâ€™.
  
   -- Macro: WINT_TYPE
       A C expression for a string describing the name of the data type to
!      use for wide characters passed to â€˜printfâ€™ and returned from
!      â€˜getwcâ€™.  The typedef name â€˜wint_tâ€™ is defined using the contents
!      of the string.  See â€˜SIZE_TYPEâ€™ above for more information.
  
!      If you don't define this macro, the default is â€˜"unsigned int"â€™.
  
   -- Macro: INTMAX_TYPE
       A C expression for a string describing the name of the data type
       that can represent any value of any standard or extended signed
!      integer type.  The typedef name â€˜intmax_tâ€™ is defined using the
!      contents of the string.  See â€˜SIZE_TYPEâ€™ above for more
       information.
  
       If you don't define this macro, the default is the first of
!      â€˜"int"â€™, â€˜"long int"â€™, or â€˜"long long int"â€™ that has as much
!      precision as â€˜long long intâ€™.
  
   -- Macro: UINTMAX_TYPE
       A C expression for a string describing the name of the data type
       that can represent any value of any standard or extended unsigned
!      integer type.  The typedef name â€˜uintmax_tâ€™ is defined using the
!      contents of the string.  See â€˜SIZE_TYPEâ€™ above for more
       information.
  
       If you don't define this macro, the default is the first of
!      â€˜"unsigned int"â€™, â€˜"long unsigned int"â€™, or â€˜"long long unsigned
!      int"â€™ that has as much precision as â€˜long long unsigned intâ€™.
  
   -- Macro: SIG_ATOMIC_TYPE
   -- Macro: INT8_TYPE
*************** languages, rather than to fundamental as
*** 35260,35277 ****
   -- Macro: UINT_FAST64_TYPE
   -- Macro: INTPTR_TYPE
   -- Macro: UINTPTR_TYPE
!      C expressions for the standard types 'sig_atomic_t', 'int8_t',
!      'int16_t', 'int32_t', 'int64_t', 'uint8_t', 'uint16_t', 'uint32_t',
!      'uint64_t', 'int_least8_t', 'int_least16_t', 'int_least32_t',
!      'int_least64_t', 'uint_least8_t', 'uint_least16_t',
!      'uint_least32_t', 'uint_least64_t', 'int_fast8_t', 'int_fast16_t',
!      'int_fast32_t', 'int_fast64_t', 'uint_fast8_t', 'uint_fast16_t',
!      'uint_fast32_t', 'uint_fast64_t', 'intptr_t', and 'uintptr_t'.  See
!      'SIZE_TYPE' above for more information.
  
       If any of these macros evaluates to a null pointer, the
       corresponding type is not supported; if GCC is configured to
!      provide '<stdint.h>' in such a case, the header provided may not
       conform to C99, depending on the type in question.  The defaults
       for all of these macros are null pointers.
  
--- 35264,35281 ----
   -- Macro: UINT_FAST64_TYPE
   -- Macro: INTPTR_TYPE
   -- Macro: UINTPTR_TYPE
!      C expressions for the standard types â€˜sig_atomic_tâ€™, â€˜int8_tâ€™,
!      â€˜int16_tâ€™, â€˜int32_tâ€™, â€˜int64_tâ€™, â€˜uint8_tâ€™, â€˜uint16_tâ€™, â€˜uint32_tâ€™,
!      â€˜uint64_tâ€™, â€˜int_least8_tâ€™, â€˜int_least16_tâ€™, â€˜int_least32_tâ€™,
!      â€˜int_least64_tâ€™, â€˜uint_least8_tâ€™, â€˜uint_least16_tâ€™,
!      â€˜uint_least32_tâ€™, â€˜uint_least64_tâ€™, â€˜int_fast8_tâ€™, â€˜int_fast16_tâ€™,
!      â€˜int_fast32_tâ€™, â€˜int_fast64_tâ€™, â€˜uint_fast8_tâ€™, â€˜uint_fast16_tâ€™,
!      â€˜uint_fast32_tâ€™, â€˜uint_fast64_tâ€™, â€˜intptr_tâ€™, and â€˜uintptr_tâ€™.  See
!      â€˜SIZE_TYPEâ€™ above for more information.
  
       If any of these macros evaluates to a null pointer, the
       corresponding type is not supported; if GCC is configured to
!      provide â€˜<stdint.h>â€™ in such a case, the header provided may not
       conform to C99, depending on the type in question.  The defaults
       for all of these macros are null pointers.
  
*************** languages, rather than to fundamental as
*** 35294,35315 ****
       vtable_index is odd, we can distinguish which variant of the union
       is in use.  But, on some platforms function pointers can be odd,
       and so this doesn't work.  In that case, we use the low-order bit
!      of the 'delta' field, and shift the remainder of the 'delta' field
       to the left.
  
       GCC will automatically make the right selection about where to
!      store this bit using the 'FUNCTION_BOUNDARY' setting for your
       platform.  However, some platforms such as ARM/Thumb have
!      'FUNCTION_BOUNDARY' set such that functions always start at even
       addresses, but the lowest bit of pointers to functions indicate
       whether the function at that address is in ARM or Thumb mode.  If
       this is the case of your architecture, you should define this macro
!      to 'ptrmemfunc_vbit_in_delta'.
  
       In general, you should not have to define this macro.  On
       architectures in which function addresses are always even,
!      according to 'FUNCTION_BOUNDARY', GCC will automatically define
!      this macro to 'ptrmemfunc_vbit_in_pfn'.
  
   -- Macro: TARGET_VTABLE_USES_DESCRIPTORS
       Normally, the C++ compiler uses function pointers in vtables.  This
--- 35298,35319 ----
       vtable_index is odd, we can distinguish which variant of the union
       is in use.  But, on some platforms function pointers can be odd,
       and so this doesn't work.  In that case, we use the low-order bit
!      of the â€˜deltaâ€™ field, and shift the remainder of the â€˜deltaâ€™ field
       to the left.
  
       GCC will automatically make the right selection about where to
!      store this bit using the â€˜FUNCTION_BOUNDARYâ€™ setting for your
       platform.  However, some platforms such as ARM/Thumb have
!      â€˜FUNCTION_BOUNDARYâ€™ set such that functions always start at even
       addresses, but the lowest bit of pointers to functions indicate
       whether the function at that address is in ARM or Thumb mode.  If
       this is the case of your architecture, you should define this macro
!      to â€˜ptrmemfunc_vbit_in_deltaâ€™.
  
       In general, you should not have to define this macro.  On
       architectures in which function addresses are always even,
!      according to â€˜FUNCTION_BOUNDARYâ€™, GCC will automatically define
!      this macro to â€˜ptrmemfunc_vbit_in_pfnâ€™.
  
   -- Macro: TARGET_VTABLE_USES_DESCRIPTORS
       Normally, the C++ compiler uses function pointers in vtables.  This
*************** languages, rather than to fundamental as
*** 35331,35337 ****
   -- Macro: TARGET_VTABLE_DATA_ENTRY_DISTANCE
       There are a few non-descriptor entries in the vtable at offsets
       below zero.  If these entries must be padded (say, to preserve the
!      alignment specified by 'TARGET_VTABLE_ENTRY_ALIGN'), set this to
       the number of words in each data entry.
  
  
--- 35335,35341 ----
   -- Macro: TARGET_VTABLE_DATA_ENTRY_DISTANCE
       There are a few non-descriptor entries in the vtable at offsets
       below zero.  If these entries must be padded (say, to preserve the
!      alignment specified by â€˜TARGET_VTABLE_ENTRY_ALIGNâ€™), set this to
       the number of words in each data entry.
  
  
*************** Registers have various characteristics.
*** 35368,35376 ****
  
   -- Macro: FIRST_PSEUDO_REGISTER
       Number of hardware registers known to the compiler.  They receive
!      numbers 0 through 'FIRST_PSEUDO_REGISTER-1'; thus, the first pseudo
       register's number really is assigned the number
!      'FIRST_PSEUDO_REGISTER'.
  
   -- Macro: FIXED_REGISTERS
       An initializer that says which registers are used for fixed
--- 35372,35380 ----
  
   -- Macro: FIRST_PSEUDO_REGISTER
       Number of hardware registers known to the compiler.  They receive
!      numbers 0 through â€˜FIRST_PSEUDO_REGISTER-1â€™; thus, the first pseudo
       register's number really is assigned the number
!      â€˜FIRST_PSEUDO_REGISTERâ€™.
  
   -- Macro: FIXED_REGISTERS
       An initializer that says which registers are used for fixed
*************** Registers have various characteristics.
*** 35389,35425 ****
       The table initialized from this macro, and the table initialized by
       the following one, may be overridden at run time either
       automatically, by the actions of the macro
!      'CONDITIONAL_REGISTER_USAGE', or by the user with the command
!      options '-ffixed-REG', '-fcall-used-REG' and '-fcall-saved-REG'.
  
   -- Macro: CALL_USED_REGISTERS
!      Like 'FIXED_REGISTERS' but has 1 for each register that is
       clobbered (in general) by function calls as well as for fixed
       registers.  This macro therefore identifies the registers that are
       not available for general allocation of values that must live
       across function calls.
  
!      If a register has 0 in 'CALL_USED_REGISTERS', the compiler
       automatically saves it on function entry and restores it on
       function exit, if the register is used within the function.
  
!      Exactly one of 'CALL_USED_REGISTERS' and
!      'CALL_REALLY_USED_REGISTERS' must be defined.  Modern ports should
!      define 'CALL_REALLY_USED_REGISTERS'.
  
   -- Macro: CALL_REALLY_USED_REGISTERS
!      Like 'CALL_USED_REGISTERS' except this macro doesn't require that
!      the entire set of 'FIXED_REGISTERS' be included.
!      ('CALL_USED_REGISTERS' must be a superset of 'FIXED_REGISTERS').
  
!      Exactly one of 'CALL_USED_REGISTERS' and
!      'CALL_REALLY_USED_REGISTERS' must be defined.  Modern ports should
!      define 'CALL_REALLY_USED_REGISTERS'.
  
   -- Target Hook: const predefined_function_abi & TARGET_FNTYPE_ABI
            (const_tree TYPE)
       Return the ABI used by a function with type TYPE; see the
!      definition of 'predefined_function_abi' for details of the ABI
       descriptor.  Targets only need to define this hook if they support
       interoperability between several ABIs in the same translation unit.
  
--- 35393,35429 ----
       The table initialized from this macro, and the table initialized by
       the following one, may be overridden at run time either
       automatically, by the actions of the macro
!      â€˜CONDITIONAL_REGISTER_USAGEâ€™, or by the user with the command
!      options â€˜-ffixed-REGâ€™, â€˜-fcall-used-REGâ€™ and â€˜-fcall-saved-REGâ€™.
  
   -- Macro: CALL_USED_REGISTERS
!      Like â€˜FIXED_REGISTERSâ€™ but has 1 for each register that is
       clobbered (in general) by function calls as well as for fixed
       registers.  This macro therefore identifies the registers that are
       not available for general allocation of values that must live
       across function calls.
  
!      If a register has 0 in â€˜CALL_USED_REGISTERSâ€™, the compiler
       automatically saves it on function entry and restores it on
       function exit, if the register is used within the function.
  
!      Exactly one of â€˜CALL_USED_REGISTERSâ€™ and
!      â€˜CALL_REALLY_USED_REGISTERSâ€™ must be defined.  Modern ports should
!      define â€˜CALL_REALLY_USED_REGISTERSâ€™.
  
   -- Macro: CALL_REALLY_USED_REGISTERS
!      Like â€˜CALL_USED_REGISTERSâ€™ except this macro doesn't require that
!      the entire set of â€˜FIXED_REGISTERSâ€™ be included.
!      (â€˜CALL_USED_REGISTERSâ€™ must be a superset of â€˜FIXED_REGISTERSâ€™).
  
!      Exactly one of â€˜CALL_USED_REGISTERSâ€™ and
!      â€˜CALL_REALLY_USED_REGISTERSâ€™ must be defined.  Modern ports should
!      define â€˜CALL_REALLY_USED_REGISTERSâ€™.
  
   -- Target Hook: const predefined_function_abi & TARGET_FNTYPE_ABI
            (const_tree TYPE)
       Return the ABI used by a function with type TYPE; see the
!      definition of â€˜predefined_function_abiâ€™ for details of the ABI
       descriptor.  Targets only need to define this hook if they support
       interoperability between several ABIs in the same translation unit.
  
*************** Registers have various characteristics.
*** 35427,35434 ****
            (const rtx_insn *INSN)
       This hook returns a description of the ABI used by the target of
       call instruction INSN; see the definition of
!      'predefined_function_abi' for details of the ABI descriptor.  Only
!      the global function 'insn_callee_abi' should call this hook
       directly.
  
       Targets only need to define this hook if they support
--- 35431,35438 ----
            (const rtx_insn *INSN)
       This hook returns a description of the ABI used by the target of
       call instruction INSN; see the definition of
!      â€˜predefined_function_abiâ€™ for details of the ABI descriptor.  Only
!      the global function â€˜insn_callee_abiâ€™ should call this hook
       directly.
  
       Targets only need to define this hook if they support
*************** Registers have various characteristics.
*** 35439,35454 ****
       ABIs usually specify that calls must preserve the full contents of
       a particular register, or that calls can alter any part of a
       particular register.  This information is captured by the target
!      macro 'CALL_REALLY_USED_REGISTERS'.  However, some ABIs specify
       that calls must preserve certain bits of a particular register but
       can alter others.  This hook should return true if this applies to
!      at least one of the registers in '(reg:MODE REGNO)', and if as a
       result the call would alter part of the MODE value.  For example,
       if a call preserves the low 32 bits of a 64-bit hard register REGNO
       but can clobber the upper 32 bits, this hook should return true for
       a 64-bit mode but false for a 32-bit mode.
  
!      The value of ABI_ID comes from the 'predefined_function_abi'
       structure that describes the ABI of the call; see the definition of
       the structure for more details.  If (as is usual) the target uses
       the same ABI for all functions in a translation unit, ABI_ID is
--- 35443,35458 ----
       ABIs usually specify that calls must preserve the full contents of
       a particular register, or that calls can alter any part of a
       particular register.  This information is captured by the target
!      macro â€˜CALL_REALLY_USED_REGISTERSâ€™.  However, some ABIs specify
       that calls must preserve certain bits of a particular register but
       can alter others.  This hook should return true if this applies to
!      at least one of the registers in â€˜(reg:MODE REGNO)â€™, and if as a
       result the call would alter part of the MODE value.  For example,
       if a call preserves the low 32 bits of a 64-bit hard register REGNO
       but can clobber the upper 32 bits, this hook should return true for
       a 64-bit mode but false for a 32-bit mode.
  
!      The value of ABI_ID comes from the â€˜predefined_function_abiâ€™
       structure that describes the ABI of the call; see the definition of
       the structure for more details.  If (as is usual) the target uses
       the same ABI for all functions in a translation unit, ABI_ID is
*************** Registers have various characteristics.
*** 35461,35487 ****
       This hook returns name of multilib ABI name.
  
   -- Target Hook: void TARGET_CONDITIONAL_REGISTER_USAGE (void)
!      This hook may conditionally modify five variables 'fixed_regs',
!      'call_used_regs', 'global_regs', 'reg_names', and
!      'reg_class_contents', to take into account any dependence of these
       register sets on target flags.  The first three of these are of
!      type 'char []' (interpreted as boolean vectors).  'global_regs' is
!      a 'const char *[]', and 'reg_class_contents' is a 'HARD_REG_SET'.
!      Before the macro is called, 'fixed_regs', 'call_used_regs',
!      'reg_class_contents', and 'reg_names' have been initialized from
!      'FIXED_REGISTERS', 'CALL_USED_REGISTERS', 'REG_CLASS_CONTENTS', and
!      'REGISTER_NAMES', respectively.  'global_regs' has been cleared,
!      and any '-ffixed-REG', '-fcall-used-REG' and '-fcall-saved-REG'
       command options have been applied.
  
       If the usage of an entire class of registers depends on the target
       flags, you may indicate this to GCC by using this macro to modify
!      'fixed_regs' and 'call_used_regs' to 1 for each of the registers in
       the classes which should not be used by GCC.  Also make
!      'define_register_constraint's return 'NO_REGS' for constraints that
       shouldn't be used.
  
!      (However, if this class is not included in 'GENERAL_REGS' and all
       of the insn patterns whose constraints permit this class are
       controlled by target switches, then GCC will automatically avoid
       using these registers when the target switches are opposed to
--- 35465,35491 ----
       This hook returns name of multilib ABI name.
  
   -- Target Hook: void TARGET_CONDITIONAL_REGISTER_USAGE (void)
!      This hook may conditionally modify five variables â€˜fixed_regsâ€™,
!      â€˜call_used_regsâ€™, â€˜global_regsâ€™, â€˜reg_namesâ€™, and
!      â€˜reg_class_contentsâ€™, to take into account any dependence of these
       register sets on target flags.  The first three of these are of
!      type â€˜char []â€™ (interpreted as boolean vectors).  â€˜global_regsâ€™ is
!      a â€˜const char *[]â€™, and â€˜reg_class_contentsâ€™ is a â€˜HARD_REG_SETâ€™.
!      Before the macro is called, â€˜fixed_regsâ€™, â€˜call_used_regsâ€™,
!      â€˜reg_class_contentsâ€™, and â€˜reg_namesâ€™ have been initialized from
!      â€˜FIXED_REGISTERSâ€™, â€˜CALL_USED_REGISTERSâ€™, â€˜REG_CLASS_CONTENTSâ€™, and
!      â€˜REGISTER_NAMESâ€™, respectively.  â€˜global_regsâ€™ has been cleared,
!      and any â€˜-ffixed-REGâ€™, â€˜-fcall-used-REGâ€™ and â€˜-fcall-saved-REGâ€™
       command options have been applied.
  
       If the usage of an entire class of registers depends on the target
       flags, you may indicate this to GCC by using this macro to modify
!      â€˜fixed_regsâ€™ and â€˜call_used_regsâ€™ to 1 for each of the registers in
       the classes which should not be used by GCC.  Also make
!      â€˜define_register_constraintâ€™s return â€˜NO_REGSâ€™ for constraints that
       shouldn't be used.
  
!      (However, if this class is not included in â€˜GENERAL_REGSâ€™ and all
       of the insn patterns whose constraints permit this class are
       controlled by target switches, then GCC will automatically avoid
       using these registers when the target switches are opposed to
*************** Registers are allocated in order.
*** 35531,35537 ****
       One use of this macro is on machines where the highest numbered
       registers must always be saved and the save-multiple-registers
       instruction supports only sequences of consecutive registers.  On
!      such machines, define 'REG_ALLOC_ORDER' to be an initializer that
       lists the highest numbered allocable register first.
  
   -- Macro: ADJUST_REG_ALLOC_ORDER
--- 35535,35541 ----
       One use of this macro is on machines where the highest numbered
       registers must always be saved and the save-multiple-registers
       instruction supports only sequences of consecutive registers.  On
!      such machines, define â€˜REG_ALLOC_ORDERâ€™ to be an initializer that
       lists the highest numbered allocable register first.
  
   -- Macro: ADJUST_REG_ALLOC_ORDER
*************** Registers are allocated in order.
*** 35539,35550 ****
       allocate hard registers for pseudo-registers local to a basic
       block.
  
!      Store the desired register order in the array 'reg_alloc_order'.
       Element 0 should be the register to allocate first; element 1, the
       next register; and so on.
  
       The macro body should not assume anything about the contents of
!      'reg_alloc_order' before execution of the macro.
  
       On most machines, it is not necessary to define this macro.
  
--- 35543,35554 ----
       allocate hard registers for pseudo-registers local to a basic
       block.
  
!      Store the desired register order in the array â€˜reg_alloc_orderâ€™.
       Element 0 should be the register to allocate first; element 1, the
       next register; and so on.
  
       The macro body should not assume anything about the contents of
!      â€˜reg_alloc_orderâ€™ before execution of the macro.
  
       On most machines, it is not necessary to define this macro.
  
*************** Registers are allocated in order.
*** 35563,35569 ****
       based on REGNO.  The cost of using REGNO for a pseudo will be
       increased by approximately the pseudo's usage frequency times the
       value returned by this macro.  Not defining this macro is
!      equivalent to having it always return '0.0'.
  
       On most machines, it is not necessary to define this macro.
  
--- 35567,35573 ----
       based on REGNO.  The cost of using REGNO for a pseudo will be
       increased by approximately the pseudo's usage frequency times the
       value returned by this macro.  Not defining this macro is
!      equivalent to having it always return â€˜0.0â€™.
  
       On most machines, it is not necessary to define this macro.
  
*************** consecutive registers are needed for a g
*** 35583,35589 ****
       starting at register number REGNO, required to hold a value of mode
       MODE.  This hook must never return zero, even if a register cannot
       hold the requested mode - indicate that with
!      'TARGET_HARD_REGNO_MODE_OK' and/or 'TARGET_CAN_CHANGE_MODE_CLASS'
       instead.
  
       The default definition returns the number of words in MODE.
--- 35587,35593 ----
       starting at register number REGNO, required to hold a value of mode
       MODE.  This hook must never return zero, even if a register cannot
       hold the requested mode - indicate that with
!      â€˜TARGET_HARD_REGNO_MODE_OKâ€™ and/or â€˜TARGET_CAN_CHANGE_MODE_CLASSâ€™
       instead.
  
       The default definition returns the number of words in MODE.
*************** consecutive registers are needed for a g
*** 35594,35614 ****
       in registers starting at register number REGNO (as determined by
       multiplying GCC's notion of the size of the register when
       containing this mode by the number of registers returned by
!      'TARGET_HARD_REGNO_NREGS').  By default this is zero.
  
       For example, if a floating-point value is stored in three 32-bit
       registers but takes up 128 bits in memory, then this would be
       nonzero.
  
       This macros only needs to be defined if there are cases where
!      'subreg_get_info' would otherwise wrongly determine that a 'subreg'
       can be represented by an offset to the register number, when in
!      fact such a 'subreg' would contain some of the padding not stored
       in registers and so not be representable.
  
   -- Macro: HARD_REGNO_NREGS_WITH_PADDING (REGNO, MODE)
       For values of REGNO and MODE for which
!      'HARD_REGNO_NREGS_HAS_PADDING' returns nonzero, a C expression
       returning the greater number of registers required to hold the
       value including any padding.  In the example above, the value would
       be four.
--- 35598,35618 ----
       in registers starting at register number REGNO (as determined by
       multiplying GCC's notion of the size of the register when
       containing this mode by the number of registers returned by
!      â€˜TARGET_HARD_REGNO_NREGSâ€™).  By default this is zero.
  
       For example, if a floating-point value is stored in three 32-bit
       registers but takes up 128 bits in memory, then this would be
       nonzero.
  
       This macros only needs to be defined if there are cases where
!      â€˜subreg_get_infoâ€™ would otherwise wrongly determine that a â€˜subregâ€™
       can be represented by an offset to the register number, when in
!      fact such a â€˜subregâ€™ would contain some of the padding not stored
       in registers and so not be representable.
  
   -- Macro: HARD_REGNO_NREGS_WITH_PADDING (REGNO, MODE)
       For values of REGNO and MODE for which
!      â€˜HARD_REGNO_NREGS_HAS_PADDINGâ€™ returns nonzero, a C expression
       returning the greater number of registers required to hold the
       value including any padding.  In the example above, the value would
       be four.
*************** consecutive registers are needed for a g
*** 35637,35652 ****
       reject odd register numbers for such modes.
  
       The minimum requirement for a mode to be OK in a register is that
!      the 'movMODE' instruction pattern support moves between the
       register and other hard register in the same class and that moving
       a value into the register and back out not alter it.
  
!      Since the same instruction used to move 'word_mode' will work for
       all narrower integer modes, it is not necessary on any machine for
       this hook to distinguish between these modes, provided you define
!      patterns 'movhi', etc., to take advantage of this.  This is useful
!      because of the interaction between 'TARGET_HARD_REGNO_MODE_OK' and
!      'TARGET_MODES_TIEABLE_P'; it is very desirable for all integer
       modes to be tieable.
  
       Many machines have special registers for floating point arithmetic.
--- 35641,35656 ----
       reject odd register numbers for such modes.
  
       The minimum requirement for a mode to be OK in a register is that
!      the â€˜movMODEâ€™ instruction pattern support moves between the
       register and other hard register in the same class and that moving
       a value into the register and back out not alter it.
  
!      Since the same instruction used to move â€˜word_modeâ€™ will work for
       all narrower integer modes, it is not necessary on any machine for
       this hook to distinguish between these modes, provided you define
!      patterns â€˜movhiâ€™, etc., to take advantage of this.  This is useful
!      because of the interaction between â€˜TARGET_HARD_REGNO_MODE_OKâ€™ and
!      â€˜TARGET_MODES_TIEABLE_Pâ€™; it is very desirable for all integer
       modes to be tieable.
  
       Many machines have special registers for floating point arithmetic.
*************** consecutive registers are needed for a g
*** 35661,35667 ****
       modes may not go in floating registers.  This is true if the
       floating registers normalize any value stored in them, because
       storing a non-floating value there would garble it.  In this case,
!      'TARGET_HARD_REGNO_MODE_OK' should reject fixed-point machine modes
       in floating registers.  But if the floating registers do not
       automatically normalize, if you can store any bit pattern in one
       and retrieve it unchanged without a trap, then any machine mode may
--- 35665,35671 ----
       modes may not go in floating registers.  This is true if the
       floating registers normalize any value stored in them, because
       storing a non-floating value there would garble it.  In this case,
!      â€˜TARGET_HARD_REGNO_MODE_OKâ€™ should reject fixed-point machine modes
       in floating registers.  But if the floating registers do not
       automatically normalize, if you can store any bit pattern in one
       and retrieve it unchanged without a trap, then any machine mode may
*************** consecutive registers are needed for a g
*** 35670,35682 ****
       The primary significance of special floating registers is rather
       that they are the registers acceptable in floating point arithmetic
       instructions.  However, this is of no concern to
!      'TARGET_HARD_REGNO_MODE_OK'.  You handle it by writing the proper
       constraints for those instructions.
  
       On some machines, the floating registers are especially slow to
       access, so that it is better to store a value in a stack frame than
       in such a register if floating point arithmetic is not being done.
!      As long as the floating registers are not in class 'GENERAL_REGS',
       they will not be used unless some pattern's constraint asks for
       one.
  
--- 35674,35686 ----
       The primary significance of special floating registers is rather
       that they are the registers acceptable in floating point arithmetic
       instructions.  However, this is of no concern to
!      â€˜TARGET_HARD_REGNO_MODE_OKâ€™.  You handle it by writing the proper
       constraints for those instructions.
  
       On some machines, the floating registers are especially slow to
       access, so that it is better to store a value in a stack frame than
       in such a register if floating point arithmetic is not being done.
!      As long as the floating registers are not in class â€˜GENERAL_REGSâ€™,
       they will not be used unless some pattern's constraint asks for
       one.
  
*************** consecutive registers are needed for a g
*** 35695,35703 ****
       This hook returns true if a value of mode MODE1 is accessible in
       mode MODE2 without copying.
  
!      If 'TARGET_HARD_REGNO_MODE_OK (R, MODE1)' and
!      'TARGET_HARD_REGNO_MODE_OK (R, MODE2)' are always the same for any
!      R, then 'TARGET_MODES_TIEABLE_P (MODE1, MODE2)' should be true.  If
       they differ for any R, you should define this hook to return false
       unless some other mechanism ensures the accessibility of the value
       in a narrower mode.
--- 35699,35707 ----
       This hook returns true if a value of mode MODE1 is accessible in
       mode MODE2 without copying.
  
!      If â€˜TARGET_HARD_REGNO_MODE_OK (R, MODE1)â€™ and
!      â€˜TARGET_HARD_REGNO_MODE_OK (R, MODE2)â€™ are always the same for any
!      R, then â€˜TARGET_MODES_TIEABLE_P (MODE1, MODE2)â€™ should be true.  If
       they differ for any R, you should define this hook to return false
       unless some other mechanism ensures the accessibility of the value
       in a narrower mode.
*************** consecutive registers are needed for a g
*** 35707,35724 ****
       allocation.  The default definition returns true unconditionally.
  
   -- Target Hook: bool TARGET_HARD_REGNO_SCRATCH_OK (unsigned int REGNO)
!      This target hook should return 'true' if it is OK to use a hard
       register REGNO as scratch reg in peephole2.
  
       One common use of this macro is to prevent using of a register that
       is not saved by a prologue in an interrupt handler.
  
!      The default version of this hook always returns 'true'.
  
   -- Macro: AVOID_CCMODE_COPIES
       Define this macro if the compiler should avoid copies to/from
!      'CCmode' registers.  You should only define this macro if support
!      for copying to/from 'CCmode' is incomplete.
  
  
  File: gccint.info,  Node: Leaf Functions,  Next: Stack Registers,  Prev: Values in Registers,  Up: Registers
--- 35711,35728 ----
       allocation.  The default definition returns true unconditionally.
  
   -- Target Hook: bool TARGET_HARD_REGNO_SCRATCH_OK (unsigned int REGNO)
!      This target hook should return â€˜trueâ€™ if it is OK to use a hard
       register REGNO as scratch reg in peephole2.
  
       One common use of this macro is to prevent using of a register that
       is not saved by a prologue in an interrupt handler.
  
!      The default version of this hook always returns â€˜trueâ€™.
  
   -- Macro: AVOID_CCMODE_COPIES
       Define this macro if the compiler should avoid copies to/from
!      â€˜CCmodeâ€™ registers.  You should only define this macro if support
!      for copying to/from â€˜CCmodeâ€™ is incomplete.
  
  
  File: gccint.info,  Node: Leaf Functions,  Next: Stack Registers,  Prev: Values in Registers,  Up: Registers
*************** accomplish this.
*** 35763,35785 ****
       function.
  
       If REGNO is a register number which should not appear in a leaf
!      function before renumbering, then the expression should yield -1,
       which will cause the compiler to abort.
  
       Define this macro only if the target machine offers a way to
       optimize the treatment of leaf functions, and registers need to be
       renumbered to do this.
  
!  'TARGET_ASM_FUNCTION_PROLOGUE' and 'TARGET_ASM_FUNCTION_EPILOGUE' must
  usually treat leaf functions specially.  They can test the C variable
! 'current_function_is_leaf' which is nonzero for leaf functions.
! 'current_function_is_leaf' is set prior to local register allocation and
  is valid for the remaining compiler passes.  They can also test the C
! variable 'current_function_uses_only_leaf_regs' which is nonzero for
  leaf functions which only use leaf registers.
! 'current_function_uses_only_leaf_regs' is valid after all passes that
  modify the instructions have been run and is only useful if
! 'LEAF_REGISTERS' is defined.
  
  
  File: gccint.info,  Node: Stack Registers,  Prev: Leaf Functions,  Up: Registers
--- 35767,35789 ----
       function.
  
       If REGNO is a register number which should not appear in a leaf
!      function before renumbering, then the expression should yield âˆ’1,
       which will cause the compiler to abort.
  
       Define this macro only if the target machine offers a way to
       optimize the treatment of leaf functions, and registers need to be
       renumbered to do this.
  
!  â€˜TARGET_ASM_FUNCTION_PROLOGUEâ€™ and â€˜TARGET_ASM_FUNCTION_EPILOGUEâ€™ must
  usually treat leaf functions specially.  They can test the C variable
! â€˜current_function_is_leafâ€™ which is nonzero for leaf functions.
! â€˜current_function_is_leafâ€™ is set prior to local register allocation and
  is valid for the remaining compiler passes.  They can also test the C
! variable â€˜current_function_uses_only_leaf_regsâ€™ which is nonzero for
  leaf functions which only use leaf registers.
! â€˜current_function_uses_only_leaf_regsâ€™ is valid after all passes that
  modify the instructions have been run and is only useful if
! â€˜LEAF_REGISTERSâ€™ is defined.
  
  
  File: gccint.info,  Node: Stack Registers,  Prev: Leaf Functions,  Up: Registers
*************** stack.
*** 35796,35802 ****
  they must be consecutively numbered.  Furthermore, the existing support
  for stack-like registers is specific to the 80387 floating point
  coprocessor.  If you have a new architecture that uses stack-like
! registers, you will need to do substantial work on 'reg-stack.cc' and
  write your machine description to cooperate with it, as well as defining
  these macros.
  
--- 35800,35806 ----
  they must be consecutively numbered.  Furthermore, the existing support
  for stack-like registers is specific to the 80387 floating point
  coprocessor.  If you have a new architecture that uses stack-like
! registers, you will need to do substantial work on â€˜reg-stack.ccâ€™ and
  write your machine description to cooperate with it, as well as defining
  these macros.
  
*************** File: gccint.info,  Node: Register Class
*** 35824,35831 ****
  On many machines, the numbered registers are not all equivalent.  For
  example, certain registers may not be allowed for indexed addressing;
  certain registers may not be allowed in some instructions.  These
! machine restrictions are described to the compiler using "register
! classes".
  
   You define a number of register classes, giving each one a name and
  saying which of the registers belong to it.  Then you can specify
--- 35828,35835 ----
  On many machines, the numbered registers are not all equivalent.  For
  example, certain registers may not be allowed for indexed addressing;
  certain registers may not be allowed in some instructions.  These
! machine restrictions are described to the compiler using â€œregister
! classesâ€�.
  
   You define a number of register classes, giving each one a name and
  saying which of the registers belong to it.  Then you can specify
*************** register classes that are allowed as ope
*** 35833,35851 ****
  patterns.
  
   In general, each register will belong to several classes.  In fact, one
! class must be named 'ALL_REGS' and contain all the registers.  Another
! class must be named 'NO_REGS' and contain no registers.  Often the union
  of two classes will be another class; however, this is not required.
  
!  One of the classes must be named 'GENERAL_REGS'.  There is nothing
! terribly special about the name, but the operand constraint letters 'r'
! and 'g' specify this class.  If 'GENERAL_REGS' is the same as
! 'ALL_REGS', just define it as a macro which expands to 'ALL_REGS'.
  
   Order the classes so that if class X is contained in class Y then X has
  a lower class number than Y.
  
!  The way classes other than 'GENERAL_REGS' are specified in operand
  constraints is through machine-dependent operand constraint letters.
  You can define such letters to correspond to various classes, then use
  them in operand constraints.
--- 35837,35855 ----
  patterns.
  
   In general, each register will belong to several classes.  In fact, one
! class must be named â€˜ALL_REGSâ€™ and contain all the registers.  Another
! class must be named â€˜NO_REGSâ€™ and contain no registers.  Often the union
  of two classes will be another class; however, this is not required.
  
!  One of the classes must be named â€˜GENERAL_REGSâ€™.  There is nothing
! terribly special about the name, but the operand constraint letters â€˜râ€™
! and â€˜gâ€™ specify this class.  If â€˜GENERAL_REGSâ€™ is the same as
! â€˜ALL_REGSâ€™, just define it as a macro which expands to â€˜ALL_REGSâ€™.
  
   Order the classes so that if class X is contained in class Y then X has
  a lower class number than Y.
  
!  The way classes other than â€˜GENERAL_REGSâ€™ are specified in operand
  constraints is through machine-dependent operand constraint letters.
  You can define such letters to correspond to various classes, then use
  them in operand constraints.
*************** moving a register in the class to or fro
*** 35858,35867 ****
   You should define a class for the union of two classes whenever some
  instruction allows both classes.  For example, if an instruction allows
  either a floating point (coprocessor) register or a general register for
! a certain operand, you should define a class 'FLOAT_OR_GENERAL_REGS'
  which includes both of them.  Otherwise you will get suboptimal code, or
  even internal compiler errors when reload cannot find a register in the
! class computed via 'reg_class_subunion'.
  
   You must also specify certain redundant information about the register
  classes: for each class, which classes contain it and which ones are
--- 35862,35871 ----
   You should define a class for the union of two classes whenever some
  instruction allows both classes.  For example, if an instruction allows
  either a floating point (coprocessor) register or a general register for
! a certain operand, you should define a class â€˜FLOAT_OR_GENERAL_REGSâ€™
  which includes both of them.  Otherwise you will get suboptimal code, or
  even internal compiler errors when reload cannot find a register in the
! class computed via â€˜reg_class_subunionâ€™.
  
   You must also specify certain redundant information about the register
  classes: for each class, which classes contain it and which ones are
*************** in their union.
*** 35872,35900 ****
  certain class, all the registers used must belong to that class.
  Therefore, register classes cannot be used to enforce a requirement for
  a register pair to start with an even-numbered register.  The way to
! specify this requirement is with 'TARGET_HARD_REGNO_MODE_OK', or with a
! filter expression in a 'define_register_constraint'.
  
   Register classes used for input-operands of bitwise-and or shift
  instructions have a special requirement: each such class must have, for
  each fixed-point machine mode, a subclass whose registers can transfer
  that mode to or from memory.  For example, on some machines, the
! operations for single-byte values ('QImode') are limited to certain
  registers.  When this is so, each register class that is used in a
  bitwise-and or shift instruction must have a subclass consisting of
  registers from which single-byte values can be loaded or stored.  This
! is so that 'PREFERRED_RELOAD_CLASS' can always have a possible value to
  return.
  
   -- Data type: enum reg_class
       An enumerated type that must be defined with all the register class
!      names as enumerated values.  'NO_REGS' must be first.  'ALL_REGS'
       must be the last register class, followed by one more enumerated
!      value, 'LIM_REG_CLASSES', which is not a register class but rather
       tells how many classes there are.
  
       Each register class has a number, which is the value of casting the
!      class name to type 'int'.  The number serves as an index in many of
       the tables described below.
  
   -- Macro: N_REG_CLASSES
--- 35876,35904 ----
  certain class, all the registers used must belong to that class.
  Therefore, register classes cannot be used to enforce a requirement for
  a register pair to start with an even-numbered register.  The way to
! specify this requirement is with â€˜TARGET_HARD_REGNO_MODE_OKâ€™, or with a
! filter expression in a â€˜define_register_constraintâ€™.
  
   Register classes used for input-operands of bitwise-and or shift
  instructions have a special requirement: each such class must have, for
  each fixed-point machine mode, a subclass whose registers can transfer
  that mode to or from memory.  For example, on some machines, the
! operations for single-byte values (â€˜QImodeâ€™) are limited to certain
  registers.  When this is so, each register class that is used in a
  bitwise-and or shift instruction must have a subclass consisting of
  registers from which single-byte values can be loaded or stored.  This
! is so that â€˜PREFERRED_RELOAD_CLASSâ€™ can always have a possible value to
  return.
  
   -- Data type: enum reg_class
       An enumerated type that must be defined with all the register class
!      names as enumerated values.  â€˜NO_REGSâ€™ must be first.  â€˜ALL_REGSâ€™
       must be the last register class, followed by one more enumerated
!      value, â€˜LIM_REG_CLASSESâ€™, which is not a register class but rather
       tells how many classes there are.
  
       Each register class has a number, which is the value of casting the
!      class name to type â€˜intâ€™.  The number serves as an index in many of
       the tables described below.
  
   -- Macro: N_REG_CLASSES
*************** return.
*** 35911,35930 ****
       An initializer containing the contents of the register classes, as
       integers which are bit masks.  The Nth integer specifies the
       contents of class N.  The way the integer MASK is interpreted is
!      that register R is in the class if 'MASK & (1 << R)' is 1.
  
       When the machine has more than 32 registers, an integer does not
       suffice.  Then the integers are replaced by sub-initializers,
       braced groupings containing several integers.  Each sub-initializer
!      must be suitable as an initializer for the type 'HARD_REG_SET'
!      which is defined in 'hard-reg-set.h'.  In this situation, the first
       integer in each sub-initializer corresponds to registers 0 through
       31, the second integer to registers 32 through 63, and so on.
  
   -- Macro: REGNO_REG_CLASS (REGNO)
       A C expression whose value is a register class containing hard
       register REGNO.  In general there is more than one such class;
!      choose a class which is "minimal", meaning that no smaller class
       also contains the register.
  
   -- Macro: BASE_REG_CLASS
--- 35915,35934 ----
       An initializer containing the contents of the register classes, as
       integers which are bit masks.  The Nth integer specifies the
       contents of class N.  The way the integer MASK is interpreted is
!      that register R is in the class if â€˜MASK & (1 << R)â€™ is 1.
  
       When the machine has more than 32 registers, an integer does not
       suffice.  Then the integers are replaced by sub-initializers,
       braced groupings containing several integers.  Each sub-initializer
!      must be suitable as an initializer for the type â€˜HARD_REG_SETâ€™
!      which is defined in â€˜hard-reg-set.hâ€™.  In this situation, the first
       integer in each sub-initializer corresponds to registers 0 through
       31, the second integer to registers 32 through 63, and so on.
  
   -- Macro: REGNO_REG_CLASS (REGNO)
       A C expression whose value is a register class containing hard
       register REGNO.  In general there is more than one such class;
!      choose a class which is â€œminimalâ€�, meaning that no smaller class
       also contains the register.
  
   -- Macro: BASE_REG_CLASS
*************** return.
*** 35933,35942 ****
       address which is the register value plus a displacement.
  
   -- Macro: MODE_BASE_REG_CLASS (MODE)
!      This is a variation of the 'BASE_REG_CLASS' macro which allows the
       selection of a base register in a mode dependent manner.  If MODE
       is VOIDmode then it should return the same value as
!      'BASE_REG_CLASS'.
  
   -- Macro: MODE_BASE_REG_REG_CLASS (MODE)
       A C expression whose value is the register class to which a valid
--- 35937,35946 ----
       address which is the register value plus a displacement.
  
   -- Macro: MODE_BASE_REG_CLASS (MODE)
!      This is a variation of the â€˜BASE_REG_CLASSâ€™ macro which allows the
       selection of a base register in a mode dependent manner.  If MODE
       is VOIDmode then it should return the same value as
!      â€˜BASE_REG_CLASSâ€™.
  
   -- Macro: MODE_BASE_REG_REG_CLASS (MODE)
       A C expression whose value is the register class to which a valid
*************** return.
*** 35951,35960 ****
       base register for a memory reference in mode MODE to address space
       ADDRESS_SPACE must belong.  OUTER_CODE and INDEX_CODE define the
       context in which the base register occurs.  OUTER_CODE is the code
!      of the immediately enclosing expression ('MEM' for the top level of
!      an address, 'ADDRESS' for something that occurs in an
!      'address_operand').  INDEX_CODE is the code of the corresponding
!      index expression if OUTER_CODE is 'PLUS'; 'SCRATCH' otherwise.
  
   -- Macro: INSN_BASE_REG_CLASS (INSN)
       A C expression whose value is the register class to which a valid
--- 35955,35964 ----
       base register for a memory reference in mode MODE to address space
       ADDRESS_SPACE must belong.  OUTER_CODE and INDEX_CODE define the
       context in which the base register occurs.  OUTER_CODE is the code
!      of the immediately enclosing expression (â€˜MEMâ€™ for the top level of
!      an address, â€˜ADDRESSâ€™ for something that occurs in an
!      â€˜address_operandâ€™).  INDEX_CODE is the code of the corresponding
!      index expression if OUTER_CODE is â€˜PLUSâ€™; â€˜SCRATCHâ€™ otherwise.
  
   -- Macro: INSN_BASE_REG_CLASS (INSN)
       A C expression whose value is the register class to which a valid
*************** return.
*** 35975,35995 ****
       index register for a specified INSN must belong.  This macro is
       used when some backend insns may have limited usage of index
       register compared with other insns.  If you defined this macro, the
!      compiler will use it instead of 'INDEX_REG_CLASS'.
  
   -- Macro: REGNO_OK_FOR_BASE_P (NUM)
       A C expression which is nonzero if register number NUM is suitable
       for use as a base register in operand addresses.
  
   -- Macro: REGNO_MODE_OK_FOR_BASE_P (NUM, MODE)
!      A C expression that is just like 'REGNO_OK_FOR_BASE_P', except that
       that expression may examine the mode of the memory reference in
       MODE.  You should define this macro if the mode of the memory
       reference affects whether a register may be used as a base
       register.  If you define this macro, the compiler will use it
!      instead of 'REGNO_OK_FOR_BASE_P'.  The mode may be 'VOIDmode' for
!      addresses that appear outside a 'MEM', i.e., as an
!      'address_operand'.
  
   -- Macro: REGNO_MODE_OK_FOR_REG_BASE_P (NUM, MODE)
       A C expression which is nonzero if register number NUM is suitable
--- 35979,35999 ----
       index register for a specified INSN must belong.  This macro is
       used when some backend insns may have limited usage of index
       register compared with other insns.  If you defined this macro, the
!      compiler will use it instead of â€˜INDEX_REG_CLASSâ€™.
  
   -- Macro: REGNO_OK_FOR_BASE_P (NUM)
       A C expression which is nonzero if register number NUM is suitable
       for use as a base register in operand addresses.
  
   -- Macro: REGNO_MODE_OK_FOR_BASE_P (NUM, MODE)
!      A C expression that is just like â€˜REGNO_OK_FOR_BASE_Pâ€™, except that
       that expression may examine the mode of the memory reference in
       MODE.  You should define this macro if the mode of the memory
       reference affects whether a register may be used as a base
       register.  If you define this macro, the compiler will use it
!      instead of â€˜REGNO_OK_FOR_BASE_Pâ€™.  The mode may be â€˜VOIDmodeâ€™ for
!      addresses that appear outside a â€˜MEMâ€™, i.e., as an
!      â€˜address_operandâ€™.
  
   -- Macro: REGNO_MODE_OK_FOR_REG_BASE_P (NUM, MODE)
       A C expression which is nonzero if register number NUM is suitable
*************** return.
*** 36001,36021 ****
       uses.
  
       Use of this macro is deprecated; please use the more general
!      'REGNO_MODE_CODE_OK_FOR_BASE_P'.
  
   -- Macro: REGNO_MODE_CODE_OK_FOR_BASE_P (NUM, MODE, ADDRESS_SPACE,
            OUTER_CODE, INDEX_CODE)
       A C expression which is nonzero if register number NUM is suitable
       for use as a base register in operand addresses, accessing memory
       in mode MODE in address space ADDRESS_SPACE.  This is similar to
!      'REGNO_MODE_OK_FOR_BASE_P', except that that expression may examine
       the context in which the register appears in the memory reference.
       OUTER_CODE is the code of the immediately enclosing expression
!      ('MEM' if at the top level of the address, 'ADDRESS' for something
!      that occurs in an 'address_operand').  INDEX_CODE is the code of
!      the corresponding index expression if OUTER_CODE is 'PLUS';
!      'SCRATCH' otherwise.  The mode may be 'VOIDmode' for addresses that
!      appear outside a 'MEM', i.e., as an 'address_operand'.
  
   -- Macro: REGNO_OK_FOR_INSN_BASE_P (NUM, INSN)
       A C expression which is nonzero if register number NUM is suitable
--- 36005,36025 ----
       uses.
  
       Use of this macro is deprecated; please use the more general
!      â€˜REGNO_MODE_CODE_OK_FOR_BASE_Pâ€™.
  
   -- Macro: REGNO_MODE_CODE_OK_FOR_BASE_P (NUM, MODE, ADDRESS_SPACE,
            OUTER_CODE, INDEX_CODE)
       A C expression which is nonzero if register number NUM is suitable
       for use as a base register in operand addresses, accessing memory
       in mode MODE in address space ADDRESS_SPACE.  This is similar to
!      â€˜REGNO_MODE_OK_FOR_BASE_Pâ€™, except that that expression may examine
       the context in which the register appears in the memory reference.
       OUTER_CODE is the code of the immediately enclosing expression
!      (â€˜MEMâ€™ if at the top level of the address, â€˜ADDRESSâ€™ for something
!      that occurs in an â€˜address_operandâ€™).  INDEX_CODE is the code of
!      the corresponding index expression if OUTER_CODE is â€˜PLUSâ€™;
!      â€˜SCRATCHâ€™ otherwise.  The mode may be â€˜VOIDmodeâ€™ for addresses that
!      appear outside a â€˜MEMâ€™, i.e., as an â€˜address_operandâ€™.
  
   -- Macro: REGNO_OK_FOR_INSN_BASE_P (NUM, INSN)
       A C expression which is nonzero if register number NUM is suitable
*************** return.
*** 36045,36055 ****
       A target hook that places additional preference on the register
       class to use when it is necessary to rename a register in class
       RCLASS to another class, or perhaps NO_REGS, if no preferred
!      register class is found or hook 'preferred_rename_class' is not
       implemented.  Sometimes returning a more restrictive class makes
       better code.  For example, on ARM, thumb-2 instructions using
!      'LO_REGS' may be smaller than instructions using 'GENERIC_REGS'.
!      By returning 'LO_REGS' from 'preferred_rename_class', code size can
       be reduced.
  
   -- Target Hook: reg_class_t TARGET_PREFERRED_RELOAD_CLASS (rtx X,
--- 36049,36059 ----
       A target hook that places additional preference on the register
       class to use when it is necessary to rename a register in class
       RCLASS to another class, or perhaps NO_REGS, if no preferred
!      register class is found or hook â€˜preferred_rename_classâ€™ is not
       implemented.  Sometimes returning a more restrictive class makes
       better code.  For example, on ARM, thumb-2 instructions using
!      â€˜LO_REGSâ€™ may be smaller than instructions using â€˜GENERIC_REGSâ€™.
!      By returning â€˜LO_REGSâ€™ from â€˜preferred_rename_classâ€™, code size can
       be reduced.
  
   -- Target Hook: reg_class_t TARGET_PREFERRED_RELOAD_CLASS (rtx X,
*************** return.
*** 36059,36089 ****
       in class RCLASS.  The value is a register class; perhaps RCLASS, or
       perhaps another, smaller class.
  
!      The default version of this hook always returns value of 'rclass'
       argument.
  
       Sometimes returning a more restrictive class makes better code.
       For example, on the 68000, when X is an integer constant that is in
!      range for a 'moveq' instruction, the value of this macro is always
!      'DATA_REGS' as long as RCLASS includes the data registers.
!      Requiring a data register guarantees that a 'moveq' will be used.
  
!      One case where 'TARGET_PREFERRED_RELOAD_CLASS' must not return
       RCLASS is if X is a legitimate constant which cannot be loaded into
!      some register class.  By returning 'NO_REGS' you can force X into a
       memory location.  For example, rs6000 can load immediate values
       into general-purpose registers, but does not have an instruction
       for loading an immediate value into a floating-point register, so
!      'TARGET_PREFERRED_RELOAD_CLASS' returns 'NO_REGS' when X is a
       floating-point constant.  If the constant can't be loaded into any
       kind of register, code generation will be better if
!      'TARGET_LEGITIMATE_CONSTANT_P' makes the constant illegitimate
!      instead of using 'TARGET_PREFERRED_RELOAD_CLASS'.
  
       If an insn has pseudos in it after register allocation, reload will
       go through the alternatives and call repeatedly
!      'TARGET_PREFERRED_RELOAD_CLASS' to find the best one.  Returning
!      'NO_REGS', in this case, makes reload add a '!' in front of the
       constraint: the x86 back-end uses this feature to discourage usage
       of 387 registers when math is done in the SSE registers (and vice
       versa).
--- 36063,36093 ----
       in class RCLASS.  The value is a register class; perhaps RCLASS, or
       perhaps another, smaller class.
  
!      The default version of this hook always returns value of â€˜rclassâ€™
       argument.
  
       Sometimes returning a more restrictive class makes better code.
       For example, on the 68000, when X is an integer constant that is in
!      range for a â€˜moveqâ€™ instruction, the value of this macro is always
!      â€˜DATA_REGSâ€™ as long as RCLASS includes the data registers.
!      Requiring a data register guarantees that a â€˜moveqâ€™ will be used.
  
!      One case where â€˜TARGET_PREFERRED_RELOAD_CLASSâ€™ must not return
       RCLASS is if X is a legitimate constant which cannot be loaded into
!      some register class.  By returning â€˜NO_REGSâ€™ you can force X into a
       memory location.  For example, rs6000 can load immediate values
       into general-purpose registers, but does not have an instruction
       for loading an immediate value into a floating-point register, so
!      â€˜TARGET_PREFERRED_RELOAD_CLASSâ€™ returns â€˜NO_REGSâ€™ when X is a
       floating-point constant.  If the constant can't be loaded into any
       kind of register, code generation will be better if
!      â€˜TARGET_LEGITIMATE_CONSTANT_Pâ€™ makes the constant illegitimate
!      instead of using â€˜TARGET_PREFERRED_RELOAD_CLASSâ€™.
  
       If an insn has pseudos in it after register allocation, reload will
       go through the alternatives and call repeatedly
!      â€˜TARGET_PREFERRED_RELOAD_CLASSâ€™ to find the best one.  Returning
!      â€˜NO_REGSâ€™, in this case, makes reload add a â€˜!â€™ in front of the
       constraint: the x86 back-end uses this feature to discourage usage
       of 387 registers when math is done in the SSE registers (and vice
       versa).
*************** return.
*** 36099,36139 ****
  
       Sometimes returning a more restrictive class makes better code.
       For example, on the 68000, when X is an integer constant that is in
!      range for a 'moveq' instruction, the value of this macro is always
!      'DATA_REGS' as long as CLASS includes the data registers.
!      Requiring a data register guarantees that a 'moveq' will be used.
  
!      One case where 'PREFERRED_RELOAD_CLASS' must not return CLASS is if
       X is a legitimate constant which cannot be loaded into some
!      register class.  By returning 'NO_REGS' you can force X into a
       memory location.  For example, rs6000 can load immediate values
       into general-purpose registers, but does not have an instruction
       for loading an immediate value into a floating-point register, so
!      'PREFERRED_RELOAD_CLASS' returns 'NO_REGS' when X is a
       floating-point constant.  If the constant cannot be loaded into any
       kind of register, code generation will be better if
!      'TARGET_LEGITIMATE_CONSTANT_P' makes the constant illegitimate
!      instead of using 'TARGET_PREFERRED_RELOAD_CLASS'.
  
       If an insn has pseudos in it after register allocation, reload will
       go through the alternatives and call repeatedly
!      'PREFERRED_RELOAD_CLASS' to find the best one.  Returning
!      'NO_REGS', in this case, makes reload add a '!' in front of the
       constraint: the x86 back-end uses this feature to discourage usage
       of 387 registers when math is done in the SSE registers (and vice
       versa).
  
   -- Target Hook: reg_class_t TARGET_PREFERRED_OUTPUT_RELOAD_CLASS (rtx
            X, reg_class_t RCLASS)
!      Like 'TARGET_PREFERRED_RELOAD_CLASS', but for output reloads
       instead of input reloads.
  
!      The default version of this hook always returns value of 'rclass'
       argument.
  
!      You can also use 'TARGET_PREFERRED_OUTPUT_RELOAD_CLASS' to
       discourage reload from using some alternatives, like
!      'TARGET_PREFERRED_RELOAD_CLASS'.
  
   -- Macro: LIMIT_RELOAD_CLASS (MODE, CLASS)
       A C expression that places additional restrictions on the register
--- 36103,36143 ----
  
       Sometimes returning a more restrictive class makes better code.
       For example, on the 68000, when X is an integer constant that is in
!      range for a â€˜moveqâ€™ instruction, the value of this macro is always
!      â€˜DATA_REGSâ€™ as long as CLASS includes the data registers.
!      Requiring a data register guarantees that a â€˜moveqâ€™ will be used.
  
!      One case where â€˜PREFERRED_RELOAD_CLASSâ€™ must not return CLASS is if
       X is a legitimate constant which cannot be loaded into some
!      register class.  By returning â€˜NO_REGSâ€™ you can force X into a
       memory location.  For example, rs6000 can load immediate values
       into general-purpose registers, but does not have an instruction
       for loading an immediate value into a floating-point register, so
!      â€˜PREFERRED_RELOAD_CLASSâ€™ returns â€˜NO_REGSâ€™ when X is a
       floating-point constant.  If the constant cannot be loaded into any
       kind of register, code generation will be better if
!      â€˜TARGET_LEGITIMATE_CONSTANT_Pâ€™ makes the constant illegitimate
!      instead of using â€˜TARGET_PREFERRED_RELOAD_CLASSâ€™.
  
       If an insn has pseudos in it after register allocation, reload will
       go through the alternatives and call repeatedly
!      â€˜PREFERRED_RELOAD_CLASSâ€™ to find the best one.  Returning
!      â€˜NO_REGSâ€™, in this case, makes reload add a â€˜!â€™ in front of the
       constraint: the x86 back-end uses this feature to discourage usage
       of 387 registers when math is done in the SSE registers (and vice
       versa).
  
   -- Target Hook: reg_class_t TARGET_PREFERRED_OUTPUT_RELOAD_CLASS (rtx
            X, reg_class_t RCLASS)
!      Like â€˜TARGET_PREFERRED_RELOAD_CLASSâ€™, but for output reloads
       instead of input reloads.
  
!      The default version of this hook always returns value of â€˜rclassâ€™
       argument.
  
!      You can also use â€˜TARGET_PREFERRED_OUTPUT_RELOAD_CLASSâ€™ to
       discourage reload from using some alternatives, like
!      â€˜TARGET_PREFERRED_RELOAD_CLASSâ€™.
  
   -- Macro: LIMIT_RELOAD_CLASS (MODE, CLASS)
       A C expression that places additional restrictions on the register
*************** return.
*** 36141,36147 ****
       mode MODE in a reload register for which class CLASS would
       ordinarily be used.
  
!      Unlike 'PREFERRED_RELOAD_CLASS', this macro should be used when
       there are certain modes that simply cannot go in certain reload
       classes.
  
--- 36145,36151 ----
       mode MODE in a reload register for which class CLASS would
       ordinarily be used.
  
!      Unlike â€˜PREFERRED_RELOAD_CLASSâ€™, this macro should be used when
       there are certain modes that simply cannot go in certain reload
       classes.
  
*************** return.
*** 36156,36162 ****
            secondary_reload_info *SRI)
       Many machines have some registers that cannot be copied directly to
       or from memory or even from other types of registers.  An example
!      is the 'MQ' register, which on most machines, can only be copied to
       or from general registers, but not memory.  Below, we shall be
       using the term 'intermediate register' when a move operation cannot
       be performed directly, but has to be done by copying the source
--- 36160,36166 ----
            secondary_reload_info *SRI)
       Many machines have some registers that cannot be copied directly to
       or from memory or even from other types of registers.  An example
!      is the â€˜MQâ€™ register, which on most machines, can only be copied to
       or from general registers, but not memory.  Below, we shall be
       using the term 'intermediate register' when a move operation cannot
       be performed directly, but has to be done by copying the source
*************** return.
*** 36189,36195 ****
       needs to be copied to rtx X in RELOAD_MODE.
  
       If copying a register of RELOAD_CLASS from/to X requires an
!      intermediate register, the hook 'secondary_reload' should return
       the register class required for this intermediate register.  If no
       intermediate register is required, it should return NO_REGS. If
       more than one intermediate register is required, describe the one
--- 36193,36199 ----
       needs to be copied to rtx X in RELOAD_MODE.
  
       If copying a register of RELOAD_CLASS from/to X requires an
!      intermediate register, the hook â€˜secondary_reloadâ€™ should return
       the register class required for this intermediate register.  If no
       intermediate register is required, it should return NO_REGS. If
       more than one intermediate register is required, describe the one
*************** return.
*** 36201,36268 ****
       but still a scratch register is needed, describe the copy from/to
       the reload register to/from the reload operand X.
  
!      You do this by setting 'sri->icode' to the instruction code of a
       pattern in the md file which performs the move.  Operands 0 and 1
       are the output and input of this copy, respectively.  Operands from
       operand 2 onward are for scratch operands.  These scratch operands
       must have a mode, and a single-register-class output constraint.
  
!      When an intermediate register is used, the 'secondary_reload' hook
       will be called again to determine how to copy the intermediate
       register to/from the reload operand X, so your hook must also have
       code to handle the register class of the intermediate operand.
  
!      X might be a pseudo-register or a 'subreg' of a pseudo-register,
       which could either be in a hard register or in memory.  Use
!      'true_regnum' to find out; it will return -1 if the pseudo is in
       memory and the hard register number if it is in a register.
  
!      Scratch operands in memory (constraint '"=m"' / '"=&m"') are
       currently not supported.  For the time being, you will have to
!      continue to use 'TARGET_SECONDARY_MEMORY_NEEDED' for that purpose.
  
!      'copy_cost' also uses this target hook to find out how values are
       copied.  If you want it to include some extra cost for the need to
!      allocate (a) scratch register(s), set 'sri->extra_cost' to the
       additional cost.  Or if two dependent moves are supposed to have a
       lower cost than the sum of the individual moves due to expected
       fortuitous scheduling and/or special forwarding logic, you can set
!      'sri->extra_cost' to a negative amount.
  
   -- Macro: SECONDARY_RELOAD_CLASS (CLASS, MODE, X)
   -- Macro: SECONDARY_INPUT_RELOAD_CLASS (CLASS, MODE, X)
   -- Macro: SECONDARY_OUTPUT_RELOAD_CLASS (CLASS, MODE, X)
       These macros are obsolete, new ports should use the target hook
!      'TARGET_SECONDARY_RELOAD' instead.
  
       These are obsolete macros, replaced by the
!      'TARGET_SECONDARY_RELOAD' target hook.  Older ports still define
       these macros to indicate to the reload phase that it may need to
       allocate at least one register for a reload in addition to the
       register to contain the data.  Specifically, if copying X to a
       register CLASS in MODE requires an intermediate register, you were
!      supposed to define 'SECONDARY_INPUT_RELOAD_CLASS' to return the
       largest register class all of whose registers can be used as
       intermediate registers or scratch registers.
  
       If copying a register CLASS in MODE to X requires an intermediate
!      or scratch register, 'SECONDARY_OUTPUT_RELOAD_CLASS' was supposed
       to be defined to return the largest register class required.  If
       the requirements for input and output reloads were the same, the
!      macro 'SECONDARY_RELOAD_CLASS' should have been used instead of
       defining both macros identically.
  
!      The values returned by these macros are often 'GENERAL_REGS'.
!      Return 'NO_REGS' if no spare register is needed; i.e., if X can be
       directly copied to or from a register of CLASS in MODE without
       requiring a scratch register.  Do not define this macro if it would
!      always return 'NO_REGS'.
  
       If a scratch register is required (either with or without an
       intermediate register), you were supposed to define patterns for
!      'reload_inM' or 'reload_outM', as required (*note Standard Names::.
       These patterns, which were normally implemented with a
!      'define_expand', should be similar to the 'movM' patterns, except
       that operand 2 is the scratch register.
  
       These patterns need constraints for the reload register and scratch
--- 36205,36272 ----
       but still a scratch register is needed, describe the copy from/to
       the reload register to/from the reload operand X.
  
!      You do this by setting â€˜sri->icodeâ€™ to the instruction code of a
       pattern in the md file which performs the move.  Operands 0 and 1
       are the output and input of this copy, respectively.  Operands from
       operand 2 onward are for scratch operands.  These scratch operands
       must have a mode, and a single-register-class output constraint.
  
!      When an intermediate register is used, the â€˜secondary_reloadâ€™ hook
       will be called again to determine how to copy the intermediate
       register to/from the reload operand X, so your hook must also have
       code to handle the register class of the intermediate operand.
  
!      X might be a pseudo-register or a â€˜subregâ€™ of a pseudo-register,
       which could either be in a hard register or in memory.  Use
!      â€˜true_regnumâ€™ to find out; it will return âˆ’1 if the pseudo is in
       memory and the hard register number if it is in a register.
  
!      Scratch operands in memory (constraint â€˜"=m"â€™ / â€˜"=&m"â€™) are
       currently not supported.  For the time being, you will have to
!      continue to use â€˜TARGET_SECONDARY_MEMORY_NEEDEDâ€™ for that purpose.
  
!      â€˜copy_costâ€™ also uses this target hook to find out how values are
       copied.  If you want it to include some extra cost for the need to
!      allocate (a) scratch register(s), set â€˜sri->extra_costâ€™ to the
       additional cost.  Or if two dependent moves are supposed to have a
       lower cost than the sum of the individual moves due to expected
       fortuitous scheduling and/or special forwarding logic, you can set
!      â€˜sri->extra_costâ€™ to a negative amount.
  
   -- Macro: SECONDARY_RELOAD_CLASS (CLASS, MODE, X)
   -- Macro: SECONDARY_INPUT_RELOAD_CLASS (CLASS, MODE, X)
   -- Macro: SECONDARY_OUTPUT_RELOAD_CLASS (CLASS, MODE, X)
       These macros are obsolete, new ports should use the target hook
!      â€˜TARGET_SECONDARY_RELOADâ€™ instead.
  
       These are obsolete macros, replaced by the
!      â€˜TARGET_SECONDARY_RELOADâ€™ target hook.  Older ports still define
       these macros to indicate to the reload phase that it may need to
       allocate at least one register for a reload in addition to the
       register to contain the data.  Specifically, if copying X to a
       register CLASS in MODE requires an intermediate register, you were
!      supposed to define â€˜SECONDARY_INPUT_RELOAD_CLASSâ€™ to return the
       largest register class all of whose registers can be used as
       intermediate registers or scratch registers.
  
       If copying a register CLASS in MODE to X requires an intermediate
!      or scratch register, â€˜SECONDARY_OUTPUT_RELOAD_CLASSâ€™ was supposed
       to be defined to return the largest register class required.  If
       the requirements for input and output reloads were the same, the
!      macro â€˜SECONDARY_RELOAD_CLASSâ€™ should have been used instead of
       defining both macros identically.
  
!      The values returned by these macros are often â€˜GENERAL_REGSâ€™.
!      Return â€˜NO_REGSâ€™ if no spare register is needed; i.e., if X can be
       directly copied to or from a register of CLASS in MODE without
       requiring a scratch register.  Do not define this macro if it would
!      always return â€˜NO_REGSâ€™.
  
       If a scratch register is required (either with or without an
       intermediate register), you were supposed to define patterns for
!      â€˜reload_inMâ€™ or â€˜reload_outMâ€™, as required (*note Standard Names::.
       These patterns, which were normally implemented with a
!      â€˜define_expandâ€™, should be similar to the â€˜movMâ€™ patterns, except
       that operand 2 is the scratch register.
  
       These patterns need constraints for the reload register and scratch
*************** return.
*** 36273,36288 ****
       reload registers are required.  Their classes are obtained from the
       constraints in the insn pattern.
  
!      X might be a pseudo-register or a 'subreg' of a pseudo-register,
       which could either be in a hard register or in memory.  Use
!      'true_regnum' to find out; it will return -1 if the pseudo is in
       memory and the hard register number if it is in a register.
  
       These macros should not be used in the case where a particular
       class of registers can only be copied to memory and not to another
       class of registers.  In that case, secondary reload registers are
       not needed and would not be helpful.  Instead, a stack location
!      must be used to perform the copy and the 'movM' pattern should use
       memory as an intermediate storage.  This case often occurs between
       floating-point and general registers.
  
--- 36277,36292 ----
       reload registers are required.  Their classes are obtained from the
       constraints in the insn pattern.
  
!      X might be a pseudo-register or a â€˜subregâ€™ of a pseudo-register,
       which could either be in a hard register or in memory.  Use
!      â€˜true_regnumâ€™ to find out; it will return âˆ’1 if the pseudo is in
       memory and the hard register number if it is in a register.
  
       These macros should not be used in the case where a particular
       class of registers can only be copied to memory and not to another
       class of registers.  In that case, secondary reload registers are
       not needed and would not be helpful.  Instead, a stack location
!      must be used to perform the copy and the â€˜movMâ€™ pattern should use
       memory as an intermediate storage.  This case often occurs between
       floating-point and general registers.
  
*************** return.
*** 36297,36317 ****
       false for all inputs.
  
   -- Macro: SECONDARY_MEMORY_NEEDED_RTX (MODE)
!      Normally when 'TARGET_SECONDARY_MEMORY_NEEDED' is defined, the
       compiler allocates a stack slot for a memory location needed for
       register copies.  If this macro is defined, the compiler instead
       uses the memory location defined by this macro.
  
       Do not define this macro if you do not define
!      'TARGET_SECONDARY_MEMORY_NEEDED'.
  
   -- Target Hook: machine_mode TARGET_SECONDARY_MEMORY_NEEDED_MODE
            (machine_mode MODE)
!      If 'TARGET_SECONDARY_MEMORY_NEEDED' tells the compiler to use
       memory when moving between two particular registers of mode MODE,
       this hook specifies the mode that the memory should have.
  
!      The default depends on 'TARGET_LRA_P'.  Without LRA, the default is
       to use a word-sized mode for integral modes that are smaller than a
       a word.  This is right thing to do on most machines because it
       ensures that all bits of the register are copied and prevents
--- 36301,36321 ----
       false for all inputs.
  
   -- Macro: SECONDARY_MEMORY_NEEDED_RTX (MODE)
!      Normally when â€˜TARGET_SECONDARY_MEMORY_NEEDEDâ€™ is defined, the
       compiler allocates a stack slot for a memory location needed for
       register copies.  If this macro is defined, the compiler instead
       uses the memory location defined by this macro.
  
       Do not define this macro if you do not define
!      â€˜TARGET_SECONDARY_MEMORY_NEEDEDâ€™.
  
   -- Target Hook: machine_mode TARGET_SECONDARY_MEMORY_NEEDED_MODE
            (machine_mode MODE)
!      If â€˜TARGET_SECONDARY_MEMORY_NEEDEDâ€™ tells the compiler to use
       memory when moving between two particular registers of mode MODE,
       this hook specifies the mode that the memory should have.
  
!      The default depends on â€˜TARGET_LRA_Pâ€™.  Without LRA, the default is
       to use a word-sized mode for integral modes that are smaller than a
       a word.  This is right thing to do on most machines because it
       ensures that all bits of the register are copied and prevents
*************** return.
*** 36323,36329 ****
       registers differently than in integer registers.  On those
       machines, the default widening will not work correctly and you must
       define this hook to suppress that widening in some cases.  See the
!      file 'alpha.cc' for details.
  
       With LRA, the default is to use MODE unmodified.
  
--- 36327,36333 ----
       registers differently than in integer registers.  On those
       machines, the default widening will not work correctly and you must
       define this hook to suppress that widening in some cases.  See the
!      file â€˜alpha.ccâ€™ for details.
  
       With LRA, the default is to use MODE unmodified.
  
*************** return.
*** 36339,36350 ****
       has the effect of disabling the early rematerialization pass.
  
   -- Target Hook: bool TARGET_CLASS_LIKELY_SPILLED_P (reg_class_t RCLASS)
!      A target hook which returns 'true' if pseudos that have been
       assigned to registers of class RCLASS would likely be spilled
       because registers of RCLASS are needed for spill registers.
  
!      The default version of this target hook returns 'true' if RCLASS
!      has exactly one register and 'false' otherwise.  On most machines,
       this default should be used.  For generally register-starved
       machines, such as i386, or machines with right register
       constraints, such as SH, this hook can be used to avoid excessive
--- 36343,36354 ----
       has the effect of disabling the early rematerialization pass.
  
   -- Target Hook: bool TARGET_CLASS_LIKELY_SPILLED_P (reg_class_t RCLASS)
!      A target hook which returns â€˜trueâ€™ if pseudos that have been
       assigned to registers of class RCLASS would likely be spilled
       because registers of RCLASS are needed for spill registers.
  
!      The default version of this target hook returns â€˜trueâ€™ if RCLASS
!      has exactly one register and â€˜falseâ€™ otherwise.  On most machines,
       this default should be used.  For generally register-starved
       machines, such as i386, or machines with right register
       constraints, such as SH, this hook can be used to avoid excessive
*************** return.
*** 36359,36368 ****
       A target hook returns the maximum number of consecutive registers
       of class RCLASS needed to hold a value of mode MODE.
  
!      This is closely related to the macro 'TARGET_HARD_REGNO_NREGS'.  In
!      fact, the value returned by 'TARGET_CLASS_MAX_NREGS (RCLASS, MODE)'
!      target hook should be the maximum value of 'TARGET_HARD_REGNO_NREGS
!      (REGNO, MODE)' for all REGNO values in the class RCLASS.
  
       This target hook helps control the handling of multiple-word values
       in the reload pass.
--- 36363,36372 ----
       A target hook returns the maximum number of consecutive registers
       of class RCLASS needed to hold a value of mode MODE.
  
!      This is closely related to the macro â€˜TARGET_HARD_REGNO_NREGSâ€™.  In
!      fact, the value returned by â€˜TARGET_CLASS_MAX_NREGS (RCLASS, MODE)â€™
!      target hook should be the maximum value of â€˜TARGET_HARD_REGNO_NREGS
!      (REGNO, MODE)â€™ for all REGNO values in the class RCLASS.
  
       This target hook helps control the handling of multiple-word values
       in the reload pass.
*************** return.
*** 36374,36382 ****
       A C expression for the maximum number of consecutive registers of
       class CLASS needed to hold a value of mode MODE.
  
!      This is closely related to the macro 'TARGET_HARD_REGNO_NREGS'.  In
!      fact, the value of the macro 'CLASS_MAX_NREGS (CLASS, MODE)' should
!      be the maximum value of 'TARGET_HARD_REGNO_NREGS (REGNO, MODE)' for
       all REGNO values in the class CLASS.
  
       This macro helps control the handling of multiple-word values in
--- 36378,36386 ----
       A C expression for the maximum number of consecutive registers of
       class CLASS needed to hold a value of mode MODE.
  
!      This is closely related to the macro â€˜TARGET_HARD_REGNO_NREGSâ€™.  In
!      fact, the value of the macro â€˜CLASS_MAX_NREGS (CLASS, MODE)â€™ should
!      be the maximum value of â€˜TARGET_HARD_REGNO_NREGS (REGNO, MODE)â€™ for
       all REGNO values in the class CLASS.
  
       This macro helps control the handling of multiple-word values in
*************** return.
*** 36388,36412 ****
       registers of class RCLASS from mode FROM to mode TO and if doing so
       preserves the low-order bits that are common to both modes.  The
       result is only meaningful if RCLASS has registers that can hold
!      both 'from' and 'to'.  The default implementation returns true.
  
       As an example of when such bitcasting is invalid, loading 32-bit
       integer or floating-point objects into floating-point registers on
       Alpha extends them to 64 bits.  Therefore loading a 64-bit object
       and then storing it as a 32-bit object does not store the low-order
       32 bits, as would be the case for a normal register.  Therefore,
!      'alpha.h' defines 'TARGET_CAN_CHANGE_MODE_CLASS' to return:
  
            (GET_MODE_SIZE (from) == GET_MODE_SIZE (to)
             || !reg_classes_intersect_p (FLOAT_REGS, rclass))
  
       Even if storing from a register in mode TO would be valid, if both
!      FROM and 'raw_reg_mode' for RCLASS are wider than 'word_mode', then
       we must prevent TO narrowing the mode.  This happens when the
       middle-end assumes that it can load or store pieces of an N-word
       pseudo, and that the pseudo will eventually be allocated to N
!      'word_mode' hard registers.  Failure to prevent this kind of mode
!      change will result in the entire 'raw_reg_mode' being modified
       instead of the partial value that the middle-end intended.
  
   -- Target Hook: reg_class_t TARGET_IRA_CHANGE_PSEUDO_ALLOCNO_CLASS
--- 36392,36416 ----
       registers of class RCLASS from mode FROM to mode TO and if doing so
       preserves the low-order bits that are common to both modes.  The
       result is only meaningful if RCLASS has registers that can hold
!      both â€˜fromâ€™ and â€˜toâ€™.  The default implementation returns true.
  
       As an example of when such bitcasting is invalid, loading 32-bit
       integer or floating-point objects into floating-point registers on
       Alpha extends them to 64 bits.  Therefore loading a 64-bit object
       and then storing it as a 32-bit object does not store the low-order
       32 bits, as would be the case for a normal register.  Therefore,
!      â€˜alpha.hâ€™ defines â€˜TARGET_CAN_CHANGE_MODE_CLASSâ€™ to return:
  
            (GET_MODE_SIZE (from) == GET_MODE_SIZE (to)
             || !reg_classes_intersect_p (FLOAT_REGS, rclass))
  
       Even if storing from a register in mode TO would be valid, if both
!      FROM and â€˜raw_reg_modeâ€™ for RCLASS are wider than â€˜word_modeâ€™, then
       we must prevent TO narrowing the mode.  This happens when the
       middle-end assumes that it can load or store pieces of an N-word
       pseudo, and that the pseudo will eventually be allocated to N
!      â€˜word_modeâ€™ hard registers.  Failure to prevent this kind of mode
!      change will result in the entire â€˜raw_reg_modeâ€™ being modified
       instead of the partial value that the middle-end intended.
  
   -- Target Hook: reg_class_t TARGET_IRA_CHANGE_PSEUDO_ALLOCNO_CLASS
*************** return.
*** 36455,36463 ****
       The default version of this target hook returns always false.
  
   -- Target Hook: bool TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P (rtx SUBST)
!      A target hook which returns 'true' if SUBST can't substitute safely
       pseudos with equivalent memory values during register allocation.
!      The default version of this target hook returns 'false'.  On most
       machines, this default should be used.  For generally machines with
       non orthogonal register usage for addressing, such as SH, this hook
       can be used to avoid excessive spilling.
--- 36459,36467 ----
       The default version of this target hook returns always false.
  
   -- Target Hook: bool TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P (rtx SUBST)
!      A target hook which returns â€˜trueâ€™ if SUBST can't substitute safely
       pseudos with equivalent memory values during register allocation.
!      The default version of this target hook returns â€˜falseâ€™.  On most
       machines, this default should be used.  For generally machines with
       non orthogonal register usage for addressing, such as SH, this hook
       can be used to avoid excessive spilling.
*************** return.
*** 36479,36495 ****
   -- Target Hook: reg_class_t TARGET_SPILL_CLASS (reg_class_t,
            MACHINE_MODE)
       This hook defines a class of registers which could be used for
!      spilling pseudos of the given mode and class, or 'NO_REGS' if only
       memory should be used.  Not defining this hook is equivalent to
!      returning 'NO_REGS' for all inputs.
  
   -- Target Hook: bool TARGET_ADDITIONAL_ALLOCNO_CLASS_P (reg_class_t)
!      This hook should return 'true' if given class of registers should
       be an allocno class in any way.  Usually RA uses only one register
       class from all classes containing the same register set.  In some
       complicated cases, you need to have two or more such classes as
       allocno ones for RA correct work.  Not defining this hook is
!      equivalent to returning 'false' for all inputs.
  
   -- Target Hook: scalar_int_mode TARGET_CSTORE_MODE (enum insn_code
            ICODE)
--- 36483,36499 ----
   -- Target Hook: reg_class_t TARGET_SPILL_CLASS (reg_class_t,
            MACHINE_MODE)
       This hook defines a class of registers which could be used for
!      spilling pseudos of the given mode and class, or â€˜NO_REGSâ€™ if only
       memory should be used.  Not defining this hook is equivalent to
!      returning â€˜NO_REGSâ€™ for all inputs.
  
   -- Target Hook: bool TARGET_ADDITIONAL_ALLOCNO_CLASS_P (reg_class_t)
!      This hook should return â€˜trueâ€™ if given class of registers should
       be an allocno class in any way.  Usually RA uses only one register
       class from all classes containing the same register set.  In some
       complicated cases, you need to have two or more such classes as
       allocno ones for RA correct work.  Not defining this hook is
!      equivalent to returning â€˜falseâ€™ for all inputs.
  
   -- Target Hook: scalar_int_mode TARGET_CSTORE_MODE (enum insn_code
            ICODE)
*************** Here is the basic stack layout.
*** 36548,36563 ****
  
   -- Macro: STACK_PUSH_CODE
       This macro defines the operation used when something is pushed on
!      the stack.  In RTL, a push operation will be '(set (mem
!      (STACK_PUSH_CODE (reg sp))) ...)'
  
!      The choices are 'PRE_DEC', 'POST_DEC', 'PRE_INC', and 'POST_INC'.
       Which of these is correct depends on the stack direction and on
       whether the stack pointer points to the last item on the stack or
       whether it points to the space for the next item on the stack.
  
!      The default is 'PRE_DEC' when 'STACK_GROWS_DOWNWARD' is true, which
!      is almost always right, and 'PRE_INC' otherwise, which is often
       wrong.
  
   -- Macro: FRAME_GROWS_DOWNWARD
--- 36552,36567 ----
  
   -- Macro: STACK_PUSH_CODE
       This macro defines the operation used when something is pushed on
!      the stack.  In RTL, a push operation will be â€˜(set (mem
!      (STACK_PUSH_CODE (reg sp))) ...)â€™
  
!      The choices are â€˜PRE_DECâ€™, â€˜POST_DECâ€™, â€˜PRE_INCâ€™, and â€˜POST_INCâ€™.
       Which of these is correct depends on the stack direction and on
       whether the stack pointer points to the last item on the stack or
       whether it points to the space for the next item on the stack.
  
!      The default is â€˜PRE_DECâ€™ when â€˜STACK_GROWS_DOWNWARDâ€™ is true, which
!      is almost always right, and â€˜PRE_INCâ€™ otherwise, which is often
       wrong.
  
   -- Macro: FRAME_GROWS_DOWNWARD
*************** Here is the basic stack layout.
*** 36570,36576 ****
  
   -- Target Hook: HOST_WIDE_INT TARGET_STARTING_FRAME_OFFSET (void)
       This hook returns the offset from the frame pointer to the first
!      local variable slot to be allocated.  If 'FRAME_GROWS_DOWNWARD', it
       is the offset to _end_ of the first slot allocated, otherwise it is
       the offset to _beginning_ of the first slot allocated.  The default
       implementation returns 0.
--- 36574,36580 ----
  
   -- Target Hook: HOST_WIDE_INT TARGET_STARTING_FRAME_OFFSET (void)
       This hook returns the offset from the frame pointer to the first
!      local variable slot to be allocated.  If â€˜FRAME_GROWS_DOWNWARDâ€™, it
       is the offset to _end_ of the first slot allocated, otherwise it is
       the offset to _beginning_ of the first slot allocated.  The default
       implementation returns 0.
*************** Here is the basic stack layout.
*** 36580,36588 ****
       reload.  The nonzero default for this macro is suitable for most
       ports.
  
!      On ports where 'TARGET_STARTING_FRAME_OFFSET' is nonzero or where
       there is a register save block following the local block that
!      doesn't require alignment to 'STACK_BOUNDARY', it may be beneficial
       to disable stack alignment and do it in the backend.
  
   -- Macro: STACK_POINTER_OFFSET
--- 36584,36592 ----
       reload.  The nonzero default for this macro is suitable for most
       ports.
  
!      On ports where â€˜TARGET_STARTING_FRAME_OFFSETâ€™ is nonzero or where
       there is a register save block following the local block that
!      doesn't require alignment to â€˜STACK_BOUNDARYâ€™, it may be beneficial
       to disable stack alignment and do it in the backend.
  
   -- Macro: STACK_POINTER_OFFSET
*************** Here is the basic stack layout.
*** 36590,36596 ****
       which outgoing arguments are placed.  If not specified, the default
       value of zero is used.  This is the proper value for most machines.
  
!      If 'ARGS_GROW_DOWNWARD', this is the offset to the location above
       the first location at which outgoing arguments are placed.
  
   -- Macro: FIRST_PARM_OFFSET (FUNDECL)
--- 36594,36600 ----
       which outgoing arguments are placed.  If not specified, the default
       value of zero is used.  This is the proper value for most machines.
  
!      If â€˜ARGS_GROW_DOWNWARDâ€™, this is the offset to the location above
       the first location at which outgoing arguments are placed.
  
   -- Macro: FIRST_PARM_OFFSET (FUNDECL)
*************** Here is the basic stack layout.
*** 36598,36622 ****
       address.  On some machines it may depend on the data type of the
       function.
  
!      If 'ARGS_GROW_DOWNWARD', this is the offset to the location above
       the first argument's address.
  
   -- Macro: STACK_DYNAMIC_OFFSET (FUNDECL)
       Offset from the stack pointer register to an item dynamically
!      allocated on the stack, e.g., by 'alloca'.
  
!      The default value for this macro is 'STACK_POINTER_OFFSET' plus the
       length of the outgoing arguments.  The default is correct for most
!      machines.  See 'function.cc' for details.
  
   -- Macro: INITIAL_FRAME_ADDRESS_RTX
       A C expression whose value is RTL representing the address of the
!      initial stack frame.  This address is passed to 'RETURN_ADDR_RTX'
!      and 'DYNAMIC_CHAIN_ADDRESS'.  If you don't define this macro, a
       reasonable default value will be used.  Define this macro in order
       to make frame pointer elimination work in the presence of
!      '__builtin_frame_address (count)' and '__builtin_return_address
!      (count)' for 'count' not equal to zero.
  
   -- Macro: DYNAMIC_CHAIN_ADDRESS (FRAMEADDR)
       A C expression whose value is RTL representing the address in a
--- 36602,36626 ----
       address.  On some machines it may depend on the data type of the
       function.
  
!      If â€˜ARGS_GROW_DOWNWARDâ€™, this is the offset to the location above
       the first argument's address.
  
   -- Macro: STACK_DYNAMIC_OFFSET (FUNDECL)
       Offset from the stack pointer register to an item dynamically
!      allocated on the stack, e.g., by â€˜allocaâ€™.
  
!      The default value for this macro is â€˜STACK_POINTER_OFFSETâ€™ plus the
       length of the outgoing arguments.  The default is correct for most
!      machines.  See â€˜function.ccâ€™ for details.
  
   -- Macro: INITIAL_FRAME_ADDRESS_RTX
       A C expression whose value is RTL representing the address of the
!      initial stack frame.  This address is passed to â€˜RETURN_ADDR_RTXâ€™
!      and â€˜DYNAMIC_CHAIN_ADDRESSâ€™.  If you don't define this macro, a
       reasonable default value will be used.  Define this macro in order
       to make frame pointer elimination work in the presence of
!      â€˜__builtin_frame_address (count)â€™ and â€˜__builtin_return_address
!      (count)â€™ for â€˜countâ€™ not equal to zero.
  
   -- Macro: DYNAMIC_CHAIN_ADDRESS (FRAMEADDR)
       A C expression whose value is RTL representing the address in a
*************** Here is the basic stack layout.
*** 36637,36646 ****
  
   -- Target Hook: rtx TARGET_BUILTIN_SETJMP_FRAME_VALUE (void)
       This target hook should return an rtx that is used to store the
!      address of the current frame into the built in 'setjmp' buffer.
!      The default value, 'virtual_stack_vars_rtx', is correct for most
       machines.  One reason you may need to define this target hook is if
!      'hard_frame_pointer_rtx' is the appropriate value on your machine.
  
   -- Macro: FRAME_ADDR_RTX (FRAMEADDR)
       A C expression whose value is RTL representing the value of the
--- 36641,36650 ----
  
   -- Target Hook: rtx TARGET_BUILTIN_SETJMP_FRAME_VALUE (void)
       This target hook should return an rtx that is used to store the
!      address of the current frame into the built in â€˜setjmpâ€™ buffer.
!      The default value, â€˜virtual_stack_vars_rtxâ€™, is correct for most
       machines.  One reason you may need to define this target hook is if
!      â€˜hard_frame_pointer_rtxâ€™ is the appropriate value on your machine.
  
   -- Macro: FRAME_ADDR_RTX (FRAMEADDR)
       A C expression whose value is RTL representing the value of the
*************** Here is the basic stack layout.
*** 36654,36664 ****
       A C expression whose value is RTL representing the value of the
       return address for the frame COUNT steps up from the current frame,
       after the prologue.  FRAMEADDR is the frame pointer of the COUNT
!      frame, or the frame pointer of the COUNT - 1 frame if
!      'RETURN_ADDR_IN_PREVIOUS_FRAME' is nonzero.
  
       The value of the expression must always be the correct address when
!      COUNT is zero, but may be 'NULL_RTX' if there is no way to
       determine the return address of other frames.
  
   -- Macro: RETURN_ADDR_IN_PREVIOUS_FRAME
--- 36658,36668 ----
       A C expression whose value is RTL representing the value of the
       return address for the frame COUNT steps up from the current frame,
       after the prologue.  FRAMEADDR is the frame pointer of the COUNT
!      frame, or the frame pointer of the COUNT âˆ’ 1 frame if
!      â€˜RETURN_ADDR_IN_PREVIOUS_FRAMEâ€™ is nonzero.
  
       The value of the expression must always be the correct address when
!      COUNT is zero, but may be â€˜NULL_RTXâ€™ if there is no way to
       determine the return address of other frames.
  
   -- Macro: RETURN_ADDR_IN_PREVIOUS_FRAME
*************** Here is the basic stack layout.
*** 36670,36692 ****
   -- Macro: INCOMING_RETURN_ADDR_RTX
       A C expression whose value is RTL representing the location of the
       incoming return address at the beginning of any function, before
!      the prologue.  This RTL is either a 'REG', indicating that the
!      return value is saved in 'REG', or a 'MEM' representing a location
       in the stack.
  
       You only need to define this macro if you want to support call
       frame debugging information like that provided by DWARF 2.
  
!      If this RTL is a 'REG', you should also define
!      'DWARF_FRAME_RETURN_COLUMN' to 'DWARF_FRAME_REGNUM (REGNO)'.
  
   -- Macro: DWARF_ALT_FRAME_RETURN_COLUMN
       A C expression whose value is an integer giving a DWARF 2 column
       number that may be used as an alternative return column.  The
       column must not correspond to any gcc hard register (that is, it
!      must not be in the range of 'DWARF_FRAME_REGNUM').
  
!      This macro can be useful if 'DWARF_FRAME_RETURN_COLUMN' is set to a
       general register, but an alternative column needs to be used for
       signal frames.  Some targets have also used different frame return
       columns over time.
--- 36674,36696 ----
   -- Macro: INCOMING_RETURN_ADDR_RTX
       A C expression whose value is RTL representing the location of the
       incoming return address at the beginning of any function, before
!      the prologue.  This RTL is either a â€˜REGâ€™, indicating that the
!      return value is saved in â€˜REGâ€™, or a â€˜MEMâ€™ representing a location
       in the stack.
  
       You only need to define this macro if you want to support call
       frame debugging information like that provided by DWARF 2.
  
!      If this RTL is a â€˜REGâ€™, you should also define
!      â€˜DWARF_FRAME_RETURN_COLUMNâ€™ to â€˜DWARF_FRAME_REGNUM (REGNO)â€™.
  
   -- Macro: DWARF_ALT_FRAME_RETURN_COLUMN
       A C expression whose value is an integer giving a DWARF 2 column
       number that may be used as an alternative return column.  The
       column must not correspond to any gcc hard register (that is, it
!      must not be in the range of â€˜DWARF_FRAME_REGNUMâ€™).
  
!      This macro can be useful if â€˜DWARF_FRAME_RETURN_COLUMNâ€™ is set to a
       general register, but an alternative column needs to be used for
       signal frames.  Some targets have also used different frame return
       columns over time.
*************** Here is the basic stack layout.
*** 36702,36708 ****
   -- Macro: DWARF_VERSION_DEFAULT
       A C expression whose value is the default dwarf standard version
       we'll honor and advertise when generating dwarf debug information,
!      in absence of an explicit '-gdwarf-VERSION' option on the command
       line.
  
   -- Target Hook: void TARGET_DWARF_HANDLE_FRAME_UNSPEC (const char
--- 36706,36712 ----
   -- Macro: DWARF_VERSION_DEFAULT
       A C expression whose value is the default dwarf standard version
       we'll honor and advertise when generating dwarf debug information,
!      in absence of an explicit â€˜-gdwarf-VERSIONâ€™ option on the command
       line.
  
   -- Target Hook: void TARGET_DWARF_HANDLE_FRAME_UNSPEC (const char
*************** Here is the basic stack layout.
*** 36715,36732 ****
            (set (reg) (unspec_volatile [...] UNSPECV_INDEX)).
       to let the backend emit the call frame instructions.  LABEL is the
       CFI label attached to the insn, PATTERN is the pattern of the insn
!      and INDEX is 'UNSPEC_INDEX' or 'UNSPECV_INDEX'.
  
   -- Target Hook: unsigned int TARGET_DWARF_POLY_INDETERMINATE_VALUE
            (unsigned int I, unsigned int *FACTOR, int *OFFSET)
!      Express the value of 'poly_int' indeterminate I as a DWARF
       expression, with I counting from 1.  Return the number of a DWARF
!      register R and set '*FACTOR' and '*OFFSET' such that the value of
       the indeterminate is:
            value_of(R) / FACTOR - OFFSET
  
       A target only needs to define this hook if it sets
!      'NUM_POLY_INT_COEFFS' to a value greater than 1.
  
   -- Macro: INCOMING_FRAME_SP_OFFSET
       A C expression whose value is an integer giving the offset, in
--- 36719,36736 ----
            (set (reg) (unspec_volatile [...] UNSPECV_INDEX)).
       to let the backend emit the call frame instructions.  LABEL is the
       CFI label attached to the insn, PATTERN is the pattern of the insn
!      and INDEX is â€˜UNSPEC_INDEXâ€™ or â€˜UNSPECV_INDEXâ€™.
  
   -- Target Hook: unsigned int TARGET_DWARF_POLY_INDETERMINATE_VALUE
            (unsigned int I, unsigned int *FACTOR, int *OFFSET)
!      Express the value of â€˜poly_intâ€™ indeterminate I as a DWARF
       expression, with I counting from 1.  Return the number of a DWARF
!      register R and set â€˜*FACTORâ€™ and â€˜*OFFSETâ€™ such that the value of
       the indeterminate is:
            value_of(R) / FACTOR - OFFSET
  
       A target only needs to define this hook if it sets
!      â€˜NUM_POLY_INT_COEFFSâ€™ to a value greater than 1.
  
   -- Macro: INCOMING_FRAME_SP_OFFSET
       A C expression whose value is an integer giving the offset, in
*************** Here is the basic stack layout.
*** 36740,36761 ****
       frame debugging information like that provided by DWARF 2.
  
   -- Macro: DEFAULT_INCOMING_FRAME_SP_OFFSET
!      Like 'INCOMING_FRAME_SP_OFFSET', but must be the same for all
!      functions of the same ABI, and when using GAS '.cfi_*' directives
       must also agree with the default CFI GAS emits.  Define this macro
!      only if 'INCOMING_FRAME_SP_OFFSET' can have different values
       between different functions of the same ABI or when
!      'INCOMING_FRAME_SP_OFFSET' does not agree with GAS default CFI.
  
   -- Macro: ARG_POINTER_CFA_OFFSET (FUNDECL)
       A C expression whose value is an integer giving the offset, in
       bytes, from the argument pointer to the canonical frame address
       (cfa).  The final value should coincide with that calculated by
!      'INCOMING_FRAME_SP_OFFSET'.  Which is unfortunately not usable
       during virtual register instantiation.
  
!      The default value for this macro is 'FIRST_PARM_OFFSET (fundecl) +
!      crtl->args.pretend_args_size', which is correct for most machines;
       in general, the arguments are found immediately before the stack
       frame.  Note that this is not the case on some targets that save
       registers into the caller's frame, such as SPARC and rs6000, and so
--- 36744,36765 ----
       frame debugging information like that provided by DWARF 2.
  
   -- Macro: DEFAULT_INCOMING_FRAME_SP_OFFSET
!      Like â€˜INCOMING_FRAME_SP_OFFSETâ€™, but must be the same for all
!      functions of the same ABI, and when using GAS â€˜.cfi_*â€™ directives
       must also agree with the default CFI GAS emits.  Define this macro
!      only if â€˜INCOMING_FRAME_SP_OFFSETâ€™ can have different values
       between different functions of the same ABI or when
!      â€˜INCOMING_FRAME_SP_OFFSETâ€™ does not agree with GAS default CFI.
  
   -- Macro: ARG_POINTER_CFA_OFFSET (FUNDECL)
       A C expression whose value is an integer giving the offset, in
       bytes, from the argument pointer to the canonical frame address
       (cfa).  The final value should coincide with that calculated by
!      â€˜INCOMING_FRAME_SP_OFFSETâ€™.  Which is unfortunately not usable
       during virtual register instantiation.
  
!      The default value for this macro is â€˜FIRST_PARM_OFFSET (fundecl) +
!      crtl->args.pretend_args_sizeâ€™, which is correct for most machines;
       in general, the arguments are found immediately before the stack
       frame.  Note that this is not the case on some targets that save
       registers into the caller's frame, such as SPARC and rs6000, and so
*************** Here is the basic stack layout.
*** 36769,36783 ****
       If defined, a C expression whose value is an integer giving the
       offset in bytes from the frame pointer to the canonical frame
       address (cfa).  The final value should coincide with that
!      calculated by 'INCOMING_FRAME_SP_OFFSET'.
  
       Normally the CFA is calculated as an offset from the argument
!      pointer, via 'ARG_POINTER_CFA_OFFSET', but if the argument pointer
       is variable due to the ABI, this may not be possible.  If this
       macro is defined, it implies that the virtual register
       instantiation should be based on the frame pointer instead of the
!      argument pointer.  Only one of 'FRAME_POINTER_CFA_OFFSET' and
!      'ARG_POINTER_CFA_OFFSET' should be defined.
  
   -- Macro: CFA_FRAME_BASE_OFFSET (FUNDECL)
       If defined, a C expression whose value is an integer giving the
--- 36773,36787 ----
       If defined, a C expression whose value is an integer giving the
       offset in bytes from the frame pointer to the canonical frame
       address (cfa).  The final value should coincide with that
!      calculated by â€˜INCOMING_FRAME_SP_OFFSETâ€™.
  
       Normally the CFA is calculated as an offset from the argument
!      pointer, via â€˜ARG_POINTER_CFA_OFFSETâ€™, but if the argument pointer
       is variable due to the ABI, this may not be possible.  If this
       macro is defined, it implies that the virtual register
       instantiation should be based on the frame pointer instead of the
!      argument pointer.  Only one of â€˜FRAME_POINTER_CFA_OFFSETâ€™ and
!      â€˜ARG_POINTER_CFA_OFFSETâ€™ should be defined.
  
   -- Macro: CFA_FRAME_BASE_OFFSET (FUNDECL)
       If defined, a C expression whose value is an integer giving the
*************** Here is the basic stack layout.
*** 36799,36817 ****
       functions.
  
       This value is added to the stack pointer register to compute the
!      address returned by '__builtin_stack_address', and this is its only
       use.  If this macro is not defined, no offset is added.  Defining
!      it like 'STACK_POINTER_OFFSET' may be appropriate for many
       machines, but not all.
  
       On SPARC, for example, the register save area is *not* considered
       active or used by the active function, but rather as akin to the
       area in which call-preserved registers are saved by callees, so the
       stack address is above that area, even though the (unbiased) stack
!      pointer points below it.  This enables '__strub_leave' to clear
       what would otherwise overlap with its own register save area.
  
!      On PowerPC, 'STACK_POINTER_OFFSET' also reserves space for a save
       area, but that area is used by the caller rather than the callee,
       so the boundary address is below it.
  
--- 36803,36821 ----
       functions.
  
       This value is added to the stack pointer register to compute the
!      address returned by â€˜__builtin_stack_addressâ€™, and this is its only
       use.  If this macro is not defined, no offset is added.  Defining
!      it like â€˜STACK_POINTER_OFFSETâ€™ may be appropriate for many
       machines, but not all.
  
       On SPARC, for example, the register save area is *not* considered
       active or used by the active function, but rather as akin to the
       area in which call-preserved registers are saved by callees, so the
       stack address is above that area, even though the (unbiased) stack
!      pointer points below it.  This enables â€˜__strub_leaveâ€™ to clear
       what would otherwise overlap with its own register save area.
  
!      On PowerPC, â€˜STACK_POINTER_OFFSETâ€™ also reserves space for a save
       area, but that area is used by the caller rather than the callee,
       so the boundary address is below it.
  
*************** Here is the basic stack layout.
*** 36821,36839 ****
       doubly-scrubbed by caller and callee.
  
   -- Macro: TARGET_STRUB_USE_DYNAMIC_ARRAY
!      If defined to nonzero, '__strub_leave' will allocate a dynamic
       array covering the stack range that needs scrubbing before clearing
       it.  Allocating the array tends to make scrubbing slower, but it
!      enables the scrubbing to be safely implemented with a 'memset'
       call, which could make up for the difference.
  
   -- Macro: TARGET_STRUB_MAY_USE_MEMSET
!      If defined to nonzero, enable '__strub_leave' to be optimized so as
!      to call 'memset' for stack scrubbing.  This is only enabled by
!      default if 'TARGET_STRUB_USE_DYNAMIC_ARRAY' is enabled; it's not
!      advisable to enable it otherwise, since 'memset' would then likely
       overwrite its own stack frame, but it might work if the target ABI
!      enables 'memset' to not use the stack at all, not even for
       arguments or its return address, and its implementation is trivial
       enough that it doesn't use a stack frame.
  
--- 36825,36843 ----
       doubly-scrubbed by caller and callee.
  
   -- Macro: TARGET_STRUB_USE_DYNAMIC_ARRAY
!      If defined to nonzero, â€˜__strub_leaveâ€™ will allocate a dynamic
       array covering the stack range that needs scrubbing before clearing
       it.  Allocating the array tends to make scrubbing slower, but it
!      enables the scrubbing to be safely implemented with a â€˜memsetâ€™
       call, which could make up for the difference.
  
   -- Macro: TARGET_STRUB_MAY_USE_MEMSET
!      If defined to nonzero, enable â€˜__strub_leaveâ€™ to be optimized so as
!      to call â€˜memsetâ€™ for stack scrubbing.  This is only enabled by
!      default if â€˜TARGET_STRUB_USE_DYNAMIC_ARRAYâ€™ is enabled; it's not
!      advisable to enable it otherwise, since â€˜memsetâ€™ would then likely
       overwrite its own stack frame, but it might work if the target ABI
!      enables â€˜memsetâ€™ to not use the stack at all, not even for
       arguments or its return address, and its implementation is trivial
       enough that it doesn't use a stack frame.
  
*************** File: gccint.info,  Node: Exception Hand
*** 36845,36851 ****
  
   -- Macro: EH_RETURN_DATA_REGNO (N)
       A C expression whose value is the Nth register number used for data
!      by exception handlers, or 'INVALID_REGNUM' if fewer than N
       registers are usable.
  
       The exception handling library routines communicate with the
--- 36849,36855 ----
  
   -- Macro: EH_RETURN_DATA_REGNO (N)
       A C expression whose value is the Nth register number used for data
!      by exception handlers, or â€˜INVALID_REGNUMâ€™ if fewer than N
       registers are usable.
  
       The exception handling library routines communicate with the
*************** File: gccint.info,  Node: Exception Hand
*** 36885,36900 ****
       normal return address is stored.  For targets that return by
       popping an address off the stack, this might be a memory address
       just below the _target_ call frame rather than inside the current
!      call frame.  If defined, 'EH_RETURN_STACKADJ_RTX' will have already
       been assigned, so it may be used to calculate the location of the
       target call frame.
  
       Some targets have more complex requirements than storing to an
       address calculable during initial code generation.  In that case
!      the 'eh_return' instruction pattern should be used instead.
  
       If you want to support call frame exception handling, you must
!      define either this macro or the 'eh_return' instruction pattern.
  
   -- Macro: EH_RETURN_TAKEN_RTX
       A C expression whose value is RTL representing a location in which
--- 36889,36904 ----
       normal return address is stored.  For targets that return by
       popping an address off the stack, this might be a memory address
       just below the _target_ call frame rather than inside the current
!      call frame.  If defined, â€˜EH_RETURN_STACKADJ_RTXâ€™ will have already
       been assigned, so it may be used to calculate the location of the
       target call frame.
  
       Some targets have more complex requirements than storing to an
       address calculable during initial code generation.  In that case
!      the â€˜eh_returnâ€™ instruction pattern should be used instead.
  
       If you want to support call frame exception handling, you must
!      define either this macro or the â€˜eh_returnâ€™ instruction pattern.
  
   -- Macro: EH_RETURN_TAKEN_RTX
       A C expression whose value is RTL representing a location in which
*************** File: gccint.info,  Node: Exception Hand
*** 36902,36909 ****
       return.  This macro allows conditionally executing different code
       in the epilogue for the EH and normal return cases.
  
!      When this macro is defined, the macros 'EH_RETURN_STACKADJ_RTX' and
!      'EH_RETURN_HANDLER_RTX' are only meaningful in the epilogue when 1
       is stored to the specified location.  The value 0 means normal
       return.
  
--- 36906,36913 ----
       return.  This macro allows conditionally executing different code
       in the epilogue for the EH and normal return cases.
  
!      When this macro is defined, the macros â€˜EH_RETURN_STACKADJ_RTXâ€™ and
!      â€˜EH_RETURN_HANDLER_RTXâ€™ are only meaningful in the epilogue when 1
       is stored to the specified location.  The value 0 means normal
       return.
  
*************** File: gccint.info,  Node: Exception Hand
*** 36923,36929 ****
       CODE is 0 for data, 1 for code labels, 2 for function pointers.
       GLOBAL is true if the symbol may be affected by dynamic
       relocations.  The macro should return a combination of the
!      'DW_EH_PE_*' defines as found in 'dwarf2.h'.
  
       If this macro is not defined, pointers will not be encoded but
       represented directly.
--- 36927,36933 ----
       CODE is 0 for data, 1 for code labels, 2 for function pointers.
       GLOBAL is true if the symbol may be affected by dynamic
       relocations.  The macro should return a combination of the
!      â€˜DW_EH_PE_*â€™ defines as found in â€˜dwarf2.hâ€™.
  
       If this macro is not defined, pointers will not be encoded but
       represented directly.
*************** File: gccint.info,  Node: Exception Hand
*** 36932,36944 ****
            ADDR, DONE)
       This macro allows the target to emit whatever special magic is
       required to represent the encoding chosen by
!      'ASM_PREFERRED_EH_DATA_FORMAT'.  Generic code takes care of
       pc-relative and indirect encodings; this must be defined if the
       target uses text-relative or data-relative encodings.
  
       This is a C statement that branches to DONE if the format was
       handled.  ENCODING is the format chosen, SIZE is the number of
!      bytes that the format occupies, ADDR is the 'SYMBOL_REF' to be
       emitted.
  
   -- Macro: MD_FALLBACK_FRAME_STATE_FOR (CONTEXT, FS)
--- 36936,36948 ----
            ADDR, DONE)
       This macro allows the target to emit whatever special magic is
       required to represent the encoding chosen by
!      â€˜ASM_PREFERRED_EH_DATA_FORMATâ€™.  Generic code takes care of
       pc-relative and indirect encodings; this must be defined if the
       target uses text-relative or data-relative encodings.
  
       This is a C statement that branches to DONE if the format was
       handled.  ENCODING is the format chosen, SIZE is the number of
!      bytes that the format occupies, ADDR is the â€˜SYMBOL_REFâ€™ to be
       emitted.
  
   -- Macro: MD_FALLBACK_FRAME_STATE_FOR (CONTEXT, FS)
*************** File: gccint.info,  Node: Exception Hand
*** 36947,36980 ****
       unwind data available.  The most common reason to implement this
       macro is to unwind through signal frames.
  
!      This macro is called from 'uw_frame_state_for' in 'unwind-dw2.c',
!      'unwind-dw2-xtensa.c' and 'unwind-ia64.c'.  CONTEXT is an
!      '_Unwind_Context'; FS is an '_Unwind_FrameState'.  Examine
!      'context->ra' for the address of the code being executed and
!      'context->cfa' for the stack pointer value.  If the frame can be
       decoded, the register save addresses should be updated in FS and
!      the macro should evaluate to '_URC_NO_REASON'.  If the frame cannot
!      be decoded, the macro should evaluate to '_URC_END_OF_STACK'.
  
       For proper signal handling in Java this macro is accompanied by
!      'MAKE_THROW_FRAME', defined in 'libjava/include/*-signal.h'
       headers.
  
   -- Macro: MD_HANDLE_UNWABI (CONTEXT, FS)
       This macro allows the target to add operating system specific code
!      to the call-frame unwinder to handle the IA-64 '.unwabi' unwinding
       directive, usually used for signal or interrupt frames.
  
!      This macro is called from 'uw_update_context' in libgcc's
!      'unwind-ia64.c'.  CONTEXT is an '_Unwind_Context'; FS is an
!      '_Unwind_FrameState'.  Examine 'fs->unwabi' for the abi and context
!      in the '.unwabi' directive.  If the '.unwabi' directive can be
       handled, the register save addresses should be updated in FS.
  
   -- Macro: TARGET_USES_WEAK_UNWIND_INFO
       A C expression that evaluates to true if the target requires unwind
!      info to be given comdat linkage.  Define it to be '1' if comdat
!      linkage is necessary.  The default is '0'.
  
  
  File: gccint.info,  Node: Stack Checking,  Next: Frame Registers,  Prev: Exception Handling,  Up: Stack and Calling
--- 36951,36984 ----
       unwind data available.  The most common reason to implement this
       macro is to unwind through signal frames.
  
!      This macro is called from â€˜uw_frame_state_forâ€™ in â€˜unwind-dw2.câ€™,
!      â€˜unwind-dw2-xtensa.câ€™ and â€˜unwind-ia64.câ€™.  CONTEXT is an
!      â€˜_Unwind_Contextâ€™; FS is an â€˜_Unwind_FrameStateâ€™.  Examine
!      â€˜context->raâ€™ for the address of the code being executed and
!      â€˜context->cfaâ€™ for the stack pointer value.  If the frame can be
       decoded, the register save addresses should be updated in FS and
!      the macro should evaluate to â€˜_URC_NO_REASONâ€™.  If the frame cannot
!      be decoded, the macro should evaluate to â€˜_URC_END_OF_STACKâ€™.
  
       For proper signal handling in Java this macro is accompanied by
!      â€˜MAKE_THROW_FRAMEâ€™, defined in â€˜libjava/include/*-signal.hâ€™
       headers.
  
   -- Macro: MD_HANDLE_UNWABI (CONTEXT, FS)
       This macro allows the target to add operating system specific code
!      to the call-frame unwinder to handle the IA-64 â€˜.unwabiâ€™ unwinding
       directive, usually used for signal or interrupt frames.
  
!      This macro is called from â€˜uw_update_contextâ€™ in libgcc's
!      â€˜unwind-ia64.câ€™.  CONTEXT is an â€˜_Unwind_Contextâ€™; FS is an
!      â€˜_Unwind_FrameStateâ€™.  Examine â€˜fs->unwabiâ€™ for the abi and context
!      in the â€˜.unwabiâ€™ directive.  If the â€˜.unwabiâ€™ directive can be
       handled, the register save addresses should be updated in FS.
  
   -- Macro: TARGET_USES_WEAK_UNWIND_INFO
       A C expression that evaluates to true if the target requires unwind
!      info to be given comdat linkage.  Define it to be â€˜1â€™ if comdat
!      linkage is necessary.  The default is â€˜0â€™.
  
  
  File: gccint.info,  Node: Stack Checking,  Next: Frame Registers,  Prev: Exception Handling,  Up: Stack and Calling
*************** File: gccint.info,  Node: Stack Checking
*** 36983,36997 ****
  --------------------------------------------
  
  GCC will check that stack references are within the boundaries of the
! stack, if the option '-fstack-check' is specified, in one of three ways:
  
!   1. If the value of the 'STACK_CHECK_BUILTIN' macro is nonzero, GCC
       will assume that you have arranged for full stack checking to be
       done at appropriate places in the configuration files.  GCC will
       not do other special processing.
  
!   2. If 'STACK_CHECK_BUILTIN' is zero and the value of the
!      'STACK_CHECK_STATIC_BUILTIN' macro is nonzero, GCC will assume that
       you have arranged for static stack checking (checking of the static
       stack frame of functions) to be done at appropriate places in the
       configuration files.  GCC will only emit code to do dynamic stack
--- 36987,37001 ----
  --------------------------------------------
  
  GCC will check that stack references are within the boundaries of the
! stack, if the option â€˜-fstack-checkâ€™ is specified, in one of three ways:
  
!   1. If the value of the â€˜STACK_CHECK_BUILTINâ€™ macro is nonzero, GCC
       will assume that you have arranged for full stack checking to be
       done at appropriate places in the configuration files.  GCC will
       not do other special processing.
  
!   2. If â€˜STACK_CHECK_BUILTINâ€™ is zero and the value of the
!      â€˜STACK_CHECK_STATIC_BUILTINâ€™ macro is nonzero, GCC will assume that
       you have arranged for static stack checking (checking of the static
       stack frame of functions) to be done at appropriate places in the
       configuration files.  GCC will only emit code to do dynamic stack
*************** stack, if the option '-fstack-check' is
*** 37004,37011 ****
  
   If neither STACK_CHECK_BUILTIN nor STACK_CHECK_STATIC_BUILTIN is
  defined, GCC will change its allocation strategy for large objects if
! the option '-fstack-check' is specified: they will always be allocated
! dynamically if their size exceeds 'STACK_CHECK_MAX_VAR_SIZE' bytes.
  
   -- Macro: STACK_CHECK_BUILTIN
       A nonzero value if stack checking is done by the configuration
--- 37008,37015 ----
  
   If neither STACK_CHECK_BUILTIN nor STACK_CHECK_STATIC_BUILTIN is
  defined, GCC will change its allocation strategy for large objects if
! the option â€˜-fstack-checkâ€™ is specified: they will always be allocated
! dynamically if their size exceeds â€˜STACK_CHECK_MAX_VAR_SIZEâ€™ bytes.
  
   -- Macro: STACK_CHECK_BUILTIN
       A nonzero value if stack checking is done by the configuration
*************** dynamically if their size exceeds 'STACK
*** 37041,37047 ****
   -- Macro: STACK_CHECK_PROTECT
       The number of bytes of stack needed to recover from a stack
       overflow, for languages where such a recovery is supported.  The
!      default value of 4KB/8KB with the 'setjmp'/'longjmp'-based
       exception handling mechanism and 8KB/12KB with other exception
       handling mechanisms should be adequate for most architectures and
       operating systems.
--- 37045,37051 ----
   -- Macro: STACK_CHECK_PROTECT
       The number of bytes of stack needed to recover from a stack
       overflow, for languages where such a recovery is supported.  The
!      default value of 4KB/8KB with the â€˜setjmpâ€™/â€˜longjmpâ€™-based
       exception handling mechanism and 8KB/12KB with other exception
       handling mechanisms should be adequate for most architectures and
       operating systems.
*************** in the opposite case.
*** 37069,37075 ****
   -- Macro: STACK_CHECK_MAX_VAR_SIZE
       The maximum size, in bytes, of an object that GCC will place in the
       fixed area of the stack frame when the user specifies
!      '-fstack-check'.  GCC computed the default from the values of the
       above macros and you will normally not need to override that
       default.
  
--- 37073,37079 ----
   -- Macro: STACK_CHECK_MAX_VAR_SIZE
       The maximum size, in bytes, of an object that GCC will place in the
       fixed area of the stack frame when the user specifies
!      â€˜-fstack-checkâ€™.  GCC computed the default from the values of the
       above macros and you will normally not need to override that
       default.
  
*************** This discusses registers that address th
*** 37096,37102 ****
  
   -- Macro: STACK_POINTER_REGNUM
       The register number of the stack pointer register, which must also
!      be a fixed register according to 'FIXED_REGISTERS'.  On most
       machines, the hardware determines which register this is.
  
   -- Macro: FRAME_POINTER_REGNUM
--- 37100,37106 ----
  
   -- Macro: STACK_POINTER_REGNUM
       The register number of the stack pointer register, which must also
!      be a fixed register according to â€˜FIXED_REGISTERSâ€™.  On most
       machines, the hardware determines which register this is.
  
   -- Macro: FRAME_POINTER_REGNUM
*************** This discusses registers that address th
*** 37110,37130 ****
       offset of the automatic variables is not known until after register
       allocation has been done (for example, because the saved registers
       are between these two locations).  On those machines, define
!      'FRAME_POINTER_REGNUM' the number of a special, fixed register to
       be used internally until the offset is known, and define
!      'HARD_FRAME_POINTER_REGNUM' to be the actual hard register number
       used for the frame pointer.
  
       You should define this macro only in the very rare circumstances
       when it is not possible to calculate the offset between the frame
       pointer and the automatic variables until after register allocation
       has been completed.  When this macro is defined, you must also
!      indicate in your definition of 'ELIMINABLE_REGS' how to eliminate
!      'FRAME_POINTER_REGNUM' into either 'HARD_FRAME_POINTER_REGNUM' or
!      'STACK_POINTER_REGNUM'.
  
       Do not define this macro if it would be the same as
!      'FRAME_POINTER_REGNUM'.
  
   -- Macro: ARG_POINTER_REGNUM
       The register number of the arg pointer register, which is used to
--- 37114,37134 ----
       offset of the automatic variables is not known until after register
       allocation has been done (for example, because the saved registers
       are between these two locations).  On those machines, define
!      â€˜FRAME_POINTER_REGNUMâ€™ the number of a special, fixed register to
       be used internally until the offset is known, and define
!      â€˜HARD_FRAME_POINTER_REGNUMâ€™ to be the actual hard register number
       used for the frame pointer.
  
       You should define this macro only in the very rare circumstances
       when it is not possible to calculate the offset between the frame
       pointer and the automatic variables until after register allocation
       has been completed.  When this macro is defined, you must also
!      indicate in your definition of â€˜ELIMINABLE_REGSâ€™ how to eliminate
!      â€˜FRAME_POINTER_REGNUMâ€™ into either â€˜HARD_FRAME_POINTER_REGNUMâ€™ or
!      â€˜STACK_POINTER_REGNUMâ€™.
  
       Do not define this macro if it would be the same as
!      â€˜FRAME_POINTER_REGNUMâ€™.
  
   -- Macro: ARG_POINTER_REGNUM
       The register number of the arg pointer register, which is used to
*************** This discusses registers that address th
*** 37133,37153 ****
       determines which register this is.  On other machines, you can
       choose any register you wish for this purpose.  If this is not the
       same register as the frame pointer register, then you must mark it
!      as a fixed register according to 'FIXED_REGISTERS', or arrange to
       be able to eliminate it (*note Elimination::).
  
   -- Macro: HARD_FRAME_POINTER_IS_FRAME_POINTER
       Define this to a preprocessor constant that is nonzero if
!      'hard_frame_pointer_rtx' and 'frame_pointer_rtx' should be the
!      same.  The default definition is '(HARD_FRAME_POINTER_REGNUM ==
!      FRAME_POINTER_REGNUM)'; you only need to define this macro if that
       definition is not suitable for use in preprocessor conditionals.
  
   -- Macro: HARD_FRAME_POINTER_IS_ARG_POINTER
       Define this to a preprocessor constant that is nonzero if
!      'hard_frame_pointer_rtx' and 'arg_pointer_rtx' should be the same.
!      The default definition is '(HARD_FRAME_POINTER_REGNUM ==
!      ARG_POINTER_REGNUM)'; you only need to define this macro if that
       definition is not suitable for use in preprocessor conditionals.
  
   -- Macro: RETURN_ADDRESS_POINTER_REGNUM
--- 37137,37157 ----
       determines which register this is.  On other machines, you can
       choose any register you wish for this purpose.  If this is not the
       same register as the frame pointer register, then you must mark it
!      as a fixed register according to â€˜FIXED_REGISTERSâ€™, or arrange to
       be able to eliminate it (*note Elimination::).
  
   -- Macro: HARD_FRAME_POINTER_IS_FRAME_POINTER
       Define this to a preprocessor constant that is nonzero if
!      â€˜hard_frame_pointer_rtxâ€™ and â€˜frame_pointer_rtxâ€™ should be the
!      same.  The default definition is â€˜(HARD_FRAME_POINTER_REGNUM ==
!      FRAME_POINTER_REGNUM)â€™; you only need to define this macro if that
       definition is not suitable for use in preprocessor conditionals.
  
   -- Macro: HARD_FRAME_POINTER_IS_ARG_POINTER
       Define this to a preprocessor constant that is nonzero if
!      â€˜hard_frame_pointer_rtxâ€™ and â€˜arg_pointer_rtxâ€™ should be the same.
!      The default definition is â€˜(HARD_FRAME_POINTER_REGNUM ==
!      ARG_POINTER_REGNUM)â€™; you only need to define this macro if that
       definition is not suitable for use in preprocessor conditionals.
  
   -- Macro: RETURN_ADDRESS_POINTER_REGNUM
*************** This discusses registers that address th
*** 37156,37162 ****
       stack.  On some machines, the return address is not at a fixed
       offset from the frame pointer or stack pointer or argument pointer.
       This register can be defined to point to the return address on the
!      stack, and then be converted by 'ELIMINABLE_REGS' into either the
       frame pointer or stack pointer.
  
       Do not define this macro unless there is no other way to get the
--- 37160,37166 ----
       stack.  On some machines, the return address is not at a fixed
       offset from the frame pointer or stack pointer or argument pointer.
       This register can be defined to point to the return address on the
!      stack, and then be converted by â€˜ELIMINABLE_REGSâ€™ into either the
       frame pointer or stack pointer.
  
       Do not define this macro unless there is no other way to get the
*************** This discusses registers that address th
*** 37166,37198 ****
   -- Macro: STATIC_CHAIN_INCOMING_REGNUM
       Register numbers used for passing a function's static chain
       pointer.  If register windows are used, the register number as seen
!      by the called function is 'STATIC_CHAIN_INCOMING_REGNUM', while the
       register number as seen by the calling function is
!      'STATIC_CHAIN_REGNUM'.  If these registers are the same,
!      'STATIC_CHAIN_INCOMING_REGNUM' need not be defined.
  
       The static chain register need not be a fixed register.
  
       If the static chain is passed in memory, these macros should not be
!      defined; instead, the 'TARGET_STATIC_CHAIN' hook should be used.
  
   -- Target Hook: rtx TARGET_STATIC_CHAIN (const_tree FNDECL_OR_TYPE,
            bool INCOMING_P)
!      This hook replaces the use of 'STATIC_CHAIN_REGNUM' et al for
       targets that may use different static chain locations for different
       nested functions.  This may be required if the target has function
       attributes that affect the calling conventions of the function and
       those calling conventions use different static chain locations.
  
!      The default version of this hook uses 'STATIC_CHAIN_REGNUM' et al.
  
       If the static chain is passed in memory, this hook should be used
!      to provide rtx giving 'mem' expressions that denote where they are
!      stored.  Often the 'mem' expression as seen by the caller will be
!      at an offset from the stack pointer and the 'mem' expression as
       seen by the callee will be at an offset from the frame pointer.
!      The variables 'stack_pointer_rtx', 'frame_pointer_rtx', and
!      'arg_pointer_rtx' will have been initialized and should be used to
       refer to those items.
  
   -- Macro: DWARF_FRAME_REGISTERS
--- 37170,37202 ----
   -- Macro: STATIC_CHAIN_INCOMING_REGNUM
       Register numbers used for passing a function's static chain
       pointer.  If register windows are used, the register number as seen
!      by the called function is â€˜STATIC_CHAIN_INCOMING_REGNUMâ€™, while the
       register number as seen by the calling function is
!      â€˜STATIC_CHAIN_REGNUMâ€™.  If these registers are the same,
!      â€˜STATIC_CHAIN_INCOMING_REGNUMâ€™ need not be defined.
  
       The static chain register need not be a fixed register.
  
       If the static chain is passed in memory, these macros should not be
!      defined; instead, the â€˜TARGET_STATIC_CHAINâ€™ hook should be used.
  
   -- Target Hook: rtx TARGET_STATIC_CHAIN (const_tree FNDECL_OR_TYPE,
            bool INCOMING_P)
!      This hook replaces the use of â€˜STATIC_CHAIN_REGNUMâ€™ et al for
       targets that may use different static chain locations for different
       nested functions.  This may be required if the target has function
       attributes that affect the calling conventions of the function and
       those calling conventions use different static chain locations.
  
!      The default version of this hook uses â€˜STATIC_CHAIN_REGNUMâ€™ et al.
  
       If the static chain is passed in memory, this hook should be used
!      to provide rtx giving â€˜memâ€™ expressions that denote where they are
!      stored.  Often the â€˜memâ€™ expression as seen by the caller will be
!      at an offset from the stack pointer and the â€˜memâ€™ expression as
       seen by the callee will be at an offset from the frame pointer.
!      The variables â€˜stack_pointer_rtxâ€™, â€˜frame_pointer_rtxâ€™, and
!      â€˜arg_pointer_rtxâ€™ will have been initialized and should be used to
       refer to those items.
  
   -- Macro: DWARF_FRAME_REGISTERS
*************** This discusses registers that address th
*** 37210,37224 ****
       call-saved.
  
       If this macro is not defined, it defaults to
!      'FIRST_PSEUDO_REGISTER'.
  
   -- Macro: PRE_GCC3_DWARF_FRAME_REGISTERS
  
!      This macro is similar to 'DWARF_FRAME_REGISTERS', but is provided
       for backward compatibility in pre GCC 3.0 compiled code.
  
       If this macro is not defined, it defaults to
!      'DWARF_FRAME_REGISTERS'.
  
   -- Macro: DWARF_REG_TO_UNWIND_COLUMN (REGNO)
  
--- 37214,37228 ----
       call-saved.
  
       If this macro is not defined, it defaults to
!      â€˜FIRST_PSEUDO_REGISTERâ€™.
  
   -- Macro: PRE_GCC3_DWARF_FRAME_REGISTERS
  
!      This macro is similar to â€˜DWARF_FRAME_REGISTERSâ€™, but is provided
       for backward compatibility in pre GCC 3.0 compiled code.
  
       If this macro is not defined, it defaults to
!      â€˜DWARF_FRAME_REGISTERSâ€™.
  
   -- Macro: DWARF_REG_TO_UNWIND_COLUMN (REGNO)
  
*************** This discusses registers that address th
*** 37233,37266 ****
       registers used in .eh_frame or .debug_frame is different from that
       used in other debug info sections.  Given a GCC hard register
       number, this macro should return the .eh_frame register number.
!      The default is 'DEBUGGER_REGNO (REGNO)'.
  
   -- Macro: DWARF2_FRAME_REG_OUT (REGNO, FOR_EH)
  
       Define this macro to map register numbers held in the call frame
!      info that GCC has collected using 'DWARF_FRAME_REGNUM' to those
!      that should be output in .debug_frame ('FOR_EH' is zero) and
!      .eh_frame ('FOR_EH' is nonzero).  The default is to return 'REGNO'.
  
   -- Macro: REG_VALUE_IN_UNWIND_CONTEXT
  
       Define this macro if the target stores register values as
!      '_Unwind_Word' type in unwind context.  It should be defined if
!      target register size is larger than the size of 'void *'.  The
!      default is to store register values as 'void *' type.
  
   -- Macro: ASSUME_EXTENDED_UNWIND_CONTEXT
  
       Define this macro to be 1 if the target always uses extended unwind
       context with version, args_size and by_value fields.  If it is
       undefined, it will be defined to 1 when
!      'REG_VALUE_IN_UNWIND_CONTEXT' is defined and 0 otherwise.
  
   -- Macro: DWARF_LAZY_REGISTER_VALUE (REGNO, VALUE)
       Define this macro if the target has pseudo DWARF registers whose
       values need to be computed lazily on demand by the unwinder (such
       as when referenced in a CFA expression).  The macro returns true if
!      REGNO is such a register and stores its value in '*VALUE' if so.
  
  
  File: gccint.info,  Node: Elimination,  Next: Stack Arguments,  Prev: Frame Registers,  Up: Stack and Calling
--- 37237,37270 ----
       registers used in .eh_frame or .debug_frame is different from that
       used in other debug info sections.  Given a GCC hard register
       number, this macro should return the .eh_frame register number.
!      The default is â€˜DEBUGGER_REGNO (REGNO)â€™.
  
   -- Macro: DWARF2_FRAME_REG_OUT (REGNO, FOR_EH)
  
       Define this macro to map register numbers held in the call frame
!      info that GCC has collected using â€˜DWARF_FRAME_REGNUMâ€™ to those
!      that should be output in .debug_frame (â€˜FOR_EHâ€™ is zero) and
!      .eh_frame (â€˜FOR_EHâ€™ is nonzero).  The default is to return â€˜REGNOâ€™.
  
   -- Macro: REG_VALUE_IN_UNWIND_CONTEXT
  
       Define this macro if the target stores register values as
!      â€˜_Unwind_Wordâ€™ type in unwind context.  It should be defined if
!      target register size is larger than the size of â€˜void *â€™.  The
!      default is to store register values as â€˜void *â€™ type.
  
   -- Macro: ASSUME_EXTENDED_UNWIND_CONTEXT
  
       Define this macro to be 1 if the target always uses extended unwind
       context with version, args_size and by_value fields.  If it is
       undefined, it will be defined to 1 when
!      â€˜REG_VALUE_IN_UNWIND_CONTEXTâ€™ is defined and 0 otherwise.
  
   -- Macro: DWARF_LAZY_REGISTER_VALUE (REGNO, VALUE)
       Define this macro if the target has pseudo DWARF registers whose
       values need to be computed lazily on demand by the unwinder (such
       as when referenced in a CFA expression).  The macro returns true if
!      REGNO is such a register and stores its value in â€˜*VALUEâ€™ if so.
  
  
  File: gccint.info,  Node: Elimination,  Next: Stack Arguments,  Prev: Frame Registers,  Up: Stack and Calling
*************** File: gccint.info,  Node: Elimination,
*** 37271,37300 ****
  This is about eliminating the frame pointer and arg pointer.
  
   -- Target Hook: bool TARGET_FRAME_POINTER_REQUIRED (void)
!      This target hook should return 'true' if a function must have and
       use a frame pointer.  This target hook is called in the reload
!      pass.  If its return value is 'true' the function will have a frame
       pointer.
  
       This target hook can in principle examine the current function and
       decide according to the facts, but on most machines the constant
!      'false' or the constant 'true' suffices.  Use 'false' when the
       machine allows code to be generated with no frame pointer, and
!      doing so saves some time or space.  Use 'true' when there is no
       possible advantage to avoiding a frame pointer.
  
       In certain cases, the compiler does not know how to produce valid
       code without a frame pointer.  The compiler recognizes those cases
       and automatically gives the function a frame pointer regardless of
!      what 'targetm.frame_pointer_required' returns.  You don't need to
       worry about them.
  
       In a function that does not require a frame pointer, the frame
       pointer register can be allocated for ordinary usage, unless you
!      mark it as a fixed register.  See 'FIXED_REGISTERS' for more
       information.
  
!      Default return value is 'false'.
  
   -- Macro: ELIMINABLE_REGS
       This macro specifies a table of register pairs used to eliminate
--- 37275,37304 ----
  This is about eliminating the frame pointer and arg pointer.
  
   -- Target Hook: bool TARGET_FRAME_POINTER_REQUIRED (void)
!      This target hook should return â€˜trueâ€™ if a function must have and
       use a frame pointer.  This target hook is called in the reload
!      pass.  If its return value is â€˜trueâ€™ the function will have a frame
       pointer.
  
       This target hook can in principle examine the current function and
       decide according to the facts, but on most machines the constant
!      â€˜falseâ€™ or the constant â€˜trueâ€™ suffices.  Use â€˜falseâ€™ when the
       machine allows code to be generated with no frame pointer, and
!      doing so saves some time or space.  Use â€˜trueâ€™ when there is no
       possible advantage to avoiding a frame pointer.
  
       In certain cases, the compiler does not know how to produce valid
       code without a frame pointer.  The compiler recognizes those cases
       and automatically gives the function a frame pointer regardless of
!      what â€˜targetm.frame_pointer_requiredâ€™ returns.  You don't need to
       worry about them.
  
       In a function that does not require a frame pointer, the frame
       pointer register can be allocated for ordinary usage, unless you
!      mark it as a fixed register.  See â€˜FIXED_REGISTERSâ€™ for more
       information.
  
!      Default return value is â€˜falseâ€™.
  
   -- Macro: ELIMINABLE_REGS
       This macro specifies a table of register pairs used to eliminate
*************** This is about eliminating the frame poin
*** 37321,37352 ****
       pointer is specified first since that is the preferred elimination.
  
   -- Macro: RELOAD_ELIMINABLE_REGS
!      Like 'ELIMINABLE_REGS', but only used in the old reload framework
!      where it takes precedence over 'ELIMINABLE_REGS'.  This macro can
       be useful during the transition to LRA because there are cases
       where reload and LRA disagree on how eliminable registers should be
!      represented.  For an example, see 'avr.h'.
  
   -- Target Hook: bool TARGET_CAN_ELIMINATE (const int FROM_REG, const
            int TO_REG)
!      This target hook should return 'true' if the compiler is allowed to
       try to replace register number FROM_REG with register number
!      TO_REG.  This target hook will usually be 'true', since most of the
       cases preventing register elimination are things that the compiler
       already knows about.
  
!      Default return value is 'true'.
  
   -- Macro: INITIAL_ELIMINATION_OFFSET (FROM-REG, TO-REG, OFFSET-VAR)
       This macro returns the initial difference between the specified
       pair of registers.  The value would be computed from information
!      such as the result of 'get_frame_size ()' and the tables of
!      registers 'df_regs_ever_live_p' and 'call_used_regs'.
  
   -- Target Hook: void TARGET_COMPUTE_FRAME_LAYOUT (void)
       This target hook is called once each time the frame layout needs to
       be recalculated.  The calculations can be cached by the target and
!      can then be used by 'INITIAL_ELIMINATION_OFFSET' instead of
       re-computing the layout on every invocation of that hook.  This is
       particularly useful for targets that have an expensive frame layout
       function.  Implementing this callback is optional.
--- 37325,37356 ----
       pointer is specified first since that is the preferred elimination.
  
   -- Macro: RELOAD_ELIMINABLE_REGS
!      Like â€˜ELIMINABLE_REGSâ€™, but only used in the old reload framework
!      where it takes precedence over â€˜ELIMINABLE_REGSâ€™.  This macro can
       be useful during the transition to LRA because there are cases
       where reload and LRA disagree on how eliminable registers should be
!      represented.  For an example, see â€˜avr.hâ€™.
  
   -- Target Hook: bool TARGET_CAN_ELIMINATE (const int FROM_REG, const
            int TO_REG)
!      This target hook should return â€˜trueâ€™ if the compiler is allowed to
       try to replace register number FROM_REG with register number
!      TO_REG.  This target hook will usually be â€˜trueâ€™, since most of the
       cases preventing register elimination are things that the compiler
       already knows about.
  
!      Default return value is â€˜trueâ€™.
  
   -- Macro: INITIAL_ELIMINATION_OFFSET (FROM-REG, TO-REG, OFFSET-VAR)
       This macro returns the initial difference between the specified
       pair of registers.  The value would be computed from information
!      such as the result of â€˜get_frame_size ()â€™ and the tables of
!      registers â€˜df_regs_ever_live_pâ€™ and â€˜call_used_regsâ€™.
  
   -- Target Hook: void TARGET_COMPUTE_FRAME_LAYOUT (void)
       This target hook is called once each time the frame layout needs to
       be recalculated.  The calculations can be cached by the target and
!      can then be used by â€˜INITIAL_ELIMINATION_OFFSETâ€™ instead of
       re-computing the layout on every invocation of that hook.  This is
       particularly useful for targets that have an expensive frame layout
       function.  Implementing this callback is optional.
*************** stack.  See the following section for ot
*** 37362,37388 ****
  certain arguments in registers.
  
   -- Target Hook: bool TARGET_PROMOTE_PROTOTYPES (const_tree FNTYPE)
!      This target hook returns 'true' if an argument declared in a
!      prototype as an integral type smaller than 'int' should actually be
!      passed as an 'int'.  In addition to avoiding errors in certain
       cases of mismatch, it also makes for better code on certain
       machines.  The default is to not promote prototypes.
  
   -- Target Hook: bool TARGET_PUSH_ARGUMENT (unsigned int NPUSH)
!      This target hook returns 'true' if push instructions will be used
       to pass outgoing arguments.  When the push instruction usage is
       optional, NPUSH is nonzero to indicate the number of bytes to push.
       Otherwise, NPUSH is zero.  If the target machine does not have a
!      push instruction or push instruction should be avoided, 'false'
       should be returned.  That directs GCC to use an alternate strategy:
       to allocate the entire argument block and then store the arguments
!      into it.  If this target hook may return 'true', 'PUSH_ROUNDING'
       must be defined.
  
   -- Macro: PUSH_ARGS_REVERSED
       A C expression.  If nonzero, function arguments will be evaluated
       from last to first, rather than from first to last.  If this macro
!      is not defined, it defaults to 'PUSH_ARGS' on targets where the
       stack and args grow in opposite directions, and 0 otherwise.
  
   -- Macro: PUSH_ROUNDING (NPUSHED)
--- 37366,37392 ----
  certain arguments in registers.
  
   -- Target Hook: bool TARGET_PROMOTE_PROTOTYPES (const_tree FNTYPE)
!      This target hook returns â€˜trueâ€™ if an argument declared in a
!      prototype as an integral type smaller than â€˜intâ€™ should actually be
!      passed as an â€˜intâ€™.  In addition to avoiding errors in certain
       cases of mismatch, it also makes for better code on certain
       machines.  The default is to not promote prototypes.
  
   -- Target Hook: bool TARGET_PUSH_ARGUMENT (unsigned int NPUSH)
!      This target hook returns â€˜trueâ€™ if push instructions will be used
       to pass outgoing arguments.  When the push instruction usage is
       optional, NPUSH is nonzero to indicate the number of bytes to push.
       Otherwise, NPUSH is zero.  If the target machine does not have a
!      push instruction or push instruction should be avoided, â€˜falseâ€™
       should be returned.  That directs GCC to use an alternate strategy:
       to allocate the entire argument block and then store the arguments
!      into it.  If this target hook may return â€˜trueâ€™, â€˜PUSH_ROUNDINGâ€™
       must be defined.
  
   -- Macro: PUSH_ARGS_REVERSED
       A C expression.  If nonzero, function arguments will be evaluated
       from last to first, rather than from first to last.  If this macro
!      is not defined, it defaults to â€˜PUSH_ARGSâ€™ on targets where the
       stack and args grow in opposite directions, and 0 otherwise.
  
   -- Macro: PUSH_ROUNDING (NPUSHED)
*************** certain arguments in registers.
*** 37405,37415 ****
   -- Macro: ACCUMULATE_OUTGOING_ARGS
       A C expression.  If nonzero, the maximum amount of space required
       for outgoing arguments will be computed and placed into
!      'crtl->outgoing_args_size'.  No space will be pushed onto the stack
       for each call; instead, the function prologue should increase the
       stack frame size by this amount.
  
!      Setting both 'PUSH_ARGS' and 'ACCUMULATE_OUTGOING_ARGS' is not
       proper.
  
   -- Macro: REG_PARM_STACK_SPACE (FNDECL)
--- 37409,37419 ----
   -- Macro: ACCUMULATE_OUTGOING_ARGS
       A C expression.  If nonzero, the maximum amount of space required
       for outgoing arguments will be computed and placed into
!      â€˜crtl->outgoing_args_sizeâ€™.  No space will be pushed onto the stack
       for each call; instead, the function prologue should increase the
       stack frame size by this amount.
  
!      Setting both â€˜PUSH_ARGSâ€™ and â€˜ACCUMULATE_OUTGOING_ARGSâ€™ is not
       proper.
  
   -- Macro: REG_PARM_STACK_SPACE (FNDECL)
*************** certain arguments in registers.
*** 37424,37434 ****
       the function.
  
       This space can be allocated by the caller, or be a part of the
!      machine-dependent stack frame: 'OUTGOING_REG_PARM_STACK_SPACE' says
       which.
  
   -- Macro: INCOMING_REG_PARM_STACK_SPACE (FNDECL)
!      Like 'REG_PARM_STACK_SPACE', but for incoming register arguments.
       Define this macro if space guaranteed when compiling a function
       body is different to space required when making a call, a situation
       that can arise with K&R style function definitions.
--- 37428,37438 ----
       the function.
  
       This space can be allocated by the caller, or be a part of the
!      machine-dependent stack frame: â€˜OUTGOING_REG_PARM_STACK_SPACEâ€™ says
       which.
  
   -- Macro: INCOMING_REG_PARM_STACK_SPACE (FNDECL)
!      Like â€˜REG_PARM_STACK_SPACEâ€™, but for incoming register arguments.
       Define this macro if space guaranteed when compiling a function
       body is different to space required when making a call, a situation
       that can arise with K&R style function definitions.
*************** certain arguments in registers.
*** 37439,37454 ****
       registers when calling a function of FNTYPE.  FNTYPE may be NULL if
       the function called is a library function.
  
!      If 'ACCUMULATE_OUTGOING_ARGS' is defined, this macro controls
       whether the space for these arguments counts in the value of
!      'crtl->outgoing_args_size'.
  
   -- Macro: STACK_PARMS_IN_REG_PARM_AREA
!      Define this macro if 'REG_PARM_STACK_SPACE' is defined, but the
       stack parameters don't skip the area specified by it.
  
       Normally, when a parameter is not passed in registers, it is placed
!      on the stack beyond the 'REG_PARM_STACK_SPACE' area.  Defining this
       macro suppresses this behavior and causes the parameter to be
       passed on the stack in its natural location.
  
--- 37443,37458 ----
       registers when calling a function of FNTYPE.  FNTYPE may be NULL if
       the function called is a library function.
  
!      If â€˜ACCUMULATE_OUTGOING_ARGSâ€™ is defined, this macro controls
       whether the space for these arguments counts in the value of
!      â€˜crtl->outgoing_args_sizeâ€™.
  
   -- Macro: STACK_PARMS_IN_REG_PARM_AREA
!      Define this macro if â€˜REG_PARM_STACK_SPACEâ€™ is defined, but the
       stack parameters don't skip the area specified by it.
  
       Normally, when a parameter is not passed in registers, it is placed
!      on the stack beyond the â€˜REG_PARM_STACK_SPACEâ€™ area.  Defining this
       macro suppresses this behavior and causes the parameter to be
       passed on the stack in its natural location.
  
*************** certain arguments in registers.
*** 37461,37472 ****
  
       FUNDECL is a C variable whose value is a tree node that describes
       the function in question.  Normally it is a node of type
!      'FUNCTION_DECL' that describes the declaration of the function.
!      From this you can obtain the 'DECL_ATTRIBUTES' of the function.
  
       FUNTYPE is a C variable whose value is a tree node that describes
       the function in question.  Normally it is a node of type
!      'FUNCTION_TYPE' that describes the data type of the function.  From
       this it is possible to obtain the data types of the value and
       arguments (if known).
  
--- 37465,37476 ----
  
       FUNDECL is a C variable whose value is a tree node that describes
       the function in question.  Normally it is a node of type
!      â€˜FUNCTION_DECLâ€™ that describes the declaration of the function.
!      From this you can obtain the â€˜DECL_ATTRIBUTESâ€™ of the function.
  
       FUNTYPE is a C variable whose value is a tree node that describes
       the function in question.  Normally it is a node of type
!      â€˜FUNCTION_TYPEâ€™ that describes the data type of the function.  From
       this it is possible to obtain the data types of the value and
       arguments (if known).
  
*************** certain arguments in registers.
*** 37487,37493 ****
       calling convention, no functions pop their arguments, so the value
       of the macro is always 0 in this case.  But an alternative calling
       convention is available in which functions that take a fixed number
!      of arguments pop them but other functions (such as 'printf') pop
       nothing (the caller pops all).  When this convention is in use,
       FUNTYPE is examined to determine whether a function takes a fixed
       number of arguments.
--- 37491,37497 ----
       calling convention, no functions pop their arguments, so the value
       of the macro is always 0 in this case.  But an alternative calling
       convention is available in which functions that take a fixed number
!      of arguments pop them but other functions (such as â€˜printfâ€™) pop
       nothing (the caller pops all).  When this convention is in use,
       FUNTYPE is examined to determine whether a function takes a fixed
       number of arguments.
*************** certain arguments in registers.
*** 37495,37501 ****
   -- Macro: CALL_POPS_ARGS (CUM)
       A C expression that should indicate the number of bytes a call
       sequence pops off the stack.  It is added to the value of
!      'RETURN_POPS_ARGS' when compiling a function call.
  
       CUM is the variable in which all arguments to the called function
       have been accumulated.
--- 37499,37505 ----
   -- Macro: CALL_POPS_ARGS (CUM)
       A C expression that should indicate the number of bytes a call
       sequence pops off the stack.  It is added to the value of
!      â€˜RETURN_POPS_ARGSâ€™ when compiling a function call.
  
       CUM is the variable in which all arguments to the called function
       have been accumulated.
*************** certain arguments in registers.
*** 37504,37510 ****
       used that pops certain registers off the stack, depending on the
       arguments that have been passed to the function.  Since this is a
       property of the call site, not of the called function,
!      'RETURN_POPS_ARGS' is not appropriate.
  
  
  File: gccint.info,  Node: Register Arguments,  Next: Scalar Return,  Prev: Stack Arguments,  Up: Stack and Calling
--- 37508,37514 ----
       used that pops certain registers off the stack, depending on the
       arguments that have been passed to the function.  Since this is a
       property of the call site, not of the called function,
!      â€˜RETURN_POPS_ARGSâ€™ is not appropriate.
  
  
  File: gccint.info,  Node: Register Arguments,  Next: Scalar Return,  Prev: Stack Arguments,  Up: Stack and Calling
*************** the stack.
*** 37522,37567 ****
       a register and if so, which register.  Argument CA summarizes all
       the previous arguments.
  
!      The return value is usually either a 'reg' RTX for the hard
       register in which to pass the argument, or zero to pass the
       argument on the stack.
  
!      The value of the expression can also be a 'parallel' RTX.  This is
       used when an argument is passed in multiple locations.  The mode of
!      the 'parallel' should be the mode of the entire argument.  The
!      'parallel' holds any number of 'expr_list' pairs; each one
       describes where part of the argument is passed.  In each
!      'expr_list' the first operand must be a 'reg' RTX for the hard
       register in which to pass this part of the argument, and the mode
       of the register RTX indicates how large this part of the argument
!      is.  The second operand of the 'expr_list' is a 'const_int' which
       gives the offset in bytes into the entire argument of where this
!      part starts.  As a special exception the first 'expr_list' in the
!      'parallel' RTX may have a first operand of zero.  This indicates
       that the entire argument is also stored on the stack.
  
!      The last time this hook is called, it is called with 'MODE ==
!      VOIDmode', and its result is passed to the 'call' or 'call_value'
       pattern as operands 2 and 3 respectively.
  
!      The usual way to make the ISO library 'stdarg.h' work on a machine
       where some arguments are usually passed in registers, is to cause
       nameless arguments to be passed on the stack instead.  This is done
!      by making 'TARGET_FUNCTION_ARG' return 0 whenever NAMED is 'false'.
  
!      You may use the hook 'targetm.calls.must_pass_in_stack' in the
       definition of this macro to determine if this argument is of a type
!      that must be passed in the stack.  If 'REG_PARM_STACK_SPACE' is not
!      defined and 'TARGET_FUNCTION_ARG' returns nonzero for such an
!      argument, the compiler will abort.  If 'REG_PARM_STACK_SPACE' is
       defined, the argument will be computed in the stack and then loaded
       into a register.
  
   -- Target Hook: bool TARGET_MUST_PASS_IN_STACK (const function_arg_info
            &ARG)
!      This target hook should return 'true' if we should not pass ARG
!      solely in registers.  The file 'expr.h' defines a definition that
!      is usually appropriate, refer to 'expr.h' for additional
       documentation.
  
   -- Target Hook: rtx TARGET_FUNCTION_INCOMING_ARG (cumulative_args_t CA,
--- 37526,37571 ----
       a register and if so, which register.  Argument CA summarizes all
       the previous arguments.
  
!      The return value is usually either a â€˜regâ€™ RTX for the hard
       register in which to pass the argument, or zero to pass the
       argument on the stack.
  
!      The value of the expression can also be a â€˜parallelâ€™ RTX.  This is
       used when an argument is passed in multiple locations.  The mode of
!      the â€˜parallelâ€™ should be the mode of the entire argument.  The
!      â€˜parallelâ€™ holds any number of â€˜expr_listâ€™ pairs; each one
       describes where part of the argument is passed.  In each
!      â€˜expr_listâ€™ the first operand must be a â€˜regâ€™ RTX for the hard
       register in which to pass this part of the argument, and the mode
       of the register RTX indicates how large this part of the argument
!      is.  The second operand of the â€˜expr_listâ€™ is a â€˜const_intâ€™ which
       gives the offset in bytes into the entire argument of where this
!      part starts.  As a special exception the first â€˜expr_listâ€™ in the
!      â€˜parallelâ€™ RTX may have a first operand of zero.  This indicates
       that the entire argument is also stored on the stack.
  
!      The last time this hook is called, it is called with â€˜MODE ==
!      VOIDmodeâ€™, and its result is passed to the â€˜callâ€™ or â€˜call_valueâ€™
       pattern as operands 2 and 3 respectively.
  
!      The usual way to make the ISO library â€˜stdarg.hâ€™ work on a machine
       where some arguments are usually passed in registers, is to cause
       nameless arguments to be passed on the stack instead.  This is done
!      by making â€˜TARGET_FUNCTION_ARGâ€™ return 0 whenever NAMED is â€˜falseâ€™.
  
!      You may use the hook â€˜targetm.calls.must_pass_in_stackâ€™ in the
       definition of this macro to determine if this argument is of a type
!      that must be passed in the stack.  If â€˜REG_PARM_STACK_SPACEâ€™ is not
!      defined and â€˜TARGET_FUNCTION_ARGâ€™ returns nonzero for such an
!      argument, the compiler will abort.  If â€˜REG_PARM_STACK_SPACEâ€™ is
       defined, the argument will be computed in the stack and then loaded
       into a register.
  
   -- Target Hook: bool TARGET_MUST_PASS_IN_STACK (const function_arg_info
            &ARG)
!      This target hook should return â€˜trueâ€™ if we should not pass ARG
!      solely in registers.  The file â€˜expr.hâ€™ defines a definition that
!      is usually appropriate, refer to â€˜expr.hâ€™ for additional
       documentation.
  
   -- Target Hook: rtx TARGET_FUNCTION_INCOMING_ARG (cumulative_args_t CA,
*************** the stack.
*** 37572,37588 ****
       invoked by the hardware and which have nonstandard calling
       conventions.
  
!      In this case 'TARGET_FUNCTION_ARG' computes the register in which
!      the caller passes the value, and 'TARGET_FUNCTION_INCOMING_ARG'
       should be defined in a similar fashion to tell the function being
       called where the arguments will arrive.
  
!      'TARGET_FUNCTION_INCOMING_ARG' can also return arbitrary address
       computation using hard register, which can be forced into a
       register, so that it can be used to pass special arguments.
  
!      If 'TARGET_FUNCTION_INCOMING_ARG' is not defined,
!      'TARGET_FUNCTION_ARG' serves both purposes.
  
   -- Target Hook: bool TARGET_USE_PSEUDO_PIC_REG (void)
       This hook should return 1 in case pseudo register should be created
--- 37576,37592 ----
       invoked by the hardware and which have nonstandard calling
       conventions.
  
!      In this case â€˜TARGET_FUNCTION_ARGâ€™ computes the register in which
!      the caller passes the value, and â€˜TARGET_FUNCTION_INCOMING_ARGâ€™
       should be defined in a similar fashion to tell the function being
       called where the arguments will arrive.
  
!      â€˜TARGET_FUNCTION_INCOMING_ARGâ€™ can also return arbitrary address
       computation using hard register, which can be forced into a
       register, so that it can be used to pass special arguments.
  
!      If â€˜TARGET_FUNCTION_INCOMING_ARGâ€™ is not defined,
!      â€˜TARGET_FUNCTION_ARGâ€™ serves both purposes.
  
   -- Target Hook: bool TARGET_USE_PSEUDO_PIC_REG (void)
       This hook should return 1 in case pseudo register should be created
*************** the stack.
*** 37602,37623 ****
       On some machines, certain arguments must be passed partially in
       registers and partially in memory.  On these machines, typically
       the first few words of arguments are passed in registers, and the
!      rest on the stack.  If a multi-word argument (a 'double' or a
       structure) crosses that boundary, its first few words must be
       passed in registers and the rest must be pushed.  This macro tells
       the compiler when this occurs, and how many bytes should go in
       registers.
  
!      'TARGET_FUNCTION_ARG' for these arguments should return the first
       register to be used by the caller for this argument; likewise
!      'TARGET_FUNCTION_INCOMING_ARG', for the called function.
  
   -- Target Hook: bool TARGET_PASS_BY_REFERENCE (cumulative_args_t CUM,
            const function_arg_info &ARG)
!      This target hook should return 'true' if argument ARG at the
       position indicated by CUM should be passed by reference.  This
       predicate is queried after target independent reasons for being
!      passed by reference, such as 'TREE_ADDRESSABLE (ARG.type)'.
  
       If the hook returns true, a copy of that argument is made in memory
       and a pointer to the argument is passed instead of the argument
--- 37606,37627 ----
       On some machines, certain arguments must be passed partially in
       registers and partially in memory.  On these machines, typically
       the first few words of arguments are passed in registers, and the
!      rest on the stack.  If a multi-word argument (a â€˜doubleâ€™ or a
       structure) crosses that boundary, its first few words must be
       passed in registers and the rest must be pushed.  This macro tells
       the compiler when this occurs, and how many bytes should go in
       registers.
  
!      â€˜TARGET_FUNCTION_ARGâ€™ for these arguments should return the first
       register to be used by the caller for this argument; likewise
!      â€˜TARGET_FUNCTION_INCOMING_ARGâ€™, for the called function.
  
   -- Target Hook: bool TARGET_PASS_BY_REFERENCE (cumulative_args_t CUM,
            const function_arg_info &ARG)
!      This target hook should return â€˜trueâ€™ if argument ARG at the
       position indicated by CUM should be passed by reference.  This
       predicate is queried after target independent reasons for being
!      passed by reference, such as â€˜TREE_ADDRESSABLE (ARG.type)â€™.
  
       If the hook returns true, a copy of that argument is made in memory
       and a pointer to the argument is passed instead of the argument
*************** the stack.
*** 37639,37654 ****
  
   -- Macro: CUMULATIVE_ARGS
       A C type for declaring a variable that is used as the first
!      argument of 'TARGET_FUNCTION_ARG' and other related values.  For
!      some target machines, the type 'int' suffices and can hold the
       number of bytes of argument so far.
  
!      There is no need to record in 'CUMULATIVE_ARGS' anything about the
       arguments that have been passed on the stack.  The compiler has
       other variables to keep track of that.  For target machines on
       which all arguments are passed on the stack, there is no need to
!      store anything in 'CUMULATIVE_ARGS'; however, the data structure
!      must exist and should not be empty, so use 'int'.
  
   -- Macro: OVERRIDE_ABI_FORMAT (FNDECL)
       If defined, this macro is called before generating any code for a
--- 37643,37658 ----
  
   -- Macro: CUMULATIVE_ARGS
       A C type for declaring a variable that is used as the first
!      argument of â€˜TARGET_FUNCTION_ARGâ€™ and other related values.  For
!      some target machines, the type â€˜intâ€™ suffices and can hold the
       number of bytes of argument so far.
  
!      There is no need to record in â€˜CUMULATIVE_ARGSâ€™ anything about the
       arguments that have been passed on the stack.  The compiler has
       other variables to keep track of that.  For target machines on
       which all arguments are passed on the stack, there is no need to
!      store anything in â€˜CUMULATIVE_ARGSâ€™; however, the data structure
!      must exist and should not be empty, so use â€˜intâ€™.
  
   -- Macro: OVERRIDE_ABI_FORMAT (FNDECL)
       If defined, this macro is called before generating any code for a
*************** the stack.
*** 37656,37706 ****
       created.  The back end may use this macro to update CFUN to reflect
       an ABI other than that which would normally be used by default.  If
       the compiler is generating code for a compiler-generated function,
!      FNDECL may be 'NULL'.
  
   -- Macro: INIT_CUMULATIVE_ARGS (CUM, FNTYPE, LIBNAME, FNDECL,
            N_NAMED_ARGS)
       A C statement (sans semicolon) for initializing the variable CUM
       for the state at the beginning of the argument list.  The variable
!      has type 'CUMULATIVE_ARGS'.  The value of FNTYPE is the tree node
       for the data type of the function which will receive the args, or 0
       if the args are to a compiler support library function.  For direct
       calls that are not libcalls, FNDECL contain the declaration node of
!      the function.  FNDECL is also set when 'INIT_CUMULATIVE_ARGS' is
       used to find arguments for the function being compiled.
       N_NAMED_ARGS is set to the number of named arguments, including a
       structure return address if it is passed as a parameter, when
       making a call.  When processing incoming arguments, N_NAMED_ARGS is
!      set to -1.
  
       When processing a call to a compiler support library function,
!      LIBNAME identifies which one.  It is a 'symbol_ref' rtx which
       contains the name of the function, as a string.  LIBNAME is 0 when
       an ordinary C function call is being processed.  Thus, each time
       this macro is called, either LIBNAME or FNTYPE is nonzero, but
       never both of them at once.
  
   -- Macro: INIT_CUMULATIVE_LIBCALL_ARGS (CUM, MODE, LIBNAME)
!      Like 'INIT_CUMULATIVE_ARGS' but only used for outgoing libcalls, it
!      gets a 'MODE' argument instead of FNTYPE, that would be 'NULL'.
       INDIRECT would always be zero, too.  If this macro is not defined,
!      'INIT_CUMULATIVE_ARGS (cum, NULL_RTX, libname, 0)' is used instead.
  
   -- Macro: INIT_CUMULATIVE_INCOMING_ARGS (CUM, FNTYPE, LIBNAME)
!      Like 'INIT_CUMULATIVE_ARGS' but overrides it for the purposes of
       finding the arguments for the function being compiled.  If this
!      macro is undefined, 'INIT_CUMULATIVE_ARGS' is used instead.
  
       The value passed for LIBNAME is always 0, since library routines
       with special calling conventions are never compiled with GCC.  The
!      argument LIBNAME exists for symmetry with 'INIT_CUMULATIVE_ARGS'.
  
   -- Target Hook: void TARGET_FUNCTION_ARG_ADVANCE (cumulative_args_t CA,
            const function_arg_info &ARG)
       This hook updates the summarizer variable pointed to by CA to
       advance past argument ARG in the argument list.  Once this is done,
       the variable CUM is suitable for analyzing the _following_ argument
!      with 'TARGET_FUNCTION_ARG', etc.
  
       This hook need not do anything if the argument in question was
       passed on the stack.  The compiler knows how to track the amount of
--- 37660,37710 ----
       created.  The back end may use this macro to update CFUN to reflect
       an ABI other than that which would normally be used by default.  If
       the compiler is generating code for a compiler-generated function,
!      FNDECL may be â€˜NULLâ€™.
  
   -- Macro: INIT_CUMULATIVE_ARGS (CUM, FNTYPE, LIBNAME, FNDECL,
            N_NAMED_ARGS)
       A C statement (sans semicolon) for initializing the variable CUM
       for the state at the beginning of the argument list.  The variable
!      has type â€˜CUMULATIVE_ARGSâ€™.  The value of FNTYPE is the tree node
       for the data type of the function which will receive the args, or 0
       if the args are to a compiler support library function.  For direct
       calls that are not libcalls, FNDECL contain the declaration node of
!      the function.  FNDECL is also set when â€˜INIT_CUMULATIVE_ARGSâ€™ is
       used to find arguments for the function being compiled.
       N_NAMED_ARGS is set to the number of named arguments, including a
       structure return address if it is passed as a parameter, when
       making a call.  When processing incoming arguments, N_NAMED_ARGS is
!      set to âˆ’1.
  
       When processing a call to a compiler support library function,
!      LIBNAME identifies which one.  It is a â€˜symbol_refâ€™ rtx which
       contains the name of the function, as a string.  LIBNAME is 0 when
       an ordinary C function call is being processed.  Thus, each time
       this macro is called, either LIBNAME or FNTYPE is nonzero, but
       never both of them at once.
  
   -- Macro: INIT_CUMULATIVE_LIBCALL_ARGS (CUM, MODE, LIBNAME)
!      Like â€˜INIT_CUMULATIVE_ARGSâ€™ but only used for outgoing libcalls, it
!      gets a â€˜MODEâ€™ argument instead of FNTYPE, that would be â€˜NULLâ€™.
       INDIRECT would always be zero, too.  If this macro is not defined,
!      â€˜INIT_CUMULATIVE_ARGS (cum, NULL_RTX, libname, 0)â€™ is used instead.
  
   -- Macro: INIT_CUMULATIVE_INCOMING_ARGS (CUM, FNTYPE, LIBNAME)
!      Like â€˜INIT_CUMULATIVE_ARGSâ€™ but overrides it for the purposes of
       finding the arguments for the function being compiled.  If this
!      macro is undefined, â€˜INIT_CUMULATIVE_ARGSâ€™ is used instead.
  
       The value passed for LIBNAME is always 0, since library routines
       with special calling conventions are never compiled with GCC.  The
!      argument LIBNAME exists for symmetry with â€˜INIT_CUMULATIVE_ARGSâ€™.
  
   -- Target Hook: void TARGET_FUNCTION_ARG_ADVANCE (cumulative_args_t CA,
            const function_arg_info &ARG)
       This hook updates the summarizer variable pointed to by CA to
       advance past argument ARG in the argument list.  Once this is done,
       the variable CUM is suitable for analyzing the _following_ argument
!      with â€˜TARGET_FUNCTION_ARGâ€™, etc.
  
       This hook need not do anything if the argument in question was
       passed on the stack.  The compiler knows how to track the amount of
*************** the stack.
*** 37710,37741 ****
            MODE, const_tree TYPE)
       This hook returns the number of bytes to add to the offset of an
       argument of type TYPE and mode MODE when passed in memory.  This is
!      needed for the SPU, which passes 'char' and 'short' arguments in
       the preferred slot that is in the middle of the quad word instead
       of starting at the top.  The default implementation returns 0.
  
   -- Target Hook: pad_direction TARGET_FUNCTION_ARG_PADDING (machine_mode
            MODE, const_tree TYPE)
       This hook determines whether, and in which direction, to pad out an
!      argument of mode MODE and type TYPE.  It returns 'PAD_UPWARD' to
!      insert padding above the argument, 'PAD_DOWNWARD' to insert padding
!      below the argument, or 'PAD_NONE' to inhibit padding.
  
       The _amount_ of padding is not controlled by this hook, but by
!      'TARGET_FUNCTION_ARG_ROUND_BOUNDARY'.  It is always just enough to
       reach the next multiple of that boundary.
  
       This hook has a default definition that is right for most systems.
       For little-endian machines, the default is to pad upward.  For
       big-endian machines, the default is to pad downward for an argument
!      of constant size shorter than an 'int', and upward otherwise.
  
   -- Macro: PAD_VARARGS_DOWN
       If defined, a C expression which determines whether the default
       implementation of va_arg will attempt to pad down before reading
       the next argument, if that argument is smaller than its aligned
!      space as controlled by 'PARM_BOUNDARY'.  If this macro is not
!      defined, all such arguments are padded down if 'BYTES_BIG_ENDIAN'
       is true.
  
   -- Macro: BLOCK_REG_PADDING (MODE, TYPE, FIRST)
--- 37714,37745 ----
            MODE, const_tree TYPE)
       This hook returns the number of bytes to add to the offset of an
       argument of type TYPE and mode MODE when passed in memory.  This is
!      needed for the SPU, which passes â€˜charâ€™ and â€˜shortâ€™ arguments in
       the preferred slot that is in the middle of the quad word instead
       of starting at the top.  The default implementation returns 0.
  
   -- Target Hook: pad_direction TARGET_FUNCTION_ARG_PADDING (machine_mode
            MODE, const_tree TYPE)
       This hook determines whether, and in which direction, to pad out an
!      argument of mode MODE and type TYPE.  It returns â€˜PAD_UPWARDâ€™ to
!      insert padding above the argument, â€˜PAD_DOWNWARDâ€™ to insert padding
!      below the argument, or â€˜PAD_NONEâ€™ to inhibit padding.
  
       The _amount_ of padding is not controlled by this hook, but by
!      â€˜TARGET_FUNCTION_ARG_ROUND_BOUNDARYâ€™.  It is always just enough to
       reach the next multiple of that boundary.
  
       This hook has a default definition that is right for most systems.
       For little-endian machines, the default is to pad upward.  For
       big-endian machines, the default is to pad downward for an argument
!      of constant size shorter than an â€˜intâ€™, and upward otherwise.
  
   -- Macro: PAD_VARARGS_DOWN
       If defined, a C expression which determines whether the default
       implementation of va_arg will attempt to pad down before reading
       the next argument, if that argument is smaller than its aligned
!      space as controlled by â€˜PARM_BOUNDARYâ€™.  If this macro is not
!      defined, all such arguments are padded down if â€˜BYTES_BIG_ENDIANâ€™
       is true.
  
   -- Macro: BLOCK_REG_PADDING (MODE, TYPE, FIRST)
*************** the stack.
*** 37743,37749 ****
       registers and memory.  FIRST is nonzero if this is the only
       element.  Defining this macro allows better control of register
       function parameters on big-endian machines, without using
!      'PARALLEL' rtl.  In particular, 'MUST_PASS_IN_STACK' need not test
       padding and mode of types in registers, as there is no longer a
       "wrong" part of a register; For example, a three byte aggregate may
       be passed in the high part of a register if so required.
--- 37747,37753 ----
       registers and memory.  FIRST is nonzero if this is the only
       element.  Defining this macro allows better control of register
       function parameters on big-endian machines, without using
!      â€˜PARALLELâ€™ rtl.  In particular, â€˜MUST_PASS_IN_STACKâ€™ need not test
       padding and mode of types in registers, as there is no longer a
       "wrong" part of a register; For example, a three byte aggregate may
       be passed in the high part of a register if so required.
*************** the stack.
*** 37752,37762 ****
            MODE, const_tree TYPE)
       This hook returns the alignment boundary, in bits, of an argument
       with the specified mode and type.  The default hook returns
!      'PARM_BOUNDARY' for all arguments.
  
   -- Target Hook: unsigned int TARGET_FUNCTION_ARG_ROUND_BOUNDARY
            (machine_mode MODE, const_tree TYPE)
!      Normally, the size of an argument is rounded up to 'PARM_BOUNDARY',
       which is the default value for this hook.  You can define this hook
       to return a different value if an argument size must be rounded to
       a larger value.
--- 37756,37766 ----
            MODE, const_tree TYPE)
       This hook returns the alignment boundary, in bits, of an argument
       with the specified mode and type.  The default hook returns
!      â€˜PARM_BOUNDARYâ€™ for all arguments.
  
   -- Target Hook: unsigned int TARGET_FUNCTION_ARG_ROUND_BOUNDARY
            (machine_mode MODE, const_tree TYPE)
!      Normally, the size of an argument is rounded up to â€˜PARM_BOUNDARYâ€™,
       which is the default value for this hook.  You can define this hook
       to return a different value if an argument size must be rounded to
       a larger value.
*************** the stack.
*** 37778,37796 ****
       in a pair of floating point registers, even though a complex float
       would fit in one 64-bit floating point register.
  
!      The default value of this hook is 'NULL', which is treated as
       always false.
  
   -- Target Hook: tree TARGET_BUILD_BUILTIN_VA_LIST (void)
!      This hook returns a type node for 'va_list' for the target.  The
!      default version of the hook returns 'void*'.
  
   -- Target Hook: int TARGET_ENUM_VA_LIST_P (int IDX, const char **PNAME,
            tree *PTREE)
!      This target hook is used in function 'c_common_nodes_and_builtins'
       to iterate through the target specific builtin types for va_list.
       The variable IDX is used as iterator.  PNAME has to be a pointer to
!      a 'const char *' and PTREE a pointer to a 'tree' typed variable.
       The arguments PNAME and PTREE are used to store the result of this
       macro and are set to the name of the va_list builtin type and its
       internal type.  If the return value of this macro is zero, then
--- 37782,37800 ----
       in a pair of floating point registers, even though a complex float
       would fit in one 64-bit floating point register.
  
!      The default value of this hook is â€˜NULLâ€™, which is treated as
       always false.
  
   -- Target Hook: tree TARGET_BUILD_BUILTIN_VA_LIST (void)
!      This hook returns a type node for â€˜va_listâ€™ for the target.  The
!      default version of the hook returns â€˜void*â€™.
  
   -- Target Hook: int TARGET_ENUM_VA_LIST_P (int IDX, const char **PNAME,
            tree *PTREE)
!      This target hook is used in function â€˜c_common_nodes_and_builtinsâ€™
       to iterate through the target specific builtin types for va_list.
       The variable IDX is used as iterator.  PNAME has to be a pointer to
!      a â€˜const char *â€™ and PTREE a pointer to a â€˜treeâ€™ typed variable.
       The arguments PNAME and PTREE are used to store the result of this
       macro and are set to the name of the va_list builtin type and its
       internal type.  If the return value of this macro is zero, then
*************** the stack.
*** 37800,37822 ****
   -- Target Hook: tree TARGET_FN_ABI_VA_LIST (tree FNDECL)
       This hook returns the va_list type of the calling convention
       specified by FNDECL.  The default version of this hook returns
!      'va_list_type_node'.
  
   -- Target Hook: tree TARGET_CANONICAL_VA_LIST_TYPE (tree TYPE)
       This hook returns the va_list type of the calling convention
       specified by the type of TYPE.  If TYPE is not a valid va_list
!      type, it returns 'NULL_TREE'.
  
   -- Target Hook: tree TARGET_GIMPLIFY_VA_ARG_EXPR (tree VALIST, tree
            TYPE, gimple_seq *PRE_P, gimple_seq *POST_P)
!      This hook performs target-specific gimplification of 'VA_ARG_EXPR'.
!      The first two parameters correspond to the arguments to 'va_arg';
!      the latter two are as in 'gimplify.cc:gimplify_expr'.
  
   -- Target Hook: bool TARGET_VALID_POINTER_MODE (scalar_int_mode MODE)
       Define this to return nonzero if the port can handle pointers with
       machine mode MODE.  The default version of this hook returns true
!      for both 'ptr_mode' and 'Pmode'.
  
   -- Target Hook: bool TARGET_REF_MAY_ALIAS_ERRNO (ao_ref *REF)
       Define this to return nonzero if the memory reference REF may alias
--- 37804,37826 ----
   -- Target Hook: tree TARGET_FN_ABI_VA_LIST (tree FNDECL)
       This hook returns the va_list type of the calling convention
       specified by FNDECL.  The default version of this hook returns
!      â€˜va_list_type_nodeâ€™.
  
   -- Target Hook: tree TARGET_CANONICAL_VA_LIST_TYPE (tree TYPE)
       This hook returns the va_list type of the calling convention
       specified by the type of TYPE.  If TYPE is not a valid va_list
!      type, it returns â€˜NULL_TREEâ€™.
  
   -- Target Hook: tree TARGET_GIMPLIFY_VA_ARG_EXPR (tree VALIST, tree
            TYPE, gimple_seq *PRE_P, gimple_seq *POST_P)
!      This hook performs target-specific gimplification of â€˜VA_ARG_EXPRâ€™.
!      The first two parameters correspond to the arguments to â€˜va_argâ€™;
!      the latter two are as in â€˜gimplify.cc:gimplify_exprâ€™.
  
   -- Target Hook: bool TARGET_VALID_POINTER_MODE (scalar_int_mode MODE)
       Define this to return nonzero if the port can handle pointers with
       machine mode MODE.  The default version of this hook returns true
!      for both â€˜ptr_modeâ€™ and â€˜Pmodeâ€™.
  
   -- Target Hook: bool TARGET_REF_MAY_ALIAS_ERRNO (ao_ref *REF)
       Define this to return nonzero if the memory reference REF may alias
*************** the stack.
*** 37827,37833 ****
  
   -- Target Hook: bool TARGET_MODE_CAN_TRANSFER_BITS (machine_mode MODE)
       Define this to return false if the mode MODE cannot be used for
!      memory copying of 'GET_MODE_SIZE (mode)' units.  This might be
       because a register class allowed for MODE has registers that do not
       transparently transfer every bit pattern or because the load or
       store patterns available for MODE have this issue.
--- 37831,37837 ----
  
   -- Target Hook: bool TARGET_MODE_CAN_TRANSFER_BITS (machine_mode MODE)
       Define this to return false if the mode MODE cannot be used for
!      memory copying of â€˜GET_MODE_SIZE (mode)â€™ units.  This might be
       because a register class allowed for MODE has registers that do not
       transparently transfer every bit pattern or because the load or
       store patterns available for MODE have this issue.
*************** the stack.
*** 37836,37852 ****
       fine to be used.
  
   -- Target Hook: rtx TARGET_REDZONE_CLOBBER ()
!      Define this to return some RTL for the 'redzone' 'asm' clobber if
!      target has a red zone and wants to support the 'redzone' clobber or
       return NULL if the clobber should be ignored.
  
!      The default is to ignore the 'redzone' clobber.
  
   -- Target Hook: machine_mode TARGET_TRANSLATE_MODE_ATTRIBUTE
            (machine_mode MODE)
       Define this hook if during mode attribute processing, the port
       should translate machine_mode MODE to another mode.  For example,
!      rs6000's 'KFmode', when it is the same as 'TFmode'.
  
       The default version of the hook returns that mode that was passed
       in.
--- 37840,37856 ----
       fine to be used.
  
   -- Target Hook: rtx TARGET_REDZONE_CLOBBER ()
!      Define this to return some RTL for the â€˜redzoneâ€™ â€˜asmâ€™ clobber if
!      target has a red zone and wants to support the â€˜redzoneâ€™ clobber or
       return NULL if the clobber should be ignored.
  
!      The default is to ignore the â€˜redzoneâ€™ clobber.
  
   -- Target Hook: machine_mode TARGET_TRANSLATE_MODE_ATTRIBUTE
            (machine_mode MODE)
       Define this hook if during mode attribute processing, the port
       should translate machine_mode MODE to another mode.  For example,
!      rs6000's â€˜KFmodeâ€™, when it is the same as â€˜TFmodeâ€™.
  
       The default version of the hook returns that mode that was passed
       in.
*************** the stack.
*** 37860,37866 ****
       The default version of this hook returns true for any mode required
       to handle the basic C types (as defined by the port).  Included
       here are the double-word arithmetic supported by the code in
!      'optabs.cc'.
  
   -- Target Hook: bool TARGET_VECTOR_MODE_SUPPORTED_P (machine_mode MODE)
       Define this to return nonzero if the current target is prepared to
--- 37864,37870 ----
       The default version of this hook returns true for any mode required
       to handle the basic C types (as defined by the port).  Included
       here are the double-word arithmetic supported by the code in
!      â€˜optabs.ccâ€™.
  
   -- Target Hook: bool TARGET_VECTOR_MODE_SUPPORTED_P (machine_mode MODE)
       Define this to return nonzero if the current target is prepared to
*************** the stack.
*** 37871,37882 ****
            (machine_mode MODE)
       Define this to return nonzero if the port is prepared to handle
       insns involving vector mode MODE in any target configuration.
!      Returning TRUE means that the mode can be used as the 'TYPE_MODE'
       for vector types.
  
       The default version of this hook returns true.  The final mode
!      assigned to 'TYPE_MODE' will also be checked against
!      'TARGET_VECTOR_MODE_SUPPORTED_P' to take target configuration into
       account.
  
   -- Target Hook: bool TARGET_COMPATIBLE_VECTOR_TYPES_P (const_tree
--- 37875,37886 ----
            (machine_mode MODE)
       Define this to return nonzero if the port is prepared to handle
       insns involving vector mode MODE in any target configuration.
!      Returning TRUE means that the mode can be used as the â€˜TYPE_MODEâ€™
       for vector types.
  
       The default version of this hook returns true.  The final mode
!      assigned to â€˜TYPE_MODEâ€™ will also be checked against
!      â€˜TARGET_VECTOR_MODE_SUPPORTED_Pâ€™ to take target configuration into
       account.
  
   -- Target Hook: bool TARGET_COMPATIBLE_VECTOR_TYPES_P (const_tree
*************** the stack.
*** 37891,37902 ****
       The main reason for defining this hook is to reject pairs of types
       that are handled differently by the target's calling convention.
       For example, when a new N-bit vector architecture is added to a
!      target, the target may want to handle normal N-bit 'VECTOR_TYPE'
       arguments and return values in the same way as before, to maintain
       backwards compatibility.  However, it may also provide new,
!      architecture-specific 'VECTOR_TYPE's that are passed and returned
       in a more efficient way.  It is then important to maintain a
!      distinction between the "normal" 'VECTOR_TYPE's and the new
       architecture-specific ones.
  
       The default implementation returns true, which is correct for most
--- 37895,37906 ----
       The main reason for defining this hook is to reject pairs of types
       that are handled differently by the target's calling convention.
       For example, when a new N-bit vector architecture is added to a
!      target, the target may want to handle normal N-bit â€˜VECTOR_TYPEâ€™
       arguments and return values in the same way as before, to maintain
       backwards compatibility.  However, it may also provide new,
!      architecture-specific â€˜VECTOR_TYPEâ€™s that are passed and returned
       in a more efficient way.  It is then important to maintain a
!      distinction between the "normal" â€˜VECTOR_TYPEâ€™s and the new
       architecture-specific ones.
  
       The default implementation returns true, which is correct for most
*************** the stack.
*** 37909,37916 ****
       the target has no special requirements.  In the latter case, GCC
       looks for an integer mode of the appropriate size if available and
       uses BLKmode otherwise.  Usually the search for the integer mode is
!      limited to 'MAX_FIXED_MODE_SIZE', but the
!      'TARGET_ARRAY_MODE_SUPPORTED_P' hook allows a larger mode to be
       used in specific cases.
  
       The main use of this hook is to specify that an array of vectors
--- 37913,37920 ----
       the target has no special requirements.  In the latter case, GCC
       looks for an integer mode of the appropriate size if available and
       uses BLKmode otherwise.  Usually the search for the integer mode is
!      limited to â€˜MAX_FIXED_MODE_SIZEâ€™, but the
!      â€˜TARGET_ARRAY_MODE_SUPPORTED_Pâ€™ hook allows a larger mode to be
       used in specific cases.
  
       The main use of this hook is to specify that an array of vectors
*************** the stack.
*** 37921,37927 ****
            unsigned HOST_WIDE_INT NELEMS)
       Return true if GCC should try to use a scalar mode to store an
       array of NELEMS elements, given that each element has mode MODE.
!      Returning true here overrides the usual 'MAX_FIXED_MODE' limit and
       allows GCC to use any defined integer mode.
  
       One use of this hook is to support vector load and store operations
--- 37925,37931 ----
            unsigned HOST_WIDE_INT NELEMS)
       Return true if GCC should try to use a scalar mode to store an
       array of NELEMS elements, given that each element has mode MODE.
!      Returning true here overrides the usual â€˜MAX_FIXED_MODEâ€™ limit and
       allows GCC to use any defined integer mode.
  
       One use of this hook is to support vector load and store operations
*************** the stack.
*** 37937,37988 ****
              int8x8_t val[3];
            } int8x8x3_t;
  
!      If this hook allows 'val' to have a scalar mode, then 'int8x8x3_t'
!      can have the same mode.  GCC can then store 'int8x8x3_t's in
       registers rather than forcing them onto the stack.
  
   -- Target Hook: bool TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P
            (scalar_float_mode MODE)
       Define this to return nonzero if libgcc provides support for the
       floating-point mode MODE, which is known to pass
!      'TARGET_SCALAR_MODE_SUPPORTED_P'.  The default version of this hook
!      returns true for all of 'SFmode', 'DFmode', 'XFmode' and 'TFmode',
       if such modes exist.
  
   -- Target Hook: opt_scalar_float_mode TARGET_FLOATN_MODE (int N, bool
            EXTENDED)
       Define this to return the machine mode to use for the type
!      '_FloatN', if EXTENDED is false, or the type '_FloatNx', if
       EXTENDED is true.  If such a type is not supported, return
!      'opt_scalar_float_mode ()'.  The default version of this hook
!      returns 'SFmode' for '_Float32', 'DFmode' for '_Float64' and
!      '_Float32x' and 'TFmode' for '_Float128', if those modes exist and
       satisfy the requirements for those types and pass
!      'TARGET_SCALAR_MODE_SUPPORTED_P' and
!      'TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P'; for '_Float64x', it
!      returns the first of 'XFmode' and 'TFmode' that exists and
       satisfies the same requirements; for other types, it returns
!      'opt_scalar_float_mode ()'.  The hook is only called for values of
       N and EXTENDED that are valid according to ISO/IEC TS 18661-3:2015;
       that is, N is one of 32, 64, 128, or, if EXTENDED is false, 16 or
       greater than 128 and a multiple of 32.
  
   -- Target Hook: bool TARGET_FLOATN_BUILTIN_P (int FUNC)
!      Define this to return true if the '_FloatN' and '_FloatNx' built-in
       functions should implicitly enable the built-in function without
!      the '__builtin_' prefix in addition to the normal built-in function
!      with the '__builtin_' prefix.  The default is to only enable
!      built-in functions without the '__builtin_' prefix for the GNU C
       langauge.  In strict ANSI/ISO mode, the built-in function without
!      the '__builtin_' prefix is not enabled.  The argument 'FUNC' is the
!      'enum built_in_function' id of the function to be enabled.
  
   -- Target Hook: bool TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P
            (machine_mode MODE)
       Define this to return nonzero for machine modes for which the port
       has small register classes.  If this target hook returns nonzero
       for a given MODE, the compiler will try to minimize the lifetime of
!      registers in MODE.  The hook may be called with 'VOIDmode' as
       argument.  In this case, the hook is expected to return nonzero if
       it returns nonzero for any mode.
  
--- 37941,37992 ----
              int8x8_t val[3];
            } int8x8x3_t;
  
!      If this hook allows â€˜valâ€™ to have a scalar mode, then â€˜int8x8x3_tâ€™
!      can have the same mode.  GCC can then store â€˜int8x8x3_tâ€™s in
       registers rather than forcing them onto the stack.
  
   -- Target Hook: bool TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P
            (scalar_float_mode MODE)
       Define this to return nonzero if libgcc provides support for the
       floating-point mode MODE, which is known to pass
!      â€˜TARGET_SCALAR_MODE_SUPPORTED_Pâ€™.  The default version of this hook
!      returns true for all of â€˜SFmodeâ€™, â€˜DFmodeâ€™, â€˜XFmodeâ€™ and â€˜TFmodeâ€™,
       if such modes exist.
  
   -- Target Hook: opt_scalar_float_mode TARGET_FLOATN_MODE (int N, bool
            EXTENDED)
       Define this to return the machine mode to use for the type
!      â€˜_FloatNâ€™, if EXTENDED is false, or the type â€˜_FloatNxâ€™, if
       EXTENDED is true.  If such a type is not supported, return
!      â€˜opt_scalar_float_mode ()â€™.  The default version of this hook
!      returns â€˜SFmodeâ€™ for â€˜_Float32â€™, â€˜DFmodeâ€™ for â€˜_Float64â€™ and
!      â€˜_Float32xâ€™ and â€˜TFmodeâ€™ for â€˜_Float128â€™, if those modes exist and
       satisfy the requirements for those types and pass
!      â€˜TARGET_SCALAR_MODE_SUPPORTED_Pâ€™ and
!      â€˜TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_Pâ€™; for â€˜_Float64xâ€™, it
!      returns the first of â€˜XFmodeâ€™ and â€˜TFmodeâ€™ that exists and
       satisfies the same requirements; for other types, it returns
!      â€˜opt_scalar_float_mode ()â€™.  The hook is only called for values of
       N and EXTENDED that are valid according to ISO/IEC TS 18661-3:2015;
       that is, N is one of 32, 64, 128, or, if EXTENDED is false, 16 or
       greater than 128 and a multiple of 32.
  
   -- Target Hook: bool TARGET_FLOATN_BUILTIN_P (int FUNC)
!      Define this to return true if the â€˜_FloatNâ€™ and â€˜_FloatNxâ€™ built-in
       functions should implicitly enable the built-in function without
!      the â€˜__builtin_â€™ prefix in addition to the normal built-in function
!      with the â€˜__builtin_â€™ prefix.  The default is to only enable
!      built-in functions without the â€˜__builtin_â€™ prefix for the GNU C
       langauge.  In strict ANSI/ISO mode, the built-in function without
!      the â€˜__builtin_â€™ prefix is not enabled.  The argument â€˜FUNCâ€™ is the
!      â€˜enum built_in_functionâ€™ id of the function to be enabled.
  
   -- Target Hook: bool TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P
            (machine_mode MODE)
       Define this to return nonzero for machine modes for which the port
       has small register classes.  If this target hook returns nonzero
       for a given MODE, the compiler will try to minimize the lifetime of
!      registers in MODE.  The hook may be called with â€˜VOIDmodeâ€™ as
       argument.  In this case, the hook is expected to return nonzero if
       it returns nonzero for any mode.
  
*************** the stack.
*** 38000,38006 ****
       requires specific registers for the legacy x86 integer
       instructions, but there are many SSE registers for floating point
       operations.  On such targets, a good strategy may be to return
!      nonzero from this hook for 'INTEGRAL_MODE_P' machine modes but zero
       for the SSE register classes.
  
       The default version of this hook returns false for any mode.  It is
--- 38004,38010 ----
       requires specific registers for the legacy x86 integer
       instructions, but there are many SSE registers for floating point
       operations.  On such targets, a good strategy may be to return
!      nonzero from this hook for â€˜INTEGRAL_MODE_Pâ€™ machine modes but zero
       for the SSE register classes.
  
       The default version of this hook returns false for any mode.  It is
*************** values--values that can fit in registers
*** 38026,38056 ****
       Define this to return an RTX representing the place where a
       function returns or receives a value of data type RET_TYPE, a tree
       node representing a data type.  FN_DECL_OR_TYPE is a tree node
!      representing 'FUNCTION_DECL' or 'FUNCTION_TYPE' of a function being
       called.  If OUTGOING is false, the hook should compute the register
       in which the caller will see the return value.  Otherwise, the hook
       should return an RTX representing the place where a function
       returns a value.
  
!      On many machines, only 'TYPE_MODE (RET_TYPE)' is relevant.
       (Actually, on most machines, scalar values are returned in the same
       place regardless of mode.)  The value of the expression is usually
!      a 'reg' RTX for the hard register where the return value is stored.
!      The value can also be a 'parallel' RTX, if the return value is in
!      multiple places.  See 'TARGET_FUNCTION_ARG' for an explanation of
!      the 'parallel' form.  Note that the callee will populate every
!      location specified in the 'parallel', but if the first element of
!      the 'parallel' contains the whole return value, callers will use
       that element as the canonical location and ignore the others.  The
!      m68k port uses this type of 'parallel' to return pointers in both
!      '%a0' (the canonical location) and '%d0'.
  
!      If 'TARGET_PROMOTE_FUNCTION_RETURN' returns true, you must apply
!      the same promotion rules specified in 'PROMOTE_MODE' if VALTYPE is
       a scalar type.
  
       If the precise function being called is known, FUNC is a tree node
!      ('FUNCTION_DECL') for it; otherwise, FUNC is a null pointer.  This
       makes it possible to use a different value-returning convention for
       specific functions when all their calls are known.
  
--- 38030,38060 ----
       Define this to return an RTX representing the place where a
       function returns or receives a value of data type RET_TYPE, a tree
       node representing a data type.  FN_DECL_OR_TYPE is a tree node
!      representing â€˜FUNCTION_DECLâ€™ or â€˜FUNCTION_TYPEâ€™ of a function being
       called.  If OUTGOING is false, the hook should compute the register
       in which the caller will see the return value.  Otherwise, the hook
       should return an RTX representing the place where a function
       returns a value.
  
!      On many machines, only â€˜TYPE_MODE (RET_TYPE)â€™ is relevant.
       (Actually, on most machines, scalar values are returned in the same
       place regardless of mode.)  The value of the expression is usually
!      a â€˜regâ€™ RTX for the hard register where the return value is stored.
!      The value can also be a â€˜parallelâ€™ RTX, if the return value is in
!      multiple places.  See â€˜TARGET_FUNCTION_ARGâ€™ for an explanation of
!      the â€˜parallelâ€™ form.  Note that the callee will populate every
!      location specified in the â€˜parallelâ€™, but if the first element of
!      the â€˜parallelâ€™ contains the whole return value, callers will use
       that element as the canonical location and ignore the others.  The
!      m68k port uses this type of â€˜parallelâ€™ to return pointers in both
!      â€˜%a0â€™ (the canonical location) and â€˜%d0â€™.
  
!      If â€˜TARGET_PROMOTE_FUNCTION_RETURNâ€™ returns true, you must apply
!      the same promotion rules specified in â€˜PROMOTE_MODEâ€™ if VALTYPE is
       a scalar type.
  
       If the precise function being called is known, FUNC is a tree node
!      (â€˜FUNCTION_DECLâ€™) for it; otherwise, FUNC is a null pointer.  This
       makes it possible to use a different value-returning convention for
       specific functions when all their calls are known.
  
*************** values--values that can fit in registers
*** 38059,38070 ****
       which the caller sees the value.  For such machines, you should
       return different RTX depending on OUTGOING.
  
!      'TARGET_FUNCTION_VALUE' is not used for return values with
       aggregate data types, because these are returned in another way.
!      See 'TARGET_STRUCT_VALUE_RTX' and related macros, below.
  
   -- Macro: FUNCTION_VALUE (VALTYPE, FUNC)
!      This macro has been deprecated.  Use 'TARGET_FUNCTION_VALUE' for a
       new target instead.
  
   -- Macro: LIBCALL_VALUE (MODE)
--- 38063,38074 ----
       which the caller sees the value.  For such machines, you should
       return different RTX depending on OUTGOING.
  
!      â€˜TARGET_FUNCTION_VALUEâ€™ is not used for return values with
       aggregate data types, because these are returned in another way.
!      See â€˜TARGET_STRUCT_VALUE_RTXâ€™ and related macros, below.
  
   -- Macro: FUNCTION_VALUE (VALTYPE, FUNC)
!      This macro has been deprecated.  Use â€˜TARGET_FUNCTION_VALUEâ€™ for a
       new target instead.
  
   -- Macro: LIBCALL_VALUE (MODE)
*************** values--values that can fit in registers
*** 38094,38100 ****
       register in which the values of called function may come back.
  
       A register whose use for returning values is limited to serving as
!      the second of a pair (for a value of type 'double', say) need not
       be recognized by this macro.  So for most machines, this definition
       suffices:
  
--- 38098,38104 ----
       register in which the values of called function may come back.
  
       A register whose use for returning values is limited to serving as
!      the second of a pair (for a value of type â€˜doubleâ€™, say) need not
       be recognized by this macro.  So for most machines, this definition
       suffices:
  
*************** values--values that can fit in registers
*** 38105,38119 ****
       macro should recognize only the caller's register numbers.
  
       This macro has been deprecated.  Use
!      'TARGET_FUNCTION_VALUE_REGNO_P' for a new target instead.
  
   -- Target Hook: bool TARGET_FUNCTION_VALUE_REGNO_P (const unsigned int
            REGNO)
!      A target hook that return 'true' if REGNO is the number of a hard
       register in which the values of called function may come back.
  
       A register whose use for returning values is limited to serving as
!      the second of a pair (for a value of type 'double', say) need not
       be recognized by this target hook.
  
       If the machine has register windows, so that the caller and the
--- 38109,38123 ----
       macro should recognize only the caller's register numbers.
  
       This macro has been deprecated.  Use
!      â€˜TARGET_FUNCTION_VALUE_REGNO_Pâ€™ for a new target instead.
  
   -- Target Hook: bool TARGET_FUNCTION_VALUE_REGNO_P (const unsigned int
            REGNO)
!      A target hook that return â€˜trueâ€™ if REGNO is the number of a hard
       register in which the values of called function may come back.
  
       A register whose use for returning values is limited to serving as
!      the second of a pair (for a value of type â€˜doubleâ€™, say) need not
       be recognized by this target hook.
  
       If the machine has register windows, so that the caller and the
*************** values--values that can fit in registers
*** 38124,38131 ****
       used.
  
   -- Macro: APPLY_RESULT_SIZE
!      Define this macro if 'untyped_call' and 'untyped_return' need more
!      space than is implied by 'FUNCTION_VALUE_REGNO_P' for saving and
       restoring an arbitrary return value.
  
   -- Target Hook: bool TARGET_OMIT_STRUCT_RETURN_REG
--- 38128,38135 ----
       used.
  
   -- Macro: APPLY_RESULT_SIZE
!      Define this macro if â€˜untyped_callâ€™ and â€˜untyped_returnâ€™ need more
!      space than is implied by â€˜FUNCTION_VALUE_REGNO_Pâ€™ for saving and
       restoring an arbitrary return value.
  
   -- Target Hook: bool TARGET_OMIT_STRUCT_RETURN_REG
*************** values--values that can fit in registers
*** 38141,38150 ****
       padded at the least significant end).  You can assume that TYPE is
       returned in a register; the caller is required to check this.
  
!      Note that the register provided by 'TARGET_FUNCTION_VALUE' must be
       able to hold the complete return value.  For example, if a 1-, 2-
       or 3-byte structure is returned at the most significant end of a
!      4-byte register, 'TARGET_FUNCTION_VALUE' should provide an 'SImode'
       rtx.
  
  
--- 38145,38154 ----
       padded at the least significant end).  You can assume that TYPE is
       returned in a register; the caller is required to check this.
  
!      Note that the register provided by â€˜TARGET_FUNCTION_VALUEâ€™ must be
       able to hold the complete return value.  For example, if a 1-, 2-
       or 3-byte structure is returned at the most significant end of a
!      4-byte register, â€˜TARGET_FUNCTION_VALUEâ€™ should provide an â€˜SImodeâ€™
       rtx.
  
  
*************** File: gccint.info,  Node: Aggregate Retu
*** 38153,38163 ****
  17.9.9 How Large Values Are Returned
  ------------------------------------
  
! When a function value's mode is 'BLKmode' (and in some other cases), the
! value is not returned according to 'TARGET_FUNCTION_VALUE' (*note Scalar
  Return::).  Instead, the caller passes the address of a block of memory
  in which the value should be stored.  This address is called the
! "structure value address".
  
   This section describes how to control returning structure values in
  memory.
--- 38157,38167 ----
  17.9.9 How Large Values Are Returned
  ------------------------------------
  
! When a function value's mode is â€˜BLKmodeâ€™ (and in some other cases), the
! value is not returned according to â€˜TARGET_FUNCTION_VALUEâ€™ (*note Scalar
  Return::).  Instead, the caller passes the address of a block of memory
  in which the value should be stored.  This address is called the
! â€œstructure value addressâ€�.
  
   This section describes how to control returning structure values in
  memory.
*************** memory.
*** 38167,38185 ****
       This target hook should return a nonzero value to say to return the
       function value in memory, just as large structures are always
       returned.  Here TYPE will be the data type of the value, and FNTYPE
!      will be the type of the function doing the returning, or 'NULL' for
       libcalls.
  
!      Note that values of mode 'BLKmode' must be explicitly handled by
!      this function.  Also, the option '-fpcc-struct-return' takes effect
       regardless of this macro.  On most systems, it is possible to leave
       the hook undefined; this causes a default definition to be used,
!      whose value is the constant 1 for 'BLKmode' values, and 0
       otherwise.
  
       Do not use this hook to indicate that structures and unions should
       always be returned in memory.  You should instead use
!      'DEFAULT_PCC_STRUCT_RETURN' to indicate this.
  
   -- Macro: DEFAULT_PCC_STRUCT_RETURN
       Define this macro to be 1 if all structure and union return values
--- 38171,38189 ----
       This target hook should return a nonzero value to say to return the
       function value in memory, just as large structures are always
       returned.  Here TYPE will be the data type of the value, and FNTYPE
!      will be the type of the function doing the returning, or â€˜NULLâ€™ for
       libcalls.
  
!      Note that values of mode â€˜BLKmodeâ€™ must be explicitly handled by
!      this function.  Also, the option â€˜-fpcc-struct-returnâ€™ takes effect
       regardless of this macro.  On most systems, it is possible to leave
       the hook undefined; this causes a default definition to be used,
!      whose value is the constant 1 for â€˜BLKmodeâ€™ values, and 0
       otherwise.
  
       Do not use this hook to indicate that structures and unions should
       always be returned in memory.  You should instead use
!      â€˜DEFAULT_PCC_STRUCT_RETURNâ€™ to indicate this.
  
   -- Macro: DEFAULT_PCC_STRUCT_RETURN
       Define this macro to be 1 if all structure and union return values
*************** memory.
*** 38187,38200 ****
       be defined only if needed for compatibility with other compilers or
       with an ABI.  If you define this macro to be 0, then the
       conventions used for structure and union return values are decided
!      by the 'TARGET_RETURN_IN_MEMORY' target hook.
  
       If not defined, this defaults to the value 1.
  
   -- Target Hook: rtx TARGET_STRUCT_VALUE_RTX (tree FNDECL, int INCOMING)
       This target hook should return the location of the structure value
!      address (normally a 'mem' or 'reg'), or 0 if the address is passed
!      as an "invisible" first argument.  Note that FNDECL may be 'NULL',
       for libcalls.  You do not need to define this target hook if the
       address is always passed as an "invisible" first argument.
  
--- 38191,38204 ----
       be defined only if needed for compatibility with other compilers or
       with an ABI.  If you define this macro to be 0, then the
       conventions used for structure and union return values are decided
!      by the â€˜TARGET_RETURN_IN_MEMORYâ€™ target hook.
  
       If not defined, this defaults to the value 1.
  
   -- Target Hook: rtx TARGET_STRUCT_VALUE_RTX (tree FNDECL, int INCOMING)
       This target hook should return the location of the structure value
!      address (normally a â€˜memâ€™ or â€˜regâ€™), or 0 if the address is passed
!      as an "invisible" first argument.  Note that FNDECL may be â€˜NULLâ€™,
       for libcalls.  You do not need to define this target hook if the
       address is always passed as an "invisible" first argument.
  
*************** memory.
*** 38202,38213 ****
       is found by the called function is not the same place that the
       caller put it.  This can be due to register windows, or it could be
       because the function prologue moves it to a different place.
!      INCOMING is '1' or '2' when the location is needed in the context
!      of the called function, and '0' in the context of the caller.
  
       If INCOMING is nonzero and the address is to be found on the stack,
!      return a 'mem' which refers to the frame pointer.  If INCOMING is
!      '2', the result is being used to fetch the structure value address
       at the beginning of a function.  If you need to emit adjusting
       code, you should do it at this point.
  
--- 38206,38217 ----
       is found by the called function is not the same place that the
       caller put it.  This can be due to register windows, or it could be
       because the function prologue moves it to a different place.
!      INCOMING is â€˜1â€™ or â€˜2â€™ when the location is needed in the context
!      of the called function, and â€˜0â€™ in the context of the caller.
  
       If INCOMING is nonzero and the address is to be found on the stack,
!      return a â€˜memâ€™ which refers to the frame pointer.  If INCOMING is
!      â€˜2â€™, the result is being used to fetch the structure value address
       at the beginning of a function.  If you need to emit adjusting
       code, you should do it at this point.
  
*************** memory.
*** 38220,38243 ****
       Do not define this if the usual system convention is for the caller
       to pass an address to the subroutine.
  
!      This macro has effect in '-fpcc-struct-return' mode, but it does
!      nothing when you use '-freg-struct-return' mode.
  
   -- Target Hook: fixed_size_mode TARGET_GET_RAW_RESULT_MODE (int REGNO)
       This target hook returns the mode to be used when accessing raw
!      return registers in '__builtin_return'.  Define this macro if the
!      value in REG_RAW_MODE is not correct.  Use 'VOIDmode' if a register
!      should be ignored for '__builtin_return' purposes.
  
   -- Target Hook: fixed_size_mode TARGET_GET_RAW_ARG_MODE (int REGNO)
       This target hook returns the mode to be used when accessing raw
!      argument registers in '__builtin_apply_args'.  Define this macro if
!      the value in REG_RAW_MODE is not correct.  Use 'VOIDmode' if a
!      register should be ignored for '__builtin_apply_args' purposes.
  
   -- Target Hook: bool TARGET_EMPTY_RECORD_P (const_tree TYPE)
       This target hook returns true if the type is an empty record.  The
!      default is to return 'false'.
  
   -- Target Hook: void TARGET_WARN_PARAMETER_PASSING_ABI
            (cumulative_args_t CA, tree TYPE)
--- 38224,38247 ----
       Do not define this if the usual system convention is for the caller
       to pass an address to the subroutine.
  
!      This macro has effect in â€˜-fpcc-struct-returnâ€™ mode, but it does
!      nothing when you use â€˜-freg-struct-returnâ€™ mode.
  
   -- Target Hook: fixed_size_mode TARGET_GET_RAW_RESULT_MODE (int REGNO)
       This target hook returns the mode to be used when accessing raw
!      return registers in â€˜__builtin_returnâ€™.  Define this macro if the
!      value in REG_RAW_MODE is not correct.  Use â€˜VOIDmodeâ€™ if a register
!      should be ignored for â€˜__builtin_returnâ€™ purposes.
  
   -- Target Hook: fixed_size_mode TARGET_GET_RAW_ARG_MODE (int REGNO)
       This target hook returns the mode to be used when accessing raw
!      argument registers in â€˜__builtin_apply_argsâ€™.  Define this macro if
!      the value in REG_RAW_MODE is not correct.  Use â€˜VOIDmodeâ€™ if a
!      register should be ignored for â€˜__builtin_apply_argsâ€™ purposes.
  
   -- Target Hook: bool TARGET_EMPTY_RECORD_P (const_tree TYPE)
       This target hook returns true if the type is an empty record.  The
!      default is to return â€˜falseâ€™.
  
   -- Target Hook: void TARGET_WARN_PARAMETER_PASSING_ABI
            (cumulative_args_t CA, tree TYPE)
*************** must live across calls.
*** 38257,38263 ****
   -- Macro: HARD_REGNO_CALLER_SAVE_MODE (REGNO, NREGS)
       A C expression specifying which mode is required for saving NREGS
       of a pseudo-register in call-clobbered hard register REGNO.  If
!      REGNO is unsuitable for caller save, 'VOIDmode' should be returned.
       For most machines this macro need not be defined since GCC will
       select the smallest suitable mode.
  
--- 38261,38267 ----
   -- Macro: HARD_REGNO_CALLER_SAVE_MODE (REGNO, NREGS)
       A C expression specifying which mode is required for saving NREGS
       of a pseudo-register in call-clobbered hard register REGNO.  If
!      REGNO is unsuitable for caller save, â€˜VOIDmodeâ€™ should be returned.
       For most machines this macro need not be defined since GCC will
       select the smallest suitable mode.
  
*************** File: gccint.info,  Node: Function Entry
*** 38268,38274 ****
  -------------------------------
  
  This section describes the macros that output function entry
! ("prologue") and exit ("epilogue") code.
  
   -- Target Hook: void TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY (FILE
            *FILE, unsigned HOST_WIDE_INT PATCH_AREA_SIZE, bool RECORD_P)
--- 38272,38278 ----
  -------------------------------
  
  This section describes the macros that output function entry
! (â€œprologueâ€�) and exit (â€œepilogueâ€�) code.
  
   -- Target Hook: void TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY (FILE
            *FILE, unsigned HOST_WIDE_INT PATCH_AREA_SIZE, bool RECORD_P)
*************** This section describes the macros that o
*** 38277,38283 ****
       sections and if RECORD_P is true, insert a pointer to the current
       location in the table of patchable functions.  The default
       implementation of the hook places the table of pointers in the
!      special section named '__patchable_function_entries'.
  
   -- Target Hook: void TARGET_ASM_FUNCTION_PROLOGUE (FILE *FILE)
       If defined, a function that outputs the assembler code for entry to
--- 38281,38287 ----
       sections and if RECORD_P is true, insert a pointer to the current
       location in the table of patchable functions.  The default
       implementation of the hook places the table of pointers in the
!      special section named â€˜__patchable_function_entriesâ€™.
  
   -- Target Hook: void TARGET_ASM_FUNCTION_PROLOGUE (FILE *FILE)
       If defined, a function that outputs the assembler code for entry to
*************** This section describes the macros that o
*** 38291,38301 ****
       this macro.  That has already been done when the macro is run.
  
       To determine which registers to save, the macro can refer to the
!      array 'regs_ever_live': element R is nonzero if hard register R is
       used anywhere within the function.  This implies the function
       prologue should save register R, provided it is not one of the
!      call-used registers.  ('TARGET_ASM_FUNCTION_EPILOGUE' must likewise
!      use 'regs_ever_live'.)
  
       On machines that have "register windows", the function entry code
       does not save on the stack the registers that are in the windows,
--- 38295,38305 ----
       this macro.  That has already been done when the macro is run.
  
       To determine which registers to save, the macro can refer to the
!      array â€˜regs_ever_liveâ€™: element R is nonzero if hard register R is
       used anywhere within the function.  This implies the function
       prologue should save register R, provided it is not one of the
!      call-used registers.  (â€˜TARGET_ASM_FUNCTION_EPILOGUEâ€™ must likewise
!      use â€˜regs_ever_liveâ€™.)
  
       On machines that have "register windows", the function entry code
       does not save on the stack the registers that are in the windows,
*************** This section describes the macros that o
*** 38307,38320 ****
       function entry code must vary accordingly; it must set up the frame
       pointer if one is wanted, and not otherwise.  To determine whether
       a frame pointer is in wanted, the macro can refer to the variable
!      'frame_pointer_needed'.  The variable's value will be 1 at run time
       in a function that needs a frame pointer.  *Note Elimination::.
  
       The function entry code is responsible for allocating any stack
       space required for the function.  This stack space consists of the
       regions listed below.  In most cases, these regions are allocated
       in the order listed, with the last listed region closest to the top
!      of the stack (the lowest address if 'STACK_GROWS_DOWNWARD' is
       defined, and the highest address if it is not defined).  You can
       use a different order for a machine if doing so is more convenient
       or required for compatibility reasons.  Except in cases where
--- 38311,38324 ----
       function entry code must vary accordingly; it must set up the frame
       pointer if one is wanted, and not otherwise.  To determine whether
       a frame pointer is in wanted, the macro can refer to the variable
!      â€˜frame_pointer_neededâ€™.  The variable's value will be 1 at run time
       in a function that needs a frame pointer.  *Note Elimination::.
  
       The function entry code is responsible for allocating any stack
       space required for the function.  This stack space consists of the
       regions listed below.  In most cases, these regions are allocated
       in the order listed, with the last listed region closest to the top
!      of the stack (the lowest address if â€˜STACK_GROWS_DOWNWARDâ€™ is
       defined, and the highest address if it is not defined).  You can
       use a different order for a machine if doing so is more convenient
       or required for compatibility reasons.  Except in cases where
*************** This section describes the macros that o
*** 38339,38384 ****
       from a function.  The epilogue is responsible for restoring the
       saved registers and stack pointer to their values when the function
       was called, and returning control to the caller.  This macro takes
!      the same argument as the macro 'TARGET_ASM_FUNCTION_PROLOGUE', and
!      the registers to restore are determined from 'regs_ever_live' and
!      'CALL_USED_REGISTERS' in the same way.
  
       On some machines, there is a single instruction that does all the
       work of returning from the function.  On these machines, give that
!      instruction the name 'return' and do not define the macro
!      'TARGET_ASM_FUNCTION_EPILOGUE' at all.
  
!      Do not define a pattern named 'return' if you want the
!      'TARGET_ASM_FUNCTION_EPILOGUE' to be used.  If you want the target
       switches to control whether return instructions or epilogues are
!      used, define a 'return' pattern with a validity condition that
!      tests the target switches appropriately.  If the 'return' pattern's
       validity condition is false, epilogues will be used.
  
       On machines where functions may or may not have frame-pointers, the
       function exit code must vary accordingly.  Sometimes the code for
       these two cases is completely different.  To determine whether a
       frame pointer is wanted, the macro can refer to the variable
!      'frame_pointer_needed'.  The variable's value will be 1 when
       compiling a function that needs a frame pointer.
  
!      Normally, 'TARGET_ASM_FUNCTION_PROLOGUE' and
!      'TARGET_ASM_FUNCTION_EPILOGUE' must treat leaf functions specially.
!      The C variable 'current_function_is_leaf' is nonzero for such a
       function.  *Note Leaf Functions::.
  
       On some machines, some functions pop their arguments on exit while
       others leave that for the caller to do.  For example, the 68020
!      when given '-mrtd' pops arguments in functions that take a fixed
       number of arguments.
  
!      Your definition of the macro 'RETURN_POPS_ARGS' decides which
!      functions pop their own arguments.  'TARGET_ASM_FUNCTION_EPILOGUE'
       needs to know what was decided.  The number of bytes of the current
       function's arguments that this function should pop is available in
!      'crtl->args.pops_args'.  *Note Scalar Return::.
  
!    * A region of 'crtl->args.pretend_args_size' bytes of uninitialized
       space just underneath the first argument arriving on the stack.
       (This may not be at the very start of the allocated stack region if
       the calling sequence has pushed anything else since pushing the
--- 38343,38388 ----
       from a function.  The epilogue is responsible for restoring the
       saved registers and stack pointer to their values when the function
       was called, and returning control to the caller.  This macro takes
!      the same argument as the macro â€˜TARGET_ASM_FUNCTION_PROLOGUEâ€™, and
!      the registers to restore are determined from â€˜regs_ever_liveâ€™ and
!      â€˜CALL_USED_REGISTERSâ€™ in the same way.
  
       On some machines, there is a single instruction that does all the
       work of returning from the function.  On these machines, give that
!      instruction the name â€˜returnâ€™ and do not define the macro
!      â€˜TARGET_ASM_FUNCTION_EPILOGUEâ€™ at all.
  
!      Do not define a pattern named â€˜returnâ€™ if you want the
!      â€˜TARGET_ASM_FUNCTION_EPILOGUEâ€™ to be used.  If you want the target
       switches to control whether return instructions or epilogues are
!      used, define a â€˜returnâ€™ pattern with a validity condition that
!      tests the target switches appropriately.  If the â€˜returnâ€™ pattern's
       validity condition is false, epilogues will be used.
  
       On machines where functions may or may not have frame-pointers, the
       function exit code must vary accordingly.  Sometimes the code for
       these two cases is completely different.  To determine whether a
       frame pointer is wanted, the macro can refer to the variable
!      â€˜frame_pointer_neededâ€™.  The variable's value will be 1 when
       compiling a function that needs a frame pointer.
  
!      Normally, â€˜TARGET_ASM_FUNCTION_PROLOGUEâ€™ and
!      â€˜TARGET_ASM_FUNCTION_EPILOGUEâ€™ must treat leaf functions specially.
!      The C variable â€˜current_function_is_leafâ€™ is nonzero for such a
       function.  *Note Leaf Functions::.
  
       On some machines, some functions pop their arguments on exit while
       others leave that for the caller to do.  For example, the 68020
!      when given â€˜-mrtdâ€™ pops arguments in functions that take a fixed
       number of arguments.
  
!      Your definition of the macro â€˜RETURN_POPS_ARGSâ€™ decides which
!      functions pop their own arguments.  â€˜TARGET_ASM_FUNCTION_EPILOGUEâ€™
       needs to know what was decided.  The number of bytes of the current
       function's arguments that this function should pop is available in
!      â€˜crtl->args.pops_argsâ€™.  *Note Scalar Return::.
  
!    â€¢ A region of â€˜crtl->args.pretend_args_sizeâ€™ bytes of uninitialized
       space just underneath the first argument arriving on the stack.
       (This may not be at the very start of the allocated stack region if
       the calling sequence has pushed anything else since pushing the
*************** This section describes the macros that o
*** 38386,38408 ****
       been pushed yet, because the function prologue itself does all the
       pushing.)  This region is used on machines where an argument may be
       passed partly in registers and partly in memory, and, in some cases
!      to support the features in '<stdarg.h>'.
  
!    * An area of memory used to save certain registers used by the
       function.  The size of this area, which may also include space for
       such things as the return address and pointers to previous stack
       frames, is machine-specific and usually depends on which registers
       have been used in the function.  Machines with register windows
       often do not require a save area.
  
!    * A region of at least SIZE bytes, possibly rounded up to an
       allocation boundary, to contain the local variables of the
       function.  On some machines, this region and the save area may
       occur in the opposite order, with the save area closer to the top
       of the stack.
  
!    * Optionally, when 'ACCUMULATE_OUTGOING_ARGS' is defined, a region of
!      'crtl->outgoing_args_size' bytes to be used for outgoing argument
       lists of the function.  *Note Stack Arguments::.
  
   -- Macro: EXIT_IGNORE_STACK
--- 38390,38412 ----
       been pushed yet, because the function prologue itself does all the
       pushing.)  This region is used on machines where an argument may be
       passed partly in registers and partly in memory, and, in some cases
!      to support the features in â€˜<stdarg.h>â€™.
  
!    â€¢ An area of memory used to save certain registers used by the
       function.  The size of this area, which may also include space for
       such things as the return address and pointers to previous stack
       frames, is machine-specific and usually depends on which registers
       have been used in the function.  Machines with register windows
       often do not require a save area.
  
!    â€¢ A region of at least SIZE bytes, possibly rounded up to an
       allocation boundary, to contain the local variables of the
       function.  On some machines, this region and the save area may
       occur in the opposite order, with the save area closer to the top
       of the stack.
  
!    â€¢ Optionally, when â€˜ACCUMULATE_OUTGOING_ARGSâ€™ is defined, a region of
!      â€˜crtl->outgoing_args_sizeâ€™ bytes to be used for outgoing argument
       lists of the function.  *Note Stack Arguments::.
  
   -- Macro: EXIT_IGNORE_STACK
*************** This section describes the macros that o
*** 38415,38425 ****
       Note that this macro's value is relevant only for functions for
       which frame pointers are maintained.  It is never safe to delete a
       final stack adjustment in a function that has no frame pointer, and
!      the compiler knows this regardless of 'EXIT_IGNORE_STACK'.
  
   -- Macro: EPILOGUE_USES (REGNO)
       Define this macro as a C expression that is nonzero for registers
!      that are used by the epilogue or the 'return' pattern.  The stack
       and frame pointer registers are already assumed to be used as
       needed.
  
--- 38419,38429 ----
       Note that this macro's value is relevant only for functions for
       which frame pointers are maintained.  It is never safe to delete a
       final stack adjustment in a function that has no frame pointer, and
!      the compiler knows this regardless of â€˜EXIT_IGNORE_STACKâ€™.
  
   -- Macro: EPILOGUE_USES (REGNO)
       Define this macro as a C expression that is nonzero for registers
!      that are used by the epilogue or the â€˜returnâ€™ pattern.  The stack
       and frame pointer registers are already assumed to be used as
       needed.
  
*************** This section describes the macros that o
*** 38439,38464 ****
  
       First, emit code to add the integer DELTA to the location that
       contains the incoming first argument.  Assume that this argument
!      contains a pointer, and is the one used to pass the 'this' pointer
       in C++.  This is the incoming argument _before_ the function
!      prologue, e.g. '%o0' on a sparc.  The addition must preserve the
       values of all other incoming arguments.
  
       Then, if VCALL_OFFSET is nonzero, an additional adjustment should
!      be made after adding 'delta'.  In particular, if P is the adjusted
       pointer, the following adjustment should be made:
  
            p += (*((ptrdiff_t **)p))[vcall_offset/sizeof(ptrdiff_t)]
  
       After the additions, emit code to jump to FUNCTION, which is a
!      'FUNCTION_DECL'.  This is a direct pure jump, not a call, and does
       not touch the return address.  Hence returning from FUNCTION will
!      return to whoever called the current 'thunk'.
  
       The effect must be as if FUNCTION had been called directly with the
       adjusted first argument.  This macro is responsible for emitting
       all of the code for a thunk function;
!      'TARGET_ASM_FUNCTION_PROLOGUE' and 'TARGET_ASM_FUNCTION_EPILOGUE'
       are not invoked.
  
       The THUNK_FNDECL is redundant.  (DELTA and FUNCTION have already
--- 38443,38468 ----
  
       First, emit code to add the integer DELTA to the location that
       contains the incoming first argument.  Assume that this argument
!      contains a pointer, and is the one used to pass the â€˜thisâ€™ pointer
       in C++.  This is the incoming argument _before_ the function
!      prologue, e.g. â€˜%o0â€™ on a sparc.  The addition must preserve the
       values of all other incoming arguments.
  
       Then, if VCALL_OFFSET is nonzero, an additional adjustment should
!      be made after adding â€˜deltaâ€™.  In particular, if P is the adjusted
       pointer, the following adjustment should be made:
  
            p += (*((ptrdiff_t **)p))[vcall_offset/sizeof(ptrdiff_t)]
  
       After the additions, emit code to jump to FUNCTION, which is a
!      â€˜FUNCTION_DECLâ€™.  This is a direct pure jump, not a call, and does
       not touch the return address.  Hence returning from FUNCTION will
!      return to whoever called the current â€˜thunkâ€™.
  
       The effect must be as if FUNCTION had been called directly with the
       adjusted first argument.  This macro is responsible for emitting
       all of the code for a thunk function;
!      â€˜TARGET_ASM_FUNCTION_PROLOGUEâ€™ and â€˜TARGET_ASM_FUNCTION_EPILOGUEâ€™
       are not invoked.
  
       The THUNK_FNDECL is redundant.  (DELTA and FUNCTION have already
*************** These macros will help you generate code
*** 38489,38517 ****
  
   -- Macro: FUNCTION_PROFILER (FILE, LABELNO)
       A C statement or compound statement to output to FILE some
!      assembler code to call the profiling subroutine 'mcount'.
  
!      The details of how 'mcount' expects to be called are determined by
       your operating system environment, not by GCC.  To figure them out,
       compile a small program for profiling using the system's installed
       C compiler and look at the assembler code that results.
  
!      Older implementations of 'mcount' expect the address of a counter
       variable to be loaded into some register.  The name of this
!      variable is 'LP' followed by the number LABELNO, so you would
!      generate the name using 'LP%d' in a 'fprintf'.
  
   -- Macro: PROFILE_HOOK
       A C statement or compound statement to output to FILE some assembly
!      code to call the profiling subroutine 'mcount' even the target does
       not support profiling.
  
   -- Macro: NO_PROFILE_COUNTERS
       Define this macro to be an expression with a nonzero value if the
!      'mcount' subroutine on your system does not need a counter variable
       allocated for each function.  This is true for almost all modern
       implementations.  If you define this macro, you must not use the
!      LABELNO argument to 'FUNCTION_PROFILER'.
  
   -- Macro: PROFILE_BEFORE_PROLOGUE
       Define this macro if the code for function profiling should come
--- 38493,38521 ----
  
   -- Macro: FUNCTION_PROFILER (FILE, LABELNO)
       A C statement or compound statement to output to FILE some
!      assembler code to call the profiling subroutine â€˜mcountâ€™.
  
!      The details of how â€˜mcountâ€™ expects to be called are determined by
       your operating system environment, not by GCC.  To figure them out,
       compile a small program for profiling using the system's installed
       C compiler and look at the assembler code that results.
  
!      Older implementations of â€˜mcountâ€™ expect the address of a counter
       variable to be loaded into some register.  The name of this
!      variable is â€˜LPâ€™ followed by the number LABELNO, so you would
!      generate the name using â€˜LP%dâ€™ in a â€˜fprintfâ€™.
  
   -- Macro: PROFILE_HOOK
       A C statement or compound statement to output to FILE some assembly
!      code to call the profiling subroutine â€˜mcountâ€™ even the target does
       not support profiling.
  
   -- Macro: NO_PROFILE_COUNTERS
       Define this macro to be an expression with a nonzero value if the
!      â€˜mcountâ€™ subroutine on your system does not need a counter variable
       allocated for each function.  This is true for almost all modern
       implementations.  If you define this macro, you must not use the
!      LABELNO argument to â€˜FUNCTION_PROFILERâ€™.
  
   -- Macro: PROFILE_BEFORE_PROLOGUE
       Define this macro if the code for function profiling should come
*************** File: gccint.info,  Node: Tail Calls,  N
*** 38534,38546 ****
   -- Target Hook: bool TARGET_FUNCTION_OK_FOR_SIBCALL (tree DECL, tree
            EXP)
       True if it is OK to do sibling call optimization for the specified
!      call expression EXP.  DECL will be the called function, or 'NULL'
       if this is an indirect call.
  
       It is not uncommon for limitations of calling conventions to
       prevent tail calls to functions outside the current unit of
       translation, or during PIC compilation.  The hook is used to
!      enforce these restrictions, as the 'sibcall' md pattern cannot
       fail, or fall over to a "normal" call.  The criteria for successful
       sibling call optimization may vary greatly between different
       architectures.
--- 38538,38550 ----
   -- Target Hook: bool TARGET_FUNCTION_OK_FOR_SIBCALL (tree DECL, tree
            EXP)
       True if it is OK to do sibling call optimization for the specified
!      call expression EXP.  DECL will be the called function, or â€˜NULLâ€™
       if this is an indirect call.
  
       It is not uncommon for limitations of calling conventions to
       prevent tail calls to functions outside the current unit of
       translation, or during PIC compilation.  The hook is used to
!      enforce these restrictions, as the â€˜sibcallâ€™ md pattern cannot
       fail, or fall over to a "normal" call.  The criteria for successful
       sibling call optimization may vary greatly between different
       architectures.
*************** teardown) those components do is not don
*** 38588,38612 ****
  paths where this would unnecessary.
  
   What exactly those components are is up to the target code; the generic
! code treats them abstractly, as a bit in an 'sbitmap'.  These 'sbitmap's
! are allocated by the 'shrink_wrap.get_separate_components' and
! 'shrink_wrap.components_for_bb' hooks, and deallocated by the generic
  code.
  
   -- Target Hook: sbitmap TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS
            (void)
!      This hook should return an 'sbitmap' with the bits set for those
       components that can be separately shrink-wrapped in the current
!      function.  Return 'NULL' if the current function should not get any
       separate shrink-wrapping.  Don't define this hook if it would
!      always return 'NULL'.  If it is defined, the other hooks in this
       group have to be defined as well.
  
   -- Target Hook: sbitmap TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB
            (basic_block)
!      This hook should return an 'sbitmap' with the bits set for those
       components where either the prologue component has to be executed
!      before the 'basic_block', or the epilogue component after it, or
       both.
  
   -- Target Hook: void TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS (sbitmap
--- 38592,38616 ----
  paths where this would unnecessary.
  
   What exactly those components are is up to the target code; the generic
! code treats them abstractly, as a bit in an â€˜sbitmapâ€™.  These â€˜sbitmapâ€™s
! are allocated by the â€˜shrink_wrap.get_separate_componentsâ€™ and
! â€˜shrink_wrap.components_for_bbâ€™ hooks, and deallocated by the generic
  code.
  
   -- Target Hook: sbitmap TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS
            (void)
!      This hook should return an â€˜sbitmapâ€™ with the bits set for those
       components that can be separately shrink-wrapped in the current
!      function.  Return â€˜NULLâ€™ if the current function should not get any
       separate shrink-wrapping.  Don't define this hook if it would
!      always return â€˜NULLâ€™.  If it is defined, the other hooks in this
       group have to be defined as well.
  
   -- Target Hook: sbitmap TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB
            (basic_block)
!      This hook should return an â€˜sbitmapâ€™ with the bits set for those
       components where either the prologue component has to be executed
!      before the â€˜basic_blockâ€™, or the epilogue component after it, or
       both.
  
   -- Target Hook: void TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS (sbitmap
*************** code.
*** 38627,38634 ****
   -- Target Hook: void TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS
            (sbitmap)
       Mark the components in the parameter as handled, so that the
!      'prologue' and 'epilogue' named patterns know to ignore those
!      components.  The target code should not hang on to the 'sbitmap',
       it will be deleted after this call.
  
  
--- 38631,38638 ----
   -- Target Hook: void TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS
            (sbitmap)
       Mark the components in the parameter as handled, so that the
!      â€˜prologueâ€™ and â€˜epilogueâ€™ named patterns know to ignore those
!      components.  The target code should not hang on to the â€˜sbitmapâ€™,
       it will be deleted after this call.
  
  
*************** File: gccint.info,  Node: Stack Smashing
*** 38638,38660 ****
  ---------------------------------
  
   -- Target Hook: tree TARGET_STACK_PROTECT_GUARD (void)
!      This hook returns a 'DECL' node for the external variable to use
       for the stack protection guard.  This variable is initialized by
       the runtime to some random value and is used to initialize the
       guard value that is placed at the top of the local stack frame.
!      The type of this variable must be 'ptr_type_node'.
  
       The default version of this hook creates a variable called
!      '__stack_chk_guard', which is normally defined in 'libgcc2.c'.
  
   -- Target Hook: tree TARGET_STACK_PROTECT_FAIL (void)
!      This hook returns a 'CALL_EXPR' that alerts the runtime that the
       stack protect guard variable has been modified.  This expression
!      should involve a call to a 'noreturn' function.
  
       The default version of this hook invokes a function called
!      '__stack_chk_fail', taking no arguments.  This function is normally
!      defined in 'libgcc2.c'.
  
   -- Target Hook: bool TARGET_STACK_PROTECT_RUNTIME_ENABLED_P (void)
       Returns true if the target wants GCC's default stack protect
--- 38642,38664 ----
  ---------------------------------
  
   -- Target Hook: tree TARGET_STACK_PROTECT_GUARD (void)
!      This hook returns a â€˜DECLâ€™ node for the external variable to use
       for the stack protection guard.  This variable is initialized by
       the runtime to some random value and is used to initialize the
       guard value that is placed at the top of the local stack frame.
!      The type of this variable must be â€˜ptr_type_nodeâ€™.
  
       The default version of this hook creates a variable called
!      â€˜__stack_chk_guardâ€™, which is normally defined in â€˜libgcc2.câ€™.
  
   -- Target Hook: tree TARGET_STACK_PROTECT_FAIL (void)
!      This hook returns a â€˜CALL_EXPRâ€™ that alerts the runtime that the
       stack protect guard variable has been modified.  This expression
!      should involve a call to a â€˜noreturnâ€™ function.
  
       The default version of this hook invokes a function called
!      â€˜__stack_chk_failâ€™, taking no arguments.  This function is normally
!      defined in â€˜libgcc2.câ€™.
  
   -- Target Hook: bool TARGET_STACK_PROTECT_RUNTIME_ENABLED_P (void)
       Returns true if the target wants GCC's default stack protect
*************** File: gccint.info,  Node: Varargs,  Next
*** 38703,38802 ****
  17.10 Implementing the Varargs Macros
  =====================================
  
! GCC comes with an implementation of '<varargs.h>' and '<stdarg.h>' that
  work without change on machines that pass arguments on the stack.  Other
  machines require their own implementations of varargs, and the two
  machine independent header files must have conditionals to include it.
  
!  ISO '<stdarg.h>' differs from traditional '<varargs.h>' mainly in the
! calling convention for 'va_start'.  The traditional implementation takes
  just one argument, which is the variable in which to store the argument
! pointer.  The ISO implementation of 'va_start' takes an additional
  second argument.  The user is supposed to write the last named argument
  of the function here.
  
!  However, 'va_start' should not use this argument.  The way to find the
  end of the named arguments is with the built-in functions described
  below.
  
   -- Macro: __builtin_saveregs ()
       Use this built-in function to save the argument registers in memory
       so that the varargs mechanism can access them.  Both ISO and
!      traditional versions of 'va_start' must use '__builtin_saveregs',
!      unless you use 'TARGET_SETUP_INCOMING_VARARGS' (see below) instead.
  
!      On some machines, '__builtin_saveregs' is open-coded under the
!      control of the target hook 'TARGET_EXPAND_BUILTIN_SAVEREGS'.  On
       other machines, it calls a routine written in assembler language,
!      found in 'libgcc2.c'.
  
!      Code generated for the call to '__builtin_saveregs' appears at the
       beginning of the function, as opposed to where the call to
!      '__builtin_saveregs' is written, regardless of what the code is.
       This is because the registers must be saved before the function
       starts to use them for its own purposes.
  
   -- Macro: __builtin_next_arg (LASTARG)
       This builtin returns the address of the first anonymous stack
!      argument, as type 'void *'.  If 'ARGS_GROW_DOWNWARD', it returns
       the address of the location above the first anonymous stack
!      argument.  Use it in 'va_start' to initialize the pointer for
!      fetching arguments from the stack.  Also use it in 'va_start' to
       verify that the second parameter LASTARG is the last named argument
       of the current function.
  
   -- Macro: __builtin_classify_type (OBJECT)
       Since each machine has its own conventions for which data types are
!      passed in which kind of register, your implementation of 'va_arg'
       has to embody these conventions.  The easiest way to categorize the
!      specified data type is to use '__builtin_classify_type' together
!      with 'sizeof' and '__alignof__'.
  
!      '__builtin_classify_type' ignores the value of OBJECT, considering
       only its data type.  It returns an integer describing what kind of
       type that is--integer, floating, pointer, structure, and so on.
  
!      The file 'typeclass.h' defines an enumeration that you can use to
!      interpret the values of '__builtin_classify_type'.
  
   These machine description macros help implement varargs:
  
   -- Target Hook: rtx TARGET_EXPAND_BUILTIN_SAVEREGS (void)
       If defined, this hook produces the machine-specific code for a call
!      to '__builtin_saveregs'.  This code will be moved to the very
       beginning of the function, before any parameter access are made.
       The return value of this function should be an RTX that contains
!      the value to use as the return of '__builtin_saveregs'.
  
   -- Target Hook: void TARGET_SETUP_INCOMING_VARARGS (cumulative_args_t
            ARGS_SO_FAR, const function_arg_info &ARG, int
            *PRETEND_ARGS_SIZE, int SECOND_TIME)
       This target hook offers an alternative to using
!      '__builtin_saveregs' and defining the hook
!      'TARGET_EXPAND_BUILTIN_SAVEREGS'.  Use it to store the anonymous
       register arguments into the stack so that all the arguments appear
       to have been passed consecutively on the stack.  Once this is done,
       you can use the standard implementation of varargs that works for
       machines that pass all their arguments on the stack.
  
!      The argument ARGS_SO_FAR points to the 'CUMULATIVE_ARGS' data
       structure, containing the values that are obtained after processing
       the named arguments.  The argument ARG describes the last of these
       named arguments.  The argument ARG should not be used if the
!      function type satisfies 'TYPE_NO_NAMED_ARGS_STDARG_P', since in
       that case there are no named arguments and all arguments are
!      accessed with 'va_arg'.
  
       The target hook should do two things: first, push onto the stack
       all the argument registers _not_ used for the named arguments, and
       second, store the size of the data thus pushed into the
!      'int'-valued variable pointed to by PRETEND_ARGS_SIZE.  The value
       that you store here will serve as additional offset for setting up
       the stack frame.
  
       Because you must generate code to push the anonymous arguments at
       compile time without knowing their data types,
!      'TARGET_SETUP_INCOMING_VARARGS' is only useful on machines that
       have just a single category of argument register and use it
       uniformly for all data types.
  
--- 38707,38806 ----
  17.10 Implementing the Varargs Macros
  =====================================
  
! GCC comes with an implementation of â€˜<varargs.h>â€™ and â€˜<stdarg.h>â€™ that
  work without change on machines that pass arguments on the stack.  Other
  machines require their own implementations of varargs, and the two
  machine independent header files must have conditionals to include it.
  
!  ISO â€˜<stdarg.h>â€™ differs from traditional â€˜<varargs.h>â€™ mainly in the
! calling convention for â€˜va_startâ€™.  The traditional implementation takes
  just one argument, which is the variable in which to store the argument
! pointer.  The ISO implementation of â€˜va_startâ€™ takes an additional
  second argument.  The user is supposed to write the last named argument
  of the function here.
  
!  However, â€˜va_startâ€™ should not use this argument.  The way to find the
  end of the named arguments is with the built-in functions described
  below.
  
   -- Macro: __builtin_saveregs ()
       Use this built-in function to save the argument registers in memory
       so that the varargs mechanism can access them.  Both ISO and
!      traditional versions of â€˜va_startâ€™ must use â€˜__builtin_saveregsâ€™,
!      unless you use â€˜TARGET_SETUP_INCOMING_VARARGSâ€™ (see below) instead.
  
!      On some machines, â€˜__builtin_saveregsâ€™ is open-coded under the
!      control of the target hook â€˜TARGET_EXPAND_BUILTIN_SAVEREGSâ€™.  On
       other machines, it calls a routine written in assembler language,
!      found in â€˜libgcc2.câ€™.
  
!      Code generated for the call to â€˜__builtin_saveregsâ€™ appears at the
       beginning of the function, as opposed to where the call to
!      â€˜__builtin_saveregsâ€™ is written, regardless of what the code is.
       This is because the registers must be saved before the function
       starts to use them for its own purposes.
  
   -- Macro: __builtin_next_arg (LASTARG)
       This builtin returns the address of the first anonymous stack
!      argument, as type â€˜void *â€™.  If â€˜ARGS_GROW_DOWNWARDâ€™, it returns
       the address of the location above the first anonymous stack
!      argument.  Use it in â€˜va_startâ€™ to initialize the pointer for
!      fetching arguments from the stack.  Also use it in â€˜va_startâ€™ to
       verify that the second parameter LASTARG is the last named argument
       of the current function.
  
   -- Macro: __builtin_classify_type (OBJECT)
       Since each machine has its own conventions for which data types are
!      passed in which kind of register, your implementation of â€˜va_argâ€™
       has to embody these conventions.  The easiest way to categorize the
!      specified data type is to use â€˜__builtin_classify_typeâ€™ together
!      with â€˜sizeofâ€™ and â€˜__alignof__â€™.
  
!      â€˜__builtin_classify_typeâ€™ ignores the value of OBJECT, considering
       only its data type.  It returns an integer describing what kind of
       type that is--integer, floating, pointer, structure, and so on.
  
!      The file â€˜typeclass.hâ€™ defines an enumeration that you can use to
!      interpret the values of â€˜__builtin_classify_typeâ€™.
  
   These machine description macros help implement varargs:
  
   -- Target Hook: rtx TARGET_EXPAND_BUILTIN_SAVEREGS (void)
       If defined, this hook produces the machine-specific code for a call
!      to â€˜__builtin_saveregsâ€™.  This code will be moved to the very
       beginning of the function, before any parameter access are made.
       The return value of this function should be an RTX that contains
!      the value to use as the return of â€˜__builtin_saveregsâ€™.
  
   -- Target Hook: void TARGET_SETUP_INCOMING_VARARGS (cumulative_args_t
            ARGS_SO_FAR, const function_arg_info &ARG, int
            *PRETEND_ARGS_SIZE, int SECOND_TIME)
       This target hook offers an alternative to using
!      â€˜__builtin_saveregsâ€™ and defining the hook
!      â€˜TARGET_EXPAND_BUILTIN_SAVEREGSâ€™.  Use it to store the anonymous
       register arguments into the stack so that all the arguments appear
       to have been passed consecutively on the stack.  Once this is done,
       you can use the standard implementation of varargs that works for
       machines that pass all their arguments on the stack.
  
!      The argument ARGS_SO_FAR points to the â€˜CUMULATIVE_ARGSâ€™ data
       structure, containing the values that are obtained after processing
       the named arguments.  The argument ARG describes the last of these
       named arguments.  The argument ARG should not be used if the
!      function type satisfies â€˜TYPE_NO_NAMED_ARGS_STDARG_Pâ€™, since in
       that case there are no named arguments and all arguments are
!      accessed with â€˜va_argâ€™.
  
       The target hook should do two things: first, push onto the stack
       all the argument registers _not_ used for the named arguments, and
       second, store the size of the data thus pushed into the
!      â€˜intâ€™-valued variable pointed to by PRETEND_ARGS_SIZE.  The value
       that you store here will serve as additional offset for setting up
       the stack frame.
  
       Because you must generate code to push the anonymous arguments at
       compile time without knowing their data types,
!      â€˜TARGET_SETUP_INCOMING_VARARGSâ€™ is only useful on machines that
       have just a single category of argument register and use it
       uniformly for all data types.
  
*************** below.
*** 38804,38827 ****
       of the function are being analyzed for the second time.  This
       happens for an inline function, which is not actually compiled
       until the end of the source file.  The hook
!      'TARGET_SETUP_INCOMING_VARARGS' should not generate any
       instructions in this case.
  
   -- Target Hook: bool TARGET_STRICT_ARGUMENT_NAMING (cumulative_args_t
            CA)
!      Define this hook to return 'true' if the location where a function
       argument is passed depends on whether or not it is a named
       argument.
  
!      This hook controls how the NAMED argument to 'TARGET_FUNCTION_ARG'
       is set for varargs and stdarg functions.  If this hook returns
!      'true', the NAMED argument is always true for named arguments, and
!      false for unnamed arguments.  If it returns 'false', but
!      'TARGET_PRETEND_OUTGOING_VARARGS_NAMED' returns 'true', then all
       arguments are treated as named.  Otherwise, all named arguments
       except the last are treated as named.
  
!      You need not define this hook if it always returns 'false'.
  
   -- Target Hook: int TARGET_CALL_OFFSET_RETURN_LABEL (rtx_insn
            *CALL_INSN)
--- 38808,38831 ----
       of the function are being analyzed for the second time.  This
       happens for an inline function, which is not actually compiled
       until the end of the source file.  The hook
!      â€˜TARGET_SETUP_INCOMING_VARARGSâ€™ should not generate any
       instructions in this case.
  
   -- Target Hook: bool TARGET_STRICT_ARGUMENT_NAMING (cumulative_args_t
            CA)
!      Define this hook to return â€˜trueâ€™ if the location where a function
       argument is passed depends on whether or not it is a named
       argument.
  
!      This hook controls how the NAMED argument to â€˜TARGET_FUNCTION_ARGâ€™
       is set for varargs and stdarg functions.  If this hook returns
!      â€˜trueâ€™, the NAMED argument is always true for named arguments, and
!      false for unnamed arguments.  If it returns â€˜falseâ€™, but
!      â€˜TARGET_PRETEND_OUTGOING_VARARGS_NAMEDâ€™ returns â€˜trueâ€™, then all
       arguments are treated as named.  Otherwise, all named arguments
       except the last are treated as named.
  
!      You need not define this hook if it always returns â€˜falseâ€™.
  
   -- Target Hook: int TARGET_CALL_OFFSET_RETURN_LABEL (rtx_insn
            *CALL_INSN)
*************** below.
*** 38837,38855 ****
       call, after the argument values have been computed, and after stack
       arguments have been initialized, but before register arguments have
       been moved into their ABI-defined hard register locations.  It
!      precedes calls to the related hooks 'TARGET_CALL_ARGS' and
!      'TARGET_END_CALL_ARGS'.  The significance of this position in the
       call expansion is that:
  
!         * No argument registers are live.
!         * Although a call sequence can in general involve subcalls (such
!           as using 'memcpy' to copy large arguments), no such subcall
            will occur between the call to this hook and the generation of
            the main call instruction.
  
       The single argument COMPLETE_ARGS is the state of the target
       function's cumulative argument information after the final call to
!      'TARGET_FUNCTION_ARG'.
  
       The hook can be used for things like switching processor mode, in
       cases where different calls need different processor modes.  Most
--- 38841,38859 ----
       call, after the argument values have been computed, and after stack
       arguments have been initialized, but before register arguments have
       been moved into their ABI-defined hard register locations.  It
!      precedes calls to the related hooks â€˜TARGET_CALL_ARGSâ€™ and
!      â€˜TARGET_END_CALL_ARGSâ€™.  The significance of this position in the
       call expansion is that:
  
!         â€¢ No argument registers are live.
!         â€¢ Although a call sequence can in general involve subcalls (such
!           as using â€˜memcpyâ€™ to copy large arguments), no such subcall
            will occur between the call to this hook and the generation of
            the main call instruction.
  
       The single argument COMPLETE_ARGS is the state of the target
       function's cumulative argument information after the final call to
!      â€˜TARGET_FUNCTION_ARGâ€™.
  
       The hook can be used for things like switching processor mode, in
       cases where different calls need different processor modes.  Most
*************** below.
*** 38859,38875 ****
            rtx LOC, tree TYPE)
       While generating RTL for a function call, this target hook is
       invoked once for each argument passed to the function, either a
!      register returned by 'TARGET_FUNCTION_ARG' or a memory location.
       It is called just before the point where argument registers are
       stored.
  
       COMPLETE_ARGS is the state of the target function's cumulative
!      argument information after the final call to 'TARGET_FUNCTION_ARG'.
       LOC is the location of the argument.  TYPE is the type of the
!      function being called, or 'NULL_TREE' for libcalls.
  
       For functions without arguments, the hook is called once with
!      'pc_rtx' passed instead of an argument register.
  
       This functionality can be used to perform special setup of call
       argument registers, if a target needs it.  Most ports do not need
--- 38863,38879 ----
            rtx LOC, tree TYPE)
       While generating RTL for a function call, this target hook is
       invoked once for each argument passed to the function, either a
!      register returned by â€˜TARGET_FUNCTION_ARGâ€™ or a memory location.
       It is called just before the point where argument registers are
       stored.
  
       COMPLETE_ARGS is the state of the target function's cumulative
!      argument information after the final call to â€˜TARGET_FUNCTION_ARGâ€™.
       LOC is the location of the argument.  TYPE is the type of the
!      function being called, or â€˜NULL_TREEâ€™ for libcalls.
  
       For functions without arguments, the hook is called once with
!      â€˜pc_rtxâ€™ passed instead of an argument register.
  
       This functionality can be used to perform special setup of call
       argument registers, if a target needs it.  Most ports do not need
*************** below.
*** 38882,38898 ****
       pseudo.  It signals that all the call argument and return registers
       for the just emitted call are now no longer in use.  COMPLETE_ARGS
       is the state of the target function's cumulative argument
!      information after the final call to 'TARGET_FUNCTION_ARG'.
  
       Most ports do not need to implement anything for this hook.
  
   -- Target Hook: bool TARGET_PRETEND_OUTGOING_VARARGS_NAMED
            (cumulative_args_t CA)
       If you need to conditionally change ABIs so that one works with
!      'TARGET_SETUP_INCOMING_VARARGS', but the other works like neither
!      'TARGET_SETUP_INCOMING_VARARGS' nor 'TARGET_STRICT_ARGUMENT_NAMING'
!      was defined, then define this hook to return 'true' if
!      'TARGET_SETUP_INCOMING_VARARGS' is used, 'false' otherwise.
       Otherwise, you should not define this hook.
  
  
--- 38886,38902 ----
       pseudo.  It signals that all the call argument and return registers
       for the just emitted call are now no longer in use.  COMPLETE_ARGS
       is the state of the target function's cumulative argument
!      information after the final call to â€˜TARGET_FUNCTION_ARGâ€™.
  
       Most ports do not need to implement anything for this hook.
  
   -- Target Hook: bool TARGET_PRETEND_OUTGOING_VARARGS_NAMED
            (cumulative_args_t CA)
       If you need to conditionally change ABIs so that one works with
!      â€˜TARGET_SETUP_INCOMING_VARARGSâ€™, but the other works like neither
!      â€˜TARGET_SETUP_INCOMING_VARARGSâ€™ nor â€˜TARGET_STRICT_ARGUMENT_NAMINGâ€™
!      was defined, then define this hook to return â€˜trueâ€™ if
!      â€˜TARGET_SETUP_INCOMING_VARARGSâ€™ is used, â€˜falseâ€™ otherwise.
       Otherwise, you should not define this hook.
  
  
*************** handling to ensure that the static chain
*** 38906,38912 ****
  function is invoked via an indirect call.
  
   GCC has traditionally supported nested functions by creating an
! executable "trampoline" at run time when the address of a nested
  function is taken.  This is a small piece of code which normally resides
  on the stack, in the stack frame of the containing function.  The
  trampoline loads the static chain register and then jumps to the real
--- 38910,38916 ----
  function is invoked via an indirect call.
  
   GCC has traditionally supported nested functions by creating an
! executable â€œtrampolineâ€� at run time when the address of a nested
  function is taken.  This is a small piece of code which normally resides
  on the stack, in the stack frame of the containing function.  The
  trampoline loads the static chain register and then jumps to the real
*************** chain from the descriptor is handled at
*** 38923,38937 ****
  mandated by the ABI or be otherwise handled in a target-specific way by
  the back end in its code generation strategy for indirect calls.  GCC
  also provides its own generic descriptor implementation to support the
! '-fno-trampolines' option.  In this case runtime detection of function
  descriptors at indirect call sites relies on descriptor pointers being
  tagged with a bit that is never set in bare function addresses.  Since
  GCC's generic function descriptors are not ABI-compliant, this option is
  typically used only on a per-language basis (notably by Ada) or when it
  can otherwise be applied to the whole program.
  
!  For languages other than Ada, the '-ftrampolines' and
! '-fno-trampolines' options currently have no effect, and trampolines are
  always generated on platforms that need them for nested functions.
  
   Define the following hook if your backend either implements
--- 38927,38941 ----
  mandated by the ABI or be otherwise handled in a target-specific way by
  the back end in its code generation strategy for indirect calls.  GCC
  also provides its own generic descriptor implementation to support the
! â€˜-fno-trampolinesâ€™ option.  In this case runtime detection of function
  descriptors at indirect call sites relies on descriptor pointers being
  tagged with a bit that is never set in bare function addresses.  Since
  GCC's generic function descriptors are not ABI-compliant, this option is
  typically used only on a per-language basis (notably by Ada) or when it
  can otherwise be applied to the whole program.
  
!  For languages other than Ada, the â€˜-ftrampolinesâ€™ and
! â€˜-fno-trampolinesâ€™ options currently have no effect, and trampolines are
  always generated on platforms that need them for nested functions.
  
   Define the following hook if your backend either implements
*************** may be necessary to take out pieces of t
*** 38981,38987 ****
  separately.
  
   -- Target Hook: void TARGET_ASM_TRAMPOLINE_TEMPLATE (FILE *F)
!      This hook is called by 'assemble_trampoline_template' to output, on
       the stream F, assembler code for a block of data that contains the
       constant parts of a trampoline.  This code should not include a
       label--the label is taken care of automatically.
--- 38985,38991 ----
  separately.
  
   -- Target Hook: void TARGET_ASM_TRAMPOLINE_TEMPLATE (FILE *F)
!      This hook is called by â€˜assemble_trampoline_templateâ€™ to output, on
       the stream F, assembler code for a block of data that contains the
       constant parts of a trampoline.  This code should not include a
       label--the label is taken care of automatically.
*************** separately.
*** 38994,39000 ****
   -- Macro: TRAMPOLINE_SECTION
       Return the section into which the trampoline template is to be
       placed (*note Sections::).  The default value is
!      'readonly_data_section'.
  
   -- Macro: TRAMPOLINE_SIZE
       A C expression for the size in bytes of the trampoline, as an
--- 38998,39004 ----
   -- Macro: TRAMPOLINE_SECTION
       Return the section into which the trampoline template is to be
       placed (*note Sections::).  The default value is
!      â€˜readonly_data_sectionâ€™.
  
   -- Macro: TRAMPOLINE_SIZE
       A C expression for the size in bytes of the trampoline, as an
*************** separately.
*** 39003,39025 ****
   -- Macro: TRAMPOLINE_ALIGNMENT
       Alignment required for trampolines, in bits.
  
!      If you don't define this macro, the value of 'FUNCTION_ALIGNMENT'
       is used for aligning trampolines.
  
   -- Target Hook: void TARGET_TRAMPOLINE_INIT (rtx M_TRAMP, tree FNDECL,
            rtx STATIC_CHAIN)
       This hook is called to initialize a trampoline.  M_TRAMP is an RTX
       for the memory block for the trampoline; FNDECL is the
!      'FUNCTION_DECL' for the nested function; STATIC_CHAIN is an RTX for
       the static chain value that should be passed to the function when
       it is called.
  
!      If the target defines 'TARGET_ASM_TRAMPOLINE_TEMPLATE', then the
       first thing this hook should do is emit a block move into M_TRAMP
!      from the memory block returned by 'assemble_trampoline_template'.
       Note that the block move need only cover the constant parts of the
       trampoline.  If the target isolates the variable parts of the
!      trampoline to the end, not all 'TRAMPOLINE_SIZE' bytes need be
       copied.
  
       If the target requires any other actions, such as flushing caches
--- 39007,39029 ----
   -- Macro: TRAMPOLINE_ALIGNMENT
       Alignment required for trampolines, in bits.
  
!      If you don't define this macro, the value of â€˜FUNCTION_ALIGNMENTâ€™
       is used for aligning trampolines.
  
   -- Target Hook: void TARGET_TRAMPOLINE_INIT (rtx M_TRAMP, tree FNDECL,
            rtx STATIC_CHAIN)
       This hook is called to initialize a trampoline.  M_TRAMP is an RTX
       for the memory block for the trampoline; FNDECL is the
!      â€˜FUNCTION_DECLâ€™ for the nested function; STATIC_CHAIN is an RTX for
       the static chain value that should be passed to the function when
       it is called.
  
!      If the target defines â€˜TARGET_ASM_TRAMPOLINE_TEMPLATEâ€™, then the
       first thing this hook should do is emit a block move into M_TRAMP
!      from the memory block returned by â€˜assemble_trampoline_templateâ€™.
       Note that the block move need only cover the constant parts of the
       trampoline.  If the target isolates the variable parts of the
!      trampoline to the end, not all â€˜TRAMPOLINE_SIZEâ€™ bytes need be
       copied.
  
       If the target requires any other actions, such as flushing caches
*************** separately.
*** 39029,39040 ****
  
   -- Target Hook: void TARGET_EMIT_CALL_BUILTIN___CLEAR_CACHE (rtx BEGIN,
            rtx END)
!      On targets that do not define a 'clear_cache' insn expander, but
!      that define the 'CLEAR_CACHE_INSN' macro,
       maybe_emit_call_builtin___clear_cache relies on this target hook to
       clear an address range in the instruction cache.
  
!      The default implementation calls the '__clear_cache' builtin,
       taking the assembler name from the builtin declaration.  Overriding
       definitions may call alternate functions, with alternate calling
       conventions, or emit alternate RTX to perform the job.
--- 39033,39044 ----
  
   -- Target Hook: void TARGET_EMIT_CALL_BUILTIN___CLEAR_CACHE (rtx BEGIN,
            rtx END)
!      On targets that do not define a â€˜clear_cacheâ€™ insn expander, but
!      that define the â€˜CLEAR_CACHE_INSNâ€™ macro,
       maybe_emit_call_builtin___clear_cache relies on this target hook to
       clear an address range in the instruction cache.
  
!      The default implementation calls the â€˜__clear_cacheâ€™ builtin,
       taking the assembler name from the builtin declaration.  Overriding
       definitions may call alternate functions, with alternate calling
       conventions, or emit alternate RTX to perform the job.
*************** separately.
*** 39042,39048 ****
   -- Target Hook: rtx TARGET_TRAMPOLINE_ADJUST_ADDRESS (rtx ADDR)
       This hook should perform any machine-specific adjustment in the
       address of the trampoline.  Its argument contains the address of
!      the memory block that was passed to 'TARGET_TRAMPOLINE_INIT'.  In
       case the address to be used for a function call should be different
       from the address at which the template was stored, the different
       address should be returned; otherwise ADDR should be returned
--- 39046,39052 ----
   -- Target Hook: rtx TARGET_TRAMPOLINE_ADJUST_ADDRESS (rtx ADDR)
       This hook should perform any machine-specific adjustment in the
       address of the trampoline.  Its argument contains the address of
!      the memory block that was passed to â€˜TARGET_TRAMPOLINE_INITâ€™.  In
       case the address to be used for a function call should be different
       from the address at which the template was stored, the different
       address should be returned; otherwise ADDR should be returned
*************** the following macro.
*** 39066,39090 ****
   -- Macro: CLEAR_INSN_CACHE (BEG, END)
       If defined, expands to a C expression clearing the _instruction
       cache_ in the specified interval.  The definition of this macro
!      would typically be a series of 'asm' statements.  Both BEG and END
       are pointer expressions.
  
   To use a standard subroutine, define the following macro.  In addition,
  you must make sure that the instructions in a trampoline fill an entire
  cache line with identical instructions, or else ensure that the
  beginning of the trampoline code is always aligned at the same point in
! its cache line.  Look in 'm68k.h' as a guide.
  
   -- Macro: TRANSFER_FROM_TRAMPOLINE
       Define this macro if trampolines need a special subroutine to do
!      their work.  The macro should expand to a series of 'asm'
       statements which will be compiled with GCC.  They go in a library
!      function named '__transfer_from_trampoline'.
  
       If you need to avoid executing the ordinary prologue code of a
       compiled C function when you jump to the subroutine, you can do so
       by placing a special label of your own in the assembler code.  Use
!      one 'asm' statement to generate an assembler label, and another to
       make the label global.  Then trampolines can use that label to jump
       directly to your special assembler code.
  
--- 39070,39094 ----
   -- Macro: CLEAR_INSN_CACHE (BEG, END)
       If defined, expands to a C expression clearing the _instruction
       cache_ in the specified interval.  The definition of this macro
!      would typically be a series of â€˜asmâ€™ statements.  Both BEG and END
       are pointer expressions.
  
   To use a standard subroutine, define the following macro.  In addition,
  you must make sure that the instructions in a trampoline fill an entire
  cache line with identical instructions, or else ensure that the
  beginning of the trampoline code is always aligned at the same point in
! its cache line.  Look in â€˜m68k.hâ€™ as a guide.
  
   -- Macro: TRANSFER_FROM_TRAMPOLINE
       Define this macro if trampolines need a special subroutine to do
!      their work.  The macro should expand to a series of â€˜asmâ€™
       statements which will be compiled with GCC.  They go in a library
!      function named â€˜__transfer_from_trampolineâ€™.
  
       If you need to avoid executing the ordinary prologue code of a
       compiled C function when you jump to the subroutine, you can do so
       by placing a special label of your own in the assembler code.  Use
!      one â€˜asmâ€™ statement to generate an assembler label, and another to
       make the label global.  Then trampolines can use that label to jump
       directly to your special assembler code.
  
*************** Here is an explanation of implicit calls
*** 39105,39112 ****
  
   -- Target Hook: void TARGET_INIT_LIBFUNCS (void)
       This hook should declare additional library routines or rename
!      existing ones, using the functions 'set_optab_libfunc' and
!      'init_one_libfunc' defined in 'optabs.cc'.  'init_optabs' calls
       this macro after initializing all the normal library routines.
  
       The default is to do nothing.  Most ports don't need to define this
--- 39109,39116 ----
  
   -- Target Hook: void TARGET_INIT_LIBFUNCS (void)
       This hook should declare additional library routines or rename
!      existing ones, using the functions â€˜set_optab_libfuncâ€™ and
!      â€˜init_one_libfuncâ€™ defined in â€˜optabs.ccâ€™.  â€˜init_optabsâ€™ calls
       this macro after initializing all the normal library routines.
  
       The default is to do nothing.  Most ports don't need to define this
*************** Here is an explanation of implicit calls
*** 39114,39127 ****
  
   -- Target Hook: bool TARGET_LIBFUNC_GNU_PREFIX
       If false (the default), internal library routines start with two
!      underscores.  If set to true, these routines start with '__gnu_'
!      instead.  E.g., '__muldi3' changes to '__gnu_muldi3'.  This
!      currently only affects functions defined in 'libgcc2.c'.  If this
!      is set to true, the 'tm.h' file must also '#define
!      LIBGCC2_GNU_PREFIX'.
  
   -- Macro: FLOAT_LIB_COMPARE_RETURNS_BOOL (MODE, COMPARISON)
!      This macro should return 'true' if the library routine that
       implements the floating point comparison operator COMPARISON in
       mode MODE will return a boolean, and FALSE if it will return a
       tristate.
--- 39118,39131 ----
  
   -- Target Hook: bool TARGET_LIBFUNC_GNU_PREFIX
       If false (the default), internal library routines start with two
!      underscores.  If set to true, these routines start with â€˜__gnu_â€™
!      instead.  E.g., â€˜__muldi3â€™ changes to â€˜__gnu_muldi3â€™.  This
!      currently only affects functions defined in â€˜libgcc2.câ€™.  If this
!      is set to true, the â€˜tm.hâ€™ file must also â€˜#define
!      LIBGCC2_GNU_PREFIXâ€™.
  
   -- Macro: FLOAT_LIB_COMPARE_RETURNS_BOOL (MODE, COMPARISON)
!      This macro should return â€˜trueâ€™ if the library routine that
       implements the floating point comparison operator COMPARISON in
       mode MODE will return a boolean, and FALSE if it will return a
       tristate.
*************** Here is an explanation of implicit calls
*** 39131,39143 ****
       ports don't need to define this macro.
  
   -- Macro: TARGET_LIB_INT_CMP_BIASED
!      This macro should evaluate to 'true' if the integer comparison
!      functions (like '__cmpdi2') return 0 to indicate that the first
       operand is smaller than the second, 1 to indicate that they are
       equal, and 2 to indicate that the first operand is greater than the
!      second.  If this macro evaluates to 'false' the comparison
!      functions return -1, 0, and 1 instead of 0, 1, and 2.  If the
!      target uses the routines in 'libgcc.a', you do not need to define
       this macro.
  
   -- Macro: TARGET_HAS_NO_HW_DIVIDE
--- 39135,39147 ----
       ports don't need to define this macro.
  
   -- Macro: TARGET_LIB_INT_CMP_BIASED
!      This macro should evaluate to â€˜trueâ€™ if the integer comparison
!      functions (like â€˜__cmpdi2â€™) return 0 to indicate that the first
       operand is smaller than the second, 1 to indicate that they are
       equal, and 2 to indicate that the first operand is greater than the
!      second.  If this macro evaluates to â€˜falseâ€™ the comparison
!      functions return âˆ’1, 0, and 1 instead of 0, 1, and 2.  If the
!      target uses the routines in â€˜libgcc.aâ€™, you do not need to define
       this macro.
  
   -- Macro: TARGET_HAS_NO_HW_DIVIDE
*************** Here is an explanation of implicit calls
*** 39148,39168 ****
       algorithm which make use of a 64-bit by 32-bit divide primitive.
  
   -- Macro: TARGET_EDOM
!      The value of 'EDOM' on the target machine, as a C integer constant
       expression.  If you don't define this macro, GCC does not attempt
!      to deposit the value of 'EDOM' into 'errno' directly.  Look in
!      '/usr/include/errno.h' to find the value of 'EDOM' on your system.
  
!      If you do not define 'TARGET_EDOM', then compiled code reports
       domain errors by calling the library function and letting it report
!      the error.  If mathematical functions on your system use 'matherr'
!      when there is an error, then you should leave 'TARGET_EDOM'
!      undefined so that 'matherr' is used normally.
  
   -- Macro: GEN_ERRNO_RTX
       Define this macro as a C expression to create an rtl expression
!      that refers to the global "variable" 'errno'.  (On certain systems,
!      'errno' may not actually be a variable.)  If you don't define this
       macro, a reasonable default is used.
  
   -- Target Hook: bool TARGET_LIBC_HAS_FUNCTION (enum function_class
--- 39152,39172 ----
       algorithm which make use of a 64-bit by 32-bit divide primitive.
  
   -- Macro: TARGET_EDOM
!      The value of â€˜EDOMâ€™ on the target machine, as a C integer constant
       expression.  If you don't define this macro, GCC does not attempt
!      to deposit the value of â€˜EDOMâ€™ into â€˜errnoâ€™ directly.  Look in
!      â€˜/usr/include/errno.hâ€™ to find the value of â€˜EDOMâ€™ on your system.
  
!      If you do not define â€˜TARGET_EDOMâ€™, then compiled code reports
       domain errors by calling the library function and letting it report
!      the error.  If mathematical functions on your system use â€˜matherrâ€™
!      when there is an error, then you should leave â€˜TARGET_EDOMâ€™
!      undefined so that â€˜matherrâ€™ is used normally.
  
   -- Macro: GEN_ERRNO_RTX
       Define this macro as a C expression to create an rtl expression
!      that refers to the global "variable" â€˜errnoâ€™.  (On certain systems,
!      â€˜errnoâ€™ may not actually be a variable.)  If you don't define this
       macro, a reasonable default is used.
  
   -- Target Hook: bool TARGET_LIBC_HAS_FUNCTION (enum function_class
*************** Here is an explanation of implicit calls
*** 39175,39181 ****
  
   -- Target Hook: bool TARGET_LIBC_HAS_FAST_FUNCTION (int FCODE)
       This hook determines whether a function from a class of functions
!      '(enum function_class)'FCODE has a fast implementation.
  
   -- Target Hook: unsigned TARGET_FORTIFY_SOURCE_DEFAULT_LEVEL (void)
       This hook determines what value _FORTIFY_SOURCE will be set to when
--- 39179,39185 ----
  
   -- Target Hook: bool TARGET_LIBC_HAS_FAST_FUNCTION (int FCODE)
       This hook determines whether a function from a class of functions
!      â€˜(enum function_class)â€™FCODE has a fast implementation.
  
   -- Target Hook: unsigned TARGET_FORTIFY_SOURCE_DEFAULT_LEVEL (void)
       This hook determines what value _FORTIFY_SOURCE will be set to when
*************** Here is an explanation of implicit calls
*** 39186,39197 ****
       This hook determines expected maximum errors for math functions
       measured in ulps (units of the last place).  0 means 0.5ulps
       precision (correctly rounded).  ~0U means unknown errors.  The
!      'combined_fn' CFN argument should identify just which math built-in
       function it is rather than its variant, MODE the variant in terms
       of floating-point machine mode.  The hook should also take into
!      account 'flag_rounding_math' whether it is maximum error just in
       default rounding mode, or in all possible rounding modes.
!      BOUNDARY_P is 'true' for maximum errors on intrinsic math
       boundaries of functions rather than errors inside of the usual
       result ranges of the functions.  E.g. the sin/cos function finite
       result is in between -1.0 and 1.0 inclusive, with BOUNDARY_P true
--- 39190,39201 ----
       This hook determines expected maximum errors for math functions
       measured in ulps (units of the last place).  0 means 0.5ulps
       precision (correctly rounded).  ~0U means unknown errors.  The
!      â€˜combined_fnâ€™ CFN argument should identify just which math built-in
       function it is rather than its variant, MODE the variant in terms
       of floating-point machine mode.  The hook should also take into
!      account â€˜flag_rounding_mathâ€™ whether it is maximum error just in
       default rounding mode, or in all possible rounding modes.
!      BOUNDARY_P is â€˜trueâ€™ for maximum errors on intrinsic math
       boundaries of functions rather than errors inside of the usual
       result ranges of the functions.  E.g. the sin/cos function finite
       result is in between -1.0 and 1.0 inclusive, with BOUNDARY_P true
*************** This is about addressing modes.
*** 39245,39272 ****
   -- Macro: CONSTANT_ADDRESS_P (X)
       A C expression that is 1 if the RTX X is a constant which is a
       valid address.  On most machines the default definition of
!      '(CONSTANT_P (X) && GET_CODE (X) != CONST_DOUBLE)' is acceptable,
       but a few machines are more restrictive as to which constant
       addresses are supported.
  
   -- Macro: CONSTANT_P (X)
!      'CONSTANT_P', which is defined by target-independent code, accepts
       integer-values expressions whose values are not explicitly known,
!      such as 'symbol_ref', 'label_ref', and 'high' expressions and
!      'const' arithmetic expressions, in addition to 'const_int' and
!      'const_double' expressions.
  
   -- Macro: MAX_REGS_PER_ADDRESS
       A number, the maximum number of registers that can appear in a
       valid memory address.  Note that it is up to you to specify a value
!      equal to the maximum number that 'TARGET_LEGITIMATE_ADDRESS_P'
       would ever accept.
  
   -- Target Hook: bool TARGET_LEGITIMATE_ADDRESS_P (machine_mode MODE,
            rtx X, bool STRICT, code_helper CH)
       A function that returns whether X (an RTX) is a legitimate memory
       address on the target machine for a memory operand of mode MODE.
!      If CH is not 'ERROR_MARK', it can be called from middle-end to
       determine if it is valid to use X as a memory operand for RTX insn
       which is generated for the given code_helper CH.  For example,
       assuming the given CH is IFN_LEN_LOAD, on some target its
--- 39249,39276 ----
   -- Macro: CONSTANT_ADDRESS_P (X)
       A C expression that is 1 if the RTX X is a constant which is a
       valid address.  On most machines the default definition of
!      â€˜(CONSTANT_P (X) && GET_CODE (X) != CONST_DOUBLE)â€™ is acceptable,
       but a few machines are more restrictive as to which constant
       addresses are supported.
  
   -- Macro: CONSTANT_P (X)
!      â€˜CONSTANT_Pâ€™, which is defined by target-independent code, accepts
       integer-values expressions whose values are not explicitly known,
!      such as â€˜symbol_refâ€™, â€˜label_refâ€™, and â€˜highâ€™ expressions and
!      â€˜constâ€™ arithmetic expressions, in addition to â€˜const_intâ€™ and
!      â€˜const_doubleâ€™ expressions.
  
   -- Macro: MAX_REGS_PER_ADDRESS
       A number, the maximum number of registers that can appear in a
       valid memory address.  Note that it is up to you to specify a value
!      equal to the maximum number that â€˜TARGET_LEGITIMATE_ADDRESS_Pâ€™
       would ever accept.
  
   -- Target Hook: bool TARGET_LEGITIMATE_ADDRESS_P (machine_mode MODE,
            rtx X, bool STRICT, code_helper CH)
       A function that returns whether X (an RTX) is a legitimate memory
       address on the target machine for a memory operand of mode MODE.
!      If CH is not â€˜ERROR_MARKâ€™, it can be called from middle-end to
       determine if it is valid to use X as a memory operand for RTX insn
       which is generated for the given code_helper CH.  For example,
       assuming the given CH is IFN_LEN_LOAD, on some target its
*************** This is about addressing modes.
*** 39284,39349 ****
       register is considered a memory reference.  This is because in
       contexts where some kind of register is required, a pseudo-register
       with no hard register must be rejected.  For non-hard registers,
!      the strict variant should look up the 'reg_renumber' array; it
       should then proceed using the hard register number in the array, or
!      treat the pseudo as a memory reference if the array holds '-1'.
  
       The non-strict variant is used in other passes.  It must be defined
       to accept all pseudo-registers in every context where some kind of
       register is required.
  
!      Normally, constant addresses which are the sum of a 'symbol_ref'
!      and an integer are stored inside a 'const' RTX to mark them as
       constant.  Therefore, there is no need to recognize such sums
       specifically as legitimate addresses.  Normally you would simply
!      recognize any 'const' as legitimate.
  
!      Usually 'PRINT_OPERAND_ADDRESS' is not prepared to handle constant
!      sums that are not marked with 'const'.  It assumes that a naked
!      'plus' indicates indexing.  If so, then you _must_ reject such
       naked constant sums as illegitimate addresses, so that none of them
!      will be given to 'PRINT_OPERAND_ADDRESS'.
  
       On some machines, whether a symbolic address is legitimate depends
       on the section that the address refers to.  On these machines,
!      define the target hook 'TARGET_ENCODE_SECTION_INFO' to store the
!      information into the 'symbol_ref', and then check for it here.
!      When you see a 'const', you will have to look inside it to find the
!      'symbol_ref' in order to determine the section.  *Note Assembler
       Format::.
  
       Some ports are still using a deprecated legacy substitute for this
!      hook, the 'GO_IF_LEGITIMATE_ADDRESS' macro.  This macro has this
       syntax:
  
            #define GO_IF_LEGITIMATE_ADDRESS (MODE, X, LABEL)
  
!      and should 'goto LABEL' if the address X is a valid address on the
       target machine for a memory operand of mode MODE.
  
       Compiler source files that want to use the strict variant of this
!      macro define the macro 'REG_OK_STRICT'.  You should use an '#ifdef
!      REG_OK_STRICT' conditional to define the strict variant in that
       case and the non-strict variant otherwise.
  
       Using the hook is usually simpler because it limits the number of
       files that are recompiled when changes are made.
  
   -- Macro: TARGET_MEM_CONSTRAINT
!      A single character to be used instead of the default ''m''
       character for general memory addresses.  This defines the
       constraint letter which matches the memory addresses accepted by
!      'TARGET_LEGITIMATE_ADDRESS_P'.  Define this macro if you want to
       support new address formats in your back end without changing the
!      semantics of the ''m'' constraint.  This is necessary in order to
       preserve functionality of inline assembly constructs using the
!      ''m'' constraint.
  
   -- Macro: FIND_BASE_TERM (X)
       A C expression to determine the base term of address X, or to
!      provide a simplified version of X from which 'alias.cc' can easily
       find the base term.  This macro is used in only two places:
!      'find_base_value' and 'find_base_term' in 'alias.cc'.
  
       It is always safe for this macro to not be defined.  It exists so
       that alias analysis can understand machine-dependent addresses.
--- 39288,39353 ----
       register is considered a memory reference.  This is because in
       contexts where some kind of register is required, a pseudo-register
       with no hard register must be rejected.  For non-hard registers,
!      the strict variant should look up the â€˜reg_renumberâ€™ array; it
       should then proceed using the hard register number in the array, or
!      treat the pseudo as a memory reference if the array holds â€˜-1â€™.
  
       The non-strict variant is used in other passes.  It must be defined
       to accept all pseudo-registers in every context where some kind of
       register is required.
  
!      Normally, constant addresses which are the sum of a â€˜symbol_refâ€™
!      and an integer are stored inside a â€˜constâ€™ RTX to mark them as
       constant.  Therefore, there is no need to recognize such sums
       specifically as legitimate addresses.  Normally you would simply
!      recognize any â€˜constâ€™ as legitimate.
  
!      Usually â€˜PRINT_OPERAND_ADDRESSâ€™ is not prepared to handle constant
!      sums that are not marked with â€˜constâ€™.  It assumes that a naked
!      â€˜plusâ€™ indicates indexing.  If so, then you _must_ reject such
       naked constant sums as illegitimate addresses, so that none of them
!      will be given to â€˜PRINT_OPERAND_ADDRESSâ€™.
  
       On some machines, whether a symbolic address is legitimate depends
       on the section that the address refers to.  On these machines,
!      define the target hook â€˜TARGET_ENCODE_SECTION_INFOâ€™ to store the
!      information into the â€˜symbol_refâ€™, and then check for it here.
!      When you see a â€˜constâ€™, you will have to look inside it to find the
!      â€˜symbol_refâ€™ in order to determine the section.  *Note Assembler
       Format::.
  
       Some ports are still using a deprecated legacy substitute for this
!      hook, the â€˜GO_IF_LEGITIMATE_ADDRESSâ€™ macro.  This macro has this
       syntax:
  
            #define GO_IF_LEGITIMATE_ADDRESS (MODE, X, LABEL)
  
!      and should â€˜goto LABELâ€™ if the address X is a valid address on the
       target machine for a memory operand of mode MODE.
  
       Compiler source files that want to use the strict variant of this
!      macro define the macro â€˜REG_OK_STRICTâ€™.  You should use an â€˜#ifdef
!      REG_OK_STRICTâ€™ conditional to define the strict variant in that
       case and the non-strict variant otherwise.
  
       Using the hook is usually simpler because it limits the number of
       files that are recompiled when changes are made.
  
   -- Macro: TARGET_MEM_CONSTRAINT
!      A single character to be used instead of the default â€˜'m'â€™
       character for general memory addresses.  This defines the
       constraint letter which matches the memory addresses accepted by
!      â€˜TARGET_LEGITIMATE_ADDRESS_Pâ€™.  Define this macro if you want to
       support new address formats in your back end without changing the
!      semantics of the â€˜'m'â€™ constraint.  This is necessary in order to
       preserve functionality of inline assembly constructs using the
!      â€˜'m'â€™ constraint.
  
   -- Macro: FIND_BASE_TERM (X)
       A C expression to determine the base term of address X, or to
!      provide a simplified version of X from which â€˜alias.ccâ€™ can easily
       find the base term.  This macro is used in only two places:
!      â€˜find_base_valueâ€™ and â€˜find_base_termâ€™ in â€˜alias.ccâ€™.
  
       It is always safe for this macro to not be defined.  It exists so
       that alias analysis can understand machine-dependent addresses.
*************** This is about addressing modes.
*** 39356,39362 ****
       This hook is given an invalid memory address X for an operand of
       mode MODE and should try to return a valid memory address.
  
!      X will always be the result of a call to 'break_out_memory_refs',
       and OLDX will be the operand that was given to that function to
       produce X.
  
--- 39360,39366 ----
       This hook is given an invalid memory address X for an operand of
       mode MODE and should try to return a valid memory address.
  
!      X will always be the result of a call to â€˜break_out_memory_refsâ€™,
       and OLDX will be the operand that was given to that function to
       produce X.
  
*************** This is about addressing modes.
*** 39385,39391 ****
       registers into a register.  On the other hand, for number of RISC
       processors offsets are limited so that often an intermediate
       address needs to be generated in order to address a stack slot.  By
!      defining 'LEGITIMIZE_RELOAD_ADDRESS' appropriately, the
       intermediate addresses generated for adjacent some stack slots can
       be made identical, and thus be shared.
  
--- 39389,39395 ----
       registers into a register.  On the other hand, for number of RISC
       processors offsets are limited so that often an intermediate
       address needs to be generated in order to address a stack slot.  By
!      defining â€˜LEGITIMIZE_RELOAD_ADDRESSâ€™ appropriately, the
       intermediate addresses generated for adjacent some stack slots can
       be made identical, and thus be shared.
  
*************** This is about addressing modes.
*** 39398,39418 ****
       previous invocation of this macro.  If it fails to handle such
       addresses then the compiler may generate incorrect code or abort.
  
!      The macro definition should use 'push_reload' to indicate parts
       that need reloading; OPNUM, TYPE and IND_LEVELS are usually
!      suitable to be passed unaltered to 'push_reload'.
  
       The code generated by this macro must not alter the substructure of
       X.  If it transforms X into a more legitimate form, it should
       assign X (which will always be a C variable) a new value.  This
       also applies to parts that you change indirectly by calling
!      'push_reload'.
  
!      The macro definition may use 'strict_memory_address_p' to test if
       the address has become legitimate.
  
       If you want to change only a part of X, one standard way of doing
!      this is to use 'copy_rtx'.  Note, however, that it unshares only a
       single level of rtl.  Thus, if the part to be changed is not at the
       top level, you'll need to replace first the top level.  It is not
       necessary for this macro to come up with a legitimate address; but
--- 39402,39422 ----
       previous invocation of this macro.  If it fails to handle such
       addresses then the compiler may generate incorrect code or abort.
  
!      The macro definition should use â€˜push_reloadâ€™ to indicate parts
       that need reloading; OPNUM, TYPE and IND_LEVELS are usually
!      suitable to be passed unaltered to â€˜push_reloadâ€™.
  
       The code generated by this macro must not alter the substructure of
       X.  If it transforms X into a more legitimate form, it should
       assign X (which will always be a C variable) a new value.  This
       also applies to parts that you change indirectly by calling
!      â€˜push_reloadâ€™.
  
!      The macro definition may use â€˜strict_memory_address_pâ€™ to test if
       the address has become legitimate.
  
       If you want to change only a part of X, one standard way of doing
!      this is to use â€˜copy_rtxâ€™.  Note, however, that it unshares only a
       single level of rtl.  Thus, if the part to be changed is not at the
       top level, you'll need to replace first the top level.  It is not
       necessary for this macro to come up with a legitimate address; but
*************** This is about addressing modes.
*** 39420,39426 ****
  
   -- Target Hook: bool TARGET_MODE_DEPENDENT_ADDRESS_P (const_rtx ADDR,
            addr_space_t ADDRSPACE)
!      This hook returns 'true' if memory address ADDR in address space
       ADDRSPACE can have different meanings depending on the machine mode
       of the memory reference it is used for or if the address is valid
       for some modes but not others.
--- 39424,39430 ----
  
   -- Target Hook: bool TARGET_MODE_DEPENDENT_ADDRESS_P (const_rtx ADDR,
            addr_space_t ADDRSPACE)
!      This hook returns â€˜trueâ€™ if memory address ADDR in address space
       ADDRSPACE can have different meanings depending on the machine mode
       of the memory reference it is used for or if the address is valid
       for some modes but not others.
*************** This is about addressing modes.
*** 39433,39463 ****
  
       You may assume that ADDR is a valid address for the machine.
  
!      The default version of this hook returns 'false'.
  
   -- Target Hook: bool TARGET_LEGITIMATE_CONSTANT_P (machine_mode MODE,
            rtx X)
       This hook returns true if X is a legitimate constant for a
       MODE-mode immediate operand on the target machine.  You can assume
!      that X satisfies 'CONSTANT_P', so you need not check this.
  
       The default definition returns true.
  
   -- Target Hook: bool TARGET_PRECOMPUTE_TLS_P (machine_mode MODE, rtx X)
       This hook returns true if X is a TLS operand on the target machine
       that should be pre-computed when used as the argument in a call.
!      You can assume that X satisfies 'CONSTANT_P', so you need not check
       this.
  
       The default definition returns false.
  
   -- Target Hook: rtx TARGET_DELEGITIMIZE_ADDRESS (rtx X)
       This hook is used to undo the possibly obfuscating effects of the
!      'LEGITIMIZE_ADDRESS' and 'LEGITIMIZE_RELOAD_ADDRESS' target macros.
       Some backend implementations of these macros wrap symbol references
!      inside an 'UNSPEC' rtx to represent PIC or similar addressing
       modes.  This target hook allows GCC's optimizers to understand the
!      semantics of these opaque 'UNSPEC's by converting them back into
       their original form.
  
   -- Target Hook: bool TARGET_CONST_NOT_OK_FOR_DEBUG_P (rtx X)
--- 39437,39467 ----
  
       You may assume that ADDR is a valid address for the machine.
  
!      The default version of this hook returns â€˜falseâ€™.
  
   -- Target Hook: bool TARGET_LEGITIMATE_CONSTANT_P (machine_mode MODE,
            rtx X)
       This hook returns true if X is a legitimate constant for a
       MODE-mode immediate operand on the target machine.  You can assume
!      that X satisfies â€˜CONSTANT_Pâ€™, so you need not check this.
  
       The default definition returns true.
  
   -- Target Hook: bool TARGET_PRECOMPUTE_TLS_P (machine_mode MODE, rtx X)
       This hook returns true if X is a TLS operand on the target machine
       that should be pre-computed when used as the argument in a call.
!      You can assume that X satisfies â€˜CONSTANT_Pâ€™, so you need not check
       this.
  
       The default definition returns false.
  
   -- Target Hook: rtx TARGET_DELEGITIMIZE_ADDRESS (rtx X)
       This hook is used to undo the possibly obfuscating effects of the
!      â€˜LEGITIMIZE_ADDRESSâ€™ and â€˜LEGITIMIZE_RELOAD_ADDRESSâ€™ target macros.
       Some backend implementations of these macros wrap symbol references
!      inside an â€˜UNSPECâ€™ rtx to represent PIC or similar addressing
       modes.  This target hook allows GCC's optimizers to understand the
!      semantics of these opaque â€˜UNSPECâ€™s by converting them back into
       their original form.
  
   -- Target Hook: bool TARGET_CONST_NOT_OK_FOR_DEBUG_P (rtx X)
*************** This is about addressing modes.
*** 39481,39500 ****
   -- Target Hook: bool TARGET_USE_BLOCKS_FOR_CONSTANT_P (machine_mode
            MODE, const_rtx X)
       This hook should return true if pool entries for constant X can be
!      placed in an 'object_block' structure.  MODE is the mode of X.
  
       The default version returns false for all constants.
  
   -- Target Hook: bool TARGET_USE_BLOCKS_FOR_DECL_P (const_tree DECL)
       This hook should return true if pool entries for DECL should be
!      placed in an 'object_block' structure.
  
       The default version returns true for all decls.
  
   -- Target Hook: tree TARGET_BUILTIN_RECIPROCAL (tree FNDECL)
       This hook should return the DECL of a function that implements the
       reciprocal of the machine-specific builtin function FNDECL, or
!      'NULL_TREE' if such a function is not available.
  
   -- Target Hook: tree TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD (void)
       This hook should return the DECL of a function F that given an
--- 39485,39504 ----
   -- Target Hook: bool TARGET_USE_BLOCKS_FOR_CONSTANT_P (machine_mode
            MODE, const_rtx X)
       This hook should return true if pool entries for constant X can be
!      placed in an â€˜object_blockâ€™ structure.  MODE is the mode of X.
  
       The default version returns false for all constants.
  
   -- Target Hook: bool TARGET_USE_BLOCKS_FOR_DECL_P (const_tree DECL)
       This hook should return true if pool entries for DECL should be
!      placed in an â€˜object_blockâ€™ structure.
  
       The default version returns true for all decls.
  
   -- Target Hook: tree TARGET_BUILTIN_RECIPROCAL (tree FNDECL)
       This hook should return the DECL of a function that implements the
       reciprocal of the machine-specific builtin function FNDECL, or
!      â€˜NULL_TREEâ€™ if such a function is not available.
  
   -- Target Hook: tree TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD (void)
       This hook should return the DECL of a function F that given an
*************** This is about addressing modes.
*** 39505,39512 ****
       The autovectorizer, when vectorizing a load operation from an
       address ADDR that may be unaligned, will generate two vector loads
       from the two aligned addresses around ADDR.  It then generates a
!      'REALIGN_LOAD' operation to extract the relevant data from the two
!      loaded vectors.  The first two arguments to 'REALIGN_LOAD', V1 and
       V2, are the two vectors, each of size VS, and the third argument,
       OFF, defines how the data will be extracted from these two vectors:
       if OFF is 0, then the returned vector is V2; otherwise, the
--- 39509,39516 ----
       The autovectorizer, when vectorizing a load operation from an
       address ADDR that may be unaligned, will generate two vector loads
       from the two aligned addresses around ADDR.  It then generates a
!      â€˜REALIGN_LOADâ€™ operation to extract the relevant data from the two
!      loaded vectors.  The first two arguments to â€˜REALIGN_LOADâ€™, V1 and
       V2, are the two vectors, each of size VS, and the third argument,
       OFF, defines how the data will be extracted from these two vectors:
       if OFF is 0, then the returned vector is V2; otherwise, the
*************** This is about addressing modes.
*** 39515,39525 ****
  
       If this hook is defined, the autovectorizer will generate a call to
       F (using the DECL tree that this hook returns) and will use the
!      return value of F as the argument OFF to 'REALIGN_LOAD'.
       Therefore, the mask M returned by F should comply with the
!      semantics expected by 'REALIGN_LOAD' described above.  If this hook
       is not defined, then ADDR will be used as the argument OFF to
!      'REALIGN_LOAD', in which case the low log2(VS) - 1 bits of ADDR
       will be considered.
  
   -- Target Hook: int TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST (enum
--- 39519,39529 ----
  
       If this hook is defined, the autovectorizer will generate a call to
       F (using the DECL tree that this hook returns) and will use the
!      return value of F as the argument OFF to â€˜REALIGN_LOADâ€™.
       Therefore, the mask M returned by F should comply with the
!      semantics expected by â€˜REALIGN_LOADâ€™ described above.  If this hook
       is not defined, then ADDR will be used as the argument OFF to
!      â€˜REALIGN_LOADâ€™, in which case the low log2(VS) âˆ’ 1 bits of ADDR
       will be considered.
  
   -- Target Hook: int TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST (enum
*************** This is about addressing modes.
*** 39533,39543 ****
       This hook returns the preferred alignment in bits for accesses to
       vectors of type TYPE in vectorized code.  This might be less than
       or greater than the ABI-defined value returned by
!      'TARGET_VECTOR_ALIGNMENT'.  It can be equal to the alignment of a
       single element, in which case the vectorizer will not try to
       optimize for alignment.
  
!      The default hook returns 'TYPE_ALIGN (TYPE)', which is correct for
       most targets.
  
   -- Target Hook: bool TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE
--- 39537,39547 ----
       This hook returns the preferred alignment in bits for accesses to
       vectors of type TYPE in vectorized code.  This might be less than
       or greater than the ABI-defined value returned by
!      â€˜TARGET_VECTOR_ALIGNMENTâ€™.  It can be equal to the alignment of a
       single element, in which case the vectorizer will not try to
       optimize for alignment.
  
!      The default hook returns â€˜TYPE_ALIGN (TYPE)â€™, which is correct for
       most targets.
  
   -- Target Hook: bool TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE
*************** This is about addressing modes.
*** 39550,39556 ****
            MODE, machine_mode OP_MODE, rtx OUTPUT, rtx IN0, rtx IN1,
            const vec_perm_indices &SEL)
       This hook is used to test whether the target can permute up to two
!      vectors of mode OP_MODE using the permutation vector 'sel',
       producing a vector of mode MODE.  The hook is also used to emit
       such a permutation.
  
--- 39554,39560 ----
            MODE, machine_mode OP_MODE, rtx OUTPUT, rtx IN0, rtx IN1,
            const vec_perm_indices &SEL)
       This hook is used to test whether the target can permute up to two
!      vectors of mode OP_MODE using the permutation vector â€˜selâ€™,
       producing a vector of mode MODE.  The hook is also used to emit
       such a permutation.
  
*************** This is about addressing modes.
*** 39576,39596 ****
       sequence of two addition-shift pairs, giving four instructions in
       total.  Return true if taking this approach for VECTYPE is likely
       to be better than using a sequence involving highpart
!      multiplication.  Default is false if 'can_mult_highpart_p',
       otherwise true.
  
   -- Target Hook: tree TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION
            (unsigned CODE, tree VEC_TYPE_OUT, tree VEC_TYPE_IN)
       This hook should return the decl of a function that implements the
!      vectorized variant of the function with the 'combined_fn' code CODE
!      or 'NULL_TREE' if such a function is not available.  The return
       type of the vectorized function shall be of vector type
       VEC_TYPE_OUT and the argument types should be VEC_TYPE_IN.
  
   -- Target Hook: tree TARGET_VECTORIZE_BUILTIN_MD_VECTORIZED_FUNCTION
            (tree FNDECL, tree VEC_TYPE_OUT, tree VEC_TYPE_IN)
       This hook should return the decl of a function that implements the
!      vectorized variant of target built-in function 'fndecl'.  The
       return type of the vectorized function shall be of vector type
       VEC_TYPE_OUT and the argument types should be VEC_TYPE_IN.
  
--- 39580,39600 ----
       sequence of two addition-shift pairs, giving four instructions in
       total.  Return true if taking this approach for VECTYPE is likely
       to be better than using a sequence involving highpart
!      multiplication.  Default is false if â€˜can_mult_highpart_pâ€™,
       otherwise true.
  
   -- Target Hook: tree TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION
            (unsigned CODE, tree VEC_TYPE_OUT, tree VEC_TYPE_IN)
       This hook should return the decl of a function that implements the
!      vectorized variant of the function with the â€˜combined_fnâ€™ code CODE
!      or â€˜NULL_TREEâ€™ if such a function is not available.  The return
       type of the vectorized function shall be of vector type
       VEC_TYPE_OUT and the argument types should be VEC_TYPE_IN.
  
   -- Target Hook: tree TARGET_VECTORIZE_BUILTIN_MD_VECTORIZED_FUNCTION
            (tree FNDECL, tree VEC_TYPE_OUT, tree VEC_TYPE_IN)
       This hook should return the decl of a function that implements the
!      vectorized variant of target built-in function â€˜fndeclâ€™.  The
       return type of the vectorized function shall be of vector type
       VEC_TYPE_OUT and the argument types should be VEC_TYPE_IN.
  
*************** This is about addressing modes.
*** 39607,39613 ****
   -- Target Hook: machine_mode TARGET_VECTORIZE_PREFERRED_SIMD_MODE
            (scalar_mode MODE)
       This hook should return the preferred mode for vectorizing scalar
!      mode MODE.  The default is equal to 'word_mode', because the
       vectorizer can do some transformations even in absence of
       specialized SIMD hardware.
  
--- 39611,39617 ----
   -- Target Hook: machine_mode TARGET_VECTORIZE_PREFERRED_SIMD_MODE
            (scalar_mode MODE)
       This hook should return the preferred mode for vectorizing scalar
!      mode MODE.  The default is equal to â€˜word_modeâ€™, because the
       vectorizer can do some transformations even in absence of
       specialized SIMD hardware.
  
*************** This is about addressing modes.
*** 39623,39652 ****
            TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES (vector_modes
            *MODES, bool ALL)
       If using the mode returned by
!      'TARGET_VECTORIZE_PREFERRED_SIMD_MODE' is not the only approach
       worth considering, this hook should add one mode to MODES for each
       useful alternative approach.  These modes are then passed to
!      'TARGET_VECTORIZE_RELATED_MODE' to obtain the vector mode for a
       given element mode.
  
       The modes returned in MODES should use the smallest element mode
       possible for the vectorization approach that they represent,
       preferring integer modes over floating-poing modes in the event of
       a tie.  The first mode should be the
!      'TARGET_VECTORIZE_PREFERRED_SIMD_MODE' for its element mode.
  
       If ALL is true, add suitable vector modes even when they are
       generally not expected to be worthwhile.
  
       The hook returns a bitmask of flags that control how the modes in
       MODES are used.  The flags are:
!      'VECT_COMPARE_COSTS'
            Tells the loop vectorizer to try all the provided modes and
            pick the one with the lowest cost.  By default the vectorizer
            will choose the first mode that works.
  
       The hook does not need to do anything if the vector returned by
!      'TARGET_VECTORIZE_PREFERRED_SIMD_MODE' is the only one relevant for
       autovectorization.  The default implementation adds no modes and
       returns 0.
  
--- 39627,39656 ----
            TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES (vector_modes
            *MODES, bool ALL)
       If using the mode returned by
!      â€˜TARGET_VECTORIZE_PREFERRED_SIMD_MODEâ€™ is not the only approach
       worth considering, this hook should add one mode to MODES for each
       useful alternative approach.  These modes are then passed to
!      â€˜TARGET_VECTORIZE_RELATED_MODEâ€™ to obtain the vector mode for a
       given element mode.
  
       The modes returned in MODES should use the smallest element mode
       possible for the vectorization approach that they represent,
       preferring integer modes over floating-poing modes in the event of
       a tie.  The first mode should be the
!      â€˜TARGET_VECTORIZE_PREFERRED_SIMD_MODEâ€™ for its element mode.
  
       If ALL is true, add suitable vector modes even when they are
       generally not expected to be worthwhile.
  
       The hook returns a bitmask of flags that control how the modes in
       MODES are used.  The flags are:
!      â€˜VECT_COMPARE_COSTSâ€™
            Tells the loop vectorizer to try all the provided modes and
            pick the one with the lowest cost.  By default the vectorizer
            will choose the first mode that works.
  
       The hook does not need to do anything if the vector returned by
!      â€˜TARGET_VECTORIZE_PREFERRED_SIMD_MODEâ€™ is the only one relevant for
       autovectorization.  The default implementation adds no modes and
       returns 0.
  
*************** This is about addressing modes.
*** 39658,39664 ****
       it should use for those elements.  If NUNITS is nonzero, ensure
       that the mode has exactly NUNITS elements, otherwise pick whichever
       vector size pairs the most naturally with VECTOR_MODE.  Return an
!      empty 'opt_machine_mode' if there is no supported vector mode with
       the required properties.
  
       There is no prescribed way of handling the case in which NUNITS is
--- 39662,39668 ----
       it should use for those elements.  If NUNITS is nonzero, ensure
       that the mode has exactly NUNITS elements, otherwise pick whichever
       vector size pairs the most naturally with VECTOR_MODE.  Return an
!      empty â€˜opt_machine_modeâ€™ if there is no supported vector mode with
       the required properties.
  
       There is no prescribed way of handling the case in which NUNITS is
*************** This is about addressing modes.
*** 39671,39677 ****
       trying to keep the number of elements as similar as possible while
       applying maximum and minimum vector sizes.
  
!      The default implementation uses 'mode_for_vector' to find the
       requested mode, returning a mode with the same size as VECTOR_MODE
       when NUNITS is zero.  This is the correct behavior for most
       targets.
--- 39675,39681 ----
       trying to keep the number of elements as similar as possible while
       applying maximum and minimum vector sizes.
  
!      The default implementation uses â€˜mode_for_vectorâ€™ to find the
       requested mode, returning a mode with the same size as VECTOR_MODE
       when NUNITS is zero.  This is the correct behavior for most
       targets.
*************** This is about addressing modes.
*** 39680,39705 ****
            (machine_mode MODE)
       Return the mode to use for a vector mask that holds one boolean
       result for each element of vector mode MODE.  The returned mask
!      mode can be a vector of integers (class 'MODE_VECTOR_INT'), a
!      vector of booleans (class 'MODE_VECTOR_BOOL') or a scalar integer
!      (class 'MODE_INT').  Return an empty 'opt_machine_mode' if no such
       mask mode exists.
  
!      The default implementation returns a 'MODE_VECTOR_INT' with the
       same size and number of elements as MODE, if such a mode exists.
  
   -- Target Hook: bool
            TARGET_VECTORIZE_CONDITIONAL_OPERATION_IS_EXPENSIVE (unsigned
            IFN)
       This hook returns true if masked operation IFN (really of type
!      'internal_fn') should be considered more expensive to use than
       implementing the same operation without masking.  GCC can then try
       to use unconditional operations instead with extra selects.
  
   -- Target Hook: bool TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE (unsigned
            IFN)
       This hook returns true if masked internal function IFN (really of
!      type 'internal_fn') should be considered expensive when the mask is
       all zeros.  GCC can then try to branch around the instruction
       instead.
  
--- 39684,39709 ----
            (machine_mode MODE)
       Return the mode to use for a vector mask that holds one boolean
       result for each element of vector mode MODE.  The returned mask
!      mode can be a vector of integers (class â€˜MODE_VECTOR_INTâ€™), a
!      vector of booleans (class â€˜MODE_VECTOR_BOOLâ€™) or a scalar integer
!      (class â€˜MODE_INTâ€™).  Return an empty â€˜opt_machine_modeâ€™ if no such
       mask mode exists.
  
!      The default implementation returns a â€˜MODE_VECTOR_INTâ€™ with the
       same size and number of elements as MODE, if such a mode exists.
  
   -- Target Hook: bool
            TARGET_VECTORIZE_CONDITIONAL_OPERATION_IS_EXPENSIVE (unsigned
            IFN)
       This hook returns true if masked operation IFN (really of type
!      â€˜internal_fnâ€™) should be considered more expensive to use than
       implementing the same operation without masking.  GCC can then try
       to use unconditional operations instead with extra selects.
  
   -- Target Hook: bool TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE (unsigned
            IFN)
       This hook returns true if masked internal function IFN (really of
!      type â€˜internal_fnâ€™) should be considered expensive when the mask is
       all zeros.  GCC can then try to branch around the instruction
       instead.
  
*************** This is about addressing modes.
*** 39719,39732 ****
            MEM_VECTYPE, const_tree INDEX_TYPE, int SCALE)
       Target builtin that implements vector gather operation.
       MEM_VECTYPE is the vector type of the load and INDEX_TYPE is scalar
!      type of the index, scaled by SCALE.  The default is 'NULL_TREE'
       which means to not vectorize gather loads.
  
   -- Target Hook: tree TARGET_VECTORIZE_BUILTIN_SCATTER (const_tree
            VECTYPE, const_tree INDEX_TYPE, int SCALE)
       Target builtin that implements vector scatter operation.  VECTYPE
       is the vector type of the store and INDEX_TYPE is scalar type of
!      the index, scaled by SCALE.  The default is 'NULL_TREE' which means
       to not vectorize scatter stores.
  
   -- Target Hook: int TARGET_SIMD_CLONE_COMPUTE_VECSIZE_AND_SIMDLEN
--- 39723,39736 ----
            MEM_VECTYPE, const_tree INDEX_TYPE, int SCALE)
       Target builtin that implements vector gather operation.
       MEM_VECTYPE is the vector type of the load and INDEX_TYPE is scalar
!      type of the index, scaled by SCALE.  The default is â€˜NULL_TREEâ€™
       which means to not vectorize gather loads.
  
   -- Target Hook: tree TARGET_VECTORIZE_BUILTIN_SCATTER (const_tree
            VECTYPE, const_tree INDEX_TYPE, int SCALE)
       Target builtin that implements vector scatter operation.  VECTYPE
       is the vector type of the store and INDEX_TYPE is scalar type of
!      the index, scaled by SCALE.  The default is â€˜NULL_TREEâ€™ which means
       to not vectorize scatter stores.
  
   -- Target Hook: int TARGET_SIMD_CLONE_COMPUTE_VECSIZE_AND_SIMDLEN
*************** This is about addressing modes.
*** 39742,39748 ****
       VECSIZE_MANGLE variants that should be emitted.
  
   -- Target Hook: void TARGET_SIMD_CLONE_ADJUST (struct cgraph_node *)
!      This hook should add implicit 'attribute(target("..."))' attribute
       to SIMD clone NODE if needed.
  
   -- Target Hook: int TARGET_SIMD_CLONE_USABLE (struct cgraph_node *,
--- 39746,39752 ----
       VECSIZE_MANGLE variants that should be emitted.
  
   -- Target Hook: void TARGET_SIMD_CLONE_ADJUST (struct cgraph_node *)
!      This hook should add implicit â€˜attribute(target("..."))â€™ attribute
       to SIMD clone NODE if needed.
  
   -- Target Hook: int TARGET_SIMD_CLONE_USABLE (struct cgraph_node *,
*************** This is about addressing modes.
*** 39803,39846 ****
            TYPE, unsigned NOPS, tree *OPS)
       This hook returns the target's preferred final argument for a call
       to conditional internal function IFN (really of type
!      'internal_fn').  TYPE specifies the return type of the function and
       OPS are the operands to the conditional operation, of which there
       are NOPS.
  
!      For example, if IFN is 'IFN_COND_ADD', the hook returns a value of
!      type TYPE that should be used when 'OPS[0]' and 'OPS[1]' are
       conditionally added together.
  
       This hook is only relevant if the target supports conditional
!      patterns like 'cond_addM'.  The default implementation returns a
       zero constant of type TYPE.
  
   -- Target Hook: tree TARGET_GOACC_ADJUST_PRIVATE_DECL (location_t LOC,
            tree VAR, int LEVEL)
       This hook, if defined, is used by accelerator target back-ends to
       adjust OpenACC variable declarations that should be made private to
!      the given parallelism level (i.e.  'GOMP_DIM_GANG',
!      'GOMP_DIM_WORKER' or 'GOMP_DIM_VECTOR').  A typical use for this
!      hook is to force variable declarations at the 'gang' level to
       reside in GPU shared memory.  LOC may be used for diagnostic
       purposes.
  
!      You may also use the 'TARGET_GOACC_EXPAND_VAR_DECL' hook if the
       adjusted variable declaration needs to be expanded to RTL in a
       non-standard way.
  
   -- Target Hook: rtx TARGET_GOACC_EXPAND_VAR_DECL (tree VAR)
       This hook, if defined, is used by accelerator target back-ends to
!      expand specially handled kinds of 'VAR_DECL' expressions.  A
       particular use is to place variables with specific attributes
!      inside special accelarator memories.  A return value of 'NULL'
!      indicates that the target does not handle this 'VAR_DECL', and
       normal RTL expanding is resumed.
  
       Only define this hook if your accelerator target needs to expand
!      certain 'VAR_DECL' nodes in a way that differs from the default.
       You can also adjust private variables at OpenACC device-lowering
!      time using the 'TARGET_GOACC_ADJUST_PRIVATE_DECL' target hook.
  
   -- Target Hook: tree TARGET_GOACC_CREATE_WORKER_BROADCAST_RECORD (tree
            REC, bool SENDER, const char *NAME, unsigned HOST_WIDE_INT
--- 39807,39850 ----
            TYPE, unsigned NOPS, tree *OPS)
       This hook returns the target's preferred final argument for a call
       to conditional internal function IFN (really of type
!      â€˜internal_fnâ€™).  TYPE specifies the return type of the function and
       OPS are the operands to the conditional operation, of which there
       are NOPS.
  
!      For example, if IFN is â€˜IFN_COND_ADDâ€™, the hook returns a value of
!      type TYPE that should be used when â€˜OPS[0]â€™ and â€˜OPS[1]â€™ are
       conditionally added together.
  
       This hook is only relevant if the target supports conditional
!      patterns like â€˜cond_addMâ€™.  The default implementation returns a
       zero constant of type TYPE.
  
   -- Target Hook: tree TARGET_GOACC_ADJUST_PRIVATE_DECL (location_t LOC,
            tree VAR, int LEVEL)
       This hook, if defined, is used by accelerator target back-ends to
       adjust OpenACC variable declarations that should be made private to
!      the given parallelism level (i.e.  â€˜GOMP_DIM_GANGâ€™,
!      â€˜GOMP_DIM_WORKERâ€™ or â€˜GOMP_DIM_VECTORâ€™).  A typical use for this
!      hook is to force variable declarations at the â€˜gangâ€™ level to
       reside in GPU shared memory.  LOC may be used for diagnostic
       purposes.
  
!      You may also use the â€˜TARGET_GOACC_EXPAND_VAR_DECLâ€™ hook if the
       adjusted variable declaration needs to be expanded to RTL in a
       non-standard way.
  
   -- Target Hook: rtx TARGET_GOACC_EXPAND_VAR_DECL (tree VAR)
       This hook, if defined, is used by accelerator target back-ends to
!      expand specially handled kinds of â€˜VAR_DECLâ€™ expressions.  A
       particular use is to place variables with specific attributes
!      inside special accelarator memories.  A return value of â€˜NULLâ€™
!      indicates that the target does not handle this â€˜VAR_DECLâ€™, and
       normal RTL expanding is resumed.
  
       Only define this hook if your accelerator target needs to expand
!      certain â€˜VAR_DECLâ€™ nodes in a way that differs from the default.
       You can also adjust private variables at OpenACC device-lowering
!      time using the â€˜TARGET_GOACC_ADJUST_PRIVATE_DECLâ€™ target hook.
  
   -- Target Hook: tree TARGET_GOACC_CREATE_WORKER_BROADCAST_RECORD (tree
            REC, bool SENDER, const char *NAME, unsigned HOST_WIDE_INT
*************** example, if we have:
*** 39873,39880 ****
       static int a, b, c;
       int foo (void) { return a + b + c; }
  
!  the code for 'foo' will usually calculate three separate symbolic
! addresses: those of 'a', 'b' and 'c'.  On some targets, it would be
  better to calculate just one symbolic address and access the three
  variables relative to it.  The equivalent pseudocode would be something
  like:
--- 39877,39884 ----
       static int a, b, c;
       int foo (void) { return a + b + c; }
  
!  the code for â€˜fooâ€™ will usually calculate three separate symbolic
! addresses: those of â€˜aâ€™, â€˜bâ€™ and â€˜câ€™.  On some targets, it would be
  better to calculate just one symbolic address and access the three
  variables relative to it.  The equivalent pseudocode would be something
  like:
*************** like:
*** 39885,39897 ****
         return xr[&a - &x] + xr[&b - &x] + xr[&c - &x];
       }
  
!  (which isn't valid C). We refer to shared addresses like 'x' as
! "section anchors".  Their use is controlled by '-fsection-anchors'.
  
   The hooks below describe the target properties that GCC needs to know
  in order to make effective use of section anchors.  It won't use section
! anchors at all unless either 'TARGET_MIN_ANCHOR_OFFSET' or
! 'TARGET_MAX_ANCHOR_OFFSET' is set to a nonzero value.
  
   -- Target Hook: HOST_WIDE_INT TARGET_MIN_ANCHOR_OFFSET
       The minimum offset that should be applied to a section anchor.  On
--- 39889,39901 ----
         return xr[&a - &x] + xr[&b - &x] + xr[&c - &x];
       }
  
!  (which isn't valid C). We refer to shared addresses like â€˜xâ€™ as
! "section anchors".  Their use is controlled by â€˜-fsection-anchorsâ€™.
  
   The hooks below describe the target properties that GCC needs to know
  in order to make effective use of section anchors.  It won't use section
! anchors at all unless either â€˜TARGET_MIN_ANCHOR_OFFSETâ€™ or
! â€˜TARGET_MAX_ANCHOR_OFFSETâ€™ is set to a nonzero value.
  
   -- Target Hook: HOST_WIDE_INT TARGET_MIN_ANCHOR_OFFSET
       The minimum offset that should be applied to a section anchor.  On
*************** anchors at all unless either 'TARGET_MIN
*** 39900,39923 ****
       every mode.  The default value is 0.
  
   -- Target Hook: HOST_WIDE_INT TARGET_MAX_ANCHOR_OFFSET
!      Like 'TARGET_MIN_ANCHOR_OFFSET', but the maximum (inclusive) offset
       that should be applied to section anchors.  The default value is 0.
  
   -- Target Hook: void TARGET_ASM_OUTPUT_ANCHOR (rtx X)
       Write the assembly code to define section anchor X, which is a
!      'SYMBOL_REF' for which 'SYMBOL_REF_ANCHOR_P (X)' is true.  The hook
       is called with the assembly output position set to the beginning of
!      'SYMBOL_REF_BLOCK (X)'.
  
!      If 'ASM_OUTPUT_DEF' is available, the hook's default definition
!      uses it to define the symbol as '. + SYMBOL_REF_BLOCK_OFFSET (X)'.
!      If 'ASM_OUTPUT_DEF' is not available, the hook's default definition
!      is 'NULL', which disables the use of section anchors altogether.
  
   -- Target Hook: bool TARGET_USE_ANCHORS_FOR_SYMBOL_P (const_rtx X)
       Return true if GCC should attempt to use anchors to access
!      'SYMBOL_REF' X.  You can assume 'SYMBOL_REF_HAS_BLOCK_INFO_P (X)'
!      and '!SYMBOL_REF_ANCHOR_P (X)'.
  
       The default version is correct for most targets, but you might need
       to intercept this hook to handle things like target-specific
--- 39904,39927 ----
       every mode.  The default value is 0.
  
   -- Target Hook: HOST_WIDE_INT TARGET_MAX_ANCHOR_OFFSET
!      Like â€˜TARGET_MIN_ANCHOR_OFFSETâ€™, but the maximum (inclusive) offset
       that should be applied to section anchors.  The default value is 0.
  
   -- Target Hook: void TARGET_ASM_OUTPUT_ANCHOR (rtx X)
       Write the assembly code to define section anchor X, which is a
!      â€˜SYMBOL_REFâ€™ for which â€˜SYMBOL_REF_ANCHOR_P (X)â€™ is true.  The hook
       is called with the assembly output position set to the beginning of
!      â€˜SYMBOL_REF_BLOCK (X)â€™.
  
!      If â€˜ASM_OUTPUT_DEFâ€™ is available, the hook's default definition
!      uses it to define the symbol as â€˜. + SYMBOL_REF_BLOCK_OFFSET (X)â€™.
!      If â€˜ASM_OUTPUT_DEFâ€™ is not available, the hook's default definition
!      is â€˜NULLâ€™, which disables the use of section anchors altogether.
  
   -- Target Hook: bool TARGET_USE_ANCHORS_FOR_SYMBOL_P (const_rtx X)
       Return true if GCC should attempt to use anchors to access
!      â€˜SYMBOL_REFâ€™ X.  You can assume â€˜SYMBOL_REF_HAS_BLOCK_INFO_P (X)â€™
!      and â€˜!SYMBOL_REF_ANCHOR_P (X)â€™.
  
       The default version is correct for most targets, but you might need
       to intercept this hook to handle things like target-specific
*************** category includes most RISC machines.
*** 39938,39944 ****
  the definition and use of the condition code.  In the past the
  definition and use were always adjacent.  However, recent changes to
  support trapping arithmetic may result in the definition and user being
! in different blocks.  Thus, there may be a 'NOTE_INSN_BASIC_BLOCK'
  between them.  Additionally, the definition may be the source of
  exception handling edges.
  
--- 39942,39948 ----
  the definition and use of the condition code.  In the past the
  definition and use were always adjacent.  However, recent changes to
  support trapping arithmetic may result in the definition and user being
! in different blocks.  Thus, there may be a â€˜NOTE_INSN_BASIC_BLOCKâ€™
  between them.  Additionally, the definition may be the source of
  exception handling edges.
  
*************** definition and use of the condition code
*** 39953,39961 ****
  hard register.  If the condition code or comparison result can be placed
  in any general register, or if there are multiple condition registers,
  use a pseudo register.  Registers used to store the condition code value
! will usually have a mode that is in class 'MODE_CC'.
  
!  Alternatively, you can use 'BImode' if the comparison operator is
  specified already in the compare instruction.  In this case, you are not
  interested in most macros in this section.
  
--- 39957,39965 ----
  hard register.  If the condition code or comparison result can be placed
  in any general register, or if there are multiple condition registers,
  use a pseudo register.  Registers used to store the condition code value
! will usually have a mode that is in class â€˜MODE_CCâ€™.
  
!  Alternatively, you can use â€˜BImodeâ€™ if the comparison operator is
  specified already in the compare instruction.  In this case, you are not
  interested in most macros in this section.
  
*************** File: gccint.info,  Node: MODE_CC Condit
*** 39982,39993 ****
       which compare instruction (e.g. a signed or an unsigned comparison)
       produced the condition codes.
  
!      If other modes than 'CCmode' are required, add them to
!      'MACHINE-modes.def' and define 'SELECT_CC_MODE' to choose a mode
       given an operand of a compare.  This is needed because the modes
       have to be chosen not only during RTL generation but also, for
       example, by instruction combination.  The result of
!      'SELECT_CC_MODE' should be consistent with the mode used in the
       patterns; for example to support the case of the add on the SPARC
       discussed above, we have the pattern
  
--- 39986,39997 ----
       which compare instruction (e.g. a signed or an unsigned comparison)
       produced the condition codes.
  
!      If other modes than â€˜CCmodeâ€™ are required, add them to
!      â€˜MACHINE-modes.defâ€™ and define â€˜SELECT_CC_MODEâ€™ to choose a mode
       given an operand of a compare.  This is needed because the modes
       have to be chosen not only during RTL generation but also, for
       example, by instruction combination.  The result of
!      â€˜SELECT_CC_MODEâ€™ should be consistent with the mode used in the
       patterns; for example to support the case of the add on the SPARC
       discussed above, we have the pattern
  
*************** File: gccint.info,  Node: MODE_CC Condit
*** 40000,40007 ****
              ""
              "...")
  
!      together with a 'SELECT_CC_MODE' that returns 'CCNZmode' for
!      comparisons whose argument is a 'plus':
  
            #define SELECT_CC_MODE(OP,X,Y) \
              (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT           \
--- 40004,40011 ----
              ""
              "...")
  
!      together with a â€˜SELECT_CC_MODEâ€™ that returns â€˜CCNZmodeâ€™ for
!      comparisons whose argument is a â€˜plusâ€™:
  
            #define SELECT_CC_MODE(OP,X,Y) \
              (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT           \
*************** File: gccint.info,  Node: MODE_CC Condit
*** 40012,40056 ****
                  ? CCNZmode : CCmode))
  
       Another reason to use modes is to retain information on which
!      operands were used by the comparison; see 'REVERSIBLE_CC_MODE'
       later in this section.
  
       You should define this macro if and only if you define extra CC
!      modes in 'MACHINE-modes.def'.
  
   -- Target Hook: void TARGET_CANONICALIZE_COMPARISON (int *CODE, rtx
            *OP0, rtx *OP1, bool OP0_PRESERVE_VALUE)
       On some machines not all possible comparisons are defined, but you
       can convert an invalid comparison into a valid one.  For example,
!      the Alpha does not have a 'GT' comparison, but you can use an 'LT'
       comparison instead and swap the order of the operands.
  
       On such machines, implement this hook to do any required
       conversions.  CODE is the initial comparison code and OP0 and OP1
       are the left and right operands of the comparison, respectively.
!      If OP0_PRESERVE_VALUE is 'true' the implementation is not allowed
       to change the value of OP0 since the value might be used in RTXs
       which aren't comparisons.  E.g.  the implementation is not allowed
       to swap operands in that case.
  
       GCC will not assume that the comparison resulting from this macro
       is valid but will see if the resulting insn matches a pattern in
!      the 'md' file.
  
       You need not to implement this hook if it would never change the
       comparison code or operands.
  
   -- Macro: REVERSIBLE_CC_MODE (MODE)
       A C expression whose value is one if it is always safe to reverse a
!      comparison whose mode is MODE.  If 'SELECT_CC_MODE' can ever return
       MODE for a floating-point inequality comparison, then
!      'REVERSIBLE_CC_MODE (MODE)' must be zero.
  
       You need not define this macro if it would always returns zero or
       if the floating-point format is anything other than
!      'IEEE_FLOAT_FORMAT'.  For example, here is the definition used on
       the SPARC, where floating-point inequality comparisons are given
!      either 'CCFPEmode' or 'CCFPmode':
  
            #define REVERSIBLE_CC_MODE(MODE) \
               ((MODE) != CCFPEmode && (MODE) != CCFPmode)
--- 40016,40060 ----
                  ? CCNZmode : CCmode))
  
       Another reason to use modes is to retain information on which
!      operands were used by the comparison; see â€˜REVERSIBLE_CC_MODEâ€™
       later in this section.
  
       You should define this macro if and only if you define extra CC
!      modes in â€˜MACHINE-modes.defâ€™.
  
   -- Target Hook: void TARGET_CANONICALIZE_COMPARISON (int *CODE, rtx
            *OP0, rtx *OP1, bool OP0_PRESERVE_VALUE)
       On some machines not all possible comparisons are defined, but you
       can convert an invalid comparison into a valid one.  For example,
!      the Alpha does not have a â€˜GTâ€™ comparison, but you can use an â€˜LTâ€™
       comparison instead and swap the order of the operands.
  
       On such machines, implement this hook to do any required
       conversions.  CODE is the initial comparison code and OP0 and OP1
       are the left and right operands of the comparison, respectively.
!      If OP0_PRESERVE_VALUE is â€˜trueâ€™ the implementation is not allowed
       to change the value of OP0 since the value might be used in RTXs
       which aren't comparisons.  E.g.  the implementation is not allowed
       to swap operands in that case.
  
       GCC will not assume that the comparison resulting from this macro
       is valid but will see if the resulting insn matches a pattern in
!      the â€˜mdâ€™ file.
  
       You need not to implement this hook if it would never change the
       comparison code or operands.
  
   -- Macro: REVERSIBLE_CC_MODE (MODE)
       A C expression whose value is one if it is always safe to reverse a
!      comparison whose mode is MODE.  If â€˜SELECT_CC_MODEâ€™ can ever return
       MODE for a floating-point inequality comparison, then
!      â€˜REVERSIBLE_CC_MODE (MODE)â€™ must be zero.
  
       You need not define this macro if it would always returns zero or
       if the floating-point format is anything other than
!      â€˜IEEE_FLOAT_FORMATâ€™.  For example, here is the definition used on
       the SPARC, where floating-point inequality comparisons are given
!      either â€˜CCFPEmodeâ€™ or â€˜CCFPmodeâ€™:
  
            #define REVERSIBLE_CC_MODE(MODE) \
               ((MODE) != CCFPEmode && (MODE) != CCFPmode)
*************** File: gccint.info,  Node: MODE_CC Condit
*** 40058,40064 ****
   -- Macro: REVERSE_CONDITION (CODE, MODE)
       A C expression whose value is reversed condition code of the CODE
       for comparison done in CC_MODE MODE.  The macro is used only in
!      case 'REVERSIBLE_CC_MODE (MODE)' is nonzero.  Define this macro in
       case machine has some non-standard way how to reverse certain
       conditionals.  For instance in case all floating point conditions
       are non-trapping, compiler may freely convert unordered compares to
--- 40062,40068 ----
   -- Macro: REVERSE_CONDITION (CODE, MODE)
       A C expression whose value is reversed condition code of the CODE
       for comparison done in CC_MODE MODE.  The macro is used only in
!      case â€˜REVERSIBLE_CC_MODE (MODE)â€™ is nonzero.  Define this macro in
       case machine has some non-standard way how to reverse certain
       conditionals.  For instance in case all floating point conditions
       are non-trapping, compiler may freely convert unordered compares to
*************** File: gccint.info,  Node: MODE_CC Condit
*** 40078,40099 ****
       should set the integers to which its arguments point to the hard
       register numbers used for condition codes.  When there is only one
       such register, as is true on most systems, the integer pointed to
!      by P2 should be set to 'INVALID_REGNUM'.
  
       The default version of this hook returns false.
  
   -- Target Hook: machine_mode TARGET_CC_MODES_COMPATIBLE (machine_mode
            M1, machine_mode M2)
       On targets which use multiple condition code modes in class
!      'MODE_CC', it is sometimes the case that a comparison can be
       validly done in more than one mode.  On such a system, define this
       target hook to take two mode arguments and to return a mode in
       which both comparisons may be validly done.  If there is no such
!      mode, return 'VOIDmode'.
  
       The default version of this hook checks whether the modes are the
       same.  If they are, it returns that mode.  If they are different,
!      it returns 'VOIDmode'.
  
   -- Target Hook: unsigned int TARGET_FLAGS_REGNUM
       If the target has a dedicated flags register, and it needs to use
--- 40082,40103 ----
       should set the integers to which its arguments point to the hard
       register numbers used for condition codes.  When there is only one
       such register, as is true on most systems, the integer pointed to
!      by P2 should be set to â€˜INVALID_REGNUMâ€™.
  
       The default version of this hook returns false.
  
   -- Target Hook: machine_mode TARGET_CC_MODES_COMPATIBLE (machine_mode
            M1, machine_mode M2)
       On targets which use multiple condition code modes in class
!      â€˜MODE_CCâ€™, it is sometimes the case that a comparison can be
       validly done in more than one mode.  On such a system, define this
       target hook to take two mode arguments and to return a mode in
       which both comparisons may be validly done.  If there is no such
!      mode, return â€˜VOIDmodeâ€™.
  
       The default version of this hook checks whether the modes are the
       same.  If they are, it returns that mode.  If they are different,
!      it returns â€˜VOIDmodeâ€™.
  
   -- Target Hook: unsigned int TARGET_FLAGS_REGNUM
       If the target has a dedicated flags register, and it needs to use
*************** on the target machine.
*** 40112,40118 ****
   -- Macro: REGISTER_MOVE_COST (MODE, FROM, TO)
       A C expression for the cost of moving data of mode MODE from a
       register in class FROM to one in class TO.  The classes are
!      expressed using the enumeration values such as 'GENERAL_REGS'.  A
       value of 2 is the default; other values are interpreted relative to
       that.
  
--- 40116,40122 ----
   -- Macro: REGISTER_MOVE_COST (MODE, FROM, TO)
       A C expression for the cost of moving data of mode MODE from a
       register in class FROM to one in class TO.  The classes are
!      expressed using the enumeration values such as â€˜GENERAL_REGSâ€™.  A
       value of 2 is the default; other values are interpreted relative to
       that.
  
*************** on the target machine.
*** 40120,40141 ****
       same as TO; on some machines it is expensive to move between
       registers if they are not general registers.
  
!      If reload sees an insn consisting of a single 'set' between two
!      hard registers, and if 'REGISTER_MOVE_COST' applied to their
       classes returns a value of 2, reload does not check to ensure that
       the constraints of the insn are met.  Setting a cost of other than
       2 will allow reload to verify that the constraints are met.  You
!      should do this if the 'movM' pattern's constraints do not allow
       such copying.
  
       These macros are obsolete, new ports should use the target hook
!      'TARGET_REGISTER_MOVE_COST' instead.
  
   -- Target Hook: int TARGET_REGISTER_MOVE_COST (machine_mode MODE,
            reg_class_t FROM, reg_class_t TO)
       This target hook should return the cost of moving data of mode MODE
       from a register in class FROM to one in class TO.  The classes are
!      expressed using the enumeration values such as 'GENERAL_REGS'.  A
       value of 2 is the default; other values are interpreted relative to
       that.
  
--- 40124,40145 ----
       same as TO; on some machines it is expensive to move between
       registers if they are not general registers.
  
!      If reload sees an insn consisting of a single â€˜setâ€™ between two
!      hard registers, and if â€˜REGISTER_MOVE_COSTâ€™ applied to their
       classes returns a value of 2, reload does not check to ensure that
       the constraints of the insn are met.  Setting a cost of other than
       2 will allow reload to verify that the constraints are met.  You
!      should do this if the â€˜movMâ€™ pattern's constraints do not allow
       such copying.
  
       These macros are obsolete, new ports should use the target hook
!      â€˜TARGET_REGISTER_MOVE_COSTâ€™ instead.
  
   -- Target Hook: int TARGET_REGISTER_MOVE_COST (machine_mode MODE,
            reg_class_t FROM, reg_class_t TO)
       This target hook should return the cost of moving data of mode MODE
       from a register in class FROM to one in class TO.  The classes are
!      expressed using the enumeration values such as â€˜GENERAL_REGSâ€™.  A
       value of 2 is the default; other values are interpreted relative to
       that.
  
*************** on the target machine.
*** 40143,40154 ****
       same as TO; on some machines it is expensive to move between
       registers if they are not general registers.
  
!      If reload sees an insn consisting of a single 'set' between two
!      hard registers, and if 'TARGET_REGISTER_MOVE_COST' applied to their
       classes returns a value of 2, reload does not check to ensure that
       the constraints of the insn are met.  Setting a cost of other than
       2 will allow reload to verify that the constraints are met.  You
!      should do this if the 'movM' pattern's constraints do not allow
       such copying.
  
       The default version of this function returns 2.
--- 40147,40158 ----
       same as TO; on some machines it is expensive to move between
       registers if they are not general registers.
  
!      If reload sees an insn consisting of a single â€˜setâ€™ between two
!      hard registers, and if â€˜TARGET_REGISTER_MOVE_COSTâ€™ applied to their
       classes returns a value of 2, reload does not check to ensure that
       the constraints of the insn are met.  Setting a cost of other than
       2 will allow reload to verify that the constraints are met.  You
!      should do this if the â€˜movMâ€™ pattern's constraints do not allow
       such copying.
  
       The default version of this function returns 2.
*************** on the target machine.
*** 40157,40163 ****
       A C expression for the cost of moving data of mode MODE between a
       register of class CLASS and memory; IN is zero if the value is to
       be written to memory, nonzero if it is to be read in.  This cost is
!      relative to those in 'REGISTER_MOVE_COST'.  If moving between
       registers and memory is more expensive than between two registers,
       you should define this macro to express the relative cost.
  
--- 40161,40167 ----
       A C expression for the cost of moving data of mode MODE between a
       register of class CLASS and memory; IN is zero if the value is to
       be written to memory, nonzero if it is to be read in.  This cost is
!      relative to those in â€˜REGISTER_MOVE_COSTâ€™.  If moving between
       registers and memory is more expensive than between two registers,
       you should define this macro to express the relative cost.
  
*************** on the target machine.
*** 40168,40174 ****
       mechanism is more complex than copying via an intermediate, define
       this macro to reflect the actual cost of the move.
  
!      GCC defines the function 'memory_move_secondary_cost' if secondary
       reloads are needed.  It computes the costs due to copying via a
       secondary register.  If your machine copies from memory using a
       secondary register in the conventional way but the default base
--- 40172,40178 ----
       mechanism is more complex than copying via an intermediate, define
       this macro to reflect the actual cost of the move.
  
!      GCC defines the function â€˜memory_move_secondary_costâ€™ if secondary
       reloads are needed.  It computes the costs due to copying via a
       secondary register.  If your machine copies from memory using a
       secondary register in the conventional way but the default base
*************** on the target machine.
*** 40177,40190 ****
       to that function are the same as to this macro.
  
       These macros are obsolete, new ports should use the target hook
!      'TARGET_MEMORY_MOVE_COST' instead.
  
   -- Target Hook: int TARGET_MEMORY_MOVE_COST (machine_mode MODE,
            reg_class_t RCLASS, bool IN)
       This target hook should return the cost of moving data of mode MODE
!      between a register of class RCLASS and memory; IN is 'false' if the
!      value is to be written to memory, 'true' if it is to be read in.
!      This cost is relative to those in 'TARGET_REGISTER_MOVE_COST'.  If
       moving between registers and memory is more expensive than between
       two registers, you should add this target hook to express the
       relative cost.
--- 40181,40194 ----
       to that function are the same as to this macro.
  
       These macros are obsolete, new ports should use the target hook
!      â€˜TARGET_MEMORY_MOVE_COSTâ€™ instead.
  
   -- Target Hook: int TARGET_MEMORY_MOVE_COST (machine_mode MODE,
            reg_class_t RCLASS, bool IN)
       This target hook should return the cost of moving data of mode MODE
!      between a register of class RCLASS and memory; IN is â€˜falseâ€™ if the
!      value is to be written to memory, â€˜trueâ€™ if it is to be read in.
!      This cost is relative to those in â€˜TARGET_REGISTER_MOVE_COSTâ€™.  If
       moving between registers and memory is more expensive than between
       two registers, you should add this target hook to express the
       relative cost.
*************** on the target machine.
*** 40196,40202 ****
       mechanism is more complex than copying via an intermediate, use
       this target hook to reflect the actual cost of the move.
  
!      GCC defines the function 'memory_move_secondary_cost' if secondary
       reloads are needed.  It computes the costs due to copying via a
       secondary register.  If your machine copies from memory using a
       secondary register in the conventional way but the default base
--- 40200,40206 ----
       mechanism is more complex than copying via an intermediate, use
       this target hook to reflect the actual cost of the move.
  
!      GCC defines the function â€˜memory_move_secondary_costâ€™ if secondary
       reloads are needed.  It computes the costs due to copying via a
       secondary register.  If your machine copies from memory using a
       secondary register in the conventional way but the default base
*************** on the target machine.
*** 40212,40246 ****
       registers (also known as call-preserved registers or non-volatile
       registers).  The parameters are as follows:
  
!         * COST_TYPE is 'spill_cost_type::SAVE' for saving a register and
!           'spill_cost_type::RESTORE' for restoring a register.
  
!         * HARD_REGNO and MODE represent the whole register that the
            register allocator is considering using; of these, NREGS
            registers are fully or partially callee-saved.
  
!         * MEM_COST is the normal cost for storing (for saves) or loading
            (for restores) the NREGS registers.
  
!         * ALLOCATED_CALLEE_REGS is the set of callee-saved registers
            that are already in use.
  
!         * EXISTING_SPILLS_P is true if the register allocator has
            already decided to spill registers to memory.
  
       If EXISTING_SPILLS_P is false, the cost of a save should account
       for frame allocations in a way that is consistent with
!      'TARGET_FRAME_ALLOCATION_COST''s handling of allocations for
       spills.  Similarly, the cost of a restore should then account for
       frame deallocations in a way that is consistent with
!      'TARGET_FRAME_ALLOCATION_COST''s handling of deallocations.
  
       Note that this hook should not attempt to apply a frequency scale
       to the cost: it is the caller's responsibility to do that where
       appropriate.
  
       The default implementation returns MEM_COST, plus the allocation or
!      deallocation cost returned by 'TARGET_FRAME_ALLOCATION_COST', where
       appropriate.
  
   -- Target Hook: int TARGET_FRAME_ALLOCATION_COST (frame_cost_type
--- 40216,40250 ----
       registers (also known as call-preserved registers or non-volatile
       registers).  The parameters are as follows:
  
!         â€¢ COST_TYPE is â€˜spill_cost_type::SAVEâ€™ for saving a register and
!           â€˜spill_cost_type::RESTOREâ€™ for restoring a register.
  
!         â€¢ HARD_REGNO and MODE represent the whole register that the
            register allocator is considering using; of these, NREGS
            registers are fully or partially callee-saved.
  
!         â€¢ MEM_COST is the normal cost for storing (for saves) or loading
            (for restores) the NREGS registers.
  
!         â€¢ ALLOCATED_CALLEE_REGS is the set of callee-saved registers
            that are already in use.
  
!         â€¢ EXISTING_SPILLS_P is true if the register allocator has
            already decided to spill registers to memory.
  
       If EXISTING_SPILLS_P is false, the cost of a save should account
       for frame allocations in a way that is consistent with
!      â€˜TARGET_FRAME_ALLOCATION_COSTâ€™'s handling of allocations for
       spills.  Similarly, the cost of a restore should then account for
       frame deallocations in a way that is consistent with
!      â€˜TARGET_FRAME_ALLOCATION_COSTâ€™'s handling of deallocations.
  
       Note that this hook should not attempt to apply a frequency scale
       to the cost: it is the caller's responsibility to do that where
       appropriate.
  
       The default implementation returns MEM_COST, plus the allocation or
!      deallocation cost returned by â€˜TARGET_FRAME_ALLOCATION_COSTâ€™, where
       appropriate.
  
   -- Target Hook: int TARGET_FRAME_ALLOCATION_COST (frame_cost_type
*************** on the target machine.
*** 40256,40267 ****
       callee-saved registers; if so, ALLOCATED_CALLEE_REGS is the set of
       callee-saved registers that the allocator has used.  There might
       also be other reasons why a stack frame is already needed; for
!      example, 'get_frame_size ()' might be nonzero, or the target might
       already require a frame for target-specific reasons.
  
       When the register allocator uses this hook to cost spills, it also
!      uses 'TARGET_CALLEE_SAVE_COST' to cost new callee-saved registers,
!      passing 'false' as the EXISTING_SPILLS_P argument.  The intention
       is to allow the target to apply an apples-for-apples comparison
       between the cost of using callee-saved registers and using spills
       in cases where the allocator has not yet committed to using both
--- 40260,40271 ----
       callee-saved registers; if so, ALLOCATED_CALLEE_REGS is the set of
       callee-saved registers that the allocator has used.  There might
       also be other reasons why a stack frame is already needed; for
!      example, â€˜get_frame_size ()â€™ might be nonzero, or the target might
       already require a frame for target-specific reasons.
  
       When the register allocator uses this hook to cost spills, it also
!      uses â€˜TARGET_CALLEE_SAVE_COSTâ€™ to cost new callee-saved registers,
!      passing â€˜falseâ€™ as the EXISTING_SPILLS_P argument.  The intention
       is to allow the target to apply an apples-for-apples comparison
       between the cost of using callee-saved registers and using spills
       in cases where the allocator has not yet committed to using both
*************** on the target machine.
*** 40273,40282 ****
       A C expression for the cost of a branch instruction.  A value of 1
       is the default; other values are interpreted relative to that.
       Parameter SPEED_P is true when the branch in question should be
!      optimized for speed.  When it is false, 'BRANCH_COST' should return
       a value optimal for code size rather than performance.
       PREDICTABLE_P is true for well-predicted branches.  On many
!      architectures the 'BRANCH_COST' can be reduced then.
  
   Here are additional macros which do not specify precise relative costs,
  but only that certain actions are more expensive than GCC would
--- 40277,40286 ----
       A C expression for the cost of a branch instruction.  A value of 1
       is the default; other values are interpreted relative to that.
       Parameter SPEED_P is true when the branch in question should be
!      optimized for speed.  When it is false, â€˜BRANCH_COSTâ€™ should return
       a value optimal for code size rather than performance.
       PREDICTABLE_P is true for well-predicted branches.  On many
!      architectures the â€˜BRANCH_COSTâ€™ can be reduced then.
  
   Here are additional macros which do not specify precise relative costs,
  but only that certain actions are more expensive than GCC would
*************** ordinarily expect.
*** 40284,40290 ****
  
   -- Macro: SLOW_BYTE_ACCESS
       Define this macro as a C expression which is nonzero if accessing
!      less than a word of memory (i.e. a 'char' or a 'short') is no
       faster than accessing a word of memory, i.e., if such access
       require more than one instruction or if there is no difference in
       cost between byte and (aligned) word loads.
--- 40288,40294 ----
  
   -- Macro: SLOW_BYTE_ACCESS
       Define this macro as a C expression which is nonzero if accessing
!      less than a word of memory (i.e. a â€˜charâ€™ or a â€˜shortâ€™) is no
       faster than accessing a word of memory, i.e., if such access
       require more than one instruction or if there is no difference in
       cost between byte and (aligned) word loads.
*************** ordinarily expect.
*** 40302,40318 ****
       This hook returns true if memory accesses described by the MODE and
       ALIGNMENT parameters have a cost many times greater than aligned
       accesses, for example if they are emulated in a trap handler.  This
!      hook is invoked only for unaligned accesses, i.e. when 'ALIGNMENT <
!      GET_MODE_ALIGNMENT (MODE)'.
  
       When this hook returns true, the compiler will act as if
!      'STRICT_ALIGNMENT' were true when generating code for block moves.
       This can cause significantly more instructions to be produced.
       Therefore, do not make this hook return true if unaligned accesses
       only add a cycle or two to the time for a memory access.
  
!      The hook must return true whenever 'STRICT_ALIGNMENT' is true.  The
!      default implementation returns 'STRICT_ALIGNMENT'.
  
   -- Macro: MOVE_RATIO (SPEED)
       The threshold of number of scalar memory-to-memory move insns,
--- 40306,40322 ----
       This hook returns true if memory accesses described by the MODE and
       ALIGNMENT parameters have a cost many times greater than aligned
       accesses, for example if they are emulated in a trap handler.  This
!      hook is invoked only for unaligned accesses, i.e. when â€˜ALIGNMENT <
!      GET_MODE_ALIGNMENT (MODE)â€™.
  
       When this hook returns true, the compiler will act as if
!      â€˜STRICT_ALIGNMENTâ€™ were true when generating code for block moves.
       This can cause significantly more instructions to be produced.
       Therefore, do not make this hook return true if unaligned accesses
       only add a cycle or two to the time for a memory access.
  
!      The hook must return true whenever â€˜STRICT_ALIGNMENTâ€™ is true.  The
!      default implementation returns â€˜STRICT_ALIGNMENTâ€™.
  
   -- Macro: MOVE_RATIO (SPEED)
       The threshold of number of scalar memory-to-memory move insns,
*************** ordinarily expect.
*** 40322,40328 ****
       increased code size.
  
       Note that on machines where the corresponding move insn is a
!      'define_expand' that emits a sequence of insns, this macro counts
       the number of such sequences.
  
       The parameter SPEED is true if the code is currently being
--- 40326,40332 ----
       increased code size.
  
       Note that on machines where the corresponding move insn is a
!      â€˜define_expandâ€™ that emits a sequence of insns, this macro counts
       the number of such sequences.
  
       The parameter SPEED is true if the code is currently being
*************** ordinarily expect.
*** 40335,40353 ****
            by_pieces_operation OP, bool SPEED_P)
       GCC will attempt several strategies when asked to copy between two
       areas of memory, or to set, clear or store to memory, for example
!      when copying a 'struct'.  The 'by_pieces' infrastructure implements
       such memory operations as a sequence of load, store or move insns.
!      Alternate strategies are to expand the 'cpymem' or 'setmem' optabs,
       to emit a library call, or to emit unit-by-unit, loop-based
       operations.
  
       This target hook should return true if, for a memory operation with
!      a given SIZE and ALIGNMENT, using the 'by_pieces' infrastructure is
       expected to result in better code generation.  Both SIZE and
       ALIGNMENT are measured in terms of storage units.
  
!      The parameter OP is one of: 'CLEAR_BY_PIECES', 'MOVE_BY_PIECES',
!      'SET_BY_PIECES', 'STORE_BY_PIECES' or 'COMPARE_BY_PIECES'.  These
       describe the type of memory operation under consideration.
  
       The parameter SPEED_P is true if the code is currently being
--- 40339,40357 ----
            by_pieces_operation OP, bool SPEED_P)
       GCC will attempt several strategies when asked to copy between two
       areas of memory, or to set, clear or store to memory, for example
!      when copying a â€˜structâ€™.  The â€˜by_piecesâ€™ infrastructure implements
       such memory operations as a sequence of load, store or move insns.
!      Alternate strategies are to expand the â€˜cpymemâ€™ or â€˜setmemâ€™ optabs,
       to emit a library call, or to emit unit-by-unit, loop-based
       operations.
  
       This target hook should return true if, for a memory operation with
!      a given SIZE and ALIGNMENT, using the â€˜by_piecesâ€™ infrastructure is
       expected to result in better code generation.  Both SIZE and
       ALIGNMENT are measured in terms of storage units.
  
!      The parameter OP is one of: â€˜CLEAR_BY_PIECESâ€™, â€˜MOVE_BY_PIECESâ€™,
!      â€˜SET_BY_PIECESâ€™, â€˜STORE_BY_PIECESâ€™ or â€˜COMPARE_BY_PIECESâ€™.  These
       describe the type of memory operation under consideration.
  
       The parameter SPEED_P is true if the code is currently being
*************** ordinarily expect.
*** 40355,40372 ****
  
       Returning true for higher values of SIZE can improve code
       generation for speed if the target does not provide an
!      implementation of the 'cpymem' or 'setmem' standard names, if the
!      'cpymem' or 'setmem' implementation would be more expensive than a
       sequence of insns, or if the overhead of a library call would
       dominate that of the body of the memory operation.
  
!      Returning true for higher values of 'size' may also cause an
       increase in code size, for example where the number of insns
       emitted to perform a move would be greater than that of a library
       call.
  
   -- Target Hook: bool TARGET_OVERLAP_OP_BY_PIECES_P (void)
!      This target hook should return true if when the 'by_pieces'
       infrastructure is used, an offset adjusted unaligned memory
       operation in the smallest integer mode for the last piece operation
       of a memory region can be generated to avoid doing more than one
--- 40359,40376 ----
  
       Returning true for higher values of SIZE can improve code
       generation for speed if the target does not provide an
!      implementation of the â€˜cpymemâ€™ or â€˜setmemâ€™ standard names, if the
!      â€˜cpymemâ€™ or â€˜setmemâ€™ implementation would be more expensive than a
       sequence of insns, or if the overhead of a library call would
       dominate that of the body of the memory operation.
  
!      Returning true for higher values of â€˜sizeâ€™ may also cause an
       increase in code size, for example where the number of insns
       emitted to perform a move would be greater than that of a library
       call.
  
   -- Target Hook: bool TARGET_OVERLAP_OP_BY_PIECES_P (void)
!      This target hook should return true if when the â€˜by_piecesâ€™
       infrastructure is used, an offset adjusted unaligned memory
       operation in the smallest integer mode for the last piece operation
       of a memory region can be generated to avoid doing more than one
*************** ordinarily expect.
*** 40383,40401 ****
       comparisons by returning a negative number from this hook.
  
   -- Macro: MOVE_MAX_PIECES
!      A C expression used by 'move_by_pieces' to determine the largest
       unit a load or store used to copy memory is.  Defaults to
!      'MOVE_MAX'.
  
   -- Macro: STORE_MAX_PIECES
!      A C expression used by 'store_by_pieces' to determine the largest
!      unit a store used to memory is.  Defaults to 'MOVE_MAX_PIECES', or
!      two times the size of 'HOST_WIDE_INT', whichever is smaller.
  
   -- Macro: COMPARE_MAX_PIECES
!      A C expression used by 'compare_by_pieces' to determine the largest
       unit a load or store used to compare memory is.  Defaults to
!      'MOVE_MAX_PIECES'.
  
   -- Macro: CLEAR_RATIO (SPEED)
       The threshold of number of scalar move insns, _below_ which a
--- 40387,40405 ----
       comparisons by returning a negative number from this hook.
  
   -- Macro: MOVE_MAX_PIECES
!      A C expression used by â€˜move_by_piecesâ€™ to determine the largest
       unit a load or store used to copy memory is.  Defaults to
!      â€˜MOVE_MAXâ€™.
  
   -- Macro: STORE_MAX_PIECES
!      A C expression used by â€˜store_by_piecesâ€™ to determine the largest
!      unit a store used to memory is.  Defaults to â€˜MOVE_MAX_PIECESâ€™, or
!      two times the size of â€˜HOST_WIDE_INTâ€™, whichever is smaller.
  
   -- Macro: COMPARE_MAX_PIECES
!      A C expression used by â€˜compare_by_piecesâ€™ to determine the largest
       unit a load or store used to compare memory is.  Defaults to
!      â€˜MOVE_MAX_PIECESâ€™.
  
   -- Macro: CLEAR_RATIO (SPEED)
       The threshold of number of scalar move insns, _below_ which a
*************** ordinarily expect.
*** 40419,40465 ****
       The parameter SPEED is true if the code is currently being
       optimized for speed rather than size.
  
!      If you don't define this, it defaults to the value of 'MOVE_RATIO'.
  
   -- Macro: USE_LOAD_POST_INCREMENT (MODE)
       A C expression used to determine whether a load postincrement is a
       good thing to use for a given mode.  Defaults to the value of
!      'HAVE_POST_INCREMENT'.
  
   -- Macro: USE_LOAD_POST_DECREMENT (MODE)
       A C expression used to determine whether a load postdecrement is a
       good thing to use for a given mode.  Defaults to the value of
!      'HAVE_POST_DECREMENT'.
  
   -- Macro: USE_LOAD_PRE_INCREMENT (MODE)
       A C expression used to determine whether a load preincrement is a
       good thing to use for a given mode.  Defaults to the value of
!      'HAVE_PRE_INCREMENT'.
  
   -- Macro: USE_LOAD_PRE_DECREMENT (MODE)
       A C expression used to determine whether a load predecrement is a
       good thing to use for a given mode.  Defaults to the value of
!      'HAVE_PRE_DECREMENT'.
  
   -- Macro: USE_STORE_POST_INCREMENT (MODE)
       A C expression used to determine whether a store postincrement is a
       good thing to use for a given mode.  Defaults to the value of
!      'HAVE_POST_INCREMENT'.
  
   -- Macro: USE_STORE_POST_DECREMENT (MODE)
       A C expression used to determine whether a store postdecrement is a
       good thing to use for a given mode.  Defaults to the value of
!      'HAVE_POST_DECREMENT'.
  
   -- Macro: USE_STORE_PRE_INCREMENT (MODE)
       This macro is used to determine whether a store preincrement is a
       good thing to use for a given mode.  Defaults to the value of
!      'HAVE_PRE_INCREMENT'.
  
   -- Macro: USE_STORE_PRE_DECREMENT (MODE)
       This macro is used to determine whether a store predecrement is a
       good thing to use for a given mode.  Defaults to the value of
!      'HAVE_PRE_DECREMENT'.
  
   -- Macro: NO_FUNCTION_CSE
       Define this macro to be true if it is as good or better to call a
--- 40423,40469 ----
       The parameter SPEED is true if the code is currently being
       optimized for speed rather than size.
  
!      If you don't define this, it defaults to the value of â€˜MOVE_RATIOâ€™.
  
   -- Macro: USE_LOAD_POST_INCREMENT (MODE)
       A C expression used to determine whether a load postincrement is a
       good thing to use for a given mode.  Defaults to the value of
!      â€˜HAVE_POST_INCREMENTâ€™.
  
   -- Macro: USE_LOAD_POST_DECREMENT (MODE)
       A C expression used to determine whether a load postdecrement is a
       good thing to use for a given mode.  Defaults to the value of
!      â€˜HAVE_POST_DECREMENTâ€™.
  
   -- Macro: USE_LOAD_PRE_INCREMENT (MODE)
       A C expression used to determine whether a load preincrement is a
       good thing to use for a given mode.  Defaults to the value of
!      â€˜HAVE_PRE_INCREMENTâ€™.
  
   -- Macro: USE_LOAD_PRE_DECREMENT (MODE)
       A C expression used to determine whether a load predecrement is a
       good thing to use for a given mode.  Defaults to the value of
!      â€˜HAVE_PRE_DECREMENTâ€™.
  
   -- Macro: USE_STORE_POST_INCREMENT (MODE)
       A C expression used to determine whether a store postincrement is a
       good thing to use for a given mode.  Defaults to the value of
!      â€˜HAVE_POST_INCREMENTâ€™.
  
   -- Macro: USE_STORE_POST_DECREMENT (MODE)
       A C expression used to determine whether a store postdecrement is a
       good thing to use for a given mode.  Defaults to the value of
!      â€˜HAVE_POST_DECREMENTâ€™.
  
   -- Macro: USE_STORE_PRE_INCREMENT (MODE)
       This macro is used to determine whether a store preincrement is a
       good thing to use for a given mode.  Defaults to the value of
!      â€˜HAVE_PRE_INCREMENTâ€™.
  
   -- Macro: USE_STORE_PRE_DECREMENT (MODE)
       This macro is used to determine whether a store predecrement is a
       good thing to use for a given mode.  Defaults to the value of
!      â€˜HAVE_PRE_DECREMENTâ€™.
  
   -- Macro: NO_FUNCTION_CSE
       Define this macro to be true if it is as good or better to call a
*************** ordinarily expect.
*** 40468,40487 ****
  
   -- Macro: LOGICAL_OP_NON_SHORT_CIRCUIT
       Define this macro if a non-short-circuit operation produced by
!      'fold_range_test ()' is optimal.  This macro defaults to true if
!      'BRANCH_COST' is greater than or equal to the value 2.
  
   -- Target Hook: bool TARGET_OPTAB_SUPPORTED_P (int OP, machine_mode
            MODE1, machine_mode MODE2, optimization_type OPT_TYPE)
       Return true if the optimizers should use optab OP with modes MODE1
       and MODE2 for optimization type OPT_TYPE.  The optab is known to
!      have an associated '.md' instruction whose C condition is true.
       MODE2 is only meaningful for conversion optabs; for direct optabs
       it is a copy of MODE1.
  
!      For example, when called with OP equal to 'rint_optab' and MODE1
!      equal to 'DFmode', the hook should say whether the optimizers
!      should use optab 'rintdf2'.
  
       The default hook returns true for all inputs.
  
--- 40472,40491 ----
  
   -- Macro: LOGICAL_OP_NON_SHORT_CIRCUIT
       Define this macro if a non-short-circuit operation produced by
!      â€˜fold_range_test ()â€™ is optimal.  This macro defaults to true if
!      â€˜BRANCH_COSTâ€™ is greater than or equal to the value 2.
  
   -- Target Hook: bool TARGET_OPTAB_SUPPORTED_P (int OP, machine_mode
            MODE1, machine_mode MODE2, optimization_type OPT_TYPE)
       Return true if the optimizers should use optab OP with modes MODE1
       and MODE2 for optimization type OPT_TYPE.  The optab is known to
!      have an associated â€˜.mdâ€™ instruction whose C condition is true.
       MODE2 is only meaningful for conversion optabs; for direct optabs
       it is a copy of MODE1.
  
!      For example, when called with OP equal to â€˜rint_optabâ€™ and MODE1
!      equal to â€˜DFmodeâ€™, the hook should say whether the optimizers
!      should use optab â€˜rintdf2â€™.
  
       The default hook returns true for all inputs.
  
*************** ordinarily expect.
*** 40492,40526 ****
       The cost may depend on the precise form of the expression, which is
       available for examination in X, and the fact that X appears as
       operand OPNO of an expression with rtx code OUTER_CODE.  That is,
!      the hook can assume that there is some rtx Y such that 'GET_CODE
!      (Y) == OUTER_CODE' and such that either (a) 'XEXP (Y, OPNO) == X'
!      or (b) 'XVEC (Y, OPNO)' contains X.
  
!      MODE is X's machine mode, or for cases like 'const_int' that do not
       have a mode, the mode in which X is used.
  
!      In implementing this hook, you can use the construct 'COSTS_N_INSNS
!      (N)' to specify a cost equal to N fast instructions.
  
!      On entry to the hook, '*TOTAL' contains a default estimate for the
       cost of the expression.  The hook should modify this value as
!      necessary.  Traditionally, the default costs are 'COSTS_N_INSNS
!      (5)' for multiplications, 'COSTS_N_INSNS (7)' for division and
!      modulus operations, and 'COSTS_N_INSNS (1)' for all other
       operations.
  
!      When optimizing for code size, i.e. when 'speed' is false, this
       target hook should be used to estimate the relative size cost of an
!      expression, again relative to 'COSTS_N_INSNS'.
  
       The hook returns true when all subexpressions of X have been
!      processed, and false when 'rtx_cost' should recurse.
  
   -- Target Hook: int TARGET_ADDRESS_COST (rtx ADDRESS, machine_mode
            MODE, addr_space_t AS, bool SPEED)
       This hook computes the cost of an addressing mode that contains
       ADDRESS.  If not defined, the cost is computed from the ADDRESS
!      expression and the 'TARGET_RTX_COST' hook.
  
       For most CISC machines, the default cost is a good approximation of
       the true cost of the addressing mode.  However, on RISC machines,
--- 40496,40530 ----
       The cost may depend on the precise form of the expression, which is
       available for examination in X, and the fact that X appears as
       operand OPNO of an expression with rtx code OUTER_CODE.  That is,
!      the hook can assume that there is some rtx Y such that â€˜GET_CODE
!      (Y) == OUTER_CODEâ€™ and such that either (a) â€˜XEXP (Y, OPNO) == Xâ€™
!      or (b) â€˜XVEC (Y, OPNO)â€™ contains X.
  
!      MODE is X's machine mode, or for cases like â€˜const_intâ€™ that do not
       have a mode, the mode in which X is used.
  
!      In implementing this hook, you can use the construct â€˜COSTS_N_INSNS
!      (N)â€™ to specify a cost equal to N fast instructions.
  
!      On entry to the hook, â€˜*TOTALâ€™ contains a default estimate for the
       cost of the expression.  The hook should modify this value as
!      necessary.  Traditionally, the default costs are â€˜COSTS_N_INSNS
!      (5)â€™ for multiplications, â€˜COSTS_N_INSNS (7)â€™ for division and
!      modulus operations, and â€˜COSTS_N_INSNS (1)â€™ for all other
       operations.
  
!      When optimizing for code size, i.e. when â€˜speedâ€™ is false, this
       target hook should be used to estimate the relative size cost of an
!      expression, again relative to â€˜COSTS_N_INSNSâ€™.
  
       The hook returns true when all subexpressions of X have been
!      processed, and false when â€˜rtx_costâ€™ should recurse.
  
   -- Target Hook: int TARGET_ADDRESS_COST (rtx ADDRESS, machine_mode
            MODE, addr_space_t AS, bool SPEED)
       This hook computes the cost of an addressing mode that contains
       ADDRESS.  If not defined, the cost is computed from the ADDRESS
!      expression and the â€˜TARGET_RTX_COSTâ€™ hook.
  
       For most CISC machines, the default cost is a good approximation of
       the true cost of the addressing mode.  However, on RISC machines,
*************** ordinarily expect.
*** 40545,40553 ****
  
       On machines where an address involving more than one register is as
       cheap as an address computation involving only one register,
!      defining 'TARGET_ADDRESS_COST' to reflect this can cause two
       registers to be live over a region of code where only one would
!      have been if 'TARGET_ADDRESS_COST' were not defined in that manner.
       This effect should be considered in the definition of this macro.
       Equivalent costs should probably only be given to addresses with
       different numbers of registers on machines with lots of registers.
--- 40549,40557 ----
  
       On machines where an address involving more than one register is as
       cheap as an address computation involving only one register,
!      defining â€˜TARGET_ADDRESS_COSTâ€™ to reflect this can cause two
       registers to be live over a region of code where only one would
!      have been if â€˜TARGET_ADDRESS_COSTâ€™ were not defined in that manner.
       This effect should be considered in the definition of this macro.
       Equivalent costs should probably only be given to addresses with
       different numbers of registers on machines with lots of registers.
*************** ordinarily expect.
*** 40555,40598 ****
   -- Target Hook: int TARGET_INSN_COST (rtx_insn *INSN, bool SPEED)
       This target hook describes the relative costs of RTL instructions.
  
!      In implementing this hook, you can use the construct 'COSTS_N_INSNS
!      (N)' to specify a cost equal to N fast instructions.
  
!      When optimizing for code size, i.e. when 'speed' is false, this
       target hook should be used to estimate the relative size cost of an
!      expression, again relative to 'COSTS_N_INSNS'.
  
   -- Target Hook: unsigned int TARGET_MAX_NOCE_IFCVT_SEQ_COST (edge E)
!      This hook returns a value in the same units as 'TARGET_RTX_COSTS',
       giving the maximum acceptable cost for a sequence generated by the
       RTL if-conversion pass when conditional execution is not available.
       The RTL if-conversion pass attempts to convert conditional
       operations that would require a branch to a series of unconditional
!      operations and 'movMODEcc' insns.  This hook returns the maximum
!      cost of the unconditional instructions and the 'movMODEcc' insns.
       RTL if-conversion is cancelled if the cost of the converted
       sequence is greater than the value returned by this hook.
  
!      'e' is the edge between the basic block containing the conditional
       branch to the basic block which would be executed if the condition
       were true.
  
       The default implementation of this hook uses the
!      'max-rtl-if-conversion-[un]predictable' parameters if they are set,
!      and uses a multiple of 'BRANCH_COST' otherwise.
  
   -- Target Hook: bool TARGET_NOCE_CONVERSION_PROFITABLE_P (rtx_insn
            *SEQ, struct noce_if_info *IF_INFO)
!      This hook returns true if the instruction sequence 'seq' is a good
       candidate as a replacement for the if-convertible sequence
!      described in 'if_info'.
  
   -- Target Hook: bool TARGET_NEW_ADDRESS_PROFITABLE_P (rtx MEMREF,
            rtx_insn * INSN, rtx NEW_ADDR)
!      Return 'true' if it is profitable to replace the address in MEMREF
       with NEW_ADDR.  This allows targets to prevent the scheduler from
       undoing address optimizations.  The instruction containing the
!      memref is INSN.  The default implementation returns 'true'.
  
   -- Target Hook: bool TARGET_NO_SPECULATION_IN_DELAY_SLOTS_P (void)
       This predicate controls the use of the eager delay slot filler to
--- 40559,40602 ----
   -- Target Hook: int TARGET_INSN_COST (rtx_insn *INSN, bool SPEED)
       This target hook describes the relative costs of RTL instructions.
  
!      In implementing this hook, you can use the construct â€˜COSTS_N_INSNS
!      (N)â€™ to specify a cost equal to N fast instructions.
  
!      When optimizing for code size, i.e. when â€˜speedâ€™ is false, this
       target hook should be used to estimate the relative size cost of an
!      expression, again relative to â€˜COSTS_N_INSNSâ€™.
  
   -- Target Hook: unsigned int TARGET_MAX_NOCE_IFCVT_SEQ_COST (edge E)
!      This hook returns a value in the same units as â€˜TARGET_RTX_COSTSâ€™,
       giving the maximum acceptable cost for a sequence generated by the
       RTL if-conversion pass when conditional execution is not available.
       The RTL if-conversion pass attempts to convert conditional
       operations that would require a branch to a series of unconditional
!      operations and â€˜movMODEccâ€™ insns.  This hook returns the maximum
!      cost of the unconditional instructions and the â€˜movMODEccâ€™ insns.
       RTL if-conversion is cancelled if the cost of the converted
       sequence is greater than the value returned by this hook.
  
!      â€˜eâ€™ is the edge between the basic block containing the conditional
       branch to the basic block which would be executed if the condition
       were true.
  
       The default implementation of this hook uses the
!      â€˜max-rtl-if-conversion-[un]predictableâ€™ parameters if they are set,
!      and uses a multiple of â€˜BRANCH_COSTâ€™ otherwise.
  
   -- Target Hook: bool TARGET_NOCE_CONVERSION_PROFITABLE_P (rtx_insn
            *SEQ, struct noce_if_info *IF_INFO)
!      This hook returns true if the instruction sequence â€˜seqâ€™ is a good
       candidate as a replacement for the if-convertible sequence
!      described in â€˜if_infoâ€™.
  
   -- Target Hook: bool TARGET_NEW_ADDRESS_PROFITABLE_P (rtx MEMREF,
            rtx_insn * INSN, rtx NEW_ADDR)
!      Return â€˜trueâ€™ if it is profitable to replace the address in MEMREF
       with NEW_ADDR.  This allows targets to prevent the scheduler from
       undoing address optimizations.  The instruction containing the
!      memref is INSN.  The default implementation returns â€˜trueâ€™.
  
   -- Target Hook: bool TARGET_NO_SPECULATION_IN_DELAY_SLOTS_P (void)
       This predicate controls the use of the eager delay slot filler to
*************** ordinarily expect.
*** 40609,40616 ****
       Return an estimate of the runtime value of VAL, for use in things
       like cost calculations or profiling frequencies.  KIND is used to
       ask for the minimum, maximum, and likely estimates of the value
!      through the 'POLY_VALUE_MIN', 'POLY_VALUE_MAX' and
!      'POLY_VALUE_LIKELY' values.  The default implementation returns the
       lowest possible value of VAL.
  
   -- Target Hook: bool TARGET_AVOID_STORE_FORWARDING_P
--- 40613,40620 ----
       Return an estimate of the runtime value of VAL, for use in things
       like cost calculations or profiling frequencies.  KIND is used to
       ask for the minimum, maximum, and likely estimates of the value
!      through the â€˜POLY_VALUE_MINâ€™, â€˜POLY_VALUE_MAXâ€™ and
!      â€˜POLY_VALUE_LIKELYâ€™ values.  The default implementation returns the
       lowest possible value of VAL.
  
   -- Target Hook: bool TARGET_AVOID_STORE_FORWARDING_P
*************** them: try the first ones in this list fi
*** 40639,40660 ****
       Although the insn scheduler can define itself the possibility of
       issue an insn on the same cycle, the value can serve as an
       additional constraint to issue insns on the same simulated
!      processor cycle (see hooks 'TARGET_SCHED_REORDER' and
!      'TARGET_SCHED_REORDER2').  This value must be constant over the
       entire compilation.  If you need it to vary depending on what the
!      instructions are, you must use 'TARGET_SCHED_VARIABLE_ISSUE'.
  
   -- Target Hook: int TARGET_SCHED_VARIABLE_ISSUE (FILE *FILE, int
            VERBOSE, rtx_insn *INSN, int MORE)
       This hook is executed by the scheduler after it has scheduled an
       insn from the ready list.  It should return the number of insns
       which can still be issued in the current cycle.  The default is
!      'MORE - 1' for insns other than 'CLOBBER' and 'USE', which normally
       are not counted against the issue rate.  You should define this
       hook if some insns take more machine resources than others, so that
       fewer insns can follow them in the same cycle.  FILE is either a
       null pointer, or a stdio stream to write any debug output to.
!      VERBOSE is the verbose level provided by '-fsched-verbose-N'.  INSN
       is the instruction that was scheduled.
  
   -- Target Hook: int TARGET_SCHED_ADJUST_COST (rtx_insn *INSN, int
--- 40643,40664 ----
       Although the insn scheduler can define itself the possibility of
       issue an insn on the same cycle, the value can serve as an
       additional constraint to issue insns on the same simulated
!      processor cycle (see hooks â€˜TARGET_SCHED_REORDERâ€™ and
!      â€˜TARGET_SCHED_REORDER2â€™).  This value must be constant over the
       entire compilation.  If you need it to vary depending on what the
!      instructions are, you must use â€˜TARGET_SCHED_VARIABLE_ISSUEâ€™.
  
   -- Target Hook: int TARGET_SCHED_VARIABLE_ISSUE (FILE *FILE, int
            VERBOSE, rtx_insn *INSN, int MORE)
       This hook is executed by the scheduler after it has scheduled an
       insn from the ready list.  It should return the number of insns
       which can still be issued in the current cycle.  The default is
!      â€˜MORE - 1â€™ for insns other than â€˜CLOBBERâ€™ and â€˜USEâ€™, which normally
       are not counted against the issue rate.  You should define this
       hook if some insns take more machine resources than others, so that
       fewer insns can follow them in the same cycle.  FILE is either a
       null pointer, or a stdio stream to write any debug output to.
!      VERBOSE is the verbose level provided by â€˜-fsched-verbose-Nâ€™.  INSN
       is the instruction that was scheduled.
  
   -- Target Hook: int TARGET_SCHED_ADJUST_COST (rtx_insn *INSN, int
*************** them: try the first ones in this list fi
*** 40684,40708 ****
            rtx_insn **READY, int *N_READYP, int CLOCK)
       This hook is executed by the scheduler after it has scheduled the
       ready list, to allow the machine description to reorder it (for
!      example to combine two small instructions together on 'VLIW'
       machines).  FILE is either a null pointer, or a stdio stream to
       write any debug output to.  VERBOSE is the verbose level provided
!      by '-fsched-verbose-N'.  READY is a pointer to the ready list of
       instructions that are ready to be scheduled.  N_READYP is a pointer
       to the number of elements in the ready list.  The scheduler reads
!      the ready list in reverse order, starting with READY[*N_READYP - 1]
       and going to READY[0].  CLOCK is the timer tick of the scheduler.
       You may modify the ready list and the number of ready insns.  The
       return value is the number of insns that can issue this cycle;
!      normally this is just 'issue_rate'.  See also
!      'TARGET_SCHED_REORDER2'.
  
   -- Target Hook: int TARGET_SCHED_REORDER2 (FILE *FILE, int VERBOSE,
            rtx_insn **READY, int *N_READYP, int CLOCK)
!      Like 'TARGET_SCHED_REORDER', but called at a different time.  That
       function is called whenever the scheduler starts a new cycle.  This
       one is called once per iteration over a cycle, immediately after
!      'TARGET_SCHED_VARIABLE_ISSUE'; it can reorder the ready list and
       return the number of insns to be scheduled in the same cycle.
       Defining this hook can be useful if there are frequent situations
       where scheduling one insn causes other insns to become ready in the
--- 40688,40712 ----
            rtx_insn **READY, int *N_READYP, int CLOCK)
       This hook is executed by the scheduler after it has scheduled the
       ready list, to allow the machine description to reorder it (for
!      example to combine two small instructions together on â€˜VLIWâ€™
       machines).  FILE is either a null pointer, or a stdio stream to
       write any debug output to.  VERBOSE is the verbose level provided
!      by â€˜-fsched-verbose-Nâ€™.  READY is a pointer to the ready list of
       instructions that are ready to be scheduled.  N_READYP is a pointer
       to the number of elements in the ready list.  The scheduler reads
!      the ready list in reverse order, starting with READY[*N_READYP âˆ’ 1]
       and going to READY[0].  CLOCK is the timer tick of the scheduler.
       You may modify the ready list and the number of ready insns.  The
       return value is the number of insns that can issue this cycle;
!      normally this is just â€˜issue_rateâ€™.  See also
!      â€˜TARGET_SCHED_REORDER2â€™.
  
   -- Target Hook: int TARGET_SCHED_REORDER2 (FILE *FILE, int VERBOSE,
            rtx_insn **READY, int *N_READYP, int CLOCK)
!      Like â€˜TARGET_SCHED_REORDERâ€™, but called at a different time.  That
       function is called whenever the scheduler starts a new cycle.  This
       one is called once per iteration over a cycle, immediately after
!      â€˜TARGET_SCHED_VARIABLE_ISSUEâ€™; it can reorder the ready list and
       return the number of insns to be scheduled in the same cycle.
       Defining this hook can be useful if there are frequent situations
       where scheduling one insn causes other insns to become ready in the
*************** them: try the first ones in this list fi
*** 40738,40770 ****
       This hook is executed by the scheduler at the beginning of each
       block of instructions that are to be scheduled.  FILE is either a
       null pointer, or a stdio stream to write any debug output to.
!      VERBOSE is the verbose level provided by '-fsched-verbose-N'.
       MAX_READY is the maximum number of insns in the current scheduling
       region that can be live at the same time.  This can be used to
       allocate scratch space if it is needed, e.g. by
!      'TARGET_SCHED_REORDER'.
  
   -- Target Hook: void TARGET_SCHED_FINISH (FILE *FILE, int VERBOSE)
       This hook is executed by the scheduler at the end of each block of
       instructions that are to be scheduled.  It can be used to perform
       cleanup of any actions done by the other scheduling hooks.  FILE is
       either a null pointer, or a stdio stream to write any debug output
!      to.  VERBOSE is the verbose level provided by '-fsched-verbose-N'.
  
   -- Target Hook: void TARGET_SCHED_INIT_GLOBAL (FILE *FILE, int VERBOSE,
            int OLD_MAX_UID)
       This hook is executed by the scheduler after function level
       initializations.  FILE is either a null pointer, or a stdio stream
       to write any debug output to.  VERBOSE is the verbose level
!      provided by '-fsched-verbose-N'.  OLD_MAX_UID is the maximum insn
       uid when scheduling begins.
  
   -- Target Hook: void TARGET_SCHED_FINISH_GLOBAL (FILE *FILE, int
            VERBOSE)
       This is the cleanup hook corresponding to
!      'TARGET_SCHED_INIT_GLOBAL'.  FILE is either a null pointer, or a
       stdio stream to write any debug output to.  VERBOSE is the verbose
!      level provided by '-fsched-verbose-N'.
  
   -- Target Hook: rtx TARGET_SCHED_DFA_PRE_CYCLE_INSN (void)
       The hook returns an RTL insn.  The automaton state used in the
--- 40742,40774 ----
       This hook is executed by the scheduler at the beginning of each
       block of instructions that are to be scheduled.  FILE is either a
       null pointer, or a stdio stream to write any debug output to.
!      VERBOSE is the verbose level provided by â€˜-fsched-verbose-Nâ€™.
       MAX_READY is the maximum number of insns in the current scheduling
       region that can be live at the same time.  This can be used to
       allocate scratch space if it is needed, e.g. by
!      â€˜TARGET_SCHED_REORDERâ€™.
  
   -- Target Hook: void TARGET_SCHED_FINISH (FILE *FILE, int VERBOSE)
       This hook is executed by the scheduler at the end of each block of
       instructions that are to be scheduled.  It can be used to perform
       cleanup of any actions done by the other scheduling hooks.  FILE is
       either a null pointer, or a stdio stream to write any debug output
!      to.  VERBOSE is the verbose level provided by â€˜-fsched-verbose-Nâ€™.
  
   -- Target Hook: void TARGET_SCHED_INIT_GLOBAL (FILE *FILE, int VERBOSE,
            int OLD_MAX_UID)
       This hook is executed by the scheduler after function level
       initializations.  FILE is either a null pointer, or a stdio stream
       to write any debug output to.  VERBOSE is the verbose level
!      provided by â€˜-fsched-verbose-Nâ€™.  OLD_MAX_UID is the maximum insn
       uid when scheduling begins.
  
   -- Target Hook: void TARGET_SCHED_FINISH_GLOBAL (FILE *FILE, int
            VERBOSE)
       This is the cleanup hook corresponding to
!      â€˜TARGET_SCHED_INIT_GLOBALâ€™.  FILE is either a null pointer, or a
       stdio stream to write any debug output to.  VERBOSE is the verbose
!      level provided by â€˜-fsched-verbose-Nâ€™.
  
   -- Target Hook: rtx TARGET_SCHED_DFA_PRE_CYCLE_INSN (void)
       The hook returns an RTL insn.  The automaton state used in the
*************** them: try the first ones in this list fi
*** 40779,40803 ****
       The hook can be used to initialize data used by the previous hook.
  
   -- Target Hook: rtx_insn * TARGET_SCHED_DFA_POST_CYCLE_INSN (void)
!      The hook is analogous to 'TARGET_SCHED_DFA_PRE_CYCLE_INSN' but used
       to changed the state as if the insn were scheduled when the new
       simulated processor cycle finishes.
  
   -- Target Hook: void TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN (void)
!      The hook is analogous to 'TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN' but
       used to initialize data used by the previous hook.
  
   -- Target Hook: void TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE (void)
       The hook to notify target that the current simulated cycle is about
       to finish.  The hook is analogous to
!      'TARGET_SCHED_DFA_PRE_CYCLE_INSN' but used to change the state in
       more complicated situations - e.g., when advancing state on a
       single insn is not enough.
  
   -- Target Hook: void TARGET_SCHED_DFA_POST_ADVANCE_CYCLE (void)
       The hook to notify target that new simulated cycle has just
       started.  The hook is analogous to
!      'TARGET_SCHED_DFA_POST_CYCLE_INSN' but used to change the state in
       more complicated situations - e.g., when advancing state on a
       single insn is not enough.
  
--- 40783,40807 ----
       The hook can be used to initialize data used by the previous hook.
  
   -- Target Hook: rtx_insn * TARGET_SCHED_DFA_POST_CYCLE_INSN (void)
!      The hook is analogous to â€˜TARGET_SCHED_DFA_PRE_CYCLE_INSNâ€™ but used
       to changed the state as if the insn were scheduled when the new
       simulated processor cycle finishes.
  
   -- Target Hook: void TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN (void)
!      The hook is analogous to â€˜TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSNâ€™ but
       used to initialize data used by the previous hook.
  
   -- Target Hook: void TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE (void)
       The hook to notify target that the current simulated cycle is about
       to finish.  The hook is analogous to
!      â€˜TARGET_SCHED_DFA_PRE_CYCLE_INSNâ€™ but used to change the state in
       more complicated situations - e.g., when advancing state on a
       single insn is not enough.
  
   -- Target Hook: void TARGET_SCHED_DFA_POST_ADVANCE_CYCLE (void)
       The hook to notify target that new simulated cycle has just
       started.  The hook is analogous to
!      â€˜TARGET_SCHED_DFA_POST_CYCLE_INSNâ€™ but used to change the state in
       more complicated situations - e.g., when advancing state on a
       single insn is not enough.
  
*************** them: try the first ones in this list fi
*** 40807,40813 ****
       queue for the DFA-based insn scheduler.  Usually the scheduler
       chooses the first insn from the queue.  If the hook returns a
       positive value, an additional scheduler code tries all permutations
!      of 'TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD ()' subsequent
       ready insns to choose an insn whose issue will result in maximal
       number of issued insns on the same cycle.  For the VLIW processor,
       the code could actually solve the problem of packing simple insns
--- 40811,40817 ----
       queue for the DFA-based insn scheduler.  Usually the scheduler
       chooses the first insn from the queue.  If the hook returns a
       positive value, an additional scheduler code tries all permutations
!      of â€˜TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD ()â€™ subsequent
       ready insns to choose an insn whose issue will result in maximal
       number of issued insns on the same cycle.  For the VLIW processor,
       the code could actually solve the problem of packing simple insns
*************** them: try the first ones in this list fi
*** 40898,40906 ****
       _DEP is the dependence being evaluated.  The second parameter COST
       is the cost of the dependence as estimated by the scheduler, and
       the third parameter DISTANCE is the distance in cycles between the
!      two insns.  The hook returns 'true' if considering the distance
       between the two insns the dependence between them is considered
!      costly by the target, and 'false' otherwise.
  
       Defining this hook can be useful in multiple-issue out-of-order
       machines, where (a) it's practically hopeless to predict the actual
--- 40902,40910 ----
       _DEP is the dependence being evaluated.  The second parameter COST
       is the cost of the dependence as estimated by the scheduler, and
       the third parameter DISTANCE is the distance in cycles between the
!      two insns.  The hook returns â€˜trueâ€™ if considering the distance
       between the two insns the dependence between them is considered
!      costly by the target, and â€˜falseâ€™ otherwise.
  
       Defining this hook can be useful in multiple-issue out-of-order
       machines, where (a) it's practically hopeless to predict the actual
*************** them: try the first ones in this list fi
*** 40945,40951 ****
       speculatively.  The hook is used to check if the pattern of INSN
       has a speculative version and, in case of successful check, to
       generate that speculative pattern.  The hook should return 1, if
!      the instruction has a speculative form, or -1, if it doesn't.
       REQUEST describes the type of requested speculation.  If the return
       value equals 1 then NEW_PAT is assigned the generated speculative
       pattern.
--- 40949,40955 ----
       speculatively.  The hook is used to check if the pattern of INSN
       has a speculative version and, in case of successful check, to
       generate that speculative pattern.  The hook should return 1, if
!      the instruction has a speculative form, or âˆ’1, if it doesn't.
       REQUEST describes the type of requested speculation.  If the return
       value equals 1 then NEW_PAT is assigned the generated speculative
       pattern.
*************** them: try the first ones in this list fi
*** 40953,40961 ****
   -- Target Hook: bool TARGET_SCHED_NEEDS_BLOCK_P (unsigned int
            DEP_STATUS)
       This hook is called by the insn scheduler during generation of
!      recovery code for INSN.  It should return 'true', if the
       corresponding check instruction should branch to recovery code, or
!      'false' otherwise.
  
   -- Target Hook: rtx TARGET_SCHED_GEN_SPEC_CHECK (rtx_insn *INSN,
            rtx_insn *LABEL, unsigned int DS)
--- 40957,40965 ----
   -- Target Hook: bool TARGET_SCHED_NEEDS_BLOCK_P (unsigned int
            DEP_STATUS)
       This hook is called by the insn scheduler during generation of
!      recovery code for INSN.  It should return â€˜trueâ€™, if the
       corresponding check instruction should branch to recovery code, or
!      â€˜falseâ€™ otherwise.
  
   -- Target Hook: rtx TARGET_SCHED_GEN_SPEC_CHECK (rtx_insn *INSN,
            rtx_insn *LABEL, unsigned int DS)
*************** them: try the first ones in this list fi
*** 40981,40987 ****
       usually because the instruction is too expensive to get this wrong.
       Often such instructions have long latency, and often they are not
       fully modeled in the pipeline descriptions.  This hook should
!      return 'false' if INSN should not be speculated.
  
   -- Target Hook: int TARGET_SCHED_SMS_RES_MII (struct ddg *G)
       This hook is called by the swing modulo scheduler to calculate a
--- 40985,40991 ----
       usually because the instruction is too expensive to get this wrong.
       Often such instructions have long latency, and often they are not
       fully modeled in the pipeline descriptions.  This hook should
!      return â€˜falseâ€™ if INSN should not be speculated.
  
   -- Target Hook: int TARGET_SCHED_SMS_RES_MII (struct ddg *G)
       This hook is called by the swing modulo scheduler to calculate a
*************** File: gccint.info,  Node: Sections,  Nex
*** 41096,41135 ****
  ==========================================================
  
  An object file is divided into sections containing different types of
! data.  In the most common case, there are three sections: the "text
! section", which holds instructions and read-only data; the "data
! section", which holds initialized writable data; and the "bss section",
  which holds uninitialized data.  Some systems have other kinds of
  sections.
  
!  'varasm.cc' provides several well-known sections, such as
! 'text_section', 'data_section' and 'bss_section'.  The normal way of
! controlling a 'FOO_section' variable is to define the associated
! 'FOO_SECTION_ASM_OP' macro, as described below.  The macros are only
! read once, when 'varasm.cc' initializes itself, so their values must be
  run-time constants.  They may however depend on command-line flags.
  
!  _Note:_ Some run-time files, such 'crtstuff.c', also make use of the
! 'FOO_SECTION_ASM_OP' macros, and expect them to be string literals.
  
   Some assemblers require a different string to be written every time a
  section is selected.  If your assembler falls into this category, you
! should define the 'TARGET_ASM_INIT_SECTIONS' hook and use
! 'get_unnamed_section' to set up the sections.
  
!  You must always create a 'text_section', either by defining
! 'TEXT_SECTION_ASM_OP' or by initializing 'text_section' in
! 'TARGET_ASM_INIT_SECTIONS'.  The same is true of 'data_section' and
! 'DATA_SECTION_ASM_OP'.  If you do not create a distinct
! 'readonly_data_section', the default is to reuse 'text_section'.
  
!  All the other 'varasm.cc' sections are optional, and are null if the
  target does not provide them.
  
   -- Macro: TEXT_SECTION_ASM_OP
       A C expression whose value is a string, including spacing,
       containing the assembler operation that should precede instructions
!      and read-only data.  Normally '"\t.text"' is right.
  
   -- Macro: HOT_TEXT_SECTION_NAME
       If defined, a C string constant for the name of the section
--- 41100,41139 ----
  ==========================================================
  
  An object file is divided into sections containing different types of
! data.  In the most common case, there are three sections: the â€œtext
! sectionâ€�, which holds instructions and read-only data; the â€œdata
! sectionâ€�, which holds initialized writable data; and the â€œbss sectionâ€�,
  which holds uninitialized data.  Some systems have other kinds of
  sections.
  
!  â€˜varasm.ccâ€™ provides several well-known sections, such as
! â€˜text_sectionâ€™, â€˜data_sectionâ€™ and â€˜bss_sectionâ€™.  The normal way of
! controlling a â€˜FOO_sectionâ€™ variable is to define the associated
! â€˜FOO_SECTION_ASM_OPâ€™ macro, as described below.  The macros are only
! read once, when â€˜varasm.ccâ€™ initializes itself, so their values must be
  run-time constants.  They may however depend on command-line flags.
  
!  _Note:_ Some run-time files, such â€˜crtstuff.câ€™, also make use of the
! â€˜FOO_SECTION_ASM_OPâ€™ macros, and expect them to be string literals.
  
   Some assemblers require a different string to be written every time a
  section is selected.  If your assembler falls into this category, you
! should define the â€˜TARGET_ASM_INIT_SECTIONSâ€™ hook and use
! â€˜get_unnamed_sectionâ€™ to set up the sections.
  
!  You must always create a â€˜text_sectionâ€™, either by defining
! â€˜TEXT_SECTION_ASM_OPâ€™ or by initializing â€˜text_sectionâ€™ in
! â€˜TARGET_ASM_INIT_SECTIONSâ€™.  The same is true of â€˜data_sectionâ€™ and
! â€˜DATA_SECTION_ASM_OPâ€™.  If you do not create a distinct
! â€˜readonly_data_sectionâ€™, the default is to reuse â€˜text_sectionâ€™.
  
!  All the other â€˜varasm.ccâ€™ sections are optional, and are null if the
  target does not provide them.
  
   -- Macro: TEXT_SECTION_ASM_OP
       A C expression whose value is a string, including spacing,
       containing the assembler operation that should precede instructions
!      and read-only data.  Normally â€˜"\t.text"â€™ is right.
  
   -- Macro: HOT_TEXT_SECTION_NAME
       If defined, a C string constant for the name of the section
*************** target does not provide them.
*** 41144,41150 ****
   -- Macro: DATA_SECTION_ASM_OP
       A C expression whose value is a string, including spacing,
       containing the assembler operation to identify the following data
!      as writable initialized data.  Normally '"\t.data"' is right.
  
   -- Macro: SDATA_SECTION_ASM_OP
       If defined, a C expression whose value is a string, including
--- 41148,41154 ----
   -- Macro: DATA_SECTION_ASM_OP
       A C expression whose value is a string, including spacing,
       containing the assembler operation to identify the following data
!      as writable initialized data.  Normally â€˜"\t.data"â€™ is right.
  
   -- Macro: SDATA_SECTION_ASM_OP
       If defined, a C expression whose value is a string, including
*************** target does not provide them.
*** 41160,41168 ****
       If defined, a C expression whose value is a string, including
       spacing, containing the assembler operation to identify the
       following data as uninitialized global data.  If not defined, and
!      'ASM_OUTPUT_ALIGNED_BSS' not defined, uninitialized global data
!      will be output in the data section if '-fno-common' is passed,
!      otherwise 'ASM_OUTPUT_COMMON' will be used.
  
   -- Macro: SBSS_SECTION_ASM_OP
       If defined, a C expression whose value is a string, including
--- 41164,41172 ----
       If defined, a C expression whose value is a string, including
       spacing, containing the assembler operation to identify the
       following data as uninitialized global data.  If not defined, and
!      â€˜ASM_OUTPUT_ALIGNED_BSSâ€™ not defined, uninitialized global data
!      will be output in the data section if â€˜-fno-commonâ€™ is passed,
!      otherwise â€˜ASM_OUTPUT_COMMONâ€™ will be used.
  
   -- Macro: SBSS_SECTION_ASM_OP
       If defined, a C expression whose value is a string, including
*************** target does not provide them.
*** 41172,41190 ****
   -- Macro: TLS_COMMON_ASM_OP
       If defined, a C expression whose value is a string containing the
       assembler operation to identify the following data as thread-local
!      common data.  The default is '".tls_common"'.
  
   -- Macro: TLS_SECTION_ASM_FLAG
       If defined, a C expression whose value is a character constant
       containing the flag used to mark a section as a TLS section.  The
!      default is ''T''.
  
   -- Macro: INIT_SECTION_ASM_OP
       If defined, a C expression whose value is a string, including
       spacing, containing the assembler operation to identify the
       following data as initialization code.  If not defined, GCC will
       assume such a section does not exist.  This section has no
!      corresponding 'init_section' variable; it is used entirely in
       runtime code.
  
   -- Macro: FINI_SECTION_ASM_OP
--- 41176,41194 ----
   -- Macro: TLS_COMMON_ASM_OP
       If defined, a C expression whose value is a string containing the
       assembler operation to identify the following data as thread-local
!      common data.  The default is â€˜".tls_common"â€™.
  
   -- Macro: TLS_SECTION_ASM_FLAG
       If defined, a C expression whose value is a character constant
       containing the flag used to mark a section as a TLS section.  The
!      default is â€˜'T'â€™.
  
   -- Macro: INIT_SECTION_ASM_OP
       If defined, a C expression whose value is a string, including
       spacing, containing the assembler operation to identify the
       following data as initialization code.  If not defined, GCC will
       assume such a section does not exist.  This section has no
!      corresponding â€˜init_sectionâ€™ variable; it is used entirely in
       runtime code.
  
   -- Macro: FINI_SECTION_ASM_OP
*************** target does not provide them.
*** 41192,41224 ****
       spacing, containing the assembler operation to identify the
       following data as finalization code.  If not defined, GCC will
       assume such a section does not exist.  This section has no
!      corresponding 'fini_section' variable; it is used entirely in
       runtime code.
  
   -- Macro: INIT_ARRAY_SECTION_ASM_OP
       If defined, a C expression whose value is a string, including
       spacing, containing the assembler operation to identify the
!      following data as part of the '.init_array' (or equivalent)
       section.  If not defined, GCC will assume such a section does not
!      exist.  Do not define both this macro and 'INIT_SECTION_ASM_OP'.
  
   -- Macro: FINI_ARRAY_SECTION_ASM_OP
       If defined, a C expression whose value is a string, including
       spacing, containing the assembler operation to identify the
!      following data as part of the '.fini_array' (or equivalent)
       section.  If not defined, GCC will assume such a section does not
!      exist.  Do not define both this macro and 'FINI_SECTION_ASM_OP'.
  
   -- Macro: MACH_DEP_SECTION_ASM_FLAG
       If defined, a C expression whose value is a character constant
       containing the flag used to mark a machine-dependent section.  This
!      corresponds to the 'SECTION_MACH_DEP' section flag.
  
   -- Macro: CRT_CALL_STATIC_FUNCTION (SECTION_OP, FUNCTION)
       If defined, an ASM statement that switches to a different section
       via SECTION_OP, calls FUNCTION, and switches back to the text
!      section.  This is used in 'crtstuff.c' if 'INIT_SECTION_ASM_OP' or
!      'FINI_SECTION_ASM_OP' to calls to initialization and finalization
       functions from the init and fini sections.  By default, this macro
       uses a simple function call.  Some ports need hand-crafted assembly
       code to avoid dependencies on registers initialized in the function
--- 41196,41228 ----
       spacing, containing the assembler operation to identify the
       following data as finalization code.  If not defined, GCC will
       assume such a section does not exist.  This section has no
!      corresponding â€˜fini_sectionâ€™ variable; it is used entirely in
       runtime code.
  
   -- Macro: INIT_ARRAY_SECTION_ASM_OP
       If defined, a C expression whose value is a string, including
       spacing, containing the assembler operation to identify the
!      following data as part of the â€˜.init_arrayâ€™ (or equivalent)
       section.  If not defined, GCC will assume such a section does not
!      exist.  Do not define both this macro and â€˜INIT_SECTION_ASM_OPâ€™.
  
   -- Macro: FINI_ARRAY_SECTION_ASM_OP
       If defined, a C expression whose value is a string, including
       spacing, containing the assembler operation to identify the
!      following data as part of the â€˜.fini_arrayâ€™ (or equivalent)
       section.  If not defined, GCC will assume such a section does not
!      exist.  Do not define both this macro and â€˜FINI_SECTION_ASM_OPâ€™.
  
   -- Macro: MACH_DEP_SECTION_ASM_FLAG
       If defined, a C expression whose value is a character constant
       containing the flag used to mark a machine-dependent section.  This
!      corresponds to the â€˜SECTION_MACH_DEPâ€™ section flag.
  
   -- Macro: CRT_CALL_STATIC_FUNCTION (SECTION_OP, FUNCTION)
       If defined, an ASM statement that switches to a different section
       via SECTION_OP, calls FUNCTION, and switches back to the text
!      section.  This is used in â€˜crtstuff.câ€™ if â€˜INIT_SECTION_ASM_OPâ€™ or
!      â€˜FINI_SECTION_ASM_OPâ€™ to calls to initialization and finalization
       functions from the init and fini sections.  By default, this macro
       uses a simple function call.  Some ports need hand-crafted assembly
       code to avoid dependencies on registers initialized in the function
*************** target does not provide them.
*** 41231,41252 ****
       when the target has options for optimizing access to small data,
       and you want the crtstuff and libgcc routines to be conservative in
       what they expect of your application yet liberal in what your
!      application expects.  For example, for targets with a '.sdata'
!      section (like MIPS), you could compile crtstuff with '-G 0' so that
       it doesn't require small data support from your application, but
!      use this macro to put small data into '.sdata' so that your
       application can access these variables whether it uses small data
       or not.
  
   -- Macro: FORCE_CODE_SECTION_ALIGN
       If defined, an ASM statement that aligns a code section to some
       arbitrary boundary.  This is used to force all fragments of the
!      '.init' and '.fini' sections to have to same alignment and thus
       prevent the linker from having to add any padding.
  
   -- Macro: JUMP_TABLES_IN_TEXT_SECTION
       Define this macro to be an expression with a nonzero value if jump
!      tables (for 'tablejump' insns) should be output in the text
       section, along with the assembler instructions.  Otherwise, the
       readonly data section is used.
  
--- 41235,41256 ----
       when the target has options for optimizing access to small data,
       and you want the crtstuff and libgcc routines to be conservative in
       what they expect of your application yet liberal in what your
!      application expects.  For example, for targets with a â€˜.sdataâ€™
!      section (like MIPS), you could compile crtstuff with â€˜-G 0â€™ so that
       it doesn't require small data support from your application, but
!      use this macro to put small data into â€˜.sdataâ€™ so that your
       application can access these variables whether it uses small data
       or not.
  
   -- Macro: FORCE_CODE_SECTION_ALIGN
       If defined, an ASM statement that aligns a code section to some
       arbitrary boundary.  This is used to force all fragments of the
!      â€˜.initâ€™ and â€˜.finiâ€™ sections to have to same alignment and thus
       prevent the linker from having to add any padding.
  
   -- Macro: JUMP_TABLES_IN_TEXT_SECTION
       Define this macro to be an expression with a nonzero value if jump
!      tables (for â€˜tablejumpâ€™ insns) should be output in the text
       section, along with the assembler instructions.  Otherwise, the
       readonly data section is used.
  
*************** target does not provide them.
*** 41255,41261 ****
  
   -- Target Hook: void TARGET_ASM_INIT_SECTIONS (void)
       Define this hook if you need to do something special to set up the
!      'varasm.cc' sections, or if your target has some special sections
       of its own that you need to create.
  
       GCC calls this hook after processing the command line, but before
--- 41259,41265 ----
  
   -- Target Hook: void TARGET_ASM_INIT_SECTIONS (void)
       Define this hook if you need to do something special to set up the
!      â€˜varasm.ccâ€™ sections, or if your target has some special sections
       of its own that you need to create.
  
       GCC calls this hook after processing the command line, but before
*************** target does not provide them.
*** 41268,41274 ****
       should be placed in a read-write section; bit 0 should be set if
       local relocations should be placed in a read-write section.
  
!      The default version of this function returns 3 when '-fpic' is in
       effect, and 0 otherwise.  The hook is typically redefined when the
       target cannot support (some kinds of) dynamic relocations in
       read-only sections even in executables.
--- 41272,41278 ----
       should be placed in a read-write section; bit 0 should be set if
       local relocations should be placed in a read-write section.
  
!      The default version of this function returns 3 when â€˜-fpicâ€™ is in
       effect, and 0 otherwise.  The hook is typically redefined when the
       target cannot support (some kinds of) dynamic relocations in
       read-only sections even in executables.
*************** target does not provide them.
*** 41283,41331 ****
   -- Target Hook: section * TARGET_ASM_SELECT_SECTION (tree EXP, int
            RELOC, unsigned HOST_WIDE_INT ALIGN)
       Return the section into which EXP should be placed.  You can assume
!      that EXP is either a 'VAR_DECL' node or a constant of some sort.
       RELOC indicates whether the initial value of EXP requires link-time
       relocations.  Bit 0 is set when variable contains local relocations
       only, while bit 1 is set for global relocations.  ALIGN is the
       constant alignment in bits.
  
       The default version of this function takes care of putting
!      read-only variables in 'readonly_data_section'.
  
       See also USE_SELECT_SECTION_FOR_FUNCTIONS.
  
   -- Macro: USE_SELECT_SECTION_FOR_FUNCTIONS
       Define this macro if you wish TARGET_ASM_SELECT_SECTION to be
!      called for 'FUNCTION_DECL's as well as for variables and constants.
  
!      In the case of a 'FUNCTION_DECL', RELOC will be zero if the
       function has been determined to be likely to be called, and nonzero
       if it is unlikely to be called.
  
   -- Target Hook: void TARGET_ASM_UNIQUE_SECTION (tree DECL, int RELOC)
!      Build up a unique section name, expressed as a 'STRING_CST' node,
!      and assign it to 'DECL_SECTION_NAME (DECL)'.  As with
!      'TARGET_ASM_SELECT_SECTION', RELOC indicates whether the initial
       value of EXP requires link-time relocations.
  
       The default version of this function appends the symbol name to the
       ELF section name that would normally be used for the symbol.  For
!      example, the function 'foo' would be placed in '.text.foo'.
       Whatever the actual target object format, this is often good
       enough.
  
   -- Target Hook: section * TARGET_ASM_FUNCTION_RODATA_SECTION (tree
            DECL, bool RELOCATABLE)
       Return the readonly data or reloc readonly data section associated
!      with 'DECL_SECTION_NAME (DECL)'.  RELOCATABLE selects the latter
       over the former.  The default version of this function selects
!      '.gnu.linkonce.r.name' if the function's section is
!      '.gnu.linkonce.t.name', '.rodata.name' or '.data.rel.ro.name' if
!      function is in '.text.name', and the normal readonly-data or reloc
       readonly data section otherwise.
  
   -- Target Hook: const char * TARGET_ASM_MERGEABLE_RODATA_PREFIX
!      Usually, the compiler uses the prefix '".rodata"' to construct
       section names for mergeable constant data.  Define this macro to
       override the string if a different section name should be used.
  
--- 41287,41335 ----
   -- Target Hook: section * TARGET_ASM_SELECT_SECTION (tree EXP, int
            RELOC, unsigned HOST_WIDE_INT ALIGN)
       Return the section into which EXP should be placed.  You can assume
!      that EXP is either a â€˜VAR_DECLâ€™ node or a constant of some sort.
       RELOC indicates whether the initial value of EXP requires link-time
       relocations.  Bit 0 is set when variable contains local relocations
       only, while bit 1 is set for global relocations.  ALIGN is the
       constant alignment in bits.
  
       The default version of this function takes care of putting
!      read-only variables in â€˜readonly_data_sectionâ€™.
  
       See also USE_SELECT_SECTION_FOR_FUNCTIONS.
  
   -- Macro: USE_SELECT_SECTION_FOR_FUNCTIONS
       Define this macro if you wish TARGET_ASM_SELECT_SECTION to be
!      called for â€˜FUNCTION_DECLâ€™s as well as for variables and constants.
  
!      In the case of a â€˜FUNCTION_DECLâ€™, RELOC will be zero if the
       function has been determined to be likely to be called, and nonzero
       if it is unlikely to be called.
  
   -- Target Hook: void TARGET_ASM_UNIQUE_SECTION (tree DECL, int RELOC)
!      Build up a unique section name, expressed as a â€˜STRING_CSTâ€™ node,
!      and assign it to â€˜DECL_SECTION_NAME (DECL)â€™.  As with
!      â€˜TARGET_ASM_SELECT_SECTIONâ€™, RELOC indicates whether the initial
       value of EXP requires link-time relocations.
  
       The default version of this function appends the symbol name to the
       ELF section name that would normally be used for the symbol.  For
!      example, the function â€˜fooâ€™ would be placed in â€˜.text.fooâ€™.
       Whatever the actual target object format, this is often good
       enough.
  
   -- Target Hook: section * TARGET_ASM_FUNCTION_RODATA_SECTION (tree
            DECL, bool RELOCATABLE)
       Return the readonly data or reloc readonly data section associated
!      with â€˜DECL_SECTION_NAME (DECL)â€™.  RELOCATABLE selects the latter
       over the former.  The default version of this function selects
!      â€˜.gnu.linkonce.r.nameâ€™ if the function's section is
!      â€˜.gnu.linkonce.t.nameâ€™, â€˜.rodata.nameâ€™ or â€˜.data.rel.ro.nameâ€™ if
!      function is in â€˜.text.nameâ€™, and the normal readonly-data or reloc
       readonly data section otherwise.
  
   -- Target Hook: const char * TARGET_ASM_MERGEABLE_RODATA_PREFIX
!      Usually, the compiler uses the prefix â€˜".rodata"â€™ to construct
       section names for mergeable constant data.  Define this macro to
       override the string if a different section name should be used.
  
*************** target does not provide them.
*** 41337,41356 ****
            MODE, rtx X, unsigned HOST_WIDE_INT ALIGN)
       Return the section into which a constant X, of mode MODE, should be
       placed.  You can assume that X is some kind of constant in RTL.
!      The argument MODE is redundant except in the case of a 'const_int'
       rtx.  ALIGN is the constant alignment in bits.
  
       The default version of this function takes care of putting symbolic
!      constants in 'flag_pic' mode in 'data_section' and everything else
!      in 'readonly_data_section'.
  
   -- Target Hook: tree TARGET_MANGLE_DECL_ASSEMBLER_NAME (tree DECL, tree
            ID)
       Define this hook if you need to postprocess the assembler name
       generated by target-independent code.  The ID provided to this hook
!      will be the computed name (e.g., the macro 'DECL_NAME' of the DECL
       in C, or the mangled name of the DECL in C++).  The return value of
!      the hook is an 'IDENTIFIER_NODE' for the appropriate mangled name
       on your target system.  The default implementation of this hook
       just returns the ID provided.
  
--- 41341,41360 ----
            MODE, rtx X, unsigned HOST_WIDE_INT ALIGN)
       Return the section into which a constant X, of mode MODE, should be
       placed.  You can assume that X is some kind of constant in RTL.
!      The argument MODE is redundant except in the case of a â€˜const_intâ€™
       rtx.  ALIGN is the constant alignment in bits.
  
       The default version of this function takes care of putting symbolic
!      constants in â€˜flag_picâ€™ mode in â€˜data_sectionâ€™ and everything else
!      in â€˜readonly_data_sectionâ€™.
  
   -- Target Hook: tree TARGET_MANGLE_DECL_ASSEMBLER_NAME (tree DECL, tree
            ID)
       Define this hook if you need to postprocess the assembler name
       generated by target-independent code.  The ID provided to this hook
!      will be the computed name (e.g., the macro â€˜DECL_NAMEâ€™ of the DECL
       in C, or the mangled name of the DECL in C++).  The return value of
!      the hook is an â€˜IDENTIFIER_NODEâ€™ for the appropriate mangled name
       on your target system.  The default implementation of this hook
       just returns the ID provided.
  
*************** target does not provide them.
*** 41363,41400 ****
       The hook is executed immediately after rtl has been created for
       DECL, which may be a variable or function declaration or an entry
       in the constant pool.  In either case, RTL is the rtl in question.
!      Do _not_ use 'DECL_RTL (DECL)' in this hook; that field may not
       have been initialized yet.
  
       In the case of a constant, it is safe to assume that the rtl is a
!      'mem' whose address is a 'symbol_ref'.  Most decls will also have
       this form, but that is not guaranteed.  Global register variables,
!      for instance, will have a 'reg' for their rtl.  (Normally the right
       thing to do with such unusual rtl is leave it alone.)
  
       The NEW_DECL_P argument will be true if this is the first time that
!      'TARGET_ENCODE_SECTION_INFO' has been invoked on this decl.  It
       will be false for subsequent invocations, which will happen for
       duplicate declarations.  Whether or not anything must be done for
       the duplicate declaration depends on whether the hook examines
!      'DECL_ATTRIBUTES'.  NEW_DECL_P is always true when the hook is
       called for a constant.
  
       The usual thing for this hook to do is to record flags in the
!      'symbol_ref', using 'SYMBOL_REF_FLAG' or 'SYMBOL_REF_FLAGS'.
       Historically, the name string was modified if it was necessary to
       encode more than one bit of information, but this practice is now
!      discouraged; use 'SYMBOL_REF_FLAGS'.
  
!      The default definition of this hook, 'default_encode_section_info'
!      in 'varasm.cc', sets a number of commonly-useful bits in
!      'SYMBOL_REF_FLAGS'.  Check whether the default does what you need
       before overriding it.
  
   -- Target Hook: const char * TARGET_STRIP_NAME_ENCODING (const char
            *NAME)
       Decode NAME and return the real name part, sans the characters that
!      'TARGET_ENCODE_SECTION_INFO' may have added.
  
   -- Target Hook: bool TARGET_IN_SMALL_DATA_P (const_tree EXP)
       Returns true if EXP should be placed into a "small data" section.
--- 41367,41404 ----
       The hook is executed immediately after rtl has been created for
       DECL, which may be a variable or function declaration or an entry
       in the constant pool.  In either case, RTL is the rtl in question.
!      Do _not_ use â€˜DECL_RTL (DECL)â€™ in this hook; that field may not
       have been initialized yet.
  
       In the case of a constant, it is safe to assume that the rtl is a
!      â€˜memâ€™ whose address is a â€˜symbol_refâ€™.  Most decls will also have
       this form, but that is not guaranteed.  Global register variables,
!      for instance, will have a â€˜regâ€™ for their rtl.  (Normally the right
       thing to do with such unusual rtl is leave it alone.)
  
       The NEW_DECL_P argument will be true if this is the first time that
!      â€˜TARGET_ENCODE_SECTION_INFOâ€™ has been invoked on this decl.  It
       will be false for subsequent invocations, which will happen for
       duplicate declarations.  Whether or not anything must be done for
       the duplicate declaration depends on whether the hook examines
!      â€˜DECL_ATTRIBUTESâ€™.  NEW_DECL_P is always true when the hook is
       called for a constant.
  
       The usual thing for this hook to do is to record flags in the
!      â€˜symbol_refâ€™, using â€˜SYMBOL_REF_FLAGâ€™ or â€˜SYMBOL_REF_FLAGSâ€™.
       Historically, the name string was modified if it was necessary to
       encode more than one bit of information, but this practice is now
!      discouraged; use â€˜SYMBOL_REF_FLAGSâ€™.
  
!      The default definition of this hook, â€˜default_encode_section_infoâ€™
!      in â€˜varasm.ccâ€™, sets a number of commonly-useful bits in
!      â€˜SYMBOL_REF_FLAGSâ€™.  Check whether the default does what you need
       before overriding it.
  
   -- Target Hook: const char * TARGET_STRIP_NAME_ENCODING (const char
            *NAME)
       Decode NAME and return the real name part, sans the characters that
!      â€˜TARGET_ENCODE_SECTION_INFOâ€™ may have added.
  
   -- Target Hook: bool TARGET_IN_SMALL_DATA_P (const_tree EXP)
       Returns true if EXP should be placed into a "small data" section.
*************** target does not provide them.
*** 41409,41415 ****
       prologue.
  
       The default version of this hook use the target macro
!      'PROFILE_BEFORE_PROLOGUE'.
  
   -- Target Hook: bool TARGET_BINDS_LOCAL_P (const_tree EXP)
       Returns true if EXP names an object for which name resolution rules
--- 41413,41419 ----
       prologue.
  
       The default version of this hook use the target macro
!      â€˜PROFILE_BEFORE_PROLOGUEâ€™.
  
   -- Target Hook: bool TARGET_BINDS_LOCAL_P (const_tree EXP)
       Returns true if EXP names an object for which name resolution rules
*************** File: gccint.info,  Node: PIC,  Next: As
*** 41433,41441 ****
  This section describes macros that help implement generation of position
  independent code.  Simply defining these macros is not enough to
  generate valid PIC; you must also add support to the hook
! 'TARGET_LEGITIMATE_ADDRESS_P' and to the macro 'PRINT_OPERAND_ADDRESS',
! as well as 'LEGITIMIZE_ADDRESS'.  You must modify the definition of
! 'movsi' to do something appropriate when the source operand contains a
  symbolic address.  You may also need to alter the handling of switch
  statements so that they use relative addresses.
  
--- 41437,41445 ----
  This section describes macros that help implement generation of position
  independent code.  Simply defining these macros is not enough to
  generate valid PIC; you must also add support to the hook
! â€˜TARGET_LEGITIMATE_ADDRESS_Pâ€™ and to the macro â€˜PRINT_OPERAND_ADDRESSâ€™,
! as well as â€˜LEGITIMIZE_ADDRESSâ€™.  You must modify the definition of
! â€˜movsiâ€™ to do something appropriate when the source operand contains a
  symbolic address.  You may also need to alter the handling of switch
  statements so that they use relative addresses.
  
*************** statements so that they use relative add
*** 41447,41467 ****
       once, as with the stack pointer and frame pointer registers.  If
       this macro is not defined, it is up to the machine-dependent files
       to allocate such a register (if necessary).  Note that this
!      register must be fixed when in use (e.g. when 'flag_pic' is true).
  
   -- Macro: PIC_OFFSET_TABLE_REG_CALL_CLOBBERED
       A C expression that is nonzero if the register defined by
!      'PIC_OFFSET_TABLE_REGNUM' is clobbered by calls.  If not defined,
       the default is zero.  Do not define this macro if
!      'PIC_OFFSET_TABLE_REGNUM' is not defined.
  
   -- Macro: LEGITIMATE_PIC_OPERAND_P (X)
       A C expression that is nonzero if X is a legitimate immediate
       operand on the target machine when generating position independent
!      code.  You can assume that X satisfies 'CONSTANT_P', so you need
       not check this.  You can also assume FLAG_PIC is true, so you need
       not check it either.  You need not define this macro if all
!      constants (including 'SYMBOL_REF') can be immediate operands when
       generating position independent code.
  
  
--- 41451,41471 ----
       once, as with the stack pointer and frame pointer registers.  If
       this macro is not defined, it is up to the machine-dependent files
       to allocate such a register (if necessary).  Note that this
!      register must be fixed when in use (e.g. when â€˜flag_picâ€™ is true).
  
   -- Macro: PIC_OFFSET_TABLE_REG_CALL_CLOBBERED
       A C expression that is nonzero if the register defined by
!      â€˜PIC_OFFSET_TABLE_REGNUMâ€™ is clobbered by calls.  If not defined,
       the default is zero.  Do not define this macro if
!      â€˜PIC_OFFSET_TABLE_REGNUMâ€™ is not defined.
  
   -- Macro: LEGITIMATE_PIC_OPERAND_P (X)
       A C expression that is nonzero if X is a legitimate immediate
       operand on the target machine when generating position independent
!      code.  You can assume that X satisfies â€˜CONSTANT_Pâ€™, so you need
       not check this.  You can also assume FLAG_PIC is true, so you need
       not check it either.  You need not define this macro if all
!      constants (including â€˜SYMBOL_REFâ€™) can be immediate operands when
       generating position independent code.
  
  
*************** File: gccint.info,  Node: File Framework
*** 41499,41517 ****
  This describes the overall framework of an assembly file.
  
   -- Target Hook: void TARGET_ASM_FILE_START (void)
!      Output to 'asm_out_file' any text which the assembler expects to
       find at the beginning of a file.  The default behavior is
       controlled by two flags, documented below.  Unless your target's
       assembler is quite unusual, if you override the default, you should
!      call 'default_file_start' at some point in your target hook.  This
       lets other target files rely on these variables.
  
   -- Target Hook: bool TARGET_ASM_FILE_START_APP_OFF
!      If this flag is true, the text of the macro 'ASM_APP_OFF' will be
       printed as the very first line in the assembly file, unless
!      '-fverbose-asm' is in effect.  (If that macro has been defined to
       the empty string, this variable has no effect.)  With the normal
!      definition of 'ASM_APP_OFF', the effect is to notify the GNU
       assembler that it need not bother stripping comments or extra
       whitespace from its input.  This allows it to work a bit faster.
  
--- 41503,41521 ----
  This describes the overall framework of an assembly file.
  
   -- Target Hook: void TARGET_ASM_FILE_START (void)
!      Output to â€˜asm_out_fileâ€™ any text which the assembler expects to
       find at the beginning of a file.  The default behavior is
       controlled by two flags, documented below.  Unless your target's
       assembler is quite unusual, if you override the default, you should
!      call â€˜default_file_startâ€™ at some point in your target hook.  This
       lets other target files rely on these variables.
  
   -- Target Hook: bool TARGET_ASM_FILE_START_APP_OFF
!      If this flag is true, the text of the macro â€˜ASM_APP_OFFâ€™ will be
       printed as the very first line in the assembly file, unless
!      â€˜-fverbose-asmâ€™ is in effect.  (If that macro has been defined to
       the empty string, this variable has no effect.)  With the normal
!      definition of â€˜ASM_APP_OFFâ€™, the effect is to notify the GNU
       assembler that it need not bother stripping comments or extra
       whitespace from its input.  This allows it to work a bit faster.
  
*************** This describes the overall framework of
*** 41520,41554 ****
       or comments that will cause GAS to issue errors in NO_APP mode.
  
   -- Target Hook: bool TARGET_ASM_FILE_START_FILE_DIRECTIVE
!      If this flag is true, 'output_file_directive' will be called for
!      the primary source file, immediately after printing 'ASM_APP_OFF'
       (if that is enabled).  Most ELF assemblers expect this to be done.
       The default is false.
  
   -- Target Hook: void TARGET_ASM_FILE_END (void)
!      Output to 'asm_out_file' any text which the assembler expects to
       find at the end of a file.  The default is to output nothing.
  
   -- Function: void file_end_indicate_exec_stack ()
!      Some systems use a common convention, the '.note.GNU-stack' special
       section, to indicate whether or not an object file relies on the
       stack being executable.  If your system uses this convention, you
!      should define 'TARGET_ASM_FILE_END' to this function.  If you need
       to do other things in that hook, have your hook function call this
       function.
  
   -- Target Hook: void TARGET_ASM_LTO_START (void)
!      Output to 'asm_out_file' any text which the assembler expects to
       find at the start of an LTO section.  The default is to output
       nothing.
  
   -- Target Hook: void TARGET_ASM_LTO_END (void)
!      Output to 'asm_out_file' any text which the assembler expects to
       find at the end of an LTO section.  The default is to output
       nothing.
  
   -- Target Hook: void TARGET_ASM_CODE_END (void)
!      Output to 'asm_out_file' any text which is needed before emitting
       unwind info and debug info at the end of a file.  Some targets emit
       here PIC setup thunks that cannot be emitted at the end of file,
       because they couldn't have unwind info then.  The default is to
--- 41524,41558 ----
       or comments that will cause GAS to issue errors in NO_APP mode.
  
   -- Target Hook: bool TARGET_ASM_FILE_START_FILE_DIRECTIVE
!      If this flag is true, â€˜output_file_directiveâ€™ will be called for
!      the primary source file, immediately after printing â€˜ASM_APP_OFFâ€™
       (if that is enabled).  Most ELF assemblers expect this to be done.
       The default is false.
  
   -- Target Hook: void TARGET_ASM_FILE_END (void)
!      Output to â€˜asm_out_fileâ€™ any text which the assembler expects to
       find at the end of a file.  The default is to output nothing.
  
   -- Function: void file_end_indicate_exec_stack ()
!      Some systems use a common convention, the â€˜.note.GNU-stackâ€™ special
       section, to indicate whether or not an object file relies on the
       stack being executable.  If your system uses this convention, you
!      should define â€˜TARGET_ASM_FILE_ENDâ€™ to this function.  If you need
       to do other things in that hook, have your hook function call this
       function.
  
   -- Target Hook: void TARGET_ASM_LTO_START (void)
!      Output to â€˜asm_out_fileâ€™ any text which the assembler expects to
       find at the start of an LTO section.  The default is to output
       nothing.
  
   -- Target Hook: void TARGET_ASM_LTO_END (void)
!      Output to â€˜asm_out_fileâ€™ any text which the assembler expects to
       find at the end of an LTO section.  The default is to output
       nothing.
  
   -- Target Hook: void TARGET_ASM_CODE_END (void)
!      Output to â€˜asm_out_fileâ€™ any text which is needed before emitting
       unwind info and debug info at the end of a file.  Some targets emit
       here PIC setup thunks that cannot be emitted at the end of file,
       because they couldn't have unwind info then.  The default is to
*************** This describes the overall framework of
*** 41560,41575 ****
       at the end of the line.
  
   -- Macro: ASM_APP_ON
!      A C string constant for text to be output before each 'asm'
!      statement or group of consecutive ones.  Normally this is '"#APP"',
       which is a comment that has no effect on most assemblers but tells
       the GNU assembler that it must check the lines that follow for all
       valid assembler constructs.
  
   -- Macro: ASM_APP_OFF
!      A C string constant for text to be output after each 'asm'
       statement or group of consecutive ones.  Normally this is
!      '"#NO_APP"', which tells the GNU assembler to resume making the
       time-saving assumptions that are valid for ordinary compiler
       output.
  
--- 41564,41579 ----
       at the end of the line.
  
   -- Macro: ASM_APP_ON
!      A C string constant for text to be output before each â€˜asmâ€™
!      statement or group of consecutive ones.  Normally this is â€˜"#APP"â€™,
       which is a comment that has no effect on most assemblers but tells
       the GNU assembler that it must check the lines that follow for all
       valid assembler constructs.
  
   -- Macro: ASM_APP_OFF
!      A C string constant for text to be output after each â€˜asmâ€™
       statement or group of consecutive ones.  Normally this is
!      â€˜"#NO_APP"â€™, which tells the GNU assembler to resume making the
       time-saving assumptions that are valid for ordinary compiler
       output.
  
*************** This describes the overall framework of
*** 41590,41603 ****
       for the file format in use is appropriate.
  
   -- Target Hook: void TARGET_ASM_OUTPUT_IDENT (const char *NAME)
!      Output a string based on NAME, suitable for the '#ident' directive,
       or the equivalent directive or pragma in non-C-family languages.
!      If this hook is not defined, nothing is output for the '#ident'
       directive.
  
   -- Macro: OUTPUT_QUOTED_STRING (STREAM, STRING)
       A C statement to output the string STRING to the stdio stream
!      STREAM.  If you do not call the function 'output_quoted_string' in
       your config files, GCC will only call it to output filenames to the
       assembler source.  So you can use it to canonicalize the format of
       the filename using this macro.
--- 41594,41607 ----
       for the file format in use is appropriate.
  
   -- Target Hook: void TARGET_ASM_OUTPUT_IDENT (const char *NAME)
!      Output a string based on NAME, suitable for the â€˜#identâ€™ directive,
       or the equivalent directive or pragma in non-C-family languages.
!      If this hook is not defined, nothing is output for the â€˜#identâ€™
       directive.
  
   -- Macro: OUTPUT_QUOTED_STRING (STREAM, STRING)
       A C statement to output the string STRING to the stdio stream
!      STREAM.  If you do not call the function â€˜output_quoted_stringâ€™ in
       your config files, GCC will only call it to output filenames to the
       assembler source.  So you can use it to canonicalize the format of
       the filename using this macro.
*************** This describes the overall framework of
*** 41606,41620 ****
            unsigned int FLAGS, tree DECL)
       Output assembly directives to switch to section NAME.  The section
       should have attributes as specified by FLAGS, which is a bit mask
!      of the 'SECTION_*' flags defined in 'output.h'.  If DECL is
!      non-NULL, it is the 'VAR_DECL' or 'FUNCTION_DECL' with which this
       section is associated.
  
   -- Target Hook: bool TARGET_ASM_ELF_FLAGS_NUMERIC (unsigned int FLAGS,
            unsigned int *NUM)
       This hook can be used to encode ELF section flags for which no
       letter code has been defined in the assembler.  It is called by
!      'default_asm_named_section' whenever the section flags need to be
       emitted in the assembler output.  If the hook returns true, then
       the numerical value for ELF section flags should be calculated from
       FLAGS and saved in *NUM; the value is printed out instead of the
--- 41610,41624 ----
            unsigned int FLAGS, tree DECL)
       Output assembly directives to switch to section NAME.  The section
       should have attributes as specified by FLAGS, which is a bit mask
!      of the â€˜SECTION_*â€™ flags defined in â€˜output.hâ€™.  If DECL is
!      non-NULL, it is the â€˜VAR_DECLâ€™ or â€˜FUNCTION_DECLâ€™ with which this
       section is associated.
  
   -- Target Hook: bool TARGET_ASM_ELF_FLAGS_NUMERIC (unsigned int FLAGS,
            unsigned int *NUM)
       This hook can be used to encode ELF section flags for which no
       letter code has been defined in the assembler.  It is called by
!      â€˜default_asm_named_sectionâ€™ whenever the section flags need to be
       emitted in the assembler output.  If the hook returns true, then
       the numerical value for ELF section flags should be calculated from
       FLAGS and saved in *NUM; the value is printed out instead of the
*************** This describes the overall framework of
*** 41627,41633 ****
       Return preferred text (sub)section for function DECL.  Main purpose
       of this function is to separate cold, normal and hot functions.
       STARTUP is true when function is known to be used only at startup
!      (from static constructors or it is 'main()').  EXIT is true when
       function is known to be used only at exit (from static
       destructors).  Return NULL if function should go to default text
       section.
--- 41631,41637 ----
       Return preferred text (sub)section for function DECL.  Main purpose
       of this function is to separate cold, normal and hot functions.
       STARTUP is true when function is known to be used only at startup
!      (from static constructors or it is â€˜main()â€™).  EXIT is true when
       function is known to be used only at exit (from static
       destructors).  Return NULL if function should go to default text
       section.
*************** This describes the overall framework of
*** 41638,41667 ****
       labels needed when a function is partitioned between different
       sections.  Output should be written to FILE.  The function decl is
       available as DECL and the new section is 'cold' if NEW_IS_COLD is
!      'true'.
  
   -- Common Target Hook: bool TARGET_HAVE_NAMED_SECTIONS
       This flag is true if the target supports
!      'TARGET_ASM_NAMED_SECTION'.  It must not be modified by
       command-line option processing.
  
   -- Target Hook: bool TARGET_HAVE_SWITCHABLE_BSS_SECTIONS
       This flag is true if we can create zeroed data by switching to a
!      BSS section and then using 'ASM_OUTPUT_SKIP' to allocate the space.
       This is true on most ELF targets.
  
   -- Target Hook: unsigned int TARGET_SECTION_TYPE_FLAGS (tree DECL,
            const char *NAME, int RELOC)
       Choose a set of section attributes for use by
!      'TARGET_ASM_NAMED_SECTION' based on a variable or function decl, a
       section name, and whether or not the declaration's initializer may
       contain runtime relocations.  DECL may be null, in which case
       read-write data should be assumed.
  
       The default version of this function handles choosing code vs data,
!      read-only vs read-write data, and 'flag_pic'.  You should only need
       to override this if your target has special flags that might be set
!      via '__attribute__'.
  
   -- Target Hook: void TARGET_ASM_RECORD_GCC_SWITCHES (const char *)
       Provides the target with the ability to record the gcc command line
--- 41642,41671 ----
       labels needed when a function is partitioned between different
       sections.  Output should be written to FILE.  The function decl is
       available as DECL and the new section is 'cold' if NEW_IS_COLD is
!      â€˜trueâ€™.
  
   -- Common Target Hook: bool TARGET_HAVE_NAMED_SECTIONS
       This flag is true if the target supports
!      â€˜TARGET_ASM_NAMED_SECTIONâ€™.  It must not be modified by
       command-line option processing.
  
   -- Target Hook: bool TARGET_HAVE_SWITCHABLE_BSS_SECTIONS
       This flag is true if we can create zeroed data by switching to a
!      BSS section and then using â€˜ASM_OUTPUT_SKIPâ€™ to allocate the space.
       This is true on most ELF targets.
  
   -- Target Hook: unsigned int TARGET_SECTION_TYPE_FLAGS (tree DECL,
            const char *NAME, int RELOC)
       Choose a set of section attributes for use by
!      â€˜TARGET_ASM_NAMED_SECTIONâ€™ based on a variable or function decl, a
       section name, and whether or not the declaration's initializer may
       contain runtime relocations.  DECL may be null, in which case
       read-write data should be assumed.
  
       The default version of this function handles choosing code vs data,
!      read-only vs read-write data, and â€˜flag_picâ€™.  You should only need
       to override this if your target has special flags that might be set
!      via â€˜__attribute__â€™.
  
   -- Target Hook: void TARGET_ASM_RECORD_GCC_SWITCHES (const char *)
       Provides the target with the ability to record the gcc command line
*************** This describes the overall framework of
*** 41672,41682 ****
       it records the switches as ASCII text inside a new, string
       mergeable section in the assembler output file.  The name of the
       new section is provided by the
!      'TARGET_ASM_RECORD_GCC_SWITCHES_SECTION' target hook.
  
   -- Target Hook: const char * TARGET_ASM_RECORD_GCC_SWITCHES_SECTION
       This is the name of the section that will be created by the example
!      ELF implementation of the 'TARGET_ASM_RECORD_GCC_SWITCHES' target
       hook.
  
  
--- 41676,41686 ----
       it records the switches as ASCII text inside a new, string
       mergeable section in the assembler output file.  The name of the
       new section is provided by the
!      â€˜TARGET_ASM_RECORD_GCC_SWITCHES_SECTIONâ€™ target hook.
  
   -- Target Hook: const char * TARGET_ASM_RECORD_GCC_SWITCHES_SECTION
       This is the name of the section that will be created by the example
!      ELF implementation of the â€˜TARGET_ASM_RECORD_GCC_SWITCHESâ€™ target
       hook.
  
  
*************** File: gccint.info,  Node: Data Output,
*** 41701,41710 ****
   -- Target Hook: const char * TARGET_ASM_UNALIGNED_PTI_OP
   -- Target Hook: const char * TARGET_ASM_UNALIGNED_TI_OP
       These hooks specify assembly directives for creating certain kinds
!      of integer object.  The 'TARGET_ASM_BYTE_OP' directive creates a
!      byte-sized object, the 'TARGET_ASM_ALIGNED_HI_OP' one creates an
       aligned two-byte object, and so on.  Any of the hooks may be
!      'NULL', indicating that no suitable directive is available.
  
       The compiler will print these strings at the start of a new line,
       followed immediately by the object's initial value.  In most cases,
--- 41705,41714 ----
   -- Target Hook: const char * TARGET_ASM_UNALIGNED_PTI_OP
   -- Target Hook: const char * TARGET_ASM_UNALIGNED_TI_OP
       These hooks specify assembly directives for creating certain kinds
!      of integer object.  The â€˜TARGET_ASM_BYTE_OPâ€™ directive creates a
!      byte-sized object, the â€˜TARGET_ASM_ALIGNED_HI_OPâ€™ one creates an
       aligned two-byte object, and so on.  Any of the hooks may be
!      â€˜NULLâ€™, indicating that no suitable directive is available.
  
       The compiler will print these strings at the start of a new line,
       followed immediately by the object's initial value.  In most cases,
*************** File: gccint.info,  Node: Data Output,
*** 41712,41727 ****
  
   -- Target Hook: bool TARGET_ASM_INTEGER (rtx X, unsigned int SIZE, int
            ALIGNED_P)
!      The 'assemble_integer' function uses this hook to output an integer
       object.  X is the object's value, SIZE is its size in bytes and
       ALIGNED_P indicates whether it is aligned.  The function should
!      return 'true' if it was able to output the object.  If it returns
!      false, 'assemble_integer' will try to split the object into smaller
       parts.
  
       The default implementation of this hook will use the
!      'TARGET_ASM_BYTE_OP' family of strings, returning 'false' when the
!      relevant string is 'NULL'.
  
   -- Target Hook: void TARGET_ASM_DECL_END (void)
       Define this hook if the target assembler requires a special marker
--- 41716,41731 ----
  
   -- Target Hook: bool TARGET_ASM_INTEGER (rtx X, unsigned int SIZE, int
            ALIGNED_P)
!      The â€˜assemble_integerâ€™ function uses this hook to output an integer
       object.  X is the object's value, SIZE is its size in bytes and
       ALIGNED_P indicates whether it is aligned.  The function should
!      return â€˜trueâ€™ if it was able to output the object.  If it returns
!      false, â€˜assemble_integerâ€™ will try to split the object into smaller
       parts.
  
       The default implementation of this hook will use the
!      â€˜TARGET_ASM_BYTE_OPâ€™ family of strings, returning â€˜falseâ€™ when the
!      relevant string is â€˜NULLâ€™.
  
   -- Target Hook: void TARGET_ASM_DECL_END (void)
       Define this hook if the target assembler requires a special marker
*************** File: gccint.info,  Node: Data Output,
*** 41729,41756 ****
  
   -- Target Hook: bool TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA (FILE *FILE,
            rtx X)
!      A target hook to recognize RTX patterns that 'output_addr_const'
       can't deal with, and output assembly code to FILE corresponding to
       the pattern X.  This may be used to allow machine-dependent
!      'UNSPEC's to appear within constants.
  
       If target hook fails to recognize a pattern, it must return
!      'false', so that a standard error message is printed.  If it prints
       an error message itself, by calling, for example,
!      'output_operand_lossage', it may just return 'true'.
  
   -- Macro: ASM_OUTPUT_ASCII (STREAM, PTR, LEN)
       A C statement to output to the stdio stream STREAM an assembler
       instruction to assemble a string constant containing the LEN bytes
!      at PTR.  PTR will be a C expression of type 'char *' and LEN a C
!      expression of type 'int'.
  
!      If the assembler has a '.ascii' pseudo-op as found in the Berkeley
!      Unix assembler, do not define the macro 'ASM_OUTPUT_ASCII'.
  
   -- Macro: ASM_OUTPUT_FDESC (STREAM, DECL, N)
       A C statement to output word N of a function descriptor for DECL.
!      This must be defined if 'TARGET_VTABLE_USES_DESCRIPTORS' is
       defined, and is otherwise unused.
  
   -- Macro: CONSTANT_POOL_BEFORE_FUNCTION
--- 41733,41760 ----
  
   -- Target Hook: bool TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA (FILE *FILE,
            rtx X)
!      A target hook to recognize RTX patterns that â€˜output_addr_constâ€™
       can't deal with, and output assembly code to FILE corresponding to
       the pattern X.  This may be used to allow machine-dependent
!      â€˜UNSPECâ€™s to appear within constants.
  
       If target hook fails to recognize a pattern, it must return
!      â€˜falseâ€™, so that a standard error message is printed.  If it prints
       an error message itself, by calling, for example,
!      â€˜output_operand_lossageâ€™, it may just return â€˜trueâ€™.
  
   -- Macro: ASM_OUTPUT_ASCII (STREAM, PTR, LEN)
       A C statement to output to the stdio stream STREAM an assembler
       instruction to assemble a string constant containing the LEN bytes
!      at PTR.  PTR will be a C expression of type â€˜char *â€™ and LEN a C
!      expression of type â€˜intâ€™.
  
!      If the assembler has a â€˜.asciiâ€™ pseudo-op as found in the Berkeley
!      Unix assembler, do not define the macro â€˜ASM_OUTPUT_ASCIIâ€™.
  
   -- Macro: ASM_OUTPUT_FDESC (STREAM, DECL, N)
       A C statement to output word N of a function descriptor for DECL.
!      This must be defined if â€˜TARGET_VTABLE_USES_DESCRIPTORSâ€™ is
       defined, and is otherwise unused.
  
   -- Macro: CONSTANT_POOL_BEFORE_FUNCTION
*************** File: gccint.info,  Node: Data Output,
*** 41780,41786 ****
  
       The argument FILE is the standard I/O stream to output the
       assembler code on.  X is the RTL expression for the constant to
!      output, and MODE is the machine mode (in case X is a 'const_int').
       ALIGN is the required alignment for the value X; you should output
       an assembler directive to force this much alignment.
  
--- 41784,41790 ----
  
       The argument FILE is the standard I/O stream to output the
       assembler code on.  X is the RTL expression for the constant to
!      output, and MODE is the machine mode (in case X is a â€˜const_intâ€™).
       ALIGN is the required alignment for the value X; you should output
       an assembler directive to force this much alignment.
  
*************** File: gccint.info,  Node: Data Output,
*** 41792,41798 ****
            (*targetm.asm_out.internal_label) (FILE, "LC", LABELNO);
  
       When you output a pool entry specially, you should end with a
!      'goto' to the label JUMPTO.  This will prevent the same pool entry
       from being output a second time in the usual manner.
  
       You need not define this macro if it would do nothing.
--- 41796,41802 ----
            (*targetm.asm_out.internal_label) (FILE, "LC", LABELNO);
  
       When you output a pool entry specially, you should end with a
!      â€˜gotoâ€™ to the label JUMPTO.  This will prevent the same pool entry
       from being output a second time in the usual manner.
  
       You need not define this macro if it would do nothing.
*************** File: gccint.info,  Node: Data Output,
*** 41815,41821 ****
       line separator uses multiple characters.
  
       If you do not define this macro, the default is that only the
!      character ';' is treated as a logical line separator.
  
   -- Target Hook: const char * TARGET_ASM_OPEN_PAREN
   -- Target Hook: const char * TARGET_ASM_CLOSE_PAREN
--- 41819,41825 ----
       line separator uses multiple characters.
  
       If you do not define this macro, the default is that only the
!      character â€˜;â€™ is treated as a logical line separator.
  
   -- Target Hook: const char * TARGET_ASM_OPEN_PAREN
   -- Target Hook: const char * TARGET_ASM_CLOSE_PAREN
*************** File: gccint.info,  Node: Data Output,
*** 41824,41831 ****
       overridden, they default to normal parentheses, which is correct
       for most assemblers.
  
!  These macros are provided by 'real.h' for writing the definitions of
! 'ASM_OUTPUT_DOUBLE' and the like:
  
   -- Macro: REAL_VALUE_TO_TARGET_SINGLE (X, L)
   -- Macro: REAL_VALUE_TO_TARGET_DOUBLE (X, L)
--- 41828,41835 ----
       overridden, they default to normal parentheses, which is correct
       for most assemblers.
  
!  These macros are provided by â€˜real.hâ€™ for writing the definitions of
! â€˜ASM_OUTPUT_DOUBLEâ€™ and the like:
  
   -- Macro: REAL_VALUE_TO_TARGET_SINGLE (X, L)
   -- Macro: REAL_VALUE_TO_TARGET_DOUBLE (X, L)
*************** File: gccint.info,  Node: Data Output,
*** 41833,41851 ****
   -- Macro: REAL_VALUE_TO_TARGET_DECIMAL32 (X, L)
   -- Macro: REAL_VALUE_TO_TARGET_DECIMAL64 (X, L)
   -- Macro: REAL_VALUE_TO_TARGET_DECIMAL128 (X, L)
!      These translate X, of type 'REAL_VALUE_TYPE', to the target's
       floating point representation, and store its bit pattern in the
!      variable L.  For 'REAL_VALUE_TO_TARGET_SINGLE' and
!      'REAL_VALUE_TO_TARGET_DECIMAL32', this variable should be a simple
!      'long int'.  For the others, it should be an array of 'long int'.
       The number of elements in this array is determined by the size of
       the desired target floating point data type: 32 bits of it go in
!      each 'long int' array element.  Each array element holds 32 bits of
!      the result, even if 'long int' is wider than 32 bits on the host
       machine.
  
       The array element values are designed so that you can print them
!      out using 'fprintf' in the order they should appear in the target
       machine's memory.
  
  
--- 41837,41855 ----
   -- Macro: REAL_VALUE_TO_TARGET_DECIMAL32 (X, L)
   -- Macro: REAL_VALUE_TO_TARGET_DECIMAL64 (X, L)
   -- Macro: REAL_VALUE_TO_TARGET_DECIMAL128 (X, L)
!      These translate X, of type â€˜REAL_VALUE_TYPEâ€™, to the target's
       floating point representation, and store its bit pattern in the
!      variable L.  For â€˜REAL_VALUE_TO_TARGET_SINGLEâ€™ and
!      â€˜REAL_VALUE_TO_TARGET_DECIMAL32â€™, this variable should be a simple
!      â€˜long intâ€™.  For the others, it should be an array of â€˜long intâ€™.
       The number of elements in this array is determined by the size of
       the desired target floating point data type: 32 bits of it go in
!      each â€˜long intâ€™ array element.  Each array element holds 32 bits of
!      the result, even if â€˜long intâ€™ is wider than 32 bits on the host
       machine.
  
       The array element values are designed so that you can print them
!      out using â€˜fprintfâ€™ in the order they should appear in the target
       machine's memory.
  
  
*************** outputting a single uninitialized variab
*** 41870,41876 ****
       the concept of a zero-sized common symbol, as that is how they
       represent an ordinary undefined external.
  
!      Use the expression 'assemble_name (STREAM, NAME)' to output the
       name itself; before and after that, output the additional assembler
       syntax for defining the name, and a newline.
  
--- 41874,41880 ----
       the concept of a zero-sized common symbol, as that is how they
       represent an ordinary undefined external.
  
!      Use the expression â€˜assemble_name (STREAM, NAME)â€™ to output the
       name itself; before and after that, output the additional assembler
       syntax for defining the name, and a newline.
  
*************** outputting a single uninitialized variab
*** 41878,41896 ****
       common global variables are output.
  
   -- Macro: ASM_OUTPUT_ALIGNED_COMMON (STREAM, NAME, SIZE, ALIGNMENT)
!      Like 'ASM_OUTPUT_COMMON' except takes the required alignment as a
       separate, explicit argument.  If you define this macro, it is used
!      in place of 'ASM_OUTPUT_COMMON', and gives you more flexibility in
       handling the required alignment of the variable.  The alignment is
       specified as the number of bits.
  
   -- Macro: ASM_OUTPUT_ALIGNED_DECL_COMMON (STREAM, DECL, NAME, SIZE,
            ALIGNMENT)
!      Like 'ASM_OUTPUT_ALIGNED_COMMON' except that DECL of the variable
!      to be output, if there is one, or 'NULL_TREE' if there is no
       corresponding variable.  If you define this macro, GCC will use it
!      in place of both 'ASM_OUTPUT_COMMON' and
!      'ASM_OUTPUT_ALIGNED_COMMON'.  Define this macro when you need to
       see the variable's decl in order to chose what to output.
  
   -- Macro: ASM_OUTPUT_ALIGNED_BSS (STREAM, DECL, NAME, SIZE, ALIGNMENT)
--- 41882,41900 ----
       common global variables are output.
  
   -- Macro: ASM_OUTPUT_ALIGNED_COMMON (STREAM, NAME, SIZE, ALIGNMENT)
!      Like â€˜ASM_OUTPUT_COMMONâ€™ except takes the required alignment as a
       separate, explicit argument.  If you define this macro, it is used
!      in place of â€˜ASM_OUTPUT_COMMONâ€™, and gives you more flexibility in
       handling the required alignment of the variable.  The alignment is
       specified as the number of bits.
  
   -- Macro: ASM_OUTPUT_ALIGNED_DECL_COMMON (STREAM, DECL, NAME, SIZE,
            ALIGNMENT)
!      Like â€˜ASM_OUTPUT_ALIGNED_COMMONâ€™ except that DECL of the variable
!      to be output, if there is one, or â€˜NULL_TREEâ€™ if there is no
       corresponding variable.  If you define this macro, GCC will use it
!      in place of both â€˜ASM_OUTPUT_COMMONâ€™ and
!      â€˜ASM_OUTPUT_ALIGNED_COMMONâ€™.  Define this macro when you need to
       see the variable's decl in order to chose what to output.
  
   -- Macro: ASM_OUTPUT_ALIGNED_BSS (STREAM, DECL, NAME, SIZE, ALIGNMENT)
*************** outputting a single uninitialized variab
*** 41899,41917 ****
       whose size is SIZE bytes.  The variable ALIGNMENT is the alignment
       specified as the number of bits.
  
!      Try to use function 'asm_output_aligned_bss' defined in file
!      'varasm.cc' when defining this macro.  If unable, use the
!      expression 'assemble_name (STREAM, NAME)' to output the name
       itself; before and after that, output the additional assembler
       syntax for defining the name, and a newline.
  
       There are two ways of handling global BSS.  One is to define this
!      macro.  The other is to have 'TARGET_ASM_SELECT_SECTION' return a
       switchable BSS section (*note
       TARGET_HAVE_SWITCHABLE_BSS_SECTIONS::).  You do not need to do
       both.
  
!      Some languages do not have 'common' data, and require a non-common
       form of global BSS in order to handle uninitialized globals
       efficiently.  C++ is one example of this.  However, if the target
       does not support global BSS, the front end may choose to make
--- 41903,41921 ----
       whose size is SIZE bytes.  The variable ALIGNMENT is the alignment
       specified as the number of bits.
  
!      Try to use function â€˜asm_output_aligned_bssâ€™ defined in file
!      â€˜varasm.ccâ€™ when defining this macro.  If unable, use the
!      expression â€˜assemble_name (STREAM, NAME)â€™ to output the name
       itself; before and after that, output the additional assembler
       syntax for defining the name, and a newline.
  
       There are two ways of handling global BSS.  One is to define this
!      macro.  The other is to have â€˜TARGET_ASM_SELECT_SECTIONâ€™ return a
       switchable BSS section (*note
       TARGET_HAVE_SWITCHABLE_BSS_SECTIONS::).  You do not need to do
       both.
  
!      Some languages do not have â€˜commonâ€™ data, and require a non-common
       form of global BSS in order to handle uninitialized globals
       efficiently.  C++ is one example of this.  However, if the target
       does not support global BSS, the front end may choose to make
*************** outputting a single uninitialized variab
*** 41923,41929 ****
       size is SIZE bytes.  The variable ROUNDED is the size rounded up to
       whatever alignment the caller wants.
  
!      Use the expression 'assemble_name (STREAM, NAME)' to output the
       name itself; before and after that, output the additional assembler
       syntax for defining the name, and a newline.
  
--- 41927,41933 ----
       size is SIZE bytes.  The variable ROUNDED is the size rounded up to
       whatever alignment the caller wants.
  
!      Use the expression â€˜assemble_name (STREAM, NAME)â€™ to output the
       name itself; before and after that, output the additional assembler
       syntax for defining the name, and a newline.
  
*************** outputting a single uninitialized variab
*** 41931,41948 ****
       static variables are output.
  
   -- Macro: ASM_OUTPUT_ALIGNED_LOCAL (STREAM, NAME, SIZE, ALIGNMENT)
!      Like 'ASM_OUTPUT_LOCAL' except takes the required alignment as a
       separate, explicit argument.  If you define this macro, it is used
!      in place of 'ASM_OUTPUT_LOCAL', and gives you more flexibility in
       handling the required alignment of the variable.  The alignment is
       specified as the number of bits.
  
   -- Macro: ASM_OUTPUT_ALIGNED_DECL_LOCAL (STREAM, DECL, NAME, SIZE,
            ALIGNMENT)
!      Like 'ASM_OUTPUT_ALIGNED_LOCAL' except that DECL of the variable to
!      be output, if there is one, or 'NULL_TREE' if there is no
       corresponding variable.  If you define this macro, GCC will use it
!      in place of both 'ASM_OUTPUT_LOCAL' and 'ASM_OUTPUT_ALIGNED_LOCAL'.
       Define this macro when you need to see the variable's decl in order
       to chose what to output.
  
--- 41935,41952 ----
       static variables are output.
  
   -- Macro: ASM_OUTPUT_ALIGNED_LOCAL (STREAM, NAME, SIZE, ALIGNMENT)
!      Like â€˜ASM_OUTPUT_LOCALâ€™ except takes the required alignment as a
       separate, explicit argument.  If you define this macro, it is used
!      in place of â€˜ASM_OUTPUT_LOCALâ€™, and gives you more flexibility in
       handling the required alignment of the variable.  The alignment is
       specified as the number of bits.
  
   -- Macro: ASM_OUTPUT_ALIGNED_DECL_LOCAL (STREAM, DECL, NAME, SIZE,
            ALIGNMENT)
!      Like â€˜ASM_OUTPUT_ALIGNED_LOCALâ€™ except that DECL of the variable to
!      be output, if there is one, or â€˜NULL_TREEâ€™ if there is no
       corresponding variable.  If you define this macro, GCC will use it
!      in place of both â€˜ASM_OUTPUT_LOCALâ€™ and â€˜ASM_OUTPUT_ALIGNED_LOCALâ€™.
       Define this macro when you need to see the variable's decl in order
       to chose what to output.
  
*************** This is about outputting labels.
*** 41957,41963 ****
   -- Macro: ASM_OUTPUT_LABEL (STREAM, NAME)
       A C statement (sans semicolon) to output to the stdio stream STREAM
       the assembler definition of a label named NAME.  Use the expression
!      'assemble_name (STREAM, NAME)' to output the name itself; before
       and after that, output the additional assembler syntax for defining
       the name, and a newline.  A default definition of this macro is
       provided which is correct for most systems.
--- 41961,41967 ----
   -- Macro: ASM_OUTPUT_LABEL (STREAM, NAME)
       A C statement (sans semicolon) to output to the stdio stream STREAM
       the assembler definition of a label named NAME.  Use the expression
!      â€˜assemble_name (STREAM, NAME)â€™ to output the name itself; before
       and after that, output the additional assembler syntax for defining
       the name, and a newline.  A default definition of this macro is
       provided which is correct for most systems.
*************** This is about outputting labels.
*** 41965,42000 ****
   -- Macro: ASM_OUTPUT_FUNCTION_LABEL (STREAM, NAME, DECL)
       A C statement (sans semicolon) to output to the stdio stream STREAM
       the assembler definition of a label named NAME of a function.  Use
!      the expression 'assemble_name (STREAM, NAME)' to output the name
       itself; before and after that, output the additional assembler
       syntax for defining the name, and a newline.  A default definition
       of this macro is provided which is correct for most systems.
  
       If this macro is not defined, then the function name is defined in
!      the usual manner as a label (by means of 'ASM_OUTPUT_LABEL').
  
   -- Macro: ASM_OUTPUT_INTERNAL_LABEL (STREAM, NAME)
!      Identical to 'ASM_OUTPUT_LABEL', except that NAME is known to refer
       to a compiler-generated label.  The default definition uses
!      'assemble_name_raw', which is like 'assemble_name' except that it
       is more efficient.
  
   -- Macro: SIZE_ASM_OP
       A C string containing the appropriate assembler directive to
       specify the size of a symbol, without any arguments.  On systems
!      that use ELF, the default (in 'config/elfos.h') is '"\t.size\t"';
       on other systems, the default is not to define this macro.
  
       Define this macro only if it is correct to use the default
!      definitions of 'ASM_OUTPUT_SIZE_DIRECTIVE' and
!      'ASM_OUTPUT_MEASURED_SIZE' for your system.  If you need your own
       custom definitions of those macros, or if you do not need explicit
       symbol sizes at all, do not define this macro.
  
   -- Macro: ASM_OUTPUT_SIZE_DIRECTIVE (STREAM, NAME, SIZE)
       A C statement (sans semicolon) to output to the stdio stream STREAM
       a directive telling the assembler that the size of the symbol NAME
!      is SIZE.  SIZE is a 'HOST_WIDE_INT'.  If you define 'SIZE_ASM_OP',
       a default definition of this macro is provided.
  
   -- Macro: ASM_OUTPUT_MEASURED_SIZE (STREAM, NAME)
--- 41969,42004 ----
   -- Macro: ASM_OUTPUT_FUNCTION_LABEL (STREAM, NAME, DECL)
       A C statement (sans semicolon) to output to the stdio stream STREAM
       the assembler definition of a label named NAME of a function.  Use
!      the expression â€˜assemble_name (STREAM, NAME)â€™ to output the name
       itself; before and after that, output the additional assembler
       syntax for defining the name, and a newline.  A default definition
       of this macro is provided which is correct for most systems.
  
       If this macro is not defined, then the function name is defined in
!      the usual manner as a label (by means of â€˜ASM_OUTPUT_LABELâ€™).
  
   -- Macro: ASM_OUTPUT_INTERNAL_LABEL (STREAM, NAME)
!      Identical to â€˜ASM_OUTPUT_LABELâ€™, except that NAME is known to refer
       to a compiler-generated label.  The default definition uses
!      â€˜assemble_name_rawâ€™, which is like â€˜assemble_nameâ€™ except that it
       is more efficient.
  
   -- Macro: SIZE_ASM_OP
       A C string containing the appropriate assembler directive to
       specify the size of a symbol, without any arguments.  On systems
!      that use ELF, the default (in â€˜config/elfos.hâ€™) is â€˜"\t.size\t"â€™;
       on other systems, the default is not to define this macro.
  
       Define this macro only if it is correct to use the default
!      definitions of â€˜ASM_OUTPUT_SIZE_DIRECTIVEâ€™ and
!      â€˜ASM_OUTPUT_MEASURED_SIZEâ€™ for your system.  If you need your own
       custom definitions of those macros, or if you do not need explicit
       symbol sizes at all, do not define this macro.
  
   -- Macro: ASM_OUTPUT_SIZE_DIRECTIVE (STREAM, NAME, SIZE)
       A C statement (sans semicolon) to output to the stdio stream STREAM
       a directive telling the assembler that the size of the symbol NAME
!      is SIZE.  SIZE is a â€˜HOST_WIDE_INTâ€™.  If you define â€˜SIZE_ASM_OPâ€™,
       a default definition of this macro is provided.
  
   -- Macro: ASM_OUTPUT_MEASURED_SIZE (STREAM, NAME)
*************** This is about outputting labels.
*** 42002,42046 ****
       a directive telling the assembler to calculate the size of the
       symbol NAME by subtracting its address from the current address.
  
!      If you define 'SIZE_ASM_OP', a default definition of this macro is
       provided.  The default assumes that the assembler recognizes a
!      special '.' symbol as referring to the current address, and can
       calculate the difference between this and another symbol.  If your
!      assembler does not recognize '.' or cannot do calculations with it,
!      you will need to redefine 'ASM_OUTPUT_MEASURED_SIZE' to use some
       other technique.
  
   -- Macro: NO_DOLLAR_IN_LABEL
       Define this macro if the assembler does not accept the character
!      '$' in label names.  By default constructors and destructors in G++
!      have '$' in the identifiers.  If this macro is defined, '.' is used
       instead.
  
   -- Macro: NO_DOT_IN_LABEL
       Define this macro if the assembler does not accept the character
!      '.' in label names.  By default constructors and destructors in G++
!      have names that use '.'.  If this macro is defined, these names are
!      rewritten to avoid '.'.
  
   -- Macro: TYPE_ASM_OP
       A C string containing the appropriate assembler directive to
       specify the type of a symbol, without any arguments.  On systems
!      that use ELF, the default (in 'config/elfos.h') is '"\t.type\t"';
       on other systems, the default is not to define this macro.
  
       Define this macro only if it is correct to use the default
!      definition of 'ASM_OUTPUT_TYPE_DIRECTIVE' for your system.  If you
       need your own custom definition of this macro, or if you do not
       need explicit symbol types at all, do not define this macro.
  
   -- Macro: TYPE_OPERAND_FMT
!      A C string which specifies (using 'printf' syntax) the format of
!      the second operand to 'TYPE_ASM_OP'.  On systems that use ELF, the
!      default (in 'config/elfos.h') is '"@%s"'; on other systems, the
       default is not to define this macro.
  
       Define this macro only if it is correct to use the default
!      definition of 'ASM_OUTPUT_TYPE_DIRECTIVE' for your system.  If you
       need your own custom definition of this macro, or if you do not
       need explicit symbol types at all, do not define this macro.
  
--- 42006,42050 ----
       a directive telling the assembler to calculate the size of the
       symbol NAME by subtracting its address from the current address.
  
!      If you define â€˜SIZE_ASM_OPâ€™, a default definition of this macro is
       provided.  The default assumes that the assembler recognizes a
!      special â€˜.â€™ symbol as referring to the current address, and can
       calculate the difference between this and another symbol.  If your
!      assembler does not recognize â€˜.â€™ or cannot do calculations with it,
!      you will need to redefine â€˜ASM_OUTPUT_MEASURED_SIZEâ€™ to use some
       other technique.
  
   -- Macro: NO_DOLLAR_IN_LABEL
       Define this macro if the assembler does not accept the character
!      â€˜$â€™ in label names.  By default constructors and destructors in G++
!      have â€˜$â€™ in the identifiers.  If this macro is defined, â€˜.â€™ is used
       instead.
  
   -- Macro: NO_DOT_IN_LABEL
       Define this macro if the assembler does not accept the character
!      â€˜.â€™ in label names.  By default constructors and destructors in G++
!      have names that use â€˜.â€™.  If this macro is defined, these names are
!      rewritten to avoid â€˜.â€™.
  
   -- Macro: TYPE_ASM_OP
       A C string containing the appropriate assembler directive to
       specify the type of a symbol, without any arguments.  On systems
!      that use ELF, the default (in â€˜config/elfos.hâ€™) is â€˜"\t.type\t"â€™;
       on other systems, the default is not to define this macro.
  
       Define this macro only if it is correct to use the default
!      definition of â€˜ASM_OUTPUT_TYPE_DIRECTIVEâ€™ for your system.  If you
       need your own custom definition of this macro, or if you do not
       need explicit symbol types at all, do not define this macro.
  
   -- Macro: TYPE_OPERAND_FMT
!      A C string which specifies (using â€˜printfâ€™ syntax) the format of
!      the second operand to â€˜TYPE_ASM_OPâ€™.  On systems that use ELF, the
!      default (in â€˜config/elfos.hâ€™) is â€˜"@%s"â€™; on other systems, the
       default is not to define this macro.
  
       Define this macro only if it is correct to use the default
!      definition of â€˜ASM_OUTPUT_TYPE_DIRECTIVEâ€™ for your system.  If you
       need your own custom definition of this macro, or if you do not
       need explicit symbol types at all, do not define this macro.
  
*************** This is about outputting labels.
*** 42048,42085 ****
       A C statement (sans semicolon) to output to the stdio stream STREAM
       a directive telling the assembler that the type of the symbol NAME
       is TYPE.  TYPE is a C string; currently, that string is always
!      either '"function"' or '"object"', but you should not count on
       this.
  
!      If you define 'TYPE_ASM_OP' and 'TYPE_OPERAND_FMT', a default
       definition of this macro is provided.
  
   -- Macro: ASM_DECLARE_FUNCTION_NAME (STREAM, NAME, DECL)
       A C statement (sans semicolon) to output to the stdio stream STREAM
       any text necessary for declaring the name NAME of a function which
       is being defined.  This macro is responsible for outputting the
!      label definition (perhaps using 'ASM_OUTPUT_FUNCTION_LABEL').  The
!      argument DECL is the 'FUNCTION_DECL' tree node representing the
       function.
  
       If this macro is not defined, then the function name is defined in
       the usual manner as a label (by means of
!      'ASM_OUTPUT_FUNCTION_LABEL').
  
!      You may wish to use 'ASM_OUTPUT_TYPE_DIRECTIVE' in the definition
       of this macro.
  
   -- Macro: ASM_DECLARE_FUNCTION_SIZE (STREAM, NAME, DECL)
       A C statement (sans semicolon) to output to the stdio stream STREAM
       any text necessary for declaring the size of a function which is
       being defined.  The argument NAME is the name of the function.  The
!      argument DECL is the 'FUNCTION_DECL' tree node representing the
       function.
  
       If this macro is not defined, then the function size is not
       defined.
  
!      You may wish to use 'ASM_OUTPUT_MEASURED_SIZE' in the definition of
       this macro.
  
   -- Macro: ASM_DECLARE_COLD_FUNCTION_NAME (STREAM, NAME, DECL)
--- 42052,42089 ----
       A C statement (sans semicolon) to output to the stdio stream STREAM
       a directive telling the assembler that the type of the symbol NAME
       is TYPE.  TYPE is a C string; currently, that string is always
!      either â€˜"function"â€™ or â€˜"object"â€™, but you should not count on
       this.
  
!      If you define â€˜TYPE_ASM_OPâ€™ and â€˜TYPE_OPERAND_FMTâ€™, a default
       definition of this macro is provided.
  
   -- Macro: ASM_DECLARE_FUNCTION_NAME (STREAM, NAME, DECL)
       A C statement (sans semicolon) to output to the stdio stream STREAM
       any text necessary for declaring the name NAME of a function which
       is being defined.  This macro is responsible for outputting the
!      label definition (perhaps using â€˜ASM_OUTPUT_FUNCTION_LABELâ€™).  The
!      argument DECL is the â€˜FUNCTION_DECLâ€™ tree node representing the
       function.
  
       If this macro is not defined, then the function name is defined in
       the usual manner as a label (by means of
!      â€˜ASM_OUTPUT_FUNCTION_LABELâ€™).
  
!      You may wish to use â€˜ASM_OUTPUT_TYPE_DIRECTIVEâ€™ in the definition
       of this macro.
  
   -- Macro: ASM_DECLARE_FUNCTION_SIZE (STREAM, NAME, DECL)
       A C statement (sans semicolon) to output to the stdio stream STREAM
       any text necessary for declaring the size of a function which is
       being defined.  The argument NAME is the name of the function.  The
!      argument DECL is the â€˜FUNCTION_DECLâ€™ tree node representing the
       function.
  
       If this macro is not defined, then the function size is not
       defined.
  
!      You may wish to use â€˜ASM_OUTPUT_MEASURED_SIZEâ€™ in the definition of
       this macro.
  
   -- Macro: ASM_DECLARE_COLD_FUNCTION_NAME (STREAM, NAME, DECL)
*************** This is about outputting labels.
*** 42087,42100 ****
       any text necessary for declaring the name NAME of a cold function
       partition which is being defined.  This macro is responsible for
       outputting the label definition (perhaps using
!      'ASM_OUTPUT_FUNCTION_LABEL').  The argument DECL is the
!      'FUNCTION_DECL' tree node representing the function.
  
       If this macro is not defined, then the cold partition name is
       defined in the usual manner as a label (by means of
!      'ASM_OUTPUT_LABEL').
  
!      You may wish to use 'ASM_OUTPUT_TYPE_DIRECTIVE' in the definition
       of this macro.
  
   -- Macro: ASM_DECLARE_COLD_FUNCTION_SIZE (STREAM, NAME, DECL)
--- 42091,42104 ----
       any text necessary for declaring the name NAME of a cold function
       partition which is being defined.  This macro is responsible for
       outputting the label definition (perhaps using
!      â€˜ASM_OUTPUT_FUNCTION_LABELâ€™).  The argument DECL is the
!      â€˜FUNCTION_DECLâ€™ tree node representing the function.
  
       If this macro is not defined, then the cold partition name is
       defined in the usual manner as a label (by means of
!      â€˜ASM_OUTPUT_LABELâ€™).
  
!      You may wish to use â€˜ASM_OUTPUT_TYPE_DIRECTIVEâ€™ in the definition
       of this macro.
  
   -- Macro: ASM_DECLARE_COLD_FUNCTION_SIZE (STREAM, NAME, DECL)
*************** This is about outputting labels.
*** 42102,42141 ****
       any text necessary for declaring the size of a cold function
       partition which is being defined.  The argument NAME is the name of
       the cold partition of the function.  The argument DECL is the
!      'FUNCTION_DECL' tree node representing the function.
  
       If this macro is not defined, then the partition size is not
       defined.
  
!      You may wish to use 'ASM_OUTPUT_MEASURED_SIZE' in the definition of
       this macro.
  
   -- Macro: ASM_DECLARE_OBJECT_NAME (STREAM, NAME, DECL)
       A C statement (sans semicolon) to output to the stdio stream STREAM
       any text necessary for declaring the name NAME of an initialized
       variable which is being defined.  This macro must output the label
!      definition (perhaps using 'ASM_OUTPUT_LABEL').  The argument DECL
!      is the 'VAR_DECL' tree node representing the variable.
  
       If this macro is not defined, then the variable name is defined in
!      the usual manner as a label (by means of 'ASM_OUTPUT_LABEL').
  
!      You may wish to use 'ASM_OUTPUT_TYPE_DIRECTIVE' and/or
!      'ASM_OUTPUT_SIZE_DIRECTIVE' in the definition of this macro.
  
   -- Target Hook: void TARGET_ASM_DECLARE_CONSTANT_NAME (FILE *FILE,
            const char *NAME, const_tree EXPR, HOST_WIDE_INT SIZE)
       A target hook to output to the stdio stream FILE any text necessary
       for declaring the name NAME of a constant which is being defined.
       This target hook is responsible for outputting the label definition
!      (perhaps using 'assemble_label').  The argument EXP is the value of
       the constant, and SIZE is the size of the constant in bytes.  The
       NAME will be an internal label.
  
       The default version of this target hook, define the NAME in the
!      usual manner as a label (by means of 'assemble_label').
  
!      You may wish to use 'ASM_OUTPUT_TYPE_DIRECTIVE' in this target
       hook.
  
   -- Macro: ASM_DECLARE_REGISTER_GLOBAL (STREAM, DECL, REGNO, NAME)
--- 42106,42145 ----
       any text necessary for declaring the size of a cold function
       partition which is being defined.  The argument NAME is the name of
       the cold partition of the function.  The argument DECL is the
!      â€˜FUNCTION_DECLâ€™ tree node representing the function.
  
       If this macro is not defined, then the partition size is not
       defined.
  
!      You may wish to use â€˜ASM_OUTPUT_MEASURED_SIZEâ€™ in the definition of
       this macro.
  
   -- Macro: ASM_DECLARE_OBJECT_NAME (STREAM, NAME, DECL)
       A C statement (sans semicolon) to output to the stdio stream STREAM
       any text necessary for declaring the name NAME of an initialized
       variable which is being defined.  This macro must output the label
!      definition (perhaps using â€˜ASM_OUTPUT_LABELâ€™).  The argument DECL
!      is the â€˜VAR_DECLâ€™ tree node representing the variable.
  
       If this macro is not defined, then the variable name is defined in
!      the usual manner as a label (by means of â€˜ASM_OUTPUT_LABELâ€™).
  
!      You may wish to use â€˜ASM_OUTPUT_TYPE_DIRECTIVEâ€™ and/or
!      â€˜ASM_OUTPUT_SIZE_DIRECTIVEâ€™ in the definition of this macro.
  
   -- Target Hook: void TARGET_ASM_DECLARE_CONSTANT_NAME (FILE *FILE,
            const char *NAME, const_tree EXPR, HOST_WIDE_INT SIZE)
       A target hook to output to the stdio stream FILE any text necessary
       for declaring the name NAME of a constant which is being defined.
       This target hook is responsible for outputting the label definition
!      (perhaps using â€˜assemble_labelâ€™).  The argument EXP is the value of
       the constant, and SIZE is the size of the constant in bytes.  The
       NAME will be an internal label.
  
       The default version of this target hook, define the NAME in the
!      usual manner as a label (by means of â€˜assemble_labelâ€™).
  
!      You may wish to use â€˜ASM_OUTPUT_TYPE_DIRECTIVEâ€™ in this target
       hook.
  
   -- Macro: ASM_DECLARE_REGISTER_GLOBAL (STREAM, DECL, REGNO, NAME)
*************** This is about outputting labels.
*** 42156,42163 ****
       If you don't define this macro, that is equivalent to defining it
       to do nothing.
  
!      You may wish to use 'ASM_OUTPUT_SIZE_DIRECTIVE' and/or
!      'ASM_OUTPUT_MEASURED_SIZE' in the definition of this macro.
  
   -- Target Hook: void TARGET_ASM_GLOBALIZE_LABEL (FILE *STREAM, const
            char *NAME)
--- 42160,42167 ----
       If you don't define this macro, that is equivalent to defining it
       to do nothing.
  
!      You may wish to use â€˜ASM_OUTPUT_SIZE_DIRECTIVEâ€™ and/or
!      â€˜ASM_OUTPUT_MEASURED_SIZEâ€™ in the definition of this macro.
  
   -- Target Hook: void TARGET_ASM_GLOBALIZE_LABEL (FILE *STREAM, const
            char *NAME)
*************** This is about outputting labels.
*** 42166,42172 ****
       available for reference from other files.
  
       The default implementation relies on a proper definition of
!      'GLOBAL_ASM_OP'.
  
   -- Target Hook: void TARGET_ASM_GLOBALIZE_DECL_NAME (FILE *STREAM, tree
            DECL)
--- 42170,42176 ----
       available for reference from other files.
  
       The default implementation relies on a proper definition of
!      â€˜GLOBAL_ASM_OPâ€™.
  
   -- Target Hook: void TARGET_ASM_GLOBALIZE_DECL_NAME (FILE *STREAM, tree
            DECL)
*************** This is about outputting labels.
*** 42188,42237 ****
       A C statement (sans semicolon) to output to the stdio stream STREAM
       some commands that will make the label NAME weak; that is,
       available for reference from other files but only used if no other
!      definition is available.  Use the expression 'assemble_name
!      (STREAM, NAME)' to output the name itself; before and after that,
       output the additional assembler syntax for making that name weak,
       and a newline.
  
!      If you don't define this macro or 'ASM_WEAKEN_DECL', GCC will not
!      support weak symbols and you should not define the 'SUPPORTS_WEAK'
       macro.
  
   -- Macro: ASM_WEAKEN_DECL (STREAM, DECL, NAME, VALUE)
!      Combines (and replaces) the function of 'ASM_WEAKEN_LABEL' and
!      'ASM_OUTPUT_WEAK_ALIAS', allowing access to the associated function
!      or variable decl.  If VALUE is not 'NULL', this C statement should
       output to the stdio stream STREAM assembler code which defines
       (equates) the weak symbol NAME to have the value VALUE.  If VALUE
!      is 'NULL', it should output commands to make NAME weak.
  
   -- Macro: ASM_OUTPUT_WEAKREF (STREAM, DECL, NAME, VALUE)
       Outputs a directive that enables NAME to be used to refer to symbol
!      VALUE with weak-symbol semantics.  'decl' is the declaration of
!      'name'.
  
   -- Macro: SUPPORTS_WEAK
       A preprocessor constant expression which evaluates to true if the
       target supports weak symbols.
  
!      If you don't define this macro, 'defaults.h' provides a default
!      definition.  If either 'ASM_WEAKEN_LABEL' or 'ASM_WEAKEN_DECL' is
!      defined, the default definition is '1'; otherwise, it is '0'.
  
   -- Macro: TARGET_SUPPORTS_WEAK
       A C expression which evaluates to true if the target supports weak
       symbols.
  
!      If you don't define this macro, 'defaults.h' provides a default
!      definition.  The default definition is '(SUPPORTS_WEAK)'.  Define
       this macro if you want to control weak symbol support with a
!      compiler flag such as '-melf'.
  
   -- Macro: MAKE_DECL_ONE_ONLY (DECL)
       A C statement (sans semicolon) to mark DECL to be emitted as a
       public symbol such that extra copies in multiple translation units
       will be discarded by the linker.  Define this macro if your object
!      file format provides support for this concept, such as the 'COMDAT'
       section flags in the Microsoft Windows PE/COFF format, and this
       support requires changes to DECL, such as putting it in a separate
       section.
--- 42192,42241 ----
       A C statement (sans semicolon) to output to the stdio stream STREAM
       some commands that will make the label NAME weak; that is,
       available for reference from other files but only used if no other
!      definition is available.  Use the expression â€˜assemble_name
!      (STREAM, NAME)â€™ to output the name itself; before and after that,
       output the additional assembler syntax for making that name weak,
       and a newline.
  
!      If you don't define this macro or â€˜ASM_WEAKEN_DECLâ€™, GCC will not
!      support weak symbols and you should not define the â€˜SUPPORTS_WEAKâ€™
       macro.
  
   -- Macro: ASM_WEAKEN_DECL (STREAM, DECL, NAME, VALUE)
!      Combines (and replaces) the function of â€˜ASM_WEAKEN_LABELâ€™ and
!      â€˜ASM_OUTPUT_WEAK_ALIASâ€™, allowing access to the associated function
!      or variable decl.  If VALUE is not â€˜NULLâ€™, this C statement should
       output to the stdio stream STREAM assembler code which defines
       (equates) the weak symbol NAME to have the value VALUE.  If VALUE
!      is â€˜NULLâ€™, it should output commands to make NAME weak.
  
   -- Macro: ASM_OUTPUT_WEAKREF (STREAM, DECL, NAME, VALUE)
       Outputs a directive that enables NAME to be used to refer to symbol
!      VALUE with weak-symbol semantics.  â€˜declâ€™ is the declaration of
!      â€˜nameâ€™.
  
   -- Macro: SUPPORTS_WEAK
       A preprocessor constant expression which evaluates to true if the
       target supports weak symbols.
  
!      If you don't define this macro, â€˜defaults.hâ€™ provides a default
!      definition.  If either â€˜ASM_WEAKEN_LABELâ€™ or â€˜ASM_WEAKEN_DECLâ€™ is
!      defined, the default definition is â€˜1â€™; otherwise, it is â€˜0â€™.
  
   -- Macro: TARGET_SUPPORTS_WEAK
       A C expression which evaluates to true if the target supports weak
       symbols.
  
!      If you don't define this macro, â€˜defaults.hâ€™ provides a default
!      definition.  The default definition is â€˜(SUPPORTS_WEAK)â€™.  Define
       this macro if you want to control weak symbol support with a
!      compiler flag such as â€˜-melfâ€™.
  
   -- Macro: MAKE_DECL_ONE_ONLY (DECL)
       A C statement (sans semicolon) to mark DECL to be emitted as a
       public symbol such that extra copies in multiple translation units
       will be discarded by the linker.  Define this macro if your object
!      file format provides support for this concept, such as the â€˜COMDATâ€™
       section flags in the Microsoft Windows PE/COFF format, and this
       support requires changes to DECL, such as putting it in a separate
       section.
*************** This is about outputting labels.
*** 42240,42250 ****
       A C expression which evaluates to true if the target supports
       one-only semantics.
  
!      If you don't define this macro, 'varasm.cc' provides a default
!      definition.  If 'MAKE_DECL_ONE_ONLY' is defined, the default
!      definition is '1'; otherwise, it is '0'.  Define this macro if you
       want to control one-only symbol support with a compiler flag, or if
!      setting the 'DECL_ONE_ONLY' flag is enough to mark a declaration to
       be emitted as one-only.
  
   -- Target Hook: void TARGET_ASM_ASSEMBLE_VISIBILITY (tree DECL, int
--- 42244,42254 ----
       A C expression which evaluates to true if the target supports
       one-only semantics.
  
!      If you don't define this macro, â€˜varasm.ccâ€™ provides a default
!      definition.  If â€˜MAKE_DECL_ONE_ONLYâ€™ is defined, the default
!      definition is â€˜1â€™; otherwise, it is â€˜0â€™.  Define this macro if you
       want to control one-only symbol support with a compiler flag, or if
!      setting the â€˜DECL_ONE_ONLYâ€™ flag is enough to mark a declaration to
       be emitted as one-only.
  
   -- Target Hook: void TARGET_ASM_ASSEMBLE_VISIBILITY (tree DECL, int
*************** This is about outputting labels.
*** 42257,42263 ****
   -- Macro: TARGET_WEAK_NOT_IN_ARCHIVE_TOC
       A C expression that evaluates to true if the target's linker
       expects that weak symbols do not appear in a static archive's table
!      of contents.  The default is '0'.
  
       Leaving weak symbols out of an archive's table of contents means
       that, if a symbol will only have a definition in one translation
--- 42261,42267 ----
   -- Macro: TARGET_WEAK_NOT_IN_ARCHIVE_TOC
       A C expression that evaluates to true if the target's linker
       expects that weak symbols do not appear in a static archive's table
!      of contents.  The default is â€˜0â€™.
  
       Leaving weak symbols out of an archive's table of contents means
       that, if a symbol will only have a definition in one translation
*************** This is about outputting labels.
*** 42287,42293 ****
       This target hook is a function to output to ASM_OUT_FILE an
       assembler pseudo-op to declare a library function name external.
       The name of the library function is given by SYMREF, which is a
!      'symbol_ref'.
  
   -- Target Hook: void TARGET_ASM_MARK_DECL_PRESERVED (const char
            *SYMBOL)
--- 42291,42297 ----
       This target hook is a function to output to ASM_OUT_FILE an
       assembler pseudo-op to declare a library function name external.
       The name of the library function is given by SYMREF, which is a
!      â€˜symbol_refâ€™.
  
   -- Target Hook: void TARGET_ASM_MARK_DECL_PRESERVED (const char
            *SYMBOL)
*************** This is about outputting labels.
*** 42298,42327 ****
   -- Macro: ASM_OUTPUT_LABELREF (STREAM, NAME)
       A C statement (sans semicolon) to output to the stdio stream STREAM
       a reference in assembler syntax to a label named NAME.  This should
!      add '_' to the front of the name, if that is customary on your
       operating system, as it is in most Berkeley Unix systems.  This
!      macro is used in 'assemble_name'.
  
   -- Target Hook: tree TARGET_MANGLE_ASSEMBLER_NAME (const char *NAME)
!      Given a symbol NAME, perform same mangling as 'varasm.cc''s
!      'assemble_name', but in memory rather than to a file stream,
!      returning result as an 'IDENTIFIER_NODE'.  Required for correct LTO
       symtabs.  The default implementation calls the
!      'TARGET_STRIP_NAME_ENCODING' hook and then prepends the
!      'USER_LABEL_PREFIX', if any.
  
   -- Macro: ASM_OUTPUT_SYMBOL_REF (STREAM, SYM)
       A C statement (sans semicolon) to output a reference to
!      'SYMBOL_REF' SYM.  If not defined, 'assemble_name' will be used to
       output the name of the symbol.  This macro may be used to modify
       the way a symbol is referenced depending on information encoded by
!      'TARGET_ENCODE_SECTION_INFO'.
  
   -- Macro: ASM_OUTPUT_LABEL_REF (STREAM, BUF)
       A C statement (sans semicolon) to output a reference to BUF, the
!      result of 'ASM_GENERATE_INTERNAL_LABEL'.  If not defined,
!      'assemble_name' will be used to output the name of the symbol.
!      This macro is not used by 'output_asm_label', or the '%l' specifier
       that calls it; the intention is that this macro should be set when
       it is necessary to output a label differently when its address is
       being taken.
--- 42302,42331 ----
   -- Macro: ASM_OUTPUT_LABELREF (STREAM, NAME)
       A C statement (sans semicolon) to output to the stdio stream STREAM
       a reference in assembler syntax to a label named NAME.  This should
!      add â€˜_â€™ to the front of the name, if that is customary on your
       operating system, as it is in most Berkeley Unix systems.  This
!      macro is used in â€˜assemble_nameâ€™.
  
   -- Target Hook: tree TARGET_MANGLE_ASSEMBLER_NAME (const char *NAME)
!      Given a symbol NAME, perform same mangling as â€˜varasm.ccâ€™'s
!      â€˜assemble_nameâ€™, but in memory rather than to a file stream,
!      returning result as an â€˜IDENTIFIER_NODEâ€™.  Required for correct LTO
       symtabs.  The default implementation calls the
!      â€˜TARGET_STRIP_NAME_ENCODINGâ€™ hook and then prepends the
!      â€˜USER_LABEL_PREFIXâ€™, if any.
  
   -- Macro: ASM_OUTPUT_SYMBOL_REF (STREAM, SYM)
       A C statement (sans semicolon) to output a reference to
!      â€˜SYMBOL_REFâ€™ SYM.  If not defined, â€˜assemble_nameâ€™ will be used to
       output the name of the symbol.  This macro may be used to modify
       the way a symbol is referenced depending on information encoded by
!      â€˜TARGET_ENCODE_SECTION_INFOâ€™.
  
   -- Macro: ASM_OUTPUT_LABEL_REF (STREAM, BUF)
       A C statement (sans semicolon) to output a reference to BUF, the
!      result of â€˜ASM_GENERATE_INTERNAL_LABELâ€™.  If not defined,
!      â€˜assemble_nameâ€™ will be used to output the name of the symbol.
!      This macro is not used by â€˜output_asm_labelâ€™, or the â€˜%lâ€™ specifier
       that calls it; the intention is that this macro should be set when
       it is necessary to output a label differently when its address is
       being taken.
*************** This is about outputting labels.
*** 42337,42348 ****
  
       It is desirable to exclude internal labels from the symbol table of
       the object file.  Most assemblers have a naming convention for
!      labels that should be excluded; on many systems, the letter 'L' at
       the beginning of a label has this effect.  You should find out what
       convention your system uses, and follow it.
  
       The default version of this function utilizes
!      'ASM_GENERATE_INTERNAL_LABEL'.
  
   -- Macro: ASM_OUTPUT_DEBUG_LABEL (STREAM, PREFIX, NUM)
       A C statement to output to the stdio stream STREAM a debug info
--- 42341,42352 ----
  
       It is desirable to exclude internal labels from the symbol table of
       the object file.  Most assemblers have a naming convention for
!      labels that should be excluded; on many systems, the letter â€˜Lâ€™ at
       the beginning of a label has this effect.  You should find out what
       convention your system uses, and follow it.
  
       The default version of this function utilizes
!      â€˜ASM_GENERATE_INTERNAL_LABELâ€™.
  
   -- Macro: ASM_OUTPUT_DEBUG_LABEL (STREAM, PREFIX, NUM)
       A C statement to output to the stdio stream STREAM a debug info
*************** This is about outputting labels.
*** 42354,42384 ****
       of instruction bundles.
  
       If this macro is not defined, then
!      '(*targetm.asm_out.internal_label)' will be used.
  
   -- Macro: ASM_GENERATE_INTERNAL_LABEL (STRING, PREFIX, NUM)
       A C statement to store into the string STRING a label whose name is
       made from the string PREFIX and the number NUM.
  
!      This string, when output subsequently by 'assemble_name', should
!      produce the output that '(*targetm.asm_out.internal_label)' would
       produce with the same PREFIX and NUM.
  
!      If the string begins with '*', then 'assemble_name' will output the
       rest of the string unchanged.  It is often convenient for
!      'ASM_GENERATE_INTERNAL_LABEL' to use '*' in this way.  If the
!      string doesn't start with '*', then 'ASM_OUTPUT_LABELREF' gets to
       output the string, and may change it.  (Of course,
!      'ASM_OUTPUT_LABELREF' is also part of your machine description, so
       you should know what it does on your machine.)
  
   -- Macro: ASM_FORMAT_PRIVATE_NAME (OUTVAR, NAME, NUMBER)
       A C expression to assign to OUTVAR (which is a variable of type
!      'char *') a newly allocated string made from the string NAME and
       the number NUMBER, with some suitable punctuation added.  Use
!      'alloca' to get space for the string.
  
!      The string will be used as an argument to 'ASM_OUTPUT_LABELREF' to
       produce an assembler label for an internal static variable whose
       name is NAME.  Therefore, the string must be such as to result in
       valid assembler code.  The argument NUMBER is different each time
--- 42358,42388 ----
       of instruction bundles.
  
       If this macro is not defined, then
!      â€˜(*targetm.asm_out.internal_label)â€™ will be used.
  
   -- Macro: ASM_GENERATE_INTERNAL_LABEL (STRING, PREFIX, NUM)
       A C statement to store into the string STRING a label whose name is
       made from the string PREFIX and the number NUM.
  
!      This string, when output subsequently by â€˜assemble_nameâ€™, should
!      produce the output that â€˜(*targetm.asm_out.internal_label)â€™ would
       produce with the same PREFIX and NUM.
  
!      If the string begins with â€˜*â€™, then â€˜assemble_nameâ€™ will output the
       rest of the string unchanged.  It is often convenient for
!      â€˜ASM_GENERATE_INTERNAL_LABELâ€™ to use â€˜*â€™ in this way.  If the
!      string doesn't start with â€˜*â€™, then â€˜ASM_OUTPUT_LABELREFâ€™ gets to
       output the string, and may change it.  (Of course,
!      â€˜ASM_OUTPUT_LABELREFâ€™ is also part of your machine description, so
       you should know what it does on your machine.)
  
   -- Macro: ASM_FORMAT_PRIVATE_NAME (OUTVAR, NAME, NUMBER)
       A C expression to assign to OUTVAR (which is a variable of type
!      â€˜char *â€™) a newly allocated string made from the string NAME and
       the number NUMBER, with some suitable punctuation added.  Use
!      â€˜allocaâ€™ to get space for the string.
  
!      The string will be used as an argument to â€˜ASM_OUTPUT_LABELREFâ€™ to
       produce an assembler label for an internal static variable whose
       name is NAME.  Therefore, the string must be such as to result in
       valid assembler code.  The argument NUMBER is different each time
*************** This is about outputting labels.
*** 42397,42403 ****
       A C statement to output to the stdio stream STREAM assembler code
       which defines (equates) the symbol NAME to have the value VALUE.
  
!      If 'SET_ASM_OP' is defined, a default definition is provided which
       is correct for most systems.
  
   -- Macro: ASM_OUTPUT_DEF_FROM_DECLS (STREAM, DECL_OF_NAME,
--- 42401,42407 ----
       A C statement to output to the stdio stream STREAM assembler code
       which defines (equates) the symbol NAME to have the value VALUE.
  
!      If â€˜SET_ASM_OPâ€™ is defined, a default definition is provided which
       is correct for most systems.
  
   -- Macro: ASM_OUTPUT_DEF_FROM_DECLS (STREAM, DECL_OF_NAME,
*************** This is about outputting labels.
*** 42405,42414 ****
       A C statement to output to the stdio stream STREAM assembler code
       which defines (equates) the symbol whose tree node is DECL_OF_NAME
       to have the value of the tree node DECL_OF_VALUE.  This macro will
!      be used in preference to 'ASM_OUTPUT_DEF' if it is defined and if
       the tree nodes are available.
  
!      If 'SET_ASM_OP' is defined, a default definition is provided which
       is correct for most systems.
  
   -- Macro: TARGET_DEFERRED_OUTPUT_DEFS (DECL_OF_NAME, DECL_OF_VALUE)
--- 42409,42418 ----
       A C statement to output to the stdio stream STREAM assembler code
       which defines (equates) the symbol whose tree node is DECL_OF_NAME
       to have the value of the tree node DECL_OF_VALUE.  This macro will
!      be used in preference to â€˜ASM_OUTPUT_DEFâ€™ if it is defined and if
       the tree nodes are available.
  
!      If â€˜SET_ASM_OPâ€™ is defined, a default definition is provided which
       is correct for most systems.
  
   -- Macro: TARGET_DEFERRED_OUTPUT_DEFS (DECL_OF_NAME, DECL_OF_VALUE)
*************** This is about outputting labels.
*** 42417,42432 ****
       have the value of the tree node DECL_OF_VALUE should be emitted
       near the end of the current compilation unit.  The default is to
       not defer output of defines.  This macro affects defines output by
!      'ASM_OUTPUT_DEF' and 'ASM_OUTPUT_DEF_FROM_DECLS'.
  
   -- Macro: ASM_OUTPUT_WEAK_ALIAS (STREAM, NAME, VALUE)
       A C statement to output to the stdio stream STREAM assembler code
       which defines (equates) the weak symbol NAME to have the value
!      VALUE.  If VALUE is 'NULL', it defines NAME as an undefined weak
       symbol.
  
       Define this macro if the target only supports weak aliases; define
!      'ASM_OUTPUT_DEF' instead if possible.
  
   -- Macro: OBJC_GEN_METHOD_LABEL (BUF, IS_INST, CLASS_NAME, CAT_NAME,
            SEL_NAME)
--- 42421,42436 ----
       have the value of the tree node DECL_OF_VALUE should be emitted
       near the end of the current compilation unit.  The default is to
       not defer output of defines.  This macro affects defines output by
!      â€˜ASM_OUTPUT_DEFâ€™ and â€˜ASM_OUTPUT_DEF_FROM_DECLSâ€™.
  
   -- Macro: ASM_OUTPUT_WEAK_ALIAS (STREAM, NAME, VALUE)
       A C statement to output to the stdio stream STREAM assembler code
       which defines (equates) the weak symbol NAME to have the value
!      VALUE.  If VALUE is â€˜NULLâ€™, it defines NAME as an undefined weak
       symbol.
  
       Define this macro if the target only supports weak aliases; define
!      â€˜ASM_OUTPUT_DEFâ€™ instead if possible.
  
   -- Macro: OBJC_GEN_METHOD_LABEL (BUF, IS_INST, CLASS_NAME, CAT_NAME,
            SEL_NAME)
*************** This is about outputting labels.
*** 42434,42454 ****
       Objective-C methods.
  
       The default name is a unique method number followed by the name of
!      the class (e.g. '_1_Foo').  For methods in categories, the name of
       the category is also included in the assembler name (e.g.
!      '_1_Foo_Bar').
  
       These names are safe on most systems, but make debugging difficult
       since the method's selector is not present in the name.  Therefore,
       particular systems define other ways of computing names.
  
!      BUF is an expression of type 'char *' which gives you a buffer in
       which to store the name; its length is as long as CLASS_NAME,
       CAT_NAME and SEL_NAME put together, plus 50 characters extra.
  
       The argument IS_INST specifies whether the method is an instance
       method or a class method; CLASS_NAME is the name of the class;
!      CAT_NAME is the name of the category (or 'NULL' if the method is
       not in a category); and SEL_NAME is the name of the selector.
  
       On systems where the assembler can handle quoted names, you can use
--- 42438,42458 ----
       Objective-C methods.
  
       The default name is a unique method number followed by the name of
!      the class (e.g. â€˜_1_Fooâ€™).  For methods in categories, the name of
       the category is also included in the assembler name (e.g.
!      â€˜_1_Foo_Barâ€™).
  
       These names are safe on most systems, but make debugging difficult
       since the method's selector is not present in the name.  Therefore,
       particular systems define other ways of computing names.
  
!      BUF is an expression of type â€˜char *â€™ which gives you a buffer in
       which to store the name; its length is as long as CLASS_NAME,
       CAT_NAME and SEL_NAME put together, plus 50 characters extra.
  
       The argument IS_INST specifies whether the method is an instance
       method or a class method; CLASS_NAME is the name of the class;
!      CAT_NAME is the name of the category (or â€˜NULLâ€™ if the method is
       not in a category); and SEL_NAME is the name of the selector.
  
       On systems where the assembler can handle quoted names, you can use
*************** File: gccint.info,  Node: Initialization
*** 42460,42473 ****
  17.20.5 How Initialization Functions Are Handled
  ------------------------------------------------
  
! The compiled code for certain languages includes "constructors" (also
! called "initialization routines")--functions to initialize data in the
  program when the program is started.  These functions need to be called
! before the program is "started"--that is to say, before 'main' is
  called.
  
!  Compiling some languages generates "destructors" (also called
! "termination routines") that should be called when the program
  terminates.
  
   To make the initialization and termination functions work, the compiler
--- 42464,42477 ----
  17.20.5 How Initialization Functions Are Handled
  ------------------------------------------------
  
! The compiled code for certain languages includes â€œconstructorsâ€� (also
! called â€œinitialization routinesâ€�)--functions to initialize data in the
  program when the program is started.  These functions need to be called
! before the program is "started"--that is to say, before â€˜mainâ€™ is
  called.
  
!  Compiling some languages generates â€œdestructorsâ€� (also called
! â€œtermination routinesâ€�) that should be called when the program
  terminates.
  
   To make the initialization and termination functions work, the compiler
*************** initialization and termination functions
*** 42480,42570 ****
  Much of the structure is common to all four variations.
  
   The linker must build two lists of these functions--a list of
! initialization functions, called '__CTOR_LIST__', and a list of
! termination functions, called '__DTOR_LIST__'.
  
   Each list always begins with an ignored function pointer (which may
! hold 0, -1, or a count of the function pointers after it, depending on
  the environment).  This is followed by a series of zero or more function
  pointers to constructors (or destructors), followed by a function
  pointer containing zero.
  
   Depending on the operating system and its executable file format,
! either 'crtstuff.c' or 'libgcc2.c' traverses these lists at startup time
  and exit time.  Constructors are called in reverse order of the list;
  destructors in forward order.
  
   The best way to handle static constructors works only for object file
  formats which provide arbitrarily-named sections.  A section is set
  aside for a list of constructors, and another for a list of destructors.
! Traditionally these are called '.ctors' and '.dtors'.  Each object file
  that defines an initialization function also puts a word in the
  constructor section to point to that function.  The linker accumulates
! all these words into one contiguous '.ctors' section.  Termination
  functions are handled similarly.
  
!  This method will be chosen as the default by 'target-def.h' if
! 'TARGET_ASM_NAMED_SECTION' is defined.  A target that does not support
  arbitrary sections, but does support special designated constructor and
! destructor sections may define 'CTORS_SECTION_ASM_OP' and
! 'DTORS_SECTION_ASM_OP' to achieve the same effect.
  
   When arbitrary sections are available, there are two variants,
! depending upon how the code in 'crtstuff.c' is called.  On systems that
! support a ".init" section which is executed at program startup, parts of
! 'crtstuff.c' are compiled into that section.  The program is linked by
! the 'gcc' driver like this:
  
       ld -o OUTPUT_FILE crti.o crtbegin.o ... -lgcc crtend.o crtn.o
  
!  The prologue of a function ('__init') appears in the '.init' section of
! 'crti.o'; the epilogue appears in 'crtn.o'.  Likewise for the function
! '__fini' in the ".fini" section.  Normally these files are provided by
  the operating system or by the GNU C library, but are provided by GCC
  for a few targets.
  
!  The objects 'crtbegin.o' and 'crtend.o' are (for most targets) compiled
! from 'crtstuff.c'.  They contain, among other things, code fragments
! within the '.init' and '.fini' sections that branch to routines in the
! '.text' section.  The linker will pull all parts of a section together,
! which results in a complete '__init' function that invokes the routines
  we need at startup.
  
!  To use this variant, you must define the 'INIT_SECTION_ASM_OP' macro
  properly.
  
   If no init section is available, when GCC compiles any function called
! 'main' (or more accurately, any function designated as a program entry
! point by the language front end calling 'expand_main_function'), it
! inserts a procedure call to '__main' as the first executable code after
! the function prologue.  The '__main' function is defined in 'libgcc2.c'
  and runs the global constructors.
  
   In file formats that don't support arbitrary sections, there are again
! two variants.  In the simplest variant, the GNU linker (GNU 'ld') and an
! 'a.out' format must be used.  In this case, 'TARGET_ASM_CONSTRUCTOR' is
! defined to produce a '.stabs' entry of type 'N_SETT', referencing the
! name '__CTOR_LIST__', and with the address of the void function
  containing the initialization code as its value.  The GNU linker
! recognizes this as a request to add the value to a "set"; the values are
  accumulated, and are eventually placed in the executable as a vector in
  the format described above, with a leading (ignored) count and a
! trailing zero element.  'TARGET_ASM_DESTRUCTOR' is handled similarly.
! Since no init section is available, the absence of 'INIT_SECTION_ASM_OP'
! causes the compilation of 'main' to call '__main' as above, starting the
  initialization process.
  
   The last variant uses neither arbitrary sections nor the GNU linker.
  This is preferable when you want to do dynamic linking and when using
  file formats which the GNU linker does not support, such as 'ECOFF'.  In
! this case, 'TARGET_HAVE_CTORS_DTORS' is false, initialization and
  termination functions are recognized simply by their names.  This
! requires an extra program in the linkage step, called 'collect2'.  This
  program pretends to be the linker, for use with GCC; it does its job by
  running the ordinary linker, but also arranges to include the vectors of
  initialization and termination functions.  These functions are called
! via '__main' as described above.  In order to use this method,
! 'use_collect2' must be defined in the target in 'config.gcc'.
  
   The following section describes the specific macros that control and
  customize the handling of initialization and termination functions.
--- 42484,42574 ----
  Much of the structure is common to all four variations.
  
   The linker must build two lists of these functions--a list of
! initialization functions, called â€˜__CTOR_LIST__â€™, and a list of
! termination functions, called â€˜__DTOR_LIST__â€™.
  
   Each list always begins with an ignored function pointer (which may
! hold 0, âˆ’1, or a count of the function pointers after it, depending on
  the environment).  This is followed by a series of zero or more function
  pointers to constructors (or destructors), followed by a function
  pointer containing zero.
  
   Depending on the operating system and its executable file format,
! either â€˜crtstuff.câ€™ or â€˜libgcc2.câ€™ traverses these lists at startup time
  and exit time.  Constructors are called in reverse order of the list;
  destructors in forward order.
  
   The best way to handle static constructors works only for object file
  formats which provide arbitrarily-named sections.  A section is set
  aside for a list of constructors, and another for a list of destructors.
! Traditionally these are called â€˜.ctorsâ€™ and â€˜.dtorsâ€™.  Each object file
  that defines an initialization function also puts a word in the
  constructor section to point to that function.  The linker accumulates
! all these words into one contiguous â€˜.ctorsâ€™ section.  Termination
  functions are handled similarly.
  
!  This method will be chosen as the default by â€˜target-def.hâ€™ if
! â€˜TARGET_ASM_NAMED_SECTIONâ€™ is defined.  A target that does not support
  arbitrary sections, but does support special designated constructor and
! destructor sections may define â€˜CTORS_SECTION_ASM_OPâ€™ and
! â€˜DTORS_SECTION_ASM_OPâ€™ to achieve the same effect.
  
   When arbitrary sections are available, there are two variants,
! depending upon how the code in â€˜crtstuff.câ€™ is called.  On systems that
! support a â€œ.initâ€� section which is executed at program startup, parts of
! â€˜crtstuff.câ€™ are compiled into that section.  The program is linked by
! the â€˜gccâ€™ driver like this:
  
       ld -o OUTPUT_FILE crti.o crtbegin.o ... -lgcc crtend.o crtn.o
  
!  The prologue of a function (â€˜__initâ€™) appears in the â€˜.initâ€™ section of
! â€˜crti.oâ€™; the epilogue appears in â€˜crtn.oâ€™.  Likewise for the function
! â€˜__finiâ€™ in the â€œ.finiâ€� section.  Normally these files are provided by
  the operating system or by the GNU C library, but are provided by GCC
  for a few targets.
  
!  The objects â€˜crtbegin.oâ€™ and â€˜crtend.oâ€™ are (for most targets) compiled
! from â€˜crtstuff.câ€™.  They contain, among other things, code fragments
! within the â€˜.initâ€™ and â€˜.finiâ€™ sections that branch to routines in the
! â€˜.textâ€™ section.  The linker will pull all parts of a section together,
! which results in a complete â€˜__initâ€™ function that invokes the routines
  we need at startup.
  
!  To use this variant, you must define the â€˜INIT_SECTION_ASM_OPâ€™ macro
  properly.
  
   If no init section is available, when GCC compiles any function called
! â€˜mainâ€™ (or more accurately, any function designated as a program entry
! point by the language front end calling â€˜expand_main_functionâ€™), it
! inserts a procedure call to â€˜__mainâ€™ as the first executable code after
! the function prologue.  The â€˜__mainâ€™ function is defined in â€˜libgcc2.câ€™
  and runs the global constructors.
  
   In file formats that don't support arbitrary sections, there are again
! two variants.  In the simplest variant, the GNU linker (GNU â€˜ldâ€™) and an
! 'a.out' format must be used.  In this case, â€˜TARGET_ASM_CONSTRUCTORâ€™ is
! defined to produce a â€˜.stabsâ€™ entry of type â€˜N_SETTâ€™, referencing the
! name â€˜__CTOR_LIST__â€™, and with the address of the void function
  containing the initialization code as its value.  The GNU linker
! recognizes this as a request to add the value to a â€œsetâ€�; the values are
  accumulated, and are eventually placed in the executable as a vector in
  the format described above, with a leading (ignored) count and a
! trailing zero element.  â€˜TARGET_ASM_DESTRUCTORâ€™ is handled similarly.
! Since no init section is available, the absence of â€˜INIT_SECTION_ASM_OPâ€™
! causes the compilation of â€˜mainâ€™ to call â€˜__mainâ€™ as above, starting the
  initialization process.
  
   The last variant uses neither arbitrary sections nor the GNU linker.
  This is preferable when you want to do dynamic linking and when using
  file formats which the GNU linker does not support, such as 'ECOFF'.  In
! this case, â€˜TARGET_HAVE_CTORS_DTORSâ€™ is false, initialization and
  termination functions are recognized simply by their names.  This
! requires an extra program in the linkage step, called â€˜collect2â€™.  This
  program pretends to be the linker, for use with GCC; it does its job by
  running the ordinary linker, but also arranges to include the vectors of
  initialization and termination functions.  These functions are called
! via â€˜__mainâ€™ as described above.  In order to use this method,
! â€˜use_collect2â€™ must be defined in the target in â€˜config.gccâ€™.
  
   The following section describes the specific macros that control and
  customize the handling of initialization and termination functions.
*************** and termination functions:
*** 42584,42597 ****
       initialization code.  If not defined, GCC will assume such a
       section does not exist.  When you are using special sections for
       initialization and termination functions, this macro also controls
!      how 'crtstuff.c' and 'libgcc2.c' arrange to run the initialization
       functions.
  
   -- Macro: HAS_INIT_SECTION
!      If defined, 'main' will not call '__main' as described above.  This
       macro should be defined for systems that control start-up code on a
       symbol-by-symbol basis, such as OSF/1, and should not be defined
!      explicitly for systems that support 'INIT_SECTION_ASM_OP'.
  
   -- Macro: LD_INIT_SWITCH
       If defined, a C string constant for a switch that tells the linker
--- 42588,42601 ----
       initialization code.  If not defined, GCC will assume such a
       section does not exist.  When you are using special sections for
       initialization and termination functions, this macro also controls
!      how â€˜crtstuff.câ€™ and â€˜libgcc2.câ€™ arrange to run the initialization
       functions.
  
   -- Macro: HAS_INIT_SECTION
!      If defined, â€˜mainâ€™ will not call â€˜__mainâ€™ as described above.  This
       macro should be defined for systems that control start-up code on a
       symbol-by-symbol basis, such as OSF/1, and should not be defined
!      explicitly for systems that support â€˜INIT_SECTION_ASM_OPâ€™.
  
   -- Macro: LD_INIT_SWITCH
       If defined, a C string constant for a switch that tells the linker
*************** and termination functions:
*** 42606,42612 ****
       automatically called when a shared library is loaded.  The function
       should call FUNC, which takes no arguments.  If not defined, and
       the object format requires an explicit initialization function,
!      then a function called '_GLOBAL__DI' will be generated.
  
       This function and the following one are used by collect2 when
       linking a shared library that needs constructors or destructors, or
--- 42610,42616 ----
       automatically called when a shared library is loaded.  The function
       should call FUNC, which takes no arguments.  If not defined, and
       the object format requires an explicit initialization function,
!      then a function called â€˜_GLOBAL__DIâ€™ will be generated.
  
       This function and the following one are used by collect2 when
       linking a shared library that needs constructors or destructors, or
*************** and termination functions:
*** 42617,42641 ****
       automatically called when a shared library is unloaded.  The
       function should call FUNC, which takes no arguments.  If not
       defined, and the object format requires an explicit finalization
!      function, then a function called '_GLOBAL__DD' will be generated.
  
   -- Macro: INVOKE__main
!      If defined, 'main' will call '__main' despite the presence of
!      'INIT_SECTION_ASM_OP'.  This macro should be defined for systems
       where the init section is not actually run automatically, but is
       still useful for collecting the lists of constructors and
       destructors.
  
   -- Macro: SUPPORTS_INIT_PRIORITY
!      If nonzero, the C++ 'init_priority' attribute is supported and the
       compiler should emit instructions to control the order of
       initialization of objects.  If zero, the compiler will issue an
!      error message upon encountering an 'init_priority' attribute.
  
   -- Target Hook: bool TARGET_HAVE_CTORS_DTORS
       This value is true if the target supports some "native" method of
       collecting constructors and destructors to be run at startup and
!      exit.  It is false if we must use 'collect2'.
  
   -- Target Hook: bool TARGET_DTORS_FROM_CXA_ATEXIT
       This value is true if the target wants destructors to be queued to
--- 42621,42645 ----
       automatically called when a shared library is unloaded.  The
       function should call FUNC, which takes no arguments.  If not
       defined, and the object format requires an explicit finalization
!      function, then a function called â€˜_GLOBAL__DDâ€™ will be generated.
  
   -- Macro: INVOKE__main
!      If defined, â€˜mainâ€™ will call â€˜__mainâ€™ despite the presence of
!      â€˜INIT_SECTION_ASM_OPâ€™.  This macro should be defined for systems
       where the init section is not actually run automatically, but is
       still useful for collecting the lists of constructors and
       destructors.
  
   -- Macro: SUPPORTS_INIT_PRIORITY
!      If nonzero, the C++ â€˜init_priorityâ€™ attribute is supported and the
       compiler should emit instructions to control the order of
       initialization of objects.  If zero, the compiler will issue an
!      error message upon encountering an â€˜init_priorityâ€™ attribute.
  
   -- Target Hook: bool TARGET_HAVE_CTORS_DTORS
       This value is true if the target supports some "native" method of
       collecting constructors and destructors to be run at startup and
!      exit.  It is false if we must use â€˜collect2â€™.
  
   -- Target Hook: bool TARGET_DTORS_FROM_CXA_ATEXIT
       This value is true if the target wants destructors to be queued to
*************** and termination functions:
*** 42643,42697 ****
       priority level, a new constructor will be entered that registers
       the destructors for that level with __cxa_atexit (and there will be
       no destructors emitted).  It is false the method implied by
!      'have_ctors_dtors' is used.
  
   -- Target Hook: void TARGET_ASM_CONSTRUCTOR (rtx SYMBOL, int PRIORITY)
       If defined, a function that outputs assembler code to arrange to
       call the function referenced by SYMBOL at initialization time.
  
!      Assume that SYMBOL is a 'SYMBOL_REF' for a function taking no
       arguments and with no return value.  If the target supports
       initialization priorities, PRIORITY is a value between 0 and
!      'MAX_INIT_PRIORITY'; otherwise it must be 'DEFAULT_INIT_PRIORITY'.
  
       If this macro is not defined by the target, a suitable default will
       be chosen if (1) the target supports arbitrary section names, (2)
!      the target defines 'CTORS_SECTION_ASM_OP', or (3) 'USE_COLLECT2' is
       not defined.
  
   -- Target Hook: void TARGET_ASM_DESTRUCTOR (rtx SYMBOL, int PRIORITY)
!      This is like 'TARGET_ASM_CONSTRUCTOR' but used for termination
       functions rather than initialization functions.
  
!  If 'TARGET_HAVE_CTORS_DTORS' is true, the initialization routine
  generated for the generated object file will have static linkage.
  
!  If your system uses 'collect2' as the means of processing constructors,
! then that program normally uses 'nm' to scan an object file for
  constructor functions to be called.
  
   On certain kinds of systems, you can define this macro to make
! 'collect2' work faster (and, in some cases, make it work at all):
  
   -- Macro: OBJECT_FORMAT_COFF
       Define this macro if the system uses COFF (Common Object File
!      Format) object files, so that 'collect2' can assume this format and
       scan object files directly for dynamic constructor/destructor
       functions.
  
!      This macro is effective only in a native compiler; 'collect2' as
!      part of a cross compiler always uses 'nm' for the target machine.
  
   -- Macro: REAL_NM_FILE_NAME
       Define this macro as a C string constant containing the file name
!      to use to execute 'nm'.  The default is to search the path normally
!      for 'nm'.
  
   -- Macro: NM_FLAGS
!      'collect2' calls 'nm' to scan object files for static constructors
!      and destructors and LTO info.  By default, '-n' is passed.  Define
!      'NM_FLAGS' to a C string constant if other options are needed to
!      get the same output format as GNU 'nm -n' produces.
  
   If your system supports shared libraries and has a program to list the
  dynamic dependencies of a given library or executable, you can define
--- 42647,42701 ----
       priority level, a new constructor will be entered that registers
       the destructors for that level with __cxa_atexit (and there will be
       no destructors emitted).  It is false the method implied by
!      â€˜have_ctors_dtorsâ€™ is used.
  
   -- Target Hook: void TARGET_ASM_CONSTRUCTOR (rtx SYMBOL, int PRIORITY)
       If defined, a function that outputs assembler code to arrange to
       call the function referenced by SYMBOL at initialization time.
  
!      Assume that SYMBOL is a â€˜SYMBOL_REFâ€™ for a function taking no
       arguments and with no return value.  If the target supports
       initialization priorities, PRIORITY is a value between 0 and
!      â€˜MAX_INIT_PRIORITYâ€™; otherwise it must be â€˜DEFAULT_INIT_PRIORITYâ€™.
  
       If this macro is not defined by the target, a suitable default will
       be chosen if (1) the target supports arbitrary section names, (2)
!      the target defines â€˜CTORS_SECTION_ASM_OPâ€™, or (3) â€˜USE_COLLECT2â€™ is
       not defined.
  
   -- Target Hook: void TARGET_ASM_DESTRUCTOR (rtx SYMBOL, int PRIORITY)
!      This is like â€˜TARGET_ASM_CONSTRUCTORâ€™ but used for termination
       functions rather than initialization functions.
  
!  If â€˜TARGET_HAVE_CTORS_DTORSâ€™ is true, the initialization routine
  generated for the generated object file will have static linkage.
  
!  If your system uses â€˜collect2â€™ as the means of processing constructors,
! then that program normally uses â€˜nmâ€™ to scan an object file for
  constructor functions to be called.
  
   On certain kinds of systems, you can define this macro to make
! â€˜collect2â€™ work faster (and, in some cases, make it work at all):
  
   -- Macro: OBJECT_FORMAT_COFF
       Define this macro if the system uses COFF (Common Object File
!      Format) object files, so that â€˜collect2â€™ can assume this format and
       scan object files directly for dynamic constructor/destructor
       functions.
  
!      This macro is effective only in a native compiler; â€˜collect2â€™ as
!      part of a cross compiler always uses â€˜nmâ€™ for the target machine.
  
   -- Macro: REAL_NM_FILE_NAME
       Define this macro as a C string constant containing the file name
!      to use to execute â€˜nmâ€™.  The default is to search the path normally
!      for â€˜nmâ€™.
  
   -- Macro: NM_FLAGS
!      â€˜collect2â€™ calls â€˜nmâ€™ to scan object files for static constructors
!      and destructors and LTO info.  By default, â€˜-nâ€™ is passed.  Define
!      â€˜NM_FLAGSâ€™ to a C string constant if other options are needed to
!      get the same output format as GNU â€˜nm -nâ€™ produces.
  
   If your system supports shared libraries and has a program to list the
  dynamic dependencies of a given library or executable, you can define
*************** termination functions in shared librarie
*** 42700,42721 ****
  
   -- Macro: LDD_SUFFIX
       Define this macro to a C string constant containing the name of the
!      program which lists dynamic dependencies, like 'ldd' under SunOS 4.
  
   -- Macro: PARSE_LDD_OUTPUT (PTR)
       Define this macro to be C code that extracts filenames from the
!      output of the program denoted by 'LDD_SUFFIX'.  PTR is a variable
!      of type 'char *' that points to the beginning of a line of output
!      from 'LDD_SUFFIX'.  If the line lists a dynamic dependency, the
       code must advance PTR to the beginning of the filename on that
!      line.  Otherwise, it must set PTR to 'NULL'.
  
   -- Macro: SHLIB_SUFFIX
       Define this macro to a C string constant containing the default
!      shared library extension of the target (e.g., '".so"').  'collect2'
       strips version information after this suffix when generating global
       constructor and destructor names.  This define is only needed on
!      targets that use 'collect2' to process constructors and
       destructors.
  
  
--- 42704,42725 ----
  
   -- Macro: LDD_SUFFIX
       Define this macro to a C string constant containing the name of the
!      program which lists dynamic dependencies, like â€˜lddâ€™ under SunOS 4.
  
   -- Macro: PARSE_LDD_OUTPUT (PTR)
       Define this macro to be C code that extracts filenames from the
!      output of the program denoted by â€˜LDD_SUFFIXâ€™.  PTR is a variable
!      of type â€˜char *â€™ that points to the beginning of a line of output
!      from â€˜LDD_SUFFIXâ€™.  If the line lists a dynamic dependency, the
       code must advance PTR to the beginning of the filename on that
!      line.  Otherwise, it must set PTR to â€˜NULLâ€™.
  
   -- Macro: SHLIB_SUFFIX
       Define this macro to a C string constant containing the default
!      shared library extension of the target (e.g., â€˜".so"â€™).  â€˜collect2â€™
       strips version information after this suffix when generating global
       constructor and destructor names.  This define is only needed on
!      targets that use â€˜collect2â€™ to process constructors and
       destructors.
  
  
*************** This describes assembler instruction out
*** 42735,42754 ****
   -- Macro: ADDITIONAL_REGISTER_NAMES
       If defined, a C initializer for an array of structures containing a
       name and a register number.  This macro defines additional names
!      for hard registers, thus allowing the 'asm' option in declarations
       to refer to registers using alternate names.
  
   -- Macro: OVERLAPPING_REGISTER_NAMES
       If defined, a C initializer for an array of structures containing a
       name, a register number and a count of the number of consecutive
       machine registers the name overlaps.  This macro defines additional
!      names for hard registers, thus allowing the 'asm' option in
       declarations to refer to registers using alternate names.  Unlike
!      'ADDITIONAL_REGISTER_NAMES', this macro should be used when the
       register name implies multiple underlying registers.
  
       This macro should be used when it is important that a clobber in an
!      'asm' statement clobbers all the underlying values implied by the
       register name.  For example, on ARM, clobbering the
       double-precision VFP register "d0" implies clobbering both
       single-precision registers "s0" and "s1".
--- 42739,42758 ----
   -- Macro: ADDITIONAL_REGISTER_NAMES
       If defined, a C initializer for an array of structures containing a
       name and a register number.  This macro defines additional names
!      for hard registers, thus allowing the â€˜asmâ€™ option in declarations
       to refer to registers using alternate names.
  
   -- Macro: OVERLAPPING_REGISTER_NAMES
       If defined, a C initializer for an array of structures containing a
       name, a register number and a count of the number of consecutive
       machine registers the name overlaps.  This macro defines additional
!      names for hard registers, thus allowing the â€˜asmâ€™ option in
       declarations to refer to registers using alternate names.  Unlike
!      â€˜ADDITIONAL_REGISTER_NAMESâ€™, this macro should be used when the
       register name implies multiple underlying registers.
  
       This macro should be used when it is important that a clobber in an
!      â€˜asmâ€™ statement clobbers all the underlying values implied by the
       register name.  For example, on ARM, clobbering the
       double-precision VFP register "d0" implies clobbering both
       single-precision registers "s0" and "s1".
*************** This describes assembler instruction out
*** 42759,42765 ****
  
       The definition is a C statement or statements which output an
       assembler instruction opcode to the stdio stream STREAM.  The
!      macro-operand PTR is a variable of type 'char *' which points to
       the opcode name in its "internal" form--the form that is written in
       the machine description.  The definition should output the opcode
       name to STREAM, performing any translation you desire, and
--- 42763,42769 ----
  
       The definition is a C statement or statements which output an
       assembler instruction opcode to the stdio stream STREAM.  The
!      macro-operand PTR is a variable of type â€˜char *â€™ which points to
       the opcode name in its "internal" form--the form that is written in
       the machine description.  The definition should output the opcode
       name to STREAM, performing any translation you desire, and
*************** This describes assembler instruction out
*** 42768,42779 ****
  
       In fact, your macro definition may process less than the entire
       opcode name, or more than the opcode name; but if you want to
!      process text that includes '%'-sequences to substitute operands,
       you must take care of the substitution yourself.  Just be sure to
       increment PTR over whatever text should not be output normally.
  
       If you need to look at the operand values, they can be found as the
!      elements of 'recog_data.operand'.
  
       If the macro definition does nothing, the instruction is output in
       the usual way.
--- 42772,42783 ----
  
       In fact, your macro definition may process less than the entire
       opcode name, or more than the opcode name; but if you want to
!      process text that includes â€˜%â€™-sequences to substitute operands,
       you must take care of the substitution yourself.  Just be sure to
       increment PTR over whatever text should not be output normally.
  
       If you need to look at the operand values, they can be found as the
!      elements of â€˜recog_data.operandâ€™.
  
       If the macro definition does nothing, the instruction is output in
       the usual way.
*************** This describes assembler instruction out
*** 42821,42843 ****
       CODE is a value that can be used to specify one of several ways of
       printing the operand.  It is used when identical operands must be
       printed differently depending on the context.  CODE comes from the
!      '%' specification that was used to request printing of the operand.
!      If the specification was just '%DIGIT' then CODE is 0; if the
!      specification was '%LTR DIGIT' then CODE is the ASCII code for LTR.
  
       If X is a register, this macro should print the register's name.
!      The names can be found in an array 'reg_names' whose type is 'char
!      *[]'.  'reg_names' is initialized from 'REGISTER_NAMES'.
  
!      When the machine description has a specification '%PUNCT' (a '%'
       followed by a punctuation character), this macro is called with a
       null pointer for X and the punctuation character for CODE.
  
   -- Macro: PRINT_OPERAND_PUNCT_VALID_P (CODE)
       A C expression which evaluates to true if CODE is a valid
!      punctuation character for use in the 'PRINT_OPERAND' macro.  If
!      'PRINT_OPERAND_PUNCT_VALID_P' is not defined, it means that no
!      punctuation characters (except for the standard one, '%') are used
       in this way.
  
   -- Macro: PRINT_OPERAND_ADDRESS (STREAM, X)
--- 42825,42847 ----
       CODE is a value that can be used to specify one of several ways of
       printing the operand.  It is used when identical operands must be
       printed differently depending on the context.  CODE comes from the
!      â€˜%â€™ specification that was used to request printing of the operand.
!      If the specification was just â€˜%DIGITâ€™ then CODE is 0; if the
!      specification was â€˜%LTR DIGITâ€™ then CODE is the ASCII code for LTR.
  
       If X is a register, this macro should print the register's name.
!      The names can be found in an array â€˜reg_namesâ€™ whose type is â€˜char
!      *[]â€™.  â€˜reg_namesâ€™ is initialized from â€˜REGISTER_NAMESâ€™.
  
!      When the machine description has a specification â€˜%PUNCTâ€™ (a â€˜%â€™
       followed by a punctuation character), this macro is called with a
       null pointer for X and the punctuation character for CODE.
  
   -- Macro: PRINT_OPERAND_PUNCT_VALID_P (CODE)
       A C expression which evaluates to true if CODE is a valid
!      punctuation character for use in the â€˜PRINT_OPERANDâ€™ macro.  If
!      â€˜PRINT_OPERAND_PUNCT_VALID_Pâ€™ is not defined, it means that no
!      punctuation characters (except for the standard one, â€˜%â€™) are used
       in this way.
  
   -- Macro: PRINT_OPERAND_ADDRESS (STREAM, X)
*************** This describes assembler instruction out
*** 42847,42859 ****
  
       On some machines, the syntax for a symbolic address depends on the
       section that the address refers to.  On these machines, define the
!      hook 'TARGET_ENCODE_SECTION_INFO' to store the information into the
!      'symbol_ref', and then check for it here.  *Note Assembler
       Format::.
  
   -- Macro: DBR_OUTPUT_SEQEND (FILE)
       A C statement, to be executed after all slot-filler instructions
!      have been output.  If necessary, call 'dbr_sequence_length' to
       determine the number of slots filled in a sequence (zero if not
       currently outputting a sequence), to decide how many no-ops to
       output, or whatever.
--- 42851,42863 ----
  
       On some machines, the syntax for a symbolic address depends on the
       section that the address refers to.  On these machines, define the
!      hook â€˜TARGET_ENCODE_SECTION_INFOâ€™ to store the information into the
!      â€˜symbol_refâ€™, and then check for it here.  *Note Assembler
       Format::.
  
   -- Macro: DBR_OUTPUT_SEQEND (FILE)
       A C statement, to be executed after all slot-filler instructions
!      have been output.  If necessary, call â€˜dbr_sequence_lengthâ€™ to
       determine the number of slots filled in a sequence (zero if not
       currently outputting a sequence), to decide how many no-ops to
       output, or whatever.
*************** This describes assembler instruction out
*** 42865,42887 ****
   Note that output routines for instructions with delay slots must be
  prepared to deal with not being output as part of a sequence (i.e. when
  the scheduling pass is not run, or when no slot fillers could be found.)
! The variable 'final_sequence' is null when not processing a sequence,
! otherwise it contains the 'sequence' rtx being output.
  
   -- Macro: REGISTER_PREFIX
   -- Macro: LOCAL_LABEL_PREFIX
   -- Macro: USER_LABEL_PREFIX
   -- Macro: IMMEDIATE_PREFIX
!      If defined, C string expressions to be used for the '%R', '%L',
!      '%U', and '%I' options of 'asm_fprintf' (see 'final.cc').  These
!      are useful when a single 'md' file must support multiple assembler
!      formats.  In that case, the various 'tm.h' files can define these
       macros differently.
  
   -- Macro: ASM_FPRINTF_EXTENSIONS (FILE, ARGPTR, FORMAT)
!      If defined this macro should expand to a series of 'case'
!      statements which will be parsed inside the 'switch' statement of
!      the 'asm_fprintf' function.  This allows targets to define extra
       printf formats which may useful when generating their assembler
       statements.  Note that uppercase letters are reserved for future
       generic extensions to asm_fprintf, and so are not available to
--- 42869,42891 ----
   Note that output routines for instructions with delay slots must be
  prepared to deal with not being output as part of a sequence (i.e. when
  the scheduling pass is not run, or when no slot fillers could be found.)
! The variable â€˜final_sequenceâ€™ is null when not processing a sequence,
! otherwise it contains the â€˜sequenceâ€™ rtx being output.
  
   -- Macro: REGISTER_PREFIX
   -- Macro: LOCAL_LABEL_PREFIX
   -- Macro: USER_LABEL_PREFIX
   -- Macro: IMMEDIATE_PREFIX
!      If defined, C string expressions to be used for the â€˜%Râ€™, â€˜%Lâ€™,
!      â€˜%Uâ€™, and â€˜%Iâ€™ options of â€˜asm_fprintfâ€™ (see â€˜final.ccâ€™).  These
!      are useful when a single â€˜mdâ€™ file must support multiple assembler
!      formats.  In that case, the various â€˜tm.hâ€™ files can define these
       macros differently.
  
   -- Macro: ASM_FPRINTF_EXTENSIONS (FILE, ARGPTR, FORMAT)
!      If defined this macro should expand to a series of â€˜caseâ€™
!      statements which will be parsed inside the â€˜switchâ€™ statement of
!      the â€˜asm_fprintfâ€™ function.  This allows targets to define extra
       printf formats which may useful when generating their assembler
       statements.  Note that uppercase letters are reserved for future
       generic extensions to asm_fprintf, and so are not available to
*************** otherwise it contains the 'sequence' rtx
*** 42897,42921 ****
       use, with zero as the first variant.
  
       If this macro is defined, you may use constructs of the form
!           '{option0|option1|option2...}'
       in the output templates of patterns (*note Output Template::) or in
!      the first argument of 'asm_fprintf'.  This construct outputs
!      'option0', 'option1', 'option2', etc., if the value of
!      'ASSEMBLER_DIALECT' is zero, one, two, etc.  Any special characters
       within these strings retain their usual meaning.  If there are
       fewer alternatives within the braces than the value of
!      'ASSEMBLER_DIALECT', the construct outputs nothing.  If it's needed
!      to print curly braces or '|' character in assembler output
!      directly, '%{', '%}' and '%|' can be used.
  
!      If you do not define this macro, the characters '{', '|' and '}' do
       not have any special meaning when used in templates or operands to
!      'asm_fprintf'.
  
!      Define the macros 'REGISTER_PREFIX', 'LOCAL_LABEL_PREFIX',
!      'USER_LABEL_PREFIX' and 'IMMEDIATE_PREFIX' if you can express the
       variations in assembler language syntax with that mechanism.
!      Define 'ASSEMBLER_DIALECT' and use the '{option0|option1}' syntax
       if the syntax variant are larger and involve such things as
       different opcodes or operand order.
  
--- 42901,42925 ----
       use, with zero as the first variant.
  
       If this macro is defined, you may use constructs of the form
!           â€˜{option0|option1|option2...}â€™
       in the output templates of patterns (*note Output Template::) or in
!      the first argument of â€˜asm_fprintfâ€™.  This construct outputs
!      â€˜option0â€™, â€˜option1â€™, â€˜option2â€™, etc., if the value of
!      â€˜ASSEMBLER_DIALECTâ€™ is zero, one, two, etc.  Any special characters
       within these strings retain their usual meaning.  If there are
       fewer alternatives within the braces than the value of
!      â€˜ASSEMBLER_DIALECTâ€™, the construct outputs nothing.  If it's needed
!      to print curly braces or â€˜|â€™ character in assembler output
!      directly, â€˜%{â€™, â€˜%}â€™ and â€˜%|â€™ can be used.
  
!      If you do not define this macro, the characters â€˜{â€™, â€˜|â€™ and â€˜}â€™ do
       not have any special meaning when used in templates or operands to
!      â€˜asm_fprintfâ€™.
  
!      Define the macros â€˜REGISTER_PREFIXâ€™, â€˜LOCAL_LABEL_PREFIXâ€™,
!      â€˜USER_LABEL_PREFIXâ€™ and â€˜IMMEDIATE_PREFIXâ€™ if you can express the
       variations in assembler language syntax with that mechanism.
!      Define â€˜ASSEMBLER_DIALECTâ€™ and use the â€˜{option0|option1}â€™ syntax
       if the syntax variant are larger and involve such things as
       different opcodes or operand order.
  
*************** This concerns dispatch tables.
*** 42942,42948 ****
       pseudo-instruction to generate a difference between two labels.
       VALUE and REL are the numbers of two internal labels.  The
       definitions of these labels are output using
!      '(*targetm.asm_out.internal_label)', and they must be printed in
       the same way here.  For example,
  
            fprintf (STREAM, "\t.word L%d-L%d\n",
--- 42946,42952 ----
       pseudo-instruction to generate a difference between two labels.
       VALUE and REL are the numbers of two internal labels.  The
       definitions of these labels are output using
!      â€˜(*targetm.asm_out.internal_label)â€™, and they must be printed in
       the same way here.  For example,
  
            fprintf (STREAM, "\t.word L%d-L%d\n",
*************** This concerns dispatch tables.
*** 42951,42957 ****
       You must provide this macro on machines where the addresses in a
       dispatch table are relative to the table's own address.  If
       defined, GCC will also use this macro on all machines when
!      producing PIC.  BODY is the body of the 'ADDR_DIFF_VEC'; it is
       provided so that the mode and flags can be read.
  
   -- Macro: ASM_OUTPUT_ADDR_VEC_ELT (STREAM, VALUE)
--- 42955,42961 ----
       You must provide this macro on machines where the addresses in a
       dispatch table are relative to the table's own address.  If
       defined, GCC will also use this macro on all machines when
!      producing PIC.  BODY is the body of the â€˜ADDR_DIFF_VECâ€™; it is
       provided so that the mode and flags can be read.
  
   -- Macro: ASM_OUTPUT_ADDR_VEC_ELT (STREAM, VALUE)
*************** This concerns dispatch tables.
*** 42962,42983 ****
       stream STREAM an assembler pseudo-instruction to generate a
       reference to a label.  VALUE is the number of an internal label
       whose definition is output using
!      '(*targetm.asm_out.internal_label)'.  For example,
  
            fprintf (STREAM, "\t.word L%d\n", VALUE)
  
   -- Macro: ASM_OUTPUT_CASE_LABEL (STREAM, PREFIX, NUM, TABLE)
       Define this if the label before a jump-table needs to be output
       specially.  The first three arguments are the same as for
!      '(*targetm.asm_out.internal_label)'; the fourth argument is the
!      jump-table which follows (a 'jump_table_data' containing an
!      'addr_vec' or 'addr_diff_vec').
  
!      This feature is used on system V to output a 'swbeg' statement for
       the table.
  
       If this macro is not defined, these labels are output with
!      '(*targetm.asm_out.internal_label)'.
  
   -- Macro: ASM_OUTPUT_CASE_END (STREAM, NUM, TABLE)
       Define this if something special must be output at the end of a
--- 42966,42987 ----
       stream STREAM an assembler pseudo-instruction to generate a
       reference to a label.  VALUE is the number of an internal label
       whose definition is output using
!      â€˜(*targetm.asm_out.internal_label)â€™.  For example,
  
            fprintf (STREAM, "\t.word L%d\n", VALUE)
  
   -- Macro: ASM_OUTPUT_CASE_LABEL (STREAM, PREFIX, NUM, TABLE)
       Define this if the label before a jump-table needs to be output
       specially.  The first three arguments are the same as for
!      â€˜(*targetm.asm_out.internal_label)â€™; the fourth argument is the
!      jump-table which follows (a â€˜jump_table_dataâ€™ containing an
!      â€˜addr_vecâ€™ or â€˜addr_diff_vecâ€™).
  
!      This feature is used on system V to output a â€˜swbegâ€™ statement for
       the table.
  
       If this macro is not defined, these labels are output with
!      â€˜(*targetm.asm_out.internal_label)â€™.
  
   -- Macro: ASM_OUTPUT_CASE_END (STREAM, NUM, TABLE)
       Define this if something special must be output at the end of a
*************** This concerns dispatch tables.
*** 43020,43026 ****
  
   -- Target Hook: void TARGET_ASM_EMIT_EXCEPT_PERSONALITY (rtx
            PERSONALITY)
!      If the target implements 'TARGET_ASM_UNWIND_EMIT', this hook may be
       used to emit a directive to install a personality hook into the
       unwind info.  This hook should not be used if dwarf2 unwind info is
       used.
--- 43024,43030 ----
  
   -- Target Hook: void TARGET_ASM_EMIT_EXCEPT_PERSONALITY (rtx
            PERSONALITY)
!      If the target implements â€˜TARGET_ASM_UNWIND_EMITâ€™, this hook may be
       used to emit a directive to install a personality hook into the
       unwind info.  This hook should not be used if dwarf2 unwind info is
       used.
*************** This concerns dispatch tables.
*** 43029,43044 ****
            *INSN)
       This target hook emits assembly directives required to unwind the
       given instruction.  This is only used when
!      'TARGET_EXCEPT_UNWIND_INFO' returns 'UI_TARGET'.
  
   -- Target Hook: rtx TARGET_ASM_MAKE_EH_SYMBOL_INDIRECT (rtx ORIGSYMBOL,
            bool PUBVIS)
       If necessary, modify personality and LSDA references to handle
!      indirection.  The original symbol is in 'origsymbol' and if
!      'pubvis' is true the symbol is visible outside the TU.
  
   -- Target Hook: bool TARGET_ASM_UNWIND_EMIT_BEFORE_INSN
!      True if the 'TARGET_ASM_UNWIND_EMIT' hook should be called before
       the assembly for INSN has been emitted, false if the hook should be
       called afterward.
  
--- 43033,43048 ----
            *INSN)
       This target hook emits assembly directives required to unwind the
       given instruction.  This is only used when
!      â€˜TARGET_EXCEPT_UNWIND_INFOâ€™ returns â€˜UI_TARGETâ€™.
  
   -- Target Hook: rtx TARGET_ASM_MAKE_EH_SYMBOL_INDIRECT (rtx ORIGSYMBOL,
            bool PUBVIS)
       If necessary, modify personality and LSDA references to handle
!      indirection.  The original symbol is in â€˜origsymbolâ€™ and if
!      â€˜pubvisâ€™ is true the symbol is visible outside the TU.
  
   -- Target Hook: bool TARGET_ASM_UNWIND_EMIT_BEFORE_INSN
!      True if the â€˜TARGET_ASM_UNWIND_EMITâ€™ hook should be called before
       the assembly for INSN has been emitted, false if the hook should be
       called afterward.
  
*************** region.
*** 43066,43072 ****
       If defined, a C string constant for the name of the section
       containing exception handling frame unwind information.  If not
       defined, GCC will provide a default definition if the target
!      supports named sections.  'crtstuff.c' uses this macro to switch to
       the appropriate section.
  
       You should define this symbol if your target supports DWARF 2 frame
--- 43070,43076 ----
       If defined, a C string constant for the name of the section
       containing exception handling frame unwind information.  If not
       defined, GCC will provide a default definition if the target
!      supports named sections.  â€˜crtstuff.câ€™ uses this macro to switch to
       the appropriate section.
  
       You should define this symbol if your target supports DWARF 2 frame
*************** region.
*** 43078,43084 ****
       labels and generate code to register the frames.
  
       This might be necessary, for instance, if the system linker will
!      not place the eh_frames in-between the sentinals from 'crtstuff.c',
       or if the system linker does garbage collection and sections cannot
       be marked as not to be collected.
  
--- 43082,43088 ----
       labels and generate code to register the frames.
  
       This might be necessary, for instance, if the system linker will
!      not place the eh_frames in-between the sentinals from â€˜crtstuff.câ€™,
       or if the system linker does garbage collection and sections cannot
       be marked as not to be collected.
  
*************** region.
*** 43089,43160 ****
       read-only and read-write sections into a single read-write section.
  
   -- Macro: MASK_RETURN_ADDR
!      An rtx used to mask the return address found via 'RETURN_ADDR_RTX',
       so that it does not contain any extraneous set bits in it.
  
   -- Macro: DWARF2_UNWIND_INFO
       Define this macro to 0 if your target supports DWARF 2 frame unwind
       information, but it does not yet work with exception handling.
       Otherwise, if your target supports this information (if it defines
!      'INCOMING_RETURN_ADDR_RTX' and 'OBJECT_FORMAT_ELF'), GCC will
       provide a default definition of 1.
  
   -- Common Target Hook: enum unwind_info_type TARGET_EXCEPT_UNWIND_INFO
            (struct gcc_options *OPTS)
       This hook defines the mechanism that will be used for exception
       handling by the target.  If the target has ABI specified unwind
!      tables, the hook should return 'UI_TARGET'.  If the target is to
!      use the 'setjmp'/'longjmp'-based exception handling scheme, the
!      hook should return 'UI_SJLJ'.  If the target supports DWARF 2 frame
!      unwind information, the hook should return 'UI_DWARF2'.
  
       A target may, if exceptions are disabled, choose to return
!      'UI_NONE'.  This may end up simplifying other parts of
       target-specific code.  The default implementation of this hook
!      never returns 'UI_NONE'.
  
       Note that the value returned by this hook should be constant.  It
       should not depend on anything except the command-line switches
!      described by OPTS.  In particular, the setting 'UI_SJLJ' must be
       fixed at compiler start-up as C pre-processor macros and builtin
       functions related to exception handling are set up depending on
       this setting.
  
       The default implementation of the hook first honors the
!      '--enable-sjlj-exceptions' configure option, then
!      'DWARF2_UNWIND_INFO', and finally defaults to 'UI_SJLJ'.  If
!      'DWARF2_UNWIND_INFO' depends on command-line options, the target
       must define this hook so that OPTS is used correctly.
  
   -- Common Target Hook: bool TARGET_UNWIND_TABLES_DEFAULT
!      This variable should be set to 'true' if the target ABI requires
       unwinding tables even when exceptions are not used.  It must not be
       modified by command-line option processing.
  
   -- Macro: DONT_USE_BUILTIN_SETJMP
!      Define this macro to 1 if the 'setjmp'/'longjmp'-based scheme
!      should use the 'setjmp'/'longjmp' functions from the C library
!      instead of the '__builtin_setjmp'/'__builtin_longjmp' machinery.
  
   -- Macro: JMP_BUF_SIZE
!      This macro has no effect unless 'DONT_USE_BUILTIN_SETJMP' is also
!      defined.  Define this macro if the default size of 'jmp_buf' buffer
!      for the 'setjmp'/'longjmp'-based exception handling mechanism is
       not large enough, or if it is much too large.  The default size is
!      'FIRST_PSEUDO_REGISTER * sizeof(void *)'.
  
   -- Macro: DWARF_CIE_DATA_ALIGNMENT
       This macro need only be defined if the target might save registers
       in the function prologue at an offset to the stack pointer that is
!      not aligned to 'UNITS_PER_WORD'.  The definition should be the
!      negative minimum alignment if 'STACK_GROWS_DOWNWARD' is true, and
       the positive minimum alignment otherwise.  *Note DWARF::.  Only
       applicable if the target supports DWARF 2 frame unwind information.
  
   -- Target Hook: bool TARGET_TERMINATE_DW2_EH_FRAME_INFO
       Contains the value true if the target should add a zero word onto
       the end of a Dwarf-2 frame info section when used for exception
!      handling.  Default value is false if 'EH_FRAME_SECTION_NAME' is
       defined, and true otherwise.
  
   -- Target Hook: rtx TARGET_DWARF_REGISTER_SPAN (rtx REG)
--- 43093,43164 ----
       read-only and read-write sections into a single read-write section.
  
   -- Macro: MASK_RETURN_ADDR
!      An rtx used to mask the return address found via â€˜RETURN_ADDR_RTXâ€™,
       so that it does not contain any extraneous set bits in it.
  
   -- Macro: DWARF2_UNWIND_INFO
       Define this macro to 0 if your target supports DWARF 2 frame unwind
       information, but it does not yet work with exception handling.
       Otherwise, if your target supports this information (if it defines
!      â€˜INCOMING_RETURN_ADDR_RTXâ€™ and â€˜OBJECT_FORMAT_ELFâ€™), GCC will
       provide a default definition of 1.
  
   -- Common Target Hook: enum unwind_info_type TARGET_EXCEPT_UNWIND_INFO
            (struct gcc_options *OPTS)
       This hook defines the mechanism that will be used for exception
       handling by the target.  If the target has ABI specified unwind
!      tables, the hook should return â€˜UI_TARGETâ€™.  If the target is to
!      use the â€˜setjmpâ€™/â€˜longjmpâ€™-based exception handling scheme, the
!      hook should return â€˜UI_SJLJâ€™.  If the target supports DWARF 2 frame
!      unwind information, the hook should return â€˜UI_DWARF2â€™.
  
       A target may, if exceptions are disabled, choose to return
!      â€˜UI_NONEâ€™.  This may end up simplifying other parts of
       target-specific code.  The default implementation of this hook
!      never returns â€˜UI_NONEâ€™.
  
       Note that the value returned by this hook should be constant.  It
       should not depend on anything except the command-line switches
!      described by OPTS.  In particular, the setting â€˜UI_SJLJâ€™ must be
       fixed at compiler start-up as C pre-processor macros and builtin
       functions related to exception handling are set up depending on
       this setting.
  
       The default implementation of the hook first honors the
!      â€˜--enable-sjlj-exceptionsâ€™ configure option, then
!      â€˜DWARF2_UNWIND_INFOâ€™, and finally defaults to â€˜UI_SJLJâ€™.  If
!      â€˜DWARF2_UNWIND_INFOâ€™ depends on command-line options, the target
       must define this hook so that OPTS is used correctly.
  
   -- Common Target Hook: bool TARGET_UNWIND_TABLES_DEFAULT
!      This variable should be set to â€˜trueâ€™ if the target ABI requires
       unwinding tables even when exceptions are not used.  It must not be
       modified by command-line option processing.
  
   -- Macro: DONT_USE_BUILTIN_SETJMP
!      Define this macro to 1 if the â€˜setjmpâ€™/â€˜longjmpâ€™-based scheme
!      should use the â€˜setjmpâ€™/â€˜longjmpâ€™ functions from the C library
!      instead of the â€˜__builtin_setjmpâ€™/â€˜__builtin_longjmpâ€™ machinery.
  
   -- Macro: JMP_BUF_SIZE
!      This macro has no effect unless â€˜DONT_USE_BUILTIN_SETJMPâ€™ is also
!      defined.  Define this macro if the default size of â€˜jmp_bufâ€™ buffer
!      for the â€˜setjmpâ€™/â€˜longjmpâ€™-based exception handling mechanism is
       not large enough, or if it is much too large.  The default size is
!      â€˜FIRST_PSEUDO_REGISTER * sizeof(void *)â€™.
  
   -- Macro: DWARF_CIE_DATA_ALIGNMENT
       This macro need only be defined if the target might save registers
       in the function prologue at an offset to the stack pointer that is
!      not aligned to â€˜UNITS_PER_WORDâ€™.  The definition should be the
!      negative minimum alignment if â€˜STACK_GROWS_DOWNWARDâ€™ is true, and
       the positive minimum alignment otherwise.  *Note DWARF::.  Only
       applicable if the target supports DWARF 2 frame unwind information.
  
   -- Target Hook: bool TARGET_TERMINATE_DW2_EH_FRAME_INFO
       Contains the value true if the target should add a zero word onto
       the end of a Dwarf-2 frame info section when used for exception
!      handling.  Default value is false if â€˜EH_FRAME_SECTION_NAMEâ€™ is
       defined, and true otherwise.
  
   -- Target Hook: rtx TARGET_DWARF_REGISTER_SPAN (rtx REG)
*************** region.
*** 43163,43170 ****
       if the register and its mode are represented in Dwarf in
       non-contiguous locations, or if the register should be represented
       in more than one register in Dwarf.  Otherwise, this hook should
!      return 'NULL_RTX'.  If not defined, the default is to return
!      'NULL_RTX'.
  
   -- Target Hook: machine_mode TARGET_DWARF_FRAME_REG_MODE (int REGNO)
       Given a register, this hook should return the mode which the
--- 43167,43174 ----
       if the register and its mode are represented in Dwarf in
       non-contiguous locations, or if the register should be represented
       in more than one register in Dwarf.  Otherwise, this hook should
!      return â€˜NULL_RTXâ€™.  If not defined, the default is to return
!      â€˜NULL_RTXâ€™.
  
   -- Target Hook: machine_mode TARGET_DWARF_FRAME_REG_MODE (int REGNO)
       Given a register, this hook should return the mode which the
*************** region.
*** 43189,43209 ****
       If some registers are represented in Dwarf-2 unwind information in
       multiple pieces, define this hook to fill in information about the
       sizes of those pieces in the table used by the unwinder at runtime.
!      It will be called by 'expand_builtin_init_dwarf_reg_sizes' after
       filling in a single size corresponding to each hard register;
       ADDRESS is the address of the table.
  
   -- Target Hook: bool TARGET_ASM_TTYPE (rtx SYM)
       This hook is used to output a reference from a frame unwinding
       table to the type_info object identified by SYM.  It should return
!      'true' if the reference was output.  Returning 'false' will cause
       the reference to be output using the normal Dwarf2 routines.
  
   -- Target Hook: bool TARGET_ARM_EABI_UNWINDER
!      This flag should be set to 'true' on targets that use an ARM EABI
!      based unwinding library, and 'false' on other targets.  This
       effects the format of unwinding tables, and how the unwinder in
!      entered after running a cleanup.  The default is 'false'.
  
  
  File: gccint.info,  Node: Alignment Output,  Prev: Exception Region Output,  Up: Assembler Format
--- 43193,43213 ----
       If some registers are represented in Dwarf-2 unwind information in
       multiple pieces, define this hook to fill in information about the
       sizes of those pieces in the table used by the unwinder at runtime.
!      It will be called by â€˜expand_builtin_init_dwarf_reg_sizesâ€™ after
       filling in a single size corresponding to each hard register;
       ADDRESS is the address of the table.
  
   -- Target Hook: bool TARGET_ASM_TTYPE (rtx SYM)
       This hook is used to output a reference from a frame unwinding
       table to the type_info object identified by SYM.  It should return
!      â€˜trueâ€™ if the reference was output.  Returning â€˜falseâ€™ will cause
       the reference to be output using the normal Dwarf2 routines.
  
   -- Target Hook: bool TARGET_ARM_EABI_UNWINDER
!      This flag should be set to â€˜trueâ€™ on targets that use an ARM EABI
!      based unwinding library, and â€˜falseâ€™ on other targets.  This
       effects the format of unwinding tables, and how the unwinder in
!      entered after running a cleanup.  The default is â€˜falseâ€™.
  
  
  File: gccint.info,  Node: Alignment Output,  Prev: Exception Region Output,  Up: Assembler Format
*************** This describes commands for alignment.
*** 43223,43234 ****
  
       Unless it's necessary to inspect the LABEL parameter, it is better
       to set the variable ALIGN_JUMPS in the target's
!      'TARGET_OPTION_OVERRIDE'.  Otherwise, you should try to honor the
!      user's selection in ALIGN_JUMPS in a 'JUMP_ALIGN' implementation.
  
   -- Macro: LABEL_ALIGN_AFTER_BARRIER (LABEL)
       The alignment (log base 2) to put in front of LABEL, which follows
!      a 'BARRIER'.
  
       This macro need not be defined if you don't want any special
       alignment to be done at such a time.  Most machine descriptions do
--- 43227,43238 ----
  
       Unless it's necessary to inspect the LABEL parameter, it is better
       to set the variable ALIGN_JUMPS in the target's
!      â€˜TARGET_OPTION_OVERRIDEâ€™.  Otherwise, you should try to honor the
!      user's selection in ALIGN_JUMPS in a â€˜JUMP_ALIGNâ€™ implementation.
  
   -- Macro: LABEL_ALIGN_AFTER_BARRIER (LABEL)
       The alignment (log base 2) to put in front of LABEL, which follows
!      a â€˜BARRIERâ€™.
  
       This macro need not be defined if you don't want any special
       alignment to be done at such a time.  Most machine descriptions do
*************** This describes commands for alignment.
*** 43243,43271 ****
       not currently define the macro.
  
       Unless it's necessary to inspect the LABEL parameter, it is better
!      to set the variable 'align_loops' in the target's
!      'TARGET_OPTION_OVERRIDE'.  Otherwise, you should try to honor the
!      user's selection in 'align_loops' in a 'LOOP_ALIGN' implementation.
  
   -- Macro: LABEL_ALIGN (LABEL)
       The alignment (log base 2) to put in front of LABEL.  If
!      'LABEL_ALIGN_AFTER_BARRIER' / 'LOOP_ALIGN' specify a different
       alignment, the maximum of the specified values is used.
  
       Unless it's necessary to inspect the LABEL parameter, it is better
!      to set the variable 'align_labels' in the target's
!      'TARGET_OPTION_OVERRIDE'.  Otherwise, you should try to honor the
!      user's selection in 'align_labels' in a 'LABEL_ALIGN'
       implementation.
  
   -- Macro: ASM_OUTPUT_SKIP (STREAM, NBYTES)
       A C statement to output to the stdio stream STREAM an assembler
       instruction to advance the location counter by NBYTES bytes.  Those
       bytes should be zero when loaded.  NBYTES will be a C expression of
!      type 'unsigned HOST_WIDE_INT'.
  
   -- Macro: ASM_NO_SKIP_IN_TEXT
!      Define this macro if 'ASM_OUTPUT_SKIP' should not be used in the
       text section because it fails to put zeros in the bytes that are
       skipped.  This is true on many Unix systems, where the pseudo-op to
       skip bytes produces no-op instructions rather than zeros when used
--- 43247,43275 ----
       not currently define the macro.
  
       Unless it's necessary to inspect the LABEL parameter, it is better
!      to set the variable â€˜align_loopsâ€™ in the target's
!      â€˜TARGET_OPTION_OVERRIDEâ€™.  Otherwise, you should try to honor the
!      user's selection in â€˜align_loopsâ€™ in a â€˜LOOP_ALIGNâ€™ implementation.
  
   -- Macro: LABEL_ALIGN (LABEL)
       The alignment (log base 2) to put in front of LABEL.  If
!      â€˜LABEL_ALIGN_AFTER_BARRIERâ€™ / â€˜LOOP_ALIGNâ€™ specify a different
       alignment, the maximum of the specified values is used.
  
       Unless it's necessary to inspect the LABEL parameter, it is better
!      to set the variable â€˜align_labelsâ€™ in the target's
!      â€˜TARGET_OPTION_OVERRIDEâ€™.  Otherwise, you should try to honor the
!      user's selection in â€˜align_labelsâ€™ in a â€˜LABEL_ALIGNâ€™
       implementation.
  
   -- Macro: ASM_OUTPUT_SKIP (STREAM, NBYTES)
       A C statement to output to the stdio stream STREAM an assembler
       instruction to advance the location counter by NBYTES bytes.  Those
       bytes should be zero when loaded.  NBYTES will be a C expression of
!      type â€˜unsigned HOST_WIDE_INTâ€™.
  
   -- Macro: ASM_NO_SKIP_IN_TEXT
!      Define this macro if â€˜ASM_OUTPUT_SKIPâ€™ should not be used in the
       text section because it fails to put zeros in the bytes that are
       skipped.  This is true on many Unix systems, where the pseudo-op to
       skip bytes produces no-op instructions rather than zeros when used
*************** This describes commands for alignment.
*** 43274,43283 ****
   -- Macro: ASM_OUTPUT_ALIGN (STREAM, POWER)
       A C statement to output to the stdio stream STREAM an assembler
       command to advance the location counter to a multiple of 2 to the
!      POWER bytes.  POWER will be a C expression of type 'int'.
  
   -- Macro: ASM_OUTPUT_ALIGN_WITH_NOP (STREAM, POWER)
!      Like 'ASM_OUTPUT_ALIGN', except that the "nop" instruction is used
       for padding, if necessary.
  
   -- Macro: ASM_OUTPUT_MAX_SKIP_ALIGN (STREAM, POWER, MAX_SKIP)
--- 43278,43287 ----
   -- Macro: ASM_OUTPUT_ALIGN (STREAM, POWER)
       A C statement to output to the stdio stream STREAM an assembler
       command to advance the location counter to a multiple of 2 to the
!      POWER bytes.  POWER will be a C expression of type â€˜intâ€™.
  
   -- Macro: ASM_OUTPUT_ALIGN_WITH_NOP (STREAM, POWER)
!      Like â€˜ASM_OUTPUT_ALIGNâ€™, except that the "nop" instruction is used
       for padding, if necessary.
  
   -- Macro: ASM_OUTPUT_MAX_SKIP_ALIGN (STREAM, POWER, MAX_SKIP)
*************** This describes commands for alignment.
*** 43285,43291 ****
       command to advance the location counter to a multiple of 2 to the
       POWER bytes, but only if MAX_SKIP or fewer bytes are needed to
       satisfy the alignment request.  POWER and MAX_SKIP will be a C
!      expression of type 'int'.
  
  
  File: gccint.info,  Node: Debugging Info,  Next: Floating Point,  Prev: Assembler Format,  Up: Target Macros
--- 43289,43295 ----
       command to advance the location counter to a multiple of 2 to the
       POWER bytes, but only if MAX_SKIP or fewer bytes are needed to
       satisfy the alignment request.  POWER and MAX_SKIP will be a C
!      expression of type â€˜intâ€™.
  
  
  File: gccint.info,  Node: Debugging Info,  Next: Floating Point,  Prev: Assembler Format,  Up: Target Macros
*************** These macros affect all debugging format
*** 43321,43332 ****
  
       If two registers have consecutive numbers inside GCC, and they can
       be used as a pair to hold a multiword value, then they _must_ have
!      consecutive numbers after renumbering with 'DEBUGGER_REGNO'.
       Otherwise, debuggers will be unable to access such a pair, because
       they expect register pairs to be consecutive in their own numbering
       scheme.
  
!      If you find yourself defining 'DEBUGGER_REGNO' in way that does not
       preserve register pairs, then what you must do instead is redefine
       the actual register numbering scheme.
  
--- 43325,43336 ----
  
       If two registers have consecutive numbers inside GCC, and they can
       be used as a pair to hold a multiword value, then they _must_ have
!      consecutive numbers after renumbering with â€˜DEBUGGER_REGNOâ€™.
       Otherwise, debuggers will be unable to access such a pair, because
       they expect register pairs to be consecutive in their own numbering
       scheme.
  
!      If you find yourself defining â€˜DEBUGGER_REGNOâ€™ in way that does not
       preserve register pairs, then what you must do instead is redefine
       the actual register numbering scheme.
  
*************** These macros affect all debugging format
*** 43336,43342 ****
       default computation assumes that X is based on the frame-pointer
       and gives the offset from the frame-pointer.  This is required for
       targets that produce debugging output for debugger and allow the
!      frame-pointer to be eliminated when the '-g' option is used.
  
   -- Macro: DEBUGGER_ARG_OFFSET (OFFSET, X)
       A C expression that returns the integer offset value for an
--- 43340,43346 ----
       default computation assumes that X is based on the frame-pointer
       and gives the offset from the frame-pointer.  This is required for
       targets that produce debugging output for debugger and allow the
!      frame-pointer to be eliminated when the â€˜-gâ€™ option is used.
  
   -- Macro: DEBUGGER_ARG_OFFSET (OFFSET, X)
       A C expression that returns the integer offset value for an
*************** These macros affect all debugging format
*** 43345,43363 ****
  
   -- Macro: PREFERRED_DEBUGGING_TYPE
       A C expression that returns the type of debugging output GCC should
!      produce when the user specifies just '-g'.  Define this if you have
       arranged for GCC to support more than one format of debugging
!      output.  Currently, the allowable values are 'DWARF2_DEBUG',
!      'VMS_DEBUG', and 'VMS_AND_DWARF2_DEBUG'.
  
!      When the user specifies '-ggdb', GCC normally also uses the value
       of this macro to select the debugging output format, but with two
!      exceptions.  If 'DWARF2_DEBUGGING_INFO' is defined, GCC uses the
!      value 'DWARF2_DEBUG'.
  
       The value of this macro only affects the default debugging output;
       the user can always get a specific type of output by using
!      '-gdwarf-2', or '-gvms'.
  
   -- Macro: DEFAULT_GDB_EXTENSIONS
       Define this macro to control whether GCC should by default generate
--- 43349,43367 ----
  
   -- Macro: PREFERRED_DEBUGGING_TYPE
       A C expression that returns the type of debugging output GCC should
!      produce when the user specifies just â€˜-gâ€™.  Define this if you have
       arranged for GCC to support more than one format of debugging
!      output.  Currently, the allowable values are â€˜DWARF2_DEBUGâ€™,
!      â€˜VMS_DEBUGâ€™, and â€˜VMS_AND_DWARF2_DEBUGâ€™.
  
!      When the user specifies â€˜-ggdbâ€™, GCC normally also uses the value
       of this macro to select the debugging output format, but with two
!      exceptions.  If â€˜DWARF2_DEBUGGING_INFOâ€™ is defined, GCC uses the
!      value â€˜DWARF2_DEBUGâ€™.
  
       The value of this macro only affects the default debugging output;
       the user can always get a specific type of output by using
!      â€˜-gdwarf-2â€™, or â€˜-gvmsâ€™.
  
   -- Macro: DEFAULT_GDB_EXTENSIONS
       Define this macro to control whether GCC should by default generate
*************** Here are macros for DWARF output.
*** 43375,43411 ****
  
   -- Macro: DWARF2_DEBUGGING_INFO
       Define this macro if GCC should produce dwarf version 2 format
!      debugging output in response to the '-g' option.
  
       To support optional call frame debugging information, you must also
!      define 'INCOMING_RETURN_ADDR_RTX' and either set
!      'RTX_FRAME_RELATED_P' on the prologue insns if you use RTL for the
!      prologue, or call 'dwarf2out_def_cfa' and 'dwarf2out_reg_save' as
!      appropriate from 'TARGET_ASM_FUNCTION_PROLOGUE' if you don't.
  
   -- Target Hook: int TARGET_DWARF_CALLING_CONVENTION (const_tree
            FUNCTION)
       Define this to enable the dwarf attribute
!      'DW_AT_calling_convention' to be emitted for each function.
!      Instead of an integer return the enum value for the 'DW_CC_' tag.
  
   -- Macro: DWARF2_FRAME_INFO
       Define this macro to a nonzero value if GCC should always output
!      Dwarf 2 frame information.  If 'TARGET_EXCEPT_UNWIND_INFO' (*note
!      Exception Region Output::) returns 'UI_DWARF2', and exceptions are
       enabled, GCC will output this information not matter how you define
!      'DWARF2_FRAME_INFO'.
  
   -- Target Hook: enum unwind_info_type TARGET_DEBUG_UNWIND_INFO (void)
       This hook defines the mechanism that will be used for describing
       frame unwind information to the debugger.  Normally the hook will
!      return 'UI_DWARF2' if DWARF 2 debug information is enabled, and
!      return 'UI_NONE' otherwise.
  
!      A target may return 'UI_DWARF2' even when DWARF 2 debug information
       is disabled in order to always output DWARF 2 frame information.
  
!      A target may return 'UI_TARGET' if it has ABI specified unwind
       tables.  This will suppress generation of the normal debug frame
       unwind information.
  
--- 43379,43415 ----
  
   -- Macro: DWARF2_DEBUGGING_INFO
       Define this macro if GCC should produce dwarf version 2 format
!      debugging output in response to the â€˜-gâ€™ option.
  
       To support optional call frame debugging information, you must also
!      define â€˜INCOMING_RETURN_ADDR_RTXâ€™ and either set
!      â€˜RTX_FRAME_RELATED_Pâ€™ on the prologue insns if you use RTL for the
!      prologue, or call â€˜dwarf2out_def_cfaâ€™ and â€˜dwarf2out_reg_saveâ€™ as
!      appropriate from â€˜TARGET_ASM_FUNCTION_PROLOGUEâ€™ if you don't.
  
   -- Target Hook: int TARGET_DWARF_CALLING_CONVENTION (const_tree
            FUNCTION)
       Define this to enable the dwarf attribute
!      â€˜DW_AT_calling_conventionâ€™ to be emitted for each function.
!      Instead of an integer return the enum value for the â€˜DW_CC_â€™ tag.
  
   -- Macro: DWARF2_FRAME_INFO
       Define this macro to a nonzero value if GCC should always output
!      Dwarf 2 frame information.  If â€˜TARGET_EXCEPT_UNWIND_INFOâ€™ (*note
!      Exception Region Output::) returns â€˜UI_DWARF2â€™, and exceptions are
       enabled, GCC will output this information not matter how you define
!      â€˜DWARF2_FRAME_INFOâ€™.
  
   -- Target Hook: enum unwind_info_type TARGET_DEBUG_UNWIND_INFO (void)
       This hook defines the mechanism that will be used for describing
       frame unwind information to the debugger.  Normally the hook will
!      return â€˜UI_DWARF2â€™ if DWARF 2 debug information is enabled, and
!      return â€˜UI_NONEâ€™ otherwise.
  
!      A target may return â€˜UI_DWARF2â€™ even when DWARF 2 debug information
       is disabled in order to always output DWARF 2 frame information.
  
!      A target may return â€˜UI_TARGETâ€™ if it has ABI specified unwind
       tables.  This will suppress generation of the normal debug frame
       unwind information.
  
*************** Here are macros for DWARF output.
*** 43417,43423 ****
  
   -- Macro: DWARF2_ASM_VIEW_DEBUG_INFO
       Define this macro to be a nonzero value if the assembler supports
!      view assignment and verification in '.loc'.  If it does not, but
       the user enables location views, the compiler may have to fallback
       to internal line number tables.
  
--- 43421,43427 ----
  
   -- Macro: DWARF2_ASM_VIEW_DEBUG_INFO
       Define this macro to be a nonzero value if the assembler supports
!      view assignment and verification in â€˜.locâ€™.  If it does not, but
       the user enables location views, the compiler may have to fallback
       to internal line number tables.
  
*************** Here are macros for DWARF output.
*** 43434,43443 ****
       be reset; or zero to decide based on the estimated insn length.
  
       If insn length is to be regarded as reliable, set the hook to
!      'hook_int_rtx_insn_0'.
  
   -- Target Hook: bool TARGET_WANT_DEBUG_PUB_SECTIONS
!      True if the '.debug_pubtypes' and '.debug_pubnames' sections should
       be emitted.  These sections are not used on most platforms, and in
       particular GDB does not use them.
  
--- 43438,43447 ----
       be reset; or zero to decide based on the estimated insn length.
  
       If insn length is to be regarded as reliable, set the hook to
!      â€˜hook_int_rtx_insn_0â€™.
  
   -- Target Hook: bool TARGET_WANT_DEBUG_PUB_SECTIONS
!      True if the â€˜.debug_pubtypesâ€™ and â€˜.debug_pubnamesâ€™ sections should
       be emitted.  These sections are not used on most platforms, and in
       particular GDB does not use them.
  
*************** Here are macros for VMS debug format.
*** 43501,43511 ****
  
   -- Macro: VMS_DEBUGGING_INFO
       Define this macro if GCC should produce debugging output for VMS in
!      response to the '-g' option.  The default behavior for VMS is to
!      generate minimal debug info for a traceback in the absence of '-g'
!      unless explicitly overridden with '-g0'.  This behavior is
!      controlled by 'TARGET_OPTION_OPTIMIZATION' and
!      'TARGET_OPTION_OVERRIDE'.
  
  
  File: gccint.info,  Node: CTF Debug,  Next: BTF Debug,  Prev: VMS Debug,  Up: Debugging Info
--- 43505,43515 ----
  
   -- Macro: VMS_DEBUGGING_INFO
       Define this macro if GCC should produce debugging output for VMS in
!      response to the â€˜-gâ€™ option.  The default behavior for VMS is to
!      generate minimal debug info for a traceback in the absence of â€˜-gâ€™
!      unless explicitly overridden with â€˜-g0â€™.  This behavior is
!      controlled by â€˜TARGET_OPTION_OPTIMIZATIONâ€™ and
!      â€˜TARGET_OPTION_OVERRIDEâ€™.
  
  
  File: gccint.info,  Node: CTF Debug,  Next: BTF Debug,  Prev: VMS Debug,  Up: Debugging Info
*************** Here are macros for CTF debug format.
*** 43517,43523 ****
  
   -- Macro: CTF_DEBUGGING_INFO
       Define this macro if GCC should produce debugging output in CTF
!      debug format in response to the '-gctf' option.
  
  
  File: gccint.info,  Node: BTF Debug,  Prev: CTF Debug,  Up: Debugging Info
--- 43521,43527 ----
  
   -- Macro: CTF_DEBUGGING_INFO
       Define this macro if GCC should produce debugging output in CTF
!      debug format in response to the â€˜-gctfâ€™ option.
  
  
  File: gccint.info,  Node: BTF Debug,  Prev: CTF Debug,  Up: Debugging Info
*************** Here are macros for BTF debug format.
*** 43529,43535 ****
  
   -- Macro: BTF_DEBUGGING_INFO
       Define this macro if GCC should produce debugging output in BTF
!      debug format in response to the '-gbtf' option.
  
  
  File: gccint.info,  Node: Floating Point,  Next: Mode Switching,  Prev: Debugging Info,  Up: Target Macros
--- 43533,43539 ----
  
   -- Macro: BTF_DEBUGGING_INFO
       Define this macro if GCC should produce debugging output in BTF
!      debug format in response to the â€˜-gbtfâ€™ option.
  
  
  File: gccint.info,  Node: Floating Point,  Next: Mode Switching,  Prev: Debugging Info,  Up: Target Macros
*************** the target's arithmetic.  To ensure cons
*** 43551,43565 ****
  emulation to work with floating point values, even when the host and
  target floating point formats are identical.
  
!  The following macros are provided by 'real.h' for the compiler to use.
  All parts of the compiler which generate or optimize floating-point
  calculations must use these macros.  They may evaluate their operands
  more than once, so operands must not have side effects.
  
   -- Macro: REAL_VALUE_TYPE
       The C data type to be used to hold a floating point value in the
!      target machine's format.  Typically this is a 'struct' containing
!      an array of 'HOST_WIDE_INT', but all code should treat it as an
       opaque quantity.
  
   -- Macro: HOST_WIDE_INT REAL_VALUE_FIX (REAL_VALUE_TYPE X)
--- 43555,43569 ----
  emulation to work with floating point values, even when the host and
  target floating point formats are identical.
  
!  The following macros are provided by â€˜real.hâ€™ for the compiler to use.
  All parts of the compiler which generate or optimize floating-point
  calculations must use these macros.  They may evaluate their operands
  more than once, so operands must not have side effects.
  
   -- Macro: REAL_VALUE_TYPE
       The C data type to be used to hold a floating point value in the
!      target machine's format.  Typically this is a â€˜structâ€™ containing
!      an array of â€˜HOST_WIDE_INTâ€™, but all code should treat it as an
       opaque quantity.
  
   -- Macro: HOST_WIDE_INT REAL_VALUE_FIX (REAL_VALUE_TYPE X)
*************** The following macros control mode switch
*** 43611,43641 ****
       PR bit requires a general purpose register as a scratch register,
       hence these FPSCR sets have to be inserted before reload, i.e. you
       cannot put this into instruction emitting or
!      'TARGET_MACHINE_DEPENDENT_REORG'.
  
       You can have multiple entities that are mode-switched, some of
       which might only be needed conditionally.  The entities are
!      identified by their index into the 'NUM_MODES_FOR_MODE_SWITCHING'
       initializer, with the length of the initializer determining the
       number of entities.
  
!      'OPTIMIZE_MODE_SWITCHING' should return nonzero for any ENTITY that
       needs mode-switching.
  
       If you define this macro, you also have to define
!      'NUM_MODES_FOR_MODE_SWITCHING', 'TARGET_MODE_NEEDED',
!      'TARGET_MODE_PRIORITY' and 'TARGET_MODE_EMIT'.  The other macros in
       this section are optional.
  
   -- Macro: NUM_MODES_FOR_MODE_SWITCHING
!      If you define 'OPTIMIZE_MODE_SWITCHING', you have to define this as
       initializer for an array of integers.  Each initializer element N
       refers to an entity that needs mode switching, and specifies the
       number of different modes that are defined for that entity.  The
       position of the element in the initializer--starting counting at
       zero--determines the integer that is used to refer to the
       mode-switched entity in question.  Modes are represented as numbers
!      0 ... N - 1.  In mode arguments and return values, N either
       represents an unknown mode or "no mode", depending on context.
  
   -- Target Hook: void TARGET_MODE_EMIT (int ENTITY, int MODE, int
--- 43615,43645 ----
       PR bit requires a general purpose register as a scratch register,
       hence these FPSCR sets have to be inserted before reload, i.e. you
       cannot put this into instruction emitting or
!      â€˜TARGET_MACHINE_DEPENDENT_REORGâ€™.
  
       You can have multiple entities that are mode-switched, some of
       which might only be needed conditionally.  The entities are
!      identified by their index into the â€˜NUM_MODES_FOR_MODE_SWITCHINGâ€™
       initializer, with the length of the initializer determining the
       number of entities.
  
!      â€˜OPTIMIZE_MODE_SWITCHINGâ€™ should return nonzero for any ENTITY that
       needs mode-switching.
  
       If you define this macro, you also have to define
!      â€˜NUM_MODES_FOR_MODE_SWITCHINGâ€™, â€˜TARGET_MODE_NEEDEDâ€™,
!      â€˜TARGET_MODE_PRIORITYâ€™ and â€˜TARGET_MODE_EMITâ€™.  The other macros in
       this section are optional.
  
   -- Macro: NUM_MODES_FOR_MODE_SWITCHING
!      If you define â€˜OPTIMIZE_MODE_SWITCHINGâ€™, you have to define this as
       initializer for an array of integers.  Each initializer element N
       refers to an entity that needs mode switching, and specifies the
       number of different modes that are defined for that entity.  The
       position of the element in the initializer--starting counting at
       zero--determines the integer that is used to refer to the
       mode-switched entity in question.  Modes are represented as numbers
!      0 ... N âˆ’ 1.  In mode arguments and return values, N either
       represents an unknown mode or "no mode", depending on context.
  
   -- Target Hook: void TARGET_MODE_EMIT (int ENTITY, int MODE, int
*************** The following macros control mode switch
*** 43650,43656 ****
   -- Target Hook: int TARGET_MODE_NEEDED (int ENTITY, rtx_insn *INSN,
            HARD_REG_SET REGS_LIVE)
       ENTITY is an integer specifying a mode-switched entity.  If
!      'OPTIMIZE_MODE_SWITCHING' is defined, you must define this hook to
       return the mode that ENTITY must be switched into prior to the
       execution of INSN, or the number of modes if INSN has no such
       requirement.  REGS_LIVE contains the set of hard registers that are
--- 43654,43660 ----
   -- Target Hook: int TARGET_MODE_NEEDED (int ENTITY, rtx_insn *INSN,
            HARD_REG_SET REGS_LIVE)
       ENTITY is an integer specifying a mode-switched entity.  If
!      â€˜OPTIMIZE_MODE_SWITCHINGâ€™ is defined, you must define this hook to
       return the mode that ENTITY must be switched into prior to the
       execution of INSN, or the number of modes if INSN has no such
       requirement.  REGS_LIVE contains the set of hard registers that are
*************** The following macros control mode switch
*** 43675,43681 ****
            MODE2)
       By default, the mode-switching pass assumes that a given entity's
       modes are mutually exclusive.  This means that the pass can only
!      tell 'TARGET_MODE_EMIT' about an entity's previous mode if all
       incoming paths of execution leave the entity in the same state.
  
       However, some entities might have overlapping, non-exclusive modes,
--- 43679,43685 ----
            MODE2)
       By default, the mode-switching pass assumes that a given entity's
       modes are mutually exclusive.  This means that the pass can only
!      tell â€˜TARGET_MODE_EMITâ€™ about an entity's previous mode if all
       incoming paths of execution leave the entity in the same state.
  
       However, some entities might have overlapping, non-exclusive modes,
*************** The following macros control mode switch
*** 43700,43706 ****
       to have in B1, or the number of modes if there is no such
       requirement.  If the hook returns a required mode for more than one
       of B1's outgoing edges, those modes are combined as for
!      'TARGET_MODE_CONFLUENCE'.
  
       For example, suppose there is a "one-shot" entity that, for a given
       execution of a function, either stays off or makes exactly one
--- 43704,43710 ----
       to have in B1, or the number of modes if there is no such
       requirement.  If the hook returns a required mode for more than one
       of B1's outgoing edges, those modes are combined as for
!      â€˜TARGET_MODE_CONFLUENCEâ€™.
  
       For example, suppose there is a "one-shot" entity that, for a given
       execution of a function, either stays off or makes exactly one
*************** The following macros control mode switch
*** 43721,43735 ****
       If this hook is defined, it is evaluated for every ENTITY that
       needs mode switching.  It should return the mode that ENTITY is
       guaranteed to be in on entry to the function, or the number of
!      modes if there is no such guarantee.  If 'TARGET_MODE_ENTRY' is
!      defined then 'TARGET_MODE_EXIT' must be defined.
  
   -- Target Hook: int TARGET_MODE_EXIT (int ENTITY)
       If this hook is defined, it is evaluated for every ENTITY that
       needs mode switching.  It should return the mode that ENTITY must
       be in on return from the function, or the number of modes if there
!      is no such requirement.  If 'TARGET_MODE_EXIT' is defined then
!      'TARGET_MODE_ENTRY' must be defined.
  
   -- Target Hook: int TARGET_MODE_EH_HANDLER (int ENTITY)
       If this hook is defined, it should return the mode that ENTITY is
--- 43725,43739 ----
       If this hook is defined, it is evaluated for every ENTITY that
       needs mode switching.  It should return the mode that ENTITY is
       guaranteed to be in on entry to the function, or the number of
!      modes if there is no such guarantee.  If â€˜TARGET_MODE_ENTRYâ€™ is
!      defined then â€˜TARGET_MODE_EXITâ€™ must be defined.
  
   -- Target Hook: int TARGET_MODE_EXIT (int ENTITY)
       If this hook is defined, it is evaluated for every ENTITY that
       needs mode switching.  It should return the mode that ENTITY must
       be in on return from the function, or the number of modes if there
!      is no such requirement.  If â€˜TARGET_MODE_EXITâ€™ is defined then
!      â€˜TARGET_MODE_ENTRYâ€™ must be defined.
  
   -- Target Hook: int TARGET_MODE_EH_HANDLER (int ENTITY)
       If this hook is defined, it should return the mode that ENTITY is
*************** The following macros control mode switch
*** 43739,43778 ****
   -- Target Hook: int TARGET_MODE_PRIORITY (int ENTITY, int N)
       This hook specifies the order in which modes for ENTITY are
       processed.  0 is the highest priority,
!      'NUM_MODES_FOR_MODE_SWITCHING[ENTITY] - 1' the lowest.  The hook
       returns an integer designating a mode for ENTITY.  For any fixed
!      ENTITY, 'mode_priority' (ENTITY, N) shall be a bijection in 0 ...
!      'num_modes_for_mode_switching[ENTITY] - 1'.
  
  
  File: gccint.info,  Node: Target Attributes,  Next: Emulated TLS,  Prev: Mode Switching,  Up: Target Macros
  
! 17.24 Defining target-specific uses of '__attribute__'
  ======================================================
  
  Target-specific attributes may be defined for functions, data and types.
  These are described using the following target hooks; they also need to
! be documented in 'extend.texi'.
  
   -- Target Hook: array_slice<const struct scoped_attribute_specs *const>
            TARGET_ATTRIBUTE_TABLE
       If defined, this target hook provides an array of
!      'scoped_attribute_spec's (defined in 'attribs.h') that specify the
       machine-specific attributes for this target.  The information
       includes some of the restrictions on the entities to which these
       attributes are applied and the arguments that the attributes take.
  
       In C and C++, these attributes are associated with two syntaxes:
!      the traditional GNU '__attribute__' syntax and the standard '[[]]'
       syntax.  Attributes that support the GNU syntax must be placed in
!      the 'gnu' namespace.  Such attributes can then also be written
!      '[[gnu::...]]'.  Attributes that use only the standard syntax
       should be placed in whichever namespace the attribute specification
       requires.  For example, a target might choose to support
!      vendor-specific '[[]]' attributes that the vendor places in their
       own namespace.
  
!      Targets that only define attributes in the 'gnu' namespace can uase
       the following shorthand to define the table:
  
            TARGET_GNU_ATTRIBUTES (CPU_ATTRIBUTE_TABLE, {
--- 43743,43782 ----
   -- Target Hook: int TARGET_MODE_PRIORITY (int ENTITY, int N)
       This hook specifies the order in which modes for ENTITY are
       processed.  0 is the highest priority,
!      â€˜NUM_MODES_FOR_MODE_SWITCHING[ENTITY] - 1â€™ the lowest.  The hook
       returns an integer designating a mode for ENTITY.  For any fixed
!      ENTITY, â€˜mode_priorityâ€™ (ENTITY, N) shall be a bijection in 0 ...
!      â€˜num_modes_for_mode_switching[ENTITY] - 1â€™.
  
  
  File: gccint.info,  Node: Target Attributes,  Next: Emulated TLS,  Prev: Mode Switching,  Up: Target Macros
  
! 17.24 Defining target-specific uses of â€˜__attribute__â€™
  ======================================================
  
  Target-specific attributes may be defined for functions, data and types.
  These are described using the following target hooks; they also need to
! be documented in â€˜extend.texiâ€™.
  
   -- Target Hook: array_slice<const struct scoped_attribute_specs *const>
            TARGET_ATTRIBUTE_TABLE
       If defined, this target hook provides an array of
!      â€˜scoped_attribute_specâ€™s (defined in â€˜attribs.hâ€™) that specify the
       machine-specific attributes for this target.  The information
       includes some of the restrictions on the entities to which these
       attributes are applied and the arguments that the attributes take.
  
       In C and C++, these attributes are associated with two syntaxes:
!      the traditional GNU â€˜__attribute__â€™ syntax and the standard â€˜[[]]â€™
       syntax.  Attributes that support the GNU syntax must be placed in
!      the â€˜gnuâ€™ namespace.  Such attributes can then also be written
!      â€˜[[gnu::...]]â€™.  Attributes that use only the standard syntax
       should be placed in whichever namespace the attribute specification
       requires.  For example, a target might choose to support
!      vendor-specific â€˜[[]]â€™ attributes that the vendor places in their
       own namespace.
  
!      Targets that only define attributes in the â€˜gnuâ€™ namespace can uase
       the following shorthand to define the table:
  
            TARGET_GNU_ATTRIBUTES (CPU_ATTRIBUTE_TABLE, {
*************** be documented in 'extend.texi'.
*** 43806,43848 ****
            TYPE2)
       Define this target hook if the merging of type attributes needs
       special handling.  If defined, the result is a list of the combined
!      'TYPE_ATTRIBUTES' of TYPE1 and TYPE2.  It is assumed that
!      'comptypes' has already been called and returned 1.  This function
!      may call 'merge_attributes' to handle machine-independent merging.
  
   -- Target Hook: tree TARGET_MERGE_DECL_ATTRIBUTES (tree OLDDECL, tree
            NEWDECL)
       Define this target hook if the merging of decl attributes needs
       special handling.  If defined, the result is a list of the combined
!      'DECL_ATTRIBUTES' of OLDDECL and NEWDECL.  NEWDECL is a duplicate
       declaration of OLDDECL.  Examples of when this is needed are when
       one attribute overrides another, or when an attribute is nullified
       by a subsequent definition.  This function may call
!      'merge_attributes' to handle machine-independent merging.
  
!      If the only target-specific handling you require is 'dllimport' for
       Microsoft Windows targets, you should define the macro
!      'TARGET_DLLIMPORT_DECL_ATTRIBUTES' to '1'.  The compiler will then
!      define a function called 'merge_dllimport_decl_attributes' which
       can then be defined as the expansion of
!      'TARGET_MERGE_DECL_ATTRIBUTES'.  You can also add
!      'handle_dll_attribute' in the attribute table for your port to
!      perform initial processing of the 'dllimport' and 'dllexport'
!      attributes.  This is done in 'i386/cygwin.h' and 'i386/i386.cc',
       for example.
  
   -- Target Hook: bool TARGET_VALID_DLLIMPORT_ATTRIBUTE_P (const_tree
            DECL)
!      DECL is a variable or function with '__attribute__((dllimport))'
       specified.  Use this hook if the target needs to add extra
!      validation checks to 'handle_dll_attribute'.
  
   -- Macro: TARGET_DECLSPEC
       Define this macro to a nonzero value if you want to treat
!      '__declspec(X)' as equivalent to '__attribute((X))'.  By default,
       this behavior is enabled only for targets that define
!      'TARGET_DLLIMPORT_DECL_ATTRIBUTES'.  The current implementation of
!      '__declspec' is via a built-in macro, but you should not rely on
       this implementation detail.
  
   -- Target Hook: void TARGET_INSERT_ATTRIBUTES (tree NODE, tree
--- 43810,43852 ----
            TYPE2)
       Define this target hook if the merging of type attributes needs
       special handling.  If defined, the result is a list of the combined
!      â€˜TYPE_ATTRIBUTESâ€™ of TYPE1 and TYPE2.  It is assumed that
!      â€˜comptypesâ€™ has already been called and returned 1.  This function
!      may call â€˜merge_attributesâ€™ to handle machine-independent merging.
  
   -- Target Hook: tree TARGET_MERGE_DECL_ATTRIBUTES (tree OLDDECL, tree
            NEWDECL)
       Define this target hook if the merging of decl attributes needs
       special handling.  If defined, the result is a list of the combined
!      â€˜DECL_ATTRIBUTESâ€™ of OLDDECL and NEWDECL.  NEWDECL is a duplicate
       declaration of OLDDECL.  Examples of when this is needed are when
       one attribute overrides another, or when an attribute is nullified
       by a subsequent definition.  This function may call
!      â€˜merge_attributesâ€™ to handle machine-independent merging.
  
!      If the only target-specific handling you require is â€˜dllimportâ€™ for
       Microsoft Windows targets, you should define the macro
!      â€˜TARGET_DLLIMPORT_DECL_ATTRIBUTESâ€™ to â€˜1â€™.  The compiler will then
!      define a function called â€˜merge_dllimport_decl_attributesâ€™ which
       can then be defined as the expansion of
!      â€˜TARGET_MERGE_DECL_ATTRIBUTESâ€™.  You can also add
!      â€˜handle_dll_attributeâ€™ in the attribute table for your port to
!      perform initial processing of the â€˜dllimportâ€™ and â€˜dllexportâ€™
!      attributes.  This is done in â€˜i386/cygwin.hâ€™ and â€˜i386/i386.ccâ€™,
       for example.
  
   -- Target Hook: bool TARGET_VALID_DLLIMPORT_ATTRIBUTE_P (const_tree
            DECL)
!      DECL is a variable or function with â€˜__attribute__((dllimport))â€™
       specified.  Use this hook if the target needs to add extra
!      validation checks to â€˜handle_dll_attributeâ€™.
  
   -- Macro: TARGET_DECLSPEC
       Define this macro to a nonzero value if you want to treat
!      â€˜__declspec(X)â€™ as equivalent to â€˜__attribute((X))â€™.  By default,
       this behavior is enabled only for targets that define
!      â€˜TARGET_DLLIMPORT_DECL_ATTRIBUTESâ€™.  The current implementation of
!      â€˜__declspecâ€™ is via a built-in macro, but you should not rely on
       this implementation detail.
  
   -- Target Hook: void TARGET_INSERT_ATTRIBUTES (tree NODE, tree
*************** be documented in 'extend.texi'.
*** 43854,43860 ****
       which is being created.  The ATTR_PTR argument is a pointer to the
       attribute list for this decl.  The list itself should not be
       modified, since it may be shared with other decls, but attributes
!      may be chained on the head of the list and '*ATTR_PTR' modified to
       point to the new attributes, or a copy of the list may be made if
       further changes are needed.
  
--- 43858,43864 ----
       which is being created.  The ATTR_PTR argument is a pointer to the
       attribute list for this decl.  The list itself should not be
       modified, since it may be shared with other decls, but attributes
!      may be chained on the head of the list and â€˜*ATTR_PTRâ€™ modified to
       point to the new attributes, or a copy of the list may be made if
       further changes are needed.
  
*************** be documented in 'extend.texi'.
*** 43868,43964 ****
  
   -- Target Hook: bool TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P (const_tree
            FNDECL)
!      This target hook returns 'false' if the target-specific attributes
!      on FNDECL always block it getting inlined, 'true' otherwise.  By
       default, if a function has a target specific attribute attached to
       it, it will not be inlined.
  
   -- Target Hook: bool TARGET_OPTION_VALID_ATTRIBUTE_P (tree FNDECL, tree
            NAME, tree ARGS, int FLAGS)
!      This hook is called to parse 'attribute(target("..."))', which
       allows setting target-specific options on individual functions.
       These function-specific options may differ from the options
!      specified on the command line.  The hook should return 'true' if
       the options are valid.
  
!      The hook should set the 'DECL_FUNCTION_SPECIFIC_TARGET' field in
       the function declaration to hold a pointer to a target-specific
!      'struct cl_target_option' structure.
  
   -- Target Hook: bool TARGET_OPTION_VALID_VERSION_ATTRIBUTE_P (tree
            FNDECL, tree NAME, tree ARGS, int FLAGS)
!      This hook is called to parse 'attribute(target_version("..."))',
       which allows setting target-specific options on individual function
       versions.  These function-specific options may differ from the
       options specified on the command line.  The hook should return
!      'true' if the options are valid.
  
!      The hook should set the 'DECL_FUNCTION_SPECIFIC_TARGET' field in
       the function declaration to hold a pointer to a target-specific
!      'struct cl_target_option' structure.
  
   -- Macro: TARGET_CLONES_ATTR_SEPARATOR
       Define this char-typed macro to select a character that separates
       each target specific attributes from the
!      'attribute(target_clones("..."))' attribute string.  This macro
       should be carefully chosen to avoid conflicts with the target
!      specific attributes.  The default value is '',''.
  
   -- Target Hook: void TARGET_OPTION_SAVE (struct cl_target_option *PTR,
            struct gcc_options *OPTS, struct gcc_options *OPTS_SET)
       This hook is called to save any additional target-specific
!      information in the 'struct cl_target_option' structure for
!      function-specific options from the 'struct gcc_options' structure.
       *Note Option file format::.
  
   -- Target Hook: void TARGET_OPTION_RESTORE (struct gcc_options *OPTS,
            struct gcc_options *OPTS_SET, struct cl_target_option *PTR)
       This hook is called to restore any additional target-specific
!      information in the 'struct cl_target_option' structure for
!      function-specific options to the 'struct gcc_options' structure.
  
   -- Target Hook: void TARGET_OPTION_POST_STREAM_IN (struct
            cl_target_option *PTR)
       This hook is called to update target-specific information in the
!      'struct cl_target_option' structure after it is streamed in from
       LTO bytecode.
  
   -- Target Hook: void TARGET_OPTION_PRINT (FILE *FILE, int INDENT,
            struct cl_target_option *PTR)
       This hook is called to print any additional target-specific
!      information in the 'struct cl_target_option' structure for
       function-specific options.
  
   -- Target Hook: bool TARGET_OPTION_PRAGMA_PARSE (tree ARGS, tree
            POP_TARGET)
!      This target hook parses the options for '#pragma GCC target', which
       sets the target-specific options for functions that occur later in
       the input stream.  The options accepted should be the same as those
!      handled by the 'TARGET_OPTION_VALID_ATTRIBUTE_P' hook.
  
   -- Target Hook: void TARGET_OPTION_OVERRIDE (void)
       Sometimes certain combinations of command options do not make sense
       on a particular target machine.  You can override the hook
!      'TARGET_OPTION_OVERRIDE' to take account of this.  This hooks is
       called once just after all the command options have been parsed.
  
       Don't use this hook to turn on various extra optimizations for
!      '-O'.  That is what 'TARGET_OPTION_OPTIMIZATION' is for.
  
       If you need to do something whenever the optimization level is
       changed via the optimize attribute or pragma, see
!      'TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE'
  
   -- Target Hook: bool TARGET_OPTION_FUNCTION_VERSIONS (tree DECL1, tree
            DECL2)
!      This target hook returns 'true' if DECL1 and DECL2 are versions of
       the same function.  DECL1 and DECL2 are function versions if and
       only if they have the same function signature and different target
       specific attributes, that is, they are compiled for different
       target machines.
  
   -- Target Hook: bool TARGET_CAN_INLINE_P (tree CALLER, tree CALLEE)
!      This target hook returns 'false' if the CALLER function cannot
       inline CALLEE, based on target specific information.  By default,
       inlining is not allowed if the callee function has function
       specific target options and the caller does not use the same
--- 43872,43968 ----
  
   -- Target Hook: bool TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P (const_tree
            FNDECL)
!      This target hook returns â€˜falseâ€™ if the target-specific attributes
!      on FNDECL always block it getting inlined, â€˜trueâ€™ otherwise.  By
       default, if a function has a target specific attribute attached to
       it, it will not be inlined.
  
   -- Target Hook: bool TARGET_OPTION_VALID_ATTRIBUTE_P (tree FNDECL, tree
            NAME, tree ARGS, int FLAGS)
!      This hook is called to parse â€˜attribute(target("..."))â€™, which
       allows setting target-specific options on individual functions.
       These function-specific options may differ from the options
!      specified on the command line.  The hook should return â€˜trueâ€™ if
       the options are valid.
  
!      The hook should set the â€˜DECL_FUNCTION_SPECIFIC_TARGETâ€™ field in
       the function declaration to hold a pointer to a target-specific
!      â€˜struct cl_target_optionâ€™ structure.
  
   -- Target Hook: bool TARGET_OPTION_VALID_VERSION_ATTRIBUTE_P (tree
            FNDECL, tree NAME, tree ARGS, int FLAGS)
!      This hook is called to parse â€˜attribute(target_version("..."))â€™,
       which allows setting target-specific options on individual function
       versions.  These function-specific options may differ from the
       options specified on the command line.  The hook should return
!      â€˜trueâ€™ if the options are valid.
  
!      The hook should set the â€˜DECL_FUNCTION_SPECIFIC_TARGETâ€™ field in
       the function declaration to hold a pointer to a target-specific
!      â€˜struct cl_target_optionâ€™ structure.
  
   -- Macro: TARGET_CLONES_ATTR_SEPARATOR
       Define this char-typed macro to select a character that separates
       each target specific attributes from the
!      â€˜attribute(target_clones("..."))â€™ attribute string.  This macro
       should be carefully chosen to avoid conflicts with the target
!      specific attributes.  The default value is â€˜','â€™.
  
   -- Target Hook: void TARGET_OPTION_SAVE (struct cl_target_option *PTR,
            struct gcc_options *OPTS, struct gcc_options *OPTS_SET)
       This hook is called to save any additional target-specific
!      information in the â€˜struct cl_target_optionâ€™ structure for
!      function-specific options from the â€˜struct gcc_optionsâ€™ structure.
       *Note Option file format::.
  
   -- Target Hook: void TARGET_OPTION_RESTORE (struct gcc_options *OPTS,
            struct gcc_options *OPTS_SET, struct cl_target_option *PTR)
       This hook is called to restore any additional target-specific
!      information in the â€˜struct cl_target_optionâ€™ structure for
!      function-specific options to the â€˜struct gcc_optionsâ€™ structure.
  
   -- Target Hook: void TARGET_OPTION_POST_STREAM_IN (struct
            cl_target_option *PTR)
       This hook is called to update target-specific information in the
!      â€˜struct cl_target_optionâ€™ structure after it is streamed in from
       LTO bytecode.
  
   -- Target Hook: void TARGET_OPTION_PRINT (FILE *FILE, int INDENT,
            struct cl_target_option *PTR)
       This hook is called to print any additional target-specific
!      information in the â€˜struct cl_target_optionâ€™ structure for
       function-specific options.
  
   -- Target Hook: bool TARGET_OPTION_PRAGMA_PARSE (tree ARGS, tree
            POP_TARGET)
!      This target hook parses the options for â€˜#pragma GCC targetâ€™, which
       sets the target-specific options for functions that occur later in
       the input stream.  The options accepted should be the same as those
!      handled by the â€˜TARGET_OPTION_VALID_ATTRIBUTE_Pâ€™ hook.
  
   -- Target Hook: void TARGET_OPTION_OVERRIDE (void)
       Sometimes certain combinations of command options do not make sense
       on a particular target machine.  You can override the hook
!      â€˜TARGET_OPTION_OVERRIDEâ€™ to take account of this.  This hooks is
       called once just after all the command options have been parsed.
  
       Don't use this hook to turn on various extra optimizations for
!      â€˜-Oâ€™.  That is what â€˜TARGET_OPTION_OPTIMIZATIONâ€™ is for.
  
       If you need to do something whenever the optimization level is
       changed via the optimize attribute or pragma, see
!      â€˜TARGET_OVERRIDE_OPTIONS_AFTER_CHANGEâ€™
  
   -- Target Hook: bool TARGET_OPTION_FUNCTION_VERSIONS (tree DECL1, tree
            DECL2)
!      This target hook returns â€˜trueâ€™ if DECL1 and DECL2 are versions of
       the same function.  DECL1 and DECL2 are function versions if and
       only if they have the same function signature and different target
       specific attributes, that is, they are compiled for different
       target machines.
  
   -- Target Hook: bool TARGET_CAN_INLINE_P (tree CALLER, tree CALLEE)
!      This target hook returns â€˜falseâ€™ if the CALLER function cannot
       inline CALLEE, based on target specific information.  By default,
       inlining is not allowed if the callee function has function
       specific target options and the caller does not use the same
*************** be documented in 'extend.texi'.
*** 43974,43980 ****
       with the conservative analysis on all statements of the callee if
       we are able to guarantee the callee does not exploit any
       instructions from the mismatch isa feature, it would be safe to
!      allow the caller to inline the callee.  INFO is one 'unsigned int'
       value to record information in which one set bit indicates one
       corresponding feature is detected in the analysis, STMT is the
       statement being analyzed.  Return true if target still need to
--- 43978,43984 ----
       with the conservative analysis on all statements of the callee if
       we are able to guarantee the callee does not exploit any
       instructions from the mismatch isa feature, it would be safe to
!      allow the caller to inline the callee.  INFO is one â€˜unsigned intâ€™
       value to record information in which one set bit indicates one
       corresponding feature is detected in the analysis, STMT is the
       statement being analyzed.  Return true if target still need to
*************** be documented in 'extend.texi'.
*** 43986,43996 ****
            unsigned int& INFO)
       Allow target to check early whether it is necessary to analyze all
       gimple statements in the given function to update target specific
!      information for inlining.  See hook 'update_ipa_fn_target_info' for
       usage example of target specific information.  This hook is
       expected to be invoked ahead of the iterating with hook
!      'update_ipa_fn_target_info'.  DECL is the function being analyzed,
!      INFO is the same as what in hook 'update_ipa_fn_target_info',
       target can do one time update into INFO without iterating for some
       case.  Return true if target decides to analyze all gimple
       statements to collect information, otherwise return false.  The
--- 43990,44000 ----
            unsigned int& INFO)
       Allow target to check early whether it is necessary to analyze all
       gimple statements in the given function to update target specific
!      information for inlining.  See hook â€˜update_ipa_fn_target_infoâ€™ for
       usage example of target specific information.  This hook is
       expected to be invoked ahead of the iterating with hook
!      â€˜update_ipa_fn_target_infoâ€™.  DECL is the function being analyzed,
!      INFO is the same as what in hook â€˜update_ipa_fn_target_infoâ€™,
       target can do one time update into INFO without iterating for some
       case.  Return true if target decides to analyze all gimple
       statements to collect information, otherwise return false.  The
*************** the current thread's instance of the TLS
*** 44027,44059 ****
   -- Target Hook: const char * TARGET_EMUTLS_REGISTER_COMMON
       Contains the name of the helper function that should be used at
       program startup to register TLS objects that are implicitly
!      initialized to zero.  If this is 'NULL', all TLS objects will have
       explicit initializers.  The default causes libgcc's emulated TLS
       registration function to be used.
  
   -- Target Hook: const char * TARGET_EMUTLS_VAR_SECTION
       Contains the name of the section in which TLS control variables
!      should be placed.  The default of 'NULL' allows these to be placed
       in any section.
  
   -- Target Hook: const char * TARGET_EMUTLS_TMPL_SECTION
       Contains the name of the section in which TLS initializers should
!      be placed.  The default of 'NULL' allows these to be placed in any
       section.
  
   -- Target Hook: const char * TARGET_EMUTLS_VAR_PREFIX
       Contains the prefix to be prepended to TLS control variable names.
!      The default of 'NULL' uses a target-specific prefix.
  
   -- Target Hook: const char * TARGET_EMUTLS_TMPL_PREFIX
       Contains the prefix to be prepended to TLS initializer objects.
!      The default of 'NULL' uses a target-specific prefix.
  
   -- Target Hook: tree TARGET_EMUTLS_VAR_FIELDS (tree TYPE, tree *NAME)
       Specifies a function that generates the FIELD_DECLs for a TLS
       control object type.  TYPE is the RECORD_TYPE the fields are for
       and NAME should be filled with the structure tag, if the default of
!      '__emutls_object' is unsuitable.  The default creates a type
       suitable for libgcc's emulated TLS function.
  
   -- Target Hook: tree TARGET_EMUTLS_VAR_INIT (tree VAR, tree DECL, tree
--- 44031,44063 ----
   -- Target Hook: const char * TARGET_EMUTLS_REGISTER_COMMON
       Contains the name of the helper function that should be used at
       program startup to register TLS objects that are implicitly
!      initialized to zero.  If this is â€˜NULLâ€™, all TLS objects will have
       explicit initializers.  The default causes libgcc's emulated TLS
       registration function to be used.
  
   -- Target Hook: const char * TARGET_EMUTLS_VAR_SECTION
       Contains the name of the section in which TLS control variables
!      should be placed.  The default of â€˜NULLâ€™ allows these to be placed
       in any section.
  
   -- Target Hook: const char * TARGET_EMUTLS_TMPL_SECTION
       Contains the name of the section in which TLS initializers should
!      be placed.  The default of â€˜NULLâ€™ allows these to be placed in any
       section.
  
   -- Target Hook: const char * TARGET_EMUTLS_VAR_PREFIX
       Contains the prefix to be prepended to TLS control variable names.
!      The default of â€˜NULLâ€™ uses a target-specific prefix.
  
   -- Target Hook: const char * TARGET_EMUTLS_TMPL_PREFIX
       Contains the prefix to be prepended to TLS initializer objects.
!      The default of â€˜NULLâ€™ uses a target-specific prefix.
  
   -- Target Hook: tree TARGET_EMUTLS_VAR_FIELDS (tree TYPE, tree *NAME)
       Specifies a function that generates the FIELD_DECLs for a TLS
       control object type.  TYPE is the RECORD_TYPE the fields are for
       and NAME should be filled with the structure tag, if the default of
!      â€˜__emutls_objectâ€™ is unsuitable.  The default creates a type
       suitable for libgcc's emulated TLS function.
  
   -- Target Hook: tree TARGET_EMUTLS_VAR_INIT (tree VAR, tree DECL, tree
*************** the current thread's instance of the TLS
*** 44069,44075 ****
       optimize single objects.  The default is false.
  
   -- Target Hook: bool TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS
!      Specifies whether a DWARF 'DW_OP_form_tls_address' location
       descriptor may be used to describe emulated TLS control objects.
  
  
--- 44073,44079 ----
       optimize single objects.  The default is false.
  
   -- Target Hook: bool TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS
!      Specifies whether a DWARF â€˜DW_OP_form_tls_addressâ€™ location
       descriptor may be used to describe emulated TLS control objects.
  
  
*************** and memory using asm-ized variables.  Fo
*** 44090,44096 ****
  
   ("c0r1" is the default name of register 1 in coprocessor 0; alternate
  names may be added as described below, or the default names may be
! overridden entirely in 'SUBTARGET_CONDITIONAL_REGISTER_USAGE'.)
  
   Coprocessor registers are assumed to be epilogue-used; sets to them
  will be preserved even if it does not appear that the register is used
--- 44094,44100 ----
  
   ("c0r1" is the default name of register 1 in coprocessor 0; alternate
  names may be added as described below, or the default names may be
! overridden entirely in â€˜SUBTARGET_CONDITIONAL_REGISTER_USAGEâ€™.)
  
   Coprocessor registers are assumed to be epilogue-used; sets to them
  will be preserved even if it does not appear that the register is used
*************** File: gccint.info,  Node: PCH Target,  N
*** 44108,44138 ****
  
   -- Target Hook: void * TARGET_GET_PCH_VALIDITY (size_t *SZ)
       This hook returns a pointer to the data needed by
!      'TARGET_PCH_VALID_P' and sets '*SZ' to the size of the data in
       bytes.
  
   -- Target Hook: const char * TARGET_PCH_VALID_P (const void *DATA,
            size_t SZ)
       This hook checks whether the options used to create a PCH file are
!      compatible with the current settings.  It returns 'NULL' if so and
       a suitable error message if not.  Error messages will be presented
!      to the user and must be localized using '_(MSG)'.
  
!      DATA is the data that was returned by 'TARGET_GET_PCH_VALIDITY'
       when the PCH file was created and SZ is the size of that data in
       bytes.  It's safe to assume that the data was created by the same
       version of the compiler, so no format checking is needed.
  
!      The default definition of 'default_pch_valid_p' should be suitable
       for most targets.
  
   -- Target Hook: const char * TARGET_CHECK_PCH_TARGET_FLAGS (int
            PCH_FLAGS)
       If this hook is nonnull, the default implementation of
!      'TARGET_PCH_VALID_P' will use it to check for compatible values of
!      'target_flags'.  PCH_FLAGS specifies the value that 'target_flags'
       had when the PCH file was created.  The return value is the same as
!      for 'TARGET_PCH_VALID_P'.
  
   -- Target Hook: void TARGET_PREPARE_PCH_SAVE (void)
       Called before writing out a PCH file.  If the target has some
--- 44112,44142 ----
  
   -- Target Hook: void * TARGET_GET_PCH_VALIDITY (size_t *SZ)
       This hook returns a pointer to the data needed by
!      â€˜TARGET_PCH_VALID_Pâ€™ and sets â€˜*SZâ€™ to the size of the data in
       bytes.
  
   -- Target Hook: const char * TARGET_PCH_VALID_P (const void *DATA,
            size_t SZ)
       This hook checks whether the options used to create a PCH file are
!      compatible with the current settings.  It returns â€˜NULLâ€™ if so and
       a suitable error message if not.  Error messages will be presented
!      to the user and must be localized using â€˜_(MSG)â€™.
  
!      DATA is the data that was returned by â€˜TARGET_GET_PCH_VALIDITYâ€™
       when the PCH file was created and SZ is the size of that data in
       bytes.  It's safe to assume that the data was created by the same
       version of the compiler, so no format checking is needed.
  
!      The default definition of â€˜default_pch_valid_pâ€™ should be suitable
       for most targets.
  
   -- Target Hook: const char * TARGET_CHECK_PCH_TARGET_FLAGS (int
            PCH_FLAGS)
       If this hook is nonnull, the default implementation of
!      â€˜TARGET_PCH_VALID_Pâ€™ will use it to check for compatible values of
!      â€˜target_flagsâ€™.  PCH_FLAGS specifies the value that â€˜target_flagsâ€™
       had when the PCH file was created.  The return value is the same as
!      for â€˜TARGET_PCH_VALID_Pâ€™.
  
   -- Target Hook: void TARGET_PREPARE_PCH_SAVE (void)
       Called before writing out a PCH file.  If the target has some
*************** File: gccint.info,  Node: C++ ABI,  Next
*** 44153,44186 ****
  
   -- Target Hook: bool TARGET_CXX_GUARD_MASK_BIT (void)
       This hook determines how guard variables are used.  It should
!      return 'false' (the default) if the first byte should be used.  A
!      return value of 'true' indicates that only the least significant
       bit should be used.
  
   -- Target Hook: tree TARGET_CXX_GET_COOKIE_SIZE (tree TYPE)
       This hook returns the size of the cookie to use when allocating an
       array whose elements have the indicated TYPE.  Assumes that it is
!      already known that a cookie is needed.  The default is 'max(sizeof
!      (size_t), alignof(type))', as defined in section 2.7 of the
       IA64/Generic C++ ABI.
  
   -- Target Hook: bool TARGET_CXX_COOKIE_HAS_SIZE (void)
!      This hook should return 'true' if the element size should be stored
!      in array cookies.  The default is to return 'false'.
  
   -- Target Hook: int TARGET_CXX_IMPORT_EXPORT_CLASS (tree TYPE, int
            IMPORT_EXPORT)
       If defined by a backend this hook allows the decision made to
       export class TYPE to be overruled.  Upon entry IMPORT_EXPORT will
!      contain 1 if the class is going to be exported, -1 if it is going
       to be imported and 0 otherwise.  This function should return the
       modified value and perform any other actions necessary to support
       the backend's targeted operating system.
  
   -- Target Hook: bool TARGET_CXX_CDTOR_RETURNS_THIS (void)
!      This hook should return 'true' if constructors and destructors
       return the address of the object created/destroyed.  The default is
!      to return 'false'.
  
   -- Target Hook: bool TARGET_CXX_KEY_METHOD_MAY_BE_INLINE (void)
       This hook returns true if the key method for a class (i.e., the
--- 44157,44190 ----
  
   -- Target Hook: bool TARGET_CXX_GUARD_MASK_BIT (void)
       This hook determines how guard variables are used.  It should
!      return â€˜falseâ€™ (the default) if the first byte should be used.  A
!      return value of â€˜trueâ€™ indicates that only the least significant
       bit should be used.
  
   -- Target Hook: tree TARGET_CXX_GET_COOKIE_SIZE (tree TYPE)
       This hook returns the size of the cookie to use when allocating an
       array whose elements have the indicated TYPE.  Assumes that it is
!      already known that a cookie is needed.  The default is â€˜max(sizeof
!      (size_t), alignof(type))â€™, as defined in section 2.7 of the
       IA64/Generic C++ ABI.
  
   -- Target Hook: bool TARGET_CXX_COOKIE_HAS_SIZE (void)
!      This hook should return â€˜trueâ€™ if the element size should be stored
!      in array cookies.  The default is to return â€˜falseâ€™.
  
   -- Target Hook: int TARGET_CXX_IMPORT_EXPORT_CLASS (tree TYPE, int
            IMPORT_EXPORT)
       If defined by a backend this hook allows the decision made to
       export class TYPE to be overruled.  Upon entry IMPORT_EXPORT will
!      contain 1 if the class is going to be exported, âˆ’1 if it is going
       to be imported and 0 otherwise.  This function should return the
       modified value and perform any other actions necessary to support
       the backend's targeted operating system.
  
   -- Target Hook: bool TARGET_CXX_CDTOR_RETURNS_THIS (void)
!      This hook should return â€˜trueâ€™ if constructors and destructors
       return the address of the object created/destroyed.  The default is
!      to return â€˜falseâ€™.
  
   -- Target Hook: bool TARGET_CXX_KEY_METHOD_MAY_BE_INLINE (void)
       This hook returns true if the key method for a class (i.e., the
*************** File: gccint.info,  Node: C++ ABI,  Next
*** 44190,44196 ****
       function so long as the function is not declared inline in the
       class definition.  Under some variants of the ABI, an inline
       function can never be the key method.  The default is to return
!      'true'.
  
   -- Target Hook: void TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY (tree
            DECL)
--- 44194,44200 ----
       function so long as the function is not declared inline in the
       class definition.  Under some variants of the ABI, an inline
       function can never be the key method.  The default is to return
!      â€˜trueâ€™.
  
   -- Target Hook: void TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY (tree
            DECL)
*************** File: gccint.info,  Node: C++ ABI,  Next
*** 44199,44205 ****
       external linkage in this translation unit.  No ELF visibility has
       been explicitly specified.  If the target needs to specify a
       visibility other than that of the containing class, use this hook
!      to set 'DECL_VISIBILITY' and 'DECL_VISIBILITY_SPECIFIED'.
  
   -- Target Hook: bool TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT (void)
       This hook returns true (the default) if virtual tables and other
--- 44203,44209 ----
       external linkage in this translation unit.  No ELF visibility has
       been explicitly specified.  If the target needs to specify a
       visibility other than that of the containing class, use this hook
!      to set â€˜DECL_VISIBILITYâ€™ and â€˜DECL_VISIBILITY_SPECIFIEDâ€™.
  
   -- Target Hook: bool TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT (void)
       This hook returns true (the default) if virtual tables and other
*************** File: gccint.info,  Node: C++ ABI,  Next
*** 44214,44235 ****
       be COMDAT, false if it should not be COMDAT.
  
   -- Target Hook: bool TARGET_CXX_USE_AEABI_ATEXIT (void)
!      This hook returns true if '__aeabi_atexit' (as defined by the ARM
       EABI) should be used to register static destructors when
!      '-fuse-cxa-atexit' is in effect.  The default is to return false to
!      use '__cxa_atexit'.
  
   -- Target Hook: bool TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT (void)
!      This hook returns true if the target 'atexit' function can be used
!      in the same manner as '__cxa_atexit' to register C++ static
!      destructors.  This requires that 'atexit'-registered functions in
       shared libraries are run in the correct order when the libraries
       are unloaded.  The default is to return false.
  
   -- Target Hook: tree TARGET_CXX_ADJUST_CDTOR_CALLABI_FNTYPE (tree
            FNTYPE)
!      This hook returns a possibly modified 'FUNCTION_TYPE' for arguments
!      to '__cxa_atexit', '__cxa_thread_atexit' or '__cxa_throw' function
       pointers.  ABIs like mingw32 require special attributes to be added
       to function types pointed to by arguments of these functions.  The
       default is to return the passed argument unmodified.
--- 44218,44239 ----
       be COMDAT, false if it should not be COMDAT.
  
   -- Target Hook: bool TARGET_CXX_USE_AEABI_ATEXIT (void)
!      This hook returns true if â€˜__aeabi_atexitâ€™ (as defined by the ARM
       EABI) should be used to register static destructors when
!      â€˜-fuse-cxa-atexitâ€™ is in effect.  The default is to return false to
!      use â€˜__cxa_atexitâ€™.
  
   -- Target Hook: bool TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT (void)
!      This hook returns true if the target â€˜atexitâ€™ function can be used
!      in the same manner as â€˜__cxa_atexitâ€™ to register C++ static
!      destructors.  This requires that â€˜atexitâ€™-registered functions in
       shared libraries are run in the correct order when the libraries
       are unloaded.  The default is to return false.
  
   -- Target Hook: tree TARGET_CXX_ADJUST_CDTOR_CALLABI_FNTYPE (tree
            FNTYPE)
!      This hook returns a possibly modified â€˜FUNCTION_TYPEâ€™ for arguments
!      to â€˜__cxa_atexitâ€™, â€˜__cxa_thread_atexitâ€™ or â€˜__cxa_throwâ€™ function
       pointers.  ABIs like mingw32 require special attributes to be added
       to function types pointed to by arguments of these functions.  The
       default is to return the passed argument unmodified.
*************** File: gccint.info,  Node: C++ ABI,  Next
*** 44241,44247 ****
       modifications).
  
   -- Target Hook: tree TARGET_CXX_DECL_MANGLING_CONTEXT (const_tree DECL)
!      Return target-specific mangling context of DECL or 'NULL_TREE'.
  
  
  File: gccint.info,  Node: D Language and ABI,  Next: Rust Language and ABI,  Prev: C++ ABI,  Up: Target Macros
--- 44245,44251 ----
       modifications).
  
   -- Target Hook: tree TARGET_CXX_DECL_MANGLING_CONTEXT (const_tree DECL)
!      Return target-specific mangling context of DECL or â€˜NULL_TREEâ€™.
  
  
  File: gccint.info,  Node: D Language and ABI,  Next: Rust Language and ABI,  Prev: C++ ABI,  Up: Target Macros
*************** File: gccint.info,  Node: D Language and
*** 44251,44312 ****
  
   -- D Target Hook: void TARGET_D_CPU_VERSIONS (void)
       Declare all environmental version identifiers relating to the
!      target CPU using the function 'builtin_version', which takes a
       string representing the name of the version.  Version identifiers
       predefined by this hook apply to all modules that are being
       compiled and imported.
  
   -- D Target Hook: void TARGET_D_OS_VERSIONS (void)
!      Similarly to 'TARGET_D_CPU_VERSIONS', but is used for versions
       relating to the target operating system.
  
   -- D Target Hook: void TARGET_D_REGISTER_CPU_TARGET_INFO (void)
       Register all target information keys relating to the target CPU
!      using the function 'd_add_target_info_handlers', which takes a
!      'struct d_target_info_spec' (defined in 'd/d-target.h').  The keys
       added by this hook are made available at compile time by the
!      '__traits(getTargetInfo)' extension, the result is an expression
       describing the requested target information.
  
   -- D Target Hook: void TARGET_D_REGISTER_OS_TARGET_INFO (void)
!      Same as 'TARGET_D_CPU_TARGET_INFO', but is used for keys relating
       to the target operating system.
  
   -- D Target Hook: const char * TARGET_D_MINFO_SECTION
       Contains the name of the section in which module info references
       should be placed.  By default, the compiler puts all module info
!      symbols in the '"minfo"' section.  Define this macro to override
       the string if a different section name should be used.  This
       section is expected to be bracketed by two symbols
!      'TARGET_D_MINFO_SECTION_START' and 'TARGET_D_MINFO_SECTION_END' to
       indicate the start and end address of the section, so that the
       runtime library can collect all modules for each loaded shared
!      library and executable.  Setting the value to 'NULL' disables the
       use of sections for storing module info altogether.
  
   -- D Target Hook: const char * TARGET_D_MINFO_SECTION_START
!      If 'TARGET_D_MINFO_SECTION' is defined, then this must also be
       defined as the name of the symbol indicating the start address of
       the module info section
  
   -- D Target Hook: const char * TARGET_D_MINFO_SECTION_END
!      If 'TARGET_D_MINFO_SECTION' is defined, then this must also be
       defined as the name of the symbol indicating the end address of the
       module info section
  
   -- D Target Hook: bool TARGET_D_HAS_STDCALL_CONVENTION (unsigned int
            *LINK_SYSTEM, unsigned int *LINK_WINDOWS)
!      Returns 'true' if the target supports the stdcall calling
!      convention.  The hook should also set LINK_SYSTEM to '1' if the
!      'stdcall' attribute should be applied to functions with
!      'extern(System)' linkage, and LINK_WINDOWS to '1' to apply
!      'stdcall' to functions with 'extern(Windows)' linkage.
  
   -- D Target Hook: bool TARGET_D_TEMPLATES_ALWAYS_COMDAT
       This flag is true if instantiated functions and variables are
       always COMDAT if they have external linkage.  If this flag is
       false, then instantiated decls will be emitted as weak symbols.
!      The default is 'false'.
  
  
  File: gccint.info,  Node: Rust Language and ABI,  Next: Named Address Spaces,  Prev: D Language and ABI,  Up: Target Macros
--- 44255,44316 ----
  
   -- D Target Hook: void TARGET_D_CPU_VERSIONS (void)
       Declare all environmental version identifiers relating to the
!      target CPU using the function â€˜builtin_versionâ€™, which takes a
       string representing the name of the version.  Version identifiers
       predefined by this hook apply to all modules that are being
       compiled and imported.
  
   -- D Target Hook: void TARGET_D_OS_VERSIONS (void)
!      Similarly to â€˜TARGET_D_CPU_VERSIONSâ€™, but is used for versions
       relating to the target operating system.
  
   -- D Target Hook: void TARGET_D_REGISTER_CPU_TARGET_INFO (void)
       Register all target information keys relating to the target CPU
!      using the function â€˜d_add_target_info_handlersâ€™, which takes a
!      â€˜struct d_target_info_specâ€™ (defined in â€˜d/d-target.hâ€™).  The keys
       added by this hook are made available at compile time by the
!      â€˜__traits(getTargetInfo)â€™ extension, the result is an expression
       describing the requested target information.
  
   -- D Target Hook: void TARGET_D_REGISTER_OS_TARGET_INFO (void)
!      Same as â€˜TARGET_D_CPU_TARGET_INFOâ€™, but is used for keys relating
       to the target operating system.
  
   -- D Target Hook: const char * TARGET_D_MINFO_SECTION
       Contains the name of the section in which module info references
       should be placed.  By default, the compiler puts all module info
!      symbols in the â€˜"minfo"â€™ section.  Define this macro to override
       the string if a different section name should be used.  This
       section is expected to be bracketed by two symbols
!      â€˜TARGET_D_MINFO_SECTION_STARTâ€™ and â€˜TARGET_D_MINFO_SECTION_ENDâ€™ to
       indicate the start and end address of the section, so that the
       runtime library can collect all modules for each loaded shared
!      library and executable.  Setting the value to â€˜NULLâ€™ disables the
       use of sections for storing module info altogether.
  
   -- D Target Hook: const char * TARGET_D_MINFO_SECTION_START
!      If â€˜TARGET_D_MINFO_SECTIONâ€™ is defined, then this must also be
       defined as the name of the symbol indicating the start address of
       the module info section
  
   -- D Target Hook: const char * TARGET_D_MINFO_SECTION_END
!      If â€˜TARGET_D_MINFO_SECTIONâ€™ is defined, then this must also be
       defined as the name of the symbol indicating the end address of the
       module info section
  
   -- D Target Hook: bool TARGET_D_HAS_STDCALL_CONVENTION (unsigned int
            *LINK_SYSTEM, unsigned int *LINK_WINDOWS)
!      Returns â€˜trueâ€™ if the target supports the stdcall calling
!      convention.  The hook should also set LINK_SYSTEM to â€˜1â€™ if the
!      â€˜stdcallâ€™ attribute should be applied to functions with
!      â€˜extern(System)â€™ linkage, and LINK_WINDOWS to â€˜1â€™ to apply
!      â€˜stdcallâ€™ to functions with â€˜extern(Windows)â€™ linkage.
  
   -- D Target Hook: bool TARGET_D_TEMPLATES_ALWAYS_COMDAT
       This flag is true if instantiated functions and variables are
       always COMDAT if they have external linkage.  If this flag is
       false, then instantiated decls will be emitted as weak symbols.
!      The default is â€˜falseâ€™.
  
  
  File: gccint.info,  Node: Rust Language and ABI,  Next: Named Address Spaces,  Prev: D Language and ABI,  Up: Target Macros
*************** File: gccint.info,  Node: Rust Language
*** 44316,44328 ****
  
   -- Rust Target Hook: void TARGET_RUST_CPU_INFO (void)
       Declare all environmental CPU info and features relating to the
!      target CPU using the function 'rust_add_target_info', which takes a
       string representing the feature key and a string representing the
       feature value.  Configuration pairs predefined by this hook apply
       to all files that are being compiled.
  
   -- Rust Target Hook: void TARGET_RUST_OS_INFO (void)
!      Similar to 'TARGET_RUST_CPU_INFO', but is used for configuration
       info relating to the target operating system.
  
  
--- 44320,44332 ----
  
   -- Rust Target Hook: void TARGET_RUST_CPU_INFO (void)
       Declare all environmental CPU info and features relating to the
!      target CPU using the function â€˜rust_add_target_infoâ€™, which takes a
       string representing the feature key and a string representing the
       feature value.  Configuration pairs predefined by this hook apply
       to all files that are being compiled.
  
   -- Rust Target Hook: void TARGET_RUST_OS_INFO (void)
!      Similar to â€˜TARGET_RUST_CPU_INFOâ€™, but is used for configuration
       info relating to the target operating system.
  
  
*************** File: gccint.info,  Node: Named Address
*** 44332,44353 ****
  =============================================
  
  The draft technical report of the ISO/IEC JTC1 S22 WG14 N1275 standards
! committee, 'Programming Languages - C - Extensions to support embedded
! processors', specifies a syntax for embedded processors to specify
  alternate address spaces.  You can configure a GCC port to support
  section 5.1 of the draft report to add support for address spaces other
  than the default address space.  These address spaces are new keywords
! that are similar to the 'volatile' and 'const' type attributes.
  
   Pointers to named address spaces can have a different size than
  pointers to the generic address space.
  
!  For example, the SPU port uses the '__ea' address space to refer to
  memory in the host processor, rather than memory local to the SPU
! processor.  Access to memory in the '__ea' address space involves
  issuing DMA operations to move data between the host processor and the
! local processor memory address space.  Pointers in the '__ea' address
! space are either 32 bits or 64 bits based on the '-mea32' or '-mea64'
  switches (native SPU pointers are always 32 bits).
  
   Internally, address spaces are represented as a small integer in the
--- 44336,44357 ----
  =============================================
  
  The draft technical report of the ISO/IEC JTC1 S22 WG14 N1275 standards
! committee, â€˜Programming Languages - C - Extensions to support embedded
! processorsâ€™, specifies a syntax for embedded processors to specify
  alternate address spaces.  You can configure a GCC port to support
  section 5.1 of the draft report to add support for address spaces other
  than the default address space.  These address spaces are new keywords
! that are similar to the â€˜volatileâ€™ and â€˜constâ€™ type attributes.
  
   Pointers to named address spaces can have a different size than
  pointers to the generic address space.
  
!  For example, the SPU port uses the â€˜__eaâ€™ address space to refer to
  memory in the host processor, rather than memory local to the SPU
! processor.  Access to memory in the â€˜__eaâ€™ address space involves
  issuing DMA operations to move data between the host processor and the
! local processor memory address space.  Pointers in the â€˜__eaâ€™ address
! space are either 32 bits or 64 bits based on the â€˜-mea32â€™ or â€˜-mea64â€™
  switches (native SPU pointers are always 32 bits).
  
   Internally, address spaces are represented as a small integer in the
*************** range 0 to 15 with address space 0 being
*** 44355,44362 ****
  address space.
  
   To register a named address space qualifier keyword with the C front
! end, the target may call the 'c_register_addr_space' routine.  For
! example, the SPU port uses the following to declare '__ea' as the
  keyword for named address space #1:
       #define ADDR_SPACE_EA 1
       c_register_addr_space ("__ea", ADDR_SPACE_EA);
--- 44359,44366 ----
  address space.
  
   To register a named address space qualifier keyword with the C front
! end, the target may call the â€˜c_register_addr_spaceâ€™ routine.  For
! example, the SPU port uses the following to declare â€˜__eaâ€™ as the
  keyword for named address space #1:
       #define ADDR_SPACE_EA 1
       c_register_addr_space ("__ea", ADDR_SPACE_EA);
*************** keyword for named address space #1:
*** 44365,44387 ****
            (addr_space_t ADDRESS_SPACE)
       Define this to return the machine mode to use for pointers to
       ADDRESS_SPACE if the target supports named address spaces.  The
!      default version of this hook returns 'ptr_mode'.
  
   -- Target Hook: scalar_int_mode TARGET_ADDR_SPACE_ADDRESS_MODE
            (addr_space_t ADDRESS_SPACE)
       Define this to return the machine mode to use for addresses in
       ADDRESS_SPACE if the target supports named address spaces.  The
!      default version of this hook returns 'Pmode'.
  
   -- Target Hook: bool TARGET_ADDR_SPACE_VALID_POINTER_MODE
            (scalar_int_mode MODE, addr_space_t AS)
       Define this to return nonzero if the port can handle pointers with
       machine mode MODE to address space AS.  This target hook is the
!      same as the 'TARGET_VALID_POINTER_MODE' target hook, except that it
       includes explicit named address space support.  The default version
       of this hook returns true for the modes returned by either the
!      'TARGET_ADDR_SPACE_POINTER_MODE' or
!      'TARGET_ADDR_SPACE_ADDRESS_MODE' target hooks for the given address
       space.
  
   -- Target Hook: bool TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P
--- 44369,44391 ----
            (addr_space_t ADDRESS_SPACE)
       Define this to return the machine mode to use for pointers to
       ADDRESS_SPACE if the target supports named address spaces.  The
!      default version of this hook returns â€˜ptr_modeâ€™.
  
   -- Target Hook: scalar_int_mode TARGET_ADDR_SPACE_ADDRESS_MODE
            (addr_space_t ADDRESS_SPACE)
       Define this to return the machine mode to use for addresses in
       ADDRESS_SPACE if the target supports named address spaces.  The
!      default version of this hook returns â€˜Pmodeâ€™.
  
   -- Target Hook: bool TARGET_ADDR_SPACE_VALID_POINTER_MODE
            (scalar_int_mode MODE, addr_space_t AS)
       Define this to return nonzero if the port can handle pointers with
       machine mode MODE to address space AS.  This target hook is the
!      same as the â€˜TARGET_VALID_POINTER_MODEâ€™ target hook, except that it
       includes explicit named address space support.  The default version
       of this hook returns true for the modes returned by either the
!      â€˜TARGET_ADDR_SPACE_POINTER_MODEâ€™ or
!      â€˜TARGET_ADDR_SPACE_ADDRESS_MODEâ€™ target hooks for the given address
       space.
  
   -- Target Hook: bool TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P
*************** keyword for named address space #1:
*** 44391,44397 ****
       in the named address space AS with the use context CH.  The STRICT
       parameter says whether strict addressing is in effect after reload
       has finished.  The CH indicates what context EXP will be used for.
!      This target hook is the same as the 'TARGET_LEGITIMATE_ADDRESS_P'
       target hook, except that it includes explicit named address space
       support.
  
--- 44395,44401 ----
       in the named address space AS with the use context CH.  The STRICT
       parameter says whether strict addressing is in effect after reload
       has finished.  The CH indicates what context EXP will be used for.
!      This target hook is the same as the â€˜TARGET_LEGITIMATE_ADDRESS_Pâ€™
       target hook, except that it includes explicit named address space
       support.
  
*************** keyword for named address space #1:
*** 44399,44405 ****
            OLDX, machine_mode MODE, addr_space_t AS)
       Define this to modify an invalid address X to be a valid address
       with mode MODE in the named address space AS.  This target hook is
!      the same as the 'TARGET_LEGITIMIZE_ADDRESS' target hook, except
       that it includes explicit named address space support.
  
   -- Target Hook: bool TARGET_ADDR_SPACE_SUBSET_P (addr_space_t SUBSET,
--- 44403,44409 ----
            OLDX, machine_mode MODE, addr_space_t AS)
       Define this to modify an invalid address X to be a valid address
       with mode MODE in the named address space AS.  This target hook is
!      the same as the â€˜TARGET_LEGITIMIZE_ADDRESSâ€™ target hook, except
       that it includes explicit named address space support.
  
   -- Target Hook: bool TARGET_ADDR_SPACE_SUBSET_P (addr_space_t SUBSET,
*************** keyword for named address space #1:
*** 44424,44435 ****
       a new pointer expression with type TO_TYPE that points to a
       different named address space.  When this hook it called, it is
       guaranteed that one of the two address spaces is a subset of the
!      other, as determined by the 'TARGET_ADDR_SPACE_SUBSET_P' target
       hook.
  
   -- Target Hook: int TARGET_ADDR_SPACE_DEBUG (addr_space_t AS)
       Define this to define how the address space is encoded in dwarf.
!      The result is the value to be used with 'DW_AT_address_class'.
  
   -- Target Hook: void TARGET_ADDR_SPACE_DIAGNOSE_USAGE (addr_space_t AS,
            location_t LOC)
--- 44428,44439 ----
       a new pointer expression with type TO_TYPE that points to a
       different named address space.  When this hook it called, it is
       guaranteed that one of the two address spaces is a subset of the
!      other, as determined by the â€˜TARGET_ADDR_SPACE_SUBSET_Pâ€™ target
       hook.
  
   -- Target Hook: int TARGET_ADDR_SPACE_DEBUG (addr_space_t AS)
       Define this to define how the address space is encoded in dwarf.
!      The result is the value to be used with â€˜DW_AT_address_classâ€™.
  
   -- Target Hook: void TARGET_ADDR_SPACE_DIAGNOSE_USAGE (addr_space_t AS,
            location_t LOC)
*************** keyword for named address space #1:
*** 44437,44444 ****
       command line options and some diagnostics should be printed when
       the address space is used.  This hook is called during parsing and
       allows to emit a better diagnostic compared to the case where the
!      address space was not registered with 'c_register_addr_space'.  AS
!      is the address space as registered with 'c_register_addr_space'.
       LOC is the location of the address space qualifier token.  The
       default implementation does nothing.
  
--- 44441,44448 ----
       command line options and some diagnostics should be printed when
       the address space is used.  This hook is called during parsing and
       allows to emit a better diagnostic compared to the case where the
!      address space was not registered with â€˜c_register_addr_spaceâ€™.  AS
!      is the address space as registered with â€˜c_register_addr_spaceâ€™.
       LOC is the location of the address space qualifier token.  The
       default implementation does nothing.
  
*************** Here are several miscellaneous parameter
*** 44473,44483 ****
       elements of a jump-table should have.
  
   -- Macro: CASE_VECTOR_SHORTEN_MODE (MIN_OFFSET, MAX_OFFSET, BODY)
!      Optional: return the preferred mode for an 'addr_diff_vec' when the
       minimum and maximum offset are known.  If you define this, it
       enables extra code in branch shortening to deal with
!      'addr_diff_vec'.  To make this work, you also have to define
!      'INSN_ALIGN' and make the alignment for 'addr_diff_vec' explicit.
       The BODY argument is provided so that the offset_unsigned and scale
       flags can be updated.
  
--- 44477,44487 ----
       elements of a jump-table should have.
  
   -- Macro: CASE_VECTOR_SHORTEN_MODE (MIN_OFFSET, MAX_OFFSET, BODY)
!      Optional: return the preferred mode for an â€˜addr_diff_vecâ€™ when the
       minimum and maximum offset are known.  If you define this, it
       enables extra code in branch shortening to deal with
!      â€˜addr_diff_vecâ€™.  To make this work, you also have to define
!      â€˜INSN_ALIGNâ€™ and make the alignment for â€˜addr_diff_vecâ€™ explicit.
       The BODY argument is provided so that the offset_unsigned and scale
       flags can be updated.
  
*************** Here are several miscellaneous parameter
*** 44485,44508 ****
       Define this macro to be a C expression to indicate when jump-tables
       should contain relative addresses.  You need not define this macro
       if jump-tables never contain relative addresses, or jump-tables
!      should contain relative addresses only when '-fPIC' or '-fPIC' is
       in effect.
  
   -- Target Hook: unsigned int TARGET_CASE_VALUES_THRESHOLD (void)
       This function return the smallest number of different values for
       which it is best to use a jump-table instead of a tree of
       conditional branches.  The default is four for machines with a
!      'casesi' instruction and five otherwise.  This is best for most
       machines.
  
   -- Macro: WORD_REGISTER_OPERATIONS
       Define this macro to 1 if operations between registers with
       integral mode smaller than a word are always performed on the
       entire register.  To be more explicit, if you start with a pair of
!      'word_mode' registers with known values and you do a subword, for
!      example 'QImode', addition on the low part of the registers, then
       the compiler may consider that the result has a known value in
!      'word_mode' too if the macro is defined to 1.  Most RISC machines
       have this property and most CISC machines do not.
  
   -- Target Hook: unsigned int TARGET_MIN_ARITHMETIC_PRECISION (void)
--- 44489,44512 ----
       Define this macro to be a C expression to indicate when jump-tables
       should contain relative addresses.  You need not define this macro
       if jump-tables never contain relative addresses, or jump-tables
!      should contain relative addresses only when â€˜-fPICâ€™ or â€˜-fPICâ€™ is
       in effect.
  
   -- Target Hook: unsigned int TARGET_CASE_VALUES_THRESHOLD (void)
       This function return the smallest number of different values for
       which it is best to use a jump-table instead of a tree of
       conditional branches.  The default is four for machines with a
!      â€˜casesiâ€™ instruction and five otherwise.  This is best for most
       machines.
  
   -- Macro: WORD_REGISTER_OPERATIONS
       Define this macro to 1 if operations between registers with
       integral mode smaller than a word are always performed on the
       entire register.  To be more explicit, if you start with a pair of
!      â€˜word_modeâ€™ registers with known values and you do a subword, for
!      example â€˜QImodeâ€™, addition on the low part of the registers, then
       the compiler may consider that the result has a known value in
!      â€˜word_modeâ€™ too if the macro is defined to 1.  Most RISC machines
       have this property and most CISC machines do not.
  
   -- Target Hook: unsigned int TARGET_MIN_ARITHMETIC_PRECISION (void)
*************** Here are several miscellaneous parameter
*** 44519,44554 ****
       the compiler to try using arithmetical operations setting the
       condition codes with a precision lower than the word precision.
  
!      You need not define this hook if 'WORD_REGISTER_OPERATIONS' is not
       defined to 1.
  
   -- Macro: LOAD_EXTEND_OP (MEM_MODE)
       Define this macro to be a C expression indicating when insns that
       read memory in MEM_MODE, an integral mode narrower than a word, set
       the bits outside of MEM_MODE to be either the sign-extension or the
!      zero-extension of the data read.  Return 'SIGN_EXTEND' for values
!      of MEM_MODE for which the insn sign-extends, 'ZERO_EXTEND' for
!      which it zero-extends, and 'UNKNOWN' for other modes.
  
       This macro is not called with MEM_MODE non-integral or with a width
!      greater than or equal to 'BITS_PER_WORD', so you may return any
       value in this case.  Do not define this macro if it would always
!      return 'UNKNOWN'.  On machines where this macro is defined, you
!      will normally define it as the constant 'SIGN_EXTEND' or
!      'ZERO_EXTEND'.
  
!      You may return a non-'UNKNOWN' value even if for some hard
       registers the sign extension is not performed, if for the
!      'REGNO_REG_CLASS' of these hard registers
!      'TARGET_CAN_CHANGE_MODE_CLASS' returns false when the FROM mode is
       MEM_MODE and the TO mode is any integral mode larger than this but
!      not larger than 'word_mode'.
  
!      You must return 'UNKNOWN' if for some hard registers that allow
!      this mode, 'TARGET_CAN_CHANGE_MODE_CLASS' says that they cannot
!      change to 'word_mode', but that they can change to another integral
       mode that is larger then MEM_MODE but still smaller than
!      'word_mode'.
  
   -- Macro: SHORT_IMMEDIATES_SIGN_EXTEND
       Define this macro to 1 if loading short immediate values into
--- 44523,44558 ----
       the compiler to try using arithmetical operations setting the
       condition codes with a precision lower than the word precision.
  
!      You need not define this hook if â€˜WORD_REGISTER_OPERATIONSâ€™ is not
       defined to 1.
  
   -- Macro: LOAD_EXTEND_OP (MEM_MODE)
       Define this macro to be a C expression indicating when insns that
       read memory in MEM_MODE, an integral mode narrower than a word, set
       the bits outside of MEM_MODE to be either the sign-extension or the
!      zero-extension of the data read.  Return â€˜SIGN_EXTENDâ€™ for values
!      of MEM_MODE for which the insn sign-extends, â€˜ZERO_EXTENDâ€™ for
!      which it zero-extends, and â€˜UNKNOWNâ€™ for other modes.
  
       This macro is not called with MEM_MODE non-integral or with a width
!      greater than or equal to â€˜BITS_PER_WORDâ€™, so you may return any
       value in this case.  Do not define this macro if it would always
!      return â€˜UNKNOWNâ€™.  On machines where this macro is defined, you
!      will normally define it as the constant â€˜SIGN_EXTENDâ€™ or
!      â€˜ZERO_EXTENDâ€™.
  
!      You may return a non-â€˜UNKNOWNâ€™ value even if for some hard
       registers the sign extension is not performed, if for the
!      â€˜REGNO_REG_CLASSâ€™ of these hard registers
!      â€˜TARGET_CAN_CHANGE_MODE_CLASSâ€™ returns false when the FROM mode is
       MEM_MODE and the TO mode is any integral mode larger than this but
!      not larger than â€˜word_modeâ€™.
  
!      You must return â€˜UNKNOWNâ€™ if for some hard registers that allow
!      this mode, â€˜TARGET_CAN_CHANGE_MODE_CLASSâ€™ says that they cannot
!      change to â€˜word_modeâ€™, but that they can change to another integral
       mode that is larger then MEM_MODE but still smaller than
!      â€˜word_modeâ€™.
  
   -- Macro: SHORT_IMMEDIATES_SIGN_EXTEND
       Define this macro to 1 if loading short immediate values into
*************** Here are several miscellaneous parameter
*** 44556,44562 ****
  
   -- Target Hook: unsigned int TARGET_MIN_DIVISIONS_FOR_RECIP_MUL
            (machine_mode MODE)
!      When '-ffast-math' is in effect, GCC tries to optimize divisions by
       the same divisor, by turning them into multiplications by the
       reciprocal.  This target hook specifies the minimum number of
       divisions that should be there for GCC to perform the optimization
--- 44560,44566 ----
  
   -- Target Hook: unsigned int TARGET_MIN_DIVISIONS_FOR_RECIP_MUL
            (machine_mode MODE)
!      When â€˜-ffast-mathâ€™ is in effect, GCC tries to optimize divisions by
       the same divisor, by turning them into multiplications by the
       reciprocal.  This target hook specifies the minimum number of
       divisions that should be there for GCC to perform the optimization
*************** Here are several miscellaneous parameter
*** 44572,44580 ****
   -- Macro: MAX_MOVE_MAX
       The maximum number of bytes that a single instruction can move
       quickly between memory and registers or between two memory
!      locations.  If this is undefined, the default is 'MOVE_MAX'.
       Otherwise, it is the constant value that is the largest value that
!      'MOVE_MAX' can have at run-time.
  
   -- Macro: SHIFT_COUNT_TRUNCATED
       A C expression that is nonzero if on this machine the number of
--- 44576,44584 ----
   -- Macro: MAX_MOVE_MAX
       The maximum number of bytes that a single instruction can move
       quickly between memory and registers or between two memory
!      locations.  If this is undefined, the default is â€˜MOVE_MAXâ€™.
       Otherwise, it is the constant value that is the largest value that
!      â€˜MOVE_MAXâ€™ can have at run-time.
  
   -- Macro: SHIFT_COUNT_TRUNCATED
       A C expression that is nonzero if on this machine the number of
*************** Here are several miscellaneous parameter
*** 44585,44591 ****
       'and' instructions that truncates the count of a shift operation.
       On machines that have instructions that act on bit-fields at
       variable positions, which may include 'bit test' instructions, a
!      nonzero 'SHIFT_COUNT_TRUNCATED' also enables deletion of
       truncations of the values that serve as arguments to bit-field
       instructions.
  
--- 44589,44595 ----
       'and' instructions that truncates the count of a shift operation.
       On machines that have instructions that act on bit-fields at
       variable positions, which may include 'bit test' instructions, a
!      nonzero â€˜SHIFT_COUNT_TRUNCATEDâ€™ also enables deletion of
       truncations of the values that serve as arguments to bit-field
       instructions.
  
*************** Here are several miscellaneous parameter
*** 44595,44602 ****
  
       However, on some machines, such as the 80386 and the 680x0,
       truncation only applies to shift operations and not the (real or
!      pretended) bit-field operations.  Define 'SHIFT_COUNT_TRUNCATED' to
!      be zero on such machines.  Instead, add patterns to the 'md' file
       that include the implied truncation of the shift instructions.
  
       You need not define this macro if it would always have the value of
--- 44599,44606 ----
  
       However, on some machines, such as the 80386 and the 680x0,
       truncation only applies to shift operations and not the (real or
!      pretended) bit-field operations.  Define â€˜SHIFT_COUNT_TRUNCATEDâ€™ to
!      be zero on such machines.  Instead, add patterns to the â€˜mdâ€™ file
       that include the implied truncation of the shift instructions.
  
       You need not define this macro if it would always have the value of
*************** Here are several miscellaneous parameter
*** 44615,44628 ****
       should return 0.  A return value of 0 indicates that no particular
       behavior is guaranteed.
  
!      Note that, unlike 'SHIFT_COUNT_TRUNCATED', this function does _not_
       apply to general shift rtxes; it applies only to instructions that
       are generated by the named shift patterns.
  
       The default implementation of this function returns
!      'GET_MODE_BITSIZE (MODE) - 1' if 'SHIFT_COUNT_TRUNCATED' and 0
       otherwise.  This definition is always safe, but if
!      'SHIFT_COUNT_TRUNCATED' is false, and some shift patterns
       nevertheless truncate the shift count, you may get better code by
       overriding it.
  
--- 44619,44632 ----
       should return 0.  A return value of 0 indicates that no particular
       behavior is guaranteed.
  
!      Note that, unlike â€˜SHIFT_COUNT_TRUNCATEDâ€™, this function does _not_
       apply to general shift rtxes; it applies only to instructions that
       are generated by the named shift patterns.
  
       The default implementation of this function returns
!      â€˜GET_MODE_BITSIZE (MODE) - 1â€™ if â€˜SHIFT_COUNT_TRUNCATEDâ€™ and 0
       otherwise.  This definition is always safe, but if
!      â€˜SHIFT_COUNT_TRUNCATEDâ€™ is false, and some shift patterns
       nevertheless truncate the shift count, you may get better code by
       overriding it.
  
*************** Here are several miscellaneous parameter
*** 44632,44642 ****
       bits to one of OUTPREC bits (where OUTPREC is smaller than INPREC)
       by merely operating on it as if it had only OUTPREC bits.  The
       default returns true unconditionally, which is correct for most
!      machines.  When 'TARGET_TRULY_NOOP_TRUNCATION' returns false, the
!      machine description should provide a 'trunc' optab to specify the
       RTL that performs the required truncation.
  
!      If 'TARGET_MODES_TIEABLE_P' returns false for a pair of modes,
       suboptimal code can result if this hook returns true for the
       corresponding mode sizes.  Making this hook return false in such
       cases may improve things.
--- 44636,44646 ----
       bits to one of OUTPREC bits (where OUTPREC is smaller than INPREC)
       by merely operating on it as if it had only OUTPREC bits.  The
       default returns true unconditionally, which is correct for most
!      machines.  When â€˜TARGET_TRULY_NOOP_TRUNCATIONâ€™ returns false, the
!      machine description should provide a â€˜truncâ€™ optab to specify the
       RTL that performs the required truncation.
  
!      If â€˜TARGET_MODES_TIEABLE_Pâ€™ returns false for a pair of modes,
       suboptimal code can result if this hook returns true for the
       corresponding mode sizes.  Making this hook return false in such
       cases may improve things.
*************** Here are several miscellaneous parameter
*** 44644,44708 ****
   -- Target Hook: int TARGET_MODE_REP_EXTENDED (scalar_int_mode MODE,
            scalar_int_mode REP_MODE)
       The representation of an integral mode can be such that the values
!      are always extended to a wider integral mode.  Return 'SIGN_EXTEND'
       if values of MODE are represented in sign-extended form to
!      REP_MODE.  Return 'UNKNOWN' otherwise.  (Currently, none of the
       targets use zero-extended representation this way so unlike
!      'LOAD_EXTEND_OP', 'TARGET_MODE_REP_EXTENDED' is expected to return
!      either 'SIGN_EXTEND' or 'UNKNOWN'.  Also no target extends MODE to
       REP_MODE so that REP_MODE is not the next widest integral mode and
       currently we take advantage of this fact.)
  
!      Similarly to 'LOAD_EXTEND_OP' you may return a non-'UNKNOWN' value
       even if the extension is not performed on certain hard registers as
!      long as for the 'REGNO_REG_CLASS' of these hard registers
!      'TARGET_CAN_CHANGE_MODE_CLASS' returns false.
  
!      Note that 'TARGET_MODE_REP_EXTENDED' and 'LOAD_EXTEND_OP' describe
!      two related properties.  If you define 'TARGET_MODE_REP_EXTENDED
!      (mode, word_mode)' you probably also want to define 'LOAD_EXTEND_OP
!      (mode)' to return the same type of extension.
  
!      In order to enforce the representation of 'mode',
!      'TARGET_TRULY_NOOP_TRUNCATION' should return false when truncating
!      to 'mode'.
  
   -- Target Hook: bool TARGET_SETJMP_PRESERVES_NONVOLATILE_REGS_P (void)
       On some targets, it is assumed that the compiler will spill all
!      pseudos that are live across a call to 'setjmp', while other
!      targets treat 'setjmp' calls as normal function calls.
  
!      This hook returns false if 'setjmp' calls do not preserve all
       non-volatile registers so that gcc that must spill all pseudos that
!      are live across 'setjmp' calls.  Define this to return true if the
!      target does not need to spill all pseudos live across 'setjmp'
       calls.  The default implementation conservatively assumes all
!      pseudos must be spilled across 'setjmp' calls.
  
   -- Macro: STORE_FLAG_VALUE
       A C expression describing the value returned by a comparison
       operator with an integral mode and stored by a store-flag
!      instruction ('cstoreMODE4') when the condition is true.  This
!      description must apply to _all_ the 'cstoreMODE4' patterns and all
!      the comparison operators whose results have a 'MODE_INT' mode.
  
!      A value of 1 or -1 means that the instruction implementing the
!      comparison operator returns exactly 1 or -1 when the comparison is
       true and 0 when the comparison is false.  Otherwise, the value
       indicates which bits of the result are guaranteed to be 1 when the
       comparison is true.  This value is interpreted in the mode of the
       comparison operation, which is given by the mode of the first
!      operand in the 'cstoreMODE4' pattern.  Either the low bit or the
!      sign bit of 'STORE_FLAG_VALUE' be on.  Presently, only those bits
       are used by the compiler.
  
!      If 'STORE_FLAG_VALUE' is neither 1 or -1, the compiler will
       generate code that depends only on the specified bits.  It can also
       replace comparison operators with equivalent operations if they
       cause the required bits to be set, even if the remaining bits are
       undefined.  For example, on a machine whose comparison operators
!      return an 'SImode' value and where 'STORE_FLAG_VALUE' is defined as
!      '0x80000000', saying that just the sign bit is relevant, the
       expression
  
            (ne:SI (and:SI X (const_int POWER-OF-2)) (const_int 0))
--- 44648,44712 ----
   -- Target Hook: int TARGET_MODE_REP_EXTENDED (scalar_int_mode MODE,
            scalar_int_mode REP_MODE)
       The representation of an integral mode can be such that the values
!      are always extended to a wider integral mode.  Return â€˜SIGN_EXTENDâ€™
       if values of MODE are represented in sign-extended form to
!      REP_MODE.  Return â€˜UNKNOWNâ€™ otherwise.  (Currently, none of the
       targets use zero-extended representation this way so unlike
!      â€˜LOAD_EXTEND_OPâ€™, â€˜TARGET_MODE_REP_EXTENDEDâ€™ is expected to return
!      either â€˜SIGN_EXTENDâ€™ or â€˜UNKNOWNâ€™.  Also no target extends MODE to
       REP_MODE so that REP_MODE is not the next widest integral mode and
       currently we take advantage of this fact.)
  
!      Similarly to â€˜LOAD_EXTEND_OPâ€™ you may return a non-â€˜UNKNOWNâ€™ value
       even if the extension is not performed on certain hard registers as
!      long as for the â€˜REGNO_REG_CLASSâ€™ of these hard registers
!      â€˜TARGET_CAN_CHANGE_MODE_CLASSâ€™ returns false.
  
!      Note that â€˜TARGET_MODE_REP_EXTENDEDâ€™ and â€˜LOAD_EXTEND_OPâ€™ describe
!      two related properties.  If you define â€˜TARGET_MODE_REP_EXTENDED
!      (mode, word_mode)â€™ you probably also want to define â€˜LOAD_EXTEND_OP
!      (mode)â€™ to return the same type of extension.
  
!      In order to enforce the representation of â€˜modeâ€™,
!      â€˜TARGET_TRULY_NOOP_TRUNCATIONâ€™ should return false when truncating
!      to â€˜modeâ€™.
  
   -- Target Hook: bool TARGET_SETJMP_PRESERVES_NONVOLATILE_REGS_P (void)
       On some targets, it is assumed that the compiler will spill all
!      pseudos that are live across a call to â€˜setjmpâ€™, while other
!      targets treat â€˜setjmpâ€™ calls as normal function calls.
  
!      This hook returns false if â€˜setjmpâ€™ calls do not preserve all
       non-volatile registers so that gcc that must spill all pseudos that
!      are live across â€˜setjmpâ€™ calls.  Define this to return true if the
!      target does not need to spill all pseudos live across â€˜setjmpâ€™
       calls.  The default implementation conservatively assumes all
!      pseudos must be spilled across â€˜setjmpâ€™ calls.
  
   -- Macro: STORE_FLAG_VALUE
       A C expression describing the value returned by a comparison
       operator with an integral mode and stored by a store-flag
!      instruction (â€˜cstoreMODE4â€™) when the condition is true.  This
!      description must apply to _all_ the â€˜cstoreMODE4â€™ patterns and all
!      the comparison operators whose results have a â€˜MODE_INTâ€™ mode.
  
!      A value of 1 or âˆ’1 means that the instruction implementing the
!      comparison operator returns exactly 1 or âˆ’1 when the comparison is
       true and 0 when the comparison is false.  Otherwise, the value
       indicates which bits of the result are guaranteed to be 1 when the
       comparison is true.  This value is interpreted in the mode of the
       comparison operation, which is given by the mode of the first
!      operand in the â€˜cstoreMODE4â€™ pattern.  Either the low bit or the
!      sign bit of â€˜STORE_FLAG_VALUEâ€™ be on.  Presently, only those bits
       are used by the compiler.
  
!      If â€˜STORE_FLAG_VALUEâ€™ is neither 1 or âˆ’1, the compiler will
       generate code that depends only on the specified bits.  It can also
       replace comparison operators with equivalent operations if they
       cause the required bits to be set, even if the remaining bits are
       undefined.  For example, on a machine whose comparison operators
!      return an â€˜SImodeâ€™ value and where â€˜STORE_FLAG_VALUEâ€™ is defined as
!      â€˜0x80000000â€™, saying that just the sign bit is relevant, the
       expression
  
            (ne:SI (and:SI X (const_int POWER-OF-2)) (const_int 0))
*************** Here are several miscellaneous parameter
*** 44724,44771 ****
  
       Often, a machine will have multiple instructions that obtain a
       value from a comparison (or the condition codes).  Here are rules
!      to guide the choice of value for 'STORE_FLAG_VALUE', and hence the
       instructions to be used:
  
!         * Use the shortest sequence that yields a valid definition for
!           'STORE_FLAG_VALUE'.  It is more efficient for the compiler to
            "normalize" the value (convert it to, e.g., 1 or 0) than for
            the comparison operators to do so because there may be
            opportunities to combine the normalization with other
            operations.
  
!         * For equal-length sequences, use a value of 1 or -1, with -1
            being slightly preferred on machines with expensive jumps and
            1 preferred on other machines.
  
!         * As a second choice, choose a value of '0x80000001' if
            instructions exist that set both the sign and low-order bits
            but do not define the others.
  
!         * Otherwise, use a value of '0x80000000'.
  
       Many machines can produce both the value chosen for
!      'STORE_FLAG_VALUE' and its negation in the same number of
       instructions.  On those machines, you should also define a pattern
       for those cases, e.g., one matching
  
            (set A (neg:M (ne:M B C)))
  
!      Some machines can also perform 'and' or 'plus' operations on
       condition code values with less instructions than the corresponding
!      'cstoreMODE4' insn followed by 'and' or 'plus'.  On those machines,
!      define the appropriate patterns.  Use the names 'incscc' and
!      'decscc', respectively, for the patterns which perform 'plus' or
!      'minus' operations on condition code values.  See 'rs6000.md' for
       some examples.  The GNU Superoptimizer can be used to find such
       instruction sequences on other machines.
  
       If this macro is not defined, the default value, 1, is used.  You
!      need not define 'STORE_FLAG_VALUE' if the machine has no store-flag
       instructions, or if the value generated by these instructions is 1.
  
   -- Macro: FLOAT_STORE_FLAG_VALUE (MODE)
!      A C expression that gives a nonzero 'REAL_VALUE_TYPE' value that is
       returned when comparison operators with floating-point results are
       true.  Define this macro on machines that have comparison
       operations that return floating-point values.  If there are no such
--- 44728,44775 ----
  
       Often, a machine will have multiple instructions that obtain a
       value from a comparison (or the condition codes).  Here are rules
!      to guide the choice of value for â€˜STORE_FLAG_VALUEâ€™, and hence the
       instructions to be used:
  
!         â€¢ Use the shortest sequence that yields a valid definition for
!           â€˜STORE_FLAG_VALUEâ€™.  It is more efficient for the compiler to
            "normalize" the value (convert it to, e.g., 1 or 0) than for
            the comparison operators to do so because there may be
            opportunities to combine the normalization with other
            operations.
  
!         â€¢ For equal-length sequences, use a value of 1 or âˆ’1, with âˆ’1
            being slightly preferred on machines with expensive jumps and
            1 preferred on other machines.
  
!         â€¢ As a second choice, choose a value of â€˜0x80000001â€™ if
            instructions exist that set both the sign and low-order bits
            but do not define the others.
  
!         â€¢ Otherwise, use a value of â€˜0x80000000â€™.
  
       Many machines can produce both the value chosen for
!      â€˜STORE_FLAG_VALUEâ€™ and its negation in the same number of
       instructions.  On those machines, you should also define a pattern
       for those cases, e.g., one matching
  
            (set A (neg:M (ne:M B C)))
  
!      Some machines can also perform â€˜andâ€™ or â€˜plusâ€™ operations on
       condition code values with less instructions than the corresponding
!      â€˜cstoreMODE4â€™ insn followed by â€˜andâ€™ or â€˜plusâ€™.  On those machines,
!      define the appropriate patterns.  Use the names â€˜incsccâ€™ and
!      â€˜decsccâ€™, respectively, for the patterns which perform â€˜plusâ€™ or
!      â€˜minusâ€™ operations on condition code values.  See â€˜rs6000.mdâ€™ for
       some examples.  The GNU Superoptimizer can be used to find such
       instruction sequences on other machines.
  
       If this macro is not defined, the default value, 1, is used.  You
!      need not define â€˜STORE_FLAG_VALUEâ€™ if the machine has no store-flag
       instructions, or if the value generated by these instructions is 1.
  
   -- Macro: FLOAT_STORE_FLAG_VALUE (MODE)
!      A C expression that gives a nonzero â€˜REAL_VALUE_TYPEâ€™ value that is
       returned when comparison operators with floating-point results are
       true.  Define this macro on machines that have comparison
       operations that return floating-point values.  If there are no such
*************** Here are several miscellaneous parameter
*** 44778,44808 ****
       Define this macro on machines that have vector comparison
       operations that return a vector result.  If there are no such
       operations, do not define this macro.  Typically, this macro is
!      defined as 'const1_rtx' or 'constm1_rtx'.  This macro may return
!      'NULL_RTX' to prevent the compiler optimizing such vector
       comparison operations for the given mode.
  
   -- Macro: CLZ_DEFINED_VALUE_AT_ZERO (MODE, VALUE)
   -- Macro: CTZ_DEFINED_VALUE_AT_ZERO (MODE, VALUE)
       A C expression that indicates whether the architecture defines a
!      value for 'clz' or 'ctz' with a zero operand.  A result of '0'
       indicates the value is undefined.  If the value is defined for only
!      the RTL expression, the macro should evaluate to '1'; if the value
       applies also to the corresponding optab entry (which is normally
       the case if it expands directly into the corresponding RTL), then
!      the macro should evaluate to '2'.  In the cases where the value is
       defined, VALUE should be set to this value.
  
!      If this macro is not defined, the value of 'clz' or 'ctz' at zero
       is assumed to be undefined.
  
!      This macro must be defined if the target's expansion for 'ffs'
       relies on a particular value to get correct results.  Otherwise it
       is not necessary, though it may be used to optimize some corner
!      cases, and to provide a default expansion for the 'ffs' optab.
  
!      Note that regardless of this macro the "definedness" of 'clz' and
!      'ctz' at zero do _not_ extend to the builtin functions visible to
       the user.  Thus one may be free to adjust the value at will to
       match the target expansion of these operations without fear of
       breaking the API.
--- 44782,44812 ----
       Define this macro on machines that have vector comparison
       operations that return a vector result.  If there are no such
       operations, do not define this macro.  Typically, this macro is
!      defined as â€˜const1_rtxâ€™ or â€˜constm1_rtxâ€™.  This macro may return
!      â€˜NULL_RTXâ€™ to prevent the compiler optimizing such vector
       comparison operations for the given mode.
  
   -- Macro: CLZ_DEFINED_VALUE_AT_ZERO (MODE, VALUE)
   -- Macro: CTZ_DEFINED_VALUE_AT_ZERO (MODE, VALUE)
       A C expression that indicates whether the architecture defines a
!      value for â€˜clzâ€™ or â€˜ctzâ€™ with a zero operand.  A result of â€˜0â€™
       indicates the value is undefined.  If the value is defined for only
!      the RTL expression, the macro should evaluate to â€˜1â€™; if the value
       applies also to the corresponding optab entry (which is normally
       the case if it expands directly into the corresponding RTL), then
!      the macro should evaluate to â€˜2â€™.  In the cases where the value is
       defined, VALUE should be set to this value.
  
!      If this macro is not defined, the value of â€˜clzâ€™ or â€˜ctzâ€™ at zero
       is assumed to be undefined.
  
!      This macro must be defined if the target's expansion for â€˜ffsâ€™
       relies on a particular value to get correct results.  Otherwise it
       is not necessary, though it may be used to optimize some corner
!      cases, and to provide a default expansion for the â€˜ffsâ€™ optab.
  
!      Note that regardless of this macro the "definedness" of â€˜clzâ€™ and
!      â€˜ctzâ€™ at zero do _not_ extend to the builtin functions visible to
       the user.  Thus one may be free to adjust the value at will to
       match the target expansion of these operations without fear of
       breaking the API.
*************** Here are several miscellaneous parameter
*** 44810,44850 ****
   -- Macro: Pmode
       An alias for the machine mode for pointers.  On most machines,
       define this to be the integer mode corresponding to the width of a
!      hardware pointer; 'SImode' on 32-bit machine or 'DImode' on 64-bit
       machines.  On some machines you must define this to be one of the
!      partial integer modes, such as 'PSImode'.
  
!      The width of 'Pmode' must be at least as large as the value of
!      'POINTER_SIZE'.  If it is not equal, you must define the macro
!      'POINTERS_EXTEND_UNSIGNED' to specify how pointers are extended to
!      'Pmode'.
  
   -- Macro: FUNCTION_MODE
       An alias for the machine mode used for memory references to
!      functions being called, in 'call' RTL expressions.  On most CISC
       machines, where an instruction can begin at any byte address, this
!      should be 'QImode'.  On most RISC machines, where all instructions
       have fixed size and alignment, this should be a mode with the same
       size and alignment as the machine instruction words - typically
!      'SImode' or 'HImode'.
  
   -- Macro: STDC_0_IN_SYSTEM_HEADERS
!      In normal operation, the preprocessor expands '__STDC__' to the
       constant 1, to signify that GCC conforms to ISO Standard C.  On
       some hosts, like Solaris, the system compiler uses a different
!      convention, where '__STDC__' is normally 0, but is 1 if the user
       specifies strict conformance to the C Standard.
  
!      Defining 'STDC_0_IN_SYSTEM_HEADERS' makes GNU CPP follows the host
       convention when processing system header files, but when processing
!      user files '__STDC__' will always expand to 1.
  
   -- C Target Hook: const char * TARGET_C_PREINCLUDE (void)
       Define this hook to return the name of a header file to be included
       at the start of all compilations, as if it had been included with
!      '#include <FILE>'.  If this hook returns 'NULL', or is not defined,
       or the header is not found, or if the user specifies
!      '-ffreestanding' or '-nostdinc', no header is included.
  
       This hook can be used together with a header provided by the system
       C library to implement ISO C requirements for certain macros to be
--- 44814,44854 ----
   -- Macro: Pmode
       An alias for the machine mode for pointers.  On most machines,
       define this to be the integer mode corresponding to the width of a
!      hardware pointer; â€˜SImodeâ€™ on 32-bit machine or â€˜DImodeâ€™ on 64-bit
       machines.  On some machines you must define this to be one of the
!      partial integer modes, such as â€˜PSImodeâ€™.
  
!      The width of â€˜Pmodeâ€™ must be at least as large as the value of
!      â€˜POINTER_SIZEâ€™.  If it is not equal, you must define the macro
!      â€˜POINTERS_EXTEND_UNSIGNEDâ€™ to specify how pointers are extended to
!      â€˜Pmodeâ€™.
  
   -- Macro: FUNCTION_MODE
       An alias for the machine mode used for memory references to
!      functions being called, in â€˜callâ€™ RTL expressions.  On most CISC
       machines, where an instruction can begin at any byte address, this
!      should be â€˜QImodeâ€™.  On most RISC machines, where all instructions
       have fixed size and alignment, this should be a mode with the same
       size and alignment as the machine instruction words - typically
!      â€˜SImodeâ€™ or â€˜HImodeâ€™.
  
   -- Macro: STDC_0_IN_SYSTEM_HEADERS
!      In normal operation, the preprocessor expands â€˜__STDC__â€™ to the
       constant 1, to signify that GCC conforms to ISO Standard C.  On
       some hosts, like Solaris, the system compiler uses a different
!      convention, where â€˜__STDC__â€™ is normally 0, but is 1 if the user
       specifies strict conformance to the C Standard.
  
!      Defining â€˜STDC_0_IN_SYSTEM_HEADERSâ€™ makes GNU CPP follows the host
       convention when processing system header files, but when processing
!      user files â€˜__STDC__â€™ will always expand to 1.
  
   -- C Target Hook: const char * TARGET_C_PREINCLUDE (void)
       Define this hook to return the name of a header file to be included
       at the start of all compilations, as if it had been included with
!      â€˜#include <FILE>â€™.  If this hook returns â€˜NULLâ€™, or is not defined,
       or the header is not found, or if the user specifies
!      â€˜-ffreestandingâ€™ or â€˜-nostdincâ€™, no header is included.
  
       This hook can be used together with a header provided by the system
       C library to implement ISO C requirements for certain macros to be
*************** Here are several miscellaneous parameter
*** 44862,44873 ****
   -- Macro: SYSTEM_IMPLICIT_EXTERN_C
       Define this macro if the system header files do not support C++.
       This macro handles system header files by pretending that system
!      header files are enclosed in 'extern "C" {...}'.
  
   -- Macro: REGISTER_TARGET_PRAGMAS ()
       Define this macro if you want to implement any target-specific
       pragmas.  If defined, it is a C expression which makes a series of
!      calls to 'c_register_pragma' or 'c_register_pragma_with_expansion'
       for each pragma.  The macro may also do any setup required for the
       pragmas.
  
--- 44866,44877 ----
   -- Macro: SYSTEM_IMPLICIT_EXTERN_C
       Define this macro if the system header files do not support C++.
       This macro handles system header files by pretending that system
!      header files are enclosed in â€˜extern "C" {...}â€™.
  
   -- Macro: REGISTER_TARGET_PRAGMAS ()
       Define this macro if you want to implement any target-specific
       pragmas.  If defined, it is a C expression which makes a series of
!      calls to â€˜c_register_pragmaâ€™ or â€˜c_register_pragma_with_expansionâ€™
       for each pragma.  The macro may also do any setup required for the
       pragmas.
  
*************** Here are several miscellaneous parameter
*** 44876,44937 ****
       discourage definition of target-specific pragmas for GCC.
  
       If the pragma can be implemented by attributes then you should
!      consider defining the target hook 'TARGET_INSERT_ATTRIBUTES' as
       well.
  
       Preprocessor macros that appear on pragma lines are not expanded.
!      All '#pragma' directives that do not match any registered pragma
       are silently ignored, unless the user specifies
!      '-Wunknown-pragmas'.
  
   -- Function: void c_register_pragma (const char *SPACE, const char
            *NAME, void (*CALLBACK) (struct cpp_reader *))
   -- Function: void c_register_pragma_with_expansion (const char *SPACE,
            const char *NAME, void (*CALLBACK) (struct cpp_reader *))
  
!      Each call to 'c_register_pragma' or
!      'c_register_pragma_with_expansion' establishes one pragma.  The
       CALLBACK routine will be called when the preprocessor encounters a
       pragma of the form
  
            #pragma [SPACE] NAME ...
  
!      SPACE is the case-sensitive namespace of the pragma, or 'NULL' to
       put the pragma in the global namespace.  The callback routine
       receives PFILE as its first argument, which can be passed on to
       cpplib's functions if necessary.  You can lex tokens after the NAME
!      by calling 'pragma_lex'.  Tokens that are not read by the callback
       will be silently ignored.  The end of the line is indicated by a
!      token of type 'CPP_EOF'.  Macro expansion occurs on the arguments
!      of pragmas registered with 'c_register_pragma_with_expansion' but
       not on the arguments of pragmas registered with
!      'c_register_pragma'.
  
!      Note that the use of 'pragma_lex' is specific to the C and C++
       compilers.  It will not work in the Java or Fortran compilers, or
!      any other language compilers for that matter.  Thus if 'pragma_lex'
       is going to be called from target-specific code, it must only be
       done so when building the C and C++ compilers.  This can be done by
!      defining the variables 'c_target_objs' and 'cxx_target_objs' in the
!      target entry in the 'config.gcc' file.  These variables should name
       the target-specific, language-specific object file which contains
!      the code that uses 'pragma_lex'.  Note it will also be necessary to
!      add a rule to the makefile fragment pointed to by 'tmake_file' that
       shows how to build this object file.
  
   -- Macro: HANDLE_PRAGMA_PACK_WITH_EXPANSION
       Define this macro if macros should be expanded in the arguments of
!      '#pragma pack'.
  
   -- Macro: TARGET_DEFAULT_PACK_STRUCT
       If your target requires a structure packing default other than 0
       (meaning the machine default), define this macro to the necessary
       value (in bytes).  This must be a value that would also be valid to
!      use with '#pragma pack()' (that is, a small power of two).
  
   -- Macro: DOLLARS_IN_IDENTIFIERS
!      Define this macro to control use of the character '$' in identifier
!      names for the C family of languages.  0 means '$' is not allowed by
       default; 1 means it is allowed.  1 is the default; there is no need
       to define this macro in that case.
  
--- 44880,44941 ----
       discourage definition of target-specific pragmas for GCC.
  
       If the pragma can be implemented by attributes then you should
!      consider defining the target hook â€˜TARGET_INSERT_ATTRIBUTESâ€™ as
       well.
  
       Preprocessor macros that appear on pragma lines are not expanded.
!      All â€˜#pragmaâ€™ directives that do not match any registered pragma
       are silently ignored, unless the user specifies
!      â€˜-Wunknown-pragmasâ€™.
  
   -- Function: void c_register_pragma (const char *SPACE, const char
            *NAME, void (*CALLBACK) (struct cpp_reader *))
   -- Function: void c_register_pragma_with_expansion (const char *SPACE,
            const char *NAME, void (*CALLBACK) (struct cpp_reader *))
  
!      Each call to â€˜c_register_pragmaâ€™ or
!      â€˜c_register_pragma_with_expansionâ€™ establishes one pragma.  The
       CALLBACK routine will be called when the preprocessor encounters a
       pragma of the form
  
            #pragma [SPACE] NAME ...
  
!      SPACE is the case-sensitive namespace of the pragma, or â€˜NULLâ€™ to
       put the pragma in the global namespace.  The callback routine
       receives PFILE as its first argument, which can be passed on to
       cpplib's functions if necessary.  You can lex tokens after the NAME
!      by calling â€˜pragma_lexâ€™.  Tokens that are not read by the callback
       will be silently ignored.  The end of the line is indicated by a
!      token of type â€˜CPP_EOFâ€™.  Macro expansion occurs on the arguments
!      of pragmas registered with â€˜c_register_pragma_with_expansionâ€™ but
       not on the arguments of pragmas registered with
!      â€˜c_register_pragmaâ€™.
  
!      Note that the use of â€˜pragma_lexâ€™ is specific to the C and C++
       compilers.  It will not work in the Java or Fortran compilers, or
!      any other language compilers for that matter.  Thus if â€˜pragma_lexâ€™
       is going to be called from target-specific code, it must only be
       done so when building the C and C++ compilers.  This can be done by
!      defining the variables â€˜c_target_objsâ€™ and â€˜cxx_target_objsâ€™ in the
!      target entry in the â€˜config.gccâ€™ file.  These variables should name
       the target-specific, language-specific object file which contains
!      the code that uses â€˜pragma_lexâ€™.  Note it will also be necessary to
!      add a rule to the makefile fragment pointed to by â€˜tmake_fileâ€™ that
       shows how to build this object file.
  
   -- Macro: HANDLE_PRAGMA_PACK_WITH_EXPANSION
       Define this macro if macros should be expanded in the arguments of
!      â€˜#pragma packâ€™.
  
   -- Macro: TARGET_DEFAULT_PACK_STRUCT
       If your target requires a structure packing default other than 0
       (meaning the machine default), define this macro to the necessary
       value (in bytes).  This must be a value that would also be valid to
!      use with â€˜#pragma pack()â€™ (that is, a small power of two).
  
   -- Macro: DOLLARS_IN_IDENTIFIERS
!      Define this macro to control use of the character â€˜$â€™ in identifier
!      names for the C family of languages.  0 means â€˜$â€™ is not allowed by
       default; 1 means it is allowed.  1 is the default; there is no need
       to define this macro in that case.
  
*************** Here are several miscellaneous parameter
*** 44939,44947 ****
       Define this macro as a C expression that is nonzero if it is safe
       for the delay slot scheduler to place instructions in the delay
       slot of INSN, even if they appear to use a resource set or
!      clobbered in INSN.  INSN is always a 'jump_insn' or an 'insn'; GCC
!      knows that every 'call_insn' has this behavior.  On machines where
!      some 'insn' or 'jump_insn' is really a function call and hence has
       this behavior, you should define this macro.
  
       You need not define this macro if it would always return zero.
--- 44943,44951 ----
       Define this macro as a C expression that is nonzero if it is safe
       for the delay slot scheduler to place instructions in the delay
       slot of INSN, even if they appear to use a resource set or
!      clobbered in INSN.  INSN is always a â€˜jump_insnâ€™ or an â€˜insnâ€™; GCC
!      knows that every â€˜call_insnâ€™ has this behavior.  On machines where
!      some â€˜insnâ€™ or â€˜jump_insnâ€™ is really a function call and hence has
       this behavior, you should define this macro.
  
       You need not define this macro if it would always return zero.
*************** Here are several miscellaneous parameter
*** 44950,44957 ****
       Define this macro as a C expression that is nonzero if it is safe
       for the delay slot scheduler to place instructions in the delay
       slot of INSN, even if they appear to set or clobber a resource
!      referenced in INSN.  INSN is always a 'jump_insn' or an 'insn'.  On
!      machines where some 'insn' or 'jump_insn' is really a function call
       and its operands are registers whose use is actually in the
       subroutine it calls, you should define this macro.  Doing so allows
       the delay slot scheduler to move instructions which copy arguments
--- 44954,44961 ----
       Define this macro as a C expression that is nonzero if it is safe
       for the delay slot scheduler to place instructions in the delay
       slot of INSN, even if they appear to set or clobber a resource
!      referenced in INSN.  INSN is always a â€˜jump_insnâ€™ or an â€˜insnâ€™.  On
!      machines where some â€˜insnâ€™ or â€˜jump_insnâ€™ is really a function call
       and its operands are registers whose use is actually in the
       subroutine it calls, you should define this macro.  Doing so allows
       the delay slot scheduler to move instructions which copy arguments
*************** Here are several miscellaneous parameter
*** 44972,44978 ****
            vec<rtx>& INPUTS, vec<machine_mode>& INPUT_MODES, vec<const
            char *>& CONSTRAINTS, vec<rtx>& USESS, vec<rtx>& CLOBBERS,
            HARD_REG_SET& CLOBBERED_REGS, location_t LOC)
!      This target hook may add "clobbers" to CLOBBERS and CLOBBERED_REGS
       for any hard regs the port wishes to automatically clobber for an
       asm.  It can also add hard registers that are used by the asm to
       USES.  The OUTPUTS and INPUTS may be inspected to avoid clobbering
--- 44976,44982 ----
            vec<rtx>& INPUTS, vec<machine_mode>& INPUT_MODES, vec<const
            char *>& CONSTRAINTS, vec<rtx>& USESS, vec<rtx>& CLOBBERS,
            HARD_REG_SET& CLOBBERED_REGS, location_t LOC)
!      This target hook may add â€œclobbersâ€� to CLOBBERS and CLOBBERED_REGS
       for any hard regs the port wishes to automatically clobber for an
       asm.  It can also add hard registers that are used by the asm to
       USES.  The OUTPUTS and INPUTS may be inspected to avoid clobbering
*************** Here are several miscellaneous parameter
*** 44987,45008 ****
  
   -- Macro: MATH_LIBRARY
       Define this macro as a C string constant for the linker argument to
!      link in the system math library, minus the initial '"-l"', or '""'
       if the target does not have a separate math library.
  
!      You need only define this macro if the default of '"m"' is wrong.
  
   -- Macro: LIBRARY_PATH_ENV
       Define this macro as a C string constant for the environment
       variable that specifies where the linker should look for libraries.
  
!      You need only define this macro if the default of '"LIBRARY_PATH"'
       is wrong.
  
   -- Macro: TARGET_POSIX_IO
       Define this macro if the target supports the following POSIX file
       functions, access, mkdir and file locking with fcntl / F_SETLKW.
!      Defining 'TARGET_POSIX_IO' will enable the test coverage code to
       use file locking when exiting a program, which avoids race
       conditions if the program has forked.  It will also create
       directories at run-time for cross-profiling.
--- 44991,45012 ----
  
   -- Macro: MATH_LIBRARY
       Define this macro as a C string constant for the linker argument to
!      link in the system math library, minus the initial â€˜"-l"â€™, or â€˜""â€™
       if the target does not have a separate math library.
  
!      You need only define this macro if the default of â€˜"m"â€™ is wrong.
  
   -- Macro: LIBRARY_PATH_ENV
       Define this macro as a C string constant for the environment
       variable that specifies where the linker should look for libraries.
  
!      You need only define this macro if the default of â€˜"LIBRARY_PATH"â€™
       is wrong.
  
   -- Macro: TARGET_POSIX_IO
       Define this macro if the target supports the following POSIX file
       functions, access, mkdir and file locking with fcntl / F_SETLKW.
!      Defining â€˜TARGET_POSIX_IOâ€™ will enable the test coverage code to
       use file locking when exiting a program, which avoids race
       conditions if the program has forked.  It will also create
       directories at run-time for cross-profiling.
*************** Here are several miscellaneous parameter
*** 45011,45023 ****
  
       A C expression for the maximum number of instructions to execute
       via conditional execution instructions instead of a branch.  A
!      value of 'BRANCH_COST'+1 is the default.
  
   -- Macro: IFCVT_MODIFY_TESTS (CE_INFO, TRUE_EXPR, FALSE_EXPR)
       Used if the target needs to perform machine-dependent modifications
       on the conditionals used for turning basic blocks into
       conditionally executed code.  CE_INFO points to a data structure,
!      'struct ce_if_block', which contains information about the
       currently processed blocks.  TRUE_EXPR and FALSE_EXPR are the tests
       that are used for converting the then-block and the else-block,
       respectively.  Set either TRUE_EXPR or FALSE_EXPR to a null pointer
--- 45015,45027 ----
  
       A C expression for the maximum number of instructions to execute
       via conditional execution instructions instead of a branch.  A
!      value of â€˜BRANCH_COSTâ€™+1 is the default.
  
   -- Macro: IFCVT_MODIFY_TESTS (CE_INFO, TRUE_EXPR, FALSE_EXPR)
       Used if the target needs to perform machine-dependent modifications
       on the conditionals used for turning basic blocks into
       conditionally executed code.  CE_INFO points to a data structure,
!      â€˜struct ce_if_blockâ€™, which contains information about the
       currently processed blocks.  TRUE_EXPR and FALSE_EXPR are the tests
       that are used for converting the then-block and the else-block,
       respectively.  Set either TRUE_EXPR or FALSE_EXPR to a null pointer
*************** Here are several miscellaneous parameter
*** 45025,45057 ****
  
   -- Macro: IFCVT_MODIFY_MULTIPLE_TESTS (CE_INFO, BB, TRUE_EXPR,
            FALSE_EXPR)
!      Like 'IFCVT_MODIFY_TESTS', but used when converting more
!      complicated if-statements into conditions combined by 'and' and
!      'or' operations.  BB contains the basic block that contains the
       test that is currently being processed and about to be turned into
       a condition.
  
   -- Macro: IFCVT_MODIFY_INSN (CE_INFO, PATTERN, INSN)
       A C expression to modify the PATTERN of an INSN that is to be
       converted to conditional execution format.  CE_INFO points to a
!      data structure, 'struct ce_if_block', which contains information
       about the currently processed blocks.
  
   -- Macro: IFCVT_MODIFY_FINAL (CE_INFO)
       A C expression to perform any final machine dependent modifications
       in converting code to conditional execution.  The involved basic
!      blocks can be found in the 'struct ce_if_block' structure that is
       pointed to by CE_INFO.
  
   -- Macro: IFCVT_MODIFY_CANCEL (CE_INFO)
       A C expression to cancel any machine dependent modifications in
       converting code to conditional execution.  The involved basic
!      blocks can be found in the 'struct ce_if_block' structure that is
       pointed to by CE_INFO.
  
   -- Macro: IFCVT_MACHDEP_INIT (CE_INFO)
       A C expression to initialize any machine specific data for
!      if-conversion of the if-block in the 'struct ce_if_block' structure
       that is pointed to by CE_INFO.
  
   -- Target Hook: bool TARGET_USE_LATE_PROLOGUE_EPILOGUE ()
--- 45029,45061 ----
  
   -- Macro: IFCVT_MODIFY_MULTIPLE_TESTS (CE_INFO, BB, TRUE_EXPR,
            FALSE_EXPR)
!      Like â€˜IFCVT_MODIFY_TESTSâ€™, but used when converting more
!      complicated if-statements into conditions combined by â€˜andâ€™ and
!      â€˜orâ€™ operations.  BB contains the basic block that contains the
       test that is currently being processed and about to be turned into
       a condition.
  
   -- Macro: IFCVT_MODIFY_INSN (CE_INFO, PATTERN, INSN)
       A C expression to modify the PATTERN of an INSN that is to be
       converted to conditional execution format.  CE_INFO points to a
!      data structure, â€˜struct ce_if_blockâ€™, which contains information
       about the currently processed blocks.
  
   -- Macro: IFCVT_MODIFY_FINAL (CE_INFO)
       A C expression to perform any final machine dependent modifications
       in converting code to conditional execution.  The involved basic
!      blocks can be found in the â€˜struct ce_if_blockâ€™ structure that is
       pointed to by CE_INFO.
  
   -- Macro: IFCVT_MODIFY_CANCEL (CE_INFO)
       A C expression to cancel any machine dependent modifications in
       converting code to conditional execution.  The involved basic
!      blocks can be found in the â€˜struct ce_if_blockâ€™ structure that is
       pointed to by CE_INFO.
  
   -- Macro: IFCVT_MACHDEP_INIT (CE_INFO)
       A C expression to initialize any machine specific data for
!      if-conversion of the if-block in the â€˜struct ce_if_blockâ€™ structure
       that is pointed to by CE_INFO.
  
   -- Target Hook: bool TARGET_USE_LATE_PROLOGUE_EPILOGUE ()
*************** Here are several miscellaneous parameter
*** 45077,45083 ****
            *CALL)
       If defined, this hook emits an epilogue sequence for sibling (tail)
       call instruction CALL.  Another way of providing epilogues for
!      sibling calls is to define the 'sibcall_epilogue' instruction
       pattern; the main advantage of this hook over the pattern is that
       it has access to the call instruction.
  
--- 45081,45087 ----
            *CALL)
       If defined, this hook emits an epilogue sequence for sibling (tail)
       call instruction CALL.  Another way of providing epilogues for
!      sibling calls is to define the â€˜sibcall_epilogueâ€™ instruction
       pattern; the main advantage of this hook over the pattern is that
       it has access to the call instruction.
  
*************** Here are several miscellaneous parameter
*** 45107,45116 ****
       example, SIMD vector instructions or prefetch instructions).
  
       To create a built-in function, call the function
!      'lang_hooks.builtin_function' which is defined by the language
       front end.  You can use any type nodes set up by
!      'build_common_tree_nodes'; only language front ends that use those
!      two functions will call 'TARGET_INIT_BUILTINS'.
  
   -- Target Hook: tree TARGET_BUILTIN_DECL (unsigned CODE, bool
            INITIALIZE_P)
--- 45111,45120 ----
       example, SIMD vector instructions or prefetch instructions).
  
       To create a built-in function, call the function
!      â€˜lang_hooks.builtin_functionâ€™ which is defined by the language
       front end.  You can use any type nodes set up by
!      â€˜build_common_tree_nodesâ€™; only language front ends that use those
!      two functions will call â€˜TARGET_INIT_BUILTINSâ€™.
  
   -- Target Hook: tree TARGET_BUILTIN_DECL (unsigned CODE, bool
            INITIALIZE_P)
*************** Here are several miscellaneous parameter
*** 45119,45132 ****
       returns the builtin function declaration for the builtin function
       code CODE.  If there is no such builtin and it cannot be
       initialized at this time if INITIALIZE_P is true the function
!      should return 'NULL_TREE'.  If CODE is out of range the function
!      should return 'error_mark_node'.
  
   -- Target Hook: rtx TARGET_EXPAND_BUILTIN (tree EXP, rtx TARGET, rtx
            SUBTARGET, machine_mode MODE, int IGNORE)
  
       Expand a call to a machine specific built-in function that was set
!      up by 'TARGET_INIT_BUILTINS'.  EXP is the expression for the
       function call; the result should go to TARGET if that is
       convenient, and have mode MODE if that is convenient.  SUBTARGET
       may be used as the target for computing one of EXP's operands.
--- 45123,45136 ----
       returns the builtin function declaration for the builtin function
       code CODE.  If there is no such builtin and it cannot be
       initialized at this time if INITIALIZE_P is true the function
!      should return â€˜NULL_TREEâ€™.  If CODE is out of range the function
!      should return â€˜error_mark_nodeâ€™.
  
   -- Target Hook: rtx TARGET_EXPAND_BUILTIN (tree EXP, rtx TARGET, rtx
            SUBTARGET, machine_mode MODE, int IGNORE)
  
       Expand a call to a machine specific built-in function that was set
!      up by â€˜TARGET_INIT_BUILTINSâ€™.  EXP is the expression for the
       function call; the result should go to TARGET if that is
       convenient, and have mode MODE if that is convenient.  SUBTARGET
       may be used as the target for computing one of EXP's operands.
*************** Here are several miscellaneous parameter
*** 45136,45150 ****
   -- Target Hook: tree TARGET_RESOLVE_OVERLOADED_BUILTIN (location_t LOC,
            tree FNDECL, void *ARGLIST, bool COMPLAIN)
       Select a replacement for a machine specific built-in function that
!      was set up by 'TARGET_INIT_BUILTINS'.  This is done _before_
       regular type checking, and so allows the target to implement a
       crude form of function overloading.  FNDECL is the declaration of
       the built-in function.  ARGLIST is the list of arguments passed to
       the built-in function.  The result is a complete expression that
!      implements the operation, usually another 'CALL_EXPR'.  ARGLIST
!      really has type 'VEC(tree,gc)*' COMPLAIN is a boolean indicating
       whether invalid operations should emit errors.  This is set to
!      'false' when the C++ templating context expects that errors should
       not be emitted (i.e.  SFINAE).
  
   -- Target Hook: bool TARGET_CHECK_BUILTIN_CALL (location_t LOC,
--- 45140,45154 ----
   -- Target Hook: tree TARGET_RESOLVE_OVERLOADED_BUILTIN (location_t LOC,
            tree FNDECL, void *ARGLIST, bool COMPLAIN)
       Select a replacement for a machine specific built-in function that
!      was set up by â€˜TARGET_INIT_BUILTINSâ€™.  This is done _before_
       regular type checking, and so allows the target to implement a
       crude form of function overloading.  FNDECL is the declaration of
       the built-in function.  ARGLIST is the list of arguments passed to
       the built-in function.  The result is a complete expression that
!      implements the operation, usually another â€˜CALL_EXPRâ€™.  ARGLIST
!      really has type â€˜VEC(tree,gc)*â€™ COMPLAIN is a boolean indicating
       whether invalid operations should emit errors.  This is set to
!      â€˜falseâ€™ when the C++ templating context expects that errors should
       not be emitted (i.e.  SFINAE).
  
   -- Target Hook: bool TARGET_CHECK_BUILTIN_CALL (location_t LOC,
*************** Here are several miscellaneous parameter
*** 45155,45174 ****
       signature.  Return true if the call is valid, otherwise report an
       error and return false.
  
!      This hook is called after 'TARGET_RESOLVE_OVERLOADED_BUILTIN'.  The
       call was originally to built-in function ORIG_FNDECL, but after the
!      optional 'TARGET_RESOLVE_OVERLOADED_BUILTIN' step is now to
       built-in function FNDECL.  LOC is the location of the call and ARGS
       is an array of function arguments, of which there are NARGS.
       ARG_LOC specifies the location of each argument.  COMPLAIN is a
       boolean indicating whether invalid arguments should emitm errors.
!      This is set to 'false' when the C++ templating context expects that
       errors should not be emitted (i.e.  SFINAE).
  
   -- Target Hook: tree TARGET_FOLD_BUILTIN (tree FNDECL, int N_ARGS, tree
            *ARGP, bool IGNORE)
       Fold a call to a machine specific built-in function that was set up
!      by 'TARGET_INIT_BUILTINS'.  FNDECL is the declaration of the
       built-in function.  N_ARGS is the number of arguments passed to the
       function; the arguments themselves are pointed to by ARGP.  The
       result is another tree, valid for both GIMPLE and GENERIC,
--- 45159,45178 ----
       signature.  Return true if the call is valid, otherwise report an
       error and return false.
  
!      This hook is called after â€˜TARGET_RESOLVE_OVERLOADED_BUILTINâ€™.  The
       call was originally to built-in function ORIG_FNDECL, but after the
!      optional â€˜TARGET_RESOLVE_OVERLOADED_BUILTINâ€™ step is now to
       built-in function FNDECL.  LOC is the location of the call and ARGS
       is an array of function arguments, of which there are NARGS.
       ARG_LOC specifies the location of each argument.  COMPLAIN is a
       boolean indicating whether invalid arguments should emitm errors.
!      This is set to â€˜falseâ€™ when the C++ templating context expects that
       errors should not be emitted (i.e.  SFINAE).
  
   -- Target Hook: tree TARGET_FOLD_BUILTIN (tree FNDECL, int N_ARGS, tree
            *ARGP, bool IGNORE)
       Fold a call to a machine specific built-in function that was set up
!      by â€˜TARGET_INIT_BUILTINSâ€™.  FNDECL is the declaration of the
       built-in function.  N_ARGS is the number of arguments passed to the
       function; the arguments themselves are pointed to by ARGP.  The
       result is another tree, valid for both GIMPLE and GENERIC,
*************** Here are several miscellaneous parameter
*** 45178,45184 ****
   -- Target Hook: bool TARGET_GIMPLE_FOLD_BUILTIN (gimple_stmt_iterator
            *GSI)
       Fold a call to a machine specific built-in function that was set up
!      by 'TARGET_INIT_BUILTINS'.  GSI points to the gimple statement
       holding the function call.  Returns true if any change was made to
       the GIMPLE stream.
  
--- 45182,45188 ----
   -- Target Hook: bool TARGET_GIMPLE_FOLD_BUILTIN (gimple_stmt_iterator
            *GSI)
       Fold a call to a machine specific built-in function that was set up
!      by â€˜TARGET_INIT_BUILTINSâ€™.  GSI points to the gimple statement
       holding the function call.  Returns true if any change was made to
       the GIMPLE stream.
  
*************** Here are several miscellaneous parameter
*** 45242,45248 ****
            &ITERATIONS, const widest_int &ITERATIONS_MAX, unsigned int
            LOOP_DEPTH, bool ENTERED_AT_TOP)
       Return true if it is possible to use low-overhead loops
!      ('doloop_end' and 'doloop_begin') for a particular loop.
       ITERATIONS gives the exact number of iterations, or 0 if not known.
       ITERATIONS_MAX gives the maximum number of iterations, or 0 if not
       known.  LOOP_DEPTH is the nesting depth of the loop, with 1 for
--- 45246,45252 ----
            &ITERATIONS, const widest_int &ITERATIONS_MAX, unsigned int
            LOOP_DEPTH, bool ENTERED_AT_TOP)
       Return true if it is possible to use low-overhead loops
!      (â€˜doloop_endâ€™ and â€˜doloop_beginâ€™) for a particular loop.
       ITERATIONS gives the exact number of iterations, or 0 if not known.
       ITERATIONS_MAX gives the maximum number of iterations, or 0 if not
       known.  LOOP_DEPTH is the nesting depth of the loop, with 1 for
*************** Here are several miscellaneous parameter
*** 45250,45258 ****
       on.  ENTERED_AT_TOP is true if the loop is only entered from the
       top.
  
!      This hook is only used if 'doloop_end' is available.  The default
       implementation returns true.  You can use
!      'can_use_doloop_if_innermost' if the loop must be the innermost,
       and if there are no other restrictions.
  
   -- Target Hook: const char * TARGET_INVALID_WITHIN_DOLOOP (const
--- 45254,45262 ----
       on.  ENTERED_AT_TOP is true if the loop is only entered from the
       top.
  
!      This hook is only used if â€˜doloop_endâ€™ is available.  The default
       implementation returns true.  You can use
!      â€˜can_use_doloop_if_innermostâ€™ if the loop must be the innermost,
       and if there are no other restrictions.
  
   -- Target Hook: const char * TARGET_INVALID_WITHIN_DOLOOP (const
*************** Here are several miscellaneous parameter
*** 45271,45286 ****
  
   -- Target Hook: machine_mode TARGET_PREFERRED_DOLOOP_MODE (machine_mode
            MODE)
!      This hook takes a MODE for a doloop IV, where 'mode' is the
       original mode for the operation.  If the target prefers an
!      alternate 'mode' for the operation, then this hook should return
!      that mode; otherwise the original 'mode' should be returned.  For
!      example, on a 64-bit target, 'DImode' might be preferred over
!      'SImode'.  Both the original and the returned modes should be
!      'MODE_INT'.
  
   -- Target Hook: bool TARGET_LEGITIMATE_COMBINED_INSN (rtx_insn *INSN)
!      Take an instruction in INSN and return 'false' if the instruction
       is not appropriate as a combination of two or more instructions.
       The default is to accept all instructions.
  
--- 45275,45290 ----
  
   -- Target Hook: machine_mode TARGET_PREFERRED_DOLOOP_MODE (machine_mode
            MODE)
!      This hook takes a MODE for a doloop IV, where â€˜modeâ€™ is the
       original mode for the operation.  If the target prefers an
!      alternate â€˜modeâ€™ for the operation, then this hook should return
!      that mode; otherwise the original â€˜modeâ€™ should be returned.  For
!      example, on a 64-bit target, â€˜DImodeâ€™ might be preferred over
!      â€˜SImodeâ€™.  Both the original and the returned modes should be
!      â€˜MODE_INTâ€™.
  
   -- Target Hook: bool TARGET_LEGITIMATE_COMBINED_INSN (rtx_insn *INSN)
!      Take an instruction in INSN and return â€˜falseâ€™ if the instruction
       is not appropriate as a combination of two or more instructions.
       The default is to accept all instructions.
  
*************** Here are several miscellaneous parameter
*** 45292,45298 ****
       made to follow through a hot/cold partitioning.
  
   -- Target Hook: bool TARGET_COMMUTATIVE_P (const_rtx X, int OUTER_CODE)
!      This target hook returns 'true' if X is considered to be
       commutative.  Usually, this is just COMMUTATIVE_P (X), but the HP
       PA doesn't consider PLUS to be commutative inside a MEM.
       OUTER_CODE is the rtx code of the enclosing rtl, if known,
--- 45296,45302 ----
       made to follow through a hot/cold partitioning.
  
   -- Target Hook: bool TARGET_COMMUTATIVE_P (const_rtx X, int OUTER_CODE)
!      This target hook returns â€˜trueâ€™ if X is considered to be
       commutative.  Usually, this is just COMMUTATIVE_P (X), but the HP
       PA doesn't consider PLUS to be commutative inside a MEM.
       OUTER_CODE is the rtx code of the enclosing rtl, if known,
*************** Here are several miscellaneous parameter
*** 45304,45332 ****
       pseudo register, it is often not necessary to actually allocate
       another register to this pseudo register, because the original hard
       register or a stack slot it has been saved into can be used.
!      'TARGET_ALLOCATE_INITIAL_VALUE' is called at the start of register
       allocation once for each hard register that had its initial value
!      copied by using 'get_func_hard_reg_initial_val' or
!      'get_hard_reg_initial_val'.  Possible values are 'NULL_RTX', if you
!      don't want to do any special allocation, a 'REG' rtx--that would
       typically be the hard register itself, if it is known not to be
!      clobbered--or a 'MEM'.  If you are returning a 'MEM', this is only
       a hint for the allocator; it might decide to use another register
!      anyways.  You may use 'current_function_is_leaf' or 'REG_N_SETS' in
       the hook to determine if the hard register in question will not be
!      clobbered.  The default value of this hook is 'NULL', which
       disables any special allocation.
  
   -- Target Hook: int TARGET_UNSPEC_MAY_TRAP_P (const_rtx X, unsigned
            FLAGS)
!      This target hook returns nonzero if X, an 'unspec' might cause a
       trap.  Targets can use this hook to enhance precision of analysis
!      for 'unspec' operations.  You may call 'may_trap_p_1' to analyze
       inner elements of X in which case FLAGS should be passed along.
  
   -- Target Hook: void TARGET_SET_CURRENT_FUNCTION (tree DECL)
       The compiler invokes this hook whenever it changes its current
!      function context ('cfun').  You can define this function if the
       back end needs to perform any initialization or reset actions on a
       per-function basis.  For example, it may be used to implement
       function attributes that affect register usage or code generation
--- 45308,45336 ----
       pseudo register, it is often not necessary to actually allocate
       another register to this pseudo register, because the original hard
       register or a stack slot it has been saved into can be used.
!      â€˜TARGET_ALLOCATE_INITIAL_VALUEâ€™ is called at the start of register
       allocation once for each hard register that had its initial value
!      copied by using â€˜get_func_hard_reg_initial_valâ€™ or
!      â€˜get_hard_reg_initial_valâ€™.  Possible values are â€˜NULL_RTXâ€™, if you
!      don't want to do any special allocation, a â€˜REGâ€™ rtx--that would
       typically be the hard register itself, if it is known not to be
!      clobbered--or a â€˜MEMâ€™.  If you are returning a â€˜MEMâ€™, this is only
       a hint for the allocator; it might decide to use another register
!      anyways.  You may use â€˜current_function_is_leafâ€™ or â€˜REG_N_SETSâ€™ in
       the hook to determine if the hard register in question will not be
!      clobbered.  The default value of this hook is â€˜NULLâ€™, which
       disables any special allocation.
  
   -- Target Hook: int TARGET_UNSPEC_MAY_TRAP_P (const_rtx X, unsigned
            FLAGS)
!      This target hook returns nonzero if X, an â€˜unspecâ€™ might cause a
       trap.  Targets can use this hook to enhance precision of analysis
!      for â€˜unspecâ€™ operations.  You may call â€˜may_trap_p_1â€™ to analyze
       inner elements of X in which case FLAGS should be passed along.
  
   -- Target Hook: void TARGET_SET_CURRENT_FUNCTION (tree DECL)
       The compiler invokes this hook whenever it changes its current
!      function context (â€˜cfunâ€™).  You can define this function if the
       back end needs to perform any initialization or reset actions on a
       per-function basis.  For example, it may be used to implement
       function attributes that affect register usage or code generation
*************** Here are several miscellaneous parameter
*** 45335,45351 ****
       left a function context and is returning to processing at the top
       level.  The default hook function does nothing.
  
!      GCC sets 'cfun' to a dummy function context during initialization
       of some parts of the back end.  The hook function is not invoked in
       this situation; you need not worry about the hook being invoked
       recursively, or when the back end is in a partially-initialized
!      state.  'cfun' might be 'NULL' to indicate processing at top level,
       outside of any function scope.
  
   -- Macro: TARGET_OBJECT_SUFFIX
       Define this macro to be a C string representing the suffix for
       object files on your target machine.  If you do not define this
!      macro, GCC will use '.o' as the suffix for object files.
  
   -- Macro: TARGET_EXECUTABLE_SUFFIX
       Define this macro to be a C string representing the suffix to be
--- 45339,45355 ----
       left a function context and is returning to processing at the top
       level.  The default hook function does nothing.
  
!      GCC sets â€˜cfunâ€™ to a dummy function context during initialization
       of some parts of the back end.  The hook function is not invoked in
       this situation; you need not worry about the hook being invoked
       recursively, or when the back end is in a partially-initialized
!      state.  â€˜cfunâ€™ might be â€˜NULLâ€™ to indicate processing at top level,
       outside of any function scope.
  
   -- Macro: TARGET_OBJECT_SUFFIX
       Define this macro to be a C string representing the suffix for
       object files on your target machine.  If you do not define this
!      macro, GCC will use â€˜.oâ€™ as the suffix for object files.
  
   -- Macro: TARGET_EXECUTABLE_SUFFIX
       Define this macro to be a C string representing the suffix to be
*************** Here are several miscellaneous parameter
*** 45354,45367 ****
       suffix for executable files.
  
   -- Macro: COLLECT_EXPORT_LIST
!      If defined, 'collect2' will scan the individual object files
       specified on its command line and create an export list for the
       linker.  Define this macro for systems like AIX, where the linker
!      discards object files that are not referenced from 'main' and uses
       export lists.
  
   -- Target Hook: bool TARGET_CANNOT_MODIFY_JUMPS_P (void)
!      This target hook returns 'true' past the point in which new jump
       instructions could be created.  On machines that require a register
       for every jump such as the SHmedia ISA of SH5, this point would
       typically be reload, so this target hook should be defined to a
--- 45358,45371 ----
       suffix for executable files.
  
   -- Macro: COLLECT_EXPORT_LIST
!      If defined, â€˜collect2â€™ will scan the individual object files
       specified on its command line and create an export list for the
       linker.  Define this macro for systems like AIX, where the linker
!      discards object files that are not referenced from â€˜mainâ€™ and uses
       export lists.
  
   -- Target Hook: bool TARGET_CANNOT_MODIFY_JUMPS_P (void)
!      This target hook returns â€˜trueâ€™ past the point in which new jump
       instructions could be created.  On machines that require a register
       for every jump such as the SHmedia ISA of SH5, this point would
       typically be reload, so this target hook should be defined to a
*************** Here are several miscellaneous parameter
*** 45383,45393 ****
            rtx_insn **GEN_SEQ, rtx_code CODE, tree OP0, tree OP1)
       This function prepares to emit a comparison insn for the first
       compare in a sequence of conditional comparisions.  It returns an
!      appropriate comparison with 'CC' for passing to 'gen_ccmp_next' or
!      'cbranch_optab'.  The insns to prepare the compare are saved in
       PREP_SEQ and the compare insns are saved in GEN_SEQ.  They will be
       emitted when all the compares in the conditional comparision are
!      generated without error.  CODE is the 'rtx_code' of the compare for
       OP0 and OP1.
  
   -- Target Hook: rtx TARGET_GEN_CCMP_NEXT (rtx_insn **PREP_SEQ, rtx_insn
--- 45387,45397 ----
            rtx_insn **GEN_SEQ, rtx_code CODE, tree OP0, tree OP1)
       This function prepares to emit a comparison insn for the first
       compare in a sequence of conditional comparisions.  It returns an
!      appropriate comparison with â€˜CCâ€™ for passing to â€˜gen_ccmp_nextâ€™ or
!      â€˜cbranch_optabâ€™.  The insns to prepare the compare are saved in
       PREP_SEQ and the compare insns are saved in GEN_SEQ.  They will be
       emitted when all the compares in the conditional comparision are
!      generated without error.  CODE is the â€˜rtx_codeâ€™ of the compare for
       OP0 and OP1.
  
   -- Target Hook: rtx TARGET_GEN_CCMP_NEXT (rtx_insn **PREP_SEQ, rtx_insn
*************** Here are several miscellaneous parameter
*** 45395,45410 ****
            rtx_code BIT_CODE)
       This function prepares to emit a conditional comparison within a
       sequence of conditional comparisons.  It returns an appropriate
!      comparison with 'CC' for passing to 'gen_ccmp_next' or
!      'cbranch_optab'.  The insns to prepare the compare are saved in
       PREP_SEQ and the compare insns are saved in GEN_SEQ.  They will be
       emitted when all the compares in the conditional comparision are
       generated without error.  The PREV expression is the result of a
!      prior call to 'gen_ccmp_first' or 'gen_ccmp_next'.  It may return
!      'NULL' if the combination of PREV and this comparison is not
       supported, otherwise the result must be appropriate for passing to
!      'gen_ccmp_next' or 'cbranch_optab'.  CODE is the 'rtx_code' of the
!      compare for OP0 and OP1.  BIT_CODE is 'AND' or 'IOR', which is the
       op on the compares.
  
   -- Target Hook: bool TARGET_HAVE_CCMP (void)
--- 45399,45414 ----
            rtx_code BIT_CODE)
       This function prepares to emit a conditional comparison within a
       sequence of conditional comparisons.  It returns an appropriate
!      comparison with â€˜CCâ€™ for passing to â€˜gen_ccmp_nextâ€™ or
!      â€˜cbranch_optabâ€™.  The insns to prepare the compare are saved in
       PREP_SEQ and the compare insns are saved in GEN_SEQ.  They will be
       emitted when all the compares in the conditional comparision are
       generated without error.  The PREV expression is the result of a
!      prior call to â€˜gen_ccmp_firstâ€™ or â€˜gen_ccmp_nextâ€™.  It may return
!      â€˜NULLâ€™ if the combination of PREV and this comparison is not
       supported, otherwise the result must be appropriate for passing to
!      â€˜gen_ccmp_nextâ€™ or â€˜cbranch_optabâ€™.  CODE is the â€˜rtx_codeâ€™ of the
!      compare for OP0 and OP1.  BIT_CODE is â€˜ANDâ€™ or â€˜IORâ€™, which is the
       op on the compares.
  
   -- Target Hook: bool TARGET_HAVE_CCMP (void)
*************** Here are several miscellaneous parameter
*** 45412,45418 ****
       compare.  This target hook is required only when the ccmp support
       is conditionally enabled, such as in response to command-line
       flags.  The default implementation returns true iff
!      'TARGET_GEN_CCMP_FIRST' is defined.
  
   -- Target Hook: unsigned TARGET_LOOP_UNROLL_ADJUST (unsigned NUNROLL,
            class loop *LOOP)
--- 45416,45422 ----
       compare.  This target hook is required only when the ccmp support
       is conditionally enabled, such as in response to command-line
       flags.  The default implementation returns true iff
!      â€˜TARGET_GEN_CCMP_FIRSTâ€™ is defined.
  
   -- Target Hook: unsigned TARGET_LOOP_UNROLL_ADJUST (unsigned NUNROLL,
            class loop *LOOP)
*************** Here are several miscellaneous parameter
*** 45430,45436 ****
       exponentiation by an integer constant inline.  When this value is
       defined, exponentiation requiring more than this number of
       multiplications is implemented by calling the system library's
!      'pow', 'powf' or 'powl' routines.  The default value places no
       upper bound on the multiplication count.
  
   -- Macro: void TARGET_EXTRA_INCLUDES (const char *SYSROOT, const char
--- 45434,45440 ----
       exponentiation by an integer constant inline.  When this value is
       defined, exponentiation requiring more than this number of
       multiplications is implemented by calling the system library's
!      â€˜powâ€™, â€˜powfâ€™ or â€˜powlâ€™ routines.  The default value places no
       upper bound on the multiplication count.
  
   -- Macro: void TARGET_EXTRA_INCLUDES (const char *SYSROOT, const char
*************** Here are several miscellaneous parameter
*** 45452,45485 ****
       This target hook should register special include paths for the
       target.  The parameter PATH is the include to register.  On Darwin
       systems, this is used for Framework includes, which have semantics
!      that are different from '-I'.
  
   -- Macro: bool TARGET_USE_LOCAL_THUNK_ALIAS_P (tree FNDECL)
!      This target macro returns 'true' if it is safe to use a local alias
!      for a virtual function FNDECL when constructing thunks, 'false'
!      otherwise.  By default, the macro returns 'true' for all functions,
!      if a target supports aliases (i.e. defines 'ASM_OUTPUT_DEF'),
!      'false' otherwise,
  
   -- Macro: TARGET_FORMAT_TYPES
       If defined, this macro is the name of a global variable containing
!      target-specific format checking information for the '-Wformat'
       option.  The default is to have no target-specific format checks.
  
   -- Macro: TARGET_N_FORMAT_TYPES
       If defined, this macro is the number of entries in
!      'TARGET_FORMAT_TYPES'.
  
   -- Macro: TARGET_OVERRIDES_FORMAT_ATTRIBUTES
       If defined, this macro is the name of a global variable containing
!      target-specific format overrides for the '-Wformat' option.  The
       default is to have no target-specific format overrides.  If
!      defined, 'TARGET_FORMAT_TYPES' and
!      'TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT' must be defined, too.
  
   -- Macro: TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT
       If defined, this macro specifies the number of entries in
!      'TARGET_OVERRIDES_FORMAT_ATTRIBUTES'.
  
   -- Macro: TARGET_OVERRIDES_FORMAT_INIT
       If defined, this macro specifies the optional initialization
--- 45456,45489 ----
       This target hook should register special include paths for the
       target.  The parameter PATH is the include to register.  On Darwin
       systems, this is used for Framework includes, which have semantics
!      that are different from â€˜-Iâ€™.
  
   -- Macro: bool TARGET_USE_LOCAL_THUNK_ALIAS_P (tree FNDECL)
!      This target macro returns â€˜trueâ€™ if it is safe to use a local alias
!      for a virtual function FNDECL when constructing thunks, â€˜falseâ€™
!      otherwise.  By default, the macro returns â€˜trueâ€™ for all functions,
!      if a target supports aliases (i.e. defines â€˜ASM_OUTPUT_DEFâ€™),
!      â€˜falseâ€™ otherwise,
  
   -- Macro: TARGET_FORMAT_TYPES
       If defined, this macro is the name of a global variable containing
!      target-specific format checking information for the â€˜-Wformatâ€™
       option.  The default is to have no target-specific format checks.
  
   -- Macro: TARGET_N_FORMAT_TYPES
       If defined, this macro is the number of entries in
!      â€˜TARGET_FORMAT_TYPESâ€™.
  
   -- Macro: TARGET_OVERRIDES_FORMAT_ATTRIBUTES
       If defined, this macro is the name of a global variable containing
!      target-specific format overrides for the â€˜-Wformatâ€™ option.  The
       default is to have no target-specific format overrides.  If
!      defined, â€˜TARGET_FORMAT_TYPESâ€™ and
!      â€˜TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNTâ€™ must be defined, too.
  
   -- Macro: TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT
       If defined, this macro specifies the number of entries in
!      â€˜TARGET_OVERRIDES_FORMAT_ATTRIBUTESâ€™.
  
   -- Macro: TARGET_OVERRIDES_FORMAT_INIT
       If defined, this macro specifies the optional initialization
*************** Here are several miscellaneous parameter
*** 45495,45527 ****
   -- Target Hook: const char * TARGET_INVALID_CONVERSION (const_tree
            FROMTYPE, const_tree TOTYPE)
       If defined, this macro returns the diagnostic message when it is
!      invalid to convert from FROMTYPE to TOTYPE, or 'NULL' if validity
       should be determined by the front end.
  
   -- Target Hook: const char * TARGET_INVALID_UNARY_OP (int OP,
            const_tree TYPE)
       If defined, this macro returns the diagnostic message when it is
       invalid to apply operation OP (where unary plus is denoted by
!      'CONVERT_EXPR') to an operand of type TYPE, or 'NULL' if validity
       should be determined by the front end.
  
   -- Target Hook: const char * TARGET_INVALID_BINARY_OP (int OP,
            const_tree TYPE1, const_tree TYPE2)
       If defined, this macro returns the diagnostic message when it is
       invalid to apply operation OP to operands of types TYPE1 and TYPE2,
!      or 'NULL' if validity should be determined by the front end.
  
   -- Target Hook: tree TARGET_PROMOTED_TYPE (const_tree TYPE)
       If defined, this target hook returns the type to which values of
       TYPE should be promoted when they appear in expressions, analogous
!      to the integer promotions, or 'NULL_TREE' to use the front end's
       normal promotion rules.  This hook is useful when there are
       target-specific types with special promotion rules.  This is
       currently used only by the C and C++ front ends.
  
   -- Target Hook: tree TARGET_CONVERT_TO_TYPE (tree TYPE, tree EXPR)
       If defined, this hook returns the result of converting EXPR to
!      TYPE.  It should return the converted expression, or 'NULL_TREE' to
       apply the front end's normal conversion rules.  This hook is useful
       when there are target-specific types with special conversion rules.
       This is currently used only by the C and C++ front ends.
--- 45499,45531 ----
   -- Target Hook: const char * TARGET_INVALID_CONVERSION (const_tree
            FROMTYPE, const_tree TOTYPE)
       If defined, this macro returns the diagnostic message when it is
!      invalid to convert from FROMTYPE to TOTYPE, or â€˜NULLâ€™ if validity
       should be determined by the front end.
  
   -- Target Hook: const char * TARGET_INVALID_UNARY_OP (int OP,
            const_tree TYPE)
       If defined, this macro returns the diagnostic message when it is
       invalid to apply operation OP (where unary plus is denoted by
!      â€˜CONVERT_EXPRâ€™) to an operand of type TYPE, or â€˜NULLâ€™ if validity
       should be determined by the front end.
  
   -- Target Hook: const char * TARGET_INVALID_BINARY_OP (int OP,
            const_tree TYPE1, const_tree TYPE2)
       If defined, this macro returns the diagnostic message when it is
       invalid to apply operation OP to operands of types TYPE1 and TYPE2,
!      or â€˜NULLâ€™ if validity should be determined by the front end.
  
   -- Target Hook: tree TARGET_PROMOTED_TYPE (const_tree TYPE)
       If defined, this target hook returns the type to which values of
       TYPE should be promoted when they appear in expressions, analogous
!      to the integer promotions, or â€˜NULL_TREEâ€™ to use the front end's
       normal promotion rules.  This hook is useful when there are
       target-specific types with special promotion rules.  This is
       currently used only by the C and C++ front ends.
  
   -- Target Hook: tree TARGET_CONVERT_TO_TYPE (tree TYPE, tree EXPR)
       If defined, this hook returns the result of converting EXPR to
!      TYPE.  It should return the converted expression, or â€˜NULL_TREEâ€™ to
       apply the front end's normal conversion rules.  This hook is useful
       when there are target-specific types with special conversion rules.
       This is currently used only by the C and C++ front ends.
*************** Here are several miscellaneous parameter
*** 45534,45541 ****
       reports an error against LOC for invalid uses of TYPE.
  
       Calls to this hook should be made through the global function
!      'verify_type_context', which makes the SILENT_P parameter default
!      to false and also handles 'error_mark_node'.
  
       The default implementation always returns true.
  
--- 45538,45545 ----
       reports an error against LOC for invalid uses of TYPE.
  
       Calls to this hook should be made through the global function
!      â€˜verify_type_contextâ€™, which makes the SILENT_P parameter default
!      to false and also handles â€˜error_mark_nodeâ€™.
  
       The default implementation always returns true.
  
*************** Here are several miscellaneous parameter
*** 45546,45554 ****
  
   -- Macro: LIBGCC2_UNWIND_ATTRIBUTE
       Define this macro if any target-specific attributes need to be
!      attached to the functions in 'libgcc' that provide low-level
       support for call stack unwinding.  It is used in declarations in
!      'unwind-generic.h' and the associated definitions of those
       functions.
  
   -- Target Hook: void TARGET_UPDATE_STACK_BOUNDARY (void)
--- 45550,45558 ----
  
   -- Macro: LIBGCC2_UNWIND_ATTRIBUTE
       Define this macro if any target-specific attributes need to be
!      attached to the functions in â€˜libgccâ€™ that provide low-level
       support for call stack unwinding.  It is used in declarations in
!      â€˜unwind-generic.hâ€™ and the associated definitions of those
       functions.
  
   -- Target Hook: void TARGET_UPDATE_STACK_BOUNDARY (void)
*************** Here are several miscellaneous parameter
*** 45559,45565 ****
       This hook should return an rtx for Dynamic Realign Argument Pointer
       (DRAP) if a different argument pointer register is needed to access
       the function's argument list due to stack realignment.  Return
!      'NULL' if no DRAP is needed.
  
   -- Target Hook: HARD_REG_SET TARGET_ZERO_CALL_USED_REGS (HARD_REG_SET
            SELECTED_REGS)
--- 45563,45569 ----
       This hook should return an rtx for Dynamic Realign Argument Pointer
       (DRAP) if a different argument pointer register is needed to access
       the function's argument list due to stack realignment.  Return
!      â€˜NULLâ€™ if no DRAP is needed.
  
   -- Target Hook: HARD_REG_SET TARGET_ZERO_CALL_USED_REGS (HARD_REG_SET
            SELECTED_REGS)
*************** Here are several miscellaneous parameter
*** 45586,45592 ****
       arguments should be allocated to stack slots.  Normally, GCC
       allocates stacks slots for arguments when not optimizing in order
       to make debugging easier.  However, when a function is declared
!      with '__attribute__((naked))', there is no stack frame, and the
       compiler cannot safely move arguments from the registers in which
       they are passed to the stack.  Therefore, this hook should return
       true in general, but false for naked functions.  The default
--- 45590,45596 ----
       arguments should be allocated to stack slots.  Normally, GCC
       allocates stacks slots for arguments when not optimizing in order
       to make debugging easier.  However, when a function is declared
!      with â€˜__attribute__((naked))â€™, there is no stack frame, and the
       compiler cannot safely move arguments from the registers in which
       they are passed to the stack.  Therefore, this hook should return
       true in general, but false for naked functions.  The default
*************** Here are several miscellaneous parameter
*** 45602,45612 ****
       anchor to the available expressions.  These are then queried when
       encountering new constants.  The anchors are computed by rounding
       the constant up and down to a multiple of the value of
!      'TARGET_CONST_ANCHOR'.  'TARGET_CONST_ANCHOR' should be the maximum
       positive value accepted by immediate-add plus one.  We currently
!      assume that the value of 'TARGET_CONST_ANCHOR' is a power of 2.
       For example, on MIPS, where add-immediate takes a 16-bit signed
!      value, 'TARGET_CONST_ANCHOR' is set to '0x8000'.  The default value
       is zero, which disables this optimization.
  
   -- Target Hook: unsigned HOST_WIDE_INT TARGET_ASAN_SHADOW_OFFSET (void)
--- 45606,45616 ----
       anchor to the available expressions.  These are then queried when
       encountering new constants.  The anchors are computed by rounding
       the constant up and down to a multiple of the value of
!      â€˜TARGET_CONST_ANCHORâ€™.  â€˜TARGET_CONST_ANCHORâ€™ should be the maximum
       positive value accepted by immediate-add plus one.  We currently
!      assume that the value of â€˜TARGET_CONST_ANCHORâ€™ is a power of 2.
       For example, on MIPS, where add-immediate takes a 16-bit signed
!      value, â€˜TARGET_CONST_ANCHORâ€™ is set to â€˜0x8000â€™.  The default value
       is zero, which disables this optimization.
  
   -- Target Hook: unsigned HOST_WIDE_INT TARGET_ASAN_SHADOW_OFFSET (void)
*************** Here are several miscellaneous parameter
*** 45626,45632 ****
  
   -- Target Hook: unsigned char TARGET_ATOMIC_TEST_AND_SET_TRUEVAL
       This value should be set if the result written by
!      'atomic_test_and_set' is not exactly 1, i.e. the 'bool' 'true'.
  
   -- Target Hook: bool TARGET_HAS_IFUNC_P (void)
       It returns true if the target supports GNU indirect functions.  The
--- 45630,45636 ----
  
   -- Target Hook: unsigned char TARGET_ATOMIC_TEST_AND_SET_TRUEVAL
       This value should be set if the result written by
!      â€˜atomic_test_and_setâ€™ is not exactly 1, i.e. the â€˜boolâ€™ â€˜trueâ€™.
  
   -- Target Hook: bool TARGET_HAS_IFUNC_P (void)
       It returns true if the target supports GNU indirect functions.  The
*************** Here are several miscellaneous parameter
*** 45649,45665 ****
       floating-point exceptions to raise exceptions corresponding to the
       arithmetic operation whose result was successfully stored in a
       compare-and-exchange sequence.  This requires code equivalent to
!      calls to 'feholdexcept', 'feclearexcept' and 'feupdateenv' to be
       generated at appropriate points in the compare-and-exchange
!      sequence.  This hook should set '*HOLD' to an expression equivalent
!      to the call to 'feholdexcept', '*CLEAR' to an expression equivalent
!      to the call to 'feclearexcept' and '*UPDATE' to an expression
!      equivalent to the call to 'feupdateenv'.  The three expressions are
!      'NULL_TREE' on entry to the hook and may be left as 'NULL_TREE' if
       no code is required in a particular place.  The default
!      implementation leaves all three expressions as 'NULL_TREE'.  The
!      '__atomic_feraiseexcept' function from 'libatomic' may be of use as
!      part of the code generated in '*UPDATE'.
  
   -- Target Hook: void TARGET_RECORD_OFFLOAD_SYMBOL (tree)
       Used when offloaded functions are seen in the compilation unit and
--- 45653,45669 ----
       floating-point exceptions to raise exceptions corresponding to the
       arithmetic operation whose result was successfully stored in a
       compare-and-exchange sequence.  This requires code equivalent to
!      calls to â€˜feholdexceptâ€™, â€˜feclearexceptâ€™ and â€˜feupdateenvâ€™ to be
       generated at appropriate points in the compare-and-exchange
!      sequence.  This hook should set â€˜*HOLDâ€™ to an expression equivalent
!      to the call to â€˜feholdexceptâ€™, â€˜*CLEARâ€™ to an expression equivalent
!      to the call to â€˜feclearexceptâ€™ and â€˜*UPDATEâ€™ to an expression
!      equivalent to the call to â€˜feupdateenvâ€™.  The three expressions are
!      â€˜NULL_TREEâ€™ on entry to the hook and may be left as â€˜NULL_TREEâ€™ if
       no code is required in a particular place.  The default
!      implementation leaves all three expressions as â€˜NULL_TREEâ€™.  The
!      â€˜__atomic_feraiseexceptâ€™ function from â€˜libatomicâ€™ may be of use as
!      part of the code generated in â€˜*UPDATEâ€™.
  
   -- Target Hook: void TARGET_RECORD_OFFLOAD_SYMBOL (tree)
       Used when offloaded functions are seen in the compilation unit and
*************** Here are several miscellaneous parameter
*** 45669,45743 ****
   -- Target Hook: char * TARGET_OFFLOAD_OPTIONS (void)
       Used when writing out the list of options into an LTO file.  It
       should translate any relevant target-specific options (such as the
!      ABI in use) into one of the '-foffload' options that exist as a
       common interface to express such options.  It should return a
       string containing these options, separated by spaces, which the
       caller will free.
  
   -- Macro: TARGET_SUPPORTS_WIDE_INT
  
!      On older ports, large integers are stored in 'CONST_DOUBLE' rtl
!      objects.  Newer ports define 'TARGET_SUPPORTS_WIDE_INT' to be
       nonzero to indicate that large integers are stored in
!      'CONST_WIDE_INT' rtl objects.  The 'CONST_WIDE_INT' allows very
!      large integer constants to be represented.  'CONST_DOUBLE' is
!      limited to twice the size of the host's 'HOST_WIDE_INT'
       representation.
  
       Converting a port mostly requires looking for the places where
!      'CONST_DOUBLE's are used with 'VOIDmode' and replacing that code
!      with code that accesses 'CONST_WIDE_INT's.  '"grep -i
!      const_double"' at the port level gets you to 95% of the changes
       that need to be made.  There are a few places that require a deeper
       look.
  
!         * There is no equivalent to 'hval' and 'lval' for
!           'CONST_WIDE_INT's.  This would be difficult to express in the
            md language since there are a variable number of elements.
  
!           Most ports only check that 'hval' is either 0 or -1 to see if
            the value is small.  As mentioned above, this will no longer
!           be necessary since small constants are always 'CONST_INT'.  Of
            course there are still a few exceptions, the alpha's
            constraint used by the zap instruction certainly requires
            careful examination by C code.  However, all the current code
            does is pass the hval and lval to C code, so evolving the c
!           code to look at the 'CONST_WIDE_INT' is not really a large
            change.
  
!         * Because there is no standard template that ports use to
            materialize constants, there is likely to be some futzing that
            is unique to each port in this code.
  
!         * The rtx costs may have to be adjusted to properly account for
!           larger constants that are represented as 'CONST_WIDE_INT'.
  
       All and all it does not take long to convert ports that the
       maintainer is familiar with.
  
   -- Target Hook: bool TARGET_HAVE_SPECULATION_SAFE_VALUE (bool ACTIVE)
       This hook is used to determine the level of target support for
!      '__builtin_speculation_safe_value'.  If called with an argument of
       false, it returns true if the target has been modified to support
       this builtin.  If called with an argument of true, it returns true
       if the target requires active mitigation execution might be
       speculative.
  
       The default implementation returns false if the target does not
!      define a pattern named 'speculation_barrier'.  Else it returns true
       for the first case and whether the pattern is enabled for the
       current compilation for the second case.
  
       For targets that have no processors that can execute instructions
       speculatively an alternative implemenation of this hook is
       available: simply redefine this hook to
!      'speculation_safe_value_not_needed' along with your other target
       hooks.
  
   -- Target Hook: rtx TARGET_SPECULATION_SAFE_VALUE (machine_mode MODE,
            rtx RESULT, rtx VAL, rtx FAILVAL)
       This target hook can be used to generate a target-specific code
!      sequence that implements the '__builtin_speculation_safe_value'
       built-in function.  The function must always return VAL in RESULT
       in mode MODE when the cpu is not executing speculatively, but must
       never return that when speculating until it is known that the
--- 45673,45747 ----
   -- Target Hook: char * TARGET_OFFLOAD_OPTIONS (void)
       Used when writing out the list of options into an LTO file.  It
       should translate any relevant target-specific options (such as the
!      ABI in use) into one of the â€˜-foffloadâ€™ options that exist as a
       common interface to express such options.  It should return a
       string containing these options, separated by spaces, which the
       caller will free.
  
   -- Macro: TARGET_SUPPORTS_WIDE_INT
  
!      On older ports, large integers are stored in â€˜CONST_DOUBLEâ€™ rtl
!      objects.  Newer ports define â€˜TARGET_SUPPORTS_WIDE_INTâ€™ to be
       nonzero to indicate that large integers are stored in
!      â€˜CONST_WIDE_INTâ€™ rtl objects.  The â€˜CONST_WIDE_INTâ€™ allows very
!      large integer constants to be represented.  â€˜CONST_DOUBLEâ€™ is
!      limited to twice the size of the host's â€˜HOST_WIDE_INTâ€™
       representation.
  
       Converting a port mostly requires looking for the places where
!      â€˜CONST_DOUBLEâ€™s are used with â€˜VOIDmodeâ€™ and replacing that code
!      with code that accesses â€˜CONST_WIDE_INTâ€™s.  â€˜"grep -i
!      const_double"â€™ at the port level gets you to 95% of the changes
       that need to be made.  There are a few places that require a deeper
       look.
  
!         â€¢ There is no equivalent to â€˜hvalâ€™ and â€˜lvalâ€™ for
!           â€˜CONST_WIDE_INTâ€™s.  This would be difficult to express in the
            md language since there are a variable number of elements.
  
!           Most ports only check that â€˜hvalâ€™ is either 0 or -1 to see if
            the value is small.  As mentioned above, this will no longer
!           be necessary since small constants are always â€˜CONST_INTâ€™.  Of
            course there are still a few exceptions, the alpha's
            constraint used by the zap instruction certainly requires
            careful examination by C code.  However, all the current code
            does is pass the hval and lval to C code, so evolving the c
!           code to look at the â€˜CONST_WIDE_INTâ€™ is not really a large
            change.
  
!         â€¢ Because there is no standard template that ports use to
            materialize constants, there is likely to be some futzing that
            is unique to each port in this code.
  
!         â€¢ The rtx costs may have to be adjusted to properly account for
!           larger constants that are represented as â€˜CONST_WIDE_INTâ€™.
  
       All and all it does not take long to convert ports that the
       maintainer is familiar with.
  
   -- Target Hook: bool TARGET_HAVE_SPECULATION_SAFE_VALUE (bool ACTIVE)
       This hook is used to determine the level of target support for
!      â€˜__builtin_speculation_safe_valueâ€™.  If called with an argument of
       false, it returns true if the target has been modified to support
       this builtin.  If called with an argument of true, it returns true
       if the target requires active mitigation execution might be
       speculative.
  
       The default implementation returns false if the target does not
!      define a pattern named â€˜speculation_barrierâ€™.  Else it returns true
       for the first case and whether the pattern is enabled for the
       current compilation for the second case.
  
       For targets that have no processors that can execute instructions
       speculatively an alternative implemenation of this hook is
       available: simply redefine this hook to
!      â€˜speculation_safe_value_not_neededâ€™ along with your other target
       hooks.
  
   -- Target Hook: rtx TARGET_SPECULATION_SAFE_VALUE (machine_mode MODE,
            rtx RESULT, rtx VAL, rtx FAILVAL)
       This target hook can be used to generate a target-specific code
!      sequence that implements the â€˜__builtin_speculation_safe_valueâ€™
       built-in function.  The function must always return VAL in RESULT
       in mode MODE when the cpu is not executing speculatively, but must
       never return that when speculating until it is known that the
*************** Here are several miscellaneous parameter
*** 45750,45767 ****
       must be unwound at a later time.
  
       The default implementation simply copies VAL to RESULT and emits a
!      'speculation_barrier' instruction if that is defined.
  
   -- Target Hook: void TARGET_RUN_TARGET_SELFTESTS (void)
       If selftests are enabled, run any selftests for this target.
  
   -- Target Hook: bool TARGET_MEMTAG_CAN_TAG_ADDRESSES ()
       True if the backend architecture naturally supports ignoring some
!      region of pointers.  This feature means that '-fsanitize=hwaddress'
       can work.
  
       At preset, this feature does not support address spaces.  It also
!      requires 'Pmode' to be the same as 'ptr_mode'.
  
   -- Target Hook: uint8_t TARGET_MEMTAG_TAG_SIZE ()
       Return the size of a tag (in bits) for this platform.
--- 45754,45771 ----
       must be unwound at a later time.
  
       The default implementation simply copies VAL to RESULT and emits a
!      â€˜speculation_barrierâ€™ instruction if that is defined.
  
   -- Target Hook: void TARGET_RUN_TARGET_SELFTESTS (void)
       If selftests are enabled, run any selftests for this target.
  
   -- Target Hook: bool TARGET_MEMTAG_CAN_TAG_ADDRESSES ()
       True if the backend architecture naturally supports ignoring some
!      region of pointers.  This feature means that â€˜-fsanitize=hwaddressâ€™
       can work.
  
       At preset, this feature does not support address spaces.  It also
!      requires â€˜Pmodeâ€™ to be the same as â€˜ptr_modeâ€™.
  
   -- Target Hook: uint8_t TARGET_MEMTAG_TAG_SIZE ()
       Return the size of a tag (in bits) for this platform.
*************** Here are several miscellaneous parameter
*** 45792,45798 ****
       Return an RTX that represents the result of adding ADDR_OFFSET to
       the address in pointer BASE and TAG_OFFSET to the tag in pointer
       BASE.  The resulting RTX must either be a valid memory address or
!      be able to get put into an operand with 'force_operand'.
  
       Unlike other memtag hooks, this must return an expression and not
       emit any RTL.
--- 45796,45802 ----
       Return an RTX that represents the result of adding ADDR_OFFSET to
       the address in pointer BASE and TAG_OFFSET to the tag in pointer
       BASE.  The resulting RTX must either be a valid memory address or
!      be able to get put into an operand with â€˜force_operandâ€™.
  
       Unlike other memtag hooks, this must return an expression and not
       emit any RTL.
*************** Here are several miscellaneous parameter
*** 45818,45824 ****
  
   -- Target Hook: bool TARGET_HAVE_SHADOW_CALL_STACK
       This value is true if the target platform supports
!      '-fsanitize=shadow-call-stack'.  The default value is false.
  
   -- Target Hook: bool TARGET_HAVE_LIBATOMIC
       This value is true if the target platform supports libatomic.  The
--- 45822,45828 ----
  
   -- Target Hook: bool TARGET_HAVE_SHADOW_CALL_STACK
       This value is true if the target platform supports
!      â€˜-fsanitize=shadow-call-stackâ€™.  The default value is false.
  
   -- Target Hook: bool TARGET_HAVE_LIBATOMIC
       This value is true if the target platform supports libatomic.  The
*************** File: gccint.info,  Node: Host Config,
*** 45836,45852 ****
  *********************
  
  Most details about the machine and system on which the compiler is
! actually running are detected by the 'configure' script.  Some things
! are impossible for 'configure' to detect; these are described in two
! ways, either by macros defined in a file named 'xm-MACHINE.h' or by hook
  functions in the file specified by the OUT_HOST_HOOK_OBJ variable in
! 'config.gcc'.  (The intention is that very few hosts will need a header
  file but nearly every fully supported host will need to override some
  hooks.)
  
   If you need to define only a few macros, and they have simple
! definitions, consider using the 'xm_defines' variable in your
! 'config.gcc' entry instead of creating a host configuration header.
  *Note System Config::.
  
  * Menu:
--- 45840,45856 ----
  *********************
  
  Most details about the machine and system on which the compiler is
! actually running are detected by the â€˜configureâ€™ script.  Some things
! are impossible for â€˜configureâ€™ to detect; these are described in two
! ways, either by macros defined in a file named â€˜xm-MACHINE.hâ€™ or by hook
  functions in the file specified by the OUT_HOST_HOOK_OBJ variable in
! â€˜config.gccâ€™.  (The intention is that very few hosts will need a header
  file but nearly every fully supported host will need to override some
  hooks.)
  
   If you need to define only a few macros, and they have simple
! definitions, consider using the â€˜xm_definesâ€™ variable in your
! â€˜config.gccâ€™ entry instead of creating a host configuration header.
  *Note System Config::.
  
  * Menu:
*************** File: gccint.info,  Node: Host Common,
*** 45864,45870 ****
  Some things are just not portable, even between similar operating
  systems, and are too difficult for autoconf to detect.  They get
  implemented using hook functions in the file specified by the
! HOST_HOOK_OBJ variable in 'config.gcc'.
  
   -- Host Hook: void HOST_HOOKS_EXTRA_SIGNALS (void)
       This host hook is used to set up handling for extra signals.  The
--- 45868,45874 ----
  Some things are just not portable, even between similar operating
  systems, and are too difficult for autoconf to detect.  They get
  implemented using hook functions in the file specified by the
! HOST_HOOK_OBJ variable in â€˜config.gccâ€™.
  
   -- Host Hook: void HOST_HOOKS_EXTRA_SIGNALS (void)
       This host hook is used to set up handling for extra signals.  The
*************** HOST_HOOK_OBJ variable in 'config.gcc'.
*** 45876,45882 ****
       be free in some subsequent invocation of the compiler.  We intend
       to load the PCH data at this address such that the data need not be
       relocated.  The area should be able to hold SIZE bytes.  If the
!      host uses 'mmap', FD is an open file descriptor that can be used
       for probing.
  
   -- Host Hook: int HOST_HOOKS_GT_PCH_USE_ADDRESS (void * ADDRESS, size_t
--- 45880,45886 ----
       be free in some subsequent invocation of the compiler.  We intend
       to load the PCH data at this address such that the data need not be
       relocated.  The area should be able to hold SIZE bytes.  If the
!      host uses â€˜mmapâ€™, FD is an open file descriptor that can be used
       for probing.
  
   -- Host Hook: int HOST_HOOKS_GT_PCH_USE_ADDRESS (void * ADDRESS, size_t
*************** HOST_HOOK_OBJ variable in 'config.gcc'.
*** 45884,45890 ****
       This host hook is called when a PCH file is about to be loaded.  We
       want to load SIZE bytes from FD at OFFSET into memory at ADDRESS.
       The given address will be the result of a previous invocation of
!      'HOST_HOOKS_GT_PCH_GET_ADDRESS'.  Return -1 if we couldn't allocate
       SIZE bytes at ADDRESS.  Return 0 if the memory is allocated but the
       data is not loaded.  Return 1 if the hook has performed everything.
  
--- 45888,45894 ----
       This host hook is called when a PCH file is about to be loaded.  We
       want to load SIZE bytes from FD at OFFSET into memory at ADDRESS.
       The given address will be the result of a previous invocation of
!      â€˜HOST_HOOKS_GT_PCH_GET_ADDRESSâ€™.  Return âˆ’1 if we couldn't allocate
       SIZE bytes at ADDRESS.  Return 0 if the memory is allocated but the
       data is not loaded.  Return 1 if the hook has performed everything.
  
*************** HOST_HOOK_OBJ variable in 'config.gcc'.
*** 45894,45900 ****
       which case all reserved address space should be freed.
  
       Do not try to handle values of ADDRESS that could not have been
!      returned by this executable; just return -1.  Such values usually
       indicate an out-of-date PCH file (built by some other GCC
       executable), and such a PCH file won't work.
  
--- 45898,45904 ----
       which case all reserved address space should be freed.
  
       Do not try to handle values of ADDRESS that could not have been
!      returned by this executable; just return âˆ’1.  Such values usually
       indicate an out-of-date PCH file (built by some other GCC
       executable), and such a PCH file won't work.
  
*************** File: gccint.info,  Node: Filesystem,  N
*** 45913,45969 ****
  GCC needs to know a number of things about the semantics of the host
  machine's filesystem.  Filesystems with Unix and MS-DOS semantics are
  automatically detected.  For other systems, you can define the following
! macros in 'xm-MACHINE.h'.
  
! 'HAVE_DOS_BASED_FILE_SYSTEM'
!      This macro is automatically defined by 'system.h' if the host file
       system obeys the semantics defined by MS-DOS instead of Unix.  DOS
       file systems are case insensitive, file specifications may begin
!      with a drive letter, and both forward slash and backslash ('/' and
!      '\') are directory separators.
  
! 'DIR_SEPARATOR'
! 'DIR_SEPARATOR_2'
       If defined, these macros expand to character constants specifying
       separators for directory names within a file specification.
!      'system.h' will automatically give them appropriate values on Unix
       and MS-DOS file systems.  If your file system is neither of these,
!      define one or both appropriately in 'xm-MACHINE.h'.
  
       However, operating systems like VMS, where constructing a pathname
       is more complicated than just stringing together directory names
       separated by a special character, should not define either of these
       macros.
  
! 'PATH_SEPARATOR'
       If defined, this macro should expand to a character constant
       specifying the separator for elements of search paths.  The default
!      value is a colon (':').  DOS-based systems usually, but not always,
!      use semicolon (';').
  
! 'VMS'
       Define this macro if the host system is VMS.
  
! 'HOST_OBJECT_SUFFIX'
       Define this macro to be a C string representing the suffix for
       object files on your host machine.  If you do not define this
!      macro, GCC will use '.o' as the suffix for object files.
  
! 'HOST_EXECUTABLE_SUFFIX'
       Define this macro to be a C string representing the suffix for
       executable files on your host machine.  If you do not define this
       macro, GCC will use the null string as the suffix for executable
       files.
  
! 'HOST_BIT_BUCKET'
       A pathname defined by the host operating system, which can be
       opened as a file and written to, but all the information written is
!      discarded.  This is commonly known as a "bit bucket" or "null
!      device".  If you do not define this macro, GCC will use '/dev/null'
       as the bit bucket.  If the host does not support a bit bucket,
       define this macro to an invalid filename.
  
! 'UPDATE_PATH_HOST_CANONICALIZE (PATH)'
       If defined, a C statement (sans semicolon) that performs
       host-dependent canonicalization when a path used in a compilation
       driver or preprocessor is canonicalized.  PATH is a malloc-ed path
--- 45917,45973 ----
  GCC needs to know a number of things about the semantics of the host
  machine's filesystem.  Filesystems with Unix and MS-DOS semantics are
  automatically detected.  For other systems, you can define the following
! macros in â€˜xm-MACHINE.hâ€™.
  
! â€˜HAVE_DOS_BASED_FILE_SYSTEMâ€™
!      This macro is automatically defined by â€˜system.hâ€™ if the host file
       system obeys the semantics defined by MS-DOS instead of Unix.  DOS
       file systems are case insensitive, file specifications may begin
!      with a drive letter, and both forward slash and backslash (â€˜/â€™ and
!      â€˜\â€™) are directory separators.
  
! â€˜DIR_SEPARATORâ€™
! â€˜DIR_SEPARATOR_2â€™
       If defined, these macros expand to character constants specifying
       separators for directory names within a file specification.
!      â€˜system.hâ€™ will automatically give them appropriate values on Unix
       and MS-DOS file systems.  If your file system is neither of these,
!      define one or both appropriately in â€˜xm-MACHINE.hâ€™.
  
       However, operating systems like VMS, where constructing a pathname
       is more complicated than just stringing together directory names
       separated by a special character, should not define either of these
       macros.
  
! â€˜PATH_SEPARATORâ€™
       If defined, this macro should expand to a character constant
       specifying the separator for elements of search paths.  The default
!      value is a colon (â€˜:â€™).  DOS-based systems usually, but not always,
!      use semicolon (â€˜;â€™).
  
! â€˜VMSâ€™
       Define this macro if the host system is VMS.
  
! â€˜HOST_OBJECT_SUFFIXâ€™
       Define this macro to be a C string representing the suffix for
       object files on your host machine.  If you do not define this
!      macro, GCC will use â€˜.oâ€™ as the suffix for object files.
  
! â€˜HOST_EXECUTABLE_SUFFIXâ€™
       Define this macro to be a C string representing the suffix for
       executable files on your host machine.  If you do not define this
       macro, GCC will use the null string as the suffix for executable
       files.
  
! â€˜HOST_BIT_BUCKETâ€™
       A pathname defined by the host operating system, which can be
       opened as a file and written to, but all the information written is
!      discarded.  This is commonly known as a â€œbit bucketâ€� or â€œnull
!      deviceâ€�.  If you do not define this macro, GCC will use â€˜/dev/nullâ€™
       as the bit bucket.  If the host does not support a bit bucket,
       define this macro to an invalid filename.
  
! â€˜UPDATE_PATH_HOST_CANONICALIZE (PATH)â€™
       If defined, a C statement (sans semicolon) that performs
       host-dependent canonicalization when a path used in a compilation
       driver or preprocessor is canonicalized.  PATH is a malloc-ed path
*************** macros in 'xm-MACHINE.h'.
*** 45971,45989 ****
       into a different buffer, the old path should be freed and the new
       buffer should have been allocated with malloc.
  
! 'DUMPFILE_FORMAT'
       Define this macro to be a C string representing the format to use
       for constructing the index part of debugging dump file names.  The
       resultant string must fit in fifteen bytes.  The full filename will
       be the concatenation of: the prefix of the assembler file name, the
       string resulting from applying this format to an index number, and
!      a string unique to each dump file kind, e.g. 'rtl'.
  
!      If you do not define this macro, GCC will use '.%02d.'.  You should
       define this macro if using the default will create an invalid file
       name.
  
! 'DELETE_IF_ORDINARY'
       Define this macro to be a C statement (sans semicolon) that
       performs host-dependent removal of ordinary temp files in the
       compilation driver.
--- 45975,45993 ----
       into a different buffer, the old path should be freed and the new
       buffer should have been allocated with malloc.
  
! â€˜DUMPFILE_FORMATâ€™
       Define this macro to be a C string representing the format to use
       for constructing the index part of debugging dump file names.  The
       resultant string must fit in fifteen bytes.  The full filename will
       be the concatenation of: the prefix of the assembler file name, the
       string resulting from applying this format to an index number, and
!      a string unique to each dump file kind, e.g. â€˜rtlâ€™.
  
!      If you do not define this macro, GCC will use â€˜.%02d.â€™.  You should
       define this macro if using the default will create an invalid file
       name.
  
! â€˜DELETE_IF_ORDINARYâ€™
       Define this macro to be a C statement (sans semicolon) that
       performs host-dependent removal of ordinary temp files in the
       compilation driver.
*************** macros in 'xm-MACHINE.h'.
*** 45993,45999 ****
       reliably remove the temp file as, for example, on VMS which allows
       multiple versions of a file.
  
! 'HOST_LACKS_INODE_NUMBERS'
       Define this macro if the host filesystem does not report meaningful
       inode numbers in struct stat.
  
--- 45997,46003 ----
       reliably remove the temp file as, for example, on VMS which allows
       multiple versions of a file.
  
! â€˜HOST_LACKS_INODE_NUMBERSâ€™
       Define this macro if the host filesystem does not report meaningful
       inode numbers in struct stat.
  
*************** File: gccint.info,  Node: Host Misc,  Pr
*** 46003,46059 ****
  18.3 Host Misc
  ==============
  
! 'FATAL_EXIT_CODE'
       A C expression for the status code to be returned when the compiler
       exits after serious errors.  The default is the system-provided
!      macro 'EXIT_FAILURE', or '1' if the system doesn't define that
       macro.  Define this macro only if these defaults are incorrect.
  
! 'SUCCESS_EXIT_CODE'
       A C expression for the status code to be returned when the compiler
       exits without serious errors.  (Warnings are not serious errors.)
!      The default is the system-provided macro 'EXIT_SUCCESS', or '0' if
       the system doesn't define that macro.  Define this macro only if
       these defaults are incorrect.
  
! 'USE_C_ALLOCA'
       Define this macro if GCC should use the C implementation of
!      'alloca' provided by 'libiberty.a'.  This only affects how some
       parts of the compiler itself allocate memory.  It does not change
       code generation.
  
!      When GCC is built with a compiler other than itself, the C 'alloca'
       is always used.  This is because most other implementations have
       serious bugs.  You should define this macro only on a system where
!      no stack-based 'alloca' can possibly work.  For instance, if a
       system has a small limit on the size of the stack, GCC's builtin
!      'alloca' will not work reliably.
  
! 'COLLECT2_HOST_INITIALIZATION'
       If defined, a C statement (sans semicolon) that performs
!      host-dependent initialization when 'collect2' is being initialized.
  
! 'GCC_DRIVER_HOST_INITIALIZATION'
       If defined, a C statement (sans semicolon) that performs
       host-dependent initialization when a compilation driver is being
       initialized.
  
! 'HOST_LONG_LONG_FORMAT'
!      If defined, the string used to indicate an argument of type 'long
!      long' to functions like 'printf'.  The default value is '"ll"'.
  
! 'HOST_LONG_FORMAT'
!      If defined, the string used to indicate an argument of type 'long'
!      to functions like 'printf'.  The default value is '"l"'.
  
! 'HOST_PTR_PRINTF'
!      If defined, the string used to indicate an argument of type 'void
!      *' to functions like 'printf'.  The default value is '"%p"'.
  
!  In addition, if 'configure' generates an incorrect definition of any of
! the macros in 'auto-host.h', you can override that definition in a host
  configuration header.  If you need to do this, first see if it is
! possible to fix 'configure'.
  
  
  File: gccint.info,  Node: Fragments,  Next: Collect2,  Prev: Host Config,  Up: Top
--- 46007,46063 ----
  18.3 Host Misc
  ==============
  
! â€˜FATAL_EXIT_CODEâ€™
       A C expression for the status code to be returned when the compiler
       exits after serious errors.  The default is the system-provided
!      macro â€˜EXIT_FAILUREâ€™, or â€˜1â€™ if the system doesn't define that
       macro.  Define this macro only if these defaults are incorrect.
  
! â€˜SUCCESS_EXIT_CODEâ€™
       A C expression for the status code to be returned when the compiler
       exits without serious errors.  (Warnings are not serious errors.)
!      The default is the system-provided macro â€˜EXIT_SUCCESSâ€™, or â€˜0â€™ if
       the system doesn't define that macro.  Define this macro only if
       these defaults are incorrect.
  
! â€˜USE_C_ALLOCAâ€™
       Define this macro if GCC should use the C implementation of
!      â€˜allocaâ€™ provided by â€˜libiberty.aâ€™.  This only affects how some
       parts of the compiler itself allocate memory.  It does not change
       code generation.
  
!      When GCC is built with a compiler other than itself, the C â€˜allocaâ€™
       is always used.  This is because most other implementations have
       serious bugs.  You should define this macro only on a system where
!      no stack-based â€˜allocaâ€™ can possibly work.  For instance, if a
       system has a small limit on the size of the stack, GCC's builtin
!      â€˜allocaâ€™ will not work reliably.
  
! â€˜COLLECT2_HOST_INITIALIZATIONâ€™
       If defined, a C statement (sans semicolon) that performs
!      host-dependent initialization when â€˜collect2â€™ is being initialized.
  
! â€˜GCC_DRIVER_HOST_INITIALIZATIONâ€™
       If defined, a C statement (sans semicolon) that performs
       host-dependent initialization when a compilation driver is being
       initialized.
  
! â€˜HOST_LONG_LONG_FORMATâ€™
!      If defined, the string used to indicate an argument of type â€˜long
!      longâ€™ to functions like â€˜printfâ€™.  The default value is â€˜"ll"â€™.
  
! â€˜HOST_LONG_FORMATâ€™
!      If defined, the string used to indicate an argument of type â€˜longâ€™
!      to functions like â€˜printfâ€™.  The default value is â€˜"l"â€™.
  
! â€˜HOST_PTR_PRINTFâ€™
!      If defined, the string used to indicate an argument of type â€˜void
!      *â€™ to functions like â€˜printfâ€™.  The default value is â€˜"%p"â€™.
  
!  In addition, if â€˜configureâ€™ generates an incorrect definition of any of
! the macros in â€˜auto-host.hâ€™, you can override that definition in a host
  configuration header.  If you need to do this, first see if it is
! possible to fix â€˜configureâ€™.
  
  
  File: gccint.info,  Node: Fragments,  Next: Collect2,  Prev: Host Config,  Up: Top
*************** File: gccint.info,  Node: Fragments,  Ne
*** 46061,46088 ****
  19 Makefile Fragments
  *********************
  
! When you configure GCC using the 'configure' script, it will construct
! the file 'Makefile' from the template file 'Makefile.in'.  When it does
! this, it can incorporate makefile fragments from the 'config' directory.
  These are used to set Makefile parameters that are not amenable to being
  calculated by autoconf.  The list of fragments to incorporate is set by
! 'config.gcc' (and occasionally 'config.build' and 'config.host'); *Note
  System Config::.
  
!  Fragments are named either 't-TARGET' or 'x-HOST', depending on whether
  they are relevant to configuring GCC to produce code for a particular
  target, or to configuring GCC to run on a particular host.  Here TARGET
  and HOST are mnemonics which usually have some relationship to the
  canonical system name, but no formal connection.
  
   If these files do not exist, it means nothing needs to be added for a
! given target or host.  Most targets need a few 't-TARGET' fragments, but
! needing 'x-HOST' fragments is rare.
  
  * Menu:
  
! * Target Fragment:: Writing 't-TARGET' files.
! * Host Fragment::   Writing 'x-HOST' files.
  
  
  File: gccint.info,  Node: Target Fragment,  Next: Host Fragment,  Up: Fragments
--- 46065,46092 ----
  19 Makefile Fragments
  *********************
  
! When you configure GCC using the â€˜configureâ€™ script, it will construct
! the file â€˜Makefileâ€™ from the template file â€˜Makefile.inâ€™.  When it does
! this, it can incorporate makefile fragments from the â€˜configâ€™ directory.
  These are used to set Makefile parameters that are not amenable to being
  calculated by autoconf.  The list of fragments to incorporate is set by
! â€˜config.gccâ€™ (and occasionally â€˜config.buildâ€™ and â€˜config.hostâ€™); *Note
  System Config::.
  
!  Fragments are named either â€˜t-TARGETâ€™ or â€˜x-HOSTâ€™, depending on whether
  they are relevant to configuring GCC to produce code for a particular
  target, or to configuring GCC to run on a particular host.  Here TARGET
  and HOST are mnemonics which usually have some relationship to the
  canonical system name, but no formal connection.
  
   If these files do not exist, it means nothing needs to be added for a
! given target or host.  Most targets need a few â€˜t-TARGETâ€™ fragments, but
! needing â€˜x-HOSTâ€™ fragments is rare.
  
  * Menu:
  
! * Target Fragment:: Writing â€˜t-TARGETâ€™ files.
! * Host Fragment::   Writing â€˜x-HOSTâ€™ files.
  
  
  File: gccint.info,  Node: Target Fragment,  Next: Host Fragment,  Up: Fragments
*************** File: gccint.info,  Node: Target Fragmen
*** 46092,46263 ****
  
  Target makefile fragments can set these Makefile variables.
  
! 'LIBGCC2_CFLAGS'
!      Compiler flags to use when compiling 'libgcc2.c'.
  
! 'LIB2FUNCS_EXTRA'
       A list of source file names to be compiled or assembled and
!      inserted into 'libgcc.a'.
  
! 'CRTSTUFF_T_CFLAGS'
!      Special flags used when compiling 'crtstuff.c'.  *Note
       Initialization::.
  
! 'CRTSTUFF_T_CFLAGS_S'
!      Special flags used when compiling 'crtstuff.c' for shared linking.
!      Used if you use 'crtbeginS.o' and 'crtendS.o' in 'EXTRA-PARTS'.
       *Note Initialization::.
  
! 'MULTILIB_OPTIONS'
       For some targets, invoking GCC in different ways produces objects
       that cannot be linked together.  For example, for some targets GCC
       produces both big and little endian code.  For these targets, you
!      must arrange for multiple versions of 'libgcc.a' to be compiled,
       one for each set of incompatible options.  When GCC invokes the
!      linker, it arranges to link in the right version of 'libgcc.a',
       based on the command line options used.
  
!      The 'MULTILIB_OPTIONS' macro lists the set of options for which
!      special versions of 'libgcc.a' must be built.  Write options that
       are mutually incompatible side by side, separated by a slash.
       Write options that may be used together separated by a space.  The
       build procedure will build all combinations of compatible options.
  
!      For example, if you set 'MULTILIB_OPTIONS' to 'm68000/m68020
!      msoft-float', 'Makefile' will build special versions of 'libgcc.a'
!      using the following sets of options: '-m68000', '-m68020',
!      '-msoft-float', '-m68000 -msoft-float', and '-m68020 -msoft-float'.
  
! 'MULTILIB_DIRNAMES'
!      If 'MULTILIB_OPTIONS' is used, this variable specifies the
       directory names that should be used to hold the various libraries.
!      Write one element in 'MULTILIB_DIRNAMES' for each element in
!      'MULTILIB_OPTIONS'.  If 'MULTILIB_DIRNAMES' is not used, the
!      default value will be 'MULTILIB_OPTIONS', with all slashes treated
       as spaces.
  
!      'MULTILIB_DIRNAMES' describes the multilib directories using GCC
       conventions and is applied to directories that are part of the GCC
       installation.  When multilib-enabled, the compiler will add a
       subdirectory of the form PREFIX/MULTILIB before each directory in
       the search path for libraries and crt files.
  
!      For example, if 'MULTILIB_OPTIONS' is set to 'm68000/m68020
!      msoft-float', then the default value of 'MULTILIB_DIRNAMES' is
!      'm68000 m68020 msoft-float'.  You may specify a different value if
       you desire a different set of directory names.
  
! 'MULTILIB_MATCHES'
       Sometimes the same option may be written in two different ways.  If
!      an option is listed in 'MULTILIB_OPTIONS', GCC needs to know about
!      any synonyms.  In that case, set 'MULTILIB_MATCHES' to a list of
!      items of the form 'option=option' to describe all relevant
!      synonyms.  For example, 'm68000=mc68000 m68020=mc68020'.
  
! 'MULTILIB_EXCEPTIONS'
!      Sometimes when there are multiple sets of 'MULTILIB_OPTIONS' being
       specified, there are combinations that should not be built.  In
!      that case, set 'MULTILIB_EXCEPTIONS' to be all of the switch
       exceptions in shell case syntax that should not be built.
  
       For example the ARM processor cannot execute both hardware floating
       point instructions and the reduced size THUMB instructions at the
       same time, so there is no need to build libraries with both of
!      these options enabled.  Therefore 'MULTILIB_EXCEPTIONS' is set to:
            *mthumb/*mhard-float*
  
! 'MULTILIB_REQUIRED'
       Sometimes when there are only a few combinations are required, it
!      would be a big effort to come up with a 'MULTILIB_EXCEPTIONS' list
       to cover all undesired ones.  In such a case, just listing all the
!      required combinations in 'MULTILIB_REQUIRED' would be more
       straightforward.
  
!      The way to specify the entries in 'MULTILIB_REQUIRED' is same with
!      the way used for 'MULTILIB_EXCEPTIONS', only this time what are
       required will be specified.  Suppose there are multiple sets of
!      'MULTILIB_OPTIONS' and only two combinations are required, one for
       ARMv7-M and one for ARMv7-R with hard floating-point ABI and FPU,
!      the 'MULTILIB_REQUIRED' can be set to:
            MULTILIB_REQUIRED =  mthumb/march=armv7-m
            MULTILIB_REQUIRED += march=armv7-r/mfloat-abi=hard/mfpu=vfpv3-d16
  
!      The 'MULTILIB_REQUIRED' can be used together with
!      'MULTILIB_EXCEPTIONS'.  The option combinations generated from
!      'MULTILIB_OPTIONS' will be filtered by 'MULTILIB_EXCEPTIONS' and
!      then by 'MULTILIB_REQUIRED'.
  
! 'MULTILIB_REUSE'
       Sometimes it is desirable to reuse one existing multilib for
       different sets of options.  Such kind of reuse can minimize the
       number of multilib variants.  And for some targets it is better to
       reuse an existing multilib than to fall back to default multilib
       when there is no corresponding multilib.  This can be done by
!      adding reuse rules to 'MULTILIB_REUSE'.
  
       A reuse rule is comprised of two parts connected by equality sign.
       The left part is the option set used to build multilib and the
       right part is the option set that will reuse this multilib.  Both
!      parts should only use options specified in 'MULTILIB_OPTIONS' and
       the equality signs found in options name should be replaced with
       periods.  An explicit period in the rule can be escaped by
       preceding it with a backslash.  The order of options in the left
       part matters and should be same with those specified in
!      'MULTILIB_REQUIRED' or aligned with the order in
!      'MULTILIB_OPTIONS'.  There is no such limitation for options in the
       right part as we don't build multilib from them.
  
!      'MULTILIB_REUSE' is different from 'MULTILIB_MATCHES' in that it
       sets up relations between two option sets rather than two options.
       Here is an example to demo how we reuse libraries built in Thumb
       mode for applications built in ARM mode:
            MULTILIB_REUSE = mthumb/march.armv7-r=marm/march.armv7-r
  
!      Before the advent of 'MULTILIB_REUSE', GCC select multilib by
       comparing command line options with options used to build multilib.
!      The 'MULTILIB_REUSE' is complementary to that way.  Only when the
       original comparison matches nothing it will work to see if it is OK
       to reuse some existing multilib.
  
! 'MULTILIB_EXTRA_OPTS'
       Sometimes it is desirable that when building multiple versions of
!      'libgcc.a' certain options should always be passed on to the
!      compiler.  In that case, set 'MULTILIB_EXTRA_OPTS' to be the list
       of options to be used for all builds.  If you set this, you should
!      probably set 'CRTSTUFF_T_CFLAGS' to a dash followed by it.
  
! 'MULTILIB_OSDIRNAMES'
!      If 'MULTILIB_OPTIONS' is used, this variable specifies a list of
       subdirectory names, that are used to modify the search path
!      depending on the chosen multilib.  Unlike 'MULTILIB_DIRNAMES',
!      'MULTILIB_OSDIRNAMES' describes the multilib directories using
       operating systems conventions, and is applied to the directories
!      such as 'lib' or those in the 'LIBRARY_PATH' environment variable.
!      The format is either the same as of 'MULTILIB_DIRNAMES', or a set
!      of mappings.  When it is the same as 'MULTILIB_DIRNAMES', it
       describes the multilib directories using operating system
       conventions, rather than GCC conventions.  When it is a set of
       mappings of the form GCCDIR=OSDIR, the left side gives the GCC
       convention and the right gives the equivalent OS defined location.
!      If the OSDIR part begins with a '!', GCC will not search in the
       non-multilib directory and use exclusively the multilib directory.
       Otherwise, the compiler will examine the search path for libraries
       and crt files twice; the first time it will add MULTILIB to each
       directory in the search path, the second it will not.
  
       For configurations that support both multilib and multiarch,
!      'MULTILIB_OSDIRNAMES' also encodes the multiarch name, thus
!      subsuming 'MULTIARCH_DIRNAME'.  The multiarch name is appended to
       each directory name, separated by a colon (e.g.
!      '../lib32:i386-linux-gnu').
  
       Each multiarch subdirectory will be searched before the
       corresponding OS multilib directory, for example
!      '/lib/i386-linux-gnu' before '/lib/../lib32'.  The multiarch name
       will also be used to modify the system header search path, as
!      explained for 'MULTIARCH_DIRNAME'.
  
! 'MULTIARCH_DIRNAME'
       This variable specifies the multiarch name for configurations that
       are multiarch-enabled but not multilibbed configurations.
  
--- 46096,46267 ----
  
  Target makefile fragments can set these Makefile variables.
  
! â€˜LIBGCC2_CFLAGSâ€™
!      Compiler flags to use when compiling â€˜libgcc2.câ€™.
  
! â€˜LIB2FUNCS_EXTRAâ€™
       A list of source file names to be compiled or assembled and
!      inserted into â€˜libgcc.aâ€™.
  
! â€˜CRTSTUFF_T_CFLAGSâ€™
!      Special flags used when compiling â€˜crtstuff.câ€™.  *Note
       Initialization::.
  
! â€˜CRTSTUFF_T_CFLAGS_Sâ€™
!      Special flags used when compiling â€˜crtstuff.câ€™ for shared linking.
!      Used if you use â€˜crtbeginS.oâ€™ and â€˜crtendS.oâ€™ in â€˜EXTRA-PARTSâ€™.
       *Note Initialization::.
  
! â€˜MULTILIB_OPTIONSâ€™
       For some targets, invoking GCC in different ways produces objects
       that cannot be linked together.  For example, for some targets GCC
       produces both big and little endian code.  For these targets, you
!      must arrange for multiple versions of â€˜libgcc.aâ€™ to be compiled,
       one for each set of incompatible options.  When GCC invokes the
!      linker, it arranges to link in the right version of â€˜libgcc.aâ€™,
       based on the command line options used.
  
!      The â€˜MULTILIB_OPTIONSâ€™ macro lists the set of options for which
!      special versions of â€˜libgcc.aâ€™ must be built.  Write options that
       are mutually incompatible side by side, separated by a slash.
       Write options that may be used together separated by a space.  The
       build procedure will build all combinations of compatible options.
  
!      For example, if you set â€˜MULTILIB_OPTIONSâ€™ to â€˜m68000/m68020
!      msoft-floatâ€™, â€˜Makefileâ€™ will build special versions of â€˜libgcc.aâ€™
!      using the following sets of options: â€˜-m68000â€™, â€˜-m68020â€™,
!      â€˜-msoft-floatâ€™, â€˜-m68000 -msoft-floatâ€™, and â€˜-m68020 -msoft-floatâ€™.
  
! â€˜MULTILIB_DIRNAMESâ€™
!      If â€˜MULTILIB_OPTIONSâ€™ is used, this variable specifies the
       directory names that should be used to hold the various libraries.
!      Write one element in â€˜MULTILIB_DIRNAMESâ€™ for each element in
!      â€˜MULTILIB_OPTIONSâ€™.  If â€˜MULTILIB_DIRNAMESâ€™ is not used, the
!      default value will be â€˜MULTILIB_OPTIONSâ€™, with all slashes treated
       as spaces.
  
!      â€˜MULTILIB_DIRNAMESâ€™ describes the multilib directories using GCC
       conventions and is applied to directories that are part of the GCC
       installation.  When multilib-enabled, the compiler will add a
       subdirectory of the form PREFIX/MULTILIB before each directory in
       the search path for libraries and crt files.
  
!      For example, if â€˜MULTILIB_OPTIONSâ€™ is set to â€˜m68000/m68020
!      msoft-floatâ€™, then the default value of â€˜MULTILIB_DIRNAMESâ€™ is
!      â€˜m68000 m68020 msoft-floatâ€™.  You may specify a different value if
       you desire a different set of directory names.
  
! â€˜MULTILIB_MATCHESâ€™
       Sometimes the same option may be written in two different ways.  If
!      an option is listed in â€˜MULTILIB_OPTIONSâ€™, GCC needs to know about
!      any synonyms.  In that case, set â€˜MULTILIB_MATCHESâ€™ to a list of
!      items of the form â€˜option=optionâ€™ to describe all relevant
!      synonyms.  For example, â€˜m68000=mc68000 m68020=mc68020â€™.
  
! â€˜MULTILIB_EXCEPTIONSâ€™
!      Sometimes when there are multiple sets of â€˜MULTILIB_OPTIONSâ€™ being
       specified, there are combinations that should not be built.  In
!      that case, set â€˜MULTILIB_EXCEPTIONSâ€™ to be all of the switch
       exceptions in shell case syntax that should not be built.
  
       For example the ARM processor cannot execute both hardware floating
       point instructions and the reduced size THUMB instructions at the
       same time, so there is no need to build libraries with both of
!      these options enabled.  Therefore â€˜MULTILIB_EXCEPTIONSâ€™ is set to:
            *mthumb/*mhard-float*
  
! â€˜MULTILIB_REQUIREDâ€™
       Sometimes when there are only a few combinations are required, it
!      would be a big effort to come up with a â€˜MULTILIB_EXCEPTIONSâ€™ list
       to cover all undesired ones.  In such a case, just listing all the
!      required combinations in â€˜MULTILIB_REQUIREDâ€™ would be more
       straightforward.
  
!      The way to specify the entries in â€˜MULTILIB_REQUIREDâ€™ is same with
!      the way used for â€˜MULTILIB_EXCEPTIONSâ€™, only this time what are
       required will be specified.  Suppose there are multiple sets of
!      â€˜MULTILIB_OPTIONSâ€™ and only two combinations are required, one for
       ARMv7-M and one for ARMv7-R with hard floating-point ABI and FPU,
!      the â€˜MULTILIB_REQUIREDâ€™ can be set to:
            MULTILIB_REQUIRED =  mthumb/march=armv7-m
            MULTILIB_REQUIRED += march=armv7-r/mfloat-abi=hard/mfpu=vfpv3-d16
  
!      The â€˜MULTILIB_REQUIREDâ€™ can be used together with
!      â€˜MULTILIB_EXCEPTIONSâ€™.  The option combinations generated from
!      â€˜MULTILIB_OPTIONSâ€™ will be filtered by â€˜MULTILIB_EXCEPTIONSâ€™ and
!      then by â€˜MULTILIB_REQUIREDâ€™.
  
! â€˜MULTILIB_REUSEâ€™
       Sometimes it is desirable to reuse one existing multilib for
       different sets of options.  Such kind of reuse can minimize the
       number of multilib variants.  And for some targets it is better to
       reuse an existing multilib than to fall back to default multilib
       when there is no corresponding multilib.  This can be done by
!      adding reuse rules to â€˜MULTILIB_REUSEâ€™.
  
       A reuse rule is comprised of two parts connected by equality sign.
       The left part is the option set used to build multilib and the
       right part is the option set that will reuse this multilib.  Both
!      parts should only use options specified in â€˜MULTILIB_OPTIONSâ€™ and
       the equality signs found in options name should be replaced with
       periods.  An explicit period in the rule can be escaped by
       preceding it with a backslash.  The order of options in the left
       part matters and should be same with those specified in
!      â€˜MULTILIB_REQUIREDâ€™ or aligned with the order in
!      â€˜MULTILIB_OPTIONSâ€™.  There is no such limitation for options in the
       right part as we don't build multilib from them.
  
!      â€˜MULTILIB_REUSEâ€™ is different from â€˜MULTILIB_MATCHESâ€™ in that it
       sets up relations between two option sets rather than two options.
       Here is an example to demo how we reuse libraries built in Thumb
       mode for applications built in ARM mode:
            MULTILIB_REUSE = mthumb/march.armv7-r=marm/march.armv7-r
  
!      Before the advent of â€˜MULTILIB_REUSEâ€™, GCC select multilib by
       comparing command line options with options used to build multilib.
!      The â€˜MULTILIB_REUSEâ€™ is complementary to that way.  Only when the
       original comparison matches nothing it will work to see if it is OK
       to reuse some existing multilib.
  
! â€˜MULTILIB_EXTRA_OPTSâ€™
       Sometimes it is desirable that when building multiple versions of
!      â€˜libgcc.aâ€™ certain options should always be passed on to the
!      compiler.  In that case, set â€˜MULTILIB_EXTRA_OPTSâ€™ to be the list
       of options to be used for all builds.  If you set this, you should
!      probably set â€˜CRTSTUFF_T_CFLAGSâ€™ to a dash followed by it.
  
! â€˜MULTILIB_OSDIRNAMESâ€™
!      If â€˜MULTILIB_OPTIONSâ€™ is used, this variable specifies a list of
       subdirectory names, that are used to modify the search path
!      depending on the chosen multilib.  Unlike â€˜MULTILIB_DIRNAMESâ€™,
!      â€˜MULTILIB_OSDIRNAMESâ€™ describes the multilib directories using
       operating systems conventions, and is applied to the directories
!      such as â€˜libâ€™ or those in the â€˜LIBRARY_PATHâ€™ environment variable.
!      The format is either the same as of â€˜MULTILIB_DIRNAMESâ€™, or a set
!      of mappings.  When it is the same as â€˜MULTILIB_DIRNAMESâ€™, it
       describes the multilib directories using operating system
       conventions, rather than GCC conventions.  When it is a set of
       mappings of the form GCCDIR=OSDIR, the left side gives the GCC
       convention and the right gives the equivalent OS defined location.
!      If the OSDIR part begins with a â€˜!â€™, GCC will not search in the
       non-multilib directory and use exclusively the multilib directory.
       Otherwise, the compiler will examine the search path for libraries
       and crt files twice; the first time it will add MULTILIB to each
       directory in the search path, the second it will not.
  
       For configurations that support both multilib and multiarch,
!      â€˜MULTILIB_OSDIRNAMESâ€™ also encodes the multiarch name, thus
!      subsuming â€˜MULTIARCH_DIRNAMEâ€™.  The multiarch name is appended to
       each directory name, separated by a colon (e.g.
!      â€˜../lib32:i386-linux-gnuâ€™).
  
       Each multiarch subdirectory will be searched before the
       corresponding OS multilib directory, for example
!      â€˜/lib/i386-linux-gnuâ€™ before â€˜/lib/../lib32â€™.  The multiarch name
       will also be used to modify the system header search path, as
!      explained for â€˜MULTIARCH_DIRNAMEâ€™.
  
! â€˜MULTIARCH_DIRNAMEâ€™
       This variable specifies the multiarch name for configurations that
       are multiarch-enabled but not multilibbed configurations.
  
*************** Target makefile fragments can set these
*** 46266,46299 ****
       locations.  The compiler will add a multiarch subdirectory of the
       form PREFIX/MULTIARCH before each directory in the library and crt
       search path.  It will also add two directories
!      'LOCAL_INCLUDE_DIR'/MULTIARCH and
!      'NATIVE_SYSTEM_HEADER_DIR'/MULTIARCH) to the system header search
!      path, respectively before 'LOCAL_INCLUDE_DIR' and
!      'NATIVE_SYSTEM_HEADER_DIR'.
  
!      'MULTIARCH_DIRNAME' is not used for configurations that support
       both multilib and multiarch.  In that case, multiarch names are
!      encoded in 'MULTILIB_OSDIRNAMES' instead.
  
       More documentation about multiarch can be found at
       <https://wiki.debian.org/Multiarch>.
  
! 'SPECS'
!      Unfortunately, setting 'MULTILIB_EXTRA_OPTS' is not enough, since
       it does not affect the build of target libraries, at least not the
       build of the default multilib.  One possible work-around is to use
!      'DRIVER_SELF_SPECS' to bring options from the 'specs' file as if
       they had been passed in the compiler driver command line.  However,
       you don't want to be adding these options after the toolchain is
!      installed, so you can instead tweak the 'specs' file that will be
       used during the toolchain build, while you still install the
!      original, built-in 'specs'.  The trick is to set 'SPECS' to some
!      other filename (say 'specs.install'), that will then be created out
!      of the built-in specs, and introduce a 'Makefile' rule to generate
!      the 'specs' file that's going to be used at build time out of your
!      'specs.install'.
  
! 'T_CFLAGS'
       These are extra flags to pass to the C compiler.  They are used
       both when building GCC, and when compiling things with the
       just-built GCC.  This variable is deprecated and should not be
--- 46270,46303 ----
       locations.  The compiler will add a multiarch subdirectory of the
       form PREFIX/MULTIARCH before each directory in the library and crt
       search path.  It will also add two directories
!      â€˜LOCAL_INCLUDE_DIRâ€™/MULTIARCH and
!      â€˜NATIVE_SYSTEM_HEADER_DIRâ€™/MULTIARCH) to the system header search
!      path, respectively before â€˜LOCAL_INCLUDE_DIRâ€™ and
!      â€˜NATIVE_SYSTEM_HEADER_DIRâ€™.
  
!      â€˜MULTIARCH_DIRNAMEâ€™ is not used for configurations that support
       both multilib and multiarch.  In that case, multiarch names are
!      encoded in â€˜MULTILIB_OSDIRNAMESâ€™ instead.
  
       More documentation about multiarch can be found at
       <https://wiki.debian.org/Multiarch>.
  
! â€˜SPECSâ€™
!      Unfortunately, setting â€˜MULTILIB_EXTRA_OPTSâ€™ is not enough, since
       it does not affect the build of target libraries, at least not the
       build of the default multilib.  One possible work-around is to use
!      â€˜DRIVER_SELF_SPECSâ€™ to bring options from the â€˜specsâ€™ file as if
       they had been passed in the compiler driver command line.  However,
       you don't want to be adding these options after the toolchain is
!      installed, so you can instead tweak the â€˜specsâ€™ file that will be
       used during the toolchain build, while you still install the
!      original, built-in â€˜specsâ€™.  The trick is to set â€˜SPECSâ€™ to some
!      other filename (say â€˜specs.installâ€™), that will then be created out
!      of the built-in specs, and introduce a â€˜Makefileâ€™ rule to generate
!      the â€˜specsâ€™ file that's going to be used at build time out of your
!      â€˜specs.installâ€™.
  
! â€˜T_CFLAGSâ€™
       These are extra flags to pass to the C compiler.  They are used
       both when building GCC, and when compiling things with the
       just-built GCC.  This variable is deprecated and should not be
*************** File: gccint.info,  Node: Host Fragment,
*** 46305,46383 ****
  19.2 Host Makefile Fragments
  ============================
  
! The use of 'x-HOST' fragments is discouraged.  You should only use it
  for makefile dependencies.
  
  
  File: gccint.info,  Node: Collect2,  Next: Header Dirs,  Prev: Fragments,  Up: Top
  
! 20 'collect2'
  *************
  
! GCC uses a utility called 'collect2' on nearly all systems to arrange to
  call various initialization functions at start time.
  
!  The program 'collect2' works by linking the program once and looking
  through the linker output file for symbols with particular names
  indicating they are constructor functions.  If it finds any, it creates
! a new temporary '.c' file containing a table of them, compiles it, and
  links the program a second time including that file.
  
   The actual calls to the constructors are carried out by a subroutine
! called '__main', which is called (automatically) at the beginning of the
! body of 'main' (provided 'main' was compiled with GNU CC).  Calling
! '__main' is necessary, even when compiling C code, to allow linking C
! and C++ object code together.  (If you use '-nostdlib', you get an
! unresolved reference to '__main', since it's defined in the standard GCC
! library.  Include '-lgcc' at the end of your compiler command line to
  resolve this reference.)
  
!  The program 'collect2' is installed as 'ld' in the directory where the
! passes of the compiler are installed.  When 'collect2' needs to find the
! _real_ 'ld', it tries the following file names:
  
!    * a hard coded linker file name, if GCC was configured with the
!      '--with-ld' option.
  
!    * 'real-ld' in the directories listed in the compiler's search
       directories.
  
!    * 'real-ld' in the directories listed in the environment variable
!      'PATH'.
  
!    * The file specified in the 'REAL_LD_FILE_NAME' configuration macro,
       if specified.
  
!    * 'ld' in the compiler's search directories, except that 'collect2'
       will not execute itself recursively.
  
!    * 'ld' in 'PATH'.
  
   "The compiler's search directories" means all the directories where
! 'gcc' searches for passes of the compiler.  This includes directories
! that you specify with '-B'.
  
   Cross-compilers search a little differently:
  
!    * 'real-ld' in the compiler's search directories.
  
!    * 'TARGET-real-ld' in 'PATH'.
  
!    * The file specified in the 'REAL_LD_FILE_NAME' configuration macro,
       if specified.
  
!    * 'ld' in the compiler's search directories.
  
!    * 'TARGET-ld' in 'PATH'.
  
!  'collect2' explicitly avoids running 'ld' using the file name under
! which 'collect2' itself was invoked.  In fact, it remembers up a list of
! such names--in case one copy of 'collect2' finds another copy (or
! version) of 'collect2' installed as 'ld' in a second place in the search
  path.
  
!  'collect2' searches for the utilities 'nm' and 'strip' using the same
! algorithm as above for 'ld'.
  
  
  File: gccint.info,  Node: Header Dirs,  Next: Type Information,  Prev: Collect2,  Up: Top
--- 46309,46387 ----
  19.2 Host Makefile Fragments
  ============================
  
! The use of â€˜x-HOSTâ€™ fragments is discouraged.  You should only use it
  for makefile dependencies.
  
  
  File: gccint.info,  Node: Collect2,  Next: Header Dirs,  Prev: Fragments,  Up: Top
  
! 20 â€˜collect2â€™
  *************
  
! GCC uses a utility called â€˜collect2â€™ on nearly all systems to arrange to
  call various initialization functions at start time.
  
!  The program â€˜collect2â€™ works by linking the program once and looking
  through the linker output file for symbols with particular names
  indicating they are constructor functions.  If it finds any, it creates
! a new temporary â€˜.câ€™ file containing a table of them, compiles it, and
  links the program a second time including that file.
  
   The actual calls to the constructors are carried out by a subroutine
! called â€˜__mainâ€™, which is called (automatically) at the beginning of the
! body of â€˜mainâ€™ (provided â€˜mainâ€™ was compiled with GNU CC).  Calling
! â€˜__mainâ€™ is necessary, even when compiling C code, to allow linking C
! and C++ object code together.  (If you use â€˜-nostdlibâ€™, you get an
! unresolved reference to â€˜__mainâ€™, since it's defined in the standard GCC
! library.  Include â€˜-lgccâ€™ at the end of your compiler command line to
  resolve this reference.)
  
!  The program â€˜collect2â€™ is installed as â€˜ldâ€™ in the directory where the
! passes of the compiler are installed.  When â€˜collect2â€™ needs to find the
! _real_ â€˜ldâ€™, it tries the following file names:
  
!    â€¢ a hard coded linker file name, if GCC was configured with the
!      â€˜--with-ldâ€™ option.
  
!    â€¢ â€˜real-ldâ€™ in the directories listed in the compiler's search
       directories.
  
!    â€¢ â€˜real-ldâ€™ in the directories listed in the environment variable
!      â€˜PATHâ€™.
  
!    â€¢ The file specified in the â€˜REAL_LD_FILE_NAMEâ€™ configuration macro,
       if specified.
  
!    â€¢ â€˜ldâ€™ in the compiler's search directories, except that â€˜collect2â€™
       will not execute itself recursively.
  
!    â€¢ â€˜ldâ€™ in â€˜PATHâ€™.
  
   "The compiler's search directories" means all the directories where
! â€˜gccâ€™ searches for passes of the compiler.  This includes directories
! that you specify with â€˜-Bâ€™.
  
   Cross-compilers search a little differently:
  
!    â€¢ â€˜real-ldâ€™ in the compiler's search directories.
  
!    â€¢ â€˜TARGET-real-ldâ€™ in â€˜PATHâ€™.
  
!    â€¢ The file specified in the â€˜REAL_LD_FILE_NAMEâ€™ configuration macro,
       if specified.
  
!    â€¢ â€˜ldâ€™ in the compiler's search directories.
  
!    â€¢ â€˜TARGET-ldâ€™ in â€˜PATHâ€™.
  
!  â€˜collect2â€™ explicitly avoids running â€˜ldâ€™ using the file name under
! which â€˜collect2â€™ itself was invoked.  In fact, it remembers up a list of
! such names--in case one copy of â€˜collect2â€™ finds another copy (or
! version) of â€˜collect2â€™ installed as â€˜ldâ€™ in a second place in the search
  path.
  
!  â€˜collect2â€™ searches for the utilities â€˜nmâ€™ and â€˜stripâ€™ using the same
! algorithm as above for â€˜ldâ€™.
  
  
  File: gccint.info,  Node: Header Dirs,  Next: Type Information,  Prev: Collect2,  Up: Top
*************** File: gccint.info,  Node: Header Dirs,
*** 46385,46413 ****
  21 Standard Header File Directories
  ***********************************
  
! 'GCC_INCLUDE_DIR' means the same thing for native and cross.  It is
  where GCC stores its private include files, and also where GCC stores
! the fixed include files.  A cross compiled GCC runs 'fixincludes' on the
! header files in '$(tooldir)/include'.  (If the cross compilation header
  files need to be fixed, they must be installed before GCC is built.  If
  the cross compilation header files are already suitable for GCC, nothing
  special need be done).
  
!  'GPLUSPLUS_INCLUDE_DIR' means the same thing for native and cross.  It
! is where 'g++' looks first for header files.  The C++ library installs
  only target independent header files in that directory.
  
!  'LOCAL_INCLUDE_DIR' is used only by native compilers.  GCC doesn't
! install anything there.  It is normally '/usr/local/include'.  This is
  where local additions to a packaged system should place header files.
  
!  'CROSS_INCLUDE_DIR' is used only by cross compilers.  GCC doesn't
  install anything there.
  
!  'TOOL_INCLUDE_DIR' is used for both native and cross compilers.  It is
  the place for other packages to install header files that GCC will use.
! For a cross-compiler, this is the equivalent of '/usr/include'.  When
! you build a cross-compiler, 'fixincludes' processes any header files in
  this directory.
  
  
--- 46389,46417 ----
  21 Standard Header File Directories
  ***********************************
  
! â€˜GCC_INCLUDE_DIRâ€™ means the same thing for native and cross.  It is
  where GCC stores its private include files, and also where GCC stores
! the fixed include files.  A cross compiled GCC runs â€˜fixincludesâ€™ on the
! header files in â€˜$(tooldir)/includeâ€™.  (If the cross compilation header
  files need to be fixed, they must be installed before GCC is built.  If
  the cross compilation header files are already suitable for GCC, nothing
  special need be done).
  
!  â€˜GPLUSPLUS_INCLUDE_DIRâ€™ means the same thing for native and cross.  It
! is where â€˜g++â€™ looks first for header files.  The C++ library installs
  only target independent header files in that directory.
  
!  â€˜LOCAL_INCLUDE_DIRâ€™ is used only by native compilers.  GCC doesn't
! install anything there.  It is normally â€˜/usr/local/includeâ€™.  This is
  where local additions to a packaged system should place header files.
  
!  â€˜CROSS_INCLUDE_DIRâ€™ is used only by cross compilers.  GCC doesn't
  install anything there.
  
!  â€˜TOOL_INCLUDE_DIRâ€™ is used for both native and cross compilers.  It is
  the place for other packages to install header files that GCC will use.
! For a cross-compiler, this is the equivalent of â€˜/usr/includeâ€™.  When
! you build a cross-compiler, â€˜fixincludesâ€™ processes any header files in
  this directory.
  
  
*************** implement precompiled headers.
*** 46423,46430 ****
  
   A full C++ parser would be too complicated for this task, so a limited
  subset of C++ is interpreted and special markers are used to determine
! what parts of the source to look at.  All 'struct', 'union' and
! 'template' structure declarations that define data structures that are
  allocated under control of the garbage collector must be marked.  All
  global variables that hold pointers to garbage-collected memory must
  also be marked.  Finally, all global variables that need to be saved and
--- 46427,46434 ----
  
   A full C++ parser would be too complicated for this task, so a limited
  subset of C++ is interpreted and special markers are used to determine
! what parts of the source to look at.  All â€˜structâ€™, â€˜unionâ€™ and
! â€˜templateâ€™ structure declarations that define data structures that are
  allocated under control of the garbage collector must be marked.  All
  global variables that hold pointers to garbage-collected memory must
  also be marked.  Finally, all global variables that need to be saved and
*************** be saved in a precompiled header.)
*** 46436,46447 ****
   The full format of a marker is
       GTY (([OPTION] [(PARAM)], [OPTION] [(PARAM)] ...))
  but in most cases no options are needed.  The outer double parentheses
! are still necessary, though: 'GTY(())'.  Markers can appear:
  
!    * In a structure definition, before the open brace;
!    * In a global variable declaration, after the keyword 'static' or
!      'extern'; and
!    * In a structure field definition, before the name of the field.
  
   Here are some examples of marking simple data structures and globals.
  
--- 46440,46451 ----
   The full format of a marker is
       GTY (([OPTION] [(PARAM)], [OPTION] [(PARAM)] ...))
  but in most cases no options are needed.  The outer double parentheses
! are still necessary, though: â€˜GTY(())â€™.  Markers can appear:
  
!    â€¢ In a structure definition, before the open brace;
!    â€¢ In a global variable declaration, after the keyword â€˜staticâ€™ or
!      â€˜externâ€™; and
!    â€¢ In a structure field definition, before the name of the field.
  
   Here are some examples of marking simple data structures and globals.
  
*************** are still necessary, though: 'GTY(())'.
*** 46458,46491 ****
       static GTY(()) struct TAG *LIST;   /* points to GC memory */
       static GTY(()) int COUNTER;        /* save counter in a PCH */
  
!  The parser understands simple typedefs such as 'typedef struct TAG
! *NAME;' and 'typedef int NAME;'.  These don't need to be marked.
  
!  However, in combination with GTY, avoid using typedefs such as 'typedef
! int_hash<...> NAME;' for these generate infinite-recursion code.  See
! PR103157 (https://gcc.gnu.org/PR103157).  Instead, you may use 'struct
! NAME : int_hash<...> {};', for example.
  
!  Since 'gengtype''s understanding of C++ is limited, there are several
  constructs and declarations that are not supported inside
  classes/structures marked for automatic GC code generation.  The
! following C++ constructs produce a 'gengtype' error on
  structures/classes marked for automatic GC code generation:
  
!    * Type definitions inside classes/structures are not supported.
!    * Enumerations inside classes/structures are not supported.
  
   If you have a class or structure using any of the above constructs, you
! need to mark that class as 'GTY ((user))' and provide your own marking
  routines (see section *note User GC:: for details).
  
   It is always valid to include function definitions inside classes.
! Those are always ignored by 'gengtype', as it only cares about data
  members.
  
  * Menu:
  
! * GTY Options::         What goes inside a 'GTY(())'.
  * Inheritance and GTY:: Adding GTY to a class hierarchy.
  * User GC::		Adding user-provided GC marking routines.
  * GGC Roots::           Making global variables GGC roots.
--- 46462,46495 ----
       static GTY(()) struct TAG *LIST;   /* points to GC memory */
       static GTY(()) int COUNTER;        /* save counter in a PCH */
  
!  The parser understands simple typedefs such as â€˜typedef struct TAG
! *NAME;â€™ and â€˜typedef int NAME;â€™.  These don't need to be marked.
  
!  However, in combination with GTY, avoid using typedefs such as â€˜typedef
! int_hash<...> NAME;â€™ for these generate infinite-recursion code.  See
! PR103157 (https://gcc.gnu.org/PR103157).  Instead, you may use â€˜struct
! NAME : int_hash<...> {};â€™, for example.
  
!  Since â€˜gengtypeâ€™'s understanding of C++ is limited, there are several
  constructs and declarations that are not supported inside
  classes/structures marked for automatic GC code generation.  The
! following C++ constructs produce a â€˜gengtypeâ€™ error on
  structures/classes marked for automatic GC code generation:
  
!    â€¢ Type definitions inside classes/structures are not supported.
!    â€¢ Enumerations inside classes/structures are not supported.
  
   If you have a class or structure using any of the above constructs, you
! need to mark that class as â€˜GTY ((user))â€™ and provide your own marking
  routines (see section *note User GC:: for details).
  
   It is always valid to include function definitions inside classes.
! Those are always ignored by â€˜gengtypeâ€™, as it only cares about data
  members.
  
  * Menu:
  
! * GTY Options::         What goes inside a â€˜GTY(())â€™.
  * Inheritance and GTY:: Adding GTY to a class hierarchy.
  * User GC::		Adding user-provided GC marking routines.
  * GGC Roots::           Making global variables GGC roots.
*************** members.
*** 46496,46524 ****
  
  File: gccint.info,  Node: GTY Options,  Next: Inheritance and GTY,  Up: Type Information
  
! 22.1 The Inside of a 'GTY(())'
  ==============================
  
  Sometimes the C code is not enough to fully describe the type structure.
! Extra information can be provided with 'GTY' options and additional
  markers.  Some options take a parameter, which may be either a string or
  a type name, depending on the parameter.  If an option takes no
  parameter, it is acceptable either to omit the parameter entirely, or to
! provide an empty string as a parameter.  For example, 'GTY ((skip))' and
! 'GTY ((skip ("")))' are equivalent.
  
   When the parameter is a string, often it is a fragment of C code.  Four
  special escapes may be used in these strings, to refer to pieces of the
  data structure being marked:
  
! '%h'
       The current structure.
! '%1'
       The structure that immediately contains the current structure.
! '%0'
       The outermost structure that contains the current structure.
! '%a'
!      A partial expression of the form '[i1][i2]...' that indexes the
       array item currently being marked.
  
   For instance, suppose that you have a structure of the form
--- 46500,46528 ----
  
  File: gccint.info,  Node: GTY Options,  Next: Inheritance and GTY,  Up: Type Information
  
! 22.1 The Inside of a â€˜GTY(())â€™
  ==============================
  
  Sometimes the C code is not enough to fully describe the type structure.
! Extra information can be provided with â€˜GTYâ€™ options and additional
  markers.  Some options take a parameter, which may be either a string or
  a type name, depending on the parameter.  If an option takes no
  parameter, it is acceptable either to omit the parameter entirely, or to
! provide an empty string as a parameter.  For example, â€˜GTY ((skip))â€™ and
! â€˜GTY ((skip ("")))â€™ are equivalent.
  
   When the parameter is a string, often it is a fragment of C code.  Four
  special escapes may be used in these strings, to refer to pieces of the
  data structure being marked:
  
! â€˜%hâ€™
       The current structure.
! â€˜%1â€™
       The structure that immediately contains the current structure.
! â€˜%0â€™
       The outermost structure that contains the current structure.
! â€˜%aâ€™
!      A partial expression of the form â€˜[i1][i2]...â€™ that indexes the
       array item currently being marked.
  
   For instance, suppose that you have a structure of the form
*************** data structure being marked:
*** 46528,46536 ****
       struct B {
         struct A foo[12];
       };
! and 'b' is a variable of type 'struct B'.  When marking 'b.foo[11]',
! '%h' would expand to 'b.foo[11]', '%0' and '%1' would both expand to
! 'b', and '%a' would expand to '[11]'.
  
   As in ordinary C, adjacent strings will be concatenated; this is
  helpful when you have a complicated expression.
--- 46532,46540 ----
       struct B {
         struct A foo[12];
       };
! and â€˜bâ€™ is a variable of type â€˜struct Bâ€™.  When marking â€˜b.foo[11]â€™,
! â€˜%hâ€™ would expand to â€˜b.foo[11]â€™, â€˜%0â€™ and â€˜%1â€™ would both expand to
! â€˜bâ€™, and â€˜%aâ€™ would expand to â€˜[11]â€™.
  
   As in ordinary C, adjacent strings will be concatenated; this is
  helpful when you have a complicated expression.
*************** helpful when you have a complicated expr
*** 46540,46546 ****
  
   The available options are:
  
! 'length ("EXPRESSION")'
  
       There are two places the type machinery will need to be explicitly
       told the length of an array of non-atomic objects.  The first case
--- 46544,46550 ----
  
   The available options are:
  
! â€˜length ("EXPRESSION")â€™
  
       There are two places the type machinery will need to be explicitly
       told the length of an array of non-atomic objects.  The first case
*************** helpful when you have a complicated expr
*** 46550,46584 ****
              rtx GTY ((length ("%h.num_elem"))) elem[1];
            };
  
!      In this case, the 'length' option is used to override the specified
!      array length (which should usually be '1').  The parameter of the
       option is a fragment of C code that calculates the length.
  
       The second case is when a structure or a global variable contains a
       pointer to an array, like this:
            struct gimple_omp_for_iter * GTY((length ("%h.collapse"))) iter;
!      In this case, 'iter' has been allocated by writing something like
              x->iter = ggc_alloc_cleared_vec_gimple_omp_for_iter (collapse);
!      and the 'collapse' provides the length of the field.
  
!      This second use of 'length' also works on global variables, like:
       static GTY((length("reg_known_value_size"))) rtx *reg_known_value;
  
!      Note that the 'length' option is only meant for use with arrays of
       non-atomic objects, that is, objects that contain pointers pointing
       to other GTY-managed objects.  For other GC-allocated arrays and
!      strings you should use 'atomic' or 'string_length'.
  
! 'string_length ("EXPRESSION")'
  
       In order to simplify production of PCH, a structure member that is
!      a plain array of bytes (an optionally 'const' and/or 'unsigned'
!      'char *') is treated specially by the infrastructure.  Even if such
       an array has not been allocated in GC-controlled memory, it will
       still be written properly into a PCH. The machinery responsible for
       this needs to know the length of the data; by default, the length
!      is determined by calling 'strlen' on the pointer.  The
!      'string_length' option specifies an alternate way to determine the
       length, such as by inspecting another struct member:
  
            struct GTY(()) non_terminated_string {
--- 46554,46588 ----
              rtx GTY ((length ("%h.num_elem"))) elem[1];
            };
  
!      In this case, the â€˜lengthâ€™ option is used to override the specified
!      array length (which should usually be â€˜1â€™).  The parameter of the
       option is a fragment of C code that calculates the length.
  
       The second case is when a structure or a global variable contains a
       pointer to an array, like this:
            struct gimple_omp_for_iter * GTY((length ("%h.collapse"))) iter;
!      In this case, â€˜iterâ€™ has been allocated by writing something like
              x->iter = ggc_alloc_cleared_vec_gimple_omp_for_iter (collapse);
!      and the â€˜collapseâ€™ provides the length of the field.
  
!      This second use of â€˜lengthâ€™ also works on global variables, like:
       static GTY((length("reg_known_value_size"))) rtx *reg_known_value;
  
!      Note that the â€˜lengthâ€™ option is only meant for use with arrays of
       non-atomic objects, that is, objects that contain pointers pointing
       to other GTY-managed objects.  For other GC-allocated arrays and
!      strings you should use â€˜atomicâ€™ or â€˜string_lengthâ€™.
  
! â€˜string_length ("EXPRESSION")â€™
  
       In order to simplify production of PCH, a structure member that is
!      a plain array of bytes (an optionally â€˜constâ€™ and/or â€˜unsignedâ€™
!      â€˜char *â€™) is treated specially by the infrastructure.  Even if such
       an array has not been allocated in GC-controlled memory, it will
       still be written properly into a PCH. The machinery responsible for
       this needs to know the length of the data; by default, the length
!      is determined by calling â€˜strlenâ€™ on the pointer.  The
!      â€˜string_lengthâ€™ option specifies an alternate way to determine the
       length, such as by inspecting another struct member:
  
            struct GTY(()) non_terminated_string {
*************** helpful when you have a complicated expr
*** 46587,46593 ****
            };
  
       Similarly, this is useful for (regular NUL-terminated) strings with
!      NUL characters embedded (that the default 'strlen' use would run
       afoul of):
  
            struct GTY(()) multi_string {
--- 46591,46597 ----
            };
  
       Similarly, this is useful for (regular NUL-terminated) strings with
!      NUL characters embedded (that the default â€˜strlenâ€™ use would run
       afoul of):
  
            struct GTY(()) multi_string {
*************** helpful when you have a complicated expr
*** 46595,46618 ****
              size_t len;
            };
  
!      The 'string_length' option currently is not supported for (fields
       in) global variables.
  
! 'skip'
  
!      If 'skip' is applied to a field, the type machinery will ignore it.
       This is somewhat dangerous; the only safe use is in a union when
       one field really isn't ever used.
  
! 'callback'
  
!      'callback' should be applied to fields with pointer to function
!      type and causes the field to be ignored similarly to 'skip', except
       when writing PCH and the field is non-NULL it will remember the
       field's address for relocation purposes if the process writing PCH
       has different load base from a process reading PCH.
  
! 'for_user'
  
       Use this to mark types that need to be marked by user gc routines,
       but are not refered to in a template argument.  So if you have some
--- 46599,46622 ----
              size_t len;
            };
  
!      The â€˜string_lengthâ€™ option currently is not supported for (fields
       in) global variables.
  
! â€˜skipâ€™
  
!      If â€˜skipâ€™ is applied to a field, the type machinery will ignore it.
       This is somewhat dangerous; the only safe use is in a union when
       one field really isn't ever used.
  
! â€˜callbackâ€™
  
!      â€˜callbackâ€™ should be applied to fields with pointer to function
!      type and causes the field to be ignored similarly to â€˜skipâ€™, except
       when writing PCH and the field is non-NULL it will remember the
       field's address for relocation purposes if the process writing PCH
       has different load base from a process reading PCH.
  
! â€˜for_userâ€™
  
       Use this to mark types that need to be marked by user gc routines,
       but are not refered to in a template argument.  So if you have some
*************** helpful when you have a complicated expr
*** 46620,46640 ****
       for_user option so that the marking functions for T1 can call non
       mangled functions to mark T2.
  
! 'desc ("EXPRESSION")'
! 'tag ("CONSTANT")'
! 'default'
  
!      The type machinery needs to be told which field of a 'union' is
       currently active.  This is done by giving each field a constant
!      'tag' value, and then specifying a discriminator using 'desc'.  The
!      value of the expression given by 'desc' is compared against each
!      'tag' value, each of which should be different.  If no 'tag' is
!      matched, the field marked with 'default' is used if there is one,
       otherwise no field in the union will be marked.
  
!      In the 'desc' option, the "current structure" is the union that it
!      discriminates.  Use '%1' to mean the structure containing it.
!      There are no escapes available to the 'tag' option, since it is a
       constant.
  
       For example,
--- 46624,46644 ----
       for_user option so that the marking functions for T1 can call non
       mangled functions to mark T2.
  
! â€˜desc ("EXPRESSION")â€™
! â€˜tag ("CONSTANT")â€™
! â€˜defaultâ€™
  
!      The type machinery needs to be told which field of a â€˜unionâ€™ is
       currently active.  This is done by giving each field a constant
!      â€˜tagâ€™ value, and then specifying a discriminator using â€˜descâ€™.  The
!      value of the expression given by â€˜descâ€™ is compared against each
!      â€˜tagâ€™ value, each of which should be different.  If no â€˜tagâ€™ is
!      matched, the field marked with â€˜defaultâ€™ is used if there is one,
       otherwise no field in the union will be marked.
  
!      In the â€˜descâ€™ option, the "current structure" is the union that it
!      discriminates.  Use â€˜%1â€™ to mean the structure containing it.
!      There are no escapes available to the â€˜tagâ€™ option, since it is a
       constant.
  
       For example,
*************** helpful when you have a complicated expr
*** 46649,46697 ****
            };
  
       In this example, the value of BINDING_HAS_LEVEL_P when applied to a
!      'struct tree_binding *' is presumed to be 0 or 1.  If 1, the type
!      mechanism will treat the field 'level' as being present and if 0,
!      will treat the field 'scope' as being present.
  
!      The 'desc' and 'tag' options can also be used for inheritance to
       denote which subclass an instance is.  See *note Inheritance and
       GTY:: for more information.
  
! 'cache'
  
!      When the 'cache' option is applied to a global variable
       gt_cleare_cache is called on that variable between the mark and
       sweep phases of garbage collection.  The gt_clear_cache function is
       free to mark blocks as used, or to clear pointers in the variable.
  
!      In a hash table, the 'gt_cleare_cache' function discards entries if
       the key is not marked, or marks the value if the key is marked.
  
!      Note that caches should generally use 'deletable' instead; 'cache'
       is only preferable if the value is impractical to recompute from
       the key when needed.
  
!      The 'cache' option can have an optional argument, name of the
!      function which should be called before 'gt_cleare_cache'.  This can
       be useful if the hash table needs to be traversed and mark some
!      pointers before 'gt_cleare_cache' could clear slots in it.
  
! 'deletable'
  
!      'deletable', when applied to a global variable, indicates that when
       garbage collection runs, there's no need to mark anything pointed
!      to by this variable, it can just be set to 'NULL' instead.  This is
       used to keep a list of free structures around for re-use.
  
! 'maybe_undef'
  
!      When applied to a field, 'maybe_undef' indicates that it's OK if
       the structure that this fields points to is never defined, so long
!      as this field is always 'NULL'.  This is used to avoid requiring
       backends to define certain optional structures.  It doesn't work
       with language frontends.
  
! 'nested_ptr (TYPE, "TO EXPRESSION", "FROM EXPRESSION")'
  
       The type machinery expects all pointers to point to the start of an
       object.  Sometimes for abstraction purposes it's convenient to have
--- 46653,46701 ----
            };
  
       In this example, the value of BINDING_HAS_LEVEL_P when applied to a
!      â€˜struct tree_binding *â€™ is presumed to be 0 or 1.  If 1, the type
!      mechanism will treat the field â€˜levelâ€™ as being present and if 0,
!      will treat the field â€˜scopeâ€™ as being present.
  
!      The â€˜descâ€™ and â€˜tagâ€™ options can also be used for inheritance to
       denote which subclass an instance is.  See *note Inheritance and
       GTY:: for more information.
  
! â€˜cacheâ€™
  
!      When the â€˜cacheâ€™ option is applied to a global variable
       gt_cleare_cache is called on that variable between the mark and
       sweep phases of garbage collection.  The gt_clear_cache function is
       free to mark blocks as used, or to clear pointers in the variable.
  
!      In a hash table, the â€˜gt_cleare_cacheâ€™ function discards entries if
       the key is not marked, or marks the value if the key is marked.
  
!      Note that caches should generally use â€˜deletableâ€™ instead; â€˜cacheâ€™
       is only preferable if the value is impractical to recompute from
       the key when needed.
  
!      The â€˜cacheâ€™ option can have an optional argument, name of the
!      function which should be called before â€˜gt_cleare_cacheâ€™.  This can
       be useful if the hash table needs to be traversed and mark some
!      pointers before â€˜gt_cleare_cacheâ€™ could clear slots in it.
  
! â€˜deletableâ€™
  
!      â€˜deletableâ€™, when applied to a global variable, indicates that when
       garbage collection runs, there's no need to mark anything pointed
!      to by this variable, it can just be set to â€˜NULLâ€™ instead.  This is
       used to keep a list of free structures around for re-use.
  
! â€˜maybe_undefâ€™
  
!      When applied to a field, â€˜maybe_undefâ€™ indicates that it's OK if
       the structure that this fields points to is never defined, so long
!      as this field is always â€˜NULLâ€™.  This is used to avoid requiring
       backends to define certain optional structures.  It doesn't work
       with language frontends.
  
! â€˜nested_ptr (TYPE, "TO EXPRESSION", "FROM EXPRESSION")â€™
  
       The type machinery expects all pointers to point to the start of an
       object.  Sometimes for abstraction purposes it's convenient to have
*************** helpful when you have a complicated expr
*** 46700,46731 ****
       pointers can still be used.  TYPE is the type of the original
       object, the TO EXPRESSION returns the pointer given the original
       object, and the FROM EXPRESSION returns the original object given
!      the pointer.  The pointer will be available using the '%h' escape.
  
! 'chain_next ("EXPRESSION")'
! 'chain_prev ("EXPRESSION")'
! 'chain_circular ("EXPRESSION")'
  
       It's helpful for the type machinery to know if objects are often
       chained together in long lists; this lets it generate code that
       uses less stack space by iterating along the list instead of
!      recursing down it.  'chain_next' is an expression for the next item
!      in the list, 'chain_prev' is an expression for the previous item.
!      For singly linked lists, use only 'chain_next'; for doubly linked
       lists, use both.  The machinery requires that taking the next item
!      of the previous item gives the original item.  'chain_circular' is
!      similar to 'chain_next', but can be used for circular single linked
       lists.
  
! 'reorder ("FUNCTION NAME")'
  
       Some data structures depend on the relative ordering of pointers.
       If the precompiled header machinery needs to change that ordering,
!      it will call the function referenced by the 'reorder' option,
       before changing the pointers in the object that's pointed to by the
       field the option applies to.  The function must take four
       arguments, with the signature
!      'void *, void *, gt_pointer_operator, void *'.  The first parameter
       is a pointer to the structure that contains the object being
       updated, or the object itself if there is no containing structure.
       The second parameter is a cookie that should be ignored.  The third
--- 46704,46735 ----
       pointers can still be used.  TYPE is the type of the original
       object, the TO EXPRESSION returns the pointer given the original
       object, and the FROM EXPRESSION returns the original object given
!      the pointer.  The pointer will be available using the â€˜%hâ€™ escape.
  
! â€˜chain_next ("EXPRESSION")â€™
! â€˜chain_prev ("EXPRESSION")â€™
! â€˜chain_circular ("EXPRESSION")â€™
  
       It's helpful for the type machinery to know if objects are often
       chained together in long lists; this lets it generate code that
       uses less stack space by iterating along the list instead of
!      recursing down it.  â€˜chain_nextâ€™ is an expression for the next item
!      in the list, â€˜chain_prevâ€™ is an expression for the previous item.
!      For singly linked lists, use only â€˜chain_nextâ€™; for doubly linked
       lists, use both.  The machinery requires that taking the next item
!      of the previous item gives the original item.  â€˜chain_circularâ€™ is
!      similar to â€˜chain_nextâ€™, but can be used for circular single linked
       lists.
  
! â€˜reorder ("FUNCTION NAME")â€™
  
       Some data structures depend on the relative ordering of pointers.
       If the precompiled header machinery needs to change that ordering,
!      it will call the function referenced by the â€˜reorderâ€™ option,
       before changing the pointers in the object that's pointed to by the
       field the option applies to.  The function must take four
       arguments, with the signature
!      â€˜void *, void *, gt_pointer_operator, void *â€™.  The first parameter
       is a pointer to the structure that contains the object being
       updated, or the object itself if there is no containing structure.
       The second parameter is a cookie that should be ignored.  The third
*************** helpful when you have a complicated expr
*** 46734,46746 ****
       passed to the second parameter.
  
       PCH cannot handle data structures that depend on the absolute
!      values of pointers.  'reorder' functions can be expensive.  When
       possible, it is better to depend on properties of the data, like an
       ID number or the hash of a string instead.
  
! 'atomic'
  
!      The 'atomic' option can only be used with pointers.  It informs the
       GC machinery that the memory that the pointer points to does not
       contain any pointers, and hence it should be treated by the GC and
       PCH machinery as an "atomic" block of memory that does not need to
--- 46738,46750 ----
       passed to the second parameter.
  
       PCH cannot handle data structures that depend on the absolute
!      values of pointers.  â€˜reorderâ€™ functions can be expensive.  When
       possible, it is better to depend on properties of the data, like an
       ID number or the hash of a string instead.
  
! â€˜atomicâ€™
  
!      The â€˜atomicâ€™ option can only be used with pointers.  It informs the
       GC machinery that the memory that the pointer points to does not
       contain any pointers, and hence it should be treated by the GC and
       PCH machinery as an "atomic" block of memory that does not need to
*************** helpful when you have a complicated expr
*** 46749,46762 ****
       reachable (when marking pointers for GC) or to relocate them (when
       writing a PCH file).
  
!      The 'atomic' option differs from the 'skip' option.  'atomic' keeps
       the memory under Garbage Collection, but makes the GC ignore the
!      contents of the memory.  'skip' is more drastic in that it causes
       the pointer and the memory to be completely ignored by the Garbage
!      Collector.  So, memory marked as 'atomic' is automatically freed
!      when no longer reachable, while memory marked as 'skip' is not.
  
!      The 'atomic' option must be used with great care, because all sorts
       of problem can occur if used incorrectly, that is, if the memory
       the pointer points to does actually contain a pointer.
  
--- 46753,46766 ----
       reachable (when marking pointers for GC) or to relocate them (when
       writing a PCH file).
  
!      The â€˜atomicâ€™ option differs from the â€˜skipâ€™ option.  â€˜atomicâ€™ keeps
       the memory under Garbage Collection, but makes the GC ignore the
!      contents of the memory.  â€˜skipâ€™ is more drastic in that it causes
       the pointer and the memory to be completely ignored by the Garbage
!      Collector.  So, memory marked as â€˜atomicâ€™ is automatically freed
!      when no longer reachable, while memory marked as â€˜skipâ€™ is not.
  
!      The â€˜atomicâ€™ option must be used with great care, because all sorts
       of problem can occur if used incorrectly, that is, if the memory
       the pointer points to does actually contain a pointer.
  
*************** helpful when you have a complicated expr
*** 46765,46794 ****
              int number_of_elements;
              unsigned int * GTY ((atomic)) elements;
            };
!      In this case, 'elements' is a pointer under GC, and the memory it
       points to needs to be allocated using the Garbage Collector, and
       will be freed automatically by the Garbage Collector when it is no
       longer referenced.  But the memory that the pointer points to is an
!      array of 'unsigned int' elements, and the GC must not try to scan
       it to find pointers to mark or relocate, which is why it is marked
!      with the 'atomic' option.
  
       Note that, currently, global variables cannot be marked with
!      'atomic'; only fields of a struct can.  This is a known limitation.
!      It would be useful to be able to mark global pointers with 'atomic'
       to make the PCH machinery aware of them so that they are saved and
       restored correctly to PCH files.
  
! 'special ("NAME")'
  
!      The 'special' option is used to mark types that have to be dealt
       with by special case machinery.  The parameter is the name of the
!      special case.  See 'gengtype.cc' for further details.  Avoid adding
       new special cases unless there is no other alternative.
  
! 'user'
  
!      The 'user' option indicates that the code to mark structure fields
       is completely handled by user-provided routines.  See section *note
       User GC:: for details on what functions need to be provided.
  
--- 46769,46798 ----
              int number_of_elements;
              unsigned int * GTY ((atomic)) elements;
            };
!      In this case, â€˜elementsâ€™ is a pointer under GC, and the memory it
       points to needs to be allocated using the Garbage Collector, and
       will be freed automatically by the Garbage Collector when it is no
       longer referenced.  But the memory that the pointer points to is an
!      array of â€˜unsigned intâ€™ elements, and the GC must not try to scan
       it to find pointers to mark or relocate, which is why it is marked
!      with the â€˜atomicâ€™ option.
  
       Note that, currently, global variables cannot be marked with
!      â€˜atomicâ€™; only fields of a struct can.  This is a known limitation.
!      It would be useful to be able to mark global pointers with â€˜atomicâ€™
       to make the PCH machinery aware of them so that they are saved and
       restored correctly to PCH files.
  
! â€˜special ("NAME")â€™
  
!      The â€˜specialâ€™ option is used to mark types that have to be dealt
       with by special case machinery.  The parameter is the name of the
!      special case.  See â€˜gengtype.ccâ€™ for further details.  Avoid adding
       new special cases unless there is no other alternative.
  
! â€˜userâ€™
  
!      The â€˜userâ€™ option indicates that the code to mark structure fields
       is completely handled by user-provided routines.  See section *note
       User GC:: for details on what functions need to be provided.
  
*************** File: gccint.info,  Node: Inheritance an
*** 46801,46811 ****
  gengtype has some support for simple class hierarchies.  You can use
  this to have gengtype autogenerate marking routines, provided:
  
!    * There must be a concrete base class, with a discriminator
       expression that can be used to identify which subclass an instance
       is.
!    * Only single inheritance is used.
!    * None of the classes within the hierarchy are templates.
  
   If your class hierarchy does not fit in this pattern, you must use
  *note User GC:: instead.
--- 46805,46815 ----
  gengtype has some support for simple class hierarchies.  You can use
  this to have gengtype autogenerate marking routines, provided:
  
!    â€¢ There must be a concrete base class, with a discriminator
       expression that can be used to identify which subclass an instance
       is.
!    â€¢ Only single inheritance is used.
!    â€¢ None of the classes within the hierarchy are templates.
  
   If your class hierarchy does not fit in this pattern, you must use
  *note User GC:: instead.
*************** this to have gengtype autogenerate marki
*** 46814,46820 ****
  "desc" option.  Each concrete subclass must use the "tag" option to
  identify which value of the discriminator it corresponds to.
  
!  Every class in the hierarchy must have a 'GTY(())' marker, as gengtype
  will only attempt to parse classes that have such a marker (1).
  
       class GTY((desc("%h.kind"), tag("0"))) example_base
--- 46818,46824 ----
  "desc" option.  Each concrete subclass must use the "tag" option to
  identify which value of the discriminator it corresponds to.
  
!  Every class in the hierarchy must have a â€˜GTY(())â€™ marker, as gengtype
  will only attempt to parse classes that have such a marker (1).
  
       class GTY((desc("%h.kind"), tag("0"))) example_base
*************** is generated.  For these types, the user
*** 46858,46865 ****
  functions: one to act as a marker for garbage collection, and two
  functions to act as marker and pointer walker for pre-compiled headers.
  
!  Given a structure 'struct GTY((user)) my_struct', the following
! functions should be defined to mark 'my_struct':
  
       void gt_ggc_mx (my_struct *p)
       {
--- 46862,46869 ----
  functions: one to act as a marker for garbage collection, and two
  functions to act as marker and pointer walker for pre-compiled headers.
  
!  Given a structure â€˜struct GTY((user)) my_structâ€™, the following
! functions should be defined to mark â€˜my_structâ€™:
  
       void gt_ggc_mx (my_struct *p)
       {
*************** functions should be defined to mark 'my_
*** 46879,46906 ****
         op (&(tp->fld), NULL, cookie);
       }
  
!  In general, each marker 'M' should call 'M' for every pointer field in
  the structure.  Fields that are not allocated in GC or are not pointers
  must be ignored.
  
!  For embedded lists (e.g., structures with a 'next' or 'prev' pointer),
  the marker must follow the chain and mark every element in it.
  
!  Note that the rules for the pointer walker 'gt_pch_nx (my_struct *,
! gt_pointer_operator, void *)' are slightly different.  In this case, the
! operation 'op' must be applied to the _address_ of every pointer field.
  
  22.3.1 User-provided marking routines for template types
  --------------------------------------------------------
  
! When a template type 'TP' is marked with 'GTY', all instances of that
  type are considered user-provided types.  This means that the individual
! instances of 'TP' do not need to be marked with 'GTY'.  The user needs
  to provide template functions to mark all the fields of the type.
  
   The following code snippets represent all the functions that need to be
! provided.  Note that type 'TP' may reference to more than one type.  In
! these snippets, there is only one type 'T', but there could be more.
  
       template<typename T>
       void gt_ggc_mx (TP<T> *tp)
--- 46883,46910 ----
         op (&(tp->fld), NULL, cookie);
       }
  
!  In general, each marker â€˜Mâ€™ should call â€˜Mâ€™ for every pointer field in
  the structure.  Fields that are not allocated in GC or are not pointers
  must be ignored.
  
!  For embedded lists (e.g., structures with a â€˜nextâ€™ or â€˜prevâ€™ pointer),
  the marker must follow the chain and mark every element in it.
  
!  Note that the rules for the pointer walker â€˜gt_pch_nx (my_struct *,
! gt_pointer_operator, void *)â€™ are slightly different.  In this case, the
! operation â€˜opâ€™ must be applied to the _address_ of every pointer field.
  
  22.3.1 User-provided marking routines for template types
  --------------------------------------------------------
  
! When a template type â€˜TPâ€™ is marked with â€˜GTYâ€™, all instances of that
  type are considered user-provided types.  This means that the individual
! instances of â€˜TPâ€™ do not need to be marked with â€˜GTYâ€™.  The user needs
  to provide template functions to mark all the fields of the type.
  
   The following code snippets represent all the functions that need to be
! provided.  Note that type â€˜TPâ€™ may reference to more than one type.  In
! these snippets, there is only one type â€˜Tâ€™, but there could be more.
  
       template<typename T>
       void gt_ggc_mx (TP<T> *tp)
*************** these snippets, there is only one type '
*** 46941,46955 ****
   Support for user-defined types is currently limited.  The following
  restrictions apply:
  
!   1. Type 'TP' and all the argument types 'T' must be marked with 'GTY'.
  
!   2. Type 'TP' can only have type names in its argument list.
  
!   3. The pointer walker functions are different for 'TP<T>' and 'TP<T
!      *>'.  In the case of 'TP<T>', references to 'T' must be handled by
!      calling 'gt_pch_nx' (which will, in turn, walk all the pointers
!      inside fields of 'T').  In the case of 'TP<T *>', references to 'T
!      *' must be handled by calling the 'op' function on the address of
       the pointer (see the code snippets above).
  
  
--- 46945,46959 ----
   Support for user-defined types is currently limited.  The following
  restrictions apply:
  
!   1. Type â€˜TPâ€™ and all the argument types â€˜Tâ€™ must be marked with â€˜GTYâ€™.
  
!   2. Type â€˜TPâ€™ can only have type names in its argument list.
  
!   3. The pointer walker functions are different for â€˜TP<T>â€™ and â€˜TP<T
!      *>â€™.  In the case of â€˜TP<T>â€™, references to â€˜Tâ€™ must be handled by
!      calling â€˜gt_pch_nxâ€™ (which will, in turn, walk all the pointers
!      inside fields of â€˜Tâ€™).  In the case of â€˜TP<T *>â€™, references to â€˜T
!      *â€™ must be handled by calling the â€˜opâ€™ function on the address of
       the pointer (see the code snippets above).
  
  
*************** File: gccint.info,  Node: GGC Roots,  Ne
*** 46959,46974 ****
  ============================================
  
  In addition to keeping track of types, the type machinery also locates
! the global variables ("roots") that the garbage collector starts at.
  Roots must be declared using one of the following syntaxes:
  
!    * 'extern GTY(([OPTIONS])) TYPE NAME;'
!    * 'static GTY(([OPTIONS])) TYPE NAME;'
  The syntax
!    * 'GTY(([OPTIONS])) TYPE NAME;'
! is _not_ accepted.  There should be an 'extern' declaration of such a
  variable in a header somewhere--mark that, not the definition.  Or, if
! the variable is only used in one file, make it 'static'.
  
  
  File: gccint.info,  Node: Files,  Next: Invoking the garbage collector,  Prev: GGC Roots,  Up: Type Information
--- 46963,46978 ----
  ============================================
  
  In addition to keeping track of types, the type machinery also locates
! the global variables (â€œrootsâ€�) that the garbage collector starts at.
  Roots must be declared using one of the following syntaxes:
  
!    â€¢ â€˜extern GTY(([OPTIONS])) TYPE NAME;â€™
!    â€¢ â€˜static GTY(([OPTIONS])) TYPE NAME;â€™
  The syntax
!    â€¢ â€˜GTY(([OPTIONS])) TYPE NAME;â€™
! is _not_ accepted.  There should be an â€˜externâ€™ declaration of such a
  variable in a header somewhere--mark that, not the definition.  Or, if
! the variable is only used in one file, make it â€˜staticâ€™.
  
  
  File: gccint.info,  Node: Files,  Next: Invoking the garbage collector,  Prev: GGC Roots,  Up: Type Information
*************** File: gccint.info,  Node: Files,  Next:
*** 46976,47027 ****
  22.5 Source Files Containing Type Information
  =============================================
  
! Whenever you add 'GTY' markers to a source file that previously had
! none, or create a new source file containing 'GTY' markers, there are
  three things you need to do:
  
    1. You need to add the file to the list of source files the type
       machinery scans.  There are four cases:
  
         a. For a back-end file, this is usually done automatically; if
!           not, you should add it to 'target_gtfiles' in the appropriate
!           port's entries in 'config.gcc'.
  
         b. For files shared by all front ends, add the filename to the
!           'GTFILES' variable in 'Makefile.in'.
  
         c. For files that are part of one front end, add the filename to
!           the 'gtfiles' variable defined in the appropriate
!           'config-lang.in'.  Headers should appear before non-headers in
            this list.
  
         d. For files that are part of some but not all front ends, add
!           the filename to the 'gtfiles' variable of _all_ the front ends
            that use it.
  
    2. If the file was a header file, you'll need to check that it's
       included in the right place to be visible to the generated files.
       For a back-end header file, this should be done automatically.  For
       a front-end header file, it needs to be included by the same file
!      that includes 'gtype-LANG.h'.  For other header files, it needs to
!      be included in 'gtype-desc.cc', which is a generated file, so add
!      it to 'ifiles' in 'open_base_file' in 'gengtype.cc'.
  
       For source files that aren't header files, the machinery will
       generate a header file that should be included in the source file
!      you just changed.  The file will be called 'gt-PATH.h' where PATH
!      is the pathname relative to the 'gcc' directory with slashes
       replaced by -, so for example the header file to be included in
!      'cp/parser.cc' is called 'gt-cp-parser.h'.  The generated header
       file should be included after everything else in the source file.
  
   For language frontends, there is another file that needs to be included
! somewhere.  It will be called 'gtype-LANG.h', where LANG is the name of
  the subdirectory the language is contained in.
  
!  Plugins can add additional root tables.  Run the 'gengtype' utility in
! plugin mode as 'gengtype -P pluginout.h SOURCE-DIR FILE-LIST PLUGIN*.C'
! with your plugin files PLUGIN*.C using 'GTY' to generate the PLUGINOUT.H
  file.  The GCC build tree is needed to be present in that mode.
  
  
--- 46980,47031 ----
  22.5 Source Files Containing Type Information
  =============================================
  
! Whenever you add â€˜GTYâ€™ markers to a source file that previously had
! none, or create a new source file containing â€˜GTYâ€™ markers, there are
  three things you need to do:
  
    1. You need to add the file to the list of source files the type
       machinery scans.  There are four cases:
  
         a. For a back-end file, this is usually done automatically; if
!           not, you should add it to â€˜target_gtfilesâ€™ in the appropriate
!           port's entries in â€˜config.gccâ€™.
  
         b. For files shared by all front ends, add the filename to the
!           â€˜GTFILESâ€™ variable in â€˜Makefile.inâ€™.
  
         c. For files that are part of one front end, add the filename to
!           the â€˜gtfilesâ€™ variable defined in the appropriate
!           â€˜config-lang.inâ€™.  Headers should appear before non-headers in
            this list.
  
         d. For files that are part of some but not all front ends, add
!           the filename to the â€˜gtfilesâ€™ variable of _all_ the front ends
            that use it.
  
    2. If the file was a header file, you'll need to check that it's
       included in the right place to be visible to the generated files.
       For a back-end header file, this should be done automatically.  For
       a front-end header file, it needs to be included by the same file
!      that includes â€˜gtype-LANG.hâ€™.  For other header files, it needs to
!      be included in â€˜gtype-desc.ccâ€™, which is a generated file, so add
!      it to â€˜ifilesâ€™ in â€˜open_base_fileâ€™ in â€˜gengtype.ccâ€™.
  
       For source files that aren't header files, the machinery will
       generate a header file that should be included in the source file
!      you just changed.  The file will be called â€˜gt-PATH.hâ€™ where PATH
!      is the pathname relative to the â€˜gccâ€™ directory with slashes
       replaced by -, so for example the header file to be included in
!      â€˜cp/parser.ccâ€™ is called â€˜gt-cp-parser.hâ€™.  The generated header
       file should be included after everything else in the source file.
  
   For language frontends, there is another file that needs to be included
! somewhere.  It will be called â€˜gtype-LANG.hâ€™, where LANG is the name of
  the subdirectory the language is contained in.
  
!  Plugins can add additional root tables.  Run the â€˜gengtypeâ€™ utility in
! plugin mode as â€˜gengtype -P pluginout.h SOURCE-DIR FILE-LIST PLUGIN*.Câ€™
! with your plugin files PLUGIN*.C using â€˜GTYâ€™ to generate the PLUGINOUT.H
  file.  The GCC build tree is needed to be present in that mode.
  
  
*************** File: gccint.info,  Node: Invoking the g
*** 47033,47053 ****
  The GCC garbage collector GGC is only invoked explicitly.  In contrast
  with many other garbage collectors, it is not implicitly invoked by
  allocation routines when a lot of memory has been consumed.  So the only
! way to have GGC reclaim storage is to call the 'ggc_collect' function
! explicitly.  With MODE 'GGC_COLLECT_FORCE' or otherwise (default
! 'GGC_COLLECT_HEURISTIC') when the internal heuristic decides to collect,
  this call is potentially an expensive operation, as it may have to scan
  the entire heap.  Beware that local variables (on the GCC call stack)
  are not followed by such an invocation (as many other garbage collectors
! do): you should reference all your data from static or external 'GTY'-ed
! variables, and it is advised to call 'ggc_collect' with a shallow call
  stack.  The GGC is an exact mark and sweep garbage collector (so it does
  not scan the call stack for pointers).  In practice GCC passes don't
! often call 'ggc_collect' themselves, because it is called by the pass
  manager between passes.
  
!  At the time of the 'ggc_collect' call all pointers in the GC-marked
! structures must be valid or 'NULL'.  In practice this means that there
  should not be uninitialized pointer fields in the structures even if
  your code never reads or writes those fields at a particular instance.
  One way to ensure this is to use cleared versions of allocators unless
--- 47037,47057 ----
  The GCC garbage collector GGC is only invoked explicitly.  In contrast
  with many other garbage collectors, it is not implicitly invoked by
  allocation routines when a lot of memory has been consumed.  So the only
! way to have GGC reclaim storage is to call the â€˜ggc_collectâ€™ function
! explicitly.  With MODE â€˜GGC_COLLECT_FORCEâ€™ or otherwise (default
! â€˜GGC_COLLECT_HEURISTICâ€™) when the internal heuristic decides to collect,
  this call is potentially an expensive operation, as it may have to scan
  the entire heap.  Beware that local variables (on the GCC call stack)
  are not followed by such an invocation (as many other garbage collectors
! do): you should reference all your data from static or external â€˜GTYâ€™-ed
! variables, and it is advised to call â€˜ggc_collectâ€™ with a shallow call
  stack.  The GGC is an exact mark and sweep garbage collector (so it does
  not scan the call stack for pointers).  In practice GCC passes don't
! often call â€˜ggc_collectâ€™ themselves, because it is called by the pass
  manager between passes.
  
!  At the time of the â€˜ggc_collectâ€™ call all pointers in the GC-marked
! structures must be valid or â€˜NULLâ€™.  In practice this means that there
  should not be uninitialized pointer fields in the structures even if
  your code never reads or writes those fields at a particular instance.
  One way to ensure this is to use cleared versions of allocators unless
*************** With the current garbage collector imple
*** 47063,47080 ****
  show up as GCC compilation errors.  Some of the most commonly
  encountered issues are described below.
  
!    * Gengtype does not produce allocators for a 'GTY'-marked type.
       Gengtype checks if there is at least one possible path from GC
       roots to at least one instance of each type before outputting
!      allocators.  If there is no such path, the 'GTY' markers will be
       ignored and no allocators will be output.  Solve this by making
       sure that there exists at least one such path.  If creating it is
       unfeasible or raises a "code smell", consider if you really must
       use GC for allocating such type.
  
!    * Link-time errors about undefined 'gt_ggc_r_foo_bar' and
!      similarly-named symbols.  Check if your 'foo_bar' source file has
!      '#include "gt-foo_bar.h"' as its very last line.
  
  
  File: gccint.info,  Node: Plugins,  Next: LTO,  Prev: Type Information,  Up: Top
--- 47067,47084 ----
  show up as GCC compilation errors.  Some of the most commonly
  encountered issues are described below.
  
!    â€¢ Gengtype does not produce allocators for a â€˜GTYâ€™-marked type.
       Gengtype checks if there is at least one possible path from GC
       roots to at least one instance of each type before outputting
!      allocators.  If there is no such path, the â€˜GTYâ€™ markers will be
       ignored and no allocators will be output.  Solve this by making
       sure that there exists at least one such path.  If creating it is
       unfeasible or raises a "code smell", consider if you really must
       use GC for allocating such type.
  
!    â€¢ Link-time errors about undefined â€˜gt_ggc_r_foo_barâ€™ and
!      similarly-named symbols.  Check if your â€˜foo_barâ€™ source file has
!      â€˜#include "gt-foo_bar.h"â€™ as its very last line.
  
  
  File: gccint.info,  Node: Plugins,  Next: LTO,  Prev: Type Information,  Up: Top
*************** File: gccint.info,  Node: Plugins loadin
*** 47110,47136 ****
  23.1 Loading Plugins
  ====================
  
! Plugins are supported on platforms that support '-ldl -rdynamic' as well
! as Windows/MinGW. They are loaded by the compiler using 'dlopen' or
  equivalent and invoked at pre-determined locations in the compilation
  process.
  
   Plugins are loaded with
  
!  '-fplugin=/path/to/NAME.EXT' '-fplugin-arg-NAME-KEY1[=VALUE1]'
  
   Where NAME is the plugin name and EXT is the platform-specific dynamic
! library extension.  It should be 'dll' on Windows/MinGW, 'dylib' on
! Darwin/macOS, and 'so' on all other platforms.  The plugin arguments are
  parsed by GCC and passed to respective plugins as key-value pairs.
! Multiple plugins can be invoked by specifying multiple '-fplugin'
  arguments.
  
   A plugin can be simply given by its short name (no dots or slashes).
! When simply passing '-fplugin=NAME', the plugin is loaded from the
! 'plugin' directory, so '-fplugin=NAME' is the same as '-fplugin=`gcc
! -print-file-name=plugin`/NAME.EXT', using backquote shell syntax to
! query the 'plugin' directory.
  
  
  File: gccint.info,  Node: Plugin API,  Next: Plugins pass,  Prev: Plugins loading,  Up: Plugins
--- 47114,47140 ----
  23.1 Loading Plugins
  ====================
  
! Plugins are supported on platforms that support â€˜-ldl -rdynamicâ€™ as well
! as Windows/MinGW. They are loaded by the compiler using â€˜dlopenâ€™ or
  equivalent and invoked at pre-determined locations in the compilation
  process.
  
   Plugins are loaded with
  
!  â€˜-fplugin=/path/to/NAME.EXTâ€™ â€˜-fplugin-arg-NAME-KEY1[=VALUE1]â€™
  
   Where NAME is the plugin name and EXT is the platform-specific dynamic
! library extension.  It should be â€˜dllâ€™ on Windows/MinGW, â€˜dylibâ€™ on
! Darwin/macOS, and â€˜soâ€™ on all other platforms.  The plugin arguments are
  parsed by GCC and passed to respective plugins as key-value pairs.
! Multiple plugins can be invoked by specifying multiple â€˜-fpluginâ€™
  arguments.
  
   A plugin can be simply given by its short name (no dots or slashes).
! When simply passing â€˜-fplugin=NAMEâ€™, the plugin is loaded from the
! â€˜pluginâ€™ directory, so â€˜-fplugin=NAMEâ€™ is the same as â€˜-fplugin=`gcc
! -print-file-name=plugin`/NAME.EXTâ€™, using backquote shell syntax to
! query the â€˜pluginâ€™ directory.
  
  
  File: gccint.info,  Node: Plugin API,  Next: Plugins pass,  Prev: Plugins loading,  Up: Plugins
*************** File: gccint.info,  Node: Plugin API,  N
*** 47139,47154 ****
  ===============
  
  Plugins are activated by the compiler at specific events as defined in
! 'gcc-plugin.h'.  For each event of interest, the plugin should call
! 'register_callback' specifying the name of the event and address of the
  callback function that will handle that event.
  
!  The header 'gcc-plugin.h' must be the first gcc header to be included.
  
  23.2.1 Plugin license check
  ---------------------------
  
! Every plugin should define the global symbol 'plugin_is_GPL_compatible'
  to assert that it has been licensed under a GPL-compatible license.  If
  this symbol does not exist, the compiler will emit a fatal error and
  exit with the error message:
--- 47143,47158 ----
  ===============
  
  Plugins are activated by the compiler at specific events as defined in
! â€˜gcc-plugin.hâ€™.  For each event of interest, the plugin should call
! â€˜register_callbackâ€™ specifying the name of the event and address of the
  callback function that will handle that event.
  
!  The header â€˜gcc-plugin.hâ€™ must be the first gcc header to be included.
  
  23.2.1 Plugin license check
  ---------------------------
  
! Every plugin should define the global symbol â€˜plugin_is_GPL_compatibleâ€™
  to assert that it has been licensed under a GPL-compatible license.  If
  this symbol does not exist, the compiler will emit a fatal error and
  exit with the error message:
*************** exit with the error message:
*** 47158,47164 ****
       compilation terminated
  
   The declared type of the symbol should be int, to match a forward
! declaration in 'gcc-plugin.h' that suppresses C++ mangling.  It does not
  need to be in any allocated section, though.  The compiler merely
  asserts that the symbol exists in the global scope.  Something like this
  is enough:
--- 47162,47168 ----
       compilation terminated
  
   The declared type of the symbol should be int, to match a forward
! declaration in â€˜gcc-plugin.hâ€™ that suppresses C++ mangling.  It does not
  need to be in any allocated section, though.  The compiler merely
  asserts that the symbol exists in the global scope.  Something like this
  is enough:
*************** is enough:
*** 47168,47185 ****
  23.2.2 Plugin initialization
  ----------------------------
  
! Every plugin should export a function called 'plugin_init' that is
  called right after the plugin is loaded.  This function is responsible
  for registering all the callbacks required by the plugin and do any
  other required initialization.
  
!  This function is called from 'compile_file' right before invoking the
! parser.  The arguments to 'plugin_init' are:
  
!    * 'plugin_info': Plugin invocation information.
!    * 'version': GCC version.
  
!  The 'plugin_info' struct is defined as follows:
  
       struct plugin_name_args
       {
--- 47172,47189 ----
  23.2.2 Plugin initialization
  ----------------------------
  
! Every plugin should export a function called â€˜plugin_initâ€™ that is
  called right after the plugin is loaded.  This function is responsible
  for registering all the callbacks required by the plugin and do any
  other required initialization.
  
!  This function is called from â€˜compile_fileâ€™ right before invoking the
! parser.  The arguments to â€˜plugin_initâ€™ are:
  
!    â€¢ â€˜plugin_infoâ€™: Plugin invocation information.
!    â€¢ â€˜versionâ€™: GCC version.
  
!  The â€˜plugin_infoâ€™ struct is defined as follows:
  
       struct plugin_name_args
       {
*************** parser.  The arguments to 'plugin_init'
*** 47194,47200 ****
         const char *help;             /* Help string provided by plugin. */
       }
  
!  If initialization fails, 'plugin_init' must return a non-zero value.
  Otherwise, it should return 0.
  
   The version of the GCC compiler loading the plugin is described by the
--- 47198,47204 ----
         const char *help;             /* Help string provided by plugin. */
       }
  
!  If initialization fails, â€˜plugin_initâ€™ must return a non-zero value.
  Otherwise, it should return 0.
  
   The version of the GCC compiler loading the plugin is described by the
*************** following structure:
*** 47209,47220 ****
         const char *configuration_arguments;
       };
  
!  The function 'plugin_default_version_check' takes two pointers to such
  structure and compare them field by field.  It can be used by the
! plugin's 'plugin_init' function.
  
   The version of GCC used to compile the plugin can be found in the
! symbol 'gcc_version' defined in the header 'plugin-version.h'.  The
  recommended version check to perform looks like
  
       #include "plugin-version.h"
--- 47213,47224 ----
         const char *configuration_arguments;
       };
  
!  The function â€˜plugin_default_version_checkâ€™ takes two pointers to such
  structure and compare them field by field.  It can be used by the
! plugin's â€˜plugin_initâ€™ function.
  
   The version of GCC used to compile the plugin can be found in the
! symbol â€˜gcc_versionâ€™ defined in the header â€˜plugin-version.hâ€™.  The
  recommended version check to perform looks like
  
       #include "plugin-version.h"
*************** Callback functions have the following pr
*** 47297,47327 ****
  
   In addition, plugins can also look up the enumerator of a named event,
  and / or generate new events dynamically, by calling the function
! 'get_named_event_id'.
  
!  To register a callback, the plugin calls 'register_callback' with the
  arguments:
  
!    * 'char *name': Plugin name.
!    * 'int event': The event code.
!    * 'plugin_callback_func callback': The function that handles 'event'.
!    * 'void *user_data': Pointer to plugin-specific data.
  
   For the PLUGIN_PASS_MANAGER_SETUP, PLUGIN_INFO, and
! PLUGIN_REGISTER_GGC_ROOTS pseudo-events the 'callback' should be null,
! and the 'user_data' is specific.
  
   When the PLUGIN_PRAGMAS event is triggered (with a null pointer as data
  from GCC), plugins may register their own pragmas.  Notice that pragmas
! are not available from 'lto1', so plugins used with '-flto' option to
  GCC during link-time optimization cannot use pragmas and do not even see
! functions like 'c_register_pragma' or 'pragma_lex'.
  
!  The PLUGIN_INCLUDE_FILE event, with a 'const char*' file path as GCC
! data, is triggered for processing of '#include' or '#line' directives.
  
   The PLUGIN_FINISH event is the last time that plugins can call GCC
! functions, notably emit diagnostics with 'warning', 'error' etc.
  
  
  File: gccint.info,  Node: Plugins pass,  Next: Plugins GC,  Prev: Plugin API,  Up: Plugins
--- 47301,47331 ----
  
   In addition, plugins can also look up the enumerator of a named event,
  and / or generate new events dynamically, by calling the function
! â€˜get_named_event_idâ€™.
  
!  To register a callback, the plugin calls â€˜register_callbackâ€™ with the
  arguments:
  
!    â€¢ â€˜char *nameâ€™: Plugin name.
!    â€¢ â€˜int eventâ€™: The event code.
!    â€¢ â€˜plugin_callback_func callbackâ€™: The function that handles â€˜eventâ€™.
!    â€¢ â€˜void *user_dataâ€™: Pointer to plugin-specific data.
  
   For the PLUGIN_PASS_MANAGER_SETUP, PLUGIN_INFO, and
! PLUGIN_REGISTER_GGC_ROOTS pseudo-events the â€˜callbackâ€™ should be null,
! and the â€˜user_dataâ€™ is specific.
  
   When the PLUGIN_PRAGMAS event is triggered (with a null pointer as data
  from GCC), plugins may register their own pragmas.  Notice that pragmas
! are not available from â€˜lto1â€™, so plugins used with â€˜-fltoâ€™ option to
  GCC during link-time optimization cannot use pragmas and do not even see
! functions like â€˜c_register_pragmaâ€™ or â€˜pragma_lexâ€™.
  
!  The PLUGIN_INCLUDE_FILE event, with a â€˜const char*â€™ file path as GCC
! data, is triggered for processing of â€˜#includeâ€™ or â€˜#lineâ€™ directives.
  
   The PLUGIN_FINISH event is the last time that plugins can call GCC
! functions, notably emit diagnostics with â€˜warningâ€™, â€˜errorâ€™ etc.
  
  
  File: gccint.info,  Node: Plugins pass,  Next: Plugins GC,  Prev: Plugin API,  Up: Plugins
*************** such as CFG or an IPA pass) and optimiza
*** 47335,47342 ****
  
   Basic support for inserting new passes or replacing existing passes is
  provided.  A plugin registers a new pass with GCC by calling
! 'register_callback' with the 'PLUGIN_PASS_MANAGER_SETUP' event and a
! pointer to a 'struct register_pass_info' object defined as follows
  
       enum pass_positioning_ops
       {
--- 47339,47346 ----
  
   Basic support for inserting new passes or replacing existing passes is
  provided.  A plugin registers a new pass with GCC by calling
! â€˜register_callbackâ€™ with the â€˜PLUGIN_PASS_MANAGER_SETUPâ€™ event and a
! pointer to a â€˜struct register_pass_infoâ€™ object defined as follows
  
       enum pass_positioning_ops
       {
*************** File: gccint.info,  Node: Plugins GC,  N
*** 47384,47414 ****
  
  Some plugins may want to be informed when GGC (the GCC Garbage
  Collector) is running.  They can register callbacks for the
! 'PLUGIN_GGC_START' and 'PLUGIN_GGC_END' events (for which the callback
! is called with a null 'gcc_data') to be notified of the start or end of
  the GCC garbage collection.
  
   Some plugins may need to have GGC mark additional data.  This can be
! done by registering a callback (called with a null 'gcc_data') for the
! 'PLUGIN_GGC_MARKING' event.  Such callbacks can call the 'ggc_set_mark'
! routine, preferably through the 'ggc_mark' macro (and conversely, these
  routines should usually not be used in plugins outside of the
! 'PLUGIN_GGC_MARKING' event).  Plugins that wish to hold weak references
  to gc data may also use this event to drop weak references when the
! object is about to be collected.  The 'ggc_marked_p' function can be
  used to tell if an object is marked, or is about to be collected.  The
! 'gt_clear_cache' overloads which some types define may also be of use in
  managing weak references.
  
   Some plugins may need to add extra GGC root tables, e.g. to handle
! their own 'GTY'-ed data.  This can be done with the
! 'PLUGIN_REGISTER_GGC_ROOTS' pseudo-event with a null callback and the
! extra root table (of type 'struct ggc_root_tab*') as 'user_data'.
! Running the 'gengtype -p SOURCE-DIR FILE-LIST PLUGIN*.C ...' utility
  generates these extra root tables.
  
   You should understand the details of memory management inside GCC
! before using 'PLUGIN_GGC_MARKING' or 'PLUGIN_REGISTER_GGC_ROOTS'.
  
  
  File: gccint.info,  Node: Plugins description,  Next: Plugins attr,  Prev: Plugins GC,  Up: Plugins
--- 47388,47418 ----
  
  Some plugins may want to be informed when GGC (the GCC Garbage
  Collector) is running.  They can register callbacks for the
! â€˜PLUGIN_GGC_STARTâ€™ and â€˜PLUGIN_GGC_ENDâ€™ events (for which the callback
! is called with a null â€˜gcc_dataâ€™) to be notified of the start or end of
  the GCC garbage collection.
  
   Some plugins may need to have GGC mark additional data.  This can be
! done by registering a callback (called with a null â€˜gcc_dataâ€™) for the
! â€˜PLUGIN_GGC_MARKINGâ€™ event.  Such callbacks can call the â€˜ggc_set_markâ€™
! routine, preferably through the â€˜ggc_markâ€™ macro (and conversely, these
  routines should usually not be used in plugins outside of the
! â€˜PLUGIN_GGC_MARKINGâ€™ event).  Plugins that wish to hold weak references
  to gc data may also use this event to drop weak references when the
! object is about to be collected.  The â€˜ggc_marked_pâ€™ function can be
  used to tell if an object is marked, or is about to be collected.  The
! â€˜gt_clear_cacheâ€™ overloads which some types define may also be of use in
  managing weak references.
  
   Some plugins may need to add extra GGC root tables, e.g. to handle
! their own â€˜GTYâ€™-ed data.  This can be done with the
! â€˜PLUGIN_REGISTER_GGC_ROOTSâ€™ pseudo-event with a null callback and the
! extra root table (of type â€˜struct ggc_root_tab*â€™) as â€˜user_dataâ€™.
! Running the â€˜gengtype -p SOURCE-DIR FILE-LIST PLUGIN*.C ...â€™ utility
  generates these extra root tables.
  
   You should understand the details of memory management inside GCC
! before using â€˜PLUGIN_GGC_MARKINGâ€™ or â€˜PLUGIN_REGISTER_GGC_ROOTSâ€™.
  
  
  File: gccint.info,  Node: Plugins description,  Next: Plugins attr,  Prev: Plugins GC,  Up: Plugins
*************** uses the following structure:
*** 47425,47432 ****
         const char *help;
       };
  
!  Such a structure is passed as the 'user_data' by the plugin's init
! routine using 'register_callback' with the 'PLUGIN_INFO' pseudo-event
  and a null callback.
  
  
--- 47429,47436 ----
         const char *help;
       };
  
!  Such a structure is passed as the â€˜user_dataâ€™ by the plugin's init
! routine using â€˜register_callbackâ€™ with the â€˜PLUGIN_INFOâ€™ pseudo-event
  and a null callback.
  
  
*************** File: gccint.info,  Node: Plugins attr,
*** 47438,47445 ****
  For analysis (or other) purposes it is useful to be able to add custom
  attributes or pragmas.
  
!  The 'PLUGIN_ATTRIBUTES' callback is called during attribute
! registration.  Use the 'register_attribute' function to register custom
  attributes.
  
       /* Attribute handler callback */
--- 47442,47449 ----
  For analysis (or other) purposes it is useful to be able to add custom
  attributes or pragmas.
  
!  The â€˜PLUGIN_ATTRIBUTESâ€™ callback is called during attribute
! registration.  Use the â€˜register_attributeâ€™ function to register custom
  attributes.
  
       /* Attribute handler callback */
*************** attributes.
*** 47466,47476 ****
  
  
   The PLUGIN_PRAGMAS callback is called once during pragmas registration.
! Use the 'c_register_pragma', 'c_register_pragma_with_data',
! 'c_register_pragma_with_expansion',
! 'c_register_pragma_with_expansion_and_data' functions to register custom
! pragmas and their handlers (which often want to call 'pragma_lex') from
! 'c-family/c-pragma.h'.
  
       /* Plugin callback called during pragmas registration. Registered with
            register_callback (plugin_name, PLUGIN_PRAGMAS,
--- 47470,47480 ----
  
  
   The PLUGIN_PRAGMAS callback is called once during pragmas registration.
! Use the â€˜c_register_pragmaâ€™, â€˜c_register_pragma_with_dataâ€™,
! â€˜c_register_pragma_with_expansionâ€™,
! â€˜c_register_pragma_with_expansion_and_dataâ€™ functions to register custom
! pragmas and their handlers (which often want to call â€˜pragma_lexâ€™) from
! â€˜c-family/c-pragma.hâ€™.
  
       /* Plugin callback called during pragmas registration. Registered with
            register_callback (plugin_name, PLUGIN_PRAGMAS,
*************** pragmas and their handlers (which often
*** 47483,47493 ****
         c_register_pragma ("GCCPLUGIN", "sayhello", handle_pragma_sayhello);
       }
  
!  It is suggested to pass '"GCCPLUGIN"' (or a short name identifying your
  plugin) as the "space" argument of your pragma.
  
!  Pragmas registered with 'c_register_pragma_with_expansion' or
! 'c_register_pragma_with_expansion_and_data' support preprocessor
  expansions.  For example:
  
       #define NUMBER 10
--- 47487,47497 ----
         c_register_pragma ("GCCPLUGIN", "sayhello", handle_pragma_sayhello);
       }
  
!  It is suggested to pass â€˜"GCCPLUGIN"â€™ (or a short name identifying your
  plugin) as the "space" argument of your pragma.
  
!  Pragmas registered with â€˜c_register_pragma_with_expansionâ€™ or
! â€˜c_register_pragma_with_expansion_and_dataâ€™ support preprocessor
  expansions.  For example:
  
       #define NUMBER 10
*************** File: gccint.info,  Node: Plugins record
*** 47500,47513 ****
  ===============================================
  
  The event PLUGIN_PASS_EXECUTION passes the pointer to the executed pass
! (the same as current_pass) as 'gcc_data' to the callback.  You can also
  inspect cfun to find out about which function this pass is executed for.
  Note that this event will only be invoked if the gate check (if
  applicable, modified by PLUGIN_OVERRIDE_GATE) succeeds.  You can use
! other hooks, like 'PLUGIN_ALL_PASSES_START', 'PLUGIN_ALL_PASSES_END',
! 'PLUGIN_ALL_IPA_PASSES_START', 'PLUGIN_ALL_IPA_PASSES_END',
! 'PLUGIN_EARLY_GIMPLE_PASSES_START', and/or
! 'PLUGIN_EARLY_GIMPLE_PASSES_END' to manipulate global state in your
  plugin(s) in order to get context for the pass execution.
  
  
--- 47504,47517 ----
  ===============================================
  
  The event PLUGIN_PASS_EXECUTION passes the pointer to the executed pass
! (the same as current_pass) as â€˜gcc_dataâ€™ to the callback.  You can also
  inspect cfun to find out about which function this pass is executed for.
  Note that this event will only be invoked if the gate check (if
  applicable, modified by PLUGIN_OVERRIDE_GATE) succeeds.  You can use
! other hooks, like â€˜PLUGIN_ALL_PASSES_STARTâ€™, â€˜PLUGIN_ALL_PASSES_ENDâ€™,
! â€˜PLUGIN_ALL_IPA_PASSES_STARTâ€™, â€˜PLUGIN_ALL_IPA_PASSES_ENDâ€™,
! â€˜PLUGIN_EARLY_GIMPLE_PASSES_STARTâ€™, and/or
! â€˜PLUGIN_EARLY_GIMPLE_PASSES_ENDâ€™ to manipulate global state in your
  plugin(s) in order to get context for the pass execution.
  
  
*************** File: gccint.info,  Node: Plugins gate,
*** 47518,47525 ****
  
  After the original gate function for a pass is called, its result - the
  gate status - is stored as an integer.  Then the event
! 'PLUGIN_OVERRIDE_GATE' is invoked, with a pointer to the gate status in
! the 'gcc_data' parameter to the callback function.  A nonzero value of
  the gate status means that the pass is to be executed.  You can both
  read and write the gate status via the passed pointer.
  
--- 47522,47529 ----
  
  After the original gate function for a pass is called, its result - the
  gate status - is stored as an integer.  Then the event
! â€˜PLUGIN_OVERRIDE_GATEâ€™ is invoked, with a pointer to the gate status in
! the â€˜gcc_dataâ€™ parameter to the callback function.  A nonzero value of
  the gate status means that the pass is to be executed.  You can both
  read and write the gate status via the passed pointer.
  
*************** When your plugin is loaded, you can insp
*** 47533,47540 ****
  determine what passes are available.  However, other plugins might add
  new passes.  Also, future changes to GCC might cause generic passes to
  be added after plugin loading.  When a pass is first added to one of the
! pass lists, the event 'PLUGIN_NEW_PASS' is invoked, with the callback
! parameter 'gcc_data' pointing to the new pass.
  
  
  File: gccint.info,  Node: Plugins building,  Prev: Plugins tracking,  Up: Plugins
--- 47537,47544 ----
  determine what passes are available.  However, other plugins might add
  new passes.  Also, future changes to GCC might cause generic passes to
  be added after plugin loading.  When a pass is first added to one of the
! pass lists, the event â€˜PLUGIN_NEW_PASSâ€™ is invoked, with the callback
! parameter â€˜gcc_dataâ€™ pointing to the new pass.
  
  
  File: gccint.info,  Node: Plugins building,  Prev: Plugins tracking,  Up: Plugins
*************** File: gccint.info,  Node: Plugins buildi
*** 47543,47563 ****
  ==========================
  
  If plugins are enabled, GCC installs the headers needed to build a
! plugin (somewhere in the installation tree, e.g. under '/usr/local').
! In particular a 'plugin/include' directory is installed, containing all
  the header files needed to build plugins.
  
!  On most systems, you can query this 'plugin' directory by invoking 'gcc
! -print-file-name=plugin' (replace if needed 'gcc' with the appropriate
  program path).
  
!  Inside plugins, this 'plugin' directory name can be queried by calling
! 'default_plugin_dir_name ()'.
  
   Plugins may know, when they are compiled, the GCC version for which
! 'plugin-version.h' is provided.  The constant macros
! 'GCCPLUGIN_VERSION_MAJOR', 'GCCPLUGIN_VERSION_MINOR',
! 'GCCPLUGIN_VERSION_PATCHLEVEL', 'GCCPLUGIN_VERSION' are integer numbers,
  so a plugin could ensure it is built for GCC 4.7 with
       #if GCCPLUGIN_VERSION != 4007
       #error this GCC plugin is for GCC 4.7
--- 47547,47567 ----
  ==========================
  
  If plugins are enabled, GCC installs the headers needed to build a
! plugin (somewhere in the installation tree, e.g. under â€˜/usr/localâ€™).
! In particular a â€˜plugin/includeâ€™ directory is installed, containing all
  the header files needed to build plugins.
  
!  On most systems, you can query this â€˜pluginâ€™ directory by invoking â€˜gcc
! -print-file-name=pluginâ€™ (replace if needed â€˜gccâ€™ with the appropriate
  program path).
  
!  Inside plugins, this â€˜pluginâ€™ directory name can be queried by calling
! â€˜default_plugin_dir_name ()â€™.
  
   Plugins may know, when they are compiled, the GCC version for which
! â€˜plugin-version.hâ€™ is provided.  The constant macros
! â€˜GCCPLUGIN_VERSION_MAJORâ€™, â€˜GCCPLUGIN_VERSION_MINORâ€™,
! â€˜GCCPLUGIN_VERSION_PATCHLEVELâ€™, â€˜GCCPLUGIN_VERSIONâ€™ are integer numbers,
  so a plugin could ensure it is built for GCC 4.7 with
       #if GCCPLUGIN_VERSION != 4007
       #error this GCC plugin is for GCC 4.7
*************** so a plugin could ensure it is built for
*** 47574,47588 ****
       plugin.so: $(PLUGIN_SOURCE_FILES)
          $(HOST_GCC) -shared $(CXXFLAGS) $^ -o $@
  
!  A single source file plugin may be built with 'g++ -I`gcc
  -print-file-name=plugin`/include -fPIC -shared -fno-rtti -O2 plugin.cc
! -o plugin.so', using backquote shell syntax to query the 'plugin'
  directory.
  
   Plugin support on Windows/MinGW has a number of limitations and
  additional requirements.  When building a plugin on Windows we have to
  link an import library for the corresponding backend executable, for
! example, 'cc1.exe', 'cc1plus.exe', etc., in order to gain access to the
  symbols provided by GCC. This means that on Windows a plugin is
  language-specific, for example, for C, C++, etc.  If you wish to use
  your plugin with multiple languages, then you will need to build
--- 47578,47592 ----
       plugin.so: $(PLUGIN_SOURCE_FILES)
          $(HOST_GCC) -shared $(CXXFLAGS) $^ -o $@
  
!  A single source file plugin may be built with â€˜g++ -I`gcc
  -print-file-name=plugin`/include -fPIC -shared -fno-rtti -O2 plugin.cc
! -o plugin.soâ€™, using backquote shell syntax to query the â€˜pluginâ€™
  directory.
  
   Plugin support on Windows/MinGW has a number of limitations and
  additional requirements.  When building a plugin on Windows we have to
  link an import library for the corresponding backend executable, for
! example, â€˜cc1.exeâ€™, â€˜cc1plus.exeâ€™, etc., in order to gain access to the
  symbols provided by GCC. This means that on Windows a plugin is
  language-specific, for example, for C, C++, etc.  If you wish to use
  your plugin with multiple languages, then you will need to build
*************** the correct version or provide a compile
*** 47591,47601 ****
  automatically.
  
   Additionally, on Windows the plugin library has to export the
! 'plugin_is_GPL_compatible' and 'plugin_init' symbols.  If you do not
  wish to modify the source code of your plugin, then you can use the
! '-Wl,--export-all-symbols' option or provide a suitable DEF file.
  Alternatively, you can export just these two symbols by decorating them
! with '__declspec(dllexport)', for example:
  
       #ifdef _WIN32
       __declspec(dllexport)
--- 47595,47605 ----
  automatically.
  
   Additionally, on Windows the plugin library has to export the
! â€˜plugin_is_GPL_compatibleâ€™ and â€˜plugin_initâ€™ symbols.  If you do not
  wish to modify the source code of your plugin, then you can use the
! â€˜-Wl,--export-all-symbolsâ€™ option or provide a suitable DEF file.
  Alternatively, you can export just these two symbols by decorating them
! with â€˜__declspec(dllexport)â€™, for example:
  
       #ifdef _WIN32
       __declspec(dllexport)
*************** with '__declspec(dllexport)', for exampl
*** 47607,47623 ****
       #endif
       int plugin_init (plugin_name_args *, plugin_gcc_version *)
  
!  The import libraries are installed into the 'plugin' directory and
! their names are derived by appending the '.a' extension to the backend
! executable names, for example, 'cc1.exe.a', 'cc1plus.exe.a', etc.  The
  following command line shows how to build the single source file plugin
  on Windows to be used with the C++ compiler:
  
       g++ -I`gcc -print-file-name=plugin`/include -shared -Wl,--export-all-symbols \
       -o plugin.dll plugin.cc `gcc -print-file-name=plugin`/cc1plus.exe.a
  
!  When a plugin needs to use 'gengtype', be sure that both 'gengtype' and
! 'gtype.state' have the same version as the GCC for which the plugin is
  built.
  
  
--- 47611,47627 ----
       #endif
       int plugin_init (plugin_name_args *, plugin_gcc_version *)
  
!  The import libraries are installed into the â€˜pluginâ€™ directory and
! their names are derived by appending the â€˜.aâ€™ extension to the backend
! executable names, for example, â€˜cc1.exe.aâ€™, â€˜cc1plus.exe.aâ€™, etc.  The
  following command line shows how to build the single source file plugin
  on Windows to be used with the C++ compiler:
  
       g++ -I`gcc -print-file-name=plugin`/include -shared -Wl,--export-all-symbols \
       -o plugin.dll plugin.cc `gcc -print-file-name=plugin`/cc1plus.exe.a
  
!  When a plugin needs to use â€˜gengtypeâ€™, be sure that both â€˜gengtypeâ€™ and
! â€˜gtype.stateâ€™ have the same version as the GCC for which the plugin is
  built.
  
  
*************** at link time).
*** 47640,47646 ****
  * IPA::                     Using summary information in IPA passes.
  * WHOPR::                   Whole program assumptions,
                              linker plugin and symbol visibilities.
! * Internal flags::          Internal flags controlling 'lto1'.
  
  
  File: gccint.info,  Node: LTO Overview,  Next: LTO object file layout,  Up: LTO
--- 47644,47650 ----
  * IPA::                     Using summary information in IPA passes.
  * WHOPR::                   Whole program assumptions,
                              linker plugin and symbol visibilities.
! * Internal flags::          Internal flags controlling â€˜lto1â€™.
  
  
  File: gccint.info,  Node: LTO Overview,  Next: LTO object file layout,  Up: LTO
*************** File: gccint.info,  Node: LTO Overview,
*** 47649,47674 ****
  ====================
  
  Link time optimization is implemented as a GCC front end for a bytecode
! representation of GIMPLE that is emitted in special sections of '.o'
  files.  Currently, LTO support is enabled in most ELF-based systems, as
  well as darwin, cygwin and mingw systems.
  
   By default, object files generated with LTO support contain only GIMPLE
  bytecode.  Such objects are called "slim", and they require that tools
! like 'ar' and 'nm' understand symbol tables of LTO sections.  For most
  targets these tools have been extended to use the plugin infrastructure,
  so GCC can support "slim" objects consisting of the intermediate code
  alone.
  
   GIMPLE bytecode could also be saved alongside final object code if the
! '-ffat-lto-objects' option is passed, or if no plugin support is
! detected for 'ar' and 'nm' when GCC is configured.  It makes the object
  files generated with LTO support larger than regular object files.  This
  "fat" object format allows to ship one set of fat objects which could be
  used both for development and the production of optimized builds.  A,
  perhaps surprising, side effect of this feature is that any mistake in
  the toolchain leads to LTO information not being used (e.g. an older
! 'libtool' calling 'ld' directly).  This is both an advantage, as the
  system is more robust, and a disadvantage, as the user is not informed
  that the optimization has been disabled.
  
--- 47653,47678 ----
  ====================
  
  Link time optimization is implemented as a GCC front end for a bytecode
! representation of GIMPLE that is emitted in special sections of â€˜.oâ€™
  files.  Currently, LTO support is enabled in most ELF-based systems, as
  well as darwin, cygwin and mingw systems.
  
   By default, object files generated with LTO support contain only GIMPLE
  bytecode.  Such objects are called "slim", and they require that tools
! like â€˜arâ€™ and â€˜nmâ€™ understand symbol tables of LTO sections.  For most
  targets these tools have been extended to use the plugin infrastructure,
  so GCC can support "slim" objects consisting of the intermediate code
  alone.
  
   GIMPLE bytecode could also be saved alongside final object code if the
! â€˜-ffat-lto-objectsâ€™ option is passed, or if no plugin support is
! detected for â€˜arâ€™ and â€˜nmâ€™ when GCC is configured.  It makes the object
  files generated with LTO support larger than regular object files.  This
  "fat" object format allows to ship one set of fat objects which could be
  used both for development and the production of optimized builds.  A,
  perhaps surprising, side effect of this feature is that any mistake in
  the toolchain leads to LTO information not being used (e.g. an older
! â€˜libtoolâ€™ calling â€˜ldâ€™ directly).  This is both an advantage, as the
  system is more robust, and a disadvantage, as the user is not informed
  that the optimization has been disabled.
  
*************** data structures needed to optimize and g
*** 47678,47704 ****
  declarations, types, the callgraph and the GIMPLE representation of
  function bodies.
  
!  When '-flto' is given during compilation of a source file, the pass
! manager executes all the passes in 'all_lto_gen_passes'.  Currently,
  this phase is composed of two IPA passes:
  
!    * 'pass_ipa_lto_gimple_out' This pass executes the function
!      'lto_output' in 'lto-streamer-out.cc', which traverses the call
       graph encoding every reachable declaration, type and function.
       This generates a memory representation of all the file sections
       described below.
  
!    * 'pass_ipa_lto_finish_out' This pass executes the function
!      'produce_asm_for_decls' in 'lto-streamer-out.cc', which takes the
       memory image built in the previous pass and encodes it in the
       corresponding ELF file sections.
  
   The second half of LTO support is the "reader".  This is implemented as
! the GCC front end 'lto1' in 'lto/lto.cc'.  When 'collect2' detects a
! link set of '.o'/'.a' files with LTO information and the '-flto' is
! enabled, it invokes 'lto1' which reads the set of files and aggregates
  them into a single translation unit for optimization.  The main entry
! point for the reader is 'lto/lto.cc':'lto_main'.
  
  24.1.1 LTO modes of operation
  -----------------------------
--- 47682,47708 ----
  declarations, types, the callgraph and the GIMPLE representation of
  function bodies.
  
!  When â€˜-fltoâ€™ is given during compilation of a source file, the pass
! manager executes all the passes in â€˜all_lto_gen_passesâ€™.  Currently,
  this phase is composed of two IPA passes:
  
!    â€¢ â€˜pass_ipa_lto_gimple_outâ€™ This pass executes the function
!      â€˜lto_outputâ€™ in â€˜lto-streamer-out.ccâ€™, which traverses the call
       graph encoding every reachable declaration, type and function.
       This generates a memory representation of all the file sections
       described below.
  
!    â€¢ â€˜pass_ipa_lto_finish_outâ€™ This pass executes the function
!      â€˜produce_asm_for_declsâ€™ in â€˜lto-streamer-out.ccâ€™, which takes the
       memory image built in the previous pass and encodes it in the
       corresponding ELF file sections.
  
   The second half of LTO support is the "reader".  This is implemented as
! the GCC front end â€˜lto1â€™ in â€˜lto/lto.ccâ€™.  When â€˜collect2â€™ detects a
! link set of â€˜.oâ€™/â€˜.aâ€™ files with LTO information and the â€˜-fltoâ€™ is
! enabled, it invokes â€˜lto1â€™ which reads the set of files and aggregates
  them into a single translation unit for optimization.  The main entry
! point for the reader is â€˜lto/lto.ccâ€™:â€˜lto_mainâ€™.
  
  24.1.1 LTO modes of operation
  -----------------------------
*************** two link-time compilation modes.
*** 47714,47725 ****
    2. _WHOPR or partitioned mode_, designed to utilize multiple CPUs
       and/or a distributed compilation environment to quickly link large
       applications.  WHOPR stands for WHOle Program optimizeR (not to be
!      confused with the semantics of '-fwhole-program').  It partitions
!      the aggregated callgraph from many different '.o' files and
       distributes the compilation of the sub-graphs to different CPUs.
  
       Note that distributed compilation is not implemented yet, but since
!      the parallelism is facilitated via generating a 'Makefile', it
       would be easy to implement.
  
   WHOPR splits LTO into three main stages:
--- 47718,47729 ----
    2. _WHOPR or partitioned mode_, designed to utilize multiple CPUs
       and/or a distributed compilation environment to quickly link large
       applications.  WHOPR stands for WHOle Program optimizeR (not to be
!      confused with the semantics of â€˜-fwhole-programâ€™).  It partitions
!      the aggregated callgraph from many different â€˜.oâ€™ files and
       distributes the compilation of the sub-graphs to different CPUs.
  
       Note that distributed compilation is not implemented yet, but since
!      the parallelism is facilitated via generating a â€˜Makefileâ€™, it
       would be easy to implement.
  
   WHOPR splits LTO into three main stages:
*************** File: gccint.info,  Node: LTO object fil
*** 47764,47776 ****
  
  LTO information is stored in several ELF sections inside object files.
  Data structures and enum codes for sections are defined in
! 'lto-streamer.h'.
  
!  These sections are emitted from 'lto-streamer-out.cc' and mapped in all
! at once from 'lto/lto.cc':'lto_file_read'.  The individual functions
  dealing with the reading/writing of each section are described below.
  
!    * Command line options ('.gnu.lto_.opts')
  
       This section contains the command line options used to generate the
       object files.  This is used at link time to determine the
--- 47768,47780 ----
  
  LTO information is stored in several ELF sections inside object files.
  Data structures and enum codes for sections are defined in
! â€˜lto-streamer.hâ€™.
  
!  These sections are emitted from â€˜lto-streamer-out.ccâ€™ and mapped in all
! at once from â€˜lto/lto.ccâ€™:â€˜lto_file_readâ€™.  The individual functions
  dealing with the reading/writing of each section are described below.
  
!    â€¢ Command line options (â€˜.gnu.lto_.optsâ€™)
  
       This section contains the command line options used to generate the
       object files.  This is used at link time to determine the
*************** dealing with the reading/writing of each
*** 47781,47789 ****
       restored when processing the functions at link time.  Global
       options are composed from options specified at compile time and
       link time.  How exactly they are combined or mismatches diagnosed
!      is implemented in 'lto-wrapper.cc':'find_and_merge_options'.
  
!    * Symbol table ('.gnu.lto_.symtab')
  
       This table replaces the ELF symbol table for functions and
       variables represented in the LTO IL. Symbols used and exported by
--- 47785,47793 ----
       restored when processing the functions at link time.  Global
       options are composed from options specified at compile time and
       link time.  How exactly they are combined or mismatches diagnosed
!      is implemented in â€˜lto-wrapper.ccâ€™:â€˜find_and_merge_optionsâ€™.
  
!    â€¢ Symbol table (â€˜.gnu.lto_.symtabâ€™)
  
       This table replaces the ELF symbol table for functions and
       variables represented in the LTO IL. Symbols used and exported by
*************** dealing with the reading/writing of each
*** 47800,47855 ****
       symbol table was used.
  
       The symbol table is emitted in
!      'lto-streamer-out.cc':'produce_symtab'.
  
!    * Global declarations and types ('.gnu.lto_.decls')
  
       This section contains an intermediate language dump of all
       declarations and types required to represent the callgraph, static
       variables and top-level debug info.
  
       The contents of this section are emitted in
!      'lto-streamer-out.cc':'produce_asm_for_decls'.  Types and symbols
       are emitted in a topological order that preserves the sharing of
       pointers when the file is read back in
!      ('lto.cc':'read_cgraph_and_symbols').
  
!    * The callgraph ('.gnu.lto_.cgraph')
  
       This section contains the basic data structure used by the GCC
       inter-procedural optimization infrastructure.  This section stores
       an annotated multi-graph which represents the functions and call
!      sites as well as the variables, aliases and top-level 'asm'
       statements.
  
!      This section is emitted in 'lto-streamer-out.cc':'output_cgraph'
!      and read in 'lto-cgraph.cc':'input_cgraph'.
  
!    * IPA references ('.gnu.lto_.refs')
  
       This section contains references between function and static
!      variables.  It is emitted by 'lto-cgraph.cc':'output_refs' and read
!      by 'lto-cgraph.cc':'input_refs'.
  
!    * Function bodies ('.gnu.lto_.function_body.<name>')
  
       This section contains function bodies in the intermediate language
       representation.  Every function body is in a separate section to
       allow copying of the section independently to different object
       files or reading the function on demand.
  
!      Functions are emitted in 'lto-streamer-out.cc':'output_function'
!      and read in 'lto-streamer-in.cc':'input_function'.
  
!    * Static variable initializers ('.gnu.lto_.vars')
  
       This section contains all the symbols in the global variable pool.
!      It is emitted by 'lto-cgraph.cc':'output_varpool' and read in
!      'lto-cgraph.cc':'input_cgraph'.
  
!    * Summaries and optimization summaries used by IPA passes
!      ('.gnu.lto_.<xxx>', where '<xxx>' is one of 'jmpfuncs', 'pureconst'
!      or 'reference')
  
       These sections are used by IPA passes that need to emit summary
       information during LTO generation to be read and aggregated at link
--- 47804,47859 ----
       symbol table was used.
  
       The symbol table is emitted in
!      â€˜lto-streamer-out.ccâ€™:â€˜produce_symtabâ€™.
  
!    â€¢ Global declarations and types (â€˜.gnu.lto_.declsâ€™)
  
       This section contains an intermediate language dump of all
       declarations and types required to represent the callgraph, static
       variables and top-level debug info.
  
       The contents of this section are emitted in
!      â€˜lto-streamer-out.ccâ€™:â€˜produce_asm_for_declsâ€™.  Types and symbols
       are emitted in a topological order that preserves the sharing of
       pointers when the file is read back in
!      (â€˜lto.ccâ€™:â€˜read_cgraph_and_symbolsâ€™).
  
!    â€¢ The callgraph (â€˜.gnu.lto_.cgraphâ€™)
  
       This section contains the basic data structure used by the GCC
       inter-procedural optimization infrastructure.  This section stores
       an annotated multi-graph which represents the functions and call
!      sites as well as the variables, aliases and top-level â€˜asmâ€™
       statements.
  
!      This section is emitted in â€˜lto-streamer-out.ccâ€™:â€˜output_cgraphâ€™
!      and read in â€˜lto-cgraph.ccâ€™:â€˜input_cgraphâ€™.
  
!    â€¢ IPA references (â€˜.gnu.lto_.refsâ€™)
  
       This section contains references between function and static
!      variables.  It is emitted by â€˜lto-cgraph.ccâ€™:â€˜output_refsâ€™ and read
!      by â€˜lto-cgraph.ccâ€™:â€˜input_refsâ€™.
  
!    â€¢ Function bodies (â€˜.gnu.lto_.function_body.<name>â€™)
  
       This section contains function bodies in the intermediate language
       representation.  Every function body is in a separate section to
       allow copying of the section independently to different object
       files or reading the function on demand.
  
!      Functions are emitted in â€˜lto-streamer-out.ccâ€™:â€˜output_functionâ€™
!      and read in â€˜lto-streamer-in.ccâ€™:â€˜input_functionâ€™.
  
!    â€¢ Static variable initializers (â€˜.gnu.lto_.varsâ€™)
  
       This section contains all the symbols in the global variable pool.
!      It is emitted by â€˜lto-cgraph.ccâ€™:â€˜output_varpoolâ€™ and read in
!      â€˜lto-cgraph.ccâ€™:â€˜input_cgraphâ€™.
  
!    â€¢ Summaries and optimization summaries used by IPA passes
!      (â€˜.gnu.lto_.<xxx>â€™, where â€˜<xxx>â€™ is one of â€˜jmpfuncsâ€™, â€˜pureconstâ€™
!      or â€˜referenceâ€™)
  
       These sections are used by IPA passes that need to emit summary
       information during LTO generation to be read and aggregated at link
*************** make the implementation of WHOPR possibl
*** 47875,47943 ****
  optimization pass is split into several stages that are executed at
  different times during WHOPR compilation:
  
!    * LGEN time
!        1. _Generate summary_ ('generate_summary' in 'struct
!           ipa_opt_pass_d').  This stage analyzes every function body and
            variable initializer is examined and stores relevant
            information into a pass-specific data structure.
  
!        2. _Write summary_ ('write_summary' in 'struct ipa_opt_pass_d').
            This stage writes all the pass-specific information generated
!           by 'generate_summary'.  Summaries go into their own
!           'LTO_section_*' sections that have to be declared in
!           'lto-streamer.h':'enum lto_section_type'.  A new section is
!           created by calling 'create_output_block' and data can be
!           written using the 'lto_output_*' routines.
  
!    * WPA time
!        1. _Read summary_ ('read_summary' in 'struct ipa_opt_pass_d').
            This stage reads all the pass-specific information in exactly
!           the same order that it was written by 'write_summary'.
  
!        2. _Execute_ ('execute' in 'struct opt_pass').  This performs
            inter-procedural propagation.  This must be done without
            actual access to the individual function bodies or variable
            initializers.  Typically, this results in a transitive closure
            operation over the summary information of all the nodes in the
            callgraph.
  
!        3. _Write optimization summary_ ('write_optimization_summary' in
!           'struct ipa_opt_pass_d').  This writes the result of the
            inter-procedural propagation into the object file.  This can
            use the same data structures and helper routines used in
!           'write_summary'.
  
!    * LTRANS time
!        1. _Read optimization summary_ ('read_optimization_summary' in
!           'struct ipa_opt_pass_d').  The counterpart to
!           'write_optimization_summary'.  This reads the interprocedural
            optimization decisions in exactly the same format emitted by
!           'write_optimization_summary'.
  
!        2. _Transform_ ('function_transform' and 'variable_transform' in
!           'struct ipa_opt_pass_d').  The actual function bodies and
            variable initializers are updated based on the information
            passed down from the _Execute_ stage.
  
   The implementation of the inter-procedural passes are shared between
  LTO, WHOPR and classic non-LTO compilation.
  
!    * During the traditional file-by-file mode every pass executes its
       own _Generate summary_, _Execute_, and _Transform_ stages within
       the single execution context of the compiler.
  
!    * In LTO compilation mode, every pass uses _Generate summary_ and
       _Write summary_ stages at compilation time, while the _Read
       summary_, _Execute_, and _Transform_ stages are executed at link
       time.
  
!    * In WHOPR mode all stages are used.
  
   To simplify development, the GCC pass manager differentiates between
  normal inter-procedural passes (*note Regular IPA passes::), small
  inter-procedural passes (*note Small IPA passes::) and late
  inter-procedural passes (*note Late IPA passes::).  A small or late IPA
! pass ('SIMPLE_IPA_PASS') does everything at once and thus cannot be
  executed during WPA in WHOPR mode.  It defines only the _Execute_ stage
  and during this stage it accesses and modifies the function bodies.
  Such passes are useful for optimization at LGEN or LTRANS time and are
--- 47879,47947 ----
  optimization pass is split into several stages that are executed at
  different times during WHOPR compilation:
  
!    â€¢ LGEN time
!        1. _Generate summary_ (â€˜generate_summaryâ€™ in â€˜struct
!           ipa_opt_pass_dâ€™).  This stage analyzes every function body and
            variable initializer is examined and stores relevant
            information into a pass-specific data structure.
  
!        2. _Write summary_ (â€˜write_summaryâ€™ in â€˜struct ipa_opt_pass_dâ€™).
            This stage writes all the pass-specific information generated
!           by â€˜generate_summaryâ€™.  Summaries go into their own
!           â€˜LTO_section_*â€™ sections that have to be declared in
!           â€˜lto-streamer.hâ€™:â€˜enum lto_section_typeâ€™.  A new section is
!           created by calling â€˜create_output_blockâ€™ and data can be
!           written using the â€˜lto_output_*â€™ routines.
  
!    â€¢ WPA time
!        1. _Read summary_ (â€˜read_summaryâ€™ in â€˜struct ipa_opt_pass_dâ€™).
            This stage reads all the pass-specific information in exactly
!           the same order that it was written by â€˜write_summaryâ€™.
  
!        2. _Execute_ (â€˜executeâ€™ in â€˜struct opt_passâ€™).  This performs
            inter-procedural propagation.  This must be done without
            actual access to the individual function bodies or variable
            initializers.  Typically, this results in a transitive closure
            operation over the summary information of all the nodes in the
            callgraph.
  
!        3. _Write optimization summary_ (â€˜write_optimization_summaryâ€™ in
!           â€˜struct ipa_opt_pass_dâ€™).  This writes the result of the
            inter-procedural propagation into the object file.  This can
            use the same data structures and helper routines used in
!           â€˜write_summaryâ€™.
  
!    â€¢ LTRANS time
!        1. _Read optimization summary_ (â€˜read_optimization_summaryâ€™ in
!           â€˜struct ipa_opt_pass_dâ€™).  The counterpart to
!           â€˜write_optimization_summaryâ€™.  This reads the interprocedural
            optimization decisions in exactly the same format emitted by
!           â€˜write_optimization_summaryâ€™.
  
!        2. _Transform_ (â€˜function_transformâ€™ and â€˜variable_transformâ€™ in
!           â€˜struct ipa_opt_pass_dâ€™).  The actual function bodies and
            variable initializers are updated based on the information
            passed down from the _Execute_ stage.
  
   The implementation of the inter-procedural passes are shared between
  LTO, WHOPR and classic non-LTO compilation.
  
!    â€¢ During the traditional file-by-file mode every pass executes its
       own _Generate summary_, _Execute_, and _Transform_ stages within
       the single execution context of the compiler.
  
!    â€¢ In LTO compilation mode, every pass uses _Generate summary_ and
       _Write summary_ stages at compilation time, while the _Read
       summary_, _Execute_, and _Transform_ stages are executed at link
       time.
  
!    â€¢ In WHOPR mode all stages are used.
  
   To simplify development, the GCC pass manager differentiates between
  normal inter-procedural passes (*note Regular IPA passes::), small
  inter-procedural passes (*note Small IPA passes::) and late
  inter-procedural passes (*note Late IPA passes::).  A small or late IPA
! pass (â€˜SIMPLE_IPA_PASSâ€™) does everything at once and thus cannot be
  executed during WPA in WHOPR mode.  It defines only the _Execute_ stage
  and during this stage it accesses and modifies the function bodies.
  Such passes are useful for optimization at LGEN or LTRANS time and are
*************** summaries updated for the _Transform_ st
*** 48022,48041 ****
  ---------------------
  
  GCC represents IPA references in the callgraph.  For a function or
! variable 'A', the _IPA reference_ is a list of all locations where the
! address of 'A' is taken and, when 'A' is a variable, a list of all
! direct stores and reads to/from 'A'.  References represent an oriented
  multi-graph on the union of nodes of the callgraph and the varpool.  See
! 'ipa-reference.cc':'ipa_reference_write_optimization_summary' and
! 'ipa-reference.cc':'ipa_reference_read_optimization_summary' for
  details.
  
  24.3.3 Jump functions
  ---------------------
  
! Suppose that an optimization pass sees a function 'A' and it knows the
  values of (some of) its arguments.  The _jump function_ describes the
! value of a parameter of a given function call in function 'A' based on
  this knowledge.
  
   Jump functions are used by several optimizations, such as the
--- 48026,48045 ----
  ---------------------
  
  GCC represents IPA references in the callgraph.  For a function or
! variable â€˜Aâ€™, the _IPA reference_ is a list of all locations where the
! address of â€˜Aâ€™ is taken and, when â€˜Aâ€™ is a variable, a list of all
! direct stores and reads to/from â€˜Aâ€™.  References represent an oriented
  multi-graph on the union of nodes of the callgraph and the varpool.  See
! â€˜ipa-reference.ccâ€™:â€˜ipa_reference_write_optimization_summaryâ€™ and
! â€˜ipa-reference.ccâ€™:â€˜ipa_reference_read_optimization_summaryâ€™ for
  details.
  
  24.3.3 Jump functions
  ---------------------
  
! Suppose that an optimization pass sees a function â€˜Aâ€™ and it knows the
  values of (some of) its arguments.  The _jump function_ describes the
! value of a parameter of a given function call in function â€˜Aâ€™ based on
  this knowledge.
  
   Jump functions are used by several optimizations, such as the
*************** rules allow one to overwrite any externa
*** 48061,48081 ****
  different symbol at runtime.  This basically disables any optimizations
  across such functions and variables, because the compiler cannot be sure
  that the function body it is seeing is the same function body that will
! be used at runtime.  Any function or variable not declared 'static' in
  the sources degrades the quality of inter-procedural optimization.
  
   To avoid this problem the compiler must assume that it sees the whole
  program when doing link-time optimization.  Strictly speaking, the whole
  program is rarely visible even at link-time.  Standard system libraries
  are usually linked dynamically or not provided with the link-time
! information.  In GCC, the whole program option ('-fwhole-program')
  asserts that every function and variable defined in the current
! compilation unit is static, except for function 'main' (note: at link
  time, the current unit is the union of all objects compiled with LTO).
  Since some functions and variables need to be referenced externally, for
  example by another DSO or from an assembler file, GCC also provides the
! function and variable attribute 'externally_visible' which can be used
! to disable the effect of '-fwhole-program' on a specific symbol.
  
   The whole program mode assumptions are slightly more complex in C++,
  where inline functions in headers are put into _COMDAT_ sections.
--- 48065,48085 ----
  different symbol at runtime.  This basically disables any optimizations
  across such functions and variables, because the compiler cannot be sure
  that the function body it is seeing is the same function body that will
! be used at runtime.  Any function or variable not declared â€˜staticâ€™ in
  the sources degrades the quality of inter-procedural optimization.
  
   To avoid this problem the compiler must assume that it sees the whole
  program when doing link-time optimization.  Strictly speaking, the whole
  program is rarely visible even at link-time.  Standard system libraries
  are usually linked dynamically or not provided with the link-time
! information.  In GCC, the whole program option (â€˜-fwhole-programâ€™)
  asserts that every function and variable defined in the current
! compilation unit is static, except for function â€˜mainâ€™ (note: at link
  time, the current unit is the union of all objects compiled with LTO).
  Since some functions and variables need to be referenced externally, for
  example by another DSO or from an assembler file, GCC also provides the
! function and variable attribute â€˜externally_visibleâ€™ which can be used
! to disable the effect of â€˜-fwhole-programâ€™ on a specific symbol.
  
   The whole program mode assumptions are slightly more complex in C++,
  where inline functions in headers are put into _COMDAT_ sections.
*************** always remain externally visible, howeve
*** 48087,48099 ****
  assumed that their initializers cannot be overwritten by a different
  value.
  
!  GCC provides the function and variable attribute 'visibility' that can
  be used to specify the visibility of externally visible symbols (or
! alternatively an '-fdefault-visibility' command line option).  ELF
! defines the 'default', 'protected', 'hidden' and 'internal'
  visibilities.
  
!  The most commonly used is visibility is 'hidden'.  It specifies that
  the symbol cannot be referenced from outside of the current shared
  library.  Unfortunately, this information cannot be used directly by the
  link-time optimization in the compiler since the whole shared library
--- 48091,48103 ----
  assumed that their initializers cannot be overwritten by a different
  value.
  
!  GCC provides the function and variable attribute â€˜visibilityâ€™ that can
  be used to specify the visibility of externally visible symbols (or
! alternatively an â€˜-fdefault-visibilityâ€™ command line option).  ELF
! defines the â€˜defaultâ€™, â€˜protectedâ€™, â€˜hiddenâ€™ and â€˜internalâ€™
  visibilities.
  
!  The most commonly used is visibility is â€˜hiddenâ€™.  It specifies that
  the symbol cannot be referenced from outside of the current shared
  library.  Unfortunately, this information cannot be used directly by the
  link-time optimization in the compiler since the whole shared library
*************** the rest of a binary being linked.
*** 48113,48138 ****
   GCC is designed to be independent of the rest of the toolchain and aims
  to support linkers without plugin support.  For this reason it does not
  use the linker plugin by default.  Instead, the object files are
! examined by 'collect2' before being passed to the linker and objects
! found to have LTO sections are passed to 'lto1' first.  This mode does
  not work for library archives.  The decision on what object files from
  the archive are needed depends on the actual linking and thus GCC would
  have to implement the linker itself.  The resolution information is
  missing too and thus GCC needs to make an educated guess based on
! '-fwhole-program'.  Without the linker plugin GCC also assumes that
! symbols are declared 'hidden' and not referred by non-LTO code by
  default.
  
  
  File: gccint.info,  Node: Internal flags,  Prev: WHOPR,  Up: LTO
  
! 24.5 Internal flags controlling 'lto1'
  ======================================
  
! The following flags are passed into 'lto1' and are not meant to be used
  directly from the command line.
  
!    * -fwpa This option runs the serial part of the link-time optimizer
       performing the inter-procedural propagation (WPA mode).  The
       compiler reads in summary information from all inputs and performs
       an analysis based on summary information only.  It generates object
--- 48117,48142 ----
   GCC is designed to be independent of the rest of the toolchain and aims
  to support linkers without plugin support.  For this reason it does not
  use the linker plugin by default.  Instead, the object files are
! examined by â€˜collect2â€™ before being passed to the linker and objects
! found to have LTO sections are passed to â€˜lto1â€™ first.  This mode does
  not work for library archives.  The decision on what object files from
  the archive are needed depends on the actual linking and thus GCC would
  have to implement the linker itself.  The resolution information is
  missing too and thus GCC needs to make an educated guess based on
! â€˜-fwhole-programâ€™.  Without the linker plugin GCC also assumes that
! symbols are declared â€˜hiddenâ€™ and not referred by non-LTO code by
  default.
  
  
  File: gccint.info,  Node: Internal flags,  Prev: WHOPR,  Up: LTO
  
! 24.5 Internal flags controlling â€˜lto1â€™
  ======================================
  
! The following flags are passed into â€˜lto1â€™ and are not meant to be used
  directly from the command line.
  
!    â€¢ -fwpa This option runs the serial part of the link-time optimizer
       performing the inter-procedural propagation (WPA mode).  The
       compiler reads in summary information from all inputs and performs
       an analysis based on summary information only.  It generates object
*************** directly from the command line.
*** 48141,48157 ****
       information from the WPA mode and the actual function bodies.  It
       then drives the LTRANS phase.
  
!    * -fltrans This option runs the link-time optimizer in the
       local-transformation (LTRANS) mode, which reads in output from a
       previous run of the LTO in WPA mode.  In the LTRANS mode, LTO
       optimizes an object and produces the final assembly.
  
!    * -fltrans-output-list=FILE This option specifies a file to which the
       names of LTRANS output files are written.  This option is only
!      meaningful in conjunction with '-fwpa'.
  
!    * -fresolution=FILE This option specifies the linker resolution file.
!      This option is only meaningful in conjunction with '-fwpa' and as
       option to pass through to the LTO linker plugin.
  
  
--- 48145,48161 ----
       information from the WPA mode and the actual function bodies.  It
       then drives the LTRANS phase.
  
!    â€¢ -fltrans This option runs the link-time optimizer in the
       local-transformation (LTRANS) mode, which reads in output from a
       previous run of the LTO in WPA mode.  In the LTRANS mode, LTO
       optimizes an object and produces the final assembly.
  
!    â€¢ -fltrans-output-list=FILE This option specifies a file to which the
       names of LTRANS output files are written.  This option is only
!      meaningful in conjunction with â€˜-fwpaâ€™.
  
!    â€¢ -fresolution=FILE This option specifies the linker resolution file.
!      This option is only meaningful in conjunction with â€˜-fwpaâ€™ and as
       option to pass through to the LTO linker plugin.
  
  
*************** File: gccint.info,  Node: GIMPLE API,  N
*** 48206,48221 ****
  
   thus providing n-ary overloads for operation or function.  The
  additional arguments are a gimple_seq where built statements are
! inserted on (if 'NULL' then simplifications requiring new statements are
  not performed) and a valueization hook that can be used to tie
  simplifications to a SSA lattice.
  
!  In addition to those APIs 'fold_stmt' is overloaded with a valueization
  hook:
  
   -- bool: fold_stmt (gimple_stmt_iterator *, tree (*)(tree));
  
!  On top of these a 'fold_buildN'-like API for GIMPLE is introduced:
  
   -- GIMPLE function: tree gimple_build (gimple_seq *, location_t, enum
            tree_code, tree, tree, tree (*valueize) (tree) = NULL);
--- 48210,48225 ----
  
   thus providing n-ary overloads for operation or function.  The
  additional arguments are a gimple_seq where built statements are
! inserted on (if â€˜NULLâ€™ then simplifications requiring new statements are
  not performed) and a valueization hook that can be used to tie
  simplifications to a SSA lattice.
  
!  In addition to those APIs â€˜fold_stmtâ€™ is overloaded with a valueization
  hook:
  
   -- bool: fold_stmt (gimple_stmt_iterator *, tree (*)(tree));
  
!  On top of these a â€˜fold_buildNâ€™-like API for GIMPLE is introduced:
  
   -- GIMPLE function: tree gimple_build (gimple_seq *, location_t, enum
            tree_code, tree, tree, tree (*valueize) (tree) = NULL);
*************** hook:
*** 48236,48243 ****
   -- GIMPLE function: tree gimple_convert (gimple_seq *, location_t,
            tree, tree);
  
!  which is supposed to replace 'force_gimple_operand (fold_buildN (...),
! ...)' and calls to 'fold_convert'.  Overloads without the 'location_t'
  argument exist.  Built statements are inserted on the provided sequence
  and simplification is performed using the optional valueization hook.
  
--- 48240,48247 ----
   -- GIMPLE function: tree gimple_convert (gimple_seq *, location_t,
            tree, tree);
  
!  which is supposed to replace â€˜force_gimple_operand (fold_buildN (...),
! ...)â€™ and calls to â€˜fold_convertâ€™.  Overloads without the â€˜location_tâ€™
  argument exist.  Built statements are inserted on the provided sequence
  and simplification is performed using the optional valueization hook.
  
*************** start with an example from the match.pd
*** 48256,48283 ****
         @0)
  
   This example contains all required parts of an expression
! simplification.  A simplification is wrapped inside a '(simplify ...)'
  expression.  That contains at least two operands - an expression that is
  matched with the GIMPLE or GENERIC IL and a replacement expression that
  is returned if the match was successful.
  
!  Expressions have an operator ID, 'bit_and' in this case.  Expressions
! can be lower-case tree codes with '_expr' stripped off or builtin
! function code names in all-caps, like 'BUILT_IN_SQRT'.
  
!  '@n' denotes a so-called capture.  It captures the operand and lets you
  refer to it in other places of the match-and-simplify.  In the above
  example it is referred to in the replacement expression.  Captures are
! '@' followed by a number or an identifier.
  
       (simplify
         (bit_xor @0 @0)
         { build_zero_cst (type); })
  
!  In this example '@0' is mentioned twice which constrains the matched
  expression to have two equal operands.  Usually matches are constrained
  to equal types.  If operands may be constants and conversions are
! involved, matching by value might be preferred in which case use '@@0'
  to denote a by-value match and the specific operand you want to refer to
  in the result part.  This example also introduces operands written in C
  code.  These can be used in the expression replacements and are supposed
--- 48260,48287 ----
         @0)
  
   This example contains all required parts of an expression
! simplification.  A simplification is wrapped inside a â€˜(simplify ...)â€™
  expression.  That contains at least two operands - an expression that is
  matched with the GIMPLE or GENERIC IL and a replacement expression that
  is returned if the match was successful.
  
!  Expressions have an operator ID, â€˜bit_andâ€™ in this case.  Expressions
! can be lower-case tree codes with â€˜_exprâ€™ stripped off or builtin
! function code names in all-caps, like â€˜BUILT_IN_SQRTâ€™.
  
!  â€˜@nâ€™ denotes a so-called capture.  It captures the operand and lets you
  refer to it in other places of the match-and-simplify.  In the above
  example it is referred to in the replacement expression.  Captures are
! â€˜@â€™ followed by a number or an identifier.
  
       (simplify
         (bit_xor @0 @0)
         { build_zero_cst (type); })
  
!  In this example â€˜@0â€™ is mentioned twice which constrains the matched
  expression to have two equal operands.  Usually matches are constrained
  to equal types.  If operands may be constants and conversions are
! involved, matching by value might be preferred in which case use â€˜@@0â€™
  to denote a by-value match and the specific operand you want to refer to
  in the result part.  This example also introduces operands written in C
  code.  These can be used in the expression replacements and are supposed
*************** you cannot generate expressions in C cod
*** 48289,48296 ****
         (if (!integer_zerop (@1))
          @0))
  
!  Here '@0' captures the first operand of the trunc_mod expression which
! is also predicated with 'integer_zerop'.  Expression operands may be
  either expressions, predicates or captures.  Captures can be
  unconstrained or capture expressions or predicates.
  
--- 48293,48300 ----
         (if (!integer_zerop (@1))
          @0))
  
!  Here â€˜@0â€™ captures the first operand of the trunc_mod expression which
! is also predicated with â€˜integer_zeropâ€™.  Expression operands may be
  either expressions, predicates or captures.  Captures can be
  unconstrained or capture expressions or predicates.
  
*************** unconstrained or capture expressions or
*** 48298,48309 ****
  if-expression.  This condition is evaluated after the expression matched
  in the IL and is required to evaluate to true to enable the replacement
  expression in the second operand position.  The expression operand of
! the 'if' is a standard C expression which may contain references to
! captures.  The 'if' has an optional third operand which may contain the
  replacement expression that is enabled when the condition evaluates to
  false.
  
!  A 'if' expression can be used to specify a common condition for
  multiple simplify patterns, avoiding the need to repeat that multiple
  times:
  
--- 48302,48313 ----
  if-expression.  This condition is evaluated after the expression matched
  in the IL and is required to evaluate to true to enable the replacement
  expression in the second operand position.  The expression operand of
! the â€˜ifâ€™ is a standard C expression which may contain references to
! captures.  The â€˜ifâ€™ has an optional third operand which may contain the
  replacement expression that is enabled when the condition evaluates to
  false.
  
!  A â€˜ifâ€™ expression can be used to specify a common condition for
  multiple simplify patterns, avoiding the need to repeat that multiple
  times:
  
*************** times:
*** 48316,48328 ****
           (minus (minus @0 @1) @0)
           (negate @1)))
  
!  Note that 'if's in outer position do not have the optional else clause
  but instead have multiple then clauses.
  
   Ifs can be nested.
  
!  There exists a 'switch' expression which can be used to chain
! conditions avoiding nesting 'if's too much:
  
       (simplify
        (simple_comparison @0 REAL_CST@1)
--- 48320,48332 ----
           (minus (minus @0 @1) @0)
           (negate @1)))
  
!  Note that â€˜ifâ€™s in outer position do not have the optional else clause
  but instead have multiple then clauses.
  
   Ifs can be nested.
  
!  There exists a â€˜switchâ€™ expression which can be used to chain
! conditions avoiding nesting â€˜ifâ€™s too much:
  
       (simplify
        (simple_comparison @0 REAL_CST@1)
*************** conditions avoiding nesting 'if's too mu
*** 48348,48355 ****
               && ! HONOR_SNANS (@1))
           { constant_boolean_node (cmp == NE_EXPR, type); }))))
  
!  which has the second 'if' in the else operand of the first.  The
! 'switch' expression takes 'if' expressions as operands (which may not
  have else clauses) and as a last operand a replacement expression which
  should be enabled by default if no other condition evaluated to true.
  
--- 48352,48359 ----
               && ! HONOR_SNANS (@1))
           { constant_boolean_node (cmp == NE_EXPR, type); }))))
  
!  which has the second â€˜ifâ€™ in the else operand of the first.  The
! â€˜switchâ€™ expression takes â€˜ifâ€™ expressions as operands (which may not
  have else clauses) and as a last operand a replacement expression which
  should be enabled by default if no other condition evaluated to true.
  
*************** should be enabled by default if no other
*** 48372,48390 ****
         })
       #endif
  
!  In the above example, '@2' captures the result of the expression '(addr
! @0)'.  For the outermost expression only its type can be captured, and
! the keyword 'type' is reserved for this purpose.  The above example also
! gives a way to conditionalize patterns to only apply to 'GIMPLE' or
! 'GENERIC' by means of using the pre-defined preprocessor macros 'GIMPLE'
! and 'GENERIC' and using preprocessor directives.
  
       (simplify
         (bit_and:c integral_op_p@0 (bit_ior:c (bit_not @0) @1))
         (bit_and @1 @0))
  
   Here we introduce flags on match expressions.  The flag used above,
! 'c', denotes that the expression should be also matched commutated.
  Thus the above match expression is really the following four match
  expressions:
  
--- 48376,48394 ----
         })
       #endif
  
!  In the above example, â€˜@2â€™ captures the result of the expression â€˜(addr
! @0)â€™.  For the outermost expression only its type can be captured, and
! the keyword â€˜typeâ€™ is reserved for this purpose.  The above example also
! gives a way to conditionalize patterns to only apply to â€˜GIMPLEâ€™ or
! â€˜GENERICâ€™ by means of using the pre-defined preprocessor macros â€˜GIMPLEâ€™
! and â€˜GENERICâ€™ and using preprocessor directives.
  
       (simplify
         (bit_and:c integral_op_p@0 (bit_ior:c (bit_not @0) @1))
         (bit_and @1 @0))
  
   Here we introduce flags on match expressions.  The flag used above,
! â€˜câ€™, denotes that the expression should be also matched commutated.
  Thus the above match expression is really the following four match
  expressions:
  
*************** expressions:
*** 48397,48404 ****
  before matching, so for example constant operands always come second in
  commutative expressions.
  
!  The second supported flag is 's' which tells the code generator to fail
! the pattern if the expression marked with 's' does have more than one
  use and the simplification results in an expression with more than one
  operator.  For example in
  
--- 48401,48408 ----
  before matching, so for example constant operands always come second in
  commutative expressions.
  
!  The second supported flag is â€˜sâ€™ which tells the code generator to fail
! the pattern if the expression marked with â€˜sâ€™ does have more than one
  use and the simplification results in an expression with more than one
  operator.  For example in
  
*************** operator.  For example in
*** 48406,48419 ****
         (pointer_plus (pointer_plus:s @0 @1) @3)
         (pointer_plus @0 (plus @1 @3)))
  
!  this avoids the association if '(pointer_plus @0 @1)' is used outside
  of the matched expression and thus it would stay live and not trivially
! removed by dead code elimination.  Now consider '((x + 3) + -3)' with
! the temporary holding '(x + 3)' used elsewhere.  This simplifies down to
! 'x' which is desirable and thus flagging with 's' does not prevent the
! transform.  Now consider '((x + 3) + 1)' which simplifies to '(x + 4)'.
! Despite being flagged with 's' the simplification will be performed.
! The simplification of '((x + a) + 1)' to '(x + (a + 1))' will not
  performed in this case though.
  
   More features exist to avoid too much repetition.
--- 48410,48423 ----
         (pointer_plus (pointer_plus:s @0 @1) @3)
         (pointer_plus @0 (plus @1 @3)))
  
!  this avoids the association if â€˜(pointer_plus @0 @1)â€™ is used outside
  of the matched expression and thus it would stay live and not trivially
! removed by dead code elimination.  Now consider â€˜((x + 3) + -3)â€™ with
! the temporary holding â€˜(x + 3)â€™ used elsewhere.  This simplifies down to
! â€˜xâ€™ which is desirable and thus flagging with â€˜sâ€™ does not prevent the
! transform.  Now consider â€˜((x + 3) + 1)â€™ which simplifies to â€˜(x + 4)â€™.
! Despite being flagged with â€˜sâ€™ the simplification will be performed.
! The simplification of â€˜((x + a) + 1)â€™ to â€˜(x + (a + 1))â€™ will not
  performed in this case though.
  
   More features exist to avoid too much repetition.
*************** performed in this case though.
*** 48423,48430 ****
           (op @0 integer_zerop)
           @0))
  
!  A 'for' expression can be used to repeat a pattern for each operator
! specified, substituting 'op'.  'for' can be nested and a 'for' can have
  multiple operators to iterate.
  
       (for opa (plus minus)
--- 48427,48434 ----
           (op @0 integer_zerop)
           @0))
  
!  A â€˜forâ€™ expression can be used to repeat a pattern for each operator
! specified, substituting â€˜opâ€™.  â€˜forâ€™ can be nested and a â€˜forâ€™ can have
  multiple operators to iterate.
  
       (for opa (plus minus)
*************** multiple operators to iterate.
*** 48432,48455 ****
         (for opc (plus minus)
           (simplify...
  
!  In this example the pattern will be repeated four times with 'opa, opb,
! opc' being 'plus, minus, plus'; 'plus, minus, minus'; 'minus, plus,
! plus'; 'minus, plus, minus'.
  
!  To avoid repeating operator lists in 'for' you can name them via
  
       (define_operator_list pmm plus minus mult)
  
!  and use them in 'for' operator lists where they get expanded.
  
       (for opa (pmm trunc_div)
        (simplify...
  
!  So this example iterates over 'plus', 'minus', 'mult' and 'trunc_div'.
  
   Using operator lists can also remove the need to explicitly write a
! 'for'.  All operator list uses that appear in a 'simplify' or 'match'
! pattern in operator positions will implicitly be added to a new 'for'.
  For example
  
       (define_operator_list SQRT BUILT_IN_SQRTF BUILT_IN_SQRT BUILT_IN_SQRTL)
--- 48436,48459 ----
         (for opc (plus minus)
           (simplify...
  
!  In this example the pattern will be repeated four times with â€˜opa, opb,
! opcâ€™ being â€˜plus, minus, plusâ€™; â€˜plus, minus, minusâ€™; â€˜minus, plus,
! plusâ€™; â€˜minus, plus, minusâ€™.
  
!  To avoid repeating operator lists in â€˜forâ€™ you can name them via
  
       (define_operator_list pmm plus minus mult)
  
!  and use them in â€˜forâ€™ operator lists where they get expanded.
  
       (for opa (pmm trunc_div)
        (simplify...
  
!  So this example iterates over â€˜plusâ€™, â€˜minusâ€™, â€˜multâ€™ and â€˜trunc_divâ€™.
  
   Using operator lists can also remove the need to explicitly write a
! â€˜forâ€™.  All operator list uses that appear in a â€˜simplifyâ€™ or â€˜matchâ€™
! pattern in operator positions will implicitly be added to a new â€˜forâ€™.
  For example
  
       (define_operator_list SQRT BUILT_IN_SQRTF BUILT_IN_SQRT BUILT_IN_SQRTL)
*************** For example
*** 48466,48477 ****
         (SQRT (POW @0 @1))
         (POW (abs @0) (mult @1 { built_real (TREE_TYPE (@1), dconsthalf); }))))
  
!  'for's and operator lists can include the special identifier 'null'
  that matches nothing and can never be generated.  This can be used to
  pad an operator list so that it has a standard form, even if there isn't
  a suitable operator for every form.
  
!  Another building block are 'with' expressions in the result expression
  which nest the generated code in a new C block followed by its argument:
  
       (simplify
--- 48470,48481 ----
         (SQRT (POW @0 @1))
         (POW (abs @0) (mult @1 { built_real (TREE_TYPE (@1), dconsthalf); }))))
  
!  â€˜forâ€™s and operator lists can include the special identifier â€˜nullâ€™
  that matches nothing and can never be generated.  This can be used to
  pad an operator list so that it has a standard form, even if there isn't
  a suitable operator for every form.
  
!  Another building block are â€˜withâ€™ expressions in the result expression
  which nest the generated code in a new C block followed by its argument:
  
       (simplify
*************** which nest the generated code in a new C
*** 48479,48506 ****
        (with { tree utype = unsigned_type_for (type); }
         (convert (mult (convert:utype @0) (convert:utype @1)))))
  
!  This allows code nested in the 'with' to refer to the declared
  variables.  In the above case we use the feature to specify the type of
! a generated expression with the ':type' syntax where 'type' needs to be
  an identifier that refers to the desired type.  Usually the types of the
  generated result expressions are determined from the context, but
  sometimes like in the above case it is required that you specify them
  explicitly.
  
!  Another modifier for generated expressions is '^' which tells the
  machinery to try more matches for some special cases.  For example,
! normally the 'cond' only allows the gimple assign when matching.  It
! will also try to match the gimple 'PHI' besides gimple assign if
! appending the '^' to the 'cond'.  Aka 'cond^'.  Consider below example
  
       (match (unsigned_sat_add @0 @1)
        (cond^ (ge (plus:c@2 @0 @1) @0) @2 integer_minus_onep))
  
   The above matching will generate the predicate function named
! 'gimple_unsigned_sat_add' that accepts both the gimple assign and gimple
! 'PHI'.
  
!  Another modifier for generated expressions is '!' which tells the
  machinery to only consider the simplification in case the marked
  expression simplified to a simple operand.  Consider for example
  
--- 48483,48510 ----
        (with { tree utype = unsigned_type_for (type); }
         (convert (mult (convert:utype @0) (convert:utype @1)))))
  
!  This allows code nested in the â€˜withâ€™ to refer to the declared
  variables.  In the above case we use the feature to specify the type of
! a generated expression with the â€˜:typeâ€™ syntax where â€˜typeâ€™ needs to be
  an identifier that refers to the desired type.  Usually the types of the
  generated result expressions are determined from the context, but
  sometimes like in the above case it is required that you specify them
  explicitly.
  
!  Another modifier for generated expressions is â€˜^â€™ which tells the
  machinery to try more matches for some special cases.  For example,
! normally the â€˜condâ€™ only allows the gimple assign when matching.  It
! will also try to match the gimple â€˜PHIâ€™ besides gimple assign if
! appending the â€˜^â€™ to the â€˜condâ€™.  Aka â€˜cond^â€™.  Consider below example
  
       (match (unsigned_sat_add @0 @1)
        (cond^ (ge (plus:c@2 @0 @1) @0) @2 integer_minus_onep))
  
   The above matching will generate the predicate function named
! â€˜gimple_unsigned_sat_addâ€™ that accepts both the gimple assign and gimple
! â€˜PHIâ€™.
  
!  Another modifier for generated expressions is â€˜!â€™ which tells the
  machinery to only consider the simplification in case the marked
  expression simplified to a simple operand.  Consider for example
  
*************** expression simplified to a simple operan
*** 48508,48545 ****
         (plus (vec_cond:s @0 @1 @2) @3)
         (vec_cond @0 (plus! @1 @3) (plus! @2 @3)))
  
!  which moves the outer 'plus' operation to the inner arms of the
! 'vec_cond' expression but only if the actual plus operations both
! simplify.  Note that on 'GENERIC' a simple operand means that the result
! satisfies '!EXPR_P' which can be limiting if the operation itself
  simplifies but the remaining operand is an (unrelated) expression.
  
   As intermediate conversions are often optional there is a way to avoid
  the need to repeat patterns both with and without such conversions.
! Namely you can mark a conversion as being optional with a '?':
  
       (simplify
        (eq (convert@0 @1) (convert? @2))
        (eq @1 (convert @2)))
  
!  which will match both '(eq (convert @1) (convert @2))' and '(eq
! (convert @1) @2)'.  The optional converts are supposed to be all either
! present or not, thus '(eq (convert? @1) (convert? @2))' will result in
  two patterns only.  If you want to match all four combinations you have
! access to two additional conditional converts as in '(eq (convert1? @1)
! (convert2? @2))'.
  
!  The support for '?' marking extends to all unary operations including
! predicates you declare yourself with 'match'.
  
   Predicates available from the GCC middle-end need to be made available
! explicitly via 'define_predicates':
  
       (define_predicates
        integer_onep integer_zerop integer_all_onesp)
  
   You can also define predicates using the pattern matching language and
! the 'match' form:
  
       (match negate_expr_p
        INTEGER_CST
--- 48512,48549 ----
         (plus (vec_cond:s @0 @1 @2) @3)
         (vec_cond @0 (plus! @1 @3) (plus! @2 @3)))
  
!  which moves the outer â€˜plusâ€™ operation to the inner arms of the
! â€˜vec_condâ€™ expression but only if the actual plus operations both
! simplify.  Note that on â€˜GENERICâ€™ a simple operand means that the result
! satisfies â€˜!EXPR_Pâ€™ which can be limiting if the operation itself
  simplifies but the remaining operand is an (unrelated) expression.
  
   As intermediate conversions are often optional there is a way to avoid
  the need to repeat patterns both with and without such conversions.
! Namely you can mark a conversion as being optional with a â€˜?â€™:
  
       (simplify
        (eq (convert@0 @1) (convert? @2))
        (eq @1 (convert @2)))
  
!  which will match both â€˜(eq (convert @1) (convert @2))â€™ and â€˜(eq
! (convert @1) @2)â€™.  The optional converts are supposed to be all either
! present or not, thus â€˜(eq (convert? @1) (convert? @2))â€™ will result in
  two patterns only.  If you want to match all four combinations you have
! access to two additional conditional converts as in â€˜(eq (convert1? @1)
! (convert2? @2))â€™.
  
!  The support for â€˜?â€™ marking extends to all unary operations including
! predicates you declare yourself with â€˜matchâ€™.
  
   Predicates available from the GCC middle-end need to be made available
! explicitly via â€˜define_predicatesâ€™:
  
       (define_predicates
        integer_onep integer_zerop integer_all_onesp)
  
   You can also define predicates using the pattern matching language and
! the â€˜matchâ€™ form:
  
       (match negate_expr_p
        INTEGER_CST
*************** the 'match' form:
*** 48548,48558 ****
       (match negate_expr_p
        (negate @0))
  
!  This shows that for 'match' expressions there is 't' available which
  captures the outermost expression (something not possible in the
! 'simplify' context).  As you can see 'match' has an identifier as first
  operand which is how you refer to the predicate in patterns.  Multiple
! 'match' for the same identifier add additional cases where the predicate
  matches.
  
   Predicates can also match an expression in which case you need to
--- 48552,48562 ----
       (match negate_expr_p
        (negate @0))
  
!  This shows that for â€˜matchâ€™ expressions there is â€˜tâ€™ available which
  captures the outermost expression (something not possible in the
! â€˜simplifyâ€™ context).  As you can see â€˜matchâ€™ has an identifier as first
  operand which is how you refer to the predicate in patterns.  Multiple
! â€˜matchâ€™ for the same identifier add additional cases where the predicate
  matches.
  
   Predicates can also match an expression in which case you need to
*************** whole-program analysis).
*** 48603,48627 ****
   The implementation is read-only: it doesn't attempt to change anything,
  just emit warnings.
  
!  The gimple representation can be seen using '-fdump-ipa-analyzer'.
       Tip: If the analyzer ICEs before this is written out, one
!      workaround is to use '--param=analyzer-bb-explosion-factor=0' to
       force the analyzer to bail out after analyzing the first basic
       block.
  
!  First, we build a 'supergraph' which combines the callgraph and all of
  the CFGs into a single directed graph, with both interprocedural and
  intraprocedural edges.  The nodes and edges in the supergraph are called
! "supernodes" and "superedges", and often referred to in code as 'snodes'
! and 'sedges'.  Basic blocks in the CFGs are split at interprocedural
  calls, so there can be more than one supernode per basic block.  Most
  statements will be in just one supernode, but a call statement can
  appear in two supernodes: at the end of one for the call, and again at
  the start of another for the return.
  
!  The supergraph can be seen using '-fdump-analyzer-supergraph'.
  
!  We then build an 'analysis_plan' which walks the callgraph to determine
  which calls might be suitable for being summarized (rather than fully
  explored) and thus in what order to explore the functions.
  
--- 48607,48631 ----
   The implementation is read-only: it doesn't attempt to change anything,
  just emit warnings.
  
!  The gimple representation can be seen using â€˜-fdump-ipa-analyzerâ€™.
       Tip: If the analyzer ICEs before this is written out, one
!      workaround is to use â€˜--param=analyzer-bb-explosion-factor=0â€™ to
       force the analyzer to bail out after analyzing the first basic
       block.
  
!  First, we build a â€˜supergraphâ€™ which combines the callgraph and all of
  the CFGs into a single directed graph, with both interprocedural and
  intraprocedural edges.  The nodes and edges in the supergraph are called
! "supernodes" and "superedges", and often referred to in code as â€˜snodesâ€™
! and â€˜sedgesâ€™.  Basic blocks in the CFGs are split at interprocedural
  calls, so there can be more than one supernode per basic block.  Most
  statements will be in just one supernode, but a call statement can
  appear in two supernodes: at the end of one for the call, and again at
  the start of another for the return.
  
!  The supergraph can be seen using â€˜-fdump-analyzer-supergraphâ€™.
  
!  We then build an â€˜analysis_planâ€™ which walks the callgraph to determine
  which calls might be suitable for being summarized (rather than fully
  explored) and thus in what order to explore the functions.
  
*************** CFG and supergraph, with points (and thu
*** 48656,48662 ****
  for various events, including before individual statements.  By default
  the exploded graph merges multiple consecutive statements in a supernode
  into one exploded edge to minimize the size of the exploded graph.  This
! can be suppressed via '-fanalyzer-fine-grained'.  The fine-grained
  approach seems to make things simpler and more debuggable that other
  approaches I tried, in that each point is responsible for one thing.
  
--- 48660,48666 ----
  for various events, including before individual statements.  By default
  the exploded graph merges multiple consecutive statements in a supernode
  into one exploded edge to minimize the size of the exploded graph.  This
! can be suppressed via â€˜-fanalyzer-fine-grainedâ€™.  The fine-grained
  approach seems to make things simpler and more debuggable that other
  approaches I tried, in that each point is responsible for one thing.
  
*************** the stack of callsites below them, so th
*** 48665,48687 ****
  correspond to interprocedurally valid paths: we always return to the
  correct call site, propagating state information accordingly.  We avoid
  infinite recursion by stopping the analysis if a callsite appears more
! than 'analyzer-max-recursion-depth' in a callstring (defaulting to 2).
  
  26.1.2 Graphs
  -------------
  
  Nodes and edges in the exploded graph are called "exploded nodes" and
! "exploded edges" and often referred to in the code as 'enodes' and
! 'eedges' (especially when distinguishing them from the 'snodes' and
! 'sedges' in the supergraph).
  
   Each graph numbers its nodes, giving unique identifiers - supernodes
! are referred to throughout dumps in the form 'SN': INDEX' and exploded
! nodes in the form 'EN: INDEX' (e.g.  'SN: 2' and 'EN:29').
  
!  The supergraph can be seen using '-fdump-analyzer-supergraph-graph'.
  
!  The exploded graph can be seen using '-fdump-analyzer-exploded-graph'
  and other dump options.  Exploded nodes are color-coded in the .dot
  output based on state-machine states to make it easier to see state
  changes at a glance.
--- 48669,48691 ----
  correspond to interprocedurally valid paths: we always return to the
  correct call site, propagating state information accordingly.  We avoid
  infinite recursion by stopping the analysis if a callsite appears more
! than â€˜analyzer-max-recursion-depthâ€™ in a callstring (defaulting to 2).
  
  26.1.2 Graphs
  -------------
  
  Nodes and edges in the exploded graph are called "exploded nodes" and
! "exploded edges" and often referred to in the code as â€˜enodesâ€™ and
! â€˜eedgesâ€™ (especially when distinguishing them from the â€˜snodesâ€™ and
! â€˜sedgesâ€™ in the supergraph).
  
   Each graph numbers its nodes, giving unique identifiers - supernodes
! are referred to throughout dumps in the form â€˜SN': INDEXâ€™ and exploded
! nodes in the form â€˜EN: INDEXâ€™ (e.g.  â€˜SN: 2â€™ and â€˜EN:29â€™).
  
!  The supergraph can be seen using â€˜-fdump-analyzer-supergraph-graphâ€™.
  
!  The exploded graph can be seen using â€˜-fdump-analyzer-exploded-graphâ€™
  and other dump options.  Exploded nodes are color-coded in the .dot
  output based on state-machine states to make it easier to see state
  changes at a glance.
*************** changes at a glance.
*** 48690,48697 ****
  ---------------------
  
  There's a tension between:
!    * precision of analysis in the straight-line case, vs
!    * exponential blow-up in the face of control flow.
  
   For example, in general, given this CFG:
  
--- 48694,48701 ----
  ---------------------
  
  There's a tension between:
!    â€¢ precision of analysis in the straight-line case, vs
!    â€¢ exponential blow-up in the face of control flow.
  
   For example, in general, given this CFG:
  
*************** exponential growth of the exploded graph
*** 48729,48735 ****
  
    a. state pruning: which tries to discard state that won't be relevant
       later on withing the function.  This can be disabled via
!      '-fno-analyzer-state-purge'.
  
    b. state merging.  We can try to find the commonality between two
       program_state instances to make a third, simpler program_state.  We
--- 48733,48739 ----
  
    a. state pruning: which tries to discard state that won't be relevant
       later on withing the function.  This can be disabled via
!      â€˜-fno-analyzer-state-purgeâ€™.
  
    b. state merging.  We can try to find the commonality between two
       program_state instances to make a third, simpler program_state.  We
*************** exponential growth of the exploded graph
*** 48793,48819 ****
       where some duplication has occurred, but only for the places where
       the the different paths are worth exploringly separately.
  
!      Merging can be disabled via '-fno-analyzer-state-merge'.
  
  26.1.4 Region Model
  -------------------
  
! Part of the state stored at a 'exploded_node' is a 'region_model'.  This
  is an implementation of the region-based ternary model described in "A
  Memory Model for Static Analysis of C Programs"
  (https://www.researchgate.net/publication/221430855_A_Memory_Model_for_Static_Analysis_of_C_Programs)
  (Zhongxing Xu, Ted Kremenek, and Jian Zhang).
  
!  A 'region_model' encapsulates a representation of the state of memory,
! with a 'store' recording a binding between 'region' instances, to
! 'svalue' instances.  The bindings are organized into clusters, where
  regions accessible via well-defined pointer arithmetic are in the same
  cluster.  The representation is graph-like because values can be
! pointers to regions.  It also stores a 'constraint_manager', capturing
  relationships between the values.
  
!  Because each node in the 'exploded_graph' has a 'region_model', and
! each of the latter is graph-like, the 'exploded_graph' is in some ways a
  graph of graphs.
  
   There are several "dump" functions for use when debugging the analyzer.
--- 48797,48823 ----
       where some duplication has occurred, but only for the places where
       the the different paths are worth exploringly separately.
  
!      Merging can be disabled via â€˜-fno-analyzer-state-mergeâ€™.
  
  26.1.4 Region Model
  -------------------
  
! Part of the state stored at a â€˜exploded_nodeâ€™ is a â€˜region_modelâ€™.  This
  is an implementation of the region-based ternary model described in "A
  Memory Model for Static Analysis of C Programs"
  (https://www.researchgate.net/publication/221430855_A_Memory_Model_for_Static_Analysis_of_C_Programs)
  (Zhongxing Xu, Ted Kremenek, and Jian Zhang).
  
!  A â€˜region_modelâ€™ encapsulates a representation of the state of memory,
! with a â€˜storeâ€™ recording a binding between â€˜regionâ€™ instances, to
! â€˜svalueâ€™ instances.  The bindings are organized into clusters, where
  regions accessible via well-defined pointer arithmetic are in the same
  cluster.  The representation is graph-like because values can be
! pointers to regions.  It also stores a â€˜constraint_managerâ€™, capturing
  relationships between the values.
  
!  Because each node in the â€˜exploded_graphâ€™ has a â€˜region_modelâ€™, and
! each of the latter is graph-like, the â€˜exploded_graphâ€™ is in some ways a
  graph of graphs.
  
   There are several "dump" functions for use when debugging the analyzer.
*************** graph of graphs.
*** 48833,48843 ****
         /* etc.  */
       }
  
!  and the state at the point '/* HERE */' for the interprocedural
! analysis case where 'calls_malloc' returns back to 'test'.
  
!  Here's an example of printing a 'program_state' at '/* HERE */',
! showing the 'region_model' within it, along with state for the 'malloc'
  state machine.
  
       (gdb) break region_model::on_return
--- 48837,48847 ----
         /* etc.  */
       }
  
!  and the state at the point â€˜/* HERE */â€™ for the interprocedural
! analysis case where â€˜calls_mallocâ€™ returns back to â€˜testâ€™.
  
!  Here's an example of printing a â€˜program_stateâ€™ at â€˜/* HERE */â€™,
! showing the â€˜region_modelâ€™ within it, along with state for the â€˜mallocâ€™
  state machine.
  
       (gdb) break region_model::on_return
*************** state machine.
*** 48863,48889 ****
          â•°â”€ 0x468cb40: &HEAP_ALLOCATED_REGION(27): unchecked ({free}) (â€˜result_4â€™)
  
   Within the store, there are bindings clusters for the SSA names for the
! various local variables within frames for 'test' and 'calls_malloc'.
  For example,
  
!    * within 'test' the whole cluster for '_1' is bound to a
!      'binop_svalue' representing 'n * 4', and
!    * within 'test' the whole cluster for 'result_4' is bound to a
!      'region_svalue' pointing at 'HEAP_ALLOCATED_REGION(12)'.
  
!  Additionally, this latter pointer has the 'unchecked' state for the
! 'malloc' state machine indicating it hasn't yet been checked against
! 'NULL' since the allocation call.
  
   We also see that the state has captured the size of the heap-allocated
  region ("Dynamic Extents").
  
   This visualization can also be seen within the output of
! '-fdump-analyzer-exploded-nodes-2' and
! '-fdump-analyzer-exploded-nodes-3'.
  
   As well as the above visualizations of states, there are tree-like
! visualizations for instances of 'svalue' and 'region', showing their IDs
  and how they are constructed from simpler symbols:
  
       (gdb) break region_model::set_dynamic_extents
--- 48867,48893 ----
          â•°â”€ 0x468cb40: &HEAP_ALLOCATED_REGION(27): unchecked ({free}) (â€˜result_4â€™)
  
   Within the store, there are bindings clusters for the SSA names for the
! various local variables within frames for â€˜testâ€™ and â€˜calls_mallocâ€™.
  For example,
  
!    â€¢ within â€˜testâ€™ the whole cluster for â€˜_1â€™ is bound to a
!      â€˜binop_svalueâ€™ representing â€˜n * 4â€™, and
!    â€¢ within â€˜testâ€™ the whole cluster for â€˜result_4â€™ is bound to a
!      â€˜region_svalueâ€™ pointing at â€˜HEAP_ALLOCATED_REGION(12)â€™.
  
!  Additionally, this latter pointer has the â€˜uncheckedâ€™ state for the
! â€˜mallocâ€™ state machine indicating it hasn't yet been checked against
! â€˜NULLâ€™ since the allocation call.
  
   We also see that the state has captured the size of the heap-allocated
  region ("Dynamic Extents").
  
   This visualization can also be seen within the output of
! â€˜-fdump-analyzer-exploded-nodes-2â€™ and
! â€˜-fdump-analyzer-exploded-nodes-3â€™.
  
   As well as the above visualizations of states, there are tree-like
! visualizations for instances of â€˜svalueâ€™ and â€˜regionâ€™, showing their IDs
  and how they are constructed from simpler symbols:
  
       (gdb) break region_model::set_dynamic_extents
*************** and how they are constructed from simple
*** 48901,48914 ****
       â”‚           â•°â”€ parent: (0): root region
       â•°â”€ (16): â€˜size_tâ€™: constant_svalue (â€˜4â€™)
  
!  i.e.  that 'size_in_bytes' is a 'binop_svalue' expressing the result of
  multiplying
  
!    * the initial value of the 'PARM_DECL' 'n_2(D)' for the parameter 'n'
!      within the frame for 'test' by
!    * the constant value '4'.
  
!  The above visualizations rely on the 'text_art::widget' framework,
  which performs significant work to lay out the output, so there is also
  an earlier, simpler, form of dumping available.  For states there is:
  
--- 48905,48918 ----
       â”‚           â•°â”€ parent: (0): root region
       â•°â”€ (16): â€˜size_tâ€™: constant_svalue (â€˜4â€™)
  
!  i.e.  that â€˜size_in_bytesâ€™ is a â€˜binop_svalueâ€™ expressing the result of
  multiplying
  
!    â€¢ the initial value of the â€˜PARM_DECLâ€™ â€˜n_2(D)â€™ for the parameter â€˜nâ€™
!      within the frame for â€˜testâ€™ by
!    â€¢ the constant value â€˜4â€™.
  
!  The above visualizations rely on the â€˜text_art::widgetâ€™ framework,
  which performs significant work to lay out the output, so there is also
  an earlier, simpler, form of dumping available.  For states there is:
  
*************** an earlier, simpler, form of dumping ava
*** 48931,48937 ****
       malloc:
         0x468cb40: &HEAP_ALLOCATED_REGION(27): unchecked ({free}) (â€˜result_4â€™)
  
!  or for 'region_model' just:
  
       (gdb) call state->m_region_model->debug()
       stack depth: 2
--- 48935,48941 ----
       malloc:
         0x468cb40: &HEAP_ALLOCATED_REGION(27): unchecked ({free}) (â€˜result_4â€™)
  
!  or for â€˜region_modelâ€™ just:
  
       (gdb) call state->m_region_model->debug()
       stack depth: 2
*************** an earlier, simpler, form of dumping ava
*** 48949,48956 ****
       dynamic_extents:
         HEAP_ALLOCATED_REGION(27): (INIT_VAL(n_2(D))*(size_t)4)
  
!  and for instances of 'svalue' and 'region' there is this older dump
! implementation, which takes a 'bool simple' flag controlling the
  verbosity of the dump:
  
       (gdb) call size_in_bytes->dump(true)
--- 48953,48960 ----
       dynamic_extents:
         HEAP_ALLOCATED_REGION(27): (INIT_VAL(n_2(D))*(size_t)4)
  
!  and for instances of â€˜svalueâ€™ and â€˜regionâ€™ there is this older dump
! implementation, which takes a â€˜bool simpleâ€™ flag controlling the
  verbosity of the dump:
  
       (gdb) call size_in_bytes->dump(true)
*************** verbosity of the dump:
*** 48963,48974 ****
  ---------------------
  
  We need to explain to the user what the problem is, and to persuade them
! that there really is a problem.  Hence having a 'diagnostic_path' isn't
  just an incidental detail of the analyzer; it's required.
  
   Paths ought to be:
!    * interprocedurally-valid
!    * feasible
  
   Without state-merging, all paths in the exploded graph are feasible (in
  terms of constraints being satisfied).  With state-merging, paths in the
--- 48967,48978 ----
  ---------------------
  
  We need to explain to the user what the problem is, and to persuade them
! that there really is a problem.  Hence having a â€˜diagnostic_pathâ€™ isn't
  just an incidental detail of the analyzer; it's required.
  
   Paths ought to be:
!    â€¢ interprocedurally-valid
!    â€¢ feasible
  
   Without state-merging, all paths in the exploded graph are feasible (in
  terms of constraints being satisfied).  With state-merging, paths in the
*************** target node is the shortest possible pat
*** 49003,49009 ****
  shortest possible path, but if that fails, we explore progressively
  longer paths, eventually trying iterations through loops.  The
  exploration is captured in the feasible_graph, which can be dumped as a
! .dot file via '-fdump-analyzer-feasibility' to visualize the
  exploration.  The indices of the feasible nodes show the order in which
  they were created.  We effectively explore the tree of feasible paths in
  order of shortest path until we either find a feasible path to the
--- 49007,49013 ----
  shortest possible path, but if that fails, we explore progressively
  longer paths, eventually trying iterations through loops.  The
  exploration is captured in the feasible_graph, which can be dumped as a
! .dot file via â€˜-fdump-analyzer-feasibilityâ€™ to visualize the
  exploration.  The indices of the feasible nodes show the order in which
  they were created.  We effectively explore the tree of feasible paths in
  order of shortest path until we either find a feasible path to the
*************** target node, or hit a limit and give up.
*** 49013,49040 ****
  hopefully keeps the complexity manageable.
  
   This algorithm can be disabled (for debugging purposes) via
! '-fno-analyzer-feasibility', which simply uses the shortest path, and
  notes if it is infeasible.
  
!  The above gives us a shortest feasible 'exploded_path' through the
! 'exploded_graph' (a list of 'exploded_edge *').  We use this
! 'exploded_path' to build a 'diagnostic_path' (a list of *events* for the
! diagnostic subsystem) - specifically a 'checker_path'.
  
!  Having built the 'checker_path', we prune it to try to eliminate events
  that aren't relevant, to minimize how much the user has to read.
  
   After pruning, we notify each event in the path of its ID and record
  the IDs of interesting events, allowing for events to refer to other
! events in their descriptions.  The 'pending_diagnostic' class has
  various vfuncs to support emitting more precise descriptions, so that
  e.g.
  
!    * a deref-of-unchecked-malloc diagnostic might use:
              returning possibly-NULL pointer to 'make_obj' from 'allocator'
!      for a 'return_event' to make it clearer how the unchecked value
       moves from callee back to caller
!    * a double-free diagnostic might use:
              second 'free' here; first 'free' was at (3)
       and a use-after-free might use
              use after 'free' here; memory was freed at (2)
--- 49017,49044 ----
  hopefully keeps the complexity manageable.
  
   This algorithm can be disabled (for debugging purposes) via
! â€˜-fno-analyzer-feasibilityâ€™, which simply uses the shortest path, and
  notes if it is infeasible.
  
!  The above gives us a shortest feasible â€˜exploded_pathâ€™ through the
! â€˜exploded_graphâ€™ (a list of â€˜exploded_edge *â€™).  We use this
! â€˜exploded_pathâ€™ to build a â€˜diagnostic_pathâ€™ (a list of *events* for the
! diagnostic subsystem) - specifically a â€˜checker_pathâ€™.
  
!  Having built the â€˜checker_pathâ€™, we prune it to try to eliminate events
  that aren't relevant, to minimize how much the user has to read.
  
   After pruning, we notify each event in the path of its ID and record
  the IDs of interesting events, allowing for events to refer to other
! events in their descriptions.  The â€˜pending_diagnosticâ€™ class has
  various vfuncs to support emitting more precise descriptions, so that
  e.g.
  
!    â€¢ a deref-of-unchecked-malloc diagnostic might use:
              returning possibly-NULL pointer to 'make_obj' from 'allocator'
!      for a â€˜return_eventâ€™ to make it clearer how the unchecked value
       moves from callee back to caller
!    â€¢ a double-free diagnostic might use:
              second 'free' here; first 'free' was at (3)
       and a use-after-free might use
              use after 'free' here; memory was freed at (2)
*************** e.g.
*** 49044,49064 ****
  26.1.6 Limitations
  ------------------
  
!    * Only for C so far
!    * The implementation of call summaries is currently very simplistic.
!    * Lack of function pointer analysis
!    * The constraint-handling code assumes reflexivity in some places
       (that values are equal to themselves), which is not the case for
       NaN. As a simple workaround, constraints on floating-point values
       are currently ignored.
!    * There are various other limitations in the region model (grep for
       TODO/xfail in the testsuite).
!    * The constraint_manager's implementation of transitivity is
       currently too expensive to enable by default and so must be
!      manually enabled via '-fanalyzer-transitivity').
!    * The checkers are currently hardcoded and don't allow for user
       extensibility (e.g.  adding allocate/release pairs).
!    * Although the analyzer's test suite has a proof-of-concept test case
       for LTO, LTO support hasn't had extensive testing.  There are
       various lang-specific things in the analyzer that assume C rather
       than LTO. For example, SSA names are printed to the user in "raw"
--- 49048,49068 ----
  26.1.6 Limitations
  ------------------
  
!    â€¢ Only for C so far
!    â€¢ The implementation of call summaries is currently very simplistic.
!    â€¢ Lack of function pointer analysis
!    â€¢ The constraint-handling code assumes reflexivity in some places
       (that values are equal to themselves), which is not the case for
       NaN. As a simple workaround, constraints on floating-point values
       are currently ignored.
!    â€¢ There are various other limitations in the region model (grep for
       TODO/xfail in the testsuite).
!    â€¢ The constraint_manager's implementation of transitivity is
       currently too expensive to enable by default and so must be
!      manually enabled via â€˜-fanalyzer-transitivityâ€™).
!    â€¢ The checkers are currently hardcoded and don't allow for user
       extensibility (e.g.  adding allocate/release pairs).
!    â€¢ Although the analyzer's test suite has a proof-of-concept test case
       for LTO, LTO support hasn't had extensive testing.  There are
       various lang-specific things in the analyzer that assume C rather
       than LTO. For example, SSA names are printed to the user in "raw"
*************** together:
*** 49084,49121 ****
  
   where:
  
!    * './xgcc -B.' is the usual way to invoke a self-built GCC from
!      within the 'BUILDDIR/gcc' subdirectory.
  
!    * '-S' so that the driver ('./xgcc') invokes 'cc1', but doesn't
       bother running the assembler or linker (since the analyzer runs
!      inside 'cc1').
  
!    * '-fanalyzer' enables the analyzer, obviously.
  
!    * '-wrapper gdb,--args' invokes 'cc1' under the debugger so that I
!      can debug 'cc1' and set breakpoints and step through things.
  
!    * '-fdump-analyzer-stderr' so that the logging interface is enabled
       and goes to stderr, which often gives valuable context into what's
       happening when stepping through the analyzer
  
!    * '-fanalyzer-fine-grained' which splits the effect of every
       statement into its own exploded_node, rather than the default
       (which tries to combine successive stmts to reduce the size of the
       exploded_graph).  This makes it easier to see exactly where a
       particular change happens.
  
!    * '-fdump-ipa-analyzer=stderr' which dumps the GIMPLE IR seen by the
       analyzer pass to stderr
  
   Other useful options:
  
!    * '-fdump-analyzer-exploded-graph' which dumps a 'SRC.eg.dot'
       GraphViz file that I can look at (with python-xdot)
  
!    * '-fdump-analyzer-exploded-nodes-2' which dumps a 'SRC.eg.txt' file
!      containing the full 'exploded_graph'.
  
   Assuming that you have the python support scripts for gdb installed
  (which you should do, it makes debugging GCC much easier), you can use:
--- 49088,49125 ----
  
   where:
  
!    â€¢ â€˜./xgcc -B.â€™ is the usual way to invoke a self-built GCC from
!      within the â€˜BUILDDIR/gccâ€™ subdirectory.
  
!    â€¢ â€˜-Sâ€™ so that the driver (â€˜./xgccâ€™) invokes â€˜cc1â€™, but doesn't
       bother running the assembler or linker (since the analyzer runs
!      inside â€˜cc1â€™).
  
!    â€¢ â€˜-fanalyzerâ€™ enables the analyzer, obviously.
  
!    â€¢ â€˜-wrapper gdb,--argsâ€™ invokes â€˜cc1â€™ under the debugger so that I
!      can debug â€˜cc1â€™ and set breakpoints and step through things.
  
!    â€¢ â€˜-fdump-analyzer-stderrâ€™ so that the logging interface is enabled
       and goes to stderr, which often gives valuable context into what's
       happening when stepping through the analyzer
  
!    â€¢ â€˜-fanalyzer-fine-grainedâ€™ which splits the effect of every
       statement into its own exploded_node, rather than the default
       (which tries to combine successive stmts to reduce the size of the
       exploded_graph).  This makes it easier to see exactly where a
       particular change happens.
  
!    â€¢ â€˜-fdump-ipa-analyzer=stderrâ€™ which dumps the GIMPLE IR seen by the
       analyzer pass to stderr
  
   Other useful options:
  
!    â€¢ â€˜-fdump-analyzer-exploded-graphâ€™ which dumps a â€˜SRC.eg.dotâ€™
       GraphViz file that I can look at (with python-xdot)
  
!    â€¢ â€˜-fdump-analyzer-exploded-nodes-2â€™ which dumps a â€˜SRC.eg.txtâ€™ file
!      containing the full â€˜exploded_graphâ€™.
  
   Assuming that you have the python support scripts for gdb installed
  (which you should do, it makes debugging GCC much easier), you can use:
*************** together:
*** 49123,49129 ****
       (gdb) break-on-saved-diagnostic
  
   to put a breakpoint at the place where a diagnostic is saved during
! 'exploded_graph' exploration, to see where a particular diagnostic is
  being saved, and:
  
       (gdb) break-on-diagnostic
--- 49127,49133 ----
       (gdb) break-on-saved-diagnostic
  
   to put a breakpoint at the place where a diagnostic is saved during
! â€˜exploded_graphâ€™ exploration, to see where a particular diagnostic is
  being saved, and:
  
       (gdb) break-on-diagnostic
*************** The analyzer recognizes various special
*** 49138,49148 ****
  debugging the analyzer, and for use in DejaGnu tests.
  
   The declarations of these functions can be seen in the testsuite in
! 'analyzer-decls.h'.  None of these functions are actually implemented in
! terms of code, merely as 'known_function' subclasses (in
! 'gcc/analyzer/kf-analyzer.cc').
  
! '__analyzer_break'
       Add:
              __analyzer_break ();
       to the source being analyzed to trigger a breakpoint in the
--- 49142,49152 ----
  debugging the analyzer, and for use in DejaGnu tests.
  
   The declarations of these functions can be seen in the testsuite in
! â€˜analyzer-decls.hâ€™.  None of these functions are actually implemented in
! terms of code, merely as â€˜known_functionâ€™ subclasses (in
! â€˜gcc/analyzer/kf-analyzer.ccâ€™).
  
! â€˜__analyzer_breakâ€™
       Add:
              __analyzer_break ();
       to the source being analyzed to trigger a breakpoint in the
*************** terms of code, merely as 'known_function
*** 49150,49156 ****
       in the source, it's much easier to effectively step through the
       program state as it's analyzed.
  
! '__analyzer_describe'
       The analyzer handles:
  
            __analyzer_describe (0, expr);
--- 49154,49160 ----
       in the source, it's much easier to effectively step through the
       program state as it's analyzed.
  
! â€˜__analyzer_describeâ€™
       The analyzer handles:
  
            __analyzer_describe (0, expr);
*************** terms of code, merely as 'known_function
*** 49159,49184 ****
       any type), at a verbosity level given by the 1st argument.  This is
       for use when debugging, and may be of use in DejaGnu tests.
  
! '__analyzer_dump'
            __analyzer_dump ();
  
       will dump the copious information about the analyzer's state each
       time it reaches the call in its traversal of the source.
  
! '__analyzer_dump_capacity'
            extern void __analyzer_dump_capacity (const void *ptr);
  
       will emit a warning describing the capacity of the base region of
       the region pointed to by the 1st argument.
  
! '__analyzer_dump_escaped'
            extern void __analyzer_dump_escaped (void);
  
       will emit a warning giving the number of decls that have escaped on
       this analysis path, followed by a comma-separated list of their
       names, in alphabetical order.
  
! '__analyzer_dump_path'
            __analyzer_dump_path ();
  
       will emit a placeholder "note" diagnostic with a path to that call
--- 49163,49188 ----
       any type), at a verbosity level given by the 1st argument.  This is
       for use when debugging, and may be of use in DejaGnu tests.
  
! â€˜__analyzer_dumpâ€™
            __analyzer_dump ();
  
       will dump the copious information about the analyzer's state each
       time it reaches the call in its traversal of the source.
  
! â€˜__analyzer_dump_capacityâ€™
            extern void __analyzer_dump_capacity (const void *ptr);
  
       will emit a warning describing the capacity of the base region of
       the region pointed to by the 1st argument.
  
! â€˜__analyzer_dump_escapedâ€™
            extern void __analyzer_dump_escaped (void);
  
       will emit a warning giving the number of decls that have escaped on
       this analysis path, followed by a comma-separated list of their
       names, in alphabetical order.
  
! â€˜__analyzer_dump_pathâ€™
            __analyzer_dump_path ();
  
       will emit a placeholder "note" diagnostic with a path to that call
*************** terms of code, merely as 'known_function
*** 49186,49193 ****
       useful for writing DejaGnu tests for constraint-tracking and
       feasibility checking.
  
! '__analyzer_dump_exploded_nodes'
!      For every callsite to '__analyzer_dump_exploded_nodes' the analyzer
       will emit a warning after it finished the analysis containing
       information on all of the exploded nodes at that program point.
  
--- 49190,49197 ----
       useful for writing DejaGnu tests for constraint-tracking and
       feasibility checking.
  
! â€˜__analyzer_dump_exploded_nodesâ€™
!      For every callsite to â€˜__analyzer_dump_exploded_nodesâ€™ the analyzer
       will emit a warning after it finished the analysis containing
       information on all of the exploded nodes at that program point.
  
*************** terms of code, merely as 'known_function
*** 49204,49211 ****
  
       it will also dump all of the states within the "processed" nodes.
  
! '__analyzer_dump_named_constant'
!      When the analyzer sees a call to '__analyzer_dump_named_constant'
       it will emit a warning describing what is known about the value of
       a given named constant, for parts of the analyzer that interact
       with target headers.
--- 49208,49215 ----
  
       it will also dump all of the states within the "processed" nodes.
  
! â€˜__analyzer_dump_named_constantâ€™
!      When the analyzer sees a call to â€˜__analyzer_dump_named_constantâ€™
       it will emit a warning describing what is known about the value of
       a given named constant, for parts of the analyzer that interact
       with target headers.
*************** terms of code, merely as 'known_function
*** 49218,49228 ****
  
            warning: named constant 'O_RDONLY' has value '1'
  
! '__analyzer_dump_region_model'
               __analyzer_dump_region_model ();
       will dump the region_model's state to stderr.
  
! '__analyzer_dump_state'
            __analyzer_dump_state ("malloc", ptr);
  
       will emit a warning describing the state of the 2nd argument (which
--- 49222,49232 ----
  
            warning: named constant 'O_RDONLY' has value '1'
  
! â€˜__analyzer_dump_region_modelâ€™
               __analyzer_dump_region_model ();
       will dump the region_model's state to stderr.
  
! â€˜__analyzer_dump_stateâ€™
            __analyzer_dump_state ("malloc", ptr);
  
       will emit a warning describing the state of the 2nd argument (which
*************** terms of code, merely as 'known_function
*** 49230,49246 ****
       matching the 1st argument (which must be a string literal).  This
       is for use when debugging, and may be of use in DejaGnu tests.
  
! '__analyzer_eval'
            __analyzer_eval (expr);
       will emit a warning with text "TRUE", FALSE" or "UNKNOWN" based on
       the truthfulness of the argument.  This is useful for writing
       DejaGnu tests.
  
! '__analyzer_get_unknown_ptr'
            __analyzer_get_unknown_ptr ();
!      will obtain an unknown 'void *'.
  
! '__analyzer_get_strlen'
            __analyzer_get_strlen (buf);
       will emit a warning if PTR doesn't point to a null-terminated
       string.  TODO: eventually get the strlen of the buffer (without the
--- 49234,49250 ----
       matching the 1st argument (which must be a string literal).  This
       is for use when debugging, and may be of use in DejaGnu tests.
  
! â€˜__analyzer_evalâ€™
            __analyzer_eval (expr);
       will emit a warning with text "TRUE", FALSE" or "UNKNOWN" based on
       the truthfulness of the argument.  This is useful for writing
       DejaGnu tests.
  
! â€˜__analyzer_get_unknown_ptrâ€™
            __analyzer_get_unknown_ptr ();
!      will obtain an unknown â€˜void *â€™.
  
! â€˜__analyzer_get_strlenâ€™
            __analyzer_get_strlen (buf);
       will emit a warning if PTR doesn't point to a null-terminated
       string.  TODO: eventually get the strlen of the buffer (without the
*************** terms of code, merely as 'known_function
*** 49250,49277 ****
  ---------------------------------
  
  To compare two different exploded graphs, try
! '-fdump-analyzer-exploded-nodes-2 -fdump-noaddr
! -fanalyzer-fine-grained'.  This will dump a 'SRC.eg.txt' file containing
! the full 'exploded_graph'.  I use 'diff -u50 -p' to compare two
  different such files (e.g.  before and after a patch) to find the first
! place where the two graphs diverge.  The option '-fdump-noaddr' will
  suppress printing pointers withihn the dumps (which would otherwise hide
  the real differences with irrelevent churn).
  
!  The option '-fdump-analyzer-json' will dump both the supergraph and the
  exploded graph in compressed JSON form.
  
   One approach when tracking down where a particular bogus state is
! introduced into the 'exploded_graph' is to add custom code to
! 'program_state::validate'.
  
!  The debug function 'region::is_named_decl_p' can be used when
  debugging, such as for assertions and conditional breakpoints.  For
  example, when tracking down a bug in handling a decl called
! 'yy_buffer_stack', I temporarily added a:
         gcc_assert (!m_base_region->is_named_decl_p ("yy_buffer_stack"));
!  to 'binding_cluster::mark_as_escaped' to trap a point where
! 'yy_buffer_stack' was mistakenly being treated as having escaped.
  
  
  File: gccint.info,  Node: User Experience Guidelines,  Next: Funding,  Prev: Static Analyzer,  Up: Top
--- 49254,49281 ----
  ---------------------------------
  
  To compare two different exploded graphs, try
! â€˜-fdump-analyzer-exploded-nodes-2 -fdump-noaddr
! -fanalyzer-fine-grainedâ€™.  This will dump a â€˜SRC.eg.txtâ€™ file containing
! the full â€˜exploded_graphâ€™.  I use â€˜diff -u50 -pâ€™ to compare two
  different such files (e.g.  before and after a patch) to find the first
! place where the two graphs diverge.  The option â€˜-fdump-noaddrâ€™ will
  suppress printing pointers withihn the dumps (which would otherwise hide
  the real differences with irrelevent churn).
  
!  The option â€˜-fdump-analyzer-jsonâ€™ will dump both the supergraph and the
  exploded graph in compressed JSON form.
  
   One approach when tracking down where a particular bogus state is
! introduced into the â€˜exploded_graphâ€™ is to add custom code to
! â€˜program_state::validateâ€™.
  
!  The debug function â€˜region::is_named_decl_pâ€™ can be used when
  debugging, such as for assertions and conditional breakpoints.  For
  example, when tracking down a bug in handling a decl called
! â€˜yy_buffer_stackâ€™, I temporarily added a:
         gcc_assert (!m_base_region->is_named_decl_p ("yy_buffer_stack"));
!  to â€˜binding_cluster::mark_as_escapedâ€™ to trap a point where
! â€˜yy_buffer_stackâ€™ was mistakenly being treated as having escaped.
  
  
  File: gccint.info,  Node: User Experience Guidelines,  Next: Funding,  Prev: Static Analyzer,  Up: Top
*************** source language, rather than GCC's own i
*** 49312,49318 ****
  27.1.2 Diagnostics are actionable
  ---------------------------------
  
! A good diagnostic is "actionable": it should assist the user in taking
  action.
  
   Consider what an end user will want to do when encountering a
--- 49316,49322 ----
  27.1.2 Diagnostics are actionable
  ---------------------------------
  
! A good diagnostic is â€œactionableâ€�: it should assist the user in taking
  action.
  
   Consider what an end user will want to do when encountering a
*************** diagnostic.
*** 49322,49330 ****
  
   Given a warning, an end user will think:
  
!    * "Is this a real problem?"
!    * "Do I care?"
!    * if they decide it's genuine: "How do I fix this?"
  
   A good diagnostic provides pertinent information to allow the user to
  easily answer the above questions.
--- 49326,49334 ----
  
   Given a warning, an end user will think:
  
!    â€¢ "Is this a real problem?"
!    â€¢ "Do I care?"
!    â€¢ if they decide it's genuine: "How do I fix this?"
  
   A good diagnostic provides pertinent information to allow the user to
  easily answer the above questions.
*************** A perfect compiler would issue a warning
*** 49336,49344 ****
  source code that ought to be fixed, and issue no other warnings.
  Naturally, this ideal is impossible to achieve.
  
!  Warnings should have a good "signal-to-noise ratio": we should have few
! "false positives" (falsely issuing a warning when no warning is
! warranted) and few "false negatives" (failing to issue a warning when
  one _is_ justified).
  
   Note that a false positive can mean, in practice, a warning that the
--- 49340,49348 ----
  source code that ought to be fixed, and issue no other warnings.
  Naturally, this ideal is impossible to achieve.
  
!  Warnings should have a good â€œsignal-to-noise ratioâ€�: we should have few
! â€œfalse positivesâ€� (falsely issuing a warning when no warning is
! warranted) and few â€œfalse negativesâ€� (failing to issue a warning when
  one _is_ justified).
  
   Note that a false positive can mean, in practice, a warning that the
*************** against overloading the user with irrele
*** 49352,49365 ****
  
  GCC is typically used in two different ways:
  
!    * Semi-interactive usage: GCC is used as a development tool when the
       user is writing code, as the "compile" part of the
       "edit-compile-debug" cycle.  The user is actively hacking on the
       code themself (perhaps a project they wrote, or someone else's),
       where they just made a change to the code and want to see what
       happens, and to be warned about mistakes.
  
!    * Batch rebuilds: where the user is recompiling one or more existing
       packages, and GCC is a detail that's being invoked by various build
       scripts.  Examples include a user trying to bring up an operating
       system consisting of hundreds of packages on a new CPU
--- 49356,49369 ----
  
  GCC is typically used in two different ways:
  
!    â€¢ Semi-interactive usage: GCC is used as a development tool when the
       user is writing code, as the "compile" part of the
       "edit-compile-debug" cycle.  The user is actively hacking on the
       code themself (perhaps a project they wrote, or someone else's),
       where they just made a change to the code and want to see what
       happens, and to be warned about mistakes.
  
!    â€¢ Batch rebuilds: where the user is recompiling one or more existing
       packages, and GCC is a detail that's being invoked by various build
       scripts.  Examples include a user trying to bring up an operating
       system consisting of hundreds of packages on a new CPU
*************** problem is.  For example, the vaguely-wo
*** 49384,49390 ****
  doesn't tell the user why the attribute was ignored, or what kind of
  entity the compiler thought the attribute was being applied to (the
  source location for the diagnostic is also poor; *note discussion of
! 'input_location': input_location_example.).  A better message would be:
  
       demo.c:1:24: warning: attribute 'noinline' on variable 'foo' was
          ignored [-Wattributes]
--- 49388,49394 ----
  doesn't tell the user why the attribute was ignored, or what kind of
  entity the compiler thought the attribute was being applied to (the
  source location for the diagnostic is also poor; *note discussion of
! â€˜input_locationâ€™: input_location_example.).  A better message would be:
  
       demo.c:1:24: warning: attribute 'noinline' on variable 'foo' was
          ignored [-Wattributes]
*************** what it doesn't complain about.
*** 49414,49436 ****
  
  Many diagnostics relate to a mismatch between two different places in
  the user's source code.  Examples include:
!    * a type mismatch, where the type at a usage site does not match the
       type at a declaration
  
!    * the argument count at a call site does not match the parameter
       count at the declaration
  
!    * something is erroneously duplicated (e.g. an error, due to breaking
       a uniqueness requirement, or a warning, if it's suggestive of a
       bug)
  
!    * an "opened" syntactic construct (such as an open-parenthesis) is
       not closed
  
   In each case, the diagnostic should indicate *both* pertinent locations
  (so that the user can easily see the problem and how to fix it).
  
!  The standard way to do this is with a note (via 'inform').  For
  example:
  
         auto_diagnostic_group d;
--- 49418,49440 ----
  
  Many diagnostics relate to a mismatch between two different places in
  the user's source code.  Examples include:
!    â€¢ a type mismatch, where the type at a usage site does not match the
       type at a declaration
  
!    â€¢ the argument count at a call site does not match the parameter
       count at the declaration
  
!    â€¢ something is erroneously duplicated (e.g. an error, due to breaking
       a uniqueness requirement, or a warning, if it's suggestive of a
       bug)
  
!    â€¢ an "opened" syntactic construct (such as an open-parenthesis) is
       not closed
  
   In each case, the diagnostic should indicate *both* pertinent locations
  (so that the user can easily see the problem and how to fix it).
  
!  The standard way to do this is with a note (via â€˜informâ€™).  For
  example:
  
         auto_diagnostic_group d;
*************** which leads to:
*** 49448,49460 ****
           3 |   if (flag > 3)
             |       ~~~~~^~~
  
! The 'inform' call should be guarded by the return value from the
! 'warning_at' call so that the note isn't emitted when the warning is
  suppressed.
  
   For cases involving punctuation where the locations might be near each
  other, they can be conditionally consolidated via
! 'gcc_rich_location::add_location_if_nearby':
  
           auto_diagnostic_group d;
           gcc_rich_location richloc (primary_loc);
--- 49452,49464 ----
           3 |   if (flag > 3)
             |       ~~~~~^~~
  
! The â€˜informâ€™ call should be guarded by the return value from the
! â€˜warning_atâ€™ call so that the note isn't emitted when the warning is
  suppressed.
  
   For cases involving punctuation where the locations might be near each
  other, they can be conditionally consolidated via
! â€˜gcc_rich_location::add_location_if_nearbyâ€™:
  
           auto_diagnostic_group d;
           gcc_rich_location richloc (primary_loc);
*************** or two diagnostics:
*** 49480,49490 ****
  27.1.8 Location Information
  ---------------------------
  
! GCC's 'location_t' type can support both ordinary locations, and
  locations relating to a macro expansion.
  
   As of GCC 6, ordinary locations changed from supporting just a point in
! the user's source code to supporting three points: the "caret" location,
  plus a start and a finish:
  
             a = foo && bar;
--- 49484,49494 ----
  27.1.8 Location Information
  ---------------------------
  
! GCC's â€˜location_tâ€™ type can support both ordinary locations, and
  locations relating to a macro expansion.
  
   As of GCC 6, ordinary locations changed from supporting just a point in
! the user's source code to supporting three points: the â€œcaretâ€� location,
  plus a start and a finish:
  
             a = foo && bar;
*************** plus a start and a finish:
*** 49494,49501 ****
                 |   caret
                 start
  
!  Tokens coming out of libcpp have locations of the form 'caret ==
! start', such as for 'foo' here:
  
             a = foo && bar;
                 ^~~
--- 49498,49505 ----
                 |   caret
                 start
  
!  Tokens coming out of libcpp have locations of the form â€˜caret ==
! startâ€™, such as for â€˜fooâ€™ here:
  
             a = foo && bar;
                 ^~~
*************** start', such as for 'foo' here:
*** 49506,49512 ****
   Compound expressions should be reported using the location of the
  expression as a whole, rather than just of one token within it.
  
!  For example, in '-Wformat', rather than underlining just the first
  token of a bad argument:
  
          printf("hello %i %s", (long)0, "world");
--- 49510,49516 ----
   Compound expressions should be reported using the location of the
  expression as a whole, rather than just of one token within it.
  
!  For example, in â€˜-Wformatâ€™, rather than underlining just the first
  token of a bad argument:
  
          printf("hello %i %s", (long)0, "world");
*************** easily identify what is being referred t
*** 49520,49533 ****
                        ~^      ~~~~~~~
                        %li
  
!  Avoid using the 'input_location' global, and the diagnostic functions
! that implicitly use it--use 'error_at' and 'warning_at' rather than
! 'error' and 'warning', and provide the most appropriate 'location_t'
  value available at that phase of the compilation.  It's possible to
! supply secondary 'location_t' values via 'rich_location'.
  
  For example, in the example of imprecise wording above, generating the
! diagnostic using 'warning':
  
         // BAD: implicitly uses input_location
         warning (OPT_Wattributes, "%qE attribute ignored", name);
--- 49524,49537 ----
                        ~^      ~~~~~~~
                        %li
  
!  Avoid using the â€˜input_locationâ€™ global, and the diagnostic functions
! that implicitly use it--use â€˜error_atâ€™ and â€˜warning_atâ€™ rather than
! â€˜errorâ€™ and â€˜warningâ€™, and provide the most appropriate â€˜location_tâ€™
  value available at that phase of the compilation.  It's possible to
! supply secondary â€˜location_tâ€™ values via â€˜rich_locationâ€™.
  
  For example, in the example of imprecise wording above, generating the
! diagnostic using â€˜warningâ€™:
  
         // BAD: implicitly uses input_location
         warning (OPT_Wattributes, "%qE attribute ignored", name);
*************** leads to:
*** 49539,49546 ****
           1 | int foo __attribute__((noinline));
             | ^~~
  
! which thus happened to use the location of the 'int' token, rather than
! that of the attribute.  Using 'warning_at' with the location of the
  attribute, providing the location of the declaration in question as a
  secondary location, and adding a note:
  
--- 49543,49550 ----
           1 | int foo __attribute__((noinline));
             | ^~~
  
! which thus happened to use the location of the â€˜intâ€™ token, rather than
! that of the attribute.  Using â€˜warning_atâ€™ with the location of the
  attribute, providing the location of the declaration in question as a
  secondary location, and adding a note:
  
*************** See the diagnostics section
*** 49567,49576 ****
  (https://gcc.gnu.org/codingconventions.html#Diagnostics) of the GCC
  coding conventions.
  
!  In the C++ front end, when comparing two types in a message, use '%H'
! and '%I' rather than '%T', as this allows the diagnostics subsystem to
  highlight differences between template-based types.  For example, rather
! than using '%qT':
  
         // BAD: a pair of %qT used in C++ front end for type comparison
         error_at (loc, "could not convert %qE from %qT to %qT", expr,
--- 49571,49580 ----
  (https://gcc.gnu.org/codingconventions.html#Diagnostics) of the GCC
  coding conventions.
  
!  In the C++ front end, when comparing two types in a message, use â€˜%Hâ€™
! and â€˜%Iâ€™ rather than â€˜%Tâ€™, as this allows the diagnostics subsystem to
  highlight differences between template-based types.  For example, rather
! than using â€˜%qTâ€™:
  
         // BAD: a pair of %qT used in C++ front end for type comparison
         error_at (loc, "could not convert %qE from %qT to %qT", expr,
*************** which could lead to:
*** 49581,49587 ****
       error: could not convert 'map<int, double>()' from 'map<int,double>'
          to 'map<int,int>'
  
! using '%H' and '%I' (via '%qH' and '%qI'):
  
         // OK: compare types in C++ front end via %qH and %qI
         error_at (loc, "could not convert %qE from %qH to %qI", expr,
--- 49585,49591 ----
       error: could not convert 'map<int, double>()' from 'map<int,double>'
          to 'map<int,int>'
  
! using â€˜%Hâ€™ and â€˜%Iâ€™ (via â€˜%qHâ€™ and â€˜%qIâ€™):
  
         // OK: compare types in C++ front end via %qH and %qI
         error_at (loc, "could not convert %qE from %qH to %qI", expr,
*************** allows the above output to be simplified
*** 49592,49626 ****
       error: could not convert 'map<int, double>()' from 'map<[...],double>'
          to 'map<[...],int>'
  
! where the 'double' and 'int' are colorized to highlight them.
  
  27.1.10 Group logically-related diagnostics
  -------------------------------------------
  
! Use 'auto_diagnostic_group' when issuing multiple related diagnostics
  (seen in various examples on this page).  This informs the diagnostic
  subsystem that all diagnostics issued within the lifetime of the
! 'auto_diagnostic_group' are related.  For example,
! '-fdiagnostics-format=json' will treat the first diagnostic emitted
  within the group as a top-level diagnostic, and all subsequent
  diagnostics within the group as its children.
  
  27.1.11 Quoting
  ---------------
  
! Text should be quoted by either using the 'q' modifier in a directive
! such as '%qE', or by enclosing the quoted text in a pair of '%<' and
! '%>' directives, and never by using explicit quote characters.  The
  directives handle the appropriate quote characters for each language and
  apply the correct color or highlighting.
  
   The following elements should be quoted in GCC diagnostics:
  
!    * Language keywords.
!    * Tokens.
!    * Boolean, numerical, character, and string constants that appear in
       the source code.
!    * Identifiers, including function, macro, type, and variable names.
  
   Other elements such as numbers that do not refer to numeric constants
  that appear in the source code should not be quoted.  For example, in
--- 49596,49630 ----
       error: could not convert 'map<int, double>()' from 'map<[...],double>'
          to 'map<[...],int>'
  
! where the â€˜doubleâ€™ and â€˜intâ€™ are colorized to highlight them.
  
  27.1.10 Group logically-related diagnostics
  -------------------------------------------
  
! Use â€˜auto_diagnostic_groupâ€™ when issuing multiple related diagnostics
  (seen in various examples on this page).  This informs the diagnostic
  subsystem that all diagnostics issued within the lifetime of the
! â€˜auto_diagnostic_groupâ€™ are related.  For example,
! â€˜-fdiagnostics-format=jsonâ€™ will treat the first diagnostic emitted
  within the group as a top-level diagnostic, and all subsequent
  diagnostics within the group as its children.
  
  27.1.11 Quoting
  ---------------
  
! Text should be quoted by either using the â€˜qâ€™ modifier in a directive
! such as â€˜%qEâ€™, or by enclosing the quoted text in a pair of â€˜%<â€™ and
! â€˜%>â€™ directives, and never by using explicit quote characters.  The
  directives handle the appropriate quote characters for each language and
  apply the correct color or highlighting.
  
   The following elements should be quoted in GCC diagnostics:
  
!    â€¢ Language keywords.
!    â€¢ Tokens.
!    â€¢ Boolean, numerical, character, and string constants that appear in
       the source code.
!    â€¢ Identifiers, including function, macro, type, and variable names.
  
   Other elements such as numbers that do not refer to numeric constants
  that appear in the source code should not be quoted.  For example, in
*************** within diagnostic messages and underline
*** 49640,49651 ****
  highlighting mismatches, for all messages with a logically-related group
  of diagnostics.
  
!  See 'diagnostic-highlight-colors.h' for symbolic names for color codes,
  covering e.g.
  
!    * 'highlight_colors::expected' versus 'highlight_colors::actual'
  
!    * 'highlight_colors::lhs' versus 'highlight_colors::rhs'
  
   For example, given:
  
--- 49644,49655 ----
  highlighting mismatches, for all messages with a logically-related group
  of diagnostics.
  
!  See â€˜diagnostic-highlight-colors.hâ€™ for symbolic names for color codes,
  covering e.g.
  
!    â€¢ â€˜highlight_colors::expectedâ€™ versus â€˜highlight_colors::actualâ€™
  
!    â€¢ â€˜highlight_colors::lhsâ€™ versus â€˜highlight_colors::rhsâ€™
  
   For example, given:
  
*************** covering e.g.
*** 49656,49673 ****
                 |              T {aka struct t}
                 S {aka struct s}
  
!    * the text "S {aka struct s}" in the message and the left-hand label
!      in the quoted source should be colorized as 'highlight_colors::lhs'
!      (which equates to the color name 'highlight-a')
  
!    * the text "T {aka struct t}" in the message and the right-hand label
!      in the quoted source should be colorized as 'highlight_colors::rhs'
!      (which equates to the color name 'highlight-b')
  
   Doing so ought to make it easier for the user to understand what the
  diagnostic is telling them.
  
!  When issuing followup 'note' diagnostics, all diagnostics within the
  group should use a consistent scheme to highlight the mismatching
  elements, so that color contrasts the differences.  For example, given:
  
--- 49660,49677 ----
                 |              T {aka struct t}
                 S {aka struct s}
  
!    â€¢ the text "S {aka struct s}" in the message and the left-hand label
!      in the quoted source should be colorized as â€˜highlight_colors::lhsâ€™
!      (which equates to the color name â€˜highlight-aâ€™)
  
!    â€¢ the text "T {aka struct t}" in the message and the right-hand label
!      in the quoted source should be colorized as â€˜highlight_colors::rhsâ€™
!      (which equates to the color name â€˜highlight-bâ€™)
  
   Doing so ought to make it easier for the user to understand what the
  diagnostic is telling them.
  
!  When issuing followup â€˜noteâ€™ diagnostics, all diagnostics within the
  group should use a consistent scheme to highlight the mismatching
  elements, so that color contrasts the differences.  For example, given:
  
*************** elements, so that color contrasts the di
*** 49683,49699 ****
             |                   int
             |                  %s
  
!    * the text '%i' and 'int' referring to the format string and the
!      expected type due to it should be colorized as 'highlight-a' both
!      in the diagnostics message and in the range quoted in the 'range'.
  
!    * the text 'const char *' in the diagnostic message and in the quoted
!      range should be colorized as 'highlight-b'.
  
!  This can be implemented by using e.g.  'highlight_colors::actual' and
! 'highlight_colors::expected' when adding ranges to 'rich_location'
! instances, and e.g.  by using the '%e' format code for 'pretty_printer'
! to use a 'pp_element *', and using appropriate member functions of
  pp_element to add colorization.
  
  27.1.13 Spelling and Terminology
--- 49687,49703 ----
             |                   int
             |                  %s
  
!    â€¢ the text â€˜%iâ€™ and â€˜intâ€™ referring to the format string and the
!      expected type due to it should be colorized as â€˜highlight-aâ€™ both
!      in the diagnostics message and in the range quoted in the â€˜rangeâ€™.
  
!    â€¢ the text â€˜const char *â€™ in the diagnostic message and in the quoted
!      range should be colorized as â€˜highlight-bâ€™.
  
!  This can be implemented by using e.g.  â€˜highlight_colors::actualâ€™ and
! â€˜highlight_colors::expectedâ€™ when adding ranges to â€˜rich_locationâ€™
! instances, and e.g.  by using the â€˜%eâ€™ format code for â€˜pretty_printerâ€™
! to use a â€˜pp_element *â€™, and using appropriate member functions of
  pp_element to add colorization.
  
  27.1.13 Spelling and Terminology
*************** of the GCC coding conventions.
*** 49706,49729 ****
  27.1.14 Fix-it hints
  --------------------
  
! GCC's diagnostic subsystem can emit "fix-it hints": small suggested
  edits to the user's source code.
  
   They are printed by default underneath the code in question.  They can
! also be viewed via '-fdiagnostics-generate-patch' and
! '-fdiagnostics-parseable-fixits'.  With the latter, an IDE ought to be
  able to offer to automatically apply the suggested fix.
  
   Fix-it hints contain code fragments, and thus they should not be marked
  for translation.
  
!  Fix-it hints can be added to a diagnostic by using a 'rich_location'
! rather than a 'location_t' - the fix-it hints are added to the
! 'rich_location' using one of the various 'add_fixit' member functions of
! 'rich_location'.  They are documented with 'rich_location' in
! 'libcpp/line-map.h'.  It's easiest to use the 'gcc_rich_location'
! subclass of 'rich_location' found in 'gcc-rich-location.h', as this
! implicitly supplies the 'line_table' variable.
  
   For example:
  
--- 49710,49733 ----
  27.1.14 Fix-it hints
  --------------------
  
! GCC's diagnostic subsystem can emit â€œfix-it hintsâ€�: small suggested
  edits to the user's source code.
  
   They are printed by default underneath the code in question.  They can
! also be viewed via â€˜-fdiagnostics-generate-patchâ€™ and
! â€˜-fdiagnostics-parseable-fixitsâ€™.  With the latter, an IDE ought to be
  able to offer to automatically apply the suggested fix.
  
   Fix-it hints contain code fragments, and thus they should not be marked
  for translation.
  
!  Fix-it hints can be added to a diagnostic by using a â€˜rich_locationâ€™
! rather than a â€˜location_tâ€™ - the fix-it hints are added to the
! â€˜rich_locationâ€™ using one of the various â€˜add_fixitâ€™ member functions of
! â€˜rich_locationâ€™.  They are documented with â€˜rich_locationâ€™ in
! â€˜libcpp/line-map.hâ€™.  It's easiest to use the â€˜gcc_rich_locationâ€™
! subclass of â€˜rich_locationâ€™ found in â€˜gcc-rich-location.hâ€™, as this
! implicitly supplies the â€˜line_tableâ€™ variable.
  
   For example:
  
*************** which can lead to:
*** 49745,49766 ****
             | signed
  
   Non-trivial edits can be built up by adding multiple fix-it hints to
! one 'rich_location'.  It's best to express the edits in terms of the
  locations of individual tokens.  Various handy functions for adding
  fix-it hints for idiomatic C and C++ can be seen in
! 'gcc-rich-location.h'.
  
  27.1.14.1 Fix-it hints should work
  ..................................
  
  When implementing a fix-it hint, please verify that the suggested edit
  leads to fixed, compilable code.  (Unfortunately, this currently must be
! done by hand using '-fdiagnostics-generate-patch'.  It would be good to
  have an automated way of verifying that fix-it hints actually fix the
  code).
  
   For example, a "gotcha" here is to forget to add a space when adding a
! missing reserved word.  Consider a C++ fix-it hint that adds 'typename'
  in front of a template declaration.  A naive way to implement this might
  be:
  
--- 49749,49770 ----
             | signed
  
   Non-trivial edits can be built up by adding multiple fix-it hints to
! one â€˜rich_locationâ€™.  It's best to express the edits in terms of the
  locations of individual tokens.  Various handy functions for adding
  fix-it hints for idiomatic C and C++ can be seen in
! â€˜gcc-rich-location.hâ€™.
  
  27.1.14.1 Fix-it hints should work
  ..................................
  
  When implementing a fix-it hint, please verify that the suggested edit
  leads to fixed, compilable code.  (Unfortunately, this currently must be
! done by hand using â€˜-fdiagnostics-generate-patchâ€™.  It would be good to
  have an automated way of verifying that fix-it hints actually fix the
  code).
  
   For example, a "gotcha" here is to forget to add a space when adding a
! missing reserved word.  Consider a C++ fix-it hint that adds â€˜typenameâ€™
  in front of a template declaration.  A naive way to implement this might
  be:
  
*************** being "corrected" to:
*** 49780,49786 ****
       typenameT::type x;
  
  In this case, the correct thing to do is to add a trailing space after
! 'typename':
  
       gcc_rich_location richloc (loc);
       // OK: note that here we have a trailing space
--- 49784,49790 ----
       typenameT::type x;
  
  In this case, the correct thing to do is to add a trailing space after
! â€˜typenameâ€™:
  
       gcc_rich_location richloc (loc);
       // OK: note that here we have a trailing space
*************** this:
*** 49807,49813 ****
           warning_at (&richloc, OPT_Wredundant_move,
                       "redundant move in return statement");
  
! which is intended to e.g. replace a 'std::move' with the underlying
  value:
  
          return std::move (retval);
--- 49811,49817 ----
           warning_at (&richloc, OPT_Wredundant_move,
                       "redundant move in return statement");
  
! which is intended to e.g. replace a â€˜std::moveâ€™ with the underlying
  value:
  
          return std::move (retval);
*************** and thus this resulting code:
*** 49841,49847 ****
          return global_a;
  
  It's better to do deletions in terms of deletions; deleting the
! 'std::move (' and the trailing close-paren, leading to this:
  
          return std::move (CONFIGURY_GLOBAL /* some comment */);
                 ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- 49845,49851 ----
          return global_a;
  
  It's better to do deletions in terms of deletions; deleting the
! â€˜std::move (â€™ and the trailing close-paren, leading to this:
  
          return std::move (CONFIGURY_GLOBAL /* some comment */);
                 ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*************** and thus this result:
*** 49851,49857 ****
  
          return CONFIGURY_GLOBAL /* some comment */;
  
! Unfortunately, the pertinent 'location_t' values are not always
  available.
  
  27.1.14.3 Multiple suggestions
--- 49855,49861 ----
  
          return CONFIGURY_GLOBAL /* some comment */;
  
! Unfortunately, the pertinent â€˜location_tâ€™ values are not always
  available.
  
  27.1.14.3 Multiple suggestions
*************** available.
*** 49859,49867 ****
  
  In the rare cases where you need to suggest more than one mutually
  exclusive solution to a problem, this can be done by emitting multiple
! notes and calling 'rich_location::fixits_cannot_be_auto_applied' on each
! note's 'rich_location'.  If this is called, then the fix-it hints in the
! 'rich_location' will be printed, but will not be added to generated
  patches.
  
  
--- 49863,49871 ----
  
  In the rare cases where you need to suggest more than one mutually
  exclusive solution to a problem, this can be done by emitting multiple
! notes and calling â€˜rich_location::fixits_cannot_be_auto_appliedâ€™ on each
! note's â€˜rich_locationâ€™.  If this is called, then the fix-it hints in the
! â€˜rich_locationâ€™ will be printed, but will not be added to generated
  patches.
  
  
*************** more; major new features or packages con
*** 49916,49922 ****
  proper thing to do" when distributing free software for a fee, we can
  assure a steady flow of resources into making more free software.
  
!      Copyright (C) 1994 Free Software Foundation, Inc.
       Verbatim copying and redistribution of this section is permitted
       without royalty; alteration is not permitted.
  
--- 49920,49926 ----
  proper thing to do" when distributing free software for a fee, we can
  assure a steady flow of resources into making more free software.
  
!      Copyright Â© 1994 Free Software Foundation, Inc.
       Verbatim copying and redistribution of this section is permitted
       without royalty; alteration is not permitted.
  
*************** GNU General Public License
*** 49945,49951 ****
  
                          Version 3, 29 June 2007
  
!      Copyright (C) 2007 Free Software Foundation, Inc. <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies of this
       license document, but changing it is not allowed.
--- 49949,49955 ----
  
                          Version 3, 29 June 2007
  
!      Copyright Â© 2007 Free Software Foundation, Inc. <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies of this
       license document, but changing it is not allowed.
*************** mail.
*** 50632,50642 ****
  like this when it starts in an interactive mode:
  
       PROGRAM Copyright (C) YEAR NAME OF AUTHOR
!      This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'.
       This is free software, and you are welcome to redistribute it
!      under certain conditions; type 'show c' for details.
  
!  The hypothetical commands 'show w' and 'show c' should show the
  appropriate parts of the General Public License.  Of course, your
  program's commands might be different; for a GUI interface, you would
  use an "about box".
--- 50636,50646 ----
  like this when it starts in an interactive mode:
  
       PROGRAM Copyright (C) YEAR NAME OF AUTHOR
!      This program comes with ABSOLUTELY NO WARRANTY; for details type â€˜show wâ€™.
       This is free software, and you are welcome to redistribute it
!      under certain conditions; type â€˜show câ€™ for details.
  
!  The hypothetical commands â€˜show wâ€™ and â€˜show câ€™ should show the
  appropriate parts of the General Public License.  Of course, your
  program's commands might be different; for a GUI interface, you would
  use an "about box".
*************** GNU Free Documentation License
*** 50661,50667 ****
  
                       Version 1.3, 3 November 2008
  
!      Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
       <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies
--- 50665,50671 ----
  
                       Version 1.3, 3 November 2008
  
!      Copyright Â© 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
       <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies
*************** GNU Free Documentation License
*** 50670,50676 ****
    0. PREAMBLE
  
       The purpose of this License is to make a manual, textbook, or other
!      functional and useful document "free" in the sense of freedom: to
       assure everyone the effective freedom to copy and redistribute it,
       with or without modifying it, either commercially or
       noncommercially.  Secondarily, this License preserves for the
--- 50674,50680 ----
    0. PREAMBLE
  
       The purpose of this License is to make a manual, textbook, or other
!      functional and useful document â€œfreeâ€� in the sense of freedom: to
       assure everyone the effective freedom to copy and redistribute it,
       with or without modifying it, either commercially or
       noncommercially.  Secondarily, this License preserves for the
*************** Any omissions in this list are accidenta
*** 51148,51535 ****
  out or some of your contributions are not listed.  Please keep this list
  in alphabetical order.
  
!    * Analog Devices helped implement the support for complex data types
       and iterators.
  
!    * John David Anglin for threading-related fixes and improvements to
       libstdc++-v3, and the HP-UX port.
  
!    * James van Artsdalen wrote the code that makes efficient use of the
       Intel 80387 register stack.
  
!    * Abramo and Roberto Bagnara for the SysV68 Motorola 3300 Delta
       Series port.
  
!    * Alasdair Baird for various bug fixes.
  
!    * Giovanni Bajo for analyzing lots of complicated C++ problem
       reports.
  
!    * Peter Barada for his work to improve code generation for new
       ColdFire cores.
  
!    * Gerald Baumgartner added the signature extension to the C++ front
       end.
  
!    * Godmar Back for his Java improvements and encouragement.
  
!    * Scott Bambrough for help porting the Java compiler.
  
!    * Wolfgang Bangerth for processing tons of bug reports.
  
!    * Jon Beniston for his Microsoft Windows port of Java and port to
       Lattice Mico32.
  
!    * Daniel Berlin for better DWARF 2 support, faster/better
       optimizations, improved alias analysis, plus migrating GCC to
       Bugzilla.
  
!    * Geoff Berry for his Java object serialization work and various
       patches.
  
!    * Richard Biener for his ongoing middle-end contributions and bug
       fixes and for release management.
  
!    * David Binderman for testing GCC trunk against Fedora Rawhide and
       csmith.
  
!    * Laurynas Biveinis for memory management work and DJGPP port fixes.
  
!    * Uros Bizjak for the implementation of x87 math built-in functions
       and for various middle end and i386 back end improvements and bug
       fixes.
  
!    * Eric Blake for helping to make GCJ and libgcj conform to the
       specifications.
  
!    * Janne Blomqvist for contributions to GNU Fortran.
  
!    * Hans-J. Boehm for his garbage collector, IA-64 libffi port, and
       other Java work.
  
!    * Segher Boessenkool for helping maintain the PowerPC port and the
       instruction combiner plus various contributions to the middle end.
  
!    * Neil Booth for work on cpplib, lang hooks, debug hooks and other
       miscellaneous clean-ups.
  
!    * Steven Bosscher for integrating the GNU Fortran front end into GCC
       and for contributing to the tree-ssa branch.
  
!    * Eric Botcazou for fixing middle- and backend bugs left and right.
  
!    * Per Bothner for his direction via the steering committee and
       various improvements to the infrastructure for supporting new
       languages.  Chill front end implementation.  Initial
       implementations of cpplib, fix-header, config.guess, libio, and
       past C++ library (libg++) maintainer.  Dreaming up, designing and
       implementing much of GCJ.
  
!    * Devon Bowen helped port GCC to the Tahoe.
  
!    * Don Bowman for mips-vxworks contributions.
  
!    * James Bowman for the FT32 port.
  
!    * Dave Brolley for work on cpplib and Chill.
  
!    * Paul Brook for work on the ARM architecture and maintaining GNU
       Fortran.
  
!    * Robert Brown implemented the support for Encore 32000 systems.
  
!    * Christian Bruel for improvements to local store elimination.
  
!    * Herman A.J. ten Brugge for various fixes.
  
!    * Joerg Brunsmann for Java compiler hacking and help with the GCJ
       FAQ.
  
!    * Joe Buck for his direction via the steering committee from its
       creation to 2013.
  
!    * Iain Buclaw for the D frontend.
  
!    * Craig Burley for leadership of the G77 Fortran effort.
  
!    * Tobias Burnus for contributions to GNU Fortran.
  
!    * Stephan Buys for contributing Doxygen notes for libstdc++.
  
!    * Paolo Carlini for libstdc++ work: lots of efficiency improvements
       to the C++ strings, streambufs and formatted I/O, hard detective
       work on the frustrating localization issues, and keeping up with
       the problem reports.
  
!    * John Carr for his alias work, SPARC hacking, infrastructure
       improvements, previous contributions to the steering committee,
       loop optimizations, etc.
  
!    * Stephane Carrez for 68HC11 and 68HC12 ports.
  
!    * Steve Chamberlain for support for the Renesas SH and H8 processors
       and the PicoJava processor, and for GCJ config fixes.
  
!    * Glenn Chambers for help with the GCJ FAQ.
  
!    * John-Marc Chandonia for various libgcj patches.
  
!    * Denis Chertykov for contributing and maintaining the AVR port, the
       first GCC port for an 8-bit architecture.
  
!    * Kito Cheng for his work on the RISC-V port, including bringing up
       the test suite and maintenance.
  
!    * Scott Christley for his Objective-C contributions.
  
!    * Eric Christopher for his Java porting help and clean-ups.
  
!    * Branko Cibej for more warning contributions.
  
!    * The GNU Classpath project for all of their merged runtime code.
  
!    * Nick Clifton for arm, mcore, fr30, v850, m32r, msp430 rx work,
!      '--help', and other random hacking.
  
!    * Michael Cook for libstdc++ cleanup patches to reduce warnings.
  
!    * R. Kelley Cook for making GCC buildable from a read-only directory
       as well as other miscellaneous build process and documentation
       clean-ups.
  
!    * Ralf Corsepius for SH testing and minor bug fixing.
  
!    * Franc,ois-Xavier Coudert for contributions to GNU Fortran.
  
!    * Stan Cox for care and feeding of the x86 port and lots of behind
       the scenes hacking.
  
!    * Alex Crain provided changes for the 3b1.
  
!    * Ian Dall for major improvements to the NS32k port.
  
!    * Paul Dale for his work to add uClinux platform support to the m68k
       backend.
  
!    * Palmer Dabbelt for his work maintaining the RISC-V port.
  
!    * Dario Dariol contributed the four varieties of sample programs that
       print a copy of their source.
  
!    * Russell Davidson for fstream and stringstream fixes in libstdc++.
  
!    * Bud Davis for work on the G77 and GNU Fortran compilers.
  
!    * Mo DeJong for GCJ and libgcj bug fixes.
  
!    * Jerry DeLisle for contributions to GNU Fortran.
  
!    * DJ Delorie for the DJGPP port, build and libiberty maintenance,
       various bug fixes, and the M32C, MeP, MSP430, and RL78 ports.
  
!    * Arnaud Desitter for helping to debug GNU Fortran.
  
!    * Gabriel Dos Reis for contributions to G++, contributions and
       maintenance of GCC diagnostics infrastructure, libstdc++-v3,
!      including 'valarray<>', 'complex<>', maintaining the numerics
!      library (including that pesky '<limits>' :-) and keeping up-to-date
       anything to do with numbers.
  
!    * Ulrich Drepper for his work on glibc, testing of GCC using glibc,
       ISO C99 support, CFG dumping support, etc., plus support of the C++
       runtime libraries including for all kinds of C interface issues,
!      contributing and maintaining 'complex<>', sanity checking and
       disbursement, configuration architecture, libio maintenance, and
       early math work.
  
!    * Robert J. Dubner for his work on the COBOL front end, mating the
       parser output to the GENERIC tree.
  
!    * Franc,ois Dumont for his work on libstdc++-v3, especially
!      maintaining and improving 'debug-mode' and associative and
       unordered containers.
  
!    * Zdenek Dvorak for a new loop unroller and various fixes.
  
!    * Michael Eager for his work on the Xilinx MicroBlaze port.
  
!    * Richard Earnshaw for his ongoing work with the ARM.
  
!    * David Edelsohn for his direction via the steering committee,
       ongoing work with the RS6000/PowerPC port, help cleaning up Haifa
       loop changes, doing the entire AIX port of libstdc++ with his bare
       hands, and for ensuring GCC properly keeps working on AIX.
  
!    * Kevin Ediger for the floating point formatting of num_put::do_put
       in libstdc++.
  
!    * Phil Edwards for libstdc++ work including configuration hackery,
       documentation maintainer, chief breaker of the web pages, the
       occasional iostream bug fix, and work on shared library symbol
       versioning.
  
!    * Paul Eggert for random hacking all over GCC.
  
!    * Mark Elbrecht for various DJGPP improvements, and for libstdc++
       configuration support for locales and fstream-related fixes.
  
!    * Vadim Egorov for libstdc++ fixes in strings, streambufs, and
       iostreams.
  
!    * Christian Ehrhardt for dealing with bug reports.
  
!    * Ben Elliston for his work to move the Objective-C runtime into its
       own subdirectory and for his work on autoconf.
  
!    * Revital Eres for work on the PowerPC 750CL port.
  
!    * Marc Espie for OpenBSD support.
  
!    * Doug Evans for much of the global optimization framework, arc,
       m32r, and SPARC work.
  
!    * Christopher Faylor for his work on the Cygwin port and for caring
       and feeding the gcc.gnu.org box and saving its users tons of spam.
  
!    * Fred Fish for BeOS support and Ada fixes.
  
!    * Ivan Fontes Garcia for the Portuguese translation of the GCJ FAQ.
  
!    * Peter Gerwinski for various bug fixes and the Pascal front end.
  
!    * Kaveh R. Ghazi for his direction via the steering committee,
!      amazing work to make '-W -Wall -W* -Werror' useful, and testing GCC
       on a plethora of platforms.  Kaveh extends his gratitude to the
       CAIP Center at Rutgers University for providing him with computing
       resources to work on Free Software from the late 1980s to 2010.
  
!    * John Gilmore for a donation to the FSF earmarked improving GNU
       Java.
  
!    * Judy Goldberg for c++ contributions.
  
!    * Torbjorn Granlund for various fixes and the c-torture testsuite,
       multiply- and divide-by-constant optimization, improved long long
       support, improved leaf function register allocation, and his
       direction via the steering committee.
  
!    * Jonny Grant for improvements to 'collect2's' '--help'
       documentation.
  
!    * Anthony Green for his '-Os' contributions, the moxie port, and Java
       front end work.
  
!    * Stu Grossman for gdb hacking, allowing GCJ developers to debug Java
       code.
  
!    * Michael K. Gschwind contributed the port to the PDP-11.
  
!    * Ron Guilmette implemented the 'protoize' and 'unprotoize' tools,
       the support for DWARF 1 symbolic debugging information, and much of
       the support for System V Release 4.  He has also worked heavily on
       the Intel 386 and 860 support.
  
!    * Sumanth Gundapaneni for contributing the CR16 port.
  
!    * Mostafa Hagog for Swing Modulo Scheduling (SMS) and post reload
       GCSE.
  
!    * Bruno Haible for improvements in the runtime overhead for EH, new
       warnings and assorted bug fixes.
  
!    * Andrew Haley for his amazing Java compiler and library efforts.
  
!    * Chris Hanson assisted in making GCC work on HP-UX for the 9000
       series 300.
  
!    * Michael Hayes for various thankless work he's done trying to get
       the c30/c40 ports functional.  Lots of loop and unroll improvements
       and fixes.
  
!    * Dara Hazeghi for wading through myriads of target-specific bug
       reports.
  
!    * Kate Hedstrom for staking the G77 folks with an initial testsuite.
  
!    * Richard Henderson for his ongoing SPARC, alpha, ia32, and ia64
       work, loop opts, and generally fixing lots of old problems we've
       ignored for years, flow rewrite and lots of further stuff,
       including reviewing tons of patches.
  
!    * Aldy Hernandez for working on the PowerPC port, SIMD support, and
       various fixes.
  
!    * Nobuyuki Hikichi of Software Research Associates, Tokyo,
       contributed the support for the Sony NEWS machine.
  
!    * Kazu Hirata for caring and feeding the Renesas H8/300 port and
       various fixes.
  
!    * Katherine Holcomb for work on GNU Fortran.
  
!    * Manfred Hollstein for his ongoing work to keep the m88k alive, lots
       of testing and bug fixing, particularly of GCC configury code.
  
!    * Steve Holmgren for MachTen patches.
  
!    * Mat Hostetter for work on the TILE-Gx and TILEPro ports.
  
!    * Jan Hubicka for his x86 port improvements.
  
!    * Falk Hueffner for working on C and optimization bug reports.
  
!    * Bernardo Innocenti for his m68k work, including merging of ColdFire
       improvements and uClinux support.
  
!    * Christian Iseli for various bug fixes.
  
!    * Kamil Iskra for general m68k hacking.
  
!    * Lee Iverson for random fixes and MIPS testing.
  
!    * Balaji V. Iyer for Cilk+ development and merging.
  
!    * Andreas Jaeger for testing and benchmarking of GCC and various bug
       fixes.
  
!    * Martin Jambor for his work on inter-procedural optimizations, the
       switch conversion pass, and scalar replacement of aggregates.
  
!    * Jakub Jelinek for his SPARC work and sibling call optimizations as
       well as lots of bug fixes and test cases, and for improving the
       Java build system.
  
!    * Janis Johnson for ia64 testing and fixes, her quality improvement
       sidetracks, and web page maintenance.
  
!    * Kean Johnston for SCO OpenServer support and various fixes.
  
!    * Tim Josling for the sample language treelang based originally on
       Richard Kenner's "toy" language.
  
!    * Nicolai Josuttis for additional libstdc++ documentation.
  
!    * Klaus Kaempf for his ongoing work to make alpha-vms a viable
       target.
  
!    * Steven G. Kargl for work on GNU Fortran.
  
!    * David Kashtan of SRI adapted GCC to VMS.
  
!    * Ryszard Kabatek for many, many libstdc++ bug fixes and
       optimizations of strings, especially member functions, and for
       auto_ptr fixes.
  
!    * Geoffrey Keating for his ongoing work to make the PPC work for
       GNU/Linux and his automatic regression tester.
  
!    * Brendan Kehoe for his ongoing work with G++ and for a lot of early
       work in just about every part of libstdc++.
  
!    * Oliver M. Kellogg of Deutsche Aerospace contributed the port to the
       MIL-STD-1750A.
  
!    * Richard Kenner of the New York University Ultracomputer Research
       Laboratory wrote the machine descriptions for the AMD 29000, the
       DEC Alpha, the IBM RT PC, and the IBM RS/6000 as well as the
       support for instruction attributes.  He also made changes to better
--- 51152,51539 ----
  out or some of your contributions are not listed.  Please keep this list
  in alphabetical order.
  
!    â€¢ Analog Devices helped implement the support for complex data types
       and iterators.
  
!    â€¢ John David Anglin for threading-related fixes and improvements to
       libstdc++-v3, and the HP-UX port.
  
!    â€¢ James van Artsdalen wrote the code that makes efficient use of the
       Intel 80387 register stack.
  
!    â€¢ Abramo and Roberto Bagnara for the SysV68 Motorola 3300 Delta
       Series port.
  
!    â€¢ Alasdair Baird for various bug fixes.
  
!    â€¢ Giovanni Bajo for analyzing lots of complicated C++ problem
       reports.
  
!    â€¢ Peter Barada for his work to improve code generation for new
       ColdFire cores.
  
!    â€¢ Gerald Baumgartner added the signature extension to the C++ front
       end.
  
!    â€¢ Godmar Back for his Java improvements and encouragement.
  
!    â€¢ Scott Bambrough for help porting the Java compiler.
  
!    â€¢ Wolfgang Bangerth for processing tons of bug reports.
  
!    â€¢ Jon Beniston for his Microsoft Windows port of Java and port to
       Lattice Mico32.
  
!    â€¢ Daniel Berlin for better DWARF 2 support, faster/better
       optimizations, improved alias analysis, plus migrating GCC to
       Bugzilla.
  
!    â€¢ Geoff Berry for his Java object serialization work and various
       patches.
  
!    â€¢ Richard Biener for his ongoing middle-end contributions and bug
       fixes and for release management.
  
!    â€¢ David Binderman for testing GCC trunk against Fedora Rawhide and
       csmith.
  
!    â€¢ Laurynas Biveinis for memory management work and DJGPP port fixes.
  
!    â€¢ Uros Bizjak for the implementation of x87 math built-in functions
       and for various middle end and i386 back end improvements and bug
       fixes.
  
!    â€¢ Eric Blake for helping to make GCJ and libgcj conform to the
       specifications.
  
!    â€¢ Janne Blomqvist for contributions to GNU Fortran.
  
!    â€¢ Hans-J. Boehm for his garbage collector, IA-64 libffi port, and
       other Java work.
  
!    â€¢ Segher Boessenkool for helping maintain the PowerPC port and the
       instruction combiner plus various contributions to the middle end.
  
!    â€¢ Neil Booth for work on cpplib, lang hooks, debug hooks and other
       miscellaneous clean-ups.
  
!    â€¢ Steven Bosscher for integrating the GNU Fortran front end into GCC
       and for contributing to the tree-ssa branch.
  
!    â€¢ Eric Botcazou for fixing middle- and backend bugs left and right.
  
!    â€¢ Per Bothner for his direction via the steering committee and
       various improvements to the infrastructure for supporting new
       languages.  Chill front end implementation.  Initial
       implementations of cpplib, fix-header, config.guess, libio, and
       past C++ library (libg++) maintainer.  Dreaming up, designing and
       implementing much of GCJ.
  
!    â€¢ Devon Bowen helped port GCC to the Tahoe.
  
!    â€¢ Don Bowman for mips-vxworks contributions.
  
!    â€¢ James Bowman for the FT32 port.
  
!    â€¢ Dave Brolley for work on cpplib and Chill.
  
!    â€¢ Paul Brook for work on the ARM architecture and maintaining GNU
       Fortran.
  
!    â€¢ Robert Brown implemented the support for Encore 32000 systems.
  
!    â€¢ Christian Bruel for improvements to local store elimination.
  
!    â€¢ Herman A.J. ten Brugge for various fixes.
  
!    â€¢ Joerg Brunsmann for Java compiler hacking and help with the GCJ
       FAQ.
  
!    â€¢ Joe Buck for his direction via the steering committee from its
       creation to 2013.
  
!    â€¢ Iain Buclaw for the D frontend.
  
!    â€¢ Craig Burley for leadership of the G77 Fortran effort.
  
!    â€¢ Tobias Burnus for contributions to GNU Fortran.
  
!    â€¢ Stephan Buys for contributing Doxygen notes for libstdc++.
  
!    â€¢ Paolo Carlini for libstdc++ work: lots of efficiency improvements
       to the C++ strings, streambufs and formatted I/O, hard detective
       work on the frustrating localization issues, and keeping up with
       the problem reports.
  
!    â€¢ John Carr for his alias work, SPARC hacking, infrastructure
       improvements, previous contributions to the steering committee,
       loop optimizations, etc.
  
!    â€¢ Stephane Carrez for 68HC11 and 68HC12 ports.
  
!    â€¢ Steve Chamberlain for support for the Renesas SH and H8 processors
       and the PicoJava processor, and for GCJ config fixes.
  
!    â€¢ Glenn Chambers for help with the GCJ FAQ.
  
!    â€¢ John-Marc Chandonia for various libgcj patches.
  
!    â€¢ Denis Chertykov for contributing and maintaining the AVR port, the
       first GCC port for an 8-bit architecture.
  
!    â€¢ Kito Cheng for his work on the RISC-V port, including bringing up
       the test suite and maintenance.
  
!    â€¢ Scott Christley for his Objective-C contributions.
  
!    â€¢ Eric Christopher for his Java porting help and clean-ups.
  
!    â€¢ Branko Cibej for more warning contributions.
  
!    â€¢ The GNU Classpath project for all of their merged runtime code.
  
!    â€¢ Nick Clifton for arm, mcore, fr30, v850, m32r, msp430 rx work,
!      â€˜--helpâ€™, and other random hacking.
  
!    â€¢ Michael Cook for libstdc++ cleanup patches to reduce warnings.
  
!    â€¢ R. Kelley Cook for making GCC buildable from a read-only directory
       as well as other miscellaneous build process and documentation
       clean-ups.
  
!    â€¢ Ralf Corsepius for SH testing and minor bug fixing.
  
!    â€¢ FranÃ§ois-Xavier Coudert for contributions to GNU Fortran.
  
!    â€¢ Stan Cox for care and feeding of the x86 port and lots of behind
       the scenes hacking.
  
!    â€¢ Alex Crain provided changes for the 3b1.
  
!    â€¢ Ian Dall for major improvements to the NS32k port.
  
!    â€¢ Paul Dale for his work to add uClinux platform support to the m68k
       backend.
  
!    â€¢ Palmer Dabbelt for his work maintaining the RISC-V port.
  
!    â€¢ Dario Dariol contributed the four varieties of sample programs that
       print a copy of their source.
  
!    â€¢ Russell Davidson for fstream and stringstream fixes in libstdc++.
  
!    â€¢ Bud Davis for work on the G77 and GNU Fortran compilers.
  
!    â€¢ Mo DeJong for GCJ and libgcj bug fixes.
  
!    â€¢ Jerry DeLisle for contributions to GNU Fortran.
  
!    â€¢ DJ Delorie for the DJGPP port, build and libiberty maintenance,
       various bug fixes, and the M32C, MeP, MSP430, and RL78 ports.
  
!    â€¢ Arnaud Desitter for helping to debug GNU Fortran.
  
!    â€¢ Gabriel Dos Reis for contributions to G++, contributions and
       maintenance of GCC diagnostics infrastructure, libstdc++-v3,
!      including â€˜valarray<>â€™, â€˜complex<>â€™, maintaining the numerics
!      library (including that pesky â€˜<limits>â€™ :-) and keeping up-to-date
       anything to do with numbers.
  
!    â€¢ Ulrich Drepper for his work on glibc, testing of GCC using glibc,
       ISO C99 support, CFG dumping support, etc., plus support of the C++
       runtime libraries including for all kinds of C interface issues,
!      contributing and maintaining â€˜complex<>â€™, sanity checking and
       disbursement, configuration architecture, libio maintenance, and
       early math work.
  
!    â€¢ Robert J. Dubner for his work on the COBOL front end, mating the
       parser output to the GENERIC tree.
  
!    â€¢ FranÃ§ois Dumont for his work on libstdc++-v3, especially
!      maintaining and improving â€˜debug-modeâ€™ and associative and
       unordered containers.
  
!    â€¢ Zdenek Dvorak for a new loop unroller and various fixes.
  
!    â€¢ Michael Eager for his work on the Xilinx MicroBlaze port.
  
!    â€¢ Richard Earnshaw for his ongoing work with the ARM.
  
!    â€¢ David Edelsohn for his direction via the steering committee,
       ongoing work with the RS6000/PowerPC port, help cleaning up Haifa
       loop changes, doing the entire AIX port of libstdc++ with his bare
       hands, and for ensuring GCC properly keeps working on AIX.
  
!    â€¢ Kevin Ediger for the floating point formatting of num_put::do_put
       in libstdc++.
  
!    â€¢ Phil Edwards for libstdc++ work including configuration hackery,
       documentation maintainer, chief breaker of the web pages, the
       occasional iostream bug fix, and work on shared library symbol
       versioning.
  
!    â€¢ Paul Eggert for random hacking all over GCC.
  
!    â€¢ Mark Elbrecht for various DJGPP improvements, and for libstdc++
       configuration support for locales and fstream-related fixes.
  
!    â€¢ Vadim Egorov for libstdc++ fixes in strings, streambufs, and
       iostreams.
  
!    â€¢ Christian Ehrhardt for dealing with bug reports.
  
!    â€¢ Ben Elliston for his work to move the Objective-C runtime into its
       own subdirectory and for his work on autoconf.
  
!    â€¢ Revital Eres for work on the PowerPC 750CL port.
  
!    â€¢ Marc Espie for OpenBSD support.
  
!    â€¢ Doug Evans for much of the global optimization framework, arc,
       m32r, and SPARC work.
  
!    â€¢ Christopher Faylor for his work on the Cygwin port and for caring
       and feeding the gcc.gnu.org box and saving its users tons of spam.
  
!    â€¢ Fred Fish for BeOS support and Ada fixes.
  
!    â€¢ Ivan Fontes Garcia for the Portuguese translation of the GCJ FAQ.
  
!    â€¢ Peter Gerwinski for various bug fixes and the Pascal front end.
  
!    â€¢ Kaveh R. Ghazi for his direction via the steering committee,
!      amazing work to make â€˜-W -Wall -W* -Werrorâ€™ useful, and testing GCC
       on a plethora of platforms.  Kaveh extends his gratitude to the
       CAIP Center at Rutgers University for providing him with computing
       resources to work on Free Software from the late 1980s to 2010.
  
!    â€¢ John Gilmore for a donation to the FSF earmarked improving GNU
       Java.
  
!    â€¢ Judy Goldberg for c++ contributions.
  
!    â€¢ Torbjorn Granlund for various fixes and the c-torture testsuite,
       multiply- and divide-by-constant optimization, improved long long
       support, improved leaf function register allocation, and his
       direction via the steering committee.
  
!    â€¢ Jonny Grant for improvements to â€˜collect2'sâ€™ â€˜--helpâ€™
       documentation.
  
!    â€¢ Anthony Green for his â€˜-Osâ€™ contributions, the moxie port, and Java
       front end work.
  
!    â€¢ Stu Grossman for gdb hacking, allowing GCJ developers to debug Java
       code.
  
!    â€¢ Michael K. Gschwind contributed the port to the PDP-11.
  
!    â€¢ Ron Guilmette implemented the â€˜protoizeâ€™ and â€˜unprotoizeâ€™ tools,
       the support for DWARF 1 symbolic debugging information, and much of
       the support for System V Release 4.  He has also worked heavily on
       the Intel 386 and 860 support.
  
!    â€¢ Sumanth Gundapaneni for contributing the CR16 port.
  
!    â€¢ Mostafa Hagog for Swing Modulo Scheduling (SMS) and post reload
       GCSE.
  
!    â€¢ Bruno Haible for improvements in the runtime overhead for EH, new
       warnings and assorted bug fixes.
  
!    â€¢ Andrew Haley for his amazing Java compiler and library efforts.
  
!    â€¢ Chris Hanson assisted in making GCC work on HP-UX for the 9000
       series 300.
  
!    â€¢ Michael Hayes for various thankless work he's done trying to get
       the c30/c40 ports functional.  Lots of loop and unroll improvements
       and fixes.
  
!    â€¢ Dara Hazeghi for wading through myriads of target-specific bug
       reports.
  
!    â€¢ Kate Hedstrom for staking the G77 folks with an initial testsuite.
  
!    â€¢ Richard Henderson for his ongoing SPARC, alpha, ia32, and ia64
       work, loop opts, and generally fixing lots of old problems we've
       ignored for years, flow rewrite and lots of further stuff,
       including reviewing tons of patches.
  
!    â€¢ Aldy Hernandez for working on the PowerPC port, SIMD support, and
       various fixes.
  
!    â€¢ Nobuyuki Hikichi of Software Research Associates, Tokyo,
       contributed the support for the Sony NEWS machine.
  
!    â€¢ Kazu Hirata for caring and feeding the Renesas H8/300 port and
       various fixes.
  
!    â€¢ Katherine Holcomb for work on GNU Fortran.
  
!    â€¢ Manfred Hollstein for his ongoing work to keep the m88k alive, lots
       of testing and bug fixing, particularly of GCC configury code.
  
!    â€¢ Steve Holmgren for MachTen patches.
  
!    â€¢ Mat Hostetter for work on the TILE-Gx and TILEPro ports.
  
!    â€¢ Jan Hubicka for his x86 port improvements.
  
!    â€¢ Falk Hueffner for working on C and optimization bug reports.
  
!    â€¢ Bernardo Innocenti for his m68k work, including merging of ColdFire
       improvements and uClinux support.
  
!    â€¢ Christian Iseli for various bug fixes.
  
!    â€¢ Kamil Iskra for general m68k hacking.
  
!    â€¢ Lee Iverson for random fixes and MIPS testing.
  
!    â€¢ Balaji V. Iyer for Cilk+ development and merging.
  
!    â€¢ Andreas Jaeger for testing and benchmarking of GCC and various bug
       fixes.
  
!    â€¢ Martin Jambor for his work on inter-procedural optimizations, the
       switch conversion pass, and scalar replacement of aggregates.
  
!    â€¢ Jakub Jelinek for his SPARC work and sibling call optimizations as
       well as lots of bug fixes and test cases, and for improving the
       Java build system.
  
!    â€¢ Janis Johnson for ia64 testing and fixes, her quality improvement
       sidetracks, and web page maintenance.
  
!    â€¢ Kean Johnston for SCO OpenServer support and various fixes.
  
!    â€¢ Tim Josling for the sample language treelang based originally on
       Richard Kenner's "toy" language.
  
!    â€¢ Nicolai Josuttis for additional libstdc++ documentation.
  
!    â€¢ Klaus Kaempf for his ongoing work to make alpha-vms a viable
       target.
  
!    â€¢ Steven G. Kargl for work on GNU Fortran.
  
!    â€¢ David Kashtan of SRI adapted GCC to VMS.
  
!    â€¢ Ryszard Kabatek for many, many libstdc++ bug fixes and
       optimizations of strings, especially member functions, and for
       auto_ptr fixes.
  
!    â€¢ Geoffrey Keating for his ongoing work to make the PPC work for
       GNU/Linux and his automatic regression tester.
  
!    â€¢ Brendan Kehoe for his ongoing work with G++ and for a lot of early
       work in just about every part of libstdc++.
  
!    â€¢ Oliver M. Kellogg of Deutsche Aerospace contributed the port to the
       MIL-STD-1750A.
  
!    â€¢ Richard Kenner of the New York University Ultracomputer Research
       Laboratory wrote the machine descriptions for the AMD 29000, the
       DEC Alpha, the IBM RT PC, and the IBM RS/6000 as well as the
       support for instruction attributes.  He also made changes to better
*************** in alphabetical order.
*** 51540,52460 ****
       Richard Kenner was also the head maintainer of GCC for several
       years.
  
!    * Mumit Khan for various contributions to the Cygwin and Mingw32
       ports and maintaining binary releases for Microsoft Windows hosts,
       and for massive libstdc++ porting work to Cygwin/Mingw32.
  
!    * Robin Kirkham for cpu32 support.
  
!    * Mark Klein for PA improvements.
  
!    * Thomas Koenig for various bug fixes.
  
!    * Bruce Korb for the new and improved fixincludes code.
  
!    * Benjamin Kosnik for his G++ work and for leading the libstdc++-v3
       effort.
  
!    * Maxim Kuvyrkov for contributions to the instruction scheduler, the
       Android and m68k/Coldfire ports, and optimizations.
  
!    * Charles LaBrec contributed the support for the Integrated Solutions
       68020 system.
  
!    * Asher Langton and Mike Kumbera for contributing Cray pointer
       support to GNU Fortran, and for other GNU Fortran improvements.
  
!    * Jeff Law for his direction via the steering committee, coordinating
       the entire egcs project and GCC 2.95, rolling out snapshots and
       releases, handling merges from GCC2, reviewing tons of patches that
       might have fallen through the cracks else, and random but extensive
       hacking.
  
!    * Walter Lee for work on the TILE-Gx and TILEPro ports.
  
!    * Marc Lehmann for his direction via the steering committee and
       helping with analysis and improvements of x86 performance.
  
!    * Victor Leikehman for work on GNU Fortran.
  
!    * Ted Lemon wrote parts of the RTL reader and printer.
  
!    * Kriang Lerdsuwanakij for C++ improvements including template as
       template parameter support, and many C++ fixes.
  
!    * Warren Levy for tremendous work on libgcj (Java Runtime Library)
       and random work on the Java front end.
  
!    * Alain Lichnewsky ported GCC to the MIPS CPU.
  
!    * Oskar Liljeblad for hacking on AWT and his many Java bug reports
       and patches.
  
!    * Robert Lipe for OpenServer support, new testsuites, testing, etc.
  
!    * Chen Liqin for various S+core related fixes/improvement, and for
       maintaining the S+core port.
  
!    * Martin Liska for his work on identical code folding, the
       sanitizers, HSA, general bug fixing and for running automated
       regression testing of GCC and reporting numerous bugs.
  
!    * Weiwen Liu for testing and various bug fixes.
  
!    * Manuel Lo'pez-Iba'n~ez for improving '-Wconversion' and many other
       diagnostics fixes and improvements.
  
!    * Dave Love for his ongoing work with the Fortran front end and
       runtime libraries.
  
!    * James K. Lowden for his work on the COBOL front end, mainly the
       parser and CDF.
  
!    * Martin von Lo"wis for internal consistency checking infrastructure,
       various C++ improvements including namespace support, and tons of
       assistance with libstdc++/compiler merges.
  
!    * H.J. Lu for his previous contributions to the steering committee,
       many x86 bug reports, prototype patches, and keeping the GNU/Linux
       ports working.
  
!    * Greg McGary for random fixes and (someday) bounded pointers.
  
!    * Andrew MacLeod for his ongoing work in building a real EH system,
       various code generation improvements, work on the global optimizer,
       etc.
  
!    * Vladimir Makarov for hacking some ugly i960 problems, PowerPC
       hacking improvements to compile-time performance, overall knowledge
       and direction in the area of instruction scheduling, design and
       implementation of the automaton based instruction scheduler and
       design and implementation of the integrated and local register
       allocators.
  
!    * David Malcolm for his work on improving GCC diagnostics, JIT,
       self-tests and unit testing.
  
!    * Bob Manson for his behind the scenes work on dejagnu.
  
!    * Jose E. Marchesi for contributing the eBPF backend and his ongoing
       work maintaining it.
  
!    * John Marino for contributing the DragonFly BSD port.
  
!    * Philip Martin for lots of libstdc++ string and vector iterator
       fixes and improvements, and string clean up and testsuites.
  
!    * Dhruv Matani for work on libstdc++ allocators.
  
!    * Michael Matz for his work on dominance tree discovery, the x86-64
       port, link-time optimization framework and general optimization
       improvements.
  
!    * All of the Mauve project contributors for Java test code.
  
!    * Bryce McKinlay for numerous GCJ and libgcj fixes and improvements.
  
!    * Adam Megacz for his work on the Microsoft Windows port of GCJ.
  
!    * Michael Meissner for LRS framework, ia32, m32r, v850, m88k, MIPS,
       powerpc, haifa, ECOFF debug support, and other assorted hacking.
  
!    * Jason Merrill for his direction via the steering committee and
       leading the G++ effort.
  
!    * Martin Michlmayr for testing GCC on several architectures using the
       entire Debian archive.
  
!    * David Miller for his direction via the steering committee, lots of
       SPARC work, improvements in jump.cc and interfacing with the Linux
       kernel developers.
  
!    * Gary Miller ported GCC to Charles River Data Systems machines.
  
!    * Alfred Minarik for libstdc++ string and ios bug fixes, and turning
       the entire libstdc++ testsuite namespace-compatible.
  
!    * Mark Mitchell for his direction via the steering committee,
       mountains of C++ work, load/store hoisting out of loops, alias
!      analysis improvements, ISO C 'restrict' support, and serving as
       release manager from 2000 to 2011.
  
!    * Alan Modra for various GNU/Linux bits and testing.
  
!    * Toon Moene for his direction via the steering committee, Fortran
       maintenance, and his ongoing work to make us make Fortran run fast.
  
!    * Jason Molenda for major help in the care and feeding of all the
       services on the gcc.gnu.org (formerly egcs.cygnus.com)
       machine--mail, web services, ftp services, etc etc.  Doing all this
       work on scrap paper and the backs of envelopes would have been...
       difficult.
  
!    * Catherine Moore for fixing various ugly problems we have sent her
       way, including the haifa bug which was killing the Alpha & PowerPC
       Linux kernels.
  
!    * Mike Moreton for his various Java patches.
  
!    * David Mosberger-Tang for various Alpha improvements, and for the
       initial IA-64 port.
  
!    * Stephen Moshier contributed the floating point emulator that
       assists in cross-compilation and permits support for floating point
       numbers wider than 64 bits and for ISO C99 support.
  
!    * Bill Moyer for his behind the scenes work on various issues.
  
!    * Philippe De Muyter for his work on the m68k port.
  
!    * Joseph S. Myers for his work on the PDP-11 port, format checking
       and ISO C99 support, and continuous emphasis on (and contributions
       to) documentation.
  
!    * Nathan Myers for his work on libstdc++-v3: architecture and
       authorship through the first three snapshots, including
       implementation of locale infrastructure, string, shadow C headers,
       and the initial project documentation (DESIGN, CHECKLIST, and so
       forth).  Later, more work on MT-safe string and shadow headers.
  
!    * Felix Natter for documentation on porting libstdc++.
  
!    * Nathanael Nerode for cleaning up the configuration/build process.
  
!    * NeXT, Inc. donated the front end that supports the Objective-C
       language.
  
!    * Hans-Peter Nilsson for the CRIS and MMIX ports, improvements to the
       search engine setup, various documentation fixes and other small
       fixes.
  
!    * Geoff Noer for his work on getting cygwin native builds working.
  
!    * Vegard Nossum for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    * Diego Novillo for his work on Tree SSA, OpenMP, SPEC performance
       tracking web pages, GIMPLE tuples, and assorted fixes.
  
!    * David O'Brien for the FreeBSD/alpha, FreeBSD/AMD x86-64,
       FreeBSD/ARM, FreeBSD/PowerPC, and FreeBSD/SPARC64 ports and related
       infrastructure improvements.
  
!    * Alexandre Oliva for various build infrastructure improvements,
       scripts and amazing testing work, including keeping libtool issues
       sane and happy.
  
!    * Stefan Olsson for work on mt_alloc.
  
!    * Melissa O'Neill for various NeXT fixes.
  
!    * Rainer Orth for random MIPS work, including improvements to GCC's
       o32 ABI support, improvements to dejagnu's MIPS support, Java
       configuration clean-ups and porting work, and maintaining the IRIX,
       Solaris 2, and Tru64 UNIX ports.
  
!    * Patrick Palka for contributions to the C++ library and front end.
  
!    * Steven Pemberton for his contribution of 'enquire' which allowed
       GCC to determine various properties of the floating point unit and
!      generate 'float.h' in older versions of GCC.
  
!    * Hartmut Penner for work on the s390 port.
  
!    * Paul Petersen wrote the machine description for the Alliant FX/8.
  
!    * Alexandre Petit-Bianco for implementing much of the Java compiler
       and continued Java maintainership.
  
!    * Matthias Pfaller for major improvements to the NS32k port.
  
!    * Gerald Pfeifer for his direction via the steering committee,
       pointing out lots of problems we need to solve, maintenance of the
       web pages, and taking care of documentation maintenance in general.
  
!    * Marek Polacek for his work on the C front end, the sanitizers and
       general bug fixing.
  
!    * Andrew Pinski for processing bug reports by the dozen, maintenance
       of the Objective-C runtime libraries, and many scalar
       optimizations.
  
!    * Ovidiu Predescu for his work on the Objective-C front end and
       runtime libraries.
  
!    * Jerry Quinn for major performance improvements in C++ formatted
       I/O.
  
!    * Ken Raeburn for various improvements to checker, MIPS ports and
       various cleanups in the compiler.
  
!    * Rolf W. Rasmussen for hacking on AWT.
  
!    * David Reese of Sun Microsystems contributed to the Solaris on
       PowerPC port.
  
!    * John Regehr for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    * Volker Reichelt for running automated regression testing of GCC and
       reporting numerous bugs and for keeping up with the problem
       reports.
  
!    * Joern Rennecke for maintaining the sh port, loop, regmove & reload
       hacking and developing and maintaining the Epiphany port.
  
!    * Loren J. Rittle for improvements to libstdc++-v3 including the
       FreeBSD port, threading fixes, thread-related configury changes,
       critical threading documentation, and solutions to really tricky
       I/O problems, as well as keeping GCC properly working on FreeBSD
       and continuous testing.
  
!    * Craig Rodrigues for processing tons of bug reports.
  
!    * Ola Ro"nnerup for work on mt_alloc.
  
!    * Gavin Romig-Koch for lots of behind the scenes MIPS work.
  
!    * David Ronis inspired and encouraged Craig to rewrite the G77
       documentation in texinfo format by contributing a first pass at a
!      translation of the old 'g77-0.5.16/f/DOC' file.
  
!    * Ken Rose for fixes to GCC's delay slot filling code.
  
!    * Ira Rosen for her contributions to the auto-vectorizer.
  
!    * Paul Rubin wrote most of the preprocessor.
  
!    * Pe'tur Runo'lfsson for major performance improvements in C++
       formatted I/O and large file support in C++ filebuf.
  
!    * Chip Salzenberg for libstdc++ patches and improvements to locales,
       traits, Makefiles, libio, libtool hackery, and "long long" support.
  
!    * Juha Sarlin for improvements to the H8 code generator.
  
!    * Greg Satz assisted in making GCC work on HP-UX for the 9000 series
       300.
  
!    * Roger Sayle for improvements to constant folding and GCC's RTL
       optimizers as well as for fixing numerous bugs.
  
!    * Bradley Schatz for his work on the GCJ FAQ.
  
!    * Peter Schauer wrote the code to allow debugging to work on the
       Alpha.
  
!    * William Schelter did most of the work on the Intel 80386 support.
  
!    * Tobias Schlu"ter for work on GNU Fortran.
  
!    * Bernd Schmidt for various code generation improvements and major
       work in the reload pass, serving as release manager for GCC 2.95.3,
       and work on the Blackfin and C6X ports.
  
!    * Peter Schmid for constant testing of libstdc++--especially
       application testing, going above and beyond what was requested for
       the release criteria--and libstdc++ header file tweaks.
  
!    * Jason Schroeder for jcf-dump patches.
  
!    * Andreas Schwab for his work on the m68k port.
  
!    * Lars Segerlund for work on GNU Fortran.
  
!    * Dodji Seketeli for numerous C++ bug fixes and debug info
       improvements.
  
!    * Tim Shen for major work on '<regex>'.
  
!    * Joel Sherrill for his direction via the steering committee, RTEMS
       contributions and RTEMS testing.
  
!    * Nathan Sidwell for many C++ fixes/improvements.
  
!    * Jeffrey Siegal for helping RMS with the original design of GCC,
       some code which handles the parse tree and RTL data structures,
       constant folding and help with the original VAX & m68k ports.
  
!    * Kenny Simpson for prompting libstdc++ fixes due to defect reports
       from the LWG (thereby keeping GCC in line with updates from the
       ISO).
  
!    * Franz Sirl for his ongoing work with making the PPC port stable for
       GNU/Linux.
  
!    * Andrey Slepuhin for assorted AIX hacking.
  
!    * Trevor Smigiel for contributing the SPU port.
  
!    * Christopher Smith did the port for Convex machines.
  
!    * Danny Smith for his major efforts on the Mingw (and Cygwin) ports.
       Retired from GCC maintainership August 2010, having mentored two
       new maintainers into the role.
  
!    * Randy Smith finished the Sun FPA support.
  
!    * Ed Smith-Rowland for his continuous work on libstdc++-v3, special
!      functions, '<random>', and various improvements to C++11 features.
  
!    * Scott Snyder for queue, iterator, istream, and string fixes and
       libstdc++ testsuite entries.  Also for providing the patch to G77
!      to add rudimentary support for 'INTEGER*1', 'INTEGER*2', and
!      'LOGICAL*1'.
  
!    * Zdenek Sojka for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    * Arseny Solokha for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    * Jayant Sonar for contributing the CR16 port.
  
!    * Brad Spencer for contributions to the GLIBCPP_FORCE_NEW technique.
  
!    * Richard Stallman, for writing the original GCC and launching the
       GNU project.
  
!    * Jan Stein of the Chalmers Computer Society provided support for
       Genix, as well as part of the 32000 machine description.
  
!    * Gerhard Steinmetz for running automated regression testing of GCC
       and reporting numerous bugs.
  
!    * Nigel Stephens for various mips16 related fixes/improvements.
  
!    * Jonathan Stone wrote the machine description for the Pyramid
       computer.
  
!    * Graham Stott for various infrastructure improvements.
  
!    * John Stracke for his Java HTTP protocol fixes.
  
!    * Mike Stump for his Elxsi port, G++ contributions over the years and
       more recently his vxworks contributions
  
!    * Jeff Sturm for Java porting help, bug fixes, and encouragement.
  
!    * Zhendong Su for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    * Chengnian Sun for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    * Shigeya Suzuki for this fixes for the bsdi platforms.
  
!    * Ian Lance Taylor for the Go frontend, the initial mips16 and mips64
       support, general configury hacking, fixincludes, etc.
  
!    * Holger Teutsch provided the support for the Clipper CPU.
  
!    * Gary Thomas for his ongoing work to make the PPC work for
       GNU/Linux.
  
!    * Paul Thomas for contributions to GNU Fortran.
  
!    * Philipp Thomas for random bug fixes throughout the compiler
  
!    * Jason Thorpe for thread support in libstdc++ on NetBSD.
  
!    * Kresten Krab Thorup wrote the run time support for the Objective-C
       language and the fantastic Java bytecode interpreter.
  
!    * Michael Tiemann for random bug fixes, the first instruction
       scheduler, initial C++ support, function integration, NS32k, SPARC
       and M88k machine description work, delay slot scheduling.
  
!    * Andreas Tobler for his work porting libgcj to Darwin.
  
!    * Teemu Torma for thread safe exception handling support.
  
!    * Leonard Tower wrote parts of the parser, RTL generator, and RTL
       definitions, and of the VAX machine description.
  
!    * Daniel Towner and Hariharan Sandanagobalane contributed and
       maintain the picoChip port.
  
!    * Tom Tromey for internationalization support and for his many Java
       contributions and libgcj maintainership.
  
!    * Lassi Tuura for improvements to config.guess to determine HP
       processor types.
  
!    * Petter Urkedal for libstdc++ CXXFLAGS, math, and algorithms fixes.
  
!    * Andy Vaught for the design and initial implementation of the GNU
       Fortran front end.
  
!    * Brent Verner for work with the libstdc++ cshadow files and their
       associated configure steps.
  
!    * Todd Vierling for contributions for NetBSD ports.
  
!    * Andrew Waterman for contributing the RISC-V port, as well as
       maintaining it.
  
!    * Jonathan Wakely for contributing to and maintaining libstdc++.
  
!    * Dean Wakerley for converting the install documentation from HTML to
       texinfo in time for GCC 3.0.
  
!    * Krister Walfridsson for random bug fixes.
  
!    * Feng Wang for contributions to GNU Fortran.
  
!    * Stephen M. Webb for time and effort on making libstdc++ shadow
       files work with the tricky Solaris 8+ headers, and for pushing the
       build-time header tree.  Also, for starting and driving the
!      '<regex>' effort.
  
!    * John Wehle for various improvements for the x86 code generator,
       related infrastructure improvements to help x86 code generation,
       value range propagation and other work, WE32k port.
  
!    * Ulrich Weigand for work on the s390 port.
  
!    * Janus Weil for contributions to GNU Fortran.
  
!    * Zack Weinberg for major work on cpplib and various other bug fixes.
  
!    * Matt Welsh for help with Linux Threads support in GCJ.
  
!    * Urban Widmark for help fixing java.io.
  
!    * Mark Wielaard for new Java library code and his work integrating
       with Classpath.
  
!    * Dale Wiles helped port GCC to the Tahoe.
  
!    * Bob Wilson from Tensilica, Inc. for the Xtensa port.
  
!    * Jim Wilson for his direction via the steering committee, tackling
       hard problems in various places that nobody else wanted to work on,
       strength reduction and other loop optimizations.
  
!    * Paul Woegerer and Tal Agmon for the CRX port.
  
!    * Carlo Wood for various fixes.
  
!    * Tom Wood for work on the m88k port.
  
!    * Chung-Ju Wu for his work on the Andes NDS32 port.
  
!    * Canqun Yang for work on GNU Fortran.
  
!    * Masanobu Yuhara of Fujitsu Laboratories implemented the machine
       description for the Tron architecture (specifically, the Gmicro).
  
!    * Kevin Zachmann helped port GCC to the Tahoe.
  
!    * Ayal Zaks for Swing Modulo Scheduling (SMS).
  
!    * Qirun Zhang for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    * Xiaoqiang Zhang for work on GNU Fortran.
  
!    * Gilles Zunino for help porting Java to Irix.
  
   The following people are recognized for their contributions to GNAT,
  the Ada front end of GCC:
!    * Bernard Banner
  
!    * Romain Berrendonner
  
!    * Geert Bosch
  
!    * Emmanuel Briot
  
!    * Joel Brobecker
  
!    * Ben Brosgol
  
!    * Vincent Celier
  
!    * Arnaud Charlet
  
!    * Chien Chieng
  
!    * Cyrille Comar
  
!    * Cyrille Crozes
  
!    * Robert Dewar
  
!    * Gary Dismukes
  
!    * Robert Duff
  
!    * Ed Falis
  
!    * Ramon Fernandez
  
!    * Sam Figueroa
  
!    * Vasiliy Fofanov
  
!    * Michael Friess
  
!    * Franco Gasperoni
  
!    * Ted Giering
  
!    * Matthew Gingell
  
!    * Laurent Guerby
  
!    * Jerome Guitton
  
!    * Olivier Hainque
  
!    * Jerome Hugues
  
!    * Hristian Kirtchev
  
!    * Jerome Lambourg
  
!    * Bruno Leclerc
  
!    * Albert Lee
  
!    * Sean McNeil
  
!    * Javier Miranda
  
!    * Laurent Nana
  
!    * Pascal Obry
  
!    * Dong-Ik Oh
  
!    * Laurent Pautet
  
!    * Brett Porter
  
!    * Thomas Quinot
  
!    * Nicolas Roche
  
!    * Pat Rogers
  
!    * Jose Ruiz
  
!    * Douglas Rupp
  
!    * Sergey Rybin
  
!    * Gail Schenker
  
!    * Ed Schonberg
  
!    * Nicolas Setton
  
!    * Samuel Tardieu
  
   The following people are recognized for their contributions of new
  features, bug reports, testing and integration of classpath/libgcj for
  GCC version 4.1:
!    * Lillian Angel for 'JTree' implementation and lots Free Swing
       additions and bug fixes.
  
!    * Wolfgang Baer for 'GapContent' bug fixes.
  
!    * Anthony Balkissoon for 'JList', Free Swing 1.5 updates and mouse
!      event fixes, lots of Free Swing work including 'JTable' editing.
  
!    * Stuart Ballard for RMI constant fixes.
  
!    * Goffredo Baroncelli for 'HTTPURLConnection' fixes.
  
!    * Gary Benson for 'MessageFormat' fixes.
  
!    * Daniel Bonniot for 'Serialization' fixes.
  
!    * Chris Burdess for lots of gnu.xml and http protocol fixes, 'StAX'
!      and 'DOM xml:id' support.
  
!    * Ka-Hing Cheung for 'TreePath' and 'TreeSelection' fixes.
  
!    * Archie Cobbs for build fixes, VM interface updates,
!      'URLClassLoader' updates.
  
!    * Kelley Cook for build fixes.
  
!    * Martin Cordova for Suggestions for better 'SocketTimeoutException'.
  
!    * David Daney for 'BitSet' bug fixes, 'HttpURLConnection' rewrite and
       improvements.
  
!    * Thomas Fitzsimmons for lots of upgrades to the gtk+ AWT and Cairo
       2D support.  Lots of imageio framework additions, lots of AWT and
       Free Swing bug fixes.
  
!    * Jeroen Frijters for 'ClassLoader' and nio cleanups, serialization
!      fixes, better 'Proxy' support, bug fixes and IKVM integration.
  
!    * Santiago Gala for 'AccessControlContext' fixes.
  
!    * Nicolas Geoffray for 'VMClassLoader' and 'AccessController'
       improvements.
  
!    * David Gilbert for 'basic' and 'metal' icon and plaf support and
       lots of documenting, Lots of Free Swing and metal theme additions.
!      'MetalIconFactory' implementation.
  
!    * Anthony Green for 'MIDI' framework, 'ALSA' and 'DSSI' providers.
  
!    * Andrew Haley for 'Serialization' and 'URLClassLoader' fixes, gcj
       build speedups.
  
!    * Kim Ho for 'JFileChooser' implementation.
  
!    * Andrew John Hughes for 'Locale' and net fixes, URI RFC2986 updates,
!      'Serialization' fixes, 'Properties' XML support and generic branch
       work, VMIntegration guide update.
  
!    * Bastiaan Huisman for 'TimeZone' bug fixing.
  
!    * Andreas Jaeger for mprec updates.
  
!    * Paul Jenner for better '-Werror' support.
  
!    * Ito Kazumitsu for 'NetworkInterface' implementation and updates.
  
!    * Roman Kennke for 'BoxLayout', 'GrayFilter' and 'SplitPane', plus
       bug fixes all over.  Lots of Free Swing work including styled text.
  
!    * Simon Kitching for 'String' cleanups and optimization suggestions.
  
!    * Michael Koch for configuration fixes, 'Locale' updates, bug and
       build fixes.
  
!    * Guilhem Lavaux for configuration, thread and channel fixes and
!      Kaffe integration.  JCL native 'Pointer' updates.  Logger bug
       fixes.
  
!    * David Lichteblau for JCL support library global/local reference
       cleanups.
  
!    * Aaron Luchko for JDWP updates and documentation fixes.
  
!    * Ziga Mahkovec for 'Graphics2D' upgraded to Cairo 0.5 and new regex
       features.
  
!    * Sven de Marothy for BMP imageio support, CSS and 'TextLayout'
!      fixes.  'GtkImage' rewrite, 2D, awt, free swing and date/time fixes
       and implementing the Qt4 peers.
  
!    * Casey Marshall for crypto algorithm fixes, 'FileChannel' lock,
!      'SystemLogger' and 'FileHandler' rotate implementations, NIO
!      'FileChannel.map' support, security and policy updates.
  
!    * Bryce McKinlay for RMI work.
  
!    * Audrius Meskauskas for lots of Free Corba, RMI and HTML work plus
       testing and documenting.
  
!    * Kalle Olavi Niemitalo for build fixes.
  
!    * Rainer Orth for build fixes.
  
!    * Andrew Overholt for 'File' locking fixes.
  
!    * Ingo Proetel for 'Image', 'Logger' and 'URLClassLoader' updates.
  
!    * Olga Rodimina for 'MenuSelectionManager' implementation.
  
!    * Jan Roehrich for 'BasicTreeUI' and 'JTree' fixes.
  
!    * Julian Scheid for documentation updates and gjdoc support.
  
!    * Christian Schlichtherle for zip fixes and cleanups.
  
!    * Robert Schuster for documentation updates and beans fixes,
!      'TreeNode' enumerations and 'ActionCommand' and various fixes, XML
       and URL, AWT and Free Swing bug fixes.
  
!    * Keith Seitz for lots of JDWP work.
  
!    * Christian Thalinger for 64-bit cleanups, Configuration and VM
!      interface fixes and 'CACAO' integration, 'fdlibm' updates.
  
!    * Gael Thomas for 'VMClassLoader' boot packages support suggestions.
  
!    * Andreas Tobler for Darwin and Solaris testing and fixing, 'Qt4'
!      support for Darwin / macOS, 'Graphics2D' support, 'gtk+' updates.
  
!    * Dalibor Topic for better 'DEBUG' support, build cleanups and Kaffe
!      integration.  'Qt4' build infrastructure, 'SHA1PRNG' and
!      'GdkPixbugDecoder' updates.
  
!    * Tom Tromey for Eclipse integration, generics work, lots of bug
       fixes and gcj integration including coordinating The Big Merge.
  
!    * Mark Wielaard for bug fixes, packaging and release management,
!      'Clipboard' implementation, system call interrupts and network
!      timeouts and 'GdkPixpufDecoder' fixes.
  
   In addition to the above, all of which also contributed time and energy
  in testing GCC, we would like to thank the following for their
  contributions to testing:
  
!    * Michael Abd-El-Malek
  
!    * Thomas Arend
  
!    * Bonzo Armstrong
  
!    * Steven Ashe
  
!    * Chris Baldwin
  
!    * David Billinghurst
  
!    * Jim Blandy
  
!    * Stephane Bortzmeyer
  
!    * Horst von Brand
  
!    * Frank Braun
  
!    * Rodney Brown
  
!    * Sidney Cadot
  
!    * Bradford Castalia
  
!    * Robert Clark
  
!    * Jonathan Corbet
  
!    * Ralph Doncaster
  
!    * Richard Emberson
  
!    * Levente Farkas
  
!    * Graham Fawcett
  
!    * Mark Fernyhough
  
!    * Robert A. French
  
!    * Jo"rgen Freyh
  
!    * Mark K. Gardner
  
!    * Charles-Antoine Gauthier
  
!    * Yung Shing Gene
  
!    * David Gilbert
  
!    * Simon Gornall
  
!    * Fred Gray
  
!    * John Griffin
  
!    * Patrik Hagglund
  
!    * Phil Hargett
  
!    * Amancio Hasty
  
!    * Takafumi Hayashi
  
!    * Bryan W. Headley
  
!    * Kevin B. Hendricks
  
!    * Joep Jansen
  
!    * Christian Joensson
  
!    * Michel Kern
  
!    * David Kidd
  
!    * Tobias Kuipers
  
!    * Anand Krishnaswamy
  
!    * A. O. V. Le Blanc
  
!    * llewelly
  
!    * Damon Love
  
!    * Brad Lucier
  
!    * Matthias Klose
  
!    * Martin Knoblauch
  
!    * Rick Lutowski
  
!    * Jesse Macnish
  
!    * Stefan Morrell
  
!    * Anon A. Mous
  
!    * Matthias Mueller
  
!    * Pekka Nikander
  
!    * Rick Niles
  
!    * Jon Olson
  
!    * Magnus Persson
  
!    * Chris Pollard
  
!    * Richard Polton
  
!    * Derk Reefman
  
!    * David Rees
  
!    * Paul Reilly
  
!    * Tom Reilly
  
!    * Torsten Rueger
  
!    * Danny Sadinoff
  
!    * Marc Schifer
  
!    * Erik Schnetter
  
!    * Wayne K. Schroll
  
!    * David Schuler
  
!    * Vin Shelton
  
!    * Tim Souder
  
!    * Adam Sulmicki
  
!    * Bill Thorson
  
!    * George Talbot
  
!    * Pedro A. M. Vazquez
  
!    * Gregory Warnes
  
!    * Ian Watson
  
!    * David E. Young
  
!    * And many others
  
   And finally we'd like to thank everyone who uses the compiler, provides
  feedback and generally reminds us why we're doing this work in the first
--- 51544,52464 ----
       Richard Kenner was also the head maintainer of GCC for several
       years.
  
!    â€¢ Mumit Khan for various contributions to the Cygwin and Mingw32
       ports and maintaining binary releases for Microsoft Windows hosts,
       and for massive libstdc++ porting work to Cygwin/Mingw32.
  
!    â€¢ Robin Kirkham for cpu32 support.
  
!    â€¢ Mark Klein for PA improvements.
  
!    â€¢ Thomas Koenig for various bug fixes.
  
!    â€¢ Bruce Korb for the new and improved fixincludes code.
  
!    â€¢ Benjamin Kosnik for his G++ work and for leading the libstdc++-v3
       effort.
  
!    â€¢ Maxim Kuvyrkov for contributions to the instruction scheduler, the
       Android and m68k/Coldfire ports, and optimizations.
  
!    â€¢ Charles LaBrec contributed the support for the Integrated Solutions
       68020 system.
  
!    â€¢ Asher Langton and Mike Kumbera for contributing Cray pointer
       support to GNU Fortran, and for other GNU Fortran improvements.
  
!    â€¢ Jeff Law for his direction via the steering committee, coordinating
       the entire egcs project and GCC 2.95, rolling out snapshots and
       releases, handling merges from GCC2, reviewing tons of patches that
       might have fallen through the cracks else, and random but extensive
       hacking.
  
!    â€¢ Walter Lee for work on the TILE-Gx and TILEPro ports.
  
!    â€¢ Marc Lehmann for his direction via the steering committee and
       helping with analysis and improvements of x86 performance.
  
!    â€¢ Victor Leikehman for work on GNU Fortran.
  
!    â€¢ Ted Lemon wrote parts of the RTL reader and printer.
  
!    â€¢ Kriang Lerdsuwanakij for C++ improvements including template as
       template parameter support, and many C++ fixes.
  
!    â€¢ Warren Levy for tremendous work on libgcj (Java Runtime Library)
       and random work on the Java front end.
  
!    â€¢ Alain Lichnewsky ported GCC to the MIPS CPU.
  
!    â€¢ Oskar Liljeblad for hacking on AWT and his many Java bug reports
       and patches.
  
!    â€¢ Robert Lipe for OpenServer support, new testsuites, testing, etc.
  
!    â€¢ Chen Liqin for various S+core related fixes/improvement, and for
       maintaining the S+core port.
  
!    â€¢ Martin Liska for his work on identical code folding, the
       sanitizers, HSA, general bug fixing and for running automated
       regression testing of GCC and reporting numerous bugs.
  
!    â€¢ Weiwen Liu for testing and various bug fixes.
  
!    â€¢ Manuel LÃ³pez-IbÃ¡Ã±ez for improving â€˜-Wconversionâ€™ and many other
       diagnostics fixes and improvements.
  
!    â€¢ Dave Love for his ongoing work with the Fortran front end and
       runtime libraries.
  
!    â€¢ James K. Lowden for his work on the COBOL front end, mainly the
       parser and CDF.
  
!    â€¢ Martin von LÃ¶wis for internal consistency checking infrastructure,
       various C++ improvements including namespace support, and tons of
       assistance with libstdc++/compiler merges.
  
!    â€¢ H.J. Lu for his previous contributions to the steering committee,
       many x86 bug reports, prototype patches, and keeping the GNU/Linux
       ports working.
  
!    â€¢ Greg McGary for random fixes and (someday) bounded pointers.
  
!    â€¢ Andrew MacLeod for his ongoing work in building a real EH system,
       various code generation improvements, work on the global optimizer,
       etc.
  
!    â€¢ Vladimir Makarov for hacking some ugly i960 problems, PowerPC
       hacking improvements to compile-time performance, overall knowledge
       and direction in the area of instruction scheduling, design and
       implementation of the automaton based instruction scheduler and
       design and implementation of the integrated and local register
       allocators.
  
!    â€¢ David Malcolm for his work on improving GCC diagnostics, JIT,
       self-tests and unit testing.
  
!    â€¢ Bob Manson for his behind the scenes work on dejagnu.
  
!    â€¢ Jose E. Marchesi for contributing the eBPF backend and his ongoing
       work maintaining it.
  
!    â€¢ John Marino for contributing the DragonFly BSD port.
  
!    â€¢ Philip Martin for lots of libstdc++ string and vector iterator
       fixes and improvements, and string clean up and testsuites.
  
!    â€¢ Dhruv Matani for work on libstdc++ allocators.
  
!    â€¢ Michael Matz for his work on dominance tree discovery, the x86-64
       port, link-time optimization framework and general optimization
       improvements.
  
!    â€¢ All of the Mauve project contributors for Java test code.
  
!    â€¢ Bryce McKinlay for numerous GCJ and libgcj fixes and improvements.
  
!    â€¢ Adam Megacz for his work on the Microsoft Windows port of GCJ.
  
!    â€¢ Michael Meissner for LRS framework, ia32, m32r, v850, m88k, MIPS,
       powerpc, haifa, ECOFF debug support, and other assorted hacking.
  
!    â€¢ Jason Merrill for his direction via the steering committee and
       leading the G++ effort.
  
!    â€¢ Martin Michlmayr for testing GCC on several architectures using the
       entire Debian archive.
  
!    â€¢ David Miller for his direction via the steering committee, lots of
       SPARC work, improvements in jump.cc and interfacing with the Linux
       kernel developers.
  
!    â€¢ Gary Miller ported GCC to Charles River Data Systems machines.
  
!    â€¢ Alfred Minarik for libstdc++ string and ios bug fixes, and turning
       the entire libstdc++ testsuite namespace-compatible.
  
!    â€¢ Mark Mitchell for his direction via the steering committee,
       mountains of C++ work, load/store hoisting out of loops, alias
!      analysis improvements, ISO C â€˜restrictâ€™ support, and serving as
       release manager from 2000 to 2011.
  
!    â€¢ Alan Modra for various GNU/Linux bits and testing.
  
!    â€¢ Toon Moene for his direction via the steering committee, Fortran
       maintenance, and his ongoing work to make us make Fortran run fast.
  
!    â€¢ Jason Molenda for major help in the care and feeding of all the
       services on the gcc.gnu.org (formerly egcs.cygnus.com)
       machine--mail, web services, ftp services, etc etc.  Doing all this
       work on scrap paper and the backs of envelopes would have been...
       difficult.
  
!    â€¢ Catherine Moore for fixing various ugly problems we have sent her
       way, including the haifa bug which was killing the Alpha & PowerPC
       Linux kernels.
  
!    â€¢ Mike Moreton for his various Java patches.
  
!    â€¢ David Mosberger-Tang for various Alpha improvements, and for the
       initial IA-64 port.
  
!    â€¢ Stephen Moshier contributed the floating point emulator that
       assists in cross-compilation and permits support for floating point
       numbers wider than 64 bits and for ISO C99 support.
  
!    â€¢ Bill Moyer for his behind the scenes work on various issues.
  
!    â€¢ Philippe De Muyter for his work on the m68k port.
  
!    â€¢ Joseph S. Myers for his work on the PDP-11 port, format checking
       and ISO C99 support, and continuous emphasis on (and contributions
       to) documentation.
  
!    â€¢ Nathan Myers for his work on libstdc++-v3: architecture and
       authorship through the first three snapshots, including
       implementation of locale infrastructure, string, shadow C headers,
       and the initial project documentation (DESIGN, CHECKLIST, and so
       forth).  Later, more work on MT-safe string and shadow headers.
  
!    â€¢ Felix Natter for documentation on porting libstdc++.
  
!    â€¢ Nathanael Nerode for cleaning up the configuration/build process.
  
!    â€¢ NeXT, Inc. donated the front end that supports the Objective-C
       language.
  
!    â€¢ Hans-Peter Nilsson for the CRIS and MMIX ports, improvements to the
       search engine setup, various documentation fixes and other small
       fixes.
  
!    â€¢ Geoff Noer for his work on getting cygwin native builds working.
  
!    â€¢ Vegard Nossum for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    â€¢ Diego Novillo for his work on Tree SSA, OpenMP, SPEC performance
       tracking web pages, GIMPLE tuples, and assorted fixes.
  
!    â€¢ David O'Brien for the FreeBSD/alpha, FreeBSD/AMD x86-64,
       FreeBSD/ARM, FreeBSD/PowerPC, and FreeBSD/SPARC64 ports and related
       infrastructure improvements.
  
!    â€¢ Alexandre Oliva for various build infrastructure improvements,
       scripts and amazing testing work, including keeping libtool issues
       sane and happy.
  
!    â€¢ Stefan Olsson for work on mt_alloc.
  
!    â€¢ Melissa O'Neill for various NeXT fixes.
  
!    â€¢ Rainer Orth for random MIPS work, including improvements to GCC's
       o32 ABI support, improvements to dejagnu's MIPS support, Java
       configuration clean-ups and porting work, and maintaining the IRIX,
       Solaris 2, and Tru64 UNIX ports.
  
!    â€¢ Patrick Palka for contributions to the C++ library and front end.
  
!    â€¢ Steven Pemberton for his contribution of â€˜enquireâ€™ which allowed
       GCC to determine various properties of the floating point unit and
!      generate â€˜float.hâ€™ in older versions of GCC.
  
!    â€¢ Hartmut Penner for work on the s390 port.
  
!    â€¢ Paul Petersen wrote the machine description for the Alliant FX/8.
  
!    â€¢ Alexandre Petit-Bianco for implementing much of the Java compiler
       and continued Java maintainership.
  
!    â€¢ Matthias Pfaller for major improvements to the NS32k port.
  
!    â€¢ Gerald Pfeifer for his direction via the steering committee,
       pointing out lots of problems we need to solve, maintenance of the
       web pages, and taking care of documentation maintenance in general.
  
!    â€¢ Marek Polacek for his work on the C front end, the sanitizers and
       general bug fixing.
  
!    â€¢ Andrew Pinski for processing bug reports by the dozen, maintenance
       of the Objective-C runtime libraries, and many scalar
       optimizations.
  
!    â€¢ Ovidiu Predescu for his work on the Objective-C front end and
       runtime libraries.
  
!    â€¢ Jerry Quinn for major performance improvements in C++ formatted
       I/O.
  
!    â€¢ Ken Raeburn for various improvements to checker, MIPS ports and
       various cleanups in the compiler.
  
!    â€¢ Rolf W. Rasmussen for hacking on AWT.
  
!    â€¢ David Reese of Sun Microsystems contributed to the Solaris on
       PowerPC port.
  
!    â€¢ John Regehr for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    â€¢ Volker Reichelt for running automated regression testing of GCC and
       reporting numerous bugs and for keeping up with the problem
       reports.
  
!    â€¢ Joern Rennecke for maintaining the sh port, loop, regmove & reload
       hacking and developing and maintaining the Epiphany port.
  
!    â€¢ Loren J. Rittle for improvements to libstdc++-v3 including the
       FreeBSD port, threading fixes, thread-related configury changes,
       critical threading documentation, and solutions to really tricky
       I/O problems, as well as keeping GCC properly working on FreeBSD
       and continuous testing.
  
!    â€¢ Craig Rodrigues for processing tons of bug reports.
  
!    â€¢ Ola RÃ¶nnerup for work on mt_alloc.
  
!    â€¢ Gavin Romig-Koch for lots of behind the scenes MIPS work.
  
!    â€¢ David Ronis inspired and encouraged Craig to rewrite the G77
       documentation in texinfo format by contributing a first pass at a
!      translation of the old â€˜g77-0.5.16/f/DOCâ€™ file.
  
!    â€¢ Ken Rose for fixes to GCC's delay slot filling code.
  
!    â€¢ Ira Rosen for her contributions to the auto-vectorizer.
  
!    â€¢ Paul Rubin wrote most of the preprocessor.
  
!    â€¢ PÃ©tur RunÃ³lfsson for major performance improvements in C++
       formatted I/O and large file support in C++ filebuf.
  
!    â€¢ Chip Salzenberg for libstdc++ patches and improvements to locales,
       traits, Makefiles, libio, libtool hackery, and "long long" support.
  
!    â€¢ Juha Sarlin for improvements to the H8 code generator.
  
!    â€¢ Greg Satz assisted in making GCC work on HP-UX for the 9000 series
       300.
  
!    â€¢ Roger Sayle for improvements to constant folding and GCC's RTL
       optimizers as well as for fixing numerous bugs.
  
!    â€¢ Bradley Schatz for his work on the GCJ FAQ.
  
!    â€¢ Peter Schauer wrote the code to allow debugging to work on the
       Alpha.
  
!    â€¢ William Schelter did most of the work on the Intel 80386 support.
  
!    â€¢ Tobias SchlÃ¼ter for work on GNU Fortran.
  
!    â€¢ Bernd Schmidt for various code generation improvements and major
       work in the reload pass, serving as release manager for GCC 2.95.3,
       and work on the Blackfin and C6X ports.
  
!    â€¢ Peter Schmid for constant testing of libstdc++--especially
       application testing, going above and beyond what was requested for
       the release criteria--and libstdc++ header file tweaks.
  
!    â€¢ Jason Schroeder for jcf-dump patches.
  
!    â€¢ Andreas Schwab for his work on the m68k port.
  
!    â€¢ Lars Segerlund for work on GNU Fortran.
  
!    â€¢ Dodji Seketeli for numerous C++ bug fixes and debug info
       improvements.
  
!    â€¢ Tim Shen for major work on â€˜<regex>â€™.
  
!    â€¢ Joel Sherrill for his direction via the steering committee, RTEMS
       contributions and RTEMS testing.
  
!    â€¢ Nathan Sidwell for many C++ fixes/improvements.
  
!    â€¢ Jeffrey Siegal for helping RMS with the original design of GCC,
       some code which handles the parse tree and RTL data structures,
       constant folding and help with the original VAX & m68k ports.
  
!    â€¢ Kenny Simpson for prompting libstdc++ fixes due to defect reports
       from the LWG (thereby keeping GCC in line with updates from the
       ISO).
  
!    â€¢ Franz Sirl for his ongoing work with making the PPC port stable for
       GNU/Linux.
  
!    â€¢ Andrey Slepuhin for assorted AIX hacking.
  
!    â€¢ Trevor Smigiel for contributing the SPU port.
  
!    â€¢ Christopher Smith did the port for Convex machines.
  
!    â€¢ Danny Smith for his major efforts on the Mingw (and Cygwin) ports.
       Retired from GCC maintainership August 2010, having mentored two
       new maintainers into the role.
  
!    â€¢ Randy Smith finished the Sun FPA support.
  
!    â€¢ Ed Smith-Rowland for his continuous work on libstdc++-v3, special
!      functions, â€˜<random>â€™, and various improvements to C++11 features.
  
!    â€¢ Scott Snyder for queue, iterator, istream, and string fixes and
       libstdc++ testsuite entries.  Also for providing the patch to G77
!      to add rudimentary support for â€˜INTEGER*1â€™, â€˜INTEGER*2â€™, and
!      â€˜LOGICAL*1â€™.
  
!    â€¢ Zdenek Sojka for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    â€¢ Arseny Solokha for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    â€¢ Jayant Sonar for contributing the CR16 port.
  
!    â€¢ Brad Spencer for contributions to the GLIBCPP_FORCE_NEW technique.
  
!    â€¢ Richard Stallman, for writing the original GCC and launching the
       GNU project.
  
!    â€¢ Jan Stein of the Chalmers Computer Society provided support for
       Genix, as well as part of the 32000 machine description.
  
!    â€¢ Gerhard Steinmetz for running automated regression testing of GCC
       and reporting numerous bugs.
  
!    â€¢ Nigel Stephens for various mips16 related fixes/improvements.
  
!    â€¢ Jonathan Stone wrote the machine description for the Pyramid
       computer.
  
!    â€¢ Graham Stott for various infrastructure improvements.
  
!    â€¢ John Stracke for his Java HTTP protocol fixes.
  
!    â€¢ Mike Stump for his Elxsi port, G++ contributions over the years and
       more recently his vxworks contributions
  
!    â€¢ Jeff Sturm for Java porting help, bug fixes, and encouragement.
  
!    â€¢ Zhendong Su for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    â€¢ Chengnian Sun for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    â€¢ Shigeya Suzuki for this fixes for the bsdi platforms.
  
!    â€¢ Ian Lance Taylor for the Go frontend, the initial mips16 and mips64
       support, general configury hacking, fixincludes, etc.
  
!    â€¢ Holger Teutsch provided the support for the Clipper CPU.
  
!    â€¢ Gary Thomas for his ongoing work to make the PPC work for
       GNU/Linux.
  
!    â€¢ Paul Thomas for contributions to GNU Fortran.
  
!    â€¢ Philipp Thomas for random bug fixes throughout the compiler
  
!    â€¢ Jason Thorpe for thread support in libstdc++ on NetBSD.
  
!    â€¢ Kresten Krab Thorup wrote the run time support for the Objective-C
       language and the fantastic Java bytecode interpreter.
  
!    â€¢ Michael Tiemann for random bug fixes, the first instruction
       scheduler, initial C++ support, function integration, NS32k, SPARC
       and M88k machine description work, delay slot scheduling.
  
!    â€¢ Andreas Tobler for his work porting libgcj to Darwin.
  
!    â€¢ Teemu Torma for thread safe exception handling support.
  
!    â€¢ Leonard Tower wrote parts of the parser, RTL generator, and RTL
       definitions, and of the VAX machine description.
  
!    â€¢ Daniel Towner and Hariharan Sandanagobalane contributed and
       maintain the picoChip port.
  
!    â€¢ Tom Tromey for internationalization support and for his many Java
       contributions and libgcj maintainership.
  
!    â€¢ Lassi Tuura for improvements to config.guess to determine HP
       processor types.
  
!    â€¢ Petter Urkedal for libstdc++ CXXFLAGS, math, and algorithms fixes.
  
!    â€¢ Andy Vaught for the design and initial implementation of the GNU
       Fortran front end.
  
!    â€¢ Brent Verner for work with the libstdc++ cshadow files and their
       associated configure steps.
  
!    â€¢ Todd Vierling for contributions for NetBSD ports.
  
!    â€¢ Andrew Waterman for contributing the RISC-V port, as well as
       maintaining it.
  
!    â€¢ Jonathan Wakely for contributing to and maintaining libstdc++.
  
!    â€¢ Dean Wakerley for converting the install documentation from HTML to
       texinfo in time for GCC 3.0.
  
!    â€¢ Krister Walfridsson for random bug fixes.
  
!    â€¢ Feng Wang for contributions to GNU Fortran.
  
!    â€¢ Stephen M. Webb for time and effort on making libstdc++ shadow
       files work with the tricky Solaris 8+ headers, and for pushing the
       build-time header tree.  Also, for starting and driving the
!      â€˜<regex>â€™ effort.
  
!    â€¢ John Wehle for various improvements for the x86 code generator,
       related infrastructure improvements to help x86 code generation,
       value range propagation and other work, WE32k port.
  
!    â€¢ Ulrich Weigand for work on the s390 port.
  
!    â€¢ Janus Weil for contributions to GNU Fortran.
  
!    â€¢ Zack Weinberg for major work on cpplib and various other bug fixes.
  
!    â€¢ Matt Welsh for help with Linux Threads support in GCJ.
  
!    â€¢ Urban Widmark for help fixing java.io.
  
!    â€¢ Mark Wielaard for new Java library code and his work integrating
       with Classpath.
  
!    â€¢ Dale Wiles helped port GCC to the Tahoe.
  
!    â€¢ Bob Wilson from Tensilica, Inc. for the Xtensa port.
  
!    â€¢ Jim Wilson for his direction via the steering committee, tackling
       hard problems in various places that nobody else wanted to work on,
       strength reduction and other loop optimizations.
  
!    â€¢ Paul Woegerer and Tal Agmon for the CRX port.
  
!    â€¢ Carlo Wood for various fixes.
  
!    â€¢ Tom Wood for work on the m88k port.
  
!    â€¢ Chung-Ju Wu for his work on the Andes NDS32 port.
  
!    â€¢ Canqun Yang for work on GNU Fortran.
  
!    â€¢ Masanobu Yuhara of Fujitsu Laboratories implemented the machine
       description for the Tron architecture (specifically, the Gmicro).
  
!    â€¢ Kevin Zachmann helped port GCC to the Tahoe.
  
!    â€¢ Ayal Zaks for Swing Modulo Scheduling (SMS).
  
!    â€¢ Qirun Zhang for running automated regression testing of GCC and
       reporting numerous bugs.
  
!    â€¢ Xiaoqiang Zhang for work on GNU Fortran.
  
!    â€¢ Gilles Zunino for help porting Java to Irix.
  
   The following people are recognized for their contributions to GNAT,
  the Ada front end of GCC:
!    â€¢ Bernard Banner
  
!    â€¢ Romain Berrendonner
  
!    â€¢ Geert Bosch
  
!    â€¢ Emmanuel Briot
  
!    â€¢ Joel Brobecker
  
!    â€¢ Ben Brosgol
  
!    â€¢ Vincent Celier
  
!    â€¢ Arnaud Charlet
  
!    â€¢ Chien Chieng
  
!    â€¢ Cyrille Comar
  
!    â€¢ Cyrille Crozes
  
!    â€¢ Robert Dewar
  
!    â€¢ Gary Dismukes
  
!    â€¢ Robert Duff
  
!    â€¢ Ed Falis
  
!    â€¢ Ramon Fernandez
  
!    â€¢ Sam Figueroa
  
!    â€¢ Vasiliy Fofanov
  
!    â€¢ Michael Friess
  
!    â€¢ Franco Gasperoni
  
!    â€¢ Ted Giering
  
!    â€¢ Matthew Gingell
  
!    â€¢ Laurent Guerby
  
!    â€¢ Jerome Guitton
  
!    â€¢ Olivier Hainque
  
!    â€¢ Jerome Hugues
  
!    â€¢ Hristian Kirtchev
  
!    â€¢ Jerome Lambourg
  
!    â€¢ Bruno Leclerc
  
!    â€¢ Albert Lee
  
!    â€¢ Sean McNeil
  
!    â€¢ Javier Miranda
  
!    â€¢ Laurent Nana
  
!    â€¢ Pascal Obry
  
!    â€¢ Dong-Ik Oh
  
!    â€¢ Laurent Pautet
  
!    â€¢ Brett Porter
  
!    â€¢ Thomas Quinot
  
!    â€¢ Nicolas Roche
  
!    â€¢ Pat Rogers
  
!    â€¢ Jose Ruiz
  
!    â€¢ Douglas Rupp
  
!    â€¢ Sergey Rybin
  
!    â€¢ Gail Schenker
  
!    â€¢ Ed Schonberg
  
!    â€¢ Nicolas Setton
  
!    â€¢ Samuel Tardieu
  
   The following people are recognized for their contributions of new
  features, bug reports, testing and integration of classpath/libgcj for
  GCC version 4.1:
!    â€¢ Lillian Angel for â€˜JTreeâ€™ implementation and lots Free Swing
       additions and bug fixes.
  
!    â€¢ Wolfgang Baer for â€˜GapContentâ€™ bug fixes.
  
!    â€¢ Anthony Balkissoon for â€˜JListâ€™, Free Swing 1.5 updates and mouse
!      event fixes, lots of Free Swing work including â€˜JTableâ€™ editing.
  
!    â€¢ Stuart Ballard for RMI constant fixes.
  
!    â€¢ Goffredo Baroncelli for â€˜HTTPURLConnectionâ€™ fixes.
  
!    â€¢ Gary Benson for â€˜MessageFormatâ€™ fixes.
  
!    â€¢ Daniel Bonniot for â€˜Serializationâ€™ fixes.
  
!    â€¢ Chris Burdess for lots of gnu.xml and http protocol fixes, â€˜StAXâ€™
!      and â€˜DOM xml:idâ€™ support.
  
!    â€¢ Ka-Hing Cheung for â€˜TreePathâ€™ and â€˜TreeSelectionâ€™ fixes.
  
!    â€¢ Archie Cobbs for build fixes, VM interface updates,
!      â€˜URLClassLoaderâ€™ updates.
  
!    â€¢ Kelley Cook for build fixes.
  
!    â€¢ Martin Cordova for Suggestions for better â€˜SocketTimeoutExceptionâ€™.
  
!    â€¢ David Daney for â€˜BitSetâ€™ bug fixes, â€˜HttpURLConnectionâ€™ rewrite and
       improvements.
  
!    â€¢ Thomas Fitzsimmons for lots of upgrades to the gtk+ AWT and Cairo
       2D support.  Lots of imageio framework additions, lots of AWT and
       Free Swing bug fixes.
  
!    â€¢ Jeroen Frijters for â€˜ClassLoaderâ€™ and nio cleanups, serialization
!      fixes, better â€˜Proxyâ€™ support, bug fixes and IKVM integration.
  
!    â€¢ Santiago Gala for â€˜AccessControlContextâ€™ fixes.
  
!    â€¢ Nicolas Geoffray for â€˜VMClassLoaderâ€™ and â€˜AccessControllerâ€™
       improvements.
  
!    â€¢ David Gilbert for â€˜basicâ€™ and â€˜metalâ€™ icon and plaf support and
       lots of documenting, Lots of Free Swing and metal theme additions.
!      â€˜MetalIconFactoryâ€™ implementation.
  
!    â€¢ Anthony Green for â€˜MIDIâ€™ framework, â€˜ALSAâ€™ and â€˜DSSIâ€™ providers.
  
!    â€¢ Andrew Haley for â€˜Serializationâ€™ and â€˜URLClassLoaderâ€™ fixes, gcj
       build speedups.
  
!    â€¢ Kim Ho for â€˜JFileChooserâ€™ implementation.
  
!    â€¢ Andrew John Hughes for â€˜Localeâ€™ and net fixes, URI RFC2986 updates,
!      â€˜Serializationâ€™ fixes, â€˜Propertiesâ€™ XML support and generic branch
       work, VMIntegration guide update.
  
!    â€¢ Bastiaan Huisman for â€˜TimeZoneâ€™ bug fixing.
  
!    â€¢ Andreas Jaeger for mprec updates.
  
!    â€¢ Paul Jenner for better â€˜-Werrorâ€™ support.
  
!    â€¢ Ito Kazumitsu for â€˜NetworkInterfaceâ€™ implementation and updates.
  
!    â€¢ Roman Kennke for â€˜BoxLayoutâ€™, â€˜GrayFilterâ€™ and â€˜SplitPaneâ€™, plus
       bug fixes all over.  Lots of Free Swing work including styled text.
  
!    â€¢ Simon Kitching for â€˜Stringâ€™ cleanups and optimization suggestions.
  
!    â€¢ Michael Koch for configuration fixes, â€˜Localeâ€™ updates, bug and
       build fixes.
  
!    â€¢ Guilhem Lavaux for configuration, thread and channel fixes and
!      Kaffe integration.  JCL native â€˜Pointerâ€™ updates.  Logger bug
       fixes.
  
!    â€¢ David Lichteblau for JCL support library global/local reference
       cleanups.
  
!    â€¢ Aaron Luchko for JDWP updates and documentation fixes.
  
!    â€¢ Ziga Mahkovec for â€˜Graphics2Dâ€™ upgraded to Cairo 0.5 and new regex
       features.
  
!    â€¢ Sven de Marothy for BMP imageio support, CSS and â€˜TextLayoutâ€™
!      fixes.  â€˜GtkImageâ€™ rewrite, 2D, awt, free swing and date/time fixes
       and implementing the Qt4 peers.
  
!    â€¢ Casey Marshall for crypto algorithm fixes, â€˜FileChannelâ€™ lock,
!      â€˜SystemLoggerâ€™ and â€˜FileHandlerâ€™ rotate implementations, NIO
!      â€˜FileChannel.mapâ€™ support, security and policy updates.
  
!    â€¢ Bryce McKinlay for RMI work.
  
!    â€¢ Audrius Meskauskas for lots of Free Corba, RMI and HTML work plus
       testing and documenting.
  
!    â€¢ Kalle Olavi Niemitalo for build fixes.
  
!    â€¢ Rainer Orth for build fixes.
  
!    â€¢ Andrew Overholt for â€˜Fileâ€™ locking fixes.
  
!    â€¢ Ingo Proetel for â€˜Imageâ€™, â€˜Loggerâ€™ and â€˜URLClassLoaderâ€™ updates.
  
!    â€¢ Olga Rodimina for â€˜MenuSelectionManagerâ€™ implementation.
  
!    â€¢ Jan Roehrich for â€˜BasicTreeUIâ€™ and â€˜JTreeâ€™ fixes.
  
!    â€¢ Julian Scheid for documentation updates and gjdoc support.
  
!    â€¢ Christian Schlichtherle for zip fixes and cleanups.
  
!    â€¢ Robert Schuster for documentation updates and beans fixes,
!      â€˜TreeNodeâ€™ enumerations and â€˜ActionCommandâ€™ and various fixes, XML
       and URL, AWT and Free Swing bug fixes.
  
!    â€¢ Keith Seitz for lots of JDWP work.
  
!    â€¢ Christian Thalinger for 64-bit cleanups, Configuration and VM
!      interface fixes and â€˜CACAOâ€™ integration, â€˜fdlibmâ€™ updates.
  
!    â€¢ Gael Thomas for â€˜VMClassLoaderâ€™ boot packages support suggestions.
  
!    â€¢ Andreas Tobler for Darwin and Solaris testing and fixing, â€˜Qt4â€™
!      support for Darwin / macOS, â€˜Graphics2Dâ€™ support, â€˜gtk+â€™ updates.
  
!    â€¢ Dalibor Topic for better â€˜DEBUGâ€™ support, build cleanups and Kaffe
!      integration.  â€˜Qt4â€™ build infrastructure, â€˜SHA1PRNGâ€™ and
!      â€˜GdkPixbugDecoderâ€™ updates.
  
!    â€¢ Tom Tromey for Eclipse integration, generics work, lots of bug
       fixes and gcj integration including coordinating The Big Merge.
  
!    â€¢ Mark Wielaard for bug fixes, packaging and release management,
!      â€˜Clipboardâ€™ implementation, system call interrupts and network
!      timeouts and â€˜GdkPixpufDecoderâ€™ fixes.
  
   In addition to the above, all of which also contributed time and energy
  in testing GCC, we would like to thank the following for their
  contributions to testing:
  
!    â€¢ Michael Abd-El-Malek
  
!    â€¢ Thomas Arend
  
!    â€¢ Bonzo Armstrong
  
!    â€¢ Steven Ashe
  
!    â€¢ Chris Baldwin
  
!    â€¢ David Billinghurst
  
!    â€¢ Jim Blandy
  
!    â€¢ Stephane Bortzmeyer
  
!    â€¢ Horst von Brand
  
!    â€¢ Frank Braun
  
!    â€¢ Rodney Brown
  
!    â€¢ Sidney Cadot
  
!    â€¢ Bradford Castalia
  
!    â€¢ Robert Clark
  
!    â€¢ Jonathan Corbet
  
!    â€¢ Ralph Doncaster
  
!    â€¢ Richard Emberson
  
!    â€¢ Levente Farkas
  
!    â€¢ Graham Fawcett
  
!    â€¢ Mark Fernyhough
  
!    â€¢ Robert A. French
  
!    â€¢ JÃ¶rgen Freyh
  
!    â€¢ Mark K. Gardner
  
!    â€¢ Charles-Antoine Gauthier
  
!    â€¢ Yung Shing Gene
  
!    â€¢ David Gilbert
  
!    â€¢ Simon Gornall
  
!    â€¢ Fred Gray
  
!    â€¢ John Griffin
  
!    â€¢ Patrik Hagglund
  
!    â€¢ Phil Hargett
  
!    â€¢ Amancio Hasty
  
!    â€¢ Takafumi Hayashi
  
!    â€¢ Bryan W. Headley
  
!    â€¢ Kevin B. Hendricks
  
!    â€¢ Joep Jansen
  
!    â€¢ Christian Joensson
  
!    â€¢ Michel Kern
  
!    â€¢ David Kidd
  
!    â€¢ Tobias Kuipers
  
!    â€¢ Anand Krishnaswamy
  
!    â€¢ A. O. V. Le Blanc
  
!    â€¢ llewelly
  
!    â€¢ Damon Love
  
!    â€¢ Brad Lucier
  
!    â€¢ Matthias Klose
  
!    â€¢ Martin Knoblauch
  
!    â€¢ Rick Lutowski
  
!    â€¢ Jesse Macnish
  
!    â€¢ Stefan Morrell
  
!    â€¢ Anon A. Mous
  
!    â€¢ Matthias Mueller
  
!    â€¢ Pekka Nikander
  
!    â€¢ Rick Niles
  
!    â€¢ Jon Olson
  
!    â€¢ Magnus Persson
  
!    â€¢ Chris Pollard
  
!    â€¢ Richard Polton
  
!    â€¢ Derk Reefman
  
!    â€¢ David Rees
  
!    â€¢ Paul Reilly
  
!    â€¢ Tom Reilly
  
!    â€¢ Torsten Rueger
  
!    â€¢ Danny Sadinoff
  
!    â€¢ Marc Schifer
  
!    â€¢ Erik Schnetter
  
!    â€¢ Wayne K. Schroll
  
!    â€¢ David Schuler
  
!    â€¢ Vin Shelton
  
!    â€¢ Tim Souder
  
!    â€¢ Adam Sulmicki
  
!    â€¢ Bill Thorson
  
!    â€¢ George Talbot
  
!    â€¢ Pedro A. M. Vazquez
  
!    â€¢ Gregory Warnes
  
!    â€¢ Ian Watson
  
!    â€¢ David E. Young
  
!    â€¢ And many others
  
   And finally we'd like to thank everyone who uses the compiler, provides
  feedback and generally reminds us why we're doing this work in the first
*************** File: gccint.info,  Node: Option Index,
*** 52466,52474 ****
  Option Index
  ************
  
! GCC's command line options are indexed here without any initial '-' or
! '--'.  Where an option has both positive and negative forms (such as
! '-fOPTION' and '-fno-OPTION'), relevant entries in the manual are
  indexed under the most appropriate form; it may sometimes be useful to
  look up both forms.
  
--- 52470,52478 ----
  Option Index
  ************
  
! GCC's command line options are indexed here without any initial â€˜-â€™ or
! â€˜--â€™.  Where an option has both positive and negative forms (such as
! â€˜-fOPTIONâ€™ and â€˜-fno-OPTIONâ€™), relevant entries in the manual are
  indexed under the most appropriate form; it may sometimes be useful to
  look up both forms.
  
*************** Concept Index
*** 52491,52608 ****
  [index]
  * Menu:
  
- * ! in constraint:                       Multi-Alternative.  (line   48)
- * "real" instructions, RTL SSA:          RTL SSA Basic Blocks.
-                                                              (line   11)
- * # in constraint:                       Modifiers.          (line   78)
- * # in template:                         Output Template.    (line   66)
- * #pragma:                               Misc.               (line  422)
- * $ in constraint:                       Multi-Alternative.  (line   57)
- * % in constraint:                       Modifiers.          (line   52)
- * % in GTY option:                       GTY Options.        (line   18)
- * % in template:                         Output Template.    (line    6)
- * & in constraint:                       Modifiers.          (line   25)
- * (gimple_stmt_iterator:                 GIMPLE API.         (line   31)
- * (nil):                                 RTL Objects.        (line   76)
- * * in constraint:                       Modifiers.          (line   83)
- * * in template:                         Output Statement.   (line   29)
- * *gimple_build_asm_vec:                 GIMPLE_ASM.         (line    6)
- * *gimple_build_assign:                  GIMPLE_ASSIGN.      (line    6)
- * *gimple_build_assign <1>:              GIMPLE_ASSIGN.      (line   18)
- * *gimple_build_assign <2>:              GIMPLE_ASSIGN.      (line   29)
- * *gimple_build_assign <3>:              GIMPLE_ASSIGN.      (line   35)
- * *gimple_build_bind:                    GIMPLE_BIND.        (line    6)
- * *gimple_build_call:                    GIMPLE_CALL.        (line    6)
- * *gimple_build_call_from_tree:          GIMPLE_CALL.        (line   15)
- * *gimple_build_call_vec:                GIMPLE_CALL.        (line   25)
- * *gimple_build_catch:                   GIMPLE_CATCH.       (line    6)
- * *gimple_build_cond:                    GIMPLE_COND.        (line    6)
- * *gimple_build_cond_from_tree:          GIMPLE_COND.        (line   14)
- * *gimple_build_debug_bind:              GIMPLE_DEBUG.       (line    6)
- * *gimple_build_eh_filter:               GIMPLE_EH_FILTER.   (line    6)
- * *gimple_build_goto:                    GIMPLE_GOTO.        (line    6)
- * *gimple_build_label:                   GIMPLE_LABEL.       (line    6)
- * *gimple_build_omp_atomic_load:         GIMPLE_OMP_ATOMIC_LOAD.
-                                                              (line    6)
- * *gimple_build_omp_atomic_store:        GIMPLE_OMP_ATOMIC_STORE.
-                                                              (line    6)
- * *gimple_build_omp_continue:            GIMPLE_OMP_CONTINUE.
-                                                              (line    6)
- * *gimple_build_omp_critical:            GIMPLE_OMP_CRITICAL.
-                                                              (line    6)
- * *gimple_build_omp_for:                 GIMPLE_OMP_FOR.     (line    6)
- * *gimple_build_omp_parallel:            GIMPLE_OMP_PARALLEL.
-                                                              (line    6)
- * *gimple_build_omp_sections:            GIMPLE_OMP_SECTIONS.
-                                                              (line    6)
- * *gimple_build_omp_single:              GIMPLE_OMP_SINGLE.  (line    6)
- * *gimple_build_resx:                    GIMPLE_RESX.        (line    6)
- * *gimple_build_return:                  GIMPLE_RETURN.      (line    6)
- * *gimple_build_switch:                  GIMPLE_SWITCH.      (line    6)
- * *gimple_build_try:                     GIMPLE_TRY.         (line    6)
- * + in constraint:                       Modifiers.          (line   12)
- * - in constraint:                       Modifiers.          (line  105)
- * -fsection-anchors:                     Special Accessors.  (line  117)
- * -fsection-anchors <1>:                 Anchored Addresses. (line    6)
- * /c in RTL dump:                        Flags.              (line  230)
- * /f in RTL dump:                        Flags.              (line  238)
- * /i in RTL dump:                        Flags.              (line  283)
- * /j in RTL dump:                        Flags.              (line  295)
- * /s in RTL dump:                        Flags.              (line  254)
- * /u in RTL dump:                        Flags.              (line  307)
- * /v in RTL dump:                        Flags.              (line  339)
- * 0 in constraint:                       Simple Constraints. (line  128)
- * : in constraint:                       Simple Constraints. (line  171)
- * < in constraint:                       Simple Constraints. (line   47)
- * = in constraint:                       Modifiers.          (line    8)
- * > in constraint:                       Simple Constraints. (line   59)
- * ? in constraint:                       Multi-Alternative.  (line   42)
- * @ in instruction pattern names:        Parameterized Names.
-                                                              (line    6)
- * \:                                     Output Template.    (line   46)
- * ^ in constraint:                       Multi-Alternative.  (line   53)
  * __absvdi2:                             Integer library routines.
                                                               (line  106)
  * __absvsi2:                             Integer library routines.
                                                               (line  105)
  * __addda3:                              Fixed-point fractional library routines.
!                                                              (line   52)
  * __adddf3:                              Soft float library routines.
                                                               (line   22)
  * __adddq3:                              Fixed-point fractional library routines.
!                                                              (line   39)
  * __addha3:                              Fixed-point fractional library routines.
!                                                              (line   49)
  * __addhq3:                              Fixed-point fractional library routines.
!                                                              (line   37)
  * __addqq3:                              Fixed-point fractional library routines.
!                                                              (line   35)
  * __addsa3:                              Fixed-point fractional library routines.
!                                                              (line   51)
  * __addsf3:                              Soft float library routines.
                                                               (line   21)
  * __addsq3:                              Fixed-point fractional library routines.
!                                                              (line   38)
  * __addta3:                              Fixed-point fractional library routines.
!                                                              (line   53)
  * __addtf3:                              Soft float library routines.
                                                               (line   23)
  * __adduda3:                             Fixed-point fractional library routines.
!                                                              (line   59)
  * __addudq3:                             Fixed-point fractional library routines.
!                                                              (line   47)
  * __adduha3:                             Fixed-point fractional library routines.
!                                                              (line   55)
  * __adduhq3:                             Fixed-point fractional library routines.
!                                                              (line   43)
  * __adduqq3:                             Fixed-point fractional library routines.
!                                                              (line   41)
  * __addusa3:                             Fixed-point fractional library routines.
!                                                              (line   57)
  * __addusq3:                             Fixed-point fractional library routines.
!                                                              (line   45)
  * __adduta3:                             Fixed-point fractional library routines.
!                                                              (line   61)
  * __addvdi3:                             Integer library routines.
                                                               (line  110)
  * __addvsi3:                             Integer library routines.
--- 52495,52542 ----
  [index]
  * Menu:
  
  * __absvdi2:                             Integer library routines.
                                                               (line  106)
  * __absvsi2:                             Integer library routines.
                                                               (line  105)
  * __addda3:                              Fixed-point fractional library routines.
!                                                              (line   44)
  * __adddf3:                              Soft float library routines.
                                                               (line   22)
  * __adddq3:                              Fixed-point fractional library routines.
!                                                              (line   31)
  * __addha3:                              Fixed-point fractional library routines.
!                                                              (line   41)
  * __addhq3:                              Fixed-point fractional library routines.
!                                                              (line   29)
  * __addqq3:                              Fixed-point fractional library routines.
!                                                              (line   27)
  * __addsa3:                              Fixed-point fractional library routines.
!                                                              (line   43)
  * __addsf3:                              Soft float library routines.
                                                               (line   21)
  * __addsq3:                              Fixed-point fractional library routines.
!                                                              (line   30)
  * __addta3:                              Fixed-point fractional library routines.
!                                                              (line   45)
  * __addtf3:                              Soft float library routines.
                                                               (line   23)
  * __adduda3:                             Fixed-point fractional library routines.
!                                                              (line   51)
  * __addudq3:                             Fixed-point fractional library routines.
!                                                              (line   39)
  * __adduha3:                             Fixed-point fractional library routines.
!                                                              (line   47)
  * __adduhq3:                             Fixed-point fractional library routines.
!                                                              (line   35)
  * __adduqq3:                             Fixed-point fractional library routines.
!                                                              (line   33)
  * __addusa3:                             Fixed-point fractional library routines.
!                                                              (line   49)
  * __addusq3:                             Fixed-point fractional library routines.
!                                                              (line   37)
  * __adduta3:                             Fixed-point fractional library routines.
!                                                              (line   53)
  * __addvdi3:                             Integer library routines.
                                                               (line  110)
  * __addvsi3:                             Integer library routines.
*************** Concept Index
*** 52610,52672 ****
  * __addxf3:                              Soft float library routines.
                                                               (line   25)
  * __ashlda3:                             Fixed-point fractional library routines.
!                                                              (line  358)
  * __ashldi3:                             Integer library routines.
                                                               (line   13)
  * __ashldq3:                             Fixed-point fractional library routines.
!                                                              (line  346)
  * __ashlha3:                             Fixed-point fractional library routines.
!                                                              (line  356)
  * __ashlhq3:                             Fixed-point fractional library routines.
!                                                              (line  344)
  * __ashlqq3:                             Fixed-point fractional library routines.
!                                                              (line  343)
  * __ashlsa3:                             Fixed-point fractional library routines.
!                                                              (line  357)
  * __ashlsi3:                             Integer library routines.
                                                               (line   12)
  * __ashlsq3:                             Fixed-point fractional library routines.
!                                                              (line  345)
  * __ashlta3:                             Fixed-point fractional library routines.
!                                                              (line  359)
  * __ashlti3:                             Integer library routines.
                                                               (line   14)
  * __ashluda3:                            Fixed-point fractional library routines.
!                                                              (line  365)
  * __ashludq3:                            Fixed-point fractional library routines.
!                                                              (line  354)
  * __ashluha3:                            Fixed-point fractional library routines.
!                                                              (line  361)
  * __ashluhq3:                            Fixed-point fractional library routines.
!                                                              (line  350)
  * __ashluqq3:                            Fixed-point fractional library routines.
!                                                              (line  348)
  * __ashlusa3:                            Fixed-point fractional library routines.
!                                                              (line  363)
  * __ashlusq3:                            Fixed-point fractional library routines.
!                                                              (line  352)
  * __ashluta3:                            Fixed-point fractional library routines.
!                                                              (line  367)
  * __ashrda3:                             Fixed-point fractional library routines.
!                                                              (line  378)
  * __ashrdi3:                             Integer library routines.
                                                               (line   18)
  * __ashrdq3:                             Fixed-point fractional library routines.
!                                                              (line  374)
  * __ashrha3:                             Fixed-point fractional library routines.
!                                                              (line  376)
  * __ashrhq3:                             Fixed-point fractional library routines.
!                                                              (line  372)
  * __ashrqq3:                             Fixed-point fractional library routines.
!                                                              (line  371)
  * __ashrsa3:                             Fixed-point fractional library routines.
!                                                              (line  377)
  * __ashrsi3:                             Integer library routines.
                                                               (line   17)
  * __ashrsq3:                             Fixed-point fractional library routines.
!                                                              (line  373)
  * __ashrta3:                             Fixed-point fractional library routines.
!                                                              (line  379)
  * __ashrti3:                             Integer library routines.
                                                               (line   19)
  * __bid_adddd3:                          Decimal float library routines.
--- 52544,52606 ----
  * __addxf3:                              Soft float library routines.
                                                               (line   25)
  * __ashlda3:                             Fixed-point fractional library routines.
!                                                              (line  350)
  * __ashldi3:                             Integer library routines.
                                                               (line   13)
  * __ashldq3:                             Fixed-point fractional library routines.
!                                                              (line  338)
  * __ashlha3:                             Fixed-point fractional library routines.
!                                                              (line  348)
  * __ashlhq3:                             Fixed-point fractional library routines.
!                                                              (line  336)
  * __ashlqq3:                             Fixed-point fractional library routines.
!                                                              (line  335)
  * __ashlsa3:                             Fixed-point fractional library routines.
!                                                              (line  349)
  * __ashlsi3:                             Integer library routines.
                                                               (line   12)
  * __ashlsq3:                             Fixed-point fractional library routines.
!                                                              (line  337)
  * __ashlta3:                             Fixed-point fractional library routines.
!                                                              (line  351)
  * __ashlti3:                             Integer library routines.
                                                               (line   14)
  * __ashluda3:                            Fixed-point fractional library routines.
!                                                              (line  357)
  * __ashludq3:                            Fixed-point fractional library routines.
!                                                              (line  346)
  * __ashluha3:                            Fixed-point fractional library routines.
!                                                              (line  353)
  * __ashluhq3:                            Fixed-point fractional library routines.
!                                                              (line  342)
  * __ashluqq3:                            Fixed-point fractional library routines.
!                                                              (line  340)
  * __ashlusa3:                            Fixed-point fractional library routines.
!                                                              (line  355)
  * __ashlusq3:                            Fixed-point fractional library routines.
!                                                              (line  344)
  * __ashluta3:                            Fixed-point fractional library routines.
!                                                              (line  359)
  * __ashrda3:                             Fixed-point fractional library routines.
!                                                              (line  370)
  * __ashrdi3:                             Integer library routines.
                                                               (line   18)
  * __ashrdq3:                             Fixed-point fractional library routines.
!                                                              (line  366)
  * __ashrha3:                             Fixed-point fractional library routines.
!                                                              (line  368)
  * __ashrhq3:                             Fixed-point fractional library routines.
!                                                              (line  364)
  * __ashrqq3:                             Fixed-point fractional library routines.
!                                                              (line  363)
  * __ashrsa3:                             Fixed-point fractional library routines.
!                                                              (line  369)
  * __ashrsi3:                             Integer library routines.
                                                               (line   17)
  * __ashrsq3:                             Fixed-point fractional library routines.
!                                                              (line  365)
  * __ashrta3:                             Fixed-point fractional library routines.
!                                                              (line  371)
  * __ashrti3:                             Integer library routines.
                                                               (line   19)
  * __bid_adddd3:                          Decimal float library routines.
*************** Concept Index
*** 52877,52923 ****
  * __clzti2:                              Integer library routines.
                                                               (line  131)
  * __cmpda2:                              Fixed-point fractional library routines.
!                                                              (line  458)
  * __cmpdf2:                              Soft float library routines.
!                                                              (line  192)
  * __cmpdi2:                              Integer library routines.
                                                               (line   86)
  * __cmpdq2:                              Fixed-point fractional library routines.
!                                                              (line  447)
  * __cmpha2:                              Fixed-point fractional library routines.
!                                                              (line  456)
  * __cmphq2:                              Fixed-point fractional library routines.
!                                                              (line  445)
  * __cmpqq2:                              Fixed-point fractional library routines.
!                                                              (line  444)
  * __cmpsa2:                              Fixed-point fractional library routines.
!                                                              (line  457)
  * __cmpsf2:                              Soft float library routines.
!                                                              (line  191)
  * __cmpsq2:                              Fixed-point fractional library routines.
!                                                              (line  446)
  * __cmpta2:                              Fixed-point fractional library routines.
!                                                              (line  459)
  * __cmptf2:                              Soft float library routines.
!                                                              (line  193)
  * __cmpti2:                              Integer library routines.
                                                               (line   87)
  * __cmpuda2:                             Fixed-point fractional library routines.
!                                                              (line  464)
  * __cmpudq2:                             Fixed-point fractional library routines.
!                                                              (line  454)
  * __cmpuha2:                             Fixed-point fractional library routines.
!                                                              (line  461)
  * __cmpuhq2:                             Fixed-point fractional library routines.
!                                                              (line  451)
  * __cmpuqq2:                             Fixed-point fractional library routines.
!                                                              (line  449)
  * __cmpusa2:                             Fixed-point fractional library routines.
!                                                              (line  463)
  * __cmpusq2:                             Fixed-point fractional library routines.
!                                                              (line  452)
  * __cmputa2:                             Fixed-point fractional library routines.
!                                                              (line  466)
  * __CTOR_LIST__:                         Initialization.     (line   25)
  * __ctzdi2:                              Integer library routines.
                                                               (line  137)
--- 52811,52857 ----
  * __clzti2:                              Integer library routines.
                                                               (line  131)
  * __cmpda2:                              Fixed-point fractional library routines.
!                                                              (line  450)
  * __cmpdf2:                              Soft float library routines.
!                                                              (line  191)
  * __cmpdi2:                              Integer library routines.
                                                               (line   86)
  * __cmpdq2:                              Fixed-point fractional library routines.
!                                                              (line  439)
  * __cmpha2:                              Fixed-point fractional library routines.
!                                                              (line  448)
  * __cmphq2:                              Fixed-point fractional library routines.
!                                                              (line  437)
  * __cmpqq2:                              Fixed-point fractional library routines.
!                                                              (line  436)
  * __cmpsa2:                              Fixed-point fractional library routines.
!                                                              (line  449)
  * __cmpsf2:                              Soft float library routines.
!                                                              (line  190)
  * __cmpsq2:                              Fixed-point fractional library routines.
!                                                              (line  438)
  * __cmpta2:                              Fixed-point fractional library routines.
!                                                              (line  451)
  * __cmptf2:                              Soft float library routines.
!                                                              (line  192)
  * __cmpti2:                              Integer library routines.
                                                               (line   87)
  * __cmpuda2:                             Fixed-point fractional library routines.
!                                                              (line  456)
  * __cmpudq2:                             Fixed-point fractional library routines.
!                                                              (line  446)
  * __cmpuha2:                             Fixed-point fractional library routines.
!                                                              (line  453)
  * __cmpuhq2:                             Fixed-point fractional library routines.
!                                                              (line  443)
  * __cmpuqq2:                             Fixed-point fractional library routines.
!                                                              (line  441)
  * __cmpusa2:                             Fixed-point fractional library routines.
!                                                              (line  455)
  * __cmpusq2:                             Fixed-point fractional library routines.
!                                                              (line  444)
  * __cmputa2:                             Fixed-point fractional library routines.
!                                                              (line  458)
  * __CTOR_LIST__:                         Initialization.     (line   25)
  * __ctzdi2:                              Integer library routines.
                                                               (line  137)
*************** Concept Index
*** 52926,52968 ****
  * __ctzti2:                              Integer library routines.
                                                               (line  138)
  * __divda3:                              Fixed-point fractional library routines.
!                                                              (line  234)
  * __divdc3:                              Soft float library routines.
!                                                              (line  279)
  * __divdf3:                              Soft float library routines.
                                                               (line   47)
  * __divdi3:                              Integer library routines.
                                                               (line   24)
  * __divdq3:                              Fixed-point fractional library routines.
!                                                              (line  229)
  * __divha3:                              Fixed-point fractional library routines.
!                                                              (line  231)
  * __divhq3:                              Fixed-point fractional library routines.
!                                                              (line  227)
  * __divmodbitint4:                       Integer library routines.
                                                               (line  202)
  * __divqq3:                              Fixed-point fractional library routines.
!                                                              (line  225)
  * __divsa3:                              Fixed-point fractional library routines.
!                                                              (line  233)
  * __divsc3:                              Soft float library routines.
!                                                              (line  277)
  * __divsf3:                              Soft float library routines.
                                                               (line   46)
  * __divsi3:                              Integer library routines.
                                                               (line   23)
  * __divsq3:                              Fixed-point fractional library routines.
!                                                              (line  228)
  * __divta3:                              Fixed-point fractional library routines.
!                                                              (line  235)
  * __divtc3:                              Soft float library routines.
!                                                              (line  281)
  * __divtf3:                              Soft float library routines.
                                                               (line   48)
  * __divti3:                              Integer library routines.
                                                               (line   25)
  * __divxc3:                              Soft float library routines.
!                                                              (line  283)
  * __divxf3:                              Soft float library routines.
                                                               (line   50)
  * __dpd_adddd3:                          Decimal float library routines.
--- 52860,52902 ----
  * __ctzti2:                              Integer library routines.
                                                               (line  138)
  * __divda3:                              Fixed-point fractional library routines.
!                                                              (line  226)
  * __divdc3:                              Soft float library routines.
!                                                              (line  278)
  * __divdf3:                              Soft float library routines.
                                                               (line   47)
  * __divdi3:                              Integer library routines.
                                                               (line   24)
  * __divdq3:                              Fixed-point fractional library routines.
!                                                              (line  221)
  * __divha3:                              Fixed-point fractional library routines.
!                                                              (line  223)
  * __divhq3:                              Fixed-point fractional library routines.
!                                                              (line  219)
  * __divmodbitint4:                       Integer library routines.
                                                               (line  202)
  * __divqq3:                              Fixed-point fractional library routines.
!                                                              (line  217)
  * __divsa3:                              Fixed-point fractional library routines.
!                                                              (line  225)
  * __divsc3:                              Soft float library routines.
!                                                              (line  276)
  * __divsf3:                              Soft float library routines.
                                                               (line   46)
  * __divsi3:                              Integer library routines.
                                                               (line   23)
  * __divsq3:                              Fixed-point fractional library routines.
!                                                              (line  220)
  * __divta3:                              Fixed-point fractional library routines.
!                                                              (line  227)
  * __divtc3:                              Soft float library routines.
!                                                              (line  280)
  * __divtf3:                              Soft float library routines.
                                                               (line   48)
  * __divti3:                              Integer library routines.
                                                               (line   25)
  * __divxc3:                              Soft float library routines.
!                                                              (line  282)
  * __divxf3:                              Soft float library routines.
                                                               (line   50)
  * __dpd_adddd3:                          Decimal float library routines.
*************** Concept Index
*** 53147,53157 ****
                                                               (line  258)
  * __DTOR_LIST__:                         Initialization.     (line   25)
  * __eqdf2:                               Soft float library routines.
-                                                              (line  222)
- * __eqsf2:                               Soft float library routines.
                                                               (line  221)
  * __eqtf2:                               Soft float library routines.
!                                                              (line  223)
  * __extenddftf2:                         Soft float library routines.
                                                               (line   67)
  * __extenddfxf2:                         Soft float library routines.
--- 53081,53091 ----
                                                               (line  258)
  * __DTOR_LIST__:                         Initialization.     (line   25)
  * __eqdf2:                               Soft float library routines.
                                                               (line  221)
+ * __eqsf2:                               Soft float library routines.
+                                                              (line  220)
  * __eqtf2:                               Soft float library routines.
!                                                              (line  222)
  * __extenddftf2:                         Soft float library routines.
                                                               (line   67)
  * __extenddfxf2:                         Soft float library routines.
*************** Concept Index
*** 53223,53239 ****
  * __fixxfti:                             Soft float library routines.
                                                               (line   95)
  * __floatbitintbf:                       Soft float library routines.
!                                                              (line  180)
  * __floatbitintdf:                       Soft float library routines.
!                                                              (line  172)
  * __floatbitinthf:                       Soft float library routines.
!                                                              (line  178)
  * __floatbitintsf:                       Soft float library routines.
                                                               (line  170)
  * __floatbitinttf:                       Soft float library routines.
!                                                              (line  176)
  * __floatbitintxf:                       Soft float library routines.
!                                                              (line  174)
  * __floatdidf:                           Soft float library routines.
                                                               (line  127)
  * __floatdisf:                           Soft float library routines.
--- 53157,53173 ----
  * __fixxfti:                             Soft float library routines.
                                                               (line   95)
  * __floatbitintbf:                       Soft float library routines.
!                                                              (line  179)
  * __floatbitintdf:                       Soft float library routines.
!                                                              (line  171)
  * __floatbitinthf:                       Soft float library routines.
!                                                              (line  177)
  * __floatbitintsf:                       Soft float library routines.
                                                               (line  170)
  * __floatbitinttf:                       Soft float library routines.
!                                                              (line  175)
  * __floatbitintxf:                       Soft float library routines.
!                                                              (line  173)
  * __floatdidf:                           Soft float library routines.
                                                               (line  127)
  * __floatdisf:                           Soft float library routines.
*************** Concept Index
*** 53283,54553 ****
  * __floatuntixf:                         Soft float library routines.
                                                               (line  153)
  * __fractdadf:                           Fixed-point fractional library routines.
!                                                              (line  643)
  * __fractdadi:                           Fixed-point fractional library routines.
!                                                              (line  640)
  * __fractdadq:                           Fixed-point fractional library routines.
!                                                              (line  623)
  * __fractdaha2:                          Fixed-point fractional library routines.
!                                                              (line  624)
  * __fractdahi:                           Fixed-point fractional library routines.
!                                                              (line  638)
  * __fractdahq:                           Fixed-point fractional library routines.
!                                                              (line  621)
  * __fractdaqi:                           Fixed-point fractional library routines.
!                                                              (line  637)
  * __fractdaqq:                           Fixed-point fractional library routines.
!                                                              (line  620)
  * __fractdasa2:                          Fixed-point fractional library routines.
!                                                              (line  625)
  * __fractdasf:                           Fixed-point fractional library routines.
!                                                              (line  642)
  * __fractdasi:                           Fixed-point fractional library routines.
!                                                              (line  639)
  * __fractdasq:                           Fixed-point fractional library routines.
!                                                              (line  622)
  * __fractdata2:                          Fixed-point fractional library routines.
!                                                              (line  626)
  * __fractdati:                           Fixed-point fractional library routines.
!                                                              (line  641)
  * __fractdauda:                          Fixed-point fractional library routines.
!                                                              (line  634)
  * __fractdaudq:                          Fixed-point fractional library routines.
!                                                              (line  630)
  * __fractdauha:                          Fixed-point fractional library routines.
!                                                              (line  632)
  * __fractdauhq:                          Fixed-point fractional library routines.
!                                                              (line  628)
  * __fractdauqq:                          Fixed-point fractional library routines.
!                                                              (line  627)
  * __fractdausa:                          Fixed-point fractional library routines.
!                                                              (line  633)
  * __fractdausq:                          Fixed-point fractional library routines.
!                                                              (line  629)
  * __fractdauta:                          Fixed-point fractional library routines.
!                                                              (line  635)
  * __fractdfda:                           Fixed-point fractional library routines.
!                                                              (line 1032)
  * __fractdfdq:                           Fixed-point fractional library routines.
!                                                              (line 1029)
  * __fractdfha:                           Fixed-point fractional library routines.
!                                                              (line 1030)
  * __fractdfhq:                           Fixed-point fractional library routines.
!                                                              (line 1027)
  * __fractdfqq:                           Fixed-point fractional library routines.
!                                                              (line 1026)
  * __fractdfsa:                           Fixed-point fractional library routines.
!                                                              (line 1031)
  * __fractdfsq:                           Fixed-point fractional library routines.
!                                                              (line 1028)
  * __fractdfta:                           Fixed-point fractional library routines.
!                                                              (line 1033)
  * __fractdfuda:                          Fixed-point fractional library routines.
!                                                              (line 1040)
  * __fractdfudq:                          Fixed-point fractional library routines.
!                                                              (line 1037)
  * __fractdfuha:                          Fixed-point fractional library routines.
!                                                              (line 1038)
  * __fractdfuhq:                          Fixed-point fractional library routines.
!                                                              (line 1035)
  * __fractdfuqq:                          Fixed-point fractional library routines.
!                                                              (line 1034)
  * __fractdfusa:                          Fixed-point fractional library routines.
!                                                              (line 1039)
  * __fractdfusq:                          Fixed-point fractional library routines.
!                                                              (line 1036)
  * __fractdfuta:                          Fixed-point fractional library routines.
!                                                              (line 1041)
  * __fractdida:                           Fixed-point fractional library routines.
!                                                              (line  982)
  * __fractdidq:                           Fixed-point fractional library routines.
!                                                              (line  979)
  * __fractdiha:                           Fixed-point fractional library routines.
!                                                              (line  980)
  * __fractdihq:                           Fixed-point fractional library routines.
!                                                              (line  977)
  * __fractdiqq:                           Fixed-point fractional library routines.
!                                                              (line  976)
  * __fractdisa:                           Fixed-point fractional library routines.
!                                                              (line  981)
  * __fractdisq:                           Fixed-point fractional library routines.
!                                                              (line  978)
  * __fractdita:                           Fixed-point fractional library routines.
!                                                              (line  983)
  * __fractdiuda:                          Fixed-point fractional library routines.
!                                                              (line  990)
  * __fractdiudq:                          Fixed-point fractional library routines.
!                                                              (line  987)
  * __fractdiuha:                          Fixed-point fractional library routines.
!                                                              (line  988)
  * __fractdiuhq:                          Fixed-point fractional library routines.
!                                                              (line  985)
  * __fractdiuqq:                          Fixed-point fractional library routines.
!                                                              (line  984)
  * __fractdiusa:                          Fixed-point fractional library routines.
!                                                              (line  989)
  * __fractdiusq:                          Fixed-point fractional library routines.
!                                                              (line  986)
  * __fractdiuta:                          Fixed-point fractional library routines.
!                                                              (line  991)
  * __fractdqda:                           Fixed-point fractional library routines.
!                                                              (line  551)
  * __fractdqdf:                           Fixed-point fractional library routines.
!                                                              (line  573)
  * __fractdqdi:                           Fixed-point fractional library routines.
!                                                              (line  570)
  * __fractdqha:                           Fixed-point fractional library routines.
!                                                              (line  549)
  * __fractdqhi:                           Fixed-point fractional library routines.
!                                                              (line  568)
  * __fractdqhq2:                          Fixed-point fractional library routines.
!                                                              (line  547)
  * __fractdqqi:                           Fixed-point fractional library routines.
!                                                              (line  567)
  * __fractdqqq2:                          Fixed-point fractional library routines.
!                                                              (line  546)
  * __fractdqsa:                           Fixed-point fractional library routines.
!                                                              (line  550)
  * __fractdqsf:                           Fixed-point fractional library routines.
!                                                              (line  572)
  * __fractdqsi:                           Fixed-point fractional library routines.
!                                                              (line  569)
  * __fractdqsq2:                          Fixed-point fractional library routines.
!                                                              (line  548)
  * __fractdqta:                           Fixed-point fractional library routines.
!                                                              (line  552)
  * __fractdqti:                           Fixed-point fractional library routines.
-                                                              (line  571)
- * __fractdquda:                          Fixed-point fractional library routines.
                                                               (line  563)
  * __fractdqudq:                          Fixed-point fractional library routines.
!                                                              (line  558)
  * __fractdquha:                          Fixed-point fractional library routines.
!                                                              (line  560)
  * __fractdquhq:                          Fixed-point fractional library routines.
!                                                              (line  555)
  * __fractdquqq:                          Fixed-point fractional library routines.
!                                                              (line  553)
  * __fractdqusa:                          Fixed-point fractional library routines.
!                                                              (line  562)
  * __fractdqusq:                          Fixed-point fractional library routines.
!                                                              (line  556)
  * __fractdquta:                          Fixed-point fractional library routines.
!                                                              (line  565)
  * __fracthada2:                          Fixed-point fractional library routines.
!                                                              (line  579)
  * __fracthadf:                           Fixed-point fractional library routines.
!                                                              (line  597)
  * __fracthadi:                           Fixed-point fractional library routines.
!                                                              (line  594)
  * __fracthadq:                           Fixed-point fractional library routines.
!                                                              (line  577)
  * __fracthahi:                           Fixed-point fractional library routines.
!                                                              (line  592)
  * __fracthahq:                           Fixed-point fractional library routines.
!                                                              (line  575)
  * __fracthaqi:                           Fixed-point fractional library routines.
!                                                              (line  591)
  * __fracthaqq:                           Fixed-point fractional library routines.
!                                                              (line  574)
  * __fracthasa2:                          Fixed-point fractional library routines.
!                                                              (line  578)
  * __fracthasf:                           Fixed-point fractional library routines.
!                                                              (line  596)
  * __fracthasi:                           Fixed-point fractional library routines.
!                                                              (line  593)
  * __fracthasq:                           Fixed-point fractional library routines.
!                                                              (line  576)
  * __fracthata2:                          Fixed-point fractional library routines.
!                                                              (line  580)
  * __fracthati:                           Fixed-point fractional library routines.
!                                                              (line  595)
  * __fracthauda:                          Fixed-point fractional library routines.
!                                                              (line  588)
  * __fracthaudq:                          Fixed-point fractional library routines.
!                                                              (line  584)
  * __fracthauha:                          Fixed-point fractional library routines.
!                                                              (line  586)
  * __fracthauhq:                          Fixed-point fractional library routines.
!                                                              (line  582)
  * __fracthauqq:                          Fixed-point fractional library routines.
!                                                              (line  581)
  * __fracthausa:                          Fixed-point fractional library routines.
!                                                              (line  587)
  * __fracthausq:                          Fixed-point fractional library routines.
!                                                              (line  583)
  * __fracthauta:                          Fixed-point fractional library routines.
!                                                              (line  589)
  * __fracthida:                           Fixed-point fractional library routines.
!                                                              (line  950)
  * __fracthidq:                           Fixed-point fractional library routines.
!                                                              (line  947)
  * __fracthiha:                           Fixed-point fractional library routines.
!                                                              (line  948)
  * __fracthihq:                           Fixed-point fractional library routines.
!                                                              (line  945)
  * __fracthiqq:                           Fixed-point fractional library routines.
!                                                              (line  944)
  * __fracthisa:                           Fixed-point fractional library routines.
!                                                              (line  949)
  * __fracthisq:                           Fixed-point fractional library routines.
!                                                              (line  946)
  * __fracthita:                           Fixed-point fractional library routines.
!                                                              (line  951)
  * __fracthiuda:                          Fixed-point fractional library routines.
!                                                              (line  958)
  * __fracthiudq:                          Fixed-point fractional library routines.
!                                                              (line  955)
  * __fracthiuha:                          Fixed-point fractional library routines.
!                                                              (line  956)
  * __fracthiuhq:                          Fixed-point fractional library routines.
!                                                              (line  953)
  * __fracthiuqq:                          Fixed-point fractional library routines.
!                                                              (line  952)
  * __fracthiusa:                          Fixed-point fractional library routines.
!                                                              (line  957)
  * __fracthiusq:                          Fixed-point fractional library routines.
!                                                              (line  954)
  * __fracthiuta:                          Fixed-point fractional library routines.
!                                                              (line  959)
  * __fracthqda:                           Fixed-point fractional library routines.
!                                                              (line  505)
  * __fracthqdf:                           Fixed-point fractional library routines.
!                                                              (line  521)
  * __fracthqdi:                           Fixed-point fractional library routines.
!                                                              (line  518)
  * __fracthqdq2:                          Fixed-point fractional library routines.
!                                                              (line  502)
  * __fracthqha:                           Fixed-point fractional library routines.
!                                                              (line  503)
  * __fracthqhi:                           Fixed-point fractional library routines.
!                                                              (line  516)
  * __fracthqqi:                           Fixed-point fractional library routines.
!                                                              (line  515)
  * __fracthqqq2:                          Fixed-point fractional library routines.
!                                                              (line  500)
  * __fracthqsa:                           Fixed-point fractional library routines.
!                                                              (line  504)
  * __fracthqsf:                           Fixed-point fractional library routines.
!                                                              (line  520)
  * __fracthqsi:                           Fixed-point fractional library routines.
!                                                              (line  517)
  * __fracthqsq2:                          Fixed-point fractional library routines.
!                                                              (line  501)
  * __fracthqta:                           Fixed-point fractional library routines.
!                                                              (line  506)
  * __fracthqti:                           Fixed-point fractional library routines.
!                                                              (line  519)
  * __fracthquda:                          Fixed-point fractional library routines.
!                                                              (line  513)
  * __fracthqudq:                          Fixed-point fractional library routines.
!                                                              (line  510)
  * __fracthquha:                          Fixed-point fractional library routines.
!                                                              (line  511)
  * __fracthquhq:                          Fixed-point fractional library routines.
!                                                              (line  508)
  * __fracthquqq:                          Fixed-point fractional library routines.
!                                                              (line  507)
  * __fracthqusa:                          Fixed-point fractional library routines.
!                                                              (line  512)
  * __fracthqusq:                          Fixed-point fractional library routines.
!                                                              (line  509)
  * __fracthquta:                          Fixed-point fractional library routines.
!                                                              (line  514)
  * __fractqida:                           Fixed-point fractional library routines.
!                                                              (line  932)
  * __fractqidq:                           Fixed-point fractional library routines.
!                                                              (line  929)
  * __fractqiha:                           Fixed-point fractional library routines.
!                                                              (line  930)
  * __fractqihq:                           Fixed-point fractional library routines.
!                                                              (line  927)
  * __fractqiqq:                           Fixed-point fractional library routines.
!                                                              (line  926)
  * __fractqisa:                           Fixed-point fractional library routines.
!                                                              (line  931)
  * __fractqisq:                           Fixed-point fractional library routines.
!                                                              (line  928)
  * __fractqita:                           Fixed-point fractional library routines.
!                                                              (line  933)
  * __fractqiuda:                          Fixed-point fractional library routines.
!                                                              (line  941)
  * __fractqiudq:                          Fixed-point fractional library routines.
!                                                              (line  937)
  * __fractqiuha:                          Fixed-point fractional library routines.
!                                                              (line  939)
  * __fractqiuhq:                          Fixed-point fractional library routines.
!                                                              (line  935)
  * __fractqiuqq:                          Fixed-point fractional library routines.
!                                                              (line  934)
  * __fractqiusa:                          Fixed-point fractional library routines.
!                                                              (line  940)
  * __fractqiusq:                          Fixed-point fractional library routines.
!                                                              (line  936)
  * __fractqiuta:                          Fixed-point fractional library routines.
!                                                              (line  942)
  * __fractqqda:                           Fixed-point fractional library routines.
!                                                              (line  481)
  * __fractqqdf:                           Fixed-point fractional library routines.
!                                                              (line  499)
  * __fractqqdi:                           Fixed-point fractional library routines.
!                                                              (line  496)
  * __fractqqdq2:                          Fixed-point fractional library routines.
!                                                              (line  478)
  * __fractqqha:                           Fixed-point fractional library routines.
!                                                              (line  479)
  * __fractqqhi:                           Fixed-point fractional library routines.
!                                                              (line  494)
  * __fractqqhq2:                          Fixed-point fractional library routines.
!                                                              (line  476)
  * __fractqqqi:                           Fixed-point fractional library routines.
!                                                              (line  493)
  * __fractqqsa:                           Fixed-point fractional library routines.
!                                                              (line  480)
  * __fractqqsf:                           Fixed-point fractional library routines.
!                                                              (line  498)
  * __fractqqsi:                           Fixed-point fractional library routines.
!                                                              (line  495)
  * __fractqqsq2:                          Fixed-point fractional library routines.
!                                                              (line  477)
  * __fractqqta:                           Fixed-point fractional library routines.
!                                                              (line  482)
  * __fractqqti:                           Fixed-point fractional library routines.
!                                                              (line  497)
  * __fractqquda:                          Fixed-point fractional library routines.
!                                                              (line  490)
  * __fractqqudq:                          Fixed-point fractional library routines.
!                                                              (line  486)
  * __fractqquha:                          Fixed-point fractional library routines.
!                                                              (line  488)
  * __fractqquhq:                          Fixed-point fractional library routines.
!                                                              (line  484)
  * __fractqquqq:                          Fixed-point fractional library routines.
!                                                              (line  483)
  * __fractqqusa:                          Fixed-point fractional library routines.
!                                                              (line  489)
  * __fractqqusq:                          Fixed-point fractional library routines.
!                                                              (line  485)
  * __fractqquta:                          Fixed-point fractional library routines.
!                                                              (line  491)
  * __fractsada2:                          Fixed-point fractional library routines.
!                                                              (line  603)
  * __fractsadf:                           Fixed-point fractional library routines.
!                                                              (line  619)
  * __fractsadi:                           Fixed-point fractional library routines.
!                                                              (line  616)
  * __fractsadq:                           Fixed-point fractional library routines.
!                                                              (line  601)
  * __fractsaha2:                          Fixed-point fractional library routines.
!                                                              (line  602)
  * __fractsahi:                           Fixed-point fractional library routines.
!                                                              (line  614)
  * __fractsahq:                           Fixed-point fractional library routines.
!                                                              (line  599)
  * __fractsaqi:                           Fixed-point fractional library routines.
!                                                              (line  613)
  * __fractsaqq:                           Fixed-point fractional library routines.
!                                                              (line  598)
  * __fractsasf:                           Fixed-point fractional library routines.
!                                                              (line  618)
  * __fractsasi:                           Fixed-point fractional library routines.
!                                                              (line  615)
  * __fractsasq:                           Fixed-point fractional library routines.
!                                                              (line  600)
  * __fractsata2:                          Fixed-point fractional library routines.
!                                                              (line  604)
  * __fractsati:                           Fixed-point fractional library routines.
!                                                              (line  617)
  * __fractsauda:                          Fixed-point fractional library routines.
!                                                              (line  611)
  * __fractsaudq:                          Fixed-point fractional library routines.
!                                                              (line  608)
  * __fractsauha:                          Fixed-point fractional library routines.
!                                                              (line  609)
  * __fractsauhq:                          Fixed-point fractional library routines.
!                                                              (line  606)
  * __fractsauqq:                          Fixed-point fractional library routines.
!                                                              (line  605)
  * __fractsausa:                          Fixed-point fractional library routines.
!                                                              (line  610)
  * __fractsausq:                          Fixed-point fractional library routines.
!                                                              (line  607)
  * __fractsauta:                          Fixed-point fractional library routines.
!                                                              (line  612)
  * __fractsfda:                           Fixed-point fractional library routines.
!                                                              (line 1016)
  * __fractsfdq:                           Fixed-point fractional library routines.
!                                                              (line 1013)
  * __fractsfha:                           Fixed-point fractional library routines.
!                                                              (line 1014)
  * __fractsfhq:                           Fixed-point fractional library routines.
!                                                              (line 1011)
  * __fractsfqq:                           Fixed-point fractional library routines.
!                                                              (line 1010)
  * __fractsfsa:                           Fixed-point fractional library routines.
!                                                              (line 1015)
  * __fractsfsq:                           Fixed-point fractional library routines.
!                                                              (line 1012)
  * __fractsfta:                           Fixed-point fractional library routines.
!                                                              (line 1017)
  * __fractsfuda:                          Fixed-point fractional library routines.
!                                                              (line 1024)
  * __fractsfudq:                          Fixed-point fractional library routines.
!                                                              (line 1021)
  * __fractsfuha:                          Fixed-point fractional library routines.
!                                                              (line 1022)
  * __fractsfuhq:                          Fixed-point fractional library routines.
!                                                              (line 1019)
  * __fractsfuqq:                          Fixed-point fractional library routines.
!                                                              (line 1018)
  * __fractsfusa:                          Fixed-point fractional library routines.
!                                                              (line 1023)
  * __fractsfusq:                          Fixed-point fractional library routines.
!                                                              (line 1020)
  * __fractsfuta:                          Fixed-point fractional library routines.
!                                                              (line 1025)
  * __fractsida:                           Fixed-point fractional library routines.
!                                                              (line  966)
  * __fractsidq:                           Fixed-point fractional library routines.
!                                                              (line  963)
  * __fractsiha:                           Fixed-point fractional library routines.
!                                                              (line  964)
  * __fractsihq:                           Fixed-point fractional library routines.
!                                                              (line  961)
  * __fractsiqq:                           Fixed-point fractional library routines.
!                                                              (line  960)
  * __fractsisa:                           Fixed-point fractional library routines.
!                                                              (line  965)
  * __fractsisq:                           Fixed-point fractional library routines.
!                                                              (line  962)
  * __fractsita:                           Fixed-point fractional library routines.
!                                                              (line  967)
  * __fractsiuda:                          Fixed-point fractional library routines.
!                                                              (line  974)
  * __fractsiudq:                          Fixed-point fractional library routines.
!                                                              (line  971)
  * __fractsiuha:                          Fixed-point fractional library routines.
!                                                              (line  972)
  * __fractsiuhq:                          Fixed-point fractional library routines.
!                                                              (line  969)
  * __fractsiuqq:                          Fixed-point fractional library routines.
!                                                              (line  968)
  * __fractsiusa:                          Fixed-point fractional library routines.
!                                                              (line  973)
  * __fractsiusq:                          Fixed-point fractional library routines.
!                                                              (line  970)
  * __fractsiuta:                          Fixed-point fractional library routines.
!                                                              (line  975)
  * __fractsqda:                           Fixed-point fractional library routines.
!                                                              (line  527)
  * __fractsqdf:                           Fixed-point fractional library routines.
!                                                              (line  545)
  * __fractsqdi:                           Fixed-point fractional library routines.
!                                                              (line  542)
  * __fractsqdq2:                          Fixed-point fractional library routines.
!                                                              (line  524)
  * __fractsqha:                           Fixed-point fractional library routines.
!                                                              (line  525)
  * __fractsqhi:                           Fixed-point fractional library routines.
!                                                              (line  540)
  * __fractsqhq2:                          Fixed-point fractional library routines.
!                                                              (line  523)
  * __fractsqqi:                           Fixed-point fractional library routines.
!                                                              (line  539)
  * __fractsqqq2:                          Fixed-point fractional library routines.
!                                                              (line  522)
  * __fractsqsa:                           Fixed-point fractional library routines.
!                                                              (line  526)
  * __fractsqsf:                           Fixed-point fractional library routines.
!                                                              (line  544)
  * __fractsqsi:                           Fixed-point fractional library routines.
!                                                              (line  541)
  * __fractsqta:                           Fixed-point fractional library routines.
!                                                              (line  528)
  * __fractsqti:                           Fixed-point fractional library routines.
!                                                              (line  543)
  * __fractsquda:                          Fixed-point fractional library routines.
!                                                              (line  536)
  * __fractsqudq:                          Fixed-point fractional library routines.
!                                                              (line  532)
  * __fractsquha:                          Fixed-point fractional library routines.
!                                                              (line  534)
  * __fractsquhq:                          Fixed-point fractional library routines.
!                                                              (line  530)
  * __fractsquqq:                          Fixed-point fractional library routines.
!                                                              (line  529)
  * __fractsqusa:                          Fixed-point fractional library routines.
!                                                              (line  535)
  * __fractsqusq:                          Fixed-point fractional library routines.
!                                                              (line  531)
  * __fractsquta:                          Fixed-point fractional library routines.
!                                                              (line  537)
  * __fracttada2:                          Fixed-point fractional library routines.
!                                                              (line  650)
  * __fracttadf:                           Fixed-point fractional library routines.
!                                                              (line  671)
  * __fracttadi:                           Fixed-point fractional library routines.
!                                                              (line  668)
  * __fracttadq:                           Fixed-point fractional library routines.
!                                                              (line  647)
  * __fracttaha2:                          Fixed-point fractional library routines.
!                                                              (line  648)
  * __fracttahi:                           Fixed-point fractional library routines.
!                                                              (line  666)
  * __fracttahq:                           Fixed-point fractional library routines.
!                                                              (line  645)
  * __fracttaqi:                           Fixed-point fractional library routines.
!                                                              (line  665)
  * __fracttaqq:                           Fixed-point fractional library routines.
!                                                              (line  644)
  * __fracttasa2:                          Fixed-point fractional library routines.
!                                                              (line  649)
  * __fracttasf:                           Fixed-point fractional library routines.
!                                                              (line  670)
  * __fracttasi:                           Fixed-point fractional library routines.
!                                                              (line  667)
  * __fracttasq:                           Fixed-point fractional library routines.
!                                                              (line  646)
  * __fracttati:                           Fixed-point fractional library routines.
-                                                              (line  669)
- * __fracttauda:                          Fixed-point fractional library routines.
                                                               (line  661)
  * __fracttaudq:                          Fixed-point fractional library routines.
!                                                              (line  656)
  * __fracttauha:                          Fixed-point fractional library routines.
!                                                              (line  658)
  * __fracttauhq:                          Fixed-point fractional library routines.
!                                                              (line  653)
  * __fracttauqq:                          Fixed-point fractional library routines.
!                                                              (line  651)
  * __fracttausa:                          Fixed-point fractional library routines.
!                                                              (line  660)
  * __fracttausq:                          Fixed-point fractional library routines.
!                                                              (line  654)
  * __fracttauta:                          Fixed-point fractional library routines.
!                                                              (line  663)
  * __fracttida:                           Fixed-point fractional library routines.
!                                                              (line  998)
  * __fracttidq:                           Fixed-point fractional library routines.
!                                                              (line  995)
  * __fracttiha:                           Fixed-point fractional library routines.
!                                                              (line  996)
  * __fracttihq:                           Fixed-point fractional library routines.
!                                                              (line  993)
  * __fracttiqq:                           Fixed-point fractional library routines.
!                                                              (line  992)
  * __fracttisa:                           Fixed-point fractional library routines.
!                                                              (line  997)
  * __fracttisq:                           Fixed-point fractional library routines.
!                                                              (line  994)
  * __fracttita:                           Fixed-point fractional library routines.
!                                                              (line  999)
  * __fracttiuda:                          Fixed-point fractional library routines.
!                                                              (line 1007)
  * __fracttiudq:                          Fixed-point fractional library routines.
!                                                              (line 1003)
  * __fracttiuha:                          Fixed-point fractional library routines.
!                                                              (line 1005)
  * __fracttiuhq:                          Fixed-point fractional library routines.
!                                                              (line 1001)
  * __fracttiuqq:                          Fixed-point fractional library routines.
!                                                              (line 1000)
  * __fracttiusa:                          Fixed-point fractional library routines.
!                                                              (line 1006)
  * __fracttiusq:                          Fixed-point fractional library routines.
!                                                              (line 1002)
  * __fracttiuta:                          Fixed-point fractional library routines.
!                                                              (line 1008)
  * __fractudada:                          Fixed-point fractional library routines.
!                                                              (line  865)
  * __fractudadf:                          Fixed-point fractional library routines.
!                                                              (line  888)
  * __fractudadi:                          Fixed-point fractional library routines.
!                                                              (line  885)
  * __fractudadq:                          Fixed-point fractional library routines.
!                                                              (line  861)
  * __fractudaha:                          Fixed-point fractional library routines.
!                                                              (line  863)
  * __fractudahi:                          Fixed-point fractional library routines.
!                                                              (line  883)
  * __fractudahq:                          Fixed-point fractional library routines.
!                                                              (line  859)
  * __fractudaqi:                          Fixed-point fractional library routines.
!                                                              (line  882)
  * __fractudaqq:                          Fixed-point fractional library routines.
!                                                              (line  858)
  * __fractudasa:                          Fixed-point fractional library routines.
!                                                              (line  864)
  * __fractudasf:                          Fixed-point fractional library routines.
!                                                              (line  887)
  * __fractudasi:                          Fixed-point fractional library routines.
!                                                              (line  884)
  * __fractudasq:                          Fixed-point fractional library routines.
!                                                              (line  860)
  * __fractudata:                          Fixed-point fractional library routines.
!                                                              (line  866)
  * __fractudati:                          Fixed-point fractional library routines.
!                                                              (line  886)
  * __fractudaudq:                         Fixed-point fractional library routines.
!                                                              (line  874)
  * __fractudauha2:                        Fixed-point fractional library routines.
!                                                              (line  876)
  * __fractudauhq:                         Fixed-point fractional library routines.
!                                                              (line  870)
  * __fractudauqq:                         Fixed-point fractional library routines.
!                                                              (line  868)
  * __fractudausa2:                        Fixed-point fractional library routines.
!                                                              (line  878)
  * __fractudausq:                         Fixed-point fractional library routines.
!                                                              (line  872)
  * __fractudauta2:                        Fixed-point fractional library routines.
!                                                              (line  880)
  * __fractudqda:                          Fixed-point fractional library routines.
!                                                              (line  772)
  * __fractudqdf:                          Fixed-point fractional library routines.
!                                                              (line  798)
  * __fractudqdi:                          Fixed-point fractional library routines.
!                                                              (line  794)
  * __fractudqdq:                          Fixed-point fractional library routines.
!                                                              (line  767)
  * __fractudqha:                          Fixed-point fractional library routines.
!                                                              (line  769)
  * __fractudqhi:                          Fixed-point fractional library routines.
!                                                              (line  792)
  * __fractudqhq:                          Fixed-point fractional library routines.
!                                                              (line  764)
  * __fractudqqi:                          Fixed-point fractional library routines.
!                                                              (line  790)
  * __fractudqqq:                          Fixed-point fractional library routines.
!                                                              (line  762)
  * __fractudqsa:                          Fixed-point fractional library routines.
!                                                              (line  771)
  * __fractudqsf:                          Fixed-point fractional library routines.
!                                                              (line  797)
  * __fractudqsi:                          Fixed-point fractional library routines.
!                                                              (line  793)
  * __fractudqsq:                          Fixed-point fractional library routines.
!                                                              (line  765)
  * __fractudqta:                          Fixed-point fractional library routines.
!                                                              (line  774)
  * __fractudqti:                          Fixed-point fractional library routines.
!                                                              (line  795)
  * __fractudquda:                         Fixed-point fractional library routines.
!                                                              (line  786)
  * __fractudquha:                         Fixed-point fractional library routines.
!                                                              (line  782)
  * __fractudquhq2:                        Fixed-point fractional library routines.
!                                                              (line  778)
  * __fractudquqq2:                        Fixed-point fractional library routines.
!                                                              (line  776)
  * __fractudqusa:                         Fixed-point fractional library routines.
!                                                              (line  784)
  * __fractudqusq2:                        Fixed-point fractional library routines.
!                                                              (line  780)
  * __fractudquta:                         Fixed-point fractional library routines.
!                                                              (line  788)
  * __fractuhada:                          Fixed-point fractional library routines.
!                                                              (line  806)
  * __fractuhadf:                          Fixed-point fractional library routines.
!                                                              (line  829)
  * __fractuhadi:                          Fixed-point fractional library routines.
!                                                              (line  826)
  * __fractuhadq:                          Fixed-point fractional library routines.
!                                                              (line  802)
  * __fractuhaha:                          Fixed-point fractional library routines.
!                                                              (line  804)
  * __fractuhahi:                          Fixed-point fractional library routines.
!                                                              (line  824)
  * __fractuhahq:                          Fixed-point fractional library routines.
!                                                              (line  800)
  * __fractuhaqi:                          Fixed-point fractional library routines.
!                                                              (line  823)
  * __fractuhaqq:                          Fixed-point fractional library routines.
!                                                              (line  799)
  * __fractuhasa:                          Fixed-point fractional library routines.
!                                                              (line  805)
  * __fractuhasf:                          Fixed-point fractional library routines.
!                                                              (line  828)
  * __fractuhasi:                          Fixed-point fractional library routines.
!                                                              (line  825)
  * __fractuhasq:                          Fixed-point fractional library routines.
!                                                              (line  801)
  * __fractuhata:                          Fixed-point fractional library routines.
!                                                              (line  807)
  * __fractuhati:                          Fixed-point fractional library routines.
-                                                              (line  827)
- * __fractuhauda2:                        Fixed-point fractional library routines.
                                                               (line  819)
  * __fractuhaudq:                         Fixed-point fractional library routines.
!                                                              (line  815)
  * __fractuhauhq:                         Fixed-point fractional library routines.
!                                                              (line  811)
  * __fractuhauqq:                         Fixed-point fractional library routines.
!                                                              (line  809)
  * __fractuhausa2:                        Fixed-point fractional library routines.
!                                                              (line  817)
  * __fractuhausq:                         Fixed-point fractional library routines.
!                                                              (line  813)
  * __fractuhauta2:                        Fixed-point fractional library routines.
!                                                              (line  821)
  * __fractuhqda:                          Fixed-point fractional library routines.
!                                                              (line  709)
  * __fractuhqdf:                          Fixed-point fractional library routines.
!                                                              (line  730)
  * __fractuhqdi:                          Fixed-point fractional library routines.
!                                                              (line  727)
  * __fractuhqdq:                          Fixed-point fractional library routines.
!                                                              (line  706)
  * __fractuhqha:                          Fixed-point fractional library routines.
!                                                              (line  707)
  * __fractuhqhi:                          Fixed-point fractional library routines.
!                                                              (line  725)
  * __fractuhqhq:                          Fixed-point fractional library routines.
!                                                              (line  704)
  * __fractuhqqi:                          Fixed-point fractional library routines.
!                                                              (line  724)
  * __fractuhqqq:                          Fixed-point fractional library routines.
!                                                              (line  703)
  * __fractuhqsa:                          Fixed-point fractional library routines.
!                                                              (line  708)
  * __fractuhqsf:                          Fixed-point fractional library routines.
!                                                              (line  729)
  * __fractuhqsi:                          Fixed-point fractional library routines.
!                                                              (line  726)
  * __fractuhqsq:                          Fixed-point fractional library routines.
!                                                              (line  705)
  * __fractuhqta:                          Fixed-point fractional library routines.
!                                                              (line  710)
  * __fractuhqti:                          Fixed-point fractional library routines.
-                                                              (line  728)
- * __fractuhquda:                         Fixed-point fractional library routines.
                                                               (line  720)
  * __fractuhqudq2:                        Fixed-point fractional library routines.
!                                                              (line  715)
  * __fractuhquha:                         Fixed-point fractional library routines.
!                                                              (line  717)
  * __fractuhquqq2:                        Fixed-point fractional library routines.
!                                                              (line  711)
  * __fractuhqusa:                         Fixed-point fractional library routines.
!                                                              (line  719)
  * __fractuhqusq2:                        Fixed-point fractional library routines.
!                                                              (line  713)
  * __fractuhquta:                         Fixed-point fractional library routines.
!                                                              (line  722)
  * __fractunsdadi:                        Fixed-point fractional library routines.
!                                                              (line 1562)
  * __fractunsdahi:                        Fixed-point fractional library routines.
!                                                              (line 1560)
  * __fractunsdaqi:                        Fixed-point fractional library routines.
!                                                              (line 1559)
  * __fractunsdasi:                        Fixed-point fractional library routines.
!                                                              (line 1561)
  * __fractunsdati:                        Fixed-point fractional library routines.
!                                                              (line 1563)
  * __fractunsdida:                        Fixed-point fractional library routines.
!                                                              (line 1714)
  * __fractunsdidq:                        Fixed-point fractional library routines.
!                                                              (line 1711)
  * __fractunsdiha:                        Fixed-point fractional library routines.
!                                                              (line 1712)
  * __fractunsdihq:                        Fixed-point fractional library routines.
!                                                              (line 1709)
  * __fractunsdiqq:                        Fixed-point fractional library routines.
!                                                              (line 1708)
  * __fractunsdisa:                        Fixed-point fractional library routines.
!                                                              (line 1713)
  * __fractunsdisq:                        Fixed-point fractional library routines.
!                                                              (line 1710)
  * __fractunsdita:                        Fixed-point fractional library routines.
!                                                              (line 1715)
  * __fractunsdiuda:                       Fixed-point fractional library routines.
!                                                              (line 1726)
  * __fractunsdiudq:                       Fixed-point fractional library routines.
!                                                              (line 1721)
  * __fractunsdiuha:                       Fixed-point fractional library routines.
!                                                              (line 1723)
  * __fractunsdiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1718)
  * __fractunsdiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1716)
  * __fractunsdiusa:                       Fixed-point fractional library routines.
!                                                              (line 1725)
  * __fractunsdiusq:                       Fixed-point fractional library routines.
!                                                              (line 1719)
  * __fractunsdiuta:                       Fixed-point fractional library routines.
!                                                              (line 1728)
  * __fractunsdqdi:                        Fixed-point fractional library routines.
!                                                              (line 1546)
  * __fractunsdqhi:                        Fixed-point fractional library routines.
!                                                              (line 1544)
  * __fractunsdqqi:                        Fixed-point fractional library routines.
!                                                              (line 1543)
  * __fractunsdqsi:                        Fixed-point fractional library routines.
!                                                              (line 1545)
  * __fractunsdqti:                        Fixed-point fractional library routines.
!                                                              (line 1547)
  * __fractunshadi:                        Fixed-point fractional library routines.
!                                                              (line 1552)
  * __fractunshahi:                        Fixed-point fractional library routines.
!                                                              (line 1550)
  * __fractunshaqi:                        Fixed-point fractional library routines.
!                                                              (line 1549)
  * __fractunshasi:                        Fixed-point fractional library routines.
!                                                              (line 1551)
  * __fractunshati:                        Fixed-point fractional library routines.
!                                                              (line 1553)
  * __fractunshida:                        Fixed-point fractional library routines.
!                                                              (line 1670)
  * __fractunshidq:                        Fixed-point fractional library routines.
!                                                              (line 1667)
  * __fractunshiha:                        Fixed-point fractional library routines.
!                                                              (line 1668)
  * __fractunshihq:                        Fixed-point fractional library routines.
!                                                              (line 1665)
  * __fractunshiqq:                        Fixed-point fractional library routines.
!                                                              (line 1664)
  * __fractunshisa:                        Fixed-point fractional library routines.
!                                                              (line 1669)
  * __fractunshisq:                        Fixed-point fractional library routines.
!                                                              (line 1666)
  * __fractunshita:                        Fixed-point fractional library routines.
!                                                              (line 1671)
  * __fractunshiuda:                       Fixed-point fractional library routines.
!                                                              (line 1682)
  * __fractunshiudq:                       Fixed-point fractional library routines.
!                                                              (line 1677)
  * __fractunshiuha:                       Fixed-point fractional library routines.
!                                                              (line 1679)
  * __fractunshiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1674)
  * __fractunshiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1672)
  * __fractunshiusa:                       Fixed-point fractional library routines.
!                                                              (line 1681)
  * __fractunshiusq:                       Fixed-point fractional library routines.
!                                                              (line 1675)
  * __fractunshiuta:                       Fixed-point fractional library routines.
!                                                              (line 1684)
  * __fractunshqdi:                        Fixed-point fractional library routines.
!                                                              (line 1536)
  * __fractunshqhi:                        Fixed-point fractional library routines.
!                                                              (line 1534)
  * __fractunshqqi:                        Fixed-point fractional library routines.
!                                                              (line 1533)
  * __fractunshqsi:                        Fixed-point fractional library routines.
!                                                              (line 1535)
  * __fractunshqti:                        Fixed-point fractional library routines.
!                                                              (line 1537)
  * __fractunsqida:                        Fixed-point fractional library routines.
!                                                              (line 1648)
  * __fractunsqidq:                        Fixed-point fractional library routines.
!                                                              (line 1645)
  * __fractunsqiha:                        Fixed-point fractional library routines.
!                                                              (line 1646)
  * __fractunsqihq:                        Fixed-point fractional library routines.
!                                                              (line 1643)
  * __fractunsqiqq:                        Fixed-point fractional library routines.
!                                                              (line 1642)
  * __fractunsqisa:                        Fixed-point fractional library routines.
!                                                              (line 1647)
  * __fractunsqisq:                        Fixed-point fractional library routines.
!                                                              (line 1644)
  * __fractunsqita:                        Fixed-point fractional library routines.
!                                                              (line 1649)
  * __fractunsqiuda:                       Fixed-point fractional library routines.
!                                                              (line 1660)
  * __fractunsqiudq:                       Fixed-point fractional library routines.
!                                                              (line 1655)
  * __fractunsqiuha:                       Fixed-point fractional library routines.
!                                                              (line 1657)
  * __fractunsqiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1652)
  * __fractunsqiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1650)
  * __fractunsqiusa:                       Fixed-point fractional library routines.
!                                                              (line 1659)
  * __fractunsqiusq:                       Fixed-point fractional library routines.
!                                                              (line 1653)
  * __fractunsqiuta:                       Fixed-point fractional library routines.
!                                                              (line 1662)
  * __fractunsqqdi:                        Fixed-point fractional library routines.
!                                                              (line 1531)
  * __fractunsqqhi:                        Fixed-point fractional library routines.
!                                                              (line 1529)
  * __fractunsqqqi:                        Fixed-point fractional library routines.
!                                                              (line 1528)
  * __fractunsqqsi:                        Fixed-point fractional library routines.
!                                                              (line 1530)
  * __fractunsqqti:                        Fixed-point fractional library routines.
!                                                              (line 1532)
  * __fractunssadi:                        Fixed-point fractional library routines.
!                                                              (line 1557)
  * __fractunssahi:                        Fixed-point fractional library routines.
!                                                              (line 1555)
  * __fractunssaqi:                        Fixed-point fractional library routines.
!                                                              (line 1554)
  * __fractunssasi:                        Fixed-point fractional library routines.
!                                                              (line 1556)
  * __fractunssati:                        Fixed-point fractional library routines.
!                                                              (line 1558)
  * __fractunssida:                        Fixed-point fractional library routines.
!                                                              (line 1692)
  * __fractunssidq:                        Fixed-point fractional library routines.
!                                                              (line 1689)
  * __fractunssiha:                        Fixed-point fractional library routines.
!                                                              (line 1690)
  * __fractunssihq:                        Fixed-point fractional library routines.
!                                                              (line 1687)
  * __fractunssiqq:                        Fixed-point fractional library routines.
!                                                              (line 1686)
  * __fractunssisa:                        Fixed-point fractional library routines.
!                                                              (line 1691)
  * __fractunssisq:                        Fixed-point fractional library routines.
!                                                              (line 1688)
  * __fractunssita:                        Fixed-point fractional library routines.
!                                                              (line 1693)
  * __fractunssiuda:                       Fixed-point fractional library routines.
!                                                              (line 1704)
  * __fractunssiudq:                       Fixed-point fractional library routines.
!                                                              (line 1699)
  * __fractunssiuha:                       Fixed-point fractional library routines.
!                                                              (line 1701)
  * __fractunssiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1696)
  * __fractunssiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1694)
  * __fractunssiusa:                       Fixed-point fractional library routines.
!                                                              (line 1703)
  * __fractunssiusq:                       Fixed-point fractional library routines.
!                                                              (line 1697)
  * __fractunssiuta:                       Fixed-point fractional library routines.
!                                                              (line 1706)
  * __fractunssqdi:                        Fixed-point fractional library routines.
!                                                              (line 1541)
  * __fractunssqhi:                        Fixed-point fractional library routines.
!                                                              (line 1539)
  * __fractunssqqi:                        Fixed-point fractional library routines.
!                                                              (line 1538)
  * __fractunssqsi:                        Fixed-point fractional library routines.
!                                                              (line 1540)
  * __fractunssqti:                        Fixed-point fractional library routines.
!                                                              (line 1542)
  * __fractunstadi:                        Fixed-point fractional library routines.
!                                                              (line 1567)
  * __fractunstahi:                        Fixed-point fractional library routines.
!                                                              (line 1565)
  * __fractunstaqi:                        Fixed-point fractional library routines.
!                                                              (line 1564)
  * __fractunstasi:                        Fixed-point fractional library routines.
!                                                              (line 1566)
  * __fractunstati:                        Fixed-point fractional library routines.
!                                                              (line 1568)
  * __fractunstida:                        Fixed-point fractional library routines.
!                                                              (line 1737)
  * __fractunstidq:                        Fixed-point fractional library routines.
!                                                              (line 1733)
  * __fractunstiha:                        Fixed-point fractional library routines.
!                                                              (line 1735)
  * __fractunstihq:                        Fixed-point fractional library routines.
!                                                              (line 1731)
  * __fractunstiqq:                        Fixed-point fractional library routines.
!                                                              (line 1730)
  * __fractunstisa:                        Fixed-point fractional library routines.
!                                                              (line 1736)
  * __fractunstisq:                        Fixed-point fractional library routines.
!                                                              (line 1732)
  * __fractunstita:                        Fixed-point fractional library routines.
!                                                              (line 1738)
  * __fractunstiuda:                       Fixed-point fractional library routines.
!                                                              (line 1752)
  * __fractunstiudq:                       Fixed-point fractional library routines.
!                                                              (line 1746)
  * __fractunstiuha:                       Fixed-point fractional library routines.
!                                                              (line 1748)
  * __fractunstiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1742)
  * __fractunstiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1740)
  * __fractunstiusa:                       Fixed-point fractional library routines.
!                                                              (line 1750)
  * __fractunstiusq:                       Fixed-point fractional library routines.
!                                                              (line 1744)
  * __fractunstiuta:                       Fixed-point fractional library routines.
!                                                              (line 1754)
  * __fractunsudadi:                       Fixed-point fractional library routines.
!                                                              (line 1628)
  * __fractunsudahi:                       Fixed-point fractional library routines.
!                                                              (line 1624)
  * __fractunsudaqi:                       Fixed-point fractional library routines.
!                                                              (line 1622)
  * __fractunsudasi:                       Fixed-point fractional library routines.
!                                                              (line 1626)
  * __fractunsudati:                       Fixed-point fractional library routines.
!                                                              (line 1630)
  * __fractunsudqdi:                       Fixed-point fractional library routines.
!                                                              (line 1602)
  * __fractunsudqhi:                       Fixed-point fractional library routines.
!                                                              (line 1598)
  * __fractunsudqqi:                       Fixed-point fractional library routines.
!                                                              (line 1596)
  * __fractunsudqsi:                       Fixed-point fractional library routines.
!                                                              (line 1600)
  * __fractunsudqti:                       Fixed-point fractional library routines.
!                                                              (line 1604)
  * __fractunsuhadi:                       Fixed-point fractional library routines.
!                                                              (line 1612)
  * __fractunsuhahi:                       Fixed-point fractional library routines.
!                                                              (line 1608)
  * __fractunsuhaqi:                       Fixed-point fractional library routines.
!                                                              (line 1606)
  * __fractunsuhasi:                       Fixed-point fractional library routines.
!                                                              (line 1610)
  * __fractunsuhati:                       Fixed-point fractional library routines.
!                                                              (line 1614)
  * __fractunsuhqdi:                       Fixed-point fractional library routines.
!                                                              (line 1583)
  * __fractunsuhqhi:                       Fixed-point fractional library routines.
!                                                              (line 1581)
  * __fractunsuhqqi:                       Fixed-point fractional library routines.
!                                                              (line 1580)
  * __fractunsuhqsi:                       Fixed-point fractional library routines.
!                                                              (line 1582)
  * __fractunsuhqti:                       Fixed-point fractional library routines.
-                                                              (line 1584)
- * __fractunsuqqdi:                       Fixed-point fractional library routines.
                                                               (line 1576)
  * __fractunsuqqhi:                       Fixed-point fractional library routines.
!                                                              (line 1572)
  * __fractunsuqqqi:                       Fixed-point fractional library routines.
!                                                              (line 1570)
  * __fractunsuqqsi:                       Fixed-point fractional library routines.
!                                                              (line 1574)
  * __fractunsuqqti:                       Fixed-point fractional library routines.
!                                                              (line 1578)
  * __fractunsusadi:                       Fixed-point fractional library routines.
!                                                              (line 1619)
  * __fractunsusahi:                       Fixed-point fractional library routines.
!                                                              (line 1617)
  * __fractunsusaqi:                       Fixed-point fractional library routines.
!                                                              (line 1616)
  * __fractunsusasi:                       Fixed-point fractional library routines.
!                                                              (line 1618)
  * __fractunsusati:                       Fixed-point fractional library routines.
!                                                              (line 1620)
  * __fractunsusqdi:                       Fixed-point fractional library routines.
!                                                              (line 1592)
  * __fractunsusqhi:                       Fixed-point fractional library routines.
!                                                              (line 1588)
  * __fractunsusqqi:                       Fixed-point fractional library routines.
!                                                              (line 1586)
  * __fractunsusqsi:                       Fixed-point fractional library routines.
!                                                              (line 1590)
  * __fractunsusqti:                       Fixed-point fractional library routines.
!                                                              (line 1594)
  * __fractunsutadi:                       Fixed-point fractional library routines.
!                                                              (line 1638)
  * __fractunsutahi:                       Fixed-point fractional library routines.
!                                                              (line 1634)
  * __fractunsutaqi:                       Fixed-point fractional library routines.
!                                                              (line 1632)
  * __fractunsutasi:                       Fixed-point fractional library routines.
!                                                              (line 1636)
  * __fractunsutati:                       Fixed-point fractional library routines.
!                                                              (line 1640)
  * __fractuqqda:                          Fixed-point fractional library routines.
!                                                              (line  679)
  * __fractuqqdf:                          Fixed-point fractional library routines.
!                                                              (line  702)
  * __fractuqqdi:                          Fixed-point fractional library routines.
!                                                              (line  699)
  * __fractuqqdq:                          Fixed-point fractional library routines.
!                                                              (line  675)
  * __fractuqqha:                          Fixed-point fractional library routines.
!                                                              (line  677)
  * __fractuqqhi:                          Fixed-point fractional library routines.
!                                                              (line  697)
  * __fractuqqhq:                          Fixed-point fractional library routines.
!                                                              (line  673)
  * __fractuqqqi:                          Fixed-point fractional library routines.
!                                                              (line  696)
  * __fractuqqqq:                          Fixed-point fractional library routines.
!                                                              (line  672)
  * __fractuqqsa:                          Fixed-point fractional library routines.
!                                                              (line  678)
  * __fractuqqsf:                          Fixed-point fractional library routines.
!                                                              (line  701)
  * __fractuqqsi:                          Fixed-point fractional library routines.
!                                                              (line  698)
  * __fractuqqsq:                          Fixed-point fractional library routines.
!                                                              (line  674)
  * __fractuqqta:                          Fixed-point fractional library routines.
!                                                              (line  680)
  * __fractuqqti:                          Fixed-point fractional library routines.
-                                                              (line  700)
- * __fractuqquda:                         Fixed-point fractional library routines.
                                                               (line  692)
  * __fractuqqudq2:                        Fixed-point fractional library routines.
!                                                              (line  686)
  * __fractuqquha:                         Fixed-point fractional library routines.
!                                                              (line  688)
  * __fractuqquhq2:                        Fixed-point fractional library routines.
!                                                              (line  682)
  * __fractuqqusa:                         Fixed-point fractional library routines.
!                                                              (line  690)
  * __fractuqqusq2:                        Fixed-point fractional library routines.
!                                                              (line  684)
  * __fractuqquta:                         Fixed-point fractional library routines.
!                                                              (line  694)
  * __fractusada:                          Fixed-point fractional library routines.
!                                                              (line  836)
  * __fractusadf:                          Fixed-point fractional library routines.
!                                                              (line  857)
  * __fractusadi:                          Fixed-point fractional library routines.
!                                                              (line  854)
  * __fractusadq:                          Fixed-point fractional library routines.
!                                                              (line  833)
  * __fractusaha:                          Fixed-point fractional library routines.
!                                                              (line  834)
  * __fractusahi:                          Fixed-point fractional library routines.
!                                                              (line  852)
  * __fractusahq:                          Fixed-point fractional library routines.
!                                                              (line  831)
  * __fractusaqi:                          Fixed-point fractional library routines.
!                                                              (line  851)
  * __fractusaqq:                          Fixed-point fractional library routines.
!                                                              (line  830)
  * __fractusasa:                          Fixed-point fractional library routines.
!                                                              (line  835)
  * __fractusasf:                          Fixed-point fractional library routines.
!                                                              (line  856)
  * __fractusasi:                          Fixed-point fractional library routines.
!                                                              (line  853)
  * __fractusasq:                          Fixed-point fractional library routines.
!                                                              (line  832)
  * __fractusata:                          Fixed-point fractional library routines.
!                                                              (line  837)
  * __fractusati:                          Fixed-point fractional library routines.
-                                                              (line  855)
- * __fractusauda2:                        Fixed-point fractional library routines.
                                                               (line  847)
  * __fractusaudq:                         Fixed-point fractional library routines.
!                                                              (line  843)
  * __fractusauha2:                        Fixed-point fractional library routines.
!                                                              (line  845)
  * __fractusauhq:                         Fixed-point fractional library routines.
!                                                              (line  840)
  * __fractusauqq:                         Fixed-point fractional library routines.
!                                                              (line  838)
  * __fractusausq:                         Fixed-point fractional library routines.
!                                                              (line  841)
  * __fractusauta2:                        Fixed-point fractional library routines.
!                                                              (line  849)
  * __fractusqda:                          Fixed-point fractional library routines.
!                                                              (line  738)
  * __fractusqdf:                          Fixed-point fractional library routines.
!                                                              (line  761)
  * __fractusqdi:                          Fixed-point fractional library routines.
!                                                              (line  758)
  * __fractusqdq:                          Fixed-point fractional library routines.
!                                                              (line  734)
  * __fractusqha:                          Fixed-point fractional library routines.
!                                                              (line  736)
  * __fractusqhi:                          Fixed-point fractional library routines.
!                                                              (line  756)
  * __fractusqhq:                          Fixed-point fractional library routines.
!                                                              (line  732)
  * __fractusqqi:                          Fixed-point fractional library routines.
!                                                              (line  755)
  * __fractusqqq:                          Fixed-point fractional library routines.
!                                                              (line  731)
  * __fractusqsa:                          Fixed-point fractional library routines.
!                                                              (line  737)
  * __fractusqsf:                          Fixed-point fractional library routines.
!                                                              (line  760)
  * __fractusqsi:                          Fixed-point fractional library routines.
!                                                              (line  757)
  * __fractusqsq:                          Fixed-point fractional library routines.
!                                                              (line  733)
  * __fractusqta:                          Fixed-point fractional library routines.
!                                                              (line  739)
  * __fractusqti:                          Fixed-point fractional library routines.
-                                                              (line  759)
- * __fractusquda:                         Fixed-point fractional library routines.
                                                               (line  751)
  * __fractusqudq2:                        Fixed-point fractional library routines.
!                                                              (line  745)
  * __fractusquha:                         Fixed-point fractional library routines.
!                                                              (line  747)
  * __fractusquhq2:                        Fixed-point fractional library routines.
!                                                              (line  743)
  * __fractusquqq2:                        Fixed-point fractional library routines.
!                                                              (line  741)
  * __fractusqusa:                         Fixed-point fractional library routines.
!                                                              (line  749)
  * __fractusquta:                         Fixed-point fractional library routines.
!                                                              (line  753)
  * __fractutada:                          Fixed-point fractional library routines.
!                                                              (line  899)
  * __fractutadf:                          Fixed-point fractional library routines.
!                                                              (line  925)
  * __fractutadi:                          Fixed-point fractional library routines.
!                                                              (line  921)
  * __fractutadq:                          Fixed-point fractional library routines.
!                                                              (line  894)
  * __fractutaha:                          Fixed-point fractional library routines.
!                                                              (line  896)
  * __fractutahi:                          Fixed-point fractional library routines.
!                                                              (line  919)
  * __fractutahq:                          Fixed-point fractional library routines.
!                                                              (line  891)
  * __fractutaqi:                          Fixed-point fractional library routines.
!                                                              (line  917)
  * __fractutaqq:                          Fixed-point fractional library routines.
!                                                              (line  889)
  * __fractutasa:                          Fixed-point fractional library routines.
!                                                              (line  898)
  * __fractutasf:                          Fixed-point fractional library routines.
!                                                              (line  924)
  * __fractutasi:                          Fixed-point fractional library routines.
!                                                              (line  920)
  * __fractutasq:                          Fixed-point fractional library routines.
!                                                              (line  892)
  * __fractutata:                          Fixed-point fractional library routines.
!                                                              (line  901)
  * __fractutati:                          Fixed-point fractional library routines.
!                                                              (line  922)
  * __fractutauda2:                        Fixed-point fractional library routines.
!                                                              (line  915)
  * __fractutaudq:                         Fixed-point fractional library routines.
!                                                              (line  909)
  * __fractutauha2:                        Fixed-point fractional library routines.
!                                                              (line  911)
  * __fractutauhq:                         Fixed-point fractional library routines.
!                                                              (line  905)
  * __fractutauqq:                         Fixed-point fractional library routines.
!                                                              (line  903)
  * __fractutausa2:                        Fixed-point fractional library routines.
!                                                              (line  913)
  * __fractutausq:                         Fixed-point fractional library routines.
!                                                              (line  907)
  * __gedf2:                               Soft float library routines.
-                                                              (line  234)
- * __gesf2:                               Soft float library routines.
                                                               (line  233)
  * __getf2:                               Soft float library routines.
!                                                              (line  235)
  * __gtdf2:                               Soft float library routines.
-                                                              (line  252)
- * __gtsf2:                               Soft float library routines.
                                                               (line  251)
  * __gttf2:                               Soft float library routines.
!                                                              (line  253)
  * __ledf2:                               Soft float library routines.
-                                                              (line  246)
- * __lesf2:                               Soft float library routines.
                                                               (line  245)
  * __letf2:                               Soft float library routines.
!                                                              (line  247)
  * __lshrdi3:                             Integer library routines.
                                                               (line   30)
  * __lshrsi3:                             Integer library routines.
--- 53217,54487 ----
  * __floatuntixf:                         Soft float library routines.
                                                               (line  153)
  * __fractdadf:                           Fixed-point fractional library routines.
!                                                              (line  635)
  * __fractdadi:                           Fixed-point fractional library routines.
!                                                              (line  632)
  * __fractdadq:                           Fixed-point fractional library routines.
!                                                              (line  615)
  * __fractdaha2:                          Fixed-point fractional library routines.
!                                                              (line  616)
  * __fractdahi:                           Fixed-point fractional library routines.
!                                                              (line  630)
  * __fractdahq:                           Fixed-point fractional library routines.
!                                                              (line  613)
  * __fractdaqi:                           Fixed-point fractional library routines.
!                                                              (line  629)
  * __fractdaqq:                           Fixed-point fractional library routines.
!                                                              (line  612)
  * __fractdasa2:                          Fixed-point fractional library routines.
!                                                              (line  617)
  * __fractdasf:                           Fixed-point fractional library routines.
!                                                              (line  634)
  * __fractdasi:                           Fixed-point fractional library routines.
!                                                              (line  631)
  * __fractdasq:                           Fixed-point fractional library routines.
!                                                              (line  614)
  * __fractdata2:                          Fixed-point fractional library routines.
!                                                              (line  618)
  * __fractdati:                           Fixed-point fractional library routines.
!                                                              (line  633)
  * __fractdauda:                          Fixed-point fractional library routines.
!                                                              (line  626)
  * __fractdaudq:                          Fixed-point fractional library routines.
!                                                              (line  622)
  * __fractdauha:                          Fixed-point fractional library routines.
!                                                              (line  624)
  * __fractdauhq:                          Fixed-point fractional library routines.
!                                                              (line  620)
  * __fractdauqq:                          Fixed-point fractional library routines.
!                                                              (line  619)
  * __fractdausa:                          Fixed-point fractional library routines.
!                                                              (line  625)
  * __fractdausq:                          Fixed-point fractional library routines.
!                                                              (line  621)
  * __fractdauta:                          Fixed-point fractional library routines.
!                                                              (line  627)
  * __fractdfda:                           Fixed-point fractional library routines.
!                                                              (line 1024)
  * __fractdfdq:                           Fixed-point fractional library routines.
!                                                              (line 1021)
  * __fractdfha:                           Fixed-point fractional library routines.
!                                                              (line 1022)
  * __fractdfhq:                           Fixed-point fractional library routines.
!                                                              (line 1019)
  * __fractdfqq:                           Fixed-point fractional library routines.
!                                                              (line 1018)
  * __fractdfsa:                           Fixed-point fractional library routines.
!                                                              (line 1023)
  * __fractdfsq:                           Fixed-point fractional library routines.
!                                                              (line 1020)
  * __fractdfta:                           Fixed-point fractional library routines.
!                                                              (line 1025)
  * __fractdfuda:                          Fixed-point fractional library routines.
!                                                              (line 1032)
  * __fractdfudq:                          Fixed-point fractional library routines.
!                                                              (line 1029)
  * __fractdfuha:                          Fixed-point fractional library routines.
!                                                              (line 1030)
  * __fractdfuhq:                          Fixed-point fractional library routines.
!                                                              (line 1027)
  * __fractdfuqq:                          Fixed-point fractional library routines.
!                                                              (line 1026)
  * __fractdfusa:                          Fixed-point fractional library routines.
!                                                              (line 1031)
  * __fractdfusq:                          Fixed-point fractional library routines.
!                                                              (line 1028)
  * __fractdfuta:                          Fixed-point fractional library routines.
!                                                              (line 1033)
  * __fractdida:                           Fixed-point fractional library routines.
!                                                              (line  974)
  * __fractdidq:                           Fixed-point fractional library routines.
!                                                              (line  971)
  * __fractdiha:                           Fixed-point fractional library routines.
!                                                              (line  972)
  * __fractdihq:                           Fixed-point fractional library routines.
!                                                              (line  969)
  * __fractdiqq:                           Fixed-point fractional library routines.
!                                                              (line  968)
  * __fractdisa:                           Fixed-point fractional library routines.
!                                                              (line  973)
  * __fractdisq:                           Fixed-point fractional library routines.
!                                                              (line  970)
  * __fractdita:                           Fixed-point fractional library routines.
!                                                              (line  975)
  * __fractdiuda:                          Fixed-point fractional library routines.
!                                                              (line  982)
  * __fractdiudq:                          Fixed-point fractional library routines.
!                                                              (line  979)
  * __fractdiuha:                          Fixed-point fractional library routines.
!                                                              (line  980)
  * __fractdiuhq:                          Fixed-point fractional library routines.
!                                                              (line  977)
  * __fractdiuqq:                          Fixed-point fractional library routines.
!                                                              (line  976)
  * __fractdiusa:                          Fixed-point fractional library routines.
!                                                              (line  981)
  * __fractdiusq:                          Fixed-point fractional library routines.
!                                                              (line  978)
  * __fractdiuta:                          Fixed-point fractional library routines.
!                                                              (line  983)
  * __fractdqda:                           Fixed-point fractional library routines.
!                                                              (line  543)
  * __fractdqdf:                           Fixed-point fractional library routines.
!                                                              (line  565)
  * __fractdqdi:                           Fixed-point fractional library routines.
!                                                              (line  562)
  * __fractdqha:                           Fixed-point fractional library routines.
!                                                              (line  541)
  * __fractdqhi:                           Fixed-point fractional library routines.
!                                                              (line  560)
  * __fractdqhq2:                          Fixed-point fractional library routines.
!                                                              (line  539)
  * __fractdqqi:                           Fixed-point fractional library routines.
!                                                              (line  559)
  * __fractdqqq2:                          Fixed-point fractional library routines.
!                                                              (line  538)
  * __fractdqsa:                           Fixed-point fractional library routines.
!                                                              (line  542)
  * __fractdqsf:                           Fixed-point fractional library routines.
!                                                              (line  564)
  * __fractdqsi:                           Fixed-point fractional library routines.
!                                                              (line  561)
  * __fractdqsq2:                          Fixed-point fractional library routines.
!                                                              (line  540)
  * __fractdqta:                           Fixed-point fractional library routines.
!                                                              (line  544)
  * __fractdqti:                           Fixed-point fractional library routines.
                                                               (line  563)
+ * __fractdquda:                          Fixed-point fractional library routines.
+                                                              (line  555)
  * __fractdqudq:                          Fixed-point fractional library routines.
!                                                              (line  550)
  * __fractdquha:                          Fixed-point fractional library routines.
!                                                              (line  552)
  * __fractdquhq:                          Fixed-point fractional library routines.
!                                                              (line  547)
  * __fractdquqq:                          Fixed-point fractional library routines.
!                                                              (line  545)
  * __fractdqusa:                          Fixed-point fractional library routines.
!                                                              (line  554)
  * __fractdqusq:                          Fixed-point fractional library routines.
!                                                              (line  548)
  * __fractdquta:                          Fixed-point fractional library routines.
!                                                              (line  557)
  * __fracthada2:                          Fixed-point fractional library routines.
!                                                              (line  571)
  * __fracthadf:                           Fixed-point fractional library routines.
!                                                              (line  589)
  * __fracthadi:                           Fixed-point fractional library routines.
!                                                              (line  586)
  * __fracthadq:                           Fixed-point fractional library routines.
!                                                              (line  569)
  * __fracthahi:                           Fixed-point fractional library routines.
!                                                              (line  584)
  * __fracthahq:                           Fixed-point fractional library routines.
!                                                              (line  567)
  * __fracthaqi:                           Fixed-point fractional library routines.
!                                                              (line  583)
  * __fracthaqq:                           Fixed-point fractional library routines.
!                                                              (line  566)
  * __fracthasa2:                          Fixed-point fractional library routines.
!                                                              (line  570)
  * __fracthasf:                           Fixed-point fractional library routines.
!                                                              (line  588)
  * __fracthasi:                           Fixed-point fractional library routines.
!                                                              (line  585)
  * __fracthasq:                           Fixed-point fractional library routines.
!                                                              (line  568)
  * __fracthata2:                          Fixed-point fractional library routines.
!                                                              (line  572)
  * __fracthati:                           Fixed-point fractional library routines.
!                                                              (line  587)
  * __fracthauda:                          Fixed-point fractional library routines.
!                                                              (line  580)
  * __fracthaudq:                          Fixed-point fractional library routines.
!                                                              (line  576)
  * __fracthauha:                          Fixed-point fractional library routines.
!                                                              (line  578)
  * __fracthauhq:                          Fixed-point fractional library routines.
!                                                              (line  574)
  * __fracthauqq:                          Fixed-point fractional library routines.
!                                                              (line  573)
  * __fracthausa:                          Fixed-point fractional library routines.
!                                                              (line  579)
  * __fracthausq:                          Fixed-point fractional library routines.
!                                                              (line  575)
  * __fracthauta:                          Fixed-point fractional library routines.
!                                                              (line  581)
  * __fracthida:                           Fixed-point fractional library routines.
!                                                              (line  942)
  * __fracthidq:                           Fixed-point fractional library routines.
!                                                              (line  939)
  * __fracthiha:                           Fixed-point fractional library routines.
!                                                              (line  940)
  * __fracthihq:                           Fixed-point fractional library routines.
!                                                              (line  937)
  * __fracthiqq:                           Fixed-point fractional library routines.
!                                                              (line  936)
  * __fracthisa:                           Fixed-point fractional library routines.
!                                                              (line  941)
  * __fracthisq:                           Fixed-point fractional library routines.
!                                                              (line  938)
  * __fracthita:                           Fixed-point fractional library routines.
!                                                              (line  943)
  * __fracthiuda:                          Fixed-point fractional library routines.
!                                                              (line  950)
  * __fracthiudq:                          Fixed-point fractional library routines.
!                                                              (line  947)
  * __fracthiuha:                          Fixed-point fractional library routines.
!                                                              (line  948)
  * __fracthiuhq:                          Fixed-point fractional library routines.
!                                                              (line  945)
  * __fracthiuqq:                          Fixed-point fractional library routines.
!                                                              (line  944)
  * __fracthiusa:                          Fixed-point fractional library routines.
!                                                              (line  949)
  * __fracthiusq:                          Fixed-point fractional library routines.
!                                                              (line  946)
  * __fracthiuta:                          Fixed-point fractional library routines.
!                                                              (line  951)
  * __fracthqda:                           Fixed-point fractional library routines.
!                                                              (line  497)
  * __fracthqdf:                           Fixed-point fractional library routines.
!                                                              (line  513)
  * __fracthqdi:                           Fixed-point fractional library routines.
!                                                              (line  510)
  * __fracthqdq2:                          Fixed-point fractional library routines.
!                                                              (line  494)
  * __fracthqha:                           Fixed-point fractional library routines.
!                                                              (line  495)
  * __fracthqhi:                           Fixed-point fractional library routines.
!                                                              (line  508)
  * __fracthqqi:                           Fixed-point fractional library routines.
!                                                              (line  507)
  * __fracthqqq2:                          Fixed-point fractional library routines.
!                                                              (line  492)
  * __fracthqsa:                           Fixed-point fractional library routines.
!                                                              (line  496)
  * __fracthqsf:                           Fixed-point fractional library routines.
!                                                              (line  512)
  * __fracthqsi:                           Fixed-point fractional library routines.
!                                                              (line  509)
  * __fracthqsq2:                          Fixed-point fractional library routines.
!                                                              (line  493)
  * __fracthqta:                           Fixed-point fractional library routines.
!                                                              (line  498)
  * __fracthqti:                           Fixed-point fractional library routines.
!                                                              (line  511)
  * __fracthquda:                          Fixed-point fractional library routines.
!                                                              (line  505)
  * __fracthqudq:                          Fixed-point fractional library routines.
!                                                              (line  502)
  * __fracthquha:                          Fixed-point fractional library routines.
!                                                              (line  503)
  * __fracthquhq:                          Fixed-point fractional library routines.
!                                                              (line  500)
  * __fracthquqq:                          Fixed-point fractional library routines.
!                                                              (line  499)
  * __fracthqusa:                          Fixed-point fractional library routines.
!                                                              (line  504)
  * __fracthqusq:                          Fixed-point fractional library routines.
!                                                              (line  501)
  * __fracthquta:                          Fixed-point fractional library routines.
!                                                              (line  506)
  * __fractqida:                           Fixed-point fractional library routines.
!                                                              (line  924)
  * __fractqidq:                           Fixed-point fractional library routines.
!                                                              (line  921)
  * __fractqiha:                           Fixed-point fractional library routines.
!                                                              (line  922)
  * __fractqihq:                           Fixed-point fractional library routines.
!                                                              (line  919)
  * __fractqiqq:                           Fixed-point fractional library routines.
!                                                              (line  918)
  * __fractqisa:                           Fixed-point fractional library routines.
!                                                              (line  923)
  * __fractqisq:                           Fixed-point fractional library routines.
!                                                              (line  920)
  * __fractqita:                           Fixed-point fractional library routines.
!                                                              (line  925)
  * __fractqiuda:                          Fixed-point fractional library routines.
!                                                              (line  933)
  * __fractqiudq:                          Fixed-point fractional library routines.
!                                                              (line  929)
  * __fractqiuha:                          Fixed-point fractional library routines.
!                                                              (line  931)
  * __fractqiuhq:                          Fixed-point fractional library routines.
!                                                              (line  927)
  * __fractqiuqq:                          Fixed-point fractional library routines.
!                                                              (line  926)
  * __fractqiusa:                          Fixed-point fractional library routines.
!                                                              (line  932)
  * __fractqiusq:                          Fixed-point fractional library routines.
!                                                              (line  928)
  * __fractqiuta:                          Fixed-point fractional library routines.
!                                                              (line  934)
  * __fractqqda:                           Fixed-point fractional library routines.
!                                                              (line  473)
  * __fractqqdf:                           Fixed-point fractional library routines.
!                                                              (line  491)
  * __fractqqdi:                           Fixed-point fractional library routines.
!                                                              (line  488)
  * __fractqqdq2:                          Fixed-point fractional library routines.
!                                                              (line  470)
  * __fractqqha:                           Fixed-point fractional library routines.
!                                                              (line  471)
  * __fractqqhi:                           Fixed-point fractional library routines.
!                                                              (line  486)
  * __fractqqhq2:                          Fixed-point fractional library routines.
!                                                              (line  468)
  * __fractqqqi:                           Fixed-point fractional library routines.
!                                                              (line  485)
  * __fractqqsa:                           Fixed-point fractional library routines.
!                                                              (line  472)
  * __fractqqsf:                           Fixed-point fractional library routines.
!                                                              (line  490)
  * __fractqqsi:                           Fixed-point fractional library routines.
!                                                              (line  487)
  * __fractqqsq2:                          Fixed-point fractional library routines.
!                                                              (line  469)
  * __fractqqta:                           Fixed-point fractional library routines.
!                                                              (line  474)
  * __fractqqti:                           Fixed-point fractional library routines.
!                                                              (line  489)
  * __fractqquda:                          Fixed-point fractional library routines.
!                                                              (line  482)
  * __fractqqudq:                          Fixed-point fractional library routines.
!                                                              (line  478)
  * __fractqquha:                          Fixed-point fractional library routines.
!                                                              (line  480)
  * __fractqquhq:                          Fixed-point fractional library routines.
!                                                              (line  476)
  * __fractqquqq:                          Fixed-point fractional library routines.
!                                                              (line  475)
  * __fractqqusa:                          Fixed-point fractional library routines.
!                                                              (line  481)
  * __fractqqusq:                          Fixed-point fractional library routines.
!                                                              (line  477)
  * __fractqquta:                          Fixed-point fractional library routines.
!                                                              (line  483)
  * __fractsada2:                          Fixed-point fractional library routines.
!                                                              (line  595)
  * __fractsadf:                           Fixed-point fractional library routines.
!                                                              (line  611)
  * __fractsadi:                           Fixed-point fractional library routines.
!                                                              (line  608)
  * __fractsadq:                           Fixed-point fractional library routines.
!                                                              (line  593)
  * __fractsaha2:                          Fixed-point fractional library routines.
!                                                              (line  594)
  * __fractsahi:                           Fixed-point fractional library routines.
!                                                              (line  606)
  * __fractsahq:                           Fixed-point fractional library routines.
!                                                              (line  591)
  * __fractsaqi:                           Fixed-point fractional library routines.
!                                                              (line  605)
  * __fractsaqq:                           Fixed-point fractional library routines.
!                                                              (line  590)
  * __fractsasf:                           Fixed-point fractional library routines.
!                                                              (line  610)
  * __fractsasi:                           Fixed-point fractional library routines.
!                                                              (line  607)
  * __fractsasq:                           Fixed-point fractional library routines.
!                                                              (line  592)
  * __fractsata2:                          Fixed-point fractional library routines.
!                                                              (line  596)
  * __fractsati:                           Fixed-point fractional library routines.
!                                                              (line  609)
  * __fractsauda:                          Fixed-point fractional library routines.
!                                                              (line  603)
  * __fractsaudq:                          Fixed-point fractional library routines.
!                                                              (line  600)
  * __fractsauha:                          Fixed-point fractional library routines.
!                                                              (line  601)
  * __fractsauhq:                          Fixed-point fractional library routines.
!                                                              (line  598)
  * __fractsauqq:                          Fixed-point fractional library routines.
!                                                              (line  597)
  * __fractsausa:                          Fixed-point fractional library routines.
!                                                              (line  602)
  * __fractsausq:                          Fixed-point fractional library routines.
!                                                              (line  599)
  * __fractsauta:                          Fixed-point fractional library routines.
!                                                              (line  604)
  * __fractsfda:                           Fixed-point fractional library routines.
!                                                              (line 1008)
  * __fractsfdq:                           Fixed-point fractional library routines.
!                                                              (line 1005)
  * __fractsfha:                           Fixed-point fractional library routines.
!                                                              (line 1006)
  * __fractsfhq:                           Fixed-point fractional library routines.
!                                                              (line 1003)
  * __fractsfqq:                           Fixed-point fractional library routines.
!                                                              (line 1002)
  * __fractsfsa:                           Fixed-point fractional library routines.
!                                                              (line 1007)
  * __fractsfsq:                           Fixed-point fractional library routines.
!                                                              (line 1004)
  * __fractsfta:                           Fixed-point fractional library routines.
!                                                              (line 1009)
  * __fractsfuda:                          Fixed-point fractional library routines.
!                                                              (line 1016)
  * __fractsfudq:                          Fixed-point fractional library routines.
!                                                              (line 1013)
  * __fractsfuha:                          Fixed-point fractional library routines.
!                                                              (line 1014)
  * __fractsfuhq:                          Fixed-point fractional library routines.
!                                                              (line 1011)
  * __fractsfuqq:                          Fixed-point fractional library routines.
!                                                              (line 1010)
  * __fractsfusa:                          Fixed-point fractional library routines.
!                                                              (line 1015)
  * __fractsfusq:                          Fixed-point fractional library routines.
!                                                              (line 1012)
  * __fractsfuta:                          Fixed-point fractional library routines.
!                                                              (line 1017)
  * __fractsida:                           Fixed-point fractional library routines.
!                                                              (line  958)
  * __fractsidq:                           Fixed-point fractional library routines.
!                                                              (line  955)
  * __fractsiha:                           Fixed-point fractional library routines.
!                                                              (line  956)
  * __fractsihq:                           Fixed-point fractional library routines.
!                                                              (line  953)
  * __fractsiqq:                           Fixed-point fractional library routines.
!                                                              (line  952)
  * __fractsisa:                           Fixed-point fractional library routines.
!                                                              (line  957)
  * __fractsisq:                           Fixed-point fractional library routines.
!                                                              (line  954)
  * __fractsita:                           Fixed-point fractional library routines.
!                                                              (line  959)
  * __fractsiuda:                          Fixed-point fractional library routines.
!                                                              (line  966)
  * __fractsiudq:                          Fixed-point fractional library routines.
!                                                              (line  963)
  * __fractsiuha:                          Fixed-point fractional library routines.
!                                                              (line  964)
  * __fractsiuhq:                          Fixed-point fractional library routines.
!                                                              (line  961)
  * __fractsiuqq:                          Fixed-point fractional library routines.
!                                                              (line  960)
  * __fractsiusa:                          Fixed-point fractional library routines.
!                                                              (line  965)
  * __fractsiusq:                          Fixed-point fractional library routines.
!                                                              (line  962)
  * __fractsiuta:                          Fixed-point fractional library routines.
!                                                              (line  967)
  * __fractsqda:                           Fixed-point fractional library routines.
!                                                              (line  519)
  * __fractsqdf:                           Fixed-point fractional library routines.
!                                                              (line  537)
  * __fractsqdi:                           Fixed-point fractional library routines.
!                                                              (line  534)
  * __fractsqdq2:                          Fixed-point fractional library routines.
!                                                              (line  516)
  * __fractsqha:                           Fixed-point fractional library routines.
!                                                              (line  517)
  * __fractsqhi:                           Fixed-point fractional library routines.
!                                                              (line  532)
  * __fractsqhq2:                          Fixed-point fractional library routines.
!                                                              (line  515)
  * __fractsqqi:                           Fixed-point fractional library routines.
!                                                              (line  531)
  * __fractsqqq2:                          Fixed-point fractional library routines.
!                                                              (line  514)
  * __fractsqsa:                           Fixed-point fractional library routines.
!                                                              (line  518)
  * __fractsqsf:                           Fixed-point fractional library routines.
!                                                              (line  536)
  * __fractsqsi:                           Fixed-point fractional library routines.
!                                                              (line  533)
  * __fractsqta:                           Fixed-point fractional library routines.
!                                                              (line  520)
  * __fractsqti:                           Fixed-point fractional library routines.
!                                                              (line  535)
  * __fractsquda:                          Fixed-point fractional library routines.
!                                                              (line  528)
  * __fractsqudq:                          Fixed-point fractional library routines.
!                                                              (line  524)
  * __fractsquha:                          Fixed-point fractional library routines.
!                                                              (line  526)
  * __fractsquhq:                          Fixed-point fractional library routines.
!                                                              (line  522)
  * __fractsquqq:                          Fixed-point fractional library routines.
!                                                              (line  521)
  * __fractsqusa:                          Fixed-point fractional library routines.
!                                                              (line  527)
  * __fractsqusq:                          Fixed-point fractional library routines.
!                                                              (line  523)
  * __fractsquta:                          Fixed-point fractional library routines.
!                                                              (line  529)
  * __fracttada2:                          Fixed-point fractional library routines.
!                                                              (line  642)
  * __fracttadf:                           Fixed-point fractional library routines.
!                                                              (line  663)
  * __fracttadi:                           Fixed-point fractional library routines.
!                                                              (line  660)
  * __fracttadq:                           Fixed-point fractional library routines.
!                                                              (line  639)
  * __fracttaha2:                          Fixed-point fractional library routines.
!                                                              (line  640)
  * __fracttahi:                           Fixed-point fractional library routines.
!                                                              (line  658)
  * __fracttahq:                           Fixed-point fractional library routines.
!                                                              (line  637)
  * __fracttaqi:                           Fixed-point fractional library routines.
!                                                              (line  657)
  * __fracttaqq:                           Fixed-point fractional library routines.
!                                                              (line  636)
  * __fracttasa2:                          Fixed-point fractional library routines.
!                                                              (line  641)
  * __fracttasf:                           Fixed-point fractional library routines.
!                                                              (line  662)
  * __fracttasi:                           Fixed-point fractional library routines.
!                                                              (line  659)
  * __fracttasq:                           Fixed-point fractional library routines.
!                                                              (line  638)
  * __fracttati:                           Fixed-point fractional library routines.
                                                               (line  661)
+ * __fracttauda:                          Fixed-point fractional library routines.
+                                                              (line  653)
  * __fracttaudq:                          Fixed-point fractional library routines.
!                                                              (line  648)
  * __fracttauha:                          Fixed-point fractional library routines.
!                                                              (line  650)
  * __fracttauhq:                          Fixed-point fractional library routines.
!                                                              (line  645)
  * __fracttauqq:                          Fixed-point fractional library routines.
!                                                              (line  643)
  * __fracttausa:                          Fixed-point fractional library routines.
!                                                              (line  652)
  * __fracttausq:                          Fixed-point fractional library routines.
!                                                              (line  646)
  * __fracttauta:                          Fixed-point fractional library routines.
!                                                              (line  655)
  * __fracttida:                           Fixed-point fractional library routines.
!                                                              (line  990)
  * __fracttidq:                           Fixed-point fractional library routines.
!                                                              (line  987)
  * __fracttiha:                           Fixed-point fractional library routines.
!                                                              (line  988)
  * __fracttihq:                           Fixed-point fractional library routines.
!                                                              (line  985)
  * __fracttiqq:                           Fixed-point fractional library routines.
!                                                              (line  984)
  * __fracttisa:                           Fixed-point fractional library routines.
!                                                              (line  989)
  * __fracttisq:                           Fixed-point fractional library routines.
!                                                              (line  986)
  * __fracttita:                           Fixed-point fractional library routines.
!                                                              (line  991)
  * __fracttiuda:                          Fixed-point fractional library routines.
!                                                              (line  999)
  * __fracttiudq:                          Fixed-point fractional library routines.
!                                                              (line  995)
  * __fracttiuha:                          Fixed-point fractional library routines.
!                                                              (line  997)
  * __fracttiuhq:                          Fixed-point fractional library routines.
!                                                              (line  993)
  * __fracttiuqq:                          Fixed-point fractional library routines.
!                                                              (line  992)
  * __fracttiusa:                          Fixed-point fractional library routines.
!                                                              (line  998)
  * __fracttiusq:                          Fixed-point fractional library routines.
!                                                              (line  994)
  * __fracttiuta:                          Fixed-point fractional library routines.
!                                                              (line 1000)
  * __fractudada:                          Fixed-point fractional library routines.
!                                                              (line  857)
  * __fractudadf:                          Fixed-point fractional library routines.
!                                                              (line  880)
  * __fractudadi:                          Fixed-point fractional library routines.
!                                                              (line  877)
  * __fractudadq:                          Fixed-point fractional library routines.
!                                                              (line  853)
  * __fractudaha:                          Fixed-point fractional library routines.
!                                                              (line  855)
  * __fractudahi:                          Fixed-point fractional library routines.
!                                                              (line  875)
  * __fractudahq:                          Fixed-point fractional library routines.
!                                                              (line  851)
  * __fractudaqi:                          Fixed-point fractional library routines.
!                                                              (line  874)
  * __fractudaqq:                          Fixed-point fractional library routines.
!                                                              (line  850)
  * __fractudasa:                          Fixed-point fractional library routines.
!                                                              (line  856)
  * __fractudasf:                          Fixed-point fractional library routines.
!                                                              (line  879)
  * __fractudasi:                          Fixed-point fractional library routines.
!                                                              (line  876)
  * __fractudasq:                          Fixed-point fractional library routines.
!                                                              (line  852)
  * __fractudata:                          Fixed-point fractional library routines.
!                                                              (line  858)
  * __fractudati:                          Fixed-point fractional library routines.
!                                                              (line  878)
  * __fractudaudq:                         Fixed-point fractional library routines.
!                                                              (line  866)
  * __fractudauha2:                        Fixed-point fractional library routines.
!                                                              (line  868)
  * __fractudauhq:                         Fixed-point fractional library routines.
!                                                              (line  862)
  * __fractudauqq:                         Fixed-point fractional library routines.
!                                                              (line  860)
  * __fractudausa2:                        Fixed-point fractional library routines.
!                                                              (line  870)
  * __fractudausq:                         Fixed-point fractional library routines.
!                                                              (line  864)
  * __fractudauta2:                        Fixed-point fractional library routines.
!                                                              (line  872)
  * __fractudqda:                          Fixed-point fractional library routines.
!                                                              (line  764)
  * __fractudqdf:                          Fixed-point fractional library routines.
!                                                              (line  790)
  * __fractudqdi:                          Fixed-point fractional library routines.
!                                                              (line  786)
  * __fractudqdq:                          Fixed-point fractional library routines.
!                                                              (line  759)
  * __fractudqha:                          Fixed-point fractional library routines.
!                                                              (line  761)
  * __fractudqhi:                          Fixed-point fractional library routines.
!                                                              (line  784)
  * __fractudqhq:                          Fixed-point fractional library routines.
!                                                              (line  756)
  * __fractudqqi:                          Fixed-point fractional library routines.
!                                                              (line  782)
  * __fractudqqq:                          Fixed-point fractional library routines.
!                                                              (line  754)
  * __fractudqsa:                          Fixed-point fractional library routines.
!                                                              (line  763)
  * __fractudqsf:                          Fixed-point fractional library routines.
!                                                              (line  789)
  * __fractudqsi:                          Fixed-point fractional library routines.
!                                                              (line  785)
  * __fractudqsq:                          Fixed-point fractional library routines.
!                                                              (line  757)
  * __fractudqta:                          Fixed-point fractional library routines.
!                                                              (line  766)
  * __fractudqti:                          Fixed-point fractional library routines.
!                                                              (line  787)
  * __fractudquda:                         Fixed-point fractional library routines.
!                                                              (line  778)
  * __fractudquha:                         Fixed-point fractional library routines.
!                                                              (line  774)
  * __fractudquhq2:                        Fixed-point fractional library routines.
!                                                              (line  770)
  * __fractudquqq2:                        Fixed-point fractional library routines.
!                                                              (line  768)
  * __fractudqusa:                         Fixed-point fractional library routines.
!                                                              (line  776)
  * __fractudqusq2:                        Fixed-point fractional library routines.
!                                                              (line  772)
  * __fractudquta:                         Fixed-point fractional library routines.
!                                                              (line  780)
  * __fractuhada:                          Fixed-point fractional library routines.
!                                                              (line  798)
  * __fractuhadf:                          Fixed-point fractional library routines.
!                                                              (line  821)
  * __fractuhadi:                          Fixed-point fractional library routines.
!                                                              (line  818)
  * __fractuhadq:                          Fixed-point fractional library routines.
!                                                              (line  794)
  * __fractuhaha:                          Fixed-point fractional library routines.
!                                                              (line  796)
  * __fractuhahi:                          Fixed-point fractional library routines.
!                                                              (line  816)
  * __fractuhahq:                          Fixed-point fractional library routines.
!                                                              (line  792)
  * __fractuhaqi:                          Fixed-point fractional library routines.
!                                                              (line  815)
  * __fractuhaqq:                          Fixed-point fractional library routines.
!                                                              (line  791)
  * __fractuhasa:                          Fixed-point fractional library routines.
!                                                              (line  797)
  * __fractuhasf:                          Fixed-point fractional library routines.
!                                                              (line  820)
  * __fractuhasi:                          Fixed-point fractional library routines.
!                                                              (line  817)
  * __fractuhasq:                          Fixed-point fractional library routines.
!                                                              (line  793)
  * __fractuhata:                          Fixed-point fractional library routines.
!                                                              (line  799)
  * __fractuhati:                          Fixed-point fractional library routines.
                                                               (line  819)
+ * __fractuhauda2:                        Fixed-point fractional library routines.
+                                                              (line  811)
  * __fractuhaudq:                         Fixed-point fractional library routines.
!                                                              (line  807)
  * __fractuhauhq:                         Fixed-point fractional library routines.
!                                                              (line  803)
  * __fractuhauqq:                         Fixed-point fractional library routines.
!                                                              (line  801)
  * __fractuhausa2:                        Fixed-point fractional library routines.
!                                                              (line  809)
  * __fractuhausq:                         Fixed-point fractional library routines.
!                                                              (line  805)
  * __fractuhauta2:                        Fixed-point fractional library routines.
!                                                              (line  813)
  * __fractuhqda:                          Fixed-point fractional library routines.
!                                                              (line  701)
  * __fractuhqdf:                          Fixed-point fractional library routines.
!                                                              (line  722)
  * __fractuhqdi:                          Fixed-point fractional library routines.
!                                                              (line  719)
  * __fractuhqdq:                          Fixed-point fractional library routines.
!                                                              (line  698)
  * __fractuhqha:                          Fixed-point fractional library routines.
!                                                              (line  699)
  * __fractuhqhi:                          Fixed-point fractional library routines.
!                                                              (line  717)
  * __fractuhqhq:                          Fixed-point fractional library routines.
!                                                              (line  696)
  * __fractuhqqi:                          Fixed-point fractional library routines.
!                                                              (line  716)
  * __fractuhqqq:                          Fixed-point fractional library routines.
!                                                              (line  695)
  * __fractuhqsa:                          Fixed-point fractional library routines.
!                                                              (line  700)
  * __fractuhqsf:                          Fixed-point fractional library routines.
!                                                              (line  721)
  * __fractuhqsi:                          Fixed-point fractional library routines.
!                                                              (line  718)
  * __fractuhqsq:                          Fixed-point fractional library routines.
!                                                              (line  697)
  * __fractuhqta:                          Fixed-point fractional library routines.
!                                                              (line  702)
  * __fractuhqti:                          Fixed-point fractional library routines.
                                                               (line  720)
+ * __fractuhquda:                         Fixed-point fractional library routines.
+                                                              (line  712)
  * __fractuhqudq2:                        Fixed-point fractional library routines.
!                                                              (line  707)
  * __fractuhquha:                         Fixed-point fractional library routines.
!                                                              (line  709)
  * __fractuhquqq2:                        Fixed-point fractional library routines.
!                                                              (line  703)
  * __fractuhqusa:                         Fixed-point fractional library routines.
!                                                              (line  711)
  * __fractuhqusq2:                        Fixed-point fractional library routines.
!                                                              (line  705)
  * __fractuhquta:                         Fixed-point fractional library routines.
!                                                              (line  714)
  * __fractunsdadi:                        Fixed-point fractional library routines.
!                                                              (line 1554)
  * __fractunsdahi:                        Fixed-point fractional library routines.
!                                                              (line 1552)
  * __fractunsdaqi:                        Fixed-point fractional library routines.
!                                                              (line 1551)
  * __fractunsdasi:                        Fixed-point fractional library routines.
!                                                              (line 1553)
  * __fractunsdati:                        Fixed-point fractional library routines.
!                                                              (line 1555)
  * __fractunsdida:                        Fixed-point fractional library routines.
!                                                              (line 1706)
  * __fractunsdidq:                        Fixed-point fractional library routines.
!                                                              (line 1703)
  * __fractunsdiha:                        Fixed-point fractional library routines.
!                                                              (line 1704)
  * __fractunsdihq:                        Fixed-point fractional library routines.
!                                                              (line 1701)
  * __fractunsdiqq:                        Fixed-point fractional library routines.
!                                                              (line 1700)
  * __fractunsdisa:                        Fixed-point fractional library routines.
!                                                              (line 1705)
  * __fractunsdisq:                        Fixed-point fractional library routines.
!                                                              (line 1702)
  * __fractunsdita:                        Fixed-point fractional library routines.
!                                                              (line 1707)
  * __fractunsdiuda:                       Fixed-point fractional library routines.
!                                                              (line 1718)
  * __fractunsdiudq:                       Fixed-point fractional library routines.
!                                                              (line 1713)
  * __fractunsdiuha:                       Fixed-point fractional library routines.
!                                                              (line 1715)
  * __fractunsdiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1710)
  * __fractunsdiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1708)
  * __fractunsdiusa:                       Fixed-point fractional library routines.
!                                                              (line 1717)
  * __fractunsdiusq:                       Fixed-point fractional library routines.
!                                                              (line 1711)
  * __fractunsdiuta:                       Fixed-point fractional library routines.
!                                                              (line 1720)
  * __fractunsdqdi:                        Fixed-point fractional library routines.
!                                                              (line 1538)
  * __fractunsdqhi:                        Fixed-point fractional library routines.
!                                                              (line 1536)
  * __fractunsdqqi:                        Fixed-point fractional library routines.
!                                                              (line 1535)
  * __fractunsdqsi:                        Fixed-point fractional library routines.
!                                                              (line 1537)
  * __fractunsdqti:                        Fixed-point fractional library routines.
!                                                              (line 1539)
  * __fractunshadi:                        Fixed-point fractional library routines.
!                                                              (line 1544)
  * __fractunshahi:                        Fixed-point fractional library routines.
!                                                              (line 1542)
  * __fractunshaqi:                        Fixed-point fractional library routines.
!                                                              (line 1541)
  * __fractunshasi:                        Fixed-point fractional library routines.
!                                                              (line 1543)
  * __fractunshati:                        Fixed-point fractional library routines.
!                                                              (line 1545)
  * __fractunshida:                        Fixed-point fractional library routines.
!                                                              (line 1662)
  * __fractunshidq:                        Fixed-point fractional library routines.
!                                                              (line 1659)
  * __fractunshiha:                        Fixed-point fractional library routines.
!                                                              (line 1660)
  * __fractunshihq:                        Fixed-point fractional library routines.
!                                                              (line 1657)
  * __fractunshiqq:                        Fixed-point fractional library routines.
!                                                              (line 1656)
  * __fractunshisa:                        Fixed-point fractional library routines.
!                                                              (line 1661)
  * __fractunshisq:                        Fixed-point fractional library routines.
!                                                              (line 1658)
  * __fractunshita:                        Fixed-point fractional library routines.
!                                                              (line 1663)
  * __fractunshiuda:                       Fixed-point fractional library routines.
!                                                              (line 1674)
  * __fractunshiudq:                       Fixed-point fractional library routines.
!                                                              (line 1669)
  * __fractunshiuha:                       Fixed-point fractional library routines.
!                                                              (line 1671)
  * __fractunshiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1666)
  * __fractunshiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1664)
  * __fractunshiusa:                       Fixed-point fractional library routines.
!                                                              (line 1673)
  * __fractunshiusq:                       Fixed-point fractional library routines.
!                                                              (line 1667)
  * __fractunshiuta:                       Fixed-point fractional library routines.
!                                                              (line 1676)
  * __fractunshqdi:                        Fixed-point fractional library routines.
!                                                              (line 1528)
  * __fractunshqhi:                        Fixed-point fractional library routines.
!                                                              (line 1526)
  * __fractunshqqi:                        Fixed-point fractional library routines.
!                                                              (line 1525)
  * __fractunshqsi:                        Fixed-point fractional library routines.
!                                                              (line 1527)
  * __fractunshqti:                        Fixed-point fractional library routines.
!                                                              (line 1529)
  * __fractunsqida:                        Fixed-point fractional library routines.
!                                                              (line 1640)
  * __fractunsqidq:                        Fixed-point fractional library routines.
!                                                              (line 1637)
  * __fractunsqiha:                        Fixed-point fractional library routines.
!                                                              (line 1638)
  * __fractunsqihq:                        Fixed-point fractional library routines.
!                                                              (line 1635)
  * __fractunsqiqq:                        Fixed-point fractional library routines.
!                                                              (line 1634)
  * __fractunsqisa:                        Fixed-point fractional library routines.
!                                                              (line 1639)
  * __fractunsqisq:                        Fixed-point fractional library routines.
!                                                              (line 1636)
  * __fractunsqita:                        Fixed-point fractional library routines.
!                                                              (line 1641)
  * __fractunsqiuda:                       Fixed-point fractional library routines.
!                                                              (line 1652)
  * __fractunsqiudq:                       Fixed-point fractional library routines.
!                                                              (line 1647)
  * __fractunsqiuha:                       Fixed-point fractional library routines.
!                                                              (line 1649)
  * __fractunsqiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1644)
  * __fractunsqiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1642)
  * __fractunsqiusa:                       Fixed-point fractional library routines.
!                                                              (line 1651)
  * __fractunsqiusq:                       Fixed-point fractional library routines.
!                                                              (line 1645)
  * __fractunsqiuta:                       Fixed-point fractional library routines.
!                                                              (line 1654)
  * __fractunsqqdi:                        Fixed-point fractional library routines.
!                                                              (line 1523)
  * __fractunsqqhi:                        Fixed-point fractional library routines.
!                                                              (line 1521)
  * __fractunsqqqi:                        Fixed-point fractional library routines.
!                                                              (line 1520)
  * __fractunsqqsi:                        Fixed-point fractional library routines.
!                                                              (line 1522)
  * __fractunsqqti:                        Fixed-point fractional library routines.
!                                                              (line 1524)
  * __fractunssadi:                        Fixed-point fractional library routines.
!                                                              (line 1549)
  * __fractunssahi:                        Fixed-point fractional library routines.
!                                                              (line 1547)
  * __fractunssaqi:                        Fixed-point fractional library routines.
!                                                              (line 1546)
  * __fractunssasi:                        Fixed-point fractional library routines.
!                                                              (line 1548)
  * __fractunssati:                        Fixed-point fractional library routines.
!                                                              (line 1550)
  * __fractunssida:                        Fixed-point fractional library routines.
!                                                              (line 1684)
  * __fractunssidq:                        Fixed-point fractional library routines.
!                                                              (line 1681)
  * __fractunssiha:                        Fixed-point fractional library routines.
!                                                              (line 1682)
  * __fractunssihq:                        Fixed-point fractional library routines.
!                                                              (line 1679)
  * __fractunssiqq:                        Fixed-point fractional library routines.
!                                                              (line 1678)
  * __fractunssisa:                        Fixed-point fractional library routines.
!                                                              (line 1683)
  * __fractunssisq:                        Fixed-point fractional library routines.
!                                                              (line 1680)
  * __fractunssita:                        Fixed-point fractional library routines.
!                                                              (line 1685)
  * __fractunssiuda:                       Fixed-point fractional library routines.
!                                                              (line 1696)
  * __fractunssiudq:                       Fixed-point fractional library routines.
!                                                              (line 1691)
  * __fractunssiuha:                       Fixed-point fractional library routines.
!                                                              (line 1693)
  * __fractunssiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1688)
  * __fractunssiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1686)
  * __fractunssiusa:                       Fixed-point fractional library routines.
!                                                              (line 1695)
  * __fractunssiusq:                       Fixed-point fractional library routines.
!                                                              (line 1689)
  * __fractunssiuta:                       Fixed-point fractional library routines.
!                                                              (line 1698)
  * __fractunssqdi:                        Fixed-point fractional library routines.
!                                                              (line 1533)
  * __fractunssqhi:                        Fixed-point fractional library routines.
!                                                              (line 1531)
  * __fractunssqqi:                        Fixed-point fractional library routines.
!                                                              (line 1530)
  * __fractunssqsi:                        Fixed-point fractional library routines.
!                                                              (line 1532)
  * __fractunssqti:                        Fixed-point fractional library routines.
!                                                              (line 1534)
  * __fractunstadi:                        Fixed-point fractional library routines.
!                                                              (line 1559)
  * __fractunstahi:                        Fixed-point fractional library routines.
!                                                              (line 1557)
  * __fractunstaqi:                        Fixed-point fractional library routines.
!                                                              (line 1556)
  * __fractunstasi:                        Fixed-point fractional library routines.
!                                                              (line 1558)
  * __fractunstati:                        Fixed-point fractional library routines.
!                                                              (line 1560)
  * __fractunstida:                        Fixed-point fractional library routines.
!                                                              (line 1729)
  * __fractunstidq:                        Fixed-point fractional library routines.
!                                                              (line 1725)
  * __fractunstiha:                        Fixed-point fractional library routines.
!                                                              (line 1727)
  * __fractunstihq:                        Fixed-point fractional library routines.
!                                                              (line 1723)
  * __fractunstiqq:                        Fixed-point fractional library routines.
!                                                              (line 1722)
  * __fractunstisa:                        Fixed-point fractional library routines.
!                                                              (line 1728)
  * __fractunstisq:                        Fixed-point fractional library routines.
!                                                              (line 1724)
  * __fractunstita:                        Fixed-point fractional library routines.
!                                                              (line 1730)
  * __fractunstiuda:                       Fixed-point fractional library routines.
!                                                              (line 1744)
  * __fractunstiudq:                       Fixed-point fractional library routines.
!                                                              (line 1738)
  * __fractunstiuha:                       Fixed-point fractional library routines.
!                                                              (line 1740)
  * __fractunstiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1734)
  * __fractunstiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1732)
  * __fractunstiusa:                       Fixed-point fractional library routines.
!                                                              (line 1742)
  * __fractunstiusq:                       Fixed-point fractional library routines.
!                                                              (line 1736)
  * __fractunstiuta:                       Fixed-point fractional library routines.
!                                                              (line 1746)
  * __fractunsudadi:                       Fixed-point fractional library routines.
!                                                              (line 1620)
  * __fractunsudahi:                       Fixed-point fractional library routines.
!                                                              (line 1616)
  * __fractunsudaqi:                       Fixed-point fractional library routines.
!                                                              (line 1614)
  * __fractunsudasi:                       Fixed-point fractional library routines.
!                                                              (line 1618)
  * __fractunsudati:                       Fixed-point fractional library routines.
!                                                              (line 1622)
  * __fractunsudqdi:                       Fixed-point fractional library routines.
!                                                              (line 1594)
  * __fractunsudqhi:                       Fixed-point fractional library routines.
!                                                              (line 1590)
  * __fractunsudqqi:                       Fixed-point fractional library routines.
!                                                              (line 1588)
  * __fractunsudqsi:                       Fixed-point fractional library routines.
!                                                              (line 1592)
  * __fractunsudqti:                       Fixed-point fractional library routines.
!                                                              (line 1596)
  * __fractunsuhadi:                       Fixed-point fractional library routines.
!                                                              (line 1604)
  * __fractunsuhahi:                       Fixed-point fractional library routines.
!                                                              (line 1600)
  * __fractunsuhaqi:                       Fixed-point fractional library routines.
!                                                              (line 1598)
  * __fractunsuhasi:                       Fixed-point fractional library routines.
!                                                              (line 1602)
  * __fractunsuhati:                       Fixed-point fractional library routines.
!                                                              (line 1606)
  * __fractunsuhqdi:                       Fixed-point fractional library routines.
!                                                              (line 1575)
  * __fractunsuhqhi:                       Fixed-point fractional library routines.
!                                                              (line 1573)
  * __fractunsuhqqi:                       Fixed-point fractional library routines.
!                                                              (line 1572)
  * __fractunsuhqsi:                       Fixed-point fractional library routines.
!                                                              (line 1574)
  * __fractunsuhqti:                       Fixed-point fractional library routines.
                                                               (line 1576)
+ * __fractunsuqqdi:                       Fixed-point fractional library routines.
+                                                              (line 1568)
  * __fractunsuqqhi:                       Fixed-point fractional library routines.
!                                                              (line 1564)
  * __fractunsuqqqi:                       Fixed-point fractional library routines.
!                                                              (line 1562)
  * __fractunsuqqsi:                       Fixed-point fractional library routines.
!                                                              (line 1566)
  * __fractunsuqqti:                       Fixed-point fractional library routines.
!                                                              (line 1570)
  * __fractunsusadi:                       Fixed-point fractional library routines.
!                                                              (line 1611)
  * __fractunsusahi:                       Fixed-point fractional library routines.
!                                                              (line 1609)
  * __fractunsusaqi:                       Fixed-point fractional library routines.
!                                                              (line 1608)
  * __fractunsusasi:                       Fixed-point fractional library routines.
!                                                              (line 1610)
  * __fractunsusati:                       Fixed-point fractional library routines.
!                                                              (line 1612)
  * __fractunsusqdi:                       Fixed-point fractional library routines.
!                                                              (line 1584)
  * __fractunsusqhi:                       Fixed-point fractional library routines.
!                                                              (line 1580)
  * __fractunsusqqi:                       Fixed-point fractional library routines.
!                                                              (line 1578)
  * __fractunsusqsi:                       Fixed-point fractional library routines.
!                                                              (line 1582)
  * __fractunsusqti:                       Fixed-point fractional library routines.
!                                                              (line 1586)
  * __fractunsutadi:                       Fixed-point fractional library routines.
!                                                              (line 1630)
  * __fractunsutahi:                       Fixed-point fractional library routines.
!                                                              (line 1626)
  * __fractunsutaqi:                       Fixed-point fractional library routines.
!                                                              (line 1624)
  * __fractunsutasi:                       Fixed-point fractional library routines.
!                                                              (line 1628)
  * __fractunsutati:                       Fixed-point fractional library routines.
!                                                              (line 1632)
  * __fractuqqda:                          Fixed-point fractional library routines.
!                                                              (line  671)
  * __fractuqqdf:                          Fixed-point fractional library routines.
!                                                              (line  694)
  * __fractuqqdi:                          Fixed-point fractional library routines.
!                                                              (line  691)
  * __fractuqqdq:                          Fixed-point fractional library routines.
!                                                              (line  667)
  * __fractuqqha:                          Fixed-point fractional library routines.
!                                                              (line  669)
  * __fractuqqhi:                          Fixed-point fractional library routines.
!                                                              (line  689)
  * __fractuqqhq:                          Fixed-point fractional library routines.
!                                                              (line  665)
  * __fractuqqqi:                          Fixed-point fractional library routines.
!                                                              (line  688)
  * __fractuqqqq:                          Fixed-point fractional library routines.
!                                                              (line  664)
  * __fractuqqsa:                          Fixed-point fractional library routines.
!                                                              (line  670)
  * __fractuqqsf:                          Fixed-point fractional library routines.
!                                                              (line  693)
  * __fractuqqsi:                          Fixed-point fractional library routines.
!                                                              (line  690)
  * __fractuqqsq:                          Fixed-point fractional library routines.
!                                                              (line  666)
  * __fractuqqta:                          Fixed-point fractional library routines.
!                                                              (line  672)
  * __fractuqqti:                          Fixed-point fractional library routines.
                                                               (line  692)
+ * __fractuqquda:                         Fixed-point fractional library routines.
+                                                              (line  684)
  * __fractuqqudq2:                        Fixed-point fractional library routines.
!                                                              (line  678)
  * __fractuqquha:                         Fixed-point fractional library routines.
!                                                              (line  680)
  * __fractuqquhq2:                        Fixed-point fractional library routines.
!                                                              (line  674)
  * __fractuqqusa:                         Fixed-point fractional library routines.
!                                                              (line  682)
  * __fractuqqusq2:                        Fixed-point fractional library routines.
!                                                              (line  676)
  * __fractuqquta:                         Fixed-point fractional library routines.
!                                                              (line  686)
  * __fractusada:                          Fixed-point fractional library routines.
!                                                              (line  828)
  * __fractusadf:                          Fixed-point fractional library routines.
!                                                              (line  849)
  * __fractusadi:                          Fixed-point fractional library routines.
!                                                              (line  846)
  * __fractusadq:                          Fixed-point fractional library routines.
!                                                              (line  825)
  * __fractusaha:                          Fixed-point fractional library routines.
!                                                              (line  826)
  * __fractusahi:                          Fixed-point fractional library routines.
!                                                              (line  844)
  * __fractusahq:                          Fixed-point fractional library routines.
!                                                              (line  823)
  * __fractusaqi:                          Fixed-point fractional library routines.
!                                                              (line  843)
  * __fractusaqq:                          Fixed-point fractional library routines.
!                                                              (line  822)
  * __fractusasa:                          Fixed-point fractional library routines.
!                                                              (line  827)
  * __fractusasf:                          Fixed-point fractional library routines.
!                                                              (line  848)
  * __fractusasi:                          Fixed-point fractional library routines.
!                                                              (line  845)
  * __fractusasq:                          Fixed-point fractional library routines.
!                                                              (line  824)
  * __fractusata:                          Fixed-point fractional library routines.
!                                                              (line  829)
  * __fractusati:                          Fixed-point fractional library routines.
                                                               (line  847)
+ * __fractusauda2:                        Fixed-point fractional library routines.
+                                                              (line  839)
  * __fractusaudq:                         Fixed-point fractional library routines.
!                                                              (line  835)
  * __fractusauha2:                        Fixed-point fractional library routines.
!                                                              (line  837)
  * __fractusauhq:                         Fixed-point fractional library routines.
!                                                              (line  832)
  * __fractusauqq:                         Fixed-point fractional library routines.
!                                                              (line  830)
  * __fractusausq:                         Fixed-point fractional library routines.
!                                                              (line  833)
  * __fractusauta2:                        Fixed-point fractional library routines.
!                                                              (line  841)
  * __fractusqda:                          Fixed-point fractional library routines.
!                                                              (line  730)
  * __fractusqdf:                          Fixed-point fractional library routines.
!                                                              (line  753)
  * __fractusqdi:                          Fixed-point fractional library routines.
!                                                              (line  750)
  * __fractusqdq:                          Fixed-point fractional library routines.
!                                                              (line  726)
  * __fractusqha:                          Fixed-point fractional library routines.
!                                                              (line  728)
  * __fractusqhi:                          Fixed-point fractional library routines.
!                                                              (line  748)
  * __fractusqhq:                          Fixed-point fractional library routines.
!                                                              (line  724)
  * __fractusqqi:                          Fixed-point fractional library routines.
!                                                              (line  747)
  * __fractusqqq:                          Fixed-point fractional library routines.
!                                                              (line  723)
  * __fractusqsa:                          Fixed-point fractional library routines.
!                                                              (line  729)
  * __fractusqsf:                          Fixed-point fractional library routines.
!                                                              (line  752)
  * __fractusqsi:                          Fixed-point fractional library routines.
!                                                              (line  749)
  * __fractusqsq:                          Fixed-point fractional library routines.
!                                                              (line  725)
  * __fractusqta:                          Fixed-point fractional library routines.
!                                                              (line  731)
  * __fractusqti:                          Fixed-point fractional library routines.
                                                               (line  751)
+ * __fractusquda:                         Fixed-point fractional library routines.
+                                                              (line  743)
  * __fractusqudq2:                        Fixed-point fractional library routines.
!                                                              (line  737)
  * __fractusquha:                         Fixed-point fractional library routines.
!                                                              (line  739)
  * __fractusquhq2:                        Fixed-point fractional library routines.
!                                                              (line  735)
  * __fractusquqq2:                        Fixed-point fractional library routines.
!                                                              (line  733)
  * __fractusqusa:                         Fixed-point fractional library routines.
!                                                              (line  741)
  * __fractusquta:                         Fixed-point fractional library routines.
!                                                              (line  745)
  * __fractutada:                          Fixed-point fractional library routines.
!                                                              (line  891)
  * __fractutadf:                          Fixed-point fractional library routines.
!                                                              (line  917)
  * __fractutadi:                          Fixed-point fractional library routines.
!                                                              (line  913)
  * __fractutadq:                          Fixed-point fractional library routines.
!                                                              (line  886)
  * __fractutaha:                          Fixed-point fractional library routines.
!                                                              (line  888)
  * __fractutahi:                          Fixed-point fractional library routines.
!                                                              (line  911)
  * __fractutahq:                          Fixed-point fractional library routines.
!                                                              (line  883)
  * __fractutaqi:                          Fixed-point fractional library routines.
!                                                              (line  909)
  * __fractutaqq:                          Fixed-point fractional library routines.
!                                                              (line  881)
  * __fractutasa:                          Fixed-point fractional library routines.
!                                                              (line  890)
  * __fractutasf:                          Fixed-point fractional library routines.
!                                                              (line  916)
  * __fractutasi:                          Fixed-point fractional library routines.
!                                                              (line  912)
  * __fractutasq:                          Fixed-point fractional library routines.
!                                                              (line  884)
  * __fractutata:                          Fixed-point fractional library routines.
!                                                              (line  893)
  * __fractutati:                          Fixed-point fractional library routines.
!                                                              (line  914)
  * __fractutauda2:                        Fixed-point fractional library routines.
!                                                              (line  907)
  * __fractutaudq:                         Fixed-point fractional library routines.
!                                                              (line  901)
  * __fractutauha2:                        Fixed-point fractional library routines.
!                                                              (line  903)
  * __fractutauhq:                         Fixed-point fractional library routines.
!                                                              (line  897)
  * __fractutauqq:                         Fixed-point fractional library routines.
!                                                              (line  895)
  * __fractutausa2:                        Fixed-point fractional library routines.
!                                                              (line  905)
  * __fractutausq:                         Fixed-point fractional library routines.
!                                                              (line  899)
  * __gedf2:                               Soft float library routines.
                                                               (line  233)
+ * __gesf2:                               Soft float library routines.
+                                                              (line  232)
  * __getf2:                               Soft float library routines.
!                                                              (line  234)
  * __gtdf2:                               Soft float library routines.
                                                               (line  251)
+ * __gtsf2:                               Soft float library routines.
+                                                              (line  250)
  * __gttf2:                               Soft float library routines.
!                                                              (line  252)
  * __ledf2:                               Soft float library routines.
                                                               (line  245)
+ * __lesf2:                               Soft float library routines.
+                                                              (line  244)
  * __letf2:                               Soft float library routines.
!                                                              (line  246)
  * __lshrdi3:                             Integer library routines.
                                                               (line   30)
  * __lshrsi3:                             Integer library routines.
*************** Concept Index
*** 54555,54581 ****
  * __lshrti3:                             Integer library routines.
                                                               (line   31)
  * __lshruda3:                            Fixed-point fractional library routines.
!                                                              (line  396)
  * __lshrudq3:                            Fixed-point fractional library routines.
!                                                              (line  390)
  * __lshruha3:                            Fixed-point fractional library routines.
!                                                              (line  392)
  * __lshruhq3:                            Fixed-point fractional library routines.
!                                                              (line  386)
  * __lshruqq3:                            Fixed-point fractional library routines.
!                                                              (line  384)
  * __lshrusa3:                            Fixed-point fractional library routines.
!                                                              (line  394)
  * __lshrusq3:                            Fixed-point fractional library routines.
!                                                              (line  388)
  * __lshruta3:                            Fixed-point fractional library routines.
!                                                              (line  398)
  * __ltdf2:                               Soft float library routines.
-                                                              (line  240)
- * __ltsf2:                               Soft float library routines.
                                                               (line  239)
  * __lttf2:                               Soft float library routines.
!                                                              (line  241)
  * __main:                                Collect2.           (line   15)
  * __moddi3:                              Integer library routines.
                                                               (line   36)
--- 54489,54515 ----
  * __lshrti3:                             Integer library routines.
                                                               (line   31)
  * __lshruda3:                            Fixed-point fractional library routines.
!                                                              (line  388)
  * __lshrudq3:                            Fixed-point fractional library routines.
!                                                              (line  382)
  * __lshruha3:                            Fixed-point fractional library routines.
!                                                              (line  384)
  * __lshruhq3:                            Fixed-point fractional library routines.
!                                                              (line  378)
  * __lshruqq3:                            Fixed-point fractional library routines.
!                                                              (line  376)
  * __lshrusa3:                            Fixed-point fractional library routines.
!                                                              (line  386)
  * __lshrusq3:                            Fixed-point fractional library routines.
!                                                              (line  380)
  * __lshruta3:                            Fixed-point fractional library routines.
!                                                              (line  390)
  * __ltdf2:                               Soft float library routines.
                                                               (line  239)
+ * __ltsf2:                               Soft float library routines.
+                                                              (line  238)
  * __lttf2:                               Soft float library routines.
!                                                              (line  240)
  * __main:                                Collect2.           (line   15)
  * __moddi3:                              Integer library routines.
                                                               (line   36)
*************** Concept Index
*** 54592,54698 ****
  * __mulbitint3:                          Integer library routines.
                                                               (line  195)
  * __mulda3:                              Fixed-point fractional library routines.
!                                                              (line  178)
  * __muldc3:                              Soft float library routines.
!                                                              (line  268)
  * __muldf3:                              Soft float library routines.
                                                               (line   39)
  * __muldi3:                              Integer library routines.
                                                               (line   42)
  * __muldq3:                              Fixed-point fractional library routines.
!                                                              (line  165)
  * __mulha3:                              Fixed-point fractional library routines.
!                                                              (line  175)
  * __mulhq3:                              Fixed-point fractional library routines.
!                                                              (line  163)
  * __mulqq3:                              Fixed-point fractional library routines.
!                                                              (line  161)
  * __mulsa3:                              Fixed-point fractional library routines.
!                                                              (line  177)
  * __mulsc3:                              Soft float library routines.
!                                                              (line  266)
  * __mulsf3:                              Soft float library routines.
                                                               (line   38)
  * __mulsi3:                              Integer library routines.
                                                               (line   41)
  * __mulsq3:                              Fixed-point fractional library routines.
!                                                              (line  164)
  * __multa3:                              Fixed-point fractional library routines.
!                                                              (line  179)
  * __multc3:                              Soft float library routines.
!                                                              (line  270)
  * __multf3:                              Soft float library routines.
                                                               (line   40)
  * __multi3:                              Integer library routines.
                                                               (line   43)
  * __muluda3:                             Fixed-point fractional library routines.
!                                                              (line  185)
  * __muludq3:                             Fixed-point fractional library routines.
!                                                              (line  173)
  * __muluha3:                             Fixed-point fractional library routines.
!                                                              (line  181)
  * __muluhq3:                             Fixed-point fractional library routines.
!                                                              (line  169)
  * __muluqq3:                             Fixed-point fractional library routines.
!                                                              (line  167)
  * __mulusa3:                             Fixed-point fractional library routines.
!                                                              (line  183)
  * __mulusq3:                             Fixed-point fractional library routines.
!                                                              (line  171)
  * __muluta3:                             Fixed-point fractional library routines.
!                                                              (line  187)
  * __mulvdi3:                             Integer library routines.
                                                               (line  114)
  * __mulvsi3:                             Integer library routines.
                                                               (line  113)
  * __mulxc3:                              Soft float library routines.
!                                                              (line  272)
  * __mulxf3:                              Soft float library routines.
                                                               (line   42)
  * __nedf2:                               Soft float library routines.
!                                                              (line  228)
  * __negda2:                              Fixed-point fractional library routines.
!                                                              (line  306)
  * __negdf2:                              Soft float library routines.
                                                               (line   55)
  * __negdi2:                              Integer library routines.
                                                               (line   46)
  * __negdq2:                              Fixed-point fractional library routines.
!                                                              (line  296)
  * __negha2:                              Fixed-point fractional library routines.
!                                                              (line  304)
  * __neghq2:                              Fixed-point fractional library routines.
!                                                              (line  294)
  * __negqq2:                              Fixed-point fractional library routines.
!                                                              (line  293)
  * __negsa2:                              Fixed-point fractional library routines.
!                                                              (line  305)
  * __negsf2:                              Soft float library routines.
                                                               (line   54)
  * __negsq2:                              Fixed-point fractional library routines.
!                                                              (line  295)
  * __negta2:                              Fixed-point fractional library routines.
!                                                              (line  307)
  * __negtf2:                              Soft float library routines.
                                                               (line   56)
  * __negti2:                              Integer library routines.
                                                               (line   47)
  * __neguda2:                             Fixed-point fractional library routines.
!                                                              (line  311)
  * __negudq2:                             Fixed-point fractional library routines.
!                                                              (line  302)
  * __neguha2:                             Fixed-point fractional library routines.
!                                                              (line  308)
  * __neguhq2:                             Fixed-point fractional library routines.
!                                                              (line  299)
  * __neguqq2:                             Fixed-point fractional library routines.
!                                                              (line  297)
  * __negusa2:                             Fixed-point fractional library routines.
!                                                              (line  310)
  * __negusq2:                             Fixed-point fractional library routines.
!                                                              (line  300)
  * __neguta2:                             Fixed-point fractional library routines.
!                                                              (line  313)
  * __negvdi2:                             Integer library routines.
                                                               (line  118)
  * __negvsi2:                             Integer library routines.
--- 54526,54632 ----
  * __mulbitint3:                          Integer library routines.
                                                               (line  195)
  * __mulda3:                              Fixed-point fractional library routines.
!                                                              (line  170)
  * __muldc3:                              Soft float library routines.
!                                                              (line  267)
  * __muldf3:                              Soft float library routines.
                                                               (line   39)
  * __muldi3:                              Integer library routines.
                                                               (line   42)
  * __muldq3:                              Fixed-point fractional library routines.
!                                                              (line  157)
  * __mulha3:                              Fixed-point fractional library routines.
!                                                              (line  167)
  * __mulhq3:                              Fixed-point fractional library routines.
!                                                              (line  155)
  * __mulqq3:                              Fixed-point fractional library routines.
!                                                              (line  153)
  * __mulsa3:                              Fixed-point fractional library routines.
!                                                              (line  169)
  * __mulsc3:                              Soft float library routines.
!                                                              (line  265)
  * __mulsf3:                              Soft float library routines.
                                                               (line   38)
  * __mulsi3:                              Integer library routines.
                                                               (line   41)
  * __mulsq3:                              Fixed-point fractional library routines.
!                                                              (line  156)
  * __multa3:                              Fixed-point fractional library routines.
!                                                              (line  171)
  * __multc3:                              Soft float library routines.
!                                                              (line  269)
  * __multf3:                              Soft float library routines.
                                                               (line   40)
  * __multi3:                              Integer library routines.
                                                               (line   43)
  * __muluda3:                             Fixed-point fractional library routines.
!                                                              (line  177)
  * __muludq3:                             Fixed-point fractional library routines.
!                                                              (line  165)
  * __muluha3:                             Fixed-point fractional library routines.
!                                                              (line  173)
  * __muluhq3:                             Fixed-point fractional library routines.
!                                                              (line  161)
  * __muluqq3:                             Fixed-point fractional library routines.
!                                                              (line  159)
  * __mulusa3:                             Fixed-point fractional library routines.
!                                                              (line  175)
  * __mulusq3:                             Fixed-point fractional library routines.
!                                                              (line  163)
  * __muluta3:                             Fixed-point fractional library routines.
!                                                              (line  179)
  * __mulvdi3:                             Integer library routines.
                                                               (line  114)
  * __mulvsi3:                             Integer library routines.
                                                               (line  113)
  * __mulxc3:                              Soft float library routines.
!                                                              (line  271)
  * __mulxf3:                              Soft float library routines.
                                                               (line   42)
  * __nedf2:                               Soft float library routines.
!                                                              (line  227)
  * __negda2:                              Fixed-point fractional library routines.
!                                                              (line  298)
  * __negdf2:                              Soft float library routines.
                                                               (line   55)
  * __negdi2:                              Integer library routines.
                                                               (line   46)
  * __negdq2:                              Fixed-point fractional library routines.
!                                                              (line  288)
  * __negha2:                              Fixed-point fractional library routines.
!                                                              (line  296)
  * __neghq2:                              Fixed-point fractional library routines.
!                                                              (line  286)
  * __negqq2:                              Fixed-point fractional library routines.
!                                                              (line  285)
  * __negsa2:                              Fixed-point fractional library routines.
!                                                              (line  297)
  * __negsf2:                              Soft float library routines.
                                                               (line   54)
  * __negsq2:                              Fixed-point fractional library routines.
!                                                              (line  287)
  * __negta2:                              Fixed-point fractional library routines.
!                                                              (line  299)
  * __negtf2:                              Soft float library routines.
                                                               (line   56)
  * __negti2:                              Integer library routines.
                                                               (line   47)
  * __neguda2:                             Fixed-point fractional library routines.
!                                                              (line  303)
  * __negudq2:                             Fixed-point fractional library routines.
!                                                              (line  294)
  * __neguha2:                             Fixed-point fractional library routines.
!                                                              (line  300)
  * __neguhq2:                             Fixed-point fractional library routines.
!                                                              (line  291)
  * __neguqq2:                             Fixed-point fractional library routines.
!                                                              (line  289)
  * __negusa2:                             Fixed-point fractional library routines.
!                                                              (line  302)
  * __negusq2:                             Fixed-point fractional library routines.
!                                                              (line  292)
  * __neguta2:                             Fixed-point fractional library routines.
!                                                              (line  305)
  * __negvdi2:                             Integer library routines.
                                                               (line  118)
  * __negvsi2:                             Integer library routines.
*************** Concept Index
*** 54700,54708 ****
  * __negxf2:                              Soft float library routines.
                                                               (line   57)
  * __nesf2:                               Soft float library routines.
!                                                              (line  227)
  * __netf2:                               Soft float library routines.
!                                                              (line  229)
  * __paritydi2:                           Integer library routines.
                                                               (line  150)
  * __paritysi2:                           Integer library routines.
--- 54634,54642 ----
  * __negxf2:                              Soft float library routines.
                                                               (line   57)
  * __nesf2:                               Soft float library routines.
!                                                              (line  226)
  * __netf2:                               Soft float library routines.
!                                                              (line  228)
  * __paritydi2:                           Integer library routines.
                                                               (line  150)
  * __paritysi2:                           Integer library routines.
*************** Concept Index
*** 54716,55726 ****
  * __popcountti2:                         Integer library routines.
                                                               (line  157)
  * __powidf2:                             Soft float library routines.
-                                                              (line  261)
- * __powisf2:                             Soft float library routines.
                                                               (line  260)
  * __powitf2:                             Soft float library routines.
!                                                              (line  262)
  * __powixf2:                             Soft float library routines.
!                                                              (line  263)
  * __satfractdadq:                        Fixed-point fractional library routines.
!                                                              (line 1160)
  * __satfractdaha2:                       Fixed-point fractional library routines.
!                                                              (line 1161)
  * __satfractdahq:                        Fixed-point fractional library routines.
!                                                              (line 1158)
  * __satfractdaqq:                        Fixed-point fractional library routines.
!                                                              (line 1157)
  * __satfractdasa2:                       Fixed-point fractional library routines.
!                                                              (line 1162)
  * __satfractdasq:                        Fixed-point fractional library routines.
!                                                              (line 1159)
  * __satfractdata2:                       Fixed-point fractional library routines.
!                                                              (line 1163)
  * __satfractdauda:                       Fixed-point fractional library routines.
!                                                              (line 1173)
  * __satfractdaudq:                       Fixed-point fractional library routines.
!                                                              (line 1168)
  * __satfractdauha:                       Fixed-point fractional library routines.
!                                                              (line 1170)
  * __satfractdauhq:                       Fixed-point fractional library routines.
!                                                              (line 1166)
  * __satfractdauqq:                       Fixed-point fractional library routines.
!                                                              (line 1164)
  * __satfractdausa:                       Fixed-point fractional library routines.
!                                                              (line 1172)
  * __satfractdausq:                       Fixed-point fractional library routines.
!                                                              (line 1167)
  * __satfractdauta:                       Fixed-point fractional library routines.
!                                                              (line 1174)
  * __satfractdfda:                        Fixed-point fractional library routines.
!                                                              (line 1513)
  * __satfractdfdq:                        Fixed-point fractional library routines.
!                                                              (line 1510)
  * __satfractdfha:                        Fixed-point fractional library routines.
!                                                              (line 1511)
  * __satfractdfhq:                        Fixed-point fractional library routines.
!                                                              (line 1508)
  * __satfractdfqq:                        Fixed-point fractional library routines.
!                                                              (line 1507)
  * __satfractdfsa:                        Fixed-point fractional library routines.
!                                                              (line 1512)
  * __satfractdfsq:                        Fixed-point fractional library routines.
!                                                              (line 1509)
  * __satfractdfta:                        Fixed-point fractional library routines.
!                                                              (line 1514)
  * __satfractdfuda:                       Fixed-point fractional library routines.
!                                                              (line 1522)
  * __satfractdfudq:                       Fixed-point fractional library routines.
!                                                              (line 1518)
  * __satfractdfuha:                       Fixed-point fractional library routines.
!                                                              (line 1520)
  * __satfractdfuhq:                       Fixed-point fractional library routines.
!                                                              (line 1516)
  * __satfractdfuqq:                       Fixed-point fractional library routines.
!                                                              (line 1515)
  * __satfractdfusa:                       Fixed-point fractional library routines.
!                                                              (line 1521)
  * __satfractdfusq:                       Fixed-point fractional library routines.
!                                                              (line 1517)
  * __satfractdfuta:                       Fixed-point fractional library routines.
!                                                              (line 1523)
  * __satfractdida:                        Fixed-point fractional library routines.
!                                                              (line 1463)
  * __satfractdidq:                        Fixed-point fractional library routines.
!                                                              (line 1460)
  * __satfractdiha:                        Fixed-point fractional library routines.
!                                                              (line 1461)
  * __satfractdihq:                        Fixed-point fractional library routines.
!                                                              (line 1458)
  * __satfractdiqq:                        Fixed-point fractional library routines.
!                                                              (line 1457)
  * __satfractdisa:                        Fixed-point fractional library routines.
!                                                              (line 1462)
  * __satfractdisq:                        Fixed-point fractional library routines.
!                                                              (line 1459)
  * __satfractdita:                        Fixed-point fractional library routines.
!                                                              (line 1464)
  * __satfractdiuda:                       Fixed-point fractional library routines.
!                                                              (line 1471)
  * __satfractdiudq:                       Fixed-point fractional library routines.
!                                                              (line 1468)
  * __satfractdiuha:                       Fixed-point fractional library routines.
!                                                              (line 1469)
  * __satfractdiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1466)
  * __satfractdiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1465)
  * __satfractdiusa:                       Fixed-point fractional library routines.
!                                                              (line 1470)
  * __satfractdiusq:                       Fixed-point fractional library routines.
!                                                              (line 1467)
  * __satfractdiuta:                       Fixed-point fractional library routines.
!                                                              (line 1472)
  * __satfractdqda:                        Fixed-point fractional library routines.
!                                                              (line 1105)
  * __satfractdqha:                        Fixed-point fractional library routines.
!                                                              (line 1103)
  * __satfractdqhq2:                       Fixed-point fractional library routines.
!                                                              (line 1101)
  * __satfractdqqq2:                       Fixed-point fractional library routines.
!                                                              (line 1100)
  * __satfractdqsa:                        Fixed-point fractional library routines.
!                                                              (line 1104)
  * __satfractdqsq2:                       Fixed-point fractional library routines.
!                                                              (line 1102)
  * __satfractdqta:                        Fixed-point fractional library routines.
!                                                              (line 1106)
  * __satfractdquda:                       Fixed-point fractional library routines.
!                                                              (line 1117)
  * __satfractdqudq:                       Fixed-point fractional library routines.
!                                                              (line 1112)
  * __satfractdquha:                       Fixed-point fractional library routines.
!                                                              (line 1114)
  * __satfractdquhq:                       Fixed-point fractional library routines.
!                                                              (line 1109)
  * __satfractdquqq:                       Fixed-point fractional library routines.
!                                                              (line 1107)
  * __satfractdqusa:                       Fixed-point fractional library routines.
!                                                              (line 1116)
  * __satfractdqusq:                       Fixed-point fractional library routines.
!                                                              (line 1110)
  * __satfractdquta:                       Fixed-point fractional library routines.
!                                                              (line 1119)
  * __satfracthada2:                       Fixed-point fractional library routines.
!                                                              (line 1126)
  * __satfracthadq:                        Fixed-point fractional library routines.
!                                                              (line 1124)
  * __satfracthahq:                        Fixed-point fractional library routines.
!                                                              (line 1122)
  * __satfracthaqq:                        Fixed-point fractional library routines.
!                                                              (line 1121)
  * __satfracthasa2:                       Fixed-point fractional library routines.
!                                                              (line 1125)
  * __satfracthasq:                        Fixed-point fractional library routines.
!                                                              (line 1123)
  * __satfracthata2:                       Fixed-point fractional library routines.
!                                                              (line 1127)
  * __satfracthauda:                       Fixed-point fractional library routines.
!                                                              (line 1138)
  * __satfracthaudq:                       Fixed-point fractional library routines.
!                                                              (line 1133)
  * __satfracthauha:                       Fixed-point fractional library routines.
!                                                              (line 1135)
  * __satfracthauhq:                       Fixed-point fractional library routines.
!                                                              (line 1130)
  * __satfracthauqq:                       Fixed-point fractional library routines.
!                                                              (line 1128)
  * __satfracthausa:                       Fixed-point fractional library routines.
!                                                              (line 1137)
  * __satfracthausq:                       Fixed-point fractional library routines.
!                                                              (line 1131)
  * __satfracthauta:                       Fixed-point fractional library routines.
!                                                              (line 1140)
  * __satfracthida:                        Fixed-point fractional library routines.
!                                                              (line 1431)
  * __satfracthidq:                        Fixed-point fractional library routines.
!                                                              (line 1428)
  * __satfracthiha:                        Fixed-point fractional library routines.
!                                                              (line 1429)
  * __satfracthihq:                        Fixed-point fractional library routines.
!                                                              (line 1426)
  * __satfracthiqq:                        Fixed-point fractional library routines.
!                                                              (line 1425)
  * __satfracthisa:                        Fixed-point fractional library routines.
!                                                              (line 1430)
  * __satfracthisq:                        Fixed-point fractional library routines.
!                                                              (line 1427)
  * __satfracthita:                        Fixed-point fractional library routines.
!                                                              (line 1432)
  * __satfracthiuda:                       Fixed-point fractional library routines.
!                                                              (line 1439)
  * __satfracthiudq:                       Fixed-point fractional library routines.
!                                                              (line 1436)
  * __satfracthiuha:                       Fixed-point fractional library routines.
!                                                              (line 1437)
  * __satfracthiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1434)
  * __satfracthiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1433)
  * __satfracthiusa:                       Fixed-point fractional library routines.
!                                                              (line 1438)
  * __satfracthiusq:                       Fixed-point fractional library routines.
!                                                              (line 1435)
  * __satfracthiuta:                       Fixed-point fractional library routines.
!                                                              (line 1440)
  * __satfracthqda:                        Fixed-point fractional library routines.
!                                                              (line 1071)
  * __satfracthqdq2:                       Fixed-point fractional library routines.
!                                                              (line 1068)
  * __satfracthqha:                        Fixed-point fractional library routines.
!                                                              (line 1069)
  * __satfracthqqq2:                       Fixed-point fractional library routines.
!                                                              (line 1066)
  * __satfracthqsa:                        Fixed-point fractional library routines.
!                                                              (line 1070)
  * __satfracthqsq2:                       Fixed-point fractional library routines.
!                                                              (line 1067)
  * __satfracthqta:                        Fixed-point fractional library routines.
!                                                              (line 1072)
  * __satfracthquda:                       Fixed-point fractional library routines.
!                                                              (line 1079)
  * __satfracthqudq:                       Fixed-point fractional library routines.
!                                                              (line 1076)
  * __satfracthquha:                       Fixed-point fractional library routines.
!                                                              (line 1077)
  * __satfracthquhq:                       Fixed-point fractional library routines.
!                                                              (line 1074)
  * __satfracthquqq:                       Fixed-point fractional library routines.
!                                                              (line 1073)
  * __satfracthqusa:                       Fixed-point fractional library routines.
!                                                              (line 1078)
  * __satfracthqusq:                       Fixed-point fractional library routines.
!                                                              (line 1075)
  * __satfracthquta:                       Fixed-point fractional library routines.
!                                                              (line 1080)
  * __satfractqida:                        Fixed-point fractional library routines.
!                                                              (line 1409)
  * __satfractqidq:                        Fixed-point fractional library routines.
!                                                              (line 1406)
  * __satfractqiha:                        Fixed-point fractional library routines.
!                                                              (line 1407)
  * __satfractqihq:                        Fixed-point fractional library routines.
!                                                              (line 1404)
  * __satfractqiqq:                        Fixed-point fractional library routines.
!                                                              (line 1403)
  * __satfractqisa:                        Fixed-point fractional library routines.
!                                                              (line 1408)
  * __satfractqisq:                        Fixed-point fractional library routines.
!                                                              (line 1405)
  * __satfractqita:                        Fixed-point fractional library routines.
!                                                              (line 1410)
  * __satfractqiuda:                       Fixed-point fractional library routines.
!                                                              (line 1421)
  * __satfractqiudq:                       Fixed-point fractional library routines.
!                                                              (line 1416)
  * __satfractqiuha:                       Fixed-point fractional library routines.
!                                                              (line 1418)
  * __satfractqiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1413)
  * __satfractqiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1411)
  * __satfractqiusa:                       Fixed-point fractional library routines.
!                                                              (line 1420)
  * __satfractqiusq:                       Fixed-point fractional library routines.
!                                                              (line 1414)
  * __satfractqiuta:                       Fixed-point fractional library routines.
!                                                              (line 1423)
  * __satfractqqda:                        Fixed-point fractional library routines.
!                                                              (line 1050)
  * __satfractqqdq2:                       Fixed-point fractional library routines.
!                                                              (line 1047)
  * __satfractqqha:                        Fixed-point fractional library routines.
!                                                              (line 1048)
  * __satfractqqhq2:                       Fixed-point fractional library routines.
!                                                              (line 1045)
  * __satfractqqsa:                        Fixed-point fractional library routines.
!                                                              (line 1049)
  * __satfractqqsq2:                       Fixed-point fractional library routines.
!                                                              (line 1046)
  * __satfractqqta:                        Fixed-point fractional library routines.
!                                                              (line 1051)
  * __satfractqquda:                       Fixed-point fractional library routines.
!                                                              (line 1062)
  * __satfractqqudq:                       Fixed-point fractional library routines.
!                                                              (line 1057)
  * __satfractqquha:                       Fixed-point fractional library routines.
!                                                              (line 1059)
  * __satfractqquhq:                       Fixed-point fractional library routines.
!                                                              (line 1054)
  * __satfractqquqq:                       Fixed-point fractional library routines.
!                                                              (line 1052)
  * __satfractqqusa:                       Fixed-point fractional library routines.
!                                                              (line 1061)
  * __satfractqqusq:                       Fixed-point fractional library routines.
!                                                              (line 1055)
  * __satfractqquta:                       Fixed-point fractional library routines.
!                                                              (line 1064)
  * __satfractsada2:                       Fixed-point fractional library routines.
!                                                              (line 1147)
  * __satfractsadq:                        Fixed-point fractional library routines.
!                                                              (line 1145)
  * __satfractsaha2:                       Fixed-point fractional library routines.
!                                                              (line 1146)
  * __satfractsahq:                        Fixed-point fractional library routines.
!                                                              (line 1143)
  * __satfractsaqq:                        Fixed-point fractional library routines.
!                                                              (line 1142)
  * __satfractsasq:                        Fixed-point fractional library routines.
!                                                              (line 1144)
  * __satfractsata2:                       Fixed-point fractional library routines.
!                                                              (line 1148)
  * __satfractsauda:                       Fixed-point fractional library routines.
!                                                              (line 1155)
  * __satfractsaudq:                       Fixed-point fractional library routines.
!                                                              (line 1152)
  * __satfractsauha:                       Fixed-point fractional library routines.
!                                                              (line 1153)
  * __satfractsauhq:                       Fixed-point fractional library routines.
!                                                              (line 1150)
  * __satfractsauqq:                       Fixed-point fractional library routines.
!                                                              (line 1149)
  * __satfractsausa:                       Fixed-point fractional library routines.
!                                                              (line 1154)
  * __satfractsausq:                       Fixed-point fractional library routines.
!                                                              (line 1151)
  * __satfractsauta:                       Fixed-point fractional library routines.
!                                                              (line 1156)
  * __satfractsfda:                        Fixed-point fractional library routines.
!                                                              (line 1497)
  * __satfractsfdq:                        Fixed-point fractional library routines.
!                                                              (line 1494)
  * __satfractsfha:                        Fixed-point fractional library routines.
!                                                              (line 1495)
  * __satfractsfhq:                        Fixed-point fractional library routines.
!                                                              (line 1492)
  * __satfractsfqq:                        Fixed-point fractional library routines.
!                                                              (line 1491)
  * __satfractsfsa:                        Fixed-point fractional library routines.
!                                                              (line 1496)
  * __satfractsfsq:                        Fixed-point fractional library routines.
!                                                              (line 1493)
  * __satfractsfta:                        Fixed-point fractional library routines.
!                                                              (line 1498)
  * __satfractsfuda:                       Fixed-point fractional library routines.
!                                                              (line 1505)
  * __satfractsfudq:                       Fixed-point fractional library routines.
!                                                              (line 1502)
  * __satfractsfuha:                       Fixed-point fractional library routines.
!                                                              (line 1503)
  * __satfractsfuhq:                       Fixed-point fractional library routines.
!                                                              (line 1500)
  * __satfractsfuqq:                       Fixed-point fractional library routines.
!                                                              (line 1499)
  * __satfractsfusa:                       Fixed-point fractional library routines.
!                                                              (line 1504)
  * __satfractsfusq:                       Fixed-point fractional library routines.
!                                                              (line 1501)
  * __satfractsfuta:                       Fixed-point fractional library routines.
!                                                              (line 1506)
  * __satfractsida:                        Fixed-point fractional library routines.
!                                                              (line 1447)
  * __satfractsidq:                        Fixed-point fractional library routines.
!                                                              (line 1444)
  * __satfractsiha:                        Fixed-point fractional library routines.
!                                                              (line 1445)
  * __satfractsihq:                        Fixed-point fractional library routines.
!                                                              (line 1442)
  * __satfractsiqq:                        Fixed-point fractional library routines.
!                                                              (line 1441)
  * __satfractsisa:                        Fixed-point fractional library routines.
!                                                              (line 1446)
  * __satfractsisq:                        Fixed-point fractional library routines.
!                                                              (line 1443)
  * __satfractsita:                        Fixed-point fractional library routines.
!                                                              (line 1448)
  * __satfractsiuda:                       Fixed-point fractional library routines.
!                                                              (line 1455)
  * __satfractsiudq:                       Fixed-point fractional library routines.
!                                                              (line 1452)
  * __satfractsiuha:                       Fixed-point fractional library routines.
!                                                              (line 1453)
  * __satfractsiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1450)
  * __satfractsiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1449)
  * __satfractsiusa:                       Fixed-point fractional library routines.
!                                                              (line 1454)
  * __satfractsiusq:                       Fixed-point fractional library routines.
!                                                              (line 1451)
  * __satfractsiuta:                       Fixed-point fractional library routines.
!                                                              (line 1456)
  * __satfractsqda:                        Fixed-point fractional library routines.
!                                                              (line 1086)
  * __satfractsqdq2:                       Fixed-point fractional library routines.
!                                                              (line 1083)
  * __satfractsqha:                        Fixed-point fractional library routines.
!                                                              (line 1084)
  * __satfractsqhq2:                       Fixed-point fractional library routines.
!                                                              (line 1082)
  * __satfractsqqq2:                       Fixed-point fractional library routines.
!                                                              (line 1081)
  * __satfractsqsa:                        Fixed-point fractional library routines.
!                                                              (line 1085)
  * __satfractsqta:                        Fixed-point fractional library routines.
!                                                              (line 1087)
  * __satfractsquda:                       Fixed-point fractional library routines.
!                                                              (line 1097)
  * __satfractsqudq:                       Fixed-point fractional library routines.
!                                                              (line 1092)
  * __satfractsquha:                       Fixed-point fractional library routines.
!                                                              (line 1094)
  * __satfractsquhq:                       Fixed-point fractional library routines.
!                                                              (line 1090)
  * __satfractsquqq:                       Fixed-point fractional library routines.
!                                                              (line 1088)
  * __satfractsqusa:                       Fixed-point fractional library routines.
!                                                              (line 1096)
  * __satfractsqusq:                       Fixed-point fractional library routines.
!                                                              (line 1091)
  * __satfractsquta:                       Fixed-point fractional library routines.
!                                                              (line 1098)
  * __satfracttada2:                       Fixed-point fractional library routines.
!                                                              (line 1182)
  * __satfracttadq:                        Fixed-point fractional library routines.
!                                                              (line 1179)
  * __satfracttaha2:                       Fixed-point fractional library routines.
!                                                              (line 1180)
  * __satfracttahq:                        Fixed-point fractional library routines.
!                                                              (line 1177)
  * __satfracttaqq:                        Fixed-point fractional library routines.
!                                                              (line 1176)
  * __satfracttasa2:                       Fixed-point fractional library routines.
!                                                              (line 1181)
  * __satfracttasq:                        Fixed-point fractional library routines.
!                                                              (line 1178)
  * __satfracttauda:                       Fixed-point fractional library routines.
!                                                              (line 1193)
  * __satfracttaudq:                       Fixed-point fractional library routines.
!                                                              (line 1188)
  * __satfracttauha:                       Fixed-point fractional library routines.
!                                                              (line 1190)
  * __satfracttauhq:                       Fixed-point fractional library routines.
!                                                              (line 1185)
  * __satfracttauqq:                       Fixed-point fractional library routines.
!                                                              (line 1183)
  * __satfracttausa:                       Fixed-point fractional library routines.
!                                                              (line 1192)
  * __satfracttausq:                       Fixed-point fractional library routines.
!                                                              (line 1186)
  * __satfracttauta:                       Fixed-point fractional library routines.
!                                                              (line 1195)
  * __satfracttida:                        Fixed-point fractional library routines.
!                                                              (line 1479)
  * __satfracttidq:                        Fixed-point fractional library routines.
!                                                              (line 1476)
  * __satfracttiha:                        Fixed-point fractional library routines.
!                                                              (line 1477)
  * __satfracttihq:                        Fixed-point fractional library routines.
!                                                              (line 1474)
  * __satfracttiqq:                        Fixed-point fractional library routines.
!                                                              (line 1473)
  * __satfracttisa:                        Fixed-point fractional library routines.
!                                                              (line 1478)
  * __satfracttisq:                        Fixed-point fractional library routines.
!                                                              (line 1475)
  * __satfracttita:                        Fixed-point fractional library routines.
!                                                              (line 1480)
  * __satfracttiuda:                       Fixed-point fractional library routines.
!                                                              (line 1488)
  * __satfracttiudq:                       Fixed-point fractional library routines.
!                                                              (line 1484)
  * __satfracttiuha:                       Fixed-point fractional library routines.
!                                                              (line 1486)
  * __satfracttiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1482)
  * __satfracttiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1481)
  * __satfracttiusa:                       Fixed-point fractional library routines.
!                                                              (line 1487)
  * __satfracttiusq:                       Fixed-point fractional library routines.
!                                                              (line 1483)
  * __satfracttiuta:                       Fixed-point fractional library routines.
!                                                              (line 1489)
  * __satfractudada:                       Fixed-point fractional library routines.
!                                                              (line 1358)
  * __satfractudadq:                       Fixed-point fractional library routines.
!                                                              (line 1353)
  * __satfractudaha:                       Fixed-point fractional library routines.
!                                                              (line 1355)
  * __satfractudahq:                       Fixed-point fractional library routines.
!                                                              (line 1351)
  * __satfractudaqq:                       Fixed-point fractional library routines.
!                                                              (line 1349)
  * __satfractudasa:                       Fixed-point fractional library routines.
!                                                              (line 1357)
  * __satfractudasq:                       Fixed-point fractional library routines.
!                                                              (line 1352)
  * __satfractudata:                       Fixed-point fractional library routines.
!                                                              (line 1359)
  * __satfractudaudq:                      Fixed-point fractional library routines.
!                                                              (line 1367)
  * __satfractudauha2:                     Fixed-point fractional library routines.
!                                                              (line 1369)
  * __satfractudauhq:                      Fixed-point fractional library routines.
!                                                              (line 1363)
  * __satfractudauqq:                      Fixed-point fractional library routines.
!                                                              (line 1361)
  * __satfractudausa2:                     Fixed-point fractional library routines.
!                                                              (line 1371)
  * __satfractudausq:                      Fixed-point fractional library routines.
!                                                              (line 1365)
  * __satfractudauta2:                     Fixed-point fractional library routines.
!                                                              (line 1373)
  * __satfractudqda:                       Fixed-point fractional library routines.
!                                                              (line 1282)
  * __satfractudqdq:                       Fixed-point fractional library routines.
!                                                              (line 1277)
  * __satfractudqha:                       Fixed-point fractional library routines.
!                                                              (line 1279)
  * __satfractudqhq:                       Fixed-point fractional library routines.
!                                                              (line 1274)
  * __satfractudqqq:                       Fixed-point fractional library routines.
!                                                              (line 1272)
  * __satfractudqsa:                       Fixed-point fractional library routines.
!                                                              (line 1281)
  * __satfractudqsq:                       Fixed-point fractional library routines.
!                                                              (line 1275)
  * __satfractudqta:                       Fixed-point fractional library routines.
!                                                              (line 1284)
  * __satfractudquda:                      Fixed-point fractional library routines.
!                                                              (line 1296)
  * __satfractudquha:                      Fixed-point fractional library routines.
!                                                              (line 1292)
  * __satfractudquhq2:                     Fixed-point fractional library routines.
!                                                              (line 1288)
  * __satfractudquqq2:                     Fixed-point fractional library routines.
!                                                              (line 1286)
  * __satfractudqusa:                      Fixed-point fractional library routines.
!                                                              (line 1294)
  * __satfractudqusq2:                     Fixed-point fractional library routines.
!                                                              (line 1290)
  * __satfractudquta:                      Fixed-point fractional library routines.
!                                                              (line 1298)
  * __satfractuhada:                       Fixed-point fractional library routines.
!                                                              (line 1310)
  * __satfractuhadq:                       Fixed-point fractional library routines.
!                                                              (line 1305)
  * __satfractuhaha:                       Fixed-point fractional library routines.
!                                                              (line 1307)
  * __satfractuhahq:                       Fixed-point fractional library routines.
!                                                              (line 1302)
  * __satfractuhaqq:                       Fixed-point fractional library routines.
!                                                              (line 1300)
  * __satfractuhasa:                       Fixed-point fractional library routines.
!                                                              (line 1309)
  * __satfractuhasq:                       Fixed-point fractional library routines.
!                                                              (line 1303)
  * __satfractuhata:                       Fixed-point fractional library routines.
!                                                              (line 1312)
  * __satfractuhauda2:                     Fixed-point fractional library routines.
!                                                              (line 1324)
  * __satfractuhaudq:                      Fixed-point fractional library routines.
!                                                              (line 1320)
  * __satfractuhauhq:                      Fixed-point fractional library routines.
!                                                              (line 1316)
  * __satfractuhauqq:                      Fixed-point fractional library routines.
!                                                              (line 1314)
  * __satfractuhausa2:                     Fixed-point fractional library routines.
!                                                              (line 1322)
  * __satfractuhausq:                      Fixed-point fractional library routines.
!                                                              (line 1318)
  * __satfractuhauta2:                     Fixed-point fractional library routines.
!                                                              (line 1326)
  * __satfractuhqda:                       Fixed-point fractional library routines.
!                                                              (line 1231)
  * __satfractuhqdq:                       Fixed-point fractional library routines.
!                                                              (line 1228)
  * __satfractuhqha:                       Fixed-point fractional library routines.
!                                                              (line 1229)
  * __satfractuhqhq:                       Fixed-point fractional library routines.
!                                                              (line 1226)
  * __satfractuhqqq:                       Fixed-point fractional library routines.
!                                                              (line 1225)
  * __satfractuhqsa:                       Fixed-point fractional library routines.
!                                                              (line 1230)
  * __satfractuhqsq:                       Fixed-point fractional library routines.
!                                                              (line 1227)
  * __satfractuhqta:                       Fixed-point fractional library routines.
!                                                              (line 1232)
  * __satfractuhquda:                      Fixed-point fractional library routines.
!                                                              (line 1242)
  * __satfractuhqudq2:                     Fixed-point fractional library routines.
!                                                              (line 1237)
  * __satfractuhquha:                      Fixed-point fractional library routines.
!                                                              (line 1239)
  * __satfractuhquqq2:                     Fixed-point fractional library routines.
!                                                              (line 1233)
  * __satfractuhqusa:                      Fixed-point fractional library routines.
!                                                              (line 1241)
  * __satfractuhqusq2:                     Fixed-point fractional library routines.
!                                                              (line 1235)
  * __satfractuhquta:                      Fixed-point fractional library routines.
!                                                              (line 1244)
  * __satfractunsdida:                     Fixed-point fractional library routines.
!                                                              (line 1841)
  * __satfractunsdidq:                     Fixed-point fractional library routines.
!                                                              (line 1837)
  * __satfractunsdiha:                     Fixed-point fractional library routines.
!                                                              (line 1839)
  * __satfractunsdihq:                     Fixed-point fractional library routines.
!                                                              (line 1835)
  * __satfractunsdiqq:                     Fixed-point fractional library routines.
!                                                              (line 1834)
  * __satfractunsdisa:                     Fixed-point fractional library routines.
!                                                              (line 1840)
  * __satfractunsdisq:                     Fixed-point fractional library routines.
!                                                              (line 1836)
  * __satfractunsdita:                     Fixed-point fractional library routines.
!                                                              (line 1842)
  * __satfractunsdiuda:                    Fixed-point fractional library routines.
!                                                              (line 1856)
  * __satfractunsdiudq:                    Fixed-point fractional library routines.
!                                                              (line 1850)
  * __satfractunsdiuha:                    Fixed-point fractional library routines.
!                                                              (line 1852)
  * __satfractunsdiuhq:                    Fixed-point fractional library routines.
!                                                              (line 1846)
  * __satfractunsdiuqq:                    Fixed-point fractional library routines.
!                                                              (line 1844)
  * __satfractunsdiusa:                    Fixed-point fractional library routines.
!                                                              (line 1854)
  * __satfractunsdiusq:                    Fixed-point fractional library routines.
!                                                              (line 1848)
  * __satfractunsdiuta:                    Fixed-point fractional library routines.
!                                                              (line 1858)
  * __satfractunshida:                     Fixed-point fractional library routines.
!                                                              (line 1793)
  * __satfractunshidq:                     Fixed-point fractional library routines.
!                                                              (line 1789)
  * __satfractunshiha:                     Fixed-point fractional library routines.
!                                                              (line 1791)
  * __satfractunshihq:                     Fixed-point fractional library routines.
!                                                              (line 1787)
  * __satfractunshiqq:                     Fixed-point fractional library routines.
!                                                              (line 1786)
  * __satfractunshisa:                     Fixed-point fractional library routines.
!                                                              (line 1792)
  * __satfractunshisq:                     Fixed-point fractional library routines.
!                                                              (line 1788)
  * __satfractunshita:                     Fixed-point fractional library routines.
!                                                              (line 1794)
  * __satfractunshiuda:                    Fixed-point fractional library routines.
!                                                              (line 1808)
  * __satfractunshiudq:                    Fixed-point fractional library routines.
!                                                              (line 1802)
  * __satfractunshiuha:                    Fixed-point fractional library routines.
!                                                              (line 1804)
  * __satfractunshiuhq:                    Fixed-point fractional library routines.
!                                                              (line 1798)
  * __satfractunshiuqq:                    Fixed-point fractional library routines.
!                                                              (line 1796)
  * __satfractunshiusa:                    Fixed-point fractional library routines.
!                                                              (line 1806)
  * __satfractunshiusq:                    Fixed-point fractional library routines.
!                                                              (line 1800)
  * __satfractunshiuta:                    Fixed-point fractional library routines.
!                                                              (line 1810)
  * __satfractunsqida:                     Fixed-point fractional library routines.
!                                                              (line 1767)
  * __satfractunsqidq:                     Fixed-point fractional library routines.
!                                                              (line 1763)
  * __satfractunsqiha:                     Fixed-point fractional library routines.
!                                                              (line 1765)
  * __satfractunsqihq:                     Fixed-point fractional library routines.
!                                                              (line 1761)
  * __satfractunsqiqq:                     Fixed-point fractional library routines.
!                                                              (line 1760)
  * __satfractunsqisa:                     Fixed-point fractional library routines.
!                                                              (line 1766)
  * __satfractunsqisq:                     Fixed-point fractional library routines.
!                                                              (line 1762)
  * __satfractunsqita:                     Fixed-point fractional library routines.
!                                                              (line 1768)
  * __satfractunsqiuda:                    Fixed-point fractional library routines.
!                                                              (line 1782)
  * __satfractunsqiudq:                    Fixed-point fractional library routines.
!                                                              (line 1776)
  * __satfractunsqiuha:                    Fixed-point fractional library routines.
!                                                              (line 1778)
  * __satfractunsqiuhq:                    Fixed-point fractional library routines.
!                                                              (line 1772)
  * __satfractunsqiuqq:                    Fixed-point fractional library routines.
!                                                              (line 1770)
  * __satfractunsqiusa:                    Fixed-point fractional library routines.
!                                                              (line 1780)
  * __satfractunsqiusq:                    Fixed-point fractional library routines.
!                                                              (line 1774)
  * __satfractunsqiuta:                    Fixed-point fractional library routines.
!                                                              (line 1784)
  * __satfractunssida:                     Fixed-point fractional library routines.
!                                                              (line 1818)
  * __satfractunssidq:                     Fixed-point fractional library routines.
!                                                              (line 1815)
  * __satfractunssiha:                     Fixed-point fractional library routines.
!                                                              (line 1816)
  * __satfractunssihq:                     Fixed-point fractional library routines.
!                                                              (line 1813)
  * __satfractunssiqq:                     Fixed-point fractional library routines.
!                                                              (line 1812)
  * __satfractunssisa:                     Fixed-point fractional library routines.
!                                                              (line 1817)
  * __satfractunssisq:                     Fixed-point fractional library routines.
!                                                              (line 1814)
  * __satfractunssita:                     Fixed-point fractional library routines.
!                                                              (line 1819)
  * __satfractunssiuda:                    Fixed-point fractional library routines.
!                                                              (line 1830)
  * __satfractunssiudq:                    Fixed-point fractional library routines.
!                                                              (line 1825)
  * __satfractunssiuha:                    Fixed-point fractional library routines.
!                                                              (line 1827)
  * __satfractunssiuhq:                    Fixed-point fractional library routines.
!                                                              (line 1822)
  * __satfractunssiuqq:                    Fixed-point fractional library routines.
!                                                              (line 1820)
  * __satfractunssiusa:                    Fixed-point fractional library routines.
!                                                              (line 1829)
  * __satfractunssiusq:                    Fixed-point fractional library routines.
!                                                              (line 1823)
  * __satfractunssiuta:                    Fixed-point fractional library routines.
!                                                              (line 1832)
  * __satfractunstida:                     Fixed-point fractional library routines.
!                                                              (line 1870)
  * __satfractunstidq:                     Fixed-point fractional library routines.
!                                                              (line 1865)
  * __satfractunstiha:                     Fixed-point fractional library routines.
!                                                              (line 1867)
  * __satfractunstihq:                     Fixed-point fractional library routines.
!                                                              (line 1862)
  * __satfractunstiqq:                     Fixed-point fractional library routines.
!                                                              (line 1860)
  * __satfractunstisa:                     Fixed-point fractional library routines.
!                                                              (line 1869)
  * __satfractunstisq:                     Fixed-point fractional library routines.
!                                                              (line 1863)
  * __satfractunstita:                     Fixed-point fractional library routines.
!                                                              (line 1872)
  * __satfractunstiuda:                    Fixed-point fractional library routines.
!                                                              (line 1886)
  * __satfractunstiudq:                    Fixed-point fractional library routines.
!                                                              (line 1880)
  * __satfractunstiuha:                    Fixed-point fractional library routines.
!                                                              (line 1882)
  * __satfractunstiuhq:                    Fixed-point fractional library routines.
!                                                              (line 1876)
  * __satfractunstiuqq:                    Fixed-point fractional library routines.
!                                                              (line 1874)
  * __satfractunstiusa:                    Fixed-point fractional library routines.
!                                                              (line 1884)
  * __satfractunstiusq:                    Fixed-point fractional library routines.
!                                                              (line 1878)
  * __satfractunstiuta:                    Fixed-point fractional library routines.
!                                                              (line 1888)
  * __satfractuqqda:                       Fixed-point fractional library routines.
!                                                              (line 1207)
  * __satfractuqqdq:                       Fixed-point fractional library routines.
!                                                              (line 1202)
  * __satfractuqqha:                       Fixed-point fractional library routines.
!                                                              (line 1204)
  * __satfractuqqhq:                       Fixed-point fractional library routines.
!                                                              (line 1199)
  * __satfractuqqqq:                       Fixed-point fractional library routines.
!                                                              (line 1197)
  * __satfractuqqsa:                       Fixed-point fractional library routines.
!                                                              (line 1206)
  * __satfractuqqsq:                       Fixed-point fractional library routines.
!                                                              (line 1200)
  * __satfractuqqta:                       Fixed-point fractional library routines.
!                                                              (line 1209)
  * __satfractuqquda:                      Fixed-point fractional library routines.
!                                                              (line 1221)
  * __satfractuqqudq2:                     Fixed-point fractional library routines.
!                                                              (line 1215)
  * __satfractuqquha:                      Fixed-point fractional library routines.
!                                                              (line 1217)
  * __satfractuqquhq2:                     Fixed-point fractional library routines.
!                                                              (line 1211)
  * __satfractuqqusa:                      Fixed-point fractional library routines.
!                                                              (line 1219)
  * __satfractuqqusq2:                     Fixed-point fractional library routines.
!                                                              (line 1213)
  * __satfractuqquta:                      Fixed-point fractional library routines.
!                                                              (line 1223)
  * __satfractusada:                       Fixed-point fractional library routines.
!                                                              (line 1334)
  * __satfractusadq:                       Fixed-point fractional library routines.
!                                                              (line 1331)
  * __satfractusaha:                       Fixed-point fractional library routines.
!                                                              (line 1332)
  * __satfractusahq:                       Fixed-point fractional library routines.
!                                                              (line 1329)
  * __satfractusaqq:                       Fixed-point fractional library routines.
!                                                              (line 1328)
  * __satfractusasa:                       Fixed-point fractional library routines.
!                                                              (line 1333)
  * __satfractusasq:                       Fixed-point fractional library routines.
!                                                              (line 1330)
  * __satfractusata:                       Fixed-point fractional library routines.
!                                                              (line 1335)
  * __satfractusauda2:                     Fixed-point fractional library routines.
!                                                              (line 1345)
  * __satfractusaudq:                      Fixed-point fractional library routines.
!                                                              (line 1341)
  * __satfractusauha2:                     Fixed-point fractional library routines.
!                                                              (line 1343)
  * __satfractusauhq:                      Fixed-point fractional library routines.
!                                                              (line 1338)
  * __satfractusauqq:                      Fixed-point fractional library routines.
!                                                              (line 1336)
  * __satfractusausq:                      Fixed-point fractional library routines.
!                                                              (line 1339)
  * __satfractusauta2:                     Fixed-point fractional library routines.
!                                                              (line 1347)
  * __satfractusqda:                       Fixed-point fractional library routines.
!                                                              (line 1255)
  * __satfractusqdq:                       Fixed-point fractional library routines.
!                                                              (line 1250)
  * __satfractusqha:                       Fixed-point fractional library routines.
!                                                              (line 1252)
  * __satfractusqhq:                       Fixed-point fractional library routines.
!                                                              (line 1248)
  * __satfractusqqq:                       Fixed-point fractional library routines.
!                                                              (line 1246)
  * __satfractusqsa:                       Fixed-point fractional library routines.
!                                                              (line 1254)
  * __satfractusqsq:                       Fixed-point fractional library routines.
!                                                              (line 1249)
  * __satfractusqta:                       Fixed-point fractional library routines.
!                                                              (line 1256)
  * __satfractusquda:                      Fixed-point fractional library routines.
!                                                              (line 1268)
  * __satfractusqudq2:                     Fixed-point fractional library routines.
!                                                              (line 1262)
  * __satfractusquha:                      Fixed-point fractional library routines.
!                                                              (line 1264)
  * __satfractusquhq2:                     Fixed-point fractional library routines.
!                                                              (line 1260)
  * __satfractusquqq2:                     Fixed-point fractional library routines.
!                                                              (line 1258)
  * __satfractusqusa:                      Fixed-point fractional library routines.
!                                                              (line 1266)
  * __satfractusquta:                      Fixed-point fractional library routines.
!                                                              (line 1270)
  * __satfractutada:                       Fixed-point fractional library routines.
!                                                              (line 1385)
  * __satfractutadq:                       Fixed-point fractional library routines.
!                                                              (line 1380)
  * __satfractutaha:                       Fixed-point fractional library routines.
!                                                              (line 1382)
  * __satfractutahq:                       Fixed-point fractional library routines.
!                                                              (line 1377)
  * __satfractutaqq:                       Fixed-point fractional library routines.
!                                                              (line 1375)
  * __satfractutasa:                       Fixed-point fractional library routines.
!                                                              (line 1384)
  * __satfractutasq:                       Fixed-point fractional library routines.
!                                                              (line 1378)
  * __satfractutata:                       Fixed-point fractional library routines.
!                                                              (line 1387)
  * __satfractutauda2:                     Fixed-point fractional library routines.
!                                                              (line 1401)
  * __satfractutaudq:                      Fixed-point fractional library routines.
!                                                              (line 1395)
  * __satfractutauha2:                     Fixed-point fractional library routines.
!                                                              (line 1397)
  * __satfractutauhq:                      Fixed-point fractional library routines.
!                                                              (line 1391)
  * __satfractutauqq:                      Fixed-point fractional library routines.
!                                                              (line 1389)
  * __satfractutausa2:                     Fixed-point fractional library routines.
!                                                              (line 1399)
  * __satfractutausq:                      Fixed-point fractional library routines.
!                                                              (line 1393)
  * __splitstack_find:                     Miscellaneous routines.
                                                               (line   15)
  * __ssaddda3:                            Fixed-point fractional library routines.
!                                                              (line   74)
  * __ssadddq3:                            Fixed-point fractional library routines.
!                                                              (line   69)
  * __ssaddha3:                            Fixed-point fractional library routines.
!                                                              (line   71)
  * __ssaddhq3:                            Fixed-point fractional library routines.
!                                                              (line   67)
  * __ssaddqq3:                            Fixed-point fractional library routines.
!                                                              (line   65)
  * __ssaddsa3:                            Fixed-point fractional library routines.
!                                                              (line   73)
  * __ssaddsq3:                            Fixed-point fractional library routines.
!                                                              (line   68)
  * __ssaddta3:                            Fixed-point fractional library routines.
!                                                              (line   75)
  * __ssashlda3:                           Fixed-point fractional library routines.
!                                                              (line  409)
  * __ssashldq3:                           Fixed-point fractional library routines.
!                                                              (line  405)
  * __ssashlha3:                           Fixed-point fractional library routines.
!                                                              (line  407)
  * __ssashlhq3:                           Fixed-point fractional library routines.
!                                                              (line  403)
  * __ssashlsa3:                           Fixed-point fractional library routines.
!                                                              (line  408)
  * __ssashlsq3:                           Fixed-point fractional library routines.
!                                                              (line  404)
  * __ssashlta3:                           Fixed-point fractional library routines.
!                                                              (line  410)
  * __ssdivda3:                            Fixed-point fractional library routines.
!                                                              (line  268)
  * __ssdivdq3:                            Fixed-point fractional library routines.
!                                                              (line  263)
  * __ssdivha3:                            Fixed-point fractional library routines.
!                                                              (line  265)
  * __ssdivhq3:                            Fixed-point fractional library routines.
!                                                              (line  261)
  * __ssdivqq3:                            Fixed-point fractional library routines.
!                                                              (line  259)
  * __ssdivsa3:                            Fixed-point fractional library routines.
!                                                              (line  267)
  * __ssdivsq3:                            Fixed-point fractional library routines.
!                                                              (line  262)
  * __ssdivta3:                            Fixed-point fractional library routines.
!                                                              (line  269)
  * __ssmulda3:                            Fixed-point fractional library routines.
!                                                              (line  200)
  * __ssmuldq3:                            Fixed-point fractional library routines.
!                                                              (line  195)
  * __ssmulha3:                            Fixed-point fractional library routines.
!                                                              (line  197)
  * __ssmulhq3:                            Fixed-point fractional library routines.
!                                                              (line  193)
  * __ssmulqq3:                            Fixed-point fractional library routines.
!                                                              (line  191)
  * __ssmulsa3:                            Fixed-point fractional library routines.
!                                                              (line  199)
  * __ssmulsq3:                            Fixed-point fractional library routines.
!                                                              (line  194)
  * __ssmulta3:                            Fixed-point fractional library routines.
!                                                              (line  201)
  * __ssnegda2:                            Fixed-point fractional library routines.
!                                                              (line  323)
  * __ssnegdq2:                            Fixed-point fractional library routines.
!                                                              (line  320)
  * __ssnegha2:                            Fixed-point fractional library routines.
!                                                              (line  321)
  * __ssneghq2:                            Fixed-point fractional library routines.
!                                                              (line  318)
  * __ssnegqq2:                            Fixed-point fractional library routines.
!                                                              (line  317)
  * __ssnegsa2:                            Fixed-point fractional library routines.
!                                                              (line  322)
  * __ssnegsq2:                            Fixed-point fractional library routines.
!                                                              (line  319)
  * __ssnegta2:                            Fixed-point fractional library routines.
!                                                              (line  324)
  * __sssubda3:                            Fixed-point fractional library routines.
!                                                              (line  136)
  * __sssubdq3:                            Fixed-point fractional library routines.
!                                                              (line  131)
  * __sssubha3:                            Fixed-point fractional library routines.
!                                                              (line  133)
  * __sssubhq3:                            Fixed-point fractional library routines.
!                                                              (line  129)
  * __sssubqq3:                            Fixed-point fractional library routines.
!                                                              (line  127)
  * __sssubsa3:                            Fixed-point fractional library routines.
!                                                              (line  135)
  * __sssubsq3:                            Fixed-point fractional library routines.
!                                                              (line  130)
  * __sssubta3:                            Fixed-point fractional library routines.
!                                                              (line  137)
  * __subda3:                              Fixed-point fractional library routines.
!                                                              (line  114)
  * __subdf3:                              Soft float library routines.
                                                               (line   30)
  * __subdq3:                              Fixed-point fractional library routines.
!                                                              (line  101)
  * __subha3:                              Fixed-point fractional library routines.
!                                                              (line  111)
  * __subhq3:                              Fixed-point fractional library routines.
!                                                              (line   99)
  * __subqq3:                              Fixed-point fractional library routines.
!                                                              (line   97)
  * __subsa3:                              Fixed-point fractional library routines.
!                                                              (line  113)
  * __subsf3:                              Soft float library routines.
                                                               (line   29)
  * __subsq3:                              Fixed-point fractional library routines.
!                                                              (line  100)
  * __subta3:                              Fixed-point fractional library routines.
!                                                              (line  115)
  * __subtf3:                              Soft float library routines.
                                                               (line   31)
  * __subuda3:                             Fixed-point fractional library routines.
!                                                              (line  121)
  * __subudq3:                             Fixed-point fractional library routines.
!                                                              (line  109)
  * __subuha3:                             Fixed-point fractional library routines.
!                                                              (line  117)
  * __subuhq3:                             Fixed-point fractional library routines.
!                                                              (line  105)
  * __subuqq3:                             Fixed-point fractional library routines.
!                                                              (line  103)
  * __subusa3:                             Fixed-point fractional library routines.
!                                                              (line  119)
  * __subusq3:                             Fixed-point fractional library routines.
!                                                              (line  107)
  * __subuta3:                             Fixed-point fractional library routines.
!                                                              (line  123)
  * __subvdi3:                             Integer library routines.
                                                               (line  122)
  * __subvsi3:                             Integer library routines.
--- 54650,55660 ----
  * __popcountti2:                         Integer library routines.
                                                               (line  157)
  * __powidf2:                             Soft float library routines.
                                                               (line  260)
+ * __powisf2:                             Soft float library routines.
+                                                              (line  259)
  * __powitf2:                             Soft float library routines.
!                                                              (line  261)
  * __powixf2:                             Soft float library routines.
!                                                              (line  262)
  * __satfractdadq:                        Fixed-point fractional library routines.
!                                                              (line 1152)
  * __satfractdaha2:                       Fixed-point fractional library routines.
!                                                              (line 1153)
  * __satfractdahq:                        Fixed-point fractional library routines.
!                                                              (line 1150)
  * __satfractdaqq:                        Fixed-point fractional library routines.
!                                                              (line 1149)
  * __satfractdasa2:                       Fixed-point fractional library routines.
!                                                              (line 1154)
  * __satfractdasq:                        Fixed-point fractional library routines.
!                                                              (line 1151)
  * __satfractdata2:                       Fixed-point fractional library routines.
!                                                              (line 1155)
  * __satfractdauda:                       Fixed-point fractional library routines.
!                                                              (line 1165)
  * __satfractdaudq:                       Fixed-point fractional library routines.
!                                                              (line 1160)
  * __satfractdauha:                       Fixed-point fractional library routines.
!                                                              (line 1162)
  * __satfractdauhq:                       Fixed-point fractional library routines.
!                                                              (line 1158)
  * __satfractdauqq:                       Fixed-point fractional library routines.
!                                                              (line 1156)
  * __satfractdausa:                       Fixed-point fractional library routines.
!                                                              (line 1164)
  * __satfractdausq:                       Fixed-point fractional library routines.
!                                                              (line 1159)
  * __satfractdauta:                       Fixed-point fractional library routines.
!                                                              (line 1166)
  * __satfractdfda:                        Fixed-point fractional library routines.
!                                                              (line 1505)
  * __satfractdfdq:                        Fixed-point fractional library routines.
!                                                              (line 1502)
  * __satfractdfha:                        Fixed-point fractional library routines.
!                                                              (line 1503)
  * __satfractdfhq:                        Fixed-point fractional library routines.
!                                                              (line 1500)
  * __satfractdfqq:                        Fixed-point fractional library routines.
!                                                              (line 1499)
  * __satfractdfsa:                        Fixed-point fractional library routines.
!                                                              (line 1504)
  * __satfractdfsq:                        Fixed-point fractional library routines.
!                                                              (line 1501)
  * __satfractdfta:                        Fixed-point fractional library routines.
!                                                              (line 1506)
  * __satfractdfuda:                       Fixed-point fractional library routines.
!                                                              (line 1514)
  * __satfractdfudq:                       Fixed-point fractional library routines.
!                                                              (line 1510)
  * __satfractdfuha:                       Fixed-point fractional library routines.
!                                                              (line 1512)
  * __satfractdfuhq:                       Fixed-point fractional library routines.
!                                                              (line 1508)
  * __satfractdfuqq:                       Fixed-point fractional library routines.
!                                                              (line 1507)
  * __satfractdfusa:                       Fixed-point fractional library routines.
!                                                              (line 1513)
  * __satfractdfusq:                       Fixed-point fractional library routines.
!                                                              (line 1509)
  * __satfractdfuta:                       Fixed-point fractional library routines.
!                                                              (line 1515)
  * __satfractdida:                        Fixed-point fractional library routines.
!                                                              (line 1455)
  * __satfractdidq:                        Fixed-point fractional library routines.
!                                                              (line 1452)
  * __satfractdiha:                        Fixed-point fractional library routines.
!                                                              (line 1453)
  * __satfractdihq:                        Fixed-point fractional library routines.
!                                                              (line 1450)
  * __satfractdiqq:                        Fixed-point fractional library routines.
!                                                              (line 1449)
  * __satfractdisa:                        Fixed-point fractional library routines.
!                                                              (line 1454)
  * __satfractdisq:                        Fixed-point fractional library routines.
!                                                              (line 1451)
  * __satfractdita:                        Fixed-point fractional library routines.
!                                                              (line 1456)
  * __satfractdiuda:                       Fixed-point fractional library routines.
!                                                              (line 1463)
  * __satfractdiudq:                       Fixed-point fractional library routines.
!                                                              (line 1460)
  * __satfractdiuha:                       Fixed-point fractional library routines.
!                                                              (line 1461)
  * __satfractdiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1458)
  * __satfractdiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1457)
  * __satfractdiusa:                       Fixed-point fractional library routines.
!                                                              (line 1462)
  * __satfractdiusq:                       Fixed-point fractional library routines.
!                                                              (line 1459)
  * __satfractdiuta:                       Fixed-point fractional library routines.
!                                                              (line 1464)
  * __satfractdqda:                        Fixed-point fractional library routines.
!                                                              (line 1097)
  * __satfractdqha:                        Fixed-point fractional library routines.
!                                                              (line 1095)
  * __satfractdqhq2:                       Fixed-point fractional library routines.
!                                                              (line 1093)
  * __satfractdqqq2:                       Fixed-point fractional library routines.
!                                                              (line 1092)
  * __satfractdqsa:                        Fixed-point fractional library routines.
!                                                              (line 1096)
  * __satfractdqsq2:                       Fixed-point fractional library routines.
!                                                              (line 1094)
  * __satfractdqta:                        Fixed-point fractional library routines.
!                                                              (line 1098)
  * __satfractdquda:                       Fixed-point fractional library routines.
!                                                              (line 1109)
  * __satfractdqudq:                       Fixed-point fractional library routines.
!                                                              (line 1104)
  * __satfractdquha:                       Fixed-point fractional library routines.
!                                                              (line 1106)
  * __satfractdquhq:                       Fixed-point fractional library routines.
!                                                              (line 1101)
  * __satfractdquqq:                       Fixed-point fractional library routines.
!                                                              (line 1099)
  * __satfractdqusa:                       Fixed-point fractional library routines.
!                                                              (line 1108)
  * __satfractdqusq:                       Fixed-point fractional library routines.
!                                                              (line 1102)
  * __satfractdquta:                       Fixed-point fractional library routines.
!                                                              (line 1111)
  * __satfracthada2:                       Fixed-point fractional library routines.
!                                                              (line 1118)
  * __satfracthadq:                        Fixed-point fractional library routines.
!                                                              (line 1116)
  * __satfracthahq:                        Fixed-point fractional library routines.
!                                                              (line 1114)
  * __satfracthaqq:                        Fixed-point fractional library routines.
!                                                              (line 1113)
  * __satfracthasa2:                       Fixed-point fractional library routines.
!                                                              (line 1117)
  * __satfracthasq:                        Fixed-point fractional library routines.
!                                                              (line 1115)
  * __satfracthata2:                       Fixed-point fractional library routines.
!                                                              (line 1119)
  * __satfracthauda:                       Fixed-point fractional library routines.
!                                                              (line 1130)
  * __satfracthaudq:                       Fixed-point fractional library routines.
!                                                              (line 1125)
  * __satfracthauha:                       Fixed-point fractional library routines.
!                                                              (line 1127)
  * __satfracthauhq:                       Fixed-point fractional library routines.
!                                                              (line 1122)
  * __satfracthauqq:                       Fixed-point fractional library routines.
!                                                              (line 1120)
  * __satfracthausa:                       Fixed-point fractional library routines.
!                                                              (line 1129)
  * __satfracthausq:                       Fixed-point fractional library routines.
!                                                              (line 1123)
  * __satfracthauta:                       Fixed-point fractional library routines.
!                                                              (line 1132)
  * __satfracthida:                        Fixed-point fractional library routines.
!                                                              (line 1423)
  * __satfracthidq:                        Fixed-point fractional library routines.
!                                                              (line 1420)
  * __satfracthiha:                        Fixed-point fractional library routines.
!                                                              (line 1421)
  * __satfracthihq:                        Fixed-point fractional library routines.
!                                                              (line 1418)
  * __satfracthiqq:                        Fixed-point fractional library routines.
!                                                              (line 1417)
  * __satfracthisa:                        Fixed-point fractional library routines.
!                                                              (line 1422)
  * __satfracthisq:                        Fixed-point fractional library routines.
!                                                              (line 1419)
  * __satfracthita:                        Fixed-point fractional library routines.
!                                                              (line 1424)
  * __satfracthiuda:                       Fixed-point fractional library routines.
!                                                              (line 1431)
  * __satfracthiudq:                       Fixed-point fractional library routines.
!                                                              (line 1428)
  * __satfracthiuha:                       Fixed-point fractional library routines.
!                                                              (line 1429)
  * __satfracthiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1426)
  * __satfracthiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1425)
  * __satfracthiusa:                       Fixed-point fractional library routines.
!                                                              (line 1430)
  * __satfracthiusq:                       Fixed-point fractional library routines.
!                                                              (line 1427)
  * __satfracthiuta:                       Fixed-point fractional library routines.
!                                                              (line 1432)
  * __satfracthqda:                        Fixed-point fractional library routines.
!                                                              (line 1063)
  * __satfracthqdq2:                       Fixed-point fractional library routines.
!                                                              (line 1060)
  * __satfracthqha:                        Fixed-point fractional library routines.
!                                                              (line 1061)
  * __satfracthqqq2:                       Fixed-point fractional library routines.
!                                                              (line 1058)
  * __satfracthqsa:                        Fixed-point fractional library routines.
!                                                              (line 1062)
  * __satfracthqsq2:                       Fixed-point fractional library routines.
!                                                              (line 1059)
  * __satfracthqta:                        Fixed-point fractional library routines.
!                                                              (line 1064)
  * __satfracthquda:                       Fixed-point fractional library routines.
!                                                              (line 1071)
  * __satfracthqudq:                       Fixed-point fractional library routines.
!                                                              (line 1068)
  * __satfracthquha:                       Fixed-point fractional library routines.
!                                                              (line 1069)
  * __satfracthquhq:                       Fixed-point fractional library routines.
!                                                              (line 1066)
  * __satfracthquqq:                       Fixed-point fractional library routines.
!                                                              (line 1065)
  * __satfracthqusa:                       Fixed-point fractional library routines.
!                                                              (line 1070)
  * __satfracthqusq:                       Fixed-point fractional library routines.
!                                                              (line 1067)
  * __satfracthquta:                       Fixed-point fractional library routines.
!                                                              (line 1072)
  * __satfractqida:                        Fixed-point fractional library routines.
!                                                              (line 1401)
  * __satfractqidq:                        Fixed-point fractional library routines.
!                                                              (line 1398)
  * __satfractqiha:                        Fixed-point fractional library routines.
!                                                              (line 1399)
  * __satfractqihq:                        Fixed-point fractional library routines.
!                                                              (line 1396)
  * __satfractqiqq:                        Fixed-point fractional library routines.
!                                                              (line 1395)
  * __satfractqisa:                        Fixed-point fractional library routines.
!                                                              (line 1400)
  * __satfractqisq:                        Fixed-point fractional library routines.
!                                                              (line 1397)
  * __satfractqita:                        Fixed-point fractional library routines.
!                                                              (line 1402)
  * __satfractqiuda:                       Fixed-point fractional library routines.
!                                                              (line 1413)
  * __satfractqiudq:                       Fixed-point fractional library routines.
!                                                              (line 1408)
  * __satfractqiuha:                       Fixed-point fractional library routines.
!                                                              (line 1410)
  * __satfractqiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1405)
  * __satfractqiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1403)
  * __satfractqiusa:                       Fixed-point fractional library routines.
!                                                              (line 1412)
  * __satfractqiusq:                       Fixed-point fractional library routines.
!                                                              (line 1406)
  * __satfractqiuta:                       Fixed-point fractional library routines.
!                                                              (line 1415)
  * __satfractqqda:                        Fixed-point fractional library routines.
!                                                              (line 1042)
  * __satfractqqdq2:                       Fixed-point fractional library routines.
!                                                              (line 1039)
  * __satfractqqha:                        Fixed-point fractional library routines.
!                                                              (line 1040)
  * __satfractqqhq2:                       Fixed-point fractional library routines.
!                                                              (line 1037)
  * __satfractqqsa:                        Fixed-point fractional library routines.
!                                                              (line 1041)
  * __satfractqqsq2:                       Fixed-point fractional library routines.
!                                                              (line 1038)
  * __satfractqqta:                        Fixed-point fractional library routines.
!                                                              (line 1043)
  * __satfractqquda:                       Fixed-point fractional library routines.
!                                                              (line 1054)
  * __satfractqqudq:                       Fixed-point fractional library routines.
!                                                              (line 1049)
  * __satfractqquha:                       Fixed-point fractional library routines.
!                                                              (line 1051)
  * __satfractqquhq:                       Fixed-point fractional library routines.
!                                                              (line 1046)
  * __satfractqquqq:                       Fixed-point fractional library routines.
!                                                              (line 1044)
  * __satfractqqusa:                       Fixed-point fractional library routines.
!                                                              (line 1053)
  * __satfractqqusq:                       Fixed-point fractional library routines.
!                                                              (line 1047)
  * __satfractqquta:                       Fixed-point fractional library routines.
!                                                              (line 1056)
  * __satfractsada2:                       Fixed-point fractional library routines.
!                                                              (line 1139)
  * __satfractsadq:                        Fixed-point fractional library routines.
!                                                              (line 1137)
  * __satfractsaha2:                       Fixed-point fractional library routines.
!                                                              (line 1138)
  * __satfractsahq:                        Fixed-point fractional library routines.
!                                                              (line 1135)
  * __satfractsaqq:                        Fixed-point fractional library routines.
!                                                              (line 1134)
  * __satfractsasq:                        Fixed-point fractional library routines.
!                                                              (line 1136)
  * __satfractsata2:                       Fixed-point fractional library routines.
!                                                              (line 1140)
  * __satfractsauda:                       Fixed-point fractional library routines.
!                                                              (line 1147)
  * __satfractsaudq:                       Fixed-point fractional library routines.
!                                                              (line 1144)
  * __satfractsauha:                       Fixed-point fractional library routines.
!                                                              (line 1145)
  * __satfractsauhq:                       Fixed-point fractional library routines.
!                                                              (line 1142)
  * __satfractsauqq:                       Fixed-point fractional library routines.
!                                                              (line 1141)
  * __satfractsausa:                       Fixed-point fractional library routines.
!                                                              (line 1146)
  * __satfractsausq:                       Fixed-point fractional library routines.
!                                                              (line 1143)
  * __satfractsauta:                       Fixed-point fractional library routines.
!                                                              (line 1148)
  * __satfractsfda:                        Fixed-point fractional library routines.
!                                                              (line 1489)
  * __satfractsfdq:                        Fixed-point fractional library routines.
!                                                              (line 1486)
  * __satfractsfha:                        Fixed-point fractional library routines.
!                                                              (line 1487)
  * __satfractsfhq:                        Fixed-point fractional library routines.
!                                                              (line 1484)
  * __satfractsfqq:                        Fixed-point fractional library routines.
!                                                              (line 1483)
  * __satfractsfsa:                        Fixed-point fractional library routines.
!                                                              (line 1488)
  * __satfractsfsq:                        Fixed-point fractional library routines.
!                                                              (line 1485)
  * __satfractsfta:                        Fixed-point fractional library routines.
!                                                              (line 1490)
  * __satfractsfuda:                       Fixed-point fractional library routines.
!                                                              (line 1497)
  * __satfractsfudq:                       Fixed-point fractional library routines.
!                                                              (line 1494)
  * __satfractsfuha:                       Fixed-point fractional library routines.
!                                                              (line 1495)
  * __satfractsfuhq:                       Fixed-point fractional library routines.
!                                                              (line 1492)
  * __satfractsfuqq:                       Fixed-point fractional library routines.
!                                                              (line 1491)
  * __satfractsfusa:                       Fixed-point fractional library routines.
!                                                              (line 1496)
  * __satfractsfusq:                       Fixed-point fractional library routines.
!                                                              (line 1493)
  * __satfractsfuta:                       Fixed-point fractional library routines.
!                                                              (line 1498)
  * __satfractsida:                        Fixed-point fractional library routines.
!                                                              (line 1439)
  * __satfractsidq:                        Fixed-point fractional library routines.
!                                                              (line 1436)
  * __satfractsiha:                        Fixed-point fractional library routines.
!                                                              (line 1437)
  * __satfractsihq:                        Fixed-point fractional library routines.
!                                                              (line 1434)
  * __satfractsiqq:                        Fixed-point fractional library routines.
!                                                              (line 1433)
  * __satfractsisa:                        Fixed-point fractional library routines.
!                                                              (line 1438)
  * __satfractsisq:                        Fixed-point fractional library routines.
!                                                              (line 1435)
  * __satfractsita:                        Fixed-point fractional library routines.
!                                                              (line 1440)
  * __satfractsiuda:                       Fixed-point fractional library routines.
!                                                              (line 1447)
  * __satfractsiudq:                       Fixed-point fractional library routines.
!                                                              (line 1444)
  * __satfractsiuha:                       Fixed-point fractional library routines.
!                                                              (line 1445)
  * __satfractsiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1442)
  * __satfractsiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1441)
  * __satfractsiusa:                       Fixed-point fractional library routines.
!                                                              (line 1446)
  * __satfractsiusq:                       Fixed-point fractional library routines.
!                                                              (line 1443)
  * __satfractsiuta:                       Fixed-point fractional library routines.
!                                                              (line 1448)
  * __satfractsqda:                        Fixed-point fractional library routines.
!                                                              (line 1078)
  * __satfractsqdq2:                       Fixed-point fractional library routines.
!                                                              (line 1075)
  * __satfractsqha:                        Fixed-point fractional library routines.
!                                                              (line 1076)
  * __satfractsqhq2:                       Fixed-point fractional library routines.
!                                                              (line 1074)
  * __satfractsqqq2:                       Fixed-point fractional library routines.
!                                                              (line 1073)
  * __satfractsqsa:                        Fixed-point fractional library routines.
!                                                              (line 1077)
  * __satfractsqta:                        Fixed-point fractional library routines.
!                                                              (line 1079)
  * __satfractsquda:                       Fixed-point fractional library routines.
!                                                              (line 1089)
  * __satfractsqudq:                       Fixed-point fractional library routines.
!                                                              (line 1084)
  * __satfractsquha:                       Fixed-point fractional library routines.
!                                                              (line 1086)
  * __satfractsquhq:                       Fixed-point fractional library routines.
!                                                              (line 1082)
  * __satfractsquqq:                       Fixed-point fractional library routines.
!                                                              (line 1080)
  * __satfractsqusa:                       Fixed-point fractional library routines.
!                                                              (line 1088)
  * __satfractsqusq:                       Fixed-point fractional library routines.
!                                                              (line 1083)
  * __satfractsquta:                       Fixed-point fractional library routines.
!                                                              (line 1090)
  * __satfracttada2:                       Fixed-point fractional library routines.
!                                                              (line 1174)
  * __satfracttadq:                        Fixed-point fractional library routines.
!                                                              (line 1171)
  * __satfracttaha2:                       Fixed-point fractional library routines.
!                                                              (line 1172)
  * __satfracttahq:                        Fixed-point fractional library routines.
!                                                              (line 1169)
  * __satfracttaqq:                        Fixed-point fractional library routines.
!                                                              (line 1168)
  * __satfracttasa2:                       Fixed-point fractional library routines.
!                                                              (line 1173)
  * __satfracttasq:                        Fixed-point fractional library routines.
!                                                              (line 1170)
  * __satfracttauda:                       Fixed-point fractional library routines.
!                                                              (line 1185)
  * __satfracttaudq:                       Fixed-point fractional library routines.
!                                                              (line 1180)
  * __satfracttauha:                       Fixed-point fractional library routines.
!                                                              (line 1182)
  * __satfracttauhq:                       Fixed-point fractional library routines.
!                                                              (line 1177)
  * __satfracttauqq:                       Fixed-point fractional library routines.
!                                                              (line 1175)
  * __satfracttausa:                       Fixed-point fractional library routines.
!                                                              (line 1184)
  * __satfracttausq:                       Fixed-point fractional library routines.
!                                                              (line 1178)
  * __satfracttauta:                       Fixed-point fractional library routines.
!                                                              (line 1187)
  * __satfracttida:                        Fixed-point fractional library routines.
!                                                              (line 1471)
  * __satfracttidq:                        Fixed-point fractional library routines.
!                                                              (line 1468)
  * __satfracttiha:                        Fixed-point fractional library routines.
!                                                              (line 1469)
  * __satfracttihq:                        Fixed-point fractional library routines.
!                                                              (line 1466)
  * __satfracttiqq:                        Fixed-point fractional library routines.
!                                                              (line 1465)
  * __satfracttisa:                        Fixed-point fractional library routines.
!                                                              (line 1470)
  * __satfracttisq:                        Fixed-point fractional library routines.
!                                                              (line 1467)
  * __satfracttita:                        Fixed-point fractional library routines.
!                                                              (line 1472)
  * __satfracttiuda:                       Fixed-point fractional library routines.
!                                                              (line 1480)
  * __satfracttiudq:                       Fixed-point fractional library routines.
!                                                              (line 1476)
  * __satfracttiuha:                       Fixed-point fractional library routines.
!                                                              (line 1478)
  * __satfracttiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1474)
  * __satfracttiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1473)
  * __satfracttiusa:                       Fixed-point fractional library routines.
!                                                              (line 1479)
  * __satfracttiusq:                       Fixed-point fractional library routines.
!                                                              (line 1475)
  * __satfracttiuta:                       Fixed-point fractional library routines.
!                                                              (line 1481)
  * __satfractudada:                       Fixed-point fractional library routines.
!                                                              (line 1350)
  * __satfractudadq:                       Fixed-point fractional library routines.
!                                                              (line 1345)
  * __satfractudaha:                       Fixed-point fractional library routines.
!                                                              (line 1347)
  * __satfractudahq:                       Fixed-point fractional library routines.
!                                                              (line 1343)
  * __satfractudaqq:                       Fixed-point fractional library routines.
!                                                              (line 1341)
  * __satfractudasa:                       Fixed-point fractional library routines.
!                                                              (line 1349)
  * __satfractudasq:                       Fixed-point fractional library routines.
!                                                              (line 1344)
  * __satfractudata:                       Fixed-point fractional library routines.
!                                                              (line 1351)
  * __satfractudaudq:                      Fixed-point fractional library routines.
!                                                              (line 1359)
  * __satfractudauha2:                     Fixed-point fractional library routines.
!                                                              (line 1361)
  * __satfractudauhq:                      Fixed-point fractional library routines.
!                                                              (line 1355)
  * __satfractudauqq:                      Fixed-point fractional library routines.
!                                                              (line 1353)
  * __satfractudausa2:                     Fixed-point fractional library routines.
!                                                              (line 1363)
  * __satfractudausq:                      Fixed-point fractional library routines.
!                                                              (line 1357)
  * __satfractudauta2:                     Fixed-point fractional library routines.
!                                                              (line 1365)
  * __satfractudqda:                       Fixed-point fractional library routines.
!                                                              (line 1274)
  * __satfractudqdq:                       Fixed-point fractional library routines.
!                                                              (line 1269)
  * __satfractudqha:                       Fixed-point fractional library routines.
!                                                              (line 1271)
  * __satfractudqhq:                       Fixed-point fractional library routines.
!                                                              (line 1266)
  * __satfractudqqq:                       Fixed-point fractional library routines.
!                                                              (line 1264)
  * __satfractudqsa:                       Fixed-point fractional library routines.
!                                                              (line 1273)
  * __satfractudqsq:                       Fixed-point fractional library routines.
!                                                              (line 1267)
  * __satfractudqta:                       Fixed-point fractional library routines.
!                                                              (line 1276)
  * __satfractudquda:                      Fixed-point fractional library routines.
!                                                              (line 1288)
  * __satfractudquha:                      Fixed-point fractional library routines.
!                                                              (line 1284)
  * __satfractudquhq2:                     Fixed-point fractional library routines.
!                                                              (line 1280)
  * __satfractudquqq2:                     Fixed-point fractional library routines.
!                                                              (line 1278)
  * __satfractudqusa:                      Fixed-point fractional library routines.
!                                                              (line 1286)
  * __satfractudqusq2:                     Fixed-point fractional library routines.
!                                                              (line 1282)
  * __satfractudquta:                      Fixed-point fractional library routines.
!                                                              (line 1290)
  * __satfractuhada:                       Fixed-point fractional library routines.
!                                                              (line 1302)
  * __satfractuhadq:                       Fixed-point fractional library routines.
!                                                              (line 1297)
  * __satfractuhaha:                       Fixed-point fractional library routines.
!                                                              (line 1299)
  * __satfractuhahq:                       Fixed-point fractional library routines.
!                                                              (line 1294)
  * __satfractuhaqq:                       Fixed-point fractional library routines.
!                                                              (line 1292)
  * __satfractuhasa:                       Fixed-point fractional library routines.
!                                                              (line 1301)
  * __satfractuhasq:                       Fixed-point fractional library routines.
!                                                              (line 1295)
  * __satfractuhata:                       Fixed-point fractional library routines.
!                                                              (line 1304)
  * __satfractuhauda2:                     Fixed-point fractional library routines.
!                                                              (line 1316)
  * __satfractuhaudq:                      Fixed-point fractional library routines.
!                                                              (line 1312)
  * __satfractuhauhq:                      Fixed-point fractional library routines.
!                                                              (line 1308)
  * __satfractuhauqq:                      Fixed-point fractional library routines.
!                                                              (line 1306)
  * __satfractuhausa2:                     Fixed-point fractional library routines.
!                                                              (line 1314)
  * __satfractuhausq:                      Fixed-point fractional library routines.
!                                                              (line 1310)
  * __satfractuhauta2:                     Fixed-point fractional library routines.
!                                                              (line 1318)
  * __satfractuhqda:                       Fixed-point fractional library routines.
!                                                              (line 1223)
  * __satfractuhqdq:                       Fixed-point fractional library routines.
!                                                              (line 1220)
  * __satfractuhqha:                       Fixed-point fractional library routines.
!                                                              (line 1221)
  * __satfractuhqhq:                       Fixed-point fractional library routines.
!                                                              (line 1218)
  * __satfractuhqqq:                       Fixed-point fractional library routines.
!                                                              (line 1217)
  * __satfractuhqsa:                       Fixed-point fractional library routines.
!                                                              (line 1222)
  * __satfractuhqsq:                       Fixed-point fractional library routines.
!                                                              (line 1219)
  * __satfractuhqta:                       Fixed-point fractional library routines.
!                                                              (line 1224)
  * __satfractuhquda:                      Fixed-point fractional library routines.
!                                                              (line 1234)
  * __satfractuhqudq2:                     Fixed-point fractional library routines.
!                                                              (line 1229)
  * __satfractuhquha:                      Fixed-point fractional library routines.
!                                                              (line 1231)
  * __satfractuhquqq2:                     Fixed-point fractional library routines.
!                                                              (line 1225)
  * __satfractuhqusa:                      Fixed-point fractional library routines.
!                                                              (line 1233)
  * __satfractuhqusq2:                     Fixed-point fractional library routines.
!                                                              (line 1227)
  * __satfractuhquta:                      Fixed-point fractional library routines.
!                                                              (line 1236)
  * __satfractunsdida:                     Fixed-point fractional library routines.
!                                                              (line 1833)
  * __satfractunsdidq:                     Fixed-point fractional library routines.
!                                                              (line 1829)
  * __satfractunsdiha:                     Fixed-point fractional library routines.
!                                                              (line 1831)
  * __satfractunsdihq:                     Fixed-point fractional library routines.
!                                                              (line 1827)
  * __satfractunsdiqq:                     Fixed-point fractional library routines.
!                                                              (line 1826)
  * __satfractunsdisa:                     Fixed-point fractional library routines.
!                                                              (line 1832)
  * __satfractunsdisq:                     Fixed-point fractional library routines.
!                                                              (line 1828)
  * __satfractunsdita:                     Fixed-point fractional library routines.
!                                                              (line 1834)
  * __satfractunsdiuda:                    Fixed-point fractional library routines.
!                                                              (line 1848)
  * __satfractunsdiudq:                    Fixed-point fractional library routines.
!                                                              (line 1842)
  * __satfractunsdiuha:                    Fixed-point fractional library routines.
!                                                              (line 1844)
  * __satfractunsdiuhq:                    Fixed-point fractional library routines.
!                                                              (line 1838)
  * __satfractunsdiuqq:                    Fixed-point fractional library routines.
!                                                              (line 1836)
  * __satfractunsdiusa:                    Fixed-point fractional library routines.
!                                                              (line 1846)
  * __satfractunsdiusq:                    Fixed-point fractional library routines.
!                                                              (line 1840)
  * __satfractunsdiuta:                    Fixed-point fractional library routines.
!                                                              (line 1850)
  * __satfractunshida:                     Fixed-point fractional library routines.
!                                                              (line 1785)
  * __satfractunshidq:                     Fixed-point fractional library routines.
!                                                              (line 1781)
  * __satfractunshiha:                     Fixed-point fractional library routines.
!                                                              (line 1783)
  * __satfractunshihq:                     Fixed-point fractional library routines.
!                                                              (line 1779)
  * __satfractunshiqq:                     Fixed-point fractional library routines.
!                                                              (line 1778)
  * __satfractunshisa:                     Fixed-point fractional library routines.
!                                                              (line 1784)
  * __satfractunshisq:                     Fixed-point fractional library routines.
!                                                              (line 1780)
  * __satfractunshita:                     Fixed-point fractional library routines.
!                                                              (line 1786)
  * __satfractunshiuda:                    Fixed-point fractional library routines.
!                                                              (line 1800)
  * __satfractunshiudq:                    Fixed-point fractional library routines.
!                                                              (line 1794)
  * __satfractunshiuha:                    Fixed-point fractional library routines.
!                                                              (line 1796)
  * __satfractunshiuhq:                    Fixed-point fractional library routines.
!                                                              (line 1790)
  * __satfractunshiuqq:                    Fixed-point fractional library routines.
!                                                              (line 1788)
  * __satfractunshiusa:                    Fixed-point fractional library routines.
!                                                              (line 1798)
  * __satfractunshiusq:                    Fixed-point fractional library routines.
!                                                              (line 1792)
  * __satfractunshiuta:                    Fixed-point fractional library routines.
!                                                              (line 1802)
  * __satfractunsqida:                     Fixed-point fractional library routines.
!                                                              (line 1759)
  * __satfractunsqidq:                     Fixed-point fractional library routines.
!                                                              (line 1755)
  * __satfractunsqiha:                     Fixed-point fractional library routines.
!                                                              (line 1757)
  * __satfractunsqihq:                     Fixed-point fractional library routines.
!                                                              (line 1753)
  * __satfractunsqiqq:                     Fixed-point fractional library routines.
!                                                              (line 1752)
  * __satfractunsqisa:                     Fixed-point fractional library routines.
!                                                              (line 1758)
  * __satfractunsqisq:                     Fixed-point fractional library routines.
!                                                              (line 1754)
  * __satfractunsqita:                     Fixed-point fractional library routines.
!                                                              (line 1760)
  * __satfractunsqiuda:                    Fixed-point fractional library routines.
!                                                              (line 1774)
  * __satfractunsqiudq:                    Fixed-point fractional library routines.
!                                                              (line 1768)
  * __satfractunsqiuha:                    Fixed-point fractional library routines.
!                                                              (line 1770)
  * __satfractunsqiuhq:                    Fixed-point fractional library routines.
!                                                              (line 1764)
  * __satfractunsqiuqq:                    Fixed-point fractional library routines.
!                                                              (line 1762)
  * __satfractunsqiusa:                    Fixed-point fractional library routines.
!                                                              (line 1772)
  * __satfractunsqiusq:                    Fixed-point fractional library routines.
!                                                              (line 1766)
  * __satfractunsqiuta:                    Fixed-point fractional library routines.
!                                                              (line 1776)
  * __satfractunssida:                     Fixed-point fractional library routines.
!                                                              (line 1810)
  * __satfractunssidq:                     Fixed-point fractional library routines.
!                                                              (line 1807)
  * __satfractunssiha:                     Fixed-point fractional library routines.
!                                                              (line 1808)
  * __satfractunssihq:                     Fixed-point fractional library routines.
!                                                              (line 1805)
  * __satfractunssiqq:                     Fixed-point fractional library routines.
!                                                              (line 1804)
  * __satfractunssisa:                     Fixed-point fractional library routines.
!                                                              (line 1809)
  * __satfractunssisq:                     Fixed-point fractional library routines.
!                                                              (line 1806)
  * __satfractunssita:                     Fixed-point fractional library routines.
!                                                              (line 1811)
  * __satfractunssiuda:                    Fixed-point fractional library routines.
!                                                              (line 1822)
  * __satfractunssiudq:                    Fixed-point fractional library routines.
!                                                              (line 1817)
  * __satfractunssiuha:                    Fixed-point fractional library routines.
!                                                              (line 1819)
  * __satfractunssiuhq:                    Fixed-point fractional library routines.
!                                                              (line 1814)
  * __satfractunssiuqq:                    Fixed-point fractional library routines.
!                                                              (line 1812)
  * __satfractunssiusa:                    Fixed-point fractional library routines.
!                                                              (line 1821)
  * __satfractunssiusq:                    Fixed-point fractional library routines.
!                                                              (line 1815)
  * __satfractunssiuta:                    Fixed-point fractional library routines.
!                                                              (line 1824)
  * __satfractunstida:                     Fixed-point fractional library routines.
!                                                              (line 1862)
  * __satfractunstidq:                     Fixed-point fractional library routines.
!                                                              (line 1857)
  * __satfractunstiha:                     Fixed-point fractional library routines.
!                                                              (line 1859)
  * __satfractunstihq:                     Fixed-point fractional library routines.
!                                                              (line 1854)
  * __satfractunstiqq:                     Fixed-point fractional library routines.
!                                                              (line 1852)
  * __satfractunstisa:                     Fixed-point fractional library routines.
!                                                              (line 1861)
  * __satfractunstisq:                     Fixed-point fractional library routines.
!                                                              (line 1855)
  * __satfractunstita:                     Fixed-point fractional library routines.
!                                                              (line 1864)
  * __satfractunstiuda:                    Fixed-point fractional library routines.
!                                                              (line 1878)
  * __satfractunstiudq:                    Fixed-point fractional library routines.
!                                                              (line 1872)
  * __satfractunstiuha:                    Fixed-point fractional library routines.
!                                                              (line 1874)
  * __satfractunstiuhq:                    Fixed-point fractional library routines.
!                                                              (line 1868)
  * __satfractunstiuqq:                    Fixed-point fractional library routines.
!                                                              (line 1866)
  * __satfractunstiusa:                    Fixed-point fractional library routines.
!                                                              (line 1876)
  * __satfractunstiusq:                    Fixed-point fractional library routines.
!                                                              (line 1870)
  * __satfractunstiuta:                    Fixed-point fractional library routines.
!                                                              (line 1880)
  * __satfractuqqda:                       Fixed-point fractional library routines.
!                                                              (line 1199)
  * __satfractuqqdq:                       Fixed-point fractional library routines.
!                                                              (line 1194)
  * __satfractuqqha:                       Fixed-point fractional library routines.
!                                                              (line 1196)
  * __satfractuqqhq:                       Fixed-point fractional library routines.
!                                                              (line 1191)
  * __satfractuqqqq:                       Fixed-point fractional library routines.
!                                                              (line 1189)
  * __satfractuqqsa:                       Fixed-point fractional library routines.
!                                                              (line 1198)
  * __satfractuqqsq:                       Fixed-point fractional library routines.
!                                                              (line 1192)
  * __satfractuqqta:                       Fixed-point fractional library routines.
!                                                              (line 1201)
  * __satfractuqquda:                      Fixed-point fractional library routines.
!                                                              (line 1213)
  * __satfractuqqudq2:                     Fixed-point fractional library routines.
!                                                              (line 1207)
  * __satfractuqquha:                      Fixed-point fractional library routines.
!                                                              (line 1209)
  * __satfractuqquhq2:                     Fixed-point fractional library routines.
!                                                              (line 1203)
  * __satfractuqqusa:                      Fixed-point fractional library routines.
!                                                              (line 1211)
  * __satfractuqqusq2:                     Fixed-point fractional library routines.
!                                                              (line 1205)
  * __satfractuqquta:                      Fixed-point fractional library routines.
!                                                              (line 1215)
  * __satfractusada:                       Fixed-point fractional library routines.
!                                                              (line 1326)
  * __satfractusadq:                       Fixed-point fractional library routines.
!                                                              (line 1323)
  * __satfractusaha:                       Fixed-point fractional library routines.
!                                                              (line 1324)
  * __satfractusahq:                       Fixed-point fractional library routines.
!                                                              (line 1321)
  * __satfractusaqq:                       Fixed-point fractional library routines.
!                                                              (line 1320)
  * __satfractusasa:                       Fixed-point fractional library routines.
!                                                              (line 1325)
  * __satfractusasq:                       Fixed-point fractional library routines.
!                                                              (line 1322)
  * __satfractusata:                       Fixed-point fractional library routines.
!                                                              (line 1327)
  * __satfractusauda2:                     Fixed-point fractional library routines.
!                                                              (line 1337)
  * __satfractusaudq:                      Fixed-point fractional library routines.
!                                                              (line 1333)
  * __satfractusauha2:                     Fixed-point fractional library routines.
!                                                              (line 1335)
  * __satfractusauhq:                      Fixed-point fractional library routines.
!                                                              (line 1330)
  * __satfractusauqq:                      Fixed-point fractional library routines.
!                                                              (line 1328)
  * __satfractusausq:                      Fixed-point fractional library routines.
!                                                              (line 1331)
  * __satfractusauta2:                     Fixed-point fractional library routines.
!                                                              (line 1339)
  * __satfractusqda:                       Fixed-point fractional library routines.
!                                                              (line 1247)
  * __satfractusqdq:                       Fixed-point fractional library routines.
!                                                              (line 1242)
  * __satfractusqha:                       Fixed-point fractional library routines.
!                                                              (line 1244)
  * __satfractusqhq:                       Fixed-point fractional library routines.
!                                                              (line 1240)
  * __satfractusqqq:                       Fixed-point fractional library routines.
!                                                              (line 1238)
  * __satfractusqsa:                       Fixed-point fractional library routines.
!                                                              (line 1246)
  * __satfractusqsq:                       Fixed-point fractional library routines.
!                                                              (line 1241)
  * __satfractusqta:                       Fixed-point fractional library routines.
!                                                              (line 1248)
  * __satfractusquda:                      Fixed-point fractional library routines.
!                                                              (line 1260)
  * __satfractusqudq2:                     Fixed-point fractional library routines.
!                                                              (line 1254)
  * __satfractusquha:                      Fixed-point fractional library routines.
!                                                              (line 1256)
  * __satfractusquhq2:                     Fixed-point fractional library routines.
!                                                              (line 1252)
  * __satfractusquqq2:                     Fixed-point fractional library routines.
!                                                              (line 1250)
  * __satfractusqusa:                      Fixed-point fractional library routines.
!                                                              (line 1258)
  * __satfractusquta:                      Fixed-point fractional library routines.
!                                                              (line 1262)
  * __satfractutada:                       Fixed-point fractional library routines.
!                                                              (line 1377)
  * __satfractutadq:                       Fixed-point fractional library routines.
!                                                              (line 1372)
  * __satfractutaha:                       Fixed-point fractional library routines.
!                                                              (line 1374)
  * __satfractutahq:                       Fixed-point fractional library routines.
!                                                              (line 1369)
  * __satfractutaqq:                       Fixed-point fractional library routines.
!                                                              (line 1367)
  * __satfractutasa:                       Fixed-point fractional library routines.
!                                                              (line 1376)
  * __satfractutasq:                       Fixed-point fractional library routines.
!                                                              (line 1370)
  * __satfractutata:                       Fixed-point fractional library routines.
!                                                              (line 1379)
  * __satfractutauda2:                     Fixed-point fractional library routines.
!                                                              (line 1393)
  * __satfractutaudq:                      Fixed-point fractional library routines.
!                                                              (line 1387)
  * __satfractutauha2:                     Fixed-point fractional library routines.
!                                                              (line 1389)
  * __satfractutauhq:                      Fixed-point fractional library routines.
!                                                              (line 1383)
  * __satfractutauqq:                      Fixed-point fractional library routines.
!                                                              (line 1381)
  * __satfractutausa2:                     Fixed-point fractional library routines.
!                                                              (line 1391)
  * __satfractutausq:                      Fixed-point fractional library routines.
!                                                              (line 1385)
  * __splitstack_find:                     Miscellaneous routines.
                                                               (line   15)
  * __ssaddda3:                            Fixed-point fractional library routines.
!                                                              (line   66)
  * __ssadddq3:                            Fixed-point fractional library routines.
!                                                              (line   61)
  * __ssaddha3:                            Fixed-point fractional library routines.
!                                                              (line   63)
  * __ssaddhq3:                            Fixed-point fractional library routines.
!                                                              (line   59)
  * __ssaddqq3:                            Fixed-point fractional library routines.
!                                                              (line   57)
  * __ssaddsa3:                            Fixed-point fractional library routines.
!                                                              (line   65)
  * __ssaddsq3:                            Fixed-point fractional library routines.
!                                                              (line   60)
  * __ssaddta3:                            Fixed-point fractional library routines.
!                                                              (line   67)
  * __ssashlda3:                           Fixed-point fractional library routines.
!                                                              (line  401)
  * __ssashldq3:                           Fixed-point fractional library routines.
!                                                              (line  397)
  * __ssashlha3:                           Fixed-point fractional library routines.
!                                                              (line  399)
  * __ssashlhq3:                           Fixed-point fractional library routines.
!                                                              (line  395)
  * __ssashlsa3:                           Fixed-point fractional library routines.
!                                                              (line  400)
  * __ssashlsq3:                           Fixed-point fractional library routines.
!                                                              (line  396)
  * __ssashlta3:                           Fixed-point fractional library routines.
!                                                              (line  402)
  * __ssdivda3:                            Fixed-point fractional library routines.
!                                                              (line  260)
  * __ssdivdq3:                            Fixed-point fractional library routines.
!                                                              (line  255)
  * __ssdivha3:                            Fixed-point fractional library routines.
!                                                              (line  257)
  * __ssdivhq3:                            Fixed-point fractional library routines.
!                                                              (line  253)
  * __ssdivqq3:                            Fixed-point fractional library routines.
!                                                              (line  251)
  * __ssdivsa3:                            Fixed-point fractional library routines.
!                                                              (line  259)
  * __ssdivsq3:                            Fixed-point fractional library routines.
!                                                              (line  254)
  * __ssdivta3:                            Fixed-point fractional library routines.
!                                                              (line  261)
  * __ssmulda3:                            Fixed-point fractional library routines.
!                                                              (line  192)
  * __ssmuldq3:                            Fixed-point fractional library routines.
!                                                              (line  187)
  * __ssmulha3:                            Fixed-point fractional library routines.
!                                                              (line  189)
  * __ssmulhq3:                            Fixed-point fractional library routines.
!                                                              (line  185)
  * __ssmulqq3:                            Fixed-point fractional library routines.
!                                                              (line  183)
  * __ssmulsa3:                            Fixed-point fractional library routines.
!                                                              (line  191)
  * __ssmulsq3:                            Fixed-point fractional library routines.
!                                                              (line  186)
  * __ssmulta3:                            Fixed-point fractional library routines.
!                                                              (line  193)
  * __ssnegda2:                            Fixed-point fractional library routines.
!                                                              (line  315)
  * __ssnegdq2:                            Fixed-point fractional library routines.
!                                                              (line  312)
  * __ssnegha2:                            Fixed-point fractional library routines.
!                                                              (line  313)
  * __ssneghq2:                            Fixed-point fractional library routines.
!                                                              (line  310)
  * __ssnegqq2:                            Fixed-point fractional library routines.
!                                                              (line  309)
  * __ssnegsa2:                            Fixed-point fractional library routines.
!                                                              (line  314)
  * __ssnegsq2:                            Fixed-point fractional library routines.
!                                                              (line  311)
  * __ssnegta2:                            Fixed-point fractional library routines.
!                                                              (line  316)
  * __sssubda3:                            Fixed-point fractional library routines.
!                                                              (line  128)
  * __sssubdq3:                            Fixed-point fractional library routines.
!                                                              (line  123)
  * __sssubha3:                            Fixed-point fractional library routines.
!                                                              (line  125)
  * __sssubhq3:                            Fixed-point fractional library routines.
!                                                              (line  121)
  * __sssubqq3:                            Fixed-point fractional library routines.
!                                                              (line  119)
  * __sssubsa3:                            Fixed-point fractional library routines.
!                                                              (line  127)
  * __sssubsq3:                            Fixed-point fractional library routines.
!                                                              (line  122)
  * __sssubta3:                            Fixed-point fractional library routines.
!                                                              (line  129)
  * __subda3:                              Fixed-point fractional library routines.
!                                                              (line  106)
  * __subdf3:                              Soft float library routines.
                                                               (line   30)
  * __subdq3:                              Fixed-point fractional library routines.
!                                                              (line   93)
  * __subha3:                              Fixed-point fractional library routines.
!                                                              (line  103)
  * __subhq3:                              Fixed-point fractional library routines.
!                                                              (line   91)
  * __subqq3:                              Fixed-point fractional library routines.
!                                                              (line   89)
  * __subsa3:                              Fixed-point fractional library routines.
!                                                              (line  105)
  * __subsf3:                              Soft float library routines.
                                                               (line   29)
  * __subsq3:                              Fixed-point fractional library routines.
!                                                              (line   92)
  * __subta3:                              Fixed-point fractional library routines.
!                                                              (line  107)
  * __subtf3:                              Soft float library routines.
                                                               (line   31)
  * __subuda3:                             Fixed-point fractional library routines.
!                                                              (line  113)
  * __subudq3:                             Fixed-point fractional library routines.
!                                                              (line  101)
  * __subuha3:                             Fixed-point fractional library routines.
!                                                              (line  109)
  * __subuhq3:                             Fixed-point fractional library routines.
!                                                              (line   97)
  * __subuqq3:                             Fixed-point fractional library routines.
!                                                              (line   95)
  * __subusa3:                             Fixed-point fractional library routines.
!                                                              (line  111)
  * __subusq3:                             Fixed-point fractional library routines.
!                                                              (line   99)
  * __subuta3:                             Fixed-point fractional library routines.
!                                                              (line  115)
  * __subvdi3:                             Integer library routines.
                                                               (line  122)
  * __subvsi3:                             Integer library routines.
*************** Concept Index
*** 55752,55772 ****
  * __udivti3:                             Integer library routines.
                                                               (line   54)
  * __udivuda3:                            Fixed-point fractional library routines.
!                                                              (line  252)
  * __udivudq3:                            Fixed-point fractional library routines.
!                                                              (line  246)
  * __udivuha3:                            Fixed-point fractional library routines.
!                                                              (line  248)
  * __udivuhq3:                            Fixed-point fractional library routines.
!                                                              (line  242)
  * __udivuqq3:                            Fixed-point fractional library routines.
!                                                              (line  240)
  * __udivusa3:                            Fixed-point fractional library routines.
!                                                              (line  250)
  * __udivusq3:                            Fixed-point fractional library routines.
!                                                              (line  244)
  * __udivuta3:                            Fixed-point fractional library routines.
!                                                              (line  254)
  * __umoddi3:                             Integer library routines.
                                                               (line   69)
  * __umodsi3:                             Integer library routines.
--- 55686,55706 ----
  * __udivti3:                             Integer library routines.
                                                               (line   54)
  * __udivuda3:                            Fixed-point fractional library routines.
!                                                              (line  244)
  * __udivudq3:                            Fixed-point fractional library routines.
!                                                              (line  238)
  * __udivuha3:                            Fixed-point fractional library routines.
!                                                              (line  240)
  * __udivuhq3:                            Fixed-point fractional library routines.
!                                                              (line  234)
  * __udivuqq3:                            Fixed-point fractional library routines.
!                                                              (line  232)
  * __udivusa3:                            Fixed-point fractional library routines.
!                                                              (line  242)
  * __udivusq3:                            Fixed-point fractional library routines.
!                                                              (line  236)
  * __udivuta3:                            Fixed-point fractional library routines.
!                                                              (line  246)
  * __umoddi3:                             Integer library routines.
                                                               (line   69)
  * __umodsi3:                             Integer library routines.
*************** Concept Index
*** 55774,55897 ****
  * __umodti3:                             Integer library routines.
                                                               (line   71)
  * __unorddf2:                            Soft float library routines.
-                                                              (line  201)
- * __unordsf2:                            Soft float library routines.
                                                               (line  200)
  * __unordtf2:                            Soft float library routines.
!                                                              (line  202)
  * __usadduda3:                           Fixed-point fractional library routines.
!                                                              (line   91)
  * __usaddudq3:                           Fixed-point fractional library routines.
!                                                              (line   85)
  * __usadduha3:                           Fixed-point fractional library routines.
!                                                              (line   87)
  * __usadduhq3:                           Fixed-point fractional library routines.
!                                                              (line   81)
  * __usadduqq3:                           Fixed-point fractional library routines.
!                                                              (line   79)
  * __usaddusa3:                           Fixed-point fractional library routines.
!                                                              (line   89)
  * __usaddusq3:                           Fixed-point fractional library routines.
!                                                              (line   83)
  * __usadduta3:                           Fixed-point fractional library routines.
!                                                              (line   93)
  * __usashluda3:                          Fixed-point fractional library routines.
!                                                              (line  427)
  * __usashludq3:                          Fixed-point fractional library routines.
!                                                              (line  421)
  * __usashluha3:                          Fixed-point fractional library routines.
!                                                              (line  423)
  * __usashluhq3:                          Fixed-point fractional library routines.
!                                                              (line  417)
  * __usashluqq3:                          Fixed-point fractional library routines.
!                                                              (line  415)
  * __usashlusa3:                          Fixed-point fractional library routines.
!                                                              (line  425)
  * __usashlusq3:                          Fixed-point fractional library routines.
!                                                              (line  419)
  * __usashluta3:                          Fixed-point fractional library routines.
!                                                              (line  429)
  * __usdivuda3:                           Fixed-point fractional library routines.
!                                                              (line  286)
  * __usdivudq3:                           Fixed-point fractional library routines.
!                                                              (line  280)
  * __usdivuha3:                           Fixed-point fractional library routines.
!                                                              (line  282)
  * __usdivuhq3:                           Fixed-point fractional library routines.
!                                                              (line  276)
  * __usdivuqq3:                           Fixed-point fractional library routines.
!                                                              (line  274)
  * __usdivusa3:                           Fixed-point fractional library routines.
!                                                              (line  284)
  * __usdivusq3:                           Fixed-point fractional library routines.
!                                                              (line  278)
  * __usdivuta3:                           Fixed-point fractional library routines.
!                                                              (line  288)
  * __usmuluda3:                           Fixed-point fractional library routines.
!                                                              (line  218)
  * __usmuludq3:                           Fixed-point fractional library routines.
!                                                              (line  212)
  * __usmuluha3:                           Fixed-point fractional library routines.
!                                                              (line  214)
  * __usmuluhq3:                           Fixed-point fractional library routines.
!                                                              (line  208)
  * __usmuluqq3:                           Fixed-point fractional library routines.
!                                                              (line  206)
  * __usmulusa3:                           Fixed-point fractional library routines.
!                                                              (line  216)
  * __usmulusq3:                           Fixed-point fractional library routines.
!                                                              (line  210)
  * __usmuluta3:                           Fixed-point fractional library routines.
!                                                              (line  220)
  * __usneguda2:                           Fixed-point fractional library routines.
!                                                              (line  337)
  * __usnegudq2:                           Fixed-point fractional library routines.
!                                                              (line  332)
  * __usneguha2:                           Fixed-point fractional library routines.
!                                                              (line  334)
  * __usneguhq2:                           Fixed-point fractional library routines.
!                                                              (line  329)
  * __usneguqq2:                           Fixed-point fractional library routines.
!                                                              (line  327)
  * __usnegusa2:                           Fixed-point fractional library routines.
!                                                              (line  336)
  * __usnegusq2:                           Fixed-point fractional library routines.
!                                                              (line  330)
  * __usneguta2:                           Fixed-point fractional library routines.
!                                                              (line  339)
  * __ussubuda3:                           Fixed-point fractional library routines.
!                                                              (line  154)
  * __ussubudq3:                           Fixed-point fractional library routines.
!                                                              (line  148)
  * __ussubuha3:                           Fixed-point fractional library routines.
!                                                              (line  150)
  * __ussubuhq3:                           Fixed-point fractional library routines.
!                                                              (line  144)
  * __ussubuqq3:                           Fixed-point fractional library routines.
!                                                              (line  142)
  * __ussubusa3:                           Fixed-point fractional library routines.
!                                                              (line  152)
  * __ussubusq3:                           Fixed-point fractional library routines.
!                                                              (line  146)
  * __ussubuta3:                           Fixed-point fractional library routines.
!                                                              (line  156)
  * abort:                                 Portability.        (line   20)
  * abs:                                   Arithmetic.         (line  206)
  * abs and attributes:                    Expressions.        (line   83)
  * absence_set:                           Processor pipeline description.
                                                               (line  223)
  * absM2 instruction pattern:             Standard Names.     (line 1255)
  * absolute value:                        Arithmetic.         (line  206)
  * ABSU_EXPR:                             Unary and Binary Expressions.
                                                               (line    6)
- * ABS_EXPR:                              Unary and Binary Expressions.
-                                                              (line    6)
  * access to operands:                    Accessors.          (line    6)
  * access to special operands:            Special Accessors.  (line    6)
  * accessors:                             Accessors.          (line    6)
  * ACCUMULATE_OUTGOING_ARGS:              Stack Arguments.    (line   51)
  * ACCUMULATE_OUTGOING_ARGS and stack frames: Function Entry. (line  140)
- * ACCUM_TYPE_SIZE:                       Type Layout.        (line   73)
  * acosM2 instruction pattern:            Standard Names.     (line 1342)
  * ADA_LONG_TYPE_SIZE:                    Type Layout.        (line   25)
  * Adding a new GIMPLE statement code:    Adding a new GIMPLE statement code.
--- 55708,55901 ----
  * __umodti3:                             Integer library routines.
                                                               (line   71)
  * __unorddf2:                            Soft float library routines.
                                                               (line  200)
+ * __unordsf2:                            Soft float library routines.
+                                                              (line  199)
  * __unordtf2:                            Soft float library routines.
!                                                              (line  201)
  * __usadduda3:                           Fixed-point fractional library routines.
!                                                              (line   83)
  * __usaddudq3:                           Fixed-point fractional library routines.
!                                                              (line   77)
  * __usadduha3:                           Fixed-point fractional library routines.
!                                                              (line   79)
  * __usadduhq3:                           Fixed-point fractional library routines.
!                                                              (line   73)
  * __usadduqq3:                           Fixed-point fractional library routines.
!                                                              (line   71)
  * __usaddusa3:                           Fixed-point fractional library routines.
!                                                              (line   81)
  * __usaddusq3:                           Fixed-point fractional library routines.
!                                                              (line   75)
  * __usadduta3:                           Fixed-point fractional library routines.
!                                                              (line   85)
  * __usashluda3:                          Fixed-point fractional library routines.
!                                                              (line  419)
  * __usashludq3:                          Fixed-point fractional library routines.
!                                                              (line  413)
  * __usashluha3:                          Fixed-point fractional library routines.
!                                                              (line  415)
  * __usashluhq3:                          Fixed-point fractional library routines.
!                                                              (line  409)
  * __usashluqq3:                          Fixed-point fractional library routines.
!                                                              (line  407)
  * __usashlusa3:                          Fixed-point fractional library routines.
!                                                              (line  417)
  * __usashlusq3:                          Fixed-point fractional library routines.
!                                                              (line  411)
  * __usashluta3:                          Fixed-point fractional library routines.
!                                                              (line  421)
  * __usdivuda3:                           Fixed-point fractional library routines.
!                                                              (line  278)
  * __usdivudq3:                           Fixed-point fractional library routines.
!                                                              (line  272)
  * __usdivuha3:                           Fixed-point fractional library routines.
!                                                              (line  274)
  * __usdivuhq3:                           Fixed-point fractional library routines.
!                                                              (line  268)
  * __usdivuqq3:                           Fixed-point fractional library routines.
!                                                              (line  266)
  * __usdivusa3:                           Fixed-point fractional library routines.
!                                                              (line  276)
  * __usdivusq3:                           Fixed-point fractional library routines.
!                                                              (line  270)
  * __usdivuta3:                           Fixed-point fractional library routines.
!                                                              (line  280)
  * __usmuluda3:                           Fixed-point fractional library routines.
!                                                              (line  210)
  * __usmuludq3:                           Fixed-point fractional library routines.
!                                                              (line  204)
  * __usmuluha3:                           Fixed-point fractional library routines.
!                                                              (line  206)
  * __usmuluhq3:                           Fixed-point fractional library routines.
!                                                              (line  200)
  * __usmuluqq3:                           Fixed-point fractional library routines.
!                                                              (line  198)
  * __usmulusa3:                           Fixed-point fractional library routines.
!                                                              (line  208)
  * __usmulusq3:                           Fixed-point fractional library routines.
!                                                              (line  202)
  * __usmuluta3:                           Fixed-point fractional library routines.
!                                                              (line  212)
  * __usneguda2:                           Fixed-point fractional library routines.
!                                                              (line  329)
  * __usnegudq2:                           Fixed-point fractional library routines.
!                                                              (line  324)
  * __usneguha2:                           Fixed-point fractional library routines.
!                                                              (line  326)
  * __usneguhq2:                           Fixed-point fractional library routines.
!                                                              (line  321)
  * __usneguqq2:                           Fixed-point fractional library routines.
!                                                              (line  319)
  * __usnegusa2:                           Fixed-point fractional library routines.
!                                                              (line  328)
  * __usnegusq2:                           Fixed-point fractional library routines.
!                                                              (line  322)
  * __usneguta2:                           Fixed-point fractional library routines.
!                                                              (line  331)
  * __ussubuda3:                           Fixed-point fractional library routines.
!                                                              (line  146)
  * __ussubudq3:                           Fixed-point fractional library routines.
!                                                              (line  140)
  * __ussubuha3:                           Fixed-point fractional library routines.
!                                                              (line  142)
  * __ussubuhq3:                           Fixed-point fractional library routines.
!                                                              (line  136)
  * __ussubuqq3:                           Fixed-point fractional library routines.
!                                                              (line  134)
  * __ussubusa3:                           Fixed-point fractional library routines.
!                                                              (line  144)
  * __ussubusq3:                           Fixed-point fractional library routines.
!                                                              (line  138)
  * __ussubuta3:                           Fixed-point fractional library routines.
!                                                              (line  148)
! * - in constraint:                       Modifiers.          (line  105)
! * -fsection-anchors:                     Special Accessors.  (line  117)
! * -fsection-anchors <1>:                 Anchored Addresses. (line    6)
! * : in constraint:                       Simple Constraints. (line  171)
! * ! in constraint:                       Multi-Alternative.  (line   48)
! * ? in constraint:                       Multi-Alternative.  (line   42)
! * "real" instructions, RTL SSA:          RTL SSA Basic Blocks.
!                                                              (line   11)
! * (gimple_stmt_iterator:                 GIMPLE API.         (line   31)
! * (nil):                                 RTL Objects.        (line   76)
! * @ in instruction pattern names:        Parameterized Names.
!                                                              (line    6)
! * * in constraint:                       Modifiers.          (line   83)
! * * in template:                         Output Statement.   (line   29)
! * *gimple_build_asm_vec:                 GIMPLE_ASM.         (line    6)
! * *gimple_build_assign:                  GIMPLE_ASSIGN.      (line    6)
! * *gimple_build_assign <1>:              GIMPLE_ASSIGN.      (line   18)
! * *gimple_build_assign <2>:              GIMPLE_ASSIGN.      (line   29)
! * *gimple_build_assign <3>:              GIMPLE_ASSIGN.      (line   35)
! * *gimple_build_bind:                    GIMPLE_BIND.        (line    6)
! * *gimple_build_call:                    GIMPLE_CALL.        (line    6)
! * *gimple_build_call_from_tree:          GIMPLE_CALL.        (line   15)
! * *gimple_build_call_vec:                GIMPLE_CALL.        (line   25)
! * *gimple_build_catch:                   GIMPLE_CATCH.       (line    6)
! * *gimple_build_cond:                    GIMPLE_COND.        (line    6)
! * *gimple_build_cond_from_tree:          GIMPLE_COND.        (line   14)
! * *gimple_build_debug_bind:              GIMPLE_DEBUG.       (line    6)
! * *gimple_build_eh_filter:               GIMPLE_EH_FILTER.   (line    6)
! * *gimple_build_goto:                    GIMPLE_GOTO.        (line    6)
! * *gimple_build_label:                   GIMPLE_LABEL.       (line    6)
! * *gimple_build_omp_atomic_load:         GIMPLE_OMP_ATOMIC_LOAD.
!                                                              (line    6)
! * *gimple_build_omp_atomic_store:        GIMPLE_OMP_ATOMIC_STORE.
!                                                              (line    6)
! * *gimple_build_omp_continue:            GIMPLE_OMP_CONTINUE.
!                                                              (line    6)
! * *gimple_build_omp_critical:            GIMPLE_OMP_CRITICAL.
!                                                              (line    6)
! * *gimple_build_omp_for:                 GIMPLE_OMP_FOR.     (line    6)
! * *gimple_build_omp_parallel:            GIMPLE_OMP_PARALLEL.
!                                                              (line    6)
! * *gimple_build_omp_sections:            GIMPLE_OMP_SECTIONS.
!                                                              (line    6)
! * *gimple_build_omp_single:              GIMPLE_OMP_SINGLE.  (line    6)
! * *gimple_build_resx:                    GIMPLE_RESX.        (line    6)
! * *gimple_build_return:                  GIMPLE_RETURN.      (line    6)
! * *gimple_build_switch:                  GIMPLE_SWITCH.      (line    6)
! * *gimple_build_try:                     GIMPLE_TRY.         (line    6)
! * /c in RTL dump:                        Flags.              (line  230)
! * /f in RTL dump:                        Flags.              (line  238)
! * /i in RTL dump:                        Flags.              (line  283)
! * /j in RTL dump:                        Flags.              (line  295)
! * /s in RTL dump:                        Flags.              (line  254)
! * /u in RTL dump:                        Flags.              (line  307)
! * /v in RTL dump:                        Flags.              (line  339)
! * \:                                     Output Template.    (line   46)
! * & in constraint:                       Modifiers.          (line   25)
! * # in constraint:                       Modifiers.          (line   78)
! * # in template:                         Output Template.    (line   66)
! * #pragma:                               Misc.               (line  422)
! * % in constraint:                       Modifiers.          (line   52)
! * % in GTY option:                       GTY Options.        (line   18)
! * % in template:                         Output Template.    (line    6)
! * ^ in constraint:                       Multi-Alternative.  (line   53)
! * + in constraint:                       Modifiers.          (line   12)
! * < in constraint:                       Simple Constraints. (line   47)
! * = in constraint:                       Modifiers.          (line    8)
! * > in constraint:                       Simple Constraints. (line   59)
! * $ in constraint:                       Multi-Alternative.  (line   57)
! * 0 in constraint:                       Simple Constraints. (line  128)
  * abort:                                 Portability.        (line   20)
  * abs:                                   Arithmetic.         (line  206)
  * abs and attributes:                    Expressions.        (line   83)
+ * ABS_EXPR:                              Unary and Binary Expressions.
+                                                              (line    6)
  * absence_set:                           Processor pipeline description.
                                                               (line  223)
  * absM2 instruction pattern:             Standard Names.     (line 1255)
  * absolute value:                        Arithmetic.         (line  206)
  * ABSU_EXPR:                             Unary and Binary Expressions.
                                                               (line    6)
  * access to operands:                    Accessors.          (line    6)
  * access to special operands:            Special Accessors.  (line    6)
  * accessors:                             Accessors.          (line    6)
+ * ACCUM_TYPE_SIZE:                       Type Layout.        (line   73)
  * ACCUMULATE_OUTGOING_ARGS:              Stack Arguments.    (line   51)
  * ACCUMULATE_OUTGOING_ARGS and stack frames: Function Entry. (line  140)
  * acosM2 instruction pattern:            Standard Names.     (line 1342)
  * ADA_LONG_TYPE_SIZE:                    Type Layout.        (line   25)
  * Adding a new GIMPLE statement code:    Adding a new GIMPLE statement code.
*************** Concept Index
*** 55900,55923 ****
  * addM3 instruction pattern:             Standard Names.     (line  662)
  * addMODEcc instruction pattern:         Standard Names.     (line 2164)
  * addptrM3 instruction pattern:          Standard Names.     (line  728)
  * address constraints:                   Simple Constraints. (line  162)
- * addressing modes:                      Addressing Modes.   (line    6)
  * address_operand:                       Machine-Independent Predicates.
                                                               (line   62)
  * address_operand <1>:                   Simple Constraints. (line  166)
! * addr_diff_vec:                         Side Effects.       (line  305)
! * addr_diff_vec, length of:              Insn Lengths.       (line   26)
! * ADDR_EXPR:                             Storage References. (line    6)
! * addr_vec:                              Side Effects.       (line  300)
! * addr_vec, length of:                   Insn Lengths.       (line   26)
  * addvM4 instruction pattern:            Standard Names.     (line  697)
  * ADJUST_FIELD_ALIGN:                    Storage Layout.     (line  239)
  * ADJUST_INSN_LENGTH:                    Insn Lengths.       (line   41)
  * ADJUST_REG_ALLOC_ORDER:                Allocation Order.   (line   22)
  * aggregates as return values:           Aggregate Return.   (line    6)
  * alias:                                 Alias analysis.     (line    6)
- * allocate_stack instruction pattern:    Standard Names.     (line 2669)
  * ALL_REGS:                              Register Classes.   (line   17)
  * alternate entry points:                Insns.              (line  146)
  * analyzer:                              Static Analyzer.    (line    6)
  * analyzer, debugging:                   Debugging the Analyzer.
--- 55904,55927 ----
  * addM3 instruction pattern:             Standard Names.     (line  662)
  * addMODEcc instruction pattern:         Standard Names.     (line 2164)
  * addptrM3 instruction pattern:          Standard Names.     (line  728)
+ * addr_diff_vec:                         Side Effects.       (line  304)
+ * addr_diff_vec, length of:              Insn Lengths.       (line   26)
+ * ADDR_EXPR:                             Storage References. (line    6)
+ * addr_vec:                              Side Effects.       (line  299)
+ * addr_vec, length of:                   Insn Lengths.       (line   26)
  * address constraints:                   Simple Constraints. (line  162)
  * address_operand:                       Machine-Independent Predicates.
                                                               (line   62)
  * address_operand <1>:                   Simple Constraints. (line  166)
! * addressing modes:                      Addressing Modes.   (line    6)
  * addvM4 instruction pattern:            Standard Names.     (line  697)
  * ADJUST_FIELD_ALIGN:                    Storage Layout.     (line  239)
  * ADJUST_INSN_LENGTH:                    Insn Lengths.       (line   41)
  * ADJUST_REG_ALLOC_ORDER:                Allocation Order.   (line   22)
  * aggregates as return values:           Aggregate Return.   (line    6)
  * alias:                                 Alias analysis.     (line    6)
  * ALL_REGS:                              Register Classes.   (line   17)
+ * allocate_stack instruction pattern:    Standard Names.     (line 2669)
  * alternate entry points:                Insns.              (line  146)
  * analyzer:                              Static Analyzer.    (line    6)
  * analyzer, debugging:                   Debugging the Analyzer.
*************** Concept Index
*** 55934,55957 ****
                                                               (line    6)
  * annotations:                           Annotations.        (line    6)
  * APPLY_RESULT_SIZE:                     Scalar Return.      (line  112)
- * ARGS_GROW_DOWNWARD:                    Frame Layout.       (line   30)
- * arguments in registers:                Register Arguments. (line    6)
- * arguments on stack:                    Stack Arguments.    (line    6)
  * ARG_POINTER_CFA_OFFSET:                Frame Layout.       (line  213)
  * ARG_POINTER_REGNUM:                    Frame Registers.    (line   40)
  * ARG_POINTER_REGNUM and virtual registers: Regs and Memory. (line   65)
  * arg_pointer_rtx:                       Frame Registers.    (line  104)
  * arithmetic library:                    Soft float library routines.
                                                               (line    6)
  * arithmetic shift:                      Arithmetic.         (line  179)
  * arithmetic shift with signed saturation: Arithmetic.       (line  179)
  * arithmetic shift with unsigned saturation: Arithmetic.     (line  179)
- * arithmetic, in RTL:                    Arithmetic.         (line    6)
  * ARITHMETIC_TYPE_P:                     Types for C++.      (line   59)
  * array:                                 Types.              (line    6)
  * ARRAY_RANGE_REF:                       Storage References. (line    6)
  * ARRAY_REF:                             Storage References. (line    6)
  * ARRAY_TYPE:                            Types.              (line    6)
  * ashift:                                Arithmetic.         (line  179)
  * ashift and attributes:                 Expressions.        (line   83)
  * ashiftrt:                              Arithmetic.         (line  196)
--- 55938,55962 ----
                                                               (line    6)
  * annotations:                           Annotations.        (line    6)
  * APPLY_RESULT_SIZE:                     Scalar Return.      (line  112)
  * ARG_POINTER_CFA_OFFSET:                Frame Layout.       (line  213)
  * ARG_POINTER_REGNUM:                    Frame Registers.    (line   40)
  * ARG_POINTER_REGNUM and virtual registers: Regs and Memory. (line   65)
  * arg_pointer_rtx:                       Frame Registers.    (line  104)
+ * ARGS_GROW_DOWNWARD:                    Frame Layout.       (line   30)
+ * arguments in registers:                Register Arguments. (line    6)
+ * arguments on stack:                    Stack Arguments.    (line    6)
  * arithmetic library:                    Soft float library routines.
                                                               (line    6)
  * arithmetic shift:                      Arithmetic.         (line  179)
  * arithmetic shift with signed saturation: Arithmetic.       (line  179)
  * arithmetic shift with unsigned saturation: Arithmetic.     (line  179)
  * ARITHMETIC_TYPE_P:                     Types for C++.      (line   59)
+ * arithmetic, in RTL:                    Arithmetic.         (line    6)
  * array:                                 Types.              (line    6)
  * ARRAY_RANGE_REF:                       Storage References. (line    6)
  * ARRAY_REF:                             Storage References. (line    6)
  * ARRAY_TYPE:                            Types.              (line    6)
+ * AS_NEEDS_DASH_FOR_PIPED_INPUT:         Driver.             (line   88)
  * ashift:                                Arithmetic.         (line  179)
  * ashift and attributes:                 Expressions.        (line   83)
  * ashiftrt:                              Arithmetic.         (line  196)
*************** Concept Index
*** 55974,55996 ****
  * asm_fprintf:                           Instruction Output. (line  150)
  * ASM_FPRINTF_EXTENSIONS:                Instruction Output. (line  160)
  * ASM_GENERATE_INTERNAL_LABEL:           Label Output.       (line  410)
! * asm_input:                             Side Effects.       (line  287)
  * asm_input and /v:                      Flags.              (line   65)
  * ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX:     Exception Handling. (line   91)
- * asm_noperands:                         Insns.              (line  328)
  * ASM_NO_SKIP_IN_TEXT:                   Alignment Output.   (line   59)
  * asm_operands and /v:                   Flags.              (line   65)
  * asm_operands, RTL sharing:             Sharing.            (line   46)
  * asm_operands, usage:                   Assembler.          (line    6)
  * ASM_OUTPUT_ADDR_DIFF_ELT:              Dispatch Tables.    (line    8)
  * ASM_OUTPUT_ADDR_VEC_ELT:               Dispatch Tables.    (line   25)
  * ASM_OUTPUT_ALIGN:                      Alignment Output.   (line   66)
  * ASM_OUTPUT_ALIGNED_BSS:                Uninitialized Data. (line   45)
  * ASM_OUTPUT_ALIGNED_COMMON:             Uninitialized Data. (line   29)
  * ASM_OUTPUT_ALIGNED_DECL_COMMON:        Uninitialized Data. (line   36)
  * ASM_OUTPUT_ALIGNED_DECL_LOCAL:         Uninitialized Data. (line   89)
  * ASM_OUTPUT_ALIGNED_LOCAL:              Uninitialized Data. (line   82)
- * ASM_OUTPUT_ALIGN_WITH_NOP:             Alignment Output.   (line   71)
  * ASM_OUTPUT_ASCII:                      Data Output.        (line   60)
  * ASM_OUTPUT_CASE_END:                   Dispatch Tables.    (line   50)
  * ASM_OUTPUT_CASE_LABEL:                 Dispatch Tables.    (line   37)
--- 55979,56001 ----
  * asm_fprintf:                           Instruction Output. (line  150)
  * ASM_FPRINTF_EXTENSIONS:                Instruction Output. (line  160)
  * ASM_GENERATE_INTERNAL_LABEL:           Label Output.       (line  410)
! * asm_input:                             Side Effects.       (line  286)
  * asm_input and /v:                      Flags.              (line   65)
  * ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX:     Exception Handling. (line   91)
  * ASM_NO_SKIP_IN_TEXT:                   Alignment Output.   (line   59)
+ * asm_noperands:                         Insns.              (line  328)
  * asm_operands and /v:                   Flags.              (line   65)
  * asm_operands, RTL sharing:             Sharing.            (line   46)
  * asm_operands, usage:                   Assembler.          (line    6)
  * ASM_OUTPUT_ADDR_DIFF_ELT:              Dispatch Tables.    (line    8)
  * ASM_OUTPUT_ADDR_VEC_ELT:               Dispatch Tables.    (line   25)
  * ASM_OUTPUT_ALIGN:                      Alignment Output.   (line   66)
+ * ASM_OUTPUT_ALIGN_WITH_NOP:             Alignment Output.   (line   71)
  * ASM_OUTPUT_ALIGNED_BSS:                Uninitialized Data. (line   45)
  * ASM_OUTPUT_ALIGNED_COMMON:             Uninitialized Data. (line   29)
  * ASM_OUTPUT_ALIGNED_DECL_COMMON:        Uninitialized Data. (line   36)
  * ASM_OUTPUT_ALIGNED_DECL_LOCAL:         Uninitialized Data. (line   89)
  * ASM_OUTPUT_ALIGNED_LOCAL:              Uninitialized Data. (line   82)
  * ASM_OUTPUT_ASCII:                      Data Output.        (line   60)
  * ASM_OUTPUT_CASE_END:                   Dispatch Tables.    (line   50)
  * ASM_OUTPUT_CASE_LABEL:                 Dispatch Tables.    (line   37)
*************** Concept Index
*** 56009,56016 ****
  * ASM_OUTPUT_FUNCTION_LABEL:             Label Output.       (line   16)
  * ASM_OUTPUT_INTERNAL_LABEL:             Label Output.       (line   27)
  * ASM_OUTPUT_LABEL:                      Label Output.       (line    8)
- * ASM_OUTPUT_LABELREF:                   Label Output.       (line  349)
  * ASM_OUTPUT_LABEL_REF:                  Label Output.       (line  371)
  * ASM_OUTPUT_LOCAL:                      Uninitialized Data. (line   69)
  * ASM_OUTPUT_MAX_SKIP_ALIGN:             Alignment Output.   (line   75)
  * ASM_OUTPUT_MEASURED_SIZE:              Label Output.       (line   51)
--- 56014,56021 ----
  * ASM_OUTPUT_FUNCTION_LABEL:             Label Output.       (line   16)
  * ASM_OUTPUT_INTERNAL_LABEL:             Label Output.       (line   27)
  * ASM_OUTPUT_LABEL:                      Label Output.       (line    8)
  * ASM_OUTPUT_LABEL_REF:                  Label Output.       (line  371)
+ * ASM_OUTPUT_LABELREF:                   Label Output.       (line  349)
  * ASM_OUTPUT_LOCAL:                      Uninitialized Data. (line   69)
  * ASM_OUTPUT_MAX_SKIP_ALIGN:             Alignment Output.   (line   75)
  * ASM_OUTPUT_MEASURED_SIZE:              Label Output.       (line   51)
*************** Concept Index
*** 56025,56056 ****
  * ASM_OUTPUT_SPECIAL_POOL_ENTRY:         Data Output.        (line   93)
  * ASM_OUTPUT_SYMBOL_REF:                 Label Output.       (line  364)
  * ASM_OUTPUT_TYPE_DIRECTIVE:             Label Output.       (line   98)
- * ASM_OUTPUT_WEAKREF:                    Label Output.       (line  259)
  * ASM_OUTPUT_WEAK_ALIAS:                 Label Output.       (line  473)
  * ASM_PREFERRED_EH_DATA_FORMAT:          Exception Handling. (line   77)
  * ASM_SPEC:                              Driver.             (line   73)
  * ASM_WEAKEN_DECL:                       Label Output.       (line  251)
  * ASM_WEAKEN_LABEL:                      Label Output.       (line  238)
  * assembler format:                      File Framework.     (line    6)
  * assembler instructions in RTL:         Assembler.          (line    6)
  * ASSEMBLER_DIALECT:                     Instruction Output. (line  172)
- * assemble_name:                         Label Output.       (line    8)
- * assemble_name_raw:                     Label Output.       (line   27)
  * assigning attribute values to insns:   Tagging Insns.      (line    6)
  * ASSUME_EXTENDED_UNWIND_CONTEXT:        Frame Registers.    (line  163)
  * asterisk in template:                  Output Statement.   (line   29)
- * AS_NEEDS_DASH_FOR_PIPED_INPUT:         Driver.             (line   88)
  * atan2M3 instruction pattern:           Standard Names.     (line 1460)
  * atanM2 instruction pattern:            Standard Names.     (line 1348)
! * atomic:                                GTY Options.        (line  246)
! * atomic_addMODE instruction pattern:    Standard Names.     (line 3093)
! * atomic_add_fetchMODE instruction pattern: Standard Names.  (line 3122)
  * atomic_add_fetch_cmp_0MODE instruction pattern: Standard Names.
                                                               (line 3175)
! * atomic_andMODE instruction pattern:    Standard Names.     (line 3093)
! * atomic_and_fetchMODE instruction pattern: Standard Names.  (line 3122)
  * atomic_and_fetch_cmp_0MODE instruction pattern: Standard Names.
                                                               (line 3175)
  * atomic_bit_test_and_complementMODE instruction pattern: Standard Names.
                                                               (line 3150)
  * atomic_bit_test_and_resetMODE instruction pattern: Standard Names.
--- 56030,56060 ----
  * ASM_OUTPUT_SPECIAL_POOL_ENTRY:         Data Output.        (line   93)
  * ASM_OUTPUT_SYMBOL_REF:                 Label Output.       (line  364)
  * ASM_OUTPUT_TYPE_DIRECTIVE:             Label Output.       (line   98)
  * ASM_OUTPUT_WEAK_ALIAS:                 Label Output.       (line  473)
+ * ASM_OUTPUT_WEAKREF:                    Label Output.       (line  259)
  * ASM_PREFERRED_EH_DATA_FORMAT:          Exception Handling. (line   77)
  * ASM_SPEC:                              Driver.             (line   73)
  * ASM_WEAKEN_DECL:                       Label Output.       (line  251)
  * ASM_WEAKEN_LABEL:                      Label Output.       (line  238)
+ * assemble_name:                         Label Output.       (line    8)
+ * assemble_name_raw:                     Label Output.       (line   27)
  * assembler format:                      File Framework.     (line    6)
  * assembler instructions in RTL:         Assembler.          (line    6)
  * ASSEMBLER_DIALECT:                     Instruction Output. (line  172)
  * assigning attribute values to insns:   Tagging Insns.      (line    6)
  * ASSUME_EXTENDED_UNWIND_CONTEXT:        Frame Registers.    (line  163)
  * asterisk in template:                  Output Statement.   (line   29)
  * atan2M3 instruction pattern:           Standard Names.     (line 1460)
  * atanM2 instruction pattern:            Standard Names.     (line 1348)
! * atomic:                                GTY Options.        (line  245)
  * atomic_add_fetch_cmp_0MODE instruction pattern: Standard Names.
                                                               (line 3175)
! * atomic_add_fetchMODE instruction pattern: Standard Names.  (line 3122)
! * atomic_addMODE instruction pattern:    Standard Names.     (line 3093)
  * atomic_and_fetch_cmp_0MODE instruction pattern: Standard Names.
                                                               (line 3175)
+ * atomic_and_fetchMODE instruction pattern: Standard Names.  (line 3122)
+ * atomic_andMODE instruction pattern:    Standard Names.     (line 3093)
  * atomic_bit_test_and_complementMODE instruction pattern: Standard Names.
                                                               (line 3150)
  * atomic_bit_test_and_resetMODE instruction pattern: Standard Names.
*************** Concept Index
*** 56067,56099 ****
  * atomic_fetch_subMODE instruction pattern: Standard Names.  (line 3107)
  * atomic_fetch_xorMODE instruction pattern: Standard Names.  (line 3107)
  * atomic_loadMODE instruction pattern:   Standard Names.     (line 3060)
- * atomic_nandMODE instruction pattern:   Standard Names.     (line 3093)
  * atomic_nand_fetchMODE instruction pattern: Standard Names. (line 3122)
! * atomic_orMODE instruction pattern:     Standard Names.     (line 3093)
! * atomic_or_fetchMODE instruction pattern: Standard Names.   (line 3122)
  * atomic_or_fetch_cmp_0MODE instruction pattern: Standard Names.
                                                               (line 3175)
  * atomic_storeMODE instruction pattern:  Standard Names.     (line 3070)
- * atomic_subMODE instruction pattern:    Standard Names.     (line 3093)
- * atomic_sub_fetchMODE instruction pattern: Standard Names.  (line 3122)
  * atomic_sub_fetch_cmp_0MODE instruction pattern: Standard Names.
                                                               (line 3175)
  * atomic_test_and_set instruction pattern: Standard Names.   (line 3139)
- * atomic_xorMODE instruction pattern:    Standard Names.     (line 3093)
- * atomic_xor_fetchMODE instruction pattern: Standard Names.  (line 3122)
  * atomic_xor_fetch_cmp_0MODE instruction pattern: Standard Names.
                                                               (line 3175)
  * attr:                                  Expressions.        (line  163)
  * attr <1>:                              Tagging Insns.      (line   54)
  * attribute expressions:                 Expressions.        (line    6)
  * attribute specifications:              Attr Example.       (line    6)
  * attribute specifications example:      Attr Example.       (line    6)
  * attributes:                            Attributes.         (line    6)
  * attributes, defining:                  Defining Attributes.
                                                               (line    6)
  * attributes, target-specific:           Target Attributes.  (line    6)
- * ATTRIBUTE_ALIGNED_VALUE:               Storage Layout.     (line  221)
- * attr_flag:                             Expressions.        (line  138)
  * autoincrement addressing, availability: Portability.       (line   20)
  * autoincrement/decrement addressing:    Simple Constraints. (line   30)
  * automata_option:                       Processor pipeline description.
--- 56071,56103 ----
  * atomic_fetch_subMODE instruction pattern: Standard Names.  (line 3107)
  * atomic_fetch_xorMODE instruction pattern: Standard Names.  (line 3107)
  * atomic_loadMODE instruction pattern:   Standard Names.     (line 3060)
  * atomic_nand_fetchMODE instruction pattern: Standard Names. (line 3122)
! * atomic_nandMODE instruction pattern:   Standard Names.     (line 3093)
  * atomic_or_fetch_cmp_0MODE instruction pattern: Standard Names.
                                                               (line 3175)
+ * atomic_or_fetchMODE instruction pattern: Standard Names.   (line 3122)
+ * atomic_orMODE instruction pattern:     Standard Names.     (line 3093)
  * atomic_storeMODE instruction pattern:  Standard Names.     (line 3070)
  * atomic_sub_fetch_cmp_0MODE instruction pattern: Standard Names.
                                                               (line 3175)
+ * atomic_sub_fetchMODE instruction pattern: Standard Names.  (line 3122)
+ * atomic_subMODE instruction pattern:    Standard Names.     (line 3093)
  * atomic_test_and_set instruction pattern: Standard Names.   (line 3139)
  * atomic_xor_fetch_cmp_0MODE instruction pattern: Standard Names.
                                                               (line 3175)
+ * atomic_xor_fetchMODE instruction pattern: Standard Names.  (line 3122)
+ * atomic_xorMODE instruction pattern:    Standard Names.     (line 3093)
  * attr:                                  Expressions.        (line  163)
  * attr <1>:                              Tagging Insns.      (line   54)
+ * attr_flag:                             Expressions.        (line  138)
  * attribute expressions:                 Expressions.        (line    6)
  * attribute specifications:              Attr Example.       (line    6)
  * attribute specifications example:      Attr Example.       (line    6)
+ * ATTRIBUTE_ALIGNED_VALUE:               Storage Layout.     (line  221)
  * attributes:                            Attributes.         (line    6)
  * attributes, defining:                  Defining Attributes.
                                                               (line    6)
  * attributes, target-specific:           Target Attributes.  (line    6)
  * autoincrement addressing, availability: Portability.       (line   20)
  * autoincrement/decrement addressing:    Simple Constraints. (line   30)
  * automata_option:                       Processor pipeline description.
*************** Concept Index
*** 56117,56127 ****
  * basic blocks, RTL SSA:                 RTL SSA Basic Blocks.
                                                               (line    6)
  * Basic Statements:                      Basic Statements.   (line    6)
- * basic-block.h:                         Control Flow.       (line    6)
  * basic_block:                           RTL SSA Basic Blocks.
                                                               (line    6)
  * basic_block <1>:                       Basic Blocks.       (line    6)
  * BASIC_BLOCK:                           Basic Blocks.       (line   14)
  * BB_HEAD, BB_END:                       Maintaining the CFG.
                                                               (line   76)
  * bb_seq:                                GIMPLE sequences.   (line   72)
--- 56121,56131 ----
  * basic blocks, RTL SSA:                 RTL SSA Basic Blocks.
                                                               (line    6)
  * Basic Statements:                      Basic Statements.   (line    6)
  * basic_block:                           RTL SSA Basic Blocks.
                                                               (line    6)
  * basic_block <1>:                       Basic Blocks.       (line    6)
  * BASIC_BLOCK:                           Basic Blocks.       (line   14)
+ * basic-block.h:                         Control Flow.       (line    6)
  * BB_HEAD, BB_END:                       Maintaining the CFG.
                                                               (line   76)
  * bb_seq:                                GIMPLE sequences.   (line   72)
*************** Concept Index
*** 56131,56136 ****
--- 56135,56148 ----
  * BIND_EXPR:                             Unary and Binary Expressions.
                                                               (line    6)
  * BINFO_TYPE:                            Classes.            (line    6)
+ * BIT_AND_EXPR:                          Unary and Binary Expressions.
+                                                              (line    6)
+ * BIT_IOR_EXPR:                          Unary and Binary Expressions.
+                                                              (line    6)
+ * BIT_NOT_EXPR:                          Unary and Binary Expressions.
+                                                              (line    6)
+ * BIT_XOR_EXPR:                          Unary and Binary Expressions.
+                                                              (line    6)
  * bit-fields:                            Bit-Fields.         (line    6)
  * BITFIELD_NBYTES_LIMITED:               Storage Layout.     (line  459)
  * BITINT_TYPE:                           Types.              (line    6)
*************** Concept Index
*** 56143,56168 ****
  * bitwise exclusive-or:                  Arithmetic.         (line  174)
  * bitwise inclusive-or:                  Arithmetic.         (line  169)
  * bitwise logical-and:                   Arithmetic.         (line  164)
- * BIT_AND_EXPR:                          Unary and Binary Expressions.
-                                                              (line    6)
- * BIT_IOR_EXPR:                          Unary and Binary Expressions.
-                                                              (line    6)
- * BIT_NOT_EXPR:                          Unary and Binary Expressions.
-                                                              (line    6)
- * BIT_XOR_EXPR:                          Unary and Binary Expressions.
-                                                              (line    6)
  * BLKmode:                               Machine Modes.      (line  184)
  * BLKmode, and function return values:   Calls.              (line   23)
- * blockage instruction pattern:          Standard Names.     (line 2869)
- * Blocks:                                Blocks.             (line    6)
  * BLOCK_FOR_INSN, gimple_bb:             Maintaining the CFG.
                                                               (line   28)
  * BLOCK_REG_PADDING:                     Register Arguments. (line  232)
  * BND32mode:                             Machine Modes.      (line  209)
  * BND64mode:                             Machine Modes.      (line  209)
  * bool:                                  Misc.               (line 1012)
- * BOOLEAN_TYPE:                          Types.              (line    6)
  * BOOL_TYPE_SIZE:                        Type Layout.        (line   43)
  * branch prediction:                     Profile information.
                                                               (line   24)
  * BRANCH_COST:                           Costs.              (line  169)
--- 56155,56172 ----
  * bitwise exclusive-or:                  Arithmetic.         (line  174)
  * bitwise inclusive-or:                  Arithmetic.         (line  169)
  * bitwise logical-and:                   Arithmetic.         (line  164)
  * BLKmode:                               Machine Modes.      (line  184)
  * BLKmode, and function return values:   Calls.              (line   23)
  * BLOCK_FOR_INSN, gimple_bb:             Maintaining the CFG.
                                                               (line   28)
  * BLOCK_REG_PADDING:                     Register Arguments. (line  232)
+ * blockage instruction pattern:          Standard Names.     (line 2869)
+ * Blocks:                                Blocks.             (line    6)
  * BND32mode:                             Machine Modes.      (line  209)
  * BND64mode:                             Machine Modes.      (line  209)
  * bool:                                  Misc.               (line 1012)
  * BOOL_TYPE_SIZE:                        Type Layout.        (line   43)
+ * BOOLEAN_TYPE:                          Types.              (line    6)
  * branch prediction:                     Profile information.
                                                               (line   24)
  * BRANCH_COST:                           Costs.              (line  169)
*************** Concept Index
*** 56192,56201 ****
  * builtin_setjmp_receiver instruction pattern: Standard Names.
                                                               (line 2757)
  * builtin_setjmp_setup instruction pattern: Standard Names.  (line 2746)
  * BYTES_BIG_ENDIAN:                      Storage Layout.     (line   23)
  * BYTES_BIG_ENDIAN, effect on subreg:    Regs and Memory.    (line  229)
- * byte_mode:                             Machine Modes.      (line  468)
  * C statements for assembler output:     Output Statement.   (line    6)
  * cache:                                 GTY Options.        (line  164)
  * cadd270M3 instruction pattern:         Standard Names.     (line 1582)
  * cadd90M3 instruction pattern:          Standard Names.     (line 1560)
--- 56196,56208 ----
  * builtin_setjmp_receiver instruction pattern: Standard Names.
                                                               (line 2757)
  * builtin_setjmp_setup instruction pattern: Standard Names.  (line 2746)
+ * byte_mode:                             Machine Modes.      (line  468)
  * BYTES_BIG_ENDIAN:                      Storage Layout.     (line   23)
  * BYTES_BIG_ENDIAN, effect on subreg:    Regs and Memory.    (line  229)
  * C statements for assembler output:     Output Statement.   (line    6)
+ * C_COMMON_OVERRIDE_OPTIONS:             Run-time Target.    (line  136)
+ * c_register_pragma:                     Misc.               (line  442)
+ * c_register_pragma_with_expansion:      Misc.               (line  444)
  * cache:                                 GTY Options.        (line  164)
  * cadd270M3 instruction pattern:         Standard Names.     (line 1582)
  * cadd90M3 instruction pattern:          Standard Names.     (line 1560)
*************** Concept Index
*** 56203,56225 ****
  * call <1>:                              Side Effects.       (line   85)
  * call instruction pattern:              Standard Names.     (line 2418)
  * call usage:                            Calls.              (line   10)
- * call, in call_insn:                    Flags.              (line  129)
- * call, in mem:                          Flags.              (line   70)
- * call-clobbered register:               Register Basics.    (line   35)
- * call-clobbered register <1>:           Register Basics.    (line   50)
- * call-clobbered register <2>:           Register Basics.    (line   58)
- * call-clobbered register <3>:           Register Basics.    (line   76)
- * call-saved register:                   Register Basics.    (line   35)
- * call-saved register <1>:               Register Basics.    (line   50)
- * call-saved register <2>:               Register Basics.    (line   58)
- * call-saved register <3>:               Register Basics.    (line   76)
- * call-used register:                    Register Basics.    (line   35)
- * call-used register <1>:                Register Basics.    (line   50)
- * call-used register <2>:                Register Basics.    (line   58)
- * call-used register <3>:                Register Basics.    (line   76)
- * callback:                              GTY Options.        (line  111)
- * calling conventions:                   Stack and Calling.  (line    6)
- * calling functions in RTL:              Calls.              (line    6)
  * CALL_EXPR:                             Unary and Binary Expressions.
                                                               (line    6)
  * call_insn:                             Insns.              (line   95)
--- 56210,56215 ----
*************** Concept Index
*** 56241,56272 ****
  * call_used_regs:                        Register Basics.    (line  102)
  * call_value instruction pattern:        Standard Names.     (line 2442)
  * call_value_pop instruction pattern:    Standard Names.     (line 2450)
  * canadian:                              Configure Terms.    (line    6)
  * canonicalization of instructions:      Insn Canonicalizations.
                                                               (line    6)
  * canonicalize_funcptr_for_compare instruction pattern: Standard Names.
                                                               (line 2601)
- * can_create_pseudo_p:                   Standard Names.     (line   75)
- * can_fallthru:                          Basic Blocks.       (line   67)
  * caret:                                 Multi-Alternative.  (line   53)
  * caret <1>:                             Guidelines for Diagnostics.
                                                               (line  183)
- * casesi instruction pattern:            Standard Names.     (line 2543)
  * CASE_VECTOR_MODE:                      Misc.               (line   26)
  * CASE_VECTOR_PC_RELATIVE:               Misc.               (line   39)
  * CASE_VECTOR_SHORTEN_MODE:              Misc.               (line   30)
  * cbranchMODE4 instruction pattern:      Standard Names.     (line 2407)
- * CC1PLUS_SPEC:                          Driver.             (line   63)
  * CC1_SPEC:                              Driver.             (line   55)
  * CCmode:                                Machine Modes.      (line  178)
  * CCmode <1>:                            MODE_CC Condition Codes.
                                                               (line    6)
  * CDImode:                               Machine Modes.      (line  203)
- * ceilM2 instruction pattern:            Standard Names.     (line 1496)
  * CEIL_DIV_EXPR:                         Unary and Binary Expressions.
                                                               (line    6)
  * CEIL_MOD_EXPR:                         Unary and Binary Expressions.
                                                               (line    6)
  * CFA_FRAME_BASE_OFFSET:                 Frame Layout.       (line  245)
  * CFG verification:                      Maintaining the CFG.
                                                               (line  116)
--- 56231,56279 ----
  * call_used_regs:                        Register Basics.    (line  102)
  * call_value instruction pattern:        Standard Names.     (line 2442)
  * call_value_pop instruction pattern:    Standard Names.     (line 2450)
+ * call-clobbered register:               Register Basics.    (line   35)
+ * call-clobbered register <1>:           Register Basics.    (line   50)
+ * call-clobbered register <2>:           Register Basics.    (line   58)
+ * call-clobbered register <3>:           Register Basics.    (line   76)
+ * call-saved register:                   Register Basics.    (line   35)
+ * call-saved register <1>:               Register Basics.    (line   50)
+ * call-saved register <2>:               Register Basics.    (line   58)
+ * call-saved register <3>:               Register Basics.    (line   76)
+ * call-used register:                    Register Basics.    (line   35)
+ * call-used register <1>:                Register Basics.    (line   50)
+ * call-used register <2>:                Register Basics.    (line   58)
+ * call-used register <3>:                Register Basics.    (line   76)
+ * call, in call_insn:                    Flags.              (line  129)
+ * call, in mem:                          Flags.              (line   70)
+ * callback:                              GTY Options.        (line  111)
+ * calling conventions:                   Stack and Calling.  (line    6)
+ * calling functions in RTL:              Calls.              (line    6)
+ * can_create_pseudo_p:                   Standard Names.     (line   75)
+ * can_fallthru:                          Basic Blocks.       (line   67)
  * canadian:                              Configure Terms.    (line    6)
  * canonicalization of instructions:      Insn Canonicalizations.
                                                               (line    6)
  * canonicalize_funcptr_for_compare instruction pattern: Standard Names.
                                                               (line 2601)
  * caret:                                 Multi-Alternative.  (line   53)
  * caret <1>:                             Guidelines for Diagnostics.
                                                               (line  183)
  * CASE_VECTOR_MODE:                      Misc.               (line   26)
  * CASE_VECTOR_PC_RELATIVE:               Misc.               (line   39)
  * CASE_VECTOR_SHORTEN_MODE:              Misc.               (line   30)
+ * casesi instruction pattern:            Standard Names.     (line 2543)
  * cbranchMODE4 instruction pattern:      Standard Names.     (line 2407)
  * CC1_SPEC:                              Driver.             (line   55)
+ * CC1PLUS_SPEC:                          Driver.             (line   63)
  * CCmode:                                Machine Modes.      (line  178)
  * CCmode <1>:                            MODE_CC Condition Codes.
                                                               (line    6)
  * CDImode:                               Machine Modes.      (line  203)
  * CEIL_DIV_EXPR:                         Unary and Binary Expressions.
                                                               (line    6)
  * CEIL_MOD_EXPR:                         Unary and Binary Expressions.
                                                               (line    6)
+ * ceilM2 instruction pattern:            Standard Names.     (line 1496)
  * CFA_FRAME_BASE_OFFSET:                 Frame Layout.       (line  245)
  * CFG verification:                      Maintaining the CFG.
                                                               (line  116)
*************** Concept Index
*** 56285,56298 ****
  * CHImode:                               Machine Modes.      (line  203)
  * class definitions, register:           Register Classes.   (line    6)
  * class preference constraints:          Class Preferences.  (line    6)
  * class, scope:                          Classes.            (line    6)
  * classes of RTX codes:                  RTL Classes.        (line    6)
  * CLASSTYPE_DECLARED_CLASS:              Classes.            (line    6)
  * CLASSTYPE_HAS_MUTABLE:                 Classes.            (line   82)
  * CLASSTYPE_NON_POD_P:                   Classes.            (line   87)
- * CLASS_MAX_NREGS:                       Register Classes.   (line  555)
- * CLASS_TYPE_P:                          Types for C++.      (line   63)
- * Cleanups:                              Cleanups.           (line    6)
  * CLEANUP_DECL:                          Statements for C and C++.
                                                               (line    6)
  * CLEANUP_EXPR:                          Statements for C and C++.
--- 56292,56304 ----
  * CHImode:                               Machine Modes.      (line  203)
  * class definitions, register:           Register Classes.   (line    6)
  * class preference constraints:          Class Preferences.  (line    6)
+ * CLASS_MAX_NREGS:                       Register Classes.   (line  555)
+ * CLASS_TYPE_P:                          Types for C++.      (line   63)
  * class, scope:                          Classes.            (line    6)
  * classes of RTX codes:                  RTL Classes.        (line    6)
  * CLASSTYPE_DECLARED_CLASS:              Classes.            (line    6)
  * CLASSTYPE_HAS_MUTABLE:                 Classes.            (line   82)
  * CLASSTYPE_NON_POD_P:                   Classes.            (line   87)
  * CLEANUP_DECL:                          Statements for C and C++.
                                                               (line    6)
  * CLEANUP_EXPR:                          Statements for C and C++.
*************** Concept Index
*** 56301,56306 ****
--- 56307,56313 ----
                                                               (line    6)
  * CLEANUP_STMT:                          Statements for C and C++.
                                                               (line    6)
+ * Cleanups:                              Cleanups.           (line    6)
  * clear_cache instruction pattern:       Standard Names.     (line 3275)
  * CLEAR_INSN_CACHE:                      Trampolines.        (line  168)
  * CLEAR_RATIO:                           Costs.              (line  297)
*************** Concept Index
*** 56308,56349 ****
  * clrsb:                                 Arithmetic.         (line  221)
  * clrsbM2 instruction pattern:           Standard Names.     (line 1738)
  * clz:                                   Arithmetic.         (line  228)
- * clzM2 instruction pattern:             Standard Names.     (line 1754)
  * CLZ_DEFINED_VALUE_AT_ZERO:             Misc.               (line  340)
! * cmlaM4 instruction pattern:            Standard Names.     (line 1604)
  * cmla_conjM4 instruction pattern:       Standard Names.     (line 1624)
! * cmlsM4 instruction pattern:            Standard Names.     (line 1645)
  * cmls_conjM4 instruction pattern:       Standard Names.     (line 1665)
  * cmpmemM instruction pattern:           Standard Names.     (line 1958)
  * cmpstrM instruction pattern:           Standard Names.     (line 1937)
  * cmpstrnM instruction pattern:          Standard Names.     (line 1924)
- * cmulM4 instruction pattern:            Standard Names.     (line 1686)
  * cmul_conjM4 instruction pattern:       Standard Names.     (line 1705)
  * code generation RTL sequences:         Expander Definitions.
                                                               (line    6)
  * code iterators in .md files:           Code Iterators.     (line    6)
- * codes, RTL expression:                 RTL Objects.        (line   50)
  * code_label:                            Insns.              (line  125)
  * CODE_LABEL:                            Basic Blocks.       (line   50)
  * code_label and /i:                     Flags.              (line   48)
  * code_label and /v:                     Flags.              (line   33)
  * CODE_LABEL_NUMBER:                     Insns.              (line  125)
  * COImode:                               Machine Modes.      (line  203)
- * COLLECT2_HOST_INITIALIZATION:          Host Misc.          (line   32)
  * COLLECT_EXPORT_LIST:                   Misc.               (line  911)
  * COLLECT_SHARED_FINI_FUNC:              Macros for Initialization.
                                                               (line   43)
  * COLLECT_SHARED_INIT_FUNC:              Macros for Initialization.
                                                               (line   32)
  * command-line options, guidelines for:  Guidelines for Options.
                                                               (line    6)
  * commit_edge_insertions:                Maintaining the CFG.
                                                               (line  104)
  * compact syntax:                        Compact Syntax.     (line    6)
  * compare:                               Arithmetic.         (line   46)
  * compare, canonicalization of:          Insn Canonicalizations.
                                                               (line   42)
- * COMPARE_MAX_PIECES:                    Costs.              (line  292)
  * comparison_operator:                   Machine-Independent Predicates.
                                                               (line  110)
  * compiler passes and files:             Passes.             (line    6)
--- 56315,56356 ----
  * clrsb:                                 Arithmetic.         (line  221)
  * clrsbM2 instruction pattern:           Standard Names.     (line 1738)
  * clz:                                   Arithmetic.         (line  228)
  * CLZ_DEFINED_VALUE_AT_ZERO:             Misc.               (line  340)
! * clzM2 instruction pattern:             Standard Names.     (line 1754)
  * cmla_conjM4 instruction pattern:       Standard Names.     (line 1624)
! * cmlaM4 instruction pattern:            Standard Names.     (line 1604)
  * cmls_conjM4 instruction pattern:       Standard Names.     (line 1665)
+ * cmlsM4 instruction pattern:            Standard Names.     (line 1645)
  * cmpmemM instruction pattern:           Standard Names.     (line 1958)
  * cmpstrM instruction pattern:           Standard Names.     (line 1937)
  * cmpstrnM instruction pattern:          Standard Names.     (line 1924)
  * cmul_conjM4 instruction pattern:       Standard Names.     (line 1705)
+ * cmulM4 instruction pattern:            Standard Names.     (line 1686)
  * code generation RTL sequences:         Expander Definitions.
                                                               (line    6)
  * code iterators in .md files:           Code Iterators.     (line    6)
  * code_label:                            Insns.              (line  125)
  * CODE_LABEL:                            Basic Blocks.       (line   50)
  * code_label and /i:                     Flags.              (line   48)
  * code_label and /v:                     Flags.              (line   33)
  * CODE_LABEL_NUMBER:                     Insns.              (line  125)
+ * codes, RTL expression:                 RTL Objects.        (line   50)
  * COImode:                               Machine Modes.      (line  203)
  * COLLECT_EXPORT_LIST:                   Misc.               (line  911)
  * COLLECT_SHARED_FINI_FUNC:              Macros for Initialization.
                                                               (line   43)
  * COLLECT_SHARED_INIT_FUNC:              Macros for Initialization.
                                                               (line   32)
+ * COLLECT2_HOST_INITIALIZATION:          Host Misc.          (line   32)
  * command-line options, guidelines for:  Guidelines for Options.
                                                               (line    6)
  * commit_edge_insertions:                Maintaining the CFG.
                                                               (line  104)
  * compact syntax:                        Compact Syntax.     (line    6)
  * compare:                               Arithmetic.         (line   46)
+ * COMPARE_MAX_PIECES:                    Costs.              (line  292)
  * compare, canonicalization of:          Insn Canonicalizations.
                                                               (line   42)
  * comparison_operator:                   Machine-Independent Predicates.
                                                               (line  110)
  * compiler passes and files:             Passes.             (line    6)
*************** Concept Index
*** 56372,56391 ****
  * concatn:                               Regs and Memory.    (line  377)
  * cond:                                  Comparisons.        (line   80)
  * cond and attributes:                   Expressions.        (line   37)
- * condition code status:                 Condition Code.     (line    6)
- * condition codes:                       Comparisons.        (line   20)
- * conditional execution:                 Conditional Execution.
-                                                              (line    6)
- * Conditional Expressions:               Conditional Expressions.
-                                                              (line    6)
- * conditions, in patterns:               Patterns.           (line   55)
  * cond_addMODE instruction pattern:      Standard Names.     (line 2199)
  * cond_andMODE instruction pattern:      Standard Names.     (line 2199)
  * cond_ashlMODE instruction pattern:     Standard Names.     (line 2199)
  * cond_ashrMODE instruction pattern:     Standard Names.     (line 2199)
  * cond_copysignMODE instruction pattern: Standard Names.     (line 2199)
  * cond_divMODE instruction pattern:      Standard Names.     (line 2199)
! * cond_exec:                             Side Effects.       (line  245)
  * COND_EXPR:                             Unary and Binary Expressions.
                                                               (line    6)
  * cond_fmaMODE instruction pattern:      Standard Names.     (line 2250)
--- 56379,56391 ----
  * concatn:                               Regs and Memory.    (line  377)
  * cond:                                  Comparisons.        (line   80)
  * cond and attributes:                   Expressions.        (line   37)
  * cond_addMODE instruction pattern:      Standard Names.     (line 2199)
  * cond_andMODE instruction pattern:      Standard Names.     (line 2199)
  * cond_ashlMODE instruction pattern:     Standard Names.     (line 2199)
  * cond_ashrMODE instruction pattern:     Standard Names.     (line 2199)
  * cond_copysignMODE instruction pattern: Standard Names.     (line 2199)
  * cond_divMODE instruction pattern:      Standard Names.     (line 2199)
! * cond_exec:                             Side Effects.       (line  244)
  * COND_EXPR:                             Unary and Binary Expressions.
                                                               (line    6)
  * cond_fmaMODE instruction pattern:      Standard Names.     (line 2250)
*************** Concept Index
*** 56434,56445 ****
--- 56434,56477 ----
  * cond_uminMODE instruction pattern:     Standard Names.     (line 2199)
  * cond_umodMODE instruction pattern:     Standard Names.     (line 2199)
  * cond_xorMODE instruction pattern:      Standard Names.     (line 2199)
+ * condition code status:                 Condition Code.     (line    6)
+ * condition codes:                       Comparisons.        (line   20)
+ * conditional execution:                 Conditional Execution.
+                                                              (line    6)
+ * Conditional Expressions:               Conditional Expressions.
+                                                              (line    6)
+ * conditions, in patterns:               Patterns.           (line   55)
  * configuration file:                    Filesystem.         (line    6)
  * configuration file <1>:                Host Misc.          (line    6)
  * configure terms:                       Configure Terms.    (line    6)
  * CONJ_EXPR:                             Unary and Binary Expressions.
                                                               (line    6)
  * const:                                 Constants.          (line  226)
+ * CONST_DECL:                            Declarations.       (line    6)
+ * const_double:                          Constants.          (line   37)
+ * CONST_DOUBLE_LOW:                      Constants.          (line   54)
+ * const_double_operand:                  Machine-Independent Predicates.
+                                                              (line   20)
+ * const_double_zero:                     Constants.          (line   67)
+ * const_double, RTL sharing:             Sharing.            (line   30)
+ * const_fixed:                           Constants.          (line  107)
+ * const_int:                             Constants.          (line    8)
+ * const_int and attribute tests:         Expressions.        (line   47)
+ * const_int and attributes:              Expressions.        (line   10)
+ * const_int_operand:                     Machine-Independent Predicates.
+                                                              (line   15)
+ * const_int, RTL sharing:                Sharing.            (line   23)
+ * const_poly_int:                        Constants.          (line  114)
+ * const_poly_int, RTL sharing:           Sharing.            (line   25)
+ * const_string:                          Constants.          (line  198)
+ * const_string and attributes:           Expressions.        (line   20)
+ * const_true_rtx:                        Constants.          (line   31)
+ * const_vector:                          Constants.          (line  121)
+ * const_vector, RTL sharing:             Sharing.            (line   33)
+ * CONST_WIDE_INT:                        Constants.          (line   81)
+ * CONST_WIDE_INT_ELT:                    Constants.          (line  103)
+ * CONST_WIDE_INT_NUNITS:                 Constants.          (line   98)
+ * CONST_WIDE_INT_VEC:                    Constants.          (line   94)
  * const0_rtx:                            Constants.          (line   21)
  * CONST0_RTX:                            Constants.          (line  244)
  * const1_rtx:                            Constants.          (line   21)
*************** Concept Index
*** 56450,56462 ****
                                                               (line    6)
  * constant definitions:                  Constant Definitions.
                                                               (line    6)
- * constants in constraints:              Simple Constraints. (line   68)
  * CONSTANT_ADDRESS_P:                    Addressing Modes.   (line   28)
  * CONSTANT_P:                            Addressing Modes.   (line   35)
  * CONSTANT_POOL_ADDRESS_P:               Flags.              (line   19)
  * CONSTANT_POOL_BEFORE_FUNCTION:         Data Output.        (line   74)
  * constm1_rtx:                           Constants.          (line   21)
  * constraint modifier characters:        Modifiers.          (line    6)
  * constraint, matching:                  Simple Constraints. (line  140)
  * constraints:                           Constraints.        (line    6)
  * constraints, defining:                 Define Constraints. (line    6)
--- 56482,56498 ----
                                                               (line    6)
  * constant definitions:                  Constant Definitions.
                                                               (line    6)
  * CONSTANT_ADDRESS_P:                    Addressing Modes.   (line   28)
  * CONSTANT_P:                            Addressing Modes.   (line   35)
  * CONSTANT_POOL_ADDRESS_P:               Flags.              (line   19)
  * CONSTANT_POOL_BEFORE_FUNCTION:         Data Output.        (line   74)
+ * constants in constraints:              Simple Constraints. (line   68)
  * constm1_rtx:                           Constants.          (line   21)
  * constraint modifier characters:        Modifiers.          (line    6)
+ * constraint_num:                        C Constraint Interface.
+                                                              (line   30)
+ * constraint_satisfied_p:                C Constraint Interface.
+                                                              (line   42)
  * constraint, matching:                  Simple Constraints. (line  140)
  * constraints:                           Constraints.        (line    6)
  * constraints, defining:                 Define Constraints. (line    6)
*************** Concept Index
*** 56464,56502 ****
                                                               (line    6)
  * constraints, testing:                  C Constraint Interface.
                                                               (line    6)
- * constraint_num:                        C Constraint Interface.
-                                                              (line   30)
- * constraint_satisfied_p:                C Constraint Interface.
-                                                              (line   42)
  * CONSTRUCTOR:                           Unary and Binary Expressions.
                                                               (line    6)
  * constructors, automatic calls:         Collect2.           (line   15)
  * constructors, output of:               Initialization.     (line    6)
- * CONST_DECL:                            Declarations.       (line    6)
- * const_double:                          Constants.          (line   37)
- * const_double, RTL sharing:             Sharing.            (line   30)
- * CONST_DOUBLE_LOW:                      Constants.          (line   54)
- * const_double_operand:                  Machine-Independent Predicates.
-                                                              (line   20)
- * const_double_zero:                     Constants.          (line   67)
- * const_fixed:                           Constants.          (line  107)
- * const_int:                             Constants.          (line    8)
- * const_int and attribute tests:         Expressions.        (line   47)
- * const_int and attributes:              Expressions.        (line   10)
- * const_int, RTL sharing:                Sharing.            (line   23)
- * const_int_operand:                     Machine-Independent Predicates.
-                                                              (line   15)
- * const_poly_int:                        Constants.          (line  114)
- * const_poly_int, RTL sharing:           Sharing.            (line   25)
- * const_string:                          Constants.          (line  198)
- * const_string and attributes:           Expressions.        (line   20)
- * const_true_rtx:                        Constants.          (line   31)
- * const_vector:                          Constants.          (line  121)
- * const_vector, RTL sharing:             Sharing.            (line   33)
- * CONST_WIDE_INT:                        Constants.          (line   81)
- * CONST_WIDE_INT_ELT:                    Constants.          (line  103)
- * CONST_WIDE_INT_NUNITS:                 Constants.          (line   98)
- * CONST_WIDE_INT_VEC:                    Constants.          (line   94)
  * container:                             Containers.         (line    6)
  * CONTINUE_STMT:                         Statements for C and C++.
                                                               (line    6)
--- 56500,56509 ----
*************** Concept Index
*** 56506,56521 ****
  * conversions:                           Conversions.        (line    6)
  * CONVERT_EXPR:                          Unary and Binary Expressions.
                                                               (line    6)
- * copysign:                              Arithmetic.         (line  262)
- * copysignM3 instruction pattern:        Standard Names.     (line 1541)
  * copy_rtx:                              Addressing Modes.   (line  197)
  * copy_rtx_if_shared:                    Sharing.            (line   65)
  * cosM2 instruction pattern:             Standard Names.     (line 1307)
  * costs of instructions:                 Costs.              (line    6)
- * CPLUSPLUS_CPP_SPEC:                    Driver.             (line   50)
- * CPP_SPEC:                              Driver.             (line   43)
- * CPSImode:                              Machine Modes.      (line  203)
- * cpymemM instruction pattern:           Standard Names.     (line 1812)
  * CP_INTEGRAL_TYPE:                      Types for C++.      (line   55)
  * cp_namespace_decls:                    Namespaces.         (line   49)
  * CP_TYPE_CONST_NON_VOLATILE_P:          Types for C++.      (line   33)
--- 56513,56524 ----
  * conversions:                           Conversions.        (line    6)
  * CONVERT_EXPR:                          Unary and Binary Expressions.
                                                               (line    6)
  * copy_rtx:                              Addressing Modes.   (line  197)
  * copy_rtx_if_shared:                    Sharing.            (line   65)
+ * copysign:                              Arithmetic.         (line  262)
+ * copysignM3 instruction pattern:        Standard Names.     (line 1541)
  * cosM2 instruction pattern:             Standard Names.     (line 1307)
  * costs of instructions:                 Costs.              (line    6)
  * CP_INTEGRAL_TYPE:                      Types for C++.      (line   55)
  * cp_namespace_decls:                    Namespaces.         (line   49)
  * CP_TYPE_CONST_NON_VOLATILE_P:          Types for C++.      (line   33)
*************** Concept Index
*** 56524,56556 ****
  * cp_type_quals <1>:                     Types for C++.      (line   16)
  * CP_TYPE_RESTRICT_P:                    Types for C++.      (line   30)
  * CP_TYPE_VOLATILE_P:                    Types for C++.      (line   27)
  * CQImode:                               Machine Modes.      (line  203)
- * crcMN4 instruction pattern:            Standard Names.     (line 3308)
  * crc_revMN4 instruction pattern:        Standard Names.     (line 3317)
  * cross compilation and floating point:  Floating Point.     (line    6)
  * CROSSING_JUMP_P:                       Flags.              (line   10)
  * crtl->args.pops_args:                  Function Entry.     (line  111)
  * crtl->args.pretend_args_size:          Function Entry.     (line  117)
  * crtl->outgoing_args_size:              Stack Arguments.    (line   51)
  * CRTSTUFF_T_CFLAGS:                     Target Fragment.    (line   15)
  * CRTSTUFF_T_CFLAGS_S:                   Target Fragment.    (line   19)
- * CRT_CALL_STATIC_FUNCTION:              Sections.           (line  125)
  * CSImode:                               Machine Modes.      (line  203)
  * cstoreMODE4 instruction pattern:       Standard Names.     (line 2362)
  * CTF_DEBUGGING_INFO:                    CTF Debug.          (line    8)
  * CTImode:                               Machine Modes.      (line  203)
  * ctrapMM4 instruction pattern:          Standard Names.     (line 2838)
  * ctz:                                   Arithmetic.         (line  236)
- * ctzM2 instruction pattern:             Standard Names.     (line 1769)
  * CTZ_DEFINED_VALUE_AT_ZERO:             Misc.               (line  341)
  * CUMULATIVE_ARGS:                       Register Arguments. (line  131)
  * current_function_is_leaf:              Leaf Functions.     (line   50)
  * current_function_uses_only_leaf_regs:  Leaf Functions.     (line   50)
  * current_insn_predicate:                Conditional Execution.
                                                               (line   27)
- * C_COMMON_OVERRIDE_OPTIONS:             Run-time Target.    (line  136)
- * c_register_pragma:                     Misc.               (line  442)
- * c_register_pragma_with_expansion:      Misc.               (line  444)
  * DAmode:                                Machine Modes.      (line  154)
  * data bypass:                           Processor pipeline description.
                                                               (line  105)
--- 56527,56560 ----
  * cp_type_quals <1>:                     Types for C++.      (line   16)
  * CP_TYPE_RESTRICT_P:                    Types for C++.      (line   30)
  * CP_TYPE_VOLATILE_P:                    Types for C++.      (line   27)
+ * CPLUSPLUS_CPP_SPEC:                    Driver.             (line   50)
+ * CPP_SPEC:                              Driver.             (line   43)
+ * CPSImode:                              Machine Modes.      (line  203)
+ * cpymemM instruction pattern:           Standard Names.     (line 1812)
  * CQImode:                               Machine Modes.      (line  203)
  * crc_revMN4 instruction pattern:        Standard Names.     (line 3317)
+ * crcMN4 instruction pattern:            Standard Names.     (line 3308)
  * cross compilation and floating point:  Floating Point.     (line    6)
  * CROSSING_JUMP_P:                       Flags.              (line   10)
+ * CRT_CALL_STATIC_FUNCTION:              Sections.           (line  125)
  * crtl->args.pops_args:                  Function Entry.     (line  111)
  * crtl->args.pretend_args_size:          Function Entry.     (line  117)
  * crtl->outgoing_args_size:              Stack Arguments.    (line   51)
  * CRTSTUFF_T_CFLAGS:                     Target Fragment.    (line   15)
  * CRTSTUFF_T_CFLAGS_S:                   Target Fragment.    (line   19)
  * CSImode:                               Machine Modes.      (line  203)
  * cstoreMODE4 instruction pattern:       Standard Names.     (line 2362)
  * CTF_DEBUGGING_INFO:                    CTF Debug.          (line    8)
  * CTImode:                               Machine Modes.      (line  203)
  * ctrapMM4 instruction pattern:          Standard Names.     (line 2838)
  * ctz:                                   Arithmetic.         (line  236)
  * CTZ_DEFINED_VALUE_AT_ZERO:             Misc.               (line  341)
+ * ctzM2 instruction pattern:             Standard Names.     (line 1769)
  * CUMULATIVE_ARGS:                       Register Arguments. (line  131)
  * current_function_is_leaf:              Leaf Functions.     (line   50)
  * current_function_uses_only_leaf_regs:  Leaf Functions.     (line   50)
  * current_insn_predicate:                Conditional Execution.
                                                               (line   27)
  * DAmode:                                Machine Modes.      (line  154)
  * data bypass:                           Processor pipeline description.
                                                               (line  105)
*************** Concept Index
*** 56571,56590 ****
  * De Morgan's law:                       Insn Canonicalizations.
                                                               (line   73)
  * dead_or_set_p:                         define_peephole.    (line   65)
- * DEBUGGER_ARG_OFFSET:                   All Debuggers.      (line   35)
- * DEBUGGER_AUTO_OFFSET:                  All Debuggers.      (line   27)
- * DEBUGGER_REGNO:                        All Debuggers.      (line    8)
  * debug_expr:                            Debug Information.  (line   22)
  * DEBUG_EXPR_DECL:                       Declarations.       (line    6)
  * debug_implicit_ptr:                    Debug Information.  (line   27)
  * debug_insn:                            Insns.              (line  248)
  * debug_marker:                          Debug Information.  (line   37)
  * debug_parameter_ref:                   Debug Information.  (line   34)
  * decimal float library:                 Decimal float library routines.
                                                               (line    6)
- * declaration:                           Declarations.       (line    6)
- * declarations, RTL:                     RTL Declarations.   (line    6)
- * DECLARE_LIBRARY_RENAMES:               Library Calls.      (line    8)
  * DECL_ALIGN:                            Declarations.       (line    6)
  * DECL_ANTICIPATED:                      Functions for C++.  (line   42)
  * DECL_ARGUMENTS:                        Function Basics.    (line   36)
--- 56575,56591 ----
  * De Morgan's law:                       Insn Canonicalizations.
                                                               (line   73)
  * dead_or_set_p:                         define_peephole.    (line   65)
  * debug_expr:                            Debug Information.  (line   22)
  * DEBUG_EXPR_DECL:                       Declarations.       (line    6)
  * debug_implicit_ptr:                    Debug Information.  (line   27)
  * debug_insn:                            Insns.              (line  248)
  * debug_marker:                          Debug Information.  (line   37)
  * debug_parameter_ref:                   Debug Information.  (line   34)
+ * DEBUGGER_ARG_OFFSET:                   All Debuggers.      (line   35)
+ * DEBUGGER_AUTO_OFFSET:                  All Debuggers.      (line   27)
+ * DEBUGGER_REGNO:                        All Debuggers.      (line    8)
  * decimal float library:                 Decimal float library routines.
                                                               (line    6)
  * DECL_ALIGN:                            Declarations.       (line    6)
  * DECL_ANTICIPATED:                      Functions for C++.  (line   42)
  * DECL_ARGUMENTS:                        Function Basics.    (line   36)
*************** Concept Index
*** 56600,56615 ****
  * DECL_BASE_CONSTRUCTOR_P:               Functions for C++.  (line   88)
  * DECL_COMPLETE_CONSTRUCTOR_P:           Functions for C++.  (line   84)
  * DECL_COMPLETE_DESTRUCTOR_P:            Functions for C++.  (line   98)
- * DECL_CONSTRUCTOR_P:                    Functions for C++.  (line   77)
  * DECL_CONST_MEMFUNC_P:                  Functions for C++.  (line   71)
  * DECL_CONTEXT:                          Namespaces.         (line   31)
  * DECL_CONV_FN_P:                        Functions for C++.  (line  105)
  * DECL_COPY_CONSTRUCTOR_P:               Functions for C++.  (line   92)
  * DECL_DESTRUCTOR_P:                     Functions for C++.  (line   95)
  * DECL_EXTERNAL:                         Declarations.       (line    6)
  * DECL_EXTERNAL <1>:                     Function Properties.
                                                               (line   25)
- * DECL_EXTERN_C_FUNCTION_P:              Functions for C++.  (line   46)
  * DECL_FUNCTION_MEMBER_P:                Functions for C++.  (line   61)
  * DECL_FUNCTION_SPECIFIC_OPTIMIZATION:   Function Basics.    (line    6)
  * DECL_FUNCTION_SPECIFIC_OPTIMIZATION <1>: Function Properties.
--- 56601,56616 ----
  * DECL_BASE_CONSTRUCTOR_P:               Functions for C++.  (line   88)
  * DECL_COMPLETE_CONSTRUCTOR_P:           Functions for C++.  (line   84)
  * DECL_COMPLETE_DESTRUCTOR_P:            Functions for C++.  (line   98)
  * DECL_CONST_MEMFUNC_P:                  Functions for C++.  (line   71)
+ * DECL_CONSTRUCTOR_P:                    Functions for C++.  (line   77)
  * DECL_CONTEXT:                          Namespaces.         (line   31)
  * DECL_CONV_FN_P:                        Functions for C++.  (line  105)
  * DECL_COPY_CONSTRUCTOR_P:               Functions for C++.  (line   92)
  * DECL_DESTRUCTOR_P:                     Functions for C++.  (line   95)
+ * DECL_EXTERN_C_FUNCTION_P:              Functions for C++.  (line   46)
  * DECL_EXTERNAL:                         Declarations.       (line    6)
  * DECL_EXTERNAL <1>:                     Function Properties.
                                                               (line   25)
  * DECL_FUNCTION_MEMBER_P:                Functions for C++.  (line   61)
  * DECL_FUNCTION_SPECIFIC_OPTIMIZATION:   Function Basics.    (line    6)
  * DECL_FUNCTION_SPECIFIC_OPTIMIZATION <1>: Function Properties.
*************** Concept Index
*** 56631,56639 ****
  * DECL_NAME <3>:                         Namespaces.         (line   20)
  * DECL_NAMESPACE_ALIAS:                  Namespaces.         (line   35)
  * DECL_NAMESPACE_STD_P:                  Namespaces.         (line   45)
  * DECL_NONCONVERTING_P:                  Functions for C++.  (line   80)
  * DECL_NONSTATIC_MEMBER_FUNCTION_P:      Functions for C++.  (line   68)
- * DECL_NON_THUNK_FUNCTION_P:             Functions for C++.  (line  138)
  * DECL_OVERLOADED_OPERATOR_P:            Functions for C++.  (line  102)
  * DECL_PURE_P:                           Function Properties.
                                                               (line   40)
--- 56632,56640 ----
  * DECL_NAME <3>:                         Namespaces.         (line   20)
  * DECL_NAMESPACE_ALIAS:                  Namespaces.         (line   35)
  * DECL_NAMESPACE_STD_P:                  Namespaces.         (line   45)
+ * DECL_NON_THUNK_FUNCTION_P:             Functions for C++.  (line  138)
  * DECL_NONCONVERTING_P:                  Functions for C++.  (line   80)
  * DECL_NONSTATIC_MEMBER_FUNCTION_P:      Functions for C++.  (line   68)
  * DECL_OVERLOADED_OPERATOR_P:            Functions for C++.  (line  102)
  * DECL_PURE_P:                           Function Properties.
                                                               (line   40)
*************** Concept Index
*** 56649,56654 ****
--- 56650,56658 ----
  * DECL_VIRTUAL_P:                        Function Properties.
                                                               (line   44)
  * DECL_VOLATILE_MEMFUNC_P:               Functions for C++.  (line   74)
+ * declaration:                           Declarations.       (line    6)
+ * declarations, RTL:                     RTL Declarations.   (line    6)
+ * DECLARE_LIBRARY_RENAMES:               Library Calls.      (line    8)
  * default:                               GTY Options.        (line  127)
  * default_file_start:                    File Framework.     (line    8)
  * DEFAULT_GDB_EXTENSIONS:                All Debuggers.      (line   56)
*************** Concept Index
*** 56663,56668 ****
--- 56667,56674 ----
                                                               (line   53)
  * define_bypass:                         Processor pipeline description.
                                                               (line  196)
+ * define_c_enum:                         Constant Definitions.
+                                                              (line   49)
  * define_code_attr:                      Code Iterators.     (line    6)
  * define_code_iterator:                  Code Iterators.     (line    6)
  * define_cond_exec:                      Conditional Execution.
*************** Concept Index
*** 56672,56679 ****
  * define_constraint:                     Define Constraints. (line   80)
  * define_cpu_unit:                       Processor pipeline description.
                                                               (line   68)
- * define_c_enum:                         Constant Definitions.
-                                                              (line   49)
  * define_delay:                          Delay Slots.        (line   25)
  * define_enum:                           Constant Definitions.
                                                               (line  122)
--- 56678,56683 ----
*************** Concept Index
*** 56759,56767 ****
                                                               (line   39)
  * digits in constraint:                  Simple Constraints. (line  128)
  * DImode:                                Machine Modes.      (line   45)
- * directory options .md:                 Including Patterns. (line   46)
  * DIR_SEPARATOR:                         Filesystem.         (line   18)
  * DIR_SEPARATOR_2:                       Filesystem.         (line   19)
  * disabling certain registers:           Register Basics.    (line  116)
  * dispatch table:                        Dispatch Tables.    (line    8)
  * div:                                   Arithmetic.         (line  122)
--- 56763,56771 ----
                                                               (line   39)
  * digits in constraint:                  Simple Constraints. (line  128)
  * DImode:                                Machine Modes.      (line   45)
  * DIR_SEPARATOR:                         Filesystem.         (line   18)
  * DIR_SEPARATOR_2:                       Filesystem.         (line   19)
+ * directory options .md:                 Including Patterns. (line   46)
  * disabling certain registers:           Register Basics.    (line  116)
  * dispatch table:                        Dispatch Tables.    (line    8)
  * div:                                   Arithmetic.         (line  122)
*************** Concept Index
*** 56771,56776 ****
--- 56775,56786 ----
  * division <2>:                          Arithmetic.         (line  142)
  * divM3 instruction pattern:             Standard Names.     (line  668)
  * divmodM4 instruction pattern:          Standard Names.     (line 1178)
+ * DO_BODY:                               Statements for C and C++.
+                                                              (line    6)
+ * DO_COND:                               Statements for C and C++.
+                                                              (line    6)
+ * DO_STMT:                               Statements for C and C++.
+                                                              (line    6)
  * dollar sign:                           Multi-Alternative.  (line   57)
  * DOLLARS_IN_IDENTIFIERS:                Misc.               (line  487)
  * doloop_begin instruction pattern:      Standard Names.     (line 2592)
*************** Concept Index
*** 56781,56792 ****
  * DONE <2>:                              define_peephole2.   (line   80)
  * DONT_USE_BUILTIN_SETJMP:               Exception Region Output.
                                                               (line   78)
- * DO_BODY:                               Statements for C and C++.
-                                                              (line    6)
- * DO_COND:                               Statements for C and C++.
-                                                              (line    6)
- * DO_STMT:                               Statements for C and C++.
-                                                              (line    6)
  * DQmode:                                Machine Modes.      (line  118)
  * driver:                                Driver.             (line    6)
  * DRIVER_SELF_SPECS:                     Driver.             (line    8)
--- 56791,56796 ----
*************** Concept Index
*** 56795,56812 ****
  * dump types:                            Dump types.         (line    6)
  * dump verbosity:                        Dump output verbosity.
                                                               (line    6)
- * DUMPFILE_FORMAT:                       Filesystem.         (line   67)
  * dump_basic_block:                      Dump types.         (line   29)
  * dump_generic_expr:                     Dump types.         (line   31)
  * dump_gimple_stmt:                      Dump types.         (line   33)
  * dump_printf:                           Dump types.         (line    6)
! * DWARF2_ASM_LINE_DEBUG_INFO:            DWARF.              (line   44)
! * DWARF2_ASM_VIEW_DEBUG_INFO:            DWARF.              (line   50)
! * DWARF2_DEBUGGING_INFO:                 DWARF.              (line    8)
! * DWARF2_FRAME_INFO:                     DWARF.              (line   24)
! * DWARF2_FRAME_REG_OUT:                  Frame Registers.    (line  149)
! * DWARF2_UNWIND_INFO:                    Exception Region Output.
!                                                              (line   39)
  * DWARF_ALT_FRAME_RETURN_COLUMN:         Frame Layout.       (line  146)
  * DWARF_CIE_DATA_ALIGNMENT:              Exception Region Output.
                                                               (line   90)
--- 56799,56809 ----
  * dump types:                            Dump types.         (line    6)
  * dump verbosity:                        Dump output verbosity.
                                                               (line    6)
  * dump_basic_block:                      Dump types.         (line   29)
  * dump_generic_expr:                     Dump types.         (line   31)
  * dump_gimple_stmt:                      Dump types.         (line   33)
  * dump_printf:                           Dump types.         (line    6)
! * DUMPFILE_FORMAT:                       Filesystem.         (line   67)
  * DWARF_ALT_FRAME_RETURN_COLUMN:         Frame Layout.       (line  146)
  * DWARF_CIE_DATA_ALIGNMENT:              Exception Region Output.
                                                               (line   90)
*************** Concept Index
*** 56816,56821 ****
--- 56813,56825 ----
  * DWARF_REG_TO_UNWIND_COLUMN:            Frame Registers.    (line  134)
  * DWARF_VERSION_DEFAULT:                 Frame Layout.       (line  165)
  * DWARF_ZERO_REG:                        Frame Layout.       (line  157)
+ * DWARF2_ASM_LINE_DEBUG_INFO:            DWARF.              (line   44)
+ * DWARF2_ASM_VIEW_DEBUG_INFO:            DWARF.              (line   50)
+ * DWARF2_DEBUGGING_INFO:                 DWARF.              (line    8)
+ * DWARF2_FRAME_INFO:                     DWARF.              (line   24)
+ * DWARF2_FRAME_REG_OUT:                  Frame Registers.    (line  149)
+ * DWARF2_UNWIND_INFO:                    Exception Region Output.
+                                                              (line   39)
  * DYNAMIC_CHAIN_ADDRESS:                 Frame Layout.       (line   84)
  * E in constraint:                       Simple Constraints. (line   87)
  * earlyclobber operand:                  Modifiers.          (line   25)
*************** Concept Index
*** 56875,56884 ****
  * EPILOGUE_USES:                         Function Entry.     (line  156)
  * eq:                                    Comparisons.        (line   42)
  * eq and attributes:                     Expressions.        (line   83)
- * equal:                                 Comparisons.        (line   42)
  * eq_attr:                               Expressions.        (line  104)
  * EQ_EXPR:                               Unary and Binary Expressions.
                                                               (line    6)
  * errno, implicit usage:                 Library Calls.      (line   71)
  * EXACT_DIV_EXPR:                        Unary and Binary Expressions.
                                                               (line    6)
--- 56879,56888 ----
  * EPILOGUE_USES:                         Function Entry.     (line  156)
  * eq:                                    Comparisons.        (line   42)
  * eq and attributes:                     Expressions.        (line   83)
  * eq_attr:                               Expressions.        (line  104)
  * EQ_EXPR:                               Unary and Binary Expressions.
                                                               (line    6)
+ * equal:                                 Comparisons.        (line   42)
  * errno, implicit usage:                 Library Calls.      (line   71)
  * EXACT_DIV_EXPR:                        Unary and Binary Expressions.
                                                               (line    6)
*************** Concept Index
*** 56899,56906 ****
                                                               (line    6)
  * expm1M2 instruction pattern:           Standard Names.     (line 1374)
  * expM2 instruction pattern:             Standard Names.     (line 1367)
- * expression:                            Expression trees.   (line    6)
- * expression codes:                      RTL Objects.        (line   50)
  * EXPR_FILENAME:                         Working with declarations.
                                                               (line   14)
  * EXPR_LINENO:                           Working with declarations.
--- 56903,56908 ----
*************** Concept Index
*** 56910,56921 ****
                                                               (line    6)
  * EXPR_STMT_EXPR:                        Statements for C and C++.
                                                               (line    6)
  * extended basic blocks, RTL SSA:        RTL SSA Basic Blocks.
                                                               (line   29)
  * extendMN2 instruction pattern:         Standard Names.     (line 2022)
  * extensible constraints:                Simple Constraints. (line  183)
- * extract_last_M instruction pattern:    Standard Names.     (line  808)
  * EXTRA_SPECS:                           Driver.             (line  182)
  * extv instruction pattern:              Standard Names.     (line 2113)
  * extvM instruction pattern:             Standard Names.     (line 2058)
  * extvmisalignM instruction pattern:     Standard Names.     (line 2068)
--- 56912,56925 ----
                                                               (line    6)
  * EXPR_STMT_EXPR:                        Statements for C and C++.
                                                               (line    6)
+ * expression:                            Expression trees.   (line    6)
+ * expression codes:                      RTL Objects.        (line   50)
  * extended basic blocks, RTL SSA:        RTL SSA Basic Blocks.
                                                               (line   29)
  * extendMN2 instruction pattern:         Standard Names.     (line 2022)
  * extensible constraints:                Simple Constraints. (line  183)
  * EXTRA_SPECS:                           Driver.             (line  182)
+ * extract_last_M instruction pattern:    Standard Names.     (line  808)
  * extv instruction pattern:              Standard Names.     (line 2113)
  * extvM instruction pattern:             Standard Names.     (line 2058)
  * extvmisalignM instruction pattern:     Standard Names.     (line 2068)
*************** Concept Index
*** 56941,56949 ****
  * ffs:                                   Arithmetic.         (line  216)
  * ffsM2 instruction pattern:             Standard Names.     (line 1725)
  * FIELD_DECL:                            Declarations.       (line    6)
  * files and passes of the compiler:      Passes.             (line    6)
  * files, generated:                      Files.              (line    6)
- * file_end_indicate_exec_stack:          File Framework.     (line   39)
  * final_absence_set:                     Processor pipeline description.
                                                               (line  223)
  * FINAL_PRESCAN_INSN:                    Instruction Output. (line   60)
--- 56945,56953 ----
  * ffs:                                   Arithmetic.         (line  216)
  * ffsM2 instruction pattern:             Standard Names.     (line 1725)
  * FIELD_DECL:                            Declarations.       (line    6)
+ * file_end_indicate_exec_stack:          File Framework.     (line   39)
  * files and passes of the compiler:      Passes.             (line    6)
  * files, generated:                      Files.              (line    6)
  * final_absence_set:                     Processor pipeline description.
                                                               (line  223)
  * FINAL_PRESCAN_INSN:                    Instruction Output. (line   60)
*************** Concept Index
*** 56951,56971 ****
                                                               (line  223)
  * final_sequence:                        Instruction Output. (line  144)
  * FIND_BASE_TERM:                        Addressing Modes.   (line  125)
- * finite state automaton minimization:   Processor pipeline description.
-                                                              (line  304)
  * FINI_ARRAY_SECTION_ASM_OP:             Sections.           (line  113)
  * FINI_SECTION_ASM_OP:                   Sections.           (line   98)
  * FIRST_PARM_OFFSET:                     Frame Layout.       (line   59)
  * FIRST_PARM_OFFSET and virtual registers: Regs and Memory.  (line   65)
  * FIRST_PSEUDO_REGISTER:                 Register Basics.    (line    8)
  * FIRST_STACK_REG:                       Stack Registers.    (line   26)
  * FIRST_VIRTUAL_REGISTER:                Regs and Memory.    (line   51)
  * fix:                                   Conversions.        (line   66)
  * fix-it hints:                          Guidelines for Diagnostics.
                                                               (line  409)
  * fixed register:                        Register Basics.    (line   15)
- * fixed-point fractional library:        Fixed-point fractional library routines.
-                                                              (line    6)
  * FIXED_CONVERT_EXPR:                    Unary and Binary Expressions.
                                                               (line    6)
  * FIXED_CST:                             Constant expressions.
--- 56955,56976 ----
                                                               (line  223)
  * final_sequence:                        Instruction Output. (line  144)
  * FIND_BASE_TERM:                        Addressing Modes.   (line  125)
  * FINI_ARRAY_SECTION_ASM_OP:             Sections.           (line  113)
  * FINI_SECTION_ASM_OP:                   Sections.           (line   98)
+ * finite state automaton minimization:   Processor pipeline description.
+                                                              (line  304)
  * FIRST_PARM_OFFSET:                     Frame Layout.       (line   59)
  * FIRST_PARM_OFFSET and virtual registers: Regs and Memory.  (line   65)
  * FIRST_PSEUDO_REGISTER:                 Register Basics.    (line    8)
  * FIRST_STACK_REG:                       Stack Registers.    (line   26)
  * FIRST_VIRTUAL_REGISTER:                Regs and Memory.    (line   51)
  * fix:                                   Conversions.        (line   66)
+ * FIX_TRUNC_EXPR:                        Unary and Binary Expressions.
+                                                              (line    6)
+ * fix_truncMN2 instruction pattern:      Standard Names.     (line 2009)
  * fix-it hints:                          Guidelines for Diagnostics.
                                                               (line  409)
  * fixed register:                        Register Basics.    (line   15)
  * FIXED_CONVERT_EXPR:                    Unary and Binary Expressions.
                                                               (line    6)
  * FIXED_CST:                             Constant expressions.
*************** Concept Index
*** 56974,56990 ****
  * FIXED_REGISTERS:                       Register Basics.    (line   14)
  * fixed_regs:                            Register Basics.    (line  102)
  * fixed_size_mode:                       Machine Modes.      (line  309)
  * fixMN2 instruction pattern:            Standard Names.     (line 1989)
- * fixunsMN2 instruction pattern:         Standard Names.     (line 1998)
  * fixuns_truncMN2 instruction pattern:   Standard Names.     (line 2013)
! * fix_truncMN2 instruction pattern:      Standard Names.     (line 2009)
! * FIX_TRUNC_EXPR:                        Unary and Binary Expressions.
!                                                              (line    6)
  * flags in RTL expression:               Flags.              (line    6)
  * float:                                 Conversions.        (line   58)
- * floating point and cross compilation:  Floating Point.     (line    6)
- * floatMN2 instruction pattern:          Standard Names.     (line 1981)
- * floatunsMN2 instruction pattern:       Standard Names.     (line 1985)
  * FLOAT_EXPR:                            Unary and Binary Expressions.
                                                               (line    6)
  * float_extend:                          Conversions.        (line   33)
--- 56979,56991 ----
  * FIXED_REGISTERS:                       Register Basics.    (line   14)
  * fixed_regs:                            Register Basics.    (line  102)
  * fixed_size_mode:                       Machine Modes.      (line  309)
+ * fixed-point fractional library:        Fixed-point fractional library routines.
+                                                              (line    6)
  * fixMN2 instruction pattern:            Standard Names.     (line 1989)
  * fixuns_truncMN2 instruction pattern:   Standard Names.     (line 2013)
! * fixunsMN2 instruction pattern:         Standard Names.     (line 1998)
  * flags in RTL expression:               Flags.              (line    6)
  * float:                                 Conversions.        (line   58)
  * FLOAT_EXPR:                            Unary and Binary Expressions.
                                                               (line    6)
  * float_extend:                          Conversions.        (line   33)
*************** Concept Index
*** 56994,57004 ****
  * FLOAT_WORDS_BIG_ENDIAN:                Storage Layout.     (line   41)
  * FLOAT_WORDS_BIG_ENDIAN, (lack of) effect on subreg: Regs and Memory.
                                                               (line  234)
! * floorM2 instruction pattern:           Standard Names.     (line 1468)
  * FLOOR_DIV_EXPR:                        Unary and Binary Expressions.
                                                               (line    6)
  * FLOOR_MOD_EXPR:                        Unary and Binary Expressions.
                                                               (line    6)
  * flow-insensitive alias analysis:       Alias analysis.     (line    6)
  * flow-sensitive alias analysis:         Alias analysis.     (line    6)
  * fma:                                   Arithmetic.         (line  118)
--- 56995,57008 ----
  * FLOAT_WORDS_BIG_ENDIAN:                Storage Layout.     (line   41)
  * FLOAT_WORDS_BIG_ENDIAN, (lack of) effect on subreg: Regs and Memory.
                                                               (line  234)
! * floating point and cross compilation:  Floating Point.     (line    6)
! * floatMN2 instruction pattern:          Standard Names.     (line 1981)
! * floatunsMN2 instruction pattern:       Standard Names.     (line 1985)
  * FLOOR_DIV_EXPR:                        Unary and Binary Expressions.
                                                               (line    6)
  * FLOOR_MOD_EXPR:                        Unary and Binary Expressions.
                                                               (line    6)
+ * floorM2 instruction pattern:           Standard Names.     (line 1468)
  * flow-insensitive alias analysis:       Alias analysis.     (line    6)
  * flow-sensitive alias analysis:         Alias analysis.     (line    6)
  * fma:                                   Arithmetic.         (line  118)
*************** Concept Index
*** 57011,57018 ****
  * fnmsM4 instruction pattern:            Standard Names.     (line  756)
  * fold_extract_last_M instruction pattern: Standard Names.   (line  815)
  * fold_left_plus_M instruction pattern:  Standard Names.     (line  829)
- * FORCE_CODE_SECTION_ALIGN:              Sections.           (line  149)
- * force_reg:                             Standard Names.     (line   36)
  * FOR_BODY:                              Statements for C and C++.
                                                               (line    6)
  * FOR_COND:                              Statements for C and C++.
--- 57015,57020 ----
*************** Concept Index
*** 57024,57035 ****
  * FOR_STMT:                              Statements for C and C++.
                                                               (line    6)
  * for_user:                              GTY Options.        (line  119)
  * fractional types:                      Fixed-point fractional library routines.
                                                               (line    6)
  * fractMN2 instruction pattern:          Standard Names.     (line 2031)
  * fractunsMN2 instruction pattern:       Standard Names.     (line 2046)
- * fract_convert:                         Conversions.        (line   82)
- * FRACT_TYPE_SIZE:                       Type Layout.        (line   53)
  * frame layout:                          Frame Layout.       (line    6)
  * FRAME_ADDR_RTX:                        Frame Layout.       (line  108)
  * FRAME_GROWS_DOWNWARD:                  Frame Layout.       (line   26)
--- 57026,57039 ----
  * FOR_STMT:                              Statements for C and C++.
                                                               (line    6)
  * for_user:                              GTY Options.        (line  119)
+ * FORCE_CODE_SECTION_ALIGN:              Sections.           (line  149)
+ * force_reg:                             Standard Names.     (line   36)
+ * fract_convert:                         Conversions.        (line   82)
+ * FRACT_TYPE_SIZE:                       Type Layout.        (line   53)
  * fractional types:                      Fixed-point fractional library routines.
                                                               (line    6)
  * fractMN2 instruction pattern:          Standard Names.     (line 2031)
  * fractunsMN2 instruction pattern:       Standard Names.     (line 2046)
  * frame layout:                          Frame Layout.       (line    6)
  * FRAME_ADDR_RTX:                        Frame Layout.       (line  108)
  * FRAME_GROWS_DOWNWARD:                  Frame Layout.       (line   26)
*************** Concept Index
*** 57057,57064 ****
                                                               (line  179)
  * function properties:                   Function Properties.
                                                               (line    6)
- * function-call insns:                   Calls.              (line    6)
- * functions, leaf:                       Leaf Functions.     (line    6)
  * FUNCTION_ARG_REGNO_P:                  Register Arguments. (line  255)
  * FUNCTION_BOUNDARY:                     Storage Layout.     (line  203)
  * FUNCTION_DECL:                         Functions.          (line    6)
--- 57061,57066 ----
*************** Concept Index
*** 57068,57073 ****
--- 57070,57077 ----
  * FUNCTION_TYPE:                         Types.              (line    6)
  * FUNCTION_VALUE:                        Scalar Return.      (line   52)
  * FUNCTION_VALUE_REGNO_P:                Scalar Return.      (line   78)
+ * function-call insns:                   Calls.              (line    6)
+ * functions, leaf:                       Leaf Functions.     (line    6)
  * fundamental type:                      Types.              (line    6)
  * fused multiply-add:                    Arithmetic.         (line  118)
  * G in constraint:                       Simple Constraints. (line   96)
*************** Concept Index
*** 57082,57087 ****
--- 57086,57094 ----
                                                               (line   41)
  * ge:                                    Comparisons.        (line   62)
  * ge and attributes:                     Expressions.        (line   83)
+ * GE_EXPR:                               Unary and Binary Expressions.
+                                                              (line    6)
+ * GEN_ERRNO_RTX:                         Library Calls.      (line   71)
  * gencodes:                              RTL passes.         (line   18)
  * general_operand:                       Machine-Independent Predicates.
                                                               (line  104)
*************** Concept Index
*** 57094,57100 ****
  * generic predicates:                    Machine-Independent Predicates.
                                                               (line    6)
  * genflags:                              RTL passes.         (line   18)
- * GEN_ERRNO_RTX:                         Library Calls.      (line   71)
  * get_attr:                              Expressions.        (line   99)
  * get_attr_length:                       Insn Lengths.       (line   52)
  * GET_CLASS_NARROWEST_MODE:              Machine Modes.      (line  440)
--- 57101,57106 ----
*************** Concept Index
*** 57121,57128 ****
                                                               (line 3209)
  * geu:                                   Comparisons.        (line   62)
  * geu and attributes:                    Expressions.        (line   83)
- * GE_EXPR:                               Unary and Binary Expressions.
-                                                              (line    6)
  * GGC:                                   Type Information.   (line    6)
  * ggc_collect:                           Invoking the garbage collector.
                                                               (line    6)
--- 57127,57132 ----
*************** Concept Index
*** 57165,57178 ****
  * gimple_assign_cast_p <1>:              GIMPLE_ASSIGN.      (line  104)
  * gimple_assign_lhs:                     GIMPLE_ASSIGN.      (line   62)
  * gimple_assign_lhs_ptr:                 GIMPLE_ASSIGN.      (line   65)
  * gimple_assign_rhs1:                    GIMPLE_ASSIGN.      (line   68)
  * gimple_assign_rhs1_ptr:                GIMPLE_ASSIGN.      (line   71)
  * gimple_assign_rhs2:                    GIMPLE_ASSIGN.      (line   75)
  * gimple_assign_rhs2_ptr:                GIMPLE_ASSIGN.      (line   78)
  * gimple_assign_rhs3:                    GIMPLE_ASSIGN.      (line   82)
  * gimple_assign_rhs3_ptr:                GIMPLE_ASSIGN.      (line   85)
- * gimple_assign_rhs_class:               GIMPLE_ASSIGN.      (line   56)
- * gimple_assign_rhs_code:                GIMPLE_ASSIGN.      (line   52)
  * gimple_assign_set_lhs:                 GIMPLE_ASSIGN.      (line   89)
  * gimple_assign_set_rhs1:                GIMPLE_ASSIGN.      (line   92)
  * gimple_assign_set_rhs2:                GIMPLE_ASSIGN.      (line   96)
--- 57169,57182 ----
  * gimple_assign_cast_p <1>:              GIMPLE_ASSIGN.      (line  104)
  * gimple_assign_lhs:                     GIMPLE_ASSIGN.      (line   62)
  * gimple_assign_lhs_ptr:                 GIMPLE_ASSIGN.      (line   65)
+ * gimple_assign_rhs_class:               GIMPLE_ASSIGN.      (line   56)
+ * gimple_assign_rhs_code:                GIMPLE_ASSIGN.      (line   52)
  * gimple_assign_rhs1:                    GIMPLE_ASSIGN.      (line   68)
  * gimple_assign_rhs1_ptr:                GIMPLE_ASSIGN.      (line   71)
  * gimple_assign_rhs2:                    GIMPLE_ASSIGN.      (line   75)
  * gimple_assign_rhs2_ptr:                GIMPLE_ASSIGN.      (line   78)
  * gimple_assign_rhs3:                    GIMPLE_ASSIGN.      (line   82)
  * gimple_assign_rhs3_ptr:                GIMPLE_ASSIGN.      (line   85)
  * gimple_assign_set_lhs:                 GIMPLE_ASSIGN.      (line   89)
  * gimple_assign_set_rhs1:                GIMPLE_ASSIGN.      (line   92)
  * gimple_assign_set_rhs2:                GIMPLE_ASSIGN.      (line   96)
*************** Concept Index
*** 57300,57309 ****
                                                               (line   40)
  * gimple_modified_p:                     Manipulating GIMPLE statements.
                                                               (line  122)
- * GIMPLE_NOP:                            GIMPLE_NOP.         (line    6)
- * gimple_nop_p:                          GIMPLE_NOP.         (line    9)
  * gimple_no_warning_p:                   Manipulating GIMPLE statements.
                                                               (line   43)
  * gimple_num_ops:                        Logical Operators.  (line   75)
  * gimple_num_ops <1>:                    Manipulating GIMPLE statements.
                                                               (line   67)
--- 57304,57313 ----
                                                               (line   40)
  * gimple_modified_p:                     Manipulating GIMPLE statements.
                                                               (line  122)
  * gimple_no_warning_p:                   Manipulating GIMPLE statements.
                                                               (line   43)
+ * GIMPLE_NOP:                            GIMPLE_NOP.         (line    6)
+ * gimple_nop_p:                          GIMPLE_NOP.         (line    9)
  * gimple_num_ops:                        Logical Operators.  (line   75)
  * gimple_num_ops <1>:                    Manipulating GIMPLE statements.
                                                               (line   67)
*************** Concept Index
*** 57397,57402 ****
--- 57401,57408 ----
  * gimple_omp_return_nowait_p:            GIMPLE_OMP_RETURN.  (line   13)
  * gimple_omp_return_set_nowait:          GIMPLE_OMP_RETURN.  (line   10)
  * GIMPLE_OMP_SECTION:                    GIMPLE_OMP_SECTION. (line    6)
+ * gimple_omp_section_last_p:             GIMPLE_OMP_SECTION. (line   11)
+ * gimple_omp_section_set_last:           GIMPLE_OMP_SECTION. (line   15)
  * GIMPLE_OMP_SECTIONS:                   GIMPLE_OMP_SECTIONS.
                                                               (line    6)
  * gimple_omp_sections_clauses:           GIMPLE_OMP_SECTIONS.
*************** Concept Index
*** 57411,57418 ****
                                                               (line   35)
  * gimple_omp_sections_set_control:       GIMPLE_OMP_SECTIONS.
                                                               (line   24)
- * gimple_omp_section_last_p:             GIMPLE_OMP_SECTION. (line   11)
- * gimple_omp_section_set_last:           GIMPLE_OMP_SECTION. (line   15)
  * gimple_omp_set_body:                   GIMPLE_OMP_PARALLEL.
                                                               (line   26)
  * GIMPLE_OMP_SINGLE:                     GIMPLE_OMP_SINGLE.  (line    6)
--- 57417,57422 ----
*************** Concept Index
*** 57424,57434 ****
  * gimple_op:                             Logical Operators.  (line   78)
  * gimple_op <1>:                         Manipulating GIMPLE statements.
                                                               (line   73)
  * gimple_ops:                            Logical Operators.  (line   81)
  * gimple_ops <1>:                        Manipulating GIMPLE statements.
                                                               (line   70)
- * gimple_op_ptr:                         Manipulating GIMPLE statements.
-                                                              (line   76)
  * GIMPLE_PHI:                            GIMPLE_PHI.         (line    6)
  * gimple_phi_arg:                        GIMPLE_PHI.         (line   24)
  * gimple_phi_arg <1>:                    SSA.                (line   62)
--- 57428,57438 ----
  * gimple_op:                             Logical Operators.  (line   78)
  * gimple_op <1>:                         Manipulating GIMPLE statements.
                                                               (line   73)
+ * gimple_op_ptr:                         Manipulating GIMPLE statements.
+                                                              (line   76)
  * gimple_ops:                            Logical Operators.  (line   81)
  * gimple_ops <1>:                        Manipulating GIMPLE statements.
                                                               (line   70)
  * GIMPLE_PHI:                            GIMPLE_PHI.         (line    6)
  * gimple_phi_arg:                        GIMPLE_PHI.         (line   24)
  * gimple_phi_arg <1>:                    SSA.                (line   62)
*************** Concept Index
*** 57599,57609 ****
  * gsi_stmt_ptr:                          Sequence iterators. (line   79)
  * gt:                                    Comparisons.        (line   50)
  * gt and attributes:                     Expressions.        (line   83)
  * gtu:                                   Comparisons.        (line   54)
  * gtu and attributes:                    Expressions.        (line   83)
  * GTY:                                   Type Information.   (line    6)
- * GT_EXPR:                               Unary and Binary Expressions.
-                                                              (line    6)
  * guidelines for diagnostics:            Guidelines for Diagnostics.
                                                               (line    6)
  * guidelines for options:                Guidelines for Options.
--- 57603,57613 ----
  * gsi_stmt_ptr:                          Sequence iterators. (line   79)
  * gt:                                    Comparisons.        (line   50)
  * gt and attributes:                     Expressions.        (line   83)
+ * GT_EXPR:                               Unary and Binary Expressions.
+                                                              (line    6)
  * gtu:                                   Comparisons.        (line   54)
  * gtu and attributes:                    Expressions.        (line   83)
  * GTY:                                   Type Information.   (line    6)
  * guidelines for diagnostics:            Guidelines for Diagnostics.
                                                               (line    6)
  * guidelines for options:                Guidelines for Options.
*************** Concept Index
*** 57612,57624 ****
                                                               (line    6)
  * H in constraint:                       Simple Constraints. (line   96)
  * HAmode:                                Machine Modes.      (line  146)
  * HANDLER:                               Statements for C and C++.
                                                               (line    6)
  * HANDLER_BODY:                          Statements for C and C++.
                                                               (line    6)
  * HANDLER_PARMS:                         Statements for C and C++.
                                                               (line    6)
- * HANDLE_PRAGMA_PACK_WITH_EXPANSION:     Misc.               (line  477)
  * hard registers:                        Regs and Memory.    (line    9)
  * HARD_FRAME_POINTER_IS_ARG_POINTER:     Frame Registers.    (line   57)
  * HARD_FRAME_POINTER_IS_FRAME_POINTER:   Frame Registers.    (line   50)
--- 57616,57628 ----
                                                               (line    6)
  * H in constraint:                       Simple Constraints. (line   96)
  * HAmode:                                Machine Modes.      (line  146)
+ * HANDLE_PRAGMA_PACK_WITH_EXPANSION:     Misc.               (line  477)
  * HANDLER:                               Statements for C and C++.
                                                               (line    6)
  * HANDLER_BODY:                          Statements for C and C++.
                                                               (line    6)
  * HANDLER_PARMS:                         Statements for C and C++.
                                                               (line    6)
  * hard registers:                        Regs and Memory.    (line    9)
  * HARD_FRAME_POINTER_IS_ARG_POINTER:     Frame Registers.    (line   57)
  * HARD_FRAME_POINTER_IS_FRAME_POINTER:   Frame Registers.    (line   50)
*************** Concept Index
*** 57677,57682 ****
--- 57681,57693 ----
  * IDENTIFIER_TYPENAME_P:                 Identifiers.        (line   33)
  * IEEE 754-2008:                         Decimal float library routines.
                                                               (line    6)
+ * IF_COND:                               Statements for C and C++.
+                                                              (line    6)
+ * IF_STMT:                               Statements for C and C++.
+                                                              (line    6)
+ * if_then_else:                          Comparisons.        (line   70)
+ * if_then_else and attributes:           Expressions.        (line   32)
+ * if_then_else usage:                    Side Effects.       (line   49)
  * IFCVT_MACHDEP_INIT:                    Misc.               (line  607)
  * IFCVT_MODIFY_CANCEL:                   Misc.               (line  601)
  * IFCVT_MODIFY_FINAL:                    Misc.               (line  595)
*************** Concept Index
*** 57693,57717 ****
  * IFN_VEC_WIDEN_PLUS_HI:                 Vectors.            (line    6)
  * IFN_VEC_WIDEN_PLUS_LO:                 Vectors.            (line    6)
  * IFN_VEC_WIDEN_PLUS_ODD:                Vectors.            (line    6)
- * IF_COND:                               Statements for C and C++.
-                                                              (line    6)
- * IF_STMT:                               Statements for C and C++.
-                                                              (line    6)
- * if_then_else:                          Comparisons.        (line   70)
- * if_then_else and attributes:           Expressions.        (line   32)
- * if_then_else usage:                    Side Effects.       (line   49)
  * IMAGPART_EXPR:                         Unary and Binary Expressions.
                                                               (line    6)
  * Immediate Uses:                        SSA Operands.       (line  258)
  * immediate_operand:                     Machine-Independent Predicates.
                                                               (line   10)
  * IMMEDIATE_PREFIX:                      Instruction Output. (line  153)
  * include:                               Including Patterns. (line    6)
  * INCLUDE_DEFAULTS:                      Driver.             (line  331)
  * inclusive-or, bitwise:                 Arithmetic.         (line  169)
  * INCOMING_FRAME_SP_OFFSET:              Frame Layout.       (line  194)
- * INCOMING_REGNO:                        Register Basics.    (line  129)
  * INCOMING_REG_PARM_STACK_SPACE:         Stack Arguments.    (line   76)
  * INCOMING_RETURN_ADDR_RTX:              Frame Layout.       (line  133)
  * INCOMING_STACK_BOUNDARY:               Storage Layout.     (line  198)
  * INDEX_REG_CLASS:                       Register Classes.   (line  149)
--- 57704,57727 ----
  * IFN_VEC_WIDEN_PLUS_HI:                 Vectors.            (line    6)
  * IFN_VEC_WIDEN_PLUS_LO:                 Vectors.            (line    6)
  * IFN_VEC_WIDEN_PLUS_ODD:                Vectors.            (line    6)
  * IMAGPART_EXPR:                         Unary and Binary Expressions.
                                                               (line    6)
  * Immediate Uses:                        SSA Operands.       (line  258)
  * immediate_operand:                     Machine-Independent Predicates.
                                                               (line   10)
  * IMMEDIATE_PREFIX:                      Instruction Output. (line  153)
+ * in_struct:                             Flags.              (line  254)
+ * in_struct, in code_label and note:     Flags.              (line   48)
+ * in_struct, in insn and jump_insn and call_insn: Flags.     (line   38)
+ * in_struct, in insn, call_insn, jump_insn and jump_table_data: Flags.
+                                                              (line  162)
+ * in_struct, in subreg:                  Flags.              (line  201)
  * include:                               Including Patterns. (line    6)
  * INCLUDE_DEFAULTS:                      Driver.             (line  331)
  * inclusive-or, bitwise:                 Arithmetic.         (line  169)
  * INCOMING_FRAME_SP_OFFSET:              Frame Layout.       (line  194)
  * INCOMING_REG_PARM_STACK_SPACE:         Stack Arguments.    (line   76)
+ * INCOMING_REGNO:                        Register Basics.    (line  129)
  * INCOMING_RETURN_ADDR_RTX:              Frame Layout.       (line  133)
  * INCOMING_STACK_BOUNDARY:               Storage Layout.     (line  198)
  * INDEX_REG_CLASS:                       Register Classes.   (line  149)
*************** Concept Index
*** 57719,57727 ****
  * indirect_operand:                      Machine-Independent Predicates.
                                                               (line   70)
  * INDIRECT_REF:                          Storage References. (line    6)
- * initialization routines:               Initialization.     (line    6)
- * INITIAL_ELIMINATION_OFFSET:            Elimination.        (line   75)
- * INITIAL_FRAME_ADDRESS_RTX:             Frame Layout.       (line   75)
  * INIT_ARRAY_SECTION_ASM_OP:             Sections.           (line  106)
  * INIT_CUMULATIVE_ARGS:                  Register Arguments. (line  152)
  * INIT_CUMULATIVE_INCOMING_ARGS:         Register Arguments. (line  180)
--- 57729,57734 ----
*************** Concept Index
*** 57735,57740 ****
--- 57742,57750 ----
  * INIT_SECTION_ASM_OP:                   Sections.           (line   90)
  * INIT_SECTION_ASM_OP <1>:               Macros for Initialization.
                                                               (line    9)
+ * INITIAL_ELIMINATION_OFFSET:            Elimination.        (line   75)
+ * INITIAL_FRAME_ADDRESS_RTX:             Frame Layout.       (line   75)
+ * initialization routines:               Initialization.     (line    6)
  * inlining:                              Target Attributes.  (line  124)
  * insert_insn_on_edge:                   Maintaining the CFG.
                                                               (line  104)
*************** Concept Index
*** 57752,57762 ****
  * insn lengths, computing:               Insn Lengths.       (line    6)
  * insn notes, notes:                     Basic Blocks.       (line   52)
  * insn splitting:                        Insn Splitting.     (line    6)
- * insn-attr.h:                           Defining Attributes.
-                                                              (line   34)
- * insns:                                 Insns.              (line    6)
- * insns, generating:                     RTL Template.       (line    6)
- * insns, recognizing:                    RTL Template.       (line    6)
  * INSN_ANNULLED_BRANCH_P:                Flags.              (line   28)
  * INSN_BASE_REG_CLASS:                   Register Classes.   (line  141)
  * INSN_CODE:                             Insns.              (line  319)
--- 57762,57767 ----
*************** Concept Index
*** 57768,57773 ****
--- 57773,57783 ----
  * INSN_SETS_ARE_DELAYED:                 Misc.               (line  493)
  * INSN_UID:                              Insns.              (line   23)
  * INSN_VAR_LOCATION:                     Insns.              (line  248)
+ * insn-attr.h:                           Defining Attributes.
+                                                              (line   34)
+ * insns:                                 Insns.              (line    6)
+ * insns, generating:                     RTL Template.       (line    6)
+ * insns, recognizing:                    RTL Template.       (line    6)
  * instruction attributes:                Insn Attributes.    (line    6)
  * instruction latency time:              Processor pipeline description.
                                                               (line    6)
*************** Concept Index
*** 57783,57788 ****
--- 57793,57807 ----
  * insvM instruction pattern:             Standard Names.     (line 2089)
  * insvmisalignM instruction pattern:     Standard Names.     (line 2099)
  * int iterators in .md files:            Int Iterators.      (line    6)
+ * INT_FAST16_TYPE:                       Type Layout.        (line  214)
+ * INT_FAST32_TYPE:                       Type Layout.        (line  215)
+ * INT_FAST64_TYPE:                       Type Layout.        (line  216)
+ * INT_FAST8_TYPE:                        Type Layout.        (line  213)
+ * INT_LEAST16_TYPE:                      Type Layout.        (line  206)
+ * INT_LEAST32_TYPE:                      Type Layout.        (line  207)
+ * INT_LEAST64_TYPE:                      Type Layout.        (line  208)
+ * INT_LEAST8_TYPE:                       Type Layout.        (line  205)
+ * INT_TYPE_SIZE:                         Type Layout.        (line   11)
  * INT16_TYPE:                            Type Layout.        (line  198)
  * INT32_TYPE:                            Type Layout.        (line  199)
  * INT64_TYPE:                            Type Layout.        (line  200)
*************** Concept Index
*** 57798,57820 ****
  * INTMAX_TYPE:                           Type Layout.        (line  174)
  * INTPTR_TYPE:                           Type Layout.        (line  221)
  * introduction:                          Top.                (line    6)
- * INT_FAST16_TYPE:                       Type Layout.        (line  214)
- * INT_FAST32_TYPE:                       Type Layout.        (line  215)
- * INT_FAST64_TYPE:                       Type Layout.        (line  216)
- * INT_FAST8_TYPE:                        Type Layout.        (line  213)
- * INT_LEAST16_TYPE:                      Type Layout.        (line  206)
- * INT_LEAST32_TYPE:                      Type Layout.        (line  207)
- * INT_LEAST64_TYPE:                      Type Layout.        (line  208)
- * INT_LEAST8_TYPE:                       Type Layout.        (line  205)
- * INT_TYPE_SIZE:                         Type Layout.        (line   11)
  * INVOKE__main:                          Macros for Initialization.
                                                               (line   50)
- * in_struct:                             Flags.              (line  254)
- * in_struct, in code_label and note:     Flags.              (line   48)
- * in_struct, in insn and jump_insn and call_insn: Flags.     (line   38)
- * in_struct, in insn, call_insn, jump_insn and jump_table_data: Flags.
-                                                              (line  162)
- * in_struct, in subreg:                  Flags.              (line  201)
  * ior:                                   Arithmetic.         (line  169)
  * ior and attributes:                    Expressions.        (line   50)
  * ior, canonicalization of:              Insn Canonicalizations.
--- 57817,57824 ----
*************** Concept Index
*** 57823,57831 ****
  * iornM3 instruction pattern:            Standard Names.     (line  693)
  * IPA passes:                            IPA passes.         (line    6)
  * IRA_HARD_REGNO_ADD_COST_MULTIPLIER:    Allocation Order.   (line   44)
- * isfiniteM2 instruction pattern:        Standard Names.     (line 3298)
- * isnormalM2 instruction pattern:        Standard Names.     (line 3303)
- * issignalingM2 instruction pattern:     Standard Names.     (line 1556)
  * is_a:                                  Machine Modes.      (line  351)
  * IS_ASM_LOGICAL_LINE_SEPARATOR:         Data Output.        (line  129)
  * is_gimple_addressable:                 Logical Operators.  (line  112)
--- 57827,57832 ----
*************** Concept Index
*** 57841,57846 ****
--- 57842,57850 ----
  * is_gimple_min_invariant:               Logical Operators.  (line  130)
  * is_gimple_omp:                         Logical Operators.  (line  165)
  * is_gimple_val:                         Logical Operators.  (line  106)
+ * isfiniteM2 instruction pattern:        Standard Names.     (line 3298)
+ * isnormalM2 instruction pattern:        Standard Names.     (line 3303)
+ * issignalingM2 instruction pattern:     Standard Names.     (line 1556)
  * iterators in .md files:                Iterators.          (line    6)
  * IV analysis on GIMPLE:                 Scalar evolutions.  (line    6)
  * IV analysis on RTL:                    loop-iv.            (line    6)
*************** Concept Index
*** 57850,57859 ****
  * jump instruction pattern:              Standard Names.     (line 2413)
  * jump instruction patterns:             Jump Patterns.      (line    6)
  * jump instructions and set:             Side Effects.       (line   49)
- * jump, in call_insn:                    Flags.              (line  175)
- * jump, in insn:                         Flags.              (line  171)
- * jump, in mem:                          Flags.              (line   59)
- * Jumps:                                 Jumps.              (line    6)
  * JUMP_ALIGN:                            Alignment Output.   (line    8)
  * jump_insn:                             Insns.              (line   73)
  * jump_insn and /f:                      Flags.              (line  135)
--- 57854,57859 ----
*************** Concept Index
*** 57863,57936 ****
  * jump_insn and /u:                      Flags.              (line   28)
  * jump_insn and /v:                      Flags.              (line   33)
  * JUMP_LABEL:                            Insns.              (line   80)
- * JUMP_TABLES_IN_TEXT_SECTION:           Sections.           (line  155)
  * jump_table_data:                       Insns.              (line  166)
  * jump_table_data and /s:                Flags.              (line  162)
  * jump_table_data and /v:                Flags.              (line   33)
  * LABEL_ALIGN:                           Alignment Output.   (line   42)
  * LABEL_ALIGN_AFTER_BARRIER:             Alignment Output.   (line   21)
- * LABEL_ALTERNATE_NAME:                  Edges.              (line  179)
  * LABEL_ALT_ENTRY_P:                     Insns.              (line  146)
  * LABEL_DECL:                            Declarations.       (line    6)
  * LABEL_KIND:                            Insns.              (line  146)
  * LABEL_NUSES:                           Insns.              (line  142)
  * LABEL_PRESERVE_P:                      Flags.              (line   48)
  * label_ref:                             Constants.          (line  213)
  * label_ref and /v:                      Flags.              (line   54)
- * label_ref, RTL sharing:                Sharing.            (line   36)
  * LABEL_REF_NONLOCAL_P:                  Flags.              (line   54)
  * language-dependent trees:              Language-dependent trees.
                                                               (line    6)
  * language-independent intermediate representation: Parsing pass.
                                                               (line   13)
- * lang_hooks.gimplify_expr:              Gimplification pass.
-                                                              (line   18)
- * lang_hooks.parse_file:                 Parsing pass.       (line    6)
  * large return values:                   Aggregate Return.   (line    6)
  * LAST_STACK_REG:                        Stack Registers.    (line   30)
  * LAST_VIRTUAL_REGISTER:                 Regs and Memory.    (line   51)
  * late IPA passes:                       Late IPA passes.    (line    6)
  * lceilMN2:                              Standard Names.     (line 1536)
  * LCSSA:                                 LCSSA.              (line    6)
- * LDD_SUFFIX:                            Macros for Initialization.
-                                                              (line  129)
- * ldexpM3 instruction pattern:           Standard Names.     (line 1298)
  * LD_FINI_SWITCH:                        Macros for Initialization.
                                                               (line   28)
  * LD_INIT_SWITCH:                        Macros for Initialization.
                                                               (line   24)
  * le:                                    Comparisons.        (line   66)
  * le and attributes:                     Expressions.        (line   83)
  * leaf functions:                        Leaf Functions.     (line    6)
  * leaf_function_p:                       Standard Names.     (line 2501)
- * LEAF_REGISTERS:                        Leaf Functions.     (line   23)
  * LEAF_REG_REMAP:                        Leaf Functions.     (line   37)
  * left rotate:                           Arithmetic.         (line  201)
  * left shift:                            Arithmetic.         (line  179)
  * LEGITIMATE_PIC_OPERAND_P:              PIC.                (line   31)
  * LEGITIMIZE_RELOAD_ADDRESS:             Addressing Modes.   (line  158)
- * length:                                GTY Options.        (line   47)
  * len_fold_extract_last_M instruction pattern: Standard Names.
                                                               (line  823)
  * len_load_M instruction pattern:        Standard Names.     (line  537)
  * len_store_M instruction pattern:       Standard Names.     (line  559)
  * less than:                             Comparisons.        (line   58)
  * less than or equal:                    Comparisons.        (line   66)
  * leu:                                   Comparisons.        (line   66)
  * leu and attributes:                    Expressions.        (line   83)
- * LE_EXPR:                               Unary and Binary Expressions.
-                                                              (line    6)
  * lfloorMN2:                             Standard Names.     (line 1531)
  * LIB2FUNCS_EXTRA:                       Target Fragment.    (line   11)
  * LIBCALL_VALUE:                         Scalar Return.      (line   56)
  * libgcc.a:                              Library Calls.      (line    6)
  * LIBGCC2_CFLAGS:                        Target Fragment.    (line    8)
  * LIBGCC2_GNU_PREFIX:                    Type Layout.        (line   88)
  * LIBGCC2_UNWIND_ATTRIBUTE:              Misc.               (line 1102)
- * LIBGCC_SPEC:                           Driver.             (line  115)
  * library subroutine names:              Library Calls.      (line    6)
  * LIBRARY_PATH_ENV:                      Misc.               (line  550)
- * LIB_SPEC:                              Driver.             (line  107)
  * LIMIT_RELOAD_CLASS:                    Register Classes.   (line  320)
  * LINK_COMMAND_SPEC:                     Driver.             (line  240)
  * LINK_EH_SPEC:                          Driver.             (line  142)
--- 57863,57940 ----
  * jump_insn and /u:                      Flags.              (line   28)
  * jump_insn and /v:                      Flags.              (line   33)
  * JUMP_LABEL:                            Insns.              (line   80)
  * jump_table_data:                       Insns.              (line  166)
  * jump_table_data and /s:                Flags.              (line  162)
  * jump_table_data and /v:                Flags.              (line   33)
+ * JUMP_TABLES_IN_TEXT_SECTION:           Sections.           (line  155)
+ * jump, in call_insn:                    Flags.              (line  175)
+ * jump, in insn:                         Flags.              (line  171)
+ * jump, in mem:                          Flags.              (line   59)
+ * Jumps:                                 Jumps.              (line    6)
  * LABEL_ALIGN:                           Alignment Output.   (line   42)
  * LABEL_ALIGN_AFTER_BARRIER:             Alignment Output.   (line   21)
  * LABEL_ALT_ENTRY_P:                     Insns.              (line  146)
+ * LABEL_ALTERNATE_NAME:                  Edges.              (line  179)
  * LABEL_DECL:                            Declarations.       (line    6)
  * LABEL_KIND:                            Insns.              (line  146)
  * LABEL_NUSES:                           Insns.              (line  142)
  * LABEL_PRESERVE_P:                      Flags.              (line   48)
  * label_ref:                             Constants.          (line  213)
  * label_ref and /v:                      Flags.              (line   54)
  * LABEL_REF_NONLOCAL_P:                  Flags.              (line   54)
+ * label_ref, RTL sharing:                Sharing.            (line   36)
+ * lang_hooks.gimplify_expr:              Gimplification pass.
+                                                              (line   18)
+ * lang_hooks.parse_file:                 Parsing pass.       (line    6)
  * language-dependent trees:              Language-dependent trees.
                                                               (line    6)
  * language-independent intermediate representation: Parsing pass.
                                                               (line   13)
  * large return values:                   Aggregate Return.   (line    6)
  * LAST_STACK_REG:                        Stack Registers.    (line   30)
  * LAST_VIRTUAL_REGISTER:                 Regs and Memory.    (line   51)
  * late IPA passes:                       Late IPA passes.    (line    6)
  * lceilMN2:                              Standard Names.     (line 1536)
  * LCSSA:                                 LCSSA.              (line    6)
  * LD_FINI_SWITCH:                        Macros for Initialization.
                                                               (line   28)
  * LD_INIT_SWITCH:                        Macros for Initialization.
                                                               (line   24)
+ * LDD_SUFFIX:                            Macros for Initialization.
+                                                              (line  129)
+ * ldexpM3 instruction pattern:           Standard Names.     (line 1298)
  * le:                                    Comparisons.        (line   66)
  * le and attributes:                     Expressions.        (line   83)
+ * LE_EXPR:                               Unary and Binary Expressions.
+                                                              (line    6)
  * leaf functions:                        Leaf Functions.     (line    6)
  * leaf_function_p:                       Standard Names.     (line 2501)
  * LEAF_REG_REMAP:                        Leaf Functions.     (line   37)
+ * LEAF_REGISTERS:                        Leaf Functions.     (line   23)
  * left rotate:                           Arithmetic.         (line  201)
  * left shift:                            Arithmetic.         (line  179)
  * LEGITIMATE_PIC_OPERAND_P:              PIC.                (line   31)
  * LEGITIMIZE_RELOAD_ADDRESS:             Addressing Modes.   (line  158)
  * len_fold_extract_last_M instruction pattern: Standard Names.
                                                               (line  823)
  * len_load_M instruction pattern:        Standard Names.     (line  537)
  * len_store_M instruction pattern:       Standard Names.     (line  559)
+ * length:                                GTY Options.        (line   47)
  * less than:                             Comparisons.        (line   58)
  * less than or equal:                    Comparisons.        (line   66)
  * leu:                                   Comparisons.        (line   66)
  * leu and attributes:                    Expressions.        (line   83)
  * lfloorMN2:                             Standard Names.     (line 1531)
+ * LIB_SPEC:                              Driver.             (line  107)
  * LIB2FUNCS_EXTRA:                       Target Fragment.    (line   11)
  * LIBCALL_VALUE:                         Scalar Return.      (line   56)
+ * LIBGCC_SPEC:                           Driver.             (line  115)
  * libgcc.a:                              Library Calls.      (line    6)
  * LIBGCC2_CFLAGS:                        Target Fragment.    (line    8)
  * LIBGCC2_GNU_PREFIX:                    Type Layout.        (line   88)
  * LIBGCC2_UNWIND_ATTRIBUTE:              Misc.               (line 1102)
  * library subroutine names:              Library Calls.      (line    6)
  * LIBRARY_PATH_ENV:                      Misc.               (line  550)
  * LIMIT_RELOAD_CLASS:                    Register Classes.   (line  320)
  * LINK_COMMAND_SPEC:                     Driver.             (line  240)
  * LINK_EH_SPEC:                          Driver.             (line  142)
*************** Concept Index
*** 57940,57945 ****
--- 57944,57950 ----
  * list:                                  Containers.         (line    6)
  * Liveness representation:               Liveness information.
                                                               (line    6)
+ * lo_sum:                                Arithmetic.         (line   25)
  * load address instruction:              Simple Constraints. (line  162)
  * LOAD_EXTEND_OP:                        Misc.               (line   80)
  * load_multiple instruction pattern:     Standard Names.     (line  136)
*************** Concept Index
*** 57957,57964 ****
  * log2M2 instruction pattern:            Standard Names.     (line 1422)
  * logbM2 instruction pattern:            Standard Names.     (line 1429)
  * Logical Operators:                     Logical Operators.  (line    6)
- * logical-and, bitwise:                  Arithmetic.         (line  164)
  * LOGICAL_OP_NON_SHORT_CIRCUIT:          Costs.              (line  366)
  * logM2 instruction pattern:             Standard Names.     (line 1398)
  * LONG_ACCUM_TYPE_SIZE:                  Type Layout.        (line   78)
  * LONG_FRACT_TYPE_SIZE:                  Type Layout.        (line   58)
--- 57962,57969 ----
  * log2M2 instruction pattern:            Standard Names.     (line 1422)
  * logbM2 instruction pattern:            Standard Names.     (line 1429)
  * Logical Operators:                     Logical Operators.  (line    6)
  * LOGICAL_OP_NON_SHORT_CIRCUIT:          Costs.              (line  366)
+ * logical-and, bitwise:                  Arithmetic.         (line  164)
  * logM2 instruction pattern:             Standard Names.     (line 1398)
  * LONG_ACCUM_TYPE_SIZE:                  Type Layout.        (line   78)
  * LONG_FRACT_TYPE_SIZE:                  Type Layout.        (line   58)
*************** Concept Index
*** 57972,58004 ****
  * Loop querying:                         Loop querying.      (line    6)
  * Loop representation:                   Loop representation.
                                                               (line    6)
- * Loop-closed SSA form:                  LCSSA.              (line    6)
- * looping instruction patterns:          Looping Patterns.   (line    6)
  * LOOP_ALIGN:                            Alignment Output.   (line   29)
  * LOOP_EXPR:                             Unary and Binary Expressions.
                                                               (line    6)
  * lowering, language-dependent intermediate representation: Parsing pass.
                                                               (line   13)
- * lo_sum:                                Arithmetic.         (line   25)
  * lrintMN2:                              Standard Names.     (line 1521)
  * LROTATE_EXPR:                          Unary and Binary Expressions.
                                                               (line    6)
  * lroundMN2:                             Standard Names.     (line 1526)
- * lshiftrt:                              Arithmetic.         (line  196)
- * lshiftrt and attributes:               Expressions.        (line   83)
  * LSHIFT_EXPR:                           Unary and Binary Expressions.
                                                               (line    6)
  * lshrM3 instruction pattern:            Standard Names.     (line 1210)
  * lt:                                    Comparisons.        (line   58)
  * lt and attributes:                     Expressions.        (line   83)
  * LTGT_EXPR:                             Unary and Binary Expressions.
                                                               (line    6)
  * lto:                                   LTO.                (line    6)
  * ltrans:                                LTO.                (line    6)
  * ltu:                                   Comparisons.        (line   58)
- * LT_EXPR:                               Unary and Binary Expressions.
-                                                              (line    6)
  * m in constraint:                       Simple Constraints. (line   17)
  * machine attributes:                    Target Attributes.  (line    6)
  * machine description macros:            Target Macros.      (line    6)
  * machine descriptions:                  Machine Desc.       (line    6)
--- 57977,58009 ----
  * Loop querying:                         Loop querying.      (line    6)
  * Loop representation:                   Loop representation.
                                                               (line    6)
  * LOOP_ALIGN:                            Alignment Output.   (line   29)
  * LOOP_EXPR:                             Unary and Binary Expressions.
                                                               (line    6)
+ * Loop-closed SSA form:                  LCSSA.              (line    6)
+ * looping instruction patterns:          Looping Patterns.   (line    6)
  * lowering, language-dependent intermediate representation: Parsing pass.
                                                               (line   13)
  * lrintMN2:                              Standard Names.     (line 1521)
  * LROTATE_EXPR:                          Unary and Binary Expressions.
                                                               (line    6)
  * lroundMN2:                             Standard Names.     (line 1526)
  * LSHIFT_EXPR:                           Unary and Binary Expressions.
                                                               (line    6)
+ * lshiftrt:                              Arithmetic.         (line  196)
+ * lshiftrt and attributes:               Expressions.        (line   83)
  * lshrM3 instruction pattern:            Standard Names.     (line 1210)
  * lt:                                    Comparisons.        (line   58)
  * lt and attributes:                     Expressions.        (line   83)
+ * LT_EXPR:                               Unary and Binary Expressions.
+                                                              (line    6)
  * LTGT_EXPR:                             Unary and Binary Expressions.
                                                               (line    6)
  * lto:                                   LTO.                (line    6)
  * ltrans:                                LTO.                (line    6)
  * ltu:                                   Comparisons.        (line   58)
  * m in constraint:                       Simple Constraints. (line   17)
+ * MACH_DEP_SECTION_ASM_FLAG:             Sections.           (line  120)
  * machine attributes:                    Target Attributes.  (line    6)
  * machine description macros:            Target Macros.      (line    6)
  * machine descriptions:                  Machine Desc.       (line    6)
*************** Concept Index
*** 58007,58029 ****
  * machine modes:                         Machine Modes.      (line    6)
  * machine specific constraints:          Machine Constraints.
                                                               (line    6)
  * machine-independent predicates:        Machine-Independent Predicates.
                                                               (line    6)
- * machine_mode:                          Machine Modes.      (line    6)
- * MACH_DEP_SECTION_ASM_FLAG:             Sections.           (line  120)
  * macros, target description:            Target Macros.      (line    6)
  * maddMN4 instruction pattern:           Standard Names.     (line 1131)
- * makefile fragment:                     Fragments.          (line    6)
- * makefile targets:                      Makefile.           (line    6)
  * MAKE_DECL_ONE_ONLY:                    Label Output.       (line  281)
  * make_safe_from:                        Expander Definitions.
                                                               (line  150)
  * MALLOC_ABI_ALIGNMENT:                  Storage Layout.     (line  217)
  * Manipulating GIMPLE statements:        Manipulating GIMPLE statements.
                                                               (line    6)
  * marking roots:                         GGC Roots.          (line    6)
- * maskloadMN instruction pattern:        Standard Names.     (line  518)
- * maskstoreMN instruction pattern:       Standard Names.     (line  530)
  * mask_fold_left_plus_M instruction pattern: Standard Names. (line  835)
  * mask_gather_loadMN instruction pattern: Standard Names.    (line  282)
  * mask_len_fold_left_plus_M instruction pattern: Standard Names.
--- 58012,58031 ----
  * machine modes:                         Machine Modes.      (line    6)
  * machine specific constraints:          Machine Constraints.
                                                               (line    6)
+ * machine_mode:                          Machine Modes.      (line    6)
  * machine-independent predicates:        Machine-Independent Predicates.
                                                               (line    6)
  * macros, target description:            Target Macros.      (line    6)
  * maddMN4 instruction pattern:           Standard Names.     (line 1131)
  * MAKE_DECL_ONE_ONLY:                    Label Output.       (line  281)
  * make_safe_from:                        Expander Definitions.
                                                               (line  150)
+ * makefile fragment:                     Fragments.          (line    6)
+ * makefile targets:                      Makefile.           (line    6)
  * MALLOC_ABI_ALIGNMENT:                  Storage Layout.     (line  217)
  * Manipulating GIMPLE statements:        Manipulating GIMPLE statements.
                                                               (line    6)
  * marking roots:                         GGC Roots.          (line    6)
  * mask_fold_left_plus_M instruction pattern: Standard Names. (line  835)
  * mask_gather_loadMN instruction pattern: Standard Names.    (line  282)
  * mask_len_fold_left_plus_M instruction pattern: Standard Names.
*************** Concept Index
*** 58041,58078 ****
  * MASK_RETURN_ADDR:                      Exception Region Output.
                                                               (line   35)
  * mask_scatter_storeMN instruction pattern: Standard Names.  (line  333)
  * Match and Simplify:                    Match and Simplify. (line    6)
- * matching constraint:                   Simple Constraints. (line  140)
- * matching operands:                     Output Template.    (line   49)
  * match_dup:                             RTL Template.       (line   73)
  * match_dup <1>:                         define_peephole2.   (line   28)
  * match_dup and attributes:              Insn Lengths.       (line   16)
  * match_operand:                         RTL Template.       (line   16)
  * match_operand and attributes:          Expressions.        (line   55)
  * match_operator:                        RTL Template.       (line   95)
- * match_op_dup:                          RTL Template.       (line  163)
- * match_parallel:                        RTL Template.       (line  172)
  * match_par_dup:                         RTL Template.       (line  219)
  * match_scratch:                         RTL Template.       (line   58)
  * match_scratch <1>:                     define_peephole2.   (line   28)
  * match_test and attributes:             Expressions.        (line   64)
  * math library:                          Soft float library routines.
                                                               (line    6)
  * math, in RTL:                          Arithmetic.         (line    6)
  * matherr:                               Library Calls.      (line   59)
! * MATH_LIBRARY:                          Misc.               (line  543)
! * maxM3 instruction pattern:             Standard Names.     (line  762)
  * MAX_BITSIZE_MODE_ANY_INT:              Machine Modes.      (line  454)
  * MAX_BITSIZE_MODE_ANY_MODE:             Machine Modes.      (line  460)
- * MAX_BITS_PER_WORD:                     Storage Layout.     (line   54)
  * MAX_CONDITIONAL_EXECUTE:               Misc.               (line  565)
  * MAX_FIXED_MODE_SIZE:                   Storage Layout.     (line  497)
  * MAX_MOVE_MAX:                          Misc.               (line  127)
  * MAX_OFILE_ALIGNMENT:                   Storage Layout.     (line  255)
  * MAX_REGS_PER_ADDRESS:                  Addressing Modes.   (line   42)
  * MAX_STACK_ALIGNMENT:                   Storage Layout.     (line  249)
! * maybe_undef:                           GTY Options.        (line  190)
  * may_trap_p, tree_could_trap_p:         Edges.              (line  114)
  * mcount:                                Profiling.          (line   12)
  * MD_EXEC_PREFIX:                        Driver.             (line  271)
  * MD_FALLBACK_FRAME_STATE_FOR:           Exception Handling. (line  104)
--- 58043,58082 ----
  * MASK_RETURN_ADDR:                      Exception Region Output.
                                                               (line   35)
  * mask_scatter_storeMN instruction pattern: Standard Names.  (line  333)
+ * maskloadMN instruction pattern:        Standard Names.     (line  518)
+ * maskstoreMN instruction pattern:       Standard Names.     (line  530)
  * Match and Simplify:                    Match and Simplify. (line    6)
  * match_dup:                             RTL Template.       (line   73)
  * match_dup <1>:                         define_peephole2.   (line   28)
  * match_dup and attributes:              Insn Lengths.       (line   16)
+ * match_op_dup:                          RTL Template.       (line  163)
  * match_operand:                         RTL Template.       (line   16)
  * match_operand and attributes:          Expressions.        (line   55)
  * match_operator:                        RTL Template.       (line   95)
  * match_par_dup:                         RTL Template.       (line  219)
+ * match_parallel:                        RTL Template.       (line  172)
  * match_scratch:                         RTL Template.       (line   58)
  * match_scratch <1>:                     define_peephole2.   (line   28)
  * match_test and attributes:             Expressions.        (line   64)
+ * matching constraint:                   Simple Constraints. (line  140)
+ * matching operands:                     Output Template.    (line   49)
  * math library:                          Soft float library routines.
                                                               (line    6)
+ * MATH_LIBRARY:                          Misc.               (line  543)
  * math, in RTL:                          Arithmetic.         (line    6)
  * matherr:                               Library Calls.      (line   59)
! * MAX_BITS_PER_WORD:                     Storage Layout.     (line   54)
  * MAX_BITSIZE_MODE_ANY_INT:              Machine Modes.      (line  454)
  * MAX_BITSIZE_MODE_ANY_MODE:             Machine Modes.      (line  460)
  * MAX_CONDITIONAL_EXECUTE:               Misc.               (line  565)
  * MAX_FIXED_MODE_SIZE:                   Storage Layout.     (line  497)
  * MAX_MOVE_MAX:                          Misc.               (line  127)
  * MAX_OFILE_ALIGNMENT:                   Storage Layout.     (line  255)
  * MAX_REGS_PER_ADDRESS:                  Addressing Modes.   (line   42)
  * MAX_STACK_ALIGNMENT:                   Storage Layout.     (line  249)
! * maxM3 instruction pattern:             Standard Names.     (line  762)
  * may_trap_p, tree_could_trap_p:         Edges.              (line  114)
+ * maybe_undef:                           GTY Options.        (line  190)
  * mcount:                                Profiling.          (line   12)
  * MD_EXEC_PREFIX:                        Driver.             (line  271)
  * MD_FALLBACK_FRAME_STATE_FOR:           Exception Handling. (line  104)
*************** Concept Index
*** 58085,58099 ****
  * mem and /j:                            Flags.              (line   59)
  * mem and /u:                            Flags.              (line   78)
  * mem and /v:                            Flags.              (line   65)
- * mem, RTL sharing:                      Sharing.            (line   41)
- * memory model:                          Memory model.       (line    6)
- * memory reference, nonoffsettable:      Simple Constraints. (line  266)
- * memory references in constraints:      Simple Constraints. (line   17)
- * memory_barrier instruction pattern:    Standard Names.     (line 2885)
- * memory_blockage instruction pattern:   Standard Names.     (line 2876)
- * MEMORY_MOVE_COST:                      Costs.              (line   53)
- * memory_operand:                        Machine-Independent Predicates.
-                                                              (line   57)
  * MEM_ADDR_SPACE:                        Special Accessors.  (line   48)
  * MEM_ALIAS_SET:                         Special Accessors.  (line    9)
  * MEM_ALIGN:                             Special Accessors.  (line   45)
--- 58089,58094 ----
*************** Concept Index
*** 58109,58125 ****
  * MEM_SIZE_KNOWN_P:                      Special Accessors.  (line   35)
  * mem_thread_fence instruction pattern:  Standard Names.     (line 3194)
  * MEM_VOLATILE_P:                        Flags.              (line   65)
  * METHOD_TYPE:                           Types.              (line    6)
  * MINIMUM_ALIGNMENT:                     Storage Layout.     (line  365)
  * MINIMUM_ATOMIC_ALIGNMENT:              Storage Layout.     (line  225)
  * minM3 instruction pattern:             Standard Names.     (line  762)
  * minus:                                 Arithmetic.         (line   38)
  * minus and attributes:                  Expressions.        (line   83)
- * minus, canonicalization of:            Insn Canonicalizations.
-                                                              (line   33)
  * MINUS_EXPR:                            Unary and Binary Expressions.
                                                               (line    6)
! * MIN_UNITS_PER_WORD:                    Storage Layout.     (line   64)
  * MIPS coprocessor-definition macros:    MIPS Coprocessors.  (line    6)
  * miscellaneous register hooks:          Miscellaneous Register Hooks.
                                                               (line    6)
--- 58104,58129 ----
  * MEM_SIZE_KNOWN_P:                      Special Accessors.  (line   35)
  * mem_thread_fence instruction pattern:  Standard Names.     (line 3194)
  * MEM_VOLATILE_P:                        Flags.              (line   65)
+ * mem, RTL sharing:                      Sharing.            (line   41)
+ * memory model:                          Memory model.       (line    6)
+ * memory reference, nonoffsettable:      Simple Constraints. (line  266)
+ * memory references in constraints:      Simple Constraints. (line   17)
+ * memory_barrier instruction pattern:    Standard Names.     (line 2885)
+ * memory_blockage instruction pattern:   Standard Names.     (line 2876)
+ * MEMORY_MOVE_COST:                      Costs.              (line   53)
+ * memory_operand:                        Machine-Independent Predicates.
+                                                              (line   57)
  * METHOD_TYPE:                           Types.              (line    6)
+ * MIN_UNITS_PER_WORD:                    Storage Layout.     (line   64)
  * MINIMUM_ALIGNMENT:                     Storage Layout.     (line  365)
  * MINIMUM_ATOMIC_ALIGNMENT:              Storage Layout.     (line  225)
  * minM3 instruction pattern:             Standard Names.     (line  762)
  * minus:                                 Arithmetic.         (line   38)
  * minus and attributes:                  Expressions.        (line   83)
  * MINUS_EXPR:                            Unary and Binary Expressions.
                                                               (line    6)
! * minus, canonicalization of:            Insn Canonicalizations.
!                                                              (line   33)
  * MIPS coprocessor-definition macros:    MIPS Coprocessors.  (line    6)
  * miscellaneous register hooks:          Miscellaneous Register Hooks.
                                                               (line    6)
*************** Concept Index
*** 58169,58174 ****
--- 58173,58182 ----
  * mulsidi3 instruction pattern:          Standard Names.     (line 1108)
  * mult:                                  Arithmetic.         (line   92)
  * mult and attributes:                   Expressions.        (line   83)
+ * MULT_EXPR:                             Unary and Binary Expressions.
+                                                              (line    6)
+ * MULT_HIGHPART_EXPR:                    Unary and Binary Expressions.
+                                                              (line    6)
  * mult, canonicalization of:             Insn Canonicalizations.
                                                               (line   33)
  * mult, canonicalization of <1>:         Insn Canonicalizations.
*************** Concept Index
*** 58189,58211 ****
  * multiplication high part:              Arithmetic.         (line  111)
  * multiplication with signed saturation: Arithmetic.         (line   92)
  * multiplication with unsigned saturation: Arithmetic.       (line   92)
- * MULT_EXPR:                             Unary and Binary Expressions.
-                                                              (line    6)
- * MULT_HIGHPART_EXPR:                    Unary and Binary Expressions.
-                                                              (line    6)
  * mulvM4 instruction pattern:            Standard Names.     (line  703)
  * n in constraint:                       Simple Constraints. (line   73)
  * name:                                  Identifiers.        (line    6)
  * named address spaces:                  Named Address Spaces.
                                                               (line    6)
  * named patterns and conditions:         Patterns.           (line   61)
  * names, pattern:                        Standard Names.     (line    6)
- * namespace, scope:                      Namespaces.         (line    6)
  * NAMESPACE_DECL:                        Declarations.       (line    6)
  * NAMESPACE_DECL <1>:                    Namespaces.         (line    6)
  * NATIVE_SYSTEM_HEADER_COMPONENT:        Driver.             (line  326)
  * ne:                                    Comparisons.        (line   46)
  * ne and attributes:                     Expressions.        (line   83)
  * nearbyintM2 instruction pattern:       Standard Names.     (line 1505)
  * neg:                                   Arithmetic.         (line   81)
  * neg and attributes:                    Expressions.        (line   83)
--- 58197,58218 ----
  * multiplication high part:              Arithmetic.         (line  111)
  * multiplication with signed saturation: Arithmetic.         (line   92)
  * multiplication with unsigned saturation: Arithmetic.       (line   92)
  * mulvM4 instruction pattern:            Standard Names.     (line  703)
  * n in constraint:                       Simple Constraints. (line   73)
+ * N_REG_CLASSES:                         Register Classes.   (line   82)
  * name:                                  Identifiers.        (line    6)
  * named address spaces:                  Named Address Spaces.
                                                               (line    6)
  * named patterns and conditions:         Patterns.           (line   61)
  * names, pattern:                        Standard Names.     (line    6)
  * NAMESPACE_DECL:                        Declarations.       (line    6)
  * NAMESPACE_DECL <1>:                    Namespaces.         (line    6)
+ * namespace, scope:                      Namespaces.         (line    6)
  * NATIVE_SYSTEM_HEADER_COMPONENT:        Driver.             (line  326)
  * ne:                                    Comparisons.        (line   46)
  * ne and attributes:                     Expressions.        (line   83)
+ * NE_EXPR:                               Unary and Binary Expressions.
+                                                              (line    6)
  * nearbyintM2 instruction pattern:       Standard Names.     (line 1505)
  * neg:                                   Arithmetic.         (line   81)
  * neg and attributes:                    Expressions.        (line   83)
*************** Concept Index
*** 58224,58234 ****
  * next_bb, prev_bb, FOR_EACH_BB, FOR_ALL_BB: Basic Blocks.   (line   25)
  * NEXT_INSN:                             Insns.              (line   30)
  * NEXT_OBJC_RUNTIME:                     Library Calls.      (line  110)
- * NE_EXPR:                               Unary and Binary Expressions.
-                                                              (line    6)
  * nil:                                   RTL Objects.        (line   76)
  * NM_FLAGS:                              Macros for Initialization.
                                                               (line  118)
  * nondeterministic finite state automaton: Processor pipeline description.
                                                               (line  304)
  * nonimmediate_operand:                  Machine-Independent Predicates.
--- 58231,58246 ----
  * next_bb, prev_bb, FOR_EACH_BB, FOR_ALL_BB: Basic Blocks.   (line   25)
  * NEXT_INSN:                             Insns.              (line   30)
  * NEXT_OBJC_RUNTIME:                     Library Calls.      (line  110)
  * nil:                                   RTL Objects.        (line   76)
  * NM_FLAGS:                              Macros for Initialization.
                                                               (line  118)
+ * NO_DOLLAR_IN_LABEL:                    Label Output.       (line   64)
+ * NO_DOT_IN_LABEL:                       Label Output.       (line   70)
+ * NO_FUNCTION_CSE:                       Costs.              (line  361)
+ * NO_PROFILE_COUNTERS:                   Profiling.          (line   27)
+ * NO_REGS:                               Register Classes.   (line   17)
+ * NON_LVALUE_EXPR:                       Unary and Binary Expressions.
+                                                              (line    6)
  * nondeterministic finite state automaton: Processor pipeline description.
                                                               (line  304)
  * nonimmediate_operand:                  Machine-Independent Predicates.
*************** Concept Index
*** 58240,58247 ****
  * nonmemory_operand:                     Machine-Independent Predicates.
                                                               (line   96)
  * nonoffsettable memory reference:       Simple Constraints. (line  266)
- * NON_LVALUE_EXPR:                       Unary and Binary Expressions.
-                                                              (line    6)
  * nop instruction pattern:               Standard Names.     (line 2534)
  * NOP_EXPR:                              Unary and Binary Expressions.
                                                               (line    6)
--- 58252,58257 ----
*************** Concept Index
*** 58270,58287 ****
  * NOTE_SOURCE_FILE:                      Insns.              (line  184)
  * NOTE_VAR_LOCATION:                     Insns.              (line  226)
  * notMODEcc instruction pattern:         Standard Names.     (line 2355)
- * NO_DOLLAR_IN_LABEL:                    Label Output.       (line   64)
- * NO_DOT_IN_LABEL:                       Label Output.       (line   70)
- * NO_FUNCTION_CSE:                       Costs.              (line  361)
- * NO_PROFILE_COUNTERS:                   Profiling.          (line   27)
- * NO_REGS:                               Register Classes.   (line   17)
- * Number of iterations analysis:         Number of iterations.
-                                                              (line    6)
  * NUM_MACHINE_MODES:                     Machine Modes.      (line  387)
  * NUM_MODES_FOR_MODE_SWITCHING:          Mode Switching.     (line   35)
  * NUM_POLY_INT_COEFFS:                   Overview of poly_int.
                                                               (line   24)
! * N_REG_CLASSES:                         Register Classes.   (line   82)
  * o in constraint:                       Simple Constraints. (line   23)
  * OACC_CACHE:                            OpenACC.            (line    6)
  * OACC_DATA:                             OpenACC.            (line    6)
--- 58280,58291 ----
  * NOTE_SOURCE_FILE:                      Insns.              (line  184)
  * NOTE_VAR_LOCATION:                     Insns.              (line  226)
  * notMODEcc instruction pattern:         Standard Names.     (line 2355)
  * NUM_MACHINE_MODES:                     Machine Modes.      (line  387)
  * NUM_MODES_FOR_MODE_SWITCHING:          Mode Switching.     (line   35)
  * NUM_POLY_INT_COEFFS:                   Overview of poly_int.
                                                               (line   24)
! * Number of iterations analysis:         Number of iterations.
!                                                              (line    6)
  * o in constraint:                       Simple Constraints. (line   23)
  * OACC_CACHE:                            OpenACC.            (line    6)
  * OACC_DATA:                             OpenACC.            (line    6)
*************** Concept Index
*** 58298,58305 ****
  * OBJC_JBLEN:                            Misc.               (line 1097)
  * OBJECT_FORMAT_COFF:                    Macros for Initialization.
                                                               (line  104)
- * offsettable address:                   Simple Constraints. (line   23)
  * OFFSET_TYPE:                           Types.              (line    6)
  * OImode:                                Machine Modes.      (line   51)
  * OMP_ATOMIC:                            OpenMP.             (line    6)
  * OMP_CLAUSE:                            OpenMP.             (line    6)
--- 58302,58309 ----
  * OBJC_JBLEN:                            Misc.               (line 1097)
  * OBJECT_FORMAT_COFF:                    Macros for Initialization.
                                                               (line  104)
  * OFFSET_TYPE:                           Types.              (line    6)
+ * offsettable address:                   Simple Constraints. (line   23)
  * OImode:                                Machine Modes.      (line   51)
  * OMP_ATOMIC:                            OpenMP.             (line    6)
  * OMP_CLAUSE:                            OpenMP.             (line    6)
*************** Concept Index
*** 58332,58337 ****
--- 58336,58342 ----
  * operands:                              SSA Operands.       (line    6)
  * operands <1>:                          Patterns.           (line   67)
  * operator predicates:                   Predicates.         (line    6)
+ * opt_mode:                              Machine Modes.      (line  326)
  * optc-gen.awk:                          Options.            (line    6)
  * OPTGROUP_ALL:                          Optimization groups.
                                                               (line   28)
*************** Concept Index
*** 58355,58366 ****
  * Optimization infrastructure for GIMPLE: Tree SSA.          (line    6)
  * OPTIMIZE_MODE_SWITCHING:               Mode Switching.     (line    8)
  * option specification files:            Options.            (line    6)
  * optional hardware or system features:  Run-time Target.    (line   59)
  * options, directory search:             Including Patterns. (line   46)
  * options, guidelines for:               Guidelines for Options.
                                                               (line    6)
- * OPTION_DEFAULT_SPECS:                  Driver.             (line   25)
- * opt_mode:                              Machine Modes.      (line  326)
  * order of register allocation:          Allocation Order.   (line    6)
  * ordered_comparison_operator:           Machine-Independent Predicates.
                                                               (line  115)
--- 58360,58370 ----
  * Optimization infrastructure for GIMPLE: Tree SSA.          (line    6)
  * OPTIMIZE_MODE_SWITCHING:               Mode Switching.     (line    8)
  * option specification files:            Options.            (line    6)
+ * OPTION_DEFAULT_SPECS:                  Driver.             (line   25)
  * optional hardware or system features:  Run-time Target.    (line   59)
  * options, directory search:             Including Patterns. (line   46)
  * options, guidelines for:               Guidelines for Options.
                                                               (line    6)
  * order of register allocation:          Allocation Order.   (line    6)
  * ordered_comparison_operator:           Machine-Independent Predicates.
                                                               (line  115)
*************** Concept Index
*** 58370,58377 ****
  * ORIGINAL_REGNO:                        Special Accessors.  (line   53)
  * other register constraints:            Simple Constraints. (line  183)
  * outgoing_args_size:                    Stack Arguments.    (line   51)
- * OUTGOING_REGNO:                        Register Basics.    (line  136)
  * OUTGOING_REG_PARM_STACK_SPACE:         Stack Arguments.    (line   82)
  * output of assembler code:              File Framework.     (line    6)
  * output statements:                     Output Statement.   (line    6)
  * output templates:                      Output Template.    (line    6)
--- 58374,58381 ----
  * ORIGINAL_REGNO:                        Special Accessors.  (line   53)
  * other register constraints:            Simple Constraints. (line  183)
  * outgoing_args_size:                    Stack Arguments.    (line   51)
  * OUTGOING_REG_PARM_STACK_SPACE:         Stack Arguments.    (line   82)
+ * OUTGOING_REGNO:                        Register Basics.    (line  136)
  * output of assembler code:              File Framework.     (line    6)
  * output statements:                     Output Statement.   (line    6)
  * output templates:                      Output Template.    (line    6)
*************** Concept Index
*** 58384,58390 ****
  * OVL_NEXT:                              Functions for C++.  (line    6)
  * p in constraint:                       Simple Constraints. (line  162)
  * PAD_VARARGS_DOWN:                      Register Arguments. (line  224)
! * parallel:                              Side Effects.       (line  203)
  * parameters, c++ abi:                   C++ ABI.            (line    6)
  * parameters, d abi:                     D Language and ABI. (line    6)
  * parameters, miscellaneous:             Misc.               (line    6)
--- 58388,58394 ----
  * OVL_NEXT:                              Functions for C++.  (line    6)
  * p in constraint:                       Simple Constraints. (line  162)
  * PAD_VARARGS_DOWN:                      Register Arguments. (line  224)
! * parallel:                              Side Effects.       (line  202)
  * parameters, c++ abi:                   C++ ABI.            (line    6)
  * parameters, d abi:                     D Language and ABI. (line    6)
  * parameters, miscellaneous:             Misc.               (line    6)
*************** Concept Index
*** 58398,58405 ****
  * PARSE_LDD_OUTPUT:                      Macros for Initialization.
                                                               (line  133)
  * pass dumps:                            Passes.             (line    6)
- * passes and files of the compiler:      Passes.             (line    6)
  * pass_duplicate_computed_gotos:         Edges.              (line  161)
  * PATH_SEPARATOR:                        Filesystem.         (line   31)
  * PATTERN:                               Insns.              (line  308)
  * pattern conditions:                    Patterns.           (line   55)
--- 58402,58409 ----
  * PARSE_LDD_OUTPUT:                      Macros for Initialization.
                                                               (line  133)
  * pass dumps:                            Passes.             (line    6)
  * pass_duplicate_computed_gotos:         Edges.              (line  161)
+ * passes and files of the compiler:      Passes.             (line    6)
  * PATH_SEPARATOR:                        Filesystem.         (line   31)
  * PATTERN:                               Insns.              (line  308)
  * pattern conditions:                    Patterns.           (line   55)
*************** Concept Index
*** 58408,58420 ****
  * patterns:                              Patterns.           (line    6)
  * pc:                                    Regs and Memory.    (line  347)
  * pc and attributes:                     Insn Lengths.       (line   20)
  * pc, RTL sharing:                       Sharing.            (line   28)
  * PCC_BITFIELD_TYPE_MATTERS:             Storage Layout.     (line  391)
  * PCC_STATIC_STRUCT_RETURN:              Aggregate Return.   (line   64)
- * PC_REGNUM:                             Register Basics.    (line  150)
- * pc_rtx:                                Regs and Memory.    (line  352)
  * PDImode:                               Machine Modes.      (line   40)
! * peephole optimization, RTL representation: Side Effects.   (line  237)
  * peephole optimizer definitions:        Peephole Definitions.
                                                               (line    6)
  * per-function data:                     Per-Function Data.  (line    6)
--- 58412,58424 ----
  * patterns:                              Patterns.           (line    6)
  * pc:                                    Regs and Memory.    (line  347)
  * pc and attributes:                     Insn Lengths.       (line   20)
+ * PC_REGNUM:                             Register Basics.    (line  150)
+ * pc_rtx:                                Regs and Memory.    (line  352)
  * pc, RTL sharing:                       Sharing.            (line   28)
  * PCC_BITFIELD_TYPE_MATTERS:             Storage Layout.     (line  391)
  * PCC_STATIC_STRUCT_RETURN:              Aggregate Return.   (line   64)
  * PDImode:                               Machine Modes.      (line   40)
! * peephole optimization, RTL representation: Side Effects.   (line  236)
  * peephole optimizer definitions:        Peephole Definitions.
                                                               (line    6)
  * per-function data:                     Per-Function Data.  (line    6)
*************** Concept Index
*** 58422,58429 ****
  * PHI nodes:                             SSA.                (line   31)
  * phi nodes, RTL SSA:                    RTL SSA Phi Nodes.  (line    6)
  * PIC:                                   PIC.                (line    6)
- * PIC_OFFSET_TABLE_REGNUM:               PIC.                (line   15)
  * PIC_OFFSET_TABLE_REG_CALL_CLOBBERED:   PIC.                (line   25)
  * pipeline hazard recognizer:            Processor pipeline description.
                                                               (line    6)
  * pipeline hazard recognizer <1>:        Processor pipeline description.
--- 58426,58433 ----
  * PHI nodes:                             SSA.                (line   31)
  * phi nodes, RTL SSA:                    RTL SSA Phi Nodes.  (line    6)
  * PIC:                                   PIC.                (line    6)
  * PIC_OFFSET_TABLE_REG_CALL_CLOBBERED:   PIC.                (line   25)
+ * PIC_OFFSET_TABLE_REGNUM:               PIC.                (line   15)
  * pipeline hazard recognizer:            Processor pipeline description.
                                                               (line    6)
  * pipeline hazard recognizer <1>:        Processor pipeline description.
*************** Concept Index
*** 58431,58453 ****
  * Plugins:                               Plugins.            (line    6)
  * plus:                                  Arithmetic.         (line   14)
  * plus and attributes:                   Expressions.        (line   83)
- * plus, canonicalization of:             Insn Canonicalizations.
-                                                              (line   33)
  * PLUS_EXPR:                             Unary and Binary Expressions.
                                                               (line    6)
  * Pmode:                                 Misc.               (line  365)
  * pmode_register_operand:                Machine-Independent Predicates.
                                                               (line   34)
  * pointer:                               Types.              (line    6)
- * POINTERS_EXTEND_UNSIGNED:              Storage Layout.     (line   76)
  * POINTER_DIFF_EXPR:                     Unary and Binary Expressions.
                                                               (line    6)
  * POINTER_PLUS_EXPR:                     Unary and Binary Expressions.
                                                               (line    6)
  * POINTER_SIZE:                          Storage Layout.     (line   70)
  * POINTER_TYPE:                          Types.              (line    6)
! * polynomial integers:                   poly_int.           (line    6)
  * poly_int:                              poly_int.           (line    6)
  * poly_int, invariant range:             Overview of poly_int.
                                                               (line   31)
  * poly_int, main typedefs:               Overview of poly_int.
--- 58435,58458 ----
  * Plugins:                               Plugins.            (line    6)
  * plus:                                  Arithmetic.         (line   14)
  * plus and attributes:                   Expressions.        (line   83)
  * PLUS_EXPR:                             Unary and Binary Expressions.
                                                               (line    6)
+ * plus, canonicalization of:             Insn Canonicalizations.
+                                                              (line   33)
  * Pmode:                                 Misc.               (line  365)
  * pmode_register_operand:                Machine-Independent Predicates.
                                                               (line   34)
  * pointer:                               Types.              (line    6)
  * POINTER_DIFF_EXPR:                     Unary and Binary Expressions.
                                                               (line    6)
  * POINTER_PLUS_EXPR:                     Unary and Binary Expressions.
                                                               (line    6)
  * POINTER_SIZE:                          Storage Layout.     (line   70)
  * POINTER_TYPE:                          Types.              (line    6)
! * POINTERS_EXTEND_UNSIGNED:              Storage Layout.     (line   76)
  * poly_int:                              poly_int.           (line    6)
+ * POLY_INT_CST:                          Constant expressions.
+                                                              (line    6)
  * poly_int, invariant range:             Overview of poly_int.
                                                               (line   31)
  * poly_int, main typedefs:               Overview of poly_int.
*************** Concept Index
*** 58460,58487 ****
                                                               (line   32)
  * poly_int, use in target-specific code: Consequences of using poly_int.
                                                               (line   40)
! * POLY_INT_CST:                          Constant expressions.
!                                                              (line    6)
  * popcount:                              Arithmetic.         (line  244)
  * popcountM2 instruction pattern:        Standard Names.     (line 1784)
  * pops_args:                             Function Entry.     (line  111)
- * pop_operand:                           Machine-Independent Predicates.
-                                                              (line   87)
  * portability:                           Portability.        (line    6)
  * position independent code:             PIC.                (line    6)
- * POSTDECREMENT_EXPR:                    Unary and Binary Expressions.
-                                                              (line    6)
- * POSTINCREMENT_EXPR:                    Unary and Binary Expressions.
-                                                              (line    6)
  * post_dec:                              Incdec.             (line   25)
  * post_inc:                              Incdec.             (line   30)
  * POST_LINK_SPEC:                        Driver.             (line  236)
  * post_modify:                           Incdec.             (line   33)
  * post_order_compute, inverted_post_order_compute, dom_walker::walk: Basic Blocks.
                                                               (line   34)
  * POWI_MAX_MULTS:                        Misc.               (line  981)
  * powM3 instruction pattern:             Standard Names.     (line 1453)
  * pragma:                                Misc.               (line  422)
  * PREDECREMENT_EXPR:                     Unary and Binary Expressions.
                                                               (line    6)
  * predefined macros:                     Run-time Target.    (line    6)
--- 58465,58495 ----
                                                               (line   32)
  * poly_int, use in target-specific code: Consequences of using poly_int.
                                                               (line   40)
! * polynomial integers:                   poly_int.           (line    6)
! * pop_operand:                           Machine-Independent Predicates.
!                                                              (line   87)
  * popcount:                              Arithmetic.         (line  244)
  * popcountM2 instruction pattern:        Standard Names.     (line 1784)
  * pops_args:                             Function Entry.     (line  111)
  * portability:                           Portability.        (line    6)
  * position independent code:             PIC.                (line    6)
  * post_dec:                              Incdec.             (line   25)
  * post_inc:                              Incdec.             (line   30)
  * POST_LINK_SPEC:                        Driver.             (line  236)
  * post_modify:                           Incdec.             (line   33)
  * post_order_compute, inverted_post_order_compute, dom_walker::walk: Basic Blocks.
                                                               (line   34)
+ * POSTDECREMENT_EXPR:                    Unary and Binary Expressions.
+                                                              (line    6)
+ * POSTINCREMENT_EXPR:                    Unary and Binary Expressions.
+                                                              (line    6)
  * POWI_MAX_MULTS:                        Misc.               (line  981)
  * powM3 instruction pattern:             Standard Names.     (line 1453)
  * pragma:                                Misc.               (line  422)
+ * pre_dec:                               Incdec.             (line    8)
+ * PRE_GCC3_DWARF_FRAME_REGISTERS:        Frame Registers.    (line  126)
+ * pre_inc:                               Incdec.             (line   22)
+ * pre_modify:                            Incdec.             (line   52)
  * PREDECREMENT_EXPR:                     Unary and Binary Expressions.
                                                               (line    6)
  * predefined macros:                     Run-time Target.    (line    6)
*************** Concept Index
*** 58494,58500 ****
  * PREFERRED_DEBUGGING_TYPE:              All Debuggers.      (line   40)
  * PREFERRED_RELOAD_CLASS:                Register Classes.   (line  273)
  * PREFERRED_STACK_BOUNDARY:              Storage Layout.     (line  191)
! * prefetch:                              Side Effects.       (line  315)
  * prefetch and /v:                       Flags.              (line   92)
  * prefetch instruction pattern:          Standard Names.     (line 2853)
  * PREFETCH_SCHEDULE_BARRIER_P:           Flags.              (line   92)
--- 58502,58508 ----
  * PREFERRED_DEBUGGING_TYPE:              All Debuggers.      (line   40)
  * PREFERRED_RELOAD_CLASS:                Register Classes.   (line  273)
  * PREFERRED_STACK_BOUNDARY:              Storage Layout.     (line  191)
! * prefetch:                              Side Effects.       (line  314)
  * prefetch and /v:                       Flags.              (line   92)
  * prefetch instruction pattern:          Standard Names.     (line 2853)
  * PREFETCH_SCHEDULE_BARRIER_P:           Flags.              (line   92)
*************** Concept Index
*** 58506,58515 ****
  * pretend_args_size:                     Function Entry.     (line  117)
  * prev_active_insn:                      define_peephole.    (line   60)
  * PREV_INSN:                             Insns.              (line   26)
- * pre_dec:                               Incdec.             (line    8)
- * PRE_GCC3_DWARF_FRAME_REGISTERS:        Frame Registers.    (line  126)
- * pre_inc:                               Incdec.             (line   22)
- * pre_modify:                            Incdec.             (line   52)
  * PRINT_OPERAND:                         Instruction Output. (line   95)
  * PRINT_OPERAND_ADDRESS:                 Instruction Output. (line  122)
  * PRINT_OPERAND_PUNCT_VALID_P:           Instruction Output. (line  115)
--- 58514,58519 ----
*************** Concept Index
*** 58540,58551 ****
  * purge_dead_edges <1>:                  Maintaining the CFG.
                                                               (line   81)
  * push address instruction:              Simple Constraints. (line  162)
- * pushM1 instruction pattern:            Standard Names.     (line  655)
  * PUSH_ARGS_REVERSED:                    Stack Arguments.    (line   28)
  * push_operand:                          Machine-Independent Predicates.
                                                               (line   80)
  * push_reload:                           Addressing Modes.   (line  184)
  * PUSH_ROUNDING:                         Stack Arguments.    (line   34)
  * PUT_CODE:                              RTL Objects.        (line   50)
  * PUT_MODE:                              Machine Modes.      (line  384)
  * PUT_REG_NOTE_KIND:                     Insns.              (line  350)
--- 58544,58555 ----
  * purge_dead_edges <1>:                  Maintaining the CFG.
                                                               (line   81)
  * push address instruction:              Simple Constraints. (line  162)
  * PUSH_ARGS_REVERSED:                    Stack Arguments.    (line   28)
  * push_operand:                          Machine-Independent Predicates.
                                                               (line   80)
  * push_reload:                           Addressing Modes.   (line  184)
  * PUSH_ROUNDING:                         Stack Arguments.    (line   34)
+ * pushM1 instruction pattern:            Standard Names.     (line  655)
  * PUT_CODE:                              RTL Objects.        (line   50)
  * PUT_MODE:                              Machine Modes.      (line  384)
  * PUT_REG_NOTE_KIND:                     Insns.              (line  350)
*************** Concept Index
*** 58566,58573 ****
                                                               (line    6)
  * READONLY_DATA_SECTION_ASM_OP:          Sections.           (line   62)
  * real operands:                         SSA Operands.       (line    6)
- * REALPART_EXPR:                         Unary and Binary Expressions.
-                                                              (line    6)
  * REAL_CST:                              Constant expressions.
                                                               (line    6)
  * REAL_LIBGCC_SPEC:                      Driver.             (line  124)
--- 58570,58575 ----
*************** Concept Index
*** 58589,58596 ****
  * REAL_VALUE_TO_TARGET_SINGLE:           Data Output.        (line  148)
  * REAL_VALUE_TYPE:                       Floating Point.     (line   25)
  * REAL_VALUE_UNSIGNED_FIX:               Floating Point.     (line   34)
! * recognizing insns:                     RTL Template.       (line    6)
  * recog_data.operand:                    Instruction Output. (line   54)
  * RECORD_TYPE:                           Types.              (line    6)
  * RECORD_TYPE <1>:                       Classes.            (line    6)
  * redirect_edge_and_branch:              Profile information.
--- 58591,58600 ----
  * REAL_VALUE_TO_TARGET_SINGLE:           Data Output.        (line  148)
  * REAL_VALUE_TYPE:                       Floating Point.     (line   25)
  * REAL_VALUE_UNSIGNED_FIX:               Floating Point.     (line   34)
! * REALPART_EXPR:                         Unary and Binary Expressions.
!                                                              (line    6)
  * recog_data.operand:                    Instruction Output. (line   54)
+ * recognizing insns:                     RTL Template.       (line    6)
  * RECORD_TYPE:                           Types.              (line    6)
  * RECORD_TYPE <1>:                       Classes.            (line    6)
  * redirect_edge_and_branch:              Profile information.
*************** Concept Index
*** 58613,58651 ****
  * reg and /f:                            Flags.              (line  102)
  * reg and /i:                            Flags.              (line   97)
  * reg and /v:                            Flags.              (line  106)
- * reg, RTL sharing:                      Sharing.            (line   17)
- * register allocation order:             Allocation Order.   (line    6)
- * register class definitions:            Register Classes.   (line    6)
- * register class preference constraints: Class Preferences.  (line    6)
- * register pairs:                        Values in Registers.
-                                                              (line   65)
- * Register Transfer Language (RTL):      RTL.                (line    6)
- * register usage:                        Registers.          (line    6)
- * registers arguments:                   Register Arguments. (line    6)
- * registers in constraints:              Simple Constraints. (line   64)
- * REGISTER_MOVE_COST:                    Costs.              (line    9)
- * REGISTER_NAMES:                        Instruction Output. (line    8)
- * register_operand:                      Machine-Independent Predicates.
-                                                              (line   29)
- * REGISTER_PREFIX:                       Instruction Output. (line  150)
- * REGISTER_TARGET_PRAGMAS:               Misc.               (line  422)
- * REGMODE_NATURAL_SIZE:                  Regs and Memory.    (line  191)
- * REGMODE_NATURAL_SIZE <1>:              Regs and Memory.    (line  273)
- * REGMODE_NATURAL_SIZE <2>:              Values in Registers.
-                                                              (line   46)
- * REGNO_MODE_CODE_OK_FOR_BASE_P:         Register Classes.   (line  188)
- * REGNO_MODE_OK_FOR_BASE_P:              Register Classes.   (line  166)
- * REGNO_MODE_OK_FOR_REG_BASE_P:          Register Classes.   (line  176)
- * REGNO_OK_FOR_BASE_P:                   Register Classes.   (line  162)
- * REGNO_OK_FOR_INDEX_P:                  Register Classes.   (line  210)
- * REGNO_OK_FOR_INSN_BASE_P:              Register Classes.   (line  202)
- * REGNO_REG_CLASS:                       Register Classes.   (line  106)
- * regs_ever_live:                        Function Entry.     (line   29)
- * regular expressions:                   Processor pipeline description.
-                                                              (line    6)
- * regular expressions <1>:               Processor pipeline description.
-                                                              (line  105)
- * regular IPA passes:                    Regular IPA passes. (line    6)
  * REG_ALLOC_ORDER:                       Allocation Order.   (line    8)
  * REG_BR_PRED:                           Insns.              (line  506)
  * REG_BR_PROB:                           Insns.              (line  498)
--- 58617,58622 ----
*************** Concept Index
*** 58678,58685 ****
  * reg_names:                             Register Basics.    (line  102)
  * reg_names <1>:                         Instruction Output. (line  107)
  * REG_NONNEG:                            Insns.              (line  382)
- * REG_NOTES:                             Insns.              (line  338)
  * REG_NOTE_KIND:                         Insns.              (line  350)
  * REG_OFFSET:                            Special Accessors.  (line   62)
  * REG_OK_STRICT:                         Addressing Modes.   (line  107)
  * REG_PARM_STACK_SPACE:                  Stack Arguments.    (line   61)
--- 58649,58656 ----
  * reg_names:                             Register Basics.    (line  102)
  * reg_names <1>:                         Instruction Output. (line  107)
  * REG_NONNEG:                            Insns.              (line  382)
  * REG_NOTE_KIND:                         Insns.              (line  350)
+ * REG_NOTES:                             Insns.              (line  338)
  * REG_OFFSET:                            Special Accessors.  (line   62)
  * REG_OK_STRICT:                         Addressing Modes.   (line  107)
  * REG_PARM_STACK_SPACE:                  Stack Arguments.    (line   61)
*************** Concept Index
*** 58691,58726 ****
  * REG_USERVAR_P:                         Flags.              (line  106)
  * REG_VALUE_IN_UNWIND_CONTEXT:           Frame Registers.    (line  156)
  * REG_WORDS_BIG_ENDIAN:                  Storage Layout.     (line   35)
  * relative costs:                        Costs.              (line    6)
  * RELATIVE_PREFIX_NOT_LINKDIR:           Driver.             (line  266)
- * reloading:                             RTL passes.         (line  206)
  * reload_completed:                      Standard Names.     (line 2501)
  * RELOAD_ELIMINABLE_REGS:                Elimination.        (line   58)
  * reload_in instruction pattern:         Standard Names.     (line   98)
  * reload_in_progress:                    Standard Names.     (line   57)
  * reload_out instruction pattern:        Standard Names.     (line   98)
  * remainder:                             Arithmetic.         (line  142)
  * remainderM3 instruction pattern:       Standard Names.     (line 1284)
  * reorder:                               GTY Options.        (line  224)
  * representation of RTL:                 RTL.                (line    6)
  * reservation delays:                    Processor pipeline description.
                                                               (line    6)
  * restore_stack_block instruction pattern: Standard Names.   (line 2617)
  * restore_stack_function instruction pattern: Standard Names.
                                                               (line 2617)
  * restore_stack_nonlocal instruction pattern: Standard Names.
                                                               (line 2617)
- * rest_of_decl_compilation:              Parsing pass.       (line   51)
- * rest_of_type_compilation:              Parsing pass.       (line   51)
  * RESULT_DECL:                           Declarations.       (line    6)
  * return:                                Side Effects.       (line   65)
  * return instruction pattern:            Standard Names.     (line 2475)
  * return values in registers:            Scalar Return.      (line    6)
- * returning aggregate values:            Aggregate Return.   (line    6)
- * RETURN_ADDRESS_POINTER_REGNUM:         Frame Registers.    (line   64)
  * RETURN_ADDR_IN_PREVIOUS_FRAME:         Frame Layout.       (line  127)
  * RETURN_ADDR_OFFSET:                    Exception Handling. (line   70)
  * RETURN_ADDR_RTX:                       Frame Layout.       (line  116)
  * RETURN_EXPR:                           Statements for C and C++.
                                                               (line    6)
  * RETURN_STMT:                           Statements for C and C++.
--- 58662,58729 ----
  * REG_USERVAR_P:                         Flags.              (line  106)
  * REG_VALUE_IN_UNWIND_CONTEXT:           Frame Registers.    (line  156)
  * REG_WORDS_BIG_ENDIAN:                  Storage Layout.     (line   35)
+ * reg, RTL sharing:                      Sharing.            (line   17)
+ * register allocation order:             Allocation Order.   (line    6)
+ * register class definitions:            Register Classes.   (line    6)
+ * register class preference constraints: Class Preferences.  (line    6)
+ * register pairs:                        Values in Registers.
+                                                              (line   65)
+ * Register Transfer Language (RTL):      RTL.                (line    6)
+ * register usage:                        Registers.          (line    6)
+ * REGISTER_MOVE_COST:                    Costs.              (line    9)
+ * REGISTER_NAMES:                        Instruction Output. (line    8)
+ * register_operand:                      Machine-Independent Predicates.
+                                                              (line   29)
+ * REGISTER_PREFIX:                       Instruction Output. (line  150)
+ * REGISTER_TARGET_PRAGMAS:               Misc.               (line  422)
+ * registers arguments:                   Register Arguments. (line    6)
+ * registers in constraints:              Simple Constraints. (line   64)
+ * REGMODE_NATURAL_SIZE:                  Regs and Memory.    (line  191)
+ * REGMODE_NATURAL_SIZE <1>:              Regs and Memory.    (line  273)
+ * REGMODE_NATURAL_SIZE <2>:              Values in Registers.
+                                                              (line   46)
+ * REGNO_MODE_CODE_OK_FOR_BASE_P:         Register Classes.   (line  188)
+ * REGNO_MODE_OK_FOR_BASE_P:              Register Classes.   (line  166)
+ * REGNO_MODE_OK_FOR_REG_BASE_P:          Register Classes.   (line  176)
+ * REGNO_OK_FOR_BASE_P:                   Register Classes.   (line  162)
+ * REGNO_OK_FOR_INDEX_P:                  Register Classes.   (line  210)
+ * REGNO_OK_FOR_INSN_BASE_P:              Register Classes.   (line  202)
+ * REGNO_REG_CLASS:                       Register Classes.   (line  106)
+ * regs_ever_live:                        Function Entry.     (line   29)
+ * regular expressions:                   Processor pipeline description.
+                                                              (line    6)
+ * regular expressions <1>:               Processor pipeline description.
+                                                              (line  105)
+ * regular IPA passes:                    Regular IPA passes. (line    6)
  * relative costs:                        Costs.              (line    6)
  * RELATIVE_PREFIX_NOT_LINKDIR:           Driver.             (line  266)
  * reload_completed:                      Standard Names.     (line 2501)
  * RELOAD_ELIMINABLE_REGS:                Elimination.        (line   58)
  * reload_in instruction pattern:         Standard Names.     (line   98)
  * reload_in_progress:                    Standard Names.     (line   57)
  * reload_out instruction pattern:        Standard Names.     (line   98)
+ * reloading:                             RTL passes.         (line  206)
  * remainder:                             Arithmetic.         (line  142)
  * remainderM3 instruction pattern:       Standard Names.     (line 1284)
  * reorder:                               GTY Options.        (line  224)
  * representation of RTL:                 RTL.                (line    6)
  * reservation delays:                    Processor pipeline description.
                                                               (line    6)
+ * rest_of_decl_compilation:              Parsing pass.       (line   51)
+ * rest_of_type_compilation:              Parsing pass.       (line   51)
  * restore_stack_block instruction pattern: Standard Names.   (line 2617)
  * restore_stack_function instruction pattern: Standard Names.
                                                               (line 2617)
  * restore_stack_nonlocal instruction pattern: Standard Names.
                                                               (line 2617)
  * RESULT_DECL:                           Declarations.       (line    6)
  * return:                                Side Effects.       (line   65)
  * return instruction pattern:            Standard Names.     (line 2475)
  * return values in registers:            Scalar Return.      (line    6)
  * RETURN_ADDR_IN_PREVIOUS_FRAME:         Frame Layout.       (line  127)
  * RETURN_ADDR_OFFSET:                    Exception Handling. (line   70)
  * RETURN_ADDR_RTX:                       Frame Layout.       (line  116)
+ * RETURN_ADDRESS_POINTER_REGNUM:         Frame Registers.    (line   64)
  * RETURN_EXPR:                           Statements for C and C++.
                                                               (line    6)
  * RETURN_STMT:                           Statements for C and C++.
*************** Concept Index
*** 58729,58734 ****
--- 58732,58738 ----
  * return_val, in call_insn:              Flags.              (line  120)
  * return_val, in reg:                    Flags.              (line   97)
  * return_val, in symbol_ref:             Flags.              (line  216)
+ * returning aggregate values:            Aggregate Return.   (line    6)
  * reverse postorder:                     RTL SSA Instructions.
                                                               (line    6)
  * reverse probability:                   Profile information.
*************** Concept Index
*** 58750,58761 ****
  * rotatert:                              Arithmetic.         (line  201)
  * rotlM3 instruction pattern:            Standard Names.     (line 1210)
  * rotrM3 instruction pattern:            Standard Names.     (line 1210)
- * roundM2 instruction pattern:           Standard Names.     (line 1486)
  * ROUND_DIV_EXPR:                        Unary and Binary Expressions.
                                                               (line    6)
  * ROUND_MOD_EXPR:                        Unary and Binary Expressions.
                                                               (line    6)
  * ROUND_TYPE_ALIGN:                      Storage Layout.     (line  488)
  * RPO:                                   RTL SSA Instructions.
                                                               (line    6)
  * RROTATE_EXPR:                          Unary and Binary Expressions.
--- 58754,58765 ----
  * rotatert:                              Arithmetic.         (line  201)
  * rotlM3 instruction pattern:            Standard Names.     (line 1210)
  * rotrM3 instruction pattern:            Standard Names.     (line 1210)
  * ROUND_DIV_EXPR:                        Unary and Binary Expressions.
                                                               (line    6)
  * ROUND_MOD_EXPR:                        Unary and Binary Expressions.
                                                               (line    6)
  * ROUND_TYPE_ALIGN:                      Storage Layout.     (line  488)
+ * roundM2 instruction pattern:           Standard Names.     (line 1486)
  * RPO:                                   RTL SSA Instructions.
                                                               (line    6)
  * RROTATE_EXPR:                          Unary and Binary Expressions.
*************** Concept Index
*** 58825,58835 ****
  * SAD_EXPR:                              Vectors.            (line    6)
  * same_type_p:                           Types.              (line   86)
  * SAmode:                                Machine Modes.      (line  150)
  * satfractMN2 instruction pattern:       Standard Names.     (line 2039)
  * satfractunsMN2 instruction pattern:    Standard Names.     (line 2052)
  * satisfies_constraint_M:                C Constraint Interface.
                                                               (line   36)
- * sat_fract:                             Conversions.        (line   90)
  * SAVE_EXPR:                             Unary and Binary Expressions.
                                                               (line    6)
  * save_stack_block instruction pattern:  Standard Names.     (line 2617)
--- 58829,58839 ----
  * SAD_EXPR:                              Vectors.            (line    6)
  * same_type_p:                           Types.              (line   86)
  * SAmode:                                Machine Modes.      (line  150)
+ * sat_fract:                             Conversions.        (line   90)
  * satfractMN2 instruction pattern:       Standard Names.     (line 2039)
  * satfractunsMN2 instruction pattern:    Standard Names.     (line 2052)
  * satisfies_constraint_M:                C Constraint Interface.
                                                               (line   36)
  * SAVE_EXPR:                             Unary and Binary Expressions.
                                                               (line    6)
  * save_stack_block instruction pattern:  Standard Names.     (line 2617)
*************** Concept Index
*** 58837,58855 ****
  * save_stack_nonlocal instruction pattern: Standard Names.   (line 2617)
  * SBSS_SECTION_ASM_OP:                   Sections.           (line   75)
  * Scalar evolutions:                     Scalar evolutions.  (line    6)
- * scalars, returned as values:           Scalar Return.      (line    6)
  * scalar_float_mode:                     Machine Modes.      (line  297)
  * scalar_int_mode:                       Machine Modes.      (line  294)
  * scalar_mode:                           Machine Modes.      (line  300)
  * scalbM3 instruction pattern:           Standard Names.     (line 1291)
  * scatter_storeMN instruction pattern:   Standard Names.     (line  316)
  * SCHED_GROUP_P:                         Flags.              (line  162)
  * SCmode:                                Machine Modes.      (line  198)
  * scratch:                               Regs and Memory.    (line  325)
  * scratch operands:                      Regs and Memory.    (line  325)
- * scratch, RTL sharing:                  Sharing.            (line   36)
  * scratch_operand:                       Machine-Independent Predicates.
                                                               (line   49)
  * SDATA_SECTION_ASM_OP:                  Sections.           (line   57)
  * sdiv_pow2M3 instruction pattern:       Standard Names.     (line  938)
  * sdiv_pow2M3 instruction pattern <1>:   Standard Names.     (line  938)
--- 58841,58859 ----
  * save_stack_nonlocal instruction pattern: Standard Names.   (line 2617)
  * SBSS_SECTION_ASM_OP:                   Sections.           (line   75)
  * Scalar evolutions:                     Scalar evolutions.  (line    6)
  * scalar_float_mode:                     Machine Modes.      (line  297)
  * scalar_int_mode:                       Machine Modes.      (line  294)
  * scalar_mode:                           Machine Modes.      (line  300)
+ * scalars, returned as values:           Scalar Return.      (line    6)
  * scalbM3 instruction pattern:           Standard Names.     (line 1291)
  * scatter_storeMN instruction pattern:   Standard Names.     (line  316)
  * SCHED_GROUP_P:                         Flags.              (line  162)
  * SCmode:                                Machine Modes.      (line  198)
  * scratch:                               Regs and Memory.    (line  325)
  * scratch operands:                      Regs and Memory.    (line  325)
  * scratch_operand:                       Machine-Independent Predicates.
                                                               (line   49)
+ * scratch, RTL sharing:                  Sharing.            (line   36)
  * SDATA_SECTION_ASM_OP:                  Sections.           (line   57)
  * sdiv_pow2M3 instruction pattern:       Standard Names.     (line  938)
  * sdiv_pow2M3 instruction pattern <1>:   Standard Names.     (line  938)
*************** Concept Index
*** 58863,58874 ****
  * SELECT_CC_MODE:                        MODE_CC Condition Codes.
                                                               (line    6)
  * select_vlM instruction pattern:        Standard Names.     (line  426)
! * sequence:                              Side Effects.       (line  250)
  * Sequence iterators:                    Sequence iterators. (line    6)
  * set:                                   Side Effects.       (line   15)
  * set and /f:                            Flags.              (line  135)
- * setmemM instruction pattern:           Standard Names.     (line 1897)
- * SETUP_FRAME_ADDRESSES:                 Frame Layout.       (line   94)
  * SET_ASM_OP:                            Label Output.       (line  451)
  * SET_ASM_OP <1>:                        Label Output.       (line  462)
  * set_attr:                              Tagging Insns.      (line   31)
--- 58867,58876 ----
  * SELECT_CC_MODE:                        MODE_CC Condition Codes.
                                                               (line    6)
  * select_vlM instruction pattern:        Standard Names.     (line  426)
! * sequence:                              Side Effects.       (line  249)
  * Sequence iterators:                    Sequence iterators. (line    6)
  * set:                                   Side Effects.       (line   15)
  * set and /f:                            Flags.              (line  135)
  * SET_ASM_OP:                            Label Output.       (line  451)
  * SET_ASM_OP <1>:                        Label Output.       (line  462)
  * set_attr:                              Tagging Insns.      (line   31)
*************** Concept Index
*** 58884,58889 ****
--- 58886,58893 ----
                                                               (line 3209)
  * SET_TYPE_STRUCTURAL_EQUALITY:          Types.              (line    6)
  * SET_TYPE_STRUCTURAL_EQUALITY <1>:      Types.              (line   81)
+ * setmemM instruction pattern:           Standard Names.     (line 1897)
+ * SETUP_FRAME_ADDRESSES:                 Frame Layout.       (line   94)
  * SFmode:                                Machine Modes.      (line   69)
  * sharing of RTL components:             Sharing.            (line    6)
  * shift:                                 Arithmetic.         (line  179)
*************** Concept Index
*** 58899,58904 ****
--- 58903,58913 ----
  * sibcall_epilogue instruction pattern:  Standard Names.     (line 2824)
  * sibling call:                          Edges.              (line  120)
  * SIBLING_CALL_P:                        Flags.              (line  175)
+ * SIG_ATOMIC_TYPE:                       Type Layout.        (line  196)
+ * sign_extend:                           Conversions.        (line   23)
+ * sign_extract:                          Bit-Fields.         (line    8)
+ * sign_extract, canonicalization of:     Insn Canonicalizations.
+                                                              (line  109)
  * signal-to-noise ratio (metaphorical usage for diagnostics): Guidelines for Diagnostics.
                                                               (line   39)
  * signbitM2 instruction pattern:         Standard Names.     (line 1436)
*************** Concept Index
*** 58907,58960 ****
  * signed maximum:                        Arithmetic.         (line  147)
  * signed minimum:                        Arithmetic.         (line  147)
  * significandM2 instruction pattern:     Standard Names.     (line 1446)
- * sign_extend:                           Conversions.        (line   23)
- * sign_extract:                          Bit-Fields.         (line    8)
- * sign_extract, canonicalization of:     Insn Canonicalizations.
-                                                              (line  109)
- * SIG_ATOMIC_TYPE:                       Type Layout.        (line  196)
  * SImode:                                Machine Modes.      (line   37)
  * simple constraints:                    Simple Constraints. (line    6)
  * simple_return:                         Side Effects.       (line   79)
  * simple_return instruction pattern:     Standard Names.     (line 2490)
  * sincosM3 instruction pattern:          Standard Names.     (line 1319)
  * sinM2 instruction pattern:             Standard Names.     (line 1313)
- * SIZETYPE:                              Type Layout.        (line  135)
  * SIZE_ASM_OP:                           Label Output.       (line   33)
  * SIZE_TYPE:                             Type Layout.        (line  119)
  * skip:                                  GTY Options.        (line  105)
  * SLOW_BYTE_ACCESS:                      Costs.              (line  182)
  * small IPA passes:                      Small IPA passes.   (line    6)
  * smax:                                  Arithmetic.         (line  147)
  * smin:                                  Arithmetic.         (line  147)
  * sms, swing, software pipelining:       RTL passes.         (line  159)
  * smulhrsM3 instruction pattern:         Standard Names.     (line  926)
  * smulhsM3 instruction pattern:          Standard Names.     (line  914)
  * smulM3_highpart instruction pattern:   Standard Names.     (line 1120)
- * smul_highpart:                         Arithmetic.         (line  111)
  * soft float library:                    Soft float library routines.
                                                               (line    6)
  * source code, location information:     Guidelines for Diagnostics.
                                                               (line  183)
  * spaceshipM4 instruction pattern:       Standard Names.     (line 3283)
! * special:                               GTY Options.        (line  287)
  * special predicates:                    Predicates.         (line   31)
  * SPECS:                                 Target Fragment.    (line  194)
  * speculation_barrier instruction pattern: Standard Names.   (line 2891)
  * speed of instructions:                 Costs.              (line    6)
- * splitting instructions:                Insn Splitting.     (line    6)
  * split_block:                           Maintaining the CFG.
                                                               (line   96)
  * SQmode:                                Machine Modes.      (line  114)
  * sqrt:                                  Arithmetic.         (line  212)
  * sqrtM2 instruction pattern:            Standard Names.     (line 1258)
  * square root:                           Arithmetic.         (line  212)
  * SSA:                                   SSA.                (line    6)
  * SSA, RTL form:                         RTL SSA.            (line    6)
  * ssaddM3 instruction pattern:           Standard Names.     (line  668)
  * ssadM instruction pattern:             Standard Names.     (line  896)
  * ssashlM3 instruction pattern:          Standard Names.     (line 1198)
- * SSA_NAME_DEF_STMT:                     SSA.                (line  184)
- * SSA_NAME_VERSION:                      SSA.                (line  189)
  * ssdivM3 instruction pattern:           Standard Names.     (line  668)
  * ssmaddMN4 instruction pattern:         Standard Names.     (line 1146)
  * ssmsubMN4 instruction pattern:         Standard Names.     (line 1170)
--- 58916,58972 ----
  * signed maximum:                        Arithmetic.         (line  147)
  * signed minimum:                        Arithmetic.         (line  147)
  * significandM2 instruction pattern:     Standard Names.     (line 1446)
  * SImode:                                Machine Modes.      (line   37)
  * simple constraints:                    Simple Constraints. (line    6)
  * simple_return:                         Side Effects.       (line   79)
  * simple_return instruction pattern:     Standard Names.     (line 2490)
  * sincosM3 instruction pattern:          Standard Names.     (line 1319)
  * sinM2 instruction pattern:             Standard Names.     (line 1313)
  * SIZE_ASM_OP:                           Label Output.       (line   33)
  * SIZE_TYPE:                             Type Layout.        (line  119)
+ * SIZETYPE:                              Type Layout.        (line  135)
  * skip:                                  GTY Options.        (line  105)
  * SLOW_BYTE_ACCESS:                      Costs.              (line  182)
  * small IPA passes:                      Small IPA passes.   (line    6)
  * smax:                                  Arithmetic.         (line  147)
  * smin:                                  Arithmetic.         (line  147)
  * sms, swing, software pipelining:       RTL passes.         (line  159)
+ * smul_highpart:                         Arithmetic.         (line  111)
  * smulhrsM3 instruction pattern:         Standard Names.     (line  926)
  * smulhsM3 instruction pattern:          Standard Names.     (line  914)
  * smulM3_highpart instruction pattern:   Standard Names.     (line 1120)
  * soft float library:                    Soft float library routines.
                                                               (line    6)
  * source code, location information:     Guidelines for Diagnostics.
                                                               (line  183)
  * spaceshipM4 instruction pattern:       Standard Names.     (line 3283)
! * special:                               GTY Options.        (line  286)
  * special predicates:                    Predicates.         (line   31)
  * SPECS:                                 Target Fragment.    (line  194)
  * speculation_barrier instruction pattern: Standard Names.   (line 2891)
  * speed of instructions:                 Costs.              (line    6)
  * split_block:                           Maintaining the CFG.
                                                               (line   96)
+ * splitting instructions:                Insn Splitting.     (line    6)
  * SQmode:                                Machine Modes.      (line  114)
  * sqrt:                                  Arithmetic.         (line  212)
  * sqrtM2 instruction pattern:            Standard Names.     (line 1258)
  * square root:                           Arithmetic.         (line  212)
+ * ss_abs:                                Arithmetic.         (line  206)
+ * ss_ashift:                             Arithmetic.         (line  179)
+ * ss_div:                                Arithmetic.         (line  122)
+ * ss_minus:                              Arithmetic.         (line   38)
+ * ss_mult:                               Arithmetic.         (line   92)
+ * ss_neg:                                Arithmetic.         (line   81)
+ * ss_plus:                               Arithmetic.         (line   14)
+ * ss_truncate:                           Conversions.        (line   43)
  * SSA:                                   SSA.                (line    6)
+ * SSA_NAME_DEF_STMT:                     SSA.                (line  184)
+ * SSA_NAME_VERSION:                      SSA.                (line  189)
  * SSA, RTL form:                         RTL SSA.            (line    6)
  * ssaddM3 instruction pattern:           Standard Names.     (line  668)
  * ssadM instruction pattern:             Standard Names.     (line  896)
  * ssashlM3 instruction pattern:          Standard Names.     (line 1198)
  * ssdivM3 instruction pattern:           Standard Names.     (line  668)
  * ssmaddMN4 instruction pattern:         Standard Names.     (line 1146)
  * ssmsubMN4 instruction pattern:         Standard Names.     (line 1170)
*************** Concept Index
*** 58962,58975 ****
  * ssnegM2 instruction pattern:           Standard Names.     (line 1248)
  * sssubM3 instruction pattern:           Standard Names.     (line  668)
  * sstruncMN2 instruction pattern:        Standard Names.     (line  686)
- * ss_abs:                                Arithmetic.         (line  206)
- * ss_ashift:                             Arithmetic.         (line  179)
- * ss_div:                                Arithmetic.         (line  122)
- * ss_minus:                              Arithmetic.         (line   38)
- * ss_mult:                               Arithmetic.         (line   92)
- * ss_neg:                                Arithmetic.         (line   81)
- * ss_plus:                               Arithmetic.         (line   14)
- * ss_truncate:                           Conversions.        (line   43)
  * stack arguments:                       Stack Arguments.    (line    6)
  * stack frame layout:                    Frame Layout.       (line    6)
  * stack smashing protection:             Stack Smashing Protection.
--- 58974,58979 ----
*************** Concept Index
*** 59004,59011 ****
  * stack_protect_set instruction pattern: Standard Names.     (line 3235)
  * stack_protect_test instruction pattern: Standard Names.    (line 3266)
  * STACK_PUSH_CODE:                       Frame Layout.       (line   12)
- * STACK_REGS:                            Stack Registers.    (line   19)
  * STACK_REG_COVER_CLASS:                 Stack Registers.    (line   22)
  * STACK_SAVEAREA_MODE:                   Storage Layout.     (line  504)
  * STACK_SIZE_MODE:                       Storage Layout.     (line  515)
  * STACK_SLOT_ALIGNMENT:                  Storage Layout.     (line  336)
--- 59008,59015 ----
  * stack_protect_set instruction pattern: Standard Names.     (line 3235)
  * stack_protect_test instruction pattern: Standard Names.    (line 3266)
  * STACK_PUSH_CODE:                       Frame Layout.       (line   12)
  * STACK_REG_COVER_CLASS:                 Stack Registers.    (line   22)
+ * STACK_REGS:                            Stack Registers.    (line   19)
  * STACK_SAVEAREA_MODE:                   Storage Layout.     (line  504)
  * STACK_SIZE_MODE:                       Storage Layout.     (line  515)
  * STACK_SLOT_ALIGNMENT:                  Storage Layout.     (line  336)
*************** Concept Index
*** 59063,59074 ****
  * subreg and /s:                         Flags.              (line  201)
  * subreg and /u:                         Flags.              (line  194)
  * subreg and /u and /v:                  Flags.              (line  184)
- * subreg, in strict_low_part:            RTL Declarations.   (line    9)
  * SUBREG_BYTE:                           Regs and Memory.    (line  316)
  * SUBREG_PROMOTED_UNSIGNED_P:            Flags.              (line  184)
  * SUBREG_PROMOTED_UNSIGNED_SET:          Flags.              (line  194)
  * SUBREG_PROMOTED_VAR_P:                 Flags.              (line  201)
  * SUBREG_REG:                            Regs and Memory.    (line  316)
  * subst iterators in .md files:          Subst Iterators.    (line    6)
  * subvM4 instruction pattern:            Standard Names.     (line  703)
  * SUCCESS_EXIT_CODE:                     Host Misc.          (line   12)
--- 59067,59078 ----
  * subreg and /s:                         Flags.              (line  201)
  * subreg and /u:                         Flags.              (line  194)
  * subreg and /u and /v:                  Flags.              (line  184)
  * SUBREG_BYTE:                           Regs and Memory.    (line  316)
  * SUBREG_PROMOTED_UNSIGNED_P:            Flags.              (line  184)
  * SUBREG_PROMOTED_UNSIGNED_SET:          Flags.              (line  194)
  * SUBREG_PROMOTED_VAR_P:                 Flags.              (line  201)
  * SUBREG_REG:                            Regs and Memory.    (line  316)
+ * subreg, in strict_low_part:            RTL Declarations.   (line    9)
  * subst iterators in .md files:          Subst Iterators.    (line    6)
  * subvM4 instruction pattern:            Standard Names.     (line  703)
  * SUCCESS_EXIT_CODE:                     Host Misc.          (line   12)
*************** Concept Index
*** 59077,59090 ****
                                                               (line   57)
  * SUPPORTS_ONE_ONLY:                     Label Output.       (line  290)
  * SUPPORTS_WEAK:                         Label Output.       (line  264)
- * SWITCHABLE_TARGET:                     Run-time Target.    (line  178)
  * SWITCH_BODY:                           Statements for C and C++.
                                                               (line    6)
  * SWITCH_COND:                           Statements for C and C++.
                                                               (line    6)
  * SWITCH_STMT:                           Statements for C and C++.
                                                               (line    6)
! * symbolic label:                        Sharing.            (line   20)
  * SYMBOL_FLAG_ANCHOR:                    Special Accessors.  (line  117)
  * SYMBOL_FLAG_EXTERNAL:                  Special Accessors.  (line   99)
  * SYMBOL_FLAG_FUNCTION:                  Special Accessors.  (line   92)
--- 59081,59093 ----
                                                               (line   57)
  * SUPPORTS_ONE_ONLY:                     Label Output.       (line  290)
  * SUPPORTS_WEAK:                         Label Output.       (line  264)
  * SWITCH_BODY:                           Statements for C and C++.
                                                               (line    6)
  * SWITCH_COND:                           Statements for C and C++.
                                                               (line    6)
  * SWITCH_STMT:                           Statements for C and C++.
                                                               (line    6)
! * SWITCHABLE_TARGET:                     Run-time Target.    (line  178)
  * SYMBOL_FLAG_ANCHOR:                    Special Accessors.  (line  117)
  * SYMBOL_FLAG_EXTERNAL:                  Special Accessors.  (line   99)
  * SYMBOL_FLAG_FUNCTION:                  Special Accessors.  (line   92)
*************** Concept Index
*** 59097,59103 ****
  * symbol_ref and /i:                     Flags.              (line  216)
  * symbol_ref and /u:                     Flags.              (line   19)
  * symbol_ref and /v:                     Flags.              (line  220)
- * symbol_ref, RTL sharing:               Sharing.            (line   20)
  * SYMBOL_REF_ANCHOR_P:                   Special Accessors.  (line  117)
  * SYMBOL_REF_BLOCK:                      Special Accessors.  (line  130)
  * SYMBOL_REF_BLOCK_OFFSET:               Special Accessors.  (line  135)
--- 59100,59105 ----
*************** Concept Index
*** 59115,59120 ****
--- 59117,59124 ----
  * SYMBOL_REF_TLS_MODEL:                  Special Accessors.  (line  108)
  * SYMBOL_REF_USED:                       Flags.              (line  211)
  * SYMBOL_REF_WEAK:                       Flags.              (line  216)
+ * symbol_ref, RTL sharing:               Sharing.            (line   20)
+ * symbolic label:                        Sharing.            (line   20)
  * sync_addMODE instruction pattern:      Standard Names.     (line 2945)
  * sync_andMODE instruction pattern:      Standard Names.     (line 2945)
  * sync_compare_and_swapMODE instruction pattern: Standard Names.
*************** Concept Index
*** 59155,59165 ****
  * target hooks:                          Target Structure.   (line    6)
  * target makefile fragment:              Target Fragment.    (line    6)
  * target specifications:                 Run-time Target.    (line    6)
- * targetm:                               Target Structure.   (line    6)
- * targets, makefile:                     Makefile.           (line    6)
  * TARGET_ABSOLUTE_BIGGEST_ALIGNMENT:     Storage Layout.     (line  212)
  * TARGET_ADDITIONAL_ALLOCNO_CLASS_P:     Register Classes.   (line  668)
- * TARGET_ADDRESS_COST:                   Costs.              (line  416)
  * TARGET_ADDR_SPACE_ADDRESS_MODE:        Named Address Spaces.
                                                               (line   42)
  * TARGET_ADDR_SPACE_CONVERT:             Named Address Spaces.
--- 59159,59166 ----
*************** Concept Index
*** 59180,59185 ****
--- 59181,59187 ----
                                                               (line   48)
  * TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID:  Named Address Spaces.
                                                               (line   86)
+ * TARGET_ADDRESS_COST:                   Costs.              (line  416)
  * TARGET_ALIGN_ANON_BITFIELD:            Storage Layout.     (line  463)
  * TARGET_ALLOCATE_INITIAL_VALUE:         Misc.               (line  856)
  * TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS:  Misc.               (line 1139)
*************** Concept Index
*** 59206,59213 ****
  * TARGET_ASM_CODE_END:                   File Framework.     (line   57)
  * TARGET_ASM_CONSTRUCTOR:                Macros for Initialization.
                                                               (line   76)
- * TARGET_ASM_DECLARE_CONSTANT_NAME:      Label Output.       (line  177)
  * TARGET_ASM_DECL_END:                   Data Output.        (line   44)
  * TARGET_ASM_DESTRUCTOR:                 Macros for Initialization.
                                                               (line   90)
  * TARGET_ASM_ELF_FLAGS_NUMERIC:          File Framework.     (line  120)
--- 59208,59215 ----
  * TARGET_ASM_CODE_END:                   File Framework.     (line   57)
  * TARGET_ASM_CONSTRUCTOR:                Macros for Initialization.
                                                               (line   76)
  * TARGET_ASM_DECL_END:                   Data Output.        (line   44)
+ * TARGET_ASM_DECLARE_CONSTANT_NAME:      Label Output.       (line  177)
  * TARGET_ASM_DESTRUCTOR:                 Macros for Initialization.
                                                               (line   90)
  * TARGET_ASM_ELF_FLAGS_NUMERIC:          File Framework.     (line  120)
*************** Concept Index
*** 59280,59297 ****
  * TARGET_BUILTIN_DECL:                   Misc.               (line  670)
  * TARGET_BUILTIN_RECIPROCAL:             Addressing Modes.   (line  277)
  * TARGET_BUILTIN_SETJMP_FRAME_VALUE:     Frame Layout.       (line  101)
! * TARGET_CALLEE_COPIES:                  Register Arguments. (line  118)
! * TARGET_CALLEE_SAVE_COST:               Costs.              (line  104)
  * TARGET_CALL_ARGS:                      Varargs.            (line  158)
  * TARGET_CALL_FUSAGE_CONTAINS_NON_CALLEE_CLOBBERS: Miscellaneous Register Hooks.
                                                               (line    6)
  * TARGET_CALL_OFFSET_RETURN_LABEL:       Varargs.            (line  126)
! * TARGET_CANNOT_FORCE_CONST_MEM:         Addressing Modes.   (line  250)
! * TARGET_CANNOT_MODIFY_JUMPS_P:          Misc.               (line  918)
! * TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P:  Register Classes.   (line  639)
! * TARGET_CANONICALIZE_COMPARISON:        MODE_CC Condition Codes.
!                                                              (line   55)
! * TARGET_CANONICAL_VA_LIST_TYPE:         Register Arguments. (line  296)
  * TARGET_CAN_CHANGE_MODE_CLASS:          Register Classes.   (line  567)
  * TARGET_CAN_CHANGE_MODE_CLASS and subreg semantics: Regs and Memory.
                                                               (line  299)
--- 59282,59297 ----
  * TARGET_BUILTIN_DECL:                   Misc.               (line  670)
  * TARGET_BUILTIN_RECIPROCAL:             Addressing Modes.   (line  277)
  * TARGET_BUILTIN_SETJMP_FRAME_VALUE:     Frame Layout.       (line  101)
! * TARGET_C_BITINT_TYPE_INFO:             Storage Layout.     (line  131)
! * TARGET_C_EXCESS_PRECISION:             Storage Layout.     (line  109)
! * TARGET_C_MODE_FOR_FLOATING_TYPE:       Storage Layout.     (line  145)
! * TARGET_C_PREINCLUDE:                   Misc.               (line  397)
  * TARGET_CALL_ARGS:                      Varargs.            (line  158)
  * TARGET_CALL_FUSAGE_CONTAINS_NON_CALLEE_CLOBBERS: Miscellaneous Register Hooks.
                                                               (line    6)
  * TARGET_CALL_OFFSET_RETURN_LABEL:       Varargs.            (line  126)
! * TARGET_CALLEE_COPIES:                  Register Arguments. (line  118)
! * TARGET_CALLEE_SAVE_COST:               Costs.              (line  104)
  * TARGET_CAN_CHANGE_MODE_CLASS:          Register Classes.   (line  567)
  * TARGET_CAN_CHANGE_MODE_CLASS and subreg semantics: Regs and Memory.
                                                               (line  299)
*************** Concept Index
*** 59299,59304 ****
--- 59299,59310 ----
  * TARGET_CAN_FOLLOW_JUMP:                Misc.               (line  842)
  * TARGET_CAN_INLINE_P:                   Target Attributes.  (line  213)
  * TARGET_CAN_USE_DOLOOP_P:               Misc.               (line  796)
+ * TARGET_CANNOT_FORCE_CONST_MEM:         Addressing Modes.   (line  250)
+ * TARGET_CANNOT_MODIFY_JUMPS_P:          Misc.               (line  918)
+ * TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P:  Register Classes.   (line  639)
+ * TARGET_CANONICAL_VA_LIST_TYPE:         Register Arguments. (line  296)
+ * TARGET_CANONICALIZE_COMPARISON:        MODE_CC Condition Codes.
+                                                              (line   55)
  * TARGET_CASE_VALUES_THRESHOLD:          Misc.               (line   46)
  * TARGET_CC_MODES_COMPATIBLE:            MODE_CC Condition Codes.
                                                               (line  119)
*************** Concept Index
*** 59309,59325 ****
  * TARGET_CLASS_MAX_NREGS:                Register Classes.   (line  539)
  * TARGET_CLONES_ATTR_SEPARATOR:          Target Attributes.  (line  153)
  * TARGET_COMMUTATIVE_P:                  Misc.               (line  849)
  * TARGET_COMPARE_BY_PIECES_BRANCH_RATIO: Costs.              (line  272)
  * TARGET_COMPARE_VERSION_PRIORITY:       Misc.               (line  740)
  * TARGET_COMPATIBLE_VECTOR_TYPES_P:      Register Arguments. (line  373)
  * TARGET_COMPUTE_FRAME_LAYOUT:           Elimination.        (line   81)
  * TARGET_COMPUTE_MULTILIB:               Run-time Target.    (line  160)
  * TARGET_COMPUTE_PRESSURE_CLASSES:       Register Classes.   (line  684)
- * TARGET_COMP_TYPE_ATTRIBUTES:           Target Attributes.  (line   46)
  * TARGET_CONDITIONAL_REGISTER_USAGE:     Register Basics.    (line  102)
- * TARGET_CONSTANT_ALIGNMENT:             Storage Layout.     (line  302)
  * TARGET_CONST_ANCHOR:                   Misc.               (line 1150)
  * TARGET_CONST_NOT_OK_FOR_DEBUG_P:       Addressing Modes.   (line  246)
  * TARGET_CONVERT_TO_TYPE:                Misc.               (line 1077)
  * TARGET_CPU_CPP_BUILTINS:               Run-time Target.    (line    8)
  * TARGET_CSTORE_MODE:                    Register Classes.   (line  676)
--- 59315,59331 ----
  * TARGET_CLASS_MAX_NREGS:                Register Classes.   (line  539)
  * TARGET_CLONES_ATTR_SEPARATOR:          Target Attributes.  (line  153)
  * TARGET_COMMUTATIVE_P:                  Misc.               (line  849)
+ * TARGET_COMP_TYPE_ATTRIBUTES:           Target Attributes.  (line   46)
  * TARGET_COMPARE_BY_PIECES_BRANCH_RATIO: Costs.              (line  272)
  * TARGET_COMPARE_VERSION_PRIORITY:       Misc.               (line  740)
  * TARGET_COMPATIBLE_VECTOR_TYPES_P:      Register Arguments. (line  373)
  * TARGET_COMPUTE_FRAME_LAYOUT:           Elimination.        (line   81)
  * TARGET_COMPUTE_MULTILIB:               Run-time Target.    (line  160)
  * TARGET_COMPUTE_PRESSURE_CLASSES:       Register Classes.   (line  684)
  * TARGET_CONDITIONAL_REGISTER_USAGE:     Register Basics.    (line  102)
  * TARGET_CONST_ANCHOR:                   Misc.               (line 1150)
  * TARGET_CONST_NOT_OK_FOR_DEBUG_P:       Addressing Modes.   (line  246)
+ * TARGET_CONSTANT_ALIGNMENT:             Storage Layout.     (line  302)
  * TARGET_CONVERT_TO_TYPE:                Misc.               (line 1077)
  * TARGET_CPU_CPP_BUILTINS:               Run-time Target.    (line    8)
  * TARGET_CSTORE_MODE:                    Register Classes.   (line  676)
*************** Concept Index
*** 59340,59349 ****
  * TARGET_CXX_LIBRARY_RTTI_COMDAT:        C++ ABI.            (line   68)
  * TARGET_CXX_USE_AEABI_ATEXIT:           C++ ABI.            (line   73)
  * TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT:  C++ ABI.            (line   79)
! * TARGET_C_BITINT_TYPE_INFO:             Storage Layout.     (line  131)
! * TARGET_C_EXCESS_PRECISION:             Storage Layout.     (line  109)
! * TARGET_C_MODE_FOR_FLOATING_TYPE:       Storage Layout.     (line  145)
! * TARGET_C_PREINCLUDE:                   Misc.               (line  397)
  * TARGET_DEBUG_UNWIND_INFO:              DWARF.              (line   31)
  * TARGET_DECIMAL_FLOAT_SUPPORTED_P:      Storage Layout.     (line  568)
  * TARGET_DECLSPEC:                       Target Attributes.  (line   93)
--- 59346,59360 ----
  * TARGET_CXX_LIBRARY_RTTI_COMDAT:        C++ ABI.            (line   68)
  * TARGET_CXX_USE_AEABI_ATEXIT:           C++ ABI.            (line   73)
  * TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT:  C++ ABI.            (line   79)
! * TARGET_D_CPU_VERSIONS:                 D Language and ABI. (line    6)
! * TARGET_D_HAS_STDCALL_CONVENTION:       D Language and ABI. (line   51)
! * TARGET_D_MINFO_SECTION:                D Language and ABI. (line   29)
! * TARGET_D_MINFO_SECTION_END:            D Language and ABI. (line   46)
! * TARGET_D_MINFO_SECTION_START:          D Language and ABI. (line   41)
! * TARGET_D_OS_VERSIONS:                  D Language and ABI. (line   13)
! * TARGET_D_REGISTER_CPU_TARGET_INFO:     D Language and ABI. (line   17)
! * TARGET_D_REGISTER_OS_TARGET_INFO:      D Language and ABI. (line   25)
! * TARGET_D_TEMPLATES_ALWAYS_COMDAT:      D Language and ABI. (line   59)
  * TARGET_DEBUG_UNWIND_INFO:              DWARF.              (line   31)
  * TARGET_DECIMAL_FLOAT_SUPPORTED_P:      Storage Layout.     (line  568)
  * TARGET_DECLSPEC:                       Target Attributes.  (line   93)
*************** Concept Index
*** 59361,59366 ****
--- 59372,59379 ----
  * TARGET_DOLOOP_COST_FOR_GENERIC:        Misc.               (line  774)
  * TARGET_DTORS_FROM_CXA_ATEXIT:          Macros for Initialization.
                                                               (line   68)
+ * TARGET_DW_CFI_OPRND1_DESC:             Exception Region Output.
+                                                              (line  125)
  * TARGET_DWARF_CALLING_CONVENTION:       DWARF.              (line   18)
  * TARGET_DWARF_FRAME_REG_MODE:           Exception Region Output.
                                                               (line  113)
*************** Concept Index
*** 59368,59384 ****
  * TARGET_DWARF_POLY_INDETERMINATE_VALUE: Frame Layout.       (line  183)
  * TARGET_DWARF_REGISTER_SPAN:            Exception Region Output.
                                                               (line  104)
- * TARGET_DW_CFI_OPRND1_DESC:             Exception Region Output.
-                                                              (line  125)
- * TARGET_D_CPU_VERSIONS:                 D Language and ABI. (line    6)
- * TARGET_D_HAS_STDCALL_CONVENTION:       D Language and ABI. (line   51)
- * TARGET_D_MINFO_SECTION:                D Language and ABI. (line   29)
- * TARGET_D_MINFO_SECTION_END:            D Language and ABI. (line   46)
- * TARGET_D_MINFO_SECTION_START:          D Language and ABI. (line   41)
- * TARGET_D_OS_VERSIONS:                  D Language and ABI. (line   13)
- * TARGET_D_REGISTER_CPU_TARGET_INFO:     D Language and ABI. (line   17)
- * TARGET_D_REGISTER_OS_TARGET_INFO:      D Language and ABI. (line   25)
- * TARGET_D_TEMPLATES_ALWAYS_COMDAT:      D Language and ABI. (line   59)
  * TARGET_EDOM:                           Library Calls.      (line   59)
  * TARGET_EMIT_CALL_BUILTIN___CLEAR_CACHE: Trampolines.       (line  132)
  * TARGET_EMIT_EPILOGUE_FOR_SIBCALL:      Misc.               (line  631)
--- 59381,59386 ----
*************** Concept Index
*** 59419,59430 ****
  * target_flags:                          Run-time Target.    (line   51)
  * TARGET_FLAGS_REGNUM:                   MODE_CC Condition Codes.
                                                               (line  132)
- * TARGET_FLOATN_BUILTIN_P:               Register Arguments. (line  461)
- * TARGET_FLOATN_MODE:                    Register Arguments. (line  443)
  * TARGET_FLOAT_EXCEPTIONS_ROUNDING_SUPPORTED_P: Run-time Target.
                                                               (line  197)
! * TARGET_FNTYPE_ABI:                     Register Basics.    (line   58)
  * TARGET_FN_ABI_VA_LIST:                 Register Arguments. (line  291)
  * TARGET_FOLD_BUILTIN:                   Misc.               (line  723)
  * TARGET_FORMAT_TYPES:                   Misc.               (line 1019)
  * TARGET_FORTIFY_SOURCE_DEFAULT_LEVEL:   Library Calls.      (line   89)
--- 59421,59432 ----
  * target_flags:                          Run-time Target.    (line   51)
  * TARGET_FLAGS_REGNUM:                   MODE_CC Condition Codes.
                                                               (line  132)
  * TARGET_FLOAT_EXCEPTIONS_ROUNDING_SUPPORTED_P: Run-time Target.
                                                               (line  197)
! * TARGET_FLOATN_BUILTIN_P:               Register Arguments. (line  461)
! * TARGET_FLOATN_MODE:                    Register Arguments. (line  443)
  * TARGET_FN_ABI_VA_LIST:                 Register Arguments. (line  291)
+ * TARGET_FNTYPE_ABI:                     Register Basics.    (line   58)
  * TARGET_FOLD_BUILTIN:                   Misc.               (line  723)
  * TARGET_FORMAT_TYPES:                   Misc.               (line 1019)
  * TARGET_FORTIFY_SOURCE_DEFAULT_LEVEL:   Library Calls.      (line   89)
*************** Concept Index
*** 59441,59449 ****
  * TARGET_FUNCTION_OK_FOR_SIBCALL:        Tail Calls.         (line    6)
  * TARGET_FUNCTION_VALUE:                 Scalar Return.      (line    9)
  * TARGET_FUNCTION_VALUE_REGNO_P:         Scalar Return.      (line   96)
- * TARGET_GENERATE_VERSION_DISPATCHER_BODY: Misc.             (line  756)
  * TARGET_GEN_CCMP_FIRST:                 Misc.               (line  937)
  * TARGET_GEN_CCMP_NEXT:                  Misc.               (line  948)
  * TARGET_GET_DRAP_RTX:                   Misc.               (line 1113)
  * TARGET_GET_FUNCTION_VERSIONS_DISPATCHER: Misc.             (line  749)
  * TARGET_GET_MULTILIB_ABI_NAME:          Register Basics.    (line   99)
--- 59443,59451 ----
  * TARGET_FUNCTION_OK_FOR_SIBCALL:        Tail Calls.         (line    6)
  * TARGET_FUNCTION_VALUE:                 Scalar Return.      (line    9)
  * TARGET_FUNCTION_VALUE_REGNO_P:         Scalar Return.      (line   96)
  * TARGET_GEN_CCMP_FIRST:                 Misc.               (line  937)
  * TARGET_GEN_CCMP_NEXT:                  Misc.               (line  948)
+ * TARGET_GENERATE_VERSION_DISPATCHER_BODY: Misc.             (line  756)
  * TARGET_GET_DRAP_RTX:                   Misc.               (line 1113)
  * TARGET_GET_FUNCTION_VERSIONS_DISPATCHER: Misc.             (line  749)
  * TARGET_GET_MULTILIB_ABI_NAME:          Register Basics.    (line   99)
*************** Concept Index
*** 59491,59496 ****
--- 59493,59499 ----
  * TARGET_HAVE_SWITCHABLE_BSS_SECTIONS:   File Framework.     (line  155)
  * TARGET_HAVE_TLS:                       Sections.           (line  331)
  * TARGET_IFUNC_REF_LOCAL_OK:             Misc.               (line 1191)
+ * TARGET_IN_SMALL_DATA_P:                Sections.           (line  307)
  * TARGET_INIT_BUILTINS:                  Misc.               (line  654)
  * TARGET_INIT_DWARF_REG_SIZES_EXTRA:     Exception Region Output.
                                                               (line  132)
*************** Concept Index
*** 59505,59511 ****
  * TARGET_INVALID_CONVERSION:             Misc.               (line 1050)
  * TARGET_INVALID_UNARY_OP:               Misc.               (line 1056)
  * TARGET_INVALID_WITHIN_DOLOOP:          Misc.               (line  813)
- * TARGET_IN_SMALL_DATA_P:                Sections.           (line  307)
  * TARGET_IRA_CHANGE_PSEUDO_ALLOCNO_CLASS: Register Classes.  (line  594)
  * TARGET_KEEP_LEAF_WHEN_PROFILED:        Profiling.          (line   39)
  * TARGET_LEGITIMATE_ADDRESS_P:           Addressing Modes.   (line   48)
--- 59508,59513 ----
*************** Concept Index
*** 59513,59521 ****
  * TARGET_LEGITIMATE_CONSTANT_P:          Addressing Modes.   (line  221)
  * TARGET_LEGITIMIZE_ADDRESS:             Addressing Modes.   (line  137)
  * TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT: Register Classes.  (line  647)
! * TARGET_LIBCALL_VALUE:                  Scalar Return.      (line   65)
  * TARGET_LIBC_HAS_FAST_FUNCTION:         Library Calls.      (line   85)
  * TARGET_LIBC_HAS_FUNCTION:              Library Calls.      (line   77)
  * TARGET_LIBFUNC_GNU_PREFIX:             Library Calls.      (line   24)
  * TARGET_LIBGCC_CMP_RETURN_MODE:         Storage Layout.     (line  524)
  * TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P: Register Arguments.
--- 59515,59524 ----
  * TARGET_LEGITIMATE_CONSTANT_P:          Addressing Modes.   (line  221)
  * TARGET_LEGITIMIZE_ADDRESS:             Addressing Modes.   (line  137)
  * TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT: Register Classes.  (line  647)
! * TARGET_LIB_INT_CMP_BIASED:             Library Calls.      (line   42)
  * TARGET_LIBC_HAS_FAST_FUNCTION:         Library Calls.      (line   85)
  * TARGET_LIBC_HAS_FUNCTION:              Library Calls.      (line   77)
+ * TARGET_LIBCALL_VALUE:                  Scalar Return.      (line   65)
  * TARGET_LIBFUNC_GNU_PREFIX:             Library Calls.      (line   24)
  * TARGET_LIBGCC_CMP_RETURN_MODE:         Storage Layout.     (line  524)
  * TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P: Register Arguments.
*************** Concept Index
*** 59523,59529 ****
  * TARGET_LIBGCC_SDATA_SECTION:           Sections.           (line  136)
  * TARGET_LIBGCC_SHIFT_COUNT_MODE:        Storage Layout.     (line  530)
  * TARGET_LIBM_FUNCTION_MAX_ERROR:        Library Calls.      (line   93)
- * TARGET_LIB_INT_CMP_BIASED:             Library Calls.      (line   42)
  * TARGET_LOOP_UNROLL_ADJUST:             Misc.               (line  972)
  * TARGET_LOWER_LOCAL_DECL_ALIGNMENT:     Storage Layout.     (line  270)
  * TARGET_LRA_P:                          Register Classes.   (line  601)
--- 59526,59531 ----
*************** Concept Index
*** 59534,59539 ****
--- 59536,59543 ----
  * TARGET_MAX_ANCHOR_OFFSET:              Anchored Addresses. (line   38)
  * TARGET_MAX_NOCE_IFCVT_SEQ_COST:        Costs.              (line  462)
  * TARGET_MD_ASM_ADJUST:                  Misc.               (line  526)
+ * TARGET_MEM_CONSTRAINT:                 Addressing Modes.   (line  115)
+ * TARGET_MEM_REF:                        Storage References. (line    6)
  * TARGET_MEMBER_TYPE_FORCES_BLK:         Storage Layout.     (line  476)
  * TARGET_MEMMODEL_CHECK:                 Misc.               (line 1177)
  * TARGET_MEMORY_MOVE_COST:               Costs.              (line   79)
*************** Concept Index
*** 59545,59559 ****
  * TARGET_MEMTAG_SET_TAG:                 Misc.               (line 1355)
  * TARGET_MEMTAG_TAG_SIZE:                Misc.               (line 1321)
  * TARGET_MEMTAG_UNTAGGED_POINTER:        Misc.               (line 1368)
- * TARGET_MEM_CONSTRAINT:                 Addressing Modes.   (line  115)
- * TARGET_MEM_REF:                        Storage References. (line    6)
  * TARGET_MERGE_DECL_ATTRIBUTES:          Target Attributes.  (line   66)
  * TARGET_MERGE_TYPE_ATTRIBUTES:          Target Attributes.  (line   58)
  * TARGET_MIN_ANCHOR_OFFSET:              Anchored Addresses. (line   32)
  * TARGET_MIN_ARITHMETIC_PRECISION:       Misc.               (line   63)
  * TARGET_MIN_DIVISIONS_FOR_RECIP_MUL:    Misc.               (line  112)
- * TARGET_MODES_TIEABLE_P:                Values in Registers.
-                                                              (line  123)
  * TARGET_MODE_AFTER:                     Mode Switching.     (line   64)
  * TARGET_MODE_BACKPROP:                  Mode Switching.     (line   95)
  * TARGET_MODE_CAN_TRANSFER_BITS:         Register Arguments. (line  319)
--- 59549,59559 ----
*************** Concept Index
*** 59566,59582 ****
  * TARGET_MODE_NEEDED:                    Mode Switching.     (line   55)
  * TARGET_MODE_PRIORITY:                  Mode Switching.     (line  144)
  * TARGET_MODE_REP_EXTENDED:              Misc.               (line  199)
  * TARGET_MS_BITFIELD_LAYOUT_P:           Storage Layout.     (line  540)
  * TARGET_MUST_PASS_IN_STACK:             Register Arguments. (line   51)
  * TARGET_MUST_PASS_IN_STACK, and TARGET_FUNCTION_ARG: Register Arguments.
                                                               (line   43)
  * TARGET_NARROW_VOLATILE_BITFIELD:       Storage Layout.     (line  469)
  * TARGET_NEED_IPA_FN_TARGET_INFO:        Target Attributes.  (line  238)
  * TARGET_NEW_ADDRESS_PROFITABLE_P:       Costs.              (line  487)
- * TARGET_NOCE_CONVERSION_PROFITABLE_P:   Costs.              (line  481)
  * TARGET_NO_REGISTER_ALLOCATION:         DWARF.              (line   84)
  * TARGET_NO_SPECULATION_IN_DELAY_SLOTS_P: Costs.             (line  494)
! * TARGET_N_FORMAT_TYPES:                 Misc.               (line 1024)
  * TARGET_OBJC_CONSTRUCT_STRING_OBJECT:   Run-time Target.    (line   88)
  * TARGET_OBJC_DECLARE_CLASS_DEFINITION:  Run-time Target.    (line  109)
  * TARGET_OBJC_DECLARE_UNRESOLVED_CLASS_REFERENCE: Run-time Target.
--- 59566,59584 ----
  * TARGET_MODE_NEEDED:                    Mode Switching.     (line   55)
  * TARGET_MODE_PRIORITY:                  Mode Switching.     (line  144)
  * TARGET_MODE_REP_EXTENDED:              Misc.               (line  199)
+ * TARGET_MODES_TIEABLE_P:                Values in Registers.
+                                                              (line  123)
  * TARGET_MS_BITFIELD_LAYOUT_P:           Storage Layout.     (line  540)
  * TARGET_MUST_PASS_IN_STACK:             Register Arguments. (line   51)
  * TARGET_MUST_PASS_IN_STACK, and TARGET_FUNCTION_ARG: Register Arguments.
                                                               (line   43)
+ * TARGET_N_FORMAT_TYPES:                 Misc.               (line 1024)
  * TARGET_NARROW_VOLATILE_BITFIELD:       Storage Layout.     (line  469)
  * TARGET_NEED_IPA_FN_TARGET_INFO:        Target Attributes.  (line  238)
  * TARGET_NEW_ADDRESS_PROFITABLE_P:       Costs.              (line  487)
  * TARGET_NO_REGISTER_ALLOCATION:         DWARF.              (line   84)
  * TARGET_NO_SPECULATION_IN_DELAY_SLOTS_P: Costs.             (line  494)
! * TARGET_NOCE_CONVERSION_PROFITABLE_P:   Costs.              (line  481)
  * TARGET_OBJC_CONSTRUCT_STRING_OBJECT:   Run-time Target.    (line   88)
  * TARGET_OBJC_DECLARE_CLASS_DEFINITION:  Run-time Target.    (line  109)
  * TARGET_OBJC_DECLARE_UNRESOLVED_CLASS_REFERENCE: Run-time Target.
*************** Concept Index
*** 59604,59613 ****
  * TARGET_OUTPUT_CFI_DIRECTIVE:           Exception Region Output.
                                                               (line  119)
  * TARGET_OVERLAP_OP_BY_PIECES_P:         Costs.              (line  265)
  * TARGET_OVERRIDES_FORMAT_ATTRIBUTES:    Misc.               (line 1028)
  * TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT: Misc.            (line 1035)
  * TARGET_OVERRIDES_FORMAT_INIT:          Misc.               (line 1039)
- * TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE:  Run-time Target.    (line  126)
  * TARGET_PASS_BY_REFERENCE:              Register Arguments. (line  106)
  * TARGET_PCH_VALID_P:                    PCH Target.         (line   11)
  * TARGET_POSIX_IO:                       Misc.               (line  557)
--- 59606,59615 ----
  * TARGET_OUTPUT_CFI_DIRECTIVE:           Exception Region Output.
                                                               (line  119)
  * TARGET_OVERLAP_OP_BY_PIECES_P:         Costs.              (line  265)
+ * TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE:  Run-time Target.    (line  126)
  * TARGET_OVERRIDES_FORMAT_ATTRIBUTES:    Misc.               (line 1028)
  * TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT: Misc.            (line 1035)
  * TARGET_OVERRIDES_FORMAT_INIT:          Misc.               (line 1039)
  * TARGET_PASS_BY_REFERENCE:              Register Arguments. (line  106)
  * TARGET_PCH_VALID_P:                    PCH Target.         (line   11)
  * TARGET_POSIX_IO:                       Misc.               (line  557)
*************** Concept Index
*** 59621,59629 ****
  * TARGET_PREPARE_PCH_SAVE:               PCH Target.         (line   34)
  * TARGET_PRETEND_OUTGOING_VARARGS_NAMED: Varargs.            (line  189)
  * TARGET_PROFILE_BEFORE_PROLOGUE:        Sections.           (line  315)
- * TARGET_PROMOTED_TYPE:                  Misc.               (line 1069)
  * TARGET_PROMOTE_FUNCTION_MODE:          Storage Layout.     (line  153)
  * TARGET_PROMOTE_PROTOTYPES:             Stack Arguments.    (line   10)
  * TARGET_PTRMEMFUNC_VBIT_LOCATION:       Type Layout.        (line  238)
  * TARGET_PUSH_ARGUMENT:                  Stack Arguments.    (line   17)
  * TARGET_RECORD_OFFLOAD_SYMBOL:          Misc.               (line 1219)
--- 59623,59631 ----
  * TARGET_PREPARE_PCH_SAVE:               PCH Target.         (line   34)
  * TARGET_PRETEND_OUTGOING_VARARGS_NAMED: Varargs.            (line  189)
  * TARGET_PROFILE_BEFORE_PROLOGUE:        Sections.           (line  315)
  * TARGET_PROMOTE_FUNCTION_MODE:          Storage Layout.     (line  153)
  * TARGET_PROMOTE_PROTOTYPES:             Stack Arguments.    (line   10)
+ * TARGET_PROMOTED_TYPE:                  Misc.               (line 1069)
  * TARGET_PTRMEMFUNC_VBIT_LOCATION:       Type Layout.        (line  238)
  * TARGET_PUSH_ARGUMENT:                  Stack Arguments.    (line   17)
  * TARGET_RECORD_OFFLOAD_SYMBOL:          Misc.               (line 1219)
*************** Concept Index
*** 59680,59687 ****
  * TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN:  Scheduling.         (line  153)
  * TARGET_SCHED_INIT_GLOBAL:              Scheduling.         (line  129)
  * TARGET_SCHED_INIT_SCHED_CONTEXT:       Scheduling.         (line  298)
- * TARGET_SCHED_ISSUE_RATE:               Scheduling.         (line   11)
  * TARGET_SCHED_IS_COSTLY_DEPENDENCE:     Scheduling.         (line  267)
  * TARGET_SCHED_MACRO_FUSION_P:           Scheduling.         (line   87)
  * TARGET_SCHED_MACRO_FUSION_PAIR_P:      Scheduling.         (line   91)
  * TARGET_SCHED_NEEDS_BLOCK_P:            Scheduling.         (line  328)
--- 59682,59689 ----
  * TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN:  Scheduling.         (line  153)
  * TARGET_SCHED_INIT_GLOBAL:              Scheduling.         (line  129)
  * TARGET_SCHED_INIT_SCHED_CONTEXT:       Scheduling.         (line  298)
  * TARGET_SCHED_IS_COSTLY_DEPENDENCE:     Scheduling.         (line  267)
+ * TARGET_SCHED_ISSUE_RATE:               Scheduling.         (line   11)
  * TARGET_SCHED_MACRO_FUSION_P:           Scheduling.         (line   87)
  * TARGET_SCHED_MACRO_FUSION_PAIR_P:      Scheduling.         (line   91)
  * TARGET_SCHED_NEEDS_BLOCK_P:            Scheduling.         (line  328)
*************** Concept Index
*** 59698,59708 ****
  * TARGET_SECONDARY_RELOAD:               Register Classes.   (line  336)
  * TARGET_SECTION_TYPE_FLAGS:             File Framework.     (line  160)
  * TARGET_SELECT_EARLY_REMAT_MODES:       Register Classes.   (line  512)
- * TARGET_SETJMP_PRESERVES_NONVOLATILE_REGS_P: Misc.          (line  225)
- * TARGET_SETUP_INCOMING_VARARGS:         Varargs.            (line   71)
  * TARGET_SET_CURRENT_FUNCTION:           Misc.               (line  882)
  * TARGET_SET_DEFAULT_TYPE_ATTRIBUTES:    Target Attributes.  (line   54)
  * TARGET_SET_UP_BY_PROLOGUE:             Tail Calls.         (line   29)
  * TARGET_SHIFT_TRUNCATION_MASK:          Misc.               (line  160)
  * TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB:  Shrink-wrapping separate components.
                                                               (line   36)
--- 59700,59710 ----
  * TARGET_SECONDARY_RELOAD:               Register Classes.   (line  336)
  * TARGET_SECTION_TYPE_FLAGS:             File Framework.     (line  160)
  * TARGET_SELECT_EARLY_REMAT_MODES:       Register Classes.   (line  512)
  * TARGET_SET_CURRENT_FUNCTION:           Misc.               (line  882)
  * TARGET_SET_DEFAULT_TYPE_ATTRIBUTES:    Target Attributes.  (line   54)
  * TARGET_SET_UP_BY_PROLOGUE:             Tail Calls.         (line   29)
+ * TARGET_SETJMP_PRESERVES_NONVOLATILE_REGS_P: Misc.          (line  225)
+ * TARGET_SETUP_INCOMING_VARARGS:         Varargs.            (line   71)
  * TARGET_SHIFT_TRUNCATION_MASK:          Misc.               (line  160)
  * TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB:  Shrink-wrapping separate components.
                                                               (line   36)
*************** Concept Index
*** 59735,59744 ****
                                                               (line    6)
  * TARGET_STACK_PROTECT_RUNTIME_ENABLED_P: Stack Smashing Protection.
                                                               (line   25)
  * TARGET_STARTING_FRAME_OFFSET:          Frame Layout.       (line   34)
  * TARGET_STARTING_FRAME_OFFSET and virtual registers: Regs and Memory.
                                                               (line   74)
- * TARGET_START_CALL_ARGS:                Varargs.            (line  134)
  * TARGET_STATIC_CHAIN:                   Frame Registers.    (line   90)
  * TARGET_STATIC_RTX_ALIGNMENT:           Storage Layout.     (line  274)
  * TARGET_STRICT_ARGUMENT_NAMING:         Varargs.            (line  110)
--- 59737,59746 ----
                                                               (line    6)
  * TARGET_STACK_PROTECT_RUNTIME_ENABLED_P: Stack Smashing Protection.
                                                               (line   25)
+ * TARGET_START_CALL_ARGS:                Varargs.            (line  134)
  * TARGET_STARTING_FRAME_OFFSET:          Frame Layout.       (line   34)
  * TARGET_STARTING_FRAME_OFFSET and virtual registers: Regs and Memory.
                                                               (line   74)
  * TARGET_STATIC_CHAIN:                   Frame Registers.    (line   90)
  * TARGET_STATIC_RTX_ALIGNMENT:           Storage Layout.     (line  274)
  * TARGET_STRICT_ARGUMENT_NAMING:         Varargs.            (line  110)
*************** Concept Index
*** 59763,59777 ****
  * TARGET_UNWIND_WORD_MODE:               Storage Layout.     (line  536)
  * TARGET_UPDATE_IPA_FN_TARGET_INFO:      Target Attributes.  (line  220)
  * TARGET_UPDATE_STACK_BOUNDARY:          Misc.               (line 1109)
- * TARGET_USES_WEAK_UNWIND_INFO:          Exception Handling. (line  134)
  * TARGET_USE_ANCHORS_FOR_SYMBOL_P:       Anchored Addresses. (line   53)
  * TARGET_USE_BLOCKS_FOR_CONSTANT_P:      Addressing Modes.   (line  264)
  * TARGET_USE_BLOCKS_FOR_DECL_P:          Addressing Modes.   (line  271)
  * TARGET_USE_BY_PIECES_INFRASTRUCTURE_P: Costs.              (line  230)
  * TARGET_USE_LATE_PROLOGUE_EPILOGUE:     Misc.               (line  612)
  * TARGET_USE_PSEUDO_PIC_REG:             Register Arguments. (line   78)
  * TARGET_VALID_DLLIMPORT_ATTRIBUTE_P:    Target Attributes.  (line   87)
  * TARGET_VALID_POINTER_MODE:             Register Arguments. (line  307)
  * TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES: Addressing Modes.
                                                               (line  405)
  * TARGET_VECTORIZE_BUILTIN_GATHER:       Addressing Modes.   (line  501)
--- 59765,59783 ----
  * TARGET_UNWIND_WORD_MODE:               Storage Layout.     (line  536)
  * TARGET_UPDATE_IPA_FN_TARGET_INFO:      Target Attributes.  (line  220)
  * TARGET_UPDATE_STACK_BOUNDARY:          Misc.               (line 1109)
  * TARGET_USE_ANCHORS_FOR_SYMBOL_P:       Anchored Addresses. (line   53)
  * TARGET_USE_BLOCKS_FOR_CONSTANT_P:      Addressing Modes.   (line  264)
  * TARGET_USE_BLOCKS_FOR_DECL_P:          Addressing Modes.   (line  271)
  * TARGET_USE_BY_PIECES_INFRASTRUCTURE_P: Costs.              (line  230)
  * TARGET_USE_LATE_PROLOGUE_EPILOGUE:     Misc.               (line  612)
  * TARGET_USE_PSEUDO_PIC_REG:             Register Arguments. (line   78)
+ * TARGET_USES_WEAK_UNWIND_INFO:          Exception Handling. (line  134)
  * TARGET_VALID_DLLIMPORT_ATTRIBUTE_P:    Target Attributes.  (line   87)
  * TARGET_VALID_POINTER_MODE:             Register Arguments. (line  307)
+ * TARGET_VECTOR_ALIGNMENT:               Storage Layout.     (line  329)
+ * TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P: Register Arguments.
+                                                              (line  361)
+ * TARGET_VECTOR_MODE_SUPPORTED_P:        Register Arguments. (line  356)
  * TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES: Addressing Modes.
                                                               (line  405)
  * TARGET_VECTORIZE_BUILTIN_GATHER:       Addressing Modes.   (line  501)
*************** Concept Index
*** 59798,59810 ****
  * TARGET_VECTORIZE_SPLIT_REDUCTION:      Addressing Modes.   (line  397)
  * TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT: Addressing Modes.
                                                               (line  380)
  * TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE: Addressing Modes.
                                                               (line  326)
- * TARGET_VECTORIZE_VEC_PERM_CONST:       Addressing Modes.   (line  332)
- * TARGET_VECTOR_ALIGNMENT:               Storage Layout.     (line  329)
- * TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P: Register Arguments.
-                                                              (line  361)
- * TARGET_VECTOR_MODE_SUPPORTED_P:        Register Arguments. (line  356)
  * TARGET_VERIFY_TYPE_CONTEXT:            Misc.               (line 1084)
  * TARGET_VTABLE_DATA_ENTRY_DISTANCE:     Type Layout.        (line  291)
  * TARGET_VTABLE_ENTRY_ALIGN:             Type Layout.        (line  285)
--- 59804,59812 ----
  * TARGET_VECTORIZE_SPLIT_REDUCTION:      Addressing Modes.   (line  397)
  * TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT: Addressing Modes.
                                                               (line  380)
+ * TARGET_VECTORIZE_VEC_PERM_CONST:       Addressing Modes.   (line  332)
  * TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE: Addressing Modes.
                                                               (line  326)
  * TARGET_VERIFY_TYPE_CONTEXT:            Misc.               (line 1084)
  * TARGET_VTABLE_DATA_ENTRY_DISTANCE:     Type Layout.        (line  291)
  * TARGET_VTABLE_ENTRY_ALIGN:             Type Layout.        (line  285)
*************** Concept Index
*** 59814,59819 ****
--- 59816,59823 ----
  * TARGET_WARN_PARAMETER_PASSING_ABI:     Aggregate Return.   (line   92)
  * TARGET_WEAK_NOT_IN_ARCHIVE_TOC:        Label Output.       (line  308)
  * TARGET_ZERO_CALL_USED_REGS:            Misc.               (line 1119)
+ * targetm:                               Target Structure.   (line    6)
+ * targets, makefile:                     Makefile.           (line    6)
  * tbranch_OPMODE3 instruction pattern:   Standard Names.     (line 2401)
  * TCmode:                                Machine Modes.      (line  198)
  * TDmode:                                Machine Modes.      (line   97)
*************** Concept Index
*** 59839,59848 ****
  * tm.h macros:                           Target Macros.      (line    6)
  * TQFmode:                               Machine Modes.      (line   65)
  * TQmode:                                Machine Modes.      (line  122)
- * trampolines for nested functions:      Trampolines.        (line    6)
  * TRAMPOLINE_ALIGNMENT:                  Trampolines.        (line  105)
  * TRAMPOLINE_SECTION:                    Trampolines.        (line   96)
  * TRAMPOLINE_SIZE:                       Trampolines.        (line  101)
  * TRANSFER_FROM_TRAMPOLINE:              Trampolines.        (line  180)
  * trap instruction pattern:              Standard Names.     (line 2834)
  * tree:                                  Tree overview.      (line    6)
--- 59843,59852 ----
  * tm.h macros:                           Target Macros.      (line    6)
  * TQFmode:                               Machine Modes.      (line   65)
  * TQmode:                                Machine Modes.      (line  122)
  * TRAMPOLINE_ALIGNMENT:                  Trampolines.        (line  105)
  * TRAMPOLINE_SECTION:                    Trampolines.        (line   96)
  * TRAMPOLINE_SIZE:                       Trampolines.        (line  101)
+ * trampolines for nested functions:      Trampolines.        (line    6)
  * TRANSFER_FROM_TRAMPOLINE:              Trampolines.        (line  180)
  * trap instruction pattern:              Standard Names.     (line 2834)
  * tree:                                  Tree overview.      (line    6)
*************** Concept Index
*** 59903,59924 ****
  * TREE_VEC_LENGTH:                       Containers.         (line    6)
  * true positive:                         Guidelines for Diagnostics.
                                                               (line   39)
- * truncate:                              Conversions.        (line   38)
- * truncMN2 instruction pattern:          Standard Names.     (line 2017)
  * TRUNC_DIV_EXPR:                        Unary and Binary Expressions.
                                                               (line    6)
  * TRUNC_MOD_EXPR:                        Unary and Binary Expressions.
                                                               (line    6)
! * TRUTH_ANDIF_EXPR:                      Unary and Binary Expressions.
!                                                              (line    6)
  * TRUTH_AND_EXPR:                        Unary and Binary Expressions.
                                                               (line    6)
! * TRUTH_NOT_EXPR:                        Unary and Binary Expressions.
                                                               (line    6)
! * TRUTH_ORIF_EXPR:                       Unary and Binary Expressions.
                                                               (line    6)
  * TRUTH_OR_EXPR:                         Unary and Binary Expressions.
                                                               (line    6)
  * TRUTH_XOR_EXPR:                        Unary and Binary Expressions.
                                                               (line    6)
  * TRY_BLOCK:                             Statements for C and C++.
--- 59907,59928 ----
  * TREE_VEC_LENGTH:                       Containers.         (line    6)
  * true positive:                         Guidelines for Diagnostics.
                                                               (line   39)
  * TRUNC_DIV_EXPR:                        Unary and Binary Expressions.
                                                               (line    6)
  * TRUNC_MOD_EXPR:                        Unary and Binary Expressions.
                                                               (line    6)
! * truncate:                              Conversions.        (line   38)
! * truncMN2 instruction pattern:          Standard Names.     (line 2017)
  * TRUTH_AND_EXPR:                        Unary and Binary Expressions.
                                                               (line    6)
! * TRUTH_ANDIF_EXPR:                      Unary and Binary Expressions.
                                                               (line    6)
! * TRUTH_NOT_EXPR:                        Unary and Binary Expressions.
                                                               (line    6)
  * TRUTH_OR_EXPR:                         Unary and Binary Expressions.
                                                               (line    6)
+ * TRUTH_ORIF_EXPR:                       Unary and Binary Expressions.
+                                                              (line    6)
  * TRUTH_XOR_EXPR:                        Unary and Binary Expressions.
                                                               (line    6)
  * TRY_BLOCK:                             Statements for C and C++.
*************** Concept Index
*** 59933,59942 ****
                                                               (line    6)
  * type:                                  Types.              (line    6)
  * type declaration:                      Declarations.       (line    6)
- * TYPENAME_TYPE:                         Types for C++.      (line    6)
- * TYPENAME_TYPE_FULLNAME:                Types.              (line    6)
- * TYPENAME_TYPE_FULLNAME <1>:            Types for C++.      (line    6)
- * TYPEOF_TYPE:                           Types for C++.      (line    6)
  * TYPE_ALIGN:                            Types.              (line    6)
  * TYPE_ALIGN <1>:                        Types.              (line   30)
  * TYPE_ALIGN <2>:                        Types for C++.      (line    6)
--- 59937,59942 ----
*************** Concept Index
*** 59980,59991 ****
  * TYPE_POLYMORPHIC_P:                    Classes.            (line   74)
  * TYPE_PRECISION:                        Types.              (line    6)
  * TYPE_PRECISION <1>:                    Types for C++.      (line    6)
  * TYPE_PTRDATAMEM_P:                     Types for C++.      (line    6)
  * TYPE_PTRDATAMEM_P <1>:                 Types for C++.      (line   69)
  * TYPE_PTRFN_P:                          Types for C++.      (line   76)
- * TYPE_PTROBV_P:                         Types for C++.      (line    6)
  * TYPE_PTROB_P:                          Types for C++.      (line   79)
! * TYPE_PTR_P:                            Types for C++.      (line   72)
  * TYPE_QUAL_CONST:                       Types.              (line    6)
  * TYPE_QUAL_CONST <1>:                   Types for C++.      (line    6)
  * TYPE_QUAL_RESTRICT:                    Types.              (line    6)
--- 59980,59991 ----
  * TYPE_POLYMORPHIC_P:                    Classes.            (line   74)
  * TYPE_PRECISION:                        Types.              (line    6)
  * TYPE_PRECISION <1>:                    Types for C++.      (line    6)
+ * TYPE_PTR_P:                            Types for C++.      (line   72)
  * TYPE_PTRDATAMEM_P:                     Types for C++.      (line    6)
  * TYPE_PTRDATAMEM_P <1>:                 Types for C++.      (line   69)
  * TYPE_PTRFN_P:                          Types for C++.      (line   76)
  * TYPE_PTROB_P:                          Types for C++.      (line   79)
! * TYPE_PTROBV_P:                         Types for C++.      (line    6)
  * TYPE_QUAL_CONST:                       Types.              (line    6)
  * TYPE_QUAL_CONST <1>:                   Types for C++.      (line    6)
  * TYPE_QUAL_RESTRICT:                    Types.              (line    6)
*************** Concept Index
*** 60002,60007 ****
--- 60002,60011 ----
  * TYPE_UNQUALIFIED:                      Types.              (line    6)
  * TYPE_UNQUALIFIED <1>:                  Types for C++.      (line    6)
  * TYPE_VFIELD:                           Classes.            (line    6)
+ * TYPENAME_TYPE:                         Types for C++.      (line    6)
+ * TYPENAME_TYPE_FULLNAME:                Types.              (line    6)
+ * TYPENAME_TYPE_FULLNAME <1>:            Types for C++.      (line    6)
+ * TYPEOF_TYPE:                           Types for C++.      (line    6)
  * uabdM3 instruction pattern:            Standard Names.     (line 1218)
  * uaddcM5 instruction pattern:           Standard Names.     (line  714)
  * uaddvM4 instruction pattern:           Standard Names.     (line  706)
*************** Concept Index
*** 60015,60026 ****
  * UDQmode:                               Machine Modes.      (line  138)
  * UHAmode:                               Machine Modes.      (line  162)
  * UHQmode:                               Machine Modes.      (line  130)
- * UINT16_TYPE:                           Type Layout.        (line  202)
- * UINT32_TYPE:                           Type Layout.        (line  203)
- * UINT64_TYPE:                           Type Layout.        (line  204)
- * UINT8_TYPE:                            Type Layout.        (line  201)
- * UINTMAX_TYPE:                          Type Layout.        (line  185)
- * UINTPTR_TYPE:                          Type Layout.        (line  222)
  * UINT_FAST16_TYPE:                      Type Layout.        (line  218)
  * UINT_FAST32_TYPE:                      Type Layout.        (line  219)
  * UINT_FAST64_TYPE:                      Type Layout.        (line  220)
--- 60019,60024 ----
*************** Concept Index
*** 60029,60034 ****
--- 60027,60038 ----
  * UINT_LEAST32_TYPE:                     Type Layout.        (line  211)
  * UINT_LEAST64_TYPE:                     Type Layout.        (line  212)
  * UINT_LEAST8_TYPE:                      Type Layout.        (line  209)
+ * UINT16_TYPE:                           Type Layout.        (line  202)
+ * UINT32_TYPE:                           Type Layout.        (line  203)
+ * UINT64_TYPE:                           Type Layout.        (line  204)
+ * UINT8_TYPE:                            Type Layout.        (line  201)
+ * UINTMAX_TYPE:                          Type Layout.        (line  185)
+ * UINTPTR_TYPE:                          Type Layout.        (line  222)
  * umaddMN4 instruction pattern:          Standard Names.     (line 1142)
  * umax:                                  Arithmetic.         (line  155)
  * umaxM3 instruction pattern:            Standard Names.     (line  668)
*************** Concept Index
*** 60037,60042 ****
--- 60041,60047 ----
  * umod:                                  Arithmetic.         (line  142)
  * umodM3 instruction pattern:            Standard Names.     (line  668)
  * umsubMN4 instruction pattern:          Standard Names.     (line 1166)
+ * umul_highpart:                         Arithmetic.         (line  111)
  * umulhisi3 instruction pattern:         Standard Names.     (line 1111)
  * umulhrsM3 instruction pattern:         Standard Names.     (line  926)
  * umulhsM3 instruction pattern:          Standard Names.     (line  914)
*************** Concept Index
*** 60044,60050 ****
  * umulqihi3 instruction pattern:         Standard Names.     (line 1111)
  * umulsidi3 instruction pattern:         Standard Names.     (line 1111)
  * umulvM4 instruction pattern:           Standard Names.     (line  711)
- * umul_highpart:                         Arithmetic.         (line  111)
  * unchanging:                            Flags.              (line  307)
  * unchanging, in call_insn:              Flags.              (line  115)
  * unchanging, in jump_insn, call_insn and insn: Flags.       (line   28)
--- 60049,60054 ----
*************** Concept Index
*** 60082,60091 ****
  * unsigned_float:                        Conversions.        (line   62)
  * unsigned_fract_convert:                Conversions.        (line   97)
  * unsigned_sat_fract:                    Conversions.        (line  103)
! * unspec:                                Side Effects.       (line  290)
  * unspec <1>:                            Constant Definitions.
                                                               (line  114)
! * unspec_volatile:                       Side Effects.       (line  290)
  * unspec_volatile <1>:                   Constant Definitions.
                                                               (line  102)
  * untyped_call instruction pattern:      Standard Names.     (line 2460)
--- 60086,60095 ----
  * unsigned_float:                        Conversions.        (line   62)
  * unsigned_fract_convert:                Conversions.        (line   97)
  * unsigned_sat_fract:                    Conversions.        (line  103)
! * unspec:                                Side Effects.       (line  289)
  * unspec <1>:                            Constant Definitions.
                                                               (line  114)
! * unspec_volatile:                       Side Effects.       (line  289)
  * unspec_volatile <1>:                   Constant Definitions.
                                                               (line  102)
  * untyped_call instruction pattern:      Standard Names.     (line 2460)
*************** Concept Index
*** 60098,60103 ****
--- 60102,60113 ----
  * update_stmt_if_modified:               Manipulating GIMPLE statements.
                                                               (line  136)
  * UQQmode:                               Machine Modes.      (line  126)
+ * us_ashift:                             Arithmetic.         (line  179)
+ * us_minus:                              Arithmetic.         (line   38)
+ * us_mult:                               Arithmetic.         (line   92)
+ * us_neg:                                Arithmetic.         (line   81)
+ * us_plus:                               Arithmetic.         (line   14)
+ * us_truncate:                           Conversions.        (line   48)
  * usaddM3 instruction pattern:           Standard Names.     (line  668)
  * usadM instruction pattern:             Standard Names.     (line  896)
  * USAmode:                               Machine Modes.      (line  166)
*************** Concept Index
*** 60105,60117 ****
  * usdivM3 instruction pattern:           Standard Names.     (line  668)
  * usdot_prodMN instruction pattern:      Standard Names.     (line  881)
  * use:                                   Side Effects.       (line  161)
- * used:                                  Flags.              (line  325)
- * used, in symbol_ref:                   Flags.              (line  211)
- * user:                                  GTY Options.        (line  294)
- * user experience guidelines:            User Experience Guidelines.
-                                                              (line    6)
- * user gc:                               User GC.            (line    6)
- * USER_LABEL_PREFIX:                     Instruction Output. (line  152)
  * USE_C_ALLOCA:                          Host Misc.          (line   19)
  * USE_LD_AS_NEEDED:                      Driver.             (line  135)
  * USE_LOAD_POST_DECREMENT:               Costs.              (line  326)
--- 60115,60120 ----
*************** Concept Index
*** 60123,60128 ****
--- 60126,60138 ----
  * USE_STORE_POST_INCREMENT:              Costs.              (line  341)
  * USE_STORE_PRE_DECREMENT:               Costs.              (line  356)
  * USE_STORE_PRE_INCREMENT:               Costs.              (line  351)
+ * used:                                  Flags.              (line  325)
+ * used, in symbol_ref:                   Flags.              (line  211)
+ * user:                                  GTY Options.        (line  293)
+ * user experience guidelines:            User Experience Guidelines.
+                                                              (line    6)
+ * user gc:                               User GC.            (line    6)
+ * USER_LABEL_PREFIX:                     Instruction Output. (line  152)
  * USING_STMT:                            Statements for C and C++.
                                                               (line    6)
  * usmaddMN4 instruction pattern:         Standard Names.     (line 1150)
*************** Concept Index
*** 60137,60169 ****
  * ustruncMN2 instruction pattern:        Standard Names.     (line  678)
  * usubcM5 instruction pattern:           Standard Names.     (line  722)
  * usubvM4 instruction pattern:           Standard Names.     (line  711)
- * us_ashift:                             Arithmetic.         (line  179)
- * us_minus:                              Arithmetic.         (line   38)
- * us_mult:                               Arithmetic.         (line   92)
- * us_neg:                                Arithmetic.         (line   81)
- * us_plus:                               Arithmetic.         (line   14)
- * us_truncate:                           Conversions.        (line   48)
  * UTAmode:                               Machine Modes.      (line  174)
  * UTQmode:                               Machine Modes.      (line  142)
  * V in constraint:                       Simple Constraints. (line   43)
  * values, returned by functions:         Scalar Return.      (line    6)
  * varargs implementation:                Varargs.            (line    6)
  * variable:                              Declarations.       (line    6)
  * Variable Location Debug Information in RTL: Debug Information.
                                                               (line    6)
- * VAR_DECL:                              Declarations.       (line    6)
- * var_location:                          Debug Information.  (line   14)
  * vashlM3 instruction pattern:           Standard Names.     (line 1214)
  * vashrM3 instruction pattern:           Standard Names.     (line 1214)
- * VA_ARG_EXPR:                           Unary and Binary Expressions.
-                                                              (line    6)
  * vcond_mask_len_MN instruction pattern: Standard Names.     (line  506)
  * vcond_mask_MN instruction pattern:     Standard Names.     (line  487)
- * vector:                                Containers.         (line    6)
- * vector operations:                     Vector Operations.  (line    6)
- * VECTOR_CST:                            Constant expressions.
-                                                              (line    6)
- * VECTOR_STORE_FLAG_VALUE:               Misc.               (line  329)
  * vec_addsubM3 instruction pattern:      Standard Names.     (line 1085)
  * vec_cmpeqMN instruction pattern:       Standard Names.     (line  480)
  * vec_cmpMN instruction pattern:         Standard Names.     (line  470)
--- 60147,60168 ----
  * ustruncMN2 instruction pattern:        Standard Names.     (line  678)
  * usubcM5 instruction pattern:           Standard Names.     (line  722)
  * usubvM4 instruction pattern:           Standard Names.     (line  711)
  * UTAmode:                               Machine Modes.      (line  174)
  * UTQmode:                               Machine Modes.      (line  142)
  * V in constraint:                       Simple Constraints. (line   43)
+ * VA_ARG_EXPR:                           Unary and Binary Expressions.
+                                                              (line    6)
  * values, returned by functions:         Scalar Return.      (line    6)
+ * VAR_DECL:                              Declarations.       (line    6)
+ * var_location:                          Debug Information.  (line   14)
  * varargs implementation:                Varargs.            (line    6)
  * variable:                              Declarations.       (line    6)
  * Variable Location Debug Information in RTL: Debug Information.
                                                               (line    6)
  * vashlM3 instruction pattern:           Standard Names.     (line 1214)
  * vashrM3 instruction pattern:           Standard Names.     (line 1214)
  * vcond_mask_len_MN instruction pattern: Standard Names.     (line  506)
  * vcond_mask_MN instruction pattern:     Standard Names.     (line  487)
  * vec_addsubM3 instruction pattern:      Standard Names.     (line 1085)
  * vec_cmpeqMN instruction pattern:       Standard Names.     (line  480)
  * vec_cmpMN instruction pattern:         Standard Names.     (line  470)
*************** Concept Index
*** 60171,60178 ****
  * vec_concat:                            Vector Operations.  (line   29)
  * VEC_COND_EXPR:                         Vectors.            (line    6)
  * vec_duplicate:                         Vector Operations.  (line   34)
- * vec_duplicateM instruction pattern:    Standard Names.     (line  386)
  * VEC_DUPLICATE_EXPR:                    Vectors.            (line    6)
  * vec_extractMN instruction pattern:     Standard Names.     (line  368)
  * vec_fmaddsubM4 instruction pattern:    Standard Names.     (line 1090)
  * vec_fmsubaddM4 instruction pattern:    Standard Names.     (line 1096)
--- 60170,60177 ----
  * vec_concat:                            Vector Operations.  (line   29)
  * VEC_COND_EXPR:                         Vectors.            (line    6)
  * vec_duplicate:                         Vector Operations.  (line   34)
  * VEC_DUPLICATE_EXPR:                    Vectors.            (line    6)
+ * vec_duplicateM instruction pattern:    Standard Names.     (line  386)
  * vec_extractMN instruction pattern:     Standard Names.     (line  368)
  * vec_fmaddsubM4 instruction pattern:    Standard Names.     (line 1090)
  * vec_fmsubaddM4 instruction pattern:    Standard Names.     (line 1096)
*************** Concept Index
*** 60189,60196 ****
  * vec_merge:                             Vector Operations.  (line   11)
  * vec_merge, canonicalization of:        Insn Canonicalizations.
                                                               (line   21)
- * vec_packs_float_M instruction pattern: Standard Names.     (line  994)
- * vec_packu_float_M instruction pattern: Standard Names.     (line  994)
  * VEC_PACK_FIX_TRUNC_EXPR:               Vectors.            (line    6)
  * VEC_PACK_FLOAT_EXPR:                   Vectors.            (line    6)
  * VEC_PACK_SAT_EXPR:                     Vectors.            (line    6)
--- 60188,60193 ----
*************** Concept Index
*** 60202,60219 ****
  * vec_pack_trunc_M instruction pattern:  Standard Names.     (line  964)
  * vec_pack_ufix_trunc_M instruction pattern: Standard Names. (line  987)
  * vec_pack_usat_M instruction pattern:   Standard Names.     (line  980)
  * vec_permM instruction pattern:         Standard Names.     (line  636)
  * vec_permM instruction pattern <1>:     Addressing Modes.   (line  350)
  * VEC_RSHIFT_EXPR:                       Vectors.            (line    6)
  * vec_select:                            Vector Operations.  (line   19)
  * vec_series:                            Vector Operations.  (line   41)
- * vec_seriesM instruction pattern:       Standard Names.     (line  396)
  * VEC_SERIES_EXPR:                       Vectors.            (line    6)
  * vec_setM instruction pattern:          Standard Names.     (line  361)
  * vec_shl_insert_M instruction pattern:  Standard Names.     (line  945)
  * vec_shl_M instruction pattern:         Standard Names.     (line  952)
  * vec_shr_M instruction pattern:         Standard Names.     (line  958)
  * vec_store_lanesMN instruction pattern: Standard Names.     (line  225)
  * vec_unpacks_float_hi_M instruction pattern: Standard Names.
                                                               (line 1024)
  * vec_unpacks_float_lo_M instruction pattern: Standard Names.
--- 60199,60232 ----
  * vec_pack_trunc_M instruction pattern:  Standard Names.     (line  964)
  * vec_pack_ufix_trunc_M instruction pattern: Standard Names. (line  987)
  * vec_pack_usat_M instruction pattern:   Standard Names.     (line  980)
+ * vec_packs_float_M instruction pattern: Standard Names.     (line  994)
+ * vec_packu_float_M instruction pattern: Standard Names.     (line  994)
  * vec_permM instruction pattern:         Standard Names.     (line  636)
  * vec_permM instruction pattern <1>:     Addressing Modes.   (line  350)
  * VEC_RSHIFT_EXPR:                       Vectors.            (line    6)
  * vec_select:                            Vector Operations.  (line   19)
  * vec_series:                            Vector Operations.  (line   41)
  * VEC_SERIES_EXPR:                       Vectors.            (line    6)
+ * vec_seriesM instruction pattern:       Standard Names.     (line  396)
  * vec_setM instruction pattern:          Standard Names.     (line  361)
  * vec_shl_insert_M instruction pattern:  Standard Names.     (line  945)
  * vec_shl_M instruction pattern:         Standard Names.     (line  952)
  * vec_shr_M instruction pattern:         Standard Names.     (line  958)
  * vec_store_lanesMN instruction pattern: Standard Names.     (line  225)
+ * VEC_UNPACK_FIX_TRUNC_HI_EXPR:          Vectors.            (line    6)
+ * VEC_UNPACK_FIX_TRUNC_LO_EXPR:          Vectors.            (line    6)
+ * VEC_UNPACK_FLOAT_HI_EXPR:              Vectors.            (line    6)
+ * VEC_UNPACK_FLOAT_LO_EXPR:              Vectors.            (line    6)
+ * VEC_UNPACK_HI_EXPR:                    Vectors.            (line    6)
+ * VEC_UNPACK_LO_EXPR:                    Vectors.            (line    6)
+ * vec_unpack_sfix_trunc_hi_M instruction pattern: Standard Names.
+                                                              (line 1033)
+ * vec_unpack_sfix_trunc_lo_M instruction pattern: Standard Names.
+                                                              (line 1033)
+ * vec_unpack_ufix_trunc_hi_M instruction pattern: Standard Names.
+                                                              (line 1033)
+ * vec_unpack_ufix_trunc_lo_M instruction pattern: Standard Names.
+                                                              (line 1033)
  * vec_unpacks_float_hi_M instruction pattern: Standard Names.
                                                               (line 1024)
  * vec_unpacks_float_lo_M instruction pattern: Standard Names.
*************** Concept Index
*** 60230,60249 ****
                                                               (line 1024)
  * vec_unpacku_hi_M instruction pattern:  Standard Names.     (line 1008)
  * vec_unpacku_lo_M instruction pattern:  Standard Names.     (line 1008)
- * VEC_UNPACK_FIX_TRUNC_HI_EXPR:          Vectors.            (line    6)
- * VEC_UNPACK_FIX_TRUNC_LO_EXPR:          Vectors.            (line    6)
- * VEC_UNPACK_FLOAT_HI_EXPR:              Vectors.            (line    6)
- * VEC_UNPACK_FLOAT_LO_EXPR:              Vectors.            (line    6)
- * VEC_UNPACK_HI_EXPR:                    Vectors.            (line    6)
- * VEC_UNPACK_LO_EXPR:                    Vectors.            (line    6)
- * vec_unpack_sfix_trunc_hi_M instruction pattern: Standard Names.
-                                                              (line 1033)
- * vec_unpack_sfix_trunc_lo_M instruction pattern: Standard Names.
-                                                              (line 1033)
- * vec_unpack_ufix_trunc_hi_M instruction pattern: Standard Names.
-                                                              (line 1033)
- * vec_unpack_ufix_trunc_lo_M instruction pattern: Standard Names.
-                                                              (line 1033)
  * VEC_WIDEN_MULT_HI_EXPR:                Vectors.            (line    6)
  * VEC_WIDEN_MULT_LO_EXPR:                Vectors.            (line    6)
  * vec_widen_sabd_even_M instruction pattern: Standard Names. (line 1075)
--- 60243,60248 ----
*************** Concept Index
*** 60280,60285 ****
--- 60279,60289 ----
                                                               (line 1054)
  * vec_widen_usubl_hi_M instruction pattern: Standard Names.  (line 1068)
  * vec_widen_usubl_lo_M instruction pattern: Standard Names.  (line 1068)
+ * vector:                                Containers.         (line    6)
+ * vector operations:                     Vector Operations.  (line    6)
+ * VECTOR_CST:                            Constant expressions.
+                                                              (line    6)
+ * VECTOR_STORE_FLAG_VALUE:               Misc.               (line  329)
  * verify_flow_info:                      Maintaining the CFG.
                                                               (line  116)
  * virtual operands:                      SSA Operands.       (line    6)
*************** Concept Index
*** 60294,60301 ****
  * vlshrM3 instruction pattern:           Standard Names.     (line 1214)
  * VMS:                                   Filesystem.         (line   37)
  * VMS_DEBUGGING_INFO:                    VMS Debug.          (line    8)
- * VOIDmode:                              Machine Modes.      (line  191)
  * VOID_TYPE:                             Types.              (line    6)
  * volatil:                               Flags.              (line  339)
  * volatil, in insn, call_insn, jump_insn, code_label, jump_table_data, barrier, and note: Flags.
                                                               (line   33)
--- 60298,60305 ----
  * vlshrM3 instruction pattern:           Standard Names.     (line 1214)
  * VMS:                                   Filesystem.         (line   37)
  * VMS_DEBUGGING_INFO:                    VMS Debug.          (line    8)
  * VOID_TYPE:                             Types.              (line    6)
+ * VOIDmode:                              Machine Modes.      (line  191)
  * volatil:                               Flags.              (line  339)
  * volatil, in insn, call_insn, jump_insn, code_label, jump_table_data, barrier, and note: Flags.
                                                               (line   33)
*************** Concept Index
*** 60335,60344 ****
  * WIDEST_HARDWARE_FP_SIZE:               Type Layout.        (line   96)
  * window_save instruction pattern:       Standard Names.     (line 2805)
  * WINT_TYPE:                             Type Layout.        (line  166)
- * WORDS_BIG_ENDIAN:                      Storage Layout.     (line   28)
- * WORDS_BIG_ENDIAN, effect on subreg:    Regs and Memory.    (line  225)
  * word_mode:                             Machine Modes.      (line  468)
  * WORD_REGISTER_OPERATIONS:              Misc.               (line   53)
  * wpa:                                   LTO.                (line    6)
  * X in constraint:                       Simple Constraints. (line  122)
  * x-HOST:                                Host Fragment.      (line    6)
--- 60339,60348 ----
  * WIDEST_HARDWARE_FP_SIZE:               Type Layout.        (line   96)
  * window_save instruction pattern:       Standard Names.     (line 2805)
  * WINT_TYPE:                             Type Layout.        (line  166)
  * word_mode:                             Machine Modes.      (line  468)
  * WORD_REGISTER_OPERATIONS:              Misc.               (line   53)
+ * WORDS_BIG_ENDIAN:                      Storage Layout.     (line   28)
+ * WORDS_BIG_ENDIAN, effect on subreg:    Regs and Memory.    (line  225)
  * wpa:                                   LTO.                (line    6)
  * X in constraint:                       Simple Constraints. (line  122)
  * x-HOST:                                Host Fragment.      (line    6)
*************** Concept Index
*** 60368,60830 ****
  
  
  Tag Table:
! Node: Top1789
! Node: Contributing5040
! Node: Portability5775
! Node: Libgcc7560
! Node: Integer library routines9389
! Node: Soft float library routines19186
! Node: Decimal float library routines32482
! Node: Fixed-point fractional library routines49387
! Node: Exception handling routines149783
! Node: Miscellaneous routines150890
! Node: Languages153010
! Node: Source Tree154557
! Node: Configure Terms155140
! Node: Top Level158096
! Node: gcc Directory162211
! Node: Subdirectories163163
! Node: Configuration165351
! Node: Config Fragments166071
! Node: System Config167296
! Node: Configuration Files168232
! Node: Build170848
! Node: Makefile171260
! Ref: Makefile-Footnote-1178454
! Ref: Makefile-Footnote-2178601
! Node: Library Files178675
! Node: Headers179237
! Node: Documentation181320
! Node: Texinfo Manuals182179
! Node: Man Page Generation184508
! Node: Miscellaneous Docs186220
! Node: Front End187607
! Node: Front End Directory191539
! Node: Front End Config192856
! Node: Front End Makefile195693
! Node: Back End199461
! Node: Testsuites204533
! Node: Test Idioms205522
! Node: Test Directives208920
! Node: Directives209499
! Node: Selectors223322
! Node: Effective-Target Keywords226650
! Ref: arm_fp_ok242265
! Ref: arm_fp_dp_ok242432
! Ref: arm_neon_ok243465
! Ref: arm_neon_ok_no_float_abi243634
! Ref: arm_neonv2_ok243801
! Ref: arm_fp16_ok243968
! Ref: arm_neon_fp16_ok244310
! Ref: arm_vfp3_ok245242
! Ref: arm_arch_v8a_hard_ok245385
! Ref: arm_v8_1a_neon_ok246135
! Ref: arm_v8_2a_fp16_scalar_ok246563
! Ref: arm_v8_2a_fp16_neon_ok247014
! Ref: arm_v8_2a_dotprod_neon_ok247489
! Ref: arm_fp16fml_neon_ok248134
! Ref: arm_coproc1_ok251112
! Ref: arm_coproc2_ok251238
! Ref: arm_coproc3_ok251466
! Ref: arm_simd32_ok251833
! Ref: arm_sat_ok252010
! Ref: arm_dsp_ok252191
! Ref: arm_softfp_ok252368
! Ref: arm_hard_ok252441
! Ref: arm_mve252508
! Ref: arm_v8_1_lob_ok252581
! Ref: default_packed270484
! Ref: stack_size_et274315
! Node: Add Options277249
! Ref: arm_fp16_ieee278486
! Ref: arm_fp16_alternative278741
! Ref: stack_size_ao281952
! Node: Remove Options282610
! Node: Require Support283586
! Node: Final Actions286663
! Node: Ada Tests299313
! Node: C Tests300476
! Node: LTO Testing304848
! Node: gcov Testing306491
! Node: profopt Testing309461
! Node: compat Testing311176
! Node: Torture Tests315984
! Node: GIMPLE Tests317618
! Node: RTL Tests318860
! Node: Options320166
! Node: Option file format320607
! Node: Option properties329095
! Node: Passes347568
! Node: Parsing pass348441
! Node: Gimplification pass351969
! Node: Pass manager353803
! Node: IPA passes355645
! Node: Small IPA passes356538
! Node: Regular IPA passes359988
! Node: Late IPA passes364790
! Node: Tree SSA passes365751
! Node: RTL passes385271
! Ref: mode switching optimization392324
! Node: Optimization info399315
! Node: Dump setup400134
! Node: Optimization groups401264
! Node: Dump files and streams402243
! Node: Dump output verbosity403442
! Node: Dump types404498
! Node: Dump examples406841
! Node: poly_int408322
! Node: Overview of poly_int409800
! Node: Consequences of using poly_int412402
! Node: Comparisons involving poly_int414035
! Node: Comparison functions for poly_int415671
! Node: Properties of the poly_int comparisons416876
! Node: Comparing potentially-unordered poly_ints419316
! Node: Comparing ordered poly_ints420225
! Node: Checking for a poly_int marker value422247
! Node: Range checks on poly_ints423094
! Node: Sorting poly_ints425746
! Node: Arithmetic on poly_ints426517
! Node: Using poly_int with C++ arithmetic operators427316
! Node: wi arithmetic on poly_ints428845
! Node: Division of poly_ints429695
! Node: Other poly_int arithmetic431200
! Node: Alignment of poly_ints432604
! Node: Computing bounds on poly_ints435879
! Node: Converting poly_ints437266
! Node: Miscellaneous poly_int routines440811
! Node: Guidelines for using poly_int441449
! Node: GENERIC446379
! Node: Deficiencies448201
! Node: Tree overview448442
! Node: Macros and Functions452566
! Node: Identifiers453391
! Node: Containers455000
! Node: Types456157
! Node: Declarations468978
! Node: Working with declarations469473
! Node: Internal structure475077
! Node: Current structure hierarchy475461
! Node: Adding new DECL node types477554
! Node: Attributes481840
! Node: Expression trees483084
! Node: Constant expressions484838
! Node: Storage References490930
! Node: Unary and Binary Expressions494771
! Node: Vectors516246
! Node: Statements527772
! Node: Basic Statements528304
! Node: Blocks533441
! Node: Statement Sequences535142
! Node: Empty Statements535475
! Node: Jumps536049
! Node: Cleanups536702
! Node: OpenMP538743
! Node: OpenACC550293
! Node: Functions551410
! Node: Function Basics551881
! Node: Function Properties555565
! Node: Language-dependent trees558346
! Node: C and C++ Trees559233
! Node: Types for C++562118
! Node: Namespaces567088
! Node: Classes570194
! Node: Functions for C++575102
! Node: Statements for C and C++581359
! Node: C++ Expressions589866
! Node: GIMPLE591377
! Node: Tuple representation595042
! Node: Class hierarchy of GIMPLE statements602002
! Node: GIMPLE instruction set606990
! Node: GIMPLE Exception Handling608655
! Node: Temporaries610567
! Ref: Temporaries-Footnote-1611885
! Node: Operands611950
! Node: Compound Expressions612711
! Node: Compound Lvalues612945
! Node: Conditional Expressions613707
! Node: Logical Operators614366
! Node: Manipulating GIMPLE statements621677
! Node: Tuple specific accessors627259
! Node: GIMPLE_ASM628070
! Node: GIMPLE_ASSIGN630742
! Node: GIMPLE_BIND635446
! Node: GIMPLE_CALL637260
! Node: GIMPLE_CATCH641403
! Node: GIMPLE_COND642553
! Node: GIMPLE_DEBUG645348
! Node: GIMPLE_EH_FILTER649946
! Node: GIMPLE_LABEL651509
! Node: GIMPLE_GOTO652122
! Node: GIMPLE_NOP652645
! Node: GIMPLE_OMP_ATOMIC_LOAD653007
! Node: GIMPLE_OMP_ATOMIC_STORE654003
! Node: GIMPLE_OMP_CONTINUE654702
! Node: GIMPLE_OMP_CRITICAL656181
! Node: GIMPLE_OMP_FOR657175
! Node: GIMPLE_OMP_MASTER660591
! Node: GIMPLE_OMP_ORDERED660969
! Node: GIMPLE_OMP_PARALLEL661372
! Node: GIMPLE_OMP_RETURN664159
! Node: GIMPLE_OMP_SECTION664804
! Node: GIMPLE_OMP_SECTIONS665468
! Node: GIMPLE_OMP_SINGLE667078
! Node: GIMPLE_OMP_STRUCTURED_BLOCK668041
! Node: GIMPLE_PHI668833
! Node: GIMPLE_RESX670122
! Node: GIMPLE_RETURN670841
! Node: GIMPLE_SWITCH671415
! Node: GIMPLE_TRY673290
! Node: GIMPLE_WITH_CLEANUP_EXPR675062
! Node: GIMPLE sequences675941
! Node: Sequence iterators679147
! Node: Adding a new GIMPLE statement code687604
! Node: Statement and operand traversals688953
! Node: Tree SSA691545
! Node: Annotations693333
! Node: SSA Operands693738
! Node: SSA707542
! Node: Alias analysis717249
! Node: Memory model721024
! Node: RTL722383
! Node: RTL Objects724625
! Node: RTL Classes728698
! Node: Accessors733996
! Node: Special Accessors736169
! Node: Flags741956
! Node: Machine Modes757219
! Node: Constants775033
! Node: Regs and Memory786832
! Node: Arithmetic804103
! Node: Comparisons814806
! Node: Bit-Fields818508
! Node: Vector Operations820059
! Node: Conversions822163
! Node: RTL Declarations826661
! Node: Side Effects827505
! Node: Incdec844039
! Node: Assembler847375
! Node: Debug Information848920
! Node: Insns850847
! Node: Calls876741
! Node: RTL SSA879334
! Node: Using RTL SSA880725
! Node: RTL SSA Instructions882669
! Ref: RTL SSA Instructions-Footnote-1884055
! Node: RTL SSA Basic Blocks884189
! Ref: real RTL SSA insns884657
! Ref: RTL SSA Basic Blocks-Footnote-1886879
! Node: RTL SSA Resources887013
! Node: RTL SSA Accesses888130
! Ref: RTL SSA Accesses-Footnote-1889831
! Node: RTL SSA Phi Nodes889974
! Node: RTL SSA Access Lists891978
! Node: Changing RTL Instructions896259
! Node: Changing One RTL SSA Instruction896868
! Node: Changing Multiple RTL SSA Instructions901822
! Node: Sharing906086
! Node: Reading RTL909242
! Node: Control Flow910234
! Node: Basic Blocks912002
! Node: Edges917453
! Node: Profile information926072
! Node: Maintaining the CFG930756
! Node: Liveness information936524
! Node: Loop Analysis and Representation938651
! Node: Loop representation939687
! Node: Loop querying947131
! Node: Loop manipulation949940
! Node: LCSSA952286
! Node: Scalar evolutions954355
! Node: loop-iv957599
! Node: Number of iterations959521
! Node: Dependency analysis963602
! Node: Machine Desc969954
! Node: Overview972589
! Node: Patterns974629
! Node: Example979596
! Node: RTL Template981057
! Node: Output Template991705
! Node: Output Statement995886
! Node: Compact Syntax1000229
! Node: Predicates1005070
! Node: Machine-Independent Predicates1007986
! Node: Defining Predicates1012931
! Node: Constraints1018894
! Node: Simple Constraints1020363
! Node: Multi-Alternative1033730
! Node: Class Preferences1036930
! Node: Modifiers1037822
! Node: Machine Constraints1043516
! Node: Disable Insn Alternatives1102134
! Node: Define Constraints1105626
! Node: C Constraint Interface1115921
! Node: Standard Names1119048
! Ref: shift patterns1172627
! Ref: prologue instruction pattern1239641
! Ref: window_save instruction pattern1240134
! Ref: epilogue instruction pattern1240411
! Node: Pattern Ordering1265037
! Node: Dependent Patterns1266273
! Node: Jump Patterns1267893
! Node: Looping Patterns1269570
! Node: Insn Canonicalizations1275209
! Node: Expander Definitions1280721
! Node: Insn Splitting1288934
! Node: Including Patterns1304025
! Node: Peephole Definitions1305802
! Node: define_peephole1307055
! Node: define_peephole21313385
! Node: Insn Attributes1318001
! Node: Defining Attributes1319098
! Ref: define_enum_attr1322590
! Node: Expressions1323626
! Node: Tagging Insns1330376
! Node: Attr Example1334729
! Node: Insn Lengths1337102
! Node: Constant Attributes1340514
! Node: Mnemonic Attribute1341690
! Node: Delay Slots1343209
! Node: Processor pipeline description1346432
! Ref: Processor pipeline description-Footnote-11365244
! Node: Conditional Execution1365568
! Node: Define Subst1369051
! Node: Define Subst Example1371086
! Node: Define Subst Pattern Matching1374081
! Node: Define Subst Output Template1375307
! Node: Constant Definitions1377630
! Ref: define_enum1381489
! Node: Iterators1381977
! Node: Mode Iterators1382622
! Node: Defining Mode Iterators1383600
! Node: Substitutions1385568
! Node: Examples1387810
! Node: Code Iterators1389270
! Node: Int Iterators1392642
! Node: Subst Iterators1395215
! Node: Parameterized Names1396935
! Node: Target Macros1401182
! Node: Target Structure1404301
! Node: Driver1407199
! Node: Run-time Target1426172
! Node: Per-Function Data1436829
! Node: Storage Layout1439593
! Node: Type Layout1469233
! Node: Registers1482175
! Node: Register Basics1483149
! Node: Allocation Order1490711
! Node: Values in Registers1493195
! Node: Leaf Functions1500671
! Node: Stack Registers1503530
! Node: Register Classes1504803
! Node: Stack and Calling1540881
! Node: Frame Layout1541487
! Node: Exception Handling1556264
! Node: Stack Checking1562999
! Node: Frame Registers1568625
! Node: Elimination1577171
! Node: Stack Arguments1581393
! Node: Register Arguments1588846
! Node: Scalar Return1614754
! Node: Aggregate Return1621210
! Node: Caller Saves1625940
! Node: Function Entry1626682
! Node: Profiling1638234
! Node: Tail Calls1640344
! Node: Shrink-wrapping separate components1642254
! Node: Stack Smashing Protection1645295
! Node: Miscellaneous Register Hooks1647784
! Node: Varargs1648649
! Node: Trampolines1658601
! Node: Library Calls1668294
! Node: Addressing Modes1674605
! Node: Anchored Addresses1707030
! Node: Condition Code1709673
! Node: MODE_CC Condition Codes1711518
! Node: Costs1718281
! Node: Scheduling1744330
! Node: Sections1768252
! Node: PIC1784622
! Node: Assembler Format1786681
! Node: File Framework1787819
! Ref: TARGET_HAVE_SWITCHABLE_BSS_SECTIONS1795418
! Node: Data Output1797093
! Node: Uninitialized Data1805381
! Node: Label Output1810396
! Node: Initialization1835009
! Node: Macros for Initialization1840970
! Node: Instruction Output1848121
! Node: Dispatch Tables1858751
! Node: Exception Region Output1864502
! Node: Alignment Output1872235
! Node: Debugging Info1875922
! Node: All Debuggers1876472
! Node: DWARF1879405
! Node: VMS Debug1885180
! Node: CTF Debug1885777
! Node: BTF Debug1886138
! Node: Floating Point1886481
! Node: Mode Switching1889236
! Node: Target Attributes1897252
! Node: Emulated TLS1910563
! Node: MIPS Coprocessors1913953
! Node: PCH Target1915112
! Node: C++ ABI1916954
! Node: D Language and ABI1922180
! Node: Rust Language and ABI1925405
! Node: Named Address Spaces1926144
! Node: Misc1932186
! Ref: TARGET_SHIFT_TRUNCATION_MASK1940057
! Node: Host Config2003217
! Node: Host Common2004286
! Node: Filesystem2006660
! Node: Host Misc2010775
! Node: Fragments2013224
! Node: Target Fragment2014419
! Node: Host Fragment2025231
! Node: Collect22025471
! Node: Header Dirs2028107
! Node: Type Information2029530
! Node: GTY Options2033061
! Node: Inheritance and GTY2046481
! Ref: Inheritance and GTY-Footnote-12048046
! Node: User GC2048316
! Node: GGC Roots2052067
! Node: Files2052780
! Node: Invoking the garbage collector2055411
! Node: Troubleshooting2057053
! Node: Plugins2058128
! Node: Plugins loading2059257
! Node: Plugin API2060353
! Node: Plugins pass2068220
! Node: Plugins GC2070191
! Node: Plugins description2071908
! Node: Plugins attr2072444
! Node: Plugins recording2074724
! Node: Plugins gate2075574
! Node: Plugins tracking2076165
! Node: Plugins building2076753
! Node: LTO2080256
! Node: LTO Overview2081128
! Node: LTO object file layout2086884
! Node: IPA2091383
! Node: WHOPR2100435
! Node: Internal flags2104995
! Node: Match and Simplify2106406
! Node: GIMPLE API2107376
! Node: The Language2110178
! Node: Static Analyzer2123390
! Node: Analyzer Internals2123655
! Node: Debugging the Analyzer2143721
! Node: User Experience Guidelines2151379
! Node: Guidelines for Diagnostics2152315
! Ref: input_location_example2160490
! Node: Guidelines for Options2173032
! Node: Funding2173209
! Node: GNU Project2175716
! Node: Copying2176367
! Node: GNU Free Documentation License2213884
! Node: Contributors2239010
! Node: Option Index2280440
! Node: Concept Index2281317
  
  End Tag Table
--- 60372,60839 ----
  
  
  Tag Table:
! Node: Top1787
! Node: Contributing5070
! Node: Portability5805
! Node: Libgcc7606
! Node: Integer library routines9523
! Node: Soft float library routines19366
! Node: Decimal float library routines32650
! Node: Fixed-point fractional library routines49543
! Node: Exception handling routines150103
! Node: Miscellaneous routines151210
! Node: Languages153346
! Node: Source Tree154903
! Node: Configure Terms155490
! Node: Top Level158530
! Node: gcc Directory162853
! Node: Subdirectories163829
! Node: Configuration166121
! Node: Config Fragments166901
! Node: System Config168190
! Node: Configuration Files169150
! Node: Build171958
! Node: Makefile172374
! Ref: Makefile-Footnote-1179808
! Ref: Makefile-Footnote-2179959
! Node: Library Files180037
! Node: Headers180619
! Node: Documentation182814
! Node: Texinfo Manuals183689
! Node: Man Page Generation186142
! Node: Miscellaneous Docs187922
! Node: Front End189377
! Node: Front End Directory193505
! Node: Front End Config194874
! Node: Front End Makefile197827
! Node: Back End201795
! Node: Testsuites207117
! Node: Test Idioms208106
! Node: Test Directives211568
! Node: Directives212163
! Node: Selectors226448
! Node: Effective-Target Keywords229906
! Ref: arm_fp_ok246715
! Ref: arm_fp_dp_ok246894
! Ref: arm_neon_ok247983
! Ref: arm_neon_ok_no_float_abi248160
! Ref: arm_neonv2_ok248335
! Ref: arm_fp16_ok248510
! Ref: arm_neon_fp16_ok248860
! Ref: arm_vfp3_ok249848
! Ref: arm_arch_v8a_hard_ok249999
! Ref: arm_v8_1a_neon_ok250789
! Ref: arm_v8_2a_fp16_scalar_ok251229
! Ref: arm_v8_2a_fp16_neon_ok251688
! Ref: arm_v8_2a_dotprod_neon_ok252171
! Ref: arm_fp16fml_neon_ok252828
! Ref: arm_coproc1_ok255926
! Ref: arm_coproc2_ok256076
! Ref: arm_coproc3_ok256336
! Ref: arm_simd32_ok256727
! Ref: arm_sat_ok256912
! Ref: arm_dsp_ok257101
! Ref: arm_softfp_ok257286
! Ref: arm_hard_ok257367
! Ref: arm_mve257442
! Ref: arm_v8_1_lob_ok257519
! Ref: default_packed276853
! Ref: stack_size_et280992
! Node: Add Options284158
! Ref: arm_fp16_ieee285431
! Ref: arm_fp16_alternative285690
! Ref: stack_size_ao289017
! Node: Remove Options289699
! Node: Require Support290707
! Node: Final Actions293952
! Node: Ada Tests306918
! Node: C Tests308117
! Node: LTO Testing312629
! Node: gcov Testing314344
! Node: profopt Testing317382
! Node: compat Testing319145
! Node: Torture Tests324077
! Node: GIMPLE Tests325785
! Node: RTL Tests327055
! Node: Options328377
! Node: Option file format328822
! Node: Option properties337566
! Node: Passes357043
! Node: Parsing pass357916
! Node: Gimplification pass361464
! Node: Pass manager363334
! Node: IPA passes365196
! Node: Small IPA passes366089
! Node: Regular IPA passes369693
! Node: Late IPA passes374659
! Node: Tree SSA passes375642
! Node: RTL passes395876
! Ref: mode switching optimization403111
! Node: Optimization info410302
! Node: Dump setup411121
! Node: Optimization groups412283
! Node: Dump files and streams413318
! Node: Dump output verbosity414561
! Node: Dump types415633
! Node: Dump examples418066
! Node: poly_int419595
! Node: Overview of poly_int421105
! Node: Consequences of using poly_int423827
! Node: Comparisons involving poly_int425492
! Node: Comparison functions for poly_int427148
! Node: Properties of the poly_int comparisons428389
! Node: Comparing potentially-unordered poly_ints430951
! Node: Comparing ordered poly_ints431872
! Node: Checking for a poly_int marker value433960
! Node: Range checks on poly_ints434827
! Node: Sorting poly_ints437531
! Node: Arithmetic on poly_ints438326
! Node: Using poly_int with C++ arithmetic operators439137
! Node: wi arithmetic on poly_ints440710
! Node: Division of poly_ints441576
! Node: Other poly_int arithmetic443149
! Node: Alignment of poly_ints444593
! Node: Computing bounds on poly_ints447952
! Node: Converting poly_ints449375
! Node: Miscellaneous poly_int routines453124
! Node: Guidelines for using poly_int453786
! Node: GENERIC458842
! Node: Deficiencies460684
! Node: Tree overview460925
! Node: Macros and Functions465125
! Node: Identifiers466010
! Node: Containers467711
! Node: Types468936
! Node: Declarations482501
! Node: Working with declarations483000
! Node: Internal structure488916
! Node: Current structure hierarchy489304
! Node: Adding new DECL node types491533
! Node: Attributes495991
! Node: Expression trees497275
! Node: Constant expressions499045
! Node: Storage References505397
! Node: Unary and Binary Expressions509338
! Node: Vectors531633
! Node: Statements543547
! Node: Basic Statements544087
! Node: Blocks549512
! Node: Statement Sequences551257
! Node: Empty Statements551598
! Node: Jumps552180
! Node: Cleanups552873
! Node: OpenMP554950
! Node: OpenACC567096
! Node: Functions568309
! Node: Function Basics568784
! Node: Function Properties572576
! Node: Language-dependent trees575449
! Node: C and C++ Trees576344
! Node: Types for C++579237
! Node: Namespaces584519
! Node: Classes587765
! Node: Functions for C++592973
! Node: Statements for C and C++599554
! Node: C++ Expressions608481
! Node: GIMPLE610096
! Node: Tuple representation613809
! Node: Class hierarchy of GIMPLE statements621129
! Node: GIMPLE instruction set626125
! Node: GIMPLE Exception Handling627910
! Node: Temporaries629858
! Ref: Temporaries-Footnote-1631196
! Node: Operands631261
! Node: Compound Expressions632034
! Node: Compound Lvalues632268
! Node: Conditional Expressions633050
! Node: Logical Operators633729
! Node: Manipulating GIMPLE statements641242
! Node: Tuple specific accessors647100
! Node: GIMPLE_ASM647911
! Node: GIMPLE_ASSIGN650751
! Node: GIMPLE_BIND655671
! Node: GIMPLE_CALL657593
! Node: GIMPLE_CATCH661942
! Node: GIMPLE_COND663156
! Node: GIMPLE_DEBUG666111
! Node: GIMPLE_EH_FILTER670889
! Node: GIMPLE_LABEL672512
! Node: GIMPLE_GOTO673165
! Node: GIMPLE_NOP673712
! Node: GIMPLE_OMP_ATOMIC_LOAD674094
! Node: GIMPLE_OMP_ATOMIC_STORE675122
! Node: GIMPLE_OMP_CONTINUE675833
! Node: GIMPLE_OMP_CRITICAL677360
! Node: GIMPLE_OMP_FOR678398
! Node: GIMPLE_OMP_MASTER682046
! Node: GIMPLE_OMP_ORDERED682436
! Node: GIMPLE_OMP_PARALLEL682851
! Node: GIMPLE_OMP_RETURN685794
! Node: GIMPLE_OMP_SECTION686471
! Node: GIMPLE_OMP_SECTIONS687167
! Node: GIMPLE_OMP_SINGLE688857
! Node: GIMPLE_OMP_STRUCTURED_BLOCK689868
! Node: GIMPLE_PHI690688
! Node: GIMPLE_RESX692073
! Node: GIMPLE_RETURN692824
! Node: GIMPLE_SWITCH693426
! Node: GIMPLE_TRY695363
! Node: GIMPLE_WITH_CLEANUP_EXPR697227
! Node: GIMPLE sequences698146
! Node: Sequence iterators701492
! Node: Adding a new GIMPLE statement code710287
! Node: Statement and operand traversals711696
! Node: Tree SSA714448
! Node: Annotations716236
! Node: SSA Operands716649
! Node: SSA730821
! Node: Alias analysis740780
! Node: Memory model744649
! Node: RTL746008
! Node: RTL Objects748254
! Node: RTL Classes752395
! Node: Accessors758145
! Node: Special Accessors760394
! Node: Flags766437
! Node: Machine Modes782628
! Node: Constants801426
! Node: Regs and Memory813723
! Node: Arithmetic831588
! Node: Comparisons842767
! Node: Bit-Fields846605
! Node: Vector Operations848196
! Node: Conversions850336
! Node: RTL Declarations854906
! Node: Side Effects855770
! Node: Incdec872815
! Node: Assembler876239
! Node: Debug Information877836
! Node: Insns879827
! Node: Calls906877
! Node: RTL SSA909550
! Node: Using RTL SSA910945
! Node: RTL SSA Instructions912913
! Ref: RTL SSA Instructions-Footnote-1914311
! Node: RTL SSA Basic Blocks914445
! Ref: real RTL SSA insns914925
! Ref: RTL SSA Basic Blocks-Footnote-1917199
! Node: RTL SSA Resources917341
! Node: RTL SSA Accesses918470
! Ref: RTL SSA Accesses-Footnote-1920215
! Node: RTL SSA Phi Nodes920362
! Node: RTL SSA Access Lists922374
! Node: Changing RTL Instructions926721
! Node: Changing One RTL SSA Instruction927330
! Node: Changing Multiple RTL SSA Instructions932374
! Node: Sharing936678
! Node: Reading RTL939936
! Node: Control Flow940944
! Node: Basic Blocks942740
! Node: Edges948411
! Node: Profile information957258
! Node: Maintaining the CFG962026
! Node: Liveness information967970
! Node: Loop Analysis and Representation970169
! Node: Loop representation971205
! Node: Loop querying978815
! Node: Loop manipulation981782
! Node: LCSSA984204
! Node: Scalar evolutions986287
! Node: loop-iv989591
! Node: Number of iterations991599
! Node: Dependency analysis995796
! Node: Machine Desc1002360
! Node: Overview1005019
! Node: Patterns1007119
! Node: Example1012182
! Node: RTL Template1013659
! Node: Output Template1024543
! Node: Output Statement1028848
! Node: Compact Syntax1033275
! Node: Predicates1038270
! Node: Machine-Independent Predicates1041266
! Node: Defining Predicates1046367
! Node: Constraints1052548
! Node: Simple Constraints1054033
! Node: Multi-Alternative1067734
! Node: Class Preferences1071022
! Node: Modifiers1071930
! Node: Machine Constraints1077784
! Node: Disable Insn Alternatives1140918
! Node: Define Constraints1144482
! Node: C Constraint Interface1155081
! Node: Standard Names1158292
! Ref: shift patterns1213335
! Ref: prologue instruction pattern1282349
! Ref: window_save instruction pattern1282854
! Ref: epilogue instruction pattern1283135
! Node: Pattern Ordering1308361
! Node: Dependent Patterns1309597
! Node: Jump Patterns1311225
! Node: Looping Patterns1312910
! Node: Insn Canonicalizations1318657
! Node: Expander Definitions1324431
! Node: Insn Splitting1332858
! Node: Including Patterns1348235
! Node: Peephole Definitions1350040
! Node: define_peephole1351313
! Node: define_peephole21357743
! Node: Insn Attributes1362475
! Node: Defining Attributes1363580
! Ref: define_enum_attr1367182
! Node: Expressions1368234
! Node: Tagging Insns1375276
! Node: Attr Example1379749
! Node: Insn Lengths1382134
! Node: Constant Attributes1385610
! Node: Mnemonic Attribute1386806
! Node: Delay Slots1388345
! Node: Processor pipeline description1391600
! Ref: Processor pipeline description-Footnote-11410740
! Node: Conditional Execution1411064
! Node: Define Subst1414623
! Node: Define Subst Example1416714
! Node: Define Subst Pattern Matching1419769
! Node: Define Subst Output Template1421083
! Node: Constant Definitions1423506
! Ref: define_enum1427433
! Node: Iterators1427933
! Node: Mode Iterators1428578
! Node: Defining Mode Iterators1429600
! Node: Substitutions1431688
! Node: Examples1434004
! Node: Code Iterators1435472
! Node: Int Iterators1438892
! Node: Subst Iterators1441477
! Node: Parameterized Names1443229
! Node: Target Macros1447588
! Node: Target Structure1450779
! Node: Driver1453833
! Node: Run-time Target1473378
! Node: Per-Function Data1484267
! Node: Storage Layout1487087
! Node: Type Layout1517319
! Node: Registers1530733
! Node: Register Basics1531707
! Node: Allocation Order1539473
! Node: Values in Registers1541973
! Node: Leaf Functions1549537
! Node: Stack Registers1552426
! Node: Register Classes1553703
! Node: Stack and Calling1590333
! Node: Frame Layout1590939
! Node: Exception Handling1605966
! Node: Stack Checking1612829
! Node: Frame Registers1618491
! Node: Elimination1627201
! Node: Stack Arguments1631499
! Node: Register Arguments1639044
! Node: Scalar Return1665466
! Node: Aggregate Return1672034
! Node: Caller Saves1676868
! Node: Function Entry1677614
! Node: Profiling1689326
! Node: Tail Calls1691472
! Node: Shrink-wrapping separate components1693390
! Node: Stack Smashing Protection1696479
! Node: Miscellaneous Register Hooks1699000
! Node: Varargs1699865
! Node: Trampolines1710053
! Node: Library Calls1719826
! Node: Addressing Modes1726259
! Node: Anchored Addresses1759078
! Node: Condition Code1761797
! Node: MODE_CC Condition Codes1763654
! Node: Costs1770509
! Node: Scheduling1796976
! Node: Sections1821018
! Node: PIC1837728
! Node: Assembler Format1839823
! Node: File Framework1840961
! Ref: TARGET_HAVE_SWITCHABLE_BSS_SECTIONS1848672
! Node: Data Output1850371
! Node: Uninitialized Data1858787
! Node: Label Output1863878
! Node: Initialization1888979
! Node: Macros for Initialization1895158
! Node: Instruction Output1902477
! Node: Dispatch Tables1913331
! Node: Exception Region Output1919142
! Node: Alignment Output1927035
! Node: Debugging Info1930794
! Node: All Debuggers1931344
! Node: DWARF1934325
! Node: VMS Debug1940176
! Node: CTF Debug1940793
! Node: BTF Debug1941158
! Node: Floating Point1941505
! Node: Mode Switching1944272
! Node: Target Attributes1952362
! Node: Emulated TLS1965921
! Node: MIPS Coprocessors1969339
! Node: PCH Target1970502
! Node: C++ ABI1972384
! Node: D Language and ABI1977696
! Node: Rust Language and ABI1981005
! Node: Named Address Spaces1981752
! Node: Misc1987878
! Ref: TARGET_SHIFT_TRUNCATION_MASK1995877
! Node: Host Config2060181
! Node: Host Common2061274
! Node: Filesystem2063664
! Node: Host Misc2067883
! Node: Fragments2070452
! Node: Target Fragment2071699
! Node: Host Fragment2082927
! Node: Collect22083171
! Node: Header Dirs2086001
! Node: Type Information2087468
! Node: GTY Options2091069
! Node: Inheritance and GTY2104917
! Ref: Inheritance and GTY-Footnote-12106492
! Node: User GC2106762
! Node: GGC Roots2110621
! Node: Files2111364
! Node: Invoking the garbage collector2114083
! Node: Troubleshooting2115757
! Node: Plugins2116856
! Node: Plugins loading2117985
! Node: Plugin API2119133
! Node: Plugins pass2127148
! Node: Plugins GC2129131
! Node: Plugins description2130916
! Node: Plugins attr2131464
! Node: Plugins recording2133788
! Node: Plugins gate2134666
! Node: Plugins tracking2135265
! Node: Plugins building2135861
! Node: LTO2139472
! Node: LTO Overview2140348
! Node: LTO object file layout2146220
! Node: IPA2150899
! Node: WHOPR2160107
! Node: Internal flags2164731
! Node: Match and Simplify2166166
! Node: GIMPLE API2167136
! Node: The Language2169962
! Node: Static Analyzer2183538
! Node: Analyzer Internals2183803
! Node: Debugging the Analyzer2204225
! Node: User Experience Guidelines2212101
! Node: Guidelines for Diagnostics2213037
! Ref: input_location_example2221318
! Node: Guidelines for Options2234148
! Node: Funding2234325
! Node: GNU Project2236831
! Node: Copying2237482
! Node: GNU Free Documentation License2275014
! Node: Contributors2300143
! Node: Option Index2342941
! Node: Concept Index2343834
  
  End Tag Table
+ 
+ 
+ Local Variables:
+ coding: utf-8
+ End:
diff -Nrcpad gcc-15.2.0/gcc/doc/gcov-dump.1 gcc-15.3.0/gcc/doc/gcov-dump.1
*** gcc-15.2.0/gcc/doc/gcov-dump.1	Fri Aug  8 06:54:13 2025
--- gcc-15.3.0/gcc/doc/gcov-dump.1	Fri Jun 12 06:11:48 2026
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
--- 1,5 ----
! .\" -*- mode: troff; coding: utf-8 -*-
! .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
***************
*** 15,43 ****
  .ft R
  .fi
  ..
! .\" Set up some character translations and predefined strings.  \*(-- will
! .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
! .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
! .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
! .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
! .\" nothing in troff, for use with C<>.
! .tr \(*W-
! .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
  .ie n \{\
- .    ds -- \(*W-
- .    ds PI pi
- .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
- .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
- .    ds L" ""
- .    ds R" ""
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
- .    ds -- \|\(em\|
- .    ds PI \(*p
- .    ds L" ``
- .    ds R" ''
  .    ds C`
  .    ds C'
  'br\}
--- 16,27 ----
  .ft R
  .fi
  ..
! .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
  .ie n \{\
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
  .    ds C`
  .    ds C'
  'br\}
***************
*** 54,219 ****
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .if !\nF .nr F 0
! .if \nF>0 \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    if !\nF==2 \{\
! .        nr % 0
! .        nr F 2
  .    \}
  .\}
  .\"
! .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
! .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
! .    \" fudge factors for nroff and troff
! .if n \{\
! .    ds #H 0
! .    ds #V .8m
! .    ds #F .3m
! .    ds #[ \f1
! .    ds #] \fP
! .\}
! .if t \{\
! .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
! .    ds #V .6m
! .    ds #F 0
! .    ds #[ \&
! .    ds #] \&
! .\}
! .    \" simple accents for nroff and troff
! .if n \{\
! .    ds ' \&
! .    ds ` \&
! .    ds ^ \&
! .    ds , \&
! .    ds ~ ~
! .    ds /
! .\}
! .if t \{\
! .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
! .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
! .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
! .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
! .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
! .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
! .\}
! .    \" troff and (daisy-wheel) nroff accents
! .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
! .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
! .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
! .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
! .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
! .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
! .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
! .ds ae a\h'-(\w'a'u*4/10)'e
! .ds Ae A\h'-(\w'A'u*4/10)'E
! .    \" corrections for vroff
! .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
! .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
! .    \" for low resolution devices (crt and lpr)
! .if \n(.H>23 .if \n(.V>19 \
! \{\
! .    ds : e
! .    ds 8 ss
! .    ds o a
! .    ds d- d\h'-1'\(ga
! .    ds D- D\h'-1'\(hy
! .    ds th \o'bp'
! .    ds Th \o'LP'
! .    ds ae ae
! .    ds Ae AE
! .\}
! .rm #[ #] #H #V #F C
  .\" ========================================================================
  .\"
  .IX Title "GCOV-DUMP 1"
! .TH GCOV-DUMP 1 "2025-08-08" "gcc-15.2.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH "NAME"
  gcov\-dump \- offline gcda and gcno profile dump tool
! .SH "SYNOPSIS"
  .IX Header "SYNOPSIS"
! gcov-dump [\fB\-v\fR|\fB\-\-version\fR]
       [\fB\-h\fR|\fB\-\-help\fR]
       [\fB\-l\fR|\fB\-\-long\fR]
       [\fB\-p\fR|\fB\-\-positions\fR]
       [\fB\-r\fR|\fB\-\-raw\fR]
       [\fB\-s\fR|\fB\-\-stable\fR]
       \fIgcovfiles\fR
! .SH "DESCRIPTION"
  .IX Header "DESCRIPTION"
! \&\fBgcov-dump\fR is a tool you can use in conjunction with \s-1GCC\s0 to
  dump content of gcda and gcno profile files offline.
! .SH "OPTIONS"
  .IX Header "OPTIONS"
! .IP "\fB\-h\fR" 4
  .IX Item "-h"
  .PD 0
! .IP "\fB\-\-help\fR" 4
  .IX Item "--help"
  .PD
! Display help about using \fBgcov-dump\fR (on the standard output), and
  exit without doing any further processing.
! .IP "\fB\-l\fR" 4
  .IX Item "-l"
  .PD 0
! .IP "\fB\-\-long\fR" 4
  .IX Item "--long"
  .PD
  Dump content of records.
! .IP "\fB\-p\fR" 4
  .IX Item "-p"
  .PD 0
! .IP "\fB\-\-positions\fR" 4
  .IX Item "--positions"
  .PD
  Dump positions of records.
! .IP "\fB\-r\fR" 4
  .IX Item "-r"
  .PD 0
! .IP "\fB\-\-raw\fR" 4
  .IX Item "--raw"
  .PD
  Print content records in raw format.
! .IP "\fB\-s\fR" 4
  .IX Item "-s"
  .PD 0
! .IP "\fB\-\-stable\fR" 4
  .IX Item "--stable"
  .PD
  Print content in stable format usable for comparison.
! .IP "\fB\-v\fR" 4
  .IX Item "-v"
  .PD 0
! .IP "\fB\-\-version\fR" 4
  .IX Item "--version"
  .PD
! Display the \fBgcov-dump\fR version number (on the standard output),
  and exit without doing any further processing.
! .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 2017\-2025 Free Software Foundation, Inc.
  .PP
  Permission is granted to copy, distribute and/or modify this document
! under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 or
  any later version published by the Free Software Foundation; with the
! Invariant Sections being \*(L"\s-1GNU\s0 General Public License\*(R" and \*(L"Funding
! Free Software\*(R", the Front-Cover texts being (a) (see below), and with
! the Back-Cover Texts being (b) (see below).  A copy of the license is
! included in the \fIgfdl\fR\|(7) man page.
  .PP
! (a) The \s-1FSF\s0's Front-Cover Text is:
  .PP
  .Vb 1
  \&     A GNU Manual
  .Ve
  .PP
! (b) The \s-1FSF\s0's Back-Cover Text is:
  .PP
  .Vb 3
  \&     You have freedom to copy and modify this GNU Manual, like GNU
--- 38,148 ----
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .nr rF 0
! .if \n(.g .if rF .nr rF 1
! .if (\n(rF:(\n(.g==0)) \{\
! .    if \nF \{\
! .        de IX
! .        tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .        if !\nF==2 \{\
! .            nr % 0
! .            nr F 2
! .        \}
  .    \}
  .\}
+ .rr rF
  .\"
! .\" Required to disable full justification in groff 1.23.0.
! .if n .ds AD l
  .\" ========================================================================
  .\"
  .IX Title "GCOV-DUMP 1"
! .TH GCOV-DUMP 1 2026-06-12 gcc-15.3.0 GNU
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH NAME
  gcov\-dump \- offline gcda and gcno profile dump tool
! .SH SYNOPSIS
  .IX Header "SYNOPSIS"
! gcov\-dump [\fB\-v\fR|\fB\-\-version\fR]
       [\fB\-h\fR|\fB\-\-help\fR]
       [\fB\-l\fR|\fB\-\-long\fR]
       [\fB\-p\fR|\fB\-\-positions\fR]
       [\fB\-r\fR|\fB\-\-raw\fR]
       [\fB\-s\fR|\fB\-\-stable\fR]
       \fIgcovfiles\fR
! .SH DESCRIPTION
  .IX Header "DESCRIPTION"
! \&\fBgcov\-dump\fR is a tool you can use in conjunction with GCC to
  dump content of gcda and gcno profile files offline.
! .SH OPTIONS
  .IX Header "OPTIONS"
! .IP \fB\-h\fR 4
  .IX Item "-h"
  .PD 0
! .IP \fB\-\-help\fR 4
  .IX Item "--help"
  .PD
! Display help about using \fBgcov\-dump\fR (on the standard output), and
  exit without doing any further processing.
! .IP \fB\-l\fR 4
  .IX Item "-l"
  .PD 0
! .IP \fB\-\-long\fR 4
  .IX Item "--long"
  .PD
  Dump content of records.
! .IP \fB\-p\fR 4
  .IX Item "-p"
  .PD 0
! .IP \fB\-\-positions\fR 4
  .IX Item "--positions"
  .PD
  Dump positions of records.
! .IP \fB\-r\fR 4
  .IX Item "-r"
  .PD 0
! .IP \fB\-\-raw\fR 4
  .IX Item "--raw"
  .PD
  Print content records in raw format.
! .IP \fB\-s\fR 4
  .IX Item "-s"
  .PD 0
! .IP \fB\-\-stable\fR 4
  .IX Item "--stable"
  .PD
  Print content in stable format usable for comparison.
! .IP \fB\-v\fR 4
  .IX Item "-v"
  .PD 0
! .IP \fB\-\-version\fR 4
  .IX Item "--version"
  .PD
! Display the \fBgcov\-dump\fR version number (on the standard output),
  and exit without doing any further processing.
! .SH COPYRIGHT
  .IX Header "COPYRIGHT"
  Copyright (c) 2017\-2025 Free Software Foundation, Inc.
  .PP
  Permission is granted to copy, distribute and/or modify this document
! under the terms of the GNU Free Documentation License, Version 1.3 or
  any later version published by the Free Software Foundation; with the
! Invariant Sections being "GNU General Public License" and "Funding
! Free Software", the Front\-Cover texts being (a) (see below), and with
! the Back\-Cover Texts being (b) (see below).  A copy of the license is
! included in the \fBgfdl\fR\|(7) man page.
  .PP
! (a) The FSF\*(Aqs Front\-Cover Text is:
  .PP
  .Vb 1
  \&     A GNU Manual
  .Ve
  .PP
! (b) The FSF\*(Aqs Back\-Cover Text is:
  .PP
  .Vb 3
  \&     You have freedom to copy and modify this GNU Manual, like GNU
diff -Nrcpad gcc-15.2.0/gcc/doc/gcov-tool.1 gcc-15.3.0/gcc/doc/gcov-tool.1
*** gcc-15.2.0/gcc/doc/gcov-tool.1	Fri Aug  8 06:54:13 2025
--- gcc-15.3.0/gcc/doc/gcov-tool.1	Fri Jun 12 06:11:48 2026
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
--- 1,5 ----
! .\" -*- mode: troff; coding: utf-8 -*-
! .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
***************
*** 15,43 ****
  .ft R
  .fi
  ..
! .\" Set up some character translations and predefined strings.  \*(-- will
! .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
! .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
! .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
! .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
! .\" nothing in troff, for use with C<>.
! .tr \(*W-
! .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
  .ie n \{\
- .    ds -- \(*W-
- .    ds PI pi
- .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
- .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
- .    ds L" ""
- .    ds R" ""
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
- .    ds -- \|\(em\|
- .    ds PI \(*p
- .    ds L" ``
- .    ds R" ''
  .    ds C`
  .    ds C'
  'br\}
--- 16,27 ----
  .ft R
  .fi
  ..
! .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
  .ie n \{\
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
  .    ds C`
  .    ds C'
  'br\}
***************
*** 54,235 ****
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .if !\nF .nr F 0
! .if \nF>0 \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    if !\nF==2 \{\
! .        nr % 0
! .        nr F 2
  .    \}
  .\}
  .\"
! .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
! .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
! .    \" fudge factors for nroff and troff
! .if n \{\
! .    ds #H 0
! .    ds #V .8m
! .    ds #F .3m
! .    ds #[ \f1
! .    ds #] \fP
! .\}
! .if t \{\
! .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
! .    ds #V .6m
! .    ds #F 0
! .    ds #[ \&
! .    ds #] \&
! .\}
! .    \" simple accents for nroff and troff
! .if n \{\
! .    ds ' \&
! .    ds ` \&
! .    ds ^ \&
! .    ds , \&
! .    ds ~ ~
! .    ds /
! .\}
! .if t \{\
! .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
! .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
! .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
! .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
! .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
! .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
! .\}
! .    \" troff and (daisy-wheel) nroff accents
! .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
! .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
! .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
! .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
! .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
! .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
! .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
! .ds ae a\h'-(\w'a'u*4/10)'e
! .ds Ae A\h'-(\w'A'u*4/10)'E
! .    \" corrections for vroff
! .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
! .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
! .    \" for low resolution devices (crt and lpr)
! .if \n(.H>23 .if \n(.V>19 \
! \{\
! .    ds : e
! .    ds 8 ss
! .    ds o a
! .    ds d- d\h'-1'\(ga
! .    ds D- D\h'-1'\(hy
! .    ds th \o'bp'
! .    ds Th \o'LP'
! .    ds ae ae
! .    ds Ae AE
! .\}
! .rm #[ #] #H #V #F C
  .\" ========================================================================
  .\"
  .IX Title "GCOV-TOOL 1"
! .TH GCOV-TOOL 1 "2025-08-08" "gcc-15.2.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH "NAME"
  gcov\-tool \- offline gcda profile processing tool
! .SH "SYNOPSIS"
  .IX Header "SYNOPSIS"
! gcov-tool [\fB\-v\fR|\fB\-\-version\fR] [\fB\-h\fR|\fB\-\-help\fR]
  .PP
! gcov-tool merge [merge\-options] \fIdirectory1\fR \fIdirectory2\fR
       [\fB\-o\fR|\fB\-\-output\fR \fIdirectory\fR]
       [\fB\-v\fR|\fB\-\-verbose\fR]
       [\fB\-w\fR|\fB\-\-weight\fR \fIw1,w2\fR]
  .PP
! gcov-tool merge-stream [merge\-stream\-options] [\fIfile\fR]
       [\fB\-v\fR|\fB\-\-verbose\fR]
       [\fB\-w\fR|\fB\-\-weight\fR \fIw1,w2\fR]
  .PP
! gcov-tool rewrite [rewrite\-options] \fIdirectory\fR
       [\fB\-n\fR|\fB\-\-normalize\fR \fIlong_long_value\fR]
       [\fB\-o\fR|\fB\-\-output\fR \fIdirectory\fR]
       [\fB\-s\fR|\fB\-\-scale\fR \fIfloat_or_simple\-frac_value\fR]
       [\fB\-v\fR|\fB\-\-verbose\fR]
  .PP
! gcov-tool overlap [overlap\-options] \fIdirectory1\fR \fIdirectory2\fR
       [\fB\-f\fR|\fB\-\-function\fR]
       [\fB\-F\fR|\fB\-\-fullname\fR]
       [\fB\-h\fR|\fB\-\-hotonly\fR]
       [\fB\-o\fR|\fB\-\-object\fR]
       [\fB\-t\fR|\fB\-\-hot_threshold\fR] \fIfloat\fR
       [\fB\-v\fR|\fB\-\-verbose\fR]
! .SH "DESCRIPTION"
  .IX Header "DESCRIPTION"
! \&\fBgcov-tool\fR is an offline tool to process gcc's gcda profile files.
  .PP
! Current gcov-tool supports the following functionalities:
! .IP "*" 4
  merge two sets of profiles with weights.
! .IP "*" 4
  read a stream of profiles with associated filenames and merge it with a set of
  profiles with weights.
! .IP "*" 4
  read one set of profile and rewrite profile contents. One can scale or
  normalize the count values.
  .PP
  Examples of the use cases for this tool are:
! .IP "*" 4
  Collect the profiles for different set of inputs, and use this tool to merge
  them. One can specify the weight to factor in the relative importance of
  each input.
! .IP "*" 4
  Collect profiles from target systems without a filesystem (freestanding
  environments).  Merge the collected profiles with associated profiles
  present on the host system.  One can specify the weight to factor in the
  relative importance of each input.
! .IP "*" 4
  Rewrite the profile after removing a subset of the gcda files, while maintaining
  the consistency of the summary and the histogram.
! .IP "*" 4
  It can also be used to debug or libgcov code as the tools shares the majority
  code as the runtime library.
  .PP
  Note that for the merging operation, this profile generated offline may
  contain slight different values from the online merged profile. Here are
  a list of typical differences:
! .IP "*" 4
  histogram difference: This offline tool recomputes the histogram after merging
  the counters. The resulting histogram, therefore, is precise. The online
! merging does not have this capability \*(-- the histogram is merged from two
  histograms and the result is an approximation.
! .IP "*" 4
! summary checksum difference: Summary checksum uses a \s-1CRC32\s0 operation. The value
! depends on the link list order of gcov-info objects. This order is different in
! gcov-tool from that in the online merge. It's expected to have different
  summary checksums. It does not really matter as the compiler does not use this
  checksum anywhere.
! .IP "*" 4
  value profile counter values difference: Some counter values for value profile
! are runtime dependent, like heap addresses. It's normal to see some difference
  in these kind of counters.
! .SH "OPTIONS"
  .IX Header "OPTIONS"
! .IP "\fB\-h\fR" 4
  .IX Item "-h"
  .PD 0
! .IP "\fB\-\-help\fR" 4
  .IX Item "--help"
  .PD
! Display help about using \fBgcov-tool\fR (on the standard output), and
  exit without doing any further processing.
! .IP "\fB\-v\fR" 4
  .IX Item "-v"
  .PD 0
! .IP "\fB\-\-version\fR" 4
  .IX Item "--version"
  .PD
! Display the \fBgcov-tool\fR version number (on the standard output),
  and exit without doing any further processing.
! .IP "\fBmerge\fR" 4
  .IX Item "merge"
  Merge two profile directories.
  .RS 4
--- 38,164 ----
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .nr rF 0
! .if \n(.g .if rF .nr rF 1
! .if (\n(rF:(\n(.g==0)) \{\
! .    if \nF \{\
! .        de IX
! .        tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .        if !\nF==2 \{\
! .            nr % 0
! .            nr F 2
! .        \}
  .    \}
  .\}
+ .rr rF
  .\"
! .\" Required to disable full justification in groff 1.23.0.
! .if n .ds AD l
  .\" ========================================================================
  .\"
  .IX Title "GCOV-TOOL 1"
! .TH GCOV-TOOL 1 2026-06-12 gcc-15.3.0 GNU
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH NAME
  gcov\-tool \- offline gcda profile processing tool
! .SH SYNOPSIS
  .IX Header "SYNOPSIS"
! gcov\-tool [\fB\-v\fR|\fB\-\-version\fR] [\fB\-h\fR|\fB\-\-help\fR]
  .PP
! gcov\-tool merge [merge\-options] \fIdirectory1\fR \fIdirectory2\fR
       [\fB\-o\fR|\fB\-\-output\fR \fIdirectory\fR]
       [\fB\-v\fR|\fB\-\-verbose\fR]
       [\fB\-w\fR|\fB\-\-weight\fR \fIw1,w2\fR]
  .PP
! gcov\-tool merge\-stream [merge\-stream\-options] [\fIfile\fR]
       [\fB\-v\fR|\fB\-\-verbose\fR]
       [\fB\-w\fR|\fB\-\-weight\fR \fIw1,w2\fR]
  .PP
! gcov\-tool rewrite [rewrite\-options] \fIdirectory\fR
       [\fB\-n\fR|\fB\-\-normalize\fR \fIlong_long_value\fR]
       [\fB\-o\fR|\fB\-\-output\fR \fIdirectory\fR]
       [\fB\-s\fR|\fB\-\-scale\fR \fIfloat_or_simple\-frac_value\fR]
       [\fB\-v\fR|\fB\-\-verbose\fR]
  .PP
! gcov\-tool overlap [overlap\-options] \fIdirectory1\fR \fIdirectory2\fR
       [\fB\-f\fR|\fB\-\-function\fR]
       [\fB\-F\fR|\fB\-\-fullname\fR]
       [\fB\-h\fR|\fB\-\-hotonly\fR]
       [\fB\-o\fR|\fB\-\-object\fR]
       [\fB\-t\fR|\fB\-\-hot_threshold\fR] \fIfloat\fR
       [\fB\-v\fR|\fB\-\-verbose\fR]
! .SH DESCRIPTION
  .IX Header "DESCRIPTION"
! \&\fBgcov\-tool\fR is an offline tool to process gcc\*(Aqs gcda profile files.
  .PP
! Current gcov\-tool supports the following functionalities:
! .IP * 4
  merge two sets of profiles with weights.
! .IP * 4
  read a stream of profiles with associated filenames and merge it with a set of
  profiles with weights.
! .IP * 4
  read one set of profile and rewrite profile contents. One can scale or
  normalize the count values.
  .PP
  Examples of the use cases for this tool are:
! .IP * 4
  Collect the profiles for different set of inputs, and use this tool to merge
  them. One can specify the weight to factor in the relative importance of
  each input.
! .IP * 4
  Collect profiles from target systems without a filesystem (freestanding
  environments).  Merge the collected profiles with associated profiles
  present on the host system.  One can specify the weight to factor in the
  relative importance of each input.
! .IP * 4
  Rewrite the profile after removing a subset of the gcda files, while maintaining
  the consistency of the summary and the histogram.
! .IP * 4
  It can also be used to debug or libgcov code as the tools shares the majority
  code as the runtime library.
  .PP
  Note that for the merging operation, this profile generated offline may
  contain slight different values from the online merged profile. Here are
  a list of typical differences:
! .IP * 4
  histogram difference: This offline tool recomputes the histogram after merging
  the counters. The resulting histogram, therefore, is precise. The online
! merging does not have this capability \-\- the histogram is merged from two
  histograms and the result is an approximation.
! .IP * 4
! summary checksum difference: Summary checksum uses a CRC32 operation. The value
! depends on the link list order of gcov\-info objects. This order is different in
! gcov\-tool from that in the online merge. It\*(Aqs expected to have different
  summary checksums. It does not really matter as the compiler does not use this
  checksum anywhere.
! .IP * 4
  value profile counter values difference: Some counter values for value profile
! are runtime dependent, like heap addresses. It\*(Aqs normal to see some difference
  in these kind of counters.
! .SH OPTIONS
  .IX Header "OPTIONS"
! .IP \fB\-h\fR 4
  .IX Item "-h"
  .PD 0
! .IP \fB\-\-help\fR 4
  .IX Item "--help"
  .PD
! Display help about using \fBgcov\-tool\fR (on the standard output), and
  exit without doing any further processing.
! .IP \fB\-v\fR 4
  .IX Item "-v"
  .PD 0
! .IP \fB\-\-version\fR 4
  .IX Item "--version"
  .PD
! Display the \fBgcov\-tool\fR version number (on the standard output),
  and exit without doing any further processing.
! .IP \fBmerge\fR 4
  .IX Item "merge"
  Merge two profile directories.
  .RS 4
*************** Merge two profile directories.
*** 241,250 ****
  .PD
  Set the output profile directory. Default output directory name is
  \&\fImerged_profile\fR.
! .IP "\fB\-v\fR" 4
  .IX Item "-v"
  .PD 0
! .IP "\fB\-\-verbose\fR" 4
  .IX Item "--verbose"
  .PD
  Set the verbose mode.
--- 170,179 ----
  .PD
  Set the output profile directory. Default output directory name is
  \&\fImerged_profile\fR.
! .IP \fB\-v\fR 4
  .IX Item "-v"
  .PD 0
! .IP \fB\-\-verbose\fR 4
  .IX Item "--verbose"
  .PD
  Set the verbose mode.
*************** respectively. The default weights are 1
*** 259,265 ****
  .RE
  .RS 4
  .RE
! .IP "\fBmerge-stream\fR" 4
  .IX Item "merge-stream"
  Collect profiles with associated filenames from a \fIgcfn\fR and \fIgcda\fR
  data stream.  Read the stream from the file specified by \fIfile\fR or from
--- 188,194 ----
  .RE
  .RS 4
  .RE
! .IP \fBmerge\-stream\fR 4
  .IX Item "merge-stream"
  Collect profiles with associated filenames from a \fIgcfn\fR and \fIgcda\fR
  data stream.  Read the stream from the file specified by \fIfile\fR or from
*************** For the generation of a \fIgcfn\fR and \
*** 270,279 ****
  system, please have a look at the \f(CW\*(C`_\|_gcov_filename_to_gcfn()\*(C'\fR and
  \&\f(CW\*(C`_\|_gcov_info_to_gcda()\*(C'\fR functions declared in \f(CW\*(C`#include <gcov.h>\*(C'\fR.
  .RS 4
! .IP "\fB\-v\fR" 4
  .IX Item "-v"
  .PD 0
! .IP "\fB\-\-verbose\fR" 4
  .IX Item "--verbose"
  .PD
  Set the verbose mode.
--- 199,208 ----
  system, please have a look at the \f(CW\*(C`_\|_gcov_filename_to_gcfn()\*(C'\fR and
  \&\f(CW\*(C`_\|_gcov_info_to_gcda()\*(C'\fR functions declared in \f(CW\*(C`#include <gcov.h>\*(C'\fR.
  .RS 4
! .IP \fB\-v\fR 4
  .IX Item "-v"
  .PD 0
! .IP \fB\-\-verbose\fR 4
  .IX Item "--verbose"
  .PD
  Set the verbose mode.
*************** default weights are 1 for both.
*** 289,295 ****
  .RE
  .RS 4
  .RE
! .IP "\fBrewrite\fR" 4
  .IX Item "rewrite"
  Read the specified profile directory and rewrite to a new directory.
  .RS 4
--- 218,224 ----
  .RE
  .RS 4
  .RE
! .IP \fBrewrite\fR 4
  .IX Item "rewrite"
  Read the specified profile directory and rewrite to a new directory.
  .RS 4
*************** Set the output profile directory. Defaul
*** 316,332 ****
  .PD
  Scale the profile counters. The specified value can be in floating point value,
  or simple fraction value form, such 1, 2, 2/3, and 5/3.
! .IP "\fB\-v\fR" 4
  .IX Item "-v"
  .PD 0
! .IP "\fB\-\-verbose\fR" 4
  .IX Item "--verbose"
  .PD
  Set the verbose mode.
  .RE
  .RS 4
  .RE
! .IP "\fBoverlap\fR" 4
  .IX Item "overlap"
  Compute the overlap score between the two specified profile directories.
  The overlap score is computed based on the arc profiles. It is defined as
--- 245,261 ----
  .PD
  Scale the profile counters. The specified value can be in floating point value,
  or simple fraction value form, such 1, 2, 2/3, and 5/3.
! .IP \fB\-v\fR 4
  .IX Item "-v"
  .PD 0
! .IP \fB\-\-verbose\fR 4
  .IX Item "--verbose"
  .PD
  Set the verbose mode.
  .RE
  .RS 4
  .RE
! .IP \fBoverlap\fR 4
  .IX Item "overlap"
  Compute the overlap score between the two specified profile directories.
  The overlap score is computed based on the arc profiles. It is defined as
*************** for all arc counter i, where p1_counter[
*** 335,365 ****
  matched counters and p1_sum_all and p2_sum_all are the sum of counter
  values in profile 1 and profile 2, respectively.
  .RS 4
! .IP "\fB\-f\fR" 4
  .IX Item "-f"
  .PD 0
! .IP "\fB\-\-function\fR" 4
  .IX Item "--function"
  .PD
  Print function level overlap score.
! .IP "\fB\-F\fR" 4
  .IX Item "-F"
  .PD 0
! .IP "\fB\-\-fullname\fR" 4
  .IX Item "--fullname"
  .PD
  Print full gcda filename.
! .IP "\fB\-h\fR" 4
  .IX Item "-h"
  .PD 0
! .IP "\fB\-\-hotonly\fR" 4
  .IX Item "--hotonly"
  .PD
  Only print info for hot objects/functions.
! .IP "\fB\-o\fR" 4
  .IX Item "-o"
  .PD 0
! .IP "\fB\-\-object\fR" 4
  .IX Item "--object"
  .PD
  Print object level overlap score.
--- 264,294 ----
  matched counters and p1_sum_all and p2_sum_all are the sum of counter
  values in profile 1 and profile 2, respectively.
  .RS 4
! .IP \fB\-f\fR 4
  .IX Item "-f"
  .PD 0
! .IP \fB\-\-function\fR 4
  .IX Item "--function"
  .PD
  Print function level overlap score.
! .IP \fB\-F\fR 4
  .IX Item "-F"
  .PD 0
! .IP \fB\-\-fullname\fR 4
  .IX Item "--fullname"
  .PD
  Print full gcda filename.
! .IP \fB\-h\fR 4
  .IX Item "-h"
  .PD 0
! .IP \fB\-\-hotonly\fR 4
  .IX Item "--hotonly"
  .PD
  Only print info for hot objects/functions.
! .IP \fB\-o\fR 4
  .IX Item "-o"
  .PD 0
! .IP \fB\-\-object\fR 4
  .IX Item "--object"
  .PD
  Print object level overlap score.
*************** Print object level overlap score.
*** 370,379 ****
  .IX Item "--hot_threshold <float>"
  .PD
  Set the threshold for hot counter value.
! .IP "\fB\-v\fR" 4
  .IX Item "-v"
  .PD 0
! .IP "\fB\-\-verbose\fR" 4
  .IX Item "--verbose"
  .PD
  Set the verbose mode.
--- 299,308 ----
  .IX Item "--hot_threshold <float>"
  .PD
  Set the threshold for hot counter value.
! .IP \fB\-v\fR 4
  .IX Item "-v"
  .PD 0
! .IP \fB\-\-verbose\fR 4
  .IX Item "--verbose"
  .PD
  Set the verbose mode.
*************** Set the verbose mode.
*** 382,408 ****
  .RE
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf\-funding\fR\|(7), \fIgcc\fR\|(1), \fIgcov\fR\|(1) and the Info entry for
  \&\fIgcc\fR.
! .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 2014\-2025 Free Software Foundation, Inc.
  .PP
  Permission is granted to copy, distribute and/or modify this document
! under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 or
  any later version published by the Free Software Foundation; with the
! Invariant Sections being \*(L"\s-1GNU\s0 General Public License\*(R" and \*(L"Funding
! Free Software\*(R", the Front-Cover texts being (a) (see below), and with
! the Back-Cover Texts being (b) (see below).  A copy of the license is
! included in the \fIgfdl\fR\|(7) man page.
  .PP
! (a) The \s-1FSF\s0's Front-Cover Text is:
  .PP
  .Vb 1
  \&     A GNU Manual
  .Ve
  .PP
! (b) The \s-1FSF\s0's Back-Cover Text is:
  .PP
  .Vb 3
  \&     You have freedom to copy and modify this GNU Manual, like GNU
--- 311,337 ----
  .RE
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fBgpl\fR\|(7), \fBgfdl\fR\|(7), \fBfsf\-funding\fR\|(7), \fBgcc\fR\|(1), \fBgcov\fR\|(1) and the Info entry for
  \&\fIgcc\fR.
! .SH COPYRIGHT
  .IX Header "COPYRIGHT"
  Copyright (c) 2014\-2025 Free Software Foundation, Inc.
  .PP
  Permission is granted to copy, distribute and/or modify this document
! under the terms of the GNU Free Documentation License, Version 1.3 or
  any later version published by the Free Software Foundation; with the
! Invariant Sections being "GNU General Public License" and "Funding
! Free Software", the Front\-Cover texts being (a) (see below), and with
! the Back\-Cover Texts being (b) (see below).  A copy of the license is
! included in the \fBgfdl\fR\|(7) man page.
  .PP
! (a) The FSF\*(Aqs Front\-Cover Text is:
  .PP
  .Vb 1
  \&     A GNU Manual
  .Ve
  .PP
! (b) The FSF\*(Aqs Back\-Cover Text is:
  .PP
  .Vb 3
  \&     You have freedom to copy and modify this GNU Manual, like GNU
diff -Nrcpad gcc-15.2.0/gcc/doc/gcov.1 gcc-15.3.0/gcc/doc/gcov.1
*** gcc-15.2.0/gcc/doc/gcov.1	Fri Aug  8 06:54:13 2025
--- gcc-15.3.0/gcc/doc/gcov.1	Fri Jun 12 06:11:48 2026
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
--- 1,5 ----
! .\" -*- mode: troff; coding: utf-8 -*-
! .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
***************
*** 15,43 ****
  .ft R
  .fi
  ..
! .\" Set up some character translations and predefined strings.  \*(-- will
! .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
! .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
! .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
! .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
! .\" nothing in troff, for use with C<>.
! .tr \(*W-
! .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
  .ie n \{\
- .    ds -- \(*W-
- .    ds PI pi
- .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
- .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
- .    ds L" ""
- .    ds R" ""
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
- .    ds -- \|\(em\|
- .    ds PI \(*p
- .    ds L" ``
- .    ds R" ''
  .    ds C`
  .    ds C'
  'br\}
--- 16,27 ----
  .ft R
  .fi
  ..
! .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
  .ie n \{\
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
  .    ds C`
  .    ds C'
  'br\}
***************
*** 54,142 ****
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .if !\nF .nr F 0
! .if \nF>0 \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    if !\nF==2 \{\
! .        nr % 0
! .        nr F 2
  .    \}
  .\}
  .\"
! .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
! .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
! .    \" fudge factors for nroff and troff
! .if n \{\
! .    ds #H 0
! .    ds #V .8m
! .    ds #F .3m
! .    ds #[ \f1
! .    ds #] \fP
! .\}
! .if t \{\
! .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
! .    ds #V .6m
! .    ds #F 0
! .    ds #[ \&
! .    ds #] \&
! .\}
! .    \" simple accents for nroff and troff
! .if n \{\
! .    ds ' \&
! .    ds ` \&
! .    ds ^ \&
! .    ds , \&
! .    ds ~ ~
! .    ds /
! .\}
! .if t \{\
! .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
! .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
! .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
! .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
! .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
! .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
! .\}
! .    \" troff and (daisy-wheel) nroff accents
! .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
! .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
! .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
! .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
! .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
! .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
! .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
! .ds ae a\h'-(\w'a'u*4/10)'e
! .ds Ae A\h'-(\w'A'u*4/10)'E
! .    \" corrections for vroff
! .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
! .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
! .    \" for low resolution devices (crt and lpr)
! .if \n(.H>23 .if \n(.V>19 \
! \{\
! .    ds : e
! .    ds 8 ss
! .    ds o a
! .    ds d- d\h'-1'\(ga
! .    ds D- D\h'-1'\(hy
! .    ds th \o'bp'
! .    ds Th \o'LP'
! .    ds ae ae
! .    ds Ae AE
! .\}
! .rm #[ #] #H #V #F C
  .\" ========================================================================
  .\"
  .IX Title "GCOV 1"
! .TH GCOV 1 "2025-08-08" "gcc-15.2.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH "NAME"
  gcov \- coverage testing tool
! .SH "SYNOPSIS"
  .IX Header "SYNOPSIS"
  gcov [\fB\-v\fR|\fB\-\-version\fR] [\fB\-h\fR|\fB\-\-help\fR]
       [\fB\-a\fR|\fB\-\-all\-blocks\fR]
--- 38,71 ----
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .nr rF 0
! .if \n(.g .if rF .nr rF 1
! .if (\n(rF:(\n(.g==0)) \{\
! .    if \nF \{\
! .        de IX
! .        tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .        if !\nF==2 \{\
! .            nr % 0
! .            nr F 2
! .        \}
  .    \}
  .\}
+ .rr rF
  .\"
! .\" Required to disable full justification in groff 1.23.0.
! .if n .ds AD l
  .\" ========================================================================
  .\"
  .IX Title "GCOV 1"
! .TH GCOV 1 2026-06-12 gcc-15.3.0 GNU
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH NAME
  gcov \- coverage testing tool
! .SH SYNOPSIS
  .IX Header "SYNOPSIS"
  gcov [\fB\-v\fR|\fB\-\-version\fR] [\fB\-h\fR|\fB\-\-help\fR]
       [\fB\-a\fR|\fB\-\-all\-blocks\fR]
*************** gcov [\fB\-v\fR|\fB\-\-version\fR] [\fB\
*** 166,174 ****
       [\fB\-u\fR|\fB\-\-unconditional\-branches\fR]
       [\fB\-x\fR|\fB\-\-hash\-filenames\fR]
       \fIfiles\fR
! .SH "DESCRIPTION"
  .IX Header "DESCRIPTION"
! \&\fBgcov\fR is a test coverage program.  Use it in concert with \s-1GCC\s0
  to analyze your programs to help create more efficient, faster running
  code and to discover untested parts of your program.  You can use
  \&\fBgcov\fR as a profiling tool to help discover where your
--- 95,103 ----
       [\fB\-u\fR|\fB\-\-unconditional\-branches\fR]
       [\fB\-x\fR|\fB\-\-hash\-filenames\fR]
       \fIfiles\fR
! .SH DESCRIPTION
  .IX Header "DESCRIPTION"
! \&\fBgcov\fR is a test coverage program.  Use it in concert with GCC
  to analyze your programs to help create more efficient, faster running
  code and to discover untested parts of your program.  You can use
  \&\fBgcov\fR as a profiling tool to help discover where your
*************** optimization efforts will best affect yo
*** 177,190 ****
  assess which parts of your code use the greatest amount of computing
  time.
  .PP
! Profiling tools help you analyze your code's performance.  Using a
  profiler such as \fBgcov\fR or \fBgprof\fR, you can find out some
  basic performance statistics, such as:
! .IP "*" 4
  how often each line of code executes
! .IP "*" 4
  what lines of code are actually executed
! .IP "*" 4
  how much computing time each section of code uses
  .PP
  Once you know these things about how your code works when compiled, you
--- 106,119 ----
  assess which parts of your code use the greatest amount of computing
  time.
  .PP
! Profiling tools help you analyze your code\*(Aqs performance.  Using a
  profiler such as \fBgcov\fR or \fBgprof\fR, you can find out some
  basic performance statistics, such as:
! .IP * 4
  how often each line of code executes
! .IP * 4
  what lines of code are actually executed
! .IP * 4
  how much computing time each section of code uses
  .PP
  Once you know these things about how your code works when compiled, you
*************** final product.
*** 202,208 ****
  You should compile your code without optimization if you plan to use
  \&\fBgcov\fR because the optimization, by combining some lines of code
  into one function, may not give you as much information as you need to
! look for `hot spots' where the code is using a great deal of computer
  time.  Likewise, because \fBgcov\fR accumulates statistics by line (at
  the lowest resolution), it works best with a programming style that
  places only one statement on each line.  If you use complicated macros
--- 131,137 ----
  You should compile your code without optimization if you plan to use
  \&\fBgcov\fR because the optimization, by combining some lines of code
  into one function, may not give you as much information as you need to
! look for \`hot spots\*(Aq where the code is using a great deal of computer
  time.  Likewise, because \fBgcov\fR accumulates statistics by line (at
  the lowest resolution), it works best with a programming style that
  places only one statement on each line.  If you use complicated macros
*************** less helpful\-\-\-they only report on th
*** 211,259 ****
  appears.  If your complex macros behave like functions, you can replace
  them with inline functions to solve this problem.
  .PP
! \&\fBgcov\fR creates a logfile called \fI\fIsourcefile\fI.gcov\fR which
! indicates how many times each line of a source file \fI\fIsourcefile\fI.c\fR
  has executed.  You can use these logfiles along with \fBgprof\fR to aid
! in fine-tuning the performance of your programs.  \fBgprof\fR gives
  timing information you can use along with the information you get from
  \&\fBgcov\fR.
  .PP
! \&\fBgcov\fR works only on code compiled with \s-1GCC.\s0  It is not
  compatible with any other profiling or test coverage mechanism.
! .SH "OPTIONS"
  .IX Header "OPTIONS"
! .IP "\fB\-a\fR" 4
  .IX Item "-a"
  .PD 0
! .IP "\fB\-\-all\-blocks\fR" 4
  .IX Item "--all-blocks"
  .PD
  Write individual execution counts for every basic block.  Normally gcov
  outputs execution counts only for the main blocks of a line.  With this
  option you can determine if blocks within a single line are not being
  executed.
! .IP "\fB\-b\fR" 4
  .IX Item "-b"
  .PD 0
! .IP "\fB\-\-branch\-probabilities\fR" 4
  .IX Item "--branch-probabilities"
  .PD
  Write branch frequencies to the output file, and write branch summary
  info to the standard output.  This option allows you to see how often
  each branch in your program was taken.  Unconditional branches will not
  be shown, unless the \fB\-u\fR option is given.
! .IP "\fB\-c\fR" 4
  .IX Item "-c"
  .PD 0
! .IP "\fB\-\-branch\-counts\fR" 4
  .IX Item "--branch-counts"
  .PD
  Write branch frequencies as the number of branches taken, rather than
  the percentage of branches taken.
! .IP "\fB\-g\fR" 4
  .IX Item "-g"
  .PD 0
! .IP "\fB\-\-conditions\fR" 4
  .IX Item "--conditions"
  .PD
  Write condition coverage to the output file, and write condition summary info
--- 140,188 ----
  appears.  If your complex macros behave like functions, you can replace
  them with inline functions to solve this problem.
  .PP
! \&\fBgcov\fR creates a logfile called \fIsourcefile.gcov\fR which
! indicates how many times each line of a source file \fIsourcefile.c\fR
  has executed.  You can use these logfiles along with \fBgprof\fR to aid
! in fine\-tuning the performance of your programs.  \fBgprof\fR gives
  timing information you can use along with the information you get from
  \&\fBgcov\fR.
  .PP
! \&\fBgcov\fR works only on code compiled with GCC.  It is not
  compatible with any other profiling or test coverage mechanism.
! .SH OPTIONS
  .IX Header "OPTIONS"
! .IP \fB\-a\fR 4
  .IX Item "-a"
  .PD 0
! .IP \fB\-\-all\-blocks\fR 4
  .IX Item "--all-blocks"
  .PD
  Write individual execution counts for every basic block.  Normally gcov
  outputs execution counts only for the main blocks of a line.  With this
  option you can determine if blocks within a single line are not being
  executed.
! .IP \fB\-b\fR 4
  .IX Item "-b"
  .PD 0
! .IP \fB\-\-branch\-probabilities\fR 4
  .IX Item "--branch-probabilities"
  .PD
  Write branch frequencies to the output file, and write branch summary
  info to the standard output.  This option allows you to see how often
  each branch in your program was taken.  Unconditional branches will not
  be shown, unless the \fB\-u\fR option is given.
! .IP \fB\-c\fR 4
  .IX Item "-c"
  .PD 0
! .IP \fB\-\-branch\-counts\fR 4
  .IX Item "--branch-counts"
  .PD
  Write branch frequencies as the number of branches taken, rather than
  the percentage of branches taken.
! .IP \fB\-g\fR 4
  .IX Item "-g"
  .PD 0
! .IP \fB\-\-conditions\fR 4
  .IX Item "--conditions"
  .PD
  Write condition coverage to the output file, and write condition summary info
*************** to the standard output.  This option all
*** 261,270 ****
  your program at least once had an independent effect on the outcome of the
  boolean expression (modified condition/decision coverage).  This requires you
  to compile the source with \fB\-fcondition\-coverage\fR.
! .IP "\fB\-e\fR" 4
  .IX Item "-e"
  .PD 0
! .IP "\fB\-\-prime\-paths\fR" 4
  .IX Item "--prime-paths"
  .PD
  Write path coverage to the output file, and write path summary info to
--- 190,199 ----
  your program at least once had an independent effect on the outcome of the
  boolean expression (modified condition/decision coverage).  This requires you
  to compile the source with \fB\-fcondition\-coverage\fR.
! .IP \fB\-e\fR 4
  .IX Item "-e"
  .PD 0
! .IP \fB\-\-prime\-paths\fR 4
  .IX Item "--prime-paths"
  .PD
  Write path coverage to the output file, and write path summary info to
*************** were taken at least once, and dense repo
*** 286,298 ****
  paths and how to cover them.  This mode is useful for automated
  reporting and progress tracking. \fItype\fR may be omitted, or one of:
  .RS 4
! .IP "*" 4
  \&\fIuncovered\fR
  \&\- Include the uncovered (not taken) paths.  This is the default.
! .IP "*" 4
  \&\fIcovered\fR
  \&\- Include the covered (taken) paths.
! .IP "*" 4
  \&\fIboth\fR
  \&\- Include all paths.  This is equivalent to using both \fIcovered\fR and
  \&\fIuncovered\fR.
--- 215,227 ----
  paths and how to cover them.  This mode is useful for automated
  reporting and progress tracking. \fItype\fR may be omitted, or one of:
  .RS 4
! .IP * 4
  \&\fIuncovered\fR
  \&\- Include the uncovered (not taken) paths.  This is the default.
! .IP * 4
  \&\fIcovered\fR
  \&\- Include the covered (taken) paths.
! .IP * 4
  \&\fIboth\fR
  \&\- Include all paths.  This is equivalent to using both \fIcovered\fR and
  \&\fIuncovered\fR.
*************** how to cover them.  This mode is useful
*** 321,333 ****
  interactions between sections of your program. \fItype\fR may be
  omitted, or one of:
  .RS 4
! .IP "*" 4
  \&\fIuncovered\fR
  \&\- Include the uncovered (not taken) paths.  This is the default.
! .IP "*" 4
  \&\fIcovered\fR
  \&\- Include the covered (taken) paths.
! .IP "*" 4
  \&\fIboth\fR
  \&\- Include all paths.  This is equivalent to using both \fIcovered\fR and
  \&\fIuncovered\fR.
--- 250,262 ----
  interactions between sections of your program. \fItype\fR may be
  omitted, or one of:
  .RS 4
! .IP * 4
  \&\fIuncovered\fR
  \&\- Include the uncovered (not taken) paths.  This is the default.
! .IP * 4
  \&\fIcovered\fR
  \&\- Include the covered (taken) paths.
! .IP * 4
  \&\fIboth\fR
  \&\- Include all paths.  This is equivalent to using both \fIcovered\fR and
  \&\fIuncovered\fR.
*************** This is an example of \fB\-\-prime\-path
*** 348,369 ****
  \&        BB 12:          17:  return 0;
  .Ve
  .Sp
! The first (\s-1BB\s0) column is the sequence of basic blocks (see \fB\-w\fR).
  The middle column (true/false) is the decision for that line.  The third
  column is the line number.  The fourth column is the line itself.  These
  lines must be run in this order to cover path 10.
  .RE
! .IP "\fB\-d\fR" 4
  .IX Item "-d"
  .PD 0
! .IP "\fB\-\-display\-progress\fR" 4
  .IX Item "--display-progress"
  .PD
  Display the progress on the standard output.
! .IP "\fB\-f\fR" 4
  .IX Item "-f"
  .PD 0
! .IP "\fB\-\-function\-summaries\fR" 4
  .IX Item "--function-summaries"
  .PD
  Output summaries for each function in addition to the file level summary.
--- 277,298 ----
  \&        BB 12:          17:  return 0;
  .Ve
  .Sp
! The first (BB) column is the sequence of basic blocks (see \fB\-w\fR).
  The middle column (true/false) is the decision for that line.  The third
  column is the line number.  The fourth column is the line itself.  These
  lines must be run in this order to cover path 10.
  .RE
! .IP \fB\-d\fR 4
  .IX Item "-d"
  .PD 0
! .IP \fB\-\-display\-progress\fR 4
  .IX Item "--display-progress"
  .PD
  Display the progress on the standard output.
! .IP \fB\-f\fR 4
  .IX Item "-f"
  .PD 0
! .IP \fB\-\-function\-summaries\fR 4
  .IX Item "--function-summaries"
  .PD
  Output summaries for each function in addition to the file level summary.
*************** expression \fIregex\fR.  This flag can b
*** 385,410 ****
  the last include/exclude applies.  By default \fBgcov\fR reports
  on all functions, and if \fB\-\-exclude\fR is used then functions
  matching it will be omitted.
! .IP "\fB\-h\fR" 4
  .IX Item "-h"
  .PD 0
! .IP "\fB\-\-help\fR" 4
  .IX Item "--help"
  .PD
  Display help about using \fBgcov\fR (on the standard output), and
  exit without doing any further processing.
! .IP "\fB\-j\fR" 4
  .IX Item "-j"
  .PD 0
! .IP "\fB\-\-json\-format\fR" 4
  .IX Item "--json-format"
  .PD
! Output gcov file in an easy-to-parse \s-1JSON\s0 intermediate format
! which does not require source code for generation.  The \s-1JSON\s0
  file is compressed with gzip compression algorithm
  and the files have \fI.gcov.json.gz\fR extension.
  .Sp
! Structure of the \s-1JSON\s0 is following:
  .Sp
  .Vb 7
  \&        {
--- 314,339 ----
  the last include/exclude applies.  By default \fBgcov\fR reports
  on all functions, and if \fB\-\-exclude\fR is used then functions
  matching it will be omitted.
! .IP \fB\-h\fR 4
  .IX Item "-h"
  .PD 0
! .IP \fB\-\-help\fR 4
  .IX Item "--help"
  .PD
  Display help about using \fBgcov\fR (on the standard output), and
  exit without doing any further processing.
! .IP \fB\-j\fR 4
  .IX Item "-j"
  .PD 0
! .IP \fB\-\-json\-format\fR 4
  .IX Item "--json-format"
  .PD
! Output gcov file in an easy\-to\-parse JSON intermediate format
! which does not require source code for generation.  The JSON
  file is compressed with gzip compression algorithm
  and the files have \fI.gcov.json.gz\fR extension.
  .Sp
! Structure of the JSON is following:
  .Sp
  .Vb 7
  \&        {
*************** Structure of the \s-1JSON\s0 is followin
*** 418,440 ****
  .Sp
  Fields of the root element have following semantics:
  .RS 4
! .IP "*" 4
  \&\fIcurrent_working_directory\fR: working directory where
  a compilation unit was compiled
! .IP "*" 4
! \&\fIdata_file\fR: name of the data file (\s-1GCDA\s0)
! .IP "*" 4
  \&\fIformat_version\fR: semantic version of the format
  .Sp
  Changes in version \fI2\fR:
  .RS 4
! .IP "*" 4
  \&\fIcalls\fR: information about function calls is added
  .RE
  .RS 4
  .RE
! .IP "*" 4
! \&\fIgcc_version\fR: version of the \s-1GCC\s0 compiler
  .RE
  .RS 4
  .Sp
--- 347,369 ----
  .Sp
  Fields of the root element have following semantics:
  .RS 4
! .IP * 4
  \&\fIcurrent_working_directory\fR: working directory where
  a compilation unit was compiled
! .IP * 4
! \&\fIdata_file\fR: name of the data file (GCDA)
! .IP * 4
  \&\fIformat_version\fR: semantic version of the format
  .Sp
  Changes in version \fI2\fR:
  .RS 4
! .IP * 4
  \&\fIcalls\fR: information about function calls is added
  .RE
  .RS 4
  .RE
! .IP * 4
! \&\fIgcc_version\fR: version of the GCC compiler
  .RE
  .RS 4
  .Sp
*************** Each \fIfile\fR has the following form:
*** 449,455 ****
  .Ve
  .Sp
  Fields of the \fIfile\fR element have following semantics:
! .IP "*" 4
  \&\fIfile_name\fR: name of the source file
  .RE
  .RS 4
--- 378,384 ----
  .Ve
  .Sp
  Fields of the \fIfile\fR element have following semantics:
! .IP * 4
  \&\fIfile_name\fR: name of the source file
  .RE
  .RS 4
*************** Each \fIfunction\fR has the following fo
*** 471,493 ****
  .Ve
  .Sp
  Fields of the \fIfunction\fR element have following semantics:
! .IP "*" 4
  \&\fIblocks\fR: number of blocks that are in the function
! .IP "*" 4
  \&\fIblocks_executed\fR: number of executed blocks of the function
! .IP "*" 4
  \&\fIdemangled_name\fR: demangled name of the function
! .IP "*" 4
  \&\fIend_column\fR: column in the source file where the function ends
! .IP "*" 4
  \&\fIend_line\fR: line in the source file where the function ends
! .IP "*" 4
  \&\fIexecution_count\fR: number of executions of the function
! .IP "*" 4
  \&\fIname\fR: name of the function
! .IP "*" 4
  \&\fIstart_column\fR: column in the source file where the function begins
! .IP "*" 4
  \&\fIstart_line\fR: line in the source file where the function begins
  .RE
  .RS 4
--- 400,422 ----
  .Ve
  .Sp
  Fields of the \fIfunction\fR element have following semantics:
! .IP * 4
  \&\fIblocks\fR: number of blocks that are in the function
! .IP * 4
  \&\fIblocks_executed\fR: number of executed blocks of the function
! .IP * 4
  \&\fIdemangled_name\fR: demangled name of the function
! .IP * 4
  \&\fIend_column\fR: column in the source file where the function ends
! .IP * 4
  \&\fIend_line\fR: line in the source file where the function ends
! .IP * 4
  \&\fIexecution_count\fR: number of executions of the function
! .IP * 4
  \&\fIname\fR: name of the function
! .IP * 4
  \&\fIstart_column\fR: column in the source file where the function begins
! .IP * 4
  \&\fIstart_line\fR: line in the source file where the function begins
  .RE
  .RS 4
*************** Each \fIline\fR has the following form:
*** 514,529 ****
  .Sp
  Branches and calls are present only with \fI\-b\fR option.
  Fields of the \fIline\fR element have following semantics:
! .IP "*" 4
  \&\fIblock_ids\fR: IDs of basic blocks that belong to the line
! .IP "*" 4
  \&\fIcount\fR: number of executions of the line
! .IP "*" 4
  \&\fIline_number\fR: line number
! .IP "*" 4
  \&\fIunexecuted_block\fR: flag whether the line contains an unexecuted block
  (not all statements on the line are executed)
! .IP "*" 4
  \&\fIfunction_name\fR: a name of a function this \fIline\fR belongs to
  (for a line with an inlined statements can be not set)
  .RE
--- 443,458 ----
  .Sp
  Branches and calls are present only with \fI\-b\fR option.
  Fields of the \fIline\fR element have following semantics:
! .IP * 4
  \&\fIblock_ids\fR: IDs of basic blocks that belong to the line
! .IP * 4
  \&\fIcount\fR: number of executions of the line
! .IP * 4
  \&\fIline_number\fR: line number
! .IP * 4
  \&\fIunexecuted_block\fR: flag whether the line contains an unexecuted block
  (not all statements on the line are executed)
! .IP * 4
  \&\fIfunction_name\fR: a name of a function this \fIline\fR belongs to
  (for a line with an inlined statements can be not set)
  .RE
*************** Each \fIbranch\fR has the following form
*** 542,557 ****
  .Ve
  .Sp
  Fields of the \fIbranch\fR element have following semantics:
! .IP "*" 4
  \&\fIcount\fR: number of executions of the branch
! .IP "*" 4
  \&\fIfallthrough\fR: true when the branch is a fall through branch
! .IP "*" 4
  \&\fIthrow\fR: true when the branch is an exceptional branch
! .IP "*" 4
! \&\fIisource_block_id\fR: \s-1ID\s0 of the basic block where this branch happens
! .IP "*" 4
! \&\fIdestination_block_id\fR: \s-1ID\s0 of the basic block this branch jumps to
  .RE
  .RS 4
  .Sp
--- 471,486 ----
  .Ve
  .Sp
  Fields of the \fIbranch\fR element have following semantics:
! .IP * 4
  \&\fIcount\fR: number of executions of the branch
! .IP * 4
  \&\fIfallthrough\fR: true when the branch is a fall through branch
! .IP * 4
  \&\fIthrow\fR: true when the branch is an exceptional branch
! .IP * 4
! \&\fIisource_block_id\fR: ID of the basic block where this branch happens
! .IP * 4
! \&\fIdestination_block_id\fR: ID of the basic block this branch jumps to
  .RE
  .RS 4
  .Sp
*************** Each \fIcall\fR has the following form:
*** 566,578 ****
  .Ve
  .Sp
  Fields of the \fIcall\fR element have following semantics:
! .IP "*" 4
  \&\fIreturned\fR: number of times a function call returned (call count is equal
  to \fIline::count\fR)
! .IP "*" 4
! \&\fIisource_block_id\fR: \s-1ID\s0 of the basic block where this call happens
! .IP "*" 4
! \&\fIdestination_block_id\fR: \s-1ID\s0 of the basic block this calls continues after return
  .RE
  .RS 4
  .Sp
--- 495,507 ----
  .Ve
  .Sp
  Fields of the \fIcall\fR element have following semantics:
! .IP * 4
  \&\fIreturned\fR: number of times a function call returned (call count is equal
  to \fIline::count\fR)
! .IP * 4
! \&\fIisource_block_id\fR: ID of the basic block where this call happens
! .IP * 4
! \&\fIdestination_block_id\fR: ID of the basic block this calls continues after return
  .RE
  .RS 4
  .Sp
*************** Each \fIcondition\fR has the following f
*** 588,624 ****
  .Ve
  .Sp
  Fields of the \fIcondition\fR element have following semantics:
! .IP "*" 4
  \&\fIcount\fR: number of condition outcomes in this expression
! .IP "*" 4
  \&\fIcovered\fR: number of covered condition outcomes in this expression
! .IP "*" 4
  \&\fInot_covered_true\fR: terms, by index, not seen as true in this expression
! .IP "*" 4
  \&\fInot_covered_false\fR: terms, by index, not seen as false in this expression
  .RE
  .RS 4
  .RE
! .IP "\fB\-H\fR" 4
  .IX Item "-H"
  .PD 0
! .IP "\fB\-\-human\-readable\fR" 4
  .IX Item "--human-readable"
  .PD
  Write counts in human readable format (like 24.6k).
! .IP "\fB\-k\fR" 4
  .IX Item "-k"
  .PD 0
! .IP "\fB\-\-use\-colors\fR" 4
  .IX Item "--use-colors"
  .PD
  Use colors for lines of code that have zero coverage.  We use red color for
! non-exceptional lines and cyan for exceptional.  Same colors are used for
  basic blocks with \fB\-a\fR option.
! .IP "\fB\-l\fR" 4
  .IX Item "-l"
  .PD 0
! .IP "\fB\-\-long\-file\-names\fR" 4
  .IX Item "--long-file-names"
  .PD
  Create long file names for included source files.  For example, if the
--- 517,553 ----
  .Ve
  .Sp
  Fields of the \fIcondition\fR element have following semantics:
! .IP * 4
  \&\fIcount\fR: number of condition outcomes in this expression
! .IP * 4
  \&\fIcovered\fR: number of covered condition outcomes in this expression
! .IP * 4
  \&\fInot_covered_true\fR: terms, by index, not seen as true in this expression
! .IP * 4
  \&\fInot_covered_false\fR: terms, by index, not seen as false in this expression
  .RE
  .RS 4
  .RE
! .IP \fB\-H\fR 4
  .IX Item "-H"
  .PD 0
! .IP \fB\-\-human\-readable\fR 4
  .IX Item "--human-readable"
  .PD
  Write counts in human readable format (like 24.6k).
! .IP \fB\-k\fR 4
  .IX Item "-k"
  .PD 0
! .IP \fB\-\-use\-colors\fR 4
  .IX Item "--use-colors"
  .PD
  Use colors for lines of code that have zero coverage.  We use red color for
! non\-exceptional lines and cyan for exceptional.  Same colors are used for
  basic blocks with \fB\-a\fR option.
! .IP \fB\-l\fR 4
  .IX Item "-l"
  .PD 0
! .IP \fB\-\-long\-file\-names\fR 4
  .IX Item "--long-file-names"
  .PD
  Create long file names for included source files.  For example, if the
*************** produce an output file called \fIa.c##x.
*** 629,655 ****
  multiple source files and you want to see the individual
  contributions.  If you use the \fB\-p\fR option, both the including
  and included file names will be complete path names.
! .IP "\fB\-m\fR" 4
  .IX Item "-m"
  .PD 0
! .IP "\fB\-\-demangled\-names\fR" 4
  .IX Item "--demangled-names"
  .PD
  Display demangled function names in output. The default is to show
  mangled function names.
! .IP "\fB\-M\fR" 4
  .IX Item "-M"
  .PD 0
! .IP "\fB\-\-filter\-on\-demangled\fR" 4
  .IX Item "--filter-on-demangled"
  .PD
  Make \fB\-\-include\fR and \fB\-\-exclude\fR match demangled names.
  This does only affects the matching and does not imply
  \&\fB\-\-demangled\-names\fR, but it can safely be combined with it.
! .IP "\fB\-n\fR" 4
  .IX Item "-n"
  .PD 0
! .IP "\fB\-\-no\-output\fR" 4
  .IX Item "--no-output"
  .PD
  Do not create the \fBgcov\fR output file.
--- 558,584 ----
  multiple source files and you want to see the individual
  contributions.  If you use the \fB\-p\fR option, both the including
  and included file names will be complete path names.
! .IP \fB\-m\fR 4
  .IX Item "-m"
  .PD 0
! .IP \fB\-\-demangled\-names\fR 4
  .IX Item "--demangled-names"
  .PD
  Display demangled function names in output. The default is to show
  mangled function names.
! .IP \fB\-M\fR 4
  .IX Item "-M"
  .PD 0
! .IP \fB\-\-filter\-on\-demangled\fR 4
  .IX Item "--filter-on-demangled"
  .PD
  Make \fB\-\-include\fR and \fB\-\-exclude\fR match demangled names.
  This does only affects the matching and does not imply
  \&\fB\-\-demangled\-names\fR, but it can safely be combined with it.
! .IP \fB\-n\fR 4
  .IX Item "-n"
  .PD 0
! .IP \fB\-\-no\-output\fR 4
  .IX Item "--no-output"
  .PD
  Do not create the \fBgcov\fR output file.
*************** object path name.  The \fI.gcno\fR, and
*** 667,676 ****
  is specified, the data files are in that directory and named after the
  input file name, without its extension.  If a file is specified here,
  the data files are named after that file, without its extension.
! .IP "\fB\-p\fR" 4
  .IX Item "-p"
  .PD 0
! .IP "\fB\-\-preserve\-paths\fR" 4
  .IX Item "--preserve-paths"
  .PD
  Preserve complete path information in the names of generated
--- 596,605 ----
  is specified, the data files are in that directory and named after the
  input file name, without its extension.  If a file is specified here,
  the data files are named after that file, without its extension.
! .IP \fB\-p\fR 4
  .IX Item "-p"
  .PD 0
! .IP \fB\-\-preserve\-paths\fR 4
  .IX Item "--preserve-paths"
  .PD
  Preserve complete path information in the names of generated
*************** translated to \fB#\fR characters, \fI.\f
*** 680,697 ****
  removed and unremoveable \fI..\fR
  components renamed to \fB^\fR.  This is useful if sourcefiles are in several
  different directories.
! .IP "\fB\-q\fR" 4
  .IX Item "-q"
  .PD 0
! .IP "\fB\-\-use\-hotness\-colors\fR" 4
  .IX Item "--use-hotness-colors"
  .PD
! Emit perf-like colored output for hot lines.  Legend of the color scale
  is printed at the very beginning of the output file.
! .IP "\fB\-r\fR" 4
  .IX Item "-r"
  .PD 0
! .IP "\fB\-\-relative\-only\fR" 4
  .IX Item "--relative-only"
  .PD
  Only output information about source files with a relative pathname
--- 609,626 ----
  removed and unremoveable \fI..\fR
  components renamed to \fB^\fR.  This is useful if sourcefiles are in several
  different directories.
! .IP \fB\-q\fR 4
  .IX Item "-q"
  .PD 0
! .IP \fB\-\-use\-hotness\-colors\fR 4
  .IX Item "--use-hotness-colors"
  .PD
! Emit perf\-like colored output for hot lines.  Legend of the color scale
  is printed at the very beginning of the output file.
! .IP \fB\-r\fR 4
  .IX Item "-r"
  .PD 0
! .IP \fB\-\-relative\-only\fR 4
  .IX Item "--relative-only"
  .PD
  Only output information about source files with a relative pathname
*************** coverage files.  This option is useful w
*** 709,756 ****
  directory, and the pathname to the source directory is not wanted when
  determining the output file names.  Note that this prefix detection is
  applied before determining whether the source file is absolute.
! .IP "\fB\-t\fR" 4
  .IX Item "-t"
  .PD 0
! .IP "\fB\-\-stdout\fR" 4
  .IX Item "--stdout"
  .PD
  Output to standard output instead of output files.
! .IP "\fB\-u\fR" 4
  .IX Item "-u"
  .PD 0
! .IP "\fB\-\-unconditional\-branches\fR" 4
  .IX Item "--unconditional-branches"
  .PD
  When branch probabilities are given, include those of unconditional branches.
  Unconditional branches are normally not interesting.
! .IP "\fB\-v\fR" 4
  .IX Item "-v"
  .PD 0
! .IP "\fB\-\-version\fR" 4
  .IX Item "--version"
  .PD
  Display the \fBgcov\fR version number (on the standard output),
  and exit without doing any further processing.
! .IP "\fB\-w\fR" 4
  .IX Item "-w"
  .PD 0
! .IP "\fB\-\-verbose\fR" 4
  .IX Item "--verbose"
  .PD
  Print verbose informations related to basic blocks and arcs.
! .IP "\fB\-x\fR" 4
  .IX Item "-x"
  .PD 0
! .IP "\fB\-\-hash\-filenames\fR" 4
  .IX Item "--hash-filenames"
  .PD
  When using \fI\-\-preserve\-paths\fR,
  gcov uses the full pathname of the source files to create
  an output filename.  This can lead to long filenames that can overflow
  filesystem limits.  This option creates names of the form
! \&\fI\fIsource-file\fI##\fImd5\fI.gcov\fR,
! where the \fIsource-file\fR component is the final filename part and
  the \fImd5\fR component is calculated from the full mangled name that
  would have been used otherwise.  The option is an alternative
  to the \fI\-\-preserve\-paths\fR on systems which have a filesystem limit.
--- 638,685 ----
  directory, and the pathname to the source directory is not wanted when
  determining the output file names.  Note that this prefix detection is
  applied before determining whether the source file is absolute.
! .IP \fB\-t\fR 4
  .IX Item "-t"
  .PD 0
! .IP \fB\-\-stdout\fR 4
  .IX Item "--stdout"
  .PD
  Output to standard output instead of output files.
! .IP \fB\-u\fR 4
  .IX Item "-u"
  .PD 0
! .IP \fB\-\-unconditional\-branches\fR 4
  .IX Item "--unconditional-branches"
  .PD
  When branch probabilities are given, include those of unconditional branches.
  Unconditional branches are normally not interesting.
! .IP \fB\-v\fR 4
  .IX Item "-v"
  .PD 0
! .IP \fB\-\-version\fR 4
  .IX Item "--version"
  .PD
  Display the \fBgcov\fR version number (on the standard output),
  and exit without doing any further processing.
! .IP \fB\-w\fR 4
  .IX Item "-w"
  .PD 0
! .IP \fB\-\-verbose\fR 4
  .IX Item "--verbose"
  .PD
  Print verbose informations related to basic blocks and arcs.
! .IP \fB\-x\fR 4
  .IX Item "-x"
  .PD 0
! .IP \fB\-\-hash\-filenames\fR 4
  .IX Item "--hash-filenames"
  .PD
  When using \fI\-\-preserve\-paths\fR,
  gcov uses the full pathname of the source files to create
  an output filename.  This can lead to long filenames that can overflow
  filesystem limits.  This option creates names of the form
! \&\fIsource\-file##md5.gcov\fR,
! where the \fIsource\-file\fR component is the final filename part and
  the \fImd5\fR component is calculated from the full mangled name that
  would have been used otherwise.  The option is an alternative
  to the \fI\-\-preserve\-paths\fR on systems which have a filesystem limit.
*************** to the \fI\-\-preserve\-paths\fR on syst
*** 758,764 ****
  \&\fBgcov\fR should be run with the current directory the same as that
  when you invoked the compiler.  Otherwise it will not be able to locate
  the source files.  \fBgcov\fR produces files called
! \&\fI\fImangledname\fI.gcov\fR in the current directory.  These contain
  the coverage information of the source file they correspond to.
  One \fI.gcov\fR file is produced for each source (or header) file
  containing code,
--- 687,693 ----
  \&\fBgcov\fR should be run with the current directory the same as that
  when you invoked the compiler.  Otherwise it will not be able to locate
  the source files.  \fBgcov\fR produces files called
! \&\fImangledname.gcov\fR in the current directory.  These contain
  the coverage information of the source file they correspond to.
  One \fI.gcov\fR file is produced for each source (or header) file
  containing code,
*************** Additional block information may succeed
*** 782,797 ****
  command line option.  The \fIexecution_count\fR is \fB\-\fR for lines
  containing no code.  Unexecuted lines are marked \fB#####\fR or
  \&\fB=====\fR, depending on whether they are reachable by
! non-exceptional paths or only exceptional paths such as \*(C+ exception
  handlers, respectively. Given the \fB\-a\fR option, unexecuted blocks are
  marked \fB$$$$$\fR or \fB%%%%%\fR, depending on whether a basic block
! is reachable via non-exceptional or exceptional paths.
  Executed basic blocks having a statement with zero \fIexecution_count\fR
  end with \fB*\fR character and are colored with magenta color with
  the \fB\-k\fR option.  This functionality is not supported in Ada.
  .PP
! Note that \s-1GCC\s0 can completely remove the bodies of functions that are
! not needed \*(-- for instance if they are inlined everywhere.  Such functions
  are marked with \fB\-\fR, which can be confusing.
  Use the \fB\-fkeep\-inline\-functions\fR and \fB\-fkeep\-static\-functions\fR
  options to retain these functions and
--- 711,726 ----
  command line option.  The \fIexecution_count\fR is \fB\-\fR for lines
  containing no code.  Unexecuted lines are marked \fB#####\fR or
  \&\fB=====\fR, depending on whether they are reachable by
! non\-exceptional paths or only exceptional paths such as C++ exception
  handlers, respectively. Given the \fB\-a\fR option, unexecuted blocks are
  marked \fB$$$$$\fR or \fB%%%%%\fR, depending on whether a basic block
! is reachable via non\-exceptional or exceptional paths.
  Executed basic blocks having a statement with zero \fIexecution_count\fR
  end with \fB*\fR character and are colored with magenta color with
  the \fB\-k\fR option.  This functionality is not supported in Ada.
  .PP
! Note that GCC can completely remove the bodies of functions that are
! not needed \-\- for instance if they are inlined everywhere.  Such functions
  are marked with \fB\-\fR, which can be confusing.
  Use the \fB\-fkeep\-inline\-functions\fR and \fB\-fkeep\-static\-functions\fR
  options to retain these functions and
*************** enough for machine parsing too.
*** 820,829 ****
  When printing percentages, 0% and 100% are only printed when the values
  are \fIexactly\fR 0% and 100% respectively.  Other values which would
  conventionally be rounded to 0% or 100% are instead printed as the
! nearest non-boundary value.
  .PP
  When using \fBgcov\fR, you must first compile your program
! with a special \s-1GCC\s0 option \fB\-\-coverage\fR.
  This tells the compiler to generate additional information needed by
  gcov (basically a flow graph of the program) and also includes
  additional code in the object files for generating the extra profiling
--- 749,758 ----
  When printing percentages, 0% and 100% are only printed when the values
  are \fIexactly\fR 0% and 100% respectively.  Other values which would
  conventionally be rounded to 0% or 100% are instead printed as the
! nearest non\-boundary value.
  .PP
  When using \fBgcov\fR, you must first compile your program
! with a special GCC option \fB\-\-coverage\fR.
  This tells the compiler to generate additional information needed by
  gcov (basically a flow graph of the program) and also includes
  additional code in the object files for generating the extra profiling
*************** Running the program will cause profile o
*** 834,840 ****
  source file compiled with \fB\-fprofile\-arcs\fR, an accompanying
  \&\fI.gcda\fR file will be placed in the object file directory.
  .PP
! Running \fBgcov\fR with your program's source file names as arguments
  will now produce a listing of the code along with frequency of execution
  for each line.  For example, if your program is called \fItmp.cpp\fR, this
  is what you see when you use the basic \fBgcov\fR facility:
--- 763,769 ----
  source file compiled with \fB\-fprofile\-arcs\fR, an accompanying
  \&\fI.gcda\fR file will be placed in the object file directory.
  .PP
! Running \fBgcov\fR with your program\*(Aqs source file names as arguments
  will now produce a listing of the code along with frequency of execution
  for each line.  For example, if your program is called \fItmp.cpp\fR, this
  is what you see when you use the basic \fBgcov\fR facility:
*************** counts, and the output looks like this:
*** 993,1000 ****
  \&                \-:   37:}
  .Ve
  .PP
! In this mode, each basic block is only shown on one line \*(-- the last
! line of the block.  A multi-line block will only contribute to the
  execution count of that last line, and other lines will not be shown
  to contain code, unless previous blocks end on those lines.
  The total execution count of a line is shown and subsequent lines show
--- 922,929 ----
  \&                \-:   37:}
  .Ve
  .PP
! In this mode, each basic block is only shown on one line \-\- the last
! line of the block.  A multi\-line block will only contribute to the
  execution count of that last line, and other lines will not be shown
  to contain code, unless previous blocks end on those lines.
  The total execution count of a line is shown and subsequent lines show
*************** the execution counts for individual bloc
*** 1002,1008 ****
  block, the branch and call counts of the block will be shown, if the
  \&\fB\-b\fR option is given.
  .PP
! Because of the way \s-1GCC\s0 instruments calls, a call count can be shown
  after a line with no individual blocks.
  As you can see, line 33 contains a basic block that was not executed.
  .PP
--- 931,937 ----
  block, the branch and call counts of the block will be shown, if the
  \&\fB\-b\fR option is given.
  .PP
! Because of the way GCC instruments calls, a call count can be shown
  after a line with no individual blocks.
  As you can see, line 33 contains a basic block that was not executed.
  .PP
*************** When you use the \fB\-b\fR option, your
*** 1096,1102 ****
  .PP
  For each function, a line is printed showing how many times the function
  is called, how many times it returns and what percentage of the
! function's blocks were executed.
  .PP
  For each basic block, a line is printed after the last line of the basic
  block describing the branch or call that ends the basic block.  There can
--- 1025,1031 ----
  .PP
  For each function, a line is printed showing how many times the function
  is called, how many times it returns and what percentage of the
! function\*(Aqs blocks were executed.
  .PP
  For each basic block, a line is printed after the last line of the basic
  block describing the branch or call that ends the basic block.  There can
*************** on the source line.
*** 1110,1116 ****
  For a branch, if it was executed at least once, then a percentage
  indicating the number of times the branch was taken divided by the
  number of times the branch was executed will be printed.  Otherwise, the
! message \*(L"never executed\*(R" is printed.
  .PP
  For a call, if it was executed at least once, then a percentage
  indicating the number of times the call returned divided by the number
--- 1039,1045 ----
  For a branch, if it was executed at least once, then a percentage
  indicating the number of times the branch was taken divided by the
  number of times the branch was executed will be printed.  Otherwise, the
! message "never executed" is printed.
  .PP
  For a call, if it was executed at least once, then a percentage
  indicating the number of times the call returned divided by the number
*************** When you use the \fB\-g\fR option, your
*** 1156,1170 ****
  For every condition the number of taken and total outcomes are
  printed, and if there are uncovered outcomes a line will be printed
  for each condition showing the uncovered outcome in parentheses.
! Conditions are identified by their index \*(-- index 0 is the left-most
  condition.  In \f(CW\*(C`a || (b && c)\*(C'\fR, \fIa\fR is condition 0, \fIb\fR
  condition 1, and \fIc\fR condition 2.
  .PP
  An outcome is considered covered if it has an independent effect on
! the decision, also known as masking \s-1MC/DC\s0 (Modified Condition/Decision
  Coverage).  In this example the decision evaluates to true and \fIa\fR
  is evaluated, but not covered.  This is because \fIa\fR cannot affect
! the decision independently \*(-- both \fIa\fR and \fIb\fR must change
  value for the decision to change.
  .PP
  .Vb 10
--- 1085,1099 ----
  For every condition the number of taken and total outcomes are
  printed, and if there are uncovered outcomes a line will be printed
  for each condition showing the uncovered outcome in parentheses.
! Conditions are identified by their index \-\- index 0 is the left\-most
  condition.  In \f(CW\*(C`a || (b && c)\*(C'\fR, \fIa\fR is condition 0, \fIb\fR
  condition 1, and \fIc\fR condition 2.
  .PP
  An outcome is considered covered if it has an independent effect on
! the decision, also known as masking MC/DC (Modified Condition/Decision
  Coverage).  In this example the decision evaluates to true and \fIa\fR
  is evaluated, but not covered.  This is because \fIa\fR cannot affect
! the decision independently \-\- both \fIa\fR and \fIb\fR must change
  value for the decision to change.
  .PP
  .Vb 10
*************** and testing how different inputs change
*** 1247,1253 ****
  .Ve
  .PP
  In this mode, gcov will print details on the missing paths.  The first
! column lists the sequence of basic blocks (\s-1BB\s0).  The second column is
  the decision to take at that line if there is one.  The final columns
  are the line number and the line itself.  This is useful for
  understanding the paths, in particular those that are hard to cover or
--- 1176,1182 ----
  .Ve
  .PP
  In this mode, gcov will print details on the missing paths.  The first
! column lists the sequence of basic blocks (BB).  The second column is
  the decision to take at that line if there is one.  The final columns
  are the line number and the line itself.  This is useful for
  understanding the paths, in particular those that are hard to cover or
*************** number of times each line in the source
*** 1295,1307 ****
  the results of the previous run(s).  This is potentially useful in
  several ways.  For example, it could be used to accumulate data over a
  number of program runs as part of a test verification suite, or to
! provide more accurate long-term information over a large number of
  program runs.
  .PP
  The data in the \fI.gcda\fR files is saved immediately before the program
  exits.  For each source file compiled with \fB\-fprofile\-arcs\fR, the
  profiling code first attempts to read in an existing \fI.gcda\fR file; if
! the file doesn't match the executable (differing number of basic block
  counts) it will ignore the contents of the file.  It then adds in the
  new execution counts and finally writes the data to the file.
  .PP
--- 1224,1236 ----
  the results of the previous run(s).  This is potentially useful in
  several ways.  For example, it could be used to accumulate data over a
  number of program runs as part of a test verification suite, or to
! provide more accurate long\-term information over a large number of
  program runs.
  .PP
  The data in the \fI.gcda\fR files is saved immediately before the program
  exits.  For each source file compiled with \fB\-fprofile\-arcs\fR, the
  profiling code first attempts to read in an existing \fI.gcda\fR file; if
! the file doesn\*(Aqt match the executable (differing number of basic block
  counts) it will ignore the contents of the file.  It then adds in the
  new execution counts and finally writes the data to the file.
  .PP
*************** omitting the \f(CW\*(C`Foo\*(C'\fR const
*** 1390,1401 ****
  \&                1:   35:    printf ("Success\en");
  \&                1:   36:  return 0;
  .Ve
! .SS "Using \fBgcov\fP with \s-1GCC\s0 Optimization"
  .IX Subsection "Using gcov with GCC Optimization"
  If you plan to use \fBgcov\fR to help optimize your code, you must
! first compile your program with a special \s-1GCC\s0 option
  \&\fB\-\-coverage\fR.  Aside from that, you can use any
! other \s-1GCC\s0 options; but if you want to prove that every single line
  in your program was executed, you should not compile with optimization
  at the same time.  On some machines the optimizer can eliminate some
  simple code lines by combining them with other lines.  For example, code
--- 1319,1330 ----
  \&                1:   35:    printf ("Success\en");
  \&                1:   36:  return 0;
  .Ve
! .SS "Using \fBgcov\fP with GCC Optimization"
  .IX Subsection "Using gcov with GCC Optimization"
  If you plan to use \fBgcov\fR to help optimize your code, you must
! first compile your program with a special GCC option
  \&\fB\-\-coverage\fR.  Aside from that, you can use any
! other GCC options; but if you want to prove that every single line
  in your program was executed, you should not compile with optimization
  at the same time.  On some machines the optimizer can eliminate some
  simple code lines by combining them with other lines.  For example, code
*************** like this:
*** 1410,1416 ****
  .PP
  can be compiled into one instruction on some machines.  In this case,
  there is no way for \fBgcov\fR to calculate separate execution counts
! for each line because there isn't separate code for each line.  Hence
  the \fBgcov\fR output looks like this if you compiled the program with
  optimization:
  .PP
--- 1339,1345 ----
  .PP
  can be compiled into one instruction on some machines.  In this case,
  there is no way for \fBgcov\fR to calculate separate execution counts
! for each line because there isn\*(Aqt separate code for each line.  Hence
  the \fBgcov\fR output looks like this if you compiled the program with
  optimization:
  .PP
*************** now be calculable at compile time in som
*** 1448,1456 ****
  coverage of all the uses of the inline function will be shown for the
  same source lines, the line counts themselves might seem inconsistent.
  .PP
! Long-running applications can use the \f(CW\*(C`_\|_gcov_reset\*(C'\fR and \f(CW\*(C`_\|_gcov_dump\*(C'\fR
  facilities to restrict profile collection to the program region of
! interest. Calling \f(CW\*(C`_\|_gcov_reset(void)\*(C'\fR will clear all run-time profile
  counters to zero, and calling \f(CW\*(C`_\|_gcov_dump(void)\*(C'\fR will cause the profile
  information collected at that point to be dumped to \fI.gcda\fR output files.
  Instrumented applications use a static destructor with priority 99
--- 1377,1385 ----
  coverage of all the uses of the inline function will be shown for the
  same source lines, the line counts themselves might seem inconsistent.
  .PP
! Long\-running applications can use the \f(CW\*(C`_\|_gcov_reset\*(C'\fR and \f(CW\*(C`_\|_gcov_dump\*(C'\fR
  facilities to restrict profile collection to the program region of
! interest. Calling \f(CW\*(C`_\|_gcov_reset(void)\*(C'\fR will clear all run\-time profile
  counters to zero, and calling \f(CW\*(C`_\|_gcov_dump(void)\*(C'\fR will cause the profile
  information collected at that point to be dumped to \fI.gcda\fR output files.
  Instrumented applications use a static destructor with priority 99
*************** as well as handlers registered with \f(C
*** 1461,1495 ****
  If an executable loads a dynamic shared object via dlopen functionality,
  \&\fB\-Wl,\-\-dynamic\-list\-data\fR is needed to dump all profile data.
  .PP
! Profiling run-time library reports various errors related to profile
  manipulation and profile saving.  Errors are printed into standard error output
! or \fB\s-1GCOV_ERROR_FILE\s0\fR file, if environment variable is used.
  In order to terminate immediately after an errors occurs
! set \fB\s-1GCOV_EXIT_AT_ERROR\s0\fR environment variable.
  That can help users to find profile clashing which leads
  to a misleading profile.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf\-funding\fR\|(7), \fIgcc\fR\|(1) and the Info entry for \fIgcc\fR.
! .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 1996\-2025 Free Software Foundation, Inc.
  .PP
  Permission is granted to copy, distribute and/or modify this document
! under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 or
  any later version published by the Free Software Foundation; with the
! Invariant Sections being \*(L"\s-1GNU\s0 General Public License\*(R" and \*(L"Funding
! Free Software\*(R", the Front-Cover texts being (a) (see below), and with
! the Back-Cover Texts being (b) (see below).  A copy of the license is
! included in the \fIgfdl\fR\|(7) man page.
  .PP
! (a) The \s-1FSF\s0's Front-Cover Text is:
  .PP
  .Vb 1
  \&     A GNU Manual
  .Ve
  .PP
! (b) The \s-1FSF\s0's Back-Cover Text is:
  .PP
  .Vb 3
  \&     You have freedom to copy and modify this GNU Manual, like GNU
--- 1390,1424 ----
  If an executable loads a dynamic shared object via dlopen functionality,
  \&\fB\-Wl,\-\-dynamic\-list\-data\fR is needed to dump all profile data.
  .PP
! Profiling run\-time library reports various errors related to profile
  manipulation and profile saving.  Errors are printed into standard error output
! or \fBGCOV_ERROR_FILE\fR file, if environment variable is used.
  In order to terminate immediately after an errors occurs
! set \fBGCOV_EXIT_AT_ERROR\fR environment variable.
  That can help users to find profile clashing which leads
  to a misleading profile.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fBgpl\fR\|(7), \fBgfdl\fR\|(7), \fBfsf\-funding\fR\|(7), \fBgcc\fR\|(1) and the Info entry for \fIgcc\fR.
! .SH COPYRIGHT
  .IX Header "COPYRIGHT"
  Copyright (c) 1996\-2025 Free Software Foundation, Inc.
  .PP
  Permission is granted to copy, distribute and/or modify this document
! under the terms of the GNU Free Documentation License, Version 1.3 or
  any later version published by the Free Software Foundation; with the
! Invariant Sections being "GNU General Public License" and "Funding
! Free Software", the Front\-Cover texts being (a) (see below), and with
! the Back\-Cover Texts being (b) (see below).  A copy of the license is
! included in the \fBgfdl\fR\|(7) man page.
  .PP
! (a) The FSF\*(Aqs Front\-Cover Text is:
  .PP
  .Vb 1
  \&     A GNU Manual
  .Ve
  .PP
! (b) The FSF\*(Aqs Back\-Cover Text is:
  .PP
  .Vb 3
  \&     You have freedom to copy and modify this GNU Manual, like GNU
diff -Nrcpad gcc-15.2.0/gcc/doc/gdc.1 gcc-15.3.0/gcc/doc/gdc.1
*** gcc-15.2.0/gcc/doc/gdc.1	Fri Aug  8 07:17:54 2025
--- gcc-15.3.0/gcc/doc/gdc.1	Fri Jun 12 06:36:43 2026
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
--- 1,5 ----
! .\" -*- mode: troff; coding: utf-8 -*-
! .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
***************
*** 15,43 ****
  .ft R
  .fi
  ..
! .\" Set up some character translations and predefined strings.  \*(-- will
! .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
! .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
! .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
! .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
! .\" nothing in troff, for use with C<>.
! .tr \(*W-
! .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
  .ie n \{\
- .    ds -- \(*W-
- .    ds PI pi
- .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
- .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
- .    ds L" ""
- .    ds R" ""
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
- .    ds -- \|\(em\|
- .    ds PI \(*p
- .    ds L" ``
- .    ds R" ''
  .    ds C`
  .    ds C'
  'br\}
--- 16,27 ----
  .ft R
  .fi
  ..
! .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
  .ie n \{\
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
  .    ds C`
  .    ds C'
  'br\}
***************
*** 54,175 ****
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .if !\nF .nr F 0
! .if \nF>0 \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    if !\nF==2 \{\
! .        nr % 0
! .        nr F 2
  .    \}
  .\}
  .\"
! .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
! .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
! .    \" fudge factors for nroff and troff
! .if n \{\
! .    ds #H 0
! .    ds #V .8m
! .    ds #F .3m
! .    ds #[ \f1
! .    ds #] \fP
! .\}
! .if t \{\
! .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
! .    ds #V .6m
! .    ds #F 0
! .    ds #[ \&
! .    ds #] \&
! .\}
! .    \" simple accents for nroff and troff
! .if n \{\
! .    ds ' \&
! .    ds ` \&
! .    ds ^ \&
! .    ds , \&
! .    ds ~ ~
! .    ds /
! .\}
! .if t \{\
! .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
! .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
! .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
! .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
! .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
! .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
! .\}
! .    \" troff and (daisy-wheel) nroff accents
! .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
! .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
! .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
! .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
! .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
! .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
! .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
! .ds ae a\h'-(\w'a'u*4/10)'e
! .ds Ae A\h'-(\w'A'u*4/10)'E
! .    \" corrections for vroff
! .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
! .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
! .    \" for low resolution devices (crt and lpr)
! .if \n(.H>23 .if \n(.V>19 \
! \{\
! .    ds : e
! .    ds 8 ss
! .    ds o a
! .    ds d- d\h'-1'\(ga
! .    ds D- D\h'-1'\(hy
! .    ds th \o'bp'
! .    ds Th \o'LP'
! .    ds ae ae
! .    ds Ae AE
! .\}
! .rm #[ #] #H #V #F C
  .\" ========================================================================
  .\"
  .IX Title "GDC 1"
! .TH GDC 1 "2025-08-08" "gcc-15.2.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH "NAME"
  gdc \- A GCC\-based compiler for the D language
! .SH "SYNOPSIS"
  .IX Header "SYNOPSIS"
  gdc [\fB\-c\fR|\fB\-S\fR] [\fB\-g\fR] [\fB\-pg\fR]
      [\fB\-O\fR\fIlevel\fR] [\fB\-W\fR\fIwarn\fR...]
      [\fB\-I\fR\fIdir\fR...] [\fB\-L\fR\fIdir\fR...]
!     [\fB\-f\fR\fIoption\fR...] [\fB\-m\fR\fImachine-option\fR...]
      [\fB\-o\fR \fIoutfile\fR] [@\fIfile\fR] \fIinfile\fR...
  .PP
  Only the most useful options are listed here; see below for the
  remainder.
! .SH "DESCRIPTION"
  .IX Header "DESCRIPTION"
! The \fBgdc\fR command is the \s-1GNU\s0 compiler for the D language and
  supports many of the same options as \fBgcc\fR.  
  This manual only documents the options specific to \fBgdc\fR.
! .SH "OPTIONS"
  .IX Header "OPTIONS"
  .SS "Input and Output files"
  .IX Subsection "Input and Output files"
  For any given input file, the file name suffix determines what kind of
  compilation is done.  The following kinds of input file names are supported:
! .IP "\fIfile\fR\fB.d\fR" 4
  .IX Item "file.d"
  D source files.
! .IP "\fIfile\fR\fB.dd\fR" 4
  .IX Item "file.dd"
  Ddoc source files.
! .IP "\fIfile\fR\fB.di\fR" 4
  .IX Item "file.di"
  D interface files.
  .PP
  You can specify more than one input file on the \fBgdc\fR command line,
  each being compiled separately in the compilation process.  If you specify a
! \&\f(CW\*(C`\-o \f(CIfile\f(CW\*(C'\fR option, all the input files are compiled together,
  producing a single output file, named \fIfile\fR.  This is allowed even
  when using \f(CW\*(C`\-S\*(C'\fR or \f(CW\*(C`\-c\*(C'\fR.
  .PP
--- 38,104 ----
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .nr rF 0
! .if \n(.g .if rF .nr rF 1
! .if (\n(rF:(\n(.g==0)) \{\
! .    if \nF \{\
! .        de IX
! .        tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .        if !\nF==2 \{\
! .            nr % 0
! .            nr F 2
! .        \}
  .    \}
  .\}
+ .rr rF
  .\"
! .\" Required to disable full justification in groff 1.23.0.
! .if n .ds AD l
  .\" ========================================================================
  .\"
  .IX Title "GDC 1"
! .TH GDC 1 2026-06-12 gcc-15.3.0 GNU
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH NAME
  gdc \- A GCC\-based compiler for the D language
! .SH SYNOPSIS
  .IX Header "SYNOPSIS"
  gdc [\fB\-c\fR|\fB\-S\fR] [\fB\-g\fR] [\fB\-pg\fR]
      [\fB\-O\fR\fIlevel\fR] [\fB\-W\fR\fIwarn\fR...]
      [\fB\-I\fR\fIdir\fR...] [\fB\-L\fR\fIdir\fR...]
!     [\fB\-f\fR\fIoption\fR...] [\fB\-m\fR\fImachine\-option\fR...]
      [\fB\-o\fR \fIoutfile\fR] [@\fIfile\fR] \fIinfile\fR...
  .PP
  Only the most useful options are listed here; see below for the
  remainder.
! .SH DESCRIPTION
  .IX Header "DESCRIPTION"
! The \fBgdc\fR command is the GNU compiler for the D language and
  supports many of the same options as \fBgcc\fR.  
  This manual only documents the options specific to \fBgdc\fR.
! .SH OPTIONS
  .IX Header "OPTIONS"
  .SS "Input and Output files"
  .IX Subsection "Input and Output files"
  For any given input file, the file name suffix determines what kind of
  compilation is done.  The following kinds of input file names are supported:
! .IP \fIfile\fR\fB.d\fR 4
  .IX Item "file.d"
  D source files.
! .IP \fIfile\fR\fB.dd\fR 4
  .IX Item "file.dd"
  Ddoc source files.
! .IP \fIfile\fR\fB.di\fR 4
  .IX Item "file.di"
  D interface files.
  .PP
  You can specify more than one input file on the \fBgdc\fR command line,
  each being compiled separately in the compilation process.  If you specify a
! \&\f(CW\*(C`\-o \fR\f(CIfile\fR\f(CW\*(C'\fR option, all the input files are compiled together,
  producing a single output file, named \fIfile\fR.  This is allowed even
  when using \f(CW\*(C`\-S\*(C'\fR or \f(CW\*(C`\-c\*(C'\fR.
  .PP
*************** When the compiler resolves an import dec
*** 181,253 ****
  .PP
  A Ddoc source file contains code in the D macro processor language.  It is
  primarily designed for use in producing user documentation from embedded
! comments, with a slight affinity towards \s-1HTML\s0 generation.  If a \fI.d\fR
  source file starts with the string \f(CW\*(C`Ddoc\*(C'\fR then it is treated as general
  purpose documentation, not as a D source file.
  .SS "Runtime Options"
  .IX Subsection "Runtime Options"
  These options affect the runtime behavior of programs compiled with
  \&\fBgdc\fR.
! .IP "\fB\-fall\-instantiations\fR" 4
  .IX Item "-fall-instantiations"
  Generate code for all template instantiations.  The default template emission
  strategy is to not generate code for declarations that were either
  instantiated speculatively, such as from \f(CW\*(C`_\|_traits(compiles, ...)\*(C'\fR, or
  that come from an imported module not being compiled.
! .IP "\fB\-fno\-assert\fR" 4
  .IX Item "-fno-assert"
  Turn off code generation for \f(CW\*(C`assert\*(C'\fR contracts.
! .IP "\fB\-fno\-bounds\-check\fR" 4
  .IX Item "-fno-bounds-check"
  Turns off array bounds checking for all functions, which can improve
  performance for code that uses arrays extensively.  Note that this
  can result in unpredictable behavior if the code in question actually
  does violate array bounds constraints.  It is safe to use this option
  if you are sure that your code never throws a \f(CW\*(C`RangeError\*(C'\fR.
! .IP "\fB\-fbounds\-check=\fR\fIvalue\fR" 4
  .IX Item "-fbounds-check=value"
  An alternative to \fB\-fbounds\-check\fR that allows more control
  as to where bounds checking is turned on or off.  The following values
  are supported:
  .RS 4
! .IP "\fBon\fR" 4
  .IX Item "on"
  Turns on array bounds checking for all functions.
! .IP "\fBsafeonly\fR" 4
  .IX Item "safeonly"
  Turns on array bounds checking only for \f(CW@safe\fR functions.
! .IP "\fBoff\fR" 4
  .IX Item "off"
  Turns off array bounds checking completely.
  .RE
  .RS 4
  .RE
! .IP "\fB\-fno\-builtin\fR" 4
  .IX Item "-fno-builtin"
! Don't recognize built-in functions unless they begin with the prefix
  \&\fB_\|_builtin_\fR.  By default, the compiler will recognize when a
! function in the \f(CW\*(C`core.stdc\*(C'\fR package is a built-in function.
! .IP "\fB\-fcheckaction=\fR\fIvalue\fR" 4
  .IX Item "-fcheckaction=value"
  This option controls what code is generated on an assertion, bounds check, or
  final switch failure.  The following values are supported:
  .RS 4
! .IP "\fBcontext\fR" 4
  .IX Item "context"
  Throw an \f(CW\*(C`AssertError\*(C'\fR with extra context information.
! .IP "\fBhalt\fR" 4
  .IX Item "halt"
  Halt the program execution.
! .IP "\fBthrow\fR" 4
  .IX Item "throw"
  Throw an \f(CW\*(C`AssertError\*(C'\fR (the default).
  .RE
  .RS 4
  .RE
! .IP "\fB\-fdebug\fR" 4
  .IX Item "-fdebug"
  .PD 0
! .IP "\fB\-fdebug=\fR\fIvalue\fR" 4
  .IX Item "-fdebug=value"
  .PD
  Turn on compilation of conditional \f(CW\*(C`debug\*(C'\fR code into the program.
--- 110,182 ----
  .PP
  A Ddoc source file contains code in the D macro processor language.  It is
  primarily designed for use in producing user documentation from embedded
! comments, with a slight affinity towards HTML generation.  If a \fI.d\fR
  source file starts with the string \f(CW\*(C`Ddoc\*(C'\fR then it is treated as general
  purpose documentation, not as a D source file.
  .SS "Runtime Options"
  .IX Subsection "Runtime Options"
  These options affect the runtime behavior of programs compiled with
  \&\fBgdc\fR.
! .IP \fB\-fall\-instantiations\fR 4
  .IX Item "-fall-instantiations"
  Generate code for all template instantiations.  The default template emission
  strategy is to not generate code for declarations that were either
  instantiated speculatively, such as from \f(CW\*(C`_\|_traits(compiles, ...)\*(C'\fR, or
  that come from an imported module not being compiled.
! .IP \fB\-fno\-assert\fR 4
  .IX Item "-fno-assert"
  Turn off code generation for \f(CW\*(C`assert\*(C'\fR contracts.
! .IP \fB\-fno\-bounds\-check\fR 4
  .IX Item "-fno-bounds-check"
  Turns off array bounds checking for all functions, which can improve
  performance for code that uses arrays extensively.  Note that this
  can result in unpredictable behavior if the code in question actually
  does violate array bounds constraints.  It is safe to use this option
  if you are sure that your code never throws a \f(CW\*(C`RangeError\*(C'\fR.
! .IP \fB\-fbounds\-check=\fR\fIvalue\fR 4
  .IX Item "-fbounds-check=value"
  An alternative to \fB\-fbounds\-check\fR that allows more control
  as to where bounds checking is turned on or off.  The following values
  are supported:
  .RS 4
! .IP \fBon\fR 4
  .IX Item "on"
  Turns on array bounds checking for all functions.
! .IP \fBsafeonly\fR 4
  .IX Item "safeonly"
  Turns on array bounds checking only for \f(CW@safe\fR functions.
! .IP \fBoff\fR 4
  .IX Item "off"
  Turns off array bounds checking completely.
  .RE
  .RS 4
  .RE
! .IP \fB\-fno\-builtin\fR 4
  .IX Item "-fno-builtin"
! Don\*(Aqt recognize built\-in functions unless they begin with the prefix
  \&\fB_\|_builtin_\fR.  By default, the compiler will recognize when a
! function in the \f(CW\*(C`core.stdc\*(C'\fR package is a built\-in function.
! .IP \fB\-fcheckaction=\fR\fIvalue\fR 4
  .IX Item "-fcheckaction=value"
  This option controls what code is generated on an assertion, bounds check, or
  final switch failure.  The following values are supported:
  .RS 4
! .IP \fBcontext\fR 4
  .IX Item "context"
  Throw an \f(CW\*(C`AssertError\*(C'\fR with extra context information.
! .IP \fBhalt\fR 4
  .IX Item "halt"
  Halt the program execution.
! .IP \fBthrow\fR 4
  .IX Item "throw"
  Throw an \f(CW\*(C`AssertError\*(C'\fR (the default).
  .RE
  .RS 4
  .RE
! .IP \fB\-fdebug\fR 4
  .IX Item "-fdebug"
  .PD 0
! .IP \fB\-fdebug=\fR\fIvalue\fR 4
  .IX Item "-fdebug=value"
  .PD
  Turn on compilation of conditional \f(CW\*(C`debug\*(C'\fR code into the program.
*************** The \fB\-fdebug\fR option itself sets th
*** 255,267 ****
  while \fB\-fdebug=\fR enables \f(CW\*(C`debug\*(C'\fR code that are identified
  by any of the following values:
  .RS 4
! .IP "\fBident\fR" 4
  .IX Item "ident"
  Turns on compilation of any \f(CW\*(C`debug\*(C'\fR code identified by \fIident\fR.
  .RE
  .RS 4
  .RE
! .IP "\fB\-fno\-druntime\fR" 4
  .IX Item "-fno-druntime"
  Implements <\fBhttps://dlang.org/spec/betterc.html\fR>.  Assumes that
  compilation targets an environment without a D runtime library.
--- 184,196 ----
  while \fB\-fdebug=\fR enables \f(CW\*(C`debug\*(C'\fR code that are identified
  by any of the following values:
  .RS 4
! .IP \fBident\fR 4
  .IX Item "ident"
  Turns on compilation of any \f(CW\*(C`debug\*(C'\fR code identified by \fIident\fR.
  .RE
  .RS 4
  .RE
! .IP \fB\-fno\-druntime\fR 4
  .IX Item "-fno-druntime"
  Implements <\fBhttps://dlang.org/spec/betterc.html\fR>.  Assumes that
  compilation targets an environment without a D runtime library.
*************** This is equivalent to compiling with the
*** 271,322 ****
  .Vb 1
  \&        gdc \-nophoboslib \-fno\-exceptions \-fno\-moduleinfo \-fno\-rtti
  .Ve
! .IP "\fB\-fextern\-std=\fR\fIstandard\fR" 4
  .IX Item "-fextern-std=standard"
! Sets the \*(C+ name mangling compatibility to the version identified by
  \&\fIstandard\fR.  The following values are supported:
  .RS 4
! .IP "\fBc++98\fR" 4
  .IX Item "c++98"
  .PD 0
! .IP "\fBc++03\fR" 4
  .IX Item "c++03"
  .PD
  Sets \f(CW\*(C`_\|_traits(getTargetInfo, "cppStd")\*(C'\fR to \f(CW199711\fR.
! .IP "\fBc++11\fR" 4
  .IX Item "c++11"
  Sets \f(CW\*(C`_\|_traits(getTargetInfo, "cppStd")\*(C'\fR to \f(CW201103\fR.
! .IP "\fBc++14\fR" 4
  .IX Item "c++14"
  Sets \f(CW\*(C`_\|_traits(getTargetInfo, "cppStd")\*(C'\fR to \f(CW201402\fR.
! .IP "\fBc++17\fR" 4
  .IX Item "c++17"
  Sets \f(CW\*(C`_\|_traits(getTargetInfo, "cppStd")\*(C'\fR to \f(CW201703\fR.
  This is the default.
! .IP "\fBc++20\fR" 4
  .IX Item "c++20"
  Sets \f(CW\*(C`_\|_traits(getTargetInfo, "cppStd")\*(C'\fR to \f(CW202002\fR.
! .IP "\fBc++23\fR" 4
  .IX Item "c++23"
  Sets \f(CW\*(C`_\|_traits(getTargetInfo, "cppStd")\*(C'\fR to \f(CW202302\fR.
  .RE
  .RS 4
  .RE
! .IP "\fB\-finclude\-imports\fR" 4
  .IX Item "-finclude-imports"
  Include imported modules in the compilation, as if they were given on the
  command line.  When this option is enabled, all imported modules are compiled
  except those that are part of libphobos.
! .IP "\fB\-fno\-invariants\fR" 4
  .IX Item "-fno-invariants"
  Turns off code generation for class \f(CW\*(C`invariant\*(C'\fR contracts.
! .IP "\fB\-fmain\fR" 4
  .IX Item "-fmain"
! Generates a default \f(CW\*(C`main()\*(C'\fR function when compiling.  This is useful when
  unittesting a library, as it enables running the unittests in a library without
! having to manually define an entry-point function.  This option does nothing
  when \f(CW\*(C`main\*(C'\fR is already defined in user code.
! .IP "\fB\-fno\-moduleinfo\fR" 4
  .IX Item "-fno-moduleinfo"
  Turns off generation of the \f(CW\*(C`ModuleInfo\*(C'\fR and related functions
  that would become unreferenced without it, which may allow linking
--- 200,251 ----
  .Vb 1
  \&        gdc \-nophoboslib \-fno\-exceptions \-fno\-moduleinfo \-fno\-rtti
  .Ve
! .IP \fB\-fextern\-std=\fR\fIstandard\fR 4
  .IX Item "-fextern-std=standard"
! Sets the C++ name mangling compatibility to the version identified by
  \&\fIstandard\fR.  The following values are supported:
  .RS 4
! .IP \fBc++98\fR 4
  .IX Item "c++98"
  .PD 0
! .IP \fBc++03\fR 4
  .IX Item "c++03"
  .PD
  Sets \f(CW\*(C`_\|_traits(getTargetInfo, "cppStd")\*(C'\fR to \f(CW199711\fR.
! .IP \fBc++11\fR 4
  .IX Item "c++11"
  Sets \f(CW\*(C`_\|_traits(getTargetInfo, "cppStd")\*(C'\fR to \f(CW201103\fR.
! .IP \fBc++14\fR 4
  .IX Item "c++14"
  Sets \f(CW\*(C`_\|_traits(getTargetInfo, "cppStd")\*(C'\fR to \f(CW201402\fR.
! .IP \fBc++17\fR 4
  .IX Item "c++17"
  Sets \f(CW\*(C`_\|_traits(getTargetInfo, "cppStd")\*(C'\fR to \f(CW201703\fR.
  This is the default.
! .IP \fBc++20\fR 4
  .IX Item "c++20"
  Sets \f(CW\*(C`_\|_traits(getTargetInfo, "cppStd")\*(C'\fR to \f(CW202002\fR.
! .IP \fBc++23\fR 4
  .IX Item "c++23"
  Sets \f(CW\*(C`_\|_traits(getTargetInfo, "cppStd")\*(C'\fR to \f(CW202302\fR.
  .RE
  .RS 4
  .RE
! .IP \fB\-finclude\-imports\fR 4
  .IX Item "-finclude-imports"
  Include imported modules in the compilation, as if they were given on the
  command line.  When this option is enabled, all imported modules are compiled
  except those that are part of libphobos.
! .IP \fB\-fno\-invariants\fR 4
  .IX Item "-fno-invariants"
  Turns off code generation for class \f(CW\*(C`invariant\*(C'\fR contracts.
! .IP \fB\-fmain\fR 4
  .IX Item "-fmain"
! Generates a default \f(CWmain()\fR function when compiling.  This is useful when
  unittesting a library, as it enables running the unittests in a library without
! having to manually define an entry\-point function.  This option does nothing
  when \f(CW\*(C`main\*(C'\fR is already defined in user code.
! .IP \fB\-fno\-moduleinfo\fR 4
  .IX Item "-fno-moduleinfo"
  Turns off generation of the \f(CW\*(C`ModuleInfo\*(C'\fR and related functions
  that would become unreferenced without it, which may allow linking
*************** to programs not written in D.  Functions
*** 324,402 ****
  include module constructors and destructors (\f(CW\*(C`static this\*(C'\fR and
  \&\f(CW\*(C`static ~this\*(C'\fR), \f(CW\*(C`unittest\*(C'\fR code, and \f(CW\*(C`DSO\*(C'\fR registry
  functions for dynamically linked code.
! .IP "\fB\-fonly=\fR\fIfilename\fR" 4
  .IX Item "-fonly=filename"
  Tells the compiler to parse and run semantic analysis on all modules
  on the command line, but only generate code for the module specified
  by \fIfilename\fR.
! .IP "\fB\-fno\-postconditions\fR" 4
  .IX Item "-fno-postconditions"
  Turns off code generation for postcondition \f(CW\*(C`out\*(C'\fR contracts.
! .IP "\fB\-fno\-preconditions\fR" 4
  .IX Item "-fno-preconditions"
  Turns off code generation for precondition \f(CW\*(C`in\*(C'\fR contracts.
! .IP "\fB\-fpreview=\fR\fIid\fR" 4
  .IX Item "-fpreview=id"
  Turns on an upcoming D language change identified by \fIid\fR.  The following
  values are supported:
  .RS 4
! .IP "\fBall\fR" 4
  .IX Item "all"
  Turns on all upcoming D language features.
! .IP "\fBbitfields\fR" 4
  .IX Item "bitfields"
! Implements bit-fields in D.
! .IP "\fBdip1000\fR" 4
  .IX Item "dip1000"
  Implements <\fBhttps://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1000.md\fR>
  (Scoped pointers).
! .IP "\fBdip1008\fR" 4
  .IX Item "dip1008"
  Implements <\fBhttps://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1008.md\fR>
  (Allow exceptions in \f(CW@nogc\fR code).
! .IP "\fBdip1021\fR" 4
  .IX Item "dip1021"
  Implements <\fBhttps://github.com/dlang/DIPs/blob/master/DIPs/accepted/DIP1021.md\fR>
  (Mutable function arguments).
! .IP "\fBdip25\fR" 4
  .IX Item "dip25"
  Implements <\fBhttps://github.com/dlang/DIPs/blob/master/DIPs/archive/DIP25.md\fR>
  (Sealed references).
! .IP "\fBdtorfields\fR" 4
  .IX Item "dtorfields"
  Turns on generation for destructing fields of partially constructed objects.
! .IP "\fBfieldwise\fR" 4
  .IX Item "fieldwise"
! Turns on generation of struct equality to use field-wise comparisons.
! .IP "\fBfixaliasthis\fR" 4
  .IX Item "fixaliasthis"
  Implements new lookup rules that check the current scope for \f(CW\*(C`alias this\*(C'\fR
  before searching in upper scopes.
! .IP "\fBfiximmutableconv\fR" 4
  .IX Item "fiximmutableconv"
  Disallows unsound immutable conversions that were formerly incorrectly
  permitted.
! .IP "\fBin\fR" 4
  .IX Item "in"
  Implements \f(CW\*(C`in\*(C'\fR parameters to mean \f(CW\*(C`scope const [ref]\*(C'\fR and accepts
  rvalues.
! .IP "\fBinclusiveincontracts\fR" 4
  .IX Item "inclusiveincontracts"
  Implements \f(CW\*(C`in\*(C'\fR contracts of overridden methods to be a superset of parent
  contract.
! .IP "\fBnosharedaccess\fR" 4
  .IX Item "nosharedaccess"
  Turns off and disallows all access to shared memory objects.
! .IP "\fBrvaluerefparam\fR" 4
  .IX Item "rvaluerefparam"
  Implements rvalue arguments to \f(CW\*(C`ref\*(C'\fR parameters.
! .IP "\fBsystemvariables\fR" 4
  .IX Item "systemvariables"
  Disables access to variables marked \f(CW@system\fR from \f(CW@safe\fR code.
  .RE
  .RS 4
  .RE
! .IP "\fB\-frelease\fR" 4
  .IX Item "-frelease"
  Turns on compiling in release mode, which means not emitting runtime
  checks for contracts and asserts.  Array bounds checking is not done
--- 253,331 ----
  include module constructors and destructors (\f(CW\*(C`static this\*(C'\fR and
  \&\f(CW\*(C`static ~this\*(C'\fR), \f(CW\*(C`unittest\*(C'\fR code, and \f(CW\*(C`DSO\*(C'\fR registry
  functions for dynamically linked code.
! .IP \fB\-fonly=\fR\fIfilename\fR 4
  .IX Item "-fonly=filename"
  Tells the compiler to parse and run semantic analysis on all modules
  on the command line, but only generate code for the module specified
  by \fIfilename\fR.
! .IP \fB\-fno\-postconditions\fR 4
  .IX Item "-fno-postconditions"
  Turns off code generation for postcondition \f(CW\*(C`out\*(C'\fR contracts.
! .IP \fB\-fno\-preconditions\fR 4
  .IX Item "-fno-preconditions"
  Turns off code generation for precondition \f(CW\*(C`in\*(C'\fR contracts.
! .IP \fB\-fpreview=\fR\fIid\fR 4
  .IX Item "-fpreview=id"
  Turns on an upcoming D language change identified by \fIid\fR.  The following
  values are supported:
  .RS 4
! .IP \fBall\fR 4
  .IX Item "all"
  Turns on all upcoming D language features.
! .IP \fBbitfields\fR 4
  .IX Item "bitfields"
! Implements bit\-fields in D.
! .IP \fBdip1000\fR 4
  .IX Item "dip1000"
  Implements <\fBhttps://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1000.md\fR>
  (Scoped pointers).
! .IP \fBdip1008\fR 4
  .IX Item "dip1008"
  Implements <\fBhttps://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1008.md\fR>
  (Allow exceptions in \f(CW@nogc\fR code).
! .IP \fBdip1021\fR 4
  .IX Item "dip1021"
  Implements <\fBhttps://github.com/dlang/DIPs/blob/master/DIPs/accepted/DIP1021.md\fR>
  (Mutable function arguments).
! .IP \fBdip25\fR 4
  .IX Item "dip25"
  Implements <\fBhttps://github.com/dlang/DIPs/blob/master/DIPs/archive/DIP25.md\fR>
  (Sealed references).
! .IP \fBdtorfields\fR 4
  .IX Item "dtorfields"
  Turns on generation for destructing fields of partially constructed objects.
! .IP \fBfieldwise\fR 4
  .IX Item "fieldwise"
! Turns on generation of struct equality to use field\-wise comparisons.
! .IP \fBfixaliasthis\fR 4
  .IX Item "fixaliasthis"
  Implements new lookup rules that check the current scope for \f(CW\*(C`alias this\*(C'\fR
  before searching in upper scopes.
! .IP \fBfiximmutableconv\fR 4
  .IX Item "fiximmutableconv"
  Disallows unsound immutable conversions that were formerly incorrectly
  permitted.
! .IP \fBin\fR 4
  .IX Item "in"
  Implements \f(CW\*(C`in\*(C'\fR parameters to mean \f(CW\*(C`scope const [ref]\*(C'\fR and accepts
  rvalues.
! .IP \fBinclusiveincontracts\fR 4
  .IX Item "inclusiveincontracts"
  Implements \f(CW\*(C`in\*(C'\fR contracts of overridden methods to be a superset of parent
  contract.
! .IP \fBnosharedaccess\fR 4
  .IX Item "nosharedaccess"
  Turns off and disallows all access to shared memory objects.
! .IP \fBrvaluerefparam\fR 4
  .IX Item "rvaluerefparam"
  Implements rvalue arguments to \f(CW\*(C`ref\*(C'\fR parameters.
! .IP \fBsystemvariables\fR 4
  .IX Item "systemvariables"
  Disables access to variables marked \f(CW@system\fR from \f(CW@safe\fR code.
  .RE
  .RS 4
  .RE
! .IP \fB\-frelease\fR 4
  .IX Item "-frelease"
  Turns on compiling in release mode, which means not emitting runtime
  checks for contracts and asserts.  Array bounds checking is not done
*************** This is equivalent to compiling with the
*** 409,495 ****
  \&        gdc \-fno\-assert \-fbounds\-check=safe \-fno\-invariants \e
  \&            \-fno\-postconditions \-fno\-preconditions \-fno\-switch\-errors
  .Ve
! .IP "\fB\-frevert=\fR" 4
  .IX Item "-frevert="
  Turns off a D language feature identified by \fIid\fR.  The following values
  are supported:
  .RS 4
! .IP "\fBall\fR" 4
  .IX Item "all"
  Turns off all revertable D language features.
! .IP "\fBdip1000\fR" 4
  .IX Item "dip1000"
  Reverts <\fBhttps://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1000.md\fR>
  (Scoped pointers).
! .IP "\fBdip25\fR" 4
  .IX Item "dip25"
  Reverts <\fBhttps://github.com/dlang/DIPs/blob/master/DIPs/archive/DIP25.md\fR>
  (Sealed references).
! .IP "\fBdtorfields\fR" 4
  .IX Item "dtorfields"
  Turns off generation for destructing fields of partially constructed objects.
! .IP "\fBintpromote\fR" 4
  .IX Item "intpromote"
  Turns off C\-style integral promotion for unary \f(CW\*(C`+\*(C'\fR, \f(CW\*(C`\-\*(C'\fR and \f(CW\*(C`~\*(C'\fR
  expressions.
  .RE
  .RS 4
  .RE
! .IP "\fB\-fno\-rtti\fR" 4
  .IX Item "-fno-rtti"
! Turns off generation of run-time type information for all user defined types.
  Any code that uses features of the language that require access to this
  information will result in an error.
! .IP "\fB\-fno\-switch\-errors\fR" 4
  .IX Item "-fno-switch-errors"
  This option controls what code is generated when no case is matched
  in a \f(CW\*(C`final switch\*(C'\fR statement.  The default run time behavior
  is to throw a \f(CW\*(C`SwitchError\*(C'\fR.  Turning off \fB\-fswitch\-errors\fR
  means that instead the execution of the program is immediately halted.
! .IP "\fB\-funittest\fR" 4
  .IX Item "-funittest"
  Turns on compilation of \f(CW\*(C`unittest\*(C'\fR code, and turns on the
! \&\f(CW\*(C`version(unittest)\*(C'\fR identifier.  This implies \fB\-fassert\fR.
! .IP "\fB\-fversion=\fR\fIvalue\fR" 4
  .IX Item "-fversion=value"
  Turns on compilation of conditional \f(CW\*(C`version\*(C'\fR code into the program
  identified by any of the following values:
  .RS 4
! .IP "\fBident\fR" 4
  .IX Item "ident"
  Turns on compilation of \f(CW\*(C`version\*(C'\fR code identified by \fIident\fR.
  .RE
  .RS 4
  .RE
! .IP "\fB\-fno\-weak\-templates\fR" 4
  .IX Item "-fno-weak-templates"
  Turns off emission of declarations that can be defined in multiple objects as
  weak symbols.  The default is to emit all public symbols as weak, unless the
  target lacks support for weak symbols.  Disabling this option means that common
! symbols are instead put in \s-1COMDAT\s0 or become private.
  .SS "Options for Directory Search"
  .IX Subsection "Options for Directory Search"
  These options specify directories to search for files, libraries, and
  other parts of the compiler:
! .IP "\fB\-I\fR\fIdir\fR" 4
  .IX Item "-Idir"
  Specify a directory to use when searching for imported modules at
  compile time.  Multiple \fB\-I\fR options can be used, and the
  paths are searched in the same order.
! .IP "\fB\-J\fR\fIdir\fR" 4
  .IX Item "-Jdir"
  Specify a directory to use when searching for files in string imports
  at compile time.  This switch is required in order to use
! \&\f(CW\*(C`import(file)\*(C'\fR expressions.  Multiple \fB\-J\fR options can be
  used, and the paths are searched in the same order.
! .IP "\fB\-L\fR\fIdir\fR" 4
  .IX Item "-Ldir"
  When linking, specify a library search directory, as with \fBgcc\fR.
! .IP "\fB\-B\fR\fIdir\fR" 4
  .IX Item "-Bdir"
  This option specifies where to find the executables, libraries,
  source files, and data files of the compiler itself, as with \fBgcc\fR.
! .IP "\fB\-fmodule\-file=\fR\fImodule\fR\fB=\fR\fIspec\fR" 4
  .IX Item "-fmodule-file=module=spec"
  This option manipulates file paths of imported modules, such that if an
  imported module matches all or the leftmost part of \fImodule\fR, the file
--- 338,424 ----
  \&        gdc \-fno\-assert \-fbounds\-check=safe \-fno\-invariants \e
  \&            \-fno\-postconditions \-fno\-preconditions \-fno\-switch\-errors
  .Ve
! .IP \fB\-frevert=\fR 4
  .IX Item "-frevert="
  Turns off a D language feature identified by \fIid\fR.  The following values
  are supported:
  .RS 4
! .IP \fBall\fR 4
  .IX Item "all"
  Turns off all revertable D language features.
! .IP \fBdip1000\fR 4
  .IX Item "dip1000"
  Reverts <\fBhttps://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1000.md\fR>
  (Scoped pointers).
! .IP \fBdip25\fR 4
  .IX Item "dip25"
  Reverts <\fBhttps://github.com/dlang/DIPs/blob/master/DIPs/archive/DIP25.md\fR>
  (Sealed references).
! .IP \fBdtorfields\fR 4
  .IX Item "dtorfields"
  Turns off generation for destructing fields of partially constructed objects.
! .IP \fBintpromote\fR 4
  .IX Item "intpromote"
  Turns off C\-style integral promotion for unary \f(CW\*(C`+\*(C'\fR, \f(CW\*(C`\-\*(C'\fR and \f(CW\*(C`~\*(C'\fR
  expressions.
  .RE
  .RS 4
  .RE
! .IP \fB\-fno\-rtti\fR 4
  .IX Item "-fno-rtti"
! Turns off generation of run\-time type information for all user defined types.
  Any code that uses features of the language that require access to this
  information will result in an error.
! .IP \fB\-fno\-switch\-errors\fR 4
  .IX Item "-fno-switch-errors"
  This option controls what code is generated when no case is matched
  in a \f(CW\*(C`final switch\*(C'\fR statement.  The default run time behavior
  is to throw a \f(CW\*(C`SwitchError\*(C'\fR.  Turning off \fB\-fswitch\-errors\fR
  means that instead the execution of the program is immediately halted.
! .IP \fB\-funittest\fR 4
  .IX Item "-funittest"
  Turns on compilation of \f(CW\*(C`unittest\*(C'\fR code, and turns on the
! \&\f(CWversion(unittest)\fR identifier.  This implies \fB\-fassert\fR.
! .IP \fB\-fversion=\fR\fIvalue\fR 4
  .IX Item "-fversion=value"
  Turns on compilation of conditional \f(CW\*(C`version\*(C'\fR code into the program
  identified by any of the following values:
  .RS 4
! .IP \fBident\fR 4
  .IX Item "ident"
  Turns on compilation of \f(CW\*(C`version\*(C'\fR code identified by \fIident\fR.
  .RE
  .RS 4
  .RE
! .IP \fB\-fno\-weak\-templates\fR 4
  .IX Item "-fno-weak-templates"
  Turns off emission of declarations that can be defined in multiple objects as
  weak symbols.  The default is to emit all public symbols as weak, unless the
  target lacks support for weak symbols.  Disabling this option means that common
! symbols are instead put in COMDAT or become private.
  .SS "Options for Directory Search"
  .IX Subsection "Options for Directory Search"
  These options specify directories to search for files, libraries, and
  other parts of the compiler:
! .IP \fB\-I\fR\fIdir\fR 4
  .IX Item "-Idir"
  Specify a directory to use when searching for imported modules at
  compile time.  Multiple \fB\-I\fR options can be used, and the
  paths are searched in the same order.
! .IP \fB\-J\fR\fIdir\fR 4
  .IX Item "-Jdir"
  Specify a directory to use when searching for files in string imports
  at compile time.  This switch is required in order to use
! \&\f(CWimport(file)\fR expressions.  Multiple \fB\-J\fR options can be
  used, and the paths are searched in the same order.
! .IP \fB\-L\fR\fIdir\fR 4
  .IX Item "-Ldir"
  When linking, specify a library search directory, as with \fBgcc\fR.
! .IP \fB\-B\fR\fIdir\fR 4
  .IX Item "-Bdir"
  This option specifies where to find the executables, libraries,
  source files, and data files of the compiler itself, as with \fBgcc\fR.
! .IP \fB\-fmodule\-file=\fR\fImodule\fR\fB=\fR\fIspec\fR 4
  .IX Item "-fmodule-file=module=spec"
  This option manipulates file paths of imported modules, such that if an
  imported module matches all or the leftmost part of \fImodule\fR, the file
*************** when importing \fIC\fR, as annotated in
*** 514,526 ****
  .IP "\fB\-imultilib\fR \fIdir\fR" 4
  .IX Item "-imultilib dir"
  Use \fIdir\fR as a subdirectory of the gcc directory containing
! target-specific D sources and interfaces.
  .IP "\fB\-iprefix\fR \fIprefix\fR" 4
  .IX Item "-iprefix prefix"
  Specify \fIprefix\fR as the prefix for the gcc directory containing
! target-specific D sources and interfaces.  If the \fIprefix\fR represents
  a directory, you should include the final \f(CW\*(Aq/\*(Aq\fR.
! .IP "\fB\-nostdinc\fR" 4
  .IX Item "-nostdinc"
  Do not search the standard system directories for D source and interface
  files.  Only the directories that have been specified with \fB\-I\fR options
--- 443,455 ----
  .IP "\fB\-imultilib\fR \fIdir\fR" 4
  .IX Item "-imultilib dir"
  Use \fIdir\fR as a subdirectory of the gcc directory containing
! target\-specific D sources and interfaces.
  .IP "\fB\-iprefix\fR \fIprefix\fR" 4
  .IX Item "-iprefix prefix"
  Specify \fIprefix\fR as the prefix for the gcc directory containing
! target\-specific D sources and interfaces.  If the \fIprefix\fR represents
  a directory, you should include the final \f(CW\*(Aq/\*(Aq\fR.
! .IP \fB\-nostdinc\fR 4
  .IX Item "-nostdinc"
  Do not search the standard system directories for D source and interface
  files.  Only the directories that have been specified with \fB\-I\fR options
*************** files.  Only the directories that have b
*** 529,535 ****
  .IX Subsection "Code Generation"
  In addition to the many \fBgcc\fR options controlling code generation,
  \&\fBgdc\fR has several options specific to itself.
! .IP "\fB\-H\fR" 4
  .IX Item "-H"
  Generates D interface files for all modules being compiled.  The compiler
  determines the output file based on the name of the input file, removes
--- 458,464 ----
  .IX Subsection "Code Generation"
  In addition to the many \fBgcc\fR options controlling code generation,
  \&\fBgdc\fR has several options specific to itself.
! .IP \fB\-H\fR 4
  .IX Item "-H"
  Generates D interface files for all modules being compiled.  The compiler
  determines the output file based on the name of the input file, removes
*************** output file and directory path.
*** 544,556 ****
  Same as \fB\-H\fR but writes interface files to \fIfile\fR.  This option can
  be used with \fB\-Hd\fR \fIdir\fR to independently set the output file and
  directory path.
! .IP "\fB\-M\fR" 4
  .IX Item "-M"
  Output the module dependencies of all source files being compiled in a
  format suitable for \fBmake\fR.  The compiler outputs one
  \&\fBmake\fR rule containing the object file name for that source file,
  a colon, and the names of all imported files.
! .IP "\fB\-MM\fR" 4
  .IX Item "-MM"
  Like \fB\-M\fR but does not mention imported modules from the D standard
  library package directories.
--- 473,485 ----
  Same as \fB\-H\fR but writes interface files to \fIfile\fR.  This option can
  be used with \fB\-Hd\fR \fIdir\fR to independently set the output file and
  directory path.
! .IP \fB\-M\fR 4
  .IX Item "-M"
  Output the module dependencies of all source files being compiled in a
  format suitable for \fBmake\fR.  The compiler outputs one
  \&\fBmake\fR rule containing the object file name for that source file,
  a colon, and the names of all imported files.
! .IP \fB\-MM\fR 4
  .IX Item "-MM"
  Like \fB\-M\fR but does not mention imported modules from the D standard
  library package directories.
*************** library package directories.
*** 559,569 ****
  When used with \fB\-M\fR or \fB\-MM\fR, specifies a \fIfile\fR to write
  the dependencies to.  When used with the driver options \fB\-MD\fR or
  \&\fB\-MMD\fR, \fB\-MF\fR overrides the default dependency output file.
! .IP "\fB\-MG\fR" 4
  .IX Item "-MG"
  This option is for compatibility with \fBgcc\fR, and is ignored by the
  compiler.
! .IP "\fB\-MP\fR" 4
  .IX Item "-MP"
  Outputs a phony target for each dependency other than the modules being
  compiled, causing each to depend on nothing.
--- 488,498 ----
  When used with \fB\-M\fR or \fB\-MM\fR, specifies a \fIfile\fR to write
  the dependencies to.  When used with the driver options \fB\-MD\fR or
  \&\fB\-MMD\fR, \fB\-MF\fR overrides the default dependency output file.
! .IP \fB\-MG\fR 4
  .IX Item "-MG"
  This option is for compatibility with \fBgcc\fR, and is ignored by the
  compiler.
! .IP \fB\-MP\fR 4
  .IX Item "-MP"
  Outputs a phony target for each dependency other than the modules being
  compiled, causing each to depend on nothing.
*************** multiple \fB\-MT\fR options.
*** 577,670 ****
  .IX Item "-MQ target"
  Same as \fB\-MT\fR, but it quotes any characters which are special to
  \&\fBmake\fR.
! .IP "\fB\-MD\fR" 4
  .IX Item "-MD"
  This option is equivalent to \fB\-M \-MF\fR \fIfile\fR.  The driver
  determines \fIfile\fR by removing any directory components and suffix
  from the input file, and then adding a \fI.deps\fR suffix.
! .IP "\fB\-MMD\fR" 4
  .IX Item "-MMD"
  Like \fB\-MD\fR but does not mention imported modules from the D standard
  library package directories.
! .IP "\fB\-X\fR" 4
  .IX Item "-X"
  Output information describing the contents of all source files being
! compiled in \s-1JSON\s0 format to a file.  The driver determines \fIfile\fR by
  removing any directory components and suffix from the input file, and then
  adding a \fI.json\fR suffix.
  .IP "\fB\-Xf\fR \fIfile\fR" 4
  .IX Item "-Xf file"
! Same as \fB\-X\fR, but writes all \s-1JSON\s0 contents to the specified
  \&\fIfile\fR.
! .IP "\fB\-fdoc\fR" 4
  .IX Item "-fdoc"
  Generates \f(CW\*(C`Ddoc\*(C'\fR documentation and writes it to a file.  The compiler
  determines \fIfile\fR by removing any directory components and suffix
  from the input file, and then adding a \fI.html\fR suffix.
! .IP "\fB\-fdoc\-dir=\fR\fIdir\fR" 4
  .IX Item "-fdoc-dir=dir"
  Same as \fB\-fdoc\fR, but writes documentation to directory \fIdir\fR.
  This option can be used with \fB\-fdoc\-file=\fR\fIfile\fR to
  independently set the output file and directory path.
! .IP "\fB\-fdoc\-file=\fR\fIfile\fR" 4
  .IX Item "-fdoc-file=file"
  Same as \fB\-fdoc\fR, but writes documentation to \fIfile\fR.  This
  option can be used with \fB\-fdoc\-dir=\fR\fIdir\fR to independently
  set the output file and directory path.
! .IP "\fB\-fdoc\-inc=\fR\fIfile\fR" 4
  .IX Item "-fdoc-inc=file"
  Specify \fIfile\fR as a \fIDdoc\fR macro file to be read.  Multiple
  \&\fB\-fdoc\-inc\fR options can be used, and files are read and processed
  in the same order.
! .IP "\fB\-fdump\-c++\-spec=\fR\fIfile\fR" 4
  .IX Item "-fdump-c++-spec=file"
! For D source files, generate corresponding \*(C+ declarations in \fIfile\fR.
! .IP "\fB\-fdump\-c++\-spec\-verbose\fR" 4
  .IX Item "-fdump-c++-spec-verbose"
  In conjunction with \fB\-fdump\-c++\-spec=\fR above, add comments for ignored
! declarations in the generated \*(C+ header.
! .IP "\fB\-fsave\-mixins=\fR\fIfile\fR" 4
  .IX Item "-fsave-mixins=file"
  Generates code expanded from D \f(CW\*(C`mixin\*(C'\fR statements and writes the
  processed sources to \fIfile\fR.  This is useful to debug errors in compilation
  and provides source for debuggers to show when requested.
! .SS "Warnings"
  .IX Subsection "Warnings"
  Warnings are diagnostic messages that report constructions that
  are not inherently erroneous but that are risky or suggest there
  is likely to be a bug in the program.  Unless \fB\-Werror\fR is
  specified, they do not prevent compilation of the program.
! .IP "\fB\-Wall\fR" 4
  .IX Item "-Wall"
  Turns on all warnings messages.  Warnings are not a defined part of
  the D language, and all constructs for which this may generate a
  warning message are valid code.
! .IP "\fB\-Walloca\fR" 4
  .IX Item "-Walloca"
! This option warns on all uses of \*(L"alloca\*(R" in the source.
! .IP "\fB\-Walloca\-larger\-than=\fR\fIn\fR" 4
  .IX Item "-Walloca-larger-than=n"
  Warn on unbounded uses of alloca, and on bounded uses of alloca
  whose bound can be larger than \fIn\fR bytes.
  \&\fB\-Wno\-alloca\-larger\-than\fR disables
  \&\fB\-Walloca\-larger\-than\fR warning and is equivalent to
! \&\fB\-Walloca\-larger\-than=\fR\fI\s-1SIZE_MAX\s0\fR or larger.
! .IP "\fB\-Wno\-builtin\-declaration\-mismatch\fR" 4
  .IX Item "-Wno-builtin-declaration-mismatch"
! Warn if a built-in function is declared with an incompatible signature.
! .IP "\fB\-Wcast\-result\fR" 4
  .IX Item "-Wcast-result"
  Warn about casts that will produce a null or zero result.  Currently
! this is only done for casting between an imaginary and non-imaginary
! data type, or casting between a D and \*(C+ class.
! .IP "\fB\-Wno\-deprecated\fR" 4
  .IX Item "-Wno-deprecated"
  Do not warn about usage of deprecated features and symbols with
  \&\f(CW\*(C`deprecated\*(C'\fR attributes.
! .IP "\fB\-Werror\fR" 4
  .IX Item "-Werror"
  Turns all warnings into errors.
! .IP "\fB\-Wextra\fR" 4
  .IX Item "-Wextra"
  This enables some extra warning flags that are not enabled by
  \&\fB\-Wall\fR.
--- 506,599 ----
  .IX Item "-MQ target"
  Same as \fB\-MT\fR, but it quotes any characters which are special to
  \&\fBmake\fR.
! .IP \fB\-MD\fR 4
  .IX Item "-MD"
  This option is equivalent to \fB\-M \-MF\fR \fIfile\fR.  The driver
  determines \fIfile\fR by removing any directory components and suffix
  from the input file, and then adding a \fI.deps\fR suffix.
! .IP \fB\-MMD\fR 4
  .IX Item "-MMD"
  Like \fB\-MD\fR but does not mention imported modules from the D standard
  library package directories.
! .IP \fB\-X\fR 4
  .IX Item "-X"
  Output information describing the contents of all source files being
! compiled in JSON format to a file.  The driver determines \fIfile\fR by
  removing any directory components and suffix from the input file, and then
  adding a \fI.json\fR suffix.
  .IP "\fB\-Xf\fR \fIfile\fR" 4
  .IX Item "-Xf file"
! Same as \fB\-X\fR, but writes all JSON contents to the specified
  \&\fIfile\fR.
! .IP \fB\-fdoc\fR 4
  .IX Item "-fdoc"
  Generates \f(CW\*(C`Ddoc\*(C'\fR documentation and writes it to a file.  The compiler
  determines \fIfile\fR by removing any directory components and suffix
  from the input file, and then adding a \fI.html\fR suffix.
! .IP \fB\-fdoc\-dir=\fR\fIdir\fR 4
  .IX Item "-fdoc-dir=dir"
  Same as \fB\-fdoc\fR, but writes documentation to directory \fIdir\fR.
  This option can be used with \fB\-fdoc\-file=\fR\fIfile\fR to
  independently set the output file and directory path.
! .IP \fB\-fdoc\-file=\fR\fIfile\fR 4
  .IX Item "-fdoc-file=file"
  Same as \fB\-fdoc\fR, but writes documentation to \fIfile\fR.  This
  option can be used with \fB\-fdoc\-dir=\fR\fIdir\fR to independently
  set the output file and directory path.
! .IP \fB\-fdoc\-inc=\fR\fIfile\fR 4
  .IX Item "-fdoc-inc=file"
  Specify \fIfile\fR as a \fIDdoc\fR macro file to be read.  Multiple
  \&\fB\-fdoc\-inc\fR options can be used, and files are read and processed
  in the same order.
! .IP \fB\-fdump\-c++\-spec=\fR\fIfile\fR 4
  .IX Item "-fdump-c++-spec=file"
! For D source files, generate corresponding C++ declarations in \fIfile\fR.
! .IP \fB\-fdump\-c++\-spec\-verbose\fR 4
  .IX Item "-fdump-c++-spec-verbose"
  In conjunction with \fB\-fdump\-c++\-spec=\fR above, add comments for ignored
! declarations in the generated C++ header.
! .IP \fB\-fsave\-mixins=\fR\fIfile\fR 4
  .IX Item "-fsave-mixins=file"
  Generates code expanded from D \f(CW\*(C`mixin\*(C'\fR statements and writes the
  processed sources to \fIfile\fR.  This is useful to debug errors in compilation
  and provides source for debuggers to show when requested.
! .SS Warnings
  .IX Subsection "Warnings"
  Warnings are diagnostic messages that report constructions that
  are not inherently erroneous but that are risky or suggest there
  is likely to be a bug in the program.  Unless \fB\-Werror\fR is
  specified, they do not prevent compilation of the program.
! .IP \fB\-Wall\fR 4
  .IX Item "-Wall"
  Turns on all warnings messages.  Warnings are not a defined part of
  the D language, and all constructs for which this may generate a
  warning message are valid code.
! .IP \fB\-Walloca\fR 4
  .IX Item "-Walloca"
! This option warns on all uses of "alloca" in the source.
! .IP \fB\-Walloca\-larger\-than=\fR\fIn\fR 4
  .IX Item "-Walloca-larger-than=n"
  Warn on unbounded uses of alloca, and on bounded uses of alloca
  whose bound can be larger than \fIn\fR bytes.
  \&\fB\-Wno\-alloca\-larger\-than\fR disables
  \&\fB\-Walloca\-larger\-than\fR warning and is equivalent to
! \&\fB\-Walloca\-larger\-than=\fR\fISIZE_MAX\fR or larger.
! .IP \fB\-Wno\-builtin\-declaration\-mismatch\fR 4
  .IX Item "-Wno-builtin-declaration-mismatch"
! Warn if a built\-in function is declared with an incompatible signature.
! .IP \fB\-Wcast\-result\fR 4
  .IX Item "-Wcast-result"
  Warn about casts that will produce a null or zero result.  Currently
! this is only done for casting between an imaginary and non\-imaginary
! data type, or casting between a D and C++ class.
! .IP \fB\-Wno\-deprecated\fR 4
  .IX Item "-Wno-deprecated"
  Do not warn about usage of deprecated features and symbols with
  \&\f(CW\*(C`deprecated\*(C'\fR attributes.
! .IP \fB\-Werror\fR 4
  .IX Item "-Werror"
  Turns all warnings into errors.
! .IP \fB\-Wextra\fR 4
  .IX Item "-Wextra"
  This enables some extra warning flags that are not enabled by
  \&\fB\-Wall\fR.
*************** This enables some extra warning flags th
*** 673,739 ****
  \&\-Wcast\-result
  \&\-Wmismatched\-special\-enum
  \&\-Wunknown\-pragmas\fR
! .IP "\fB\-Wmismatched\-special\-enum\fR" 4
  .IX Item "-Wmismatched-special-enum"
  Warn when an enum the compiler recognizes as special is declared with a
! different size to the built-in type it is representing.
! .IP "\fB\-Wspeculative\fR" 4
  .IX Item "-Wspeculative"
  List all error messages from speculative compiles, such as
  \&\f(CW\*(C`_\|_traits(compiles, ...)\*(C'\fR.  This option does not report
  messages as warnings, and these messages therefore never become
  errors when the \fB\-Werror\fR option is also used.
! .IP "\fB\-Wunknown\-pragmas\fR" 4
  .IX Item "-Wunknown-pragmas"
! Warn when a \f(CW\*(C`pragma()\*(C'\fR is encountered that is not understood by
  \&\fBgdc\fR.  This differs from \fB\-fignore\-unknown\-pragmas\fR
  where a pragma that is part of the D language, but not implemented by
! the compiler, won't get reported.
! .IP "\fB\-Wno\-varargs\fR" 4
  .IX Item "-Wno-varargs"
  Do not warn upon questionable usage of the macros used to handle variable
  arguments like \f(CW\*(C`va_start\*(C'\fR.
! .IP "\fB\-fno\-ignore\-unknown\-pragmas\fR" 4
  .IX Item "-fno-ignore-unknown-pragmas"
! Do not recognize unsupported pragmas.  Any \f(CW\*(C`pragma()\*(C'\fR encountered that is
  not part of the D language will result in an error.  This option is now
  deprecated and will be removed in a future release.
! .IP "\fB\-fmax\-errors=\fR\fIn\fR" 4
  .IX Item "-fmax-errors=n"
  Limits the maximum number of error messages to \fIn\fR, at which point
  \&\fBgdc\fR bails out rather than attempting to continue processing the
  source code.  If \fIn\fR is 0 (the default), there is no limit on the
  number of error messages produced.
! .IP "\fB\-fsyntax\-only\fR" 4
  .IX Item "-fsyntax-only"
  Check the code for syntax errors, but do not actually compile it.  This
  can be used in conjunction with \fB\-fdoc\fR or \fB\-H\fR to generate
! files for each module present on the command-line, but no other output
  file.
! .IP "\fB\-ftransition=\fR\fIid\fR" 4
  .IX Item "-ftransition=id"
  Report additional information about D language changes identified by
  \&\fIid\fR.  The following values are supported:
  .RS 4
! .IP "\fBall\fR" 4
  .IX Item "all"
  List information on all D language transitions.
! .IP "\fBcomplex\fR" 4
  .IX Item "complex"
  List all usages of complex or imaginary types.
! .IP "\fBfield\fR" 4
  .IX Item "field"
! List all non-mutable fields which occupy an object instance.
! .IP "\fBin\fR" 4
  .IX Item "in"
  List all usages of \f(CW\*(C`in\*(C'\fR on parameter.
! .IP "\fBnogc\fR" 4
  .IX Item "nogc"
! List all hidden \s-1GC\s0 allocations.
! .IP "\fBtemplates\fR" 4
  .IX Item "templates"
  List statistics on template instantiations.
! .IP "\fBtls\fR" 4
  .IX Item "tls"
  List all variables going into thread local storage.
  .RE
--- 602,668 ----
  \&\-Wcast\-result
  \&\-Wmismatched\-special\-enum
  \&\-Wunknown\-pragmas\fR
! .IP \fB\-Wmismatched\-special\-enum\fR 4
  .IX Item "-Wmismatched-special-enum"
  Warn when an enum the compiler recognizes as special is declared with a
! different size to the built\-in type it is representing.
! .IP \fB\-Wspeculative\fR 4
  .IX Item "-Wspeculative"
  List all error messages from speculative compiles, such as
  \&\f(CW\*(C`_\|_traits(compiles, ...)\*(C'\fR.  This option does not report
  messages as warnings, and these messages therefore never become
  errors when the \fB\-Werror\fR option is also used.
! .IP \fB\-Wunknown\-pragmas\fR 4
  .IX Item "-Wunknown-pragmas"
! Warn when a \f(CWpragma()\fR is encountered that is not understood by
  \&\fBgdc\fR.  This differs from \fB\-fignore\-unknown\-pragmas\fR
  where a pragma that is part of the D language, but not implemented by
! the compiler, won\*(Aqt get reported.
! .IP \fB\-Wno\-varargs\fR 4
  .IX Item "-Wno-varargs"
  Do not warn upon questionable usage of the macros used to handle variable
  arguments like \f(CW\*(C`va_start\*(C'\fR.
! .IP \fB\-fno\-ignore\-unknown\-pragmas\fR 4
  .IX Item "-fno-ignore-unknown-pragmas"
! Do not recognize unsupported pragmas.  Any \f(CWpragma()\fR encountered that is
  not part of the D language will result in an error.  This option is now
  deprecated and will be removed in a future release.
! .IP \fB\-fmax\-errors=\fR\fIn\fR 4
  .IX Item "-fmax-errors=n"
  Limits the maximum number of error messages to \fIn\fR, at which point
  \&\fBgdc\fR bails out rather than attempting to continue processing the
  source code.  If \fIn\fR is 0 (the default), there is no limit on the
  number of error messages produced.
! .IP \fB\-fsyntax\-only\fR 4
  .IX Item "-fsyntax-only"
  Check the code for syntax errors, but do not actually compile it.  This
  can be used in conjunction with \fB\-fdoc\fR or \fB\-H\fR to generate
! files for each module present on the command\-line, but no other output
  file.
! .IP \fB\-ftransition=\fR\fIid\fR 4
  .IX Item "-ftransition=id"
  Report additional information about D language changes identified by
  \&\fIid\fR.  The following values are supported:
  .RS 4
! .IP \fBall\fR 4
  .IX Item "all"
  List information on all D language transitions.
! .IP \fBcomplex\fR 4
  .IX Item "complex"
  List all usages of complex or imaginary types.
! .IP \fBfield\fR 4
  .IX Item "field"
! List all non\-mutable fields which occupy an object instance.
! .IP \fBin\fR 4
  .IX Item "in"
  List all usages of \f(CW\*(C`in\*(C'\fR on parameter.
! .IP \fBnogc\fR 4
  .IX Item "nogc"
! List all hidden GC allocations.
! .IP \fBtemplates\fR 4
  .IX Item "templates"
  List statistics on template instantiations.
! .IP \fBtls\fR 4
  .IX Item "tls"
  List all variables going into thread local storage.
  .RE
*************** List all variables going into thread loc
*** 744,773 ****
  These options come into play when the compiler links object files into an
  executable output file.  They are meaningless if the compiler is not doing
  a link step.
! .IP "\fB\-defaultlib=\fR\fIlibname\fR" 4
  .IX Item "-defaultlib=libname"
  Specify the library to use instead of libphobos when linking.  Options
  specifying the linkage of libphobos, such as \fB\-static\-libphobos\fR
  or \fB\-shared\-libphobos\fR, are ignored.
! .IP "\fB\-debuglib=\fR\fIlibname\fR" 4
  .IX Item "-debuglib=libname"
  Specify the debug library to use instead of libphobos when linking.
  This option has no effect unless the \fB\-g\fR option was also given
  on the command line.  Options specifying the linkage of libphobos, such
  as \fB\-static\-libphobos\fR or \fB\-shared\-libphobos\fR, are ignored.
! .IP "\fB\-nophoboslib\fR" 4
  .IX Item "-nophoboslib"
  Do not use the Phobos or D runtime library when linking.  Options specifying
  the linkage of libphobos, such as \fB\-static\-libphobos\fR or
  \&\fB\-shared\-libphobos\fR, are ignored.  The standard system libraries are
  used normally, unless \fB\-nostdlib\fR or \fB\-nodefaultlibs\fR is used.
! .IP "\fB\-shared\-libphobos\fR" 4
  .IX Item "-shared-libphobos"
  On systems that provide \fIlibgphobos\fR and \fIlibgdruntime\fR as a
  shared and a static library, this option forces the use of the shared
  version.  If no shared version was built when the compiler was configured,
  this option has no effect.
! .IP "\fB\-static\-libphobos\fR" 4
  .IX Item "-static-libphobos"
  On systems that provide \fIlibgphobos\fR and \fIlibgdruntime\fR as a
  shared and a static library, this option forces the use of the static
--- 673,702 ----
  These options come into play when the compiler links object files into an
  executable output file.  They are meaningless if the compiler is not doing
  a link step.
! .IP \fB\-defaultlib=\fR\fIlibname\fR 4
  .IX Item "-defaultlib=libname"
  Specify the library to use instead of libphobos when linking.  Options
  specifying the linkage of libphobos, such as \fB\-static\-libphobos\fR
  or \fB\-shared\-libphobos\fR, are ignored.
! .IP \fB\-debuglib=\fR\fIlibname\fR 4
  .IX Item "-debuglib=libname"
  Specify the debug library to use instead of libphobos when linking.
  This option has no effect unless the \fB\-g\fR option was also given
  on the command line.  Options specifying the linkage of libphobos, such
  as \fB\-static\-libphobos\fR or \fB\-shared\-libphobos\fR, are ignored.
! .IP \fB\-nophoboslib\fR 4
  .IX Item "-nophoboslib"
  Do not use the Phobos or D runtime library when linking.  Options specifying
  the linkage of libphobos, such as \fB\-static\-libphobos\fR or
  \&\fB\-shared\-libphobos\fR, are ignored.  The standard system libraries are
  used normally, unless \fB\-nostdlib\fR or \fB\-nodefaultlibs\fR is used.
! .IP \fB\-shared\-libphobos\fR 4
  .IX Item "-shared-libphobos"
  On systems that provide \fIlibgphobos\fR and \fIlibgdruntime\fR as a
  shared and a static library, this option forces the use of the shared
  version.  If no shared version was built when the compiler was configured,
  this option has no effect.
! .IP \fB\-static\-libphobos\fR 4
  .IX Item "-static-libphobos"
  On systems that provide \fIlibgphobos\fR and \fIlibgdruntime\fR as a
  shared and a static library, this option forces the use of the static
*************** version.  If no static version was built
*** 775,787 ****
  this option has no effect.
  .SS "Developer Options"
  .IX Subsection "Developer Options"
! This section describes command-line options that are primarily of
  interest to developers or language tooling.
! .IP "\fB\-fdump\-d\-original\fR" 4
  .IX Item "-fdump-d-original"
! Output the internal front-end \s-1AST\s0 after the \f(CW\*(C`semantic3\*(C'\fR stage.
! This option is only useful for debugging the \s-1GNU D\s0 compiler itself.
! .IP "\fB\-v\fR" 4
  .IX Item "-v"
  Dump information about the compiler language processing stages as the source
  program is being compiled.  This includes listing all modules that are
--- 704,716 ----
  this option has no effect.
  .SS "Developer Options"
  .IX Subsection "Developer Options"
! This section describes command\-line options that are primarily of
  interest to developers or language tooling.
! .IP \fB\-fdump\-d\-original\fR 4
  .IX Item "-fdump-d-original"
! Output the internal front\-end AST after the \f(CW\*(C`semantic3\*(C'\fR stage.
! This option is only useful for debugging the GNU D compiler itself.
! .IP \fB\-v\fR 4
  .IX Item "-v"
  Dump information about the compiler language processing stages as the source
  program is being compiled.  This includes listing all modules that are
*************** processed through the \f(CW\*(C`parse\*(
*** 790,804 ****
  and all \f(CW\*(C`function\*(C'\fR bodies that are being compiled.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf\-funding\fR\|(7), \fIgcc\fR\|(1)
  and the Info entries for \fIgdc\fR and \fIgcc\fR.
! .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 2006\-2025 Free Software Foundation, Inc.
  .PP
  Permission is granted to copy, distribute and/or modify this document
! under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 or
  any later version published by the Free Software Foundation; with no
! Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
  A copy of the license is included in the
! man page \fIgfdl\fR\|(7).
--- 719,733 ----
  and all \f(CW\*(C`function\*(C'\fR bodies that are being compiled.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fBgpl\fR\|(7), \fBgfdl\fR\|(7), \fBfsf\-funding\fR\|(7), \fBgcc\fR\|(1)
  and the Info entries for \fIgdc\fR and \fIgcc\fR.
! .SH COPYRIGHT
  .IX Header "COPYRIGHT"
  Copyright (c) 2006\-2025 Free Software Foundation, Inc.
  .PP
  Permission is granted to copy, distribute and/or modify this document
! under the terms of the GNU Free Documentation License, Version 1.3 or
  any later version published by the Free Software Foundation; with no
! Invariant Sections, no Front\-Cover Texts, and no Back\-Cover Texts.
  A copy of the license is included in the
! man page \fBgfdl\fR\|(7).
diff -Nrcpad gcc-15.2.0/gcc/doc/gdc.info gcc-15.3.0/gcc/doc/gdc.info
*** gcc-15.2.0/gcc/doc/gdc.info	Fri Aug  8 07:17:54 2025
--- gcc-15.3.0/gcc/doc/gdc.info	Fri Jun 12 06:36:43 2026
***************
*** 1,6 ****
! This is gdc.info, produced by makeinfo version 6.5 from gdc.texi.
  
! Copyright (C) 2006-2025 Free Software Foundation, Inc.
  
     Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,6 ----
! This is gdc.info, produced by makeinfo version 7.1 from gdc.texi.
  
! Copyright Â© 2006-2025 Free Software Foundation, Inc.
  
     Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** START-INFO-DIR-ENTRY
*** 14,20 ****
  END-INFO-DIR-ENTRY
  
  
!    Copyright (C) 2006-2025 Free Software Foundation, Inc.
  
     Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 14,20 ----
  END-INFO-DIR-ENTRY
  
  
!    Copyright Â© 2006-2025 Free Software Foundation, Inc.
  
     Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** File: gdc.info,  Node: Top,  Next: Invok
*** 29,37 ****
  Introduction
  ************
  
! This manual describes how to use 'gdc', the GNU compiler for the D
  programming language.  This manual is specifically about how to invoke
! 'gdc', as well as its features and incompatibilities.  For more
  information about the D programming language in general, including
  language specifications and standard package documentation, see
  <https://dlang.org/>.
--- 29,37 ----
  Introduction
  ************
  
! This manual describes how to use â€˜gdcâ€™, the GNU compiler for the D
  programming language.  This manual is specifically about how to invoke
! â€˜gdcâ€™, as well as its features and incompatibilities.  For more
  information about the D programming language in general, including
  language specifications and standard package documentation, see
  <https://dlang.org/>.
*************** File: gdc.info,  Node: Invoking gdc,  Ne
*** 52,60 ****
  1 Invoking gdc
  **************
  
! The 'gdc' command is the GNU compiler for the D language and supports
! many of the same options as 'gcc'.  *Note Option Summary: (gcc)Option
! Summary.  This manual only documents the options specific to 'gdc'.
  
  * Menu:
  
--- 52,60 ----
  1 Invoking gdc
  **************
  
! The â€˜gdcâ€™ command is the GNU compiler for the D language and supports
! many of the same options as â€˜gccâ€™.  *Note Option Summary: (gcc)Option
! Summary.  This manual only documents the options specific to â€˜gdcâ€™.
  
  * Menu:
  
*************** For any given input file, the file name
*** 77,105 ****
  compilation is done.  The following kinds of input file names are
  supported:
  
! 'FILE.d'
       D source files.
! 'FILE.dd'
       Ddoc source files.
! 'FILE.di'
       D interface files.
  
!    You can specify more than one input file on the 'gdc' command line,
  each being compiled separately in the compilation process.  If you
! specify a '-o FILE' option, all the input files are compiled together,
  producing a single output file, named FILE.  This is allowed even when
! using '-S' or '-c'.
  
     A D interface file contains only what an import of the module needs,
  rather than the whole implementation of that module.  They can be
! created by 'gdc' from a D source file by using the '-H' option.  When
  the compiler resolves an import declaration, it searches for matching
! '.di' files first, then for '.d'.
  
     A Ddoc source file contains code in the D macro processor language.
  It is primarily designed for use in producing user documentation from
  embedded comments, with a slight affinity towards HTML generation.  If a
! '.d' source file starts with the string 'Ddoc' then it is treated as
  general purpose documentation, not as a D source file.
  
  
--- 77,105 ----
  compilation is done.  The following kinds of input file names are
  supported:
  
! â€˜FILE.dâ€™
       D source files.
! â€˜FILE.ddâ€™
       Ddoc source files.
! â€˜FILE.diâ€™
       D interface files.
  
!    You can specify more than one input file on the â€˜gdcâ€™ command line,
  each being compiled separately in the compilation process.  If you
! specify a â€˜-o FILEâ€™ option, all the input files are compiled together,
  producing a single output file, named FILE.  This is allowed even when
! using â€˜-Sâ€™ or â€˜-câ€™.
  
     A D interface file contains only what an import of the module needs,
  rather than the whole implementation of that module.  They can be
! created by â€˜gdcâ€™ from a D source file by using the â€˜-Hâ€™ option.  When
  the compiler resolves an import declaration, it searches for matching
! â€˜.diâ€™ files first, then for â€˜.dâ€™.
  
     A Ddoc source file contains code in the D macro processor language.
  It is primarily designed for use in producing user documentation from
  embedded comments, with a slight affinity towards HTML generation.  If a
! â€˜.dâ€™ source file starts with the string â€˜Ddocâ€™ then it is treated as
  general purpose documentation, not as a D source file.
  
  
*************** File: gdc.info,  Node: Runtime Options,
*** 109,174 ****
  ===================
  
  These options affect the runtime behavior of programs compiled with
! 'gdc'.
  
! '-fall-instantiations'
       Generate code for all template instantiations.  The default
       template emission strategy is to not generate code for declarations
       that were either instantiated speculatively, such as from
!      '__traits(compiles, ...)', or that come from an imported module not
       being compiled.
  
! '-fno-assert'
!      Turn off code generation for 'assert' contracts.
  
! '-fno-bounds-check'
       Turns off array bounds checking for all functions, which can
       improve performance for code that uses arrays extensively.  Note
       that this can result in unpredictable behavior if the code in
       question actually does violate array bounds constraints.  It is
       safe to use this option if you are sure that your code never throws
!      a 'RangeError'.
  
! '-fbounds-check=VALUE'
!      An alternative to '-fbounds-check' that allows more control as to
       where bounds checking is turned on or off.  The following values
       are supported:
  
!      'on'
            Turns on array bounds checking for all functions.
!      'safeonly'
!           Turns on array bounds checking only for '@safe' functions.
!      'off'
            Turns off array bounds checking completely.
  
! '-fno-builtin'
       Don't recognize built-in functions unless they begin with the
!      prefix '__builtin_'.  By default, the compiler will recognize when
!      a function in the 'core.stdc' package is a built-in function.
  
! '-fcheckaction=VALUE'
       This option controls what code is generated on an assertion, bounds
       check, or final switch failure.  The following values are
       supported:
  
!      'context'
!           Throw an 'AssertError' with extra context information.
!      'halt'
            Halt the program execution.
!      'throw'
!           Throw an 'AssertError' (the default).
  
! '-fdebug'
! '-fdebug=VALUE'
!      Turn on compilation of conditional 'debug' code into the program.
!      The '-fdebug' option itself sets the debug level to '1', while
!      '-fdebug=' enables 'debug' code that are identified by any of the
       following values:
  
!      'ident'
!           Turns on compilation of any 'debug' code identified by IDENT.
  
! '-fno-druntime'
       Implements <https://dlang.org/spec/betterc.html>.  Assumes that
       compilation targets an environment without a D runtime library.
  
--- 109,174 ----
  ===================
  
  These options affect the runtime behavior of programs compiled with
! â€˜gdcâ€™.
  
! â€˜-fall-instantiationsâ€™
       Generate code for all template instantiations.  The default
       template emission strategy is to not generate code for declarations
       that were either instantiated speculatively, such as from
!      â€˜__traits(compiles, ...)â€™, or that come from an imported module not
       being compiled.
  
! â€˜-fno-assertâ€™
!      Turn off code generation for â€˜assertâ€™ contracts.
  
! â€˜-fno-bounds-checkâ€™
       Turns off array bounds checking for all functions, which can
       improve performance for code that uses arrays extensively.  Note
       that this can result in unpredictable behavior if the code in
       question actually does violate array bounds constraints.  It is
       safe to use this option if you are sure that your code never throws
!      a â€˜RangeErrorâ€™.
  
! â€˜-fbounds-check=VALUEâ€™
!      An alternative to â€˜-fbounds-checkâ€™ that allows more control as to
       where bounds checking is turned on or off.  The following values
       are supported:
  
!      â€˜onâ€™
            Turns on array bounds checking for all functions.
!      â€˜safeonlyâ€™
!           Turns on array bounds checking only for â€˜@safeâ€™ functions.
!      â€˜offâ€™
            Turns off array bounds checking completely.
  
! â€˜-fno-builtinâ€™
       Don't recognize built-in functions unless they begin with the
!      prefix â€˜__builtin_â€™.  By default, the compiler will recognize when
!      a function in the â€˜core.stdcâ€™ package is a built-in function.
  
! â€˜-fcheckaction=VALUEâ€™
       This option controls what code is generated on an assertion, bounds
       check, or final switch failure.  The following values are
       supported:
  
!      â€˜contextâ€™
!           Throw an â€˜AssertErrorâ€™ with extra context information.
!      â€˜haltâ€™
            Halt the program execution.
!      â€˜throwâ€™
!           Throw an â€˜AssertErrorâ€™ (the default).
  
! â€˜-fdebugâ€™
! â€˜-fdebug=VALUEâ€™
!      Turn on compilation of conditional â€˜debugâ€™ code into the program.
!      The â€˜-fdebugâ€™ option itself sets the debug level to â€˜1â€™, while
!      â€˜-fdebug=â€™ enables â€˜debugâ€™ code that are identified by any of the
       following values:
  
!      â€˜identâ€™
!           Turns on compilation of any â€˜debugâ€™ code identified by IDENT.
  
! â€˜-fno-druntimeâ€™
       Implements <https://dlang.org/spec/betterc.html>.  Assumes that
       compilation targets an environment without a D runtime library.
  
*************** These options affect the runtime behavio
*** 176,288 ****
  
            gdc -nophoboslib -fno-exceptions -fno-moduleinfo -fno-rtti
  
! '-fextern-std=STANDARD'
       Sets the C++ name mangling compatibility to the version identified
       by STANDARD.  The following values are supported:
  
!      'c++98'
!      'c++03'
!           Sets '__traits(getTargetInfo, "cppStd")' to '199711'.
!      'c++11'
!           Sets '__traits(getTargetInfo, "cppStd")' to '201103'.
!      'c++14'
!           Sets '__traits(getTargetInfo, "cppStd")' to '201402'.
!      'c++17'
!           Sets '__traits(getTargetInfo, "cppStd")' to '201703'.  This is
            the default.
!      'c++20'
!           Sets '__traits(getTargetInfo, "cppStd")' to '202002'.
!      'c++23'
!           Sets '__traits(getTargetInfo, "cppStd")' to '202302'.
  
! '-finclude-imports'
       Include imported modules in the compilation, as if they were given
       on the command line.  When this option is enabled, all imported
       modules are compiled except those that are part of libphobos.
  
! '-fno-invariants'
!      Turns off code generation for class 'invariant' contracts.
  
! '-fmain'
!      Generates a default 'main()' function when compiling.  This is
       useful when unittesting a library, as it enables running the
       unittests in a library without having to manually define an
!      entry-point function.  This option does nothing when 'main' is
       already defined in user code.
  
! '-fno-moduleinfo'
!      Turns off generation of the 'ModuleInfo' and related functions that
       would become unreferenced without it, which may allow linking to
       programs not written in D. Functions that are not be generated
!      include module constructors and destructors ('static this' and
!      'static ~this'), 'unittest' code, and 'DSO' registry functions for
       dynamically linked code.
  
! '-fonly=FILENAME'
       Tells the compiler to parse and run semantic analysis on all
       modules on the command line, but only generate code for the module
       specified by FILENAME.
  
! '-fno-postconditions'
!      Turns off code generation for postcondition 'out' contracts.
  
! '-fno-preconditions'
!      Turns off code generation for precondition 'in' contracts.
  
! '-fpreview=ID'
       Turns on an upcoming D language change identified by ID.  The
       following values are supported:
  
!      'all'
            Turns on all upcoming D language features.
!      'bitfields'
            Implements bit-fields in D.
!      'dip1000'
            Implements
            <https://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1000.md>
            (Scoped pointers).
!      'dip1008'
            Implements
            <https://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1008.md>
!           (Allow exceptions in '@nogc' code).
!      'dip1021'
            Implements
            <https://github.com/dlang/DIPs/blob/master/DIPs/accepted/DIP1021.md>
            (Mutable function arguments).
!      'dip25'
            Implements
            <https://github.com/dlang/DIPs/blob/master/DIPs/archive/DIP25.md>
            (Sealed references).
!      'dtorfields'
            Turns on generation for destructing fields of partially
            constructed objects.
!      'fieldwise'
            Turns on generation of struct equality to use field-wise
            comparisons.
!      'fixaliasthis'
            Implements new lookup rules that check the current scope for
!           'alias this' before searching in upper scopes.
!      'fiximmutableconv'
            Disallows unsound immutable conversions that were formerly
            incorrectly permitted.
!      'in'
!           Implements 'in' parameters to mean 'scope const [ref]' and
            accepts rvalues.
!      'inclusiveincontracts'
!           Implements 'in' contracts of overridden methods to be a
            superset of parent contract.
!      'nosharedaccess'
            Turns off and disallows all access to shared memory objects.
!      'rvaluerefparam'
!           Implements rvalue arguments to 'ref' parameters.
!      'systemvariables'
!           Disables access to variables marked '@system' from '@safe'
            code.
  
! '-frelease'
       Turns on compiling in release mode, which means not emitting
       runtime checks for contracts and asserts.  Array bounds checking is
!      not done for '@system' and '@trusted' functions, and assertion
       failures are undefined behavior.
  
       This is equivalent to compiling with the following options:
--- 176,288 ----
  
            gdc -nophoboslib -fno-exceptions -fno-moduleinfo -fno-rtti
  
! â€˜-fextern-std=STANDARDâ€™
       Sets the C++ name mangling compatibility to the version identified
       by STANDARD.  The following values are supported:
  
!      â€˜c++98â€™
!      â€˜c++03â€™
!           Sets â€˜__traits(getTargetInfo, "cppStd")â€™ to â€˜199711â€™.
!      â€˜c++11â€™
!           Sets â€˜__traits(getTargetInfo, "cppStd")â€™ to â€˜201103â€™.
!      â€˜c++14â€™
!           Sets â€˜__traits(getTargetInfo, "cppStd")â€™ to â€˜201402â€™.
!      â€˜c++17â€™
!           Sets â€˜__traits(getTargetInfo, "cppStd")â€™ to â€˜201703â€™.  This is
            the default.
!      â€˜c++20â€™
!           Sets â€˜__traits(getTargetInfo, "cppStd")â€™ to â€˜202002â€™.
!      â€˜c++23â€™
!           Sets â€˜__traits(getTargetInfo, "cppStd")â€™ to â€˜202302â€™.
  
! â€˜-finclude-importsâ€™
       Include imported modules in the compilation, as if they were given
       on the command line.  When this option is enabled, all imported
       modules are compiled except those that are part of libphobos.
  
! â€˜-fno-invariantsâ€™
!      Turns off code generation for class â€˜invariantâ€™ contracts.
  
! â€˜-fmainâ€™
!      Generates a default â€˜main()â€™ function when compiling.  This is
       useful when unittesting a library, as it enables running the
       unittests in a library without having to manually define an
!      entry-point function.  This option does nothing when â€˜mainâ€™ is
       already defined in user code.
  
! â€˜-fno-moduleinfoâ€™
!      Turns off generation of the â€˜ModuleInfoâ€™ and related functions that
       would become unreferenced without it, which may allow linking to
       programs not written in D. Functions that are not be generated
!      include module constructors and destructors (â€˜static thisâ€™ and
!      â€˜static ~thisâ€™), â€˜unittestâ€™ code, and â€˜DSOâ€™ registry functions for
       dynamically linked code.
  
! â€˜-fonly=FILENAMEâ€™
       Tells the compiler to parse and run semantic analysis on all
       modules on the command line, but only generate code for the module
       specified by FILENAME.
  
! â€˜-fno-postconditionsâ€™
!      Turns off code generation for postcondition â€˜outâ€™ contracts.
  
! â€˜-fno-preconditionsâ€™
!      Turns off code generation for precondition â€˜inâ€™ contracts.
  
! â€˜-fpreview=IDâ€™
       Turns on an upcoming D language change identified by ID.  The
       following values are supported:
  
!      â€˜allâ€™
            Turns on all upcoming D language features.
!      â€˜bitfieldsâ€™
            Implements bit-fields in D.
!      â€˜dip1000â€™
            Implements
            <https://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1000.md>
            (Scoped pointers).
!      â€˜dip1008â€™
            Implements
            <https://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1008.md>
!           (Allow exceptions in â€˜@nogcâ€™ code).
!      â€˜dip1021â€™
            Implements
            <https://github.com/dlang/DIPs/blob/master/DIPs/accepted/DIP1021.md>
            (Mutable function arguments).
!      â€˜dip25â€™
            Implements
            <https://github.com/dlang/DIPs/blob/master/DIPs/archive/DIP25.md>
            (Sealed references).
!      â€˜dtorfieldsâ€™
            Turns on generation for destructing fields of partially
            constructed objects.
!      â€˜fieldwiseâ€™
            Turns on generation of struct equality to use field-wise
            comparisons.
!      â€˜fixaliasthisâ€™
            Implements new lookup rules that check the current scope for
!           â€˜alias thisâ€™ before searching in upper scopes.
!      â€˜fiximmutableconvâ€™
            Disallows unsound immutable conversions that were formerly
            incorrectly permitted.
!      â€˜inâ€™
!           Implements â€˜inâ€™ parameters to mean â€˜scope const [ref]â€™ and
            accepts rvalues.
!      â€˜inclusiveincontractsâ€™
!           Implements â€˜inâ€™ contracts of overridden methods to be a
            superset of parent contract.
!      â€˜nosharedaccessâ€™
            Turns off and disallows all access to shared memory objects.
!      â€˜rvaluerefparamâ€™
!           Implements rvalue arguments to â€˜refâ€™ parameters.
!      â€˜systemvariablesâ€™
!           Disables access to variables marked â€˜@systemâ€™ from â€˜@safeâ€™
            code.
  
! â€˜-freleaseâ€™
       Turns on compiling in release mode, which means not emitting
       runtime checks for contracts and asserts.  Array bounds checking is
!      not done for â€˜@systemâ€™ and â€˜@trustedâ€™ functions, and assertion
       failures are undefined behavior.
  
       This is equivalent to compiling with the following options:
*************** These options affect the runtime behavio
*** 290,339 ****
            gdc -fno-assert -fbounds-check=safe -fno-invariants \
                -fno-postconditions -fno-preconditions -fno-switch-errors
  
! '-frevert='
       Turns off a D language feature identified by ID.  The following
       values are supported:
  
!      'all'
            Turns off all revertable D language features.
!      'dip1000'
            Reverts
            <https://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1000.md>
            (Scoped pointers).
!      'dip25'
            Reverts
            <https://github.com/dlang/DIPs/blob/master/DIPs/archive/DIP25.md>
            (Sealed references).
!      'dtorfields'
            Turns off generation for destructing fields of partially
            constructed objects.
!      'intpromote'
!           Turns off C-style integral promotion for unary '+', '-' and
!           '~' expressions.
  
! '-fno-rtti'
       Turns off generation of run-time type information for all user
       defined types.  Any code that uses features of the language that
       require access to this information will result in an error.
  
! '-fno-switch-errors'
       This option controls what code is generated when no case is matched
!      in a 'final switch' statement.  The default run time behavior is to
!      throw a 'SwitchError'.  Turning off '-fswitch-errors' means that
       instead the execution of the program is immediately halted.
  
! '-funittest'
!      Turns on compilation of 'unittest' code, and turns on the
!      'version(unittest)' identifier.  This implies '-fassert'.
  
! '-fversion=VALUE'
!      Turns on compilation of conditional 'version' code into the program
       identified by any of the following values:
  
!      'ident'
!           Turns on compilation of 'version' code identified by IDENT.
  
! '-fno-weak-templates'
       Turns off emission of declarations that can be defined in multiple
       objects as weak symbols.  The default is to emit all public symbols
       as weak, unless the target lacks support for weak symbols.
--- 290,339 ----
            gdc -fno-assert -fbounds-check=safe -fno-invariants \
                -fno-postconditions -fno-preconditions -fno-switch-errors
  
! â€˜-frevert=â€™
       Turns off a D language feature identified by ID.  The following
       values are supported:
  
!      â€˜allâ€™
            Turns off all revertable D language features.
!      â€˜dip1000â€™
            Reverts
            <https://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1000.md>
            (Scoped pointers).
!      â€˜dip25â€™
            Reverts
            <https://github.com/dlang/DIPs/blob/master/DIPs/archive/DIP25.md>
            (Sealed references).
!      â€˜dtorfieldsâ€™
            Turns off generation for destructing fields of partially
            constructed objects.
!      â€˜intpromoteâ€™
!           Turns off C-style integral promotion for unary â€˜+â€™, â€˜-â€™ and
!           â€˜~â€™ expressions.
  
! â€˜-fno-rttiâ€™
       Turns off generation of run-time type information for all user
       defined types.  Any code that uses features of the language that
       require access to this information will result in an error.
  
! â€˜-fno-switch-errorsâ€™
       This option controls what code is generated when no case is matched
!      in a â€˜final switchâ€™ statement.  The default run time behavior is to
!      throw a â€˜SwitchErrorâ€™.  Turning off â€˜-fswitch-errorsâ€™ means that
       instead the execution of the program is immediately halted.
  
! â€˜-funittestâ€™
!      Turns on compilation of â€˜unittestâ€™ code, and turns on the
!      â€˜version(unittest)â€™ identifier.  This implies â€˜-fassertâ€™.
  
! â€˜-fversion=VALUEâ€™
!      Turns on compilation of conditional â€˜versionâ€™ code into the program
       identified by any of the following values:
  
!      â€˜identâ€™
!           Turns on compilation of â€˜versionâ€™ code identified by IDENT.
  
! â€˜-fno-weak-templatesâ€™
       Turns off emission of declarations that can be defined in multiple
       objects as weak symbols.  The default is to emit all public symbols
       as weak, unless the target lacks support for weak symbols.
*************** File: gdc.info,  Node: Directory Options
*** 349,373 ****
  These options specify directories to search for files, libraries, and
  other parts of the compiler:
  
! '-IDIR'
       Specify a directory to use when searching for imported modules at
!      compile time.  Multiple '-I' options can be used, and the paths are
       searched in the same order.
  
! '-JDIR'
       Specify a directory to use when searching for files in string
       imports at compile time.  This switch is required in order to use
!      'import(file)' expressions.  Multiple '-J' options can be used, and
       the paths are searched in the same order.
  
! '-LDIR'
!      When linking, specify a library search directory, as with 'gcc'.
  
! '-BDIR'
       This option specifies where to find the executables, libraries,
!      source files, and data files of the compiler itself, as with 'gcc'.
  
! '-fmodule-file=MODULE=SPEC'
       This option manipulates file paths of imported modules, such that
       if an imported module matches all or the leftmost part of MODULE,
       the file path in SPEC is used as the location to search for D
--- 349,373 ----
  These options specify directories to search for files, libraries, and
  other parts of the compiler:
  
! â€˜-IDIRâ€™
       Specify a directory to use when searching for imported modules at
!      compile time.  Multiple â€˜-Iâ€™ options can be used, and the paths are
       searched in the same order.
  
! â€˜-JDIRâ€™
       Specify a directory to use when searching for files in string
       imports at compile time.  This switch is required in order to use
!      â€˜import(file)â€™ expressions.  Multiple â€˜-Jâ€™ options can be used, and
       the paths are searched in the same order.
  
! â€˜-LDIRâ€™
!      When linking, specify a library search directory, as with â€˜gccâ€™.
  
! â€˜-BDIRâ€™
       This option specifies where to find the executables, libraries,
!      source files, and data files of the compiler itself, as with â€˜gccâ€™.
  
! â€˜-fmodule-file=MODULE=SPECâ€™
       This option manipulates file paths of imported modules, such that
       if an imported module matches all or the leftmost part of MODULE,
       the file path in SPEC is used as the location to search for D
*************** other parts of the compiler:
*** 386,404 ****
            import C.D.E;   // Matches C, searches for bar/D/E.d
            import A.B.C;   // No match, searches for A/B/C.d
  
! '-imultilib DIR'
       Use DIR as a subdirectory of the gcc directory containing
       target-specific D sources and interfaces.
  
! '-iprefix PREFIX'
       Specify PREFIX as the prefix for the gcc directory containing
       target-specific D sources and interfaces.  If the PREFIX represents
!      a directory, you should include the final ''/''.
  
! '-nostdinc'
       Do not search the standard system directories for D source and
       interface files.  Only the directories that have been specified
!      with '-I' options (and the directory of the current file, if
       appropriate) are searched.
  
  
--- 386,404 ----
            import C.D.E;   // Matches C, searches for bar/D/E.d
            import A.B.C;   // No match, searches for A/B/C.d
  
! â€˜-imultilib DIRâ€™
       Use DIR as a subdirectory of the gcc directory containing
       target-specific D sources and interfaces.
  
! â€˜-iprefix PREFIXâ€™
       Specify PREFIX as the prefix for the gcc directory containing
       target-specific D sources and interfaces.  If the PREFIX represents
!      a directory, you should include the final â€˜'/'â€™.
  
! â€˜-nostdincâ€™
       Do not search the standard system directories for D source and
       interface files.  Only the directories that have been specified
!      with â€˜-Iâ€™ options (and the directory of the current file, if
       appropriate) are searched.
  
  
*************** File: gdc.info,  Node: Code Generation,
*** 407,512 ****
  1.4 Code Generation
  ===================
  
! In addition to the many 'gcc' options controlling code generation, 'gdc'
  has several options specific to itself.
  
! '-H'
       Generates D interface files for all modules being compiled.  The
       compiler determines the output file based on the name of the input
       file, removes any directory components and suffix, and applies the
!      '.di' suffix.
  
! '-Hd DIR'
!      Same as '-H', but writes interface files to directory DIR.  This
!      option can be used with '-Hf FILE' to independently set the output
       file and directory path.
  
! '-Hf FILE'
!      Same as '-H' but writes interface files to FILE.  This option can
!      be used with '-Hd DIR' to independently set the output file and
       directory path.
  
! '-M'
       Output the module dependencies of all source files being compiled
!      in a format suitable for 'make'.  The compiler outputs one 'make'
       rule containing the object file name for that source file, a colon,
       and the names of all imported files.
  
! '-MM'
!      Like '-M' but does not mention imported modules from the D standard
       library package directories.
  
! '-MF FILE'
!      When used with '-M' or '-MM', specifies a FILE to write the
!      dependencies to.  When used with the driver options '-MD' or
!      '-MMD', '-MF' overrides the default dependency output file.
  
! '-MG'
!      This option is for compatibility with 'gcc', and is ignored by the
       compiler.
  
! '-MP'
       Outputs a phony target for each dependency other than the modules
       being compiled, causing each to depend on nothing.
  
! '-MT TARGET'
       Change the TARGET of the rule emitted by dependency generation to
       be exactly the string you specify.  If you want multiple targets,
!      you can specify them as a single argument to '-MT', or use multiple
!      '-MT' options.
  
! '-MQ TARGET'
!      Same as '-MT', but it quotes any characters which are special to
!      'make'.
  
! '-MD'
!      This option is equivalent to '-M -MF FILE'.  The driver determines
       FILE by removing any directory components and suffix from the input
!      file, and then adding a '.deps' suffix.
  
! '-MMD'
!      Like '-MD' but does not mention imported modules from the D
       standard library package directories.
  
! '-X'
       Output information describing the contents of all source files
       being compiled in JSON format to a file.  The driver determines
       FILE by removing any directory components and suffix from the input
!      file, and then adding a '.json' suffix.
  
! '-Xf FILE'
!      Same as '-X', but writes all JSON contents to the specified FILE.
  
! '-fdoc'
!      Generates 'Ddoc' documentation and writes it to a file.  The
       compiler determines FILE by removing any directory components and
!      suffix from the input file, and then adding a '.html' suffix.
  
! '-fdoc-dir=DIR'
!      Same as '-fdoc', but writes documentation to directory DIR.  This
!      option can be used with '-fdoc-file=FILE' to independently set the
       output file and directory path.
  
! '-fdoc-file=FILE'
!      Same as '-fdoc', but writes documentation to FILE.  This option can
!      be used with '-fdoc-dir=DIR' to independently set the output file
       and directory path.
  
! '-fdoc-inc=FILE'
!      Specify FILE as a DDOC macro file to be read.  Multiple '-fdoc-inc'
       options can be used, and files are read and processed in the same
       order.
  
! '-fdump-c++-spec=FILE'
       For D source files, generate corresponding C++ declarations in
       FILE.
  
! '-fdump-c++-spec-verbose'
!      In conjunction with '-fdump-c++-spec=' above, add comments for
       ignored declarations in the generated C++ header.
  
! '-fsave-mixins=FILE'
!      Generates code expanded from D 'mixin' statements and writes the
       processed sources to FILE.  This is useful to debug errors in
       compilation and provides source for debuggers to show when
       requested.
--- 407,512 ----
  1.4 Code Generation
  ===================
  
! In addition to the many â€˜gccâ€™ options controlling code generation, â€˜gdcâ€™
  has several options specific to itself.
  
! â€˜-Hâ€™
       Generates D interface files for all modules being compiled.  The
       compiler determines the output file based on the name of the input
       file, removes any directory components and suffix, and applies the
!      â€˜.diâ€™ suffix.
  
! â€˜-Hd DIRâ€™
!      Same as â€˜-Hâ€™, but writes interface files to directory DIR.  This
!      option can be used with â€˜-Hf FILEâ€™ to independently set the output
       file and directory path.
  
! â€˜-Hf FILEâ€™
!      Same as â€˜-Hâ€™ but writes interface files to FILE.  This option can
!      be used with â€˜-Hd DIRâ€™ to independently set the output file and
       directory path.
  
! â€˜-Mâ€™
       Output the module dependencies of all source files being compiled
!      in a format suitable for â€˜makeâ€™.  The compiler outputs one â€˜makeâ€™
       rule containing the object file name for that source file, a colon,
       and the names of all imported files.
  
! â€˜-MMâ€™
!      Like â€˜-Mâ€™ but does not mention imported modules from the D standard
       library package directories.
  
! â€˜-MF FILEâ€™
!      When used with â€˜-Mâ€™ or â€˜-MMâ€™, specifies a FILE to write the
!      dependencies to.  When used with the driver options â€˜-MDâ€™ or
!      â€˜-MMDâ€™, â€˜-MFâ€™ overrides the default dependency output file.
  
! â€˜-MGâ€™
!      This option is for compatibility with â€˜gccâ€™, and is ignored by the
       compiler.
  
! â€˜-MPâ€™
       Outputs a phony target for each dependency other than the modules
       being compiled, causing each to depend on nothing.
  
! â€˜-MT TARGETâ€™
       Change the TARGET of the rule emitted by dependency generation to
       be exactly the string you specify.  If you want multiple targets,
!      you can specify them as a single argument to â€˜-MTâ€™, or use multiple
!      â€˜-MTâ€™ options.
  
! â€˜-MQ TARGETâ€™
!      Same as â€˜-MTâ€™, but it quotes any characters which are special to
!      â€˜makeâ€™.
  
! â€˜-MDâ€™
!      This option is equivalent to â€˜-M -MF FILEâ€™.  The driver determines
       FILE by removing any directory components and suffix from the input
!      file, and then adding a â€˜.depsâ€™ suffix.
  
! â€˜-MMDâ€™
!      Like â€˜-MDâ€™ but does not mention imported modules from the D
       standard library package directories.
  
! â€˜-Xâ€™
       Output information describing the contents of all source files
       being compiled in JSON format to a file.  The driver determines
       FILE by removing any directory components and suffix from the input
!      file, and then adding a â€˜.jsonâ€™ suffix.
  
! â€˜-Xf FILEâ€™
!      Same as â€˜-Xâ€™, but writes all JSON contents to the specified FILE.
  
! â€˜-fdocâ€™
!      Generates â€˜Ddocâ€™ documentation and writes it to a file.  The
       compiler determines FILE by removing any directory components and
!      suffix from the input file, and then adding a â€˜.htmlâ€™ suffix.
  
! â€˜-fdoc-dir=DIRâ€™
!      Same as â€˜-fdocâ€™, but writes documentation to directory DIR.  This
!      option can be used with â€˜-fdoc-file=FILEâ€™ to independently set the
       output file and directory path.
  
! â€˜-fdoc-file=FILEâ€™
!      Same as â€˜-fdocâ€™, but writes documentation to FILE.  This option can
!      be used with â€˜-fdoc-dir=DIRâ€™ to independently set the output file
       and directory path.
  
! â€˜-fdoc-inc=FILEâ€™
!      Specify FILE as a DDOC macro file to be read.  Multiple â€˜-fdoc-incâ€™
       options can be used, and files are read and processed in the same
       order.
  
! â€˜-fdump-c++-spec=FILEâ€™
       For D source files, generate corresponding C++ declarations in
       FILE.
  
! â€˜-fdump-c++-spec-verboseâ€™
!      In conjunction with â€˜-fdump-c++-spec=â€™ above, add comments for
       ignored declarations in the generated C++ header.
  
! â€˜-fsave-mixins=FILEâ€™
!      Generates code expanded from D â€˜mixinâ€™ statements and writes the
       processed sources to FILE.  This is useful to debug errors in
       compilation and provides source for debuggers to show when
       requested.
*************** File: gdc.info,  Node: Warnings,  Next:
*** 519,620 ****
  
  Warnings are diagnostic messages that report constructions that are not
  inherently erroneous but that are risky or suggest there is likely to be
! a bug in the program.  Unless '-Werror' is specified, they do not
  prevent compilation of the program.
  
! '-Wall'
       Turns on all warnings messages.  Warnings are not a defined part of
       the D language, and all constructs for which this may generate a
       warning message are valid code.
  
! '-Walloca'
       This option warns on all uses of "alloca" in the source.
  
! '-Walloca-larger-than=N'
       Warn on unbounded uses of alloca, and on bounded uses of alloca
!      whose bound can be larger than N bytes.  '-Wno-alloca-larger-than'
!      disables '-Walloca-larger-than' warning and is equivalent to
!      '-Walloca-larger-than=SIZE_MAX' or larger.
  
! '-Wno-builtin-declaration-mismatch'
       Warn if a built-in function is declared with an incompatible
       signature.
  
! '-Wcast-result'
       Warn about casts that will produce a null or zero result.
       Currently this is only done for casting between an imaginary and
       non-imaginary data type, or casting between a D and C++ class.
  
! '-Wno-deprecated'
       Do not warn about usage of deprecated features and symbols with
!      'deprecated' attributes.
  
! '-Werror'
       Turns all warnings into errors.
  
! '-Wextra'
       This enables some extra warning flags that are not enabled by
!      '-Wall'.
  
            -Waddress
            -Wcast-result
            -Wmismatched-special-enum
            -Wunknown-pragmas
  
! '-Wmismatched-special-enum'
       Warn when an enum the compiler recognizes as special is declared
       with a different size to the built-in type it is representing.
  
! '-Wspeculative'
       List all error messages from speculative compiles, such as
!      '__traits(compiles, ...)'.  This option does not report messages as
       warnings, and these messages therefore never become errors when the
!      '-Werror' option is also used.
  
! '-Wunknown-pragmas'
!      Warn when a 'pragma()' is encountered that is not understood by
!      'gdc'.  This differs from '-fignore-unknown-pragmas' where a pragma
       that is part of the D language, but not implemented by the
       compiler, won't get reported.
  
! '-Wno-varargs'
       Do not warn upon questionable usage of the macros used to handle
!      variable arguments like 'va_start'.
  
! '-fno-ignore-unknown-pragmas'
!      Do not recognize unsupported pragmas.  Any 'pragma()' encountered
       that is not part of the D language will result in an error.  This
       option is now deprecated and will be removed in a future release.
  
! '-fmax-errors=N'
       Limits the maximum number of error messages to N, at which point
!      'gdc' bails out rather than attempting to continue processing the
       source code.  If N is 0 (the default), there is no limit on the
       number of error messages produced.
  
! '-fsyntax-only'
       Check the code for syntax errors, but do not actually compile it.
!      This can be used in conjunction with '-fdoc' or '-H' to generate
       files for each module present on the command-line, but no other
       output file.
  
! '-ftransition=ID'
       Report additional information about D language changes identified
       by ID.  The following values are supported:
  
!      'all'
            List information on all D language transitions.
!      'complex'
            List all usages of complex or imaginary types.
!      'field'
            List all non-mutable fields which occupy an object instance.
!      'in'
!           List all usages of 'in' on parameter.
!      'nogc'
            List all hidden GC allocations.
!      'templates'
            List statistics on template instantiations.
!      'tls'
            List all variables going into thread local storage.
  
  
--- 519,620 ----
  
  Warnings are diagnostic messages that report constructions that are not
  inherently erroneous but that are risky or suggest there is likely to be
! a bug in the program.  Unless â€˜-Werrorâ€™ is specified, they do not
  prevent compilation of the program.
  
! â€˜-Wallâ€™
       Turns on all warnings messages.  Warnings are not a defined part of
       the D language, and all constructs for which this may generate a
       warning message are valid code.
  
! â€˜-Wallocaâ€™
       This option warns on all uses of "alloca" in the source.
  
! â€˜-Walloca-larger-than=Nâ€™
       Warn on unbounded uses of alloca, and on bounded uses of alloca
!      whose bound can be larger than N bytes.  â€˜-Wno-alloca-larger-thanâ€™
!      disables â€˜-Walloca-larger-thanâ€™ warning and is equivalent to
!      â€˜-Walloca-larger-than=SIZE_MAXâ€™ or larger.
  
! â€˜-Wno-builtin-declaration-mismatchâ€™
       Warn if a built-in function is declared with an incompatible
       signature.
  
! â€˜-Wcast-resultâ€™
       Warn about casts that will produce a null or zero result.
       Currently this is only done for casting between an imaginary and
       non-imaginary data type, or casting between a D and C++ class.
  
! â€˜-Wno-deprecatedâ€™
       Do not warn about usage of deprecated features and symbols with
!      â€˜deprecatedâ€™ attributes.
  
! â€˜-Werrorâ€™
       Turns all warnings into errors.
  
! â€˜-Wextraâ€™
       This enables some extra warning flags that are not enabled by
!      â€˜-Wallâ€™.
  
            -Waddress
            -Wcast-result
            -Wmismatched-special-enum
            -Wunknown-pragmas
  
! â€˜-Wmismatched-special-enumâ€™
       Warn when an enum the compiler recognizes as special is declared
       with a different size to the built-in type it is representing.
  
! â€˜-Wspeculativeâ€™
       List all error messages from speculative compiles, such as
!      â€˜__traits(compiles, ...)â€™.  This option does not report messages as
       warnings, and these messages therefore never become errors when the
!      â€˜-Werrorâ€™ option is also used.
  
! â€˜-Wunknown-pragmasâ€™
!      Warn when a â€˜pragma()â€™ is encountered that is not understood by
!      â€˜gdcâ€™.  This differs from â€˜-fignore-unknown-pragmasâ€™ where a pragma
       that is part of the D language, but not implemented by the
       compiler, won't get reported.
  
! â€˜-Wno-varargsâ€™
       Do not warn upon questionable usage of the macros used to handle
!      variable arguments like â€˜va_startâ€™.
  
! â€˜-fno-ignore-unknown-pragmasâ€™
!      Do not recognize unsupported pragmas.  Any â€˜pragma()â€™ encountered
       that is not part of the D language will result in an error.  This
       option is now deprecated and will be removed in a future release.
  
! â€˜-fmax-errors=Nâ€™
       Limits the maximum number of error messages to N, at which point
!      â€˜gdcâ€™ bails out rather than attempting to continue processing the
       source code.  If N is 0 (the default), there is no limit on the
       number of error messages produced.
  
! â€˜-fsyntax-onlyâ€™
       Check the code for syntax errors, but do not actually compile it.
!      This can be used in conjunction with â€˜-fdocâ€™ or â€˜-Hâ€™ to generate
       files for each module present on the command-line, but no other
       output file.
  
! â€˜-ftransition=IDâ€™
       Report additional information about D language changes identified
       by ID.  The following values are supported:
  
!      â€˜allâ€™
            List information on all D language transitions.
!      â€˜complexâ€™
            List all usages of complex or imaginary types.
!      â€˜fieldâ€™
            List all non-mutable fields which occupy an object instance.
!      â€˜inâ€™
!           List all usages of â€˜inâ€™ on parameter.
!      â€˜nogcâ€™
            List all hidden GC allocations.
!      â€˜templatesâ€™
            List statistics on template instantiations.
!      â€˜tlsâ€™
            List all variables going into thread local storage.
  
  
*************** These options come into play when the co
*** 627,657 ****
  an executable output file.  They are meaningless if the compiler is not
  doing a link step.
  
! '-defaultlib=LIBNAME'
       Specify the library to use instead of libphobos when linking.
       Options specifying the linkage of libphobos, such as
!      '-static-libphobos' or '-shared-libphobos', are ignored.
  
! '-debuglib=LIBNAME'
       Specify the debug library to use instead of libphobos when linking.
!      This option has no effect unless the '-g' option was also given on
       the command line.  Options specifying the linkage of libphobos,
!      such as '-static-libphobos' or '-shared-libphobos', are ignored.
  
! '-nophoboslib'
       Do not use the Phobos or D runtime library when linking.  Options
!      specifying the linkage of libphobos, such as '-static-libphobos' or
!      '-shared-libphobos', are ignored.  The standard system libraries
!      are used normally, unless '-nostdlib' or '-nodefaultlibs' is used.
  
! '-shared-libphobos'
!      On systems that provide 'libgphobos' and 'libgdruntime' as a shared
       and a static library, this option forces the use of the shared
       version.  If no shared version was built when the compiler was
       configured, this option has no effect.
  
! '-static-libphobos'
!      On systems that provide 'libgphobos' and 'libgdruntime' as a shared
       and a static library, this option forces the use of the static
       version.  If no static version was built when the compiler was
       configured, this option has no effect.
--- 627,657 ----
  an executable output file.  They are meaningless if the compiler is not
  doing a link step.
  
! â€˜-defaultlib=LIBNAMEâ€™
       Specify the library to use instead of libphobos when linking.
       Options specifying the linkage of libphobos, such as
!      â€˜-static-libphobosâ€™ or â€˜-shared-libphobosâ€™, are ignored.
  
! â€˜-debuglib=LIBNAMEâ€™
       Specify the debug library to use instead of libphobos when linking.
!      This option has no effect unless the â€˜-gâ€™ option was also given on
       the command line.  Options specifying the linkage of libphobos,
!      such as â€˜-static-libphobosâ€™ or â€˜-shared-libphobosâ€™, are ignored.
  
! â€˜-nophoboslibâ€™
       Do not use the Phobos or D runtime library when linking.  Options
!      specifying the linkage of libphobos, such as â€˜-static-libphobosâ€™ or
!      â€˜-shared-libphobosâ€™, are ignored.  The standard system libraries
!      are used normally, unless â€˜-nostdlibâ€™ or â€˜-nodefaultlibsâ€™ is used.
  
! â€˜-shared-libphobosâ€™
!      On systems that provide â€˜libgphobosâ€™ and â€˜libgdruntimeâ€™ as a shared
       and a static library, this option forces the use of the shared
       version.  If no shared version was built when the compiler was
       configured, this option has no effect.
  
! â€˜-static-libphobosâ€™
!      On systems that provide â€˜libgphobosâ€™ and â€˜libgdruntimeâ€™ as a shared
       and a static library, this option forces the use of the static
       version.  If no static version was built when the compiler was
       configured, this option has no effect.
*************** File: gdc.info,  Node: Developer Options
*** 665,680 ****
  This section describes command-line options that are primarily of
  interest to developers or language tooling.
  
! '-fdump-d-original'
!      Output the internal front-end AST after the 'semantic3' stage.
       This option is only useful for debugging the GNU D compiler itself.
  
! '-v'
       Dump information about the compiler language processing stages as
       the source program is being compiled.  This includes listing all
!      modules that are processed through the 'parse', 'semantic',
!      'semantic2', and 'semantic3' stages; all 'import' modules and their
!      file paths; and all 'function' bodies that are being compiled.
  
  
  File: gdc.info,  Node: D Implementation,  Next: Copying,  Prev: Invoking gdc,  Up: Top
--- 665,680 ----
  This section describes command-line options that are primarily of
  interest to developers or language tooling.
  
! â€˜-fdump-d-originalâ€™
!      Output the internal front-end AST after the â€˜semantic3â€™ stage.
       This option is only useful for debugging the GNU D compiler itself.
  
! â€˜-vâ€™
       Dump information about the compiler language processing stages as
       the source program is being compiled.  This includes listing all
!      modules that are processed through the â€˜parseâ€™, â€˜semanticâ€™,
!      â€˜semantic2â€™, and â€˜semantic3â€™ stages; all â€˜importâ€™ modules and their
!      file paths; and all â€˜functionâ€™ bodies that are being compiled.
  
  
  File: gdc.info,  Node: D Implementation,  Next: Copying,  Prev: Invoking gdc,  Up: Top
*************** D programming language defined in the do
*** 691,698 ****
     The implementation details described in this manual are GNU D
  extensions to the D programming language.  If you want to write code
  that checks whether these features are available, you can test for the
! predefined version 'GNU', or you can check whether a specific feature is
! compilable using '__traits(compiles)'.
  
       version (GNU)
       {
--- 691,698 ----
     The implementation details described in this manual are GNU D
  extensions to the D programming language.  If you want to write code
  that checks whether these features are available, you can test for the
! predefined version â€˜GNUâ€™, or you can check whether a specific feature is
! compilable using â€˜__traits(compiles)â€™.
  
       version (GNU)
       {
*************** File: gdc.info,  Node: Attributes,  Next
*** 727,744 ****
  ==============
  
  User-Defined Attributes (UDA) are compile-time expressions introduced by
! the '@' token that can be attached to a declaration.  These attributes
  can then be queried, extracted, and manipulated at compile time.
  
     GNU D provides a number of extra special attributes to control
  specific compiler behavior that may help the compiler optimize or check
  code more carefully for correctness.  The attributes are defined in the
! 'gcc.attributes' module.
  
     There is some overlap between the purposes of attributes and pragmas.
! It has been found more convenient to use '@attribute' to achieve a
  natural attachment of attributes to their corresponding declarations,
! whereas 'pragma' is of use for compatibility with other compilers or
  constructs that do not naturally form part of the grammar.
  
  * Menu:
--- 727,744 ----
  ==============
  
  User-Defined Attributes (UDA) are compile-time expressions introduced by
! the â€˜@â€™ token that can be attached to a declaration.  These attributes
  can then be queried, extracted, and manipulated at compile time.
  
     GNU D provides a number of extra special attributes to control
  specific compiler behavior that may help the compiler optimize or check
  code more carefully for correctness.  The attributes are defined in the
! â€˜gcc.attributesâ€™ module.
  
     There is some overlap between the purposes of attributes and pragmas.
! It has been found more convenient to use â€˜@attributeâ€™ to achieve a
  natural attachment of attributes to their corresponding declarations,
! whereas â€˜pragmaâ€™ is of use for compatibility with other compilers or
  constructs that do not naturally form part of the grammar.
  
  * Menu:
*************** File: gdc.info,  Node: Attribute Syntax,
*** 754,767 ****
  2.1.1 Attribute Syntax
  ----------------------
  
! '@(gcc.attributes.attribute)' is the generic entrypoint for applying GCC
  attributes to a function, variable, or type.  There is no type checking
  done, as well as no deprecation path for attributes removed from the
  compiler.  So the recommendation is to use any of the other UDAs
  available as described in *note Common Attributes:: unless it is a
  target-specific attribute (*Note Target Attributes::).
  
!    Function attributes introduced by the '@attribute' UDA are used in
  the declaration of a function, followed by an attribute name string and
  any arguments separated by commas enclosed in parentheses.
  
--- 754,767 ----
  2.1.1 Attribute Syntax
  ----------------------
  
! â€˜@(gcc.attributes.attribute)â€™ is the generic entrypoint for applying GCC
  attributes to a function, variable, or type.  There is no type checking
  done, as well as no deprecation path for attributes removed from the
  compiler.  So the recommendation is to use any of the other UDAs
  available as described in *note Common Attributes:: unless it is a
  target-specific attribute (*Note Target Attributes::).
  
!    Function attributes introduced by the â€˜@attributeâ€™ UDA are used in
  the declaration of a function, followed by an attribute name string and
  any arguments separated by commas enclosed in parentheses.
  
*************** any arguments separated by commas enclos
*** 769,775 ****
       @attribute("regparm", 1) int func(int size);
  
  Multiple attributes can be applied to a single declaration either with
! multiple '@attribute' attributes, or passing all attributes as a
  comma-separated list enclosed by parentheses.
  
       // Both func1 and func2 have the same attributes applied.
--- 769,775 ----
       @attribute("regparm", 1) int func(int size);
  
  Multiple attributes can be applied to a single declaration either with
! multiple â€˜@attributeâ€™ attributes, or passing all attributes as a
  comma-separated list enclosed by parentheses.
  
       // Both func1 and func2 have the same attributes applied.
*************** comma-separated list enclosed by parenth
*** 779,785 ****
  There are some problems with the semantics of such attributes in D. For
  example, there are no manglings for attributes, although they may affect
  code generation, so problems may arise when attributed types are used in
! conjunction with templates or overloading.  Similarly, 'typeid' does not
  distinguish between types with different attributes.  Support for
  attributes in D are restricted to declarations only.
  
--- 779,785 ----
  There are some problems with the semantics of such attributes in D. For
  example, there are no manglings for attributes, although they may affect
  code generation, so problems may arise when attributed types are used in
! conjunction with templates or overloading.  Similarly, â€˜typeidâ€™ does not
  distinguish between types with different attributes.  Support for
  attributes in D are restricted to declarations only.
  
*************** File: gdc.info,  Node: Common Attributes
*** 791,811 ****
  
  The following attributes are supported on most targets.
  
! '@(gcc.attributes.alloc_size (SIZEARGIDX))'
! '@(gcc.attributes.alloc_size (SIZEARGIDX, NUMARGIDX))'
! '@(gcc.attributes.alloc_size (SIZEARGIDX, NUMARGIDX, ZEROBASEDNUMBERING))'
  
!      The '@alloc_size' attribute may be applied to a function - or a
       function pointer variable - that returns a pointer and takes at
       least one argument of an integer or enumerated type.  It indicates
       that the returned pointer points to memory whose size is given by
!      the function argument at 'sizeArgIdx', or by the product of the
!      arguments at 'sizeArgIdx' and 'numArgIdx'.  Meaningful sizes are
!      positive values less than 'ptrdiff_t.max'.  Unless
!      'zeroBasedNumbering' is true, argument numbering starts at one for
       ordinary functions, and at two for non-static member functions.
  
!      If 'numArgIdx' is less than '0', it is taken to mean there is no
       argument specifying the element count.
  
            @alloc_size(1) void* malloc(size_t);
--- 791,811 ----
  
  The following attributes are supported on most targets.
  
! â€˜@(gcc.attributes.alloc_size (SIZEARGIDX))â€™
! â€˜@(gcc.attributes.alloc_size (SIZEARGIDX, NUMARGIDX))â€™
! â€˜@(gcc.attributes.alloc_size (SIZEARGIDX, NUMARGIDX, ZEROBASEDNUMBERING))â€™
  
!      The â€˜@alloc_sizeâ€™ attribute may be applied to a function - or a
       function pointer variable - that returns a pointer and takes at
       least one argument of an integer or enumerated type.  It indicates
       that the returned pointer points to memory whose size is given by
!      the function argument at â€˜sizeArgIdxâ€™, or by the product of the
!      arguments at â€˜sizeArgIdxâ€™ and â€˜numArgIdxâ€™.  Meaningful sizes are
!      positive values less than â€˜ptrdiff_t.maxâ€™.  Unless
!      â€˜zeroBasedNumberingâ€™ is true, argument numbering starts at one for
       ordinary functions, and at two for non-static member functions.
  
!      If â€˜numArgIdxâ€™ is less than â€˜0â€™, it is taken to mean there is no
       argument specifying the element count.
  
            @alloc_size(1) void* malloc(size_t);
*************** The following attributes are supported o
*** 813,829 ****
            @alloc_size(1,2) void* my_calloc(size_t, size_t, bool);
            void malloc_cb(@alloc_size(1) void* function(size_t) ptr) { }
  
! '@(gcc.attributes.always_inline)'
  
!      The '@always_inline' attribute inlines the function independent of
       any restrictions that otherwise apply to inlining.  Failure to
       inline such a function is diagnosed as an error.
  
            @always_inline int func();
  
! '@(gcc.attributes.cold)'
  
!      The '@cold' attribute on functions is used to inform the compiler
       that the function is unlikely to be executed.  The function is
       optimized for size rather than speed and on many targets it is
       placed into a special subsection of the text section so all cold
--- 813,829 ----
            @alloc_size(1,2) void* my_calloc(size_t, size_t, bool);
            void malloc_cb(@alloc_size(1) void* function(size_t) ptr) { }
  
! â€˜@(gcc.attributes.always_inline)â€™
  
!      The â€˜@always_inlineâ€™ attribute inlines the function independent of
       any restrictions that otherwise apply to inlining.  Failure to
       inline such a function is diagnosed as an error.
  
            @always_inline int func();
  
! â€˜@(gcc.attributes.cold)â€™
  
!      The â€˜@coldâ€™ attribute on functions is used to inform the compiler
       that the function is unlikely to be executed.  The function is
       optimized for size rather than speed and on many targets it is
       placed into a special subsection of the text section so all cold
*************** The following attributes are supported o
*** 833,891 ****
  
            @cold int func();
  
! '@(gcc.attributes.flatten)'
  
!      The '@flatten' attribute is used to inform the compiler that every
       call inside this function should be inlined, if possible.
!      Functions declared with attribute '@noinline' and similar are not
       inlined.
  
            @flatten int func();
  
! '@(gcc.attributes.no_icf)'
  
!      The '@no_icf' attribute prevents a function from being merged with
       another semantically equivalent function.
  
            @no_icf int func();
  
! '@(gcc.attributes.no_sanitize ("SANITIZE_OPTION"))'
  
!      The '@no_sanitize' attribute on functions is used to inform the
       compiler that it should not do sanitization of any option mentioned
       in SANITIZE_OPTION.  A list of values acceptable by the
!      '-fsanitize' option can be provided.
  
            @no_sanitize("alignment", "object-size") void func1() { }
            @no_sanitize("alignment,object-size") void func2() { }
  
! '@(gcc.attributes.noclone)'
  
!      The '@noclone' attribute prevents a function from being considered
       for cloning - a mechanism that produces specialized copies of
       functions and which is (currently) performed by interprocedural
       constant propagation.
  
            @noclone int func();
  
! '@(gcc.attributes.noinline)'
  
!      The '@noinline' attribute prevents a function from being considered
       for inlining.  If the function does not have side effects, there
       are optimizations other than inlining that cause function calls to
       be optimized away, although the function call is live.  To keep
!      such calls from being optimized away, put 'asm { ""; }' in the
       called function, to serve as a special side effect.
  
            @noinline int func();
  
! '@(gcc.attributes.noipa)'
  
!      The '@noipa' attribute disables interprocedural optimizations
       between the function with this attribute and its callers, as if the
       body of the function is not available when optimizing callers and
       the callers are unavailable when optimizing the body.  This
!      attribute implies '@noinline', '@noclone', and '@no_icf'
       attributes.  However, this attribute is not equivalent to a
       combination of other attributes, because its purpose is to suppress
       existing and future optimizations employing interprocedural
--- 833,891 ----
  
            @cold int func();
  
! â€˜@(gcc.attributes.flatten)â€™
  
!      The â€˜@flattenâ€™ attribute is used to inform the compiler that every
       call inside this function should be inlined, if possible.
!      Functions declared with attribute â€˜@noinlineâ€™ and similar are not
       inlined.
  
            @flatten int func();
  
! â€˜@(gcc.attributes.no_icf)â€™
  
!      The â€˜@no_icfâ€™ attribute prevents a function from being merged with
       another semantically equivalent function.
  
            @no_icf int func();
  
! â€˜@(gcc.attributes.no_sanitize ("SANITIZE_OPTION"))â€™
  
!      The â€˜@no_sanitizeâ€™ attribute on functions is used to inform the
       compiler that it should not do sanitization of any option mentioned
       in SANITIZE_OPTION.  A list of values acceptable by the
!      â€˜-fsanitizeâ€™ option can be provided.
  
            @no_sanitize("alignment", "object-size") void func1() { }
            @no_sanitize("alignment,object-size") void func2() { }
  
! â€˜@(gcc.attributes.noclone)â€™
  
!      The â€˜@nocloneâ€™ attribute prevents a function from being considered
       for cloning - a mechanism that produces specialized copies of
       functions and which is (currently) performed by interprocedural
       constant propagation.
  
            @noclone int func();
  
! â€˜@(gcc.attributes.noinline)â€™
  
!      The â€˜@noinlineâ€™ attribute prevents a function from being considered
       for inlining.  If the function does not have side effects, there
       are optimizations other than inlining that cause function calls to
       be optimized away, although the function call is live.  To keep
!      such calls from being optimized away, put â€˜asm { ""; }â€™ in the
       called function, to serve as a special side effect.
  
            @noinline int func();
  
! â€˜@(gcc.attributes.noipa)â€™
  
!      The â€˜@noipaâ€™ attribute disables interprocedural optimizations
       between the function with this attribute and its callers, as if the
       body of the function is not available when optimizing callers and
       the callers are unavailable when optimizing the body.  This
!      attribute implies â€˜@noinlineâ€™, â€˜@nocloneâ€™, and â€˜@no_icfâ€™
       attributes.  However, this attribute is not equivalent to a
       combination of other attributes, because its purpose is to suppress
       existing and future optimizations employing interprocedural
*************** The following attributes are supported o
*** 897,905 ****
  
            @noipa int func();
  
! '@(gcc.attributes.noplt)'
  
!      The '@noplt' attribute is the counterpart to option '-fno-plt'.
       Calls to functions marked with this attribute in
       position-independent code do not use the PLT in
       position-independent code.
--- 897,905 ----
  
            @noipa int func();
  
! â€˜@(gcc.attributes.noplt)â€™
  
!      The â€˜@nopltâ€™ attribute is the counterpart to option â€˜-fno-pltâ€™.
       Calls to functions marked with this attribute in
       position-independent code do not use the PLT in
       position-independent code.
*************** The following attributes are supported o
*** 910,930 ****
  
            @noplt int func();
  
! '@(gcc.attributes.optimize (ARGUMENTS))'
  
!      The '@optimize' attribute is used to specify that a function is to
       be compiled with different optimization options than specified on
       the command line.  Valid ARGUMENTS are constant non-negative
       integers and strings.  Multiple arguments can be provided,
       separated by commas to specify multiple options.  Each numeric
       argument specifies an optimization level.  Each string argument
!      that begins with the letter 'O' refers to an optimization option
!      such as '-O0' or '-Os'.  Other options are taken as suffixes to the
!      '-f' prefix jointly forming the name of an optimization option.
  
!      Not every optimization option that starts with the '-f' prefix
       specified by the attribute necessarily has an effect on the
!      function.  The '@optimize' attribute should be used for debugging
       purposes only.  It is not suitable in production code.
  
            @optimize(2) double fn0(double x);
--- 910,930 ----
  
            @noplt int func();
  
! â€˜@(gcc.attributes.optimize (ARGUMENTS))â€™
  
!      The â€˜@optimizeâ€™ attribute is used to specify that a function is to
       be compiled with different optimization options than specified on
       the command line.  Valid ARGUMENTS are constant non-negative
       integers and strings.  Multiple arguments can be provided,
       separated by commas to specify multiple options.  Each numeric
       argument specifies an optimization level.  Each string argument
!      that begins with the letter â€˜Oâ€™ refers to an optimization option
!      such as â€˜-O0â€™ or â€˜-Osâ€™.  Other options are taken as suffixes to the
!      â€˜-fâ€™ prefix jointly forming the name of an optimization option.
  
!      Not every optimization option that starts with the â€˜-fâ€™ prefix
       specified by the attribute necessarily has an effect on the
!      function.  The â€˜@optimizeâ€™ attribute should be used for debugging
       purposes only.  It is not suitable in production code.
  
            @optimize(2) double fn0(double x);
*************** The following attributes are supported o
*** 936,967 ****
            @optimize("-ftree-vectorize") double fn6(double x);
            @optimize("no-finite-math-only", 3) double fn7(double x);
  
! '@(gcc.attributes.register ("REGISTERNAME"))'
  
!      The '@register' attribute specifies that a local or '__gshared'
       variable is to be given a register storage-class in the C99 sense
       of the term, and will be placed into a register named REGISTERNAME.
  
       The variable needs to boiled down to a data type that fits the
       target register.  It also cannot have either thread-local or
!      'extern' storage.  It is an error to take the address of a register
       variable.
  
            @register("ebx") __gshared int ebx = void;
            void func() { @register("r10") long r10 = 0x2a; }
  
! '@(gcc.attributes.restrict)'
  
!      The '@restrict' attribute specifies that a function parameter is to
       be restrict-qualified in the C99 sense of the term.  The parameter
       needs to boil down to either a pointer or reference type, such as a
!      D pointer, class reference, or a 'ref' parameter.
  
            void func(@restrict ref const float[16] array);
  
! '@(gcc.attributes.section ("SECTIONNAME"))'
  
!      The '@section' attribute specifies that a function or variable
       lives in a particular section.  For when you need certain
       particular functions to appear in special sections.
  
--- 936,967 ----
            @optimize("-ftree-vectorize") double fn6(double x);
            @optimize("no-finite-math-only", 3) double fn7(double x);
  
! â€˜@(gcc.attributes.register ("REGISTERNAME"))â€™
  
!      The â€˜@registerâ€™ attribute specifies that a local or â€˜__gsharedâ€™
       variable is to be given a register storage-class in the C99 sense
       of the term, and will be placed into a register named REGISTERNAME.
  
       The variable needs to boiled down to a data type that fits the
       target register.  It also cannot have either thread-local or
!      â€˜externâ€™ storage.  It is an error to take the address of a register
       variable.
  
            @register("ebx") __gshared int ebx = void;
            void func() { @register("r10") long r10 = 0x2a; }
  
! â€˜@(gcc.attributes.restrict)â€™
  
!      The â€˜@restrictâ€™ attribute specifies that a function parameter is to
       be restrict-qualified in the C99 sense of the term.  The parameter
       needs to boil down to either a pointer or reference type, such as a
!      D pointer, class reference, or a â€˜refâ€™ parameter.
  
            void func(@restrict ref const float[16] array);
  
! â€˜@(gcc.attributes.section ("SECTIONNAME"))â€™
  
!      The â€˜@sectionâ€™ attribute specifies that a function or variable
       lives in a particular section.  For when you need certain
       particular functions to appear in special sections.
  
*************** The following attributes are supported o
*** 973,981 ****
            @section("bar") extern void func();
            @section("stack") ubyte[10000] stack;
  
! '@(gcc.attributes.simd)'
  
!      The '@simd' attribute enables creation of one or more function
       versions that can process multiple arguments using SIMD
       instructions from a single invocation.  Specifying this attribute
       allows compiler to assume that such versions are available at link
--- 973,981 ----
            @section("bar") extern void func();
            @section("stack") ubyte[10000] stack;
  
! â€˜@(gcc.attributes.simd)â€™
  
!      The â€˜@simdâ€™ attribute enables creation of one or more function
       versions that can process multiple arguments using SIMD
       instructions from a single invocation.  Specifying this attribute
       allows compiler to assume that such versions are available at link
*************** The following attributes are supported o
*** 985,1022 ****
  
            @simd double sqrt(double x);
  
! '@(gcc.attributes.simd_clones ("MASK"))'
  
!      The '@simd_clones' attribute is the same as '@simd', but also
!      includes a MASK argument.  Valid masks values are 'notinbranch' or
!      'inbranch', and instructs the compiler to generate non-masked or
       masked clones correspondingly.
  
            @simd_clones("notinbranch") double atan2(double y, double x);
  
! '@(gcc.attributes.symver ("ARGUMENTS"))'
  
!      The '@symver' attribute creates a symbol version on ELF targets.
!      The syntax of the string parameter is '"NAME@NODENAME"'.  The NAME
       part of the parameter is the actual name of the symbol by which it
       will be externally referenced.  The NODENAME portion should be the
       name of a node specified in the version script supplied to the
       linker when building a shared library.  Versioned symbol must be
       defined and must be exported with default visibility.
  
!      Finally if the parameter is '"NAME@@NODENAME"' then in addition to
!      creating a symbol version (as if '"NAME@NODENAME"' was used) the
       version will be also used to resolve NAME by the linker.
  
            @symver("foo@VERS_1") int foo_v1();
  
! '@(gcc.attributes.target ("OPTIONS"))'
  
!      The '@target' attribute is used to specify that a function is to be
       compiled with different target options than specified on the
       command line.  One or more strings can be provided as arguments,
       separated by commas to specify multiple options.  Each string
!      consists of one or more comma-separated suffixes to the '-m' prefix
       jointly forming the name of a machine-dependent option.
  
       The target attribute can be used for instance to have a function
--- 985,1022 ----
  
            @simd double sqrt(double x);
  
! â€˜@(gcc.attributes.simd_clones ("MASK"))â€™
  
!      The â€˜@simd_clonesâ€™ attribute is the same as â€˜@simdâ€™, but also
!      includes a MASK argument.  Valid masks values are â€˜notinbranchâ€™ or
!      â€˜inbranchâ€™, and instructs the compiler to generate non-masked or
       masked clones correspondingly.
  
            @simd_clones("notinbranch") double atan2(double y, double x);
  
! â€˜@(gcc.attributes.symver ("ARGUMENTS"))â€™
  
!      The â€˜@symverâ€™ attribute creates a symbol version on ELF targets.
!      The syntax of the string parameter is â€˜"NAME@NODENAME"â€™.  The NAME
       part of the parameter is the actual name of the symbol by which it
       will be externally referenced.  The NODENAME portion should be the
       name of a node specified in the version script supplied to the
       linker when building a shared library.  Versioned symbol must be
       defined and must be exported with default visibility.
  
!      Finally if the parameter is â€˜"NAME@@NODENAME"â€™ then in addition to
!      creating a symbol version (as if â€˜"NAME@NODENAME"â€™ was used) the
       version will be also used to resolve NAME by the linker.
  
            @symver("foo@VERS_1") int foo_v1();
  
! â€˜@(gcc.attributes.target ("OPTIONS"))â€™
  
!      The â€˜@targetâ€™ attribute is used to specify that a function is to be
       compiled with different target options than specified on the
       command line.  One or more strings can be provided as arguments,
       separated by commas to specify multiple options.  Each string
!      consists of one or more comma-separated suffixes to the â€˜-mâ€™ prefix
       jointly forming the name of a machine-dependent option.
  
       The target attribute can be used for instance to have a function
*************** The following attributes are supported o
*** 1028,1070 ****
            @target("arch=core2") void core2_func();
            @target("sse3") void sse3_func();
  
! '@(gcc.attributes.target_clones ("OPTIONS"))'
  
!      The '@target_clones' attribute is used to specify that a function
       be cloned into multiple versions compiled with different target
       OPTIONS than specified on the command line.  The supported options
!      and restrictions are the same as for '@target' attribute.
  
       It also creates a resolver function that dynamically selects a
       clone suitable for current architecture.  The resolver is created
!      only if there is a usage of a function with '@target_clones'
       attribute.
  
            @target_clones("sse4.1,avx,default") double func(double x);
  
! '@(gcc.attributes.used)'
  
!      The '@used' attribute, annotated to a function or variable, means
       that code must be emitted for the function even if it appears that
       the function is not referenced.  This is useful, for example, when
       the function is referenced only in inline assembly.
  
            @used __gshared int var = 0x1000;
  
! '@(gcc.attributes.visibility ("VISIBILITYNAME"))'
  
!      The '@visibility' attribute affects the linkage of the declaration
       to which it is attached.  It can be applied to variables, types,
       and functions.
  
!      There are four supported visibility_type values: 'default',
!      'hidden', 'protected', or 'internal' visibility.
  
            @visibility("protected") void func() {  }
  
! '@(gcc.attributes.weak)'
  
!      The '@weak' attribute causes a declaration of an external symbol to
       be emitted as a weak symbol rather than a global.  This is
       primarily useful in defining library functions that can be
       overridden in user code, though it can also be used with
--- 1028,1070 ----
            @target("arch=core2") void core2_func();
            @target("sse3") void sse3_func();
  
! â€˜@(gcc.attributes.target_clones ("OPTIONS"))â€™
  
!      The â€˜@target_clonesâ€™ attribute is used to specify that a function
       be cloned into multiple versions compiled with different target
       OPTIONS than specified on the command line.  The supported options
!      and restrictions are the same as for â€˜@targetâ€™ attribute.
  
       It also creates a resolver function that dynamically selects a
       clone suitable for current architecture.  The resolver is created
!      only if there is a usage of a function with â€˜@target_clonesâ€™
       attribute.
  
            @target_clones("sse4.1,avx,default") double func(double x);
  
! â€˜@(gcc.attributes.used)â€™
  
!      The â€˜@usedâ€™ attribute, annotated to a function or variable, means
       that code must be emitted for the function even if it appears that
       the function is not referenced.  This is useful, for example, when
       the function is referenced only in inline assembly.
  
            @used __gshared int var = 0x1000;
  
! â€˜@(gcc.attributes.visibility ("VISIBILITYNAME"))â€™
  
!      The â€˜@visibilityâ€™ attribute affects the linkage of the declaration
       to which it is attached.  It can be applied to variables, types,
       and functions.
  
!      There are four supported visibility_type values: â€˜defaultâ€™,
!      â€˜hiddenâ€™, â€˜protectedâ€™, or â€˜internalâ€™ visibility.
  
            @visibility("protected") void func() {  }
  
! â€˜@(gcc.attributes.weak)â€™
  
!      The â€˜@weakâ€™ attribute causes a declaration of an external symbol to
       be emitted as a weak symbol rather than a global.  This is
       primarily useful in defining library functions that can be
       overridden in user code, though it can also be used with
*************** File: gdc.info,  Node: Other Attributes,
*** 1087,1145 ****
  The following attributes are defined for compatibility with other
  compilers.
  
! '@(gcc.attributes.allocSize (SIZEARGIDX))'
! '@(gcc.attributes.allocSize (SIZEARGIDX, NUMARGIDX))'
! '@(gcc.attributes.allocSize (SIZEARGIDX))'
  
!      These attributes are a synonym for '@alloc_size(SIZEARGIDX,
!      NUMARGIDX, true)'.  Unlike '@alloc_size', it uses 0-based index of
       the function arguments.
  
! '@(gcc.attributes.assumeUsed)'
  
!      This attribute is a synonym for '@used'.
  
! '@(gcc.attributes.dynamicCompile)'
! '@(gcc.attributes.dynamicCompileConst)'
! '@(gcc.attributes.dynamicCompileEmit)'
  
       These attributes are accepted, but have no effect.
  
! '@(gcc.attributes.fastmath)'
  
!      This attribute is a synonym for '@optimize("Ofast")'.  Explicitly
       sets "fast-math" for a function, enabling aggressive math
       optimizations.
  
! '@(gcc.attributes.hidden)'
  
!      This attribute is a synonym for '@visibility("hidden")'.  Sets the
       visibility of a function or global variable to "hidden".
  
! '@(gcc.attributes.naked)'
  
!      This attribute is a synonym for '@attribute("naked")'.  Adds GCC's
       "naked" attribute to a function, disabling function prologue /
       epilogue emission.  Intended to be used in combination with basic
!      'asm' statements.  While using extended 'asm' or a mixture of basic
!      'asm' and D code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
! '@(gcc.attributes.noSanitize ("SANITIZE_OPTION"))'
  
!      This attribute is a synonym for '@no_sanitize("sanitize_option")'.
  
! '@(gcc.attributes.optStrategy ("STRATEGY"))'
  
!      This attribute is a synonym for '@optimize("O0")' and
!      '@optimize("Os")'.  Sets the optimization strategy for a function.
       Valid strategies are "none", "optsize", "minsize".  The strategies
       are mutually exclusive.
  
! '@(gcc.attributes.polly)'
  
!      This attribute is a synonym for '@optimize("loop-parallelize-all",
!      "loop-nest-optimize")'.  Only effective when GDC was built with ISL
       included.
  
  
--- 1087,1145 ----
  The following attributes are defined for compatibility with other
  compilers.
  
! â€˜@(gcc.attributes.allocSize (SIZEARGIDX))â€™
! â€˜@(gcc.attributes.allocSize (SIZEARGIDX, NUMARGIDX))â€™
! â€˜@(gcc.attributes.allocSize (SIZEARGIDX))â€™
  
!      These attributes are a synonym for â€˜@alloc_size(SIZEARGIDX,
!      NUMARGIDX, true)â€™.  Unlike â€˜@alloc_sizeâ€™, it uses 0-based index of
       the function arguments.
  
! â€˜@(gcc.attributes.assumeUsed)â€™
  
!      This attribute is a synonym for â€˜@usedâ€™.
  
! â€˜@(gcc.attributes.dynamicCompile)â€™
! â€˜@(gcc.attributes.dynamicCompileConst)â€™
! â€˜@(gcc.attributes.dynamicCompileEmit)â€™
  
       These attributes are accepted, but have no effect.
  
! â€˜@(gcc.attributes.fastmath)â€™
  
!      This attribute is a synonym for â€˜@optimize("Ofast")â€™.  Explicitly
       sets "fast-math" for a function, enabling aggressive math
       optimizations.
  
! â€˜@(gcc.attributes.hidden)â€™
  
!      This attribute is a synonym for â€˜@visibility("hidden")â€™.  Sets the
       visibility of a function or global variable to "hidden".
  
! â€˜@(gcc.attributes.naked)â€™
  
!      This attribute is a synonym for â€˜@attribute("naked")â€™.  Adds GCC's
       "naked" attribute to a function, disabling function prologue /
       epilogue emission.  Intended to be used in combination with basic
!      â€˜asmâ€™ statements.  While using extended â€˜asmâ€™ or a mixture of basic
!      â€˜asmâ€™ and D code may appear to work, they cannot be depended upon
       to work reliably and are not supported.
  
! â€˜@(gcc.attributes.noSanitize ("SANITIZE_OPTION"))â€™
  
!      This attribute is a synonym for â€˜@no_sanitize("sanitize_option")â€™.
  
! â€˜@(gcc.attributes.optStrategy ("STRATEGY"))â€™
  
!      This attribute is a synonym for â€˜@optimize("O0")â€™ and
!      â€˜@optimize("Os")â€™.  Sets the optimization strategy for a function.
       Valid strategies are "none", "optsize", "minsize".  The strategies
       are mutually exclusive.
  
! â€˜@(gcc.attributes.polly)â€™
  
!      This attribute is a synonym for â€˜@optimize("loop-parallelize-all",
!      "loop-nest-optimize")â€™.  Only effective when GDC was built with ISL
       included.
  
  
*************** File: gdc.info,  Node: Target Attributes
*** 1149,1156 ****
  --------------------------------
  
  Many targets have their own target-specific attributes.  These are also
! exposed via the 'gcc.attributes' module with use of the generic
! '@(gcc.attributes.attribute)' UDA function.
  
     *Note Attribute Syntax::, for details of the exact syntax for using
  attributes.
--- 1149,1156 ----
  --------------------------------
  
  Many targets have their own target-specific attributes.  These are also
! exposed via the â€˜gcc.attributesâ€™ module with use of the generic
! â€˜@(gcc.attributes.attribute)â€™ UDA function.
  
     *Note Attribute Syntax::, for details of the exact syntax for using
  attributes.
*************** File: gdc.info,  Node: Builtin Functions
*** 1194,1202 ****
  ======================
  
  GCC provides a large number of built-in functions that are made
! available in GNU D by importing the 'gcc.builtins' module.  Declarations
  in this module are automatically created by the compiler.  All
! declarations start with '__builtin_'.  Refer to the built-in function
  documentation in the GCC manual for a full list of functions that are
  available.
  
--- 1194,1202 ----
  ======================
  
  GCC provides a large number of built-in functions that are made
! available in GNU D by importing the â€˜gcc.builtinsâ€™ module.  Declarations
  in this module are automatically created by the compiler.  All
! declarations start with â€˜__builtin_â€™.  Refer to the built-in function
  documentation in the GCC manual for a full list of functions that are
  available.
  
*************** File: gdc.info,  Node: Builtin Types,  N
*** 1213,1258 ****
  --------------------
  
  In addition to built-in functions, the following types are defined in
! the 'gcc.builtins' module.
  
! '___builtin_clong'
!      The D equivalent of the target's C 'long' type.
  
! '___builtin_clonglong'
!      The D equivalent of the target's C 'long long' type.
  
! '___builtin_culong'
!      The D equivalent of the target's C 'unsigned long' type.
  
! '___builtin_culonglong'
!      The D equivalent of the target's C 'unsigned long long' type.
  
! '___builtin_machine_byte'
       Signed unit-sized integer type.
  
! '___builtin_machine_int'
       Signed word-sized integer type.
  
! '___builtin_machine_ubyte'
       Unsigned unit-sized integer type.
  
! '___builtin_machine_uint'
       Unsigned word-sized integer type.
  
! '___builtin_pointer_int'
       Signed pointer-sized integer type.
  
! '___builtin_pointer_uint'
       Unsigned pointer-sized integer type.
  
! '___builtin_unwind_int'
!      The D equivalent of the target's C '_Unwind_Sword' type.
  
! '___builtin_unwind_uint'
!      The D equivalent of the target's C '_Unwind_Word' type.
  
! '___builtin_va_list'
!      The target's 'va_list' type.
  
  
  File: gdc.info,  Node: Query Builtins,  Next: Other Builtins,  Prev: Builtin Types,  Up: Builtin Functions
--- 1213,1258 ----
  --------------------
  
  In addition to built-in functions, the following types are defined in
! the â€˜gcc.builtinsâ€™ module.
  
! â€˜___builtin_clongâ€™
!      The D equivalent of the target's C â€˜longâ€™ type.
  
! â€˜___builtin_clonglongâ€™
!      The D equivalent of the target's C â€˜long longâ€™ type.
  
! â€˜___builtin_culongâ€™
!      The D equivalent of the target's C â€˜unsigned longâ€™ type.
  
! â€˜___builtin_culonglongâ€™
!      The D equivalent of the target's C â€˜unsigned long longâ€™ type.
  
! â€˜___builtin_machine_byteâ€™
       Signed unit-sized integer type.
  
! â€˜___builtin_machine_intâ€™
       Signed word-sized integer type.
  
! â€˜___builtin_machine_ubyteâ€™
       Unsigned unit-sized integer type.
  
! â€˜___builtin_machine_uintâ€™
       Unsigned word-sized integer type.
  
! â€˜___builtin_pointer_intâ€™
       Signed pointer-sized integer type.
  
! â€˜___builtin_pointer_uintâ€™
       Unsigned pointer-sized integer type.
  
! â€˜___builtin_unwind_intâ€™
!      The D equivalent of the target's C â€˜_Unwind_Swordâ€™ type.
  
! â€˜___builtin_unwind_uintâ€™
!      The D equivalent of the target's C â€˜_Unwind_Wordâ€™ type.
  
! â€˜___builtin_va_listâ€™
!      The target's â€˜va_listâ€™ type.
  
  
  File: gdc.info,  Node: Query Builtins,  Next: Other Builtins,  Prev: Builtin Types,  Up: Builtin Functions
*************** File: gdc.info,  Node: Query Builtins,
*** 1263,1272 ****
  Not all of the functions are supported, and some target-specific
  functions may only be available when compiling for a particular ISA. One
  way of finding out what is exposed by the built-ins module is by
! generating a D interface file.  Assuming you have no file 'builtins.d',
  the command
         echo "module gcc.builtins;" > builtins.d; gdc -H -fsyntax-only builtins.d
! will save all built-in declarations to the file 'builtins.di'.
  
     Another way to determine whether a specific built-in is available is
  by using compile-time reflection.
--- 1263,1272 ----
  Not all of the functions are supported, and some target-specific
  functions may only be available when compiling for a particular ISA. One
  way of finding out what is exposed by the built-ins module is by
! generating a D interface file.  Assuming you have no file â€˜builtins.dâ€™,
  the command
         echo "module gcc.builtins;" > builtins.d; gdc -H -fsyntax-only builtins.d
! will save all built-in declarations to the file â€˜builtins.diâ€™.
  
     Another way to determine whether a specific built-in is available is
  by using compile-time reflection.
*************** File: gdc.info,  Node: Other Builtins,
*** 1284,1389 ****
  2.2.3 Other Built-in Functions
  ------------------------------
  
! As well as built-ins being available from the 'gcc.builtins' module, GNU
! D will also recognize when an 'extern(C)' library function is a GCC
  built-in.  Many of these functions are only optimized in certain cases;
  if they are not optimized in a particular case, a call to the library
  function is emitted.  This optimization can be disabled with the
! '-fno-builtin' option (*note Runtime Options::).
  
!    In the 'core.stdc.complex' module, the functions 'cabs', 'cabsf',
! 'cabsl', 'cacos', 'cacosf', 'cacosh', 'cacoshf', 'cacoshl', 'cacosl',
! 'carg', 'cargf', 'cargl', 'casin', 'casinf', 'casinh', 'casinhf',
! 'casinhl', 'casinl', 'catan', 'catanf', 'catanh', 'catanhf', 'catanhl',
! 'catanl', 'ccos', 'ccosf', 'ccosh', 'ccoshf', 'ccoshl', 'ccosl', 'cexp',
! 'cexpf', 'cexpl', 'clog', 'clogf', 'clogl', 'conj', 'conjf', 'conjl',
! 'cpow', 'cpowf', 'cpowl', 'cproj', 'cprojf', 'cprojl', 'csin', 'csinf',
! 'csinh', 'csinhf', 'csinhl', 'csinl', 'csqrt', 'csqrtf', 'csqrtl',
! 'ctan', 'ctanf', 'ctanh', 'ctanhf', 'ctanhl', 'ctanl' may be handled as
  built-in functions.  All these functions have corresponding versions
! prefixed with '__builtin_' in the 'gcc.builtins' module.
  
!    In the 'core.stdc.ctype' module, the functions 'isalnum', 'isalpha',
! 'isblank', 'iscntrl', 'isdigit', 'isgraph', 'islower', 'isprint',
! 'ispunct', 'isspace', 'isupper', 'isxdigit', 'tolower', 'toupper' may be
  handled as built-in functions.  All these functions have corresponding
! versions prefixed with '__builtin_' in the 'gcc.builtins' module.
  
!    In the 'core.stdc.fenv' module, the functions 'feclearexcept',
! 'fegetenv', 'fegetexceptflag', 'fegetround', 'feholdexcept',
! 'feraiseexcept', 'fesetenv', 'fesetexceptflag', 'fesetround',
! 'fetestexcept', 'feupdateenv' may be handled as built-in functions.  All
! these functions have corresponding versions prefixed with '__builtin_'
! in the 'gcc.builtins' module.
  
!    In the 'core.stdc.inttypes' module, the function 'imaxabs' may be
  handled as a built-in function.  All these functions have corresponding
! versions prefixed with '__builtin_' in the 'gcc.builtins' module.
  
!    In the 'core.stdc.math' module, the functions 'acos', 'acosf',
! 'acosh', 'acoshf', 'acoshl', 'acosl', 'asin', 'asinf', 'asinh',
! 'asinhf', 'asinhl', 'asinl', 'atan', 'atan2', 'atan2f', 'atan2l',
! 'atanf', 'atanh', 'atanhf', 'atanhl', 'atanl', 'cbrt', 'cbrtf', 'cbrtl',
! 'ceil', 'ceilf', 'ceill', 'copysign', 'copysignf', 'copysignl', 'cos',
! 'cosf', 'cosh', 'coshf', 'coshl', 'cosl', 'erf', 'erfc', 'erfcf',
! 'erfcl', 'erff', 'erfl', 'exp', 'exp2', 'exp2f', 'exp2l', 'expf',
! 'expl', 'expm1', 'expm1f', 'expm1l', 'fabs', 'fabsf', 'fabsl', 'fdim',
! 'fdimf', 'fdiml', 'floor', 'floorf', 'floorl', 'fma', 'fmaf', 'fmal',
! 'fmax', 'fmaxf', 'fmaxl', 'fmin', 'fminf', 'fminl', 'fmod', 'fmodf',
! 'fmodl', 'frexp', 'frexpf', 'frexpl', 'hypot', 'hypotf', 'hypotl',
! 'ilogb', 'ilogbf', 'ilogbl', 'isinf', 'isnan', 'ldexp', 'ldexpf',
! 'ldexpl', 'lgamma', 'lgammaf', 'lgammal', 'llrint', 'llrintf',
! 'llrintl', 'llround', 'llroundf', 'llroundl', 'log', 'log10', 'log10f',
! 'log10l', 'log1p', 'log1pf', 'log1pl', 'log2', 'log2f', 'log2l', 'logb',
! 'logbf', 'logbl', 'logf', 'logl', 'lrint', 'lrintf', 'lrintl', 'lround',
! 'lroundf', 'lroundl', 'modf', 'modff', 'modfl', 'nan', 'nanf', 'nanl',
! 'nearbyint', 'nearbyintf', 'nearbyintl', 'nextafter', 'nextafterf',
! 'nextafterl', 'nexttoward', 'nexttowardf', 'nexttowardl', 'pow', 'powf',
! 'powl', 'remainder', 'remainderf', 'remainderl', 'remquo', 'remquof',
! 'remquol', 'rint', 'rintf', 'rintl', 'round', 'roundf', 'roundl',
! 'scalbln', 'scalblnf', 'scalblnl', 'scalbn', 'scalbnf', 'scalbnl',
! 'signbit', 'sin', 'sinf', 'sinh', 'sinhf', 'sinhl', 'sinl', 'sqrt',
! 'sqrtf', 'sqrtl', 'tan', 'tanf', 'tanh', 'tanhf', 'tanhl', 'tanl',
! 'tgamma', 'tgammaf', 'tgammal', 'trunc', 'truncf', 'truncl' may be
  handled as built-in functions.  All these functions have corresponding
! versions prefixed with '__builtin_' in the 'gcc.builtins' module.
  
!    In the 'core.stdc.stdio' module, the functions 'fprintf', 'fputc',
! 'fputc_unlocked', 'fputs', 'fwrite', 'printf', 'puts', 'snprintf',
! 'sprintf', 'vfprintf', 'vprintf', 'vsnprintf', 'vsprintf' may be handled
  as built-in functions.  All these functions have corresponding versions
! prefixed with '__builtin_' in the 'gcc.builtins' module.
  
!    In the 'core.stdc.stdlib' module, the functions 'abort', 'abs',
! 'aligned_alloc', 'alloca', 'calloc', 'exit', '_Exit', 'free', 'labs',
! 'llabs', 'malloc', 'realloc' may be handled as built-in functions.  All
! these functions have corresponding versions prefixed with '__builtin_'
! in the 'gcc.builtins' module.
  
!    In the 'core.stdc.string' module, the functions 'memchr', 'memcmp',
! 'memcpy', 'memmove', 'memset', 'strcat', 'strchr', 'strcmp', 'strcpy',
! 'strcspn', 'strdup', 'strlen', 'strncat', 'strncmp', 'strncpy',
! 'strpbrk', 'strrchr', 'strspn', 'strstr' may be handled as built-in
  functions.  All these functions have corresponding versions prefixed
! with '__builtin_' in the 'gcc.builtins' module.
  
!    In the 'core.stdc.time' module, the function 'strftime' may be
  handled as a built-in function.  All these functions have corresponding
! versions prefixed with '__builtin_' in the 'gcc.builtins' module.
  
!    In the 'core.stdc.wctype' module, the functions 'iswalnum',
! 'iswalpha', 'iswblank', 'iswcntrl', 'iswdigit', 'iswgraph', 'iswlower',
! 'iswprint', 'iswpunct', 'iswspace', 'iswupper', 'iswxdigit', 'towlower',
! 'towupper' may be handled as built-in functions.  All these functions
! have corresponding versions prefixed with '__builtin_' in the
! 'gcc.builtins' module.
  
!    Within the 'core.sys' package for POSIX and platform definitions, the
! functions 'putchar_unlocked', 'putc_unlocked', 'posix_memalign', 'ffs',
! 'strcasecmp', 'strncasecmp', 'stpcpy', 'stpncpy', 'strndup', 'strnlen',
! 'execl', 'execle', 'execlp', 'execv', 'execve', 'execvp', '_exit',
! 'fork' may be handled as built-in functions.  All these functions have
! corresponding versions prefixed with '__builtin_' in the 'gcc.builtins'
  module.
  
  
--- 1284,1389 ----
  2.2.3 Other Built-in Functions
  ------------------------------
  
! As well as built-ins being available from the â€˜gcc.builtinsâ€™ module, GNU
! D will also recognize when an â€˜extern(C)â€™ library function is a GCC
  built-in.  Many of these functions are only optimized in certain cases;
  if they are not optimized in a particular case, a call to the library
  function is emitted.  This optimization can be disabled with the
! â€˜-fno-builtinâ€™ option (*note Runtime Options::).
  
!    In the â€˜core.stdc.complexâ€™ module, the functions â€˜cabsâ€™, â€˜cabsfâ€™,
! â€˜cabslâ€™, â€˜cacosâ€™, â€˜cacosfâ€™, â€˜cacoshâ€™, â€˜cacoshfâ€™, â€˜cacoshlâ€™, â€˜cacoslâ€™,
! â€˜cargâ€™, â€˜cargfâ€™, â€˜carglâ€™, â€˜casinâ€™, â€˜casinfâ€™, â€˜casinhâ€™, â€˜casinhfâ€™,
! â€˜casinhlâ€™, â€˜casinlâ€™, â€˜catanâ€™, â€˜catanfâ€™, â€˜catanhâ€™, â€˜catanhfâ€™, â€˜catanhlâ€™,
! â€˜catanlâ€™, â€˜ccosâ€™, â€˜ccosfâ€™, â€˜ccoshâ€™, â€˜ccoshfâ€™, â€˜ccoshlâ€™, â€˜ccoslâ€™, â€˜cexpâ€™,
! â€˜cexpfâ€™, â€˜cexplâ€™, â€˜clogâ€™, â€˜clogfâ€™, â€˜cloglâ€™, â€˜conjâ€™, â€˜conjfâ€™, â€˜conjlâ€™,
! â€˜cpowâ€™, â€˜cpowfâ€™, â€˜cpowlâ€™, â€˜cprojâ€™, â€˜cprojfâ€™, â€˜cprojlâ€™, â€˜csinâ€™, â€˜csinfâ€™,
! â€˜csinhâ€™, â€˜csinhfâ€™, â€˜csinhlâ€™, â€˜csinlâ€™, â€˜csqrtâ€™, â€˜csqrtfâ€™, â€˜csqrtlâ€™,
! â€˜ctanâ€™, â€˜ctanfâ€™, â€˜ctanhâ€™, â€˜ctanhfâ€™, â€˜ctanhlâ€™, â€˜ctanlâ€™ may be handled as
  built-in functions.  All these functions have corresponding versions
! prefixed with â€˜__builtin_â€™ in the â€˜gcc.builtinsâ€™ module.
  
!    In the â€˜core.stdc.ctypeâ€™ module, the functions â€˜isalnumâ€™, â€˜isalphaâ€™,
! â€˜isblankâ€™, â€˜iscntrlâ€™, â€˜isdigitâ€™, â€˜isgraphâ€™, â€˜islowerâ€™, â€˜isprintâ€™,
! â€˜ispunctâ€™, â€˜isspaceâ€™, â€˜isupperâ€™, â€˜isxdigitâ€™, â€˜tolowerâ€™, â€˜toupperâ€™ may be
  handled as built-in functions.  All these functions have corresponding
! versions prefixed with â€˜__builtin_â€™ in the â€˜gcc.builtinsâ€™ module.
  
!    In the â€˜core.stdc.fenvâ€™ module, the functions â€˜feclearexceptâ€™,
! â€˜fegetenvâ€™, â€˜fegetexceptflagâ€™, â€˜fegetroundâ€™, â€˜feholdexceptâ€™,
! â€˜feraiseexceptâ€™, â€˜fesetenvâ€™, â€˜fesetexceptflagâ€™, â€˜fesetroundâ€™,
! â€˜fetestexceptâ€™, â€˜feupdateenvâ€™ may be handled as built-in functions.  All
! these functions have corresponding versions prefixed with â€˜__builtin_â€™
! in the â€˜gcc.builtinsâ€™ module.
  
!    In the â€˜core.stdc.inttypesâ€™ module, the function â€˜imaxabsâ€™ may be
  handled as a built-in function.  All these functions have corresponding
! versions prefixed with â€˜__builtin_â€™ in the â€˜gcc.builtinsâ€™ module.
  
!    In the â€˜core.stdc.mathâ€™ module, the functions â€˜acosâ€™, â€˜acosfâ€™,
! â€˜acoshâ€™, â€˜acoshfâ€™, â€˜acoshlâ€™, â€˜acoslâ€™, â€˜asinâ€™, â€˜asinfâ€™, â€˜asinhâ€™,
! â€˜asinhfâ€™, â€˜asinhlâ€™, â€˜asinlâ€™, â€˜atanâ€™, â€˜atan2â€™, â€˜atan2fâ€™, â€˜atan2lâ€™,
! â€˜atanfâ€™, â€˜atanhâ€™, â€˜atanhfâ€™, â€˜atanhlâ€™, â€˜atanlâ€™, â€˜cbrtâ€™, â€˜cbrtfâ€™, â€˜cbrtlâ€™,
! â€˜ceilâ€™, â€˜ceilfâ€™, â€˜ceillâ€™, â€˜copysignâ€™, â€˜copysignfâ€™, â€˜copysignlâ€™, â€˜cosâ€™,
! â€˜cosfâ€™, â€˜coshâ€™, â€˜coshfâ€™, â€˜coshlâ€™, â€˜coslâ€™, â€˜erfâ€™, â€˜erfcâ€™, â€˜erfcfâ€™,
! â€˜erfclâ€™, â€˜erffâ€™, â€˜erflâ€™, â€˜expâ€™, â€˜exp2â€™, â€˜exp2fâ€™, â€˜exp2lâ€™, â€˜expfâ€™,
! â€˜explâ€™, â€˜expm1â€™, â€˜expm1fâ€™, â€˜expm1lâ€™, â€˜fabsâ€™, â€˜fabsfâ€™, â€˜fabslâ€™, â€˜fdimâ€™,
! â€˜fdimfâ€™, â€˜fdimlâ€™, â€˜floorâ€™, â€˜floorfâ€™, â€˜floorlâ€™, â€˜fmaâ€™, â€˜fmafâ€™, â€˜fmalâ€™,
! â€˜fmaxâ€™, â€˜fmaxfâ€™, â€˜fmaxlâ€™, â€˜fminâ€™, â€˜fminfâ€™, â€˜fminlâ€™, â€˜fmodâ€™, â€˜fmodfâ€™,
! â€˜fmodlâ€™, â€˜frexpâ€™, â€˜frexpfâ€™, â€˜frexplâ€™, â€˜hypotâ€™, â€˜hypotfâ€™, â€˜hypotlâ€™,
! â€˜ilogbâ€™, â€˜ilogbfâ€™, â€˜ilogblâ€™, â€˜isinfâ€™, â€˜isnanâ€™, â€˜ldexpâ€™, â€˜ldexpfâ€™,
! â€˜ldexplâ€™, â€˜lgammaâ€™, â€˜lgammafâ€™, â€˜lgammalâ€™, â€˜llrintâ€™, â€˜llrintfâ€™,
! â€˜llrintlâ€™, â€˜llroundâ€™, â€˜llroundfâ€™, â€˜llroundlâ€™, â€˜logâ€™, â€˜log10â€™, â€˜log10fâ€™,
! â€˜log10lâ€™, â€˜log1pâ€™, â€˜log1pfâ€™, â€˜log1plâ€™, â€˜log2â€™, â€˜log2fâ€™, â€˜log2lâ€™, â€˜logbâ€™,
! â€˜logbfâ€™, â€˜logblâ€™, â€˜logfâ€™, â€˜loglâ€™, â€˜lrintâ€™, â€˜lrintfâ€™, â€˜lrintlâ€™, â€˜lroundâ€™,
! â€˜lroundfâ€™, â€˜lroundlâ€™, â€˜modfâ€™, â€˜modffâ€™, â€˜modflâ€™, â€˜nanâ€™, â€˜nanfâ€™, â€˜nanlâ€™,
! â€˜nearbyintâ€™, â€˜nearbyintfâ€™, â€˜nearbyintlâ€™, â€˜nextafterâ€™, â€˜nextafterfâ€™,
! â€˜nextafterlâ€™, â€˜nexttowardâ€™, â€˜nexttowardfâ€™, â€˜nexttowardlâ€™, â€˜powâ€™, â€˜powfâ€™,
! â€˜powlâ€™, â€˜remainderâ€™, â€˜remainderfâ€™, â€˜remainderlâ€™, â€˜remquoâ€™, â€˜remquofâ€™,
! â€˜remquolâ€™, â€˜rintâ€™, â€˜rintfâ€™, â€˜rintlâ€™, â€˜roundâ€™, â€˜roundfâ€™, â€˜roundlâ€™,
! â€˜scalblnâ€™, â€˜scalblnfâ€™, â€˜scalblnlâ€™, â€˜scalbnâ€™, â€˜scalbnfâ€™, â€˜scalbnlâ€™,
! â€˜signbitâ€™, â€˜sinâ€™, â€˜sinfâ€™, â€˜sinhâ€™, â€˜sinhfâ€™, â€˜sinhlâ€™, â€˜sinlâ€™, â€˜sqrtâ€™,
! â€˜sqrtfâ€™, â€˜sqrtlâ€™, â€˜tanâ€™, â€˜tanfâ€™, â€˜tanhâ€™, â€˜tanhfâ€™, â€˜tanhlâ€™, â€˜tanlâ€™,
! â€˜tgammaâ€™, â€˜tgammafâ€™, â€˜tgammalâ€™, â€˜truncâ€™, â€˜truncfâ€™, â€˜trunclâ€™ may be
  handled as built-in functions.  All these functions have corresponding
! versions prefixed with â€˜__builtin_â€™ in the â€˜gcc.builtinsâ€™ module.
  
!    In the â€˜core.stdc.stdioâ€™ module, the functions â€˜fprintfâ€™, â€˜fputcâ€™,
! â€˜fputc_unlockedâ€™, â€˜fputsâ€™, â€˜fwriteâ€™, â€˜printfâ€™, â€˜putsâ€™, â€˜snprintfâ€™,
! â€˜sprintfâ€™, â€˜vfprintfâ€™, â€˜vprintfâ€™, â€˜vsnprintfâ€™, â€˜vsprintfâ€™ may be handled
  as built-in functions.  All these functions have corresponding versions
! prefixed with â€˜__builtin_â€™ in the â€˜gcc.builtinsâ€™ module.
  
!    In the â€˜core.stdc.stdlibâ€™ module, the functions â€˜abortâ€™, â€˜absâ€™,
! â€˜aligned_allocâ€™, â€˜allocaâ€™, â€˜callocâ€™, â€˜exitâ€™, â€˜_Exitâ€™, â€˜freeâ€™, â€˜labsâ€™,
! â€˜llabsâ€™, â€˜mallocâ€™, â€˜reallocâ€™ may be handled as built-in functions.  All
! these functions have corresponding versions prefixed with â€˜__builtin_â€™
! in the â€˜gcc.builtinsâ€™ module.
  
!    In the â€˜core.stdc.stringâ€™ module, the functions â€˜memchrâ€™, â€˜memcmpâ€™,
! â€˜memcpyâ€™, â€˜memmoveâ€™, â€˜memsetâ€™, â€˜strcatâ€™, â€˜strchrâ€™, â€˜strcmpâ€™, â€˜strcpyâ€™,
! â€˜strcspnâ€™, â€˜strdupâ€™, â€˜strlenâ€™, â€˜strncatâ€™, â€˜strncmpâ€™, â€˜strncpyâ€™,
! â€˜strpbrkâ€™, â€˜strrchrâ€™, â€˜strspnâ€™, â€˜strstrâ€™ may be handled as built-in
  functions.  All these functions have corresponding versions prefixed
! with â€˜__builtin_â€™ in the â€˜gcc.builtinsâ€™ module.
  
!    In the â€˜core.stdc.timeâ€™ module, the function â€˜strftimeâ€™ may be
  handled as a built-in function.  All these functions have corresponding
! versions prefixed with â€˜__builtin_â€™ in the â€˜gcc.builtinsâ€™ module.
  
!    In the â€˜core.stdc.wctypeâ€™ module, the functions â€˜iswalnumâ€™,
! â€˜iswalphaâ€™, â€˜iswblankâ€™, â€˜iswcntrlâ€™, â€˜iswdigitâ€™, â€˜iswgraphâ€™, â€˜iswlowerâ€™,
! â€˜iswprintâ€™, â€˜iswpunctâ€™, â€˜iswspaceâ€™, â€˜iswupperâ€™, â€˜iswxdigitâ€™, â€˜towlowerâ€™,
! â€˜towupperâ€™ may be handled as built-in functions.  All these functions
! have corresponding versions prefixed with â€˜__builtin_â€™ in the
! â€˜gcc.builtinsâ€™ module.
  
!    Within the â€˜core.sysâ€™ package for POSIX and platform definitions, the
! functions â€˜putchar_unlockedâ€™, â€˜putc_unlockedâ€™, â€˜posix_memalignâ€™, â€˜ffsâ€™,
! â€˜strcasecmpâ€™, â€˜strncasecmpâ€™, â€˜stpcpyâ€™, â€˜stpncpyâ€™, â€˜strndupâ€™, â€˜strnlenâ€™,
! â€˜execlâ€™, â€˜execleâ€™, â€˜execlpâ€™, â€˜execvâ€™, â€˜execveâ€™, â€˜execvpâ€™, â€˜_exitâ€™,
! â€˜forkâ€™ may be handled as built-in functions.  All these functions have
! corresponding versions prefixed with â€˜__builtin_â€™ in the â€˜gcc.builtinsâ€™
  module.
  
  
*************** in the C file.
*** 1401,1407 ****
  referred to as C11.  Prior versions, such as C99, C89, and K+R C, are
  not supported.
  
!    Assuming you have no file 'cstdio.c' or 'main.d', the commands
         cat > cstdio.c << @EOC
         int printf(const char*, ...);
         @EOC
--- 1401,1407 ----
  referred to as C11.  Prior versions, such as C99, C89, and K+R C, are
  not supported.
  
!    Assuming you have no file â€˜cstdio.câ€™ or â€˜main.dâ€™, the commands
         cat > cstdio.c << @EOC
         int printf(const char*, ...);
         @EOC
*************** not supported.
*** 1410,1424 ****
         void main() { printf("Hello ImportC\n"); }
         @EOD
         gdc main.d -o main; ./main
!    will generate a program which will print 'Hello ImportC'.
  
     ImportC does not have a preprocessor.  It is designed to compile C
  files after they have been first run through the C preprocessor.  If the
! C file has a '.i' extension, the file is presumed to be already
  preprocessed.  Preprocessing can be run manually:
         gcc -E file.c > file.i
  
! ImportC collects all the '#define' macros from the preprocessor run when
  it is run automatically.  The macros that look like manifest constants,
  such as:
       #define COLOR 0x123456
--- 1410,1424 ----
         void main() { printf("Hello ImportC\n"); }
         @EOD
         gdc main.d -o main; ./main
!    will generate a program which will print â€˜Hello ImportCâ€™.
  
     ImportC does not have a preprocessor.  It is designed to compile C
  files after they have been first run through the C preprocessor.  If the
! C file has a â€˜.iâ€™ extension, the file is presumed to be already
  preprocessed.  Preprocessing can be run manually:
         gcc -E file.c > file.i
  
! ImportC collects all the â€˜#defineâ€™ macros from the preprocessor run when
  it is run automatically.  The macros that look like manifest constants,
  such as:
       #define COLOR 0x123456
*************** macros.
*** 1431,1438 ****
  
     GNU D does not directly compile C files into modules that can be
  linked in with D code to form an executable.  When given a source file
! with the suffix '.c', the compiler driver program 'gdc' instead runs the
! subprogram 'cc1'.
  
       gdc file1.d file2.c // d21 file1.d -o file1.s
                           // cc1 file2.c -o file2.s
--- 1431,1438 ----
  
     GNU D does not directly compile C files into modules that can be
  linked in with D code to form an executable.  When given a source file
! with the suffix â€˜.câ€™, the compiler driver program â€˜gdcâ€™ instead runs the
! subprogram â€˜cc1â€™.
  
       gdc file1.d file2.c // d21 file1.d -o file1.s
                           // cc1 file2.c -o file2.s
*************** File: gdc.info,  Node: Inline Assembly,
*** 1446,1454 ****
  2.4 Inline Assembly
  ===================
  
! The 'asm' keyword allows you to embed assembler instructions within D
! code.  GNU D provides two forms of inline 'asm' statements.  A "basic
! 'asm'" statement is one with no operands, while an "extended 'asm'"
  statement includes one or more operands.
  
       asm FUNCTIONATTRIBUTES {
--- 1446,1454 ----
  2.4 Inline Assembly
  ===================
  
! The â€˜asmâ€™ keyword allows you to embed assembler instructions within D
! code.  GNU D provides two forms of inline â€˜asmâ€™ statements.  A â€œbasic
! â€˜asmâ€™â€� statement is one with no operands, while an â€œextended â€˜asmâ€™â€�
  statement includes one or more operands.
  
       asm FUNCTIONATTRIBUTES {
*************** statement includes one or more operands.
*** 1465,1471 ****
  
  The extended form is preferred for mixing D and assembly language within
  a function, but to include assembly language in a function declared with
! the 'naked' attribute you must use basic 'asm'.
  
       uint incr (uint value)
       {
--- 1465,1471 ----
  
  The extended form is preferred for mixing D and assembly language within
  a function, but to include assembly language in a function declared with
! the â€˜nakedâ€™ attribute you must use basic â€˜asmâ€™.
  
       uint incr (uint value)
       {
*************** the 'naked' attribute you must use basic
*** 1477,1483 ****
           return result;
       }
  
! Multiple assembler instructions can appear within an 'asm' block, or the
  instruction template can be a multi-line or concatenated string.  In
  both cases, GCC's optimizers won't discard or move any instruction
  within the statement block.
--- 1477,1483 ----
           return result;
       }
  
! Multiple assembler instructions can appear within an â€˜asmâ€™ block, or the
  instruction template can be a multi-line or concatenated string.  In
  both cases, GCC's optimizers won't discard or move any instruction
  within the statement block.
*************** within the statement block.
*** 1497,1503 ****
           return (flags & 0x0020_0000) != 0;
       }
  
! The instruction templates for both basic and extended 'asm' can be any
  expression that can be evaluated at compile-time to a string, not just
  string literals.
  
--- 1497,1503 ----
           return (flags & 0x0020_0000) != 0;
       }
  
! The instruction templates for both basic and extended â€˜asmâ€™ can be any
  expression that can be evaluated at compile-time to a string, not just
  string literals.
  
*************** File: gdc.info,  Node: Bit Operation Int
*** 1547,1553 ****
  ------------------------------
  
  The following functions are a collection of intrinsics that do bit-level
! operations, available by importing the 'core.bitop' module.
  
     Although most are named after x86 hardware instructions, it is not
  guaranteed that they will result in generating equivalent assembly on
--- 1547,1553 ----
  ------------------------------
  
  The following functions are a collection of intrinsics that do bit-level
! operations, available by importing the â€˜core.bitopâ€™ module.
  
     Although most are named after x86 hardware instructions, it is not
  guaranteed that they will result in generating equivalent assembly on
*************** result in hardware, then that will be us
*** 1557,1568 ****
   -- Function: int core.bitop.bsf (uint V)
   -- Function: int core.bitop.bsf (ulong V)
  
!      Scans the bits in V starting with bit '0', looking for the first
       set bit.  Returns the bit number of the first bit set.  The return
       value is undefined if V is zero.
  
       This intrinsic is the same as the GCC built-in function
!      '__builtin_ctz'.
  
   -- Function: int core.bitop.bsr (uint V)
   -- Function: int core.bitop.bsr (ulong V)
--- 1557,1568 ----
   -- Function: int core.bitop.bsf (uint V)
   -- Function: int core.bitop.bsf (ulong V)
  
!      Scans the bits in V starting with bit â€˜0â€™, looking for the first
       set bit.  Returns the bit number of the first bit set.  The return
       value is undefined if V is zero.
  
       This intrinsic is the same as the GCC built-in function
!      â€˜__builtin_ctzâ€™.
  
   -- Function: int core.bitop.bsr (uint V)
   -- Function: int core.bitop.bsr (ulong V)
*************** result in hardware, then that will be us
*** 1635,1645 ****
   -- Function: uint core.bitop.bswap (uint X)
   -- Function: ulong core.bitop.bswap (ulong X)
  
!      Swaps the bytes in X end-to-end; for example, in a 4-byte 'uint',
!      byte '0' becomes byte '3', byte '1' becomes byte '2', etc.
  
       This intrinsic is the same as the GCC built-in function
!      '__builtin_bswap'.
  
   -- Function: int core.bitop.popcnt (uint X)
   -- Function: int core.bitop.popcnt (ulong X)
--- 1635,1645 ----
   -- Function: uint core.bitop.bswap (uint X)
   -- Function: ulong core.bitop.bswap (ulong X)
  
!      Swaps the bytes in X end-to-end; for example, in a 4-byte â€˜uintâ€™,
!      byte â€˜0â€™ becomes byte â€˜3â€™, byte â€˜1â€™ becomes byte â€˜2â€™, etc.
  
       This intrinsic is the same as the GCC built-in function
!      â€˜__builtin_bswapâ€™.
  
   -- Function: int core.bitop.popcnt (uint X)
   -- Function: int core.bitop.popcnt (ulong X)
*************** result in hardware, then that will be us
*** 1647,1653 ****
       Calculates the number of set bits in X.
  
       This intrinsic is the same as the GCC built-in function
!      '__builtin_popcount'.
  
   -- Template: T core.bitop.rol (T)(const T VALUE, const uint COUNT)
   -- Template: T core.bitop.rol (uint COUNT, T)(const T VALUE)
--- 1647,1653 ----
       Calculates the number of set bits in X.
  
       This intrinsic is the same as the GCC built-in function
!      â€˜__builtin_popcountâ€™.
  
   -- Template: T core.bitop.rol (T)(const T VALUE, const uint COUNT)
   -- Template: T core.bitop.rol (uint COUNT, T)(const T VALUE)
*************** File: gdc.info,  Node: Integer Overflow
*** 1673,1679 ****
  
  The following functions are a collection of intrinsics that implement
  integral arithmetic primitives that check for out-of-range results,
! available by importing the 'core.checkedint' module.
  
     In all intrinsics, the overflow is sticky, meaning a sequence of
  operations can be done and overflow need only be checked at the end.
--- 1673,1679 ----
  
  The following functions are a collection of intrinsics that implement
  integral arithmetic primitives that check for out-of-range results,
! available by importing the â€˜core.checkedintâ€™ module.
  
     In all intrinsics, the overflow is sticky, meaning a sequence of
  operations can be done and overflow need only be checked at the end.
*************** operations can be done and overflow need
*** 1685,1691 ****
       Add two signed integers, checking for overflow.
  
       This intrinsic is the same as the GCC built-in function
!      '__builtin_sadd_overflow'.
  
   -- Function: int core.checkedint.addu (int X, int Y, ref bool OVERFLOW)
   -- Function: long core.checkedint.addu (long X, long Y, ref bool
--- 1685,1691 ----
       Add two signed integers, checking for overflow.
  
       This intrinsic is the same as the GCC built-in function
!      â€˜__builtin_sadd_overflowâ€™.
  
   -- Function: int core.checkedint.addu (int X, int Y, ref bool OVERFLOW)
   -- Function: long core.checkedint.addu (long X, long Y, ref bool
*************** operations can be done and overflow need
*** 1694,1700 ****
       Add two unsigned integers, checking for overflow.
  
       This intrinsic is the same as the GCC built-in function
!      '__builtin_uadd_overflow'.
  
   -- Function: int core.checkedint.muls (int X, int Y, ref bool OVERFLOW)
   -- Function: long core.checkedint.muls (long X, long Y, ref bool
--- 1694,1700 ----
       Add two unsigned integers, checking for overflow.
  
       This intrinsic is the same as the GCC built-in function
!      â€˜__builtin_uadd_overflowâ€™.
  
   -- Function: int core.checkedint.muls (int X, int Y, ref bool OVERFLOW)
   -- Function: long core.checkedint.muls (long X, long Y, ref bool
*************** operations can be done and overflow need
*** 1703,1709 ****
       Multiply two signed integers, checking for overflow.
  
       This intrinsic is the same as the GCC built-in function
!      '__builtin_smul_overflow'.
  
   -- Function: int core.checkedint.mulu (int X, int Y, ref bool OVERFLOW)
   -- Function: long core.checkedint.mulu (long X, long Y, ref bool
--- 1703,1709 ----
       Multiply two signed integers, checking for overflow.
  
       This intrinsic is the same as the GCC built-in function
!      â€˜__builtin_smul_overflowâ€™.
  
   -- Function: int core.checkedint.mulu (int X, int Y, ref bool OVERFLOW)
   -- Function: long core.checkedint.mulu (long X, long Y, ref bool
*************** operations can be done and overflow need
*** 1712,1718 ****
       Multiply two unsigned integers, checking for overflow.
  
       This intrinsic is the same as the GCC built-in function
!      '__builtin_umul_overflow'.
  
   -- Function: int core.checkedint.negs (int X, ref bool OVERFLOW)
   -- Function: long core.checkedint.negs (long X, ref bool OVERFLOW)
--- 1712,1718 ----
       Multiply two unsigned integers, checking for overflow.
  
       This intrinsic is the same as the GCC built-in function
!      â€˜__builtin_umul_overflowâ€™.
  
   -- Function: int core.checkedint.negs (int X, ref bool OVERFLOW)
   -- Function: long core.checkedint.negs (long X, ref bool OVERFLOW)
*************** operations can be done and overflow need
*** 1729,1735 ****
       Substract two signed integers, checking for overflow.
  
       This intrinsic is the same as the GCC built-in function
!      '__builtin_ssub_overflow'.
  
   -- Function: int core.checkedint.subu (int X, int Y, ref bool OVERFLOW)
   -- Function: long core.checkedint.subu (long X, long Y, ref bool
--- 1729,1735 ----
       Substract two signed integers, checking for overflow.
  
       This intrinsic is the same as the GCC built-in function
!      â€˜__builtin_ssub_overflowâ€™.
  
   -- Function: int core.checkedint.subu (int X, int Y, ref bool OVERFLOW)
   -- Function: long core.checkedint.subu (long X, long Y, ref bool
*************** operations can be done and overflow need
*** 1738,1744 ****
       Substract two unsigned integers, checking for overflow.
  
       This intrinsic is the same as the GCC built-in function
!      '__builtin_usub_overflow'.
  
  
  File: gdc.info,  Node: Math Intrinsics,  Next: Variadic Intrinsics,  Prev: Integer Overflow Intrinsics,  Up: Intrinsics
--- 1738,1744 ----
       Substract two unsigned integers, checking for overflow.
  
       This intrinsic is the same as the GCC built-in function
!      â€˜__builtin_usub_overflowâ€™.
  
  
  File: gdc.info,  Node: Math Intrinsics,  Next: Variadic Intrinsics,  Prev: Integer Overflow Intrinsics,  Up: Intrinsics
*************** File: gdc.info,  Node: Math Intrinsics,
*** 1747,1753 ****
  ---------------------
  
  The following functions are a collection of mathematical intrinsics,
! available by importing the 'core.math' module.
  
   -- Function: float core.math.cos (float x)
   -- Function: double core.math.cos (double x)
--- 1747,1753 ----
  ---------------------
  
  The following functions are a collection of mathematical intrinsics,
! available by importing the â€˜core.mathâ€™ module.
  
   -- Function: float core.math.cos (float x)
   -- Function: double core.math.cos (double x)
*************** available by importing the 'core.math' m
*** 1757,1763 ****
       undefined if X is greater than 2^{64}.
  
       This intrinsic is the same as the GCC built-in function
!      '__builtin_cos'.
  
   -- Function: float core.math.fabs (float x)
   -- Function: double core.math.fabs (double x)
--- 1757,1763 ----
       undefined if X is greater than 2^{64}.
  
       This intrinsic is the same as the GCC built-in function
!      â€˜__builtin_cosâ€™.
  
   -- Function: float core.math.fabs (float x)
   -- Function: double core.math.fabs (double x)
*************** available by importing the 'core.math' m
*** 1766,1772 ****
       Compute the absolute value of X.
  
       This intrinsic is the same as the GCC built-in function
!      '__builtin_fabs'.
  
   -- Function: float core.math.ldexp (float n, int exp)
   -- Function: double core.math.ldexp (double n, int exp)
--- 1766,1772 ----
       Compute the absolute value of X.
  
       This intrinsic is the same as the GCC built-in function
!      â€˜__builtin_fabsâ€™.
  
   -- Function: float core.math.ldexp (float n, int exp)
   -- Function: double core.math.ldexp (double n, int exp)
*************** available by importing the 'core.math' m
*** 1775,1804 ****
       Compute n * 2^{exp}.
  
       This intrinsic is the same as the GCC built-in function
!      '__builtin_ldexp'.
  
   -- Function: float core.math.rint (float x)
   -- Function: double core.math.rint (double x)
   -- Function: real core.math.rint (real x)
  
       Rounds X to the nearest integer value, using the current rounding
!      mode.  If the return value is not equal to X, the 'FE_INEXACT'
!      exception is raised.  'nearbyint' performs the same operation, but
!      does not set the 'FE_INEXACT' exception.
  
       This intrinsic is the same as the GCC built-in function
!      '__builtin_rint'.
  
   -- Function: float core.math.rndtol (float x)
   -- Function: double core.math.rndtol (double x)
   -- Function: real core.math.rndtol (real x)
  
       Returns X rounded to a long value using the current rounding mode.
!      If the integer value of X is greater than 'long.max', the result is
       indeterminate.
  
       This intrinsic is the same as the GCC built-in function
!      '__builtin_llround'.
  
   -- Function: float core.math.sin (float x)
   -- Function: double core.math.sin (double x)
--- 1775,1804 ----
       Compute n * 2^{exp}.
  
       This intrinsic is the same as the GCC built-in function
!      â€˜__builtin_ldexpâ€™.
  
   -- Function: float core.math.rint (float x)
   -- Function: double core.math.rint (double x)
   -- Function: real core.math.rint (real x)
  
       Rounds X to the nearest integer value, using the current rounding
!      mode.  If the return value is not equal to X, the â€˜FE_INEXACTâ€™
!      exception is raised.  â€˜nearbyintâ€™ performs the same operation, but
!      does not set the â€˜FE_INEXACTâ€™ exception.
  
       This intrinsic is the same as the GCC built-in function
!      â€˜__builtin_rintâ€™.
  
   -- Function: float core.math.rndtol (float x)
   -- Function: double core.math.rndtol (double x)
   -- Function: real core.math.rndtol (real x)
  
       Returns X rounded to a long value using the current rounding mode.
!      If the integer value of X is greater than â€˜long.maxâ€™, the result is
       indeterminate.
  
       This intrinsic is the same as the GCC built-in function
!      â€˜__builtin_llroundâ€™.
  
   -- Function: float core.math.sin (float x)
   -- Function: double core.math.sin (double x)
*************** available by importing the 'core.math' m
*** 1808,1814 ****
       undefined if X is greater than 2^{64}.
  
       This intrinsic is the same as the GCC built-in function
!      '__builtin_sin'.
  
   -- Function: float core.math.sqrt (float x)
   -- Function: double core.math.sqrt (double x)
--- 1808,1814 ----
       undefined if X is greater than 2^{64}.
  
       This intrinsic is the same as the GCC built-in function
!      â€˜__builtin_sinâ€™.
  
   -- Function: float core.math.sqrt (float x)
   -- Function: double core.math.sqrt (double x)
*************** available by importing the 'core.math' m
*** 1817,1823 ****
       Compute the sqrt of X.
  
       This intrinsic is the same as the GCC built-in function
!      '__builtin_sqrt'.
  
   -- Template: T core.math.toPrec (T)(float f)
   -- Template: T core.math.toPrec (T)(double f)
--- 1817,1823 ----
       Compute the sqrt of X.
  
       This intrinsic is the same as the GCC built-in function
!      â€˜__builtin_sqrtâ€™.
  
   -- Template: T core.math.toPrec (T)(float f)
   -- Template: T core.math.toPrec (T)(double f)
*************** available by importing the 'core.math' m
*** 1826,1834 ****
       Round F to a specific precision.
  
       In floating-point operations, D language types specify only a
!      minimum precision, not a maximum.  The 'toPrec' function forces
       rounding of the argument F to the precision of the specified
!      floating point type 'T'.  The rounding mode used is inevitably
       target-dependent, but will be done in a way to maximize accuracy.
       In most cases, the default is round-to-nearest.
  
--- 1826,1834 ----
       Round F to a specific precision.
  
       In floating-point operations, D language types specify only a
!      minimum precision, not a maximum.  The â€˜toPrecâ€™ function forces
       rounding of the argument F to the precision of the specified
!      floating point type â€˜Tâ€™.  The rounding mode used is inevitably
       target-dependent, but will be done in a way to maximize accuracy.
       In most cases, the default is round-to-nearest.
  
*************** File: gdc.info,  Node: Variadic Intrinsi
*** 1839,1859 ****
  -------------------------
  
  The following functions are a collection of variadic intrinsics,
! available by importing the 'core.stdc.stdarg' module.
  
   -- Template: void core.stdc.stdarg.va_arg (T)(ref va_list ap, ref T
            parmn)
  
!      Retrieve and store in PARMN the next value from the 'va_list' AP
!      that is of type 'T'.
  
       This intrinsic is equivalent to writing the following:
            parmn = __builtin_va_arg (ap, T);
  
   -- Template: T core.stdc.stdarg.va_arg (T)(ref va_list ap)
  
!      Retrieve and return the next value from the 'va_list' AP that is of
!      type 'T'.
  
       This intrinsic is equivalent to writing the following:
            result = __builtin_va_arg (ap, T);
--- 1839,1859 ----
  -------------------------
  
  The following functions are a collection of variadic intrinsics,
! available by importing the â€˜core.stdc.stdargâ€™ module.
  
   -- Template: void core.stdc.stdarg.va_arg (T)(ref va_list ap, ref T
            parmn)
  
!      Retrieve and store in PARMN the next value from the â€˜va_listâ€™ AP
!      that is of type â€˜Tâ€™.
  
       This intrinsic is equivalent to writing the following:
            parmn = __builtin_va_arg (ap, T);
  
   -- Template: T core.stdc.stdarg.va_arg (T)(ref va_list ap)
  
!      Retrieve and return the next value from the â€˜va_listâ€™ AP that is of
!      type â€˜Tâ€™.
  
       This intrinsic is equivalent to writing the following:
            result = __builtin_va_arg (ap, T);
*************** available by importing the 'core.stdc.st
*** 1864,1877 ****
       Make a copy of SRC in its current state and store to DEST.
  
       This intrinsic is the same as the GCC built-in function
!      '__builtin_va_copy'.
  
   -- Function: void core.stdc.stdarg.va_end (va_list ap)
  
       Destroy AP so that it is no longer useable.
  
       This intrinsic is the same as the GCC built-in function
!      '__builtin_va_end'.
  
   -- Template: void core.stdc.stdarg.va_start (T)(out va_list ap, ref T
            parmn)
--- 1864,1877 ----
       Make a copy of SRC in its current state and store to DEST.
  
       This intrinsic is the same as the GCC built-in function
!      â€˜__builtin_va_copyâ€™.
  
   -- Function: void core.stdc.stdarg.va_end (va_list ap)
  
       Destroy AP so that it is no longer useable.
  
       This intrinsic is the same as the GCC built-in function
!      â€˜__builtin_va_endâ€™.
  
   -- Template: void core.stdc.stdarg.va_start (T)(out va_list ap, ref T
            parmn)
*************** available by importing the 'core.stdc.st
*** 1880,1886 ****
       arguments that follow the named argument PARMN.
  
       This intrinsic is the same as the GCC built-in function
!      '__builtin_va_start'.
  
  
  File: gdc.info,  Node: Volatile Intrinsics,  Next: CTFE Intrinsics,  Prev: Variadic Intrinsics,  Up: Intrinsics
--- 1880,1886 ----
       arguments that follow the named argument PARMN.
  
       This intrinsic is the same as the GCC built-in function
!      â€˜__builtin_va_startâ€™.
  
  
  File: gdc.info,  Node: Volatile Intrinsics,  Next: CTFE Intrinsics,  Prev: Variadic Intrinsics,  Up: Intrinsics
*************** File: gdc.info,  Node: Volatile Intrinsi
*** 1889,1895 ****
  -------------------------
  
  The following functions are a collection of intrinsics for volatile
! operations, available by importing the 'core.volatile' module.
  
     Calls to them are guaranteed to not be removed (as dead assignment
  elimination or presumed to have no effect) or reordered in the same
--- 1889,1895 ----
  -------------------------
  
  The following functions are a collection of intrinsics for volatile
! operations, available by importing the â€˜core.volatileâ€™ module.
  
     Calls to them are guaranteed to not be removed (as dead assignment
  elimination or presumed to have no effect) or reordered in the same
*************** values from the same location due to ext
*** 1907,1913 ****
  
     These functions will, when possible, do the load/store as a single
  operation.  In general, this is possible when the size of the operation
! is less than or equal to '(void*).sizeof', although some targets may
  support larger operations.  If the load/store cannot be done as a single
  operation, multiple smaller operations will be used.
  
--- 1907,1913 ----
  
     These functions will, when possible, do the load/store as a single
  operation.  In general, this is possible when the size of the operation
! is less than or equal to â€˜(void*).sizeofâ€™, although some targets may
  support larger operations.  If the load/store cannot be done as a single
  operation, multiple smaller operations will be used.
  
*************** suppport.
*** 1959,1965 ****
       Calculates e^x.
  
       This function is evaluated during CTFE as the GCC built-in function
!      '__builtin_exp'.
  
   -- Function: float std.math.exponential.expm1 (float x)
   -- Function: double std.math.exponential.expm1 (double x)
--- 1959,1965 ----
       Calculates e^x.
  
       This function is evaluated during CTFE as the GCC built-in function
!      â€˜__builtin_expâ€™.
  
   -- Function: float std.math.exponential.expm1 (float x)
   -- Function: double std.math.exponential.expm1 (double x)
*************** suppport.
*** 1968,1974 ****
       Calculates e^x-1.0.
  
       This function is evaluated during CTFE as the GCC built-in function
!      '__builtin_expm1'.
  
   -- Function: float std.math.exponential.exp2 (float x)
   -- Function: double std.math.exponential.exp2 (double x)
--- 1968,1974 ----
       Calculates e^x-1.0.
  
       This function is evaluated during CTFE as the GCC built-in function
!      â€˜__builtin_expm1â€™.
  
   -- Function: float std.math.exponential.exp2 (float x)
   -- Function: double std.math.exponential.exp2 (double x)
*************** suppport.
*** 1977,1983 ****
       Calculates 2^x.
  
       This function is evaluated during CTFE as the GCC built-in function
!      '__builtin_exp2'.
  
   -- Function: float std.math.exponential.log (float x)
   -- Function: double std.math.exponential.log (double x)
--- 1977,1983 ----
       Calculates 2^x.
  
       This function is evaluated during CTFE as the GCC built-in function
!      â€˜__builtin_exp2â€™.
  
   -- Function: float std.math.exponential.log (float x)
   -- Function: double std.math.exponential.log (double x)
*************** suppport.
*** 1986,1992 ****
       Calculate the natural logarithm of X.
  
       This function is evaluated during CTFE as the GCC built-in function
!      '__builtin_log'.
  
   -- Function: float std.math.exponential.log10 (float x)
   -- Function: double std.math.exponential.log10 (double x)
--- 1986,1992 ----
       Calculate the natural logarithm of X.
  
       This function is evaluated during CTFE as the GCC built-in function
!      â€˜__builtin_logâ€™.
  
   -- Function: float std.math.exponential.log10 (float x)
   -- Function: double std.math.exponential.log10 (double x)
*************** suppport.
*** 1995,2001 ****
       Calculates the base-10 logarithm of X.
  
       This function is evaluated during CTFE as the GCC built-in function
!      '__builtin_log10'.
  
   -- Function: float std.math.exponential.log2 (float x)
   -- Function: double std.math.exponential.log2 (double x)
--- 1995,2001 ----
       Calculates the base-10 logarithm of X.
  
       This function is evaluated during CTFE as the GCC built-in function
!      â€˜__builtin_log10â€™.
  
   -- Function: float std.math.exponential.log2 (float x)
   -- Function: double std.math.exponential.log2 (double x)
*************** suppport.
*** 2004,2010 ****
       Calculates the base-2 logarithm of X.
  
       This function is evaluated during CTFE as the GCC built-in function
!      '__builtin_log2'.
  
   -- Template: Largest!(F, G) std.math.exponential.pow (F, G) (F x, G y)
   -- Template: real std.math.exponential.pow (I, F)(I x, F y)
--- 2004,2010 ----
       Calculates the base-2 logarithm of X.
  
       This function is evaluated during CTFE as the GCC built-in function
!      â€˜__builtin_log2â€™.
  
   -- Template: Largest!(F, G) std.math.exponential.pow (F, G) (F x, G y)
   -- Template: real std.math.exponential.pow (I, F)(I x, F y)
*************** suppport.
*** 2012,2047 ****
       Calculates x^y, where Y is a float.
  
       This function is evaluated during CTFE as the GCC built-in function
!      '__builtin_pow'.
  
   -- Template: F std.math.exponential.pow (F, G) (F x, G n)
  
       Calculates x^n, where N is an integer.
  
       This function is evaluated during CTFE as the GCC built-in function
!      '__builtin_powi'.
  
   -- Function: real std.math.operations.fma (real x, real y, real z)
  
!      Returns '(x * y) + z', rounding only once according to the current
       rounding mode.
  
       This function is evaluated during CTFE as the GCC built-in function
!      '__builtin_fma'.
  
   -- Template: F std.math.operations.fmax (F)(const F x, const F y)
  
       Returns the larger of X and Y.
  
       This function is evaluated during CTFE as the GCC built-in function
!      '__builtin_fmax'.
  
   -- Template: F std.math.operations.fmin (F)(const F x, const F y)
  
       Returns the smaller of X and Y.
  
       This function is evaluated during CTFE as the GCC built-in function
!      '__builtin_fmin'.
  
   -- Function: float std.math.rounding.ceil (float x)
   -- Function: double std.math.rounding.ceil (double x)
--- 2012,2047 ----
       Calculates x^y, where Y is a float.
  
       This function is evaluated during CTFE as the GCC built-in function
!      â€˜__builtin_powâ€™.
  
   -- Template: F std.math.exponential.pow (F, G) (F x, G n)
  
       Calculates x^n, where N is an integer.
  
       This function is evaluated during CTFE as the GCC built-in function
!      â€˜__builtin_powiâ€™.
  
   -- Function: real std.math.operations.fma (real x, real y, real z)
  
!      Returns â€˜(x * y) + zâ€™, rounding only once according to the current
       rounding mode.
  
       This function is evaluated during CTFE as the GCC built-in function
!      â€˜__builtin_fmaâ€™.
  
   -- Template: F std.math.operations.fmax (F)(const F x, const F y)
  
       Returns the larger of X and Y.
  
       This function is evaluated during CTFE as the GCC built-in function
!      â€˜__builtin_fmaxâ€™.
  
   -- Template: F std.math.operations.fmin (F)(const F x, const F y)
  
       Returns the smaller of X and Y.
  
       This function is evaluated during CTFE as the GCC built-in function
!      â€˜__builtin_fminâ€™.
  
   -- Function: float std.math.rounding.ceil (float x)
   -- Function: double std.math.rounding.ceil (double x)
*************** suppport.
*** 2051,2057 ****
       positive infinity).
  
       This function is evaluated during CTFE as the GCC built-in function
!      '__builtin_ceil'.
  
   -- Function: float std.math.rounding.floor (float x)
   -- Function: double std.math.rounding.floor (double x)
--- 2051,2057 ----
       positive infinity).
  
       This function is evaluated during CTFE as the GCC built-in function
!      â€˜__builtin_ceilâ€™.
  
   -- Function: float std.math.rounding.floor (float x)
   -- Function: double std.math.rounding.floor (double x)
*************** suppport.
*** 2061,2067 ****
       negative infinity).
  
       This function is evaluated during CTFE as the GCC built-in function
!      '__builtin_floor'.
  
   -- Function: real std.math.rounding.round (real x)
  
--- 2061,2067 ----
       negative infinity).
  
       This function is evaluated during CTFE as the GCC built-in function
!      â€˜__builtin_floorâ€™.
  
   -- Function: real std.math.rounding.round (real x)
  
*************** suppport.
*** 2070,2111 ****
       away from zero.
  
       This function is evaluated during CTFE as the GCC built-in function
!      '__builtin_round'.
  
   -- Function: real std.math.rounding.trunc (real x)
  
       Returns the integer portion of X, dropping the fractional portion.
  
       This function is evaluated during CTFE as the GCC built-in function
!      '__builtin_trunc'.
  
   -- Template: R std.math.traits.copysign (R, X)(R to, X from)
  
       Returns a value composed of TO with FROM's sign bit.
  
       This function is evaluated during CTFE as the GCC built-in function
!      '__builtin_copysign'.
  
   -- Template: bool std.math.traits.isFinite (X)(X x)
  
       Returns true if X is finite.
  
       This function is evaluated during CTFE as the GCC built-in function
!      '__builtin_isfinite'.
  
   -- Template: bool std.math.traits.isInfinity (X)(X x)
  
       Returns true if X is infinite.
  
       This function is evaluated during CTFE as the GCC built-in function
!      '__builtin_isinf'.
  
   -- Template: bool std.math.traits.isNaN (X)(X x)
  
       Returns true if X is NaN.
  
       This function is evaluated during CTFE as the GCC built-in function
!      '__builtin_isnan'.
  
   -- Function: float std.math.trigoometry.tan (float x)
   -- Function: double std.math.trigoometry.tan (double x)
--- 2070,2111 ----
       away from zero.
  
       This function is evaluated during CTFE as the GCC built-in function
!      â€˜__builtin_roundâ€™.
  
   -- Function: real std.math.rounding.trunc (real x)
  
       Returns the integer portion of X, dropping the fractional portion.
  
       This function is evaluated during CTFE as the GCC built-in function
!      â€˜__builtin_truncâ€™.
  
   -- Template: R std.math.traits.copysign (R, X)(R to, X from)
  
       Returns a value composed of TO with FROM's sign bit.
  
       This function is evaluated during CTFE as the GCC built-in function
!      â€˜__builtin_copysignâ€™.
  
   -- Template: bool std.math.traits.isFinite (X)(X x)
  
       Returns true if X is finite.
  
       This function is evaluated during CTFE as the GCC built-in function
!      â€˜__builtin_isfiniteâ€™.
  
   -- Template: bool std.math.traits.isInfinity (X)(X x)
  
       Returns true if X is infinite.
  
       This function is evaluated during CTFE as the GCC built-in function
!      â€˜__builtin_isinfâ€™.
  
   -- Template: bool std.math.traits.isNaN (X)(X x)
  
       Returns true if X is NaN.
  
       This function is evaluated during CTFE as the GCC built-in function
!      â€˜__builtin_isnanâ€™.
  
   -- Function: float std.math.trigoometry.tan (float x)
   -- Function: double std.math.trigoometry.tan (double x)
*************** suppport.
*** 2114,2120 ****
       Returns tangent of X, where X is in radians.
  
       This intrinsic is the same as the GCC built-in function
!      '__builtin_tan'.
  
  
  File: gdc.info,  Node: Predefined Pragmas,  Next: Predefined Versions,  Prev: Intrinsics,  Up: D Implementation
--- 2114,2120 ----
       Returns tangent of X, where X is in radians.
  
       This intrinsic is the same as the GCC built-in function
!      â€˜__builtin_tanâ€™.
  
  
  File: gdc.info,  Node: Predefined Pragmas,  Next: Predefined Versions,  Prev: Intrinsics,  Up: D Implementation
*************** File: gdc.info,  Node: Predefined Pragma
*** 2122,2128 ****
  2.6 Predefined Pragmas
  ======================
  
! The 'pragma' operator is used as a way to pass special information to
  the implementation and allow the addition of vendor specific extensions.
  The standard predefined pragmas are documented by the D language
  specification hosted at
--- 2122,2128 ----
  2.6 Predefined Pragmas
  ======================
  
! The â€˜pragmaâ€™ operator is used as a way to pass special information to
  the implementation and allow the addition of vendor specific extensions.
  The standard predefined pragmas are documented by the D language
  specification hosted at
*************** specification hosted at
*** 2130,2182 ****
  must recognize, but is free to ignore any pragma in this list.
  
     Where a pragma is ignored, the GNU D compiler will emit a warning
! when the '-Wunknown-pragmas' option is seen on the command-line.
  
! 'pragma(crt_constructor)'
!      'pragma(crt_constructor)' annotates a function so it is run after
       the C runtime library is initialized and before the D runtime
       library is initialized.  Functions with this pragma must return
!      'void'.
            pragma(crt_constructor) void init() { }
  
! 'pragma(crt_destructor)'
!      'pragma(crt_destructor)' annotates a function so it is run after
       the D runtime library is terminated and before the C runtime
!      library is terminated.  Calling 'exit' function also causes the
       annotated functions to run.  Functions with this pragma must return
!      'void'.
            pragma(crt_destructor) void init() { }
  
! 'pragma(inline)'
! 'pragma(inline, false)'
! 'pragma(inline, true)'
!      'pragma(inline)' affects whether functions are declared inlined or
       not.  The pragma takes two forms.  In the first form, inlining is
       controlled by the command-line options for inlining.
  
!      Functions annotated with 'pragma(inline, false)' are marked
!      uninlinable.  Functions annotated with 'pragma(inline, true)' are
       always inlined.
  
! 'pragma(lib)'
       This pragma is accepted, but has no effect.
            pragma(lib, "advapi32");
  
! 'pragma(linkerDirective)'
       This pragma is accepted, but has no effect.
            pragma(linkerDirective, "/FAILIFMISMATCH:_ITERATOR_DEBUG_LEVEL=2");
  
! 'pragma(mangle)'
!      'pragma(mangle, "symbol_name")' overrides the default mangling for
       a function or variable symbol.  The symbol name can be any
       expression that must evaluate at compile time to a string literal.
       This enables linking to a symbol which is a D keyword, since an
       identifier cannot be a keyword.
  
       Targets are free to apply a prefix to the user label of the symbol
!      name in assembly.  For example, on 'x86_64-apple-darwin',
!      'symbol_name' would produce '_symbol_name'.  If the mangle string
!      begins with '*', then 'pragma(mangle)' will output the rest of the
       string unchanged.
  
            pragma(mangle, "body")
--- 2130,2182 ----
  must recognize, but is free to ignore any pragma in this list.
  
     Where a pragma is ignored, the GNU D compiler will emit a warning
! when the â€˜-Wunknown-pragmasâ€™ option is seen on the command-line.
  
! â€˜pragma(crt_constructor)â€™
!      â€˜pragma(crt_constructor)â€™ annotates a function so it is run after
       the C runtime library is initialized and before the D runtime
       library is initialized.  Functions with this pragma must return
!      â€˜voidâ€™.
            pragma(crt_constructor) void init() { }
  
! â€˜pragma(crt_destructor)â€™
!      â€˜pragma(crt_destructor)â€™ annotates a function so it is run after
       the D runtime library is terminated and before the C runtime
!      library is terminated.  Calling â€˜exitâ€™ function also causes the
       annotated functions to run.  Functions with this pragma must return
!      â€˜voidâ€™.
            pragma(crt_destructor) void init() { }
  
! â€˜pragma(inline)â€™
! â€˜pragma(inline, false)â€™
! â€˜pragma(inline, true)â€™
!      â€˜pragma(inline)â€™ affects whether functions are declared inlined or
       not.  The pragma takes two forms.  In the first form, inlining is
       controlled by the command-line options for inlining.
  
!      Functions annotated with â€˜pragma(inline, false)â€™ are marked
!      uninlinable.  Functions annotated with â€˜pragma(inline, true)â€™ are
       always inlined.
  
! â€˜pragma(lib)â€™
       This pragma is accepted, but has no effect.
            pragma(lib, "advapi32");
  
! â€˜pragma(linkerDirective)â€™
       This pragma is accepted, but has no effect.
            pragma(linkerDirective, "/FAILIFMISMATCH:_ITERATOR_DEBUG_LEVEL=2");
  
! â€˜pragma(mangle)â€™
!      â€˜pragma(mangle, "symbol_name")â€™ overrides the default mangling for
       a function or variable symbol.  The symbol name can be any
       expression that must evaluate at compile time to a string literal.
       This enables linking to a symbol which is a D keyword, since an
       identifier cannot be a keyword.
  
       Targets are free to apply a prefix to the user label of the symbol
!      name in assembly.  For example, on â€˜x86_64-apple-darwinâ€™,
!      â€˜symbol_nameâ€™ would produce â€˜_symbol_nameâ€™.  If the mangle string
!      begins with â€˜*â€™, then â€˜pragma(mangle)â€™ will output the rest of the
       string unchanged.
  
            pragma(mangle, "body")
*************** when the '-Wunknown-pragmas' option is s
*** 2185,2209 ****
            pragma(mangle, "function")
            extern(C++) struct _function {}
  
! 'pragma(msg)'
!      'pragma(msg, "message")' causes the compiler to print an
!      informational message with the text 'message'.  The pragma accepts
       multiple arguments, each to which is evaluated at compile time and
       then all are combined into one concatenated message.
            pragma(msg, "compiling...", 6, 1.0); // prints "compiling...61.0"
  
! 'pragma(printf)'
! 'pragma(scanf)'
  
!      'pragma(printf)' and 'pragma(scanf)' specifies that a function
!      declaration with 'printf' or 'scanf' style arguments that should be
       type-checked against a format string.
  
!      A printf-like or scanf-like function can either be an 'extern(C)'
!      or 'extern(C++)' function with a FORMAT parameter accepting a
!      pointer to a 0-terminated 'char' string, immediately followed by
!      either a '...' variadic argument list or a parameter of type
!      'va_list' as the last parameter.
  
            extern(C):
            pragma(printf)
--- 2185,2209 ----
            pragma(mangle, "function")
            extern(C++) struct _function {}
  
! â€˜pragma(msg)â€™
!      â€˜pragma(msg, "message")â€™ causes the compiler to print an
!      informational message with the text â€˜messageâ€™.  The pragma accepts
       multiple arguments, each to which is evaluated at compile time and
       then all are combined into one concatenated message.
            pragma(msg, "compiling...", 6, 1.0); // prints "compiling...61.0"
  
! â€˜pragma(printf)â€™
! â€˜pragma(scanf)â€™
  
!      â€˜pragma(printf)â€™ and â€˜pragma(scanf)â€™ specifies that a function
!      declaration with â€˜printfâ€™ or â€˜scanfâ€™ style arguments that should be
       type-checked against a format string.
  
!      A printf-like or scanf-like function can either be an â€˜extern(C)â€™
!      or â€˜extern(C++)â€™ function with a FORMAT parameter accepting a
!      pointer to a 0-terminated â€˜charâ€™ string, immediately followed by
!      either a â€˜...â€™ variadic argument list or a parameter of type
!      â€˜va_listâ€™ as the last parameter.
  
            extern(C):
            pragma(printf)
*************** when the '-Wunknown-pragmas' option is s
*** 2212,2218 ****
            pragma(scanf)
            int vscanf(scope const char* format, va_list arg);
  
! 'pragma(startaddress)'
       This pragma is accepted, but has no effect.
            void foo() { }
            pragma(startaddress, foo);
--- 2212,2218 ----
            pragma(scanf)
            int vscanf(scope const char* format, va_list arg);
  
! â€˜pragma(startaddress)â€™
       This pragma is accepted, but has no effect.
            void foo() { }
            pragma(startaddress, foo);
*************** standard, common, and target-specific.
*** 2229,2235 ****
  
     Predefined version identifiers from this list cannot be set from the
  command line or from version statements.  This prevents things like both
! 'Windows' and 'linux' being simultaneously set.
  
  * Menu:
  
--- 2229,2235 ----
  
     Predefined version identifiers from this list cannot be set from the
  command line or from version statements.  This prevents things like both
! â€˜Windowsâ€™ and â€˜linuxâ€™ being simultaneously set.
  
  * Menu:
  
*************** The standard predefined versions are doc
*** 2247,2355 ****
  specification hosted at
  <https://dlang.org/spec/version.html#predefined-versions>.
  
! 'all'
! 'none'
!      Version 'none' is never defined; used to just disable a section of
!      code.  Version 'all' is always defined; used as the opposite of
!      'none'.
  
! 'BigEndian'
! 'LittleEndian'
       These versions reflect the byte order of multi-byte data in memory.
!      'LittleEndian' is set when the least significant byte is first.
!      'BigEndian' is set when the most significant byte is first.
  
! 'CRuntime_Bionic'
! 'CRuntime_Glibc'
! 'CRuntime_Microsoft'
! 'CRuntime_Musl'
! 'CRuntime_Newlib'
! 'CRuntime_UClibc'
  
       These versions reflect which standard C library is being linked in.
!      'CRuntime_Bionic' is set when Bionic is the default C library.
!      'CRuntime_Glibc' is set when GLIBC is the default C library.
!      'CRuntime_Microsoft' is set when MSVCRT is the default C library.
!      'CRuntime_Musl' is set when musl is the default C library.
!      'CRuntime_Newlib' is set when Newlib is the default C library.
!      'CRuntime_UClibc' is set when uClibc is the default C library.
  
! 'CppRuntime_Gcc'
       This version is defined when the standard C++ library being linked
!      in is 'libstdc++'.
  
! 'D_BetterC'
       This version is defined when the standard D libraries are not being
       implicitly linked in.  This also implies that features of the D
       language that rely on exceptions, module information, or run-time
!      type information are disabled as well.  Enabled by '-fno-druntime'.
  
! 'D_Coverage'
       This version is defined when code coverage analysis instrumentation
!      is being generated.  Enabled by '-ftest-coverage'.
  
! 'D_Ddoc'
       This version is defined when Ddoc documentation is being generated.
!      Enabled by '-fdoc'.
  
! 'D_Exceptions'
       This version is defined when exception handling is supported.
!      Disabled by '-fno-exceptions'.
  
! 'D_HardFloat'
! 'D_SoftFloat'
       These versions reflect the floating-point ABI in use by the target.
!      'D_HardFloat' is set when the target hardware has a floating-point
!      unit.  'D_SoftFloat' is set when the target hardware does not have
       a floating-point unit.
  
! 'D_Invariants'
       This version is defined when checks are being emitted for class
!      invariants and struct invariants.  Enabled by '-finvariants'.
  
! 'D_LP64'
       This version is defined when pointers are 64-bits.  Not to be
!      confused with with C's '__LP64__' model.
  
! 'D_ModuleInfo'
       This version is defined when run-time module information (also
!      known as 'ModuleInfo') is supported.  Disabled by
!      '-fno-moduleinfo'.
  
! 'D_NoBoundsChecks'
       This version is defined when array bounds checks are disabled.
!      Enabled by '-fno-bounds-checks'.
  
! 'D_Optimized'
       This version is defined in all optimizing compilations.
  
! 'D_PIC'
       This version is defined when position-independent code is being
!      generated.  Enabled by '-fPIC'.
  
! 'D_PIE'
       This version is defined when position-independent code that can be
       only linked into executables is being generated.  Enabled by
!      '-fPIE'.
  
! 'D_PreConditions'
!      This version is defined when checks are being emitted for 'in'
!      contracts.  Disabled by '-fno-preconditions'.
  
! 'D_PostConditions'
!      This version is defined when checks are being emitted for 'out'
!      contracts.  Disabled by '-fno-postconditions'.
  
! 'D_TypeInfo'
       This version is defined when run-time type information (also known
!      as 'TypeInfo') is supported.  Disabled by '-fno-rtti'.
  
! 'D_Version2'
       This version defined when this is a D version 2 compiler.
  
! 'unittest'
!      This version is defined when the 'unittest' code is being compiled
!      in.  Enabled by '-funittest'.
  
  
  File: gdc.info,  Node: Common Predefined Versions,  Next: Target Predefined Versions,  Prev: Standard Predefined Versions,  Up: Predefined Versions
--- 2247,2355 ----
  specification hosted at
  <https://dlang.org/spec/version.html#predefined-versions>.
  
! â€˜allâ€™
! â€˜noneâ€™
!      Version â€˜noneâ€™ is never defined; used to just disable a section of
!      code.  Version â€˜allâ€™ is always defined; used as the opposite of
!      â€˜noneâ€™.
  
! â€˜BigEndianâ€™
! â€˜LittleEndianâ€™
       These versions reflect the byte order of multi-byte data in memory.
!      â€˜LittleEndianâ€™ is set when the least significant byte is first.
!      â€˜BigEndianâ€™ is set when the most significant byte is first.
  
! â€˜CRuntime_Bionicâ€™
! â€˜CRuntime_Glibcâ€™
! â€˜CRuntime_Microsoftâ€™
! â€˜CRuntime_Muslâ€™
! â€˜CRuntime_Newlibâ€™
! â€˜CRuntime_UClibcâ€™
  
       These versions reflect which standard C library is being linked in.
!      â€˜CRuntime_Bionicâ€™ is set when Bionic is the default C library.
!      â€˜CRuntime_Glibcâ€™ is set when GLIBC is the default C library.
!      â€˜CRuntime_Microsoftâ€™ is set when MSVCRT is the default C library.
!      â€˜CRuntime_Muslâ€™ is set when musl is the default C library.
!      â€˜CRuntime_Newlibâ€™ is set when Newlib is the default C library.
!      â€˜CRuntime_UClibcâ€™ is set when uClibc is the default C library.
  
! â€˜CppRuntime_Gccâ€™
       This version is defined when the standard C++ library being linked
!      in is â€˜libstdc++â€™.
  
! â€˜D_BetterCâ€™
       This version is defined when the standard D libraries are not being
       implicitly linked in.  This also implies that features of the D
       language that rely on exceptions, module information, or run-time
!      type information are disabled as well.  Enabled by â€˜-fno-druntimeâ€™.
  
! â€˜D_Coverageâ€™
       This version is defined when code coverage analysis instrumentation
!      is being generated.  Enabled by â€˜-ftest-coverageâ€™.
  
! â€˜D_Ddocâ€™
       This version is defined when Ddoc documentation is being generated.
!      Enabled by â€˜-fdocâ€™.
  
! â€˜D_Exceptionsâ€™
       This version is defined when exception handling is supported.
!      Disabled by â€˜-fno-exceptionsâ€™.
  
! â€˜D_HardFloatâ€™
! â€˜D_SoftFloatâ€™
       These versions reflect the floating-point ABI in use by the target.
!      â€˜D_HardFloatâ€™ is set when the target hardware has a floating-point
!      unit.  â€˜D_SoftFloatâ€™ is set when the target hardware does not have
       a floating-point unit.
  
! â€˜D_Invariantsâ€™
       This version is defined when checks are being emitted for class
!      invariants and struct invariants.  Enabled by â€˜-finvariantsâ€™.
  
! â€˜D_LP64â€™
       This version is defined when pointers are 64-bits.  Not to be
!      confused with with C's â€˜__LP64__â€™ model.
  
! â€˜D_ModuleInfoâ€™
       This version is defined when run-time module information (also
!      known as â€˜ModuleInfoâ€™) is supported.  Disabled by
!      â€˜-fno-moduleinfoâ€™.
  
! â€˜D_NoBoundsChecksâ€™
       This version is defined when array bounds checks are disabled.
!      Enabled by â€˜-fno-bounds-checksâ€™.
  
! â€˜D_Optimizedâ€™
       This version is defined in all optimizing compilations.
  
! â€˜D_PICâ€™
       This version is defined when position-independent code is being
!      generated.  Enabled by â€˜-fPICâ€™.
  
! â€˜D_PIEâ€™
       This version is defined when position-independent code that can be
       only linked into executables is being generated.  Enabled by
!      â€˜-fPIEâ€™.
  
! â€˜D_PreConditionsâ€™
!      This version is defined when checks are being emitted for â€˜inâ€™
!      contracts.  Disabled by â€˜-fno-preconditionsâ€™.
  
! â€˜D_PostConditionsâ€™
!      This version is defined when checks are being emitted for â€˜outâ€™
!      contracts.  Disabled by â€˜-fno-postconditionsâ€™.
  
! â€˜D_TypeInfoâ€™
       This version is defined when run-time type information (also known
!      as â€˜TypeInfoâ€™) is supported.  Disabled by â€˜-fno-rttiâ€™.
  
! â€˜D_Version2â€™
       This version defined when this is a D version 2 compiler.
  
! â€˜unittestâ€™
!      This version is defined when the â€˜unittestâ€™ code is being compiled
!      in.  Enabled by â€˜-funittestâ€™.
  
  
  File: gdc.info,  Node: Common Predefined Versions,  Next: Target Predefined Versions,  Prev: Standard Predefined Versions,  Up: Predefined Versions
*************** File: gdc.info,  Node: Common Predefined
*** 2359,2395 ****
  
  The common predefined macros are GNU D extensions.  They are available
  with the same meanings regardless of the machine or operating system on
! which you are using GNU D. Their names all start with 'GNU'.
  
! 'GNU'
       This version is defined by the GNU D compiler.  If all you need to
       know is whether or not your D program is being compiled by GDC, or
!      a non-GDC compiler, you can simply test 'version(GNU)'.
  
! 'GNU_CET'
!      This version is defined when '-fcf-protection' is used.  The
!      protection level is also set in '__traits(getTargetInfo, "CET")'
       (*note Traits::).
  
! 'GNU_DWARF2_Exceptions'
! 'GNU_SEH_Exceptions'
! 'GNU_SjLj_Exceptions'
       These versions reflect the mechanism that will be used for
!      exception handling by the target.  'GNU_DWARF2_Exceptions' is
       defined when the target uses DWARF 2 exceptions.
!      'GNU_SEH_Exceptions' is defined when the target uses SEH
!      exceptions.  'GNU_SjLj_Exceptions' is defined when the target uses
!      the 'setjmp'/'longjmp'-based exception handling scheme.
  
! 'GNU_EMUTLS'
       This version is defined if the target does not support thread-local
       storage, and an emulation layer is used instead.
  
! 'GNU_InlineAsm'
!      This version is defined when 'asm' statements use GNU D style
       syntax.  (*note Inline Assembly::)
  
! 'GNU_StackGrowsDown'
       This version is defined if pushing a word onto the stack moves the
       stack pointer to a smaller address, and is undefined otherwise.
  
--- 2359,2395 ----
  
  The common predefined macros are GNU D extensions.  They are available
  with the same meanings regardless of the machine or operating system on
! which you are using GNU D. Their names all start with â€˜GNUâ€™.
  
! â€˜GNUâ€™
       This version is defined by the GNU D compiler.  If all you need to
       know is whether or not your D program is being compiled by GDC, or
!      a non-GDC compiler, you can simply test â€˜version(GNU)â€™.
  
! â€˜GNU_CETâ€™
!      This version is defined when â€˜-fcf-protectionâ€™ is used.  The
!      protection level is also set in â€˜__traits(getTargetInfo, "CET")â€™
       (*note Traits::).
  
! â€˜GNU_DWARF2_Exceptionsâ€™
! â€˜GNU_SEH_Exceptionsâ€™
! â€˜GNU_SjLj_Exceptionsâ€™
       These versions reflect the mechanism that will be used for
!      exception handling by the target.  â€˜GNU_DWARF2_Exceptionsâ€™ is
       defined when the target uses DWARF 2 exceptions.
!      â€˜GNU_SEH_Exceptionsâ€™ is defined when the target uses SEH
!      exceptions.  â€˜GNU_SjLj_Exceptionsâ€™ is defined when the target uses
!      the â€˜setjmpâ€™/â€˜longjmpâ€™-based exception handling scheme.
  
! â€˜GNU_EMUTLSâ€™
       This version is defined if the target does not support thread-local
       storage, and an emulation layer is used instead.
  
! â€˜GNU_InlineAsmâ€™
!      This version is defined when â€˜asmâ€™ statements use GNU D style
       syntax.  (*note Inline Assembly::)
  
! â€˜GNU_StackGrowsDownâ€™
       This version is defined if pushing a word onto the stack moves the
       stack pointer to a smaller address, and is undefined otherwise.
  
*************** The D compiler normally predefines sever
*** 2403,2513 ****
  type of system and machine is in use.  They are obviously different on
  each target supported by GCC.
  
! 'AArch64'
       Version relating to the AArch64 family of processors.
  
! 'Android'
       Version relating to the Android platform.
  
! 'ARM'
! 'ARM_HardFloat'
! 'ARM_SoftFloat'
! 'ARM_SoftFP'
! 'ARM_Thumb'
       Versions relating to the ARM family of processors.
  
! 'Cygwin'
       Version relating to the Cygwin environment.
  
! 'darwin'
!      Deprecated; use 'OSX' instead.
  
! 'DragonFlyBSD'
       Versions relating to DragonFlyBSD systems.
  
! 'FreeBSD'
! 'FreeBSD_9'
! 'FreeBSD_10'
! 'FreeBSD_11'
! 'FreeBSD_...'
       Versions relating to FreeBSD systems.  The FreeBSD major version
       number is inferred from the target triplet.
  
! 'HPPA'
! 'HPPA64'
       Versions relating to the HPPA family of processors.
  
! 'Hurd'
       Version relating to GNU Hurd systems.
  
! 'linux'
       Version relating to Linux systems.
  
! 'MinGW'
       Version relating to the MinGW environment.
  
! 'MIPS32'
! 'MIPS64'
! 'MIPS_EABI'
! 'MIPS_HardFloat'
! 'MIPS_N32'
! 'MIPS_N64'
! 'MIPS_O32'
! 'MIPS_O64'
! 'MIPS_SoftFloat'
       Versions relating to the MIPS family of processors.
  
! 'NetBSD'
       Version relating to NetBSD systems.
  
! 'OpenBSD'
       Version relating to OpenBSD systems.
  
! 'OSX'
       Version relating to OSX systems.
  
! 'Posix'
       Version relating to POSIX systems (includes Linux, FreeBSD, OSX,
       Solaris, etc).
  
! 'PPC'
! 'PPC64'
! 'PPC_HardFloat'
! 'PPC_SoftFloat'
       Versions relating to the PowerPC family of processors.
  
! 'RISCV32'
! 'RISCV64'
       Versions relating to the RISC-V family of processors.
  
! 'S390'
! 'SystemZ'
       Versions relating to the S/390 and System Z family of processors.
  
! 'S390X'
!      Deprecated; use 'SystemZ' instead.
  
! 'Solaris'
       Versions relating to Solaris systems.
  
! 'SPARC'
! 'SPARC64'
! 'SPARC_HardFloat'
! 'SPARC_SoftFloat'
! 'SPARC_V8Plus'
       Versions relating to the SPARC family of processors.
  
! 'Thumb'
!      Deprecated; use 'ARM_Thumb' instead.
  
! 'D_X32'
! 'X86'
! 'X86_64'
       Versions relating to the x86-32 and x86-64 family of processors.
  
! 'Windows'
! 'Win32'
! 'Win64'
       Versions relating to Microsoft Windows systems.
  
  
--- 2403,2513 ----
  type of system and machine is in use.  They are obviously different on
  each target supported by GCC.
  
! â€˜AArch64â€™
       Version relating to the AArch64 family of processors.
  
! â€˜Androidâ€™
       Version relating to the Android platform.
  
! â€˜ARMâ€™
! â€˜ARM_HardFloatâ€™
! â€˜ARM_SoftFloatâ€™
! â€˜ARM_SoftFPâ€™
! â€˜ARM_Thumbâ€™
       Versions relating to the ARM family of processors.
  
! â€˜Cygwinâ€™
       Version relating to the Cygwin environment.
  
! â€˜darwinâ€™
!      Deprecated; use â€˜OSXâ€™ instead.
  
! â€˜DragonFlyBSDâ€™
       Versions relating to DragonFlyBSD systems.
  
! â€˜FreeBSDâ€™
! â€˜FreeBSD_9â€™
! â€˜FreeBSD_10â€™
! â€˜FreeBSD_11â€™
! â€˜FreeBSD_...â€™
       Versions relating to FreeBSD systems.  The FreeBSD major version
       number is inferred from the target triplet.
  
! â€˜HPPAâ€™
! â€˜HPPA64â€™
       Versions relating to the HPPA family of processors.
  
! â€˜Hurdâ€™
       Version relating to GNU Hurd systems.
  
! â€˜linuxâ€™
       Version relating to Linux systems.
  
! â€˜MinGWâ€™
       Version relating to the MinGW environment.
  
! â€˜MIPS32â€™
! â€˜MIPS64â€™
! â€˜MIPS_EABIâ€™
! â€˜MIPS_HardFloatâ€™
! â€˜MIPS_N32â€™
! â€˜MIPS_N64â€™
! â€˜MIPS_O32â€™
! â€˜MIPS_O64â€™
! â€˜MIPS_SoftFloatâ€™
       Versions relating to the MIPS family of processors.
  
! â€˜NetBSDâ€™
       Version relating to NetBSD systems.
  
! â€˜OpenBSDâ€™
       Version relating to OpenBSD systems.
  
! â€˜OSXâ€™
       Version relating to OSX systems.
  
! â€˜Posixâ€™
       Version relating to POSIX systems (includes Linux, FreeBSD, OSX,
       Solaris, etc).
  
! â€˜PPCâ€™
! â€˜PPC64â€™
! â€˜PPC_HardFloatâ€™
! â€˜PPC_SoftFloatâ€™
       Versions relating to the PowerPC family of processors.
  
! â€˜RISCV32â€™
! â€˜RISCV64â€™
       Versions relating to the RISC-V family of processors.
  
! â€˜S390â€™
! â€˜SystemZâ€™
       Versions relating to the S/390 and System Z family of processors.
  
! â€˜S390Xâ€™
!      Deprecated; use â€˜SystemZâ€™ instead.
  
! â€˜Solarisâ€™
       Versions relating to Solaris systems.
  
! â€˜SPARCâ€™
! â€˜SPARC64â€™
! â€˜SPARC_HardFloatâ€™
! â€˜SPARC_SoftFloatâ€™
! â€˜SPARC_V8Plusâ€™
       Versions relating to the SPARC family of processors.
  
! â€˜Thumbâ€™
!      Deprecated; use â€˜ARM_Thumbâ€™ instead.
  
! â€˜D_X32â€™
! â€˜X86â€™
! â€˜X86_64â€™
       Versions relating to the x86-32 and x86-64 family of processors.
  
! â€˜Windowsâ€™
! â€˜Win32â€™
! â€˜Win64â€™
       Versions relating to Microsoft Windows systems.
  
  
*************** File: gdc.info,  Node: Special Enums,  N
*** 2516,2529 ****
  2.8 Special Enums
  =================
  
! Special 'enum' names are used to represent types that do not have an
  equivalent basic D type.  For example, C++ types used by the C++ name
  mangler.
  
     Special enums are declared opaque, with a base type explicitly set.
  Unlike regular opaque enums, special enums can be used as any other
! value type.  They have a default '.init' value, as well as other enum
! properties available ('.min', '.max').  Special enums can be declared in
  any module, and will be recognized by the compiler.
  
       import gcc.builtins;
--- 2516,2529 ----
  2.8 Special Enums
  =================
  
! Special â€˜enumâ€™ names are used to represent types that do not have an
  equivalent basic D type.  For example, C++ types used by the C++ name
  mangler.
  
     Special enums are declared opaque, with a base type explicitly set.
  Unlike regular opaque enums, special enums can be used as any other
! value type.  They have a default â€˜.initâ€™ value, as well as other enum
! properties available (â€˜.minâ€™, â€˜.maxâ€™).  Special enums can be declared in
  any module, and will be recognized by the compiler.
  
       import gcc.builtins;
*************** any module, and will be recognized by th
*** 2532,2565 ****
  
  The following identifiers are recognized by GNU D.
  
! '__c_complex_double'
!      C '_Complex double' type.
! '__c_complex_float'
!      C '_Complex float' type.
! '__c_complex_real'
!      C '_Complex long double' type.
! '__c_long'
!      C++ 'long' type.
! '__c_longlong'
!      C++ 'long long' type.
! '__c_long_double'
!      C 'long double' type.
! '__c_ulong'
!      C++ 'unsigned long' type.
! '__c_ulonglong'
!      C++ 'unsigned long long' type.
! '__c_wchar_t'
!      C++ 'wchar_t' type.
  
!    The 'core.stdc.config' module declares the following shorthand alias
! types for convenience: 'c_complex_double', 'c_complex_float',
! 'c_complex_real', 'cpp_long', 'cpp_longlong', 'c_long_double',
! 'cpp_ulong', 'cpp_ulonglong'.
  
     It may cause undefined behavior at runtime if a special enum is
  declared with a base type that has a different size to the target C/C++
  type it is representing.  The GNU D compiler will catch such
! declarations and emit a warning when the '-Wmismatched-special-enum'
  option is seen on the command-line.
  
  
--- 2532,2565 ----
  
  The following identifiers are recognized by GNU D.
  
! â€˜__c_complex_doubleâ€™
!      C â€˜_Complex doubleâ€™ type.
! â€˜__c_complex_floatâ€™
!      C â€˜_Complex floatâ€™ type.
! â€˜__c_complex_realâ€™
!      C â€˜_Complex long doubleâ€™ type.
! â€˜__c_longâ€™
!      C++ â€˜longâ€™ type.
! â€˜__c_longlongâ€™
!      C++ â€˜long longâ€™ type.
! â€˜__c_long_doubleâ€™
!      C â€˜long doubleâ€™ type.
! â€˜__c_ulongâ€™
!      C++ â€˜unsigned longâ€™ type.
! â€˜__c_ulonglongâ€™
!      C++ â€˜unsigned long longâ€™ type.
! â€˜__c_wchar_tâ€™
!      C++ â€˜wchar_tâ€™ type.
  
!    The â€˜core.stdc.configâ€™ module declares the following shorthand alias
! types for convenience: â€˜c_complex_doubleâ€™, â€˜c_complex_floatâ€™,
! â€˜c_complex_realâ€™, â€˜cpp_longâ€™, â€˜cpp_longlongâ€™, â€˜c_long_doubleâ€™,
! â€˜cpp_ulongâ€™, â€˜cpp_ulonglongâ€™.
  
     It may cause undefined behavior at runtime if a special enum is
  declared with a base type that has a different size to the target C/C++
  type it is representing.  The GNU D compiler will catch such
! declarations and emit a warning when the â€˜-Wmismatched-special-enumâ€™
  option is seen on the command-line.
  
  
*************** Traits are extensions to the D programmi
*** 2572,2578 ****
  at compile time, to get at information internal to the compiler.  This
  is also known as compile time reflection.
  
!    GNU D implements a '__traits(getTargetInfo)' trait that receives a
  string key as its argument.  The result is an expression describing the
  requested target information.
  
--- 2572,2578 ----
  at compile time, to get at information internal to the compiler.  This
  is also known as compile time reflection.
  
!    GNU D implements a â€˜__traits(getTargetInfo)â€™ trait that receives a
  string key as its argument.  The result is an expression describing the
  requested target information.
  
*************** hosted at <https://dlang.org/spec/traits
*** 2588,2609 ****
  
     The following keys are recognized by GNU D.
  
! 'CET'
!      When '-fcf-protection' is used, the first bit is set to 1 for the
!      value 'branch' and the second bit is set to 1 for the value
!      'return'.
  
! 'cppRuntimeLibrary'
       The C++ runtime library affinity for this toolchain.
  
! 'cppStd'
!      The version of the C++ standard supported by 'extern(C++)' code,
!      equivalent to the '__cplusplus' macro in a C++ compiler.
  
! 'floatAbi'
!      Floating point ABI; may be 'hard', 'soft', or 'softfp'.
  
! 'objectFormat'
       Target object format.
  
  
--- 2588,2609 ----
  
     The following keys are recognized by GNU D.
  
! â€˜CETâ€™
!      When â€˜-fcf-protectionâ€™ is used, the first bit is set to 1 for the
!      value â€˜branchâ€™ and the second bit is set to 1 for the value
!      â€˜returnâ€™.
  
! â€˜cppRuntimeLibraryâ€™
       The C++ runtime library affinity for this toolchain.
  
! â€˜cppStdâ€™
!      The version of the C++ standard supported by â€˜extern(C++)â€™ code,
!      equivalent to the â€˜__cplusplusâ€™ macro in a C++ compiler.
  
! â€˜floatAbiâ€™
!      Floating point ABI; may be â€˜hardâ€™, â€˜softâ€™, or â€˜softfpâ€™.
  
! â€˜objectFormatâ€™
       Target object format.
  
  
*************** integer types, and vector operations ope
*** 2619,2638 ****
       alias int4 = __vector(int[4]);
  
  All the basic integer types can be used as base types, both as signed
! and as unsigned: 'byte', 'short', 'int', 'long'.  In addition, 'float'
! and 'double' can be used to build floating-point vector types, and
! 'void' to build vectors of untyped data.  Only sizes that are positive
  power-of-two multiples of the base type size are currently allowed.
  
! The 'core.simd' module has the following shorthand aliases for commonly
! supported vector types: 'byte8', 'byte16', 'byte32', 'byte64',
! 'double1', 'double2', 'double4', 'double8', 'float2', 'float4',
! 'float8', 'float16', 'int2', 'int4', 'int8', 'int16', 'long1', 'long2',
! 'long4', 'long8', 'short4', 'short8', 'short16', 'short32', 'ubyte8',
! 'ubyte16', 'ubyte32', 'ubyte64', 'uint2', 'uint4', 'uint8', 'uint16',
! 'ulong1', 'ulong2', 'ulong4', 'ulong8', 'ushort4', 'ushort8',
! 'ushort16', 'ushort32', 'void8', 'void16', 'void32', 'void64'.  All
! these aliases correspond to '__vector(type[N])'.
  
     Which vector types are supported depends on the target.  Only vector
  types that are implemented for the current architecture are supported at
--- 2619,2638 ----
       alias int4 = __vector(int[4]);
  
  All the basic integer types can be used as base types, both as signed
! and as unsigned: â€˜byteâ€™, â€˜shortâ€™, â€˜intâ€™, â€˜longâ€™.  In addition, â€˜floatâ€™
! and â€˜doubleâ€™ can be used to build floating-point vector types, and
! â€˜voidâ€™ to build vectors of untyped data.  Only sizes that are positive
  power-of-two multiples of the base type size are currently allowed.
  
! The â€˜core.simdâ€™ module has the following shorthand aliases for commonly
! supported vector types: â€˜byte8â€™, â€˜byte16â€™, â€˜byte32â€™, â€˜byte64â€™,
! â€˜double1â€™, â€˜double2â€™, â€˜double4â€™, â€˜double8â€™, â€˜float2â€™, â€˜float4â€™,
! â€˜float8â€™, â€˜float16â€™, â€˜int2â€™, â€˜int4â€™, â€˜int8â€™, â€˜int16â€™, â€˜long1â€™, â€˜long2â€™,
! â€˜long4â€™, â€˜long8â€™, â€˜short4â€™, â€˜short8â€™, â€˜short16â€™, â€˜short32â€™, â€˜ubyte8â€™,
! â€˜ubyte16â€™, â€˜ubyte32â€™, â€˜ubyte64â€™, â€˜uint2â€™, â€˜uint4â€™, â€˜uint8â€™, â€˜uint16â€™,
! â€˜ulong1â€™, â€˜ulong2â€™, â€˜ulong4â€™, â€˜ulong8â€™, â€˜ushort4â€™, â€˜ushort8â€™,
! â€˜ushort16â€™, â€˜ushort32â€™, â€˜void8â€™, â€˜void16â€™, â€˜void32â€™, â€˜void64â€™.  All
! these aliases correspond to â€˜__vector(type[N])â€™.
  
     Which vector types are supported depends on the target.  Only vector
  types that are implemented for the current architecture are supported at
*************** cause GNU D to synthesize the instructio
*** 2649,2655 ****
  
  Vector types can be used with a subset of normal D operations.
  Currently, GNU D allows using the following operators on these types:
! '+, -, *, /, unary+, unary-'.
  
       alias int4 = __vector(int[4]);
  
--- 2649,2655 ----
  
  Vector types can be used with a subset of normal D operations.
  Currently, GNU D allows using the following operators on these types:
! â€˜+, -, *, /, unary+, unary-â€™.
  
       alias int4 = __vector(int[4]);
  
*************** Currently, GNU D allows using the follow
*** 2657,2665 ****
  
       c = a + b;
  
! It is also possible to use shifting operators '<<', '>>', the modulus
! operator '%', logical operations '&, |, ^', and the complement operator
! 'unary~' on integer-type vectors.
  
     For convenience, it is allowed to use a binary vector operation where
  one operand is a scalar.  In that case the compiler transforms the
--- 2657,2665 ----
  
       c = a + b;
  
! It is also possible to use shifting operators â€˜<<â€™, â€˜>>â€™, the modulus
! operator â€˜%â€™, logical operations â€˜&, |, ^â€™, and the complement operator
! â€˜unary~â€™ on integer-type vectors.
  
     For convenience, it is allowed to use a binary vector operation where
  one operand is a scalar.  In that case the compiler transforms the
*************** code.
*** 2678,2685 ****
  
       a = l + a;    // Error, incompatible types.
  
! Vector comparison is supported with standard comparison operators: '==,
! !=, <, <=, >, >='.  Comparison operands can be vector expressions of
  integer-type or real-type.  Comparison between integer-type vectors and
  real-type vectors are not supported.  The result of the comparison is a
  vector of the same width and number of elements as the comparison
--- 2678,2685 ----
  
       a = l + a;    // Error, incompatible types.
  
! Vector comparison is supported with standard comparison operators: â€˜==,
! !=, <, <=, >, >=â€™.  Comparison operands can be vector expressions of
  integer-type or real-type.  Comparison between integer-type vectors and
  real-type vectors are not supported.  The result of the comparison is a
  vector of the same width and number of elements as the comparison
*************** File: gdc.info,  Node: Vector Intrinsics
*** 2705,2711 ****
  ======================
  
  The following functions are a collection of vector operation intrinsics,
! available by importing the 'gcc.simd' module.
  
   -- Template: void gcc.simd.prefetch (bool RW, ubyte LOCALITY)
            (const(void)* ADDR)
--- 2705,2711 ----
  ======================
  
  The following functions are a collection of vector operation intrinsics,
! available by importing the â€˜gcc.simdâ€™ module.
  
   -- Template: void gcc.simd.prefetch (bool RW, ubyte LOCALITY)
            (const(void)* ADDR)
*************** available by importing the 'gcc.simd' mo
*** 2718,2724 ****
       compile-time constant integer between zero and three.
  
       This intrinsic is the same as the GCC built-in function
!      '__builtin_prefetch'.
  
            for (i = 0; i < n; i++)
            {
--- 2718,2724 ----
       compile-time constant integer between zero and three.
  
       This intrinsic is the same as the GCC built-in function
!      â€˜__builtin_prefetchâ€™.
  
            for (i = 0; i < n; i++)
            {
*************** available by importing the 'gcc.simd' mo
*** 2756,2762 ****
       the output vector.
  
       This intrinsic is the same as the GCC built-in function
!      '__builtin_shuffle'.
  
            int4 a = [1, 2, 3, 4];
            int4 b = [5, 6, 7, 8];
--- 2756,2762 ----
       the output vector.
  
       This intrinsic is the same as the GCC built-in function
!      â€˜__builtin_shuffleâ€™.
  
            int4 a = [1, 2, 3, 4];
            int4 b = [5, 6, 7, 8];
*************** available by importing the 'gcc.simd' mo
*** 2776,2782 ****
       length as the MASK.
  
       This intrinsic is the same as the GCC built-in function
!      '__builtin_shufflevector'.
  
            int8 a = [1, -2, 3, -4, 5, -6, 7, -8];
            int4 b = shufflevector(a, a, 0, 2, 4, 6);   // b is [1,3,5,7]
--- 2776,2782 ----
       length as the MASK.
  
       This intrinsic is the same as the GCC built-in function
!      â€˜__builtin_shufflevectorâ€™.
  
            int8 a = [1, -2, 3, -4, 5, -6, 7, -8];
            int4 b = shufflevector(a, a, 0, 2, 4, 6);   // b is [1,3,5,7]
*************** available by importing the 'gcc.simd' mo
*** 2803,2809 ****
       every element cast to the element type of the return type.
  
       This intrinsic is the same as the GCC built-in function
!      '__builtin_convertvector'.
  
            int4 a = [1, -2, 3, -4];
            float4 b = [1.5, -2.5, 3, 7];
--- 2803,2809 ----
       every element cast to the element type of the return type.
  
       This intrinsic is the same as the GCC built-in function
!      â€˜__builtin_convertvectorâ€™.
  
            int4 a = [1, -2, 3, -4];
            float4 b = [1.5, -2.5, 3, 7];
*************** Some parts of the D specification are ha
*** 2835,2848 ****
  with GCC, they should be listed here.
  
  Bit Operation Intrinsics
!      The Digital Mars D compiler implements the 'core.bitop' intrinsics
!      'inp', 'inpw', 'inpl', 'outp', 'outpw', and 'outpl'.  These are not
       recognized by GNU D. On most targets, equivalent intrinsics that
!      have the same effect would be 'core.volatile.loadVolatile' and
!      'core.volatile.storeVolatile' respectively (*note Volatile
       Intrinsics::).
  
!      On x86 targets, if an 'in' or 'out' instruction is specifically
       required, that can be achieved using assembler statements instead.
            ubyte inp(uint port)
            {
--- 2835,2848 ----
  with GCC, they should be listed here.
  
  Bit Operation Intrinsics
!      The Digital Mars D compiler implements the â€˜core.bitopâ€™ intrinsics
!      â€˜inpâ€™, â€˜inpwâ€™, â€˜inplâ€™, â€˜outpâ€™, â€˜outpwâ€™, and â€˜outplâ€™.  These are not
       recognized by GNU D. On most targets, equivalent intrinsics that
!      have the same effect would be â€˜core.volatile.loadVolatileâ€™ and
!      â€˜core.volatile.storeVolatileâ€™ respectively (*note Volatile
       Intrinsics::).
  
!      On x86 targets, if an â€˜inâ€™ or â€˜outâ€™ instruction is specifically
       required, that can be achieved using assembler statements instead.
            ubyte inp(uint port)
            {
*************** Bit Operation Intrinsics
*** 2859,2885 ****
  Floating-Point Intermediate Values
  
       GNU D uses a software compile-time floating-point type that assists
!      in cross-compilation and support for arbitrary target 'real'
       precisions wider than 80 bits.  Because of this, the result of
       floating-point CTFE operations may have different results in GNU D
       compared with other D compilers that use the host's native
       floating-point type for storage and CTFE. In particular, GNU D
       won't overflow or underflow when a target real features a higher
!      precision than the host.  Differences also extend to '.stringof'
       representations of intermediate values due to formatting
!      differences with 'sprintf("%Lg")'.
            version(GNU)
                assert((25.5).stringof ~ (3.01).stringof == "2.55e+13.01e+0");
            else
                assert((25.5).stringof ~ (3.01).stringof == "25.53.01");
  
  Function Calling Conventions
!      GNU D does not implement the 'extern(D)' calling convention for x86
       as described in the D specification hosted at
       <https://dlang.org/spec/abi.html#function_calling_conventions>.
  
!      Instead, there is no distinction between 'extern(C)' and
!      'extern(D)' other than name mangling.
  
  ImportC Limitations
       GNU D does not run the preprocessor automatically for any ImportC
--- 2859,2885 ----
  Floating-Point Intermediate Values
  
       GNU D uses a software compile-time floating-point type that assists
!      in cross-compilation and support for arbitrary target â€˜realâ€™
       precisions wider than 80 bits.  Because of this, the result of
       floating-point CTFE operations may have different results in GNU D
       compared with other D compilers that use the host's native
       floating-point type for storage and CTFE. In particular, GNU D
       won't overflow or underflow when a target real features a higher
!      precision than the host.  Differences also extend to â€˜.stringofâ€™
       representations of intermediate values due to formatting
!      differences with â€˜sprintf("%Lg")â€™.
            version(GNU)
                assert((25.5).stringof ~ (3.01).stringof == "2.55e+13.01e+0");
            else
                assert((25.5).stringof ~ (3.01).stringof == "25.53.01");
  
  Function Calling Conventions
!      GNU D does not implement the â€˜extern(D)â€™ calling convention for x86
       as described in the D specification hosted at
       <https://dlang.org/spec/abi.html#function_calling_conventions>.
  
!      Instead, there is no distinction between â€˜extern(C)â€™ and
!      â€˜extern(D)â€™ other than name mangling.
  
  ImportC Limitations
       GNU D does not run the preprocessor automatically for any ImportC
*************** Inline Assembler
*** 2890,2896 ****
       GNU D does not implement the D inline assembler for x86 and x86_64
       as described in the D specification hosted at
       <https://dlang.org/spec/iasm.html>.  Nor does GNU D predefine the
!      'D_InlineAsm_X86' and 'D_InlineAsm_X86_64' version identifiers to
       indicate support.
  
       The GNU D compiler uses an alternative, GCC-based syntax for inline
--- 2890,2896 ----
       GNU D does not implement the D inline assembler for x86 and x86_64
       as described in the D specification hosted at
       <https://dlang.org/spec/iasm.html>.  Nor does GNU D predefine the
!      â€˜D_InlineAsm_X86â€™ and â€˜D_InlineAsm_X86_64â€™ version identifiers to
       indicate support.
  
       The GNU D compiler uses an alternative, GCC-based syntax for inline
*************** Inline Assembler
*** 2899,2923 ****
  Interfacing to Objective-C
       GNU D does not support interfacing with Objective-C, nor its
       protocols, classes, subclasses, instance variables, instance
!      methods and class methods.  The 'extern(Objective-C)' linkage is
!      ignored, as are the '@optional' and '@selector' attributes.  The
!      'D_ObjectiveC' version identifier is not predefined for
       compilations.
  
  Pragma Directives
       Pragmas that are designed to embed information into object files or
       otherwise pass options to the linker are not supported by GNU D.
!      These include 'pragma(lib)', 'pragma(linkerDirective)', and
!      'pragma(startaddress)'.
  
  SIMD Intrinsics
!      The Digital Mars D compiler implements the 'core.simd' intrinsics
!      '__simd', '__simd_ib', '__simd_sto'.  These are not recognized by
!      GNU D, nor does GNU D predefine the 'D_SIMD' version identifier to
       indicate support.
  
       On x86 targets, all intrinsics are available as functions in the
!      'gcc.builtins' module, and have predictable equivalents.
            version (DigitalMars)
            {
                __simd(XMM.PSLLW, op1, op2);
--- 2899,2923 ----
  Interfacing to Objective-C
       GNU D does not support interfacing with Objective-C, nor its
       protocols, classes, subclasses, instance variables, instance
!      methods and class methods.  The â€˜extern(Objective-C)â€™ linkage is
!      ignored, as are the â€˜@optionalâ€™ and â€˜@selectorâ€™ attributes.  The
!      â€˜D_ObjectiveCâ€™ version identifier is not predefined for
       compilations.
  
  Pragma Directives
       Pragmas that are designed to embed information into object files or
       otherwise pass options to the linker are not supported by GNU D.
!      These include â€˜pragma(lib)â€™, â€˜pragma(linkerDirective)â€™, and
!      â€˜pragma(startaddress)â€™.
  
  SIMD Intrinsics
!      The Digital Mars D compiler implements the â€˜core.simdâ€™ intrinsics
!      â€˜__simdâ€™, â€˜__simd_ibâ€™, â€˜__simd_stoâ€™.  These are not recognized by
!      GNU D, nor does GNU D predefine the â€˜D_SIMDâ€™ version identifier to
       indicate support.
  
       On x86 targets, all intrinsics are available as functions in the
!      â€˜gcc.builtinsâ€™ module, and have predictable equivalents.
            version (DigitalMars)
            {
                __simd(XMM.PSLLW, op1, op2);
*************** SIMD Intrinsics
*** 2931,2937 ****
  
  TypeInfo-based va_arg
       The Digital Mars D compiler implements a version of
!      'core.vararg.va_arg' that accepts a run-time 'TypeInfo' argument
       for use when the static type is not known.  This function is not
       implemented by GNU D. It is more portable to use variadic template
       functions instead.
--- 2931,2937 ----
  
  TypeInfo-based va_arg
       The Digital Mars D compiler implements a version of
!      â€˜core.vararg.va_argâ€™ that accepts a run-time â€˜TypeInfoâ€™ argument
       for use when the static type is not known.  This function is not
       implemented by GNU D. It is more portable to use variadic template
       functions instead.
*************** GNU General Public License
*** 2944,2950 ****
  
                          Version 3, 29 June 2007
  
!      Copyright (C) 2007 Free Software Foundation, Inc. <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies of this
       license document, but changing it is not allowed.
--- 2944,2950 ----
  
                          Version 3, 29 June 2007
  
!      Copyright Â© 2007 Free Software Foundation, Inc. <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies of this
       license document, but changing it is not allowed.
*************** mail.
*** 3631,3641 ****
  notice like this when it starts in an interactive mode:
  
       PROGRAM Copyright (C) YEAR NAME OF AUTHOR
!      This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'.
       This is free software, and you are welcome to redistribute it
!      under certain conditions; type 'show c' for details.
  
!    The hypothetical commands 'show w' and 'show c' should show the
  appropriate parts of the General Public License.  Of course, your
  program's commands might be different; for a GUI interface, you would
  use an "about box".
--- 3631,3641 ----
  notice like this when it starts in an interactive mode:
  
       PROGRAM Copyright (C) YEAR NAME OF AUTHOR
!      This program comes with ABSOLUTELY NO WARRANTY; for details type â€˜show wâ€™.
       This is free software, and you are welcome to redistribute it
!      under certain conditions; type â€˜show câ€™ for details.
  
!    The hypothetical commands â€˜show wâ€™ and â€˜show câ€™ should show the
  appropriate parts of the General Public License.  Of course, your
  program's commands might be different; for a GUI interface, you would
  use an "about box".
*************** GNU Free Documentation License
*** 3660,3666 ****
  
                       Version 1.3, 3 November 2008
  
!      Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
       <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies
--- 3660,3666 ----
  
                       Version 1.3, 3 November 2008
  
!      Copyright Â© 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
       <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies
*************** GNU Free Documentation License
*** 3669,3675 ****
    0. PREAMBLE
  
       The purpose of this License is to make a manual, textbook, or other
!      functional and useful document "free" in the sense of freedom: to
       assure everyone the effective freedom to copy and redistribute it,
       with or without modifying it, either commercially or
       noncommercially.  Secondarily, this License preserves for the
--- 3669,3675 ----
    0. PREAMBLE
  
       The purpose of this License is to make a manual, textbook, or other
!      functional and useful document â€œfreeâ€� in the sense of freedom: to
       assure everyone the effective freedom to copy and redistribute it,
       with or without modifying it, either commercially or
       noncommercially.  Secondarily, this License preserves for the
*************** File: gdc.info,  Node: Option Index,  Ne
*** 4140,4148 ****
  Option Index
  ************
  
! 'gdc''s command line options are indexed here without any initial '-' or
! '--'.  Where an option has both positive and negative forms (such as
! '-fOPTION' and '-fno-OPTION'), relevant entries in the manual are
  indexed under the most appropriate form; it may sometimes be useful to
  look up both forms.
  
--- 4140,4148 ----
  Option Index
  ************
  
! â€˜gdcâ€™'s command line options are indexed here without any initial â€˜-â€™ or
! â€˜--â€™.  Where an option has both positive and negative forms (such as
! â€˜-fOPTIONâ€™ and â€˜-fno-OPTIONâ€™), relevant entries in the manual are
  indexed under the most appropriate form; it may sometimes be useful to
  look up both forms.
  
*************** Keyword Index
*** 4262,4270 ****
  [index]
  * Menu:
  
- * allocSize function attribute:          Other Attributes.    (line   9)
  * alloc_size function attribute:         Common Attributes.   (line   8)
  * alloc_size variable attribute:         Common Attributes.   (line   8)
  * always_inline function attribute:      Common Attributes.   (line  30)
  * assembly language in D:                Inline Assembly.     (line   6)
  * assumeUsed function attribute:         Other Attributes.    (line  17)
--- 4262,4270 ----
  [index]
  * Menu:
  
  * alloc_size function attribute:         Common Attributes.   (line   8)
  * alloc_size variable attribute:         Common Attributes.   (line   8)
+ * allocSize function attribute:          Other Attributes.    (line   9)
  * always_inline function attribute:      Common Attributes.   (line  30)
  * assembly language in D:                Inline Assembly.     (line   6)
  * assumeUsed function attribute:         Other Attributes.    (line  17)
*************** Keyword Index
*** 4430,4442 ****
  * messages, warning:                     Warnings.            (line   6)
  * missing features:                      Missing Features.    (line   6)
  * naked function attribute:              Other Attributes.    (line  38)
  * noclone function attribute:            Common Attributes.   (line  76)
  * noinline function attribute:           Common Attributes.   (line  85)
  * noipa function attribute:              Common Attributes.   (line  96)
  * noplt function attribute:              Common Attributes.   (line 114)
  * noSanitize function attribute:         Other Attributes.    (line  47)
- * no_icf function attribute:             Common Attributes.   (line  59)
- * no_sanitize function attribute:        Common Attributes.   (line  66)
  * optimize function attribute:           Common Attributes.   (line 127)
  * options, code generation:              Code Generation.     (line   6)
  * options, directory search:             Directory Options.   (line   6)
--- 4430,4442 ----
  * messages, warning:                     Warnings.            (line   6)
  * missing features:                      Missing Features.    (line   6)
  * naked function attribute:              Other Attributes.    (line  38)
+ * no_icf function attribute:             Common Attributes.   (line  59)
+ * no_sanitize function attribute:        Common Attributes.   (line  66)
  * noclone function attribute:            Common Attributes.   (line  76)
  * noinline function attribute:           Common Attributes.   (line  85)
  * noipa function attribute:              Common Attributes.   (line  96)
  * noplt function attribute:              Common Attributes.   (line 114)
  * noSanitize function attribute:         Other Attributes.    (line  47)
  * optimize function attribute:           Common Attributes.   (line 127)
  * options, code generation:              Code Generation.     (line   6)
  * options, directory search:             Directory Options.   (line   6)
*************** Keyword Index
*** 4503,4511 ****
  * suppressing warnings:                  Warnings.            (line   6)
  * symver function attribute:             Common Attributes.   (line 211)
  * target function attribute:             Common Attributes.   (line 227)
  * target-specific predefined versions:   Target Predefined Versions.
                                                                (line   6)
- * target_clones function attribute:      Common Attributes.   (line 245)
  * traits:                                Traits.              (line   6)
  * used function attribute:               Common Attributes.   (line 259)
  * used variable attribute:               Common Attributes.   (line 259)
--- 4503,4511 ----
  * suppressing warnings:                  Warnings.            (line   6)
  * symver function attribute:             Common Attributes.   (line 211)
  * target function attribute:             Common Attributes.   (line 227)
+ * target_clones function attribute:      Common Attributes.   (line 245)
  * target-specific predefined versions:   Target Predefined Versions.
                                                                (line   6)
  * traits:                                Traits.              (line   6)
  * used function attribute:               Common Attributes.   (line 259)
  * used variable attribute:               Common Attributes.   (line 259)
*************** Keyword Index
*** 4520,4566 ****
  
  
  Tag Table:
! Node: Top1075
! Node: Invoking gdc1933
! Node: Input and Output files2792
! Node: Runtime Options4140
! Node: Directory Options13041
! Node: Code Generation15464
! Node: Warnings19398
! Node: Linking23212
! Node: Developer Options24885
! Node: D Implementation25635
! Node: Attributes27379
! Node: Attribute Syntax28377
! Node: Common Attributes29981
! Node: Other Attributes42365
! Node: Target Attributes44529
! Node: Builtin Functions45934
! Node: Builtin Types46501
! Node: Query Builtins47684
! Node: Other Builtins48914
! Node: ImportC55041
! Node: Inline Assembly57132
! Node: Intrinsics59280
! Node: Bit Operation Intrinsics60093
! Node: Integer Overflow Intrinsics64907
! Node: Math Intrinsics67584
! Node: Variadic Intrinsics70768
! Node: Volatile Intrinsics72332
! Node: CTFE Intrinsics74743
! Node: Predefined Pragmas80599
! Node: Predefined Versions84609
! Node: Standard Predefined Versions85252
! Node: Common Predefined Versions89174
! Node: Target Predefined Versions90855
! Node: Special Enums93203
! Node: Traits94921
! Node: Vector Extensions96335
! Node: Vector Intrinsics99963
! Node: Missing Features104602
! Node: Copying109202
! Node: GNU Free Documentation License146752
! Node: Option Index171881
! Node: Keyword Index179859
  
  End Tag Table
--- 4520,4571 ----
  
  
  Tag Table:
! Node: Top1073
! Node: Invoking gdc1939
! Node: Input and Output files2810
! Node: Runtime Options4210
! Node: Directory Options13587
! Node: Code Generation16070
! Node: Warnings20224
! Node: Linking24198
! Node: Developer Options25943
! Node: D Implementation26729
! Node: Attributes28481
! Node: Attribute Syntax29495
! Node: Common Attributes31115
! Node: Other Attributes43827
! Node: Target Attributes46095
! Node: Builtin Functions47508
! Node: Builtin Types48083
! Node: Query Builtins49350
! Node: Other Builtins50588
! Node: ImportC58207
! Node: Inline Assembly60330
! Node: Intrinsics62518
! Node: Bit Operation Intrinsics63331
! Node: Integer Overflow Intrinsics68185
! Node: Math Intrinsics70890
! Node: Variadic Intrinsics74130
! Node: Volatile Intrinsics75726
! Node: CTFE Intrinsics78145
! Node: Predefined Pragmas84085
! Node: Predefined Versions88251
! Node: Standard Predefined Versions88902
! Node: Common Predefined Versions93072
! Node: Target Predefined Versions94825
! Node: Special Enums97405
! Node: Traits99251
! Node: Vector Extensions100721
! Node: Vector Intrinsics104589
! Node: Missing Features109248
! Node: Copying113984
! Node: GNU Free Documentation License151549
! Node: Option Index176681
! Node: Keyword Index184679
  
  End Tag Table
+ 
+ 
+ Local Variables:
+ coding: utf-8
+ End:
diff -Nrcpad gcc-15.2.0/gcc/doc/gfdl.7 gcc-15.3.0/gcc/doc/gfdl.7
*** gcc-15.2.0/gcc/doc/gfdl.7	Fri Aug  8 06:54:13 2025
--- gcc-15.3.0/gcc/doc/gfdl.7	Fri Jun 12 06:11:48 2026
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
--- 1,5 ----
! .\" -*- mode: troff; coding: utf-8 -*-
! .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
***************
*** 15,43 ****
  .ft R
  .fi
  ..
! .\" Set up some character translations and predefined strings.  \*(-- will
! .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
! .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
! .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
! .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
! .\" nothing in troff, for use with C<>.
! .tr \(*W-
! .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
  .ie n \{\
- .    ds -- \(*W-
- .    ds PI pi
- .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
- .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
- .    ds L" ""
- .    ds R" ""
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
- .    ds -- \|\(em\|
- .    ds PI \(*p
- .    ds L" ``
- .    ds R" ''
  .    ds C`
  .    ds C'
  'br\}
--- 16,27 ----
  .ft R
  .fi
  ..
! .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
  .ie n \{\
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
  .    ds C`
  .    ds C'
  'br\}
***************
*** 54,149 ****
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .if !\nF .nr F 0
! .if \nF>0 \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    if !\nF==2 \{\
! .        nr % 0
! .        nr F 2
  .    \}
  .\}
  .\"
! .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
! .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
! .    \" fudge factors for nroff and troff
! .if n \{\
! .    ds #H 0
! .    ds #V .8m
! .    ds #F .3m
! .    ds #[ \f1
! .    ds #] \fP
! .\}
! .if t \{\
! .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
! .    ds #V .6m
! .    ds #F 0
! .    ds #[ \&
! .    ds #] \&
! .\}
! .    \" simple accents for nroff and troff
! .if n \{\
! .    ds ' \&
! .    ds ` \&
! .    ds ^ \&
! .    ds , \&
! .    ds ~ ~
! .    ds /
! .\}
! .if t \{\
! .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
! .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
! .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
! .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
! .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
! .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
! .\}
! .    \" troff and (daisy-wheel) nroff accents
! .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
! .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
! .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
! .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
! .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
! .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
! .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
! .ds ae a\h'-(\w'a'u*4/10)'e
! .ds Ae A\h'-(\w'A'u*4/10)'E
! .    \" corrections for vroff
! .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
! .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
! .    \" for low resolution devices (crt and lpr)
! .if \n(.H>23 .if \n(.V>19 \
! \{\
! .    ds : e
! .    ds 8 ss
! .    ds o a
! .    ds d- d\h'-1'\(ga
! .    ds D- D\h'-1'\(hy
! .    ds th \o'bp'
! .    ds Th \o'LP'
! .    ds ae ae
! .    ds Ae AE
! .\}
! .rm #[ #] #H #V #F C
  .\" ========================================================================
  .\"
  .IX Title "GFDL 7"
! .TH GFDL 7 "2025-08-08" "gcc-15.2.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH "NAME"
  gfdl \- GNU Free Documentation License
! .SH "DESCRIPTION"
  .IX Header "DESCRIPTION"
  \&\f(CW@comment\fR For some cases, this default \f(CW@node\fR/@unnumbered is not applicable and
  \&\f(CW@comment\fR causes warnings.  In those cases, the including file can set
! \&\f(CW@comment\fR nodefaultgnufreedocumentationlicensenode and provide it's own version.
  \&\f(CW@comment\fR F.i., when this file is included in an \f(CW@raisesections\fR context, the
  \&\f(CW@comment\fR including file can use an \f(CW@unnumberedsec\fR.
! .SS "\s-1GNU\s0 Free Documentation License"
  .IX Subsection "GNU Free Documentation License"
  .SS "Version 1.3, 3 November 2008"
  .IX Subsection "Version 1.3, 3 November 2008"
--- 38,78 ----
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .nr rF 0
! .if \n(.g .if rF .nr rF 1
! .if (\n(rF:(\n(.g==0)) \{\
! .    if \nF \{\
! .        de IX
! .        tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .        if !\nF==2 \{\
! .            nr % 0
! .            nr F 2
! .        \}
  .    \}
  .\}
+ .rr rF
  .\"
! .\" Required to disable full justification in groff 1.23.0.
! .if n .ds AD l
  .\" ========================================================================
  .\"
  .IX Title "GFDL 7"
! .TH GFDL 7 2026-06-12 gcc-15.3.0 GNU
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH NAME
  gfdl \- GNU Free Documentation License
! .SH DESCRIPTION
  .IX Header "DESCRIPTION"
  \&\f(CW@comment\fR For some cases, this default \f(CW@node\fR/@unnumbered is not applicable and
  \&\f(CW@comment\fR causes warnings.  In those cases, the including file can set
! \&\f(CW@comment\fR nodefaultgnufreedocumentationlicensenode and provide it\*(Aqs own version.
  \&\f(CW@comment\fR F.i., when this file is included in an \f(CW@raisesections\fR context, the
  \&\f(CW@comment\fR including file can use an \f(CW@unnumberedsec\fR.
! .SS "GNU Free Documentation License"
  .IX Subsection "GNU Free Documentation License"
  .SS "Version 1.3, 3 November 2008"
  .IX Subsection "Version 1.3, 3 November 2008"
*************** gfdl \- GNU Free Documentation License
*** 154,162 ****
  \&        Everyone is permitted to copy and distribute verbatim copies
  \&        of this license document, but changing it is not allowed.
  .Ve
! .IP "0." 4
  .IX Item "0."
! \&\s-1PREAMBLE\s0
  .Sp
  The purpose of this License is to make a manual, textbook, or other
  functional and useful document \fIfree\fR in the sense of freedom: to
--- 83,91 ----
  \&        Everyone is permitted to copy and distribute verbatim copies
  \&        of this license document, but changing it is not allowed.
  .Ve
! .IP 0. 4
  .IX Item "0."
! PREAMBLE
  .Sp
  The purpose of this License is to make a manual, textbook, or other
  functional and useful document \fIfree\fR in the sense of freedom: to
*************** Secondarily, this License preserves for
*** 166,174 ****
  to get credit for their work, while not being considered responsible
  for modifications made by others.
  .Sp
! This License is a kind of \*(L"copyleft\*(R", which means that derivative
  works of the document must themselves be free in the same sense.  It
! complements the \s-1GNU\s0 General Public License, which is a copyleft
  license designed for free software.
  .Sp
  We have designed this License in order to use it for manuals for free
--- 95,103 ----
  to get credit for their work, while not being considered responsible
  for modifications made by others.
  .Sp
! This License is a kind of "copyleft", which means that derivative
  works of the document must themselves be free in the same sense.  It
! complements the GNU General Public License, which is a copyleft
  license designed for free software.
  .Sp
  We have designed this License in order to use it for manuals for free
*************** software does.  But this License is not
*** 178,204 ****
  it can be used for any textual work, regardless of subject matter or
  whether it is published as a printed book.  We recommend this License
  principally for works whose purpose is instruction or reference.
! .IP "1." 4
  .IX Item "1."
! \&\s-1APPLICABILITY AND DEFINITIONS\s0
  .Sp
  This License applies to any manual or other work, in any medium, that
  contains a notice placed by the copyright holder saying it can be
  distributed under the terms of this License.  Such a notice grants a
! world-wide, royalty-free license, unlimited in duration, to use that
! work under the conditions stated herein.  The \*(L"Document\*(R", below,
  refers to any such manual or work.  Any member of the public is a
! licensee, and is addressed as \*(L"you\*(R".  You accept the license if you
  copy, modify or distribute the work in a way requiring permission
  under copyright law.
  .Sp
! A \*(L"Modified Version\*(R" of the Document means any work containing the
  Document or a portion of it, either copied verbatim, or with
  modifications and/or translated into another language.
  .Sp
! A \*(L"Secondary Section\*(R" is a named appendix or a front-matter section
  of the Document that deals exclusively with the relationship of the
! publishers or authors of the Document to the Document's overall
  subject (or to related matters) and contains nothing that could fall
  directly within that overall subject.  (Thus, if the Document is in
  part a textbook of mathematics, a Secondary Section may not explain
--- 107,133 ----
  it can be used for any textual work, regardless of subject matter or
  whether it is published as a printed book.  We recommend this License
  principally for works whose purpose is instruction or reference.
! .IP 1. 4
  .IX Item "1."
! APPLICABILITY AND DEFINITIONS
  .Sp
  This License applies to any manual or other work, in any medium, that
  contains a notice placed by the copyright holder saying it can be
  distributed under the terms of this License.  Such a notice grants a
! world\-wide, royalty\-free license, unlimited in duration, to use that
! work under the conditions stated herein.  The "Document", below,
  refers to any such manual or work.  Any member of the public is a
! licensee, and is addressed as "you".  You accept the license if you
  copy, modify or distribute the work in a way requiring permission
  under copyright law.
  .Sp
! A "Modified Version" of the Document means any work containing the
  Document or a portion of it, either copied verbatim, or with
  modifications and/or translated into another language.
  .Sp
! A "Secondary Section" is a named appendix or a front\-matter section
  of the Document that deals exclusively with the relationship of the
! publishers or authors of the Document to the Document\*(Aqs overall
  subject (or to related matters) and contains nothing that could fall
  directly within that overall subject.  (Thus, if the Document is in
  part a textbook of mathematics, a Secondary Section may not explain
*************** connection with the subject or with rela
*** 207,213 ****
  commercial, philosophical, ethical or political position regarding
  them.
  .Sp
! The \*(L"Invariant Sections\*(R" are certain Secondary Sections whose titles
  are designated, as being those of Invariant Sections, in the notice
  that says that the Document is released under this License.  If a
  section does not fit the above definition of Secondary then it is not
--- 136,142 ----
  commercial, philosophical, ethical or political position regarding
  them.
  .Sp
! The "Invariant Sections" are certain Secondary Sections whose titles
  are designated, as being those of Invariant Sections, in the notice
  that says that the Document is released under this License.  If a
  section does not fit the above definition of Secondary then it is not
*************** allowed to be designated as Invariant.
*** 215,226 ****
  Invariant Sections.  If the Document does not identify any Invariant
  Sections then there are none.
  .Sp
! The \*(L"Cover Texts\*(R" are certain short passages of text that are listed,
! as Front-Cover Texts or Back-Cover Texts, in the notice that says that
! the Document is released under this License.  A Front-Cover Text may
! be at most 5 words, and a Back-Cover Text may be at most 25 words.
  .Sp
! A \*(L"Transparent\*(R" copy of the Document means a machine-readable copy,
  represented in a format whose specification is available to the
  general public, that is suitable for revising the document
  straightforwardly with generic text editors or (for images composed of
--- 144,155 ----
  Invariant Sections.  If the Document does not identify any Invariant
  Sections then there are none.
  .Sp
! The "Cover Texts" are certain short passages of text that are listed,
! as Front\-Cover Texts or Back\-Cover Texts, in the notice that says that
! the Document is released under this License.  A Front\-Cover Text may
! be at most 5 words, and a Back\-Cover Text may be at most 25 words.
  .Sp
! A "Transparent" copy of the Document means a machine\-readable copy,
  represented in a format whose specification is available to the
  general public, that is suitable for revising the document
  straightforwardly with generic text editors or (for images composed of
*************** to text formatters.  A copy made in an o
*** 231,268 ****
  format whose markup, or absence of markup, has been arranged to thwart
  or discourage subsequent modification by readers is not Transparent.
  An image format is not Transparent if used for any substantial amount
! of text.  A copy that is not \*(L"Transparent\*(R" is called \*(L"Opaque\*(R".
  .Sp
  Examples of suitable formats for Transparent copies include plain
! \&\s-1ASCII\s0 without markup, Texinfo input format, LaTeX input
! format, \s-1SGML\s0 or \s-1XML\s0 using a publicly available
! \&\s-1DTD,\s0 and standard-conforming simple \s-1HTML,\s0
! PostScript or \s-1PDF\s0 designed for human modification.  Examples
! of transparent image formats include \s-1PNG, XCF\s0 and
! \&\s-1JPG.\s0  Opaque formats include proprietary formats that can be
! read and edited only by proprietary word processors, \s-1SGML\s0 or
! \&\s-1XML\s0 for which the \s-1DTD\s0 and/or processing tools are
! not generally available, and the machine-generated \s-1HTML,\s0
! PostScript or \s-1PDF\s0 produced by some word processors for
  output purposes only.
  .Sp
! The \*(L"Title Page\*(R" means, for a printed book, the title page itself,
  plus such following pages as are needed to hold, legibly, the material
  this License requires to appear in the title page.  For works in
! formats which do not have any title page as such, \*(L"Title Page\*(R" means
! the text near the most prominent appearance of the work's title,
  preceding the beginning of the body of the text.
  .Sp
! The \*(L"publisher\*(R" means any person or entity that distributes copies
  of the Document to the public.
  .Sp
! A section \*(L"Entitled \s-1XYZ\*(R"\s0 means a named subunit of the Document whose
! title either is precisely \s-1XYZ\s0 or contains \s-1XYZ\s0 in parentheses following
! text that translates \s-1XYZ\s0 in another language.  (Here \s-1XYZ\s0 stands for a
! specific section name mentioned below, such as \*(L"Acknowledgements\*(R",
! \&\*(L"Dedications\*(R", \*(L"Endorsements\*(R", or \*(L"History\*(R".)  To \*(L"Preserve the Title\*(R"
  of such a section when you modify the Document means that it remains a
! section \*(L"Entitled \s-1XYZ\*(R"\s0 according to this definition.
  .Sp
  The Document may include Warranty Disclaimers next to the notice which
  states that this License applies to the Document.  These Warranty
--- 160,197 ----
  format whose markup, or absence of markup, has been arranged to thwart
  or discourage subsequent modification by readers is not Transparent.
  An image format is not Transparent if used for any substantial amount
! of text.  A copy that is not "Transparent" is called "Opaque".
  .Sp
  Examples of suitable formats for Transparent copies include plain
! ASCII without markup, Texinfo input format, LaTeX input
! format, SGML or XML using a publicly available
! DTD, and standard\-conforming simple HTML,
! PostScript or PDF designed for human modification.  Examples
! of transparent image formats include PNG, XCF and
! JPG.  Opaque formats include proprietary formats that can be
! read and edited only by proprietary word processors, SGML or
! XML for which the DTD and/or processing tools are
! not generally available, and the machine\-generated HTML,
! PostScript or PDF produced by some word processors for
  output purposes only.
  .Sp
! The "Title Page" means, for a printed book, the title page itself,
  plus such following pages as are needed to hold, legibly, the material
  this License requires to appear in the title page.  For works in
! formats which do not have any title page as such, "Title Page" means
! the text near the most prominent appearance of the work\*(Aqs title,
  preceding the beginning of the body of the text.
  .Sp
! The "publisher" means any person or entity that distributes copies
  of the Document to the public.
  .Sp
! A section "Entitled XYZ" means a named subunit of the Document whose
! title either is precisely XYZ or contains XYZ in parentheses following
! text that translates XYZ in another language.  (Here XYZ stands for a
! specific section name mentioned below, such as "Acknowledgements",
! "Dedications", "Endorsements", or "History".)  To "Preserve the Title"
  of such a section when you modify the Document means that it remains a
! section "Entitled XYZ" according to this definition.
  .Sp
  The Document may include Warranty Disclaimers next to the notice which
  states that this License applies to the Document.  These Warranty
*************** Disclaimers are considered to be include
*** 270,278 ****
  License, but only as regards disclaiming warranties: any other
  implication that these Warranty Disclaimers may have is void and has
  no effect on the meaning of this License.
! .IP "2." 4
  .IX Item "2."
! \&\s-1VERBATIM COPYING\s0
  .Sp
  You may copy and distribute the Document in any medium, either
  commercially or noncommercially, provided that this License, the
--- 199,207 ----
  License, but only as regards disclaiming warranties: any other
  implication that these Warranty Disclaimers may have is void and has
  no effect on the meaning of this License.
! .IP 2. 4
  .IX Item "2."
! VERBATIM COPYING
  .Sp
  You may copy and distribute the Document in any medium, either
  commercially or noncommercially, provided that this License, the
*************** number of copies you must also follow th
*** 286,300 ****
  .Sp
  You may also lend copies, under the same conditions stated above, and
  you may publicly display copies.
! .IP "3." 4
  .IX Item "3."
! \&\s-1COPYING IN QUANTITY\s0
  .Sp
  If you publish printed copies (or copies in media that commonly have
  printed covers) of the Document, numbering more than 100, and the
! Document's license notice requires Cover Texts, you must enclose the
  copies in covers that carry, clearly and legibly, all these Cover
! Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
  the back cover.  Both covers must also clearly and legibly identify
  you as the publisher of these copies.  The front cover must present
  the full title with all words of the title equally prominent and
--- 215,229 ----
  .Sp
  You may also lend copies, under the same conditions stated above, and
  you may publicly display copies.
! .IP 3. 4
  .IX Item "3."
! COPYING IN QUANTITY
  .Sp
  If you publish printed copies (or copies in media that commonly have
  printed covers) of the Document, numbering more than 100, and the
! Document\*(Aqs license notice requires Cover Texts, you must enclose the
  copies in covers that carry, clearly and legibly, all these Cover
! Texts: Front\-Cover Texts on the front cover, and Back\-Cover Texts on
  the back cover.  Both covers must also clearly and legibly identify
  you as the publisher of these copies.  The front cover must present
  the full title with all words of the title equally prominent and
*************** reasonably) on the actual cover, and con
*** 309,318 ****
  pages.
  .Sp
  If you publish or distribute Opaque copies of the Document numbering
! more than 100, you must either include a machine-readable Transparent
  copy along with each Opaque copy, or state in or with each Opaque copy
! a computer-network location from which the general network-using
! public has access to download using public-standard network protocols
  a complete Transparent copy of the Document, free of added material.
  If you use the latter option, you must take reasonably prudent steps,
  when you begin distribution of Opaque copies in quantity, to ensure
--- 238,247 ----
  pages.
  .Sp
  If you publish or distribute Opaque copies of the Document numbering
! more than 100, you must either include a machine\-readable Transparent
  copy along with each Opaque copy, or state in or with each Opaque copy
! a computer\-network location from which the general network\-using
! public has access to download using public\-standard network protocols
  a complete Transparent copy of the Document, free of added material.
  If you use the latter option, you must take reasonably prudent steps,
  when you begin distribution of Opaque copies in quantity, to ensure
*************** edition to the public.
*** 324,332 ****
  It is requested, but not required, that you contact the authors of the
  Document well before redistributing any large number of copies, to give
  them a chance to provide you with an updated version of the Document.
! .IP "4." 4
  .IX Item "4."
! \&\s-1MODIFICATIONS\s0
  .Sp
  You may copy and distribute a Modified Version of the Document under
  the conditions of sections 2 and 3 above, provided that you release
--- 253,261 ----
  It is requested, but not required, that you contact the authors of the
  Document well before redistributing any large number of copies, to give
  them a chance to provide you with an updated version of the Document.
! .IP 4. 4
  .IX Item "4."
! MODIFICATIONS
  .Sp
  You may copy and distribute a Modified Version of the Document under
  the conditions of sections 2 and 3 above, provided that you release
*************** Version filling the role of the Document
*** 335,437 ****
  and modification of the Modified Version to whoever possesses a copy
  of it.  In addition, you must do these things in the Modified Version:
  .RS 4
! .IP "A." 4
  .IX Item "A."
  Use in the Title Page (and on the covers, if any) a title distinct
  from that of the Document, and from those of previous versions
  (which should, if there were any, be listed in the History section
  of the Document).  You may use the same title as a previous version
  if the original publisher of that version gives permission.
! .IP "B." 4
  .IX Item "B."
  List on the Title Page, as authors, one or more persons or entities
  responsible for authorship of the modifications in the Modified
  Version, together with at least five of the principal authors of the
  Document (all of its principal authors, if it has fewer than five),
  unless they release you from this requirement.
! .IP "C." 4
  .IX Item "C."
  State on the Title page the name of the publisher of the
  Modified Version, as the publisher.
! .IP "D." 4
  .IX Item "D."
  Preserve all the copyright notices of the Document.
! .IP "E." 4
  .IX Item "E."
  Add an appropriate copyright notice for your modifications
  adjacent to the other copyright notices.
! .IP "F." 4
  .IX Item "F."
  Include, immediately after the copyright notices, a license notice
  giving the public permission to use the Modified Version under the
  terms of this License, in the form shown in the Addendum below.
! .IP "G." 4
  .IX Item "G."
  Preserve in that license notice the full lists of Invariant Sections
! and required Cover Texts given in the Document's license notice.
! .IP "H." 4
  .IX Item "H."
  Include an unaltered copy of this License.
! .IP "I." 4
  .IX Item "I."
! Preserve the section Entitled \*(L"History\*(R", Preserve its Title, and add
  to it an item stating at least the title, year, new authors, and
  publisher of the Modified Version as given on the Title Page.  If
! there is no section Entitled \*(L"History\*(R" in the Document, create one
  stating the title, year, authors, and publisher of the Document as
  given on its Title Page, then add an item describing the Modified
  Version as stated in the previous sentence.
! .IP "J." 4
  .IX Item "J."
  Preserve the network location, if any, given in the Document for
  public access to a Transparent copy of the Document, and likewise
  the network locations given in the Document for previous versions
! it was based on.  These may be placed in the \*(L"History\*(R" section.
  You may omit a network location for a work that was published at
  least four years before the Document itself, or if the original
  publisher of the version it refers to gives permission.
! .IP "K." 4
  .IX Item "K."
! For any section Entitled \*(L"Acknowledgements\*(R" or \*(L"Dedications\*(R", Preserve
  the Title of the section, and preserve in the section all the
  substance and tone of each of the contributor acknowledgements and/or
  dedications given therein.
! .IP "L." 4
  .IX Item "L."
  Preserve all the Invariant Sections of the Document,
  unaltered in their text and in their titles.  Section numbers
  or the equivalent are not considered part of the section titles.
! .IP "M." 4
  .IX Item "M."
! Delete any section Entitled \*(L"Endorsements\*(R".  Such a section
  may not be included in the Modified Version.
! .IP "N." 4
  .IX Item "N."
! Do not retitle any existing section to be Entitled \*(L"Endorsements\*(R" or
  to conflict in title with any Invariant Section.
! .IP "O." 4
  .IX Item "O."
  Preserve any Warranty Disclaimers.
  .RE
  .RS 4
  .Sp
! If the Modified Version includes new front-matter sections or
  appendices that qualify as Secondary Sections and contain no material
  copied from the Document, you may at your option designate some or all
  of these sections as invariant.  To do this, add their titles to the
! list of Invariant Sections in the Modified Version's license notice.
  These titles must be distinct from any other section titles.
  .Sp
! You may add a section Entitled \*(L"Endorsements\*(R", provided it contains
  nothing but endorsements of your Modified Version by various
  parties\-\-\-for example, statements of peer review or that the text has
  been approved by an organization as the authoritative definition of a
  standard.
  .Sp
! You may add a passage of up to five words as a Front-Cover Text, and a
! passage of up to 25 words as a Back-Cover Text, to the end of the list
  of Cover Texts in the Modified Version.  Only one passage of
! Front-Cover Text and one of Back-Cover Text may be added by (or
  through arrangements made by) any one entity.  If the Document already
  includes a cover text for the same cover, previously added by you or
  by arrangement made by the same entity you are acting on behalf of,
--- 264,366 ----
  and modification of the Modified Version to whoever possesses a copy
  of it.  In addition, you must do these things in the Modified Version:
  .RS 4
! .IP A. 4
  .IX Item "A."
  Use in the Title Page (and on the covers, if any) a title distinct
  from that of the Document, and from those of previous versions
  (which should, if there were any, be listed in the History section
  of the Document).  You may use the same title as a previous version
  if the original publisher of that version gives permission.
! .IP B. 4
  .IX Item "B."
  List on the Title Page, as authors, one or more persons or entities
  responsible for authorship of the modifications in the Modified
  Version, together with at least five of the principal authors of the
  Document (all of its principal authors, if it has fewer than five),
  unless they release you from this requirement.
! .IP C. 4
  .IX Item "C."
  State on the Title page the name of the publisher of the
  Modified Version, as the publisher.
! .IP D. 4
  .IX Item "D."
  Preserve all the copyright notices of the Document.
! .IP E. 4
  .IX Item "E."
  Add an appropriate copyright notice for your modifications
  adjacent to the other copyright notices.
! .IP F. 4
  .IX Item "F."
  Include, immediately after the copyright notices, a license notice
  giving the public permission to use the Modified Version under the
  terms of this License, in the form shown in the Addendum below.
! .IP G. 4
  .IX Item "G."
  Preserve in that license notice the full lists of Invariant Sections
! and required Cover Texts given in the Document\*(Aqs license notice.
! .IP H. 4
  .IX Item "H."
  Include an unaltered copy of this License.
! .IP I. 4
  .IX Item "I."
! Preserve the section Entitled "History", Preserve its Title, and add
  to it an item stating at least the title, year, new authors, and
  publisher of the Modified Version as given on the Title Page.  If
! there is no section Entitled "History" in the Document, create one
  stating the title, year, authors, and publisher of the Document as
  given on its Title Page, then add an item describing the Modified
  Version as stated in the previous sentence.
! .IP J. 4
  .IX Item "J."
  Preserve the network location, if any, given in the Document for
  public access to a Transparent copy of the Document, and likewise
  the network locations given in the Document for previous versions
! it was based on.  These may be placed in the "History" section.
  You may omit a network location for a work that was published at
  least four years before the Document itself, or if the original
  publisher of the version it refers to gives permission.
! .IP K. 4
  .IX Item "K."
! For any section Entitled "Acknowledgements" or "Dedications", Preserve
  the Title of the section, and preserve in the section all the
  substance and tone of each of the contributor acknowledgements and/or
  dedications given therein.
! .IP L. 4
  .IX Item "L."
  Preserve all the Invariant Sections of the Document,
  unaltered in their text and in their titles.  Section numbers
  or the equivalent are not considered part of the section titles.
! .IP M. 4
  .IX Item "M."
! Delete any section Entitled "Endorsements".  Such a section
  may not be included in the Modified Version.
! .IP N. 4
  .IX Item "N."
! Do not retitle any existing section to be Entitled "Endorsements" or
  to conflict in title with any Invariant Section.
! .IP O. 4
  .IX Item "O."
  Preserve any Warranty Disclaimers.
  .RE
  .RS 4
  .Sp
! If the Modified Version includes new front\-matter sections or
  appendices that qualify as Secondary Sections and contain no material
  copied from the Document, you may at your option designate some or all
  of these sections as invariant.  To do this, add their titles to the
! list of Invariant Sections in the Modified Version\*(Aqs license notice.
  These titles must be distinct from any other section titles.
  .Sp
! You may add a section Entitled "Endorsements", provided it contains
  nothing but endorsements of your Modified Version by various
  parties\-\-\-for example, statements of peer review or that the text has
  been approved by an organization as the authoritative definition of a
  standard.
  .Sp
! You may add a passage of up to five words as a Front\-Cover Text, and a
! passage of up to 25 words as a Back\-Cover Text, to the end of the list
  of Cover Texts in the Modified Version.  Only one passage of
! Front\-Cover Text and one of Back\-Cover Text may be added by (or
  through arrangements made by) any one entity.  If the Document already
  includes a cover text for the same cover, previously added by you or
  by arrangement made by the same entity you are acting on behalf of,
*************** The author(s) and publisher(s) of the Do
*** 442,450 ****
  give permission to use their names for publicity for or to assert or
  imply endorsement of any Modified Version.
  .RE
! .IP "5." 4
  .IX Item "5."
! \&\s-1COMBINING DOCUMENTS\s0
  .Sp
  You may combine the Document with other documents released under this
  License, under the terms defined in section 4 above for modified
--- 371,379 ----
  give permission to use their names for publicity for or to assert or
  imply endorsement of any Modified Version.
  .RE
! .IP 5. 4
  .IX Item "5."
! COMBINING DOCUMENTS
  .Sp
  You may combine the Document with other documents released under this
  License, under the terms defined in section 4 above for modified
*************** author or publisher of that section if k
*** 462,475 ****
  Make the same adjustment to the section titles in the list of
  Invariant Sections in the license notice of the combined work.
  .Sp
! In the combination, you must combine any sections Entitled \*(L"History\*(R"
  in the various original documents, forming one section Entitled
! \&\*(L"History\*(R"; likewise combine any sections Entitled \*(L"Acknowledgements\*(R",
! and any sections Entitled \*(L"Dedications\*(R".  You must delete all
! sections Entitled \*(L"Endorsements.\*(R"
! .IP "6." 4
  .IX Item "6."
! \&\s-1COLLECTIONS OF DOCUMENTS\s0
  .Sp
  You may make a collection consisting of the Document and other documents
  released under this License, and replace the individual copies of this
--- 391,404 ----
  Make the same adjustment to the section titles in the list of
  Invariant Sections in the license notice of the combined work.
  .Sp
! In the combination, you must combine any sections Entitled "History"
  in the various original documents, forming one section Entitled
! "History"; likewise combine any sections Entitled "Acknowledgements",
! and any sections Entitled "Dedications".  You must delete all
! sections Entitled "Endorsements."
! .IP 6. 4
  .IX Item "6."
! COLLECTIONS OF DOCUMENTS
  .Sp
  You may make a collection consisting of the Document and other documents
  released under this License, and replace the individual copies of this
*************** You may extract a single document from s
*** 481,509 ****
  it individually under this License, provided you insert a copy of this
  License into the extracted document, and follow this License in all
  other respects regarding verbatim copying of that document.
! .IP "7." 4
  .IX Item "7."
! \&\s-1AGGREGATION WITH INDEPENDENT WORKS\s0
  .Sp
  A compilation of the Document or its derivatives with other separate
  and independent documents or works, in or on a volume of a storage or
! distribution medium, is called an \*(L"aggregate\*(R" if the copyright
  resulting from the compilation is not used to limit the legal rights
! of the compilation's users beyond what the individual works permit.
  When the Document is included in an aggregate, this License does not
  apply to the other works in the aggregate which are not themselves
  derivative works of the Document.
  .Sp
  If the Cover Text requirement of section 3 is applicable to these
  copies of the Document, then if the Document is less than one half of
! the entire aggregate, the Document's Cover Texts may be placed on
  covers that bracket the Document within the aggregate, or the
  electronic equivalent of covers if the Document is in electronic form.
  Otherwise they must appear on printed covers that bracket the whole
  aggregate.
! .IP "8." 4
  .IX Item "8."
! \&\s-1TRANSLATION\s0
  .Sp
  Translation is considered a kind of modification, so you may
  distribute translations of the Document under the terms of section 4.
--- 410,438 ----
  it individually under this License, provided you insert a copy of this
  License into the extracted document, and follow this License in all
  other respects regarding verbatim copying of that document.
! .IP 7. 4
  .IX Item "7."
! AGGREGATION WITH INDEPENDENT WORKS
  .Sp
  A compilation of the Document or its derivatives with other separate
  and independent documents or works, in or on a volume of a storage or
! distribution medium, is called an "aggregate" if the copyright
  resulting from the compilation is not used to limit the legal rights
! of the compilation\*(Aqs users beyond what the individual works permit.
  When the Document is included in an aggregate, this License does not
  apply to the other works in the aggregate which are not themselves
  derivative works of the Document.
  .Sp
  If the Cover Text requirement of section 3 is applicable to these
  copies of the Document, then if the Document is less than one half of
! the entire aggregate, the Document\*(Aqs Cover Texts may be placed on
  covers that bracket the Document within the aggregate, or the
  electronic equivalent of covers if the Document is in electronic form.
  Otherwise they must appear on printed covers that bracket the whole
  aggregate.
! .IP 8. 4
  .IX Item "8."
! TRANSLATION
  .Sp
  Translation is considered a kind of modification, so you may
  distribute translations of the Document under the terms of section 4.
*************** of those notices and disclaimers.  In ca
*** 518,530 ****
  the translation and the original version of this License or a notice
  or disclaimer, the original version will prevail.
  .Sp
! If a section in the Document is Entitled \*(L"Acknowledgements\*(R",
! \&\*(L"Dedications\*(R", or \*(L"History\*(R", the requirement (section 4) to Preserve
  its Title (section 1) will typically require changing the actual
  title.
! .IP "9." 4
  .IX Item "9."
! \&\s-1TERMINATION\s0
  .Sp
  You may not copy, modify, sublicense, or distribute the Document
  except as expressly provided under this License.  Any attempt
--- 447,459 ----
  the translation and the original version of this License or a notice
  or disclaimer, the original version will prevail.
  .Sp
! If a section in the Document is Entitled "Acknowledgements",
! "Dedications", or "History", the requirement (section 4) to Preserve
  its Title (section 1) will typically require changing the actual
  title.
! .IP 9. 4
  .IX Item "9."
! TERMINATION
  .Sp
  You may not copy, modify, sublicense, or distribute the Document
  except as expressly provided under this License.  Any attempt
*************** licenses of parties who have received co
*** 550,608 ****
  this License.  If your rights have been terminated and not permanently
  reinstated, receipt of a copy of some or all of the same material does
  not give you any rights to use it.
! .IP "10." 4
  .IX Item "10."
! \&\s-1FUTURE REVISIONS OF THIS LICENSE\s0
  .Sp
  The Free Software Foundation may publish new, revised versions
! of the \s-1GNU\s0 Free Documentation License from time to time.  Such new
  versions will be similar in spirit to the present version, but may
  differ in detail to address new problems or concerns.  See
  <\fBhttps://www.gnu.org/copyleft/\fR>.
  .Sp
  Each version of the License is given a distinguishing version number.
  If the Document specifies that a particular numbered version of this
! License \*(L"or any later version\*(R" applies to it, you have the option of
  following the terms and conditions either of that specified version or
  of any later version that has been published (not as a draft) by the
  Free Software Foundation.  If the Document does not specify a version
  number of this License, you may choose any version ever published (not
  as a draft) by the Free Software Foundation.  If the Document
  specifies that a proxy can decide which future versions of this
! License can be used, that proxy's public statement of acceptance of a
  version permanently authorizes you to choose that version for the
  Document.
! .IP "11." 4
  .IX Item "11."
! \&\s-1RELICENSING\s0
  .Sp
! \&\*(L"Massive Multiauthor Collaboration Site\*(R" (or \*(L"\s-1MMC\s0 Site\*(R") means any
  World Wide Web server that publishes copyrightable works and also
  provides prominent facilities for anybody to edit those works.  A
  public wiki that anybody can edit is an example of such a server.  A
! \&\*(L"Massive Multiauthor Collaboration\*(R" (or \*(L"\s-1MMC\*(R"\s0) contained in the
! site means any set of copyrightable works thus published on the \s-1MMC\s0
  site.
  .Sp
! \&\*(L"CC-BY-SA\*(R" means the Creative Commons Attribution-Share Alike 3.0
! license published by Creative Commons Corporation, a not-for-profit
  corporation with a principal place of business in San Francisco,
  California, as well as future copyleft versions of that license
  published by that same organization.
  .Sp
! \&\*(L"Incorporate\*(R" means to publish or republish a Document, in whole or
  in part, as part of another Document.
  .Sp
! An \s-1MMC\s0 is \*(L"eligible for relicensing\*(R" if it is licensed under this
  License, and if all works that were first published under this License
! somewhere other than this \s-1MMC,\s0 and subsequently incorporated in whole
! or in part into the \s-1MMC,\s0 (1) had no cover texts or invariant sections,
  and (2) were thus incorporated prior to November 1, 2008.
  .Sp
! The operator of an \s-1MMC\s0 Site may republish an \s-1MMC\s0 contained in the site
! under CC-BY-SA on the same site at any time before August 1, 2009,
! provided the \s-1MMC\s0 is eligible for relicensing.
! .SS "\s-1ADDENDUM:\s0 How to use this License for your documents"
  .IX Subsection "ADDENDUM: How to use this License for your documents"
  To use this License in a document you have written, include a copy of
  the License in the document and put the following copyright and
--- 479,537 ----
  this License.  If your rights have been terminated and not permanently
  reinstated, receipt of a copy of some or all of the same material does
  not give you any rights to use it.
! .IP 10. 4
  .IX Item "10."
! FUTURE REVISIONS OF THIS LICENSE
  .Sp
  The Free Software Foundation may publish new, revised versions
! of the GNU Free Documentation License from time to time.  Such new
  versions will be similar in spirit to the present version, but may
  differ in detail to address new problems or concerns.  See
  <\fBhttps://www.gnu.org/copyleft/\fR>.
  .Sp
  Each version of the License is given a distinguishing version number.
  If the Document specifies that a particular numbered version of this
! License "or any later version" applies to it, you have the option of
  following the terms and conditions either of that specified version or
  of any later version that has been published (not as a draft) by the
  Free Software Foundation.  If the Document does not specify a version
  number of this License, you may choose any version ever published (not
  as a draft) by the Free Software Foundation.  If the Document
  specifies that a proxy can decide which future versions of this
! License can be used, that proxy\*(Aqs public statement of acceptance of a
  version permanently authorizes you to choose that version for the
  Document.
! .IP 11. 4
  .IX Item "11."
! RELICENSING
  .Sp
! "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
  World Wide Web server that publishes copyrightable works and also
  provides prominent facilities for anybody to edit those works.  A
  public wiki that anybody can edit is an example of such a server.  A
! "Massive Multiauthor Collaboration" (or "MMC") contained in the
! site means any set of copyrightable works thus published on the MMC
  site.
  .Sp
! "CC\-BY\-SA" means the Creative Commons Attribution\-Share Alike 3.0
! license published by Creative Commons Corporation, a not\-for\-profit
  corporation with a principal place of business in San Francisco,
  California, as well as future copyleft versions of that license
  published by that same organization.
  .Sp
! "Incorporate" means to publish or republish a Document, in whole or
  in part, as part of another Document.
  .Sp
! An MMC is "eligible for relicensing" if it is licensed under this
  License, and if all works that were first published under this License
! somewhere other than this MMC, and subsequently incorporated in whole
! or in part into the MMC, (1) had no cover texts or invariant sections,
  and (2) were thus incorporated prior to November 1, 2008.
  .Sp
! The operator of an MMC Site may republish an MMC contained in the site
! under CC\-BY\-SA on the same site at any time before August 1, 2009,
! provided the MMC is eligible for relicensing.
! .SS "ADDENDUM: How to use this License for your documents"
  .IX Subsection "ADDENDUM: How to use this License for your documents"
  To use this License in a document you have written, include a copy of
  the License in the document and put the following copyright and
*************** license notices just after the title pag
*** 618,625 ****
  \&          Free Documentation License".
  .Ve
  .PP
! If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
! replace the \*(L"with...Texts.\*(R" line with this:
  .PP
  .Vb 3
  \&            with the Invariant Sections being <list their titles>, with
--- 547,554 ----
  \&          Free Documentation License".
  .Ve
  .PP
! If you have Invariant Sections, Front\-Cover Texts and Back\-Cover Texts,
! replace the "with...Texts." line with this:
  .PP
  .Vb 3
  \&            with the Invariant Sections being <list their titles>, with
*************** situation.
*** 633,644 ****
  .PP
  If your document contains nontrivial examples of program code, we
  recommend releasing these examples in parallel under your choice of
! free software license, such as the \s-1GNU\s0 General Public License,
  to permit their use in free software.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fIgpl\fR\|(7), \fIfsf\-funding\fR\|(7).
! .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
  <\fBhttps://www.fsf.org\fR>
--- 562,573 ----
  .PP
  If your document contains nontrivial examples of program code, we
  recommend releasing these examples in parallel under your choice of
! free software license, such as the GNU General Public License,
  to permit their use in free software.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fBgpl\fR\|(7), \fBfsf\-funding\fR\|(7).
! .SH COPYRIGHT
  .IX Header "COPYRIGHT"
  Copyright (c) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
  <\fBhttps://www.fsf.org\fR>
diff -Nrcpad gcc-15.2.0/gcc/doc/gfortran.1 gcc-15.3.0/gcc/doc/gfortran.1
*** gcc-15.2.0/gcc/doc/gfortran.1	Fri Aug  8 07:17:57 2025
--- gcc-15.3.0/gcc/doc/gfortran.1	Fri Jun 12 06:36:44 2026
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
--- 1,5 ----
! .\" -*- mode: troff; coding: utf-8 -*-
! .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
***************
*** 15,43 ****
  .ft R
  .fi
  ..
! .\" Set up some character translations and predefined strings.  \*(-- will
! .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
! .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
! .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
! .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
! .\" nothing in troff, for use with C<>.
! .tr \(*W-
! .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
  .ie n \{\
- .    ds -- \(*W-
- .    ds PI pi
- .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
- .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
- .    ds L" ""
- .    ds R" ""
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
- .    ds -- \|\(em\|
- .    ds PI \(*p
- .    ds L" ``
- .    ds R" ''
  .    ds C`
  .    ds C'
  'br\}
--- 16,27 ----
  .ft R
  .fi
  ..
! .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
  .ie n \{\
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
  .    ds C`
  .    ds C'
  'br\}
***************
*** 54,142 ****
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .if !\nF .nr F 0
! .if \nF>0 \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    if !\nF==2 \{\
! .        nr % 0
! .        nr F 2
  .    \}
  .\}
  .\"
! .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
! .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
! .    \" fudge factors for nroff and troff
! .if n \{\
! .    ds #H 0
! .    ds #V .8m
! .    ds #F .3m
! .    ds #[ \f1
! .    ds #] \fP
! .\}
! .if t \{\
! .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
! .    ds #V .6m
! .    ds #F 0
! .    ds #[ \&
! .    ds #] \&
! .\}
! .    \" simple accents for nroff and troff
! .if n \{\
! .    ds ' \&
! .    ds ` \&
! .    ds ^ \&
! .    ds , \&
! .    ds ~ ~
! .    ds /
! .\}
! .if t \{\
! .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
! .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
! .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
! .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
! .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
! .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
! .\}
! .    \" troff and (daisy-wheel) nroff accents
! .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
! .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
! .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
! .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
! .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
! .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
! .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
! .ds ae a\h'-(\w'a'u*4/10)'e
! .ds Ae A\h'-(\w'A'u*4/10)'E
! .    \" corrections for vroff
! .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
! .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
! .    \" for low resolution devices (crt and lpr)
! .if \n(.H>23 .if \n(.V>19 \
! \{\
! .    ds : e
! .    ds 8 ss
! .    ds o a
! .    ds d- d\h'-1'\(ga
! .    ds D- D\h'-1'\(hy
! .    ds th \o'bp'
! .    ds Th \o'LP'
! .    ds ae ae
! .    ds Ae AE
! .\}
! .rm #[ #] #H #V #F C
  .\" ========================================================================
  .\"
  .IX Title "GFORTRAN 1"
! .TH GFORTRAN 1 "2025-08-08" "gcc-15.2.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH "NAME"
  gfortran \- GNU Fortran compiler
! .SH "SYNOPSIS"
  .IX Header "SYNOPSIS"
  gfortran [\fB\-c\fR|\fB\-S\fR|\fB\-E\fR]
           [\fB\-g\fR] [\fB\-pg\fR] [\fB\-O\fR\fIlevel\fR]
--- 38,71 ----
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .nr rF 0
! .if \n(.g .if rF .nr rF 1
! .if (\n(rF:(\n(.g==0)) \{\
! .    if \nF \{\
! .        de IX
! .        tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .        if !\nF==2 \{\
! .            nr % 0
! .            nr F 2
! .        \}
  .    \}
  .\}
+ .rr rF
  .\"
! .\" Required to disable full justification in groff 1.23.0.
! .if n .ds AD l
  .\" ========================================================================
  .\"
  .IX Title "GFORTRAN 1"
! .TH GFORTRAN 1 2026-06-12 gcc-15.3.0 GNU
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH NAME
  gfortran \- GNU Fortran compiler
! .SH SYNOPSIS
  .IX Header "SYNOPSIS"
  gfortran [\fB\-c\fR|\fB\-S\fR|\fB\-E\fR]
           [\fB\-g\fR] [\fB\-pg\fR] [\fB\-O\fR\fIlevel\fR]
*************** gfortran [\fB\-c\fR|\fB\-S\fR|\fB\-E\fR]
*** 144,175 ****
           [\fB\-I\fR\fIdir\fR...] [\fB\-L\fR\fIdir\fR...]
           [\fB\-D\fR\fImacro\fR[=\fIdefn\fR]...] [\fB\-U\fR\fImacro\fR]
           [\fB\-f\fR\fIoption\fR...]
!          [\fB\-m\fR\fImachine-option\fR...]
           [\fB\-o\fR \fIoutfile\fR] \fIinfile\fR...
  .PP
  Only the most useful options are listed here; see below for the
  remainder.
! .SH "DESCRIPTION"
  .IX Header "DESCRIPTION"
  The \fBgfortran\fR command supports all the options supported by the
! \&\fBgcc\fR command.  Only options specific to \s-1GNU\s0 Fortran are documented
  here.
  .PP
! All \s-1GCC\s0 and \s-1GNU\s0 Fortran options
  are accepted both by \fBgfortran\fR and by \fBgcc\fR
  (as well as any other drivers built at the same time,
  such as \fBg++\fR),
! since adding \s-1GNU\s0 Fortran to the \s-1GCC\s0 distribution
! enables acceptance of \s-1GNU\s0 Fortran options
  by all of the relevant drivers.
  .PP
  In some cases, options have positive and negative forms;
  the negative form of \fB\-ffoo\fR would be \fB\-fno\-foo\fR.
  This manual documents only one of these two forms, whichever
  one is not the default.
! .SH "OPTIONS"
  .IX Header "OPTIONS"
! Here is a summary of all the options specific to \s-1GNU\s0 Fortran, grouped
  by type.  Explanations are in the following sections.
  .IP "\fIFortran Language Options\fR" 4
  .IX Item "Fortran Language Options"
--- 73,104 ----
           [\fB\-I\fR\fIdir\fR...] [\fB\-L\fR\fIdir\fR...]
           [\fB\-D\fR\fImacro\fR[=\fIdefn\fR]...] [\fB\-U\fR\fImacro\fR]
           [\fB\-f\fR\fIoption\fR...]
!          [\fB\-m\fR\fImachine\-option\fR...]
           [\fB\-o\fR \fIoutfile\fR] \fIinfile\fR...
  .PP
  Only the most useful options are listed here; see below for the
  remainder.
! .SH DESCRIPTION
  .IX Header "DESCRIPTION"
  The \fBgfortran\fR command supports all the options supported by the
! \&\fBgcc\fR command.  Only options specific to GNU Fortran are documented
  here.
  .PP
! All GCC and GNU Fortran options
  are accepted both by \fBgfortran\fR and by \fBgcc\fR
  (as well as any other drivers built at the same time,
  such as \fBg++\fR),
! since adding GNU Fortran to the GCC distribution
! enables acceptance of GNU Fortran options
  by all of the relevant drivers.
  .PP
  In some cases, options have positive and negative forms;
  the negative form of \fB\-ffoo\fR would be \fB\-fno\-foo\fR.
  This manual documents only one of these two forms, whichever
  one is not the default.
! .SH OPTIONS
  .IX Header "OPTIONS"
! Here is a summary of all the options specific to GNU Fortran, grouped
  by type.  Explanations are in the following sections.
  .IP "\fIFortran Language Options\fR" 4
  .IX Item "Fortran Language Options"
*************** by type.  Explanations are in the follow
*** 251,275 ****
  .IX Subsection "Options controlling Fortran dialect"
  The following options control the details of the Fortran dialect
  accepted by the compiler:
! .IP "\fB\-ffree\-form\fR" 4
  .IX Item "-ffree-form"
  .PD 0
! .IP "\fB\-ffixed\-form\fR" 4
  .IX Item "-ffixed-form"
  .PD
  Specify the layout used by the source file.  The free form layout
  was introduced in Fortran 90.  Fixed form was traditionally used in
  older Fortran programs.  When neither option is specified, the source
  form is determined by the file extension.
! .IP "\fB\-fall\-intrinsics\fR" 4
  .IX Item "-fall-intrinsics"
! This option causes all intrinsic procedures (including the GNU-specific
  extensions) to be accepted.  This can be useful with \fB\-std=\fR to
  force standard compliance but get access to the full range of intrinsics
  available with \fBgfortran\fR.  As a consequence, \fB\-Wintrinsics\-std\fR
! is ignored and no user-defined procedure with the same name as any
  intrinsic is called except when it is explicitly declared \f(CW\*(C`EXTERNAL\*(C'\fR.
! .IP "\fB\-fallow\-argument\-mismatch\fR" 4
  .IX Item "-fallow-argument-mismatch"
  Some code contains calls to external procedures with mismatches
  between the calls and the procedure definition, or with mismatches
--- 180,204 ----
  .IX Subsection "Options controlling Fortran dialect"
  The following options control the details of the Fortran dialect
  accepted by the compiler:
! .IP \fB\-ffree\-form\fR 4
  .IX Item "-ffree-form"
  .PD 0
! .IP \fB\-ffixed\-form\fR 4
  .IX Item "-ffixed-form"
  .PD
  Specify the layout used by the source file.  The free form layout
  was introduced in Fortran 90.  Fixed form was traditionally used in
  older Fortran programs.  When neither option is specified, the source
  form is determined by the file extension.
! .IP \fB\-fall\-intrinsics\fR 4
  .IX Item "-fall-intrinsics"
! This option causes all intrinsic procedures (including the GNU\-specific
  extensions) to be accepted.  This can be useful with \fB\-std=\fR to
  force standard compliance but get access to the full range of intrinsics
  available with \fBgfortran\fR.  As a consequence, \fB\-Wintrinsics\-std\fR
! is ignored and no user\-defined procedure with the same name as any
  intrinsic is called except when it is explicitly declared \f(CW\*(C`EXTERNAL\*(C'\fR.
! .IP \fB\-fallow\-argument\-mismatch\fR 4
  .IX Item "-fallow-argument-mismatch"
  Some code contains calls to external procedures with mismatches
  between the calls and the procedure definition, or with mismatches
*************** warning.  \fB\-fallow\-argument\-mismatc
*** 281,298 ****
  \&\fB\-std=legacy\fR.
  .Sp
  Using this option is \fIstrongly\fR discouraged.  It is possible to
! provide standard-conforming code that allows different types of
  arguments by using an explicit interface and \f(CWTYPE(*)\fR.
! .IP "\fB\-fallow\-invalid\-boz\fR" 4
  .IX Item "-fallow-invalid-boz"
! A \s-1BOZ\s0 literal constant can occur in a limited number of contexts in
  standard conforming Fortran.  This option degrades an error condition
! to a warning, and allows a \s-1BOZ\s0 literal constant to appear where the
  Fortran standard would otherwise prohibit its use.
! .IP "\fB\-fd\-lines\-as\-code\fR" 4
  .IX Item "-fd-lines-as-code"
  .PD 0
! .IP "\fB\-fd\-lines\-as\-comments\fR" 4
  .IX Item "-fd-lines-as-comments"
  .PD
  Enable special treatment for lines beginning with \f(CW\*(C`d\*(C'\fR or \f(CW\*(C`D\*(C'\fR
--- 210,227 ----
  \&\fB\-std=legacy\fR.
  .Sp
  Using this option is \fIstrongly\fR discouraged.  It is possible to
! provide standard\-conforming code that allows different types of
  arguments by using an explicit interface and \f(CWTYPE(*)\fR.
! .IP \fB\-fallow\-invalid\-boz\fR 4
  .IX Item "-fallow-invalid-boz"
! A BOZ literal constant can occur in a limited number of contexts in
  standard conforming Fortran.  This option degrades an error condition
! to a warning, and allows a BOZ literal constant to appear where the
  Fortran standard would otherwise prohibit its use.
! .IP \fB\-fd\-lines\-as\-code\fR 4
  .IX Item "-fd-lines-as-code"
  .PD 0
! .IP \fB\-fd\-lines\-as\-comments\fR 4
  .IX Item "-fd-lines-as-comments"
  .PD
  Enable special treatment for lines beginning with \f(CW\*(C`d\*(C'\fR or \f(CW\*(C`D\*(C'\fR
*************** in fixed form sources.  If the \fB\-fd\-
*** 300,311 ****
  given they are treated as if the first column contained a blank.  If the
  \&\fB\-fd\-lines\-as\-comments\fR option is given, they are treated as
  comment lines.
! .IP "\fB\-fdec\fR" 4
  .IX Item "-fdec"
! \&\s-1DEC\s0 compatibility mode. Enables extensions and other features that mimic
! the default behavior of older compilers (such as \s-1DEC\s0).
  These features are nonstandard and should be avoided at all costs.
! For details on \s-1GNU\s0 Fortran's implementation of these extensions see the
  full documentation.
  .Sp
  Other flags enabled by this switch are:
--- 229,240 ----
  given they are treated as if the first column contained a blank.  If the
  \&\fB\-fd\-lines\-as\-comments\fR option is given, they are treated as
  comment lines.
! .IP \fB\-fdec\fR 4
  .IX Item "-fdec"
! DEC compatibility mode. Enables extensions and other features that mimic
! the default behavior of older compilers (such as DEC).
  These features are nonstandard and should be avoided at all costs.
! For details on GNU Fortran\*(Aqs implementation of these extensions see the
  full documentation.
  .Sp
  Other flags enabled by this switch are:
*************** Other flags enabled by this switch are:
*** 316,440 ****
  .Sp
  If \fB\-fd\-lines\-as\-code\fR/\fB\-fd\-lines\-as\-comments\fR are unset, then
  \&\fB\-fdec\fR also sets \fB\-fd\-lines\-as\-comments\fR.
! .IP "\fB\-fdec\-char\-conversions\fR" 4
  .IX Item "-fdec-char-conversions"
  Enable the use of character literals in assignments and \f(CW\*(C`DATA\*(C'\fR statements
! for non-character variables.
! .IP "\fB\-fdec\-structure\fR" 4
  .IX Item "-fdec-structure"
! Enable \s-1DEC\s0 \f(CW\*(C`STRUCTURE\*(C'\fR and \f(CW\*(C`RECORD\*(C'\fR as well as \f(CW\*(C`UNION\*(C'\fR,
! \&\f(CW\*(C`MAP\*(C'\fR, and dot ('.') as a member separator (in addition to '%'). This is
  provided for compatibility only; Fortran 90 derived types should be used
  instead where possible.
! .IP "\fB\-fdec\-intrinsic\-ints\fR" 4
  .IX Item "-fdec-intrinsic-ints"
  Enable B/I/J/K kind variants of existing integer functions
  (e.g. \f(CW\*(C`BIAND\*(C'\fR, \f(CW\*(C`IIAND\*(C'\fR, \f(CW\*(C`JIAND\*(C'\fR, etc...).
  For a complete list of intrinsics see \fBIntrinsic Procedures\fR.
! .IP "\fB\-fdec\-math\fR" 4
  .IX Item "-fdec-math"
  Obsolete flag.  The purpose of this option was to
! enable legacy math intrinsics such as \f(CW\*(C`COTAN\*(C'\fR and degree-valued
  trigonometric functions (e.g. \f(CW\*(C`TAND\*(C'\fR, \f(CW\*(C`ATAND\*(C'\fR, etc...)
  for compatibility with older code. This
  option is no longer operable. The trigonometric functions are now either
! part of Fortran 2023 or \s-1GNU\s0 extensions.
! .IP "\fB\-fdec\-static\fR" 4
  .IX Item "-fdec-static"
! Enable DEC-style \f(CW\*(C`STATIC\*(C'\fR and \f(CW\*(C`AUTOMATIC\*(C'\fR
  attributes to explicitly specify
  the storage of variables and other objects.
! .IP "\fB\-fdec\-include\fR" 4
  .IX Item "-fdec-include"
  Enable parsing of \f(CW\*(C`INCLUDE\*(C'\fR as a statement in addition to parsing it as
  \&\f(CW\*(C`INCLUDE\*(C'\fR line.
  When parsed as \f(CW\*(C`INCLUDE\*(C'\fR statement, \f(CW\*(C`INCLUDE\*(C'\fR does not have to
  be on a single line and can use line continuations.
! .IP "\fB\-fdec\-format\-defaults\fR" 4
  .IX Item "-fdec-format-defaults"
  Enable format specifiers \fBF\fR, \fBG\fR and \fBI\fR
  to be used without width specifiers; default widths are used instead.
! .IP "\fB\-fdec\-blank\-format\-item\fR" 4
  .IX Item "-fdec-blank-format-item"
  Enable a blank format item at the end of a format specification i.e. nothing
  following the final comma.
! .IP "\fB\-fdollar\-ok\fR" 4
  .IX Item "-fdollar-ok"
! Allow \fB$\fR as a valid non-first character in a symbol name. Symbols
  that start with \fB$\fR are rejected since it is unclear which rules to
  apply to implicit typing as different vendors implement different rules.
  Using \fB$\fR in \f(CW\*(C`IMPLICIT\*(C'\fR statements is also rejected.
! .IP "\fB\-fbackslash\fR" 4
  .IX Item "-fbackslash"
  Change the interpretation of backslashes in string literals from a single
! backslash character to \*(L"C\-style\*(R" escape characters. The following
  combinations are expanded: \fB\ea\fR, \fB\eb\fR, \fB\ef\fR, \fB\en\fR,
! \&\fB\er\fR, \fB\et\fR, \fB\ev\fR, \fB\e\e\fR, and \fB\e0\fR to the \s-1ASCII\s0
  characters alert, backspace, form feed, newline, carriage return,
! horizontal tab, vertical tab, backslash, and \s-1NUL,\s0 respectively.
  Additionally, \fB\ex\fR\fInn\fR, \fB\eu\fR\fInnnn\fR and
  \&\fB\eU\fR\fInnnnnnnn\fR (where each \fIn\fR is a hexadecimal digit) are
  translated into the Unicode characters corresponding to the specified code
  points. All other combinations of a character preceded by \fB\e\fR are
  unexpanded.
! .IP "\fB\-fmodule\-private\fR" 4
  .IX Item "-fmodule-private"
  Set the default accessibility of module entities to \f(CW\*(C`PRIVATE\*(C'\fR.
! Use-associated entities are not accessible unless they are explicitly
  declared as \f(CW\*(C`PUBLIC\*(C'\fR.
! .IP "\fB\-ffixed\-line\-length\-\fR\fIn\fR" 4
  .IX Item "-ffixed-line-length-n"
! Set column after which characters are ignored in typical fixed-form
  lines in the source file, and, unless \f(CW\*(C`\-fno\-pad\-source\*(C'\fR, through which
  spaces are assumed (as if padded to that length) after the ends of short
! fixed-form lines.
  .Sp
  Popular values for \fIn\fR include 72 (the
  standard and the default), 80 (card image), and 132 (corresponding
! to \*(L"extended-source\*(R" options in some popular compilers).
  \&\fIn\fR may also be \fBnone\fR, meaning that the entire line is meaningful
  and that continued character constants never have implicit spaces appended
  to them to fill out the line.
  \&\fB\-ffixed\-line\-length\-0\fR means the same thing as
  \&\fB\-ffixed\-line\-length\-none\fR.
! .IP "\fB\-fno\-pad\-source\fR" 4
  .IX Item "-fno-pad-source"
! By default fixed-form lines have spaces assumed (as if padded to that length)
! after the ends of short fixed-form lines.  This is not done either if
  \&\fB\-ffixed\-line\-length\-0\fR, \fB\-ffixed\-line\-length\-none\fR or
  if \fB\-fno\-pad\-source\fR option is used.  With any of those options
  continued character constants never have implicit spaces appended
  to them to fill out the line.
! .IP "\fB\-ffree\-line\-length\-\fR\fIn\fR" 4
  .IX Item "-ffree-line-length-n"
! Set column after which characters are ignored in typical free-form
  lines in the source file. The default value is 132.
  \&\fIn\fR may be \fBnone\fR, meaning that the entire line is meaningful.
  \&\fB\-ffree\-line\-length\-0\fR means the same thing as
  \&\fB\-ffree\-line\-length\-none\fR.
! .IP "\fB\-fmax\-identifier\-length=\fR\fIn\fR" 4
  .IX Item "-fmax-identifier-length=n"
  Specify the maximum allowed identifier length. Typical values are
  31 (Fortran 95) and 63 (Fortran 2003 and later).
! .IP "\fB\-fimplicit\-none\fR" 4
  .IX Item "-fimplicit-none"
  Specify that no implicit typing is allowed, unless overridden by explicit
  \&\f(CW\*(C`IMPLICIT\*(C'\fR statements.  This is the equivalent of adding
  \&\f(CW\*(C`implicit none\*(C'\fR to the start of every procedure.
! .IP "\fB\-fcray\-pointer\fR" 4
  .IX Item "-fcray-pointer"
  Enable the Cray pointer extension, which provides C\-like pointer
  functionality.
! .IP "\fB\-fopenacc\fR" 4
  .IX Item "-fopenacc"
! Enable handling of OpenACC directives \fB!$acc\fR in free-form Fortran and
! \&\fB!$acc\fR, \fBc$acc\fR and \fB*$acc\fR in fixed-form Fortran.  When
  \&\fB\-fopenacc\fR is specified, the compiler generates accelerated code
  according to the OpenACC Application Programming Interface v2.6
  <\fBhttps://www.openacc.org\fR>.  This option implies \fB\-pthread\fR,
  and thus is only supported on targets that have support for \fB\-pthread\fR.
  The option \fB\-fopenacc\fR implies \fB\-frecursive\fR.
! .IP "\fB\-fopenmp\fR" 4
  .IX Item "-fopenmp"
  Enable handling of OpenMP directives \fB!$omp\fR in Fortran.  It
  additionally enables the conditional compilation sentinel \fB!$\fR in
--- 245,369 ----
  .Sp
  If \fB\-fd\-lines\-as\-code\fR/\fB\-fd\-lines\-as\-comments\fR are unset, then
  \&\fB\-fdec\fR also sets \fB\-fd\-lines\-as\-comments\fR.
! .IP \fB\-fdec\-char\-conversions\fR 4
  .IX Item "-fdec-char-conversions"
  Enable the use of character literals in assignments and \f(CW\*(C`DATA\*(C'\fR statements
! for non\-character variables.
! .IP \fB\-fdec\-structure\fR 4
  .IX Item "-fdec-structure"
! Enable DEC \f(CW\*(C`STRUCTURE\*(C'\fR and \f(CW\*(C`RECORD\*(C'\fR as well as \f(CW\*(C`UNION\*(C'\fR,
! \&\f(CW\*(C`MAP\*(C'\fR, and dot (\*(Aq.\*(Aq) as a member separator (in addition to \*(Aq%\*(Aq). This is
  provided for compatibility only; Fortran 90 derived types should be used
  instead where possible.
! .IP \fB\-fdec\-intrinsic\-ints\fR 4
  .IX Item "-fdec-intrinsic-ints"
  Enable B/I/J/K kind variants of existing integer functions
  (e.g. \f(CW\*(C`BIAND\*(C'\fR, \f(CW\*(C`IIAND\*(C'\fR, \f(CW\*(C`JIAND\*(C'\fR, etc...).
  For a complete list of intrinsics see \fBIntrinsic Procedures\fR.
! .IP \fB\-fdec\-math\fR 4
  .IX Item "-fdec-math"
  Obsolete flag.  The purpose of this option was to
! enable legacy math intrinsics such as \f(CW\*(C`COTAN\*(C'\fR and degree\-valued
  trigonometric functions (e.g. \f(CW\*(C`TAND\*(C'\fR, \f(CW\*(C`ATAND\*(C'\fR, etc...)
  for compatibility with older code. This
  option is no longer operable. The trigonometric functions are now either
! part of Fortran 2023 or GNU extensions.
! .IP \fB\-fdec\-static\fR 4
  .IX Item "-fdec-static"
! Enable DEC\-style \f(CW\*(C`STATIC\*(C'\fR and \f(CW\*(C`AUTOMATIC\*(C'\fR
  attributes to explicitly specify
  the storage of variables and other objects.
! .IP \fB\-fdec\-include\fR 4
  .IX Item "-fdec-include"
  Enable parsing of \f(CW\*(C`INCLUDE\*(C'\fR as a statement in addition to parsing it as
  \&\f(CW\*(C`INCLUDE\*(C'\fR line.
  When parsed as \f(CW\*(C`INCLUDE\*(C'\fR statement, \f(CW\*(C`INCLUDE\*(C'\fR does not have to
  be on a single line and can use line continuations.
! .IP \fB\-fdec\-format\-defaults\fR 4
  .IX Item "-fdec-format-defaults"
  Enable format specifiers \fBF\fR, \fBG\fR and \fBI\fR
  to be used without width specifiers; default widths are used instead.
! .IP \fB\-fdec\-blank\-format\-item\fR 4
  .IX Item "-fdec-blank-format-item"
  Enable a blank format item at the end of a format specification i.e. nothing
  following the final comma.
! .IP \fB\-fdollar\-ok\fR 4
  .IX Item "-fdollar-ok"
! Allow \fB$\fR as a valid non\-first character in a symbol name. Symbols
  that start with \fB$\fR are rejected since it is unclear which rules to
  apply to implicit typing as different vendors implement different rules.
  Using \fB$\fR in \f(CW\*(C`IMPLICIT\*(C'\fR statements is also rejected.
! .IP \fB\-fbackslash\fR 4
  .IX Item "-fbackslash"
  Change the interpretation of backslashes in string literals from a single
! backslash character to "C\-style" escape characters. The following
  combinations are expanded: \fB\ea\fR, \fB\eb\fR, \fB\ef\fR, \fB\en\fR,
! \&\fB\er\fR, \fB\et\fR, \fB\ev\fR, \fB\e\e\fR, and \fB\e0\fR to the ASCII
  characters alert, backspace, form feed, newline, carriage return,
! horizontal tab, vertical tab, backslash, and NUL, respectively.
  Additionally, \fB\ex\fR\fInn\fR, \fB\eu\fR\fInnnn\fR and
  \&\fB\eU\fR\fInnnnnnnn\fR (where each \fIn\fR is a hexadecimal digit) are
  translated into the Unicode characters corresponding to the specified code
  points. All other combinations of a character preceded by \fB\e\fR are
  unexpanded.
! .IP \fB\-fmodule\-private\fR 4
  .IX Item "-fmodule-private"
  Set the default accessibility of module entities to \f(CW\*(C`PRIVATE\*(C'\fR.
! Use\-associated entities are not accessible unless they are explicitly
  declared as \f(CW\*(C`PUBLIC\*(C'\fR.
! .IP \fB\-ffixed\-line\-length\-\fR\fIn\fR 4
  .IX Item "-ffixed-line-length-n"
! Set column after which characters are ignored in typical fixed\-form
  lines in the source file, and, unless \f(CW\*(C`\-fno\-pad\-source\*(C'\fR, through which
  spaces are assumed (as if padded to that length) after the ends of short
! fixed\-form lines.
  .Sp
  Popular values for \fIn\fR include 72 (the
  standard and the default), 80 (card image), and 132 (corresponding
! to "extended\-source" options in some popular compilers).
  \&\fIn\fR may also be \fBnone\fR, meaning that the entire line is meaningful
  and that continued character constants never have implicit spaces appended
  to them to fill out the line.
  \&\fB\-ffixed\-line\-length\-0\fR means the same thing as
  \&\fB\-ffixed\-line\-length\-none\fR.
! .IP \fB\-fno\-pad\-source\fR 4
  .IX Item "-fno-pad-source"
! By default fixed\-form lines have spaces assumed (as if padded to that length)
! after the ends of short fixed\-form lines.  This is not done either if
  \&\fB\-ffixed\-line\-length\-0\fR, \fB\-ffixed\-line\-length\-none\fR or
  if \fB\-fno\-pad\-source\fR option is used.  With any of those options
  continued character constants never have implicit spaces appended
  to them to fill out the line.
! .IP \fB\-ffree\-line\-length\-\fR\fIn\fR 4
  .IX Item "-ffree-line-length-n"
! Set column after which characters are ignored in typical free\-form
  lines in the source file. The default value is 132.
  \&\fIn\fR may be \fBnone\fR, meaning that the entire line is meaningful.
  \&\fB\-ffree\-line\-length\-0\fR means the same thing as
  \&\fB\-ffree\-line\-length\-none\fR.
! .IP \fB\-fmax\-identifier\-length=\fR\fIn\fR 4
  .IX Item "-fmax-identifier-length=n"
  Specify the maximum allowed identifier length. Typical values are
  31 (Fortran 95) and 63 (Fortran 2003 and later).
! .IP \fB\-fimplicit\-none\fR 4
  .IX Item "-fimplicit-none"
  Specify that no implicit typing is allowed, unless overridden by explicit
  \&\f(CW\*(C`IMPLICIT\*(C'\fR statements.  This is the equivalent of adding
  \&\f(CW\*(C`implicit none\*(C'\fR to the start of every procedure.
! .IP \fB\-fcray\-pointer\fR 4
  .IX Item "-fcray-pointer"
  Enable the Cray pointer extension, which provides C\-like pointer
  functionality.
! .IP \fB\-fopenacc\fR 4
  .IX Item "-fopenacc"
! Enable handling of OpenACC directives \fB!$acc\fR in free\-form Fortran and
! \&\fB!$acc\fR, \fBc$acc\fR and \fB*$acc\fR in fixed\-form Fortran.  When
  \&\fB\-fopenacc\fR is specified, the compiler generates accelerated code
  according to the OpenACC Application Programming Interface v2.6
  <\fBhttps://www.openacc.org\fR>.  This option implies \fB\-pthread\fR,
  and thus is only supported on targets that have support for \fB\-pthread\fR.
  The option \fB\-fopenacc\fR implies \fB\-frecursive\fR.
! .IP \fB\-fopenmp\fR 4
  .IX Item "-fopenmp"
  Enable handling of OpenMP directives \fB!$omp\fR in Fortran.  It
  additionally enables the conditional compilation sentinel \fB!$\fR in
*************** Program Interface v4.5 <\fBhttps://www.o
*** 445,451 ****
  implies \fB\-pthread\fR, and thus is only supported on targets that
  have support for \fB\-pthread\fR. \fB\-fopenmp\fR implies
  \&\fB\-fopenmp\-simd\fR and \fB\-frecursive\fR.
! .IP "\fB\-fopenmp\-allocators\fR" 4
  .IX Item "-fopenmp-allocators"
  Enables handling of allocation, reallocation and deallocation of Fortran
  allocatable and pointer variables that are allocated using the
--- 374,380 ----
  implies \fB\-pthread\fR, and thus is only supported on targets that
  have support for \fB\-pthread\fR. \fB\-fopenmp\fR implies
  \&\fB\-fopenmp\-simd\fR and \fB\-frecursive\fR.
! .IP \fB\-fopenmp\-allocators\fR 4
  .IX Item "-fopenmp-allocators"
  Enables handling of allocation, reallocation and deallocation of Fortran
  allocatable and pointer variables that are allocated using the
*************** a derived type that have not been alloca
*** 462,470 ****
  do not need to be compiled with this option.  Nor do files that handle
  such variables after they have been deallocated or allocated by the
  normal Fortran allocator.
! .IP "\fB\-fopenmp\-simd\fR" 4
  .IX Item "-fopenmp-simd"
! Enable handling of OpenMP's \f(CW\*(C`simd\*(C'\fR, \f(CW\*(C`declare simd\*(C'\fR,
  \&\f(CW\*(C`declare reduction\*(C'\fR, \f(CW\*(C`assume\*(C'\fR, \f(CW\*(C`ordered\*(C'\fR, \f(CW\*(C`scan\*(C'\fR
  and \f(CW\*(C`loop\*(C'\fR directive, and of combined or composite directives with
  \&\f(CW\*(C`simd\*(C'\fR as constituent with  \f(CW\*(C`!$omp\*(C'\fR in Fortran.  It additionally
--- 391,399 ----
  do not need to be compiled with this option.  Nor do files that handle
  such variables after they have been deallocated or allocated by the
  normal Fortran allocator.
! .IP \fB\-fopenmp\-simd\fR 4
  .IX Item "-fopenmp-simd"
! Enable handling of OpenMP\*(Aqs \f(CW\*(C`simd\*(C'\fR, \f(CW\*(C`declare simd\*(C'\fR,
  \&\f(CW\*(C`declare reduction\*(C'\fR, \f(CW\*(C`assume\*(C'\fR, \f(CW\*(C`ordered\*(C'\fR, \f(CW\*(C`scan\*(C'\fR
  and \f(CW\*(C`loop\*(C'\fR directive, and of combined or composite directives with
  \&\f(CW\*(C`simd\*(C'\fR as constituent with  \f(CW\*(C`!$omp\*(C'\fR in Fortran.  It additionally
*************** fixed source form Fortran, the sentinels
*** 473,528 ****
  \&\fB*\fR.  Other OpenMP directives are ignored.  Unless \fB\-fopenmp\fR
  is additionally specified, the \f(CW\*(C`loop\*(C'\fR region binds to the current task
  region, independent of the specified \f(CW\*(C`bind\*(C'\fR clause.
! .IP "\fB\-fno\-range\-check\fR" 4
  .IX Item "-fno-range-check"
  Disable range checking on results of simplification of constant
! expressions during compilation.  For example, \s-1GNU\s0 Fortran gives
  an error at compile time when simplifying \f(CW\*(C`a = 1. / 0\*(C'\fR.
  With this option, no error is given and \f(CW\*(C`a\*(C'\fR is assigned
  the value \f(CW\*(C`+Infinity\*(C'\fR.  If an expression evaluates to a value
! outside of the relevant range of [\f(CW\*(C`\-HUGE()\*(C'\fR:\f(CW\*(C`HUGE()\*(C'\fR],
  then the expression is replaced by \f(CW\*(C`\-Inf\*(C'\fR or \f(CW\*(C`+Inf\*(C'\fR
  as appropriate.
  Similarly, \f(CW\*(C`DATA i/Z\*(AqFFFFFFFF\*(Aq/\*(C'\fR results in an integer overflow
  on most systems, but with \fB\-fno\-range\-check\fR the value
! \&\*(L"wraps around\*(R" and \f(CW\*(C`i\*(C'\fR is initialized to \-1 instead.
! .IP "\fB\-fdefault\-integer\-8\fR" 4
  .IX Item "-fdefault-integer-8"
  Set the default integer and logical types to an 8 byte wide type.  This option
  also affects the kind of integer constants like \f(CW42\fR. Unlike
  \&\fB\-finteger\-4\-integer\-8\fR, it does not promote variables with explicit
  kind declaration.
! .IP "\fB\-fdefault\-real\-8\fR" 4
  .IX Item "-fdefault-real-8"
  Set the default real type to an 8 byte wide type.  This option also affects
! the kind of non-double real constants like \f(CW1.0\fR.  This option promotes
  the default width of \f(CW\*(C`DOUBLE PRECISION\*(C'\fR and double real constants
  like \f(CW\*(C`1.d0\*(C'\fR to 16 bytes if possible.  If \f(CW\*(C`\-fdefault\-double\-8\*(C'\fR
  is given along with \f(CW\*(C`fdefault\-real\-8\*(C'\fR, \f(CW\*(C`DOUBLE PRECISION\*(C'\fR
  and double real constants are not promoted.  Unlike \fB\-freal\-4\-real\-8\fR,
  \&\f(CW\*(C`fdefault\-real\-8\*(C'\fR does not promote variables with explicit kind
  declarations.
! .IP "\fB\-fdefault\-real\-10\fR" 4
  .IX Item "-fdefault-real-10"
  Set the default real type to an 10 byte wide type.  This option also affects
! the kind of non-double real constants like \f(CW1.0\fR.  This option promotes
  the default width of \f(CW\*(C`DOUBLE PRECISION\*(C'\fR and double real constants
  like \f(CW\*(C`1.d0\*(C'\fR to 16 bytes if possible.  If \f(CW\*(C`\-fdefault\-double\-8\*(C'\fR
  is given along with \f(CW\*(C`fdefault\-real\-10\*(C'\fR, \f(CW\*(C`DOUBLE PRECISION\*(C'\fR
  and double real constants are not promoted.  Unlike \fB\-freal\-4\-real\-10\fR,
  \&\f(CW\*(C`fdefault\-real\-10\*(C'\fR does not promote variables with explicit kind
  declarations.
! .IP "\fB\-fdefault\-real\-16\fR" 4
  .IX Item "-fdefault-real-16"
  Set the default real type to an 16 byte wide type.  This option also affects
! the kind of non-double real constants like \f(CW1.0\fR.  This option promotes
  the default width of \f(CW\*(C`DOUBLE PRECISION\*(C'\fR and double real constants
  like \f(CW\*(C`1.d0\*(C'\fR to 16 bytes if possible.  If \f(CW\*(C`\-fdefault\-double\-8\*(C'\fR
  is given along with \f(CW\*(C`fdefault\-real\-16\*(C'\fR, \f(CW\*(C`DOUBLE PRECISION\*(C'\fR
  and double real constants are not promoted.  Unlike \fB\-freal\-4\-real\-16\fR,
  \&\f(CW\*(C`fdefault\-real\-16\*(C'\fR does not promote variables with explicit kind
  declarations.
! .IP "\fB\-fdefault\-double\-8\fR" 4
  .IX Item "-fdefault-double-8"
  Set the \f(CW\*(C`DOUBLE PRECISION\*(C'\fR type and double real constants
  like \f(CW\*(C`1.d0\*(C'\fR to an 8 byte wide type.  Do nothing if this
--- 402,457 ----
  \&\fB*\fR.  Other OpenMP directives are ignored.  Unless \fB\-fopenmp\fR
  is additionally specified, the \f(CW\*(C`loop\*(C'\fR region binds to the current task
  region, independent of the specified \f(CW\*(C`bind\*(C'\fR clause.
! .IP \fB\-fno\-range\-check\fR 4
  .IX Item "-fno-range-check"
  Disable range checking on results of simplification of constant
! expressions during compilation.  For example, GNU Fortran gives
  an error at compile time when simplifying \f(CW\*(C`a = 1. / 0\*(C'\fR.
  With this option, no error is given and \f(CW\*(C`a\*(C'\fR is assigned
  the value \f(CW\*(C`+Infinity\*(C'\fR.  If an expression evaluates to a value
! outside of the relevant range of [\f(CW\*(C`\-HUGE()\*(C'\fR:\f(CWHUGE()\fR],
  then the expression is replaced by \f(CW\*(C`\-Inf\*(C'\fR or \f(CW\*(C`+Inf\*(C'\fR
  as appropriate.
  Similarly, \f(CW\*(C`DATA i/Z\*(AqFFFFFFFF\*(Aq/\*(C'\fR results in an integer overflow
  on most systems, but with \fB\-fno\-range\-check\fR the value
! "wraps around" and \f(CW\*(C`i\*(C'\fR is initialized to \-1 instead.
! .IP \fB\-fdefault\-integer\-8\fR 4
  .IX Item "-fdefault-integer-8"
  Set the default integer and logical types to an 8 byte wide type.  This option
  also affects the kind of integer constants like \f(CW42\fR. Unlike
  \&\fB\-finteger\-4\-integer\-8\fR, it does not promote variables with explicit
  kind declaration.
! .IP \fB\-fdefault\-real\-8\fR 4
  .IX Item "-fdefault-real-8"
  Set the default real type to an 8 byte wide type.  This option also affects
! the kind of non\-double real constants like \f(CW1.0\fR.  This option promotes
  the default width of \f(CW\*(C`DOUBLE PRECISION\*(C'\fR and double real constants
  like \f(CW\*(C`1.d0\*(C'\fR to 16 bytes if possible.  If \f(CW\*(C`\-fdefault\-double\-8\*(C'\fR
  is given along with \f(CW\*(C`fdefault\-real\-8\*(C'\fR, \f(CW\*(C`DOUBLE PRECISION\*(C'\fR
  and double real constants are not promoted.  Unlike \fB\-freal\-4\-real\-8\fR,
  \&\f(CW\*(C`fdefault\-real\-8\*(C'\fR does not promote variables with explicit kind
  declarations.
! .IP \fB\-fdefault\-real\-10\fR 4
  .IX Item "-fdefault-real-10"
  Set the default real type to an 10 byte wide type.  This option also affects
! the kind of non\-double real constants like \f(CW1.0\fR.  This option promotes
  the default width of \f(CW\*(C`DOUBLE PRECISION\*(C'\fR and double real constants
  like \f(CW\*(C`1.d0\*(C'\fR to 16 bytes if possible.  If \f(CW\*(C`\-fdefault\-double\-8\*(C'\fR
  is given along with \f(CW\*(C`fdefault\-real\-10\*(C'\fR, \f(CW\*(C`DOUBLE PRECISION\*(C'\fR
  and double real constants are not promoted.  Unlike \fB\-freal\-4\-real\-10\fR,
  \&\f(CW\*(C`fdefault\-real\-10\*(C'\fR does not promote variables with explicit kind
  declarations.
! .IP \fB\-fdefault\-real\-16\fR 4
  .IX Item "-fdefault-real-16"
  Set the default real type to an 16 byte wide type.  This option also affects
! the kind of non\-double real constants like \f(CW1.0\fR.  This option promotes
  the default width of \f(CW\*(C`DOUBLE PRECISION\*(C'\fR and double real constants
  like \f(CW\*(C`1.d0\*(C'\fR to 16 bytes if possible.  If \f(CW\*(C`\-fdefault\-double\-8\*(C'\fR
  is given along with \f(CW\*(C`fdefault\-real\-16\*(C'\fR, \f(CW\*(C`DOUBLE PRECISION\*(C'\fR
  and double real constants are not promoted.  Unlike \fB\-freal\-4\-real\-16\fR,
  \&\f(CW\*(C`fdefault\-real\-16\*(C'\fR does not promote variables with explicit kind
  declarations.
! .IP \fB\-fdefault\-double\-8\fR 4
  .IX Item "-fdefault-double-8"
  Set the \f(CW\*(C`DOUBLE PRECISION\*(C'\fR type and double real constants
  like \f(CW\*(C`1.d0\*(C'\fR to an 8 byte wide type.  Do nothing if this
*************** is already the default.  This option pre
*** 530,586 ****
  \&\fB\-fdefault\-real\-10\fR, and \fB\-fdefault\-real\-16\fR,
  from promoting \f(CW\*(C`DOUBLE PRECISION\*(C'\fR and double real constants like
  \&\f(CW\*(C`1.d0\*(C'\fR to 16 bytes.
! .IP "\fB\-finteger\-4\-integer\-8\fR" 4
  .IX Item "-finteger-4-integer-8"
! Promote all \f(CW\*(C`INTEGER(KIND=4)\*(C'\fR entities to an \f(CW\*(C`INTEGER(KIND=8)\*(C'\fR
  entities.  If \f(CW\*(C`KIND=8\*(C'\fR is unavailable, then an error is issued.
  This option should be used with care and may not be suitable for your codes.
  Areas of possible concern include calls to external procedures,
  alignment in \f(CW\*(C`EQUIVALENCE\*(C'\fR and/or \f(CW\*(C`COMMON\*(C'\fR, generic interfaces,
! \&\s-1BOZ\s0 literal constant conversion, and I/O.  Inspection of the intermediate
  representation of the translated Fortran code, produced by
  \&\fB\-fdump\-tree\-original\fR, is suggested.
! .IP "\fB\-freal\-4\-real\-8\fR" 4
  .IX Item "-freal-4-real-8"
  .PD 0
! .IP "\fB\-freal\-4\-real\-10\fR" 4
  .IX Item "-freal-4-real-10"
! .IP "\fB\-freal\-4\-real\-16\fR" 4
  .IX Item "-freal-4-real-16"
! .IP "\fB\-freal\-8\-real\-4\fR" 4
  .IX Item "-freal-8-real-4"
! .IP "\fB\-freal\-8\-real\-10\fR" 4
  .IX Item "-freal-8-real-10"
! .IP "\fB\-freal\-8\-real\-16\fR" 4
  .IX Item "-freal-8-real-16"
  .PD
! Promote all \f(CW\*(C`REAL(KIND=M)\*(C'\fR entities to \f(CW\*(C`REAL(KIND=N)\*(C'\fR entities.
! If \f(CW\*(C`REAL(KIND=N)\*(C'\fR is unavailable, then an error is issued.
  The \f(CW\*(C`\-freal\-4\-\*(C'\fR flags also affect the default real kind and the
! \&\f(CW\*(C`\-freal\-8\-\*(C'\fR flags also the double-precision real kind.  All other
! real-kind types are unaffected by this option.  The promotion is also
! applied to real literal constants of default and double-precision kind
  and a specified kind number of 4 or 8, respectively.
  However, \f(CW\*(C`\-fdefault\-real\-8\*(C'\fR, \f(CW\*(C`\-fdefault\-real\-10\*(C'\fR,
  \&\f(CW\*(C`\-fdefault\-real\-10\*(C'\fR, and \f(CW\*(C`\-fdefault\-double\-8\*(C'\fR take precedence
! for the default and double-precision real kinds, both for real literal
  constants and for declarations without a kind number.
  Note that for \f(CW\*(C`REAL(KIND=KIND(1.0))\*(C'\fR the literal may get promoted and
  then the result may get promoted again.
  These options should be used with care and may not be suitable for your
  codes.  Areas of possible concern include calls to external procedures,
  alignment in \f(CW\*(C`EQUIVALENCE\*(C'\fR and/or \f(CW\*(C`COMMON\*(C'\fR, generic interfaces,
! \&\s-1BOZ\s0 literal constant conversion, and I/O and calls to intrinsic procedures
  when passing a value to the \f(CW\*(C`kind=\*(C'\fR dummy argument.  Inspection of the
  intermediate representation of the translated Fortran code, produced by
  \&\fB\-fdump\-fortran\-original\fR or \fB\-fdump\-tree\-original\fR, is suggested.
! .IP "\fB\-std=\fR\fIstd\fR" 4
  .IX Item "-std=std"
  Specify the standard to which the program is expected to conform,
  which may be one of \fBf95\fR, \fBf2003\fR, \fBf2008\fR, \fBf2018\fR,
  \&\fBf2023\fR, \fBgnu\fR, or \fBlegacy\fR.  The default value for
  \&\fIstd\fR is \fBgnu\fR, which specifies a superset of the latest
! Fortran standard that includes all of the extensions supported by \s-1GNU\s0
  Fortran, although warnings are given for obsolete extensions not
  recommended for use in new code.  The \fBlegacy\fR value is
  equivalent but without the warnings for obsolete extensions, and may
--- 459,515 ----
  \&\fB\-fdefault\-real\-10\fR, and \fB\-fdefault\-real\-16\fR,
  from promoting \f(CW\*(C`DOUBLE PRECISION\*(C'\fR and double real constants like
  \&\f(CW\*(C`1.d0\*(C'\fR to 16 bytes.
! .IP \fB\-finteger\-4\-integer\-8\fR 4
  .IX Item "-finteger-4-integer-8"
! Promote all \f(CWINTEGER(KIND=4)\fR entities to an \f(CWINTEGER(KIND=8)\fR
  entities.  If \f(CW\*(C`KIND=8\*(C'\fR is unavailable, then an error is issued.
  This option should be used with care and may not be suitable for your codes.
  Areas of possible concern include calls to external procedures,
  alignment in \f(CW\*(C`EQUIVALENCE\*(C'\fR and/or \f(CW\*(C`COMMON\*(C'\fR, generic interfaces,
! BOZ literal constant conversion, and I/O.  Inspection of the intermediate
  representation of the translated Fortran code, produced by
  \&\fB\-fdump\-tree\-original\fR, is suggested.
! .IP \fB\-freal\-4\-real\-8\fR 4
  .IX Item "-freal-4-real-8"
  .PD 0
! .IP \fB\-freal\-4\-real\-10\fR 4
  .IX Item "-freal-4-real-10"
! .IP \fB\-freal\-4\-real\-16\fR 4
  .IX Item "-freal-4-real-16"
! .IP \fB\-freal\-8\-real\-4\fR 4
  .IX Item "-freal-8-real-4"
! .IP \fB\-freal\-8\-real\-10\fR 4
  .IX Item "-freal-8-real-10"
! .IP \fB\-freal\-8\-real\-16\fR 4
  .IX Item "-freal-8-real-16"
  .PD
! Promote all \f(CWREAL(KIND=M)\fR entities to \f(CWREAL(KIND=N)\fR entities.
! If \f(CWREAL(KIND=N)\fR is unavailable, then an error is issued.
  The \f(CW\*(C`\-freal\-4\-\*(C'\fR flags also affect the default real kind and the
! \&\f(CW\*(C`\-freal\-8\-\*(C'\fR flags also the double\-precision real kind.  All other
! real\-kind types are unaffected by this option.  The promotion is also
! applied to real literal constants of default and double\-precision kind
  and a specified kind number of 4 or 8, respectively.
  However, \f(CW\*(C`\-fdefault\-real\-8\*(C'\fR, \f(CW\*(C`\-fdefault\-real\-10\*(C'\fR,
  \&\f(CW\*(C`\-fdefault\-real\-10\*(C'\fR, and \f(CW\*(C`\-fdefault\-double\-8\*(C'\fR take precedence
! for the default and double\-precision real kinds, both for real literal
  constants and for declarations without a kind number.
  Note that for \f(CW\*(C`REAL(KIND=KIND(1.0))\*(C'\fR the literal may get promoted and
  then the result may get promoted again.
  These options should be used with care and may not be suitable for your
  codes.  Areas of possible concern include calls to external procedures,
  alignment in \f(CW\*(C`EQUIVALENCE\*(C'\fR and/or \f(CW\*(C`COMMON\*(C'\fR, generic interfaces,
! BOZ literal constant conversion, and I/O and calls to intrinsic procedures
  when passing a value to the \f(CW\*(C`kind=\*(C'\fR dummy argument.  Inspection of the
  intermediate representation of the translated Fortran code, produced by
  \&\fB\-fdump\-fortran\-original\fR or \fB\-fdump\-tree\-original\fR, is suggested.
! .IP \fB\-std=\fR\fIstd\fR 4
  .IX Item "-std=std"
  Specify the standard to which the program is expected to conform,
  which may be one of \fBf95\fR, \fBf2003\fR, \fBf2008\fR, \fBf2018\fR,
  \&\fBf2023\fR, \fBgnu\fR, or \fBlegacy\fR.  The default value for
  \&\fIstd\fR is \fBgnu\fR, which specifies a superset of the latest
! Fortran standard that includes all of the extensions supported by GNU
  Fortran, although warnings are given for obsolete extensions not
  recommended for use in new code.  The \fBlegacy\fR value is
  equivalent but without the warnings for obsolete extensions, and may
*************** earlier gfortran versions and should not
*** 596,614 ****
  acts as an alias for \fB\-std=f2023\fR and enables proposed features for
  testing Fortran 202y. As the Fortran 202y standard develops, implementation
  might change or the experimental new features might be removed.
! .IP "\fB\-ftest\-forall\-temp\fR" 4
  .IX Item "-ftest-forall-temp"
  Enhance test coverage by forcing most forall assignments to use temporary.
! .IP "\fB\-funsigned\fR" 4
  .IX Item "-funsigned"
  Allow the experimental unsigned extension.
  .SS "Enable and customize preprocessing"
  .IX Subsection "Enable and customize preprocessing"
! Many Fortran compilers including \s-1GNU\s0 Fortran allow passing the source code
! through a C preprocessor (\s-1CPP\s0; sometimes also called the Fortran preprocessor,
! \&\s-1FPP\s0) to allow for conditional compilation.  In the case of \s-1GNU\s0 Fortran,
! this is the \s-1GNU C\s0 Preprocessor in the traditional mode.  On systems with
! case-preserving file names, the preprocessor is automatically invoked if the
  filename extension is \fI.F\fR, \fI.FOR\fR, \fI.FTN\fR, \fI.fpp\fR,
  \&\fI.FPP\fR, \fI.F90\fR, \fI.F95\fR, \fI.F03\fR or \fI.F08\fR.  To manually
  invoke the preprocessor on any file, use \fB\-cpp\fR, to disable
--- 525,543 ----
  acts as an alias for \fB\-std=f2023\fR and enables proposed features for
  testing Fortran 202y. As the Fortran 202y standard develops, implementation
  might change or the experimental new features might be removed.
! .IP \fB\-ftest\-forall\-temp\fR 4
  .IX Item "-ftest-forall-temp"
  Enhance test coverage by forcing most forall assignments to use temporary.
! .IP \fB\-funsigned\fR 4
  .IX Item "-funsigned"
  Allow the experimental unsigned extension.
  .SS "Enable and customize preprocessing"
  .IX Subsection "Enable and customize preprocessing"
! Many Fortran compilers including GNU Fortran allow passing the source code
! through a C preprocessor (CPP; sometimes also called the Fortran preprocessor,
! FPP) to allow for conditional compilation.  In the case of GNU Fortran,
! this is the GNU C Preprocessor in the traditional mode.  On systems with
! case\-preserving file names, the preprocessor is automatically invoked if the
  filename extension is \fI.F\fR, \fI.FOR\fR, \fI.FTN\fR, \fI.fpp\fR,
  \&\fI.FPP\fR, \fI.F90\fR, \fI.F95\fR, \fI.F03\fR or \fI.F08\fR.  To manually
  invoke the preprocessor on any file, use \fB\-cpp\fR, to disable
*************** If a preprocessed file includes another
*** 619,630 ****
  statement, the included file is not preprocessed.  To preprocess included
  files, use the equivalent preprocessor statement \f(CW\*(C`#include\*(C'\fR.
  .PP
! If \s-1GNU\s0 Fortran invokes the preprocessor, \f(CW\*(C`_\|_GFORTRAN_\|_\*(C'\fR
  is defined.  The macros \f(CW\*(C`_\|_GNUC_\|_\*(C'\fR, \f(CW\*(C`_\|_GNUC_MINOR_\|_\*(C'\fR and
  \&\f(CW\*(C`_\|_GNUC_PATCHLEVEL_\|_\*(C'\fR can be used to determine the version of the
  compiler.  See \fBTop,,Overview,cpp,The C Preprocessor\fR for details.
  .PP
! \&\s-1GNU\s0 Fortran supports a number of \f(CW\*(C`INTEGER\*(C'\fR and \f(CW\*(C`REAL\*(C'\fR kind types
  in additional to the kind types required by the Fortran standard.
  The availability of any given kind type is architecture dependent.  The
  following predefined preprocessor macros can be used to conditionally
--- 548,559 ----
  statement, the included file is not preprocessed.  To preprocess included
  files, use the equivalent preprocessor statement \f(CW\*(C`#include\*(C'\fR.
  .PP
! If GNU Fortran invokes the preprocessor, \f(CW\*(C`_\|_GFORTRAN_\|_\*(C'\fR
  is defined.  The macros \f(CW\*(C`_\|_GNUC_\|_\*(C'\fR, \f(CW\*(C`_\|_GNUC_MINOR_\|_\*(C'\fR and
  \&\f(CW\*(C`_\|_GNUC_PATCHLEVEL_\|_\*(C'\fR can be used to determine the version of the
  compiler.  See \fBTop,,Overview,cpp,The C Preprocessor\fR for details.
  .PP
! GNU Fortran supports a number of \f(CW\*(C`INTEGER\*(C'\fR and \f(CW\*(C`REAL\*(C'\fR kind types
  in additional to the kind types required by the Fortran standard.
  The availability of any given kind type is architecture dependent.  The
  following predefined preprocessor macros can be used to conditionally
*************** include code for these additional kind t
*** 632,647 ****
  \&\f(CW\*(C`_\|_GFC_INT_2_\|_\*(C'\fR, \f(CW\*(C`_\|_GFC_INT_8_\|_\*(C'\fR, \f(CW\*(C`_\|_GFC_INT_16_\|_\*(C'\fR,
  \&\f(CW\*(C`_\|_GFC_REAL_10_\|_\*(C'\fR, and \f(CW\*(C`_\|_GFC_REAL_16_\|_\*(C'\fR.
  .PP
! While \s-1CPP\s0 is the de facto standard for preprocessing Fortran code,
! Part 3 of the Fortran 95 standard (\s-1ISO/IEC 1539\-3:1998\s0) defines
  Conditional Compilation, which is not widely used and not directly
! supported by the \s-1GNU\s0 Fortran compiler.
  .PP
  The following options control preprocessing of Fortran code:
! .IP "\fB\-cpp\fR" 4
  .IX Item "-cpp"
  .PD 0
! .IP "\fB\-nocpp\fR" 4
  .IX Item "-nocpp"
  .PD
  Enable preprocessing. The preprocessor is automatically invoked if
--- 561,576 ----
  \&\f(CW\*(C`_\|_GFC_INT_2_\|_\*(C'\fR, \f(CW\*(C`_\|_GFC_INT_8_\|_\*(C'\fR, \f(CW\*(C`_\|_GFC_INT_16_\|_\*(C'\fR,
  \&\f(CW\*(C`_\|_GFC_REAL_10_\|_\*(C'\fR, and \f(CW\*(C`_\|_GFC_REAL_16_\|_\*(C'\fR.
  .PP
! While CPP is the de facto standard for preprocessing Fortran code,
! Part 3 of the Fortran 95 standard (ISO/IEC 1539\-3:1998) defines
  Conditional Compilation, which is not widely used and not directly
! supported by the GNU Fortran compiler.
  .PP
  The following options control preprocessing of Fortran code:
! .IP \fB\-cpp\fR 4
  .IX Item "-cpp"
  .PD 0
! .IP \fB\-nocpp\fR 4
  .IX Item "-nocpp"
  .PD
  Enable preprocessing. The preprocessor is automatically invoked if
*************** file format, especially the limits on li
*** 657,663 ****
  preprocessed output as well, so it might be advisable to use the
  \&\fB\-ffree\-line\-length\-none\fR or \fB\-ffixed\-line\-length\-none\fR
  options.
! .IP "\fB\-dM\fR" 4
  .IX Item "-dM"
  Instead of the normal output, generate a list of \f(CW\*(Aq#define\*(Aq\fR
  directives for all the macros defined during the execution of the
--- 586,592 ----
  preprocessed output as well, so it might be advisable to use the
  \&\fB\-ffree\-line\-length\-none\fR or \fB\-ffixed\-line\-length\-none\fR
  options.
! .IP \fB\-dM\fR 4
  .IX Item "-dM"
  Instead of the normal output, generate a list of \f(CW\*(Aq#define\*(Aq\fR
  directives for all the macros defined during the execution of the
*************** Assuming you have no file \fIfoo.f90\fR,
*** 670,701 ****
  .Ve
  .Sp
  shows all the predefined macros.
! .IP "\fB\-dD\fR" 4
  .IX Item "-dD"
  Like \fB\-dM\fR except in two respects: it does not include the
  predefined macros, and it outputs both the \f(CW\*(C`#define\*(C'\fR directives
  and the result of preprocessing. Both kinds of output go to the
  standard output file.
! .IP "\fB\-dN\fR" 4
  .IX Item "-dN"
  Like \fB\-dD\fR, but emit only the macro names, not their expansions.
! .IP "\fB\-dU\fR" 4
  .IX Item "-dU"
  Like \fBdD\fR except that only macros that are expanded, or whose
  definedness is tested in preprocessor directives, are output; the
  output is delayed until the use or test of the macro; and \f(CW\*(Aq#undef\*(Aq\fR
  directives are also output for macros tested but undefined at the time.
! .IP "\fB\-dI\fR" 4
  .IX Item "-dI"
  Output \f(CW\*(Aq#include\*(Aq\fR directives in addition to the result
  of preprocessing.
! .IP "\fB\-fworking\-directory\fR" 4
  .IX Item "-fworking-directory"
  Enable generation of linemarkers in the preprocessor output that
  let the compiler know the current working directory at the time of
  preprocessing. When this option is enabled, the preprocessor emits,
  after the initial linemarker, a second linemarker with the current
! working directory followed by two slashes. \s-1GCC\s0 uses this directory,
  when it is present in the preprocessed input, as the directory emitted
  as the current working directory in some debugging information formats.
  This option is implicitly enabled if debugging information is enabled,
--- 599,630 ----
  .Ve
  .Sp
  shows all the predefined macros.
! .IP \fB\-dD\fR 4
  .IX Item "-dD"
  Like \fB\-dM\fR except in two respects: it does not include the
  predefined macros, and it outputs both the \f(CW\*(C`#define\*(C'\fR directives
  and the result of preprocessing. Both kinds of output go to the
  standard output file.
! .IP \fB\-dN\fR 4
  .IX Item "-dN"
  Like \fB\-dD\fR, but emit only the macro names, not their expansions.
! .IP \fB\-dU\fR 4
  .IX Item "-dU"
  Like \fBdD\fR except that only macros that are expanded, or whose
  definedness is tested in preprocessor directives, are output; the
  output is delayed until the use or test of the macro; and \f(CW\*(Aq#undef\*(Aq\fR
  directives are also output for macros tested but undefined at the time.
! .IP \fB\-dI\fR 4
  .IX Item "-dI"
  Output \f(CW\*(Aq#include\*(Aq\fR directives in addition to the result
  of preprocessing.
! .IP \fB\-fworking\-directory\fR 4
  .IX Item "-fworking-directory"
  Enable generation of linemarkers in the preprocessor output that
  let the compiler know the current working directory at the time of
  preprocessing. When this option is enabled, the preprocessor emits,
  after the initial linemarker, a second linemarker with the current
! working directory followed by two slashes. GCC uses this directory,
  when it is present in the preprocessed input, as the directory emitted
  as the current working directory in some debugging information formats.
  This option is implicitly enabled if debugging information is enabled,
*************** If dir begins with \f(CW\*(C`=\*(C'\fR,
*** 712,719 ****
  the sysroot prefix; see \fB\-\-sysroot\fR and \fB\-isysroot\fR.
  .IP "\fB\-imultilib\fR \fIdir\fR" 4
  .IX Item "-imultilib dir"
! Use \fIdir\fR as a subdirectory of the directory containing target-specific
! \&\*(C+ headers.
  .IP "\fB\-iprefix\fR \fIprefix\fR" 4
  .IX Item "-iprefix prefix"
  Specify \fIprefix\fR as the prefix for subsequent \fB\-iwithprefix\fR
--- 641,648 ----
  the sysroot prefix; see \fB\-\-sysroot\fR and \fB\-isysroot\fR.
  .IP "\fB\-imultilib\fR \fIdir\fR" 4
  .IX Item "-imultilib dir"
! Use \fIdir\fR as a subdirectory of the directory containing target\-specific
! C++ headers.
  .IP "\fB\-iprefix\fR \fIprefix\fR" 4
  .IX Item "-iprefix prefix"
  Specify \fIprefix\fR as the prefix for subsequent \fB\-iwithprefix\fR
*************** system directory, so that it gets the sa
*** 738,761 ****
  applied to the standard system directories. If \fIdir\fR begins with
  \&\f(CW\*(C`=\*(C'\fR, then the \f(CW\*(C`=\*(C'\fR is replaced by the sysroot prefix;
  see \fB\-\-sysroot\fR and \fB\-isysroot\fR.
! .IP "\fB\-nostdinc\fR" 4
  .IX Item "-nostdinc"
  Do not search the standard system directories for header files. Only
  the directories you have specified with \fB\-I\fR options (and the
  directory of the current file, if appropriate) are searched.
! .IP "\fB\-undef\fR" 4
  .IX Item "-undef"
! Do not predefine any system-specific or GCC-specific macros.
  The standard predefined macros remain defined.
! .IP "\fB\-A\fR\fIpredicate\fR\fB=\fR\fIanswer\fR" 4
  .IX Item "-Apredicate=answer"
  Make an assertion with the predicate \fIpredicate\fR and answer \fIanswer\fR.
  This form is preferred to the older form \-A predicate(answer), which is still
  supported, because it does not use shell special characters.
! .IP "\fB\-A\-\fR\fIpredicate\fR\fB=\fR\fIanswer\fR" 4
  .IX Item "-A-predicate=answer"
  Cancel an assertion with the predicate \fIpredicate\fR and answer \fIanswer\fR.
! .IP "\fB\-C\fR" 4
  .IX Item "-C"
  Do not discard comments. All comments are passed through to the output
  file, except for comments in processed directives, which are deleted
--- 667,690 ----
  applied to the standard system directories. If \fIdir\fR begins with
  \&\f(CW\*(C`=\*(C'\fR, then the \f(CW\*(C`=\*(C'\fR is replaced by the sysroot prefix;
  see \fB\-\-sysroot\fR and \fB\-isysroot\fR.
! .IP \fB\-nostdinc\fR 4
  .IX Item "-nostdinc"
  Do not search the standard system directories for header files. Only
  the directories you have specified with \fB\-I\fR options (and the
  directory of the current file, if appropriate) are searched.
! .IP \fB\-undef\fR 4
  .IX Item "-undef"
! Do not predefine any system\-specific or GCC\-specific macros.
  The standard predefined macros remain defined.
! .IP \fB\-A\fR\fIpredicate\fR\fB=\fR\fIanswer\fR 4
  .IX Item "-Apredicate=answer"
  Make an assertion with the predicate \fIpredicate\fR and answer \fIanswer\fR.
  This form is preferred to the older form \-A predicate(answer), which is still
  supported, because it does not use shell special characters.
! .IP \fB\-A\-\fR\fIpredicate\fR\fB=\fR\fIanswer\fR 4
  .IX Item "-A-predicate=answer"
  Cancel an assertion with the predicate \fIpredicate\fR and answer \fIanswer\fR.
! .IP \fB\-C\fR 4
  .IX Item "-C"
  Do not discard comments. All comments are passed through to the output
  file, except for comments in processed directives, which are deleted
*************** effect of turning that line into an ordi
*** 768,803 ****
  token on the line is no longer a \f(CW\*(Aq#\*(Aq\fR.
  .Sp
  Warning: this currently handles C\-Style comments only. The preprocessor
! does not yet recognize Fortran-style comments.
! .IP "\fB\-CC\fR" 4
  .IX Item "-CC"
  Do not discard comments, including during macro expansion. This is like
  \&\fB\-C\fR, except that comments contained within macros are also passed
  through to the output file where the macro is expanded.
  .Sp
! In addition to the side-effects of the \fB\-C\fR option, the \fB\-CC\fR
! option causes all \*(C+\-style comments inside a macro to be converted to C\-style
  comments. This is to prevent later use of that macro from inadvertently
  commenting out the remainder of the source line. The \fB\-CC\fR option
  is generally used to support lint comments.
  .Sp
! Warning: this currently handles C\- and \*(C+\-Style comments only. The
! preprocessor does not yet recognize Fortran-style comments.
! .IP "\fB\-D\fR\fIname\fR" 4
  .IX Item "-Dname"
  Predefine name as a macro, with definition \f(CW1\fR.
! .IP "\fB\-D\fR\fIname\fR\fB=\fR\fIdefinition\fR" 4
  .IX Item "-Dname=definition"
  The contents of \fIdefinition\fR are tokenized and processed as if they
  appeared during translation phase three in a \f(CW\*(Aq#define\*(Aq\fR directive.
  In particular, the definition is truncated by embedded newline
  characters.
  .Sp
! If you are invoking the preprocessor from a shell or shell-like program
! you may need to use the shell's quoting syntax to protect characters such
  as spaces that have a meaning in the shell syntax.
  .Sp
! If you wish to define a function-like macro on the command line, write
  its argument list with surrounding parentheses before the equals sign
  (if any). Parentheses are meaningful to most shells, so you need
  to quote the option. With sh and csh, \f(CW\*(C`\-D\*(Aqname(args...)=definition\*(Aq\*(C'\fR
--- 697,732 ----
  token on the line is no longer a \f(CW\*(Aq#\*(Aq\fR.
  .Sp
  Warning: this currently handles C\-Style comments only. The preprocessor
! does not yet recognize Fortran\-style comments.
! .IP \fB\-CC\fR 4
  .IX Item "-CC"
  Do not discard comments, including during macro expansion. This is like
  \&\fB\-C\fR, except that comments contained within macros are also passed
  through to the output file where the macro is expanded.
  .Sp
! In addition to the side\-effects of the \fB\-C\fR option, the \fB\-CC\fR
! option causes all C++\-style comments inside a macro to be converted to C\-style
  comments. This is to prevent later use of that macro from inadvertently
  commenting out the remainder of the source line. The \fB\-CC\fR option
  is generally used to support lint comments.
  .Sp
! Warning: this currently handles C\- and C++\-Style comments only. The
! preprocessor does not yet recognize Fortran\-style comments.
! .IP \fB\-D\fR\fIname\fR 4
  .IX Item "-Dname"
  Predefine name as a macro, with definition \f(CW1\fR.
! .IP \fB\-D\fR\fIname\fR\fB=\fR\fIdefinition\fR 4
  .IX Item "-Dname=definition"
  The contents of \fIdefinition\fR are tokenized and processed as if they
  appeared during translation phase three in a \f(CW\*(Aq#define\*(Aq\fR directive.
  In particular, the definition is truncated by embedded newline
  characters.
  .Sp
! If you are invoking the preprocessor from a shell or shell\-like program
! you may need to use the shell\*(Aqs quoting syntax to protect characters such
  as spaces that have a meaning in the shell syntax.
  .Sp
! If you wish to define a function\-like macro on the command line, write
  its argument list with surrounding parentheses before the equals sign
  (if any). Parentheses are meaningful to most shells, so you need
  to quote the option. With sh and csh, \f(CW\*(C`\-D\*(Aqname(args...)=definition\*(Aq\*(C'\fR
*************** works.
*** 806,829 ****
  \&\fB\-D\fR and \fB\-U\fR options are processed in the order they are
  given on the command line. All \-imacros file and \-include file options
  are processed after all \-D and \-U options.
! .IP "\fB\-H\fR" 4
  .IX Item "-H"
  Print the name of each header file used, in addition to other normal
  activities. Each name is indented to show how deep in the \f(CW\*(Aq#include\*(Aq\fR
  stack it is.
! .IP "\fB\-P\fR" 4
  .IX Item "-P"
  Inhibit generation of linemarkers in the output from the preprocessor.
  This might be useful when running the preprocessor on something that
  is not C code, and is sent to a program that might be confused
  by the linemarkers.
! .IP "\fB\-U\fR\fIname\fR" 4
  .IX Item "-Uname"
  Cancel any previous definition of \fIname\fR, either built in or provided
  with a \fB\-D\fR option.
  .SS "Options to request or suppress errors and warnings"
  .IX Subsection "Options to request or suppress errors and warnings"
! Errors are diagnostic messages that report that the \s-1GNU\s0 Fortran compiler
  cannot compile the relevant piece of source code.  The compiler
  continues to process the program in an attempt to report further errors
  to aid in debugging, but does not produce any compiled output.
--- 735,758 ----
  \&\fB\-D\fR and \fB\-U\fR options are processed in the order they are
  given on the command line. All \-imacros file and \-include file options
  are processed after all \-D and \-U options.
! .IP \fB\-H\fR 4
  .IX Item "-H"
  Print the name of each header file used, in addition to other normal
  activities. Each name is indented to show how deep in the \f(CW\*(Aq#include\*(Aq\fR
  stack it is.
! .IP \fB\-P\fR 4
  .IX Item "-P"
  Inhibit generation of linemarkers in the output from the preprocessor.
  This might be useful when running the preprocessor on something that
  is not C code, and is sent to a program that might be confused
  by the linemarkers.
! .IP \fB\-U\fR\fIname\fR 4
  .IX Item "-Uname"
  Cancel any previous definition of \fIname\fR, either built in or provided
  with a \fB\-D\fR option.
  .SS "Options to request or suppress errors and warnings"
  .IX Subsection "Options to request or suppress errors and warnings"
! Errors are diagnostic messages that report that the GNU Fortran compiler
  cannot compile the relevant piece of source code.  The compiler
  continues to process the program in an attempt to report further errors
  to aid in debugging, but does not produce any compiled output.
*************** for example, \fB\-Wno\-implicit\fR.  Thi
*** 841,888 ****
  two forms, whichever is not the default.
  .PP
  These options control the amount and kinds of errors and warnings produced
! by \s-1GNU\s0 Fortran:
! .IP "\fB\-fmax\-errors=\fR\fIn\fR" 4
  .IX Item "-fmax-errors=n"
  Limits the maximum number of error messages to \fIn\fR, at which point
! \&\s-1GNU\s0 Fortran bails out rather than attempting to continue processing the
  source code.  If \fIn\fR is 0, there is no limit on the number of error
  messages produced.
! .IP "\fB\-fsyntax\-only\fR" 4
  .IX Item "-fsyntax-only"
  Check the code for syntax errors, but do not actually compile it.  This
  generates module files for each module present in the code, but no
  other output file.
! .IP "\fB\-Wpedantic\fR" 4
  .IX Item "-Wpedantic"
  .PD 0
! .IP "\fB\-pedantic\fR" 4
  .IX Item "-pedantic"
  .PD
  Issue warnings for uses of extensions to Fortran.
  \&\fB\-pedantic\fR also applies to C\-language constructs where they
! occur in \s-1GNU\s0 Fortran source files, such as use of \fB\ee\fR in a
  character constant within a directive like \f(CW\*(C`#include\*(C'\fR.
  .Sp
  Valid Fortran programs should compile properly with or without
  this option.
! However, without this option, certain \s-1GNU\s0 extensions and traditional
  Fortran features are supported as well.
  With this option, many of them are rejected.
  .Sp
  Some users try to use \fB\-pedantic\fR to check programs for conformance.
  They soon find that it does not do quite what they want\-\-\-it finds some
  nonstandard practices, but not all.
! However, improvements to \s-1GNU\s0 Fortran in this area are welcome.
  .Sp
  This should be used in conjunction with \fB\-std=f95\fR,
  \&\fB\-std=f2003\fR, \fB\-std=f2008\fR, \fB\-std=f2018\fR
  or \fB\-std=f2023\fR.
! .IP "\fB\-pedantic\-errors\fR" 4
  .IX Item "-pedantic-errors"
  Like \fB\-pedantic\fR, except that errors are produced rather than
  warnings.
! .IP "\fB\-Wall\fR" 4
  .IX Item "-Wall"
  Enables commonly used warning options pertaining to usage that
  we recommend avoiding and that we believe are easy to avoid.
--- 770,817 ----
  two forms, whichever is not the default.
  .PP
  These options control the amount and kinds of errors and warnings produced
! by GNU Fortran:
! .IP \fB\-fmax\-errors=\fR\fIn\fR 4
  .IX Item "-fmax-errors=n"
  Limits the maximum number of error messages to \fIn\fR, at which point
! GNU Fortran bails out rather than attempting to continue processing the
  source code.  If \fIn\fR is 0, there is no limit on the number of error
  messages produced.
! .IP \fB\-fsyntax\-only\fR 4
  .IX Item "-fsyntax-only"
  Check the code for syntax errors, but do not actually compile it.  This
  generates module files for each module present in the code, but no
  other output file.
! .IP \fB\-Wpedantic\fR 4
  .IX Item "-Wpedantic"
  .PD 0
! .IP \fB\-pedantic\fR 4
  .IX Item "-pedantic"
  .PD
  Issue warnings for uses of extensions to Fortran.
  \&\fB\-pedantic\fR also applies to C\-language constructs where they
! occur in GNU Fortran source files, such as use of \fB\ee\fR in a
  character constant within a directive like \f(CW\*(C`#include\*(C'\fR.
  .Sp
  Valid Fortran programs should compile properly with or without
  this option.
! However, without this option, certain GNU extensions and traditional
  Fortran features are supported as well.
  With this option, many of them are rejected.
  .Sp
  Some users try to use \fB\-pedantic\fR to check programs for conformance.
  They soon find that it does not do quite what they want\-\-\-it finds some
  nonstandard practices, but not all.
! However, improvements to GNU Fortran in this area are welcome.
  .Sp
  This should be used in conjunction with \fB\-std=f95\fR,
  \&\fB\-std=f2003\fR, \fB\-std=f2008\fR, \fB\-std=f2018\fR
  or \fB\-std=f2023\fR.
! .IP \fB\-pedantic\-errors\fR 4
  .IX Item "-pedantic-errors"
  Like \fB\-pedantic\fR, except that errors are produced rather than
  warnings.
! .IP \fB\-Wall\fR 4
  .IX Item "-Wall"
  Enables commonly used warning options pertaining to usage that
  we recommend avoiding and that we believe are easy to avoid.
*************** This currently includes \fB\-Waliasing\f
*** 892,902 ****
  \&\fB\-Wline\-truncation\fR, \fB\-Wtarget\-lifetime\fR,
  \&\fB\-Winteger\-division\fR, \fB\-Wreal\-q\-constant\fR, \fB\-Wunused\fR
  and \fB\-Wundefined\-do\-loop\fR.
! .IP "\fB\-Waliasing\fR" 4
  .IX Item "-Waliasing"
  Warn about possible aliasing of dummy arguments. Specifically, it warns
  if the same actual argument is associated with a dummy argument with
! \&\f(CW\*(C`INTENT(IN)\*(C'\fR and a dummy argument with \f(CW\*(C`INTENT(OUT)\*(C'\fR in a call
  with an explicit interface.
  .Sp
  The following example triggers the warning.
--- 821,831 ----
  \&\fB\-Wline\-truncation\fR, \fB\-Wtarget\-lifetime\fR,
  \&\fB\-Winteger\-division\fR, \fB\-Wreal\-q\-constant\fR, \fB\-Wunused\fR
  and \fB\-Wundefined\-do\-loop\fR.
! .IP \fB\-Waliasing\fR 4
  .IX Item "-Waliasing"
  Warn about possible aliasing of dummy arguments. Specifically, it warns
  if the same actual argument is associated with a dummy argument with
! \&\f(CWINTENT(IN)\fR and a dummy argument with \f(CWINTENT(OUT)\fR in a call
  with an explicit interface.
  .Sp
  The following example triggers the warning.
*************** The following example triggers the warni
*** 912,1030 ****
  \&        
  \&          call bar(a,a)
  .Ve
! .IP "\fB\-Wampersand\fR" 4
  .IX Item "-Wampersand"
  Warn about missing ampersand in continued character constants. The
  warning is given with \fB\-Wampersand\fR, \fB\-pedantic\fR,
  \&\fB\-std=f95\fR, \fB\-std=f2003\fR, \fB\-std=f2008\fR, \fB\-std=f2018\fR
  and \fB\-std=f2023\fR. Note: With no ampersand given in a continued
! character constant, \s-1GNU\s0 Fortran assumes continuation at the first
! non-comment, non-whitespace character after the ampersand that
  initiated the continuation.
! .IP "\fB\-Warray\-temporaries\fR" 4
  .IX Item "-Warray-temporaries"
  Warn about array temporaries generated by the compiler.  The information
  generated by this warning is sometimes useful in optimization, in order to
  avoid such temporaries.
! .IP "\fB\-Wc\-binding\-type\fR" 4
  .IX Item "-Wc-binding-type"
  Warn if the a variable might not be C interoperable.  In particular, warn if
  the variable has been declared using an intrinsic type with default kind
  instead of using a kind parameter defined for C interoperability in the
  intrinsic \f(CW\*(C`ISO_C_Binding\*(C'\fR module.  This option is implied by
  \&\fB\-Wall\fR.
! .IP "\fB\-Wcharacter\-truncation\fR" 4
  .IX Item "-Wcharacter-truncation"
  Warn when a character assignment truncates the assigned string.
! .IP "\fB\-Wline\-truncation\fR" 4
  .IX Item "-Wline-truncation"
  Warn when a source code line is truncated.  This option is
! implied by \fB\-Wall\fR.  For free-form source code, the default is
  \&\fB\-Werror=line\-truncation\fR such that truncations are reported as
  error.
! .IP "\fB\-Wconversion\fR" 4
  .IX Item "-Wconversion"
  Warn about implicit conversions that are likely to change the value of
  the expression after conversion. Implied by \fB\-Wall\fR.
! .IP "\fB\-Wconversion\-extra\fR" 4
  .IX Item "-Wconversion-extra"
  Warn about implicit conversions between different types and kinds. This
  option does \fInot\fR imply \fB\-Wconversion\fR.
! .IP "\fB\-Wexternal\-argument\-mismatch\fR" 4
  .IX Item "-Wexternal-argument-mismatch"
  Warn about argument mismatches for dummy external procedures.  This is
  implied by \fB\-fc\-prototypes\-external\fR because generation of a
  valid C23 interface is not possible in such a case.  Also implied
  by \fB\-Wall\fR.
! .IP "\fB\-Wextra\fR" 4
  .IX Item "-Wextra"
  Enables some warning options for usages of language features that
  may be problematic. This currently includes \fB\-Wcompare\-reals\fR,
  \&\fB\-Wunused\-parameter\fR and \fB\-Wdo\-subscript\fR.
! .IP "\fB\-Wfrontend\-loop\-interchange\fR" 4
  .IX Item "-Wfrontend-loop-interchange"
  Warn when using \fB\-ffrontend\-loop\-interchange\fR for performing loop
  interchanges.
! .IP "\fB\-Wimplicit\-interface\fR" 4
  .IX Item "-Wimplicit-interface"
  Warn if a procedure is called without an explicit interface.
  Note this only checks that an explicit interface is present.  It does not
  check that the declared interfaces are consistent across program units.
! .IP "\fB\-Wimplicit\-procedure\fR" 4
  .IX Item "-Wimplicit-procedure"
  Warn if a procedure is called that has neither an explicit interface
  nor has been declared as \f(CW\*(C`EXTERNAL\*(C'\fR.
! .IP "\fB\-Winteger\-division\fR" 4
  .IX Item "-Winteger-division"
  Warn if a constant integer division truncates its result.
  As an example, 3/5 evaluates to 0.
! .IP "\fB\-Wintrinsics\-std\fR" 4
  .IX Item "-Wintrinsics-std"
  Warn if \fBgfortran\fR finds a procedure named like an intrinsic not
  available in the currently selected standard (with \fB\-std\fR) and treats
  it as \f(CW\*(C`EXTERNAL\*(C'\fR procedure because of this.  \fB\-fall\-intrinsics\fR can
  be used to never trigger this behavior and always link to the intrinsic
  regardless of the selected standard.
! .IP "\fB\-Wno\-overwrite\-recursive\fR" 4
  .IX Item "-Wno-overwrite-recursive"
  Do not warn when \fB\-fno\-automatic\fR is used with \fB\-frecursive\fR. Recursion
  is broken if the relevant local variables do not have the attribute
  \&\f(CW\*(C`AUTOMATIC\*(C'\fR explicitly declared. This option can be used to suppress the warning
  when it is known that recursion is not broken. Useful for build environments that use
  \&\fB\-Werror\fR.
! .IP "\fB\-Wreal\-q\-constant\fR" 4
  .IX Item "-Wreal-q-constant"
! Produce a warning if a real-literal-constant contains a \f(CW\*(C`q\*(C'\fR
! exponent-letter.
! .IP "\fB\-Wsurprising\fR" 4
  .IX Item "-Wsurprising"
! Produce a warning when \*(L"suspicious\*(R" code constructs are encountered.
  While technically legal these usually indicate that an error has been made.
  .Sp
  This currently produces a warning under the following circumstances:
  .RS 4
! .IP "*" 4
  An \f(CW\*(C`INTEGER\*(C'\fR\-typed \f(CW\*(C`SELECT CASE\*(C'\fR construct has a \f(CW\*(C`CASE\*(C'\fR
  that can never be matched as its
  lower value is greater than its upper value.
! .IP "*" 4
  A \f(CW\*(C`LOGICAL\*(C'\fR\-typed \f(CW\*(C`SELECT CASE\*(C'\fR construct has three \f(CW\*(C`CASE\*(C'\fR
  statements.
! .IP "*" 4
  A \f(CW\*(C`TRANSFER\*(C'\fR specifies a source that is shorter than the destination.
! .IP "*" 4
  The type of a function result is declared more than once with the same type.  If
! \&\fB\-pedantic\fR or standard-conforming mode is enabled, this is an error.
! .IP "*" 4
  A \f(CW\*(C`CHARACTER\*(C'\fR variable is declared with negative length.
! .IP "*" 4
! With \fB\-fopenmp\fR, for fixed-form source code, when an \f(CW\*(C`omx\*(C'\fR
! vendor-extension sentinel is encountered. (The equivalent \f(CW\*(C`ompx\*(C'\fR,
! used in free-form source code, is diagnosed by default.)
  .RE
  .RS 4
  .RE
! .IP "\fB\-Wtabs\fR" 4
  .IX Item "-Wtabs"
  By default, tabs are accepted as whitespace, but tabs are not members
  of the Fortran Character Set.  For continuation lines, a tab followed
--- 841,959 ----
  \&        
  \&          call bar(a,a)
  .Ve
! .IP \fB\-Wampersand\fR 4
  .IX Item "-Wampersand"
  Warn about missing ampersand in continued character constants. The
  warning is given with \fB\-Wampersand\fR, \fB\-pedantic\fR,
  \&\fB\-std=f95\fR, \fB\-std=f2003\fR, \fB\-std=f2008\fR, \fB\-std=f2018\fR
  and \fB\-std=f2023\fR. Note: With no ampersand given in a continued
! character constant, GNU Fortran assumes continuation at the first
! non\-comment, non\-whitespace character after the ampersand that
  initiated the continuation.
! .IP \fB\-Warray\-temporaries\fR 4
  .IX Item "-Warray-temporaries"
  Warn about array temporaries generated by the compiler.  The information
  generated by this warning is sometimes useful in optimization, in order to
  avoid such temporaries.
! .IP \fB\-Wc\-binding\-type\fR 4
  .IX Item "-Wc-binding-type"
  Warn if the a variable might not be C interoperable.  In particular, warn if
  the variable has been declared using an intrinsic type with default kind
  instead of using a kind parameter defined for C interoperability in the
  intrinsic \f(CW\*(C`ISO_C_Binding\*(C'\fR module.  This option is implied by
  \&\fB\-Wall\fR.
! .IP \fB\-Wcharacter\-truncation\fR 4
  .IX Item "-Wcharacter-truncation"
  Warn when a character assignment truncates the assigned string.
! .IP \fB\-Wline\-truncation\fR 4
  .IX Item "-Wline-truncation"
  Warn when a source code line is truncated.  This option is
! implied by \fB\-Wall\fR.  For free\-form source code, the default is
  \&\fB\-Werror=line\-truncation\fR such that truncations are reported as
  error.
! .IP \fB\-Wconversion\fR 4
  .IX Item "-Wconversion"
  Warn about implicit conversions that are likely to change the value of
  the expression after conversion. Implied by \fB\-Wall\fR.
! .IP \fB\-Wconversion\-extra\fR 4
  .IX Item "-Wconversion-extra"
  Warn about implicit conversions between different types and kinds. This
  option does \fInot\fR imply \fB\-Wconversion\fR.
! .IP \fB\-Wexternal\-argument\-mismatch\fR 4
  .IX Item "-Wexternal-argument-mismatch"
  Warn about argument mismatches for dummy external procedures.  This is
  implied by \fB\-fc\-prototypes\-external\fR because generation of a
  valid C23 interface is not possible in such a case.  Also implied
  by \fB\-Wall\fR.
! .IP \fB\-Wextra\fR 4
  .IX Item "-Wextra"
  Enables some warning options for usages of language features that
  may be problematic. This currently includes \fB\-Wcompare\-reals\fR,
  \&\fB\-Wunused\-parameter\fR and \fB\-Wdo\-subscript\fR.
! .IP \fB\-Wfrontend\-loop\-interchange\fR 4
  .IX Item "-Wfrontend-loop-interchange"
  Warn when using \fB\-ffrontend\-loop\-interchange\fR for performing loop
  interchanges.
! .IP \fB\-Wimplicit\-interface\fR 4
  .IX Item "-Wimplicit-interface"
  Warn if a procedure is called without an explicit interface.
  Note this only checks that an explicit interface is present.  It does not
  check that the declared interfaces are consistent across program units.
! .IP \fB\-Wimplicit\-procedure\fR 4
  .IX Item "-Wimplicit-procedure"
  Warn if a procedure is called that has neither an explicit interface
  nor has been declared as \f(CW\*(C`EXTERNAL\*(C'\fR.
! .IP \fB\-Winteger\-division\fR 4
  .IX Item "-Winteger-division"
  Warn if a constant integer division truncates its result.
  As an example, 3/5 evaluates to 0.
! .IP \fB\-Wintrinsics\-std\fR 4
  .IX Item "-Wintrinsics-std"
  Warn if \fBgfortran\fR finds a procedure named like an intrinsic not
  available in the currently selected standard (with \fB\-std\fR) and treats
  it as \f(CW\*(C`EXTERNAL\*(C'\fR procedure because of this.  \fB\-fall\-intrinsics\fR can
  be used to never trigger this behavior and always link to the intrinsic
  regardless of the selected standard.
! .IP \fB\-Wno\-overwrite\-recursive\fR 4
  .IX Item "-Wno-overwrite-recursive"
  Do not warn when \fB\-fno\-automatic\fR is used with \fB\-frecursive\fR. Recursion
  is broken if the relevant local variables do not have the attribute
  \&\f(CW\*(C`AUTOMATIC\*(C'\fR explicitly declared. This option can be used to suppress the warning
  when it is known that recursion is not broken. Useful for build environments that use
  \&\fB\-Werror\fR.
! .IP \fB\-Wreal\-q\-constant\fR 4
  .IX Item "-Wreal-q-constant"
! Produce a warning if a real\-literal\-constant contains a \f(CW\*(C`q\*(C'\fR
! exponent\-letter.
! .IP \fB\-Wsurprising\fR 4
  .IX Item "-Wsurprising"
! Produce a warning when "suspicious" code constructs are encountered.
  While technically legal these usually indicate that an error has been made.
  .Sp
  This currently produces a warning under the following circumstances:
  .RS 4
! .IP * 4
  An \f(CW\*(C`INTEGER\*(C'\fR\-typed \f(CW\*(C`SELECT CASE\*(C'\fR construct has a \f(CW\*(C`CASE\*(C'\fR
  that can never be matched as its
  lower value is greater than its upper value.
! .IP * 4
  A \f(CW\*(C`LOGICAL\*(C'\fR\-typed \f(CW\*(C`SELECT CASE\*(C'\fR construct has three \f(CW\*(C`CASE\*(C'\fR
  statements.
! .IP * 4
  A \f(CW\*(C`TRANSFER\*(C'\fR specifies a source that is shorter than the destination.
! .IP * 4
  The type of a function result is declared more than once with the same type.  If
! \&\fB\-pedantic\fR or standard\-conforming mode is enabled, this is an error.
! .IP * 4
  A \f(CW\*(C`CHARACTER\*(C'\fR variable is declared with negative length.
! .IP * 4
! With \fB\-fopenmp\fR, for fixed\-form source code, when an \f(CW\*(C`omx\*(C'\fR
! vendor\-extension sentinel is encountered. (The equivalent \f(CW\*(C`ompx\*(C'\fR,
! used in free\-form source code, is diagnosed by default.)
  .RE
  .RS 4
  .RE
! .IP \fB\-Wtabs\fR 4
  .IX Item "-Wtabs"
  By default, tabs are accepted as whitespace, but tabs are not members
  of the Fortran Character Set.  For continuation lines, a tab followed
*************** warning to be issued if a tab is encount
*** 1033,1111 ****
  active for \fB\-pedantic\fR, \fB\-std=f95\fR, \fB\-std=f2003\fR,
  \&\fB\-std=f2008\fR, \fB\-std=f2018\fR, \fB\-std=f2023\fR and
  \&\fB\-Wall\fR.
! .IP "\fB\-Wundefined\-do\-loop\fR" 4
  .IX Item "-Wundefined-do-loop"
  Warn if a \f(CW\*(C`DO\*(C'\fR loop with step either 1 or \-1 yields an underflow
  or an overflow
  during iteration of an induction variable of the loop.
  This option is implied by \fB\-Wall\fR.
! .IP "\fB\-Wunderflow\fR" 4
  .IX Item "-Wunderflow"
  Produce a warning when numerical constant expressions
  that yield an underflow are encountered during compilation.
  Enabled by default.
! .IP "\fB\-Wintrinsic\-shadow\fR" 4
  .IX Item "-Wintrinsic-shadow"
! Warn if a user-defined procedure or module procedure has the same name as an
  intrinsic; in this case, an explicit interface or \f(CW\*(C`EXTERNAL\*(C'\fR or
  \&\f(CW\*(C`INTRINSIC\*(C'\fR declaration might be needed to get calls later resolved to
  the desired intrinsic/procedure.  This option is implied by \fB\-Wall\fR.
! .IP "\fB\-Wuse\-without\-only\fR" 4
  .IX Item "-Wuse-without-only"
  Warn if a \f(CW\*(C`USE\*(C'\fR statement has no \f(CW\*(C`ONLY\*(C'\fR qualifier and
  thus implicitly imports all public entities of the used module.
! .IP "\fB\-Wunused\-dummy\-argument\fR" 4
  .IX Item "-Wunused-dummy-argument"
  Warn about unused dummy arguments. This option is implied by \fB\-Wall\fR.
! .IP "\fB\-Wunused\-parameter\fR" 4
  .IX Item "-Wunused-parameter"
! Contrary to \fBgcc\fR's meaning of \fB\-Wunused\-parameter\fR,
! \&\fBgfortran\fR's implementation of this option does not warn
  about unused dummy arguments (see \fB\-Wunused\-dummy\-argument\fR),
  but about unused \f(CW\*(C`PARAMETER\*(C'\fR values. \fB\-Wunused\-parameter\fR
  is implied by \fB\-Wextra\fR if also \fB\-Wunused\fR or
  \&\fB\-Wall\fR is used.
! .IP "\fB\-Walign\-commons\fR" 4
  .IX Item "-Walign-commons"
  By default, \fBgfortran\fR warns about any occasion of variables being
  padded for proper alignment inside a \f(CW\*(C`COMMON\*(C'\fR block. This warning can be turned
  off via \fB\-Wno\-align\-commons\fR. See also \fB\-falign\-commons\fR.
! .IP "\fB\-Wfunction\-elimination\fR" 4
  .IX Item "-Wfunction-elimination"
  Warn if any calls to impure functions are eliminated by the optimizations
  enabled by the \fB\-ffrontend\-optimize\fR option.
  This option is implied by \fB\-Wextra\fR.
! .IP "\fB\-Wrealloc\-lhs\fR" 4
  .IX Item "-Wrealloc-lhs"
  Warn when the compiler might insert code to for allocation or reallocation of
  an allocatable array variable of intrinsic type in intrinsic assignments.  In
  hot loops, the Fortran 2003 reallocation feature may reduce the performance.
  If the array is already allocated with the correct shape, consider using a
! whole-array array-spec (e.g. \f(CW\*(C`(:,:,:)\*(C'\fR) for the variable on the left-hand
  side to prevent the reallocation check. Note that in some cases the warning
  is shown, even if the compiler optimizes reallocation checks away.  For
! instance, when the right-hand side contains the same variable multiplied by
  a scalar.  See also \fB\-frealloc\-lhs\fR.
! .IP "\fB\-Wrealloc\-lhs\-all\fR" 4
  .IX Item "-Wrealloc-lhs-all"
  Warn when the compiler inserts code to for allocation or reallocation of an
  allocatable variable; this includes scalars and derived types.
! .IP "\fB\-Wcompare\-reals\fR" 4
  .IX Item "-Wcompare-reals"
  Warn when comparing real or complex types for equality or inequality.
  This option is implied by \fB\-Wextra\fR.
! .IP "\fB\-Wtarget\-lifetime\fR" 4
  .IX Item "-Wtarget-lifetime"
  Warn if the pointer in a pointer assignment might be longer than the its
  target. This option is implied by \fB\-Wall\fR.
! .IP "\fB\-Wzerotrip\fR" 4
  .IX Item "-Wzerotrip"
  Warn if a \f(CW\*(C`DO\*(C'\fR loop is known to execute zero times at compile
  time.  This option is implied by \fB\-Wall\fR.
! .IP "\fB\-Wdo\-subscript\fR" 4
  .IX Item "-Wdo-subscript"
  Warn if an array subscript inside a \f(CW\*(C`DO\*(C'\fR loop could lead to an
! out-of-bounds access even if the compiler cannot prove that the
  statement is actually executed, in cases like
  .Sp
  .Vb 6
--- 962,1040 ----
  active for \fB\-pedantic\fR, \fB\-std=f95\fR, \fB\-std=f2003\fR,
  \&\fB\-std=f2008\fR, \fB\-std=f2018\fR, \fB\-std=f2023\fR and
  \&\fB\-Wall\fR.
! .IP \fB\-Wundefined\-do\-loop\fR 4
  .IX Item "-Wundefined-do-loop"
  Warn if a \f(CW\*(C`DO\*(C'\fR loop with step either 1 or \-1 yields an underflow
  or an overflow
  during iteration of an induction variable of the loop.
  This option is implied by \fB\-Wall\fR.
! .IP \fB\-Wunderflow\fR 4
  .IX Item "-Wunderflow"
  Produce a warning when numerical constant expressions
  that yield an underflow are encountered during compilation.
  Enabled by default.
! .IP \fB\-Wintrinsic\-shadow\fR 4
  .IX Item "-Wintrinsic-shadow"
! Warn if a user\-defined procedure or module procedure has the same name as an
  intrinsic; in this case, an explicit interface or \f(CW\*(C`EXTERNAL\*(C'\fR or
  \&\f(CW\*(C`INTRINSIC\*(C'\fR declaration might be needed to get calls later resolved to
  the desired intrinsic/procedure.  This option is implied by \fB\-Wall\fR.
! .IP \fB\-Wuse\-without\-only\fR 4
  .IX Item "-Wuse-without-only"
  Warn if a \f(CW\*(C`USE\*(C'\fR statement has no \f(CW\*(C`ONLY\*(C'\fR qualifier and
  thus implicitly imports all public entities of the used module.
! .IP \fB\-Wunused\-dummy\-argument\fR 4
  .IX Item "-Wunused-dummy-argument"
  Warn about unused dummy arguments. This option is implied by \fB\-Wall\fR.
! .IP \fB\-Wunused\-parameter\fR 4
  .IX Item "-Wunused-parameter"
! Contrary to \fBgcc\fR\*(Aqs meaning of \fB\-Wunused\-parameter\fR,
! \&\fBgfortran\fR\*(Aqs implementation of this option does not warn
  about unused dummy arguments (see \fB\-Wunused\-dummy\-argument\fR),
  but about unused \f(CW\*(C`PARAMETER\*(C'\fR values. \fB\-Wunused\-parameter\fR
  is implied by \fB\-Wextra\fR if also \fB\-Wunused\fR or
  \&\fB\-Wall\fR is used.
! .IP \fB\-Walign\-commons\fR 4
  .IX Item "-Walign-commons"
  By default, \fBgfortran\fR warns about any occasion of variables being
  padded for proper alignment inside a \f(CW\*(C`COMMON\*(C'\fR block. This warning can be turned
  off via \fB\-Wno\-align\-commons\fR. See also \fB\-falign\-commons\fR.
! .IP \fB\-Wfunction\-elimination\fR 4
  .IX Item "-Wfunction-elimination"
  Warn if any calls to impure functions are eliminated by the optimizations
  enabled by the \fB\-ffrontend\-optimize\fR option.
  This option is implied by \fB\-Wextra\fR.
! .IP \fB\-Wrealloc\-lhs\fR 4
  .IX Item "-Wrealloc-lhs"
  Warn when the compiler might insert code to for allocation or reallocation of
  an allocatable array variable of intrinsic type in intrinsic assignments.  In
  hot loops, the Fortran 2003 reallocation feature may reduce the performance.
  If the array is already allocated with the correct shape, consider using a
! whole\-array array\-spec (e.g. \f(CW\*(C`(:,:,:)\*(C'\fR) for the variable on the left\-hand
  side to prevent the reallocation check. Note that in some cases the warning
  is shown, even if the compiler optimizes reallocation checks away.  For
! instance, when the right\-hand side contains the same variable multiplied by
  a scalar.  See also \fB\-frealloc\-lhs\fR.
! .IP \fB\-Wrealloc\-lhs\-all\fR 4
  .IX Item "-Wrealloc-lhs-all"
  Warn when the compiler inserts code to for allocation or reallocation of an
  allocatable variable; this includes scalars and derived types.
! .IP \fB\-Wcompare\-reals\fR 4
  .IX Item "-Wcompare-reals"
  Warn when comparing real or complex types for equality or inequality.
  This option is implied by \fB\-Wextra\fR.
! .IP \fB\-Wtarget\-lifetime\fR 4
  .IX Item "-Wtarget-lifetime"
  Warn if the pointer in a pointer assignment might be longer than the its
  target. This option is implied by \fB\-Wall\fR.
! .IP \fB\-Wzerotrip\fR 4
  .IX Item "-Wzerotrip"
  Warn if a \f(CW\*(C`DO\*(C'\fR loop is known to execute zero times at compile
  time.  This option is implied by \fB\-Wall\fR.
! .IP \fB\-Wdo\-subscript\fR 4
  .IX Item "-Wdo-subscript"
  Warn if an array subscript inside a \f(CW\*(C`DO\*(C'\fR loop could lead to an
! out\-of\-bounds access even if the compiler cannot prove that the
  statement is actually executed, in cases like
  .Sp
  .Vb 6
*************** statement is actually executed, in cases
*** 1118,1156 ****
  .Ve
  .Sp
  This option is implied by \fB\-Wextra\fR.
! .IP "\fB\-Werror\fR" 4
  .IX Item "-Werror"
  Turns all warnings into errors.
  .PP
  Some of these have no effect when compiling programs written in Fortran.
  .SS "Options for debugging your program"
  .IX Subsection "Options for debugging your program"
! \&\s-1GNU\s0 Fortran has various special options that are used for debugging
  your program.
! .IP "\fB\-fdebug\-aux\-vars\fR" 4
  .IX Item "-fdebug-aux-vars"
  Renames internal variables created by the gfortran front end and makes
  them accessible to a debugger.  The name of the internal variables then
  start with uppercase letters followed by an underscore.  This option is
! useful for debugging the compiler's code generation together with
  \&\f(CW\*(C`\-fdump\-tree\-original\*(C'\fR and enabling debugging of the executable
  program by using \f(CW\*(C`\-g\*(C'\fR or \f(CW\*(C`\-ggdb3\*(C'\fR.
! .IP "\fB\-ffpe\-trap=\fR\fIlist\fR" 4
  .IX Item "-ffpe-trap=list"
  Specify a list of floating point exception traps to enable.  On most
  systems, if a floating point exception occurs and the trap for that
  exception is enabled, a \f(CW\*(C`SIGFPE\*(C'\fR signal is sent and the program
  being aborted, producing a core file useful for debugging.  \fIlist\fR
! is a (possibly empty) comma-separated list of either \fBnone\fR (to
  clear the set of exceptions to be trapped), or of the following
  exceptions: \fBinvalid\fR (invalid floating point operation, such as
! \&\f(CW\*(C`SQRT(\-1.0)\*(C'\fR), \fBzero\fR (division by zero), \fBoverflow\fR
  (overflow in a floating point operation), \fBunderflow\fR (underflow
  in a floating point operation), \fBinexact\fR (loss of precision
  during operation), and \fBdenormal\fR (operation performed on a
  denormal value).  The first five exceptions correspond to the five
! \&\s-1IEEE 754\s0 exceptions, whereas the last one (\fBdenormal\fR) is not
! part of the \s-1IEEE 754\s0 standard but is available on some common
  architectures such as x86.
  .Sp
  The first three exceptions (\fBinvalid\fR, \fBzero\fR, and
--- 1047,1085 ----
  .Ve
  .Sp
  This option is implied by \fB\-Wextra\fR.
! .IP \fB\-Werror\fR 4
  .IX Item "-Werror"
  Turns all warnings into errors.
  .PP
  Some of these have no effect when compiling programs written in Fortran.
  .SS "Options for debugging your program"
  .IX Subsection "Options for debugging your program"
! GNU Fortran has various special options that are used for debugging
  your program.
! .IP \fB\-fdebug\-aux\-vars\fR 4
  .IX Item "-fdebug-aux-vars"
  Renames internal variables created by the gfortran front end and makes
  them accessible to a debugger.  The name of the internal variables then
  start with uppercase letters followed by an underscore.  This option is
! useful for debugging the compiler\*(Aqs code generation together with
  \&\f(CW\*(C`\-fdump\-tree\-original\*(C'\fR and enabling debugging of the executable
  program by using \f(CW\*(C`\-g\*(C'\fR or \f(CW\*(C`\-ggdb3\*(C'\fR.
! .IP \fB\-ffpe\-trap=\fR\fIlist\fR 4
  .IX Item "-ffpe-trap=list"
  Specify a list of floating point exception traps to enable.  On most
  systems, if a floating point exception occurs and the trap for that
  exception is enabled, a \f(CW\*(C`SIGFPE\*(C'\fR signal is sent and the program
  being aborted, producing a core file useful for debugging.  \fIlist\fR
! is a (possibly empty) comma\-separated list of either \fBnone\fR (to
  clear the set of exceptions to be trapped), or of the following
  exceptions: \fBinvalid\fR (invalid floating point operation, such as
! \&\f(CWSQRT(\-1.0)\fR), \fBzero\fR (division by zero), \fBoverflow\fR
  (overflow in a floating point operation), \fBunderflow\fR (underflow
  in a floating point operation), \fBinexact\fR (loss of precision
  during operation), and \fBdenormal\fR (operation performed on a
  denormal value).  The first five exceptions correspond to the five
! IEEE 754 exceptions, whereas the last one (\fBdenormal\fR) is not
! part of the IEEE 754 standard but is available on some common
  architectures such as x86.
  .Sp
  The first three exceptions (\fBinvalid\fR, \fBzero\fR, and
*************** has provisions for dealing with these ex
*** 1159,1165 ****
  these three exceptions is probably a good idea.
  .Sp
  If the option is used more than once in the command line, the lists are
! joined: '\f(CW\*(C`ffpe\-trap=\*(C'\fR\fIlist1\fR \f(CW\*(C`ffpe\-trap=\*(C'\fR\fIlist2\fR'
  is equivalent to \f(CW\*(C`ffpe\-trap=\*(C'\fR\fIlist1\fR,\fIlist2\fR.
  .Sp
  Note that once enabled an exception cannot be disabled (no negative form),
--- 1088,1094 ----
  these three exceptions is probably a good idea.
  .Sp
  If the option is used more than once in the command line, the lists are
! joined: \*(Aq\f(CW\*(C`ffpe\-trap=\*(C'\fR\fIlist1\fR \f(CW\*(C`ffpe\-trap=\*(C'\fR\fIlist2\fR\*(Aq
  is equivalent to \f(CW\*(C`ffpe\-trap=\*(C'\fR\fIlist1\fR,\fIlist2\fR.
  .Sp
  Note that once enabled an exception cannot be disabled (no negative form),
*************** due to rounding, and hence the \f(CW\*(C
*** 1170,1180 ****
  be uninteresting in practice.
  .Sp
  By default no exception traps are enabled.
! .IP "\fB\-ffpe\-summary=\fR\fIlist\fR" 4
  .IX Item "-ffpe-summary=list"
! Specify a list of floating-point exceptions, whose flag status is printed
  to \f(CW\*(C`ERROR_UNIT\*(C'\fR when invoking \f(CW\*(C`STOP\*(C'\fR and \f(CW\*(C`ERROR STOP\*(C'\fR.
! \&\fIlist\fR can be either \fBnone\fR, \fBall\fR or a comma-separated list
  of the following exceptions: \fBinvalid\fR, \fBzero\fR, \fBoverflow\fR,
  \&\fBunderflow\fR, \fBinexact\fR and \fBdenormal\fR. (See
  \&\fB\-ffpe\-trap\fR for a description of the exceptions.)
--- 1099,1109 ----
  be uninteresting in practice.
  .Sp
  By default no exception traps are enabled.
! .IP \fB\-ffpe\-summary=\fR\fIlist\fR 4
  .IX Item "-ffpe-summary=list"
! Specify a list of floating\-point exceptions, whose flag status is printed
  to \f(CW\*(C`ERROR_UNIT\*(C'\fR when invoking \f(CW\*(C`STOP\*(C'\fR and \f(CW\*(C`ERROR STOP\*(C'\fR.
! \&\fIlist\fR can be either \fBnone\fR, \fBall\fR or a comma\-separated list
  of the following exceptions: \fBinvalid\fR, \fBzero\fR, \fBoverflow\fR,
  \&\fBunderflow\fR, \fBinexact\fR and \fBdenormal\fR. (See
  \&\fB\-ffpe\-trap\fR for a description of the exceptions.)
*************** If the option is used more than once in
*** 1183,1206 ****
  last one is used.
  .Sp
  By default, a summary for all exceptions but \fBinexact\fR is shown.
! .IP "\fB\-fno\-backtrace\fR" 4
  .IX Item "-fno-backtrace"
  When a serious runtime error is encountered or a deadly signal is
  emitted (segmentation fault, illegal instruction, bus error,
! floating-point exception, and the other \s-1POSIX\s0 signals that have the
  action \fBcore\fR), the Fortran runtime library tries to output a
  backtrace of the error. \f(CW\*(C`\-fno\-backtrace\*(C'\fR disables the backtrace
  generation. This option only has influence for compilation of the
  Fortran main program.
  .SS "Options for directory search"
  .IX Subsection "Options for directory search"
! These options affect how \s-1GNU\s0 Fortran searches
  for files specified by the \f(CW\*(C`INCLUDE\*(C'\fR directive and where it searches
  for previously compiled modules.
  .PP
  It also affects the search paths used by \fBcpp\fR when used to preprocess
  Fortran source.
! .IP "\fB\-I\fR\fIdir\fR" 4
  .IX Item "-Idir"
  These affect interpretation of the \f(CW\*(C`INCLUDE\*(C'\fR directive
  (as well as of the \f(CW\*(C`#include\*(C'\fR directive of the \fBcpp\fR
--- 1112,1135 ----
  last one is used.
  .Sp
  By default, a summary for all exceptions but \fBinexact\fR is shown.
! .IP \fB\-fno\-backtrace\fR 4
  .IX Item "-fno-backtrace"
  When a serious runtime error is encountered or a deadly signal is
  emitted (segmentation fault, illegal instruction, bus error,
! floating\-point exception, and the other POSIX signals that have the
  action \fBcore\fR), the Fortran runtime library tries to output a
  backtrace of the error. \f(CW\*(C`\-fno\-backtrace\*(C'\fR disables the backtrace
  generation. This option only has influence for compilation of the
  Fortran main program.
  .SS "Options for directory search"
  .IX Subsection "Options for directory search"
! These options affect how GNU Fortran searches
  for files specified by the \f(CW\*(C`INCLUDE\*(C'\fR directive and where it searches
  for previously compiled modules.
  .PP
  It also affects the search paths used by \fBcpp\fR when used to preprocess
  Fortran source.
! .IP \fB\-I\fR\fIdir\fR 4
  .IX Item "-Idir"
  These affect interpretation of the \f(CW\*(C`INCLUDE\*(C'\fR directive
  (as well as of the \f(CW\*(C`#include\*(C'\fR directive of the \fBcpp\fR
*************** looking for \fIheader.gcc\fR files and o
*** 1213,1219 ****
  .Sp
  This path is also used to search for \fI.mod\fR files when previously
  compiled modules are required by a \f(CW\*(C`USE\*(C'\fR statement.
! .IP "\fB\-J\fR\fIdir\fR" 4
  .IX Item "-Jdir"
  This option specifies where to put \fI.mod\fR files for compiled modules.
  It is also added to the list of directories to searched by an \f(CW\*(C`USE\*(C'\fR
--- 1142,1148 ----
  .Sp
  This path is also used to search for \fI.mod\fR files when previously
  compiled modules are required by a \f(CW\*(C`USE\*(C'\fR statement.
! .IP \fB\-J\fR\fIdir\fR 4
  .IX Item "-Jdir"
  This option specifies where to put \fI.mod\fR files for compiled modules.
  It is also added to the list of directories to searched by an \f(CW\*(C`USE\*(C'\fR
*************** statement.
*** 1222,1241 ****
  The default is the current directory.
  .IP "\fB\-fintrinsic\-modules\-path\fR \fIdir\fR" 4
  .IX Item "-fintrinsic-modules-path dir"
! This option specifies the location of pre-compiled intrinsic modules, if
  they are not in the default location expected by the compiler.
  .SS "Influencing the linking step"
  .IX Subsection "Influencing the linking step"
  These options come into play when the compiler links object files into an
  executable output file. They are meaningless if the compiler is not doing
  a link step.
! .IP "\fB\-static\-libgfortran\fR" 4
  .IX Item "-static-libgfortran"
  On systems that provide \fIlibgfortran\fR as a shared and a static
  library, this option forces the use of the static version. If no
  shared version of \fIlibgfortran\fR was built when the compiler was
  configured, this option has no effect.
! .IP "\fB\-static\-libquadmath\fR" 4
  .IX Item "-static-libquadmath"
  On systems that provide \fIlibquadmath\fR as a shared and a static
  library, this option forces the use of the static version. If no
--- 1151,1170 ----
  The default is the current directory.
  .IP "\fB\-fintrinsic\-modules\-path\fR \fIdir\fR" 4
  .IX Item "-fintrinsic-modules-path dir"
! This option specifies the location of pre\-compiled intrinsic modules, if
  they are not in the default location expected by the compiler.
  .SS "Influencing the linking step"
  .IX Subsection "Influencing the linking step"
  These options come into play when the compiler links object files into an
  executable output file. They are meaningless if the compiler is not doing
  a link step.
! .IP \fB\-static\-libgfortran\fR 4
  .IX Item "-static-libgfortran"
  On systems that provide \fIlibgfortran\fR as a shared and a static
  library, this option forces the use of the static version. If no
  shared version of \fIlibgfortran\fR was built when the compiler was
  configured, this option has no effect.
! .IP \fB\-static\-libquadmath\fR 4
  .IX Item "-static-libquadmath"
  On systems that provide \fIlibquadmath\fR as a shared and a static
  library, this option forces the use of the static version. If no
*************** shared version of \fIlibquadmath\fR was
*** 1243,1281 ****
  configured, this option has no effect.
  .Sp
  Please note that the \fIlibquadmath\fR runtime library is licensed under the
! \&\s-1GNU\s0 Lesser General Public License (\s-1LGPL\s0), and linking it statically introduces
  requirements when redistributing the resulting binaries.
  .SS "Influencing runtime behavior"
  .IX Subsection "Influencing runtime behavior"
! These options affect the runtime behavior of programs compiled with \s-1GNU\s0 Fortran.
! .IP "\fB\-fconvert=\fR\fIconversion\fR" 4
  .IX Item "-fconvert=conversion"
  Specify the representation of data for unformatted files.  Valid
  values for conversion on most systems are: \fBnative\fR, the default;
! \&\fBswap\fR, swap between big\- and little-endian; \fBbig-endian\fR, use
! big-endian representation for unformatted files; \fBlittle-endian\fR, use
! little-endian representation for unformatted files.
  .Sp
! On \s-1POWER\s0 systems that suppport \fB\-mabi=ieeelongdouble\fR,
  there are additional options, which can be combined with others with
  commas.  Those are
  .RS 4
! .ie n .IP "@w<\fB\-fconvert=r16_ieee\fR Use \s-1IEEE\s0 128\-bit format for>" 4
! .el .IP "\f(CW@w\fR<\fB\-fconvert=r16_ieee\fR Use \s-1IEEE\s0 128\-bit format for>" 4
  .IX Item "@w<-fconvert=r16_ieee Use IEEE 128-bit format for>"
! \&\f(CW\*(C`REAL(KIND=16)\*(C'\fR.
! .ie n .IP "@w<\fB\-fconvert=r16_ibm\fR Use \s-1IBM\s0 long double format for>" 4
! .el .IP "\f(CW@w\fR<\fB\-fconvert=r16_ibm\fR Use \s-1IBM\s0 long double format for>" 4
  .IX Item "@w<-fconvert=r16_ibm Use IBM long double format for>"
! \&\f(CW\*(C`REAL(KIND=16)\*(C'\fR.
  .RE
  .RS 4
  .Sp
  This option has an effect only when used in the main program.
! The \f(CW\*(C`CONVERT\*(C'\fR specifier and the \fB\s-1GFORTRAN_CONVERT_UNIT\s0\fR environment
  variable override the default specified by \fB\-fconvert\fR.
  .RE
! .IP "\fB\-frecord\-marker=\fR\fIlength\fR" 4
  .IX Item "-frecord-marker=length"
  Specify the length of record markers for unformatted files.
  Valid values for \fIlength\fR are 4 and 8.  Default is 4.
--- 1172,1210 ----
  configured, this option has no effect.
  .Sp
  Please note that the \fIlibquadmath\fR runtime library is licensed under the
! GNU Lesser General Public License (LGPL), and linking it statically introduces
  requirements when redistributing the resulting binaries.
  .SS "Influencing runtime behavior"
  .IX Subsection "Influencing runtime behavior"
! These options affect the runtime behavior of programs compiled with GNU Fortran.
! .IP \fB\-fconvert=\fR\fIconversion\fR 4
  .IX Item "-fconvert=conversion"
  Specify the representation of data for unformatted files.  Valid
  values for conversion on most systems are: \fBnative\fR, the default;
! \&\fBswap\fR, swap between big\- and little\-endian; \fBbig\-endian\fR, use
! big\-endian representation for unformatted files; \fBlittle\-endian\fR, use
! little\-endian representation for unformatted files.
  .Sp
! On POWER systems that suppport \fB\-mabi=ieeelongdouble\fR,
  there are additional options, which can be combined with others with
  commas.  Those are
  .RS 4
! .ie n .IP "@w<\fB\-fconvert=r16_ieee\fR Use IEEE 128\-bit format for>" 4
! .el .IP "\f(CW@w\fR<\fB\-fconvert=r16_ieee\fR Use IEEE 128\-bit format for>" 4
  .IX Item "@w<-fconvert=r16_ieee Use IEEE 128-bit format for>"
! \&\f(CWREAL(KIND=16)\fR.
! .ie n .IP "@w<\fB\-fconvert=r16_ibm\fR Use IBM long double format for>" 4
! .el .IP "\f(CW@w\fR<\fB\-fconvert=r16_ibm\fR Use IBM long double format for>" 4
  .IX Item "@w<-fconvert=r16_ibm Use IBM long double format for>"
! \&\f(CWREAL(KIND=16)\fR.
  .RE
  .RS 4
  .Sp
  This option has an effect only when used in the main program.
! The \f(CW\*(C`CONVERT\*(C'\fR specifier and the \fBGFORTRAN_CONVERT_UNIT\fR environment
  variable override the default specified by \fB\-fconvert\fR.
  .RE
! .IP \fB\-frecord\-marker=\fR\fIlength\fR 4
  .IX Item "-frecord-marker=length"
  Specify the length of record markers for unformatted files.
  Valid values for \fIlength\fR are 4 and 8.  Default is 4.
*************** Valid values for \fIlength\fR are 4 and
*** 1283,1294 ****
  which specified a default record marker length of 8 on most
  systems.  If you want to read or write files compatible
  with earlier versions of \fBgfortran\fR, use \fB\-frecord\-marker=8\fR.
! .IP "\fB\-fmax\-subrecord\-length=\fR\fIlength\fR" 4
  .IX Item "-fmax-subrecord-length=length"
  Specify the maximum length for a subrecord.  The maximum permitted
  value for length is 2147483639, which is also the default.  Only
  really useful for use by the gfortran testsuite.
! .IP "\fB\-fsign\-zero\fR" 4
  .IX Item "-fsign-zero"
  When enabled, floating point numbers of value zero with the sign bit set
  are written as negative number in formatted output and treated as
--- 1212,1223 ----
  which specified a default record marker length of 8 on most
  systems.  If you want to read or write files compatible
  with earlier versions of \fBgfortran\fR, use \fB\-frecord\-marker=8\fR.
! .IP \fB\-fmax\-subrecord\-length=\fR\fIlength\fR 4
  .IX Item "-fmax-subrecord-length=length"
  Specify the maximum length for a subrecord.  The maximum permitted
  value for length is 2147483639, which is also the default.  Only
  really useful for use by the gfortran testsuite.
! .IP \fB\-fsign\-zero\fR 4
  .IX Item "-fsign-zero"
  When enabled, floating point numbers of value zero with the sign bit set
  are written as negative number in formatted output and treated as
*************** negative in the \f(CW\*(C`SIGN\*(C'\fR i
*** 1296,1339 ****
  print the negative sign of zero values (or values rounded to zero for I/O)
  and regards zero as positive number in the \f(CW\*(C`SIGN\*(C'\fR intrinsic for
  compatibility with Fortran 77. The default is \fB\-fsign\-zero\fR.
! .SS "\s-1GNU\s0 Fortran Developer Options"
  .IX Subsection "GNU Fortran Developer Options"
! \&\s-1GNU\s0 Fortran has various special options that are used for debugging
! the \s-1GNU\s0 Fortran compiler.
! .IP "\fB\-fdump\-fortran\-global\fR" 4
  .IX Item "-fdump-fortran-global"
  Output a list of the global identifiers after translating into
! middle-end representation. Mostly useful for debugging the \s-1GNU\s0 Fortran
  compiler itself. The output generated by this option might change
  between releases.  This option may also generate internal compiler
  errors for features that have only recently been added.
! .IP "\fB\-fdump\-fortran\-optimized\fR" 4
  .IX Item "-fdump-fortran-optimized"
! Output the parse tree after front-end optimization.  Mostly useful for
! debugging the \s-1GNU\s0 Fortran compiler itself. The output generated by
  this option might change between releases.  This option may also
  generate internal compiler errors for features that have only
  recently been added.
! .IP "\fB\-fdump\-fortran\-original\fR" 4
  .IX Item "-fdump-fortran-original"
  Output the internal parse tree after translating the source program
  into internal representation.  This option is mostly useful for
! debugging the \s-1GNU\s0 Fortran compiler itself. The output generated by
  this option might change between releases. This option may also
  generate internal compiler errors for features that have only
  recently been added.
! .IP "\fB\-fdump\-parse\-tree\fR" 4
  .IX Item "-fdump-parse-tree"
  Output the internal parse tree after translating the source program
! into internal representation.  Mostly useful for debugging the \s-1GNU\s0
  Fortran compiler itself. The output generated by this option might
  change between releases. This option may also generate internal
  compiler errors for features that have only recently been added. This
  option is deprecated; use \f(CW\*(C`\-fdump\-fortran\-original\*(C'\fR instead.
! .IP "\fB\-save\-temps\fR" 4
  .IX Item "-save-temps"
! Store the usual \*(L"temporary\*(R" intermediate files permanently; name them
! as auxiliary output files, as specified described under \s-1GCC\s0
  \&\fB\-dumpbase\fR and \fB\-dumpdir\fR.
  .Sp
  .Vb 1
--- 1225,1268 ----
  print the negative sign of zero values (or values rounded to zero for I/O)
  and regards zero as positive number in the \f(CW\*(C`SIGN\*(C'\fR intrinsic for
  compatibility with Fortran 77. The default is \fB\-fsign\-zero\fR.
! .SS "GNU Fortran Developer Options"
  .IX Subsection "GNU Fortran Developer Options"
! GNU Fortran has various special options that are used for debugging
! the GNU Fortran compiler.
! .IP \fB\-fdump\-fortran\-global\fR 4
  .IX Item "-fdump-fortran-global"
  Output a list of the global identifiers after translating into
! middle\-end representation. Mostly useful for debugging the GNU Fortran
  compiler itself. The output generated by this option might change
  between releases.  This option may also generate internal compiler
  errors for features that have only recently been added.
! .IP \fB\-fdump\-fortran\-optimized\fR 4
  .IX Item "-fdump-fortran-optimized"
! Output the parse tree after front\-end optimization.  Mostly useful for
! debugging the GNU Fortran compiler itself. The output generated by
  this option might change between releases.  This option may also
  generate internal compiler errors for features that have only
  recently been added.
! .IP \fB\-fdump\-fortran\-original\fR 4
  .IX Item "-fdump-fortran-original"
  Output the internal parse tree after translating the source program
  into internal representation.  This option is mostly useful for
! debugging the GNU Fortran compiler itself. The output generated by
  this option might change between releases. This option may also
  generate internal compiler errors for features that have only
  recently been added.
! .IP \fB\-fdump\-parse\-tree\fR 4
  .IX Item "-fdump-parse-tree"
  Output the internal parse tree after translating the source program
! into internal representation.  Mostly useful for debugging the GNU
  Fortran compiler itself. The output generated by this option might
  change between releases. This option may also generate internal
  compiler errors for features that have only recently been added. This
  option is deprecated; use \f(CW\*(C`\-fdump\-fortran\-original\*(C'\fR instead.
! .IP \fB\-save\-temps\fR 4
  .IX Item "-save-temps"
! Store the usual "temporary" intermediate files permanently; name them
! as auxiliary output files, as specified described under GCC
  \&\fB\-dumpbase\fR and \fB\-dumpdir\fR.
  .Sp
  .Vb 1
*************** saves the preprocessor output in \fIfoo.
*** 1352,1358 ****
  the (implied) output file \fIfoo.s\fR.
  .SS "Options for code generation conventions"
  .IX Subsection "Options for code generation conventions"
! These machine-independent options control the interface conventions
  used in code generation.
  .PP
  Most of them have both positive and negative forms; the negative form
--- 1281,1287 ----
  the (implied) output file \fIfoo.s\fR.
  .SS "Options for code generation conventions"
  .IX Subsection "Options for code generation conventions"
! These machine\-independent options control the interface conventions
  used in code generation.
  .PP
  Most of them have both positive and negative forms; the negative form
*************** of \fB\-ffoo\fR would be \fB\-fno\-foo\f
*** 1360,1366 ****
  one of the forms is listed\-\-\-the one that is not the default.  You
  can figure out the other form by either removing \fBno\-\fR or adding
  it.
! .IP "\fB\-fno\-automatic\fR" 4
  .IX Item "-fno-automatic"
  Treat each program unit (except those marked as \f(CW\*(C`RECURSIVE\*(C'\fR) as if the
  \&\f(CW\*(C`SAVE\*(C'\fR statement were specified for every local variable and array
--- 1289,1295 ----
  one of the forms is listed\-\-\-the one that is not the default.  You
  can figure out the other form by either removing \fBno\-\fR or adding
  it.
! .IP \fB\-fno\-automatic\fR 4
  .IX Item "-fno-automatic"
  Treat each program unit (except those marked as \f(CW\*(C`RECURSIVE\*(C'\fR) as if the
  \&\f(CW\*(C`SAVE\*(C'\fR statement were specified for every local variable and array
*************** Use the option \fB\-frecursive\fR to use
*** 1372,1378 ****
  .Sp
  Local variables or arrays having an explicit \f(CW\*(C`SAVE\*(C'\fR attribute are
  silently ignored unless the \fB\-pedantic\fR option is added.
! .IP "\fB\-ff2c\fR" 4
  .IX Item "-ff2c"
  Generate code designed to be compatible with code generated
  by \fBg77\fR and \fBf2c\fR.
--- 1301,1307 ----
  .Sp
  Local variables or arrays having an explicit \f(CW\*(C`SAVE\*(C'\fR attribute are
  silently ignored unless the \fB\-pedantic\fR option is added.
! .IP \fB\-ff2c\fR 4
  .IX Item "-ff2c"
  Generate code designed to be compatible with code generated
  by \fBg77\fR and \fBf2c\fR.
*************** in \fBf2c\fR) require functions that ret
*** 1382,1391 ****
  default \f(CW\*(C`REAL\*(C'\fR to actually return the C type \f(CW\*(C`double\*(C'\fR, and
  functions that return type \f(CW\*(C`COMPLEX\*(C'\fR to return the values via an
  extra argument in the calling sequence that points to where to
! store the return value.  Under the default \s-1GNU\s0 calling conventions, such
! functions simply return their results as they would in \s-1GNU\s0
  C\-\-\-default \f(CW\*(C`REAL\*(C'\fR functions return the C type \f(CW\*(C`float\*(C'\fR, and
! \&\f(CW\*(C`COMPLEX\*(C'\fR functions return the \s-1GNU C\s0 type \f(CW\*(C`complex\*(C'\fR.
  Additionally, this option implies the \fB\-fsecond\-underscore\fR
  option, unless \fB\-fno\-second\-underscore\fR is explicitly requested.
  .Sp
--- 1311,1320 ----
  default \f(CW\*(C`REAL\*(C'\fR to actually return the C type \f(CW\*(C`double\*(C'\fR, and
  functions that return type \f(CW\*(C`COMPLEX\*(C'\fR to return the values via an
  extra argument in the calling sequence that points to where to
! store the return value.  Under the default GNU calling conventions, such
! functions simply return their results as they would in GNU
  C\-\-\-default \f(CW\*(C`REAL\*(C'\fR functions return the C type \f(CW\*(C`float\*(C'\fR, and
! \&\f(CW\*(C`COMPLEX\*(C'\fR functions return the GNU C type \f(CW\*(C`complex\*(C'\fR.
  Additionally, this option implies the \fB\-fsecond\-underscore\fR
  option, unless \fB\-fno\-second\-underscore\fR is explicitly requested.
  .Sp
*************** calling conventions will break at execut
*** 1401,1430 ****
  \&\fICaution:\fR This breaks code that passes intrinsic functions
  of type default \f(CW\*(C`REAL\*(C'\fR or \f(CW\*(C`COMPLEX\*(C'\fR as actual arguments, as
  the library implementations use the \fB\-fno\-f2c\fR calling conventions.
! .IP "\fB\-fno\-underscoring\fR" 4
  .IX Item "-fno-underscoring"
  Do not transform names of entities specified in the Fortran
  source file by appending underscores to them.
  .Sp
! With \fB\-funderscoring\fR in effect, \s-1GNU\s0 Fortran appends one
  underscore to external names.  This is done to ensure
! compatibility with code produced by many \s-1UNIX\s0 Fortran compilers.
  Note this does not apply to names declared with C binding, or within
  a module.
  .Sp
! \&\fICaution\fR: The default behavior of \s-1GNU\s0 Fortran is
  incompatible with \fBf2c\fR and \fBg77\fR, please use the
  \&\fB\-ff2c\fR option if you want object files compiled with
! \&\s-1GNU\s0 Fortran to be compatible with object code created with these
  tools.
  .Sp
  Use of \fB\-fno\-underscoring\fR is not recommended unless you are
! experimenting with issues such as integration of \s-1GNU\s0 Fortran into
! existing system environments (vis\-a\*`\-vis existing libraries, tools,
  and so on).
  .Sp
! For example, with \fB\-funderscoring\fR, and assuming that \f(CW\*(C`j()\*(C'\fR and
! \&\f(CW\*(C`max_count()\*(C'\fR are external functions while \f(CW\*(C`my_var\*(C'\fR and
  \&\f(CW\*(C`lvar\*(C'\fR are local variables, a Fortran statement like
  .Sp
  .Vb 1
--- 1330,1359 ----
  \&\fICaution:\fR This breaks code that passes intrinsic functions
  of type default \f(CW\*(C`REAL\*(C'\fR or \f(CW\*(C`COMPLEX\*(C'\fR as actual arguments, as
  the library implementations use the \fB\-fno\-f2c\fR calling conventions.
! .IP \fB\-fno\-underscoring\fR 4
  .IX Item "-fno-underscoring"
  Do not transform names of entities specified in the Fortran
  source file by appending underscores to them.
  .Sp
! With \fB\-funderscoring\fR in effect, GNU Fortran appends one
  underscore to external names.  This is done to ensure
! compatibility with code produced by many UNIX Fortran compilers.
  Note this does not apply to names declared with C binding, or within
  a module.
  .Sp
! \&\fICaution\fR: The default behavior of GNU Fortran is
  incompatible with \fBf2c\fR and \fBg77\fR, please use the
  \&\fB\-ff2c\fR option if you want object files compiled with
! GNU Fortran to be compatible with object code created with these
  tools.
  .Sp
  Use of \fB\-fno\-underscoring\fR is not recommended unless you are
! experimenting with issues such as integration of GNU Fortran into
! existing system environments (vis\-Ã \-vis existing libraries, tools,
  and so on).
  .Sp
! For example, with \fB\-funderscoring\fR, and assuming that \f(CWj()\fR and
! \&\f(CWmax_count()\fR are external functions while \f(CW\*(C`my_var\*(C'\fR and
  \&\f(CW\*(C`lvar\*(C'\fR are local variables, a Fortran statement like
  .Sp
  .Vb 1
*************** With \fB\-fno\-underscoring\fR, the same
*** 1444,1456 ****
  .Ve
  .Sp
  Use of \fB\-fno\-underscoring\fR allows direct specification of
! user-defined names while debugging and when interfacing \s-1GNU\s0 Fortran
  code with other languages.
  .Sp
  Note that just because the names match does \fInot\fR mean that the
! interface implemented by \s-1GNU\s0 Fortran for an external name matches the
  interface implemented by some other language for that same name.
! That is, getting code produced by \s-1GNU\s0 Fortran to link to code produced
  by some other compiler using this or any other method can be only a
  small part of the overall solution\-\-\-getting the code generated by
  both compilers to agree on issues other than naming can require
--- 1373,1385 ----
  .Ve
  .Sp
  Use of \fB\-fno\-underscoring\fR allows direct specification of
! user\-defined names while debugging and when interfacing GNU Fortran
  code with other languages.
  .Sp
  Note that just because the names match does \fInot\fR mean that the
! interface implemented by GNU Fortran for an external name matches the
  interface implemented by some other language for that same name.
! That is, getting code produced by GNU Fortran to link to code produced
  by some other compiler using this or any other method can be only a
  small part of the overall solution\-\-\-getting the code generated by
  both compilers to agree on issues other than naming can require
*************** significant effort, and, unlike naming d
*** 1458,1531 ****
  cannot detect disagreements in these other areas.
  .Sp
  Also, note that with \fB\-fno\-underscoring\fR, the lack of appended
! underscores introduces the very real possibility that a user-defined
  external name conflicts with a name in a system library, which
! could make finding unresolved-reference bugs quite difficult in some
  cases\-\-\-they might occur at program run time, and show up only as
  buggy behavior at run time.
  .Sp
  Also note that declaring symbols as \f(CWbind(C)\fR is a more robust way to
  interface with code written in other languages or compiled with different
! Fortran compilers than the command-line options documented in this section.
! .IP "\fB\-fsecond\-underscore\fR" 4
  .IX Item "-fsecond-underscore"
! By default, \s-1GNU\s0 Fortran appends an underscore to external
! names.  If this option is used, \s-1GNU\s0 Fortran appends two
  underscores to names with underscores and one underscore to names
  with no underscores.
  .Sp
  For example, an external name such as \f(CW\*(C`MAX_COUNT\*(C'\fR
! is implemented as a reference to the link-time external symbol
  \&\f(CW\*(C`max_count_\|_\*(C'\fR, instead of \f(CW\*(C`max_count_\*(C'\fR.  This is required
  for compatibility with \fBg77\fR and \fBf2c\fR, and is implied
  by use of the \fB\-ff2c\fR option.
  .Sp
  This option has no effect if \fB\-fno\-underscoring\fR is
  in effect.  It is implied by the \fB\-ff2c\fR option.
! .IP "\fB\-fcoarray=\fR\fI<keyword>\fR" 4
  .IX Item "-fcoarray=<keyword>"
  .RS 4
  .PD 0
! .IP "\fBnone\fR" 4
  .IX Item "none"
  .PD
! Disable coarray support; using coarray declarations and image-control
! statements produces a compile-time error. (Default)
! .IP "\fBsingle\fR" 4
  .IX Item "single"
! Single-image mode, i.e. \f(CW\*(C`num_images()\*(C'\fR is always one.
! .IP "\fBlib\fR" 4
  .IX Item "lib"
! Library-based coarray parallelization; a suitable \s-1GNU\s0 Fortran coarray
  library such as <\fBhttp://opencoarrays.org\fR> needs to be linked.
! Alternatively, \s-1GCC\s0's \f(CW\*(C`libcaf_single\*(C'\fR library can be linked,
  albeit it only supports a single image.
  .RE
  .RS 4
  .RE
! .IP "\fB\-fcheck=\fR\fI<keyword>\fR" 4
  .IX Item "-fcheck=<keyword>"
! Enable the generation of run-time checks; the argument shall be
! a comma-delimited list of the following keywords.  Prefixing a check with
  \&\fBno\-\fR disables it if it was activated by a previous specification.
  .RS 4
! .IP "\fBall\fR" 4
  .IX Item "all"
! Enable all run-time test of \fB\-fcheck\fR.
! .IP "\fBarray-temps\fR" 4
  .IX Item "array-temps"
  Warns at run time when for passing an actual argument a temporary array
  had to be generated. The information generated by this warning is
  sometimes useful in optimization, in order to avoid such temporaries.
  .Sp
  Note: The warning is only printed once per location.
! .IP "\fBbits\fR" 4
  .IX Item "bits"
! Enable generation of run-time checks for invalid arguments to the bit
  manipulation intrinsics.
! .IP "\fBbounds\fR" 4
  .IX Item "bounds"
! Enable generation of run-time checks for array subscripts
  and against the declared minimum and maximum values.  It also
  checks array indices for assumed and deferred
  shape arrays against the actual allocated bounds and ensures that all string
--- 1387,1460 ----
  cannot detect disagreements in these other areas.
  .Sp
  Also, note that with \fB\-fno\-underscoring\fR, the lack of appended
! underscores introduces the very real possibility that a user\-defined
  external name conflicts with a name in a system library, which
! could make finding unresolved\-reference bugs quite difficult in some
  cases\-\-\-they might occur at program run time, and show up only as
  buggy behavior at run time.
  .Sp
  Also note that declaring symbols as \f(CWbind(C)\fR is a more robust way to
  interface with code written in other languages or compiled with different
! Fortran compilers than the command\-line options documented in this section.
! .IP \fB\-fsecond\-underscore\fR 4
  .IX Item "-fsecond-underscore"
! By default, GNU Fortran appends an underscore to external
! names.  If this option is used, GNU Fortran appends two
  underscores to names with underscores and one underscore to names
  with no underscores.
  .Sp
  For example, an external name such as \f(CW\*(C`MAX_COUNT\*(C'\fR
! is implemented as a reference to the link\-time external symbol
  \&\f(CW\*(C`max_count_\|_\*(C'\fR, instead of \f(CW\*(C`max_count_\*(C'\fR.  This is required
  for compatibility with \fBg77\fR and \fBf2c\fR, and is implied
  by use of the \fB\-ff2c\fR option.
  .Sp
  This option has no effect if \fB\-fno\-underscoring\fR is
  in effect.  It is implied by the \fB\-ff2c\fR option.
! .IP \fB\-fcoarray=\fR\fI<keyword>\fR 4
  .IX Item "-fcoarray=<keyword>"
  .RS 4
  .PD 0
! .IP \fBnone\fR 4
  .IX Item "none"
  .PD
! Disable coarray support; using coarray declarations and image\-control
! statements produces a compile\-time error. (Default)
! .IP \fBsingle\fR 4
  .IX Item "single"
! Single\-image mode, i.e. \f(CWnum_images()\fR is always one.
! .IP \fBlib\fR 4
  .IX Item "lib"
! Library\-based coarray parallelization; a suitable GNU Fortran coarray
  library such as <\fBhttp://opencoarrays.org\fR> needs to be linked.
! Alternatively, GCC\*(Aqs \f(CW\*(C`libcaf_single\*(C'\fR library can be linked,
  albeit it only supports a single image.
  .RE
  .RS 4
  .RE
! .IP \fB\-fcheck=\fR\fI<keyword>\fR 4
  .IX Item "-fcheck=<keyword>"
! Enable the generation of run\-time checks; the argument shall be
! a comma\-delimited list of the following keywords.  Prefixing a check with
  \&\fBno\-\fR disables it if it was activated by a previous specification.
  .RS 4
! .IP \fBall\fR 4
  .IX Item "all"
! Enable all run\-time test of \fB\-fcheck\fR.
! .IP \fBarray\-temps\fR 4
  .IX Item "array-temps"
  Warns at run time when for passing an actual argument a temporary array
  had to be generated. The information generated by this warning is
  sometimes useful in optimization, in order to avoid such temporaries.
  .Sp
  Note: The warning is only printed once per location.
! .IP \fBbits\fR 4
  .IX Item "bits"
! Enable generation of run\-time checks for invalid arguments to the bit
  manipulation intrinsics.
! .IP \fBbounds\fR 4
  .IX Item "bounds"
! Enable generation of run\-time checks for array subscripts
  and against the declared minimum and maximum values.  It also
  checks array indices for assumed and deferred
  shape arrays against the actual allocated bounds and ensures that all string
*************** the compilation of the main program.
*** 1537,1557 ****
  .Sp
  Note: In the future this may also include other forms of checking, e.g.,
  checking substring references.
! .IP "\fBdo\fR" 4
  .IX Item "do"
! Enable generation of run-time checks for invalid modification of loop
  iteration variables.
! .IP "\fBmem\fR" 4
  .IX Item "mem"
! Enable generation of run-time checks for memory allocation.
  Note: This option does not affect explicit allocations using the
  \&\f(CW\*(C`ALLOCATE\*(C'\fR statement, which are always checked.
! .IP "\fBpointer\fR" 4
  .IX Item "pointer"
! Enable generation of run-time checks for pointers and allocatables.
! .IP "\fBrecursion\fR" 4
  .IX Item "recursion"
! Enable generation of run-time checks for recursively called subroutines and
  functions that are not marked as recursive. See also \fB\-frecursive\fR.
  Note: This check does not work for OpenMP programs and is disabled if used
  together with \fB\-frecursive\fR and \fB\-fopenmp\fR.
--- 1466,1486 ----
  .Sp
  Note: In the future this may also include other forms of checking, e.g.,
  checking substring references.
! .IP \fBdo\fR 4
  .IX Item "do"
! Enable generation of run\-time checks for invalid modification of loop
  iteration variables.
! .IP \fBmem\fR 4
  .IX Item "mem"
! Enable generation of run\-time checks for memory allocation.
  Note: This option does not affect explicit allocations using the
  \&\f(CW\*(C`ALLOCATE\*(C'\fR statement, which are always checked.
! .IP \fBpointer\fR 4
  .IX Item "pointer"
! Enable generation of run\-time checks for pointers and allocatables.
! .IP \fBrecursion\fR 4
  .IX Item "recursion"
! Enable generation of run\-time checks for recursively called subroutines and
  functions that are not marked as recursive. See also \fB\-frecursive\fR.
  Note: This check does not work for OpenMP programs and is disabled if used
  together with \fB\-frecursive\fR and \fB\-fopenmp\fR.
*************** Example: Assuming you have a file \fIfoo
*** 1567,1582 ****
  compiles the file with all checks enabled as specified above except
  warnings for generated array temporaries.
  .RE
! .IP "\fB\-fbounds\-check\fR" 4
  .IX Item "-fbounds-check"
  Deprecated alias for \fB\-fcheck=bounds\fR.
! .IP "\fB\-ftail\-call\-workaround\fR" 4
  .IX Item "-ftail-call-workaround"
  .PD 0
! .IP "\fB\-ftail\-call\-workaround=\fR\fIn\fR" 4
  .IX Item "-ftail-call-workaround=n"
  .PD
! Some C interfaces to Fortran codes violate the gfortran \s-1ABI\s0 by
  omitting the hidden character length arguments as described in
    This can lead to crashes
  because pushing arguments for tail calls can overflow the stack.
--- 1496,1511 ----
  compiles the file with all checks enabled as specified above except
  warnings for generated array temporaries.
  .RE
! .IP \fB\-fbounds\-check\fR 4
  .IX Item "-fbounds-check"
  Deprecated alias for \fB\-fcheck=bounds\fR.
! .IP \fB\-ftail\-call\-workaround\fR 4
  .IX Item "-ftail-call-workaround"
  .PD 0
! .IP \fB\-ftail\-call\-workaround=\fR\fIn\fR 4
  .IX Item "-ftail-call-workaround=n"
  .PD
! Some C interfaces to Fortran codes violate the gfortran ABI by
  omitting the hidden character length arguments as described in
    This can lead to crashes
  because pushing arguments for tail calls can overflow the stack.
*************** insufficient stack space.
*** 1594,1600 ****
  .Sp
  It is \fIvery strongly\fR recommended to fix the code in question.
  The \fB\-fc\-prototypes\-external\fR option can be used to generate
! prototypes that conform to gfortran's \s-1ABI,\s0 for inclusion in the
  source code.
  .Sp
  Support for this option will likely be withdrawn in a future release
--- 1523,1529 ----
  .Sp
  It is \fIvery strongly\fR recommended to fix the code in question.
  The \fB\-fc\-prototypes\-external\fR option can be used to generate
! prototypes that conform to gfortran\*(Aqs ABI, for inclusion in the
  source code.
  .Sp
  Support for this option will likely be withdrawn in a future release
*************** The negative form, \fB\-fno\-tail\-call\
*** 1605,1614 ****
  .Sp
  Default is currently \fB\-ftail\-call\-workaround\fR, this will change
  in future releases.
! .IP "\fB\-fcheck\-array\-temporaries\fR" 4
  .IX Item "-fcheck-array-temporaries"
  Deprecated alias for \fB\-fcheck=array\-temps\fR.
! .IP "\fB\-fmax\-array\-constructor=\fR\fIn\fR" 4
  .IX Item "-fmax-array-constructor=n"
  This option can be used to increase the upper limit permitted in
  array constructors.  The code below requires this option to expand
--- 1534,1543 ----
  .Sp
  Default is currently \fB\-ftail\-call\-workaround\fR, this will change
  in future releases.
! .IP \fB\-fcheck\-array\-temporaries\fR 4
  .IX Item "-fcheck-array-temporaries"
  Deprecated alias for \fB\-fcheck=array\-temps\fR.
! .IP \fB\-fmax\-array\-constructor=\fR\fIn\fR 4
  .IX Item "-fmax-array-constructor=n"
  This option can be used to increase the upper limit permitted in
  array constructors.  The code below requires this option to expand
*************** the array at compile time.
*** 1628,1634 ****
  large object files.\fR
  .Sp
  The default value for \fIn\fR is 65535.
! .IP "\fB\-fmax\-stack\-var\-size=\fR\fIn\fR" 4
  .IX Item "-fmax-stack-var-size=n"
  This option specifies the size in bytes of the largest array that is put
  on the stack; if the size is exceeded static memory is used (except in
--- 1557,1563 ----
  large object files.\fR
  .Sp
  The default value for \fIn\fR is 65535.
! .IP \fB\-fmax\-stack\-var\-size=\fR\fIn\fR 4
  .IX Item "-fmax-stack-var-size=n"
  This option specifies the size in bytes of the largest array that is put
  on the stack; if the size is exceeded static memory is used (except in
*************** for parallel programs. Use \fB\-fno\-aut
*** 1640,1649 ****
  .Sp
  This option currently only affects local arrays declared with constant
  bounds, and may not apply to all character variables.
! Future versions of \s-1GNU\s0 Fortran may improve this behavior.
  .Sp
  The default value for \fIn\fR is 65536.
! .IP "\fB\-fstack\-arrays\fR" 4
  .IX Item "-fstack-arrays"
  Adding this option makes the Fortran compiler put all arrays of
  unknown size and array temporaries onto stack memory.  If your program uses very
--- 1569,1578 ----
  .Sp
  This option currently only affects local arrays declared with constant
  bounds, and may not apply to all character variables.
! Future versions of GNU Fortran may improve this behavior.
  .Sp
  The default value for \fIn\fR is 65536.
! .IP \fB\-fstack\-arrays\fR 4
  .IX Item "-fstack-arrays"
  Adding this option makes the Fortran compiler put all arrays of
  unknown size and array temporaries onto stack memory.  If your program uses very
*************** large local arrays it is possible that y
*** 1651,1664 ****
  limits for stack memory on some operating systems. This flag is enabled
  by default at optimization level \fB\-Ofast\fR unless
  \&\fB\-fmax\-stack\-var\-size\fR is specified.
! .IP "\fB\-fpack\-derived\fR" 4
  .IX Item "-fpack-derived"
! This option tells \s-1GNU\s0 Fortran to pack derived type members as closely as
  possible.  Code compiled with this option is likely to be incompatible
  with code compiled without this option, and may execute slower.
! .IP "\fB\-frepack\-arrays\fR" 4
  .IX Item "-frepack-arrays"
! In some circumstances \s-1GNU\s0 Fortran may pass assumed shape array
  sections via a descriptor describing a noncontiguous area of memory.
  This option adds code to the function prologue to repack the data into
  a contiguous block at runtime.
--- 1580,1593 ----
  limits for stack memory on some operating systems. This flag is enabled
  by default at optimization level \fB\-Ofast\fR unless
  \&\fB\-fmax\-stack\-var\-size\fR is specified.
! .IP \fB\-fpack\-derived\fR 4
  .IX Item "-fpack-derived"
! This option tells GNU Fortran to pack derived type members as closely as
  possible.  Code compiled with this option is likely to be incompatible
  with code compiled without this option, and may execute slower.
! .IP \fB\-frepack\-arrays\fR 4
  .IX Item "-frepack-arrays"
! In some circumstances GNU Fortran may pass assumed shape array
  sections via a descriptor describing a noncontiguous area of memory.
  This option adds code to the function prologue to repack the data into
  a contiguous block at runtime.
*************** a contiguous block at runtime.
*** 1666,1681 ****
  This should result in faster accesses to the array.  However it can introduce
  significant overhead to the function call, especially  when the passed data
  is noncontiguous.
! .IP "\fB\-fshort\-enums\fR" 4
  .IX Item "-fshort-enums"
  This option is provided for interoperability with C code that was
  compiled with the \fB\-fshort\-enums\fR option.  It makes
! \&\s-1GNU\s0 Fortran choose the smallest \f(CW\*(C`INTEGER\*(C'\fR kind a given
  enumerator set fits in, and give all its enumerators this kind.
! .IP "\fB\-finline\-arg\-packing\fR" 4
  .IX Item "-finline-arg-packing"
! When passing an assumed-shape argument of a procedure as actual
! argument to an assumed-size or explicit size or as argument to a
  procedure that does not have an explicit interface, the argument may
  have to be packed; that is, put into contiguous memory. An example is
  the call to \f(CW\*(C`foo\*(C'\fR in
--- 1595,1610 ----
  This should result in faster accesses to the array.  However it can introduce
  significant overhead to the function call, especially  when the passed data
  is noncontiguous.
! .IP \fB\-fshort\-enums\fR 4
  .IX Item "-fshort-enums"
  This option is provided for interoperability with C code that was
  compiled with the \fB\-fshort\-enums\fR option.  It makes
! GNU Fortran choose the smallest \f(CW\*(C`INTEGER\*(C'\fR kind a given
  enumerator set fits in, and give all its enumerators this kind.
! .IP \fB\-finline\-arg\-packing\fR 4
  .IX Item "-finline-arg-packing"
! When passing an assumed\-shape argument of a procedure as actual
! argument to an assumed\-size or explicit size or as argument to a
  procedure that does not have an explicit interface, the argument may
  have to be packed; that is, put into contiguous memory. An example is
  the call to \f(CW\*(C`foo\*(C'\fR in
*************** contains a very large number of argument
*** 1700,1727 ****
  size and also compilation time may become excessive.  If that is the
  case, it may be better to disable this option.  Instances of packing
  can be found by using \fB\-Warray\-temporaries\fR.
! .IP "\fB\-fexternal\-blas\fR" 4
  .IX Item "-fexternal-blas"
! This option makes \fBgfortran\fR generate calls to \s-1BLAS\s0 functions
  for some matrix operations like \f(CW\*(C`MATMUL\*(C'\fR, instead of using our own
  algorithms, if the size of the matrices involved is larger than a given
  limit (see \fB\-fblas\-matmul\-limit\fR).  This may be profitable if an
! optimized vendor \s-1BLAS\s0 library is available.  The \s-1BLAS\s0 library has
  to be specified at link time.
! .IP "\fB\-fblas\-matmul\-limit=\fR\fIn\fR" 4
  .IX Item "-fblas-matmul-limit=n"
  Only significant when \fB\-fexternal\-blas\fR is in effect.
  Matrix multiplication of matrices with size larger than (or equal to) \fIn\fR
! is performed by calls to \s-1BLAS\s0 functions, while others are
  handled by \fBgfortran\fR internal algorithms. If the matrices
  involved are not square, the size comparison is performed using the
  geometric mean of the dimensions of the argument and result matrices.
  .Sp
  The default value for \fIn\fR is 30.
! .IP "\fB\-finline\-intrinsics\fR" 4
  .IX Item "-finline-intrinsics"
  .PD 0
! .IP "\fB\-finline\-intrinsics=\fR\fIintr1\fR\fB,\fR\fIintr2\fR\fB,...\fR" 4
  .IX Item "-finline-intrinsics=intr1,intr2,..."
  .PD
  Prefer generating inline code over calls to libgfortran functions to implement
--- 1629,1656 ----
  size and also compilation time may become excessive.  If that is the
  case, it may be better to disable this option.  Instances of packing
  can be found by using \fB\-Warray\-temporaries\fR.
! .IP \fB\-fexternal\-blas\fR 4
  .IX Item "-fexternal-blas"
! This option makes \fBgfortran\fR generate calls to BLAS functions
  for some matrix operations like \f(CW\*(C`MATMUL\*(C'\fR, instead of using our own
  algorithms, if the size of the matrices involved is larger than a given
  limit (see \fB\-fblas\-matmul\-limit\fR).  This may be profitable if an
! optimized vendor BLAS library is available.  The BLAS library has
  to be specified at link time.
! .IP \fB\-fblas\-matmul\-limit=\fR\fIn\fR 4
  .IX Item "-fblas-matmul-limit=n"
  Only significant when \fB\-fexternal\-blas\fR is in effect.
  Matrix multiplication of matrices with size larger than (or equal to) \fIn\fR
! is performed by calls to BLAS functions, while others are
  handled by \fBgfortran\fR internal algorithms. If the matrices
  involved are not square, the size comparison is performed using the
  geometric mean of the dimensions of the argument and result matrices.
  .Sp
  The default value for \fIn\fR is 30.
! .IP \fB\-finline\-intrinsics\fR 4
  .IX Item "-finline-intrinsics"
  .PD 0
! .IP \fB\-finline\-intrinsics=\fR\fIintr1\fR\fB,\fR\fIintr2\fR\fB,...\fR 4
  .IX Item "-finline-intrinsics=intr1,intr2,..."
  .PD
  Prefer generating inline code over calls to libgfortran functions to implement
*************** implementation.  However, some intrinsic
*** 1734,1740 ****
  code, where inline code typically offers opportunities for additional
  optimization over a library function.  With \f(CW\*(C`\-finline\-intrinsics=...\*(C'\fR or
  \&\f(CW\*(C`\-fno\-inline\-intrinsics=...\*(C'\fR, the choice applies only to the intrinsics
! present in the comma-separated list provided as argument.
  .Sp
  For each intrinsic, if no choice of implementation was made through either of
  the flag variants, a default behavior is chosen depending on optimization:
--- 1663,1669 ----
  code, where inline code typically offers opportunities for additional
  optimization over a library function.  With \f(CW\*(C`\-finline\-intrinsics=...\*(C'\fR or
  \&\f(CW\*(C`\-fno\-inline\-intrinsics=...\*(C'\fR, the choice applies only to the intrinsics
! present in the comma\-separated list provided as argument.
  .Sp
  For each intrinsic, if no choice of implementation was made through either of
  the flag variants, a default behavior is chosen depending on optimization:
*************** the flag is moreover limited to calls of
*** 1748,1756 ****
  The case of rank\-1 argument and \f(CW\*(C`DIM\*(C'\fR argument present, i.e.
  \&\f(CW\*(C`MAXLOC(A(:),DIM=1)\*(C'\fR or \f(CW\*(C`MINLOC(A(:),DIM=1)\*(C'\fR is inlined
  unconditionally for numeric rank\-1 array argument \f(CW\*(C`A\*(C'\fR.
! .IP "\fB\-finline\-matmul\-limit=\fR\fIn\fR" 4
  .IX Item "-finline-matmul-limit=n"
! When front-end optimization is active, some calls to the \f(CW\*(C`MATMUL\*(C'\fR
  intrinsic function are inlined.  This may result in code size
  increase if the size of the matrix cannot be determined at compile
  time, as code for both cases is generated.  Setting
--- 1677,1685 ----
  The case of rank\-1 argument and \f(CW\*(C`DIM\*(C'\fR argument present, i.e.
  \&\f(CW\*(C`MAXLOC(A(:),DIM=1)\*(C'\fR or \f(CW\*(C`MINLOC(A(:),DIM=1)\*(C'\fR is inlined
  unconditionally for numeric rank\-1 array argument \f(CW\*(C`A\*(C'\fR.
! .IP \fB\-finline\-matmul\-limit=\fR\fIn\fR 4
  .IX Item "-finline-matmul-limit=n"
! When front\-end optimization is active, some calls to the \f(CW\*(C`MATMUL\*(C'\fR
  intrinsic function are inlined.  This may result in code size
  increase if the size of the matrix cannot be determined at compile
  time, as code for both cases is generated.  Setting
*************** the dimensions of the argument and resul
*** 1762,1796 ****
  .Sp
  The default value for \fIn\fR is 30.  The \f(CW\*(C`\-fblas\-matmul\-limit\*(C'\fR
  can be used to change this value.
! .IP "\fB\-frecursive\fR" 4
  .IX Item "-frecursive"
  Allow indirect recursion by forcing all local arrays to be allocated
  on the stack. This flag cannot be used together with
  \&\fB\-fmax\-stack\-var\-size=\fR or \fB\-fno\-automatic\fR.
! .IP "\fB\-finit\-local\-zero\fR" 4
  .IX Item "-finit-local-zero"
  .PD 0
! .IP "\fB\-finit\-derived\fR" 4
  .IX Item "-finit-derived"
! .IP "\fB\-finit\-integer=\fR\fIn\fR" 4
  .IX Item "-finit-integer=n"
! .IP "\fB\-finit\-real=<zero|inf|\-inf|nan|snan>\fR" 4
  .IX Item "-finit-real=<zero|inf|-inf|nan|snan>"
! .IP "\fB\-finit\-logical=<true|false>\fR" 4
  .IX Item "-finit-logical=<true|false>"
! .IP "\fB\-finit\-character=\fR\fIn\fR" 4
  .IX Item "-finit-character=n"
  .PD
  The \fB\-finit\-local\-zero\fR option instructs the compiler to
  initialize local \f(CW\*(C`INTEGER\*(C'\fR, \f(CW\*(C`REAL\*(C'\fR, and \f(CW\*(C`COMPLEX\*(C'\fR
  variables to zero, \f(CW\*(C`LOGICAL\*(C'\fR variables to false, and
! \&\f(CW\*(C`CHARACTER\*(C'\fR variables to a string of null bytes.  Finer-grained
  initialization options are provided by the
  \&\fB\-finit\-integer=\fR\fIn\fR,
  \&\fB\-finit\-real=<zero|inf|\-inf|nan|snan>\fR (which also initializes
  the real and imaginary parts of local \f(CW\*(C`COMPLEX\*(C'\fR variables),
  \&\fB\-finit\-logical=<true|false>\fR, and
! \&\fB\-finit\-character=\fR\fIn\fR (where \fIn\fR is an \s-1ASCII\s0 character
  value) options.
  .Sp
  With \fB\-finit\-derived\fR, components of derived type variables are
--- 1691,1725 ----
  .Sp
  The default value for \fIn\fR is 30.  The \f(CW\*(C`\-fblas\-matmul\-limit\*(C'\fR
  can be used to change this value.
! .IP \fB\-frecursive\fR 4
  .IX Item "-frecursive"
  Allow indirect recursion by forcing all local arrays to be allocated
  on the stack. This flag cannot be used together with
  \&\fB\-fmax\-stack\-var\-size=\fR or \fB\-fno\-automatic\fR.
! .IP \fB\-finit\-local\-zero\fR 4
  .IX Item "-finit-local-zero"
  .PD 0
! .IP \fB\-finit\-derived\fR 4
  .IX Item "-finit-derived"
! .IP \fB\-finit\-integer=\fR\fIn\fR 4
  .IX Item "-finit-integer=n"
! .IP \fB\-finit\-real=<zero|inf|\-inf|nan|snan>\fR 4
  .IX Item "-finit-real=<zero|inf|-inf|nan|snan>"
! .IP \fB\-finit\-logical=<true|false>\fR 4
  .IX Item "-finit-logical=<true|false>"
! .IP \fB\-finit\-character=\fR\fIn\fR 4
  .IX Item "-finit-character=n"
  .PD
  The \fB\-finit\-local\-zero\fR option instructs the compiler to
  initialize local \f(CW\*(C`INTEGER\*(C'\fR, \f(CW\*(C`REAL\*(C'\fR, and \f(CW\*(C`COMPLEX\*(C'\fR
  variables to zero, \f(CW\*(C`LOGICAL\*(C'\fR variables to false, and
! \&\f(CW\*(C`CHARACTER\*(C'\fR variables to a string of null bytes.  Finer\-grained
  initialization options are provided by the
  \&\fB\-finit\-integer=\fR\fIn\fR,
  \&\fB\-finit\-real=<zero|inf|\-inf|nan|snan>\fR (which also initializes
  the real and imaginary parts of local \f(CW\*(C`COMPLEX\*(C'\fR variables),
  \&\fB\-finit\-logical=<true|false>\fR, and
! \&\fB\-finit\-character=\fR\fIn\fR (where \fIn\fR is an ASCII character
  value) options.
  .Sp
  With \fB\-finit\-derived\fR, components of derived type variables are
*************** an explicit \fB\-finit\-*\fR flag are tr
*** 1800,1810 ****
  .Sp
  These options do not initialize
  .RS 4
! .IP "*" 4
  objects with the \f(CW\*(C`POINTER\*(C'\fR attribute
! .IP "*" 4
  allocatable arrays
! .IP "*" 4
  variables that appear in an \f(CW\*(C`EQUIVALENCE\*(C'\fR statement.
  .RE
  .RS 4
--- 1729,1739 ----
  .Sp
  These options do not initialize
  .RS 4
! .IP * 4
  objects with the \f(CW\*(C`POINTER\*(C'\fR attribute
! .IP * 4
  allocatable arrays
! .IP * 4
  variables that appear in an \f(CW\*(C`EQUIVALENCE\*(C'\fR statement.
  .RE
  .RS 4
*************** variables that appear in an \f(CW\*(C`EQ
*** 1813,1824 ****
  .Sp
  Note that the \fB\-finit\-real=nan\fR option initializes \f(CW\*(C`REAL\*(C'\fR
  and \f(CW\*(C`COMPLEX\*(C'\fR variables with a quiet NaN. For a signalling NaN
! use \fB\-finit\-real=snan\fR; note, however, that compile-time
  optimizations may convert them into quiet NaN and that trapping
  needs to be enabled (e.g. via \fB\-ffpe\-trap\fR).
  .Sp
  The \fB\-finit\-integer\fR option parses the value into an
! integer of type \f(CW\*(C`INTEGER(kind=C_LONG)\*(C'\fR on the host.  Said value
  is then assigned to the integer variables in the Fortran code, which
  might result in wraparound if the value is too large for the kind.
  .Sp
--- 1742,1753 ----
  .Sp
  Note that the \fB\-finit\-real=nan\fR option initializes \f(CW\*(C`REAL\*(C'\fR
  and \f(CW\*(C`COMPLEX\*(C'\fR variables with a quiet NaN. For a signalling NaN
! use \fB\-finit\-real=snan\fR; note, however, that compile\-time
  optimizations may convert them into quiet NaN and that trapping
  needs to be enabled (e.g. via \fB\-ffpe\-trap\fR).
  .Sp
  The \fB\-finit\-integer\fR option parses the value into an
! integer of type \f(CWINTEGER(kind=C_LONG)\fR on the host.  Said value
  is then assigned to the integer variables in the Fortran code, which
  might result in wraparound if the value is too large for the kind.
  .Sp
*************** Finally, note that enabling any of the \
*** 1826,1832 ****
  silences warnings that would have been emitted by \fB\-Wuninitialized\fR
  for the affected local variables.
  .RE
! .IP "\fB\-falign\-commons\fR" 4
  .IX Item "-falign-commons"
  By default, \fBgfortran\fR enforces proper alignment of all variables in a
  \&\f(CW\*(C`COMMON\*(C'\fR block by padding them as needed. On certain platforms this is mandatory,
--- 1755,1761 ----
  silences warnings that would have been emitted by \fB\-Wuninitialized\fR
  for the affected local variables.
  .RE
! .IP \fB\-falign\-commons\fR 4
  .IX Item "-falign-commons"
  By default, \fBgfortran\fR enforces proper alignment of all variables in a
  \&\f(CW\*(C`COMMON\*(C'\fR block by padding them as needed. On certain platforms this is mandatory,
*************** consistent data types everywhere, this p
*** 1836,1842 ****
  same form of this option should be used for all files that share a \f(CW\*(C`COMMON\*(C'\fR block.
  To avoid potential alignment issues in \f(CW\*(C`COMMON\*(C'\fR blocks, it is recommended to order
  objects from largest to smallest.
! .IP "\fB\-fno\-protect\-parens\fR" 4
  .IX Item "-fno-protect-parens"
  By default the parentheses in expression are honored for all optimization
  levels such that the compiler does not do any reassociation. Using
--- 1765,1771 ----
  same form of this option should be used for all files that share a \f(CW\*(C`COMMON\*(C'\fR block.
  To avoid potential alignment issues in \f(CW\*(C`COMMON\*(C'\fR blocks, it is recommended to order
  objects from largest to smallest.
! .IP \fB\-fno\-protect\-parens\fR 4
  .IX Item "-fno-protect-parens"
  By default the parentheses in expression are honored for all optimization
  levels such that the compiler does not do any reassociation. Using
*************** levels such that the compiler does not d
*** 1845,1857 ****
  optimization \fB\-fno\-signed\-zeros\fR and \fB\-fno\-trapping\-math\fR
  need to be in effect. The parentheses protection is enabled by default, unless
  \&\fB\-Ofast\fR is given.
! .IP "\fB\-frealloc\-lhs\fR" 4
  .IX Item "-frealloc-lhs"
! An allocatable left-hand side of an intrinsic assignment is automatically
  (re)allocated if it is either unallocated or has a different shape. The
  option is enabled by default except when \fB\-std=f95\fR is given. See
  also \fB\-Wrealloc\-lhs\fR.
! .IP "\fB\-faggressive\-function\-elimination\fR" 4
  .IX Item "-faggressive-function-elimination"
  Functions with identical argument lists are eliminated within
  statements, regardless of whether these functions are marked
--- 1774,1786 ----
  optimization \fB\-fno\-signed\-zeros\fR and \fB\-fno\-trapping\-math\fR
  need to be in effect. The parentheses protection is enabled by default, unless
  \&\fB\-Ofast\fR is given.
! .IP \fB\-frealloc\-lhs\fR 4
  .IX Item "-frealloc-lhs"
! An allocatable left\-hand side of an intrinsic assignment is automatically
  (re)allocated if it is either unallocated or has a different shape. The
  option is enabled by default except when \fB\-std=f95\fR is given. See
  also \fB\-Wrealloc\-lhs\fR.
! .IP \fB\-faggressive\-function\-elimination\fR 4
  .IX Item "-faggressive-function-elimination"
  Functions with identical argument lists are eliminated within
  statements, regardless of whether these functions are marked
*************** statements, regardless of whether these
*** 1863,1871 ****
  .Sp
  there is only a single call to \f(CW\*(C`f\*(C'\fR.  This option only works
  if \fB\-ffrontend\-optimize\fR is in effect.
! .IP "\fB\-ffrontend\-optimize\fR" 4
  .IX Item "-ffrontend-optimize"
! This option performs front-end optimization, based on manipulating
  parts of the Fortran parse tree.  Enabled by default by any \fB\-O\fR option
  except \fB\-O0\fR and \fB\-Og\fR.  Optimizations enabled by this option
  include:
--- 1792,1800 ----
  .Sp
  there is only a single call to \f(CW\*(C`f\*(C'\fR.  This option only works
  if \fB\-ffrontend\-optimize\fR is in effect.
! .IP \fB\-ffrontend\-optimize\fR 4
  .IX Item "-ffrontend-optimize"
! This option performs front\-end optimization, based on manipulating
  parts of the Fortran parse tree.  Enabled by default by any \fB\-O\fR option
  except \fB\-O0\fR and \fB\-Og\fR.  Optimizations enabled by this option
  include:
*************** include:
*** 1885,1939 ****
  .ie n .IP "*<short\-circuiting of logical operators ("".AND."" and "".OR."").>" 4
  .el .IP "*<short\-circuiting of logical operators (\f(CW.AND.\fR and \f(CW.OR.\fR).>" 4
  .IX Item "*<short-circuiting of logical operators (.AND. and .OR.).>"
  .RE
  .RS 4
- .PD
  .Sp
  It can be deselected by specifying \fB\-fno\-frontend\-optimize\fR.
  .RE
! .IP "\fB\-ffrontend\-loop\-interchange\fR" 4
  .IX Item "-ffrontend-loop-interchange"
  Attempt to interchange loops in the Fortran front end where
  profitable.  Enabled by default by any \fB\-O\fR option.
  At the moment, this option only affects \f(CW\*(C`FORALL\*(C'\fR and
  \&\f(CW\*(C`DO CONCURRENT\*(C'\fR statements with several forall triplets.
! .SH "ENVIRONMENT"
  .IX Header "ENVIRONMENT"
  The \fBgfortran\fR compiler currently does not make use of any environment
  variables to control its operation above and beyond those
  that affect the operation of \fBgcc\fR.
! .SH "BUGS"
  .IX Header "BUGS"
  For instructions on reporting bugs, see
  <\fBhttps://gcc.gnu.org/bugs/\fR>.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf\-funding\fR\|(7),
! \&\fIcpp\fR\|(1), \fIgcov\fR\|(1), \fIgcc\fR\|(1), \fIas\fR\|(1), \fIld\fR\|(1), \fIgdb\fR\|(1), \fIdbx\fR\|(1)
  and the Info entries for \fIgcc\fR, \fIcpp\fR, \fIgfortran\fR, \fIas\fR,
  \&\fIld\fR, \fIbinutils\fR and \fIgdb\fR.
! .SH "AUTHOR"
  .IX Header "AUTHOR"
! See the Info entry for \fBgfortran\fR for contributors to \s-1GCC\s0 and
! \&\s-1GNU\s0 Fortran.
! .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 2004\-2025 Free Software Foundation, Inc.
  .PP
  Permission is granted to copy, distribute and/or modify this document
! under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 or
  any later version published by the Free Software Foundation; with the
! Invariant Sections being \*(L"Funding Free Software\*(R", the Front-Cover
! Texts being (a) (see below), and with the Back-Cover Texts being (b)
! (see below).  A copy of the license is included in the \fIgfdl\fR\|(7) man page.
  .PP
! (a) The \s-1FSF\s0's Front-Cover Text is:
  .PP
  .Vb 1
  \&     A GNU Manual
  .Ve
  .PP
! (b) The \s-1FSF\s0's Back-Cover Text is:
  .PP
  .Vb 3
  \&     You have freedom to copy and modify this GNU Manual, like GNU
--- 1814,1868 ----
  .ie n .IP "*<short\-circuiting of logical operators ("".AND."" and "".OR."").>" 4
  .el .IP "*<short\-circuiting of logical operators (\f(CW.AND.\fR and \f(CW.OR.\fR).>" 4
  .IX Item "*<short-circuiting of logical operators (.AND. and .OR.).>"
+ .PD
  .RE
  .RS 4
  .Sp
  It can be deselected by specifying \fB\-fno\-frontend\-optimize\fR.
  .RE
! .IP \fB\-ffrontend\-loop\-interchange\fR 4
  .IX Item "-ffrontend-loop-interchange"
  Attempt to interchange loops in the Fortran front end where
  profitable.  Enabled by default by any \fB\-O\fR option.
  At the moment, this option only affects \f(CW\*(C`FORALL\*(C'\fR and
  \&\f(CW\*(C`DO CONCURRENT\*(C'\fR statements with several forall triplets.
! .SH ENVIRONMENT
  .IX Header "ENVIRONMENT"
  The \fBgfortran\fR compiler currently does not make use of any environment
  variables to control its operation above and beyond those
  that affect the operation of \fBgcc\fR.
! .SH BUGS
  .IX Header "BUGS"
  For instructions on reporting bugs, see
  <\fBhttps://gcc.gnu.org/bugs/\fR>.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fBgpl\fR\|(7), \fBgfdl\fR\|(7), \fBfsf\-funding\fR\|(7),
! \&\fBcpp\fR\|(1), \fBgcov\fR\|(1), \fBgcc\fR\|(1), \fBas\fR\|(1), \fBld\fR\|(1), \fBgdb\fR\|(1), \fBdbx\fR\|(1)
  and the Info entries for \fIgcc\fR, \fIcpp\fR, \fIgfortran\fR, \fIas\fR,
  \&\fIld\fR, \fIbinutils\fR and \fIgdb\fR.
! .SH AUTHOR
  .IX Header "AUTHOR"
! See the Info entry for \fBgfortran\fR for contributors to GCC and
! GNU Fortran.
! .SH COPYRIGHT
  .IX Header "COPYRIGHT"
  Copyright (c) 2004\-2025 Free Software Foundation, Inc.
  .PP
  Permission is granted to copy, distribute and/or modify this document
! under the terms of the GNU Free Documentation License, Version 1.3 or
  any later version published by the Free Software Foundation; with the
! Invariant Sections being "Funding Free Software", the Front\-Cover
! Texts being (a) (see below), and with the Back\-Cover Texts being (b)
! (see below).  A copy of the license is included in the \fBgfdl\fR\|(7) man page.
  .PP
! (a) The FSF\*(Aqs Front\-Cover Text is:
  .PP
  .Vb 1
  \&     A GNU Manual
  .Ve
  .PP
! (b) The FSF\*(Aqs Back\-Cover Text is:
  .PP
  .Vb 3
  \&     You have freedom to copy and modify this GNU Manual, like GNU
diff -Nrcpad gcc-15.2.0/gcc/doc/gm2.1 gcc-15.3.0/gcc/doc/gm2.1
*** gcc-15.2.0/gcc/doc/gm2.1	Fri Aug  8 07:00:02 2025
--- gcc-15.3.0/gcc/doc/gm2.1	Fri Jun 12 06:18:08 2026
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
--- 1,5 ----
! .\" -*- mode: troff; coding: utf-8 -*-
! .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
***************
*** 15,43 ****
  .ft R
  .fi
  ..
! .\" Set up some character translations and predefined strings.  \*(-- will
! .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
! .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
! .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
! .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
! .\" nothing in troff, for use with C<>.
! .tr \(*W-
! .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
  .ie n \{\
- .    ds -- \(*W-
- .    ds PI pi
- .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
- .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
- .    ds L" ""
- .    ds R" ""
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
- .    ds -- \|\(em\|
- .    ds PI \(*p
- .    ds L" ``
- .    ds R" ''
  .    ds C`
  .    ds C'
  'br\}
--- 16,27 ----
  .ft R
  .fi
  ..
! .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
  .ie n \{\
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
  .    ds C`
  .    ds C'
  'br\}
***************
*** 54,170 ****
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .if !\nF .nr F 0
! .if \nF>0 \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    if !\nF==2 \{\
! .        nr % 0
! .        nr F 2
  .    \}
  .\}
  .\"
! .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
! .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
! .    \" fudge factors for nroff and troff
! .if n \{\
! .    ds #H 0
! .    ds #V .8m
! .    ds #F .3m
! .    ds #[ \f1
! .    ds #] \fP
! .\}
! .if t \{\
! .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
! .    ds #V .6m
! .    ds #F 0
! .    ds #[ \&
! .    ds #] \&
! .\}
! .    \" simple accents for nroff and troff
! .if n \{\
! .    ds ' \&
! .    ds ` \&
! .    ds ^ \&
! .    ds , \&
! .    ds ~ ~
! .    ds /
! .\}
! .if t \{\
! .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
! .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
! .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
! .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
! .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
! .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
! .\}
! .    \" troff and (daisy-wheel) nroff accents
! .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
! .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
! .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
! .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
! .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
! .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
! .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
! .ds ae a\h'-(\w'a'u*4/10)'e
! .ds Ae A\h'-(\w'A'u*4/10)'E
! .    \" corrections for vroff
! .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
! .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
! .    \" for low resolution devices (crt and lpr)
! .if \n(.H>23 .if \n(.V>19 \
! \{\
! .    ds : e
! .    ds 8 ss
! .    ds o a
! .    ds d- d\h'-1'\(ga
! .    ds D- D\h'-1'\(hy
! .    ds th \o'bp'
! .    ds Th \o'LP'
! .    ds ae ae
! .    ds Ae AE
! .\}
! .rm #[ #] #H #V #F C
  .\" ========================================================================
  .\"
  .IX Title "GM2 1"
! .TH GM2 1 "2025-08-08" "gcc-15.2.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH "NAME"
  gm2 \- The GNU Modula\-2 Compiler
! .SH "SYNOPSIS"
  .IX Header "SYNOPSIS"
! .SH "DESCRIPTION"
  .IX Header "DESCRIPTION"
! .SH "OPTIONS"
  .IX Header "OPTIONS"
  For any given input file, the file name suffix determines what kind of
  compilation is done.  The following kinds of input file names are supported:
! .IP "\fIfile\fR\fB.mod\fR" 4
  .IX Item "file.mod"
  Modula\-2 implementation or program source files.  See the
  \&\fB\-fmod=\fR option if you wish to compile a project which uses a
  different source file extension.
! .IP "\fIfile\fR\fB.def\fR" 4
  .IX Item "file.def"
  Modula\-2 definition module source files.  Definition modules are not
! compiled separately, in \s-1GNU\s0 Modula\-2 definition modules are parsed as
  required when program or implementation modules are compiled.  See the
  \&\fB\-fdef=\fR option if you wish to compile a project which uses a
  different source file extension.
  .PP
  You can specify more than one input file on the \fBgm2\fR command line,
  .ie n .IP """\-g""" 4
! .el .IP "\f(CW\-g\fR" 4
  .IX Item "-g"
  create debugging information so that debuggers such as \fIgdb\fR
  can inspect and control executable.
  .ie n .IP """\-I""" 4
! .el .IP "\f(CW\-I\fR" 4
  .IX Item "-I"
  used to specify the search path for definition and implementation
  modules.  An example is:  \f(CW\*(C`gm2 \-g \-c \-I.:../../libs foo.mod\*(C'\fR.
--- 38,99 ----
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .nr rF 0
! .if \n(.g .if rF .nr rF 1
! .if (\n(rF:(\n(.g==0)) \{\
! .    if \nF \{\
! .        de IX
! .        tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .        if !\nF==2 \{\
! .            nr % 0
! .            nr F 2
! .        \}
  .    \}
  .\}
+ .rr rF
  .\"
! .\" Required to disable full justification in groff 1.23.0.
! .if n .ds AD l
  .\" ========================================================================
  .\"
  .IX Title "GM2 1"
! .TH GM2 1 2026-06-12 gcc-15.3.0 GNU
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH NAME
  gm2 \- The GNU Modula\-2 Compiler
! .SH SYNOPSIS
  .IX Header "SYNOPSIS"
! .SH DESCRIPTION
  .IX Header "DESCRIPTION"
! .SH OPTIONS
  .IX Header "OPTIONS"
  For any given input file, the file name suffix determines what kind of
  compilation is done.  The following kinds of input file names are supported:
! .IP \fIfile\fR\fB.mod\fR 4
  .IX Item "file.mod"
  Modula\-2 implementation or program source files.  See the
  \&\fB\-fmod=\fR option if you wish to compile a project which uses a
  different source file extension.
! .IP \fIfile\fR\fB.def\fR 4
  .IX Item "file.def"
  Modula\-2 definition module source files.  Definition modules are not
! compiled separately, in GNU Modula\-2 definition modules are parsed as
  required when program or implementation modules are compiled.  See the
  \&\fB\-fdef=\fR option if you wish to compile a project which uses a
  different source file extension.
  .PP
  You can specify more than one input file on the \fBgm2\fR command line,
  .ie n .IP """\-g""" 4
! .el .IP \f(CW\-g\fR 4
  .IX Item "-g"
  create debugging information so that debuggers such as \fIgdb\fR
  can inspect and control executable.
  .ie n .IP """\-I""" 4
! .el .IP \f(CW\-I\fR 4
  .IX Item "-I"
  used to specify the search path for definition and implementation
  modules.  An example is:  \f(CW\*(C`gm2 \-g \-c \-I.:../../libs foo.mod\*(C'\fR.
*************** If this option is not specified then the
*** 172,194 ****
  which consists of the current directory followed by the appropriate
  language dialect library directories.
  .ie n .IP """\-fauto\-init""" 4
! .el .IP "\f(CW\-fauto\-init\fR" 4
  .IX Item "-fauto-init"
! turns on auto initialization of pointers to \s-1NIL.\s0  Whenever a block is
  created all pointers declared within this scope will have their
! addresses assigned to \s-1NIL.\s0
  .ie n .IP """\-fbounds""" 4
! .el .IP "\f(CW\-fbounds\fR" 4
  .IX Item "-fbounds"
  turns on run time subrange, array index and indirection via \f(CW\*(C`NIL\*(C'\fR
  pointer checking.
  .ie n .IP """\-fcase""" 4
! .el .IP "\f(CW\-fcase\fR" 4
  .IX Item "-fcase"
  turns on compile time checking to check whether a \f(CW\*(C`CASE\*(C'\fR
  statement requires an \f(CW\*(C`ELSE\*(C'\fR clause when on was not specified.
  .ie n .IP """\-fcpp""" 4
! .el .IP "\f(CW\-fcpp\fR" 4
  .IX Item "-fcpp"
  preprocess the source with \fBcpp \-lang\-asm \-traditional\-cpp\fR
  For further details about these options 
--- 101,123 ----
  which consists of the current directory followed by the appropriate
  language dialect library directories.
  .ie n .IP """\-fauto\-init""" 4
! .el .IP \f(CW\-fauto\-init\fR 4
  .IX Item "-fauto-init"
! turns on auto initialization of pointers to NIL.  Whenever a block is
  created all pointers declared within this scope will have their
! addresses assigned to NIL.
  .ie n .IP """\-fbounds""" 4
! .el .IP \f(CW\-fbounds\fR 4
  .IX Item "-fbounds"
  turns on run time subrange, array index and indirection via \f(CW\*(C`NIL\*(C'\fR
  pointer checking.
  .ie n .IP """\-fcase""" 4
! .el .IP \f(CW\-fcase\fR 4
  .IX Item "-fcase"
  turns on compile time checking to check whether a \f(CW\*(C`CASE\*(C'\fR
  statement requires an \f(CW\*(C`ELSE\*(C'\fR clause when on was not specified.
  .ie n .IP """\-fcpp""" 4
! .el .IP \f(CW\-fcpp\fR 4
  .IX Item "-fcpp"
  preprocess the source with \fBcpp \-lang\-asm \-traditional\-cpp\fR
  For further details about these options 
*************** If \fB\-fcpp\fR is supplied then all def
*** 196,261 ****
  implementation modules which are parsed will be prepossessed by
  \&\fBcpp\fR.
  .ie n .IP """\-fdebug\-builtins""" 4
! .el .IP "\f(CW\-fdebug\-builtins\fR" 4
  .IX Item "-fdebug-builtins"
  call a real function, rather than the builtin equivalent.  This can
  be useful for debugging parameter values to a builtin function as
  it allows users to single step code into an intrinsic function.
  .ie n .IP """\-fdef=""" 4
! .el .IP "\f(CW\-fdef=\fR" 4
  .IX Item "-fdef="
  recognize the specified suffix as a definition module filename.
  The default implementation and module filename suffix is \fI.def\fR.
! If this option is used \s-1GNU\s0 Modula\-2 will still fall back to this
  default if a requested definition module is not found.
  .ie n .IP """\-fdump\-system\-exports""" 4
! .el .IP "\f(CW\-fdump\-system\-exports\fR" 4
  .IX Item "-fdump-system-exports"
  display all inbuilt system items.
  This is an internal command line option.
  .ie n .IP """\-fexceptions""" 4
! .el .IP "\f(CW\-fexceptions\fR" 4
  .IX Item "-fexceptions"
  turn on exception handling code.  By default this option is on.
  Exception handling can be disabled by \fB\-fno\-exceptions\fR
  and no references are made to the run time exception libraries.
  .ie n .IP """\-fextended\-opaque""" 4
! .el .IP "\f(CW\-fextended\-opaque\fR" 4
  .IX Item "-fextended-opaque"
! allows opaque types to be implemented as any type.  This is a \s-1GNU\s0
  Modula\-2 extension and it requires that the implementation module
  defining the opaque type is available so that it can be resolved when
  compiling the module which imports the opaque type.
  .ie n .IP """\-ffloatvalue""" 4
! .el .IP "\f(CW\-ffloatvalue\fR" 4
  .IX Item "-ffloatvalue"
  turns on run time checking to check whether a floating point number is
  about to exceed range.
! .ie n .IP """\-fgen\-module\-list=\fIfilename\fP""" 4
! .el .IP "\f(CW\-fgen\-module\-list=\f(CIfilename\f(CW\fR" 4
  .IX Item "-fgen-module-list=filename"
  attempt to find all modules when linking and generate a module list.
  If the \fIfilename\fR is \fB\-\fR then the contents are not written
  and only used to force the linking of all module ctors.
  This option cannot be used if \fB\-fuse\-list=\fR is enabled.
  .ie n .IP """\-findex""" 4
! .el .IP "\f(CW\-findex\fR" 4
  .IX Item "-findex"
  generate code to check whether array index values are out of bounds.
  Array index checking can be disabled via \fB\-fno\-index\fR.
  .ie n .IP """\-fiso""" 4
! .el .IP "\f(CW\-fiso\fR" 4
  .IX Item "-fiso"
! turn on \s-1ISO\s0 standard features.  Currently this enables the \s-1ISO\s0
  \&\f(CW\*(C`SYSTEM\*(C'\fR module and alters the default library search path so
! that the \s-1ISO\s0 libraries are searched before the \s-1PIM\s0 libraries.  It also
  effects the behavior of \f(CW\*(C`DIV\*(C'\fR and \f(CW\*(C`MOD\*(C'\fR operators.
  .ie n .IP """\-flibs=""" 4
! .el .IP "\f(CW\-flibs=\fR" 4
  .IX Item "-flibs="
  modifies the default library search path.  The libraries supplied are:
  m2pim, m2iso, m2min, m2log and m2cor.  These map onto the
! Programming in Modula\-2 base libraries, \s-1ISO\s0 standard libraries, minimal
  library support, Logitech compatible library and Programming in
  Modula\-2 with coroutines.
  Multiple libraries can be specified and are comma separated with precedence
--- 125,190 ----
  implementation modules which are parsed will be prepossessed by
  \&\fBcpp\fR.
  .ie n .IP """\-fdebug\-builtins""" 4
! .el .IP \f(CW\-fdebug\-builtins\fR 4
  .IX Item "-fdebug-builtins"
  call a real function, rather than the builtin equivalent.  This can
  be useful for debugging parameter values to a builtin function as
  it allows users to single step code into an intrinsic function.
  .ie n .IP """\-fdef=""" 4
! .el .IP \f(CW\-fdef=\fR 4
  .IX Item "-fdef="
  recognize the specified suffix as a definition module filename.
  The default implementation and module filename suffix is \fI.def\fR.
! If this option is used GNU Modula\-2 will still fall back to this
  default if a requested definition module is not found.
  .ie n .IP """\-fdump\-system\-exports""" 4
! .el .IP \f(CW\-fdump\-system\-exports\fR 4
  .IX Item "-fdump-system-exports"
  display all inbuilt system items.
  This is an internal command line option.
  .ie n .IP """\-fexceptions""" 4
! .el .IP \f(CW\-fexceptions\fR 4
  .IX Item "-fexceptions"
  turn on exception handling code.  By default this option is on.
  Exception handling can be disabled by \fB\-fno\-exceptions\fR
  and no references are made to the run time exception libraries.
  .ie n .IP """\-fextended\-opaque""" 4
! .el .IP \f(CW\-fextended\-opaque\fR 4
  .IX Item "-fextended-opaque"
! allows opaque types to be implemented as any type.  This is a GNU
  Modula\-2 extension and it requires that the implementation module
  defining the opaque type is available so that it can be resolved when
  compiling the module which imports the opaque type.
  .ie n .IP """\-ffloatvalue""" 4
! .el .IP \f(CW\-ffloatvalue\fR 4
  .IX Item "-ffloatvalue"
  turns on run time checking to check whether a floating point number is
  about to exceed range.
! .ie n .IP """\-fgen\-module\-list=\fIfilename\fR""" 4
! .el .IP \f(CW\-fgen\-module\-list=\fR\f(CIfilename\fR\f(CW\fR 4
  .IX Item "-fgen-module-list=filename"
  attempt to find all modules when linking and generate a module list.
  If the \fIfilename\fR is \fB\-\fR then the contents are not written
  and only used to force the linking of all module ctors.
  This option cannot be used if \fB\-fuse\-list=\fR is enabled.
  .ie n .IP """\-findex""" 4
! .el .IP \f(CW\-findex\fR 4
  .IX Item "-findex"
  generate code to check whether array index values are out of bounds.
  Array index checking can be disabled via \fB\-fno\-index\fR.
  .ie n .IP """\-fiso""" 4
! .el .IP \f(CW\-fiso\fR 4
  .IX Item "-fiso"
! turn on ISO standard features.  Currently this enables the ISO
  \&\f(CW\*(C`SYSTEM\*(C'\fR module and alters the default library search path so
! that the ISO libraries are searched before the PIM libraries.  It also
  effects the behavior of \f(CW\*(C`DIV\*(C'\fR and \f(CW\*(C`MOD\*(C'\fR operators.
  .ie n .IP """\-flibs=""" 4
! .el .IP \f(CW\-flibs=\fR 4
  .IX Item "-flibs="
  modifies the default library search path.  The libraries supplied are:
  m2pim, m2iso, m2min, m2log and m2cor.  These map onto the
! Programming in Modula\-2 base libraries, ISO standard libraries, minimal
  library support, Logitech compatible library and Programming in
  Modula\-2 with coroutines.
  Multiple libraries can be specified and are comma separated with precedence
*************** the they provide the base modules which
*** 266,302 ****
  The option \fB\-fno\-libs=\-\fR disables the \fBgm2\fR driver from
  modifying the search and library paths.
  .ie n .IP """\-static\-libgm2""" 4
! .el .IP "\f(CW\-static\-libgm2\fR" 4
  .IX Item "-static-libgm2"
  On systems that provide the m2 runtimes as both shared and static libraries,
  this option forces the use of the static version.
  .ie n .IP """\-fm2\-debug\-trace=""" 4
! .el .IP "\f(CW\-fm2\-debug\-trace=\fR" 4
  .IX Item "-fm2-debug-trace="
  turn on trace debugging using a comma separated list:
  \&\fBline,token,quad,all\fR.  This is an internal command line option.
  .ie n .IP """\-fm2\-dump=""" 4
! .el .IP "\f(CW\-fm2\-dump=\fR" 4
  .IX Item "-fm2-dump="
  enable dumping of modula\-2 internal representation of data structures
  using a comma separated list.  The list can contain:
  \&\fBquad,gimple,decl,all\fR.
! .ie n .IP """\-fm2\-dump\-decl=\fIfilestem\fP""" 4
! .el .IP "\f(CW\-fm2\-dump\-decl=\f(CIfilestem\f(CW\fR" 4
  .IX Item "-fm2-dump-decl=filestem"
  dump the modula\-2 representation of a symbol to the \fIfilestem\fR
  specified.  This option only takes effect if the
  \&\fB\-fm2\-dump\-filter\fR is specified.
! .ie n .IP """\-fm2\-dump\-gimple=\fIfilestem\fP""" 4
! .el .IP "\f(CW\-fm2\-dump\-gimple=\f(CIfilestem\f(CW\fR" 4
  .IX Item "-fm2-dump-gimple=filestem"
  dump modula\-2 gimple representation to the \fIfilestem\fR specified.
! .ie n .IP """\-fm2\-dump\-quad=\fIfilestem\fP""" 4
! .el .IP "\f(CW\-fm2\-dump\-quad=\f(CIfilestem\f(CW\fR" 4
  .IX Item "-fm2-dump-quad=filestem"
  dump quadruple representation to the \fIfilestem\fR specified.
! .ie n .IP """\-fm2\-dump\-filter=\fBrules\fP""" 4
! .el .IP "\f(CW\-fm2\-dump\-filter=\f(CBrules\f(CW\fR" 4
  .IX Item "-fm2-dump-filter=rules"
  filter the language dumps \fB\-fdump\-lang\-decl\fR,
  \&\fB\-fdump\-lang\-gimple\fR and\fB\-fdump\-lang\-quad\fR
--- 195,231 ----
  The option \fB\-fno\-libs=\-\fR disables the \fBgm2\fR driver from
  modifying the search and library paths.
  .ie n .IP """\-static\-libgm2""" 4
! .el .IP \f(CW\-static\-libgm2\fR 4
  .IX Item "-static-libgm2"
  On systems that provide the m2 runtimes as both shared and static libraries,
  this option forces the use of the static version.
  .ie n .IP """\-fm2\-debug\-trace=""" 4
! .el .IP \f(CW\-fm2\-debug\-trace=\fR 4
  .IX Item "-fm2-debug-trace="
  turn on trace debugging using a comma separated list:
  \&\fBline,token,quad,all\fR.  This is an internal command line option.
  .ie n .IP """\-fm2\-dump=""" 4
! .el .IP \f(CW\-fm2\-dump=\fR 4
  .IX Item "-fm2-dump="
  enable dumping of modula\-2 internal representation of data structures
  using a comma separated list.  The list can contain:
  \&\fBquad,gimple,decl,all\fR.
! .ie n .IP """\-fm2\-dump\-decl=\fIfilestem\fR""" 4
! .el .IP \f(CW\-fm2\-dump\-decl=\fR\f(CIfilestem\fR\f(CW\fR 4
  .IX Item "-fm2-dump-decl=filestem"
  dump the modula\-2 representation of a symbol to the \fIfilestem\fR
  specified.  This option only takes effect if the
  \&\fB\-fm2\-dump\-filter\fR is specified.
! .ie n .IP """\-fm2\-dump\-gimple=\fIfilestem\fR""" 4
! .el .IP \f(CW\-fm2\-dump\-gimple=\fR\f(CIfilestem\fR\f(CW\fR 4
  .IX Item "-fm2-dump-gimple=filestem"
  dump modula\-2 gimple representation to the \fIfilestem\fR specified.
! .ie n .IP """\-fm2\-dump\-quad=\fIfilestem\fR""" 4
! .el .IP \f(CW\-fm2\-dump\-quad=\fR\f(CIfilestem\fR\f(CW\fR 4
  .IX Item "-fm2-dump-quad=filestem"
  dump quadruple representation to the \fIfilestem\fR specified.
! .ie n .IP """\-fm2\-dump\-filter=\fBrules\fR""" 4
! .el .IP \f(CW\-fm2\-dump\-filter=\fR\f(CBrules\fR\f(CW\fR 4
  .IX Item "-fm2-dump-filter=rules"
  filter the language dumps \fB\-fdump\-lang\-decl\fR,
  \&\fB\-fdump\-lang\-gimple\fR and\fB\-fdump\-lang\-quad\fR
*************** the previous forms could be:
*** 311,323 ****
  \&\f(CW\*(C`\-fm2\-dump\-filter=m2pim.StrIO.WriteString\*(C'\fR and
  \&\f(CW\*(C`\-fm2\-dump\-filter=StrLib.mod:StrIO.WriteString\*(C'\fR.
  .ie n .IP """\-fm2\-file\-offset\-bits=""" 4
! .el .IP "\f(CW\-fm2\-file\-offset\-bits=\fR" 4
  .IX Item "-fm2-file-offset-bits="
  force the type \f(CW\*(C`SYSTEM.COFF_T\*(C'\fR to be built using the specified
  number of bits.  If this option is not used then default is
  \&\f(CW\*(C`CSSIZE_T\*(C'\fR bits.
  .ie n .IP """\-fm2\-g""" 4
! .el .IP "\f(CW\-fm2\-g\fR" 4
  .IX Item "-fm2-g"
  improve the debugging experience for new programmers at the expense
  of generating \f(CW\*(C`nop\*(C'\fR instructions if necessary to ensure single
--- 240,252 ----
  \&\f(CW\*(C`\-fm2\-dump\-filter=m2pim.StrIO.WriteString\*(C'\fR and
  \&\f(CW\*(C`\-fm2\-dump\-filter=StrLib.mod:StrIO.WriteString\*(C'\fR.
  .ie n .IP """\-fm2\-file\-offset\-bits=""" 4
! .el .IP \f(CW\-fm2\-file\-offset\-bits=\fR 4
  .IX Item "-fm2-file-offset-bits="
  force the type \f(CW\*(C`SYSTEM.COFF_T\*(C'\fR to be built using the specified
  number of bits.  If this option is not used then default is
  \&\f(CW\*(C`CSSIZE_T\*(C'\fR bits.
  .ie n .IP """\-fm2\-g""" 4
! .el .IP \f(CW\-fm2\-g\fR 4
  .IX Item "-fm2-g"
  improve the debugging experience for new programmers at the expense
  of generating \f(CW\*(C`nop\*(C'\fR instructions if necessary to ensure single
*************** of this is in termination of a list of n
*** 326,365 ****
  where multiple \f(CW\*(C`END\*(C'\fR keywords are mapped onto a sequence of
  \&\f(CW\*(C`nop\*(C'\fR instructions.
  .ie n .IP """\-fm2\-lower\-case""" 4
! .el .IP "\f(CW\-fm2\-lower\-case\fR" 4
  .IX Item "-fm2-lower-case"
  render keywords in error messages using lower case.
  .ie n .IP """\-fm2\-pathname=""" 4
! .el .IP "\f(CW\-fm2\-pathname=\fR" 4
  .IX Item "-fm2-pathname="
  specify the module mangled prefix name for all modules in the
  following include paths.
  .ie n .IP """\-fm2\-pathnameI""" 4
! .el .IP "\f(CW\-fm2\-pathnameI\fR" 4
  .IX Item "-fm2-pathnameI"
  for internal use only: used by the driver to copy the user facing \fB\-I\fR
  option.
  .ie n .IP """\-fm2\-plugin""" 4
! .el .IP "\f(CW\-fm2\-plugin\fR" 4
  .IX Item "-fm2-plugin"
  insert plugin to identify run time errors at compile time (default on).
  .ie n .IP """\-fm2\-prefix=""" 4
! .el .IP "\f(CW\-fm2\-prefix=\fR" 4
  .IX Item "-fm2-prefix="
  specify the module mangled prefix name.  All exported symbols from a
  definition module will have the prefix name.
  .ie n .IP """\-fm2\-statistics""" 4
! .el .IP "\f(CW\-fm2\-statistics\fR" 4
  .IX Item "-fm2-statistics"
  generates quadruple information: number of quadruples generated,
  number of quadruples remaining after optimization and number of source
  lines compiled.
  .ie n .IP """\-fm2\-strict\-type""" 4
! .el .IP "\f(CW\-fm2\-strict\-type\fR" 4
  .IX Item "-fm2-strict-type"
  experimental flag to turn on the new strict type checker.
  .ie n .IP """\-fm2\-whole\-program""" 4
! .el .IP "\f(CW\-fm2\-whole\-program\fR" 4
  .IX Item "-fm2-whole-program"
  compile all implementation modules and program module at once.  Notice
  that you need to take care if you are compiling different dialect
--- 255,294 ----
  where multiple \f(CW\*(C`END\*(C'\fR keywords are mapped onto a sequence of
  \&\f(CW\*(C`nop\*(C'\fR instructions.
  .ie n .IP """\-fm2\-lower\-case""" 4
! .el .IP \f(CW\-fm2\-lower\-case\fR 4
  .IX Item "-fm2-lower-case"
  render keywords in error messages using lower case.
  .ie n .IP """\-fm2\-pathname=""" 4
! .el .IP \f(CW\-fm2\-pathname=\fR 4
  .IX Item "-fm2-pathname="
  specify the module mangled prefix name for all modules in the
  following include paths.
  .ie n .IP """\-fm2\-pathnameI""" 4
! .el .IP \f(CW\-fm2\-pathnameI\fR 4
  .IX Item "-fm2-pathnameI"
  for internal use only: used by the driver to copy the user facing \fB\-I\fR
  option.
  .ie n .IP """\-fm2\-plugin""" 4
! .el .IP \f(CW\-fm2\-plugin\fR 4
  .IX Item "-fm2-plugin"
  insert plugin to identify run time errors at compile time (default on).
  .ie n .IP """\-fm2\-prefix=""" 4
! .el .IP \f(CW\-fm2\-prefix=\fR 4
  .IX Item "-fm2-prefix="
  specify the module mangled prefix name.  All exported symbols from a
  definition module will have the prefix name.
  .ie n .IP """\-fm2\-statistics""" 4
! .el .IP \f(CW\-fm2\-statistics\fR 4
  .IX Item "-fm2-statistics"
  generates quadruple information: number of quadruples generated,
  number of quadruples remaining after optimization and number of source
  lines compiled.
  .ie n .IP """\-fm2\-strict\-type""" 4
! .el .IP \f(CW\-fm2\-strict\-type\fR 4
  .IX Item "-fm2-strict-type"
  experimental flag to turn on the new strict type checker.
  .ie n .IP """\-fm2\-whole\-program""" 4
! .el .IP \f(CW\-fm2\-whole\-program\fR 4
  .IX Item "-fm2-whole-program"
  compile all implementation modules and program module at once.  Notice
  that you need to take care if you are compiling different dialect
*************** modules (particularly with the negative
*** 367,436 ****
  this option, when coupled together with \f(CW\*(C`\-O3\*(C'\fR, can deliver huge
  performance improvements.
  .ie n .IP """\-fmod=""" 4
! .el .IP "\f(CW\-fmod=\fR" 4
  .IX Item "-fmod="
  recognize the specified suffix as implementation and module filenames.
  The default implementation and module filename suffix is \fI.mod\fR.
! If this option is used \s-1GNU\s0 Modula\-2 will still fall back to this
  default if it needs to read an implementation module and the specified
  suffixed filename does not exist.
  .ie n .IP """\-fnil""" 4
! .el .IP "\f(CW\-fnil\fR" 4
  .IX Item "-fnil"
  generate code to detect accessing data through a \f(CW\*(C`NIL\*(C'\fR value
  pointer.  Dereferencing checking through a \f(CW\*(C`NIL\*(C'\fR pointer can be
  disabled by \fB\-fno\-nil\fR.
  .ie n .IP """\-fpim""" 4
! .el .IP "\f(CW\-fpim\fR" 4
  .IX Item "-fpim"
! turn on \s-1PIM\s0 standard features.  Currently this enables the \s-1PIM\s0
  \&\f(CW\*(C`SYSTEM\*(C'\fR module and determines which identifiers are pervasive
  (declared in the base module).  If no other \fB\-fpim[234]\fR switch is
! used then division and modulus operators behave as defined in \s-1PIM4.\s0
  .ie n .IP """\-fpim2""" 4
! .el .IP "\f(CW\-fpim2\fR" 4
  .IX Item "-fpim2"
! turn on \s-1PIM\-2\s0 standard features.  Currently this removes \f(CW\*(C`SIZE\*(C'\fR
  from being a pervasive identifier (declared in the base module).  It
  places \f(CW\*(C`SIZE\*(C'\fR in the \f(CW\*(C`SYSTEM\*(C'\fR module.  It also effects the
  behavior of \f(CW\*(C`DIV\*(C'\fR and \f(CW\*(C`MOD\*(C'\fR operators.
  .ie n .IP """\-fpim3""" 4
! .el .IP "\f(CW\-fpim3\fR" 4
  .IX Item "-fpim3"
! turn on \s-1PIM\-3\s0 standard features.  Currently this only effects the
  behavior of \f(CW\*(C`DIV\*(C'\fR and \f(CW\*(C`MOD\*(C'\fR operators.
  .ie n .IP """\-fpim4""" 4
! .el .IP "\f(CW\-fpim4\fR" 4
  .IX Item "-fpim4"
! turn on \s-1PIM\-4\s0 standard features.  Currently this only effects the
  behavior of \f(CW\*(C`DIV\*(C'\fR and \f(CW\*(C`MOD\*(C'\fR operators.
  .ie n .IP """\-fpositive\-mod\-floor\-div""" 4
! .el .IP "\f(CW\-fpositive\-mod\-floor\-div\fR" 4
  .IX Item "-fpositive-mod-floor-div"
! forces the \f(CW\*(C`DIV\*(C'\fR and \f(CW\*(C`MOD\*(C'\fR operators to behave as defined by \s-1PIM4.\s0
  All modulus results are positive and the results from the division are
  rounded to the floor.
  .ie n .IP """\-fpthread""" 4
! .el .IP "\f(CW\-fpthread\fR" 4
  .IX Item "-fpthread"
  link against the pthread library.  By default this option is on.  It
! can be disabled by \fB\-fno\-pthread\fR.  \s-1GNU\s0 Modula\-2 uses the \s-1GCC\s0
! pthread libraries to implement coroutines (see the \s-1SYSTEM\s0
  implementation module).
  .ie n .IP """\-frange""" 4
! .el .IP "\f(CW\-frange\fR" 4
  .IX Item "-frange"
  generate code to check the assignment range, return value range
  set range and constructor range.  Range checking can be disabled
  via \fB\-fno\-range\fR.
  .ie n .IP """\-freturn""" 4
! .el .IP "\f(CW\-freturn\fR" 4
  .IX Item "-freturn"
  generate code to check that functions always exit with a \f(CW\*(C`RETURN\*(C'\fR
  and do not fall out at the end.  Return checking can be disabled
  via \fB\-fno\-return\fR.
  .ie n .IP """\-fruntime\-modules=""" 4
! .el .IP "\f(CW\-fruntime\-modules=\fR" 4
  .IX Item "-fruntime-modules="
  specify, using a comma separated list, the run time modules and their
  order.  These modules will initialized first before any other modules
--- 296,365 ----
  this option, when coupled together with \f(CW\*(C`\-O3\*(C'\fR, can deliver huge
  performance improvements.
  .ie n .IP """\-fmod=""" 4
! .el .IP \f(CW\-fmod=\fR 4
  .IX Item "-fmod="
  recognize the specified suffix as implementation and module filenames.
  The default implementation and module filename suffix is \fI.mod\fR.
! If this option is used GNU Modula\-2 will still fall back to this
  default if it needs to read an implementation module and the specified
  suffixed filename does not exist.
  .ie n .IP """\-fnil""" 4
! .el .IP \f(CW\-fnil\fR 4
  .IX Item "-fnil"
  generate code to detect accessing data through a \f(CW\*(C`NIL\*(C'\fR value
  pointer.  Dereferencing checking through a \f(CW\*(C`NIL\*(C'\fR pointer can be
  disabled by \fB\-fno\-nil\fR.
  .ie n .IP """\-fpim""" 4
! .el .IP \f(CW\-fpim\fR 4
  .IX Item "-fpim"
! turn on PIM standard features.  Currently this enables the PIM
  \&\f(CW\*(C`SYSTEM\*(C'\fR module and determines which identifiers are pervasive
  (declared in the base module).  If no other \fB\-fpim[234]\fR switch is
! used then division and modulus operators behave as defined in PIM4.
  .ie n .IP """\-fpim2""" 4
! .el .IP \f(CW\-fpim2\fR 4
  .IX Item "-fpim2"
! turn on PIM\-2 standard features.  Currently this removes \f(CW\*(C`SIZE\*(C'\fR
  from being a pervasive identifier (declared in the base module).  It
  places \f(CW\*(C`SIZE\*(C'\fR in the \f(CW\*(C`SYSTEM\*(C'\fR module.  It also effects the
  behavior of \f(CW\*(C`DIV\*(C'\fR and \f(CW\*(C`MOD\*(C'\fR operators.
  .ie n .IP """\-fpim3""" 4
! .el .IP \f(CW\-fpim3\fR 4
  .IX Item "-fpim3"
! turn on PIM\-3 standard features.  Currently this only effects the
  behavior of \f(CW\*(C`DIV\*(C'\fR and \f(CW\*(C`MOD\*(C'\fR operators.
  .ie n .IP """\-fpim4""" 4
! .el .IP \f(CW\-fpim4\fR 4
  .IX Item "-fpim4"
! turn on PIM\-4 standard features.  Currently this only effects the
  behavior of \f(CW\*(C`DIV\*(C'\fR and \f(CW\*(C`MOD\*(C'\fR operators.
  .ie n .IP """\-fpositive\-mod\-floor\-div""" 4
! .el .IP \f(CW\-fpositive\-mod\-floor\-div\fR 4
  .IX Item "-fpositive-mod-floor-div"
! forces the \f(CW\*(C`DIV\*(C'\fR and \f(CW\*(C`MOD\*(C'\fR operators to behave as defined by PIM4.
  All modulus results are positive and the results from the division are
  rounded to the floor.
  .ie n .IP """\-fpthread""" 4
! .el .IP \f(CW\-fpthread\fR 4
  .IX Item "-fpthread"
  link against the pthread library.  By default this option is on.  It
! can be disabled by \fB\-fno\-pthread\fR.  GNU Modula\-2 uses the GCC
! pthread libraries to implement coroutines (see the SYSTEM
  implementation module).
  .ie n .IP """\-frange""" 4
! .el .IP \f(CW\-frange\fR 4
  .IX Item "-frange"
  generate code to check the assignment range, return value range
  set range and constructor range.  Range checking can be disabled
  via \fB\-fno\-range\fR.
  .ie n .IP """\-freturn""" 4
! .el .IP \f(CW\-freturn\fR 4
  .IX Item "-freturn"
  generate code to check that functions always exit with a \f(CW\*(C`RETURN\*(C'\fR
  and do not fall out at the end.  Return checking can be disabled
  via \fB\-fno\-return\fR.
  .ie n .IP """\-fruntime\-modules=""" 4
! .el .IP \f(CW\-fruntime\-modules=\fR 4
  .IX Item "-fruntime-modules="
  specify, using a comma separated list, the run time modules and their
  order.  These modules will initialized first before any other modules
*************** Adding a long list of dependent modules
*** 442,468 ****
  the executable it merely states the initialization order should they
  be required.
  .ie n .IP """\-fscaffold\-dynamic""" 4
! .el .IP "\f(CW\-fscaffold\-dynamic\fR" 4
  .IX Item "-fscaffold-dynamic"
  the option ensures that \fBgm2\fR will generate a dynamic scaffold
  infrastructure when compiling implementation and program modules.
  By default this option is on.  Use \fB\-fno\-scaffold\-dynamic\fR
  to turn it off or select \fB\-fno\-scaffold\-static\fR.
  .ie n .IP """\-fscaffold\-c""" 4
! .el .IP "\f(CW\-fscaffold\-c\fR" 4
  .IX Item "-fscaffold-c"
  generate a C source scaffold for the current module being compiled.
  .ie n .IP """\-fscaffold\-c++""" 4
! .el .IP "\f(CW\-fscaffold\-c++\fR" 4
  .IX Item "-fscaffold-c++"
! generate a \*(C+ source scaffold for the current module being compiled.
  .ie n .IP """\-fscaffold\-main""" 4
! .el .IP "\f(CW\-fscaffold\-main\fR" 4
  .IX Item "-fscaffold-main"
  force the generation of the \fBmain\fR function.  This is not
  necessary if the \fB\-c\fR is omitted.
  .ie n .IP """\-fscaffold\-static""" 4
! .el .IP "\f(CW\-fscaffold\-static\fR" 4
  .IX Item "-fscaffold-static"
  the option ensures that \fBgm2\fR will generate a static scaffold
  within the program module.  The static scaffold consists of sequences
--- 371,397 ----
  the executable it merely states the initialization order should they
  be required.
  .ie n .IP """\-fscaffold\-dynamic""" 4
! .el .IP \f(CW\-fscaffold\-dynamic\fR 4
  .IX Item "-fscaffold-dynamic"
  the option ensures that \fBgm2\fR will generate a dynamic scaffold
  infrastructure when compiling implementation and program modules.
  By default this option is on.  Use \fB\-fno\-scaffold\-dynamic\fR
  to turn it off or select \fB\-fno\-scaffold\-static\fR.
  .ie n .IP """\-fscaffold\-c""" 4
! .el .IP \f(CW\-fscaffold\-c\fR 4
  .IX Item "-fscaffold-c"
  generate a C source scaffold for the current module being compiled.
  .ie n .IP """\-fscaffold\-c++""" 4
! .el .IP \f(CW\-fscaffold\-c++\fR 4
  .IX Item "-fscaffold-c++"
! generate a C++ source scaffold for the current module being compiled.
  .ie n .IP """\-fscaffold\-main""" 4
! .el .IP \f(CW\-fscaffold\-main\fR 4
  .IX Item "-fscaffold-main"
  force the generation of the \fBmain\fR function.  This is not
  necessary if the \fB\-c\fR is omitted.
  .ie n .IP """\-fscaffold\-static""" 4
! .el .IP \f(CW\-fscaffold\-static\fR 4
  .IX Item "-fscaffold-static"
  the option ensures that \fBgm2\fR will generate a static scaffold
  within the program module.  The static scaffold consists of sequences
*************** of calls to all dependent module initial
*** 470,502 ****
  procedures.  The static scaffold is useful for debugging and single
  stepping the initialization blocks of implementation modules.
  .ie n .IP """\-fshared""" 4
! .el .IP "\f(CW\-fshared\fR" 4
  .IX Item "-fshared"
  generate a shared library from the module.
  .ie n .IP """\-fsoft\-check\-all""" 4
! .el .IP "\f(CW\-fsoft\-check\-all\fR" 4
  .IX Item "-fsoft-check-all"
  turns on all run time checks.  This is the same as invoking
! \&\s-1GNU\s0 Modula\-2 using the command options
  \&\f(CW\*(C`\-fnil\*(C'\fR \f(CW\*(C`\-frange\*(C'\fR \f(CW\*(C`\-findex\*(C'\fR
  \&\f(CW\*(C`\-fwholevalue\*(C'\fR
  \&\f(CW\*(C`\-fwholediv\*(C'\fR \f(CW\*(C`\-fcase\*(C'\fR \f(CW\*(C`\-freturn\*(C'\fR.
  .ie n .IP """\-fsources""" 4
! .el .IP "\f(CW\-fsources\fR" 4
  .IX Item "-fsources"
  displays the path to the source of each module.  This option
  can be used at compile time to check the correct definition module
  is being used.
  .ie n .IP """\-fswig""" 4
! .el .IP "\f(CW\-fswig\fR" 4
  .IX Item "-fswig"
  generate a swig interface file.
  .ie n .IP """\-funbounded\-by\-reference""" 4
! .el .IP "\f(CW\-funbounded\-by\-reference\fR" 4
  .IX Item "-funbounded-by-reference"
  enable optimization of unbounded parameters by attempting to pass non
  \&\f(CW\*(C`VAR\*(C'\fR unbounded parameters by reference.  This optimization
! avoids the implicit copy inside the callee procedure.  \s-1GNU\s0 Modula\-2
  will only allow unbounded parameters to be passed by reference if,
  inside the callee procedure, they are not written to, no address is
  calculated on the array and it is not passed as a \f(CW\*(C`VAR\*(C'\fR
--- 399,431 ----
  procedures.  The static scaffold is useful for debugging and single
  stepping the initialization blocks of implementation modules.
  .ie n .IP """\-fshared""" 4
! .el .IP \f(CW\-fshared\fR 4
  .IX Item "-fshared"
  generate a shared library from the module.
  .ie n .IP """\-fsoft\-check\-all""" 4
! .el .IP \f(CW\-fsoft\-check\-all\fR 4
  .IX Item "-fsoft-check-all"
  turns on all run time checks.  This is the same as invoking
! GNU Modula\-2 using the command options
  \&\f(CW\*(C`\-fnil\*(C'\fR \f(CW\*(C`\-frange\*(C'\fR \f(CW\*(C`\-findex\*(C'\fR
  \&\f(CW\*(C`\-fwholevalue\*(C'\fR
  \&\f(CW\*(C`\-fwholediv\*(C'\fR \f(CW\*(C`\-fcase\*(C'\fR \f(CW\*(C`\-freturn\*(C'\fR.
  .ie n .IP """\-fsources""" 4
! .el .IP \f(CW\-fsources\fR 4
  .IX Item "-fsources"
  displays the path to the source of each module.  This option
  can be used at compile time to check the correct definition module
  is being used.
  .ie n .IP """\-fswig""" 4
! .el .IP \f(CW\-fswig\fR 4
  .IX Item "-fswig"
  generate a swig interface file.
  .ie n .IP """\-funbounded\-by\-reference""" 4
! .el .IP \f(CW\-funbounded\-by\-reference\fR 4
  .IX Item "-funbounded-by-reference"
  enable optimization of unbounded parameters by attempting to pass non
  \&\f(CW\*(C`VAR\*(C'\fR unbounded parameters by reference.  This optimization
! avoids the implicit copy inside the callee procedure.  GNU Modula\-2
  will only allow unbounded parameters to be passed by reference if,
  inside the callee procedure, they are not written to, no address is
  calculated on the array and it is not passed as a \f(CW\*(C`VAR\*(C'\fR
*************** the procedure and write to the location
*** 508,515 ****
  .Sp
  Due to the dangerous nature of this option it is not enabled
  when the \fB\-O\fR option is specified.
! .ie n .IP """\-fuse\-list=\fIfilename\fP""" 4
! .el .IP "\f(CW\-fuse\-list=\f(CIfilename\f(CW\fR" 4
  .IX Item "-fuse-list=filename"
  if \fB\-fscaffold\-static\fR is enabled then use the file
  \&\fIfilename\fR for the initialization order of modules.  Whereas if
--- 437,444 ----
  .Sp
  Due to the dangerous nature of this option it is not enabled
  when the \fB\-O\fR option is specified.
! .ie n .IP """\-fuse\-list=\fIfilename\fR""" 4
! .el .IP \f(CW\-fuse\-list=\fR\f(CIfilename\fR\f(CW\fR 4
  .IX Item "-fuse-list=filename"
  if \fB\-fscaffold\-static\fR is enabled then use the file
  \&\fIfilename\fR for the initialization order of modules.  Whereas if
*************** if \fB\-fscaffold\-static\fR is enabled
*** 517,532 ****
  linking of all module ctors.
  This option cannot be used if \fB\-fgen\-module\-list=\fR is enabled.
  .ie n .IP """\-fwholediv""" 4
! .el .IP "\f(CW\-fwholediv\fR" 4
  .IX Item "-fwholediv"
  generate code to detect whole number division by zero or modulus by
  zero.
  .ie n .IP """\-fwholevalue""" 4
! .el .IP "\f(CW\-fwholevalue\fR" 4
  .IX Item "-fwholevalue"
  generate code to detect whole number overflow and underflow.
  .ie n .IP """\-Wcase\-enum""" 4
! .el .IP "\f(CW\-Wcase\-enum\fR" 4
  .IX Item "-Wcase-enum"
  generate a warning if a \f(CW\*(C`CASE\*(C'\fR statement selects on an enumerated
  type expression and the statement is missing one or more \f(CW\*(C`CASE\*(C'\fR
--- 446,461 ----
  linking of all module ctors.
  This option cannot be used if \fB\-fgen\-module\-list=\fR is enabled.
  .ie n .IP """\-fwholediv""" 4
! .el .IP \f(CW\-fwholediv\fR 4
  .IX Item "-fwholediv"
  generate code to detect whole number division by zero or modulus by
  zero.
  .ie n .IP """\-fwholevalue""" 4
! .el .IP \f(CW\-fwholevalue\fR 4
  .IX Item "-fwholevalue"
  generate code to detect whole number overflow and underflow.
  .ie n .IP """\-Wcase\-enum""" 4
! .el .IP \f(CW\-Wcase\-enum\fR 4
  .IX Item "-Wcase-enum"
  generate a warning if a \f(CW\*(C`CASE\*(C'\fR statement selects on an enumerated
  type expression and the statement is missing one or more \f(CW\*(C`CASE\*(C'\fR
*************** labels.  No warning is issued if the \f(
*** 534,546 ****
  \&\f(CW\*(C`ELSE\*(C'\fR clause.
  The option \fB\-Wall\fR will turn on this flag.
  .ie n .IP """\-Wuninit\-variable\-checking""" 4
! .el .IP "\f(CW\-Wuninit\-variable\-checking\fR" 4
  .IX Item "-Wuninit-variable-checking"
  issue a warning if a variable is used before it is initialized.
  The checking only occurs in the first basic block in each procedure.
  It does not check parameters, array types or set types.
  .ie n .IP """\-Wuninit\-variable\-checking=all,known,cond""" 4
! .el .IP "\f(CW\-Wuninit\-variable\-checking=all,known,cond\fR" 4
  .IX Item "-Wuninit-variable-checking=all,known,cond"
  issue a warning if a variable is used before it is initialized.
  The checking will only occur in the first basic block in each
--- 463,475 ----
  \&\f(CW\*(C`ELSE\*(C'\fR clause.
  The option \fB\-Wall\fR will turn on this flag.
  .ie n .IP """\-Wuninit\-variable\-checking""" 4
! .el .IP \f(CW\-Wuninit\-variable\-checking\fR 4
  .IX Item "-Wuninit-variable-checking"
  issue a warning if a variable is used before it is initialized.
  The checking only occurs in the first basic block in each procedure.
  It does not check parameters, array types or set types.
  .ie n .IP """\-Wuninit\-variable\-checking=all,known,cond""" 4
! .el .IP \f(CW\-Wuninit\-variable\-checking=all,known,cond\fR 4
  .IX Item "-Wuninit-variable-checking=all,known,cond"
  issue a warning if a variable is used before it is initialized.
  The checking will only occur in the first basic block in each
*************** The option \fB\-Wall\fR will turn on thi
*** 553,567 ****
  The \fB\-Wuninit\-variable\-checking=all\fR will increase compile time.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf\-funding\fR\|(7), \fIgcc\fR\|(1)
  and the Info entries for \fIgm2\fR and \fIgcc\fR.
! .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 1999\-2025 Free Software Foundation, Inc.
  .PP
  Permission is granted to copy, distribute and/or modify this document
! under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 or
  any later version published by the Free Software Foundation; with no
! Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
  A copy of the license is included in the
! man page \fIgfdl\fR\|(7).
--- 482,496 ----
  The \fB\-Wuninit\-variable\-checking=all\fR will increase compile time.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fBgpl\fR\|(7), \fBgfdl\fR\|(7), \fBfsf\-funding\fR\|(7), \fBgcc\fR\|(1)
  and the Info entries for \fIgm2\fR and \fIgcc\fR.
! .SH COPYRIGHT
  .IX Header "COPYRIGHT"
  Copyright (c) 1999\-2025 Free Software Foundation, Inc.
  .PP
  Permission is granted to copy, distribute and/or modify this document
! under the terms of the GNU Free Documentation License, Version 1.3 or
  any later version published by the Free Software Foundation; with no
! Invariant Sections, no Front\-Cover Texts, and no Back\-Cover Texts.
  A copy of the license is included in the
! man page \fBgfdl\fR\|(7).
diff -Nrcpad gcc-15.2.0/gcc/doc/gnat-style.info gcc-15.3.0/gcc/doc/gnat-style.info
*** gcc-15.2.0/gcc/doc/gnat-style.info	Fri Aug  8 07:17:37 2025
--- gcc-15.3.0/gcc/doc/gnat-style.info	Fri Jun 12 06:36:29 2026
***************
*** 1,4 ****
! This is gnat-style.info, produced by makeinfo version 6.5 from
  gnat-style.texi.
  
       GNAT Coding Style: A Guide for GNAT Developers , Jan 03, 2025
--- 1,4 ----
! This is gnat-style.info, produced by makeinfo version 7.1 from
  gnat-style.texi.
  
       GNAT Coding Style: A Guide for GNAT Developers , Jan 03, 2025
*************** File: gnat-style.info,  Node: Comments,
*** 170,176 ****
       comments after the declaration, there is no blank line before the
       comment, and if it is absolutely necessary to have blank lines
       within the comments, e.g.  to make paragraph separations within a
!      single comment, these blank lines â€˜doâ€™ have a â€˜--â€™ (unlike the
       normal rule, which is to use entirely blank lines for separating
       comment paragraphs).  The comment starts at same level of
       indentation as code it is commenting.
--- 170,176 ----
       comments after the declaration, there is no blank line before the
       comment, and if it is absolutely necessary to have blank lines
       within the comments, e.g.  to make paragraph separations within a
!      single comment, these blank lines 'do' have a â€˜--â€™ (unlike the
       normal rule, which is to use entirely blank lines for separating
       comment paragraphs).  The comment starts at same level of
       indentation as code it is commenting.
*************** File: gnat-style.info,  Node: Comments,
*** 204,214 ****
            My_Identifier := 5;      --  First comment
            Other_Id := 6;           --  Second comment
  
!    * Short comments that fit on a single line are â€˜notâ€™ ended with a
       period.  Comments taking more than a line are punctuated in the
       normal manner.
  
!    * Comments should focus on â€˜whyâ€™ instead of â€˜whatâ€™.  Descriptions of
       what subprograms do go with the specification.
  
     * Comments describing a subprogram spec should specifically mention
--- 204,214 ----
            My_Identifier := 5;      --  First comment
            Other_Id := 6;           --  Second comment
  
!    * Short comments that fit on a single line are 'not' ended with a
       period.  Comments taking more than a line are punctuated in the
       normal manner.
  
!    * Comments should focus on 'why' instead of 'what'.  Descriptions of
       what subprograms do go with the specification.
  
     * Comments describing a subprogram spec should specifically mention
*************** File: gnat-style.info,  Node: Comments,
*** 216,222 ****
       not depend on the names of things.  The names are supplementary,
       not sufficient, as comments.
  
!    * â€˜Do notâ€™ put two spaces after periods in comments.
  
  
  File: gnat-style.info,  Node: Declarations and Types,  Next: Expressions and Names,  Prev: Lexical Elements,  Up: Top
--- 216,222 ----
       not depend on the names of things.  The names are supplementary,
       not sufficient, as comments.
  
!    * 'Do not' put two spaces after periods in comments.
  
  
  File: gnat-style.info,  Node: Declarations and Types,  Next: Expressions and Names,  Prev: Lexical Elements,  Up: Top
*************** Copyright 2000, 2001, 2002, 2007, 2008 F
*** 704,710 ****
  Everyone is permitted to copy and distribute verbatim copies of this
  license document, but changing it is not allowed.
  
! â€˜Preambleâ€™
  
  The purpose of this License is to make a manual, textbook, or other
  functional and useful document â€œfreeâ€� in the sense of freedom: to assure
--- 704,710 ----
  Everyone is permitted to copy and distribute verbatim copies of this
  license document, but changing it is not allowed.
  
! 'Preamble'
  
  The purpose of this License is to make a manual, textbook, or other
  functional and useful document â€œfreeâ€� in the sense of freedom: to assure
*************** used for any textual work, regardless of
*** 727,748 ****
  published as a printed book.  We recommend this License principally for
  works whose purpose is instruction or reference.
  
! â€˜1.  APPLICABILITY AND DEFINITIONSâ€™
  
  This License applies to any manual or other work, in any medium, that
  contains a notice placed by the copyright holder saying it can be
  distributed under the terms of this License.  Such a notice grants a
  world-wide, royalty-free license, unlimited in duration, to use that
! work under the conditions stated herein.  The â€˜Documentâ€™, below, refers
  to any such manual or work.  Any member of the public is a licensee, and
! is addressed as â€œâ€˜youâ€™â€�.  You accept the license if you copy, modify or
  distribute the work in a way requiring permission under copyright law.
  
! A â€œâ€˜Modified Versionâ€™â€� of the Document means any work containing the
  Document or a portion of it, either copied verbatim, or with
  modifications and/or translated into another language.
  
! A â€œâ€˜Secondary Sectionâ€™â€� is a named appendix or a front-matter section of
  the Document that deals exclusively with the relationship of the
  publishers or authors of the Document to the Documentâ€™s overall subject
  (or to related matters) and contains nothing that could fall directly
--- 727,748 ----
  published as a printed book.  We recommend this License principally for
  works whose purpose is instruction or reference.
  
! '1.  APPLICABILITY AND DEFINITIONS'
  
  This License applies to any manual or other work, in any medium, that
  contains a notice placed by the copyright holder saying it can be
  distributed under the terms of this License.  Such a notice grants a
  world-wide, royalty-free license, unlimited in duration, to use that
! work under the conditions stated herein.  The 'Document', below, refers
  to any such manual or work.  Any member of the public is a licensee, and
! is addressed as â€œ'you'â€�.  You accept the license if you copy, modify or
  distribute the work in a way requiring permission under copyright law.
  
! A â€œ'Modified Version'â€� of the Document means any work containing the
  Document or a portion of it, either copied verbatim, or with
  modifications and/or translated into another language.
  
! A â€œ'Secondary Section'â€� is a named appendix or a front-matter section of
  the Document that deals exclusively with the relationship of the
  publishers or authors of the Document to the Documentâ€™s overall subject
  (or to related matters) and contains nothing that could fall directly
*************** mathematics.)  The relationship could be
*** 752,758 ****
  connection with the subject or with related matters, or of legal,
  commercial, philosophical, ethical or political position regarding them.
  
! The â€œâ€˜Invariant Sectionsâ€™â€� are certain Secondary Sections whose titles
  are designated, as being those of Invariant Sections, in the notice that
  says that the Document is released under this License.  If a section
  does not fit the above definition of Secondary then it is not allowed to
--- 752,758 ----
  connection with the subject or with related matters, or of legal,
  commercial, philosophical, ethical or political position regarding them.
  
! The â€œ'Invariant Sections'â€� are certain Secondary Sections whose titles
  are designated, as being those of Invariant Sections, in the notice that
  says that the Document is released under this License.  If a section
  does not fit the above definition of Secondary then it is not allowed to
*************** be designated as Invariant.  The Documen
*** 760,771 ****
  Sections.  If the Document does not identify any Invariant Sections then
  there are none.
  
! The â€œâ€˜Cover Textsâ€™â€� are certain short passages of text that are listed,
  as Front-Cover Texts or Back-Cover Texts, in the notice that says that
  the Document is released under this License.  A Front-Cover Text may be
  at most 5 words, and a Back-Cover Text may be at most 25 words.
  
! A â€œâ€˜Transparentâ€™â€� copy of the Document means a machine-readable copy,
  represented in a format whose specification is available to the general
  public, that is suitable for revising the document straightforwardly
  with generic text editors or (for images composed of pixels) generic
--- 760,771 ----
  Sections.  If the Document does not identify any Invariant Sections then
  there are none.
  
! The â€œ'Cover Texts'â€� are certain short passages of text that are listed,
  as Front-Cover Texts or Back-Cover Texts, in the notice that says that
  the Document is released under this License.  A Front-Cover Text may be
  at most 5 words, and a Back-Cover Text may be at most 25 words.
  
! A â€œ'Transparent'â€� copy of the Document means a machine-readable copy,
  represented in a format whose specification is available to the general
  public, that is suitable for revising the document straightforwardly
  with generic text editors or (for images composed of pixels) generic
*************** formatters.  A copy made in an otherwise
*** 776,782 ****
  markup, or absence of markup, has been arranged to thwart or discourage
  subsequent modification by readers is not Transparent.  An image format
  is not Transparent if used for any substantial amount of text.  A copy
! that is not â€œTransparentâ€� is called â€˜Opaqueâ€™.
  
  Examples of suitable formats for Transparent copies include plain ASCII
  without markup, Texinfo input format, LaTeX input format, SGML or XML
--- 776,782 ----
  markup, or absence of markup, has been arranged to thwart or discourage
  subsequent modification by readers is not Transparent.  An image format
  is not Transparent if used for any substantial amount of text.  A copy
! that is not â€œTransparentâ€� is called 'Opaque'.
  
  Examples of suitable formats for Transparent copies include plain ASCII
  without markup, Texinfo input format, LaTeX input format, SGML or XML
*************** processing tools are not generally avail
*** 789,810 ****
  HTML, PostScript or PDF produced by some word processors for output
  purposes only.
  
! The â€œâ€˜Title Pageâ€™â€� means, for a printed book, the title page itself,
  plus such following pages as are needed to hold, legibly, the material
  this License requires to appear in the title page.  For works in formats
  which do not have any title page as such, â€œTitle Pageâ€� means the text
  near the most prominent appearance of the workâ€™s title, preceding the
  beginning of the body of the text.
  
! The â€œâ€˜publisherâ€™â€� means any person or entity that distributes copies of
  the Document to the public.
  
! A section â€œâ€˜Entitled XYZâ€™â€� means a named subunit of the Document whose
  title either is precisely XYZ or contains XYZ in parentheses following
  text that translates XYZ in another language.  (Here XYZ stands for a
! specific section name mentioned below, such as â€œâ€˜Acknowledgementsâ€™â€�,
! â€œâ€˜Dedicationsâ€™â€�, â€œâ€˜Endorsementsâ€™â€�, or â€œâ€˜Historyâ€™â€�.)  To â€œâ€˜Preserve the
! Titleâ€™â€� of such a section when you modify the Document means that it
  remains a section â€œEntitled XYZâ€� according to this definition.
  
  The Document may include Warranty Disclaimers next to the notice which
--- 789,810 ----
  HTML, PostScript or PDF produced by some word processors for output
  purposes only.
  
! The â€œ'Title Page'â€� means, for a printed book, the title page itself,
  plus such following pages as are needed to hold, legibly, the material
  this License requires to appear in the title page.  For works in formats
  which do not have any title page as such, â€œTitle Pageâ€� means the text
  near the most prominent appearance of the workâ€™s title, preceding the
  beginning of the body of the text.
  
! The â€œ'publisher'â€� means any person or entity that distributes copies of
  the Document to the public.
  
! A section â€œ'Entitled XYZ'â€� means a named subunit of the Document whose
  title either is precisely XYZ or contains XYZ in parentheses following
  text that translates XYZ in another language.  (Here XYZ stands for a
! specific section name mentioned below, such as â€œ'Acknowledgements'â€�,
! â€œ'Dedications'â€�, â€œ'Endorsements'â€�, or â€œ'History'â€�.)  To â€œ'Preserve the
! Title'â€� of such a section when you modify the Document means that it
  remains a section â€œEntitled XYZâ€� according to this definition.
  
  The Document may include Warranty Disclaimers next to the notice which
*************** but only as regards disclaiming warranti
*** 814,820 ****
  these Warranty Disclaimers may have is void and has no effect on the
  meaning of this License.
  
! â€˜2.  VERBATIM COPYINGâ€™
  
  You may copy and distribute the Document in any medium, either
  commercially or noncommercially, provided that this License, the
--- 814,820 ----
  these Warranty Disclaimers may have is void and has no effect on the
  meaning of this License.
  
! '2.  VERBATIM COPYING'
  
  You may copy and distribute the Document in any medium, either
  commercially or noncommercially, provided that this License, the
*************** number of copies you must also follow th
*** 829,835 ****
  You may also lend copies, under the same conditions stated above, and
  you may publicly display copies.
  
! â€˜3.  COPYING IN QUANTITYâ€™
  
  If you publish printed copies (or copies in media that commonly have
  printed covers) of the Document, numbering more than 100, and the
--- 829,835 ----
  You may also lend copies, under the same conditions stated above, and
  you may publicly display copies.
  
! '3.  COPYING IN QUANTITY'
  
  If you publish printed copies (or copies in media that commonly have
  printed covers) of the Document, numbering more than 100, and the
*************** It is requested, but not required, that
*** 866,872 ****
  Document well before redistributing any large number of copies, to give
  them a chance to provide you with an updated version of the Document.
  
! â€˜4.  MODIFICATIONSâ€™
  
  You may copy and distribute a Modified Version of the Document under the
  conditions of sections 2 and 3 above, provided that you release the
--- 866,872 ----
  Document well before redistributing any large number of copies, to give
  them a chance to provide you with an updated version of the Document.
  
! '4.  MODIFICATIONS'
  
  You may copy and distribute a Modified Version of the Document under the
  conditions of sections 2 and 3 above, provided that you release the
*************** The author(s) and publisher(s) of the Do
*** 964,970 ****
  give permission to use their names for publicity for or to assert or
  imply endorsement of any Modified Version.
  
! â€˜5.  COMBINING DOCUMENTSâ€™
  
  You may combine the Document with other documents released under this
  License, under the terms defined in section 4 above for modified
--- 964,970 ----
  give permission to use their names for publicity for or to assert or
  imply endorsement of any Modified Version.
  
! '5.  COMBINING DOCUMENTS'
  
  You may combine the Document with other documents released under this
  License, under the terms defined in section 4 above for modified
*************** likewise combine any sections Entitled â
*** 988,994 ****
  sections Entitled â€œDedicationsâ€�.  You must delete all sections Entitled
  â€œEndorsementsâ€�.
  
! â€˜6.  COLLECTIONS OF DOCUMENTSâ€™
  
  You may make a collection consisting of the Document and other documents
  released under this License, and replace the individual copies of this
--- 988,994 ----
  sections Entitled â€œDedicationsâ€�.  You must delete all sections Entitled
  â€œEndorsementsâ€�.
  
! '6.  COLLECTIONS OF DOCUMENTS'
  
  You may make a collection consisting of the Document and other documents
  released under this License, and replace the individual copies of this
*************** it individually under this License, prov
*** 1001,1007 ****
  License into the extracted document, and follow this License in all
  other respects regarding verbatim copying of that document.
  
! â€˜7.  AGGREGATION WITH INDEPENDENT WORKSâ€™
  
  A compilation of the Document or its derivatives with other separate and
  independent documents or works, in or on a volume of a storage or
--- 1001,1007 ----
  License into the extracted document, and follow this License in all
  other respects regarding verbatim copying of that document.
  
! '7.  AGGREGATION WITH INDEPENDENT WORKS'
  
  A compilation of the Document or its derivatives with other separate and
  independent documents or works, in or on a volume of a storage or
*************** that bracket the Document within the agg
*** 1019,1025 ****
  equivalent of covers if the Document is in electronic form.  Otherwise
  they must appear on printed covers that bracket the whole aggregate.
  
! â€˜8.  TRANSLATIONâ€™
  
  Translation is considered a kind of modification, so you may distribute
  translations of the Document under the terms of section 4.  Replacing
--- 1019,1025 ----
  equivalent of covers if the Document is in electronic form.  Otherwise
  they must appear on printed covers that bracket the whole aggregate.
  
! '8.  TRANSLATION'
  
  Translation is considered a kind of modification, so you may distribute
  translations of the Document under the terms of section 4.  Replacing
*************** If a section in the Document is Entitled
*** 1038,1044 ****
  â€œDedicationsâ€�, or â€œHistoryâ€�, the requirement (section 4) to Preserve its
  Title (section 1) will typically require changing the actual title.
  
! â€˜9.  TERMINATIONâ€™
  
  You may not copy, modify, sublicense, or distribute the Document except
  as expressly provided under this License.  Any attempt otherwise to
--- 1038,1044 ----
  â€œDedicationsâ€�, or â€œHistoryâ€�, the requirement (section 4) to Preserve its
  Title (section 1) will typically require changing the actual title.
  
! '9.  TERMINATION'
  
  You may not copy, modify, sublicense, or distribute the Document except
  as expressly provided under this License.  Any attempt otherwise to
*************** this License.  If your rights have been
*** 1065,1071 ****
  reinstated, receipt of a copy of some or all of the same material does
  not give you any rights to use it.
  
! â€˜10.  FUTURE REVISIONS OF THIS LICENSEâ€™
  
  The Free Software Foundation may publish new, revised versions of the
  GNU Free Documentation License from time to time.  Such new versions
--- 1065,1071 ----
  reinstated, receipt of a copy of some or all of the same material does
  not give you any rights to use it.
  
! '10.  FUTURE REVISIONS OF THIS LICENSE'
  
  The Free Software Foundation may publish new, revised versions of the
  GNU Free Documentation License from time to time.  Such new versions
*************** that a proxy can decide which future ver
*** 1085,1091 ****
  used, that proxyâ€™s public statement of acceptance of a version
  permanently authorizes you to choose that version for the Document.
  
! â€˜11.  RELICENSINGâ€™
  
  â€œMassive Multiauthor Collaboration Siteâ€� (or â€œMMC Siteâ€�) means any World
  Wide Web server that publishes copyrightable works and also provides
--- 1085,1091 ----
  used, that proxyâ€™s public statement of acceptance of a version
  permanently authorizes you to choose that version for the Document.
  
! '11.  RELICENSING'
  
  â€œMassive Multiauthor Collaboration Siteâ€� (or â€œMMC Siteâ€�) means any World
  Wide Web server that publishes copyrightable works and also provides
*************** The operator of an MMC Site may republis
*** 1113,1119 ****
  under CC-BY-SA on the same site at any time before August 1, 2009,
  provided the MMC is eligible for relicensing.
  
! â€˜ADDENDUM: How to use this License for your documentsâ€™
  
  To use this License in a document you have written, include a copy of
  the License in the document and put the following copyright and license
--- 1113,1119 ----
  under CC-BY-SA on the same site at any time before August 1, 2009,
  provided the MMC is eligible for relicensing.
  
! 'ADDENDUM: How to use this License for your documents'
  
  To use this License in a document you have written, include a copy of
  the License in the document and put the following copyright and license
*************** Ref: 74480
*** 1231,1283 ****
  Node: Comments4698
  Ref: gnat-style comments4786
  Ref: 84786
! Node: Declarations and Types7318
! Ref: gnat-style declarations-and-types7439
! Ref: 97439
! Node: Expressions and Names8918
! Ref: gnat-style expressions-and-names9033
! Ref: a9033
! Node: Statements9561
! Ref: gnat-style statements9665
! Ref: b9665
! Node: Simple and Compound Statements9816
! Ref: gnat-style simple-and-compound-statements9919
! Ref: c9919
! Node: If Statements10169
! Ref: gnat-style if-statements10296
! Ref: d10296
! Node: Case Statements12771
! Ref: gnat-style case-statements12883
! Ref: e12883
! Node: Loop Statements13244
! Ref: gnat-style loop-statements13359
! Ref: f13359
! Node: Block Statements14056
! Ref: gnat-style block-statements14147
! Ref: 1014147
! Node: Subprograms14487
! Ref: gnat-style subprograms14599
! Ref: 1114599
! Node: Subprogram Declarations14688
! Ref: gnat-style subprogram-declarations14789
! Ref: 1214789
! Node: Subprogram Bodies16449
! Ref: gnat-style subprogram-bodies16550
! Ref: 1316550
! Node: Packages and Visibility Rules20286
! Ref: gnat-style packages-and-visibility-rules20428
! Ref: 1420428
! Node: Program Structure and Compilation Issues21451
! Ref: gnat-style program-structure-and-compilation-issues21587
! Ref: 1521587
! Node: GNU Free Documentation License22300
! Ref: share/gnu_free_documentation_license doc22411
! Ref: 1622411
! Ref: share/gnu_free_documentation_license gnu-fdl22411
! Ref: 1722411
! Ref: share/gnu_free_documentation_license gnu-free-documentation-license22411
! Ref: 1822411
! Node: Index45871
  
  End Tag Table
  
--- 1231,1283 ----
  Node: Comments4698
  Ref: gnat-style comments4786
  Ref: 84786
! Node: Declarations and Types7298
! Ref: gnat-style declarations-and-types7419
! Ref: 97419
! Node: Expressions and Names8898
! Ref: gnat-style expressions-and-names9013
! Ref: a9013
! Node: Statements9541
! Ref: gnat-style statements9645
! Ref: b9645
! Node: Simple and Compound Statements9796
! Ref: gnat-style simple-and-compound-statements9899
! Ref: c9899
! Node: If Statements10149
! Ref: gnat-style if-statements10276
! Ref: d10276
! Node: Case Statements12751
! Ref: gnat-style case-statements12863
! Ref: e12863
! Node: Loop Statements13224
! Ref: gnat-style loop-statements13339
! Ref: f13339
! Node: Block Statements14036
! Ref: gnat-style block-statements14127
! Ref: 1014127
! Node: Subprograms14467
! Ref: gnat-style subprograms14579
! Ref: 1114579
! Node: Subprogram Declarations14668
! Ref: gnat-style subprogram-declarations14769
! Ref: 1214769
! Node: Subprogram Bodies16429
! Ref: gnat-style subprogram-bodies16530
! Ref: 1316530
! Node: Packages and Visibility Rules20266
! Ref: gnat-style packages-and-visibility-rules20408
! Ref: 1420408
! Node: Program Structure and Compilation Issues21431
! Ref: gnat-style program-structure-and-compilation-issues21567
! Ref: 1521567
! Node: GNU Free Documentation License22280
! Ref: share/gnu_free_documentation_license doc22391
! Ref: 1622391
! Ref: share/gnu_free_documentation_license gnu-fdl22391
! Ref: 1722391
! Ref: share/gnu_free_documentation_license gnu-free-documentation-license22391
! Ref: 1822391
! Node: Index45735
  
  End Tag Table
  
diff -Nrcpad gcc-15.2.0/gcc/doc/gnat_rm.info gcc-15.3.0/gcc/doc/gnat_rm.info
*** gcc-15.2.0/gcc/doc/gnat_rm.info	Fri Aug  8 07:17:37 2025
--- gcc-15.3.0/gcc/doc/gnat_rm.info	Fri Jun 12 06:36:29 2026
***************
*** 1,4 ****
! This is gnat_rm.info, produced by makeinfo version 6.5 from
  gnat_rm.texi.
  
       GNAT Reference Manual , Jan 03, 2025
--- 1,4 ----
! This is gnat_rm.info, produced by makeinfo version 7.1 from
  gnat_rm.texi.
  
       GNAT Reference Manual , Jan 03, 2025
*************** GNAT Reference Manual
*** 27,35 ****
  
       Copyright Â© 2008-2025, Free Software Foundation
  
! â€˜GNAT, The GNU Ada Development Environmentâ€™
  
! GCC version 15.2.0
  AdaCore
  
  Permission is granted to copy, distribute and/or modify this document
--- 27,35 ----
  
       Copyright Â© 2008-2025, Free Software Foundation
  
! 'GNAT, The GNU Ada Development Environment'
  
! GCC version 15.3.0
  AdaCore
  
  Permission is granted to copy, distribute and/or modify this document
*************** included in the section entitled *note G
*** 65,71 ****
  * GNU Free Documentation License::
  * Index::
  
!  â€” The Detailed Node Listing â€”
  
  About This Guide
  
--- 65,71 ----
  * GNU Free Documentation License::
  * Index::
  
!  -- The Detailed Node Listing --
  
  About This Guide
  
*************** M of the Ada language standard.
*** 987,993 ****
  GNAT implements Ada 95, Ada 2005 and Ada 2012, and it may also be
  invoked in Ada 83 compatibility mode.  By default, GNAT assumes Ada
  2012, but you can override with a compiler switch to explicitly specify
! the language version.  (Please refer to the â€˜GNAT Userâ€™s Guideâ€™ for
  details on these switches.)  Throughout this manual, references to â€˜Adaâ€™
  without a year suffix apply to all the Ada versions of the language.
  
--- 987,993 ----
  GNAT implements Ada 95, Ada 2005 and Ada 2012, and it may also be
  invoked in Ada 83 compatibility mode.  By default, GNAT assumes Ada
  2012, but you can override with a compiler switch to explicitly specify
! the language version.  (Please refer to the 'GNAT Userâ€™s Guide' for
  details on these switches.)  Throughout this manual, references to â€˜Adaâ€™
  without a year suffix apply to all the Ada versions of the language.
  
*************** in this guide:
*** 1111,1117 ****
  
     * â€˜Variablesâ€™
  
!    * â€˜Emphasisâ€™
  
     * [optional information or parameters]
  
--- 1111,1117 ----
  
     * â€˜Variablesâ€™
  
!    * 'Emphasis'
  
     * [optional information or parameters]
  
*************** from this standard type.
*** 1766,1772 ****
  
  Assert checks can be either checked or ignored.  By default they are
  ignored.  They will be checked if either the command line switch
! â€˜-gnataâ€™ is used, or if an â€˜Assertion_Policyâ€™ or â€˜Check_Policyâ€™ pragma
  is used to enable â€˜Assert_Checksâ€™.
  
  If assertions are ignored, then there is no run-time effect (and in
--- 1766,1772 ----
  
  Assert checks can be either checked or ignored.  By default they are
  ignored.  They will be checked if either the command line switch
! '-gnata' is used, or if an â€˜Assertion_Policyâ€™ or â€˜Check_Policyâ€™ pragma
  is used to enable â€˜Assert_Checksâ€™.
  
  If assertions are ignored, then there is no run-time effect (and in
*************** intended to be identical to the correspo
*** 1880,1888 ****
  If the policy is â€˜CHECKâ€™, then assertions are enabled, i.e.  the
  corresponding pragma or aspect is activated.  If the policy is â€˜IGNOREâ€™,
  then assertions are ignored, i.e.  the corresponding pragma or aspect is
! deactivated.  This pragma overrides the effect of the â€˜-gnataâ€™ switch on
  the command line.  If the policy is â€˜SUPPRESSIBLEâ€™, then assertions are
! enabled by default, however, if the â€˜-gnatpâ€™ switch is specified all
  assertions are ignored.
  
  The implementation defined policy â€˜DISABLEâ€™ is like â€˜IGNOREâ€™ except that
--- 1880,1888 ----
  If the policy is â€˜CHECKâ€™, then assertions are enabled, i.e.  the
  corresponding pragma or aspect is activated.  If the policy is â€˜IGNOREâ€™,
  then assertions are ignored, i.e.  the corresponding pragma or aspect is
! deactivated.  This pragma overrides the effect of the '-gnata' switch on
  the command line.  If the policy is â€˜SUPPRESSIBLEâ€™, then assertions are
! enabled by default, however, if the '-gnatp' switch is specified all
  assertions are ignored.
  
  The implementation defined policy â€˜DISABLEâ€™ is like â€˜IGNOREâ€™ except that
*************** be independently controlled.  The identi
*** 2084,2090 ****
  refers to the normal set of pragma â€˜Assertâ€™ statements.
  
  Checks introduced by this pragma are normally deactivated by default.
! They can be activated either by the command line option â€˜-gnataâ€™, which
  turns on all checks, or individually controlled using pragma
  â€˜Check_Policyâ€™.
  
--- 2084,2090 ----
  refers to the normal set of pragma â€˜Assertâ€™ statements.
  
  Checks introduced by this pragma are normally deactivated by default.
! They can be activated either by the command line option '-gnata', which
  turns on all checks, or individually controlled using pragma
  â€˜Check_Policyâ€™.
  
*************** Syntax:
*** 2104,2110 ****
       pragma Check_Float_Overflow;
  
  In Ada, the predefined floating-point types (â€˜Short_Floatâ€™, â€˜Floatâ€™,
! â€˜Long_Floatâ€™, â€˜Long_Long_Floatâ€™) are defined to be â€˜unconstrainedâ€™.
  This means that even though each has a well-defined base range, an
  operation that delivers a result outside this base range is not required
  to raise an exception.  This implementation permission accommodates the
--- 2104,2110 ----
       pragma Check_Float_Overflow;
  
  In Ada, the predefined floating-point types (â€˜Short_Floatâ€™, â€˜Floatâ€™,
! â€˜Long_Floatâ€™, â€˜Long_Long_Floatâ€™) are defined to be 'unconstrained'.
  This means that even though each has a well-defined base range, an
  operation that delivers a result outside this base range is not required
  to raise an exception.  This implementation permission accommodates the
*************** base types of these floating-point types
*** 2136,2142 ****
  types were constrained, and overflow checks will be generated.  The
  â€˜Constraint_Errorâ€™ exception is raised if the result is out of range.
  
! This mode can also be set by use of the compiler switch â€˜-gnateFâ€™.
  
  
  File: gnat_rm.info,  Node: Pragma Check_Name,  Next: Pragma Check_Policy,  Prev: Pragma Check_Float_Overflow,  Up: Implementation Defined Pragmas
--- 2136,2142 ----
  types were constrained, and overflow checks will be generated.  The
  â€˜Constraint_Errorâ€™ exception is raised if the result is out of range.
  
! This mode can also be set by use of the compiler switch '-gnateF'.
  
  
  File: gnat_rm.info,  Node: Pragma Check_Name,  Next: Pragma Check_Policy,  Prev: Pragma Check_Float_Overflow,  Up: Implementation Defined Pragmas
*************** is given, then subsequent â€˜Checkâ€™ pr
*** 2226,2232 ****
  
  The check policy is â€˜OFFâ€™ to turn off corresponding checks, and â€˜ONâ€™ to
  turn on corresponding checks.  The default for a set of checks for which
! no â€˜Check_Policyâ€™ is given is â€˜OFFâ€™ unless the compiler switch â€˜-gnataâ€™
  is given, which turns on all checks by default.
  
  The check policy settings â€˜CHECKâ€™ and â€˜IGNOREâ€™ are recognized as
--- 2226,2232 ----
  
  The check policy is â€˜OFFâ€™ to turn off corresponding checks, and â€˜ONâ€™ to
  turn on corresponding checks.  The default for a set of checks for which
! no â€˜Check_Policyâ€™ is given is â€˜OFFâ€™ unless the compiler switch '-gnata'
  is given, which turns on all checks by default.
  
  The check policy settings â€˜CHECKâ€™ and â€˜IGNOREâ€™ are recognized as
*************** Syntax:
*** 2318,2324 ****
                (boolean_EXPRESSION, static_string_EXPRESSION);
  
  Same as pragma Compile_Time_Error, except a warning is issued instead of
! an error message.  If switch â€˜-gnatw_Câ€™ is used, a warning is only
  issued if the value of the expression is known to be True at compile
  time, not when the value of the expression is not known at compile time.
  Note that if this pragma is used in a package that is withâ€™ed by a
--- 2318,2324 ----
                (boolean_EXPRESSION, static_string_EXPRESSION);
  
  Same as pragma Compile_Time_Error, except a warning is issued instead of
! an error message.  If switch '-gnatw_C' is used, a warning is only
  issued if the value of the expression is known to be True at compile
  time, not when the value of the expression is not known at compile time.
  Note that if this pragma is used in a package that is withâ€™ed by a
*************** appropriately.  Another use with a first
*** 2332,2338 ****
  client about use of a package, for example that it is not fully
  implemented.
  
! In previous versions of the compiler, combining â€˜-gnatweâ€™ with
  Compile_Time_Warning resulted in a fatal error.  Now the compiler always
  emits a warning.  You can use *note Pragma Compile_Time_Error: 3d. to
  force the generation of an error.
--- 2332,2338 ----
  client about use of a package, for example that it is not fully
  implemented.
  
! In previous versions of the compiler, combining '-gnatwe' with
  Compile_Time_Warning resulted in a fatal error.  Now the compiler always
  emits a warning.  You can use *note Pragma Compile_Time_Error: 3d. to
  force the generation of an error.
*************** Syntax:
*** 2396,2402 ****
  Specifies the alignment of components in array or record types.  The
  meaning of the â€˜Formâ€™ argument is as follows:
  
! â€˜Component_Sizeâ€™
  
       Aligns scalar components and subcomponents of the array or record
       type on boundaries appropriate to their inherent size (naturally
--- 2396,2402 ----
  Specifies the alignment of components in array or record types.  The
  meaning of the â€˜Formâ€™ argument is as follows:
  
! 'Component_Size'
  
       Aligns scalar components and subcomponents of the array or record
       type on boundaries appropriate to their inherent size (naturally
*************** meaning of the â€˜Formâ€™ argument is as
*** 2406,2424 ****
       boundaries and so on.  These alignment rules correspond to the
       normal rules for C compilers on all machines except the VAX.
  
! â€˜Component_Size_4â€™
  
       Naturally aligns components with a size of four or fewer bytes.
       Components that are larger than 4 bytes are placed on the next
       4-byte boundary.
  
! â€˜Storage_Unitâ€™
  
       Specifies that array or record components are byte aligned, i.e.,
       aligned on boundaries determined by the value of the constant
       â€˜System.Storage_Unitâ€™.
  
! â€˜Defaultâ€™
  
       Specifies that array or record components are aligned on default
       boundaries, appropriate to the underlying hardware or operating
--- 2406,2424 ----
       boundaries and so on.  These alignment rules correspond to the
       normal rules for C compilers on all machines except the VAX.
  
! 'Component_Size_4'
  
       Naturally aligns components with a size of four or fewer bytes.
       Components that are larger than 4 bytes are placed on the next
       4-byte boundary.
  
! 'Storage_Unit'
  
       Specifies that array or record components are byte aligned, i.e.,
       aligned on boundaries determined by the value of the constant
       â€˜System.Storage_Unitâ€™.
  
! 'Default'
  
       Specifies that array or record components are aligned on default
       boundaries, appropriate to the underlying hardware or operating
*************** argument is a name that must have been p
*** 2610,2622 ****
  â€˜Importâ€™ with â€˜Conventionâ€™ = â€˜CPPâ€™.  Such name must be of one of the
  following forms:
  
!    * â€˜functionâ€™ â€˜Fnameâ€™ â€˜returnâ€™ Tâ€˜
  
!    * â€˜functionâ€™ â€˜Fnameâ€™ â€˜returnâ€™ Tâ€™Class
  
!    * â€˜functionâ€™ â€˜Fnameâ€™ (â€¦) â€˜returnâ€™ Tâ€˜
  
!    * â€˜functionâ€™ â€˜Fnameâ€™ (â€¦) â€˜returnâ€™ Tâ€™Class
  
  where â€˜Tâ€™ is a limited record type imported from C++ with pragma
  â€˜Importâ€™ and â€˜Conventionâ€™ = â€˜CPPâ€™.
--- 2610,2622 ----
  â€˜Importâ€™ with â€˜Conventionâ€™ = â€˜CPPâ€™.  Such name must be of one of the
  following forms:
  
!    * 'function' â€˜Fnameâ€™ 'return' T'
  
!    * 'function' â€˜Fnameâ€™ 'return' Tâ€™Class
  
!    * 'function' â€˜Fnameâ€™ (â€¦) 'return' T'
  
!    * 'function' â€˜Fnameâ€™ (â€¦) 'return' Tâ€™Class
  
  where â€˜Tâ€™ is a limited record type imported from C++ with pragma
  â€˜Importâ€™ and â€˜Conventionâ€™ = â€˜CPPâ€™.
*************** procedure call statement corresponding t
*** 2722,2728 ****
  terminating semicolon.  Pragmas are permitted in sequences of
  declarations, so you can use pragma â€˜Debugâ€™ to intersperse calls to
  debug procedures in the middle of declarations.  Debug pragmas can be
! enabled either by use of the command line switch â€˜-gnataâ€™ or by use of
  the pragma â€˜Check_Policyâ€™ with a first argument of â€˜Debugâ€™.
  
  
--- 2722,2728 ----
  terminating semicolon.  Pragmas are permitted in sequences of
  declarations, so you can use pragma â€˜Debugâ€™ to intersperse calls to
  debug procedures in the middle of declarations.  Debug pragmas can be
! enabled either by use of the command line switch '-gnata' or by use of
  the pragma â€˜Check_Policyâ€™ with a first argument of â€˜Debugâ€™.
  
  
*************** The following example shows the use of t
*** 2806,2814 ****
          end record;
       end DSSO1;
  
! In this example record types with names starting with â€˜Lâ€™ have
  â€˜Low_Order_Firstâ€™ scalar storage order, and record types with names
! starting with â€˜Hâ€™ have â€˜High_Order_Firstâ€™.  Note that in the case of
  â€˜H4aâ€™, the order is not inherited from the parent type.  Only an
  explicitly set â€˜Scalar_Storage_Orderâ€™ gets inherited on type derivation.
  
--- 2806,2814 ----
          end record;
       end DSSO1;
  
! In this example record types with names starting with 'L' have
  â€˜Low_Order_Firstâ€™ scalar storage order, and record types with names
! starting with 'H' have â€˜High_Order_Firstâ€™.  Note that in the case of
  â€˜H4aâ€™, the order is not inherited from the parent type.  Only an
  explicitly set â€˜Scalar_Storage_Orderâ€™ gets inherited on type derivation.
  
*************** Syntax:
*** 2963,2969 ****
  This is a configuration pragma which specifies the elaboration model to
  be used during compilation.  For more information on the elaboration
  models of GNAT, consult the chapter on elaboration order handling in the
! â€˜GNAT Userâ€™s Guideâ€™.
  
  The pragma may appear in the following contexts:
  
--- 2963,2969 ----
  This is a configuration pragma which specifies the elaboration model to
  be used during compilation.  For more information on the elaboration
  models of GNAT, consult the chapter on elaboration order handling in the
! 'GNAT Userâ€™s Guide'.
  
  The pragma may appear in the following contexts:
  
*************** entities either by selection or using a
*** 3381,3387 ****
  special processing is required.
  
  However, if existing code contains references such as â€˜System.XXXâ€™ where
! â€˜xxxâ€™ is an entity in the extended definitions provided in package
  â€˜Systemâ€™, you may use this pragma to extend visibility in â€˜Systemâ€™ in a
  non-standard way that provides greater compatibility with the existing
  code.  Pragma â€˜Extend_Systemâ€™ is a configuration pragma whose single
--- 3381,3387 ----
  special processing is required.
  
  However, if existing code contains references such as â€˜System.XXXâ€™ where
! 'xxx' is an entity in the extended definitions provided in package
  â€˜Systemâ€™, you may use this pragma to extend visibility in â€˜Systemâ€™ in a
  non-standard way that provides greater compatibility with the existing
  code.  Pragma â€˜Extend_Systemâ€™ is a configuration pragma whose single
*************** You can use this pragma either to access
*** 3396,3402 ****
  supplied with the compiler, for example â€˜Aux_DECâ€™ or you can construct
  your own extension unit following the above definition.  Note that such
  a package is a child of â€˜Systemâ€™ and thus is considered part of the
! implementation.  To compile it you will have to use the â€˜-gnatgâ€™ switch
  for compiling System units, as explained in the GNAT Userâ€™s Guide.
  
  
--- 3396,3402 ----
  supplied with the compiler, for example â€˜Aux_DECâ€™ or you can construct
  your own extension unit following the above definition.  Note that such
  a package is a child of â€˜Systemâ€™ and thus is considered part of the
! implementation.  To compile it you will have to use the '-gnatg' switch
  for compiling System units, as explained in the GNAT Userâ€™s Guide.
  
  
*************** considered more important for floating-p
*** 3543,3549 ****
  accurate adherence to the requirements of the standard.  Currently the
  following operations are affected:
  
! â€˜Complex Multiplicationâ€™
  
       The normal simple formula for complex multiplication can result in
       intermediate overflows for numbers near the end of the range.  The
--- 3543,3549 ----
  accurate adherence to the requirements of the standard.  Currently the
  following operations are affected:
  
! 'Complex Multiplication'
  
       The normal simple formula for complex multiplication can result in
       intermediate overflows for numbers near the end of the range.  The
*************** in several different ways:
*** 4124,4130 ****
  Note that pragma â€˜Initialize_Scalarsâ€™ is particularly useful in
  conjunction with the enhanced validity checking that is now provided in
  GNAT, which checks for invalid values under more conditions.  Using this
! feature (see description of the â€˜-gnatVâ€™ flag in the GNAT Userâ€™s Guide)
  in conjunction with pragma â€˜Initialize_Scalarsâ€™ provides a powerful new
  tool to assist in the detection of problems caused by uninitialized
  variables.
--- 4124,4130 ----
  Note that pragma â€˜Initialize_Scalarsâ€™ is particularly useful in
  conjunction with the enhanced validity checking that is now provided in
  GNAT, which checks for invalid values under more conditions.  Using this
! feature (see description of the '-gnatV' flag in the GNAT Userâ€™s Guide)
  in conjunction with pragma â€˜Initialize_Scalarsâ€™ provides a powerful new
  tool to assist in the detection of problems caused by uninitialized
  variables.
*************** Syntax:
*** 4174,4180 ****
  Similar to pragma â€˜Inlineâ€™ except that inlining is unconditional.
  Inline_Always instructs the compiler to inline every direct call to the
  subprogram or else to emit a compilation error, independently of any
! option, in particular â€˜-gnatnâ€™ or â€˜-gnatNâ€™ or the optimization level.
  It is an error to take the address or access of â€˜NAMEâ€™.  It is also an
  error to apply this pragma to a primitive operation of a tagged type.
  Thanks to such restrictions, the compiler is allowed to remove the
--- 4174,4180 ----
  Similar to pragma â€˜Inlineâ€™ except that inlining is unconditional.
  Inline_Always instructs the compiler to inline every direct call to the
  subprogram or else to emit a compilation error, independently of any
! option, in particular '-gnatn' or '-gnatN' or the optimization level.
  It is an error to take the address or access of â€˜NAMEâ€™.  It is also an
  error to apply this pragma to a primitive operation of a tagged type.
  Thanks to such restrictions, the compiler is allowed to remove the
*************** There are five supported optimization hi
*** 4790,4796 ****
  
  These hints do not remove the need to pass the appropriate switches to
  the compiler in order to enable the relevant optimizations, that is to
! say â€˜-funroll-loopsâ€™ for unrolling and â€˜-ftree-vectorizeâ€™ for
  vectorization.
  
  
--- 4790,4796 ----
  
  These hints do not remove the need to pass the appropriate switches to
  the compiler in order to enable the relevant optimizations, that is to
! say '-funroll-loops' for unrolling and '-ftree-vectorize' for
  vectorization.
  
  
*************** declarations.  This pragma is semantical
*** 4854,4860 ****
  â€˜__attribute__((ATTRIBUTE_NAME))â€™ (if â€˜infoâ€™ is not specified) or
  â€˜__attribute__((ATTRIBUTE_NAME(INFO)))â€™ or
  â€˜__attribute__((ATTRIBUTE_NAME(INFO,...)))â€™ in GNU C, where
! â€˜attribute_nameâ€™ is recognized by the compiler middle-end or the
  â€˜TARGET_ATTRIBUTE_TABLEâ€™ machine specific macro.  Note that a string
  literal for the optional parameter â€˜infoâ€™ or the following ones is
  transformed by default into an identifier, which may make this pragma
--- 4854,4860 ----
  â€˜__attribute__((ATTRIBUTE_NAME))â€™ (if â€˜infoâ€™ is not specified) or
  â€˜__attribute__((ATTRIBUTE_NAME(INFO)))â€™ or
  â€˜__attribute__((ATTRIBUTE_NAME(INFO,...)))â€™ in GNU C, where
! 'attribute_name' is recognized by the compiler middle-end or the
  â€˜TARGET_ATTRIBUTE_TABLEâ€™ machine specific macro.  Note that a string
  literal for the optional parameter â€˜infoâ€™ or the following ones is
  transformed by default into an identifier, which may make this pragma
*************** Syntax:
*** 5034,5041 ****
  This pragma suppresses inlining for the callable entity or the instances
  of the generic subprogram designated by â€˜NAMEâ€™, including inlining that
  results from the use of pragma â€˜Inlineâ€™.  This pragma is always active,
! in particular it is not subject to the use of option â€˜-gnatnâ€™ or
! â€˜-gnatNâ€™.  It is illegal to specify both pragma â€˜No_Inlineâ€™ and pragma
  â€˜Inline_Alwaysâ€™ for the same â€˜NAMEâ€™.
  
  
--- 5034,5041 ----
  This pragma suppresses inlining for the callable entity or the instances
  of the generic subprogram designated by â€˜NAMEâ€™, including inlining that
  results from the use of pragma â€˜Inlineâ€™.  This pragma is always active,
! in particular it is not subject to the use of option '-gnatn' or
! '-gnatN'.  It is illegal to specify both pragma â€˜No_Inlineâ€™ and pragma
  â€˜Inline_Alwaysâ€™ for the same â€˜NAMEâ€™.
  
  
*************** The effect is to cause all scalar object
*** 5160,5187 ****
  initialized to be initialized.  The initial values are implementation
  dependent and are as follows:
  
! â€˜Standard.Characterâ€™
  
       Objects whose root type is Standard.Character are initialized to
       Characterâ€™Last unless the subtype range excludes NUL (in which case
       NUL is used).  This choice will always generate an invalid value if
       one exists.
  
! â€˜Standard.Wide_Characterâ€™
  
       Objects whose root type is Standard.Wide_Character are initialized
       to Wide_Characterâ€™Last unless the subtype range excludes NUL (in
       which case NUL is used).  This choice will always generate an
       invalid value if one exists.
  
! â€˜Standard.Wide_Wide_Characterâ€™
  
       Objects whose root type is Standard.Wide_Wide_Character are
       initialized to the invalid value 16#FFFF_FFFF# unless the subtype
       range excludes NUL (in which case NUL is used).  This choice will
       always generate an invalid value if one exists.
  
! â€˜Integer typesâ€™
  
       Objects of an integer type are treated differently depending on
       whether negative values are present in the subtype.  If no negative
--- 5160,5187 ----
  initialized to be initialized.  The initial values are implementation
  dependent and are as follows:
  
! 'Standard.Character'
  
       Objects whose root type is Standard.Character are initialized to
       Characterâ€™Last unless the subtype range excludes NUL (in which case
       NUL is used).  This choice will always generate an invalid value if
       one exists.
  
! 'Standard.Wide_Character'
  
       Objects whose root type is Standard.Wide_Character are initialized
       to Wide_Characterâ€™Last unless the subtype range excludes NUL (in
       which case NUL is used).  This choice will always generate an
       invalid value if one exists.
  
! 'Standard.Wide_Wide_Character'
  
       Objects whose root type is Standard.Wide_Wide_Character are
       initialized to the invalid value 16#FFFF_FFFF# unless the subtype
       range excludes NUL (in which case NUL is used).  This choice will
       always generate an invalid value if one exists.
  
! 'Integer types'
  
       Objects of an integer type are treated differently depending on
       whether negative values are present in the subtype.  If no negative
*************** dependent and are as follows:
*** 5196,5221 ****
       is not, in which case the largest positive value is used.  This
       choice will always generate an invalid value if one exists.
  
! â€˜Floating-Point Typesâ€™
  
       Objects of all floating-point types are initialized to all 1-bits.
       For standard IEEE format, this corresponds to a NaN (not a number)
       which is indeed an invalid value.
  
! â€˜Fixed-Point Typesâ€™
  
       Objects of all fixed-point types are treated as described above for
       integers, with the rules applying to the underlying integer value
       used to represent the fixed-point value.
  
! â€˜Modular typesâ€™
  
       Objects of a modular type are initialized to all one bits, except
       in the special case where zero is excluded from the subtype, in
       which case all zero bits are used.  This choice will always
       generate an invalid value if one exists.
  
! â€˜Enumeration typesâ€™
  
       Objects of an enumeration type are initialized to all one-bits,
       i.e., to the value â€˜2 ** typ'Size - 1â€™ unless the subtype excludes
--- 5196,5221 ----
       is not, in which case the largest positive value is used.  This
       choice will always generate an invalid value if one exists.
  
! 'Floating-Point Types'
  
       Objects of all floating-point types are initialized to all 1-bits.
       For standard IEEE format, this corresponds to a NaN (not a number)
       which is indeed an invalid value.
  
! 'Fixed-Point Types'
  
       Objects of all fixed-point types are treated as described above for
       integers, with the rules applying to the underlying integer value
       used to represent the fixed-point value.
  
! 'Modular types'
  
       Objects of a modular type are initialized to all one bits, except
       in the special case where zero is excluded from the subtype, in
       which case all zero bits are used.  This choice will always
       generate an invalid value if one exists.
  
! 'Enumeration types'
  
       Objects of an enumeration type are initialized to all one-bits,
       i.e., to the value â€˜2 ** typ'Size - 1â€™ unless the subtype excludes
*************** possible colors, and the order is unimpo
*** 5422,5428 ****
  
  For unordered enumeration types, it is generally a good idea if clients
  avoid comparisons (other than equality or inequality) and explicit
! ranges.  (A â€˜clientâ€™ is a unit where the type is referenced, other than
  the unit where the type is declared, its body, and its subunits.)  For
  example, if code buried in some client says:
  
--- 5422,5428 ----
  
  For unordered enumeration types, it is generally a good idea if clients
  avoid comparisons (other than equality or inequality) and explicit
! ranges.  (A 'client' is a unit where the type is referenced, other than
  the unit where the type is declared, its body, and its subunits.)  For
  example, if code buried in some client says:
  
*************** depend on it, writing for example:
*** 5455,5461 ****
       if D in Mon .. Fri then ...
       if D < Wed then ...
  
! The pragma â€˜Orderedâ€™ is provided to mark enumeration types that are
  conceptually ordered, alerting the reader that clients may depend on the
  ordering.  GNAT provides a pragma to mark enumerations as ordered rather
  than one to mark them as unordered, since in our experience, the great
--- 5455,5461 ----
       if D in Mon .. Fri then ...
       if D < Wed then ...
  
! The pragma 'Ordered' is provided to mark enumeration types that are
  conceptually ordered, alerting the reader that clients may depend on the
  ordering.  GNAT provides a pragma to mark enumerations as ordered rather
  than one to mark them as unordered, since in our experience, the great
*************** The types â€˜Booleanâ€™, â€˜Characterâ€™
*** 5466,5472 ****
  declared with a pragma â€˜Orderedâ€™ in package â€˜Standardâ€™.
  
  Normally pragma â€˜Orderedâ€™ serves only as documentation and a guide for
! coding standards, but GNAT provides a warning switch â€˜-gnatw.uâ€™ that
  requests warnings for inappropriate uses (comparisons and explicit
  subranges) for unordered types.  If this switch is used, then any
  enumeration type not marked with pragma â€˜Orderedâ€™ will be considered as
--- 5466,5472 ----
  declared with a pragma â€˜Orderedâ€™ in package â€˜Standardâ€™.
  
  Normally pragma â€˜Orderedâ€™ serves only as documentation and a guide for
! coding standards, but GNAT provides a warning switch '-gnatw.u' that
  requests warnings for inappropriate uses (comparisons and explicit
  subranges) for unordered types.  If this switch is used, then any
  enumeration type not marked with pragma â€˜Orderedâ€™ will be considered as
*************** the template can be instantiated for bot
*** 5477,5483 ****
  warnings for the case of generic enumerated types.
  
  For additional information please refer to the description of the
! â€˜-gnatw.uâ€™ switch in the GNAT Userâ€™s Guide.
  
  
  File: gnat_rm.info,  Node: Pragma Overflow_Mode,  Next: Pragma Overriding_Renamings,  Prev: Pragma Ordered,  Up: Implementation Defined Pragmas
--- 5477,5483 ----
  warnings for the case of generic enumerated types.
  
  For additional information please refer to the description of the
! '-gnatw.u' switch in the GNAT Userâ€™s Guide.
  
  
  File: gnat_rm.info,  Node: Pragma Overflow_Mode,  Next: Pragma Overriding_Renamings,  Prev: Pragma Ordered,  Up: Implementation Defined Pragmas
*************** expressions.
*** 5681,5687 ****
  The postconditions are collected and automatically tested just before
  any return (implicit or explicit) in the subprogram body.  A
  postcondition is only recognized if postconditions are active at the
! time the pragma is encountered.  The compiler switch â€˜gnataâ€™ turns on
  all postconditions by default, and pragma â€˜Check_Policyâ€™ with an
  identifier of â€˜Postconditionâ€™ can also be used to control whether
  postconditions are active.
--- 5681,5687 ----
  The postconditions are collected and automatically tested just before
  any return (implicit or explicit) in the subprogram body.  A
  postcondition is only recognized if postconditions are active at the
! time the pragma is encountered.  The compiler switch 'gnata' turns on
  all postconditions by default, and pragma â€˜Check_Policyâ€™ with an
  identifier of â€˜Postconditionâ€™ can also be used to control whether
  postconditions are active.
*************** program being compiled, or on the code g
*** 6630,6649 ****
  To obtain the required output specified in RM H.3.1, the compiler must
  be run with various special switches as follows:
  
!    * â€˜Where compiler-generated run-time checks remainâ€™
  
!      The switch â€˜-gnatGLâ€™ may be used to list the expanded code in
       pseudo-Ada form.  Runtime checks show up in the listing either as
       explicit checks or operators marked with {} to indicate a check is
       present.
  
!    * â€˜An identification of known exceptions at compile timeâ€™
  
!      If the program is compiled with â€˜-gnatwaâ€™, the compiler warning
       messages will indicate all cases where the compiler detects that an
       exception is certain to occur at run time.
  
!    * â€˜Possible reads of uninitialized variablesâ€™
  
       The compiler warns of many such cases, but its output is
       incomplete.
--- 6630,6649 ----
  To obtain the required output specified in RM H.3.1, the compiler must
  be run with various special switches as follows:
  
!    * 'Where compiler-generated run-time checks remain'
  
!      The switch '-gnatGL' may be used to list the expanded code in
       pseudo-Ada form.  Runtime checks show up in the listing either as
       explicit checks or operators marked with {} to indicate a check is
       present.
  
!    * 'An identification of known exceptions at compile time'
  
!      If the program is compiled with '-gnatwa', the compiler warning
       messages will indicate all cases where the compiler detects that an
       exception is certain to occur at run time.
  
!    * 'Possible reads of uninitialized variables'
  
       The compiler warns of many such cases, but its output is
       incomplete.
*************** A supplemental static analysis tool may
*** 6652,6692 ****
  comprehensive list of all possible points at which uninitialized data
  may be read.
  
!    * â€˜Where run-time support routines are implicitly invokedâ€™
  
!      In the output from â€˜-gnatGLâ€™, run-time calls are explicitly listed
       as calls to the relevant run-time routine.
  
!    * â€˜Object code listingâ€™
  
!      This may be obtained either by using the â€˜-Sâ€™ switch, or the
       objdump utility.
  
!    * â€˜Constructs known to be erroneous at compile timeâ€™
  
       These are identified by warnings issued by the compiler (use
!      â€˜-gnatwaâ€™).
  
!    * â€˜Stack usage informationâ€™
  
       Static stack usage data (maximum per-subprogram) can be obtained
!      via the â€˜-fstack-usageâ€™ switch to the compiler.  Dynamic stack
!      usage data (per task) can be obtained via the â€˜-uâ€™ switch to
       gnatbind
  
!    * â€˜Object code listing of entire partitionâ€™
  
!      This can be obtained by compiling the partition with â€˜-Sâ€™, or by
       applying objdump to all the object files that are part of the
       partition.
  
!    * â€˜A description of the run-time modelâ€™
  
       The full sources of the run-time are available, and the
       documentation of these routines describes how these run-time
       routines interface to the underlying operating system facilities.
  
!    * â€˜Control and data-flow informationâ€™
  
  A supplemental static analysis tool may be used to obtain complete
  control and data-flow information, as well as comprehensive messages
--- 6652,6692 ----
  comprehensive list of all possible points at which uninitialized data
  may be read.
  
!    * 'Where run-time support routines are implicitly invoked'
  
!      In the output from '-gnatGL', run-time calls are explicitly listed
       as calls to the relevant run-time routine.
  
!    * 'Object code listing'
  
!      This may be obtained either by using the '-S' switch, or the
       objdump utility.
  
!    * 'Constructs known to be erroneous at compile time'
  
       These are identified by warnings issued by the compiler (use
!      '-gnatwa').
  
!    * 'Stack usage information'
  
       Static stack usage data (maximum per-subprogram) can be obtained
!      via the '-fstack-usage' switch to the compiler.  Dynamic stack
!      usage data (per task) can be obtained via the '-u' switch to
       gnatbind
  
!    * 'Object code listing of entire partition'
  
!      This can be obtained by compiling the partition with '-S', or by
       applying objdump to all the object files that are part of the
       partition.
  
!    * 'A description of the run-time model'
  
       The full sources of the run-time are available, and the
       documentation of these routines describes how these run-time
       routines interface to the underlying operating system facilities.
  
!    * 'Control and data-flow information'
  
  A supplemental static analysis tool may be used to obtain complete
  control and data-flow information, as well as comprehensive messages
*************** This pragma must appear as the first lin
*** 6986,6992 ****
  pragma line (for use in error messages and debugging information).
  â€˜string_literalâ€™ is a static string constant that specifies the file
  name to be used in error messages and debugging information.  This is
! most notably used for the output of â€˜gnatchopâ€™ with the â€˜-râ€™ switch, to
  make sure that the original unchopped source file is the one referred
  to.
  
--- 6986,6992 ----
  pragma line (for use in error messages and debugging information).
  â€˜string_literalâ€™ is a static string constant that specifies the file
  name to be used in error messages and debugging information.  This is
! most notably used for the output of â€˜gnatchopâ€™ with the '-r' switch, to
  make sure that the original unchopped source file is the one referred
  to.
  
*************** is legal, including use as a configurati
*** 7176,7182 ****
  The form with a string literal specifies which style options are to be
  activated.  These are additive, so they apply in addition to any
  previously set style check options.  The codes for the options are the
! same as those used in the â€˜-gnatyâ€™ switch to â€˜gccâ€™ or â€˜gnatmakeâ€™.  For
  example the following two methods can be used to enable layout checking
  and to change the maximum nesting level value:
  
--- 7176,7182 ----
  The form with a string literal specifies which style options are to be
  activated.  These are additive, so they apply in addition to any
  previously set style check options.  The codes for the options are the
! same as those used in the '-gnaty' switch to 'gcc' or 'gnatmake'.  For
  example the following two methods can be used to enable layout checking
  and to change the maximum nesting level value:
  
*************** The form with a string literal specifies
*** 8087,8093 ****
  be activated.  The validity checks are first set to include only the
  default reference manual settings, and then a string of letters in the
  string specifies the exact set of options required.  The form of this
! string is exactly as described for the â€˜-gnatVxâ€™ compiler switch (see
  the GNAT Userâ€™s Guide for details).  For example the following two
  methods can be used to enable validity checking for mode â€˜inâ€™ and â€˜in
  outâ€™ subprogram parameters:
--- 8087,8093 ----
  be activated.  The validity checks are first set to include only the
  default reference manual settings, and then a string of letters in the
  string specifies the exact set of options required.  The form of this
! string is exactly as described for the '-gnatVx' compiler switch (see
  the GNAT Userâ€™s Guide for details).  For example the following two
  methods can be used to enable validity checking for mode â€˜inâ€™ and â€˜in
  outâ€™ subprogram parameters:
*************** message string (it is not necessary to p
*** 8196,8202 ****
  the end of the message, since this is implied).
  
  Another possibility for the static_string_EXPRESSION which works whether
! or not error tags are enabled (â€˜-gnatw.dâ€™) is to use a single â€˜-gnatwâ€™
  tag string, enclosed in brackets, as shown in the example below, to
  treat one category of warnings as errors.  Note that if you want to
  treat multiple categories of warnings as errors, you can use multiple
--- 8196,8202 ----
  the end of the message, since this is implied).
  
  Another possibility for the static_string_EXPRESSION which works whether
! or not error tags are enabled ('-gnatw.d') is to use a single '-gnatw'
  tag string, enclosed in brackets, as shown in the example below, to
  treat one category of warnings as errors.  Note that if you want to
  treat multiple categories of warnings as errors, you can use multiple
*************** pragma Warning_As_Error.
*** 8205,8211 ****
  The above use of patterns to match the message applies only to warning
  messages generated by the front end.  This pragma can also be applied to
  warnings provided by the back end and mentioned in *note Pragma
! Warnings: 128.  By using a single full â€˜-Wxxxâ€™ switch in the pragma,
  such warnings can also be treated as errors.
  
  The pragma can appear either in a global configuration pragma file (e.g.
--- 8205,8211 ----
  The above use of patterns to match the message applies only to warning
  messages generated by the front end.  This pragma can also be applied to
  warnings provided by the back end and mentioned in *note Pragma
! Warnings: 128.  By using a single full '-Wxxx' switch in the pragma,
  such warnings can also be treated as errors.
  
  The pragma can appear either in a global configuration pragma file (e.g.
*************** pragma file containing:
*** 8215,8222 ****
       pragma Warning_As_Error ("[-gnatwj]");
  
  which will treat all obsolescent feature warnings as errors, the
! following program compiles as shown (compile options here are â€˜-gnatwa.d
! -gnatl -gnatj55â€™).
  
           1. pragma Warning_As_Error ("*never assigned*");
           2. function Warnerr return String is
--- 8215,8222 ----
       pragma Warning_As_Error ("[-gnatwj]");
  
  which will treat all obsolescent feature warnings as errors, the
! following program compiles as shown (compile options here are '-gnatwa.d
! -gnatl -gnatj55').
  
           1. pragma Warning_As_Error ("*never assigned*");
           2. function Warnerr return String is
*************** string expression (which does not exist
*** 8274,8280 ****
  Note if the second argument of â€˜DETAILSâ€™ is a â€˜local_NAMEâ€™ then the
  second form is always understood.  If the intention is to use the fourth
  form, then you can write â€˜NAME & ""â€™ to force the interpretation as a
! â€˜static_string_EXPRESSIONâ€™.
  
  Note: if the first argument is a valid â€˜TOOL_NAMEâ€™, it will be
  interpreted that way.  The use of the â€˜TOOL_NAMEâ€™ argument is relevant
--- 8274,8280 ----
  Note if the second argument of â€˜DETAILSâ€™ is a â€˜local_NAMEâ€™ then the
  second form is always understood.  If the intention is to use the fourth
  form, then you can write â€˜NAME & ""â€™ to force the interpretation as a
! 'static_string_EXPRESSION'.
  
  Note: if the first argument is a valid â€˜TOOL_NAMEâ€™, it will be
  interpreted that way.  The use of the â€˜TOOL_NAMEâ€™ argument is relevant
*************** front end of the compiler.  The GCC back
*** 8322,8328 ****
  warnings and they are controlled by the â€˜-Wâ€™ switch.  Such warnings can
  be identified by the appearance of a string of the form â€˜[-W{xxx}]â€™ in
  the message which designates the â€˜-W`xxx'â€™ switch that controls the
! message.  The form with a single â€˜static_string_EXPRESSIONâ€™ argument
  also works for these warnings, but the string must be a single full
  â€˜-W`xxx'â€™ switch in this case.  The above reference lists a few examples
  of these additional warnings.
--- 8322,8328 ----
  warnings and they are controlled by the â€˜-Wâ€™ switch.  Such warnings can
  be identified by the appearance of a string of the form â€˜[-W{xxx}]â€™ in
  the message which designates the â€˜-W`xxx'â€™ switch that controls the
! message.  The form with a single 'static_string_EXPRESSION' argument
  also works for these warnings, but the string must be a single full
  â€˜-W`xxx'â€™ switch in this case.  The above reference lists a few examples
  of these additional warnings.
*************** pragmas must appear in sequence:
*** 8370,8376 ****
       pragma Warnings (On, Pattern);
  
  In this usage, the pattern string must match in the Off and On pragmas,
! and (if â€˜-gnatw.wâ€™ is given) at least one matching warning must be
  suppressed.
  
  Note: if the ON form is not found, then the effect of the OFF form
--- 8370,8376 ----
       pragma Warnings (On, Pattern);
  
  In this usage, the pattern string must match in the Off and On pragmas,
! and (if '-gnatw.w' is given) at least one matching warning must be
  suppressed.
  
  Note: if the ON form is not found, then the effect of the OFF form
*************** File: gnat_rm.info,  Node: Aspect Annota
*** 8627,8641 ****
  There are three forms of this aspect (where ID is an identifier, and ARG
  is a general expression), corresponding to *note pragma Annotate: 2b.
  
! â€˜Annotate => IDâ€™
  
       Equivalent to â€˜pragma Annotate (ID, Entity => Name);â€™
  
! â€˜Annotate => (ID)â€™
  
       Equivalent to â€˜pragma Annotate (ID, Entity => Name);â€™
  
! â€˜Annotate => (ID ,ID {, ARG})â€™
  
       Equivalent to â€˜pragma Annotate (ID, ID {, ARG}, Entity => Name);â€™
  
--- 8627,8641 ----
  There are three forms of this aspect (where ID is an identifier, and ARG
  is a general expression), corresponding to *note pragma Annotate: 2b.
  
! 'Annotate => ID'
  
       Equivalent to â€˜pragma Annotate (ID, Entity => Name);â€™
  
! 'Annotate => (ID)'
  
       Equivalent to â€˜pragma Annotate (ID, Entity => Name);â€™
  
! 'Annotate => (ID ,ID {, ARG})'
  
       Equivalent to â€˜pragma Annotate (ID, ID {, ARG}, Entity => Name);â€™
  
*************** File: gnat_rm.info,  Node: Attribute Bit
*** 9591,9597 ****
  â€˜obj'Bitâ€™, where â€˜objâ€™ is any object, yields the bit offset within the
  storage unit (byte) that contains the first bit of storage allocated for
  the object.  The value of this attribute is of the type
! â€˜universal_integerâ€™ and is always a nonnegative number smaller than
  â€˜System.Storage_Unitâ€™.
  
  For an object that is a variable or a constant allocated in a register,
--- 9591,9597 ----
  â€˜obj'Bitâ€™, where â€˜objâ€™ is any object, yields the bit offset within the
  storage unit (byte) that contains the first bit of storage allocated for
  the object.  The value of this attribute is of the type
! 'universal_integer' and is always a nonnegative number smaller than
  â€˜System.Storage_Unitâ€™.
  
  For an object that is a variable or a constant allocated in a register,
*************** File: gnat_rm.info,  Node: Attribute Bit
*** 9619,9625 ****
  â€˜R.C'Bit_Positionâ€™, where â€˜Râ€™ is a record object and â€˜Câ€™ is one of the
  fields of the record type, yields the bit offset within the record
  contains the first bit of storage allocated for the object.  The value
! of this attribute is of the type â€˜universal_integerâ€™.  The value depends
  only on the field â€˜Câ€™ and is independent of the alignment of the
  containing record â€˜Râ€™.
  
--- 9619,9625 ----
  â€˜R.C'Bit_Positionâ€™, where â€˜Râ€™ is a record object and â€˜Câ€™ is one of the
  fields of the record type, yields the bit offset within the record
  contains the first bit of storage allocated for the object.  The value
! of this attribute is of the type 'universal_integer'.  The value depends
  only on the field â€˜Câ€™ and is independent of the alignment of the
  containing record â€˜Râ€™.
  
*************** File: gnat_rm.info,  Node: Attribute Fin
*** 9913,9919 ****
  The prefix of attribute â€˜Finalization_Sizeâ€™ must be an object or a
  non-class-wide type.  This attribute returns the size of any hidden data
  reserved by the compiler to handle finalization-related actions.  The
! type of the attribute is â€˜universal_integerâ€™.
  
  â€˜Finalization_Sizeâ€™ yields a value of zero for a type with no controlled
  parts, an object whose type has no controlled parts, or an object of a
--- 9913,9919 ----
  The prefix of attribute â€˜Finalization_Sizeâ€™ must be an object or a
  non-class-wide type.  This attribute returns the size of any hidden data
  reserved by the compiler to handle finalization-related actions.  The
! type of the attribute is 'universal_integer'.
  
  â€˜Finalization_Sizeâ€™ yields a value of zero for a type with no controlled
  parts, an object whose type has no controlled parts, or an object of a
*************** File: gnat_rm.info,  Node: Attribute Mec
*** 10173,10187 ****
  
  â€˜func'Mechanism_Codeâ€™ yields an integer code for the mechanism used for
  the result of function â€˜funcâ€™, and â€˜subprog'Mechanism_Code (n)â€™ yields
! the mechanism used for formal parameter number â€˜nâ€™ (a static integer
  value, with 1 meaning the first parameter) of subprogram â€˜subprogâ€™.  The
  code returned is:
  
! â€˜1â€™
  
       by copy (value)
  
! â€˜2â€™
  
       by reference
  
--- 10173,10187 ----
  
  â€˜func'Mechanism_Codeâ€™ yields an integer code for the mechanism used for
  the result of function â€˜funcâ€™, and â€˜subprog'Mechanism_Code (n)â€™ yields
! the mechanism used for formal parameter number 'n' (a static integer
  value, with 1 meaning the first parameter) of subprogram â€˜subprogâ€™.  The
  code returned is:
  
! '1'
  
       by copy (value)
  
! '2'
  
       by reference
  
*************** normally the native ordering of the targ
*** 10534,10540 ****
  overridden using pragma â€˜Default_Scalar_Storage_Orderâ€™.
  
  If a component of â€˜Tâ€™ is itself of a record or array type, the specfied
! â€˜Scalar_Storage_Orderâ€™ does â€˜notâ€™ apply to that nested type: an explicit
  attribute definition clause must be provided for the component type as
  well if desired.
  
--- 10534,10540 ----
  overridden using pragma â€˜Default_Scalar_Storage_Orderâ€™.
  
  If a component of â€˜Tâ€™ is itself of a record or array type, the specfied
! â€˜Scalar_Storage_Orderâ€™ does 'not' apply to that nested type: an explicit
  attribute definition clause must be provided for the component type as
  well if desired.
  
*************** then the evaluation of an allocator for
*** 10630,10637 ****
  primitive â€˜Allocateâ€™ procedure for type â€˜SSPâ€™, passing
  â€˜S'Simple_Storage_Poolâ€™ as the pool parameter.  The detailed semantics
  of such allocators is the same as those defined for allocators in
! section 13.11 of the â€˜Ada Reference Manualâ€™, with the term â€˜simple
! storage poolâ€™ substituted for â€˜storage poolâ€™.
  
  If an access type â€˜Sâ€™ has a specified simple storage pool of type â€˜SSPâ€™,
  then a call to an instance of the â€˜Ada.Unchecked_Deallocationâ€™ for that
--- 10630,10637 ----
  primitive â€˜Allocateâ€™ procedure for type â€˜SSPâ€™, passing
  â€˜S'Simple_Storage_Poolâ€™ as the pool parameter.  The detailed semantics
  of such allocators is the same as those defined for allocators in
! section 13.11 of the â€˜Ada Reference Manualâ€™, with the term 'simple
! storage pool' substituted for 'storage pool'.
  
  If an access type â€˜Sâ€™ has a specified simple storage pool of type â€˜SSPâ€™,
  then a call to an instance of the â€˜Ada.Unchecked_Deallocationâ€™ for that
*************** access type invokes the primitive â€˜Dea
*** 10639,10645 ****
  passing â€˜S'Simple_Storage_Poolâ€™ as the pool parameter.  The detailed
  semantics of such unchecked deallocations is the same as defined in
  section 13.11.2 of the Ada Reference Manual, except that the term
! â€˜simple storage poolâ€™ is substituted for â€˜storage poolâ€™.
  
  
  File: gnat_rm.info,  Node: Attribute Small,  Next: Attribute Small_Denominator,  Prev: Attribute Simple_Storage_Pool,  Up: Implementation Defined Attributes
--- 10639,10645 ----
  passing â€˜S'Simple_Storage_Poolâ€™ as the pool parameter.  The detailed
  semantics of such unchecked deallocations is the same as defined in
  section 13.11.2 of the Ada Reference Manual, except that the term
! 'simple storage pool' is substituted for 'storage pool'.
  
  
  File: gnat_rm.info,  Node: Attribute Small,  Next: Attribute Small_Denominator,  Prev: Attribute Simple_Storage_Pool,  Up: Implementation Defined Attributes
*************** Pragma                   Explanation
*** 12740,12773 ****
                           
  -------------------------------------------------
                           
! â€˜Abort_Deferâ€™            Affects semantics
                           
                           
! â€˜Ada_83â€™                 Affects legality
                           
                           
! â€˜Assertâ€™                 Affects semantics
                           
                           
! â€˜CPP_Classâ€™              Affects semantics
                           
                           
! â€˜CPP_Constructorâ€™        Affects semantics
                           
                           
! â€˜Debugâ€™                  Affects semantics
                           
                           
! â€˜Interface_Nameâ€™         Affects semantics
                           
                           
! â€˜Machine_Attributeâ€™      Affects semantics
                           
                           
! â€˜Unimplemented_Unitâ€™     Affects legality
                           
                           
! â€˜Unchecked_Unionâ€™        Affects semantics
                           
  
  In each of the above cases, it is essential to the purpose of the pragma
--- 12740,12773 ----
                           
  -------------------------------------------------
                           
! 'Abort_Defer'            Affects semantics
                           
                           
! 'Ada_83'                 Affects legality
                           
                           
! 'Assert'                 Affects semantics
                           
                           
! 'CPP_Class'              Affects semantics
                           
                           
! 'CPP_Constructor'        Affects semantics
                           
                           
! 'Debug'                  Affects semantics
                           
                           
! 'Interface_Name'         Affects semantics
                           
                           
! 'Machine_Attribute'      Affects semantics
                           
                           
! 'Unimplemented_Unit'     Affects legality
                           
                           
! 'Unchecked_Union'        Affects semantics
                           
  
  In each of the above cases, it is essential to the purpose of the pragma
*************** File: gnat_rm.info,  Node: RM 3 6 2 11 M
*** 12896,12902 ****
       multidimensional array aggregates (see 4.3.3).  However, if a
       pragma â€˜Conventionâ€™ (â€˜Fortranâ€™, â€¦) applies to a multidimensional
       array type, then column-major order should be used instead (see
!      B.5, â€˜Interfacing with Fortranâ€™).â€�
  
  Followed.
  
--- 12896,12902 ----
       multidimensional array aggregates (see 4.3.3).  However, if a
       pragma â€˜Conventionâ€™ (â€˜Fortranâ€™, â€¦) applies to a multidimensional
       array type, then column-major order should be used instead (see
!      B.5, 'Interfacing with Fortran').â€�
  
  Followed.
  
*************** File: gnat_rm.info,  Node: RM 13 2 6-8 P
*** 13024,13030 ****
  
       For a packed record type, the components should be packed as
       tightly as possible subject to the Sizes of the component subtypes,
!      and subject to any â€˜record_representation_clauseâ€™ that applies to
       the type; the implementation may, but need not, reorder components
       or cross aligned word boundaries to improve the packing.  A
       component whose â€˜Sizeâ€™ is greater than the word size may be
--- 13024,13030 ----
  
       For a packed record type, the components should be packed as
       tightly as possible subject to the Sizes of the component subtypes,
!      and subject to any 'record_representation_clause' that applies to
       the type; the implementation may, but need not, reorder components
       or cross aligned word boundaries to improve the packing.  A
       component whose â€˜Sizeâ€™ is greater than the word size may be
*************** File: gnat_rm.info,  Node: RM 13 5 1 17-
*** 13218,13224 ****
  ====================================================
  
       â€œThe recommended level of support for
!      â€˜record_representation_clauseâ€™s is:
  
       An implementation should support storage places that can be
       extracted with a load, mask, shift sequence of machine code, and
--- 13218,13224 ----
  ====================================================
  
       â€œThe recommended level of support for
!      'record_representation_clause's is:
  
       An implementation should support storage places that can be
       extracted with a load, mask, shift sequence of machine code, and
*************** Followed.  The storage place for the tag
*** 13248,13254 ****
  tagged record, and its size is Addressâ€™Size.  GNAT will reject an
  explicit component clause for the tag field.
  
!      â€œAn implementation need not support a â€˜component_clauseâ€™ for a
       component of an extension part if the storage place is not after
       the storage places of all components of the parent type, whether or
       not those storage places had been specified.â€�
--- 13248,13254 ----
  tagged record, and its size is Addressâ€™Size.  GNAT will reject an
  explicit component clause for the tag field.
  
!      â€œAn implementation need not support a 'component_clause' for a
       component of an extension part if the storage place is not after
       the storage places of all components of the parent type, whether or
       not those storage places had been specified.â€�
*************** Followed when the main program is in Ada
*** 13535,13544 ****
  foreign language, then â€˜adainitâ€™ must be called to elaborate
  pre-elaborated packages.
  
!      â€œFor each supported convention â€˜Lâ€™ other than â€˜Intrinsicâ€™, an
       implementation should support â€˜Importâ€™ and â€˜Exportâ€™ pragmas for
!      objects of â€˜Lâ€™-compatible types and for subprograms, and pragma
!      â€˜Conventionâ€™ for â€˜Lâ€™-eligible types and for subprograms, presuming
       the other language has corresponding features.  Pragma â€˜Conventionâ€™
       need not be supported for scalar types.â€�
  
--- 13535,13544 ----
  foreign language, then â€˜adainitâ€™ must be called to elaborate
  pre-elaborated packages.
  
!      â€œFor each supported convention 'L' other than â€˜Intrinsicâ€™, an
       implementation should support â€˜Importâ€™ and â€˜Exportâ€™ pragmas for
!      objects of 'L'-compatible types and for subprograms, and pragma
!      â€˜Conventionâ€™ for 'L'-eligible types and for subprograms, presuming
       the other language has corresponding features.  Pragma â€˜Conventionâ€™
       need not be supported for scalar types.â€�
  
*************** File: gnat_rm.info,  Node: RM D 6 9-10 P
*** 13876,13885 ****
  6.54 RM D.6(9-10): Preemptive Abort
  ===================================
  
!      â€œEven though the â€˜abort_statementâ€™ is included in the list of
       potentially blocking operations (see 9.5.1), it is recommended that
       this statement be implemented in a way that never requires the task
!      executing the â€˜abort_statementâ€™ to block.â€�
  
  Followed.
  
--- 13876,13885 ----
  6.54 RM D.6(9-10): Preemptive Abort
  ===================================
  
!      â€œEven though the 'abort_statement' is included in the list of
       potentially blocking operations (see 9.5.1), it is recommended that
       this statement be implemented in a way that never requires the task
!      executing the 'abort_statement' to block.â€�
  
  Followed.
  
*************** There are no variations from the standar
*** 14148,14154 ****
     * â€œWhich code_statements cause external interactions.  See
       1.1.3(10).â€�
  
! Any â€˜code_statementâ€™ can potentially cause external interactions.
  
     * â€œThe coded representation for the text of an Ada program.  See
       2.1(4).â€�
--- 14148,14154 ----
     * â€œWhich code_statements cause external interactions.  See
       1.1.3(10).â€�
  
! Any 'code_statement' can potentially cause external interactions.
  
     * â€œThe coded representation for the text of an Ada program.  See
       2.1(4).â€�
*************** See separate section on source represent
*** 14169,14176 ****
  
  The maximum line length is 255 characters and the maximum length of a
  lexical element is also 255 characters.  This is the default setting if
! not overridden by the use of compiler switch â€˜-gnatyâ€™ (which sets the
! maximum to 79) or â€˜-gnatyMnnâ€™ which allows the maximum line length to be
  specified to be any value up to 32767.  The maximum length of a lexical
  element is the same as the maximum line length.
  
--- 14169,14176 ----
  
  The maximum line length is 255 characters and the maximum length of a
  lexical element is also 255 characters.  This is the default setting if
! not overridden by the use of compiler switch '-gnaty' (which sets the
! maximum to 79) or '-gnatyMnn' which allows the maximum line length to be
  specified to be any value up to 32767.  The maximum length of a lexical
  element is the same as the maximum line length.
  
*************** Type                          Representa
*** 14199,14222 ****
                                
  --------------------------------------------------------------------------
                                
! â€˜Short_Short_Integerâ€™         8-bit signed
                                
                                
! â€˜Short_Integerâ€™               16-bit signed
                                
                                
! â€˜Integerâ€™                     32-bit signed
                                
                                
! â€˜Long_Integerâ€™                64-bit signed (on most 64-bit targets,
                                depending on the C definition of long)
                                32-bit signed (on all other targets)
                                
                                
! â€˜Long_Long_Integerâ€™           64-bit signed
                                
                                
! â€˜Long_Long_Long_Integerâ€™      128-bit signed (on 64-bit targets) 64-bit
                                signed (on 32-bit targets)
                                
  
--- 14199,14222 ----
                                
  --------------------------------------------------------------------------
                                
! 'Short_Short_Integer'         8-bit signed
                                
                                
! 'Short_Integer'               16-bit signed
                                
                                
! 'Integer'                     32-bit signed
                                
                                
! 'Long_Integer'                64-bit signed (on most 64-bit targets,
                                depending on the C definition of long)
                                32-bit signed (on all other targets)
                                
                                
! 'Long_Long_Integer'           64-bit signed
                                
                                
! 'Long_Long_Long_Integer'      128-bit signed (on 64-bit targets) 64-bit
                                signed (on 32-bit targets)
                                
  
*************** Type                       Representatio
*** 14243,14258 ****
                             
  -------------------------------------------------------------------------------
                             
! â€˜Short_Floatâ€™              IEEE Binary32 (Single)
                             
                             
! â€˜Floatâ€™                    IEEE Binary32 (Single)
                             
                             
! â€˜Long_Floatâ€™               IEEE Binary64 (Double)
                             
                             
! â€˜Long_Long_Floatâ€™          IEEE Binary64 (Double) on non-x86 architectures
                             IEEE 80-bit Extended on x86 architecture
                             
  
--- 14243,14258 ----
                             
  -------------------------------------------------------------------------------
                             
! 'Short_Float'              IEEE Binary32 (Single)
                             
                             
! 'Float'                    IEEE Binary32 (Single)
                             
                             
! 'Long_Float'               IEEE Binary64 (Double)
                             
                             
! 'Long_Long_Float'          IEEE Binary64 (Double) on non-x86 architectures
                             IEEE 80-bit Extended on x86 architecture
                             
  
*************** in 1.0E-18 ..  1.0E+18 and the digits in
*** 14295,14303 ****
  the small must lie in 1.0E-38 ..  1.0E+38 and the digits in 1 ..  38.
  
     * â€œThe result of â€˜Tags.Expanded_Nameâ€™ for types declared within an
!      unnamed â€˜block_statementâ€™.  See 3.9(10).â€�
  
! Block numbers of the form â€˜BNNNâ€™, where â€˜nnnâ€™ is a decimal integer are
  allocated.
  
     * â€œThe sequence of characters of the value returned by
--- 14295,14303 ----
  the small must lie in 1.0E-38 ..  1.0E+38 and the digits in 1 ..  38.
  
     * â€œThe result of â€˜Tags.Expanded_Nameâ€™ for types declared within an
!      unnamed 'block_statement'.  See 3.9(10).â€�
  
! Block numbers of the form â€˜BNNNâ€™, where 'nnn' is a decimal integer are
  allocated.
  
     * â€œThe sequence of characters of the value returned by
*************** Difficult to characterize.
*** 14353,14359 ****
     * â€œAny extensions of the Default_Initial_Condition aspect.  See
       7.3.3(11).â€�
  
! SPARK allows specifying â€˜nullâ€™ as the Default_Initial_Condition aspect
  of a type.  See the SPARK reference manual for further details.
  
     * â€œAny implementation-defined time types.  See 9.6(6).â€�
--- 14353,14359 ----
     * â€œAny extensions of the Default_Initial_Condition aspect.  See
       7.3.3(11).â€�
  
! SPARK allows specifying 'null' as the Default_Initial_Condition aspect
  of a type.  See the SPARK reference manual for further details.
  
     * â€œAny implementation-defined time types.  See 9.6(6).â€�
*************** The time zone used by package â€˜Calenda
*** 14377,14383 ****
  setting for local time, as accessed by the C library function
  â€˜localtimeâ€™.
  
!    * â€œAny limit on â€˜delay_until_statementsâ€™ of â€˜select_statementsâ€™.  See
       9.6(29).â€�
  
  There are no such limits.
--- 14377,14383 ----
  setting for local time, as accessed by the C library function
  â€˜localtimeâ€™.
  
!    * â€œAny limit on 'delay_until_statements' of 'select_statements'.  See
       9.6(29).â€�
  
  There are no such limits.
*************** There are no implementation-defined conf
*** 14394,14400 ****
     * â€œThe representation for a compilation.  See 10.1(2).â€�
  
  A compilation is represented by a sequence of files presented to the
! compiler in a single invocation of the â€˜gccâ€™ command.
  
     * â€œAny restrictions on compilations that contain multiple
       compilation_units.  See 10.1(4).â€�
--- 14394,14400 ----
     * â€œThe representation for a compilation.  See 10.1(2).â€�
  
  A compilation is represented by a sequence of files presented to the
! compiler in a single invocation of the 'gcc' command.
  
     * â€œAny restrictions on compilations that contain multiple
       compilation_units.  See 10.1(4).â€�
*************** e.g., by foreign language units, then al
*** 14423,14434 ****
  context clause of one of the needed Ada units.
  
  If the partition contains no main program, or if the main program is in
! a language other than Ada, then GNAT provides the binder options â€˜-zâ€™
! and â€˜-nâ€™ respectively, and in this case a list of units can be
  explicitly supplied to the binder for inclusion in the partition (all
  units needed by these units will also be included automatically).  For
! full details on the use of these options, refer to â€˜GNAT Make Program
! gnatmakeâ€™ in the â€˜GNAT Userâ€™s Guideâ€™.
  
     * â€œThe implementation-defined means, if any, of specifying which
       compilation units are needed by a given compilation unit.  See
--- 14423,14434 ----
  context clause of one of the needed Ada units.
  
  If the partition contains no main program, or if the main program is in
! a language other than Ada, then GNAT provides the binder options '-z'
! and '-n' respectively, and in this case a list of units can be
  explicitly supplied to the binder for inclusion in the partition (all
  units needed by these units will also be included automatically).  For
! full details on the use of these options, refer to 'GNAT Make Program
! gnatmake' in the â€˜GNAT Userâ€™s Guideâ€™.
  
     * â€œThe implementation-defined means, if any, of specifying which
       compilation units are needed by a given compilation unit.  See
*************** units.
*** 14445,14451 ****
  The main program is designated by providing the name of the
  corresponding â€˜ALIâ€™ file as the input parameter to the binder.
  
!    * â€œThe order of elaboration of â€˜library_itemsâ€™.  See 10.2(18).â€�
  
  The first constraint on ordering is that it meets the requirements of
  Chapter 10 of the Ada Reference Manual.  This still leaves some
--- 14445,14451 ----
  The main program is designated by providing the name of the
  corresponding â€˜ALIâ€™ file as the input parameter to the binder.
  
!    * â€œThe order of elaboration of 'library_items'.  See 10.2(18).â€�
  
  The first constraint on ordering is that it meets the requirements of
  Chapter 10 of the Ada Reference Manual.  This still leaves some
*************** Exception message returns the null strin
*** 14488,14496 ****
  been passed by the program.
  
     * â€œThe result of â€˜Exceptions.Exception_Nameâ€™ for types declared
!      within an unnamed â€˜block_statementâ€™.  See 11.4.1(12).â€�
  
! Blocks have implementation defined names of the form â€˜BNNNâ€™ where â€˜nnnâ€™
  is an integer.
  
     * â€œThe information returned by â€˜Exception_Informationâ€™.  See
--- 14488,14496 ----
  been passed by the program.
  
     * â€œThe result of â€˜Exceptions.Exception_Nameâ€™ for types declared
!      within an unnamed 'block_statement'.  See 11.4.1(12).â€�
  
! Blocks have implementation defined names of the form â€˜BNNNâ€™ where 'nnn'
  is an integer.
  
     * â€œThe information returned by â€˜Exception_Informationâ€™.  See
*************** declarations are added to package System
*** 14645,14651 ****
  See the definition of package System.Storage_Elements in â€˜s-stoele.adsâ€™.
  
     * â€œThe contents of the visible part of package â€˜System.Machine_Codeâ€™,
!      and the meaning of â€˜code_statementsâ€™.  See 13.8(7).â€�
  
  See the definition and documentation in file â€˜s-maccod.adsâ€™.
  
--- 14645,14651 ----
  See the definition of package System.Storage_Elements in â€˜s-stoele.adsâ€™.
  
     * â€œThe contents of the visible part of package â€˜System.Machine_Codeâ€™,
!      and the meaning of 'code_statements'.  See 13.8(7).â€�
  
  See the definition and documentation in file â€˜s-maccod.adsâ€™.
  
*************** state vector.
*** 14783,14789 ****
       â€˜Modelâ€™, â€˜Safe_Firstâ€™, and â€˜Safe_Lastâ€™ attributes, if the Numerics
       Annex is not supported.  See A.5.3(72).â€�
  
! Running the compiler with â€˜-gnatSâ€™ to produce a listing of package
  â€˜Standardâ€™ displays the values of these attributes.
  
     * â€œThe value of â€˜Buffer_Sizeâ€™ in â€˜Storage_IOâ€™.  See A.9(10).â€�
--- 14783,14789 ----
       â€˜Modelâ€™, â€˜Safe_Firstâ€™, and â€˜Safe_Lastâ€™ attributes, if the Numerics
       Annex is not supported.  See A.5.3(72).â€�
  
! Running the compiler with '-gnatS' to produce a listing of package
  â€˜Standardâ€™ displays the values of these attributes.
  
     * â€œThe value of â€˜Buffer_Sizeâ€™ in â€˜Storage_IOâ€™.  See A.9(10).â€�
*************** Convention Name             Interpretati
*** 14879,14945 ****
                              
  ---------------------------------------------------------------------------------------------------------------
                              
! â€˜Adaâ€™                       Ada
                              
                              
! â€˜Ada_Pass_By_Copyâ€™          Allowed for any types except by-reference types such as limited records.
                              Compatible with convention Ada, but causes any parameters with this convention
                              to be passed by copy.
                              
                              
! â€˜Ada_Pass_By_Referenceâ€™     Allowed for any types except by-copy types such as scalars.  Compatible with
                              convention Ada, but causes any parameters with this convention to be passed by
                              reference.
                              
                              
! â€˜Assemblerâ€™                 Assembly language
                              
                              
! â€˜Asmâ€™                       Synonym for Assembler
                              
                              
! â€˜Assemblyâ€™                  Synonym for Assembler
                              
                              
! â€˜Câ€™                         C
                              
                              
! â€˜C_Pass_By_Copyâ€™            Allowed only for record types, like C, but also notes that record is to be
                              passed by copy rather than reference.
                              
                              
! â€˜COBOLâ€™                     COBOL
                              
                              
! â€˜C_Plus_Plus (or CPP)â€™      C++
                              
                              
! â€˜Defaultâ€™                   Treated the same as C
                              
                              
! â€˜Externalâ€™                  Treated the same as C
                              
                              
! â€˜Fortranâ€™                   Fortran
                              
                              
! â€˜Intrinsicâ€™                 For support of pragma â€˜Importâ€™ with convention Intrinsic, see separate section
                              on Intrinsic Subprograms.
                              
                              
! â€˜Stdcallâ€™                   Stdcall (used for Windows implementations only).  This convention correspond to
                              the WINAPI (previously called Pascal convention) C/C++ convention under Windows.
                              A routine with this convention cleans the stack before exit.  This pragma cannot
                              be applied to a dispatching call.
                              
                              
! â€˜DLLâ€™                       Synonym for Stdcall
                              
                              
! â€˜Win32â€™                     Synonym for Stdcall
                              
                              
! â€˜Stubbedâ€™                   Stubbed is a special convention used to indicate that the body of the subprogram
                              will be entirely ignored.  Any call to the subprogram is converted into a raise
                              of the â€˜Program_Errorâ€™ exception.  If a pragma â€˜Importâ€™ specifies convention
                              â€˜stubbedâ€™ then no body need be present at all.  This convention is useful during
--- 14879,14945 ----
                              
  ---------------------------------------------------------------------------------------------------------------
                              
! 'Ada'                       Ada
                              
                              
! 'Ada_Pass_By_Copy'          Allowed for any types except by-reference types such as limited records.
                              Compatible with convention Ada, but causes any parameters with this convention
                              to be passed by copy.
                              
                              
! 'Ada_Pass_By_Reference'     Allowed for any types except by-copy types such as scalars.  Compatible with
                              convention Ada, but causes any parameters with this convention to be passed by
                              reference.
                              
                              
! 'Assembler'                 Assembly language
                              
                              
! 'Asm'                       Synonym for Assembler
                              
                              
! 'Assembly'                  Synonym for Assembler
                              
                              
! 'C'                         C
                              
                              
! 'C_Pass_By_Copy'            Allowed only for record types, like C, but also notes that record is to be
                              passed by copy rather than reference.
                              
                              
! 'COBOL'                     COBOL
                              
                              
! 'C_Plus_Plus (or CPP)'      C++
                              
                              
! 'Default'                   Treated the same as C
                              
                              
! 'External'                  Treated the same as C
                              
                              
! 'Fortran'                   Fortran
                              
                              
! 'Intrinsic'                 For support of pragma â€˜Importâ€™ with convention Intrinsic, see separate section
                              on Intrinsic Subprograms.
                              
                              
! 'Stdcall'                   Stdcall (used for Windows implementations only).  This convention correspond to
                              the WINAPI (previously called Pascal convention) C/C++ convention under Windows.
                              A routine with this convention cleans the stack before exit.  This pragma cannot
                              be applied to a dispatching call.
                              
                              
! 'DLL'                       Synonym for Stdcall
                              
                              
! 'Win32'                     Synonym for Stdcall
                              
                              
! 'Stubbed'                   Stubbed is a special convention used to indicate that the body of the subprogram
                              will be entirely ignored.  Any call to the subprogram is converted into a raise
                              of the â€˜Program_Errorâ€™ exception.  If a pragma â€˜Importâ€™ specifies convention
                              â€˜stubbedâ€™ then no body need be present at all.  This convention is useful during
*************** COBOL                     Ada
*** 15000,15021 ****
                            
  -------------------------------------------------------------------
                            
! â€˜Floatingâ€™                Float
                            
                            
! â€˜Long_Floatingâ€™           (Floating) Long_Float
                            
                            
! â€˜Binaryâ€™                  Integer
                            
                            
! â€˜Long_Binaryâ€™             Long_Long_Integer
                            
                            
! â€˜Decimal_Elementâ€™         Character
                            
                            
! â€˜COBOL_Characterâ€™         Character
                            
  
  For initialization, see the file â€˜i-cobol.adsâ€™ in the distributed
--- 15000,15021 ----
                            
  -------------------------------------------------------------------
                            
! 'Floating'                Float
                            
                            
! 'Long_Floating'           (Floating) Long_Float
                            
                            
! 'Binary'                  Integer
                            
                            
! 'Long_Binary'             Long_Long_Integer
                            
                            
! 'Decimal_Element'         Character
                            
                            
! 'COBOL_Character'         Character
                            
  
  For initialization, see the file â€˜i-cobol.adsâ€™ in the distributed
*************** If Discard_Names is True for an enumerat
*** 15049,15055 ****
  provides the image of the Pos of the literal, and Value accepts Pos
  values.
  
! If both of the aspectsâ€˜â€˜Discard_Namesâ€˜â€˜ and â€˜No_Tagged_Streamsâ€™ are true
  for a tagged type, its Expanded_Name and External_Tag values are empty
  strings.  This is useful to avoid exposing entity names at binary level.
  
--- 15049,15055 ----
  provides the image of the Pos of the literal, and Value accepts Pos
  values.
  
! If both of the aspects''Discard_Names'' and â€˜No_Tagged_Streamsâ€™ are true
  for a tagged type, its Expanded_Name and External_Tag values are empty
  strings.  This is useful to avoid exposing entity names at binary level.
  
*************** The value is 1.
*** 15068,15074 ****
  The result of this attribute is a string that identifies the object or
  component that denotes a given task.  If a variable â€˜Varâ€™ has a task
  type, the image for this task will have the form â€˜Var_XXXXXXXXâ€™, where
! the suffix â€˜XXXXXXXXâ€™ is the hexadecimal representation of the virtual
  address of the corresponding task control block.  If the variable is an
  array of tasks, the image of each task will have the form of an indexed
  component indicating the position of a given task in the array, e.g.,
--- 15068,15074 ----
  The result of this attribute is a string that identifies the object or
  component that denotes a given task.  If a variable â€˜Varâ€™ has a task
  type, the image for this task will have the form â€˜Var_XXXXXXXXâ€™, where
! the suffix 'XXXXXXXX' is the hexadecimal representation of the virtual
  address of the corresponding task control block.  If the variable is an
  array of tasks, the image of each task will have the form of an indexed
  component indicating the position of a given task in the array, e.g.,
*************** There are no implementation-defined task
*** 15131,15137 ****
  
  The value is 10 milliseconds.
  
!    * â€œImplementation-defined â€˜policy_identifiersâ€™ allowed in a pragma
       â€˜Locking_Policyâ€™.  See D.3(4).â€�
  
  The two implementation defined policies permitted in GNAT are
--- 15131,15137 ----
  
  The value is 10 milliseconds.
  
!    * â€œImplementation-defined 'policy_identifiers' allowed in a pragma
       â€˜Locking_Policyâ€™.  See D.3(4).â€�
  
  The two implementation defined policies permitted in GNAT are
*************** Named Number             Value
*** 15268,15286 ****
                           
  ----------------------------------------
                           
! â€˜Max_Scaleâ€™              +18
                           
                           
! â€˜Min_Scaleâ€™              -18
                           
                           
! â€˜Min_Deltaâ€™              1.0E-18
                           
                           
! â€˜Max_Deltaâ€™              1.0E+18
                           
                           
! â€˜Max_Decimal_Digitsâ€™     18
                           
  
     * â€œThe value of â€˜Max_Picture_Lengthâ€™ in the package
--- 15268,15286 ----
                           
  ----------------------------------------
                           
! 'Max_Scale'              +18
                           
                           
! 'Min_Scale'              -18
                           
                           
! 'Min_Delta'              1.0E-18
                           
                           
! 'Max_Delta'              1.0E+18
                           
                           
! 'Max_Decimal_Digits'     18
                           
  
     * â€œThe value of â€˜Max_Picture_Lengthâ€™ in the package
*************** floating-point format.
*** 15334,15340 ****
  Infinite and NaN values are produced as dictated by the IEEE
  floating-point standard.  Note that on machines that are not fully
  compliant with the IEEE floating-point standard, such as Alpha, the
! â€˜-mieeeâ€™ compiler flag must be used for achieving IEEE conforming
  behavior (although at the cost of a significant performance penalty), so
  infinite and NaN values are properly generated.
  
--- 15334,15340 ----
  Infinite and NaN values are produced as dictated by the IEEE
  floating-point standard.  Note that on machines that are not fully
  compliant with the IEEE floating-point standard, such as Alpha, the
! '-mieee' compiler flag must be used for achieving IEEE conforming
  behavior (although at the cost of a significant performance penalty), so
  infinite and NaN values are properly generated.
  
*************** floating-point arithmetic.  The input op
*** 15353,15359 ****
  floating-point, the operation is done in floating-point, and the result
  is converted to the target type.
  
!    * â€œConditions on a â€˜universal_realâ€™ operand of a fixed point
       multiplication or division for which the result shall be in the
       perfect result set.  See G.2.3(22).â€�
  
--- 15353,15359 ----
  floating-point, the operation is done in floating-point, and the result
  is converted to the target type.
  
!    * â€œConditions on a 'universal_real' operand of a fixed point
       multiplication or division for which the result shall be in the
       perfect result set.  See G.2.3(22).â€�
  
*************** same as specifying 1.
*** 15679,15685 ****
  
  The default alignment values are as follows:
  
!    * â€˜Elementary Typesâ€™.
  
       For elementary types, the alignment is the minimum of the actual
       size of objects of the type divided by â€˜Storage_Unitâ€™, and the
--- 15679,15685 ----
  
  The default alignment values are as follows:
  
!    * 'Elementary Types'.
  
       For elementary types, the alignment is the minimum of the actual
       size of objects of the type divided by â€˜Storage_Unitâ€™, and the
*************** The default alignment values are as foll
*** 15694,15700 ****
       may be smaller than 8, in which case objects of type â€˜Long_Floatâ€™
       will be maximally aligned.
  
!    * â€˜Arraysâ€™.
  
       For arrays, the alignment is equal to the alignment of the
       component type for the normal case where no packing or component
--- 15694,15700 ----
       may be smaller than 8, in which case objects of type â€˜Long_Floatâ€™
       will be maximally aligned.
  
!    * 'Arrays'.
  
       For arrays, the alignment is equal to the alignment of the
       component type for the normal case where no packing or component
*************** The default alignment values are as foll
*** 15708,15714 ****
       packed array of length 31 bits will have an object size of four
       bytes, and an alignment of 4.
  
!    * â€˜Recordsâ€™.
  
       For the normal unpacked case, the alignment of a record is equal to
       the maximum alignment of any of its components.  For tagged
--- 15708,15714 ----
       packed array of length 31 bits will have an object size of four
       bytes, and an alignment of 4.
  
!    * 'Records'.
  
       For the normal unpacked case, the alignment of a record is equal to
       the maximum alignment of any of its components.  For tagged
*************** Then â€˜Default_Stack_Sizeâ€™ can be def
*** 15860,15866 ****
  modified as required.  Any tasks requiring stack sizes different from
  the default can have an appropriate alternative reference in the pragma.
  
! You can also use the â€˜-dâ€™ binder switch to modify the default stack
  size.
  
  For access types, the â€˜Storage_Sizeâ€™ clause specifies the maximum space
--- 15860,15866 ----
  modified as required.  Any tasks requiring stack sizes different from
  the default can have an appropriate alternative reference in the pragma.
  
! You can also use the '-d' binder switch to modify the default stack
  size.
  
  For access types, the â€˜Storage_Sizeâ€™ clause specifies the maximum space
*************** The default rules for the value of â€˜Ob
*** 16080,16086 ****
  as follows:
  
     * The â€˜Object_Sizeâ€™ for base subtypes reflect the natural hardware
!      size in bits (run the compiler with â€˜-gnatSâ€™ to find those values
       for numeric types).  Enumeration types and fixed-point base
       subtypes have 8, 16, 32, or 64 bits for this size, depending on the
       range of values to be stored.
--- 16080,16086 ----
  as follows:
  
     * The â€˜Object_Sizeâ€™ for base subtypes reflect the natural hardware
!      size in bits (run the compiler with '-gnatS' to find those values
       for numeric types).  Enumeration types and fixed-point base
       subtypes have 8, 16, 32, or 64 bits for this size, depending on the
       range of values to be stored.
*************** File: gnat_rm.info,  Node: Pragma Pack f
*** 16600,16607 ****
  ===========================
  
  Pragma â€˜Packâ€™ applied to an array has an effect that depends upon
! whether the component type is â€˜packableâ€™.  For a component type to be
! â€˜packableâ€™, it must be one of the following cases:
  
     * Any elementary type.
  
--- 16600,16607 ----
  ===========================
  
  Pragma â€˜Packâ€™ applied to an array has an effect that depends upon
! whether the component type is 'packable'.  For a component type to be
! 'packable', it must be one of the following cases:
  
     * Any elementary type.
  
*************** File: gnat_rm.info,  Node: Pragma Pack f
*** 16704,16711 ****
  
  Pragma â€˜Packâ€™ applied to a record will pack the components to reduce
  wasted space from alignment gaps and by reducing the amount of space
! taken by components.  We distinguish between â€˜packableâ€™ components and
! â€˜non-packableâ€™ components.  Components of the following types are
  considered packable:
  
     * Components of an elementary type are packable unless they are
--- 16704,16711 ----
  
  Pragma â€˜Packâ€™ applied to a record will pack the components to reduce
  wasted space from alignment gaps and by reducing the amount of space
! taken by components.  We distinguish between 'packable' components and
! 'non-packable' components.  Components of the following types are
  considered packable:
  
     * Components of an elementary type are packable unless they are
*************** be in the range:
*** 16927,16933 ****
  
       0 .. System.Max_Binary_Modulus;
  
! A â€˜confirmingâ€™ representation clause is one in which the values range
  from 0 in sequence, i.e., a clause that confirms the default
  representation for an enumeration type.  Such a confirming
  representation is permitted by these rules, and is specially recognized
--- 16927,16933 ----
  
       0 .. System.Max_Binary_Modulus;
  
! A 'confirming' representation clause is one in which the values range
  from 0 in sequence, i.e., a clause that confirms the default
  representation for an enumeration type.  Such a confirming
  representation is permitted by these rules, and is specially recognized
*************** example) has no effect.
*** 17302,17308 ****
  
  There are four exceptions to this general rule:
  
!    * â€˜Convention Fortran and array subtypesâ€™.
  
       If pragma Convention Fortran is specified for an array subtype,
       then in accordance with the implementation advice in section
--- 17302,17308 ----
  
  There are four exceptions to this general rule:
  
!    * 'Convention Fortran and array subtypes'.
  
       If pragma Convention Fortran is specified for an array subtype,
       then in accordance with the implementation advice in section
*************** There are four exceptions to this genera
*** 17310,17316 ****
       a Fortran-compatible column-major manner, instead of the normal
       default row-major order.
  
!    * â€˜Convention C and enumeration typesâ€™
  
       GNAT normally stores enumeration types in 8, 16, or 32 bits as
       required to accommodate all values of the type.  For example, for
--- 17310,17316 ----
       a Fortran-compatible column-major manner, instead of the normal
       default row-major order.
  
!    * 'Convention C and enumeration types'
  
       GNAT normally stores enumeration types in 8, 16, or 32 bits as
       required to accommodate all values of the type.  For example, for
*************** There are four exceptions to this genera
*** 17335,17341 ****
       this situation.  The warning can be suppressed by giving an
       explicit size clause specifying the desired size.
  
!    * â€˜Convention C/Fortran and Boolean typesâ€™
  
       In C, the usual convention for boolean values, that is values used
       for conditions, is that zero represents false, and nonzero values
--- 17335,17341 ----
       this situation.  The warning can be suppressed by giving an
       explicit size clause specifying the desired size.
  
!    * 'Convention C/Fortran and Boolean types'
  
       In C, the usual convention for boolean values, that is values used
       for conditions, is that zero represents false, and nonzero values
*************** resulting fields placed?  The section on
*** 17451,17460 ****
  can be used to answer the second question, but it is often easier to
  just see what the compiler does.
  
! For this purpose, GNAT provides the option â€˜-gnatRâ€™.  If you compile
! with this option, then the compiler will output information on the
! actual representations chosen, in a format similar to source
! representation clauses.  For example, if we compile the package:
  
       package q is
          type r (x : boolean) is tagged record
--- 17451,17460 ----
  can be used to answer the second question, but it is often easier to
  just see what the compiler does.
  
! For this purpose, GNAT provides the option '-gnatR'. If you compile with
! this option, then the compiler will output information on the actual
! representations chosen, in a format similar to source representation
! clauses.  For example, if we compile the package:
  
       package q is
          type r (x : boolean) is tagged record
*************** representation clauses.  For example, if
*** 17498,17504 ****
          pragma Pack (x2);
       end q;
  
! using the switch â€˜-gnatRâ€™ we obtain the following output:
  
       Representation information for unit q
       -------------------------------------
--- 17498,17504 ----
          pragma Pack (x2);
       end q;
  
! using the switch '-gnatR' we obtain the following output:
  
       Representation information for unit q
       -------------------------------------
*************** units are not implemented, as marked by
*** 17602,17658 ****
  Unimplemented_Unit, and in this case the package declaration contains
  comments explaining why the unit is not implemented.
  
! â€˜Adaâ€™ â€˜(A.2)â€™
  
       This is a parent package for all the standard library packages.  It
       is usually included implicitly in your program, and itself contains
       no useful data or routines.
  
! â€˜Ada.Assertionsâ€™ â€˜(11.4.2)â€™
  
       â€˜Assertionsâ€™ provides the â€˜Assertâ€™ subprograms, and also the
       declaration of the â€˜Assertion_Errorâ€™ exception.
  
! â€˜Ada.Asynchronous_Task_Controlâ€™ â€˜(D.11)â€™
  
       â€˜Asynchronous_Task_Controlâ€™ provides low level facilities for task
       synchronization.  It is typically not implemented.  See package
       spec for details.
  
! â€˜Ada.Calendarâ€™ â€˜(9.6)â€™
  
       â€˜Calendarâ€™ provides time of day access, and routines for
       manipulating times and durations.
  
! â€˜Ada.Calendar.Arithmeticâ€™ â€˜(9.6.1)â€™
  
       This package provides additional arithmetic operations for
       â€˜Calendarâ€™.
  
! â€˜Ada.Calendar.Formattingâ€™ â€˜(9.6.1)â€™
  
       This package provides formatting operations for â€˜Calendarâ€™.
  
! â€˜Ada.Calendar.Time_Zonesâ€™ â€˜(9.6.1)â€™
  
       This package provides additional â€˜Calendarâ€™ facilities for handling
       time zones.
  
! â€˜Ada.Charactersâ€™ â€˜(A.3.1)â€™
  
       This is a dummy parent package that contains no useful entities
  
! â€˜Ada.Characters.Conversionsâ€™ â€˜(A.3.2)â€™
  
       This package provides character conversion functions.
  
! â€˜Ada.Characters.Handlingâ€™ â€˜(A.3.2)â€™
  
       This package provides some basic character handling capabilities,
       including classification functions for classes of characters (e.g.,
       test for letters, or digits).
  
! â€˜Ada.Characters.Latin_1â€™ â€˜(A.3.3)â€™
  
       This package includes a complete set of definitions of the
       characters that appear in type CHARACTER. It is useful for writing
--- 17602,17658 ----
  Unimplemented_Unit, and in this case the package declaration contains
  comments explaining why the unit is not implemented.
  
! â€˜Adaâ€™ '(A.2)'
  
       This is a parent package for all the standard library packages.  It
       is usually included implicitly in your program, and itself contains
       no useful data or routines.
  
! â€˜Ada.Assertionsâ€™ '(11.4.2)'
  
       â€˜Assertionsâ€™ provides the â€˜Assertâ€™ subprograms, and also the
       declaration of the â€˜Assertion_Errorâ€™ exception.
  
! â€˜Ada.Asynchronous_Task_Controlâ€™ '(D.11)'
  
       â€˜Asynchronous_Task_Controlâ€™ provides low level facilities for task
       synchronization.  It is typically not implemented.  See package
       spec for details.
  
! â€˜Ada.Calendarâ€™ '(9.6)'
  
       â€˜Calendarâ€™ provides time of day access, and routines for
       manipulating times and durations.
  
! â€˜Ada.Calendar.Arithmeticâ€™ '(9.6.1)'
  
       This package provides additional arithmetic operations for
       â€˜Calendarâ€™.
  
! â€˜Ada.Calendar.Formattingâ€™ '(9.6.1)'
  
       This package provides formatting operations for â€˜Calendarâ€™.
  
! â€˜Ada.Calendar.Time_Zonesâ€™ '(9.6.1)'
  
       This package provides additional â€˜Calendarâ€™ facilities for handling
       time zones.
  
! â€˜Ada.Charactersâ€™ '(A.3.1)'
  
       This is a dummy parent package that contains no useful entities
  
! â€˜Ada.Characters.Conversionsâ€™ '(A.3.2)'
  
       This package provides character conversion functions.
  
! â€˜Ada.Characters.Handlingâ€™ '(A.3.2)'
  
       This package provides some basic character handling capabilities,
       including classification functions for classes of characters (e.g.,
       test for letters, or digits).
  
! â€˜Ada.Characters.Latin_1â€™ '(A.3.3)'
  
       This package includes a complete set of definitions of the
       characters that appear in type CHARACTER. It is useful for writing
*************** comments explaining why the unit is not
*** 17662,17859 ****
       Then your program will print in an understandable manner even if
       your environment does not support these extended characters.
  
! â€˜Ada.Command_Lineâ€™ â€˜(A.15)â€™
  
       This package provides access to the command line parameters and the
       name of the current program (analogous to the use of â€˜argcâ€™ and
       â€˜argvâ€™ in C), and also allows the exit status for the program to be
       set in a system-independent manner.
  
! â€˜Ada.Complex_Text_IOâ€™ â€˜(G.1.3)â€™
  
       This package provides text input and output of complex numbers.
  
! â€˜Ada.Containersâ€™ â€˜(A.18.1)â€™
  
       A top level package providing a few basic definitions used by all
       the following specific child packages that provide specific kinds
       of containers.
  
! â€˜Ada.Containers.Bounded_Priority_Queuesâ€™ â€˜(A.18.31)â€™
  
! â€˜Ada.Containers.Bounded_Synchronized_Queuesâ€™ â€˜(A.18.29)â€™
  
! â€˜Ada.Containers.Doubly_Linked_Listsâ€™ â€˜(A.18.3)â€™
  
! â€˜Ada.Containers.Generic_Array_Sortâ€™ â€˜(A.18.26)â€™
  
! â€˜Ada.Containers.Generic_Constrained_Array_Sortâ€™ â€˜(A.18.26)â€™
  
! â€˜Ada.Containers.Generic_Sortâ€™ â€˜(A.18.26)â€™
  
! â€˜Ada.Containers.Hashed_Mapsâ€™ â€˜(A.18.5)â€™
  
! â€˜Ada.Containers.Hashed_Setsâ€™ â€˜(A.18.8)â€™
  
! â€˜Ada.Containers.Indefinite_Doubly_Linked_Listsâ€™ â€˜(A.18.12)â€™
  
! â€˜Ada.Containers.Indefinite_Hashed_Mapsâ€™ â€˜(A.18.13)â€™
  
! â€˜Ada.Containers.Indefinite_Hashed_Setsâ€™ â€˜(A.18.15)â€™
  
! â€˜Ada.Containers.Indefinite_Holdersâ€™ â€˜(A.18.18)â€™
  
! â€˜Ada.Containers.Indefinite_Multiway_Treesâ€™ â€˜(A.18.17)â€™
  
! â€˜Ada.Containers.Indefinite_Ordered_Mapsâ€™ â€˜(A.18.14)â€™
  
! â€˜Ada.Containers.Indefinite_Ordered_Setsâ€™ â€˜(A.18.16)â€™
  
! â€˜Ada.Containers.Indefinite_Vectorsâ€™ â€˜(A.18.11)â€™
  
! â€˜Ada.Containers.Multiway_Treesâ€™ â€˜(A.18.10)â€™
  
! â€˜Ada.Containers.Ordered_Mapsâ€™ â€˜(A.18.6)â€™
  
! â€˜Ada.Containers.Ordered_Setsâ€™ â€˜(A.18.9)â€™
  
! â€˜Ada.Containers.Synchronized_Queue_Interfacesâ€™ â€˜(A.18.27)â€™
  
! â€˜Ada.Containers.Unbounded_Priority_Queuesâ€™ â€˜(A.18.30)â€™
  
! â€˜Ada.Containers.Unbounded_Synchronized_Queuesâ€™ â€˜(A.18.28)â€™
  
! â€˜Ada.Containers.Vectorsâ€™ â€˜(A.18.2)â€™
  
! â€˜Ada.Directoriesâ€™ â€˜(A.16)â€™
  
       This package provides operations on directories.
  
! â€˜Ada.Directories.Hierarchical_File_Namesâ€™ â€˜(A.16.1)â€™
  
       This package provides additional directory operations handling
       hierarchical file names.
  
! â€˜Ada.Directories.Informationâ€™ â€˜(A.16)â€™
  
       This is an implementation defined package for additional directory
       operations, which is not implemented in GNAT.
  
! â€˜Ada.Decimalâ€™ â€˜(F.2)â€™
  
       This package provides constants describing the range of decimal
       numbers implemented, and also a decimal divide routine (analogous
       to the COBOL verb DIVIDE â€¦ GIVING â€¦ REMAINDER â€¦)
  
! â€˜Ada.Direct_IOâ€™ â€˜(A.8.4)â€™
  
       This package provides input-output using a model of a set of
       records of fixed-length, containing an arbitrary definite Ada type,
       indexed by an integer record number.
  
! â€˜Ada.Dispatchingâ€™ â€˜(D.2.1)â€™
  
       A parent package containing definitions for task dispatching
       operations.
  
! â€˜Ada.Dispatching.EDFâ€™ â€˜(D.2.6)â€™
  
       Not implemented in GNAT.
  
! â€˜Ada.Dispatching.Non_Preemptiveâ€™ â€˜(D.2.4)â€™
  
       Not implemented in GNAT.
  
! â€˜Ada.Dispatching.Round_Robinâ€™ â€˜(D.2.5)â€™
  
       Not implemented in GNAT.
  
! â€˜Ada.Dynamic_Prioritiesâ€™ â€˜(D.5)â€™
  
       This package allows the priorities of a task to be adjusted
       dynamically as the task is running.
  
! â€˜Ada.Environment_Variablesâ€™ â€˜(A.17)â€™
  
       This package provides facilities for accessing environment
       variables.
  
! â€˜Ada.Exceptionsâ€™ â€˜(11.4.1)â€™
  
       This package provides additional information on exceptions, and
       also contains facilities for treating exceptions as data objects,
       and raising exceptions with associated messages.
  
! â€˜Ada.Execution_Timeâ€™ â€˜(D.14)â€™
  
       This package provides CPU clock functionalities.  It is not
       implemented on all targets (see package spec for details).
  
! â€˜Ada.Execution_Time.Group_Budgetsâ€™ â€˜(D.14.2)â€™
  
       Not implemented in GNAT.
  
! â€˜Ada.Execution_Time.Timersâ€™ â€˜(D.14.1)â€™â€™
  
       Not implemented in GNAT.
  
! â€˜Ada.Finalizationâ€™ â€˜(7.6)â€™
  
       This package contains the declarations and subprograms to support
       the use of controlled types, providing for automatic initialization
       and finalization (analogous to the constructors and destructors of
       C++).
  
! â€˜Ada.Float_Text_IOâ€™ â€˜(A.10.9)â€™
  
       A library level instantiation of Text_IO.Float_IO for type Float.
  
! â€˜Ada.Float_Wide_Text_IOâ€™ â€˜(A.10.9)â€™
  
       A library level instantiation of Wide_Text_IO.Float_IO for type
       Float.
  
! â€˜Ada.Float_Wide_Wide_Text_IOâ€™ â€˜(A.10.9)â€™
  
       A library level instantiation of Wide_Wide_Text_IO.Float_IO for
       type Float.
  
! â€˜Ada.Integer_Text_IOâ€™ â€˜(A.10.9)â€™
  
       A library level instantiation of Text_IO.Integer_IO for type
       Integer.
  
! â€˜Ada.Integer_Wide_Text_IOâ€™ â€˜(A.10.9)â€™
  
       A library level instantiation of Wide_Text_IO.Integer_IO for type
       Integer.
  
! â€˜Ada.Integer_Wide_Wide_Text_IOâ€™ â€˜(A.10.9)â€™
  
       A library level instantiation of Wide_Wide_Text_IO.Integer_IO for
       type Integer.
  
! â€˜Ada.Interruptsâ€™ â€˜(C.3.2)â€™
  
       This package provides facilities for interfacing to interrupts,
       which includes the set of signals or conditions that can be raised
       and recognized as interrupts.
  
! â€˜Ada.Interrupts.Namesâ€™ â€˜(C.3.2)â€™
  
       This package provides the set of interrupt names (actually signal
       or condition names) that can be handled by GNAT.
  
! â€˜Ada.IO_Exceptionsâ€™ â€˜(A.13)â€™
  
       This package defines the set of exceptions that can be raised by
       use of the standard IO packages.
  
! â€˜Ada.Iterator_Interfacesâ€™ â€˜(5.5.1)â€™
  
       This package provides a generic interface to generalized iterators.
  
! â€˜Ada.Localesâ€™ â€˜(A.19)â€™
  
       This package provides declarations providing information (Language
       and Country) about the current locale.
--- 17662,17859 ----
       Then your program will print in an understandable manner even if
       your environment does not support these extended characters.
  
! â€˜Ada.Command_Lineâ€™ '(A.15)'
  
       This package provides access to the command line parameters and the
       name of the current program (analogous to the use of â€˜argcâ€™ and
       â€˜argvâ€™ in C), and also allows the exit status for the program to be
       set in a system-independent manner.
  
! â€˜Ada.Complex_Text_IOâ€™ '(G.1.3)'
  
       This package provides text input and output of complex numbers.
  
! â€˜Ada.Containersâ€™ '(A.18.1)'
  
       A top level package providing a few basic definitions used by all
       the following specific child packages that provide specific kinds
       of containers.
  
! â€˜Ada.Containers.Bounded_Priority_Queuesâ€™ '(A.18.31)'
  
! â€˜Ada.Containers.Bounded_Synchronized_Queuesâ€™ '(A.18.29)'
  
! â€˜Ada.Containers.Doubly_Linked_Listsâ€™ '(A.18.3)'
  
! â€˜Ada.Containers.Generic_Array_Sortâ€™ '(A.18.26)'
  
! â€˜Ada.Containers.Generic_Constrained_Array_Sortâ€™ '(A.18.26)'
  
! â€˜Ada.Containers.Generic_Sortâ€™ '(A.18.26)'
  
! â€˜Ada.Containers.Hashed_Mapsâ€™ '(A.18.5)'
  
! â€˜Ada.Containers.Hashed_Setsâ€™ '(A.18.8)'
  
! â€˜Ada.Containers.Indefinite_Doubly_Linked_Listsâ€™ '(A.18.12)'
  
! â€˜Ada.Containers.Indefinite_Hashed_Mapsâ€™ '(A.18.13)'
  
! â€˜Ada.Containers.Indefinite_Hashed_Setsâ€™ '(A.18.15)'
  
! â€˜Ada.Containers.Indefinite_Holdersâ€™ '(A.18.18)'
  
! â€˜Ada.Containers.Indefinite_Multiway_Treesâ€™ '(A.18.17)'
  
! â€˜Ada.Containers.Indefinite_Ordered_Mapsâ€™ '(A.18.14)'
  
! â€˜Ada.Containers.Indefinite_Ordered_Setsâ€™ '(A.18.16)'
  
! â€˜Ada.Containers.Indefinite_Vectorsâ€™ '(A.18.11)'
  
! â€˜Ada.Containers.Multiway_Treesâ€™ '(A.18.10)'
  
! â€˜Ada.Containers.Ordered_Mapsâ€™ '(A.18.6)'
  
! â€˜Ada.Containers.Ordered_Setsâ€™ '(A.18.9)'
  
! â€˜Ada.Containers.Synchronized_Queue_Interfacesâ€™ '(A.18.27)'
  
! â€˜Ada.Containers.Unbounded_Priority_Queuesâ€™ '(A.18.30)'
  
! â€˜Ada.Containers.Unbounded_Synchronized_Queuesâ€™ '(A.18.28)'
  
! â€˜Ada.Containers.Vectorsâ€™ '(A.18.2)'
  
! â€˜Ada.Directoriesâ€™ '(A.16)'
  
       This package provides operations on directories.
  
! â€˜Ada.Directories.Hierarchical_File_Namesâ€™ '(A.16.1)'
  
       This package provides additional directory operations handling
       hierarchical file names.
  
! â€˜Ada.Directories.Informationâ€™ '(A.16)'
  
       This is an implementation defined package for additional directory
       operations, which is not implemented in GNAT.
  
! â€˜Ada.Decimalâ€™ '(F.2)'
  
       This package provides constants describing the range of decimal
       numbers implemented, and also a decimal divide routine (analogous
       to the COBOL verb DIVIDE â€¦ GIVING â€¦ REMAINDER â€¦)
  
! â€˜Ada.Direct_IOâ€™ '(A.8.4)'
  
       This package provides input-output using a model of a set of
       records of fixed-length, containing an arbitrary definite Ada type,
       indexed by an integer record number.
  
! â€˜Ada.Dispatchingâ€™ '(D.2.1)'
  
       A parent package containing definitions for task dispatching
       operations.
  
! â€˜Ada.Dispatching.EDFâ€™ '(D.2.6)'
  
       Not implemented in GNAT.
  
! â€˜Ada.Dispatching.Non_Preemptiveâ€™ '(D.2.4)'
  
       Not implemented in GNAT.
  
! â€˜Ada.Dispatching.Round_Robinâ€™ '(D.2.5)'
  
       Not implemented in GNAT.
  
! â€˜Ada.Dynamic_Prioritiesâ€™ '(D.5)'
  
       This package allows the priorities of a task to be adjusted
       dynamically as the task is running.
  
! â€˜Ada.Environment_Variablesâ€™ '(A.17)'
  
       This package provides facilities for accessing environment
       variables.
  
! â€˜Ada.Exceptionsâ€™ '(11.4.1)'
  
       This package provides additional information on exceptions, and
       also contains facilities for treating exceptions as data objects,
       and raising exceptions with associated messages.
  
! â€˜Ada.Execution_Timeâ€™ '(D.14)'
  
       This package provides CPU clock functionalities.  It is not
       implemented on all targets (see package spec for details).
  
! â€˜Ada.Execution_Time.Group_Budgetsâ€™ '(D.14.2)'
  
       Not implemented in GNAT.
  
! â€˜Ada.Execution_Time.Timersâ€™ '(D.14.1)â€™'
  
       Not implemented in GNAT.
  
! â€˜Ada.Finalizationâ€™ '(7.6)'
  
       This package contains the declarations and subprograms to support
       the use of controlled types, providing for automatic initialization
       and finalization (analogous to the constructors and destructors of
       C++).
  
! â€˜Ada.Float_Text_IOâ€™ '(A.10.9)'
  
       A library level instantiation of Text_IO.Float_IO for type Float.
  
! â€˜Ada.Float_Wide_Text_IOâ€™ '(A.10.9)'
  
       A library level instantiation of Wide_Text_IO.Float_IO for type
       Float.
  
! â€˜Ada.Float_Wide_Wide_Text_IOâ€™ '(A.10.9)'
  
       A library level instantiation of Wide_Wide_Text_IO.Float_IO for
       type Float.
  
! â€˜Ada.Integer_Text_IOâ€™ '(A.10.9)'
  
       A library level instantiation of Text_IO.Integer_IO for type
       Integer.
  
! â€˜Ada.Integer_Wide_Text_IOâ€™ '(A.10.9)'
  
       A library level instantiation of Wide_Text_IO.Integer_IO for type
       Integer.
  
! â€˜Ada.Integer_Wide_Wide_Text_IOâ€™ '(A.10.9)'
  
       A library level instantiation of Wide_Wide_Text_IO.Integer_IO for
       type Integer.
  
! â€˜Ada.Interruptsâ€™ '(C.3.2)'
  
       This package provides facilities for interfacing to interrupts,
       which includes the set of signals or conditions that can be raised
       and recognized as interrupts.
  
! â€˜Ada.Interrupts.Namesâ€™ '(C.3.2)'
  
       This package provides the set of interrupt names (actually signal
       or condition names) that can be handled by GNAT.
  
! â€˜Ada.IO_Exceptionsâ€™ '(A.13)'
  
       This package defines the set of exceptions that can be raised by
       use of the standard IO packages.
  
! â€˜Ada.Iterator_Interfacesâ€™ '(5.5.1)'
  
       This package provides a generic interface to generalized iterators.
  
! â€˜Ada.Localesâ€™ '(A.19)'
  
       This package provides declarations providing information (Language
       and Country) about the current locale.
*************** comments explaining why the unit is not
*** 17865,17871 ****
       are defined here, and it is better to use these definitions than
       rolling your own.
  
! â€˜Ada.Numerics.Complex_Arraysâ€™ â€˜(G.3.2)â€™
  
       Provides operations on arrays of complex numbers.
  
--- 17865,17871 ----
       are defined here, and it is better to use these definitions than
       rolling your own.
  
! â€˜Ada.Numerics.Complex_Arraysâ€™ '(G.3.2)'
  
       Provides operations on arrays of complex numbers.
  
*************** comments explaining why the unit is not
*** 17956,17970 ****
  
            â€˜Ada.Numerics.Long_Elementary_Functionsâ€™
  
! â€˜Ada.Numerics.Generic_Real_Arraysâ€™ â€˜(G.3.1)â€™
  
       Generic operations on arrays of reals
  
! â€˜Ada.Numerics.Real_Arraysâ€™ â€˜(G.3.1)â€™
  
       Preinstantiation of Ada.Numerics.Generic_Real_Arrays (Float).
  
! â€˜Ada.Real_Timeâ€™ â€˜(D.8)â€™
  
       This package provides facilities similar to those of â€˜Calendarâ€™,
       but operating with a finer clock suitable for real time control.
--- 17956,17970 ----
  
            â€˜Ada.Numerics.Long_Elementary_Functionsâ€™
  
! â€˜Ada.Numerics.Generic_Real_Arraysâ€™ '(G.3.1)'
  
       Generic operations on arrays of reals
  
! â€˜Ada.Numerics.Real_Arraysâ€™ '(G.3.1)'
  
       Preinstantiation of Ada.Numerics.Generic_Real_Arrays (Float).
  
! â€˜Ada.Real_Timeâ€™ '(D.8)'
  
       This package provides facilities similar to those of â€˜Calendarâ€™,
       but operating with a finer clock suitable for real time control.
*************** comments explaining why the unit is not
*** 17973,18002 ****
       external clock on which the GNAT runtime depends is deliberately
       reset by some external event, then such a backward jump may occur.
  
! â€˜Ada.Real_Time.Timing_Eventsâ€™ â€˜(D.15)â€™
  
       This package allows procedures to be executed at a specified time
       without the use of a task or a delay statement.
  
! â€˜Ada.Sequential_IOâ€™ â€˜(A.8.1)â€™
  
       This package provides input-output facilities for sequential files,
       which can contain a sequence of values of a single type, which can
       be any Ada type, including indefinite (unconstrained) types.
  
! â€˜Ada.Storage_IOâ€™ â€˜(A.9)â€™
  
       This package provides a facility for mapping arbitrary Ada types to
       and from a storage buffer.  It is primarily intended for the
       creation of new IO packages.
  
! â€˜Ada.Streamsâ€™ â€˜(13.13.1)â€™
  
       This is a generic package that provides the basic support for the
       concept of streams as used by the stream attributes (â€˜Inputâ€™,
       â€˜Outputâ€™, â€˜Readâ€™ and â€˜Writeâ€™).
  
! â€˜Ada.Streams.Stream_IOâ€™ â€˜(A.12.1)â€™
  
       This package is a specialization of the type â€˜Streamsâ€™ defined in
       package â€˜Streamsâ€™ together with a set of operations providing
--- 17973,18002 ----
       external clock on which the GNAT runtime depends is deliberately
       reset by some external event, then such a backward jump may occur.
  
! â€˜Ada.Real_Time.Timing_Eventsâ€™ '(D.15)'
  
       This package allows procedures to be executed at a specified time
       without the use of a task or a delay statement.
  
! â€˜Ada.Sequential_IOâ€™ '(A.8.1)'
  
       This package provides input-output facilities for sequential files,
       which can contain a sequence of values of a single type, which can
       be any Ada type, including indefinite (unconstrained) types.
  
! â€˜Ada.Storage_IOâ€™ '(A.9)'
  
       This package provides a facility for mapping arbitrary Ada types to
       and from a storage buffer.  It is primarily intended for the
       creation of new IO packages.
  
! â€˜Ada.Streamsâ€™ '(13.13.1)'
  
       This is a generic package that provides the basic support for the
       concept of streams as used by the stream attributes (â€˜Inputâ€™,
       â€˜Outputâ€™, â€˜Readâ€™ and â€˜Writeâ€™).
  
! â€˜Ada.Streams.Stream_IOâ€™ '(A.12.1)'
  
       This package is a specialization of the type â€˜Streamsâ€™ defined in
       package â€˜Streamsâ€™ together with a set of operations providing
*************** comments explaining why the unit is not
*** 18004,18084 ****
       sequential access to a file which can contain an arbitrary set of
       values of one or more Ada types.
  
! â€˜Ada.Stringsâ€™ â€˜(A.4.1)â€™
  
       This package provides some basic constants used by the string
       handling packages.
  
! â€˜Ada.Strings.Boundedâ€™ â€˜(A.4.4)â€™
  
       This package provides facilities for handling variable length
       strings.  The bounded model requires a maximum length.  It is thus
       somewhat more limited than the unbounded model, but avoids the use
       of dynamic allocation or finalization.
  
! â€˜Ada.Strings.Bounded.Equal_Case_Insensitiveâ€™ â€˜(A.4.10)â€™
  
       Provides case-insensitive comparisons of bounded strings
  
! â€˜Ada.Strings.Bounded.Hashâ€™ â€˜(A.4.9)â€™
  
       This package provides a generic hash function for bounded strings
  
! â€˜Ada.Strings.Bounded.Hash_Case_Insensitiveâ€™ â€˜(A.4.9)â€™
  
       This package provides a generic hash function for bounded strings
       that converts the string to be hashed to lower case.
  
! â€˜Ada.Strings.Bounded.Less_Case_Insensitiveâ€™ â€˜(A.4.10)â€™
  
       This package provides a comparison function for bounded strings
       that works in a case insensitive manner by converting to lower case
       before the comparison.
  
! â€˜Ada.Strings.Fixedâ€™ â€˜(A.4.3)â€™
  
       This package provides facilities for handling fixed length strings.
  
! â€˜Ada.Strings.Fixed.Equal_Case_Insensitiveâ€™ â€˜(A.4.10)â€™
  
       This package provides an equality function for fixed strings that
       compares the strings after converting both to lower case.
  
! â€˜Ada.Strings.Fixed.Hash_Case_Insensitiveâ€™ â€˜(A.4.9)â€™
  
       This package provides a case insensitive hash function for fixed
       strings that converts the string to lower case before computing the
       hash.
  
! â€˜Ada.Strings.Fixed.Less_Case_Insensitiveâ€™ â€˜(A.4.10)â€™
  
       This package provides a comparison function for fixed strings that
       works in a case insensitive manner by converting to lower case
       before the comparison.
  
! â€˜Ada.Strings.Hashâ€™ â€˜(A.4.9)â€™
  
       This package provides a hash function for strings.
  
! â€˜Ada.Strings.Hash_Case_Insensitiveâ€™ â€˜(A.4.9)â€™
  
       This package provides a hash function for strings that is case
       insensitive.  The string is converted to lower case before
       computing the hash.
  
! â€˜Ada.Strings.Less_Case_Insensitiveâ€™ â€˜(A.4.10)â€™
  
       This package provides a comparison function for\strings that works
       in a case insensitive manner by converting to lower case before the
       comparison.
  
! â€˜Ada.Strings.Mapsâ€™ â€˜(A.4.2)â€™
  
       This package provides facilities for handling character mappings
       and arbitrarily defined subsets of characters.  For instance it is
       useful in defining specialized translation tables.
  
! â€˜Ada.Strings.Maps.Constantsâ€™ â€˜(A.4.6)â€™
  
       This package provides a standard set of predefined mappings and
       predefined character sets.  For example, the standard upper to
--- 18004,18084 ----
       sequential access to a file which can contain an arbitrary set of
       values of one or more Ada types.
  
! â€˜Ada.Stringsâ€™ '(A.4.1)'
  
       This package provides some basic constants used by the string
       handling packages.
  
! â€˜Ada.Strings.Boundedâ€™ '(A.4.4)'
  
       This package provides facilities for handling variable length
       strings.  The bounded model requires a maximum length.  It is thus
       somewhat more limited than the unbounded model, but avoids the use
       of dynamic allocation or finalization.
  
! â€˜Ada.Strings.Bounded.Equal_Case_Insensitiveâ€™ '(A.4.10)'
  
       Provides case-insensitive comparisons of bounded strings
  
! â€˜Ada.Strings.Bounded.Hashâ€™ '(A.4.9)'
  
       This package provides a generic hash function for bounded strings
  
! â€˜Ada.Strings.Bounded.Hash_Case_Insensitiveâ€™ '(A.4.9)'
  
       This package provides a generic hash function for bounded strings
       that converts the string to be hashed to lower case.
  
! â€˜Ada.Strings.Bounded.Less_Case_Insensitiveâ€™ '(A.4.10)'
  
       This package provides a comparison function for bounded strings
       that works in a case insensitive manner by converting to lower case
       before the comparison.
  
! â€˜Ada.Strings.Fixedâ€™ '(A.4.3)'
  
       This package provides facilities for handling fixed length strings.
  
! â€˜Ada.Strings.Fixed.Equal_Case_Insensitiveâ€™ '(A.4.10)'
  
       This package provides an equality function for fixed strings that
       compares the strings after converting both to lower case.
  
! â€˜Ada.Strings.Fixed.Hash_Case_Insensitiveâ€™ '(A.4.9)'
  
       This package provides a case insensitive hash function for fixed
       strings that converts the string to lower case before computing the
       hash.
  
! â€˜Ada.Strings.Fixed.Less_Case_Insensitiveâ€™ '(A.4.10)'
  
       This package provides a comparison function for fixed strings that
       works in a case insensitive manner by converting to lower case
       before the comparison.
  
! â€˜Ada.Strings.Hashâ€™ '(A.4.9)'
  
       This package provides a hash function for strings.
  
! â€˜Ada.Strings.Hash_Case_Insensitiveâ€™ '(A.4.9)'
  
       This package provides a hash function for strings that is case
       insensitive.  The string is converted to lower case before
       computing the hash.
  
! â€˜Ada.Strings.Less_Case_Insensitiveâ€™ '(A.4.10)'
  
       This package provides a comparison function for\strings that works
       in a case insensitive manner by converting to lower case before the
       comparison.
  
! â€˜Ada.Strings.Mapsâ€™ '(A.4.2)'
  
       This package provides facilities for handling character mappings
       and arbitrarily defined subsets of characters.  For instance it is
       useful in defining specialized translation tables.
  
! â€˜Ada.Strings.Maps.Constantsâ€™ '(A.4.6)'
  
       This package provides a standard set of predefined mappings and
       predefined character sets.  For example, the standard upper to
*************** comments explaining why the unit is not
*** 18088,18173 ****
       with an acute accent, into account.  You should use the mappings in
       this package (rather than adding 32 yourself) to do case mappings.
  
! â€˜Ada.Strings.Unboundedâ€™ â€˜(A.4.5)â€™
  
       This package provides facilities for handling variable length
       strings.  The unbounded model allows arbitrary length strings, but
       requires the use of dynamic allocation and finalization.
  
! â€˜Ada.Strings.Unbounded.Equal_Case_Insensitiveâ€™ â€˜(A.4.10)â€™
  
       Provides case-insensitive comparisons of unbounded strings
  
! â€˜Ada.Strings.Unbounded.Hashâ€™ â€˜(A.4.9)â€™
  
       This package provides a generic hash function for unbounded strings
  
! â€˜Ada.Strings.Unbounded.Hash_Case_Insensitiveâ€™ â€˜(A.4.9)â€™
  
       This package provides a generic hash function for unbounded strings
       that converts the string to be hashed to lower case.
  
! â€˜Ada.Strings.Unbounded.Less_Case_Insensitiveâ€™ â€˜(A.4.10)â€™
  
       This package provides a comparison function for unbounded strings
       that works in a case insensitive manner by converting to lower case
       before the comparison.
  
! â€˜Ada.Strings.UTF_Encodingâ€™ â€˜(A.4.11)â€™
  
       This package provides basic definitions for dealing with
       UTF-encoded strings.
  
! â€˜Ada.Strings.UTF_Encoding.Conversionsâ€™ â€˜(A.4.11)â€™
  
       This package provides conversion functions for UTF-encoded strings.
  
! â€˜Ada.Strings.UTF_Encoding.Stringsâ€™ â€˜(A.4.11)â€™
  
! â€˜Ada.Strings.UTF_Encoding.Wide_Stringsâ€™ â€˜(A.4.11)â€™
  
! â€˜Ada.Strings.UTF_Encoding.Wide_Wide_Stringsâ€™ â€˜(A.4.11)â€™
  
       These packages provide facilities for handling UTF encodings for
       Strings, Wide_Strings and Wide_Wide_Strings.
  
! â€˜Ada.Strings.Wide_Boundedâ€™ â€˜(A.4.7)â€™
  
! â€˜Ada.Strings.Wide_Fixedâ€™ â€˜(A.4.7)â€™
  
! â€˜Ada.Strings.Wide_Mapsâ€™ â€˜(A.4.7)â€™
  
! â€˜Ada.Strings.Wide_Unboundedâ€™ â€˜(A.4.7)â€™
  
       These packages provide analogous capabilities to the corresponding
       packages without â€˜Wide_â€™ in the name, but operate with the types
       â€˜Wide_Stringâ€™ and â€˜Wide_Characterâ€™ instead of â€˜Stringâ€™ and
       â€˜Characterâ€™.  Versions of all the child packages are available.
  
! â€˜Ada.Strings.Wide_Wide_Boundedâ€™ â€˜(A.4.7)â€™
  
! â€˜Ada.Strings.Wide_Wide_Fixedâ€™ â€˜(A.4.7)â€™
  
! â€˜Ada.Strings.Wide_Wide_Mapsâ€™ â€˜(A.4.7)â€™
  
! â€˜Ada.Strings.Wide_Wide_Unboundedâ€™ â€˜(A.4.7)â€™
  
       These packages provide analogous capabilities to the corresponding
       packages without â€˜Wide_â€™ in the name, but operate with the types
       â€˜Wide_Wide_Stringâ€™ and â€˜Wide_Wide_Characterâ€™ instead of â€˜Stringâ€™
       and â€˜Characterâ€™.
  
! â€˜Ada.Synchronous_Barriersâ€™ â€˜(D.10.1)â€™
  
       This package provides facilities for synchronizing tasks at a low
       level with barriers.
  
! â€˜Ada.Synchronous_Task_Controlâ€™ â€˜(D.10)â€™
  
       This package provides some standard facilities for controlling task
       communication in a synchronous manner.
  
! â€˜Ada.Synchronous_Task_Control.EDFâ€™ â€˜(D.10)â€™
  
       Not implemented in GNAT.
  
--- 18088,18173 ----
       with an acute accent, into account.  You should use the mappings in
       this package (rather than adding 32 yourself) to do case mappings.
  
! â€˜Ada.Strings.Unboundedâ€™ '(A.4.5)'
  
       This package provides facilities for handling variable length
       strings.  The unbounded model allows arbitrary length strings, but
       requires the use of dynamic allocation and finalization.
  
! â€˜Ada.Strings.Unbounded.Equal_Case_Insensitiveâ€™ '(A.4.10)'
  
       Provides case-insensitive comparisons of unbounded strings
  
! â€˜Ada.Strings.Unbounded.Hashâ€™ '(A.4.9)'
  
       This package provides a generic hash function for unbounded strings
  
! â€˜Ada.Strings.Unbounded.Hash_Case_Insensitiveâ€™ '(A.4.9)'
  
       This package provides a generic hash function for unbounded strings
       that converts the string to be hashed to lower case.
  
! â€˜Ada.Strings.Unbounded.Less_Case_Insensitiveâ€™ '(A.4.10)'
  
       This package provides a comparison function for unbounded strings
       that works in a case insensitive manner by converting to lower case
       before the comparison.
  
! â€˜Ada.Strings.UTF_Encodingâ€™ '(A.4.11)'
  
       This package provides basic definitions for dealing with
       UTF-encoded strings.
  
! â€˜Ada.Strings.UTF_Encoding.Conversionsâ€™ '(A.4.11)'
  
       This package provides conversion functions for UTF-encoded strings.
  
! â€˜Ada.Strings.UTF_Encoding.Stringsâ€™ '(A.4.11)'
  
! â€˜Ada.Strings.UTF_Encoding.Wide_Stringsâ€™ '(A.4.11)'
  
! â€˜Ada.Strings.UTF_Encoding.Wide_Wide_Stringsâ€™ '(A.4.11)'
  
       These packages provide facilities for handling UTF encodings for
       Strings, Wide_Strings and Wide_Wide_Strings.
  
! â€˜Ada.Strings.Wide_Boundedâ€™ '(A.4.7)'
  
! â€˜Ada.Strings.Wide_Fixedâ€™ '(A.4.7)'
  
! â€˜Ada.Strings.Wide_Mapsâ€™ '(A.4.7)'
  
! â€˜Ada.Strings.Wide_Unboundedâ€™ '(A.4.7)'
  
       These packages provide analogous capabilities to the corresponding
       packages without â€˜Wide_â€™ in the name, but operate with the types
       â€˜Wide_Stringâ€™ and â€˜Wide_Characterâ€™ instead of â€˜Stringâ€™ and
       â€˜Characterâ€™.  Versions of all the child packages are available.
  
! â€˜Ada.Strings.Wide_Wide_Boundedâ€™ '(A.4.7)'
  
! â€˜Ada.Strings.Wide_Wide_Fixedâ€™ '(A.4.7)'
  
! â€˜Ada.Strings.Wide_Wide_Mapsâ€™ '(A.4.7)'
  
! â€˜Ada.Strings.Wide_Wide_Unboundedâ€™ '(A.4.7)'
  
       These packages provide analogous capabilities to the corresponding
       packages without â€˜Wide_â€™ in the name, but operate with the types
       â€˜Wide_Wide_Stringâ€™ and â€˜Wide_Wide_Characterâ€™ instead of â€˜Stringâ€™
       and â€˜Characterâ€™.
  
! â€˜Ada.Synchronous_Barriersâ€™ '(D.10.1)'
  
       This package provides facilities for synchronizing tasks at a low
       level with barriers.
  
! â€˜Ada.Synchronous_Task_Controlâ€™ '(D.10)'
  
       This package provides some standard facilities for controlling task
       communication in a synchronous manner.
  
! â€˜Ada.Synchronous_Task_Control.EDFâ€™ '(D.10)'
  
       Not implemented in GNAT.
  
*************** comments explaining why the unit is not
*** 18176,18196 ****
       This package contains definitions for manipulation of the tags of
       tagged values.
  
! â€˜Ada.Tags.Generic_Dispatching_Constructorâ€™ â€˜(3.9)â€™
  
       This package provides a way of constructing tagged class-wide
       values given only the tag value.
  
! â€˜Ada.Task_Attributesâ€™ â€˜(C.7.2)â€™
  
       This package provides the capability of associating arbitrary
       task-specific data with separate tasks.
  
! â€˜Ada.Task_Identificationâ€™ â€˜(C.7.1)â€™
  
       This package provides capabilities for task identification.
  
! â€˜Ada.Task_Terminationâ€™ â€˜(C.7.3)â€™
  
       This package provides control over task termination.
  
--- 18176,18196 ----
       This package contains definitions for manipulation of the tags of
       tagged values.
  
! â€˜Ada.Tags.Generic_Dispatching_Constructorâ€™ '(3.9)'
  
       This package provides a way of constructing tagged class-wide
       values given only the tag value.
  
! â€˜Ada.Task_Attributesâ€™ '(C.7.2)'
  
       This package provides the capability of associating arbitrary
       task-specific data with separate tasks.
  
! â€˜Ada.Task_Identificationâ€™ '(C.7.1)'
  
       This package provides capabilities for task identification.
  
! â€˜Ada.Task_Terminationâ€™ '(C.7.3)'
  
       This package provides control over task termination.
  
*************** comments explaining why the unit is not
*** 18342,18353 ****
       with pointers to unconstrained objects, since the bounds
       information cannot be handled correctly in this case.
  
! â€˜Ada.Unchecked_Deallocationâ€™ â€˜(13.11.2)â€™
  
       This generic package allows explicit freeing of storage previously
       allocated by use of an allocator.
  
! â€˜Ada.Wide_Text_IOâ€™ â€˜(A.11)â€™
  
       This package is similar to â€˜Ada.Text_IOâ€™, except that the external
       file supports wide character representations, and the internal
--- 18342,18353 ----
       with pointers to unconstrained objects, since the bounds
       information cannot be handled correctly in this case.
  
! â€˜Ada.Unchecked_Deallocationâ€™ '(13.11.2)'
  
       This generic package allows explicit freeing of storage previously
       allocated by use of an allocator.
  
! â€˜Ada.Wide_Text_IOâ€™ '(A.11)'
  
       This package is similar to â€˜Ada.Text_IOâ€™, except that the external
       file supports wide character representations, and the internal
*************** comments explaining why the unit is not
*** 18355,18361 ****
       and â€˜Stringâ€™.  The corresponding set of nested packages and child
       packages are defined.
  
! â€˜Ada.Wide_Wide_Text_IOâ€™ â€˜(A.11)â€™
  
       This package is similar to â€˜Ada.Text_IOâ€™, except that the external
       file supports wide character representations, and the internal
--- 18355,18361 ----
       and â€˜Stringâ€™.  The corresponding set of nested packages and child
       packages are defined.
  
! â€˜Ada.Wide_Wide_Text_IOâ€™ '(A.11)'
  
       This package is similar to â€˜Ada.Text_IOâ€™, except that the external
       file supports wide character representations, and the internal
*************** Character      Encoding
*** 18802,18823 ****
                 
  ----------------------------------------
                 
! â€˜hâ€™            Hex ESC encoding
                 
                 
! â€˜uâ€™            Upper half encoding
                 
                 
! â€˜sâ€™            Shift-JIS encoding
                 
                 
! â€˜eâ€™            EUC Encoding
                 
                 
! â€˜8â€™            UTF-8 encoding
                 
                 
! â€˜bâ€™            Brackets encoding
                 
  
  The encoding methods match those that can be used in a source program,
--- 18802,18823 ----
                 
  ----------------------------------------
                 
! 'h'            Hex ESC encoding
                 
                 
! 'u'            Upper half encoding
                 
                 
! 's'            Shift-JIS encoding
                 
                 
! 'e'            EUC Encoding
                 
                 
! '8'            UTF-8 encoding
                 
                 
! 'b'            Brackets encoding
                 
  
  The encoding methods match those that can be used in a source program,
*************** for which no WCEM parameter is given in
*** 18830,18836 ****
  character encoding specified for the main program (the default being
  brackets encoding if no coding method was specified with -gnatW).
  
! â€˜Hex Codingâ€™
  
       In this encoding, a wide character is represented by a five
       character sequence:
--- 18830,18836 ----
  character encoding specified for the main program (the default being
  brackets encoding if no coding method was specified with -gnatW).
  
! 'Hex Coding'
  
       In this encoding, a wide character is represented by a five
       character sequence:
*************** brackets encoding if no coding method wa
*** 18843,18849 ****
       This scheme is compatible with use of the full â€˜Wide_Characterâ€™
       set.
  
! â€˜Upper Half Codingâ€™
  
       The wide character with encoding 16#abcd#, where the upper bit is
       on (i.e., a is in the range 8-F) is represented as two bytes 16#ab#
--- 18843,18849 ----
       This scheme is compatible with use of the full â€˜Wide_Characterâ€™
       set.
  
! 'Upper Half Coding'
  
       The wide character with encoding 16#abcd#, where the upper bit is
       on (i.e., a is in the range 8-F) is represented as two bytes 16#ab#
*************** brackets encoding if no coding method wa
*** 18852,18858 ****
       method can be also used for shift-JIS or EUC where the internal
       coding matches the external coding.
  
! â€˜Shift JIS Codingâ€™
  
       A wide character is represented by a two character sequence 16#ab#
       and 16#cd#, with the restrictions described for upper half encoding
--- 18852,18858 ----
       method can be also used for shift-JIS or EUC where the internal
       coding matches the external coding.
  
! 'Shift JIS Coding'
  
       A wide character is represented by a two character sequence 16#ab#
       and 16#cd#, with the restrictions described for upper half encoding
*************** brackets encoding if no coding method wa
*** 18861,18867 ****
       Shift-JIS conversion.  Only characters defined in the JIS code set
       table can be used with this encoding method.
  
! â€˜EUC Codingâ€™
  
       A wide character is represented by a two character sequence 16#ab#
       and 16#cd#, with both characters being in the upper half.  The
--- 18861,18867 ----
       Shift-JIS conversion.  Only characters defined in the JIS code set
       table can be used with this encoding method.
  
! 'EUC Coding'
  
       A wide character is represented by a two character sequence 16#ab#
       and 16#cd#, with both characters being in the upper half.  The
*************** brackets encoding if no coding method wa
*** 18869,18875 ****
       according to the EUC encoding algorithm.  Only characters defined
       in the JIS code set table can be used with this encoding method.
  
! â€˜UTF-8 Codingâ€™
  
       A wide character is represented using UCS Transformation Format 8
       (UTF-8) as defined in Annex R of ISO 10646-1/Am.2.  Depending on
--- 18869,18875 ----
       according to the EUC encoding algorithm.  Only characters defined
       in the JIS code set table can be used with this encoding method.
  
! 'UTF-8 Coding'
  
       A wide character is represented using UCS Transformation Format 8
       (UTF-8) as defined in Annex R of ISO 10646-1/Am.2.  Depending on
*************** brackets encoding if no coding method wa
*** 18889,18895 ****
       of four or more bytes length will raise a Constraint_Error, as will
       all invalid UTF-8 sequences.)
  
! â€˜Brackets Codingâ€™
  
       In this encoding, a wide character is represented by the following
       eight character sequence:
--- 18889,18895 ----
       of four or more bytes length will raise a Constraint_Error, as will
       all invalid UTF-8 sequences.)
  
! 'Brackets Coding'
  
       In this encoding, a wide character is represented by the following
       eight character sequence:
*************** Character      Encoding
*** 19005,19026 ****
                 
  ----------------------------------------
                 
! â€˜hâ€™            Hex ESC encoding
                 
                 
! â€˜uâ€™            Upper half encoding
                 
                 
! â€˜sâ€™            Shift-JIS encoding
                 
                 
! â€˜eâ€™            EUC Encoding
                 
                 
! â€˜8â€™            UTF-8 encoding
                 
                 
! â€˜bâ€™            Brackets encoding
                 
  
  The encoding methods match those that can be used in a source program,
--- 19005,19026 ----
                 
  ----------------------------------------
                 
! 'h'            Hex ESC encoding
                 
                 
! 'u'            Upper half encoding
                 
                 
! 's'            Shift-JIS encoding
                 
                 
! 'e'            EUC Encoding
                 
                 
! '8'            UTF-8 encoding
                 
                 
! 'b'            Brackets encoding
                 
  
  The encoding methods match those that can be used in a source program,
*************** for which no WCEM parameter is given in
*** 19033,19039 ****
  character encoding specified for the main program (the default being
  brackets encoding if no coding method was specified with -gnatW).
  
! â€˜UTF-8 Codingâ€™
  
       A wide character is represented using UCS Transformation Format 8
       (UTF-8) as defined in Annex R of ISO 10646-1/Am.2.  Depending on
--- 19033,19039 ----
  character encoding specified for the main program (the default being
  brackets encoding if no coding method was specified with -gnatW).
  
! 'UTF-8 Coding'
  
       A wide character is represented using UCS Transformation Format 8
       (UTF-8) as defined in Annex R of ISO 10646-1/Am.2.  Depending on
*************** brackets encoding if no coding method wa
*** 19051,19057 ****
       other wide characters are represented as sequences of upper-half
       characters.
  
! â€˜Brackets Codingâ€™
  
       In this encoding, a wide wide character is represented by the
       following eight character sequence if is in wide character range
--- 19051,19057 ----
       other wide characters are represented as sequences of upper-half
       characters.
  
! 'Brackets Coding'
  
       In this encoding, a wide wide character is represented by the
       following eight character sequence if is in wide character range
*************** In the absence of a â€˜encoding=xxxâ€™ f
*** 19240,19250 ****
  controlled by the â€˜GNAT_CODE_PAGEâ€™ environment variable.  And if not set
  â€˜utf8â€™ is assumed.
  
! â€˜CP_ACPâ€™
  
       The current system Windows ANSI code page.
  
! â€˜CP_UTF8â€™
  
       UTF-8 encoding
  
--- 19240,19250 ----
  controlled by the â€˜GNAT_CODE_PAGEâ€™ environment variable.  And if not set
  â€˜utf8â€™ is assumed.
  
! 'CP_ACP'
  
       The current system Windows ANSI code page.
  
! 'CP_UTF8'
  
       UTF-8 encoding
  
*************** if not set â€˜TEXTâ€™ is assumed.
*** 19264,19282 ****
  
  The possible values are those supported on Windows:
  
! â€˜TEXTâ€™
  
       Translated text mode
  
! â€˜WTEXTâ€™
  
       Translated unicode encoding
  
! â€˜U16TEXTâ€™
  
       Unicode 16-bit encoding
  
! â€˜U8TEXTâ€™
  
       Unicode 8-bit encoding
  
--- 19264,19282 ----
  
  The possible values are those supported on Windows:
  
! 'TEXT'
  
       Translated text mode
  
! 'WTEXT'
  
       Translated unicode encoding
  
! 'U16TEXT'
  
       Unicode 16-bit encoding
  
! 'U8TEXT'
  
       Unicode 8-bit encoding
  
*************** shown in the following table:
*** 19295,19301 ****
  
  ----------------------------------------------------------------------------
                                                       
!                                  â€˜OPENâ€™              â€˜CREATEâ€™
                                                       
                                                       
  Append_File                      â€œr+â€�                â€œw+â€�
--- 19295,19301 ----
  
  ----------------------------------------------------------------------------
                                                       
!                                  'OPEN'              'CREATE'
                                                       
                                                       
  Append_File                      â€œr+â€�                â€œw+â€�
*************** File: gnat_rm.info,  Node: GNAT CRC32 g-
*** 20249,20256 ****
  ==================================
  
  This package implements the CRC-32 algorithm.  For a full description of
! this algorithm see â€˜Computation of Cyclic Redundancy Checks via Table
! Look-Upâ€™, â€˜Communications of the ACMâ€™, Vol.  31 No.  8, pp.  1008-1013,
  Aug.  1988.  Sarwate, D.V.
  
  
--- 20249,20256 ----
  ==================================
  
  This package implements the CRC-32 algorithm.  For a full description of
! this algorithm see 'Computation of Cyclic Redundancy Checks via Table
! Look-Up', â€˜Communications of the ACMâ€™, Vol.  31 No.  8, pp.  1008-1013,
  Aug.  1988.  Sarwate, D.V.
  
  
*************** Ada 95, Ada 2005, and Ada 2012 define a
*** 21656,21685 ****
  Annexes, which are not required in all implementations.  However, as
  described in this chapter, GNAT implements all of these annexes:
  
! â€˜Systems Programming (Annex C)â€™
  
       The Systems Programming Annex is fully implemented.
  
! â€˜Real-Time Systems (Annex D)â€™
  
       The Real-Time Systems Annex is fully implemented.
  
! â€˜Distributed Systems (Annex E)â€™
  
       Stub generation is fully implemented in the GNAT compiler.  In
       addition, a complete compatible PCS is available as part of the
       GLADE system, a separate product.  When the two products are used
       in conjunction, this annex is fully implemented.
  
! â€˜Information Systems (Annex F)â€™
  
       The Information Systems annex is fully implemented.
  
! â€˜Numerics (Annex G)â€™
  
       The Numerics Annex is fully implemented.
  
! â€˜Safety and Security / High-Integrity Systems (Annex H)â€™
  
       The Safety and Security Annex (termed the High-Integrity Systems
       Annex in Ada 2005) is fully implemented.
--- 21656,21685 ----
  Annexes, which are not required in all implementations.  However, as
  described in this chapter, GNAT implements all of these annexes:
  
! 'Systems Programming (Annex C)'
  
       The Systems Programming Annex is fully implemented.
  
! 'Real-Time Systems (Annex D)'
  
       The Real-Time Systems Annex is fully implemented.
  
! 'Distributed Systems (Annex E)'
  
       Stub generation is fully implemented in the GNAT compiler.  In
       addition, a complete compatible PCS is available as part of the
       GLADE system, a separate product.  When the two products are used
       in conjunction, this annex is fully implemented.
  
! 'Information Systems (Annex F)'
  
       The Information Systems annex is fully implemented.
  
! 'Numerics (Annex G)'
  
       The Numerics Annex is fully implemented.
  
! 'Safety and Security / High-Integrity Systems (Annex H)'
  
       The Safety and Security Annex (termed the High-Integrity Systems
       Annex in Ada 2005) is fully implemented.
*************** provided for GNU Câ€™s symbolic names fo
*** 21779,21785 ****
  If there are no input operands, this argument may either be omitted, or
  explicitly given as â€˜No_Input_Operandsâ€™.  The fourth argument, not
  present in the above example, is a list of register names, called the
! â€˜clobberâ€™ argument.  This argument, if given, must be a static string
  expression, and is a space or comma separated list of names of registers
  that must be considered destroyed as a result of the â€˜Asmâ€™ call.  If
  this argument is the null string (the default value), then the code
--- 21779,21785 ----
  If there are no input operands, this argument may either be omitted, or
  explicitly given as â€˜No_Input_Operandsâ€™.  The fourth argument, not
  present in the above example, is a list of register names, called the
! 'clobber' argument.  This argument, if given, must be a static string
  expression, and is a space or comma separated list of names of registers
  that must be considered destroyed as a result of the â€˜Asmâ€™ call.  If
  this argument is the null string (the default value), then the code
*************** addition to registers, the special clobb
*** 21788,21794 ****
  described in the GNU C docs are both supported.
  
  The fifth argument, not present in the above example, called the
! â€˜volatileâ€™ argument, is by default â€˜Falseâ€™.  It can be set to the
  literal value â€˜Trueâ€™ to indicate to the code generator that all
  optimizations with respect to the instruction specified should be
  suppressed, and in particular an instruction that has outputs will still
--- 21788,21794 ----
  described in the GNU C docs are both supported.
  
  The fifth argument, not present in the above example, called the
! 'volatile' argument, is by default â€˜Falseâ€™.  It can be set to the
  literal value â€˜Trueâ€™ to indicate to the code generator that all
  optimizations with respect to the instruction specified should be
  suppressed, and in particular an instruction that has outputs will still
*************** respecting the scheduling semantics spec
*** 21936,21948 ****
  For instance the Annex D requirement for the â€˜FIFO_Within_Prioritiesâ€™
  scheduling policy states:
  
!      â€˜When the active priority of a ready task that is not running
       changes, or the setting of its base priority takes effect, the task
       is removed from the ready queue for its old active priority and is
       added at the tail of the ready queue for its new active priority,
       except in the case where the active priority is lowered due to the
       loss of inherited priority, in which case the task is added at the
!      head of the ready queue for its new active priority.â€™
  
  While most kernels do put tasks at the end of the priority queue when a
  task changes its priority, (which respects the main
--- 21936,21948 ----
  For instance the Annex D requirement for the â€˜FIFO_Within_Prioritiesâ€™
  scheduling policy states:
  
!      'When the active priority of a ready task that is not running
       changes, or the setting of its base priority takes effect, the task
       is removed from the ready queue for its old active priority and is
       added at the tail of the ready queue for its new active priority,
       except in the case where the active priority is lowered due to the
       loss of inherited priority, in which case the task is added at the
!      head of the ready queue for its new active priority.'
  
  While most kernels do put tasks at the end of the priority queue when a
  task changes its priority, (which respects the main
*************** application using the features in Annex
*** 22008,22014 ****
  However, the implementation approach used by GNAT provides for more
  extensive usage as follows:
  
! â€˜Communication between separate programsâ€™
  
       This allows separate programs to access the data in passive
       partitions, using protected objects for synchronization where
--- 22008,22014 ----
  However, the implementation approach used by GNAT provides for more
  extensive usage as follows:
  
! 'Communication between separate programs'
  
       This allows separate programs to access the data in passive
       partitions, using protected objects for synchronization where
*************** extensive usage as follows:
*** 22018,22024 ****
       different endianness) to communicate via the data in a passive
       partition.
  
! â€˜Persistence between program runsâ€™
  
       The data in a passive package can persist from one run of a program
       to another, so that a later program sees the final values stored by
--- 22018,22024 ----
       different endianness) to communicate via the data in a passive
       partition.
  
! 'Persistence between program runs'
  
       The data in a passive package can persist from one run of a program
       to another, so that a later program sees the final values stored by
*************** constraint:
*** 22246,22252 ****
  
       Word : Rec;
  
! Such an object is said to be â€˜unconstrainedâ€™.  The discriminant of the
  object can be modified by a full assignment to the object, as long as it
  preserves the relation between the value of the discriminant, and the
  value of the components that depend on it:
--- 22246,22252 ----
  
       Word : Rec;
  
! Such an object is said to be 'unconstrained'.  The discriminant of the
  object can be modified by a full assignment to the object, as long as it
  preserves the relation between the value of the discriminant, and the
  value of the components that depend on it:
*************** proper approach is to declare an index t
*** 22290,22296 ****
  that unconstrained objects are not too large.
  
  One final wrinkle: if the object is declared to be â€˜aliasedâ€™, or if it
! is created in the heap by means of an allocator, then it is â€˜notâ€™
  unconstrained: it is constrained by the default values of the
  discriminants, and those values cannot be modified by full assignment.
  This is because in the presence of aliasing all views of the object
--- 22290,22296 ----
  that unconstrained objects are not too large.
  
  One final wrinkle: if the object is declared to be â€˜aliasedâ€™, or if it
! is created in the heap by means of an allocator, then it is 'not'
  unconstrained: it is constrained by the default values of the
  discriminants, and those values cannot be modified by full assignment.
  This is because in the presence of aliasing all views of the object
*************** default).
*** 22336,22350 ****
  
  Strict conformance to the Ada Reference Manual can be achieved by adding
  two compiler options for dynamic checks for access-before-elaboration on
! subprogram calls and generic instantiations (â€˜-gnatEâ€™), and stack
! overflow checking (â€˜-fstack-checkâ€™).
  
  Note that the result of a floating point arithmetic operation in
  overflow and invalid situations, when the â€˜Machine_Overflowsâ€™ attribute
  of the result type is â€˜Falseâ€™, is to generate IEEE NaN and infinite
  values.  This is the case for machines compliant with the IEEE
  floating-point standard, but on machines that are not fully compliant
! with this standard, such as Alpha, the â€˜-mieeeâ€™ compiler flag must be
  used for achieving IEEE confirming behavior (although at the cost of a
  significant performance penalty), so infinite and NaN values are
  properly generated.
--- 22336,22350 ----
  
  Strict conformance to the Ada Reference Manual can be achieved by adding
  two compiler options for dynamic checks for access-before-elaboration on
! subprogram calls and generic instantiations ('-gnatE'), and stack
! overflow checking ('-fstack-check').
  
  Note that the result of a floating point arithmetic operation in
  overflow and invalid situations, when the â€˜Machine_Overflowsâ€™ attribute
  of the result type is â€˜Falseâ€™, is to generate IEEE NaN and infinite
  values.  This is the case for machines compliant with the IEEE
  floating-point standard, but on machines that are not fully compliant
! with this standard, such as Alpha, the '-mieee' compiler flag must be
  used for achieving IEEE confirming behavior (although at the cost of a
  significant performance penalty), so infinite and NaN values are
  properly generated.
*************** File: gnat_rm.info,  Node: Implementatio
*** 22357,22363 ****
  
  This chapter contains a complete list of Ada 2012 features that have
  been implemented.  Generally, these features are only available if the
! â€˜-gnat12â€™ (Ada 2012 features enabled) option is set, which is the
  default behavior, or if the configuration pragma â€˜Ada_2012â€™ is used.
  
  However, new pragmas, attributes, and restrictions are unconditionally
--- 22357,22363 ----
  
  This chapter contains a complete list of Ada 2012 features that have
  been implemented.  Generally, these features are only available if the
! '-gnat12' (Ada 2012 features enabled) option is set, which is the
  default behavior, or if the configuration pragma â€˜Ada_2012â€™ is used.
  
  However, new pragmas, attributes, and restrictions are unconditionally
*************** the RM, the earliest is used.
*** 22382,22388 ****
  A complete description of the AIs may be found in
  â€˜http://www.ada-auth.org/ai05-summary.htmlâ€™.
  
!    * â€˜AI-0002 Export C with unconstrained arrays (0000-00-00)â€™
  
       The compiler is not required to support exporting an Ada subprogram
       with convention C if there are parameters or a return type of an
--- 22382,22388 ----
  A complete description of the AIs may be found in
  â€˜http://www.ada-auth.org/ai05-summary.htmlâ€™.
  
!    * 'AI-0002 Export C with unconstrained arrays (0000-00-00)'
  
       The compiler is not required to support exporting an Ada subprogram
       with convention C if there are parameters or a return type of an
*************** A complete description of the AIs may be
*** 22393,22399 ****
  
       RM References: B.01 (17) B.03 (62) B.03 (71.1/2)
  
!    * â€˜AI-0003 Qualified expressions as names (2010-07-11)â€™
  
       In Ada 2012, a qualified expression is considered to be
       syntactically a name, meaning that constructs such as â€˜A'(F(X)).Bâ€™
--- 22393,22399 ----
  
       RM References: B.01 (17) B.03 (62) B.03 (71.1/2)
  
!    * 'AI-0003 Qualified expressions as names (2010-07-11)'
  
       In Ada 2012, a qualified expression is considered to be
       syntactically a name, meaning that constructs such as â€˜A'(F(X)).Bâ€™
*************** A complete description of the AIs may be
*** 22403,22409 ****
       RM References: 3.03 (11) 3.03 (21) 4.01 (2) 4.04 (7) 4.07 (3) 5.04
       (7)
  
!    * â€˜AI-0007 Stream read and private scalar types (0000-00-00)â€™
  
       The RM as written appeared to limit the possibilities of declaring
       read attribute procedures for private scalar types.  This
--- 22403,22409 ----
       RM References: 3.03 (11) 3.03 (21) 4.01 (2) 4.04 (7) 4.07 (3) 5.04
       (7)
  
!    * 'AI-0007 Stream read and private scalar types (0000-00-00)'
  
       The RM as written appeared to limit the possibilities of declaring
       read attribute procedures for private scalar types.  This
*************** A complete description of the AIs may be
*** 22411,22417 ****
  
       RM References: 13.13.02 (50/2) 13.13.02 (51/2)
  
!    * â€˜AI-0008 General access to constrained objects (0000-00-00)â€™
  
       The wording in the RM implied that if you have a general access to
       a constrained object, it could be used to modify the discriminants.
--- 22411,22417 ----
  
       RM References: 13.13.02 (50/2) 13.13.02 (51/2)
  
!    * 'AI-0008 General access to constrained objects (0000-00-00)'
  
       The wording in the RM implied that if you have a general access to
       a constrained object, it could be used to modify the discriminants.
*************** A complete description of the AIs may be
*** 22421,22427 ****
       RM References: 3.03 (23) 3.10.02 (26/2) 4.01 (9) 6.04.01 (17)
       8.05.01 (5/2)
  
!    * â€˜AI-0009 Pragma Independent[_Components] (2010-07-23)â€™
  
       This AI introduces the new pragmas â€˜Independentâ€™ and
       â€˜Independent_Componentsâ€™, which control guaranteeing independence
--- 22421,22427 ----
       RM References: 3.03 (23) 3.10.02 (26/2) 4.01 (9) 6.04.01 (17)
       8.05.01 (5/2)
  
!    * 'AI-0009 Pragma Independent[_Components] (2010-07-23)'
  
       This AI introduces the new pragmas â€˜Independentâ€™ and
       â€˜Independent_Componentsâ€™, which control guaranteeing independence
*************** A complete description of the AIs may be
*** 22431,22437 ****
       RM References: 9.10 (1) 13.01 (15/1) 13.02 (9) 13.03 (13) C.06 (2)
       C.06 (4) C.06 (6) C.06 (9) C.06 (13) C.06 (14)
  
!    * â€˜AI-0012 Pack/Component_Size for aliased/atomic (2010-07-15)â€™
  
       It is now illegal to give an inappropriate component size or a
       pragma â€˜Packâ€™ that attempts to change the component size in the
--- 22431,22437 ----
       RM References: 9.10 (1) 13.01 (15/1) 13.02 (9) 13.03 (13) C.06 (2)
       C.06 (4) C.06 (6) C.06 (9) C.06 (13) C.06 (14)
  
!    * 'AI-0012 Pack/Component_Size for aliased/atomic (2010-07-15)'
  
       It is now illegal to give an inappropriate component size or a
       pragma â€˜Packâ€™ that attempts to change the component size in the
*************** A complete description of the AIs may be
*** 22441,22456 ****
       RM References: 13.02 (6.1/2) 13.02 (7) C.06 (10) C.06 (11) C.06
       (21)
  
!    * â€˜AI-0015 Constant return objects (0000-00-00)â€™
  
!      The return object declared in an â€˜extended_return_statementâ€™ may be
       declared constant.  This was always intended, and GNAT has always
       allowed it.
  
       RM References: 6.05 (2.1/2) 3.03 (10/2) 3.03 (21) 6.05 (5/2) 6.05
       (5.7/2)
  
!    * â€˜AI-0017 Freezing and incomplete types (0000-00-00)â€™
  
       So-called â€˜Taft-amendment typesâ€™ (i.e., types that are completed in
       package bodies) are not frozen by the occurrence of bodies in the
--- 22441,22456 ----
       RM References: 13.02 (6.1/2) 13.02 (7) C.06 (10) C.06 (11) C.06
       (21)
  
!    * 'AI-0015 Constant return objects (0000-00-00)'
  
!      The return object declared in an 'extended_return_statement' may be
       declared constant.  This was always intended, and GNAT has always
       allowed it.
  
       RM References: 6.05 (2.1/2) 3.03 (10/2) 3.03 (21) 6.05 (5/2) 6.05
       (5.7/2)
  
!    * 'AI-0017 Freezing and incomplete types (0000-00-00)'
  
       So-called â€˜Taft-amendment typesâ€™ (i.e., types that are completed in
       package bodies) are not frozen by the occurrence of bodies in the
*************** A complete description of the AIs may be
*** 22458,22464 ****
  
       RM References: 13.14 (3/1)
  
!    * â€˜AI-0019 Freezing of primitives for tagged types (0000-00-00)â€™
  
       The RM suggests that primitive subprograms of a specific tagged
       type are frozen when the tagged type is frozen.  This would be an
--- 22458,22464 ----
  
       RM References: 13.14 (3/1)
  
!    * 'AI-0019 Freezing of primitives for tagged types (0000-00-00)'
  
       The RM suggests that primitive subprograms of a specific tagged
       type are frozen when the tagged type is frozen.  This would be an
*************** A complete description of the AIs may be
*** 22469,22475 ****
       RM References: 13.14 (2) 13.14 (3/1) 13.14 (8.1/1) 13.14 (10) 13.14
       (14) 13.14 (15.1/2)
  
!    * â€˜AI-0026 Missing rules for Unchecked_Union (2010-07-07)â€™
  
       Record representation clauses concerning Unchecked_Union types
       cannot mention the discriminant of the type.  The type of a
--- 22469,22475 ----
       RM References: 13.14 (2) 13.14 (3/1) 13.14 (8.1/1) 13.14 (10) 13.14
       (14) 13.14 (15.1/2)
  
!    * 'AI-0026 Missing rules for Unchecked_Union (2010-07-07)'
  
       Record representation clauses concerning Unchecked_Union types
       cannot mention the discriminant of the type.  The type of a
*************** A complete description of the AIs may be
*** 22482,22488 ****
  
       RM References: 7.06 (9.4/2) B.03.03 (9/2) B.03.03 (10/2)
  
!    * â€˜AI-0030 Requeue on synchronized interfaces (2010-07-19)â€™
  
       Requeue is permitted to a protected, synchronized or task interface
       primitive providing it is known that the overriding operation is an
--- 22482,22488 ----
  
       RM References: 7.06 (9.4/2) B.03.03 (9/2) B.03.03 (10/2)
  
!    * 'AI-0030 Requeue on synchronized interfaces (2010-07-19)'
  
       Requeue is permitted to a protected, synchronized or task interface
       primitive providing it is known that the overriding operation is an
*************** A complete description of the AIs may be
*** 22495,22501 ****
       RM References: 9.05 (9) 9.05.04 (2) 9.05.04 (3) 9.05.04 (5) 9.05.04
       (6) 9.05.04 (7) 9.05.04 (12)
  
!    * â€˜AI-0031 Add From parameter to Find_Token (2010-07-25)â€™
  
       A new version of â€˜Find_Tokenâ€™ is added to all relevant string
       packages, with an extra parameter â€˜Fromâ€™.  Instead of starting at
--- 22495,22501 ----
       RM References: 9.05 (9) 9.05.04 (2) 9.05.04 (3) 9.05.04 (5) 9.05.04
       (6) 9.05.04 (7) 9.05.04 (12)
  
!    * 'AI-0031 Add From parameter to Find_Token (2010-07-25)'
  
       A new version of â€˜Find_Tokenâ€™ is added to all relevant string
       packages, with an extra parameter â€˜Fromâ€™.  Instead of starting at
*************** A complete description of the AIs may be
*** 22508,22514 ****
       RM References: A.04.03 (16) A.04.03 (67) A.04.03 (68/1) A.04.04
       (51) A.04.05 (46)
  
!    * â€˜AI-0032 Extended return for class-wide functions (0000-00-00)â€™
  
       If a function returns a class-wide type, the object of an extended
       return statement can be declared with a specific type that is
--- 22508,22514 ----
       RM References: A.04.03 (16) A.04.03 (67) A.04.03 (68/1) A.04.04
       (51) A.04.05 (46)
  
!    * 'AI-0032 Extended return for class-wide functions (0000-00-00)'
  
       If a function returns a class-wide type, the object of an extended
       return statement can be declared with a specific type that is
*************** A complete description of the AIs may be
*** 22520,22526 ****
       RM References: 6.05 (5.2/2) 6.05 (5.3/2) 6.05 (5.6/2) 6.05 (5.8/2)
       6.05 (8/2)
  
!    * â€˜AI-0033 Attach/Interrupt_Handler in generic (2010-07-24)â€™
  
       Neither of these two pragmas may appear within a generic template,
       because the generic might be instantiated at other than the library
--- 22520,22526 ----
       RM References: 6.05 (5.2/2) 6.05 (5.3/2) 6.05 (5.6/2) 6.05 (5.8/2)
       6.05 (8/2)
  
!    * 'AI-0033 Attach/Interrupt_Handler in generic (2010-07-24)'
  
       Neither of these two pragmas may appear within a generic template,
       because the generic might be instantiated at other than the library
*************** A complete description of the AIs may be
*** 22528,22534 ****
  
       RM References: 13.11.02 (16) C.03.01 (7/2) C.03.01 (8/2)
  
!    * â€˜AI-0034 Categorization of limited views (0000-00-00)â€™
  
       The RM makes certain limited with clauses illegal because of
       categorization considerations, when the corresponding normal with
--- 22528,22534 ----
  
       RM References: 13.11.02 (16) C.03.01 (7/2) C.03.01 (8/2)
  
!    * 'AI-0034 Categorization of limited views (0000-00-00)'
  
       The RM makes certain limited with clauses illegal because of
       categorization considerations, when the corresponding normal with
*************** A complete description of the AIs may be
*** 22537,22543 ****
  
       RM References: 10.02.01 (11/1) 10.02.01 (17/2)
  
!    * â€˜AI-0035 Inconsistencies with Pure units (0000-00-00)â€™
  
       This AI remedies some inconsistencies in the legality rules for
       Pure units.  Derived access types are legal in a pure unit (on the
--- 22537,22543 ----
  
       RM References: 10.02.01 (11/1) 10.02.01 (17/2)
  
!    * 'AI-0035 Inconsistencies with Pure units (0000-00-00)'
  
       This AI remedies some inconsistencies in the legality rules for
       Pure units.  Derived access types are legal in a pure unit (on the
*************** A complete description of the AIs may be
*** 22549,22555 ****
       RM References: 10.02.01 (15.1/2) 10.02.01 (15.4/2) 10.02.01
       (15.5/2) 10.02.01 (17/2)
  
!    * â€˜AI-0037 Out-of-range box associations in aggregate (0000-00-00)â€™
  
       This AI confirms that an association of the form â€˜Indx => <>â€™ in an
       array aggregate must raise â€˜Constraint_Errorâ€™ if â€˜Indxâ€™ is out of
--- 22549,22555 ----
       RM References: 10.02.01 (15.1/2) 10.02.01 (15.4/2) 10.02.01
       (15.5/2) 10.02.01 (17/2)
  
!    * 'AI-0037 Out-of-range box associations in aggregate (0000-00-00)'
  
       This AI confirms that an association of the form â€˜Indx => <>â€™ in an
       array aggregate must raise â€˜Constraint_Errorâ€™ if â€˜Indxâ€™ is out of
*************** A complete description of the AIs may be
*** 22559,22565 ****
  
       RM References: 4.03.03 (29)
  
!    * â€˜AI-0038 Minor errors in Text_IO (0000-00-00)â€™
  
       These are minor errors in the description on three points.  The
       intent on all these points has always been clear, and GNAT has
--- 22559,22565 ----
  
       RM References: 4.03.03 (29)
  
!    * 'AI-0038 Minor errors in Text_IO (0000-00-00)'
  
       These are minor errors in the description on three points.  The
       intent on all these points has always been clear, and GNAT has
*************** A complete description of the AIs may be
*** 22568,22574 ****
       RM References: A.10.05 (37) A.10.07 (8/1) A.10.07 (10) A.10.07 (12)
       A.10.08 (10) A.10.08 (24)
  
!    * â€˜AI-0039 Stream attributes cannot be dynamic (0000-00-00)â€™
  
       The RM permitted the use of dynamic expressions (such as â€˜ptr.allâ€™)
       for stream attributes, but these were never useful and are now
--- 22568,22574 ----
       RM References: A.10.05 (37) A.10.07 (8/1) A.10.07 (10) A.10.07 (12)
       A.10.08 (10) A.10.08 (24)
  
!    * 'AI-0039 Stream attributes cannot be dynamic (0000-00-00)'
  
       The RM permitted the use of dynamic expressions (such as â€˜ptr.allâ€™)
       for stream attributes, but these were never useful and are now
*************** A complete description of the AIs may be
*** 22576,22582 ****
  
       RM References: 13.03 (4) 13.03 (6) 13.13.02 (38/2)
  
!    * â€˜AI-0040 Limited with clauses on descendant (0000-00-00)â€™
  
       This AI confirms that a limited with clause in a child unit cannot
       name an ancestor of the unit.  This has always been checked in
--- 22576,22582 ----
  
       RM References: 13.03 (4) 13.03 (6) 13.13.02 (38/2)
  
!    * 'AI-0040 Limited with clauses on descendant (0000-00-00)'
  
       This AI confirms that a limited with clause in a child unit cannot
       name an ancestor of the unit.  This has always been checked in
*************** A complete description of the AIs may be
*** 22584,22590 ****
  
       RM References: 10.01.02 (20/2)
  
!    * â€˜AI-0042 Overriding versus implemented-by (0000-00-00)â€™
  
       This AI fixes a wording gap in the RM. An operation of a
       synchronized interface can be implemented by a protected or task
--- 22584,22590 ----
  
       RM References: 10.01.02 (20/2)
  
!    * 'AI-0042 Overriding versus implemented-by (0000-00-00)'
  
       This AI fixes a wording gap in the RM. An operation of a
       synchronized interface can be implemented by a protected or task
*************** A complete description of the AIs may be
*** 22594,22607 ****
  
       RM References: 9.01 (9.2/2) 9.04 (11.1/2)
  
!    * â€˜AI-0043 Rules about raising exceptions (0000-00-00)â€™
  
       This AI covers various omissions in the RM regarding the raising of
       exceptions.  GNAT has always implemented the intended semantics.
  
       RM References: 11.04.01 (10.1/2) 11 (2)
  
!    * â€˜AI-0044 Restrictions on container instantiations (0000-00-00)â€™
  
       This AI places restrictions on allowed instantiations of generic
       containers.  These restrictions are not checked by the compiler, so
--- 22594,22607 ----
  
       RM References: 9.01 (9.2/2) 9.04 (11.1/2)
  
!    * 'AI-0043 Rules about raising exceptions (0000-00-00)'
  
       This AI covers various omissions in the RM regarding the raising of
       exceptions.  GNAT has always implemented the intended semantics.
  
       RM References: 11.04.01 (10.1/2) 11 (2)
  
!    * 'AI-0044 Restrictions on container instantiations (0000-00-00)'
  
       This AI places restrictions on allowed instantiations of generic
       containers.  These restrictions are not checked by the compiler, so
*************** A complete description of the AIs may be
*** 22611,22625 ****
       RM References: A.18 (4/2) A.18.02 (231/2) A.18.03 (145/2) A.18.06
       (56/2) A.18.08 (66/2) A.18.09 (79/2) A.18.26 (5/2) A.18.26 (9/2)
  
!    * â€˜AI-0046 Null exclusion match for full conformance (2010-07-17)â€™
  
       For full conformance, in the case of access parameters, the null
       exclusion must match (either both or neither must have â€˜not nullâ€™).
  
       RM References: 6.03.02 (18)
  
!    * â€˜AI-0050 Raising Constraint_Error early for function call
!      (0000-00-00)â€™
  
       The implementation permissions for raising â€˜Constraint_Errorâ€™ early
       on a function call when it was clear an exception would be raised
--- 22611,22625 ----
       RM References: A.18 (4/2) A.18.02 (231/2) A.18.03 (145/2) A.18.06
       (56/2) A.18.08 (66/2) A.18.09 (79/2) A.18.26 (5/2) A.18.26 (9/2)
  
!    * 'AI-0046 Null exclusion match for full conformance (2010-07-17)'
  
       For full conformance, in the case of access parameters, the null
       exclusion must match (either both or neither must have â€˜not nullâ€™).
  
       RM References: 6.03.02 (18)
  
!    * 'AI-0050 Raising Constraint_Error early for function call
!      (0000-00-00)'
  
       The implementation permissions for raising â€˜Constraint_Errorâ€™ early
       on a function call when it was clear an exception would be raised
*************** A complete description of the AIs may be
*** 22629,22635 ****
  
       RM References: 6.05 (24/2)
  
!    * â€˜AI-0056 Index on null string returns zero (0000-00-00)â€™
  
       The wording in the Ada 2005 RM implied an incompatible handling of
       the â€˜Indexâ€™ functions, resulting in raising an exception instead of
--- 22629,22635 ----
  
       RM References: 6.05 (24/2)
  
!    * 'AI-0056 Index on null string returns zero (0000-00-00)'
  
       The wording in the Ada 2005 RM implied an incompatible handling of
       the â€˜Indexâ€™ functions, resulting in raising an exception instead of
*************** A complete description of the AIs may be
*** 22639,22645 ****
  
       RM References: A.04.03 (56.2/2) A.04.03 (58.5/2)
  
!    * â€˜AI-0058 Abnormal completion of an extended return (0000-00-00)â€™
  
       The RM had some incorrect wording implying wrong treatment of
       abnormal completion in an extended return.  GNAT has always
--- 22639,22645 ----
  
       RM References: A.04.03 (56.2/2) A.04.03 (58.5/2)
  
!    * 'AI-0058 Abnormal completion of an extended return (0000-00-00)'
  
       The RM had some incorrect wording implying wrong treatment of
       abnormal completion in an extended return.  GNAT has always
*************** A complete description of the AIs may be
*** 22647,22653 ****
  
       RM References: 6.05 (22/2)
  
!    * â€˜AI-0060 Extended definition of remote access types (0000-00-00)â€™
  
       This AI extends the definition of remote access types to include
       access to limited, synchronized, protected or task class-wide
--- 22647,22653 ----
  
       RM References: 6.05 (22/2)
  
!    * 'AI-0060 Extended definition of remote access types (0000-00-00)'
  
       This AI extends the definition of remote access types to include
       access to limited, synchronized, protected or task class-wide
*************** A complete description of the AIs may be
*** 22656,22669 ****
       RM References: A (4) E.02.02 (9/1) E.02.02 (9.2/1) E.02.02 (14/2)
       E.02.02 (18)
  
!    * â€˜AI-0062 Null exclusions and deferred constants (0000-00-00)â€™
  
       A full constant may have a null exclusion even if its associated
       deferred constant does not.  GNAT has always allowed this.
  
       RM References: 7.04 (6/2) 7.04 (7.1/2)
  
!    * â€˜AI-0064 Redundant finalization rule (0000-00-00)â€™
  
       This is an editorial change only.  The intended behavior is already
       checked by an existing ACATS test, which GNAT has always executed
--- 22656,22669 ----
       RM References: A (4) E.02.02 (9/1) E.02.02 (9.2/1) E.02.02 (14/2)
       E.02.02 (18)
  
!    * 'AI-0062 Null exclusions and deferred constants (0000-00-00)'
  
       A full constant may have a null exclusion even if its associated
       deferred constant does not.  GNAT has always allowed this.
  
       RM References: 7.04 (6/2) 7.04 (7.1/2)
  
!    * 'AI-0064 Redundant finalization rule (0000-00-00)'
  
       This is an editorial change only.  The intended behavior is already
       checked by an existing ACATS test, which GNAT has always executed
*************** A complete description of the AIs may be
*** 22671,22677 ****
  
       RM References: 7.06.01 (17.1/1)
  
!    * â€˜AI-0065 Remote access types and external streaming (0000-00-00)â€™
  
       This AI clarifies the fact that all remote access types support
       external streaming.  This fixes an obvious oversight in the
--- 22671,22677 ----
  
       RM References: 7.06.01 (17.1/1)
  
!    * 'AI-0065 Remote access types and external streaming (0000-00-00)'
  
       This AI clarifies the fact that all remote access types support
       external streaming.  This fixes an obvious oversight in the
*************** A complete description of the AIs may be
*** 22680,22686 ****
  
       RM References: 13.13.02 (52/2)
  
!    * â€˜AI-0070 Elaboration of interface types (0000-00-00)â€™
  
       This is an editorial change only, there are no testable
       consequences short of checking for the absence of generated code
--- 22680,22686 ----
  
       RM References: 13.13.02 (52/2)
  
!    * 'AI-0070 Elaboration of interface types (0000-00-00)'
  
       This is an editorial change only, there are no testable
       consequences short of checking for the absence of generated code
*************** A complete description of the AIs may be
*** 22688,22694 ****
  
       RM References: 3.09.04 (18/2)
  
!    * â€˜AI-0072 Task signalling using â€˜Terminated (0000-00-00)â€™
  
       This AI clarifies that task signalling for reading â€˜'Terminatedâ€™
       only occurs if the result is True.  GNAT semantics has always been
--- 22688,22694 ----
  
       RM References: 3.09.04 (18/2)
  
!    * 'AI-0072 Task signalling using â€˜Terminated (0000-00-00)'
  
       This AI clarifies that task signalling for reading â€˜'Terminatedâ€™
       only occurs if the result is True.  GNAT semantics has always been
*************** A complete description of the AIs may be
*** 22696,22702 ****
  
       RM References: 9.10 (6.1/1)
  
!    * â€˜AI-0073 Functions returning abstract types (2010-07-10)â€™
  
       This AI covers a number of issues regarding returning abstract
       types.  In particular generic functions cannot have abstract result
--- 22696,22702 ----
  
       RM References: 9.10 (6.1/1)
  
!    * 'AI-0073 Functions returning abstract types (2010-07-10)'
  
       This AI covers a number of issues regarding returning abstract
       types.  In particular generic functions cannot have abstract result
*************** A complete description of the AIs may be
*** 22707,22713 ****
  
       RM References: 3.09.03 (8) 3.09.03 (10) 6.05 (8/2)
  
!    * â€˜AI-0076 function with controlling result (0000-00-00)â€™
  
       This is an editorial change only.  The RM defines calls with
       controlling results, but uses the term â€˜function with controlling
--- 22707,22713 ----
  
       RM References: 3.09.03 (8) 3.09.03 (10) 6.05 (8/2)
  
!    * 'AI-0076 function with controlling result (0000-00-00)'
  
       This is an editorial change only.  The RM defines calls with
       controlling results, but uses the term â€˜function with controlling
*************** A complete description of the AIs may be
*** 22715,22721 ****
  
       RM References: 3.09.02 (2/2)
  
!    * â€˜AI-0077 Limited withs and scope of declarations (0000-00-00)â€™
  
       This AI clarifies that a declaration does not include a context
       clause, and confirms that it is illegal to have a context in which
--- 22715,22721 ----
  
       RM References: 3.09.02 (2/2)
  
!    * 'AI-0077 Limited withs and scope of declarations (0000-00-00)'
  
       This AI clarifies that a declaration does not include a context
       clause, and confirms that it is illegal to have a context in which
*************** A complete description of the AIs may be
*** 22724,22730 ****
  
       RM References: 10.01.02 (12/2) 10.01.02 (21/2) 10.01.02 (22/2)
  
!    * â€˜AI-0078 Relax Unchecked_Conversion alignment rules (0000-00-00)â€™
  
       In Ada 2012, compilers are required to support unchecked conversion
       where the target alignment is a multiple of the source alignment.
--- 22724,22730 ----
  
       RM References: 10.01.02 (12/2) 10.01.02 (21/2) 10.01.02 (22/2)
  
!    * 'AI-0078 Relax Unchecked_Conversion alignment rules (0000-00-00)'
  
       In Ada 2012, compilers are required to support unchecked conversion
       where the target alignment is a multiple of the source alignment.
*************** A complete description of the AIs may be
*** 22734,22755 ****
  
       RM References: 13.09 (7)
  
!    * â€˜AI-0079 Allow other_format characters in source (2010-07-10)â€™
  
!      Wide characters in the unicode category â€˜other_formatâ€™ are now
       allowed in source programs between tokens, but not within a token
       such as an identifier.
  
       RM References: 2.01 (4/2) 2.02 (7)
  
!    * â€˜AI-0080 â€˜View ofâ€™ not needed if clear from context (0000-00-00)â€™
  
       This is an editorial change only, described as non-testable in the
       AI.
  
       RM References: 3.01 (7)
  
!    * â€˜AI-0087 Actual for formal nonlimited derived type (2010-07-15)â€™
  
       The actual for a formal nonlimited derived type cannot be limited.
       In particular, a formal derived type that extends a limited
--- 22734,22755 ----
  
       RM References: 13.09 (7)
  
!    * 'AI-0079 Allow other_format characters in source (2010-07-10)'
  
!      Wide characters in the unicode category 'other_format' are now
       allowed in source programs between tokens, but not within a token
       such as an identifier.
  
       RM References: 2.01 (4/2) 2.02 (7)
  
!    * 'AI-0080 â€˜View ofâ€™ not needed if clear from context (0000-00-00)'
  
       This is an editorial change only, described as non-testable in the
       AI.
  
       RM References: 3.01 (7)
  
!    * 'AI-0087 Actual for formal nonlimited derived type (2010-07-15)'
  
       The actual for a formal nonlimited derived type cannot be limited.
       In particular, a formal derived type that extends a limited
*************** A complete description of the AIs may be
*** 22758,22764 ****
  
       RM References: 7.05 (5/2) 12.05.01 (5.1/2)
  
!    * â€˜AI-0088 The value of exponentiation (0000-00-00)â€™
  
       This AI clarifies the equivalence rule given for the dynamic
       semantics of exponentiation: the value of the operation can be
--- 22758,22764 ----
  
       RM References: 7.05 (5/2) 12.05.01 (5.1/2)
  
!    * 'AI-0088 The value of exponentiation (0000-00-00)'
  
       This AI clarifies the equivalence rule given for the dynamic
       semantics of exponentiation: the value of the operation can be
*************** A complete description of the AIs may be
*** 22769,22777 ****
  
       RM References: 4.05.06 (11)
  
!    * â€˜AI-0091 Do not allow other_format in identifiers (0000-00-00)â€™
  
!      Wide characters in the unicode category â€˜other_formatâ€™ are not
       permitted within an identifier, since this can be a security
       problem.  The error message for this case has been improved to be
       more specific, but GNAT has never allowed such characters to appear
--- 22769,22777 ----
  
       RM References: 4.05.06 (11)
  
!    * 'AI-0091 Do not allow other_format in identifiers (0000-00-00)'
  
!      Wide characters in the unicode category 'other_format' are not
       permitted within an identifier, since this can be a security
       problem.  The error message for this case has been improved to be
       more specific, but GNAT has never allowed such characters to appear
*************** A complete description of the AIs may be
*** 22780,22793 ****
       RM References: 2.03 (3.1/2) 2.03 (4/2) 2.03 (5/2) 2.03 (5.1/2) 2.03
       (5.2/2) 2.03 (5.3/2) 2.09 (2/2)
  
!    * â€˜AI-0093 Additional rules use immutably limited (0000-00-00)â€™
  
       This is an editorial change only, to make more widespread use of
       the Ada 2012 â€˜immutably limitedâ€™.
  
       RM References: 3.03 (23.4/3)
  
!    * â€˜AI-0095 Address of intrinsic subprograms (0000-00-00)â€™
  
       The prefix of â€˜'Addressâ€™ cannot statically denote a subprogram with
       convention â€˜Intrinsicâ€™.  The use of the â€˜Addressâ€™ attribute raises
--- 22780,22793 ----
       RM References: 2.03 (3.1/2) 2.03 (4/2) 2.03 (5/2) 2.03 (5.1/2) 2.03
       (5.2/2) 2.03 (5.3/2) 2.09 (2/2)
  
!    * 'AI-0093 Additional rules use immutably limited (0000-00-00)'
  
       This is an editorial change only, to make more widespread use of
       the Ada 2012 â€˜immutably limitedâ€™.
  
       RM References: 3.03 (23.4/3)
  
!    * 'AI-0095 Address of intrinsic subprograms (0000-00-00)'
  
       The prefix of â€˜'Addressâ€™ cannot statically denote a subprogram with
       convention â€˜Intrinsicâ€™.  The use of the â€˜Addressâ€™ attribute raises
*************** A complete description of the AIs may be
*** 22796,22802 ****
  
       RM References: 13.03 (11/1)
  
!    * â€˜AI-0096 Deriving from formal private types (2010-07-20)â€™
  
       In general it is illegal for a type derived from a formal limited
       type to be nonlimited.  This AI makes an exception to this rule:
--- 22796,22802 ----
  
       RM References: 13.03 (11/1)
  
!    * 'AI-0096 Deriving from formal private types (2010-07-20)'
  
       In general it is illegal for a type derived from a formal limited
       type to be nonlimited.  This AI makes an exception to this rule:
*************** A complete description of the AIs may be
*** 22807,22813 ****
  
       RM References: 3.04 (5.1/2) 6.02 (7)
  
!    * â€˜AI-0097 Treatment of abstract null extension (2010-07-19)â€™
  
       The RM as written implied that in some cases it was possible to
       create an object of an abstract type, by having an abstract
--- 22807,22813 ----
  
       RM References: 3.04 (5.1/2) 6.02 (7)
  
!    * 'AI-0097 Treatment of abstract null extension (2010-07-19)'
  
       The RM as written implied that in some cases it was possible to
       create an object of an abstract type, by having an abstract
*************** A complete description of the AIs may be
*** 22817,22823 ****
  
       RM References: 3.09.03 (4/2)
  
!    * â€˜AI-0098 Anonymous subprogram access restrictions (0000-00-00)â€™
  
       An unintentional omission in the RM implied some inconsistent
       restrictions on the use of anonymous access to subprogram values.
--- 22817,22823 ----
  
       RM References: 3.09.03 (4/2)
  
!    * 'AI-0098 Anonymous subprogram access restrictions (0000-00-00)'
  
       An unintentional omission in the RM implied some inconsistent
       restrictions on the use of anonymous access to subprogram values.
*************** A complete description of the AIs may be
*** 22826,22832 ****
  
       RM References: 3.10.01 (6) 3.10.01 (9.2/2)
  
!    * â€˜AI-0099 Tag determines whether finalization needed (0000-00-00)â€™
  
       This AI clarifies that â€˜needs finalizationâ€™ is part of dynamic
       semantics, and therefore depends on the run-time characteristics of
--- 22826,22832 ----
  
       RM References: 3.10.01 (6) 3.10.01 (9.2/2)
  
!    * 'AI-0099 Tag determines whether finalization needed (0000-00-00)'
  
       This AI clarifies that â€˜needs finalizationâ€™ is part of dynamic
       semantics, and therefore depends on the run-time characteristics of
*************** A complete description of the AIs may be
*** 22835,22841 ****
  
       RM References: 7.06.01 (6) 7.06.01 (7) 7.06.01 (8) 7.06.01 (9/2)
  
!    * â€˜AI-0100 Placement of pragmas (2010-07-01)â€™
  
       This AI is an earlier version of AI-163.  It simplifies the rules
       for legal placement of pragmas.  In the case of lists that allow
--- 22835,22841 ----
  
       RM References: 7.06.01 (6) 7.06.01 (7) 7.06.01 (8) 7.06.01 (9/2)
  
!    * 'AI-0100 Placement of pragmas (2010-07-01)'
  
       This AI is an earlier version of AI-163.  It simplifies the rules
       for legal placement of pragmas.  In the case of lists that allow
*************** A complete description of the AIs may be
*** 22844,22850 ****
  
       RM References: 2.08 (7)
  
!    * â€˜AI-0102 Some implicit conversions are illegal (0000-00-00)â€™
  
       It is illegal to assign an anonymous access constant to an
       anonymous access variable.  The RM did not have a clear rule to
--- 22844,22850 ----
  
       RM References: 2.08 (7)
  
!    * 'AI-0102 Some implicit conversions are illegal (0000-00-00)'
  
       It is illegal to assign an anonymous access constant to an
       anonymous access variable.  The RM did not have a clear rule to
*************** A complete description of the AIs may be
*** 22853,22859 ****
  
       RM References: 3.07 (16) 3.07.01 (9) 6.04.01 (6) 8.06 (27/2)
  
!    * â€˜AI-0103 Static matching for extended return (2010-07-23)â€™
  
       If the return subtype of a function is an elementary type or a
       constrained type, the subtype indication in an extended return
--- 22853,22859 ----
  
       RM References: 3.07 (16) 3.07.01 (9) 6.04.01 (6) 8.06 (27/2)
  
!    * 'AI-0103 Static matching for extended return (2010-07-23)'
  
       If the return subtype of a function is an elementary type or a
       constrained type, the subtype indication in an extended return
*************** A complete description of the AIs may be
*** 22861,22875 ****
  
       RM References: 6.05 (5.2/2)
  
!    * â€˜AI-0104 Null exclusion and uninitialized allocator (2010-07-15)â€™
  
       The assignment â€˜Ptr := new not null Some_Ptr;â€™ will raise
       â€˜Constraint_Errorâ€™ because the default value of the allocated
!      object is â€˜nullâ€™.  This useless construct is illegal in Ada 2012.
  
       RM References: 4.08 (2)
  
!    * â€˜AI-0106 No representation pragmas on generic formals (0000-00-00)â€™
  
       The RM appeared to allow representation pragmas on generic formal
       parameters, but this was not intended, and GNAT has never permitted
--- 22861,22875 ----
  
       RM References: 6.05 (5.2/2)
  
!    * 'AI-0104 Null exclusion and uninitialized allocator (2010-07-15)'
  
       The assignment â€˜Ptr := new not null Some_Ptr;â€™ will raise
       â€˜Constraint_Errorâ€™ because the default value of the allocated
!      object is 'null'.  This useless construct is illegal in Ada 2012.
  
       RM References: 4.08 (2)
  
!    * 'AI-0106 No representation pragmas on generic formals (0000-00-00)'
  
       The RM appeared to allow representation pragmas on generic formal
       parameters, but this was not intended, and GNAT has never permitted
*************** A complete description of the AIs may be
*** 22877,22897 ****
  
       RM References: 13.01 (9.1/1)
  
!    * â€˜AI-0108 Limited incomplete view and discriminants (0000-00-00)â€™
  
       This AI confirms that an incomplete type from a limited view does
       not have discriminants.  This has always been the case in GNAT.
  
       RM References: 10.01.01 (12.3/2)
  
!    * â€˜AI-0109 Redundant check in Sâ€™Classâ€™Input (0000-00-00)â€™
  
       This AI is an editorial change only.  It removes the need for a tag
       check that can never fail.
  
       RM References: 13.13.02 (34/2)
  
!    * â€˜AI-0112 Detection of duplicate pragmas (2010-07-24)â€™
  
       This AI concerns giving names to various representation aspects,
       but the practical effect is simply to make the use of duplicate
--- 22877,22897 ----
  
       RM References: 13.01 (9.1/1)
  
!    * 'AI-0108 Limited incomplete view and discriminants (0000-00-00)'
  
       This AI confirms that an incomplete type from a limited view does
       not have discriminants.  This has always been the case in GNAT.
  
       RM References: 10.01.01 (12.3/2)
  
!    * 'AI-0109 Redundant check in Sâ€™Classâ€™Input (0000-00-00)'
  
       This AI is an editorial change only.  It removes the need for a tag
       check that can never fail.
  
       RM References: 13.13.02 (34/2)
  
!    * 'AI-0112 Detection of duplicate pragmas (2010-07-24)'
  
       This AI concerns giving names to various representation aspects,
       but the practical effect is simply to make the use of duplicate
*************** A complete description of the AIs may be
*** 22901,22907 ****
  
       RM References: 13.01 (8)
  
!    * â€˜AI-0114 Classification of letters (0000-00-00)â€™
  
       The code points 170 (â€˜FEMININE ORDINAL INDICATORâ€™), 181 (â€˜MICRO
       SIGNâ€™), and 186 (â€˜MASCULINE ORDINAL INDICATORâ€™) are technically
--- 22901,22907 ----
  
       RM References: 13.01 (8)
  
!    * 'AI-0114 Classification of letters (0000-00-00)'
  
       The code points 170 (â€˜FEMININE ORDINAL INDICATORâ€™), 181 (â€˜MICRO
       SIGNâ€™), and 186 (â€˜MASCULINE ORDINAL INDICATORâ€™) are technically
*************** A complete description of the AIs may be
*** 22912,22918 ****
  
       RM References: A.03.02 (59) A.04.06 (7)
  
!    * â€˜AI-0116 Alignment of class-wide objects (0000-00-00)â€™
  
       This AI requires that the alignment of a class-wide object be no
       greater than the alignment of any type in the class.  GNAT has
--- 22912,22918 ----
  
       RM References: A.03.02 (59) A.04.06 (7)
  
!    * 'AI-0116 Alignment of class-wide objects (0000-00-00)'
  
       This AI requires that the alignment of a class-wide object be no
       greater than the alignment of any type in the class.  GNAT has
*************** A complete description of the AIs may be
*** 22920,22926 ****
  
       RM References: 13.03 (29) 13.11 (16)
  
!    * â€˜AI-0118 The association of parameter associations (0000-00-00)â€™
  
       This AI clarifies the rules for named associations in subprogram
       calls and generic instantiations.  The rules have been in place
--- 22920,22926 ----
  
       RM References: 13.03 (29) 13.11 (16)
  
!    * 'AI-0118 The association of parameter associations (0000-00-00)'
  
       This AI clarifies the rules for named associations in subprogram
       calls and generic instantiations.  The rules have been in place
*************** A complete description of the AIs may be
*** 22928,22934 ****
  
       RM References: 6.04.01 (2) 12.03 (9)
  
!    * â€˜AI-0120 Constant instance of protected object (0000-00-00)â€™
  
       This is an RM editorial change only.  The section that lists
       objects that are constant failed to include the current instance of
--- 22928,22934 ----
  
       RM References: 6.04.01 (2) 12.03 (9)
  
!    * 'AI-0120 Constant instance of protected object (0000-00-00)'
  
       This is an RM editorial change only.  The section that lists
       objects that are constant failed to include the current instance of
*************** A complete description of the AIs may be
*** 22937,22943 ****
  
       RM References: 3.03 (21)
  
!    * â€˜AI-0122 Private with and children of generics (0000-00-00)â€™
  
       This AI clarifies the visibility of private children of generic
       units within instantiations of a parent.  GNAT has always handled
--- 22937,22943 ----
  
       RM References: 3.03 (21)
  
!    * 'AI-0122 Private with and children of generics (0000-00-00)'
  
       This AI clarifies the visibility of private children of generic
       units within instantiations of a parent.  GNAT has always handled
*************** A complete description of the AIs may be
*** 22945,22951 ****
  
       RM References: 10.01.02 (12/2)
  
!    * â€˜AI-0123 Composability of equality (2010-04-13)â€™
  
       Equality of untagged record composes, so that the predefined
       equality for a composite type that includes a component of some
--- 22945,22951 ----
  
       RM References: 10.01.02 (12/2)
  
!    * 'AI-0123 Composability of equality (2010-04-13)'
  
       Equality of untagged record composes, so that the predefined
       equality for a composite type that includes a component of some
*************** A complete description of the AIs may be
*** 22965,22971 ****
       RM References: 4.05.02 (9.7/2) 4.05.02 (14) 4.05.02 (15) 4.05.02
       (24) 8.05.04 (8)
  
!    * â€˜AI-0125 Nonoverridable operations of an ancestor (2010-09-28)â€™
  
       In Ada 2012, the declaration of a primitive operation of a type
       extension or private extension can also override an inherited
--- 22965,22971 ----
       RM References: 4.05.02 (9.7/2) 4.05.02 (14) 4.05.02 (15) 4.05.02
       (24) 8.05.04 (8)
  
!    * 'AI-0125 Nonoverridable operations of an ancestor (2010-09-28)'
  
       In Ada 2012, the declaration of a primitive operation of a type
       extension or private extension can also override an inherited
*************** A complete description of the AIs may be
*** 22973,22979 ****
  
       RM References: 7.03.01 (6) 8.03 (23) 8.03.01 (5/2) 8.03.01 (6/2)
  
!    * â€˜AI-0126 Dispatching with no declared operation (0000-00-00)â€™
  
       This AI clarifies dispatching rules, and simply confirms that
       dispatching executes the operation of the parent type when there is
--- 22973,22979 ----
  
       RM References: 7.03.01 (6) 8.03 (23) 8.03.01 (5/2) 8.03.01 (6/2)
  
!    * 'AI-0126 Dispatching with no declared operation (0000-00-00)'
  
       This AI clarifies dispatching rules, and simply confirms that
       dispatching executes the operation of the parent type when there is
*************** A complete description of the AIs may be
*** 22982,22988 ****
  
       RM References: 3.09.02 (20/2) 3.09.02 (20.1/2) 3.09.02 (20.2/2)
  
!    * â€˜AI-0127 Adding Locale Capabilities (2010-09-29)â€™
  
       This package provides an interface for identifying the current
       locale.
--- 22982,22988 ----
  
       RM References: 3.09.02 (20/2) 3.09.02 (20.1/2) 3.09.02 (20.2/2)
  
!    * 'AI-0127 Adding Locale Capabilities (2010-09-29)'
  
       This package provides an interface for identifying the current
       locale.
*************** A complete description of the AIs may be
*** 22990,22996 ****
       RM References: A.19 A.19.01 A.19.02 A.19.03 A.19.05 A.19.06 A.19.07
       A.19.08 A.19.09 A.19.10 A.19.11 A.19.12 A.19.13
  
!    * â€˜AI-0128 Inequality is a primitive operation (0000-00-00)â€™
  
       If an equality operator (â€œ=â€�) is declared for a type, then the
       implicitly declared inequality operator (â€œ/=â€�) is a primitive
--- 22990,22996 ----
       RM References: A.19 A.19.01 A.19.02 A.19.03 A.19.05 A.19.06 A.19.07
       A.19.08 A.19.09 A.19.10 A.19.11 A.19.12 A.19.13
  
!    * 'AI-0128 Inequality is a primitive operation (0000-00-00)'
  
       If an equality operator (â€œ=â€�) is declared for a type, then the
       implicitly declared inequality operator (â€œ/=â€�) is a primitive
*************** A complete description of the AIs may be
*** 23000,23006 ****
  
       RM References: 3.02.03 (6) 6.06 (6)
  
!    * â€˜AI-0129 Limited views and incomplete types (0000-00-00)â€™
  
       This AI clarifies the description of limited views: a limited view
       of a package includes only one view of a type that has an
--- 23000,23006 ----
  
       RM References: 3.02.03 (6) 6.06 (6)
  
!    * 'AI-0129 Limited views and incomplete types (0000-00-00)'
  
       This AI clarifies the description of limited views: a limited view
       of a package includes only one view of a type that has an
*************** A complete description of the AIs may be
*** 23011,23017 ****
  
       RM References: 10.01.01 (12.2/2) 10.01.01 (12.3/2)
  
!    * â€˜AI-0132 Placement of library unit pragmas (0000-00-00)â€™
  
       This AI fills a gap in the description of library unit pragmas.
       The pragma clearly must apply to a library unit, even if it does
--- 23011,23017 ----
  
       RM References: 10.01.01 (12.2/2) 10.01.01 (12.3/2)
  
!    * 'AI-0132 Placement of library unit pragmas (0000-00-00)'
  
       This AI fills a gap in the description of library unit pragmas.
       The pragma clearly must apply to a library unit, even if it does
*************** A complete description of the AIs may be
*** 23020,23026 ****
  
       RM References: 10.01.05 (7)
  
!    * â€˜AI-0134 Profiles must match for full conformance (0000-00-00)â€™
  
       For full conformance, the profiles of
       anonymous-access-to-subprogram parameters must match.  GNAT has
--- 23020,23026 ----
  
       RM References: 10.01.05 (7)
  
!    * 'AI-0134 Profiles must match for full conformance (0000-00-00)'
  
       For full conformance, the profiles of
       anonymous-access-to-subprogram parameters must match.  GNAT has
*************** A complete description of the AIs may be
*** 23028,23034 ****
  
       RM References: 6.03.01 (18)
  
!    * â€˜AI-0137 String encoding package (2010-03-25)â€™
  
       The packages â€˜Ada.Strings.UTF_Encodingâ€™, together with its child
       packages, â€˜Conversionsâ€™, â€˜Stringsâ€™, â€˜Wide_Stringsâ€™, and
--- 23028,23034 ----
  
       RM References: 6.03.01 (18)
  
!    * 'AI-0137 String encoding package (2010-03-25)'
  
       The packages â€˜Ada.Strings.UTF_Encodingâ€™, together with its child
       packages, â€˜Conversionsâ€™, â€˜Stringsâ€™, â€˜Wide_Stringsâ€™, and
*************** A complete description of the AIs may be
*** 23046,23052 ****
  
       RM References: A.04.11
  
!    * â€˜AI-0139-2 Syntactic sugar for iterators (2010-09-29)â€™
  
       The new syntax for iterating over arrays and containers is now
       implemented.  Iteration over containers is for now limited to
--- 23046,23052 ----
  
       RM References: A.04.11
  
!    * 'AI-0139-2 Syntactic sugar for iterators (2010-09-29)'
  
       The new syntax for iterating over arrays and containers is now
       implemented.  Iteration over containers is for now limited to
*************** A complete description of the AIs may be
*** 23055,23061 ****
  
       RM References: 5.05
  
!    * â€˜AI-0146 Type invariants (2009-09-21)â€™
  
       Type invariants may be specified for private types using the aspect
       notation.  Aspect â€˜Type_Invariantâ€™ may be specified for any private
--- 23055,23061 ----
  
       RM References: 5.05
  
!    * 'AI-0146 Type invariants (2009-09-21)'
  
       Type invariants may be specified for private types using the aspect
       notation.  Aspect â€˜Type_Invariantâ€™ may be specified for any private
*************** A complete description of the AIs may be
*** 23064,23077 ****
       invariant is a boolean expression that is tested for being true in
       the following situations: conversions to the private type, object
       declarations for the private type that are default initialized, and
!      [â€˜inâ€™] â€˜outâ€™ parameters and returned result on return from any
       primitive operation for the type that is visible to a client.  GNAT
       defines the synonyms â€˜Invariantâ€™ for â€˜Type_Invariantâ€™ and
       â€˜Invariant'Classâ€™ for â€˜Type_Invariant'Classâ€™.
  
       RM References: 13.03.03 (00)
  
!    * â€˜AI-0147 Conditional expressions (2009-03-29)â€™
  
       Conditional expressions are permitted.  The form of such an
       expression is:
--- 23064,23077 ----
       invariant is a boolean expression that is tested for being true in
       the following situations: conversions to the private type, object
       declarations for the private type that are default initialized, and
!      ['in'] 'out' parameters and returned result on return from any
       primitive operation for the type that is visible to a client.  GNAT
       defines the synonyms â€˜Invariantâ€™ for â€˜Type_Invariantâ€™ and
       â€˜Invariant'Classâ€™ for â€˜Type_Invariant'Classâ€™.
  
       RM References: 13.03.03 (00)
  
!    * 'AI-0147 Conditional expressions (2009-03-29)'
  
       Conditional expressions are permitted.  The form of such an
       expression is:
*************** A complete description of the AIs may be
*** 23080,23093 ****
  
       The parentheses can be omitted in contexts where parentheses are
       present anyway, such as subprogram arguments and pragma arguments.
!      If the â€˜elseâ€™ clause is omitted, â€˜elseâ€™ â€˜Trueâ€™ is assumed; thus
!      â€˜(if A then B)â€™ is a way to conveniently represent â€˜(A implies B)â€™
       in standard logic.
  
       RM References: 4.03.03 (15) 4.04 (1) 4.04 (7) 4.05.07 (0) 4.07 (2)
       4.07 (3) 4.09 (12) 4.09 (33) 5.03 (3) 5.03 (4) 7.05 (2.1/2)
  
!    * â€˜AI-0152 Restriction No_Anonymous_Allocators (2010-09-08)â€™
  
       Restriction â€˜No_Anonymous_Allocatorsâ€™ prevents the use of
       allocators where the type of the returned value is an anonymous
--- 23080,23093 ----
  
       The parentheses can be omitted in contexts where parentheses are
       present anyway, such as subprogram arguments and pragma arguments.
!      If the 'else' clause is omitted, 'else' 'True' is assumed; thus
!      â€˜(if A then B)â€™ is a way to conveniently represent '(A implies B)'
       in standard logic.
  
       RM References: 4.03.03 (15) 4.04 (1) 4.04 (7) 4.05.07 (0) 4.07 (2)
       4.07 (3) 4.09 (12) 4.09 (33) 5.03 (3) 5.03 (4) 7.05 (2.1/2)
  
!    * 'AI-0152 Restriction No_Anonymous_Allocators (2010-09-08)'
  
       Restriction â€˜No_Anonymous_Allocatorsâ€™ prevents the use of
       allocators where the type of the returned value is an anonymous
*************** A complete description of the AIs may be
*** 23095,23101 ****
  
       RM References: H.04 (8/1)
  
!    * â€˜AI-0157 Allocation/Deallocation from empty pool (2010-07-11)â€™
  
       Allocation and Deallocation from an empty storage pool (i.e.
       allocation or deallocation of a pointer for which a static storage
--- 23095,23101 ----
  
       RM References: H.04 (8/1)
  
!    * 'AI-0157 Allocation/Deallocation from empty pool (2010-07-11)'
  
       Allocation and Deallocation from an empty storage pool (i.e.
       allocation or deallocation of a pointer for which a static storage
*************** A complete description of the AIs may be
*** 23104,23110 ****
  
       RM References: 4.08 (5.3/2) 13.11.02 (4) 13.11.02 (17)
  
!    * â€˜AI-0158 Generalizing membership tests (2010-09-16)â€™
  
       This AI extends the syntax of membership tests to simplify complex
       conditions that can be expressed as membership in a subset of
--- 23104,23110 ----
  
       RM References: 4.08 (5.3/2) 13.11.02 (4) 13.11.02 (17)
  
!    * 'AI-0158 Generalizing membership tests (2010-09-16)'
  
       This AI extends the syntax of membership tests to simplify complex
       conditions that can be expressed as membership in a subset of
*************** A complete description of the AIs may be
*** 23114,23120 ****
       RM References: 3.08.01 (5) 4.04 (3) 4.05.02 (3) 4.05.02 (5) 4.05.02
       (27)
  
!    * â€˜AI-0161 Restriction No_Default_Stream_Attributes (2010-09-11)â€™
  
       A new restriction â€˜No_Default_Stream_Attributesâ€™ prevents the use
       of any of the default stream attributes for elementary types.  If
--- 23114,23120 ----
       RM References: 3.08.01 (5) 4.04 (3) 4.05.02 (3) 4.05.02 (5) 4.05.02
       (27)
  
!    * 'AI-0161 Restriction No_Default_Stream_Attributes (2010-09-11)'
  
       A new restriction â€˜No_Default_Stream_Attributesâ€™ prevents the use
       of any of the default stream attributes for elementary types.  If
*************** A complete description of the AIs may be
*** 23123,23129 ****
  
       RM References: 13.12.01 (4/2) 13.13.02 (40/2) 13.13.02 (52/2)
  
!    * â€˜AI-0162 Incomplete type completed by partial view (2010-09-15)â€™
  
       Incomplete types are made more useful by allowing them to be
       completed by private types and private extensions.
--- 23123,23129 ----
  
       RM References: 13.12.01 (4/2) 13.13.02 (40/2) 13.13.02 (52/2)
  
!    * 'AI-0162 Incomplete type completed by partial view (2010-09-15)'
  
       Incomplete types are made more useful by allowing them to be
       completed by private types and private extensions.
*************** A complete description of the AIs may be
*** 23131,23137 ****
       RM References: 3.10.01 (2.5/2) 3.10.01 (2.6/2) 3.10.01 (3) 3.10.01
       (4/2)
  
!    * â€˜AI-0163 Pragmas in place of null (2010-07-01)â€™
  
       A statement sequence may be composed entirely of pragmas.  It is no
       longer necessary to add a dummy â€˜nullâ€™ statement to make the
--- 23131,23137 ----
       RM References: 3.10.01 (2.5/2) 3.10.01 (2.6/2) 3.10.01 (3) 3.10.01
       (4/2)
  
!    * 'AI-0163 Pragmas in place of null (2010-07-01)'
  
       A statement sequence may be composed entirely of pragmas.  It is no
       longer necessary to add a dummy â€˜nullâ€™ statement to make the
*************** A complete description of the AIs may be
*** 23139,23145 ****
  
       RM References: 2.08 (7) 2.08 (16)
  
!    * â€˜AI-0171 Pragma CPU and Ravenscar Profile (2010-09-24)â€™
  
       A new package â€˜System.Multiprocessorsâ€™ is added, together with the
       definition of pragma â€˜CPUâ€™ for controlling task affinity.  A new no
--- 23139,23145 ----
  
       RM References: 2.08 (7) 2.08 (16)
  
!    * 'AI-0171 Pragma CPU and Ravenscar Profile (2010-09-24)'
  
       A new package â€˜System.Multiprocessorsâ€™ is added, together with the
       definition of pragma â€˜CPUâ€™ for controlling task affinity.  A new no
*************** A complete description of the AIs may be
*** 23149,23162 ****
  
       RM References: D.13.01 (4/2) D.16
  
!    * â€˜AI-0173 Testing if tags represent abstract types (2010-07-03)â€™
  
       The function â€˜Ada.Tags.Type_Is_Abstractâ€™ returns â€˜Trueâ€™ if invoked
       with the tag of an abstract type, and â€˜Falseâ€™ otherwise.
  
       RM References: 3.09 (7.4/2) 3.09 (12.4/2)
  
!    * â€˜AI-0176 Quantified expressions (2010-09-29)â€™
  
       Both universally and existentially quantified expressions are
       implemented.  They use the new syntax for iterators proposed in
--- 23149,23162 ----
  
       RM References: D.13.01 (4/2) D.16
  
!    * 'AI-0173 Testing if tags represent abstract types (2010-07-03)'
  
       The function â€˜Ada.Tags.Type_Is_Abstractâ€™ returns â€˜Trueâ€™ if invoked
       with the tag of an abstract type, and â€˜Falseâ€™ otherwise.
  
       RM References: 3.09 (7.4/2) 3.09 (12.4/2)
  
!    * 'AI-0176 Quantified expressions (2010-09-29)'
  
       Both universally and existentially quantified expressions are
       implemented.  They use the new syntax for iterators proposed in
*************** A complete description of the AIs may be
*** 23164,23170 ****
  
       RM References: 1.01.04 (12) 2.09 (2/2) 4.04 (7) 4.05.09 (0)
  
!    * â€˜AI-0177 Parameterized expressions (2010-07-10)â€™
  
       The new Ada 2012 notion of parameterized expressions is
       implemented.  The form is:
--- 23164,23170 ----
  
       RM References: 1.01.04 (12) 2.09 (2/2) 4.04 (7) 4.05.09 (0)
  
!    * 'AI-0177 Parameterized expressions (2010-07-10)'
  
       The new Ada 2012 notion of parameterized expressions is
       implemented.  The form is:
*************** A complete description of the AIs may be
*** 23177,23183 ****
  
       RM References: 13.11.01 (3/2)
  
!    * â€˜AI-0178 Incomplete views are limited (0000-00-00)â€™
  
       This AI clarifies the role of incomplete views and plugs an
       omission in the RM. GNAT always correctly restricted the use of
--- 23177,23183 ----
  
       RM References: 13.11.01 (3/2)
  
!    * 'AI-0178 Incomplete views are limited (0000-00-00)'
  
       This AI clarifies the role of incomplete views and plugs an
       omission in the RM. GNAT always correctly restricted the use of
*************** A complete description of the AIs may be
*** 23185,23191 ****
  
       RM References: 7.05 (3/2) 7.05 (6/2)
  
!    * â€˜AI-0179 Statement not required after label (2010-04-10)â€™
  
       It is not necessary to have a statement following a label, so a
       label can appear at the end of a statement sequence without the
--- 23185,23191 ----
  
       RM References: 7.05 (3/2) 7.05 (6/2)
  
!    * 'AI-0179 Statement not required after label (2010-04-10)'
  
       It is not necessary to have a statement following a label, so a
       label can appear at the end of a statement sequence without the
*************** A complete description of the AIs may be
*** 23195,23201 ****
  
       RM References: 5.01 (2)
  
!    * â€˜AI-0181 Soft hyphen is a non-graphic character (2010-07-23)â€™
  
       From Ada 2005 on, soft hyphen is considered a non-graphic
       character, which means that it has a special name (â€˜SOFT_HYPHENâ€™)
--- 23195,23201 ----
  
       RM References: 5.01 (2)
  
!    * 'AI-0181 Soft hyphen is a non-graphic character (2010-07-23)'
  
       From Ada 2005 on, soft hyphen is considered a non-graphic
       character, which means that it has a special name (â€˜SOFT_HYPHENâ€™)
*************** A complete description of the AIs may be
*** 23206,23212 ****
  
       RM References: 3.05.02 (2/2) A.01 (35/2) A.03.03 (21)
  
!    * â€˜AI-0182 Additional forms forâ€™ â€˜Character'Valueâ€™ â€˜(0000-00-00)â€™
  
       This AI allows â€˜Character'Valueâ€™ to accept the string â€˜'?'â€™ where
       â€˜?â€™ is any character including non-graphic control characters.
--- 23206,23212 ----
  
       RM References: 3.05.02 (2/2) A.01 (35/2) A.03.03 (21)
  
!    * 'AI-0182 Additional forms for' â€˜Character'Valueâ€™ '(0000-00-00)'
  
       This AI allows â€˜Character'Valueâ€™ to accept the string â€˜'?'â€™ where
       â€˜?â€™ is any character including non-graphic control characters.
*************** A complete description of the AIs may be
*** 23217,23223 ****
  
       RM References: 3.05 (56/2)
  
!    * â€˜AI-0183 Aspect specifications (2010-08-16)â€™
  
       Aspect specifications have been fully implemented except for pre
       and post- conditions, and type invariants, which have their own
--- 23217,23223 ----
  
       RM References: 3.05 (56/2)
  
!    * 'AI-0183 Aspect specifications (2010-08-16)'
  
       Aspect specifications have been fully implemented except for pre
       and post- conditions, and type invariants, which have their own
*************** Supported Aspect
*** 23354,23360 ****
       (2.1/2) 12.06 (2.2/2) 12.07 (2) 13.01 (0.1/2) 13.03 (5/1) 13.03.01
       (0)
  
!    * â€˜AI-0185 Ada.Wide_[Wide_]Characters.Handling (2010-07-06)â€™
  
       Two new packages â€˜Ada.Wide_[Wide_]Characters.Handlingâ€™ provide
       classification functions for â€˜Wide_Characterâ€™ and
--- 23354,23360 ----
       (2.1/2) 12.06 (2.2/2) 12.07 (2) 13.01 (0.1/2) 13.03 (5/1) 13.03.01
       (0)
  
!    * 'AI-0185 Ada.Wide_[Wide_]Characters.Handling (2010-07-06)'
  
       Two new packages â€˜Ada.Wide_[Wide_]Characters.Handlingâ€™ provide
       classification functions for â€˜Wide_Characterâ€™ and
*************** Supported Aspect
*** 23363,23369 ****
  
       RM References: A.03.05 (0) A.03.06 (0)
  
!    * â€˜AI-0188 Case expressions (2010-01-09)â€™
  
       Case expressions are permitted.  This allows use of constructs such
       as:
--- 23363,23369 ----
  
       RM References: A.03.05 (0) A.03.06 (0)
  
!    * 'AI-0188 Case expressions (2010-01-09)'
  
       Case expressions are permitted.  This allows use of constructs such
       as:
*************** Supported Aspect
*** 23372,23378 ****
  
       RM References: 4.05.07 (0) 4.05.08 (0) 4.09 (12) 4.09 (33)
  
!    * â€˜AI-0189 No_Allocators_After_Elaboration (2010-01-23)â€™
  
       This AI introduces a new restriction
       â€˜No_Allocators_After_Elaborationâ€™, which says that no dynamic
--- 23372,23378 ----
  
       RM References: 4.05.07 (0) 4.05.08 (0) 4.09 (12) 4.09 (33)
  
!    * 'AI-0189 No_Allocators_After_Elaboration (2010-01-23)'
  
       This AI introduces a new restriction
       â€˜No_Allocators_After_Elaborationâ€™, which says that no dynamic
*************** Supported Aspect
*** 23384,23400 ****
  
       RM References: D.07 (19.1/2) H.04 (23.3/2)
  
!    * â€˜AI-0190 pragma Default_Storage_Pool (2010-09-15)â€™
  
       This AI introduces a new pragma â€˜Default_Storage_Poolâ€™, which can
       be used to control storage pools globally.  In particular, you can
!      force every access type that is used for allocation (â€˜newâ€™) to have
       an explicit storage pool, or you can declare a pool globally to be
       used for all access types that lack an explicit one.
  
       RM References: D.07 (8)
  
!    * â€˜AI-0193 Alignment of allocators (2010-09-16)â€™
  
       This AI introduces a new attribute â€˜Max_Alignment_For_Allocationâ€™,
       analogous to â€˜Max_Size_In_Storage_Elementsâ€™, but for alignment
--- 23384,23400 ----
  
       RM References: D.07 (19.1/2) H.04 (23.3/2)
  
!    * 'AI-0190 pragma Default_Storage_Pool (2010-09-15)'
  
       This AI introduces a new pragma â€˜Default_Storage_Poolâ€™, which can
       be used to control storage pools globally.  In particular, you can
!      force every access type that is used for allocation ('new') to have
       an explicit storage pool, or you can declare a pool globally to be
       used for all access types that lack an explicit one.
  
       RM References: D.07 (8)
  
!    * 'AI-0193 Alignment of allocators (2010-09-16)'
  
       This AI introduces a new attribute â€˜Max_Alignment_For_Allocationâ€™,
       analogous to â€˜Max_Size_In_Storage_Elementsâ€™, but for alignment
*************** Supported Aspect
*** 23403,23409 ****
       RM References: 13.11 (16) 13.11 (21) 13.11.01 (0) 13.11.01 (1)
       13.11.01 (2) 13.11.01 (3)
  
!    * â€˜AI-0194 Value of Stream_Size attribute (0000-00-00)â€™
  
       The â€˜Stream_Sizeâ€™ attribute returns the default number of bits in
       the stream representation of the given type.  This value is not
--- 23403,23409 ----
       RM References: 13.11 (16) 13.11 (21) 13.11.01 (0) 13.11.01 (1)
       13.11.01 (2) 13.11.01 (3)
  
!    * 'AI-0194 Value of Stream_Size attribute (0000-00-00)'
  
       The â€˜Stream_Sizeâ€™ attribute returns the default number of bits in
       the stream representation of the given type.  This value is not
*************** Supported Aspect
*** 23412,23419 ****
  
       RM References: 13.13.02 (1.2/2)
  
!    * â€˜AI-0195 Invalid value handling is implementation defined
!      (2010-07-03)â€™
  
       The handling of invalid values is now designated to be
       implementation defined.  This is a documentation change only,
--- 23412,23419 ----
  
       RM References: 13.13.02 (1.2/2)
  
!    * 'AI-0195 Invalid value handling is implementation defined
!      (2010-07-03)'
  
       The handling of invalid values is now designated to be
       implementation defined.  This is a documentation change only,
*************** Supported Aspect
*** 23427,23433 ****
  
       RM References: 13.09.01 (10)
  
!    * â€˜AI-0196 Null exclusion tests for out parameters (0000-00-00)â€™
  
       Null exclusion checks are not made for â€˜outâ€™ parameters when
       evaluating the actual parameters.  GNAT has never generated these
--- 23427,23433 ----
  
       RM References: 13.09.01 (10)
  
!    * 'AI-0196 Null exclusion tests for out parameters (0000-00-00)'
  
       Null exclusion checks are not made for â€˜outâ€™ parameters when
       evaluating the actual parameters.  GNAT has never generated these
*************** Supported Aspect
*** 23435,23441 ****
  
       RM References: 6.04.01 (13)
  
!    * â€˜AI-0198 Inheriting abstract operators (0000-00-00)â€™
  
       This AI resolves a conflict between two rules involving inherited
       abstract operations and predefined operators.  If a derived numeric
--- 23435,23441 ----
  
       RM References: 6.04.01 (13)
  
!    * 'AI-0198 Inheriting abstract operators (0000-00-00)'
  
       This AI resolves a conflict between two rules involving inherited
       abstract operations and predefined operators.  If a derived numeric
*************** Supported Aspect
*** 23444,23450 ****
  
       RM References: 3.09.03 (4/3)
  
!    * â€˜AI-0199 Aggregate with anonymous access components (2010-07-14)â€™
  
       A choice list in a record aggregate can include several components
       of (distinct) anonymous access types as long as they have matching
--- 23444,23450 ----
  
       RM References: 3.09.03 (4/3)
  
!    * 'AI-0199 Aggregate with anonymous access components (2010-07-14)'
  
       A choice list in a record aggregate can include several components
       of (distinct) anonymous access types as long as they have matching
*************** Supported Aspect
*** 23452,23458 ****
  
       RM References: 4.03.01 (16)
  
!    * â€˜AI-0200 Mismatches in formal package declarations (0000-00-00)â€™
  
       This AI plugs a gap in the RM which appeared to allow some
       obviously intended illegal instantiations.  GNAT has never allowed
--- 23452,23458 ----
  
       RM References: 4.03.01 (16)
  
!    * 'AI-0200 Mismatches in formal package declarations (0000-00-00)'
  
       This AI plugs a gap in the RM which appeared to allow some
       obviously intended illegal instantiations.  GNAT has never allowed
*************** Supported Aspect
*** 23460,23466 ****
  
       RM References: 12.07 (16)
  
!    * â€˜AI-0201 Independence of atomic object components (2010-07-22)â€™
  
       If an Atomic object has a pragma â€˜Packâ€™ or a â€˜Component_Sizeâ€™
       attribute, then individual components may not be addressable by
--- 23460,23466 ----
  
       RM References: 12.07 (16)
  
!    * 'AI-0201 Independence of atomic object components (2010-07-22)'
  
       If an Atomic object has a pragma â€˜Packâ€™ or a â€˜Component_Sizeâ€™
       attribute, then individual components may not be addressable by
*************** Supported Aspect
*** 23474,23501 ****
  
       RM References: 9.10 (1/3) C.06 (22/2) C.06 (23/2)
  
!    * â€˜AI-0203 Extended return cannot be abstract (0000-00-00)â€™
  
       A return_subtype_indication cannot denote an abstract subtype.
       GNAT has never permitted such usage.
  
       RM References: 3.09.03 (8/3)
  
!    * â€˜AI-0205 Extended return declares visible name (0000-00-00)â€™
  
       This AI corrects a simple omission in the RM. Return objects have
       always been visible within an extended return statement.
  
       RM References: 8.03 (17)
  
!    * â€˜AI-0206 Remote types packages and preelaborate (2010-07-24)â€™
  
       Remote types packages are now allowed to depend on preelaborated
       packages.  This was formerly considered illegal.
  
       RM References: E.02.02 (6)
  
!    * â€˜AI-0207 Mode conformance and access constant (0000-00-00)â€™
  
       This AI confirms that access_to_constant indication must match for
       mode conformance.  This was implemented in GNAT when the qualifier
--- 23474,23501 ----
  
       RM References: 9.10 (1/3) C.06 (22/2) C.06 (23/2)
  
!    * 'AI-0203 Extended return cannot be abstract (0000-00-00)'
  
       A return_subtype_indication cannot denote an abstract subtype.
       GNAT has never permitted such usage.
  
       RM References: 3.09.03 (8/3)
  
!    * 'AI-0205 Extended return declares visible name (0000-00-00)'
  
       This AI corrects a simple omission in the RM. Return objects have
       always been visible within an extended return statement.
  
       RM References: 8.03 (17)
  
!    * 'AI-0206 Remote types packages and preelaborate (2010-07-24)'
  
       Remote types packages are now allowed to depend on preelaborated
       packages.  This was formerly considered illegal.
  
       RM References: E.02.02 (6)
  
!    * 'AI-0207 Mode conformance and access constant (0000-00-00)'
  
       This AI confirms that access_to_constant indication must match for
       mode conformance.  This was implemented in GNAT when the qualifier
*************** Supported Aspect
*** 23503,23509 ****
  
       RM References: 6.03.01 (16/2)
  
!    * â€˜AI-0208 Characteristics of incomplete views (0000-00-00)â€™
  
       The wording in the Ada 2005 RM concerning characteristics of
       incomplete views was incorrect and implied that some programs
--- 23503,23509 ----
  
       RM References: 6.03.01 (16/2)
  
!    * 'AI-0208 Characteristics of incomplete views (0000-00-00)'
  
       The wording in the Ada 2005 RM concerning characteristics of
       incomplete views was incorrect and implied that some programs
*************** Supported Aspect
*** 23513,23519 ****
  
       RM References: 3.10.01 (2.4/2) 3.10.01 (2.6/2)
  
!    * â€˜AI-0210 Correct Timing_Events metric (0000-00-00)â€™
  
       This is a documentation only issue regarding wording of metric
       requirements, that does not affect the implementation of the
--- 23513,23519 ----
  
       RM References: 3.10.01 (2.4/2) 3.10.01 (2.6/2)
  
!    * 'AI-0210 Correct Timing_Events metric (0000-00-00)'
  
       This is a documentation only issue regarding wording of metric
       requirements, that does not affect the implementation of the
*************** Supported Aspect
*** 23521,23534 ****
  
       RM References: D.15 (24/2)
  
!    * â€˜AI-0211 No_Relative_Delays forbids Set_Handler use (2010-07-09)â€™
  
       The restriction â€˜No_Relative_Delaysâ€™ forbids any calls to the
       subprogram â€˜Ada.Real_Time.Timing_Events.Set_Handlerâ€™.
  
       RM References: D.07 (5) D.07 (10/2) D.07 (10.4/2) D.07 (10.7/2)
  
!    * â€˜AI-0214 Defaulted discriminants for limited tagged (2010-10-01)â€™
  
       Ada 2012 relaxes the restriction that forbids discriminants of
       tagged types to have default expressions by allowing them when the
--- 23521,23534 ----
  
       RM References: D.15 (24/2)
  
!    * 'AI-0211 No_Relative_Delays forbids Set_Handler use (2010-07-09)'
  
       The restriction â€˜No_Relative_Delaysâ€™ forbids any calls to the
       subprogram â€˜Ada.Real_Time.Timing_Events.Set_Handlerâ€™.
  
       RM References: D.07 (5) D.07 (10/2) D.07 (10.4/2) D.07 (10.7/2)
  
!    * 'AI-0214 Defaulted discriminants for limited tagged (2010-10-01)'
  
       Ada 2012 relaxes the restriction that forbids discriminants of
       tagged types to have default expressions by allowing them when the
*************** Supported Aspect
*** 23537,23543 ****
  
       RM References: 3.07 (9.1/2) 3.07.02 (3)
  
!    * â€˜AI-0216 No_Task_Hierarchy forbids local tasks (0000-00-00)â€™
  
       It is clearly the intention that â€˜No_Task_Hierarchyâ€™ is intended to
       forbid tasks declared locally within subprograms, or functions
--- 23537,23543 ----
  
       RM References: 3.07 (9.1/2) 3.07.02 (3)
  
!    * 'AI-0216 No_Task_Hierarchy forbids local tasks (0000-00-00)'
  
       It is clearly the intention that â€˜No_Task_Hierarchyâ€™ is intended to
       forbid tasks declared locally within subprograms, or functions
*************** Supported Aspect
*** 23548,23554 ****
  
       RM References: D.07 (3/3)
  
!    * â€˜AI-0219 Pure permissions and limited parameters (2010-05-25)â€™
  
       This AI refines the rules for the cases with limited parameters
       which do not allow the implementations to omit â€˜redundantâ€™.  GNAT
--- 23548,23554 ----
  
       RM References: D.07 (3/3)
  
!    * 'AI-0219 Pure permissions and limited parameters (2010-05-25)'
  
       This AI refines the rules for the cases with limited parameters
       which do not allow the implementations to omit â€˜redundantâ€™.  GNAT
*************** Supported Aspect
*** 23557,23563 ****
  
       RM References: 10.02.01 (18/2)
  
!    * â€˜AI-0220 Needed components for aggregates (0000-00-00)â€™
  
       This AI addresses a wording problem in the RM that appears to
       permit some complex cases of aggregates with nonstatic
--- 23557,23563 ----
  
       RM References: 10.02.01 (18/2)
  
!    * 'AI-0220 Needed components for aggregates (0000-00-00)'
  
       This AI addresses a wording problem in the RM that appears to
       permit some complex cases of aggregates with nonstatic
*************** symbols from higher-level scopes works s
*** 23675,23681 ****
  
  If the enclosing construct allows an exception handler (such as an
  accept statement, begin-except-end block or a subprogram body),
! declarations that appear at the place of a statement are â€˜notâ€™ visible
  within the handler.  Only declarations that precede the beginning of the
  construct with an exception handler would be visible in this handler.
  
--- 23675,23681 ----
  
  If the enclosing construct allows an exception handler (such as an
  accept statement, begin-except-end block or a subprogram body),
! declarations that appear at the place of a statement are 'not' visible
  within the handler.  Only declarations that precede the beginning of the
  construct with an exception handler would be visible in this handler.
  
*************** File: gnat_rm.info,  Node: Legality Rule
*** 23790,23796 ****
  .......................
  
    1. For an â€˜array_delta_aggregateâ€™, the discrete_choice shall not be
!      â€˜othersâ€™.
  
    2. For an â€˜array_delta_aggregateâ€™, the dimensionality of the type of
       the â€˜delta_aggregateâ€™ shall be 1.
--- 23790,23796 ----
  .......................
  
    1. For an â€˜array_delta_aggregateâ€™, the discrete_choice shall not be
!      'others'.
  
    2. For an â€˜array_delta_aggregateâ€™, the dimensionality of the type of
       the â€˜delta_aggregateâ€™ shall be 1.
*************** setting.  Here is the archetypal example
*** 25147,25155 ****
       procedure Finalize   (Obj : in out T);
       procedure Initialize (Obj : in out T);
  
! The three procedures have the same profile, with a single â€˜in outâ€™
! parameter, and also have the same dynamic semantics as for controlled
! types:
  
          - â€˜Initializeâ€™ is called when an object of type â€˜Tâ€™ is declared
            without initialization expression.
--- 25147,25156 ----
       procedure Finalize   (Obj : in out T);
       procedure Initialize (Obj : in out T);
  
! The three procedures must be primitive operations of â€˜Tâ€™ and have a
! single â€˜in outâ€™ parameter.  They need not be all specified by the
! aspect.  If they are specified, they have the same dynamic semantics as
! for controlled types:
  
          - â€˜Initializeâ€™ is called when an object of type â€˜Tâ€™ is declared
            without initialization expression.
*************** semantics of controlled types:
*** 25174,25180 ****
       per-object header data is needed for heap-allocated objects.
  
       Heap-allocated objects allocated through a nested access type will
!      therefore â€˜notâ€™ be deallocated either.  The result is simply that
       memory will be leaked in this case.
  
     * The â€˜Adjustâ€™ and â€˜Finalizeâ€™ procedures are automatically considered
--- 25175,25181 ----
       per-object header data is needed for heap-allocated objects.
  
       Heap-allocated objects allocated through a nested access type will
!      therefore 'not' be deallocated either.  The result is simply that
       memory will be leaked in this case.
  
     * The â€˜Adjustâ€™ and â€˜Finalizeâ€™ procedures are automatically considered
*************** File: gnat_rm.info,  Node: Legal Ada 83
*** 26156,26162 ****
  Some legal Ada 83 programs are illegal (i.e., they will fail to compile)
  in Ada 95 and later versions of the standard:
  
!    * â€˜Character literalsâ€™
  
       Some uses of character literals are ambiguous.  Since Ada 95 has
       introduced â€˜Wide_Characterâ€™ as a new predefined character type,
--- 26157,26163 ----
  Some legal Ada 83 programs are illegal (i.e., they will fail to compile)
  in Ada 95 and later versions of the standard:
  
!    * 'Character literals'
  
       Some uses of character literals are ambiguous.  Since Ada 95 has
       introduced â€˜Wide_Characterâ€™ as a new predefined character type,
*************** in Ada 95 and later versions of the stan
*** 26171,26184 ****
  
            for Char in Character range 'A' .. 'Z' loop ... end loop;
  
!    * â€˜New reserved wordsâ€™
  
       The identifiers â€˜abstractâ€™, â€˜aliasedâ€™, â€˜protectedâ€™, â€˜requeueâ€™,
       â€˜taggedâ€™, and â€˜untilâ€™ are reserved in Ada 95.  Existing Ada 83 code
       using any of these identifiers must be edited to use some
       alternative name.
  
!    * â€˜Freezing rulesâ€™
  
       The rules in Ada 95 are slightly different with regard to the point
       at which entities are frozen, and representation pragmas and
--- 26172,26185 ----
  
            for Char in Character range 'A' .. 'Z' loop ... end loop;
  
!    * 'New reserved words'
  
       The identifiers â€˜abstractâ€™, â€˜aliasedâ€™, â€˜protectedâ€™, â€˜requeueâ€™,
       â€˜taggedâ€™, and â€˜untilâ€™ are reserved in Ada 95.  Existing Ada 83 code
       using any of these identifiers must be edited to use some
       alternative name.
  
!    * 'Freezing rules'
  
       The rules in Ada 95 are slightly different with regard to the point
       at which entities are frozen, and representation pragmas and
*************** in Ada 95 and later versions of the stan
*** 26192,26198 ****
       to a subprogram body.  If necessary, a separate subprogram
       declaration must be introduced to which the pragma can be applied.
  
!    * â€˜Optional bodies for library packagesâ€™
  
       In Ada 83, a package that did not require a package body was
       nevertheless allowed to have one.  This lead to certain surprises
--- 26193,26199 ----
       to a subprogram body.  If necessary, a separate subprogram
       declaration must be introduced to which the pragma can be applied.
  
!    * 'Optional bodies for library packages'
  
       In Ada 83, a package that did not require a package body was
       nevertheless allowed to have one.  This lead to certain surprises
*************** in Ada 95 and later versions of the stan
*** 26210,26216 ****
       spec, since one effect of this pragma is to require the presence of
       a package body.
  
!    * â€˜Numeric_Error is the same exception as Constraint_Errorâ€™
  
       In Ada 95, the exception â€˜Numeric_Errorâ€™ is a renaming of
       â€˜Constraint_Errorâ€™.  This means that it is illegal to have separate
--- 26211,26217 ----
       spec, since one effect of this pragma is to require the presence of
       a package body.
  
!    * 'Numeric_Error is the same exception as Constraint_Error'
  
       In Ada 95, the exception â€˜Numeric_Errorâ€™ is a renaming of
       â€˜Constraint_Errorâ€™.  This means that it is illegal to have separate
*************** in Ada 95 and later versions of the stan
*** 26219,26225 ****
       83, a compiler was free to raise â€˜Constraint_Errorâ€™ in place of
       â€˜Numeric_Errorâ€™ in all cases).
  
!    * â€˜Indefinite subtypes in genericsâ€™
  
       In Ada 83, it was permissible to pass an indefinite type (e.g,
       â€˜Stringâ€™) as the actual for a generic formal private type, but then
--- 26220,26226 ----
       83, a compiler was free to raise â€˜Constraint_Errorâ€™ in place of
       â€˜Numeric_Errorâ€™ in all cases).
  
!    * 'Indefinite subtypes in generics'
  
       In Ada 83, it was permissible to pass an indefinite type (e.g,
       â€˜Stringâ€™) as the actual for a generic formal private type, but then
*************** File: gnat_rm.info,  Node: More determin
*** 26245,26251 ****
  20.2.2 More deterministic semantics
  -----------------------------------
  
!    * â€˜Conversionsâ€™
  
       Conversions from real types to integer types round away from 0.  In
       Ada 83 the conversion Integer(2.5) could deliver either 2 or 3 as
--- 26246,26252 ----
  20.2.2 More deterministic semantics
  -----------------------------------
  
!    * 'Conversions'
  
       Conversions from real types to integer types round away from 0.  In
       Ada 83 the conversion Integer(2.5) could deliver either 2 or 3 as
*************** File: gnat_rm.info,  Node: More determin
*** 26257,26263 ****
       that this issue is no worse than already existed in Ada 83 when
       porting code from one vendor to another.
  
!    * â€˜Taskingâ€™
  
       The Real-Time Annex introduces a set of policies that define the
       behavior of features that were implementation dependent in Ada 83,
--- 26258,26264 ----
       that this issue is no worse than already existed in Ada 83 when
       porting code from one vendor to another.
  
!    * 'Tasking'
  
       The Real-Time Annex introduces a set of policies that define the
       behavior of features that were implementation dependent in Ada 83,
*************** was not possible in Ada 83.  Fortunately
*** 26275,26281 ****
  one situation that you should be alert to is the change in the
  predefined type â€˜Characterâ€™ from 7-bit ASCII to 8-bit Latin-1.
  
!    * â€˜Range of type â€˜â€˜Characterâ€˜â€˜â€™
  
       The range of â€˜Standard.Characterâ€™ is now the full 256 characters of
       Latin-1, whereas in most Ada 83 implementations it was restricted
--- 26276,26282 ----
  one situation that you should be alert to is the change in the
  predefined type â€˜Characterâ€™ from 7-bit ASCII to 8-bit Latin-1.
  
!    * 'Range of type ''Character'''
  
       The range of â€˜Standard.Characterâ€™ is now the full 256 characters of
       Latin-1, whereas in most Ada 83 implementations it was restricted
*************** File: gnat_rm.info,  Node: Other languag
*** 26300,26306 ****
  20.2.4 Other language compatibility issues
  ------------------------------------------
  
!    * â€˜-gnat83â€™ switch
  
       All implementations of GNAT provide a switch that causes GNAT to
       operate in Ada 83 mode.  In this mode, some but not all
--- 26301,26307 ----
  20.2.4 Other language compatibility issues
  ------------------------------------------
  
!    * '-gnat83' switch
  
       All implementations of GNAT provide a switch that causes GNAT to
       operate in Ada 83 mode.  In this mode, some but not all
*************** there are a number of incompatibilities.
*** 26334,26346 ****
  for a complete description please see the â€˜Annotated Ada 2005 Reference
  Manualâ€™, or section 9.1.1 in â€˜Rationale for Ada 2005â€™.
  
!    * â€˜New reserved words.â€™
  
       The words â€˜interfaceâ€™, â€˜overridingâ€™ and â€˜synchronizedâ€™ are reserved
       in Ada 2005.  A pre-Ada 2005 program that uses any of these as an
       identifier will be illegal.
  
!    * â€˜New declarations in predefined packages.â€™
  
       A number of packages in the predefined environment contain new
       declarations: â€˜Ada.Exceptionsâ€™, â€˜Ada.Real_Timeâ€™, â€˜Ada.Stringsâ€™,
--- 26335,26347 ----
  for a complete description please see the â€˜Annotated Ada 2005 Reference
  Manualâ€™, or section 9.1.1 in â€˜Rationale for Ada 2005â€™.
  
!    * 'New reserved words.'
  
       The words â€˜interfaceâ€™, â€˜overridingâ€™ and â€˜synchronizedâ€™ are reserved
       in Ada 2005.  A pre-Ada 2005 program that uses any of these as an
       identifier will be illegal.
  
!    * 'New declarations in predefined packages.'
  
       A number of packages in the predefined environment contain new
       declarations: â€˜Ada.Exceptionsâ€™, â€˜Ada.Real_Timeâ€™, â€˜Ada.Stringsâ€™,
*************** Manualâ€™, or section 9.1.1 in â€˜Ration
*** 26351,26375 ****
       program does a â€˜withâ€™ and â€˜useâ€™ of any of these packages, the new
       declarations may cause name clashes.
  
!    * â€˜Access parameters.â€™
  
       A nondispatching subprogram with an access parameter cannot be
       renamed as a dispatching operation.  This was permitted in Ada 95.
  
!    * â€˜Access types, discriminants, and constraints.â€™
  
       Rule changes in this area have led to some incompatibilities; for
       example, constrained subtypes of some access types are not
       permitted in Ada 2005.
  
!    * â€˜Aggregates for limited types.â€™
  
       The allowance of aggregates for limited types in Ada 2005 raises
       the possibility of ambiguities in legal Ada 95 programs, since
       additional types now need to be considered in expression
       resolution.
  
!    * â€˜Fixed-point multiplication and division.â€™
  
       Certain expressions involving â€˜*â€™ or â€˜/â€™ for a fixed-point type,
       which were legal in Ada 95 and invoked the predefined versions of
--- 26352,26376 ----
       program does a â€˜withâ€™ and â€˜useâ€™ of any of these packages, the new
       declarations may cause name clashes.
  
!    * 'Access parameters.'
  
       A nondispatching subprogram with an access parameter cannot be
       renamed as a dispatching operation.  This was permitted in Ada 95.
  
!    * 'Access types, discriminants, and constraints.'
  
       Rule changes in this area have led to some incompatibilities; for
       example, constrained subtypes of some access types are not
       permitted in Ada 2005.
  
!    * 'Aggregates for limited types.'
  
       The allowance of aggregates for limited types in Ada 2005 raises
       the possibility of ambiguities in legal Ada 95 programs, since
       additional types now need to be considered in expression
       resolution.
  
!    * 'Fixed-point multiplication and division.'
  
       Certain expressions involving â€˜*â€™ or â€˜/â€™ for a fixed-point type,
       which were legal in Ada 95 and invoked the predefined versions of
*************** Manualâ€™, or section 9.1.1 in â€˜Ration
*** 26377,26383 ****
       either by applying a type conversion to the expression, or by
       explicitly invoking the operation from package â€˜Standardâ€™.
  
!    * â€˜Return-by-reference types.â€™
  
       The Ada 95 return-by-reference mechanism has been removed.
       Instead, the user can declare a function returning a value from an
--- 26378,26384 ----
       either by applying a type conversion to the expression, or by
       explicitly invoking the operation from package â€˜Standardâ€™.
  
!    * 'Return-by-reference types.'
  
       The Ada 95 return-by-reference mechanism has been removed.
       Instead, the user can declare a function returning a value from an
*************** will not encounter access before elabora
*** 26480,26486 ****
  inserting â€˜Elaborateâ€™ or â€˜Elaborate_Allâ€™ pragmas where needed.  However,
  this can lead to the creation of elaboration circularities and a
  resulting rejection of the program by gnatbind.  This issue is
! thoroughly described in the â€˜Elaboration Order Handling in GNATâ€™
  appendix in the â€˜GNAT Userâ€™s Guideâ€™.  In brief, there are several ways
  to deal with this situation:
  
--- 26481,26487 ----
  inserting â€˜Elaborateâ€™ or â€˜Elaborate_Allâ€™ pragmas where needed.  However,
  this can lead to the creation of elaboration circularities and a
  resulting rejection of the program by gnatbind.  This issue is
! thoroughly described in the 'Elaboration Order Handling in GNAT'
  appendix in the â€˜GNAT Userâ€™s Guideâ€™.  In brief, there are several ways
  to deal with this situation:
  
*************** to deal with this situation:
*** 26490,26496 ****
     * Constrain the elaboration order by including explicit
       â€˜Elaborate_Bodyâ€™ or â€˜Elaborateâ€™ pragmas, and then inhibit the
       generation of implicit â€˜Elaborate_Allâ€™ pragmas either globally (as
!      an effect of the â€˜-gnatEâ€™ switch) or locally (by selectively
       suppressing elaboration checks via pragma
       â€˜Suppress(Elaboration_Check)â€™ when it is safe to do so).
  
--- 26491,26497 ----
     * Constrain the elaboration order by including explicit
       â€˜Elaborate_Bodyâ€™ or â€˜Elaborateâ€™ pragmas, and then inhibit the
       generation of implicit â€˜Elaborate_Allâ€™ pragmas either globally (as
!      an effect of the '-gnatE' switch) or locally (by selectively
       suppressing elaboration checks via pragma
       â€˜Suppress(Elaboration_Check)â€™ when it is safe to do so).
  
*************** not affect porting code to GNAT. (As of
*** 26527,26533 ****
  compiler available for Ada 2005; the following issues may or may not
  arise for Ada 2005 programs when other compilers appear.)
  
!    * â€˜Ada 83 Pragmas and Attributesâ€™
  
       Ada 95 compilers are allowed, but not required, to implement the
       missing Ada 83 pragmas and attributes that are no longer defined in
--- 26528,26534 ----
  compiler available for Ada 2005; the following issues may or may not
  arise for Ada 2005 programs when other compilers appear.)
  
!    * 'Ada 83 Pragmas and Attributes'
  
       Ada 95 compilers are allowed, but not required, to implement the
       missing Ada 83 pragmas and attributes that are no longer defined in
*************** arise for Ada 2005 programs when other c
*** 26535,26548 ****
       eliminating this as a compatibility concern, but some other Ada 95
       compilers reject these pragmas and attributes.
  
!    * â€˜Specialized Needs Annexesâ€™
  
       GNAT implements the full set of special needs annexes.  At the
       current time, it is the only Ada 95 compiler to do so.  This means
       that programs making use of these features may not be portable to
       other Ada 95 compilation systems.
  
!    * â€˜Representation Clausesâ€™
  
       Some other Ada 95 compilers implement only the minimal set of
       representation clauses required by the Ada 95 reference manual.
--- 26536,26549 ----
       eliminating this as a compatibility concern, but some other Ada 95
       compilers reject these pragmas and attributes.
  
!    * 'Specialized Needs Annexes'
  
       GNAT implements the full set of special needs annexes.  At the
       current time, it is the only Ada 95 compiler to do so.  This means
       that programs making use of these features may not be portable to
       other Ada 95 compilation systems.
  
!    * 'Representation Clauses'
  
       Some other Ada 95 compilers implement only the minimal set of
       representation clauses required by the Ada 95 reference manual.
*************** implementation dependent characteristics
*** 26573,26579 ****
  following is a list of the cases most likely to arise in existing Ada 83
  code.
  
!    * â€˜Implicit Packingâ€™
  
       Some Ada 83 compilers allowed a Size specification to cause
       implicit packing of an array or record.  This could cause expensive
--- 26574,26580 ----
  following is a list of the cases most likely to arise in existing Ada 83
  code.
  
!    * 'Implicit Packing'
  
       Some Ada 83 compilers allowed a Size specification to cause
       implicit packing of an array or record.  This could cause expensive
*************** code.
*** 26588,26594 ****
       provide the explicit pragma â€˜Packâ€™, or for more fine tuned control,
       provide a Component_Size clause.
  
!    * â€˜Meaning of Size Attributeâ€™
  
       The Size attribute in Ada 95 (and Ada 2005) for discrete types is
       defined as the minimal number of bits required to hold values of
--- 26589,26595 ----
       provide the explicit pragma â€˜Packâ€™, or for more fine tuned control,
       provide a Component_Size clause.
  
!    * 'Meaning of Size Attribute'
  
       The Size attribute in Ada 95 (and Ada 2005) for discrete types is
       defined as the minimal number of bits required to hold values of
*************** code.
*** 26601,26607 ****
       can provide a useful way of duplicating the behavior of some Ada 83
       compiler systems.
  
!    * â€˜Size of Access Typesâ€™
  
       A common assumption in Ada 83 code is that an access type is in
       fact a pointer, and that therefore it will be the same size as a
--- 26602,26608 ----
       can provide a useful way of duplicating the behavior of some Ada 83
       compiler systems.
  
!    * 'Size of Access Types'
  
       A common assumption in Ada 83 code is that an access type is in
       fact a pointer, and that therefore it will be the same size as a
*************** subset of them can sensibly be implement
*** 26652,26663 ****
  in *note Implementation Defined Pragmas: 7. indicates whether or not
  they are applicable to GNAT.
  
!    * â€˜Default floating-point representationâ€™
  
       In GNAT, the default floating-point format is IEEE, whereas in HP
       Ada 83, it is VMS format.
  
!    * â€˜Systemâ€™
  
       the package System in GNAT exactly corresponds to the definition in
       the Ada 95 reference manual, which means that it excludes many of
--- 26653,26664 ----
  in *note Implementation Defined Pragmas: 7. indicates whether or not
  they are applicable to GNAT.
  
!    * 'Default floating-point representation'
  
       In GNAT, the default floating-point format is IEEE, whereas in HP
       Ada 83, it is VMS format.
  
!    * 'System'
  
       the package System in GNAT exactly corresponds to the definition in
       the Ada 95 reference manual, which means that it excludes many of
*************** Copyright 2000, 2001, 2002, 2007, 2008 F
*** 26680,26686 ****
  Everyone is permitted to copy and distribute verbatim copies of this
  license document, but changing it is not allowed.
  
! â€˜Preambleâ€™
  
  The purpose of this License is to make a manual, textbook, or other
  functional and useful document â€œfreeâ€� in the sense of freedom: to assure
--- 26681,26687 ----
  Everyone is permitted to copy and distribute verbatim copies of this
  license document, but changing it is not allowed.
  
! 'Preamble'
  
  The purpose of this License is to make a manual, textbook, or other
  functional and useful document â€œfreeâ€� in the sense of freedom: to assure
*************** used for any textual work, regardless of
*** 26703,26724 ****
  published as a printed book.  We recommend this License principally for
  works whose purpose is instruction or reference.
  
! â€˜1.  APPLICABILITY AND DEFINITIONSâ€™
  
  This License applies to any manual or other work, in any medium, that
  contains a notice placed by the copyright holder saying it can be
  distributed under the terms of this License.  Such a notice grants a
  world-wide, royalty-free license, unlimited in duration, to use that
! work under the conditions stated herein.  The â€˜Documentâ€™, below, refers
  to any such manual or work.  Any member of the public is a licensee, and
! is addressed as â€œâ€˜youâ€™â€�.  You accept the license if you copy, modify or
  distribute the work in a way requiring permission under copyright law.
  
! A â€œâ€˜Modified Versionâ€™â€� of the Document means any work containing the
  Document or a portion of it, either copied verbatim, or with
  modifications and/or translated into another language.
  
! A â€œâ€˜Secondary Sectionâ€™â€� is a named appendix or a front-matter section of
  the Document that deals exclusively with the relationship of the
  publishers or authors of the Document to the Documentâ€™s overall subject
  (or to related matters) and contains nothing that could fall directly
--- 26704,26725 ----
  published as a printed book.  We recommend this License principally for
  works whose purpose is instruction or reference.
  
! '1.  APPLICABILITY AND DEFINITIONS'
  
  This License applies to any manual or other work, in any medium, that
  contains a notice placed by the copyright holder saying it can be
  distributed under the terms of this License.  Such a notice grants a
  world-wide, royalty-free license, unlimited in duration, to use that
! work under the conditions stated herein.  The 'Document', below, refers
  to any such manual or work.  Any member of the public is a licensee, and
! is addressed as â€œ'you'â€�.  You accept the license if you copy, modify or
  distribute the work in a way requiring permission under copyright law.
  
! A â€œ'Modified Version'â€� of the Document means any work containing the
  Document or a portion of it, either copied verbatim, or with
  modifications and/or translated into another language.
  
! A â€œ'Secondary Section'â€� is a named appendix or a front-matter section of
  the Document that deals exclusively with the relationship of the
  publishers or authors of the Document to the Documentâ€™s overall subject
  (or to related matters) and contains nothing that could fall directly
*************** mathematics.)  The relationship could be
*** 26728,26734 ****
  connection with the subject or with related matters, or of legal,
  commercial, philosophical, ethical or political position regarding them.
  
! The â€œâ€˜Invariant Sectionsâ€™â€� are certain Secondary Sections whose titles
  are designated, as being those of Invariant Sections, in the notice that
  says that the Document is released under this License.  If a section
  does not fit the above definition of Secondary then it is not allowed to
--- 26729,26735 ----
  connection with the subject or with related matters, or of legal,
  commercial, philosophical, ethical or political position regarding them.
  
! The â€œ'Invariant Sections'â€� are certain Secondary Sections whose titles
  are designated, as being those of Invariant Sections, in the notice that
  says that the Document is released under this License.  If a section
  does not fit the above definition of Secondary then it is not allowed to
*************** be designated as Invariant.  The Documen
*** 26736,26747 ****
  Sections.  If the Document does not identify any Invariant Sections then
  there are none.
  
! The â€œâ€˜Cover Textsâ€™â€� are certain short passages of text that are listed,
  as Front-Cover Texts or Back-Cover Texts, in the notice that says that
  the Document is released under this License.  A Front-Cover Text may be
  at most 5 words, and a Back-Cover Text may be at most 25 words.
  
! A â€œâ€˜Transparentâ€™â€� copy of the Document means a machine-readable copy,
  represented in a format whose specification is available to the general
  public, that is suitable for revising the document straightforwardly
  with generic text editors or (for images composed of pixels) generic
--- 26737,26748 ----
  Sections.  If the Document does not identify any Invariant Sections then
  there are none.
  
! The â€œ'Cover Texts'â€� are certain short passages of text that are listed,
  as Front-Cover Texts or Back-Cover Texts, in the notice that says that
  the Document is released under this License.  A Front-Cover Text may be
  at most 5 words, and a Back-Cover Text may be at most 25 words.
  
! A â€œ'Transparent'â€� copy of the Document means a machine-readable copy,
  represented in a format whose specification is available to the general
  public, that is suitable for revising the document straightforwardly
  with generic text editors or (for images composed of pixels) generic
*************** formatters.  A copy made in an otherwise
*** 26752,26758 ****
  markup, or absence of markup, has been arranged to thwart or discourage
  subsequent modification by readers is not Transparent.  An image format
  is not Transparent if used for any substantial amount of text.  A copy
! that is not â€œTransparentâ€� is called â€˜Opaqueâ€™.
  
  Examples of suitable formats for Transparent copies include plain ASCII
  without markup, Texinfo input format, LaTeX input format, SGML or XML
--- 26753,26759 ----
  markup, or absence of markup, has been arranged to thwart or discourage
  subsequent modification by readers is not Transparent.  An image format
  is not Transparent if used for any substantial amount of text.  A copy
! that is not â€œTransparentâ€� is called 'Opaque'.
  
  Examples of suitable formats for Transparent copies include plain ASCII
  without markup, Texinfo input format, LaTeX input format, SGML or XML
*************** processing tools are not generally avail
*** 26765,26786 ****
  HTML, PostScript or PDF produced by some word processors for output
  purposes only.
  
! The â€œâ€˜Title Pageâ€™â€� means, for a printed book, the title page itself,
  plus such following pages as are needed to hold, legibly, the material
  this License requires to appear in the title page.  For works in formats
  which do not have any title page as such, â€œTitle Pageâ€� means the text
  near the most prominent appearance of the workâ€™s title, preceding the
  beginning of the body of the text.
  
! The â€œâ€˜publisherâ€™â€� means any person or entity that distributes copies of
  the Document to the public.
  
! A section â€œâ€˜Entitled XYZâ€™â€� means a named subunit of the Document whose
  title either is precisely XYZ or contains XYZ in parentheses following
  text that translates XYZ in another language.  (Here XYZ stands for a
! specific section name mentioned below, such as â€œâ€˜Acknowledgementsâ€™â€�,
! â€œâ€˜Dedicationsâ€™â€�, â€œâ€˜Endorsementsâ€™â€�, or â€œâ€˜Historyâ€™â€�.)  To â€œâ€˜Preserve the
! Titleâ€™â€� of such a section when you modify the Document means that it
  remains a section â€œEntitled XYZâ€� according to this definition.
  
  The Document may include Warranty Disclaimers next to the notice which
--- 26766,26787 ----
  HTML, PostScript or PDF produced by some word processors for output
  purposes only.
  
! The â€œ'Title Page'â€� means, for a printed book, the title page itself,
  plus such following pages as are needed to hold, legibly, the material
  this License requires to appear in the title page.  For works in formats
  which do not have any title page as such, â€œTitle Pageâ€� means the text
  near the most prominent appearance of the workâ€™s title, preceding the
  beginning of the body of the text.
  
! The â€œ'publisher'â€� means any person or entity that distributes copies of
  the Document to the public.
  
! A section â€œ'Entitled XYZ'â€� means a named subunit of the Document whose
  title either is precisely XYZ or contains XYZ in parentheses following
  text that translates XYZ in another language.  (Here XYZ stands for a
! specific section name mentioned below, such as â€œ'Acknowledgements'â€�,
! â€œ'Dedications'â€�, â€œ'Endorsements'â€�, or â€œ'History'â€�.)  To â€œ'Preserve the
! Title'â€� of such a section when you modify the Document means that it
  remains a section â€œEntitled XYZâ€� according to this definition.
  
  The Document may include Warranty Disclaimers next to the notice which
*************** but only as regards disclaiming warranti
*** 26790,26796 ****
  these Warranty Disclaimers may have is void and has no effect on the
  meaning of this License.
  
! â€˜2.  VERBATIM COPYINGâ€™
  
  You may copy and distribute the Document in any medium, either
  commercially or noncommercially, provided that this License, the
--- 26791,26797 ----
  these Warranty Disclaimers may have is void and has no effect on the
  meaning of this License.
  
! '2.  VERBATIM COPYING'
  
  You may copy and distribute the Document in any medium, either
  commercially or noncommercially, provided that this License, the
*************** number of copies you must also follow th
*** 26805,26811 ****
  You may also lend copies, under the same conditions stated above, and
  you may publicly display copies.
  
! â€˜3.  COPYING IN QUANTITYâ€™
  
  If you publish printed copies (or copies in media that commonly have
  printed covers) of the Document, numbering more than 100, and the
--- 26806,26812 ----
  You may also lend copies, under the same conditions stated above, and
  you may publicly display copies.
  
! '3.  COPYING IN QUANTITY'
  
  If you publish printed copies (or copies in media that commonly have
  printed covers) of the Document, numbering more than 100, and the
*************** It is requested, but not required, that
*** 26842,26848 ****
  Document well before redistributing any large number of copies, to give
  them a chance to provide you with an updated version of the Document.
  
! â€˜4.  MODIFICATIONSâ€™
  
  You may copy and distribute a Modified Version of the Document under the
  conditions of sections 2 and 3 above, provided that you release the
--- 26843,26849 ----
  Document well before redistributing any large number of copies, to give
  them a chance to provide you with an updated version of the Document.
  
! '4.  MODIFICATIONS'
  
  You may copy and distribute a Modified Version of the Document under the
  conditions of sections 2 and 3 above, provided that you release the
*************** The author(s) and publisher(s) of the Do
*** 26940,26946 ****
  give permission to use their names for publicity for or to assert or
  imply endorsement of any Modified Version.
  
! â€˜5.  COMBINING DOCUMENTSâ€™
  
  You may combine the Document with other documents released under this
  License, under the terms defined in section 4 above for modified
--- 26941,26947 ----
  give permission to use their names for publicity for or to assert or
  imply endorsement of any Modified Version.
  
! '5.  COMBINING DOCUMENTS'
  
  You may combine the Document with other documents released under this
  License, under the terms defined in section 4 above for modified
*************** likewise combine any sections Entitled â
*** 26964,26970 ****
  sections Entitled â€œDedicationsâ€�.  You must delete all sections Entitled
  â€œEndorsementsâ€�.
  
! â€˜6.  COLLECTIONS OF DOCUMENTSâ€™
  
  You may make a collection consisting of the Document and other documents
  released under this License, and replace the individual copies of this
--- 26965,26971 ----
  sections Entitled â€œDedicationsâ€�.  You must delete all sections Entitled
  â€œEndorsementsâ€�.
  
! '6.  COLLECTIONS OF DOCUMENTS'
  
  You may make a collection consisting of the Document and other documents
  released under this License, and replace the individual copies of this
*************** it individually under this License, prov
*** 26977,26983 ****
  License into the extracted document, and follow this License in all
  other respects regarding verbatim copying of that document.
  
! â€˜7.  AGGREGATION WITH INDEPENDENT WORKSâ€™
  
  A compilation of the Document or its derivatives with other separate and
  independent documents or works, in or on a volume of a storage or
--- 26978,26984 ----
  License into the extracted document, and follow this License in all
  other respects regarding verbatim copying of that document.
  
! '7.  AGGREGATION WITH INDEPENDENT WORKS'
  
  A compilation of the Document or its derivatives with other separate and
  independent documents or works, in or on a volume of a storage or
*************** that bracket the Document within the agg
*** 26995,27001 ****
  equivalent of covers if the Document is in electronic form.  Otherwise
  they must appear on printed covers that bracket the whole aggregate.
  
! â€˜8.  TRANSLATIONâ€™
  
  Translation is considered a kind of modification, so you may distribute
  translations of the Document under the terms of section 4.  Replacing
--- 26996,27002 ----
  equivalent of covers if the Document is in electronic form.  Otherwise
  they must appear on printed covers that bracket the whole aggregate.
  
! '8.  TRANSLATION'
  
  Translation is considered a kind of modification, so you may distribute
  translations of the Document under the terms of section 4.  Replacing
*************** If a section in the Document is Entitled
*** 27014,27020 ****
  â€œDedicationsâ€�, or â€œHistoryâ€�, the requirement (section 4) to Preserve its
  Title (section 1) will typically require changing the actual title.
  
! â€˜9.  TERMINATIONâ€™
  
  You may not copy, modify, sublicense, or distribute the Document except
  as expressly provided under this License.  Any attempt otherwise to
--- 27015,27021 ----
  â€œDedicationsâ€�, or â€œHistoryâ€�, the requirement (section 4) to Preserve its
  Title (section 1) will typically require changing the actual title.
  
! '9.  TERMINATION'
  
  You may not copy, modify, sublicense, or distribute the Document except
  as expressly provided under this License.  Any attempt otherwise to
*************** this License.  If your rights have been
*** 27041,27047 ****
  reinstated, receipt of a copy of some or all of the same material does
  not give you any rights to use it.
  
! â€˜10.  FUTURE REVISIONS OF THIS LICENSEâ€™
  
  The Free Software Foundation may publish new, revised versions of the
  GNU Free Documentation License from time to time.  Such new versions
--- 27042,27048 ----
  reinstated, receipt of a copy of some or all of the same material does
  not give you any rights to use it.
  
! '10.  FUTURE REVISIONS OF THIS LICENSE'
  
  The Free Software Foundation may publish new, revised versions of the
  GNU Free Documentation License from time to time.  Such new versions
*************** that a proxy can decide which future ver
*** 27061,27067 ****
  used, that proxyâ€™s public statement of acceptance of a version
  permanently authorizes you to choose that version for the Document.
  
! â€˜11.  RELICENSINGâ€™
  
  â€œMassive Multiauthor Collaboration Siteâ€� (or â€œMMC Siteâ€�) means any World
  Wide Web server that publishes copyrightable works and also provides
--- 27062,27068 ----
  used, that proxyâ€™s public statement of acceptance of a version
  permanently authorizes you to choose that version for the Document.
  
! '11.  RELICENSING'
  
  â€œMassive Multiauthor Collaboration Siteâ€� (or â€œMMC Siteâ€�) means any World
  Wide Web server that publishes copyrightable works and also provides
*************** The operator of an MMC Site may republis
*** 27089,27095 ****
  under CC-BY-SA on the same site at any time before August 1, 2009,
  provided the MMC is eligible for relicensing.
  
! â€˜ADDENDUM: How to use this License for your documentsâ€™
  
  To use this License in a document you have written, include a copy of
  the License in the document and put the following copyright and license
--- 27090,27096 ----
  under CC-BY-SA on the same site at any time before August 1, 2009,
  provided the MMC is eligible for relicensing.
  
! 'ADDENDUM: How to use this License for your documents'
  
  To use this License in a document you have written, include a copy of
  the License in the document and put the following copyright and license
*************** Index
*** 27128,27139 ****
  [index]
  * Menu:
  
  * -gnat12 option (gcc):                  Implementation of Ada 2012 Features.
                                                               (line    6)
  * -gnatR (gcc):                          Determining the Representations chosen by GNAT.
                                                               (line    6)
- * ___lock file (for shared passive packages): GNAT Implementation of Shared Passive Packages.
-                                                              (line   72)
  * Abort_Signal:                          Attribute Abort_Signal.
                                                               (line    6)
  * Abstract_State:                        Aspect Abstract_State.
--- 27129,27140 ----
  [index]
  * Menu:
  
+ * ___lock file (for shared passive packages): GNAT Implementation of Shared Passive Packages.
+                                                              (line   72)
  * -gnat12 option (gcc):                  Implementation of Ada 2012 Features.
                                                               (line    6)
  * -gnatR (gcc):                          Determining the Representations chosen by GNAT.
                                                               (line    6)
  * Abort_Signal:                          Attribute Abort_Signal.
                                                               (line    6)
  * Abstract_State:                        Aspect Abstract_State.
*************** Index
*** 27165,27170 ****
--- 27166,27173 ----
                                                               (line   79)
  * Ada Extensions:                        Pragma Extensions_Allowed.
                                                               (line    6)
+ * Ada_2012 configuration pragma:         Implementation of Ada 2012 Features.
+                                                              (line    6)
  * Ada.Characters.Handling:               RM A 1 52 Names of Predefined Numeric Types.
                                                               (line   13)
  * Ada.Characters.Latin_9 (a-chlat9.ads): Ada Characters Latin_9 a-chlat9 ads.
*************** Index
*** 27221,27228 ****
                                                               (line    6)
  * Ada.Wide_Wide_Text_IO.Reset_Standard_Files (a-zrstfi.ads): Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads.
                                                               (line    6)
- * Ada_2012 configuration pragma:         Implementation of Ada 2012 Features.
-                                                              (line    6)
  * Address:                               RM 13 5 3 7-8 Bit Ordering.
                                                               (line   14)
  * Address <1>:                           RM 13 7 37 Address as Private.
--- 27224,27229 ----
*************** Index
*** 27512,27524 ****
                                                               (line    6)
  * Asm_Output:                            Attribute Asm_Output.
                                                               (line    6)
  * Assertions:                            Pragma Check.       (line    6)
  * Assertions <1>:                        Pragma Check_Policy.
                                                               (line    6)
  * Assertions <2>:                        System Assertions s-assert ads.
                                                               (line    6)
- * Assert_Failure:                        System Assertions s-assert ads.
-                                                              (line    6)
  * Async_Readers:                         Aspect Async_Readers.
                                                               (line    6)
  * Async_Writers:                         Aspect Async_Writers.
--- 27513,27525 ----
                                                               (line    6)
  * Asm_Output:                            Attribute Asm_Output.
                                                               (line    6)
+ * Assert_Failure:                        System Assertions s-assert ads.
+                                                              (line    6)
  * Assertions:                            Pragma Check.       (line    6)
  * Assertions <1>:                        Pragma Check_Policy.
                                                               (line    6)
  * Assertions <2>:                        System Assertions s-assert ads.
                                                               (line    6)
  * Async_Readers:                         Aspect Async_Readers.
                                                               (line    6)
  * Async_Writers:                         Aspect Async_Writers.
*************** Index
*** 27602,27608 ****
                                                               (line    6)
  * CGI (Common Gateway Interface) debugging: GNAT CGI Debug g-cgideb ads.
                                                               (line    6)
! * Character handling (â€˜â€˜GNAT.Case_Utilâ€˜â€˜): GNAT Case_Util g-casuti ads.
                                                               (line    6)
  * Character Sets:                        RM 2 8 17-19 Pragmas.
                                                               (line   17)
--- 27603,27609 ----
                                                               (line    6)
  * CGI (Common Gateway Interface) debugging: GNAT CGI Debug g-cgideb ads.
                                                               (line    6)
! * Character handling (''GNAT.Case_Util''): GNAT Case_Util g-casuti ads.
                                                               (line    6)
  * Character Sets:                        RM 2 8 17-19 Pragmas.
                                                               (line   17)
*************** Index
*** 27764,27770 ****
                                                               (line    6)
  * Dump Memory:                           GNAT Memory_Dump g-memdum ads.
                                                               (line    6)
! * Durationâ€™Small:                        RM 3 6 2 11 Multidimensional Arrays.
                                                               (line   14)
  * effect on representation:              Effect of Convention on Representation.
                                                               (line    6)
--- 27765,27771 ----
                                                               (line    6)
  * Dump Memory:                           GNAT Memory_Dump g-memdum ads.
                                                               (line    6)
! * Duration'Small:                        RM 3 6 2 11 Multidimensional Arrays.
                                                               (line   14)
  * effect on representation:              Effect of Convention on Representation.
                                                               (line    6)
*************** Index
*** 27772,27787 ****
                                                               (line    6)
  * Effective_Writes:                      Aspect Effective_Writes.
                                                               (line    6)
- * Elaborated:                            Attribute Elaborated.
-                                                              (line    6)
- * Elaboration control:                   Pragma Elaboration_Checks.
-                                                              (line    6)
  * Elab_Body:                             Attribute Elab_Body.
                                                               (line    6)
  * Elab_Spec:                             Attribute Elab_Spec.
                                                               (line    6)
  * Elab_Subp_Body:                        Attribute Elab_Subp_Body.
                                                               (line    6)
  * Elimination of unused subprograms:     Pragma Eliminate.   (line    6)
  * Emax:                                  Attribute Emax.     (line    6)
  * Enabled:                               Attribute Enabled.  (line    6)
--- 27773,27788 ----
                                                               (line    6)
  * Effective_Writes:                      Aspect Effective_Writes.
                                                               (line    6)
  * Elab_Body:                             Attribute Elab_Body.
                                                               (line    6)
  * Elab_Spec:                             Attribute Elab_Spec.
                                                               (line    6)
  * Elab_Subp_Body:                        Attribute Elab_Subp_Body.
                                                               (line    6)
+ * Elaborated:                            Attribute Elaborated.
+                                                              (line    6)
+ * Elaboration control:                   Pragma Elaboration_Checks.
+                                                              (line    6)
  * Elimination of unused subprograms:     Pragma Eliminate.   (line    6)
  * Emax:                                  Attribute Emax.     (line    6)
  * Enabled:                               Attribute Enabled.  (line    6)
*************** Index
*** 27798,27811 ****
                                                               (line    6)
  * Entry queuing policies:                RM D 3 17 Locking Policies.
                                                               (line   12)
  * enumeration:                           RM 13 3 71-73 Component Size Clauses.
                                                               (line   23)
  * Enumeration representation clauses:    RM 13 3 71-73 Component Size Clauses.
                                                               (line   24)
  * Enumeration values:                    RM 3 5 4 29 Integer Types.
                                                               (line   12)
- * Enum_Rep:                              Attribute Enum_Rep. (line    6)
- * Enum_Val:                              Attribute Enum_Val. (line    6)
  * Environment entries:                   Ada Command_Line Environment a-colien ads.
                                                               (line    6)
  * Epsilon:                               Attribute Epsilon.  (line    6)
--- 27799,27812 ----
                                                               (line    6)
  * Entry queuing policies:                RM D 3 17 Locking Policies.
                                                               (line   12)
+ * Enum_Rep:                              Attribute Enum_Rep. (line    6)
+ * Enum_Val:                              Attribute Enum_Val. (line    6)
  * enumeration:                           RM 13 3 71-73 Component Size Clauses.
                                                               (line   23)
  * Enumeration representation clauses:    RM 13 3 71-73 Component Size Clauses.
                                                               (line   24)
  * Enumeration values:                    RM 3 5 4 29 Integer Types.
                                                               (line   12)
  * Environment entries:                   Ada Command_Line Environment a-colien ads.
                                                               (line    6)
  * Epsilon:                               Attribute Epsilon.  (line    6)
*************** Index
*** 27825,27830 ****
--- 27826,27837 ----
                                                               (line    6)
  * Exception traces:                      GNAT Exception_Traces g-exctra ads.
                                                               (line    6)
+ * Exception_Information':                Exception_Information.
+                                                              (line    6)
+ * Exception_Message:                     Pragma Prefix_Exception_Messages.
+                                                              (line    6)
+ * Exception_Message <1>:                 Exception_Message.  (line    6)
+ * Exception_Name:                        Exception_Name.     (line    6)
  * Exceptional_Cases:                     Pragma Exceptional_Cases.
                                                               (line    6)
  * Exceptional_Cases <1>:                 Aspect Exceptional_Cases.
*************** Index
*** 27833,27844 ****
                                                               (line    6)
  * exceptions:                            GNAT Exceptions g-except ads.
                                                               (line    6)
- * Exception_Informationâ€™:                Exception_Information.
-                                                              (line    6)
- * Exception_Message:                     Pragma Prefix_Exception_Messages.
-                                                              (line    6)
- * Exception_Message <1>:                 Exception_Message.  (line    6)
- * Exception_Name:                        Exception_Name.     (line    6)
  * Exit_Cases:                            Pragma Exit_Cases.  (line    6)
  * Exit_Cases <1>:                        Aspect Exit_Cases.  (line    6)
  * Export:                                RM A 18 Containers. (line   17)
--- 27840,27845 ----
*************** Index
*** 27980,27991 ****
                                                               (line    6)
  * GNAT.Encode_UTF8_String (g-enutst.ads): GNAT Encode_UTF8_String g-enutst ads.
                                                               (line    6)
- * GNAT.Exceptions (g-except.ads):        GNAT Exceptions g-except ads.
-                                                              (line    6)
  * GNAT.Exception_Actions (g-excact.ads): GNAT Exception_Actions g-excact ads.
                                                               (line    6)
  * GNAT.Exception_Traces (g-exctra.ads):  GNAT Exception_Traces g-exctra ads.
                                                               (line    6)
  * GNAT.Expect (g-expect.ads):            GNAT Expect g-expect ads.
                                                               (line    6)
  * GNAT.Expect.TTY (g-exptty.ads):        GNAT Expect TTY g-exptty ads.
--- 27981,27992 ----
                                                               (line    6)
  * GNAT.Encode_UTF8_String (g-enutst.ads): GNAT Encode_UTF8_String g-enutst ads.
                                                               (line    6)
  * GNAT.Exception_Actions (g-excact.ads): GNAT Exception_Actions g-excact ads.
                                                               (line    6)
  * GNAT.Exception_Traces (g-exctra.ads):  GNAT Exception_Traces g-exctra ads.
                                                               (line    6)
+ * GNAT.Exceptions (g-except.ads):        GNAT Exceptions g-except ads.
+                                                              (line    6)
  * GNAT.Expect (g-expect.ads):            GNAT Expect g-expect ads.
                                                               (line    6)
  * GNAT.Expect.TTY (g-exptty.ads):        GNAT Expect TTY g-exptty ads.
*************** Index
*** 28071,28082 ****
  * GNAT.SSE (g-sse.ads):                  GNAT SSE g-sse ads. (line    6)
  * GNAT.SSE.Vector_Types (g-ssvety.ads):  GNAT SSE Vector_Types g-ssvety ads.
                                                               (line    6)
- * GNAT.Strings (g-string.ads):           GNAT Strings g-string ads.
-                                                              (line    6)
  * GNAT.String_Hash (g-strhas.ads):       GNAT String_Hash g-strhas ads.
                                                               (line    6)
  * GNAT.String_Split (g-strspl.ads):      GNAT String_Split g-strspl ads.
                                                               (line    6)
  * GNAT.Table (g-table.ads):              GNAT Table g-table ads.
                                                               (line    6)
  * GNAT.Task_Lock (g-tasloc.ads):         GNAT Task_Lock g-tasloc ads.
--- 28072,28083 ----
  * GNAT.SSE (g-sse.ads):                  GNAT SSE g-sse ads. (line    6)
  * GNAT.SSE.Vector_Types (g-ssvety.ads):  GNAT SSE Vector_Types g-ssvety ads.
                                                               (line    6)
  * GNAT.String_Hash (g-strhas.ads):       GNAT String_Hash g-strhas ads.
                                                               (line    6)
  * GNAT.String_Split (g-strspl.ads):      GNAT String_Split g-strspl ads.
                                                               (line    6)
+ * GNAT.Strings (g-string.ads):           GNAT Strings g-string ads.
+                                                              (line    6)
  * GNAT.Table (g-table.ads):              GNAT Table g-table ads.
                                                               (line    6)
  * GNAT.Task_Lock (g-tasloc.ads):         GNAT Task_Lock g-tasloc ads.
*************** Index
*** 28105,28110 ****
--- 28106,28117 ----
                                                               (line    6)
  * Handling of Records with Holes:        Handling of Records with Holes.
                                                               (line    6)
+ * Has_Access_Values:                     Attribute Has_Access_Values.
+                                                              (line    6)
+ * Has_Discriminants:                     Attribute Has_Discriminants.
+                                                              (line    6)
+ * Has_Tagged_Values:                     Attribute Has_Tagged_Values.
+                                                              (line    6)
  * Hash functions:                        GNAT Perfect_Hash_Generators g-pehage ads.
                                                               (line    6)
  * Hash functions <1>:                    GNAT String_Hash g-strhas ads.
*************** Index
*** 28113,28124 ****
                                                               (line    6)
  * Hash tables <1>:                       GNAT HTable g-htable ads.
                                                               (line    6)
- * Has_Access_Values:                     Attribute Has_Access_Values.
-                                                              (line    6)
- * Has_Discriminants:                     Attribute Has_Discriminants.
-                                                              (line    6)
- * Has_Tagged_Values:                     Attribute Has_Tagged_Values.
-                                                              (line    6)
  * Heap usage:                            RM 13 9 14-17 Unchecked Conversion.
                                                               (line   34)
  * I/O interfacing:                       Interfaces VxWorks IO i-vxwoio ads.
--- 28120,28125 ----
*************** Index
*** 28134,28146 ****
  * implicit:                              RM 13 9 14-17 Unchecked Conversion.
                                                               (line   33)
  * Import:                                Address Clauses.    (line  121)
  * Initialization:                        Pragma Suppress_Initialization.
                                                               (line    6)
  * Initialized:                           Attribute Initialized.
                                                               (line    6)
  * Initializes:                           Aspect Initializes. (line    6)
- * Initial_Condition:                     Aspect Initial_Condition.
-                                                              (line    6)
  * Inline_Always:                         Aspect Inline_Always.
                                                               (line    6)
  * Input/Output facilities:               GNAT IO g-io ads.   (line    6)
--- 28135,28147 ----
  * implicit:                              RM 13 9 14-17 Unchecked Conversion.
                                                               (line   33)
  * Import:                                Address Clauses.    (line  121)
+ * Initial_Condition:                     Aspect Initial_Condition.
+                                                              (line    6)
  * Initialization:                        Pragma Suppress_Initialization.
                                                               (line    6)
  * Initialized:                           Attribute Initialized.
                                                               (line    6)
  * Initializes:                           Aspect Initializes. (line    6)
  * Inline_Always:                         Aspect Inline_Always.
                                                               (line    6)
  * Input/Output facilities:               GNAT IO g-io ads.   (line    6)
*************** Index
*** 28173,28179 ****
                                                               (line    6)
  * Interfacing to VxWorks:                Interfaces VxWorks i-vxwork ads.
                                                               (line    6)
! * Interfacing to VxWorksâ€™ I/O:           Interfaces VxWorks IO i-vxwoio ads.
                                                               (line    6)
  * interfacing with:                      RM B 2 12-13 Package Interfaces.
                                                               (line   21)
--- 28174,28180 ----
                                                               (line    6)
  * Interfacing to VxWorks:                Interfaces VxWorks i-vxwork ads.
                                                               (line    6)
! * Interfacing to VxWorks' I/O:           Interfaces VxWorks IO i-vxwoio ads.
                                                               (line    6)
  * interfacing with:                      RM B 2 12-13 Package Interfaces.
                                                               (line   21)
*************** Index
*** 28181,28186 ****
--- 28182,28193 ----
                                                               (line   57)
  * interfacing with <2>:                  RM B 4 95-98 Interfacing with COBOL.
                                                               (line   27)
+ * Interfacing with ''Text_IO'':          Ada Text_IO C_Streams a-tiocst ads.
+                                                              (line    6)
+ * Interfacing with ''Wide_Text_IO'':     Ada Wide_Text_IO C_Streams a-wtcstr ads.
+                                                              (line    6)
+ * Interfacing with ''Wide_Wide_Text_IO'': Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads.
+                                                              (line    6)
  * Interfacing with C++:                  Pragma CPP_Class.   (line    6)
  * Interfacing with C++ <1>:              Pragma CPP_Constructor.
                                                               (line    6)
*************** Index
*** 28191,28202 ****
                                                               (line    6)
  * Interfacing with Stream_IO:            Ada Streams Stream_IO C_Streams a-ssicst ads.
                                                               (line    6)
- * Interfacing with â€˜â€˜Text_IOâ€˜â€˜:          Ada Text_IO C_Streams a-tiocst ads.
-                                                              (line    6)
- * Interfacing with â€˜â€˜Wide_Text_IOâ€˜â€˜:     Ada Wide_Text_IO C_Streams a-wtcstr ads.
-                                                              (line    6)
- * Interfacing with â€˜â€˜Wide_Wide_Text_IOâ€˜â€˜: Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads.
-                                                              (line    6)
  * Interrupt:                             GNAT Ctrl_C g-ctrl_c ads.
                                                               (line    6)
  * Interrupt support:                     RM C 1 10-16 Access to Machine Operations.
--- 28198,28203 ----
*************** Index
*** 28214,28220 ****
  * Invalid_Value:                         Attribute Invalid_Value.
                                                               (line    6)
  * Invariant:                             Aspect Invariant.   (line    6)
! * Invariantâ€™Class:                       Aspect Invariantâ€™Class.
                                                               (line    6)
  * IO support:                            Ada Strings Unbounded Text_IO a-suteio ads.
                                                               (line    6)
--- 28215,28221 ----
  * Invalid_Value:                         Attribute Invalid_Value.
                                                               (line    6)
  * Invariant:                             Aspect Invariant.   (line    6)
! * Invariant'Class:                       Aspect Invariantâ€™Class.
                                                               (line    6)
  * IO support:                            Ada Strings Unbounded Text_IO a-suteio ads.
                                                               (line    6)
*************** Index
*** 28224,28230 ****
                                                               (line    6)
  * Iterable:                              Aspect Iterable.    (line    6)
  * Large:                                 Attribute Large.    (line    6)
- * Latin-1:                               Changed semantics.  (line   12)
  * Latin_1 constants for Wide_Character:  Ada Characters Wide_Latin_1 a-cwila1 ads.
                                                               (line    6)
  * Latin_1 constants for Wide_Wide_Character: Ada Characters Wide_Wide_Latin_1 a-chzla1 ads.
--- 28225,28230 ----
*************** Index
*** 28235,28240 ****
--- 28235,28241 ----
                                                               (line    6)
  * Latin_9 constants for Wide_Wide_Character: Ada Characters Wide_Wide_Latin_9 a-chzla9 ads.
                                                               (line    6)
+ * Latin-1:                               Changed semantics.  (line   12)
  * Library_Level:                         Attribute Library_Level.
                                                               (line    6)
  * License checking:                      Pragma License.     (line    6)
*************** Index
*** 28251,28263 ****
                                                               (line    6)
  * Local_Restrictions:                    Aspect Local_Restrictions.
                                                               (line    6)
  * Locking:                               GNAT Task_Lock g-tasloc ads.
                                                               (line    6)
  * Locking Policies:                      RM C 7 2 30 The Package Task_Attributes.
                                                               (line   17)
  * Locking using files:                   GNAT Lock_Files g-locfil ads.
                                                               (line    6)
- * Lock_Free:                             Aspect Lock_Free.   (line    6)
  * Loop_Entry:                            Attribute Loop_Entry.
                                                               (line    6)
  * Machine Code insertions:               Machine Code Insertions.
--- 28252,28264 ----
                                                               (line    6)
  * Local_Restrictions:                    Aspect Local_Restrictions.
                                                               (line    6)
+ * Lock_Free:                             Aspect Lock_Free.   (line    6)
  * Locking:                               GNAT Task_Lock g-tasloc ads.
                                                               (line    6)
  * Locking Policies:                      RM C 7 2 30 The Package Task_Attributes.
                                                               (line   17)
  * Locking using files:                   GNAT Lock_Files g-locfil ads.
                                                               (line    6)
  * Loop_Entry:                            Attribute Loop_Entry.
                                                               (line    6)
  * Machine Code insertions:               Machine Code Insertions.
*************** Index
*** 28275,28285 ****
                                                               (line    6)
  * Mathematical functions:                GNAT Generic_Fast_Math_Functions g-gfmafu ads.
                                                               (line    6)
- * maximum:                               Attribute Maximum_Alignment.
-                                                              (line    6)
- * Maximum_Alignment:                     Attribute Maximum_Alignment.
-                                                              (line    6)
- * Maximum_Alignment attribute:           Alignment Clauses.  (line   21)
  * Max_Asynchronous_Select_Nesting:       Max_Asynchronous_Select_Nesting.
                                                               (line    6)
  * Max_Entry_Queue_Depth:                 Max_Entry_Queue_Length.
--- 28276,28281 ----
*************** Index
*** 28296,28303 ****
                                                               (line    6)
  * Max_Storage_At_Blocking:               Max_Storage_At_Blocking.
                                                               (line    6)
- * Max_Tasks:                             Max_Tasks.          (line    6)
  * Max_Task_Entries:                      Max_Task_Entries.   (line    6)
  * Mechanism_Code:                        Attribute Mechanism_Code.
                                                               (line    6)
  * Memory allocation:                     System Memory s-memory ads.
--- 28292,28304 ----
                                                               (line    6)
  * Max_Storage_At_Blocking:               Max_Storage_At_Blocking.
                                                               (line    6)
  * Max_Task_Entries:                      Max_Task_Entries.   (line    6)
+ * Max_Tasks:                             Max_Tasks.          (line    6)
+ * maximum:                               Attribute Maximum_Alignment.
+                                                              (line    6)
+ * Maximum_Alignment:                     Attribute Maximum_Alignment.
+                                                              (line    6)
+ * Maximum_Alignment attribute:           Alignment Clauses.  (line   21)
  * Mechanism_Code:                        Attribute Mechanism_Code.
                                                               (line    6)
  * Memory allocation:                     System Memory s-memory ads.
*************** Index
*** 28364,28376 ****
  * No_Entry_Queue:                        No_Entry_Queue.     (line    6)
  * No_Enumeration_Maps:                   No_Enumeration_Maps.
                                                               (line    6)
- * No_Exceptions:                         No_Exceptions.      (line    6)
  * No_Exception_Handlers:                 No_Exception_Handlers.
                                                               (line    6)
  * No_Exception_Propagation:              No_Exception_Propagation.
                                                               (line    6)
  * No_Exception_Registration:             No_Exception_Registration.
                                                               (line    6)
  * No_Finalization:                       No_Finalization.    (line    6)
  * No_Fixed_Point:                        No_Fixed_Point.     (line    6)
  * No_Floating_Point:                     No_Floating_Point.  (line    6)
--- 28365,28377 ----
  * No_Entry_Queue:                        No_Entry_Queue.     (line    6)
  * No_Enumeration_Maps:                   No_Enumeration_Maps.
                                                               (line    6)
  * No_Exception_Handlers:                 No_Exception_Handlers.
                                                               (line    6)
  * No_Exception_Propagation:              No_Exception_Propagation.
                                                               (line    6)
  * No_Exception_Registration:             No_Exception_Registration.
                                                               (line    6)
+ * No_Exceptions:                         No_Exceptions.      (line    6)
  * No_Finalization:                       No_Finalization.    (line    6)
  * No_Fixed_Point:                        No_Fixed_Point.     (line    6)
  * No_Floating_Point:                     No_Floating_Point.  (line    6)
*************** Index
*** 28419,28427 ****
                                                               (line    6)
  * No_Obsolescent_Features:               No_Obsolescent_Features.
                                                               (line    6)
- * No_Protected_Types:                    No_Protected_Types. (line    6)
  * No_Protected_Type_Allocators:          No_Protected_Type_Allocators.
                                                               (line    6)
  * No_Raise:                              Aspect No_Raise.    (line    6)
  * No_Recursion:                          No_Recursion.       (line    6)
  * No_Reentrancy:                         No_Reentrancy.      (line    6)
--- 28420,28428 ----
                                                               (line    6)
  * No_Obsolescent_Features:               No_Obsolescent_Features.
                                                               (line    6)
  * No_Protected_Type_Allocators:          No_Protected_Type_Allocators.
                                                               (line    6)
+ * No_Protected_Types:                    No_Protected_Types. (line    6)
  * No_Raise:                              Aspect No_Raise.    (line    6)
  * No_Recursion:                          No_Recursion.       (line    6)
  * No_Reentrancy:                         No_Reentrancy.      (line    6)
*************** Index
*** 28433,28466 ****
  * No_Secondary_Stack:                    No_Secondary_Stack. (line    6)
  * No_Select_Statements:                  No_Select_Statements.
                                                               (line    6)
- * No_Specification_of_Aspect:            No_Specification_of_Aspect.
-                                                              (line    6)
  * No_Specific_Termination_Handlers:      No_Specific_Termination_Handlers.
                                                               (line    6)
  * No_Standard_Allocators_After_Elaboration: No_Standard_Allocators_After_Elaboration.
                                                               (line    6)
  * No_Standard_Storage_Pools:             No_Standard_Storage_Pools.
                                                               (line    6)
- * No_Streams:                            No_Streams.         (line    6)
  * No_Stream_Optimizations:               No_Stream_Optimizations.
                                                               (line    6)
  * No_Tagged_Streams:                     Aspect No_Tagged_Streams.
                                                               (line    6)
  * No_Tagged_Type_Registration:           No_Tagged_Type_Registration.
                                                               (line    6)
- * No_Tasking:                            No_Tasking.         (line    6)
  * No_Task_Allocators:                    No_Task_Allocators. (line    6)
  * No_Task_Attributes:                    No_Task_Attributes_Package.
                                                               (line    9)
  * No_Task_Attributes_Package:            No_Task_Attributes_Package.
                                                               (line    6)
- * No_Task_At_Interrupt_Priority:         No_Task_At_Interrupt_Priority.
-                                                              (line    6)
  * No_Task_Hierarchy:                     No_Task_Hierarchy.  (line    6)
  * No_Task_Parts:                         Aspect No_Task_Parts.
                                                               (line    6)
  * No_Task_Termination:                   No_Task_Termination.
                                                               (line    6)
  * No_Terminate_Alternatives:             No_Terminate_Alternatives.
                                                               (line    6)
  * No_Unchecked_Access:                   No_Unchecked_Access.
--- 28434,28467 ----
  * No_Secondary_Stack:                    No_Secondary_Stack. (line    6)
  * No_Select_Statements:                  No_Select_Statements.
                                                               (line    6)
  * No_Specific_Termination_Handlers:      No_Specific_Termination_Handlers.
                                                               (line    6)
+ * No_Specification_of_Aspect:            No_Specification_of_Aspect.
+                                                              (line    6)
  * No_Standard_Allocators_After_Elaboration: No_Standard_Allocators_After_Elaboration.
                                                               (line    6)
  * No_Standard_Storage_Pools:             No_Standard_Storage_Pools.
                                                               (line    6)
  * No_Stream_Optimizations:               No_Stream_Optimizations.
                                                               (line    6)
+ * No_Streams:                            No_Streams.         (line    6)
  * No_Tagged_Streams:                     Aspect No_Tagged_Streams.
                                                               (line    6)
  * No_Tagged_Type_Registration:           No_Tagged_Type_Registration.
                                                               (line    6)
  * No_Task_Allocators:                    No_Task_Allocators. (line    6)
+ * No_Task_At_Interrupt_Priority:         No_Task_At_Interrupt_Priority.
+                                                              (line    6)
  * No_Task_Attributes:                    No_Task_Attributes_Package.
                                                               (line    9)
  * No_Task_Attributes_Package:            No_Task_Attributes_Package.
                                                               (line    6)
  * No_Task_Hierarchy:                     No_Task_Hierarchy.  (line    6)
  * No_Task_Parts:                         Aspect No_Task_Parts.
                                                               (line    6)
  * No_Task_Termination:                   No_Task_Termination.
                                                               (line    6)
+ * No_Tasking:                            No_Tasking.         (line    6)
  * No_Terminate_Alternatives:             No_Terminate_Alternatives.
                                                               (line    6)
  * No_Unchecked_Access:                   No_Unchecked_Access.
*************** Index
*** 28500,28506 ****
  * of objects:                            Value_Size and Object_Size Clauses.
                                                               (line    6)
  * Old:                                   Attribute Old.      (line    6)
! * on â€˜â€˜Addressâ€˜â€˜:                        RM 13 7 37 Address as Private.
                                                               (line   10)
  * Operating System interface:            GNAT OS_Lib g-os_lib ads.
                                                               (line    6)
--- 28501,28507 ----
  * of objects:                            Value_Size and Object_Size Clauses.
                                                               (line    6)
  * Old:                                   Attribute Old.      (line    6)
! * on ''Address'':                        RM 13 7 37 Address as Private.
                                                               (line   10)
  * Operating System interface:            GNAT OS_Lib g-os_lib ads.
                                                               (line    6)
*************** Index
*** 28512,28523 ****
  * ordering <1>:                          Effect of Bit_Order on Byte Ordering.
                                                               (line    6)
  * Overlaying of objects:                 Address Clauses.    (line  170)
  * Package Interfaces:                    RM B 1 39-41 Pragma Export.
                                                               (line   35)
  * Package Task_Attributes:               RM C 5 8 Pragma Discard_Names.
                                                               (line   12)
- * Package â€˜â€˜Interruptsâ€˜â€˜:                RM C 3 1 20-21 Protected Procedure Handlers.
-                                                              (line   17)
  * Packed Decimal:                        Interfaces Packed_Decimal i-pacdec ads.
                                                               (line    6)
  * Packed types:                          RM 13 1 21-24 Representation Clauses.
--- 28513,28524 ----
  * ordering <1>:                          Effect of Bit_Order on Byte Ordering.
                                                               (line    6)
  * Overlaying of objects:                 Address Clauses.    (line  170)
+ * Package ''Interrupts'':                RM C 3 1 20-21 Protected Procedure Handlers.
+                                                              (line   17)
  * Package Interfaces:                    RM B 1 39-41 Pragma Export.
                                                               (line   35)
  * Package Task_Attributes:               RM C 5 8 Pragma Discard_Names.
                                                               (line   12)
  * Packed Decimal:                        Interfaces Packed_Decimal i-pacdec ads.
                                                               (line    6)
  * Packed types:                          RM 13 1 21-24 Representation Clauses.
*************** Index
*** 28531,28541 ****
                                                               (line    6)
  * Parsing <2>:                           GNAT Bounded_Mailboxes g-boumai ads.
                                                               (line    6)
  * Partition communication subsystem:     RM D 8 47-49 Monotonic Time.
                                                               (line   23)
  * Partition interfacing functions:       System Partition_Interface s-parint ads.
                                                               (line    6)
- * Part_Of:                               Aspect Part_Of.     (line    6)
  * Passed_By_Reference:                   Attribute Passed_By_Reference.
                                                               (line    6)
  * passing:                               Attribute Null_Parameter.
--- 28532,28542 ----
                                                               (line    6)
  * Parsing <2>:                           GNAT Bounded_Mailboxes g-boumai ads.
                                                               (line    6)
+ * Part_Of:                               Aspect Part_Of.     (line    6)
  * Partition communication subsystem:     RM D 8 47-49 Monotonic Time.
                                                               (line   23)
  * Partition interfacing functions:       System Partition_Interface s-parint ads.
                                                               (line    6)
  * Passed_By_Reference:                   Attribute Passed_By_Reference.
                                                               (line    6)
  * passing:                               Attribute Null_Parameter.
*************** Index
*** 28588,28593 ****
--- 28589,28595 ----
  * Pragmas <1>:                           RM 1 1 5 12 Bounded Errors.
                                                               (line   12)
  * Pre:                                   Pragma Pre.         (line    6)
+ * Pre_Class:                             Pragma Pre_Class.   (line    6)
  * Pre-elaboration requirements:          RM C 3 2 25 Package Interrupts.
                                                               (line   14)
  * preconditions:                         Pragma Pre.         (line    6)
*************** Index
*** 28601,28607 ****
                                                               (line   10)
  * Prefix_Exception_Messages:             Pragma Prefix_Exception_Messages.
                                                               (line    6)
- * Pre_Class:                             Pragma Pre_Class.   (line    6)
  * Protected procedure handlers:          RM C 3 28 Interrupt Support.
                                                               (line   14)
  * Pure:                                  GNAT Exceptions g-except ads.
--- 28603,28608 ----
*************** Index
*** 28685,28696 ****
                                                               (line    6)
  * Response file for command line:        Ada Command_Line Response_File a-clrefi ads.
                                                               (line    6)
  * Restrictions:                          Attribute Restriction_Set.
                                                               (line    6)
  * Restrictions definitions:              System Rident s-rident ads.
                                                               (line    6)
- * Restriction_Set:                       Attribute Restriction_Set.
-                                                              (line    6)
  * Result:                                Attribute Result.   (line    6)
  * Return values:                         Attribute Mechanism_Code.
                                                               (line    6)
--- 28686,28697 ----
                                                               (line    6)
  * Response file for command line:        Ada Command_Line Response_File a-clrefi ads.
                                                               (line    6)
+ * Restriction_Set:                       Attribute Restriction_Set.
+                                                              (line    6)
  * Restrictions:                          Attribute Restriction_Set.
                                                               (line    6)
  * Restrictions definitions:              System Rident s-rident ads.
                                                               (line    6)
  * Result:                                Attribute Result.   (line    6)
  * Return values:                         Attribute Mechanism_Code.
                                                               (line    6)
*************** Index
*** 28788,28794 ****
                                                               (line   40)
  * Size for biased representation:        Biased Representation.
                                                               (line    6)
! * Size of â€˜â€˜Addressâ€˜â€˜:                   Attribute Address_Size.
                                                               (line    6)
  * Small:                                 Attribute Small.    (line    6)
  * Small <1>:                             Attribute Small_Denominator.
--- 28789,28795 ----
                                                               (line   40)
  * Size for biased representation:        Biased Representation.
                                                               (line    6)
! * Size of ''Address'':                   Attribute Address_Size.
                                                               (line    6)
  * Small:                                 Attribute Small.    (line    6)
  * Small <1>:                             Attribute Small_Denominator.
*************** Index
*** 28889,28894 ****
--- 28890,28899 ----
                                                               (line    6)
  * subtypes:                              Alignment Clauses.  (line   87)
  * Super:                                 Attribute Super.    (line    6)
+ * Suppress_Debug_Info:                   Aspect Suppress_Debug_Info.
+                                                              (line    6)
+ * Suppress_Initialization:               Aspect Suppress_Initialization.
+                                                              (line    6)
  * Suppressing external name:             Pragma Export_Function.
                                                               (line   59)
  * Suppressing external name <1>:         Pragma Export_Procedure.
*************** Index
*** 28903,28918 ****
                                                               (line   22)
  * Suppression of checks:                 RM 11 4 1 19 Exception Information.
                                                               (line   23)
- * Suppress_Debug_Info:                   Aspect Suppress_Debug_Info.
-                                                              (line    6)
- * Suppress_Initialization:               Aspect Suppress_Initialization.
-                                                              (line    6)
  * synonyms:                              Pragma Convention_Identifier.
                                                               (line    6)
  * synonyms <1>:                          Pragma Rename_Pragma.
                                                               (line    6)
  * System:                                Pragma Extend_System.
                                                               (line    6)
  * System.Address_Image (s-addima.ads):   System Address_Image s-addima ads.
                                                               (line    6)
  * System.Assertions (s-assert.ads):      System Assertions s-assert ads.
--- 28908,28921 ----
                                                               (line   22)
  * Suppression of checks:                 RM 11 4 1 19 Exception Information.
                                                               (line   23)
  * synonyms:                              Pragma Convention_Identifier.
                                                               (line    6)
  * synonyms <1>:                          Pragma Rename_Pragma.
                                                               (line    6)
  * System:                                Pragma Extend_System.
                                                               (line    6)
+ * System_Allocator_Alignment:            Attribute System_Allocator_Alignment.
+                                                              (line    6)
  * System.Address_Image (s-addima.ads):   System Address_Image s-addima ads.
                                                               (line    6)
  * System.Assertions (s-assert.ads):      System Assertions s-assert ads.
*************** Index
*** 28943,28950 ****
                                                               (line    6)
  * System.Wch_Con (s-wchcon.ads):         System Wch_Con s-wchcon ads.
                                                               (line    6)
- * System_Allocator_Alignment:            Attribute System_Allocator_Alignment.
-                                                              (line    6)
  * Table implementation:                  GNAT Dynamic_Tables g-dyntab ads.
                                                               (line    6)
  * Table implementation <1>:              GNAT Table g-table ads.
--- 28946,28951 ----
*************** Index
*** 28959,28971 ****
                                                               (line    6)
  * Task synchronization:                  GNAT Task_Lock g-tasloc ads.
                                                               (line    6)
- * Tasking restrictions:                  RM D 6 9-10 Preemptive Abort.
-                                                              (line   18)
  * Task_Attributes:                       Pragma Thread_Local_Storage.
                                                               (line    6)
  * Task_Attributes <1>:                   RM C 5 8 Pragma Discard_Names.
                                                               (line   11)
  * Test cases:                            Pragma Test_Case.   (line    6)
  * testing for:                           Attribute Has_Access_Values.
                                                               (line    6)
  * testing for <1>:                       Attribute Has_Discriminants.
--- 28960,28973 ----
                                                               (line    6)
  * Task synchronization:                  GNAT Task_Lock g-tasloc ads.
                                                               (line    6)
  * Task_Attributes:                       Pragma Thread_Local_Storage.
                                                               (line    6)
  * Task_Attributes <1>:                   RM C 5 8 Pragma Discard_Names.
                                                               (line   11)
+ * Tasking restrictions:                  RM D 6 9-10 Preemptive Abort.
+                                                              (line   18)
  * Test cases:                            Pragma Test_Case.   (line    6)
+ * Test_Case:                             Aspect Test_Case.   (line    6)
  * testing for:                           Attribute Has_Access_Values.
                                                               (line    6)
  * testing for <1>:                       Attribute Has_Discriminants.
*************** Index
*** 28976,28982 ****
                                                               (line    6)
  * testing for <4>:                       Ada Exceptions Last_Chance_Handler a-elchha ads.
                                                               (line    6)
- * Test_Case:                             Aspect Test_Case.   (line    6)
  * Text_IO:                               Ada Strings Unbounded Text_IO a-suteio ads.
                                                               (line    6)
  * Text_IO <1>:                           Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads.
--- 28978,28983 ----
*************** Index
*** 28992,29001 ****
                                                               (line    6)
  * Text_IO resetting standard files:      Ada Text_IO Reset_Standard_Files a-tirsfi ads.
                                                               (line    6)
- * Threads:                               GNAT Threads g-thread ads.
-                                                              (line    6)
  * Thread_Local_Storage:                  Aspect Thread_Local_Storage.
                                                               (line    6)
  * Time:                                  RM D 7 21 Tasking Restrictions.
                                                               (line   14)
  * Time <1>:                              GNAT Calendar Time_IO g-catiio ads.
--- 28993,29002 ----
                                                               (line    6)
  * Text_IO resetting standard files:      Ada Text_IO Reset_Standard_Files a-tirsfi ads.
                                                               (line    6)
  * Thread_Local_Storage:                  Aspect Thread_Local_Storage.
                                                               (line    6)
+ * Threads:                               GNAT Threads g-thread ads.
+                                                              (line    6)
  * Time:                                  RM D 7 21 Tasking Restrictions.
                                                               (line   14)
  * Time <1>:                              GNAT Calendar Time_IO g-catiio ads.
*************** Index
*** 29016,29025 ****
                                                               (line    6)
  * trampoline:                            No_Implicit_Dynamic_Code.
                                                               (line    6)
- * TypeCode:                              Attribute TypeCode. (line    6)
  * Type_Class:                            Attribute Type_Class.
                                                               (line    6)
  * Type_Key:                              Attribute Type_Key. (line    6)
  * typographical:                         Conventions.        (line    6)
  * Typographical conventions:             Conventions.        (line    6)
  * Unbounded_String:                      Text_IO Facilities for Unbounded Strings.
--- 29017,29026 ----
                                                               (line    6)
  * trampoline:                            No_Implicit_Dynamic_Code.
                                                               (line    6)
  * Type_Class:                            Attribute Type_Class.
                                                               (line    6)
  * Type_Key:                              Attribute Type_Key. (line    6)
+ * TypeCode:                              Attribute TypeCode. (line    6)
  * typographical:                         Conventions.        (line    6)
  * Typographical conventions:             Conventions.        (line    6)
  * Unbounded_String:                      Text_IO Facilities for Unbounded Strings.
*************** Tag Table:
*** 29178,32384 ****
  Node: Top326
  Ref: gnat_rm doc554
  Ref: 0554
! Node: About This Guide35039
! Ref: gnat_rm/about_this_guide doc35147
! Ref: 235147
! Ref: gnat_rm/about_this_guide about-this-guide35147
! Ref: 335147
! Ref: gnat_rm/about_this_guide gnat-reference-manual35147
! Ref: 435147
! Ref: gnat_rm/about_this_guide id135147
! Ref: 535147
! Node: What This Reference Manual Contains36541
! Ref: gnat_rm/about_this_guide what-this-reference-manual-contains36650
! Ref: 636650
! Node: Conventions40323
! Ref: gnat_rm/about_this_guide conventions40460
! Ref: 1840460
! Node: Related Information41031
! Ref: gnat_rm/about_this_guide related-information41124
! Ref: 1941124
! Node: Implementation Defined Pragmas42418
! Ref: gnat_rm/implementation_defined_pragmas doc42553
! Ref: 1a42553
! Ref: gnat_rm/implementation_defined_pragmas id142553
! Ref: 1b42553
! Ref: gnat_rm/implementation_defined_pragmas implementation-defined-pragmas42553
! Ref: 742553
! Node: Pragma Abort_Defer48973
! Ref: gnat_rm/implementation_defined_pragmas pragma-abort-defer49089
! Ref: 1c49089
! Node: Pragma Abstract_State49960
! Ref: gnat_rm/implementation_defined_pragmas id250098
! Ref: 1d50098
! Ref: gnat_rm/implementation_defined_pragmas pragma-abstract-state50098
! Ref: 1e50098
! Node: Pragma Ada_8351336
! Ref: gnat_rm/implementation_defined_pragmas pragma-ada-8351469
! Ref: 1f51469
! Node: Pragma Ada_9552560
! Ref: gnat_rm/implementation_defined_pragmas pragma-ada-9552685
! Ref: 2052685
! Node: Pragma Ada_0553203
! Ref: gnat_rm/implementation_defined_pragmas pragma-ada-0553330
! Ref: 2153330
! Node: Pragma Ada_200554356
! Ref: gnat_rm/implementation_defined_pragmas pragma-ada-200554483
! Ref: 2254483
! Node: Pragma Ada_1254650
! Ref: gnat_rm/implementation_defined_pragmas pragma-ada-1254779
! Ref: 2354779
! Node: Pragma Ada_201255954
! Ref: gnat_rm/implementation_defined_pragmas pragma-ada-201256083
! Ref: 2456083
! Node: Pragma Ada_202256250
! Ref: gnat_rm/implementation_defined_pragmas pragma-ada-202256402
! Ref: 2556402
! Node: Pragma Aggregate_Individually_Assign57594
! Ref: gnat_rm/implementation_defined_pragmas pragma-aggregate-individually-assign57759
! Ref: 2657759
! Node: Pragma Allow_Integer_Address58166
! Ref: gnat_rm/implementation_defined_pragmas pragma-allow-integer-address58340
! Ref: 2758340
! Node: Pragma Always_Terminates59953
! Ref: gnat_rm/implementation_defined_pragmas id360106
! Ref: 2860106
! Ref: gnat_rm/implementation_defined_pragmas pragma-always-terminates60106
! Ref: 2960106
! Node: Pragma Annotate60369
! Ref: gnat_rm/implementation_defined_pragmas id460507
! Ref: 2a60507
! Ref: gnat_rm/implementation_defined_pragmas pragma-annotate60507
! Ref: 2b60507
! Node: Pragma Assert61955
! Ref: gnat_rm/implementation_defined_pragmas pragma-assert62090
! Ref: 2c62090
! Node: Pragma Assert_And_Cut64600
! Ref: gnat_rm/implementation_defined_pragmas pragma-assert-and-cut64743
! Ref: 2d64743
! Node: Pragma Assertion_Policy65555
! Ref: gnat_rm/implementation_defined_pragmas pragma-assertion-policy65698
! Ref: 2e65698
! Node: Pragma Assume69436
! Ref: gnat_rm/implementation_defined_pragmas pragma-assume69589
! Ref: 2f69589
! Node: Pragma Assume_No_Invalid_Values70568
! Ref: gnat_rm/implementation_defined_pragmas pragma-assume-no-invalid-values70718
! Ref: 3070718
! Node: Pragma Async_Readers72501
! Ref: gnat_rm/implementation_defined_pragmas id572658
! Ref: 3172658
! Ref: gnat_rm/implementation_defined_pragmas pragma-async-readers72658
! Ref: 3272658
! Node: Pragma Async_Writers72911
! Ref: gnat_rm/implementation_defined_pragmas id673064
! Ref: 3373064
! Ref: gnat_rm/implementation_defined_pragmas pragma-async-writers73064
! Ref: 3473064
! Node: Pragma Attribute_Definition73317
! Ref: gnat_rm/implementation_defined_pragmas pragma-attribute-definition73471
! Ref: 3573471
! Node: Pragma C_Pass_By_Copy74098
! Ref: gnat_rm/implementation_defined_pragmas pragma-c-pass-by-copy74244
! Ref: 3674244
! Node: Pragma Check75426
! Ref: gnat_rm/implementation_defined_pragmas pragma-check75572
! Ref: 3775572
! Node: Pragma Check_Float_Overflow76830
! Ref: gnat_rm/implementation_defined_pragmas pragma-check-float-overflow76972
! Ref: 3876972
! Node: Pragma Check_Name79031
! Ref: gnat_rm/implementation_defined_pragmas pragma-check-name79180
! Ref: 3979180
! Node: Pragma Check_Policy80300
! Ref: gnat_rm/implementation_defined_pragmas pragma-check-policy80436
! Ref: 3a80436
! Node: Pragma Comment83253
! Ref: gnat_rm/implementation_defined_pragmas pragma-comment83392
! Ref: 3b83392
! Node: Pragma Common_Object83910
! Ref: gnat_rm/implementation_defined_pragmas pragma-common-object84055
! Ref: 3c84055
! Node: Pragma Compile_Time_Error84938
! Ref: gnat_rm/implementation_defined_pragmas compile-time-error85096
! Ref: 3d85096
! Ref: gnat_rm/implementation_defined_pragmas pragma-compile-time-error85096
! Ref: 3e85096
! Node: Pragma Compile_Time_Warning86166
! Ref: gnat_rm/implementation_defined_pragmas pragma-compile-time-warning86334
! Ref: 3f86334
! Node: Pragma Complete_Representation87575
! Ref: gnat_rm/implementation_defined_pragmas pragma-complete-representation87747
! Ref: 4087747
! Node: Pragma Complex_Representation88296
! Ref: gnat_rm/implementation_defined_pragmas pragma-complex-representation88467
! Ref: 4188467
! Node: Pragma Component_Alignment89223
! Ref: gnat_rm/implementation_defined_pragmas pragma-component-alignment89397
! Ref: 4289397
! Node: Pragma Constant_After_Elaboration92131
! Ref: gnat_rm/implementation_defined_pragmas id792297
! Ref: 4392297
! Ref: gnat_rm/implementation_defined_pragmas pragma-constant-after-elaboration92297
! Ref: 4492297
! Node: Pragma Contract_Cases92602
! Ref: gnat_rm/implementation_defined_pragmas id892770
! Ref: 4592770
! Ref: gnat_rm/implementation_defined_pragmas pragma-contract-cases92770
! Ref: 4692770
! Node: Pragma Convention_Identifier95605
! Ref: gnat_rm/implementation_defined_pragmas pragma-convention-identifier95756
! Ref: 4795756
! Node: Pragma CPP_Class96940
! Ref: gnat_rm/implementation_defined_pragmas pragma-cpp-class97092
! Ref: 4897092
! Node: Pragma CPP_Constructor98206
! Ref: gnat_rm/implementation_defined_pragmas pragma-cpp-constructor98348
! Ref: 4a98348
! Node: Pragma CPP_Virtual100308
! Ref: gnat_rm/implementation_defined_pragmas pragma-cpp-virtual100451
! Ref: 4b100451
! Node: Pragma CPP_Vtable100921
! Ref: gnat_rm/implementation_defined_pragmas pragma-cpp-vtable101052
! Ref: 4c101052
! Node: Pragma CPU101476
! Ref: gnat_rm/implementation_defined_pragmas pragma-cpu101610
! Ref: 4d101610
! Node: Pragma Deadline_Floor101850
! Ref: gnat_rm/implementation_defined_pragmas pragma-deadline-floor101979
! Ref: 4e101979
! Node: Pragma Debug102295
! Ref: gnat_rm/implementation_defined_pragmas pragma-debug102433
! Ref: 4f102433
! Node: Pragma Debug_Policy103389
! Ref: gnat_rm/implementation_defined_pragmas pragma-debug-policy103538
! Ref: 50103538
! Node: Pragma Default_Initial_Condition103827
! Ref: gnat_rm/implementation_defined_pragmas id9103999
! Ref: 51103999
! Ref: gnat_rm/implementation_defined_pragmas pragma-default-initial-condition103999
! Ref: 52103999
! Node: Pragma Default_Scalar_Storage_Order104300
! Ref: gnat_rm/implementation_defined_pragmas pragma-default-scalar-storage-order104480
! Ref: 53104480
! Node: Pragma Default_Storage_Pool106780
! Ref: gnat_rm/implementation_defined_pragmas pragma-default-storage-pool106942
! Ref: 54106942
! Node: Pragma Depends107247
! Ref: gnat_rm/implementation_defined_pragmas id10107396
! Ref: 55107396
! Ref: gnat_rm/implementation_defined_pragmas pragma-depends107396
! Ref: 56107396
! Node: Pragma Detect_Blocking108096
! Ref: gnat_rm/implementation_defined_pragmas pragma-detect-blocking108255
! Ref: 57108255
! Node: Pragma Disable_Atomic_Synchronization108644
! Ref: gnat_rm/implementation_defined_pragmas pragma-disable-atomic-synchronization108814
! Ref: 58108814
! Node: Pragma Dispatching_Domain109776
! Ref: gnat_rm/implementation_defined_pragmas pragma-dispatching-domain109946
! Ref: 59109946
! Node: Pragma Effective_Reads110231
! Ref: gnat_rm/implementation_defined_pragmas id11110387
! Ref: 5a110387
! Ref: gnat_rm/implementation_defined_pragmas pragma-effective-reads110387
! Ref: 5b110387
! Node: Pragma Effective_Writes110648
! Ref: gnat_rm/implementation_defined_pragmas id12110804
! Ref: 5c110804
! Ref: gnat_rm/implementation_defined_pragmas pragma-effective-writes110804
! Ref: 5d110804
! Node: Pragma Elaboration_Checks111069
! Ref: gnat_rm/implementation_defined_pragmas pragma-elaboration-checks111219
! Ref: 5e111219
! Node: Pragma Eliminate112051
! Ref: gnat_rm/implementation_defined_pragmas pragma-eliminate112214
! Ref: 5f112214
! Node: Pragma Enable_Atomic_Synchronization117946
! Ref: gnat_rm/implementation_defined_pragmas pragma-enable-atomic-synchronization118108
! Ref: 60118108
! Node: Pragma Exceptional_Cases118353
! Ref: gnat_rm/implementation_defined_pragmas pragma-exceptional-cases118516
! Ref: 61118516
! Node: Pragma Exit_Cases118935
! Ref: gnat_rm/implementation_defined_pragmas pragma-exit-cases119084
! Ref: 62119084
! Node: Pragma Export_Function119545
! Ref: gnat_rm/implementation_defined_pragmas pragma-export-function119690
! Ref: 63119690
! Node: Pragma Export_Object122146
! Ref: gnat_rm/implementation_defined_pragmas pragma-export-object122297
! Ref: 64122297
! Node: Pragma Export_Procedure122968
! Ref: gnat_rm/implementation_defined_pragmas pragma-export-procedure123127
! Ref: 65123127
! Node: Pragma Export_Valued_Procedure124625
! Ref: gnat_rm/implementation_defined_pragmas pragma-export-valued-procedure124784
! Ref: 66124784
! Node: Pragma Extend_System126637
! Ref: gnat_rm/implementation_defined_pragmas pragma-extend-system126798
! Ref: 67126798
! Node: Pragma Extensions_Allowed128860
! Ref: gnat_rm/implementation_defined_pragmas id13129016
! Ref: 68129016
! Ref: gnat_rm/implementation_defined_pragmas pragma-extensions-allowed129016
! Ref: 69129016
! Node: Pragma Extensions_Visible129784
! Ref: gnat_rm/implementation_defined_pragmas id14129935
! Ref: 6c129935
! Ref: gnat_rm/implementation_defined_pragmas pragma-extensions-visible129935
! Ref: 6d129935
! Node: Pragma External130208
! Ref: gnat_rm/implementation_defined_pragmas pragma-external130361
! Ref: 6e130361
! Node: Pragma External_Name_Casing130928
! Ref: gnat_rm/implementation_defined_pragmas pragma-external-name-casing131072
! Ref: 6f131072
! Node: Pragma Fast_Math134080
! Ref: gnat_rm/implementation_defined_pragmas pragma-fast-math134231
! Ref: 70134231
! Node: Pragma Favor_Top_Level135104
! Ref: gnat_rm/implementation_defined_pragmas id15135256
! Ref: 71135256
! Ref: gnat_rm/implementation_defined_pragmas pragma-favor-top-level135256
! Ref: 72135256
! Node: Pragma Finalize_Storage_Only135935
! Ref: gnat_rm/implementation_defined_pragmas pragma-finalize-storage-only136098
! Ref: 73136098
! Node: Pragma Float_Representation136860
! Ref: gnat_rm/implementation_defined_pragmas pragma-float-representation137013
! Ref: 74137013
! Node: Pragma Ghost137868
! Ref: gnat_rm/implementation_defined_pragmas id16138006
! Ref: 75138006
! Ref: gnat_rm/implementation_defined_pragmas pragma-ghost138006
! Ref: 76138006
! Node: Pragma Global138225
! Ref: gnat_rm/implementation_defined_pragmas id17138348
! Ref: 77138348
! Ref: gnat_rm/implementation_defined_pragmas pragma-global138348
! Ref: 78138348
! Node: Pragma Ident138895
! Ref: gnat_rm/implementation_defined_pragmas pragma-ident139026
! Ref: 79139026
! Node: Pragma Ignore_Pragma139262
! Ref: gnat_rm/implementation_defined_pragmas pragma-ignore-pragma139409
! Ref: 7a139409
! Node: Pragma Implementation_Defined140138
! Ref: gnat_rm/implementation_defined_pragmas pragma-implementation-defined140291
! Ref: 7b140291
! Node: Pragma Implemented141003
! Ref: gnat_rm/implementation_defined_pragmas pragma-implemented141159
! Ref: 7c141159
! Node: Pragma Implicit_Packing142778
! Ref: gnat_rm/implementation_defined_pragmas pragma-implicit-packing142927
! Ref: 7d142927
! Node: Pragma Import_Function144750
! Ref: gnat_rm/implementation_defined_pragmas pragma-import-function144901
! Ref: 7e144901
! Node: Pragma Import_Object147014
! Ref: gnat_rm/implementation_defined_pragmas pragma-import-object147165
! Ref: 7f147165
! Node: Pragma Import_Procedure147869
! Ref: gnat_rm/implementation_defined_pragmas pragma-import-procedure148028
! Ref: 80148028
! Node: Pragma Import_Valued_Procedure148960
! Ref: gnat_rm/implementation_defined_pragmas pragma-import-valued-procedure149117
! Ref: 81149117
! Node: Pragma Independent150894
! Ref: gnat_rm/implementation_defined_pragmas pragma-independent151057
! Ref: 82151057
! Node: Pragma Independent_Components151744
! Ref: gnat_rm/implementation_defined_pragmas pragma-independent-components151901
! Ref: 83151901
! Node: Pragma Initial_Condition152563
! Ref: gnat_rm/implementation_defined_pragmas id18152727
! Ref: 84152727
! Ref: gnat_rm/implementation_defined_pragmas pragma-initial-condition152727
! Ref: 85152727
! Node: Pragma Initialize_Scalars152985
! Ref: gnat_rm/implementation_defined_pragmas pragma-initialize-scalars153138
! Ref: 86153138
! Node: Pragma Initializes156822
! Ref: gnat_rm/implementation_defined_pragmas id19156971
! Ref: 87156971
! Ref: gnat_rm/implementation_defined_pragmas pragma-initializes156971
! Ref: 88156971
! Node: Pragma Inline_Always157457
! Ref: gnat_rm/implementation_defined_pragmas id20157602
! Ref: 89157602
! Ref: gnat_rm/implementation_defined_pragmas pragma-inline-always157602
! Ref: 8a157602
! Node: Pragma Inline_Generic158242
! Ref: gnat_rm/implementation_defined_pragmas pragma-inline-generic158385
! Ref: 8b158385
! Node: Pragma Interface158767
! Ref: gnat_rm/implementation_defined_pragmas pragma-interface158911
! Ref: 8c158911
! Node: Pragma Interface_Name159884
! Ref: gnat_rm/implementation_defined_pragmas pragma-interface-name160031
! Ref: 8d160031
! Node: Pragma Interrupt_Handler160549
! Ref: gnat_rm/implementation_defined_pragmas pragma-interrupt-handler160702
! Ref: 8e160702
! Node: Pragma Interrupt_State160958
! Ref: gnat_rm/implementation_defined_pragmas pragma-interrupt-state161125
! Ref: 8f161125
! Node: Pragma Interrupts_System_By_Default164325
! Ref: gnat_rm/implementation_defined_pragmas pragma-interrupts-system-by-default164484
! Ref: 90164484
! Node: Pragma Invariant164746
! Ref: gnat_rm/implementation_defined_pragmas id21164900
! Ref: 91164900
! Ref: gnat_rm/implementation_defined_pragmas pragma-invariant164900
! Ref: 92164900
! Node: Pragma Keep_Names166556
! Ref: gnat_rm/implementation_defined_pragmas pragma-keep-names166689
! Ref: 93166689
! Node: Pragma License167305
! Ref: gnat_rm/implementation_defined_pragmas pragma-license167438
! Ref: 94167438
! Node: Pragma Link_With170536
! Ref: gnat_rm/implementation_defined_pragmas pragma-link-with170671
! Ref: 95170671
! Node: Pragma Linker_Alias171312
! Ref: gnat_rm/implementation_defined_pragmas pragma-linker-alias171458
! Ref: 96171458
! Node: Pragma Linker_Constructor172737
! Ref: gnat_rm/implementation_defined_pragmas pragma-linker-constructor172891
! Ref: 97172891
! Node: Pragma Linker_Destructor174122
! Ref: gnat_rm/implementation_defined_pragmas pragma-linker-destructor174278
! Ref: 98174278
! Node: Pragma Linker_Section175059
! Ref: gnat_rm/implementation_defined_pragmas id22175206
! Ref: 99175206
! Ref: gnat_rm/implementation_defined_pragmas pragma-linker-section175206
! Ref: 9a175206
! Node: Pragma Lock_Free178257
! Ref: gnat_rm/implementation_defined_pragmas id23178401
! Ref: 9b178401
! Ref: gnat_rm/implementation_defined_pragmas pragma-lock-free178401
! Ref: 9c178401
! Node: Pragma Loop_Invariant179783
! Ref: gnat_rm/implementation_defined_pragmas pragma-loop-invariant179926
! Ref: 9d179926
! Node: Pragma Loop_Optimize181118
! Ref: gnat_rm/implementation_defined_pragmas pragma-loop-optimize181264
! Ref: 9e181264
! Node: Pragma Loop_Variant183006
! Ref: gnat_rm/implementation_defined_pragmas pragma-loop-variant183155
! Ref: 9f183155
! Node: Pragma Machine_Attribute184964
! Ref: gnat_rm/implementation_defined_pragmas pragma-machine-attribute185104
! Ref: a0185104
! Node: Pragma Main186075
! Ref: gnat_rm/implementation_defined_pragmas pragma-main186215
! Ref: a1186215
! Node: Pragma Main_Storage186653
! Ref: gnat_rm/implementation_defined_pragmas pragma-main-storage186792
! Ref: a2186792
! Node: Pragma Max_Queue_Length187199
! Ref: gnat_rm/implementation_defined_pragmas id24187341
! Ref: a3187341
! Ref: gnat_rm/implementation_defined_pragmas pragma-max-queue-length187341
! Ref: a4187341
! Node: Pragma No_Body187768
! Ref: gnat_rm/implementation_defined_pragmas pragma-no-body187908
! Ref: a5187908
! Node: Pragma No_Caching188691
! Ref: gnat_rm/implementation_defined_pragmas id25188838
! Ref: a6188838
! Ref: gnat_rm/implementation_defined_pragmas pragma-no-caching188838
! Ref: a7188838
! Node: Pragma No_Component_Reordering189081
! Ref: gnat_rm/implementation_defined_pragmas pragma-no-component-reordering189244
! Ref: a8189244
! Node: Pragma No_Elaboration_Code_All189904
! Ref: gnat_rm/implementation_defined_pragmas id26190077
! Ref: a9190077
! Ref: gnat_rm/implementation_defined_pragmas pragma-no-elaboration-code-all190077
! Ref: aa190077
! Node: Pragma No_Heap_Finalization190739
! Ref: gnat_rm/implementation_defined_pragmas pragma-no-heap-finalization190898
! Ref: ab190898
! Node: Pragma No_Inline192050
! Ref: gnat_rm/implementation_defined_pragmas id27192194
! Ref: ac192194
! Ref: gnat_rm/implementation_defined_pragmas pragma-no-inline192194
! Ref: ad192194
! Node: Pragma No_Raise192709
! Ref: gnat_rm/implementation_defined_pragmas id28192842
! Ref: ae192842
! Ref: gnat_rm/implementation_defined_pragmas pragma-no-raise192842
! Ref: af192842
! Node: Pragma No_Return193358
! Ref: gnat_rm/implementation_defined_pragmas pragma-no-return193500
! Ref: b0193500
! Node: Pragma No_Strict_Aliasing194473
! Ref: gnat_rm/implementation_defined_pragmas pragma-no-strict-aliasing194624
! Ref: b1194624
! Node: Pragma No_Tagged_Streams195350
! Ref: gnat_rm/implementation_defined_pragmas id29195509
! Ref: b2195509
! Ref: gnat_rm/implementation_defined_pragmas pragma-no-tagged-streams195509
! Ref: b3195509
! Node: Pragma Normalize_Scalars197284
! Ref: gnat_rm/implementation_defined_pragmas pragma-normalize-scalars197436
! Ref: b4197436
! Node: Pragma Obsolescent200406
! Ref: gnat_rm/implementation_defined_pragmas id30200559
! Ref: b5200559
! Ref: gnat_rm/implementation_defined_pragmas pragma-obsolescent200559
! Ref: b6200559
! Node: Pragma Optimize_Alignment204014
! Ref: gnat_rm/implementation_defined_pragmas pragma-optimize-alignment204157
! Ref: b7204157
! Node: Pragma Ordered207668
! Ref: gnat_rm/implementation_defined_pragmas pragma-ordered207813
! Ref: b8207813
! Node: Pragma Overflow_Mode210933
! Ref: gnat_rm/implementation_defined_pragmas pragma-overflow-mode211080
! Ref: b9211080
! Node: Pragma Overriding_Renamings212418
! Ref: gnat_rm/implementation_defined_pragmas pragma-overriding-renamings212565
! Ref: ba212565
! Node: Pragma Part_Of213227
! Ref: gnat_rm/implementation_defined_pragmas id31213389
! Ref: bb213389
! Ref: gnat_rm/implementation_defined_pragmas pragma-part-of213389
! Ref: bc213389
! Node: Pragma Partition_Elaboration_Policy213635
! Ref: gnat_rm/implementation_defined_pragmas pragma-partition-elaboration-policy213784
! Ref: bd213784
! Node: Pragma Passive214160
! Ref: gnat_rm/implementation_defined_pragmas pragma-passive214316
! Ref: be214316
! Node: Pragma Persistent_BSS215174
! Ref: gnat_rm/implementation_defined_pragmas id32215306
! Ref: bf215306
! Ref: gnat_rm/implementation_defined_pragmas pragma-persistent-bss215306
! Ref: c0215306
! Node: Pragma Post216509
! Ref: gnat_rm/implementation_defined_pragmas pragma-post216647
! Ref: c1216647
! Node: Pragma Postcondition217162
! Ref: gnat_rm/implementation_defined_pragmas pragma-postcondition217296
! Ref: c2217296
! Node: Pragma Post_Class223044
! Ref: gnat_rm/implementation_defined_pragmas pragma-post-class223177
! Ref: c3223177
! Node: Pragma Pre224234
! Ref: gnat_rm/implementation_defined_pragmas pragma-pre224366
! Ref: c4224366
! Node: Pragma Precondition224876
! Ref: gnat_rm/implementation_defined_pragmas pragma-precondition225007
! Ref: c5225007
! Node: Pragma Predicate226954
! Ref: gnat_rm/implementation_defined_pragmas id33227099
! Ref: c6227099
! Ref: gnat_rm/implementation_defined_pragmas pragma-predicate227099
! Ref: c7227099
! Node: Pragma Predicate_Failure228855
! Ref: gnat_rm/implementation_defined_pragmas pragma-predicate-failure229016
! Ref: c8229016
! Node: Pragma Preelaborable_Initialization229373
! Ref: gnat_rm/implementation_defined_pragmas pragma-preelaborable-initialization229550
! Ref: c9229550
! Node: Pragma Prefix_Exception_Messages229868
! Ref: gnat_rm/implementation_defined_pragmas pragma-prefix-exception-messages230037
! Ref: ca230037
! Node: Pragma Pre_Class230958
! Ref: gnat_rm/implementation_defined_pragmas pragma-pre-class231128
! Ref: cb231128
! Node: Pragma Priority_Specific_Dispatching232176
! Ref: gnat_rm/implementation_defined_pragmas pragma-priority-specific-dispatching232328
! Ref: cc232328
! Node: Pragma Profile232927
! Ref: gnat_rm/implementation_defined_pragmas pragma-profile233086
! Ref: cd233086
! Node: Pragma Profile_Warnings240023
! Ref: gnat_rm/implementation_defined_pragmas pragma-profile-warnings240173
! Ref: ce240173
! Node: Pragma Propagate_Exceptions240612
! Ref: gnat_rm/implementation_defined_pragmas pragma-propagate-exceptions240778
! Ref: cf240778
! Node: Pragma Provide_Shift_Operators241176
! Ref: gnat_rm/implementation_defined_pragmas pragma-provide-shift-operators241338
! Ref: d0241338
! Node: Pragma Psect_Object241901
! Ref: gnat_rm/implementation_defined_pragmas pragma-psect-object242056
! Ref: d1242056
! Node: Pragma Pure_Function242409
! Ref: gnat_rm/implementation_defined_pragmas id34242549
! Ref: d2242549
! Ref: gnat_rm/implementation_defined_pragmas pragma-pure-function242549
! Ref: d3242549
! Node: Pragma Rational245595
! Ref: gnat_rm/implementation_defined_pragmas pragma-rational245732
! Ref: d4245732
! Node: Pragma Ravenscar245948
! Ref: gnat_rm/implementation_defined_pragmas pragma-ravenscar246087
! Ref: d5246087
! Node: Pragma Refined_Depends246378
! Ref: gnat_rm/implementation_defined_pragmas id35246523
! Ref: d6246523
! Ref: gnat_rm/implementation_defined_pragmas pragma-refined-depends246523
! Ref: d7246523
! Node: Pragma Refined_Global247257
! Ref: gnat_rm/implementation_defined_pragmas id36247405
! Ref: d8247405
! Ref: gnat_rm/implementation_defined_pragmas pragma-refined-global247405
! Ref: d9247405
! Node: Pragma Refined_Post247986
! Ref: gnat_rm/implementation_defined_pragmas id37248132
! Ref: da248132
! Ref: gnat_rm/implementation_defined_pragmas pragma-refined-post248132
! Ref: db248132
! Node: Pragma Refined_State248372
! Ref: gnat_rm/implementation_defined_pragmas id38248521
! Ref: dc248521
! Ref: gnat_rm/implementation_defined_pragmas pragma-refined-state248521
! Ref: dd248521
! Node: Pragma Relative_Deadline249046
! Ref: gnat_rm/implementation_defined_pragmas pragma-relative-deadline249201
! Ref: de249201
! Node: Pragma Remote_Access_Type249495
! Ref: gnat_rm/implementation_defined_pragmas id39249650
! Ref: df249650
! Ref: gnat_rm/implementation_defined_pragmas pragma-remote-access-type249650
! Ref: e0249650
! Node: Pragma Rename_Pragma250528
! Ref: gnat_rm/implementation_defined_pragmas pragma-rename-pragma250685
! Ref: e1250685
! Node: Pragma Restricted_Run_Time251848
! Ref: gnat_rm/implementation_defined_pragmas pragma-restricted-run-time252007
! Ref: e2252007
! Node: Pragma Restriction_Warnings252333
! Ref: gnat_rm/implementation_defined_pragmas pragma-restriction-warnings252489
! Ref: e3252489
! Node: Pragma Reviewable253777
! Ref: gnat_rm/implementation_defined_pragmas pragma-reviewable253934
! Ref: e4253934
! Node: Pragma Secondary_Stack_Size256530
! Ref: gnat_rm/implementation_defined_pragmas id40256680
! Ref: e5256680
! Ref: gnat_rm/implementation_defined_pragmas pragma-secondary-stack-size256680
! Ref: e6256680
! Node: Pragma Share_Generic258156
! Ref: gnat_rm/implementation_defined_pragmas pragma-share-generic258302
! Ref: e7258302
! Node: Pragma Shared258694
! Ref: gnat_rm/implementation_defined_pragmas id41258840
! Ref: e8258840
! Ref: gnat_rm/implementation_defined_pragmas pragma-shared258840
! Ref: e9258840
! Node: Pragma Short_Circuit_And_Or258995
! Ref: gnat_rm/implementation_defined_pragmas pragma-short-circuit-and-or259145
! Ref: ea259145
! Node: Pragma Short_Descriptors259799
! Ref: gnat_rm/implementation_defined_pragmas pragma-short-descriptors259955
! Ref: eb259955
! Node: Pragma Side_Effects260197
! Ref: gnat_rm/implementation_defined_pragmas id42260357
! Ref: ec260357
! Ref: gnat_rm/implementation_defined_pragmas pragma-side-effects260357
! Ref: ed260357
! Node: Pragma Simple_Storage_Pool_Type260604
! Ref: gnat_rm/implementation_defined_pragmas id43260763
! Ref: ee260763
! Ref: gnat_rm/implementation_defined_pragmas pragma-simple-storage-pool-type260763
! Ref: ef260763
! Node: Pragma Source_File_Name263053
! Ref: gnat_rm/implementation_defined_pragmas id44263224
! Ref: f1263224
! Ref: gnat_rm/implementation_defined_pragmas pragma-source-file-name263224
! Ref: f2263224
! Node: Pragma Source_File_Name_Project266699
! Ref: gnat_rm/implementation_defined_pragmas id45266862
! Ref: f4266862
! Ref: gnat_rm/implementation_defined_pragmas pragma-source-file-name-project266862
! Ref: f3266862
! Node: Pragma Source_Reference267637
! Ref: gnat_rm/implementation_defined_pragmas pragma-source-reference267794
! Ref: f5267794
! Node: Pragma SPARK_Mode268639
! Ref: gnat_rm/implementation_defined_pragmas id46268798
! Ref: f6268798
! Ref: gnat_rm/implementation_defined_pragmas pragma-spark-mode268798
! Ref: f7268798
! Node: Pragma Static_Elaboration_Desired270815
! Ref: gnat_rm/implementation_defined_pragmas pragma-static-elaboration-desired270972
! Ref: f8270972
! Node: Pragma Stream_Convert271982
! Ref: gnat_rm/implementation_defined_pragmas pragma-stream-convert272141
! Ref: f9272141
! Node: Pragma Style_Checks275310
! Ref: gnat_rm/implementation_defined_pragmas pragma-style-checks275461
! Ref: fa275461
! Node: Pragma Subprogram_Variant279761
! Ref: gnat_rm/implementation_defined_pragmas pragma-subprogram-variant279906
! Ref: fb279906
! Node: Pragma Subtitle280662
! Ref: gnat_rm/implementation_defined_pragmas pragma-subtitle280803
! Ref: fc280803
! Node: Pragma Suppress281005
! Ref: gnat_rm/implementation_defined_pragmas pragma-suppress281140
! Ref: fd281140
! Node: Pragma Suppress_All284011
! Ref: gnat_rm/implementation_defined_pragmas pragma-suppress-all284157
! Ref: fe284157
! Node: Pragma Suppress_Debug_Info284699
! Ref: gnat_rm/implementation_defined_pragmas id47284865
! Ref: ff284865
! Ref: gnat_rm/implementation_defined_pragmas pragma-suppress-debug-info284865
! Ref: 100284865
! Node: Pragma Suppress_Exception_Locations285197
! Ref: gnat_rm/implementation_defined_pragmas pragma-suppress-exception-locations285374
! Ref: 101285374
! Node: Pragma Suppress_Initialization286305
! Ref: gnat_rm/implementation_defined_pragmas id48286472
! Ref: 102286472
! Ref: gnat_rm/implementation_defined_pragmas pragma-suppress-initialization286472
! Ref: 103286472
! Node: Pragma Task_Name288048
! Ref: gnat_rm/implementation_defined_pragmas pragma-task-name288199
! Ref: 104288199
! Node: Pragma Task_Storage289778
! Ref: gnat_rm/implementation_defined_pragmas pragma-task-storage289915
! Ref: 105289915
! Node: Pragma Test_Case290450
! Ref: gnat_rm/implementation_defined_pragmas id49290598
! Ref: 106290598
! Ref: gnat_rm/implementation_defined_pragmas pragma-test-case290598
! Ref: 107290598
! Node: Pragma Thread_Local_Storage292692
! Ref: gnat_rm/implementation_defined_pragmas id50292838
! Ref: 108292838
! Ref: gnat_rm/implementation_defined_pragmas pragma-thread-local-storage292838
! Ref: 109292838
! Node: Pragma Time_Slice294051
! Ref: gnat_rm/implementation_defined_pragmas pragma-time-slice294193
! Ref: 10a294193
! Node: Pragma Title294577
! Ref: gnat_rm/implementation_defined_pragmas pragma-title294713
! Ref: 10b294713
! Node: Pragma Type_Invariant295430
! Ref: gnat_rm/implementation_defined_pragmas pragma-type-invariant295576
! Ref: 10c295576
! Node: Pragma Type_Invariant_Class296116
! Ref: gnat_rm/implementation_defined_pragmas id51296272
! Ref: 10d296272
! Ref: gnat_rm/implementation_defined_pragmas pragma-type-invariant-class296272
! Ref: 10e296272
! Node: Pragma Unchecked_Union297187
! Ref: gnat_rm/implementation_defined_pragmas pragma-unchecked-union297351
! Ref: 10f297351
! Node: Pragma Unevaluated_Use_Of_Old297917
! Ref: gnat_rm/implementation_defined_pragmas pragma-unevaluated-use-of-old298083
! Ref: 110298083
! Node: Pragma User_Aspect_Definition300010
! Ref: gnat_rm/implementation_defined_pragmas pragma-user-aspect-definition300179
! Ref: 111300179
! Node: Pragma Unimplemented_Unit301578
! Ref: gnat_rm/implementation_defined_pragmas pragma-unimplemented-unit301743
! Ref: 112301743
! Node: Pragma Universal_Aliasing302301
! Ref: gnat_rm/implementation_defined_pragmas id52302454
! Ref: 113302454
! Ref: gnat_rm/implementation_defined_pragmas pragma-universal-aliasing302454
! Ref: 114302454
! Node: Pragma Unmodified302993
! Ref: gnat_rm/implementation_defined_pragmas id53303140
! Ref: 115303140
! Ref: gnat_rm/implementation_defined_pragmas pragma-unmodified303140
! Ref: 116303140
! Node: Pragma Unreferenced304218
! Ref: gnat_rm/implementation_defined_pragmas id54304367
! Ref: 117304367
! Ref: gnat_rm/implementation_defined_pragmas pragma-unreferenced304367
! Ref: 118304367
! Node: Pragma Unreferenced_Objects307045
! Ref: gnat_rm/implementation_defined_pragmas id55307208
! Ref: 119307208
! Ref: gnat_rm/implementation_defined_pragmas pragma-unreferenced-objects307208
! Ref: 11a307208
! Node: Pragma Unreserve_All_Interrupts307985
! Ref: gnat_rm/implementation_defined_pragmas pragma-unreserve-all-interrupts308146
! Ref: 11b308146
! Node: Pragma Unsuppress309651
! Ref: gnat_rm/implementation_defined_pragmas pragma-unsuppress309798
! Ref: 11c309798
! Node: Pragma Unused311068
! Ref: gnat_rm/implementation_defined_pragmas id56311204
! Ref: 11d311204
! Ref: gnat_rm/implementation_defined_pragmas pragma-unused311204
! Ref: 11e311204
! Node: Pragma Use_VADS_Size312380
! Ref: gnat_rm/implementation_defined_pragmas pragma-use-vads-size312521
! Ref: 11f312521
! Node: Pragma Validity_Checks313082
! Ref: gnat_rm/implementation_defined_pragmas pragma-validity-checks313225
! Ref: 120313225
! Node: Pragma Volatile314996
! Ref: gnat_rm/implementation_defined_pragmas id57315146
! Ref: 121315146
! Ref: gnat_rm/implementation_defined_pragmas pragma-volatile315146
! Ref: 122315146
! Node: Pragma Volatile_Full_Access315616
! Ref: gnat_rm/implementation_defined_pragmas id58315768
! Ref: 123315768
! Ref: gnat_rm/implementation_defined_pragmas pragma-volatile-full-access315768
! Ref: 124315768
! Node: Pragma Volatile_Function316836
! Ref: gnat_rm/implementation_defined_pragmas id59316996
! Ref: 125316996
! Ref: gnat_rm/implementation_defined_pragmas pragma-volatile-function316996
! Ref: 126316996
! Node: Pragma Warning_As_Error317267
! Ref: gnat_rm/implementation_defined_pragmas pragma-warning-as-error317415
! Ref: 127317415
! Node: Pragma Warnings320787
! Ref: gnat_rm/implementation_defined_pragmas id60320931
! Ref: 129320931
! Ref: gnat_rm/implementation_defined_pragmas pragma-warnings320931
! Ref: 128320931
! Node: Pragma Weak_External328398
! Ref: gnat_rm/implementation_defined_pragmas pragma-weak-external328549
! Ref: 12a328549
! Node: Pragma Wide_Character_Encoding330230
! Ref: gnat_rm/implementation_defined_pragmas pragma-wide-character-encoding330357
! Ref: 12b330357
! Node: Implementation Defined Aspects331489
! Ref: gnat_rm/implementation_defined_aspects doc331641
! Ref: 12c331641
! Ref: gnat_rm/implementation_defined_aspects id1331641
! Ref: 12d331641
! Ref: gnat_rm/implementation_defined_aspects implementation-defined-aspects331641
! Ref: 12e331641
! Node: Aspect Abstract_State335091
! Ref: gnat_rm/implementation_defined_aspects aspect-abstract-state335213
! Ref: 12f335213
! Node: Aspect Always_Terminates335329
! Ref: gnat_rm/implementation_defined_aspects aspect-always-terminates335475
! Ref: 130335475
! Node: Aspect Annotate335608
! Ref: gnat_rm/implementation_defined_aspects aspect-annotate335753
! Ref: 131335753
! Node: Aspect Async_Readers336224
! Ref: gnat_rm/implementation_defined_aspects aspect-async-readers336365
! Ref: 132336365
! Node: Aspect Async_Writers336486
! Ref: gnat_rm/implementation_defined_aspects aspect-async-writers336645
! Ref: 133336645
! Node: Aspect Constant_After_Elaboration336766
! Ref: gnat_rm/implementation_defined_aspects aspect-constant-after-elaboration336926
! Ref: 134336926
! Node: Aspect Contract_Cases337078
! Ref: gnat_rm/implementation_defined_aspects aspect-contract-cases337232
! Ref: 135337232
! Node: Aspect Depends337444
! Ref: gnat_rm/implementation_defined_aspects aspect-depends337597
! Ref: 136337597
! Node: Aspect Default_Initial_Condition337692
! Ref: gnat_rm/implementation_defined_aspects aspect-default-initial-condition337840
! Ref: 137337840
! Node: Aspect Dimension337989
! Ref: gnat_rm/implementation_defined_aspects aspect-dimension338146
! Ref: 138338146
! Node: Aspect Dimension_System339368
! Ref: gnat_rm/implementation_defined_aspects aspect-dimension-system339518
! Ref: 139339518
! Node: Aspect Disable_Controlled342068
! Ref: gnat_rm/implementation_defined_aspects aspect-disable-controlled342224
! Ref: 13a342224
! Node: Aspect Effective_Reads342665
! Ref: gnat_rm/implementation_defined_aspects aspect-effective-reads342821
! Ref: 13b342821
! Node: Aspect Effective_Writes342942
! Ref: gnat_rm/implementation_defined_aspects aspect-effective-writes343097
! Ref: 13c343097
! Node: Aspect Exceptional_Cases343221
! Ref: gnat_rm/implementation_defined_aspects aspect-exceptional-cases343371
! Ref: 13d343371
! Node: Aspect Exit_Cases343789
! Ref: gnat_rm/implementation_defined_aspects aspect-exit-cases343941
! Ref: 13e343941
! Node: Aspect Extensions_Visible344352
! Ref: gnat_rm/implementation_defined_aspects aspect-extensions-visible344502
! Ref: 13f344502
! Node: Aspect Favor_Top_Level344632
! Ref: gnat_rm/implementation_defined_aspects aspect-favor-top-level344777
! Ref: 140344777
! Node: Aspect Ghost344906
! Ref: gnat_rm/implementation_defined_aspects aspect-ghost345048
! Ref: 141345048
! Node: Aspect Ghost_Predicate345139
! Ref: gnat_rm/implementation_defined_aspects aspect-ghost-predicate345272
! Ref: 142345272
! Node: Aspect Global345602
! Ref: gnat_rm/implementation_defined_aspects aspect-global345747
! Ref: 143345747
! Node: Aspect Initial_Condition345841
! Ref: gnat_rm/implementation_defined_aspects aspect-initial-condition345982
! Ref: 144345982
! Node: Aspect Initializes346109
! Ref: gnat_rm/implementation_defined_aspects aspect-initializes346257
! Ref: 145346257
! Node: Aspect Inline_Always346366
! Ref: gnat_rm/implementation_defined_aspects aspect-inline-always346506
! Ref: 146346506
! Node: Aspect Invariant346629
! Ref: gnat_rm/implementation_defined_aspects aspect-invariant346775
! Ref: 147346775
! Node: Aspect Invariantâ€™Class347027
! Ref: gnat_rm/implementation_defined_aspects aspect-invariant-class347168
! Ref: 148347168
! Node: Aspect Iterable347452
! Ref: gnat_rm/implementation_defined_aspects aspect-iterable347598
! Ref: 149347598
! Node: Aspect Linker_Section350205
! Ref: gnat_rm/implementation_defined_aspects aspect-linker-section350352
! Ref: 14a350352
! Node: Aspect Local_Restrictions350470
! Ref: gnat_rm/implementation_defined_aspects aspect-local-restrictions350618
! Ref: 14b350618
! Node: Aspect Lock_Free353364
! Ref: gnat_rm/implementation_defined_aspects aspect-lock-free353514
! Ref: 14c353514
! Node: Aspect Max_Queue_Length353625
! Ref: gnat_rm/implementation_defined_aspects aspect-max-queue-length353767
! Ref: 14d353767
! Node: Aspect No_Caching353891
! Ref: gnat_rm/implementation_defined_aspects aspect-no-caching354047
! Ref: 14e354047
! Node: Aspect No_Elaboration_Code_All354161
! Ref: gnat_rm/implementation_defined_aspects aspect-no-elaboration-code-all354310
! Ref: 14f354310
! Node: Aspect No_Inline354475
! Ref: gnat_rm/implementation_defined_aspects aspect-no-inline354622
! Ref: 150354622
! Node: Aspect No_Raise354733
! Ref: gnat_rm/implementation_defined_aspects aspect-no-raise354874
! Ref: 151354874
! Node: Aspect No_Tagged_Streams354982
! Ref: gnat_rm/implementation_defined_aspects aspect-no-tagged-streams355127
! Ref: 152355127
! Node: Aspect No_Task_Parts355356
! Ref: gnat_rm/implementation_defined_aspects aspect-no-task-parts355504
! Ref: 153355504
! Node: Aspect Object_Size356010
! Ref: gnat_rm/implementation_defined_aspects aspect-object-size356152
! Ref: 154356152
! Node: Aspect Obsolescent356265
! Ref: gnat_rm/implementation_defined_aspects aspect-obsolescent356401
! Ref: 156356401
! Node: Aspect Part_Of356629
! Ref: gnat_rm/implementation_defined_aspects aspect-part-of356768
! Ref: 157356768
! Node: Aspect Persistent_BSS356865
! Ref: gnat_rm/implementation_defined_aspects aspect-persistent-bss357002
! Ref: 158357002
! Node: Aspect Predicate357128
! Ref: gnat_rm/implementation_defined_aspects aspect-predicate357271
! Ref: 159357271
! Node: Aspect Pure_Function357660
! Ref: gnat_rm/implementation_defined_aspects aspect-pure-function357804
! Ref: 15a357804
! Node: Aspect Refined_Depends357927
! Ref: gnat_rm/implementation_defined_aspects aspect-refined-depends358076
! Ref: 15b358076
! Node: Aspect Refined_Global358197
! Ref: gnat_rm/implementation_defined_aspects aspect-refined-global358345
! Ref: 15c358345
! Node: Aspect Refined_Post358463
! Ref: gnat_rm/implementation_defined_aspects aspect-refined-post358609
! Ref: 15d358609
! Node: Aspect Refined_State358721
! Ref: gnat_rm/implementation_defined_aspects aspect-refined-state358875
! Ref: 15e358875
! Node: Aspect Relaxed_Initialization358990
! Ref: gnat_rm/implementation_defined_aspects aspect-relaxed-initialization359150
! Ref: 15f359150
! Node: Aspect Remote_Access_Type359318
! Ref: gnat_rm/implementation_defined_aspects aspect-remote-access-type359485
! Ref: 160359485
! Node: Aspect Scalar_Storage_Order359615
! Ref: gnat_rm/implementation_defined_aspects aspect-scalar-storage-order359780
! Ref: 161359780
! Node: Aspect Secondary_Stack_Size359922
! Ref: gnat_rm/implementation_defined_aspects aspect-secondary-stack-size360075
! Ref: 163360075
! Node: Aspect Shared360211
! Ref: gnat_rm/implementation_defined_aspects aspect-shared360356
! Ref: 164360356
! Node: Aspect Side_Effects360505
! Ref: gnat_rm/implementation_defined_aspects aspect-side-effects360649
! Ref: 165360649
! Node: Aspect Simple_Storage_Pool360761
! Ref: gnat_rm/implementation_defined_aspects aspect-simple-storage-pool360923
! Ref: 166360923
! Node: Aspect Simple_Storage_Pool_Type361059
! Ref: gnat_rm/implementation_defined_aspects aspect-simple-storage-pool-type361219
! Ref: 167361219
! Node: Aspect SPARK_Mode361375
! Ref: gnat_rm/implementation_defined_aspects aspect-spark-mode361534
! Ref: 168361534
! Node: Aspect Subprogram_Variant361738
! Ref: gnat_rm/implementation_defined_aspects aspect-subprogram-variant361892
! Ref: 169361892
! Node: Aspect Suppress_Debug_Info362053
! Ref: gnat_rm/implementation_defined_aspects aspect-suppress-debug-info362220
! Ref: 16a362220
! Node: Aspect Suppress_Initialization362362
! Ref: gnat_rm/implementation_defined_aspects aspect-suppress-initialization362520
! Ref: 16b362520
! Node: Aspect Test_Case362674
! Ref: gnat_rm/implementation_defined_aspects aspect-test-case362833
! Ref: 16c362833
! Node: Aspect Thread_Local_Storage362937
! Ref: gnat_rm/implementation_defined_aspects aspect-thread-local-storage363091
! Ref: 16d363091
! Node: Aspect Universal_Aliasing363236
! Ref: gnat_rm/implementation_defined_aspects aspect-universal-aliasing363391
! Ref: 16e363391
! Node: Aspect Unmodified363530
! Ref: gnat_rm/implementation_defined_aspects aspect-unmodified363677
! Ref: 16f363677
! Node: Aspect Unreferenced363792
! Ref: gnat_rm/implementation_defined_aspects aspect-unreferenced363941
! Ref: 170363941
! Node: Aspect Unreferenced_Objects364226
! Ref: gnat_rm/implementation_defined_aspects aspect-unreferenced-objects364376
! Ref: 171364376
! Node: Aspect User_Aspect364521
! Ref: gnat_rm/implementation_defined_aspects aspect-user-aspect364669
! Ref: 172364669
! Node: Aspect Value_Size364997
! Ref: gnat_rm/implementation_defined_aspects aspect-value-size365145
! Ref: 173365145
! Node: Aspect Volatile_Full_Access365255
! Ref: gnat_rm/implementation_defined_aspects aspect-volatile-full-access365409
! Ref: 175365409
! Node: Aspect Volatile_Function365554
! Ref: gnat_rm/implementation_defined_aspects aspect-volatile-function365706
! Ref: 176365706
! Node: Aspect Warnings365842
! Ref: gnat_rm/implementation_defined_aspects aspect-warnings365958
! Ref: 177365958
! Node: Implementation Defined Attributes366173
! Ref: gnat_rm/implementation_defined_attributes doc366343
! Ref: 178366343
! Ref: gnat_rm/implementation_defined_attributes id1366343
! Ref: 179366343
! Ref: gnat_rm/implementation_defined_attributes implementation-defined-attributes366343
! Ref: 8366343
! Node: Attribute Abort_Signal369532
! Ref: gnat_rm/implementation_defined_attributes attribute-abort-signal369656
! Ref: 17a369656
! Node: Attribute Address_Size370091
! Ref: gnat_rm/implementation_defined_attributes attribute-address-size370243
! Ref: 17b370243
! Node: Attribute Asm_Input370624
! Ref: gnat_rm/implementation_defined_attributes attribute-asm-input370774
! Ref: 17c370774
! Node: Attribute Asm_Output371399
! Ref: gnat_rm/implementation_defined_attributes attribute-asm-output371560
! Ref: 17e371560
! Node: Attribute Atomic_Always_Lock_Free372336
! Ref: gnat_rm/implementation_defined_attributes attribute-atomic-always-lock-free372491
! Ref: 17f372491
! Node: Attribute Bit372734
! Ref: gnat_rm/implementation_defined_attributes attribute-bit372891
! Ref: 180372891
! Node: Attribute Bit_Position373976
! Ref: gnat_rm/implementation_defined_attributes attribute-bit-position374122
! Ref: 181374122
! Node: Attribute Code_Address374572
! Ref: gnat_rm/implementation_defined_attributes attribute-code-address374731
! Ref: 182374731
! Node: Attribute Compiler_Version376065
! Ref: gnat_rm/implementation_defined_attributes attribute-compiler-version376223
! Ref: 183376223
! Node: Attribute Constrained376493
! Ref: gnat_rm/implementation_defined_attributes attribute-constrained376656
! Ref: 184376656
! Node: Attribute Default_Bit_Order377130
! Ref: gnat_rm/implementation_defined_attributes attribute-default-bit-order377305
! Ref: 185377305
! Node: Attribute Default_Scalar_Storage_Order377677
! Ref: gnat_rm/implementation_defined_attributes attribute-default-scalar-storage-order377846
! Ref: 186377846
! Node: Attribute Deref378267
! Ref: gnat_rm/implementation_defined_attributes attribute-deref378434
! Ref: 187378434
! Node: Attribute Descriptor_Size378864
! Ref: gnat_rm/implementation_defined_attributes attribute-descriptor-size379013
! Ref: 188379013
! Node: Attribute Elaborated380015
! Ref: gnat_rm/implementation_defined_attributes attribute-elaborated380168
! Ref: 189380168
! Node: Attribute Elab_Body380710
! Ref: gnat_rm/implementation_defined_attributes attribute-elab-body380857
! Ref: 18a380857
! Node: Attribute Elab_Spec381407
! Ref: gnat_rm/implementation_defined_attributes attribute-elab-spec381558
! Ref: 18b381558
! Node: Attribute Elab_Subp_Body382108
! Ref: gnat_rm/implementation_defined_attributes attribute-elab-subp-body382254
! Ref: 18c382254
! Node: Attribute Emax382676
! Ref: gnat_rm/implementation_defined_attributes attribute-emax382820
! Ref: 18d382820
! Node: Attribute Enabled383024
! Ref: gnat_rm/implementation_defined_attributes attribute-enabled383162
! Ref: 18e383162
! Node: Attribute Enum_Rep384284
! Ref: gnat_rm/implementation_defined_attributes attribute-enum-rep384426
! Ref: 18f384426
! Node: Attribute Enum_Val385919
! Ref: gnat_rm/implementation_defined_attributes attribute-enum-val386061
! Ref: 190386061
! Node: Attribute Epsilon386787
! Ref: gnat_rm/implementation_defined_attributes attribute-epsilon386930
! Ref: 191386930
! Node: Attribute Fast_Math387143
! Ref: gnat_rm/implementation_defined_attributes attribute-fast-math387295
! Ref: 192387295
! Node: Attribute Finalization_Size387517
! Ref: gnat_rm/implementation_defined_attributes attribute-finalization-size387673
! Ref: 193387673
! Node: Attribute Fixed_Value388287
! Ref: gnat_rm/implementation_defined_attributes attribute-fixed-value388442
! Ref: 194388442
! Node: Attribute From_Any389144
! Ref: gnat_rm/implementation_defined_attributes attribute-from-any389299
! Ref: 195389299
! Node: Attribute Has_Access_Values389476
! Ref: gnat_rm/implementation_defined_attributes attribute-has-access-values389637
! Ref: 196389637
! Node: Attribute Has_Discriminants390163
! Ref: gnat_rm/implementation_defined_attributes attribute-has-discriminants390333
! Ref: 197390333
! Node: Attribute Has_Tagged_Values390774
! Ref: gnat_rm/implementation_defined_attributes attribute-has-tagged-values390930
! Ref: 198390930
! Node: Attribute Img391460
! Ref: gnat_rm/implementation_defined_attributes attribute-img391610
! Ref: 199391610
! Node: Attribute Initialized392277
! Ref: gnat_rm/implementation_defined_attributes attribute-initialized392423
! Ref: 19a392423
! Node: Attribute Integer_Value392578
! Ref: gnat_rm/implementation_defined_attributes attribute-integer-value392734
! Ref: 19b392734
! Node: Attribute Invalid_Value393498
! Ref: gnat_rm/implementation_defined_attributes attribute-invalid-value393648
! Ref: 19c393648
! Node: Attribute Large394122
! Ref: gnat_rm/implementation_defined_attributes attribute-large394272
! Ref: 19d394272
! Node: Attribute Library_Level394479
! Ref: gnat_rm/implementation_defined_attributes attribute-library-level394626
! Ref: 19e394626
! Node: Attribute Loop_Entry395262
! Ref: gnat_rm/implementation_defined_attributes attribute-loop-entry395416
! Ref: 19f395416
! Node: Attribute Machine_Size396662
! Ref: gnat_rm/implementation_defined_attributes attribute-machine-size396811
! Ref: 1a0396811
! Node: Attribute Mantissa397011
! Ref: gnat_rm/implementation_defined_attributes attribute-mantissa397167
! Ref: 1a1397167
! Node: Attribute Maximum_Alignment397383
! Ref: gnat_rm/implementation_defined_attributes attribute-maximum-alignment397543
! Ref: 1a2397543
! Ref: gnat_rm/implementation_defined_attributes id2397543
! Ref: 1a3397543
! Node: Attribute Max_Integer_Size397884
! Ref: gnat_rm/implementation_defined_attributes attribute-max-integer-size398050
! Ref: 1a4398050
! Node: Attribute Mechanism_Code398297
! Ref: gnat_rm/implementation_defined_attributes attribute-mechanism-code398460
! Ref: 1a5398460
! Node: Attribute Null_Parameter398904
! Ref: gnat_rm/implementation_defined_attributes attribute-null-parameter399062
! Ref: 1a6399062
! Node: Attribute Object_Size399787
! Ref: gnat_rm/implementation_defined_attributes attribute-object-size399934
! Ref: 155399934
! Ref: gnat_rm/implementation_defined_attributes id3399934
! Ref: 1a7399934
! Node: Attribute Old402166
! Ref: gnat_rm/implementation_defined_attributes attribute-old402318
! Ref: 1a8402318
! Node: Attribute Passed_By_Reference402776
! Ref: gnat_rm/implementation_defined_attributes attribute-passed-by-reference402929
! Ref: 1a9402929
! Node: Attribute Pool_Address403343
! Ref: gnat_rm/implementation_defined_attributes attribute-pool-address403505
! Ref: 1aa403505
! Node: Attribute Range_Length404261
! Ref: gnat_rm/implementation_defined_attributes attribute-range-length404419
! Ref: 1ab404419
! Node: Attribute Restriction_Set404805
! Ref: gnat_rm/implementation_defined_attributes attribute-restriction-set404957
! Ref: 1ac404957
! Node: Attribute Result407431
! Ref: gnat_rm/implementation_defined_attributes attribute-result407576
! Ref: 1ad407576
! Node: Attribute Round407978
! Ref: gnat_rm/implementation_defined_attributes attribute-round408117
! Ref: 1ae408117
! Node: Attribute Safe_Emax408307
! Ref: gnat_rm/implementation_defined_attributes attribute-safe-emax408450
! Ref: 1af408450
! Node: Attribute Safe_Large408668
! Ref: gnat_rm/implementation_defined_attributes attribute-safe-large408816
! Ref: 1b0408816
! Node: Attribute Safe_Small409037
! Ref: gnat_rm/implementation_defined_attributes attribute-safe-small409196
! Ref: 1b1409196
! Node: Attribute Scalar_Storage_Order409417
! Ref: gnat_rm/implementation_defined_attributes attribute-scalar-storage-order409585
! Ref: 162409585
! Ref: gnat_rm/implementation_defined_attributes id4409585
! Ref: 1b2409585
! Node: Attribute Simple_Storage_Pool415409
! Ref: gnat_rm/implementation_defined_attributes attribute-simple-storage-pool415572
! Ref: f0415572
! Ref: gnat_rm/implementation_defined_attributes id5415572
! Ref: 1b3415572
! Node: Attribute Small418205
! Ref: gnat_rm/implementation_defined_attributes attribute-small418365
! Ref: 1b4418365
! Node: Attribute Small_Denominator418732
! Ref: gnat_rm/implementation_defined_attributes attribute-small-denominator418888
! Ref: 1b5418888
! Node: Attribute Small_Numerator419164
! Ref: gnat_rm/implementation_defined_attributes attribute-small-numerator419327
! Ref: 1b6419327
! Node: Attribute Storage_Unit419595
! Ref: gnat_rm/implementation_defined_attributes attribute-storage-unit419750
! Ref: 1b7419750
! Node: Attribute Stub_Type419934
! Ref: gnat_rm/implementation_defined_attributes attribute-stub-type420100
! Ref: 1b8420100
! Node: Attribute System_Allocator_Alignment421055
! Ref: gnat_rm/implementation_defined_attributes attribute-system-allocator-alignment421220
! Ref: 1b9421220
! Node: Attribute Target_Name421696
! Ref: gnat_rm/implementation_defined_attributes attribute-target-name421862
! Ref: 1ba421862
! Node: Attribute To_Address422237
! Ref: gnat_rm/implementation_defined_attributes attribute-to-address422383
! Ref: 1bb422383
! Node: Attribute To_Any423206
! Ref: gnat_rm/implementation_defined_attributes attribute-to-any423351
! Ref: 1bc423351
! Node: Attribute Type_Class423524
! Ref: gnat_rm/implementation_defined_attributes attribute-type-class423667
! Ref: 1bd423667
! Node: Attribute Type_Key424532
! Ref: gnat_rm/implementation_defined_attributes attribute-type-key424677
! Ref: 1be424677
! Node: Attribute TypeCode424986
! Ref: gnat_rm/implementation_defined_attributes attribute-typecode425140
! Ref: 1bf425140
! Node: Attribute Unconstrained_Array425317
! Ref: gnat_rm/implementation_defined_attributes attribute-unconstrained-array425487
! Ref: 1c0425487
! Node: Attribute Universal_Literal_String425903
! Ref: gnat_rm/implementation_defined_attributes attribute-universal-literal-string426084
! Ref: 1c1426084
! Node: Attribute Unrestricted_Access426776
! Ref: gnat_rm/implementation_defined_attributes attribute-unrestricted-access426944
! Ref: 1c2426944
! Node: Attribute Update433255
! Ref: gnat_rm/implementation_defined_attributes attribute-update433410
! Ref: 1c3433410
! Node: Attribute Valid_Value436241
! Ref: gnat_rm/implementation_defined_attributes attribute-valid-value436390
! Ref: 1c4436390
! Node: Attribute Valid_Scalars436760
! Ref: gnat_rm/implementation_defined_attributes attribute-valid-scalars436912
! Ref: 1c5436912
! Node: Attribute VADS_Size438570
! Ref: gnat_rm/implementation_defined_attributes attribute-vads-size438721
! Ref: 1c6438721
! Node: Attribute Value_Size439362
! Ref: gnat_rm/implementation_defined_attributes attribute-value-size439512
! Ref: 174439512
! Ref: gnat_rm/implementation_defined_attributes id6439512
! Ref: 1c7439512
! Node: Attribute Wchar_T_Size439757
! Ref: gnat_rm/implementation_defined_attributes attribute-wchar-t-size439907
! Ref: 1c8439907
! Node: Attribute Word_Size440211
! Ref: gnat_rm/implementation_defined_attributes attribute-word-size440332
! Ref: 1c9440332
! Node: Standard and Implementation Defined Restrictions440530
! Ref: gnat_rm/standard_and_implementation_defined_restrictions doc440691
! Ref: 1ca440691
! Ref: gnat_rm/standard_and_implementation_defined_restrictions id1440691
! Ref: 1cb440691
! Ref: gnat_rm/standard_and_implementation_defined_restrictions standard-and-implementation-defined-restrictions440691
! Ref: 9440691
! Node: Partition-Wide Restrictions441222
! Ref: gnat_rm/standard_and_implementation_defined_restrictions id2441375
! Ref: 1cc441375
! Ref: gnat_rm/standard_and_implementation_defined_restrictions partition-wide-restrictions441375
! Ref: 1cd441375
! Node: Immediate_Reclamation443761
! Ref: gnat_rm/standard_and_implementation_defined_restrictions immediate-reclamation443887
! Ref: 1ce443887
! Node: Max_Asynchronous_Select_Nesting444200
! Ref: gnat_rm/standard_and_implementation_defined_restrictions max-asynchronous-select-nesting444357
! Ref: 1cf444357
! Node: Max_Entry_Queue_Length444690
! Ref: gnat_rm/standard_and_implementation_defined_restrictions max-entry-queue-length444847
! Ref: 1d0444847
! Node: Max_Protected_Entries445543
! Ref: gnat_rm/standard_and_implementation_defined_restrictions max-protected-entries445692
! Ref: 1d1445692
! Node: Max_Select_Alternatives445977
! Ref: gnat_rm/standard_and_implementation_defined_restrictions max-select-alternatives446127
! Ref: 1d2446127
! Node: Max_Storage_At_Blocking446266
! Ref: gnat_rm/standard_and_implementation_defined_restrictions max-storage-at-blocking446411
! Ref: 1d3446411
! Node: Max_Task_Entries446669
! Ref: gnat_rm/standard_and_implementation_defined_restrictions max-task-entries446800
! Ref: 1d4446800
! Node: Max_Tasks447061
! Ref: gnat_rm/standard_and_implementation_defined_restrictions max-tasks447188
! Ref: 1d5447188
! Node: No_Abort_Statements447516
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-abort-statements447657
! Ref: 1d6447657
! Node: No_Access_Parameter_Allocators447809
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-access-parameter-allocators447962
! Ref: 1d7447962
! Node: No_Access_Subprograms448184
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-access-subprograms448331
! Ref: 1d8448331
! Node: No_Allocators448503
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-allocators448643
! Ref: 1d9448643
! Node: No_Anonymous_Allocators448784
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-anonymous-allocators448926
! Ref: 1da448926
! Node: No_Asynchronous_Control449112
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-asynchronous-control449252
! Ref: 1db449252
! Node: No_Calendar449459
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-calendar449591
! Ref: 1dc449591
! Node: No_Coextensions449739
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-coextensions449873
! Ref: 1dd449873
! Node: No_Default_Initialization450016
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-default-initialization450147
! Ref: 1de450147
! Node: No_Delay450852
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-delay450981
! Ref: 1df450981
! Node: No_Dependence451149
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-dependence451280
! Ref: 1e0451280
! Node: No_Direct_Boolean_Operators452290
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-direct-boolean-operators452424
! Ref: 1e1452424
! Node: No_Dispatch452824
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-dispatch452965
! Ref: 1e2452965
! Node: No_Dispatching_Calls453137
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-dispatching-calls453272
! Ref: 1e3453272
! Node: No_Dynamic_Attachment455368
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-attachment455513
! Ref: 1e4455513
! Node: No_Dynamic_Priorities456056
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-priorities456215
! Ref: 1e5456215
! Node: No_Entry_Calls_In_Elaboration_Code456354
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-entry-calls-in-elaboration-code456511
! Ref: 1e6456511
! Node: No_Enumeration_Maps456871
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-enumeration-maps457028
! Ref: 1e7457028
! Node: No_Exception_Handlers457254
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-exception-handlers457401
! Ref: 1e8457401
! Node: No_Exception_Propagation458274
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-exception-propagation458427
! Ref: 1e9458427
! Node: No_Exception_Registration459100
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-exception-registration459245
! Ref: 1ea459245
! Node: No_Exceptions459726
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-exceptions459862
! Ref: 1eb459862
! Node: No_Finalization460089
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-finalization460214
! Ref: 1ec460214
! Node: No_Fixed_Point461046
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-fixed-point461175
! Ref: 1ed461175
! Node: No_Floating_Point461338
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-floating-point461476
! Ref: 1ee461476
! Node: No_Implicit_Conditionals461648
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implicit-conditionals461796
! Ref: 1ef461796
! Node: No_Implicit_Dynamic_Code462431
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implicit-dynamic-code462590
! Ref: 1f0462590
! Node: No_Implicit_Heap_Allocations463811
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implicit-heap-allocations463986
! Ref: 1f1463986
! Node: No_Implicit_Protected_Object_Allocations464130
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implicit-protected-object-allocations464309
! Ref: 1f2464309
! Node: No_Implicit_Task_Allocations464497
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implicit-task-allocations464669
! Ref: 1f3464669
! Node: No_Initialize_Scalars464821
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-initialize-scalars464958
! Ref: 1f4464958
! Node: No_IO465302
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-io465430
! Ref: 1f5465430
! Node: No_Local_Allocators465648
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-local-allocators465781
! Ref: 1f6465781
! Node: No_Local_Protected_Objects465995
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-local-protected-objects466144
! Ref: 1f7466144
! Node: No_Local_Tagged_Types466327
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-local-tagged-types466479
! Ref: 1f8466479
! Node: No_Local_Timing_Events466645
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-local-timing-events466792
! Ref: 1f9466792
! Node: No_Long_Long_Integers466959
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-long-long-integers467108
! Ref: 1fa467108
! Node: No_Multiple_Elaboration467418
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-multiple-elaboration467567
! Ref: 1fb467567
! Node: No_Nested_Finalization468210
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-nested-finalization468366
! Ref: 1fc468366
! Node: No_Protected_Type_Allocators468507
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-protected-type-allocators468658
! Ref: 1fd468658
! Node: No_Protected_Types468866
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-protected-types469007
! Ref: 1fe469007
! Node: No_Recursion469183
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-recursion469309
! Ref: 1ff469309
! Node: No_Reentrancy469446
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-reentrancy469571
! Ref: 200469571
! Node: No_Relative_Delay469716
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-relative-delay469850
! Ref: 201469850
! Node: No_Requeue_Statements470078
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-requeue-statements470217
! Ref: 202470217
! Node: No_Secondary_Stack470684
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-secondary-stack470826
! Ref: 203470826
! Node: No_Select_Statements471231
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-select-statements471384
! Ref: 204471384
! Node: No_Specific_Termination_Handlers471589
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-specific-termination-handlers471750
! Ref: 205471750
! Node: No_Specification_of_Aspect471950
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-specification-of-aspect472131
! Ref: 206472131
! Node: No_Standard_Allocators_After_Elaboration472352
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-standard-allocators-after-elaboration472526
! Ref: 207472526
! Node: No_Standard_Storage_Pools472841
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-standard-storage-pools473012
! Ref: 208473012
! Node: No_Stream_Optimizations473307
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-stream-optimizations473448
! Ref: 209473448
! Node: No_Streams473881
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-streams474024
! Ref: 20a474024
! Node: No_Tagged_Type_Registration475078
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-tagged-type-registration475216
! Ref: 20b475216
! Node: No_Task_Allocators475698
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-task-allocators475855
! Ref: 20c475855
! Node: No_Task_At_Interrupt_Priority475997
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-task-at-interrupt-priority476153
! Ref: 20d476153
! Node: No_Task_Attributes_Package476455
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-task-attributes-package476610
! Ref: 20e476610
! Node: No_Task_Hierarchy477082
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-task-hierarchy477227
! Ref: 20f477227
! Node: No_Task_Termination477374
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-task-termination477503
! Ref: 210477503
! Node: No_Tasking477604
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-tasking477741
! Ref: 211477741
! Node: No_Terminate_Alternatives478061
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-terminate-alternatives478198
! Ref: 212478198
! Node: No_Unchecked_Access478335
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-access478485
! Ref: 213478485
! Node: No_Unchecked_Conversion478656
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-conversion478806
! Ref: 214478806
! Node: No_Unchecked_Deallocation479017
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-deallocation479167
! Ref: 215479167
! Node: No_Use_Of_Attribute479385
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-use-of-attribute479528
! Ref: 216479528
! Node: No_Use_Of_Entity479686
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-use-of-entity479820
! Ref: 217479820
! Node: No_Use_Of_Pragma480118
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-use-of-pragma480246
! Ref: 218480246
! Node: Pure_Barriers480398
! Ref: gnat_rm/standard_and_implementation_defined_restrictions pure-barriers480525
! Ref: 219480525
! Node: Simple_Barriers481230
! Ref: gnat_rm/standard_and_implementation_defined_restrictions simple-barriers481358
! Ref: 21a481358
! Node: Static_Priorities481957
! Ref: gnat_rm/standard_and_implementation_defined_restrictions static-priorities482091
! Ref: 21b482091
! Node: Static_Storage_Size482312
! Ref: gnat_rm/standard_and_implementation_defined_restrictions static-storage-size482422
! Ref: 21c482422
! Node: Program Unit Level Restrictions482623
! Ref: gnat_rm/standard_and_implementation_defined_restrictions id3482776
! Ref: 21d482776
! Ref: gnat_rm/standard_and_implementation_defined_restrictions program-unit-level-restrictions482776
! Ref: 21e482776
! Node: No_Elaboration_Code483535
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-elaboration-code483663
! Ref: 21f483663
! Node: No_Dynamic_Accessibility_Checks486262
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-accessibility-checks486423
! Ref: 220486423
! Node: No_Dynamic_Sized_Objects488233
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-sized-objects488389
! Ref: 221488389
! Node: No_Entry_Queue489111
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-entry-queue489275
! Ref: 222489275
! Node: No_Implementation_Aspect_Specifications489661
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implementation-aspect-specifications489829
! Ref: 223489829
! Node: No_Implementation_Attributes490123
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implementation-attributes490306
! Ref: 224490306
! Node: No_Implementation_Identifiers490584
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implementation-identifiers490753
! Ref: 225490753
! Node: No_Implementation_Pragmas491007
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implementation-pragmas491178
! Ref: 226491178
! Node: No_Implementation_Restrictions491444
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implementation-restrictions491609
! Ref: 227491609
! Node: No_Implementation_Units491974
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implementation-units492134
! Ref: 228492134
! Node: No_Implicit_Aliasing492380
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implicit-aliasing492527
! Ref: 229492527
! Node: No_Implicit_Loops493081
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implicit-loops493228
! Ref: 22a493228
! Node: No_Obsolescent_Features493964
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-obsolescent-features494109
! Ref: 22b494109
! Node: No_Wide_Characters494316
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-wide-characters494466
! Ref: 22c494466
! Node: Static_Dispatch_Tables494830
! Ref: gnat_rm/standard_and_implementation_defined_restrictions static-dispatch-tables494965
! Ref: 22d494965
! Node: SPARK_05495164
! Ref: gnat_rm/standard_and_implementation_defined_restrictions spark-05495272
! Ref: 22e495272
! Node: Implementation Advice495731
! Ref: gnat_rm/implementation_advice doc495897
! Ref: 22f495897
! Ref: gnat_rm/implementation_advice id1495897
! Ref: 230495897
! Ref: gnat_rm/implementation_advice implementation-advice495897
! Ref: a495897
! Node: RM 1 1 3 20 Error Detection501802
! Ref: gnat_rm/implementation_advice rm-1-1-3-20-error-detection501920
! Ref: 231501920
! Node: RM 1 1 3 31 Child Units502265
! Ref: gnat_rm/implementation_advice rm-1-1-3-31-child-units502418
! Ref: 232502418
! Node: RM 1 1 5 12 Bounded Errors502707
! Ref: gnat_rm/implementation_advice rm-1-1-5-12-bounded-errors502850
! Ref: 233502850
! Node: RM 2 8 16 Pragmas503189
! Ref: gnat_rm/implementation_advice id2503329
! Ref: 234503329
! Ref: gnat_rm/implementation_advice rm-2-8-16-pragmas503329
! Ref: 235503329
! Node: RM 2 8 17-19 Pragmas505010
! Ref: gnat_rm/implementation_advice rm-2-8-17-19-pragmas505161
! Ref: 236505161
! Node: RM 3 5 2 5 Alternative Character Sets505595
! Ref: gnat_rm/implementation_advice rm-3-5-2-5-alternative-character-sets505754
! Ref: 237505754
! Node: RM 3 5 4 28 Integer Types506911
! Ref: gnat_rm/implementation_advice rm-3-5-4-28-integer-types507075
! Ref: 238507075
! Node: RM 3 5 4 29 Integer Types507749
! Ref: gnat_rm/implementation_advice rm-3-5-4-29-integer-types507905
! Ref: 239507905
! Node: RM 3 5 5 8 Enumeration Values508223
! Ref: gnat_rm/implementation_advice rm-3-5-5-8-enumeration-values508377
! Ref: 23a508377
! Node: RM 3 5 7 17 Float Types508926
! Ref: gnat_rm/implementation_advice rm-3-5-7-17-float-types509090
! Ref: 23b509090
! Node: RM 3 6 2 11 Multidimensional Arrays510199
! Ref: gnat_rm/implementation_advice rm-3-6-2-11-multidimensional-arrays510363
! Ref: 23c510363
! Node: RM 9 6 30-31 Durationâ€™Small510863
! Ref: gnat_rm/implementation_advice rm-9-6-30-31-duration-small511042
! Ref: 23d511042
! Node: RM 10 2 1 12 Consistent Representation511464
! Ref: gnat_rm/implementation_advice rm-10-2-1-12-consistent-representation511642
! Ref: 23e511642
! Node: RM 11 4 1 19 Exception Information512432
! Ref: gnat_rm/implementation_advice rm-11-4-1-19-exception-information512613
! Ref: 23f512613
! Node: RM 11 5 28 Suppression of Checks513755
! Ref: gnat_rm/implementation_advice rm-11-5-28-suppression-of-checks513934
! Ref: 240513934
! Node: RM 13 1 21-24 Representation Clauses514134
! Ref: gnat_rm/implementation_advice rm-13-1-21-24-representation-clauses514303
! Ref: 241514303
! Node: RM 13 2 6-8 Packed Types515745
! Ref: gnat_rm/implementation_advice rm-13-2-6-8-packed-types515911
! Ref: 242515911
! Node: RM 13 3 14-19 Address Clauses517144
! Ref: gnat_rm/implementation_advice rm-13-3-14-19-address-clauses517305
! Ref: 243517305
! Node: RM 13 3 29-35 Alignment Clauses518440
! Ref: gnat_rm/implementation_advice rm-13-3-29-35-alignment-clauses518603
! Ref: 244518603
! Node: RM 13 3 42-43 Size Clauses519804
! Ref: gnat_rm/implementation_advice rm-13-3-42-43-size-clauses519964
! Ref: 245519964
! Node: RM 13 3 50-56 Size Clauses520429
! Ref: gnat_rm/implementation_advice rm-13-3-50-56-size-clauses520594
! Ref: 246520594
! Node: RM 13 3 71-73 Component Size Clauses521968
! Ref: gnat_rm/implementation_advice rm-13-3-71-73-component-size-clauses522154
! Ref: 247522154
! Node: RM 13 4 9-10 Enumeration Representation Clauses522962
! Ref: gnat_rm/implementation_advice rm-13-4-9-10-enumeration-representation-clauses523167
! Ref: 248523167
! Node: RM 13 5 1 17-22 Record Representation Clauses523589
! Ref: gnat_rm/implementation_advice rm-13-5-1-17-22-record-representation-clauses523794
! Ref: 249523794
! Node: RM 13 5 2 5 Storage Place Attributes525497
! Ref: gnat_rm/implementation_advice rm-13-5-2-5-storage-place-attributes525681
! Ref: 24a525681
! Node: RM 13 5 3 7-8 Bit Ordering526293
! Ref: gnat_rm/implementation_advice rm-13-5-3-7-8-bit-ordering526461
! Ref: 24b526461
! Node: RM 13 7 37 Address as Private526742
! Ref: gnat_rm/implementation_advice rm-13-7-37-address-as-private526905
! Ref: 24c526905
! Node: RM 13 7 1 16 Address Operations527046
! Ref: gnat_rm/implementation_advice rm-13-7-1-16-address-operations527217
! Ref: 24d527217
! Node: RM 13 9 14-17 Unchecked Conversion527756
! Ref: gnat_rm/implementation_advice rm-13-9-14-17-unchecked-conversion527932
! Ref: 24e527932
! Node: RM 13 11 23-25 Implicit Heap Usage529324
! Ref: gnat_rm/implementation_advice rm-13-11-23-25-implicit-heap-usage529505
! Ref: 24f529505
! Node: RM 13 11 2 17 Unchecked Deallocation530524
! Ref: gnat_rm/implementation_advice rm-13-11-2-17-unchecked-deallocation530712
! Ref: 250530712
! Node: RM 13 13 2 1 6 Stream Oriented Attributes530906
! Ref: gnat_rm/implementation_advice rm-13-13-2-1-6-stream-oriented-attributes531103
! Ref: 251531103
! Node: RM A 1 52 Names of Predefined Numeric Types532067
! Ref: gnat_rm/implementation_advice rm-a-1-52-names-of-predefined-numeric-types532263
! Ref: 252532263
! Node: RM A 3 2 49 Ada Characters Handling532701
! Ref: gnat_rm/implementation_advice rm-a-3-2-49-ada-characters-handling532899
! Ref: 253532899
! Node: RM A 4 4 106 Bounded-Length String Handling533291
! Ref: gnat_rm/implementation_advice rm-a-4-4-106-bounded-length-string-handling533485
! Ref: 254533485
! Node: RM A 5 2 46-47 Random Number Generation533764
! Ref: gnat_rm/implementation_advice rm-a-5-2-46-47-random-number-generation533949
! Ref: 255533949
! Node: RM A 10 7 23 Get_Immediate534781
! Ref: gnat_rm/implementation_advice rm-a-10-7-23-get-immediate534941
! Ref: 256534941
! Node: RM A 18 Containers535793
! Ref: gnat_rm/implementation_advice rm-a-18-containers535940
! Ref: 257535940
! Node: RM B 1 39-41 Pragma Export536571
! Ref: gnat_rm/implementation_advice rm-b-1-39-41-pragma-export536723
! Ref: 258536723
! Node: RM B 2 12-13 Package Interfaces538263
! Ref: gnat_rm/implementation_advice rm-b-2-12-13-package-interfaces538428
! Ref: 259538428
! Node: RM B 3 63-71 Interfacing with C539241
! Ref: gnat_rm/implementation_advice rm-b-3-63-71-interfacing-with-c539415
! Ref: 25a539415
! Node: RM B 4 95-98 Interfacing with COBOL541350
! Ref: gnat_rm/implementation_advice rm-b-4-95-98-interfacing-with-cobol541530
! Ref: 25b541530
! Node: RM B 5 22-26 Interfacing with Fortran542264
! Ref: gnat_rm/implementation_advice rm-b-5-22-26-interfacing-with-fortran542452
! Ref: 25c542452
! Node: RM C 1 3-5 Access to Machine Operations543540
! Ref: gnat_rm/implementation_advice rm-c-1-3-5-access-to-machine-operations543734
! Ref: 25d543734
! Node: RM C 1 10-16 Access to Machine Operations544710
! Ref: gnat_rm/implementation_advice rm-c-1-10-16-access-to-machine-operations544894
! Ref: 25e544894
! Node: RM C 3 28 Interrupt Support546164
! Ref: gnat_rm/implementation_advice rm-c-3-28-interrupt-support546352
! Ref: 25f546352
! Node: RM C 3 1 20-21 Protected Procedure Handlers546818
! Ref: gnat_rm/implementation_advice rm-c-3-1-20-21-protected-procedure-handlers546995
! Ref: 260546995
! Node: RM C 3 2 25 Package Interrupts547499
! Ref: gnat_rm/implementation_advice rm-c-3-2-25-package-interrupts547687
! Ref: 261547687
! Node: RM C 4 14 Pre-elaboration Requirements548157
! Ref: gnat_rm/implementation_advice rm-c-4-14-pre-elaboration-requirements548331
! Ref: 262548331
! Node: RM C 5 8 Pragma Discard_Names548771
! Ref: gnat_rm/implementation_advice rm-c-5-8-pragma-discard-names548954
! Ref: 263548954
! Node: RM C 7 2 30 The Package Task_Attributes549218
! Ref: gnat_rm/implementation_advice rm-c-7-2-30-the-package-task-attributes549389
! Ref: 264549389
! Node: RM D 3 17 Locking Policies550125
! Ref: gnat_rm/implementation_advice rm-d-3-17-locking-policies550299
! Ref: 265550299
! Node: RM D 4 16 Entry Queuing Policies550672
! Ref: gnat_rm/implementation_advice rm-d-4-16-entry-queuing-policies550835
! Ref: 266550835
! Node: RM D 6 9-10 Preemptive Abort551099
! Ref: gnat_rm/implementation_advice rm-d-6-9-10-preemptive-abort551266
! Ref: 267551266
! Node: RM D 7 21 Tasking Restrictions551840
! Ref: gnat_rm/implementation_advice rm-d-7-21-tasking-restrictions552002
! Ref: 268552002
! Node: RM D 8 47-49 Monotonic Time552504
! Ref: gnat_rm/implementation_advice rm-d-8-47-49-monotonic-time552684
! Ref: 269552684
! Node: RM E 5 28-29 Partition Communication Subsystem553359
! Ref: gnat_rm/implementation_advice rm-e-5-28-29-partition-communication-subsystem553529
! Ref: 26a553529
! Node: RM F 7 COBOL Support554223
! Ref: gnat_rm/implementation_advice rm-f-7-cobol-support554396
! Ref: 26b554396
! Node: RM F 1 2 Decimal Radix Support554947
! Ref: gnat_rm/implementation_advice rm-f-1-2-decimal-radix-support555087
! Ref: 26c555087
! Node: RM G Numerics555401
! Ref: gnat_rm/implementation_advice rm-g-numerics555549
! Ref: 26d555549
! Node: RM G 1 1 56-58 Complex Types556079
! Ref: gnat_rm/implementation_advice rm-g-1-1-56-58-complex-types556237
! Ref: 26e556237
! Node: RM G 1 2 49 Complex Elementary Functions559066
! Ref: gnat_rm/implementation_advice rm-g-1-2-49-complex-elementary-functions559244
! Ref: 26f559244
! Node: RM G 2 4 19 Accuracy Requirements559977
! Ref: gnat_rm/implementation_advice rm-g-2-4-19-accuracy-requirements560166
! Ref: 270560166
! Node: RM G 2 6 15 Complex Arithmetic Accuracy560781
! Ref: gnat_rm/implementation_advice rm-g-2-6-15-complex-arithmetic-accuracy560977
! Ref: 271560977
! Node: RM H 6 15/2 Pragma Partition_Elaboration_Policy561400
! Ref: gnat_rm/implementation_advice rm-h-6-15-2-pragma-partition-elaboration-policy561554
! Ref: 272561554
! Node: Implementation Defined Characteristics561936
! Ref: gnat_rm/implementation_defined_characteristics doc562075
! Ref: 273562075
! Ref: gnat_rm/implementation_defined_characteristics id1562075
! Ref: 274562075
! Ref: gnat_rm/implementation_defined_characteristics implementation-defined-characteristics562075
! Ref: b562075
! Node: Intrinsic Subprograms613774
! Ref: gnat_rm/intrinsic_subprograms doc613926
! Ref: 276613926
! Ref: gnat_rm/intrinsic_subprograms id1613926
! Ref: 277613926
! Ref: gnat_rm/intrinsic_subprograms intrinsic-subprograms613926
! Ref: c613926
! Node: Intrinsic Operators614906
! Ref: gnat_rm/intrinsic_subprograms id2615013
! Ref: 278615013
! Ref: gnat_rm/intrinsic_subprograms intrinsic-operators615013
! Ref: 279615013
! Node: Compilation_ISO_Date616012
! Ref: gnat_rm/intrinsic_subprograms compilation-iso-date616144
! Ref: 27a616144
! Ref: gnat_rm/intrinsic_subprograms id3616144
! Ref: 27b616144
! Node: Compilation_Date616565
! Ref: gnat_rm/intrinsic_subprograms compilation-date616694
! Ref: 27c616694
! Ref: gnat_rm/intrinsic_subprograms id4616694
! Ref: 27d616694
! Node: Compilation_Time616814
! Ref: gnat_rm/intrinsic_subprograms compilation-time616939
! Ref: 27e616939
! Ref: gnat_rm/intrinsic_subprograms id5616939
! Ref: 27f616939
! Node: Enclosing_Entity617346
! Ref: gnat_rm/intrinsic_subprograms enclosing-entity617476
! Ref: 280617476
! Ref: gnat_rm/intrinsic_subprograms id6617476
! Ref: 281617476
! Node: Exception_Information617897
! Ref: gnat_rm/intrinsic_subprograms exception-information618028
! Ref: 282618028
! Ref: gnat_rm/intrinsic_subprograms id7618028
! Ref: 283618028
! Node: Exception_Message618458
! Ref: gnat_rm/intrinsic_subprograms exception-message618587
! Ref: 284618587
! Ref: gnat_rm/intrinsic_subprograms id8618587
! Ref: 285618587
! Node: Exception_Name618991
! Ref: gnat_rm/intrinsic_subprograms exception-name619103
! Ref: 286619103
! Ref: gnat_rm/intrinsic_subprograms id9619103
! Ref: 287619103
! Node: File619482
! Ref: gnat_rm/intrinsic_subprograms file619581
! Ref: 288619581
! Ref: gnat_rm/intrinsic_subprograms id10619581
! Ref: 289619581
! Node: Line619913
! Ref: gnat_rm/intrinsic_subprograms id11620016
! Ref: 28a620016
! Ref: gnat_rm/intrinsic_subprograms line620016
! Ref: 28b620016
! Node: Shifts and Rotates620359
! Ref: gnat_rm/intrinsic_subprograms id12620473
! Ref: 28c620473
! Ref: gnat_rm/intrinsic_subprograms shifts-and-rotates620473
! Ref: 28d620473
! Node: Source_Location621711
! Ref: gnat_rm/intrinsic_subprograms id13621812
! Ref: 28e621812
! Ref: gnat_rm/intrinsic_subprograms source-location621812
! Ref: 28f621812
! Node: Representation Clauses and Pragmas622183
! Ref: gnat_rm/representation_clauses_and_pragmas doc622322
! Ref: 290622322
! Ref: gnat_rm/representation_clauses_and_pragmas id1622322
! Ref: 291622322
! Ref: gnat_rm/representation_clauses_and_pragmas representation-clauses-and-pragmas622322
! Ref: d622322
! Node: Alignment Clauses623508
! Ref: gnat_rm/representation_clauses_and_pragmas alignment-clauses623618
! Ref: 292623618
! Ref: gnat_rm/representation_clauses_and_pragmas id2623618
! Ref: 293623618
! Node: Size Clauses628064
! Ref: gnat_rm/representation_clauses_and_pragmas id3628203
! Ref: 294628203
! Ref: gnat_rm/representation_clauses_and_pragmas size-clauses628203
! Ref: 295628203
! Node: Storage_Size Clauses630987
! Ref: gnat_rm/representation_clauses_and_pragmas id4631139
! Ref: 296631139
! Ref: gnat_rm/representation_clauses_and_pragmas storage-size-clauses631139
! Ref: 297631139
! Node: Size of Variant Record Objects633671
! Ref: gnat_rm/representation_clauses_and_pragmas id5633832
! Ref: 298633832
! Ref: gnat_rm/representation_clauses_and_pragmas size-of-variant-record-objects633832
! Ref: 299633832
! Node: Biased Representation636944
! Ref: gnat_rm/representation_clauses_and_pragmas biased-representation637119
! Ref: 29a637119
! Ref: gnat_rm/representation_clauses_and_pragmas id6637119
! Ref: 29b637119
! Node: Value_Size and Object_Size Clauses638163
! Ref: gnat_rm/representation_clauses_and_pragmas id7638330
! Ref: 29c638330
! Ref: gnat_rm/representation_clauses_and_pragmas value-size-and-object-size-clauses638330
! Ref: 29d638330
! Node: Component_Size Clauses647988
! Ref: gnat_rm/representation_clauses_and_pragmas component-size-clauses648151
! Ref: 29e648151
! Ref: gnat_rm/representation_clauses_and_pragmas id8648151
! Ref: 29f648151
! Node: Bit_Order Clauses649785
! Ref: gnat_rm/representation_clauses_and_pragmas bit-order-clauses649950
! Ref: 2a0649950
! Ref: gnat_rm/representation_clauses_and_pragmas id9649950
! Ref: 2a1649950
! Node: Effect of Bit_Order on Byte Ordering653395
! Ref: gnat_rm/representation_clauses_and_pragmas effect-of-bit-order-on-byte-ordering653560
! Ref: 2a2653560
! Ref: gnat_rm/representation_clauses_and_pragmas id10653560
! Ref: 2a3653560
! Node: Pragma Pack for Arrays663015
! Ref: gnat_rm/representation_clauses_and_pragmas id11663186
! Ref: 2a4663186
! Ref: gnat_rm/representation_clauses_and_pragmas pragma-pack-for-arrays663186
! Ref: 2a5663186
! Node: Pragma Pack for Records667691
! Ref: gnat_rm/representation_clauses_and_pragmas id12667855
! Ref: 2a6667855
! Ref: gnat_rm/representation_clauses_and_pragmas pragma-pack-for-records667855
! Ref: 2a7667855
! Node: Record Representation Clauses670415
! Ref: gnat_rm/representation_clauses_and_pragmas id13670587
! Ref: 2a8670587
! Ref: gnat_rm/representation_clauses_and_pragmas record-representation-clauses670587
! Ref: 2a9670587
! Node: Handling of Records with Holes673475
! Ref: gnat_rm/representation_clauses_and_pragmas handling-of-records-with-holes673643
! Ref: 2aa673643
! Ref: gnat_rm/representation_clauses_and_pragmas id14673643
! Ref: 2ab673643
! Node: Enumeration Clauses675905
! Ref: gnat_rm/representation_clauses_and_pragmas enumeration-clauses676059
! Ref: 2ac676059
! Ref: gnat_rm/representation_clauses_and_pragmas id15676059
! Ref: 2ad676059
! Node: Address Clauses677495
! Ref: gnat_rm/representation_clauses_and_pragmas address-clauses677663
! Ref: 2ae677663
! Ref: gnat_rm/representation_clauses_and_pragmas id16677663
! Ref: 2af677663
! Node: Use of Address Clauses for Memory-Mapped I/O689155
! Ref: gnat_rm/representation_clauses_and_pragmas id17689342
! Ref: 2b0689342
! Ref: gnat_rm/representation_clauses_and_pragmas use-of-address-clauses-for-memory-mapped-i-o689342
! Ref: 2b1689342
! Node: Effect of Convention on Representation691210
! Ref: gnat_rm/representation_clauses_and_pragmas effect-of-convention-on-representation691420
! Ref: 2b2691420
! Ref: gnat_rm/representation_clauses_and_pragmas id18691420
! Ref: 2b3691420
! Node: Conventions and Anonymous Access Types694545
! Ref: gnat_rm/representation_clauses_and_pragmas conventions-and-anonymous-access-types694757
! Ref: 2b4694757
! Ref: gnat_rm/representation_clauses_and_pragmas id19694757
! Ref: 2b5694757
! Node: Determining the Representations chosen by GNAT697248
! Ref: gnat_rm/representation_clauses_and_pragmas determining-the-representations-chosen-by-gnat697413
! Ref: 2b6697413
! Ref: gnat_rm/representation_clauses_and_pragmas id20697413
! Ref: 2b7697413
! Node: Standard Library Routines702012
! Ref: gnat_rm/standard_library_routines doc702164
! Ref: 2b8702164
! Ref: gnat_rm/standard_library_routines id1702164
! Ref: 2b9702164
! Ref: gnat_rm/standard_library_routines standard-library-routines702164
! Ref: e702164
! Node: The Implementation of Standard I/O729505
! Ref: gnat_rm/the_implementation_of_standard_i_o doc729639
! Ref: 2ba729639
! Ref: gnat_rm/the_implementation_of_standard_i_o id1729639
! Ref: 2bb729639
! Ref: gnat_rm/the_implementation_of_standard_i_o the-implementation-of-standard-i-o729639
! Ref: f729639
! Node: Standard I/O Packages731689
! Ref: gnat_rm/the_implementation_of_standard_i_o id2731803
! Ref: 2bc731803
! Ref: gnat_rm/the_implementation_of_standard_i_o standard-i-o-packages731803
! Ref: 2bd731803
! Node: FORM Strings733142
! Ref: gnat_rm/the_implementation_of_standard_i_o form-strings733274
! Ref: 2be733274
! Ref: gnat_rm/the_implementation_of_standard_i_o id3733274
! Ref: 2bf733274
! Node: Direct_IO733888
! Ref: gnat_rm/the_implementation_of_standard_i_o direct-io734012
! Ref: 2c0734012
! Ref: gnat_rm/the_implementation_of_standard_i_o id4734012
! Ref: 2c1734012
! Node: Sequential_IO734789
! Ref: gnat_rm/the_implementation_of_standard_i_o id5734908
! Ref: 2c2734908
! Ref: gnat_rm/the_implementation_of_standard_i_o sequential-io734908
! Ref: 2c3734908
! Node: Text_IO736745
! Ref: gnat_rm/the_implementation_of_standard_i_o id6736867
! Ref: 2c4736867
! Ref: gnat_rm/the_implementation_of_standard_i_o text-io736867
! Ref: 2c5736867
! Node: Stream Pointer Positioning739355
! Ref: gnat_rm/the_implementation_of_standard_i_o id7739472
! Ref: 2c6739472
! Ref: gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning739472
! Ref: 2c7739472
! Node: Reading and Writing Non-Regular Files740919
! Ref: gnat_rm/the_implementation_of_standard_i_o id8741058
! Ref: 2c8741058
! Ref: gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files741058
! Ref: 2c9741058
! Node: Get_Immediate742832
! Ref: gnat_rm/the_implementation_of_standard_i_o get-immediate742978
! Ref: 2ca742978
! Ref: gnat_rm/the_implementation_of_standard_i_o id9742978
! Ref: 2cb742978
! Node: Treating Text_IO Files as Streams743671
! Ref: gnat_rm/the_implementation_of_standard_i_o id10743798
! Ref: 2cc743798
! Ref: gnat_rm/the_implementation_of_standard_i_o treating-text-io-files-as-streams743798
! Ref: 2cd743798
! Node: Text_IO Extensions744386
! Ref: gnat_rm/the_implementation_of_standard_i_o id11744540
! Ref: 2ce744540
! Ref: gnat_rm/the_implementation_of_standard_i_o text-io-extensions744540
! Ref: 2cf744540
! Node: Text_IO Facilities for Unbounded Strings745157
! Ref: gnat_rm/the_implementation_of_standard_i_o id12745269
! Ref: 2d0745269
! Ref: gnat_rm/the_implementation_of_standard_i_o text-io-facilities-for-unbounded-strings745269
! Ref: 2d1745269
! Node: Wide_Text_IO746843
! Ref: gnat_rm/the_implementation_of_standard_i_o id13746969
! Ref: 2d2746969
! Ref: gnat_rm/the_implementation_of_standard_i_o wide-text-io746969
! Ref: 2d3746969
! Node: Stream Pointer Positioning<2>753946
! Ref: gnat_rm/the_implementation_of_standard_i_o id14754074
! Ref: 2d4754074
! Ref: gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-1754074
! Ref: 2d5754074
! Node: Reading and Writing Non-Regular Files<2>754992
! Ref: gnat_rm/the_implementation_of_standard_i_o id15755120
! Ref: 2d6755120
! Ref: gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-1755120
! Ref: 2d7755120
! Node: Wide_Wide_Text_IO755529
! Ref: gnat_rm/the_implementation_of_standard_i_o id16755657
! Ref: 2d8755657
! Ref: gnat_rm/the_implementation_of_standard_i_o wide-wide-text-io755657
! Ref: 2d9755657
! Node: Stream Pointer Positioning<3>759338
! Ref: gnat_rm/the_implementation_of_standard_i_o id17759471
! Ref: 2da759471
! Ref: gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-2759471
! Ref: 2db759471
! Node: Reading and Writing Non-Regular Files<3>760421
! Ref: gnat_rm/the_implementation_of_standard_i_o id18760554
! Ref: 2dc760554
! Ref: gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-2760554
! Ref: 2dd760554
! Node: Stream_IO760963
! Ref: gnat_rm/the_implementation_of_standard_i_o id19761095
! Ref: 2de761095
! Ref: gnat_rm/the_implementation_of_standard_i_o stream-io761095
! Ref: 2df761095
! Node: Text Translation761612
! Ref: gnat_rm/the_implementation_of_standard_i_o id20761739
! Ref: 2e0761739
! Ref: gnat_rm/the_implementation_of_standard_i_o text-translation761739
! Ref: 2e1761739
! Node: Shared Files762539
! Ref: gnat_rm/the_implementation_of_standard_i_o id21762675
! Ref: 2e2762675
! Ref: gnat_rm/the_implementation_of_standard_i_o shared-files762675
! Ref: 2e3762675
! Node: Filenames encoding765422
! Ref: gnat_rm/the_implementation_of_standard_i_o filenames-encoding765563
! Ref: 2e4765563
! Ref: gnat_rm/the_implementation_of_standard_i_o id22765563
! Ref: 2e5765563
! Node: File content encoding766373
! Ref: gnat_rm/the_implementation_of_standard_i_o file-content-encoding766512
! Ref: 2e6766512
! Ref: gnat_rm/the_implementation_of_standard_i_o id23766512
! Ref: 2e7766512
! Node: Open Modes767036
! Ref: gnat_rm/the_implementation_of_standard_i_o id24767180
! Ref: 2e8767180
! Ref: gnat_rm/the_implementation_of_standard_i_o open-modes767180
! Ref: 2e9767180
! Node: Operations on C Streams769174
! Ref: gnat_rm/the_implementation_of_standard_i_o id25769321
! Ref: 2ea769321
! Ref: gnat_rm/the_implementation_of_standard_i_o operations-on-c-streams769321
! Ref: 2eb769321
! Node: Interfacing to C Streams776125
! Ref: gnat_rm/the_implementation_of_standard_i_o id26776253
! Ref: 2ec776253
! Ref: gnat_rm/the_implementation_of_standard_i_o interfacing-to-c-streams776253
! Ref: 2ed776253
! Node: The GNAT Library779565
! Ref: gnat_rm/the_gnat_library doc779704
! Ref: 2ee779704
! Ref: gnat_rm/the_gnat_library id1779704
! Ref: 2ef779704
! Ref: gnat_rm/the_gnat_library the-gnat-library779704
! Ref: 10779704
! Node: Ada Characters Latin_9 a-chlat9 ads792484
! Ref: gnat_rm/the_gnat_library ada-characters-latin-9-a-chlat9-ads792622
! Ref: 2f0792622
! Ref: gnat_rm/the_gnat_library id2792622
! Ref: 2f1792622
! Node: Ada Characters Wide_Latin_1 a-cwila1 ads793032
! Ref: gnat_rm/the_gnat_library ada-characters-wide-latin-1-a-cwila1-ads793219
! Ref: 2f2793219
! Ref: gnat_rm/the_gnat_library id3793219
! Ref: 2f3793219
! Node: Ada Characters Wide_Latin_9 a-cwila9 ads793671
! Ref: gnat_rm/the_gnat_library ada-characters-wide-latin-9-a-cwila9-ads793868
! Ref: 2f4793868
! Ref: gnat_rm/the_gnat_library id4793868
! Ref: 2f5793868
! Node: Ada Characters Wide_Wide_Latin_1 a-chzla1 ads794322
! Ref: gnat_rm/the_gnat_library ada-characters-wide-wide-latin-1-a-chzla1-ads794524
! Ref: 2f6794524
! Ref: gnat_rm/the_gnat_library id5794524
! Ref: 2f7794524
! Node: Ada Characters Wide_Wide_Latin_9 a-chzla9 ads794991
! Ref: gnat_rm/the_gnat_library ada-characters-wide-wide-latin-9-a-chzla9-ads795196
! Ref: 2f8795196
! Ref: gnat_rm/the_gnat_library id6795196
! Ref: 2f9795196
! Node: Ada Containers Bounded_Holders a-coboho ads795665
! Ref: gnat_rm/the_gnat_library ada-containers-bounded-holders-a-coboho-ads795866
! Ref: 2fa795866
! Ref: gnat_rm/the_gnat_library id7795866
! Ref: 2fb795866
! Node: Ada Command_Line Environment a-colien ads796099
! Ref: gnat_rm/the_gnat_library ada-command-line-environment-a-colien-ads796291
! Ref: 2fc796291
! Ref: gnat_rm/the_gnat_library id8796291
! Ref: 2fd796291
! Node: Ada Command_Line Remove a-colire ads796541
! Ref: gnat_rm/the_gnat_library ada-command-line-remove-a-colire-ads796733
! Ref: 2fe796733
! Ref: gnat_rm/the_gnat_library id9796733
! Ref: 2ff796733
! Node: Ada Command_Line Response_File a-clrefi ads797106
! Ref: gnat_rm/the_gnat_library ada-command-line-response-file-a-clrefi-ads797293
! Ref: 300797293
! Ref: gnat_rm/the_gnat_library id10797293
! Ref: 301797293
! Node: Ada Direct_IO C_Streams a-diocst ads797705
! Ref: gnat_rm/the_gnat_library ada-direct-io-c-streams-a-diocst-ads797902
! Ref: 302797902
! Ref: gnat_rm/the_gnat_library id11797902
! Ref: 303797902
! Node: Ada Exceptions Is_Null_Occurrence a-einuoc ads798253
! Ref: gnat_rm/the_gnat_library ada-exceptions-is-null-occurrence-a-einuoc-ads798454
! Ref: 304798454
! Ref: gnat_rm/the_gnat_library id12798454
! Ref: 305798454
! Node: Ada Exceptions Last_Chance_Handler a-elchha ads798718
! Ref: gnat_rm/the_gnat_library ada-exceptions-last-chance-handler-a-elchha-ads798920
! Ref: 306798920
! Ref: gnat_rm/the_gnat_library id13798920
! Ref: 307798920
! Node: Ada Exceptions Traceback a-exctra ads799250
! Ref: gnat_rm/the_gnat_library ada-exceptions-traceback-a-exctra-ads799446
! Ref: 308799446
! Ref: gnat_rm/the_gnat_library id14799446
! Ref: 309799446
! Node: Ada Sequential_IO C_Streams a-siocst ads799691
! Ref: gnat_rm/the_gnat_library ada-sequential-io-c-streams-a-siocst-ads799884
! Ref: 30a799884
! Ref: gnat_rm/the_gnat_library id15799884
! Ref: 30b799884
! Node: Ada Streams Stream_IO C_Streams a-ssicst ads800247
! Ref: gnat_rm/the_gnat_library ada-streams-stream-io-c-streams-a-ssicst-ads800445
! Ref: 30c800445
! Ref: gnat_rm/the_gnat_library id16800445
! Ref: 30d800445
! Node: Ada Strings Unbounded Text_IO a-suteio ads800812
! Ref: gnat_rm/the_gnat_library ada-strings-unbounded-text-io-a-suteio-ads801022
! Ref: 30e801022
! Ref: gnat_rm/the_gnat_library id17801022
! Ref: 30f801022
! Node: Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads801287
! Ref: gnat_rm/the_gnat_library ada-strings-wide-unbounded-wide-text-io-a-swuwti-ads801515
! Ref: 310801515
! Ref: gnat_rm/the_gnat_library id18801515
! Ref: 311801515
! Node: Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads801810
! Ref: gnat_rm/the_gnat_library ada-strings-wide-wide-unbounded-wide-wide-text-io-a-szuzti-ads802032
! Ref: 312802032
! Ref: gnat_rm/the_gnat_library id19802032
! Ref: 313802032
! Node: Ada Task_Initialization a-tasini ads802357
! Ref: gnat_rm/the_gnat_library ada-task-initialization-a-tasini-ads802561
! Ref: 314802561
! Ref: gnat_rm/the_gnat_library id20802561
! Ref: 315802561
! Node: Ada Text_IO C_Streams a-tiocst ads802930
! Ref: gnat_rm/the_gnat_library ada-text-io-c-streams-a-tiocst-ads803117
! Ref: 316803117
! Ref: gnat_rm/the_gnat_library id21803117
! Ref: 317803117
! Node: Ada Text_IO Reset_Standard_Files a-tirsfi ads803462
! Ref: gnat_rm/the_gnat_library ada-text-io-reset-standard-files-a-tirsfi-ads803653
! Ref: 318803653
! Ref: gnat_rm/the_gnat_library id22803653
! Ref: 319803653
! Node: Ada Wide_Characters Unicode a-wichun ads804072
! Ref: gnat_rm/the_gnat_library ada-wide-characters-unicode-a-wichun-ads804268
! Ref: 31a804268
! Ref: gnat_rm/the_gnat_library id23804268
! Ref: 31b804268
! Node: Ada Wide_Text_IO C_Streams a-wtcstr ads804502
! Ref: gnat_rm/the_gnat_library ada-wide-text-io-c-streams-a-wtcstr-ads804703
! Ref: 31c804703
! Ref: gnat_rm/the_gnat_library id24804703
! Ref: 31d804703
! Node: Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads805063
! Ref: gnat_rm/the_gnat_library ada-wide-text-io-reset-standard-files-a-wrstfi-ads805269
! Ref: 31e805269
! Ref: gnat_rm/the_gnat_library id25805269
! Ref: 31f805269
! Node: Ada Wide_Wide_Characters Unicode a-zchuni ads805703
! Ref: gnat_rm/the_gnat_library ada-wide-wide-characters-unicode-a-zchuni-ads805914
! Ref: 320805914
! Ref: gnat_rm/the_gnat_library id26805914
! Ref: 321805914
! Node: Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads806163
! Ref: gnat_rm/the_gnat_library ada-wide-wide-text-io-c-streams-a-ztcstr-ads806379
! Ref: 322806379
! Ref: gnat_rm/the_gnat_library id27806379
! Ref: 323806379
! Node: Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads806754
! Ref: gnat_rm/the_gnat_library ada-wide-wide-text-io-reset-standard-files-a-zrstfi-ads806950
! Ref: 324806950
! Ref: gnat_rm/the_gnat_library id28806950
! Ref: 325806950
! Node: GNAT Altivec g-altive ads807399
! Ref: gnat_rm/the_gnat_library gnat-altivec-g-altive-ads807588
! Ref: 326807588
! Ref: gnat_rm/the_gnat_library id29807588
! Ref: 327807588
! Node: GNAT Altivec Conversions g-altcon ads807819
! Ref: gnat_rm/the_gnat_library gnat-altivec-conversions-g-altcon-ads807996
! Ref: 328807996
! Ref: gnat_rm/the_gnat_library id30807996
! Ref: 329807996
! Node: GNAT Altivec Vector_Operations g-alveop ads808165
! Ref: gnat_rm/the_gnat_library gnat-altivec-vector-operations-g-alveop-ads808355
! Ref: 32a808355
! Ref: gnat_rm/the_gnat_library id31808355
! Ref: 32b808355
! Node: GNAT Altivec Vector_Types g-alvety ads808715
! Ref: gnat_rm/the_gnat_library gnat-altivec-vector-types-g-alvety-ads808906
! Ref: 32c808906
! Ref: gnat_rm/the_gnat_library id32808906
! Ref: 32d808906
! Node: GNAT Altivec Vector_Views g-alvevi ads809111
! Ref: gnat_rm/the_gnat_library gnat-altivec-vector-views-g-alvevi-ads809288
! Ref: 32e809288
! Ref: gnat_rm/the_gnat_library id33809288
! Ref: 32f809288
! Node: GNAT Array_Split g-arrspl ads809659
! Ref: gnat_rm/the_gnat_library gnat-array-split-g-arrspl-ads809816
! Ref: 330809816
! Ref: gnat_rm/the_gnat_library id34809816
! Ref: 331809816
! Node: GNAT AWK g-awk ads810071
! Ref: gnat_rm/the_gnat_library gnat-awk-g-awk-ads810221
! Ref: 332810221
! Ref: gnat_rm/the_gnat_library id35810221
! Ref: 333810221
! Node: GNAT Binary_Search g-binsea ads810516
! Ref: gnat_rm/the_gnat_library gnat-binary-search-g-binsea-ads810671
! Ref: 334810671
! Ref: gnat_rm/the_gnat_library id36810671
! Ref: 335810671
! Node: GNAT Bind_Environment g-binenv ads810891
! Ref: gnat_rm/the_gnat_library gnat-bind-environment-g-binenv-ads811063
! Ref: 336811063
! Ref: gnat_rm/the_gnat_library id37811063
! Ref: 337811063
! Node: GNAT Branch_Prediction g-brapre ads811316
! Ref: gnat_rm/the_gnat_library gnat-branch-prediction-g-brapre-ads811490
! Ref: 338811490
! Ref: gnat_rm/the_gnat_library id38811490
! Ref: 339811490
! Node: GNAT Bounded_Buffers g-boubuf ads811674
! Ref: gnat_rm/the_gnat_library gnat-bounded-buffers-g-boubuf-ads811849
! Ref: 33a811849
! Ref: gnat_rm/the_gnat_library id39811849
! Ref: 33b811849
! Node: GNAT Bounded_Mailboxes g-boumai ads812117
! Ref: gnat_rm/the_gnat_library gnat-bounded-mailboxes-g-boumai-ads812286
! Ref: 33c812286
! Ref: gnat_rm/the_gnat_library id40812286
! Ref: 33d812286
! Node: GNAT Bubble_Sort g-bubsor ads812470
! Ref: gnat_rm/the_gnat_library gnat-bubble-sort-g-bubsor-ads812637
! Ref: 33e812637
! Ref: gnat_rm/the_gnat_library id41812637
! Ref: 33f812637
! Node: GNAT Bubble_Sort_A g-busora ads812909
! Ref: gnat_rm/the_gnat_library gnat-bubble-sort-a-g-busora-ads813072
! Ref: 340813072
! Ref: gnat_rm/the_gnat_library id42813072
! Ref: 341813072
! Node: GNAT Bubble_Sort_G g-busorg ads813451
! Ref: gnat_rm/the_gnat_library gnat-bubble-sort-g-g-busorg-ads813618
! Ref: 342813618
! Ref: gnat_rm/the_gnat_library id43813618
! Ref: 343813618
! Node: GNAT Byte_Order_Mark g-byorma ads813962
! Ref: gnat_rm/the_gnat_library gnat-byte-order-mark-g-byorma-ads814129
! Ref: 344814129
! Ref: gnat_rm/the_gnat_library id44814129
! Ref: 345814129
! Node: GNAT Byte_Swapping g-bytswa ads814499
! Ref: gnat_rm/the_gnat_library gnat-byte-swapping-g-bytswa-ads814661
! Ref: 346814661
! Ref: gnat_rm/the_gnat_library id45814661
! Ref: 347814661
! Node: GNAT Calendar g-calend ads814896
! Ref: gnat_rm/the_gnat_library gnat-calendar-g-calend-ads815059
! Ref: 348815059
! Ref: gnat_rm/the_gnat_library id46815059
! Ref: 349815059
! Node: GNAT Calendar Time_IO g-catiio ads815396
! Ref: gnat_rm/the_gnat_library gnat-calendar-time-io-g-catiio-ads815550
! Ref: 34a815550
! Ref: gnat_rm/the_gnat_library id47815550
! Ref: 34b815550
! Node: GNAT CRC32 g-crc32 ads815653
! Ref: gnat_rm/the_gnat_library gnat-crc32-g-crc32-ads815808
! Ref: 34c815808
! Ref: gnat_rm/the_gnat_library id48815808
! Ref: 34d815808
! Node: GNAT Case_Util g-casuti ads816138
! Ref: gnat_rm/the_gnat_library gnat-case-util-g-casuti-ads816277
! Ref: 34e816277
! Ref: gnat_rm/the_gnat_library id49816277
! Ref: 34f816277
! Node: GNAT CGI g-cgi ads816520
! Ref: gnat_rm/the_gnat_library gnat-cgi-g-cgi-ads816665
! Ref: 350816665
! Ref: gnat_rm/the_gnat_library id50816665
! Ref: 351816665
! Node: GNAT CGI Cookie g-cgicoo ads817047
! Ref: gnat_rm/the_gnat_library gnat-cgi-cookie-g-cgicoo-ads817192
! Ref: 352817192
! Ref: gnat_rm/the_gnat_library id51817192
! Ref: 353817192
! Node: GNAT CGI Debug g-cgideb ads817489
! Ref: gnat_rm/the_gnat_library gnat-cgi-debug-g-cgideb-ads817646
! Ref: 354817646
! Ref: gnat_rm/the_gnat_library id52817646
! Ref: 355817646
! Node: GNAT Command_Line g-comlin ads817828
! Ref: gnat_rm/the_gnat_library gnat-command-line-g-comlin-ads817991
! Ref: 356817991
! Ref: gnat_rm/the_gnat_library id53817991
! Ref: 357817991
! Node: GNAT Compiler_Version g-comver ads818279
! Ref: gnat_rm/the_gnat_library gnat-compiler-version-g-comver-ads818439
! Ref: 358818439
! Ref: gnat_rm/the_gnat_library id54818439
! Ref: 359818439
! Node: GNAT Ctrl_C g-ctrl_c ads818843
! Ref: gnat_rm/the_gnat_library gnat-ctrl-c-g-ctrl-c-ads819008
! Ref: 35a819008
! Ref: gnat_rm/the_gnat_library id55819008
! Ref: 35b819008
! Node: GNAT Current_Exception g-curexc ads819154
! Ref: gnat_rm/the_gnat_library gnat-current-exception-g-curexc-ads819314
! Ref: 35c819314
! Ref: gnat_rm/the_gnat_library id56819314
! Ref: 35d819314
! Node: GNAT Debug_Pools g-debpoo ads819730
! Ref: gnat_rm/the_gnat_library gnat-debug-pools-g-debpoo-ads819899
! Ref: 35e819899
! Ref: gnat_rm/the_gnat_library id57819899
! Ref: 35f819899
! Node: GNAT Debug_Utilities g-debuti ads820158
! Ref: gnat_rm/the_gnat_library gnat-debug-utilities-g-debuti-ads820323
! Ref: 360820323
! Ref: gnat_rm/the_gnat_library id58820323
! Ref: 361820323
! Node: GNAT Decode_String g-decstr ads820606
! Ref: gnat_rm/the_gnat_library gnat-decode-string-g-decstr-ads820778
! Ref: 362820778
! Ref: gnat_rm/the_gnat_library id59820778
! Ref: 363820778
! Node: GNAT Decode_UTF8_String g-deutst ads821286
! Ref: gnat_rm/the_gnat_library gnat-decode-utf8-string-g-deutst-ads821463
! Ref: 364821463
! Ref: gnat_rm/the_gnat_library id60821463
! Ref: 365821463
! Node: GNAT Directory_Operations g-dirope ads821633
! Ref: gnat_rm/the_gnat_library gnat-directory-operations-g-dirope-ads821827
! Ref: 366821827
! Ref: gnat_rm/the_gnat_library id61821827
! Ref: 367821827
! Node: GNAT Directory_Operations Iteration g-diopit ads822101
! Ref: gnat_rm/the_gnat_library gnat-directory-operations-iteration-g-diopit-ads822292
! Ref: 368822292
! Ref: gnat_rm/the_gnat_library id62822292
! Ref: 369822292
! Node: GNAT Dynamic_HTables g-dynhta ads822533
! Ref: gnat_rm/the_gnat_library gnat-dynamic-htables-g-dynhta-ads822718
! Ref: 36a822718
! Ref: gnat_rm/the_gnat_library id63822718
! Ref: 36b822718
! Node: GNAT Dynamic_Tables g-dyntab ads823299
! Ref: gnat_rm/the_gnat_library gnat-dynamic-tables-g-dyntab-ads823467
! Ref: 36c823467
! Ref: gnat_rm/the_gnat_library id64823467
! Ref: 36d823467
! Node: GNAT Encode_String g-encstr ads823950
! Ref: gnat_rm/the_gnat_library gnat-encode-string-g-encstr-ads824121
! Ref: 36e824121
! Ref: gnat_rm/the_gnat_library id65824121
! Ref: 36f824121
! Node: GNAT Encode_UTF8_String g-enutst ads824500
! Ref: gnat_rm/the_gnat_library gnat-encode-utf8-string-g-enutst-ads824674
! Ref: 370824674
! Ref: gnat_rm/the_gnat_library id66824674
! Ref: 371824674
! Node: GNAT Exception_Actions g-excact ads824844
! Ref: gnat_rm/the_gnat_library gnat-exception-actions-g-excact-ads825021
! Ref: 372825021
! Ref: gnat_rm/the_gnat_library id67825021
! Ref: 373825021
! Node: GNAT Exception_Traces g-exctra ads825332
! Ref: gnat_rm/the_gnat_library gnat-exception-traces-g-exctra-ads825501
! Ref: 374825501
! Ref: gnat_rm/the_gnat_library id68825501
! Ref: 375825501
! Node: GNAT Exceptions g-except ads825692
! Ref: gnat_rm/the_gnat_library gnat-exceptions-g-except-ads825850
! Ref: 376825850
! Ref: gnat_rm/the_gnat_library id69825850
! Ref: 377825850
! Node: GNAT Expect g-expect ads826344
! Ref: gnat_rm/the_gnat_library gnat-expect-g-expect-ads826496
! Ref: 378826496
! Ref: gnat_rm/the_gnat_library id70826496
! Ref: 379826496
! Node: GNAT Expect TTY g-exptty ads827027
! Ref: gnat_rm/the_gnat_library gnat-expect-tty-g-exptty-ads827182
! Ref: 37a827182
! Ref: gnat_rm/the_gnat_library id71827182
! Ref: 37b827182
! Node: GNAT Float_Control g-flocon ads827490
! Ref: gnat_rm/the_gnat_library gnat-float-control-g-flocon-ads827655
! Ref: 37c827655
! Ref: gnat_rm/the_gnat_library id72827655
! Ref: 37d827655
! Node: GNAT Formatted_String g-forstr ads828034
! Ref: gnat_rm/the_gnat_library gnat-formatted-string-g-forstr-ads828216
! Ref: 37e828216
! Ref: gnat_rm/the_gnat_library id73828216
! Ref: 37f828216
! Node: GNAT Generic_Fast_Math_Functions g-gfmafu ads828607
! Ref: gnat_rm/the_gnat_library gnat-generic-fast-math-functions-g-gfmafu-ads828785
! Ref: 380828785
! Ref: gnat_rm/the_gnat_library id74828785
! Ref: 381828785
! Node: GNAT Heap_Sort g-heasor ads829458
! Ref: gnat_rm/the_gnat_library gnat-heap-sort-g-heasor-ads829631
! Ref: 382829631
! Ref: gnat_rm/the_gnat_library id75829631
! Ref: 383829631
! Node: GNAT Heap_Sort_A g-hesora ads830009
! Ref: gnat_rm/the_gnat_library gnat-heap-sort-a-g-hesora-ads830166
! Ref: 384830166
! Ref: gnat_rm/the_gnat_library id76830166
! Ref: 385830166
! Node: GNAT Heap_Sort_G g-hesorg ads830659
! Ref: gnat_rm/the_gnat_library gnat-heap-sort-g-g-hesorg-ads830813
! Ref: 386830813
! Ref: gnat_rm/the_gnat_library id77830813
! Ref: 387830813
! Node: GNAT HTable g-htable ads831151
! Ref: gnat_rm/the_gnat_library gnat-htable-g-htable-ads831292
! Ref: 388831292
! Ref: gnat_rm/the_gnat_library id78831292
! Ref: 389831292
! Node: GNAT IO g-io ads831567
! Ref: gnat_rm/the_gnat_library gnat-io-g-io-ads831703
! Ref: 38a831703
! Ref: gnat_rm/the_gnat_library id79831703
! Ref: 38b831703
! Node: GNAT IO_Aux g-io_aux ads832012
! Ref: gnat_rm/the_gnat_library gnat-io-aux-g-io-aux-ads832152
! Ref: 38c832152
! Ref: gnat_rm/the_gnat_library id80832152
! Ref: 38d832152
! Node: GNAT Lock_Files g-locfil ads832378
! Ref: gnat_rm/the_gnat_library gnat-lock-files-g-locfil-ads832540
! Ref: 38e832540
! Ref: gnat_rm/the_gnat_library id81832540
! Ref: 38f832540
! Node: GNAT MBBS_Discrete_Random g-mbdira ads832745
! Ref: gnat_rm/the_gnat_library gnat-mbbs-discrete-random-g-mbdira-ads832918
! Ref: 390832918
! Ref: gnat_rm/the_gnat_library id82832918
! Ref: 391832918
! Node: GNAT MBBS_Float_Random g-mbflra ads833155
! Ref: gnat_rm/the_gnat_library gnat-mbbs-float-random-g-mbflra-ads833318
! Ref: 392833318
! Ref: gnat_rm/the_gnat_library id83833318
! Ref: 393833318
! Node: GNAT MD5 g-md5 ads833546
! Ref: gnat_rm/the_gnat_library gnat-md5-g-md5-ads833700
! Ref: 394833700
! Ref: gnat_rm/the_gnat_library id84833700
! Ref: 395833700
! Node: GNAT Memory_Dump g-memdum ads833934
! Ref: gnat_rm/the_gnat_library gnat-memory-dump-g-memdum-ads834092
! Ref: 396834092
! Ref: gnat_rm/the_gnat_library id85834092
! Ref: 397834092
! Node: GNAT Most_Recent_Exception g-moreex ads834327
! Ref: gnat_rm/the_gnat_library gnat-most-recent-exception-g-moreex-ads834491
! Ref: 398834491
! Ref: gnat_rm/the_gnat_library id86834491
! Ref: 399834491
! Node: GNAT OS_Lib g-os_lib ads834791
! Ref: gnat_rm/the_gnat_library gnat-os-lib-g-os-lib-ads834967
! Ref: 39a834967
! Ref: gnat_rm/the_gnat_library id87834967
! Ref: 39b834967
! Node: GNAT Perfect_Hash_Generators g-pehage ads835298
! Ref: gnat_rm/the_gnat_library gnat-perfect-hash-generators-g-pehage-ads835467
! Ref: 39c835467
! Ref: gnat_rm/the_gnat_library id88835467
! Ref: 39d835467
! Node: GNAT Random_Numbers g-rannum ads836119
! Ref: gnat_rm/the_gnat_library gnat-random-numbers-g-rannum-ads836288
! Ref: 39e836288
! Ref: gnat_rm/the_gnat_library id89836288
! Ref: 39f836288
! Node: GNAT Regexp g-regexp ads836613
! Ref: gnat_rm/the_gnat_library gnat-regexp-g-regexp-ads836767
! Ref: 275836767
! Ref: gnat_rm/the_gnat_library id90836767
! Ref: 3a0836767
! Node: GNAT Registry g-regist ads837123
! Ref: gnat_rm/the_gnat_library gnat-registry-g-regist-ads837269
! Ref: 3a1837269
! Ref: gnat_rm/the_gnat_library id91837269
! Ref: 3a2837269
! Node: GNAT Regpat g-regpat ads837623
! Ref: gnat_rm/the_gnat_library gnat-regpat-g-regpat-ads837775
! Ref: 3a3837775
! Ref: gnat_rm/the_gnat_library id92837775
! Ref: 3a4837775
! Node: GNAT Rewrite_Data g-rewdat ads838064
! Ref: gnat_rm/the_gnat_library gnat-rewrite-data-g-rewdat-ads838228
! Ref: 3a5838228
! Ref: gnat_rm/the_gnat_library id93838228
! Ref: 3a6838228
! Node: GNAT Secondary_Stack_Info g-sestin ads838592
! Ref: gnat_rm/the_gnat_library gnat-secondary-stack-info-g-sestin-ads838760
! Ref: 3a7838760
! Ref: gnat_rm/the_gnat_library id94838760
! Ref: 3a8838760
! Node: GNAT Semaphores g-semaph ads838966
! Ref: gnat_rm/the_gnat_library gnat-semaphores-g-semaph-ads839143
! Ref: 3a9839143
! Ref: gnat_rm/the_gnat_library id95839143
! Ref: 3aa839143
! Node: GNAT Serial_Communications g-sercom ads839306
! Ref: gnat_rm/the_gnat_library gnat-serial-communications-g-sercom-ads839465
! Ref: 3ab839465
! Ref: gnat_rm/the_gnat_library id96839465
! Ref: 3ac839465
! Node: GNAT SHA1 g-sha1 ads839701
! Ref: gnat_rm/the_gnat_library gnat-sha1-g-sha1-ads839856
! Ref: 3ad839856
! Ref: gnat_rm/the_gnat_library id97839856
! Ref: 3ae839856
! Node: GNAT SHA224 g-sha224 ads840113
! Ref: gnat_rm/the_gnat_library gnat-sha224-g-sha224-ads840253
! Ref: 3af840253
! Ref: gnat_rm/the_gnat_library id98840253
! Ref: 3b0840253
! Node: GNAT SHA256 g-sha256 ads840509
! Ref: gnat_rm/the_gnat_library gnat-sha256-g-sha256-ads840653
! Ref: 3b1840653
! Ref: gnat_rm/the_gnat_library id99840653
! Ref: 3b2840653
! Node: GNAT SHA384 g-sha384 ads840909
! Ref: gnat_rm/the_gnat_library gnat-sha384-g-sha384-ads841053
! Ref: 3b3841053
! Ref: gnat_rm/the_gnat_library id100841053
! Ref: 3b4841053
! Node: GNAT SHA512 g-sha512 ads841309
! Ref: gnat_rm/the_gnat_library gnat-sha512-g-sha512-ads841454
! Ref: 3b5841454
! Ref: gnat_rm/the_gnat_library id101841454
! Ref: 3b6841454
! Node: GNAT Signals g-signal ads841712
! Ref: gnat_rm/the_gnat_library gnat-signals-g-signal-ads841858
! Ref: 3b7841858
! Ref: gnat_rm/the_gnat_library id102841858
! Ref: 3b8841858
! Node: GNAT Sockets g-socket ads842033
! Ref: gnat_rm/the_gnat_library gnat-sockets-g-socket-ads842184
! Ref: 3b9842184
! Ref: gnat_rm/the_gnat_library id103842184
! Ref: 3ba842184
! Node: GNAT Source_Info g-souinf ads842580
! Ref: gnat_rm/the_gnat_library gnat-source-info-g-souinf-ads842740
! Ref: 3bb842740
! Ref: gnat_rm/the_gnat_library id104842740
! Ref: 3bc842740
! Node: GNAT Spelling_Checker g-speche ads843106
! Ref: gnat_rm/the_gnat_library gnat-spelling-checker-g-speche-ads843283
! Ref: 3bd843283
! Ref: gnat_rm/the_gnat_library id105843283
! Ref: 3be843283
! Node: GNAT Spelling_Checker_Generic g-spchge ads843495
! Ref: gnat_rm/the_gnat_library gnat-spelling-checker-generic-g-spchge-ads843677
! Ref: 3bf843677
! Ref: gnat_rm/the_gnat_library id106843677
! Ref: 3c0843677
! Node: GNAT Spitbol Patterns g-spipat ads843957
! Ref: gnat_rm/the_gnat_library gnat-spitbol-patterns-g-spipat-ads844130
! Ref: 3c1844130
! Ref: gnat_rm/the_gnat_library id107844130
! Ref: 3c2844130
! Node: GNAT Spitbol g-spitbo ads844537
! Ref: gnat_rm/the_gnat_library gnat-spitbol-g-spitbo-ads844707
! Ref: 3c3844707
! Ref: gnat_rm/the_gnat_library id108844707
! Ref: 3c4844707
! Node: GNAT Spitbol Table_Boolean g-sptabo ads845117
! Ref: gnat_rm/the_gnat_library gnat-spitbol-table-boolean-g-sptabo-ads845292
! Ref: 3c5845292
! Ref: gnat_rm/the_gnat_library id109845292
! Ref: 3c6845292
! Node: GNAT Spitbol Table_Integer g-sptain ads845562
! Ref: gnat_rm/the_gnat_library gnat-spitbol-table-integer-g-sptain-ads845751
! Ref: 3c7845751
! Ref: gnat_rm/the_gnat_library id110845751
! Ref: 3c8845751
! Node: GNAT Spitbol Table_VString g-sptavs ads846034
! Ref: gnat_rm/the_gnat_library gnat-spitbol-table-vstring-g-sptavs-ads846202
! Ref: 3c9846202
! Ref: gnat_rm/the_gnat_library id111846202
! Ref: 3ca846202
! Node: GNAT SSE g-sse ads846489
! Ref: gnat_rm/the_gnat_library gnat-sse-g-sse-ads846652
! Ref: 3cb846652
! Ref: gnat_rm/the_gnat_library id112846652
! Ref: 3cc846652
! Node: GNAT SSE Vector_Types g-ssvety ads846979
! Ref: gnat_rm/the_gnat_library gnat-sse-vector-types-g-ssvety-ads847132
! Ref: 3cd847132
! Ref: gnat_rm/the_gnat_library id113847132
! Ref: 3ce847132
! Node: GNAT String_Hash g-strhas ads847292
! Ref: gnat_rm/the_gnat_library gnat-string-hash-g-strhas-ads847452
! Ref: 3cf847452
! Ref: gnat_rm/the_gnat_library id114847452
! Ref: 3d0847452
! Node: GNAT Strings g-string ads847674
! Ref: gnat_rm/the_gnat_library gnat-strings-g-string-ads847830
! Ref: 3d1847830
! Ref: gnat_rm/the_gnat_library id115847830
! Ref: 3d2847830
! Node: GNAT String_Split g-strspl ads848045
! Ref: gnat_rm/the_gnat_library gnat-string-split-g-strspl-ads848194
! Ref: 3d3848194
! Ref: gnat_rm/the_gnat_library id116848194
! Ref: 3d4848194
! Node: GNAT Table g-table ads848513
! Ref: gnat_rm/the_gnat_library gnat-table-g-table-ads848664
! Ref: 3d5848664
! Ref: gnat_rm/the_gnat_library id117848664
! Ref: 3d6848664
! Node: GNAT Task_Lock g-tasloc ads849147
! Ref: gnat_rm/the_gnat_library gnat-task-lock-g-tasloc-ads849296
! Ref: 3d7849296
! Ref: gnat_rm/the_gnat_library id118849296
! Ref: 3d8849296
! Node: GNAT Time_Stamp g-timsta ads849578
! Ref: gnat_rm/the_gnat_library gnat-time-stamp-g-timsta-ads849730
! Ref: 3d9849730
! Ref: gnat_rm/the_gnat_library id119849730
! Ref: 3da849730
! Node: GNAT Threads g-thread ads850056
! Ref: gnat_rm/the_gnat_library gnat-threads-g-thread-ads850208
! Ref: 3db850208
! Ref: gnat_rm/the_gnat_library id120850208
! Ref: 3dc850208
! Node: GNAT Traceback g-traceb ads850564
! Ref: gnat_rm/the_gnat_library gnat-traceback-g-traceb-ads850724
! Ref: 3dd850724
! Ref: gnat_rm/the_gnat_library id121850724
! Ref: 3de850724
! Node: GNAT Traceback Symbolic g-trasym ads850926
! Ref: gnat_rm/the_gnat_library gnat-traceback-symbolic-g-trasym-ads851085
! Ref: 3df851085
! Ref: gnat_rm/the_gnat_library id122851085
! Ref: 3e0851085
! Node: GNAT UTF_32 g-utf_32 ads851194
! Ref: gnat_rm/the_gnat_library gnat-utf-32-g-utf-32-ads851367
! Ref: 3e1851367
! Ref: gnat_rm/the_gnat_library id123851367
! Ref: 3e2851367
! Node: GNAT UTF_32_Spelling_Checker g-u3spch ads851931
! Ref: gnat_rm/the_gnat_library gnat-utf-32-spelling-checker-g-u3spch-ads852107
! Ref: 3e3852107
! Ref: gnat_rm/the_gnat_library id124852107
! Ref: 3e4852107
! Node: GNAT Wide_Spelling_Checker g-wispch ads852443
! Ref: gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-wispch-ads852630
! Ref: 3e5852630
! Ref: gnat_rm/the_gnat_library id125852630
! Ref: 3e6852630
! Node: GNAT Wide_String_Split g-wistsp ads852862
! Ref: gnat_rm/the_gnat_library gnat-wide-string-split-g-wistsp-ads853052
! Ref: 3e7853052
! Ref: gnat_rm/the_gnat_library id126853052
! Ref: 3e8853052
! Node: GNAT Wide_Wide_Spelling_Checker g-zspche ads853391
! Ref: gnat_rm/the_gnat_library gnat-wide-wide-spelling-checker-g-zspche-ads853582
! Ref: 3e9853582
! Ref: gnat_rm/the_gnat_library id127853582
! Ref: 3ea853582
! Node: GNAT Wide_Wide_String_Split g-zistsp ads853834
! Ref: gnat_rm/the_gnat_library gnat-wide-wide-string-split-g-zistsp-ads854026
! Ref: 3eb854026
! Ref: gnat_rm/the_gnat_library id128854026
! Ref: 3ec854026
! Node: Interfaces C Extensions i-cexten ads854385
! Ref: gnat_rm/the_gnat_library id129854566
! Ref: 3ed854566
! Ref: gnat_rm/the_gnat_library interfaces-c-extensions-i-cexten-ads854566
! Ref: 3ee854566
! Node: Interfaces C Streams i-cstrea ads854822
! Ref: gnat_rm/the_gnat_library id130855001
! Ref: 3ef855001
! Ref: gnat_rm/the_gnat_library interfaces-c-streams-i-cstrea-ads855001
! Ref: 3f0855001
! Node: Interfaces Packed_Decimal i-pacdec ads855183
! Ref: gnat_rm/the_gnat_library id131855357
! Ref: 3f1855357
! Ref: gnat_rm/the_gnat_library interfaces-packed-decimal-i-pacdec-ads855357
! Ref: 3f2855357
! Node: Interfaces VxWorks i-vxwork ads855608
! Ref: gnat_rm/the_gnat_library id132855783
! Ref: 3f3855783
! Ref: gnat_rm/the_gnat_library interfaces-vxworks-i-vxwork-ads855783
! Ref: 3f4855783
! Node: Interfaces VxWorks IO i-vxwoio ads855943
! Ref: gnat_rm/the_gnat_library id133856113
! Ref: 3f5856113
! Ref: gnat_rm/the_gnat_library interfaces-vxworks-io-i-vxwoio-ads856113
! Ref: 3f6856113
! Node: System Address_Image s-addima ads856437
! Ref: gnat_rm/the_gnat_library id134856606
! Ref: 3f7856606
! Ref: gnat_rm/the_gnat_library system-address-image-s-addima-ads856606
! Ref: 3f8856606
! Node: System Assertions s-assert ads856838
! Ref: gnat_rm/the_gnat_library id135857008
! Ref: 3f9857008
! Ref: gnat_rm/the_gnat_library system-assertions-s-assert-ads857008
! Ref: 3fa857008
! Node: System Atomic_Counters s-atocou ads857274
! Ref: gnat_rm/the_gnat_library id136857437
! Ref: 3fb857437
! Ref: gnat_rm/the_gnat_library system-atomic-counters-s-atocou-ads857437
! Ref: 3fc857437
! Node: System Memory s-memory ads857883
! Ref: gnat_rm/the_gnat_library id137858051
! Ref: 3fd858051
! Ref: gnat_rm/the_gnat_library system-memory-s-memory-ads858051
! Ref: 3fe858051
! Node: System Multiprocessors s-multip ads858659
! Ref: gnat_rm/the_gnat_library id138858847
! Ref: 3ff858847
! Ref: gnat_rm/the_gnat_library system-multiprocessors-s-multip-ads858847
! Ref: 400858847
! Node: System Multiprocessors Dispatching_Domains s-mudido ads859145
! Ref: gnat_rm/the_gnat_library id139859346
! Ref: 401859346
! Ref: gnat_rm/the_gnat_library system-multiprocessors-dispatching-domains-s-mudido-ads859346
! Ref: 402859346
! Node: System Partition_Interface s-parint ads859684
! Ref: gnat_rm/the_gnat_library id140859881
! Ref: 403859881
! Ref: gnat_rm/the_gnat_library system-partition-interface-s-parint-ads859881
! Ref: 404859881
! Node: System Pool_Global s-pooglo ads860142
! Ref: gnat_rm/the_gnat_library id141860314
! Ref: 405860314
! Ref: gnat_rm/the_gnat_library system-pool-global-s-pooglo-ads860314
! Ref: 406860314
! Node: System Pool_Local s-pooloc ads860656
! Ref: gnat_rm/the_gnat_library id142860821
! Ref: 407860821
! Ref: gnat_rm/the_gnat_library system-pool-local-s-pooloc-ads860821
! Ref: 408860821
! Node: System Restrictions s-restri ads861196
! Ref: gnat_rm/the_gnat_library id143861356
! Ref: 409861356
! Ref: gnat_rm/the_gnat_library system-restrictions-s-restri-ads861356
! Ref: 40a861356
! Node: System Rident s-rident ads861794
! Ref: gnat_rm/the_gnat_library id144861962
! Ref: 40b861962
! Ref: gnat_rm/the_gnat_library system-rident-s-rident-ads861962
! Ref: 40c861962
! Node: System Strings Stream_Ops s-ststop ads862361
! Ref: gnat_rm/the_gnat_library id145862531
! Ref: 40d862531
! Ref: gnat_rm/the_gnat_library system-strings-stream-ops-s-ststop-ads862531
! Ref: 40e862531
! Node: System Unsigned_Types s-unstyp ads862926
! Ref: gnat_rm/the_gnat_library id146863097
! Ref: 40f863097
! Ref: gnat_rm/the_gnat_library system-unsigned-types-s-unstyp-ads863097
! Ref: 410863097
! Node: System Wch_Cnv s-wchcnv ads863533
! Ref: gnat_rm/the_gnat_library id147863693
! Ref: 411863693
! Ref: gnat_rm/the_gnat_library system-wch-cnv-s-wchcnv-ads863693
! Ref: 412863693
! Node: System Wch_Con s-wchcon ads864036
! Ref: gnat_rm/the_gnat_library id148864153
! Ref: 413864153
! Ref: gnat_rm/the_gnat_library system-wch-con-s-wchcon-ads864153
! Ref: 414864153
! Node: Interfacing to Other Languages864439
! Ref: gnat_rm/interfacing_to_other_languages doc864569
! Ref: 415864569
! Ref: gnat_rm/interfacing_to_other_languages id1864569
! Ref: 416864569
! Ref: gnat_rm/interfacing_to_other_languages interfacing-to-other-languages864569
! Ref: 11864569
! Node: Interfacing to C864921
! Ref: gnat_rm/interfacing_to_other_languages id2865032
! Ref: 417865032
! Ref: gnat_rm/interfacing_to_other_languages interfacing-to-c865032
! Ref: 418865032
! Node: Interfacing to C++867835
! Ref: gnat_rm/interfacing_to_other_languages id3867975
! Ref: 49867975
! Ref: gnat_rm/interfacing_to_other_languages id4867975
! Ref: 419867975
! Node: Interfacing to COBOL877899
! Ref: gnat_rm/interfacing_to_other_languages id5878045
! Ref: 41a878045
! Ref: gnat_rm/interfacing_to_other_languages interfacing-to-cobol878045
! Ref: 41b878045
! Node: Interfacing to Fortran878189
! Ref: gnat_rm/interfacing_to_other_languages id6878349
! Ref: 41c878349
! Ref: gnat_rm/interfacing_to_other_languages interfacing-to-fortran878349
! Ref: 41d878349
! Node: Interfacing to non-GNAT Ada code878675
! Ref: gnat_rm/interfacing_to_other_languages id7878806
! Ref: 41e878806
! Ref: gnat_rm/interfacing_to_other_languages interfacing-to-non-gnat-ada-code878806
! Ref: 41f878806
! Node: Specialized Needs Annexes879833
! Ref: gnat_rm/specialized_needs_annexes doc879986
! Ref: 420879986
! Ref: gnat_rm/specialized_needs_annexes id1879986
! Ref: 421879986
! Ref: gnat_rm/specialized_needs_annexes specialized-needs-annexes879986
! Ref: 12879986
! Node: Implementation of Specific Ada Features881081
! Ref: gnat_rm/implementation_of_specific_ada_features doc881239
! Ref: 422881239
! Ref: gnat_rm/implementation_of_specific_ada_features id1881239
! Ref: 423881239
! Ref: gnat_rm/implementation_of_specific_ada_features implementation-of-specific-ada-features881239
! Ref: 13881239
! Node: Machine Code Insertions881728
! Ref: gnat_rm/implementation_of_specific_ada_features id2881867
! Ref: 424881867
! Ref: gnat_rm/implementation_of_specific_ada_features machine-code-insertions881867
! Ref: 17d881867
! Node: GNAT Implementation of Tasking889293
! Ref: gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-tasking889487
! Ref: 425889487
! Ref: gnat_rm/implementation_of_specific_ada_features id3889487
! Ref: 426889487
! Node: Mapping Ada Tasks onto the Underlying Kernel Threads889901
! Ref: gnat_rm/implementation_of_specific_ada_features id4890074
! Ref: 427890074
! Ref: gnat_rm/implementation_of_specific_ada_features mapping-ada-tasks-onto-the-underlying-kernel-threads890074
! Ref: 428890074
! Node: Ensuring Compliance with the Real-Time Annex892230
! Ref: gnat_rm/implementation_of_specific_ada_features ensuring-compliance-with-the-real-time-annex892440
! Ref: 429892440
! Ref: gnat_rm/implementation_of_specific_ada_features id5892440
! Ref: 42a892440
! Node: Support for Locking Policies894356
! Ref: gnat_rm/implementation_of_specific_ada_features support-for-locking-policies894505
! Ref: 42b894505
! Node: GNAT Implementation of Shared Passive Packages895664
! Ref: gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-shared-passive-packages895871
! Ref: 42c895871
! Ref: gnat_rm/implementation_of_specific_ada_features id6895871
! Ref: 42d895871
! Node: Code Generation for Array Aggregates898997
! Ref: gnat_rm/implementation_of_specific_ada_features code-generation-for-array-aggregates899234
! Ref: 42e899234
! Ref: gnat_rm/implementation_of_specific_ada_features id7899234
! Ref: 42f899234
! Node: Static constant aggregates with static bounds900657
! Ref: gnat_rm/implementation_of_specific_ada_features id8900837
! Ref: 430900837
! Ref: gnat_rm/implementation_of_specific_ada_features static-constant-aggregates-with-static-bounds900837
! Ref: 431900837
! Node: Constant aggregates with unconstrained nominal types902240
! Ref: gnat_rm/implementation_of_specific_ada_features constant-aggregates-with-unconstrained-nominal-types902458
! Ref: 432902458
! Ref: gnat_rm/implementation_of_specific_ada_features id9902458
! Ref: 433902458
! Node: Aggregates with static bounds902958
! Ref: gnat_rm/implementation_of_specific_ada_features aggregates-with-static-bounds903163
! Ref: 434903163
! Ref: gnat_rm/implementation_of_specific_ada_features id10903163
! Ref: 435903163
! Node: Aggregates with nonstatic bounds903797
! Ref: gnat_rm/implementation_of_specific_ada_features aggregates-with-nonstatic-bounds903985
! Ref: 436903985
! Ref: gnat_rm/implementation_of_specific_ada_features id11903985
! Ref: 437903985
! Node: Aggregates in assignment statements904393
! Ref: gnat_rm/implementation_of_specific_ada_features aggregates-in-assignment-statements904543
! Ref: 438904543
! Ref: gnat_rm/implementation_of_specific_ada_features id12904543
! Ref: 439904543
! Node: The Size of Discriminated Records with Default Discriminants905801
! Ref: gnat_rm/implementation_of_specific_ada_features id13906024
! Ref: 43a906024
! Ref: gnat_rm/implementation_of_specific_ada_features the-size-of-discriminated-records-with-default-discriminants906024
! Ref: 43b906024
! Node: Image Values For Nonscalar Types908976
! Ref: gnat_rm/implementation_of_specific_ada_features id14909209
! Ref: 43c909209
! Ref: gnat_rm/implementation_of_specific_ada_features image-values-for-nonscalar-types909209
! Ref: 43d909209
! Node: Strict Conformance to the Ada Reference Manual910272
! Ref: gnat_rm/implementation_of_specific_ada_features id15910436
! Ref: 43e910436
! Ref: gnat_rm/implementation_of_specific_ada_features strict-conformance-to-the-ada-reference-manual910436
! Ref: 43f910436
! Node: Implementation of Ada 2012 Features911879
! Ref: gnat_rm/implementation_of_ada_2012_features doc912036
! Ref: 440912036
! Ref: gnat_rm/implementation_of_ada_2012_features id1912036
! Ref: 441912036
! Ref: gnat_rm/implementation_of_ada_2012_features implementation-of-ada-2012-features912036
! Ref: 14912036
! Node: GNAT language extensions960969
! Ref: gnat_rm/gnat_language_extensions doc961114
! Ref: 442961114
! Ref: gnat_rm/gnat_language_extensions gnat-language-extensions961114
! Ref: 443961114
! Ref: gnat_rm/gnat_language_extensions id1961114
! Ref: 444961114
! Node: How to activate the extended GNAT Ada superset961956
! Ref: gnat_rm/gnat_language_extensions how-to-activate-the-extended-gnat-ada-superset962091
! Ref: 445962091
! Node: Curated Extensions963035
! Ref: gnat_rm/gnat_language_extensions curated-extensions963211
! Ref: 446963211
! Ref: gnat_rm/gnat_language_extensions curated-language-extensions963211
! Ref: 6a963211
! Node: Local Declarations Without Block963740
! Ref: gnat_rm/gnat_language_extensions local-declarations-without-block963858
! Ref: 447963858
! Node: Deep delta Aggregates966469
! Ref: gnat_rm/gnat_language_extensions deep-delta-aggregates966643
! Ref: 448966643
! Node: Syntax967223
! Ref: gnat_rm/gnat_language_extensions syntax967311
! Ref: 449967311
! Node: Legality Rules968857
! Ref: gnat_rm/gnat_language_extensions legality-rules968971
! Ref: 44a968971
! Node: Dynamic Semantics970218
! Ref: gnat_rm/gnat_language_extensions dynamic-semantics970334
! Ref: 44b970334
! Node: Examples972447
! Ref: gnat_rm/gnat_language_extensions examples972540
! Ref: 44c972540
! Node: Fixed lower bounds for array types and subtypes973153
! Ref: gnat_rm/gnat_language_extensions fixed-lower-bounds-for-array-types-and-subtypes973370
! Ref: 44d973370
! Node: Prefixed-view notation for calls to primitive subprograms of untagged types975205
! Ref: gnat_rm/gnat_language_extensions prefixed-view-notation-for-calls-to-primitive-subprograms-of-untagged-types975449
! Ref: 44e975449
! Node: Expression defaults for generic formal functions977350
! Ref: gnat_rm/gnat_language_extensions expression-defaults-for-generic-formal-functions977567
! Ref: 44f977567
! Node: String interpolation978495
! Ref: gnat_rm/gnat_language_extensions string-interpolation978678
! Ref: 450978678
! Node: Constrained attribute for generic objects981505
! Ref: gnat_rm/gnat_language_extensions constrained-attribute-for-generic-objects981676
! Ref: 451981676
! Node: Static aspect on intrinsic functions981921
! Ref: gnat_rm/gnat_language_extensions static-aspect-on-intrinsic-functions982099
! Ref: 452982099
! Node: First Controlling Parameter982416
! Ref: gnat_rm/gnat_language_extensions first-controlling-parameter982544
! Ref: 453982544
! Node: Experimental Language Extensions985670
! Ref: gnat_rm/gnat_language_extensions experimental-language-extensions985791
! Ref: 6b985791
! Ref: gnat_rm/gnat_language_extensions id2985791
! Ref: 454985791
! Node: Conditional when constructs986312
! Ref: gnat_rm/gnat_language_extensions conditional-when-constructs986431
! Ref: 455986431
! Node: Storage Model987725
! Ref: gnat_rm/gnat_language_extensions storage-model987868
! Ref: 456987868
! Node: Aspect Storage_Model_Type988332
! Ref: gnat_rm/gnat_language_extensions aspect-storage-model-type988448
! Ref: 457988448
! Node: Aspect Designated_Storage_Model992234
! Ref: gnat_rm/gnat_language_extensions aspect-designated-storage-model992379
! Ref: 458992379
! Node: Legacy Storage Pools994968
! Ref: gnat_rm/gnat_language_extensions legacy-storage-pools995079
! Ref: 459995079
! Node: Attribute Super996600
! Ref: gnat_rm/gnat_language_extensions attribute-super996743
! Ref: 45a996743
! Node: Simpler Accessibility Model997658
! Ref: gnat_rm/gnat_language_extensions simpler-accessibility-model997809
! Ref: 45b997809
! Node: Stand-alone objects999096
! Ref: gnat_rm/gnat_language_extensions stand-alone-objects999210
! Ref: 45c999210
! Node: Subprogram parameters1000739
! Ref: gnat_rm/gnat_language_extensions subprogram-parameters1000878
! Ref: 45d1000878
! Node: Function results1004543
! Ref: gnat_rm/gnat_language_extensions function-results1004654
! Ref: 45e1004654
! Node: Case pattern matching1009185
! Ref: gnat_rm/gnat_language_extensions case-pattern-matching1009366
! Ref: 45f1009366
! Node: Mutably Tagged Types with Sizeâ€™Class Aspect1014375
! Ref: gnat_rm/gnat_language_extensions mutably-tagged-types-with-size-class-aspect1014553
! Ref: 4601014553
! Node: Generalized Finalization1019511
! Ref: gnat_rm/gnat_language_extensions generalized-finalization1019683
! Ref: 4611019683
! Node: Finalizable tagged types1023590
! Ref: gnat_rm/gnat_language_extensions finalizable-tagged-types1023700
! Ref: 4631023700
! Node: Composite types1024082
! Ref: gnat_rm/gnat_language_extensions composite-types1024239
! Ref: 4641024239
! Node: Interoperability with controlled types1024584
! Ref: gnat_rm/gnat_language_extensions interoperability-with-controlled-types1024708
! Ref: 4651024708
! Node: No_Raise aspect1025072
! Ref: gnat_rm/gnat_language_extensions no-raise-aspect1025253
! Ref: 4661025253
! Node: Inference of Dependent Types in Generic Instantiations1025601
! Ref: gnat_rm/gnat_language_extensions inference-of-dependent-types-in-generic-instantiations1025788
! Ref: 4671025788
! Node: External_Initialization Aspect1027791
! Ref: gnat_rm/gnat_language_extensions external-initialization-aspect1027980
! Ref: 4681027980
! Node: Finally construct1029040
! Ref: gnat_rm/gnat_language_extensions finally-construct1029166
! Node: Syntax<2>1029590
! Ref: gnat_rm/gnat_language_extensions id41029680
! Ref: 46a1029680
! Node: Legality Rules<2>1029914
! Ref: gnat_rm/gnat_language_extensions id51030033
! Ref: 46b1030033
! Node: Dynamic Semantics<2>1030349
! Ref: gnat_rm/gnat_language_extensions id61030450
! Ref: 46c1030450
! Node: Security Hardening Features1031103
! Ref: gnat_rm/security_hardening_features doc1031233
! Ref: 46d1031233
! Ref: gnat_rm/security_hardening_features id11031233
! Ref: 46e1031233
! Ref: gnat_rm/security_hardening_features security-hardening-features1031233
! Ref: 151031233
! Node: Register Scrubbing1031599
! Ref: gnat_rm/security_hardening_features register-scrubbing1031706
! Ref: 4691031706
! Node: Stack Scrubbing1032900
! Ref: gnat_rm/security_hardening_features stack-scrubbing1033037
! Ref: 4701033037
! Node: Hardened Conditionals1038018
! Ref: gnat_rm/security_hardening_features hardened-conditionals1038154
! Ref: 4711038154
! Node: Hardened Booleans1040756
! Ref: gnat_rm/security_hardening_features hardened-booleans1040900
! Ref: 4721040900
! Node: Control Flow Redundancy1042778
! Ref: gnat_rm/security_hardening_features control-flow-redundancy1042892
! Ref: 4731042892
! Node: Obsolescent Features1049024
! Ref: gnat_rm/obsolescent_features doc1049161
! Ref: 4741049161
! Ref: gnat_rm/obsolescent_features id11049161
! Ref: 4751049161
! Ref: gnat_rm/obsolescent_features obsolescent-features1049161
! Ref: 161049161
! Node: pragma No_Run_Time1049625
! Ref: gnat_rm/obsolescent_features id21049726
! Ref: 4761049726
! Ref: gnat_rm/obsolescent_features pragma-no-run-time1049726
! Ref: 4771049726
! Node: pragma Ravenscar1050258
! Ref: gnat_rm/obsolescent_features id31050394
! Ref: 4781050394
! Ref: gnat_rm/obsolescent_features pragma-ravenscar1050394
! Ref: 4791050394
! Node: pragma Restricted_Run_Time1050610
! Ref: gnat_rm/obsolescent_features id41050744
! Ref: 47a1050744
! Ref: gnat_rm/obsolescent_features pragma-restricted-run-time1050744
! Ref: 47b1050744
! Node: pragma Task_Info1051048
! Ref: gnat_rm/obsolescent_features id51051203
! Ref: 47c1051203
! Ref: gnat_rm/obsolescent_features pragma-task-info1051203
! Ref: 47d1051203
! Node: package System Task_Info s-tasinf ads1052068
! Ref: gnat_rm/obsolescent_features package-system-task-info1052188
! Ref: 47e1052188
! Ref: gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads1052188
! Ref: 47f1052188
! Node: Compatibility and Porting Guide1052554
! Ref: gnat_rm/compatibility_and_porting_guide doc1052694
! Ref: 4801052694
! Ref: gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide1052694
! Ref: 171052694
! Ref: gnat_rm/compatibility_and_porting_guide id11052694
! Ref: 4811052694
! Node: Writing Portable Fixed-Point Declarations1053333
! Ref: gnat_rm/compatibility_and_porting_guide id21053477
! Ref: 4821053477
! Ref: gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations1053477
! Ref: 4831053477
! Node: Compatibility with Ada 831057375
! Ref: gnat_rm/compatibility_and_porting_guide compatibility-with-ada-831057569
! Ref: 4841057569
! Ref: gnat_rm/compatibility_and_porting_guide id31057569
! Ref: 4851057569
! Node: Legal Ada 83 programs that are illegal in Ada 951058443
! Ref: gnat_rm/compatibility_and_porting_guide id41058591
! Ref: 4861058591
! Ref: gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-951058591
! Ref: 4871058591
! Node: More deterministic semantics1063173
! Ref: gnat_rm/compatibility_and_porting_guide id51063347
! Ref: 4881063347
! Ref: gnat_rm/compatibility_and_porting_guide more-deterministic-semantics1063347
! Ref: 4891063347
! Node: Changed semantics1064283
! Ref: gnat_rm/compatibility_and_porting_guide changed-semantics1064444
! Ref: 48a1064444
! Ref: gnat_rm/compatibility_and_porting_guide id61064444
! Ref: 48b1064444
! Node: Other language compatibility issues1066031
! Ref: gnat_rm/compatibility_and_porting_guide id71066155
! Ref: 48d1066155
! Ref: gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues1066155
! Ref: 48e1066155
! Node: Compatibility between Ada 95 and Ada 20051067452
! Ref: gnat_rm/compatibility_and_porting_guide compatibility-between-ada-95-and-ada-20051067645
! Ref: gnat_rm/compatibility_and_porting_guide id81067645
! Ref: 48f1067645
! Node: Implementation-dependent characteristics1070102
! Ref: gnat_rm/compatibility_and_porting_guide id91070306
! Ref: 4901070306
! Ref: gnat_rm/compatibility_and_porting_guide implementation-dependent-characteristics1070306
! Ref: 4911070306
! Node: Implementation-defined pragmas1071093
! Ref: gnat_rm/compatibility_and_porting_guide id101071243
! Ref: 4921071243
! Ref: gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas1071243
! Ref: 4931071243
! Node: Implementation-defined attributes1072227
! Ref: gnat_rm/compatibility_and_porting_guide id111072395
! Ref: 4941072395
! Ref: gnat_rm/compatibility_and_porting_guide implementation-defined-attributes1072395
! Ref: 4951072395
! Node: Libraries1072947
! Ref: gnat_rm/compatibility_and_porting_guide id121073102
! Ref: 4961073102
! Ref: gnat_rm/compatibility_and_porting_guide libraries1073102
! Ref: 4971073102
! Node: Elaboration order1074006
! Ref: gnat_rm/compatibility_and_porting_guide elaboration-order1074151
! Ref: 4981074151
! Ref: gnat_rm/compatibility_and_porting_guide id131074151
! Ref: 4991074151
! Node: Target-specific aspects1075611
! Ref: gnat_rm/compatibility_and_porting_guide id141075738
! Ref: 49a1075738
! Ref: gnat_rm/compatibility_and_porting_guide target-specific-aspects1075738
! Ref: 49b1075738
! Node: Compatibility with Other Ada Systems1076501
! Ref: gnat_rm/compatibility_and_porting_guide compatibility-with-other-ada-systems1076686
! Ref: 49d1076686
! Ref: gnat_rm/compatibility_and_porting_guide id151076686
! Ref: 49e1076686
! Node: Representation Clauses1078242
! Ref: gnat_rm/compatibility_and_porting_guide id161078415
! Ref: 49f1078415
! Ref: gnat_rm/compatibility_and_porting_guide representation-clauses1078415
! Ref: 49c1078415
! Node: Compatibility with HP Ada 831083066
! Ref: gnat_rm/compatibility_and_porting_guide compatibility-with-hp-ada-831083194
! Ref: 4a01083194
! Ref: gnat_rm/compatibility_and_porting_guide id171083194
! Ref: 4a11083194
! Node: GNU Free Documentation License1084080
! Ref: share/gnu_free_documentation_license doc1084205
! Ref: 4a21084205
! Ref: share/gnu_free_documentation_license gnu-fdl1084205
! Ref: 11084205
! Ref: share/gnu_free_documentation_license gnu-free-documentation-license1084205
! Ref: 4a31084205
! Node: Index1107663
  
  End Tag Table
  
--- 29179,32385 ----
  Node: Top326
  Ref: gnat_rm doc554
  Ref: 0554
! Node: About This Guide35033
! Ref: gnat_rm/about_this_guide doc35141
! Ref: 235141
! Ref: gnat_rm/about_this_guide about-this-guide35141
! Ref: 335141
! Ref: gnat_rm/about_this_guide gnat-reference-manual35141
! Ref: 435141
! Ref: gnat_rm/about_this_guide id135141
! Ref: 535141
! Node: What This Reference Manual Contains36531
! Ref: gnat_rm/about_this_guide what-this-reference-manual-contains36640
! Ref: 636640
! Node: Conventions40313
! Ref: gnat_rm/about_this_guide conventions40450
! Ref: 1840450
! Node: Related Information41017
! Ref: gnat_rm/about_this_guide related-information41110
! Ref: 1941110
! Node: Implementation Defined Pragmas42404
! Ref: gnat_rm/implementation_defined_pragmas doc42539
! Ref: 1a42539
! Ref: gnat_rm/implementation_defined_pragmas id142539
! Ref: 1b42539
! Ref: gnat_rm/implementation_defined_pragmas implementation-defined-pragmas42539
! Ref: 742539
! Node: Pragma Abort_Defer48959
! Ref: gnat_rm/implementation_defined_pragmas pragma-abort-defer49075
! Ref: 1c49075
! Node: Pragma Abstract_State49946
! Ref: gnat_rm/implementation_defined_pragmas id250084
! Ref: 1d50084
! Ref: gnat_rm/implementation_defined_pragmas pragma-abstract-state50084
! Ref: 1e50084
! Node: Pragma Ada_8351322
! Ref: gnat_rm/implementation_defined_pragmas pragma-ada-8351455
! Ref: 1f51455
! Node: Pragma Ada_9552546
! Ref: gnat_rm/implementation_defined_pragmas pragma-ada-9552671
! Ref: 2052671
! Node: Pragma Ada_0553189
! Ref: gnat_rm/implementation_defined_pragmas pragma-ada-0553316
! Ref: 2153316
! Node: Pragma Ada_200554342
! Ref: gnat_rm/implementation_defined_pragmas pragma-ada-200554469
! Ref: 2254469
! Node: Pragma Ada_1254636
! Ref: gnat_rm/implementation_defined_pragmas pragma-ada-1254765
! Ref: 2354765
! Node: Pragma Ada_201255940
! Ref: gnat_rm/implementation_defined_pragmas pragma-ada-201256069
! Ref: 2456069
! Node: Pragma Ada_202256236
! Ref: gnat_rm/implementation_defined_pragmas pragma-ada-202256388
! Ref: 2556388
! Node: Pragma Aggregate_Individually_Assign57580
! Ref: gnat_rm/implementation_defined_pragmas pragma-aggregate-individually-assign57745
! Ref: 2657745
! Node: Pragma Allow_Integer_Address58152
! Ref: gnat_rm/implementation_defined_pragmas pragma-allow-integer-address58326
! Ref: 2758326
! Node: Pragma Always_Terminates59939
! Ref: gnat_rm/implementation_defined_pragmas id360092
! Ref: 2860092
! Ref: gnat_rm/implementation_defined_pragmas pragma-always-terminates60092
! Ref: 2960092
! Node: Pragma Annotate60355
! Ref: gnat_rm/implementation_defined_pragmas id460493
! Ref: 2a60493
! Ref: gnat_rm/implementation_defined_pragmas pragma-annotate60493
! Ref: 2b60493
! Node: Pragma Assert61941
! Ref: gnat_rm/implementation_defined_pragmas pragma-assert62076
! Ref: 2c62076
! Node: Pragma Assert_And_Cut64582
! Ref: gnat_rm/implementation_defined_pragmas pragma-assert-and-cut64725
! Ref: 2d64725
! Node: Pragma Assertion_Policy65537
! Ref: gnat_rm/implementation_defined_pragmas pragma-assertion-policy65680
! Ref: 2e65680
! Node: Pragma Assume69410
! Ref: gnat_rm/implementation_defined_pragmas pragma-assume69563
! Ref: 2f69563
! Node: Pragma Assume_No_Invalid_Values70542
! Ref: gnat_rm/implementation_defined_pragmas pragma-assume-no-invalid-values70692
! Ref: 3070692
! Node: Pragma Async_Readers72475
! Ref: gnat_rm/implementation_defined_pragmas id572632
! Ref: 3172632
! Ref: gnat_rm/implementation_defined_pragmas pragma-async-readers72632
! Ref: 3272632
! Node: Pragma Async_Writers72885
! Ref: gnat_rm/implementation_defined_pragmas id673038
! Ref: 3373038
! Ref: gnat_rm/implementation_defined_pragmas pragma-async-writers73038
! Ref: 3473038
! Node: Pragma Attribute_Definition73291
! Ref: gnat_rm/implementation_defined_pragmas pragma-attribute-definition73445
! Ref: 3573445
! Node: Pragma C_Pass_By_Copy74072
! Ref: gnat_rm/implementation_defined_pragmas pragma-c-pass-by-copy74218
! Ref: 3674218
! Node: Pragma Check75400
! Ref: gnat_rm/implementation_defined_pragmas pragma-check75546
! Ref: 3775546
! Node: Pragma Check_Float_Overflow76800
! Ref: gnat_rm/implementation_defined_pragmas pragma-check-float-overflow76942
! Ref: 3876942
! Node: Pragma Check_Name78993
! Ref: gnat_rm/implementation_defined_pragmas pragma-check-name79142
! Ref: 3979142
! Node: Pragma Check_Policy80262
! Ref: gnat_rm/implementation_defined_pragmas pragma-check-policy80398
! Ref: 3a80398
! Node: Pragma Comment83211
! Ref: gnat_rm/implementation_defined_pragmas pragma-comment83350
! Ref: 3b83350
! Node: Pragma Common_Object83868
! Ref: gnat_rm/implementation_defined_pragmas pragma-common-object84013
! Ref: 3c84013
! Node: Pragma Compile_Time_Error84896
! Ref: gnat_rm/implementation_defined_pragmas compile-time-error85054
! Ref: 3d85054
! Ref: gnat_rm/implementation_defined_pragmas pragma-compile-time-error85054
! Ref: 3e85054
! Node: Pragma Compile_Time_Warning86124
! Ref: gnat_rm/implementation_defined_pragmas pragma-compile-time-warning86292
! Ref: 3f86292
! Node: Pragma Complete_Representation87525
! Ref: gnat_rm/implementation_defined_pragmas pragma-complete-representation87697
! Ref: 4087697
! Node: Pragma Complex_Representation88246
! Ref: gnat_rm/implementation_defined_pragmas pragma-complex-representation88417
! Ref: 4188417
! Node: Pragma Component_Alignment89173
! Ref: gnat_rm/implementation_defined_pragmas pragma-component-alignment89347
! Ref: 4289347
! Node: Pragma Constant_After_Elaboration92065
! Ref: gnat_rm/implementation_defined_pragmas id792231
! Ref: 4392231
! Ref: gnat_rm/implementation_defined_pragmas pragma-constant-after-elaboration92231
! Ref: 4492231
! Node: Pragma Contract_Cases92536
! Ref: gnat_rm/implementation_defined_pragmas id892704
! Ref: 4592704
! Ref: gnat_rm/implementation_defined_pragmas pragma-contract-cases92704
! Ref: 4692704
! Node: Pragma Convention_Identifier95539
! Ref: gnat_rm/implementation_defined_pragmas pragma-convention-identifier95690
! Ref: 4795690
! Node: Pragma CPP_Class96874
! Ref: gnat_rm/implementation_defined_pragmas pragma-cpp-class97026
! Ref: 4897026
! Node: Pragma CPP_Constructor98140
! Ref: gnat_rm/implementation_defined_pragmas pragma-cpp-constructor98282
! Ref: 4a98282
! Node: Pragma CPP_Virtual100206
! Ref: gnat_rm/implementation_defined_pragmas pragma-cpp-virtual100349
! Ref: 4b100349
! Node: Pragma CPP_Vtable100819
! Ref: gnat_rm/implementation_defined_pragmas pragma-cpp-vtable100950
! Ref: 4c100950
! Node: Pragma CPU101374
! Ref: gnat_rm/implementation_defined_pragmas pragma-cpu101508
! Ref: 4d101508
! Node: Pragma Deadline_Floor101748
! Ref: gnat_rm/implementation_defined_pragmas pragma-deadline-floor101877
! Ref: 4e101877
! Node: Pragma Debug102193
! Ref: gnat_rm/implementation_defined_pragmas pragma-debug102331
! Ref: 4f102331
! Node: Pragma Debug_Policy103283
! Ref: gnat_rm/implementation_defined_pragmas pragma-debug-policy103432
! Ref: 50103432
! Node: Pragma Default_Initial_Condition103721
! Ref: gnat_rm/implementation_defined_pragmas id9103893
! Ref: 51103893
! Ref: gnat_rm/implementation_defined_pragmas pragma-default-initial-condition103893
! Ref: 52103893
! Node: Pragma Default_Scalar_Storage_Order104194
! Ref: gnat_rm/implementation_defined_pragmas pragma-default-scalar-storage-order104374
! Ref: 53104374
! Node: Pragma Default_Storage_Pool106666
! Ref: gnat_rm/implementation_defined_pragmas pragma-default-storage-pool106828
! Ref: 54106828
! Node: Pragma Depends107133
! Ref: gnat_rm/implementation_defined_pragmas id10107282
! Ref: 55107282
! Ref: gnat_rm/implementation_defined_pragmas pragma-depends107282
! Ref: 56107282
! Node: Pragma Detect_Blocking107982
! Ref: gnat_rm/implementation_defined_pragmas pragma-detect-blocking108141
! Ref: 57108141
! Node: Pragma Disable_Atomic_Synchronization108530
! Ref: gnat_rm/implementation_defined_pragmas pragma-disable-atomic-synchronization108700
! Ref: 58108700
! Node: Pragma Dispatching_Domain109662
! Ref: gnat_rm/implementation_defined_pragmas pragma-dispatching-domain109832
! Ref: 59109832
! Node: Pragma Effective_Reads110117
! Ref: gnat_rm/implementation_defined_pragmas id11110273
! Ref: 5a110273
! Ref: gnat_rm/implementation_defined_pragmas pragma-effective-reads110273
! Ref: 5b110273
! Node: Pragma Effective_Writes110534
! Ref: gnat_rm/implementation_defined_pragmas id12110690
! Ref: 5c110690
! Ref: gnat_rm/implementation_defined_pragmas pragma-effective-writes110690
! Ref: 5d110690
! Node: Pragma Elaboration_Checks110955
! Ref: gnat_rm/implementation_defined_pragmas pragma-elaboration-checks111105
! Ref: 5e111105
! Node: Pragma Eliminate111933
! Ref: gnat_rm/implementation_defined_pragmas pragma-eliminate112096
! Ref: 5f112096
! Node: Pragma Enable_Atomic_Synchronization117828
! Ref: gnat_rm/implementation_defined_pragmas pragma-enable-atomic-synchronization117990
! Ref: 60117990
! Node: Pragma Exceptional_Cases118235
! Ref: gnat_rm/implementation_defined_pragmas pragma-exceptional-cases118398
! Ref: 61118398
! Node: Pragma Exit_Cases118817
! Ref: gnat_rm/implementation_defined_pragmas pragma-exit-cases118966
! Ref: 62118966
! Node: Pragma Export_Function119427
! Ref: gnat_rm/implementation_defined_pragmas pragma-export-function119572
! Ref: 63119572
! Node: Pragma Export_Object122028
! Ref: gnat_rm/implementation_defined_pragmas pragma-export-object122179
! Ref: 64122179
! Node: Pragma Export_Procedure122850
! Ref: gnat_rm/implementation_defined_pragmas pragma-export-procedure123009
! Ref: 65123009
! Node: Pragma Export_Valued_Procedure124507
! Ref: gnat_rm/implementation_defined_pragmas pragma-export-valued-procedure124666
! Ref: 66124666
! Node: Pragma Extend_System126519
! Ref: gnat_rm/implementation_defined_pragmas pragma-extend-system126680
! Ref: 67126680
! Node: Pragma Extensions_Allowed128734
! Ref: gnat_rm/implementation_defined_pragmas id13128890
! Ref: 68128890
! Ref: gnat_rm/implementation_defined_pragmas pragma-extensions-allowed128890
! Ref: 69128890
! Node: Pragma Extensions_Visible129658
! Ref: gnat_rm/implementation_defined_pragmas id14129809
! Ref: 6c129809
! Ref: gnat_rm/implementation_defined_pragmas pragma-extensions-visible129809
! Ref: 6d129809
! Node: Pragma External130082
! Ref: gnat_rm/implementation_defined_pragmas pragma-external130235
! Ref: 6e130235
! Node: Pragma External_Name_Casing130802
! Ref: gnat_rm/implementation_defined_pragmas pragma-external-name-casing130946
! Ref: 6f130946
! Node: Pragma Fast_Math133954
! Ref: gnat_rm/implementation_defined_pragmas pragma-fast-math134105
! Ref: 70134105
! Node: Pragma Favor_Top_Level134974
! Ref: gnat_rm/implementation_defined_pragmas id15135126
! Ref: 71135126
! Ref: gnat_rm/implementation_defined_pragmas pragma-favor-top-level135126
! Ref: 72135126
! Node: Pragma Finalize_Storage_Only135805
! Ref: gnat_rm/implementation_defined_pragmas pragma-finalize-storage-only135968
! Ref: 73135968
! Node: Pragma Float_Representation136730
! Ref: gnat_rm/implementation_defined_pragmas pragma-float-representation136883
! Ref: 74136883
! Node: Pragma Ghost137738
! Ref: gnat_rm/implementation_defined_pragmas id16137876
! Ref: 75137876
! Ref: gnat_rm/implementation_defined_pragmas pragma-ghost137876
! Ref: 76137876
! Node: Pragma Global138095
! Ref: gnat_rm/implementation_defined_pragmas id17138218
! Ref: 77138218
! Ref: gnat_rm/implementation_defined_pragmas pragma-global138218
! Ref: 78138218
! Node: Pragma Ident138765
! Ref: gnat_rm/implementation_defined_pragmas pragma-ident138896
! Ref: 79138896
! Node: Pragma Ignore_Pragma139132
! Ref: gnat_rm/implementation_defined_pragmas pragma-ignore-pragma139279
! Ref: 7a139279
! Node: Pragma Implementation_Defined140008
! Ref: gnat_rm/implementation_defined_pragmas pragma-implementation-defined140161
! Ref: 7b140161
! Node: Pragma Implemented140873
! Ref: gnat_rm/implementation_defined_pragmas pragma-implemented141029
! Ref: 7c141029
! Node: Pragma Implicit_Packing142648
! Ref: gnat_rm/implementation_defined_pragmas pragma-implicit-packing142797
! Ref: 7d142797
! Node: Pragma Import_Function144620
! Ref: gnat_rm/implementation_defined_pragmas pragma-import-function144771
! Ref: 7e144771
! Node: Pragma Import_Object146884
! Ref: gnat_rm/implementation_defined_pragmas pragma-import-object147035
! Ref: 7f147035
! Node: Pragma Import_Procedure147739
! Ref: gnat_rm/implementation_defined_pragmas pragma-import-procedure147898
! Ref: 80147898
! Node: Pragma Import_Valued_Procedure148830
! Ref: gnat_rm/implementation_defined_pragmas pragma-import-valued-procedure148987
! Ref: 81148987
! Node: Pragma Independent150764
! Ref: gnat_rm/implementation_defined_pragmas pragma-independent150927
! Ref: 82150927
! Node: Pragma Independent_Components151614
! Ref: gnat_rm/implementation_defined_pragmas pragma-independent-components151771
! Ref: 83151771
! Node: Pragma Initial_Condition152433
! Ref: gnat_rm/implementation_defined_pragmas id18152597
! Ref: 84152597
! Ref: gnat_rm/implementation_defined_pragmas pragma-initial-condition152597
! Ref: 85152597
! Node: Pragma Initialize_Scalars152855
! Ref: gnat_rm/implementation_defined_pragmas pragma-initialize-scalars153008
! Ref: 86153008
! Node: Pragma Initializes156688
! Ref: gnat_rm/implementation_defined_pragmas id19156837
! Ref: 87156837
! Ref: gnat_rm/implementation_defined_pragmas pragma-initializes156837
! Ref: 88156837
! Node: Pragma Inline_Always157323
! Ref: gnat_rm/implementation_defined_pragmas id20157468
! Ref: 89157468
! Ref: gnat_rm/implementation_defined_pragmas pragma-inline-always157468
! Ref: 8a157468
! Node: Pragma Inline_Generic158100
! Ref: gnat_rm/implementation_defined_pragmas pragma-inline-generic158243
! Ref: 8b158243
! Node: Pragma Interface158625
! Ref: gnat_rm/implementation_defined_pragmas pragma-interface158769
! Ref: 8c158769
! Node: Pragma Interface_Name159742
! Ref: gnat_rm/implementation_defined_pragmas pragma-interface-name159889
! Ref: 8d159889
! Node: Pragma Interrupt_Handler160407
! Ref: gnat_rm/implementation_defined_pragmas pragma-interrupt-handler160560
! Ref: 8e160560
! Node: Pragma Interrupt_State160816
! Ref: gnat_rm/implementation_defined_pragmas pragma-interrupt-state160983
! Ref: 8f160983
! Node: Pragma Interrupts_System_By_Default164183
! Ref: gnat_rm/implementation_defined_pragmas pragma-interrupts-system-by-default164342
! Ref: 90164342
! Node: Pragma Invariant164604
! Ref: gnat_rm/implementation_defined_pragmas id21164758
! Ref: 91164758
! Ref: gnat_rm/implementation_defined_pragmas pragma-invariant164758
! Ref: 92164758
! Node: Pragma Keep_Names166414
! Ref: gnat_rm/implementation_defined_pragmas pragma-keep-names166547
! Ref: 93166547
! Node: Pragma License167163
! Ref: gnat_rm/implementation_defined_pragmas pragma-license167296
! Ref: 94167296
! Node: Pragma Link_With170394
! Ref: gnat_rm/implementation_defined_pragmas pragma-link-with170529
! Ref: 95170529
! Node: Pragma Linker_Alias171170
! Ref: gnat_rm/implementation_defined_pragmas pragma-linker-alias171316
! Ref: 96171316
! Node: Pragma Linker_Constructor172595
! Ref: gnat_rm/implementation_defined_pragmas pragma-linker-constructor172749
! Ref: 97172749
! Node: Pragma Linker_Destructor173980
! Ref: gnat_rm/implementation_defined_pragmas pragma-linker-destructor174136
! Ref: 98174136
! Node: Pragma Linker_Section174917
! Ref: gnat_rm/implementation_defined_pragmas id22175064
! Ref: 99175064
! Ref: gnat_rm/implementation_defined_pragmas pragma-linker-section175064
! Ref: 9a175064
! Node: Pragma Lock_Free178115
! Ref: gnat_rm/implementation_defined_pragmas id23178259
! Ref: 9b178259
! Ref: gnat_rm/implementation_defined_pragmas pragma-lock-free178259
! Ref: 9c178259
! Node: Pragma Loop_Invariant179641
! Ref: gnat_rm/implementation_defined_pragmas pragma-loop-invariant179784
! Ref: 9d179784
! Node: Pragma Loop_Optimize180976
! Ref: gnat_rm/implementation_defined_pragmas pragma-loop-optimize181122
! Ref: 9e181122
! Node: Pragma Loop_Variant182856
! Ref: gnat_rm/implementation_defined_pragmas pragma-loop-variant183005
! Ref: 9f183005
! Node: Pragma Machine_Attribute184814
! Ref: gnat_rm/implementation_defined_pragmas pragma-machine-attribute184954
! Ref: a0184954
! Node: Pragma Main185921
! Ref: gnat_rm/implementation_defined_pragmas pragma-main186061
! Ref: a1186061
! Node: Pragma Main_Storage186499
! Ref: gnat_rm/implementation_defined_pragmas pragma-main-storage186638
! Ref: a2186638
! Node: Pragma Max_Queue_Length187045
! Ref: gnat_rm/implementation_defined_pragmas id24187187
! Ref: a3187187
! Ref: gnat_rm/implementation_defined_pragmas pragma-max-queue-length187187
! Ref: a4187187
! Node: Pragma No_Body187614
! Ref: gnat_rm/implementation_defined_pragmas pragma-no-body187754
! Ref: a5187754
! Node: Pragma No_Caching188537
! Ref: gnat_rm/implementation_defined_pragmas id25188684
! Ref: a6188684
! Ref: gnat_rm/implementation_defined_pragmas pragma-no-caching188684
! Ref: a7188684
! Node: Pragma No_Component_Reordering188927
! Ref: gnat_rm/implementation_defined_pragmas pragma-no-component-reordering189090
! Ref: a8189090
! Node: Pragma No_Elaboration_Code_All189750
! Ref: gnat_rm/implementation_defined_pragmas id26189923
! Ref: a9189923
! Ref: gnat_rm/implementation_defined_pragmas pragma-no-elaboration-code-all189923
! Ref: aa189923
! Node: Pragma No_Heap_Finalization190585
! Ref: gnat_rm/implementation_defined_pragmas pragma-no-heap-finalization190744
! Ref: ab190744
! Node: Pragma No_Inline191896
! Ref: gnat_rm/implementation_defined_pragmas id27192040
! Ref: ac192040
! Ref: gnat_rm/implementation_defined_pragmas pragma-no-inline192040
! Ref: ad192040
! Node: Pragma No_Raise192547
! Ref: gnat_rm/implementation_defined_pragmas id28192680
! Ref: ae192680
! Ref: gnat_rm/implementation_defined_pragmas pragma-no-raise192680
! Ref: af192680
! Node: Pragma No_Return193196
! Ref: gnat_rm/implementation_defined_pragmas pragma-no-return193338
! Ref: b0193338
! Node: Pragma No_Strict_Aliasing194311
! Ref: gnat_rm/implementation_defined_pragmas pragma-no-strict-aliasing194462
! Ref: b1194462
! Node: Pragma No_Tagged_Streams195188
! Ref: gnat_rm/implementation_defined_pragmas id29195347
! Ref: b2195347
! Ref: gnat_rm/implementation_defined_pragmas pragma-no-tagged-streams195347
! Ref: b3195347
! Node: Pragma Normalize_Scalars197122
! Ref: gnat_rm/implementation_defined_pragmas pragma-normalize-scalars197274
! Ref: b4197274
! Node: Pragma Obsolescent200212
! Ref: gnat_rm/implementation_defined_pragmas id30200365
! Ref: b5200365
! Ref: gnat_rm/implementation_defined_pragmas pragma-obsolescent200365
! Ref: b6200365
! Node: Pragma Optimize_Alignment203820
! Ref: gnat_rm/implementation_defined_pragmas pragma-optimize-alignment203963
! Ref: b7203963
! Node: Pragma Ordered207474
! Ref: gnat_rm/implementation_defined_pragmas pragma-ordered207619
! Ref: b8207619
! Node: Pragma Overflow_Mode210723
! Ref: gnat_rm/implementation_defined_pragmas pragma-overflow-mode210870
! Ref: b9210870
! Node: Pragma Overriding_Renamings212208
! Ref: gnat_rm/implementation_defined_pragmas pragma-overriding-renamings212355
! Ref: ba212355
! Node: Pragma Part_Of213017
! Ref: gnat_rm/implementation_defined_pragmas id31213179
! Ref: bb213179
! Ref: gnat_rm/implementation_defined_pragmas pragma-part-of213179
! Ref: bc213179
! Node: Pragma Partition_Elaboration_Policy213425
! Ref: gnat_rm/implementation_defined_pragmas pragma-partition-elaboration-policy213574
! Ref: bd213574
! Node: Pragma Passive213950
! Ref: gnat_rm/implementation_defined_pragmas pragma-passive214106
! Ref: be214106
! Node: Pragma Persistent_BSS214964
! Ref: gnat_rm/implementation_defined_pragmas id32215096
! Ref: bf215096
! Ref: gnat_rm/implementation_defined_pragmas pragma-persistent-bss215096
! Ref: c0215096
! Node: Pragma Post216299
! Ref: gnat_rm/implementation_defined_pragmas pragma-post216437
! Ref: c1216437
! Node: Pragma Postcondition216952
! Ref: gnat_rm/implementation_defined_pragmas pragma-postcondition217086
! Ref: c2217086
! Node: Pragma Post_Class222830
! Ref: gnat_rm/implementation_defined_pragmas pragma-post-class222963
! Ref: c3222963
! Node: Pragma Pre224020
! Ref: gnat_rm/implementation_defined_pragmas pragma-pre224152
! Ref: c4224152
! Node: Pragma Precondition224662
! Ref: gnat_rm/implementation_defined_pragmas pragma-precondition224793
! Ref: c5224793
! Node: Pragma Predicate226740
! Ref: gnat_rm/implementation_defined_pragmas id33226885
! Ref: c6226885
! Ref: gnat_rm/implementation_defined_pragmas pragma-predicate226885
! Ref: c7226885
! Node: Pragma Predicate_Failure228641
! Ref: gnat_rm/implementation_defined_pragmas pragma-predicate-failure228802
! Ref: c8228802
! Node: Pragma Preelaborable_Initialization229159
! Ref: gnat_rm/implementation_defined_pragmas pragma-preelaborable-initialization229336
! Ref: c9229336
! Node: Pragma Prefix_Exception_Messages229654
! Ref: gnat_rm/implementation_defined_pragmas pragma-prefix-exception-messages229823
! Ref: ca229823
! Node: Pragma Pre_Class230744
! Ref: gnat_rm/implementation_defined_pragmas pragma-pre-class230914
! Ref: cb230914
! Node: Pragma Priority_Specific_Dispatching231962
! Ref: gnat_rm/implementation_defined_pragmas pragma-priority-specific-dispatching232114
! Ref: cc232114
! Node: Pragma Profile232713
! Ref: gnat_rm/implementation_defined_pragmas pragma-profile232872
! Ref: cd232872
! Node: Pragma Profile_Warnings239809
! Ref: gnat_rm/implementation_defined_pragmas pragma-profile-warnings239959
! Ref: ce239959
! Node: Pragma Propagate_Exceptions240398
! Ref: gnat_rm/implementation_defined_pragmas pragma-propagate-exceptions240564
! Ref: cf240564
! Node: Pragma Provide_Shift_Operators240962
! Ref: gnat_rm/implementation_defined_pragmas pragma-provide-shift-operators241124
! Ref: d0241124
! Node: Pragma Psect_Object241687
! Ref: gnat_rm/implementation_defined_pragmas pragma-psect-object241842
! Ref: d1241842
! Node: Pragma Pure_Function242195
! Ref: gnat_rm/implementation_defined_pragmas id34242335
! Ref: d2242335
! Ref: gnat_rm/implementation_defined_pragmas pragma-pure-function242335
! Ref: d3242335
! Node: Pragma Rational245381
! Ref: gnat_rm/implementation_defined_pragmas pragma-rational245518
! Ref: d4245518
! Node: Pragma Ravenscar245734
! Ref: gnat_rm/implementation_defined_pragmas pragma-ravenscar245873
! Ref: d5245873
! Node: Pragma Refined_Depends246164
! Ref: gnat_rm/implementation_defined_pragmas id35246309
! Ref: d6246309
! Ref: gnat_rm/implementation_defined_pragmas pragma-refined-depends246309
! Ref: d7246309
! Node: Pragma Refined_Global247043
! Ref: gnat_rm/implementation_defined_pragmas id36247191
! Ref: d8247191
! Ref: gnat_rm/implementation_defined_pragmas pragma-refined-global247191
! Ref: d9247191
! Node: Pragma Refined_Post247772
! Ref: gnat_rm/implementation_defined_pragmas id37247918
! Ref: da247918
! Ref: gnat_rm/implementation_defined_pragmas pragma-refined-post247918
! Ref: db247918
! Node: Pragma Refined_State248158
! Ref: gnat_rm/implementation_defined_pragmas id38248307
! Ref: dc248307
! Ref: gnat_rm/implementation_defined_pragmas pragma-refined-state248307
! Ref: dd248307
! Node: Pragma Relative_Deadline248832
! Ref: gnat_rm/implementation_defined_pragmas pragma-relative-deadline248987
! Ref: de248987
! Node: Pragma Remote_Access_Type249281
! Ref: gnat_rm/implementation_defined_pragmas id39249436
! Ref: df249436
! Ref: gnat_rm/implementation_defined_pragmas pragma-remote-access-type249436
! Ref: e0249436
! Node: Pragma Rename_Pragma250314
! Ref: gnat_rm/implementation_defined_pragmas pragma-rename-pragma250471
! Ref: e1250471
! Node: Pragma Restricted_Run_Time251634
! Ref: gnat_rm/implementation_defined_pragmas pragma-restricted-run-time251793
! Ref: e2251793
! Node: Pragma Restriction_Warnings252119
! Ref: gnat_rm/implementation_defined_pragmas pragma-restriction-warnings252275
! Ref: e3252275
! Node: Pragma Reviewable253563
! Ref: gnat_rm/implementation_defined_pragmas pragma-reviewable253720
! Ref: e4253720
! Node: Pragma Secondary_Stack_Size256244
! Ref: gnat_rm/implementation_defined_pragmas id40256394
! Ref: e5256394
! Ref: gnat_rm/implementation_defined_pragmas pragma-secondary-stack-size256394
! Ref: e6256394
! Node: Pragma Share_Generic257870
! Ref: gnat_rm/implementation_defined_pragmas pragma-share-generic258016
! Ref: e7258016
! Node: Pragma Shared258408
! Ref: gnat_rm/implementation_defined_pragmas id41258554
! Ref: e8258554
! Ref: gnat_rm/implementation_defined_pragmas pragma-shared258554
! Ref: e9258554
! Node: Pragma Short_Circuit_And_Or258709
! Ref: gnat_rm/implementation_defined_pragmas pragma-short-circuit-and-or258859
! Ref: ea258859
! Node: Pragma Short_Descriptors259513
! Ref: gnat_rm/implementation_defined_pragmas pragma-short-descriptors259669
! Ref: eb259669
! Node: Pragma Side_Effects259911
! Ref: gnat_rm/implementation_defined_pragmas id42260071
! Ref: ec260071
! Ref: gnat_rm/implementation_defined_pragmas pragma-side-effects260071
! Ref: ed260071
! Node: Pragma Simple_Storage_Pool_Type260318
! Ref: gnat_rm/implementation_defined_pragmas id43260477
! Ref: ee260477
! Ref: gnat_rm/implementation_defined_pragmas pragma-simple-storage-pool-type260477
! Ref: ef260477
! Node: Pragma Source_File_Name262767
! Ref: gnat_rm/implementation_defined_pragmas id44262938
! Ref: f1262938
! Ref: gnat_rm/implementation_defined_pragmas pragma-source-file-name262938
! Ref: f2262938
! Node: Pragma Source_File_Name_Project266413
! Ref: gnat_rm/implementation_defined_pragmas id45266576
! Ref: f4266576
! Ref: gnat_rm/implementation_defined_pragmas pragma-source-file-name-project266576
! Ref: f3266576
! Node: Pragma Source_Reference267351
! Ref: gnat_rm/implementation_defined_pragmas pragma-source-reference267508
! Ref: f5267508
! Node: Pragma SPARK_Mode268349
! Ref: gnat_rm/implementation_defined_pragmas id46268508
! Ref: f6268508
! Ref: gnat_rm/implementation_defined_pragmas pragma-spark-mode268508
! Ref: f7268508
! Node: Pragma Static_Elaboration_Desired270525
! Ref: gnat_rm/implementation_defined_pragmas pragma-static-elaboration-desired270682
! Ref: f8270682
! Node: Pragma Stream_Convert271692
! Ref: gnat_rm/implementation_defined_pragmas pragma-stream-convert271851
! Ref: f9271851
! Node: Pragma Style_Checks275020
! Ref: gnat_rm/implementation_defined_pragmas pragma-style-checks275171
! Ref: fa275171
! Node: Pragma Subprogram_Variant279459
! Ref: gnat_rm/implementation_defined_pragmas pragma-subprogram-variant279604
! Ref: fb279604
! Node: Pragma Subtitle280360
! Ref: gnat_rm/implementation_defined_pragmas pragma-subtitle280501
! Ref: fc280501
! Node: Pragma Suppress280703
! Ref: gnat_rm/implementation_defined_pragmas pragma-suppress280838
! Ref: fd280838
! Node: Pragma Suppress_All283709
! Ref: gnat_rm/implementation_defined_pragmas pragma-suppress-all283855
! Ref: fe283855
! Node: Pragma Suppress_Debug_Info284397
! Ref: gnat_rm/implementation_defined_pragmas id47284563
! Ref: ff284563
! Ref: gnat_rm/implementation_defined_pragmas pragma-suppress-debug-info284563
! Ref: 100284563
! Node: Pragma Suppress_Exception_Locations284895
! Ref: gnat_rm/implementation_defined_pragmas pragma-suppress-exception-locations285072
! Ref: 101285072
! Node: Pragma Suppress_Initialization286003
! Ref: gnat_rm/implementation_defined_pragmas id48286170
! Ref: 102286170
! Ref: gnat_rm/implementation_defined_pragmas pragma-suppress-initialization286170
! Ref: 103286170
! Node: Pragma Task_Name287746
! Ref: gnat_rm/implementation_defined_pragmas pragma-task-name287897
! Ref: 104287897
! Node: Pragma Task_Storage289476
! Ref: gnat_rm/implementation_defined_pragmas pragma-task-storage289613
! Ref: 105289613
! Node: Pragma Test_Case290148
! Ref: gnat_rm/implementation_defined_pragmas id49290296
! Ref: 106290296
! Ref: gnat_rm/implementation_defined_pragmas pragma-test-case290296
! Ref: 107290296
! Node: Pragma Thread_Local_Storage292390
! Ref: gnat_rm/implementation_defined_pragmas id50292536
! Ref: 108292536
! Ref: gnat_rm/implementation_defined_pragmas pragma-thread-local-storage292536
! Ref: 109292536
! Node: Pragma Time_Slice293749
! Ref: gnat_rm/implementation_defined_pragmas pragma-time-slice293891
! Ref: 10a293891
! Node: Pragma Title294275
! Ref: gnat_rm/implementation_defined_pragmas pragma-title294411
! Ref: 10b294411
! Node: Pragma Type_Invariant295128
! Ref: gnat_rm/implementation_defined_pragmas pragma-type-invariant295274
! Ref: 10c295274
! Node: Pragma Type_Invariant_Class295814
! Ref: gnat_rm/implementation_defined_pragmas id51295970
! Ref: 10d295970
! Ref: gnat_rm/implementation_defined_pragmas pragma-type-invariant-class295970
! Ref: 10e295970
! Node: Pragma Unchecked_Union296885
! Ref: gnat_rm/implementation_defined_pragmas pragma-unchecked-union297049
! Ref: 10f297049
! Node: Pragma Unevaluated_Use_Of_Old297615
! Ref: gnat_rm/implementation_defined_pragmas pragma-unevaluated-use-of-old297781
! Ref: 110297781
! Node: Pragma User_Aspect_Definition299708
! Ref: gnat_rm/implementation_defined_pragmas pragma-user-aspect-definition299877
! Ref: 111299877
! Node: Pragma Unimplemented_Unit301276
! Ref: gnat_rm/implementation_defined_pragmas pragma-unimplemented-unit301441
! Ref: 112301441
! Node: Pragma Universal_Aliasing301999
! Ref: gnat_rm/implementation_defined_pragmas id52302152
! Ref: 113302152
! Ref: gnat_rm/implementation_defined_pragmas pragma-universal-aliasing302152
! Ref: 114302152
! Node: Pragma Unmodified302691
! Ref: gnat_rm/implementation_defined_pragmas id53302838
! Ref: 115302838
! Ref: gnat_rm/implementation_defined_pragmas pragma-unmodified302838
! Ref: 116302838
! Node: Pragma Unreferenced303916
! Ref: gnat_rm/implementation_defined_pragmas id54304065
! Ref: 117304065
! Ref: gnat_rm/implementation_defined_pragmas pragma-unreferenced304065
! Ref: 118304065
! Node: Pragma Unreferenced_Objects306743
! Ref: gnat_rm/implementation_defined_pragmas id55306906
! Ref: 119306906
! Ref: gnat_rm/implementation_defined_pragmas pragma-unreferenced-objects306906
! Ref: 11a306906
! Node: Pragma Unreserve_All_Interrupts307683
! Ref: gnat_rm/implementation_defined_pragmas pragma-unreserve-all-interrupts307844
! Ref: 11b307844
! Node: Pragma Unsuppress309349
! Ref: gnat_rm/implementation_defined_pragmas pragma-unsuppress309496
! Ref: 11c309496
! Node: Pragma Unused310766
! Ref: gnat_rm/implementation_defined_pragmas id56310902
! Ref: 11d310902
! Ref: gnat_rm/implementation_defined_pragmas pragma-unused310902
! Ref: 11e310902
! Node: Pragma Use_VADS_Size312078
! Ref: gnat_rm/implementation_defined_pragmas pragma-use-vads-size312219
! Ref: 11f312219
! Node: Pragma Validity_Checks312780
! Ref: gnat_rm/implementation_defined_pragmas pragma-validity-checks312923
! Ref: 120312923
! Node: Pragma Volatile314690
! Ref: gnat_rm/implementation_defined_pragmas id57314840
! Ref: 121314840
! Ref: gnat_rm/implementation_defined_pragmas pragma-volatile314840
! Ref: 122314840
! Node: Pragma Volatile_Full_Access315310
! Ref: gnat_rm/implementation_defined_pragmas id58315462
! Ref: 123315462
! Ref: gnat_rm/implementation_defined_pragmas pragma-volatile-full-access315462
! Ref: 124315462
! Node: Pragma Volatile_Function316530
! Ref: gnat_rm/implementation_defined_pragmas id59316690
! Ref: 125316690
! Ref: gnat_rm/implementation_defined_pragmas pragma-volatile-function316690
! Ref: 126316690
! Node: Pragma Warning_As_Error316961
! Ref: gnat_rm/implementation_defined_pragmas pragma-warning-as-error317109
! Ref: 127317109
! Node: Pragma Warnings320465
! Ref: gnat_rm/implementation_defined_pragmas id60320609
! Ref: 129320609
! Ref: gnat_rm/implementation_defined_pragmas pragma-warnings320609
! Ref: 128320609
! Node: Pragma Weak_External328064
! Ref: gnat_rm/implementation_defined_pragmas pragma-weak-external328215
! Ref: 12a328215
! Node: Pragma Wide_Character_Encoding329896
! Ref: gnat_rm/implementation_defined_pragmas pragma-wide-character-encoding330023
! Ref: 12b330023
! Node: Implementation Defined Aspects331155
! Ref: gnat_rm/implementation_defined_aspects doc331307
! Ref: 12c331307
! Ref: gnat_rm/implementation_defined_aspects id1331307
! Ref: 12d331307
! Ref: gnat_rm/implementation_defined_aspects implementation-defined-aspects331307
! Ref: 12e331307
! Node: Aspect Abstract_State334757
! Ref: gnat_rm/implementation_defined_aspects aspect-abstract-state334879
! Ref: 12f334879
! Node: Aspect Always_Terminates334995
! Ref: gnat_rm/implementation_defined_aspects aspect-always-terminates335141
! Ref: 130335141
! Node: Aspect Annotate335274
! Ref: gnat_rm/implementation_defined_aspects aspect-annotate335419
! Ref: 131335419
! Node: Aspect Async_Readers335878
! Ref: gnat_rm/implementation_defined_aspects aspect-async-readers336019
! Ref: 132336019
! Node: Aspect Async_Writers336140
! Ref: gnat_rm/implementation_defined_aspects aspect-async-writers336299
! Ref: 133336299
! Node: Aspect Constant_After_Elaboration336420
! Ref: gnat_rm/implementation_defined_aspects aspect-constant-after-elaboration336580
! Ref: 134336580
! Node: Aspect Contract_Cases336732
! Ref: gnat_rm/implementation_defined_aspects aspect-contract-cases336886
! Ref: 135336886
! Node: Aspect Depends337098
! Ref: gnat_rm/implementation_defined_aspects aspect-depends337251
! Ref: 136337251
! Node: Aspect Default_Initial_Condition337346
! Ref: gnat_rm/implementation_defined_aspects aspect-default-initial-condition337494
! Ref: 137337494
! Node: Aspect Dimension337643
! Ref: gnat_rm/implementation_defined_aspects aspect-dimension337800
! Ref: 138337800
! Node: Aspect Dimension_System339022
! Ref: gnat_rm/implementation_defined_aspects aspect-dimension-system339172
! Ref: 139339172
! Node: Aspect Disable_Controlled341722
! Ref: gnat_rm/implementation_defined_aspects aspect-disable-controlled341878
! Ref: 13a341878
! Node: Aspect Effective_Reads342319
! Ref: gnat_rm/implementation_defined_aspects aspect-effective-reads342475
! Ref: 13b342475
! Node: Aspect Effective_Writes342596
! Ref: gnat_rm/implementation_defined_aspects aspect-effective-writes342751
! Ref: 13c342751
! Node: Aspect Exceptional_Cases342875
! Ref: gnat_rm/implementation_defined_aspects aspect-exceptional-cases343025
! Ref: 13d343025
! Node: Aspect Exit_Cases343443
! Ref: gnat_rm/implementation_defined_aspects aspect-exit-cases343595
! Ref: 13e343595
! Node: Aspect Extensions_Visible344006
! Ref: gnat_rm/implementation_defined_aspects aspect-extensions-visible344156
! Ref: 13f344156
! Node: Aspect Favor_Top_Level344286
! Ref: gnat_rm/implementation_defined_aspects aspect-favor-top-level344431
! Ref: 140344431
! Node: Aspect Ghost344560
! Ref: gnat_rm/implementation_defined_aspects aspect-ghost344702
! Ref: 141344702
! Node: Aspect Ghost_Predicate344793
! Ref: gnat_rm/implementation_defined_aspects aspect-ghost-predicate344926
! Ref: 142344926
! Node: Aspect Global345256
! Ref: gnat_rm/implementation_defined_aspects aspect-global345401
! Ref: 143345401
! Node: Aspect Initial_Condition345495
! Ref: gnat_rm/implementation_defined_aspects aspect-initial-condition345636
! Ref: 144345636
! Node: Aspect Initializes345763
! Ref: gnat_rm/implementation_defined_aspects aspect-initializes345911
! Ref: 145345911
! Node: Aspect Inline_Always346020
! Ref: gnat_rm/implementation_defined_aspects aspect-inline-always346160
! Ref: 146346160
! Node: Aspect Invariant346283
! Ref: gnat_rm/implementation_defined_aspects aspect-invariant346429
! Ref: 147346429
! Node: Aspect Invariantâ€™Class346681
! Ref: gnat_rm/implementation_defined_aspects aspect-invariant-class346822
! Ref: 148346822
! Node: Aspect Iterable347106
! Ref: gnat_rm/implementation_defined_aspects aspect-iterable347252
! Ref: 149347252
! Node: Aspect Linker_Section349859
! Ref: gnat_rm/implementation_defined_aspects aspect-linker-section350006
! Ref: 14a350006
! Node: Aspect Local_Restrictions350124
! Ref: gnat_rm/implementation_defined_aspects aspect-local-restrictions350272
! Ref: 14b350272
! Node: Aspect Lock_Free353018
! Ref: gnat_rm/implementation_defined_aspects aspect-lock-free353168
! Ref: 14c353168
! Node: Aspect Max_Queue_Length353279
! Ref: gnat_rm/implementation_defined_aspects aspect-max-queue-length353421
! Ref: 14d353421
! Node: Aspect No_Caching353545
! Ref: gnat_rm/implementation_defined_aspects aspect-no-caching353701
! Ref: 14e353701
! Node: Aspect No_Elaboration_Code_All353815
! Ref: gnat_rm/implementation_defined_aspects aspect-no-elaboration-code-all353964
! Ref: 14f353964
! Node: Aspect No_Inline354129
! Ref: gnat_rm/implementation_defined_aspects aspect-no-inline354276
! Ref: 150354276
! Node: Aspect No_Raise354387
! Ref: gnat_rm/implementation_defined_aspects aspect-no-raise354528
! Ref: 151354528
! Node: Aspect No_Tagged_Streams354636
! Ref: gnat_rm/implementation_defined_aspects aspect-no-tagged-streams354781
! Ref: 152354781
! Node: Aspect No_Task_Parts355010
! Ref: gnat_rm/implementation_defined_aspects aspect-no-task-parts355158
! Ref: 153355158
! Node: Aspect Object_Size355664
! Ref: gnat_rm/implementation_defined_aspects aspect-object-size355806
! Ref: 154355806
! Node: Aspect Obsolescent355919
! Ref: gnat_rm/implementation_defined_aspects aspect-obsolescent356055
! Ref: 156356055
! Node: Aspect Part_Of356283
! Ref: gnat_rm/implementation_defined_aspects aspect-part-of356422
! Ref: 157356422
! Node: Aspect Persistent_BSS356519
! Ref: gnat_rm/implementation_defined_aspects aspect-persistent-bss356656
! Ref: 158356656
! Node: Aspect Predicate356782
! Ref: gnat_rm/implementation_defined_aspects aspect-predicate356925
! Ref: 159356925
! Node: Aspect Pure_Function357314
! Ref: gnat_rm/implementation_defined_aspects aspect-pure-function357458
! Ref: 15a357458
! Node: Aspect Refined_Depends357581
! Ref: gnat_rm/implementation_defined_aspects aspect-refined-depends357730
! Ref: 15b357730
! Node: Aspect Refined_Global357851
! Ref: gnat_rm/implementation_defined_aspects aspect-refined-global357999
! Ref: 15c357999
! Node: Aspect Refined_Post358117
! Ref: gnat_rm/implementation_defined_aspects aspect-refined-post358263
! Ref: 15d358263
! Node: Aspect Refined_State358375
! Ref: gnat_rm/implementation_defined_aspects aspect-refined-state358529
! Ref: 15e358529
! Node: Aspect Relaxed_Initialization358644
! Ref: gnat_rm/implementation_defined_aspects aspect-relaxed-initialization358804
! Ref: 15f358804
! Node: Aspect Remote_Access_Type358972
! Ref: gnat_rm/implementation_defined_aspects aspect-remote-access-type359139
! Ref: 160359139
! Node: Aspect Scalar_Storage_Order359269
! Ref: gnat_rm/implementation_defined_aspects aspect-scalar-storage-order359434
! Ref: 161359434
! Node: Aspect Secondary_Stack_Size359576
! Ref: gnat_rm/implementation_defined_aspects aspect-secondary-stack-size359729
! Ref: 163359729
! Node: Aspect Shared359865
! Ref: gnat_rm/implementation_defined_aspects aspect-shared360010
! Ref: 164360010
! Node: Aspect Side_Effects360159
! Ref: gnat_rm/implementation_defined_aspects aspect-side-effects360303
! Ref: 165360303
! Node: Aspect Simple_Storage_Pool360415
! Ref: gnat_rm/implementation_defined_aspects aspect-simple-storage-pool360577
! Ref: 166360577
! Node: Aspect Simple_Storage_Pool_Type360713
! Ref: gnat_rm/implementation_defined_aspects aspect-simple-storage-pool-type360873
! Ref: 167360873
! Node: Aspect SPARK_Mode361029
! Ref: gnat_rm/implementation_defined_aspects aspect-spark-mode361188
! Ref: 168361188
! Node: Aspect Subprogram_Variant361392
! Ref: gnat_rm/implementation_defined_aspects aspect-subprogram-variant361546
! Ref: 169361546
! Node: Aspect Suppress_Debug_Info361707
! Ref: gnat_rm/implementation_defined_aspects aspect-suppress-debug-info361874
! Ref: 16a361874
! Node: Aspect Suppress_Initialization362016
! Ref: gnat_rm/implementation_defined_aspects aspect-suppress-initialization362174
! Ref: 16b362174
! Node: Aspect Test_Case362328
! Ref: gnat_rm/implementation_defined_aspects aspect-test-case362487
! Ref: 16c362487
! Node: Aspect Thread_Local_Storage362591
! Ref: gnat_rm/implementation_defined_aspects aspect-thread-local-storage362745
! Ref: 16d362745
! Node: Aspect Universal_Aliasing362890
! Ref: gnat_rm/implementation_defined_aspects aspect-universal-aliasing363045
! Ref: 16e363045
! Node: Aspect Unmodified363184
! Ref: gnat_rm/implementation_defined_aspects aspect-unmodified363331
! Ref: 16f363331
! Node: Aspect Unreferenced363446
! Ref: gnat_rm/implementation_defined_aspects aspect-unreferenced363595
! Ref: 170363595
! Node: Aspect Unreferenced_Objects363880
! Ref: gnat_rm/implementation_defined_aspects aspect-unreferenced-objects364030
! Ref: 171364030
! Node: Aspect User_Aspect364175
! Ref: gnat_rm/implementation_defined_aspects aspect-user-aspect364323
! Ref: 172364323
! Node: Aspect Value_Size364651
! Ref: gnat_rm/implementation_defined_aspects aspect-value-size364799
! Ref: 173364799
! Node: Aspect Volatile_Full_Access364909
! Ref: gnat_rm/implementation_defined_aspects aspect-volatile-full-access365063
! Ref: 175365063
! Node: Aspect Volatile_Function365208
! Ref: gnat_rm/implementation_defined_aspects aspect-volatile-function365360
! Ref: 176365360
! Node: Aspect Warnings365496
! Ref: gnat_rm/implementation_defined_aspects aspect-warnings365612
! Ref: 177365612
! Node: Implementation Defined Attributes365827
! Ref: gnat_rm/implementation_defined_attributes doc365997
! Ref: 178365997
! Ref: gnat_rm/implementation_defined_attributes id1365997
! Ref: 179365997
! Ref: gnat_rm/implementation_defined_attributes implementation-defined-attributes365997
! Ref: 8365997
! Node: Attribute Abort_Signal369186
! Ref: gnat_rm/implementation_defined_attributes attribute-abort-signal369310
! Ref: 17a369310
! Node: Attribute Address_Size369745
! Ref: gnat_rm/implementation_defined_attributes attribute-address-size369897
! Ref: 17b369897
! Node: Attribute Asm_Input370278
! Ref: gnat_rm/implementation_defined_attributes attribute-asm-input370428
! Ref: 17c370428
! Node: Attribute Asm_Output371053
! Ref: gnat_rm/implementation_defined_attributes attribute-asm-output371214
! Ref: 17e371214
! Node: Attribute Atomic_Always_Lock_Free371990
! Ref: gnat_rm/implementation_defined_attributes attribute-atomic-always-lock-free372145
! Ref: 17f372145
! Node: Attribute Bit372388
! Ref: gnat_rm/implementation_defined_attributes attribute-bit372545
! Ref: 180372545
! Node: Attribute Bit_Position373626
! Ref: gnat_rm/implementation_defined_attributes attribute-bit-position373772
! Ref: 181373772
! Node: Attribute Code_Address374218
! Ref: gnat_rm/implementation_defined_attributes attribute-code-address374377
! Ref: 182374377
! Node: Attribute Compiler_Version375711
! Ref: gnat_rm/implementation_defined_attributes attribute-compiler-version375869
! Ref: 183375869
! Node: Attribute Constrained376139
! Ref: gnat_rm/implementation_defined_attributes attribute-constrained376302
! Ref: 184376302
! Node: Attribute Default_Bit_Order376776
! Ref: gnat_rm/implementation_defined_attributes attribute-default-bit-order376951
! Ref: 185376951
! Node: Attribute Default_Scalar_Storage_Order377323
! Ref: gnat_rm/implementation_defined_attributes attribute-default-scalar-storage-order377492
! Ref: 186377492
! Node: Attribute Deref377913
! Ref: gnat_rm/implementation_defined_attributes attribute-deref378080
! Ref: 187378080
! Node: Attribute Descriptor_Size378510
! Ref: gnat_rm/implementation_defined_attributes attribute-descriptor-size378659
! Ref: 188378659
! Node: Attribute Elaborated379661
! Ref: gnat_rm/implementation_defined_attributes attribute-elaborated379814
! Ref: 189379814
! Node: Attribute Elab_Body380356
! Ref: gnat_rm/implementation_defined_attributes attribute-elab-body380503
! Ref: 18a380503
! Node: Attribute Elab_Spec381053
! Ref: gnat_rm/implementation_defined_attributes attribute-elab-spec381204
! Ref: 18b381204
! Node: Attribute Elab_Subp_Body381754
! Ref: gnat_rm/implementation_defined_attributes attribute-elab-subp-body381900
! Ref: 18c381900
! Node: Attribute Emax382322
! Ref: gnat_rm/implementation_defined_attributes attribute-emax382466
! Ref: 18d382466
! Node: Attribute Enabled382670
! Ref: gnat_rm/implementation_defined_attributes attribute-enabled382808
! Ref: 18e382808
! Node: Attribute Enum_Rep383930
! Ref: gnat_rm/implementation_defined_attributes attribute-enum-rep384072
! Ref: 18f384072
! Node: Attribute Enum_Val385565
! Ref: gnat_rm/implementation_defined_attributes attribute-enum-val385707
! Ref: 190385707
! Node: Attribute Epsilon386433
! Ref: gnat_rm/implementation_defined_attributes attribute-epsilon386576
! Ref: 191386576
! Node: Attribute Fast_Math386789
! Ref: gnat_rm/implementation_defined_attributes attribute-fast-math386941
! Ref: 192386941
! Node: Attribute Finalization_Size387163
! Ref: gnat_rm/implementation_defined_attributes attribute-finalization-size387319
! Ref: 193387319
! Node: Attribute Fixed_Value387929
! Ref: gnat_rm/implementation_defined_attributes attribute-fixed-value388084
! Ref: 194388084
! Node: Attribute From_Any388786
! Ref: gnat_rm/implementation_defined_attributes attribute-from-any388941
! Ref: 195388941
! Node: Attribute Has_Access_Values389118
! Ref: gnat_rm/implementation_defined_attributes attribute-has-access-values389279
! Ref: 196389279
! Node: Attribute Has_Discriminants389805
! Ref: gnat_rm/implementation_defined_attributes attribute-has-discriminants389975
! Ref: 197389975
! Node: Attribute Has_Tagged_Values390416
! Ref: gnat_rm/implementation_defined_attributes attribute-has-tagged-values390572
! Ref: 198390572
! Node: Attribute Img391102
! Ref: gnat_rm/implementation_defined_attributes attribute-img391252
! Ref: 199391252
! Node: Attribute Initialized391919
! Ref: gnat_rm/implementation_defined_attributes attribute-initialized392065
! Ref: 19a392065
! Node: Attribute Integer_Value392220
! Ref: gnat_rm/implementation_defined_attributes attribute-integer-value392376
! Ref: 19b392376
! Node: Attribute Invalid_Value393140
! Ref: gnat_rm/implementation_defined_attributes attribute-invalid-value393290
! Ref: 19c393290
! Node: Attribute Large393764
! Ref: gnat_rm/implementation_defined_attributes attribute-large393914
! Ref: 19d393914
! Node: Attribute Library_Level394121
! Ref: gnat_rm/implementation_defined_attributes attribute-library-level394268
! Ref: 19e394268
! Node: Attribute Loop_Entry394904
! Ref: gnat_rm/implementation_defined_attributes attribute-loop-entry395058
! Ref: 19f395058
! Node: Attribute Machine_Size396304
! Ref: gnat_rm/implementation_defined_attributes attribute-machine-size396453
! Ref: 1a0396453
! Node: Attribute Mantissa396653
! Ref: gnat_rm/implementation_defined_attributes attribute-mantissa396809
! Ref: 1a1396809
! Node: Attribute Maximum_Alignment397025
! Ref: gnat_rm/implementation_defined_attributes attribute-maximum-alignment397185
! Ref: 1a2397185
! Ref: gnat_rm/implementation_defined_attributes id2397185
! Ref: 1a3397185
! Node: Attribute Max_Integer_Size397526
! Ref: gnat_rm/implementation_defined_attributes attribute-max-integer-size397692
! Ref: 1a4397692
! Node: Attribute Mechanism_Code397939
! Ref: gnat_rm/implementation_defined_attributes attribute-mechanism-code398102
! Ref: 1a5398102
! Node: Attribute Null_Parameter398534
! Ref: gnat_rm/implementation_defined_attributes attribute-null-parameter398692
! Ref: 1a6398692
! Node: Attribute Object_Size399417
! Ref: gnat_rm/implementation_defined_attributes attribute-object-size399564
! Ref: 155399564
! Ref: gnat_rm/implementation_defined_attributes id3399564
! Ref: 1a7399564
! Node: Attribute Old401796
! Ref: gnat_rm/implementation_defined_attributes attribute-old401948
! Ref: 1a8401948
! Node: Attribute Passed_By_Reference402406
! Ref: gnat_rm/implementation_defined_attributes attribute-passed-by-reference402559
! Ref: 1a9402559
! Node: Attribute Pool_Address402973
! Ref: gnat_rm/implementation_defined_attributes attribute-pool-address403135
! Ref: 1aa403135
! Node: Attribute Range_Length403891
! Ref: gnat_rm/implementation_defined_attributes attribute-range-length404049
! Ref: 1ab404049
! Node: Attribute Restriction_Set404435
! Ref: gnat_rm/implementation_defined_attributes attribute-restriction-set404587
! Ref: 1ac404587
! Node: Attribute Result407061
! Ref: gnat_rm/implementation_defined_attributes attribute-result407206
! Ref: 1ad407206
! Node: Attribute Round407608
! Ref: gnat_rm/implementation_defined_attributes attribute-round407747
! Ref: 1ae407747
! Node: Attribute Safe_Emax407937
! Ref: gnat_rm/implementation_defined_attributes attribute-safe-emax408080
! Ref: 1af408080
! Node: Attribute Safe_Large408298
! Ref: gnat_rm/implementation_defined_attributes attribute-safe-large408446
! Ref: 1b0408446
! Node: Attribute Safe_Small408667
! Ref: gnat_rm/implementation_defined_attributes attribute-safe-small408826
! Ref: 1b1408826
! Node: Attribute Scalar_Storage_Order409047
! Ref: gnat_rm/implementation_defined_attributes attribute-scalar-storage-order409215
! Ref: 162409215
! Ref: gnat_rm/implementation_defined_attributes id4409215
! Ref: 1b2409215
! Node: Attribute Simple_Storage_Pool415035
! Ref: gnat_rm/implementation_defined_attributes attribute-simple-storage-pool415198
! Ref: f0415198
! Ref: gnat_rm/implementation_defined_attributes id5415198
! Ref: 1b3415198
! Node: Attribute Small417815
! Ref: gnat_rm/implementation_defined_attributes attribute-small417975
! Ref: 1b4417975
! Node: Attribute Small_Denominator418342
! Ref: gnat_rm/implementation_defined_attributes attribute-small-denominator418498
! Ref: 1b5418498
! Node: Attribute Small_Numerator418774
! Ref: gnat_rm/implementation_defined_attributes attribute-small-numerator418937
! Ref: 1b6418937
! Node: Attribute Storage_Unit419205
! Ref: gnat_rm/implementation_defined_attributes attribute-storage-unit419360
! Ref: 1b7419360
! Node: Attribute Stub_Type419544
! Ref: gnat_rm/implementation_defined_attributes attribute-stub-type419710
! Ref: 1b8419710
! Node: Attribute System_Allocator_Alignment420665
! Ref: gnat_rm/implementation_defined_attributes attribute-system-allocator-alignment420830
! Ref: 1b9420830
! Node: Attribute Target_Name421306
! Ref: gnat_rm/implementation_defined_attributes attribute-target-name421472
! Ref: 1ba421472
! Node: Attribute To_Address421847
! Ref: gnat_rm/implementation_defined_attributes attribute-to-address421993
! Ref: 1bb421993
! Node: Attribute To_Any422816
! Ref: gnat_rm/implementation_defined_attributes attribute-to-any422961
! Ref: 1bc422961
! Node: Attribute Type_Class423134
! Ref: gnat_rm/implementation_defined_attributes attribute-type-class423277
! Ref: 1bd423277
! Node: Attribute Type_Key424142
! Ref: gnat_rm/implementation_defined_attributes attribute-type-key424287
! Ref: 1be424287
! Node: Attribute TypeCode424596
! Ref: gnat_rm/implementation_defined_attributes attribute-typecode424750
! Ref: 1bf424750
! Node: Attribute Unconstrained_Array424927
! Ref: gnat_rm/implementation_defined_attributes attribute-unconstrained-array425097
! Ref: 1c0425097
! Node: Attribute Universal_Literal_String425513
! Ref: gnat_rm/implementation_defined_attributes attribute-universal-literal-string425694
! Ref: 1c1425694
! Node: Attribute Unrestricted_Access426386
! Ref: gnat_rm/implementation_defined_attributes attribute-unrestricted-access426554
! Ref: 1c2426554
! Node: Attribute Update432865
! Ref: gnat_rm/implementation_defined_attributes attribute-update433020
! Ref: 1c3433020
! Node: Attribute Valid_Value435851
! Ref: gnat_rm/implementation_defined_attributes attribute-valid-value436000
! Ref: 1c4436000
! Node: Attribute Valid_Scalars436370
! Ref: gnat_rm/implementation_defined_attributes attribute-valid-scalars436522
! Ref: 1c5436522
! Node: Attribute VADS_Size438180
! Ref: gnat_rm/implementation_defined_attributes attribute-vads-size438331
! Ref: 1c6438331
! Node: Attribute Value_Size438972
! Ref: gnat_rm/implementation_defined_attributes attribute-value-size439122
! Ref: 174439122
! Ref: gnat_rm/implementation_defined_attributes id6439122
! Ref: 1c7439122
! Node: Attribute Wchar_T_Size439367
! Ref: gnat_rm/implementation_defined_attributes attribute-wchar-t-size439517
! Ref: 1c8439517
! Node: Attribute Word_Size439821
! Ref: gnat_rm/implementation_defined_attributes attribute-word-size439942
! Ref: 1c9439942
! Node: Standard and Implementation Defined Restrictions440140
! Ref: gnat_rm/standard_and_implementation_defined_restrictions doc440301
! Ref: 1ca440301
! Ref: gnat_rm/standard_and_implementation_defined_restrictions id1440301
! Ref: 1cb440301
! Ref: gnat_rm/standard_and_implementation_defined_restrictions standard-and-implementation-defined-restrictions440301
! Ref: 9440301
! Node: Partition-Wide Restrictions440832
! Ref: gnat_rm/standard_and_implementation_defined_restrictions id2440985
! Ref: 1cc440985
! Ref: gnat_rm/standard_and_implementation_defined_restrictions partition-wide-restrictions440985
! Ref: 1cd440985
! Node: Immediate_Reclamation443371
! Ref: gnat_rm/standard_and_implementation_defined_restrictions immediate-reclamation443497
! Ref: 1ce443497
! Node: Max_Asynchronous_Select_Nesting443810
! Ref: gnat_rm/standard_and_implementation_defined_restrictions max-asynchronous-select-nesting443967
! Ref: 1cf443967
! Node: Max_Entry_Queue_Length444300
! Ref: gnat_rm/standard_and_implementation_defined_restrictions max-entry-queue-length444457
! Ref: 1d0444457
! Node: Max_Protected_Entries445153
! Ref: gnat_rm/standard_and_implementation_defined_restrictions max-protected-entries445302
! Ref: 1d1445302
! Node: Max_Select_Alternatives445587
! Ref: gnat_rm/standard_and_implementation_defined_restrictions max-select-alternatives445737
! Ref: 1d2445737
! Node: Max_Storage_At_Blocking445876
! Ref: gnat_rm/standard_and_implementation_defined_restrictions max-storage-at-blocking446021
! Ref: 1d3446021
! Node: Max_Task_Entries446279
! Ref: gnat_rm/standard_and_implementation_defined_restrictions max-task-entries446410
! Ref: 1d4446410
! Node: Max_Tasks446671
! Ref: gnat_rm/standard_and_implementation_defined_restrictions max-tasks446798
! Ref: 1d5446798
! Node: No_Abort_Statements447126
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-abort-statements447267
! Ref: 1d6447267
! Node: No_Access_Parameter_Allocators447419
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-access-parameter-allocators447572
! Ref: 1d7447572
! Node: No_Access_Subprograms447794
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-access-subprograms447941
! Ref: 1d8447941
! Node: No_Allocators448113
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-allocators448253
! Ref: 1d9448253
! Node: No_Anonymous_Allocators448394
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-anonymous-allocators448536
! Ref: 1da448536
! Node: No_Asynchronous_Control448722
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-asynchronous-control448862
! Ref: 1db448862
! Node: No_Calendar449069
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-calendar449201
! Ref: 1dc449201
! Node: No_Coextensions449349
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-coextensions449483
! Ref: 1dd449483
! Node: No_Default_Initialization449626
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-default-initialization449757
! Ref: 1de449757
! Node: No_Delay450462
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-delay450591
! Ref: 1df450591
! Node: No_Dependence450759
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-dependence450890
! Ref: 1e0450890
! Node: No_Direct_Boolean_Operators451900
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-direct-boolean-operators452034
! Ref: 1e1452034
! Node: No_Dispatch452434
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-dispatch452575
! Ref: 1e2452575
! Node: No_Dispatching_Calls452747
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-dispatching-calls452882
! Ref: 1e3452882
! Node: No_Dynamic_Attachment454978
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-attachment455123
! Ref: 1e4455123
! Node: No_Dynamic_Priorities455666
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-priorities455825
! Ref: 1e5455825
! Node: No_Entry_Calls_In_Elaboration_Code455964
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-entry-calls-in-elaboration-code456121
! Ref: 1e6456121
! Node: No_Enumeration_Maps456481
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-enumeration-maps456638
! Ref: 1e7456638
! Node: No_Exception_Handlers456864
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-exception-handlers457011
! Ref: 1e8457011
! Node: No_Exception_Propagation457884
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-exception-propagation458037
! Ref: 1e9458037
! Node: No_Exception_Registration458710
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-exception-registration458855
! Ref: 1ea458855
! Node: No_Exceptions459336
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-exceptions459472
! Ref: 1eb459472
! Node: No_Finalization459699
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-finalization459824
! Ref: 1ec459824
! Node: No_Fixed_Point460656
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-fixed-point460785
! Ref: 1ed460785
! Node: No_Floating_Point460948
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-floating-point461086
! Ref: 1ee461086
! Node: No_Implicit_Conditionals461258
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implicit-conditionals461406
! Ref: 1ef461406
! Node: No_Implicit_Dynamic_Code462041
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implicit-dynamic-code462200
! Ref: 1f0462200
! Node: No_Implicit_Heap_Allocations463421
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implicit-heap-allocations463596
! Ref: 1f1463596
! Node: No_Implicit_Protected_Object_Allocations463740
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implicit-protected-object-allocations463919
! Ref: 1f2463919
! Node: No_Implicit_Task_Allocations464107
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implicit-task-allocations464279
! Ref: 1f3464279
! Node: No_Initialize_Scalars464431
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-initialize-scalars464568
! Ref: 1f4464568
! Node: No_IO464912
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-io465040
! Ref: 1f5465040
! Node: No_Local_Allocators465258
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-local-allocators465391
! Ref: 1f6465391
! Node: No_Local_Protected_Objects465605
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-local-protected-objects465754
! Ref: 1f7465754
! Node: No_Local_Tagged_Types465937
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-local-tagged-types466089
! Ref: 1f8466089
! Node: No_Local_Timing_Events466255
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-local-timing-events466402
! Ref: 1f9466402
! Node: No_Long_Long_Integers466569
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-long-long-integers466718
! Ref: 1fa466718
! Node: No_Multiple_Elaboration467028
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-multiple-elaboration467177
! Ref: 1fb467177
! Node: No_Nested_Finalization467820
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-nested-finalization467976
! Ref: 1fc467976
! Node: No_Protected_Type_Allocators468117
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-protected-type-allocators468268
! Ref: 1fd468268
! Node: No_Protected_Types468476
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-protected-types468617
! Ref: 1fe468617
! Node: No_Recursion468793
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-recursion468919
! Ref: 1ff468919
! Node: No_Reentrancy469056
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-reentrancy469181
! Ref: 200469181
! Node: No_Relative_Delay469326
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-relative-delay469460
! Ref: 201469460
! Node: No_Requeue_Statements469688
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-requeue-statements469827
! Ref: 202469827
! Node: No_Secondary_Stack470294
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-secondary-stack470436
! Ref: 203470436
! Node: No_Select_Statements470841
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-select-statements470994
! Ref: 204470994
! Node: No_Specific_Termination_Handlers471199
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-specific-termination-handlers471360
! Ref: 205471360
! Node: No_Specification_of_Aspect471560
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-specification-of-aspect471741
! Ref: 206471741
! Node: No_Standard_Allocators_After_Elaboration471962
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-standard-allocators-after-elaboration472136
! Ref: 207472136
! Node: No_Standard_Storage_Pools472451
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-standard-storage-pools472622
! Ref: 208472622
! Node: No_Stream_Optimizations472917
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-stream-optimizations473058
! Ref: 209473058
! Node: No_Streams473491
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-streams473634
! Ref: 20a473634
! Node: No_Tagged_Type_Registration474688
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-tagged-type-registration474826
! Ref: 20b474826
! Node: No_Task_Allocators475308
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-task-allocators475465
! Ref: 20c475465
! Node: No_Task_At_Interrupt_Priority475607
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-task-at-interrupt-priority475763
! Ref: 20d475763
! Node: No_Task_Attributes_Package476065
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-task-attributes-package476220
! Ref: 20e476220
! Node: No_Task_Hierarchy476692
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-task-hierarchy476837
! Ref: 20f476837
! Node: No_Task_Termination476984
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-task-termination477113
! Ref: 210477113
! Node: No_Tasking477214
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-tasking477351
! Ref: 211477351
! Node: No_Terminate_Alternatives477671
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-terminate-alternatives477808
! Ref: 212477808
! Node: No_Unchecked_Access477945
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-access478095
! Ref: 213478095
! Node: No_Unchecked_Conversion478266
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-conversion478416
! Ref: 214478416
! Node: No_Unchecked_Deallocation478627
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-deallocation478777
! Ref: 215478777
! Node: No_Use_Of_Attribute478995
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-use-of-attribute479138
! Ref: 216479138
! Node: No_Use_Of_Entity479296
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-use-of-entity479430
! Ref: 217479430
! Node: No_Use_Of_Pragma479728
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-use-of-pragma479856
! Ref: 218479856
! Node: Pure_Barriers480008
! Ref: gnat_rm/standard_and_implementation_defined_restrictions pure-barriers480135
! Ref: 219480135
! Node: Simple_Barriers480840
! Ref: gnat_rm/standard_and_implementation_defined_restrictions simple-barriers480968
! Ref: 21a480968
! Node: Static_Priorities481567
! Ref: gnat_rm/standard_and_implementation_defined_restrictions static-priorities481701
! Ref: 21b481701
! Node: Static_Storage_Size481922
! Ref: gnat_rm/standard_and_implementation_defined_restrictions static-storage-size482032
! Ref: 21c482032
! Node: Program Unit Level Restrictions482233
! Ref: gnat_rm/standard_and_implementation_defined_restrictions id3482386
! Ref: 21d482386
! Ref: gnat_rm/standard_and_implementation_defined_restrictions program-unit-level-restrictions482386
! Ref: 21e482386
! Node: No_Elaboration_Code483145
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-elaboration-code483273
! Ref: 21f483273
! Node: No_Dynamic_Accessibility_Checks485872
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-accessibility-checks486033
! Ref: 220486033
! Node: No_Dynamic_Sized_Objects487843
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-sized-objects487999
! Ref: 221487999
! Node: No_Entry_Queue488721
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-entry-queue488885
! Ref: 222488885
! Node: No_Implementation_Aspect_Specifications489271
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implementation-aspect-specifications489439
! Ref: 223489439
! Node: No_Implementation_Attributes489733
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implementation-attributes489916
! Ref: 224489916
! Node: No_Implementation_Identifiers490194
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implementation-identifiers490363
! Ref: 225490363
! Node: No_Implementation_Pragmas490617
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implementation-pragmas490788
! Ref: 226490788
! Node: No_Implementation_Restrictions491054
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implementation-restrictions491219
! Ref: 227491219
! Node: No_Implementation_Units491584
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implementation-units491744
! Ref: 228491744
! Node: No_Implicit_Aliasing491990
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implicit-aliasing492137
! Ref: 229492137
! Node: No_Implicit_Loops492691
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-implicit-loops492838
! Ref: 22a492838
! Node: No_Obsolescent_Features493574
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-obsolescent-features493719
! Ref: 22b493719
! Node: No_Wide_Characters493926
! Ref: gnat_rm/standard_and_implementation_defined_restrictions no-wide-characters494076
! Ref: 22c494076
! Node: Static_Dispatch_Tables494440
! Ref: gnat_rm/standard_and_implementation_defined_restrictions static-dispatch-tables494575
! Ref: 22d494575
! Node: SPARK_05494774
! Ref: gnat_rm/standard_and_implementation_defined_restrictions spark-05494882
! Ref: 22e494882
! Node: Implementation Advice495341
! Ref: gnat_rm/implementation_advice doc495507
! Ref: 22f495507
! Ref: gnat_rm/implementation_advice id1495507
! Ref: 230495507
! Ref: gnat_rm/implementation_advice implementation-advice495507
! Ref: a495507
! Node: RM 1 1 3 20 Error Detection501412
! Ref: gnat_rm/implementation_advice rm-1-1-3-20-error-detection501530
! Ref: 231501530
! Node: RM 1 1 3 31 Child Units501875
! Ref: gnat_rm/implementation_advice rm-1-1-3-31-child-units502028
! Ref: 232502028
! Node: RM 1 1 5 12 Bounded Errors502317
! Ref: gnat_rm/implementation_advice rm-1-1-5-12-bounded-errors502460
! Ref: 233502460
! Node: RM 2 8 16 Pragmas502799
! Ref: gnat_rm/implementation_advice id2502939
! Ref: 234502939
! Ref: gnat_rm/implementation_advice rm-2-8-16-pragmas502939
! Ref: 235502939
! Node: RM 2 8 17-19 Pragmas504580
! Ref: gnat_rm/implementation_advice rm-2-8-17-19-pragmas504731
! Ref: 236504731
! Node: RM 3 5 2 5 Alternative Character Sets505165
! Ref: gnat_rm/implementation_advice rm-3-5-2-5-alternative-character-sets505324
! Ref: 237505324
! Node: RM 3 5 4 28 Integer Types506481
! Ref: gnat_rm/implementation_advice rm-3-5-4-28-integer-types506645
! Ref: 238506645
! Node: RM 3 5 4 29 Integer Types507319
! Ref: gnat_rm/implementation_advice rm-3-5-4-29-integer-types507475
! Ref: 239507475
! Node: RM 3 5 5 8 Enumeration Values507793
! Ref: gnat_rm/implementation_advice rm-3-5-5-8-enumeration-values507947
! Ref: 23a507947
! Node: RM 3 5 7 17 Float Types508496
! Ref: gnat_rm/implementation_advice rm-3-5-7-17-float-types508660
! Ref: 23b508660
! Node: RM 3 6 2 11 Multidimensional Arrays509769
! Ref: gnat_rm/implementation_advice rm-3-6-2-11-multidimensional-arrays509933
! Ref: 23c509933
! Node: RM 9 6 30-31 Durationâ€™Small510429
! Ref: gnat_rm/implementation_advice rm-9-6-30-31-duration-small510608
! Ref: 23d510608
! Node: RM 10 2 1 12 Consistent Representation511030
! Ref: gnat_rm/implementation_advice rm-10-2-1-12-consistent-representation511208
! Ref: 23e511208
! Node: RM 11 4 1 19 Exception Information511998
! Ref: gnat_rm/implementation_advice rm-11-4-1-19-exception-information512179
! Ref: 23f512179
! Node: RM 11 5 28 Suppression of Checks513321
! Ref: gnat_rm/implementation_advice rm-11-5-28-suppression-of-checks513500
! Ref: 240513500
! Node: RM 13 1 21-24 Representation Clauses513700
! Ref: gnat_rm/implementation_advice rm-13-1-21-24-representation-clauses513869
! Ref: 241513869
! Node: RM 13 2 6-8 Packed Types515311
! Ref: gnat_rm/implementation_advice rm-13-2-6-8-packed-types515477
! Ref: 242515477
! Node: RM 13 3 14-19 Address Clauses516706
! Ref: gnat_rm/implementation_advice rm-13-3-14-19-address-clauses516867
! Ref: 243516867
! Node: RM 13 3 29-35 Alignment Clauses518002
! Ref: gnat_rm/implementation_advice rm-13-3-29-35-alignment-clauses518165
! Ref: 244518165
! Node: RM 13 3 42-43 Size Clauses519366
! Ref: gnat_rm/implementation_advice rm-13-3-42-43-size-clauses519526
! Ref: 245519526
! Node: RM 13 3 50-56 Size Clauses519991
! Ref: gnat_rm/implementation_advice rm-13-3-50-56-size-clauses520156
! Ref: 246520156
! Node: RM 13 3 71-73 Component Size Clauses521530
! Ref: gnat_rm/implementation_advice rm-13-3-71-73-component-size-clauses521716
! Ref: 247521716
! Node: RM 13 4 9-10 Enumeration Representation Clauses522524
! Ref: gnat_rm/implementation_advice rm-13-4-9-10-enumeration-representation-clauses522729
! Ref: 248522729
! Node: RM 13 5 1 17-22 Record Representation Clauses523151
! Ref: gnat_rm/implementation_advice rm-13-5-1-17-22-record-representation-clauses523356
! Ref: 249523356
! Node: RM 13 5 2 5 Storage Place Attributes525051
! Ref: gnat_rm/implementation_advice rm-13-5-2-5-storage-place-attributes525235
! Ref: 24a525235
! Node: RM 13 5 3 7-8 Bit Ordering525847
! Ref: gnat_rm/implementation_advice rm-13-5-3-7-8-bit-ordering526015
! Ref: 24b526015
! Node: RM 13 7 37 Address as Private526296
! Ref: gnat_rm/implementation_advice rm-13-7-37-address-as-private526459
! Ref: 24c526459
! Node: RM 13 7 1 16 Address Operations526600
! Ref: gnat_rm/implementation_advice rm-13-7-1-16-address-operations526771
! Ref: 24d526771
! Node: RM 13 9 14-17 Unchecked Conversion527310
! Ref: gnat_rm/implementation_advice rm-13-9-14-17-unchecked-conversion527486
! Ref: 24e527486
! Node: RM 13 11 23-25 Implicit Heap Usage528878
! Ref: gnat_rm/implementation_advice rm-13-11-23-25-implicit-heap-usage529059
! Ref: 24f529059
! Node: RM 13 11 2 17 Unchecked Deallocation530078
! Ref: gnat_rm/implementation_advice rm-13-11-2-17-unchecked-deallocation530266
! Ref: 250530266
! Node: RM 13 13 2 1 6 Stream Oriented Attributes530460
! Ref: gnat_rm/implementation_advice rm-13-13-2-1-6-stream-oriented-attributes530657
! Ref: 251530657
! Node: RM A 1 52 Names of Predefined Numeric Types531621
! Ref: gnat_rm/implementation_advice rm-a-1-52-names-of-predefined-numeric-types531817
! Ref: 252531817
! Node: RM A 3 2 49 Ada Characters Handling532255
! Ref: gnat_rm/implementation_advice rm-a-3-2-49-ada-characters-handling532453
! Ref: 253532453
! Node: RM A 4 4 106 Bounded-Length String Handling532845
! Ref: gnat_rm/implementation_advice rm-a-4-4-106-bounded-length-string-handling533039
! Ref: 254533039
! Node: RM A 5 2 46-47 Random Number Generation533318
! Ref: gnat_rm/implementation_advice rm-a-5-2-46-47-random-number-generation533503
! Ref: 255533503
! Node: RM A 10 7 23 Get_Immediate534335
! Ref: gnat_rm/implementation_advice rm-a-10-7-23-get-immediate534495
! Ref: 256534495
! Node: RM A 18 Containers535347
! Ref: gnat_rm/implementation_advice rm-a-18-containers535494
! Ref: 257535494
! Node: RM B 1 39-41 Pragma Export536125
! Ref: gnat_rm/implementation_advice rm-b-1-39-41-pragma-export536277
! Ref: 258536277
! Node: RM B 2 12-13 Package Interfaces537805
! Ref: gnat_rm/implementation_advice rm-b-2-12-13-package-interfaces537970
! Ref: 259537970
! Node: RM B 3 63-71 Interfacing with C538783
! Ref: gnat_rm/implementation_advice rm-b-3-63-71-interfacing-with-c538957
! Ref: 25a538957
! Node: RM B 4 95-98 Interfacing with COBOL540892
! Ref: gnat_rm/implementation_advice rm-b-4-95-98-interfacing-with-cobol541072
! Ref: 25b541072
! Node: RM B 5 22-26 Interfacing with Fortran541806
! Ref: gnat_rm/implementation_advice rm-b-5-22-26-interfacing-with-fortran541994
! Ref: 25c541994
! Node: RM C 1 3-5 Access to Machine Operations543082
! Ref: gnat_rm/implementation_advice rm-c-1-3-5-access-to-machine-operations543276
! Ref: 25d543276
! Node: RM C 1 10-16 Access to Machine Operations544252
! Ref: gnat_rm/implementation_advice rm-c-1-10-16-access-to-machine-operations544436
! Ref: 25e544436
! Node: RM C 3 28 Interrupt Support545706
! Ref: gnat_rm/implementation_advice rm-c-3-28-interrupt-support545894
! Ref: 25f545894
! Node: RM C 3 1 20-21 Protected Procedure Handlers546360
! Ref: gnat_rm/implementation_advice rm-c-3-1-20-21-protected-procedure-handlers546537
! Ref: 260546537
! Node: RM C 3 2 25 Package Interrupts547041
! Ref: gnat_rm/implementation_advice rm-c-3-2-25-package-interrupts547229
! Ref: 261547229
! Node: RM C 4 14 Pre-elaboration Requirements547699
! Ref: gnat_rm/implementation_advice rm-c-4-14-pre-elaboration-requirements547873
! Ref: 262547873
! Node: RM C 5 8 Pragma Discard_Names548313
! Ref: gnat_rm/implementation_advice rm-c-5-8-pragma-discard-names548496
! Ref: 263548496
! Node: RM C 7 2 30 The Package Task_Attributes548760
! Ref: gnat_rm/implementation_advice rm-c-7-2-30-the-package-task-attributes548931
! Ref: 264548931
! Node: RM D 3 17 Locking Policies549667
! Ref: gnat_rm/implementation_advice rm-d-3-17-locking-policies549841
! Ref: 265549841
! Node: RM D 4 16 Entry Queuing Policies550214
! Ref: gnat_rm/implementation_advice rm-d-4-16-entry-queuing-policies550377
! Ref: 266550377
! Node: RM D 6 9-10 Preemptive Abort550641
! Ref: gnat_rm/implementation_advice rm-d-6-9-10-preemptive-abort550808
! Ref: 267550808
! Node: RM D 7 21 Tasking Restrictions551374
! Ref: gnat_rm/implementation_advice rm-d-7-21-tasking-restrictions551536
! Ref: 268551536
! Node: RM D 8 47-49 Monotonic Time552038
! Ref: gnat_rm/implementation_advice rm-d-8-47-49-monotonic-time552218
! Ref: 269552218
! Node: RM E 5 28-29 Partition Communication Subsystem552893
! Ref: gnat_rm/implementation_advice rm-e-5-28-29-partition-communication-subsystem553063
! Ref: 26a553063
! Node: RM F 7 COBOL Support553757
! Ref: gnat_rm/implementation_advice rm-f-7-cobol-support553930
! Ref: 26b553930
! Node: RM F 1 2 Decimal Radix Support554481
! Ref: gnat_rm/implementation_advice rm-f-1-2-decimal-radix-support554621
! Ref: 26c554621
! Node: RM G Numerics554935
! Ref: gnat_rm/implementation_advice rm-g-numerics555083
! Ref: 26d555083
! Node: RM G 1 1 56-58 Complex Types555613
! Ref: gnat_rm/implementation_advice rm-g-1-1-56-58-complex-types555771
! Ref: 26e555771
! Node: RM G 1 2 49 Complex Elementary Functions558600
! Ref: gnat_rm/implementation_advice rm-g-1-2-49-complex-elementary-functions558778
! Ref: 26f558778
! Node: RM G 2 4 19 Accuracy Requirements559511
! Ref: gnat_rm/implementation_advice rm-g-2-4-19-accuracy-requirements559700
! Ref: 270559700
! Node: RM G 2 6 15 Complex Arithmetic Accuracy560315
! Ref: gnat_rm/implementation_advice rm-g-2-6-15-complex-arithmetic-accuracy560511
! Ref: 271560511
! Node: RM H 6 15/2 Pragma Partition_Elaboration_Policy560934
! Ref: gnat_rm/implementation_advice rm-h-6-15-2-pragma-partition-elaboration-policy561088
! Ref: 272561088
! Node: Implementation Defined Characteristics561470
! Ref: gnat_rm/implementation_defined_characteristics doc561609
! Ref: 273561609
! Ref: gnat_rm/implementation_defined_characteristics id1561609
! Ref: 274561609
! Ref: gnat_rm/implementation_defined_characteristics implementation-defined-characteristics561609
! Ref: b561609
! Node: Intrinsic Subprograms613060
! Ref: gnat_rm/intrinsic_subprograms doc613212
! Ref: 276613212
! Ref: gnat_rm/intrinsic_subprograms id1613212
! Ref: 277613212
! Ref: gnat_rm/intrinsic_subprograms intrinsic-subprograms613212
! Ref: c613212
! Node: Intrinsic Operators614192
! Ref: gnat_rm/intrinsic_subprograms id2614299
! Ref: 278614299
! Ref: gnat_rm/intrinsic_subprograms intrinsic-operators614299
! Ref: 279614299
! Node: Compilation_ISO_Date615298
! Ref: gnat_rm/intrinsic_subprograms compilation-iso-date615430
! Ref: 27a615430
! Ref: gnat_rm/intrinsic_subprograms id3615430
! Ref: 27b615430
! Node: Compilation_Date615851
! Ref: gnat_rm/intrinsic_subprograms compilation-date615980
! Ref: 27c615980
! Ref: gnat_rm/intrinsic_subprograms id4615980
! Ref: 27d615980
! Node: Compilation_Time616100
! Ref: gnat_rm/intrinsic_subprograms compilation-time616225
! Ref: 27e616225
! Ref: gnat_rm/intrinsic_subprograms id5616225
! Ref: 27f616225
! Node: Enclosing_Entity616632
! Ref: gnat_rm/intrinsic_subprograms enclosing-entity616762
! Ref: 280616762
! Ref: gnat_rm/intrinsic_subprograms id6616762
! Ref: 281616762
! Node: Exception_Information617183
! Ref: gnat_rm/intrinsic_subprograms exception-information617314
! Ref: 282617314
! Ref: gnat_rm/intrinsic_subprograms id7617314
! Ref: 283617314
! Node: Exception_Message617744
! Ref: gnat_rm/intrinsic_subprograms exception-message617873
! Ref: 284617873
! Ref: gnat_rm/intrinsic_subprograms id8617873
! Ref: 285617873
! Node: Exception_Name618277
! Ref: gnat_rm/intrinsic_subprograms exception-name618389
! Ref: 286618389
! Ref: gnat_rm/intrinsic_subprograms id9618389
! Ref: 287618389
! Node: File618768
! Ref: gnat_rm/intrinsic_subprograms file618867
! Ref: 288618867
! Ref: gnat_rm/intrinsic_subprograms id10618867
! Ref: 289618867
! Node: Line619199
! Ref: gnat_rm/intrinsic_subprograms id11619302
! Ref: 28a619302
! Ref: gnat_rm/intrinsic_subprograms line619302
! Ref: 28b619302
! Node: Shifts and Rotates619645
! Ref: gnat_rm/intrinsic_subprograms id12619759
! Ref: 28c619759
! Ref: gnat_rm/intrinsic_subprograms shifts-and-rotates619759
! Ref: 28d619759
! Node: Source_Location620997
! Ref: gnat_rm/intrinsic_subprograms id13621098
! Ref: 28e621098
! Ref: gnat_rm/intrinsic_subprograms source-location621098
! Ref: 28f621098
! Node: Representation Clauses and Pragmas621469
! Ref: gnat_rm/representation_clauses_and_pragmas doc621608
! Ref: 290621608
! Ref: gnat_rm/representation_clauses_and_pragmas id1621608
! Ref: 291621608
! Ref: gnat_rm/representation_clauses_and_pragmas representation-clauses-and-pragmas621608
! Ref: d621608
! Node: Alignment Clauses622794
! Ref: gnat_rm/representation_clauses_and_pragmas alignment-clauses622904
! Ref: 292622904
! Ref: gnat_rm/representation_clauses_and_pragmas id2622904
! Ref: 293622904
! Node: Size Clauses627338
! Ref: gnat_rm/representation_clauses_and_pragmas id3627477
! Ref: 294627477
! Ref: gnat_rm/representation_clauses_and_pragmas size-clauses627477
! Ref: 295627477
! Node: Storage_Size Clauses630261
! Ref: gnat_rm/representation_clauses_and_pragmas id4630413
! Ref: 296630413
! Ref: gnat_rm/representation_clauses_and_pragmas storage-size-clauses630413
! Ref: 297630413
! Node: Size of Variant Record Objects632941
! Ref: gnat_rm/representation_clauses_and_pragmas id5633102
! Ref: 298633102
! Ref: gnat_rm/representation_clauses_and_pragmas size-of-variant-record-objects633102
! Ref: 299633102
! Node: Biased Representation636214
! Ref: gnat_rm/representation_clauses_and_pragmas biased-representation636389
! Ref: 29a636389
! Ref: gnat_rm/representation_clauses_and_pragmas id6636389
! Ref: 29b636389
! Node: Value_Size and Object_Size Clauses637433
! Ref: gnat_rm/representation_clauses_and_pragmas id7637600
! Ref: 29c637600
! Ref: gnat_rm/representation_clauses_and_pragmas value-size-and-object-size-clauses637600
! Ref: 29d637600
! Node: Component_Size Clauses647254
! Ref: gnat_rm/representation_clauses_and_pragmas component-size-clauses647417
! Ref: 29e647417
! Ref: gnat_rm/representation_clauses_and_pragmas id8647417
! Ref: 29f647417
! Node: Bit_Order Clauses649051
! Ref: gnat_rm/representation_clauses_and_pragmas bit-order-clauses649216
! Ref: 2a0649216
! Ref: gnat_rm/representation_clauses_and_pragmas id9649216
! Ref: 2a1649216
! Node: Effect of Bit_Order on Byte Ordering652661
! Ref: gnat_rm/representation_clauses_and_pragmas effect-of-bit-order-on-byte-ordering652826
! Ref: 2a2652826
! Ref: gnat_rm/representation_clauses_and_pragmas id10652826
! Ref: 2a3652826
! Node: Pragma Pack for Arrays662281
! Ref: gnat_rm/representation_clauses_and_pragmas id11662452
! Ref: 2a4662452
! Ref: gnat_rm/representation_clauses_and_pragmas pragma-pack-for-arrays662452
! Ref: 2a5662452
! Node: Pragma Pack for Records666949
! Ref: gnat_rm/representation_clauses_and_pragmas id12667113
! Ref: 2a6667113
! Ref: gnat_rm/representation_clauses_and_pragmas pragma-pack-for-records667113
! Ref: 2a7667113
! Node: Record Representation Clauses669665
! Ref: gnat_rm/representation_clauses_and_pragmas id13669837
! Ref: 2a8669837
! Ref: gnat_rm/representation_clauses_and_pragmas record-representation-clauses669837
! Ref: 2a9669837
! Node: Handling of Records with Holes672725
! Ref: gnat_rm/representation_clauses_and_pragmas handling-of-records-with-holes672893
! Ref: 2aa672893
! Ref: gnat_rm/representation_clauses_and_pragmas id14672893
! Ref: 2ab672893
! Node: Enumeration Clauses675155
! Ref: gnat_rm/representation_clauses_and_pragmas enumeration-clauses675309
! Ref: 2ac675309
! Ref: gnat_rm/representation_clauses_and_pragmas id15675309
! Ref: 2ad675309
! Node: Address Clauses676741
! Ref: gnat_rm/representation_clauses_and_pragmas address-clauses676909
! Ref: 2ae676909
! Ref: gnat_rm/representation_clauses_and_pragmas id16676909
! Ref: 2af676909
! Node: Use of Address Clauses for Memory-Mapped I/O688401
! Ref: gnat_rm/representation_clauses_and_pragmas id17688588
! Ref: 2b0688588
! Ref: gnat_rm/representation_clauses_and_pragmas use-of-address-clauses-for-memory-mapped-i-o688588
! Ref: 2b1688588
! Node: Effect of Convention on Representation690456
! Ref: gnat_rm/representation_clauses_and_pragmas effect-of-convention-on-representation690666
! Ref: 2b2690666
! Ref: gnat_rm/representation_clauses_and_pragmas id18690666
! Ref: 2b3690666
! Node: Conventions and Anonymous Access Types693779
! Ref: gnat_rm/representation_clauses_and_pragmas conventions-and-anonymous-access-types693991
! Ref: 2b4693991
! Ref: gnat_rm/representation_clauses_and_pragmas id19693991
! Ref: 2b5693991
! Node: Determining the Representations chosen by GNAT696482
! Ref: gnat_rm/representation_clauses_and_pragmas determining-the-representations-chosen-by-gnat696647
! Ref: 2b6696647
! Ref: gnat_rm/representation_clauses_and_pragmas id20696647
! Ref: 2b7696647
! Node: Standard Library Routines701237
! Ref: gnat_rm/standard_library_routines doc701389
! Ref: 2b8701389
! Ref: gnat_rm/standard_library_routines id1701389
! Ref: 2b9701389
! Ref: gnat_rm/standard_library_routines standard-library-routines701389
! Ref: e701389
! Node: The Implementation of Standard I/O728266
! Ref: gnat_rm/the_implementation_of_standard_i_o doc728400
! Ref: 2ba728400
! Ref: gnat_rm/the_implementation_of_standard_i_o id1728400
! Ref: 2bb728400
! Ref: gnat_rm/the_implementation_of_standard_i_o the-implementation-of-standard-i-o728400
! Ref: f728400
! Node: Standard I/O Packages730450
! Ref: gnat_rm/the_implementation_of_standard_i_o id2730564
! Ref: 2bc730564
! Ref: gnat_rm/the_implementation_of_standard_i_o standard-i-o-packages730564
! Ref: 2bd730564
! Node: FORM Strings731903
! Ref: gnat_rm/the_implementation_of_standard_i_o form-strings732035
! Ref: 2be732035
! Ref: gnat_rm/the_implementation_of_standard_i_o id3732035
! Ref: 2bf732035
! Node: Direct_IO732649
! Ref: gnat_rm/the_implementation_of_standard_i_o direct-io732773
! Ref: 2c0732773
! Ref: gnat_rm/the_implementation_of_standard_i_o id4732773
! Ref: 2c1732773
! Node: Sequential_IO733550
! Ref: gnat_rm/the_implementation_of_standard_i_o id5733669
! Ref: 2c2733669
! Ref: gnat_rm/the_implementation_of_standard_i_o sequential-io733669
! Ref: 2c3733669
! Node: Text_IO735506
! Ref: gnat_rm/the_implementation_of_standard_i_o id6735628
! Ref: 2c4735628
! Ref: gnat_rm/the_implementation_of_standard_i_o text-io735628
! Ref: 2c5735628
! Node: Stream Pointer Positioning738116
! Ref: gnat_rm/the_implementation_of_standard_i_o id7738233
! Ref: 2c6738233
! Ref: gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning738233
! Ref: 2c7738233
! Node: Reading and Writing Non-Regular Files739680
! Ref: gnat_rm/the_implementation_of_standard_i_o id8739819
! Ref: 2c8739819
! Ref: gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files739819
! Ref: 2c9739819
! Node: Get_Immediate741593
! Ref: gnat_rm/the_implementation_of_standard_i_o get-immediate741739
! Ref: 2ca741739
! Ref: gnat_rm/the_implementation_of_standard_i_o id9741739
! Ref: 2cb741739
! Node: Treating Text_IO Files as Streams742432
! Ref: gnat_rm/the_implementation_of_standard_i_o id10742559
! Ref: 2cc742559
! Ref: gnat_rm/the_implementation_of_standard_i_o treating-text-io-files-as-streams742559
! Ref: 2cd742559
! Node: Text_IO Extensions743147
! Ref: gnat_rm/the_implementation_of_standard_i_o id11743301
! Ref: 2ce743301
! Ref: gnat_rm/the_implementation_of_standard_i_o text-io-extensions743301
! Ref: 2cf743301
! Node: Text_IO Facilities for Unbounded Strings743918
! Ref: gnat_rm/the_implementation_of_standard_i_o id12744030
! Ref: 2d0744030
! Ref: gnat_rm/the_implementation_of_standard_i_o text-io-facilities-for-unbounded-strings744030
! Ref: 2d1744030
! Node: Wide_Text_IO745604
! Ref: gnat_rm/the_implementation_of_standard_i_o id13745730
! Ref: 2d2745730
! Ref: gnat_rm/the_implementation_of_standard_i_o wide-text-io745730
! Ref: 2d3745730
! Node: Stream Pointer Positioning<2>752659
! Ref: gnat_rm/the_implementation_of_standard_i_o id14752787
! Ref: 2d4752787
! Ref: gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-1752787
! Ref: 2d5752787
! Node: Reading and Writing Non-Regular Files<2>753705
! Ref: gnat_rm/the_implementation_of_standard_i_o id15753833
! Ref: 2d6753833
! Ref: gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-1753833
! Ref: 2d7753833
! Node: Wide_Wide_Text_IO754242
! Ref: gnat_rm/the_implementation_of_standard_i_o id16754370
! Ref: 2d8754370
! Ref: gnat_rm/the_implementation_of_standard_i_o wide-wide-text-io754370
! Ref: 2d9754370
! Node: Stream Pointer Positioning<3>758019
! Ref: gnat_rm/the_implementation_of_standard_i_o id17758152
! Ref: 2da758152
! Ref: gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-2758152
! Ref: 2db758152
! Node: Reading and Writing Non-Regular Files<3>759102
! Ref: gnat_rm/the_implementation_of_standard_i_o id18759235
! Ref: 2dc759235
! Ref: gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-2759235
! Ref: 2dd759235
! Node: Stream_IO759644
! Ref: gnat_rm/the_implementation_of_standard_i_o id19759776
! Ref: 2de759776
! Ref: gnat_rm/the_implementation_of_standard_i_o stream-io759776
! Ref: 2df759776
! Node: Text Translation760293
! Ref: gnat_rm/the_implementation_of_standard_i_o id20760420
! Ref: 2e0760420
! Ref: gnat_rm/the_implementation_of_standard_i_o text-translation760420
! Ref: 2e1760420
! Node: Shared Files761220
! Ref: gnat_rm/the_implementation_of_standard_i_o id21761356
! Ref: 2e2761356
! Ref: gnat_rm/the_implementation_of_standard_i_o shared-files761356
! Ref: 2e3761356
! Node: Filenames encoding764103
! Ref: gnat_rm/the_implementation_of_standard_i_o filenames-encoding764244
! Ref: 2e4764244
! Ref: gnat_rm/the_implementation_of_standard_i_o id22764244
! Ref: 2e5764244
! Node: File content encoding765046
! Ref: gnat_rm/the_implementation_of_standard_i_o file-content-encoding765185
! Ref: 2e6765185
! Ref: gnat_rm/the_implementation_of_standard_i_o id23765185
! Ref: 2e7765185
! Node: Open Modes765693
! Ref: gnat_rm/the_implementation_of_standard_i_o id24765837
! Ref: 2e8765837
! Ref: gnat_rm/the_implementation_of_standard_i_o open-modes765837
! Ref: 2e9765837
! Node: Operations on C Streams767823
! Ref: gnat_rm/the_implementation_of_standard_i_o id25767970
! Ref: 2ea767970
! Ref: gnat_rm/the_implementation_of_standard_i_o operations-on-c-streams767970
! Ref: 2eb767970
! Node: Interfacing to C Streams774774
! Ref: gnat_rm/the_implementation_of_standard_i_o id26774902
! Ref: 2ec774902
! Ref: gnat_rm/the_implementation_of_standard_i_o interfacing-to-c-streams774902
! Ref: 2ed774902
! Node: The GNAT Library778214
! Ref: gnat_rm/the_gnat_library doc778353
! Ref: 2ee778353
! Ref: gnat_rm/the_gnat_library id1778353
! Ref: 2ef778353
! Ref: gnat_rm/the_gnat_library the-gnat-library778353
! Ref: 10778353
! Node: Ada Characters Latin_9 a-chlat9 ads791133
! Ref: gnat_rm/the_gnat_library ada-characters-latin-9-a-chlat9-ads791271
! Ref: 2f0791271
! Ref: gnat_rm/the_gnat_library id2791271
! Ref: 2f1791271
! Node: Ada Characters Wide_Latin_1 a-cwila1 ads791681
! Ref: gnat_rm/the_gnat_library ada-characters-wide-latin-1-a-cwila1-ads791868
! Ref: 2f2791868
! Ref: gnat_rm/the_gnat_library id3791868
! Ref: 2f3791868
! Node: Ada Characters Wide_Latin_9 a-cwila9 ads792320
! Ref: gnat_rm/the_gnat_library ada-characters-wide-latin-9-a-cwila9-ads792517
! Ref: 2f4792517
! Ref: gnat_rm/the_gnat_library id4792517
! Ref: 2f5792517
! Node: Ada Characters Wide_Wide_Latin_1 a-chzla1 ads792971
! Ref: gnat_rm/the_gnat_library ada-characters-wide-wide-latin-1-a-chzla1-ads793173
! Ref: 2f6793173
! Ref: gnat_rm/the_gnat_library id5793173
! Ref: 2f7793173
! Node: Ada Characters Wide_Wide_Latin_9 a-chzla9 ads793640
! Ref: gnat_rm/the_gnat_library ada-characters-wide-wide-latin-9-a-chzla9-ads793845
! Ref: 2f8793845
! Ref: gnat_rm/the_gnat_library id6793845
! Ref: 2f9793845
! Node: Ada Containers Bounded_Holders a-coboho ads794314
! Ref: gnat_rm/the_gnat_library ada-containers-bounded-holders-a-coboho-ads794515
! Ref: 2fa794515
! Ref: gnat_rm/the_gnat_library id7794515
! Ref: 2fb794515
! Node: Ada Command_Line Environment a-colien ads794748
! Ref: gnat_rm/the_gnat_library ada-command-line-environment-a-colien-ads794940
! Ref: 2fc794940
! Ref: gnat_rm/the_gnat_library id8794940
! Ref: 2fd794940
! Node: Ada Command_Line Remove a-colire ads795190
! Ref: gnat_rm/the_gnat_library ada-command-line-remove-a-colire-ads795382
! Ref: 2fe795382
! Ref: gnat_rm/the_gnat_library id9795382
! Ref: 2ff795382
! Node: Ada Command_Line Response_File a-clrefi ads795755
! Ref: gnat_rm/the_gnat_library ada-command-line-response-file-a-clrefi-ads795942
! Ref: 300795942
! Ref: gnat_rm/the_gnat_library id10795942
! Ref: 301795942
! Node: Ada Direct_IO C_Streams a-diocst ads796354
! Ref: gnat_rm/the_gnat_library ada-direct-io-c-streams-a-diocst-ads796551
! Ref: 302796551
! Ref: gnat_rm/the_gnat_library id11796551
! Ref: 303796551
! Node: Ada Exceptions Is_Null_Occurrence a-einuoc ads796902
! Ref: gnat_rm/the_gnat_library ada-exceptions-is-null-occurrence-a-einuoc-ads797103
! Ref: 304797103
! Ref: gnat_rm/the_gnat_library id12797103
! Ref: 305797103
! Node: Ada Exceptions Last_Chance_Handler a-elchha ads797367
! Ref: gnat_rm/the_gnat_library ada-exceptions-last-chance-handler-a-elchha-ads797569
! Ref: 306797569
! Ref: gnat_rm/the_gnat_library id13797569
! Ref: 307797569
! Node: Ada Exceptions Traceback a-exctra ads797899
! Ref: gnat_rm/the_gnat_library ada-exceptions-traceback-a-exctra-ads798095
! Ref: 308798095
! Ref: gnat_rm/the_gnat_library id14798095
! Ref: 309798095
! Node: Ada Sequential_IO C_Streams a-siocst ads798340
! Ref: gnat_rm/the_gnat_library ada-sequential-io-c-streams-a-siocst-ads798533
! Ref: 30a798533
! Ref: gnat_rm/the_gnat_library id15798533
! Ref: 30b798533
! Node: Ada Streams Stream_IO C_Streams a-ssicst ads798896
! Ref: gnat_rm/the_gnat_library ada-streams-stream-io-c-streams-a-ssicst-ads799094
! Ref: 30c799094
! Ref: gnat_rm/the_gnat_library id16799094
! Ref: 30d799094
! Node: Ada Strings Unbounded Text_IO a-suteio ads799461
! Ref: gnat_rm/the_gnat_library ada-strings-unbounded-text-io-a-suteio-ads799671
! Ref: 30e799671
! Ref: gnat_rm/the_gnat_library id17799671
! Ref: 30f799671
! Node: Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads799936
! Ref: gnat_rm/the_gnat_library ada-strings-wide-unbounded-wide-text-io-a-swuwti-ads800164
! Ref: 310800164
! Ref: gnat_rm/the_gnat_library id18800164
! Ref: 311800164
! Node: Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads800459
! Ref: gnat_rm/the_gnat_library ada-strings-wide-wide-unbounded-wide-wide-text-io-a-szuzti-ads800681
! Ref: 312800681
! Ref: gnat_rm/the_gnat_library id19800681
! Ref: 313800681
! Node: Ada Task_Initialization a-tasini ads801006
! Ref: gnat_rm/the_gnat_library ada-task-initialization-a-tasini-ads801210
! Ref: 314801210
! Ref: gnat_rm/the_gnat_library id20801210
! Ref: 315801210
! Node: Ada Text_IO C_Streams a-tiocst ads801579
! Ref: gnat_rm/the_gnat_library ada-text-io-c-streams-a-tiocst-ads801766
! Ref: 316801766
! Ref: gnat_rm/the_gnat_library id21801766
! Ref: 317801766
! Node: Ada Text_IO Reset_Standard_Files a-tirsfi ads802111
! Ref: gnat_rm/the_gnat_library ada-text-io-reset-standard-files-a-tirsfi-ads802302
! Ref: 318802302
! Ref: gnat_rm/the_gnat_library id22802302
! Ref: 319802302
! Node: Ada Wide_Characters Unicode a-wichun ads802721
! Ref: gnat_rm/the_gnat_library ada-wide-characters-unicode-a-wichun-ads802917
! Ref: 31a802917
! Ref: gnat_rm/the_gnat_library id23802917
! Ref: 31b802917
! Node: Ada Wide_Text_IO C_Streams a-wtcstr ads803151
! Ref: gnat_rm/the_gnat_library ada-wide-text-io-c-streams-a-wtcstr-ads803352
! Ref: 31c803352
! Ref: gnat_rm/the_gnat_library id24803352
! Ref: 31d803352
! Node: Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads803712
! Ref: gnat_rm/the_gnat_library ada-wide-text-io-reset-standard-files-a-wrstfi-ads803918
! Ref: 31e803918
! Ref: gnat_rm/the_gnat_library id25803918
! Ref: 31f803918
! Node: Ada Wide_Wide_Characters Unicode a-zchuni ads804352
! Ref: gnat_rm/the_gnat_library ada-wide-wide-characters-unicode-a-zchuni-ads804563
! Ref: 320804563
! Ref: gnat_rm/the_gnat_library id26804563
! Ref: 321804563
! Node: Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads804812
! Ref: gnat_rm/the_gnat_library ada-wide-wide-text-io-c-streams-a-ztcstr-ads805028
! Ref: 322805028
! Ref: gnat_rm/the_gnat_library id27805028
! Ref: 323805028
! Node: Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads805403
! Ref: gnat_rm/the_gnat_library ada-wide-wide-text-io-reset-standard-files-a-zrstfi-ads805599
! Ref: 324805599
! Ref: gnat_rm/the_gnat_library id28805599
! Ref: 325805599
! Node: GNAT Altivec g-altive ads806048
! Ref: gnat_rm/the_gnat_library gnat-altivec-g-altive-ads806237
! Ref: 326806237
! Ref: gnat_rm/the_gnat_library id29806237
! Ref: 327806237
! Node: GNAT Altivec Conversions g-altcon ads806468
! Ref: gnat_rm/the_gnat_library gnat-altivec-conversions-g-altcon-ads806645
! Ref: 328806645
! Ref: gnat_rm/the_gnat_library id30806645
! Ref: 329806645
! Node: GNAT Altivec Vector_Operations g-alveop ads806814
! Ref: gnat_rm/the_gnat_library gnat-altivec-vector-operations-g-alveop-ads807004
! Ref: 32a807004
! Ref: gnat_rm/the_gnat_library id31807004
! Ref: 32b807004
! Node: GNAT Altivec Vector_Types g-alvety ads807364
! Ref: gnat_rm/the_gnat_library gnat-altivec-vector-types-g-alvety-ads807555
! Ref: 32c807555
! Ref: gnat_rm/the_gnat_library id32807555
! Ref: 32d807555
! Node: GNAT Altivec Vector_Views g-alvevi ads807760
! Ref: gnat_rm/the_gnat_library gnat-altivec-vector-views-g-alvevi-ads807937
! Ref: 32e807937
! Ref: gnat_rm/the_gnat_library id33807937
! Ref: 32f807937
! Node: GNAT Array_Split g-arrspl ads808308
! Ref: gnat_rm/the_gnat_library gnat-array-split-g-arrspl-ads808465
! Ref: 330808465
! Ref: gnat_rm/the_gnat_library id34808465
! Ref: 331808465
! Node: GNAT AWK g-awk ads808720
! Ref: gnat_rm/the_gnat_library gnat-awk-g-awk-ads808870
! Ref: 332808870
! Ref: gnat_rm/the_gnat_library id35808870
! Ref: 333808870
! Node: GNAT Binary_Search g-binsea ads809165
! Ref: gnat_rm/the_gnat_library gnat-binary-search-g-binsea-ads809320
! Ref: 334809320
! Ref: gnat_rm/the_gnat_library id36809320
! Ref: 335809320
! Node: GNAT Bind_Environment g-binenv ads809540
! Ref: gnat_rm/the_gnat_library gnat-bind-environment-g-binenv-ads809712
! Ref: 336809712
! Ref: gnat_rm/the_gnat_library id37809712
! Ref: 337809712
! Node: GNAT Branch_Prediction g-brapre ads809965
! Ref: gnat_rm/the_gnat_library gnat-branch-prediction-g-brapre-ads810139
! Ref: 338810139
! Ref: gnat_rm/the_gnat_library id38810139
! Ref: 339810139
! Node: GNAT Bounded_Buffers g-boubuf ads810323
! Ref: gnat_rm/the_gnat_library gnat-bounded-buffers-g-boubuf-ads810498
! Ref: 33a810498
! Ref: gnat_rm/the_gnat_library id39810498
! Ref: 33b810498
! Node: GNAT Bounded_Mailboxes g-boumai ads810766
! Ref: gnat_rm/the_gnat_library gnat-bounded-mailboxes-g-boumai-ads810935
! Ref: 33c810935
! Ref: gnat_rm/the_gnat_library id40810935
! Ref: 33d810935
! Node: GNAT Bubble_Sort g-bubsor ads811119
! Ref: gnat_rm/the_gnat_library gnat-bubble-sort-g-bubsor-ads811286
! Ref: 33e811286
! Ref: gnat_rm/the_gnat_library id41811286
! Ref: 33f811286
! Node: GNAT Bubble_Sort_A g-busora ads811558
! Ref: gnat_rm/the_gnat_library gnat-bubble-sort-a-g-busora-ads811721
! Ref: 340811721
! Ref: gnat_rm/the_gnat_library id42811721
! Ref: 341811721
! Node: GNAT Bubble_Sort_G g-busorg ads812100
! Ref: gnat_rm/the_gnat_library gnat-bubble-sort-g-g-busorg-ads812267
! Ref: 342812267
! Ref: gnat_rm/the_gnat_library id43812267
! Ref: 343812267
! Node: GNAT Byte_Order_Mark g-byorma ads812611
! Ref: gnat_rm/the_gnat_library gnat-byte-order-mark-g-byorma-ads812778
! Ref: 344812778
! Ref: gnat_rm/the_gnat_library id44812778
! Ref: 345812778
! Node: GNAT Byte_Swapping g-bytswa ads813148
! Ref: gnat_rm/the_gnat_library gnat-byte-swapping-g-bytswa-ads813310
! Ref: 346813310
! Ref: gnat_rm/the_gnat_library id45813310
! Ref: 347813310
! Node: GNAT Calendar g-calend ads813545
! Ref: gnat_rm/the_gnat_library gnat-calendar-g-calend-ads813708
! Ref: 348813708
! Ref: gnat_rm/the_gnat_library id46813708
! Ref: 349813708
! Node: GNAT Calendar Time_IO g-catiio ads814045
! Ref: gnat_rm/the_gnat_library gnat-calendar-time-io-g-catiio-ads814199
! Ref: 34a814199
! Ref: gnat_rm/the_gnat_library id47814199
! Ref: 34b814199
! Node: GNAT CRC32 g-crc32 ads814302
! Ref: gnat_rm/the_gnat_library gnat-crc32-g-crc32-ads814457
! Ref: 34c814457
! Ref: gnat_rm/the_gnat_library id48814457
! Ref: 34d814457
! Node: GNAT Case_Util g-casuti ads814783
! Ref: gnat_rm/the_gnat_library gnat-case-util-g-casuti-ads814922
! Ref: 34e814922
! Ref: gnat_rm/the_gnat_library id49814922
! Ref: 34f814922
! Node: GNAT CGI g-cgi ads815165
! Ref: gnat_rm/the_gnat_library gnat-cgi-g-cgi-ads815310
! Ref: 350815310
! Ref: gnat_rm/the_gnat_library id50815310
! Ref: 351815310
! Node: GNAT CGI Cookie g-cgicoo ads815692
! Ref: gnat_rm/the_gnat_library gnat-cgi-cookie-g-cgicoo-ads815837
! Ref: 352815837
! Ref: gnat_rm/the_gnat_library id51815837
! Ref: 353815837
! Node: GNAT CGI Debug g-cgideb ads816134
! Ref: gnat_rm/the_gnat_library gnat-cgi-debug-g-cgideb-ads816291
! Ref: 354816291
! Ref: gnat_rm/the_gnat_library id52816291
! Ref: 355816291
! Node: GNAT Command_Line g-comlin ads816473
! Ref: gnat_rm/the_gnat_library gnat-command-line-g-comlin-ads816636
! Ref: 356816636
! Ref: gnat_rm/the_gnat_library id53816636
! Ref: 357816636
! Node: GNAT Compiler_Version g-comver ads816924
! Ref: gnat_rm/the_gnat_library gnat-compiler-version-g-comver-ads817084
! Ref: 358817084
! Ref: gnat_rm/the_gnat_library id54817084
! Ref: 359817084
! Node: GNAT Ctrl_C g-ctrl_c ads817488
! Ref: gnat_rm/the_gnat_library gnat-ctrl-c-g-ctrl-c-ads817653
! Ref: 35a817653
! Ref: gnat_rm/the_gnat_library id55817653
! Ref: 35b817653
! Node: GNAT Current_Exception g-curexc ads817799
! Ref: gnat_rm/the_gnat_library gnat-current-exception-g-curexc-ads817959
! Ref: 35c817959
! Ref: gnat_rm/the_gnat_library id56817959
! Ref: 35d817959
! Node: GNAT Debug_Pools g-debpoo ads818375
! Ref: gnat_rm/the_gnat_library gnat-debug-pools-g-debpoo-ads818544
! Ref: 35e818544
! Ref: gnat_rm/the_gnat_library id57818544
! Ref: 35f818544
! Node: GNAT Debug_Utilities g-debuti ads818803
! Ref: gnat_rm/the_gnat_library gnat-debug-utilities-g-debuti-ads818968
! Ref: 360818968
! Ref: gnat_rm/the_gnat_library id58818968
! Ref: 361818968
! Node: GNAT Decode_String g-decstr ads819251
! Ref: gnat_rm/the_gnat_library gnat-decode-string-g-decstr-ads819423
! Ref: 362819423
! Ref: gnat_rm/the_gnat_library id59819423
! Ref: 363819423
! Node: GNAT Decode_UTF8_String g-deutst ads819931
! Ref: gnat_rm/the_gnat_library gnat-decode-utf8-string-g-deutst-ads820108
! Ref: 364820108
! Ref: gnat_rm/the_gnat_library id60820108
! Ref: 365820108
! Node: GNAT Directory_Operations g-dirope ads820278
! Ref: gnat_rm/the_gnat_library gnat-directory-operations-g-dirope-ads820472
! Ref: 366820472
! Ref: gnat_rm/the_gnat_library id61820472
! Ref: 367820472
! Node: GNAT Directory_Operations Iteration g-diopit ads820746
! Ref: gnat_rm/the_gnat_library gnat-directory-operations-iteration-g-diopit-ads820937
! Ref: 368820937
! Ref: gnat_rm/the_gnat_library id62820937
! Ref: 369820937
! Node: GNAT Dynamic_HTables g-dynhta ads821178
! Ref: gnat_rm/the_gnat_library gnat-dynamic-htables-g-dynhta-ads821363
! Ref: 36a821363
! Ref: gnat_rm/the_gnat_library id63821363
! Ref: 36b821363
! Node: GNAT Dynamic_Tables g-dyntab ads821944
! Ref: gnat_rm/the_gnat_library gnat-dynamic-tables-g-dyntab-ads822112
! Ref: 36c822112
! Ref: gnat_rm/the_gnat_library id64822112
! Ref: 36d822112
! Node: GNAT Encode_String g-encstr ads822595
! Ref: gnat_rm/the_gnat_library gnat-encode-string-g-encstr-ads822766
! Ref: 36e822766
! Ref: gnat_rm/the_gnat_library id65822766
! Ref: 36f822766
! Node: GNAT Encode_UTF8_String g-enutst ads823145
! Ref: gnat_rm/the_gnat_library gnat-encode-utf8-string-g-enutst-ads823319
! Ref: 370823319
! Ref: gnat_rm/the_gnat_library id66823319
! Ref: 371823319
! Node: GNAT Exception_Actions g-excact ads823489
! Ref: gnat_rm/the_gnat_library gnat-exception-actions-g-excact-ads823666
! Ref: 372823666
! Ref: gnat_rm/the_gnat_library id67823666
! Ref: 373823666
! Node: GNAT Exception_Traces g-exctra ads823977
! Ref: gnat_rm/the_gnat_library gnat-exception-traces-g-exctra-ads824146
! Ref: 374824146
! Ref: gnat_rm/the_gnat_library id68824146
! Ref: 375824146
! Node: GNAT Exceptions g-except ads824337
! Ref: gnat_rm/the_gnat_library gnat-exceptions-g-except-ads824495
! Ref: 376824495
! Ref: gnat_rm/the_gnat_library id69824495
! Ref: 377824495
! Node: GNAT Expect g-expect ads824989
! Ref: gnat_rm/the_gnat_library gnat-expect-g-expect-ads825141
! Ref: 378825141
! Ref: gnat_rm/the_gnat_library id70825141
! Ref: 379825141
! Node: GNAT Expect TTY g-exptty ads825672
! Ref: gnat_rm/the_gnat_library gnat-expect-tty-g-exptty-ads825827
! Ref: 37a825827
! Ref: gnat_rm/the_gnat_library id71825827
! Ref: 37b825827
! Node: GNAT Float_Control g-flocon ads826135
! Ref: gnat_rm/the_gnat_library gnat-float-control-g-flocon-ads826300
! Ref: 37c826300
! Ref: gnat_rm/the_gnat_library id72826300
! Ref: 37d826300
! Node: GNAT Formatted_String g-forstr ads826679
! Ref: gnat_rm/the_gnat_library gnat-formatted-string-g-forstr-ads826861
! Ref: 37e826861
! Ref: gnat_rm/the_gnat_library id73826861
! Ref: 37f826861
! Node: GNAT Generic_Fast_Math_Functions g-gfmafu ads827252
! Ref: gnat_rm/the_gnat_library gnat-generic-fast-math-functions-g-gfmafu-ads827430
! Ref: 380827430
! Ref: gnat_rm/the_gnat_library id74827430
! Ref: 381827430
! Node: GNAT Heap_Sort g-heasor ads828103
! Ref: gnat_rm/the_gnat_library gnat-heap-sort-g-heasor-ads828276
! Ref: 382828276
! Ref: gnat_rm/the_gnat_library id75828276
! Ref: 383828276
! Node: GNAT Heap_Sort_A g-hesora ads828654
! Ref: gnat_rm/the_gnat_library gnat-heap-sort-a-g-hesora-ads828811
! Ref: 384828811
! Ref: gnat_rm/the_gnat_library id76828811
! Ref: 385828811
! Node: GNAT Heap_Sort_G g-hesorg ads829304
! Ref: gnat_rm/the_gnat_library gnat-heap-sort-g-g-hesorg-ads829458
! Ref: 386829458
! Ref: gnat_rm/the_gnat_library id77829458
! Ref: 387829458
! Node: GNAT HTable g-htable ads829796
! Ref: gnat_rm/the_gnat_library gnat-htable-g-htable-ads829937
! Ref: 388829937
! Ref: gnat_rm/the_gnat_library id78829937
! Ref: 389829937
! Node: GNAT IO g-io ads830212
! Ref: gnat_rm/the_gnat_library gnat-io-g-io-ads830348
! Ref: 38a830348
! Ref: gnat_rm/the_gnat_library id79830348
! Ref: 38b830348
! Node: GNAT IO_Aux g-io_aux ads830657
! Ref: gnat_rm/the_gnat_library gnat-io-aux-g-io-aux-ads830797
! Ref: 38c830797
! Ref: gnat_rm/the_gnat_library id80830797
! Ref: 38d830797
! Node: GNAT Lock_Files g-locfil ads831023
! Ref: gnat_rm/the_gnat_library gnat-lock-files-g-locfil-ads831185
! Ref: 38e831185
! Ref: gnat_rm/the_gnat_library id81831185
! Ref: 38f831185
! Node: GNAT MBBS_Discrete_Random g-mbdira ads831390
! Ref: gnat_rm/the_gnat_library gnat-mbbs-discrete-random-g-mbdira-ads831563
! Ref: 390831563
! Ref: gnat_rm/the_gnat_library id82831563
! Ref: 391831563
! Node: GNAT MBBS_Float_Random g-mbflra ads831800
! Ref: gnat_rm/the_gnat_library gnat-mbbs-float-random-g-mbflra-ads831963
! Ref: 392831963
! Ref: gnat_rm/the_gnat_library id83831963
! Ref: 393831963
! Node: GNAT MD5 g-md5 ads832191
! Ref: gnat_rm/the_gnat_library gnat-md5-g-md5-ads832345
! Ref: 394832345
! Ref: gnat_rm/the_gnat_library id84832345
! Ref: 395832345
! Node: GNAT Memory_Dump g-memdum ads832579
! Ref: gnat_rm/the_gnat_library gnat-memory-dump-g-memdum-ads832737
! Ref: 396832737
! Ref: gnat_rm/the_gnat_library id85832737
! Ref: 397832737
! Node: GNAT Most_Recent_Exception g-moreex ads832972
! Ref: gnat_rm/the_gnat_library gnat-most-recent-exception-g-moreex-ads833136
! Ref: 398833136
! Ref: gnat_rm/the_gnat_library id86833136
! Ref: 399833136
! Node: GNAT OS_Lib g-os_lib ads833436
! Ref: gnat_rm/the_gnat_library gnat-os-lib-g-os-lib-ads833612
! Ref: 39a833612
! Ref: gnat_rm/the_gnat_library id87833612
! Ref: 39b833612
! Node: GNAT Perfect_Hash_Generators g-pehage ads833943
! Ref: gnat_rm/the_gnat_library gnat-perfect-hash-generators-g-pehage-ads834112
! Ref: 39c834112
! Ref: gnat_rm/the_gnat_library id88834112
! Ref: 39d834112
! Node: GNAT Random_Numbers g-rannum ads834764
! Ref: gnat_rm/the_gnat_library gnat-random-numbers-g-rannum-ads834933
! Ref: 39e834933
! Ref: gnat_rm/the_gnat_library id89834933
! Ref: 39f834933
! Node: GNAT Regexp g-regexp ads835258
! Ref: gnat_rm/the_gnat_library gnat-regexp-g-regexp-ads835412
! Ref: 275835412
! Ref: gnat_rm/the_gnat_library id90835412
! Ref: 3a0835412
! Node: GNAT Registry g-regist ads835768
! Ref: gnat_rm/the_gnat_library gnat-registry-g-regist-ads835914
! Ref: 3a1835914
! Ref: gnat_rm/the_gnat_library id91835914
! Ref: 3a2835914
! Node: GNAT Regpat g-regpat ads836268
! Ref: gnat_rm/the_gnat_library gnat-regpat-g-regpat-ads836420
! Ref: 3a3836420
! Ref: gnat_rm/the_gnat_library id92836420
! Ref: 3a4836420
! Node: GNAT Rewrite_Data g-rewdat ads836709
! Ref: gnat_rm/the_gnat_library gnat-rewrite-data-g-rewdat-ads836873
! Ref: 3a5836873
! Ref: gnat_rm/the_gnat_library id93836873
! Ref: 3a6836873
! Node: GNAT Secondary_Stack_Info g-sestin ads837237
! Ref: gnat_rm/the_gnat_library gnat-secondary-stack-info-g-sestin-ads837405
! Ref: 3a7837405
! Ref: gnat_rm/the_gnat_library id94837405
! Ref: 3a8837405
! Node: GNAT Semaphores g-semaph ads837611
! Ref: gnat_rm/the_gnat_library gnat-semaphores-g-semaph-ads837788
! Ref: 3a9837788
! Ref: gnat_rm/the_gnat_library id95837788
! Ref: 3aa837788
! Node: GNAT Serial_Communications g-sercom ads837951
! Ref: gnat_rm/the_gnat_library gnat-serial-communications-g-sercom-ads838110
! Ref: 3ab838110
! Ref: gnat_rm/the_gnat_library id96838110
! Ref: 3ac838110
! Node: GNAT SHA1 g-sha1 ads838346
! Ref: gnat_rm/the_gnat_library gnat-sha1-g-sha1-ads838501
! Ref: 3ad838501
! Ref: gnat_rm/the_gnat_library id97838501
! Ref: 3ae838501
! Node: GNAT SHA224 g-sha224 ads838758
! Ref: gnat_rm/the_gnat_library gnat-sha224-g-sha224-ads838898
! Ref: 3af838898
! Ref: gnat_rm/the_gnat_library id98838898
! Ref: 3b0838898
! Node: GNAT SHA256 g-sha256 ads839154
! Ref: gnat_rm/the_gnat_library gnat-sha256-g-sha256-ads839298
! Ref: 3b1839298
! Ref: gnat_rm/the_gnat_library id99839298
! Ref: 3b2839298
! Node: GNAT SHA384 g-sha384 ads839554
! Ref: gnat_rm/the_gnat_library gnat-sha384-g-sha384-ads839698
! Ref: 3b3839698
! Ref: gnat_rm/the_gnat_library id100839698
! Ref: 3b4839698
! Node: GNAT SHA512 g-sha512 ads839954
! Ref: gnat_rm/the_gnat_library gnat-sha512-g-sha512-ads840099
! Ref: 3b5840099
! Ref: gnat_rm/the_gnat_library id101840099
! Ref: 3b6840099
! Node: GNAT Signals g-signal ads840357
! Ref: gnat_rm/the_gnat_library gnat-signals-g-signal-ads840503
! Ref: 3b7840503
! Ref: gnat_rm/the_gnat_library id102840503
! Ref: 3b8840503
! Node: GNAT Sockets g-socket ads840678
! Ref: gnat_rm/the_gnat_library gnat-sockets-g-socket-ads840829
! Ref: 3b9840829
! Ref: gnat_rm/the_gnat_library id103840829
! Ref: 3ba840829
! Node: GNAT Source_Info g-souinf ads841225
! Ref: gnat_rm/the_gnat_library gnat-source-info-g-souinf-ads841385
! Ref: 3bb841385
! Ref: gnat_rm/the_gnat_library id104841385
! Ref: 3bc841385
! Node: GNAT Spelling_Checker g-speche ads841751
! Ref: gnat_rm/the_gnat_library gnat-spelling-checker-g-speche-ads841928
! Ref: 3bd841928
! Ref: gnat_rm/the_gnat_library id105841928
! Ref: 3be841928
! Node: GNAT Spelling_Checker_Generic g-spchge ads842140
! Ref: gnat_rm/the_gnat_library gnat-spelling-checker-generic-g-spchge-ads842322
! Ref: 3bf842322
! Ref: gnat_rm/the_gnat_library id106842322
! Ref: 3c0842322
! Node: GNAT Spitbol Patterns g-spipat ads842602
! Ref: gnat_rm/the_gnat_library gnat-spitbol-patterns-g-spipat-ads842775
! Ref: 3c1842775
! Ref: gnat_rm/the_gnat_library id107842775
! Ref: 3c2842775
! Node: GNAT Spitbol g-spitbo ads843182
! Ref: gnat_rm/the_gnat_library gnat-spitbol-g-spitbo-ads843352
! Ref: 3c3843352
! Ref: gnat_rm/the_gnat_library id108843352
! Ref: 3c4843352
! Node: GNAT Spitbol Table_Boolean g-sptabo ads843762
! Ref: gnat_rm/the_gnat_library gnat-spitbol-table-boolean-g-sptabo-ads843937
! Ref: 3c5843937
! Ref: gnat_rm/the_gnat_library id109843937
! Ref: 3c6843937
! Node: GNAT Spitbol Table_Integer g-sptain ads844207
! Ref: gnat_rm/the_gnat_library gnat-spitbol-table-integer-g-sptain-ads844396
! Ref: 3c7844396
! Ref: gnat_rm/the_gnat_library id110844396
! Ref: 3c8844396
! Node: GNAT Spitbol Table_VString g-sptavs ads844679
! Ref: gnat_rm/the_gnat_library gnat-spitbol-table-vstring-g-sptavs-ads844847
! Ref: 3c9844847
! Ref: gnat_rm/the_gnat_library id111844847
! Ref: 3ca844847
! Node: GNAT SSE g-sse ads845134
! Ref: gnat_rm/the_gnat_library gnat-sse-g-sse-ads845297
! Ref: 3cb845297
! Ref: gnat_rm/the_gnat_library id112845297
! Ref: 3cc845297
! Node: GNAT SSE Vector_Types g-ssvety ads845624
! Ref: gnat_rm/the_gnat_library gnat-sse-vector-types-g-ssvety-ads845777
! Ref: 3cd845777
! Ref: gnat_rm/the_gnat_library id113845777
! Ref: 3ce845777
! Node: GNAT String_Hash g-strhas ads845937
! Ref: gnat_rm/the_gnat_library gnat-string-hash-g-strhas-ads846097
! Ref: 3cf846097
! Ref: gnat_rm/the_gnat_library id114846097
! Ref: 3d0846097
! Node: GNAT Strings g-string ads846319
! Ref: gnat_rm/the_gnat_library gnat-strings-g-string-ads846475
! Ref: 3d1846475
! Ref: gnat_rm/the_gnat_library id115846475
! Ref: 3d2846475
! Node: GNAT String_Split g-strspl ads846690
! Ref: gnat_rm/the_gnat_library gnat-string-split-g-strspl-ads846839
! Ref: 3d3846839
! Ref: gnat_rm/the_gnat_library id116846839
! Ref: 3d4846839
! Node: GNAT Table g-table ads847158
! Ref: gnat_rm/the_gnat_library gnat-table-g-table-ads847309
! Ref: 3d5847309
! Ref: gnat_rm/the_gnat_library id117847309
! Ref: 3d6847309
! Node: GNAT Task_Lock g-tasloc ads847792
! Ref: gnat_rm/the_gnat_library gnat-task-lock-g-tasloc-ads847941
! Ref: 3d7847941
! Ref: gnat_rm/the_gnat_library id118847941
! Ref: 3d8847941
! Node: GNAT Time_Stamp g-timsta ads848223
! Ref: gnat_rm/the_gnat_library gnat-time-stamp-g-timsta-ads848375
! Ref: 3d9848375
! Ref: gnat_rm/the_gnat_library id119848375
! Ref: 3da848375
! Node: GNAT Threads g-thread ads848701
! Ref: gnat_rm/the_gnat_library gnat-threads-g-thread-ads848853
! Ref: 3db848853
! Ref: gnat_rm/the_gnat_library id120848853
! Ref: 3dc848853
! Node: GNAT Traceback g-traceb ads849209
! Ref: gnat_rm/the_gnat_library gnat-traceback-g-traceb-ads849369
! Ref: 3dd849369
! Ref: gnat_rm/the_gnat_library id121849369
! Ref: 3de849369
! Node: GNAT Traceback Symbolic g-trasym ads849571
! Ref: gnat_rm/the_gnat_library gnat-traceback-symbolic-g-trasym-ads849730
! Ref: 3df849730
! Ref: gnat_rm/the_gnat_library id122849730
! Ref: 3e0849730
! Node: GNAT UTF_32 g-utf_32 ads849839
! Ref: gnat_rm/the_gnat_library gnat-utf-32-g-utf-32-ads850012
! Ref: 3e1850012
! Ref: gnat_rm/the_gnat_library id123850012
! Ref: 3e2850012
! Node: GNAT UTF_32_Spelling_Checker g-u3spch ads850576
! Ref: gnat_rm/the_gnat_library gnat-utf-32-spelling-checker-g-u3spch-ads850752
! Ref: 3e3850752
! Ref: gnat_rm/the_gnat_library id124850752
! Ref: 3e4850752
! Node: GNAT Wide_Spelling_Checker g-wispch ads851088
! Ref: gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-wispch-ads851275
! Ref: 3e5851275
! Ref: gnat_rm/the_gnat_library id125851275
! Ref: 3e6851275
! Node: GNAT Wide_String_Split g-wistsp ads851507
! Ref: gnat_rm/the_gnat_library gnat-wide-string-split-g-wistsp-ads851697
! Ref: 3e7851697
! Ref: gnat_rm/the_gnat_library id126851697
! Ref: 3e8851697
! Node: GNAT Wide_Wide_Spelling_Checker g-zspche ads852036
! Ref: gnat_rm/the_gnat_library gnat-wide-wide-spelling-checker-g-zspche-ads852227
! Ref: 3e9852227
! Ref: gnat_rm/the_gnat_library id127852227
! Ref: 3ea852227
! Node: GNAT Wide_Wide_String_Split g-zistsp ads852479
! Ref: gnat_rm/the_gnat_library gnat-wide-wide-string-split-g-zistsp-ads852671
! Ref: 3eb852671
! Ref: gnat_rm/the_gnat_library id128852671
! Ref: 3ec852671
! Node: Interfaces C Extensions i-cexten ads853030
! Ref: gnat_rm/the_gnat_library id129853211
! Ref: 3ed853211
! Ref: gnat_rm/the_gnat_library interfaces-c-extensions-i-cexten-ads853211
! Ref: 3ee853211
! Node: Interfaces C Streams i-cstrea ads853467
! Ref: gnat_rm/the_gnat_library id130853646
! Ref: 3ef853646
! Ref: gnat_rm/the_gnat_library interfaces-c-streams-i-cstrea-ads853646
! Ref: 3f0853646
! Node: Interfaces Packed_Decimal i-pacdec ads853828
! Ref: gnat_rm/the_gnat_library id131854002
! Ref: 3f1854002
! Ref: gnat_rm/the_gnat_library interfaces-packed-decimal-i-pacdec-ads854002
! Ref: 3f2854002
! Node: Interfaces VxWorks i-vxwork ads854253
! Ref: gnat_rm/the_gnat_library id132854428
! Ref: 3f3854428
! Ref: gnat_rm/the_gnat_library interfaces-vxworks-i-vxwork-ads854428
! Ref: 3f4854428
! Node: Interfaces VxWorks IO i-vxwoio ads854588
! Ref: gnat_rm/the_gnat_library id133854758
! Ref: 3f5854758
! Ref: gnat_rm/the_gnat_library interfaces-vxworks-io-i-vxwoio-ads854758
! Ref: 3f6854758
! Node: System Address_Image s-addima ads855082
! Ref: gnat_rm/the_gnat_library id134855251
! Ref: 3f7855251
! Ref: gnat_rm/the_gnat_library system-address-image-s-addima-ads855251
! Ref: 3f8855251
! Node: System Assertions s-assert ads855483
! Ref: gnat_rm/the_gnat_library id135855653
! Ref: 3f9855653
! Ref: gnat_rm/the_gnat_library system-assertions-s-assert-ads855653
! Ref: 3fa855653
! Node: System Atomic_Counters s-atocou ads855919
! Ref: gnat_rm/the_gnat_library id136856082
! Ref: 3fb856082
! Ref: gnat_rm/the_gnat_library system-atomic-counters-s-atocou-ads856082
! Ref: 3fc856082
! Node: System Memory s-memory ads856528
! Ref: gnat_rm/the_gnat_library id137856696
! Ref: 3fd856696
! Ref: gnat_rm/the_gnat_library system-memory-s-memory-ads856696
! Ref: 3fe856696
! Node: System Multiprocessors s-multip ads857304
! Ref: gnat_rm/the_gnat_library id138857492
! Ref: 3ff857492
! Ref: gnat_rm/the_gnat_library system-multiprocessors-s-multip-ads857492
! Ref: 400857492
! Node: System Multiprocessors Dispatching_Domains s-mudido ads857790
! Ref: gnat_rm/the_gnat_library id139857991
! Ref: 401857991
! Ref: gnat_rm/the_gnat_library system-multiprocessors-dispatching-domains-s-mudido-ads857991
! Ref: 402857991
! Node: System Partition_Interface s-parint ads858329
! Ref: gnat_rm/the_gnat_library id140858526
! Ref: 403858526
! Ref: gnat_rm/the_gnat_library system-partition-interface-s-parint-ads858526
! Ref: 404858526
! Node: System Pool_Global s-pooglo ads858787
! Ref: gnat_rm/the_gnat_library id141858959
! Ref: 405858959
! Ref: gnat_rm/the_gnat_library system-pool-global-s-pooglo-ads858959
! Ref: 406858959
! Node: System Pool_Local s-pooloc ads859301
! Ref: gnat_rm/the_gnat_library id142859466
! Ref: 407859466
! Ref: gnat_rm/the_gnat_library system-pool-local-s-pooloc-ads859466
! Ref: 408859466
! Node: System Restrictions s-restri ads859841
! Ref: gnat_rm/the_gnat_library id143860001
! Ref: 409860001
! Ref: gnat_rm/the_gnat_library system-restrictions-s-restri-ads860001
! Ref: 40a860001
! Node: System Rident s-rident ads860439
! Ref: gnat_rm/the_gnat_library id144860607
! Ref: 40b860607
! Ref: gnat_rm/the_gnat_library system-rident-s-rident-ads860607
! Ref: 40c860607
! Node: System Strings Stream_Ops s-ststop ads861006
! Ref: gnat_rm/the_gnat_library id145861176
! Ref: 40d861176
! Ref: gnat_rm/the_gnat_library system-strings-stream-ops-s-ststop-ads861176
! Ref: 40e861176
! Node: System Unsigned_Types s-unstyp ads861571
! Ref: gnat_rm/the_gnat_library id146861742
! Ref: 40f861742
! Ref: gnat_rm/the_gnat_library system-unsigned-types-s-unstyp-ads861742
! Ref: 410861742
! Node: System Wch_Cnv s-wchcnv ads862178
! Ref: gnat_rm/the_gnat_library id147862338
! Ref: 411862338
! Ref: gnat_rm/the_gnat_library system-wch-cnv-s-wchcnv-ads862338
! Ref: 412862338
! Node: System Wch_Con s-wchcon ads862681
! Ref: gnat_rm/the_gnat_library id148862798
! Ref: 413862798
! Ref: gnat_rm/the_gnat_library system-wch-con-s-wchcon-ads862798
! Ref: 414862798
! Node: Interfacing to Other Languages863084
! Ref: gnat_rm/interfacing_to_other_languages doc863214
! Ref: 415863214
! Ref: gnat_rm/interfacing_to_other_languages id1863214
! Ref: 416863214
! Ref: gnat_rm/interfacing_to_other_languages interfacing-to-other-languages863214
! Ref: 11863214
! Node: Interfacing to C863566
! Ref: gnat_rm/interfacing_to_other_languages id2863677
! Ref: 417863677
! Ref: gnat_rm/interfacing_to_other_languages interfacing-to-c863677
! Ref: 418863677
! Node: Interfacing to C++866480
! Ref: gnat_rm/interfacing_to_other_languages id3866620
! Ref: 49866620
! Ref: gnat_rm/interfacing_to_other_languages id4866620
! Ref: 419866620
! Node: Interfacing to COBOL876544
! Ref: gnat_rm/interfacing_to_other_languages id5876690
! Ref: 41a876690
! Ref: gnat_rm/interfacing_to_other_languages interfacing-to-cobol876690
! Ref: 41b876690
! Node: Interfacing to Fortran876834
! Ref: gnat_rm/interfacing_to_other_languages id6876994
! Ref: 41c876994
! Ref: gnat_rm/interfacing_to_other_languages interfacing-to-fortran876994
! Ref: 41d876994
! Node: Interfacing to non-GNAT Ada code877320
! Ref: gnat_rm/interfacing_to_other_languages id7877451
! Ref: 41e877451
! Ref: gnat_rm/interfacing_to_other_languages interfacing-to-non-gnat-ada-code877451
! Ref: 41f877451
! Node: Specialized Needs Annexes878478
! Ref: gnat_rm/specialized_needs_annexes doc878631
! Ref: 420878631
! Ref: gnat_rm/specialized_needs_annexes id1878631
! Ref: 421878631
! Ref: gnat_rm/specialized_needs_annexes specialized-needs-annexes878631
! Ref: 12878631
! Node: Implementation of Specific Ada Features879702
! Ref: gnat_rm/implementation_of_specific_ada_features doc879860
! Ref: 422879860
! Ref: gnat_rm/implementation_of_specific_ada_features id1879860
! Ref: 423879860
! Ref: gnat_rm/implementation_of_specific_ada_features implementation-of-specific-ada-features879860
! Ref: 13879860
! Node: Machine Code Insertions880349
! Ref: gnat_rm/implementation_of_specific_ada_features id2880488
! Ref: 424880488
! Ref: gnat_rm/implementation_of_specific_ada_features machine-code-insertions880488
! Ref: 17d880488
! Node: GNAT Implementation of Tasking887906
! Ref: gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-tasking888100
! Ref: 425888100
! Ref: gnat_rm/implementation_of_specific_ada_features id3888100
! Ref: 426888100
! Node: Mapping Ada Tasks onto the Underlying Kernel Threads888514
! Ref: gnat_rm/implementation_of_specific_ada_features id4888687
! Ref: 427888687
! Ref: gnat_rm/implementation_of_specific_ada_features mapping-ada-tasks-onto-the-underlying-kernel-threads888687
! Ref: 428888687
! Node: Ensuring Compliance with the Real-Time Annex890843
! Ref: gnat_rm/implementation_of_specific_ada_features ensuring-compliance-with-the-real-time-annex891053
! Ref: 429891053
! Ref: gnat_rm/implementation_of_specific_ada_features id5891053
! Ref: 42a891053
! Node: Support for Locking Policies892965
! Ref: gnat_rm/implementation_of_specific_ada_features support-for-locking-policies893114
! Ref: 42b893114
! Node: GNAT Implementation of Shared Passive Packages894273
! Ref: gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-shared-passive-packages894480
! Ref: 42c894480
! Ref: gnat_rm/implementation_of_specific_ada_features id6894480
! Ref: 42d894480
! Node: Code Generation for Array Aggregates897598
! Ref: gnat_rm/implementation_of_specific_ada_features code-generation-for-array-aggregates897835
! Ref: 42e897835
! Ref: gnat_rm/implementation_of_specific_ada_features id7897835
! Ref: 42f897835
! Node: Static constant aggregates with static bounds899258
! Ref: gnat_rm/implementation_of_specific_ada_features id8899438
! Ref: 430899438
! Ref: gnat_rm/implementation_of_specific_ada_features static-constant-aggregates-with-static-bounds899438
! Ref: 431899438
! Node: Constant aggregates with unconstrained nominal types900841
! Ref: gnat_rm/implementation_of_specific_ada_features constant-aggregates-with-unconstrained-nominal-types901059
! Ref: 432901059
! Ref: gnat_rm/implementation_of_specific_ada_features id9901059
! Ref: 433901059
! Node: Aggregates with static bounds901559
! Ref: gnat_rm/implementation_of_specific_ada_features aggregates-with-static-bounds901764
! Ref: 434901764
! Ref: gnat_rm/implementation_of_specific_ada_features id10901764
! Ref: 435901764
! Node: Aggregates with nonstatic bounds902398
! Ref: gnat_rm/implementation_of_specific_ada_features aggregates-with-nonstatic-bounds902586
! Ref: 436902586
! Ref: gnat_rm/implementation_of_specific_ada_features id11902586
! Ref: 437902586
! Node: Aggregates in assignment statements902994
! Ref: gnat_rm/implementation_of_specific_ada_features aggregates-in-assignment-statements903144
! Ref: 438903144
! Ref: gnat_rm/implementation_of_specific_ada_features id12903144
! Ref: 439903144
! Node: The Size of Discriminated Records with Default Discriminants904402
! Ref: gnat_rm/implementation_of_specific_ada_features id13904625
! Ref: 43a904625
! Ref: gnat_rm/implementation_of_specific_ada_features the-size-of-discriminated-records-with-default-discriminants904625
! Ref: 43b904625
! Node: Image Values For Nonscalar Types907569
! Ref: gnat_rm/implementation_of_specific_ada_features id14907802
! Ref: 43c907802
! Ref: gnat_rm/implementation_of_specific_ada_features image-values-for-nonscalar-types907802
! Ref: 43d907802
! Node: Strict Conformance to the Ada Reference Manual908865
! Ref: gnat_rm/implementation_of_specific_ada_features id15909029
! Ref: 43e909029
! Ref: gnat_rm/implementation_of_specific_ada_features strict-conformance-to-the-ada-reference-manual909029
! Ref: 43f909029
! Node: Implementation of Ada 2012 Features910460
! Ref: gnat_rm/implementation_of_ada_2012_features doc910617
! Ref: 440910617
! Ref: gnat_rm/implementation_of_ada_2012_features id1910617
! Ref: 441910617
! Ref: gnat_rm/implementation_of_ada_2012_features implementation-of-ada-2012-features910617
! Ref: 14910617
! Node: GNAT language extensions959054
! Ref: gnat_rm/gnat_language_extensions doc959199
! Ref: 442959199
! Ref: gnat_rm/gnat_language_extensions gnat-language-extensions959199
! Ref: 443959199
! Ref: gnat_rm/gnat_language_extensions id1959199
! Ref: 444959199
! Node: How to activate the extended GNAT Ada superset960041
! Ref: gnat_rm/gnat_language_extensions how-to-activate-the-extended-gnat-ada-superset960176
! Ref: 445960176
! Node: Curated Extensions961120
! Ref: gnat_rm/gnat_language_extensions curated-extensions961296
! Ref: 446961296
! Ref: gnat_rm/gnat_language_extensions curated-language-extensions961296
! Ref: 6a961296
! Node: Local Declarations Without Block961825
! Ref: gnat_rm/gnat_language_extensions local-declarations-without-block961943
! Ref: 447961943
! Node: Deep delta Aggregates964550
! Ref: gnat_rm/gnat_language_extensions deep-delta-aggregates964724
! Ref: 448964724
! Node: Syntax965304
! Ref: gnat_rm/gnat_language_extensions syntax965392
! Ref: 449965392
! Node: Legality Rules966938
! Ref: gnat_rm/gnat_language_extensions legality-rules967052
! Ref: 44a967052
! Node: Dynamic Semantics968295
! Ref: gnat_rm/gnat_language_extensions dynamic-semantics968411
! Ref: 44b968411
! Node: Examples970524
! Ref: gnat_rm/gnat_language_extensions examples970617
! Ref: 44c970617
! Node: Fixed lower bounds for array types and subtypes971230
! Ref: gnat_rm/gnat_language_extensions fixed-lower-bounds-for-array-types-and-subtypes971447
! Ref: 44d971447
! Node: Prefixed-view notation for calls to primitive subprograms of untagged types973282
! Ref: gnat_rm/gnat_language_extensions prefixed-view-notation-for-calls-to-primitive-subprograms-of-untagged-types973526
! Ref: 44e973526
! Node: Expression defaults for generic formal functions975427
! Ref: gnat_rm/gnat_language_extensions expression-defaults-for-generic-formal-functions975644
! Ref: 44f975644
! Node: String interpolation976572
! Ref: gnat_rm/gnat_language_extensions string-interpolation976755
! Ref: 450976755
! Node: Constrained attribute for generic objects979582
! Ref: gnat_rm/gnat_language_extensions constrained-attribute-for-generic-objects979753
! Ref: 451979753
! Node: Static aspect on intrinsic functions979998
! Ref: gnat_rm/gnat_language_extensions static-aspect-on-intrinsic-functions980176
! Ref: 452980176
! Node: First Controlling Parameter980493
! Ref: gnat_rm/gnat_language_extensions first-controlling-parameter980621
! Ref: 453980621
! Node: Experimental Language Extensions983747
! Ref: gnat_rm/gnat_language_extensions experimental-language-extensions983868
! Ref: 6b983868
! Ref: gnat_rm/gnat_language_extensions id2983868
! Ref: 454983868
! Node: Conditional when constructs984389
! Ref: gnat_rm/gnat_language_extensions conditional-when-constructs984508
! Ref: 455984508
! Node: Storage Model985802
! Ref: gnat_rm/gnat_language_extensions storage-model985945
! Ref: 456985945
! Node: Aspect Storage_Model_Type986409
! Ref: gnat_rm/gnat_language_extensions aspect-storage-model-type986525
! Ref: 457986525
! Node: Aspect Designated_Storage_Model990311
! Ref: gnat_rm/gnat_language_extensions aspect-designated-storage-model990456
! Ref: 458990456
! Node: Legacy Storage Pools993045
! Ref: gnat_rm/gnat_language_extensions legacy-storage-pools993156
! Ref: 459993156
! Node: Attribute Super994677
! Ref: gnat_rm/gnat_language_extensions attribute-super994820
! Ref: 45a994820
! Node: Simpler Accessibility Model995735
! Ref: gnat_rm/gnat_language_extensions simpler-accessibility-model995886
! Ref: 45b995886
! Node: Stand-alone objects997173
! Ref: gnat_rm/gnat_language_extensions stand-alone-objects997287
! Ref: 45c997287
! Node: Subprogram parameters998816
! Ref: gnat_rm/gnat_language_extensions subprogram-parameters998955
! Ref: 45d998955
! Node: Function results1002620
! Ref: gnat_rm/gnat_language_extensions function-results1002731
! Ref: 45e1002731
! Node: Case pattern matching1007262
! Ref: gnat_rm/gnat_language_extensions case-pattern-matching1007443
! Ref: 45f1007443
! Node: Mutably Tagged Types with Sizeâ€™Class Aspect1012452
! Ref: gnat_rm/gnat_language_extensions mutably-tagged-types-with-size-class-aspect1012630
! Ref: 4601012630
! Node: Generalized Finalization1017588
! Ref: gnat_rm/gnat_language_extensions generalized-finalization1017760
! Ref: 4611017760
! Node: Finalizable tagged types1021751
! Ref: gnat_rm/gnat_language_extensions finalizable-tagged-types1021861
! Ref: 4631021861
! Node: Composite types1022243
! Ref: gnat_rm/gnat_language_extensions composite-types1022400
! Ref: 4641022400
! Node: Interoperability with controlled types1022745
! Ref: gnat_rm/gnat_language_extensions interoperability-with-controlled-types1022869
! Ref: 4651022869
! Node: No_Raise aspect1023233
! Ref: gnat_rm/gnat_language_extensions no-raise-aspect1023414
! Ref: 4661023414
! Node: Inference of Dependent Types in Generic Instantiations1023762
! Ref: gnat_rm/gnat_language_extensions inference-of-dependent-types-in-generic-instantiations1023949
! Ref: 4671023949
! Node: External_Initialization Aspect1025952
! Ref: gnat_rm/gnat_language_extensions external-initialization-aspect1026141
! Ref: 4681026141
! Node: Finally construct1027201
! Ref: gnat_rm/gnat_language_extensions finally-construct1027327
! Node: Syntax<2>1027751
! Ref: gnat_rm/gnat_language_extensions id41027841
! Ref: 46a1027841
! Node: Legality Rules<2>1028075
! Ref: gnat_rm/gnat_language_extensions id51028194
! Ref: 46b1028194
! Node: Dynamic Semantics<2>1028510
! Ref: gnat_rm/gnat_language_extensions id61028611
! Ref: 46c1028611
! Node: Security Hardening Features1029264
! Ref: gnat_rm/security_hardening_features doc1029394
! Ref: 46d1029394
! Ref: gnat_rm/security_hardening_features id11029394
! Ref: 46e1029394
! Ref: gnat_rm/security_hardening_features security-hardening-features1029394
! Ref: 151029394
! Node: Register Scrubbing1029760
! Ref: gnat_rm/security_hardening_features register-scrubbing1029867
! Ref: 4691029867
! Node: Stack Scrubbing1031061
! Ref: gnat_rm/security_hardening_features stack-scrubbing1031198
! Ref: 4701031198
! Node: Hardened Conditionals1036179
! Ref: gnat_rm/security_hardening_features hardened-conditionals1036315
! Ref: 4711036315
! Node: Hardened Booleans1038917
! Ref: gnat_rm/security_hardening_features hardened-booleans1039061
! Ref: 4721039061
! Node: Control Flow Redundancy1040939
! Ref: gnat_rm/security_hardening_features control-flow-redundancy1041053
! Ref: 4731041053
! Node: Obsolescent Features1047185
! Ref: gnat_rm/obsolescent_features doc1047322
! Ref: 4741047322
! Ref: gnat_rm/obsolescent_features id11047322
! Ref: 4751047322
! Ref: gnat_rm/obsolescent_features obsolescent-features1047322
! Ref: 161047322
! Node: pragma No_Run_Time1047786
! Ref: gnat_rm/obsolescent_features id21047887
! Ref: 4761047887
! Ref: gnat_rm/obsolescent_features pragma-no-run-time1047887
! Ref: 4771047887
! Node: pragma Ravenscar1048419
! Ref: gnat_rm/obsolescent_features id31048555
! Ref: 4781048555
! Ref: gnat_rm/obsolescent_features pragma-ravenscar1048555
! Ref: 4791048555
! Node: pragma Restricted_Run_Time1048771
! Ref: gnat_rm/obsolescent_features id41048905
! Ref: 47a1048905
! Ref: gnat_rm/obsolescent_features pragma-restricted-run-time1048905
! Ref: 47b1048905
! Node: pragma Task_Info1049209
! Ref: gnat_rm/obsolescent_features id51049364
! Ref: 47c1049364
! Ref: gnat_rm/obsolescent_features pragma-task-info1049364
! Ref: 47d1049364
! Node: package System Task_Info s-tasinf ads1050229
! Ref: gnat_rm/obsolescent_features package-system-task-info1050349
! Ref: 47e1050349
! Ref: gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads1050349
! Ref: 47f1050349
! Node: Compatibility and Porting Guide1050715
! Ref: gnat_rm/compatibility_and_porting_guide doc1050855
! Ref: 4801050855
! Ref: gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide1050855
! Ref: 171050855
! Ref: gnat_rm/compatibility_and_porting_guide id11050855
! Ref: 4811050855
! Node: Writing Portable Fixed-Point Declarations1051494
! Ref: gnat_rm/compatibility_and_porting_guide id21051638
! Ref: 4821051638
! Ref: gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations1051638
! Ref: 4831051638
! Node: Compatibility with Ada 831055536
! Ref: gnat_rm/compatibility_and_porting_guide compatibility-with-ada-831055730
! Ref: 4841055730
! Ref: gnat_rm/compatibility_and_porting_guide id31055730
! Ref: 4851055730
! Node: Legal Ada 83 programs that are illegal in Ada 951056604
! Ref: gnat_rm/compatibility_and_porting_guide id41056752
! Ref: 4861056752
! Ref: gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-951056752
! Ref: 4871056752
! Node: More deterministic semantics1061310
! Ref: gnat_rm/compatibility_and_porting_guide id51061484
! Ref: 4881061484
! Ref: gnat_rm/compatibility_and_porting_guide more-deterministic-semantics1061484
! Ref: 4891061484
! Node: Changed semantics1062412
! Ref: gnat_rm/compatibility_and_porting_guide changed-semantics1062573
! Ref: 48a1062573
! Ref: gnat_rm/compatibility_and_porting_guide id61062573
! Ref: 48b1062573
! Node: Other language compatibility issues1064148
! Ref: gnat_rm/compatibility_and_porting_guide id71064272
! Ref: 48d1064272
! Ref: gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues1064272
! Ref: 48e1064272
! Node: Compatibility between Ada 95 and Ada 20051065565
! Ref: gnat_rm/compatibility_and_porting_guide compatibility-between-ada-95-and-ada-20051065758
! Ref: gnat_rm/compatibility_and_porting_guide id81065758
! Ref: 48f1065758
! Node: Implementation-dependent characteristics1068187
! Ref: gnat_rm/compatibility_and_porting_guide id91068391
! Ref: 4901068391
! Ref: gnat_rm/compatibility_and_porting_guide implementation-dependent-characteristics1068391
! Ref: 4911068391
! Node: Implementation-defined pragmas1069178
! Ref: gnat_rm/compatibility_and_porting_guide id101069328
! Ref: 4921069328
! Ref: gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas1069328
! Ref: 4931069328
! Node: Implementation-defined attributes1070312
! Ref: gnat_rm/compatibility_and_porting_guide id111070480
! Ref: 4941070480
! Ref: gnat_rm/compatibility_and_porting_guide implementation-defined-attributes1070480
! Ref: 4951070480
! Node: Libraries1071032
! Ref: gnat_rm/compatibility_and_porting_guide id121071187
! Ref: 4961071187
! Ref: gnat_rm/compatibility_and_porting_guide libraries1071187
! Ref: 4971071187
! Node: Elaboration order1072091
! Ref: gnat_rm/compatibility_and_porting_guide elaboration-order1072236
! Ref: 4981072236
! Ref: gnat_rm/compatibility_and_porting_guide id131072236
! Ref: 4991072236
! Node: Target-specific aspects1073688
! Ref: gnat_rm/compatibility_and_porting_guide id141073815
! Ref: 49a1073815
! Ref: gnat_rm/compatibility_and_porting_guide target-specific-aspects1073815
! Ref: 49b1073815
! Node: Compatibility with Other Ada Systems1074578
! Ref: gnat_rm/compatibility_and_porting_guide compatibility-with-other-ada-systems1074763
! Ref: 49d1074763
! Ref: gnat_rm/compatibility_and_porting_guide id151074763
! Ref: 49e1074763
! Node: Representation Clauses1076307
! Ref: gnat_rm/compatibility_and_porting_guide id161076480
! Ref: 49f1076480
! Ref: gnat_rm/compatibility_and_porting_guide representation-clauses1076480
! Ref: 49c1076480
! Node: Compatibility with HP Ada 831081119
! Ref: gnat_rm/compatibility_and_porting_guide compatibility-with-hp-ada-831081247
! Ref: 4a01081247
! Ref: gnat_rm/compatibility_and_porting_guide id171081247
! Ref: 4a11081247
! Node: GNU Free Documentation License1082125
! Ref: share/gnu_free_documentation_license doc1082250
! Ref: 4a21082250
! Ref: share/gnu_free_documentation_license gnu-fdl1082250
! Ref: 11082250
! Ref: share/gnu_free_documentation_license gnu-free-documentation-license1082250
! Ref: 4a31082250
! Node: Index1105592
  
  End Tag Table
  
diff -Nrcpad gcc-15.2.0/gcc/doc/gnat_ugn.info gcc-15.3.0/gcc/doc/gnat_ugn.info
*** gcc-15.2.0/gcc/doc/gnat_ugn.info	Fri Aug  8 07:17:35 2025
--- gcc-15.3.0/gcc/doc/gnat_ugn.info	Fri Jun 12 06:36:28 2026
***************
*** 1,7 ****
! This is gnat_ugn.info, produced by makeinfo version 6.5 from
  gnat_ugn.texi.
  
!      GNAT Userâ€™s Guide for Native Platforms , Jan 13, 2025
  
       AdaCore
  
--- 1,7 ----
! This is gnat_ugn.info, produced by makeinfo version 7.1 from
  gnat_ugn.texi.
  
!      GNAT User's Guide for Native Platforms , Jan 13, 2025
  
       AdaCore
  
*************** END-INFO-DIR-ENTRY
*** 18,35 ****
  
  File: gnat_ugn.info,  Node: Top,  Next: About This Guide,  Up: (dir)
  
! GNAT Userâ€™s Guide for Native Platforms
  **************************************
  
!      GNAT Userâ€™s Guide for Native Platforms , Jan 13, 2025
  
       AdaCore
  
       Copyright Â© 2008-2025, Free Software Foundation
  
! â€˜GNAT, The GNU Ada Development Environmentâ€™
  
! GCC version 15.2.0
  AdaCore
  
  Permission is granted to copy, distribute and/or modify this document
--- 18,35 ----
  
  File: gnat_ugn.info,  Node: Top,  Next: About This Guide,  Up: (dir)
  
! GNAT User's Guide for Native Platforms
  **************************************
  
!      GNAT User's Guide for Native Platforms , Jan 13, 2025
  
       AdaCore
  
       Copyright Â© 2008-2025, Free Software Foundation
  
! 'GNAT, The GNU Ada Development Environment'
  
! GCC version 15.3.0
  AdaCore
  
  Permission is granted to copy, distribute and/or modify this document
*************** License: 1.
*** 55,61 ****
  * GNU Free Documentation License::
  * Index::
  
!  â€” The Detailed Node Listing â€”
  
  About This Guide
  
--- 55,61 ----
  * GNU Free Documentation License::
  * Index::
  
!  -- The Detailed Node Listing --
  
  About This Guide
  
*************** in this guide:
*** 646,652 ****
  
     * â€˜Variablesâ€™
  
!    * â€˜Emphasisâ€™
  
     * [optional information or parameters]
  
--- 646,652 ----
  
     * â€˜Variablesâ€™
  
!    * 'Emphasis'
  
     * [optional information or parameters]
  
*************** program and the spec and body of a packa
*** 844,858 ****
  Following the one-unit-per-file rule, place this program in the
  following three separate files:
  
! â€˜greetings.adsâ€™
  
       spec of package â€˜Greetingsâ€™
  
! â€˜greetings.adbâ€™
  
       body of package â€˜Greetingsâ€™
  
! â€˜gmain.adbâ€™
  
       body of main program
  
--- 844,858 ----
  Following the one-unit-per-file rule, place this program in the
  following three separate files:
  
! 'greetings.ads'
  
       spec of package â€˜Greetingsâ€™
  
! 'greetings.adb'
  
       body of package â€˜Greetingsâ€™
  
! 'gmain.adb'
  
       body of main program
  
*************** this code is used to represent the end o
*** 971,978 ****
  
  Each file contains a single Ada compilation unit, including any pragmas
  associated with the unit.  For example, this means you must place a
! package declaration (a package â€˜specâ€™) and the corresponding body in
! separate files.  An Ada â€˜compilationâ€™ (which is a sequence of
  compilation units) is represented using a sequence of files.  Similarly,
  you place each subunit or child unit in a separate file.
  
--- 971,978 ----
  
  Each file contains a single Ada compilation unit, including any pragmas
  associated with the unit.  For example, this means you must place a
! package declaration (a package 'spec') and the corresponding body in
! separate files.  An Ada 'compilation' (which is a sequence of
  compilation units) is represented using a sequence of files.  Similarly,
  you place each subunit or child unit in a separate file.
  
*************** File: gnat_ugn.info,  Node: Other 8-Bit
*** 1020,1051 ****
  
  GNAT also supports several other 8-bit coding schemes:
  
! â€˜ISO 8859-2 (Latin-2)â€™
  
       Latin-2 letters allowed in identifiers, with uppercase and
       lowercase equivalence.
  
! â€˜ISO 8859-3 (Latin-3)â€™
  
       Latin-3 letters allowed in identifiers, with uppercase and
       lowercase equivalence.
  
! â€˜ISO 8859-4 (Latin-4)â€™
  
       Latin-4 letters allowed in identifiers, with uppercase and
       lowercase equivalence.
  
! â€˜ISO 8859-5 (Cyrillic)â€™
  
       ISO 8859-5 letters (Cyrillic) allowed in identifiers, with
       uppercase and lowercase equivalence.
  
! â€˜ISO 8859-15 (Latin-9)â€™
  
       ISO 8859-15 (Latin-9) letters allowed in identifiers, with
       uppercase and lowercase equivalence.
  
! â€˜IBM PC (code page 437)â€™
  
       This code page is the normal default for PCs in the US. It
       corresponds to the original IBM PC character set.  This set has
--- 1020,1051 ----
  
  GNAT also supports several other 8-bit coding schemes:
  
! 'ISO 8859-2 (Latin-2)'
  
       Latin-2 letters allowed in identifiers, with uppercase and
       lowercase equivalence.
  
! 'ISO 8859-3 (Latin-3)'
  
       Latin-3 letters allowed in identifiers, with uppercase and
       lowercase equivalence.
  
! 'ISO 8859-4 (Latin-4)'
  
       Latin-4 letters allowed in identifiers, with uppercase and
       lowercase equivalence.
  
! 'ISO 8859-5 (Cyrillic)'
  
       ISO 8859-5 letters (Cyrillic) allowed in identifiers, with
       uppercase and lowercase equivalence.
  
! 'ISO 8859-15 (Latin-9)'
  
       ISO 8859-15 (Latin-9) letters allowed in identifiers, with
       uppercase and lowercase equivalence.
  
! 'IBM PC (code page 437)'
  
       This code page is the normal default for PCs in the US. It
       corresponds to the original IBM PC character set.  This set has
*************** GNAT also supports several other 8-bit c
*** 1054,1067 ****
       these letters are allowed in identifiers with uppercase and
       lowercase equivalence.
  
! â€˜IBM PC (code page 850)â€™
  
       This code page is a modification of 437 extended to include all the
       Latin-1 letters, but still not with the usual Latin-1 encoding.  In
       this mode, all these letters are allowed in identifiers with
       uppercase and lowercase equivalence.
  
! â€˜Full Upper 8-bitâ€™
  
       Any character in the range 80-FF is allowed in identifiers and all
       are considered distinct.  In other words, there are no uppercase
--- 1054,1067 ----
       these letters are allowed in identifiers with uppercase and
       lowercase equivalence.
  
! 'IBM PC (code page 850)'
  
       This code page is a modification of 437 extended to include all the
       Latin-1 letters, but still not with the usual Latin-1 encoding.  In
       this mode, all these letters are allowed in identifiers with
       uppercase and lowercase equivalence.
  
! 'Full Upper 8-bit'
  
       Any character in the range 80-FF is allowed in identifiers and all
       are considered distinct.  In other words, there are no uppercase
*************** GNAT also supports several other 8-bit c
*** 1070,1076 ****
       character sets (e.g., the typical method of representing Chinese
       characters on the PC).
  
! â€˜No Upper-Halfâ€™
  
       No upper-half characters in the range 80-FF are allowed in
       identifiers.  This gives Ada 83 compatibility for identifier names.
--- 1070,1076 ----
       character sets (e.g., the typical method of representing Chinese
       characters on the PC).
  
! 'No Upper-Half'
  
       No upper-half characters in the range 80-FF are allowed in
       identifiers.  This gives Ada 83 compatibility for identifier names.
*************** GNAT allows wide character codes to appe
*** 1090,1096 ****
  literals, and also optionally in identifiers, by means of the following
  possible encoding schemes:
  
! â€˜Hex Codingâ€™
  
       In this encoding, a wide character is represented by the following
       five character sequence:
--- 1090,1096 ----
  literals, and also optionally in identifiers, by means of the following
  possible encoding schemes:
  
! 'Hex Coding'
  
       In this encoding, a wide character is represented by the following
       five character sequence:
*************** possible encoding schemes:
*** 1102,1108 ****
       A345 is used to represent the wide character with code â€˜16#A345#â€™.
       This scheme is compatible with use of the full Wide_Character set.
  
! â€˜Upper-Half Codingâ€™
  
       The wide character with encoding â€˜16#abcd#â€™ where the upper bit is
       on (in other words, â€˜aâ€™ is in the range 8-F) is represented as two
--- 1102,1108 ----
       A345 is used to represent the wide character with code â€˜16#A345#â€™.
       This scheme is compatible with use of the full Wide_Character set.
  
! 'Upper-Half Coding'
  
       The wide character with encoding â€˜16#abcd#â€™ where the upper bit is
       on (in other words, â€˜aâ€™ is in the range 8-F) is represented as two
*************** possible encoding schemes:
*** 1111,1117 ****
       This method can be also used for shift-JIS or EUC, where the
       internal coding matches the external coding.
  
! â€˜Shift JIS Codingâ€™
  
       A wide character is represented by a two-character sequence,
       â€˜16#ab#â€™ and â€˜16#cd#â€™, with the restrictions described for
--- 1111,1117 ----
       This method can be also used for shift-JIS or EUC, where the
       internal coding matches the external coding.
  
! 'Shift JIS Coding'
  
       A wide character is represented by a two-character sequence,
       â€˜16#ab#â€™ and â€˜16#cd#â€™, with the restrictions described for
*************** possible encoding schemes:
*** 1120,1126 ****
       algorithm for Shift-JIS conversion.  You can only use characters
       defined in the JIS code set table with this encoding method.
  
! â€˜EUC Codingâ€™
  
       A wide character is represented by a two-character sequence
       â€˜16#ab#â€™ and â€˜16#cd#â€™, with both characters being in the upper
--- 1120,1126 ----
       algorithm for Shift-JIS conversion.  You can only use characters
       defined in the JIS code set table with this encoding method.
  
! 'EUC Coding'
  
       A wide character is represented by a two-character sequence
       â€˜16#ab#â€™ and â€˜16#cd#â€™, with both characters being in the upper
*************** possible encoding schemes:
*** 1129,1135 ****
       use characters defined in the JIS code set table with this encoding
       method.
  
! â€˜UTF-8 Codingâ€™
  
       A wide character is represented using UCS Transformation Format 8
       (UTF-8) as defined in Annex R of ISO 10646-1/Am.2.  Depending on
--- 1129,1135 ----
       use characters defined in the JIS code set table with this encoding
       method.
  
! 'UTF-8 Coding'
  
       A wide character is represented using UCS Transformation Format 8
       (UTF-8) as defined in Annex R of ISO 10646-1/Am.2.  Depending on
*************** possible encoding schemes:
*** 1148,1154 ****
       6-byte sequences the use of these sequences is documented in the
       following section on wide wide characters.)
  
! â€˜Brackets Codingâ€™
  
       In this encoding, a wide character is represented by the following
       eight character sequence:
--- 1148,1154 ----
       6-byte sequences the use of these sequences is documented in the
       following section on wide wide characters.)
  
! 'Brackets Coding'
  
       In this encoding, a wide character is represented by the following
       eight character sequence:
*************** GNAT allows wide wide character codes to
*** 1181,1187 ****
  literals, and also optionally in identifiers, by means of the following
  possible encoding schemes:
  
! â€˜UTF-8 Codingâ€™
  
       A wide character is represented using UCS Transformation Format 8
       (UTF-8) as defined in Annex R of ISO 10646-1/Am.2.  Depending on
--- 1181,1187 ----
  literals, and also optionally in identifiers, by means of the following
  possible encoding schemes:
  
! 'UTF-8 Coding'
  
       A wide character is represented using UCS Transformation Format 8
       (UTF-8) as defined in Annex R of ISO 10646-1/Am.2.  Depending on
*************** possible encoding schemes:
*** 1199,1205 ****
       where the â€˜xxxâ€™ bits correspond to the left-padded bits of the
       32-bit character value.
  
! â€˜Brackets Codingâ€™
  
       In this encoding, a wide wide character is represented by the
       following ten or twelve byte character sequence:
--- 1199,1205 ----
       where the â€˜xxxâ€™ bits correspond to the left-padded bits of the
       32-bit character value.
  
! 'Brackets Coding'
  
       In this encoding, a wide wide character is represented by the
       following ten or twelve byte character sequence:
*************** all the compilation units in files that
*** 1533,1539 ****
  naming patterns.  To find these compilation units, â€˜gnatnameâ€™ uses the
  GNAT compiler in syntax-check-only mode on all regular files.
  
! One or several â€˜Naming Patternsâ€™ may be given as arguments to
  â€˜gnatnameâ€™.  Each Naming Pattern is enclosed between double quotes (or
  single quotes on Windows).  A Naming Pattern is a regular expression
  similar to the wildcard patterns used in file names by the Unix shells
--- 1533,1539 ----
  naming patterns.  To find these compilation units, â€˜gnatnameâ€™ uses the
  GNAT compiler in syntax-check-only mode on all regular files.
  
! One or several 'Naming Patterns' may be given as arguments to
  â€˜gnatnameâ€™.  Each Naming Pattern is enclosed between double quotes (or
  single quotes on Windows).  A Naming Pattern is a regular expression
  similar to the wildcard patterns used in file names by the Unix shells
*************** File: gnat_ugn.info,  Node: Switches for
*** 2085,2091 ****
  â€˜-gnat`xxx'â€™
  
       This passes the given â€˜-gnat`xxx'â€™ switch to â€˜gccâ€™ which is used to
!      parse the given file.  Not all â€˜xxxâ€™ options make sense, but, for
       example, the use of â€˜-gnati2â€™ allows â€˜gnatchopâ€™ to process a source
       file that uses Latin-2 coding for identifiers.
  
--- 2085,2091 ----
  â€˜-gnat`xxx'â€™
  
       This passes the given â€˜-gnat`xxx'â€™ switch to â€˜gccâ€™ which is used to
!      parse the given file.  Not all 'xxx' options make sense, but, for
       example, the use of â€˜-gnati2â€™ allows â€˜gnatchopâ€™ to process a source
       file that uses Latin-2 coding for identifiers.
  
*************** of restriction.
*** 2312,2318 ****
  
  Restrictions that require partition-wide consistency (like â€˜No_Taskingâ€™)
  are recognized wherever they appear and can be freely inherited, e.g.
! from a â€˜withâ€™ed unit to the â€˜withâ€™ing unit.  This makes sense since the
  binder will always insist on seeing consistent us, so any unit not
  conforming to any restrictions anywhere in the partition will be
  rejected and itâ€™s better for you to find that out at compile time rather
--- 2312,2318 ----
  
  Restrictions that require partition-wide consistency (like â€˜No_Taskingâ€™)
  are recognized wherever they appear and can be freely inherited, e.g.
! from a 'with'ed unit to the 'with'ing unit.  This makes sense since the
  binder will always insist on seeing consistent us, so any unit not
  conforming to any restrictions anywhere in the partition will be
  rejected and itâ€™s better for you to find that out at compile time rather
*************** source file if changes to the source fil
*** 2443,2452 ****
  recompiled.  In addition to this basic dependency, a given object may
  depend on additional source files as follows:
  
!    * If a file being compiled â€˜withâ€™s a unit â€˜Xâ€™, the object file
       depends on the file containing the spec of unit â€˜Xâ€™.  This includes
!      files that are â€˜withâ€™ed implicitly either because they are parents
!      of â€˜withâ€™ed child units or are run-time units required by the
       language constructs used in a particular unit.
  
     * If a file being compiled instantiates a library level generic unit,
--- 2443,2452 ----
  recompiled.  In addition to this basic dependency, a given object may
  depend on additional source files as follows:
  
!    * If a file being compiled 'with's a unit â€˜Xâ€™, the object file
       depends on the file containing the spec of unit â€˜Xâ€™.  This includes
!      files that are 'with'ed implicitly either because they are parents
!      of 'with'ed child units or are run-time units required by the
       language constructs used in a particular unit.
  
     * If a file being compiled instantiates a library level generic unit,
*************** depend on additional source files as fol
*** 2486,2492 ****
       dependencies and recompilation, a body and all its subunits are
       treated as an indivisible whole.
  
!      These rules are applied transitively: if unit â€˜Aâ€™ â€˜withâ€™s unit â€˜Bâ€™,
       whose elaboration calls an inlined procedure in package â€˜Câ€™, the
       object file for unit â€˜Aâ€™ depends on the body of â€˜Câ€™, in file
       â€˜c.adbâ€™.
--- 2486,2492 ----
       dependencies and recompilation, a body and all its subunits are
       treated as an indivisible whole.
  
!      These rules are applied transitively: if unit â€˜Aâ€™ 'with's unit â€˜Bâ€™,
       whose elaboration calls an inlined procedure in package â€˜Câ€™, the
       object file for unit â€˜Aâ€™ depends on the body of â€˜Câ€™, in file
       â€˜c.adbâ€™.
*************** contained in that file:
*** 2536,2542 ****
  
     * Categorization information (e.g., use of pragma â€˜Pureâ€™).
  
!    * Information on all â€˜withâ€™ed units, including presence of
       â€˜Elaborateâ€™ or â€˜Elaborate_Allâ€™ pragmas.
  
     * Information from any â€˜Linker_Optionsâ€™ pragmas used in the unit
--- 2536,2542 ----
  
     * Categorization information (e.g., use of pragma â€˜Pureâ€™).
  
!    * Information on all 'with'ed units, including presence of
       â€˜Elaborateâ€™ or â€˜Elaborate_Allâ€™ pragmas.
  
     * Information from any â€˜Linker_Optionsâ€™ pragmas used in the unit
*************** File: gnat_ugn.info,  Node: GNAT and Lib
*** 2601,2607 ****
  
  This section describes how to build and use libraries with GNAT and how
  to recompile the GNAT run-time library.  You should be familiar with the
! Project Manager facility (see the â€˜GNAT_Project_Managerâ€™ chapter of the
  â€˜GPRbuild Userâ€™s Guideâ€™) before reading this chapter.
  
  * Menu:
--- 2601,2607 ----
  
  This section describes how to build and use libraries with GNAT and how
  to recompile the GNAT run-time library.  You should be familiar with the
! Project Manager facility (see the 'GNAT_Project_Manager' chapter of the
  â€˜GPRbuild Userâ€™s Guideâ€™) before reading this chapter.
  
  * Menu:
*************** documentation purposes.  Alternatively,
*** 2644,2658 ****
  needed by an external user to make use of the library, in other words,
  the specs reflecting the library services along with all the units
  needed to compile those specs, which can include generic bodies or any
! body implementing an inlined routine.  In the case of â€˜stand-alone
! librariesâ€™ those exposed units are called â€˜interface unitsâ€™ (*note
  Stand-alone Ada Libraries: 6c.).
  
  All compilation units comprising an application, including those in a
  library, need to be elaborated in an order partially defined by Adaâ€™s
  semantics.  GNAT computes the elaboration order from the â€˜ALIâ€™ files and
  this is why they constitute a mandatory part of GNAT libraries.
! â€˜Stand-alone librariesâ€™ are the exception to this rule because a
  specific library elaboration routine is produced independently of the
  application(s) using the library.
  
--- 2644,2658 ----
  needed by an external user to make use of the library, in other words,
  the specs reflecting the library services along with all the units
  needed to compile those specs, which can include generic bodies or any
! body implementing an inlined routine.  In the case of 'stand-alone
! libraries' those exposed units are called 'interface units' (*note
  Stand-alone Ada Libraries: 6c.).
  
  All compilation units comprising an application, including those in a
  library, need to be elaborated in an order partially defined by Adaâ€™s
  semantics.  GNAT computes the elaboration order from the â€˜ALIâ€™ files and
  this is why they constitute a mandatory part of GNAT libraries.
! 'Stand-alone libraries' are the exception to this rule because a
  specific library elaboration routine is produced independently of the
  application(s) using the library.
  
*************** File: gnat_ugn.info,  Node: Building a l
*** 2675,2682 ****
  ..........................
  
  The easiest way to build a library is to use the Project Manager, which
! supports a special type of project called a â€˜Library Projectâ€™ (see the
! â€˜Library Projectsâ€™ section in the â€˜GNAT Project Managerâ€™ chapter of the
  â€˜GPRbuild Userâ€™s Guideâ€™).
  
  A project is considered a library project when two project-level
--- 2675,2682 ----
  ..........................
  
  The easiest way to build a library is to use the Project Manager, which
! supports a special type of project called a 'Library Project' (see the
! 'Library Projects' section in the 'GNAT Project Manager' chapter of the
  â€˜GPRbuild Userâ€™s Guideâ€™).
  
  A project is considered a library project when two project-level
*************** File: gnat_ugn.info,  Node: Installing a
*** 2788,2795 ****
  ............................
  
  If you use project files, library installation is part of the library
! build process (see the â€˜Installing a Library with Project Filesâ€™ section
! of the â€˜GNAT Project Managerâ€™ chapter of the â€˜GPRbuild Userâ€™s Guideâ€™).
  
  When youâ€™re not able to use project files for some reason, you can also
  install the library so that the sources needed to use the library are on
--- 2788,2795 ----
  ............................
  
  If you use project files, library installation is part of the library
! build process (see the 'Installing a Library with Project Files' section
! of the 'GNAT Project Manager' chapter of the â€˜GPRbuild Userâ€™s Guideâ€™).
  
  When youâ€™re not able to use project files for some reason, you can also
  install the library so that the sources needed to use the library are on
*************** File: gnat_ugn.info,  Node: Using a libr
*** 2840,2846 ****
  
  Once again, the project facility greatly simplifies the use of
  libraries.  In this context, using a library is just a matter of adding
! a â€˜withâ€™ clause in your project.  For example, to make use of the
  library â€˜My_Libâ€™ shown in examples in earlier sections, you can write:
  
       with "my_lib";
--- 2840,2846 ----
  
  Once again, the project facility greatly simplifies the use of
  libraries.  In this context, using a library is just a matter of adding
! a 'with' clause in your project.  For example, to make use of the
  library â€˜My_Libâ€™ shown in examples in earlier sections, you can write:
  
       with "my_lib";
*************** library â€˜My_Libâ€™ shown in examples i
*** 2850,2856 ****
  
  Even if you have a third-party, non-Ada library, you can still use
  GNATâ€™s Project Manager facility to provide a wrapper for it.  For
! example, the following project, when â€˜withâ€™ed by your main project, will
  link with the third-party library â€˜liba.aâ€™:
  
       project Liba is
--- 2850,2856 ----
  
  Even if you have a third-party, non-Ada library, you can still use
  GNATâ€™s Project Manager facility to provide a wrapper for it.  For
! example, the following project, when 'with'ed by your main project, will
  link with the third-party library â€˜liba.aâ€™:
  
       project Liba is
*************** File: gnat_ugn.info,  Node: Building a S
*** 2956,2967 ****
  ......................................
  
  GNATâ€™s Project facility provides a simple way of building and installing
! stand-alone libraries; see the â€˜Stand-alone Library Projectsâ€™ section in
! the â€˜GNAT Project Managerâ€™ chapter of the â€˜GPRbuild Userâ€™s Guideâ€™.  To
  be a Stand-alone Library Project, in addition to the two attributes that
  make a project a Library Project (â€˜Library_Nameâ€™ and â€˜Library_Dirâ€™; see
! the â€˜Library Projectsâ€™ section in the â€˜GNAT Project Managerâ€™ chapter of
! the â€˜GPRbuild Userâ€™s Guideâ€™), you must define the attribute
  â€˜Library_Interfaceâ€™.  For example:
  
       for Library_Dir use "lib_dir";
--- 2956,2967 ----
  ......................................
  
  GNATâ€™s Project facility provides a simple way of building and installing
! stand-alone libraries; see the 'Stand-alone Library Projects' section in
! the 'GNAT Project Manager' chapter of the â€˜GPRbuild Userâ€™s Guideâ€™.  To
  be a Stand-alone Library Project, in addition to the two attributes that
  make a project a Library Project (â€˜Library_Nameâ€™ and â€˜Library_Dirâ€™; see
! the 'Library Projects' section in the 'GNAT Project Manager' chapter of
! the 'GPRbuild Userâ€™s Guide'), you must define the attribute
  â€˜Library_Interfaceâ€™.  For example:
  
       for Library_Dir use "lib_dir";
*************** like:
*** 3286,3292 ****
  
  You would write the â€˜Configâ€™ package multiple forms for various targets,
  with an appropriate script selecting the version of â€˜Configâ€™ needed.
! Then, any other unit requiring conditional compilation can do a â€˜withâ€™
  of â€˜Configâ€™ to make the constants visible.
  
  
--- 3286,3292 ----
  
  You would write the â€˜Configâ€™ package multiple forms for various targets,
  with an appropriate script selecting the version of â€˜Configâ€™ needed.
! Then, any other unit requiring conditional compilation can do a 'with'
  of â€˜Configâ€™ to make the constants visible.
  
  
*************** File: gnat_ugn.info,  Node: Preprocessin
*** 3608,3614 ****
  3.10.2.1 Preprocessing Symbols
  ..............................
  
! Preprocessing symbols are defined in â€˜definition filesâ€™ and referenced
  in the sources to be preprocessed.  A preprocessing symbol is an
  identifier, following normal Ada (case-insensitive) rules for its
  syntax, with the restriction that all characters need to be in the ASCII
--- 3608,3614 ----
  3.10.2.1 Preprocessing Symbols
  ..............................
  
! Preprocessing symbols are defined in 'definition files' and referenced
  in the sources to be preprocessed.  A preprocessing symbol is an
  identifier, following normal Ada (case-insensitive) rules for its
  syntax, with the restriction that all characters need to be in the ASCII
*************** To call â€˜gnatprepâ€™ use:
*** 3627,3645 ****
  where
  
     * 
!      â€˜switchesâ€™
  
            is an optional sequence of switches as described in the next
            section.
  
     * 
!      â€˜infileâ€™
  
            is the full name of the input file, which is an Ada source
            file containing preprocessor directives.
  
     * 
!      â€˜outfileâ€™
  
            is the full name of the output file, which is an Ada source in
            standard Ada form.  When used with GNAT, this file name will
--- 3627,3645 ----
  where
  
     * 
!      'switches'
  
            is an optional sequence of switches as described in the next
            section.
  
     * 
!      'infile'
  
            is the full name of the input file, which is an Ada source
            file containing preprocessor directives.
  
     * 
!      'outfile'
  
            is the full name of the output file, which is an Ada source in
            standard Ada form.  When used with GNAT, this file name will
*************** As noted above, a file to be preprocesse
*** 3878,3888 ****
  which preprocessing lines have been inserted.  However, instead of using
  â€˜gnatprepâ€™ to explicitly preprocess a file as a separate step before
  compilation, you can carry out the preprocessing implicitly as part of
! compilation.  Such â€˜integrated preprocessingâ€™, which is the common style
  with C, is performed when you pass either or both of the following
  switches to the compiler:
  
!         * â€˜-gnatepâ€™, which specifies the â€˜preprocessor data fileâ€™.  This
            file dictates how the source files will be preprocessed (e.g.,
            which symbol definition files apply to which sources).
  
--- 3878,3888 ----
  which preprocessing lines have been inserted.  However, instead of using
  â€˜gnatprepâ€™ to explicitly preprocess a file as a separate step before
  compilation, you can carry out the preprocessing implicitly as part of
! compilation.  Such 'integrated preprocessing', which is the common style
  with C, is performed when you pass either or both of the following
  switches to the compiler:
  
!         * â€˜-gnatepâ€™, which specifies the 'preprocessor data file'.  This
            file dictates how the source files will be preprocessed (e.g.,
            which symbol definition files apply to which sources).
  
*************** When using project files:
*** 3901,3907 ****
  
          * you should use the builder switch â€˜-xâ€™ if any Ada source is
            compiled with â€˜gnatep=â€™ so that the compiler finds the
!           â€˜preprocessor data fileâ€™.
  
          * you should place the preprocessing data file and the symbol
            definition files in the source directories of the project.
--- 3901,3907 ----
  
          * you should use the builder switch â€˜-xâ€™ if any Ada source is
            compiled with â€˜gnatep=â€™ so that the compiler finds the
!           'preprocessor data file'.
  
          * you should place the preprocessing data file and the symbol
            definition files in the source directories of the project.
*************** that relate to integrated preprocessing.
*** 3929,3940 ****
                    end Compiler;
                 end Prj;
  
!      A preprocessor data file is a text file that contains â€˜preprocessor
!      control linesâ€™.  A preprocessor control line directs the
       preprocessing of either a particular source file, or, analogous to
       â€˜othersâ€™ in Ada, all sources not specified elsewhere in the
       preprocessor data file.  A preprocessor control line can optionally
!      identify a â€˜definition fileâ€™ that assigns values to preprocessor
       symbols, as well as a list of switches that relate to
       preprocessing.  You can also include empty lines and comments
       (using Ada syntax), with no semantic effect.
--- 3929,3940 ----
                    end Compiler;
                 end Prj;
  
!      A preprocessor data file is a text file that contains 'preprocessor
!      control lines'.  A preprocessor control line directs the
       preprocessing of either a particular source file, or, analogous to
       â€˜othersâ€™ in Ada, all sources not specified elsewhere in the
       preprocessor data file.  A preprocessor control line can optionally
!      identify a 'definition file' that assigns values to preprocessor
       symbols, as well as a list of switches that relate to
       preprocessing.  You can also include empty lines and comments
       (using Ada syntax), with no semantic effect.
*************** headers.
*** 5255,5261 ****
  In this mode, C++ classes are mapped to Ada tagged types, constructors
  are mapped using the â€˜CPP_Constructorâ€™ pragma, and when possible,
  multiple inheritance of abstract classes are mapped to Ada interfaces
! (see the â€˜Interfacing to C++â€™ section in the â€˜GNAT Reference Manualâ€™ for
  additional information on interfacing to C++).
  
  For example, given the following C++ header file:
--- 5255,5261 ----
  In this mode, C++ classes are mapped to Ada tagged types, constructors
  are mapped using the â€˜CPP_Constructorâ€™ pragma, and when possible,
  multiple inheritance of abstract classes are mapped to Ada interfaces
! (see the 'Interfacing to C++' section in the â€˜GNAT Reference Manualâ€™ for
  additional information on interfacing to C++).
  
  For example, given the following C++ header file:
*************** File: gnat_ugn.info,  Node: Comparison b
*** 5478,5484 ****
  The GNAT compilation model is close to the C and C++ models.  You can
  think of Ada specs as corresponding to header files in C. As in C, you
  donâ€™t need to compile specs; they are compiled when they are used.  The
! Ada â€˜withâ€™ is similar in effect to the â€˜#includeâ€™ of a C header.
  
  One notable difference is that, in Ada, you may compile specs separately
  to check them for semantic and syntactic accuracy.  This is not always
--- 5478,5484 ----
  The GNAT compilation model is close to the C and C++ models.  You can
  think of Ada specs as corresponding to header files in C. As in C, you
  donâ€™t need to compile specs; they are compiled when they are used.  The
! Ada 'with' is similar in effect to the â€˜#includeâ€™ of a C header.
  
  One notable difference is that, in Ada, you may compile specs separately
  to check them for semantic and syntactic accuracy.  This is not always
*************** the source file being compiled but also
*** 5520,5526 ****
  This means that the effect of a compilation depends on what has been
  previously compiled.  In particular:
  
!    * When a unit is â€˜withâ€™ed, the unit seen by the compiler corresponds
       to the version of the unit most recently compiled into the library.
  
     * Inlining is effective only if the necessary body has already been
--- 5520,5526 ----
  This means that the effect of a compilation depends on what has been
  previously compiled.  In particular:
  
!    * When a unit is 'with'ed, the unit seen by the compiler corresponds
       to the version of the unit most recently compiled into the library.
  
     * Inlining is effective only if the necessary body has already been
*************** In GNAT, compiling one unit never affect
*** 5532,5538 ****
  units because the compiler reads only source files.  Only changes to
  source files can affect the results of a compilation.  In particular:
  
!    * When a unit is â€˜withâ€™ed, the unit seen by the compiler corresponds
       to the source version of the unit that is currently accessible to
       the compiler.
  
--- 5532,5538 ----
  units because the compiler reads only source files.  Only changes to
  source files can affect the results of a compilation.  In particular:
  
!    * When a unit is 'with'ed, the unit seen by the compiler corresponds
       to the source version of the unit that is currently accessible to
       the compiler.
  
*************** dependencies, they will always be tracke
*** 5696,5703 ****
  â€˜gnatmakeâ€™.
  
  Note that for advanced forms of project structure, we recommend creating
! a project file as explained in the â€˜GNAT_Project_Managerâ€™ chapter in the
! â€˜GPRbuild Userâ€™s Guideâ€™, and using the â€˜gprbuildâ€™ tool which supports
  building with project files and works similarly to â€˜gnatmakeâ€™.
  
  * Menu:
--- 5696,5703 ----
  â€˜gnatmakeâ€™.
  
  Note that for advanced forms of project structure, we recommend creating
! a project file as explained in the 'GNAT_Project_Manager' chapter in the
! 'GPRbuild Userâ€™s Guide', and using the â€˜gprbuildâ€™ tool which supports
  building with project files and works similarly to â€˜gnatmakeâ€™.
  
  * Menu:
*************** You may specify any of the following swi
*** 5917,5923 ****
       (absolute or relative) by this switch, should already exist,
       otherwise the switch is ineffective.  The specified mapping file
       will be communicated to the compiler.  This switch is not
!      compatible with a project file (-Pâ€˜fileâ€˜) or with multiple
       compiling processes (-jnnn, when nnn is greater than 1).
  
  â€˜-dâ€™
--- 5917,5923 ----
       (absolute or relative) by this switch, should already exist,
       otherwise the switch is ineffective.  The specified mapping file
       will be communicated to the compiler.  This switch is not
!      compatible with a project file (-P'file') or with multiple
       compiling processes (-jnnn, when nnn is greater than 1).
  
  â€˜-dâ€™
*************** Source and library search path switches
*** 6241,6251 ****
       a valid run-time is found (â€˜adaincludeâ€™ or â€˜ada_source_pathâ€™, and
       â€˜adalibâ€™ or â€˜ada_object_pathâ€™ present):
  
!         * â€˜<current directory>/$rts_pathâ€™
  
!         * â€˜<default-search-dir>/$rts_pathâ€™
  
!         * â€˜<default-search-dir>/rts-$rts_pathâ€™
  
          * The selected path is handled like a normal RTS path.
  
--- 6241,6251 ----
       a valid run-time is found (â€˜adaincludeâ€™ or â€˜ada_source_pathâ€™, and
       â€˜adalibâ€™ or â€˜ada_object_pathâ€™ present):
  
!         * '<current directory>/$rts_path'
  
!         * '<default-search-dir>/$rts_path'
  
!         * '<default-search-dir>/rts-$rts_path'
  
          * The selected path is handled like a normal RTS path.
  
*************** the â€˜gnatmakeâ€™ command.
*** 6317,6324 ****
  
     * â€˜gnatmakeâ€™ has been designed to make the use of Ada libraries
       particularly convenient.  Assume you have an Ada library organized
!      as follows: â€˜obj-dirâ€™ contains the objects and ALI files for of
!      your Ada compilation units, whereas â€˜include-dirâ€™ contains the
       specs of these units, but no bodies.  Then to compile a unit stored
       in â€˜main.adbâ€™, which uses this Ada library you would just type:
  
--- 6317,6324 ----
  
     * â€˜gnatmakeâ€™ has been designed to make the use of Ada libraries
       particularly convenient.  Assume you have an Ada library organized
!      as follows: 'obj-dir' contains the objects and ALI files for of
!      your Ada compilation units, whereas 'include-dir' contains the
       specs of these units, but no bodies.  Then to compile a unit stored
       in â€˜main.adbâ€™, which uses this Ada library you would just type:
  
*************** useful to have some basic understanding
*** 6349,6355 ****
  in particular to understand how it uses the results of previous
  compilations without incorrectly depending on them.
  
! First a definition: an object file is considered â€˜up to dateâ€™ if the
  corresponding ALI file exists and if all the source files listed in the
  dependency section of this ALI file have time stamps matching those in
  the ALI file.  This means that neither the source file itself nor any
--- 6349,6355 ----
  in particular to understand how it uses the results of previous
  compilations without incorrectly depending on them.
  
! First a definition: an object file is considered 'up to date' if the
  corresponding ALI file exists and if all the source files listed in the
  dependency section of this ALI file have time stamps matching those in
  the ALI file.  This means that neither the source file itself nor any
*************** files:
*** 6449,6455 ****
     * the body file (â€˜.adbâ€™) for a library level package or generic
       package that has a body
  
! You need â€˜notâ€™ compile the following files
  
     * the spec of a library unit which has a body
  
--- 6449,6455 ----
     * the body file (â€˜.adbâ€™) for a library level package or generic
       package that has a body
  
! You need 'not' compile the following files
  
     * the spec of a library unit which has a body
  
*************** model are as follows:
*** 6617,6623 ****
       into the object file directly.
  
     * When you compile a unit, the source files for the specs of all
!      units that it â€˜withâ€™s, all its subunits, and the bodies of any
       generics it instantiates must be available (reachable by the
       search-paths mechanism described above), or you will receive a
       fatal error message.
--- 6617,6623 ----
       into the object file directly.
  
     * When you compile a unit, the source files for the specs of all
!      units that it 'with's, all its subunits, and the bodies of any
       generics it instantiates must be available (reachable by the
       search-paths mechanism described above), or you will receive a
       fatal error message.
*************** File: gnat_ugn.info,  Node: Alphabetical
*** 7403,7415 ****
       Digit     Interpretation
                 
                 
!      â€˜1â€™       All intermediate overflows checked against base type (â€˜STRICTâ€™)
                 
                 
!      â€˜2â€™       Minimize intermediate overflows (â€˜MINIMIZEDâ€™)
                 
                 
!      â€˜3â€™       Eliminate intermediate overflows (â€˜ELIMINATEDâ€™)
                 
  
       If only one digit appears, then it applies to all cases; if two
--- 7403,7415 ----
       Digit     Interpretation
                 
                 
!      '1'       All intermediate overflows checked against base type (â€˜STRICTâ€™)
                 
                 
!      '2'       Minimize intermediate overflows (â€˜MINIMIZEDâ€™)
                 
                 
!      '3'       Eliminate intermediate overflows (â€˜ELIMINATEDâ€™)
                 
  
       If only one digit appears, then it applies to all cases; if two
*************** File: gnat_ugn.info,  Node: Alphabetical
*** 7559,7589 ****
  
       â€˜nâ€™ controls the optimization level:
  
!      â€˜nâ€™         Effect
                   
                   
!      â€˜0â€™         No optimization, the default setting if no â€˜-Oâ€™ appears.
                   
                   
!      â€˜1â€™         Moderate optimization, same as â€˜-Oâ€™ without an operand.  A good
                   compromise between code quality and compilation time.
                   
                   
!      â€˜2â€™         Extensive optimization, should improve execution time, possibly at
                   the cost of substantially increased compilation time.
                   
                   
!      â€˜3â€™         Full optimization, may further improve execution time, possibly at
                   the cost of substantially larger generated code.
                   
                   
!      â€˜sâ€™         Optimize for size (code and data) rather than speed.
                   
                   
!      â€˜zâ€™         Optimize aggressively for size (code and data) rather than speed.
                   
                   
!      â€˜gâ€™         Optimize for debugging experience rather than speed.
                   
  
       See also *note Optimization Levels: f0.
--- 7559,7589 ----
  
       â€˜nâ€™ controls the optimization level:
  
!      'n'         Effect
                   
                   
!      '0'         No optimization, the default setting if no â€˜-Oâ€™ appears.
                   
                   
!      '1'         Moderate optimization, same as â€˜-Oâ€™ without an operand.  A good
                   compromise between code quality and compilation time.
                   
                   
!      '2'         Extensive optimization, should improve execution time, possibly at
                   the cost of substantially increased compilation time.
                   
                   
!      '3'         Full optimization, may further improve execution time, possibly at
                   the cost of substantially larger generated code.
                   
                   
!      's'         Optimize for size (code and data) rather than speed.
                   
                   
!      'z'         Optimize aggressively for size (code and data) rather than speed.
                   
                   
!      'g'         Optimize for debugging experience rather than speed.
                   
  
       See also *note Optimization Levels: f0.
*************** warnings that are generated.
*** 7967,7973 ****
  
     * Violations of style rules if style checking is enabled
  
!    * Unused â€˜withâ€™ clauses
  
     * â€˜Bit_Orderâ€™ usage that does not have any effect
  
--- 7967,7973 ----
  
     * Violations of style rules if style checking is enabled
  
!    * Unused 'with' clauses
  
     * â€˜Bit_Orderâ€™ usage that does not have any effect
  
*************** warnings that are generated.
*** 7977,7983 ****
  
     * Declaration that is likely to cause storage error
  
!    * Internal GNAT unit â€˜withâ€™ed by application unit
  
     * Values known to be out of range at compile time
  
--- 7977,7983 ----
  
     * Declaration that is likely to cause storage error
  
!    * Internal GNAT unit 'with'ed by application unit
  
     * Values known to be out of range at compile time
  
*************** using the GNAT pragma Warnings (see the
*** 8014,8020 ****
  
  â€˜-gnatwaâ€™
  
!      â€˜Activate most optional warnings.â€™
  
       This switch activates most optional warning messages.  See the
       remaining list in this section for details on optional warning
--- 8014,8020 ----
  
  â€˜-gnatwaâ€™
  
!      'Activate most optional warnings.'
  
       This switch activates most optional warning messages.  See the
       remaining list in this section for details on optional warning
*************** using the GNAT pragma Warnings (see the
*** 8065,8071 ****
  
  â€˜-gnatwAâ€™
  
!      â€˜Suppress all optional errors.â€™
  
       This switch suppresses all optional warning messages, see remaining
       list in this section for details on optional warning messages that
--- 8065,8071 ----
  
  â€˜-gnatwAâ€™
  
!      'Suppress all optional errors.'
  
       This switch suppresses all optional warning messages, see remaining
       list in this section for details on optional warning messages that
*************** using the GNAT pragma Warnings (see the
*** 8081,8087 ****
  
  â€˜-gnatw.aâ€™
  
!      â€˜Activate warnings on failing assertions.â€™
  
       This switch activates warnings for assertions where the compiler
       can tell at compile time that the assertion will fail.  Note that
--- 8081,8087 ----
  
  â€˜-gnatw.aâ€™
  
!      'Activate warnings on failing assertions.'
  
       This switch activates warnings for assertions where the compiler
       can tell at compile time that the assertion will fail.  Note that
*************** using the GNAT pragma Warnings (see the
*** 8090,8103 ****
  
  â€˜-gnatw.Aâ€™
  
!      â€˜Suppress warnings on failing assertions.â€™
  
       This switch suppresses warnings for assertions where the compiler
       can tell at compile time that the assertion will fail.
  
  â€˜-gnatw_aâ€™
  
!      â€˜Activate warnings on anonymous allocators.â€™
  
       This switch activates warnings for allocators of anonymous access
       types, which can involve run-time accessibility checks and lead to
--- 8090,8103 ----
  
  â€˜-gnatw.Aâ€™
  
!      'Suppress warnings on failing assertions.'
  
       This switch suppresses warnings for assertions where the compiler
       can tell at compile time that the assertion will fail.
  
  â€˜-gnatw_aâ€™
  
!      'Activate warnings on anonymous allocators.'
  
       This switch activates warnings for allocators of anonymous access
       types, which can involve run-time accessibility checks and lead to
*************** using the GNAT pragma Warnings (see the
*** 8106,8119 ****
  
  â€˜-gnatw_Aâ€™
  
!      â€˜Suppress warnings on anonymous allocators.â€™
  
       This switch suppresses warnings for anonymous access type
       allocators.
  
  â€˜-gnatwbâ€™
  
!      â€˜Activate warnings on bad fixed values.â€™
  
       This switch activates warnings for static fixed-point expressions
       whose value is not an exact multiple of Small.  Such values are
--- 8106,8119 ----
  
  â€˜-gnatw_Aâ€™
  
!      'Suppress warnings on anonymous allocators.'
  
       This switch suppresses warnings for anonymous access type
       allocators.
  
  â€˜-gnatwbâ€™
  
!      'Activate warnings on bad fixed values.'
  
       This switch activates warnings for static fixed-point expressions
       whose value is not an exact multiple of Small.  Such values are
*************** using the GNAT pragma Warnings (see the
*** 8126,8139 ****
  
  â€˜-gnatwBâ€™
  
!      â€˜Suppress warnings on bad fixed values.â€™
  
       This switch suppresses warnings for static fixed-point expressions
       whose value is not an exact multiple of Small.
  
  â€˜-gnatw.bâ€™
  
!      â€˜Activate warnings on biased representation.â€™
  
       This switch activates warnings when a size clause, value size
       clause, component clause, or component size clause forces the use
--- 8126,8139 ----
  
  â€˜-gnatwBâ€™
  
!      'Suppress warnings on bad fixed values.'
  
       This switch suppresses warnings for static fixed-point expressions
       whose value is not an exact multiple of Small.
  
  â€˜-gnatw.bâ€™
  
!      'Activate warnings on biased representation.'
  
       This switch activates warnings when a size clause, value size
       clause, component clause, or component size clause forces the use
*************** using the GNAT pragma Warnings (see the
*** 8143,8156 ****
  
  â€˜-gnatw.Bâ€™
  
!      â€˜Suppress warnings on biased representation.â€™
  
       This switch suppresses warnings for representation clauses that
       force the use of biased representation.
  
  â€˜-gnatwcâ€™
  
!      â€˜Activate warnings on conditionals.â€™
  
       This switch activates warnings for boolean expressions that are
       known to be True or False at compile time.  The default is that
--- 8143,8156 ----
  
  â€˜-gnatw.Bâ€™
  
!      'Suppress warnings on biased representation.'
  
       This switch suppresses warnings for representation clauses that
       force the use of biased representation.
  
  â€˜-gnatwcâ€™
  
!      'Activate warnings on conditionals.'
  
       This switch activates warnings for boolean expressions that are
       known to be True or False at compile time.  The default is that
*************** using the GNAT pragma Warnings (see the
*** 8177,8190 ****
  
  â€˜-gnatwCâ€™
  
!      â€˜Suppress warnings on conditionals.â€™
  
       This switch suppresses warnings for conditional expressions used in
       tests that are known to be True or False at compile time.
  
  â€˜-gnatw.câ€™
  
!      â€˜Activate warnings on missing component clauses.â€™
  
       This switch activates warnings for record components where a record
       representation clause is present and has component clauses for the
--- 8177,8190 ----
  
  â€˜-gnatwCâ€™
  
!      'Suppress warnings on conditionals.'
  
       This switch suppresses warnings for conditional expressions used in
       tests that are known to be True or False at compile time.
  
  â€˜-gnatw.câ€™
  
!      'Activate warnings on missing component clauses.'
  
       This switch activates warnings for record components where a record
       representation clause is present and has component clauses for the
*************** using the GNAT pragma Warnings (see the
*** 8193,8206 ****
  
  â€˜-gnatw.Câ€™
  
!      â€˜Suppress warnings on missing component clauses.â€™
  
       This switch suppresses warnings for record components that are
       missing a component clause in the situation described above.
  
  â€˜-gnatw_câ€™
  
!      â€˜Activate warnings on unknown condition in Compile_Time_Warning.â€™
  
       This switch activates warnings on a pragma Compile_Time_Warning or
       Compile_Time_Error whose condition has a value that is not known at
--- 8193,8206 ----
  
  â€˜-gnatw.Câ€™
  
!      'Suppress warnings on missing component clauses.'
  
       This switch suppresses warnings for record components that are
       missing a component clause in the situation described above.
  
  â€˜-gnatw_câ€™
  
!      'Activate warnings on unknown condition in Compile_Time_Warning.'
  
       This switch activates warnings on a pragma Compile_Time_Warning or
       Compile_Time_Error whose condition has a value that is not known at
*************** using the GNAT pragma Warnings (see the
*** 8208,8214 ****
  
  â€˜-gnatw_Câ€™
  
!      â€˜Suppress warnings on unknown condition in Compile_Time_Warning.â€™
  
       This switch suppresses warnings on a pragma Compile_Time_Warning or
       Compile_Time_Error whose condition has a value that is not known at
--- 8208,8214 ----
  
  â€˜-gnatw_Câ€™
  
!      'Suppress warnings on unknown condition in Compile_Time_Warning.'
  
       This switch suppresses warnings on a pragma Compile_Time_Warning or
       Compile_Time_Error whose condition has a value that is not known at
*************** using the GNAT pragma Warnings (see the
*** 8216,8222 ****
  
  â€˜-gnatwdâ€™
  
!      â€˜Activate warnings on implicit dereferencing.â€™
  
       If this switch is set, then the use of a prefix of an access type
       in an indexed component, slice, or selected component without an
--- 8216,8222 ----
  
  â€˜-gnatwdâ€™
  
!      'Activate warnings on implicit dereferencing.'
  
       If this switch is set, then the use of a prefix of an access type
       in an indexed component, slice, or selected component without an
*************** using the GNAT pragma Warnings (see the
*** 8228,8272 ****
  
  â€˜-gnatwDâ€™
  
!      â€˜Suppress warnings on implicit dereferencing.â€™
  
       This switch suppresses warnings for implicit dereferences in
       indexed components, slices, and selected components.
  
  â€˜-gnatw.dâ€™
  
!      â€˜Activate tagging of warning and info messages.â€™
  
       If this switch is set, then warning messages are tagged, with one
       of the following strings:
  
!              - â€˜[-gnatw?]â€™ Used to tag warnings controlled by the switch
!                â€˜-gnatwxâ€™ where x is a letter a-z.
  
!              - â€˜[-gnatw.?]â€™ Used to tag warnings controlled by the
                 switch â€˜-gnatw.xâ€™ where x is a letter a-z.
  
!              - â€˜[-gnatel]â€™ Used to tag elaboration information (info)
                 messages generated when the static model of elaboration
                 is used and the â€˜-gnatelâ€™ switch is set.
  
!              - â€˜[restriction warning]â€™ Used to tag warning messages for
                 restriction violations, activated by use of the pragma
                 â€˜Restriction_Warningsâ€™.
  
!              - â€˜[warning-as-error]â€™ Used to tag warning messages that
                 have been converted to error messages by use of the
                 pragma Warning_As_Error.  Note that such warnings are
                 prefixed by the string â€œerror: â€œ rather than â€œwarning: â€œ.
  
!              - â€˜[enabled by default]â€™ Used to tag all other warnings
                 that are always given by default, unless warnings are
!                completely suppressed using pragma â€˜Warnings(Off)â€™ or the
                 switch â€˜-gnatwsâ€™.
  
  â€˜-gnatw.Dâ€™
  
!      â€˜Deactivate tagging of warning and info messages messages.â€™
  
       If this switch is set, then warning messages return to the default
       mode in which warnings and info messages are not tagged as
--- 8228,8272 ----
  
  â€˜-gnatwDâ€™
  
!      'Suppress warnings on implicit dereferencing.'
  
       This switch suppresses warnings for implicit dereferences in
       indexed components, slices, and selected components.
  
  â€˜-gnatw.dâ€™
  
!      'Activate tagging of warning and info messages.'
  
       If this switch is set, then warning messages are tagged, with one
       of the following strings:
  
!              - '[-gnatw?]'  Used to tag warnings controlled by the
!                switch â€˜-gnatwxâ€™ where x is a letter a-z.
  
!              - '[-gnatw.?]'  Used to tag warnings controlled by the
                 switch â€˜-gnatw.xâ€™ where x is a letter a-z.
  
!              - '[-gnatel]' Used to tag elaboration information (info)
                 messages generated when the static model of elaboration
                 is used and the â€˜-gnatelâ€™ switch is set.
  
!              - '[restriction warning]' Used to tag warning messages for
                 restriction violations, activated by use of the pragma
                 â€˜Restriction_Warningsâ€™.
  
!              - '[warning-as-error]' Used to tag warning messages that
                 have been converted to error messages by use of the
                 pragma Warning_As_Error.  Note that such warnings are
                 prefixed by the string â€œerror: â€œ rather than â€œwarning: â€œ.
  
!              - '[enabled by default]' Used to tag all other warnings
                 that are always given by default, unless warnings are
!                completely suppressed using pragma 'Warnings(Off)' or the
                 switch â€˜-gnatwsâ€™.
  
  â€˜-gnatw.Dâ€™
  
!      'Deactivate tagging of warning and info messages messages.'
  
       If this switch is set, then warning messages return to the default
       mode in which warnings and info messages are not tagged as
*************** using the GNAT pragma Warnings (see the
*** 8274,8280 ****
  
  â€˜-gnatweâ€™
  
!      â€˜Treat warnings and style checks as errors.â€™
  
       This switch causes warning messages and style check messages to be
       treated as errors.  The warning string still appears, but the
--- 8274,8280 ----
  
  â€˜-gnatweâ€™
  
!      'Treat warnings and style checks as errors.'
  
       This switch causes warning messages and style check messages to be
       treated as errors.  The warning string still appears, but the
*************** using the GNAT pragma Warnings (see the
*** 8286,8292 ****
  
  â€˜-gnatw.eâ€™
  
!      â€˜Activate every optional warning.â€™
  
       This switch activates all optional warnings, including those which
       are not activated by â€˜-gnatwaâ€™.  The use of this switch is not
--- 8286,8292 ----
  
  â€˜-gnatw.eâ€™
  
!      'Activate every optional warning.'
  
       This switch activates all optional warnings, including those which
       are not activated by â€˜-gnatwaâ€™.  The use of this switch is not
*************** using the GNAT pragma Warnings (see the
*** 8299,8312 ****
  
  â€˜-gnatwEâ€™
  
!      â€˜Treat all run-time exception warnings as errors.â€™
  
       This switch causes warning messages regarding errors that will be
       raised during run-time execution to be treated as errors.
  
  â€˜-gnatwfâ€™
  
!      â€˜Activate warnings on unreferenced formals.â€™
  
       This switch causes a warning to be generated if a formal parameter
       is not referenced in the body of the subprogram.  This warning can
--- 8299,8312 ----
  
  â€˜-gnatwEâ€™
  
!      'Treat all run-time exception warnings as errors.'
  
       This switch causes warning messages regarding errors that will be
       raised during run-time execution to be treated as errors.
  
  â€˜-gnatwfâ€™
  
!      'Activate warnings on unreferenced formals.'
  
       This switch causes a warning to be generated if a formal parameter
       is not referenced in the body of the subprogram.  This warning can
*************** using the GNAT pragma Warnings (see the
*** 8315,8321 ****
  
  â€˜-gnatwFâ€™
  
!      â€˜Suppress warnings on unreferenced formals.â€™
  
       This switch suppresses warnings for unreferenced formal parameters.
       Note that the combination â€˜-gnatwuâ€™ followed by â€˜-gnatwFâ€™ has the
--- 8315,8321 ----
  
  â€˜-gnatwFâ€™
  
!      'Suppress warnings on unreferenced formals.'
  
       This switch suppresses warnings for unreferenced formal parameters.
       Note that the combination â€˜-gnatwuâ€™ followed by â€˜-gnatwFâ€™ has the
*************** using the GNAT pragma Warnings (see the
*** 8324,8330 ****
  
  â€˜-gnatwgâ€™
  
!      â€˜Activate warnings on unrecognized pragmas.â€™
  
       This switch causes a warning to be generated if an unrecognized
       pragma is encountered.  Apart from issuing this warning, the pragma
--- 8324,8330 ----
  
  â€˜-gnatwgâ€™
  
!      'Activate warnings on unrecognized pragmas.'
  
       This switch causes a warning to be generated if an unrecognized
       pragma is encountered.  Apart from issuing this warning, the pragma
*************** using the GNAT pragma Warnings (see the
*** 8334,8346 ****
  
  â€˜-gnatwGâ€™
  
!      â€˜Suppress warnings on unrecognized pragmas.â€™
  
       This switch suppresses warnings for unrecognized pragmas.
  
  â€˜-gnatw.gâ€™
  
!      â€˜Warnings used for GNAT sources.â€™
  
       This switch sets the warning categories that are used by the
       standard GNAT style.  Currently this is equivalent to
--- 8334,8346 ----
  
  â€˜-gnatwGâ€™
  
!      'Suppress warnings on unrecognized pragmas.'
  
       This switch suppresses warnings for unrecognized pragmas.
  
  â€˜-gnatw.gâ€™
  
!      'Warnings used for GNAT sources.'
  
       This switch sets the warning categories that are used by the
       standard GNAT style.  Currently this is equivalent to
*************** using the GNAT pragma Warnings (see the
*** 8349,8355 ****
  
  â€˜-gnatwhâ€™
  
!      â€˜Activate warnings on hiding.â€™
  
       This switch activates warnings on hiding declarations that are
       considered potentially confusing.  Not all cases of hiding cause
--- 8349,8355 ----
  
  â€˜-gnatwhâ€™
  
!      'Activate warnings on hiding.'
  
       This switch activates warnings on hiding declarations that are
       considered potentially confusing.  Not all cases of hiding cause
*************** using the GNAT pragma Warnings (see the
*** 8359,8371 ****
  
  â€˜-gnatwHâ€™
  
!      â€˜Suppress warnings on hiding.â€™
  
       This switch suppresses warnings on hiding declarations.
  
  â€˜-gnatw.hâ€™
  
!      â€˜Activate warnings on holes/gaps in records.â€™
  
       This switch activates warnings on component clauses in record
       representation clauses that leave holes (gaps) in the record
--- 8359,8371 ----
  
  â€˜-gnatwHâ€™
  
!      'Suppress warnings on hiding.'
  
       This switch suppresses warnings on hiding declarations.
  
  â€˜-gnatw.hâ€™
  
!      'Activate warnings on holes/gaps in records.'
  
       This switch activates warnings on component clauses in record
       representation clauses that leave holes (gaps) in the record
*************** using the GNAT pragma Warnings (see the
*** 8379,8385 ****
  
  â€˜-gnatw.Hâ€™
  
!      â€˜Suppress warnings on holes/gaps in records.â€™
  
       This switch suppresses warnings on component clauses in record
       representation clauses that leave holes (haps) in the record
--- 8379,8385 ----
  
  â€˜-gnatw.Hâ€™
  
!      'Suppress warnings on holes/gaps in records.'
  
       This switch suppresses warnings on component clauses in record
       representation clauses that leave holes (haps) in the record
*************** using the GNAT pragma Warnings (see the
*** 8387,8412 ****
  
  â€˜-gnatwiâ€™
  
!      â€˜Activate warnings on implementation units.â€™
  
!      This switch activates warnings for a â€˜withâ€™ of an internal GNAT
       implementation unit, defined as any unit from the â€˜Adaâ€™,
       â€˜Interfacesâ€™, â€˜GNATâ€™, or â€˜Systemâ€™ hierarchies that is not
       documented in either the Ada Reference Manual or the GNAT
       Programmerâ€™s Reference Manual.  Such units are intended only for
!      internal implementation purposes and should not be â€˜withâ€™ed by user
       programs.  The default is that such warnings are generated
  
  â€˜-gnatwIâ€™
  
!      â€˜Disable warnings on implementation units.â€™
  
!      This switch disables warnings for a â€˜withâ€™ of an internal GNAT
       implementation unit.
  
  â€˜-gnatw.iâ€™
  
!      â€˜Activate warnings on overlapping actuals.â€™
  
       This switch enables a warning on statically detectable overlapping
       actuals in a subprogram call, when one of the actuals is an in-out
--- 8387,8412 ----
  
  â€˜-gnatwiâ€™
  
!      'Activate warnings on implementation units.'
  
!      This switch activates warnings for a 'with' of an internal GNAT
       implementation unit, defined as any unit from the â€˜Adaâ€™,
       â€˜Interfacesâ€™, â€˜GNATâ€™, or â€˜Systemâ€™ hierarchies that is not
       documented in either the Ada Reference Manual or the GNAT
       Programmerâ€™s Reference Manual.  Such units are intended only for
!      internal implementation purposes and should not be 'with'ed by user
       programs.  The default is that such warnings are generated
  
  â€˜-gnatwIâ€™
  
!      'Disable warnings on implementation units.'
  
!      This switch disables warnings for a 'with' of an internal GNAT
       implementation unit.
  
  â€˜-gnatw.iâ€™
  
!      'Activate warnings on overlapping actuals.'
  
       This switch enables a warning on statically detectable overlapping
       actuals in a subprogram call, when one of the actuals is an in-out
*************** using the GNAT pragma Warnings (see the
*** 8415,8427 ****
  
  â€˜-gnatw.Iâ€™
  
!      â€˜Disable warnings on overlapping actuals.â€™
  
       This switch disables warnings on overlapping actuals in a call.
  
  â€˜-gnatwjâ€™
  
!      â€˜Activate warnings on obsolescent features (Annex J).â€™
  
       If this warning option is activated, then warnings are generated
       for calls to subprograms marked with â€˜pragma Obsolescentâ€™ and for
--- 8415,8427 ----
  
  â€˜-gnatw.Iâ€™
  
!      'Disable warnings on overlapping actuals.'
  
       This switch disables warnings on overlapping actuals in a call.
  
  â€˜-gnatwjâ€™
  
!      'Activate warnings on obsolescent features (Annex J).'
  
       If this warning option is activated, then warnings are generated
       for calls to subprograms marked with â€˜pragma Obsolescentâ€™ and for
*************** using the GNAT pragma Warnings (see the
*** 8446,8472 ****
  
  â€˜-gnatwJâ€™
  
!      â€˜Suppress warnings on obsolescent features (Annex J).â€™
  
       This switch disables warnings on use of obsolescent features.
  
  â€˜-gnatw.jâ€™
  
!      â€˜Activate warnings on late declarations of tagged type primitives.â€™
  
       This switch activates warnings on visible primitives added to a
       tagged type after deriving a private extension from it.
  
  â€˜-gnatw.Jâ€™
  
!      â€˜Suppress warnings on late declarations of tagged type primitives.â€™
  
       This switch suppresses warnings on visible primitives added to a
       tagged type after deriving a private extension from it.
  
  â€˜-gnatwkâ€™
  
!      â€˜Activate warnings on variables that could be constants.â€™
  
       This switch activates warnings for variables that are initialized
       but never modified, and then could be declared constants.  The
--- 8446,8472 ----
  
  â€˜-gnatwJâ€™
  
!      'Suppress warnings on obsolescent features (Annex J).'
  
       This switch disables warnings on use of obsolescent features.
  
  â€˜-gnatw.jâ€™
  
!      'Activate warnings on late declarations of tagged type primitives.'
  
       This switch activates warnings on visible primitives added to a
       tagged type after deriving a private extension from it.
  
  â€˜-gnatw.Jâ€™
  
!      'Suppress warnings on late declarations of tagged type primitives.'
  
       This switch suppresses warnings on visible primitives added to a
       tagged type after deriving a private extension from it.
  
  â€˜-gnatwkâ€™
  
!      'Activate warnings on variables that could be constants.'
  
       This switch activates warnings for variables that are initialized
       but never modified, and then could be declared constants.  The
*************** using the GNAT pragma Warnings (see the
*** 8474,8487 ****
  
  â€˜-gnatwKâ€™
  
!      â€˜Suppress warnings on variables that could be constants.â€™
  
       This switch disables warnings on variables that could be declared
       constants.
  
  â€˜-gnatw.kâ€™
  
!      â€˜Activate warnings on redefinition of names in standard.â€™
  
       This switch activates warnings for declarations that declare a name
       that is defined in package Standard.  Such declarations can be
--- 8474,8487 ----
  
  â€˜-gnatwKâ€™
  
!      'Suppress warnings on variables that could be constants.'
  
       This switch disables warnings on variables that could be declared
       constants.
  
  â€˜-gnatw.kâ€™
  
!      'Activate warnings on redefinition of names in standard.'
  
       This switch activates warnings for declarations that declare a name
       that is defined in package Standard.  Such declarations can be
*************** using the GNAT pragma Warnings (see the
*** 8492,8505 ****
  
  â€˜-gnatw.Kâ€™
  
!      â€˜Suppress warnings on redefinition of names in standard.â€™
  
       This switch disables warnings for declarations that declare a name
       that is defined in package Standard.
  
  â€˜-gnatwlâ€™
  
!      â€˜Activate warnings for elaboration pragmas.â€™
  
       This switch activates warnings for possible elaboration problems,
       including suspicious use of â€˜Elaborateâ€™ pragmas, when using the
--- 8492,8505 ----
  
  â€˜-gnatw.Kâ€™
  
!      'Suppress warnings on redefinition of names in standard.'
  
       This switch disables warnings for declarations that declare a name
       that is defined in package Standard.
  
  â€˜-gnatwlâ€™
  
!      'Activate warnings for elaboration pragmas.'
  
       This switch activates warnings for possible elaboration problems,
       including suspicious use of â€˜Elaborateâ€™ pragmas, when using the
*************** using the GNAT pragma Warnings (see the
*** 8510,8522 ****
  
  â€˜-gnatwLâ€™
  
!      â€˜Suppress warnings for elaboration pragmas.â€™
  
       This switch suppresses warnings for possible elaboration problems.
  
  â€˜-gnatw.lâ€™
  
!      â€˜List inherited aspects as info messages.â€™
  
       This switch causes the compiler to list inherited invariants,
       preconditions, and postconditions from Type_Invariantâ€™Class,
--- 8510,8522 ----
  
  â€˜-gnatwLâ€™
  
!      'Suppress warnings for elaboration pragmas.'
  
       This switch suppresses warnings for possible elaboration problems.
  
  â€˜-gnatw.lâ€™
  
!      'List inherited aspects as info messages.'
  
       This switch causes the compiler to list inherited invariants,
       preconditions, and postconditions from Type_Invariantâ€™Class,
*************** using the GNAT pragma Warnings (see the
*** 8525,8537 ****
  
  â€˜-gnatw.Lâ€™
  
!      â€˜Suppress listing of inherited aspects as info messages.â€™
  
       This switch suppresses listing of inherited aspects.
  
  â€˜-gnatw_lâ€™
  
!      â€˜Activate warnings on implicitly limited types.â€™
  
       This switch causes the compiler trigger warnings on record types
       that do not have a limited keyword but contain a component that is
--- 8525,8537 ----
  
  â€˜-gnatw.Lâ€™
  
!      'Suppress listing of inherited aspects as info messages.'
  
       This switch suppresses listing of inherited aspects.
  
  â€˜-gnatw_lâ€™
  
!      'Activate warnings on implicitly limited types.'
  
       This switch causes the compiler trigger warnings on record types
       that do not have a limited keyword but contain a component that is
*************** using the GNAT pragma Warnings (see the
*** 8539,8551 ****
  
  â€˜-gnatw_Lâ€™
  
!      â€˜Suppress warnings on implicitly limited types.â€™
  
       This switch suppresses warnings on implicitly limited types.
  
  â€˜-gnatwmâ€™
  
!      â€˜Activate warnings on modified but unreferenced variables.â€™
  
       This switch activates warnings for variables that are assigned
       (using an initialization value or with one or more assignment
--- 8539,8551 ----
  
  â€˜-gnatw_Lâ€™
  
!      'Suppress warnings on implicitly limited types.'
  
       This switch suppresses warnings on implicitly limited types.
  
  â€˜-gnatwmâ€™
  
!      'Activate warnings on modified but unreferenced variables.'
  
       This switch activates warnings for variables that are assigned
       (using an initialization value or with one or more assignment
*************** using the GNAT pragma Warnings (see the
*** 8556,8569 ****
  
  â€˜-gnatwMâ€™
  
!      â€˜Disable warnings on modified but unreferenced variables.â€™
  
       This switch disables warnings for variables that are assigned or
       initialized, but never read.
  
  â€˜-gnatw.mâ€™
  
!      â€˜Activate warnings on suspicious modulus values.â€™
  
       This switch activates warnings for modulus values that seem
       suspicious.  The cases caught are where the size is the same as the
--- 8556,8569 ----
  
  â€˜-gnatwMâ€™
  
!      'Disable warnings on modified but unreferenced variables.'
  
       This switch disables warnings for variables that are assigned or
       initialized, but never read.
  
  â€˜-gnatw.mâ€™
  
!      'Activate warnings on suspicious modulus values.'
  
       This switch activates warnings for modulus values that seem
       suspicious.  The cases caught are where the size is the same as the
*************** using the GNAT pragma Warnings (see the
*** 8578,8590 ****
  
  â€˜-gnatw.Mâ€™
  
!      â€˜Disable warnings on suspicious modulus values.â€™
  
       This switch disables warnings for suspicious modulus values.
  
  â€˜-gnatwnâ€™
  
!      â€˜Set normal warnings mode.â€™
  
       This switch sets normal warning mode, in which enabled warnings are
       issued and treated as warnings rather than errors.  This is the
--- 8578,8590 ----
  
  â€˜-gnatw.Mâ€™
  
!      'Disable warnings on suspicious modulus values.'
  
       This switch disables warnings for suspicious modulus values.
  
  â€˜-gnatwnâ€™
  
!      'Set normal warnings mode.'
  
       This switch sets normal warning mode, in which enabled warnings are
       issued and treated as warnings rather than errors.  This is the
*************** using the GNAT pragma Warnings (see the
*** 8595,8601 ****
  
  â€˜-gnatw.nâ€™
  
!      â€˜Activate warnings on atomic synchronization.â€™
  
       This switch activates warnings when an access to an atomic variable
       requires the generation of atomic synchronization code.  These
--- 8595,8601 ----
  
  â€˜-gnatw.nâ€™
  
!      'Activate warnings on atomic synchronization.'
  
       This switch activates warnings when an access to an atomic variable
       requires the generation of atomic synchronization code.  These
*************** using the GNAT pragma Warnings (see the
*** 8603,8616 ****
  
  â€˜-gnatw.Nâ€™
  
!      â€˜Suppress warnings on atomic synchronization.â€™
  
       This switch suppresses warnings when an access to an atomic
       variable requires the generation of atomic synchronization code.
  
  â€˜-gnatwoâ€™
  
!      â€˜Activate warnings on address clause overlays.â€™
  
       This switch activates warnings for possibly unintended
       initialization effects of defining address clauses that cause one
--- 8603,8616 ----
  
  â€˜-gnatw.Nâ€™
  
!      'Suppress warnings on atomic synchronization.'
  
       This switch suppresses warnings when an access to an atomic
       variable requires the generation of atomic synchronization code.
  
  â€˜-gnatwoâ€™
  
!      'Activate warnings on address clause overlays.'
  
       This switch activates warnings for possibly unintended
       initialization effects of defining address clauses that cause one
*************** using the GNAT pragma Warnings (see the
*** 8619,8625 ****
  
  â€˜-gnatwOâ€™
  
!      â€˜Suppress warnings on address clause overlays.â€™
  
       This switch suppresses warnings on possibly unintended
       initialization effects of defining address clauses that cause one
--- 8619,8625 ----
  
  â€˜-gnatwOâ€™
  
!      'Suppress warnings on address clause overlays.'
  
       This switch suppresses warnings on possibly unintended
       initialization effects of defining address clauses that cause one
*************** using the GNAT pragma Warnings (see the
*** 8627,8633 ****
  
  â€˜-gnatw.oâ€™
  
!      â€˜Activate warnings on modified but unreferenced out parameters.â€™
  
       This switch activates warnings for variables that are modified by
       using them as actuals for a call to a procedure with an out mode
--- 8627,8633 ----
  
  â€˜-gnatw.oâ€™
  
!      'Activate warnings on modified but unreferenced out parameters.'
  
       This switch activates warnings for variables that are modified by
       using them as actuals for a call to a procedure with an out mode
*************** using the GNAT pragma Warnings (see the
*** 8641,8647 ****
  
  â€˜-gnatw.Oâ€™
  
!      â€˜Disable warnings on modified but unreferenced out parameters.â€™
  
       This switch suppresses warnings for variables that are modified by
       using them as actuals for a call to a procedure with an out mode
--- 8641,8647 ----
  
  â€˜-gnatw.Oâ€™
  
!      'Disable warnings on modified but unreferenced out parameters.'
  
       This switch suppresses warnings for variables that are modified by
       using them as actuals for a call to a procedure with an out mode
*************** using the GNAT pragma Warnings (see the
*** 8649,8655 ****
  
  â€˜-gnatwpâ€™
  
!      â€˜Activate warnings on ineffective pragma Inlines.â€™
  
       This switch activates warnings for failure of front end inlining
       (activated by â€˜-gnatNâ€™) to inline a particular call.  There are
--- 8649,8655 ----
  
  â€˜-gnatwpâ€™
  
!      'Activate warnings on ineffective pragma Inlines.'
  
       This switch activates warnings for failure of front end inlining
       (activated by â€˜-gnatNâ€™) to inline a particular call.  There are
*************** using the GNAT pragma Warnings (see the
*** 8661,8667 ****
  
  â€˜-gnatwPâ€™
  
!      â€˜Suppress warnings on ineffective pragma Inlines.â€™
  
       This switch suppresses warnings on ineffective pragma Inlines.  If
       the inlining mechanism cannot inline a call, it will simply ignore
--- 8661,8667 ----
  
  â€˜-gnatwPâ€™
  
!      'Suppress warnings on ineffective pragma Inlines.'
  
       This switch suppresses warnings on ineffective pragma Inlines.  If
       the inlining mechanism cannot inline a call, it will simply ignore
*************** using the GNAT pragma Warnings (see the
*** 8669,8675 ****
  
  â€˜-gnatw.pâ€™
  
!      â€˜Activate warnings on parameter ordering.â€™
  
       This switch activates warnings for cases of suspicious parameter
       ordering when the list of arguments are all simple identifiers that
--- 8669,8675 ----
  
  â€˜-gnatw.pâ€™
  
!      'Activate warnings on parameter ordering.'
  
       This switch activates warnings for cases of suspicious parameter
       ordering when the list of arguments are all simple identifiers that
*************** using the GNAT pragma Warnings (see the
*** 8681,8694 ****
  
  â€˜-gnatw.Pâ€™
  
!      â€˜Suppress warnings on parameter ordering.â€™
  
       This switch suppresses warnings on cases of suspicious parameter
       ordering.
  
  â€˜-gnatw_pâ€™
  
!      â€˜Activate warnings for pedantic checks.â€™
  
       This switch activates warnings for the failure of certain pedantic
       checks.  The only case currently supported is a check that the
--- 8681,8694 ----
  
  â€˜-gnatw.Pâ€™
  
!      'Suppress warnings on parameter ordering.'
  
       This switch suppresses warnings on cases of suspicious parameter
       ordering.
  
  â€˜-gnatw_pâ€™
  
!      'Activate warnings for pedantic checks.'
  
       This switch activates warnings for the failure of certain pedantic
       checks.  The only case currently supported is a check that the
*************** using the GNAT pragma Warnings (see the
*** 8699,8711 ****
  
  â€˜-gnatw_Pâ€™
  
!      â€˜Suppress warnings for pedantic checks.â€™
  
       This switch suppresses warnings on violations of pedantic checks.
  
  â€˜-gnatwqâ€™
  
!      â€˜Activate warnings on questionable missing parentheses.â€™
  
       This switch activates warnings for cases where parentheses are not
       used and the result is potential ambiguity from a readers point of
--- 8699,8711 ----
  
  â€˜-gnatw_Pâ€™
  
!      'Suppress warnings for pedantic checks.'
  
       This switch suppresses warnings on violations of pedantic checks.
  
  â€˜-gnatwqâ€™
  
!      'Activate warnings on questionable missing parentheses.'
  
       This switch activates warnings for cases where parentheses are not
       used and the result is potential ambiguity from a readers point of
*************** using the GNAT pragma Warnings (see the
*** 8719,8732 ****
  
  â€˜-gnatwQâ€™
  
!      â€˜Suppress warnings on questionable missing parentheses.â€™
  
       This switch suppresses warnings for cases where the association is
       not clear and the use of parentheses is preferred.
  
  â€˜-gnatw.qâ€™
  
!      â€˜Activate warnings on questionable layout of record types.â€™
  
       This switch activates warnings for cases where the default layout
       of a record type, that is to say the layout of its components in
--- 8719,8732 ----
  
  â€˜-gnatwQâ€™
  
!      'Suppress warnings on questionable missing parentheses.'
  
       This switch suppresses warnings for cases where the association is
       not clear and the use of parentheses is preferred.
  
  â€˜-gnatw.qâ€™
  
!      'Activate warnings on questionable layout of record types.'
  
       This switch activates warnings for cases where the default layout
       of a record type, that is to say the layout of its components in
*************** using the GNAT pragma Warnings (see the
*** 8767,8780 ****
  
  â€˜-gnatw.Qâ€™
  
!      â€˜Suppress warnings on questionable layout of record types.â€™
  
       This switch suppresses warnings for cases where the default layout
       of a record type would very likely cause inefficiencies.
  
  â€˜-gnatw_qâ€™
  
!      â€˜Activate warnings for ignored equality operators.â€™
  
       This switch activates warnings for a user-defined â€œ=â€� function that
       does not compose (i.e.  is ignored for a predefined â€œ=â€� for a
--- 8767,8780 ----
  
  â€˜-gnatw.Qâ€™
  
!      'Suppress warnings on questionable layout of record types.'
  
       This switch suppresses warnings for cases where the default layout
       of a record type would very likely cause inefficiencies.
  
  â€˜-gnatw_qâ€™
  
!      'Activate warnings for ignored equality operators.'
  
       This switch activates warnings for a user-defined â€œ=â€� function that
       does not compose (i.e.  is ignored for a predefined â€œ=â€� for a
*************** using the GNAT pragma Warnings (see the
*** 8788,8798 ****
  
  â€˜-gnatw_Qâ€™
  
!      â€˜Suppress warnings for ignored equality operators.â€™
  
  â€˜-gnatwrâ€™
  
!      â€˜Activate warnings on redundant constructs.â€™
  
       This switch activates warnings for redundant constructs.  The
       following is the current list of constructs regarded as redundant:
--- 8788,8798 ----
  
  â€˜-gnatw_Qâ€™
  
!      'Suppress warnings for ignored equality operators.'
  
  â€˜-gnatwrâ€™
  
!      'Activate warnings on redundant constructs.'
  
       This switch activates warnings for redundant constructs.  The
       following is the current list of constructs regarded as redundant:
*************** using the GNAT pragma Warnings (see the
*** 8823,8835 ****
  
  â€˜-gnatwRâ€™
  
!      â€˜Suppress warnings on redundant constructs.â€™
  
       This switch suppresses warnings for redundant constructs.
  
  â€˜-gnatw.râ€™
  
!      â€˜Activate warnings for object renaming function.â€™
  
       This switch activates warnings for an object renaming that renames
       a function call, which is equivalent to a constant declaration (as
--- 8823,8835 ----
  
  â€˜-gnatwRâ€™
  
!      'Suppress warnings on redundant constructs.'
  
       This switch suppresses warnings for redundant constructs.
  
  â€˜-gnatw.râ€™
  
!      'Activate warnings for object renaming function.'
  
       This switch activates warnings for an object renaming that renames
       a function call, which is equivalent to a constant declaration (as
*************** using the GNAT pragma Warnings (see the
*** 8838,8850 ****
  
  â€˜-gnatw.Râ€™
  
!      â€˜Suppress warnings for object renaming function.â€™
  
       This switch suppresses warnings for object renaming function.
  
  â€˜-gnatw_râ€™
  
!      â€˜Activate warnings for out-of-order record representation clauses.â€™
  
       This switch activates warnings for record representation clauses,
       if the order of component declarations, component clauses, and
--- 8838,8850 ----
  
  â€˜-gnatw.Râ€™
  
!      'Suppress warnings for object renaming function.'
  
       This switch suppresses warnings for object renaming function.
  
  â€˜-gnatw_râ€™
  
!      'Activate warnings for out-of-order record representation clauses.'
  
       This switch activates warnings for record representation clauses,
       if the order of component declarations, component clauses, and
*************** using the GNAT pragma Warnings (see the
*** 8853,8863 ****
  
  â€˜-gnatw_Râ€™
  
!      â€˜Suppress warnings for out-of-order record representation clauses.â€™
  
  â€˜-gnatwsâ€™
  
!      â€˜Suppress all warnings.â€™
  
       This switch completely suppresses the output of all warning
       messages from the GNAT front end, including both warnings that can
--- 8853,8863 ----
  
  â€˜-gnatw_Râ€™
  
!      'Suppress warnings for out-of-order record representation clauses.'
  
  â€˜-gnatwsâ€™
  
!      'Suppress all warnings.'
  
       This switch completely suppresses the output of all warning
       messages from the GNAT front end, including both warnings that can
*************** using the GNAT pragma Warnings (see the
*** 8873,8879 ****
  
  â€˜-gnatw.sâ€™
  
!      â€˜Activate warnings on overridden size clauses.â€™
  
       This switch activates warnings on component clauses in record
       representation clauses where the length given overrides that
--- 8873,8879 ----
  
  â€˜-gnatw.sâ€™
  
!      'Activate warnings on overridden size clauses.'
  
       This switch activates warnings on component clauses in record
       representation clauses where the length given overrides that
*************** using the GNAT pragma Warnings (see the
*** 8884,8890 ****
  
  â€˜-gnatw.Sâ€™
  
!      â€˜Suppress warnings on overridden size clauses.â€™
  
       This switch suppresses warnings on component clauses in record
       representation clauses that override size clauses, and similar
--- 8884,8890 ----
  
  â€˜-gnatw.Sâ€™
  
!      'Suppress warnings on overridden size clauses.'
  
       This switch suppresses warnings on component clauses in record
       representation clauses that override size clauses, and similar
*************** using the GNAT pragma Warnings (see the
*** 8892,8898 ****
  
  â€˜-gnatw_sâ€™
  
!      â€˜Activate warnings on ineffective predicate tests.â€™
  
       This switch activates warnings on Static_Predicate aspect
       specifications that test for values that do not belong to the
--- 8892,8898 ----
  
  â€˜-gnatw_sâ€™
  
!      'Activate warnings on ineffective predicate tests.'
  
       This switch activates warnings on Static_Predicate aspect
       specifications that test for values that do not belong to the
*************** using the GNAT pragma Warnings (see the
*** 8900,8906 ****
  
  â€˜-gnatw_Sâ€™
  
!      â€˜Suppress warnings on ineffective predicate tests.â€™
  
       This switch suppresses warnings on Static_Predicate aspect
       specifications that test for values that do not belong to the
--- 8900,8906 ----
  
  â€˜-gnatw_Sâ€™
  
!      'Suppress warnings on ineffective predicate tests.'
  
       This switch suppresses warnings on Static_Predicate aspect
       specifications that test for values that do not belong to the
*************** using the GNAT pragma Warnings (see the
*** 8908,8914 ****
  
  â€˜-gnatwtâ€™
  
!      â€˜Activate warnings for tracking of deleted conditional code.â€™
  
       This switch activates warnings for tracking of code in conditionals
       (IF and CASE statements) that is detected to be dead code which
--- 8908,8914 ----
  
  â€˜-gnatwtâ€™
  
!      'Activate warnings for tracking of deleted conditional code.'
  
       This switch activates warnings for tracking of code in conditionals
       (IF and CASE statements) that is detected to be dead code which
*************** using the GNAT pragma Warnings (see the
*** 8918,8931 ****
  
  â€˜-gnatwTâ€™
  
!      â€˜Suppress warnings for tracking of deleted conditional code.â€™
  
       This switch suppresses warnings for tracking of deleted conditional
       code.
  
  â€˜-gnatw.tâ€™
  
!      â€˜Activate warnings on suspicious contracts.â€™
  
       This switch activates warnings on suspicious contracts.  This
       includes warnings on suspicious postconditions (whether a pragma
--- 8918,8931 ----
  
  â€˜-gnatwTâ€™
  
!      'Suppress warnings for tracking of deleted conditional code.'
  
       This switch suppresses warnings for tracking of deleted conditional
       code.
  
  â€˜-gnatw.tâ€™
  
!      'Activate warnings on suspicious contracts.'
  
       This switch activates warnings on suspicious contracts.  This
       includes warnings on suspicious postconditions (whether a pragma
*************** using the GNAT pragma Warnings (see the
*** 8943,8974 ****
  
  â€˜-gnatw.Tâ€™
  
!      â€˜Suppress warnings on suspicious contracts.â€™
  
       This switch suppresses warnings on suspicious contracts.
  
  â€˜-gnatwuâ€™
  
!      â€˜Activate warnings on unused entities.â€™
  
       This switch activates warnings to be generated for entities that
!      are declared but not referenced, and for units that are â€˜withâ€™ed
       and not referenced.  In the case of packages, a warning is also
       generated if no entities in the package are referenced.  This means
       that if a withâ€™ed package is referenced but the only references are
       in â€˜useâ€™ clauses or â€˜renamesâ€™ declarations, a warning is still
       generated.  A warning is also generated for a generic package that
!      is â€˜withâ€™ed but never instantiated.  In the case where a package or
!      subprogram body is compiled, and there is a â€˜withâ€™ on the
       corresponding spec that is only referenced in the body, a warning
!      is also generated, noting that the â€˜withâ€™ can be moved to the body.
       The default is that such warnings are not generated.  This switch
       also activates warnings on unreferenced formals (it includes the
       effect of â€˜-gnatwfâ€™).
  
  â€˜-gnatwUâ€™
  
!      â€˜Suppress warnings on unused entities.â€™
  
       This switch suppresses warnings for unused entities and packages.
       It also turns off warnings on unreferenced formals (and thus
--- 8943,8974 ----
  
  â€˜-gnatw.Tâ€™
  
!      'Suppress warnings on suspicious contracts.'
  
       This switch suppresses warnings on suspicious contracts.
  
  â€˜-gnatwuâ€™
  
!      'Activate warnings on unused entities.'
  
       This switch activates warnings to be generated for entities that
!      are declared but not referenced, and for units that are 'with'ed
       and not referenced.  In the case of packages, a warning is also
       generated if no entities in the package are referenced.  This means
       that if a withâ€™ed package is referenced but the only references are
       in â€˜useâ€™ clauses or â€˜renamesâ€™ declarations, a warning is still
       generated.  A warning is also generated for a generic package that
!      is 'with'ed but never instantiated.  In the case where a package or
!      subprogram body is compiled, and there is a 'with' on the
       corresponding spec that is only referenced in the body, a warning
!      is also generated, noting that the 'with' can be moved to the body.
       The default is that such warnings are not generated.  This switch
       also activates warnings on unreferenced formals (it includes the
       effect of â€˜-gnatwfâ€™).
  
  â€˜-gnatwUâ€™
  
!      'Suppress warnings on unused entities.'
  
       This switch suppresses warnings for unused entities and packages.
       It also turns off warnings on unreferenced formals (and thus
*************** using the GNAT pragma Warnings (see the
*** 8976,8988 ****
  
  â€˜-gnatw.uâ€™
  
!      â€˜Activate warnings on unordered enumeration types.â€™
  
       This switch causes enumeration types to be considered as
       conceptually unordered, unless an explicit pragma â€˜Orderedâ€™ is
       given for the type.  The effect is to generate warnings in clients
       that use explicit comparisons or subranges, since these constructs
!      both treat objects of the type as ordered.  (A â€˜clientâ€™ is defined
       as a unit that is other than the unit in which the type is
       declared, or its body or subunits.)  Please refer to the
       description of pragma â€˜Orderedâ€™ in the â€˜GNAT Reference Manualâ€™ for
--- 8976,8988 ----
  
  â€˜-gnatw.uâ€™
  
!      'Activate warnings on unordered enumeration types.'
  
       This switch causes enumeration types to be considered as
       conceptually unordered, unless an explicit pragma â€˜Orderedâ€™ is
       given for the type.  The effect is to generate warnings in clients
       that use explicit comparisons or subranges, since these constructs
!      both treat objects of the type as ordered.  (A 'client' is defined
       as a unit that is other than the unit in which the type is
       declared, or its body or subunits.)  Please refer to the
       description of pragma â€˜Orderedâ€™ in the â€˜GNAT Reference Manualâ€™ for
*************** using the GNAT pragma Warnings (see the
*** 8991,8997 ****
  
  â€˜-gnatw.Uâ€™
  
!      â€˜Deactivate warnings on unordered enumeration types.â€™
  
       This switch causes all enumeration types to be considered as
       ordered, so that no warnings are given for comparisons or subranges
--- 8991,8997 ----
  
  â€˜-gnatw.Uâ€™
  
!      'Deactivate warnings on unordered enumeration types.'
  
       This switch causes all enumeration types to be considered as
       ordered, so that no warnings are given for comparisons or subranges
*************** using the GNAT pragma Warnings (see the
*** 8999,9005 ****
  
  â€˜-gnatwvâ€™
  
!      â€˜Activate warnings on unassigned variables.â€™
  
       This switch activates warnings for access to variables which may
       not be properly initialized.  The default is that such warnings are
--- 8999,9005 ----
  
  â€˜-gnatwvâ€™
  
!      'Activate warnings on unassigned variables.'
  
       This switch activates warnings for access to variables which may
       not be properly initialized.  The default is that such warnings are
*************** using the GNAT pragma Warnings (see the
*** 9012,9025 ****
  
  â€˜-gnatwVâ€™
  
!      â€˜Suppress warnings on unassigned variables.â€™
  
       This switch suppresses warnings for access to variables which may
       not be properly initialized.
  
  â€˜-gnatw.vâ€™
  
!      â€˜Activate warnings for non-default bit order.â€™
  
       This switch activates warning messages about the effects of
       non-default bit-order on records to which a component clause is
--- 9012,9025 ----
  
  â€˜-gnatwVâ€™
  
!      'Suppress warnings on unassigned variables.'
  
       This switch suppresses warnings for access to variables which may
       not be properly initialized.
  
  â€˜-gnatw.vâ€™
  
!      'Activate warnings for non-default bit order.'
  
       This switch activates warning messages about the effects of
       non-default bit-order on records to which a component clause is
*************** using the GNAT pragma Warnings (see the
*** 9030,9043 ****
  
  â€˜-gnatw.Vâ€™
  
!      â€˜Suppress warnings for non-default bit order.â€™
  
       This switch suppresses warnings for the effects of specifying
       non-default bit order on record components with component clauses.
  
  â€˜-gnatwwâ€™
  
!      â€˜Activate warnings on wrong low bound assumption.â€™
  
       This switch activates warnings for indexing an unconstrained string
       parameter with a literal or Sâ€™Length.  This is a case where the
--- 9030,9043 ----
  
  â€˜-gnatw.Vâ€™
  
!      'Suppress warnings for non-default bit order.'
  
       This switch suppresses warnings for the effects of specifying
       non-default bit order on record components with component clauses.
  
  â€˜-gnatwwâ€™
  
!      'Activate warnings on wrong low bound assumption.'
  
       This switch activates warnings for indexing an unconstrained string
       parameter with a literal or Sâ€™Length.  This is a case where the
*************** using the GNAT pragma Warnings (see the
*** 9047,9053 ****
  
  â€˜-gnatwWâ€™
  
!      â€˜Suppress warnings on wrong low bound assumption.â€™
  
       This switch suppresses warnings for indexing an unconstrained
       string parameter with a literal or Sâ€™Length.  Note that this
--- 9047,9053 ----
  
  â€˜-gnatwWâ€™
  
!      'Suppress warnings on wrong low bound assumption.'
  
       This switch suppresses warnings for indexing an unconstrained
       string parameter with a literal or Sâ€™Length.  Note that this
*************** using the GNAT pragma Warnings (see the
*** 9061,9067 ****
  
  â€˜-gnatw.wâ€™
  
!      â€˜Activate warnings on Warnings Off pragmas.â€™
  
       This switch activates warnings for use of â€˜pragma Warnings (Off,
       entity)â€™ where either the pragma is entirely useless (because it
--- 9061,9067 ----
  
  â€˜-gnatw.wâ€™
  
!      'Activate warnings on Warnings Off pragmas.'
  
       This switch activates warnings for use of â€˜pragma Warnings (Off,
       entity)â€™ where either the pragma is entirely useless (because it
*************** using the GNAT pragma Warnings (see the
*** 9074,9087 ****
  
  â€˜-gnatw.Wâ€™
  
!      â€˜Suppress warnings on unnecessary Warnings Off pragmas.â€™
  
       This switch suppresses warnings for use of â€˜pragma Warnings (Off,
       ...)â€™.
  
  â€˜-gnatwxâ€™
  
!      â€˜Activate warnings on Export/Import pragmas.â€™
  
       This switch activates warnings on Export/Import pragmas when the
       compiler detects a possible conflict between the Ada and foreign
--- 9074,9087 ----
  
  â€˜-gnatw.Wâ€™
  
!      'Suppress warnings on unnecessary Warnings Off pragmas.'
  
       This switch suppresses warnings for use of â€˜pragma Warnings (Off,
       ...)â€™.
  
  â€˜-gnatwxâ€™
  
!      'Activate warnings on Export/Import pragmas.'
  
       This switch activates warnings on Export/Import pragmas when the
       compiler detects a possible conflict between the Ada and foreign
*************** using the GNAT pragma Warnings (see the
*** 9092,9098 ****
  
  â€˜-gnatwXâ€™
  
!      â€˜Suppress warnings on Export/Import pragmas.â€™
  
       This switch suppresses warnings on Export/Import pragmas.  The
       sense of this is that you are telling the compiler that you know
--- 9092,9098 ----
  
  â€˜-gnatwXâ€™
  
!      'Suppress warnings on Export/Import pragmas.'
  
       This switch suppresses warnings on Export/Import pragmas.  The
       sense of this is that you are telling the compiler that you know
*************** using the GNAT pragma Warnings (see the
*** 9101,9107 ****
  
  â€˜-gnatw.xâ€™
  
!      â€˜Activate warnings for No_Exception_Propagation mode.â€™
  
       This switch activates warnings for exception usage when pragma
       Restrictions (No_Exception_Propagation) is in effect.  Warnings are
--- 9101,9107 ----
  
  â€˜-gnatw.xâ€™
  
!      'Activate warnings for No_Exception_Propagation mode.'
  
       This switch activates warnings for exception usage when pragma
       Restrictions (No_Exception_Propagation) is in effect.  Warnings are
*************** using the GNAT pragma Warnings (see the
*** 9112,9125 ****
  
  â€˜-gnatw.Xâ€™
  
!      â€˜Disable warnings for No_Exception_Propagation mode.â€™
  
       This switch disables warnings for exception usage when pragma
       Restrictions (No_Exception_Propagation) is in effect.
  
  â€˜-gnatwyâ€™
  
!      â€˜Activate warnings for Ada compatibility issues.â€™
  
       For the most part, newer versions of Ada are upwards compatible
       with older versions.  For example, Ada 2005 programs will almost
--- 9112,9125 ----
  
  â€˜-gnatw.Xâ€™
  
!      'Disable warnings for No_Exception_Propagation mode.'
  
       This switch disables warnings for exception usage when pragma
       Restrictions (No_Exception_Propagation) is in effect.
  
  â€˜-gnatwyâ€™
  
!      'Activate warnings for Ada compatibility issues.'
  
       For the most part, newer versions of Ada are upwards compatible
       with older versions.  For example, Ada 2005 programs will almost
*************** using the GNAT pragma Warnings (see the
*** 9132,9145 ****
  
  â€˜-gnatwYâ€™
  
!      â€˜Disable warnings for Ada compatibility issues.â€™
  
       This switch suppresses the warnings intended to help in identifying
       incompatibilities between Ada language versions.
  
  â€˜-gnatw.yâ€™
  
!      â€˜Activate information messages for why package spec needs body.â€™
  
       There are a number of cases in which a package spec needs a body.
       For example, the use of pragma Elaborate_Body, or the declaration
--- 9132,9145 ----
  
  â€˜-gnatwYâ€™
  
!      'Disable warnings for Ada compatibility issues.'
  
       This switch suppresses the warnings intended to help in identifying
       incompatibilities between Ada language versions.
  
  â€˜-gnatw.yâ€™
  
!      'Activate information messages for why package spec needs body.'
  
       There are a number of cases in which a package spec needs a body.
       For example, the use of pragma Elaborate_Body, or the declaration
*************** using the GNAT pragma Warnings (see the
*** 9151,9164 ****
  
  â€˜-gnatw.Yâ€™
  
!      â€˜Disable information messages for why package spec needs body.â€™
  
       This switch suppresses the output of information messages showing
       why a package specification needs a body.
  
  â€˜-gnatwzâ€™
  
!      â€˜Activate warnings on unchecked conversions.â€™
  
       This switch activates warnings for unchecked conversions where the
       types are known at compile time to have different sizes.  The
--- 9151,9164 ----
  
  â€˜-gnatw.Yâ€™
  
!      'Disable information messages for why package spec needs body.'
  
       This switch suppresses the output of information messages showing
       why a package specification needs a body.
  
  â€˜-gnatwzâ€™
  
!      'Activate warnings on unchecked conversions.'
  
       This switch activates warnings for unchecked conversions where the
       types are known at compile time to have different sizes.  The
*************** using the GNAT pragma Warnings (see the
*** 9167,9173 ****
  
  â€˜-gnatwZâ€™
  
!      â€˜Suppress warnings on unchecked conversions.â€™
  
       This switch suppresses warnings for unchecked conversions where the
       types are known at compile time to have different sizes or
--- 9167,9173 ----
  
  â€˜-gnatwZâ€™
  
!      'Suppress warnings on unchecked conversions.'
  
       This switch suppresses warnings for unchecked conversions where the
       types are known at compile time to have different sizes or
*************** using the GNAT pragma Warnings (see the
*** 9175,9181 ****
  
  â€˜-gnatw.zâ€™
  
!      â€˜Activate warnings for size not a multiple of alignment.â€™
  
       This switch activates warnings for cases of array and record types
       with specified â€˜Sizeâ€™ and â€˜Alignmentâ€™ attributes where the size is
--- 9175,9181 ----
  
  â€˜-gnatw.zâ€™
  
!      'Activate warnings for size not a multiple of alignment.'
  
       This switch activates warnings for cases of array and record types
       with specified â€˜Sizeâ€™ and â€˜Alignmentâ€™ attributes where the size is
*************** using the GNAT pragma Warnings (see the
*** 9185,9191 ****
  
  â€˜-gnatw.Zâ€™
  
!      â€˜Suppress warnings for size not a multiple of alignment.â€™
  
       This switch suppresses warnings for cases of array and record types
       with specified â€˜Sizeâ€™ and â€˜Alignmentâ€™ attributes where the size is
--- 9185,9191 ----
  
  â€˜-gnatw.Zâ€™
  
!      'Suppress warnings for size not a multiple of alignment.'
  
       This switch suppresses warnings for cases of array and record types
       with specified â€˜Sizeâ€™ and â€˜Alignmentâ€™ attributes where the size is
*************** following switch is provided:
*** 9350,9356 ****
  
  â€˜-gnatisâ€™
  
!      â€˜Suppress all info messages.â€™
  
       This switch completely suppresses the output of all info messages
       from the GNAT front end.
--- 9350,9356 ----
  
  â€˜-gnatisâ€™
  
!      'Suppress all info messages.'
  
       This switch completely suppresses the output of all info messages
       from the GNAT front end.
*************** default checks required by Ada as descri
*** 9486,9506 ****
  
  â€˜-gnatVaâ€™
  
!      â€˜All validity checks.â€™
  
       All validity checks are turned on.  That is, â€˜-gnatVaâ€™ is
       equivalent to â€˜gnatVcdefimoprstâ€™.
  
  â€˜-gnatVcâ€™
  
!      â€˜Validity checks for copies.â€™
  
       The right-hand side of assignments, and the (explicit) initializing
       values of object declarations are validity checked.
  
  â€˜-gnatVdâ€™
  
!      â€˜Default (RM) validity checks.â€™
  
       Some validity checks are required by Ada (see RM 13.9.1 (9-11));
       these (and only these) validity checks are enabled by default.  For
--- 9486,9506 ----
  
  â€˜-gnatVaâ€™
  
!      'All validity checks.'
  
       All validity checks are turned on.  That is, â€˜-gnatVaâ€™ is
       equivalent to â€˜gnatVcdefimoprstâ€™.
  
  â€˜-gnatVcâ€™
  
!      'Validity checks for copies.'
  
       The right-hand side of assignments, and the (explicit) initializing
       values of object declarations are validity checked.
  
  â€˜-gnatVdâ€™
  
!      'Default (RM) validity checks.'
  
       Some validity checks are required by Ada (see RM 13.9.1 (9-11));
       these (and only these) validity checks are enabled by default.  For
*************** default checks required by Ada as descri
*** 9520,9526 ****
  
  â€˜-gnatVeâ€™
  
!      â€˜Validity checks for scalar components.â€™
  
       In the absence of this switch, assignments to scalar components of
       enclosing record or array objects are not validity checked, even if
--- 9520,9526 ----
  
  â€˜-gnatVeâ€™
  
!      'Validity checks for scalar components.'
  
       In the absence of this switch, assignments to scalar components of
       enclosing record or array objects are not validity checked, even if
*************** default checks required by Ada as descri
*** 9530,9536 ****
  
  â€˜-gnatVfâ€™
  
!      â€˜Validity checks for floating-point values.â€™
  
       Specifying this switch enables validity checking for floating-point
       values in the same contexts where validity checking is enabled for
--- 9530,9536 ----
  
  â€˜-gnatVfâ€™
  
!      'Validity checks for floating-point values.'
  
       Specifying this switch enables validity checking for floating-point
       values in the same contexts where validity checking is enabled for
*************** default checks required by Ada as descri
*** 9551,9564 ****
  
  â€˜-gnatViâ€™
  
!      â€˜Validity checks for â€˜â€˜inâ€˜â€˜ mode parameters.â€™
  
       Arguments for parameters of mode â€˜inâ€™ are validity checked in
       function and procedure calls at the point of call.
  
  â€˜-gnatVmâ€™
  
!      â€˜Validity checks for â€˜â€˜in outâ€˜â€˜ mode parameters.â€™
  
       Arguments for parameters of mode â€˜in outâ€™ are validity checked in
       procedure calls at the point of call.  The â€˜'m'â€™ here stands for
--- 9551,9564 ----
  
  â€˜-gnatViâ€™
  
!      'Validity checks for ''in'' mode parameters.'
  
       Arguments for parameters of mode â€˜inâ€™ are validity checked in
       function and procedure calls at the point of call.
  
  â€˜-gnatVmâ€™
  
!      'Validity checks for ''in out'' mode parameters.'
  
       Arguments for parameters of mode â€˜in outâ€™ are validity checked in
       procedure calls at the point of call.  The â€˜'m'â€™ here stands for
*************** default checks required by Ada as descri
*** 9570,9576 ****
  
  â€˜-gnatVnâ€™
  
!      â€˜No validity checks.â€™
  
       This switch turns off all validity checking, including the default
       checking for case statements and left hand side subscripts.  Note
--- 9570,9576 ----
  
  â€˜-gnatVnâ€™
  
!      'No validity checks.'
  
       This switch turns off all validity checking, including the default
       checking for case statements and left hand side subscripts.  Note
*************** default checks required by Ada as descri
*** 9580,9586 ****
  
  â€˜-gnatVoâ€™
  
!      â€˜Validity checks for operator and attribute operands.â€™
  
       Scalar arguments for predefined operators and for attributes are
       validity checked.  This includes all operators in package
--- 9580,9586 ----
  
  â€˜-gnatVoâ€™
  
!      'Validity checks for operator and attribute operands.'
  
       Scalar arguments for predefined operators and for attributes are
       validity checked.  This includes all operators in package
*************** default checks required by Ada as descri
*** 9593,9599 ****
  
  â€˜-gnatVpâ€™
  
!      â€˜Validity checks for parameters.â€™
  
       This controls the treatment of formal parameters within a
       subprogram (as opposed to â€˜-gnatViâ€™ and â€˜-gnatVmâ€™, which control
--- 9593,9599 ----
  
  â€˜-gnatVpâ€™
  
!      'Validity checks for parameters.'
  
       This controls the treatment of formal parameters within a
       subprogram (as opposed to â€˜-gnatViâ€™ and â€˜-gnatVmâ€™, which control
*************** default checks required by Ada as descri
*** 9609,9622 ****
  
  â€˜-gnatVrâ€™
  
!      â€˜Validity checks for function returns.â€™
  
       The expression in simple â€˜returnâ€™ statements in functions is
       validity checked.
  
  â€˜-gnatVsâ€™
  
!      â€˜Validity checks for subscripts.â€™
  
       All subscript expressions are checked for validity, whatever
       context they occur in (in default mode some subscripts are not
--- 9609,9622 ----
  
  â€˜-gnatVrâ€™
  
!      'Validity checks for function returns.'
  
       The expression in simple â€˜returnâ€™ statements in functions is
       validity checked.
  
  â€˜-gnatVsâ€™
  
!      'Validity checks for subscripts.'
  
       All subscript expressions are checked for validity, whatever
       context they occur in (in default mode some subscripts are not
*************** default checks required by Ada as descri
*** 9625,9631 ****
  
  â€˜-gnatVtâ€™
  
!      â€˜Validity checks for tests.â€™
  
       Expressions used as conditions in â€˜ifâ€™, â€˜whileâ€™ or â€˜exitâ€™
       statements are checked, as well as guard expressions in entry
--- 9625,9631 ----
  
  â€˜-gnatVtâ€™
  
!      'Validity checks for tests.'
  
       Expressions used as conditions in â€˜ifâ€™, â€˜whileâ€™ or â€˜exitâ€™
       statements are checked, as well as guard expressions in entry
*************** defined:
*** 9680,9686 ****
  
  â€˜-gnaty0â€™
  
!      â€˜Specify indentation level.â€™
  
       If a digit from 1-9 appears in the string after â€˜-gnatyâ€™ then
       proper indentation is checked, with the digit indicating the
--- 9680,9686 ----
  
  â€˜-gnaty0â€™
  
!      'Specify indentation level.'
  
       If a digit from 1-9 appears in the string after â€˜-gnatyâ€™ then
       proper indentation is checked, with the digit indicating the
*************** defined:
*** 9706,9712 ****
  
  â€˜-gnatyaâ€™
  
!      â€˜Check attribute casing.â€™
  
       Attribute names, including the case of keywords such as â€˜digitsâ€™
       used as attributes names, must be written in mixed case, that is,
--- 9706,9712 ----
  
  â€˜-gnatyaâ€™
  
!      'Check attribute casing.'
  
       Attribute names, including the case of keywords such as â€˜digitsâ€™
       used as attributes names, must be written in mixed case, that is,
*************** defined:
*** 9715,9721 ****
  
  â€˜-gnatyAâ€™
  
!      â€˜Use of array index numbers in array attributes.â€™
  
       When using the array attributes First, Last, Range, or Length, the
       index number must be omitted for one-dimensional arrays and is
--- 9715,9721 ----
  
  â€˜-gnatyAâ€™
  
!      'Use of array index numbers in array attributes.'
  
       When using the array attributes First, Last, Range, or Length, the
       index number must be omitted for one-dimensional arrays and is
*************** defined:
*** 9723,9729 ****
  
  â€˜-gnatybâ€™
  
!      â€˜Blanks not allowed at statement end.â€™
  
       Trailing blanks are not allowed at the end of statements.  The
       purpose of this rule, together with h (no horizontal tabs), is to
--- 9723,9729 ----
  
  â€˜-gnatybâ€™
  
!      'Blanks not allowed at statement end.'
  
       Trailing blanks are not allowed at the end of statements.  The
       purpose of this rule, together with h (no horizontal tabs), is to
*************** defined:
*** 9732,9738 ****
  
  â€˜-gnatyBâ€™
  
!      â€˜Check Boolean operators.â€™
  
       The use of AND/OR operators is not permitted except in the cases of
       modular operands, array operands, and simple stand-alone boolean
--- 9732,9738 ----
  
  â€˜-gnatyBâ€™
  
!      'Check Boolean operators.'
  
       The use of AND/OR operators is not permitted except in the cases of
       modular operands, array operands, and simple stand-alone boolean
*************** defined:
*** 9741,9747 ****
  
  â€˜-gnatycâ€™
  
!      â€˜Check comments, double space.â€™
  
       Comments must meet the following set of rules:
  
--- 9741,9747 ----
  
  â€˜-gnatycâ€™
  
!      'Check comments, double space.'
  
       Comments must meet the following set of rules:
  
*************** defined:
*** 9784,9804 ****
  
  â€˜-gnatyCâ€™
  
!      â€˜Check comments, single space.â€™
  
       This is identical to â€˜câ€™ except that only one space is required
       following the â€˜--â€™ of a comment instead of two.
  
  â€˜-gnatydâ€™
  
!      â€˜Check no DOS line terminators present.â€™
  
       All lines must be terminated by a single ASCII.LF character (in
       particular the DOS line terminator sequence CR/LF is not allowed).
  
  â€˜-gnatyDâ€™
  
!      â€˜Check declared identifiers in mixed case.â€™
  
       Declared identifiers must be in mixed case, as in
       This_Is_An_Identifier.  Use -gnatyr in addition to ensure that
--- 9784,9804 ----
  
  â€˜-gnatyCâ€™
  
!      'Check comments, single space.'
  
       This is identical to â€˜câ€™ except that only one space is required
       following the â€˜--â€™ of a comment instead of two.
  
  â€˜-gnatydâ€™
  
!      'Check no DOS line terminators present.'
  
       All lines must be terminated by a single ASCII.LF character (in
       particular the DOS line terminator sequence CR/LF is not allowed).
  
  â€˜-gnatyDâ€™
  
!      'Check declared identifiers in mixed case.'
  
       Declared identifiers must be in mixed case, as in
       This_Is_An_Identifier.  Use -gnatyr in addition to ensure that
*************** defined:
*** 9806,9826 ****
  
  â€˜-gnatyeâ€™
  
!      â€˜Check end/exit labels.â€™
  
       Optional labels on â€˜endâ€™ statements ending subprograms and on
       â€˜exitâ€™ statements exiting named loops, are required to be present.
  
  â€˜-gnatyfâ€™
  
!      â€˜No form feeds or vertical tabs.â€™
  
       Neither form feeds nor vertical tab characters are permitted in the
       source text.
  
  â€˜-gnatygâ€™
  
!      â€˜GNAT style mode.â€™
  
       The set of style check switches is set to match that used by the
       GNAT sources.  This may be useful when developing code that is
--- 9806,9826 ----
  
  â€˜-gnatyeâ€™
  
!      'Check end/exit labels.'
  
       Optional labels on â€˜endâ€™ statements ending subprograms and on
       â€˜exitâ€™ statements exiting named loops, are required to be present.
  
  â€˜-gnatyfâ€™
  
!      'No form feeds or vertical tabs.'
  
       Neither form feeds nor vertical tab characters are permitted in the
       source text.
  
  â€˜-gnatygâ€™
  
!      'GNAT style mode.'
  
       The set of style check switches is set to match that used by the
       GNAT sources.  This may be useful when developing code that is
*************** defined:
*** 9830,9836 ****
  
  â€˜-gnatyhâ€™
  
!      â€˜No horizontal tabs.â€™
  
       Horizontal tab characters are not permitted in the source text.
       Together with the b (no blanks at end of line) check, this enforces
--- 9830,9836 ----
  
  â€˜-gnatyhâ€™
  
!      'No horizontal tabs.'
  
       Horizontal tab characters are not permitted in the source text.
       Together with the b (no blanks at end of line) check, this enforces
*************** defined:
*** 9838,9844 ****
  
  â€˜-gnatyiâ€™
  
!      â€˜Check if-then layout.â€™
  
       The keyword â€˜thenâ€™ must appear either on the same line as
       corresponding â€˜ifâ€™, or on a line on its own, lined up under the
--- 9838,9844 ----
  
  â€˜-gnatyiâ€™
  
!      'Check if-then layout.'
  
       The keyword â€˜thenâ€™ must appear either on the same line as
       corresponding â€˜ifâ€™, or on a line on its own, lined up under the
*************** defined:
*** 9846,9859 ****
  
  â€˜-gnatyIâ€™
  
!      â€˜check mode IN keywords.â€™
  
       Mode â€˜inâ€™ (the default mode) is not allowed to be given explicitly.
       â€˜in outâ€™ is fine, but not â€˜inâ€™ on its own.
  
  â€˜-gnatykâ€™
  
!      â€˜Check keyword casing.â€™
  
       All keywords must be in lower case (with the exception of keywords
       such as â€˜digitsâ€™ used as attribute names to which this check does
--- 9846,9859 ----
  
  â€˜-gnatyIâ€™
  
!      'check mode IN keywords.'
  
       Mode â€˜inâ€™ (the default mode) is not allowed to be given explicitly.
       â€˜in outâ€™ is fine, but not â€˜inâ€™ on its own.
  
  â€˜-gnatykâ€™
  
!      'Check keyword casing.'
  
       All keywords must be in lower case (with the exception of keywords
       such as â€˜digitsâ€™ used as attribute names to which this check does
*************** defined:
*** 9862,9868 ****
  
  â€˜-gnatylâ€™
  
!      â€˜Check layout.â€™
  
       Layout of statement and declaration constructs must follow the
       recommendations in the Ada Reference Manual, as indicated by the
--- 9862,9868 ----
  
  â€˜-gnatylâ€™
  
!      'Check layout.'
  
       Layout of statement and declaration constructs must follow the
       recommendations in the Ada Reference Manual, as indicated by the
*************** defined:
*** 9927,9941 ****
  
  â€˜-gnatyLâ€™
  
!      â€˜Set maximum nesting level.â€™
  
       The maximum level of nesting of constructs (including subprograms,
       loops, blocks, packages, and conditionals) may not exceed the given
!      value â€˜nnnâ€™.  A value of zero disconnects this style check.
  
  â€˜-gnatymâ€™
  
!      â€˜Check maximum line length.â€™
  
       The length of source lines must not exceed 79 characters, including
       any trailing blanks.  The value of 79 allows convenient display on
--- 9927,9941 ----
  
  â€˜-gnatyLâ€™
  
!      'Set maximum nesting level.'
  
       The maximum level of nesting of constructs (including subprograms,
       loops, blocks, packages, and conditionals) may not exceed the given
!      value 'nnn'.  A value of zero disconnects this style check.
  
  â€˜-gnatymâ€™
  
!      'Check maximum line length.'
  
       The length of source lines must not exceed 79 characters, including
       any trailing blanks.  The value of 79 allows convenient display on
*************** defined:
*** 9948,9956 ****
  
  â€˜-gnatyMâ€™
  
!      â€˜Set maximum line length.â€™
  
!      The length of lines must not exceed the given value â€˜nnnâ€™.  The
       maximum value that can be specified is 32767.  If neither style
       option for setting the line length is used, then the default is
       255.  This also controls the maximum length of lexical elements,
--- 9948,9956 ----
  
  â€˜-gnatyMâ€™
  
!      'Set maximum line length.'
  
!      The length of lines must not exceed the given value 'nnn'.  The
       maximum value that can be specified is 32767.  If neither style
       option for setting the line length is used, then the default is
       255.  This also controls the maximum length of lexical elements,
*************** defined:
*** 9958,9964 ****
  
  â€˜-gnatynâ€™
  
!      â€˜Check casing of entities in Standard.â€™
  
       Any identifier from Standard must be cased to match the
       presentation in the Ada Reference Manual (for example, â€˜Integerâ€™
--- 9958,9964 ----
  
  â€˜-gnatynâ€™
  
!      'Check casing of entities in Standard.'
  
       Any identifier from Standard must be cased to match the
       presentation in the Ada Reference Manual (for example, â€˜Integerâ€™
*************** defined:
*** 9966,9978 ****
  
  â€˜-gnatyNâ€™
  
!      â€˜Turn off all style checks.â€™
  
       All style check options are turned off.
  
  â€˜-gnatyoâ€™
  
!      â€˜Check order of subprogram bodies.â€™
  
       All subprogram bodies in a given scope (e.g., a package body) must
       be in alphabetical order.  The ordering rule uses normal Ada rules
--- 9966,9978 ----
  
  â€˜-gnatyNâ€™
  
!      'Turn off all style checks.'
  
       All style check options are turned off.
  
  â€˜-gnatyoâ€™
  
!      'Check order of subprogram bodies.'
  
       All subprogram bodies in a given scope (e.g., a package body) must
       be in alphabetical order.  The ordering rule uses normal Ada rules
*************** defined:
*** 9982,9988 ****
  
  â€˜-gnatyOâ€™
  
!      â€˜Check that overriding subprograms are explicitly marked as such.â€™
  
       This applies to all subprograms of a derived type that override a
       primitive operation of the type, for both tagged and untagged
--- 9982,9988 ----
  
  â€˜-gnatyOâ€™
  
!      'Check that overriding subprograms are explicitly marked as such.'
  
       This applies to all subprograms of a derived type that override a
       primitive operation of the type, for both tagged and untagged
*************** defined:
*** 9994,10000 ****
  
  â€˜-gnatypâ€™
  
!      â€˜Check pragma casing.â€™
  
       Pragma names must be written in mixed case, that is, the initial
       letter and any letter following an underscore must be uppercase.
--- 9994,10000 ----
  
  â€˜-gnatypâ€™
  
!      'Check pragma casing.'
  
       Pragma names must be written in mixed case, that is, the initial
       letter and any letter following an underscore must be uppercase.
*************** defined:
*** 10003,10009 ****
  
  â€˜-gnatyrâ€™
  
!      â€˜Check references.â€™
  
       All identifier references must be cased in the same way as the
       corresponding declaration.  No specific casing style is imposed on
--- 10003,10009 ----
  
  â€˜-gnatyrâ€™
  
!      'Check references.'
  
       All identifier references must be cased in the same way as the
       corresponding declaration.  No specific casing style is imposed on
*************** defined:
*** 10012,10018 ****
  
  â€˜-gnatysâ€™
  
!      â€˜Check separate specs.â€™
  
       Separate declarations (â€˜specsâ€™) are required for subprograms (a
       body is not allowed to serve as its own declaration).  The only
--- 10012,10018 ----
  
  â€˜-gnatysâ€™
  
!      'Check separate specs.'
  
       Separate declarations (â€˜specsâ€™) are required for subprograms (a
       body is not allowed to serve as its own declaration).  The only
*************** defined:
*** 10022,10028 ****
  
  â€˜-gnatySâ€™
  
!      â€˜Check no statements after then/else.â€™
  
       No statements are allowed on the same line as a â€˜thenâ€™ or â€˜elseâ€™
       keyword following the keyword in an â€˜ifâ€™ statement.  â€˜or elseâ€™ and
--- 10022,10028 ----
  
  â€˜-gnatySâ€™
  
!      'Check no statements after then/else.'
  
       No statements are allowed on the same line as a â€˜thenâ€™ or â€˜elseâ€™
       keyword following the keyword in an â€˜ifâ€™ statement.  â€˜or elseâ€™ and
*************** defined:
*** 10031,10037 ****
  
  â€˜-gnatytâ€™
  
!      â€˜Check token spacing.â€™
  
       The following token spacing rules are enforced:
  
--- 10031,10037 ----
  
  â€˜-gnatytâ€™
  
!      'Check token spacing.'
  
       The following token spacing rules are enforced:
  
*************** defined:
*** 10077,10083 ****
  
  â€˜-gnatyuâ€™
  
!      â€˜Check unnecessary blank lines.â€™
  
       Unnecessary blank lines are not allowed.  A blank line is
       considered unnecessary if it appears at the end of the file, or if
--- 10077,10083 ----
  
  â€˜-gnatyuâ€™
  
!      'Check unnecessary blank lines.'
  
       Unnecessary blank lines are not allowed.  A blank line is
       considered unnecessary if it appears at the end of the file, or if
*************** defined:
*** 10085,10091 ****
  
  â€˜-gnatyxâ€™
  
!      â€˜Check extra parentheses.â€™
  
       Unnecessary extra levels of parentheses (C-style) are not allowed
       around conditions (or selection expressions) in â€˜ifâ€™, â€˜whileâ€™,
--- 10085,10091 ----
  
  â€˜-gnatyxâ€™
  
!      'Check extra parentheses.'
  
       Unnecessary extra levels of parentheses (C-style) are not allowed
       around conditions (or selection expressions) in â€˜ifâ€™, â€˜whileâ€™,
*************** defined:
*** 10093,10099 ****
  
  â€˜-gnatyyâ€™
  
!      â€˜Set all standard style check options.â€™
  
       This is equivalent to â€˜gnaty3aAbcefhiklmnprstâ€™, that is all
       checking options enabled with the exception of â€˜-gnatyBâ€™,
--- 10093,10099 ----
  
  â€˜-gnatyyâ€™
  
!      'Set all standard style check options.'
  
       This is equivalent to â€˜gnaty3aAbcefhiklmnprstâ€™, that is all
       checking options enabled with the exception of â€˜-gnatyBâ€™,
*************** defined:
*** 10102,10127 ****
  
  â€˜-gnatyzâ€™
  
!      â€˜Check extra parentheses (operator precedence).â€™
  
       Extra levels of parentheses that are not required by operator
       precedence rules are flagged.  See also â€˜-gnatyxâ€™.
  
  â€˜-gnaty-â€™
  
!      â€˜Remove style check options.â€™
  
       This causes any subsequent options in the string to act as
       canceling the corresponding style check option.  To cancel maximum
       nesting level control, use the â€˜Lâ€™ parameter without any integer
!      value after that, because any digit following â€˜-â€™ in the parameter
       string of the â€˜-gnatyâ€™ option will be treated as canceling the
       indentation check.  The same is true for the â€˜Mâ€™ parameter.  â€˜yâ€™
!      and â€˜Nâ€™ parameters are not allowed after â€˜-â€™.
  
  â€˜-gnaty+â€™
  
!      â€˜Enable style check options.â€™
  
       This causes any subsequent options in the string to enable the
       corresponding style check option.  That is, it cancels the effect
--- 10102,10127 ----
  
  â€˜-gnatyzâ€™
  
!      'Check extra parentheses (operator precedence).'
  
       Extra levels of parentheses that are not required by operator
       precedence rules are flagged.  See also â€˜-gnatyxâ€™.
  
  â€˜-gnaty-â€™
  
!      'Remove style check options.'
  
       This causes any subsequent options in the string to act as
       canceling the corresponding style check option.  To cancel maximum
       nesting level control, use the â€˜Lâ€™ parameter without any integer
!      value after that, because any digit following '-' in the parameter
       string of the â€˜-gnatyâ€™ option will be treated as canceling the
       indentation check.  The same is true for the â€˜Mâ€™ parameter.  â€˜yâ€™
!      and â€˜Nâ€™ parameters are not allowed after '-'.
  
  â€˜-gnaty+â€™
  
!      'Enable style check options.'
  
       This causes any subsequent options in the string to enable the
       corresponding style check option.  That is, it cancels the effect
*************** default behavior.
*** 10219,10231 ****
       Overflow checks are always enabled by this switch.  The argument
       controls the mode, using the codes
  
!      â€˜1 = STRICTâ€™
  
            In STRICT mode, intermediate operations are always done using
            the base type, and overflow checking ensures that the result
            is within the base type range.
  
!      â€˜2 = MINIMIZEDâ€™
  
            In MINIMIZED mode, overflows in intermediate operations are
            avoided where possible by using a larger integer type for the
--- 10219,10231 ----
       Overflow checks are always enabled by this switch.  The argument
       controls the mode, using the codes
  
!      '1 = STRICT'
  
            In STRICT mode, intermediate operations are always done using
            the base type, and overflow checking ensures that the result
            is within the base type range.
  
!      '2 = MINIMIZED'
  
            In MINIMIZED mode, overflows in intermediate operations are
            avoided where possible by using a larger integer type for the
*************** default behavior.
*** 10233,10239 ****
            checking ensures that the result fits in this larger integer
            type.
  
!      â€˜3 = ELIMINATEDâ€™
  
            In ELIMINATED mode, overflows in intermediate operations are
            avoided by using multi-precision arithmetic.  In this case,
--- 10233,10239 ----
            checking ensures that the result fits in this larger integer
            type.
  
!      '3 = ELIMINATED'
  
            In ELIMINATED mode, overflows in intermediate operations are
            avoided by using multi-precision arithmetic.  In this case,
*************** File: gnat_ugn.info,  Node: Using gcc fo
*** 10324,10330 ****
       Otherwise, the output is simply the error messages, if any.  No
       object file or ALI file is generated by a syntax-only compilation.
       Also, no units other than the one specified are accessed.  For
!      example, if a unit â€˜Xâ€™ â€˜withâ€™s a unit â€˜Yâ€™, compiling unit â€˜Xâ€™ in
       syntax check only mode does not access the source file containing
       unit â€˜Yâ€™.
  
--- 10324,10330 ----
       Otherwise, the output is simply the error messages, if any.  No
       object file or ALI file is generated by a syntax-only compilation.
       Also, no units other than the one specified are accessed.  For
!      example, if a unit â€˜Xâ€™ 'with's a unit â€˜Yâ€™, compiling unit â€˜Xâ€™ in
       syntax check only mode does not access the source file containing
       unit â€˜Yâ€™.
  
*************** mode, or indicate Ada 83 compatibility m
*** 10401,10407 ****
       and Ada 2005 are upwardly compatible with Ada 83.  Thus a correct
       Ada 83 program is usually also a correct program in these later
       versions of the language standard.  For further information please
!      refer to the â€˜Compatibility and Porting Guideâ€™ chapter in the â€˜GNAT
       Reference Manualâ€™.
  
  â€˜-gnat95â€™ (Ada 95 mode)
--- 10401,10407 ----
       and Ada 2005 are upwardly compatible with Ada 83.  Thus a correct
       Ada 83 program is usually also a correct program in these later
       versions of the language standard.  For further information please
!      refer to the 'Compatibility and Porting Guide' chapter in the â€˜GNAT
       Reference Manualâ€™.
  
  â€˜-gnat95â€™ (Ada 95 mode)
*************** File: gnat_ugn.info,  Node: Character Se
*** 10471,10507 ****
       identifiers.  â€˜câ€™ is a single character indicating the character
       set, as follows:
  
!      â€˜1â€™            ISO 8859-1 (Latin-1) identifiers
                      
                      
!      â€˜2â€™            ISO 8859-2 (Latin-2) letters allowed in identifiers
                      
                      
!      â€˜3â€™            ISO 8859-3 (Latin-3) letters allowed in identifiers
                      
                      
!      â€˜4â€™            ISO 8859-4 (Latin-4) letters allowed in identifiers
                      
                      
!      â€˜5â€™            ISO 8859-5 (Cyrillic) letters allowed in identifiers
                      
                      
!      â€˜9â€™            ISO 8859-15 (Latin-9) letters allowed in identifiers
                      
                      
!      â€˜pâ€™            IBM PC letters (code page 437) allowed in identifiers
                      
                      
!      â€˜8â€™            IBM PC letters (code page 850) allowed in identifiers
                      
                      
!      â€˜fâ€™            Full upper-half codes allowed in identifiers
                      
                      
!      â€˜nâ€™            No upper-half codes allowed in identifiers
                      
                      
!      â€˜wâ€™            Wide-character codes (that is, codes greater than 255)
                      allowed in identifiers
                      
  
--- 10471,10507 ----
       identifiers.  â€˜câ€™ is a single character indicating the character
       set, as follows:
  
!      '1'            ISO 8859-1 (Latin-1) identifiers
                      
                      
!      '2'            ISO 8859-2 (Latin-2) letters allowed in identifiers
                      
                      
!      '3'            ISO 8859-3 (Latin-3) letters allowed in identifiers
                      
                      
!      '4'            ISO 8859-4 (Latin-4) letters allowed in identifiers
                      
                      
!      '5'            ISO 8859-5 (Cyrillic) letters allowed in identifiers
                      
                      
!      '9'            ISO 8859-15 (Latin-9) letters allowed in identifiers
                      
                      
!      'p'            IBM PC letters (code page 437) allowed in identifiers
                      
                      
!      '8'            IBM PC letters (code page 850) allowed in identifiers
                      
                      
!      'f'            Full upper-half codes allowed in identifiers
                      
                      
!      'n'            No upper-half codes allowed in identifiers
                      
                      
!      'w'            Wide-character codes (that is, codes greater than 255)
                      allowed in identifiers
                      
  
*************** File: gnat_ugn.info,  Node: Character Se
*** 10513,10534 ****
       Specify the method of encoding for wide characters.  â€˜eâ€™ is one of
       the following:
  
!      â€˜hâ€™            Hex encoding (brackets coding also recognized)
                      
                      
!      â€˜uâ€™            Upper half encoding (brackets encoding also recognized)
                      
                      
!      â€˜sâ€™            Shift/JIS encoding (brackets encoding also recognized)
                      
                      
!      â€˜eâ€™            EUC encoding (brackets encoding also recognized)
                      
                      
!      â€˜8â€™            UTF-8 encoding (brackets encoding also recognized)
                      
                      
!      â€˜bâ€™            Brackets encoding only (default value)
                      
  
       For full details on these encoding methods see *note Wide_Character
--- 10513,10534 ----
       Specify the method of encoding for wide characters.  â€˜eâ€™ is one of
       the following:
  
!      'h'            Hex encoding (brackets coding also recognized)
                      
                      
!      'u'            Upper half encoding (brackets encoding also recognized)
                      
                      
!      's'            Shift/JIS encoding (brackets encoding also recognized)
                      
                      
!      'e'            EUC encoding (brackets encoding also recognized)
                      
                      
!      '8'            UTF-8 encoding (brackets encoding also recognized)
                      
                      
!      'b'            Brackets encoding only (default value)
                      
  
       For full details on these encoding methods see *note Wide_Character
*************** File: gnat_ugn.info,  Node: Auxiliary Ou
*** 10662,10677 ****
       status and allows an integrated development environment to better
       react to a compilation failure.  Those exit status are:
  
!      â€˜5â€™            There was an error in at least one source file.
                      
                      
!      â€˜3â€™            At least one source file did not generate an object file.
                      
                      
!      â€˜2â€™            The compiler died unexpectedly (internal error for example).
                      
                      
!      â€˜0â€™            An object file has been generated for every source file.
                      
  
  
--- 10662,10677 ----
       status and allows an integrated development environment to better
       react to a compilation failure.  Those exit status are:
  
!      '5'            There was an error in at least one source file.
                      
                      
!      '3'            At least one source file did not generate an object file.
                      
                      
!      '2'            The compiler died unexpectedly (internal error for example).
                      
                      
!      '0'            An object file has been generated for every source file.
                      
  
  
*************** presented in subsequent sections.
*** 11401,11407 ****
  
       Generate a binder file suitable for space-constrained applications.
       When active, binder-generated objects not required for program
!      operation are no longer generated.  â€˜Warning:â€™ this option comes
       with the following limitations:
  
          * Starting the programâ€™s execution in the debugger will cause it
--- 11401,11407 ----
  
       Generate a binder file suitable for space-constrained applications.
       When active, binder-generated objects not required for program
!      operation are no longer generated.  'Warning:' this option comes
       with the following limitations:
  
          * Starting the programâ€™s execution in the debugger will cause it
*************** presented in subsequent sections.
*** 11460,11468 ****
       While the binder sizes this pool to match the number of such tasks
       defined in the application, the pool size may need to be increased
       with the â€˜-Qâ€™ switch to accommodate foreign threads registered with
!      the Light run-time.  For more information, please see the â€˜The
!      Primary and Secondary Stackâ€™ chapter in the â€˜GNAT Userâ€™s Guide
!      Supplement for Cross Platformsâ€™.
  
  â€˜-Râ€™
  
--- 11460,11468 ----
       While the binder sizes this pool to match the number of such tasks
       defined in the application, the pool size may need to be increased
       with the â€˜-Qâ€™ switch to accommodate foreign threads registered with
!      the Light run-time.  For more information, please see the 'The
!      Primary and Secondary Stack' chapter in the 'GNAT Userâ€™s Guide
!      Supplement for Cross Platforms'.
  
  â€˜-Râ€™
  
*************** generated by the binder.
*** 11861,11867 ****
  â€˜-o `file'â€™
  
       Set name of output file to â€˜fileâ€™ instead of the normal
!      â€˜b~`mainprogâ€™.adbâ€˜ default.  Note that â€˜fileâ€™ denote the Ada binder
       generated body filename.  Note that if this option is used, then
       linking must be done manually.  It is not possible to use gnatlink
       in this case, since it cannot locate the binder file.
--- 11861,11867 ----
  â€˜-o `file'â€™
  
       Set name of output file to â€˜fileâ€™ instead of the normal
!      â€˜b~`mainprogâ€™.adb' default.  Note that â€˜fileâ€™ denote the Ada binder
       generated body filename.  Note that if this option is used, then
       linking must be done manually.  It is not possible to use gnatlink
       in this case, since it cannot locate the binder file.
*************** containing the following callable routin
*** 11943,11949 ****
  If the â€˜-nâ€™ switch is given, more than one ALI file may appear on the
  command line for â€˜gnatbindâ€™.  The normal â€˜closureâ€™ calculation is
  performed for each of the specified units.  Calculating the closure
! means finding out the set of units involved by tracing â€˜withâ€™
  references.  The reason it is necessary to be able to specify more than
  one ALI file is that a given program may invoke two or more quite
  separate groups of Ada units.
--- 11943,11949 ----
  If the â€˜-nâ€™ switch is given, more than one ALI file may appear on the
  command line for â€˜gnatbindâ€™.  The normal â€˜closureâ€™ calculation is
  performed for each of the specified units.  Calculating the closure
! means finding out the set of units involved by tracing 'with'
  references.  The reason it is necessary to be able to specify more than
  one ALI file is that a given program may invoke two or more quite
  separate groups of Ada units.
*************** correctly, the two variables
*** 11999,12006 ****
  
  are declared in one of the GNAT library routines.  These variables must
  be set from the actual â€˜argcâ€™ and â€˜argvâ€™ values passed to the main
! program.  With no â€˜nâ€™ present, â€˜gnatbindâ€™ generates the C main program
! to automatically set these variables.  If the â€˜nâ€™ switch is used, there
  is no automatic way to set these variables.  If they are not set, the
  procedures in â€˜Ada.Command_Lineâ€™ will not be available, and any attempt
  to use them will raise â€˜Constraint_Errorâ€™.  If command line access is
--- 11999,12006 ----
  
  are declared in one of the GNAT library routines.  These variables must
  be set from the actual â€˜argcâ€™ and â€˜argvâ€™ values passed to the main
! program.  With no 'n' present, â€˜gnatbindâ€™ generates the C main program
! to automatically set these variables.  If the 'n' switch is used, there
  is no automatic way to set these variables.  If they are not set, the
  procedures in â€˜Ada.Command_Lineâ€™ will not be available, and any attempt
  to use them will raise â€˜Constraint_Errorâ€™.  If command line access is
*************** We provide two options that you can use
*** 12640,12646 ****
       avoid accidentally using a different compiler than the one you want
       to use, we recommend generating an explicit toolchain configuration
       file with â€˜gprconfigâ€™ and using it with â€˜gprbuildâ€™; see the
!      â€˜GPRbuild and GPR Companion Tools Userâ€™s Guideâ€™ for details.  You
       can determine from the first line of the â€˜.aliâ€™ file which version
       of GNAT built that file because it contains either â€˜GNATâ€™ or
       â€˜GNAT-LLVMâ€™.
--- 12640,12646 ----
       avoid accidentally using a different compiler than the one you want
       to use, we recommend generating an explicit toolchain configuration
       file with â€˜gprconfigâ€™ and using it with â€˜gprbuildâ€™; see the
!      'GPRbuild and GPR Companion Tools Userâ€™s Guide' for details.  You
       can determine from the first line of the â€˜.aliâ€™ file which version
       of GNAT built that file because it contains either â€˜GNATâ€™ or
       â€˜GNAT-LLVMâ€™.
*************** contained in object file â€˜demo1.oâ€™,
*** 12875,12886 ****
  compilation of demo1 has been modified (DIF). Each source file has a
  status qualifier which can be:
  
! â€˜OK (unchanged)â€™
  
       The version of the source file used for the compilation of the
       specified unit corresponds exactly to the actual source file.
  
! â€˜MOK (slightly modified)â€™
  
       The version of the source file used for the compilation of the
       specified unit differs from the actual source file but not enough
--- 12875,12886 ----
  compilation of demo1 has been modified (DIF). Each source file has a
  status qualifier which can be:
  
! 'OK (unchanged)'
  
       The version of the source file used for the compilation of the
       specified unit corresponds exactly to the actual source file.
  
! 'MOK (slightly modified)'
  
       The version of the source file used for the compilation of the
       specified unit differs from the actual source file but not enough
*************** status qualifier which can be:
*** 12888,12903 ****
       If you run â€˜gnatmakeâ€™ with the option â€˜-mâ€™ (minimal recompilation),
       it will not recompile a file marked MOK.
  
! â€˜DIF (modified)â€™
  
       No version of the source found on the path corresponds to the
       source used to build this object.
  
! â€˜??? (file not found)â€™
  
       No source file was found for this unit.
  
! â€˜HID (hidden, unchanged version not first on PATH)â€™
  
       The version of the source that corresponds exactly to the source
       used for compilation has been found on the path but it is hidden by
--- 12888,12903 ----
       If you run â€˜gnatmakeâ€™ with the option â€˜-mâ€™ (minimal recompilation),
       it will not recompile a file marked MOK.
  
! 'DIF (modified)'
  
       No version of the source found on the path corresponds to the
       source used to build this object.
  
! '??? (file not found)'
  
       No source file was found for this unit.
  
! 'HID (hidden, unchanged version not first on PATH)'
  
       The version of the source that corresponds exactly to the source
       used for compilation has been found on the path but it is hidden by
*************** You can specify the following switches t
*** 12975,12997 ****
       format giving as much as information possible on each requested
       units, including special characteristics such as:
  
!         * â€˜Preelaborableâ€™: The unit is preelaborable in the Ada sense.
  
!         * â€˜No_Elab_Codeâ€™: No elaboration code has been produced by the
            compiler for this unit.
  
!         * â€˜Pureâ€™: The unit is pure in the Ada sense.
  
!         * â€˜Elaborate_Bodyâ€™: The unit contains a pragma Elaborate_Body.
  
!         * â€˜Remote_Typesâ€™: The unit contains a pragma Remote_Types.
  
!         * â€˜Shared_Passiveâ€™: The unit contains a pragma Shared_Passive.
  
!         * â€˜Predefinedâ€™: This unit is part of the predefined environment
            and cannot be modified by the user.
  
!         * â€˜Remote_Call_Interfaceâ€™: The unit contains a pragma
            Remote_Call_Interface.
  
  
--- 12975,12997 ----
       format giving as much as information possible on each requested
       units, including special characteristics such as:
  
!         * 'Preelaborable': The unit is preelaborable in the Ada sense.
  
!         * 'No_Elab_Code': No elaboration code has been produced by the
            compiler for this unit.
  
!         * 'Pure': The unit is pure in the Ada sense.
  
!         * 'Elaborate_Body': The unit contains a pragma Elaborate_Body.
  
!         * 'Remote_Types': The unit contains a pragma Remote_Types.
  
!         * 'Shared_Passive': The unit contains a pragma Shared_Passive.
  
!         * 'Predefined': This unit is part of the predefined environment
            and cannot be modified by the user.
  
!         * 'Remote_Call_Interface': The unit contains a pragma
            Remote_Call_Interface.
  
  
*************** File: gnat_ugn.info,  Node: Introduction
*** 13226,13232 ****
  
  â€˜GDBâ€™ contains a large repertoire of commands.  See â€˜Debugging with GDBâ€™
  for extensive documentation on the use of these commands, together with
! examples of their use.  Furthermore, the command â€˜helpâ€™ invoked from
  within GDB activates a simple help facility which summarizes the
  available commands and their options.  In this section, we summarize a
  few of the most commonly used commands to give an idea of what â€˜GDBâ€™ is
--- 13226,13232 ----
  
  â€˜GDBâ€™ contains a large repertoire of commands.  See â€˜Debugging with GDBâ€™
  for extensive documentation on the use of these commands, together with
! examples of their use.  Furthermore, the command 'help' invoked from
  within GDB activates a simple help facility which summarizes the
  available commands and their options.  In this section, we summarize a
  few of the most commonly used commands to give an idea of what â€˜GDBâ€™ is
*************** you read through the following section.
*** 13237,13243 ****
     * 
       â€˜set args ARGUMENTSâ€™
  
!           â€˜argumentsâ€™ is a list of arguments to be passed to the program
            on a subsequent run command, just as though the arguments had
            been entered on a normal invocation of the program.  You do
            not need the â€˜set argsâ€™ command if the program does not
--- 13237,13243 ----
     * 
       â€˜set args ARGUMENTSâ€™
  
!           'arguments' is a list of arguments to be passed to the program
            on a subsequent run command, just as though the arguments had
            been entered on a normal invocation of the program.  You do
            not need the â€˜set argsâ€™ command if the program does not
*************** you read through the following section.
*** 13260,13266 ****
  
            This command sets a breakpoint, that is to say a point at
            which execution will halt and â€˜GDBâ€™ will await further
!           commands.  â€˜locationâ€™ is either a line number within a file,
            which you specify in the format â€˜file:linenumberâ€™, or the name
            of a subprogram.  If you request a breakpoint be set on a
            subprogram that is overloaded, either a prompt will ask you to
--- 13260,13266 ----
  
            This command sets a breakpoint, that is to say a point at
            which execution will halt and â€˜GDBâ€™ will await further
!           commands.  'location' is either a line number within a file,
            which you specify in the format â€˜file:linenumberâ€™, or the name
            of a subprogram.  If you request a breakpoint be set on a
            subprogram that is overloaded, either a prompt will ask you to
*************** callable procedure that prints the eleme
*** 13458,13464 ****
  
  File: gnat_ugn.info,  Node: Using the next Command in a Function,  Next: Stopping When Ada Exceptions Are Raised,  Prev: Calling User-Defined Subprograms,  Up: Running and Debugging Ada Programs
  
! 6.1.6 Using the â€˜nextâ€™ Command in a Function
  --------------------------------------------
  
  When you use the â€˜nextâ€™ command in a function, the current source
--- 13458,13464 ----
  
  File: gnat_ugn.info,  Node: Using the next Command in a Function,  Next: Stopping When Ada Exceptions Are Raised,  Prev: Calling User-Defined Subprograms,  Up: Running and Debugging Ada Programs
  
! 6.1.6 Using the 'next' Command in a Function
  --------------------------------------------
  
  When you use the â€˜nextâ€™ command in a function, the current source
*************** program raises selected exceptions.
*** 13498,13504 ****
       â€˜catch exception NAMEâ€™
  
            Set a catchpoint that stops execution whenever (any task in
!           the) program raises the exception â€˜nameâ€™.
  
     * 
       â€˜catch exception unhandledâ€™
--- 13498,13504 ----
       â€˜catch exception NAMEâ€™
  
            Set a catchpoint that stops execution whenever (any task in
!           the) program raises the exception 'name'.
  
     * 
       â€˜catch exception unhandledâ€™
*************** program raises selected exceptions.
*** 13512,13519 ****
  
            The â€˜info exceptionsâ€™ command permits the user to examine all
            defined exceptions within Ada programs.  With a regular
!           expression, â€˜regexpâ€™, as argument, prints out only those
!           exceptions whose name matches â€˜regexpâ€™.
  
  
  File: gnat_ugn.info,  Node: Ada Tasks,  Next: Debugging Generic Units,  Prev: Stopping When Ada Exceptions Are Raised,  Up: Running and Debugging Ada Programs
--- 13512,13519 ----
  
            The â€˜info exceptionsâ€™ command permits the user to examine all
            defined exceptions within Ada programs.  With a regular
!           expression, 'regexp', as argument, prints out only those
!           exceptions whose name matches 'regexp'.
  
  
  File: gnat_ugn.info,  Node: Ada Tasks,  Next: Debugging Generic Units,  Prev: Stopping When Ada Exceptions Are Raised,  Up: Running and Debugging Ada Programs
*************** File: gnat_ugn.info,  Node: Ada Tasks,
*** 13540,13559 ****
            itâ€™s currently running task.  The first column lists the task
            ID used to refer to tasks in the following commands.
  
!    * â€˜breakâ€™ â€˜linespecâ€™ â€˜taskâ€™ â€˜taskidâ€™, â€˜breakâ€™ â€˜linespecâ€™ â€˜taskâ€™
!      â€˜taskidâ€™ â€˜ifâ€™ â€¦
  
            These commands are like the â€˜break ... thread ...â€™.
!           â€˜linespecâ€™ specifies source lines.
  
            Use the qualifier â€˜task TASKIDâ€™ with a breakpoint command to
            specify that you only want â€˜GDBâ€™ to stop the program when that
!           particular Ada task reaches this breakpoint.  â€˜taskidâ€™ is one
            of the numeric task identifiers assigned by â€˜GDBâ€™, shown in
            the first column of the â€˜info tasksâ€™ display.
  
            If you donâ€™t specify â€˜task TASKIDâ€™ when you set a breakpoint,
!           the breakpoint applies to â€˜allâ€™ tasks of your program.
  
            You can use the â€˜taskâ€™ qualifier on conditional breakpoints as
            well; in this case, place â€˜task TASKIDâ€™ before the breakpoint
--- 13540,13559 ----
            itâ€™s currently running task.  The first column lists the task
            ID used to refer to tasks in the following commands.
  
!    * â€˜breakâ€™ 'linespec' â€˜taskâ€™ 'taskid', â€˜breakâ€™ 'linespec' â€˜taskâ€™
!      'taskid' â€˜ifâ€™ â€¦
  
            These commands are like the â€˜break ... thread ...â€™.
!           'linespec' specifies source lines.
  
            Use the qualifier â€˜task TASKIDâ€™ with a breakpoint command to
            specify that you only want â€˜GDBâ€™ to stop the program when that
!           particular Ada task reaches this breakpoint.  'taskid' is one
            of the numeric task identifiers assigned by â€˜GDBâ€™, shown in
            the first column of the â€˜info tasksâ€™ display.
  
            If you donâ€™t specify â€˜task TASKIDâ€™ when you set a breakpoint,
!           the breakpoint applies to 'all' tasks of your program.
  
            You can use the â€˜taskâ€™ qualifier on conditional breakpoints as
            well; in this case, place â€˜task TASKIDâ€™ before the breakpoint
*************** File: gnat_ugn.info,  Node: Ada Tasks,
*** 13562,13568 ****
     * â€˜task TASKNOâ€™
  
            This command allows switching to the task referred by
!           â€˜tasknoâ€™.  In particular, it allows browsing the backtrace of
            the specified task.  You should switch back to the original
            task before continuing execution; otherwise the scheduling of
            the program may be disturbed.
--- 13562,13568 ----
     * â€˜task TASKNOâ€™
  
            This command allows switching to the task referred by
!           'taskno'.  In particular, it allows browsing the backtrace of
            the specified task.  You should switch back to the original
            task before continuing execution; otherwise the scheduling of
            the program may be disturbed.
*************** You can also use â€˜gdbserverâ€™ to atta
*** 13662,13669 ****
  which case the execution of that program is suspended until you have
  established the connection between the debugger and â€˜gdbserverâ€™.
  
! For more information on how to use â€˜gdbserverâ€™, see the â€˜Using the
! gdbserver Programâ€™ section in â€˜Debugging with GDBâ€™. GNAT provides
  support for â€˜gdbserverâ€™ on x86-linux, x86-windows and x86_64-linux.
  
  
--- 13662,13669 ----
  which case the execution of that program is suspended until you have
  established the connection between the debugger and â€˜gdbserverâ€™.
  
! For more information on how to use â€˜gdbserverâ€™, see the 'Using the
! gdbserver Program' section in â€˜Debugging with GDBâ€™. GNAT provides
  support for â€˜gdbserverâ€™ on x86-linux, x86-windows and x86_64-linux.
  
  
*************** File: gnat_ugn.info,  Node: Stack Traceb
*** 13812,13818 ****
  Traceback is a mechanism to display the sequence of subprogram calls
  that leads to a specified execution point in a program.  Often (but not
  always) the execution point is an instruction at which an exception has
! been raised.  This mechanism is also known as â€˜stack unwindingâ€™ because
  it obtains its information by scanning the run-time stack and recovering
  the activation records of all active subprograms.  Stack unwinding is
  one of the most important tools for program debugging.
--- 13812,13818 ----
  Traceback is a mechanism to display the sequence of subprogram calls
  that leads to a specified execution point in a program.  Often (but not
  always) the execution point is an instruction at which an exception has
! been raised.  This mechanism is also known as 'stack unwinding' because
  it obtains its information by scanning the run-time stack and recovering
  the activation records of all active subprograms.  Stack unwinding is
  one of the most important tools for program debugging.
*************** To display a value without involving pre
*** 14278,14284 ****
            $1 = (
              tree => (...
  
! You can also obtain finer control of pretty-printers: see GDBâ€™s online
  documentation(1) for more information.
  
     ---------- Footnotes ----------
--- 14278,14284 ----
            $1 = (
              tree => (...
  
! You can also obtain finer control of pretty-printers: see GDB's online
  documentation(1) for more information.
  
     ---------- Footnotes ----------
*************** experiment to find the best level for yo
*** 14694,14708 ****
  
  Since the precise set of optimizations done at each level will vary from
  release to release (and sometime from target to target), it is best to
! think of the optimization settings in general terms.  See the â€˜Options
! That Control Optimizationâ€™ section in â€˜Using the GNU Compiler Collection
  (GCC)â€™ for details about the â€˜-Oâ€™ settings and a number of â€˜-fâ€™ switches
  that individually enable or disable specific optimizations.
  
  Unlike some other compilation systems, GCC has been tested extensively
  at all optimization levels.  There are some bugs which appear only with
  optimization turned on, but there have also been bugs which show up only
! in â€˜unoptimizedâ€™ code.  Selecting a lower level of optimization does not
  improve the reliability of the code generator, which in practice is
  highly reliable at all optimization levels.
  
--- 14694,14708 ----
  
  Since the precise set of optimizations done at each level will vary from
  release to release (and sometime from target to target), it is best to
! think of the optimization settings in general terms.  See the 'Options
! That Control Optimization' section in â€˜Using the GNU Compiler Collection
  (GCC)â€™ for details about the â€˜-Oâ€™ settings and a number of â€˜-fâ€™ switches
  that individually enable or disable specific optimizations.
  
  Unlike some other compilation systems, GCC has been tested extensively
  at all optimization levels.  There are some bugs which appear only with
  optimization turned on, but there have also been bugs which show up only
! in 'unoptimized' code.  Selecting a lower level of optimization does not
  improve the reliability of the code generator, which in practice is
  highly reliable at all optimization levels.
  
*************** invalidate some of the debugging data.
*** 14736,14754 ****
  certain anomalous situations that may arise while debugging optimized
  code.  These are the most common cases:
  
!    * â€˜The â€˜hopping Program Counterâ€™:â€™ Repeated â€˜stepâ€™ or â€˜nextâ€™ commands
       show the PC bouncing back and forth in the code.  This may result
       from any of the following optimizations:
  
!         - â€˜Common subexpression elimination:â€™ using a single instance of
            code for a quantity that the source computes several times.
            As a result you may not be able to stop on what looks like a
            statement.
  
!         - â€˜Invariant code motion:â€™ moving an expression that does not
            change within a loop to the beginning of the loop.
  
!         - â€˜Instruction scheduling:â€™ moving instructions so as to overlap
            loads and stores (typically) with other code or in general to
            move computations of values closer to their uses.  Often this
            causes you to pass an assignment statement without the
--- 14736,14754 ----
  certain anomalous situations that may arise while debugging optimized
  code.  These are the most common cases:
  
!    * 'The â€˜hopping Program Counterâ€™:' Repeated â€˜stepâ€™ or â€˜nextâ€™ commands
       show the PC bouncing back and forth in the code.  This may result
       from any of the following optimizations:
  
!         - 'Common subexpression elimination:' using a single instance of
            code for a quantity that the source computes several times.
            As a result you may not be able to stop on what looks like a
            statement.
  
!         - 'Invariant code motion:' moving an expression that does not
            change within a loop to the beginning of the loop.
  
!         - 'Instruction scheduling:' moving instructions so as to overlap
            loads and stores (typically) with other code or in general to
            move computations of values closer to their uses.  Often this
            causes you to pass an assignment statement without the
*************** code.  These are the most common cases:
*** 14757,14771 ****
            breakpoint on a line of code and then stepping over it may,
            therefore, not always cause all the expected side-effects.
  
!    * â€˜The â€˜big leapâ€™:â€™ More commonly known as â€˜cross-jumpingâ€™, in which
       two identical pieces of code are merged and the program counter
       suddenly jumps to a statement that is not supposed to be executed,
       simply because it (and the code following) translates to the same
!      thing as the code that â€˜wasâ€™ supposed to be executed.  This effect
       is typically seen in sequences that end in a jump, such as a
       â€˜gotoâ€™, a â€˜returnâ€™, or a â€˜breakâ€™ in a C â€˜switchâ€™ statement.
  
!    * â€˜The â€˜roving variableâ€™:â€™ The symptom is an unexpected value in a
       variable.  There are various reasons for this effect:
  
          - In a subprogram prologue, a parameter may not yet have been
--- 14757,14771 ----
            breakpoint on a line of code and then stepping over it may,
            therefore, not always cause all the expected side-effects.
  
!    * 'The â€˜big leapâ€™:' More commonly known as 'cross-jumping', in which
       two identical pieces of code are merged and the program counter
       suddenly jumps to a statement that is not supposed to be executed,
       simply because it (and the code following) translates to the same
!      thing as the code that 'was' supposed to be executed.  This effect
       is typically seen in sequences that end in a jump, such as a
       â€˜gotoâ€™, a â€˜returnâ€™, or a â€˜breakâ€™ in a C â€˜switchâ€™ statement.
  
!    * 'The â€˜roving variableâ€™:' The symptom is an unexpected value in a
       variable.  There are various reasons for this effect:
  
          - In a subprogram prologue, a parameter may not yet have been
*************** code.  These are the most common cases:
*** 14793,14799 ****
       those other values); or re-running the code and stopping a little
       earlier (perhaps before the call) and stepping to better see how
       the variable obtained the value in question; or continuing to step
!      â€˜fromâ€™ the point of the strange value to see if code motion had
       simply moved the variableâ€™s assignments later.
  
  In light of such anomalies, a recommended technique is to use â€˜-O0â€™
--- 14793,14799 ----
       those other values); or re-running the code and stopping a little
       earlier (perhaps before the call) and stepping to better see how
       the variable obtained the value in question; or continuing to step
!      'from' the point of the strange value to see if code motion had
       simply moved the variableâ€™s assignments later.
  
  In light of such anomalies, a recommended technique is to use â€˜-O0â€™
*************** following conditions are met:
*** 14825,14831 ****
       â€˜-O2â€™ is specified; optimization level â€˜-O3â€™ is specified; or the
       subprogram is an expression function.
  
! Calls to subprograms in â€˜withâ€™ed units are normally not inlined.  To
  achieve inlining in those case (that is, replacement of the call by the
  code in the body of the subprogram), the following conditions must all
  be true:
--- 14825,14831 ----
       â€˜-O2â€™ is specified; optimization level â€˜-O3â€™ is specified; or the
       subprogram is an expression function.
  
! Calls to subprograms in 'with'ed units are normally not inlined.  To
  achieve inlining in those case (that is, replacement of the call by the
  code in the body of the subprogram), the following conditions must all
  be true:
*************** in this category for the GCC back end ar
*** 15087,15093 ****
  various target-specific â€˜-mâ€™ options (in particular, it has been
  observed that â€˜-march=xxxâ€™ can significantly improve performance on
  appropriate machines).  For full details of these switches, see the
! â€˜Submodel Optionsâ€™ section in the â€˜Hardware Models and Configurationsâ€™
  chapter of â€˜Using the GNU Compiler Collection (GCC)â€™.
  
  
--- 15087,15093 ----
  various target-specific â€˜-mâ€™ options (in particular, it has been
  observed that â€˜-march=xxxâ€™ can significantly improve performance on
  appropriate machines).  For full details of these switches, see the
! 'Submodel Options' section in the 'Hardware Models and Configurations'
  chapter of â€˜Using the GNU Compiler Collection (GCC)â€™.
  
  
*************** If you must use â€˜Text_IOâ€™, note that
*** 15502,15508 ****
  standard error files is unbuffered by default (this provides better
  behavior when output statements are used for debugging or if the
  progress of a program is observed by tracking the output, e.g.  by using
! the Unix â€˜tail -fâ€™ command to watch redirected output).
  
  If youâ€™re generating large volumes of output with â€˜Text_IOâ€™ and
  performance is an important factor, use a designated file instead of the
--- 15502,15508 ----
  standard error files is unbuffered by default (this provides better
  behavior when output statements are used for debugging or if the
  progress of a program is observed by tracking the output, e.g.  by using
! the Unix 'tail -f' command to watch redirected output).
  
  If youâ€™re generating large volumes of output with â€˜Text_IOâ€™ and
  performance is an important factor, use a designated file instead of the
*************** outside assertions.
*** 15758,15764 ****
  
  The three modes are:
  
!    * â€˜Use base type for intermediate operationsâ€™ (â€˜STRICTâ€™)
  
       In this mode, all intermediate results for predefined arithmetic
       operators are computed using the base type, and the result must be
--- 15758,15764 ----
  
  The three modes are:
  
!    * 'Use base type for intermediate operations' (â€˜STRICTâ€™)
  
       In this mode, all intermediate results for predefined arithmetic
       operators are computed using the base type, and the result must be
*************** The three modes are:
*** 15767,15773 ****
       execution is erroneous (if overflow checks are suppressed).  This
       is the normal default mode.
  
!    * â€˜Most intermediate overflows avoidedâ€™ (â€˜MINIMIZEDâ€™)
  
       In this mode, the compiler attempts to avoid intermediate overflows
       by using a larger integer type, typically â€˜Long_Long_Integerâ€™, as
--- 15767,15773 ----
       execution is erroneous (if overflow checks are suppressed).  This
       is the normal default mode.
  
!    * 'Most intermediate overflows avoided' (â€˜MINIMIZEDâ€™)
  
       In this mode, the compiler attempts to avoid intermediate overflows
       by using a larger integer type, typically â€˜Long_Long_Integerâ€™, as
*************** The three modes are:
*** 15793,15803 ****
       final result is in range and the precondition is â€˜Trueâ€™ from a
       mathematical point of view.  In such a case, operating in this
       mode, an overflow occurs for the intermediate computation (which is
!      why this mode says â€˜mostâ€™ intermediate overflows are avoided).  In
       this case, an exception is raised if overflow checks are enabled,
       and the execution is erroneous if overflow checks are suppressed.
  
!    * â€˜All intermediate overflows avoidedâ€™ (â€˜ELIMINATEDâ€™)
  
       In this mode, the compiler avoids all intermediate overflows by
       using arbitrary precision arithmetic as required.  In this mode,
--- 15793,15803 ----
       final result is in range and the precondition is â€˜Trueâ€™ from a
       mathematical point of view.  In such a case, operating in this
       mode, an overflow occurs for the intermediate computation (which is
!      why this mode says 'most' intermediate overflows are avoided).  In
       this case, an exception is raised if overflow checks are enabled,
       and the execution is erroneous if overflow checks are suppressed.
  
!    * 'All intermediate overflows avoided' (â€˜ELIMINATEDâ€™)
  
       In this mode, the compiler avoids all intermediate overflows by
       using arbitrary precision arithmetic as required.  In this mode,
*************** This feature depends on Ada 2012 aspect
*** 15995,16002 ****
  for versions 7.0.1 and later of GNAT. The GNAT-specific aspect
  â€˜Dimension_Systemâ€™ allows you to define a system of units; the aspect
  â€˜Dimensionâ€™ allows you to declare dimensioned quantities within a given
! system.  (These aspects are described in the â€˜Implementation Defined
! Aspectsâ€™ chapter of the â€˜GNAT Reference Manualâ€™).
  
  The major advantage of this model is that it does not require the
  declaration of multiple operators for all possible combinations of
--- 15995,16002 ----
  for versions 7.0.1 and later of GNAT. The GNAT-specific aspect
  â€˜Dimension_Systemâ€™ allows you to define a system of units; the aspect
  â€˜Dimensionâ€™ allows you to declare dimensioned quantities within a given
! system.  (These aspects are described in the 'Implementation Defined
! Aspects' chapter of the â€˜GNAT Reference Manualâ€™).
  
  The major advantage of this model is that it does not require the
  declaration of multiple operators for all possible combinations of
*************** the output includes:
*** 16124,16138 ****
  
            Final velocity: 98.10 m.s**(-1)
  
! The type â€˜Mks_Typeâ€™ is said to be a â€˜dimensionable typeâ€™ since it has a
  â€˜Dimension_Systemâ€™ aspect, and the subtypes â€˜Lengthâ€™, â€˜Massâ€™, etc., are
! said to be â€˜dimensioned subtypesâ€™ since each one has a â€˜Dimensionâ€™
  aspect.
  
  The â€˜Dimensionâ€™ aspect of a dimensioned subtype â€˜Sâ€™ defines a mapping
  from the base typeâ€™s Unit_Names to integer (or, more generally,
! rational) values.  This mapping is the â€˜dimension vectorâ€™ (also referred
! to as the â€˜dimensionalityâ€™) for that subtype, denoted by â€˜DV(S)â€™, and
  thus for each object of that subtype.  Intuitively, the value specified
  for each â€˜Unit_Nameâ€™ is the exponent associated with that unit; a zero
  value means that the unit is not used.  For example:
--- 16124,16138 ----
  
            Final velocity: 98.10 m.s**(-1)
  
! The type â€˜Mks_Typeâ€™ is said to be a 'dimensionable type' since it has a
  â€˜Dimension_Systemâ€™ aspect, and the subtypes â€˜Lengthâ€™, â€˜Massâ€™, etc., are
! said to be 'dimensioned subtypes' since each one has a â€˜Dimensionâ€™
  aspect.
  
  The â€˜Dimensionâ€™ aspect of a dimensioned subtype â€˜Sâ€™ defines a mapping
  from the base typeâ€™s Unit_Names to integer (or, more generally,
! rational) values.  This mapping is the 'dimension vector' (also referred
! to as the 'dimensionality') for that subtype, denoted by â€˜DV(S)â€™, and
  thus for each object of that subtype.  Intuitively, the value specified
  for each â€˜Unit_Nameâ€™ is the exponent associated with that unit; a zero
  value means that the unit is not used.  For example:
*************** dimension vectors of its components, wit
*** 16153,16178 ****
  checks that help prevent mismatches such as using an â€˜Accelerationâ€™
  where a â€˜Lengthâ€™ is required.
  
! The dimension vector of the result of an arithmetic expression â€˜exprâ€™,
  or â€˜DV(EXPR)â€™, is defined as follows, assuming conventional mathematical
  definitions for the vector operations that are used:
  
!    * If â€˜exprâ€™ is of the type â€˜universal_realâ€™, or is not of a
!      dimensioned subtype, then â€˜exprâ€™ is dimensionless; â€˜DV(EXPR)â€™ is
       the empty vector.
  
!    * â€˜DV(OP EXPR)â€™, where â€˜opâ€™ is a unary operator, is â€˜DV(EXPR)â€™
  
!    * â€˜DV(EXPR1 OP EXPR2)â€™, where â€˜opâ€™ is â€œ+â€� or â€œ-â€�, is â€˜DV(EXPR1)â€™
       provided that â€˜DV(EXPR1)â€™ = â€˜DV(EXPR2)â€™.  If this condition is not
       met then the construct is illegal.
  
     * â€˜DV(EXPR1 * EXPR2)â€™ is â€˜DV(EXPR1)â€™ + â€˜DV(EXPR2)â€™, and â€˜DV(EXPR1 /
       EXPR2)â€™ = â€˜DV(EXPR1)â€™ - â€˜DV(EXPR2)â€™.  In this context if one of the
!      â€˜exprâ€™s is dimensionless then its empty dimension vector is treated
       as â€˜(others => 0)â€™.
  
!    * â€˜DV(EXPR ** POWER)â€™ is â€˜powerâ€™ * â€˜DV(EXPR)â€™, provided that â€˜powerâ€™
       is a static rational value.  If this condition is not met then the
       construct is illegal.
  
--- 16153,16178 ----
  checks that help prevent mismatches such as using an â€˜Accelerationâ€™
  where a â€˜Lengthâ€™ is required.
  
! The dimension vector of the result of an arithmetic expression 'expr',
  or â€˜DV(EXPR)â€™, is defined as follows, assuming conventional mathematical
  definitions for the vector operations that are used:
  
!    * If 'expr' is of the type 'universal_real', or is not of a
!      dimensioned subtype, then 'expr' is dimensionless; â€˜DV(EXPR)â€™ is
       the empty vector.
  
!    * â€˜DV(OP EXPR)â€™, where 'op' is a unary operator, is â€˜DV(EXPR)â€™
  
!    * â€˜DV(EXPR1 OP EXPR2)â€™, where 'op' is â€œ+â€� or â€œ-â€�, is â€˜DV(EXPR1)â€™
       provided that â€˜DV(EXPR1)â€™ = â€˜DV(EXPR2)â€™.  If this condition is not
       met then the construct is illegal.
  
     * â€˜DV(EXPR1 * EXPR2)â€™ is â€˜DV(EXPR1)â€™ + â€˜DV(EXPR2)â€™, and â€˜DV(EXPR1 /
       EXPR2)â€™ = â€˜DV(EXPR1)â€™ - â€˜DV(EXPR2)â€™.  In this context if one of the
!      'expr's is dimensionless then its empty dimension vector is treated
       as â€˜(others => 0)â€™.
  
!    * â€˜DV(EXPR ** POWER)â€™ is 'power' * â€˜DV(EXPR)â€™, provided that 'power'
       is a static rational value.  If this condition is not met then the
       construct is illegal.
  
*************** The dimension vector of a type conversio
*** 16202,16209 ****
  follows, based on the nature of â€˜Tâ€™:
  
     * If â€˜Tâ€™ is a dimensioned subtype, then â€˜DV(T(EXPR))â€™ is â€˜DV(T)â€™
!      provided that either â€˜exprâ€™ is dimensionless or â€˜DV(T)â€™ =
!      â€˜DV(EXPR)â€™.  The conversion is illegal if â€˜exprâ€™ is dimensioned and
       â€˜DV(EXPR)â€™ /= â€˜DV(T)â€™.  Note that vector equality does not require
       that the corresponding Unit_Names be the same.
  
--- 16202,16209 ----
  follows, based on the nature of â€˜Tâ€™:
  
     * If â€˜Tâ€™ is a dimensioned subtype, then â€˜DV(T(EXPR))â€™ is â€˜DV(T)â€™
!      provided that either 'expr' is dimensionless or â€˜DV(T)â€™ =
!      â€˜DV(EXPR)â€™.  The conversion is illegal if 'expr' is dimensioned and
       â€˜DV(EXPR)â€™ /= â€˜DV(T)â€™.  Note that vector equality does not require
       that the corresponding Unit_Names be the same.
  
*************** follows, based on the nature of â€˜Tâ€™:
*** 16214,16222 ****
       length in meters to a length in inches (with a suitable conversion
       factor) but not, for example, to a mass in pounds.
  
!    * If â€˜Tâ€™ is the base type for â€˜exprâ€™ (and the dimensionless root type
       of the dimension system), then â€˜DV(T(EXPR))â€™ is â€˜DV(expr)â€™.  Thus,
!      if â€˜exprâ€™ is of a dimensioned subtype of â€˜Tâ€™, the conversion may be
       regarded as a â€œview conversionâ€� that preserves dimensionality.
  
       This rule means you can write generic code that can be instantiated
--- 16214,16222 ----
       length in meters to a length in inches (with a suitable conversion
       factor) but not, for example, to a mass in pounds.
  
!    * If â€˜Tâ€™ is the base type for 'expr' (and the dimensionless root type
       of the dimension system), then â€˜DV(T(EXPR))â€™ is â€˜DV(expr)â€™.  Thus,
!      if 'expr' is of a dimensioned subtype of â€˜Tâ€™, the conversion may be
       regarded as a â€œview conversionâ€� that preserves dimensionality.
  
       This rule means you can write generic code that can be instantiated
*************** four columns:
*** 16380,16392 ****
  
  where:
  
!    * â€˜Indexâ€™ is a number associated with each task.
  
!    * â€˜Task Nameâ€™ is the name of the task analyzed.
  
!    * â€˜Stack Sizeâ€™ is the maximum size for the stack.
  
!    * â€˜Stack Usageâ€™ is the measure done by the stack analyzer.  In order
       to prevent overflow, the stack is not entirely analyzed, and itâ€™s
       not possible to know exactly how much has actually been used.
  
--- 16380,16392 ----
  
  where:
  
!    * 'Index' is a number associated with each task.
  
!    * 'Task Name' is the name of the task analyzed.
  
!    * 'Stack Size' is the maximum size for the stack.
  
!    * 'Stack Usage' is the measure done by the stack analyzer.  In order
       to prevent overflow, the stack is not entirely analyzed, and itâ€™s
       not possible to know exactly how much has actually been used.
  
*************** the underlying operating system.
*** 16649,16658 ****
  
  For exception handling, either or both of two models are supplied:
  
!    * â€˜Zero-Cost Exceptionsâ€™ (â€œZCXâ€�), which uses binder-generated tables
       that are interrogated at run time to locate a handler.
  
!    * â€˜setjmp / longjmpâ€™ (â€˜SJLJâ€™), which uses dynamically-set data to
       establish the set of handlers
  
  Most programs should experience a substantial speed improvement by being
--- 16649,16658 ----
  
  For exception handling, either or both of two models are supplied:
  
!    * 'Zero-Cost Exceptions' (â€œZCXâ€�), which uses binder-generated tables
       that are interrogated at run time to locate a handler.
  
!    * 'setjmp / longjmp' (â€˜SJLJâ€™), which uses dynamically-set data to
       establish the set of handlers
  
  Most programs should experience a substantial speed improvement by being
*************** and contain a complete source and binary
*** 16718,16724 ****
  description below explains the differences between the different
  libraries in terms of their thread support.
  
! The default run-time library (when GNAT is installed) is â€˜rts-nativeâ€™.
  This default run-time is selected by the means of soft links.  For
  example on x86-linux:
  
--- 16718,16724 ----
  description below explains the differences between the different
  libraries in terms of their thread support.
  
! The default run-time library (when GNAT is installed) is 'rts-native'.
  This default run-time is selected by the means of soft links.  For
  example on x86-linux:
  
*************** example on x86-linux:
*** 16740,16746 ****
                     Run-Time Library Directory Structure
          (Upper-case names and dotted/dashed arrows represent soft links)
  
! If you want to select the â€˜rts-sjljâ€™ library on a permanent basis, you
  can modify these soft links with the following commands:
  
            $ cd $target
--- 16740,16746 ----
                     Run-Time Library Directory Structure
          (Upper-case names and dotted/dashed arrows represent soft links)
  
! If you want to select the 'rts-sjlj' library on a permanent basis, you
  can modify these soft links with the following commands:
  
            $ cd $target
*************** Independent.
*** 16819,16829 ****
  If you are not interested in building PIE binaries, you can simply turn
  this feature off by first compiling your code with â€˜-fno-pieâ€™ and then
  by linking with â€˜-no-pieâ€™ (note the subtle but important difference in
! the names of the switches â€“ the linker switch does â€˜notâ€™ have an â€˜fâ€™
  after the dash!).  When using gprbuild, you do this by updating the
! â€˜Required_Switchesâ€™ attribute in package â€˜Compilerâ€™ and, depending on
! your type of project, either attribute â€˜Switchesâ€™ or attribute
! â€˜Library_Optionsâ€™ in package â€˜Linkerâ€™.
  
  On the other hand, if you would like to build PIE binaries and you are
  getting the error above, a quick and easy workaround to allow linking to
--- 16819,16829 ----
  If you are not interested in building PIE binaries, you can simply turn
  this feature off by first compiling your code with â€˜-fno-pieâ€™ and then
  by linking with â€˜-no-pieâ€™ (note the subtle but important difference in
! the names of the switches â€“ the linker switch does 'not' have an â€˜fâ€™
  after the dash!).  When using gprbuild, you do this by updating the
! 'Required_Switches' attribute in package â€˜Compilerâ€™ and, depending on
! your type of project, either attribute 'Switches' or attribute
! 'Library_Options' in package â€˜Linkerâ€™.
  
  On the other hand, if you would like to build PIE binaries and you are
  getting the error above, a quick and easy workaround to allow linking to
*************** suffix) has the following structure:
*** 17570,17585 ****
               ``symbol2``
               ...
  
! â€˜LIBRARY nameâ€™
  
       This section, which is optional, gives the name of the DLL.
  
! â€˜DESCRIPTION stringâ€™
  
       This section, which is optional, gives a description string that
       will be embedded in the import library.
  
! â€˜EXPORTSâ€™
  
       This section gives the list of exported symbols (procedures,
       functions or variables).  For example, in the case of â€˜API.dllâ€™ the
--- 17570,17585 ----
               ``symbol2``
               ...
  
! 'LIBRARY name'
  
       This section, which is optional, gives the name of the DLL.
  
! 'DESCRIPTION string'
  
       This section, which is optional, gives a description string that
       will be embedded in the import library.
  
! 'EXPORTS'
  
       This section gives the list of exported symbols (procedures,
       functions or variables).  For example, in the case of â€˜API.dllâ€™ the
*************** File: gnat_ugn.info,  Node: Building DLL
*** 17670,17677 ****
  ..............................................
  
  There is nothing specific to Windows in the build process.  See the
! â€˜Library Projectsâ€™ section in the â€˜GNAT Project Managerâ€™ chapter of the
! â€˜GPRbuild Userâ€™s Guideâ€™.
  
  Due to a system limitation, you cannot create threads under Windows when
  inside the â€˜DllMainâ€™ routine which is used for auto-initialization of
--- 17670,17677 ----
  ..............................................
  
  There is nothing specific to Windows in the build process.  See the
! 'Library Projects' section in the 'GNAT Project Manager' chapter of the
! 'GPRbuild Userâ€™s Guide'.
  
  Due to a system limitation, you cannot create threads under Windows when
  inside the â€˜DllMainâ€™ routine which is used for auto-initialization of
*************** as non-Ada applications are as follows:
*** 17774,17781 ****
  Note that a relocatable DLL stripped using the â€˜stripâ€™ binutils tool is
  no longer relocatable.  To build a DLL without debug information, pass
  â€˜-largs -sâ€™ to â€˜gnatdllâ€™.  This restriction does not apply to a DLL
! built using a Library Project.  See the â€˜Library Projectsâ€™ section in
! the â€˜GNAT Project Managerâ€™ chapter of the â€˜GPRbuild Userâ€™s Guideâ€™.
  
  * Menu:
  
--- 17774,17781 ----
  Note that a relocatable DLL stripped using the â€˜stripâ€™ binutils tool is
  no longer relocatable.  To build a DLL without debug information, pass
  â€˜-largs -sâ€™ to â€˜gnatdllâ€™.  This restriction does not apply to a DLL
! built using a Library Project.  See the 'Library Projects' section in
! the 'GNAT Project Manager' chapter of the 'GPRbuild Userâ€™s Guide'.
  
  * Menu:
  
*************** it:
*** 18450,18458 ****
            (gdb) start
  
       This step is required to be able to set a breakpoint inside the
!      DLL. Until the program is run, the DLL is not loaded.  This has the
!      consequence that the DLL debugging information is also not loaded,
!      so it is not possible to set a breakpoint in the DLL.
  
     * Set a breakpoint inside the DLL
  
--- 18450,18458 ----
            (gdb) start
  
       This step is required to be able to set a breakpoint inside the
!      DLL.  Until the program is run, the DLL is not loaded.  This has
!      the consequence that the DLL debugging information is also not
!      loaded, so it is not possible to set a breakpoint in the DLL.
  
     * Set a breakpoint inside the DLL
  
*************** in the code of the DLL to allow this to
*** 18545,18551 ****
  
            $ main
  
!    * Use the Windows â€˜Task Managerâ€™ to find the process ID. Letâ€™s say
       that the process PID for â€˜main.exeâ€™ is 208.
  
     * Launch gdb.
--- 18545,18551 ----
  
            $ main
  
!    * Use the Windows 'Task Manager' to find the process ID. Letâ€™s say
       that the process PID for â€˜main.exeâ€™ is 208.
  
     * Launch gdb.
*************** File: gnat_ugn.info,  Node: Setting Stac
*** 18582,18588 ****
  You can specify the program stack size at link time.  On most versions
  of Windows, starting with XP, this is mostly useful to set the size of
  the main stack (environment task).  The other task stacks are set with
! pragma Storage_Size or with the â€˜gnatbind -dâ€™ command.
  
  Since very old versions of Windows (2000, NT4, etc.)  donâ€™t allow
  setting the reserve size of individual tasks, the link-time stack size
--- 18582,18588 ----
  You can specify the program stack size at link time.  On most versions
  of Windows, starting with XP, this is mostly useful to set the size of
  the main stack (environment task).  The other task stacks are set with
! pragma Storage_Size or with the 'gnatbind -d' command.
  
  Since very old versions of Windows (2000, NT4, etc.)  donâ€™t allow
  setting the reserve size of individual tasks, the link-time stack size
*************** cross-platforms applications.  This bind
*** 18677,18683 ****
  the Win32 API does not provide the necessary support for all POSIX APIs.
  
  To use the â€˜wPOSIXâ€™ binding, you need to use a project file and add a
! single â€˜withâ€™ clause to give you full access to the â€˜wPOSIXâ€™ binding
  sources and ensure that the proper libraries are passed to the linker.
  
            with "wposix";
--- 18677,18683 ----
  the Win32 API does not provide the necessary support for all POSIX APIs.
  
  To use the â€˜wPOSIXâ€™ binding, you need to use a project file and add a
! single 'with' clause to give you full access to the â€˜wPOSIXâ€™ binding
  sources and ensure that the proper libraries are passed to the linker.
  
            with "wposix";
*************** File: gnat_ugn.info,  Node: Elaboration
*** 19531,19544 ****
  9.1 Elaboration Code
  ====================
  
! Ada defines the term â€˜executionâ€™ as the process by which a construct
  achieves its run-time effect.  This process is also referred to as
! â€˜elaborationâ€™ for declarations and â€˜evaluationâ€™ for expressions.
  
  The execution model in Ada allows for certain sections of an Ada program
  to be executed prior to execution of the program itself, primarily with
  the intent of initializing data.  These sections are referred to as
! â€˜elaboration codeâ€™.  Elaboration code is executed as follows:
  
     * All partitions of an Ada program are executed in parallel with one
       another, possibly in a separate address space and possibly on a
--- 19531,19544 ----
  9.1 Elaboration Code
  ====================
  
! Ada defines the term 'execution' as the process by which a construct
  achieves its run-time effect.  This process is also referred to as
! 'elaboration' for declarations and 'evaluation' for expressions.
  
  The execution model in Ada allows for certain sections of an Ada program
  to be executed prior to execution of the program itself, primarily with
  the intent of initializing data.  These sections are referred to as
! 'elaboration code'.  Elaboration code is executed as follows:
  
     * All partitions of an Ada program are executed in parallel with one
       another, possibly in a separate address space and possibly on a
*************** the intent of initializing data.  These
*** 19549,19555 ****
  
     * The environment task executes all elaboration code (if available)
       for all units within that partition.  This code is said to be
!      executed at â€˜elaboration timeâ€™.
  
     * The environment task executes the Ada program (if available) for
       that partition.
--- 19549,19555 ----
  
     * The environment task executes all elaboration code (if available)
       for all units within that partition.  This code is said to be
!      executed at 'elaboration time'.
  
     * The environment task executes the Ada program (if available) for
       that partition.
*************** the intent of initializing data.  These
*** 19557,19571 ****
  In addition to the Ada terminology, this appendix defines the following
  terms:
  
!    * â€˜Invocationâ€™
  
       The act of calling a subprogram, instantiating a generic, or
       activating a task.
  
!    * â€˜Scenarioâ€™
  
       A construct that is elaborated or invoked by elaboration code is
!      referred to as an â€˜elaboration scenarioâ€™ or simply a â€˜scenarioâ€™.
       GNAT recognizes the following scenarios:
  
          - â€˜'Accessâ€™ of entries, operators, and subprograms
--- 19557,19571 ----
  In addition to the Ada terminology, this appendix defines the following
  terms:
  
!    * 'Invocation'
  
       The act of calling a subprogram, instantiating a generic, or
       activating a task.
  
!    * 'Scenario'
  
       A construct that is elaborated or invoked by elaboration code is
!      referred to as an 'elaboration scenario' or simply a 'scenario'.
       GNAT recognizes the following scenarios:
  
          - â€˜'Accessâ€™ of entries, operators, and subprograms
*************** terms:
*** 19576,19585 ****
  
          - Instantiations of generic templates
  
!    * â€˜Targetâ€™
  
       A construct elaborated by a scenario is referred to as an
!      â€˜elaboration targetâ€™ or simply a â€˜targetâ€™.  GNAT recognizes the
       following targets:
  
          - For â€˜'Accessâ€™ of entries, operators, and subprograms, the
--- 19576,19585 ----
  
          - Instantiations of generic templates
  
!    * 'Target'
  
       A construct elaborated by a scenario is referred to as an
!      'elaboration target' or simply a 'target'.  GNAT recognizes the
       following targets:
  
          - For â€˜'Accessâ€™ of entries, operators, and subprograms, the
*************** terms:
*** 19595,19601 ****
  
  Elaboration code may appear in two distinct contexts:
  
!    * â€˜Library levelâ€™
  
       A scenario appears at the library level when it is encapsulated by
       a package [body] compilation unit, ignoring any other package
--- 19595,19601 ----
  
  Elaboration code may appear in two distinct contexts:
  
!    * 'Library level'
  
       A scenario appears at the library level when it is encapsulated by
       a package [body] compilation unit, ignoring any other package
*************** Elaboration code may appear in two disti
*** 19617,19623 ****
       â€˜Server.Funcâ€™ will be invoked when the spec of unit â€˜Clientâ€™ is
       elaborated.
  
!    * â€˜Package body statementsâ€™
  
       A scenario appears within the statement sequence of a package body
       when it is bounded by the region starting from the â€˜beginâ€™ keyword
--- 19617,19623 ----
       â€˜Server.Funcâ€™ will be invoked when the spec of unit â€˜Clientâ€™ is
       elaborated.
  
!    * 'Package body statements'
  
       A scenario appears within the statement sequence of a package body
       when it is bounded by the region starting from the â€˜beginâ€™ keyword
*************** File: gnat_ugn.info,  Node: Elaboration
*** 19645,19651 ****
  =====================
  
  The sequence by which the elaboration code of all units within a
! partition is executed is referred to as â€˜elaboration orderâ€™.
  
  Within a single unit, elaboration code is executed in sequential order.
  
--- 19645,19651 ----
  =====================
  
  The sequence by which the elaboration code of all units within a
! partition is executed is referred to as 'elaboration order'.
  
  Within a single unit, elaboration code is executed in sequential order.
  
*************** is as follows:
*** 19681,19687 ****
  The elaboration order of all units within a partition depends on the
  following factors:
  
!    * â€˜withâ€™ed units
  
     * parent units
  
--- 19681,19687 ----
  The elaboration order of all units within a partition depends on the
  following factors:
  
!    * 'with'ed units
  
     * parent units
  
*************** structure:
*** 19718,19724 ****
            procedure Main is begin null; end Main;
  
  The following elaboration order exhibits a fundamental problem referred
! to as â€˜access-before-elaborationâ€™ or simply â€˜ABEâ€™.
  
            spec of Server
            spec of Client
--- 19718,19724 ----
            procedure Main is begin null; end Main;
  
  The following elaboration order exhibits a fundamental problem referred
! to as 'access-before-elaboration' or simply 'ABE'.
  
            spec of Server
            spec of Client
*************** can be successfully elaborated.
*** 19749,19755 ****
  Ada states that a total elaboration order must exist, but it does not
  define what this order is.  A compiler is thus tasked with choosing a
  suitable elaboration order which satisfies the dependencies imposed by
! â€˜withâ€™ clauses, unit categorization, elaboration-control pragmas, and
  invocations performed in elaboration code.  Ideally, an order that
  avoids ABE problems should be chosen, however a compiler may not always
  find such an order due to complications with respect to control and data
--- 19749,19755 ----
  Ada states that a total elaboration order must exist, but it does not
  define what this order is.  A compiler is thus tasked with choosing a
  suitable elaboration order which satisfies the dependencies imposed by
! 'with' clauses, unit categorization, elaboration-control pragmas, and
  invocations performed in elaboration code.  Ideally, an order that
  avoids ABE problems should be chosen, however a compiler may not always
  find such an order due to complications with respect to control and data
*************** File: gnat_ugn.info,  Node: Checking the
*** 19764,19806 ****
  To avoid placing the entire elaboration-order burden on the programmer,
  Ada provides three lines of defense:
  
!    * â€˜Static semanticsâ€™
  
       Static semantic rules restrict the possible choice of elaboration
!      order.  For instance, if unit Client â€˜withâ€™s unit Server, then the
       spec of Server is always elaborated prior to Client.  The same
       principle applies to child units - the spec of a parent unit is
       always elaborated prior to the child unit.
  
!    * â€˜Dynamic semanticsâ€™
  
       Dynamic checks are performed at run time to ensure that a target is
       elaborated prior to a scenario that invokes it, thus avoiding ABE
       problems.  A failed run-time check raises exception
       â€˜Program_Errorâ€™.  The following restrictions apply:
  
!         - â€˜Restrictions on callsâ€™
  
            An entry, operator, or subprogram can be called from
            elaboration code only when the corresponding body has been
            elaborated.
  
!         - â€˜Restrictions on instantiationsâ€™
  
            A generic unit can be instantiated by elaboration code only
            when the corresponding body has been elaborated.
  
!         - â€˜Restrictions on task activationâ€™
  
            A task can be activated by elaboration code only when the body
            of the associated task type has been elaborated.
  
       The restrictions above can be summarized by the following rule:
  
!      â€˜If a target has a body, then this body must be elaborated prior to
!      the scenario that invokes the target.â€™
  
!    * â€˜Elaboration controlâ€™
  
       Ada provides pragmas for you to specify the desired elaboration
       order.
--- 19764,19806 ----
  To avoid placing the entire elaboration-order burden on the programmer,
  Ada provides three lines of defense:
  
!    * 'Static semantics'
  
       Static semantic rules restrict the possible choice of elaboration
!      order.  For instance, if unit Client 'with's unit Server, then the
       spec of Server is always elaborated prior to Client.  The same
       principle applies to child units - the spec of a parent unit is
       always elaborated prior to the child unit.
  
!    * 'Dynamic semantics'
  
       Dynamic checks are performed at run time to ensure that a target is
       elaborated prior to a scenario that invokes it, thus avoiding ABE
       problems.  A failed run-time check raises exception
       â€˜Program_Errorâ€™.  The following restrictions apply:
  
!         - 'Restrictions on calls'
  
            An entry, operator, or subprogram can be called from
            elaboration code only when the corresponding body has been
            elaborated.
  
!         - 'Restrictions on instantiations'
  
            A generic unit can be instantiated by elaboration code only
            when the corresponding body has been elaborated.
  
!         - 'Restrictions on task activation'
  
            A task can be activated by elaboration code only when the body
            of the associated task type has been elaborated.
  
       The restrictions above can be summarized by the following rule:
  
!      'If a target has a body, then this body must be elaborated prior to
!      the scenario that invokes the target.'
  
!    * 'Elaboration control'
  
       Ada provides pragmas for you to specify the desired elaboration
       order.
*************** File: gnat_ugn.info,  Node: Controlling
*** 19814,19820 ****
  Ada provides several idioms and pragmas to aid you in specifying your
  desired elaboration order and avoiding ABE problems.
  
!    * â€˜Packages without a bodyâ€™
  
       A library package that does not require a completing body does not
       suffer from ABE problems.
--- 19814,19820 ----
  Ada provides several idioms and pragmas to aid you in specifying your
  desired elaboration order and avoiding ABE problems.
  
!    * 'Packages without a body'
  
       A library package that does not require a completing body does not
       suffer from ABE problems.
*************** desired elaboration order and avoiding A
*** 19832,19849 ****
       in a body.  As a result, generic â€˜Pack.Containersâ€™ can be
       instantiated without encountering any ABE problems.
  
!    * â€˜pragma Pureâ€™
  
       Pragma â€˜Pureâ€™ places sufficient restrictions on a unit to guarantee
       that no scenario within the unit can result in an ABE problem.
  
!    * â€˜pragma Preelaborateâ€™
  
       Pragma â€˜Preelaborateâ€™ is slightly less restrictive than pragma
       â€˜Pureâ€™, but still strong enough to prevent ABE problems within a
       unit.
  
!    * â€˜pragma Elaborate_Bodyâ€™
  
       Pragma â€˜Elaborate_Bodyâ€™ requires that the body of a unit is
       elaborated immediately after its spec.  This restriction guarantees
--- 19832,19849 ----
       in a body.  As a result, generic â€˜Pack.Containersâ€™ can be
       instantiated without encountering any ABE problems.
  
!    * 'pragma Pure'
  
       Pragma â€˜Pureâ€™ places sufficient restrictions on a unit to guarantee
       that no scenario within the unit can result in an ABE problem.
  
!    * 'pragma Preelaborate'
  
       Pragma â€˜Preelaborateâ€™ is slightly less restrictive than pragma
       â€˜Pureâ€™, but still strong enough to prevent ABE problems within a
       unit.
  
!    * 'pragma Elaborate_Body'
  
       Pragma â€˜Elaborate_Bodyâ€™ requires that the body of a unit is
       elaborated immediately after its spec.  This restriction guarantees
*************** desired elaboration order and avoiding A
*** 19877,19883 ****
            spec of Client
  
       because the spec of â€˜Serverâ€™ must be elaborated prior to â€˜Clientâ€™
!      by virtue of the â€˜withâ€™ clause and the body of â€˜Serverâ€™ must be
       elaborated immediately after the spec of â€˜Serverâ€™.
  
       Removing pragma â€˜Elaborate_Bodyâ€™ could result in the following
--- 19877,19883 ----
            spec of Client
  
       because the spec of â€˜Serverâ€™ must be elaborated prior to â€˜Clientâ€™
!      by virtue of the 'with' clause and the body of â€˜Serverâ€™ must be
       elaborated immediately after the spec of â€˜Serverâ€™.
  
       Removing pragma â€˜Elaborate_Bodyâ€™ could result in the following
*************** There are however situations where â€˜Pu
*** 19900,19909 ****
  pragmas for use by client units to help ensure the elaboration safety of
  server units they depend on.
  
!    * â€˜pragma Elaborate (Unit)â€™
  
       You can place pragma â€˜Elaborateâ€™ in the context clauses of a unit,
!      after a â€˜withâ€™ clause.  It guarantees that both the spec and body
       of its argument will be elaborated prior to the unit with the
       pragma.  Note that other unrelated units may be elaborated in
       between the spec and the body.
--- 19900,19909 ----
  pragmas for use by client units to help ensure the elaboration safety of
  server units they depend on.
  
!    * 'pragma Elaborate (Unit)'
  
       You can place pragma â€˜Elaborateâ€™ in the context clauses of a unit,
!      after a 'with' clause.  It guarantees that both the spec and body
       of its argument will be elaborated prior to the unit with the
       pragma.  Note that other unrelated units may be elaborated in
       between the spec and the body.
*************** server units they depend on.
*** 19942,19953 ****
       where â€˜Clientâ€™ invokes â€˜Server.Funcâ€™, but the body of â€˜Server.Funcâ€™
       has not been elaborated yet.
  
!    * â€˜pragma Elaborate_All (Unit)â€™
  
       You can place pragma â€˜Elaborate_Allâ€™ in the context clauses of a
!      unit, after a â€˜withâ€™ clause.  It guarantees that both the spec and
       body of its argument will be elaborated prior to the unit with the
!      pragma as well as all units â€˜withâ€™ed by the spec and body of the
       argument, recursively.  Note that other unrelated units may be
       elaborated in between the spec and the body.
  
--- 19942,19953 ----
       where â€˜Clientâ€™ invokes â€˜Server.Funcâ€™, but the body of â€˜Server.Funcâ€™
       has not been elaborated yet.
  
!    * 'pragma Elaborate_All (Unit)'
  
       You can place pragma â€˜Elaborate_Allâ€™ in the context clauses of a
!      unit, after a 'with' clause.  It guarantees that both the spec and
       body of its argument will be elaborated prior to the unit with the
!      pragma as well as all units 'with'ed by the spec and body of the
       argument, recursively.  Note that other unrelated units may be
       elaborated in between the spec and the body.
  
*************** server units they depend on.
*** 20019,20043 ****
  
  All pragmas shown above can be summarized by the following rule:
  
! â€˜If a client unit elaborates a server target directly or indirectly,
  then if the server unit requires a body and does not have pragma Pure,
  Preelaborate, or Elaborate_Body, then the client unit should have pragma
! Elaborate or Elaborate_All for the server unit.â€™
  
  If you do not follow the rule outlined above, a program may fall in one
  of the following ways:
  
!    * â€˜No elaboration order existsâ€™
  
       In this case a compiler must diagnose the situation and refuse to
       build an executable program.
  
!    * â€˜One or more incorrect elaboration orders existâ€™
  
       In this case a compiler can build an executable program, but
       â€˜Program_Errorâ€™ will be raised when the program is run.
  
!    * â€˜Several elaboration orders exist, some correct, some incorrectâ€™
  
       In this case, you have not controlled the elaboration order.  As a
       result, a compiler may or may not pick one of the correct orders
--- 20019,20043 ----
  
  All pragmas shown above can be summarized by the following rule:
  
! 'If a client unit elaborates a server target directly or indirectly,
  then if the server unit requires a body and does not have pragma Pure,
  Preelaborate, or Elaborate_Body, then the client unit should have pragma
! Elaborate or Elaborate_All for the server unit.'
  
  If you do not follow the rule outlined above, a program may fall in one
  of the following ways:
  
!    * 'No elaboration order exists'
  
       In this case a compiler must diagnose the situation and refuse to
       build an executable program.
  
!    * 'One or more incorrect elaboration orders exist'
  
       In this case a compiler can build an executable program, but
       â€˜Program_Errorâ€™ will be raised when the program is run.
  
!    * 'Several elaboration orders exist, some correct, some incorrect'
  
       In this case, you have not controlled the elaboration order.  As a
       result, a compiler may or may not pick one of the correct orders
*************** of the following ways:
*** 20046,20052 ****
       on another compiler or even a different version of the same
       compiler.
  
!    * â€˜One or more correct orders existâ€™
  
       In this case a compiler can build an executable program and the
       program is run successfully.  This state may be guaranteed by
--- 20046,20052 ----
       on another compiler or even a different version of the same
       compiler.
  
!    * 'One or more correct orders exist'
  
       In this case a compiler can build an executable program and the
       program is run successfully.  This state may be guaranteed by
*************** In addition to Ada semantics and rules s
*** 20068,20074 ****
  offers three elaboration models to aid you in specifying the correct
  elaboration order and in diagnosing elaboration problems.
  
!    * â€˜Dynamic elaboration modelâ€™
  
       This is the most permissive of the three elaboration models and
       emulates the behavior specified by the Ada Reference Manual.  When
--- 20068,20074 ----
  offers three elaboration models to aid you in specifying the correct
  elaboration order and in diagnosing elaboration problems.
  
!    * 'Dynamic elaboration model'
  
       This is the most permissive of the three elaboration models and
       emulates the behavior specified by the Ada Reference Manual.  When
*************** elaboration order and in diagnosing elab
*** 20086,20092 ****
       generates run-time checks for all external targets and for all
       scenarios that may exhibit ABE problems.
  
!      The elaboration order is obtained by honoring all â€˜withâ€™ clauses,
       purity and preelaborability of units, and elaboration-control
       pragmas.  The dynamic model attempts to take all invocations in
       elaboration code into account.  If an invocation leads to a
--- 20086,20092 ----
       generates run-time checks for all external targets and for all
       scenarios that may exhibit ABE problems.
  
!      The elaboration order is obtained by honoring all 'with' clauses,
       purity and preelaborability of units, and elaboration-control
       pragmas.  The dynamic model attempts to take all invocations in
       elaboration code into account.  If an invocation leads to a
*************** elaboration order and in diagnosing elab
*** 20096,20102 ****
  
       You enable the dynamic model with the compiler switch â€˜-gnatEâ€™.
  
!    * â€˜Static elaboration modelâ€™
  
       This is the middle ground of the three models.  When the static
       model is in effect, GNAT makes the following assumptions:
--- 20096,20102 ----
  
       You enable the dynamic model with the compiler switch â€˜-gnatEâ€™.
  
!    * 'Static elaboration model'
  
       This is the middle ground of the three models.  When the static
       model is in effect, GNAT makes the following assumptions:
*************** elaboration order and in diagnosing elab
*** 20113,20119 ****
       generates run-time checks for all external targets and for all
       scenarios that may exhibit ABE problems.
  
!      The elaboration order is obtained by honoring all â€˜withâ€™ clauses,
       purity and preelaborability of units, presence of
       elaboration-control pragmas, and all invocations in elaboration
       code.  An order obtained using the static model is guaranteed to be
--- 20113,20119 ----
       generates run-time checks for all external targets and for all
       scenarios that may exhibit ABE problems.
  
!      The elaboration order is obtained by honoring all 'with' clauses,
       purity and preelaborability of units, presence of
       elaboration-control pragmas, and all invocations in elaboration
       code.  An order obtained using the static model is guaranteed to be
*************** elaboration order and in diagnosing elab
*** 20122,20128 ****
  
       The static model is the default model in GNAT.
  
!    * â€˜SPARK elaboration modelâ€™
  
       This is the most conservative of the three models and enforces the
       SPARK rules of elaboration as defined in the SPARK Reference
--- 20122,20128 ----
  
       The static model is the default model in GNAT.
  
!    * 'SPARK elaboration model'
  
       This is the most conservative of the three models and enforces the
       SPARK rules of elaboration as defined in the SPARK Reference
*************** elaboration order and in diagnosing elab
*** 20132,20138 ****
  
       The SPARK model is enabled with compiler switch â€˜-gnatd.vâ€™.
  
!    * â€˜Legacy elaboration modelsâ€™
  
       In addition to the three elaboration models outlined above, GNAT
       provides the following legacy models:
--- 20132,20138 ----
  
       The SPARK model is enabled with compiler switch â€˜-gnatd.vâ€™.
  
!    * 'Legacy elaboration models'
  
       In addition to the three elaboration models outlined above, GNAT
       provides the following legacy models:
*************** File: gnat_ugn.info,  Node: Mixing Elabo
*** 20159,20165 ****
  You can mix units compiled with different elaboration models.  However
  you must observe the following rules:
  
!    * A client unit compiled with the dynamic model can only â€˜withâ€™ a
       server unit that meets at least one of the following criteria:
  
          - The server unit is compiled with the dynamic model.
--- 20159,20165 ----
  You can mix units compiled with different elaboration models.  However
  you must observe the following rules:
  
!    * A client unit compiled with the dynamic model can only 'with' a
       server unit that meets at least one of the following criteria:
  
          - The server unit is compiled with the dynamic model.
*************** may be too conservative or a particular
*** 20196,20203 ****
  to conditional execution.  You can selectively suppress the warnings
  with â€˜pragma Warnings (Off)â€™ or globally with compiler switch â€˜-gnatwLâ€™.
  
! A â€˜guaranteed ABEâ€™ arises when the body of a target is not elaborated
! early enough and causes â€˜allâ€™ scenarios that directly invoke the target
  to fail.
  
            package body Guaranteed_ABE is
--- 20196,20203 ----
  to conditional execution.  You can selectively suppress the warnings
  with â€˜pragma Warnings (Off)â€™ or globally with compiler switch â€˜-gnatwLâ€™.
  
! A 'guaranteed ABE' arises when the body of a target is not elaborated
! early enough and causes 'all' scenarios that directly invoke the target
  to fail.
  
            package body Guaranteed_ABE is
*************** following diagnostic:
*** 20221,20228 ****
               >>> warning: cannot call "ABE" before body seen
               >>> warning: Program_Error will be raised at run time
  
! A â€˜conditional ABEâ€™ arises when the body of a target is not elaborated
! early enough and causes â€˜someâ€™ scenarios that directly invoke the target
  to fail.
  
             1. package body Conditional_ABE is
--- 20221,20228 ----
               >>> warning: cannot call "ABE" before body seen
               >>> warning: Program_Error will be raised at run time
  
! A 'conditional ABE' arises when the body of a target is not elaborated
! early enough and causes 'some' scenarios that directly invoke the target
  to fail.
  
             1. package body Conditional_ABE is
*************** File: gnat_ugn.info,  Node: Elaboration
*** 20299,20308 ****
  9.9 Elaboration Circularities
  =============================
  
! An â€˜elaboration circularityâ€™ occurs whenever the elaboration of a set of
  units enters a deadlocked state, where each unit is waiting for another
  unit to be elaborated.  This situation may be the result of improper use
! of â€˜withâ€™ clauses, elaboration-control pragmas, or invocations in
  elaboration code.
  
  The following example exhibits an elaboration circularity.
--- 20299,20308 ----
  9.9 Elaboration Circularities
  =============================
  
! An 'elaboration circularity' occurs whenever the elaboration of a set of
  units enters a deadlocked state, where each unit is waiting for another
  unit to be elaborated.  This situation may be the result of improper use
! of 'with' clauses, elaboration-control pragmas, or invocations in
  elaboration code.
  
  The following example exhibits an elaboration circularity.
*************** especially in the case of complex legacy
*** 20388,20394 ****
  
  When faced with an elaboration circularity, you should also consider the
  tactics given in the suggestions section of the circularity diagnostic.
! Depending on the units involved in the circularity, their â€˜withâ€™
  clauses, purity, preelaborability, presence of elaboration-control
  pragmas and invocations at elaboration time, the binder may suggest one
  or more of the following tactics to eliminate the circularity:
--- 20388,20394 ----
  
  When faced with an elaboration circularity, you should also consider the
  tactics given in the suggestions section of the circularity diagnostic.
! Depending on the units involved in the circularity, their 'with'
  clauses, purity, preelaborability, presence of elaboration-control
  pragmas and invocations at elaboration time, the binder may suggest one
  or more of the following tactics to eliminate the circularity:
*************** or more of the following tactics to elim
*** 20423,20429 ****
  
          - The removal of the pragma will not eliminate the semantic
            effects of the pragma.  In other words, the argument of the
!           pragma along with its â€˜withâ€™ closure will still be elaborated
            prior to the unit containing the pragma.
  
          - The removal of the pragma will enable the successful ordering
--- 20423,20429 ----
  
          - The removal of the pragma will not eliminate the semantic
            effects of the pragma.  In other words, the argument of the
!           pragma along with its 'with' closure will still be elaborated
            prior to the unit containing the pragma.
  
          - The removal of the pragma will enable the successful ordering
*************** consequently the elaboration order chose
*** 20596,20613 ****
       supplementary information depending on the elaboration model in
       effect.
  
!         - â€˜Dynamic modelâ€™
  
            GNAT will indicate missing â€˜Elaborateâ€™ and â€˜Elaborate_Allâ€™
            pragmas for all library-level scenarios within the partition.
  
!         - â€˜Static modelâ€™
  
            GNAT will indicate all scenarios invoked during elaboration.
            In addition, it will provide detailed traceback when an
            implicit â€˜Elaborateâ€™ or â€˜Elaborate_Allâ€™ pragma is generated.
  
!         - â€˜SPARK modelâ€™
  
            GNAT will indicate how an elaboration requirement is met by
            the context of a unit.  This diagnostic requires compiler
--- 20596,20613 ----
       supplementary information depending on the elaboration model in
       effect.
  
!         - 'Dynamic model'
  
            GNAT will indicate missing â€˜Elaborateâ€™ and â€˜Elaborate_Allâ€™
            pragmas for all library-level scenarios within the partition.
  
!         - 'Static model'
  
            GNAT will indicate all scenarios invoked during elaboration.
            In addition, it will provide detailed traceback when an
            implicit â€˜Elaborateâ€™ or â€˜Elaborate_Allâ€™ pragma is generated.
  
!         - 'SPARK model'
  
            GNAT will indicate how an elaboration requirement is met by
            the context of a unit.  This diagnostic requires compiler
*************** out the differences from the Intel conve
*** 20945,20987 ****
  â€˜gasâ€™ (an â€˜asâ€™ macro pre-processor) documentation for further
  information.
  
!      â€˜Register namesâ€™ 
!           gcc / â€˜asâ€™: Prefix with â€˜%â€™; for example â€˜%eaxâ€™ 
!           Intel: No extra punctuation; for example â€˜eaxâ€™ 
  
!      â€˜Immediate operandâ€™ 
!           gcc / â€˜asâ€™: Prefix with â€˜$â€™; for example â€˜$4â€™ 
!           Intel: No extra punctuation; for example â€˜4â€™ 
  
!      â€˜Addressâ€™ 
!           gcc / â€˜asâ€™: Prefix with â€˜$â€™; for example â€˜$locâ€™ 
!           Intel: No extra punctuation; for example â€˜locâ€™ 
  
!      â€˜Memory contentsâ€™ 
!           gcc / â€˜asâ€™: No extra punctuation; for example â€˜locâ€™ 
!           Intel: Square brackets; for example â€˜[loc]â€™ 
  
!      â€˜Register contentsâ€™ 
!           gcc / â€˜asâ€™: Parentheses; for example â€˜(%eax)â€™ 
!           Intel: Square brackets; for example â€˜[eax]â€™ 
  
!      â€˜Hexadecimal numbersâ€™ 
!           gcc / â€˜asâ€™: Leading â€˜0xâ€™ (C language syntax); for example â€˜0xA0â€™ 
!           Intel: Trailing â€˜hâ€™; for example â€˜A0hâ€™ 
  
!      â€˜Operand sizeâ€™ 
!           gcc / â€˜asâ€™: Explicit in op code; for example â€˜movwâ€™ to move a 16-bit word 
!           Intel: Implicit, deduced by assembler; for example â€˜movâ€™ 
  
!      â€˜Instruction repetitionâ€™ 
!           gcc / â€˜asâ€™: Split into two lines; for example 
!                â€˜repâ€™ 
!                â€˜stoslâ€™ 
!           Intel: Keep on one line; for example â€˜rep stoslâ€™ 
  
!      â€˜Order of operandsâ€™ 
!           gcc / â€˜asâ€™: Source first; for example â€˜movw $4, %eaxâ€™ 
!           Intel: Destination first; for example â€˜mov eax, 4â€™ 
  
  
  File: gnat_ugn.info,  Node: A Simple Example of Inline Assembler,  Next: Output Variables in Inline Assembler,  Prev: Basic Assembler Syntax,  Up: Inline Assembler
--- 20945,20987 ----
  â€˜gasâ€™ (an â€˜asâ€™ macro pre-processor) documentation for further
  information.
  
!      'Register names'
!           gcc / â€˜asâ€™: Prefix with â€˜%â€™; for example â€˜%eaxâ€™
!           Intel: No extra punctuation; for example â€˜eaxâ€™
  
!      'Immediate operand'
!           gcc / â€˜asâ€™: Prefix with â€˜$â€™; for example â€˜$4â€™
!           Intel: No extra punctuation; for example â€˜4â€™
  
!      'Address'
!           gcc / â€˜asâ€™: Prefix with â€˜$â€™; for example â€˜$locâ€™
!           Intel: No extra punctuation; for example â€˜locâ€™
  
!      'Memory contents'
!           gcc / â€˜asâ€™: No extra punctuation; for example â€˜locâ€™
!           Intel: Square brackets; for example â€˜[loc]â€™
  
!      'Register contents'
!           gcc / â€˜asâ€™: Parentheses; for example â€˜(%eax)â€™
!           Intel: Square brackets; for example â€˜[eax]â€™
  
!      'Hexadecimal numbers'
!           gcc / â€˜asâ€™: Leading â€˜0xâ€™ (C language syntax); for example â€˜0xA0â€™
!           Intel: Trailing â€˜hâ€™; for example â€˜A0hâ€™
  
!      'Operand size'
!           gcc / â€˜asâ€™: Explicit in op code; for example â€˜movwâ€™ to move a 16-bit word
!           Intel: Implicit, deduced by assembler; for example â€˜movâ€™
  
!      'Instruction repetition'
!           gcc / â€˜asâ€™: Split into two lines; for example
!                â€˜repâ€™
!                â€˜stoslâ€™
!           Intel: Keep on one line; for example â€˜rep stoslâ€™
  
!      'Order of operands'
!           gcc / â€˜asâ€™: Source first; for example â€˜movw $4, %eaxâ€™
!           Intel: Destination first; for example â€˜mov eax, 4â€™
  
  
  File: gnat_ugn.info,  Node: A Simple Example of Inline Assembler,  Next: Output Variables in Inline Assembler,  Prev: Basic Assembler Syntax,  Up: Inline Assembler
*************** facility.
*** 21001,21007 ****
            end Nothing;
  
  â€˜Asmâ€™ is a procedure declared in package â€˜System.Machine_Codeâ€™; here it
! takes one parameter, a â€˜template stringâ€™ that must be a static
  expression that produces the generated instruction.  â€˜Asmâ€™ may be
  regarded as a compile-time procedure that parses the template string and
  any additional parameters (none, in this case) and generates one or more
--- 21001,21007 ----
            end Nothing;
  
  â€˜Asmâ€™ is a procedure declared in package â€˜System.Machine_Codeâ€™; here it
! takes one parameter, a 'template string' that must be a static
  expression that produces the generated instruction.  â€˜Asmâ€™ may be
  regarded as a compile-time procedure that parses the template string and
  any additional parameters (none, in this case) and generates one or more
*************** allowing the optimizer to choose whateve
*** 21192,21231 ****
  There are a fairly large number of constraints, but the ones that are
  most useful for the Intel x86 processor are the following:
  
!      â€˜=â€™        output constraint
                  
                  
!      â€˜gâ€™        global (i.e., can be stored anywhere)
                  
                  
!      â€˜mâ€™        in memory
                  
                  
!      â€˜Iâ€™        a constant
                  
                  
!      â€˜aâ€™        use eax
                  
                  
!      â€˜bâ€™        use ebx
                  
                  
!      â€˜câ€™        use ecx
                  
                  
!      â€˜dâ€™        use edx
                  
                  
!      â€˜Sâ€™        use esi
                  
                  
!      â€˜Dâ€™        use edi
                  
                  
!      â€˜râ€™        use one of eax, ebx, ecx or edx
                  
                  
!      â€˜qâ€™        use one of eax, ebx, ecx, edx, esi or edi
                  
  
  The full set of constraints is described in the â€˜gccâ€™ and â€˜asâ€™
--- 21192,21231 ----
  There are a fairly large number of constraints, but the ones that are
  most useful for the Intel x86 processor are the following:
  
!      '='        output constraint
                  
                  
!      'g'        global (i.e., can be stored anywhere)
                  
                  
!      'm'        in memory
                  
                  
!      'I'        a constant
                  
                  
!      'a'        use eax
                  
                  
!      'b'        use ebx
                  
                  
!      'c'        use ecx
                  
                  
!      'd'        use edx
                  
                  
!      'S'        use esi
                  
                  
!      'D'        use edi
                  
                  
!      'r'        use one of eax, ebx, ecx or edx
                  
                  
!      'q'        use one of eax, ebx, ecx, edx, esi or edi
                  
  
  The full set of constraints is described in the â€˜gccâ€™ and â€˜asâ€™
*************** documentation; note that you can combine
*** 21233,21239 ****
  constraint string.
  
  You specify the association of an output variable with an assembler
! operand through the â€˜%Nâ€™ notation, where â€˜nâ€™ is a non-negative integer.
  Thus in
  
            Asm ("pushfl"          & LF & HT & -- push flags on stack
--- 21233,21239 ----
  constraint string.
  
  You specify the association of an output variable with an assembler
! operand through the â€˜%Nâ€™ notation, where 'n' is a non-negative integer.
  Thus in
  
            Asm ("pushfl"          & LF & HT & -- push flags on stack
*************** identify the registers used by your asse
*** 21490,21496 ****
                 Clobber => "ebx");
  
  The Clobber parameter is a static string expression specifying the
! register(s) you are using.  Note that register names are â€˜notâ€™ prefixed
  by a percent sign.  Also, if more than one register is used, you
  separate their names by commas; e.g., â€˜"eax, ebx"â€™
  
--- 21490,21496 ----
                 Clobber => "ebx");
  
  The Clobber parameter is a static string expression specifying the
! register(s) you are using.  Note that register names are 'not' prefixed
  by a percent sign.  Also, if more than one register is used, you
  separate their names by commas; e.g., â€˜"eax, ebx"â€™
  
*************** Copyright 2000, 2001, 2002, 2007, 2008 F
*** 21544,21550 ****
  Everyone is permitted to copy and distribute verbatim copies of this
  license document, but changing it is not allowed.
  
! â€˜Preambleâ€™
  
  The purpose of this License is to make a manual, textbook, or other
  functional and useful document â€œfreeâ€� in the sense of freedom: to assure
--- 21544,21550 ----
  Everyone is permitted to copy and distribute verbatim copies of this
  license document, but changing it is not allowed.
  
! 'Preamble'
  
  The purpose of this License is to make a manual, textbook, or other
  functional and useful document â€œfreeâ€� in the sense of freedom: to assure
*************** used for any textual work, regardless of
*** 21567,21588 ****
  published as a printed book.  We recommend this License principally for
  works whose purpose is instruction or reference.
  
! â€˜1.  APPLICABILITY AND DEFINITIONSâ€™
  
  This License applies to any manual or other work, in any medium, that
  contains a notice placed by the copyright holder saying it can be
  distributed under the terms of this License.  Such a notice grants a
  world-wide, royalty-free license, unlimited in duration, to use that
! work under the conditions stated herein.  The â€˜Documentâ€™, below, refers
  to any such manual or work.  Any member of the public is a licensee, and
! is addressed as â€œâ€˜youâ€™â€�.  You accept the license if you copy, modify or
  distribute the work in a way requiring permission under copyright law.
  
! A â€œâ€˜Modified Versionâ€™â€� of the Document means any work containing the
  Document or a portion of it, either copied verbatim, or with
  modifications and/or translated into another language.
  
! A â€œâ€˜Secondary Sectionâ€™â€� is a named appendix or a front-matter section of
  the Document that deals exclusively with the relationship of the
  publishers or authors of the Document to the Documentâ€™s overall subject
  (or to related matters) and contains nothing that could fall directly
--- 21567,21588 ----
  published as a printed book.  We recommend this License principally for
  works whose purpose is instruction or reference.
  
! '1.  APPLICABILITY AND DEFINITIONS'
  
  This License applies to any manual or other work, in any medium, that
  contains a notice placed by the copyright holder saying it can be
  distributed under the terms of this License.  Such a notice grants a
  world-wide, royalty-free license, unlimited in duration, to use that
! work under the conditions stated herein.  The 'Document', below, refers
  to any such manual or work.  Any member of the public is a licensee, and
! is addressed as â€œ'you'â€�.  You accept the license if you copy, modify or
  distribute the work in a way requiring permission under copyright law.
  
! A â€œ'Modified Version'â€� of the Document means any work containing the
  Document or a portion of it, either copied verbatim, or with
  modifications and/or translated into another language.
  
! A â€œ'Secondary Section'â€� is a named appendix or a front-matter section of
  the Document that deals exclusively with the relationship of the
  publishers or authors of the Document to the Documentâ€™s overall subject
  (or to related matters) and contains nothing that could fall directly
*************** mathematics.)  The relationship could be
*** 21592,21598 ****
  connection with the subject or with related matters, or of legal,
  commercial, philosophical, ethical or political position regarding them.
  
! The â€œâ€˜Invariant Sectionsâ€™â€� are certain Secondary Sections whose titles
  are designated, as being those of Invariant Sections, in the notice that
  says that the Document is released under this License.  If a section
  does not fit the above definition of Secondary then it is not allowed to
--- 21592,21598 ----
  connection with the subject or with related matters, or of legal,
  commercial, philosophical, ethical or political position regarding them.
  
! The â€œ'Invariant Sections'â€� are certain Secondary Sections whose titles
  are designated, as being those of Invariant Sections, in the notice that
  says that the Document is released under this License.  If a section
  does not fit the above definition of Secondary then it is not allowed to
*************** be designated as Invariant.  The Documen
*** 21600,21611 ****
  Sections.  If the Document does not identify any Invariant Sections then
  there are none.
  
! The â€œâ€˜Cover Textsâ€™â€� are certain short passages of text that are listed,
  as Front-Cover Texts or Back-Cover Texts, in the notice that says that
  the Document is released under this License.  A Front-Cover Text may be
  at most 5 words, and a Back-Cover Text may be at most 25 words.
  
! A â€œâ€˜Transparentâ€™â€� copy of the Document means a machine-readable copy,
  represented in a format whose specification is available to the general
  public, that is suitable for revising the document straightforwardly
  with generic text editors or (for images composed of pixels) generic
--- 21600,21611 ----
  Sections.  If the Document does not identify any Invariant Sections then
  there are none.
  
! The â€œ'Cover Texts'â€� are certain short passages of text that are listed,
  as Front-Cover Texts or Back-Cover Texts, in the notice that says that
  the Document is released under this License.  A Front-Cover Text may be
  at most 5 words, and a Back-Cover Text may be at most 25 words.
  
! A â€œ'Transparent'â€� copy of the Document means a machine-readable copy,
  represented in a format whose specification is available to the general
  public, that is suitable for revising the document straightforwardly
  with generic text editors or (for images composed of pixels) generic
*************** formatters.  A copy made in an otherwise
*** 21616,21622 ****
  markup, or absence of markup, has been arranged to thwart or discourage
  subsequent modification by readers is not Transparent.  An image format
  is not Transparent if used for any substantial amount of text.  A copy
! that is not â€œTransparentâ€� is called â€˜Opaqueâ€™.
  
  Examples of suitable formats for Transparent copies include plain ASCII
  without markup, Texinfo input format, LaTeX input format, SGML or XML
--- 21616,21622 ----
  markup, or absence of markup, has been arranged to thwart or discourage
  subsequent modification by readers is not Transparent.  An image format
  is not Transparent if used for any substantial amount of text.  A copy
! that is not â€œTransparentâ€� is called 'Opaque'.
  
  Examples of suitable formats for Transparent copies include plain ASCII
  without markup, Texinfo input format, LaTeX input format, SGML or XML
*************** processing tools are not generally avail
*** 21629,21650 ****
  HTML, PostScript or PDF produced by some word processors for output
  purposes only.
  
! The â€œâ€˜Title Pageâ€™â€� means, for a printed book, the title page itself,
  plus such following pages as are needed to hold, legibly, the material
  this License requires to appear in the title page.  For works in formats
  which do not have any title page as such, â€œTitle Pageâ€� means the text
  near the most prominent appearance of the workâ€™s title, preceding the
  beginning of the body of the text.
  
! The â€œâ€˜publisherâ€™â€� means any person or entity that distributes copies of
  the Document to the public.
  
! A section â€œâ€˜Entitled XYZâ€™â€� means a named subunit of the Document whose
  title either is precisely XYZ or contains XYZ in parentheses following
  text that translates XYZ in another language.  (Here XYZ stands for a
! specific section name mentioned below, such as â€œâ€˜Acknowledgementsâ€™â€�,
! â€œâ€˜Dedicationsâ€™â€�, â€œâ€˜Endorsementsâ€™â€�, or â€œâ€˜Historyâ€™â€�.)  To â€œâ€˜Preserve the
! Titleâ€™â€� of such a section when you modify the Document means that it
  remains a section â€œEntitled XYZâ€� according to this definition.
  
  The Document may include Warranty Disclaimers next to the notice which
--- 21629,21650 ----
  HTML, PostScript or PDF produced by some word processors for output
  purposes only.
  
! The â€œ'Title Page'â€� means, for a printed book, the title page itself,
  plus such following pages as are needed to hold, legibly, the material
  this License requires to appear in the title page.  For works in formats
  which do not have any title page as such, â€œTitle Pageâ€� means the text
  near the most prominent appearance of the workâ€™s title, preceding the
  beginning of the body of the text.
  
! The â€œ'publisher'â€� means any person or entity that distributes copies of
  the Document to the public.
  
! A section â€œ'Entitled XYZ'â€� means a named subunit of the Document whose
  title either is precisely XYZ or contains XYZ in parentheses following
  text that translates XYZ in another language.  (Here XYZ stands for a
! specific section name mentioned below, such as â€œ'Acknowledgements'â€�,
! â€œ'Dedications'â€�, â€œ'Endorsements'â€�, or â€œ'History'â€�.)  To â€œ'Preserve the
! Title'â€� of such a section when you modify the Document means that it
  remains a section â€œEntitled XYZâ€� according to this definition.
  
  The Document may include Warranty Disclaimers next to the notice which
*************** but only as regards disclaiming warranti
*** 21654,21660 ****
  these Warranty Disclaimers may have is void and has no effect on the
  meaning of this License.
  
! â€˜2.  VERBATIM COPYINGâ€™
  
  You may copy and distribute the Document in any medium, either
  commercially or noncommercially, provided that this License, the
--- 21654,21660 ----
  these Warranty Disclaimers may have is void and has no effect on the
  meaning of this License.
  
! '2.  VERBATIM COPYING'
  
  You may copy and distribute the Document in any medium, either
  commercially or noncommercially, provided that this License, the
*************** number of copies you must also follow th
*** 21669,21675 ****
  You may also lend copies, under the same conditions stated above, and
  you may publicly display copies.
  
! â€˜3.  COPYING IN QUANTITYâ€™
  
  If you publish printed copies (or copies in media that commonly have
  printed covers) of the Document, numbering more than 100, and the
--- 21669,21675 ----
  You may also lend copies, under the same conditions stated above, and
  you may publicly display copies.
  
! '3.  COPYING IN QUANTITY'
  
  If you publish printed copies (or copies in media that commonly have
  printed covers) of the Document, numbering more than 100, and the
*************** It is requested, but not required, that
*** 21706,21712 ****
  Document well before redistributing any large number of copies, to give
  them a chance to provide you with an updated version of the Document.
  
! â€˜4.  MODIFICATIONSâ€™
  
  You may copy and distribute a Modified Version of the Document under the
  conditions of sections 2 and 3 above, provided that you release the
--- 21706,21712 ----
  Document well before redistributing any large number of copies, to give
  them a chance to provide you with an updated version of the Document.
  
! '4.  MODIFICATIONS'
  
  You may copy and distribute a Modified Version of the Document under the
  conditions of sections 2 and 3 above, provided that you release the
*************** The author(s) and publisher(s) of the Do
*** 21804,21810 ****
  give permission to use their names for publicity for or to assert or
  imply endorsement of any Modified Version.
  
! â€˜5.  COMBINING DOCUMENTSâ€™
  
  You may combine the Document with other documents released under this
  License, under the terms defined in section 4 above for modified
--- 21804,21810 ----
  give permission to use their names for publicity for or to assert or
  imply endorsement of any Modified Version.
  
! '5.  COMBINING DOCUMENTS'
  
  You may combine the Document with other documents released under this
  License, under the terms defined in section 4 above for modified
*************** likewise combine any sections Entitled â
*** 21828,21834 ****
  sections Entitled â€œDedicationsâ€�.  You must delete all sections Entitled
  â€œEndorsementsâ€�.
  
! â€˜6.  COLLECTIONS OF DOCUMENTSâ€™
  
  You may make a collection consisting of the Document and other documents
  released under this License, and replace the individual copies of this
--- 21828,21834 ----
  sections Entitled â€œDedicationsâ€�.  You must delete all sections Entitled
  â€œEndorsementsâ€�.
  
! '6.  COLLECTIONS OF DOCUMENTS'
  
  You may make a collection consisting of the Document and other documents
  released under this License, and replace the individual copies of this
*************** it individually under this License, prov
*** 21841,21847 ****
  License into the extracted document, and follow this License in all
  other respects regarding verbatim copying of that document.
  
! â€˜7.  AGGREGATION WITH INDEPENDENT WORKSâ€™
  
  A compilation of the Document or its derivatives with other separate and
  independent documents or works, in or on a volume of a storage or
--- 21841,21847 ----
  License into the extracted document, and follow this License in all
  other respects regarding verbatim copying of that document.
  
! '7.  AGGREGATION WITH INDEPENDENT WORKS'
  
  A compilation of the Document or its derivatives with other separate and
  independent documents or works, in or on a volume of a storage or
*************** that bracket the Document within the agg
*** 21859,21865 ****
  equivalent of covers if the Document is in electronic form.  Otherwise
  they must appear on printed covers that bracket the whole aggregate.
  
! â€˜8.  TRANSLATIONâ€™
  
  Translation is considered a kind of modification, so you may distribute
  translations of the Document under the terms of section 4.  Replacing
--- 21859,21865 ----
  equivalent of covers if the Document is in electronic form.  Otherwise
  they must appear on printed covers that bracket the whole aggregate.
  
! '8.  TRANSLATION'
  
  Translation is considered a kind of modification, so you may distribute
  translations of the Document under the terms of section 4.  Replacing
*************** If a section in the Document is Entitled
*** 21878,21884 ****
  â€œDedicationsâ€�, or â€œHistoryâ€�, the requirement (section 4) to Preserve its
  Title (section 1) will typically require changing the actual title.
  
! â€˜9.  TERMINATIONâ€™
  
  You may not copy, modify, sublicense, or distribute the Document except
  as expressly provided under this License.  Any attempt otherwise to
--- 21878,21884 ----
  â€œDedicationsâ€�, or â€œHistoryâ€�, the requirement (section 4) to Preserve its
  Title (section 1) will typically require changing the actual title.
  
! '9.  TERMINATION'
  
  You may not copy, modify, sublicense, or distribute the Document except
  as expressly provided under this License.  Any attempt otherwise to
*************** this License.  If your rights have been
*** 21905,21911 ****
  reinstated, receipt of a copy of some or all of the same material does
  not give you any rights to use it.
  
! â€˜10.  FUTURE REVISIONS OF THIS LICENSEâ€™
  
  The Free Software Foundation may publish new, revised versions of the
  GNU Free Documentation License from time to time.  Such new versions
--- 21905,21911 ----
  reinstated, receipt of a copy of some or all of the same material does
  not give you any rights to use it.
  
! '10.  FUTURE REVISIONS OF THIS LICENSE'
  
  The Free Software Foundation may publish new, revised versions of the
  GNU Free Documentation License from time to time.  Such new versions
*************** that a proxy can decide which future ver
*** 21925,21931 ****
  used, that proxyâ€™s public statement of acceptance of a version
  permanently authorizes you to choose that version for the Document.
  
! â€˜11.  RELICENSINGâ€™
  
  â€œMassive Multiauthor Collaboration Siteâ€� (or â€œMMC Siteâ€�) means any World
  Wide Web server that publishes copyrightable works and also provides
--- 21925,21931 ----
  used, that proxyâ€™s public statement of acceptance of a version
  permanently authorizes you to choose that version for the Document.
  
! '11.  RELICENSING'
  
  â€œMassive Multiauthor Collaboration Siteâ€� (or â€œMMC Siteâ€�) means any World
  Wide Web server that publishes copyrightable works and also provides
*************** The operator of an MMC Site may republis
*** 21953,21959 ****
  under CC-BY-SA on the same site at any time before August 1, 2009,
  provided the MMC is eligible for relicensing.
  
! â€˜ADDENDUM: How to use this License for your documentsâ€™
  
  To use this License in a document you have written, include a copy of
  the License in the document and put the following copyright and license
--- 21953,21959 ----
  under CC-BY-SA on the same site at any time before August 1, 2009,
  provided the MMC is eligible for relicensing.
  
! 'ADDENDUM: How to use this License for your documents'
  
  To use this License in a document you have written, include a copy of
  the License in the document and put the following copyright and license
*************** Index
*** 21992,21997 ****
--- 21992,21999 ----
  [index]
  * Menu:
  
+ * __gnat_malloc:                         Switches for gnatbind.
+                                                              (line  137)
  * -a (gnatbind):                         Switches for gnatbind.
                                                               (line   19)
  * -A (gnatbind):                         Switches for gnatbind.
*************** Index
*** 22025,22031 ****
                                                               (line  458)
  * -aP (gnatls):                          Switches for gnatls.
                                                               (line   55)
! * â€“as (dlltool):                         Using gnatdll.      (line  219)
  * -b (gcc):                              Alphabetical List of All Switches.
                                                               (line    6)
  * -B (gcc):                              Alphabetical List of All Switches.
--- 22027,22033 ----
                                                               (line  458)
  * -aP (gnatls):                          Switches for gnatls.
                                                               (line   55)
! * -as (dlltool):                         Using gnatdll.      (line  219)
  * -b (gcc):                              Alphabetical List of All Switches.
                                                               (line    6)
  * -B (gcc):                              Alphabetical List of All Switches.
*************** Index
*** 22043,22049 ****
  * -bargs (gnatdll):                      Using gnatdll.      (line   30)
  * -bargs (gnatmake):                     Mode Switches for gnatmake.
                                                               (line   19)
! * â€“base-file (dlltool):                  Using gnatdll.      (line  181)
  * -C (gcc):                              Switches.           (line   21)
  * -c (gcc):                              Alphabetical List of All Switches.
                                                               (line   21)
--- 22045,22051 ----
  * -bargs (gnatdll):                      Using gnatdll.      (line   30)
  * -bargs (gnatmake):                     Mode Switches for gnatmake.
                                                               (line   19)
! * -base-file (dlltool):                  Using gnatdll.      (line  181)
  * -C (gcc):                              Switches.           (line   21)
  * -c (gcc):                              Alphabetical List of All Switches.
                                                               (line   21)
*************** Index
*** 22068,22074 ****
                                                               (line  170)
  * -cargs (gnatmake):                     Mode Switches for gnatmake.
                                                               (line   13)
! * â€“create-missing-dirs (gnatmake):       Switches for gnatmake.
                                                               (line   72)
  * -D (gnatbind):                         Switches for gnatbind.
                                                               (line   58)
--- 22070,22076 ----
                                                               (line  170)
  * -cargs (gnatmake):                     Mode Switches for gnatmake.
                                                               (line   13)
! * -create-missing-dirs (gnatmake):       Switches for gnatmake.
                                                               (line   72)
  * -D (gnatbind):                         Switches for gnatbind.
                                                               (line   58)
*************** Index
*** 22087,22095 ****
                                                               (line   59)
  * -D (gnatprep):                         Switches for gnatprep.
                                                               (line   40)
! * â€“def (dlltool):                        Using gnatdll.      (line  186)
! * â€“demangle (gprof):                     Running gprof.      (line   23)
! * â€“dllname (dlltool):                    Using gnatdll.      (line  190)
  * -dnn[k|m] (gnatbind):                  Switches for gnatbind.
                                                               (line   46)
  * -e (gnatbind):                         Switches for gnatbind.
--- 22089,22097 ----
                                                               (line   59)
  * -D (gnatprep):                         Switches for gnatprep.
                                                               (line   40)
! * -def (dlltool):                        Using gnatdll.      (line  186)
! * -demangle (gprof):                     Running gprof.      (line   23)
! * -dllname (dlltool):                    Using gnatdll.      (line  190)
  * -dnn[k|m] (gnatbind):                  Switches for gnatbind.
                                                               (line   46)
  * -e (gnatbind):                         Switches for gnatbind.
*************** Index
*** 22191,22201 ****
                                                               (line   27)
  * -g (gnatmake):                         Switches for gnatmake.
                                                               (line  240)
! * â€“GCC= (gnatchop):                      Switches for gnatchop.
                                                               (line   99)
! * â€“GCC=compiler_name (gnatlink):         Switches for gnatlink.
                                                               (line   80)
! * â€“GCC=compiler_name (gnatmake):         Switches for gnatmake.
                                                               (line   24)
  * -gnat-p (gcc):                         Alphabetical List of All Switches.
                                                               (line  758)
--- 22193,22203 ----
                                                               (line   27)
  * -g (gnatmake):                         Switches for gnatmake.
                                                               (line  240)
! * -GCC= (gnatchop):                      Switches for gnatchop.
                                                               (line   99)
! * -GCC=compiler_name (gnatlink):         Switches for gnatlink.
                                                               (line   80)
! * -GCC=compiler_name (gnatmake):         Switches for gnatmake.
                                                               (line   24)
  * -gnat-p (gcc):                         Alphabetical List of All Switches.
                                                               (line  758)
*************** Index
*** 22242,22248 ****
                                                               (line  209)
  * -gnatb (gcc) <1>:                      Output and Error Message Control.
                                                               (line  101)
! * â€“GNATBIND=binder_name (gnatmake):      Switches for gnatmake.
                                                               (line   40)
  * -gnatc (gcc):                          Alphabetical List of All Switches.
                                                               (line  214)
--- 22244,22250 ----
                                                               (line  209)
  * -gnatb (gcc) <1>:                      Output and Error Message Control.
                                                               (line  101)
! * -GNATBIND=binder_name (gnatmake):      Switches for gnatmake.
                                                               (line   40)
  * -gnatc (gcc):                          Alphabetical List of All Switches.
                                                               (line  214)
*************** Index
*** 22254,22263 ****
                                                               (line  235)
  * -gnatd (gcc) <1>:                      Debugging Control.  (line    6)
  * -gnatD (gcc):                          Debugging Control.  (line  142)
- * -gnatdc switch:                        GNAT Abnormal Termination or Failure to Terminate.
-                                                              (line   33)
  * -gnatD[nn] (gcc):                      Alphabetical List of All Switches.
                                                               (line  245)
  * -gnatE (gcc):                          Alphabetical List of All Switches.
                                                               (line  564)
  * -gnatE (gcc) <1>:                      Run-Time Checks.    (line  125)
--- 22256,22265 ----
                                                               (line  235)
  * -gnatd (gcc) <1>:                      Debugging Control.  (line    6)
  * -gnatD (gcc):                          Debugging Control.  (line  142)
  * -gnatD[nn] (gcc):                      Alphabetical List of All Switches.
                                                               (line  245)
+ * -gnatdc switch:                        GNAT Abnormal Termination or Failure to Terminate.
+                                                              (line   33)
  * -gnatE (gcc):                          Alphabetical List of All Switches.
                                                               (line  564)
  * -gnatE (gcc) <1>:                      Run-Time Checks.    (line  125)
*************** Index
*** 22366,22372 ****
  * -gnatL (gcc) <2>:                      Debugging Control.  (line  163)
  * -gnatl=fname (gcc):                    Output and Error Message Control.
                                                               (line   84)
! * â€“GNATLINK=linker_name (gnatmake):      Switches for gnatmake.
                                                               (line   51)
  * -gnatm (gcc):                          Alphabetical List of All Switches.
                                                               (line  672)
--- 22368,22374 ----
  * -gnatL (gcc) <2>:                      Debugging Control.  (line  163)
  * -gnatl=fname (gcc):                    Output and Error Message Control.
                                                               (line   84)
! * -GNATLINK=linker_name (gnatmake):      Switches for gnatmake.
                                                               (line   51)
  * -gnatm (gcc):                          Alphabetical List of All Switches.
                                                               (line  672)
*************** Index
*** 22386,22393 ****
                                                               (line   34)
  * -gnato (gcc):                          Controlling Run-Time Checks.
                                                               (line   11)
- * -gnato0 (gcc):                         Alphabetical List of All Switches.
-                                                              (line  703)
  * -gnato? (gcc):                         Specifying the Desired Mode.
                                                               (line   52)
  * -gnato?? (gcc):                        Alphabetical List of All Switches.
--- 22388,22393 ----
*************** Index
*** 22395,22400 ****
--- 22395,22402 ----
  * -gnato?? (gcc) <1>:                    Run-Time Checks.    (line   60)
  * -gnato?? (gcc) <2>:                    Specifying the Desired Mode.
                                                               (line   52)
+ * -gnato0 (gcc):                         Alphabetical List of All Switches.
+                                                              (line  703)
  * -gnatp (gcc):                          Alphabetical List of All Switches.
                                                               (line  752)
  * -gnatp (gcc) <1>:                      Run-Time Checks.    (line   12)
*************** Index
*** 22456,22461 ****
--- 22458,22491 ----
                                                               (line  817)
  * -gnatW (gcc) <1>:                      Character Set Control.
                                                               (line   51)
+ * -gnatw_a:                              Warning Message Control.
+                                                              (line  217)
+ * -gnatw_A:                              Warning Message Control.
+                                                              (line  226)
+ * -gnatw_c (gcc):                        Warning Message Control.
+                                                              (line  320)
+ * -gnatw_C (gcc):                        Warning Message Control.
+                                                              (line  328)
+ * -gnatw_l (gcc):                        Warning Message Control.
+                                                              (line  651)
+ * -gnatw_L (gcc):                        Warning Message Control.
+                                                              (line  659)
+ * -gnatw_p (gcc):                        Warning Message Control.
+                                                              (line  808)
+ * -gnatw_P (gcc):                        Warning Message Control.
+                                                              (line  819)
+ * -gnatw_q (gcc):                        Warning Message Control.
+                                                              (line  894)
+ * -gnatw_Q (gcc):                        Warning Message Control.
+                                                              (line  908)
+ * -gnatw_r (gcc):                        Warning Message Control.
+                                                              (line  964)
+ * -gnatw_R (gcc):                        Warning Message Control.
+                                                              (line  973)
+ * -gnatw_s (gcc):                        Warning Message Control.
+                                                              (line 1012)
+ * -gnatw_S (gcc):                        Warning Message Control.
+                                                              (line 1020)
  * -gnatw.a (gcc):                        Warning Message Control.
                                                               (line  201)
  * -gnatw.A (gcc):                        Warning Message Control.
*************** Index
*** 22654,22687 ****
                                                               (line 1278)
  * -gnatwZ (gcc):                         Warning Message Control.
                                                               (line 1287)
- * -gnatw_a:                              Warning Message Control.
-                                                              (line  217)
- * -gnatw_A:                              Warning Message Control.
-                                                              (line  226)
- * -gnatw_c (gcc):                        Warning Message Control.
-                                                              (line  320)
- * -gnatw_C (gcc):                        Warning Message Control.
-                                                              (line  328)
- * -gnatw_l (gcc):                        Warning Message Control.
-                                                              (line  651)
- * -gnatw_L (gcc):                        Warning Message Control.
-                                                              (line  659)
- * -gnatw_p (gcc):                        Warning Message Control.
-                                                              (line  808)
- * -gnatw_P (gcc):                        Warning Message Control.
-                                                              (line  819)
- * -gnatw_q (gcc):                        Warning Message Control.
-                                                              (line  894)
- * -gnatw_Q (gcc):                        Warning Message Control.
-                                                              (line  908)
- * -gnatw_r (gcc):                        Warning Message Control.
-                                                              (line  964)
- * -gnatw_R (gcc):                        Warning Message Control.
-                                                              (line  973)
- * -gnatw_s (gcc):                        Warning Message Control.
-                                                              (line 1012)
- * -gnatw_S (gcc):                        Warning Message Control.
-                                                              (line 1020)
  * -gnatx (gcc):                          Alphabetical List of All Switches.
                                                               (line  821)
  * -gnatX (gcc):                          Alphabetical List of All Switches.
--- 22684,22689 ----
*************** Index
*** 22696,22703 ****
  * -gnaty (gcc):                          Alphabetical List of All Switches.
                                                               (line  833)
  * -gnaty (gcc) <1>:                      Style Checking.     (line    6)
- * -gnaty+ (gcc):                         Style Checking.     (line  466)
  * -gnaty- (gcc):                         Style Checking.     (line  454)
  * -gnatya (gcc):                         Style Checking.     (line   51)
  * -gnatyA (gcc):                         Style Checking.     (line   60)
  * -gnatyb (gcc):                         Style Checking.     (line   68)
--- 22698,22706 ----
  * -gnaty (gcc):                          Alphabetical List of All Switches.
                                                               (line  833)
  * -gnaty (gcc) <1>:                      Style Checking.     (line    6)
  * -gnaty- (gcc):                         Style Checking.     (line  454)
+ * -gnaty[0-9] (gcc):                     Style Checking.     (line   25)
+ * -gnaty+ (gcc):                         Style Checking.     (line  466)
  * -gnatya (gcc):                         Style Checking.     (line   51)
  * -gnatyA (gcc):                         Style Checking.     (line   60)
  * -gnatyb (gcc):                         Style Checking.     (line   68)
*************** Index
*** 22730,22736 ****
  * -gnatyx (gcc):                         Style Checking.     (line  430)
  * -gnatyy (gcc):                         Style Checking.     (line  438)
  * -gnatyz (gcc):                         Style Checking.     (line  447)
- * -gnaty[0-9] (gcc):                     Style Checking.     (line   25)
  * -gnatz (gcc):                          Alphabetical List of All Switches.
                                                               (line  837)
  * -h (gnatbind):                         Switches for gnatbind.
--- 22733,22738 ----
*************** Index
*** 22749,22770 ****
                                                               (line  131)
  * -H64 (gnatbind):                       Switches for gnatbind.
                                                               (line  137)
! * â€“help (dlltool):                       Using gnatdll.      (line  201)
! * â€“help (gnatbind):                      Switches for gnatbind.
                                                               (line   14)
! * â€“help (gnatchop):                      Switches for gnatchop.
                                                               (line   13)
! * â€“help (gnatclean):                     Switches for gnatclean.
                                                               (line   13)
! * â€“help (gnatlink):                      Switches for gnatlink.
                                                               (line   13)
! * â€“help (gnatls):                        Switches for gnatls.
                                                               (line   13)
! * â€“help (gnatmake):                      Switches for gnatmake.
                                                               (line   13)
! * â€“help (gnatname):                      Switches for gnatname.
                                                               (line   15)
! * â€“help (gnatprep):                      Switches for gnatprep.
                                                               (line   11)
  * -I (gcc):                              Alphabetical List of All Switches.
                                                               (line  842)
--- 22751,22772 ----
                                                               (line  131)
  * -H64 (gnatbind):                       Switches for gnatbind.
                                                               (line  137)
! * -help (dlltool):                       Using gnatdll.      (line  201)
! * -help (gnatbind):                      Switches for gnatbind.
                                                               (line   14)
! * -help (gnatchop):                      Switches for gnatchop.
                                                               (line   13)
! * -help (gnatclean):                     Switches for gnatclean.
                                                               (line   13)
! * -help (gnatlink):                      Switches for gnatlink.
                                                               (line   13)
! * -help (gnatls):                        Switches for gnatls.
                                                               (line   13)
! * -help (gnatmake):                      Switches for gnatmake.
                                                               (line   13)
! * -help (gnatname):                      Switches for gnatname.
                                                               (line   15)
! * -help (gnatprep):                      Switches for gnatprep.
                                                               (line   11)
  * -I (gcc):                              Alphabetical List of All Switches.
                                                               (line  842)
*************** Index
*** 22817,22823 ****
  * -largs (gnatdll):                      Using gnatdll.      (line   94)
  * -largs (gnatmake):                     Mode Switches for gnatmake.
                                                               (line   25)
! * â€“LINK= (gnatlink):                     Switches for gnatlink.
                                                               (line  101)
  * -M (gnatbind):                         Switches for gnatbind.
                                                               (line  176)
--- 22819,22825 ----
  * -largs (gnatdll):                      Using gnatdll.      (line   94)
  * -largs (gnatmake):                     Mode Switches for gnatmake.
                                                               (line   25)
! * -LINK= (gnatlink):                     Switches for gnatlink.
                                                               (line  101)
  * -M (gnatbind):                         Switches for gnatbind.
                                                               (line  176)
*************** Index
*** 22886,22893 ****
                                                               (line   31)
  * -o (gnatmake):                         Switches for gnatmake.
                                                               (line  337)
! * â€“output-exp (dlltool):                 Using gnatdll.      (line  205)
! * â€“output-lib (dlltool):                 Using gnatdll.      (line  211)
  * -p (gnatbind):                         Switches for gnatbind.
                                                               (line  234)
  * -P (gnatbind):                         Switches for gnatbind.
--- 22888,22895 ----
                                                               (line   31)
  * -o (gnatmake):                         Switches for gnatmake.
                                                               (line  337)
! * -output-exp (dlltool):                 Using gnatdll.      (line  205)
! * -output-lib (dlltool):                 Using gnatdll.      (line  211)
  * -p (gnatbind):                         Switches for gnatbind.
                                                               (line  234)
  * -P (gnatbind):                         Switches for gnatbind.
*************** Index
*** 22932,22950 ****
                                                               (line   46)
  * -Ra (gnatbind):                        Switches for gnatbind.
                                                               (line  263)
! * â€“RTS (gcc):                            Alphabetical List of All Switches.
                                                               (line  910)
! * â€“RTS (gnatbind):                       Switches for gnatbind.
                                                               (line  218)
! * â€“RTS (gnatls):                         Switches for gnatls.
                                                               (line   59)
! * â€“RTS (gnatmake):                       Switches for gnatmake.
                                                               (line  493)
! * â€“RTS switch:                           Specifying a Run-Time Library.
                                                               (line   53)
! * â€“RTS=sjlj (gnatmake):                  Exception Handling Control.
                                                               (line   29)
! * â€“RTS=zcx (gnatmake):                   Exception Handling Control.
                                                               (line   40)
  * -S (gcc):                              Alphabetical List of All Switches.
                                                               (line  916)
--- 22934,22952 ----
                                                               (line   46)
  * -Ra (gnatbind):                        Switches for gnatbind.
                                                               (line  263)
! * -RTS (gcc):                            Alphabetical List of All Switches.
                                                               (line  910)
! * -RTS (gnatbind):                       Switches for gnatbind.
                                                               (line  218)
! * -RTS (gnatls):                         Switches for gnatls.
                                                               (line   59)
! * -RTS (gnatmake):                       Switches for gnatmake.
                                                               (line  493)
! * -RTS switch:                           Specifying a Run-Time Library.
                                                               (line   53)
! * -RTS=sjlj (gnatmake):                  Exception Handling Control.
                                                               (line   29)
! * -RTS=zcx (gnatmake):                   Exception Handling Control.
                                                               (line   40)
  * -S (gcc):                              Alphabetical List of All Switches.
                                                               (line  916)
*************** Index
*** 22984,22989 ****
--- 22986,22995 ----
                                                               (line  374)
  * -u (gnatprep):                         Switches for gnatprep.
                                                               (line   72)
+ * -v -v (gnatlink):                      Switches for gnatlink.
+                                                              (line   48)
+ * -v -v (gnatname):                      Switches for gnatname.
+                                                              (line  110)
  * -v (dlltool):                          Using gnatdll.      (line  215)
  * -v (gcc):                              Alphabetical List of All Switches.
                                                               (line  929)
*************** Index
*** 23010,23034 ****
                                                               (line  102)
  * -v (gnatprep):                         Switches for gnatprep.
                                                               (line   79)
! * -v -v (gnatlink):                      Switches for gnatlink.
!                                                              (line   48)
! * -v -v (gnatname):                      Switches for gnatname.
!                                                              (line  110)
! * â€“version (gnatbind):                   Switches for gnatbind.
                                                               (line    9)
! * â€“version (gnatchop):                   Switches for gnatchop.
                                                               (line    8)
! * â€“version (gnatclean):                  Switches for gnatclean.
                                                               (line    8)
! * â€“version (gnatlink):                   Switches for gnatlink.
                                                               (line    8)
! * â€“version (gnatls):                     Switches for gnatls.
                                                               (line    8)
! * â€“version (gnatmake):                   Switches for gnatmake.
                                                               (line    8)
! * â€“version (gnatname):                   Switches for gnatname.
                                                               (line   10)
! * â€“version (gnatprep):                   Switches for gnatprep.
                                                               (line    6)
  * -vl (gnatmake):                        Switches for gnatmake.
                                                               (line  387)
--- 23016,23036 ----
                                                               (line  102)
  * -v (gnatprep):                         Switches for gnatprep.
                                                               (line   79)
! * -version (gnatbind):                   Switches for gnatbind.
                                                               (line    9)
! * -version (gnatchop):                   Switches for gnatchop.
                                                               (line    8)
! * -version (gnatclean):                  Switches for gnatclean.
                                                               (line    8)
! * -version (gnatlink):                   Switches for gnatlink.
                                                               (line    8)
! * -version (gnatls):                     Switches for gnatls.
                                                               (line    8)
! * -version (gnatmake):                   Switches for gnatmake.
                                                               (line    8)
! * -version (gnatname):                   Switches for gnatname.
                                                               (line   10)
! * -version (gnatprep):                   Switches for gnatprep.
                                                               (line    6)
  * -vl (gnatmake):                        Switches for gnatmake.
                                                               (line  387)
*************** Index
*** 23086,23093 ****
                                                               (line   12)
  * -z (gnatmake):                         Switches for gnatmake.
                                                               (line  423)
- * __gnat_malloc:                         Switches for gnatbind.
-                                                              (line  137)
  * Abnormal Termination or Failure to Terminate: Remote Debugging with gdbserver.
                                                               (line   46)
  * Access before elaboration:             Run-Time Checks.    (line    6)
--- 23088,23093 ----
*************** Index
*** 23126,23136 ****
                                                               (line   80)
  * Ada Library Information files:         The Ada Library Information Files.
                                                               (line    6)
- * Ada.Characters.Latin_1:                Latin-1.            (line   13)
- * adafinal:                              Binding with Non-Ada Main Programs.
-                                                              (line   38)
- * adainit:                               Binding with Non-Ada Main Programs.
-                                                              (line   22)
  * ADA_INCLUDE_PATH:                      Using a library.    (line   54)
  * ADA_INCLUDE_PATH <1>:                  Search Paths and the Run-Time Library RTL.
                                                               (line   28)
--- 23126,23131 ----
*************** Index
*** 23155,23160 ****
--- 23150,23160 ----
                                                               (line   23)
  * ADA_PROJECT_PATH:                      Installing a library.
                                                               (line    6)
+ * Ada.Characters.Latin_1:                Latin-1.            (line   13)
+ * adafinal:                              Binding with Non-Ada Main Programs.
+                                                              (line   38)
+ * adainit:                               Binding with Non-Ada Main Programs.
+                                                              (line   22)
  * Address Clauses:                       Warning Message Control.
                                                               (line  730)
  * ALI files:                             The Ada Library Information Files.
*************** Index
*** 23230,23235 ****
--- 23230,23237 ----
                                                               (line    6)
  * C varargs function:                    Calling Conventions.
                                                               (line   56)
+ * C_INCLUDE_PATH:                        Linking a Mixed C++ & Ada Program.
+                                                              (line   26)
  * C++:                                   Calling Conventions.
                                                               (line   80)
  * C++ headers (binding generation):      Generating Ada Bindings for C and C++ headers.
*************** Index
*** 23319,23326 ****
  * CR:                                    Source Representation.
                                                               (line    6)
  * Cyrillic:                              Other 8-Bit Codes.  (line   23)
- * C_INCLUDE_PATH:                        Linking a Mixed C++ & Ada Program.
-                                                              (line   26)
  * Deactivated code:                      Warning Message Control.
                                                               (line 1028)
  * Debug:                                 Debugging and Assertion Control.
--- 23321,23326 ----
*************** Index
*** 23355,23370 ****
                                                               (line  151)
  * Dimension Vector (for a dimensioned subtype): Performing Dimensionality Analysis in GNAT.
                                                               (line  151)
  * Dimensionable type:                    Performing Dimensionality Analysis in GNAT.
                                                               (line  146)
  * Dimensionality analysis:               Performing Dimensionality Analysis in GNAT.
                                                               (line    6)
  * Dimensioned subtype:                   Performing Dimensionality Analysis in GNAT.
                                                               (line  146)
- * Dimension_System aspect:               Performing Dimensionality Analysis in GNAT.
-                                                              (line   13)
- * Dimension_System aspect <1>:           Performing Dimensionality Analysis in GNAT.
-                                                              (line  151)
  * Division by zero:                      Run-Time Checks.    (line    6)
  * division by zero:                      Run-Time Checks.    (line    6)
  * DLL:                                   Calling Conventions.
--- 23355,23370 ----
                                                               (line  151)
  * Dimension Vector (for a dimensioned subtype): Performing Dimensionality Analysis in GNAT.
                                                               (line  151)
+ * Dimension_System aspect:               Performing Dimensionality Analysis in GNAT.
+                                                              (line   13)
+ * Dimension_System aspect <1>:           Performing Dimensionality Analysis in GNAT.
+                                                              (line  151)
  * Dimensionable type:                    Performing Dimensionality Analysis in GNAT.
                                                               (line  146)
  * Dimensionality analysis:               Performing Dimensionality Analysis in GNAT.
                                                               (line    6)
  * Dimensioned subtype:                   Performing Dimensionality Analysis in GNAT.
                                                               (line  146)
  * Division by zero:                      Run-Time Checks.    (line    6)
  * division by zero:                      Run-Time Checks.    (line    6)
  * DLL:                                   Calling Conventions.
*************** Index
*** 23494,23499 ****
--- 23494,23505 ----
                                                               (line   10)
  * GNAT Run-Time Library:                 Rebuilding the GNAT Run-Time Library.
                                                               (line    6)
+ * gnat_argc:                             Command-Line Access.
+                                                              (line   13)
+ * gnat_argv:                             Command-Line Access.
+                                                              (line   13)
+ * GNAT_INIT_SCALARS:                     Switches for gnatbind.
+                                                              (line  316)
  * gnat.adc:                              Using Other File Names.
                                                               (line   35)
  * gnat.adc <1>:                          The Configuration Pragmas Files.
*************** Index
*** 23519,23537 ****
  * gnatprep:                              Preprocessing.      (line   17)
  * gnatprep <1>:                          Preprocessing with gnatprep.
                                                               (line    6)
- * gnat_argc:                             Command-Line Access.
-                                                              (line   13)
- * gnat_argv:                             Command-Line Access.
-                                                              (line   13)
- * GNAT_INIT_SCALARS:                     Switches for gnatbind.
-                                                              (line  316)
  * GNU make:                              Using the GNU make Utility.
                                                               (line    6)
  * GNU/Linux:                             Specifying a Run-Time Library.
                                                               (line   55)
- * gprof:                                 Profiling.          (line    9)
  * GPR_PROJECT_PATH:                      Installing a library.
                                                               (line    6)
  * Hiding of Declarations:                Warning Message Control.
                                                               (line  473)
  * HT:                                    Source Representation.
--- 23525,23537 ----
  * gnatprep:                              Preprocessing.      (line   17)
  * gnatprep <1>:                          Preprocessing with gnatprep.
                                                               (line    6)
  * GNU make:                              Using the GNU make Utility.
                                                               (line    6)
  * GNU/Linux:                             Specifying a Run-Time Library.
                                                               (line   55)
  * GPR_PROJECT_PATH:                      Installing a library.
                                                               (line    6)
+ * gprof:                                 Profiling.          (line    9)
  * Hiding of Declarations:                Warning Message Control.
                                                               (line  473)
  * HT:                                    Source Representation.
*************** Index
*** 23623,23631 ****
                                                               (line  211)
  * No information messages for why package spec needs body: Warning Message Control.
                                                               (line 1271)
- * non-symbolic:                          Stack Traceback.    (line   21)
  * No_Strict_Aliasing:                    Optimization and Strict Aliasing.
                                                               (line    6)
  * obsolescent:                           Warning Message Control.
                                                               (line  545)
  * Obsolescent features:                  Warning Message Control.
--- 23623,23631 ----
                                                               (line  211)
  * No information messages for why package spec needs body: Warning Message Control.
                                                               (line 1271)
  * No_Strict_Aliasing:                    Optimization and Strict Aliasing.
                                                               (line    6)
+ * non-symbolic:                          Stack Traceback.    (line   21)
  * obsolescent:                           Warning Message Control.
                                                               (line  545)
  * Obsolescent features:                  Warning Message Control.
*************** Index
*** 23903,23909 ****
  * Validity Checking:                     Validity Checking.  (line    6)
  * varargs function interfaces:           Calling Conventions.
                                                               (line   56)
! * Version skew (avoided by â€˜â€˜gnatmakeâ€˜â€˜): Running a Simple Ada Program.
                                                               (line   56)
  * Volatile parameter:                    The Volatile Parameter.
                                                               (line    6)
--- 23903,23909 ----
  * Validity Checking:                     Validity Checking.  (line    6)
  * varargs function interfaces:           Calling Conventions.
                                                               (line   56)
! * Version skew (avoided by ''gnatmake''): Running a Simple Ada Program.
                                                               (line   56)
  * Volatile parameter:                    The Volatile Parameter.
                                                               (line    6)
*************** Index
*** 23958,25444 ****
                                                               (line   40)
  * Zero-Cost Exceptions:                  Run-Time Libraries. (line   13)
  
!                                                              
  
  
  
  Tag Table:
! Node: Top350
! Ref: gnat_ugn doc634
! Ref: 0634
! Node: About This Guide12394
! Ref: gnat_ugn/about_this_guide doc12498
! Ref: 212498
! Ref: gnat_ugn/about_this_guide about-this-guide12498
! Ref: 312498
! Ref: gnat_ugn/about_this_guide gnat-user-s-guide-for-native-platforms12498
! Ref: 412498
! Ref: gnat_ugn/about_this_guide id112498
! Ref: 512498
! Node: What This Guide Contains13750
! Ref: gnat_ugn/about_this_guide what-this-guide-contains13884
! Ref: 813884
! Node: What You Should Know before Reading This Guide15325
! Ref: gnat_ugn/about_this_guide what-you-should-know-before-reading-this-guide15487
! Ref: 1215487
! Node: Related Information15839
! Ref: gnat_ugn/about_this_guide related-information15988
! Ref: 1315988
! Node: Conventions16874
! Ref: gnat_ugn/about_this_guide conventions16968
! Ref: 1416968
! Node: Getting Started with GNAT17778
! Ref: gnat_ugn/getting_started_with_gnat doc17905
! Ref: 1517905
! Ref: gnat_ugn/getting_started_with_gnat getting-started-with-gnat17905
! Ref: 917905
! Ref: gnat_ugn/getting_started_with_gnat id117905
! Ref: 1617905
! Node: System Requirements18551
! Ref: gnat_ugn/getting_started_with_gnat id218655
! Ref: 1718655
! Ref: gnat_ugn/getting_started_with_gnat system-requirements18655
! Ref: 1818655
! Node: Running GNAT20062
! Ref: gnat_ugn/getting_started_with_gnat id320203
! Ref: 1920203
! Ref: gnat_ugn/getting_started_with_gnat running-gnat20203
! Ref: 1a20203
! Node: Running a Simple Ada Program20715
! Ref: gnat_ugn/getting_started_with_gnat id420874
! Ref: 1b20874
! Ref: gnat_ugn/getting_started_with_gnat running-a-simple-ada-program20874
! Ref: 1c20874
! Node: Running a Program with Multiple Units23788
! Ref: gnat_ugn/getting_started_with_gnat id523926
! Ref: 1f23926
! Ref: gnat_ugn/getting_started_with_gnat running-a-program-with-multiple-units23926
! Ref: 2023926
! Node: The GNAT Compilation Model25522
! Ref: gnat_ugn/the_gnat_compilation_model doc25671
! Ref: 2125671
! Ref: gnat_ugn/the_gnat_compilation_model id125671
! Ref: 2225671
! Ref: gnat_ugn/the_gnat_compilation_model the-gnat-compilation-model25671
! Ref: a25671
! Node: Source Representation27089
! Ref: gnat_ugn/the_gnat_compilation_model id227215
! Ref: 3027215
! Ref: gnat_ugn/the_gnat_compilation_model source-representation27215
! Ref: 2327215
! Node: Foreign Language Representation29669
! Ref: gnat_ugn/the_gnat_compilation_model foreign-language-representation29836
! Ref: 2429836
! Ref: gnat_ugn/the_gnat_compilation_model id329836
! Ref: 3129836
! Node: Latin-130209
! Ref: gnat_ugn/the_gnat_compilation_model id430312
! Ref: 3330312
! Ref: gnat_ugn/the_gnat_compilation_model latin-130312
! Ref: 3430312
! Node: Other 8-Bit Codes31099
! Ref: gnat_ugn/the_gnat_compilation_model id531235
! Ref: 3531235
! Ref: gnat_ugn/the_gnat_compilation_model other-8-bit-codes31235
! Ref: 3631235
! Node: Wide_Character Encodings33460
! Ref: gnat_ugn/the_gnat_compilation_model id633618
! Ref: 3733618
! Ref: gnat_ugn/the_gnat_compilation_model wide-character-encodings33618
! Ref: 3833618
! Node: Wide_Wide_Character Encodings37458
! Ref: gnat_ugn/the_gnat_compilation_model id737590
! Ref: 3937590
! Ref: gnat_ugn/the_gnat_compilation_model wide-wide-character-encodings37590
! Ref: 3a37590
! Node: File Naming Topics and Utilities39324
! Ref: gnat_ugn/the_gnat_compilation_model file-naming-topics-and-utilities39491
! Ref: 2539491
! Ref: gnat_ugn/the_gnat_compilation_model id839491
! Ref: 3b39491
! Node: File Naming Rules40001
! Ref: gnat_ugn/the_gnat_compilation_model file-naming-rules40120
! Ref: 3c40120
! Ref: gnat_ugn/the_gnat_compilation_model id940120
! Ref: 3d40120
! Node: Using Other File Names43671
! Ref: gnat_ugn/the_gnat_compilation_model id1043830
! Ref: 3f43830
! Ref: gnat_ugn/the_gnat_compilation_model using-other-file-names43830
! Ref: 1d43830
! Node: Alternative File Naming Schemes46074
! Ref: gnat_ugn/the_gnat_compilation_model alternative-file-naming-schemes46272
! Ref: 4146272
! Ref: gnat_ugn/the_gnat_compilation_model id1146272
! Ref: 4246272
! Node: Handling Arbitrary File Naming Conventions with gnatname51319
! Ref: gnat_ugn/the_gnat_compilation_model handling-arbitrary-file-naming-conventions-with-gnatname51526
! Ref: 4351526
! Ref: gnat_ugn/the_gnat_compilation_model id1251526
! Ref: 4451526
! Node: Arbitrary File Naming Conventions51787
! Ref: gnat_ugn/the_gnat_compilation_model arbitrary-file-naming-conventions51940
! Ref: 4551940
! Ref: gnat_ugn/the_gnat_compilation_model id1351940
! Ref: 4651940
! Node: Running gnatname53077
! Ref: gnat_ugn/the_gnat_compilation_model id1453260
! Ref: 4753260
! Ref: gnat_ugn/the_gnat_compilation_model running-gnatname53260
! Ref: 4853260
! Node: Switches for gnatname55128
! Ref: gnat_ugn/the_gnat_compilation_model id1555304
! Ref: 4955304
! Ref: gnat_ugn/the_gnat_compilation_model switches-for-gnatname55304
! Ref: 4a55304
! Node: Examples of gnatname Usage60180
! Ref: gnat_ugn/the_gnat_compilation_model examples-of-gnatname-usage60331
! Ref: 4b60331
! Ref: gnat_ugn/the_gnat_compilation_model id1660331
! Ref: 4c60331
! Node: File Name Krunching with gnatkr61027
! Ref: gnat_ugn/the_gnat_compilation_model file-name-krunching-with-gnatkr61231
! Ref: 4d61231
! Ref: gnat_ugn/the_gnat_compilation_model id1761231
! Ref: 4e61231
! Node: About gnatkr61686
! Ref: gnat_ugn/the_gnat_compilation_model about-gnatkr61789
! Ref: 4f61789
! Ref: gnat_ugn/the_gnat_compilation_model id1861789
! Ref: 5061789
! Node: Using gnatkr62729
! Ref: gnat_ugn/the_gnat_compilation_model id1962857
! Ref: 5162857
! Ref: gnat_ugn/the_gnat_compilation_model using-gnatkr62857
! Ref: 3e62857
! Node: Krunching Method64385
! Ref: gnat_ugn/the_gnat_compilation_model id2064525
! Ref: 5264525
! Ref: gnat_ugn/the_gnat_compilation_model krunching-method64525
! Ref: 5364525
! Node: Examples of gnatkr Usage67981
! Ref: gnat_ugn/the_gnat_compilation_model examples-of-gnatkr-usage68100
! Ref: 5468100
! Ref: gnat_ugn/the_gnat_compilation_model id2168100
! Ref: 5568100
! Node: Renaming Files with gnatchop68547
! Ref: gnat_ugn/the_gnat_compilation_model id2268686
! Ref: 5668686
! Ref: gnat_ugn/the_gnat_compilation_model renaming-files-with-gnatchop68686
! Ref: 1e68686
! Node: Handling Files with Multiple Units69162
! Ref: gnat_ugn/the_gnat_compilation_model handling-files-with-multiple-units69310
! Ref: 5769310
! Ref: gnat_ugn/the_gnat_compilation_model id2369310
! Ref: 5869310
! Node: Operating gnatchop in Compilation Mode70553
! Ref: gnat_ugn/the_gnat_compilation_model id2470735
! Ref: 5970735
! Ref: gnat_ugn/the_gnat_compilation_model operating-gnatchop-in-compilation-mode70735
! Ref: 5a70735
! Node: Command Line for gnatchop73860
! Ref: gnat_ugn/the_gnat_compilation_model command-line-for-gnatchop74029
! Ref: 5b74029
! Ref: gnat_ugn/the_gnat_compilation_model id2574029
! Ref: 5c74029
! Node: Switches for gnatchop75862
! Ref: gnat_ugn/the_gnat_compilation_model id2676019
! Ref: 5d76019
! Ref: gnat_ugn/the_gnat_compilation_model switches-for-gnatchop76019
! Ref: 5e76019
! Node: Examples of gnatchop Usage80193
! Ref: gnat_ugn/the_gnat_compilation_model examples-of-gnatchop-usage80316
! Ref: 5f80316
! Ref: gnat_ugn/the_gnat_compilation_model id2780316
! Ref: 6080316
! Node: Configuration Pragmas81567
! Ref: gnat_ugn/the_gnat_compilation_model configuration-pragmas81726
! Ref: 2681726
! Ref: gnat_ugn/the_gnat_compilation_model id2881726
! Ref: 6181726
! Node: Handling of Configuration Pragmas84050
! Ref: gnat_ugn/the_gnat_compilation_model handling-of-configuration-pragmas84183
! Ref: 4084183
! Ref: gnat_ugn/the_gnat_compilation_model id2984183
! Ref: 6284183
! Node: The Configuration Pragmas Files86168
! Ref: gnat_ugn/the_gnat_compilation_model id3086301
! Ref: 6386301
! Ref: gnat_ugn/the_gnat_compilation_model the-configuration-pragmas-files86301
! Ref: 6486301
! Node: Generating Object Files88455
! Ref: gnat_ugn/the_gnat_compilation_model generating-object-files88601
! Ref: 2788601
! Ref: gnat_ugn/the_gnat_compilation_model id3188601
! Ref: 6588601
! Node: Source Dependencies91234
! Ref: gnat_ugn/the_gnat_compilation_model id3291392
! Ref: 6691392
! Ref: gnat_ugn/the_gnat_compilation_model source-dependencies91392
! Ref: 2891392
! Node: The Ada Library Information Files95063
! Ref: gnat_ugn/the_gnat_compilation_model id3395220
! Ref: 6795220
! Ref: gnat_ugn/the_gnat_compilation_model the-ada-library-information-files95220
! Ref: 2995220
! Node: Binding an Ada Program97251
! Ref: gnat_ugn/the_gnat_compilation_model binding-an-ada-program97407
! Ref: 2a97407
! Ref: gnat_ugn/the_gnat_compilation_model id3497407
! Ref: 6897407
! Node: GNAT and Libraries99075
! Ref: gnat_ugn/the_gnat_compilation_model gnat-and-libraries99221
! Ref: 2b99221
! Ref: gnat_ugn/the_gnat_compilation_model id3599221
! Ref: 6999221
! Node: Introduction to Libraries in GNAT99695
! Ref: gnat_ugn/the_gnat_compilation_model id3699815
! Ref: 6a99815
! Ref: gnat_ugn/the_gnat_compilation_model introduction-to-libraries-in-gnat99815
! Ref: 6b99815
! Node: General Ada Libraries101883
! Ref: gnat_ugn/the_gnat_compilation_model general-ada-libraries102037
! Ref: 6d102037
! Ref: gnat_ugn/the_gnat_compilation_model id37102037
! Ref: 6e102037
! Node: Building a library102172
! Ref: gnat_ugn/the_gnat_compilation_model building-a-library102279
! Ref: 6f102279
! Ref: gnat_ugn/the_gnat_compilation_model id38102279
! Ref: 70102279
! Node: Installing a library106110
! Ref: gnat_ugn/the_gnat_compilation_model id39106241
! Ref: 72106241
! Ref: gnat_ugn/the_gnat_compilation_model installing-a-library106241
! Ref: 73106241
! Node: Using a library108789
! Ref: gnat_ugn/the_gnat_compilation_model id40108893
! Ref: 75108893
! Ref: gnat_ugn/the_gnat_compilation_model using-a-library108893
! Ref: 76108893
! Node: Stand-alone Ada Libraries111466
! Ref: gnat_ugn/the_gnat_compilation_model id41111623
! Ref: 78111623
! Ref: gnat_ugn/the_gnat_compilation_model stand-alone-ada-libraries111623
! Ref: 6c111623
! Node: Introduction to Stand-alone Libraries111884
! Ref: gnat_ugn/the_gnat_compilation_model id42112024
! Ref: 79112024
! Ref: gnat_ugn/the_gnat_compilation_model introduction-to-stand-alone-libraries112024
! Ref: 7a112024
! Node: Building a Stand-alone Library113653
! Ref: gnat_ugn/the_gnat_compilation_model building-a-stand-alone-library113864
! Ref: 7b113864
! Ref: gnat_ugn/the_gnat_compilation_model id43113864
! Ref: 7c113864
! Node: Creating a Stand-alone Library to be used in a non-Ada context118726
! Ref: gnat_ugn/the_gnat_compilation_model creating-a-stand-alone-library-to-be-used-in-a-non-ada-context118937
! Ref: 7d118937
! Ref: gnat_ugn/the_gnat_compilation_model id44118937
! Ref: 7e118937
! Node: Restrictions in Stand-alone Libraries121869
! Ref: gnat_ugn/the_gnat_compilation_model id45122041
! Ref: 80122041
! Ref: gnat_ugn/the_gnat_compilation_model restrictions-in-stand-alone-libraries122041
! Ref: 81122041
! Node: Rebuilding the GNAT Run-Time Library123363
! Ref: gnat_ugn/the_gnat_compilation_model id46123490
! Ref: 82123490
! Ref: gnat_ugn/the_gnat_compilation_model rebuilding-the-gnat-run-time-library123490
! Ref: 83123490
! Node: Conditional Compilation124363
! Ref: gnat_ugn/the_gnat_compilation_model conditional-compilation124513
! Ref: 2c124513
! Ref: gnat_ugn/the_gnat_compilation_model id47124513
! Ref: 84124513
! Node: Modeling Conditional Compilation in Ada124819
! Ref: gnat_ugn/the_gnat_compilation_model id48124956
! Ref: 85124956
! Ref: gnat_ugn/the_gnat_compilation_model modeling-conditional-compilation-in-ada124956
! Ref: 86124956
! Node: Use of Boolean Constants126468
! Ref: gnat_ugn/the_gnat_compilation_model id49126605
! Ref: 87126605
! Ref: gnat_ugn/the_gnat_compilation_model use-of-boolean-constants126605
! Ref: 88126605
! Node: Debugging - A Special Case127927
! Ref: gnat_ugn/the_gnat_compilation_model debugging-a-special-case128102
! Ref: 89128102
! Ref: gnat_ugn/the_gnat_compilation_model id50128102
! Ref: 8a128102
! Node: Conditionalizing Declarations131609
! Ref: gnat_ugn/the_gnat_compilation_model conditionalizing-declarations131794
! Ref: 8b131794
! Ref: gnat_ugn/the_gnat_compilation_model id51131794
! Ref: 8c131794
! Node: Use of Alternative Implementations133523
! Ref: gnat_ugn/the_gnat_compilation_model id52133695
! Ref: 8d133695
! Ref: gnat_ugn/the_gnat_compilation_model use-of-alternative-implementations133695
! Ref: 8e133695
! Node: Preprocessing137900
! Ref: gnat_ugn/the_gnat_compilation_model id53138034
! Ref: 8f138034
! Ref: gnat_ugn/the_gnat_compilation_model preprocessing138034
! Ref: 90138034
! Node: Preprocessing with gnatprep139710
! Ref: gnat_ugn/the_gnat_compilation_model id54139880
! Ref: 93139880
! Ref: gnat_ugn/the_gnat_compilation_model preprocessing-with-gnatprep139880
! Ref: 91139880
! Node: Preprocessing Symbols140407
! Ref: gnat_ugn/the_gnat_compilation_model id55140517
! Ref: 94140517
! Ref: gnat_ugn/the_gnat_compilation_model preprocessing-symbols140517
! Ref: 95140517
! Node: Using gnatprep140887
! Ref: gnat_ugn/the_gnat_compilation_model id56141027
! Ref: 96141027
! Ref: gnat_ugn/the_gnat_compilation_model using-gnatprep141027
! Ref: 97141027
! Node: Switches for gnatprep141909
! Ref: gnat_ugn/the_gnat_compilation_model id57142052
! Ref: 98142052
! Ref: gnat_ugn/the_gnat_compilation_model switches-for-gnatprep142052
! Ref: 99142052
! Node: Form of Definitions File145201
! Ref: gnat_ugn/the_gnat_compilation_model form-of-definitions-file145361
! Ref: 9a145361
! Ref: gnat_ugn/the_gnat_compilation_model id58145361
! Ref: 9b145361
! Node: Form of Input Text for gnatprep145935
! Ref: gnat_ugn/the_gnat_compilation_model form-of-input-text-for-gnatprep146065
! Ref: 9c146065
! Ref: gnat_ugn/the_gnat_compilation_model id59146065
! Ref: 9d146065
! Node: Integrated Preprocessing150210
! Ref: gnat_ugn/the_gnat_compilation_model id60150332
! Ref: 9e150332
! Ref: gnat_ugn/the_gnat_compilation_model integrated-preprocessing150332
! Ref: 92150332
! Node: Mixed Language Programming158678
! Ref: gnat_ugn/the_gnat_compilation_model id61158843
! Ref: 9f158843
! Ref: gnat_ugn/the_gnat_compilation_model mixed-language-programming158843
! Ref: 2d158843
! Node: Interfacing to C159239
! Ref: gnat_ugn/the_gnat_compilation_model id62159348
! Ref: a0159348
! Ref: gnat_ugn/the_gnat_compilation_model interfacing-to-c159348
! Ref: a1159348
! Node: Calling Conventions164578
! Ref: gnat_ugn/the_gnat_compilation_model calling-conventions164731
! Ref: a2164731
! Ref: gnat_ugn/the_gnat_compilation_model id63164731
! Ref: a3164731
! Node: Building Mixed Ada and C++ Programs172015
! Ref: gnat_ugn/the_gnat_compilation_model building-mixed-ada-and-c-programs172175
! Ref: a4172175
! Ref: gnat_ugn/the_gnat_compilation_model id64172175
! Ref: a5172175
! Node: Interfacing to C++172657
! Ref: gnat_ugn/the_gnat_compilation_model id65172791
! Ref: a6172791
! Ref: gnat_ugn/the_gnat_compilation_model id66172791
! Ref: a7172791
! Node: Linking a Mixed C++ & Ada Program173998
! Ref: gnat_ugn/the_gnat_compilation_model linking-a-mixed-c-ada-program174157
! Ref: a9174157
! Ref: gnat_ugn/the_gnat_compilation_model linking-a-mixed-c-and-ada-program174157
! Ref: aa174157
! Node: A Simple Example178171
! Ref: gnat_ugn/the_gnat_compilation_model a-simple-example178345
! Ref: ab178345
! Ref: gnat_ugn/the_gnat_compilation_model id67178345
! Ref: ac178345
! Node: Interfacing with C++ constructors181068
! Ref: gnat_ugn/the_gnat_compilation_model id68181248
! Ref: ad181248
! Ref: gnat_ugn/the_gnat_compilation_model interfacing-with-c-constructors181248
! Ref: ae181248
! Node: Interfacing with C++ at the Class Level187963
! Ref: gnat_ugn/the_gnat_compilation_model id69188118
! Ref: b0188118
! Ref: gnat_ugn/the_gnat_compilation_model interfacing-with-c-at-the-class-level188118
! Ref: af188118
! Node: Partition-Wide Settings196801
! Ref: gnat_ugn/the_gnat_compilation_model id70196987
! Ref: b1196987
! Ref: gnat_ugn/the_gnat_compilation_model partition-wide-settings196987
! Ref: b2196987
! Node: Generating Ada Bindings for C and C++ headers199052
! Ref: gnat_ugn/the_gnat_compilation_model generating-ada-bindings-for-c-and-c-headers199246
! Ref: a8199246
! Ref: gnat_ugn/the_gnat_compilation_model id71199246
! Ref: b3199246
! Node: Running the Binding Generator200557
! Ref: gnat_ugn/the_gnat_compilation_model id72200714
! Ref: b4200714
! Ref: gnat_ugn/the_gnat_compilation_model running-the-binding-generator200714
! Ref: b5200714
! Node: Generating Bindings for C++ Headers203236
! Ref: gnat_ugn/the_gnat_compilation_model generating-bindings-for-c-headers203410
! Ref: b6203410
! Ref: gnat_ugn/the_gnat_compilation_model id73203410
! Ref: b7203410
! Node: Switches206324
! Ref: gnat_ugn/the_gnat_compilation_model switches206460
! Ref: b8206460
! Ref: gnat_ugn/the_gnat_compilation_model switches-for-ada-binding-generation206460
! Ref: b9206460
! Node: Generating C Headers for Ada Specifications207031
! Ref: gnat_ugn/the_gnat_compilation_model generating-c-headers-for-ada-specifications207193
! Ref: ba207193
! Ref: gnat_ugn/the_gnat_compilation_model id74207193
! Ref: bb207193
! Node: Running the C Header Generator207694
! Ref: gnat_ugn/the_gnat_compilation_model running-the-c-header-generator207806
! Ref: bc207806
! Node: GNAT and Other Compilation Models209543
! Ref: gnat_ugn/the_gnat_compilation_model gnat-and-other-compilation-models209721
! Ref: 2e209721
! Ref: gnat_ugn/the_gnat_compilation_model id75209721
! Ref: bd209721
! Node: Comparison between GNAT and C/C++ Compilation Models210155
! Ref: gnat_ugn/the_gnat_compilation_model comparison-between-gnat-and-c-c-compilation-models210347
! Ref: be210347
! Ref: gnat_ugn/the_gnat_compilation_model id76210347
! Ref: bf210347
! Node: Comparison between GNAT and Conventional Ada Library Models211875
! Ref: gnat_ugn/the_gnat_compilation_model comparison-between-gnat-and-conventional-ada-library-models212067
! Ref: c0212067
! Ref: gnat_ugn/the_gnat_compilation_model id77212067
! Ref: c1212067
! Node: Using GNAT Files with External Tools214459
! Ref: gnat_ugn/the_gnat_compilation_model id78214602
! Ref: c2214602
! Ref: gnat_ugn/the_gnat_compilation_model using-gnat-files-with-external-tools214602
! Ref: 2f214602
! Node: Using Other Utility Programs with GNAT214898
! Ref: gnat_ugn/the_gnat_compilation_model id79215061
! Ref: c3215061
! Ref: gnat_ugn/the_gnat_compilation_model using-other-utility-programs-with-gnat215061
! Ref: c4215061
! Node: The External Symbol Naming Scheme of GNAT215640
! Ref: gnat_ugn/the_gnat_compilation_model id80215803
! Ref: c5215803
! Ref: gnat_ugn/the_gnat_compilation_model the-external-symbol-naming-scheme-of-gnat215803
! Ref: c6215803
! Node: Building Executable Programs with GNAT217687
! Ref: gnat_ugn/building_executable_programs_with_gnat doc217832
! Ref: c7217832
! Ref: gnat_ugn/building_executable_programs_with_gnat building-executable-programs-with-gnat217832
! Ref: b217832
! Ref: gnat_ugn/building_executable_programs_with_gnat id1217832
! Ref: c8217832
! Node: Building with gnatmake218779
! Ref: gnat_ugn/building_executable_programs_with_gnat building-with-gnatmake218905
! Ref: cd218905
! Ref: gnat_ugn/building_executable_programs_with_gnat the-gnat-make-program-gnatmake218905
! Ref: c9218905
! Node: Running gnatmake220534
! Ref: gnat_ugn/building_executable_programs_with_gnat id2220641
! Ref: ce220641
! Ref: gnat_ugn/building_executable_programs_with_gnat running-gnatmake220641
! Ref: cf220641
! Node: Switches for gnatmake222115
! Ref: gnat_ugn/building_executable_programs_with_gnat id3222257
! Ref: d0222257
! Ref: gnat_ugn/building_executable_programs_with_gnat switches-for-gnatmake222257
! Ref: d1222257
! Node: Mode Switches for gnatmake243607
! Ref: gnat_ugn/building_executable_programs_with_gnat id4243758
! Ref: d3243758
! Ref: gnat_ugn/building_executable_programs_with_gnat mode-switches-for-gnatmake243758
! Ref: d4243758
! Node: Notes on the Command Line245053
! Ref: gnat_ugn/building_executable_programs_with_gnat id5245201
! Ref: d5245201
! Ref: gnat_ugn/building_executable_programs_with_gnat notes-on-the-command-line245201
! Ref: d6245201
! Node: How gnatmake Works247686
! Ref: gnat_ugn/building_executable_programs_with_gnat how-gnatmake-works247834
! Ref: d7247834
! Ref: gnat_ugn/building_executable_programs_with_gnat id6247834
! Ref: d8247834
! Node: Examples of gnatmake Usage250189
! Ref: gnat_ugn/building_executable_programs_with_gnat examples-of-gnatmake-usage250303
! Ref: d9250303
! Ref: gnat_ugn/building_executable_programs_with_gnat id7250303
! Ref: da250303
! Node: Compiling with gcc251398
! Ref: gnat_ugn/building_executable_programs_with_gnat compiling-with-gcc251550
! Ref: ca251550
! Ref: gnat_ugn/building_executable_programs_with_gnat id8251550
! Ref: db251550
! Node: Compiling Programs251951
! Ref: gnat_ugn/building_executable_programs_with_gnat compiling-programs252076
! Ref: dc252076
! Ref: gnat_ugn/building_executable_programs_with_gnat id9252076
! Ref: dd252076
! Node: Search Paths and the Run-Time Library RTL255492
! Ref: gnat_ugn/building_executable_programs_with_gnat id10255653
! Ref: df255653
! Ref: gnat_ugn/building_executable_programs_with_gnat search-paths-and-the-run-time-library-rtl255653
! Ref: 74255653
! Node: Order of Compilation Issues259095
! Ref: gnat_ugn/building_executable_programs_with_gnat id11259246
! Ref: e0259246
! Ref: gnat_ugn/building_executable_programs_with_gnat order-of-compilation-issues259246
! Ref: e1259246
! Node: Examples260819
! Ref: gnat_ugn/building_executable_programs_with_gnat examples260920
! Ref: e2260920
! Ref: gnat_ugn/building_executable_programs_with_gnat id12260920
! Ref: e3260920
! Node: Compiler Switches261402
! Ref: gnat_ugn/building_executable_programs_with_gnat compiler-switches261547
! Ref: e4261547
! Ref: gnat_ugn/building_executable_programs_with_gnat switches-for-gcc261547
! Ref: de261547
! Node: Alphabetical List of All Switches262726
! Ref: gnat_ugn/building_executable_programs_with_gnat alphabetical-list-of-all-switches262856
! Ref: e5262856
! Ref: gnat_ugn/building_executable_programs_with_gnat id13262856
! Ref: e6262856
! Node: Output and Error Message Control299962
! Ref: gnat_ugn/building_executable_programs_with_gnat id14300124
! Ref: f1300124
! Ref: gnat_ugn/building_executable_programs_with_gnat output-and-error-message-control300124
! Ref: f2300124
! Node: Warning Message Control308200
! Ref: gnat_ugn/building_executable_programs_with_gnat id15308349
! Ref: f3308349
! Ref: gnat_ugn/building_executable_programs_with_gnat warning-message-control308349
! Ref: ee308349
! Node: Info message Control360390
! Ref: gnat_ugn/building_executable_programs_with_gnat debugging-and-assertion-control360538
! Ref: f4360538
! Ref: gnat_ugn/building_executable_programs_with_gnat info-message-control360538
! Ref: f5360538
! Node: Debugging and Assertion Control360923
! Ref: gnat_ugn/building_executable_programs_with_gnat id16361065
! Ref: f6361065
! Node: Validity Checking364512
! Ref: gnat_ugn/building_executable_programs_with_gnat id17364648
! Ref: f7364648
! Ref: gnat_ugn/building_executable_programs_with_gnat validity-checking364648
! Ref: ea364648
! Node: Style Checking374740
! Ref: gnat_ugn/building_executable_programs_with_gnat id18374860
! Ref: f8374860
! Ref: gnat_ugn/building_executable_programs_with_gnat style-checking374860
! Ref: ef374860
! Node: Run-Time Checks392876
! Ref: gnat_ugn/building_executable_programs_with_gnat id19393008
! Ref: f9393008
! Ref: gnat_ugn/building_executable_programs_with_gnat run-time-checks393008
! Ref: ed393008
! Node: Using gcc for Syntax Checking399455
! Ref: gnat_ugn/building_executable_programs_with_gnat id20399604
! Ref: fa399604
! Ref: gnat_ugn/building_executable_programs_with_gnat using-gcc-for-syntax-checking399604
! Ref: fb399604
! Node: Using gcc for Semantic Checking401294
! Ref: gnat_ugn/building_executable_programs_with_gnat id21401463
! Ref: fc401463
! Ref: gnat_ugn/building_executable_programs_with_gnat using-gcc-for-semantic-checking401463
! Ref: fd401463
! Node: Compiling Different Versions of Ada402823
! Ref: gnat_ugn/building_executable_programs_with_gnat compiling-different-versions-of-ada402984
! Ref: 6402984
! Ref: gnat_ugn/building_executable_programs_with_gnat id22402984
! Ref: fe402984
! Node: Character Set Control407249
! Ref: gnat_ugn/building_executable_programs_with_gnat character-set-control407398
! Ref: 32407398
! Ref: gnat_ugn/building_executable_programs_with_gnat id23407398
! Ref: ff407398
! Node: File Naming Control412784
! Ref: gnat_ugn/building_executable_programs_with_gnat file-naming-control412925
! Ref: 100412925
! Ref: gnat_ugn/building_executable_programs_with_gnat id24412925
! Ref: 101412925
! Node: Subprogram Inlining Control413333
! Ref: gnat_ugn/building_executable_programs_with_gnat id25413477
! Ref: 102413477
! Ref: gnat_ugn/building_executable_programs_with_gnat subprogram-inlining-control413477
! Ref: 103413477
! Node: Auxiliary Output Control415354
! Ref: gnat_ugn/building_executable_programs_with_gnat auxiliary-output-control415496
! Ref: 105415496
! Ref: gnat_ugn/building_executable_programs_with_gnat id26415496
! Ref: 106415496
! Node: Debugging Control416673
! Ref: gnat_ugn/building_executable_programs_with_gnat debugging-control416814
! Ref: 107416814
! Ref: gnat_ugn/building_executable_programs_with_gnat id27416814
! Ref: 108416814
! Node: Exception Handling Control428668
! Ref: gnat_ugn/building_executable_programs_with_gnat exception-handling-control428815
! Ref: 109428815
! Ref: gnat_ugn/building_executable_programs_with_gnat id28428815
! Ref: 10a428815
! Node: Units to Sources Mapping Files431492
! Ref: gnat_ugn/building_executable_programs_with_gnat id29431645
! Ref: 10b431645
! Ref: gnat_ugn/building_executable_programs_with_gnat units-to-sources-mapping-files431645
! Ref: eb431645
! Node: Code Generation Control433584
! Ref: gnat_ugn/building_executable_programs_with_gnat code-generation-control433702
! Ref: 10c433702
! Ref: gnat_ugn/building_executable_programs_with_gnat id30433702
! Ref: 10d433702
! Node: Linker Switches434874
! Ref: gnat_ugn/building_executable_programs_with_gnat id31435022
! Ref: 10e435022
! Ref: gnat_ugn/building_executable_programs_with_gnat linker-switches435022
! Ref: 10f435022
! Node: Binding with gnatbind435384
! Ref: gnat_ugn/building_executable_programs_with_gnat binding-with-gnatbind435536
! Ref: cb435536
! Ref: gnat_ugn/building_executable_programs_with_gnat id32435536
! Ref: 110435536
! Node: Running gnatbind437060
! Ref: gnat_ugn/building_executable_programs_with_gnat id33437166
! Ref: 111437166
! Ref: gnat_ugn/building_executable_programs_with_gnat running-gnatbind437166
! Ref: 112437166
! Node: Switches for gnatbind440198
! Ref: gnat_ugn/building_executable_programs_with_gnat id34440332
! Ref: 113440332
! Ref: gnat_ugn/building_executable_programs_with_gnat switches-for-gnatbind440332
! Ref: 114440332
! Node: Consistency-Checking Modes454457
! Ref: gnat_ugn/building_executable_programs_with_gnat consistency-checking-modes454580
! Ref: 118454580
! Ref: gnat_ugn/building_executable_programs_with_gnat id35454580
! Ref: 119454580
! Node: Binder Error Message Control456399
! Ref: gnat_ugn/building_executable_programs_with_gnat binder-error-message-control456550
! Ref: 11a456550
! Ref: gnat_ugn/building_executable_programs_with_gnat id36456550
! Ref: 11b456550
! Node: Elaboration Control458794
! Ref: gnat_ugn/building_executable_programs_with_gnat elaboration-control458933
! Ref: 115458933
! Ref: gnat_ugn/building_executable_programs_with_gnat id37458933
! Ref: 11c458933
! Node: Output Control462236
! Ref: gnat_ugn/building_executable_programs_with_gnat id38462373
! Ref: 11d462373
! Ref: gnat_ugn/building_executable_programs_with_gnat output-control462373
! Ref: 11e462373
! Node: Dynamic Allocation Control464370
! Ref: gnat_ugn/building_executable_programs_with_gnat dynamic-allocation-control464522
! Ref: 116464522
! Ref: gnat_ugn/building_executable_programs_with_gnat id39464522
! Ref: 11f464522
! Node: Binding with Non-Ada Main Programs465143
! Ref: gnat_ugn/building_executable_programs_with_gnat binding-with-non-ada-main-programs465321
! Ref: 7f465321
! Ref: gnat_ugn/building_executable_programs_with_gnat id40465321
! Ref: 120465321
! Node: Binding Programs with No Main Subprogram468335
! Ref: gnat_ugn/building_executable_programs_with_gnat binding-programs-with-no-main-subprogram468478
! Ref: 121468478
! Ref: gnat_ugn/building_executable_programs_with_gnat id41468478
! Ref: 122468478
! Node: Command-Line Access469346
! Ref: gnat_ugn/building_executable_programs_with_gnat command-line-access469489
! Ref: 123469489
! Ref: gnat_ugn/building_executable_programs_with_gnat id42469489
! Ref: 124469489
! Node: Search Paths for gnatbind470407
! Ref: gnat_ugn/building_executable_programs_with_gnat id43470555
! Ref: 125470555
! Ref: gnat_ugn/building_executable_programs_with_gnat search-paths-for-gnatbind470555
! Ref: 77470555
! Node: Examples of gnatbind Usage473372
! Ref: gnat_ugn/building_executable_programs_with_gnat examples-of-gnatbind-usage473492
! Ref: 126473492
! Ref: gnat_ugn/building_executable_programs_with_gnat id44473492
! Ref: 127473492
! Node: Linking with gnatlink474340
! Ref: gnat_ugn/building_executable_programs_with_gnat id45474503
! Ref: 128474503
! Ref: gnat_ugn/building_executable_programs_with_gnat linking-with-gnatlink474503
! Ref: cc474503
! Node: Running gnatlink475039
! Ref: gnat_ugn/building_executable_programs_with_gnat id46475145
! Ref: 129475145
! Ref: gnat_ugn/building_executable_programs_with_gnat running-gnatlink475145
! Ref: 12a475145
! Node: Switches for gnatlink477617
! Ref: gnat_ugn/building_executable_programs_with_gnat id47477723
! Ref: 12d477723
! Ref: gnat_ugn/building_executable_programs_with_gnat switches-for-gnatlink477723
! Ref: 12e477723
! Node: Using the GNU make Utility482433
! Ref: gnat_ugn/building_executable_programs_with_gnat id48482602
! Ref: 12f482602
! Ref: gnat_ugn/building_executable_programs_with_gnat using-the-gnu-make-utility482602
! Ref: 71482602
! Node: Using gnatmake in a Makefile483290
! Ref: gnat_ugn/building_executable_programs_with_gnat id49483436
! Ref: 130483436
! Ref: gnat_ugn/building_executable_programs_with_gnat using-gnatmake-in-a-makefile483436
! Ref: 131483436
! Node: Automatically Creating a List of Directories487464
! Ref: gnat_ugn/building_executable_programs_with_gnat automatically-creating-a-list-of-directories487655
! Ref: 132487655
! Ref: gnat_ugn/building_executable_programs_with_gnat id50487655
! Ref: 133487655
! Node: Generating the Command Line Switches490610
! Ref: gnat_ugn/building_executable_programs_with_gnat generating-the-command-line-switches490810
! Ref: 134490810
! Ref: gnat_ugn/building_executable_programs_with_gnat id51490810
! Ref: 135490810
! Node: Overcoming Command Line Length Limits491588
! Ref: gnat_ugn/building_executable_programs_with_gnat id52491735
! Ref: 136491735
! Ref: gnat_ugn/building_executable_programs_with_gnat overcoming-command-line-length-limits491735
! Ref: 137491735
! Node: GNAT with the LLVM Back End494040
! Ref: gnat_ugn/building_executable_programs_with_gnat gnat-with-the-llvm-back-end494179
! Ref: 138494179
! Ref: gnat_ugn/building_executable_programs_with_gnat gnatllvm494179
! Ref: 7494179
! Node: GNAT Utility Programs499053
! Ref: gnat_ugn/gnat_utility_programs doc499198
! Ref: 139499198
! Ref: gnat_ugn/gnat_utility_programs gnat-utility-programs499198
! Ref: c499198
! Ref: gnat_ugn/gnat_utility_programs id1499198
! Ref: 13a499198
! Node: The File Cleanup Utility gnatclean499765
! Ref: gnat_ugn/gnat_utility_programs id2499899
! Ref: 13d499899
! Ref: gnat_ugn/gnat_utility_programs the-file-cleanup-utility-gnatclean499899
! Ref: 13b499899
! Node: Running gnatclean500300
! Ref: gnat_ugn/gnat_utility_programs id3500421
! Ref: 13e500421
! Ref: gnat_ugn/gnat_utility_programs running-gnatclean500421
! Ref: 13f500421
! Node: Switches for gnatclean501088
! Ref: gnat_ugn/gnat_utility_programs id4501209
! Ref: 140501209
! Ref: gnat_ugn/gnat_utility_programs switches-for-gnatclean501209
! Ref: 141501209
! Node: The GNAT Library Browser gnatls504384
! Ref: gnat_ugn/gnat_utility_programs id5504518
! Ref: 142504518
! Ref: gnat_ugn/gnat_utility_programs the-gnat-library-browser-gnatls504518
! Ref: 13c504518
! Node: Running gnatls504923
! Ref: gnat_ugn/gnat_utility_programs id6505035
! Ref: 143505035
! Ref: gnat_ugn/gnat_utility_programs running-gnatls505035
! Ref: 144505035
! Node: Switches for gnatls507607
! Ref: gnat_ugn/gnat_utility_programs id7507751
! Ref: 145507751
! Ref: gnat_ugn/gnat_utility_programs switches-for-gnatls507751
! Ref: 146507751
! Node: Example of gnatls Usage510235
! Ref: gnat_ugn/gnat_utility_programs example-of-gnatls-usage510356
! Ref: 147510356
! Ref: gnat_ugn/gnat_utility_programs id8510356
! Ref: 148510356
! Node: GNAT and Program Execution512780
! Ref: gnat_ugn/gnat_and_program_execution doc512916
! Ref: 149512916
! Ref: gnat_ugn/gnat_and_program_execution gnat-and-program-execution512916
! Ref: d512916
! Ref: gnat_ugn/gnat_and_program_execution id1512916
! Ref: 14a512916
! Node: Running and Debugging Ada Programs513560
! Ref: gnat_ugn/gnat_and_program_execution id2513677
! Ref: 14b513677
! Ref: gnat_ugn/gnat_and_program_execution running-and-debugging-ada-programs513677
! Ref: 152513677
! Node: The GNAT Debugger GDB515033
! Ref: gnat_ugn/gnat_and_program_execution id3515147
! Ref: 153515147
! Ref: gnat_ugn/gnat_and_program_execution the-gnat-debugger-gdb515147
! Ref: 154515147
! Node: Running GDB518256
! Ref: gnat_ugn/gnat_and_program_execution id4518407
! Ref: 155518407
! Ref: gnat_ugn/gnat_and_program_execution running-gdb518407
! Ref: 156518407
! Node: Introduction to GDB Commands519199
! Ref: gnat_ugn/gnat_and_program_execution id5519350
! Ref: 157519350
! Ref: gnat_ugn/gnat_and_program_execution introduction-to-gdb-commands519350
! Ref: 158519350
! Node: Using Ada Expressions525686
! Ref: gnat_ugn/gnat_and_program_execution id6525858
! Ref: 159525858
! Ref: gnat_ugn/gnat_and_program_execution using-ada-expressions525858
! Ref: 15a525858
! Node: Calling User-Defined Subprograms526946
! Ref: gnat_ugn/gnat_and_program_execution calling-user-defined-subprograms527126
! Ref: 15b527126
! Ref: gnat_ugn/gnat_and_program_execution id7527126
! Ref: 15c527126
! Node: Using the next Command in a Function529886
! Ref: gnat_ugn/gnat_and_program_execution id8530084
! Ref: 15d530084
! Ref: gnat_ugn/gnat_and_program_execution using-the-next-command-in-a-function530084
! Ref: 15e530084
! Node: Stopping When Ada Exceptions Are Raised531111
! Ref: gnat_ugn/gnat_and_program_execution id9531286
! Ref: 15f531286
! Ref: gnat_ugn/gnat_and_program_execution stopping-when-ada-exceptions-are-raised531286
! Ref: 160531286
! Node: Ada Tasks532329
! Ref: gnat_ugn/gnat_and_program_execution ada-tasks532491
! Ref: 161532491
! Ref: gnat_ugn/gnat_and_program_execution id10532491
! Ref: 162532491
! Node: Debugging Generic Units534699
! Ref: gnat_ugn/gnat_and_program_execution debugging-generic-units534853
! Ref: 163534853
! Ref: gnat_ugn/gnat_and_program_execution id11534853
! Ref: 164534853
! Node: Remote Debugging with gdbserver536174
! Ref: gnat_ugn/gnat_and_program_execution id12536368
! Ref: 165536368
! Ref: gnat_ugn/gnat_and_program_execution remote-debugging-with-gdbserver536368
! Ref: 166536368
! Node: GNAT Abnormal Termination or Failure to Terminate538347
! Ref: gnat_ugn/gnat_and_program_execution gnat-abnormal-termination-or-failure-to-terminate538558
! Ref: 167538558
! Ref: gnat_ugn/gnat_and_program_execution id13538558
! Ref: 168538558
! Node: Naming Conventions for GNAT Source Files541033
! Ref: gnat_ugn/gnat_and_program_execution id14541251
! Ref: 169541251
! Ref: gnat_ugn/gnat_and_program_execution naming-conventions-for-gnat-source-files541251
! Ref: 16a541251
! Node: Getting Internal Debugging Information544191
! Ref: gnat_ugn/gnat_and_program_execution getting-internal-debugging-information544375
! Ref: 16b544375
! Ref: gnat_ugn/gnat_and_program_execution id15544375
! Ref: 16c544375
! Node: Stack Traceback545413
! Ref: gnat_ugn/gnat_and_program_execution id16545593
! Ref: 16d545593
! Ref: gnat_ugn/gnat_and_program_execution stack-traceback545593
! Ref: 16e545593
! Node: Non-Symbolic Traceback546513
! Ref: gnat_ugn/gnat_and_program_execution id17546616
! Ref: 16f546616
! Ref: gnat_ugn/gnat_and_program_execution non-symbolic-traceback546616
! Ref: 170546616
! Node: Symbolic Traceback555800
! Ref: gnat_ugn/gnat_and_program_execution id18555903
! Ref: 171555903
! Ref: gnat_ugn/gnat_and_program_execution symbolic-traceback555903
! Ref: 172555903
! Node: Pretty-Printers for the GNAT runtime558978
! Ref: gnat_ugn/gnat_and_program_execution id19559111
! Ref: 173559111
! Ref: gnat_ugn/gnat_and_program_execution pretty-printers-for-the-gnat-runtime559111
! Ref: 174559111
! Ref: Pretty-Printers for the GNAT runtime-Footnote-1561876
! Node: Profiling561960
! Ref: gnat_ugn/gnat_and_program_execution id20562107
! Ref: 175562107
! Ref: gnat_ugn/gnat_and_program_execution profiling562107
! Ref: 14c562107
! Node: Profiling an Ada Program with gprof562268
! Ref: gnat_ugn/gnat_and_program_execution id21562351
! Ref: 176562351
! Ref: gnat_ugn/gnat_and_program_execution profiling-an-ada-program-with-gprof562351
! Ref: 177562351
! Node: Compilation for profiling563582
! Ref: gnat_ugn/gnat_and_program_execution compilation-for-profiling563707
! Ref: 178563707
! Ref: gnat_ugn/gnat_and_program_execution id22563707
! Ref: 179563707
! Node: Program execution564501
! Ref: gnat_ugn/gnat_and_program_execution id23564648
! Ref: 17a564648
! Ref: gnat_ugn/gnat_and_program_execution program-execution564648
! Ref: 17b564648
! Node: Running gprof565163
! Ref: gnat_ugn/gnat_and_program_execution id24565320
! Ref: 17c565320
! Ref: gnat_ugn/gnat_and_program_execution running-gprof565320
! Ref: 17d565320
! Node: Interpretation of profiling results567988
! Ref: gnat_ugn/gnat_and_program_execution id25568119
! Ref: 17e568119
! Ref: gnat_ugn/gnat_and_program_execution interpretation-of-profiling-results568119
! Ref: 17f568119
! Node: Improving Performance568803
! Ref: gnat_ugn/gnat_and_program_execution id26568947
! Ref: 14d568947
! Ref: gnat_ugn/gnat_and_program_execution improving-performance568947
! Ref: 180568947
! Node: Performance Considerations569456
! Ref: gnat_ugn/gnat_and_program_execution id27569570
! Ref: 181569570
! Ref: gnat_ugn/gnat_and_program_execution performance-considerations569570
! Ref: 182569570
! Node: Controlling Run-Time Checks570763
! Ref: gnat_ugn/gnat_and_program_execution controlling-run-time-checks570883
! Ref: 183570883
! Ref: gnat_ugn/gnat_and_program_execution id28570883
! Ref: 184570883
! Node: Use of Restrictions572435
! Ref: gnat_ugn/gnat_and_program_execution id29572583
! Ref: 185572583
! Ref: gnat_ugn/gnat_and_program_execution use-of-restrictions572583
! Ref: 186572583
! Node: Optimization Levels573968
! Ref: gnat_ugn/gnat_and_program_execution id30574113
! Ref: 187574113
! Ref: gnat_ugn/gnat_and_program_execution optimization-levels574113
! Ref: f0574113
! Node: Debugging Optimized Code579089
! Ref: gnat_ugn/gnat_and_program_execution debugging-optimized-code579238
! Ref: 188579238
! Ref: gnat_ugn/gnat_and_program_execution id31579238
! Ref: 189579238
! Node: Inlining of Subprograms584182
! Ref: gnat_ugn/gnat_and_program_execution id32584337
! Ref: 18a584337
! Ref: gnat_ugn/gnat_and_program_execution inlining-of-subprograms584337
! Ref: 104584337
! Node: Floating Point Operations589106
! Ref: gnat_ugn/gnat_and_program_execution floating-point-operations589259
! Ref: 18b589259
! Ref: gnat_ugn/gnat_and_program_execution id33589259
! Ref: 18c589259
! Node: Vectorization of loops591449
! Ref: gnat_ugn/gnat_and_program_execution id34591606
! Ref: 18d591606
! Ref: gnat_ugn/gnat_and_program_execution vectorization-of-loops591606
! Ref: 18e591606
! Node: Other Optimization Switches596443
! Ref: gnat_ugn/gnat_and_program_execution id35596607
! Ref: 18f596607
! Ref: gnat_ugn/gnat_and_program_execution other-optimization-switches596607
! Ref: 190596607
! Node: Optimization and Strict Aliasing597311
! Ref: gnat_ugn/gnat_and_program_execution id36597487
! Ref: 191597487
! Ref: gnat_ugn/gnat_and_program_execution optimization-and-strict-aliasing597487
! Ref: e7597487
! Node: Aliased Variables and Optimization607981
! Ref: gnat_ugn/gnat_and_program_execution aliased-variables-and-optimization608163
! Ref: 192608163
! Ref: gnat_ugn/gnat_and_program_execution id37608163
! Ref: 193608163
! Node: Atomic Variables and Optimization610344
! Ref: gnat_ugn/gnat_and_program_execution atomic-variables-and-optimization610519
! Ref: 194610519
! Ref: gnat_ugn/gnat_and_program_execution id38610519
! Ref: 195610519
! Node: Passive Task Optimization613180
! Ref: gnat_ugn/gnat_and_program_execution id39613312
! Ref: 196613312
! Ref: gnat_ugn/gnat_and_program_execution passive-task-optimization613312
! Ref: 197613312
! Node: Text_IO Suggestions615264
! Ref: gnat_ugn/gnat_and_program_execution id40615455
! Ref: 198615455
! Ref: gnat_ugn/gnat_and_program_execution text-io-suggestions615455
! Ref: 199615455
! Node: Reducing Size of Executables with Unused Subprogram/Data Elimination616391
! Ref: gnat_ugn/gnat_and_program_execution id41616547
! Ref: 19a616547
! Ref: gnat_ugn/gnat_and_program_execution reducing-size-of-executables-with-unused-subprogram-data-elimination616547
! Ref: 19b616547
! Node: About unused subprogram/data elimination616967
! Ref: gnat_ugn/gnat_and_program_execution about-unused-subprogram-data-elimination617142
! Ref: 19c617142
! Ref: gnat_ugn/gnat_and_program_execution id42617142
! Ref: 19d617142
! Node: Compilation options617761
! Ref: gnat_ugn/gnat_and_program_execution compilation-options617990
! Ref: 19e617990
! Ref: gnat_ugn/gnat_and_program_execution id43617990
! Ref: 19f617990
! Node: Example of unused subprogram/data elimination619485
! Ref: gnat_ugn/gnat_and_program_execution example-of-unused-subprogram-data-elimination619665
! Ref: 1a0619665
! Ref: gnat_ugn/gnat_and_program_execution id44619665
! Ref: 1a1619665
! Node: Overflow Check Handling in GNAT621134
! Ref: gnat_ugn/gnat_and_program_execution id45621311
! Ref: 14e621311
! Ref: gnat_ugn/gnat_and_program_execution overflow-check-handling-in-gnat621311
! Ref: 1a2621311
! Node: Background621594
! Ref: gnat_ugn/gnat_and_program_execution background621714
! Ref: 1a3621714
! Ref: gnat_ugn/gnat_and_program_execution id46621714
! Ref: 1a4621714
! Node: Management of Overflows in GNAT625392
! Ref: gnat_ugn/gnat_and_program_execution id47625548
! Ref: 1a5625548
! Ref: gnat_ugn/gnat_and_program_execution management-of-overflows-in-gnat625548
! Ref: 1a6625548
! Node: Specifying the Desired Mode630545
! Ref: gnat_ugn/gnat_and_program_execution id48630707
! Ref: 1a7630707
! Ref: gnat_ugn/gnat_and_program_execution specifying-the-desired-mode630707
! Ref: ec630707
! Node: Default Settings633854
! Ref: gnat_ugn/gnat_and_program_execution default-settings634005
! Ref: 1a8634005
! Ref: gnat_ugn/gnat_and_program_execution id49634005
! Ref: 1a9634005
! Node: Implementation Notes634560
! Ref: gnat_ugn/gnat_and_program_execution id50634675
! Ref: 1aa634675
! Ref: gnat_ugn/gnat_and_program_execution implementation-notes634675
! Ref: 1ab634675
! Node: Performing Dimensionality Analysis in GNAT636817
! Ref: gnat_ugn/gnat_and_program_execution id51636997
! Ref: 14f636997
! Ref: gnat_ugn/gnat_and_program_execution performing-dimensionality-analysis-in-gnat636997
! Ref: 1ac636997
! Node: Stack Related Facilities648560
! Ref: gnat_ugn/gnat_and_program_execution id52648733
! Ref: 150648733
! Ref: gnat_ugn/gnat_and_program_execution stack-related-facilities648733
! Ref: 1ad648733
! Node: Stack Overflow Checking649057
! Ref: gnat_ugn/gnat_and_program_execution id53649179
! Ref: 1ae649179
! Ref: gnat_ugn/gnat_and_program_execution stack-overflow-checking649179
! Ref: e8649179
! Node: Static Stack Usage Analysis650959
! Ref: gnat_ugn/gnat_and_program_execution id54651118
! Ref: 1af651118
! Ref: gnat_ugn/gnat_and_program_execution static-stack-usage-analysis651118
! Ref: e9651118
! Node: Dynamic Stack Usage Analysis652603
! Ref: gnat_ugn/gnat_and_program_execution dynamic-stack-usage-analysis652730
! Ref: 117652730
! Ref: gnat_ugn/gnat_and_program_execution id55652730
! Ref: 1b0652730
! Node: Memory Management Issues654684
! Ref: gnat_ugn/gnat_and_program_execution id56654806
! Ref: 151654806
! Ref: gnat_ugn/gnat_and_program_execution memory-management-issues654806
! Ref: 1b1654806
! Node: Some Useful Memory Pools655163
! Ref: gnat_ugn/gnat_and_program_execution id57655287
! Ref: 1b2655287
! Ref: gnat_ugn/gnat_and_program_execution some-useful-memory-pools655287
! Ref: 1b3655287
! Node: The GNAT Debug Pool Facility657969
! Ref: gnat_ugn/gnat_and_program_execution id58658093
! Ref: 1b4658093
! Ref: gnat_ugn/gnat_and_program_execution the-gnat-debug-pool-facility658093
! Ref: 1b5658093
! Node: Platform-Specific Information663093
! Ref: gnat_ugn/platform_specific_information doc663237
! Ref: 1b6663237
! Ref: gnat_ugn/platform_specific_information id1663237
! Ref: 1b7663237
! Ref: gnat_ugn/platform_specific_information platform-specific-information663237
! Ref: e663237
! Node: Run-Time Libraries663637
! Ref: gnat_ugn/platform_specific_information id2663761
! Ref: 1b8663761
! Ref: gnat_ugn/platform_specific_information run-time-libraries663761
! Ref: 1b9663761
! Node: Summary of Run-Time Configurations665053
! Ref: gnat_ugn/platform_specific_information id3665144
! Ref: 1ba665144
! Ref: gnat_ugn/platform_specific_information summary-of-run-time-configurations665144
! Ref: 1bb665144
! Node: Specifying a Run-Time Library666457
! Ref: gnat_ugn/platform_specific_information id4666606
! Ref: 1bc666606
! Ref: gnat_ugn/platform_specific_information specifying-a-run-time-library666606
! Ref: 1bd666606
! Node: GNU/Linux Topics668900
! Ref: gnat_ugn/platform_specific_information gnu-linux-topics669055
! Ref: 1be669055
! Ref: gnat_ugn/platform_specific_information id5669055
! Ref: 1bf669055
! Node: Required Packages on GNU/Linux669428
! Ref: gnat_ugn/platform_specific_information id6669585
! Ref: 1c0669585
! Ref: gnat_ugn/platform_specific_information required-packages-on-gnu-linux669585
! Ref: 1c1669585
! Node: Position Independent Executable PIE Enabled by Default on Linux670337
! Ref: gnat_ugn/platform_specific_information pie-enabled-by-default-on-linux670548
! Ref: 1c2670548
! Ref: gnat_ugn/platform_specific_information position-independent-executable-pie-enabled-by-default-on-linux670548
! Ref: 1c3670548
! Ref: gnat_ugn/platform_specific_information choosing-the-scheduling-policy-with-gnu-linux672545
! Ref: 1c4672545
! Node: Choosing the Scheduling Policy with GNU/Linux672545
! Ref: gnat_ugn/platform_specific_information id7672749
! Ref: 1c5672749
! Node: A GNU/Linux Debug Quirk674264
! Ref: gnat_ugn/platform_specific_information a-gnu-linux-debug-quirk674396
! Ref: 1c6674396
! Ref: gnat_ugn/platform_specific_information id8674396
! Ref: 1c7674396
! Node: Microsoft Windows Topics675147
! Ref: gnat_ugn/platform_specific_information id9675286
! Ref: 1c8675286
! Ref: gnat_ugn/platform_specific_information microsoft-windows-topics675286
! Ref: 1c9675286
! Node: Using GNAT on Windows675755
! Ref: gnat_ugn/platform_specific_information id10675884
! Ref: 1ca675884
! Ref: gnat_ugn/platform_specific_information using-gnat-on-windows675884
! Ref: 1cb675884
! Node: Using a network installation of GNAT678642
! Ref: gnat_ugn/platform_specific_information id11678810
! Ref: 1cc678810
! Ref: gnat_ugn/platform_specific_information using-a-network-installation-of-gnat678810
! Ref: 1cd678810
! Node: CONSOLE and WINDOWS subsystems679713
! Ref: gnat_ugn/platform_specific_information console-and-windows-subsystems679875
! Ref: 1ce679875
! Ref: gnat_ugn/platform_specific_information id12679875
! Ref: 1cf679875
! Node: Temporary Files680377
! Ref: gnat_ugn/platform_specific_information id13680544
! Ref: 1d0680544
! Ref: gnat_ugn/platform_specific_information temporary-files680544
! Ref: 1d1680544
! Node: Disabling Command Line Argument Expansion681209
! Ref: gnat_ugn/platform_specific_information disabling-command-line-argument-expansion681389
! Ref: 1d2681389
! Node: Choosing the Scheduling Policy with Windows683004
! Ref: gnat_ugn/platform_specific_information choosing-the-scheduling-policy-with-windows683192
! Ref: 1d3683192
! Ref: gnat_ugn/platform_specific_information id14683192
! Ref: 1d4683192
! Node: Windows Socket Timeouts683924
! Ref: gnat_ugn/platform_specific_information windows-socket-timeouts684108
! Ref: 1d5684108
! Node: Mixed-Language Programming on Windows686316
! Ref: gnat_ugn/platform_specific_information id15686481
! Ref: 1d6686481
! Ref: gnat_ugn/platform_specific_information mixed-language-programming-on-windows686481
! Ref: 1d7686481
! Node: Windows Calling Conventions689049
! Ref: gnat_ugn/platform_specific_information id16689204
! Ref: 1da689204
! Ref: gnat_ugn/platform_specific_information windows-calling-conventions689204
! Ref: 1db689204
! Node: C Calling Convention690135
! Ref: gnat_ugn/platform_specific_information c-calling-convention690256
! Ref: 1dc690256
! Ref: gnat_ugn/platform_specific_information id17690256
! Ref: 1dd690256
! Node: Stdcall Calling Convention691724
! Ref: gnat_ugn/platform_specific_information id18691878
! Ref: 1df691878
! Ref: gnat_ugn/platform_specific_information stdcall-calling-convention691878
! Ref: 1de691878
! Node: Win32 Calling Convention694650
! Ref: gnat_ugn/platform_specific_information id19694806
! Ref: 1e0694806
! Ref: gnat_ugn/platform_specific_information win32-calling-convention694806
! Ref: 1e1694806
! Node: DLL Calling Convention695000
! Ref: gnat_ugn/platform_specific_information dll-calling-convention695121
! Ref: 1e2695121
! Ref: gnat_ugn/platform_specific_information id20695121
! Ref: 1e3695121
! Node: Introduction to Dynamic Link Libraries DLLs695311
! Ref: gnat_ugn/platform_specific_information id21695495
! Ref: 1e4695495
! Ref: gnat_ugn/platform_specific_information introduction-to-dynamic-link-libraries-dlls695495
! Ref: 1e5695495
! Node: Using DLLs with GNAT698854
! Ref: gnat_ugn/platform_specific_information id22699048
! Ref: 1e7699048
! Ref: gnat_ugn/platform_specific_information using-dlls-with-gnat699048
! Ref: 1d8699048
! Node: Creating an Ada Spec for the DLL Services701033
! Ref: gnat_ugn/platform_specific_information creating-an-ada-spec-for-the-dll-services701168
! Ref: 1e8701168
! Ref: gnat_ugn/platform_specific_information id23701168
! Ref: 1e9701168
! Node: Creating an Import Library702132
! Ref: gnat_ugn/platform_specific_information creating-an-import-library702267
! Ref: 1ea702267
! Ref: gnat_ugn/platform_specific_information id24702267
! Ref: 1eb702267
! Ref: gnat_ugn/platform_specific_information the-definition-file702693
! Ref: 1e6702693
! Ref: gnat_ugn/platform_specific_information create-def-file-automatically704002
! Ref: 1ec704002
! Ref: gnat_ugn/platform_specific_information gnat-style-import-library705160
! Ref: 1ed705160
! Ref: gnat_ugn/platform_specific_information msvs-style-import-library706104
! Ref: 1ef706104
! Node: Building DLLs with GNAT Project files706832
! Ref: gnat_ugn/platform_specific_information building-dlls-with-gnat-project-files707006
! Ref: 1d9707006
! Ref: gnat_ugn/platform_specific_information id25707006
! Ref: 1f0707006
! Node: Building DLLs with GNAT707496
! Ref: gnat_ugn/platform_specific_information building-dlls-with-gnat707676
! Ref: 1f1707676
! Ref: gnat_ugn/platform_specific_information id26707676
! Ref: 1f2707676
! Node: Building DLLs with gnatdll709569
! Ref: gnat_ugn/platform_specific_information building-dlls-with-gnatdll709737
! Ref: 1f3709737
! Ref: gnat_ugn/platform_specific_information id27709737
! Ref: 1f4709737
! Node: Limitations When Using Ada DLLs from Ada712235
! Ref: gnat_ugn/platform_specific_information limitations-when-using-ada-dlls-from-ada712371
! Ref: 1f8712371
! Node: Exporting Ada Entities713277
! Ref: gnat_ugn/platform_specific_information exporting-ada-entities713446
! Ref: 1f5713446
! Ref: gnat_ugn/platform_specific_information id28713446
! Ref: 1f9713446
! Node: Ada DLLs and Elaboration716337
! Ref: gnat_ugn/platform_specific_information ada-dlls-and-elaboration716457
! Ref: 1f6716457
! Ref: gnat_ugn/platform_specific_information id29716457
! Ref: 1fb716457
! Node: Ada DLLs and Finalization717884
! Ref: gnat_ugn/platform_specific_information ada-dlls-and-finalization718057
! Ref: 1f7718057
! Ref: gnat_ugn/platform_specific_information id30718057
! Ref: 1fc718057
! Node: Creating a Spec for Ada DLLs718728
! Ref: gnat_ugn/platform_specific_information creating-a-spec-for-ada-dlls718901
! Ref: 1fd718901
! Ref: gnat_ugn/platform_specific_information id31718901
! Ref: 1fe718901
! Node: Creating the Definition File720313
! Ref: gnat_ugn/platform_specific_information creating-the-definition-file720430
! Ref: 1fa720430
! Ref: gnat_ugn/platform_specific_information id32720430
! Ref: 1ff720430
! Node: Using gnatdll721191
! Ref: gnat_ugn/platform_specific_information id33721308
! Ref: 200721308
! Ref: gnat_ugn/platform_specific_information using-gnatdll721308
! Ref: 1ee721308
! Ref: gnat_ugn/platform_specific_information using-dlltool727648
! Ref: 201727648
! Node: GNAT and Windows Resources729008
! Ref: gnat_ugn/platform_specific_information gnat-and-windows-resources729213
! Ref: 202729213
! Ref: gnat_ugn/platform_specific_information id34729213
! Ref: 203729213
! Node: Building Resources730998
! Ref: gnat_ugn/platform_specific_information building-resources731109
! Ref: 204731109
! Ref: gnat_ugn/platform_specific_information id35731109
! Ref: 205731109
! Node: Compiling Resources731679
! Ref: gnat_ugn/platform_specific_information compiling-resources731814
! Ref: 206731814
! Ref: gnat_ugn/platform_specific_information id36731814
! Ref: 207731814
! Node: Using Resources732745
! Ref: gnat_ugn/platform_specific_information id37732853
! Ref: 208732853
! Ref: gnat_ugn/platform_specific_information using-resources732853
! Ref: 209732853
! Node: Using GNAT DLLs from Microsoft Visual Studio Applications733143
! Ref: gnat_ugn/platform_specific_information using-gnat-dll-from-msvs733335
! Ref: 20a733335
! Ref: gnat_ugn/platform_specific_information using-gnat-dlls-from-microsoft-visual-studio-applications733335
! Ref: 20b733335
! Node: Debugging a DLL734921
! Ref: gnat_ugn/platform_specific_information debugging-a-dll735119
! Ref: 20c735119
! Ref: gnat_ugn/platform_specific_information id38735119
! Ref: 20d735119
! Node: Program and DLL Both Built with GCC/GNAT735991
! Ref: gnat_ugn/platform_specific_information id39736154
! Ref: 20e736154
! Ref: gnat_ugn/platform_specific_information program-and-dll-both-built-with-gcc-gnat736154
! Ref: 20f736154
! Node: Program Built with Foreign Tools and DLL Built with GCC/GNAT737467
! Ref: gnat_ugn/platform_specific_information id40737630
! Ref: 210737630
! Ref: gnat_ugn/platform_specific_information program-built-with-foreign-tools-and-dll-built-with-gcc-gnat737630
! Ref: 211737630
! Node: Setting Stack Size from gnatlink741073
! Ref: gnat_ugn/platform_specific_information id41741245
! Ref: 212741245
! Ref: gnat_ugn/platform_specific_information setting-stack-size-from-gnatlink741245
! Ref: 12b741245
! Node: Setting Heap Size from gnatlink742442
! Ref: gnat_ugn/platform_specific_information id42742590
! Ref: 213742590
! Ref: gnat_ugn/platform_specific_information setting-heap-size-from-gnatlink742590
! Ref: 12c742590
! Node: Windows Specific Add-Ons743273
! Ref: gnat_ugn/platform_specific_information win32-specific-addons743406
! Ref: 214743406
! Ref: gnat_ugn/platform_specific_information windows-specific-add-ons743406
! Ref: 215743406
! Node: Win32Ada743557
! Ref: gnat_ugn/platform_specific_information id43743643
! Ref: 216743643
! Ref: gnat_ugn/platform_specific_information win32ada743643
! Ref: 217743643
! Node: wPOSIX744235
! Ref: gnat_ugn/platform_specific_information id44744321
! Ref: 218744321
! Ref: gnat_ugn/platform_specific_information wposix744321
! Ref: 219744321
! Node: Mac OS Topics745037
! Ref: gnat_ugn/platform_specific_information id45745151
! Ref: 21a745151
! Ref: gnat_ugn/platform_specific_information mac-os-topics745151
! Ref: 21b745151
! Node: Codesigning the Debugger745304
! Ref: gnat_ugn/platform_specific_information codesigning-the-debugger745380
! Ref: 21c745380
! Node: Example of Binder Output File747385
! Ref: gnat_ugn/example_of_binder_output doc747537
! Ref: 21d747537
! Ref: gnat_ugn/example_of_binder_output example-of-binder-output-file747537
! Ref: f747537
! Ref: gnat_ugn/example_of_binder_output id1747537
! Ref: 21e747537
! Node: Elaboration Order Handling in GNAT778577
! Ref: gnat_ugn/elaboration_order_handling_in_gnat doc778716
! Ref: 21f778716
! Ref: gnat_ugn/elaboration_order_handling_in_gnat elaboration-order-handling-in-gnat778716
! Ref: 10778716
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id1778716
! Ref: 220778716
! Node: Elaboration Code779467
! Ref: gnat_ugn/elaboration_order_handling_in_gnat elaboration-code779582
! Ref: 221779582
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id2779582
! Ref: 222779582
! Node: Elaboration Order783480
! Ref: gnat_ugn/elaboration_order_handling_in_gnat elaboration-order783634
! Ref: 223783634
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id3783634
! Ref: 224783634
! Node: Checking the Elaboration Order787306
! Ref: gnat_ugn/elaboration_order_handling_in_gnat checking-the-elaboration-order787484
! Ref: 225787484
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id4787484
! Ref: 226787484
! Node: Controlling the Elaboration Order in Ada789180
! Ref: gnat_ugn/elaboration_order_handling_in_gnat controlling-the-elaboration-order-in-ada789382
! Ref: 227789382
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id5789382
! Ref: 228789382
! Node: Controlling the Elaboration Order in GNAT797955
! Ref: gnat_ugn/elaboration_order_handling_in_gnat controlling-the-elaboration-order-in-gnat798152
! Ref: 229798152
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id6798152
! Ref: 22a798152
! Node: Mixing Elaboration Models802020
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id7802192
! Ref: 22b802192
! Ref: gnat_ugn/elaboration_order_handling_in_gnat mixing-elaboration-models802192
! Ref: 22c802192
! Node: ABE Diagnostics803211
! Ref: gnat_ugn/elaboration_order_handling_in_gnat abe-diagnostics803359
! Ref: 22d803359
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id8803359
! Ref: 22e803359
! Node: SPARK Diagnostics806887
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id9807035
! Ref: 22f807035
! Ref: gnat_ugn/elaboration_order_handling_in_gnat spark-diagnostics807035
! Ref: 230807035
! Node: Elaboration Circularities807800
! Ref: gnat_ugn/elaboration_order_handling_in_gnat elaboration-circularities807968
! Ref: 231807968
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id10807968
! Ref: 232807968
! Node: Resolving Elaboration Circularities810223
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id11810411
! Ref: 233810411
! Ref: gnat_ugn/elaboration_order_handling_in_gnat resolving-elaboration-circularities810411
! Ref: 234810411
! Node: Elaboration-related Compiler Switches817892
! Ref: gnat_ugn/elaboration_order_handling_in_gnat elaboration-related-compiler-switches818100
! Ref: 235818100
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id12818100
! Ref: 236818100
! Node: Summary of Procedures for Elaboration Control822950
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id13823162
! Ref: 237823162
! Ref: gnat_ugn/elaboration_order_handling_in_gnat summary-of-procedures-for-elaboration-control823162
! Ref: 238823162
! Node: Inspecting the Chosen Elaboration Order824972
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id14825138
! Ref: 239825138
! Ref: gnat_ugn/elaboration_order_handling_in_gnat inspecting-the-chosen-elaboration-order825138
! Ref: 23a825138
! Node: Inline Assembler829753
! Ref: gnat_ugn/inline_assembler doc829893
! Ref: 23b829893
! Ref: gnat_ugn/inline_assembler id1829893
! Ref: 23c829893
! Ref: gnat_ugn/inline_assembler inline-assembler829893
! Ref: 11829893
! Node: Basic Assembler Syntax831443
! Ref: gnat_ugn/inline_assembler basic-assembler-syntax831565
! Ref: 23d831565
! Ref: gnat_ugn/inline_assembler id2831565
! Ref: 23e831565
! Node: A Simple Example of Inline Assembler833616
! Ref: gnat_ugn/inline_assembler a-simple-example-of-inline-assembler833783
! Ref: 23f833783
! Ref: gnat_ugn/inline_assembler id3833783
! Ref: 240833783
! Node: Output Variables in Inline Assembler837072
! Ref: gnat_ugn/inline_assembler id4837252
! Ref: 241837252
! Ref: gnat_ugn/inline_assembler output-variables-in-inline-assembler837252
! Ref: 242837252
! Node: Input Variables in Inline Assembler845421
! Ref: gnat_ugn/inline_assembler id5845595
! Ref: 243845595
! Ref: gnat_ugn/inline_assembler input-variables-in-inline-assembler845595
! Ref: 244845595
! Node: Inlining Inline Assembler Code847979
! Ref: gnat_ugn/inline_assembler id6848140
! Ref: 245848140
! Ref: gnat_ugn/inline_assembler inlining-inline-assembler-code848140
! Ref: 246848140
! Node: Other Asm Functionality850040
! Ref: gnat_ugn/inline_assembler id7850157
! Ref: 247850157
! Ref: gnat_ugn/inline_assembler other-asm-functionality850157
! Ref: 248850157
! Node: The Clobber Parameter850471
! Ref: gnat_ugn/inline_assembler id8850585
! Ref: 249850585
! Ref: gnat_ugn/inline_assembler the-clobber-parameter850585
! Ref: 24a850585
! Node: The Volatile Parameter852579
! Ref: gnat_ugn/inline_assembler id9852693
! Ref: 24b852693
! Ref: gnat_ugn/inline_assembler the-volatile-parameter852693
! Ref: 24c852693
! Node: GNU Free Documentation License853850
! Ref: share/gnu_free_documentation_license doc853961
! Ref: 24d853961
! Ref: share/gnu_free_documentation_license gnu-fdl853961
! Ref: 1853961
! Ref: share/gnu_free_documentation_license gnu-free-documentation-license853961
! Ref: 24e853961
! Node: Index877419
! Ref: d21018442
! Ref: gnat_ugn/gnat_utility_programs switches-related-to-project-files1018472
  
  End Tag Table
  
--- 23958,25444 ----
                                                               (line   40)
  * Zero-Cost Exceptions:                  Run-Time Libraries. (line   13)
  
!    
  
  
  
  Tag Table:
! Node: Top348
! Ref: gnat_ugn doc628
! Ref: 0628
! Node: About This Guide12382
! Ref: gnat_ugn/about_this_guide doc12486
! Ref: 212486
! Ref: gnat_ugn/about_this_guide about-this-guide12486
! Ref: 312486
! Ref: gnat_ugn/about_this_guide gnat-user-s-guide-for-native-platforms12486
! Ref: 412486
! Ref: gnat_ugn/about_this_guide id112486
! Ref: 512486
! Node: What This Guide Contains13738
! Ref: gnat_ugn/about_this_guide what-this-guide-contains13872
! Ref: 813872
! Node: What You Should Know before Reading This Guide15313
! Ref: gnat_ugn/about_this_guide what-you-should-know-before-reading-this-guide15475
! Ref: 1215475
! Node: Related Information15827
! Ref: gnat_ugn/about_this_guide related-information15976
! Ref: 1315976
! Node: Conventions16862
! Ref: gnat_ugn/about_this_guide conventions16956
! Ref: 1416956
! Node: Getting Started with GNAT17762
! Ref: gnat_ugn/getting_started_with_gnat doc17889
! Ref: 1517889
! Ref: gnat_ugn/getting_started_with_gnat getting-started-with-gnat17889
! Ref: 917889
! Ref: gnat_ugn/getting_started_with_gnat id117889
! Ref: 1617889
! Node: System Requirements18535
! Ref: gnat_ugn/getting_started_with_gnat id218639
! Ref: 1718639
! Ref: gnat_ugn/getting_started_with_gnat system-requirements18639
! Ref: 1818639
! Node: Running GNAT20046
! Ref: gnat_ugn/getting_started_with_gnat id320187
! Ref: 1920187
! Ref: gnat_ugn/getting_started_with_gnat running-gnat20187
! Ref: 1a20187
! Node: Running a Simple Ada Program20699
! Ref: gnat_ugn/getting_started_with_gnat id420858
! Ref: 1b20858
! Ref: gnat_ugn/getting_started_with_gnat running-a-simple-ada-program20858
! Ref: 1c20858
! Node: Running a Program with Multiple Units23772
! Ref: gnat_ugn/getting_started_with_gnat id523910
! Ref: 1f23910
! Ref: gnat_ugn/getting_started_with_gnat running-a-program-with-multiple-units23910
! Ref: 2023910
! Node: The GNAT Compilation Model25494
! Ref: gnat_ugn/the_gnat_compilation_model doc25643
! Ref: 2125643
! Ref: gnat_ugn/the_gnat_compilation_model id125643
! Ref: 2225643
! Ref: gnat_ugn/the_gnat_compilation_model the-gnat-compilation-model25643
! Ref: a25643
! Node: Source Representation27061
! Ref: gnat_ugn/the_gnat_compilation_model id227187
! Ref: 3027187
! Ref: gnat_ugn/the_gnat_compilation_model source-representation27187
! Ref: 2327187
! Node: Foreign Language Representation29633
! Ref: gnat_ugn/the_gnat_compilation_model foreign-language-representation29800
! Ref: 2429800
! Ref: gnat_ugn/the_gnat_compilation_model id329800
! Ref: 3129800
! Node: Latin-130173
! Ref: gnat_ugn/the_gnat_compilation_model id430276
! Ref: 3330276
! Ref: gnat_ugn/the_gnat_compilation_model latin-130276
! Ref: 3430276
! Node: Other 8-Bit Codes31063
! Ref: gnat_ugn/the_gnat_compilation_model id531199
! Ref: 3531199
! Ref: gnat_ugn/the_gnat_compilation_model other-8-bit-codes31199
! Ref: 3631199
! Node: Wide_Character Encodings33388
! Ref: gnat_ugn/the_gnat_compilation_model id633546
! Ref: 3733546
! Ref: gnat_ugn/the_gnat_compilation_model wide-character-encodings33546
! Ref: 3833546
! Node: Wide_Wide_Character Encodings37362
! Ref: gnat_ugn/the_gnat_compilation_model id737494
! Ref: 3937494
! Ref: gnat_ugn/the_gnat_compilation_model wide-wide-character-encodings37494
! Ref: 3a37494
! Node: File Naming Topics and Utilities39220
! Ref: gnat_ugn/the_gnat_compilation_model file-naming-topics-and-utilities39387
! Ref: 2539387
! Ref: gnat_ugn/the_gnat_compilation_model id839387
! Ref: 3b39387
! Node: File Naming Rules39897
! Ref: gnat_ugn/the_gnat_compilation_model file-naming-rules40016
! Ref: 3c40016
! Ref: gnat_ugn/the_gnat_compilation_model id940016
! Ref: 3d40016
! Node: Using Other File Names43567
! Ref: gnat_ugn/the_gnat_compilation_model id1043726
! Ref: 3f43726
! Ref: gnat_ugn/the_gnat_compilation_model using-other-file-names43726
! Ref: 1d43726
! Node: Alternative File Naming Schemes45970
! Ref: gnat_ugn/the_gnat_compilation_model alternative-file-naming-schemes46168
! Ref: 4146168
! Ref: gnat_ugn/the_gnat_compilation_model id1146168
! Ref: 4246168
! Node: Handling Arbitrary File Naming Conventions with gnatname51215
! Ref: gnat_ugn/the_gnat_compilation_model handling-arbitrary-file-naming-conventions-with-gnatname51422
! Ref: 4351422
! Ref: gnat_ugn/the_gnat_compilation_model id1251422
! Ref: 4451422
! Node: Arbitrary File Naming Conventions51683
! Ref: gnat_ugn/the_gnat_compilation_model arbitrary-file-naming-conventions51836
! Ref: 4551836
! Ref: gnat_ugn/the_gnat_compilation_model id1351836
! Ref: 4651836
! Node: Running gnatname52973
! Ref: gnat_ugn/the_gnat_compilation_model id1453156
! Ref: 4753156
! Ref: gnat_ugn/the_gnat_compilation_model running-gnatname53156
! Ref: 4853156
! Node: Switches for gnatname55020
! Ref: gnat_ugn/the_gnat_compilation_model id1555196
! Ref: 4955196
! Ref: gnat_ugn/the_gnat_compilation_model switches-for-gnatname55196
! Ref: 4a55196
! Node: Examples of gnatname Usage60072
! Ref: gnat_ugn/the_gnat_compilation_model examples-of-gnatname-usage60223
! Ref: 4b60223
! Ref: gnat_ugn/the_gnat_compilation_model id1660223
! Ref: 4c60223
! Node: File Name Krunching with gnatkr60919
! Ref: gnat_ugn/the_gnat_compilation_model file-name-krunching-with-gnatkr61123
! Ref: 4d61123
! Ref: gnat_ugn/the_gnat_compilation_model id1761123
! Ref: 4e61123
! Node: About gnatkr61578
! Ref: gnat_ugn/the_gnat_compilation_model about-gnatkr61681
! Ref: 4f61681
! Ref: gnat_ugn/the_gnat_compilation_model id1861681
! Ref: 5061681
! Node: Using gnatkr62621
! Ref: gnat_ugn/the_gnat_compilation_model id1962749
! Ref: 5162749
! Ref: gnat_ugn/the_gnat_compilation_model using-gnatkr62749
! Ref: 3e62749
! Node: Krunching Method64277
! Ref: gnat_ugn/the_gnat_compilation_model id2064417
! Ref: 5264417
! Ref: gnat_ugn/the_gnat_compilation_model krunching-method64417
! Ref: 5364417
! Node: Examples of gnatkr Usage67873
! Ref: gnat_ugn/the_gnat_compilation_model examples-of-gnatkr-usage67992
! Ref: 5467992
! Ref: gnat_ugn/the_gnat_compilation_model id2167992
! Ref: 5567992
! Node: Renaming Files with gnatchop68439
! Ref: gnat_ugn/the_gnat_compilation_model id2268578
! Ref: 5668578
! Ref: gnat_ugn/the_gnat_compilation_model renaming-files-with-gnatchop68578
! Ref: 1e68578
! Node: Handling Files with Multiple Units69054
! Ref: gnat_ugn/the_gnat_compilation_model handling-files-with-multiple-units69202
! Ref: 5769202
! Ref: gnat_ugn/the_gnat_compilation_model id2369202
! Ref: 5869202
! Node: Operating gnatchop in Compilation Mode70445
! Ref: gnat_ugn/the_gnat_compilation_model id2470627
! Ref: 5970627
! Ref: gnat_ugn/the_gnat_compilation_model operating-gnatchop-in-compilation-mode70627
! Ref: 5a70627
! Node: Command Line for gnatchop73752
! Ref: gnat_ugn/the_gnat_compilation_model command-line-for-gnatchop73921
! Ref: 5b73921
! Ref: gnat_ugn/the_gnat_compilation_model id2573921
! Ref: 5c73921
! Node: Switches for gnatchop75754
! Ref: gnat_ugn/the_gnat_compilation_model id2675911
! Ref: 5d75911
! Ref: gnat_ugn/the_gnat_compilation_model switches-for-gnatchop75911
! Ref: 5e75911
! Node: Examples of gnatchop Usage80081
! Ref: gnat_ugn/the_gnat_compilation_model examples-of-gnatchop-usage80204
! Ref: 5f80204
! Ref: gnat_ugn/the_gnat_compilation_model id2780204
! Ref: 6080204
! Node: Configuration Pragmas81455
! Ref: gnat_ugn/the_gnat_compilation_model configuration-pragmas81614
! Ref: 2681614
! Ref: gnat_ugn/the_gnat_compilation_model id2881614
! Ref: 6181614
! Node: Handling of Configuration Pragmas83938
! Ref: gnat_ugn/the_gnat_compilation_model handling-of-configuration-pragmas84071
! Ref: 4084071
! Ref: gnat_ugn/the_gnat_compilation_model id2984071
! Ref: 6284071
! Node: The Configuration Pragmas Files86048
! Ref: gnat_ugn/the_gnat_compilation_model id3086181
! Ref: 6386181
! Ref: gnat_ugn/the_gnat_compilation_model the-configuration-pragmas-files86181
! Ref: 6486181
! Node: Generating Object Files88335
! Ref: gnat_ugn/the_gnat_compilation_model generating-object-files88481
! Ref: 2788481
! Ref: gnat_ugn/the_gnat_compilation_model id3188481
! Ref: 6588481
! Node: Source Dependencies91114
! Ref: gnat_ugn/the_gnat_compilation_model id3291272
! Ref: 6691272
! Ref: gnat_ugn/the_gnat_compilation_model source-dependencies91272
! Ref: 2891272
! Node: The Ada Library Information Files94927
! Ref: gnat_ugn/the_gnat_compilation_model id3395084
! Ref: 6795084
! Ref: gnat_ugn/the_gnat_compilation_model the-ada-library-information-files95084
! Ref: 2995084
! Node: Binding an Ada Program97111
! Ref: gnat_ugn/the_gnat_compilation_model binding-an-ada-program97267
! Ref: 2a97267
! Ref: gnat_ugn/the_gnat_compilation_model id3497267
! Ref: 6897267
! Node: GNAT and Libraries98935
! Ref: gnat_ugn/the_gnat_compilation_model gnat-and-libraries99081
! Ref: 2b99081
! Ref: gnat_ugn/the_gnat_compilation_model id3599081
! Ref: 6999081
! Node: Introduction to Libraries in GNAT99551
! Ref: gnat_ugn/the_gnat_compilation_model id3699671
! Ref: 6a99671
! Ref: gnat_ugn/the_gnat_compilation_model introduction-to-libraries-in-gnat99671
! Ref: 6b99671
! Node: General Ada Libraries101727
! Ref: gnat_ugn/the_gnat_compilation_model general-ada-libraries101881
! Ref: 6d101881
! Ref: gnat_ugn/the_gnat_compilation_model id37101881
! Ref: 6e101881
! Node: Building a library102016
! Ref: gnat_ugn/the_gnat_compilation_model building-a-library102123
! Ref: 6f102123
! Ref: gnat_ugn/the_gnat_compilation_model id38102123
! Ref: 70102123
! Node: Installing a library105942
! Ref: gnat_ugn/the_gnat_compilation_model id39106073
! Ref: 72106073
! Ref: gnat_ugn/the_gnat_compilation_model installing-a-library106073
! Ref: 73106073
! Node: Using a library108613
! Ref: gnat_ugn/the_gnat_compilation_model id40108717
! Ref: 75108717
! Ref: gnat_ugn/the_gnat_compilation_model using-a-library108717
! Ref: 76108717
! Node: Stand-alone Ada Libraries111282
! Ref: gnat_ugn/the_gnat_compilation_model id41111439
! Ref: 78111439
! Ref: gnat_ugn/the_gnat_compilation_model stand-alone-ada-libraries111439
! Ref: 6c111439
! Node: Introduction to Stand-alone Libraries111700
! Ref: gnat_ugn/the_gnat_compilation_model id42111840
! Ref: 79111840
! Ref: gnat_ugn/the_gnat_compilation_model introduction-to-stand-alone-libraries111840
! Ref: 7a111840
! Node: Building a Stand-alone Library113469
! Ref: gnat_ugn/the_gnat_compilation_model building-a-stand-alone-library113680
! Ref: 7b113680
! Ref: gnat_ugn/the_gnat_compilation_model id43113680
! Ref: 7c113680
! Node: Creating a Stand-alone Library to be used in a non-Ada context118522
! Ref: gnat_ugn/the_gnat_compilation_model creating-a-stand-alone-library-to-be-used-in-a-non-ada-context118733
! Ref: 7d118733
! Ref: gnat_ugn/the_gnat_compilation_model id44118733
! Ref: 7e118733
! Node: Restrictions in Stand-alone Libraries121665
! Ref: gnat_ugn/the_gnat_compilation_model id45121837
! Ref: 80121837
! Ref: gnat_ugn/the_gnat_compilation_model restrictions-in-stand-alone-libraries121837
! Ref: 81121837
! Node: Rebuilding the GNAT Run-Time Library123159
! Ref: gnat_ugn/the_gnat_compilation_model id46123286
! Ref: 82123286
! Ref: gnat_ugn/the_gnat_compilation_model rebuilding-the-gnat-run-time-library123286
! Ref: 83123286
! Node: Conditional Compilation124159
! Ref: gnat_ugn/the_gnat_compilation_model conditional-compilation124309
! Ref: 2c124309
! Ref: gnat_ugn/the_gnat_compilation_model id47124309
! Ref: 84124309
! Node: Modeling Conditional Compilation in Ada124615
! Ref: gnat_ugn/the_gnat_compilation_model id48124752
! Ref: 85124752
! Ref: gnat_ugn/the_gnat_compilation_model modeling-conditional-compilation-in-ada124752
! Ref: 86124752
! Node: Use of Boolean Constants126264
! Ref: gnat_ugn/the_gnat_compilation_model id49126401
! Ref: 87126401
! Ref: gnat_ugn/the_gnat_compilation_model use-of-boolean-constants126401
! Ref: 88126401
! Node: Debugging - A Special Case127719
! Ref: gnat_ugn/the_gnat_compilation_model debugging-a-special-case127894
! Ref: 89127894
! Ref: gnat_ugn/the_gnat_compilation_model id50127894
! Ref: 8a127894
! Node: Conditionalizing Declarations131401
! Ref: gnat_ugn/the_gnat_compilation_model conditionalizing-declarations131586
! Ref: 8b131586
! Ref: gnat_ugn/the_gnat_compilation_model id51131586
! Ref: 8c131586
! Node: Use of Alternative Implementations133315
! Ref: gnat_ugn/the_gnat_compilation_model id52133487
! Ref: 8d133487
! Ref: gnat_ugn/the_gnat_compilation_model use-of-alternative-implementations133487
! Ref: 8e133487
! Node: Preprocessing137692
! Ref: gnat_ugn/the_gnat_compilation_model id53137826
! Ref: 8f137826
! Ref: gnat_ugn/the_gnat_compilation_model preprocessing137826
! Ref: 90137826
! Node: Preprocessing with gnatprep139502
! Ref: gnat_ugn/the_gnat_compilation_model id54139672
! Ref: 93139672
! Ref: gnat_ugn/the_gnat_compilation_model preprocessing-with-gnatprep139672
! Ref: 91139672
! Node: Preprocessing Symbols140199
! Ref: gnat_ugn/the_gnat_compilation_model id55140309
! Ref: 94140309
! Ref: gnat_ugn/the_gnat_compilation_model preprocessing-symbols140309
! Ref: 95140309
! Node: Using gnatprep140675
! Ref: gnat_ugn/the_gnat_compilation_model id56140815
! Ref: 96140815
! Ref: gnat_ugn/the_gnat_compilation_model using-gnatprep140815
! Ref: 97140815
! Node: Switches for gnatprep141685
! Ref: gnat_ugn/the_gnat_compilation_model id57141828
! Ref: 98141828
! Ref: gnat_ugn/the_gnat_compilation_model switches-for-gnatprep141828
! Ref: 99141828
! Node: Form of Definitions File144977
! Ref: gnat_ugn/the_gnat_compilation_model form-of-definitions-file145137
! Ref: 9a145137
! Ref: gnat_ugn/the_gnat_compilation_model id58145137
! Ref: 9b145137
! Node: Form of Input Text for gnatprep145711
! Ref: gnat_ugn/the_gnat_compilation_model form-of-input-text-for-gnatprep145841
! Ref: 9c145841
! Ref: gnat_ugn/the_gnat_compilation_model id59145841
! Ref: 9d145841
! Node: Integrated Preprocessing149986
! Ref: gnat_ugn/the_gnat_compilation_model id60150108
! Ref: 9e150108
! Ref: gnat_ugn/the_gnat_compilation_model integrated-preprocessing150108
! Ref: 92150108
! Node: Mixed Language Programming158434
! Ref: gnat_ugn/the_gnat_compilation_model id61158599
! Ref: 9f158599
! Ref: gnat_ugn/the_gnat_compilation_model mixed-language-programming158599
! Ref: 2d158599
! Node: Interfacing to C158995
! Ref: gnat_ugn/the_gnat_compilation_model id62159104
! Ref: a0159104
! Ref: gnat_ugn/the_gnat_compilation_model interfacing-to-c159104
! Ref: a1159104
! Node: Calling Conventions164334
! Ref: gnat_ugn/the_gnat_compilation_model calling-conventions164487
! Ref: a2164487
! Ref: gnat_ugn/the_gnat_compilation_model id63164487
! Ref: a3164487
! Node: Building Mixed Ada and C++ Programs171771
! Ref: gnat_ugn/the_gnat_compilation_model building-mixed-ada-and-c-programs171931
! Ref: a4171931
! Ref: gnat_ugn/the_gnat_compilation_model id64171931
! Ref: a5171931
! Node: Interfacing to C++172413
! Ref: gnat_ugn/the_gnat_compilation_model id65172547
! Ref: a6172547
! Ref: gnat_ugn/the_gnat_compilation_model id66172547
! Ref: a7172547
! Node: Linking a Mixed C++ & Ada Program173754
! Ref: gnat_ugn/the_gnat_compilation_model linking-a-mixed-c-ada-program173913
! Ref: a9173913
! Ref: gnat_ugn/the_gnat_compilation_model linking-a-mixed-c-and-ada-program173913
! Ref: aa173913
! Node: A Simple Example177927
! Ref: gnat_ugn/the_gnat_compilation_model a-simple-example178101
! Ref: ab178101
! Ref: gnat_ugn/the_gnat_compilation_model id67178101
! Ref: ac178101
! Node: Interfacing with C++ constructors180824
! Ref: gnat_ugn/the_gnat_compilation_model id68181004
! Ref: ad181004
! Ref: gnat_ugn/the_gnat_compilation_model interfacing-with-c-constructors181004
! Ref: ae181004
! Node: Interfacing with C++ at the Class Level187719
! Ref: gnat_ugn/the_gnat_compilation_model id69187874
! Ref: b0187874
! Ref: gnat_ugn/the_gnat_compilation_model interfacing-with-c-at-the-class-level187874
! Ref: af187874
! Node: Partition-Wide Settings196557
! Ref: gnat_ugn/the_gnat_compilation_model id70196743
! Ref: b1196743
! Ref: gnat_ugn/the_gnat_compilation_model partition-wide-settings196743
! Ref: b2196743
! Node: Generating Ada Bindings for C and C++ headers198808
! Ref: gnat_ugn/the_gnat_compilation_model generating-ada-bindings-for-c-and-c-headers199002
! Ref: a8199002
! Ref: gnat_ugn/the_gnat_compilation_model id71199002
! Ref: b3199002
! Node: Running the Binding Generator200313
! Ref: gnat_ugn/the_gnat_compilation_model id72200470
! Ref: b4200470
! Ref: gnat_ugn/the_gnat_compilation_model running-the-binding-generator200470
! Ref: b5200470
! Node: Generating Bindings for C++ Headers202992
! Ref: gnat_ugn/the_gnat_compilation_model generating-bindings-for-c-headers203166
! Ref: b6203166
! Ref: gnat_ugn/the_gnat_compilation_model id73203166
! Ref: b7203166
! Node: Switches206076
! Ref: gnat_ugn/the_gnat_compilation_model switches206212
! Ref: b8206212
! Ref: gnat_ugn/the_gnat_compilation_model switches-for-ada-binding-generation206212
! Ref: b9206212
! Node: Generating C Headers for Ada Specifications206783
! Ref: gnat_ugn/the_gnat_compilation_model generating-c-headers-for-ada-specifications206945
! Ref: ba206945
! Ref: gnat_ugn/the_gnat_compilation_model id74206945
! Ref: bb206945
! Node: Running the C Header Generator207446
! Ref: gnat_ugn/the_gnat_compilation_model running-the-c-header-generator207558
! Ref: bc207558
! Node: GNAT and Other Compilation Models209295
! Ref: gnat_ugn/the_gnat_compilation_model gnat-and-other-compilation-models209473
! Ref: 2e209473
! Ref: gnat_ugn/the_gnat_compilation_model id75209473
! Ref: bd209473
! Node: Comparison between GNAT and C/C++ Compilation Models209907
! Ref: gnat_ugn/the_gnat_compilation_model comparison-between-gnat-and-c-c-compilation-models210099
! Ref: be210099
! Ref: gnat_ugn/the_gnat_compilation_model id76210099
! Ref: bf210099
! Node: Comparison between GNAT and Conventional Ada Library Models211623
! Ref: gnat_ugn/the_gnat_compilation_model comparison-between-gnat-and-conventional-ada-library-models211815
! Ref: c0211815
! Ref: gnat_ugn/the_gnat_compilation_model id77211815
! Ref: c1211815
! Node: Using GNAT Files with External Tools214199
! Ref: gnat_ugn/the_gnat_compilation_model id78214342
! Ref: c2214342
! Ref: gnat_ugn/the_gnat_compilation_model using-gnat-files-with-external-tools214342
! Ref: 2f214342
! Node: Using Other Utility Programs with GNAT214638
! Ref: gnat_ugn/the_gnat_compilation_model id79214801
! Ref: c3214801
! Ref: gnat_ugn/the_gnat_compilation_model using-other-utility-programs-with-gnat214801
! Ref: c4214801
! Node: The External Symbol Naming Scheme of GNAT215380
! Ref: gnat_ugn/the_gnat_compilation_model id80215543
! Ref: c5215543
! Ref: gnat_ugn/the_gnat_compilation_model the-external-symbol-naming-scheme-of-gnat215543
! Ref: c6215543
! Node: Building Executable Programs with GNAT217427
! Ref: gnat_ugn/building_executable_programs_with_gnat doc217572
! Ref: c7217572
! Ref: gnat_ugn/building_executable_programs_with_gnat building-executable-programs-with-gnat217572
! Ref: b217572
! Ref: gnat_ugn/building_executable_programs_with_gnat id1217572
! Ref: c8217572
! Node: Building with gnatmake218519
! Ref: gnat_ugn/building_executable_programs_with_gnat building-with-gnatmake218645
! Ref: cd218645
! Ref: gnat_ugn/building_executable_programs_with_gnat the-gnat-make-program-gnatmake218645
! Ref: c9218645
! Node: Running gnatmake220266
! Ref: gnat_ugn/building_executable_programs_with_gnat id2220373
! Ref: ce220373
! Ref: gnat_ugn/building_executable_programs_with_gnat running-gnatmake220373
! Ref: cf220373
! Node: Switches for gnatmake221847
! Ref: gnat_ugn/building_executable_programs_with_gnat id3221989
! Ref: d0221989
! Ref: gnat_ugn/building_executable_programs_with_gnat switches-for-gnatmake221989
! Ref: d1221989
! Node: Mode Switches for gnatmake243323
! Ref: gnat_ugn/building_executable_programs_with_gnat id4243474
! Ref: d3243474
! Ref: gnat_ugn/building_executable_programs_with_gnat mode-switches-for-gnatmake243474
! Ref: d4243474
! Node: Notes on the Command Line244769
! Ref: gnat_ugn/building_executable_programs_with_gnat id5244917
! Ref: d5244917
! Ref: gnat_ugn/building_executable_programs_with_gnat notes-on-the-command-line244917
! Ref: d6244917
! Node: How gnatmake Works247394
! Ref: gnat_ugn/building_executable_programs_with_gnat how-gnatmake-works247542
! Ref: d7247542
! Ref: gnat_ugn/building_executable_programs_with_gnat id6247542
! Ref: d8247542
! Node: Examples of gnatmake Usage249893
! Ref: gnat_ugn/building_executable_programs_with_gnat examples-of-gnatmake-usage250007
! Ref: d9250007
! Ref: gnat_ugn/building_executable_programs_with_gnat id7250007
! Ref: da250007
! Node: Compiling with gcc251102
! Ref: gnat_ugn/building_executable_programs_with_gnat compiling-with-gcc251254
! Ref: ca251254
! Ref: gnat_ugn/building_executable_programs_with_gnat id8251254
! Ref: db251254
! Node: Compiling Programs251655
! Ref: gnat_ugn/building_executable_programs_with_gnat compiling-programs251780
! Ref: dc251780
! Ref: gnat_ugn/building_executable_programs_with_gnat id9251780
! Ref: dd251780
! Node: Search Paths and the Run-Time Library RTL255192
! Ref: gnat_ugn/building_executable_programs_with_gnat id10255353
! Ref: df255353
! Ref: gnat_ugn/building_executable_programs_with_gnat search-paths-and-the-run-time-library-rtl255353
! Ref: 74255353
! Node: Order of Compilation Issues258795
! Ref: gnat_ugn/building_executable_programs_with_gnat id11258946
! Ref: e0258946
! Ref: gnat_ugn/building_executable_programs_with_gnat order-of-compilation-issues258946
! Ref: e1258946
! Node: Examples260515
! Ref: gnat_ugn/building_executable_programs_with_gnat examples260616
! Ref: e2260616
! Ref: gnat_ugn/building_executable_programs_with_gnat id12260616
! Ref: e3260616
! Node: Compiler Switches261098
! Ref: gnat_ugn/building_executable_programs_with_gnat compiler-switches261243
! Ref: e4261243
! Ref: gnat_ugn/building_executable_programs_with_gnat switches-for-gcc261243
! Ref: de261243
! Node: Alphabetical List of All Switches262422
! Ref: gnat_ugn/building_executable_programs_with_gnat alphabetical-list-of-all-switches262552
! Ref: e5262552
! Ref: gnat_ugn/building_executable_programs_with_gnat id13262552
! Ref: e6262552
! Node: Output and Error Message Control299614
! Ref: gnat_ugn/building_executable_programs_with_gnat id14299776
! Ref: f1299776
! Ref: gnat_ugn/building_executable_programs_with_gnat output-and-error-message-control299776
! Ref: f2299776
! Node: Warning Message Control307852
! Ref: gnat_ugn/building_executable_programs_with_gnat id15308001
! Ref: f3308001
! Ref: gnat_ugn/building_executable_programs_with_gnat warning-message-control308001
! Ref: ee308001
! Node: Info message Control359528
! Ref: gnat_ugn/building_executable_programs_with_gnat debugging-and-assertion-control359676
! Ref: f4359676
! Ref: gnat_ugn/building_executable_programs_with_gnat info-message-control359676
! Ref: f5359676
! Node: Debugging and Assertion Control360057
! Ref: gnat_ugn/building_executable_programs_with_gnat id16360199
! Ref: f6360199
! Node: Validity Checking363646
! Ref: gnat_ugn/building_executable_programs_with_gnat id17363782
! Ref: f7363782
! Ref: gnat_ugn/building_executable_programs_with_gnat validity-checking363782
! Ref: ea363782
! Node: Style Checking373806
! Ref: gnat_ugn/building_executable_programs_with_gnat id18373926
! Ref: f8373926
! Ref: gnat_ugn/building_executable_programs_with_gnat style-checking373926
! Ref: ef373926
! Node: Run-Time Checks391786
! Ref: gnat_ugn/building_executable_programs_with_gnat id19391918
! Ref: f9391918
! Ref: gnat_ugn/building_executable_programs_with_gnat run-time-checks391918
! Ref: ed391918
! Node: Using gcc for Syntax Checking398353
! Ref: gnat_ugn/building_executable_programs_with_gnat id20398502
! Ref: fa398502
! Ref: gnat_ugn/building_executable_programs_with_gnat using-gcc-for-syntax-checking398502
! Ref: fb398502
! Node: Using gcc for Semantic Checking400188
! Ref: gnat_ugn/building_executable_programs_with_gnat id21400357
! Ref: fc400357
! Ref: gnat_ugn/building_executable_programs_with_gnat using-gcc-for-semantic-checking400357
! Ref: fd400357
! Node: Compiling Different Versions of Ada401717
! Ref: gnat_ugn/building_executable_programs_with_gnat compiling-different-versions-of-ada401878
! Ref: 6401878
! Ref: gnat_ugn/building_executable_programs_with_gnat id22401878
! Ref: fe401878
! Node: Character Set Control406139
! Ref: gnat_ugn/building_executable_programs_with_gnat character-set-control406288
! Ref: 32406288
! Ref: gnat_ugn/building_executable_programs_with_gnat id23406288
! Ref: ff406288
! Node: File Naming Control411606
! Ref: gnat_ugn/building_executable_programs_with_gnat file-naming-control411747
! Ref: 100411747
! Ref: gnat_ugn/building_executable_programs_with_gnat id24411747
! Ref: 101411747
! Node: Subprogram Inlining Control412155
! Ref: gnat_ugn/building_executable_programs_with_gnat id25412299
! Ref: 102412299
! Ref: gnat_ugn/building_executable_programs_with_gnat subprogram-inlining-control412299
! Ref: 103412299
! Node: Auxiliary Output Control414176
! Ref: gnat_ugn/building_executable_programs_with_gnat auxiliary-output-control414318
! Ref: 105414318
! Ref: gnat_ugn/building_executable_programs_with_gnat id26414318
! Ref: 106414318
! Node: Debugging Control415479
! Ref: gnat_ugn/building_executable_programs_with_gnat debugging-control415620
! Ref: 107415620
! Ref: gnat_ugn/building_executable_programs_with_gnat id27415620
! Ref: 108415620
! Node: Exception Handling Control427474
! Ref: gnat_ugn/building_executable_programs_with_gnat exception-handling-control427621
! Ref: 109427621
! Ref: gnat_ugn/building_executable_programs_with_gnat id28427621
! Ref: 10a427621
! Node: Units to Sources Mapping Files430298
! Ref: gnat_ugn/building_executable_programs_with_gnat id29430451
! Ref: 10b430451
! Ref: gnat_ugn/building_executable_programs_with_gnat units-to-sources-mapping-files430451
! Ref: eb430451
! Node: Code Generation Control432390
! Ref: gnat_ugn/building_executable_programs_with_gnat code-generation-control432508
! Ref: 10c432508
! Ref: gnat_ugn/building_executable_programs_with_gnat id30432508
! Ref: 10d432508
! Node: Linker Switches433680
! Ref: gnat_ugn/building_executable_programs_with_gnat id31433828
! Ref: 10e433828
! Ref: gnat_ugn/building_executable_programs_with_gnat linker-switches433828
! Ref: 10f433828
! Node: Binding with gnatbind434190
! Ref: gnat_ugn/building_executable_programs_with_gnat binding-with-gnatbind434342
! Ref: cb434342
! Ref: gnat_ugn/building_executable_programs_with_gnat id32434342
! Ref: 110434342
! Node: Running gnatbind435866
! Ref: gnat_ugn/building_executable_programs_with_gnat id33435972
! Ref: 111435972
! Ref: gnat_ugn/building_executable_programs_with_gnat running-gnatbind435972
! Ref: 112435972
! Node: Switches for gnatbind439004
! Ref: gnat_ugn/building_executable_programs_with_gnat id34439138
! Ref: 113439138
! Ref: gnat_ugn/building_executable_programs_with_gnat switches-for-gnatbind439138
! Ref: 114439138
! Node: Consistency-Checking Modes453251
! Ref: gnat_ugn/building_executable_programs_with_gnat consistency-checking-modes453374
! Ref: 118453374
! Ref: gnat_ugn/building_executable_programs_with_gnat id35453374
! Ref: 119453374
! Node: Binder Error Message Control455193
! Ref: gnat_ugn/building_executable_programs_with_gnat binder-error-message-control455344
! Ref: 11a455344
! Ref: gnat_ugn/building_executable_programs_with_gnat id36455344
! Ref: 11b455344
! Node: Elaboration Control457588
! Ref: gnat_ugn/building_executable_programs_with_gnat elaboration-control457727
! Ref: 115457727
! Ref: gnat_ugn/building_executable_programs_with_gnat id37457727
! Ref: 11c457727
! Node: Output Control461030
! Ref: gnat_ugn/building_executable_programs_with_gnat id38461167
! Ref: 11d461167
! Ref: gnat_ugn/building_executable_programs_with_gnat output-control461167
! Ref: 11e461167
! Node: Dynamic Allocation Control463162
! Ref: gnat_ugn/building_executable_programs_with_gnat dynamic-allocation-control463314
! Ref: 116463314
! Ref: gnat_ugn/building_executable_programs_with_gnat id39463314
! Ref: 11f463314
! Node: Binding with Non-Ada Main Programs463935
! Ref: gnat_ugn/building_executable_programs_with_gnat binding-with-non-ada-main-programs464113
! Ref: 7f464113
! Ref: gnat_ugn/building_executable_programs_with_gnat id40464113
! Ref: 120464113
! Node: Binding Programs with No Main Subprogram467123
! Ref: gnat_ugn/building_executable_programs_with_gnat binding-programs-with-no-main-subprogram467266
! Ref: 121467266
! Ref: gnat_ugn/building_executable_programs_with_gnat id41467266
! Ref: 122467266
! Node: Command-Line Access468134
! Ref: gnat_ugn/building_executable_programs_with_gnat command-line-access468277
! Ref: 123468277
! Ref: gnat_ugn/building_executable_programs_with_gnat id42468277
! Ref: 124468277
! Node: Search Paths for gnatbind469187
! Ref: gnat_ugn/building_executable_programs_with_gnat id43469335
! Ref: 125469335
! Ref: gnat_ugn/building_executable_programs_with_gnat search-paths-for-gnatbind469335
! Ref: 77469335
! Node: Examples of gnatbind Usage472152
! Ref: gnat_ugn/building_executable_programs_with_gnat examples-of-gnatbind-usage472272
! Ref: 126472272
! Ref: gnat_ugn/building_executable_programs_with_gnat id44472272
! Ref: 127472272
! Node: Linking with gnatlink473120
! Ref: gnat_ugn/building_executable_programs_with_gnat id45473283
! Ref: 128473283
! Ref: gnat_ugn/building_executable_programs_with_gnat linking-with-gnatlink473283
! Ref: cc473283
! Node: Running gnatlink473819
! Ref: gnat_ugn/building_executable_programs_with_gnat id46473925
! Ref: 129473925
! Ref: gnat_ugn/building_executable_programs_with_gnat running-gnatlink473925
! Ref: 12a473925
! Node: Switches for gnatlink476397
! Ref: gnat_ugn/building_executable_programs_with_gnat id47476503
! Ref: 12d476503
! Ref: gnat_ugn/building_executable_programs_with_gnat switches-for-gnatlink476503
! Ref: 12e476503
! Node: Using the GNU make Utility481213
! Ref: gnat_ugn/building_executable_programs_with_gnat id48481382
! Ref: 12f481382
! Ref: gnat_ugn/building_executable_programs_with_gnat using-the-gnu-make-utility481382
! Ref: 71481382
! Node: Using gnatmake in a Makefile482070
! Ref: gnat_ugn/building_executable_programs_with_gnat id49482216
! Ref: 130482216
! Ref: gnat_ugn/building_executable_programs_with_gnat using-gnatmake-in-a-makefile482216
! Ref: 131482216
! Node: Automatically Creating a List of Directories486244
! Ref: gnat_ugn/building_executable_programs_with_gnat automatically-creating-a-list-of-directories486435
! Ref: 132486435
! Ref: gnat_ugn/building_executable_programs_with_gnat id50486435
! Ref: 133486435
! Node: Generating the Command Line Switches489390
! Ref: gnat_ugn/building_executable_programs_with_gnat generating-the-command-line-switches489590
! Ref: 134489590
! Ref: gnat_ugn/building_executable_programs_with_gnat id51489590
! Ref: 135489590
! Node: Overcoming Command Line Length Limits490368
! Ref: gnat_ugn/building_executable_programs_with_gnat id52490515
! Ref: 136490515
! Ref: gnat_ugn/building_executable_programs_with_gnat overcoming-command-line-length-limits490515
! Ref: 137490515
! Node: GNAT with the LLVM Back End492820
! Ref: gnat_ugn/building_executable_programs_with_gnat gnat-with-the-llvm-back-end492959
! Ref: 138492959
! Ref: gnat_ugn/building_executable_programs_with_gnat gnatllvm492959
! Ref: 7492959
! Node: GNAT Utility Programs497829
! Ref: gnat_ugn/gnat_utility_programs doc497974
! Ref: 139497974
! Ref: gnat_ugn/gnat_utility_programs gnat-utility-programs497974
! Ref: c497974
! Ref: gnat_ugn/gnat_utility_programs id1497974
! Ref: 13a497974
! Node: The File Cleanup Utility gnatclean498541
! Ref: gnat_ugn/gnat_utility_programs id2498675
! Ref: 13d498675
! Ref: gnat_ugn/gnat_utility_programs the-file-cleanup-utility-gnatclean498675
! Ref: 13b498675
! Node: Running gnatclean499076
! Ref: gnat_ugn/gnat_utility_programs id3499197
! Ref: 13e499197
! Ref: gnat_ugn/gnat_utility_programs running-gnatclean499197
! Ref: 13f499197
! Node: Switches for gnatclean499864
! Ref: gnat_ugn/gnat_utility_programs id4499985
! Ref: 140499985
! Ref: gnat_ugn/gnat_utility_programs switches-for-gnatclean499985
! Ref: 141499985
! Node: The GNAT Library Browser gnatls503160
! Ref: gnat_ugn/gnat_utility_programs id5503294
! Ref: 142503294
! Ref: gnat_ugn/gnat_utility_programs the-gnat-library-browser-gnatls503294
! Ref: 13c503294
! Node: Running gnatls503699
! Ref: gnat_ugn/gnat_utility_programs id6503811
! Ref: 143503811
! Ref: gnat_ugn/gnat_utility_programs running-gnatls503811
! Ref: 144503811
! Node: Switches for gnatls506363
! Ref: gnat_ugn/gnat_utility_programs id7506507
! Ref: 145506507
! Ref: gnat_ugn/gnat_utility_programs switches-for-gnatls506507
! Ref: 146506507
! Node: Example of gnatls Usage508959
! Ref: gnat_ugn/gnat_utility_programs example-of-gnatls-usage509080
! Ref: 147509080
! Ref: gnat_ugn/gnat_utility_programs id8509080
! Ref: 148509080
! Node: GNAT and Program Execution511504
! Ref: gnat_ugn/gnat_and_program_execution doc511640
! Ref: 149511640
! Ref: gnat_ugn/gnat_and_program_execution gnat-and-program-execution511640
! Ref: d511640
! Ref: gnat_ugn/gnat_and_program_execution id1511640
! Ref: 14a511640
! Node: Running and Debugging Ada Programs512284
! Ref: gnat_ugn/gnat_and_program_execution id2512401
! Ref: 14b512401
! Ref: gnat_ugn/gnat_and_program_execution running-and-debugging-ada-programs512401
! Ref: 152512401
! Node: The GNAT Debugger GDB513757
! Ref: gnat_ugn/gnat_and_program_execution id3513871
! Ref: 153513871
! Ref: gnat_ugn/gnat_and_program_execution the-gnat-debugger-gdb513871
! Ref: 154513871
! Node: Running GDB516980
! Ref: gnat_ugn/gnat_and_program_execution id4517131
! Ref: 155517131
! Ref: gnat_ugn/gnat_and_program_execution running-gdb517131
! Ref: 156517131
! Node: Introduction to GDB Commands517923
! Ref: gnat_ugn/gnat_and_program_execution id5518074
! Ref: 157518074
! Ref: gnat_ugn/gnat_and_program_execution introduction-to-gdb-commands518074
! Ref: 158518074
! Node: Using Ada Expressions524398
! Ref: gnat_ugn/gnat_and_program_execution id6524570
! Ref: 159524570
! Ref: gnat_ugn/gnat_and_program_execution using-ada-expressions524570
! Ref: 15a524570
! Node: Calling User-Defined Subprograms525658
! Ref: gnat_ugn/gnat_and_program_execution calling-user-defined-subprograms525838
! Ref: 15b525838
! Ref: gnat_ugn/gnat_and_program_execution id7525838
! Ref: 15c525838
! Node: Using the next Command in a Function528598
! Ref: gnat_ugn/gnat_and_program_execution id8528796
! Ref: 15d528796
! Ref: gnat_ugn/gnat_and_program_execution using-the-next-command-in-a-function528796
! Ref: 15e528796
! Node: Stopping When Ada Exceptions Are Raised529819
! Ref: gnat_ugn/gnat_and_program_execution id9529994
! Ref: 15f529994
! Ref: gnat_ugn/gnat_and_program_execution stopping-when-ada-exceptions-are-raised529994
! Ref: 160529994
! Node: Ada Tasks531025
! Ref: gnat_ugn/gnat_and_program_execution ada-tasks531187
! Ref: 161531187
! Ref: gnat_ugn/gnat_and_program_execution id10531187
! Ref: 162531187
! Node: Debugging Generic Units533363
! Ref: gnat_ugn/gnat_and_program_execution debugging-generic-units533517
! Ref: 163533517
! Ref: gnat_ugn/gnat_and_program_execution id11533517
! Ref: 164533517
! Node: Remote Debugging with gdbserver534838
! Ref: gnat_ugn/gnat_and_program_execution id12535032
! Ref: 165535032
! Ref: gnat_ugn/gnat_and_program_execution remote-debugging-with-gdbserver535032
! Ref: 166535032
! Node: GNAT Abnormal Termination or Failure to Terminate537007
! Ref: gnat_ugn/gnat_and_program_execution gnat-abnormal-termination-or-failure-to-terminate537218
! Ref: 167537218
! Ref: gnat_ugn/gnat_and_program_execution id13537218
! Ref: 168537218
! Node: Naming Conventions for GNAT Source Files539693
! Ref: gnat_ugn/gnat_and_program_execution id14539911
! Ref: 169539911
! Ref: gnat_ugn/gnat_and_program_execution naming-conventions-for-gnat-source-files539911
! Ref: 16a539911
! Node: Getting Internal Debugging Information542851
! Ref: gnat_ugn/gnat_and_program_execution getting-internal-debugging-information543035
! Ref: 16b543035
! Ref: gnat_ugn/gnat_and_program_execution id15543035
! Ref: 16c543035
! Node: Stack Traceback544073
! Ref: gnat_ugn/gnat_and_program_execution id16544253
! Ref: 16d544253
! Ref: gnat_ugn/gnat_and_program_execution stack-traceback544253
! Ref: 16e544253
! Node: Non-Symbolic Traceback545169
! Ref: gnat_ugn/gnat_and_program_execution id17545272
! Ref: 16f545272
! Ref: gnat_ugn/gnat_and_program_execution non-symbolic-traceback545272
! Ref: 170545272
! Node: Symbolic Traceback554456
! Ref: gnat_ugn/gnat_and_program_execution id18554559
! Ref: 171554559
! Ref: gnat_ugn/gnat_and_program_execution symbolic-traceback554559
! Ref: 172554559
! Node: Pretty-Printers for the GNAT runtime557634
! Ref: gnat_ugn/gnat_and_program_execution id19557767
! Ref: 173557767
! Ref: gnat_ugn/gnat_and_program_execution pretty-printers-for-the-gnat-runtime557767
! Ref: 174557767
! Ref: Pretty-Printers for the GNAT runtime-Footnote-1560530
! Node: Profiling560614
! Ref: gnat_ugn/gnat_and_program_execution id20560761
! Ref: 175560761
! Ref: gnat_ugn/gnat_and_program_execution profiling560761
! Ref: 14c560761
! Node: Profiling an Ada Program with gprof560922
! Ref: gnat_ugn/gnat_and_program_execution id21561005
! Ref: 176561005
! Ref: gnat_ugn/gnat_and_program_execution profiling-an-ada-program-with-gprof561005
! Ref: 177561005
! Node: Compilation for profiling562236
! Ref: gnat_ugn/gnat_and_program_execution compilation-for-profiling562361
! Ref: 178562361
! Ref: gnat_ugn/gnat_and_program_execution id22562361
! Ref: 179562361
! Node: Program execution563155
! Ref: gnat_ugn/gnat_and_program_execution id23563302
! Ref: 17a563302
! Ref: gnat_ugn/gnat_and_program_execution program-execution563302
! Ref: 17b563302
! Node: Running gprof563817
! Ref: gnat_ugn/gnat_and_program_execution id24563974
! Ref: 17c563974
! Ref: gnat_ugn/gnat_and_program_execution running-gprof563974
! Ref: 17d563974
! Node: Interpretation of profiling results566642
! Ref: gnat_ugn/gnat_and_program_execution id25566773
! Ref: 17e566773
! Ref: gnat_ugn/gnat_and_program_execution interpretation-of-profiling-results566773
! Ref: 17f566773
! Node: Improving Performance567457
! Ref: gnat_ugn/gnat_and_program_execution id26567601
! Ref: 14d567601
! Ref: gnat_ugn/gnat_and_program_execution improving-performance567601
! Ref: 180567601
! Node: Performance Considerations568110
! Ref: gnat_ugn/gnat_and_program_execution id27568224
! Ref: 181568224
! Ref: gnat_ugn/gnat_and_program_execution performance-considerations568224
! Ref: 182568224
! Node: Controlling Run-Time Checks569417
! Ref: gnat_ugn/gnat_and_program_execution controlling-run-time-checks569537
! Ref: 183569537
! Ref: gnat_ugn/gnat_and_program_execution id28569537
! Ref: 184569537
! Node: Use of Restrictions571089
! Ref: gnat_ugn/gnat_and_program_execution id29571237
! Ref: 185571237
! Ref: gnat_ugn/gnat_and_program_execution use-of-restrictions571237
! Ref: 186571237
! Node: Optimization Levels572622
! Ref: gnat_ugn/gnat_and_program_execution id30572767
! Ref: 187572767
! Ref: gnat_ugn/gnat_and_program_execution optimization-levels572767
! Ref: f0572767
! Node: Debugging Optimized Code577735
! Ref: gnat_ugn/gnat_and_program_execution debugging-optimized-code577884
! Ref: 188577884
! Ref: gnat_ugn/gnat_and_program_execution id31577884
! Ref: 189577884
! Node: Inlining of Subprograms582792
! Ref: gnat_ugn/gnat_and_program_execution id32582947
! Ref: 18a582947
! Ref: gnat_ugn/gnat_and_program_execution inlining-of-subprograms582947
! Ref: 104582947
! Node: Floating Point Operations587712
! Ref: gnat_ugn/gnat_and_program_execution floating-point-operations587865
! Ref: 18b587865
! Ref: gnat_ugn/gnat_and_program_execution id33587865
! Ref: 18c587865
! Node: Vectorization of loops590055
! Ref: gnat_ugn/gnat_and_program_execution id34590212
! Ref: 18d590212
! Ref: gnat_ugn/gnat_and_program_execution vectorization-of-loops590212
! Ref: 18e590212
! Node: Other Optimization Switches595049
! Ref: gnat_ugn/gnat_and_program_execution id35595213
! Ref: 18f595213
! Ref: gnat_ugn/gnat_and_program_execution other-optimization-switches595213
! Ref: 190595213
! Node: Optimization and Strict Aliasing595909
! Ref: gnat_ugn/gnat_and_program_execution id36596085
! Ref: 191596085
! Ref: gnat_ugn/gnat_and_program_execution optimization-and-strict-aliasing596085
! Ref: e7596085
! Node: Aliased Variables and Optimization606579
! Ref: gnat_ugn/gnat_and_program_execution aliased-variables-and-optimization606761
! Ref: 192606761
! Ref: gnat_ugn/gnat_and_program_execution id37606761
! Ref: 193606761
! Node: Atomic Variables and Optimization608942
! Ref: gnat_ugn/gnat_and_program_execution atomic-variables-and-optimization609117
! Ref: 194609117
! Ref: gnat_ugn/gnat_and_program_execution id38609117
! Ref: 195609117
! Node: Passive Task Optimization611778
! Ref: gnat_ugn/gnat_and_program_execution id39611910
! Ref: 196611910
! Ref: gnat_ugn/gnat_and_program_execution passive-task-optimization611910
! Ref: 197611910
! Node: Text_IO Suggestions613862
! Ref: gnat_ugn/gnat_and_program_execution id40614053
! Ref: 198614053
! Ref: gnat_ugn/gnat_and_program_execution text-io-suggestions614053
! Ref: 199614053
! Node: Reducing Size of Executables with Unused Subprogram/Data Elimination614985
! Ref: gnat_ugn/gnat_and_program_execution id41615141
! Ref: 19a615141
! Ref: gnat_ugn/gnat_and_program_execution reducing-size-of-executables-with-unused-subprogram-data-elimination615141
! Ref: 19b615141
! Node: About unused subprogram/data elimination615561
! Ref: gnat_ugn/gnat_and_program_execution about-unused-subprogram-data-elimination615736
! Ref: 19c615736
! Ref: gnat_ugn/gnat_and_program_execution id42615736
! Ref: 19d615736
! Node: Compilation options616355
! Ref: gnat_ugn/gnat_and_program_execution compilation-options616584
! Ref: 19e616584
! Ref: gnat_ugn/gnat_and_program_execution id43616584
! Ref: 19f616584
! Node: Example of unused subprogram/data elimination618079
! Ref: gnat_ugn/gnat_and_program_execution example-of-unused-subprogram-data-elimination618259
! Ref: 1a0618259
! Ref: gnat_ugn/gnat_and_program_execution id44618259
! Ref: 1a1618259
! Node: Overflow Check Handling in GNAT619728
! Ref: gnat_ugn/gnat_and_program_execution id45619905
! Ref: 14e619905
! Ref: gnat_ugn/gnat_and_program_execution overflow-check-handling-in-gnat619905
! Ref: 1a2619905
! Node: Background620188
! Ref: gnat_ugn/gnat_and_program_execution background620308
! Ref: 1a3620308
! Ref: gnat_ugn/gnat_and_program_execution id46620308
! Ref: 1a4620308
! Node: Management of Overflows in GNAT623986
! Ref: gnat_ugn/gnat_and_program_execution id47624142
! Ref: 1a5624142
! Ref: gnat_ugn/gnat_and_program_execution management-of-overflows-in-gnat624142
! Ref: 1a6624142
! Node: Specifying the Desired Mode629123
! Ref: gnat_ugn/gnat_and_program_execution id48629285
! Ref: 1a7629285
! Ref: gnat_ugn/gnat_and_program_execution specifying-the-desired-mode629285
! Ref: ec629285
! Node: Default Settings632432
! Ref: gnat_ugn/gnat_and_program_execution default-settings632583
! Ref: 1a8632583
! Ref: gnat_ugn/gnat_and_program_execution id49632583
! Ref: 1a9632583
! Node: Implementation Notes633138
! Ref: gnat_ugn/gnat_and_program_execution id50633253
! Ref: 1aa633253
! Ref: gnat_ugn/gnat_and_program_execution implementation-notes633253
! Ref: 1ab633253
! Node: Performing Dimensionality Analysis in GNAT635395
! Ref: gnat_ugn/gnat_and_program_execution id51635575
! Ref: 14f635575
! Ref: gnat_ugn/gnat_and_program_execution performing-dimensionality-analysis-in-gnat635575
! Ref: 1ac635575
! Node: Stack Related Facilities647066
! Ref: gnat_ugn/gnat_and_program_execution id52647239
! Ref: 150647239
! Ref: gnat_ugn/gnat_and_program_execution stack-related-facilities647239
! Ref: 1ad647239
! Node: Stack Overflow Checking647563
! Ref: gnat_ugn/gnat_and_program_execution id53647685
! Ref: 1ae647685
! Ref: gnat_ugn/gnat_and_program_execution stack-overflow-checking647685
! Ref: e8647685
! Node: Static Stack Usage Analysis649465
! Ref: gnat_ugn/gnat_and_program_execution id54649624
! Ref: 1af649624
! Ref: gnat_ugn/gnat_and_program_execution static-stack-usage-analysis649624
! Ref: e9649624
! Node: Dynamic Stack Usage Analysis651109
! Ref: gnat_ugn/gnat_and_program_execution dynamic-stack-usage-analysis651236
! Ref: 117651236
! Ref: gnat_ugn/gnat_and_program_execution id55651236
! Ref: 1b0651236
! Node: Memory Management Issues653174
! Ref: gnat_ugn/gnat_and_program_execution id56653296
! Ref: 151653296
! Ref: gnat_ugn/gnat_and_program_execution memory-management-issues653296
! Ref: 1b1653296
! Node: Some Useful Memory Pools653653
! Ref: gnat_ugn/gnat_and_program_execution id57653777
! Ref: 1b2653777
! Ref: gnat_ugn/gnat_and_program_execution some-useful-memory-pools653777
! Ref: 1b3653777
! Node: The GNAT Debug Pool Facility656459
! Ref: gnat_ugn/gnat_and_program_execution id58656583
! Ref: 1b4656583
! Ref: gnat_ugn/gnat_and_program_execution the-gnat-debug-pool-facility656583
! Ref: 1b5656583
! Node: Platform-Specific Information661583
! Ref: gnat_ugn/platform_specific_information doc661727
! Ref: 1b6661727
! Ref: gnat_ugn/platform_specific_information id1661727
! Ref: 1b7661727
! Ref: gnat_ugn/platform_specific_information platform-specific-information661727
! Ref: e661727
! Node: Run-Time Libraries662127
! Ref: gnat_ugn/platform_specific_information id2662251
! Ref: 1b8662251
! Ref: gnat_ugn/platform_specific_information run-time-libraries662251
! Ref: 1b9662251
! Node: Summary of Run-Time Configurations663535
! Ref: gnat_ugn/platform_specific_information id3663626
! Ref: 1ba663626
! Ref: gnat_ugn/platform_specific_information summary-of-run-time-configurations663626
! Ref: 1bb663626
! Node: Specifying a Run-Time Library664939
! Ref: gnat_ugn/platform_specific_information id4665088
! Ref: 1bc665088
! Ref: gnat_ugn/platform_specific_information specifying-a-run-time-library665088
! Ref: 1bd665088
! Node: GNU/Linux Topics667374
! Ref: gnat_ugn/platform_specific_information gnu-linux-topics667529
! Ref: 1be667529
! Ref: gnat_ugn/platform_specific_information id5667529
! Ref: 1bf667529
! Node: Required Packages on GNU/Linux667902
! Ref: gnat_ugn/platform_specific_information id6668059
! Ref: 1c0668059
! Ref: gnat_ugn/platform_specific_information required-packages-on-gnu-linux668059
! Ref: 1c1668059
! Node: Position Independent Executable PIE Enabled by Default on Linux668811
! Ref: gnat_ugn/platform_specific_information pie-enabled-by-default-on-linux669022
! Ref: 1c2669022
! Ref: gnat_ugn/platform_specific_information position-independent-executable-pie-enabled-by-default-on-linux669022
! Ref: 1c3669022
! Ref: gnat_ugn/platform_specific_information choosing-the-scheduling-policy-with-gnu-linux671003
! Ref: 1c4671003
! Node: Choosing the Scheduling Policy with GNU/Linux671003
! Ref: gnat_ugn/platform_specific_information id7671207
! Ref: 1c5671207
! Node: A GNU/Linux Debug Quirk672722
! Ref: gnat_ugn/platform_specific_information a-gnu-linux-debug-quirk672854
! Ref: 1c6672854
! Ref: gnat_ugn/platform_specific_information id8672854
! Ref: 1c7672854
! Node: Microsoft Windows Topics673605
! Ref: gnat_ugn/platform_specific_information id9673744
! Ref: 1c8673744
! Ref: gnat_ugn/platform_specific_information microsoft-windows-topics673744
! Ref: 1c9673744
! Node: Using GNAT on Windows674213
! Ref: gnat_ugn/platform_specific_information id10674342
! Ref: 1ca674342
! Ref: gnat_ugn/platform_specific_information using-gnat-on-windows674342
! Ref: 1cb674342
! Node: Using a network installation of GNAT677100
! Ref: gnat_ugn/platform_specific_information id11677268
! Ref: 1cc677268
! Ref: gnat_ugn/platform_specific_information using-a-network-installation-of-gnat677268
! Ref: 1cd677268
! Node: CONSOLE and WINDOWS subsystems678171
! Ref: gnat_ugn/platform_specific_information console-and-windows-subsystems678333
! Ref: 1ce678333
! Ref: gnat_ugn/platform_specific_information id12678333
! Ref: 1cf678333
! Node: Temporary Files678835
! Ref: gnat_ugn/platform_specific_information id13679002
! Ref: 1d0679002
! Ref: gnat_ugn/platform_specific_information temporary-files679002
! Ref: 1d1679002
! Node: Disabling Command Line Argument Expansion679667
! Ref: gnat_ugn/platform_specific_information disabling-command-line-argument-expansion679847
! Ref: 1d2679847
! Node: Choosing the Scheduling Policy with Windows681462
! Ref: gnat_ugn/platform_specific_information choosing-the-scheduling-policy-with-windows681650
! Ref: 1d3681650
! Ref: gnat_ugn/platform_specific_information id14681650
! Ref: 1d4681650
! Node: Windows Socket Timeouts682382
! Ref: gnat_ugn/platform_specific_information windows-socket-timeouts682566
! Ref: 1d5682566
! Node: Mixed-Language Programming on Windows684774
! Ref: gnat_ugn/platform_specific_information id15684939
! Ref: 1d6684939
! Ref: gnat_ugn/platform_specific_information mixed-language-programming-on-windows684939
! Ref: 1d7684939
! Node: Windows Calling Conventions687507
! Ref: gnat_ugn/platform_specific_information id16687662
! Ref: 1da687662
! Ref: gnat_ugn/platform_specific_information windows-calling-conventions687662
! Ref: 1db687662
! Node: C Calling Convention688593
! Ref: gnat_ugn/platform_specific_information c-calling-convention688714
! Ref: 1dc688714
! Ref: gnat_ugn/platform_specific_information id17688714
! Ref: 1dd688714
! Node: Stdcall Calling Convention690182
! Ref: gnat_ugn/platform_specific_information id18690336
! Ref: 1df690336
! Ref: gnat_ugn/platform_specific_information stdcall-calling-convention690336
! Ref: 1de690336
! Node: Win32 Calling Convention693108
! Ref: gnat_ugn/platform_specific_information id19693264
! Ref: 1e0693264
! Ref: gnat_ugn/platform_specific_information win32-calling-convention693264
! Ref: 1e1693264
! Node: DLL Calling Convention693458
! Ref: gnat_ugn/platform_specific_information dll-calling-convention693579
! Ref: 1e2693579
! Ref: gnat_ugn/platform_specific_information id20693579
! Ref: 1e3693579
! Node: Introduction to Dynamic Link Libraries DLLs693769
! Ref: gnat_ugn/platform_specific_information id21693953
! Ref: 1e4693953
! Ref: gnat_ugn/platform_specific_information introduction-to-dynamic-link-libraries-dlls693953
! Ref: 1e5693953
! Node: Using DLLs with GNAT697312
! Ref: gnat_ugn/platform_specific_information id22697506
! Ref: 1e7697506
! Ref: gnat_ugn/platform_specific_information using-dlls-with-gnat697506
! Ref: 1d8697506
! Node: Creating an Ada Spec for the DLL Services699491
! Ref: gnat_ugn/platform_specific_information creating-an-ada-spec-for-the-dll-services699626
! Ref: 1e8699626
! Ref: gnat_ugn/platform_specific_information id23699626
! Ref: 1e9699626
! Node: Creating an Import Library700590
! Ref: gnat_ugn/platform_specific_information creating-an-import-library700725
! Ref: 1ea700725
! Ref: gnat_ugn/platform_specific_information id24700725
! Ref: 1eb700725
! Ref: gnat_ugn/platform_specific_information the-definition-file701151
! Ref: 1e6701151
! Ref: gnat_ugn/platform_specific_information create-def-file-automatically702448
! Ref: 1ec702448
! Ref: gnat_ugn/platform_specific_information gnat-style-import-library703606
! Ref: 1ed703606
! Ref: gnat_ugn/platform_specific_information msvs-style-import-library704550
! Ref: 1ef704550
! Node: Building DLLs with GNAT Project files705278
! Ref: gnat_ugn/platform_specific_information building-dlls-with-gnat-project-files705452
! Ref: 1d9705452
! Ref: gnat_ugn/platform_specific_information id25705452
! Ref: 1f0705452
! Node: Building DLLs with GNAT705930
! Ref: gnat_ugn/platform_specific_information building-dlls-with-gnat706110
! Ref: 1f1706110
! Ref: gnat_ugn/platform_specific_information id26706110
! Ref: 1f2706110
! Node: Building DLLs with gnatdll708003
! Ref: gnat_ugn/platform_specific_information building-dlls-with-gnatdll708171
! Ref: 1f3708171
! Ref: gnat_ugn/platform_specific_information id27708171
! Ref: 1f4708171
! Node: Limitations When Using Ada DLLs from Ada710657
! Ref: gnat_ugn/platform_specific_information limitations-when-using-ada-dlls-from-ada710793
! Ref: 1f8710793
! Node: Exporting Ada Entities711699
! Ref: gnat_ugn/platform_specific_information exporting-ada-entities711868
! Ref: 1f5711868
! Ref: gnat_ugn/platform_specific_information id28711868
! Ref: 1f9711868
! Node: Ada DLLs and Elaboration714759
! Ref: gnat_ugn/platform_specific_information ada-dlls-and-elaboration714879
! Ref: 1f6714879
! Ref: gnat_ugn/platform_specific_information id29714879
! Ref: 1fb714879
! Node: Ada DLLs and Finalization716306
! Ref: gnat_ugn/platform_specific_information ada-dlls-and-finalization716479
! Ref: 1f7716479
! Ref: gnat_ugn/platform_specific_information id30716479
! Ref: 1fc716479
! Node: Creating a Spec for Ada DLLs717150
! Ref: gnat_ugn/platform_specific_information creating-a-spec-for-ada-dlls717323
! Ref: 1fd717323
! Ref: gnat_ugn/platform_specific_information id31717323
! Ref: 1fe717323
! Node: Creating the Definition File718735
! Ref: gnat_ugn/platform_specific_information creating-the-definition-file718852
! Ref: 1fa718852
! Ref: gnat_ugn/platform_specific_information id32718852
! Ref: 1ff718852
! Node: Using gnatdll719613
! Ref: gnat_ugn/platform_specific_information id33719730
! Ref: 200719730
! Ref: gnat_ugn/platform_specific_information using-gnatdll719730
! Ref: 1ee719730
! Ref: gnat_ugn/platform_specific_information using-dlltool726070
! Ref: 201726070
! Node: GNAT and Windows Resources727430
! Ref: gnat_ugn/platform_specific_information gnat-and-windows-resources727635
! Ref: 202727635
! Ref: gnat_ugn/platform_specific_information id34727635
! Ref: 203727635
! Node: Building Resources729420
! Ref: gnat_ugn/platform_specific_information building-resources729531
! Ref: 204729531
! Ref: gnat_ugn/platform_specific_information id35729531
! Ref: 205729531
! Node: Compiling Resources730101
! Ref: gnat_ugn/platform_specific_information compiling-resources730236
! Ref: 206730236
! Ref: gnat_ugn/platform_specific_information id36730236
! Ref: 207730236
! Node: Using Resources731167
! Ref: gnat_ugn/platform_specific_information id37731275
! Ref: 208731275
! Ref: gnat_ugn/platform_specific_information using-resources731275
! Ref: 209731275
! Node: Using GNAT DLLs from Microsoft Visual Studio Applications731565
! Ref: gnat_ugn/platform_specific_information using-gnat-dll-from-msvs731757
! Ref: 20a731757
! Ref: gnat_ugn/platform_specific_information using-gnat-dlls-from-microsoft-visual-studio-applications731757
! Ref: 20b731757
! Node: Debugging a DLL733343
! Ref: gnat_ugn/platform_specific_information debugging-a-dll733541
! Ref: 20c733541
! Ref: gnat_ugn/platform_specific_information id38733541
! Ref: 20d733541
! Node: Program and DLL Both Built with GCC/GNAT734413
! Ref: gnat_ugn/platform_specific_information id39734576
! Ref: 20e734576
! Ref: gnat_ugn/platform_specific_information program-and-dll-both-built-with-gcc-gnat734576
! Ref: 20f734576
! Node: Program Built with Foreign Tools and DLL Built with GCC/GNAT735890
! Ref: gnat_ugn/platform_specific_information id40736053
! Ref: 210736053
! Ref: gnat_ugn/platform_specific_information program-built-with-foreign-tools-and-dll-built-with-gcc-gnat736053
! Ref: 211736053
! Node: Setting Stack Size from gnatlink739492
! Ref: gnat_ugn/platform_specific_information id41739664
! Ref: 212739664
! Ref: gnat_ugn/platform_specific_information setting-stack-size-from-gnatlink739664
! Ref: 12b739664
! Node: Setting Heap Size from gnatlink740857
! Ref: gnat_ugn/platform_specific_information id42741005
! Ref: 213741005
! Ref: gnat_ugn/platform_specific_information setting-heap-size-from-gnatlink741005
! Ref: 12c741005
! Node: Windows Specific Add-Ons741688
! Ref: gnat_ugn/platform_specific_information win32-specific-addons741821
! Ref: 214741821
! Ref: gnat_ugn/platform_specific_information windows-specific-add-ons741821
! Ref: 215741821
! Node: Win32Ada741972
! Ref: gnat_ugn/platform_specific_information id43742058
! Ref: 216742058
! Ref: gnat_ugn/platform_specific_information win32ada742058
! Ref: 217742058
! Node: wPOSIX742650
! Ref: gnat_ugn/platform_specific_information id44742736
! Ref: 218742736
! Ref: gnat_ugn/platform_specific_information wposix742736
! Ref: 219742736
! Node: Mac OS Topics743448
! Ref: gnat_ugn/platform_specific_information id45743562
! Ref: 21a743562
! Ref: gnat_ugn/platform_specific_information mac-os-topics743562
! Ref: 21b743562
! Node: Codesigning the Debugger743715
! Ref: gnat_ugn/platform_specific_information codesigning-the-debugger743791
! Ref: 21c743791
! Node: Example of Binder Output File745796
! Ref: gnat_ugn/example_of_binder_output doc745948
! Ref: 21d745948
! Ref: gnat_ugn/example_of_binder_output example-of-binder-output-file745948
! Ref: f745948
! Ref: gnat_ugn/example_of_binder_output id1745948
! Ref: 21e745948
! Node: Elaboration Order Handling in GNAT776988
! Ref: gnat_ugn/elaboration_order_handling_in_gnat doc777127
! Ref: 21f777127
! Ref: gnat_ugn/elaboration_order_handling_in_gnat elaboration-order-handling-in-gnat777127
! Ref: 10777127
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id1777127
! Ref: 220777127
! Node: Elaboration Code777878
! Ref: gnat_ugn/elaboration_order_handling_in_gnat elaboration-code777993
! Ref: 221777993
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id2777993
! Ref: 222777993
! Node: Elaboration Order781835
! Ref: gnat_ugn/elaboration_order_handling_in_gnat elaboration-order781989
! Ref: 223781989
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id3781989
! Ref: 224781989
! Node: Checking the Elaboration Order785641
! Ref: gnat_ugn/elaboration_order_handling_in_gnat checking-the-elaboration-order785819
! Ref: 225785819
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id4785819
! Ref: 226785819
! Node: Controlling the Elaboration Order in Ada787483
! Ref: gnat_ugn/elaboration_order_handling_in_gnat controlling-the-elaboration-order-in-ada787685
! Ref: 227787685
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id5787685
! Ref: 228787685
! Node: Controlling the Elaboration Order in GNAT796198
! Ref: gnat_ugn/elaboration_order_handling_in_gnat controlling-the-elaboration-order-in-gnat796395
! Ref: 229796395
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id6796395
! Ref: 22a796395
! Node: Mixing Elaboration Models800239
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id7800411
! Ref: 22b800411
! Ref: gnat_ugn/elaboration_order_handling_in_gnat mixing-elaboration-models800411
! Ref: 22c800411
! Node: ABE Diagnostics801426
! Ref: gnat_ugn/elaboration_order_handling_in_gnat abe-diagnostics801574
! Ref: 22d801574
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id8801574
! Ref: 22e801574
! Node: SPARK Diagnostics805086
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id9805234
! Ref: 22f805234
! Ref: gnat_ugn/elaboration_order_handling_in_gnat spark-diagnostics805234
! Ref: 230805234
! Node: Elaboration Circularities805999
! Ref: gnat_ugn/elaboration_order_handling_in_gnat elaboration-circularities806167
! Ref: 231806167
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id10806167
! Ref: 232806167
! Node: Resolving Elaboration Circularities808414
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id11808602
! Ref: 233808602
! Ref: gnat_ugn/elaboration_order_handling_in_gnat resolving-elaboration-circularities808602
! Ref: 234808602
! Node: Elaboration-related Compiler Switches816075
! Ref: gnat_ugn/elaboration_order_handling_in_gnat elaboration-related-compiler-switches816283
! Ref: 235816283
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id12816283
! Ref: 236816283
! Node: Summary of Procedures for Elaboration Control821121
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id13821333
! Ref: 237821333
! Ref: gnat_ugn/elaboration_order_handling_in_gnat summary-of-procedures-for-elaboration-control821333
! Ref: 238821333
! Node: Inspecting the Chosen Elaboration Order823143
! Ref: gnat_ugn/elaboration_order_handling_in_gnat id14823309
! Ref: 239823309
! Ref: gnat_ugn/elaboration_order_handling_in_gnat inspecting-the-chosen-elaboration-order823309
! Ref: 23a823309
! Node: Inline Assembler827924
! Ref: gnat_ugn/inline_assembler doc828064
! Ref: 23b828064
! Ref: gnat_ugn/inline_assembler id1828064
! Ref: 23c828064
! Ref: gnat_ugn/inline_assembler inline-assembler828064
! Ref: 11828064
! Node: Basic Assembler Syntax829614
! Ref: gnat_ugn/inline_assembler basic-assembler-syntax829736
! Ref: 23d829736
! Ref: gnat_ugn/inline_assembler id2829736
! Ref: 23e829736
! Node: A Simple Example of Inline Assembler831722
! Ref: gnat_ugn/inline_assembler a-simple-example-of-inline-assembler831889
! Ref: 23f831889
! Ref: gnat_ugn/inline_assembler id3831889
! Ref: 240831889
! Node: Output Variables in Inline Assembler835174
! Ref: gnat_ugn/inline_assembler id4835354
! Ref: 241835354
! Ref: gnat_ugn/inline_assembler output-variables-in-inline-assembler835354
! Ref: 242835354
! Node: Input Variables in Inline Assembler843471
! Ref: gnat_ugn/inline_assembler id5843645
! Ref: 243843645
! Ref: gnat_ugn/inline_assembler input-variables-in-inline-assembler843645
! Ref: 244843645
! Node: Inlining Inline Assembler Code846029
! Ref: gnat_ugn/inline_assembler id6846190
! Ref: 245846190
! Ref: gnat_ugn/inline_assembler inlining-inline-assembler-code846190
! Ref: 246846190
! Node: Other Asm Functionality848090
! Ref: gnat_ugn/inline_assembler id7848207
! Ref: 247848207
! Ref: gnat_ugn/inline_assembler other-asm-functionality848207
! Ref: 248848207
! Node: The Clobber Parameter848521
! Ref: gnat_ugn/inline_assembler id8848635
! Ref: 249848635
! Ref: gnat_ugn/inline_assembler the-clobber-parameter848635
! Ref: 24a848635
! Node: The Volatile Parameter850625
! Ref: gnat_ugn/inline_assembler id9850739
! Ref: 24b850739
! Ref: gnat_ugn/inline_assembler the-volatile-parameter850739
! Ref: 24c850739
! Node: GNU Free Documentation License851896
! Ref: share/gnu_free_documentation_license doc852007
! Ref: 24d852007
! Ref: share/gnu_free_documentation_license gnu-fdl852007
! Ref: 1852007
! Ref: share/gnu_free_documentation_license gnu-free-documentation-license852007
! Ref: 24e852007
! Node: Index875349
! Ref: d21016288
! Ref: gnat_ugn/gnat_utility_programs switches-related-to-project-files1016289
  
  End Tag Table
  
diff -Nrcpad gcc-15.2.0/gcc/doc/gpl.7 gcc-15.3.0/gcc/doc/gpl.7
*** gcc-15.2.0/gcc/doc/gpl.7	Fri Aug  8 06:54:13 2025
--- gcc-15.3.0/gcc/doc/gpl.7	Fri Jun 12 06:11:48 2026
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
--- 1,5 ----
! .\" -*- mode: troff; coding: utf-8 -*-
! .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
***************
*** 15,43 ****
  .ft R
  .fi
  ..
! .\" Set up some character translations and predefined strings.  \*(-- will
! .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
! .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
! .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
! .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
! .\" nothing in troff, for use with C<>.
! .tr \(*W-
! .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
  .ie n \{\
- .    ds -- \(*W-
- .    ds PI pi
- .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
- .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
- .    ds L" ""
- .    ds R" ""
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
- .    ds -- \|\(em\|
- .    ds PI \(*p
- .    ds L" ``
- .    ds R" ''
  .    ds C`
  .    ds C'
  'br\}
--- 16,27 ----
  .ft R
  .fi
  ..
! .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
  .ie n \{\
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
  .    ds C`
  .    ds C'
  'br\}
***************
*** 54,144 ****
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .if !\nF .nr F 0
! .if \nF>0 \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    if !\nF==2 \{\
! .        nr % 0
! .        nr F 2
  .    \}
  .\}
  .\"
! .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
! .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
! .    \" fudge factors for nroff and troff
! .if n \{\
! .    ds #H 0
! .    ds #V .8m
! .    ds #F .3m
! .    ds #[ \f1
! .    ds #] \fP
! .\}
! .if t \{\
! .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
! .    ds #V .6m
! .    ds #F 0
! .    ds #[ \&
! .    ds #] \&
! .\}
! .    \" simple accents for nroff and troff
! .if n \{\
! .    ds ' \&
! .    ds ` \&
! .    ds ^ \&
! .    ds , \&
! .    ds ~ ~
! .    ds /
! .\}
! .if t \{\
! .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
! .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
! .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
! .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
! .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
! .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
! .\}
! .    \" troff and (daisy-wheel) nroff accents
! .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
! .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
! .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
! .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
! .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
! .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
! .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
! .ds ae a\h'-(\w'a'u*4/10)'e
! .ds Ae A\h'-(\w'A'u*4/10)'E
! .    \" corrections for vroff
! .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
! .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
! .    \" for low resolution devices (crt and lpr)
! .if \n(.H>23 .if \n(.V>19 \
! \{\
! .    ds : e
! .    ds 8 ss
! .    ds o a
! .    ds d- d\h'-1'\(ga
! .    ds D- D\h'-1'\(hy
! .    ds th \o'bp'
! .    ds Th \o'LP'
! .    ds ae ae
! .    ds Ae AE
! .\}
! .rm #[ #] #H #V #F C
  .\" ========================================================================
  .\"
  .IX Title "GPL 7"
! .TH GPL 7 "2025-08-08" "gcc-15.2.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH "NAME"
  gpl \- GNU General Public License
! .SH "DESCRIPTION"
  .IX Header "DESCRIPTION"
! .SS "\s-1GNU\s0 General Public License"
  .IX Subsection "GNU General Public License"
  .SS "Version 3, 29 June 2007"
  .IX Subsection "Version 3, 29 June 2007"
--- 38,73 ----
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .nr rF 0
! .if \n(.g .if rF .nr rF 1
! .if (\n(rF:(\n(.g==0)) \{\
! .    if \nF \{\
! .        de IX
! .        tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .        if !\nF==2 \{\
! .            nr % 0
! .            nr F 2
! .        \}
  .    \}
  .\}
+ .rr rF
  .\"
! .\" Required to disable full justification in groff 1.23.0.
! .if n .ds AD l
  .\" ========================================================================
  .\"
  .IX Title "GPL 7"
! .TH GPL 7 2026-06-12 gcc-15.3.0 GNU
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH NAME
  gpl \- GNU General Public License
! .SH DESCRIPTION
  .IX Header "DESCRIPTION"
! .SS "GNU General Public License"
  .IX Subsection "GNU General Public License"
  .SS "Version 3, 29 June 2007"
  .IX Subsection "Version 3, 29 June 2007"
*************** gpl \- GNU General Public License
*** 148,164 ****
  \&        Everyone is permitted to copy and distribute verbatim copies of this
  \&        license document, but changing it is not allowed.
  .Ve
! .SS "Preamble"
  .IX Subsection "Preamble"
! The \s-1GNU\s0 General Public License is a free, copyleft license for
  software and other kinds of works.
  .PP
  The licenses for most software and other practical works are designed
  to take away your freedom to share and change the works.  By contrast,
! the \s-1GNU\s0 General Public License is intended to guarantee your freedom
! to share and change all versions of a program\*(--to make sure it remains
  free software for all its users.  We, the Free Software Foundation,
! use the \s-1GNU\s0 General Public License for most of our software; it
  applies also to any other work released this way by its authors.  You
  can apply it to your programs, too.
  .PP
--- 77,93 ----
  \&        Everyone is permitted to copy and distribute verbatim copies of this
  \&        license document, but changing it is not allowed.
  .Ve
! .SS Preamble
  .IX Subsection "Preamble"
! The GNU General Public License is a free, copyleft license for
  software and other kinds of works.
  .PP
  The licenses for most software and other practical works are designed
  to take away your freedom to share and change the works.  By contrast,
! the GNU General Public License is intended to guarantee your freedom
! to share and change all versions of a program\-\-to make sure it remains
  free software for all its users.  We, the Free Software Foundation,
! use the GNU General Public License for most of our software; it
  applies also to any other work released this way by its authors.  You
  can apply it to your programs, too.
  .PP
*************** freedoms that you received.  You must ma
*** 181,251 ****
  receive or can get the source code.  And you must show them these
  terms so they know their rights.
  .PP
! Developers that use the \s-1GNU GPL\s0 protect your rights with two steps:
  (1) assert copyright on the software, and (2) offer you this License
  giving you legal permission to copy, distribute and/or modify it.
  .PP
! For the developers' and authors' protection, the \s-1GPL\s0 clearly explains
! that there is no warranty for this free software.  For both users' and
! authors' sake, the \s-1GPL\s0 requires that modified versions be marked as
  changed, so that their problems will not be attributed erroneously to
  authors of previous versions.
  .PP
  Some devices are designed to deny users access to install or run
  modified versions of the software inside them, although the
  manufacturer can do so.  This is fundamentally incompatible with the
! aim of protecting users' freedom to change the software.  The
  systematic pattern of such abuse occurs in the area of products for
  individuals to use, which is precisely where it is most unacceptable.
! Therefore, we have designed this version of the \s-1GPL\s0 to prohibit the
  practice for those products.  If such problems arise substantially in
  other domains, we stand ready to extend this provision to those
! domains in future versions of the \s-1GPL,\s0 as needed to protect the
  freedom of users.
  .PP
  Finally, every program is threatened constantly by software patents.
  States should not allow patents to restrict development and use of
! software on general-purpose computers, but in those that do, we wish
  to avoid the special danger that patents applied to a free program
! could make it effectively proprietary.  To prevent this, the \s-1GPL\s0
! assures that patents cannot be used to render the program non-free.
  .PP
  The precise terms and conditions for copying, distribution and
  modification follow.
! .SS "\s-1TERMS AND CONDITIONS\s0"
  .IX Subsection "TERMS AND CONDITIONS"
  .IP "0. Definitions." 4
  .IX Item "0. Definitions."
! \&\*(L"This License\*(R" refers to version 3 of the \s-1GNU\s0 General Public License.
  .Sp
! \&\*(L"Copyright\*(R" also means copyright-like laws that apply to other kinds
  of works, such as semiconductor masks.
  .Sp
! \&\*(L"The Program\*(R" refers to any copyrightable work licensed under this
! License.  Each licensee is addressed as \*(L"you\*(R".  \*(L"Licensees\*(R" and
! \&\*(L"recipients\*(R" may be individuals or organizations.
  .Sp
! To \*(L"modify\*(R" a work means to copy from or adapt all or part of the work
  in a fashion requiring copyright permission, other than the making of
! an exact copy.  The resulting work is called a \*(L"modified version\*(R" of
! the earlier work or a work \*(L"based on\*(R" the earlier work.
  .Sp
! A \*(L"covered work\*(R" means either the unmodified Program or a work based
  on the Program.
  .Sp
! To \*(L"propagate\*(R" a work means to do anything with it that, without
  permission, would make you directly or secondarily liable for
  infringement under applicable copyright law, except executing it on a
  computer or modifying a private copy.  Propagation includes copying,
  distribution (with or without modification), making available to the
  public, and in some countries other activities as well.
  .Sp
! To \*(L"convey\*(R" a work means any kind of propagation that enables other
  parties to make or receive copies.  Mere interaction with a user
  through a computer network, with no transfer of a copy, is not
  conveying.
  .Sp
! An interactive user interface displays \*(L"Appropriate Legal Notices\*(R" to
  the extent that it includes a convenient and prominently visible
  feature that (1) displays an appropriate copyright notice, and (2)
  tells the user that there is no warranty for the work (except to the
--- 110,180 ----
  receive or can get the source code.  And you must show them these
  terms so they know their rights.
  .PP
! Developers that use the GNU GPL protect your rights with two steps:
  (1) assert copyright on the software, and (2) offer you this License
  giving you legal permission to copy, distribute and/or modify it.
  .PP
! For the developers\*(Aq and authors\*(Aq protection, the GPL clearly explains
! that there is no warranty for this free software.  For both users\*(Aq and
! authors\*(Aq sake, the GPL requires that modified versions be marked as
  changed, so that their problems will not be attributed erroneously to
  authors of previous versions.
  .PP
  Some devices are designed to deny users access to install or run
  modified versions of the software inside them, although the
  manufacturer can do so.  This is fundamentally incompatible with the
! aim of protecting users\*(Aq freedom to change the software.  The
  systematic pattern of such abuse occurs in the area of products for
  individuals to use, which is precisely where it is most unacceptable.
! Therefore, we have designed this version of the GPL to prohibit the
  practice for those products.  If such problems arise substantially in
  other domains, we stand ready to extend this provision to those
! domains in future versions of the GPL, as needed to protect the
  freedom of users.
  .PP
  Finally, every program is threatened constantly by software patents.
  States should not allow patents to restrict development and use of
! software on general\-purpose computers, but in those that do, we wish
  to avoid the special danger that patents applied to a free program
! could make it effectively proprietary.  To prevent this, the GPL
! assures that patents cannot be used to render the program non\-free.
  .PP
  The precise terms and conditions for copying, distribution and
  modification follow.
! .SS "TERMS AND CONDITIONS"
  .IX Subsection "TERMS AND CONDITIONS"
  .IP "0. Definitions." 4
  .IX Item "0. Definitions."
! "This License" refers to version 3 of the GNU General Public License.
  .Sp
! "Copyright" also means copyright\-like laws that apply to other kinds
  of works, such as semiconductor masks.
  .Sp
! "The Program" refers to any copyrightable work licensed under this
! License.  Each licensee is addressed as "you".  "Licensees" and
! "recipients" may be individuals or organizations.
  .Sp
! To "modify" a work means to copy from or adapt all or part of the work
  in a fashion requiring copyright permission, other than the making of
! an exact copy.  The resulting work is called a "modified version" of
! the earlier work or a work "based on" the earlier work.
  .Sp
! A "covered work" means either the unmodified Program or a work based
  on the Program.
  .Sp
! To "propagate" a work means to do anything with it that, without
  permission, would make you directly or secondarily liable for
  infringement under applicable copyright law, except executing it on a
  computer or modifying a private copy.  Propagation includes copying,
  distribution (with or without modification), making available to the
  public, and in some countries other activities as well.
  .Sp
! To "convey" a work means any kind of propagation that enables other
  parties to make or receive copies.  Mere interaction with a user
  through a computer network, with no transfer of a copy, is not
  conveying.
  .Sp
! An interactive user interface displays "Appropriate Legal Notices" to
  the extent that it includes a convenient and prominently visible
  feature that (1) displays an appropriate copyright notice, and (2)
  tells the user that there is no warranty for the work (except to the
*************** the interface presents a list of user co
*** 255,285 ****
  menu, a prominent item in the list meets this criterion.
  .IP "1. Source Code." 4
  .IX Item "1. Source Code."
! The \*(L"source code\*(R" for a work means the preferred form of the work for
! making modifications to it.  \*(L"Object code\*(R" means any non-source form
  of a work.
  .Sp
! A \*(L"Standard Interface\*(R" means an interface that either is an official
  standard defined by a recognized standards body, or, in the case of
  interfaces specified for a particular programming language, one that
  is widely used among developers working in that language.
  .Sp
! The \*(L"System Libraries\*(R" of an executable work include anything, other
  than the work as a whole, that (a) is included in the normal form of
  packaging a Major Component, but which is not part of that Major
  Component, and (b) serves only to enable use of the work with that
  Major Component, or to implement a Standard Interface for which an
  implementation is available to the public in source code form.  A
! \&\*(L"Major Component\*(R", in this context, means a major essential component
  (kernel, window system, and so on) of the specific operating system
  (if any) on which the executable work runs, or a compiler used to
  produce the work, or an object code interpreter used to run it.
  .Sp
! The \*(L"Corresponding Source\*(R" for a work in object code form means all
  the source code needed to generate, install, and (for an executable
  work) run the object code and to modify the work, including scripts to
! control those activities.  However, it does not include the work's
! System Libraries, or general-purpose tools or generally available free
  programs which are used unmodified in performing those activities but
  which are not part of the work.  For example, Corresponding Source
  includes interface definition files associated with source files for
--- 184,214 ----
  menu, a prominent item in the list meets this criterion.
  .IP "1. Source Code." 4
  .IX Item "1. Source Code."
! The "source code" for a work means the preferred form of the work for
! making modifications to it.  "Object code" means any non\-source form
  of a work.
  .Sp
! A "Standard Interface" means an interface that either is an official
  standard defined by a recognized standards body, or, in the case of
  interfaces specified for a particular programming language, one that
  is widely used among developers working in that language.
  .Sp
! The "System Libraries" of an executable work include anything, other
  than the work as a whole, that (a) is included in the normal form of
  packaging a Major Component, but which is not part of that Major
  Component, and (b) serves only to enable use of the work with that
  Major Component, or to implement a Standard Interface for which an
  implementation is available to the public in source code form.  A
! "Major Component", in this context, means a major essential component
  (kernel, window system, and so on) of the specific operating system
  (if any) on which the executable work runs, or a compiler used to
  produce the work, or an object code interpreter used to run it.
  .Sp
! The "Corresponding Source" for a work in object code form means all
  the source code needed to generate, install, and (for an executable
  work) run the object code and to modify the work, including scripts to
! control those activities.  However, it does not include the work\*(Aqs
! System Libraries, or general\-purpose tools or generally available free
  programs which are used unmodified in performing those activities but
  which are not part of the work.  For example, Corresponding Source
  includes interface definition files associated with source files for
*************** copyrighted material outside their relat
*** 317,327 ****
  Conveying under any other circumstances is permitted solely under the
  conditions stated below.  Sublicensing is not allowed; section 10
  makes it unnecessary.
! .IP "3. Protecting Users' Legal Rights From Anti-Circumvention Law." 4
  .IX Item "3. Protecting Users' Legal Rights From Anti-Circumvention Law."
  No covered work shall be deemed part of an effective technological
  measure under any applicable law fulfilling obligations under article
! 11 of the \s-1WIPO\s0 copyright treaty adopted on 20 December 1996, or
  similar laws prohibiting or restricting circumvention of such
  measures.
  .Sp
--- 246,256 ----
  Conveying under any other circumstances is permitted solely under the
  conditions stated below.  Sublicensing is not allowed; section 10
  makes it unnecessary.
! .IP "3. Protecting Users\*(Aq Legal Rights From Anti\-Circumvention Law." 4
  .IX Item "3. Protecting Users' Legal Rights From Anti-Circumvention Law."
  No covered work shall be deemed part of an effective technological
  measure under any applicable law fulfilling obligations under article
! 11 of the WIPO copyright treaty adopted on 20 December 1996, or
  similar laws prohibiting or restricting circumvention of such
  measures.
  .Sp
*************** circumvention of technological measures
*** 330,344 ****
  circumvention is effected by exercising rights under this License with
  respect to the covered work, and you disclaim any intention to limit
  operation or modification of the work as a means of enforcing, against
! the work's users, your or third parties' legal rights to forbid
  circumvention of technological measures.
  .IP "4. Conveying Verbatim Copies." 4
  .IX Item "4. Conveying Verbatim Copies."
! You may convey verbatim copies of the Program's source code as you
  receive it, in any medium, provided that you conspicuously and
  appropriately publish on each copy an appropriate copyright notice;
  keep intact all notices stating that this License and any
! non-permissive terms added in accord with section 7 apply to the code;
  keep intact all notices of the absence of any warranty; and give all
  recipients a copy of this License along with the Program.
  .Sp
--- 259,273 ----
  circumvention is effected by exercising rights under this License with
  respect to the covered work, and you disclaim any intention to limit
  operation or modification of the work as a means of enforcing, against
! the work\*(Aqs users, your or third parties\*(Aq legal rights to forbid
  circumvention of technological measures.
  .IP "4. Conveying Verbatim Copies." 4
  .IX Item "4. Conveying Verbatim Copies."
! You may convey verbatim copies of the Program\*(Aqs source code as you
  receive it, in any medium, provided that you conspicuously and
  appropriately publish on each copy an appropriate copyright notice;
  keep intact all notices stating that this License and any
! non\-permissive terms added in accord with section 7 apply to the code;
  keep intact all notices of the absence of any warranty; and give all
  recipients a copy of this License along with the Program.
  .Sp
*************** produce it from the Program, in the form
*** 351,367 ****
  terms of section 4, provided that you also meet all of these
  conditions:
  .RS 4
! .IP "a." 4
  .IX Item "a."
  The work must carry prominent notices stating that you modified it,
  and giving a relevant date.
! .IP "b." 4
  .IX Item "b."
  The work must carry prominent notices stating that it is released
  under this License and any conditions added under section 7.  This
! requirement modifies the requirement in section 4 to \*(L"keep intact all
! notices\*(R".
! .IP "c." 4
  .IX Item "c."
  You must license the entire work, as a whole, under this License to
  anyone who comes into possession of a copy.  This License will
--- 280,296 ----
  terms of section 4, provided that you also meet all of these
  conditions:
  .RS 4
! .IP a. 4
  .IX Item "a."
  The work must carry prominent notices stating that you modified it,
  and giving a relevant date.
! .IP b. 4
  .IX Item "b."
  The work must carry prominent notices stating that it is released
  under this License and any conditions added under section 7.  This
! requirement modifies the requirement in section 4 to "keep intact all
! notices".
! .IP c. 4
  .IX Item "c."
  You must license the entire work, as a whole, under this License to
  anyone who comes into possession of a copy.  This License will
*************** to the whole of the work, and all its pa
*** 370,376 ****
  are packaged.  This License gives no permission to license the work in
  any other way, but it does not invalidate such permission if you have
  separately received it.
! .IP "d." 4
  .IX Item "d."
  If the work has interactive user interfaces, each must display
  Appropriate Legal Notices; however, if the Program has interactive
--- 299,305 ----
  are packaged.  This License gives no permission to license the work in
  any other way, but it does not invalidate such permission if you have
  separately received it.
! .IP d. 4
  .IX Item "d."
  If the work has interactive user interfaces, each must display
  Appropriate Legal Notices; however, if the Program has interactive
*************** A compilation of a covered work with oth
*** 383,408 ****
  works, which are not by their nature extensions of the covered work,
  and which are not combined with it such as to form a larger program,
  in or on a volume of a storage or distribution medium, is called an
! \&\*(L"aggregate\*(R" if the compilation and its resulting copyright are not
! used to limit the access or legal rights of the compilation's users
  beyond what the individual works permit.  Inclusion of a covered work
  in an aggregate does not cause this License to apply to the other
  parts of the aggregate.
  .RE
! .IP "6. Conveying Non-Source Forms." 4
  .IX Item "6. Conveying Non-Source Forms."
  You may convey a covered work in object code form under the terms of
! sections 4 and 5, provided that you also convey the machine-readable
  Corresponding Source under the terms of this License, in one of these
  ways:
  .RS 4
! .IP "a." 4
  .IX Item "a."
  Convey the object code in, or embodied in, a physical product
  (including a physical distribution medium), accompanied by the
  Corresponding Source fixed on a durable physical medium customarily
  used for software interchange.
! .IP "b." 4
  .IX Item "b."
  Convey the object code in, or embodied in, a physical product
  (including a physical distribution medium), accompanied by a written
--- 312,337 ----
  works, which are not by their nature extensions of the covered work,
  and which are not combined with it such as to form a larger program,
  in or on a volume of a storage or distribution medium, is called an
! "aggregate" if the compilation and its resulting copyright are not
! used to limit the access or legal rights of the compilation\*(Aqs users
  beyond what the individual works permit.  Inclusion of a covered work
  in an aggregate does not cause this License to apply to the other
  parts of the aggregate.
  .RE
! .IP "6. Conveying Non\-Source Forms." 4
  .IX Item "6. Conveying Non-Source Forms."
  You may convey a covered work in object code form under the terms of
! sections 4 and 5, provided that you also convey the machine\-readable
  Corresponding Source under the terms of this License, in one of these
  ways:
  .RS 4
! .IP a. 4
  .IX Item "a."
  Convey the object code in, or embodied in, a physical product
  (including a physical distribution medium), accompanied by the
  Corresponding Source fixed on a durable physical medium customarily
  used for software interchange.
! .IP b. 4
  .IX Item "b."
  Convey the object code in, or embodied in, a physical product
  (including a physical distribution medium), accompanied by a written
*************** covered by this License, on a durable ph
*** 414,427 ****
  for software interchange, for a price no more than your reasonable
  cost of physically performing this conveying of source, or (2) access
  to copy the Corresponding Source from a network server at no charge.
! .IP "c." 4
  .IX Item "c."
  Convey individual copies of the object code with a copy of the written
  offer to provide the Corresponding Source.  This alternative is
  allowed only occasionally and noncommercially, and only if you
  received the object code with such an offer, in accord with subsection
  6b.
! .IP "d." 4
  .IX Item "d."
  Convey the object code by offering access from a designated place
  (gratis or for a charge), and offer equivalent access to the
--- 343,356 ----
  for software interchange, for a price no more than your reasonable
  cost of physically performing this conveying of source, or (2) access
  to copy the Corresponding Source from a network server at no charge.
! .IP c. 4
  .IX Item "c."
  Convey individual copies of the object code with a copy of the written
  offer to provide the Corresponding Source.  This alternative is
  allowed only occasionally and noncommercially, and only if you
  received the object code with such an offer, in accord with subsection
  6b.
! .IP d. 4
  .IX Item "d."
  Convey the object code by offering access from a designated place
  (gratis or for a charge), and offer equivalent access to the
*************** next to the object code saying where to
*** 435,443 ****
  Regardless of what server hosts the Corresponding Source, you remain
  obligated to ensure that it is available for as long as needed to
  satisfy these requirements.
! .IP "e." 4
  .IX Item "e."
! Convey the object code using peer-to-peer transmission, provided you
  inform other peers where the object code and Corresponding Source of
  the work are being offered to the general public at no charge under
  subsection 6d.
--- 364,372 ----
  Regardless of what server hosts the Corresponding Source, you remain
  obligated to ensure that it is available for as long as needed to
  satisfy these requirements.
! .IP e. 4
  .IX Item "e."
! Convey the object code using peer\-to\-peer transmission, provided you
  inform other peers where the object code and Corresponding Source of
  the work are being offered to the general public at no charge under
  subsection 6d.
*************** A separable portion of the object code,
*** 448,468 ****
  from the Corresponding Source as a System Library, need not be
  included in conveying the object code work.
  .Sp
! A \*(L"User Product\*(R" is either (1) a \*(L"consumer product\*(R", which means any
  tangible personal property which is normally used for personal,
  family, or household purposes, or (2) anything designed or sold for
  incorporation into a dwelling.  In determining whether a product is a
  consumer product, doubtful cases shall be resolved in favor of
  coverage.  For a particular product received by a particular user,
! \&\*(L"normally used\*(R" refers to a typical or common use of that class of
  product, regardless of the status of the particular user or of the way
  in which the particular user actually uses, or expects or is expected
  to use, the product.  A product is a consumer product regardless of
  whether the product has substantial commercial, industrial or
! non-consumer uses, unless such uses represent the only significant
  mode of use of the product.
  .Sp
! \&\*(L"Installation Information\*(R" for a User Product means any methods,
  procedures, authorization keys, or other information required to
  install and execute modified versions of a covered work in that User
  Product from a modified version of its Corresponding Source.  The
--- 377,397 ----
  from the Corresponding Source as a System Library, need not be
  included in conveying the object code work.
  .Sp
! A "User Product" is either (1) a "consumer product", which means any
  tangible personal property which is normally used for personal,
  family, or household purposes, or (2) anything designed or sold for
  incorporation into a dwelling.  In determining whether a product is a
  consumer product, doubtful cases shall be resolved in favor of
  coverage.  For a particular product received by a particular user,
! "normally used" refers to a typical or common use of that class of
  product, regardless of the status of the particular user or of the way
  in which the particular user actually uses, or expects or is expected
  to use, the product.  A product is a consumer product regardless of
  whether the product has substantial commercial, industrial or
! non\-consumer uses, unless such uses represent the only significant
  mode of use of the product.
  .Sp
! "Installation Information" for a User Product means any methods,
  procedures, authorization keys, or other information required to
  install and execute modified versions of a covered work in that User
  Product from a modified version of its Corresponding Source.  The
*************** Corresponding Source conveyed under this
*** 479,485 ****
  by the Installation Information.  But this requirement does not apply
  if neither you nor any third party retains the ability to install
  modified object code on the User Product (for example, the work has
! been installed in \s-1ROM\s0).
  .Sp
  The requirement to provide Installation Information does not include a
  requirement to continue to provide support service, warranty, or
--- 408,414 ----
  by the Installation Information.  But this requirement does not apply
  if neither you nor any third party retains the ability to install
  modified object code on the User Product (for example, the work has
! been installed in ROM).
  .Sp
  The requirement to provide Installation Information does not include a
  requirement to continue to provide support service, warranty, or
*************** unpacking, reading or copying.
*** 498,504 ****
  .RE
  .IP "7. Additional Terms." 4
  .IX Item "7. Additional Terms."
! \&\*(L"Additional permissions\*(R" are terms that supplement the terms of this
  License by making exceptions from one or more of its conditions.
  Additional permissions that are applicable to the entire Program shall
  be treated as though they were included in this License, to the extent
--- 427,433 ----
  .RE
  .IP "7. Additional Terms." 4
  .IX Item "7. Additional Terms."
! "Additional permissions" are terms that supplement the terms of this
  License by making exceptions from one or more of its conditions.
  Additional permissions that are applicable to the entire Program shall
  be treated as though they were included in this License, to the extent
*************** Notwithstanding any other provision of t
*** 518,546 ****
  add to a covered work, you may (if authorized by the copyright holders
  of that material) supplement the terms of this License with terms:
  .RS 4
! .IP "a." 4
  .IX Item "a."
  Disclaiming warranty or limiting liability differently from the terms
  of sections 15 and 16 of this License; or
! .IP "b." 4
  .IX Item "b."
  Requiring preservation of specified reasonable legal notices or author
  attributions in that material or in the Appropriate Legal Notices
  displayed by works containing it; or
! .IP "c." 4
  .IX Item "c."
  Prohibiting misrepresentation of the origin of that material, or
  requiring that modified versions of such material be marked in
  reasonable ways as different from the original version; or
! .IP "d." 4
  .IX Item "d."
  Limiting the use for publicity purposes of names of licensors or
  authors of the material; or
! .IP "e." 4
  .IX Item "e."
  Declining to grant rights under trademark law for use of some trade
  names, trademarks, or service marks; or
! .IP "f." 4
  .IX Item "f."
  Requiring indemnification of licensors and authors of that material by
  anyone who conveys the material (or modified versions of it) with
--- 447,475 ----
  add to a covered work, you may (if authorized by the copyright holders
  of that material) supplement the terms of this License with terms:
  .RS 4
! .IP a. 4
  .IX Item "a."
  Disclaiming warranty or limiting liability differently from the terms
  of sections 15 and 16 of this License; or
! .IP b. 4
  .IX Item "b."
  Requiring preservation of specified reasonable legal notices or author
  attributions in that material or in the Appropriate Legal Notices
  displayed by works containing it; or
! .IP c. 4
  .IX Item "c."
  Prohibiting misrepresentation of the origin of that material, or
  requiring that modified versions of such material be marked in
  reasonable ways as different from the original version; or
! .IP d. 4
  .IX Item "d."
  Limiting the use for publicity purposes of names of licensors or
  authors of the material; or
! .IP e. 4
  .IX Item "e."
  Declining to grant rights under trademark law for use of some trade
  names, trademarks, or service marks; or
! .IP f. 4
  .IX Item "f."
  Requiring indemnification of licensors and authors of that material by
  anyone who conveys the material (or modified versions of it) with
*************** licensors and authors.
*** 550,557 ****
  .RE
  .RS 4
  .Sp
! All other non-permissive additional terms are considered \*(L"further
! restrictions\*(R" within the meaning of section 10.  If the Program as you
  received it, or any part of it, contains a notice stating that it is
  governed by this License along with a term that is a further
  restriction, you may remove that term.  If a license document contains
--- 479,486 ----
  .RE
  .RS 4
  .Sp
! All other non\-permissive additional terms are considered "further
! restrictions" within the meaning of section 10.  If the Program as you
  received it, or any part of it, contains a notice stating that it is
  governed by this License along with a term that is a further
  restriction, you may remove that term.  If a license document contains
*************** must place, in the relevant source files
*** 565,571 ****
  additional terms that apply to those files, or a notice indicating
  where to find the applicable terms.
  .Sp
! Additional terms, permissive or non-permissive, may be stated in the
  form of a separately written license, or stated as exceptions; the
  above requirements apply either way.
  .RE
--- 494,500 ----
  additional terms that apply to those files, or a notice indicating
  where to find the applicable terms.
  .Sp
! Additional terms, permissive or non\-permissive, may be stated in the
  form of a separately written license, or stated as exceptions; the
  above requirements apply either way.
  .RE
*************** material under section 10.
*** 600,606 ****
  .IX Item "9. Acceptance Not Required for Having Copies."
  You are not required to accept this License in order to receive or run
  a copy of the Program.  Ancillary propagation of a covered work
! occurring solely as a consequence of using peer-to-peer transmission
  to receive a copy likewise does not require acceptance.  However,
  nothing other than this License grants you permission to propagate or
  modify any covered work.  These actions infringe copyright if you do
--- 529,535 ----
  .IX Item "9. Acceptance Not Required for Having Copies."
  You are not required to accept this License in order to receive or run
  a copy of the Program.  Ancillary propagation of a covered work
! occurring solely as a consequence of using peer\-to\-peer transmission
  to receive a copy likewise does not require acceptance.  However,
  nothing other than this License grants you permission to propagate or
  modify any covered work.  These actions infringe copyright if you do
*************** receives a license from the original lic
*** 613,624 ****
  propagate that work, subject to this License.  You are not responsible
  for enforcing compliance by third parties with this License.
  .Sp
! An \*(L"entity transaction\*(R" is a transaction transferring control of an
  organization, or substantially all assets of one, or subdividing an
  organization, or merging organizations.  If propagation of a covered
  work results from an entity transaction, each party to that
  transaction who receives a copy of the work also receives whatever
! licenses to the work the party's predecessor in interest had or could
  give under the previous paragraph, plus a right to possession of the
  Corresponding Source of the work from the predecessor in interest, if
  the predecessor has it or can get it with reasonable efforts.
--- 542,553 ----
  propagate that work, subject to this License.  You are not responsible
  for enforcing compliance by third parties with this License.
  .Sp
! An "entity transaction" is a transaction transferring control of an
  organization, or substantially all assets of one, or subdividing an
  organization, or merging organizations.  If propagation of a covered
  work results from an entity transaction, each party to that
  transaction who receives a copy of the work also receives whatever
! licenses to the work the party\*(Aqs predecessor in interest had or could
  give under the previous paragraph, plus a right to possession of the
  Corresponding Source of the work from the predecessor in interest, if
  the predecessor has it or can get it with reasonable efforts.
*************** You may not impose any further restricti
*** 627,660 ****
  rights granted or affirmed under this License.  For example, you may
  not impose a license fee, royalty, or other charge for exercise of
  rights granted under this License, and you may not initiate litigation
! (including a cross-claim or counterclaim in a lawsuit) alleging that
  any patent claim is infringed by making, using, selling, offering for
  sale, or importing the Program or any portion of it.
  .IP "11. Patents." 4
  .IX Item "11. Patents."
! A \*(L"contributor\*(R" is a copyright holder who authorizes use under this
  License of the Program or a work on which the Program is based.  The
! work thus licensed is called the contributor's \*(L"contributor version\*(R".
  .Sp
! A contributor's \*(L"essential patent claims\*(R" are all patent claims owned
  or controlled by the contributor, whether already acquired or
  hereafter acquired, that would be infringed by some manner, permitted
  by this License, of making, using, or selling its contributor version,
  but do not include claims that would be infringed only as a
  consequence of further modification of the contributor version.  For
! purposes of this definition, \*(L"control\*(R" includes the right to grant
  patent sublicenses in a manner consistent with the requirements of
  this License.
  .Sp
! Each contributor grants you a non-exclusive, worldwide, royalty-free
! patent license under the contributor's essential patent claims, to
  make, use, sell, offer for sale, import and otherwise run, modify and
  propagate the contents of its contributor version.
  .Sp
! In the following three paragraphs, a \*(L"patent license\*(R" is any express
  agreement or commitment, however denominated, not to enforce a patent
  (such as an express permission to practice a patent or covenant not to
! sue for patent infringement).  To \*(L"grant\*(R" such a patent license to a
  party means to make such an agreement or commitment not to enforce a
  patent against the party.
  .Sp
--- 556,589 ----
  rights granted or affirmed under this License.  For example, you may
  not impose a license fee, royalty, or other charge for exercise of
  rights granted under this License, and you may not initiate litigation
! (including a cross\-claim or counterclaim in a lawsuit) alleging that
  any patent claim is infringed by making, using, selling, offering for
  sale, or importing the Program or any portion of it.
  .IP "11. Patents." 4
  .IX Item "11. Patents."
! A "contributor" is a copyright holder who authorizes use under this
  License of the Program or a work on which the Program is based.  The
! work thus licensed is called the contributor\*(Aqs "contributor version".
  .Sp
! A contributor\*(Aqs "essential patent claims" are all patent claims owned
  or controlled by the contributor, whether already acquired or
  hereafter acquired, that would be infringed by some manner, permitted
  by this License, of making, using, or selling its contributor version,
  but do not include claims that would be infringed only as a
  consequence of further modification of the contributor version.  For
! purposes of this definition, "control" includes the right to grant
  patent sublicenses in a manner consistent with the requirements of
  this License.
  .Sp
! Each contributor grants you a non\-exclusive, worldwide, royalty\-free
! patent license under the contributor\*(Aqs essential patent claims, to
  make, use, sell, offer for sale, import and otherwise run, modify and
  propagate the contents of its contributor version.
  .Sp
! In the following three paragraphs, a "patent license" is any express
  agreement or commitment, however denominated, not to enforce a patent
  (such as an express permission to practice a patent or covenant not to
! sue for patent infringement).  To "grant" such a patent license to a
  party means to make such an agreement or commitment not to enforce a
  patent against the party.
  .Sp
*************** then you must either (1) cause the Corre
*** 666,674 ****
  available, or (2) arrange to deprive yourself of the benefit of the
  patent license for this particular work, or (3) arrange, in a manner
  consistent with the requirements of this License, to extend the patent
! license to downstream recipients.  \*(L"Knowingly relying\*(R" means you have
  actual knowledge that, but for the patent license, your conveying the
! covered work in a country, or your recipient's use of the covered work
  in a country, would infringe one or more identifiable patents in that
  country that you have reason to believe are valid.
  .Sp
--- 595,603 ----
  available, or (2) arrange to deprive yourself of the benefit of the
  patent license for this particular work, or (3) arrange, in a manner
  consistent with the requirements of this License, to extend the patent
! license to downstream recipients.  "Knowingly relying" means you have
  actual knowledge that, but for the patent license, your conveying the
! covered work in a country, or your recipient\*(Aqs use of the covered work
  in a country, would infringe one or more identifiable patents in that
  country that you have reason to believe are valid.
  .Sp
*************** or convey a specific copy of the covered
*** 680,688 ****
  you grant is automatically extended to all recipients of the covered
  work and works based on it.
  .Sp
! A patent license is \*(L"discriminatory\*(R" if it does not include within the
  scope of its coverage, prohibits the exercise of, or is conditioned on
! the non-exercise of one or more of the rights that are specifically
  granted under this License.  You may not convey a covered work if you
  are a party to an arrangement with a third party that is in the
  business of distributing software, under which you make payment to the
--- 609,617 ----
  you grant is automatically extended to all recipients of the covered
  work and works based on it.
  .Sp
! A patent license is "discriminatory" if it does not include within the
  scope of its coverage, prohibits the exercise of, or is conditioned on
! the non\-exercise of one or more of the rights that are specifically
  granted under this License.  You may not convey a covered work if you
  are a party to an arrangement with a third party that is in the
  business of distributing software, under which you make payment to the
*************** license was granted, prior to 28 March 2
*** 698,704 ****
  Nothing in this License shall be construed as excluding or limiting
  any implied license or other defenses to infringement that may
  otherwise be available to you under applicable patent law.
! .IP "12. No Surrender of Others' Freedom." 4
  .IX Item "12. No Surrender of Others' Freedom."
  If conditions are imposed on you (whether by court order, agreement or
  otherwise) that contradict the conditions of this License, they do not
--- 627,633 ----
  Nothing in this License shall be construed as excluding or limiting
  any implied license or other defenses to infringement that may
  otherwise be available to you under applicable patent law.
! .IP "12. No Surrender of Others\*(Aq Freedom." 4
  .IX Item "12. No Surrender of Others' Freedom."
  If conditions are imposed on you (whether by court order, agreement or
  otherwise) that contradict the conditions of this License, they do not
*************** to terms that obligate you to collect a
*** 710,743 ****
  from those to whom you convey the Program, the only way you could
  satisfy both those terms and this License would be to refrain entirely
  from conveying the Program.
! .IP "13. Use with the \s-1GNU\s0 Affero General Public License." 4
  .IX Item "13. Use with the GNU Affero General Public License."
  Notwithstanding any other provision of this License, you have
  permission to link or combine any covered work with a work licensed
! under version 3 of the \s-1GNU\s0 Affero General Public License into a single
  combined work, and to convey the resulting work.  The terms of this
  License will continue to apply to the part which is the covered work,
! but the special requirements of the \s-1GNU\s0 Affero General Public License,
  section 13, concerning interaction through a network will apply to the
  combination as such.
  .IP "14. Revised Versions of this License." 4
  .IX Item "14. Revised Versions of this License."
  The Free Software Foundation may publish revised and/or new versions
! of the \s-1GNU\s0 General Public License from time to time.  Such new
  versions will be similar in spirit to the present version, but may
  differ in detail to address new problems or concerns.
  .Sp
  Each version is given a distinguishing version number.  If the Program
! specifies that a certain numbered version of the \s-1GNU\s0 General Public
! License \*(L"or any later version\*(R" applies to it, you have the option of
  following the terms and conditions either of that numbered version or
  of any later version published by the Free Software Foundation.  If
! the Program does not specify a version number of the \s-1GNU\s0 General
  Public License, you may choose any version ever published by the Free
  Software Foundation.
  .Sp
  If the Program specifies that a proxy can decide which future versions
! of the \s-1GNU\s0 General Public License can be used, that proxy's public
  statement of acceptance of a version permanently authorizes you to
  choose that version for the Program.
  .Sp
--- 639,672 ----
  from those to whom you convey the Program, the only way you could
  satisfy both those terms and this License would be to refrain entirely
  from conveying the Program.
! .IP "13. Use with the GNU Affero General Public License." 4
  .IX Item "13. Use with the GNU Affero General Public License."
  Notwithstanding any other provision of this License, you have
  permission to link or combine any covered work with a work licensed
! under version 3 of the GNU Affero General Public License into a single
  combined work, and to convey the resulting work.  The terms of this
  License will continue to apply to the part which is the covered work,
! but the special requirements of the GNU Affero General Public License,
  section 13, concerning interaction through a network will apply to the
  combination as such.
  .IP "14. Revised Versions of this License." 4
  .IX Item "14. Revised Versions of this License."
  The Free Software Foundation may publish revised and/or new versions
! of the GNU General Public License from time to time.  Such new
  versions will be similar in spirit to the present version, but may
  differ in detail to address new problems or concerns.
  .Sp
  Each version is given a distinguishing version number.  If the Program
! specifies that a certain numbered version of the GNU General Public
! License "or any later version" applies to it, you have the option of
  following the terms and conditions either of that numbered version or
  of any later version published by the Free Software Foundation.  If
! the Program does not specify a version number of the GNU General
  Public License, you may choose any version ever published by the Free
  Software Foundation.
  .Sp
  If the Program specifies that a proxy can decide which future versions
! of the GNU General Public License can be used, that proxy\*(Aqs public
  statement of acceptance of a version permanently authorizes you to
  choose that version for the Program.
  .Sp
*************** author or copyright holder as a result o
*** 747,772 ****
  later version.
  .IP "15. Disclaimer of Warranty." 4
  .IX Item "15. Disclaimer of Warranty."
! \&\s-1THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
! APPLICABLE LAW.\s0  \s-1EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
! HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \*(L"AS IS\*(R" WITHOUT
  WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
! A PARTICULAR PURPOSE.\s0  \s-1THE ENTIRE RISK AS TO THE QUALITY AND
! PERFORMANCE OF THE PROGRAM IS WITH YOU.\s0  \s-1SHOULD THE PROGRAM PROVE
  DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
! CORRECTION.\s0
  .IP "16. Limitation of Liability." 4
  .IX Item "16. Limitation of Liability."
! \&\s-1IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
  WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR
  CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
  INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
! ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM\s0 (\s-1INCLUDING BUT
  NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR
  LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM
! TO OPERATE WITH ANY OTHER PROGRAMS\s0), \s-1EVEN IF SUCH HOLDER OR OTHER
! PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\s0
  .IP "17. Interpretation of Sections 15 and 16." 4
  .IX Item "17. Interpretation of Sections 15 and 16."
  If the disclaimer of warranty and limitation of liability provided
--- 676,701 ----
  later version.
  .IP "15. Disclaimer of Warranty." 4
  .IX Item "15. Disclaimer of Warranty."
! THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
! APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
! HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
  WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
! A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND
! PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE PROGRAM PROVE
  DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
! CORRECTION.
  .IP "16. Limitation of Liability." 4
  .IX Item "16. Limitation of Liability."
! IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
  WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR
  CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
  INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
! ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT
  NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR
  LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM
! TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
! PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
  .IP "17. Interpretation of Sections 15 and 16." 4
  .IX Item "17. Interpretation of Sections 15 and 16."
  If the disclaimer of warranty and limitation of liability provided
*************** reviewing courts shall apply local law t
*** 775,781 ****
  an absolute waiver of all civil liability in connection with the
  Program, unless a warranty or assumption of liability accompanies a
  copy of the Program in return for a fee.
! .SS "\s-1END OF TERMS AND CONDITIONS\s0"
  .IX Subsection "END OF TERMS AND CONDITIONS"
  .SS "How to Apply These Terms to Your New Programs"
  .IX Subsection "How to Apply These Terms to Your New Programs"
--- 704,710 ----
  an absolute waiver of all civil liability in connection with the
  Program, unless a warranty or assumption of liability accompanies a
  copy of the Program in return for a fee.
! .SS "END OF TERMS AND CONDITIONS"
  .IX Subsection "END OF TERMS AND CONDITIONS"
  .SS "How to Apply These Terms to Your New Programs"
  .IX Subsection "How to Apply These Terms to Your New Programs"
*************** terms.
*** 787,793 ****
  To do so, attach the following notices to the program.  It is safest
  to attach them to the start of each source file to most effectively
  state the exclusion of warranty; and each file should have at least
! the \*(L"copyright\*(R" line and a pointer to where the full notice is found.
  .PP
  .Vb 2
  \&        <one line to give the program\*(Aqs name and a brief idea of what it does.>  
--- 716,722 ----
  To do so, attach the following notices to the program.  It is safest
  to attach them to the start of each source file to most effectively
  state the exclusion of warranty; and each file should have at least
! the "copyright" line and a pointer to where the full notice is found.
  .PP
  .Vb 2
  \&        <one line to give the program\*(Aqs name and a brief idea of what it does.>  
*************** notice like this when it starts in an in
*** 821,844 ****
  .PP
  The hypothetical commands \fBshow w\fR and \fBshow c\fR should show
  the appropriate parts of the General Public License.  Of course, your
! program's commands might be different; for a \s-1GUI\s0 interface, you would
! use an \*(L"about box\*(R".
  .PP
  You should also get your employer (if you work as a programmer) or school,
! if any, to sign a \*(L"copyright disclaimer\*(R" for the program, if necessary.
! For more information on this, and how to apply and follow the \s-1GNU GPL,\s0 see
  <\fBhttps://www.gnu.org/licenses/\fR>.
  .PP
! The \s-1GNU\s0 General Public License does not permit incorporating your
  program into proprietary programs.  If your program is a subroutine
  library, you may consider it more useful to permit linking proprietary
  applications with the library.  If this is what you want to do, use
! the \s-1GNU\s0 Lesser General Public License instead of this License.  But
  first, please read <\fBhttps://www.gnu.org/licenses/why\-not\-lgpl.html\fR>.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fIgfdl\fR\|(7), \fIfsf\-funding\fR\|(7).
! .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 2007 Free Software Foundation, Inc.
  .PP
--- 750,773 ----
  .PP
  The hypothetical commands \fBshow w\fR and \fBshow c\fR should show
  the appropriate parts of the General Public License.  Of course, your
! program\*(Aqs commands might be different; for a GUI interface, you would
! use an "about box".
  .PP
  You should also get your employer (if you work as a programmer) or school,
! if any, to sign a "copyright disclaimer" for the program, if necessary.
! For more information on this, and how to apply and follow the GNU GPL, see
  <\fBhttps://www.gnu.org/licenses/\fR>.
  .PP
! The GNU General Public License does not permit incorporating your
  program into proprietary programs.  If your program is a subroutine
  library, you may consider it more useful to permit linking proprietary
  applications with the library.  If this is what you want to do, use
! the GNU Lesser General Public License instead of this License.  But
  first, please read <\fBhttps://www.gnu.org/licenses/why\-not\-lgpl.html\fR>.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fBgfdl\fR\|(7), \fBfsf\-funding\fR\|(7).
! .SH COPYRIGHT
  .IX Header "COPYRIGHT"
  Copyright (c) 2007 Free Software Foundation, Inc.
  .PP
diff -Nrcpad gcc-15.2.0/gcc/doc/install.texi gcc-15.3.0/gcc/doc/install.texi
*** gcc-15.2.0/gcc/doc/install.texi	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/doc/install.texi	Fri Jun 12 06:09:06 2026
*************** Same as @uref{#with-as,,@option{--with-a
*** 1244,1250 ****
  but for the debug linker (only used on Darwin platforms so far).
  
  @item --with-tls=@var{dialect}
! Specify the default TLS dialect, for systems were there is a choice.
  For ARM targets, possible values for @var{dialect} are @code{gnu} or
  @code{gnu2}, which select between the original GNU dialect and the GNU TLS
  descriptor-based dialect.
--- 1244,1250 ----
  but for the debug linker (only used on Darwin platforms so far).
  
  @item --with-tls=@var{dialect}
! Specify the default TLS dialect, for systems where there is a choice.
  For ARM targets, possible values for @var{dialect} are @code{gnu} or
  @code{gnu2}, which select between the original GNU dialect and the GNU TLS
  descriptor-based dialect.
*************** This configuration is intended for embed
*** 4821,4827 ****
  @heading riscv32-*-elf
  The RISC-V RV32 instruction set.
  This configuration is intended for embedded systems.
! This (and all other RISC-V) targets require the binutils 2.30 release.
  
  @html
  <hr />
--- 4821,4827 ----
  @heading riscv32-*-elf
  The RISC-V RV32 instruction set.
  This configuration is intended for embedded systems.
! This (and all other RISC-V) targets require the binutils 2.40 release.
  
  @html
  <hr />
*************** This (and all other RISC-V) targets requ
*** 4829,4835 ****
  @anchor{riscv32-x-linux}
  @heading riscv32-*-linux
  The RISC-V RV32 instruction set running GNU/Linux.
! This (and all other RISC-V) targets require the binutils 2.30 release.
  
  @html
  <hr />
--- 4829,4835 ----
  @anchor{riscv32-x-linux}
  @heading riscv32-*-linux
  The RISC-V RV32 instruction set running GNU/Linux.
! This (and all other RISC-V) targets require the binutils 2.40 release.
  
  @html
  <hr />
*************** This (and all other RISC-V) targets requ
*** 4838,4844 ****
  @heading riscv64-*-elf
  The RISC-V RV64 instruction set.
  This configuration is intended for embedded systems.
! This (and all other RISC-V) targets require the binutils 2.30 release.
  
  @html
  <hr />
--- 4838,4844 ----
  @heading riscv64-*-elf
  The RISC-V RV64 instruction set.
  This configuration is intended for embedded systems.
! This (and all other RISC-V) targets require the binutils 2.40 release.
  
  @html
  <hr />
*************** This (and all other RISC-V) targets requ
*** 4846,4852 ****
  @anchor{riscv64-x-linux}
  @heading riscv64-*-linux
  The RISC-V RV64 instruction set running GNU/Linux.
! This (and all other RISC-V) targets require the binutils 2.30 release.
  
  @html
  <hr />
--- 4846,4852 ----
  @anchor{riscv64-x-linux}
  @heading riscv64-*-linux
  The RISC-V RV64 instruction set running GNU/Linux.
! This (and all other RISC-V) targets require the binutils 2.40 release.
  
  @html
  <hr />
diff -Nrcpad gcc-15.2.0/gcc/doc/invoke.texi gcc-15.3.0/gcc/doc/invoke.texi
*** gcc-15.2.0/gcc/doc/invoke.texi	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/doc/invoke.texi	Fri Jun 12 06:09:06 2026
*************** the next @option{-x} option.  Possible v
*** 1705,1718 ****
  @smallexample
  c  c-header  cpp-output
  c++  c++-header  c++-system-header c++-user-header c++-cpp-output
! objective-c  objective-c-header  objective-c-cpp-output
! objective-c++ objective-c++-header objective-c++-cpp-output
  assembler  assembler-with-cpp
! ada
  cobol
  d
! f77  f77-cpp-input f95  f95-cpp-input
  go
  @end smallexample
  
  Note that @option{-x} does not imply a particular language standard.
--- 1705,1722 ----
  @smallexample
  c  c-header  cpp-output
  c++  c++-header  c++-system-header c++-user-header c++-cpp-output
! objective-c  objective-c-header  objective-c-cpp-output  objc-cpp-output
! objective-c++  objective-c++-header  objective-c++-cpp-output
! objc++-cpp-output
  assembler  assembler-with-cpp
! ada  adascil  adawhy
  cobol
  d
! f77  f77-cpp-input  f95  f95-cpp-input
  go
+ modula-2  modula-2-cpp-output
+ rust
+ lto
  @end smallexample
  
  Note that @option{-x} does not imply a particular language standard.
*************** switch (cond)
*** 7189,7195 ****
  @end group
  @end smallexample
  
! C++17 provides a standard way to suppress the @option{-Wimplicit-fallthrough}
  warning using @code{[[fallthrough]];} instead of the GNU attribute.  In C++11
  or C++14 users can use @code{[[gnu::fallthrough]];}, which is a GNU extension.
  Instead of these attributes, it is also possible to add a fallthrough comment
--- 7193,7199 ----
  @end group
  @end smallexample
  
! C++17 and C23 provide a standard way to suppress the @option{-Wimplicit-fallthrough}
  warning using @code{[[fallthrough]];} instead of the GNU attribute.  In C++11
  or C++14 users can use @code{[[gnu::fallthrough]];}, which is a GNU extension.
  Instead of these attributes, it is also possible to add a fallthrough comment
*************** as a parameter of @code{free} call or co
*** 15743,15749 ****
  with @option{-fmalloc-dce=2} also comparisons with @code{NULL} pointer are
  considered safe to remove.
  
! The default is @option{-fmalloc-dce=2}.  See also @option{-fallocation-dce}. 
  
  @opindex fmove-loop-invariants
  @item -fmove-loop-invariants
--- 15747,15753 ----
  with @option{-fmalloc-dce=2} also comparisons with @code{NULL} pointer are
  considered safe to remove.
  
! The default is @option{-fmalloc-dce=2}.  See also @option{-fallocation-dce}.
  
  @opindex fmove-loop-invariants
  @item -fmove-loop-invariants
*************** and the features that they enable by def
*** 21967,21973 ****
  @item @samp{armv9.2-a} @tab Armv9.2-A @tab @samp{armv9.1-a}, @samp{+wfxt}, @samp{+xs}
  @item @samp{armv9.3-a} @tab Armv9.3-A @tab @samp{armv9.2-a}, @samp{+mops}
  @item @samp{armv9.4-a} @tab Armv9.4-A @tab @samp{armv9.3-a}, @samp{+sve2p1}
! @item @samp{armv9.5-a} @tab Armv9.4-A @tab @samp{armv9.4-a}, @samp{cpa}, @samp{+faminmax}, @samp{+lut}
  @item @samp{armv8-r} @tab Armv8-R @tab @samp{armv8-r}
  @end multitable
  
--- 21971,21977 ----
  @item @samp{armv9.2-a} @tab Armv9.2-A @tab @samp{armv9.1-a}, @samp{+wfxt}, @samp{+xs}
  @item @samp{armv9.3-a} @tab Armv9.3-A @tab @samp{armv9.2-a}, @samp{+mops}
  @item @samp{armv9.4-a} @tab Armv9.4-A @tab @samp{armv9.3-a}, @samp{+sve2p1}
! @item @samp{armv9.5-a} @tab Armv9.5-A @tab @samp{armv9.4-a}, @samp{cpa}, @samp{+faminmax}, @samp{+lut}
  @item @samp{armv8-r} @tab Armv8-R @tab @samp{armv8-r}
  @end multitable
  
*************** performance of the code.  Permissible va
*** 22012,22018 ****
  @samp{octeontx2f95mm},
  @samp{a64fx}, @samp{fujitsu-monaka},
  @samp{thunderx}, @samp{thunderxt88},
! @samp{thunderxt88p1}, @samp{thunderxt81}, @samp{tsv110},
  @samp{thunderxt83}, @samp{thunderx2t99}, @samp{thunderx3t110}, @samp{zeus},
  @samp{cortex-a57.cortex-a53}, @samp{cortex-a72.cortex-a53},
  @samp{cortex-a73.cortex-a35}, @samp{cortex-a73.cortex-a53},
--- 22016,22022 ----
  @samp{octeontx2f95mm},
  @samp{a64fx}, @samp{fujitsu-monaka},
  @samp{thunderx}, @samp{thunderxt88},
! @samp{thunderxt88p1}, @samp{thunderxt81}, @samp{tsv110}, @samp{hip12},
  @samp{thunderxt83}, @samp{thunderx2t99}, @samp{thunderx3t110}, @samp{zeus},
  @samp{cortex-a57.cortex-a53}, @samp{cortex-a72.cortex-a53},
  @samp{cortex-a73.cortex-a35}, @samp{cortex-a73.cortex-a53},
*************** SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREF
*** 35188,35195 ****
  XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI,
  MOVDIR64B, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU,
  VAES, VPCLMULQDQ, SERIALIZE, HRESET, AVX-VNNI, UINTR, AVXIFMA, AVXVNNIINT8,
! AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4 and PREFETCHI
! instruction set support.
  
  @item sapphirerapids
  @itemx emeraldrapids
--- 35192,35199 ----
  XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI,
  MOVDIR64B, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU,
  VAES, VPCLMULQDQ, SERIALIZE, HRESET, AVX-VNNI, UINTR, AVXIFMA, AVXVNNIINT8,
! AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3 and SM4 instruction set
! support.
  
  @item sapphirerapids
  @itemx emeraldrapids
*************** MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PT
*** 35236,35243 ****
  UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI, AVX512FP16, AVX512BF16, AMX-FP16,
  PREFETCHI, AMX-COMPLEX, AVX10.1-512, AVX-IFMA, AVX-NE-CONVERT, AVX-VNNI-INT16,
  AVX-VNNI-INT8, CMPccXADD, SHA512, SM3, SM4, AVX10.2-512, APX_F, AMX-AVX512,
! AMX-FP8, AMX-TF32, AMX-TRANSPOSE, MOVRS, AMX-MOVRS and USER_MSR instruction set
! support.
  
  @item bonnell
  @itemx atom
--- 35240,35246 ----
  UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI, AVX512FP16, AVX512BF16, AMX-FP16,
  PREFETCHI, AMX-COMPLEX, AVX10.1-512, AVX-IFMA, AVX-NE-CONVERT, AVX-VNNI-INT16,
  AVX-VNNI-INT8, CMPccXADD, SHA512, SM3, SM4, AVX10.2-512, APX_F, AMX-AVX512,
! AMX-FP8, AMX-TF32, MOVRS and AMX-MOVRS instruction set support.
  
  @item bonnell
  @itemx atom
diff -Nrcpad gcc-15.2.0/gcc/doc/lto-dump.1 gcc-15.3.0/gcc/doc/lto-dump.1
*** gcc-15.2.0/gcc/doc/lto-dump.1	Fri Aug  8 06:54:13 2025
--- gcc-15.3.0/gcc/doc/lto-dump.1	Fri Jun 12 06:11:48 2026
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
--- 1,5 ----
! .\" -*- mode: troff; coding: utf-8 -*-
! .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
***************
*** 15,43 ****
  .ft R
  .fi
  ..
! .\" Set up some character translations and predefined strings.  \*(-- will
! .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
! .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
! .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
! .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
! .\" nothing in troff, for use with C<>.
! .tr \(*W-
! .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
  .ie n \{\
- .    ds -- \(*W-
- .    ds PI pi
- .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
- .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
- .    ds L" ""
- .    ds R" ""
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
- .    ds -- \|\(em\|
- .    ds PI \(*p
- .    ds L" ``
- .    ds R" ''
  .    ds C`
  .    ds C'
  'br\}
--- 16,27 ----
  .ft R
  .fi
  ..
! .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
  .ie n \{\
  .    ds C` ""
  .    ds C' ""
  'br\}
  .el\{\
  .    ds C`
  .    ds C'
  'br\}
***************
*** 54,144 ****
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .if !\nF .nr F 0
! .if \nF>0 \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    if !\nF==2 \{\
! .        nr % 0
! .        nr F 2
  .    \}
  .\}
  .\"
! .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
! .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
! .    \" fudge factors for nroff and troff
! .if n \{\
! .    ds #H 0
! .    ds #V .8m
! .    ds #F .3m
! .    ds #[ \f1
! .    ds #] \fP
! .\}
! .if t \{\
! .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
! .    ds #V .6m
! .    ds #F 0
! .    ds #[ \&
! .    ds #] \&
! .\}
! .    \" simple accents for nroff and troff
! .if n \{\
! .    ds ' \&
! .    ds ` \&
! .    ds ^ \&
! .    ds , \&
! .    ds ~ ~
! .    ds /
! .\}
! .if t \{\
! .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
! .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
! .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
! .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
! .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
! .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
! .\}
! .    \" troff and (daisy-wheel) nroff accents
! .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
! .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
! .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
! .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
! .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
! .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
! .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
! .ds ae a\h'-(\w'a'u*4/10)'e
! .ds Ae A\h'-(\w'A'u*4/10)'E
! .    \" corrections for vroff
! .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
! .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
! .    \" for low resolution devices (crt and lpr)
! .if \n(.H>23 .if \n(.V>19 \
! \{\
! .    ds : e
! .    ds 8 ss
! .    ds o a
! .    ds d- d\h'-1'\(ga
! .    ds D- D\h'-1'\(hy
! .    ds th \o'bp'
! .    ds Th \o'LP'
! .    ds ae ae
! .    ds Ae AE
! .\}
! .rm #[ #] #H #V #F C
  .\" ========================================================================
  .\"
  .IX Title "LTO-DUMP 1"
! .TH LTO-DUMP 1 "2025-08-08" "gcc-15.2.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH "NAME"
  lto\-dump \- Tool for dumping LTO object files
! .SH "SYNOPSIS"
  .IX Header "SYNOPSIS"
! lto-dump [\fB\-list\fR]
       [\fB\-demangle\fR]
       [\fB\-defined\-only\fR]
       [\fB\-print\-value\fR]
--- 38,73 ----
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .nr rF 0
! .if \n(.g .if rF .nr rF 1
! .if (\n(rF:(\n(.g==0)) \{\
! .    if \nF \{\
! .        de IX
! .        tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .        if !\nF==2 \{\
! .            nr % 0
! .            nr F 2
! .        \}
  .    \}
  .\}
+ .rr rF
  .\"
! .\" Required to disable full justification in groff 1.23.0.
! .if n .ds AD l
  .\" ========================================================================
  .\"
  .IX Title "LTO-DUMP 1"
! .TH LTO-DUMP 1 2026-06-12 gcc-15.3.0 GNU
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
  .nh
! .SH NAME
  lto\-dump \- Tool for dumping LTO object files
! .SH SYNOPSIS
  .IX Header "SYNOPSIS"
! lto\-dump [\fB\-list\fR]
       [\fB\-demangle\fR]
       [\fB\-defined\-only\fR]
       [\fB\-print\-value\fR]
*************** lto-dump [\fB\-list\fR]
*** 153,232 ****
       [\fB\-gimple\-stats\fR]
       [\fB\-dump\-level=\fR]
       [\fB\-dump\-body=\fR]
!      [\fB\-help\fR] \fIlto-dump\fR
! .SH "DESCRIPTION"
  .IX Header "DESCRIPTION"
! \&\fBlto-dump\fR is a tool you can use in conjunction with \s-1GCC\s0 to
  dump link time optimization object files.
! .SH "OPTIONS"
  .IX Header "OPTIONS"
! .IP "\fB\-list\fR" 4
  .IX Item "-list"
  Dumps list of details of functions and variables.
! .IP "\fB\-demangle\fR" 4
  .IX Item "-demangle"
  Dump the demangled output.
! .IP "\fB\-defined\-only\fR" 4
  .IX Item "-defined-only"
  Dump only the defined symbols.
! .IP "\fB\-print\-value\fR" 4
  .IX Item "-print-value"
  Dump initial values of the variables.
! .IP "\fB\-name\-sort\fR" 4
  .IX Item "-name-sort"
  Sort the symbols alphabetically.
! .IP "\fB\-size\-sort\fR" 4
  .IX Item "-size-sort"
  Sort the symbols according to size.
! .IP "\fB\-reverse\-sort\fR" 4
  .IX Item "-reverse-sort"
  Dump the symbols in reverse order.
! .IP "\fB\-no\-sort\fR" 4
  .IX Item "-no-sort"
  Dump the symbols in order of occurrence.
! .IP "\fB\-symbol=\fR" 4
  .IX Item "-symbol="
  Dump the details of specific symbol.
! .IP "\fB\-objects\fR" 4
  .IX Item "-objects"
! Dump the details of \s-1LTO\s0 objects.
! .IP "\fB\-type\-stats\fR" 4
  .IX Item "-type-stats"
  Dump the statistics of tree types.
! .IP "\fB\-tree\-stats\fR" 4
  .IX Item "-tree-stats"
  Dump the statistics of trees.
! .IP "\fB\-gimple\-stats\fR" 4
  .IX Item "-gimple-stats"
  Dump the statistics of gimple statements.
! .IP "\fB\-dump\-level=\fR" 4
  .IX Item "-dump-level="
  For deciding the optimization level of body.
! .IP "\fB\-dump\-body=\fR" 4
  .IX Item "-dump-body="
  Dump the specific gimple body.
! .IP "\fB\-help\fR" 4
  .IX Item "-help"
  Display the dump tool help.
! .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 2017\-2025 Free Software Foundation, Inc.
  .PP
  Permission is granted to copy, distribute and/or modify this document
! under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 or
  any later version published by the Free Software Foundation; with the
! Invariant Sections being \*(L"\s-1GNU\s0 General Public License\*(R" and \*(L"Funding
! Free Software\*(R", the Front-Cover texts being (a) (see below), and with
! the Back-Cover Texts being (b) (see below).  A copy of the license is
! included in the \fIgfdl\fR\|(7) man page.
  .PP
! (a) The \s-1FSF\s0's Front-Cover Text is:
  .PP
  .Vb 1
  \&     A GNU Manual
  .Ve
  .PP
! (b) The \s-1FSF\s0's Back-Cover Text is:
  .PP
  .Vb 3
  \&     You have freedom to copy and modify this GNU Manual, like GNU
--- 82,161 ----
       [\fB\-gimple\-stats\fR]
       [\fB\-dump\-level=\fR]
       [\fB\-dump\-body=\fR]
!      [\fB\-help\fR] \fIlto\-dump\fR
! .SH DESCRIPTION
  .IX Header "DESCRIPTION"
! \&\fBlto\-dump\fR is a tool you can use in conjunction with GCC to
  dump link time optimization object files.
! .SH OPTIONS
  .IX Header "OPTIONS"
! .IP \fB\-list\fR 4
  .IX Item "-list"
  Dumps list of details of functions and variables.
! .IP \fB\-demangle\fR 4
  .IX Item "-demangle"
  Dump the demangled output.
! .IP \fB\-defined\-only\fR 4
  .IX Item "-defined-only"
  Dump only the defined symbols.
! .IP \fB\-print\-value\fR 4
  .IX Item "-print-value"
  Dump initial values of the variables.
! .IP \fB\-name\-sort\fR 4
  .IX Item "-name-sort"
  Sort the symbols alphabetically.
! .IP \fB\-size\-sort\fR 4
  .IX Item "-size-sort"
  Sort the symbols according to size.
! .IP \fB\-reverse\-sort\fR 4
  .IX Item "-reverse-sort"
  Dump the symbols in reverse order.
! .IP \fB\-no\-sort\fR 4
  .IX Item "-no-sort"
  Dump the symbols in order of occurrence.
! .IP \fB\-symbol=\fR 4
  .IX Item "-symbol="
  Dump the details of specific symbol.
! .IP \fB\-objects\fR 4
  .IX Item "-objects"
! Dump the details of LTO objects.
! .IP \fB\-type\-stats\fR 4
  .IX Item "-type-stats"
  Dump the statistics of tree types.
! .IP \fB\-tree\-stats\fR 4
  .IX Item "-tree-stats"
  Dump the statistics of trees.
! .IP \fB\-gimple\-stats\fR 4
  .IX Item "-gimple-stats"
  Dump the statistics of gimple statements.
! .IP \fB\-dump\-level=\fR 4
  .IX Item "-dump-level="
  For deciding the optimization level of body.
! .IP \fB\-dump\-body=\fR 4
  .IX Item "-dump-body="
  Dump the specific gimple body.
! .IP \fB\-help\fR 4
  .IX Item "-help"
  Display the dump tool help.
! .SH COPYRIGHT
  .IX Header "COPYRIGHT"
  Copyright (c) 2017\-2025 Free Software Foundation, Inc.
  .PP
  Permission is granted to copy, distribute and/or modify this document
! under the terms of the GNU Free Documentation License, Version 1.3 or
  any later version published by the Free Software Foundation; with the
! Invariant Sections being "GNU General Public License" and "Funding
! Free Software", the Front\-Cover texts being (a) (see below), and with
! the Back\-Cover Texts being (b) (see below).  A copy of the license is
! included in the \fBgfdl\fR\|(7) man page.
  .PP
! (a) The FSF\*(Aqs Front\-Cover Text is:
  .PP
  .Vb 1
  \&     A GNU Manual
  .Ve
  .PP
! (b) The FSF\*(Aqs Back\-Cover Text is:
  .PP
  .Vb 3
  \&     You have freedom to copy and modify this GNU Manual, like GNU
diff -Nrcpad gcc-15.2.0/gcc/doc/m2.info gcc-15.3.0/gcc/doc/m2.info
*** gcc-15.2.0/gcc/doc/m2.info	Fri Aug  8 07:13:44 2025
--- gcc-15.3.0/gcc/doc/m2.info	Fri Jun 12 06:32:18 2026
***************
*** 1,6 ****
! This is m2.info, produced by makeinfo version 6.5 from gm2.texi.
  
! Copyright (C) 1999-2025 Free Software Foundation, Inc.
  
     Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,6 ----
! This is m2.info, produced by makeinfo version 7.1 from gm2.texi.
  
! Copyright Â© 1999-2025 Free Software Foundation, Inc.
  
     Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** START-INFO-DIR-ENTRY
*** 14,20 ****
  END-INFO-DIR-ENTRY
  
  
!    Copyright (C) 1999-2025 Free Software Foundation, Inc.
  
     Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 14,20 ----
  END-INFO-DIR-ENTRY
  
  
!    Copyright Â© 1999-2025 Free Software Foundation, Inc.
  
     Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** available and access to assembly program
*** 115,123 ****
  syntax as that used by GCC.
  
     The gm2 driver allows third party libraries to be installed alongside
! gm2 libraries.  For example if the user specifies library 'foo' using
! '-flibs=foo' the driver will check the standard GCC install directory
! for a sub directory 'foo' containing the library contents.  The library
  module search path is altered accordingly for compile and link.
  
  
--- 115,123 ----
  syntax as that used by GCC.
  
     The gm2 driver allows third party libraries to be installed alongside
! gm2 libraries.  For example if the user specifies library â€˜fooâ€™ using
! â€˜-flibs=fooâ€™ the driver will check the standard GCC install directory
! for a sub directory â€˜fooâ€™ containing the library contents.  The library
  module search path is altered accordingly for compile and link.
  
  
*************** File: m2.info,  Node: Features,  Prev: D
*** 134,176 ****
  1.4 GNU Modula-2 Features
  =========================
  
!    * the compiler currently complies with Programming in Modula-2
       Edition 2, 3, 4 and ISO Modula-2.  Users can switch on specific
!      language features by using: '-fpim', '-fpim2', '-fpim3', '-fpim4'
!      or '-fiso'.
  
!    * the option '-fswig' will automatically create a swig interface file
       which corresponds to the definition module of the file being
       compiled.
  
!    * exception handling is compatible with C++ and swig.  Modula-2 code
       can be used with C or C++ code.
  
!    * Python can call GNU Modula-2 modules via swig.
  
!    * shared libraries can be built.
  
!    * fixed sized types are now available from 'SYSTEM'.
  
!    * variables can be declared at addresses.
  
!    * much better dwarf-2 debugging support and when used with 'gdb' the
!      programmer can display 'RECORD's, 'ARRAY's, 'SET's, subranges and
       constant char literals in Modula-2 syntax.
  
!    * supports sets of any ordinal size (memory permitting).
  
!    * easy interface to C, and varargs can be passed to C routines.
  
!    * many Logitech libraries have been implemented and can be accessed
!      via: '-flibs=m2log,m2pim,m2iso'.
  
!    * coroutines have been implemented in the PIM style and these are
       accessible from SYSTEM. A number of supporting libraries (executive
       and file descriptor mapping to interrupt vector libraries are
!      available through the '-flibs=m2iso,m2pim' switch).
  
!    * can be built as a cross compiler (for embedded microprocessors such
       as the AVR and the ARM).
  
  
--- 134,176 ----
  1.4 GNU Modula-2 Features
  =========================
  
!    â€¢ the compiler currently complies with Programming in Modula-2
       Edition 2, 3, 4 and ISO Modula-2.  Users can switch on specific
!      language features by using: â€˜-fpimâ€™, â€˜-fpim2â€™, â€˜-fpim3â€™, â€˜-fpim4â€™
!      or â€˜-fisoâ€™.
  
!    â€¢ the option â€˜-fswigâ€™ will automatically create a swig interface file
       which corresponds to the definition module of the file being
       compiled.
  
!    â€¢ exception handling is compatible with C++ and swig.  Modula-2 code
       can be used with C or C++ code.
  
!    â€¢ Python can call GNU Modula-2 modules via swig.
  
!    â€¢ shared libraries can be built.
  
!    â€¢ fixed sized types are now available from â€˜SYSTEMâ€™.
  
!    â€¢ variables can be declared at addresses.
  
!    â€¢ much better dwarf-2 debugging support and when used with â€˜gdbâ€™ the
!      programmer can display â€˜RECORDâ€™s, â€˜ARRAYâ€™s, â€˜SETâ€™s, subranges and
       constant char literals in Modula-2 syntax.
  
!    â€¢ supports sets of any ordinal size (memory permitting).
  
!    â€¢ easy interface to C, and varargs can be passed to C routines.
  
!    â€¢ many Logitech libraries have been implemented and can be accessed
!      via: â€˜-flibs=m2log,m2pim,m2isoâ€™.
  
!    â€¢ coroutines have been implemented in the PIM style and these are
       accessible from SYSTEM. A number of supporting libraries (executive
       and file descriptor mapping to interrupt vector libraries are
!      available through the â€˜-flibs=m2iso,m2pimâ€™ switch).
  
!    â€¢ can be built as a cross compiler (for embedded microprocessors such
       as the AVR and the ARM).
  
  
*************** File: m2.info,  Node: Example usage,  Ne
*** 222,236 ****
  2.1 Example compile and link
  ============================
  
! The 'gm2' command is the GNU compiler for the Modula-2 language and
! supports many of the same options as 'gcc'.  *Note Option Summary:
  (gcc)Option Summary.  This manual only documents the options specific to
! 'gm2'.
  
     This section describes how to compile and link a simple hello world
  program.  It provides a few examples of using the different options
  mentioned in *note Compiler options::.  Assuming that you have a file
! called 'hello.mod' in your current directory which contains:
  
       MODULE hello ;
  
--- 222,236 ----
  2.1 Example compile and link
  ============================
  
! The â€˜gm2â€™ command is the GNU compiler for the Modula-2 language and
! supports many of the same options as â€˜gccâ€™.  *Note Option Summary:
  (gcc)Option Summary.  This manual only documents the options specific to
! â€˜gm2â€™.
  
     This section describes how to compile and link a simple hello world
  program.  It provides a few examples of using the different options
  mentioned in *note Compiler options::.  Assuming that you have a file
! called â€˜hello.modâ€™ in your current directory which contains:
  
       MODULE hello ;
  
*************** called 'hello.mod' in your current direc
*** 240,262 ****
          WriteString ('hello world') ; WriteLn
       END hello.
  
!    You can compile and link it by: 'gm2 -g hello.mod'.  The result will
! be an 'a.out' file created in your directory.
  
     You can split this command into two steps if you prefer.  The compile
! step can be achieved by: 'gm2 -g -c -fscaffold-main hello.mod' and the
! link via: 'gm2 -g hello.o'.
  
     (1)
  
     ---------- Footnotes ----------
  
!    (1) To see all the compile actions taken by 'gm2' users can also add
! the '-v' flag at the command line, for example:
  
!    'gm2 -v -g -I. hello.mod'
  
!    This displays the sub processes initiated by 'gm2' which can be
  useful when trouble shooting.
  
  
--- 240,262 ----
          WriteString ('hello world') ; WriteLn
       END hello.
  
!    You can compile and link it by: â€˜gm2 -g hello.modâ€™.  The result will
! be an â€˜a.outâ€™ file created in your directory.
  
     You can split this command into two steps if you prefer.  The compile
! step can be achieved by: â€˜gm2 -g -c -fscaffold-main hello.modâ€™ and the
! link via: â€˜gm2 -g hello.oâ€™.
  
     (1)
  
     ---------- Footnotes ----------
  
!    (1) To see all the compile actions taken by â€˜gm2â€™ users can also add
! the â€˜-vâ€™ flag at the command line, for example:
  
!    â€˜gm2 -v -g -I. hello.modâ€™
  
!    This displays the sub processes initiated by â€˜gm2â€™ which can be
  useful when trouble shooting.
  
  
*************** generic flags details *Note (gcc)Invokin
*** 272,368 ****
  of compilation is done.  The following kinds of input file names are
  supported:
  
! 'FILE.mod'
!      Modula-2 implementation or program source files.  See the '-fmod='
       option if you wish to compile a project which uses a different
       source file extension.
! 'FILE.def'
       Modula-2 definition module source files.  Definition modules are
       not compiled separately, in GNU Modula-2 definition modules are
       parsed as required when program or implementation modules are
!      compiled.  See the '-fdef=' option if you wish to compile a project
       which uses a different source file extension.
  
!    You can specify more than one input file on the 'gm2' command line,
  
! '-g'
!      create debugging information so that debuggers such as 'gdb' can
       inspect and control executable.
  
! '-I'
       used to specify the search path for definition and implementation
!      modules.  An example is: 'gm2 -g -c -I.:../../libs foo.mod'.  If
       this option is not specified then the default path is added which
       consists of the current directory followed by the appropriate
       language dialect library directories.
  
! '-fauto-init'
       turns on auto initialization of pointers to NIL. Whenever a block
       is created all pointers declared within this scope will have their
       addresses assigned to NIL.
  
! '-fbounds'
!      turns on run time subrange, array index and indirection via 'NIL'
       pointer checking.
  
! '-fcase'
!      turns on compile time checking to check whether a 'CASE' statement
!      requires an 'ELSE' clause when on was not specified.
  
! '-fcpp'
!      preprocess the source with 'cpp -lang-asm -traditional-cpp' For
       further details about these options *Note (cpp)Invocation::.  If
!      '-fcpp' is supplied then all definition modules and implementation
!      modules which are parsed will be prepossessed by 'cpp'.
  
! '-fdebug-builtins'
       call a real function, rather than the builtin equivalent.  This can
       be useful for debugging parameter values to a builtin function as
       it allows users to single step code into an intrinsic function.
  
! '-fdef='
       recognize the specified suffix as a definition module filename.
!      The default implementation and module filename suffix is '.def'.
       If this option is used GNU Modula-2 will still fall back to this
       default if a requested definition module is not found.
  
! '-fdump-system-exports'
       display all inbuilt system items.  This is an internal command line
       option.
  
! '-fexceptions'
       turn on exception handling code.  By default this option is on.
!      Exception handling can be disabled by '-fno-exceptions' and no
       references are made to the run time exception libraries.
  
! '-fextended-opaque'
       allows opaque types to be implemented as any type.  This is a GNU
       Modula-2 extension and it requires that the implementation module
       defining the opaque type is available so that it can be resolved
       when compiling the module which imports the opaque type.
  
! '-ffloatvalue'
       turns on run time checking to check whether a floating point number
       is about to exceed range.
  
! '-fgen-module-list=filename'
       attempt to find all modules when linking and generate a module
!      list.  If the 'filename' is '-' then the contents are not written
       and only used to force the linking of all module ctors.  This
!      option cannot be used if '-fuse-list=' is enabled.
  
! '-findex'
       generate code to check whether array index values are out of
!      bounds.  Array index checking can be disabled via '-fno-index'.
  
! '-fiso'
       turn on ISO standard features.  Currently this enables the ISO
!      'SYSTEM' module and alters the default library search path so that
       the ISO libraries are searched before the PIM libraries.  It also
!      effects the behavior of 'DIV' and 'MOD' operators.  *Note
       Dialect::.
  
! '-flibs='
       modifies the default library search path.  The libraries supplied
       are: m2pim, m2iso, m2min, m2log and m2cor.  These map onto the
       Programming in Modula-2 base libraries, ISO standard libraries,
--- 272,368 ----
  of compilation is done.  The following kinds of input file names are
  supported:
  
! â€˜FILE.modâ€™
!      Modula-2 implementation or program source files.  See the â€˜-fmod=â€™
       option if you wish to compile a project which uses a different
       source file extension.
! â€˜FILE.defâ€™
       Modula-2 definition module source files.  Definition modules are
       not compiled separately, in GNU Modula-2 definition modules are
       parsed as required when program or implementation modules are
!      compiled.  See the â€˜-fdef=â€™ option if you wish to compile a project
       which uses a different source file extension.
  
!    You can specify more than one input file on the â€˜gm2â€™ command line,
  
! â€˜-gâ€™
!      create debugging information so that debuggers such as â€˜gdbâ€™ can
       inspect and control executable.
  
! â€˜-Iâ€™
       used to specify the search path for definition and implementation
!      modules.  An example is: â€˜gm2 -g -c -I.:../../libs foo.modâ€™.  If
       this option is not specified then the default path is added which
       consists of the current directory followed by the appropriate
       language dialect library directories.
  
! â€˜-fauto-initâ€™
       turns on auto initialization of pointers to NIL. Whenever a block
       is created all pointers declared within this scope will have their
       addresses assigned to NIL.
  
! â€˜-fboundsâ€™
!      turns on run time subrange, array index and indirection via â€˜NILâ€™
       pointer checking.
  
! â€˜-fcaseâ€™
!      turns on compile time checking to check whether a â€˜CASEâ€™ statement
!      requires an â€˜ELSEâ€™ clause when on was not specified.
  
! â€˜-fcppâ€™
!      preprocess the source with â€˜cpp -lang-asm -traditional-cppâ€™ For
       further details about these options *Note (cpp)Invocation::.  If
!      â€˜-fcppâ€™ is supplied then all definition modules and implementation
!      modules which are parsed will be prepossessed by â€˜cppâ€™.
  
! â€˜-fdebug-builtinsâ€™
       call a real function, rather than the builtin equivalent.  This can
       be useful for debugging parameter values to a builtin function as
       it allows users to single step code into an intrinsic function.
  
! â€˜-fdef=â€™
       recognize the specified suffix as a definition module filename.
!      The default implementation and module filename suffix is â€˜.defâ€™.
       If this option is used GNU Modula-2 will still fall back to this
       default if a requested definition module is not found.
  
! â€˜-fdump-system-exportsâ€™
       display all inbuilt system items.  This is an internal command line
       option.
  
! â€˜-fexceptionsâ€™
       turn on exception handling code.  By default this option is on.
!      Exception handling can be disabled by â€˜-fno-exceptionsâ€™ and no
       references are made to the run time exception libraries.
  
! â€˜-fextended-opaqueâ€™
       allows opaque types to be implemented as any type.  This is a GNU
       Modula-2 extension and it requires that the implementation module
       defining the opaque type is available so that it can be resolved
       when compiling the module which imports the opaque type.
  
! â€˜-ffloatvalueâ€™
       turns on run time checking to check whether a floating point number
       is about to exceed range.
  
! â€˜-fgen-module-list=filenameâ€™
       attempt to find all modules when linking and generate a module
!      list.  If the â€˜filenameâ€™ is â€˜-â€™ then the contents are not written
       and only used to force the linking of all module ctors.  This
!      option cannot be used if â€˜-fuse-list=â€™ is enabled.
  
! â€˜-findexâ€™
       generate code to check whether array index values are out of
!      bounds.  Array index checking can be disabled via â€˜-fno-indexâ€™.
  
! â€˜-fisoâ€™
       turn on ISO standard features.  Currently this enables the ISO
!      â€˜SYSTEMâ€™ module and alters the default library search path so that
       the ISO libraries are searched before the PIM libraries.  It also
!      effects the behavior of â€˜DIVâ€™ and â€˜MODâ€™ operators.  *Note
       Dialect::.
  
! â€˜-flibs=â€™
       modifies the default library search path.  The libraries supplied
       are: m2pim, m2iso, m2min, m2log and m2cor.  These map onto the
       Programming in Modula-2 base libraries, ISO standard libraries,
*************** supported:
*** 373,577 ****
       -flibs=m2iso if you also specify -fpim, -fpim2, -fpim3, -fpim4 or
       -fiso.  Unless you are using -flibs=m2min you should include m2pim
       as the they provide the base modules which all other dialects
!      utilize.  The option '-fno-libs=-' disables the 'gm2' driver from
       modifying the search and library paths.
  
! '-static-libgm2'
       On systems that provide the m2 runtimes as both shared and static
       libraries, this option forces the use of the static version.
  
! '-fm2-debug-trace='
       turn on trace debugging using a comma separated list:
!      'line,token,quad,all'.  This is an internal command line option.
  
! '-fm2-dump='
       enable dumping of modula-2 internal representation of data
       structures using a comma separated list.  The list can contain:
!      'quad,gimple,decl,all'.
  
! '-fm2-dump-decl=filestem'
!      dump the modula-2 representation of a symbol to the 'filestem'
!      specified.  This option only takes effect if the '-fm2-dump-filter'
       is specified.
  
! '-fm2-dump-gimple=filestem'
!      dump modula-2 gimple representation to the 'filestem' specified.
  
! '-fm2-dump-quad=filestem'
!      dump quadruple representation to the 'filestem' specified.
  
! '-fm2-dump-filter='rules''
!      filter the language dumps '-fdump-lang-decl', '-fdump-lang-gimple'
!      and'-fdump-lang-quad' on 'rules'.  'rules' must be a comma
       separated list which can take three forms: the full decl textual
!      name of a procedure, '[libname.]module.ident' or
!      '[filename:]module.ident'.  This is an internal command line
       option.  Currently it only filters on procedure names and regexp
       matching is not implemented.  Three examples of its use following
!      the previous forms could be: '-fm2-dump-filter=_M2_hello_init',
!      '-fm2-dump-filter=m2pim.StrIO.WriteString' and
!      '-fm2-dump-filter=StrLib.mod:StrIO.WriteString'.
  
! '-fm2-file-offset-bits='
!      force the type 'SYSTEM.COFF_T' to be built using the specified
       number of bits.  If this option is not used then default is
!      'CSSIZE_T' bits.
  
! '-fm2-g'
       improve the debugging experience for new programmers at the expense
!      of generating 'nop' instructions if necessary to ensure single
       stepping precision over all code related keywords.  An example of
!      this is in termination of a list of nested 'IF' statements where
!      multiple 'END' keywords are mapped onto a sequence of 'nop'
       instructions.
  
! '-fm2-lower-case'
       render keywords in error messages using lower case.
  
! '-fm2-pathname='
       specify the module mangled prefix name for all modules in the
       following include paths.
  
! '-fm2-pathnameI'
       for internal use only: used by the driver to copy the user facing
!      '-I' option.
  
! '-fm2-plugin'
       insert plugin to identify run time errors at compile time (default
       on).
  
! '-fm2-prefix='
       specify the module mangled prefix name.  All exported symbols from
       a definition module will have the prefix name.
  
! '-fm2-statistics'
       generates quadruple information: number of quadruples generated,
       number of quadruples remaining after optimization and number of
       source lines compiled.
  
! '-fm2-strict-type'
       experimental flag to turn on the new strict type checker.
  
! '-fm2-whole-program'
       compile all implementation modules and program module at once.
       Notice that you need to take care if you are compiling different
       dialect modules (particularly with the negative operands to
!      modulus).  But this option, when coupled together with '-O3', can
       deliver huge performance improvements.
  
! '-fmod='
       recognize the specified suffix as implementation and module
       filenames.  The default implementation and module filename suffix
!      is '.mod'.  If this option is used GNU Modula-2 will still fall
       back to this default if it needs to read an implementation module
       and the specified suffixed filename does not exist.
  
! '-fnil'
!      generate code to detect accessing data through a 'NIL' value
!      pointer.  Dereferencing checking through a 'NIL' pointer can be
!      disabled by '-fno-nil'.
  
! '-fpim'
       turn on PIM standard features.  Currently this enables the PIM
!      'SYSTEM' module and determines which identifiers are pervasive
!      (declared in the base module).  If no other '-fpim[234]' switch is
       used then division and modulus operators behave as defined in PIM4.
       *Note Dialect::.
  
! '-fpim2'
!      turn on PIM-2 standard features.  Currently this removes 'SIZE'
       from being a pervasive identifier (declared in the base module).
!      It places 'SIZE' in the 'SYSTEM' module.  It also effects the
!      behavior of 'DIV' and 'MOD' operators.  *Note Dialect::.
  
! '-fpim3'
       turn on PIM-3 standard features.  Currently this only effects the
!      behavior of 'DIV' and 'MOD' operators.  *Note Dialect::.
  
! '-fpim4'
       turn on PIM-4 standard features.  Currently this only effects the
!      behavior of 'DIV' and 'MOD' operators.  *Note Dialect::.
  
! '-fpositive-mod-floor-div'
!      forces the 'DIV' and 'MOD' operators to behave as defined by PIM4.
       All modulus results are positive and the results from the division
       are rounded to the floor.  *Note Dialect::.
  
! '-fpthread'
       link against the pthread library.  By default this option is on.
!      It can be disabled by '-fno-pthread'.  GNU Modula-2 uses the GCC
       pthread libraries to implement coroutines (see the SYSTEM
       implementation module).
  
! '-frange'
       generate code to check the assignment range, return value range set
       range and constructor range.  Range checking can be disabled via
!      '-fno-range'.
  
! '-freturn'
!      generate code to check that functions always exit with a 'RETURN'
       and do not fall out at the end.  Return checking can be disabled
!      via '-fno-return'.
  
! '-fruntime-modules='
       specify, using a comma separated list, the run time modules and
       their order.  These modules will initialized first before any other
       modules in the application dependency.  By default the run time
!      modules list is set to 'm2iso:RTentity,m2iso:Storage,m2iso:SYSTEM,'
!      'm2iso:M2RTS,m2iso:RTExceptions,m2iso:IOLink'.  Note that these
       modules will only be linked into your executable if they are
       required.  Adding a long list of dependent modules will not effect
       the size of the executable it merely states the initialization
       order should they be required.
  
! '-fscaffold-dynamic'
!      the option ensures that 'gm2' will generate a dynamic scaffold
       infrastructure when compiling implementation and program modules.
!      By default this option is on.  Use '-fno-scaffold-dynamic' to turn
!      it off or select '-fno-scaffold-static'.
  
! '-fscaffold-c'
       generate a C source scaffold for the current module being compiled.
  
! '-fscaffold-c++'
       generate a C++ source scaffold for the current module being
       compiled.
  
! '-fscaffold-main'
!      force the generation of the 'main' function.  This is not necessary
!      if the '-c' is omitted.
  
! '-fscaffold-static'
!      the option ensures that 'gm2' will generate a static scaffold
       within the program module.  The static scaffold consists of
       sequences of calls to all dependent module initialization and
       finalization procedures.  The static scaffold is useful for
       debugging and single stepping the initialization blocks of
       implementation modules.
  
! '-fshared'
       generate a shared library from the module.
  
! '-fsoft-check-all'
       turns on all run time checks.  This is the same as invoking GNU
!      Modula-2 using the command options '-fnil' '-frange' '-findex'
!      '-fwholevalue' '-fwholediv' '-fcase' '-freturn'.
  
! '-fsources'
       displays the path to the source of each module.  This option can be
       used at compile time to check the correct definition module is
       being used.
  
! '-fswig'
       generate a swig interface file.
  
! '-funbounded-by-reference'
       enable optimization of unbounded parameters by attempting to pass
!      non 'VAR' unbounded parameters by reference.  This optimization
       avoids the implicit copy inside the callee procedure.  GNU Modula-2
       will only allow unbounded parameters to be passed by reference if,
       inside the callee procedure, they are not written to, no address is
!      calculated on the array and it is not passed as a 'VAR' parameter.
       Note that it is possible to write code to break this optimization,
       therefore this option should be used carefully.  For example it
       would be possible to take the address of an array, pass the address
--- 373,577 ----
       -flibs=m2iso if you also specify -fpim, -fpim2, -fpim3, -fpim4 or
       -fiso.  Unless you are using -flibs=m2min you should include m2pim
       as the they provide the base modules which all other dialects
!      utilize.  The option â€˜-fno-libs=-â€™ disables the â€˜gm2â€™ driver from
       modifying the search and library paths.
  
! â€˜-static-libgm2â€™
       On systems that provide the m2 runtimes as both shared and static
       libraries, this option forces the use of the static version.
  
! â€˜-fm2-debug-trace=â€™
       turn on trace debugging using a comma separated list:
!      â€˜line,token,quad,allâ€™.  This is an internal command line option.
  
! â€˜-fm2-dump=â€™
       enable dumping of modula-2 internal representation of data
       structures using a comma separated list.  The list can contain:
!      â€˜quad,gimple,decl,allâ€™.
  
! â€˜-fm2-dump-decl=filestemâ€™
!      dump the modula-2 representation of a symbol to the â€˜filestemâ€™
!      specified.  This option only takes effect if the â€˜-fm2-dump-filterâ€™
       is specified.
  
! â€˜-fm2-dump-gimple=filestemâ€™
!      dump modula-2 gimple representation to the â€˜filestemâ€™ specified.
  
! â€˜-fm2-dump-quad=filestemâ€™
!      dump quadruple representation to the â€˜filestemâ€™ specified.
  
! â€˜-fm2-dump-filter=â€˜rulesâ€™â€™
!      filter the language dumps â€˜-fdump-lang-declâ€™, â€˜-fdump-lang-gimpleâ€™
!      andâ€˜-fdump-lang-quadâ€™ on â€˜rulesâ€™.  â€˜rulesâ€™ must be a comma
       separated list which can take three forms: the full decl textual
!      name of a procedure, â€˜[libname.]module.identâ€™ or
!      â€˜[filename:]module.identâ€™.  This is an internal command line
       option.  Currently it only filters on procedure names and regexp
       matching is not implemented.  Three examples of its use following
!      the previous forms could be: â€˜-fm2-dump-filter=_M2_hello_initâ€™,
!      â€˜-fm2-dump-filter=m2pim.StrIO.WriteStringâ€™ and
!      â€˜-fm2-dump-filter=StrLib.mod:StrIO.WriteStringâ€™.
  
! â€˜-fm2-file-offset-bits=â€™
!      force the type â€˜SYSTEM.COFF_Tâ€™ to be built using the specified
       number of bits.  If this option is not used then default is
!      â€˜CSSIZE_Tâ€™ bits.
  
! â€˜-fm2-gâ€™
       improve the debugging experience for new programmers at the expense
!      of generating â€˜nopâ€™ instructions if necessary to ensure single
       stepping precision over all code related keywords.  An example of
!      this is in termination of a list of nested â€˜IFâ€™ statements where
!      multiple â€˜ENDâ€™ keywords are mapped onto a sequence of â€˜nopâ€™
       instructions.
  
! â€˜-fm2-lower-caseâ€™
       render keywords in error messages using lower case.
  
! â€˜-fm2-pathname=â€™
       specify the module mangled prefix name for all modules in the
       following include paths.
  
! â€˜-fm2-pathnameIâ€™
       for internal use only: used by the driver to copy the user facing
!      â€˜-Iâ€™ option.
  
! â€˜-fm2-pluginâ€™
       insert plugin to identify run time errors at compile time (default
       on).
  
! â€˜-fm2-prefix=â€™
       specify the module mangled prefix name.  All exported symbols from
       a definition module will have the prefix name.
  
! â€˜-fm2-statisticsâ€™
       generates quadruple information: number of quadruples generated,
       number of quadruples remaining after optimization and number of
       source lines compiled.
  
! â€˜-fm2-strict-typeâ€™
       experimental flag to turn on the new strict type checker.
  
! â€˜-fm2-whole-programâ€™
       compile all implementation modules and program module at once.
       Notice that you need to take care if you are compiling different
       dialect modules (particularly with the negative operands to
!      modulus).  But this option, when coupled together with â€˜-O3â€™, can
       deliver huge performance improvements.
  
! â€˜-fmod=â€™
       recognize the specified suffix as implementation and module
       filenames.  The default implementation and module filename suffix
!      is â€˜.modâ€™.  If this option is used GNU Modula-2 will still fall
       back to this default if it needs to read an implementation module
       and the specified suffixed filename does not exist.
  
! â€˜-fnilâ€™
!      generate code to detect accessing data through a â€˜NILâ€™ value
!      pointer.  Dereferencing checking through a â€˜NILâ€™ pointer can be
!      disabled by â€˜-fno-nilâ€™.
  
! â€˜-fpimâ€™
       turn on PIM standard features.  Currently this enables the PIM
!      â€˜SYSTEMâ€™ module and determines which identifiers are pervasive
!      (declared in the base module).  If no other â€˜-fpim[234]â€™ switch is
       used then division and modulus operators behave as defined in PIM4.
       *Note Dialect::.
  
! â€˜-fpim2â€™
!      turn on PIM-2 standard features.  Currently this removes â€˜SIZEâ€™
       from being a pervasive identifier (declared in the base module).
!      It places â€˜SIZEâ€™ in the â€˜SYSTEMâ€™ module.  It also effects the
!      behavior of â€˜DIVâ€™ and â€˜MODâ€™ operators.  *Note Dialect::.
  
! â€˜-fpim3â€™
       turn on PIM-3 standard features.  Currently this only effects the
!      behavior of â€˜DIVâ€™ and â€˜MODâ€™ operators.  *Note Dialect::.
  
! â€˜-fpim4â€™
       turn on PIM-4 standard features.  Currently this only effects the
!      behavior of â€˜DIVâ€™ and â€˜MODâ€™ operators.  *Note Dialect::.
  
! â€˜-fpositive-mod-floor-divâ€™
!      forces the â€˜DIVâ€™ and â€˜MODâ€™ operators to behave as defined by PIM4.
       All modulus results are positive and the results from the division
       are rounded to the floor.  *Note Dialect::.
  
! â€˜-fpthreadâ€™
       link against the pthread library.  By default this option is on.
!      It can be disabled by â€˜-fno-pthreadâ€™.  GNU Modula-2 uses the GCC
       pthread libraries to implement coroutines (see the SYSTEM
       implementation module).
  
! â€˜-frangeâ€™
       generate code to check the assignment range, return value range set
       range and constructor range.  Range checking can be disabled via
!      â€˜-fno-rangeâ€™.
  
! â€˜-freturnâ€™
!      generate code to check that functions always exit with a â€˜RETURNâ€™
       and do not fall out at the end.  Return checking can be disabled
!      via â€˜-fno-returnâ€™.
  
! â€˜-fruntime-modules=â€™
       specify, using a comma separated list, the run time modules and
       their order.  These modules will initialized first before any other
       modules in the application dependency.  By default the run time
!      modules list is set to â€˜m2iso:RTentity,m2iso:Storage,m2iso:SYSTEM,â€™
!      â€˜m2iso:M2RTS,m2iso:RTExceptions,m2iso:IOLinkâ€™.  Note that these
       modules will only be linked into your executable if they are
       required.  Adding a long list of dependent modules will not effect
       the size of the executable it merely states the initialization
       order should they be required.
  
! â€˜-fscaffold-dynamicâ€™
!      the option ensures that â€˜gm2â€™ will generate a dynamic scaffold
       infrastructure when compiling implementation and program modules.
!      By default this option is on.  Use â€˜-fno-scaffold-dynamicâ€™ to turn
!      it off or select â€˜-fno-scaffold-staticâ€™.
  
! â€˜-fscaffold-câ€™
       generate a C source scaffold for the current module being compiled.
  
! â€˜-fscaffold-c++â€™
       generate a C++ source scaffold for the current module being
       compiled.
  
! â€˜-fscaffold-mainâ€™
!      force the generation of the â€˜mainâ€™ function.  This is not necessary
!      if the â€˜-câ€™ is omitted.
  
! â€˜-fscaffold-staticâ€™
!      the option ensures that â€˜gm2â€™ will generate a static scaffold
       within the program module.  The static scaffold consists of
       sequences of calls to all dependent module initialization and
       finalization procedures.  The static scaffold is useful for
       debugging and single stepping the initialization blocks of
       implementation modules.
  
! â€˜-fsharedâ€™
       generate a shared library from the module.
  
! â€˜-fsoft-check-allâ€™
       turns on all run time checks.  This is the same as invoking GNU
!      Modula-2 using the command options â€˜-fnilâ€™ â€˜-frangeâ€™ â€˜-findexâ€™
!      â€˜-fwholevalueâ€™ â€˜-fwholedivâ€™ â€˜-fcaseâ€™ â€˜-freturnâ€™.
  
! â€˜-fsourcesâ€™
       displays the path to the source of each module.  This option can be
       used at compile time to check the correct definition module is
       being used.
  
! â€˜-fswigâ€™
       generate a swig interface file.
  
! â€˜-funbounded-by-referenceâ€™
       enable optimization of unbounded parameters by attempting to pass
!      non â€˜VARâ€™ unbounded parameters by reference.  This optimization
       avoids the implicit copy inside the callee procedure.  GNU Modula-2
       will only allow unbounded parameters to be passed by reference if,
       inside the callee procedure, they are not written to, no address is
!      calculated on the array and it is not passed as a â€˜VARâ€™ parameter.
       Note that it is possible to write code to break this optimization,
       therefore this option should be used carefully.  For example it
       would be possible to take the address of an array, pass the address
*************** supported:
*** 579,620 ****
       and write to the location using the address parameter.
  
       Due to the dangerous nature of this option it is not enabled when
!      the '-O' option is specified.
  
! '-fuse-list=filename'
!      if '-fscaffold-static' is enabled then use the file 'filename' for
       the initialization order of modules.  Whereas if
!      '-fscaffold-dynamic' is enabled then use this file to force linking
       of all module ctors.  This option cannot be used if
!      '-fgen-module-list=' is enabled.
  
! '-fwholediv'
       generate code to detect whole number division by zero or modulus by
       zero.
  
! '-fwholevalue'
       generate code to detect whole number overflow and underflow.
  
! '-Wcase-enum'
!      generate a warning if a 'CASE' statement selects on an enumerated
!      type expression and the statement is missing one or more 'CASE'
!      labels.  No warning is issued if the 'CASE' statement has a default
!      'ELSE' clause.  The option '-Wall' will turn on this flag.
  
! '-Wuninit-variable-checking'
       issue a warning if a variable is used before it is initialized.
       The checking only occurs in the first basic block in each
       procedure.  It does not check parameters, array types or set types.
  
! '-Wuninit-variable-checking=all,known,cond'
       issue a warning if a variable is used before it is initialized.
       The checking will only occur in the first basic block in each
!      procedure if 'known' is specified.  If 'cond' or 'all' is specified
       then checking continues into conditional branches of the flow
       graph.  All checking will stop when a procedure call is invoked or
!      the top of a loop is encountered.  The option '-Wall' will turn on
!      this flag with '-Wuninit-variable-checking=known'.  The
!      '-Wuninit-variable-checking=all' will increase compile time.
  
  
  File: m2.info,  Node: Linking,  Next: Elementary data types,  Prev: Compiler options,  Up: Using
--- 579,620 ----
       and write to the location using the address parameter.
  
       Due to the dangerous nature of this option it is not enabled when
!      the â€˜-Oâ€™ option is specified.
  
! â€˜-fuse-list=filenameâ€™
!      if â€˜-fscaffold-staticâ€™ is enabled then use the file â€˜filenameâ€™ for
       the initialization order of modules.  Whereas if
!      â€˜-fscaffold-dynamicâ€™ is enabled then use this file to force linking
       of all module ctors.  This option cannot be used if
!      â€˜-fgen-module-list=â€™ is enabled.
  
! â€˜-fwholedivâ€™
       generate code to detect whole number division by zero or modulus by
       zero.
  
! â€˜-fwholevalueâ€™
       generate code to detect whole number overflow and underflow.
  
! â€˜-Wcase-enumâ€™
!      generate a warning if a â€˜CASEâ€™ statement selects on an enumerated
!      type expression and the statement is missing one or more â€˜CASEâ€™
!      labels.  No warning is issued if the â€˜CASEâ€™ statement has a default
!      â€˜ELSEâ€™ clause.  The option â€˜-Wallâ€™ will turn on this flag.
  
! â€˜-Wuninit-variable-checkingâ€™
       issue a warning if a variable is used before it is initialized.
       The checking only occurs in the first basic block in each
       procedure.  It does not check parameters, array types or set types.
  
! â€˜-Wuninit-variable-checking=all,known,condâ€™
       issue a warning if a variable is used before it is initialized.
       The checking will only occur in the first basic block in each
!      procedure if â€˜knownâ€™ is specified.  If â€˜condâ€™ or â€˜allâ€™ is specified
       then checking continues into conditional branches of the flow
       graph.  All checking will stop when a procedure call is invoked or
!      the top of a loop is encountered.  The option â€˜-Wallâ€™ will turn on
!      this flag with â€˜-Wuninit-variable-checking=knownâ€™.  The
!      â€˜-Wuninit-variable-checking=allâ€™ will increase compile time.
  
  
  File: m2.info,  Node: Linking,  Next: Elementary data types,  Prev: Compiler options,  Up: Using
*************** File: m2.info,  Node: Linking,  Next: El
*** 622,642 ****
  This section describes the linking related options.  There are three
  linking strategies available which are dynamic scaffold, static scaffold
  and user defined.  The dynamic scaffold is enabled by default and each
! module will register itself to the run time 'M2RTS' via a constructor.
! The static scaffold mechanism will invoke each modules '_init' and
! '_finish' function in turn via a sequence of calls from within 'main'.
  Lastly the user defined strategy can be implemented by turning off the
! dynamic and static options via '-fno-scaffold-dynamic' and
! '-fno-scaffold-static'.
  
     In the simple test below:
  
       $ gm2 hello.mod
  
!    the driver will add the options '-fscaffold-dynamic' and
! '-fgen-module-list=-' which generate a list of application modules and
! also creates the 'main' function with calls to 'M2RTS'.  It can be
! useful to add the option '-fsources' which displays the source files as
  they are parsed and summarizes whether the source file is required for
  compilation or linking.
  
--- 622,642 ----
  This section describes the linking related options.  There are three
  linking strategies available which are dynamic scaffold, static scaffold
  and user defined.  The dynamic scaffold is enabled by default and each
! module will register itself to the run time â€˜M2RTSâ€™ via a constructor.
! The static scaffold mechanism will invoke each modules â€˜_initâ€™ and
! â€˜_finishâ€™ function in turn via a sequence of calls from within â€˜mainâ€™.
  Lastly the user defined strategy can be implemented by turning off the
! dynamic and static options via â€˜-fno-scaffold-dynamicâ€™ and
! â€˜-fno-scaffold-staticâ€™.
  
     In the simple test below:
  
       $ gm2 hello.mod
  
!    the driver will add the options â€˜-fscaffold-dynamicâ€™ and
! â€˜-fgen-module-list=-â€™ which generate a list of application modules and
! also creates the â€˜mainâ€™ function with calls to â€˜M2RTSâ€™.  It can be
! useful to add the option â€˜-fsourcesâ€™ which displays the source files as
  they are parsed and summarizes whether the source file is required for
  compilation or linking.
  
*************** then you could use these steps:
*** 646,655 ****
       $ gm2 -c -fscaffold-main hello.mod
       $ gm2 hello.o
  
!    The '-fscaffold-main' informs the compiler to generate the 'main'
  function and scaffold.  You can enable the environment variable
! 'GCC_M2LINK_RTFLAG' to trace the construction and destruction of the
! application.  The values for 'GCC_M2LINK_RTFLAG' are shown in the table
  below:
  
       value   | meaning
--- 646,655 ----
       $ gm2 -c -fscaffold-main hello.mod
       $ gm2 hello.o
  
!    The â€˜-fscaffold-mainâ€™ informs the compiler to generate the â€˜mainâ€™
  function and scaffold.  You can enable the environment variable
! â€˜GCC_M2LINK_RTFLAGâ€™ to trace the construction and destruction of the
! application.  The values for â€˜GCC_M2LINK_RTFLAGâ€™ are shown in the table
  below:
  
       value   | meaning
*************** below:
*** 669,676 ****
     One of the advantages of the dynamic scaffold is that the driver
  behaves in a similar way to the other front end drivers.  For example
  consider a small project consisting of 4 definition implementation
! modules ('a.def', 'a.mod', 'b.def', 'b.mod', 'c.def', 'c.mod', 'd.def',
! 'd.mod') and a program module 'program.mod'.
  
     To link this project we could:
  
--- 669,676 ----
     One of the advantages of the dynamic scaffold is that the driver
  behaves in a similar way to the other front end drivers.  For example
  consider a small project consisting of 4 definition implementation
! modules (â€˜a.defâ€™, â€˜a.modâ€™, â€˜b.defâ€™, â€˜b.modâ€™, â€˜c.defâ€™, â€˜c.modâ€™, â€˜d.defâ€™,
! â€˜d.modâ€™) and a program module â€˜program.modâ€™.
  
     To link this project we could:
  
*************** order in which the corresponding separat
*** 686,693 ****
  of their import lists.
  
     However, if required, you can override this using
! '-fruntime-modules=a,b,c,d' for example which forces the initialization
! sequence to 'a', 'b', 'c' and 'd'.
  
  
  File: m2.info,  Node: Elementary data types,  Next: Standard procedures,  Prev: Linking,  Up: Using
--- 686,693 ----
  of their import lists.
  
     However, if required, you can override this using
! â€˜-fruntime-modules=a,b,c,dâ€™ for example which forces the initialization
! sequence to â€˜aâ€™, â€˜bâ€™, â€˜câ€™ and â€˜dâ€™.
  
  
  File: m2.info,  Node: Elementary data types,  Next: Standard procedures,  Prev: Linking,  Up: Using
*************** This section describes the elementary da
*** 699,708 ****
  Modula-2.  It also describes the relationship between these data types
  and the equivalent C data types.
  
!    The following data types are supported: 'INTEGER', 'LONGINT',
! 'SHORTINT', 'CARDINAL', 'LONGCARD', 'SHORTCARD', 'BOOLEAN', 'REAL',
! 'LONGREAL', 'SHORTREAL', 'COMPLEX', 'LONGCOMPLEX', 'SHORTCOMPLEX' and
! 'CHAR'.
  
     An equivalence table is given below:
  
--- 699,708 ----
  Modula-2.  It also describes the relationship between these data types
  and the equivalent C data types.
  
!    The following data types are supported: â€˜INTEGERâ€™, â€˜LONGINTâ€™,
! â€˜SHORTINTâ€™, â€˜CARDINALâ€™, â€˜LONGCARDâ€™, â€˜SHORTCARDâ€™, â€˜BOOLEANâ€™, â€˜REALâ€™,
! â€˜LONGREALâ€™, â€˜SHORTREALâ€™, â€˜COMPLEXâ€™, â€˜LONGCOMPLEXâ€™, â€˜SHORTCOMPLEXâ€™ and
! â€˜CHARâ€™.
  
     An equivalence table is given below:
  
*************** and the equivalent C data types.
*** 724,730 ****
       LONGCOMPLEX               complex long double
  
     Note that GNU Modula-2 also supports fixed sized data types which are
! exported from the 'SYSTEM' module.  *Note The PIM system module::.
  *Note The ISO system module::.
  
  
--- 724,730 ----
       LONGCOMPLEX               complex long double
  
     Note that GNU Modula-2 also supports fixed sized data types which are
! exported from the â€˜SYSTEMâ€™ module.  *Note The PIM system module::.
  *Note The ISO system module::.
  
  
*************** visible.
*** 740,750 ****
  -------------------------------------------------------------
  
  The following procedures are implemented and conform with Programming in
! Modula-2 and ISO Modula-2: 'NEW', 'DISPOSE', 'INC', 'DEC', 'INCL',
! 'EXCL' and 'HALT'.  The standard functions are: 'ABS', 'CAP', 'CHR',
! 'FLOAT', 'HIGH', 'LFLOAT', 'LTRUNC', 'MIN', 'MAX', 'ODD', 'SFLOAT',
! 'STRUNC' 'TRUNC' and 'VAL'.  All these functions and procedures (except
! 'HALT', 'NEW', 'DISPOSE' and, under non constant conditions, 'LENGTH')
  generate in-line code for efficiency.
  
  
--- 740,750 ----
  -------------------------------------------------------------
  
  The following procedures are implemented and conform with Programming in
! Modula-2 and ISO Modula-2: â€˜NEWâ€™, â€˜DISPOSEâ€™, â€˜INCâ€™, â€˜DECâ€™, â€˜INCLâ€™,
! â€˜EXCLâ€™ and â€˜HALTâ€™.  The standard functions are: â€˜ABSâ€™, â€˜CAPâ€™, â€˜CHRâ€™,
! â€˜FLOATâ€™, â€˜HIGHâ€™, â€˜LFLOATâ€™, â€˜LTRUNCâ€™, â€˜MINâ€™, â€˜MAXâ€™, â€˜ODDâ€™, â€˜SFLOATâ€™,
! â€˜STRUNCâ€™ â€˜TRUNCâ€™ and â€˜VALâ€™.  All these functions and procedures (except
! â€˜HALTâ€™, â€˜NEWâ€™, â€˜DISPOSEâ€™ and, under non constant conditions, â€˜LENGTHâ€™)
  generate in-line code for efficiency.
  
  
*************** generate in-line code for efficiency.
*** 991,997 ****
  2.4.2 ISO specific standard procedures and functions
  ----------------------------------------------------
  
! The standard function 'LENGTH' is specific to ISO Modula-2 and is
  defined as:
  
  
--- 991,997 ----
  2.4.2 ISO specific standard procedures and functions
  ----------------------------------------------------
  
! The standard function â€˜LENGTHâ€™ is specific to ISO Modula-2 and is
  defined as:
  
  
*************** defined as:
*** 1018,1026 ****
  
       PROCEDURE LENGTH (a: ARRAY OF CHAR) : CARDINAL ;
  
!    This function is evaluated at compile time, providing that string 'a'
! is a constant.  If 'a' cannot be evaluated then a call is made to
! 'M2RTS.Length'.
  
  
       (*
--- 1018,1026 ----
  
       PROCEDURE LENGTH (a: ARRAY OF CHAR) : CARDINAL ;
  
!    This function is evaluated at compile time, providing that string â€˜aâ€™
! is a constant.  If â€˜aâ€™ cannot be evaluated then a call is made to
! â€˜M2RTS.Lengthâ€™.
  
  
       (*
*************** File: m2.info,  Node: High procedure fun
*** 1046,1067 ****
  ===========================================
  
  This section describes the behavior of the standard procedure function
! 'HIGH' and it includes a table of parameters with the expected return
  result.  The standard procedure function will return the last accessible
! indice of an 'ARRAY'.  If the parameter to 'HIGH' is a static array then
! the result will be a 'CARDINAL' value matching the upper bound in the
! 'ARRAY' declaration.
  
     The section also describes the behavior of a string literal actual
! parameter and how it relates to 'HIGH'.  The PIM2, PIM3, PIM4 and ISO
! standard is silent on the issue of whether a 'nul' is present in an
! 'ARRAY' 'OF' 'CHAR' actual parameter.
  
!    If the first parameter to 'HIGH' is an unbounded 'ARRAY' the return
! value from 'HIGH' will be the last accessible element in the array.  If
  a constant string literal is passed as an actual parameter then it will
! be 'nul' terminated.  The table and example code below describe the
! effect of passing an actual parameter and the expected 'HIGH' value.
  
       MODULE example1 ;
  
--- 1046,1067 ----
  ===========================================
  
  This section describes the behavior of the standard procedure function
! â€˜HIGHâ€™ and it includes a table of parameters with the expected return
  result.  The standard procedure function will return the last accessible
! indice of an â€˜ARRAYâ€™.  If the parameter to â€˜HIGHâ€™ is a static array then
! the result will be a â€˜CARDINALâ€™ value matching the upper bound in the
! â€˜ARRAYâ€™ declaration.
  
     The section also describes the behavior of a string literal actual
! parameter and how it relates to â€˜HIGHâ€™.  The PIM2, PIM3, PIM4 and ISO
! standard is silent on the issue of whether a â€˜nulâ€™ is present in an
! â€˜ARRAYâ€™ â€˜OFâ€™ â€˜CHARâ€™ actual parameter.
  
!    If the first parameter to â€˜HIGHâ€™ is an unbounded â€˜ARRAYâ€™ the return
! value from â€˜HIGHâ€™ will be the last accessible element in the array.  If
  a constant string literal is passed as an actual parameter then it will
! be â€˜nulâ€™ terminated.  The table and example code below describe the
! effect of passing an actual parameter and the expected â€˜HIGHâ€™ value.
  
       MODULE example1 ;
  
*************** effect of passing an actual parameter an
*** 1089,1098 ****
        '12'            | 2        | TRUE
        '123'           | 3        | TRUE
  
!    A constant string literal will be passed to an 'ARRAY' 'OF' 'CHAR'
! with an appended 'nul' 'CHAR'.  Thus if the constant string literal ''''
  is passed as an actual parameter (in example1) then the result from
! 'HIGH(a)' will be '0'.
  
       MODULE example2 ;
  
--- 1089,1098 ----
        '12'            | 2        | TRUE
        '123'           | 3        | TRUE
  
!    A constant string literal will be passed to an â€˜ARRAYâ€™ â€˜OFâ€™ â€˜CHARâ€™
! with an appended â€˜nulâ€™ â€˜CHARâ€™.  Thus if the constant string literal â€˜''â€™
  is passed as an actual parameter (in example1) then the result from
! â€˜HIGH(a)â€™ will be â€˜0â€™.
  
       MODULE example2 ;
  
*************** Modula-2 language as defined in ISO/IEC
*** 1147,1165 ****
  programming languages - part 1: Modula-2 Language, ISO/IEC 10514-1
  (1996) (ISO).
  
!    The command line switches '-fpim2', '-fpim3', '-fpim4' and '-fiso'
  can be used to force mutually exclusive features.  However by default
  the compiler will not aggressively fail if a non mutually exclusive
  feature is used from another dialect.  For example it is possible to
! specify '-fpim2' and still utilize 'DEFINITION' 'MODULES' which have no
  export list.
  
     Some dialect differences will force a compile time error, for example
! in PIM2 the user must 'IMPORT' 'SIZE' from the module 'SYSTEM', whereas
! in PIM3 and PIM4 'SIZE' is a pervasive function.  Thus compiling PIM4
! source code with the '-fpim2' switch will cause a compile time error.
! This can be fixed quickly with an additional 'IMPORT' or alternatively
! by compiling with the '-fpim4' switch.
  
     However there are some very important differences between the
  dialects which are mutually exclusive and therefore it is vital that
--- 1147,1165 ----
  programming languages - part 1: Modula-2 Language, ISO/IEC 10514-1
  (1996) (ISO).
  
!    The command line switches â€˜-fpim2â€™, â€˜-fpim3â€™, â€˜-fpim4â€™ and â€˜-fisoâ€™
  can be used to force mutually exclusive features.  However by default
  the compiler will not aggressively fail if a non mutually exclusive
  feature is used from another dialect.  For example it is possible to
! specify â€˜-fpim2â€™ and still utilize â€˜DEFINITIONâ€™ â€˜MODULESâ€™ which have no
  export list.
  
     Some dialect differences will force a compile time error, for example
! in PIM2 the user must â€˜IMPORTâ€™ â€˜SIZEâ€™ from the module â€˜SYSTEMâ€™, whereas
! in PIM3 and PIM4 â€˜SIZEâ€™ is a pervasive function.  Thus compiling PIM4
! source code with the â€˜-fpim2â€™ switch will cause a compile time error.
! This can be fixed quickly with an additional â€˜IMPORTâ€™ or alternatively
! by compiling with the â€˜-fpim4â€™ switch.
  
     However there are some very important differences between the
  dialects which are mutually exclusive and therefore it is vital that
*************** used.
*** 1170,1176 ****
  ---------------------------------------------
  
  The most dangerous set of mutually exclusive features found in the four
! dialects supported by GNU Modula-2 are the 'INTEGER' division, remainder
  and modulus arithmetic operators.  It is important to note that the same
  source code can be compiled to give different run time results depending
  upon these switches!  The reference manual for the various dialects of
--- 1170,1176 ----
  ---------------------------------------------
  
  The most dangerous set of mutually exclusive features found in the four
! dialects supported by GNU Modula-2 are the â€˜INTEGERâ€™ division, remainder
  and modulus arithmetic operators.  It is important to note that the same
  source code can be compiled to give different run time results depending
  upon these switches!  The reference manual for the various dialects of
*************** File: m2.info,  Node: Exceptions,  Next:
*** 1202,1226 ****
  
  This section describes how exceptions are implemented in GNU Modula-2
  and how command line switches affect their behavior.  The option
! '-fsoft-check-all' enables all software checking of nil dereferences,
  division by zero etc.  Additional code is produced to check these
  conditions and exception handlers are invoked if the conditions prevail.
  
!    Without '-fsoft-check-all' these exceptions will be caught by
  hardware (assuming the hardware support exists) and a signal handler is
! invoked.  The signal handler will in turn 'THROW' an exception which
  will be caught by the appropriate Modula-2 handler.  However the action
  of throwing an exception from within a signal handler is implementation
  defined (according to the C++ documentation).  For example on the x86_64
  architecture this works whereas on the i686 architecture it does not.
  Therefore to ensure portability it is recommended to use
! '-fsoft-check-all'.
  
     (1)
  
     ---------- Footnotes ----------
  
!    (1) '-fsoft-check-all' can be effectively combined with '-O2' to
  semantically analyze source code for possible run time errors at compile
  time.
  
--- 1202,1226 ----
  
  This section describes how exceptions are implemented in GNU Modula-2
  and how command line switches affect their behavior.  The option
! â€˜-fsoft-check-allâ€™ enables all software checking of nil dereferences,
  division by zero etc.  Additional code is produced to check these
  conditions and exception handlers are invoked if the conditions prevail.
  
!    Without â€˜-fsoft-check-allâ€™ these exceptions will be caught by
  hardware (assuming the hardware support exists) and a signal handler is
! invoked.  The signal handler will in turn â€˜THROWâ€™ an exception which
  will be caught by the appropriate Modula-2 handler.  However the action
  of throwing an exception from within a signal handler is implementation
  defined (according to the C++ documentation).  For example on the x86_64
  architecture this works whereas on the i686 architecture it does not.
  Therefore to ensure portability it is recommended to use
! â€˜-fsoft-check-allâ€™.
  
     (1)
  
     ---------- Footnotes ----------
  
!    (1) â€˜-fsoft-check-allâ€™ can be effectively combined with â€˜-O2â€™ to
  semantically analyze source code for possible run time errors at compile
  time.
  
*************** Consider the following program:
*** 1251,1257 ****
       END assignvalue.
  
     here we see that the programmer has overlooked that the return value
! from 'bad' will cause an overflow to 'foo'.  If we compile the code with
  the following options:
  
       $ gm2 -g -fsoft-check-all -O2 -fm2-plugin -c assignvalue.mod
--- 1251,1257 ----
       END assignvalue.
  
     here we see that the programmer has overlooked that the return value
! from â€˜badâ€™ will cause an overflow to â€˜fooâ€™.  If we compile the code with
  the following options:
  
       $ gm2 -g -fsoft-check-all -O2 -fm2-plugin -c assignvalue.mod
*************** the following options:
*** 1260,1271 ****
  
     The gm2 semantic plugin is automatically run and will generate a
  warning message for every exception call which is known as reachable.
! It is highly advised to run the optimizer ('-O2' or '-O3') with
! '-fsoft-check-all' so that the compiler is able to run the optimizer and
  perform variable and flow analysis before the semantic plugin is
  invoked.
  
!    The '-Wuninit-variable-checking' can be used to identify
  uninitialized variables within the first basic block in a procedure.
  The checking is limited to variables so long as they are not an array or
  set or a variant record or var parameter.
--- 1260,1271 ----
  
     The gm2 semantic plugin is automatically run and will generate a
  warning message for every exception call which is known as reachable.
! It is highly advised to run the optimizer (â€˜-O2â€™ or â€˜-O3â€™) with
! â€˜-fsoft-check-allâ€™ so that the compiler is able to run the optimizer and
  perform variable and flow analysis before the semantic plugin is
  invoked.
  
!    The â€˜-Wuninit-variable-checkingâ€™ can be used to identify
  uninitialized variables within the first basic block in a procedure.
  The checking is limited to variables so long as they are not an array or
  set or a variant record or var parameter.
*************** uninitialized.
*** 1332,1338 ****
       END testwithnoptr.
  
     The following example detects a record is uninitialized via a pointer
! variable in a 'WITH' block.
  
       $ gm2 -g -c -Wuninit-variable-checking testwithnoptr.mod
       testwithnoptr.mod:21:8: warning: In procedure â€˜testâ€™: attempting to
--- 1332,1338 ----
       END testwithnoptr.
  
     The following example detects a record is uninitialized via a pointer
! variable in a â€˜WITHâ€™ block.
  
       $ gm2 -g -c -Wuninit-variable-checking testwithnoptr.mod
       testwithnoptr.mod:21:8: warning: In procedure â€˜testâ€™: attempting to
*************** File: m2.info,  Node: Extensions,  Next:
*** 1382,1399 ****
  
  This section introduces the GNU Modula-2 language extensions.  The GNU
  Modula-2 compiler allows abstract data types to be any type, not just
! restricted to a pointer type providing the '-fextended-opaque' option is
  supplied *Note Compiler options::.
  
     Declarations can be made in any order, whether they are types,
  constants, procedures, nested modules or variables.
  
!    GNU Modula-2 also allows programmers to interface to 'C' and assembly
  language.
  
!    GNU Modula-2 provides support for the special tokens '__LINE__',
! '__FILE__', '__FUNCTION__' and '__DATE__'.  Support for these tokens
! will occur even if the '-fcpp' option is not supplied.  A table of these
  identifiers and their data type and values is given below:
  
       Scope       GNU Modula-2 token      Data type and example value
--- 1382,1399 ----
  
  This section introduces the GNU Modula-2 language extensions.  The GNU
  Modula-2 compiler allows abstract data types to be any type, not just
! restricted to a pointer type providing the â€˜-fextended-opaqueâ€™ option is
  supplied *Note Compiler options::.
  
     Declarations can be made in any order, whether they are types,
  constants, procedures, nested modules or variables.
  
!    GNU Modula-2 also allows programmers to interface to â€˜Câ€™ and assembly
  language.
  
!    GNU Modula-2 provides support for the special tokens â€˜__LINE__â€™,
! â€˜__FILE__â€™, â€˜__FUNCTION__â€™ and â€˜__DATE__â€™.  Support for these tokens
! will occur even if the â€˜-fcppâ€™ option is not supplied.  A table of these
  identifiers and their data type and values is given below:
  
       Scope       GNU Modula-2 token      Data type and example value
*************** identifiers and their data type and valu
*** 1430,1443 ****
                                           is 1.
  
  
!    The preprocessor 'cpp' can be invoked via the '-fcpp' command line
! option.  This in turn invokes 'cpp' with the following arguments
! '-traditional -lang-asm'.  These options preserve comments and all
! quotations.  'gm2' treats a '#' character in the first column as a
! preprocessor directive unless '-fno-cpp' is supplied.
  
!    For example here is a module which calls 'FatalError' via the macro
! 'ERROR'.
  
       MODULE cpp ;
  
--- 1430,1443 ----
                                           is 1.
  
  
!    The preprocessor â€˜cppâ€™ can be invoked via the â€˜-fcppâ€™ command line
! option.  This in turn invokes â€˜cppâ€™ with the following arguments
! â€˜-traditional -lang-asmâ€™.  These options preserve comments and all
! quotations.  â€˜gm2â€™ treats a â€˜#â€™ character in the first column as a
! preprocessor directive unless â€˜-fno-cppâ€™ is supplied.
  
!    For example here is a module which calls â€˜FatalErrorâ€™ via the macro
! â€˜ERRORâ€™.
  
       MODULE cpp ;
  
*************** preprocessor directive unless '-fno-cpp'
*** 1466,1476 ****
       END cpp.
  
     Another use for the C preprocessor in Modula-2 might be to turn on
! debugging code.  For example the library module 'FormatStrings.mod' uses
! procedures from 'DynamicStrings.mod' and to track down memory leaks it
  was useful to track the source file and line where each string was
! created.  Here is a section of 'FormatStrings.mod' which shows how the
! debugging code was enabled and disabled by adding '-fcpp' to the command
  line.
  
       FROM DynamicStrings IMPORT String, InitString, InitStringChar, Mark,
--- 1466,1476 ----
       END cpp.
  
     Another use for the C preprocessor in Modula-2 might be to turn on
! debugging code.  For example the library module â€˜FormatStrings.modâ€™ uses
! procedures from â€˜DynamicStrings.modâ€™ and to track down memory leaks it
  was useful to track the source file and line where each string was
! created.  Here is a section of â€˜FormatStrings.modâ€™ which shows how the
! debugging code was enabled and disabled by adding â€˜-fcppâ€™ to the command
  line.
  
       FROM DynamicStrings IMPORT String, InitString, InitStringChar, Mark,
*************** line.
*** 1521,1529 ****
          RETURN s
       END Sprintf1 ;
  
!    It is worth noting that the overhead of this code once '-fcpp' is not
  present and -O2 is used will be zero since the local empty procedures
! 'DSdbEnter' and 'DSdbExit' will be thrown away by the optimization
  passes of the GCC backend.
  
  2.9.1 Optional procedure parameter
--- 1521,1529 ----
          RETURN s
       END Sprintf1 ;
  
!    It is worth noting that the overhead of this code once â€˜-fcppâ€™ is not
  present and -O2 is used will be zero since the local empty procedures
! â€˜DSdbEnterâ€™ and â€˜DSdbExitâ€™ will be thrown away by the optimization
  passes of the GCC backend.
  
  2.9.1 Optional procedure parameter
*************** passes of the GCC backend.
*** 1531,1539 ****
  
  GNU Modula-2 allows the last parameter to a procedure or function
  parameter to be optional.  For example in the ISO library
! 'COROUTINES.def' the procedure 'NEWCOROUTINE' is defined as having an
! optional fifth argument ('initProtection') which, if absent, is
! automatically replaced by 'NIL'.
  
       PROCEDURE NEWCOROUTINE (procBody: PROC; workspace: SYSTEM.ADDRESS;
                               size: CARDINAL; VAR cr: COROUTINE;
--- 1531,1539 ----
  
  GNU Modula-2 allows the last parameter to a procedure or function
  parameter to be optional.  For example in the ISO library
! â€˜COROUTINES.defâ€™ the procedure â€˜NEWCOROUTINEâ€™ is defined as having an
! optional fifth argument (â€˜initProtectionâ€™) which, if absent, is
! automatically replaced by â€˜NILâ€™.
  
       PROCEDURE NEWCOROUTINE (procBody: PROC; workspace: SYSTEM.ADDRESS;
                               size: CARDINAL; VAR cr: COROUTINE;
*************** automatically replaced by 'NIL'.
*** 1549,1555 ****
            which specifies the initial protection level of the coroutine.
         *)
  
!    The implementation module 'COROUTINES.mod' implements this procedure
  using the following syntax:
  
       PROCEDURE NEWCOROUTINE (procBody: PROC; workspace: SYSTEM.ADDRESS;
--- 1549,1555 ----
            which specifies the initial protection level of the coroutine.
         *)
  
!    The implementation module â€˜COROUTINES.modâ€™ implements this procedure
  using the following syntax:
  
       PROCEDURE NEWCOROUTINE (procBody: PROC; workspace: SYSTEM.ADDRESS;
*************** using the following syntax:
*** 1560,1567 ****
       END NEWCOROUTINE ;
  
     Note that it is illegal for this declaration to contain an
! initializer value for 'initProtection'.  However it is necessary to
! surround this parameter with the brackets '[' and ']'.  This serves to
  remind the programmer that the last parameter was declared as optional
  in the definition module.
  
--- 1560,1567 ----
       END NEWCOROUTINE ;
  
     Note that it is illegal for this declaration to contain an
! initializer value for â€˜initProtectionâ€™.  However it is necessary to
! surround this parameter with the brackets â€˜[â€™ and â€˜]â€™.  This serves to
  remind the programmer that the last parameter was declared as optional
  in the definition module.
  
*************** in which case the initializer is mandato
*** 1570,1576 ****
  program module.
  
     GNU Modula-2 also provides additional fixed sized data types which
! are all exported from the 'SYSTEM' module.  *Note The PIM system
  module::.  *Note The ISO system module::.
  
  
--- 1570,1576 ----
  program module.
  
     GNU Modula-2 also provides additional fixed sized data types which
! are all exported from the â€˜SYSTEMâ€™ module.  *Note The PIM system
  module::.  *Note The ISO system module::.
  
  
*************** PIM type compatibility see Programming i
*** 1649,1655 ****
  Modula-2 restricts the types of expressions to the same type.
  Expression compatibility is a symmetric relation.
  
!    For example two sub expressions of 'INTEGER' and 'CARDINAL' are not
  expression compatible
  (<https://freepages.modula2.org/report4/modula-2.html> and ISO
  Modula-2).
--- 1649,1655 ----
  Modula-2 restricts the types of expressions to the same type.
  Expression compatibility is a symmetric relation.
  
!    For example two sub expressions of â€˜INTEGERâ€™ and â€˜CARDINALâ€™ are not
  expression compatible
  (<https://freepages.modula2.org/report4/modula-2.html> and ISO
  Modula-2).
*************** data types (imported from SYSTEM).
*** 1661,1694 ****
  -------------------------------
  
  This section discusses the assignment issues surrounding assignment
! compatibility of elementary types ('INTEGER', 'CARDINAL', 'REAL' and
! 'CHAR' for example).  The information here is found in more detail in
  the Modula-2 ISO standard BS ISO/IEC 10514-1:1996 page 122.
  
     Assignment compatibility exists between the same sized elementary
  types.
  
     Same type family of different sizes are also compatible as long as
! the 'MAX('type')' and 'MIN('type')' is known.  So for example this
! includes the 'INTEGER' family, 'CARDINAL' family and the 'REAL' family.
  
     The reason for this is that when the assignment is performed the
  compiler will check to see that the expression (on the right of the
! ':=') lies within the range of the designator type (on the left hand
! side of the ':=').  Thus these ordinal types can be assignment
! compatible.  However it does mean that 'WORD32' is not compatible with
! 'WORD16' as 'WORD32' does not have a minimum or maximum value and
  therefore cannot be checked.  The compiler does not know which of the
! two bytes from 'WORD32' should be copied into 'WORD16' and which two
! should be ignored.  Currently the types 'BITSET8', 'BITSET16' and
! 'BITSET32' are assignment incompatible.  However this restriction maybe
  lifted when further run time checking is achieved.
  
!    Modula-2 does allow 'INTEGER' to be assignment compatible with 'WORD'
! as they are the same size.  Likewise GNU Modula-2 allows 'INTEGER16' to
! be compatible with 'WORD16' and the same for the other fixed sized types
! and their sized equivalent in either 'WORD'n, 'BYTE' or 'LOC' types.
! However it prohibits assignment between 'WORD' and 'WORD32' even though
  on many systems these sizes will be the same.  The reasoning behind this
  rule is that the extended fixed sized types are meant to be used by
  applications requiring fixed sized data types and it is more portable to
--- 1661,1694 ----
  -------------------------------
  
  This section discusses the assignment issues surrounding assignment
! compatibility of elementary types (â€˜INTEGERâ€™, â€˜CARDINALâ€™, â€˜REALâ€™ and
! â€˜CHARâ€™ for example).  The information here is found in more detail in
  the Modula-2 ISO standard BS ISO/IEC 10514-1:1996 page 122.
  
     Assignment compatibility exists between the same sized elementary
  types.
  
     Same type family of different sizes are also compatible as long as
! the â€˜MAX(â€™typeâ€˜)â€™ and â€˜MIN(â€™typeâ€˜)â€™ is known.  So for example this
! includes the â€˜INTEGERâ€™ family, â€˜CARDINALâ€™ family and the â€˜REALâ€™ family.
  
     The reason for this is that when the assignment is performed the
  compiler will check to see that the expression (on the right of the
! â€˜:=â€™) lies within the range of the designator type (on the left hand
! side of the â€˜:=â€™).  Thus these ordinal types can be assignment
! compatible.  However it does mean that â€˜WORD32â€™ is not compatible with
! â€˜WORD16â€™ as â€˜WORD32â€™ does not have a minimum or maximum value and
  therefore cannot be checked.  The compiler does not know which of the
! two bytes from â€˜WORD32â€™ should be copied into â€˜WORD16â€™ and which two
! should be ignored.  Currently the types â€˜BITSET8â€™, â€˜BITSET16â€™ and
! â€˜BITSET32â€™ are assignment incompatible.  However this restriction maybe
  lifted when further run time checking is achieved.
  
!    Modula-2 does allow â€˜INTEGERâ€™ to be assignment compatible with â€˜WORDâ€™
! as they are the same size.  Likewise GNU Modula-2 allows â€˜INTEGER16â€™ to
! be compatible with â€˜WORD16â€™ and the same for the other fixed sized types
! and their sized equivalent in either â€˜WORDâ€™n, â€˜BYTEâ€™ or â€˜LOCâ€™ types.
! However it prohibits assignment between â€˜WORDâ€™ and â€˜WORD32â€™ even though
  on many systems these sizes will be the same.  The reasoning behind this
  rule is that the extended fixed sized types are meant to be used by
  applications requiring fixed sized data types and it is more portable to
*************** exceed the type range will result in a c
*** 1707,1719 ****
  ------------------------------
  
  Parameter compatibility is divided into two areas, pass by value and
! pass by reference ('VAR').  In the case of pass by value the rules are
  exactly the same as assignment.  However in the second case, pass by
  reference, the actual parameter and formal parameter must be the same
! size and family.  Furthermore 'INTEGER' and 'CARDINAL's are not treated
  as compatible in the pass by reference case.
  
!    The types 'BYTE', 'LOC', 'WORD' and 'WORD'n derivatives are
  assignment and parameter compatible with any data type of the same size.
  
  
--- 1707,1719 ----
  ------------------------------
  
  Parameter compatibility is divided into two areas, pass by value and
! pass by reference (â€˜VARâ€™).  In the case of pass by value the rules are
  exactly the same as assignment.  However in the second case, pass by
  reference, the actual parameter and formal parameter must be the same
! size and family.  Furthermore â€˜INTEGERâ€™ and â€˜CARDINALâ€™s are not treated
  as compatible in the pass by reference case.
  
!    The types â€˜BYTEâ€™, â€˜LOCâ€™, â€˜WORDâ€™ and â€˜WORDâ€™n derivatives are
  assignment and parameter compatible with any data type of the same size.
  
  
*************** dialect of Modula-2 and can be compiled
*** 1728,1734 ****
  
       $ gm2 -g -fiso -fsoft-check-all lazyunique.mod
  
!    The option '-fsoft-check-all' generates checks for 'NIL' pointer
  access violation.  In turn this will call the exception handler.
  
       MODULE lazyunique ;  (*!m2iso+gm2*)
--- 1728,1734 ----
  
       $ gm2 -g -fiso -fsoft-check-all lazyunique.mod
  
!    The option â€˜-fsoft-check-allâ€™ generates checks for â€˜NILâ€™ pointer
  access violation.  In turn this will call the exception handler.
  
       MODULE lazyunique ;  (*!m2iso+gm2*)
*************** File: m2.info,  Node: Unbounded by refer
*** 1843,1849 ****
  This section documents a GNU Modula-2 compiler switch which implements a
  language optimization surrounding the implementation of unbounded
  arrays.  In GNU Modula-2 the unbounded array is implemented by utilizing
! an internal structure 'struct {dataType *address, unsigned int high}'.
  So given the Modula-2 procedure declaration:
  
       PROCEDURE foo (VAR a: ARRAY OF dataType) ;
--- 1843,1849 ----
  This section documents a GNU Modula-2 compiler switch which implements a
  language optimization surrounding the implementation of unbounded
  arrays.  In GNU Modula-2 the unbounded array is implemented by utilizing
! an internal structure â€˜struct {dataType *address, unsigned int high}â€™.
  So given the Modula-2 procedure declaration:
  
       PROCEDURE foo (VAR a: ARRAY OF dataType) ;
*************** So given the Modula-2 procedure declarat
*** 1851,1857 ****
          IF a[2]= (* etc *)
       END foo ;
  
!    it is translated into GCC 'tree's, which can be represented in their
  C form thus:
  
       void foo (struct {dataType *address, unsigned int high} a)
--- 1851,1857 ----
          IF a[2]= (* etc *)
       END foo ;
  
!    it is translated into GCC â€˜treeâ€™s, which can be represented in their
  C form thus:
  
       void foo (struct {dataType *address, unsigned int high} a)
*************** C form thus:
*** 1859,1865 ****
          if (a.address[2] == /* etc */
       }
  
!    Whereas if the procedure 'foo' was declared as:
  
       PROCEDURE foo (a: ARRAY OF dataType) ;
       BEGIN
--- 1859,1865 ----
          if (a.address[2] == /* etc */
       }
  
!    Whereas if the procedure â€˜fooâ€™ was declared as:
  
       PROCEDURE foo (a: ARRAY OF dataType) ;
       BEGIN
*************** C form thus:
*** 1867,1873 ****
       END foo ;
  
     then it is implemented by being translated into the following GCC
! 'tree's, which can be represented in their C form thus:
  
       void foo (struct {dataType *address, unsigned int high} a)
       {
--- 1867,1873 ----
       END foo ;
  
     then it is implemented by being translated into the following GCC
! â€˜treeâ€™s, which can be represented in their C form thus:
  
       void foo (struct {dataType *address, unsigned int high} a)
       {
*************** C form thus:
*** 1880,1896 ****
  
     This implementation works, but it makes a copy of each non VAR
  unbounded array when a procedure is entered.  If the unbounded array is
! not changed during procedure 'foo' then this implementation will be very
! inefficient.  In effect Modula-2 lacks the 'REF' keyword of Ada.
  Consequently the programmer maybe tempted to sacrifice semantic clarity
! for greater efficiency by declaring the parameter using the 'VAR'
! keyword in place of 'REF'.
  
!    The '-funbounded-by-reference' switch instructs the compiler to check
  and see if the programmer is modifying the content of any unbounded
  array.  If it is modified then a copy will be made upon entry into the
  procedure.  Conversely if the content is only read and never modified
! then this non 'VAR' unbounded array is a candidate for being passed by
  reference.  It is only a candidate as it is still possible that passing
  this parameter by reference could alter the meaning of the source code.
  For example consider the following case:
--- 1880,1896 ----
  
     This implementation works, but it makes a copy of each non VAR
  unbounded array when a procedure is entered.  If the unbounded array is
! not changed during procedure â€˜fooâ€™ then this implementation will be very
! inefficient.  In effect Modula-2 lacks the â€˜REFâ€™ keyword of Ada.
  Consequently the programmer maybe tempted to sacrifice semantic clarity
! for greater efficiency by declaring the parameter using the â€˜VARâ€™
! keyword in place of â€˜REFâ€™.
  
!    The â€˜-funbounded-by-referenceâ€™ switch instructs the compiler to check
  and see if the programmer is modifying the content of any unbounded
  array.  If it is modified then a copy will be made upon entry into the
  procedure.  Conversely if the content is only read and never modified
! then this non â€˜VARâ€™ unbounded array is a candidate for being passed by
  reference.  It is only a candidate as it is still possible that passing
  this parameter by reference could alter the meaning of the source code.
  For example consider the following case:
*************** For example consider the following case:
*** 1908,1925 ****
          StrConCat(a, a, a)
       END foo ;
  
!    In the code above we see that the same parameter, 'a', is being
! passed three times to 'StrConCat'.  Clearly even though parameters 'b'
! and 'c' are never modified it would be incorrect to implement them as
  pass by reference.  Therefore the compiler checks to see if any non
! 'VAR' parameter is type compatible with any 'VAR' parameter and if so it
  generates run time procedure entry checks to determine whether the
! contents of parameters 'b' or 'c' matches the contents of 'a'.  If a
! match is detected then a copy is made and the 'address' in the unbounded
! 'struct'ure is modified.
  
     The compiler will check the address range of each candidate against
! the address range of any 'VAR' parameter, providing they are type
  compatible.  For example consider:
  
       PROCEDURE foo (a: ARRAY OF BYTE; VAR f: REAL) ;
--- 1908,1925 ----
          StrConCat(a, a, a)
       END foo ;
  
!    In the code above we see that the same parameter, â€˜aâ€™, is being
! passed three times to â€˜StrConCatâ€™.  Clearly even though parameters â€˜bâ€™
! and â€˜câ€™ are never modified it would be incorrect to implement them as
  pass by reference.  Therefore the compiler checks to see if any non
! â€˜VARâ€™ parameter is type compatible with any â€˜VARâ€™ parameter and if so it
  generates run time procedure entry checks to determine whether the
! contents of parameters â€˜bâ€™ or â€˜câ€™ matches the contents of â€˜aâ€™.  If a
! match is detected then a copy is made and the â€˜addressâ€™ in the unbounded
! â€˜structâ€™ure is modified.
  
     The compiler will check the address range of each candidate against
! the address range of any â€˜VARâ€™ parameter, providing they are type
  compatible.  For example consider:
  
       PROCEDURE foo (a: ARRAY OF BYTE; VAR f: REAL) ;
*************** compatible.  For example consider:
*** 1937,1945 ****
          foo(r, r)
       END bar ;
  
!    Here we see that although parameter, 'a', is a candidate for the
  passing by reference, it would be incorrect to use this transformation.
! Thus the compiler detects that parameters, 'a' and 'f' are type
  compatible and will produce run time checking code to test whether the
  address range of their respective contents intersect.
  
--- 1937,1945 ----
          foo(r, r)
       END bar ;
  
!    Here we see that although parameter, â€˜aâ€™, is a candidate for the
  passing by reference, it would be incorrect to use this transformation.
! Thus the compiler detects that parameters, â€˜aâ€™ and â€˜fâ€™ are type
  compatible and will produce run time checking code to test whether the
  address range of their respective contents intersect.
  
*************** File: m2.info,  Node: Building a shared
*** 1950,1958 ****
  ==============================
  
  This section describes building a tiny shared library implemented in
! Modula-2 and built with 'libtool'.  Suppose a project consists of two
  definition modules and two implementation modules and a program module
! 'a.def', 'a.mod', 'b.def', 'b.mod' and 'c.mod'.  The first step is to
  compile the modules using position independent code.  This can be
  achieved by the following three commands:
  
--- 1950,1958 ----
  ==============================
  
  This section describes building a tiny shared library implemented in
! Modula-2 and built with â€˜libtoolâ€™.  Suppose a project consists of two
  definition modules and two implementation modules and a program module
! â€˜a.defâ€™, â€˜a.modâ€™, â€˜b.defâ€™, â€˜b.modâ€™ and â€˜c.modâ€™.  The first step is to
  compile the modules using position independent code.  This can be
  achieved by the following three commands:
  
*************** also must compile the scaffold.
*** 1969,1982 ****
       gm2 -c -g -fmakeinit -fshared c.mod
       libtool --tag=CC --mode=compile g++ -g -c c_m2.cpp -o c_m2.lo
  
!    The third step is to link all these '.lo' files.
  
       libtool --mode=link gcc -g c_m2.lo a.lo b.lo c.lo \
               -L$(prefix)/lib64 \
               -rpath `pwd` -lgm2 -lstdc++ -lm -o libabc.la
  
!    At this point the shared library 'libabc.so' will have been created
! inside the directory '.libs'.
  
  
  File: m2.info,  Node: Interface for Python,  Next: Producing a Python module,  Prev: Building a shared library,  Up: Using
--- 1969,1982 ----
       gm2 -c -g -fmakeinit -fshared c.mod
       libtool --tag=CC --mode=compile g++ -g -c c_m2.cpp -o c_m2.lo
  
!    The third step is to link all these â€˜.loâ€™ files.
  
       libtool --mode=link gcc -g c_m2.lo a.lo b.lo c.lo \
               -L$(prefix)/lib64 \
               -rpath `pwd` -lgm2 -lstdc++ -lm -o libabc.la
  
!    At this point the shared library â€˜libabc.soâ€™ will have been created
! inside the directory â€˜.libsâ€™.
  
  
  File: m2.info,  Node: Interface for Python,  Next: Producing a Python module,  Prev: Building a shared library,  Up: Using
*************** to generate all the necessary wrapping t
*** 1992,2003 ****
  language may access the implementation module.
  
     Here is an example of how you might call upon the services of the
! Modula-2 library module 'NumberIO' from Python3.
  
     The following commands can be used to generate the Python3 module:
  
!      export src='directory to the sources'
!      export prefix='directory to where the compiler is installed'
       gm2 -I${src} -c -g -fswig ${src}/../../../gm2-libs/NumberIO.mod
       gm2 -I${src} -c -g -fmakelist ${src}/../../../gm2-libs/NumberIO.mod
  
--- 1992,2003 ----
  language may access the implementation module.
  
     Here is an example of how you might call upon the services of the
! Modula-2 library module â€˜NumberIOâ€™ from Python3.
  
     The following commands can be used to generate the Python3 module:
  
!      export src=â€˜directory to the sourcesâ€™
!      export prefix=â€˜directory to where the compiler is installedâ€™
       gm2 -I${src} -c -g -fswig ${src}/../../../gm2-libs/NumberIO.mod
       gm2 -I${src} -c -g -fmakelist ${src}/../../../gm2-libs/NumberIO.mod
  
*************** Modula-2 library module 'NumberIO' from
*** 2023,2036 ****
       cp .libs/libNumberIO.so _NumberIO.so
  
     The first four commands, generate the swig interface file
! 'NumberIO.i' and python wrap files 'NumberIO_wrap.cxx' and
! 'NumberIO.py'.  The next three 'libtool' commnads compile the C++ and
! Modula-2 source code into '.lo' objects.  The last 'libtool' command
! links all the '.lo' files into a '.la' file and includes all shared
  library dependencies.
  
     Now it is possible to run the following Python script (called
! 'testnum.py'):
  
       import NumberIO
  
--- 2023,2036 ----
       cp .libs/libNumberIO.so _NumberIO.so
  
     The first four commands, generate the swig interface file
! â€˜NumberIO.iâ€™ and python wrap files â€˜NumberIO_wrap.cxxâ€™ and
! â€˜NumberIO.pyâ€™.  The next three â€˜libtoolâ€™ commnads compile the C++ and
! Modula-2 source code into â€˜.loâ€™ objects.  The last â€˜libtoolâ€™ command
! links all the â€˜.loâ€™ files into a â€˜.laâ€™ file and includes all shared
  library dependencies.
  
     Now it is possible to run the following Python script (called
! â€˜testnum.pyâ€™):
  
       import NumberIO
  
*************** library dependencies.
*** 2042,2058 ****
       1234 x 2 = 2468
  
     *Note Producing a Python module:: for another example which uses the
! 'UNQUALIFIED' keyword to reduce the module name clutter from the
  viewport of Python3.
  
  2.14.1 Limitations of automatic generated of Swig files
  -------------------------------------------------------
  
  This section discusses the limitations of automatically generating swig
! files.  From the previous example we see that the module 'NumberIO' had
! a swig interface file 'NumberIO.i' automatically generated by the
  compiler.  If we consider three of the procedure definitions in
! 'NumberIO.def' we can see the success and limitations of the automatic
  interface generation.
  
       PROCEDURE StrToHex (a: ARRAY OF CHAR; VAR x: CARDINAL) ;
--- 2042,2058 ----
       1234 x 2 = 2468
  
     *Note Producing a Python module:: for another example which uses the
! â€˜UNQUALIFIEDâ€™ keyword to reduce the module name clutter from the
  viewport of Python3.
  
  2.14.1 Limitations of automatic generated of Swig files
  -------------------------------------------------------
  
  This section discusses the limitations of automatically generating swig
! files.  From the previous example we see that the module â€˜NumberIOâ€™ had
! a swig interface file â€˜NumberIO.iâ€™ automatically generated by the
  compiler.  If we consider three of the procedure definitions in
! â€˜NumberIO.defâ€™ we can see the success and limitations of the automatic
  interface generation.
  
       PROCEDURE StrToHex (a: ARRAY OF CHAR; VAR x: CARDINAL) ;
*************** interface generation.
*** 2070,2086 ****
       extern void NumberIO_ReadInt (int *x);
       /*  parameters: x is unknown */
  
!    In the case of 'StrToHex' it can be seen that the compiler detects
  that the last parameter is an output.  It explicitly tells swig this by
! using the parameter name 'OUTPUT' and in the following comment it
  informs the user that it knows this to be an output parameter.  In the
! second procedure 'StrToInt' it marks the final parameter as an output,
! but it tells the user that this is only a guess.  Finally in 'ReadInt'
! it informs the user that it does not know whether the parameter, 'x', is
  an output, input or an inout parameter.
  
!    The compiler decides whether to mark a parameter as either: 'INPUT',
! 'OUTPUT' or 'INOUT' if it is read before written or visa versa in the
  first basic block.  At this point it will write output that the
  parameter is known.  If it is not read or written in the first basic
  block then subsequent basic blocks are searched and the result is
--- 2070,2086 ----
       extern void NumberIO_ReadInt (int *x);
       /*  parameters: x is unknown */
  
!    In the case of â€˜StrToHexâ€™ it can be seen that the compiler detects
  that the last parameter is an output.  It explicitly tells swig this by
! using the parameter name â€˜OUTPUTâ€™ and in the following comment it
  informs the user that it knows this to be an output parameter.  In the
! second procedure â€˜StrToIntâ€™ it marks the final parameter as an output,
! but it tells the user that this is only a guess.  Finally in â€˜ReadIntâ€™
! it informs the user that it does not know whether the parameter, â€˜xâ€™, is
  an output, input or an inout parameter.
  
!    The compiler decides whether to mark a parameter as either: â€˜INPUTâ€™,
! â€˜OUTPUTâ€™ or â€˜INOUTâ€™ if it is read before written or visa versa in the
  first basic block.  At this point it will write output that the
  parameter is known.  If it is not read or written in the first basic
  block then subsequent basic blocks are searched and the result is
*************** useful despite these limitations.
*** 2093,2099 ****
     In conclusion it would be wise to check all parameters in any
  automatically generated swig interface file.  Furthermore you can force
  the automatic mechanism to generate correct interface files by reading
! or writing to the 'VAR' parameter in the first basic block of a
  procedure.
  
  
--- 2093,2099 ----
     In conclusion it would be wise to check all parameters in any
  automatically generated swig interface file.  Furthermore you can force
  the automatic mechanism to generate correct interface files by reading
! or writing to the â€˜VARâ€™ parameter in the first basic block of a
  procedure.
  
  
*************** initialize your application in Python.
*** 2111,2117 ****
  next event simulation.  The Python module needs to have a clear API
  which should be placed in a single definition module.  Furthermore the
  API should only use fundamental pervasive data types and strings.  Below
! the API is contained in the file 'twoDsim.def':
  
       DEFINITION MODULE twoDsim ;
  
--- 2111,2117 ----
  next event simulation.  The Python module needs to have a clear API
  which should be placed in a single definition module.  Furthermore the
  API should only use fundamental pervasive data types and strings.  Below
! the API is contained in the file â€˜twoDsim.defâ€™:
  
       DEFINITION MODULE twoDsim ;
  
*************** the API is contained in the file 'twoDsi
*** 2218,2227 ****
  
       END twoDsim.
  
!    The keyword 'UNQUALIFIED' can be used to ensure that the compiler
! will provide externally accessible functions 'gravity', 'box', 'poly3',
! 'poly5', 'poly6', 'mass', 'fix', 'circle', 'pivot', 'velocity', 'accel',
! 'fps', 'replayRate', 'simulateFor' rather than name mangled
  alternatives.  Hence in our Python3 application we could write:
  
       #!/usr/bin/env python3
--- 2218,2227 ----
  
       END twoDsim.
  
!    The keyword â€˜UNQUALIFIEDâ€™ can be used to ensure that the compiler
! will provide externally accessible functions â€˜gravityâ€™, â€˜boxâ€™, â€˜poly3â€™,
! â€˜poly5â€™, â€˜poly6â€™, â€˜massâ€™, â€˜fixâ€™, â€˜circleâ€™, â€˜pivotâ€™, â€˜velocityâ€™, â€˜accelâ€™,
! â€˜fpsâ€™, â€˜replayRateâ€™, â€˜simulateForâ€™ rather than name mangled
  alternatives.  Hence in our Python3 application we could write:
  
       #!/usr/bin/env python3
*************** alternatives.  Hence in our Python3 appl
*** 2246,2260 ****
           print ("exception raised")
  
     which accesses the various functions defined and implemented by the
! module 'twoDsim'.  The Modula-2 source code is compiled via:
  
       $ gm2 -g -fiso -c -fswig twoDsim.mod
       $ gm2 -g -fiso -c -fmakelist twoDsim.mod
       $ gm2 -g -fiso -c -fmakeinit twoDsim.mod
  
!    The first command both compiles the source file creating 'twoDsim.o'
! and produces a swig interface file 'swig.i'.  We now use 'swig' and
! 'g++' to produce and compile the interface wrappers:
  
       $ libtool --mode=compile g++ -g -c twoDsim_m2.cpp -o twoDsim_m2.lo
       $ swig -c++ -python3 twoDsim.i
--- 2246,2260 ----
           print ("exception raised")
  
     which accesses the various functions defined and implemented by the
! module â€˜twoDsimâ€™.  The Modula-2 source code is compiled via:
  
       $ gm2 -g -fiso -c -fswig twoDsim.mod
       $ gm2 -g -fiso -c -fmakelist twoDsim.mod
       $ gm2 -g -fiso -c -fmakeinit twoDsim.mod
  
!    The first command both compiles the source file creating â€˜twoDsim.oâ€™
! and produces a swig interface file â€˜swig.iâ€™.  We now use â€˜swigâ€™ and
! â€˜g++â€™ to produce and compile the interface wrappers:
  
       $ libtool --mode=compile g++ -g -c twoDsim_m2.cpp -o twoDsim_m2.lo
       $ swig -c++ -python3 twoDsim.i
*************** and produces a swig interface file 'swig
*** 2273,2279 ****
          -rpath `pwd` -lgm2 -lstdc++ -lm -o libtwoDsim.la
       cp .libs/libtwoDsim.so _twoDsim.so
  
!    The library name must start with '_' to comply with the Python3
  module naming scheme.
  
  
--- 2273,2279 ----
          -rpath `pwd` -lgm2 -lstdc++ -lm -o libtwoDsim.la
       cp .libs/libtwoDsim.so _twoDsim.so
  
!    The library name must start with â€˜_â€™ to comply with the Python3
  module naming scheme.
  
  
*************** File: m2.info,  Node: Interface to C,  N
*** 2285,2299 ****
  The GNU Modula-2 compiler tries to use the C calling convention wherever
  possible however some parameters have no C equivalent and thus a
  language specific method is used.  For example unbounded arrays are
! passed as a 'struct {void *address, unsigned int high}' and the contents
  of these arrays are copied by callee functions when they are declared as
! non 'VAR' parameters.  The 'VAR' equivalent unbounded array parameters
! need no copy, but still use the 'struct' representation.
  
     The recommended method of interfacing GNU Modula-2 to C is by telling
  the definition module that the implementation is in the C language.
! This is achieved by using the tokens 'DEFINITION MODULE FOR "C"'.  Here
! is an example 'libprintf.def'.
  
       DEFINITION MODULE FOR "C" libprintf ;
  
--- 2285,2299 ----
  The GNU Modula-2 compiler tries to use the C calling convention wherever
  possible however some parameters have no C equivalent and thus a
  language specific method is used.  For example unbounded arrays are
! passed as a â€˜struct {void *address, unsigned int high}â€™ and the contents
  of these arrays are copied by callee functions when they are declared as
! non â€˜VARâ€™ parameters.  The â€˜VARâ€™ equivalent unbounded array parameters
! need no copy, but still use the â€˜structâ€™ representation.
  
     The recommended method of interfacing GNU Modula-2 to C is by telling
  the definition module that the implementation is in the C language.
! This is achieved by using the tokens â€˜DEFINITION MODULE FOR "C"â€™.  Here
! is an example â€˜libprintf.defâ€™.
  
       DEFINITION MODULE FOR "C" libprintf ;
  
*************** is an example 'libprintf.def'.
*** 2303,2318 ****
  
       END libprintf.
  
!    the 'UNQUALIFIED' keyword in the definition module informs GNU
  Modula-2 not to prefix the module name to exported references in the
  object file.
  
!    The 'printf' declaration states that the first parameter semantically
! matches 'ARRAY OF CHAR' but since the module is for the C language it
! will be mapped onto 'char *'.  The token '...' indicates a variable
  number of arguments (varargs) and all parameters passed here are mapped
  onto their C equivalents.  Arrays and constant strings are passed as
! pointers.  Lastly '[ INTEGER ]' states that the caller can ignore the
  function return result if desired.
  
     The hello world program can be rewritten as:
--- 2303,2318 ----
  
       END libprintf.
  
!    the â€˜UNQUALIFIEDâ€™ keyword in the definition module informs GNU
  Modula-2 not to prefix the module name to exported references in the
  object file.
  
!    The â€˜printfâ€™ declaration states that the first parameter semantically
! matches â€˜ARRAY OF CHARâ€™ but since the module is for the C language it
! will be mapped onto â€˜char *â€™.  The token â€˜...â€™ indicates a variable
  number of arguments (varargs) and all parameters passed here are mapped
  onto their C equivalents.  Arrays and constant strings are passed as
! pointers.  Lastly â€˜[ INTEGER ]â€™ states that the caller can ignore the
  function return result if desired.
  
     The hello world program can be rewritten as:
*************** function return result if desired.
*** 2327,2338 ****
  
     and it can be compiled by:
  
!    'gm2 -g hello.mod -lc'
  
!    In reality the '-lc' is redundant as libc is always included in the
  linking process.  It is shown here to emphasize that the C library or
! object file containing 'printf' must be present.  The search path for
! modules can be changed by using '-I'.
  
     If a procedure function is declared using varargs then some parameter
  values are converted.  The table below summarizes the default
--- 2327,2338 ----
  
     and it can be compiled by:
  
!    â€˜gm2 -g hello.mod -lcâ€™
  
!    In reality the â€˜-lcâ€™ is redundant as libc is always included in the
  linking process.  It is shown here to emphasize that the C library or
! object file containing â€˜printfâ€™ must be present.  The search path for
! modules can be changed by using â€˜-Iâ€™.
  
     If a procedure function is declared using varargs then some parameter
  values are converted.  The table below summarizes the default
*************** conversions and default types used.
*** 2347,2355 ****
       a: ARRAY [0..5] OF CHAR|  ADR (a)             |   char *
       3.14                   |  none                |   long double
  
!    If you wish to pass 'int' values then you should explicitly convert
  the constants using one of the conversion mechanisms.  For example:
! 'INTEGER(10)' or 'VAL(INTEGER, 10)' or 'CAST(INTEGER, 10)'.
  
  
  File: m2.info,  Node: Assembly language,  Next: Alignment,  Prev: Interface to C,  Up: Using
--- 2347,2355 ----
       a: ARRAY [0..5] OF CHAR|  ADR (a)             |   char *
       3.14                   |  none                |   long double
  
!    If you wish to pass â€˜intâ€™ values then you should explicitly convert
  the constants using one of the conversion mechanisms.  For example:
! â€˜INTEGER(10)â€™ or â€˜VAL(INTEGER, 10)â€™ or â€˜CAST(INTEGER, 10)â€™.
  
  
  File: m2.info,  Node: Assembly language,  Next: Alignment,  Prev: Interface to C,  Up: Using
*************** File: m2.info,  Node: Assembly language,
*** 2358,2368 ****
  ===================================
  
  The interface for GNU Modula-2 to assembly language is almost identical
! to GNU C. The only alterations are that the keywords 'asm' and
! 'volatile' are in capitals, following the Modula-2 convention.
  
     A simple, but highly non optimal, example is given below.  Here we
! want to add the two 'CARDINAL's 'foo' and 'bar' together and return the
  result.  The target processor is assumed to be executing the x86_64
  instruction set.
  
--- 2358,2368 ----
  ===================================
  
  The interface for GNU Modula-2 to assembly language is almost identical
! to GNU C. The only alterations are that the keywords â€˜asmâ€™ and
! â€˜volatileâ€™ are in capitals, following the Modula-2 convention.
  
     A simple, but highly non optimal, example is given below.  Here we
! want to add the two â€˜CARDINALâ€™s â€˜fooâ€™ and â€˜barâ€™ together and return the
  result.  The target processor is assumed to be executing the x86_64
  instruction set.
  
*************** File: m2.info,  Node: Alignment,  Next:
*** 2410,2417 ****
  ========================
  
  GNU Modula-2 allows you to specify alignment for types and variables.
! The syntax for alignment is to use the ISO pragma directives '<*'
! 'bytealignment (' expression ')' and '*>'.  These directives can be used
  after type and variable declarations.
  
     The ebnf of the alignment production is:
--- 2410,2417 ----
  ========================
  
  GNU Modula-2 allows you to specify alignment for types and variables.
! The syntax for alignment is to use the ISO pragma directives â€˜<*â€™
! â€˜bytealignment (â€™ expression â€˜)â€™ and â€˜*>â€™.  These directives can be used
  after type and variable declarations.
  
     The ebnf of the alignment production is:
*************** after type and variable declarations.
*** 2420,2428 ****
       ByteAlignment := '<*' AttributeExpression '*>' =:
       AlignmentExpression := "(" ConstExpression ")" =:
  
!    The 'Alignment' ebnf statement may be used during construction of
  types, records, record fields, arrays, pointers and variables.  Below is
! an example of aligning a type so that the variable 'bar' is aligned on a
  1024 address.
  
       MODULE align ;
--- 2420,2428 ----
       ByteAlignment := '<*' AttributeExpression '*>' =:
       AlignmentExpression := "(" ConstExpression ")" =:
  
!    The â€˜Alignmentâ€™ ebnf statement may be used during construction of
  types, records, record fields, arrays, pointers and variables.  Below is
! an example of aligning a type so that the variable â€˜barâ€™ is aligned on a
  1024 address.
  
       MODULE align ;
*************** an example of aligning a type so that th
*** 2465,2471 ****
          END
       END align4.
  
!    In example 'align5' record field 'y' is aligned on a 1024 byte
  boundary.
  
       MODULE align5 ;
--- 2465,2471 ----
          END
       END align4.
  
!    In example â€˜align5â€™ record field â€˜yâ€™ is aligned on a 1024 byte
  boundary.
  
       MODULE align5 ;
*************** boundary.
*** 2489,2496 ****
          END
       END align5.
  
!    In the example below module 'align6' declares 'foo' as an array of
! 256 'INTEGER's.  The array 'foo' is aligned on a 1024 byte boundary.
  
       MODULE align6 ;
  
--- 2489,2496 ----
          END
       END align5.
  
!    In the example below module â€˜align6â€™ declares â€˜fooâ€™ as an array of
! 256 â€˜INTEGERâ€™s.  The array â€˜fooâ€™ is aligned on a 1024 byte boundary.
  
       MODULE align6 ;
  
*************** File: m2.info,  Node: Packed,  Next: Bui
*** 2518,2525 ****
  2.19 Packing data types
  =======================
  
! The pragma '<* bytealignment(0) *>' can be used to specify that the
! fields within a 'RECORD' are to be packed.  Currently this only applies
  to fields which are declared as subranges, ordinal types and enumerated
  types.  Here is an example of how two subranges might be packed into a
  byte.
--- 2518,2525 ----
  2.19 Packing data types
  =======================
  
! The pragma â€˜<* bytealignment(0) *>â€™ can be used to specify that the
! fields within a â€˜RECORDâ€™ are to be packed.  Currently this only applies
  to fields which are declared as subranges, ordinal types and enumerated
  types.  Here is an example of how two subranges might be packed into a
  byte.
*************** byte.
*** 2535,2547 ****
                     y: bits3i ;
                 END ;
  
!    Notice that the user has specified that in between fields 'x' and 'y'
  there are two bits unused.
  
     Now the user wishes to create a record with byte numbers zero and one
! occupied and then an 'INTEGER32' field which is four byte aligned.  In
  this case byte numbers two and three will be unused.  The pragma
! 'bytealignment' can be issued at the start of the record indicating the
  default alignment for the whole record and this can be overridden by
  individual fields if necessary.
  
--- 2535,2547 ----
                     y: bits3i ;
                 END ;
  
!    Notice that the user has specified that in between fields â€˜xâ€™ and â€˜yâ€™
  there are two bits unused.
  
     Now the user wishes to create a record with byte numbers zero and one
! occupied and then an â€˜INTEGER32â€™ field which is four byte aligned.  In
  this case byte numbers two and three will be unused.  The pragma
! â€˜bytealignmentâ€™ can be issued at the start of the record indicating the
  default alignment for the whole record and this can be overridden by
  individual fields if necessary.
  
*************** individual fields if necessary.
*** 2552,2558 ****
                END ;
  
     In the following example the user has specified that a record has two
! fields 'p' and 'q' but that there are three bytes unused between these
  fields.
  
          header = RECORD
--- 2552,2558 ----
                END ;
  
     In the following example the user has specified that a record has two
! fields â€˜pâ€™ and â€˜qâ€™ but that there are three bytes unused between these
  fields.
  
          header = RECORD
*************** fields.
*** 2562,2571 ****
                      q: byte ;
                   END ;
  
!    The pragma '<* bytesunused(x) *>' can only be used if the current
! field is on a byte boundary.  There is also a 'SYSTEM' pseudo procedure
! function 'TBITSIZE(T)' which returns the minimum number of bits
! necessary to represent type 'T'.
  
     Another example of packing record bit fields is given below:
  
--- 2562,2571 ----
                      q: byte ;
                   END ;
  
!    The pragma â€˜<* bytesunused(x) *>â€™ can only be used if the current
! field is on a byte boundary.  There is also a â€˜SYSTEMâ€™ pseudo procedure
! function â€˜TBITSIZE(T)â€™ which returns the minimum number of bits
! necessary to represent type â€˜Tâ€™.
  
     Another example of packing record bit fields is given below:
  
*************** File: m2.info,  Node: Built-ins,  Next:
*** 2611,2624 ****
  
  This section describes the built-in constants and functions defined in
  GNU Modula-2.  The following compiler constants can be accessed using
! the '__ATTRIBUTE__' '__BUILTIN__' keywords.  These are not part of the
  Modula-2 language and they may differ depending upon the target
  architecture but they provide a method whereby common libraries can
  interface to a different underlying architecture.
  
!    The built-in constants are: 'BITS_PER_UNIT', 'BITS_PER_WORD',
! 'BITS_PER_CHAR' and 'UNITS_PER_WORD'.  They are integrated into GNU
! Modula-2 by an extension to the 'ConstFactor' rule:
  
       ConstFactor := ConstQualidentOrSet | Number | ConstString |
                      "(" ConstExpression ")" | "NOT" ConstFactor |
--- 2611,2624 ----
  
  This section describes the built-in constants and functions defined in
  GNU Modula-2.  The following compiler constants can be accessed using
! the â€˜__ATTRIBUTE__â€™ â€˜__BUILTIN__â€™ keywords.  These are not part of the
  Modula-2 language and they may differ depending upon the target
  architecture but they provide a method whereby common libraries can
  interface to a different underlying architecture.
  
!    The built-in constants are: â€˜BITS_PER_UNITâ€™, â€˜BITS_PER_WORDâ€™,
! â€˜BITS_PER_CHARâ€™ and â€˜UNITS_PER_WORDâ€™.  They are integrated into GNU
! Modula-2 by an extension to the â€˜ConstFactorâ€™ rule:
  
       ConstFactor := ConstQualidentOrSet | Number | ConstString |
                      "(" ConstExpression ")" | "NOT" ConstFactor |
*************** Modula-2 by an extension to the 'ConstFa
*** 2626,2664 ****
  
       ConstAttribute := "__ATTRIBUTE__" "__BUILTIN__" "(" "(" Ident ")" ")" =:
  
!    Here is an example taken from the ISO library 'SYSTEM.def':
  
       CONST
          BITSPERLOC    = __ATTRIBUTE__ __BUILTIN__ ((BITS_PER_UNIT)) ;
          LOCSPERWORD   = __ATTRIBUTE__ __BUILTIN__ ((UNITS_PER_WORD)) ;
  
     Built-in functions are transparent to the end user.  All built-in
! functions are declared in 'DEFINITION MODULE's and are imported as and
  when required.  Built-in functions are declared in definition modules by
! using the '__BUILTIN__' keyword.  Here is a section of the ISO library
! 'LongMath.def' which demonstrates this feature.
  
       PROCEDURE __BUILTIN__ sqrt (x: LONGREAL): LONGREAL;
         (* Returns the square root of x *)
  
!    This indicates that the function 'sqrt' will be implemented using the
  gcc built-in maths library.  If gcc cannot utilize the built-in function
! (for example if the programmer requested the address of 'sqrt') then
  code is generated to call the alternative function implemented in the
! 'IMPLEMENTATION' 'MODULE'.
  
!    Sometimes a function exported from the 'DEFINITION' 'MODULE' will
  have a different name from the built-in function within gcc.  In such
  cases the mapping between the GNU Modula-2 function name and the gcc
! name is expressed using the keywords '__ATTRIBUTE__' '__BUILTIN__'
! '((Ident))'.  For example the function 'sqrt' in 'LongMath.def' maps
! onto the gcc built-in function 'sqrtl' and this is expressed as:
  
       PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((sqrtl)) sqrt
                                           (x: LONGREAL) : LONGREAL;
         (* Returns the positive square root of x *)
  
!    The following module 'Builtins.def' enumerates the list of built-in
  functions which can be accessed in GNU Modula-2.  It also serves to
  define the parameter and return value for each function:
  
--- 2626,2664 ----
  
       ConstAttribute := "__ATTRIBUTE__" "__BUILTIN__" "(" "(" Ident ")" ")" =:
  
!    Here is an example taken from the ISO library â€˜SYSTEM.defâ€™:
  
       CONST
          BITSPERLOC    = __ATTRIBUTE__ __BUILTIN__ ((BITS_PER_UNIT)) ;
          LOCSPERWORD   = __ATTRIBUTE__ __BUILTIN__ ((UNITS_PER_WORD)) ;
  
     Built-in functions are transparent to the end user.  All built-in
! functions are declared in â€˜DEFINITION MODULEâ€™s and are imported as and
  when required.  Built-in functions are declared in definition modules by
! using the â€˜__BUILTIN__â€™ keyword.  Here is a section of the ISO library
! â€˜LongMath.defâ€™ which demonstrates this feature.
  
       PROCEDURE __BUILTIN__ sqrt (x: LONGREAL): LONGREAL;
         (* Returns the square root of x *)
  
!    This indicates that the function â€˜sqrtâ€™ will be implemented using the
  gcc built-in maths library.  If gcc cannot utilize the built-in function
! (for example if the programmer requested the address of â€˜sqrtâ€™) then
  code is generated to call the alternative function implemented in the
! â€˜IMPLEMENTATIONâ€™ â€˜MODULEâ€™.
  
!    Sometimes a function exported from the â€˜DEFINITIONâ€™ â€˜MODULEâ€™ will
  have a different name from the built-in function within gcc.  In such
  cases the mapping between the GNU Modula-2 function name and the gcc
! name is expressed using the keywords â€˜__ATTRIBUTE__â€™ â€˜__BUILTIN__â€™
! â€˜((Ident))â€™.  For example the function â€˜sqrtâ€™ in â€˜LongMath.defâ€™ maps
! onto the gcc built-in function â€˜sqrtlâ€™ and this is expressed as:
  
       PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((sqrtl)) sqrt
                                           (x: LONGREAL) : LONGREAL;
         (* Returns the positive square root of x *)
  
!    The following module â€˜Builtins.defâ€™ enumerates the list of built-in
  functions which can be accessed in GNU Modula-2.  It also serves to
  define the parameter and return value for each function:
  
*************** in-line code if optimization flags are p
*** 2918,2924 ****
  advised to utilize the same functions from more generic libraries.  The
  built-in mechanism will be applied to these generic libraries where
  appropriate.  Note for the mathematical routines to be in-lined you need
! to specify the '-ffast-math -O' options.
  
  
  File: m2.info,  Node: The PIM system module,  Next: The ISO system module,  Prev: Built-ins,  Up: Using
--- 2918,2924 ----
  advised to utilize the same functions from more generic libraries.  The
  built-in mechanism will be applied to these generic libraries where
  appropriate.  Note for the mathematical routines to be in-lined you need
! to specify the â€˜-ffast-math -Oâ€™ options.
  
  
  File: m2.info,  Node: The PIM system module,  Next: The ISO system module,  Prev: Built-ins,  Up: Using
*************** File: m2.info,  Node: The PIM system mod
*** 3131,3154 ****
       END SYSTEM.
  
     The different dialects of Modula-2 PIM-[234] and ISO Modula-2 declare
! the function 'SIZE' in different places.  PIM-[34] and ISO Modula-2
! declare 'SIZE' as a pervasive function (declared in the base module).
! PIM-2 defined 'SIZE' in the 'SYSTEM' module (as shown above).
  
     GNU Modula-2 allows users to specify the dialect of Modula-2 by using
! the '-fiso' and '-fpim2' command line switches.
  
!    The data types 'CSIZE_T', 'CSSIZE_T' and 'COFF_T' are also exported
! from the 'SYSTEM' module.  The type 'CSIZE_T' is unsigned and is mapped
! onto the target C data type 'size_t' whereas the type 'CSSIZE_T' is
! mapped onto the signed C data type 'ssize_t'.  The default size for the
! signed type 'COFF_T' is the same as 'CSSIZE_T' and this can be
! overridden by the '-fm2-file-offset-bits=' command line option.
  
     It is anticipated that these should only be used to provide cross
  platform definition modules for C libraries.
  
!    There are also a variety of fixed sized 'INTEGER' and 'CARDINAL'
  types.  The variety of the fixed sized types will depend upon the target
  architecture.
  
--- 3131,3154 ----
       END SYSTEM.
  
     The different dialects of Modula-2 PIM-[234] and ISO Modula-2 declare
! the function â€˜SIZEâ€™ in different places.  PIM-[34] and ISO Modula-2
! declare â€˜SIZEâ€™ as a pervasive function (declared in the base module).
! PIM-2 defined â€˜SIZEâ€™ in the â€˜SYSTEMâ€™ module (as shown above).
  
     GNU Modula-2 allows users to specify the dialect of Modula-2 by using
! the â€˜-fisoâ€™ and â€˜-fpim2â€™ command line switches.
  
!    The data types â€˜CSIZE_Tâ€™, â€˜CSSIZE_Tâ€™ and â€˜COFF_Tâ€™ are also exported
! from the â€˜SYSTEMâ€™ module.  The type â€˜CSIZE_Tâ€™ is unsigned and is mapped
! onto the target C data type â€˜size_tâ€™ whereas the type â€˜CSSIZE_Tâ€™ is
! mapped onto the signed C data type â€˜ssize_tâ€™.  The default size for the
! signed type â€˜COFF_Tâ€™ is the same as â€˜CSSIZE_Tâ€™ and this can be
! overridden by the â€˜-fm2-file-offset-bits=â€™ command line option.
  
     It is anticipated that these should only be used to provide cross
  platform definition modules for C libraries.
  
!    There are also a variety of fixed sized â€˜INTEGERâ€™ and â€˜CARDINALâ€™
  types.  The variety of the fixed sized types will depend upon the target
  architecture.
  
*************** File: m2.info,  Node: The ISO system mod
*** 3415,3431 ****
  
       END SYSTEM.
  
!    The data types 'CSIZE_T', 'CSSIZE_T' and 'COFF_T' are also exported
! from the 'SYSTEM' module.  The type 'CSIZE_T' is unsigned and is mapped
! onto the target C data type 'size_t' whereas the type 'CSSIZE_T' is
! mapped onto the signed C data type 'ssize_t'.  The default size for the
! signed type 'COFF_T' is the same as 'CSSIZE_T' and this can be
! overridden by the '-fm2-file-offset-bits=' command line option.
  
     It is anticipated that these should only be used to provide cross
  platform definition modules for C libraries.
  
!    There are also a variety of fixed sized 'INTEGER' and 'CARDINAL'
  types.  The variety of the fixed sized types will depend upon the target
  architecture.
  
--- 3415,3431 ----
  
       END SYSTEM.
  
!    The data types â€˜CSIZE_Tâ€™, â€˜CSSIZE_Tâ€™ and â€˜COFF_Tâ€™ are also exported
! from the â€˜SYSTEMâ€™ module.  The type â€˜CSIZE_Tâ€™ is unsigned and is mapped
! onto the target C data type â€˜size_tâ€™ whereas the type â€˜CSSIZE_Tâ€™ is
! mapped onto the signed C data type â€˜ssize_tâ€™.  The default size for the
! signed type â€˜COFF_Tâ€™ is the same as â€˜CSSIZE_Tâ€™ and this can be
! overridden by the â€˜-fm2-file-offset-bits=â€™ command line option.
  
     It is anticipated that these should only be used to provide cross
  platform definition modules for C libraries.
  
!    There are also a variety of fixed sized â€˜INTEGERâ€™ and â€˜CARDINALâ€™
  types.  The variety of the fixed sized types will depend upon the target
  architecture.
  
*************** run using:
*** 3475,3483 ****
  
     Finally the results of the testsuite can be emailed to the
  gcc-testresults (https://gcc.gnu.org/lists.html) list using the
! 'test_summary' script found in the gcc source tree:
  
!      $ 'directory to the sources'/contrib/test_summary
  
  
  File: m2.info,  Node: Limitations,  Next: Objectives,  Prev: Regression tests,  Up: Using
--- 3475,3483 ----
  
     Finally the results of the testsuite can be emailed to the
  gcc-testresults (https://gcc.gnu.org/lists.html) list using the
! â€˜test_summaryâ€™ script found in the gcc source tree:
  
!      $ â€˜directory to the sourcesâ€™/contrib/test_summary
  
  
  File: m2.info,  Node: Limitations,  Next: Objectives,  Prev: Regression tests,  Up: Using
*************** File: m2.info,  Node: Objectives,  Next:
*** 3495,3511 ****
  2.27 Objectives
  ===============
  
!    * The intention of GNU Modula-2 is to provide a production Modula-2
       front end to GCC.
  
!    * It should support all Niklaus Wirth PIM Dialects [234] and also ISO
       Modula-2 including a re-implementation of all the ISO modules.
  
!    * There should be an easy interface to C.
  
!    * Exploit the features of GCC.
  
!    * Listen to the requests of the users.
  
  
  File: m2.info,  Node: FAQ,  Next: Community,  Prev: Objectives,  Up: Using
--- 3495,3511 ----
  2.27 Objectives
  ===============
  
!    â€¢ The intention of GNU Modula-2 is to provide a production Modula-2
       front end to GCC.
  
!    â€¢ It should support all Niklaus Wirth PIM Dialects [234] and also ISO
       Modula-2 including a re-implementation of all the ISO modules.
  
!    â€¢ There should be an easy interface to C.
  
!    â€¢ Exploit the features of GCC.
  
!    â€¢ Listen to the requests of the users.
  
  
  File: m2.info,  Node: FAQ,  Next: Community,  Prev: Objectives,  Up: Using
*************** GNU General Public License
*** 3571,3577 ****
  
                          Version 3, 29 June 2007
  
!      Copyright (C) 2007 Free Software Foundation, Inc. <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies of this
       license document, but changing it is not allowed.
--- 3571,3577 ----
  
                          Version 3, 29 June 2007
  
!      Copyright Â© 2007 Free Software Foundation, Inc. <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies of this
       license document, but changing it is not allowed.
*************** mail.
*** 4258,4268 ****
  notice like this when it starts in an interactive mode:
  
       PROGRAM Copyright (C) YEAR NAME OF AUTHOR
!      This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'.
       This is free software, and you are welcome to redistribute it
!      under certain conditions; type 'show c' for details.
  
!    The hypothetical commands 'show w' and 'show c' should show the
  appropriate parts of the General Public License.  Of course, your
  program's commands might be different; for a GUI interface, you would
  use an "about box".
--- 4258,4268 ----
  notice like this when it starts in an interactive mode:
  
       PROGRAM Copyright (C) YEAR NAME OF AUTHOR
!      This program comes with ABSOLUTELY NO WARRANTY; for details type â€˜show wâ€™.
       This is free software, and you are welcome to redistribute it
!      under certain conditions; type â€˜show câ€™ for details.
  
!    The hypothetical commands â€˜show wâ€™ and â€˜show câ€™ should show the
  appropriate parts of the General Public License.  Of course, your
  program's commands might be different; for a GUI interface, you would
  use an "about box".
*************** applications with the library.  If this
*** 4279,4288 ****
  GNU Lesser General Public License instead of this License.  But first,
  please read <https://www.gnu.org/licenses/why-not-lgpl.html>.
  
- * Menu:
- 
- * Contributing::
- 
  
  File: m2.info,  Node: Contributing,  Next: EBNF,  Prev: Copying,  Up: Top
  
--- 4279,4284 ----
*************** modules originally came from the M2F com
*** 4821,4830 ****
  and extended.  They provide a basic interface to the underlying
  operating system via libc.  They also include a number of libraries to
  allow access to compiler built-ins.  Perhaps the largest difference to
! PIM and ISO libraries is the 'DynamicString' module which declares the
! type 'String'.  The heavy use of this opaque data type results in a
! number of equivalent modules that can either handle 'ARRAY OF CHAR' or
! 'String'.
  
     These modules have been extensively tested and are used throughout
  building the GNU Modula-2 compiler.
--- 4817,4826 ----
  and extended.  They provide a basic interface to the underlying
  operating system via libc.  They also include a number of libraries to
  allow access to compiler built-ins.  Perhaps the largest difference to
! PIM and ISO libraries is the â€˜DynamicStringâ€™ module which declares the
! type â€˜Stringâ€™.  The heavy use of this opaque data type results in a
! number of equivalent modules that can either handle â€˜ARRAY OF CHARâ€™ or
! â€˜Stringâ€™.
  
     These modules have been extensively tested and are used throughout
  building the GNU Modula-2 compiler.
*************** File: m2.info,  Node: PIM coroutine supp
*** 12421,12428 ****
  4.3 PIM coroutine support
  =========================
  
! This directory contains a PIM 'SYSTEM' containing the 'PROCESS'
! primitives built on top of 'gthread's.
  * Menu:
  
  * gm2-libs-coroutines/Executive::Executive.def
--- 12417,12424 ----
  4.3 PIM coroutine support
  =========================
  
! This directory contains a PIM â€˜SYSTEMâ€™ containing the â€˜PROCESSâ€™
! primitives built on top of â€˜gthreadâ€™s.
  * Menu:
  
  * gm2-libs-coroutines/Executive::Executive.def
*************** File: m2.info,  Node: M2 ISO Libraries,
*** 12989,13037 ****
  
  This directory contains the ISO definition modules and some
  corresponding implementation modules.  The definition files:
! 'ChanConsts.def', 'CharClass.def', 'ComplexMath.def',
! 'ConvStringLong.def', 'ConvStringReal.def', 'ConvTypes.def',
! 'COROUTINES.def', 'EXCEPTIONS.def', 'GeneralUserExceptions.def',
! 'IOChan.def', 'IOConsts.def', 'IOLink.def', 'IOLink.def',
! 'IOResult.def', 'LongComplexMath.def', 'LongConv.def', 'LongIO.def',
! 'LongMath.def', 'LongStr.def', 'LowLong.def', 'LowReal.def',
! 'M2EXCEPTION.def', 'Processes.def', 'ProgramArgs.def', 'RawIO.def',
! 'RealConv.def', 'RealIO.def', 'RealMath.def', 'RealStr.def',
! 'RndFile.def', 'Semaphores.def', 'SeqFile.def', 'SIOResult.def',
! 'SLongIO.def', 'SRawIO.def', 'SRealIO.def', 'StdChans.def',
! 'STextIO.def', 'Storage.def', 'StreamFile.def', 'Strings.def',
! 'SWholeIO.def', 'SysClock.def', 'SYSTEM.def', 'TERMINATION.def',
! 'TextIO.def', 'WholeConv.def', 'WholeIO.def' and 'WholeStr.def' were
  defined by the International Standard Information technology -
  programming languages BS ISO/IEC 10514-1:1996E Part 1: Modula-2, Base
  Language.
  
!    The Copyright to the definition files 'ChanConsts.def',
! 'CharClass.def', 'ComplexMath.def', 'ConvStringLong.def',
! 'ConvStringReal.def', 'ConvTypes.def', 'COROUTINES.def',
! 'EXCEPTIONS.def', 'GeneralUserExceptions.def', 'IOChan.def',
! 'IOConsts.def', 'IOLink.def', 'IOLink.def', 'IOResult.def',
! 'LongComplexMath.def', 'LongConv.def', 'LongIO.def', 'LongMath.def',
! 'LongStr.def', 'LowLong.def', 'LowReal.def', 'M2EXCEPTION.def',
! 'Processes.def', 'ProgramArgs.def', 'RawIO.def', 'RealConv.def',
! 'RealIO.def', 'RealMath.def', 'RealStr.def', 'RndFile.def',
! 'Semaphores.def', 'SeqFile.def', 'SIOResult.def', 'SLongIO.def',
! 'SRawIO.def', 'SRealIO.def', 'StdChans.def', 'STextIO.def',
! 'Storage.def', 'StreamFile.def', 'Strings.def', 'SWholeIO.def',
! 'SysClock.def', 'SYSTEM.def', 'TERMINATION.def', 'TextIO.def',
! 'WholeConv.def', 'WholeIO.def' and 'WholeStr.def' belong to ISO/IEC
  (International Organization for Standardization and International
  Electrotechnical Commission).  The licence allows them to be distributed
  with the compiler (as described on page 707 of the Information
  technology - Programming languages Part 1: Modula-2, Base Language.  BS
  ISO/IEC 10514-1:1996).
  
!    All implementation modules and 'ClientSocket.def', 'LongWholeIO.def',
! 'M2RTS.def', 'MemStream.def', 'pth.def', 'RandomNumber.def',
! 'RTdata.def', 'RTentity.def', 'RTfio.def', 'RTio.def',
! 'ShortComplexMath.def', 'ShortIO.def', 'ShortWholeIO.def',
! 'SimpleCipher.def', 'SLongWholeIO.def', 'SShortIO.def',
! 'SShortWholeIO.def', 'StringChan.def' and 'wraptime.def' are Copyright
  of the FSF and are held under the GPLv3 with runtime exceptions.
  
     Under Section 7 of GPL version 3, you are granted additional
--- 12985,13033 ----
  
  This directory contains the ISO definition modules and some
  corresponding implementation modules.  The definition files:
! â€˜ChanConsts.defâ€™, â€˜CharClass.defâ€™, â€˜ComplexMath.defâ€™,
! â€˜ConvStringLong.defâ€™, â€˜ConvStringReal.defâ€™, â€˜ConvTypes.defâ€™,
! â€˜COROUTINES.defâ€™, â€˜EXCEPTIONS.defâ€™, â€˜GeneralUserExceptions.defâ€™,
! â€˜IOChan.defâ€™, â€˜IOConsts.defâ€™, â€˜IOLink.defâ€™, â€˜IOLink.defâ€™,
! â€˜IOResult.defâ€™, â€˜LongComplexMath.defâ€™, â€˜LongConv.defâ€™, â€˜LongIO.defâ€™,
! â€˜LongMath.defâ€™, â€˜LongStr.defâ€™, â€˜LowLong.defâ€™, â€˜LowReal.defâ€™,
! â€˜M2EXCEPTION.defâ€™, â€˜Processes.defâ€™, â€˜ProgramArgs.defâ€™, â€˜RawIO.defâ€™,
! â€˜RealConv.defâ€™, â€˜RealIO.defâ€™, â€˜RealMath.defâ€™, â€˜RealStr.defâ€™,
! â€˜RndFile.defâ€™, â€˜Semaphores.defâ€™, â€˜SeqFile.defâ€™, â€˜SIOResult.defâ€™,
! â€˜SLongIO.defâ€™, â€˜SRawIO.defâ€™, â€˜SRealIO.defâ€™, â€˜StdChans.defâ€™,
! â€˜STextIO.defâ€™, â€˜Storage.defâ€™, â€˜StreamFile.defâ€™, â€˜Strings.defâ€™,
! â€˜SWholeIO.defâ€™, â€˜SysClock.defâ€™, â€˜SYSTEM.defâ€™, â€˜TERMINATION.defâ€™,
! â€˜TextIO.defâ€™, â€˜WholeConv.defâ€™, â€˜WholeIO.defâ€™ and â€˜WholeStr.defâ€™ were
  defined by the International Standard Information technology -
  programming languages BS ISO/IEC 10514-1:1996E Part 1: Modula-2, Base
  Language.
  
!    The Copyright to the definition files â€˜ChanConsts.defâ€™,
! â€˜CharClass.defâ€™, â€˜ComplexMath.defâ€™, â€˜ConvStringLong.defâ€™,
! â€˜ConvStringReal.defâ€™, â€˜ConvTypes.defâ€™, â€˜COROUTINES.defâ€™,
! â€˜EXCEPTIONS.defâ€™, â€˜GeneralUserExceptions.defâ€™, â€˜IOChan.defâ€™,
! â€˜IOConsts.defâ€™, â€˜IOLink.defâ€™, â€˜IOLink.defâ€™, â€˜IOResult.defâ€™,
! â€˜LongComplexMath.defâ€™, â€˜LongConv.defâ€™, â€˜LongIO.defâ€™, â€˜LongMath.defâ€™,
! â€˜LongStr.defâ€™, â€˜LowLong.defâ€™, â€˜LowReal.defâ€™, â€˜M2EXCEPTION.defâ€™,
! â€˜Processes.defâ€™, â€˜ProgramArgs.defâ€™, â€˜RawIO.defâ€™, â€˜RealConv.defâ€™,
! â€˜RealIO.defâ€™, â€˜RealMath.defâ€™, â€˜RealStr.defâ€™, â€˜RndFile.defâ€™,
! â€˜Semaphores.defâ€™, â€˜SeqFile.defâ€™, â€˜SIOResult.defâ€™, â€˜SLongIO.defâ€™,
! â€˜SRawIO.defâ€™, â€˜SRealIO.defâ€™, â€˜StdChans.defâ€™, â€˜STextIO.defâ€™,
! â€˜Storage.defâ€™, â€˜StreamFile.defâ€™, â€˜Strings.defâ€™, â€˜SWholeIO.defâ€™,
! â€˜SysClock.defâ€™, â€˜SYSTEM.defâ€™, â€˜TERMINATION.defâ€™, â€˜TextIO.defâ€™,
! â€˜WholeConv.defâ€™, â€˜WholeIO.defâ€™ and â€˜WholeStr.defâ€™ belong to ISO/IEC
  (International Organization for Standardization and International
  Electrotechnical Commission).  The licence allows them to be distributed
  with the compiler (as described on page 707 of the Information
  technology - Programming languages Part 1: Modula-2, Base Language.  BS
  ISO/IEC 10514-1:1996).
  
!    All implementation modules and â€˜ClientSocket.defâ€™, â€˜LongWholeIO.defâ€™,
! â€˜M2RTS.defâ€™, â€˜MemStream.defâ€™, â€˜pth.defâ€™, â€˜RandomNumber.defâ€™,
! â€˜RTdata.defâ€™, â€˜RTentity.defâ€™, â€˜RTfio.defâ€™, â€˜RTio.defâ€™,
! â€˜ShortComplexMath.defâ€™, â€˜ShortIO.defâ€™, â€˜ShortWholeIO.defâ€™,
! â€˜SimpleCipher.defâ€™, â€˜SLongWholeIO.defâ€™, â€˜SShortIO.defâ€™,
! â€˜SShortWholeIO.defâ€™, â€˜StringChan.defâ€™ and â€˜wraptime.defâ€™ are Copyright
  of the FSF and are held under the GPLv3 with runtime exceptions.
  
     Under Section 7 of GPL version 3, you are granted additional
*************** the files COPYING3 and COPYING.RUNTIME r
*** 13044,13052 ****
  <http://www.gnu.org/licenses/>.
  
     Notice that GNU Modula-2 contains additional libraries for
! input/output of 'SHORTREAL', 'SHORTCARD', 'SHORTINT', 'LONGCARD',
! 'LONGINT' data types.  It also provides a 'RandomNumber', 'SimpleCipher'
! and 'ClientSocket' modules as well as low level modules which allow the
  IO libraries to coexist with their PIM counterparts.
  * Menu:
  
--- 13040,13048 ----
  <http://www.gnu.org/licenses/>.
  
     Notice that GNU Modula-2 contains additional libraries for
! input/output of â€˜SHORTREALâ€™, â€˜SHORTCARDâ€™, â€˜SHORTINTâ€™, â€˜LONGCARDâ€™,
! â€˜LONGINTâ€™ data types.  It also provides a â€˜RandomNumberâ€™, â€˜SimpleCipherâ€™
! and â€˜ClientSocketâ€™ modules as well as low level modules which allow the
  IO libraries to coexist with their PIM counterparts.
  * Menu:
  
*************** File: m2.info,  Node: Indices,  Prev: Li
*** 18851,18856 ****
--- 18847,18854 ----
  * alloca:                                Built-ins.           (line 236)
  * alloca <1>:                            gm2-libs/Builtins.   (line 183)
  * alloca <2>:                            gm2-libs/cbuiltin.   (line  52)
+ * alloca_trace:                          Built-ins.           (line 305)
+ * alloca_trace <1>:                      gm2-libs/Builtins.   (line 252)
  * ALLOCATE:                              gm2-libs/Storage.    (line  19)
  * ALLOCATE <1>:                          gm2-libs/SysStorage. (line  21)
  * ALLOCATE <2>:                          gm2-libs-iso/Storage.
*************** File: m2.info,  Node: Indices,  Prev: Li
*** 18858,18865 ****
  * AllocateDeviceId:                      gm2-libs-iso/IOLink. (line  18)
  * AllocateSource:                        gm2-libs-iso/EXCEPTIONS.
                                                                (line  18)
- * alloca_trace:                          Built-ins.           (line 305)
- * alloca_trace <1>:                      gm2-libs/Builtins.   (line 252)
  * Append:                                gm2-libs-iso/Strings.
                                                                (line  55)
  * arccos:                                gm2-libs-iso/ComplexMath.
--- 18856,18861 ----
*************** File: m2.info,  Node: Indices,  Prev: Li
*** 20000,20009 ****
                                                                (line  50)
  * GetOpt:                                gm2-libs/GetOpt.     (line  25)
  * getopt:                                gm2-libs/cgetopt.    (line  29)
- * GetOptLong:                            gm2-libs/GetOpt.     (line  87)
- * GetOptLongOnly:                        gm2-libs/GetOpt.     (line  97)
  * getopt_long:                           gm2-libs/cgetopt.    (line  42)
  * getopt_long_only:                      gm2-libs/cgetopt.    (line  50)
  * getpid:                                gm2-libs/libc.       (line 256)
  * GetPos:                                gm2-libs-log/FileSystem.
                                                                (line 218)
--- 19996,20005 ----
                                                                (line  50)
  * GetOpt:                                gm2-libs/GetOpt.     (line  25)
  * getopt:                                gm2-libs/cgetopt.    (line  29)
  * getopt_long:                           gm2-libs/cgetopt.    (line  42)
  * getopt_long_only:                      gm2-libs/cgetopt.    (line  50)
+ * GetOptLong:                            gm2-libs/GetOpt.     (line  87)
+ * GetOptLongOnly:                        gm2-libs/GetOpt.     (line  97)
  * getpid:                                gm2-libs/libc.       (line 256)
  * GetPos:                                gm2-libs-log/FileSystem.
                                                                (line 218)
*************** File: m2.info,  Node: Indices,  Prev: Li
*** 20748,20760 ****
                                                                (line  25)
  * nModes (const) <2>:                    gm2-libs-iso/LowShort.
                                                                (line  25)
  * NoException:                           gm2-libs/M2RTS.      (line 175)
  * NoException <1>:                       gm2-libs-iso/M2RTS.  (line 183)
  * NonVarFPSection (ebnf):                EBNF.                (line 424)
  * NoReturnException:                     gm2-libs/M2RTS.      (line 166)
  * NoReturnException <1>:                 gm2-libs-iso/M2RTS.  (line 174)
  * NormalPart (ebnf):                     EBNF.                (line 385)
- * no_argument (const):                   gm2-libs/GetOpt.     (line  12)
  * np (const):                            gm2-libs/ASCII.      (line  24)
  * nul (const):                           gm2-libs/ASCII.      (line  21)
  * NullChan:                              gm2-libs-iso/StdChans.
--- 20744,20756 ----
                                                                (line  25)
  * nModes (const) <2>:                    gm2-libs-iso/LowShort.
                                                                (line  25)
+ * no_argument (const):                   gm2-libs/GetOpt.     (line  12)
  * NoException:                           gm2-libs/M2RTS.      (line 175)
  * NoException <1>:                       gm2-libs-iso/M2RTS.  (line 183)
  * NonVarFPSection (ebnf):                EBNF.                (line 424)
  * NoReturnException:                     gm2-libs/M2RTS.      (line 166)
  * NoReturnException <1>:                 gm2-libs-iso/M2RTS.  (line 174)
  * NormalPart (ebnf):                     EBNF.                (line 385)
  * np (const):                            gm2-libs/ASCII.      (line  24)
  * nul (const):                           gm2-libs/ASCII.      (line  21)
  * NullChan:                              gm2-libs-iso/StdChans.
*************** File: m2.info,  Node: Indices,  Prev: Li
*** 21273,21282 ****
  * Resume:                                gm2-libs-coroutines/Executive.
                                                                (line  46)
  * RetryStatement (ebnf):                 EBNF.                (line 286)
- * ReturnException:                       gm2-libs/M2RTS.      (line 153)
- * ReturnException <1>:                   gm2-libs-iso/M2RTS.  (line 161)
  * return_address:                        Built-ins.           (line 298)
  * return_address <1>:                    gm2-libs/Builtins.   (line 245)
  * ReverseIndex:                          gm2-libs/DynamicStrings.
                                                                (line 201)
  * Rewrite:                               gm2-libs-iso/MemStream.
--- 21269,21278 ----
  * Resume:                                gm2-libs-coroutines/Executive.
                                                                (line  46)
  * RetryStatement (ebnf):                 EBNF.                (line 286)
  * return_address:                        Built-ins.           (line 298)
  * return_address <1>:                    gm2-libs/Builtins.   (line 245)
+ * ReturnException:                       gm2-libs/M2RTS.      (line 153)
+ * ReturnException <1>:                   gm2-libs-iso/M2RTS.  (line 161)
  * ReverseIndex:                          gm2-libs/DynamicStrings.
                                                                (line 201)
  * Rewrite:                               gm2-libs-iso/MemStream.
*************** File: m2.info,  Node: Indices,  Prev: Li
*** 21911,21916 ****
--- 21907,21913 ----
  * TicksPerSecond (const):                gm2-libs-coroutines/TimerHandler.
                                                                (line  16)
  * time:                                  gm2-libs/libc.       (line 463)
+ * time_t (type):                         gm2-libs/libc.       (line  32)
  * timeb (type):                          gm2-libs/libc.       (line  49)
  * timespec (type):                       gm2-libs-iso/wrapclock.
                                                                (line  11)
*************** File: m2.info,  Node: Indices,  Prev: Li
*** 21925,21931 ****
                                                                (line  23)
  * timezone (type):                       gm2-libs-iso/wraptime.
                                                                (line  19)
- * time_t (type):                         gm2-libs/libc.       (line  32)
  * tm (type):                             gm2-libs/libc.       (line  35)
  * tm (type) <1>:                         gm2-libs-iso/wraptime.
                                                                (line  20)
--- 21922,21927 ----
*************** File: m2.info,  Node: Indices,  Prev: Li
*** 22292,22521 ****
  
  
  Tag Table:
! Node: Top1081
! Node: Overview1561
! Node: What is GNU Modula-21919
! Ref: What is GNU Modula-2-Footnote-12393
! Node: Why use GNU Modula-22964
! Node: Development4538
! Node: Features4784
! Node: Using6390
! Node: Example usage8339
! Ref: Example usage-Footnote-19453
! Node: Compiler options9702
! Node: Linking24704
! Node: Elementary data types27721
! Node: Standard procedures29156
! Node: High procedure function37882
! Node: Dialect40775
! Node: Exceptions44126
! Ref: Exceptions-Footnote-145235
! Node: Semantic checking45383
! Node: Extensions49343
! Node: Type compatibility57199
! Node: Exception handling63539
! Node: Unbounded by reference66335
! Node: Building a shared library70306
! Node: Interface for Python71756
! Node: Producing a Python module76822
! Node: Interface to C81824
! Node: Assembly language84886
! Node: Alignment86896
! Node: Packed89383
! Node: Built-ins92056
! Node: The PIM system module106718
! Node: The ISO system module115344
! Node: Release map125946
! Node: Documentation126493
! Node: Regression tests126758
! Node: Limitations127573
! Node: Objectives127883
! Node: FAQ128357
! Node: Community128798
! Node: Other languages129149
! Node: License129393
! Node: Copying130311
! Node: Contributing167860
! Node: EBNF168565
! Node: Libraries183397
! Node: Base libraries183825
! Node: gm2-libs/ARRAYOFCHAR186755
! Node: gm2-libs/ASCII187164
! Node: gm2-libs/Args188286
! Node: gm2-libs/Assertion188882
! Node: gm2-libs/Break189293
! Node: gm2-libs/Builtins189499
! Node: gm2-libs/CFileSysOp201185
! Node: gm2-libs/CHAR202756
! Node: gm2-libs/COROUTINES203134
! Node: gm2-libs/CmdArgs203507
! Node: gm2-libs/Debug204210
! Node: gm2-libs/DynamicStrings205068
! Node: gm2-libs/Environment215818
! Node: gm2-libs/FIO216828
! Node: gm2-libs/FileSysOp226069
! Node: gm2-libs/FormatStrings226787
! Node: gm2-libs/FpuIO228459
! Node: gm2-libs/GetOpt229877
! Node: gm2-libs/IO233335
! Node: gm2-libs/Indexing235066
! Node: gm2-libs/LMathLib0238029
! Node: gm2-libs/LegacyReal238800
! Node: gm2-libs/M2Dependent239075
! Node: gm2-libs/M2EXCEPTION241607
! Node: gm2-libs/M2RTS242857
! Node: gm2-libs/MathLib0250565
! Node: gm2-libs/MemUtils251266
! Node: gm2-libs/NumberIO251867
! Node: gm2-libs/OptLib253754
! Node: gm2-libs/PushBackInput255652
! Node: gm2-libs/RTExceptions258266
! Node: gm2-libs/RTint262913
! Node: gm2-libs/SArgs265844
! Node: gm2-libs/SCmdArgs266604
! Node: gm2-libs/SEnvironment267335
! Node: gm2-libs/SFIO268325
! Node: gm2-libs/SMathLib0270713
! Node: gm2-libs/SYSTEM271491
! Node: gm2-libs/Scan279035
! Node: gm2-libs/Selective280921
! Node: gm2-libs/StdIO282816
! Node: gm2-libs/Storage284650
! Node: gm2-libs/StrCase285902
! Node: gm2-libs/StrIO287132
! Node: gm2-libs/StrLib287907
! Node: gm2-libs/String289521
! Node: gm2-libs/StringConvert289888
! Node: gm2-libs/StringFileSysOp301187
! Node: gm2-libs/SysExceptions301824
! Node: gm2-libs/SysStorage302810
! Node: gm2-libs/TimeString304508
! Node: gm2-libs/UnixArgs304927
! Node: gm2-libs/cbuiltin305353
! Node: gm2-libs/cgetopt313837
! Node: gm2-libs/cxxabi316619
! Node: gm2-libs/dtoa317172
! Node: gm2-libs/errno318257
! Node: gm2-libs/gdbif318675
! Node: gm2-libs/ldtoa319668
! Node: gm2-libs/libc320818
! Node: gm2-libs/libm334690
! Node: gm2-libs/sckt337674
! Node: gm2-libs/termios341472
! Node: gm2-libs/wrapc346487
! Node: PIM and Logitech 3.0 Compatible349822
! Node: gm2-libs-log/BitBlockOps352580
! Node: gm2-libs-log/BitByteOps356482
! Node: gm2-libs-log/BitWordOps359372
! Node: gm2-libs-log/BlockOps362218
! Node: gm2-libs-log/Break364390
! Node: gm2-libs-log/CardinalIO365401
! Node: gm2-libs-log/Conversions369219
! Node: gm2-libs-log/DebugPMD370602
! Node: gm2-libs-log/DebugTrace370864
! Node: gm2-libs-log/Delay371128
! Node: gm2-libs-log/Display371547
! Node: gm2-libs-log/ErrorCode372076
! Node: gm2-libs-log/FileSystem372952
! Node: gm2-libs-log/FloatingUtilities379733
! Node: gm2-libs-log/InOut381484
! Node: gm2-libs-log/Keyboard385830
! Node: gm2-libs-log/LongIO386489
! Node: gm2-libs-log/NumberConversion386941
! Node: gm2-libs-log/Random387272
! Node: gm2-libs-log/RealConversions388648
! Node: gm2-libs-log/RealInOut393529
! Node: gm2-libs-log/Strings396284
! Node: gm2-libs-log/Termbase398170
! Node: gm2-libs-log/Terminal400716
! Node: gm2-libs-log/TimeDate402232
! Node: PIM coroutine support404192
! Node: gm2-libs-coroutines/Executive404680
! Node: gm2-libs-coroutines/KeyBoardLEDs408329
! Node: gm2-libs-coroutines/SYSTEM409294
! Node: gm2-libs-coroutines/TimerHandler419814
! Node: M2 ISO Libraries422237
! Node: gm2-libs-iso/COROUTINES429043
! Node: gm2-libs-iso/ChanConsts432892
! Node: gm2-libs-iso/CharClass436243
! Node: gm2-libs-iso/ClientSocket437314
! Node: gm2-libs-iso/ComplexMath438419
! Node: gm2-libs-iso/ConvStringLong440744
! Node: gm2-libs-iso/ConvStringReal442064
! Node: gm2-libs-iso/ConvStringShort443376
! Node: gm2-libs-iso/ConvTypes444702
! Node: gm2-libs-iso/EXCEPTIONS446082
! Node: gm2-libs-iso/ErrnoCategory448243
! Node: gm2-libs-iso/GeneralUserExceptions449713
! Node: gm2-libs-iso/IOChan450910
! Node: gm2-libs-iso/IOChanUtils458401
! Node: gm2-libs-iso/IOConsts459248
! Node: gm2-libs-iso/IOLink460030
! Node: gm2-libs-iso/IOResult465853
! Node: gm2-libs-iso/LongComplexMath466885
! Node: gm2-libs-iso/LongConv469198
! Node: gm2-libs-iso/LongIO471375
! Node: gm2-libs-iso/LongMath473847
! Node: gm2-libs-iso/LongStr475706
! Node: gm2-libs-iso/LongWholeIO478292
! Node: gm2-libs-iso/LowLong480147
! Node: gm2-libs-iso/LowReal483721
! Node: gm2-libs-iso/LowShort487118
! Node: gm2-libs-iso/M2EXCEPTION490739
! Node: gm2-libs-iso/M2RTS491957
! Node: gm2-libs-iso/MemStream499757
! Node: gm2-libs-iso/Preemptive503029
! Node: gm2-libs-iso/Processes503530
! Node: gm2-libs-iso/ProgramArgs509345
! Node: gm2-libs-iso/RTco510414
! Node: gm2-libs-iso/RTdata512088
! Node: gm2-libs-iso/RTentity513375
! Node: gm2-libs-iso/RTfio514488
! Node: gm2-libs-iso/RTgen517114
! Node: gm2-libs-iso/RTgenif520079
! Node: gm2-libs-iso/RTio524059
! Node: gm2-libs-iso/RandomNumber525707
! Node: gm2-libs-iso/RawIO528126
! Node: gm2-libs-iso/RealConv529023
! Node: gm2-libs-iso/RealIO531136
! Node: gm2-libs-iso/RealMath533582
! Node: gm2-libs-iso/RealStr535356
! Node: gm2-libs-iso/RndFile537909
! Node: gm2-libs-iso/SIOResult542667
! Node: gm2-libs-iso/SLongIO543695
! Node: gm2-libs-iso/SLongWholeIO546119
! Node: gm2-libs-iso/SRawIO547929
! Node: gm2-libs-iso/SRealIO548813
! Node: gm2-libs-iso/SShortIO551125
! Node: gm2-libs-iso/SShortWholeIO553559
! Node: gm2-libs-iso/STextIO555380
! Node: gm2-libs-iso/SWholeIO557780
! Node: gm2-libs-iso/SYSTEM559570
! Node: gm2-libs-iso/Semaphores569511
! Node: gm2-libs-iso/SeqFile571126
! Node: gm2-libs-iso/ShortComplexMath575678
! Node: gm2-libs-iso/ShortConv578029
! Node: gm2-libs-iso/ShortIO580165
! Node: gm2-libs-iso/ShortMath582649
! Node: gm2-libs-iso/ShortStr584535
! Node: gm2-libs-iso/ShortWholeIO587133
! Node: gm2-libs-iso/SimpleCipher589003
! Node: gm2-libs-iso/StdChans589993
! Node: gm2-libs-iso/Storage591990
! Node: gm2-libs-iso/StreamFile594076
! Node: gm2-libs-iso/StringChan596136
! Node: gm2-libs-iso/Strings597351
! Node: gm2-libs-iso/SysClock604831
! Node: gm2-libs-iso/TERMINATION606634
! Node: gm2-libs-iso/TermFile607247
! Node: gm2-libs-iso/TextIO609542
! Node: gm2-libs-iso/TextUtil612170
! Node: gm2-libs-iso/WholeConv612931
! Node: gm2-libs-iso/WholeIO615461
! Node: gm2-libs-iso/WholeStr617299
! Node: gm2-libs-iso/wrapclock619090
! Node: gm2-libs-iso/wrapsock622707
! Node: gm2-libs-iso/wraptime625301
! Node: Indices629674
  
  End Tag Table
--- 22288,22522 ----
  
  
  Tag Table:
! Node: Top1079
! Node: Overview1559
! Node: What is GNU Modula-21917
! Ref: What is GNU Modula-2-Footnote-12391
! Node: Why use GNU Modula-22962
! Node: Development4548
! Node: Features4794
! Node: Using6478
! Node: Example usage8427
! Ref: Example usage-Footnote-19573
! Node: Compiler options9838
! Node: Linking25492
! Node: Elementary data types28625
! Node: Standard procedures30120
! Node: High procedure function38962
! Node: Dialect41947
! Node: Exceptions45358
! Ref: Exceptions-Footnote-146483
! Node: Semantic checking46639
! Node: Extensions50627
! Node: Type compatibility58611
! Node: Exception handling65107
! Node: Unbounded by reference67911
! Node: Building a shared library71982
! Node: Interface for Python73468
! Node: Producing a Python module78634
! Node: Interface to C83724
! Node: Assembly language86866
! Node: Alignment88896
! Node: Packed91431
! Node: Built-ins94152
! Node: The PIM system module108914
! Node: The ISO system module117616
! Node: Release map128270
! Node: Documentation128817
! Node: Regression tests129082
! Node: Limitations129905
! Node: Objectives130215
! Node: FAQ130699
! Node: Community131140
! Node: Other languages131491
! Node: License131735
! Node: Copying132653
! Node: Contributing170190
! Node: EBNF170895
! Node: Libraries185727
! Node: Base libraries186155
! Node: gm2-libs/ARRAYOFCHAR189101
! Node: gm2-libs/ASCII189510
! Node: gm2-libs/Args190632
! Node: gm2-libs/Assertion191228
! Node: gm2-libs/Break191639
! Node: gm2-libs/Builtins191845
! Node: gm2-libs/CFileSysOp203531
! Node: gm2-libs/CHAR205102
! Node: gm2-libs/COROUTINES205480
! Node: gm2-libs/CmdArgs205853
! Node: gm2-libs/Debug206556
! Node: gm2-libs/DynamicStrings207414
! Node: gm2-libs/Environment218164
! Node: gm2-libs/FIO219174
! Node: gm2-libs/FileSysOp228415
! Node: gm2-libs/FormatStrings229133
! Node: gm2-libs/FpuIO230805
! Node: gm2-libs/GetOpt232223
! Node: gm2-libs/IO235681
! Node: gm2-libs/Indexing237412
! Node: gm2-libs/LMathLib0240375
! Node: gm2-libs/LegacyReal241146
! Node: gm2-libs/M2Dependent241421
! Node: gm2-libs/M2EXCEPTION243953
! Node: gm2-libs/M2RTS245203
! Node: gm2-libs/MathLib0252911
! Node: gm2-libs/MemUtils253612
! Node: gm2-libs/NumberIO254213
! Node: gm2-libs/OptLib256100
! Node: gm2-libs/PushBackInput257998
! Node: gm2-libs/RTExceptions260612
! Node: gm2-libs/RTint265259
! Node: gm2-libs/SArgs268190
! Node: gm2-libs/SCmdArgs268950
! Node: gm2-libs/SEnvironment269681
! Node: gm2-libs/SFIO270671
! Node: gm2-libs/SMathLib0273059
! Node: gm2-libs/SYSTEM273837
! Node: gm2-libs/Scan281381
! Node: gm2-libs/Selective283267
! Node: gm2-libs/StdIO285162
! Node: gm2-libs/Storage286996
! Node: gm2-libs/StrCase288248
! Node: gm2-libs/StrIO289478
! Node: gm2-libs/StrLib290253
! Node: gm2-libs/String291867
! Node: gm2-libs/StringConvert292234
! Node: gm2-libs/StringFileSysOp303533
! Node: gm2-libs/SysExceptions304170
! Node: gm2-libs/SysStorage305156
! Node: gm2-libs/TimeString306854
! Node: gm2-libs/UnixArgs307273
! Node: gm2-libs/cbuiltin307699
! Node: gm2-libs/cgetopt316183
! Node: gm2-libs/cxxabi318965
! Node: gm2-libs/dtoa319518
! Node: gm2-libs/errno320603
! Node: gm2-libs/gdbif321021
! Node: gm2-libs/ldtoa322014
! Node: gm2-libs/libc323164
! Node: gm2-libs/libm337036
! Node: gm2-libs/sckt340020
! Node: gm2-libs/termios343818
! Node: gm2-libs/wrapc348833
! Node: PIM and Logitech 3.0 Compatible352168
! Node: gm2-libs-log/BitBlockOps354926
! Node: gm2-libs-log/BitByteOps358828
! Node: gm2-libs-log/BitWordOps361718
! Node: gm2-libs-log/BlockOps364564
! Node: gm2-libs-log/Break366736
! Node: gm2-libs-log/CardinalIO367747
! Node: gm2-libs-log/Conversions371565
! Node: gm2-libs-log/DebugPMD372948
! Node: gm2-libs-log/DebugTrace373210
! Node: gm2-libs-log/Delay373474
! Node: gm2-libs-log/Display373893
! Node: gm2-libs-log/ErrorCode374422
! Node: gm2-libs-log/FileSystem375298
! Node: gm2-libs-log/FloatingUtilities382079
! Node: gm2-libs-log/InOut383830
! Node: gm2-libs-log/Keyboard388176
! Node: gm2-libs-log/LongIO388835
! Node: gm2-libs-log/NumberConversion389287
! Node: gm2-libs-log/Random389618
! Node: gm2-libs-log/RealConversions390994
! Node: gm2-libs-log/RealInOut395875
! Node: gm2-libs-log/Strings398630
! Node: gm2-libs-log/Termbase400516
! Node: gm2-libs-log/Terminal403062
! Node: gm2-libs-log/TimeDate404578
! Node: PIM coroutine support406538
! Node: gm2-libs-coroutines/Executive407038
! Node: gm2-libs-coroutines/KeyBoardLEDs410687
! Node: gm2-libs-coroutines/SYSTEM411652
! Node: gm2-libs-coroutines/TimerHandler422172
! Node: M2 ISO Libraries424595
! Node: gm2-libs-iso/COROUTINES431901
! Node: gm2-libs-iso/ChanConsts435750
! Node: gm2-libs-iso/CharClass439101
! Node: gm2-libs-iso/ClientSocket440172
! Node: gm2-libs-iso/ComplexMath441277
! Node: gm2-libs-iso/ConvStringLong443602
! Node: gm2-libs-iso/ConvStringReal444922
! Node: gm2-libs-iso/ConvStringShort446234
! Node: gm2-libs-iso/ConvTypes447560
! Node: gm2-libs-iso/EXCEPTIONS448940
! Node: gm2-libs-iso/ErrnoCategory451101
! Node: gm2-libs-iso/GeneralUserExceptions452571
! Node: gm2-libs-iso/IOChan453768
! Node: gm2-libs-iso/IOChanUtils461259
! Node: gm2-libs-iso/IOConsts462106
! Node: gm2-libs-iso/IOLink462888
! Node: gm2-libs-iso/IOResult468711
! Node: gm2-libs-iso/LongComplexMath469743
! Node: gm2-libs-iso/LongConv472056
! Node: gm2-libs-iso/LongIO474233
! Node: gm2-libs-iso/LongMath476705
! Node: gm2-libs-iso/LongStr478564
! Node: gm2-libs-iso/LongWholeIO481150
! Node: gm2-libs-iso/LowLong483005
! Node: gm2-libs-iso/LowReal486579
! Node: gm2-libs-iso/LowShort489976
! Node: gm2-libs-iso/M2EXCEPTION493597
! Node: gm2-libs-iso/M2RTS494815
! Node: gm2-libs-iso/MemStream502615
! Node: gm2-libs-iso/Preemptive505887
! Node: gm2-libs-iso/Processes506388
! Node: gm2-libs-iso/ProgramArgs512203
! Node: gm2-libs-iso/RTco513272
! Node: gm2-libs-iso/RTdata514946
! Node: gm2-libs-iso/RTentity516233
! Node: gm2-libs-iso/RTfio517346
! Node: gm2-libs-iso/RTgen519972
! Node: gm2-libs-iso/RTgenif522937
! Node: gm2-libs-iso/RTio526917
! Node: gm2-libs-iso/RandomNumber528565
! Node: gm2-libs-iso/RawIO530984
! Node: gm2-libs-iso/RealConv531881
! Node: gm2-libs-iso/RealIO533994
! Node: gm2-libs-iso/RealMath536440
! Node: gm2-libs-iso/RealStr538214
! Node: gm2-libs-iso/RndFile540767
! Node: gm2-libs-iso/SIOResult545525
! Node: gm2-libs-iso/SLongIO546553
! Node: gm2-libs-iso/SLongWholeIO548977
! Node: gm2-libs-iso/SRawIO550787
! Node: gm2-libs-iso/SRealIO551671
! Node: gm2-libs-iso/SShortIO553983
! Node: gm2-libs-iso/SShortWholeIO556417
! Node: gm2-libs-iso/STextIO558238
! Node: gm2-libs-iso/SWholeIO560638
! Node: gm2-libs-iso/SYSTEM562428
! Node: gm2-libs-iso/Semaphores572369
! Node: gm2-libs-iso/SeqFile573984
! Node: gm2-libs-iso/ShortComplexMath578536
! Node: gm2-libs-iso/ShortConv580887
! Node: gm2-libs-iso/ShortIO583023
! Node: gm2-libs-iso/ShortMath585507
! Node: gm2-libs-iso/ShortStr587393
! Node: gm2-libs-iso/ShortWholeIO589991
! Node: gm2-libs-iso/SimpleCipher591861
! Node: gm2-libs-iso/StdChans592851
! Node: gm2-libs-iso/Storage594848
! Node: gm2-libs-iso/StreamFile596934
! Node: gm2-libs-iso/StringChan598994
! Node: gm2-libs-iso/Strings600209
! Node: gm2-libs-iso/SysClock607689
! Node: gm2-libs-iso/TERMINATION609492
! Node: gm2-libs-iso/TermFile610105
! Node: gm2-libs-iso/TextIO612400
! Node: gm2-libs-iso/TextUtil615028
! Node: gm2-libs-iso/WholeConv615789
! Node: gm2-libs-iso/WholeIO618319
! Node: gm2-libs-iso/WholeStr620157
! Node: gm2-libs-iso/wrapclock621948
! Node: gm2-libs-iso/wrapsock625565
! Node: gm2-libs-iso/wraptime628159
! Node: Indices632532
  
  End Tag Table
+ 
+ 
+ Local Variables:
+ coding: utf-8
+ End:
diff -Nrcpad gcc-15.2.0/gcc/doc/sourcebuild.texi gcc-15.3.0/gcc/doc/sourcebuild.texi
*** gcc-15.2.0/gcc/doc/sourcebuild.texi	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/doc/sourcebuild.texi	Fri Jun 12 06:09:06 2026
*************** at plain @option{-O2}.
*** 1975,1980 ****
--- 1975,1983 ----
  @item tls
  Target supports thread-local storage.
  
+ @item tls_link
+ Target supports linking TLS executables.
+ 
  @item tls_native
  Target supports native (rather than emulated) thread-local storage.
  
*************** whether it does so by default).
*** 2379,2384 ****
--- 2382,2390 ----
  @item aarch64_sve2p1_hw
  AArch64 target that is able to generate and execute SVE2.1 code (regardless of
  whether it does so by default).
+ @item aarch64_sme_hw
+ AArch64 target that is able to generate and execute SME code (regardless of
+ whether it does so by default).
  
  @item aarch64_fjcvtzs_hw
  AArch64 target that is able to generate and execute armv8.3-a FJCVTZS
diff -Nrcpad gcc-15.2.0/gcc/dwarf2codeview.cc gcc-15.3.0/gcc/dwarf2codeview.cc
*** gcc-15.2.0/gcc/dwarf2codeview.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/dwarf2codeview.cc	Fri Jun 12 06:09:06 2026
*************** get_type_num_array_type (dw_die_ref type
*** 6748,6757 ****
--- 6748,6770 ----
    c = first_child;
    do
      {
+       dw_attr_node *upper_bound;
+ 
        c = dw_get_die_sib (c);
        if (dw_get_die_tag (c) != DW_TAG_subrange_type)
  	continue;
  
+       /* Check that each DW_TAG_subrange_type DIE has a DW_AT_upper_bound
+ 	 attribute that's an unsigned integer.  This is the case for C and
+ 	 C++, but not for other languages such as Ada.  */
+       upper_bound = get_AT (c, DW_AT_upper_bound);
+       if (!upper_bound)
+ 	return 0;
+ 
+       if (AT_class (upper_bound) != dw_val_class_unsigned_const
+ 	  && AT_class (upper_bound) != dw_val_class_unsigned_const_implicit)
+ 	return 0;
+ 
        dimensions++;
      }
    while (c != first_child);
diff -Nrcpad gcc-15.2.0/gcc/dwarf2out.cc gcc-15.3.0/gcc/dwarf2out.cc
*** gcc-15.2.0/gcc/dwarf2out.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/dwarf2out.cc	Fri Jun 12 06:09:06 2026
*************** equate_type_number_to_die (tree type, dw
*** 5942,5948 ****
  static dw_die_ref maybe_create_die_with_external_ref (tree);
  struct GTY(()) sym_off_pair
  {
!   const char * GTY((skip)) sym;
    unsigned HOST_WIDE_INT off;
  };
  static GTY(()) hash_map<tree, sym_off_pair> *external_die_map;
--- 5942,5948 ----
  static dw_die_ref maybe_create_die_with_external_ref (tree);
  struct GTY(()) sym_off_pair
  {
!   const char *sym;
    unsigned HOST_WIDE_INT off;
  };
  static GTY(()) hash_map<tree, sym_off_pair> *external_die_map;
*************** gen_array_type_die (tree type, dw_die_re
*** 22721,22726 ****
--- 22721,22748 ----
  		      && TYPE_REVERSE_STORAGE_ORDER (type),
  		      context_die);
  
+   /* Add bit stride information to boolean vectors of single bits so that
+      elements can be correctly read and displayed by a debugger.  */
+   if (VECTOR_BOOLEAN_TYPE_P (type))
+     {
+       enum machine_mode tmode = TYPE_MODE_RAW (type);
+       if (GET_MODE_CLASS (tmode) == MODE_VECTOR_BOOL)
+ 	{
+ 	  /* Calculate bit-size of element based on mnode.  */
+ 	  poly_uint16 bit_size = exact_div (GET_MODE_BITSIZE (tmode),
+ 					    GET_MODE_NUNITS (tmode));
+ 	  /* Set bit stride in the array type DIE.  */
+ 	  add_AT_unsigned (array_die, DW_AT_bit_stride, bit_size.coeffs[0]);
+ 	  /* Find DIE corresponding to the element type so that we could
+ 	     add DW_AT_bit_size to it.  */
+ 	  dw_die_ref elem_die = get_AT_ref (array_die, DW_AT_type);
+ 	  /* Avoid adding DW_AT_bit_size twice.  */
+ 	  if (get_AT (elem_die, DW_AT_bit_size) == NULL)
+ 	    add_AT_unsigned (elem_die, DW_AT_bit_size,
+ 			     TYPE_PRECISION (element_type));
+ 	}
+     }
+ 
    add_gnat_descriptive_type_attribute (array_die, type, context_die);
    if (TYPE_ARTIFICIAL (type))
      add_AT_flag (array_die, DW_AT_artificial, 1);
*************** dwarf2out_abstract_function (tree decl)
*** 23451,23456 ****
--- 23473,23479 ----
      }
  
    if (DECL_DECLARED_INLINE_P (decl)
+       && !DECL_ARTIFICIAL (decl)
        && lookup_attribute ("artificial", DECL_ATTRIBUTES (decl)))
      add_AT_flag (old_die, DW_AT_artificial, 1);
  
diff -Nrcpad gcc-15.2.0/gcc/expr.cc gcc-15.3.0/gcc/expr.cc
*** gcc-15.2.0/gcc/expr.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/expr.cc	Fri Jun 12 06:09:06 2026
*************** string_cst_read_str (void *data, void *,
*** 6538,6543 ****
--- 6538,6568 ----
    return c_readstr (TREE_STRING_POINTER (str) + offset, mode, false);
  }
  
+ /* Helper function for store_expr storing of RAW_DATA_CST.  */
+ 
+ static rtx
+ raw_data_cst_read_str (void *data, void *, HOST_WIDE_INT offset,
+ 		       fixed_size_mode mode)
+ {
+   tree cst = (tree) data;
+ 
+   gcc_assert (offset >= 0);
+   if (offset >= RAW_DATA_LENGTH (cst))
+     return const0_rtx;
+ 
+   if ((unsigned HOST_WIDE_INT) offset + GET_MODE_SIZE (mode)
+       > (unsigned HOST_WIDE_INT) RAW_DATA_LENGTH (cst))
+     {
+       char *p = XALLOCAVEC (char, GET_MODE_SIZE (mode));
+       size_t l = RAW_DATA_LENGTH (cst) - offset;
+       memcpy (p, RAW_DATA_POINTER (cst) + offset, l);
+       memset (p + l, '\0', GET_MODE_SIZE (mode) - l);
+       return c_readstr (p, mode, false);
+     }
+ 
+   return c_readstr (RAW_DATA_POINTER (cst) + offset, mode, false);
+ }
+ 
  /* Generate code for computing expression EXP,
     and storing the value into TARGET.
  
*************** store_constructor (tree exp, rtx target,
*** 7635,7641 ****
      case ARRAY_TYPE:
        {
  	tree value, index;
! 	unsigned HOST_WIDE_INT i;
  	bool need_to_clear;
  	tree domain;
  	tree elttype = TREE_TYPE (type);
--- 7660,7666 ----
      case ARRAY_TYPE:
        {
  	tree value, index;
! 	unsigned HOST_WIDE_INT i, j = 0;
  	bool need_to_clear;
  	tree domain;
  	tree elttype = TREE_TYPE (type);
*************** store_constructor (tree exp, rtx target,
*** 7697,7702 ****
--- 7722,7729 ----
  		    this_node_count = (tree_to_uhwi (hi_index)
  				       - tree_to_uhwi (lo_index) + 1);
  		  }
+ 		else if (TREE_CODE (value) == RAW_DATA_CST)
+ 		  this_node_count = RAW_DATA_LENGTH (value);
  		else
  		  this_node_count = 1;
  
*************** store_constructor (tree exp, rtx target,
*** 7739,7745 ****
  	    rtx xtarget = target;
  
  	    if (cleared && initializer_zerop (value))
! 	      continue;
  
  	    mode = TYPE_MODE (elttype);
  	    if (mode != BLKmode)
--- 7766,7776 ----
  	    rtx xtarget = target;
  
  	    if (cleared && initializer_zerop (value))
! 	      {
! 		if (TREE_CODE (value) == RAW_DATA_CST)
! 		  j += RAW_DATA_LENGTH (value) - 1;
! 		continue;
! 	      }
  
  	    mode = TYPE_MODE (elttype);
  	    if (mode != BLKmode)
*************** store_constructor (tree exp, rtx target,
*** 7755,7760 ****
--- 7786,7793 ----
  		HOST_WIDE_INT lo, hi, count;
  		tree position;
  
+ 		gcc_assert (TREE_CODE (value) != RAW_DATA_CST);
+ 
  		/* If the range is constant and "small", unroll the loop.  */
  		if (const_bounds_p
  		    && tree_fits_shwi_p (lo_index)
*************** store_constructor (tree exp, rtx target,
*** 7854,7859 ****
--- 7887,7893 ----
  	      {
  		tree position;
  
+ 		gcc_assert (TREE_CODE (value) != RAW_DATA_CST);
  		if (index == 0)
  		  index = ssize_int (1);
  
*************** store_constructor (tree exp, rtx target,
*** 7880,7886 ****
  		  bitpos = ((tree_to_shwi (index) - minelt)
  			    * tree_to_uhwi (TYPE_SIZE (elttype)));
  		else
! 		  bitpos = (i * tree_to_uhwi (TYPE_SIZE (elttype)));
  
  		if (MEM_P (target) && !MEM_KEEP_ALIAS_SET_P (target)
  		    && TREE_CODE (type) == ARRAY_TYPE
--- 7914,7920 ----
  		  bitpos = ((tree_to_shwi (index) - minelt)
  			    * tree_to_uhwi (TYPE_SIZE (elttype)));
  		else
! 		  bitpos = ((i + j) * tree_to_uhwi (TYPE_SIZE (elttype)));
  
  		if (MEM_P (target) && !MEM_KEEP_ALIAS_SET_P (target)
  		    && TREE_CODE (type) == ARRAY_TYPE
*************** store_constructor (tree exp, rtx target,
*** 7889,7898 ****
  		    target = copy_rtx (target);
  		    MEM_KEEP_ALIAS_SET_P (target) = 1;
  		  }
! 		store_constructor_field (target, bitsize, bitpos, 0,
! 					 bitregion_end, mode, value,
! 					 cleared, get_alias_set (elttype),
! 					 reverse);
  	      }
  	  }
  	break;
--- 7923,7972 ----
  		    target = copy_rtx (target);
  		    MEM_KEEP_ALIAS_SET_P (target) = 1;
  		  }
! 		if (TREE_CODE (value) != RAW_DATA_CST)
! 		  store_constructor_field (target, bitsize, bitpos, 0,
! 					   bitregion_end, mode, value,
! 					   cleared, get_alias_set (elttype),
! 					   reverse);
! 		else
! 		  {
! 		    j += RAW_DATA_LENGTH (value) - 1;
! 		    gcc_assert (known_eq (bitsize, BITS_PER_UNIT));
! 		    rtx to_rtx = adjust_address (target, mode,
! 						 bitpos / BITS_PER_UNIT);
! 
! 		    if (to_rtx == target)
! 		      to_rtx = copy_rtx (to_rtx);
! 
! 		    if (!MEM_KEEP_ALIAS_SET_P (to_rtx)
! 			&& MEM_ALIAS_SET (to_rtx) != 0)
! 		      set_mem_alias_set (to_rtx, get_alias_set (elttype));
! 
! 		    if (can_store_by_pieces (RAW_DATA_LENGTH (value),
! 					     raw_data_cst_read_str,
! 					     (void *) value,
! 					     MEM_ALIGN (target), false))
! 		      {
! 			store_by_pieces (target, RAW_DATA_LENGTH (value),
! 					 raw_data_cst_read_str, (void *) value,
! 					 MEM_ALIGN (target), false,
! 					 RETURN_BEGIN);
! 			continue;
! 		      }
! 
! 		    elttype
! 		      = build_array_type_nelts (TREE_TYPE (value),
! 						RAW_DATA_LENGTH (value));
! 		    tree ctor = build_constructor_single (elttype, NULL_TREE,
! 							  value);
! 		    ctor = tree_output_constant_def (ctor);
! 		    mode = TYPE_MODE (type);
! 		    store_constructor_field (target,
! 					     bitsize * RAW_DATA_LENGTH (value),
! 					     bitpos, 0, bitregion_end, mode,
! 					     ctor, cleared,
! 					     get_alias_set (elttype), reverse);
! 		  }
  	      }
  	  }
  	break;
*************** store_constructor (tree exp, rtx target,
*** 7949,7955 ****
  	    && VECTOR_BOOLEAN_TYPE_P (type)
  	    && SCALAR_INT_MODE_P (TYPE_MODE (type))
  	    && (elt = uniform_vector_p (exp))
! 	    && !VECTOR_TYPE_P (TREE_TYPE (elt)))
  	  {
  	    rtx op0 = force_reg (TYPE_MODE (TREE_TYPE (elt)),
  				 expand_normal (elt));
--- 8023,8030 ----
  	    && VECTOR_BOOLEAN_TYPE_P (type)
  	    && SCALAR_INT_MODE_P (TYPE_MODE (type))
  	    && (elt = uniform_vector_p (exp))
! 	    && !VECTOR_TYPE_P (TREE_TYPE (elt))
! 	    && !BYTES_BIG_ENDIAN)
  	  {
  	    rtx op0 = force_reg (TYPE_MODE (TREE_TYPE (elt)),
  				 expand_normal (elt));
*************** store_constructor (tree exp, rtx target,
*** 7959,7965 ****
  	    /* Ensure no excess bits are set.
  	       GCN needs this for nunits < 64.
  	       x86 needs this for nunits < 8.  */
! 	    auto nunits = TYPE_VECTOR_SUBPARTS (type).to_constant ();
  	    if (maybe_ne (GET_MODE_PRECISION (mode), nunits))
  	      tmp = expand_binop (mode, and_optab, tmp,
  				  GEN_INT ((HOST_WIDE_INT_1U << nunits) - 1),
--- 8034,8040 ----
  	    /* Ensure no excess bits are set.
  	       GCN needs this for nunits < 64.
  	       x86 needs this for nunits < 8.  */
! 	    unsigned int nunits = TYPE_VECTOR_SUBPARTS (type).to_constant ();
  	    if (maybe_ne (GET_MODE_PRECISION (mode), nunits))
  	      tmp = expand_binop (mode, and_optab, tmp,
  				  GEN_INT ((HOST_WIDE_INT_1U << nunits) - 1),
*************** expand_expr_real_1 (tree exp, rtx target
*** 12185,12197 ****
  	   and need be, put it there.  */
  	else if (CONSTANT_P (op0) || (!MEM_P (op0) && must_force_mem))
  	  {
  	    poly_int64 size;
  	    if (!poly_int_tree_p (TYPE_SIZE_UNIT (TREE_TYPE (tem)), &size))
  	      size = max_int_size_in_bytes (TREE_TYPE (tem));
! 	    memloc = assign_stack_local (TYPE_MODE (TREE_TYPE (tem)), size,
! 					 TREE_CODE (tem) == SSA_NAME
! 					 ? TYPE_ALIGN (TREE_TYPE (tem))
! 					 : get_object_alignment (tem));
  	    emit_move_insn (memloc, op0);
  	    op0 = memloc;
  	    clear_mem_expr = true;
--- 12260,12285 ----
  	   and need be, put it there.  */
  	else if (CONSTANT_P (op0) || (!MEM_P (op0) && must_force_mem))
  	  {
+ 	    machine_mode tem_mode = TYPE_MODE (TREE_TYPE (tem));
  	    poly_int64 size;
  	    if (!poly_int_tree_p (TYPE_SIZE_UNIT (TREE_TYPE (tem)), &size))
  	      size = max_int_size_in_bytes (TREE_TYPE (tem));
! 	    unsigned int align = TREE_CODE (tem) == SSA_NAME
! 				 ? TYPE_ALIGN (TREE_TYPE (tem))
! 				 : get_object_alignment (tem);
! 	    if (STRICT_ALIGNMENT)
! 	      {
! 		/* For STRICT_ALIGNMENT targets, when we force the operand to
! 		   memory, we may need to increase the alignment to meet the
! 		   expectation in later RTL lowering passes.  The increased
! 		   alignment is capped by MAX_SUPPORTED_STACK_ALIGNMENT.  */
! 		if (tem_mode != BLKmode)
! 		  align = MAX (align, GET_MODE_ALIGNMENT (tem_mode));
! 		else
! 		  align = MAX (align, TYPE_ALIGN (TREE_TYPE (tem)));
! 		align = MIN (align, (unsigned) MAX_SUPPORTED_STACK_ALIGNMENT);
! 	      }
! 	    memloc = assign_stack_local (tem_mode, size, align);
  	    emit_move_insn (memloc, op0);
  	    op0 = memloc;
  	    clear_mem_expr = true;
diff -Nrcpad gcc-15.2.0/gcc/fold-const.cc gcc-15.3.0/gcc/fold-const.cc
*** gcc-15.2.0/gcc/fold-const.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fold-const.cc	Fri Jun 12 06:09:06 2026
*************** along with GCC; see the file COPYING3.
*** 86,91 ****
--- 86,92 ----
  #include "vec-perm-indices.h"
  #include "asan.h"
  #include "gimple-range.h"
+ #include "optabs-tree.h"
  
  /* Nonzero if we are folding constants inside an initializer or a C++
     manifestly-constant-evaluated context; zero otherwise.
*************** fold_convert_const (enum tree_code code,
*** 2558,2563 ****
--- 2559,2566 ----
  	  return v.build ();
  	}
      }
+   else if (TREE_CODE (type) == NULLPTR_TYPE && integer_zerop (arg1))
+     return build_zero_cst (type);
    return NULL_TREE;
  }
  
*************** fold_convert_loc (location_t loc, tree t
*** 2780,2785 ****
--- 2783,2792 ----
        tem = fold_ignored_result (arg);
        return fold_build1_loc (loc, NOP_EXPR, type, tem);
  
+     case NULLPTR_TYPE:
+       if (integer_zerop (arg))
+ 	return build_zero_cst (type);
+       /* FALLTHRU */
      default:
        if (TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (orig))
  	return fold_build1_loc (loc, NOP_EXPR, type, arg);
*************** fold_vec_perm (tree type, tree arg0, tre
*** 10678,10688 ****
  
    /* For fall back case, we want to ensure we have VLS vectors
       with equal length.  */
!   if (!sel.length ().is_constant (&nelts))
      return NULL_TREE;
  
-   gcc_assert (known_eq (sel.length (),
- 			TYPE_VECTOR_SUBPARTS (TREE_TYPE (arg0))));
    tree *in_elts = XALLOCAVEC (tree, nelts * 2);
    if (!vec_cst_ctor_to_array (arg0, nelts, in_elts)
        || !vec_cst_ctor_to_array (arg1, nelts, in_elts + nelts))
--- 10685,10694 ----
  
    /* For fall back case, we want to ensure we have VLS vectors
       with equal length.  */
!   if (!sel.length ().is_constant (&nelts)
!       || !known_eq (sel.length (), TYPE_VECTOR_SUBPARTS (TREE_TYPE (arg0))))
      return NULL_TREE;
  
    tree *in_elts = XALLOCAVEC (tree, nelts * 2);
    if (!vec_cst_ctor_to_array (arg0, nelts, in_elts)
        || !vec_cst_ctor_to_array (arg1, nelts, in_elts + nelts))
*************** fold_binary_loc (location_t loc, enum tr
*** 12382,12389 ****
  		  itype = signed_type_for (itype);
  		  arg00 = fold_convert_loc (loc, itype, arg00);
  		}
! 	      return fold_build2_loc (loc, code == EQ_EXPR ? GE_EXPR : LT_EXPR,
! 				  type, arg00, build_zero_cst (itype));
  	    }
  	}
  
--- 12388,12407 ----
  		  itype = signed_type_for (itype);
  		  arg00 = fold_convert_loc (loc, itype, arg00);
  		}
! 	      enum tree_code code2 = code == EQ_EXPR ? GE_EXPR : LT_EXPR;
! 	      /* Make sure to transform vector compares only to supported
! 		 ones or from unsupported ones and check that only after
! 		 IPA so offloaded code is handled correctly in this regard.  */
! 	      if (!VECTOR_TYPE_P (itype)
! 		  || (cfun
! 		      && cfun->after_inlining
! 		      /* We can jump on EQ/NE but not GE/LT.  */
! 		      && VECTOR_BOOLEAN_TYPE_P (type)
! 		      && (expand_vec_cmp_expr_p (itype, type, code2)
! 			  || !expand_vec_cmp_expr_p (TREE_TYPE (op0),
! 						     type, code))))
! 		return fold_build2_loc (loc, code2,
! 					type, arg00, build_zero_cst (itype));
  	    }
  	}
  
diff -Nrcpad gcc-15.2.0/gcc/fortran/ChangeLog gcc-15.3.0/gcc/fortran/ChangeLog
*** gcc-15.2.0/gcc/fortran/ChangeLog	Fri Aug  8 06:52:35 2025
--- gcc-15.3.0/gcc/fortran/ChangeLog	Fri Jun 12 06:10:03 2026
***************
*** 1,3 ****
--- 1,592 ----
+ 2026-06-12  Release Manager
+ 
+ 	* GCC 15.3.0 released.
+ 
+ 2026-05-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-05-20  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/106546
+ 	* frontend-passes.cc (create_var): Set attr->automatic on
+ 	new symbol.
+ 	(create_do_loop): Likewise on iteration variable.
+ 
+ 2026-05-20  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/115260
+ 	* trans-expr.cc (gfc_conv_subref_array_arg): Pass false to
+ 	dealloc argument of gfc_trans_scalar_assign if we are
+ 	converting a g77-style argument.
+ 
+ 2026-05-19  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-04-29  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	PR fortran/125021
+ 	* coarray.cc (check_add_new_comp_handle_array): Prefix internal
+ 	symbols by two underscores.
+ 	(create_get_callback): Same.
+ 	(create_allocated_callback): Same.
+ 	(create_send_callback): Same.
+ 
+ 2026-05-16  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2026-05-08  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/111952
+ 	PR fortran/125059
+ 	* trans-decl.cc (gfc_finish_var_decl): Remove bogus code forcing
+ 	a DT variable with DTIO as static.
+ 	* trans-io.cc (gfc_build_io_library_fndecls): Fix fnspec attribute.
+ 
+ 2026-05-14  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-08  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/96986
+ 	* resolve.cc (resolve_global_procedure): Move entry symbol
+ 	lookup outside the resolved != -1 block.
+ 
+ 2026-05-13  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-10  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/94978
+ 	* frontend-passes.cc (evaluate_loop_bound): New helper.
+ 	(inner_loop_may_be_skipped): New helper.
+ 	(do_subscript): Skip outer-loop bound warnings when nested inner loops
+ 	may be zero-trip for the substituted bound.
+ 
+ 2026-05-13  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-03-16  Paul Thomas  <pault@gcc.gnu.org>
+ 		    Steve Kargl  <kargls@comcast.net>
+ 
+ 	PR fortran/93832
+ 	* array.cc (resolve_array_bound): Emit error and return false
+ 	if bound expression is derived type or class.
+ 	* primary.cc (gfc_convert_to_structure_constructor): Do not
+ 	dereference NULL in character component test. Define 'shorter'
+ 	and use it help cure one of several whitespace issues.
+ 
+ 2026-05-13  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-11  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/93814
+ 	* trans-decl.cc (build_entry_thunks): Create local result buffer
+ 	and length temporaries for bind(c) CHARACTER entry thunks when the
+ 	master returns by reference but the thunk returns by value.
+ 
+ 2026-05-12  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-08  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/93715
+ 	* trans-decl.cc (gfc_trans_deferred_vars): Skip auto array
+ 	allocation for scalar coarrays.
+ 
+ 2026-05-12  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-13  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/101760
+ 	PR fortran/102314
+ 	* trans-openmp.cc (gfc_omp_finish_clause): Compute OMP_CLAUSE_SIZE
+ 	from the array domain bounds and element size for VLA types instead
+ 	of using TYPE_SIZE_UNIT directly, to avoid corrupting the type.
+ 
+ 2026-05-12  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-07  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/85352
+ 	* resolve.cc (specification_expr_symbol): New variable.
+ 	(entry_dummy_seen_p): Return whether a dummy appears in an already
+ 	seen ENTRY.
+ 	(gfc_resolve_formal_arglist): Remember the dummy whose specification
+ 	expressions are being resolved.
+ 	(resolve_variable): Accept unresolved sibling ENTRY dummy arguments
+ 	while resolving the current dummy's specification expressions.
+ 	(resolve_fl_variable): Preserve specification_expr_symbol.
+ 	(resolve_symbol_array_spec): Likewise.
+ 
+ 2026-05-09  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-07  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/107425
+ 	* trans-decl.cc (gfc_finish_var_decl): Check for
+ 	omp_affinity_iterators namespace before FL_LABEL BLOCK check.
+ 	Only route actual iterator variables through add_decl_as_local;
+ 	add other variables to the enclosing function.
+ 
+ 2026-05-08  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-06  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/79524
+ 	PR fortran/79524
+ 	* decl.cc (discard_pending_charlens): New helper.
+ 	(add_init_expr_to_sym): Drop statement-local charlens when
+ 	rejecting variable-length parameter arrays.
+ 	(variable_decl, do_parm, enumerator_decl): Save the current
+ 	namespace charlen list before parsing declarations with
+ 	initializers.
+ 	(match_procedure_decl): Adjust call to add_init_expr_to_sym.
+ 
+ 2026-05-06  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-05  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/109788
+ 	* iresolve.cc (copy_intrinsic_sym): New helper.
+ 	(gfc_resolve_spread): Copy the intrinsic descriptor before
+ 	specializing the character formal argument type.
+ 
+ 2026-05-06  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-07  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/102430
+ 	* openmp.cc (resolve_omp_clauses): Reject array/allocatable LINEAR on
+ 	worksharing-loop constructs.
+ 
+ 2026-04-17  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-04-03  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/100155
+ 	* trans-expr.cc (gfc_add_interface_mapping): 'new_sym' dummy
+ 	attribute set to zero.
+ 	(gfc_conv_procedure_call): Deallocate allocatable components of
+ 	a class argument, enclosed in parentheses,wrap up the parmse
+ 	and proceed to the next argument.
+ 
+ 2026-04-17  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-03-27  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/102619
+ 	* trans-expr.cc (gfc_get_interface_mapping_array): Add argument
+ 	'assumed_rank_formal', which if true returns the descriptor in
+ 	'ifm'.
+ 	(gfc_add_interface_mapping): Detect an assumed rank formal arg
+ 	of a non-intrinsic function to set 'assumed_rank_formal' and
+ 	pass the descriptor to gfc_get_interface_mapping_array.
+ 
+ 2026-04-13  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-03-30  Christopher Albert  <albert@tugraz.at>
+ 
+ 	* scanner.cc (skip_free_oacc_sentinel): Clear openmp_flag only for
+ 	fresh OpenACC directive lines.
+ 	(skip_free_omp_sentinel): Clear openacc_flag only for fresh OpenMP
+ 	directive lines.
+ 
+ 2026-04-13  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/95879
+ 	PR fortran/95879
+ 	* parse.cc (fixup_st_func_formals): New function to update
+ 	statement function formal argument lists referencing a symbol
+ 	about to be freed.
+ 	(gfc_fixup_sibling_symbols): Call fixup_st_func_formals before
+ 	gfc_release_symbol.
+ 
+ 2026-04-06  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2026-04-04  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/66973
+ 	* interface.cc (gfc_compare_actual_formal): Check that C_LOC and
+ 	C_FUNLOC from ISO_C_BINDING as actual argument are passed to a
+ 	dummy argument of matching type C_PTR/C_FUNPTR.
+ 
+ 2026-04-05  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2026-04-03  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/124652
+ 	* trans-expr.cc (gfc_conv_procedure_call): Do not clobber a
+ 	procedure pointer intent(out) argument.
+ 	* trans-intrinsic.cc (conv_isocbinding_function): When passing to
+ 	C_FUNLOC a procedure pointer that is a dummy, dereference it.
+ 
+ 2026-04-05  Kirill Chilikin  <chilikin.k@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-02-03  Kirill Chilikin  <chilikin.k@gmail.com>
+ 
+ 	PR fortran/117303
+ 	* trans-intrinsic.cc (conv_isocbinding_function):
+ 	Assign the reference returned by C_FUNLOC to a variable.
+ 
+ 2026-04-05  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-03-20  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/120723
+ 	* trans-openmp.cc (gfc_trans_omp_clauses): Handle bare scalar
+ 	OpenACC attach/detach clauses without pointer-mapping nodes.
+ 
+ 2026-04-02  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-02  Christopher Albert  <albert@tugraz.at>
+ 		    Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/124751
+ 	* trans-array.cc (gfc_conv_array_parameter): Build a packed
+ 	descriptor for assumed-rank actual arguments instead of reusing
+ 	stale metadata from the original descriptor.
+ 
+ 2026-04-02  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-01  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/100194
+ 	* trans-expr.cc (gfc_conv_procedure_call): Skip
+ 	gfc_conv_subref_array_arg for assumed-rank actual arguments
+ 	(e->rank == -1) when the dummy is contiguous.
+ 
+ 2026-03-31  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2026-03-25  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/124567
+ 	* interface.cc (gfc_check_dummy_characteristics): Split shape check
+ 	into a separate check for rank and a check for shape, taking into
+ 	account a corner case where the ambiguity between deferred shape
+ 	and assumed shape has not been fully resolved at the time of
+ 	checking.
+ 
+ 2026-03-31  Mikael Morin  <morin-mikael@orange.fr>
+ 
+ 	Backported from master:
+ 	2025-07-31  Mikael Morin  <morin-mikael@orange.fr>
+ 
+ 	PR fortran/121342
+ 	* trans-expr.cc (gfc_conv_subref_array_arg): Remove offset
+ 	update.
+ 	(gfc_conv_procedure_call): For polymorphic functions, move the
+ 	scalarizer descriptor information...
+ 	* trans-array.cc (gfc_add_loop_ss_code): ... here, and evaluate
+ 	the bounds to fresh variables.
+ 	(get_class_info_from_ss): Remove offset update.
+ 	(gfc_conv_ss_startstride): Don't set a zero value for function
+ 	result upper bounds.
+ 	(late_set_loop_bounds): New.
+ 	(gfc_conv_loop_setup): If the bounds of a function result have
+ 	been set, and no other array provided loop bounds for a
+ 	dimension, use the function result bounds as loop bounds for
+ 	that dimension.
+ 	(gfc_set_delta): Don't skip delta setting for polymorphic
+ 	function results.
+ 
+ 2026-03-31  Mikael Morin  <mikael@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2025-06-19  Mikael Morin  <mikael@gcc.gnu.org>
+ 
+ 	PR fortran/120713
+ 	* trans-array.cc (gfc_trans_deferred_array): Statically
+ 	initialize deferred length variable for SAVEd character arrays.
+ 
+ 2026-03-30  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2026-03-27  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/124631
+ 	* simplify.cc (gfc_simplify_eoshift): Initialize sstride[0] to
+ 	prevent pointer arithmetic with undefined offset.  Fix several
+ 	frontend memleaks.
+ 
+ 2026-03-30  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-03-11  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/95338
+ 	* trans-types.cc (gfc_get_entry_result_type): New helper to use the
+ 	ABI return type for mixed ENTRY union fields.
+ 	(gfc_get_mixed_entry_union): Use it for each entry result field.
+ 
+ 2026-03-29  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-03-13  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/102459
+ 	* trans-openmp.cc (gfc_trans_omp_clauses): Choose the scalar
+ 	reference path from the full expression rank rather than the first
+ 	array reference.
+ 	(gfc_trans_omp_depobj): Likewise.
+ 
+ 2026-03-29  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-03-12  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/82721
+ 	* decl.cc (discard_pending_charlen): New helper.
+ 	(build_sym): Discard unattached CHARACTER length nodes when
+ 	gfc_add_type rejects the declaration.
+ 
+ 2026-03-28  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-03-28  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/84245
+ 	* match.cc (gfc_match_select_type): Free the temporary namespace
+ 	only on MATCH_NO. Return immediately on MATCH_ERROR.
+ 
+ 2026-03-25  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-03-25  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/119273
+ 	* trans-array.cc (expr_contains_impure_fcn): New function.
+ 	(gfc_expr_contains_impure_fcn): New function calling above fcn.
+ 	(array_bound_check_elemental): Add indexse pre-block to se pre.
+ 	Warn if the index expression contains a function not declared
+ 	to be pure.
+ 
+ 2026-03-25  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-03-16  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/105168
+ 	* trans-expr.cc (gfc_conv_class_to_class): If the argument expr
+ 	is not a class type use the parent tree if that is a class.
+ 	(gfc_conv_procedure_call): If the argument expression is not a
+ 	variable, shift the bounds to give unity lbounds.
+ 	(gfc_trans_arrayfunc_assign): Return NULL_TREE instead of NULL.
+ 
+ 2026-03-20  Mikael Morin  <morin-mikael@orange.fr>
+ 
+ 	Backported from master:
+ 	2025-09-24  Mikael Morin  <morin-mikael@orange.fr>
+ 
+ 	PR fortran/122046
+ 	* symbol.cc (gfc_get_procedure_ns): Try to find the namespace
+ 	among the list of contained namespaces before returning the
+ 	value from the formal_ns field.
+ 
+ 2026-03-19  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-03-19  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/124161
+ 	* resolve.cc (resolve_symbol): Do not apply the default
+ 	initializer if the symbol is used in a submodule.
+ 
+ 2026-03-18  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-03-17  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/120286
+ 	* trans-openmp.cc (gfc_is_class_pointer_type): New helper.
+ 	(gfc_omp_clause_copy_ctor): Unwrap saved descriptors before
+ 	deciding whether privatization should preserve only pointer
+ 	association.  Handle scalar class pointers on that path too.
+ 	(gfc_omp_clause_dtor): Likewise.
+ 
+ 2026-03-16  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-03-12  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/102596
+ 	* trans-openmp.cc (gfc_omp_clause_default_ctor): Only require an
+ 	outer reference when the constructor path actually uses it.
+ 
+ 2026-03-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/106946
+ 	PR fortran/124482
+ 	* decl.cc (gfc_match_data_decl): Defer CLASS container cleanup
+ 	until after all failed components are unlinked.  Check remaining
+ 	component list before freeing a shared container.
+ 	* gfortran.h (gfc_free_component): Declare.
+ 	(gfc_delete_symtree): Declare.
+ 	* symbol.cc (gfc_free_component): New function.
+ 	(free_components): Use it.
+ 
+ 2026-03-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/124450
+ 	* trans-io.cc (transfer_expr): If code is NULL, call
+ 	transfer_array_component with NULL where argument rather than
+ 	&code->loc.
+ 
+ 2026-03-14  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-03-12  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 		    Gilles Gouaillardet  <gilles.gouaillardet@gmail.com>
+ 
+ 	PR fortran/121743
+ 	* trans-decl.cc (build_function_decl): Adjust the
+ 	gcc_assert condition to avoid the ICE.
+ 
+ 2026-02-14  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2026-02-08  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/123961
+ 	* check.cc (array_check): Extend check to class array functions.
+ 	* class.cc (gfc_add_class_array_ref): Fix NULL pointer dereference.
+ 
+ 2025-12-16  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2025-12-11  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/107406
+ 	* parse.cc (check_component): Adjust the error check to
+ 	require a codimension if the allocatable type has
+ 	a non-coarray LOCK_TYPE component.
+ 
+ 2025-12-09  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2025-12-05  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/122977
+ 	* expr.cc (gfc_is_simply_contiguous): For an associate variable
+ 	check whether the associate target is contiguous.
+ 	* resolve.cc (resolve_symbol): Skip array type check for an
+ 	associate variable when	the target has the contiguous attribute.
+ 
+ 2025-11-18  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2025-11-17  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/122709
+ 	* resolve.cc (resolve_assoc_var): If the associate target is a
+ 	contiguous pointer, so is the associate variable.
+ 
+ 2025-11-01  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2025-10-25  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/114023
+ 	* trans-expr.cc (gfc_trans_pointer_assignment): Always set dtype
+ 	when remapping a pointer.  For unlimited polymorphic LHS use
+ 	elem_len from RHS.
+ 	* trans-intrinsic.cc (gfc_conv_is_contiguous_expr): Extend inline
+ 	generated code for IS_CONTIGUOUS for pointer arguments to detect
+ 	when span differs from the element size.
+ 
+ 2025-11-01  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2025-10-24  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/122386
+ 	* dependency.cc (gfc_ref_needs_temporary_p): Revert r16-518.
+ 	* trans-intrinsic.cc (gfc_conv_intrinsic_transfer): Force temporary
+ 	for SOURCE not being a simply-contiguous array.
+ 
+ 2025-10-25  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2025-10-09  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/122206
+ 	* trans-types.cc (gfc_get_function_type): Do not clobber an
+ 	existing procedure interface.
+ 
+ 2025-10-25  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2025-10-04  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/107968
+ 	* trans-io.cc (gfc_trans_transfer): Also scalarize I/O of section
+ 	of an array pointer.
+ 
+ 2025-09-28  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2025-09-11  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/121616
+ 	* primary.cc (gfc_variable_attr): Properly set dimension attribute
+ 	from a component ref.
+ 
+ 2025-09-28  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2025-09-25  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/121939
+ 	* trans-types.cc (gfc_init_types): Set string flag for all
+ 	character types.
+ 
+ 2025-09-28  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2025-09-21  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/108581
+ 	* trans-array.cc (gfc_conv_expr_descriptor): Take the dynamic
+ 	string length into account when deriving the dataptr offset for
+ 	a deferred-length character array.
+ 
+ 2025-09-23  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2025-08-13  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/89092
+ 	* resolve.cc (was_declared): Add subroutine attribute.
+ 
+ 2025-09-09  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2025-09-03  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/121263
+ 	* trans-intrinsic.cc (gfc_conv_intrinsic_transfer): For an
+ 	unlimited polymorphic SOURCE to TRANSFER use saved descriptor
+ 	if possible.
+ 
  2025-08-08  Release Manager
  
  	* GCC 15.2.0 released.
diff -Nrcpad gcc-15.2.0/gcc/fortran/array.cc gcc-15.3.0/gcc/fortran/array.cc
*** gcc-15.2.0/gcc/fortran/array.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/array.cc	Fri Jun 12 06:09:06 2026
*************** resolve_array_bound (gfc_expr *e, int ch
*** 471,476 ****
--- 471,483 ----
    if (e == NULL)
      return true;
  
+   if (e->ts.type == BT_DERIVED || e->ts.type == BT_CLASS)
+     {
+       gfc_error ("Derived type or class expression for array bound at %L",
+ 		 &e->where);
+       return false;
+     }
+ 
    if (!gfc_resolve_expr (e)
        || !gfc_specification_expr (e))
      return false;
diff -Nrcpad gcc-15.2.0/gcc/fortran/check.cc gcc-15.3.0/gcc/fortran/check.cc
*** gcc-15.2.0/gcc/fortran/check.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/check.cc	Fri Jun 12 06:09:06 2026
*************** array_check (gfc_expr *e, int n)
*** 832,837 ****
--- 832,840 ----
    if (e->rank != 0 && e->ts.type != BT_PROCEDURE)
      return true;
  
+   if (gfc_is_class_array_function (e))
+     return true;
+ 
    gfc_error ("%qs argument of %qs intrinsic at %L must be an array",
  	     gfc_current_intrinsic_arg[n]->name, gfc_current_intrinsic,
  	     &e->where);
diff -Nrcpad gcc-15.2.0/gcc/fortran/class.cc gcc-15.3.0/gcc/fortran/class.cc
*** gcc-15.2.0/gcc/fortran/class.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/class.cc	Fri Jun 12 06:09:06 2026
*************** gfc_add_class_array_ref (gfc_expr *e)
*** 273,279 ****
    for (ref = e->ref; ref; ref = ref->next)
      if (!ref->next)
        break;
!   if (ref->type != REF_ARRAY)
      {
        ref->next = gfc_get_ref ();
        ref = ref->next;
--- 273,279 ----
    for (ref = e->ref; ref; ref = ref->next)
      if (!ref->next)
        break;
!   if (ref && ref->type != REF_ARRAY)
      {
        ref->next = gfc_get_ref ();
        ref = ref->next;
diff -Nrcpad gcc-15.2.0/gcc/fortran/coarray.cc gcc-15.3.0/gcc/fortran/coarray.cc
*** gcc-15.2.0/gcc/fortran/coarray.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/coarray.cc	Fri Jun 12 06:09:06 2026
*************** check_add_new_comp_handle_array (gfc_exp
*** 615,621 ****
  	  c->expr2->ref->u.ar.codimen = 1;
  	  c->expr2->ref->u.ar.dimen_type[0] = DIMEN_ELEMENT;
  	  caller_image
! 	    = gfc_find_symtree_in_proc ("caller_image", add_data->ns);
  	  gcc_assert (caller_image);
  	  c->expr2->ref->u.ar.start[0] = gfc_get_variable_expr (caller_image);
  	  c->expr2->ref->u.ar.start[0]->where = e->where;
--- 615,621 ----
  	  c->expr2->ref->u.ar.codimen = 1;
  	  c->expr2->ref->u.ar.dimen_type[0] = DIMEN_ELEMENT;
  	  caller_image
! 	    = gfc_find_symtree_in_proc ("__caller_image", add_data->ns);
  	  gcc_assert (caller_image);
  	  c->expr2->ref->u.ar.start[0] = gfc_get_variable_expr (caller_image);
  	  c->expr2->ref->u.ar.start[0]->where = e->where;
*************** create_get_callback (gfc_expr *expr)
*** 868,883 ****
    (*argptr)->sym = nsym;                                                       \
    argptr = &(*argptr)->next
  
!   name = xasprintf ("add_data_%s_%s_%d", mname, tname, caf_sym_cnt);
    ADD_ARG (name, get_data, BT_DERIVED, 0, INTENT_IN);
    gfc_commit_symbol (get_data);
    free (name);
  
!   ADD_ARG ("caller_image", caller_image, BT_INTEGER, gfc_default_integer_kind,
  	   INTENT_IN);
    gfc_commit_symbol (caller_image);
  
!   ADD_ARG ("buffer", buffer, expr->ts.type, expr->ts.kind, INTENT_INOUT);
    buffer->ts = expr->ts;
    if (expr_rank)
      {
--- 868,883 ----
    (*argptr)->sym = nsym;                                                       \
    argptr = &(*argptr)->next
  
!   name = xasprintf ("__add_data_%s_%s_%d", mname, tname, caf_sym_cnt);
    ADD_ARG (name, get_data, BT_DERIVED, 0, INTENT_IN);
    gfc_commit_symbol (get_data);
    free (name);
  
!   ADD_ARG ("__caller_image", caller_image, BT_INTEGER, gfc_default_integer_kind,
  	   INTENT_IN);
    gfc_commit_symbol (caller_image);
  
!   ADD_ARG ("__buffer", buffer, expr->ts.type, expr->ts.kind, INTENT_INOUT);
    buffer->ts = expr->ts;
    if (expr_rank)
      {
*************** create_get_callback (gfc_expr *expr)
*** 917,923 ****
      }
    gfc_commit_symbol (buffer);
  
!   ADD_ARG ("free_buffer", free_buffer, BT_LOGICAL, gfc_default_logical_kind,
  	   INTENT_OUT);
    gfc_commit_symbol (free_buffer);
  
--- 917,923 ----
      }
    gfc_commit_symbol (buffer);
  
!   ADD_ARG ("__free_buffer", free_buffer, BT_LOGICAL, gfc_default_logical_kind,
  	   INTENT_OUT);
    gfc_commit_symbol (free_buffer);
  
*************** create_allocated_callback (gfc_expr *exp
*** 1117,1131 ****
    (*argptr)->sym = nsym;                                                       \
    argptr = &(*argptr)->next
  
!   name = xasprintf ("add_data_%s_%s_%d", mname, tname, ++caf_sym_cnt);
    ADD_ARG (name, add_data, BT_DERIVED, 0, INTENT_IN);
    gfc_commit_symbol (add_data);
    free (name);
!   ADD_ARG ("caller_image", caller_image, BT_INTEGER, gfc_default_integer_kind,
  	   INTENT_IN);
    gfc_commit_symbol (caller_image);
  
!   ADD_ARG ("result", result, BT_LOGICAL, gfc_default_logical_kind, INTENT_OUT);
    gfc_commit_symbol (result);
  
    // ADD_ARG (expr->symtree->name, base, BT_VOID, INTENT_IN);
--- 1117,1132 ----
    (*argptr)->sym = nsym;                                                       \
    argptr = &(*argptr)->next
  
!   name = xasprintf ("__add_data_%s_%s_%d", mname, tname, ++caf_sym_cnt);
    ADD_ARG (name, add_data, BT_DERIVED, 0, INTENT_IN);
    gfc_commit_symbol (add_data);
    free (name);
!   ADD_ARG ("__caller_image", caller_image, BT_INTEGER, gfc_default_integer_kind,
  	   INTENT_IN);
    gfc_commit_symbol (caller_image);
  
!   ADD_ARG ("__result", result, BT_LOGICAL, gfc_default_logical_kind,
! 	   INTENT_OUT);
    gfc_commit_symbol (result);
  
    // ADD_ARG (expr->symtree->name, base, BT_VOID, INTENT_IN);
*************** create_send_callback (gfc_expr *expr, gf
*** 1262,1273 ****
    (*argptr)->sym = nsym;                                                       \
    argptr = &(*argptr)->next
  
!   name = xasprintf ("add_send_data_%s_%s_%d", mname, tname, caf_sym_cnt);
    ADD_ARG (name, send_data, BT_DERIVED, 0, INTENT_IN);
    gfc_commit_symbol (send_data);
    free (name);
  
!   ADD_ARG ("caller_image", caller_image, BT_INTEGER, gfc_default_integer_kind,
  	   INTENT_IN);
    gfc_commit_symbol (caller_image);
  
--- 1263,1274 ----
    (*argptr)->sym = nsym;                                                       \
    argptr = &(*argptr)->next
  
!   name = xasprintf ("__add_send_data_%s_%s_%d", mname, tname, caf_sym_cnt);
    ADD_ARG (name, send_data, BT_DERIVED, 0, INTENT_IN);
    gfc_commit_symbol (send_data);
    free (name);
  
!   ADD_ARG ("__caller_image", caller_image, BT_INTEGER, gfc_default_integer_kind,
  	   INTENT_IN);
    gfc_commit_symbol (caller_image);
  
*************** create_send_callback (gfc_expr *expr, gf
*** 1281,1287 ****
    argptr = &(*argptr)->next;
    gfc_commit_symbol (base);
  
!   ADD_ARG ("buffer", buffer, rhs->ts.type, rhs->ts.kind, INTENT_IN);
    buffer->ts = rhs->ts;
    if (rhs->rank)
      {
--- 1282,1288 ----
    argptr = &(*argptr)->next;
    gfc_commit_symbol (base);
  
!   ADD_ARG ("__buffer", buffer, rhs->ts.type, rhs->ts.kind, INTENT_IN);
    buffer->ts = rhs->ts;
    if (rhs->rank)
      {
diff -Nrcpad gcc-15.2.0/gcc/fortran/decl.cc gcc-15.3.0/gcc/fortran/decl.cc
*** gcc-15.2.0/gcc/fortran/decl.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/decl.cc	Fri Jun 12 06:09:06 2026
*************** static gfc_expr *saved_kind_expr = NULL;
*** 116,121 ****
--- 116,156 ----
  static gfc_actual_arglist *decl_type_param_list;
  static gfc_actual_arglist *type_param_spec_list;
  
+ /* Drop an unattached gfc_charlen node from the current namespace.  This is
+    used when declaration processing created a length node for a symbol that is
+    rejected before the node is attached to any surviving symbol.  */
+ static void
+ discard_pending_charlen (gfc_charlen *cl)
+ {
+   if (!cl || !gfc_current_ns || gfc_current_ns->cl_list != cl)
+     return;
+ 
+   gfc_current_ns->cl_list = cl->next;
+   gfc_free_expr (cl->length);
+   free (cl);
+ }
+ 
+ /* Drop the charlen nodes created while matching a declaration that is about
+    to be rejected.  Callers must clear any surviving owners before using this
+    helper, so only the statement-local nodes remain on the namespace list.  */
+ 
+ static void
+ discard_pending_charlens (gfc_charlen *saved_cl)
+ {
+   if (!gfc_current_ns)
+     return;
+ 
+   while (gfc_current_ns->cl_list != saved_cl)
+     {
+       gfc_charlen *cl = gfc_current_ns->cl_list;
+ 
+       gcc_assert (cl);
+       gfc_current_ns->cl_list = cl->next;
+       gfc_free_expr (cl->length);
+       free (cl);
+     }
+ }
+ 
  /********************* DATA statement subroutines *********************/
  
  static bool in_match_data = false;
*************** build_sym (const char *name, int elem, g
*** 1777,1783 ****
        && (sym->attr.implicit_type == 0
  	  || !gfc_compare_types (&sym->ts, &current_ts))
        && !gfc_add_type (sym, &current_ts, var_locus))
!     return false;
  
    if (sym->ts.type == BT_CHARACTER)
      {
--- 1812,1831 ----
        && (sym->attr.implicit_type == 0
  	  || !gfc_compare_types (&sym->ts, &current_ts))
        && !gfc_add_type (sym, &current_ts, var_locus))
!     {
!       /* Duplicate-type rejection can leave a fresh CHARACTER length node on
! 	 the namespace list before it is attached to any surviving symbol.
! 	 Drop only that unattached node; shared constant charlen nodes are
! 	 already reachable from earlier declarations.  PR82721.  */
!       if (current_ts.type == BT_CHARACTER && cl && elem == 1)
! 	{
! 	  discard_pending_charlen (cl);
! 	  gfc_clear_ts (&current_ts);
! 	}
!       else if (current_ts.type == BT_CHARACTER && cl && cl != current_ts.u.cl)
! 	discard_pending_charlen (cl);
!       return false;
!     }
  
    if (sym->ts.type == BT_CHARACTER)
      {
*************** fix_initializer_charlen (gfc_typespec *t
*** 2019,2025 ****
     expression to a symbol.  */
  
  static bool
! add_init_expr_to_sym (const char *name, gfc_expr **initp, locus *var_locus)
  {
    symbol_attribute attr;
    gfc_symbol *sym;
--- 2067,2074 ----
     expression to a symbol.  */
  
  static bool
! add_init_expr_to_sym (const char *name, gfc_expr **initp, locus *var_locus,
! 		      gfc_charlen *saved_cl_list)
  {
    symbol_attribute attr;
    gfc_symbol *sym;
*************** add_init_expr_to_sym (const char *name,
*** 2107,2112 ****
--- 2156,2171 ----
  					 "at %L "
  					 "with variable length elements",
  					 &sym->declared_at);
+ 
+ 			      /* This rejection path can leave several
+ 				 declaration-local charlens on cl_list,
+ 				 including the replacement symbol charlen and
+ 				 the array-constructor typespec charlen.
+ 				 Clear the surviving owners first, then drop
+ 				 only the nodes created by this declaration.  */
+ 			      sym->ts.u.cl = NULL;
+ 			      init->ts.u.cl = NULL;
+ 			      discard_pending_charlens (saved_cl_list);
  			      return false;
  			    }
  			  clen = mpz_get_si (length->value.integer);
*************** variable_decl (int elem)
*** 2637,2642 ****
--- 2696,2702 ----
    gfc_array_spec *as;
    gfc_array_spec *cp_as; /* Extra copy for Cray Pointees.  */
    gfc_charlen *cl;
+   gfc_charlen *saved_cl_list;
    bool cl_deferred;
    locus var_locus;
    match m;
*************** variable_decl (int elem)
*** 2647,2652 ****
--- 2707,2713 ----
    initializer = NULL;
    as = NULL;
    cp_as = NULL;
+   saved_cl_list = gfc_current_ns->cl_list;
  
    /* When we get here, we've just matched a list of attributes and
       maybe a type and a double colon.  The next thing we expect to see
*************** variable_decl (int elem)
*** 3187,3193 ****
       NULL here, because we sometimes also need to check if a
       declaration *must* have an initialization expression.  */
    if (!gfc_comp_struct (gfc_current_state ()))
!     t = add_init_expr_to_sym (name, &initializer, &var_locus);
    else
      {
        if (current_ts.type == BT_DERIVED
--- 3248,3255 ----
       NULL here, because we sometimes also need to check if a
       declaration *must* have an initialization expression.  */
    if (!gfc_comp_struct (gfc_current_state ()))
!     t = add_init_expr_to_sym (name, &initializer, &var_locus,
! 			      saved_cl_list);
    else
      {
        if (current_ts.type == BT_DERIVED
*************** gfc_match_data_decl (void)
*** 6333,6344 ****
--- 6395,6422 ----
    gfc_symbol *sym;
    match m;
    int elem;
+   gfc_component *comp_tail = NULL;
  
    type_param_spec_list = NULL;
    decl_type_param_list = NULL;
  
    num_idents_on_line = 0;
  
+   /* Record the last component before we start, so that we can roll back
+      any components added during this statement on error.  PR106946.
+      Must be set before any 'goto cleanup' with m == MATCH_ERROR.  */
+   if (gfc_comp_struct (gfc_current_state ()))
+     {
+       gfc_symbol *block = gfc_current_block ();
+       if (block)
+ 	{
+ 	  comp_tail = block->components;
+ 	  if (comp_tail)
+ 	    while (comp_tail->next)
+ 	      comp_tail = comp_tail->next;
+ 	}
+     }
+ 
    m = gfc_match_decl_type_spec (&current_ts, 0);
    if (m != MATCH_YES)
      return m;
*************** ok:
*** 6458,6463 ****
--- 6536,6615 ----
    gfc_free_data_all (gfc_current_ns);
  
  cleanup:
+   /* If we failed inside a derived type definition, remove any CLASS
+      components that were added during this failed statement.  For CLASS
+      components, gfc_build_class_symbol creates an extra container symbol in
+      the namespace outside the normal undo machinery.  When reject_statement
+      later calls gfc_undo_symbols, the declaration state is rolled back but
+      that helper symbol survives and leaves the component dangling.  Ordinary
+      components do not create that extra helper symbol, so leave them in
+      place for the usual follow-up diagnostics.  PR106946.
+ 
+      CLASS containers are shared between components of the same class type
+      and attributes (gfc_build_class_symbol reuses existing containers).
+      We must not free a container that is still referenced by a previously
+      committed component.  Unlink and free the components first, then clean
+      up only orphaned containers.  PR124482.  */
+   if (m == MATCH_ERROR && gfc_comp_struct (gfc_current_state ()))
+     {
+       gfc_symbol *block = gfc_current_block ();
+       if (block)
+ 	{
+ 	  gfc_component **prev;
+ 	  if (comp_tail)
+ 	    prev = &comp_tail->next;
+ 	  else
+ 	    prev = &block->components;
+ 
+ 	  /* Record the CLASS container from the removed components.
+ 	     Normally all components in one declaration share a single
+ 	     container, but per-variable array specs can produce
+ 	     additional ones; any beyond the first are harmlessly
+ 	     leaked until namespace destruction.  */
+ 	  gfc_symbol *fclass_container = NULL;
+ 
+ 	  while (*prev)
+ 	    {
+ 	      gfc_component *c = *prev;
+ 	      if (c->ts.type == BT_CLASS && c->ts.u.derived
+ 		  && c->ts.u.derived->attr.is_class)
+ 		{
+ 		  *prev = c->next;
+ 		  if (!fclass_container)
+ 		    fclass_container = c->ts.u.derived;
+ 		  c->ts.u.derived = NULL;
+ 		  gfc_free_component (c);
+ 		}
+ 	      else
+ 		prev = &c->next;
+ 	    }
+ 
+ 	  /* Free the container only if no remaining component still
+ 	     references it.  CLASS containers are shared between
+ 	     components of the same class type and attributes
+ 	     (gfc_build_class_symbol reuses existing ones).  */
+ 	  if (fclass_container)
+ 	    {
+ 	      bool shared = false;
+ 	      for (gfc_component *q = block->components; q; q = q->next)
+ 		if (q->ts.type == BT_CLASS
+ 		    && q->ts.u.derived == fclass_container)
+ 		  {
+ 		    shared = true;
+ 		    break;
+ 		  }
+ 	      if (!shared)
+ 		{
+ 		  if (gfc_find_symtree (fclass_container->ns->sym_root,
+ 					fclass_container->name))
+ 		    gfc_delete_symtree (&fclass_container->ns->sym_root,
+ 					fclass_container->name);
+ 		  gfc_release_symbol (fclass_container);
+ 		}
+ 	    }
+ 	}
+     }
+ 
    if (saved_kind_expr)
      gfc_free_expr (saved_kind_expr);
    if (type_param_spec_list)
*************** match_procedure_decl (void)
*** 7277,7283 ****
  	  if (m != MATCH_YES)
  	    goto cleanup;
  
! 	  if (!add_init_expr_to_sym (sym->name, &initializer, &gfc_current_locus))
  	    goto cleanup;
  
  	}
--- 7429,7437 ----
  	  if (m != MATCH_YES)
  	    goto cleanup;
  
! 	  if (!add_init_expr_to_sym (sym->name, &initializer,
! 				     &gfc_current_locus,
! 				     gfc_current_ns->cl_list))
  	    goto cleanup;
  
  	}
*************** do_parm (void)
*** 9538,9546 ****
--- 9692,9703 ----
  {
    gfc_symbol *sym;
    gfc_expr *init;
+   gfc_charlen *saved_cl_list;
    match m;
    bool t;
  
+   saved_cl_list = gfc_current_ns->cl_list;
+ 
    m = gfc_match_symbol (&sym, 0);
    if (m == MATCH_NO)
      gfc_error ("Expected variable name at %C in PARAMETER statement");
*************** do_parm (void)
*** 9581,9587 ****
        goto cleanup;
      }
  
!   t = add_init_expr_to_sym (sym->name, &init, &gfc_current_locus);
    return (t) ? MATCH_YES : MATCH_ERROR;
  
  cleanup:
--- 9738,9745 ----
        goto cleanup;
      }
  
!   t = add_init_expr_to_sym (sym->name, &init, &gfc_current_locus,
! 			    saved_cl_list);
    return (t) ? MATCH_YES : MATCH_ERROR;
  
  cleanup:
*************** enumerator_decl (void)
*** 11001,11006 ****
--- 11159,11165 ----
    char name[GFC_MAX_SYMBOL_LEN + 1];
    gfc_expr *initializer;
    gfc_array_spec *as = NULL;
+   gfc_charlen *saved_cl_list;
    gfc_symbol *sym;
    locus var_locus;
    match m;
*************** enumerator_decl (void)
*** 11008,11013 ****
--- 11167,11173 ----
    locus old_locus;
  
    initializer = NULL;
+   saved_cl_list = gfc_current_ns->cl_list;
    old_locus = gfc_current_locus;
  
    /* When we get here, we've just matched a list of attributes and
*************** enumerator_decl (void)
*** 11064,11070 ****
       to be parsed.  add_init_expr_to_sym() zeros initializer, so we
       use last_initializer below.  */
    last_initializer = initializer;
!   t = add_init_expr_to_sym (name, &initializer, &var_locus);
  
    /* Maintain enumerator history.  */
    gfc_find_symbol (name, NULL, 0, &sym);
--- 11224,11231 ----
       to be parsed.  add_init_expr_to_sym() zeros initializer, so we
       use last_initializer below.  */
    last_initializer = initializer;
!   t = add_init_expr_to_sym (name, &initializer, &var_locus,
! 			    saved_cl_list);
  
    /* Maintain enumerator history.  */
    gfc_find_symbol (name, NULL, 0, &sym);
diff -Nrcpad gcc-15.2.0/gcc/fortran/dependency.cc gcc-15.3.0/gcc/fortran/dependency.cc
*** gcc-15.2.0/gcc/fortran/dependency.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/dependency.cc	Fri Jun 12 06:09:06 2026
*************** gfc_ref_needs_temporary_p (gfc_ref *ref)
*** 944,955 ****
  	   types), not in characters.  */
  	return subarray_p;
  
-       case REF_INQUIRY:
- 	/* Within an array reference, inquiry references of complex
- 	   variables generally need a temporary.  */
- 	return subarray_p;
- 
        case REF_COMPONENT:
  	break;
        }
  
--- 944,951 ----
  	   types), not in characters.  */
  	return subarray_p;
  
        case REF_COMPONENT:
+       case REF_INQUIRY:
  	break;
        }
  
diff -Nrcpad gcc-15.2.0/gcc/fortran/expr.cc gcc-15.3.0/gcc/fortran/expr.cc
*** gcc-15.2.0/gcc/fortran/expr.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/expr.cc	Fri Jun 12 06:09:06 2026
*************** gfc_is_simply_contiguous (gfc_expr *expr
*** 6232,6237 ****
--- 6232,6245 ----
  	      || (sym->as && sym->as->type == AS_ASSUMED_SHAPE))))
      return false;
  
+   /* An associate variable may point to a non-contiguous target.  */
+   if (ar && ar->type == AR_FULL
+       && sym->attr.associate_var && !sym->attr.contiguous
+       && sym->assoc
+       && sym->assoc->target)
+     return gfc_is_simply_contiguous (sym->assoc->target, strict,
+ 				     permit_element);
+ 
    if (!ar || ar->type == AR_FULL)
      return true;
  
diff -Nrcpad gcc-15.2.0/gcc/fortran/frontend-passes.cc gcc-15.3.0/gcc/fortran/frontend-passes.cc
*** gcc-15.2.0/gcc/fortran/frontend-passes.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/frontend-passes.cc	Fri Jun 12 06:09:06 2026
*************** create_var (gfc_expr * e, const char *vn
*** 849,854 ****
--- 849,855 ----
    symbol->attr.referenced = 1;
    symbol->attr.dimension = e->rank > 0;
    symbol->attr.fe_temp = 1;
+   symbol->attr.automatic = 1;
    gfc_commit_symbol (symbol);
  
    result = gfc_get_expr ();
*************** insert_index (gfc_expr *e, gfc_symbol *s
*** 2745,2750 ****
--- 2746,2811 ----
  
  }
  
+ static bool
+ evaluate_loop_bound (gfc_expr *e, gfc_symbol *sym, mpz_t val, mpz_t ret)
+ {
+   if (e->expr_type == EXPR_CONSTANT)
+     {
+       mpz_init_set (ret, e->value.integer);
+       return true;
+     }
+ 
+   return insert_index (e, sym, val, ret);
+ }
+ 
+ /* Return true if any loop nested inside LOOP_INDEX is not provably entered
+    after substituting OUTER_VAL for OUTER_SYM.  In that case the guarded array
+    reference may never be evaluated, so do not warn from the outer loop alone.  */
+ 
+ static bool
+ inner_loop_may_be_skipped (int loop_index, gfc_symbol *outer_sym, mpz_t outer_val)
+ {
+   int k;
+   do_t *lp;
+ 
+   FOR_EACH_VEC_ELT_FROM (doloop_list, k, lp, loop_index + 1)
+     {
+       gfc_code *loop = lp->c;
+       int sgn, cmp;
+       mpz_t do_start, do_end, do_step;
+ 
+       if (loop == NULL || loop->ext.iterator == NULL || loop->ext.iterator->var == NULL)
+ 	return true;
+ 
+       if (!evaluate_loop_bound (loop->ext.iterator->step, outer_sym, outer_val, do_step))
+ 	return true;
+ 
+       sgn = mpz_cmp_ui (do_step, 0);
+       if (sgn == 0)
+ 	{
+ 	  mpz_clear (do_step);
+ 	  return true;
+ 	}
+ 
+       if (!evaluate_loop_bound (loop->ext.iterator->start, outer_sym, outer_val, do_start)
+ 	  || !evaluate_loop_bound (loop->ext.iterator->end, outer_sym, outer_val, do_end))
+ 	{
+ 	  mpz_clear (do_step);
+ 	  return true;
+ 	}
+ 
+       cmp = mpz_cmp (do_end, do_start);
+       mpz_clear (do_start);
+       mpz_clear (do_end);
+       mpz_clear (do_step);
+ 
+       if ((sgn > 0 && cmp < 0) || (sgn < 0 && cmp > 0))
+ 	return true;
+     }
+ 
+   return false;
+ }
+ 
  /* Check array subscripts for possible out-of-bounds accesses in DO
     loops with constant bounds.  */
  
*************** do_subscript (gfc_expr **e)
*** 2879,2888 ****
  		  mpz_clear (rem);
  		}
  
  	      for (i = 0; i< ar->dimen; i++)
  		{
  		  mpz_t val;
! 		  if (ar->dimen_type[i] == DIMEN_ELEMENT && have_do_start
  		      && insert_index (ar->start[i], do_sym, do_start, val))
  		    {
  		      if (ar->as->lower[i]
--- 2940,2954 ----
  		  mpz_clear (rem);
  		}
  
+ 	      bool skip_start = have_do_start
+ 				&& inner_loop_may_be_skipped (j, do_sym, do_start);
+ 	      bool skip_end = have_do_end
+ 			      && inner_loop_may_be_skipped (j, do_sym, do_end);
+ 
  	      for (i = 0; i< ar->dimen; i++)
  		{
  		  mpz_t val;
! 		  if (ar->dimen_type[i] == DIMEN_ELEMENT && have_do_start && !skip_start
  		      && insert_index (ar->start[i], do_sym, do_start, val))
  		    {
  		      if (ar->as->lower[i]
*************** do_subscript (gfc_expr **e)
*** 2908,2914 ****
  		      mpz_clear (val);
  		    }
  
! 		  if (ar->dimen_type[i] == DIMEN_ELEMENT && have_do_end
  		      && insert_index (ar->start[i], do_sym, do_end, val))
  		    {
  		      if (ar->as->lower[i]
--- 2974,2980 ----
  		      mpz_clear (val);
  		    }
  
! 		  if (ar->dimen_type[i] == DIMEN_ELEMENT && have_do_end && !skip_end
  		      && insert_index (ar->start[i], do_sym, do_end, val))
  		    {
  		      if (ar->as->lower[i]
*************** create_do_loop (gfc_expr *start, gfc_exp
*** 3742,3747 ****
--- 3808,3814 ----
    symbol->attr.referenced = 1;
    symbol->attr.dimension = 0;
    symbol->attr.fe_temp = 1;
+   symbol->attr.automatic = 1;
    gfc_commit_symbol (symbol);
  
    i = gfc_get_expr ();
diff -Nrcpad gcc-15.2.0/gcc/fortran/gfortran.h gcc-15.3.0/gcc/fortran/gfortran.h
*** gcc-15.2.0/gcc/fortran/gfortran.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/gfortran.h	Fri Jun 12 06:09:06 2026
*************** bool gfc_missing_attr (symbol_attribute
*** 3693,3698 ****
--- 3693,3699 ----
  bool gfc_copy_attr (symbol_attribute *, symbol_attribute *, locus *);
  int gfc_copy_dummy_sym (gfc_symbol **, gfc_symbol *, int);
  bool gfc_add_component (gfc_symbol *, const char *, gfc_component **);
+ void gfc_free_component (gfc_component *);
  gfc_symbol *gfc_use_derived (gfc_symbol *);
  gfc_component *gfc_find_component (gfc_symbol *, const char *, bool, bool,
                                     gfc_ref **);
*************** bool gfc_reference_st_label (gfc_st_labe
*** 3706,3711 ****
--- 3707,3713 ----
  
  gfc_namespace *gfc_get_namespace (gfc_namespace *, int);
  gfc_symtree *gfc_new_symtree (gfc_symtree **, const char *);
+ void gfc_delete_symtree (gfc_symtree **, const char *);
  gfc_symtree *gfc_find_symtree (gfc_symtree *, const char *);
  gfc_symtree *gfc_get_unique_symtree (gfc_namespace *);
  gfc_user_op *gfc_get_uop (const char *);
diff -Nrcpad gcc-15.2.0/gcc/fortran/gfortran.info gcc-15.3.0/gcc/fortran/gfortran.info
*** gcc-15.2.0/gcc/fortran/gfortran.info	Fri Aug  8 07:17:57 2025
--- gcc-15.3.0/gcc/fortran/gfortran.info	Fri Jun 12 06:36:44 2026
***************
*** 1,7 ****
! This is gfortran.info, produced by makeinfo version 6.5 from
  gfortran.texi.
  
! Copyright (C) 1999-2025 Free Software Foundation, Inc.
  
     Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,7 ----
! This is gfortran.info, produced by makeinfo version 7.1 from
  gfortran.texi.
  
! Copyright Â© 1999-2025 Free Software Foundation, Inc.
  
     Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** START-INFO-DIR-ENTRY
*** 26,37 ****
  END-INFO-DIR-ENTRY
  
     This file documents the use and the internals of the GNU Fortran
! compiler, ('gfortran').
  
     Published by the Free Software Foundation 51 Franklin Street, Fifth
  Floor Boston, MA 02110-1301 USA
  
!    Copyright (C) 1999-2025 Free Software Foundation, Inc.
  
     Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 26,37 ----
  END-INFO-DIR-ENTRY
  
     This file documents the use and the internals of the GNU Fortran
! compiler, (â€˜gfortranâ€™).
  
     Published by the Free Software Foundation 51 Franklin Street, Fifth
  Floor Boston, MA 02110-1301 USA
  
!    Copyright Â© 1999-2025 Free Software Foundation, Inc.
  
     Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** File: gfortran.info,  Node: Top,  Next:
*** 57,64 ****
  Introduction
  ************
  
! This manual documents the use of 'gfortran', the GNU Fortran compiler.
! You can find in this manual how to invoke 'gfortran', as well as its
  features and incompatibilities.
  
  * Menu:
--- 57,64 ----
  Introduction
  ************
  
! This manual documents the use of â€˜gfortranâ€™, the GNU Fortran compiler.
! You can find in this manual how to invoke â€˜gfortranâ€™, as well as its
  features and incompatibilities.
  
  * Menu:
*************** features and incompatibilities.
*** 66,72 ****
  * Introduction::
  
  Part I: Invoking GNU Fortran
! * Invoking GNU Fortran:: Command options supported by 'gfortran'.
  * Runtime::              Influencing runtime behavior with environment variables.
  
  Part II: Language Reference
--- 66,72 ----
  * Introduction::
  
  Part I: Invoking GNU Fortran
! * Invoking GNU Fortran:: Command options supported by â€˜gfortranâ€™.
  * Runtime::              Influencing runtime behavior with environment variables.
  
  Part II: Language Reference
*************** File: gfortran.info,  Node: About GNU Fo
*** 104,113 ****
  1.1 About GNU Fortran
  =====================
  
! The GNU Fortran compiler is the successor to 'g77', the Fortran 77 front
  end included in GCC prior to version 4 (released in 2005).  While it is
! backward-compatible with most 'g77' extensions and command-line options,
! 'gfortran' is a completely new implementation designed to support more
  modern dialects of Fortran.  GNU Fortran implements the Fortran 77, 90
  and 95 standards completely, most of the Fortran 2003 and 2008
  standards, and some features from the 2018 standard.  It also implements
--- 104,113 ----
  1.1 About GNU Fortran
  =====================
  
! The GNU Fortran compiler is the successor to â€˜g77â€™, the Fortran 77 front
  end included in GCC prior to version 4 (released in 2005).  While it is
! backward-compatible with most â€˜g77â€™ extensions and command-line options,
! â€˜gfortranâ€™ is a completely new implementation designed to support more
  modern dialects of Fortran.  GNU Fortran implements the Fortran 77, 90
  and 95 standards completely, most of the Fortran 2003 and 2008
  standards, and some features from the 2018 standard.  It also implements
*************** see <https://gcc.gnu.org/wiki/GfortranAp
*** 128,198 ****
  
     GNU Fortran provides the following functionality:
  
!    * Read a program, stored in a file and containing "source code"
       instructions written in Fortran 77.
  
!    * Translate the program into instructions a computer can carry out
       more quickly than it takes to translate the original Fortran
       instructions.  The result after compilation of a program is
!      "machine code", which is efficiently translated and processed by a
       machine such as your computer.  Humans usually are not as good
       writing machine code as they are at writing Fortran (or C++, Ada,
       or Java), because it is easy to make tiny mistakes writing machine
       code.
  
!    * Provide information about the reasons why the compiler may be
       unable to create a binary from the source code, for example if the
       source code is flawed.  The Fortran language standards require that
       the compiler can point out mistakes in your code.  An incorrect
!      usage of the language causes an "error message".
  
       The compiler also attempts to diagnose cases where your program
       contains a correct usage of the language, but instructs the
       computer to do something questionable.  This kind of diagnostic
!      message is called a "warning message".
  
!    * Provide optional information about the translation passes from the
       source code to machine code.  This can help you to find the cause
       of certain bugs which may not be obvious in the source code, but
       may be more easily found at a lower level compiler output.  It also
       helps developers to find bugs in the compiler itself.
  
!    * Provide information in the generated machine code that can make it
       easier to find bugs in the program (using a debugging tool, called
!      a "debugger", such as the GNU Debugger 'gdb').
  
!    * Locate and gather machine code already generated to perform actions
       requested by statements in the program.  This machine code is
!      organized into "modules" and is located and "linked" to the user
       program.
  
     The GNU Fortran compiler consists of several components:
  
!    * A version of the 'gcc' command (which also might be installed as
!      the system's 'cc' command) that also understands and accepts
!      Fortran source code.  The 'gcc' command is the "driver" program for
!      all the languages in the GNU Compiler Collection (GCC); With 'gcc',
       you can compile the source code of any language for which a front
       end is available in GCC.
  
!    * The 'gfortran' command itself, which also might be installed as the
!      system's 'f95' command.  'gfortran' is just another driver program,
       but specifically for the Fortran compiler only.  The primary
!      difference between the 'gcc' and 'gfortran' commands is that the
       latter automatically links the correct libraries to your program.
  
!    * A collection of run-time libraries.  These libraries contain the
       machine code needed to support capabilities of the Fortran language
       that are not directly provided by the machine code generated by the
!      'gfortran' compilation phase, such as intrinsic functions and
       subroutines, and routines for interaction with files and the
       operating system.
  
!    * The Fortran compiler itself, ('f951').  This is the GNU Fortran
       parser and code generator, linked to and interfaced with the GCC
!      backend library.  'f951' "translates" the source code to assembler
       code.  You would typically not use this program directly; instead,
!      the 'gcc' or 'gfortran' driver programs call it for you.
  
  
  File: gfortran.info,  Node: GNU Fortran and GCC,  Next: Standards,  Prev: About GNU Fortran,  Up: Introduction
--- 128,198 ----
  
     GNU Fortran provides the following functionality:
  
!    â€¢ Read a program, stored in a file and containing â€œsource codeâ€�
       instructions written in Fortran 77.
  
!    â€¢ Translate the program into instructions a computer can carry out
       more quickly than it takes to translate the original Fortran
       instructions.  The result after compilation of a program is
!      â€œmachine codeâ€�, which is efficiently translated and processed by a
       machine such as your computer.  Humans usually are not as good
       writing machine code as they are at writing Fortran (or C++, Ada,
       or Java), because it is easy to make tiny mistakes writing machine
       code.
  
!    â€¢ Provide information about the reasons why the compiler may be
       unable to create a binary from the source code, for example if the
       source code is flawed.  The Fortran language standards require that
       the compiler can point out mistakes in your code.  An incorrect
!      usage of the language causes an â€œerror messageâ€�.
  
       The compiler also attempts to diagnose cases where your program
       contains a correct usage of the language, but instructs the
       computer to do something questionable.  This kind of diagnostic
!      message is called a â€œwarning messageâ€�.
  
!    â€¢ Provide optional information about the translation passes from the
       source code to machine code.  This can help you to find the cause
       of certain bugs which may not be obvious in the source code, but
       may be more easily found at a lower level compiler output.  It also
       helps developers to find bugs in the compiler itself.
  
!    â€¢ Provide information in the generated machine code that can make it
       easier to find bugs in the program (using a debugging tool, called
!      a â€œdebuggerâ€�, such as the GNU Debugger â€˜gdbâ€™).
  
!    â€¢ Locate and gather machine code already generated to perform actions
       requested by statements in the program.  This machine code is
!      organized into â€œmodulesâ€� and is located and â€œlinkedâ€� to the user
       program.
  
     The GNU Fortran compiler consists of several components:
  
!    â€¢ A version of the â€˜gccâ€™ command (which also might be installed as
!      the system's â€˜ccâ€™ command) that also understands and accepts
!      Fortran source code.  The â€˜gccâ€™ command is the â€œdriverâ€� program for
!      all the languages in the GNU Compiler Collection (GCC); With â€˜gccâ€™,
       you can compile the source code of any language for which a front
       end is available in GCC.
  
!    â€¢ The â€˜gfortranâ€™ command itself, which also might be installed as the
!      system's â€˜f95â€™ command.  â€˜gfortranâ€™ is just another driver program,
       but specifically for the Fortran compiler only.  The primary
!      difference between the â€˜gccâ€™ and â€˜gfortranâ€™ commands is that the
       latter automatically links the correct libraries to your program.
  
!    â€¢ A collection of run-time libraries.  These libraries contain the
       machine code needed to support capabilities of the Fortran language
       that are not directly provided by the machine code generated by the
!      â€˜gfortranâ€™ compilation phase, such as intrinsic functions and
       subroutines, and routines for interaction with files and the
       operating system.
  
!    â€¢ The Fortran compiler itself, (â€˜f951â€™).  This is the GNU Fortran
       parser and code generator, linked to and interfaced with the GCC
!      backend library.  â€˜f951â€™ "translates" the source code to assembler
       code.  You would typically not use this program directly; instead,
!      the â€˜gccâ€™ or â€˜gfortranâ€™ driver programs call it for you.
  
  
  File: gfortran.info,  Node: GNU Fortran and GCC,  Next: Standards,  Prev: About GNU Fortran,  Up: Introduction
*************** File: gfortran.info,  Node: GNU Fortran
*** 200,231 ****
  1.2 GNU Fortran and GCC
  =======================
  
! GNU Fortran is a part of GCC, the "GNU Compiler Collection".  GCC
  consists of a collection of front ends for various languages, which
  translate the source code into a language-independent form called
! "GENERIC". This is then processed by a common middle end which provides
  optimization, and then passed to one of a collection of back ends which
  generate code for different computer architectures and operating
  systems.
  
!    Functionally, this is implemented with a driver program ('gcc') which
  provides the command-line interface for the compiler.  It calls the
! relevant compiler front-end program (e.g., 'f951' for Fortran) for each
  file in the source code, and then calls the assembler and linker as
  appropriate to produce the compiled output.  In a copy of GCC that has
! been compiled with Fortran language support enabled, 'gcc' recognizes
! files with '.f', '.for', '.ftn', '.f90', '.f95', '.f03' and '.f08'
  extensions as Fortran source code, and compiles it accordingly.  A
! 'gfortran' driver program is also provided, which is identical to 'gcc'
  except that it automatically links the Fortran runtime libraries into
  the compiled program.
  
!    Source files with '.f', '.for', '.fpp', '.ftn', '.F', '.FOR', '.FPP',
! and '.FTN' extensions are treated as fixed form.  Source files with
! '.f90', '.f95', '.f03', '.f08', '.F90', '.F95', '.F03' and '.F08'
  extensions are treated as free form.  The capitalized versions of either
  form are run through preprocessing.  Source files with the lower case
! '.fpp' extension are also run through preprocessing.
  
     This manual specifically documents the Fortran front end, which
  handles the programming language's syntax and semantics.  The aspects of
--- 200,231 ----
  1.2 GNU Fortran and GCC
  =======================
  
! GNU Fortran is a part of GCC, the â€œGNU Compiler Collectionâ€�.  GCC
  consists of a collection of front ends for various languages, which
  translate the source code into a language-independent form called
! â€œGENERICâ€�. This is then processed by a common middle end which provides
  optimization, and then passed to one of a collection of back ends which
  generate code for different computer architectures and operating
  systems.
  
!    Functionally, this is implemented with a driver program (â€˜gccâ€™) which
  provides the command-line interface for the compiler.  It calls the
! relevant compiler front-end program (e.g., â€˜f951â€™ for Fortran) for each
  file in the source code, and then calls the assembler and linker as
  appropriate to produce the compiled output.  In a copy of GCC that has
! been compiled with Fortran language support enabled, â€˜gccâ€™ recognizes
! files with â€˜.fâ€™, â€˜.forâ€™, â€˜.ftnâ€™, â€˜.f90â€™, â€˜.f95â€™, â€˜.f03â€™ and â€˜.f08â€™
  extensions as Fortran source code, and compiles it accordingly.  A
! â€˜gfortranâ€™ driver program is also provided, which is identical to â€˜gccâ€™
  except that it automatically links the Fortran runtime libraries into
  the compiled program.
  
!    Source files with â€˜.fâ€™, â€˜.forâ€™, â€˜.fppâ€™, â€˜.ftnâ€™, â€˜.Fâ€™, â€˜.FORâ€™, â€˜.FPPâ€™,
! and â€˜.FTNâ€™ extensions are treated as fixed form.  Source files with
! â€˜.f90â€™, â€˜.f95â€™, â€˜.f03â€™, â€˜.f08â€™, â€˜.F90â€™, â€˜.F95â€™, â€˜.F03â€™ and â€˜.F08â€™
  extensions are treated as free form.  The capitalized versions of either
  form are run through preprocessing.  Source files with the lower case
! â€˜.fppâ€™ extension are also run through preprocessing.
  
     This manual specifically documents the Fortran front end, which
  handles the programming language's syntax and semantics.  The aspects of
*************** enhancements to allocatable arrays.
*** 264,271 ****
  2003) and ISO/IEC 1539-1:2010 (Fortran 2008).  It has partial support
  for features introduced in ISO/IEC 1539:2018 (Fortran 2018), the most
  recent version of the Fortran language standard, including full support
! for the Technical Specification 'Further Interoperability of Fortran
! with C' (ISO/IEC TS 29113:2012).  More details on support for these
  standards can be found in the following sections of the documentation.
  
  
--- 264,271 ----
  2003) and ISO/IEC 1539-1:2010 (Fortran 2008).  It has partial support
  for features introduced in ISO/IEC 1539:2018 (Fortran 2018), the most
  recent version of the Fortran language standard, including full support
! for the Technical Specification â€˜Further Interoperability of Fortran
! with Câ€™ (ISO/IEC TS 29113:2012).  More details on support for these
  standards can be found in the following sections of the documentation.
  
  
*************** for them, which work with GNU Fortran.
*** 281,289 ****
  <http://user.astro.wisc.edu/~townsend/static.php?ref=iso-varying-string>.
  
     Deferred-length character strings of Fortran 2003 supports part of
! the features of 'ISO_VARYING_STRING' and should be considered as
  replacement.  (Namely, allocatable or pointers of the type
! 'character(len=:)'.)
  
     Part 3 of the Fortran 95 standard (ISO/IEC 1539-3:1998) defines
  Conditional Compilation, which is not widely used and not directly
--- 281,289 ----
  <http://user.astro.wisc.edu/~townsend/static.php?ref=iso-varying-string>.
  
     Deferred-length character strings of Fortran 2003 supports part of
! the features of â€˜ISO_VARYING_STRINGâ€™ and should be considered as
  replacement.  (Namely, allocatable or pointers of the type
! â€˜character(len=:)â€™.)
  
     Part 3 of the Fortran 95 standard (ISO/IEC 1539-3:1998) defines
  Conditional Compilation, which is not widely used and not directly
*************** the wiki (https://gcc.gnu.org/wiki/Fortr
*** 312,322 ****
  information about the current implementation status.  In particular, the
  following are not yet supported:
  
!    * 'DO CONCURRENT' and 'FORALL' do not recognize a type-spec in the
       loop header.
  
!    * The change to permit any constant expression in subscripts and
!      nested implied-do limits in a 'DATA' statement has not been
       implemented.
  
  
--- 312,322 ----
  information about the current implementation status.  In particular, the
  following are not yet supported:
  
!    â€¢ â€˜DO CONCURRENTâ€™ and â€˜FORALLâ€™ do not recognize a type-spec in the
       loop header.
  
!    â€¢ The change to permit any constant expression in subscripts and
!      nested implied-do limits in a â€˜DATAâ€™ statement has not been
       implemented.
  
  
*************** Fortran 2018 (ISO/IEC 1539:2018) is the
*** 329,363 ****
  Fortran language standard.  GNU Fortran implements some of the new
  features of this standard:
  
!    * All Fortran 2018 features derived from ISO/IEC TS 29113:2012,
       "Further Interoperability of Fortran with C", are supported by GNU
       Fortran.  This includes assumed-type and assumed-rank objects and
!      the 'SELECT RANK' construct as well as the parts relating to
!      'BIND(C)' functions.  See also *note Further Interoperability of
       Fortran with C::.
  
!    * GNU Fortran supports a subset of features derived from ISO/IEC TS
       18508:2015, "Additional Parallel Features in Fortran":
  
!         * The new atomic ADD, CAS, FETCH and ADD/OR/XOR, OR and XOR
            intrinsics.
  
!         * The 'CO_MIN' and 'CO_MAX' and 'SUM' reduction intrinsics, and
!           the 'CO_BROADCAST' and 'CO_REDUCE' intrinsic, except that
            those do not support polymorphic types or types with
            allocatable, pointer or polymorphic components.
  
!         * Events ('EVENT POST', 'EVENT WAIT', 'EVENT_QUERY').
  
!         * Failed images ('FAIL IMAGE', 'IMAGE_STATUS', 'FAILED_IMAGES',
!           'STOPPED_IMAGES').
  
!    * An 'ERROR STOP' statement is permitted in a 'PURE' procedure.
  
!    * GNU Fortran supports the 'IMPLICIT NONE' statement with an
!      'implicit-none-spec-list'.
  
!    * The behavior of the 'INQUIRE' statement with the 'RECL=' specifier
       now conforms to Fortran 2018.
  
  
--- 329,363 ----
  Fortran language standard.  GNU Fortran implements some of the new
  features of this standard:
  
!    â€¢ All Fortran 2018 features derived from ISO/IEC TS 29113:2012,
       "Further Interoperability of Fortran with C", are supported by GNU
       Fortran.  This includes assumed-type and assumed-rank objects and
!      the â€˜SELECT RANKâ€™ construct as well as the parts relating to
!      â€˜BIND(C)â€™ functions.  See also *note Further Interoperability of
       Fortran with C::.
  
!    â€¢ GNU Fortran supports a subset of features derived from ISO/IEC TS
       18508:2015, "Additional Parallel Features in Fortran":
  
!         â€¢ The new atomic ADD, CAS, FETCH and ADD/OR/XOR, OR and XOR
            intrinsics.
  
!         â€¢ The â€˜CO_MINâ€™ and â€˜CO_MAXâ€™ and â€˜SUMâ€™ reduction intrinsics, and
!           the â€˜CO_BROADCASTâ€™ and â€˜CO_REDUCEâ€™ intrinsic, except that
            those do not support polymorphic types or types with
            allocatable, pointer or polymorphic components.
  
!         â€¢ Events (â€˜EVENT POSTâ€™, â€˜EVENT WAITâ€™, â€˜EVENT_QUERYâ€™).
  
!         â€¢ Failed images (â€˜FAIL IMAGEâ€™, â€˜IMAGE_STATUSâ€™, â€˜FAILED_IMAGESâ€™,
!           â€˜STOPPED_IMAGESâ€™).
  
!    â€¢ An â€˜ERROR STOPâ€™ statement is permitted in a â€˜PUREâ€™ procedure.
  
!    â€¢ GNU Fortran supports the â€˜IMPLICIT NONEâ€™ statement with an
!      â€˜implicit-none-spec-listâ€™.
  
!    â€¢ The behavior of the â€˜INQUIREâ€™ statement with the â€˜RECL=â€™ specifier
       now conforms to Fortran 2018.
  
  
*************** File: gfortran.info,  Node: Invoking GNU
*** 366,390 ****
  2 GNU Fortran Command Options
  *****************************
  
! The 'gfortran' command supports all the options supported by the 'gcc'
  command.  Only options specific to GNU Fortran are documented here.
  
     *Note GCC Command Options: (gcc)Invoking GCC, for information on the
! non-Fortran-specific aspects of the 'gcc' command (and, therefore, the
! 'gfortran' command).
  
!    All GCC and GNU Fortran options are accepted both by 'gfortran' and
! by 'gcc' (as well as any other drivers built at the same time, such as
! 'g++'), since adding GNU Fortran to the GCC distribution enables
  acceptance of GNU Fortran options by all of the relevant drivers.
  
     In some cases, options have positive and negative forms; the negative
! form of '-ffoo' would be '-fno-foo'.  This manual documents only one of
  these two forms, whichever one is not the default.
  
  * Menu:
  
! * Option Summary::      Brief list of all 'gfortran' options,
                          without explanations.
  * Fortran Dialect Options::  Controlling the variant of Fortran language
                               compiled.
--- 366,390 ----
  2 GNU Fortran Command Options
  *****************************
  
! The â€˜gfortranâ€™ command supports all the options supported by the â€˜gccâ€™
  command.  Only options specific to GNU Fortran are documented here.
  
     *Note GCC Command Options: (gcc)Invoking GCC, for information on the
! non-Fortran-specific aspects of the â€˜gccâ€™ command (and, therefore, the
! â€˜gfortranâ€™ command).
  
!    All GCC and GNU Fortran options are accepted both by â€˜gfortranâ€™ and
! by â€˜gccâ€™ (as well as any other drivers built at the same time, such as
! â€˜g++â€™), since adding GNU Fortran to the GCC distribution enables
  acceptance of GNU Fortran options by all of the relevant drivers.
  
     In some cases, options have positive and negative forms; the negative
! form of â€˜-ffooâ€™ would be â€˜-fno-fooâ€™.  This manual documents only one of
  these two forms, whichever one is not the default.
  
  * Menu:
  
! * Option Summary::      Brief list of all â€˜gfortranâ€™ options,
                          without explanations.
  * Fortran Dialect Options::  Controlling the variant of Fortran language
                               compiled.
*************** these two forms, whichever one is not th
*** 399,405 ****
                          and register usage.
  * Interoperability Options::  Options for interoperability with other
                                languages.
! * Environment Variables:: Environment variables that affect 'gfortran'.
  
  
  File: gfortran.info,  Node: Option Summary,  Next: Fortran Dialect Options,  Up: Invoking GNU Fortran
--- 399,405 ----
                          and register usage.
  * Interoperability Options::  Options for interoperability with other
                                languages.
! * Environment Variables:: Environment variables that affect â€˜gfortranâ€™.
  
  
  File: gfortran.info,  Node: Option Summary,  Next: Fortran Dialect Options,  Up: Invoking GNU Fortran
*************** File: gfortran.info,  Node: Fortran Dial
*** 513,712 ****
  The following options control the details of the Fortran dialect
  accepted by the compiler:
  
! '-ffree-form'
! '-ffixed-form'
       Specify the layout used by the source file.  The free form layout
       was introduced in Fortran 90.  Fixed form was traditionally used in
       older Fortran programs.  When neither option is specified, the
       source form is determined by the file extension.
  
! '-fall-intrinsics'
       This option causes all intrinsic procedures (including the
       GNU-specific extensions) to be accepted.  This can be useful with
!      '-std=' to force standard compliance but get access to the full
!      range of intrinsics available with 'gfortran'.  As a consequence,
!      '-Wintrinsics-std' is ignored and no user-defined procedure with
       the same name as any intrinsic is called except when it is
!      explicitly declared 'EXTERNAL'.
  
! '-fallow-argument-mismatch'
       Some code contains calls to external procedures with mismatches
       between the calls and the procedure definition, or with mismatches
       between different calls.  Such code is nonconforming, and is
       usually flagged with an error.  This options degrades the error to
       a warning that can only be disabled by disabling all warnings via
!      '-w'.  Only a single occurrence per argument is flagged by this
!      warning.  '-fallow-argument-mismatch' is implied by '-std=legacy'.
  
       Using this option is _strongly_ discouraged.  It is possible to
       provide standard-conforming code that allows different types of
!      arguments by using an explicit interface and 'TYPE(*)'.
  
! '-fallow-invalid-boz'
       A BOZ literal constant can occur in a limited number of contexts in
       standard conforming Fortran.  This option degrades an error
       condition to a warning, and allows a BOZ literal constant to appear
       where the Fortran standard would otherwise prohibit its use.
  
! '-fd-lines-as-code'
! '-fd-lines-as-comments'
!      Enable special treatment for lines beginning with 'd' or 'D' in
!      fixed form sources.  If the '-fd-lines-as-code' option is given
       they are treated as if the first column contained a blank.  If the
!      '-fd-lines-as-comments' option is given, they are treated as
       comment lines.
  
! '-fdec'
       DEC compatibility mode.  Enables extensions and other features that
       mimic the default behavior of older compilers (such as DEC). These
       features are nonstandard and should be avoided at all costs.  For
       details on GNU Fortran's implementation of these extensions see the
       full documentation.
  
!      Other flags enabled by this switch are: '-fdollar-ok'
!      '-fcray-pointer' '-fdec-char-conversions' '-fdec-structure'
!      '-fdec-intrinsic-ints' '-fdec-static' '-fdec-math' '-fdec-include'
!      '-fdec-blank-format-item' '-fdec-format-defaults'
  
!      If '-fd-lines-as-code'/'-fd-lines-as-comments' are unset, then
!      '-fdec' also sets '-fd-lines-as-comments'.
  
! '-fdec-char-conversions'
!      Enable the use of character literals in assignments and 'DATA'
       statements for non-character variables.
  
! '-fdec-structure'
!      Enable DEC 'STRUCTURE' and 'RECORD' as well as 'UNION', 'MAP', and
       dot ('.')  as a member separator (in addition to '%').  This is
       provided for compatibility only; Fortran 90 derived types should be
       used instead where possible.
  
! '-fdec-intrinsic-ints'
       Enable B/I/J/K kind variants of existing integer functions (e.g.
!      'BIAND', 'IIAND', 'JIAND', etc...).  For a complete list of
       intrinsics see *note Intrinsic Procedures::.
  
! '-fdec-math'
       Obsolete flag.  The purpose of this option was to enable legacy
!      math intrinsics such as 'COTAN' and degree-valued trigonometric
!      functions (e.g.  'TAND', 'ATAND', etc...)  for compatibility with
       older code.  This option is no longer operable.  The trigonometric
       functions are now either part of Fortran 2023 or GNU extensions.
  
! '-fdec-static'
!      Enable DEC-style 'STATIC' and 'AUTOMATIC' attributes to explicitly
       specify the storage of variables and other objects.
  
! '-fdec-include'
!      Enable parsing of 'INCLUDE' as a statement in addition to parsing
!      it as 'INCLUDE' line.  When parsed as 'INCLUDE' statement,
!      'INCLUDE' does not have to be on a single line and can use line
       continuations.
  
! '-fdec-format-defaults'
!      Enable format specifiers 'F', 'G' and 'I' to be used without width
       specifiers; default widths are used instead.
  
! '-fdec-blank-format-item'
       Enable a blank format item at the end of a format specification
       i.e.  nothing following the final comma.
  
! '-fdollar-ok'
!      Allow '$' as a valid non-first character in a symbol name.  Symbols
!      that start with '$' are rejected since it is unclear which rules to
       apply to implicit typing as different vendors implement different
!      rules.  Using '$' in 'IMPLICIT' statements is also rejected.
  
! '-fbackslash'
       Change the interpretation of backslashes in string literals from a
       single backslash character to "C-style" escape characters.  The
!      following combinations are expanded: '\a', '\b', '\f', '\n', '\r',
!      '\t', '\v', '\\', and '\0' to the ASCII characters alert,
       backspace, form feed, newline, carriage return, horizontal tab,
       vertical tab, backslash, and NUL, respectively.  Additionally,
!      '\xNN', '\uNNNN' and '\UNNNNNNNN' (where each N is a hexadecimal
       digit) are translated into the Unicode characters corresponding to
       the specified code points.  All other combinations of a character
!      preceded by '\' are unexpanded.
  
! '-fmodule-private'
!      Set the default accessibility of module entities to 'PRIVATE'.
       Use-associated entities are not accessible unless they are
!      explicitly declared as 'PUBLIC'.
  
! '-ffixed-line-length-N'
       Set column after which characters are ignored in typical fixed-form
!      lines in the source file, and, unless '-fno-pad-source', through
       which spaces are assumed (as if padded to that length) after the
       ends of short fixed-form lines.
  
       Popular values for N include 72 (the standard and the default), 80
       (card image), and 132 (corresponding to "extended-source" options
!      in some popular compilers).  N may also be 'none', meaning that the
       entire line is meaningful and that continued character constants
       never have implicit spaces appended to them to fill out the line.
!      '-ffixed-line-length-0' means the same thing as
!      '-ffixed-line-length-none'.
  
! '-fno-pad-source'
       By default fixed-form lines have spaces assumed (as if padded to
       that length) after the ends of short fixed-form lines.  This is not
!      done either if '-ffixed-line-length-0', '-ffixed-line-length-none'
!      or if '-fno-pad-source' option is used.  With any of those options
       continued character constants never have implicit spaces appended
       to them to fill out the line.
  
! '-ffree-line-length-N'
       Set column after which characters are ignored in typical free-form
       lines in the source file.  The default value is 132.  N may be
!      'none', meaning that the entire line is meaningful.
!      '-ffree-line-length-0' means the same thing as
!      '-ffree-line-length-none'.
  
! '-fmax-identifier-length=N'
       Specify the maximum allowed identifier length.  Typical values are
       31 (Fortran 95) and 63 (Fortran 2003 and later).
  
! '-fimplicit-none'
       Specify that no implicit typing is allowed, unless overridden by
!      explicit 'IMPLICIT' statements.  This is the equivalent of adding
!      'implicit none' to the start of every procedure.
  
! '-fcray-pointer'
       Enable the Cray pointer extension, which provides C-like pointer
       functionality.
  
! '-fopenacc'
!      Enable handling of OpenACC directives '!$acc' in free-form Fortran
!      and '!$acc', 'c$acc' and '*$acc' in fixed-form Fortran.  When
!      '-fopenacc' is specified, the compiler generates accelerated code
       according to the OpenACC Application Programming Interface v2.6
!      <https://www.openacc.org>.  This option implies '-pthread', and
!      thus is only supported on targets that have support for '-pthread'.
!      The option '-fopenacc' implies '-frecursive'.
  
! '-fopenmp'
!      Enable handling of OpenMP directives '!$omp' in Fortran.  It
!      additionally enables the conditional compilation sentinel '!$' in
       Fortran.  In fixed source form Fortran, the sentinels can also
!      start with 'c' or '*'.  When '-fopenmp' is specified, the compiler
       generates parallel code according to the OpenMP Application Program
       Interface v4.5 <https://www.openmp.org>.  This option implies
!      '-pthread', and thus is only supported on targets that have support
!      for '-pthread'.  '-fopenmp' implies '-fopenmp-simd' and
!      '-frecursive'.
  
! '-fopenmp-allocators'
       Enables handling of allocation, reallocation and deallocation of
       Fortran allocatable and pointer variables that are allocated using
!      the '!$omp allocators' and '!$omp allocate' constructs.  Files
       containing either directive have to be compiled with this option in
!      addition to '-fopenmp'.  Additionally, all files that might
       deallocate or reallocate a variable that has been allocated with an
       OpenMP allocator have to be compiled with this option.  This
       includes intrinsic assignment to allocatable variables when
       reallocation may occur and deallocation due to either of the
!      following: end of scope, explicit deallocation, 'intent(out)',
       deallocation of allocatable components etc.  Files not changing the
       allocation status or only for components of a derived type that
       have not been allocated using those two directives do not need to
--- 513,712 ----
  The following options control the details of the Fortran dialect
  accepted by the compiler:
  
! â€˜-ffree-formâ€™
! â€˜-ffixed-formâ€™
       Specify the layout used by the source file.  The free form layout
       was introduced in Fortran 90.  Fixed form was traditionally used in
       older Fortran programs.  When neither option is specified, the
       source form is determined by the file extension.
  
! â€˜-fall-intrinsicsâ€™
       This option causes all intrinsic procedures (including the
       GNU-specific extensions) to be accepted.  This can be useful with
!      â€˜-std=â€™ to force standard compliance but get access to the full
!      range of intrinsics available with â€˜gfortranâ€™.  As a consequence,
!      â€˜-Wintrinsics-stdâ€™ is ignored and no user-defined procedure with
       the same name as any intrinsic is called except when it is
!      explicitly declared â€˜EXTERNALâ€™.
  
! â€˜-fallow-argument-mismatchâ€™
       Some code contains calls to external procedures with mismatches
       between the calls and the procedure definition, or with mismatches
       between different calls.  Such code is nonconforming, and is
       usually flagged with an error.  This options degrades the error to
       a warning that can only be disabled by disabling all warnings via
!      â€˜-wâ€™.  Only a single occurrence per argument is flagged by this
!      warning.  â€˜-fallow-argument-mismatchâ€™ is implied by â€˜-std=legacyâ€™.
  
       Using this option is _strongly_ discouraged.  It is possible to
       provide standard-conforming code that allows different types of
!      arguments by using an explicit interface and â€˜TYPE(*)â€™.
  
! â€˜-fallow-invalid-bozâ€™
       A BOZ literal constant can occur in a limited number of contexts in
       standard conforming Fortran.  This option degrades an error
       condition to a warning, and allows a BOZ literal constant to appear
       where the Fortran standard would otherwise prohibit its use.
  
! â€˜-fd-lines-as-codeâ€™
! â€˜-fd-lines-as-commentsâ€™
!      Enable special treatment for lines beginning with â€˜dâ€™ or â€˜Dâ€™ in
!      fixed form sources.  If the â€˜-fd-lines-as-codeâ€™ option is given
       they are treated as if the first column contained a blank.  If the
!      â€˜-fd-lines-as-commentsâ€™ option is given, they are treated as
       comment lines.
  
! â€˜-fdecâ€™
       DEC compatibility mode.  Enables extensions and other features that
       mimic the default behavior of older compilers (such as DEC). These
       features are nonstandard and should be avoided at all costs.  For
       details on GNU Fortran's implementation of these extensions see the
       full documentation.
  
!      Other flags enabled by this switch are: â€˜-fdollar-okâ€™
!      â€˜-fcray-pointerâ€™ â€˜-fdec-char-conversionsâ€™ â€˜-fdec-structureâ€™
!      â€˜-fdec-intrinsic-intsâ€™ â€˜-fdec-staticâ€™ â€˜-fdec-mathâ€™ â€˜-fdec-includeâ€™
!      â€˜-fdec-blank-format-itemâ€™ â€˜-fdec-format-defaultsâ€™
  
!      If â€˜-fd-lines-as-codeâ€™/â€˜-fd-lines-as-commentsâ€™ are unset, then
!      â€˜-fdecâ€™ also sets â€˜-fd-lines-as-commentsâ€™.
  
! â€˜-fdec-char-conversionsâ€™
!      Enable the use of character literals in assignments and â€˜DATAâ€™
       statements for non-character variables.
  
! â€˜-fdec-structureâ€™
!      Enable DEC â€˜STRUCTUREâ€™ and â€˜RECORDâ€™ as well as â€˜UNIONâ€™, â€˜MAPâ€™, and
       dot ('.')  as a member separator (in addition to '%').  This is
       provided for compatibility only; Fortran 90 derived types should be
       used instead where possible.
  
! â€˜-fdec-intrinsic-intsâ€™
       Enable B/I/J/K kind variants of existing integer functions (e.g.
!      â€˜BIANDâ€™, â€˜IIANDâ€™, â€˜JIANDâ€™, etc...).  For a complete list of
       intrinsics see *note Intrinsic Procedures::.
  
! â€˜-fdec-mathâ€™
       Obsolete flag.  The purpose of this option was to enable legacy
!      math intrinsics such as â€˜COTANâ€™ and degree-valued trigonometric
!      functions (e.g.  â€˜TANDâ€™, â€˜ATANDâ€™, etc...)  for compatibility with
       older code.  This option is no longer operable.  The trigonometric
       functions are now either part of Fortran 2023 or GNU extensions.
  
! â€˜-fdec-staticâ€™
!      Enable DEC-style â€˜STATICâ€™ and â€˜AUTOMATICâ€™ attributes to explicitly
       specify the storage of variables and other objects.
  
! â€˜-fdec-includeâ€™
!      Enable parsing of â€˜INCLUDEâ€™ as a statement in addition to parsing
!      it as â€˜INCLUDEâ€™ line.  When parsed as â€˜INCLUDEâ€™ statement,
!      â€˜INCLUDEâ€™ does not have to be on a single line and can use line
       continuations.
  
! â€˜-fdec-format-defaultsâ€™
!      Enable format specifiers â€˜Fâ€™, â€˜Gâ€™ and â€˜Iâ€™ to be used without width
       specifiers; default widths are used instead.
  
! â€˜-fdec-blank-format-itemâ€™
       Enable a blank format item at the end of a format specification
       i.e.  nothing following the final comma.
  
! â€˜-fdollar-okâ€™
!      Allow â€˜$â€™ as a valid non-first character in a symbol name.  Symbols
!      that start with â€˜$â€™ are rejected since it is unclear which rules to
       apply to implicit typing as different vendors implement different
!      rules.  Using â€˜$â€™ in â€˜IMPLICITâ€™ statements is also rejected.
  
! â€˜-fbackslashâ€™
       Change the interpretation of backslashes in string literals from a
       single backslash character to "C-style" escape characters.  The
!      following combinations are expanded: â€˜\aâ€™, â€˜\bâ€™, â€˜\fâ€™, â€˜\nâ€™, â€˜\râ€™,
!      â€˜\tâ€™, â€˜\vâ€™, â€˜\\â€™, and â€˜\0â€™ to the ASCII characters alert,
       backspace, form feed, newline, carriage return, horizontal tab,
       vertical tab, backslash, and NUL, respectively.  Additionally,
!      â€˜\xNNâ€™, â€˜\uNNNNâ€™ and â€˜\UNNNNNNNNâ€™ (where each N is a hexadecimal
       digit) are translated into the Unicode characters corresponding to
       the specified code points.  All other combinations of a character
!      preceded by â€˜\â€™ are unexpanded.
  
! â€˜-fmodule-privateâ€™
!      Set the default accessibility of module entities to â€˜PRIVATEâ€™.
       Use-associated entities are not accessible unless they are
!      explicitly declared as â€˜PUBLICâ€™.
  
! â€˜-ffixed-line-length-Nâ€™
       Set column after which characters are ignored in typical fixed-form
!      lines in the source file, and, unless â€˜-fno-pad-sourceâ€™, through
       which spaces are assumed (as if padded to that length) after the
       ends of short fixed-form lines.
  
       Popular values for N include 72 (the standard and the default), 80
       (card image), and 132 (corresponding to "extended-source" options
!      in some popular compilers).  N may also be â€˜noneâ€™, meaning that the
       entire line is meaningful and that continued character constants
       never have implicit spaces appended to them to fill out the line.
!      â€˜-ffixed-line-length-0â€™ means the same thing as
!      â€˜-ffixed-line-length-noneâ€™.
  
! â€˜-fno-pad-sourceâ€™
       By default fixed-form lines have spaces assumed (as if padded to
       that length) after the ends of short fixed-form lines.  This is not
!      done either if â€˜-ffixed-line-length-0â€™, â€˜-ffixed-line-length-noneâ€™
!      or if â€˜-fno-pad-sourceâ€™ option is used.  With any of those options
       continued character constants never have implicit spaces appended
       to them to fill out the line.
  
! â€˜-ffree-line-length-Nâ€™
       Set column after which characters are ignored in typical free-form
       lines in the source file.  The default value is 132.  N may be
!      â€˜noneâ€™, meaning that the entire line is meaningful.
!      â€˜-ffree-line-length-0â€™ means the same thing as
!      â€˜-ffree-line-length-noneâ€™.
  
! â€˜-fmax-identifier-length=Nâ€™
       Specify the maximum allowed identifier length.  Typical values are
       31 (Fortran 95) and 63 (Fortran 2003 and later).
  
! â€˜-fimplicit-noneâ€™
       Specify that no implicit typing is allowed, unless overridden by
!      explicit â€˜IMPLICITâ€™ statements.  This is the equivalent of adding
!      â€˜implicit noneâ€™ to the start of every procedure.
  
! â€˜-fcray-pointerâ€™
       Enable the Cray pointer extension, which provides C-like pointer
       functionality.
  
! â€˜-fopenaccâ€™
!      Enable handling of OpenACC directives â€˜!$accâ€™ in free-form Fortran
!      and â€˜!$accâ€™, â€˜c$accâ€™ and â€˜*$accâ€™ in fixed-form Fortran.  When
!      â€˜-fopenaccâ€™ is specified, the compiler generates accelerated code
       according to the OpenACC Application Programming Interface v2.6
!      <https://www.openacc.org>.  This option implies â€˜-pthreadâ€™, and
!      thus is only supported on targets that have support for â€˜-pthreadâ€™.
!      The option â€˜-fopenaccâ€™ implies â€˜-frecursiveâ€™.
  
! â€˜-fopenmpâ€™
!      Enable handling of OpenMP directives â€˜!$ompâ€™ in Fortran.  It
!      additionally enables the conditional compilation sentinel â€˜!$â€™ in
       Fortran.  In fixed source form Fortran, the sentinels can also
!      start with â€˜câ€™ or â€˜*â€™.  When â€˜-fopenmpâ€™ is specified, the compiler
       generates parallel code according to the OpenMP Application Program
       Interface v4.5 <https://www.openmp.org>.  This option implies
!      â€˜-pthreadâ€™, and thus is only supported on targets that have support
!      for â€˜-pthreadâ€™.  â€˜-fopenmpâ€™ implies â€˜-fopenmp-simdâ€™ and
!      â€˜-frecursiveâ€™.
  
! â€˜-fopenmp-allocatorsâ€™
       Enables handling of allocation, reallocation and deallocation of
       Fortran allocatable and pointer variables that are allocated using
!      the â€˜!$omp allocatorsâ€™ and â€˜!$omp allocateâ€™ constructs.  Files
       containing either directive have to be compiled with this option in
!      addition to â€˜-fopenmpâ€™.  Additionally, all files that might
       deallocate or reallocate a variable that has been allocated with an
       OpenMP allocator have to be compiled with this option.  This
       includes intrinsic assignment to allocatable variables when
       reallocation may occur and deallocation due to either of the
!      following: end of scope, explicit deallocation, â€˜intent(out)â€™,
       deallocation of allocatable components etc.  Files not changing the
       allocation status or only for components of a derived type that
       have not been allocated using those two directives do not need to
*************** accepted by the compiler:
*** 714,852 ****
       variables after they have been deallocated or allocated by the
       normal Fortran allocator.
  
! '-fopenmp-simd'
!      Enable handling of OpenMP's 'simd', 'declare simd', 'declare
!      reduction', 'assume', 'ordered', 'scan' and 'loop' directive, and
!      of combined or composite directives with 'simd' as constituent with
!      '!$omp' in Fortran.  It additionally enables the conditional
!      compilation sentinel '!$' in Fortran.  In fixed source form
!      Fortran, the sentinels can also start with 'c' or '*'.  Other
!      OpenMP directives are ignored.  Unless '-fopenmp' is additionally
!      specified, the 'loop' region binds to the current task region,
!      independent of the specified 'bind' clause.
  
! '-fno-range-check'
       Disable range checking on results of simplification of constant
       expressions during compilation.  For example, GNU Fortran gives an
!      error at compile time when simplifying 'a = 1. / 0'.  With this
!      option, no error is given and 'a' is assigned the value
!      '+Infinity'.  If an expression evaluates to a value outside of the
!      relevant range of ['-HUGE()':'HUGE()'], then the expression is
!      replaced by '-Inf' or '+Inf' as appropriate.  Similarly, 'DATA
!      i/Z'FFFFFFFF'/' results in an integer overflow on most systems, but
!      with '-fno-range-check' the value "wraps around" and 'i' is
       initialized to -1 instead.
  
! '-fdefault-integer-8'
       Set the default integer and logical types to an 8 byte wide type.
!      This option also affects the kind of integer constants like '42'.
!      Unlike '-finteger-4-integer-8', it does not promote variables with
       explicit kind declaration.
  
! '-fdefault-real-8'
       Set the default real type to an 8 byte wide type.  This option also
!      affects the kind of non-double real constants like '1.0'.  This
!      option promotes the default width of 'DOUBLE PRECISION' and double
!      real constants like '1.d0' to 16 bytes if possible.  If
!      '-fdefault-double-8' is given along with 'fdefault-real-8', 'DOUBLE
!      PRECISION' and double real constants are not promoted.  Unlike
!      '-freal-4-real-8', 'fdefault-real-8' does not promote variables
       with explicit kind declarations.
  
! '-fdefault-real-10'
       Set the default real type to an 10 byte wide type.  This option
!      also affects the kind of non-double real constants like '1.0'.
!      This option promotes the default width of 'DOUBLE PRECISION' and
!      double real constants like '1.d0' to 16 bytes if possible.  If
!      '-fdefault-double-8' is given along with 'fdefault-real-10',
!      'DOUBLE PRECISION' and double real constants are not promoted.
!      Unlike '-freal-4-real-10', 'fdefault-real-10' does not promote
       variables with explicit kind declarations.
  
! '-fdefault-real-16'
       Set the default real type to an 16 byte wide type.  This option
!      also affects the kind of non-double real constants like '1.0'.
!      This option promotes the default width of 'DOUBLE PRECISION' and
!      double real constants like '1.d0' to 16 bytes if possible.  If
!      '-fdefault-double-8' is given along with 'fdefault-real-16',
!      'DOUBLE PRECISION' and double real constants are not promoted.
!      Unlike '-freal-4-real-16', 'fdefault-real-16' does not promote
       variables with explicit kind declarations.
  
! '-fdefault-double-8'
!      Set the 'DOUBLE PRECISION' type and double real constants like
!      '1.d0' to an 8 byte wide type.  Do nothing if this is already the
!      default.  This option prevents '-fdefault-real-8',
!      '-fdefault-real-10', and '-fdefault-real-16', from promoting
!      'DOUBLE PRECISION' and double real constants like '1.d0' to 16
       bytes.
  
! '-finteger-4-integer-8'
!      Promote all 'INTEGER(KIND=4)' entities to an 'INTEGER(KIND=8)'
!      entities.  If 'KIND=8' is unavailable, then an error is issued.
       This option should be used with care and may not be suitable for
       your codes.  Areas of possible concern include calls to external
!      procedures, alignment in 'EQUIVALENCE' and/or 'COMMON', generic
       interfaces, BOZ literal constant conversion, and I/O. Inspection of
       the intermediate representation of the translated Fortran code,
!      produced by '-fdump-tree-original', is suggested.
  
! '-freal-4-real-8'
! '-freal-4-real-10'
! '-freal-4-real-16'
! '-freal-8-real-4'
! '-freal-8-real-10'
! '-freal-8-real-16'
!      Promote all 'REAL(KIND=M)' entities to 'REAL(KIND=N)' entities.  If
!      'REAL(KIND=N)' is unavailable, then an error is issued.  The
!      '-freal-4-' flags also affect the default real kind and the
!      '-freal-8-' flags also the double-precision real kind.  All other
       real-kind types are unaffected by this option.  The promotion is
       also applied to real literal constants of default and
       double-precision kind and a specified kind number of 4 or 8,
!      respectively.  However, '-fdefault-real-8', '-fdefault-real-10',
!      '-fdefault-real-10', and '-fdefault-double-8' take precedence for
       the default and double-precision real kinds, both for real literal
       constants and for declarations without a kind number.  Note that
!      for 'REAL(KIND=KIND(1.0))' the literal may get promoted and then
       the result may get promoted again.  These options should be used
       with care and may not be suitable for your codes.  Areas of
       possible concern include calls to external procedures, alignment in
!      'EQUIVALENCE' and/or 'COMMON', generic interfaces, BOZ literal
       constant conversion, and I/O and calls to intrinsic procedures when
!      passing a value to the 'kind=' dummy argument.  Inspection of the
       intermediate representation of the translated Fortran code,
!      produced by '-fdump-fortran-original' or '-fdump-tree-original', is
       suggested.
  
! '-std=STD'
       Specify the standard to which the program is expected to conform,
!      which may be one of 'f95', 'f2003', 'f2008', 'f2018', 'f2023',
!      'gnu', or 'legacy'.  The default value for STD is 'gnu', which
       specifies a superset of the latest Fortran standard that includes
       all of the extensions supported by GNU Fortran, although warnings
       are given for obsolete extensions not recommended for use in new
!      code.  The 'legacy' value is equivalent but without the warnings
       for obsolete extensions, and may be useful for old nonstandard
!      programs.  The 'f95', 'f2003', 'f2008', 'f2018', and 'f2023' values
       specify strict conformance to the Fortran 95, Fortran 2003, Fortran
       2008, Fortran 2018 and Fortran 2023 standards, respectively; errors
       are given for all extensions beyond the relevant language standard,
       and warnings are given for the Fortran 77 features that are
       permitted but obsolescent in later standards.  The deprecated
!      option '-std=f2008ts' acts as an alias for '-std=f2018'.  It is
       only present for backwards compatibility with earlier gfortran
!      versions and should not be used any more.  '-std=f202y' acts as an
!      alias for '-std=f2023' and enables proposed features for testing
       Fortran 202y.  As the Fortran 202y standard develops,
       implementation might change or the experimental new features might
       be removed.
  
! '-ftest-forall-temp'
       Enhance test coverage by forcing most forall assignments to use
       temporary.
  
! '-funsigned'
       Allow the experimental unsigned extension.
  
  
--- 714,852 ----
       variables after they have been deallocated or allocated by the
       normal Fortran allocator.
  
! â€˜-fopenmp-simdâ€™
!      Enable handling of OpenMP's â€˜simdâ€™, â€˜declare simdâ€™, â€˜declare
!      reductionâ€™, â€˜assumeâ€™, â€˜orderedâ€™, â€˜scanâ€™ and â€˜loopâ€™ directive, and
!      of combined or composite directives with â€˜simdâ€™ as constituent with
!      â€˜!$ompâ€™ in Fortran.  It additionally enables the conditional
!      compilation sentinel â€˜!$â€™ in Fortran.  In fixed source form
!      Fortran, the sentinels can also start with â€˜câ€™ or â€˜*â€™.  Other
!      OpenMP directives are ignored.  Unless â€˜-fopenmpâ€™ is additionally
!      specified, the â€˜loopâ€™ region binds to the current task region,
!      independent of the specified â€˜bindâ€™ clause.
  
! â€˜-fno-range-checkâ€™
       Disable range checking on results of simplification of constant
       expressions during compilation.  For example, GNU Fortran gives an
!      error at compile time when simplifying â€˜a = 1. / 0â€™.  With this
!      option, no error is given and â€˜aâ€™ is assigned the value
!      â€˜+Infinityâ€™.  If an expression evaluates to a value outside of the
!      relevant range of [â€˜-HUGE()â€™:â€˜HUGE()â€™], then the expression is
!      replaced by â€˜-Infâ€™ or â€˜+Infâ€™ as appropriate.  Similarly, â€˜DATA
!      i/Z'FFFFFFFF'/â€™ results in an integer overflow on most systems, but
!      with â€˜-fno-range-checkâ€™ the value "wraps around" and â€˜iâ€™ is
       initialized to -1 instead.
  
! â€˜-fdefault-integer-8â€™
       Set the default integer and logical types to an 8 byte wide type.
!      This option also affects the kind of integer constants like â€˜42â€™.
!      Unlike â€˜-finteger-4-integer-8â€™, it does not promote variables with
       explicit kind declaration.
  
! â€˜-fdefault-real-8â€™
       Set the default real type to an 8 byte wide type.  This option also
!      affects the kind of non-double real constants like â€˜1.0â€™.  This
!      option promotes the default width of â€˜DOUBLE PRECISIONâ€™ and double
!      real constants like â€˜1.d0â€™ to 16 bytes if possible.  If
!      â€˜-fdefault-double-8â€™ is given along with â€˜fdefault-real-8â€™, â€˜DOUBLE
!      PRECISIONâ€™ and double real constants are not promoted.  Unlike
!      â€˜-freal-4-real-8â€™, â€˜fdefault-real-8â€™ does not promote variables
       with explicit kind declarations.
  
! â€˜-fdefault-real-10â€™
       Set the default real type to an 10 byte wide type.  This option
!      also affects the kind of non-double real constants like â€˜1.0â€™.
!      This option promotes the default width of â€˜DOUBLE PRECISIONâ€™ and
!      double real constants like â€˜1.d0â€™ to 16 bytes if possible.  If
!      â€˜-fdefault-double-8â€™ is given along with â€˜fdefault-real-10â€™,
!      â€˜DOUBLE PRECISIONâ€™ and double real constants are not promoted.
!      Unlike â€˜-freal-4-real-10â€™, â€˜fdefault-real-10â€™ does not promote
       variables with explicit kind declarations.
  
! â€˜-fdefault-real-16â€™
       Set the default real type to an 16 byte wide type.  This option
!      also affects the kind of non-double real constants like â€˜1.0â€™.
!      This option promotes the default width of â€˜DOUBLE PRECISIONâ€™ and
!      double real constants like â€˜1.d0â€™ to 16 bytes if possible.  If
!      â€˜-fdefault-double-8â€™ is given along with â€˜fdefault-real-16â€™,
!      â€˜DOUBLE PRECISIONâ€™ and double real constants are not promoted.
!      Unlike â€˜-freal-4-real-16â€™, â€˜fdefault-real-16â€™ does not promote
       variables with explicit kind declarations.
  
! â€˜-fdefault-double-8â€™
!      Set the â€˜DOUBLE PRECISIONâ€™ type and double real constants like
!      â€˜1.d0â€™ to an 8 byte wide type.  Do nothing if this is already the
!      default.  This option prevents â€˜-fdefault-real-8â€™,
!      â€˜-fdefault-real-10â€™, and â€˜-fdefault-real-16â€™, from promoting
!      â€˜DOUBLE PRECISIONâ€™ and double real constants like â€˜1.d0â€™ to 16
       bytes.
  
! â€˜-finteger-4-integer-8â€™
!      Promote all â€˜INTEGER(KIND=4)â€™ entities to an â€˜INTEGER(KIND=8)â€™
!      entities.  If â€˜KIND=8â€™ is unavailable, then an error is issued.
       This option should be used with care and may not be suitable for
       your codes.  Areas of possible concern include calls to external
!      procedures, alignment in â€˜EQUIVALENCEâ€™ and/or â€˜COMMONâ€™, generic
       interfaces, BOZ literal constant conversion, and I/O. Inspection of
       the intermediate representation of the translated Fortran code,
!      produced by â€˜-fdump-tree-originalâ€™, is suggested.
  
! â€˜-freal-4-real-8â€™
! â€˜-freal-4-real-10â€™
! â€˜-freal-4-real-16â€™
! â€˜-freal-8-real-4â€™
! â€˜-freal-8-real-10â€™
! â€˜-freal-8-real-16â€™
!      Promote all â€˜REAL(KIND=M)â€™ entities to â€˜REAL(KIND=N)â€™ entities.  If
!      â€˜REAL(KIND=N)â€™ is unavailable, then an error is issued.  The
!      â€˜-freal-4-â€™ flags also affect the default real kind and the
!      â€˜-freal-8-â€™ flags also the double-precision real kind.  All other
       real-kind types are unaffected by this option.  The promotion is
       also applied to real literal constants of default and
       double-precision kind and a specified kind number of 4 or 8,
!      respectively.  However, â€˜-fdefault-real-8â€™, â€˜-fdefault-real-10â€™,
!      â€˜-fdefault-real-10â€™, and â€˜-fdefault-double-8â€™ take precedence for
       the default and double-precision real kinds, both for real literal
       constants and for declarations without a kind number.  Note that
!      for â€˜REAL(KIND=KIND(1.0))â€™ the literal may get promoted and then
       the result may get promoted again.  These options should be used
       with care and may not be suitable for your codes.  Areas of
       possible concern include calls to external procedures, alignment in
!      â€˜EQUIVALENCEâ€™ and/or â€˜COMMONâ€™, generic interfaces, BOZ literal
       constant conversion, and I/O and calls to intrinsic procedures when
!      passing a value to the â€˜kind=â€™ dummy argument.  Inspection of the
       intermediate representation of the translated Fortran code,
!      produced by â€˜-fdump-fortran-originalâ€™ or â€˜-fdump-tree-originalâ€™, is
       suggested.
  
! â€˜-std=STDâ€™
       Specify the standard to which the program is expected to conform,
!      which may be one of â€˜f95â€™, â€˜f2003â€™, â€˜f2008â€™, â€˜f2018â€™, â€˜f2023â€™,
!      â€˜gnuâ€™, or â€˜legacyâ€™.  The default value for STD is â€˜gnuâ€™, which
       specifies a superset of the latest Fortran standard that includes
       all of the extensions supported by GNU Fortran, although warnings
       are given for obsolete extensions not recommended for use in new
!      code.  The â€˜legacyâ€™ value is equivalent but without the warnings
       for obsolete extensions, and may be useful for old nonstandard
!      programs.  The â€˜f95â€™, â€˜f2003â€™, â€˜f2008â€™, â€˜f2018â€™, and â€˜f2023â€™ values
       specify strict conformance to the Fortran 95, Fortran 2003, Fortran
       2008, Fortran 2018 and Fortran 2023 standards, respectively; errors
       are given for all extensions beyond the relevant language standard,
       and warnings are given for the Fortran 77 features that are
       permitted but obsolescent in later standards.  The deprecated
!      option â€˜-std=f2008tsâ€™ acts as an alias for â€˜-std=f2018â€™.  It is
       only present for backwards compatibility with earlier gfortran
!      versions and should not be used any more.  â€˜-std=f202yâ€™ acts as an
!      alias for â€˜-std=f2023â€™ and enables proposed features for testing
       Fortran 202y.  As the Fortran 202y standard develops,
       implementation might change or the experimental new features might
       be removed.
  
! â€˜-ftest-forall-tempâ€™
       Enhance test coverage by forcing most forall assignments to use
       temporary.
  
! â€˜-funsignedâ€™
       Allow the experimental unsigned extension.
  
  
*************** code through a C preprocessor (CPP; some
*** 860,887 ****
  preprocessor, FPP) to allow for conditional compilation.  In the case of
  GNU Fortran, this is the GNU C Preprocessor in the traditional mode.  On
  systems with case-preserving file names, the preprocessor is
! automatically invoked if the filename extension is '.F', '.FOR', '.FTN',
! '.fpp', '.FPP', '.F90', '.F95', '.F03' or '.F08'.  To manually invoke
! the preprocessor on any file, use '-cpp', to disable preprocessing on
! files where the preprocessor is run automatically, use '-nocpp'.
  
     If a preprocessed file includes another file with the Fortran
! 'INCLUDE' statement, the included file is not preprocessed.  To
  preprocess included files, use the equivalent preprocessor statement
! '#include'.
  
!    If GNU Fortran invokes the preprocessor, '__GFORTRAN__' is defined.
! The macros '__GNUC__', '__GNUC_MINOR__' and '__GNUC_PATCHLEVEL__' can be
  used to determine the version of the compiler.  See *note Overview:
  (cpp)Top. for details.
  
!    GNU Fortran supports a number of 'INTEGER' and 'REAL' kind types in
  additional to the kind types required by the Fortran standard.  The
  availability of any given kind type is architecture dependent.  The
  following predefined preprocessor macros can be used to conditionally
! include code for these additional kind types: '__GFC_INT_1__',
! '__GFC_INT_2__', '__GFC_INT_8__', '__GFC_INT_16__', '__GFC_REAL_10__',
! and '__GFC_REAL_16__'.
  
     While CPP is the de facto standard for preprocessing Fortran code,
  Part 3 of the Fortran 95 standard (ISO/IEC 1539-3:1998) defines
--- 860,887 ----
  preprocessor, FPP) to allow for conditional compilation.  In the case of
  GNU Fortran, this is the GNU C Preprocessor in the traditional mode.  On
  systems with case-preserving file names, the preprocessor is
! automatically invoked if the filename extension is â€˜.Fâ€™, â€˜.FORâ€™, â€˜.FTNâ€™,
! â€˜.fppâ€™, â€˜.FPPâ€™, â€˜.F90â€™, â€˜.F95â€™, â€˜.F03â€™ or â€˜.F08â€™.  To manually invoke
! the preprocessor on any file, use â€˜-cppâ€™, to disable preprocessing on
! files where the preprocessor is run automatically, use â€˜-nocppâ€™.
  
     If a preprocessed file includes another file with the Fortran
! â€˜INCLUDEâ€™ statement, the included file is not preprocessed.  To
  preprocess included files, use the equivalent preprocessor statement
! â€˜#includeâ€™.
  
!    If GNU Fortran invokes the preprocessor, â€˜__GFORTRAN__â€™ is defined.
! The macros â€˜__GNUC__â€™, â€˜__GNUC_MINOR__â€™ and â€˜__GNUC_PATCHLEVEL__â€™ can be
  used to determine the version of the compiler.  See *note Overview:
  (cpp)Top. for details.
  
!    GNU Fortran supports a number of â€˜INTEGERâ€™ and â€˜REALâ€™ kind types in
  additional to the kind types required by the Fortran standard.  The
  availability of any given kind type is architecture dependent.  The
  following predefined preprocessor macros can be used to conditionally
! include code for these additional kind types: â€˜__GFC_INT_1__â€™,
! â€˜__GFC_INT_2__â€™, â€˜__GFC_INT_8__â€™, â€˜__GFC_INT_16__â€™, â€˜__GFC_REAL_10__â€™,
! and â€˜__GFC_REAL_16__â€™.
  
     While CPP is the de facto standard for preprocessing Fortran code,
  Part 3 of the Fortran 95 standard (ISO/IEC 1539-3:1998) defines
*************** supported by the GNU Fortran compiler.
*** 890,940 ****
  
     The following options control preprocessing of Fortran code:
  
! '-cpp'
! '-nocpp'
       Enable preprocessing.  The preprocessor is automatically invoked if
!      the file extension is '.fpp', '.FPP', '.F', '.FOR', '.FTN', '.F90',
!      '.F95', '.F03' or '.F08'.  Use this option to manually enable
       preprocessing of any kind of Fortran file.
  
       To disable preprocessing of files with any of the above listed
!      extensions, use the negative form: '-nocpp'.
  
       The preprocessor is run in traditional mode.  Any restrictions of
       the file format, especially the limits on line length, apply for
       preprocessed output as well, so it might be advisable to use the
!      '-ffree-line-length-none' or '-ffixed-line-length-none' options.
  
! '-dM'
!      Instead of the normal output, generate a list of ''#define''
       directives for all the macros defined during the execution of the
       preprocessor, including predefined macros.  This gives you a way of
       finding out what is predefined in your version of the preprocessor.
!      Assuming you have no file 'foo.f90', the command
              touch foo.f90; gfortran -cpp -E -dM foo.f90
       shows all the predefined macros.
  
! '-dD'
!      Like '-dM' except in two respects: it does not include the
!      predefined macros, and it outputs both the '#define' directives and
       the result of preprocessing.  Both kinds of output go to the
       standard output file.
  
! '-dN'
!      Like '-dD', but emit only the macro names, not their expansions.
  
! '-dU'
!      Like 'dD' except that only macros that are expanded, or whose
       definedness is tested in preprocessor directives, are output; the
       output is delayed until the use or test of the macro; and
!      ''#undef'' directives are also output for macros tested but
       undefined at the time.
  
! '-dI'
!      Output ''#include'' directives in addition to the result of
       preprocessing.
  
! '-fworking-directory'
       Enable generation of linemarkers in the preprocessor output that
       let the compiler know the current working directory at the time of
       preprocessing.  When this option is enabled, the preprocessor
--- 890,940 ----
  
     The following options control preprocessing of Fortran code:
  
! â€˜-cppâ€™
! â€˜-nocppâ€™
       Enable preprocessing.  The preprocessor is automatically invoked if
!      the file extension is â€˜.fppâ€™, â€˜.FPPâ€™, â€˜.Fâ€™, â€˜.FORâ€™, â€˜.FTNâ€™, â€˜.F90â€™,
!      â€˜.F95â€™, â€˜.F03â€™ or â€˜.F08â€™.  Use this option to manually enable
       preprocessing of any kind of Fortran file.
  
       To disable preprocessing of files with any of the above listed
!      extensions, use the negative form: â€˜-nocppâ€™.
  
       The preprocessor is run in traditional mode.  Any restrictions of
       the file format, especially the limits on line length, apply for
       preprocessed output as well, so it might be advisable to use the
!      â€˜-ffree-line-length-noneâ€™ or â€˜-ffixed-line-length-noneâ€™ options.
  
! â€˜-dMâ€™
!      Instead of the normal output, generate a list of â€˜'#define'â€™
       directives for all the macros defined during the execution of the
       preprocessor, including predefined macros.  This gives you a way of
       finding out what is predefined in your version of the preprocessor.
!      Assuming you have no file â€˜foo.f90â€™, the command
              touch foo.f90; gfortran -cpp -E -dM foo.f90
       shows all the predefined macros.
  
! â€˜-dDâ€™
!      Like â€˜-dMâ€™ except in two respects: it does not include the
!      predefined macros, and it outputs both the â€˜#defineâ€™ directives and
       the result of preprocessing.  Both kinds of output go to the
       standard output file.
  
! â€˜-dNâ€™
!      Like â€˜-dDâ€™, but emit only the macro names, not their expansions.
  
! â€˜-dUâ€™
!      Like â€˜dDâ€™ except that only macros that are expanded, or whose
       definedness is tested in preprocessor directives, are output; the
       output is delayed until the use or test of the macro; and
!      â€˜'#undef'â€™ directives are also output for macros tested but
       undefined at the time.
  
! â€˜-dIâ€™
!      Output â€˜'#include'â€™ directives in addition to the result of
       preprocessing.
  
! â€˜-fworking-directoryâ€™
       Enable generation of linemarkers in the preprocessor output that
       let the compiler know the current working directory at the time of
       preprocessing.  When this option is enabled, the preprocessor
*************** supported by the GNU Fortran compiler.
*** 944,1041 ****
       directory emitted as the current working directory in some
       debugging information formats.  This option is implicitly enabled
       if debugging information is enabled, but this can be inhibited with
!      the negated form '-fno-working-directory'.  If the '-P' flag is
       present in the command line, this option has no effect, since no
!      '#line' directives are emitted whatsoever.
  
! '-idirafter DIR'
       Search DIR for include files, but do it after all directories
!      specified with '-I' and the standard system directories have been
       exhausted.  DIR is treated as a system include directory.  If dir
!      begins with '=', then the '=' is replaced by the sysroot prefix;
!      see '--sysroot' and '-isysroot'.
  
! '-imultilib DIR'
       Use DIR as a subdirectory of the directory containing
       target-specific C++ headers.
  
! '-iprefix PREFIX'
!      Specify PREFIX as the prefix for subsequent '-iwithprefix' options.
       If the PREFIX represents a directory, you should include the final
!      ''/''.
  
! '-isysroot DIR'
!      This option is like the '--sysroot' option, but applies only to
!      header files.  See the '--sysroot' option for more information.
  
! '-iquote DIR'
!      Search DIR only for header files requested with '#include "file"';
!      they are not searched for '#include <file>', before all directories
!      specified by '-I' and before the standard system directories.  If
!      DIR begins with '=', then the '=' is replaced by the sysroot
!      prefix; see '--sysroot' and '-isysroot'.
  
! '-isystem DIR'
       Search DIR for header files, after all directories specified by
!      '-I' but before the standard system directories.  Mark it as a
       system directory, so that it gets the same special treatment as is
       applied to the standard system directories.  If DIR begins with
!      '=', then the '=' is replaced by the sysroot prefix; see
!      '--sysroot' and '-isysroot'.
  
! '-nostdinc'
       Do not search the standard system directories for header files.
!      Only the directories you have specified with '-I' options (and the
       directory of the current file, if appropriate) are searched.
  
! '-undef'
       Do not predefine any system-specific or GCC-specific macros.  The
       standard predefined macros remain defined.
  
! '-APREDICATE=ANSWER'
       Make an assertion with the predicate PREDICATE and answer ANSWER.
       This form is preferred to the older form -A predicate(answer),
       which is still supported, because it does not use shell special
       characters.
  
! '-A-PREDICATE=ANSWER'
       Cancel an assertion with the predicate PREDICATE and answer ANSWER.
  
! '-C'
       Do not discard comments.  All comments are passed through to the
       output file, except for comments in processed directives, which are
       deleted along with the directive.
  
!      You should be prepared for side effects when using '-C'; it causes
       the preprocessor to treat comments as tokens in their own right.
       For example, comments appearing at the start of what would be a
       directive line have the effect of turning that line into an
       ordinary source line, since the first token on the line is no
!      longer a ''#''.
  
       Warning: this currently handles C-Style comments only.  The
       preprocessor does not yet recognize Fortran-style comments.
  
! '-CC'
       Do not discard comments, including during macro expansion.  This is
!      like '-C', except that comments contained within macros are also
       passed through to the output file where the macro is expanded.
  
!      In addition to the side-effects of the '-C' option, the '-CC'
       option causes all C++-style comments inside a macro to be converted
       to C-style comments.  This is to prevent later use of that macro
       from inadvertently commenting out the remainder of the source line.
!      The '-CC' option is generally used to support lint comments.
  
       Warning: this currently handles C- and C++-Style comments only.
       The preprocessor does not yet recognize Fortran-style comments.
  
! '-DNAME'
!      Predefine name as a macro, with definition '1'.
  
! '-DNAME=DEFINITION'
       The contents of DEFINITION are tokenized and processed as if they
!      appeared during translation phase three in a ''#define'' directive.
       In particular, the definition is truncated by embedded newline
       characters.
  
--- 944,1041 ----
       directory emitted as the current working directory in some
       debugging information formats.  This option is implicitly enabled
       if debugging information is enabled, but this can be inhibited with
!      the negated form â€˜-fno-working-directoryâ€™.  If the â€˜-Pâ€™ flag is
       present in the command line, this option has no effect, since no
!      â€˜#lineâ€™ directives are emitted whatsoever.
  
! â€˜-idirafter DIRâ€™
       Search DIR for include files, but do it after all directories
!      specified with â€˜-Iâ€™ and the standard system directories have been
       exhausted.  DIR is treated as a system include directory.  If dir
!      begins with â€˜=â€™, then the â€˜=â€™ is replaced by the sysroot prefix;
!      see â€˜--sysrootâ€™ and â€˜-isysrootâ€™.
  
! â€˜-imultilib DIRâ€™
       Use DIR as a subdirectory of the directory containing
       target-specific C++ headers.
  
! â€˜-iprefix PREFIXâ€™
!      Specify PREFIX as the prefix for subsequent â€˜-iwithprefixâ€™ options.
       If the PREFIX represents a directory, you should include the final
!      â€˜'/'â€™.
  
! â€˜-isysroot DIRâ€™
!      This option is like the â€˜--sysrootâ€™ option, but applies only to
!      header files.  See the â€˜--sysrootâ€™ option for more information.
  
! â€˜-iquote DIRâ€™
!      Search DIR only for header files requested with â€˜#include "file"â€™;
!      they are not searched for â€˜#include <file>â€™, before all directories
!      specified by â€˜-Iâ€™ and before the standard system directories.  If
!      DIR begins with â€˜=â€™, then the â€˜=â€™ is replaced by the sysroot
!      prefix; see â€˜--sysrootâ€™ and â€˜-isysrootâ€™.
  
! â€˜-isystem DIRâ€™
       Search DIR for header files, after all directories specified by
!      â€˜-Iâ€™ but before the standard system directories.  Mark it as a
       system directory, so that it gets the same special treatment as is
       applied to the standard system directories.  If DIR begins with
!      â€˜=â€™, then the â€˜=â€™ is replaced by the sysroot prefix; see
!      â€˜--sysrootâ€™ and â€˜-isysrootâ€™.
  
! â€˜-nostdincâ€™
       Do not search the standard system directories for header files.
!      Only the directories you have specified with â€˜-Iâ€™ options (and the
       directory of the current file, if appropriate) are searched.
  
! â€˜-undefâ€™
       Do not predefine any system-specific or GCC-specific macros.  The
       standard predefined macros remain defined.
  
! â€˜-APREDICATE=ANSWERâ€™
       Make an assertion with the predicate PREDICATE and answer ANSWER.
       This form is preferred to the older form -A predicate(answer),
       which is still supported, because it does not use shell special
       characters.
  
! â€˜-A-PREDICATE=ANSWERâ€™
       Cancel an assertion with the predicate PREDICATE and answer ANSWER.
  
! â€˜-Câ€™
       Do not discard comments.  All comments are passed through to the
       output file, except for comments in processed directives, which are
       deleted along with the directive.
  
!      You should be prepared for side effects when using â€˜-Câ€™; it causes
       the preprocessor to treat comments as tokens in their own right.
       For example, comments appearing at the start of what would be a
       directive line have the effect of turning that line into an
       ordinary source line, since the first token on the line is no
!      longer a â€˜'#'â€™.
  
       Warning: this currently handles C-Style comments only.  The
       preprocessor does not yet recognize Fortran-style comments.
  
! â€˜-CCâ€™
       Do not discard comments, including during macro expansion.  This is
!      like â€˜-Câ€™, except that comments contained within macros are also
       passed through to the output file where the macro is expanded.
  
!      In addition to the side-effects of the â€˜-Câ€™ option, the â€˜-CCâ€™
       option causes all C++-style comments inside a macro to be converted
       to C-style comments.  This is to prevent later use of that macro
       from inadvertently commenting out the remainder of the source line.
!      The â€˜-CCâ€™ option is generally used to support lint comments.
  
       Warning: this currently handles C- and C++-Style comments only.
       The preprocessor does not yet recognize Fortran-style comments.
  
! â€˜-DNAMEâ€™
!      Predefine name as a macro, with definition â€˜1â€™.
  
! â€˜-DNAME=DEFINITIONâ€™
       The contents of DEFINITION are tokenized and processed as if they
!      appeared during translation phase three in a â€˜'#define'â€™ directive.
       In particular, the definition is truncated by embedded newline
       characters.
  
*************** supported by the GNU Fortran compiler.
*** 1047,1072 ****
       write its argument list with surrounding parentheses before the
       equals sign (if any).  Parentheses are meaningful to most shells,
       so you need to quote the option.  With sh and csh,
!      '-D'name(args...)=definition'' works.
  
!      '-D' and '-U' options are processed in the order they are given on
       the command line.  All -imacros file and -include file options are
       processed after all -D and -U options.
  
! '-H'
       Print the name of each header file used, in addition to other
       normal activities.  Each name is indented to show how deep in the
!      ''#include'' stack it is.
  
! '-P'
       Inhibit generation of linemarkers in the output from the
       preprocessor.  This might be useful when running the preprocessor
       on something that is not C code, and is sent to a program that
       might be confused by the linemarkers.
  
! '-UNAME'
       Cancel any previous definition of NAME, either built in or provided
!      with a '-D' option.
  
  
  File: gfortran.info,  Node: Error and Warning Options,  Next: Debugging Options,  Prev: Preprocessing Options,  Up: Invoking GNU Fortran
--- 1047,1072 ----
       write its argument list with surrounding parentheses before the
       equals sign (if any).  Parentheses are meaningful to most shells,
       so you need to quote the option.  With sh and csh,
!      â€˜-D'name(args...)=definition'â€™ works.
  
!      â€˜-Dâ€™ and â€˜-Uâ€™ options are processed in the order they are given on
       the command line.  All -imacros file and -include file options are
       processed after all -D and -U options.
  
! â€˜-Hâ€™
       Print the name of each header file used, in addition to other
       normal activities.  Each name is indented to show how deep in the
!      â€˜'#include'â€™ stack it is.
  
! â€˜-Pâ€™
       Inhibit generation of linemarkers in the output from the
       preprocessor.  This might be useful when running the preprocessor
       on something that is not C code, and is sent to a program that
       might be confused by the linemarkers.
  
! â€˜-UNAMEâ€™
       Cancel any previous definition of NAME, either built in or provided
!      with a â€˜-Dâ€™ option.
  
  
  File: gfortran.info,  Node: Error and Warning Options,  Next: Debugging Options,  Prev: Preprocessing Options,  Up: Invoking GNU Fortran
*************** to aid in debugging, but does not produc
*** 1081,1147 ****
  
     Warnings are diagnostic messages that report constructions that are
  not inherently erroneous but that are risky or suggest there is likely
! to be a bug in the program.  Unless '-Werror' is specified, they do not
  prevent compilation of the program.
  
!    You can request many specific warnings with options beginning '-W',
! for example '-Wimplicit' to request warnings on implicit declarations.
  Each of these specific warning options also has a negative form
! beginning '-Wno-' to turn off warnings; for example, '-Wno-implicit'.
  This manual lists only one of the two forms, whichever is not the
  default.
  
     These options control the amount and kinds of errors and warnings
  produced by GNU Fortran:
  
! '-fmax-errors=N'
       Limits the maximum number of error messages to N, at which point
       GNU Fortran bails out rather than attempting to continue processing
       the source code.  If N is 0, there is no limit on the number of
       error messages produced.
  
! '-fsyntax-only'
       Check the code for syntax errors, but do not actually compile it.
       This generates module files for each module present in the code,
       but no other output file.
  
! '-Wpedantic'
! '-pedantic'
!      Issue warnings for uses of extensions to Fortran.  '-pedantic' also
       applies to C-language constructs where they occur in GNU Fortran
!      source files, such as use of '\e' in a character constant within a
!      directive like '#include'.
  
       Valid Fortran programs should compile properly with or without this
       option.  However, without this option, certain GNU extensions and
       traditional Fortran features are supported as well.  With this
       option, many of them are rejected.
  
!      Some users try to use '-pedantic' to check programs for
       conformance.  They soon find that it does not do quite what they
       want--it finds some nonstandard practices, but not all.  However,
       improvements to GNU Fortran in this area are welcome.
  
!      This should be used in conjunction with '-std=f95', '-std=f2003',
!      '-std=f2008', '-std=f2018' or '-std=f2023'.
  
! '-pedantic-errors'
!      Like '-pedantic', except that errors are produced rather than
       warnings.
  
! '-Wall'
       Enables commonly used warning options pertaining to usage that we
       recommend avoiding and that we believe are easy to avoid.  This
!      currently includes '-Waliasing', '-Wampersand', '-Wconversion',
!      '-Wsurprising', '-Wc-binding-type', '-Wintrinsics-std', '-Wtabs',
!      '-Wintrinsic-shadow', '-Wline-truncation', '-Wtarget-lifetime',
!      '-Winteger-division', '-Wreal-q-constant', '-Wunused' and
!      '-Wundefined-do-loop'.
  
! '-Waliasing'
       Warn about possible aliasing of dummy arguments.  Specifically, it
       warns if the same actual argument is associated with a dummy
!      argument with 'INTENT(IN)' and a dummy argument with 'INTENT(OUT)'
       in a call with an explicit interface.
  
       The following example triggers the warning.
--- 1081,1147 ----
  
     Warnings are diagnostic messages that report constructions that are
  not inherently erroneous but that are risky or suggest there is likely
! to be a bug in the program.  Unless â€˜-Werrorâ€™ is specified, they do not
  prevent compilation of the program.
  
!    You can request many specific warnings with options beginning â€˜-Wâ€™,
! for example â€˜-Wimplicitâ€™ to request warnings on implicit declarations.
  Each of these specific warning options also has a negative form
! beginning â€˜-Wno-â€™ to turn off warnings; for example, â€˜-Wno-implicitâ€™.
  This manual lists only one of the two forms, whichever is not the
  default.
  
     These options control the amount and kinds of errors and warnings
  produced by GNU Fortran:
  
! â€˜-fmax-errors=Nâ€™
       Limits the maximum number of error messages to N, at which point
       GNU Fortran bails out rather than attempting to continue processing
       the source code.  If N is 0, there is no limit on the number of
       error messages produced.
  
! â€˜-fsyntax-onlyâ€™
       Check the code for syntax errors, but do not actually compile it.
       This generates module files for each module present in the code,
       but no other output file.
  
! â€˜-Wpedanticâ€™
! â€˜-pedanticâ€™
!      Issue warnings for uses of extensions to Fortran.  â€˜-pedanticâ€™ also
       applies to C-language constructs where they occur in GNU Fortran
!      source files, such as use of â€˜\eâ€™ in a character constant within a
!      directive like â€˜#includeâ€™.
  
       Valid Fortran programs should compile properly with or without this
       option.  However, without this option, certain GNU extensions and
       traditional Fortran features are supported as well.  With this
       option, many of them are rejected.
  
!      Some users try to use â€˜-pedanticâ€™ to check programs for
       conformance.  They soon find that it does not do quite what they
       want--it finds some nonstandard practices, but not all.  However,
       improvements to GNU Fortran in this area are welcome.
  
!      This should be used in conjunction with â€˜-std=f95â€™, â€˜-std=f2003â€™,
!      â€˜-std=f2008â€™, â€˜-std=f2018â€™ or â€˜-std=f2023â€™.
  
! â€˜-pedantic-errorsâ€™
!      Like â€˜-pedanticâ€™, except that errors are produced rather than
       warnings.
  
! â€˜-Wallâ€™
       Enables commonly used warning options pertaining to usage that we
       recommend avoiding and that we believe are easy to avoid.  This
!      currently includes â€˜-Waliasingâ€™, â€˜-Wampersandâ€™, â€˜-Wconversionâ€™,
!      â€˜-Wsurprisingâ€™, â€˜-Wc-binding-typeâ€™, â€˜-Wintrinsics-stdâ€™, â€˜-Wtabsâ€™,
!      â€˜-Wintrinsic-shadowâ€™, â€˜-Wline-truncationâ€™, â€˜-Wtarget-lifetimeâ€™,
!      â€˜-Winteger-divisionâ€™, â€˜-Wreal-q-constantâ€™, â€˜-Wunusedâ€™ and
!      â€˜-Wundefined-do-loopâ€™.
  
! â€˜-Waliasingâ€™
       Warn about possible aliasing of dummy arguments.  Specifically, it
       warns if the same actual argument is associated with a dummy
!      argument with â€˜INTENT(IN)â€™ and a dummy argument with â€˜INTENT(OUT)â€™
       in a call with an explicit interface.
  
       The following example triggers the warning.
*************** produced by GNU Fortran:
*** 1155,1246 ****
  
              call bar(a,a)
  
! '-Wampersand'
       Warn about missing ampersand in continued character constants.  The
!      warning is given with '-Wampersand', '-pedantic', '-std=f95',
!      '-std=f2003', '-std=f2008', '-std=f2018' and '-std=f2023'.  Note:
       With no ampersand given in a continued character constant, GNU
       Fortran assumes continuation at the first non-comment,
       non-whitespace character after the ampersand that initiated the
       continuation.
  
! '-Warray-temporaries'
       Warn about array temporaries generated by the compiler.  The
       information generated by this warning is sometimes useful in
       optimization, in order to avoid such temporaries.
  
! '-Wc-binding-type'
       Warn if the a variable might not be C interoperable.  In
       particular, warn if the variable has been declared using an
       intrinsic type with default kind instead of using a kind parameter
!      defined for C interoperability in the intrinsic 'ISO_C_Binding'
!      module.  This option is implied by '-Wall'.
  
! '-Wcharacter-truncation'
       Warn when a character assignment truncates the assigned string.
  
! '-Wline-truncation'
       Warn when a source code line is truncated.  This option is implied
!      by '-Wall'.  For free-form source code, the default is
!      '-Werror=line-truncation' such that truncations are reported as
       error.
  
! '-Wconversion'
       Warn about implicit conversions that are likely to change the value
!      of the expression after conversion.  Implied by '-Wall'.
  
! '-Wconversion-extra'
       Warn about implicit conversions between different types and kinds.
!      This option does _not_ imply '-Wconversion'.
  
! '-Wexternal-argument-mismatch'
       Warn about argument mismatches for dummy external procedures.  This
!      is implied by '-fc-prototypes-external' because generation of a
       valid C23 interface is not possible in such a case.  Also implied
!      by '-Wall'.
  
! '-Wextra'
       Enables some warning options for usages of language features that
!      may be problematic.  This currently includes '-Wcompare-reals',
!      '-Wunused-parameter' and '-Wdo-subscript'.
  
! '-Wfrontend-loop-interchange'
!      Warn when using '-ffrontend-loop-interchange' for performing loop
       interchanges.
  
! '-Wimplicit-interface'
       Warn if a procedure is called without an explicit interface.  Note
       this only checks that an explicit interface is present.  It does
       not check that the declared interfaces are consistent across
       program units.
  
! '-Wimplicit-procedure'
       Warn if a procedure is called that has neither an explicit
!      interface nor has been declared as 'EXTERNAL'.
  
! '-Winteger-division'
       Warn if a constant integer division truncates its result.  As an
       example, 3/5 evaluates to 0.
  
! '-Wintrinsics-std'
!      Warn if 'gfortran' finds a procedure named like an intrinsic not
!      available in the currently selected standard (with '-std') and
!      treats it as 'EXTERNAL' procedure because of this.
!      '-fall-intrinsics' can be used to never trigger this behavior and
       always link to the intrinsic regardless of the selected standard.
  
! '-Wno-overwrite-recursive'
!      Do not warn when '-fno-automatic' is used with '-frecursive'.
       Recursion is broken if the relevant local variables do not have the
!      attribute 'AUTOMATIC' explicitly declared.  This option can be used
       to suppress the warning when it is known that recursion is not
!      broken.  Useful for build environments that use '-Werror'.
  
! '-Wreal-q-constant'
!      Produce a warning if a real-literal-constant contains a 'q'
       exponent-letter.
  
! '-Wsurprising'
       Produce a warning when "suspicious" code constructs are
       encountered.  While technically legal these usually indicate that
       an error has been made.
--- 1155,1246 ----
  
              call bar(a,a)
  
! â€˜-Wampersandâ€™
       Warn about missing ampersand in continued character constants.  The
!      warning is given with â€˜-Wampersandâ€™, â€˜-pedanticâ€™, â€˜-std=f95â€™,
!      â€˜-std=f2003â€™, â€˜-std=f2008â€™, â€˜-std=f2018â€™ and â€˜-std=f2023â€™.  Note:
       With no ampersand given in a continued character constant, GNU
       Fortran assumes continuation at the first non-comment,
       non-whitespace character after the ampersand that initiated the
       continuation.
  
! â€˜-Warray-temporariesâ€™
       Warn about array temporaries generated by the compiler.  The
       information generated by this warning is sometimes useful in
       optimization, in order to avoid such temporaries.
  
! â€˜-Wc-binding-typeâ€™
       Warn if the a variable might not be C interoperable.  In
       particular, warn if the variable has been declared using an
       intrinsic type with default kind instead of using a kind parameter
!      defined for C interoperability in the intrinsic â€˜ISO_C_Bindingâ€™
!      module.  This option is implied by â€˜-Wallâ€™.
  
! â€˜-Wcharacter-truncationâ€™
       Warn when a character assignment truncates the assigned string.
  
! â€˜-Wline-truncationâ€™
       Warn when a source code line is truncated.  This option is implied
!      by â€˜-Wallâ€™.  For free-form source code, the default is
!      â€˜-Werror=line-truncationâ€™ such that truncations are reported as
       error.
  
! â€˜-Wconversionâ€™
       Warn about implicit conversions that are likely to change the value
!      of the expression after conversion.  Implied by â€˜-Wallâ€™.
  
! â€˜-Wconversion-extraâ€™
       Warn about implicit conversions between different types and kinds.
!      This option does _not_ imply â€˜-Wconversionâ€™.
  
! â€˜-Wexternal-argument-mismatchâ€™
       Warn about argument mismatches for dummy external procedures.  This
!      is implied by â€˜-fc-prototypes-externalâ€™ because generation of a
       valid C23 interface is not possible in such a case.  Also implied
!      by â€˜-Wallâ€™.
  
! â€˜-Wextraâ€™
       Enables some warning options for usages of language features that
!      may be problematic.  This currently includes â€˜-Wcompare-realsâ€™,
!      â€˜-Wunused-parameterâ€™ and â€˜-Wdo-subscriptâ€™.
  
! â€˜-Wfrontend-loop-interchangeâ€™
!      Warn when using â€˜-ffrontend-loop-interchangeâ€™ for performing loop
       interchanges.
  
! â€˜-Wimplicit-interfaceâ€™
       Warn if a procedure is called without an explicit interface.  Note
       this only checks that an explicit interface is present.  It does
       not check that the declared interfaces are consistent across
       program units.
  
! â€˜-Wimplicit-procedureâ€™
       Warn if a procedure is called that has neither an explicit
!      interface nor has been declared as â€˜EXTERNALâ€™.
  
! â€˜-Winteger-divisionâ€™
       Warn if a constant integer division truncates its result.  As an
       example, 3/5 evaluates to 0.
  
! â€˜-Wintrinsics-stdâ€™
!      Warn if â€˜gfortranâ€™ finds a procedure named like an intrinsic not
!      available in the currently selected standard (with â€˜-stdâ€™) and
!      treats it as â€˜EXTERNALâ€™ procedure because of this.
!      â€˜-fall-intrinsicsâ€™ can be used to never trigger this behavior and
       always link to the intrinsic regardless of the selected standard.
  
! â€˜-Wno-overwrite-recursiveâ€™
!      Do not warn when â€˜-fno-automaticâ€™ is used with â€˜-frecursiveâ€™.
       Recursion is broken if the relevant local variables do not have the
!      attribute â€˜AUTOMATICâ€™ explicitly declared.  This option can be used
       to suppress the warning when it is known that recursion is not
!      broken.  Useful for build environments that use â€˜-Werrorâ€™.
  
! â€˜-Wreal-q-constantâ€™
!      Produce a warning if a real-literal-constant contains a â€˜qâ€™
       exponent-letter.
  
! â€˜-Wsurprisingâ€™
       Produce a warning when "suspicious" code constructs are
       encountered.  While technically legal these usually indicate that
       an error has been made.
*************** produced by GNU Fortran:
*** 1248,1355 ****
       This currently produces a warning under the following
       circumstances:
  
!         * An 'INTEGER'-typed 'SELECT CASE' construct has a 'CASE' that
            can never be matched as its lower value is greater than its
            upper value.
  
!         * A 'LOGICAL'-typed 'SELECT CASE' construct has three 'CASE'
            statements.
  
!         * A 'TRANSFER' specifies a source that is shorter than the
            destination.
  
!         * The type of a function result is declared more than once with
!           the same type.  If '-pedantic' or standard-conforming mode is
            enabled, this is an error.
  
!         * A 'CHARACTER' variable is declared with negative length.
  
!         * With '-fopenmp', for fixed-form source code, when an 'omx'
            vendor-extension sentinel is encountered.  (The equivalent
!           'ompx', used in free-form source code, is diagnosed by
            default.)
  
! '-Wtabs'
       By default, tabs are accepted as whitespace, but tabs are not
       members of the Fortran Character Set.  For continuation lines, a
!      tab followed by a digit between 1 and 9 is supported.  '-Wtabs'
       causes a warning to be issued if a tab is encountered.  Note,
!      '-Wtabs' is active for '-pedantic', '-std=f95', '-std=f2003',
!      '-std=f2008', '-std=f2018', '-std=f2023' and '-Wall'.
  
! '-Wundefined-do-loop'
!      Warn if a 'DO' loop with step either 1 or -1 yields an underflow or
       an overflow during iteration of an induction variable of the loop.
!      This option is implied by '-Wall'.
  
! '-Wunderflow'
       Produce a warning when numerical constant expressions that yield an
       underflow are encountered during compilation.  Enabled by default.
  
! '-Wintrinsic-shadow'
       Warn if a user-defined procedure or module procedure has the same
       name as an intrinsic; in this case, an explicit interface or
!      'EXTERNAL' or 'INTRINSIC' declaration might be needed to get calls
       later resolved to the desired intrinsic/procedure.  This option is
!      implied by '-Wall'.
  
! '-Wuse-without-only'
!      Warn if a 'USE' statement has no 'ONLY' qualifier and thus
       implicitly imports all public entities of the used module.
  
! '-Wunused-dummy-argument'
       Warn about unused dummy arguments.  This option is implied by
!      '-Wall'.
  
! '-Wunused-parameter'
!      Contrary to 'gcc''s meaning of '-Wunused-parameter', 'gfortran''s
       implementation of this option does not warn about unused dummy
!      arguments (see '-Wunused-dummy-argument'), but about unused
!      'PARAMETER' values.  '-Wunused-parameter' is implied by '-Wextra'
!      if also '-Wunused' or '-Wall' is used.
  
! '-Walign-commons'
!      By default, 'gfortran' warns about any occasion of variables being
!      padded for proper alignment inside a 'COMMON' block.  This warning
!      can be turned off via '-Wno-align-commons'.  See also
!      '-falign-commons'.
  
! '-Wfunction-elimination'
       Warn if any calls to impure functions are eliminated by the
!      optimizations enabled by the '-ffrontend-optimize' option.  This
!      option is implied by '-Wextra'.
  
! '-Wrealloc-lhs'
       Warn when the compiler might insert code to for allocation or
       reallocation of an allocatable array variable of intrinsic type in
       intrinsic assignments.  In hot loops, the Fortran 2003 reallocation
       feature may reduce the performance.  If the array is already
       allocated with the correct shape, consider using a whole-array
!      array-spec (e.g.  '(:,:,:)') for the variable on the left-hand side
       to prevent the reallocation check.  Note that in some cases the
       warning is shown, even if the compiler optimizes reallocation
       checks away.  For instance, when the right-hand side contains the
!      same variable multiplied by a scalar.  See also '-frealloc-lhs'.
  
! '-Wrealloc-lhs-all'
       Warn when the compiler inserts code to for allocation or
       reallocation of an allocatable variable; this includes scalars and
       derived types.
  
! '-Wcompare-reals'
       Warn when comparing real or complex types for equality or
!      inequality.  This option is implied by '-Wextra'.
  
! '-Wtarget-lifetime'
       Warn if the pointer in a pointer assignment might be longer than
!      the its target.  This option is implied by '-Wall'.
  
! '-Wzerotrip'
!      Warn if a 'DO' loop is known to execute zero times at compile time.
!      This option is implied by '-Wall'.
  
! '-Wdo-subscript'
!      Warn if an array subscript inside a 'DO' loop could lead to an
       out-of-bounds access even if the compiler cannot prove that the
       statement is actually executed, in cases like
              real a(3)
--- 1248,1355 ----
       This currently produces a warning under the following
       circumstances:
  
!         â€¢ An â€˜INTEGERâ€™-typed â€˜SELECT CASEâ€™ construct has a â€˜CASEâ€™ that
            can never be matched as its lower value is greater than its
            upper value.
  
!         â€¢ A â€˜LOGICALâ€™-typed â€˜SELECT CASEâ€™ construct has three â€˜CASEâ€™
            statements.
  
!         â€¢ A â€˜TRANSFERâ€™ specifies a source that is shorter than the
            destination.
  
!         â€¢ The type of a function result is declared more than once with
!           the same type.  If â€˜-pedanticâ€™ or standard-conforming mode is
            enabled, this is an error.
  
!         â€¢ A â€˜CHARACTERâ€™ variable is declared with negative length.
  
!         â€¢ With â€˜-fopenmpâ€™, for fixed-form source code, when an â€˜omxâ€™
            vendor-extension sentinel is encountered.  (The equivalent
!           â€˜ompxâ€™, used in free-form source code, is diagnosed by
            default.)
  
! â€˜-Wtabsâ€™
       By default, tabs are accepted as whitespace, but tabs are not
       members of the Fortran Character Set.  For continuation lines, a
!      tab followed by a digit between 1 and 9 is supported.  â€˜-Wtabsâ€™
       causes a warning to be issued if a tab is encountered.  Note,
!      â€˜-Wtabsâ€™ is active for â€˜-pedanticâ€™, â€˜-std=f95â€™, â€˜-std=f2003â€™,
!      â€˜-std=f2008â€™, â€˜-std=f2018â€™, â€˜-std=f2023â€™ and â€˜-Wallâ€™.
  
! â€˜-Wundefined-do-loopâ€™
!      Warn if a â€˜DOâ€™ loop with step either 1 or -1 yields an underflow or
       an overflow during iteration of an induction variable of the loop.
!      This option is implied by â€˜-Wallâ€™.
  
! â€˜-Wunderflowâ€™
       Produce a warning when numerical constant expressions that yield an
       underflow are encountered during compilation.  Enabled by default.
  
! â€˜-Wintrinsic-shadowâ€™
       Warn if a user-defined procedure or module procedure has the same
       name as an intrinsic; in this case, an explicit interface or
!      â€˜EXTERNALâ€™ or â€˜INTRINSICâ€™ declaration might be needed to get calls
       later resolved to the desired intrinsic/procedure.  This option is
!      implied by â€˜-Wallâ€™.
  
! â€˜-Wuse-without-onlyâ€™
!      Warn if a â€˜USEâ€™ statement has no â€˜ONLYâ€™ qualifier and thus
       implicitly imports all public entities of the used module.
  
! â€˜-Wunused-dummy-argumentâ€™
       Warn about unused dummy arguments.  This option is implied by
!      â€˜-Wallâ€™.
  
! â€˜-Wunused-parameterâ€™
!      Contrary to â€˜gccâ€™'s meaning of â€˜-Wunused-parameterâ€™, â€˜gfortranâ€™'s
       implementation of this option does not warn about unused dummy
!      arguments (see â€˜-Wunused-dummy-argumentâ€™), but about unused
!      â€˜PARAMETERâ€™ values.  â€˜-Wunused-parameterâ€™ is implied by â€˜-Wextraâ€™
!      if also â€˜-Wunusedâ€™ or â€˜-Wallâ€™ is used.
  
! â€˜-Walign-commonsâ€™
!      By default, â€˜gfortranâ€™ warns about any occasion of variables being
!      padded for proper alignment inside a â€˜COMMONâ€™ block.  This warning
!      can be turned off via â€˜-Wno-align-commonsâ€™.  See also
!      â€˜-falign-commonsâ€™.
  
! â€˜-Wfunction-eliminationâ€™
       Warn if any calls to impure functions are eliminated by the
!      optimizations enabled by the â€˜-ffrontend-optimizeâ€™ option.  This
!      option is implied by â€˜-Wextraâ€™.
  
! â€˜-Wrealloc-lhsâ€™
       Warn when the compiler might insert code to for allocation or
       reallocation of an allocatable array variable of intrinsic type in
       intrinsic assignments.  In hot loops, the Fortran 2003 reallocation
       feature may reduce the performance.  If the array is already
       allocated with the correct shape, consider using a whole-array
!      array-spec (e.g.  â€˜(:,:,:)â€™) for the variable on the left-hand side
       to prevent the reallocation check.  Note that in some cases the
       warning is shown, even if the compiler optimizes reallocation
       checks away.  For instance, when the right-hand side contains the
!      same variable multiplied by a scalar.  See also â€˜-frealloc-lhsâ€™.
  
! â€˜-Wrealloc-lhs-allâ€™
       Warn when the compiler inserts code to for allocation or
       reallocation of an allocatable variable; this includes scalars and
       derived types.
  
! â€˜-Wcompare-realsâ€™
       Warn when comparing real or complex types for equality or
!      inequality.  This option is implied by â€˜-Wextraâ€™.
  
! â€˜-Wtarget-lifetimeâ€™
       Warn if the pointer in a pointer assignment might be longer than
!      the its target.  This option is implied by â€˜-Wallâ€™.
  
! â€˜-Wzerotripâ€™
!      Warn if a â€˜DOâ€™ loop is known to execute zero times at compile time.
!      This option is implied by â€˜-Wallâ€™.
  
! â€˜-Wdo-subscriptâ€™
!      Warn if an array subscript inside a â€˜DOâ€™ loop could lead to an
       out-of-bounds access even if the compiler cannot prove that the
       statement is actually executed, in cases like
              real a(3)
*************** produced by GNU Fortran:
*** 1358,1371 ****
                  a(i) = 1.2
                end if
              end do
!      This option is implied by '-Wextra'.
  
! '-Werror'
       Turns all warnings into errors.
  
     *Note Options to Request or Suppress Errors and Warnings:
  (gcc)Warning Options, for information on more options offered by the
! back end shared by 'gfortran', 'gcc' and other GNU compilers.
  
     Some of these have no effect when compiling programs written in
  Fortran.
--- 1358,1371 ----
                  a(i) = 1.2
                end if
              end do
!      This option is implied by â€˜-Wextraâ€™.
  
! â€˜-Werrorâ€™
       Turns all warnings into errors.
  
     *Note Options to Request or Suppress Errors and Warnings:
  (gcc)Warning Options, for information on more options offered by the
! back end shared by â€˜gfortranâ€™, â€˜gccâ€™ and other GNU compilers.
  
     Some of these have no effect when compiling programs written in
  Fortran.
*************** File: gfortran.info,  Node: Debugging Op
*** 1379,1445 ****
  GNU Fortran has various special options that are used for debugging your
  program.
  
! '-fdebug-aux-vars'
       Renames internal variables created by the gfortran front end and
       makes them accessible to a debugger.  The name of the internal
       variables then start with uppercase letters followed by an
       underscore.  This option is useful for debugging the compiler's
!      code generation together with '-fdump-tree-original' and enabling
!      debugging of the executable program by using '-g' or '-ggdb3'.
  
! '-ffpe-trap=LIST'
       Specify a list of floating point exception traps to enable.  On
       most systems, if a floating point exception occurs and the trap for
!      that exception is enabled, a 'SIGFPE' signal is sent and the
       program being aborted, producing a core file useful for debugging.
!      LIST is a (possibly empty) comma-separated list of either 'none'
       (to clear the set of exceptions to be trapped), or of the following
!      exceptions: 'invalid' (invalid floating point operation, such as
!      'SQRT(-1.0)'), 'zero' (division by zero), 'overflow' (overflow in a
!      floating point operation), 'underflow' (underflow in a floating
!      point operation), 'inexact' (loss of precision during operation),
!      and 'denormal' (operation performed on a denormal value).  The
       first five exceptions correspond to the five IEEE 754 exceptions,
!      whereas the last one ('denormal') is not part of the IEEE 754
       standard but is available on some common architectures such as x86.
  
!      The first three exceptions ('invalid', 'zero', and 'overflow')
       often indicate serious errors, and unless the program has
       provisions for dealing with these exceptions, enabling traps for
       these three exceptions is probably a good idea.
  
       If the option is used more than once in the command line, the lists
!      are joined: ''ffpe-trap='LIST1 'ffpe-trap='LIST2' is equivalent to
!      'ffpe-trap='LIST1,LIST2.
  
       Note that once enabled an exception cannot be disabled (no negative
!      form), except by clearing all traps by specifying 'none'.
  
       Many, if not most, floating point operations incur loss of
!      precision due to rounding, and hence the 'ffpe-trap=inexact' is
       likely to be uninteresting in practice.
  
       By default no exception traps are enabled.
  
! '-ffpe-summary=LIST'
       Specify a list of floating-point exceptions, whose flag status is
!      printed to 'ERROR_UNIT' when invoking 'STOP' and 'ERROR STOP'.
!      LIST can be either 'none', 'all' or a comma-separated list of the
!      following exceptions: 'invalid', 'zero', 'overflow', 'underflow',
!      'inexact' and 'denormal'.  (See '-ffpe-trap' for a description of
       the exceptions.)
  
       If the option is used more than once in the command line, only the
       last one is used.
  
!      By default, a summary for all exceptions but 'inexact' is shown.
  
! '-fno-backtrace'
       When a serious runtime error is encountered or a deadly signal is
       emitted (segmentation fault, illegal instruction, bus error,
       floating-point exception, and the other POSIX signals that have the
!      action 'core'), the Fortran runtime library tries to output a
!      backtrace of the error.  '-fno-backtrace' disables the backtrace
       generation.  This option only has influence for compilation of the
       Fortran main program.
  
--- 1379,1445 ----
  GNU Fortran has various special options that are used for debugging your
  program.
  
! â€˜-fdebug-aux-varsâ€™
       Renames internal variables created by the gfortran front end and
       makes them accessible to a debugger.  The name of the internal
       variables then start with uppercase letters followed by an
       underscore.  This option is useful for debugging the compiler's
!      code generation together with â€˜-fdump-tree-originalâ€™ and enabling
!      debugging of the executable program by using â€˜-gâ€™ or â€˜-ggdb3â€™.
  
! â€˜-ffpe-trap=LISTâ€™
       Specify a list of floating point exception traps to enable.  On
       most systems, if a floating point exception occurs and the trap for
!      that exception is enabled, a â€˜SIGFPEâ€™ signal is sent and the
       program being aborted, producing a core file useful for debugging.
!      LIST is a (possibly empty) comma-separated list of either â€˜noneâ€™
       (to clear the set of exceptions to be trapped), or of the following
!      exceptions: â€˜invalidâ€™ (invalid floating point operation, such as
!      â€˜SQRT(-1.0)â€™), â€˜zeroâ€™ (division by zero), â€˜overflowâ€™ (overflow in a
!      floating point operation), â€˜underflowâ€™ (underflow in a floating
!      point operation), â€˜inexactâ€™ (loss of precision during operation),
!      and â€˜denormalâ€™ (operation performed on a denormal value).  The
       first five exceptions correspond to the five IEEE 754 exceptions,
!      whereas the last one (â€˜denormalâ€™) is not part of the IEEE 754
       standard but is available on some common architectures such as x86.
  
!      The first three exceptions (â€˜invalidâ€™, â€˜zeroâ€™, and â€˜overflowâ€™)
       often indicate serious errors, and unless the program has
       provisions for dealing with these exceptions, enabling traps for
       these three exceptions is probably a good idea.
  
       If the option is used more than once in the command line, the lists
!      are joined: 'â€˜ffpe-trap=â€™LIST1 â€˜ffpe-trap=â€™LIST2' is equivalent to
!      â€˜ffpe-trap=â€™LIST1,LIST2.
  
       Note that once enabled an exception cannot be disabled (no negative
!      form), except by clearing all traps by specifying â€˜noneâ€™.
  
       Many, if not most, floating point operations incur loss of
!      precision due to rounding, and hence the â€˜ffpe-trap=inexactâ€™ is
       likely to be uninteresting in practice.
  
       By default no exception traps are enabled.
  
! â€˜-ffpe-summary=LISTâ€™
       Specify a list of floating-point exceptions, whose flag status is
!      printed to â€˜ERROR_UNITâ€™ when invoking â€˜STOPâ€™ and â€˜ERROR STOPâ€™.
!      LIST can be either â€˜noneâ€™, â€˜allâ€™ or a comma-separated list of the
!      following exceptions: â€˜invalidâ€™, â€˜zeroâ€™, â€˜overflowâ€™, â€˜underflowâ€™,
!      â€˜inexactâ€™ and â€˜denormalâ€™.  (See â€˜-ffpe-trapâ€™ for a description of
       the exceptions.)
  
       If the option is used more than once in the command line, only the
       last one is used.
  
!      By default, a summary for all exceptions but â€˜inexactâ€™ is shown.
  
! â€˜-fno-backtraceâ€™
       When a serious runtime error is encountered or a deadly signal is
       emitted (segmentation fault, illegal instruction, bus error,
       floating-point exception, and the other POSIX signals that have the
!      action â€˜coreâ€™), the Fortran runtime library tries to output a
!      backtrace of the error.  â€˜-fno-backtraceâ€™ disables the backtrace
       generation.  This option only has influence for compilation of the
       Fortran main program.
  
*************** File: gfortran.info,  Node: Directory Op
*** 1453,1487 ****
  ================================
  
  These options affect how GNU Fortran searches for files specified by the
! 'INCLUDE' directive and where it searches for previously compiled
  modules.
  
!    It also affects the search paths used by 'cpp' when used to
  preprocess Fortran source.
  
! '-IDIR'
!      These affect interpretation of the 'INCLUDE' directive (as well as
!      of the '#include' directive of the 'cpp' preprocessor).
  
!      Also note that the general behavior of '-I' and 'INCLUDE' is pretty
!      much the same as of '-I' with '#include' in the 'cpp' preprocessor,
!      with regard to looking for 'header.gcc' files and other such
       things.
  
!      This path is also used to search for '.mod' files when previously
!      compiled modules are required by a 'USE' statement.
  
       *Note Options for Directory Search: (gcc)Directory Options, for
!      information on the '-I' option.
  
! '-JDIR'
!      This option specifies where to put '.mod' files for compiled
       modules.  It is also added to the list of directories to searched
!      by an 'USE' statement.
  
       The default is the current directory.
  
! '-fintrinsic-modules-path DIR'
       This option specifies the location of pre-compiled intrinsic
       modules, if they are not in the default location expected by the
       compiler.
--- 1453,1487 ----
  ================================
  
  These options affect how GNU Fortran searches for files specified by the
! â€˜INCLUDEâ€™ directive and where it searches for previously compiled
  modules.
  
!    It also affects the search paths used by â€˜cppâ€™ when used to
  preprocess Fortran source.
  
! â€˜-IDIRâ€™
!      These affect interpretation of the â€˜INCLUDEâ€™ directive (as well as
!      of the â€˜#includeâ€™ directive of the â€˜cppâ€™ preprocessor).
  
!      Also note that the general behavior of â€˜-Iâ€™ and â€˜INCLUDEâ€™ is pretty
!      much the same as of â€˜-Iâ€™ with â€˜#includeâ€™ in the â€˜cppâ€™ preprocessor,
!      with regard to looking for â€˜header.gccâ€™ files and other such
       things.
  
!      This path is also used to search for â€˜.modâ€™ files when previously
!      compiled modules are required by a â€˜USEâ€™ statement.
  
       *Note Options for Directory Search: (gcc)Directory Options, for
!      information on the â€˜-Iâ€™ option.
  
! â€˜-JDIRâ€™
!      This option specifies where to put â€˜.modâ€™ files for compiled
       modules.  It is also added to the list of directories to searched
!      by an â€˜USEâ€™ statement.
  
       The default is the current directory.
  
! â€˜-fintrinsic-modules-path DIRâ€™
       This option specifies the location of pre-compiled intrinsic
       modules, if they are not in the default location expected by the
       compiler.
*************** These options come into play when the co
*** 1496,1514 ****
  an executable output file.  They are meaningless if the compiler is not
  doing a link step.
  
! '-static-libgfortran'
!      On systems that provide 'libgfortran' as a shared and a static
       library, this option forces the use of the static version.  If no
!      shared version of 'libgfortran' was built when the compiler was
       configured, this option has no effect.
  
! '-static-libquadmath'
!      On systems that provide 'libquadmath' as a shared and a static
       library, this option forces the use of the static version.  If no
!      shared version of 'libquadmath' was built when the compiler was
       configured, this option has no effect.
  
!      Please note that the 'libquadmath' runtime library is licensed
       under the GNU Lesser General Public License (LGPL), and linking it
       statically introduces requirements when redistributing the
       resulting binaries.
--- 1496,1514 ----
  an executable output file.  They are meaningless if the compiler is not
  doing a link step.
  
! â€˜-static-libgfortranâ€™
!      On systems that provide â€˜libgfortranâ€™ as a shared and a static
       library, this option forces the use of the static version.  If no
!      shared version of â€˜libgfortranâ€™ was built when the compiler was
       configured, this option has no effect.
  
! â€˜-static-libquadmathâ€™
!      On systems that provide â€˜libquadmathâ€™ as a shared and a static
       library, this option forces the use of the static version.  If no
!      shared version of â€˜libquadmathâ€™ was built when the compiler was
       configured, this option has no effect.
  
!      Please note that the â€˜libquadmathâ€™ runtime library is licensed
       under the GNU Lesser General Public License (LGPL), and linking it
       statically introduces requirements when redistributing the
       resulting binaries.
*************** File: gfortran.info,  Node: Runtime Opti
*** 1522,1567 ****
  These options affect the runtime behavior of programs compiled with GNU
  Fortran.
  
! '-fconvert=CONVERSION'
       Specify the representation of data for unformatted files.  Valid
!      values for conversion on most systems are: 'native', the default;
!      'swap', swap between big- and little-endian; 'big-endian', use
!      big-endian representation for unformatted files; 'little-endian',
       use little-endian representation for unformatted files.
  
!      On POWER systems that suppport '-mabi=ieeelongdouble', there are
       additional options, which can be combined with others with commas.
       Those are
!           '-fconvert=r16_ieee' Use IEEE 128-bit format for
!           'REAL(KIND=16)'.
!           '-fconvert=r16_ibm' Use IBM long double format for
!           'REAL(KIND=16)'.
  
       This option has an effect only when used in the main program.  The
!      'CONVERT' specifier and the 'GFORTRAN_CONVERT_UNIT' environment
!      variable override the default specified by '-fconvert'.
  
! '-frecord-marker=LENGTH'
       Specify the length of record markers for unformatted files.  Valid
       values for LENGTH are 4 and 8.  Default is 4.  _This is different
!      from previous versions of 'gfortran'_, which specified a default
       record marker length of 8 on most systems.  If you want to read or
!      write files compatible with earlier versions of 'gfortran', use
!      '-frecord-marker=8'.
  
! '-fmax-subrecord-length=LENGTH'
       Specify the maximum length for a subrecord.  The maximum permitted
       value for length is 2147483639, which is also the default.  Only
       really useful for use by the gfortran testsuite.
  
! '-fsign-zero'
       When enabled, floating point numbers of value zero with the sign
       bit set are written as negative number in formatted output and
!      treated as negative in the 'SIGN' intrinsic.  '-fno-sign-zero' does
       not print the negative sign of zero values (or values rounded to
!      zero for I/O) and regards zero as positive number in the 'SIGN'
       intrinsic for compatibility with Fortran 77.  The default is
!      '-fsign-zero'.
  
  
  File: gfortran.info,  Node: Developer Options,  Next: Code Gen Options,  Prev: Runtime Options,  Up: Invoking GNU Fortran
--- 1522,1567 ----
  These options affect the runtime behavior of programs compiled with GNU
  Fortran.
  
! â€˜-fconvert=CONVERSIONâ€™
       Specify the representation of data for unformatted files.  Valid
!      values for conversion on most systems are: â€˜nativeâ€™, the default;
!      â€˜swapâ€™, swap between big- and little-endian; â€˜big-endianâ€™, use
!      big-endian representation for unformatted files; â€˜little-endianâ€™,
       use little-endian representation for unformatted files.
  
!      On POWER systems that suppport â€˜-mabi=ieeelongdoubleâ€™, there are
       additional options, which can be combined with others with commas.
       Those are
!           â€˜-fconvert=r16_ieeeâ€™ Use IEEE 128-bit format for
!           â€˜REAL(KIND=16)â€™.
!           â€˜-fconvert=r16_ibmâ€™ Use IBM long double format for
!           â€˜REAL(KIND=16)â€™.
  
       This option has an effect only when used in the main program.  The
!      â€˜CONVERTâ€™ specifier and the â€˜GFORTRAN_CONVERT_UNITâ€™ environment
!      variable override the default specified by â€˜-fconvertâ€™.
  
! â€˜-frecord-marker=LENGTHâ€™
       Specify the length of record markers for unformatted files.  Valid
       values for LENGTH are 4 and 8.  Default is 4.  _This is different
!      from previous versions of â€˜gfortranâ€™_, which specified a default
       record marker length of 8 on most systems.  If you want to read or
!      write files compatible with earlier versions of â€˜gfortranâ€™, use
!      â€˜-frecord-marker=8â€™.
  
! â€˜-fmax-subrecord-length=LENGTHâ€™
       Specify the maximum length for a subrecord.  The maximum permitted
       value for length is 2147483639, which is also the default.  Only
       really useful for use by the gfortran testsuite.
  
! â€˜-fsign-zeroâ€™
       When enabled, floating point numbers of value zero with the sign
       bit set are written as negative number in formatted output and
!      treated as negative in the â€˜SIGNâ€™ intrinsic.  â€˜-fno-sign-zeroâ€™ does
       not print the negative sign of zero values (or values rounded to
!      zero for I/O) and regards zero as positive number in the â€˜SIGNâ€™
       intrinsic for compatibility with Fortran 77.  The default is
!      â€˜-fsign-zeroâ€™.
  
  
  File: gfortran.info,  Node: Developer Options,  Next: Code Gen Options,  Prev: Runtime Options,  Up: Invoking GNU Fortran
*************** File: gfortran.info,  Node: Developer Op
*** 1572,1592 ****
  GNU Fortran has various special options that are used for debugging the
  GNU Fortran compiler.
  
! '-fdump-fortran-global'
       Output a list of the global identifiers after translating into
       middle-end representation.  Mostly useful for debugging the GNU
       Fortran compiler itself.  The output generated by this option might
       change between releases.  This option may also generate internal
       compiler errors for features that have only recently been added.
  
! '-fdump-fortran-optimized'
       Output the parse tree after front-end optimization.  Mostly useful
       for debugging the GNU Fortran compiler itself.  The output
       generated by this option might change between releases.  This
       option may also generate internal compiler errors for features that
       have only recently been added.
  
! '-fdump-fortran-original'
       Output the internal parse tree after translating the source program
       into internal representation.  This option is mostly useful for
       debugging the GNU Fortran compiler itself.  The output generated by
--- 1572,1592 ----
  GNU Fortran has various special options that are used for debugging the
  GNU Fortran compiler.
  
! â€˜-fdump-fortran-globalâ€™
       Output a list of the global identifiers after translating into
       middle-end representation.  Mostly useful for debugging the GNU
       Fortran compiler itself.  The output generated by this option might
       change between releases.  This option may also generate internal
       compiler errors for features that have only recently been added.
  
! â€˜-fdump-fortran-optimizedâ€™
       Output the parse tree after front-end optimization.  Mostly useful
       for debugging the GNU Fortran compiler itself.  The output
       generated by this option might change between releases.  This
       option may also generate internal compiler errors for features that
       have only recently been added.
  
! â€˜-fdump-fortran-originalâ€™
       Output the internal parse tree after translating the source program
       into internal representation.  This option is mostly useful for
       debugging the GNU Fortran compiler itself.  The output generated by
*************** GNU Fortran compiler.
*** 1594,1622 ****
       generate internal compiler errors for features that have only
       recently been added.
  
! '-fdump-parse-tree'
       Output the internal parse tree after translating the source program
       into internal representation.  Mostly useful for debugging the GNU
       Fortran compiler itself.  The output generated by this option might
       change between releases.  This option may also generate internal
       compiler errors for features that have only recently been added.
!      This option is deprecated; use '-fdump-fortran-original' instead.
  
! '-save-temps'
       Store the usual "temporary" intermediate files permanently; name
       them as auxiliary output files, as specified described under GCC
!      '-dumpbase' and '-dumpdir'.
  
            gfortran -save-temps -c foo.F90
  
!      preprocesses input file 'foo.F90' to 'foo.fii', compiles to an
!      intermediate 'foo.s', and then assembles to the (implied) output
!      file 'foo.o', whereas:
  
            gfortran -save-temps -S foo.F
  
!      saves the preprocessor output in 'foo.fi', and then compiles to the
!      (implied) output file 'foo.s'.
  
  
  File: gfortran.info,  Node: Code Gen Options,  Next: Interoperability Options,  Prev: Developer Options,  Up: Invoking GNU Fortran
--- 1594,1622 ----
       generate internal compiler errors for features that have only
       recently been added.
  
! â€˜-fdump-parse-treeâ€™
       Output the internal parse tree after translating the source program
       into internal representation.  Mostly useful for debugging the GNU
       Fortran compiler itself.  The output generated by this option might
       change between releases.  This option may also generate internal
       compiler errors for features that have only recently been added.
!      This option is deprecated; use â€˜-fdump-fortran-originalâ€™ instead.
  
! â€˜-save-tempsâ€™
       Store the usual "temporary" intermediate files permanently; name
       them as auxiliary output files, as specified described under GCC
!      â€˜-dumpbaseâ€™ and â€˜-dumpdirâ€™.
  
            gfortran -save-temps -c foo.F90
  
!      preprocesses input file â€˜foo.F90â€™ to â€˜foo.fiiâ€™, compiles to an
!      intermediate â€˜foo.sâ€™, and then assembles to the (implied) output
!      file â€˜foo.oâ€™, whereas:
  
            gfortran -save-temps -S foo.F
  
!      saves the preprocessor output in â€˜foo.fiâ€™, and then compiles to the
!      (implied) output file â€˜foo.sâ€™.
  
  
  File: gfortran.info,  Node: Code Gen Options,  Next: Interoperability Options,  Prev: Developer Options,  Up: Invoking GNU Fortran
*************** These machine-independent options contro
*** 1628,1710 ****
  in code generation.
  
     Most of them have both positive and negative forms; the negative form
! of '-ffoo' would be '-fno-foo'.  In the table below, only one of the
  forms is listed--the one that is not the default.  You can figure out
! the other form by either removing 'no-' or adding it.
  
! '-fno-automatic'
!      Treat each program unit (except those marked as 'RECURSIVE') as if
!      the 'SAVE' statement were specified for every local variable and
       array referenced in it.  Does not affect common blocks.  (Some
!      Fortran compilers provide this option under the name '-static' or
!      '-save'.)  The default, which is '-fautomatic', uses the stack for
       local variables smaller than the value given by
!      '-fmax-stack-var-size'.  Use the option '-frecursive' to use no
       static memory.
  
!      Local variables or arrays having an explicit 'SAVE' attribute are
!      silently ignored unless the '-pedantic' option is added.
  
! '-ff2c'
       Generate code designed to be compatible with code generated by
!      'g77' and 'f2c'.
  
!      The calling conventions used by 'g77' (originally implemented in
!      'f2c') require functions that return type default 'REAL' to
!      actually return the C type 'double', and functions that return type
!      'COMPLEX' to return the values via an extra argument in the calling
       sequence that points to where to store the return value.  Under the
       default GNU calling conventions, such functions simply return their
!      results as they would in GNU C--default 'REAL' functions return the
!      C type 'float', and 'COMPLEX' functions return the GNU C type
!      'complex'.  Additionally, this option implies the
!      '-fsecond-underscore' option, unless '-fno-second-underscore' is
       explicitly requested.
  
       This does not affect the generation of code that interfaces with
!      the 'libgfortran' library.
  
       _Caution:_ It is not a good idea to mix Fortran code compiled with
!      '-ff2c' with code compiled with the default '-fno-f2c' calling
!      conventions as, calling 'COMPLEX' or default 'REAL' functions
       between program parts that were compiled with different calling
       conventions will break at execution time.
  
       _Caution:_ This breaks code that passes intrinsic functions of type
!      default 'REAL' or 'COMPLEX' as actual arguments, as the library
!      implementations use the '-fno-f2c' calling conventions.
  
! '-fno-underscoring'
       Do not transform names of entities specified in the Fortran source
       file by appending underscores to them.
  
!      With '-funderscoring' in effect, GNU Fortran appends one underscore
       to external names.  This is done to ensure compatibility with code
       produced by many UNIX Fortran compilers.  Note this does not apply
       to names declared with C binding, or within a module.
  
       _Caution_: The default behavior of GNU Fortran is incompatible with
!      'f2c' and 'g77', please use the '-ff2c' option if you want object
       files compiled with GNU Fortran to be compatible with object code
       created with these tools.
  
!      Use of '-fno-underscoring' is not recommended unless you are
       experimenting with issues such as integration of GNU Fortran into
!      existing system environments (vis-a`-vis existing libraries, tools,
       and so on).
  
!      For example, with '-funderscoring', and assuming that 'j()' and
!      'max_count()' are external functions while 'my_var' and 'lvar' are
       local variables, a Fortran statement like
            I = J() + MAX_COUNT (MY_VAR, LVAR)
       is implemented as something akin to the C code:
            i = j_() + max_count_(&my_var, &lvar);
  
!      With '-fno-underscoring', the same statement is implemented as:
  
            i = j() + max_count(&my_var, &lvar);
  
!      Use of '-fno-underscoring' allows direct specification of
       user-defined names while debugging and when interfacing GNU Fortran
       code with other languages.
  
--- 1628,1710 ----
  in code generation.
  
     Most of them have both positive and negative forms; the negative form
! of â€˜-ffooâ€™ would be â€˜-fno-fooâ€™.  In the table below, only one of the
  forms is listed--the one that is not the default.  You can figure out
! the other form by either removing â€˜no-â€™ or adding it.
  
! â€˜-fno-automaticâ€™
!      Treat each program unit (except those marked as â€˜RECURSIVEâ€™) as if
!      the â€˜SAVEâ€™ statement were specified for every local variable and
       array referenced in it.  Does not affect common blocks.  (Some
!      Fortran compilers provide this option under the name â€˜-staticâ€™ or
!      â€˜-saveâ€™.)  The default, which is â€˜-fautomaticâ€™, uses the stack for
       local variables smaller than the value given by
!      â€˜-fmax-stack-var-sizeâ€™.  Use the option â€˜-frecursiveâ€™ to use no
       static memory.
  
!      Local variables or arrays having an explicit â€˜SAVEâ€™ attribute are
!      silently ignored unless the â€˜-pedanticâ€™ option is added.
  
! â€˜-ff2câ€™
       Generate code designed to be compatible with code generated by
!      â€˜g77â€™ and â€˜f2câ€™.
  
!      The calling conventions used by â€˜g77â€™ (originally implemented in
!      â€˜f2câ€™) require functions that return type default â€˜REALâ€™ to
!      actually return the C type â€˜doubleâ€™, and functions that return type
!      â€˜COMPLEXâ€™ to return the values via an extra argument in the calling
       sequence that points to where to store the return value.  Under the
       default GNU calling conventions, such functions simply return their
!      results as they would in GNU C--default â€˜REALâ€™ functions return the
!      C type â€˜floatâ€™, and â€˜COMPLEXâ€™ functions return the GNU C type
!      â€˜complexâ€™.  Additionally, this option implies the
!      â€˜-fsecond-underscoreâ€™ option, unless â€˜-fno-second-underscoreâ€™ is
       explicitly requested.
  
       This does not affect the generation of code that interfaces with
!      the â€˜libgfortranâ€™ library.
  
       _Caution:_ It is not a good idea to mix Fortran code compiled with
!      â€˜-ff2câ€™ with code compiled with the default â€˜-fno-f2câ€™ calling
!      conventions as, calling â€˜COMPLEXâ€™ or default â€˜REALâ€™ functions
       between program parts that were compiled with different calling
       conventions will break at execution time.
  
       _Caution:_ This breaks code that passes intrinsic functions of type
!      default â€˜REALâ€™ or â€˜COMPLEXâ€™ as actual arguments, as the library
!      implementations use the â€˜-fno-f2câ€™ calling conventions.
  
! â€˜-fno-underscoringâ€™
       Do not transform names of entities specified in the Fortran source
       file by appending underscores to them.
  
!      With â€˜-funderscoringâ€™ in effect, GNU Fortran appends one underscore
       to external names.  This is done to ensure compatibility with code
       produced by many UNIX Fortran compilers.  Note this does not apply
       to names declared with C binding, or within a module.
  
       _Caution_: The default behavior of GNU Fortran is incompatible with
!      â€˜f2câ€™ and â€˜g77â€™, please use the â€˜-ff2câ€™ option if you want object
       files compiled with GNU Fortran to be compatible with object code
       created with these tools.
  
!      Use of â€˜-fno-underscoringâ€™ is not recommended unless you are
       experimenting with issues such as integration of GNU Fortran into
!      existing system environments (vis-Ã -vis existing libraries, tools,
       and so on).
  
!      For example, with â€˜-funderscoringâ€™, and assuming that â€˜j()â€™ and
!      â€˜max_count()â€™ are external functions while â€˜my_varâ€™ and â€˜lvarâ€™ are
       local variables, a Fortran statement like
            I = J() + MAX_COUNT (MY_VAR, LVAR)
       is implemented as something akin to the C code:
            i = j_() + max_count_(&my_var, &lvar);
  
!      With â€˜-fno-underscoringâ€™, the same statement is implemented as:
  
            i = j() + max_count(&my_var, &lvar);
  
!      Use of â€˜-fno-underscoringâ€™ allows direct specification of
       user-defined names while debugging and when interfacing GNU Fortran
       code with other languages.
  
*************** the other form by either removing 'no-'
*** 1718,1724 ****
       can require significant effort, and, unlike naming disagreements,
       linkers normally cannot detect disagreements in these other areas.
  
!      Also, note that with '-fno-underscoring', the lack of appended
       underscores introduces the very real possibility that a
       user-defined external name conflicts with a name in a system
       library, which could make finding unresolved-reference bugs quite
--- 1718,1724 ----
       can require significant effort, and, unlike naming disagreements,
       linkers normally cannot detect disagreements in these other areas.
  
!      Also, note that with â€˜-fno-underscoringâ€™, the lack of appended
       underscores introduces the very real possibility that a
       user-defined external name conflicts with a name in a system
       library, which could make finding unresolved-reference bugs quite
*************** the other form by either removing 'no-'
*** 1726,1777 ****
       show up only as buggy behavior at run time.
  
       *Note Naming and argument-passing conventions::, for more
!      information.  Also note that declaring symbols as 'bind(C)' is a
       more robust way to interface with code written in other languages
       or compiled with different Fortran compilers than the command-line
       options documented in this section.
  
! '-fsecond-underscore'
       By default, GNU Fortran appends an underscore to external names.
       If this option is used, GNU Fortran appends two underscores to
       names with underscores and one underscore to names with no
       underscores.
  
!      For example, an external name such as 'MAX_COUNT' is implemented as
!      a reference to the link-time external symbol 'max_count__', instead
!      of 'max_count_'.  This is required for compatibility with 'g77' and
!      'f2c', and is implied by use of the '-ff2c' option.
  
!      This option has no effect if '-fno-underscoring' is in effect.  It
!      is implied by the '-ff2c' option.
  
! '-fcoarray=<KEYWORD>'
  
!      'none'
            Disable coarray support; using coarray declarations and
            image-control statements produces a compile-time error.
            (Default)
  
!      'single'
!           Single-image mode, i.e.  'num_images()' is always one.
  
!      'lib'
            Library-based coarray parallelization; a suitable GNU Fortran
            coarray library such as <http://opencoarrays.org> needs to be
!           linked.  Alternatively, GCC's 'libcaf_single' library can be
            linked, albeit it only supports a single image.
  
! '-fcheck=<KEYWORD>'
  
       Enable the generation of run-time checks; the argument shall be a
       comma-delimited list of the following keywords.  Prefixing a check
!      with 'no-' disables it if it was activated by a previous
       specification.
  
!      'all'
!           Enable all run-time test of '-fcheck'.
  
!      'array-temps'
            Warns at run time when for passing an actual argument a
            temporary array had to be generated.  The information
            generated by this warning is sometimes useful in optimization,
--- 1726,1777 ----
       show up only as buggy behavior at run time.
  
       *Note Naming and argument-passing conventions::, for more
!      information.  Also note that declaring symbols as â€˜bind(C)â€™ is a
       more robust way to interface with code written in other languages
       or compiled with different Fortran compilers than the command-line
       options documented in this section.
  
! â€˜-fsecond-underscoreâ€™
       By default, GNU Fortran appends an underscore to external names.
       If this option is used, GNU Fortran appends two underscores to
       names with underscores and one underscore to names with no
       underscores.
  
!      For example, an external name such as â€˜MAX_COUNTâ€™ is implemented as
!      a reference to the link-time external symbol â€˜max_count__â€™, instead
!      of â€˜max_count_â€™.  This is required for compatibility with â€˜g77â€™ and
!      â€˜f2câ€™, and is implied by use of the â€˜-ff2câ€™ option.
  
!      This option has no effect if â€˜-fno-underscoringâ€™ is in effect.  It
!      is implied by the â€˜-ff2câ€™ option.
  
! â€˜-fcoarray=<KEYWORD>â€™
  
!      â€˜noneâ€™
            Disable coarray support; using coarray declarations and
            image-control statements produces a compile-time error.
            (Default)
  
!      â€˜singleâ€™
!           Single-image mode, i.e.  â€˜num_images()â€™ is always one.
  
!      â€˜libâ€™
            Library-based coarray parallelization; a suitable GNU Fortran
            coarray library such as <http://opencoarrays.org> needs to be
!           linked.  Alternatively, GCC's â€˜libcaf_singleâ€™ library can be
            linked, albeit it only supports a single image.
  
! â€˜-fcheck=<KEYWORD>â€™
  
       Enable the generation of run-time checks; the argument shall be a
       comma-delimited list of the following keywords.  Prefixing a check
!      with â€˜no-â€™ disables it if it was activated by a previous
       specification.
  
!      â€˜allâ€™
!           Enable all run-time test of â€˜-fcheckâ€™.
  
!      â€˜array-tempsâ€™
            Warns at run time when for passing an actual argument a
            temporary array had to be generated.  The information
            generated by this warning is sometimes useful in optimization,
*************** the other form by either removing 'no-'
*** 1779,1789 ****
  
            Note: The warning is only printed once per location.
  
!      'bits'
            Enable generation of run-time checks for invalid arguments to
            the bit manipulation intrinsics.
  
!      'bounds'
            Enable generation of run-time checks for array subscripts and
            against the declared minimum and maximum values.  It also
            checks array indices for assumed and deferred shape arrays
--- 1779,1789 ----
  
            Note: The warning is only printed once per location.
  
!      â€˜bitsâ€™
            Enable generation of run-time checks for invalid arguments to
            the bit manipulation intrinsics.
  
!      â€˜boundsâ€™
            Enable generation of run-time checks for array subscripts and
            against the declared minimum and maximum values.  It also
            checks array indices for assumed and deferred shape arrays
*************** the other form by either removing 'no-'
*** 1791,1832 ****
            string lengths are equal for character array constructors
            without an explicit typespec.
  
!           Some checks require that '-fcheck=bounds' is set for the
            compilation of the main program.
  
            Note: In the future this may also include other forms of
            checking, e.g., checking substring references.
  
!      'do'
            Enable generation of run-time checks for invalid modification
            of loop iteration variables.
  
!      'mem'
            Enable generation of run-time checks for memory allocation.
            Note: This option does not affect explicit allocations using
!           the 'ALLOCATE' statement, which are always checked.
  
!      'pointer'
            Enable generation of run-time checks for pointers and
            allocatables.
  
!      'recursion'
            Enable generation of run-time checks for recursively called
            subroutines and functions that are not marked as recursive.
!           See also '-frecursive'.  Note: This check does not work for
            OpenMP programs and is disabled if used together with
!           '-frecursive' and '-fopenmp'.
  
!      Example: Assuming you have a file 'foo.f90', the command
              gfortran -fcheck=all,no-array-temps foo.f90
       compiles the file with all checks enabled as specified above except
       warnings for generated array temporaries.
  
! '-fbounds-check'
!      Deprecated alias for '-fcheck=bounds'.
  
! '-ftail-call-workaround'
! '-ftail-call-workaround=N'
       Some C interfaces to Fortran codes violate the gfortran ABI by
       omitting the hidden character length arguments as described in
       *Note Argument passing conventions::.  This can lead to crashes
--- 1791,1832 ----
            string lengths are equal for character array constructors
            without an explicit typespec.
  
!           Some checks require that â€˜-fcheck=boundsâ€™ is set for the
            compilation of the main program.
  
            Note: In the future this may also include other forms of
            checking, e.g., checking substring references.
  
!      â€˜doâ€™
            Enable generation of run-time checks for invalid modification
            of loop iteration variables.
  
!      â€˜memâ€™
            Enable generation of run-time checks for memory allocation.
            Note: This option does not affect explicit allocations using
!           the â€˜ALLOCATEâ€™ statement, which are always checked.
  
!      â€˜pointerâ€™
            Enable generation of run-time checks for pointers and
            allocatables.
  
!      â€˜recursionâ€™
            Enable generation of run-time checks for recursively called
            subroutines and functions that are not marked as recursive.
!           See also â€˜-frecursiveâ€™.  Note: This check does not work for
            OpenMP programs and is disabled if used together with
!           â€˜-frecursiveâ€™ and â€˜-fopenmpâ€™.
  
!      Example: Assuming you have a file â€˜foo.f90â€™, the command
              gfortran -fcheck=all,no-array-temps foo.f90
       compiles the file with all checks enabled as specified above except
       warnings for generated array temporaries.
  
! â€˜-fbounds-checkâ€™
!      Deprecated alias for â€˜-fcheck=boundsâ€™.
  
! â€˜-ftail-call-workaroundâ€™
! â€˜-ftail-call-workaround=Nâ€™
       Some C interfaces to Fortran codes violate the gfortran ABI by
       omitting the hidden character length arguments as described in
       *Note Argument passing conventions::.  This can lead to crashes
*************** the other form by either removing 'no-'
*** 1834,1865 ****
  
       To provide a workaround for existing binary packages, this option
       disables tail call optimization for gfortran procedures with
!      character arguments.  With '-ftail-call-workaround=2' tail call
       optimization is disabled in all gfortran procedures with character
!      arguments, with '-ftail-call-workaround=1' or equivalent
!      '-ftail-call-workaround' only in gfortran procedures with character
       arguments that call implicitly prototyped procedures.
  
       Using this option can lead to problems including crashes due to
       insufficient stack space.
  
       It is _very strongly_ recommended to fix the code in question.  The
!      '-fc-prototypes-external' option can be used to generate prototypes
       that conform to gfortran's ABI, for inclusion in the source code.
  
       Support for this option will likely be withdrawn in a future
       release of gfortran.
  
!      The negative form, '-fno-tail-call-workaround' or equivalent
!      '-ftail-call-workaround=0', can be used to disable this option.
  
!      Default is currently '-ftail-call-workaround', this will change in
       future releases.
  
! '-fcheck-array-temporaries'
!      Deprecated alias for '-fcheck=array-temps'.
  
! '-fmax-array-constructor=N'
       This option can be used to increase the upper limit permitted in
       array constructors.  The code below requires this option to expand
       the array at compile time.
--- 1834,1865 ----
  
       To provide a workaround for existing binary packages, this option
       disables tail call optimization for gfortran procedures with
!      character arguments.  With â€˜-ftail-call-workaround=2â€™ tail call
       optimization is disabled in all gfortran procedures with character
!      arguments, with â€˜-ftail-call-workaround=1â€™ or equivalent
!      â€˜-ftail-call-workaroundâ€™ only in gfortran procedures with character
       arguments that call implicitly prototyped procedures.
  
       Using this option can lead to problems including crashes due to
       insufficient stack space.
  
       It is _very strongly_ recommended to fix the code in question.  The
!      â€˜-fc-prototypes-externalâ€™ option can be used to generate prototypes
       that conform to gfortran's ABI, for inclusion in the source code.
  
       Support for this option will likely be withdrawn in a future
       release of gfortran.
  
!      The negative form, â€˜-fno-tail-call-workaroundâ€™ or equivalent
!      â€˜-ftail-call-workaround=0â€™, can be used to disable this option.
  
!      Default is currently â€˜-ftail-call-workaroundâ€™, this will change in
       future releases.
  
! â€˜-fcheck-array-temporariesâ€™
!      Deprecated alias for â€˜-fcheck=array-tempsâ€™.
  
! â€˜-fmax-array-constructor=Nâ€™
       This option can be used to increase the upper limit permitted in
       array constructors.  The code below requires this option to expand
       the array at compile time.
*************** the other form by either removing 'no-'
*** 1877,1889 ****
  
       The default value for N is 65535.
  
! '-fmax-stack-var-size=N'
       This option specifies the size in bytes of the largest array that
       is put on the stack; if the size is exceeded static memory is used
!      (except in procedures marked as 'RECURSIVE').  Use the option
!      '-frecursive' to allow for recursive procedures that do not have a
!      'RECURSIVE' attribute or for parallel programs.  Use
!      '-fno-automatic' to never use the stack.
  
       This option currently only affects local arrays declared with
       constant bounds, and may not apply to all character variables.
--- 1877,1889 ----
  
       The default value for N is 65535.
  
! â€˜-fmax-stack-var-size=Nâ€™
       This option specifies the size in bytes of the largest array that
       is put on the stack; if the size is exceeded static memory is used
!      (except in procedures marked as â€˜RECURSIVEâ€™).  Use the option
!      â€˜-frecursiveâ€™ to allow for recursive procedures that do not have a
!      â€˜RECURSIVEâ€™ attribute or for parallel programs.  Use
!      â€˜-fno-automaticâ€™ to never use the stack.
  
       This option currently only affects local arrays declared with
       constant bounds, and may not apply to all character variables.
*************** the other form by either removing 'no-'
*** 1891,1911 ****
  
       The default value for N is 65536.
  
! '-fstack-arrays'
       Adding this option makes the Fortran compiler put all arrays of
       unknown size and array temporaries onto stack memory.  If your
       program uses very large local arrays it is possible that you have
       to extend your runtime limits for stack memory on some operating
       systems.  This flag is enabled by default at optimization level
!      '-Ofast' unless '-fmax-stack-var-size' is specified.
  
! '-fpack-derived'
       This option tells GNU Fortran to pack derived type members as
       closely as possible.  Code compiled with this option is likely to
       be incompatible with code compiled without this option, and may
       execute slower.
  
! '-frepack-arrays'
       In some circumstances GNU Fortran may pass assumed shape array
       sections via a descriptor describing a noncontiguous area of
       memory.  This option adds code to the function prologue to repack
--- 1891,1911 ----
  
       The default value for N is 65536.
  
! â€˜-fstack-arraysâ€™
       Adding this option makes the Fortran compiler put all arrays of
       unknown size and array temporaries onto stack memory.  If your
       program uses very large local arrays it is possible that you have
       to extend your runtime limits for stack memory on some operating
       systems.  This flag is enabled by default at optimization level
!      â€˜-Ofastâ€™ unless â€˜-fmax-stack-var-sizeâ€™ is specified.
  
! â€˜-fpack-derivedâ€™
       This option tells GNU Fortran to pack derived type members as
       closely as possible.  Code compiled with this option is likely to
       be incompatible with code compiled without this option, and may
       execute slower.
  
! â€˜-frepack-arraysâ€™
       In some circumstances GNU Fortran may pass assumed shape array
       sections via a descriptor describing a noncontiguous area of
       memory.  This option adds code to the function prologue to repack
*************** the other form by either removing 'no-'
*** 1915,1932 ****
       introduce significant overhead to the function call, especially
       when the passed data is noncontiguous.
  
! '-fshort-enums'
       This option is provided for interoperability with C code that was
!      compiled with the '-fshort-enums' option.  It makes GNU Fortran
!      choose the smallest 'INTEGER' kind a given enumerator set fits in,
       and give all its enumerators this kind.
  
! '-finline-arg-packing'
       When passing an assumed-shape argument of a procedure as actual
       argument to an assumed-size or explicit size or as argument to a
       procedure that does not have an explicit interface, the argument
       may have to be packed; that is, put into contiguous memory.  An
!      example is the call to 'foo' in
              subroutine foo(a)
                 real, dimension(*) :: a
              end subroutine foo
--- 1915,1932 ----
       introduce significant overhead to the function call, especially
       when the passed data is noncontiguous.
  
! â€˜-fshort-enumsâ€™
       This option is provided for interoperability with C code that was
!      compiled with the â€˜-fshort-enumsâ€™ option.  It makes GNU Fortran
!      choose the smallest â€˜INTEGERâ€™ kind a given enumerator set fits in,
       and give all its enumerators this kind.
  
! â€˜-finline-arg-packingâ€™
       When passing an assumed-shape argument of a procedure as actual
       argument to an assumed-size or explicit size or as argument to a
       procedure that does not have an explicit interface, the argument
       may have to be packed; that is, put into contiguous memory.  An
!      example is the call to â€˜fooâ€™ in
              subroutine foo(a)
                 real, dimension(*) :: a
              end subroutine foo
*************** the other form by either removing 'no-'
*** 1935,1971 ****
                 call foo(b)
              end subroutine bar
  
!      When '-finline-arg-packing' is in effect, this packing is performed
       by inline code.  This allows for more optimization while increasing
       code size.
  
!      '-finline-arg-packing' is implied by any of the '-O' options except
!      when optimizing for size via '-Os'.  If the code contains a very
       large number of argument that have to be packed, code size and also
       compilation time may become excessive.  If that is the case, it may
       be better to disable this option.  Instances of packing can be
!      found by using '-Warray-temporaries'.
  
! '-fexternal-blas'
!      This option makes 'gfortran' generate calls to BLAS functions for
!      some matrix operations like 'MATMUL', instead of using our own
       algorithms, if the size of the matrices involved is larger than a
!      given limit (see '-fblas-matmul-limit').  This may be profitable if
       an optimized vendor BLAS library is available.  The BLAS library
       has to be specified at link time.
  
! '-fblas-matmul-limit=N'
!      Only significant when '-fexternal-blas' is in effect.  Matrix
       multiplication of matrices with size larger than (or equal to) N is
       performed by calls to BLAS functions, while others are handled by
!      'gfortran' internal algorithms.  If the matrices involved are not
       square, the size comparison is performed using the geometric mean
       of the dimensions of the argument and result matrices.
  
       The default value for N is 30.
  
! '-finline-intrinsics'
! '-finline-intrinsics=INTR1,INTR2,...'
       Prefer generating inline code over calls to libgfortran functions
       to implement intrinsics.
  
--- 1935,1971 ----
                 call foo(b)
              end subroutine bar
  
!      When â€˜-finline-arg-packingâ€™ is in effect, this packing is performed
       by inline code.  This allows for more optimization while increasing
       code size.
  
!      â€˜-finline-arg-packingâ€™ is implied by any of the â€˜-Oâ€™ options except
!      when optimizing for size via â€˜-Osâ€™.  If the code contains a very
       large number of argument that have to be packed, code size and also
       compilation time may become excessive.  If that is the case, it may
       be better to disable this option.  Instances of packing can be
!      found by using â€˜-Warray-temporariesâ€™.
  
! â€˜-fexternal-blasâ€™
!      This option makes â€˜gfortranâ€™ generate calls to BLAS functions for
!      some matrix operations like â€˜MATMULâ€™, instead of using our own
       algorithms, if the size of the matrices involved is larger than a
!      given limit (see â€˜-fblas-matmul-limitâ€™).  This may be profitable if
       an optimized vendor BLAS library is available.  The BLAS library
       has to be specified at link time.
  
! â€˜-fblas-matmul-limit=Nâ€™
!      Only significant when â€˜-fexternal-blasâ€™ is in effect.  Matrix
       multiplication of matrices with size larger than (or equal to) N is
       performed by calls to BLAS functions, while others are handled by
!      â€˜gfortranâ€™ internal algorithms.  If the matrices involved are not
       square, the size comparison is performed using the geometric mean
       of the dimensions of the argument and result matrices.
  
       The default value for N is 30.
  
! â€˜-finline-intrinsicsâ€™
! â€˜-finline-intrinsics=INTR1,INTR2,...â€™
       Prefer generating inline code over calls to libgfortran functions
       to implement intrinsics.
  
*************** the other form by either removing 'no-'
*** 1975,1982 ****
       available, and there is no choice of implementation.  However, some
       intrinsics can use a library function or inline code, where inline
       code typically offers opportunities for additional optimization
!      over a library function.  With '-finline-intrinsics=...' or
!      '-fno-inline-intrinsics=...', the choice applies only to the
       intrinsics present in the comma-separated list provided as
       argument.
  
--- 1975,1982 ----
       available, and there is no choice of implementation.  However, some
       intrinsics can use a library function or inline code, where inline
       code typically offers opportunities for additional optimization
!      over a library function.  With â€˜-finline-intrinsics=...â€™ or
!      â€˜-fno-inline-intrinsics=...â€™, the choice applies only to the
       intrinsics present in the comma-separated list provided as
       argument.
  
*************** the other form by either removing 'no-'
*** 1985,2115 ****
       on optimization: library calls are generated when not optimizing or
       when optimizing for size; otherwise inline code is preferred.
  
!      The set of intrinsics allowed as argument to '-finline-intrinsics='
!      is currently limited to 'MAXLOC' and 'MINLOC'.  The effect of the
!      flag is moreover limited to calls of those intrinsics without 'DIM'
!      argument and with 'ARRAY' of a non-'CHARACTER' type.  The case of
!      rank-1 argument and 'DIM' argument present, i.e.
!      'MAXLOC(A(:),DIM=1)' or 'MINLOC(A(:),DIM=1)' is inlined
!      unconditionally for numeric rank-1 array argument 'A'.
  
! '-finline-matmul-limit=N'
!      When front-end optimization is active, some calls to the 'MATMUL'
       intrinsic function are inlined.  This may result in code size
       increase if the size of the matrix cannot be determined at compile
       time, as code for both cases is generated.  Setting
!      '-finline-matmul-limit=0' disables inlining in all cases.  Setting
       this option with a value of N produces inline code for matrices
       with size up to N.  If the matrices involved are not square, the
       size comparison is performed using the geometric mean of the
       dimensions of the argument and result matrices.
  
!      The default value for N is 30.  The '-fblas-matmul-limit' can be
       used to change this value.
  
! '-frecursive'
       Allow indirect recursion by forcing all local arrays to be
       allocated on the stack.  This flag cannot be used together with
!      '-fmax-stack-var-size=' or '-fno-automatic'.
  
! '-finit-local-zero'
! '-finit-derived'
! '-finit-integer=N'
! '-finit-real=<zero|inf|-inf|nan|snan>'
! '-finit-logical=<true|false>'
! '-finit-character=N'
!      The '-finit-local-zero' option instructs the compiler to initialize
!      local 'INTEGER', 'REAL', and 'COMPLEX' variables to zero, 'LOGICAL'
!      variables to false, and 'CHARACTER' variables to a string of null
       bytes.  Finer-grained initialization options are provided by the
!      '-finit-integer=N', '-finit-real=<zero|inf|-inf|nan|snan>' (which
!      also initializes the real and imaginary parts of local 'COMPLEX'
!      variables), '-finit-logical=<true|false>', and '-finit-character=N'
       (where N is an ASCII character value) options.
  
!      With '-finit-derived', components of derived type variables are
       initialized according to these flags.  Components whose type is not
!      covered by an explicit '-finit-*' flag are treated as described
!      above with '-finit-local-zero'.
  
       These options do not initialize
!         * objects with the 'POINTER' attribute
!         * allocatable arrays
!         * variables that appear in an 'EQUIVALENCE' statement.
       (These limitations may be removed in future releases).
  
!      Note that the '-finit-real=nan' option initializes 'REAL' and
!      'COMPLEX' variables with a quiet NaN. For a signalling NaN use
!      '-finit-real=snan'; note, however, that compile-time optimizations
       may convert them into quiet NaN and that trapping needs to be
!      enabled (e.g.  via '-ffpe-trap').
  
!      The '-finit-integer' option parses the value into an integer of
!      type 'INTEGER(kind=C_LONG)' on the host.  Said value is then
       assigned to the integer variables in the Fortran code, which might
       result in wraparound if the value is too large for the kind.
  
!      Finally, note that enabling any of the '-finit-*' options silences
!      warnings that would have been emitted by '-Wuninitialized' for the
       affected local variables.
  
! '-falign-commons'
!      By default, 'gfortran' enforces proper alignment of all variables
!      in a 'COMMON' block by padding them as needed.  On certain
       platforms this is mandatory, on others it increases performance.
!      If a 'COMMON' block is not declared with consistent data types
       everywhere, this padding can cause trouble, and
!      '-fno-align-commons' can be used to disable automatic alignment.
       The same form of this option should be used for all files that
!      share a 'COMMON' block.  To avoid potential alignment issues in
!      'COMMON' blocks, it is recommended to order objects from largest to
       smallest.
  
! '-fno-protect-parens'
       By default the parentheses in expression are honored for all
       optimization levels such that the compiler does not do any
!      reassociation.  Using '-fno-protect-parens' allows the compiler to
!      reorder 'REAL' and 'COMPLEX' expressions to produce faster code.
!      Note that for the reassociation optimization '-fno-signed-zeros'
!      and '-fno-trapping-math' need to be in effect.  The parentheses
!      protection is enabled by default, unless '-Ofast' is given.
  
! '-frealloc-lhs'
       An allocatable left-hand side of an intrinsic assignment is
       automatically (re)allocated if it is either unallocated or has a
       different shape.  The option is enabled by default except when
!      '-std=f95' is given.  See also '-Wrealloc-lhs'.
  
! '-faggressive-function-elimination'
       Functions with identical argument lists are eliminated within
!      statements, regardless of whether these functions are marked 'PURE'
       or not.  For example, in
              a = f(b,c) + f(b,c)
!      there is only a single call to 'f'.  This option only works if
!      '-ffrontend-optimize' is in effect.
  
! '-ffrontend-optimize'
       This option performs front-end optimization, based on manipulating
!      parts of the Fortran parse tree.  Enabled by default by any '-O'
!      option except '-O0' and '-Og'.  Optimizations enabled by this
       option include:
!         * inlining calls to 'MATMUL',
!         * elimination of identical function calls within expressions,
!         * removing unnecessary calls to 'TRIM' in comparisons and
            assignments,
!         * replacing 'TRIM(a)' with 'a(1:LEN_TRIM(a))' and
!         * short-circuiting of logical operators ('.AND.' and '.OR.').
!      It can be deselected by specifying '-fno-frontend-optimize'.
  
! '-ffrontend-loop-interchange'
       Attempt to interchange loops in the Fortran front end where
!      profitable.  Enabled by default by any '-O' option.  At the moment,
!      this option only affects 'FORALL' and 'DO CONCURRENT' statements
       with several forall triplets.
  
     *Note Options for Code Generation Conventions: (gcc)Code Gen Options,
  for information on more options offered by the back end shared by
! 'gfortran', 'gcc', and other GNU compilers.
  
  
  File: gfortran.info,  Node: Interoperability Options,  Next: Environment Variables,  Prev: Code Gen Options,  Up: Invoking GNU Fortran
--- 1985,2115 ----
       on optimization: library calls are generated when not optimizing or
       when optimizing for size; otherwise inline code is preferred.
  
!      The set of intrinsics allowed as argument to â€˜-finline-intrinsics=â€™
!      is currently limited to â€˜MAXLOCâ€™ and â€˜MINLOCâ€™.  The effect of the
!      flag is moreover limited to calls of those intrinsics without â€˜DIMâ€™
!      argument and with â€˜ARRAYâ€™ of a non-â€˜CHARACTERâ€™ type.  The case of
!      rank-1 argument and â€˜DIMâ€™ argument present, i.e.
!      â€˜MAXLOC(A(:),DIM=1)â€™ or â€˜MINLOC(A(:),DIM=1)â€™ is inlined
!      unconditionally for numeric rank-1 array argument â€˜Aâ€™.
  
! â€˜-finline-matmul-limit=Nâ€™
!      When front-end optimization is active, some calls to the â€˜MATMULâ€™
       intrinsic function are inlined.  This may result in code size
       increase if the size of the matrix cannot be determined at compile
       time, as code for both cases is generated.  Setting
!      â€˜-finline-matmul-limit=0â€™ disables inlining in all cases.  Setting
       this option with a value of N produces inline code for matrices
       with size up to N.  If the matrices involved are not square, the
       size comparison is performed using the geometric mean of the
       dimensions of the argument and result matrices.
  
!      The default value for N is 30.  The â€˜-fblas-matmul-limitâ€™ can be
       used to change this value.
  
! â€˜-frecursiveâ€™
       Allow indirect recursion by forcing all local arrays to be
       allocated on the stack.  This flag cannot be used together with
!      â€˜-fmax-stack-var-size=â€™ or â€˜-fno-automaticâ€™.
  
! â€˜-finit-local-zeroâ€™
! â€˜-finit-derivedâ€™
! â€˜-finit-integer=Nâ€™
! â€˜-finit-real=<zero|inf|-inf|nan|snan>â€™
! â€˜-finit-logical=<true|false>â€™
! â€˜-finit-character=Nâ€™
!      The â€˜-finit-local-zeroâ€™ option instructs the compiler to initialize
!      local â€˜INTEGERâ€™, â€˜REALâ€™, and â€˜COMPLEXâ€™ variables to zero, â€˜LOGICALâ€™
!      variables to false, and â€˜CHARACTERâ€™ variables to a string of null
       bytes.  Finer-grained initialization options are provided by the
!      â€˜-finit-integer=Nâ€™, â€˜-finit-real=<zero|inf|-inf|nan|snan>â€™ (which
!      also initializes the real and imaginary parts of local â€˜COMPLEXâ€™
!      variables), â€˜-finit-logical=<true|false>â€™, and â€˜-finit-character=Nâ€™
       (where N is an ASCII character value) options.
  
!      With â€˜-finit-derivedâ€™, components of derived type variables are
       initialized according to these flags.  Components whose type is not
!      covered by an explicit â€˜-finit-*â€™ flag are treated as described
!      above with â€˜-finit-local-zeroâ€™.
  
       These options do not initialize
!         â€¢ objects with the â€˜POINTERâ€™ attribute
!         â€¢ allocatable arrays
!         â€¢ variables that appear in an â€˜EQUIVALENCEâ€™ statement.
       (These limitations may be removed in future releases).
  
!      Note that the â€˜-finit-real=nanâ€™ option initializes â€˜REALâ€™ and
!      â€˜COMPLEXâ€™ variables with a quiet NaN. For a signalling NaN use
!      â€˜-finit-real=snanâ€™; note, however, that compile-time optimizations
       may convert them into quiet NaN and that trapping needs to be
!      enabled (e.g.  via â€˜-ffpe-trapâ€™).
  
!      The â€˜-finit-integerâ€™ option parses the value into an integer of
!      type â€˜INTEGER(kind=C_LONG)â€™ on the host.  Said value is then
       assigned to the integer variables in the Fortran code, which might
       result in wraparound if the value is too large for the kind.
  
!      Finally, note that enabling any of the â€˜-finit-*â€™ options silences
!      warnings that would have been emitted by â€˜-Wuninitializedâ€™ for the
       affected local variables.
  
! â€˜-falign-commonsâ€™
!      By default, â€˜gfortranâ€™ enforces proper alignment of all variables
!      in a â€˜COMMONâ€™ block by padding them as needed.  On certain
       platforms this is mandatory, on others it increases performance.
!      If a â€˜COMMONâ€™ block is not declared with consistent data types
       everywhere, this padding can cause trouble, and
!      â€˜-fno-align-commonsâ€™ can be used to disable automatic alignment.
       The same form of this option should be used for all files that
!      share a â€˜COMMONâ€™ block.  To avoid potential alignment issues in
!      â€˜COMMONâ€™ blocks, it is recommended to order objects from largest to
       smallest.
  
! â€˜-fno-protect-parensâ€™
       By default the parentheses in expression are honored for all
       optimization levels such that the compiler does not do any
!      reassociation.  Using â€˜-fno-protect-parensâ€™ allows the compiler to
!      reorder â€˜REALâ€™ and â€˜COMPLEXâ€™ expressions to produce faster code.
!      Note that for the reassociation optimization â€˜-fno-signed-zerosâ€™
!      and â€˜-fno-trapping-mathâ€™ need to be in effect.  The parentheses
!      protection is enabled by default, unless â€˜-Ofastâ€™ is given.
  
! â€˜-frealloc-lhsâ€™
       An allocatable left-hand side of an intrinsic assignment is
       automatically (re)allocated if it is either unallocated or has a
       different shape.  The option is enabled by default except when
!      â€˜-std=f95â€™ is given.  See also â€˜-Wrealloc-lhsâ€™.
  
! â€˜-faggressive-function-eliminationâ€™
       Functions with identical argument lists are eliminated within
!      statements, regardless of whether these functions are marked â€˜PUREâ€™
       or not.  For example, in
              a = f(b,c) + f(b,c)
!      there is only a single call to â€˜fâ€™.  This option only works if
!      â€˜-ffrontend-optimizeâ€™ is in effect.
  
! â€˜-ffrontend-optimizeâ€™
       This option performs front-end optimization, based on manipulating
!      parts of the Fortran parse tree.  Enabled by default by any â€˜-Oâ€™
!      option except â€˜-O0â€™ and â€˜-Ogâ€™.  Optimizations enabled by this
       option include:
!         â€¢ inlining calls to â€˜MATMULâ€™,
!         â€¢ elimination of identical function calls within expressions,
!         â€¢ removing unnecessary calls to â€˜TRIMâ€™ in comparisons and
            assignments,
!         â€¢ replacing â€˜TRIM(a)â€™ with â€˜a(1:LEN_TRIM(a))â€™ and
!         â€¢ short-circuiting of logical operators (â€˜.AND.â€™ and â€˜.OR.â€™).
!      It can be deselected by specifying â€˜-fno-frontend-optimizeâ€™.
  
! â€˜-ffrontend-loop-interchangeâ€™
       Attempt to interchange loops in the Fortran front end where
!      profitable.  Enabled by default by any â€˜-Oâ€™ option.  At the moment,
!      this option only affects â€˜FORALLâ€™ and â€˜DO CONCURRENTâ€™ statements
       with several forall triplets.
  
     *Note Options for Code Generation Conventions: (gcc)Code Gen Options,
  for information on more options offered by the back end shared by
! â€˜gfortranâ€™, â€˜gccâ€™, and other GNU compilers.
  
  
  File: gfortran.info,  Node: Interoperability Options,  Next: Environment Variables,  Prev: Code Gen Options,  Up: Invoking GNU Fortran
*************** File: gfortran.info,  Node: Interoperabi
*** 2117,2171 ****
  2.11 Options for interoperability with other languages
  ======================================================
  
! '-fc-prototypes'
!      This option generates C prototypes from 'BIND(C)' variable
       declarations, types and procedure interfaces and writes them to
!      standard output.  'ENUM' is not yet supported.
  
       The generated prototypes may need inclusion of an appropriate
!      header, such as '<stdint.h>' or '<stdlib.h>'.  For types that are
!      not specified using the appropriate kind from the 'iso_c_binding'
       module, a warning is added as a comment to the code.
  
!      For function pointers, a pointer to a function returning 'int'
       without an explicit argument list is generated.
  
       Example of use:
            $ gfortran -fc-prototypes -fsyntax-only foo.f90 > foo.h
       where the C code intended for interoperating with the Fortran code
!      then uses '#include "foo.h"'.
  
! '-fc-prototypes-external'
       This option generates C prototypes from external functions and
       subroutines and writes them to standard output.  This may be useful
       for making sure that C bindings to Fortran code are correct.  This
!      option does not generate prototypes for 'BIND(C)' procedures; use
!      '-fc-prototypes' for that.
  
       The generated prototypes may need inclusion of an appropriate
!      header, such as '<stdint.h>' or '<stdlib.h>'.
  
       This is primarily meant for legacy code to ensure that existing C
!      bindings match what 'gfortran' emits.  The generated C prototypes
       should be correct for the current version of the compiler, but may
!      not match what other compilers or earlier versions of 'gfortran'
!      need.  For new development, use of the 'BIND(C)' features is
       recommended.
  
       Example of use:
            $ gfortran -fc-prototypes-external -fsyntax-only foo.f > foo.h
       where the C code intended for interoperating with the Fortran code
!      then uses '#include "foo.h"'.
  
  
  File: gfortran.info,  Node: Environment Variables,  Prev: Interoperability Options,  Up: Invoking GNU Fortran
  
! 2.12 Environment variables affecting 'gfortran'
  ===============================================
  
! The 'gfortran' compiler currently does not make use of any environment
  variables to control its operation above and beyond those that affect
! the operation of 'gcc'.
  
     *Note Environment Variables Affecting GCC: (gcc)Environment
  Variables, for information on environment variables.
--- 2117,2171 ----
  2.11 Options for interoperability with other languages
  ======================================================
  
! â€˜-fc-prototypesâ€™
!      This option generates C prototypes from â€˜BIND(C)â€™ variable
       declarations, types and procedure interfaces and writes them to
!      standard output.  â€˜ENUMâ€™ is not yet supported.
  
       The generated prototypes may need inclusion of an appropriate
!      header, such as â€˜<stdint.h>â€™ or â€˜<stdlib.h>â€™.  For types that are
!      not specified using the appropriate kind from the â€˜iso_c_bindingâ€™
       module, a warning is added as a comment to the code.
  
!      For function pointers, a pointer to a function returning â€˜intâ€™
       without an explicit argument list is generated.
  
       Example of use:
            $ gfortran -fc-prototypes -fsyntax-only foo.f90 > foo.h
       where the C code intended for interoperating with the Fortran code
!      then uses â€˜#include "foo.h"â€™.
  
! â€˜-fc-prototypes-externalâ€™
       This option generates C prototypes from external functions and
       subroutines and writes them to standard output.  This may be useful
       for making sure that C bindings to Fortran code are correct.  This
!      option does not generate prototypes for â€˜BIND(C)â€™ procedures; use
!      â€˜-fc-prototypesâ€™ for that.
  
       The generated prototypes may need inclusion of an appropriate
!      header, such as â€˜<stdint.h>â€™ or â€˜<stdlib.h>â€™.
  
       This is primarily meant for legacy code to ensure that existing C
!      bindings match what â€˜gfortranâ€™ emits.  The generated C prototypes
       should be correct for the current version of the compiler, but may
!      not match what other compilers or earlier versions of â€˜gfortranâ€™
!      need.  For new development, use of the â€˜BIND(C)â€™ features is
       recommended.
  
       Example of use:
            $ gfortran -fc-prototypes-external -fsyntax-only foo.f > foo.h
       where the C code intended for interoperating with the Fortran code
!      then uses â€˜#include "foo.h"â€™.
  
  
  File: gfortran.info,  Node: Environment Variables,  Prev: Interoperability Options,  Up: Invoking GNU Fortran
  
! 2.12 Environment variables affecting â€˜gfortranâ€™
  ===============================================
  
! The â€˜gfortranâ€™ compiler currently does not make use of any environment
  variables to control its operation above and beyond those that affect
! the operation of â€˜gccâ€™.
  
     *Note Environment Variables Affecting GCC: (gcc)Environment
  Variables, for information on environment variables.
*************** File: gfortran.info,  Node: Runtime,  Ne
*** 2179,2185 ****
  3 Runtime: Influencing runtime behavior with environment variables
  ******************************************************************
  
! The behavior of the 'gfortran' can be influenced by environment
  variables.
  
     Malformed environment variables are silently ignored.
--- 2179,2185 ----
  3 Runtime: Influencing runtime behavior with environment variables
  ******************************************************************
  
! The behavior of the â€˜gfortranâ€™ can be influenced by environment
  variables.
  
     Malformed environment variables are silently ignored.
*************** variables.
*** 2203,2228 ****
  
  File: gfortran.info,  Node: TMPDIR,  Next: GFORTRAN_STDIN_UNIT,  Up: Runtime
  
! 3.1 'TMPDIR'--Directory for scratch files
  =========================================
  
! When opening a file with 'STATUS='SCRATCH'', GNU Fortran tries to create
  the file in one of the potential directories by testing each directory
  in the order below.
  
!   1. The environment variable 'TMPDIR', if it exists.
  
!   2. On the MinGW target, the directory returned by the 'GetTempPath'
!      function.  Alternatively, on the Cygwin target, the 'TMP' and
!      'TEMP' environment variables, if they exist, in that order.
  
!   3. The 'P_tmpdir' macro if it is defined, otherwise the directory
!      '/tmp'.
  
  
  File: gfortran.info,  Node: GFORTRAN_STDIN_UNIT,  Next: GFORTRAN_STDOUT_UNIT,  Prev: TMPDIR,  Up: Runtime
  
! 3.2 'GFORTRAN_STDIN_UNIT'--Unit number for standard input
  =========================================================
  
  This environment variable can be used to select the unit number
--- 2203,2228 ----
  
  File: gfortran.info,  Node: TMPDIR,  Next: GFORTRAN_STDIN_UNIT,  Up: Runtime
  
! 3.1 â€˜TMPDIRâ€™--Directory for scratch files
  =========================================
  
! When opening a file with â€˜STATUS='SCRATCH'â€™, GNU Fortran tries to create
  the file in one of the potential directories by testing each directory
  in the order below.
  
!   1. The environment variable â€˜TMPDIRâ€™, if it exists.
  
!   2. On the MinGW target, the directory returned by the â€˜GetTempPathâ€™
!      function.  Alternatively, on the Cygwin target, the â€˜TMPâ€™ and
!      â€˜TEMPâ€™ environment variables, if they exist, in that order.
  
!   3. The â€˜P_tmpdirâ€™ macro if it is defined, otherwise the directory
!      â€˜/tmpâ€™.
  
  
  File: gfortran.info,  Node: GFORTRAN_STDIN_UNIT,  Next: GFORTRAN_STDOUT_UNIT,  Prev: TMPDIR,  Up: Runtime
  
! 3.2 â€˜GFORTRAN_STDIN_UNITâ€™--Unit number for standard input
  =========================================================
  
  This environment variable can be used to select the unit number
*************** default value is 5.
*** 2232,2238 ****
  
  File: gfortran.info,  Node: GFORTRAN_STDOUT_UNIT,  Next: GFORTRAN_STDERR_UNIT,  Prev: GFORTRAN_STDIN_UNIT,  Up: Runtime
  
! 3.3 'GFORTRAN_STDOUT_UNIT'--Unit number for standard output
  ===========================================================
  
  This environment variable can be used to select the unit number
--- 2232,2238 ----
  
  File: gfortran.info,  Node: GFORTRAN_STDOUT_UNIT,  Next: GFORTRAN_STDERR_UNIT,  Prev: GFORTRAN_STDIN_UNIT,  Up: Runtime
  
! 3.3 â€˜GFORTRAN_STDOUT_UNITâ€™--Unit number for standard output
  ===========================================================
  
  This environment variable can be used to select the unit number
*************** default value is 6.
*** 2242,2248 ****
  
  File: gfortran.info,  Node: GFORTRAN_STDERR_UNIT,  Next: GFORTRAN_UNBUFFERED_ALL,  Prev: GFORTRAN_STDOUT_UNIT,  Up: Runtime
  
! 3.4 'GFORTRAN_STDERR_UNIT'--Unit number for standard error
  ==========================================================
  
  This environment variable can be used to select the unit number
--- 2242,2248 ----
  
  File: gfortran.info,  Node: GFORTRAN_STDERR_UNIT,  Next: GFORTRAN_UNBUFFERED_ALL,  Prev: GFORTRAN_STDOUT_UNIT,  Up: Runtime
  
! 3.4 â€˜GFORTRAN_STDERR_UNITâ€™--Unit number for standard error
  ==========================================================
  
  This environment variable can be used to select the unit number
*************** default value is 0.
*** 2252,2303 ****
  
  File: gfortran.info,  Node: GFORTRAN_UNBUFFERED_ALL,  Next: GFORTRAN_UNBUFFERED_PRECONNECTED,  Prev: GFORTRAN_STDERR_UNIT,  Up: Runtime
  
! 3.5 'GFORTRAN_UNBUFFERED_ALL'--Do not buffer I/O on all units
  =============================================================
  
  This environment variable controls whether all I/O is unbuffered.  If
! the first letter is 'y', 'Y' or '1', all I/O is unbuffered.  This slows
! down small sequential reads and writes.  If the first letter is 'n', 'N'
! or '0', I/O is buffered.  This is the default.
  
  
  File: gfortran.info,  Node: GFORTRAN_UNBUFFERED_PRECONNECTED,  Next: GFORTRAN_SHOW_LOCUS,  Prev: GFORTRAN_UNBUFFERED_ALL,  Up: Runtime
  
! 3.6 'GFORTRAN_UNBUFFERED_PRECONNECTED'--Do not buffer I/O on preconnected units
  ===============================================================================
  
! The environment variable named 'GFORTRAN_UNBUFFERED_PRECONNECTED'
  controls whether I/O on a preconnected unit (i.e. STDOUT or STDERR) is
! unbuffered.  If the first letter is 'y', 'Y' or '1', I/O is unbuffered.
  This slows down small sequential reads and writes.  If the first letter
! is 'n', 'N' or '0', I/O is buffered.  This is the default.
  
  
  File: gfortran.info,  Node: GFORTRAN_SHOW_LOCUS,  Next: GFORTRAN_OPTIONAL_PLUS,  Prev: GFORTRAN_UNBUFFERED_PRECONNECTED,  Up: Runtime
  
! 3.7 'GFORTRAN_SHOW_LOCUS'--Show location for runtime errors
  ===========================================================
  
! If the first letter is 'y', 'Y' or '1', filename and line numbers for
! runtime errors are printed.  If the first letter is 'n', 'N' or '0', do
  not print filename and line numbers for runtime errors.  The default is
  to print the location.
  
  
  File: gfortran.info,  Node: GFORTRAN_OPTIONAL_PLUS,  Next: GFORTRAN_LIST_SEPARATOR,  Prev: GFORTRAN_SHOW_LOCUS,  Up: Runtime
  
! 3.8 'GFORTRAN_OPTIONAL_PLUS'--Print leading + where permitted
  =============================================================
  
! If the first letter is 'y', 'Y' or '1', a plus sign is printed where
! permitted by the Fortran standard.  If the first letter is 'n', 'N' or
! '0', a plus sign is not printed in most cases.  Default is not to print
  plus signs.
  
  
  File: gfortran.info,  Node: GFORTRAN_LIST_SEPARATOR,  Next: GFORTRAN_CONVERT_UNIT,  Prev: GFORTRAN_OPTIONAL_PLUS,  Up: Runtime
  
! 3.9 'GFORTRAN_LIST_SEPARATOR'--Separator for list output
  ========================================================
  
  This environment variable specifies the separator when writing
--- 2252,2303 ----
  
  File: gfortran.info,  Node: GFORTRAN_UNBUFFERED_ALL,  Next: GFORTRAN_UNBUFFERED_PRECONNECTED,  Prev: GFORTRAN_STDERR_UNIT,  Up: Runtime
  
! 3.5 â€˜GFORTRAN_UNBUFFERED_ALLâ€™--Do not buffer I/O on all units
  =============================================================
  
  This environment variable controls whether all I/O is unbuffered.  If
! the first letter is â€˜yâ€™, â€˜Yâ€™ or â€˜1â€™, all I/O is unbuffered.  This slows
! down small sequential reads and writes.  If the first letter is â€˜nâ€™, â€˜Nâ€™
! or â€˜0â€™, I/O is buffered.  This is the default.
  
  
  File: gfortran.info,  Node: GFORTRAN_UNBUFFERED_PRECONNECTED,  Next: GFORTRAN_SHOW_LOCUS,  Prev: GFORTRAN_UNBUFFERED_ALL,  Up: Runtime
  
! 3.6 â€˜GFORTRAN_UNBUFFERED_PRECONNECTEDâ€™--Do not buffer I/O on preconnected units
  ===============================================================================
  
! The environment variable named â€˜GFORTRAN_UNBUFFERED_PRECONNECTEDâ€™
  controls whether I/O on a preconnected unit (i.e. STDOUT or STDERR) is
! unbuffered.  If the first letter is â€˜yâ€™, â€˜Yâ€™ or â€˜1â€™, I/O is unbuffered.
  This slows down small sequential reads and writes.  If the first letter
! is â€˜nâ€™, â€˜Nâ€™ or â€˜0â€™, I/O is buffered.  This is the default.
  
  
  File: gfortran.info,  Node: GFORTRAN_SHOW_LOCUS,  Next: GFORTRAN_OPTIONAL_PLUS,  Prev: GFORTRAN_UNBUFFERED_PRECONNECTED,  Up: Runtime
  
! 3.7 â€˜GFORTRAN_SHOW_LOCUSâ€™--Show location for runtime errors
  ===========================================================
  
! If the first letter is â€˜yâ€™, â€˜Yâ€™ or â€˜1â€™, filename and line numbers for
! runtime errors are printed.  If the first letter is â€˜nâ€™, â€˜Nâ€™ or â€˜0â€™, do
  not print filename and line numbers for runtime errors.  The default is
  to print the location.
  
  
  File: gfortran.info,  Node: GFORTRAN_OPTIONAL_PLUS,  Next: GFORTRAN_LIST_SEPARATOR,  Prev: GFORTRAN_SHOW_LOCUS,  Up: Runtime
  
! 3.8 â€˜GFORTRAN_OPTIONAL_PLUSâ€™--Print leading + where permitted
  =============================================================
  
! If the first letter is â€˜yâ€™, â€˜Yâ€™ or â€˜1â€™, a plus sign is printed where
! permitted by the Fortran standard.  If the first letter is â€˜nâ€™, â€˜Nâ€™ or
! â€˜0â€™, a plus sign is not printed in most cases.  Default is not to print
  plus signs.
  
  
  File: gfortran.info,  Node: GFORTRAN_LIST_SEPARATOR,  Next: GFORTRAN_CONVERT_UNIT,  Prev: GFORTRAN_OPTIONAL_PLUS,  Up: Runtime
  
! 3.9 â€˜GFORTRAN_LIST_SEPARATORâ€™--Separator for list output
  ========================================================
  
  This environment variable specifies the separator when writing
*************** list-directed output.  It may contain an
*** 2305,2322 ****
  one comma.  If you specify this on the command line, be sure to quote
  spaces, as in
       $ GFORTRAN_LIST_SEPARATOR='  ,  ' ./a.out
! when 'a.out' is the compiled Fortran program that you want to run.
  Default is a single space.
  
  
  File: gfortran.info,  Node: GFORTRAN_CONVERT_UNIT,  Next: GFORTRAN_ERROR_BACKTRACE,  Prev: GFORTRAN_LIST_SEPARATOR,  Up: Runtime
  
! 3.10 'GFORTRAN_CONVERT_UNIT'--Set conversion for unformatted I/O
  ================================================================
  
! By setting the 'GFORTRAN_CONVERT_UNIT' variable, it is possible to
  change the representation of data for unformatted files.  The syntax for
! the 'GFORTRAN_CONVERT_UNIT' variable for most systems is:
       GFORTRAN_CONVERT_UNIT: mode | mode ';' exception | exception ;
       mode: 'native' | 'swap' | 'big_endian' | 'little_endian' ;
       exception: mode ':' unit_list | unit_list ;
--- 2305,2322 ----
  one comma.  If you specify this on the command line, be sure to quote
  spaces, as in
       $ GFORTRAN_LIST_SEPARATOR='  ,  ' ./a.out
! when â€˜a.outâ€™ is the compiled Fortran program that you want to run.
  Default is a single space.
  
  
  File: gfortran.info,  Node: GFORTRAN_CONVERT_UNIT,  Next: GFORTRAN_ERROR_BACKTRACE,  Prev: GFORTRAN_LIST_SEPARATOR,  Up: Runtime
  
! 3.10 â€˜GFORTRAN_CONVERT_UNITâ€™--Set conversion for unformatted I/O
  ================================================================
  
! By setting the â€˜GFORTRAN_CONVERT_UNITâ€™ variable, it is possible to
  change the representation of data for unformatted files.  The syntax for
! the â€˜GFORTRAN_CONVERT_UNITâ€™ variable for most systems is:
       GFORTRAN_CONVERT_UNIT: mode | mode ';' exception | exception ;
       mode: 'native' | 'swap' | 'big_endian' | 'little_endian' ;
       exception: mode ':' unit_list | unit_list ;
*************** the 'GFORTRAN_CONVERT_UNIT' variable for
*** 2326,2361 ****
  of optional exceptions, which are separated by semicolons from the
  preceding default and each other.  Each exception consists of a format
  and a comma-separated list of units.  Valid values for the modes are the
! same as for the 'CONVERT' specifier:
  
!      'NATIVE' Use the native format.  This is the default.
!      'SWAP' Swap between little- and big-endian.
!      'LITTLE_ENDIAN' Use the little-endian format for unformatted files.
!      'BIG_ENDIAN' Use the big-endian format for unformatted files.
!    For POWER systems that support '-mabi=ieeelongdouble', there are
  additional options, which can be combined with the others with commas.
  Those are
!      'R16_IEEE' Use IEEE 128-bit format for 'REAL(KIND=16)'.
!      'R16_IBM' Use IBM 'long double' format for 'REAL(KIND=16)'.
!    A missing mode for an exception is taken to mean 'BIG_ENDIAN'.
! Examples of values for 'GFORTRAN_CONVERT_UNIT' are:
!      ''big_endian'' Do all unformatted I/O in big_endian mode.
!      ''little_endian;native:10-20,25'' Do all unformatted I/O in
       little_endian mode, except for units 10 to 20 and 25, which are in
       native format.
!      ''10-20'' Units 10 to 20 are big-endian, the rest is native.
!      ''big_endian,r16_ibm'' Do all unformatted I/O in big-endian mode
!      and use IBM long double for output of 'REAL(KIND=16)' values.
  
     Setting the environment variables should be done on the command line
! or via the 'export' command for 'sh'-compatible shells and via 'setenv'
! for 'csh'-compatible shells.
  
!    Example for 'sh':
       $ gfortran foo.f90
       $ GFORTRAN_CONVERT_UNIT='big_endian;native:10-20' ./a.out
  
!    Example code for 'csh':
       % gfortran foo.f90
       % setenv GFORTRAN_CONVERT_UNIT 'big_endian;native:10-20'
       % ./a.out
--- 2326,2361 ----
  of optional exceptions, which are separated by semicolons from the
  preceding default and each other.  Each exception consists of a format
  and a comma-separated list of units.  Valid values for the modes are the
! same as for the â€˜CONVERTâ€™ specifier:
  
!      â€˜NATIVEâ€™ Use the native format.  This is the default.
!      â€˜SWAPâ€™ Swap between little- and big-endian.
!      â€˜LITTLE_ENDIANâ€™ Use the little-endian format for unformatted files.
!      â€˜BIG_ENDIANâ€™ Use the big-endian format for unformatted files.
!    For POWER systems that support â€˜-mabi=ieeelongdoubleâ€™, there are
  additional options, which can be combined with the others with commas.
  Those are
!      â€˜R16_IEEEâ€™ Use IEEE 128-bit format for â€˜REAL(KIND=16)â€™.
!      â€˜R16_IBMâ€™ Use IBM â€˜long doubleâ€™ format for â€˜REAL(KIND=16)â€™.
!    A missing mode for an exception is taken to mean â€˜BIG_ENDIANâ€™.
! Examples of values for â€˜GFORTRAN_CONVERT_UNITâ€™ are:
!      â€˜'big_endian'â€™ Do all unformatted I/O in big_endian mode.
!      â€˜'little_endian;native:10-20,25'â€™ Do all unformatted I/O in
       little_endian mode, except for units 10 to 20 and 25, which are in
       native format.
!      â€˜'10-20'â€™ Units 10 to 20 are big-endian, the rest is native.
!      â€˜'big_endian,r16_ibm'â€™ Do all unformatted I/O in big-endian mode
!      and use IBM long double for output of â€˜REAL(KIND=16)â€™ values.
  
     Setting the environment variables should be done on the command line
! or via the â€˜exportâ€™ command for â€˜shâ€™-compatible shells and via â€˜setenvâ€™
! for â€˜cshâ€™-compatible shells.
  
!    Example for â€˜shâ€™:
       $ gfortran foo.f90
       $ GFORTRAN_CONVERT_UNIT='big_endian;native:10-20' ./a.out
  
!    Example code for â€˜cshâ€™:
       % gfortran foo.f90
       % setenv GFORTRAN_CONVERT_UNIT 'big_endian;native:10-20'
       % ./a.out
*************** you, it is best if you use this only for
*** 2367,2408 ****
     *Note CONVERT specifier::, for an alternative way to specify the data
  representation for unformatted files.  *Note Runtime Options::, for
  setting a default data representation for the whole program.  The
! 'CONVERT' specifier overrides the '-fconvert' compile options.
  
!    Note that the values specified via the 'GFORTRAN_CONVERT_UNIT'
! environment variable override the 'CONVERT' specifier in the 'OPEN'
  statement.  This is to give control over data formats to users who do
  not have the source code of their program available.
  
  
  File: gfortran.info,  Node: GFORTRAN_ERROR_BACKTRACE,  Next: GFORTRAN_FORMATTED_BUFFER_SIZE,  Prev: GFORTRAN_CONVERT_UNIT,  Up: Runtime
  
! 3.11 'GFORTRAN_ERROR_BACKTRACE'--Show backtrace on run-time errors
  ==================================================================
  
! If the 'GFORTRAN_ERROR_BACKTRACE' variable is set to 'y', 'Y' or '1'
  (only the first letter is relevant) then a backtrace is printed when a
  serious run-time error occurs.  To disable the backtracing, set the
! variable to 'n', 'N', '0'.  Default is to print a backtrace unless the
! '-fno-backtrace' compile option was used.
  
  
  File: gfortran.info,  Node: GFORTRAN_FORMATTED_BUFFER_SIZE,  Next: GFORTRAN_UNFORMATTED_BUFFER_SIZE,  Prev: GFORTRAN_ERROR_BACKTRACE,  Up: Runtime
  
! 3.12 'GFORTRAN_FORMATTED_BUFFER_SIZE'--Set buffer size for formatted I/O
  ========================================================================
  
! The 'GFORTRAN_FORMATTED_BUFFER_SIZE' environment variable specifies
  buffer size in bytes to be used for formatted output.  The default value
  is 8192.
  
  
  File: gfortran.info,  Node: GFORTRAN_UNFORMATTED_BUFFER_SIZE,  Prev: GFORTRAN_FORMATTED_BUFFER_SIZE,  Up: Runtime
  
! 3.13 'GFORTRAN_UNFORMATTED_BUFFER_SIZE'--Set buffer size for unformatted I/O
  ============================================================================
  
! The 'GFORTRAN_UNFORMATTED_BUFFER_SIZE' environment variable specifies
  buffer size in bytes to be used for unformatted output.  The default
  value is 131072.
  
--- 2367,2408 ----
     *Note CONVERT specifier::, for an alternative way to specify the data
  representation for unformatted files.  *Note Runtime Options::, for
  setting a default data representation for the whole program.  The
! â€˜CONVERTâ€™ specifier overrides the â€˜-fconvertâ€™ compile options.
  
!    Note that the values specified via the â€˜GFORTRAN_CONVERT_UNITâ€™
! environment variable override the â€˜CONVERTâ€™ specifier in the â€˜OPENâ€™
  statement.  This is to give control over data formats to users who do
  not have the source code of their program available.
  
  
  File: gfortran.info,  Node: GFORTRAN_ERROR_BACKTRACE,  Next: GFORTRAN_FORMATTED_BUFFER_SIZE,  Prev: GFORTRAN_CONVERT_UNIT,  Up: Runtime
  
! 3.11 â€˜GFORTRAN_ERROR_BACKTRACEâ€™--Show backtrace on run-time errors
  ==================================================================
  
! If the â€˜GFORTRAN_ERROR_BACKTRACEâ€™ variable is set to â€˜yâ€™, â€˜Yâ€™ or â€˜1â€™
  (only the first letter is relevant) then a backtrace is printed when a
  serious run-time error occurs.  To disable the backtracing, set the
! variable to â€˜nâ€™, â€˜Nâ€™, â€˜0â€™.  Default is to print a backtrace unless the
! â€˜-fno-backtraceâ€™ compile option was used.
  
  
  File: gfortran.info,  Node: GFORTRAN_FORMATTED_BUFFER_SIZE,  Next: GFORTRAN_UNFORMATTED_BUFFER_SIZE,  Prev: GFORTRAN_ERROR_BACKTRACE,  Up: Runtime
  
! 3.12 â€˜GFORTRAN_FORMATTED_BUFFER_SIZEâ€™--Set buffer size for formatted I/O
  ========================================================================
  
! The â€˜GFORTRAN_FORMATTED_BUFFER_SIZEâ€™ environment variable specifies
  buffer size in bytes to be used for formatted output.  The default value
  is 8192.
  
  
  File: gfortran.info,  Node: GFORTRAN_UNFORMATTED_BUFFER_SIZE,  Prev: GFORTRAN_FORMATTED_BUFFER_SIZE,  Up: Runtime
  
! 3.13 â€˜GFORTRAN_UNFORMATTED_BUFFER_SIZEâ€™--Set buffer size for unformatted I/O
  ============================================================================
  
! The â€˜GFORTRAN_UNFORMATTED_BUFFER_SIZEâ€™ environment variable specifies
  buffer size in bytes to be used for unformatted output.  The default
  value is 131072.
  
*************** in some way or another become visible to
*** 2433,2494 ****
  
  File: gfortran.info,  Node: KIND Type Parameters,  Next: Internal representation of LOGICAL variables,  Up: Compiler Characteristics
  
! 4.1 'KIND' Type Parameters
  ==========================
  
! The 'KIND' type parameters supported by GNU Fortran for the primitive
  data types are:
  
! 'INTEGER'
       1, 2, 4, 8*, 16*, default: 4**
  
! 'LOGICAL'
       1, 2, 4, 8*, 16*, default: 4**
  
! 'REAL'
       4, 8, 10*, 16*, default: 4***
  
! 'COMPLEX'
       4, 8, 10*, 16*, default: 4***
  
! 'DOUBLE PRECISION'
       4, 8, 10*, 16*, default: 8***
  
! 'CHARACTER'
       1, 4, default: 1
  
  * not available on all systems
! ** unless '-fdefault-integer-8' is used
! *** unless '-fdefault-real-8' is used (see *note Fortran Dialect
  Options::)
  
! The 'KIND' value matches the storage size in bytes, except for 'COMPLEX'
  where the storage size is twice as much (or both real and imaginary part
  are a real value of the given size).  It is recommended to use the *note
  SELECTED_CHAR_KIND::, *note SELECTED_INT_KIND::, *note
  SELECTED_LOGICAL_KIND:: and *note SELECTED_REAL_KIND:: intrinsics or the
! 'INT8', 'INT16', 'INT32', 'INT64', 'REAL32', 'REAL64', and 'REAL128'
! parameters of the 'ISO_FORTRAN_ENV' module instead of the concrete
  values.  The available kind parameters can be found in the constant
! arrays 'CHARACTER_KINDS', 'INTEGER_KINDS', 'LOGICAL_KINDS' and
! 'REAL_KINDS' in the *note ISO_FORTRAN_ENV:: module.  For C
  interoperability, the kind parameters of the *note ISO_C_BINDING::
  module should be used.
  
  
  File: gfortran.info,  Node: Internal representation of LOGICAL variables,  Next: Evaluation of logical expressions,  Prev: KIND Type Parameters,  Up: Compiler Characteristics
  
! 4.2 Internal representation of 'LOGICAL' variables
  ==================================================
  
! The Fortran standard does not specify how variables of 'LOGICAL' type
! are represented, beyond requiring that 'LOGICAL' variables of default
! kind have the same storage size as default 'INTEGER' and 'REAL'
  variables.  The GNU Fortran internal representation is as follows.
  
!    A 'LOGICAL(KIND=N)' variable is represented as an 'INTEGER(KIND=N)'
! variable, however, with only two permissible values: '1' for '.TRUE.'
! and '0' for '.FALSE.'.  Any other integer value results in undefined
  behavior.
  
     See also *note Argument passing conventions:: and *note
--- 2433,2494 ----
  
  File: gfortran.info,  Node: KIND Type Parameters,  Next: Internal representation of LOGICAL variables,  Up: Compiler Characteristics
  
! 4.1 â€˜KINDâ€™ Type Parameters
  ==========================
  
! The â€˜KINDâ€™ type parameters supported by GNU Fortran for the primitive
  data types are:
  
! â€˜INTEGERâ€™
       1, 2, 4, 8*, 16*, default: 4**
  
! â€˜LOGICALâ€™
       1, 2, 4, 8*, 16*, default: 4**
  
! â€˜REALâ€™
       4, 8, 10*, 16*, default: 4***
  
! â€˜COMPLEXâ€™
       4, 8, 10*, 16*, default: 4***
  
! â€˜DOUBLE PRECISIONâ€™
       4, 8, 10*, 16*, default: 8***
  
! â€˜CHARACTERâ€™
       1, 4, default: 1
  
  * not available on all systems
! ** unless â€˜-fdefault-integer-8â€™ is used
! *** unless â€˜-fdefault-real-8â€™ is used (see *note Fortran Dialect
  Options::)
  
! The â€˜KINDâ€™ value matches the storage size in bytes, except for â€˜COMPLEXâ€™
  where the storage size is twice as much (or both real and imaginary part
  are a real value of the given size).  It is recommended to use the *note
  SELECTED_CHAR_KIND::, *note SELECTED_INT_KIND::, *note
  SELECTED_LOGICAL_KIND:: and *note SELECTED_REAL_KIND:: intrinsics or the
! â€˜INT8â€™, â€˜INT16â€™, â€˜INT32â€™, â€˜INT64â€™, â€˜REAL32â€™, â€˜REAL64â€™, and â€˜REAL128â€™
! parameters of the â€˜ISO_FORTRAN_ENVâ€™ module instead of the concrete
  values.  The available kind parameters can be found in the constant
! arrays â€˜CHARACTER_KINDSâ€™, â€˜INTEGER_KINDSâ€™, â€˜LOGICAL_KINDSâ€™ and
! â€˜REAL_KINDSâ€™ in the *note ISO_FORTRAN_ENV:: module.  For C
  interoperability, the kind parameters of the *note ISO_C_BINDING::
  module should be used.
  
  
  File: gfortran.info,  Node: Internal representation of LOGICAL variables,  Next: Evaluation of logical expressions,  Prev: KIND Type Parameters,  Up: Compiler Characteristics
  
! 4.2 Internal representation of â€˜LOGICALâ€™ variables
  ==================================================
  
! The Fortran standard does not specify how variables of â€˜LOGICALâ€™ type
! are represented, beyond requiring that â€˜LOGICALâ€™ variables of default
! kind have the same storage size as default â€˜INTEGERâ€™ and â€˜REALâ€™
  variables.  The GNU Fortran internal representation is as follows.
  
!    A â€˜LOGICAL(KIND=N)â€™ variable is represented as an â€˜INTEGER(KIND=N)â€™
! variable, however, with only two permissible values: â€˜1â€™ for â€˜.TRUE.â€™
! and â€˜0â€™ for â€˜.FALSE.â€™.  Any other integer value results in undefined
  behavior.
  
     See also *note Argument passing conventions:: and *note
*************** File: gfortran.info,  Node: Evaluation o
*** 2502,2529 ****
  
  The Fortran standard does not require the compiler to evaluate all parts
  of an expression, if they do not contribute to the final result.  For
! logical expressions with '.AND.' or '.OR.' operators, in particular, GNU
  Fortran optimizes out function calls (even to impure functions) if the
  result of the expression can be established without them.  However,
  since not all compilers do that, and such an optimization can
  potentially modify the program flow and subsequent results, GNU Fortran
! throws warnings for such situations with the '-Wfunction-elimination'
  flag.
  
  
  File: gfortran.info,  Node: MAX and MIN intrinsics with REAL NaN arguments,  Next: Thread-safety of the runtime library,  Prev: Evaluation of logical expressions,  Up: Compiler Characteristics
  
! 4.4 'MAX' and 'MIN' intrinsics with 'REAL' NaN arguments
  ========================================================
  
! The Fortran standard does not specify what the result of the 'MAX' and
! 'MIN' intrinsics are if one of the arguments is a 'NaN'.  Accordingly,
  the GNU Fortran compiler does not specify that either, as this allows
  for faster and more compact code to be generated.  If the programmer
  wishes to take some specific action in case one of the arguments is a
! 'NaN', it is necessary to explicitly test the arguments before calling
! 'MAX' or 'MIN', e.g.  with the 'IEEE_IS_NAN' function from the intrinsic
! module 'IEEE_ARITHMETIC'.
  
  
  File: gfortran.info,  Node: Thread-safety of the runtime library,  Next: Data consistency and durability,  Prev: MAX and MIN intrinsics with REAL NaN arguments,  Up: Compiler Characteristics
--- 2502,2529 ----
  
  The Fortran standard does not require the compiler to evaluate all parts
  of an expression, if they do not contribute to the final result.  For
! logical expressions with â€˜.AND.â€™ or â€˜.OR.â€™ operators, in particular, GNU
  Fortran optimizes out function calls (even to impure functions) if the
  result of the expression can be established without them.  However,
  since not all compilers do that, and such an optimization can
  potentially modify the program flow and subsequent results, GNU Fortran
! throws warnings for such situations with the â€˜-Wfunction-eliminationâ€™
  flag.
  
  
  File: gfortran.info,  Node: MAX and MIN intrinsics with REAL NaN arguments,  Next: Thread-safety of the runtime library,  Prev: Evaluation of logical expressions,  Up: Compiler Characteristics
  
! 4.4 â€˜MAXâ€™ and â€˜MINâ€™ intrinsics with â€˜REALâ€™ NaN arguments
  ========================================================
  
! The Fortran standard does not specify what the result of the â€˜MAXâ€™ and
! â€˜MINâ€™ intrinsics are if one of the arguments is a â€˜NaNâ€™.  Accordingly,
  the GNU Fortran compiler does not specify that either, as this allows
  for faster and more compact code to be generated.  If the programmer
  wishes to take some specific action in case one of the arguments is a
! â€˜NaNâ€™, it is necessary to explicitly test the arguments before calling
! â€˜MAXâ€™ or â€˜MINâ€™, e.g.  with the â€˜IEEE_IS_NANâ€™ function from the intrinsic
! module â€˜IEEE_ARITHMETICâ€™.
  
  
  File: gfortran.info,  Node: Thread-safety of the runtime library,  Next: Data consistency and durability,  Prev: MAX and MIN intrinsics with REAL NaN arguments,  Up: Compiler Characteristics
*************** File: gfortran.info,  Node: Thread-safet
*** 2532,2553 ****
  ========================================
  
  GNU Fortran can be used in programs with multiple threads, e.g. by using
! OpenMP, by calling OS thread handling functions via the 'ISO_C_BINDING'
  facility, or by GNU Fortran compiled library code being called from a
  multi-threaded program.
  
!    The GNU Fortran runtime library, ('libgfortran'), supports being
  called concurrently from multiple threads with the following exceptions.
  
!    During library initialization, the C 'getenv' function is used, which
! need not be thread-safe.  Similarly, the 'getenv' function is used to
! implement the 'GET_ENVIRONMENT_VARIABLE' and 'GETENV' intrinsics.  It is
  the responsibility of the user to ensure that the environment is not
  being updated concurrently when any of these actions are taking place.
  
!    The 'EXECUTE_COMMAND_LINE' and 'SYSTEM' intrinsics are implemented
! with the 'system' function, which need not be thread-safe.  It is the
! responsibility of the user to ensure that 'system' is not called
  concurrently.
  
     For platforms not supporting thread-safe POSIX functions, further
--- 2532,2553 ----
  ========================================
  
  GNU Fortran can be used in programs with multiple threads, e.g. by using
! OpenMP, by calling OS thread handling functions via the â€˜ISO_C_BINDINGâ€™
  facility, or by GNU Fortran compiled library code being called from a
  multi-threaded program.
  
!    The GNU Fortran runtime library, (â€˜libgfortranâ€™), supports being
  called concurrently from multiple threads with the following exceptions.
  
!    During library initialization, the C â€˜getenvâ€™ function is used, which
! need not be thread-safe.  Similarly, the â€˜getenvâ€™ function is used to
! implement the â€˜GET_ENVIRONMENT_VARIABLEâ€™ and â€˜GETENVâ€™ intrinsics.  It is
  the responsibility of the user to ensure that the environment is not
  being updated concurrently when any of these actions are taking place.
  
!    The â€˜EXECUTE_COMMAND_LINEâ€™ and â€˜SYSTEMâ€™ intrinsics are implemented
! with the â€˜systemâ€™ function, which need not be thread-safe.  It is the
! responsibility of the user to ensure that â€˜systemâ€™ is not called
  concurrently.
  
     For platforms not supporting thread-safe POSIX functions, further
*************** functionality might not be thread-safe.
*** 2555,2570 ****
  documentation for your operating system.
  
     The GNU Fortran runtime library uses various C library functions that
! depend on the locale, such as 'strtod' and 'snprintf'.  In order to work
  correctly in locale-aware programs that set the locale using
! 'setlocale', the locale is reset to the default "C" locale while
! executing a formatted 'READ' or 'WRITE' statement.  On targets
  supporting the POSIX 2008 per-thread locale functions (e.g.
! 'newlocale', 'uselocale', 'freelocale'), these are used and thus the
! global locale set using 'setlocale' or the per-thread locales in other
  threads are not affected.  However, on targets lacking this
  functionality, the global LC_NUMERIC locale is set to "C" during the
! formatted I/O. Thus, on such targets it's not safe to call 'setlocale'
  concurrently from another thread while a Fortran formatted I/O operation
  is in progress.  Also, other threads doing something dependent on the
  LC_NUMERIC locale might not work correctly if a formatted I/O operation
--- 2555,2570 ----
  documentation for your operating system.
  
     The GNU Fortran runtime library uses various C library functions that
! depend on the locale, such as â€˜strtodâ€™ and â€˜snprintfâ€™.  In order to work
  correctly in locale-aware programs that set the locale using
! â€˜setlocaleâ€™, the locale is reset to the default "C" locale while
! executing a formatted â€˜READâ€™ or â€˜WRITEâ€™ statement.  On targets
  supporting the POSIX 2008 per-thread locale functions (e.g.
! â€˜newlocaleâ€™, â€˜uselocaleâ€™, â€˜freelocaleâ€™), these are used and thus the
! global locale set using â€˜setlocaleâ€™ or the per-thread locales in other
  threads are not affected.  However, on targets lacking this
  functionality, the global LC_NUMERIC locale is set to "C" during the
! formatted I/O. Thus, on such targets it's not safe to call â€˜setlocaleâ€™
  concurrently from another thread while a Fortran formatted I/O operation
  is in progress.  Also, other threads doing something dependent on the
  LC_NUMERIC locale might not work correctly if a formatted I/O operation
*************** and durability issues when doing I/O.
*** 2581,2591 ****
  
     With respect to durability, GNU Fortran makes no effort to ensure
  that data is committed to stable storage.  If this is required, the GNU
! Fortran programmer can use the intrinsic 'FNUM' to retrieve the low
  level file descriptor corresponding to an open Fortran unit.  Then,
! using e.g.  the 'ISO_C_BINDING' feature, one can call the underlying
! system call to flush dirty data to stable storage, such as 'fsync' on
! POSIX, '_commit' on MinGW, or 'fcntl(fd, F_FULLSYNC, 0)' on macOS. The
  following example shows how to call fsync:
  
         ! Declare the interface for POSIX fsync function
--- 2581,2591 ----
  
     With respect to durability, GNU Fortran makes no effort to ensure
  that data is committed to stable storage.  If this is required, the GNU
! Fortran programmer can use the intrinsic â€˜FNUMâ€™ to retrieve the low
  level file descriptor corresponding to an open Fortran unit.  Then,
! using e.g.  the â€˜ISO_C_BINDINGâ€™ feature, one can call the underlying
! system call to flush dirty data to stable storage, such as â€˜fsyncâ€™ on
! POSIX, â€˜_commitâ€™ on MinGW, or â€˜fcntl(fd, F_FULLSYNC, 0)â€™ on macOS. The
  following example shows how to call fsync:
  
         ! Declare the interface for POSIX fsync function
*************** following example shows how to call fsyn
*** 2617,2634 ****
     With respect to consistency, for regular files GNU Fortran uses
  buffered I/O in order to improve performance.  This buffer is flushed
  automatically when full and in some other situations, e.g.  when closing
! a unit.  It can also be explicitly flushed with the 'FLUSH' statement.
! Also, the buffering can be turned off with the 'GFORTRAN_UNBUFFERED_ALL'
! and 'GFORTRAN_UNBUFFERED_PRECONNECTED' environment variables.  Special
  files, such as terminals and pipes, are always unbuffered.  Sometimes,
  however, further things may need to be done in order to allow other
  processes to see data that GNU Fortran has written, as follows.
  
     The Windows platform supports a relaxed metadata consistency model,
  where file metadata is written to the directory lazily.  This means
! that, for instance, the 'dir' command can show a stale size for a file.
  One can force a directory metadata update by closing the unit, or by
! calling '_commit' on the file descriptor.  Note, though, that '_commit'
  forces all dirty data to stable storage, which is often a very slow
  operation.
  
--- 2617,2634 ----
     With respect to consistency, for regular files GNU Fortran uses
  buffered I/O in order to improve performance.  This buffer is flushed
  automatically when full and in some other situations, e.g.  when closing
! a unit.  It can also be explicitly flushed with the â€˜FLUSHâ€™ statement.
! Also, the buffering can be turned off with the â€˜GFORTRAN_UNBUFFERED_ALLâ€™
! and â€˜GFORTRAN_UNBUFFERED_PRECONNECTEDâ€™ environment variables.  Special
  files, such as terminals and pipes, are always unbuffered.  Sometimes,
  however, further things may need to be done in order to allow other
  processes to see data that GNU Fortran has written, as follows.
  
     The Windows platform supports a relaxed metadata consistency model,
  where file metadata is written to the directory lazily.  This means
! that, for instance, the â€˜dirâ€™ command can show a stale size for a file.
  One can force a directory metadata update by closing the unit, or by
! calling â€˜_commitâ€™ on the file descriptor.  Note, though, that â€˜_commitâ€™
  forces all dirty data to stable storage, which is often a very slow
  operation.
  
*************** operation.
*** 2636,2659 ****
  called open-to-close consistency.  Closing a file forces dirty data and
  metadata to be flushed to the server, and opening a file forces the
  client to contact the server in order to revalidate cached data.
! 'fsync' also forces a flush of dirty data and metadata to the server.
! Similar to 'open' and 'close', acquiring and releasing 'fcntl' file
  locks, if the server supports them, also forces cache validation and
  flushing dirty data and metadata.
  
  
  File: gfortran.info,  Node: Files opened without an explicit ACTION= specifier,  Next: File operations on symbolic links,  Prev: Data consistency and durability,  Up: Compiler Characteristics
  
! 4.7 Files opened without an explicit 'ACTION=' specifier
  ========================================================
  
! The Fortran standard says that if an 'OPEN' statement is executed
! without an explicit 'ACTION=' specifier, the default value is processor
  dependent.  GNU Fortran behaves as follows:
  
!   1. Attempt to open the file with 'ACTION='READWRITE''
!   2. If that fails, try to open with 'ACTION='READ''
!   3. If that fails, try to open with 'ACTION='WRITE''
    4. If that fails, generate an error
  
  
--- 2636,2659 ----
  called open-to-close consistency.  Closing a file forces dirty data and
  metadata to be flushed to the server, and opening a file forces the
  client to contact the server in order to revalidate cached data.
! â€˜fsyncâ€™ also forces a flush of dirty data and metadata to the server.
! Similar to â€˜openâ€™ and â€˜closeâ€™, acquiring and releasing â€˜fcntlâ€™ file
  locks, if the server supports them, also forces cache validation and
  flushing dirty data and metadata.
  
  
  File: gfortran.info,  Node: Files opened without an explicit ACTION= specifier,  Next: File operations on symbolic links,  Prev: Data consistency and durability,  Up: Compiler Characteristics
  
! 4.7 Files opened without an explicit â€˜ACTION=â€™ specifier
  ========================================================
  
! The Fortran standard says that if an â€˜OPENâ€™ statement is executed
! without an explicit â€˜ACTION=â€™ specifier, the default value is processor
  dependent.  GNU Fortran behaves as follows:
  
!   1. Attempt to open the file with â€˜ACTION='READWRITE'â€™
!   2. If that fails, try to open with â€˜ACTION='READ'â€™
!   3. If that fails, try to open with â€˜ACTION='WRITE'â€™
    4. If that fails, generate an error
  
  
*************** File: gfortran.info,  Node: File operati
*** 2665,2682 ****
  This section documents the behavior of GNU Fortran for file operations
  on symbolic links, on systems that support them.
  
!    * Results of 'INQUIRE' statements of the "inquire by file" form
       relate to the target of the symbolic link.  For example,
!      'INQUIRE(FILE="foo",EXIST=ex)' sets EX to .TRUE. if FOO is a
       symbolic link pointing to an existing file, and .FALSE. if FOO
       points to an non-existing file ("dangling" symbolic link).
  
!    * Using the 'OPEN' statement with a 'STATUS="NEW"' specifier on a
       symbolic link results in an error condition, whether the symbolic
       link points to an existing target or is dangling.
  
!    * If a symbolic link was connected, using the 'CLOSE' statement with
!      a 'STATUS="DELETE"' specifier causes the symbolic link itself to be
       deleted, not its target.
  
  
--- 2665,2682 ----
  This section documents the behavior of GNU Fortran for file operations
  on symbolic links, on systems that support them.
  
!    â€¢ Results of â€˜INQUIREâ€™ statements of the "inquire by file" form
       relate to the target of the symbolic link.  For example,
!      â€˜INQUIRE(FILE="foo",EXIST=ex)â€™ sets EX to .TRUE. if FOO is a
       symbolic link pointing to an existing file, and .FALSE. if FOO
       points to an non-existing file ("dangling" symbolic link).
  
!    â€¢ Using the â€˜OPENâ€™ statement with a â€˜STATUS="NEW"â€™ specifier on a
       symbolic link results in an error condition, whether the symbolic
       link points to an existing target or is dangling.
  
!    â€¢ If a symbolic link was connected, using the â€˜CLOSEâ€™ statement with
!      a â€˜STATUS="DELETE"â€™ specifier causes the symbolic link itself to be
       deleted, not its target.
  
  
*************** markers.  Each logical record consists o
*** 2691,2707 ****
     Each subrecord consists of a leading record marker, the data written
  by the user program, and a trailing record marker.  The record markers
  are four-byte integers by default, and eight-byte integers if the
! '-fmax-subrecord-length=8' option (which exists for backwards
  compatibility only) is in effect.
  
     The representation of the record markers is that of unformatted files
! given with the '-fconvert' option, the *note CONVERT specifier:: in an
! 'OPEN' statement or the *note GFORTRAN_CONVERT_UNIT:: environment
  variable.
  
     The maximum number of bytes of user data in a subrecord is 2147483639
  (2 GiB - 9) for a four-byte record marker.  This limit can be lowered
! with the '-fmax-subrecord-length' option, although this is rarely
  useful.  If the length of a logical record exceeds this limit, the data
  is distributed among several subrecords.
  
--- 2691,2707 ----
     Each subrecord consists of a leading record marker, the data written
  by the user program, and a trailing record marker.  The record markers
  are four-byte integers by default, and eight-byte integers if the
! â€˜-fmax-subrecord-length=8â€™ option (which exists for backwards
  compatibility only) is in effect.
  
     The representation of the record markers is that of unformatted files
! given with the â€˜-fconvertâ€™ option, the *note CONVERT specifier:: in an
! â€˜OPENâ€™ statement or the *note GFORTRAN_CONVERT_UNIT:: environment
  variable.
  
     The maximum number of bytes of user data in a subrecord is 2147483639
  (2 GiB - 9) for a four-byte record marker.  This limit can be lowered
! with the â€˜-fmax-subrecord-lengthâ€™ option, although this is rarely
  useful.  If the length of a logical record exceeds this limit, the data
  is distributed among several subrecords.
  
*************** variables, such as AIX, I/O is also perf
*** 2747,2754 ****
  
     On some systems, such as Darwin or Solaris, the POSIX thread library
  is always linked in, so asynchronous I/O is always performed.  On other
! sytems, such as Linux, it is necessary to specify '-pthread',
! '-lpthread' or '-fopenmp' during the linking step.
  
  
  File: gfortran.info,  Node: Behavior on integer overflow,  Prev: Asynchronous I/O,  Up: Compiler Characteristics
--- 2747,2754 ----
  
     On some systems, such as Darwin or Solaris, the POSIX thread library
  is always linked in, so asynchronous I/O is always performed.  On other
! sytems, such as Linux, it is necessary to specify â€˜-pthreadâ€™,
! â€˜-lpthreadâ€™ or â€˜-fopenmpâ€™ during the linking step.
  
  
  File: gfortran.info,  Node: Behavior on integer overflow,  Prev: Asynchronous I/O,  Up: Compiler Characteristics
*************** Integer overflow is prohibited by the Fo
*** 2760,2771 ****
  gfortran on integer overflow is undefined by default.  Traditional code,
  like linear congruential pseudo-random number generators in old programs
  that rely on specific, nonstandard behavior may generate unexpected
! results.  The '-fsanitize=undefined' option can be used to detect such
  code at runtime.
  
!    It is recommended to use the intrinsic subroutine 'RANDOM_NUMBER' for
  random number generators or, if the old behavior is desired, to use the
! '-fwrapv' option.  Note that this option can impact performance.
  
  
  File: gfortran.info,  Node: Extensions,  Next: Mixed-Language Programming,  Prev: Compiler Characteristics,  Up: Top
--- 2760,2771 ----
  gfortran on integer overflow is undefined by default.  Traditional code,
  like linear congruential pseudo-random number generators in old programs
  that rely on specific, nonstandard behavior may generate unexpected
! results.  The â€˜-fsanitize=undefinedâ€™ option can be used to detect such
  code at runtime.
  
!    It is recommended to use the intrinsic subroutine â€˜RANDOM_NUMBERâ€™ for
  random number generators or, if the old behavior is desired, to use the
! â€˜-fwrapvâ€™ option.  Note that this option can impact performance.
  
  
  File: gfortran.info,  Node: Extensions,  Next: Mixed-Language Programming,  Prev: Compiler Characteristics,  Up: Top
*************** This chapter contains information on the
*** 2797,2809 ****
  are currently two categories of GNU Fortran extensions, those that
  provide functionality beyond that provided by any standard, and those
  that are supported by GNU Fortran purely for backward compatibility with
! legacy compilers.  By default, '-std=gnu' allows the compiler to accept
  both types of extensions, but to warn about the use of the latter.
! Specifying either '-std=f95', '-std=f2003', '-std=f2008', or
! '-std=f2018' disables both types of extensions, and '-std=legacy' allows
! both without warning.  The special compile flag '-fdec' enables
  additional compatibility extensions along with those enabled by
! '-std=legacy'.
  
  * Menu:
  
--- 2797,2809 ----
  are currently two categories of GNU Fortran extensions, those that
  provide functionality beyond that provided by any standard, and those
  that are supported by GNU Fortran purely for backward compatibility with
! legacy compilers.  By default, â€˜-std=gnuâ€™ allows the compiler to accept
  both types of extensions, but to warn about the use of the latter.
! Specifying either â€˜-std=f95â€™, â€˜-std=f2003â€™, â€˜-std=f2008â€™, or
! â€˜-std=f2018â€™ disables both types of extensions, and â€˜-std=legacyâ€™ allows
! both without warning.  The special compile flag â€˜-fdecâ€™ enables
  additional compatibility extensions along with those enabled by
! â€˜-std=legacyâ€™.
  
  * Menu:
  
*************** File: gfortran.info,  Node: Old-style ki
*** 2850,2866 ****
  GNU Fortran allows old-style kind specifications in declarations.  These
  look like:
             TYPESPEC*SIZE x,y,z
! where 'TYPESPEC' is a basic type ('INTEGER', 'REAL', etc.), and where
  SIZE is a byte count corresponding to the storage size of a valid kind
! for that type.  (For 'COMPLEX' variables, SIZE is the total size of the
! real and imaginary parts.)  The statement then declares 'x', 'y' and 'z'
! to be of type 'TYPESPEC' with the appropriate kind.  This is equivalent
  to the standard-conforming declaration
             TYPESPEC(k) x,y,z
! where 'k' is the kind parameter suitable for the intended precision.  As
! kind parameters are implementation-dependent, use the 'KIND',
! 'SELECTED_INT_KIND', 'SELECTED_LOGICAL_KIND' and 'SELECTED_REAL_KIND'
! intrinsics to retrieve the correct value, for instance 'REAL*8 x' can be
  replaced by:
       INTEGER, PARAMETER :: dbl = KIND(1.0d0)
       REAL(KIND=dbl) :: x
--- 2850,2866 ----
  GNU Fortran allows old-style kind specifications in declarations.  These
  look like:
             TYPESPEC*SIZE x,y,z
! where â€˜TYPESPECâ€™ is a basic type (â€˜INTEGERâ€™, â€˜REALâ€™, etc.), and where
  SIZE is a byte count corresponding to the storage size of a valid kind
! for that type.  (For â€˜COMPLEXâ€™ variables, SIZE is the total size of the
! real and imaginary parts.)  The statement then declares â€˜xâ€™, â€˜yâ€™ and â€˜zâ€™
! to be of type â€˜TYPESPECâ€™ with the appropriate kind.  This is equivalent
  to the standard-conforming declaration
             TYPESPEC(k) x,y,z
! where â€˜kâ€™ is the kind parameter suitable for the intended precision.  As
! kind parameters are implementation-dependent, use the â€˜KINDâ€™,
! â€˜SELECTED_INT_KINDâ€™, â€˜SELECTED_LOGICAL_KINDâ€™ and â€˜SELECTED_REAL_KINDâ€™
! intrinsics to retrieve the correct value, for instance â€˜REAL*8 xâ€™ can be
  replaced by:
       INTEGER, PARAMETER :: dbl = KIND(1.0d0)
       REAL(KIND=dbl) :: x
*************** File: gfortran.info,  Node: Old-style va
*** 2874,2885 ****
  GNU Fortran allows old-style initialization of variables of the form:
             INTEGER i/1/,j/2/
             REAL x(2,2) /3*0.,1./
!    The syntax for the initializers is as for the 'DATA' statement, but
! unlike in a 'DATA' statement, an initializer only applies to the
  variable immediately preceding the initialization.  In other words,
! something like 'INTEGER I,J/2,3/' is not valid.  This style of
  initialization is only allowed in declarations without double colons
! ('::'); the double colons were introduced in Fortran 90, which also
  introduced a standard syntax for initializing variables in type
  declarations.
  
--- 2874,2885 ----
  GNU Fortran allows old-style initialization of variables of the form:
             INTEGER i/1/,j/2/
             REAL x(2,2) /3*0.,1./
!    The syntax for the initializers is as for the â€˜DATAâ€™ statement, but
! unlike in a â€˜DATAâ€™ statement, an initializer only applies to the
  variable immediately preceding the initialization.  In other words,
! something like â€˜INTEGER I,J/2,3/â€™ is not valid.  This style of
  initialization is only allowed in declarations without double colons
! (â€˜::â€™); the double colons were introduced in Fortran 90, which also
  introduced a standard syntax for initializing variables in type
  declarations.
  
*************** are:
*** 2894,2900 ****
             DATA i/1/, j/2/, x/3*0.,1./
  
     Note that variables that are explicitly initialized in declarations
! or in 'DATA' statements automatically acquire the 'SAVE' attribute.
  
  
  File: gfortran.info,  Node: Extensions to namelist,  Next: X format descriptor without count field,  Prev: Old-style variable initialization,  Up: Extensions implemented in GNU Fortran
--- 2894,2900 ----
             DATA i/1/, j/2/, x/3*0.,1./
  
     Note that variables that are explicitly initialized in declarations
! or in â€˜DATAâ€™ statements automatically acquire the â€˜SAVEâ€™ attribute.
  
  
  File: gfortran.info,  Node: Extensions to namelist,  Next: X format descriptor without count field,  Prev: Old-style variable initialization,  Up: Extensions implemented in GNU Fortran
*************** types.  The output from a namelist write
*** 2908,2924 ****
  read.  The output has all names in upper case and indentation to column
  1 after the namelist name.  The following extensions are permitted:
  
!    * Old-style use of '$' instead of '&'
            $MYNML
             X(:)%Y(2) = 1.0 2.0 3.0
             CH(1:4) = "abcd"
            $END
  
!      It should be noted that the default terminator is '/' rather than
!      '&END'.
  
!    * Querying of the namelist when inputting from stdin.  After at least
!      one space, entering '?' sends to stdout the namelist name and the
       names of the variables in the namelist:
             ?
  
--- 2908,2924 ----
  read.  The output has all names in upper case and indentation to column
  1 after the namelist name.  The following extensions are permitted:
  
!    â€¢ Old-style use of â€˜$â€™ instead of â€˜&â€™
            $MYNML
             X(:)%Y(2) = 1.0 2.0 3.0
             CH(1:4) = "abcd"
            $END
  
!      It should be noted that the default terminator is â€˜/â€™ rather than
!      â€˜&ENDâ€™.
  
!    â€¢ Querying of the namelist when inputting from stdin.  After at least
!      one space, entering â€˜?â€™ sends to stdout the namelist name and the
       names of the variables in the namelist:
             ?
  
*************** read.  The output has all names in upper
*** 2928,2935 ****
             ch
            &end
  
!      Entering '=?' outputs the namelist to stdout, as if 'WRITE(*,NML =
!      mynml)' had been called:
            =?
  
            &MYNML
--- 2928,2935 ----
             ch
            &end
  
!      Entering â€˜=?â€™ outputs the namelist to stdout, as if â€˜WRITE(*,NML =
!      mynml)â€™ had been called:
            =?
  
            &MYNML
*************** read.  The output has all names in upper
*** 2939,2948 ****
             CH=abcd,  /
  
       To aid this dialog, when input is from stdin, errors send their
!      messages to stderr and execution continues, even if 'IOSTAT' is
       set.
  
!    * 'PRINT' namelist is permitted.  This causes an error if '-std=f95'
       is used.
            PROGRAM test_print
              REAL, dimension (4)  ::  x = (/1.0, 2.0, 3.0, 4.0/)
--- 2939,2948 ----
             CH=abcd,  /
  
       To aid this dialog, when input is from stdin, errors send their
!      messages to stderr and execution continues, even if â€˜IOSTATâ€™ is
       set.
  
!    â€¢ â€˜PRINTâ€™ namelist is permitted.  This causes an error if â€˜-std=f95â€™
       is used.
            PROGRAM test_print
              REAL, dimension (4)  ::  x = (/1.0, 2.0, 3.0, 4.0/)
*************** read.  The output has all names in upper
*** 2950,2977 ****
              PRINT mynml
            END PROGRAM test_print
  
!    * Expanded namelist reads are permitted.  This causes an error if
!      '-std=f95' is used.  In the following example, the first element of
       the array is given the value 0.00 and the two succeeding elements
       are given the values 1.00 and 2.00.
            &MYNML
              X(1,1) = 0.00 , 1.00 , 2.00
            /
  
!    When writing a namelist, if no 'DELIM=' is specified, by default a
! double quote is used to delimit character strings.  With '-std=f95' or
! later, the delim status is set to ''none''.  Defaulting to quotes
  ensures that namelists with character strings can be subsequently read
  back in accurately.
  
  
  File: gfortran.info,  Node: X format descriptor without count field,  Next: Commas in FORMAT specifications,  Prev: Extensions to namelist,  Up: Extensions implemented in GNU Fortran
  
! 5.1.4 'X' format descriptor without count field
  -----------------------------------------------
  
! To support legacy codes, GNU Fortran permits the count field of the 'X'
! edit descriptor in 'FORMAT' statements to be omitted.  When omitted, the
  count is implicitly assumed to be one.
  
              PRINT 10, 2, 3
--- 2950,2977 ----
              PRINT mynml
            END PROGRAM test_print
  
!    â€¢ Expanded namelist reads are permitted.  This causes an error if
!      â€˜-std=f95â€™ is used.  In the following example, the first element of
       the array is given the value 0.00 and the two succeeding elements
       are given the values 1.00 and 2.00.
            &MYNML
              X(1,1) = 0.00 , 1.00 , 2.00
            /
  
!    When writing a namelist, if no â€˜DELIM=â€™ is specified, by default a
! double quote is used to delimit character strings.  With â€˜-std=f95â€™ or
! later, the delim status is set to â€˜'none'â€™.  Defaulting to quotes
  ensures that namelists with character strings can be subsequently read
  back in accurately.
  
  
  File: gfortran.info,  Node: X format descriptor without count field,  Next: Commas in FORMAT specifications,  Prev: Extensions to namelist,  Up: Extensions implemented in GNU Fortran
  
! 5.1.4 â€˜Xâ€™ format descriptor without count field
  -----------------------------------------------
  
! To support legacy codes, GNU Fortran permits the count field of the â€˜Xâ€™
! edit descriptor in â€˜FORMATâ€™ statements to be omitted.  When omitted, the
  count is implicitly assumed to be one.
  
              PRINT 10, 2, 3
*************** count is implicitly assumed to be one.
*** 2980,2992 ****
  
  File: gfortran.info,  Node: Commas in FORMAT specifications,  Next: Missing period in FORMAT specifications,  Prev: X format descriptor without count field,  Up: Extensions implemented in GNU Fortran
  
! 5.1.5 Commas in 'FORMAT' specifications
  ---------------------------------------
  
  To support legacy codes, GNU Fortran allows the comma separator to be
  omitted immediately before and after character string edit descriptors
! in 'FORMAT' statements.  A comma with no following format descriptor is
! permitted if the '-fdec-blank-format-item' is given on the command line.
  This is considered non-conforming code and is discouraged.
  
              PRINT 10, 2, 3
--- 2980,2992 ----
  
  File: gfortran.info,  Node: Commas in FORMAT specifications,  Next: Missing period in FORMAT specifications,  Prev: X format descriptor without count field,  Up: Extensions implemented in GNU Fortran
  
! 5.1.5 Commas in â€˜FORMATâ€™ specifications
  ---------------------------------------
  
  To support legacy codes, GNU Fortran allows the comma separator to be
  omitted immediately before and after character string edit descriptors
! in â€˜FORMATâ€™ statements.  A comma with no following format descriptor is
! permitted if the â€˜-fdec-blank-format-itemâ€™ is given on the command line.
  This is considered non-conforming code and is discouraged.
  
              PRINT 10, 2, 3
*************** This is considered non-conforming code a
*** 2997,3007 ****
  
  File: gfortran.info,  Node: Missing period in FORMAT specifications,  Next: Default widths for F/G/I format descriptors,  Prev: Commas in FORMAT specifications,  Up: Extensions implemented in GNU Fortran
  
! 5.1.6 Missing period in 'FORMAT' specifications
  -----------------------------------------------
  
  To support legacy codes, GNU Fortran allows missing periods in format
! specifications if and only if '-std=legacy' is given on the command
  line.  This is considered non-conforming code and is discouraged.
  
              REAL :: value
--- 2997,3007 ----
  
  File: gfortran.info,  Node: Missing period in FORMAT specifications,  Next: Default widths for F/G/I format descriptors,  Prev: Commas in FORMAT specifications,  Up: Extensions implemented in GNU Fortran
  
! 5.1.6 Missing period in â€˜FORMATâ€™ specifications
  -----------------------------------------------
  
  To support legacy codes, GNU Fortran allows missing periods in format
! specifications if and only if â€˜-std=legacyâ€™ is given on the command
  line.  This is considered non-conforming code and is discouraged.
  
              REAL :: value
*************** line.  This is considered non-conforming
*** 3011,3021 ****
  
  File: gfortran.info,  Node: Default widths for F/G/I format descriptors,  Next: I/O item lists,  Prev: Missing period in FORMAT specifications,  Up: Extensions implemented in GNU Fortran
  
! 5.1.7 Default widths for 'F', 'G' and 'I' format descriptors
  ------------------------------------------------------------
  
  To support legacy codes, GNU Fortran allows width to be omitted from
! format specifications if and only if '-fdec-format-defaults' is given on
  the command line.  Default widths are used.  This is considered
  non-conforming code and is discouraged.
  
--- 3011,3021 ----
  
  File: gfortran.info,  Node: Default widths for F/G/I format descriptors,  Next: I/O item lists,  Prev: Missing period in FORMAT specifications,  Up: Extensions implemented in GNU Fortran
  
! 5.1.7 Default widths for â€˜Fâ€™, â€˜Gâ€™ and â€˜Iâ€™ format descriptors
  ------------------------------------------------------------
  
  To support legacy codes, GNU Fortran allows width to be omitted from
! format specifications if and only if â€˜-fdec-format-defaultsâ€™ is given on
  the command line.  Default widths are used.  This is considered
  non-conforming code and is discouraged.
  
*************** File: gfortran.info,  Node: I/O item lis
*** 3031,3051 ****
  --------------------
  
  To support legacy codes, GNU Fortran allows the input item list of the
! 'READ' statement, and the output item lists of the 'WRITE' and 'PRINT'
  statements, to start with a comma.
  
  
  File: gfortran.info,  Node: Q exponent-letter,  Next: BOZ literal constants,  Prev: I/O item lists,  Up: Extensions implemented in GNU Fortran
  
! 5.1.9 'Q' exponent-letter
  -------------------------
  
  GNU Fortran accepts real literal constants with an exponent-letter of
! 'Q', for example, '1.23Q45'.  The constant is interpreted as a
! 'REAL(16)' entity on targets that support this type.  If the target does
! not support 'REAL(16)' but has a 'REAL(10)' type, then the
! real-literal-constant is interpreted as a 'REAL(10)' entity.  In the
! absence of 'REAL(16)' and 'REAL(10)', an error occurs.
  
  
  File: gfortran.info,  Node: BOZ literal constants,  Next: Real array indices,  Prev: Q exponent-letter,  Up: Extensions implemented in GNU Fortran
--- 3031,3051 ----
  --------------------
  
  To support legacy codes, GNU Fortran allows the input item list of the
! â€˜READâ€™ statement, and the output item lists of the â€˜WRITEâ€™ and â€˜PRINTâ€™
  statements, to start with a comma.
  
  
  File: gfortran.info,  Node: Q exponent-letter,  Next: BOZ literal constants,  Prev: I/O item lists,  Up: Extensions implemented in GNU Fortran
  
! 5.1.9 â€˜Qâ€™ exponent-letter
  -------------------------
  
  GNU Fortran accepts real literal constants with an exponent-letter of
! â€˜Qâ€™, for example, â€˜1.23Q45â€™.  The constant is interpreted as a
! â€˜REAL(16)â€™ entity on targets that support this type.  If the target does
! not support â€˜REAL(16)â€™ but has a â€˜REAL(10)â€™ type, then the
! real-literal-constant is interpreted as a â€˜REAL(10)â€™ entity.  In the
! absence of â€˜REAL(16)â€™ and â€˜REAL(10)â€™, an error occurs.
  
  
  File: gfortran.info,  Node: BOZ literal constants,  Next: Real array indices,  Prev: Q exponent-letter,  Up: Extensions implemented in GNU Fortran
*************** File: gfortran.info,  Node: BOZ literal
*** 3053,3081 ****
  5.1.10 BOZ literal constants
  ----------------------------
  
! Besides decimal constants, Fortran also supports binary ('b'), octal
! ('o') and hexadecimal ('z') integer constants.  The syntax is: 'prefix
! quote digits quote', where the prefix is either 'b', 'o' or 'z', quote
! is either ''' or '"' and the digits are '0' or '1' for binary, between
! '0' and '7' for octal, and between '0' and 'F' for hexadecimal.
! (Example: 'b'01011101''.)
  
     Up to Fortran 95, BOZ literal constants were only allowed to
  initialize integer variables in DATA statements.  Since Fortran 2003 BOZ
! literal constants are also allowed as actual arguments to the 'REAL',
! 'DBLE', 'INT' and 'CMPLX' intrinsic functions.  The BOZ literal constant
  is simply a string of bits, which is padded or truncated as needed,
  during conversion to a numeric type.  The Fortran standard states that
  the treatment of the sign bit is processor dependent.  Gfortran
  interprets the sign bit as a user would expect.
  
     As a deprecated extension, GNU Fortran allows hexadecimal BOZ literal
! constants to be specified using the 'X' prefix.  That the BOZ literal
  constant can also be specified by adding a suffix to the string, for
! example, 'Z'ABC'' and ''ABC'X' are equivalent.  Additionally, as
! extension, BOZ literals are permitted in some contexts outside of 'DATA'
  and the intrinsic functions listed in the Fortran standard.  Use
! '-fallow-invalid-boz' to enable the extension.
  
  
  File: gfortran.info,  Node: Real array indices,  Next: Unary operators,  Prev: BOZ literal constants,  Up: Extensions implemented in GNU Fortran
--- 3053,3081 ----
  5.1.10 BOZ literal constants
  ----------------------------
  
! Besides decimal constants, Fortran also supports binary (â€˜bâ€™), octal
! (â€˜oâ€™) and hexadecimal (â€˜zâ€™) integer constants.  The syntax is: â€˜prefix
! quote digits quoteâ€™, where the prefix is either â€˜bâ€™, â€˜oâ€™ or â€˜zâ€™, quote
! is either â€˜'â€™ or â€˜"â€™ and the digits are â€˜0â€™ or â€˜1â€™ for binary, between
! â€˜0â€™ and â€˜7â€™ for octal, and between â€˜0â€™ and â€˜Fâ€™ for hexadecimal.
! (Example: â€˜b'01011101'â€™.)
  
     Up to Fortran 95, BOZ literal constants were only allowed to
  initialize integer variables in DATA statements.  Since Fortran 2003 BOZ
! literal constants are also allowed as actual arguments to the â€˜REALâ€™,
! â€˜DBLEâ€™, â€˜INTâ€™ and â€˜CMPLXâ€™ intrinsic functions.  The BOZ literal constant
  is simply a string of bits, which is padded or truncated as needed,
  during conversion to a numeric type.  The Fortran standard states that
  the treatment of the sign bit is processor dependent.  Gfortran
  interprets the sign bit as a user would expect.
  
     As a deprecated extension, GNU Fortran allows hexadecimal BOZ literal
! constants to be specified using the â€˜Xâ€™ prefix.  That the BOZ literal
  constant can also be specified by adding a suffix to the string, for
! example, â€˜Z'ABC'â€™ and â€˜'ABC'Xâ€™ are equivalent.  Additionally, as
! extension, BOZ literals are permitted in some contexts outside of â€˜DATAâ€™
  and the intrinsic functions listed in the Fortran standard.  Use
! â€˜-fallow-invalid-bozâ€™ to enable the extension.
  
  
  File: gfortran.info,  Node: Real array indices,  Next: Unary operators,  Prev: BOZ literal constants,  Up: Extensions implemented in GNU Fortran
*************** File: gfortran.info,  Node: Real array i
*** 3083,3089 ****
  5.1.11 Real array indices
  -------------------------
  
! As an extension, GNU Fortran allows the use of 'REAL' expressions or
  variables as array indices.
  
  
--- 3083,3089 ----
  5.1.11 Real array indices
  -------------------------
  
! As an extension, GNU Fortran allows the use of â€˜REALâ€™ expressions or
  variables as array indices.
  
  
*************** the need for parenthesis.
*** 3101,3124 ****
  
  File: gfortran.info,  Node: Implicitly convert LOGICAL and INTEGER values,  Next: Hollerith constants support,  Prev: Unary operators,  Up: Extensions implemented in GNU Fortran
  
! 5.1.13 Implicitly convert 'LOGICAL' and 'INTEGER' values
  --------------------------------------------------------
  
  As an extension for backwards compatibility with other compilers, GNU
! Fortran allows the implicit conversion of 'LOGICAL' values to 'INTEGER'
! values and vice versa.  When converting from a 'LOGICAL' to an
! 'INTEGER', '.FALSE.' is interpreted as zero, and '.TRUE.' is interpreted
! as one.  When converting from 'INTEGER' to 'LOGICAL', the value zero is
! interpreted as '.FALSE.' and any nonzero value is interpreted as
! '.TRUE.'.
  
               LOGICAL :: l
               l = 1
               INTEGER :: i
               i = .TRUE.
  
!    However, there is no implicit conversion of 'INTEGER' values in
! 'if'-statements, nor of 'LOGICAL' or 'INTEGER' values in I/O operations.
  
  
  File: gfortran.info,  Node: Hollerith constants support,  Next: Character conversion,  Prev: Implicitly convert LOGICAL and INTEGER values,  Up: Extensions implemented in GNU Fortran
--- 3101,3124 ----
  
  File: gfortran.info,  Node: Implicitly convert LOGICAL and INTEGER values,  Next: Hollerith constants support,  Prev: Unary operators,  Up: Extensions implemented in GNU Fortran
  
! 5.1.13 Implicitly convert â€˜LOGICALâ€™ and â€˜INTEGERâ€™ values
  --------------------------------------------------------
  
  As an extension for backwards compatibility with other compilers, GNU
! Fortran allows the implicit conversion of â€˜LOGICALâ€™ values to â€˜INTEGERâ€™
! values and vice versa.  When converting from a â€˜LOGICALâ€™ to an
! â€˜INTEGERâ€™, â€˜.FALSE.â€™ is interpreted as zero, and â€˜.TRUE.â€™ is interpreted
! as one.  When converting from â€˜INTEGERâ€™ to â€˜LOGICALâ€™, the value zero is
! interpreted as â€˜.FALSE.â€™ and any nonzero value is interpreted as
! â€˜.TRUE.â€™.
  
               LOGICAL :: l
               l = 1
               INTEGER :: i
               i = .TRUE.
  
!    However, there is no implicit conversion of â€˜INTEGERâ€™ values in
! â€˜ifâ€™-statements, nor of â€˜LOGICALâ€™ or â€˜INTEGERâ€™ values in I/O operations.
  
  
  File: gfortran.info,  Node: Hollerith constants support,  Next: Character conversion,  Prev: Implicitly convert LOGICAL and INTEGER values,  Up: Extensions implemented in GNU Fortran
*************** File: gfortran.info,  Node: Hollerith co
*** 3126,3137 ****
  5.1.14 Hollerith constants support
  ----------------------------------
  
! GNU Fortran supports Hollerith constants in assignments, 'DATA'
  statements, function and subroutine arguments.  A Hollerith constant is
  written as a string of characters preceded by an integer constant
! indicating the character count, and the letter 'H' or 'h', and stored in
! bytewise fashion in a numeric ('INTEGER', 'REAL', or 'COMPLEX'),
! 'LOGICAL' or 'CHARACTER' variable.  The constant is padded with spaces
  or truncated to fit the size of the variable in which it is stored.
  
     Examples of valid uses of Hollerith constants:
--- 3126,3137 ----
  5.1.14 Hollerith constants support
  ----------------------------------
  
! GNU Fortran supports Hollerith constants in assignments, â€˜DATAâ€™
  statements, function and subroutine arguments.  A Hollerith constant is
  written as a string of characters preceded by an integer constant
! indicating the character count, and the letter â€˜Hâ€™ or â€˜hâ€™, and stored in
! bytewise fashion in a numeric (â€˜INTEGERâ€™, â€˜REALâ€™, or â€˜COMPLEXâ€™),
! â€˜LOGICALâ€™ or â€˜CHARACTERâ€™ variable.  The constant is padded with spaces
  or truncated to fit the size of the variable in which it is stored.
  
     Examples of valid uses of Hollerith constants:
*************** or truncated to fit the size of the vari
*** 3149,3164 ****
  
     In general, Hollerith constants were used to provide a rudimentary
  facility for handling character strings in early Fortran compilers,
! prior to the introduction of 'CHARACTER' variables in Fortran 77; in
  those cases, the standard-compliant equivalent is to convert the program
  to use proper character strings.  On occasion, there may be a case where
  the intent is specifically to initialize a numeric variable with a given
  byte sequence.  In these cases, the same result can be obtained by using
! the 'TRANSFER' statement, as in this example.
             integer(kind=4) :: a
             a = transfer ("abcd", a)     ! equivalent to: a = 4Habcd
  
!    The use of the '-fdec' option extends support of Hollerith constants
  to comparisons:
             integer*4 a
             a = 4hABCD
--- 3149,3164 ----
  
     In general, Hollerith constants were used to provide a rudimentary
  facility for handling character strings in early Fortran compilers,
! prior to the introduction of â€˜CHARACTERâ€™ variables in Fortran 77; in
  those cases, the standard-compliant equivalent is to convert the program
  to use proper character strings.  On occasion, there may be a case where
  the intent is specifically to initialize a numeric variable with a given
  byte sequence.  In these cases, the same result can be obtained by using
! the â€˜TRANSFERâ€™ statement, as in this example.
             integer(kind=4) :: a
             a = transfer ("abcd", a)     ! equivalent to: a = 4Habcd
  
!    The use of the â€˜-fdecâ€™ option extends support of Hollerith constants
  to comparisons:
             integer*4 a
             a = 4hABCD
*************** to comparisons:
*** 3166,3173 ****
               write(*,*) "no match"
             end if
  
!    Supported types are numeric ('INTEGER', 'REAL', or 'COMPLEX'), and
! 'CHARACTER'.
  
  
  File: gfortran.info,  Node: Character conversion,  Next: Cray pointers,  Prev: Hollerith constants support,  Up: Extensions implemented in GNU Fortran
--- 3166,3173 ----
               write(*,*) "no match"
             end if
  
!    Supported types are numeric (â€˜INTEGERâ€™, â€˜REALâ€™, or â€˜COMPLEXâ€™), and
! â€˜CHARACTERâ€™.
  
  
  File: gfortran.info,  Node: Character conversion,  Next: Cray pointers,  Prev: Hollerith constants support,  Up: Extensions implemented in GNU Fortran
*************** File: gfortran.info,  Node: Character co
*** 3178,3187 ****
  Allowing character literals to be used in a similar way to Hollerith
  constants is a nonstandard extension.  This feature is enabled using
  -fdec-char-conversions and only applies to character literals of
! 'kind=1'.
  
!    Character literals can be used in 'DATA' statements and assignments
! with numeric ('INTEGER', 'REAL', or 'COMPLEX') or 'LOGICAL' variables.
  Like Hollerith constants they are copied bytewise fashion.  The constant
  is padded with spaces or truncated to fit the size of the variable in
  which it is stored.
--- 3178,3187 ----
  Allowing character literals to be used in a similar way to Hollerith
  constants is a nonstandard extension.  This feature is enabled using
  -fdec-char-conversions and only applies to character literals of
! â€˜kind=1â€™.
  
!    Character literals can be used in â€˜DATAâ€™ statements and assignments
! with numeric (â€˜INTEGERâ€™, â€˜REALâ€™, or â€˜COMPLEXâ€™) or â€˜LOGICALâ€™ variables.
  Like Hollerith constants they are copied bytewise fashion.  The constant
  is padded with spaces or truncated to fit the size of the variable in
  which it is stored.
*************** or,
*** 3212,3218 ****
  The pointee may be an array or scalar.  If an assumed-size array is
  permitted within the scoping unit, a pointee can be an assumed-size
  array.  That is, the last dimension may be left unspecified by using a
! '*' in place of a value.  A pointee cannot be an assumed shape array.
  No space is allocated for the pointee.
  
     The pointee may have its type declared before or after the pointer
--- 3212,3218 ----
  The pointee may be an array or scalar.  If an assumed-size array is
  permitted within the scoping unit, a pointee can be an assumed-size
  array.  That is, the last dimension may be left unspecified by using a
! â€˜*â€™ in place of a value.  A pointee cannot be an assumed shape array.
  No space is allocated for the pointee.
  
     The pointee may have its type declared before or after the pointer
*************** so the following code is not portable:
*** 3227,3234 ****
  issues a warning; the resulting binary will probably not work correctly,
  because the memory addresses stored in the pointers may be truncated.
  It is safer to omit the first line of the above example; if explicit
! declaration of 'ipt''s type is omitted, then the compiler ensures that
! 'ipt' is an integer variable large enough to hold a pointer.
  
     Pointer arithmetic is valid with Cray pointers, but it is not the
  same as C pointer arithmetic.  Cray pointers are just ordinary integers,
--- 3227,3234 ----
  issues a warning; the resulting binary will probably not work correctly,
  because the memory addresses stored in the pointers may be truncated.
  It is safer to omit the first line of the above example; if explicit
! declaration of â€˜iptâ€™'s type is omitted, then the compiler ensures that
! â€˜iptâ€™ is an integer variable large enough to hold a pointer.
  
     Pointer arithmetic is valid with Cray pointers, but it is not the
  same as C pointer arithmetic.  Cray pointers are just ordinary integers,
*************** pointer in order to increment it.  Consi
*** 3239,3260 ****
               pointer (ipt, pointee)
               ipt = loc (target)
               ipt = ipt + 1
!    The last statement does not set 'ipt' to the address of 'target(1)',
! as it would in C pointer arithmetic.  Adding '1' to 'ipt' just adds one
! byte to the address stored in 'ipt'.
  
     Any expression involving the pointee is translated to use the value
  stored in the pointer as the base address.
  
     To get the address of elements, this extension provides an intrinsic
! function 'LOC()'.  The 'LOC()' function is equivalent to the '&'
  operator in C, except the address is cast to an integer type:
               real ar(10)
               pointer(ipt, arpte(10))
               real arpte
               ipt = loc(ar)  ! Makes arpte is an alias for ar
               arpte(1) = 1.0 ! Sets ar(1) to 1.0
!    The pointer can also be set by a call to the 'MALLOC' intrinsic (see
  *note MALLOC::).
  
     Cray pointees often are used to alias an existing variable.  For
--- 3239,3260 ----
               pointer (ipt, pointee)
               ipt = loc (target)
               ipt = ipt + 1
!    The last statement does not set â€˜iptâ€™ to the address of â€˜target(1)â€™,
! as it would in C pointer arithmetic.  Adding â€˜1â€™ to â€˜iptâ€™ just adds one
! byte to the address stored in â€˜iptâ€™.
  
     Any expression involving the pointee is translated to use the value
  stored in the pointer as the base address.
  
     To get the address of elements, this extension provides an intrinsic
! function â€˜LOC()â€™.  The â€˜LOC()â€™ function is equivalent to the â€˜&â€™
  operator in C, except the address is cast to an integer type:
               real ar(10)
               pointer(ipt, arpte(10))
               real arpte
               ipt = loc(ar)  ! Makes arpte is an alias for ar
               arpte(1) = 1.0 ! Sets ar(1) to 1.0
!    The pointer can also be set by a call to the â€˜MALLOCâ€™ intrinsic (see
  *note MALLOC::).
  
     Cray pointees often are used to alias an existing variable.  For
*************** example:
*** 3263,3271 ****
               integer iarr(10)
               pointer (ipt, iarr)
               ipt = loc(target)
!    As long as 'ipt' remains unchanged, 'iarr' is now an alias for
! 'target'.  The optimizer, however, does not detect this aliasing, so it
! is unsafe to use 'iarr' and 'target' simultaneously.  Using a pointee in
  any way that violates the Fortran aliasing rules or assumptions is
  invalid.  It is the user's responsibility to avoid doing this; the
  compiler works under the assumption that no such aliasing occurs.
--- 3263,3271 ----
               integer iarr(10)
               pointer (ipt, iarr)
               ipt = loc(target)
!    As long as â€˜iptâ€™ remains unchanged, â€˜iarrâ€™ is now an alias for
! â€˜targetâ€™.  The optimizer, however, does not detect this aliasing, so it
! is unsafe to use â€˜iarrâ€™ and â€˜targetâ€™ simultaneously.  Using a pointee in
  any way that violates the Fortran aliasing rules or assumptions is
  invalid.  It is the user's responsibility to avoid doing this; the
  compiler works under the assumption that no such aliasing occurs.
*************** unique to GNU Fortran; any Fortran compi
*** 3281,3289 ****
  
     There are a number of restrictions on the attributes that can be
  applied to Cray pointers and pointees.  Pointees may not have the
! 'ALLOCATABLE', 'INTENT', 'OPTIONAL', 'DUMMY', 'TARGET', 'INTRINSIC', or
! 'POINTER' attributes.  Pointers may not have the 'DIMENSION', 'POINTER',
! 'TARGET', 'ALLOCATABLE', 'EXTERNAL', or 'INTRINSIC' attributes, nor may
  they be function results.  Pointees may not occur in more than one
  pointer statement.  A pointee cannot be a pointer.  Pointees cannot
  occur in equivalence, common, or data statements.
--- 3281,3289 ----
  
     There are a number of restrictions on the attributes that can be
  applied to Cray pointers and pointees.  Pointees may not have the
! â€˜ALLOCATABLEâ€™, â€˜INTENTâ€™, â€˜OPTIONALâ€™, â€˜DUMMYâ€™, â€˜TARGETâ€™, â€˜INTRINSICâ€™, or
! â€˜POINTERâ€™ attributes.  Pointers may not have the â€˜DIMENSIONâ€™, â€˜POINTERâ€™,
! â€˜TARGETâ€™, â€˜ALLOCATABLEâ€™, â€˜EXTERNALâ€™, or â€˜INTRINSICâ€™ attributes, nor may
  they be function results.  Pointees may not occur in more than one
  pointer statement.  A pointee cannot be a pointer.  Pointees cannot
  occur in equivalence, common, or data statements.
*************** change the base address of the array tha
*** 3310,3355 ****
  
  File: gfortran.info,  Node: CONVERT specifier,  Next: OpenMP,  Prev: Cray pointers,  Up: Extensions implemented in GNU Fortran
  
! 5.1.17 'CONVERT' specifier
  --------------------------
  
  GNU Fortran allows the conversion of unformatted data between little-
  and big-endian representation to facilitate moving of data between
! different systems.  The conversion can be indicated with the 'CONVERT'
! specifier on the 'OPEN' statement.  *Note GFORTRAN_CONVERT_UNIT::, for
  an alternative way of specifying the data format via an environment
  variable.
  
!    Valid values for 'CONVERT' on most systems are:
!      'CONVERT='NATIVE'' Use the native format.  This is the default.
!      'CONVERT='SWAP'' Swap between little- and big-endian.
!      'CONVERT='LITTLE_ENDIAN'' Use the little-endian representation for
       unformatted files.
!      'CONVERT='BIG_ENDIAN'' Use the big-endian representation for
       unformatted files.
!    On POWER systems that support '-mabi=ieeelongdouble', there are
  additional options, which can be combined with the others with commas.
  Those are
!      'CONVERT='R16_IEEE'' Use IEEE 128-bit format for 'REAL(KIND=16)'.
!      'CONVERT='R16_IBM'' Use IBM 'long double' format for
!      'REAL(KIND=16)'.
  
     Using the option could look like this:
         open(file='big.dat',form='unformatted',access='sequential', &
              convert='big_endian')
  
     The value of the conversion can be queried by using
! 'INQUIRE(CONVERT=ch)'.  The values returned are ''BIG_ENDIAN'' and
! ''LITTLE_ENDIAN''.
  
!    'CONVERT' works between big- and little-endian for 'INTEGER' values
! of all supported kinds and for 'REAL' on IEEE systems of kinds 4 and 8.
  Conversion between different "extended double" types on different
  architectures such as m68k and x86_64, which GNU Fortran supports as
! 'REAL(KIND=10)' and 'REAL(KIND=16)', probably does not work.
  
!    Note that the values specified via the 'GFORTRAN_CONVERT_UNIT'
! environment variable overrides the 'CONVERT' specifier in the 'OPEN'
  statement.  This is to give control over data formats to users who do
  not have the source code of their program available.
  
--- 3310,3355 ----
  
  File: gfortran.info,  Node: CONVERT specifier,  Next: OpenMP,  Prev: Cray pointers,  Up: Extensions implemented in GNU Fortran
  
! 5.1.17 â€˜CONVERTâ€™ specifier
  --------------------------
  
  GNU Fortran allows the conversion of unformatted data between little-
  and big-endian representation to facilitate moving of data between
! different systems.  The conversion can be indicated with the â€˜CONVERTâ€™
! specifier on the â€˜OPENâ€™ statement.  *Note GFORTRAN_CONVERT_UNIT::, for
  an alternative way of specifying the data format via an environment
  variable.
  
!    Valid values for â€˜CONVERTâ€™ on most systems are:
!      â€˜CONVERT='NATIVE'â€™ Use the native format.  This is the default.
!      â€˜CONVERT='SWAP'â€™ Swap between little- and big-endian.
!      â€˜CONVERT='LITTLE_ENDIAN'â€™ Use the little-endian representation for
       unformatted files.
!      â€˜CONVERT='BIG_ENDIAN'â€™ Use the big-endian representation for
       unformatted files.
!    On POWER systems that support â€˜-mabi=ieeelongdoubleâ€™, there are
  additional options, which can be combined with the others with commas.
  Those are
!      â€˜CONVERT='R16_IEEE'â€™ Use IEEE 128-bit format for â€˜REAL(KIND=16)â€™.
!      â€˜CONVERT='R16_IBM'â€™ Use IBM â€˜long doubleâ€™ format for
!      â€˜REAL(KIND=16)â€™.
  
     Using the option could look like this:
         open(file='big.dat',form='unformatted',access='sequential', &
              convert='big_endian')
  
     The value of the conversion can be queried by using
! â€˜INQUIRE(CONVERT=ch)â€™.  The values returned are â€˜'BIG_ENDIAN'â€™ and
! â€˜'LITTLE_ENDIAN'â€™.
  
!    â€˜CONVERTâ€™ works between big- and little-endian for â€˜INTEGERâ€™ values
! of all supported kinds and for â€˜REALâ€™ on IEEE systems of kinds 4 and 8.
  Conversion between different "extended double" types on different
  architectures such as m68k and x86_64, which GNU Fortran supports as
! â€˜REAL(KIND=10)â€™ and â€˜REAL(KIND=16)â€™, probably does not work.
  
!    Note that the values specified via the â€˜GFORTRAN_CONVERT_UNITâ€™
! environment variable overrides the â€˜CONVERTâ€™ specifier in the â€˜OPENâ€™
  statement.  This is to give control over data formats to users who do
  not have the source code of their program available.
  
*************** from later versions of the OpenMP specif
*** 3376,3391 ****
  Implementation Status::, for more details about currently supported
  OpenMP features.
  
!    To enable the processing of the OpenMP directive '!$omp' in free-form
! source code; the 'c$omp', '*$omp' and '!$omp' directives in fixed form;
! the '!$' conditional compilation sentinels in free form; and the 'c$',
! '*$' and '!$' sentinels in fixed form, 'gfortran' needs to be invoked
! with the '-fopenmp' option.  This option also arranges for automatic
  linking of the OpenMP runtime library.  *Note (libgomp)::.
  
     The OpenMP Fortran runtime library routines are provided both in a
! form of a Fortran 90 module named 'omp_lib' and in a form of a Fortran
! 'include' file named 'omp_lib.h'.
  
     An example of a parallelized loop taken from Appendix A.1 of the
  OpenMP Application Program Interface v2.5:
--- 3376,3391 ----
  Implementation Status::, for more details about currently supported
  OpenMP features.
  
!    To enable the processing of the OpenMP directive â€˜!$ompâ€™ in free-form
! source code; the â€˜c$ompâ€™, â€˜*$ompâ€™ and â€˜!$ompâ€™ directives in fixed form;
! the â€˜!$â€™ conditional compilation sentinels in free form; and the â€˜c$â€™,
! â€˜*$â€™ and â€˜!$â€™ sentinels in fixed form, â€˜gfortranâ€™ needs to be invoked
! with the â€˜-fopenmpâ€™ option.  This option also arranges for automatic
  linking of the OpenMP runtime library.  *Note (libgomp)::.
  
     The OpenMP Fortran runtime library routines are provided both in a
! form of a Fortran 90 module named â€˜omp_libâ€™ and in a form of a Fortran
! â€˜includeâ€™ file named â€˜omp_lib.hâ€™.
  
     An example of a parallelized loop taken from Appendix A.1 of the
  OpenMP Application Program Interface v2.5:
*************** OpenMP Application Program Interface v2.
*** 3400,3417 ****
       END SUBROUTINE A1
  
     *Note (gcc)OpenMP and OpenACC Options::, for additional options
! useful with '-fopenmp'.
  
     Please note:
!    * '-fopenmp' implies '-frecursive', i.e., all local arrays are
       allocated on the stack.  When porting existing code to OpenMP, this
       may lead to surprising results, especially segmentation faults if
       the stack size is limited.
  
!    * On glibc-based systems, OpenMP-enabled applications cannot be
       statically linked due to limitations of the underlying pthreads
       implementation.  It might be possible to get a working solution if
!      '-Wl,--whole-archive -lpthread -Wl,--no-whole-archive' is added to
       the command line.  However, this is not supported by GCC and thus
       not recommended.
  
--- 3400,3417 ----
       END SUBROUTINE A1
  
     *Note (gcc)OpenMP and OpenACC Options::, for additional options
! useful with â€˜-fopenmpâ€™.
  
     Please note:
!    â€¢ â€˜-fopenmpâ€™ implies â€˜-frecursiveâ€™, i.e., all local arrays are
       allocated on the stack.  When porting existing code to OpenMP, this
       may lead to surprising results, especially segmentation faults if
       the stack size is limited.
  
!    â€¢ On glibc-based systems, OpenMP-enabled applications cannot be
       statically linked due to limitations of the underlying pthreads
       implementation.  It might be possible to get a working solution if
!      â€˜-Wl,--whole-archive -lpthread -Wl,--no-whole-archiveâ€™ is added to
       the command line.  However, this is not supported by GCC and thus
       not recommended.
  
*************** influence run-time behavior.
*** 3429,3455 ****
     GNU Fortran strives to be compatible with the OpenACC Application
  Programming Interface v2.6 (https://www.openacc.org/).
  
!    To enable the processing of the OpenACC directive '!$acc' in
! free-form source code; the 'c$acc', '*$acc' and '!$acc' directives in
! fixed form; the '!$' conditional compilation sentinels in free form; and
! the 'c$', '*$' and '!$' sentinels in fixed form, 'gfortran' needs to be
! invoked with the '-fopenacc' option.  This option also arranges for
  automatic linking of the OpenACC runtime library.  *Note (libgomp)::.
  
     The OpenACC Fortran runtime library routines are provided both in a
! form of a Fortran 90 module named 'openacc' and in a form of a Fortran
! 'include' file named 'openacc_lib.h'.
  
     *Note (gcc)OpenMP and OpenACC Options::, for additional options
! useful with '-fopenacc'.
  
  
  File: gfortran.info,  Node: Argument list functions,  Next: Read/Write after EOF marker,  Prev: OpenACC,  Up: Extensions implemented in GNU Fortran
  
! 5.1.20 Argument list functions '%VAL', '%REF' and '%LOC'
  --------------------------------------------------------
  
! GNU Fortran supports argument list functions '%VAL', '%REF' and '%LOC'
  statements, for backward compatibility with g77.  It is recommended that
  these should be used only for code that is accessing facilities outside
  of GNU Fortran, such as operating system or windowing facilities.  It is
--- 3429,3455 ----
     GNU Fortran strives to be compatible with the OpenACC Application
  Programming Interface v2.6 (https://www.openacc.org/).
  
!    To enable the processing of the OpenACC directive â€˜!$accâ€™ in
! free-form source code; the â€˜c$accâ€™, â€˜*$accâ€™ and â€˜!$accâ€™ directives in
! fixed form; the â€˜!$â€™ conditional compilation sentinels in free form; and
! the â€˜c$â€™, â€˜*$â€™ and â€˜!$â€™ sentinels in fixed form, â€˜gfortranâ€™ needs to be
! invoked with the â€˜-fopenaccâ€™ option.  This option also arranges for
  automatic linking of the OpenACC runtime library.  *Note (libgomp)::.
  
     The OpenACC Fortran runtime library routines are provided both in a
! form of a Fortran 90 module named â€˜openaccâ€™ and in a form of a Fortran
! â€˜includeâ€™ file named â€˜openacc_lib.hâ€™.
  
     *Note (gcc)OpenMP and OpenACC Options::, for additional options
! useful with â€˜-fopenaccâ€™.
  
  
  File: gfortran.info,  Node: Argument list functions,  Next: Read/Write after EOF marker,  Prev: OpenACC,  Up: Extensions implemented in GNU Fortran
  
! 5.1.20 Argument list functions â€˜%VALâ€™, â€˜%REFâ€™ and â€˜%LOCâ€™
  --------------------------------------------------------
  
! GNU Fortran supports argument list functions â€˜%VALâ€™, â€˜%REFâ€™ and â€˜%LOCâ€™
  statements, for backward compatibility with g77.  It is recommended that
  these should be used only for code that is accessing facilities outside
  of GNU Fortran, such as operating system or windowing facilities.  It is
*************** use by the program as a whole, but are t
*** 3460,3469 ****
  should be thoroughly tested each time they are rebuilt using a new
  compiler or version of a compiler.
  
!    '%VAL' passes a scalar argument by value, '%REF' passes it by
! reference and '%LOC' passes its memory location.  Since gfortran already
! passes scalar arguments by reference, '%REF' is in effect a do-nothing.
! '%LOC' has the same effect as a Fortran pointer.
  
     An example of passing an argument by value to a C subroutine foo.:
       C
--- 3460,3469 ----
  should be thoroughly tested each time they are rebuilt using a new
  compiler or version of a compiler.
  
!    â€˜%VALâ€™ passes a scalar argument by value, â€˜%REFâ€™ passes it by
! reference and â€˜%LOCâ€™ passes its memory location.  Since gfortran already
! passes scalar arguments by reference, â€˜%REFâ€™ is in effect a do-nothing.
! â€˜%LOCâ€™ has the same effect as a Fortran pointer.
  
     An example of passing an argument by value to a C subroutine foo.:
       C
*************** passes scalar arguments by reference, '%
*** 3478,3484 ****
     For details refer to the g77 manual
  <https://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/index.html#Top>.
  
!    Also, 'c_by_val.f' and its partner 'c_by_val.c' of the GNU Fortran
  testsuite are worth a look.
  
  
--- 3478,3484 ----
     For details refer to the g77 manual
  <https://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/index.html#Top>.
  
!    Also, â€˜c_by_val.fâ€™ and its partner â€˜c_by_val.câ€™ of the GNU Fortran
  testsuite are worth a look.
  
  
*************** File: gfortran.info,  Node: Read/Write a
*** 3487,3516 ****
  5.1.21 Read/Write after EOF marker
  ----------------------------------
  
! Some legacy codes rely on allowing 'READ' or 'WRITE' after the EOF file
  marker in order to find the end of a file.  GNU Fortran normally rejects
  these codes with a run-time error message and suggests the user consider
! 'BACKSPACE' or 'REWIND' to properly position the file before the EOF
  marker.  As an extension, the run-time error may be disabled using
  -std=legacy.
  
  
  File: gfortran.info,  Node: STRUCTURE and RECORD,  Next: UNION and MAP,  Prev: Read/Write after EOF marker,  Up: Extensions implemented in GNU Fortran
  
! 5.1.22 'STRUCTURE' and 'RECORD'
  -------------------------------
  
  Record structures are a pre-Fortran-90 vendor extension to create
  user-defined aggregate data types.  Support for record structures in GNU
! Fortran can be enabled with the '-fdec-structure' compile flag.  If you
  have a choice, you should instead use Fortran 90's "derived types",
  which have a different syntax.
  
     In many cases, record structures can easily be converted to derived
! types.  To convert, replace 'STRUCTURE /'STRUCTURE-NAME'/' by 'TYPE'
! TYPE-NAME.  Additionally, replace 'RECORD /'STRUCTURE-NAME'/' by
! 'TYPE('TYPE-NAME')'.  Finally, in the component access, replace the
! period ('.') by the percent sign ('%').
  
     Here is an example of code using the non portable record structure
  syntax:
--- 3487,3516 ----
  5.1.21 Read/Write after EOF marker
  ----------------------------------
  
! Some legacy codes rely on allowing â€˜READâ€™ or â€˜WRITEâ€™ after the EOF file
  marker in order to find the end of a file.  GNU Fortran normally rejects
  these codes with a run-time error message and suggests the user consider
! â€˜BACKSPACEâ€™ or â€˜REWINDâ€™ to properly position the file before the EOF
  marker.  As an extension, the run-time error may be disabled using
  -std=legacy.
  
  
  File: gfortran.info,  Node: STRUCTURE and RECORD,  Next: UNION and MAP,  Prev: Read/Write after EOF marker,  Up: Extensions implemented in GNU Fortran
  
! 5.1.22 â€˜STRUCTUREâ€™ and â€˜RECORDâ€™
  -------------------------------
  
  Record structures are a pre-Fortran-90 vendor extension to create
  user-defined aggregate data types.  Support for record structures in GNU
! Fortran can be enabled with the â€˜-fdec-structureâ€™ compile flag.  If you
  have a choice, you should instead use Fortran 90's "derived types",
  which have a different syntax.
  
     In many cases, record structures can easily be converted to derived
! types.  To convert, replace â€˜STRUCTURE /â€™STRUCTURE-NAMEâ€˜/â€™ by â€˜TYPEâ€™
! TYPE-NAME.  Additionally, replace â€˜RECORD /â€™STRUCTURE-NAMEâ€˜/â€™ by
! â€˜TYPE(â€™TYPE-NAMEâ€˜)â€™.  Finally, in the component access, replace the
! period (â€˜.â€™) by the percent sign (â€˜%â€™).
  
     Here is an example of code using the non portable record structure
  syntax:
*************** This code can easily be rewritten in the
*** 3568,3577 ****
  GNU Fortran implements structures like derived types with the following
  rules and exceptions:
  
!    * Structures act like derived types with the 'SEQUENCE' attribute.
       Otherwise they may contain no specifiers.
  
!    * Structures may contain a special field with the name '%FILL'.  This
       creates an anonymous component that cannot be accessed but occupies
       space just as if a component of the same type was declared in its
       place, useful for alignment purposes.  As an example, the following
--- 3568,3577 ----
  GNU Fortran implements structures like derived types with the following
  rules and exceptions:
  
!    â€¢ Structures act like derived types with the â€˜SEQUENCEâ€™ attribute.
       Otherwise they may contain no specifiers.
  
!    â€¢ Structures may contain a special field with the name â€˜%FILLâ€™.  This
       creates an anonymous component that cannot be accessed but occupies
       space just as if a component of the same type was declared in its
       place, useful for alignment purposes.  As an example, the following
*************** rules and exceptions:
*** 3583,3589 ****
              character(4) end
            end structure
  
!    * Structures may share names with other symbols.  For example, the
       following is invalid for derived types, but valid for structures:
  
            structure /header/
--- 3583,3589 ----
              character(4) end
            end structure
  
!    â€¢ Structures may share names with other symbols.  For example, the
       following is invalid for derived types, but valid for structures:
  
            structure /header/
*************** rules and exceptions:
*** 3591,3597 ****
            end structure
            record /header/ header
  
!    * Structure types may be declared nested within another parent
       structure.  The syntax is:
            structure /type-name/
                ...
--- 3591,3597 ----
            end structure
            record /header/ header
  
!    â€¢ Structure types may be declared nested within another parent
       structure.  The syntax is:
            structure /type-name/
                ...
*************** rules and exceptions:
*** 3624,3655 ****
              character(10) memo
            end structure
  
!    * Structures may contain 'UNION' blocks.  For more detail see the
       section on *note UNION and MAP::.
  
!    * Structures support old-style initialization of components, like
       those described in *note Old-style variable initialization::.  For
       array initializers, an initializer may contain a repeat
!      specification of the form '<literal-integer> *
!      <constant-initializer>'.  The value of the integer indicates the
       number of times to repeat the constant initializer when expanding
       the initializer list.
  
  
  File: gfortran.info,  Node: UNION and MAP,  Next: Type variants for integer intrinsics,  Prev: STRUCTURE and RECORD,  Up: Extensions implemented in GNU Fortran
  
! 5.1.23 'UNION' and 'MAP'
  ------------------------
  
  Unions are an old vendor extension which were commonly used with the
! nonstandard *note STRUCTURE and RECORD:: extensions.  Use of 'UNION' and
! 'MAP' is automatically enabled with '-fdec-structure'.
  
!    A 'UNION' declaration occurs within a structure; within the
! definition of each union is a number of 'MAP' blocks.  Each 'MAP' shares
  storage with its sibling maps (in the same union), and the size of the
  union is the size of the largest map within it, just as with unions in
! C. The major difference is that component references do not indicate
  which union or map the component is in (the compiler gets to figure that
  out).
  
--- 3624,3655 ----
              character(10) memo
            end structure
  
!    â€¢ Structures may contain â€˜UNIONâ€™ blocks.  For more detail see the
       section on *note UNION and MAP::.
  
!    â€¢ Structures support old-style initialization of components, like
       those described in *note Old-style variable initialization::.  For
       array initializers, an initializer may contain a repeat
!      specification of the form â€˜<literal-integer> *
!      <constant-initializer>â€™.  The value of the integer indicates the
       number of times to repeat the constant initializer when expanding
       the initializer list.
  
  
  File: gfortran.info,  Node: UNION and MAP,  Next: Type variants for integer intrinsics,  Prev: STRUCTURE and RECORD,  Up: Extensions implemented in GNU Fortran
  
! 5.1.23 â€˜UNIONâ€™ and â€˜MAPâ€™
  ------------------------
  
  Unions are an old vendor extension which were commonly used with the
! nonstandard *note STRUCTURE and RECORD:: extensions.  Use of â€˜UNIONâ€™ and
! â€˜MAPâ€™ is automatically enabled with â€˜-fdec-structureâ€™.
  
!    A â€˜UNIONâ€™ declaration occurs within a structure; within the
! definition of each union is a number of â€˜MAPâ€™ blocks.  Each â€˜MAPâ€™ shares
  storage with its sibling maps (in the same union), and the size of the
  union is the size of the largest map within it, just as with unions in
! C.  The major difference is that component references do not indicate
  which union or map the component is in (the compiler gets to figure that
  out).
  
*************** each are:
*** 3756,3762 ****
       J - INTEGER(kind=4)
       K - INTEGER(kind=8)
  
!    GNU Fortran supports these with the flag '-fdec-intrinsic-ints'.
  Intrinsics for which prefixed versions are available and in what form
  are noted in *note Intrinsic Procedures::.  The complete list of
  supported intrinsics is here:
--- 3756,3762 ----
       J - INTEGER(kind=4)
       K - INTEGER(kind=8)
  
!    GNU Fortran supports these with the flag â€˜-fdec-intrinsic-intsâ€™.
  Intrinsics for which prefixed versions are available and in what form
  are noted in *note Intrinsic Procedures::.  The complete list of
  supported intrinsics is here:
*************** supported intrinsics is here:
*** 3764,3803 ****
  Intrinsic      B              I              J              K
                                                              
  ---------------------------------------------------------------------------
! '*note ABS::'  'BABS'         'IIABS'        'JIABS'        'KIABS'
! '*note BTEST::''BBTEST'       'BITEST'       'BJTEST'       'BKTEST'
! '*note IAND::' 'BIAND'        'IIAND'        'JIAND'        'KIAND'
! '*note IBCLR::''BBCLR'        'IIBCLR'       'JIBCLR'       'KIBCLR'
! '*note IBITS::''BBITS'        'IIBITS'       'JIBITS'       'KIBITS'
! '*note IBSET::''BBSET'        'IIBSET'       'JIBSET'       'KIBSET'
! '*note IEOR::' 'BIEOR'        'IIEOR'        'JIEOR'        'KIEOR'
! '*note IOR::'  'BIOR'         'IIOR'         'JIOR'         'KIOR'
! '*note ISHFT::''BSHFT'        'IISHFT'       'JISHFT'       'KISHFT'
! '*note ISHFTC::''BSHFTC'      'IISHFTC'      'JISHFTC'      'KISHFTC'
! '*note MOD::'  'BMOD'         'IMOD'         'JMOD'         'KMOD'
! '*note NOT::'  'BNOT'         'INOT'         'JNOT'         'KNOT'
! '*note REAL::' '--'           'FLOATI'       'FLOATJ'       'FLOATK'
  
  
  File: gfortran.info,  Node: AUTOMATIC and STATIC attributes,  Next: Form feed as whitespace,  Prev: Type variants for integer intrinsics,  Up: Extensions implemented in GNU Fortran
  
! 5.1.25 'AUTOMATIC' and 'STATIC' attributes
  ------------------------------------------
  
! With '-fdec-static' GNU Fortran supports the DEC extended attributes
! 'STATIC' and 'AUTOMATIC' to provide explicit specification of entity
! storage.  These follow the syntax of the Fortran standard 'SAVE'
  attribute.
  
!    'STATIC' is exactly equivalent to 'SAVE', and specifies that an
! entity should be allocated in static memory.  As an example, 'STATIC'
  local variables retain their values across multiple calls to a function.
  
!    Entities marked 'AUTOMATIC' are stack automatic whenever possible.
! 'AUTOMATIC' is the default for local variables smaller than
! '-fmax-stack-var-size', unless '-fno-automatic' is given.  This
! attribute overrides '-fno-automatic', '-fmax-stack-var-size', and
! blanket 'SAVE' statements.
  
     Examples:
  
--- 3764,3803 ----
  Intrinsic      B              I              J              K
                                                              
  ---------------------------------------------------------------------------
! â€˜*note ABS::â€™  â€˜BABSâ€™         â€˜IIABSâ€™        â€˜JIABSâ€™        â€˜KIABSâ€™
! â€˜*note BTEST::â€™â€˜BBTESTâ€™       â€˜BITESTâ€™       â€˜BJTESTâ€™       â€˜BKTESTâ€™
! â€˜*note IAND::â€™ â€˜BIANDâ€™        â€˜IIANDâ€™        â€˜JIANDâ€™        â€˜KIANDâ€™
! â€˜*note IBCLR::â€™â€˜BBCLRâ€™        â€˜IIBCLRâ€™       â€˜JIBCLRâ€™       â€˜KIBCLRâ€™
! â€˜*note IBITS::â€™â€˜BBITSâ€™        â€˜IIBITSâ€™       â€˜JIBITSâ€™       â€˜KIBITSâ€™
! â€˜*note IBSET::â€™â€˜BBSETâ€™        â€˜IIBSETâ€™       â€˜JIBSETâ€™       â€˜KIBSETâ€™
! â€˜*note IEOR::â€™ â€˜BIEORâ€™        â€˜IIEORâ€™        â€˜JIEORâ€™        â€˜KIEORâ€™
! â€˜*note IOR::â€™  â€˜BIORâ€™         â€˜IIORâ€™         â€˜JIORâ€™         â€˜KIORâ€™
! â€˜*note ISHFT::â€™â€˜BSHFTâ€™        â€˜IISHFTâ€™       â€˜JISHFTâ€™       â€˜KISHFTâ€™
! â€˜*note ISHFTC::â€™â€˜BSHFTCâ€™      â€˜IISHFTCâ€™      â€˜JISHFTCâ€™      â€˜KISHFTCâ€™
! â€˜*note MOD::â€™  â€˜BMODâ€™         â€˜IMODâ€™         â€˜JMODâ€™         â€˜KMODâ€™
! â€˜*note NOT::â€™  â€˜BNOTâ€™         â€˜INOTâ€™         â€˜JNOTâ€™         â€˜KNOTâ€™
! â€˜*note REAL::â€™ â€˜--â€™           â€˜FLOATIâ€™       â€˜FLOATJâ€™       â€˜FLOATKâ€™
  
  
  File: gfortran.info,  Node: AUTOMATIC and STATIC attributes,  Next: Form feed as whitespace,  Prev: Type variants for integer intrinsics,  Up: Extensions implemented in GNU Fortran
  
! 5.1.25 â€˜AUTOMATICâ€™ and â€˜STATICâ€™ attributes
  ------------------------------------------
  
! With â€˜-fdec-staticâ€™ GNU Fortran supports the DEC extended attributes
! â€˜STATICâ€™ and â€˜AUTOMATICâ€™ to provide explicit specification of entity
! storage.  These follow the syntax of the Fortran standard â€˜SAVEâ€™
  attribute.
  
!    â€˜STATICâ€™ is exactly equivalent to â€˜SAVEâ€™, and specifies that an
! entity should be allocated in static memory.  As an example, â€˜STATICâ€™
  local variables retain their values across multiple calls to a function.
  
!    Entities marked â€˜AUTOMATICâ€™ are stack automatic whenever possible.
! â€˜AUTOMATICâ€™ is the default for local variables smaller than
! â€˜-fmax-stack-var-sizeâ€™, unless â€˜-fno-automaticâ€™ is given.  This
! attribute overrides â€˜-fno-automaticâ€™, â€˜-fmax-stack-var-sizeâ€™, and
! blanket â€˜SAVEâ€™ statements.
  
     Examples:
  
*************** whitespace for compatibility.
*** 3837,3847 ****
  
  File: gfortran.info,  Node: TYPE as an alias for PRINT,  Next: %LOC as an rvalue,  Prev: Form feed as whitespace,  Up: Extensions implemented in GNU Fortran
  
! 5.1.27 'TYPE' as an alias for 'PRINT'
  -------------------------------------
  
! For compatibility, GNU Fortran interprets 'TYPE' statements as 'PRINT'
! statements with the flag '-fdec'.  With this flag asserted, the
  following two examples are equivalent:
  
       TYPE *, 'hello world'
--- 3837,3847 ----
  
  File: gfortran.info,  Node: TYPE as an alias for PRINT,  Next: %LOC as an rvalue,  Prev: Form feed as whitespace,  Up: Extensions implemented in GNU Fortran
  
! 5.1.27 â€˜TYPEâ€™ as an alias for â€˜PRINTâ€™
  -------------------------------------
  
! For compatibility, GNU Fortran interprets â€˜TYPEâ€™ statements as â€˜PRINTâ€™
! statements with the flag â€˜-fdecâ€™.  With this flag asserted, the
  following two examples are equivalent:
  
       TYPE *, 'hello world'
*************** File: gfortran.info,  Node: %LOC as an r
*** 3854,3863 ****
  5.1.28 %LOC as an rvalue
  ------------------------
  
! Normally '%LOC' is allowed only in parameter lists.  However the
! intrinsic function 'LOC' does the same thing, and is usable as the
  right-hand-side of assignments.  For compatibility, GNU Fortran supports
! the use of '%LOC' as an alias for the builtin 'LOC' with '-std=legacy'.
  With this feature enabled the following two examples are equivalent:
  
       integer :: i, l
--- 3854,3863 ----
  5.1.28 %LOC as an rvalue
  ------------------------
  
! Normally â€˜%LOCâ€™ is allowed only in parameter lists.  However the
! intrinsic function â€˜LOCâ€™ does the same thing, and is usable as the
  right-hand-side of assignments.  For compatibility, GNU Fortran supports
! the use of â€˜%LOCâ€™ as an alias for the builtin â€˜LOCâ€™ with â€˜-std=legacyâ€™.
  With this feature enabled the following two examples are equivalent:
  
       integer :: i, l
*************** With this feature enabled the following
*** 3870,3880 ****
  
  File: gfortran.info,  Node: .XOR. operator,  Next: Bitwise logical operators,  Prev: %LOC as an rvalue,  Up: Extensions implemented in GNU Fortran
  
! 5.1.29 '.XOR.' operator
  -----------------------
  
! GNU Fortran supports '.XOR.' as a logical operator with '-std=legacy'
! for compatibility with legacy code.  '.XOR.' is equivalent to '.NEQV.'.
  That is, the output is true if and only if the inputs differ.
  
  
--- 3870,3880 ----
  
  File: gfortran.info,  Node: .XOR. operator,  Next: Bitwise logical operators,  Prev: %LOC as an rvalue,  Up: Extensions implemented in GNU Fortran
  
! 5.1.29 â€˜.XOR.â€™ operator
  -----------------------
  
! GNU Fortran supports â€˜.XOR.â€™ as a logical operator with â€˜-std=legacyâ€™
! for compatibility with legacy code.  â€˜.XOR.â€™ is equivalent to â€˜.NEQV.â€™.
  That is, the output is true if and only if the inputs differ.
  
  
*************** File: gfortran.info,  Node: Bitwise logi
*** 3883,3889 ****
  5.1.30 Bitwise logical operators
  --------------------------------
  
! With '-fdec', GNU Fortran relaxes the type constraints on logical
  operators to allow integer operands, and performs the corresponding
  bitwise operation instead.  This flag is for compatibility only, and
  should be avoided in new code.  Consider:
--- 3883,3889 ----
  5.1.30 Bitwise logical operators
  --------------------------------
  
! With â€˜-fdecâ€™, GNU Fortran relaxes the type constraints on logical
  operators to allow integer operands, and performs the corresponding
  bitwise operation instead.  This flag is for compatibility only, and
  should be avoided in new code.  Consider:
*************** should be avoided in new code.  Consider
*** 3893,3917 ****
         j = z'cc'
         print *, i .AND. j
  
!    In this example, compiled with '-fdec', GNU Fortran replaces the
! '.AND.' operation with a call to the intrinsic '*note IAND::' function,
! yielding the bitwise-and of 'i' and 'j'.
  
     Note that this conversion occurs if at least one operand is of
  integral type.  As a result, a logical operand is converted to an
  integer when the other operand is an integer in a logical operation.  In
! this case, '.TRUE.' is converted to '1' and '.FALSE.' to '0'.
  
     Here is the mapping of logical operator to bitwise intrinsic used
! with '-fdec':
  
  Operator       Intrinsic      Bitwise operation
  --------------------------------------------------------------------------
! '.NOT.'        'NOT'          complement (*note NOT::)
! '.AND.'        'IAND'         intersection (*note IAND::)
! '.OR.'         'IOR'          union (*note IOR::)
! '.NEQV.'       'IEOR'         exclusive or (*note IEOR::)
! '.EQV.'        'NOT IEOR'     complement of exclusive or (*note IEOR::)
  
  
  File: gfortran.info,  Node: Extended I/O specifiers,  Next: Legacy PARAMETER statements,  Prev: Bitwise logical operators,  Up: Extensions implemented in GNU Fortran
--- 3893,3917 ----
         j = z'cc'
         print *, i .AND. j
  
!    In this example, compiled with â€˜-fdecâ€™, GNU Fortran replaces the
! â€˜.AND.â€™ operation with a call to the intrinsic â€˜*note IAND::â€™ function,
! yielding the bitwise-and of â€˜iâ€™ and â€˜jâ€™.
  
     Note that this conversion occurs if at least one operand is of
  integral type.  As a result, a logical operand is converted to an
  integer when the other operand is an integer in a logical operation.  In
! this case, â€˜.TRUE.â€™ is converted to â€˜1â€™ and â€˜.FALSE.â€™ to â€˜0â€™.
  
     Here is the mapping of logical operator to bitwise intrinsic used
! with â€˜-fdecâ€™:
  
  Operator       Intrinsic      Bitwise operation
  --------------------------------------------------------------------------
! â€˜.NOT.â€™        â€˜NOTâ€™          complement (*note NOT::)
! â€˜.AND.â€™        â€˜IANDâ€™         intersection (*note IAND::)
! â€˜.OR.â€™         â€˜IORâ€™          union (*note IOR::)
! â€˜.NEQV.â€™       â€˜IEORâ€™         exclusive or (*note IEOR::)
! â€˜.EQV.â€™        â€˜NOT IEORâ€™     complement of exclusive or (*note IEOR::)
  
  
  File: gfortran.info,  Node: Extended I/O specifiers,  Next: Legacy PARAMETER statements,  Prev: Bitwise logical operators,  Up: Extensions implemented in GNU Fortran
*************** File: gfortran.info,  Node: Extended I/O
*** 3920,3934 ****
  ------------------------------
  
  GNU Fortran supports the additional legacy I/O specifiers
! 'CARRIAGECONTROL', 'READONLY', and 'SHARE' with the compile flag
! '-fdec', for compatibility.
  
! 'CARRIAGECONTROL'
!      The 'CARRIAGECONTROL' specifier allows a user to control line
       termination settings between output records for an I/O unit.  The
       specifier has no meaning for readonly files.  When
!      'CARRIAGECONTROL' is specified upon opening a unit for formatted
!      writing, the exact 'CARRIAGECONTROL' setting determines what
       characters to write between output records.  The syntax is:
  
            OPEN(..., CARRIAGECONTROL=cc)
--- 3920,3934 ----
  ------------------------------
  
  GNU Fortran supports the additional legacy I/O specifiers
! â€˜CARRIAGECONTROLâ€™, â€˜READONLYâ€™, and â€˜SHAREâ€™ with the compile flag
! â€˜-fdecâ€™, for compatibility.
  
! â€˜CARRIAGECONTROLâ€™
!      The â€˜CARRIAGECONTROLâ€™ specifier allows a user to control line
       termination settings between output records for an I/O unit.  The
       specifier has no meaning for readonly files.  When
!      â€˜CARRIAGECONTROLâ€™ is specified upon opening a unit for formatted
!      writing, the exact â€˜CARRIAGECONTROLâ€™ setting determines what
       characters to write between output records.  The syntax is:
  
            OPEN(..., CARRIAGECONTROL=cc)
*************** GNU Fortran supports the additional lega
*** 3936,3976 ****
       where _cc_ is a character expression that evaluates to one of the
       following values:
  
!      ''LIST''       One line feed between records (default)
!      ''FORTRAN''    Legacy interpretation of the first character (see below)
!      ''NONE''       No separator between records
  
!      With 'CARRIAGECONTROL='FORTRAN'', when a record is written, the
       first character of the input record is not written, and instead
       determines the output record separator as follows:
  
       Leading character      Meaning                Output separating
                                                     character(s)
       ----------------------------------------------------------------------------
!      ''+''                  Overprinting           Carriage return only
!      ''-''                  New line               Line feed and carriage
                                                     return
!      ''0''                  Skip line              Two line feeds and carriage
                                                     return
!      ''1''                  New page               Form feed and carriage
                                                     return
!      ''$''                  Prompting              Line feed (no carriage
                                                     return)
!      'CHAR(0)'              Overprinting (no       None
                              advance)
  
! 'READONLY'
!      The 'READONLY' specifier may be given upon opening a unit, and is
!      equivalent to specifying 'ACTION='READ'', except that the file may
!      not be deleted on close (i.e.  'CLOSE' with 'STATUS="DELETE"').
       The syntax is:
  
            OPEN(..., READONLY)
  
! 'SHARE'
!      The 'SHARE' specifier allows system-level locking on a unit upon
       opening it for controlled access from multiple processes/threads.
!      The 'SHARE' specifier has several forms:
  
            OPEN(..., SHARE=sh)
            OPEN(..., SHARED)
--- 3936,3976 ----
       where _cc_ is a character expression that evaluates to one of the
       following values:
  
!      â€˜'LIST'â€™       One line feed between records (default)
!      â€˜'FORTRAN'â€™    Legacy interpretation of the first character (see below)
!      â€˜'NONE'â€™       No separator between records
  
!      With â€˜CARRIAGECONTROL='FORTRAN'â€™, when a record is written, the
       first character of the input record is not written, and instead
       determines the output record separator as follows:
  
       Leading character      Meaning                Output separating
                                                     character(s)
       ----------------------------------------------------------------------------
!      â€˜'+'â€™                  Overprinting           Carriage return only
!      â€˜'-'â€™                  New line               Line feed and carriage
                                                     return
!      â€˜'0'â€™                  Skip line              Two line feeds and carriage
                                                     return
!      â€˜'1'â€™                  New page               Form feed and carriage
                                                     return
!      â€˜'$'â€™                  Prompting              Line feed (no carriage
                                                     return)
!      â€˜CHAR(0)â€™              Overprinting (no       None
                              advance)
  
! â€˜READONLYâ€™
!      The â€˜READONLYâ€™ specifier may be given upon opening a unit, and is
!      equivalent to specifying â€˜ACTION='READ'â€™, except that the file may
!      not be deleted on close (i.e.  â€˜CLOSEâ€™ with â€˜STATUS="DELETE"â€™).
       The syntax is:
  
            OPEN(..., READONLY)
  
! â€˜SHAREâ€™
!      The â€˜SHAREâ€™ specifier allows system-level locking on a unit upon
       opening it for controlled access from multiple processes/threads.
!      The â€˜SHAREâ€™ specifier has several forms:
  
            OPEN(..., SHARE=sh)
            OPEN(..., SHARED)
*************** GNU Fortran supports the additional lega
*** 3982,4009 ****
  
       Explicit form          Short form             Meaning
       ----------------------------------------------------------------------------
!      'SHARE='DENYRW''       'NOSHARED'             Exclusive (write) lock
!      'SHARE='DENYNONE''     'SHARED'               Shared (read) lock
  
       In general only one process may hold an exclusive (write) lock for
       a given file at a time, whereas many processes may hold shared
       (read) locks for the same file.
  
       The behavior of locking may vary with your operating system.  On
!      POSIX systems, locking is implemented with 'fcntl'.  Consult your
       corresponding operating system's manual pages for further details.
!      Locking via 'SHARE=' is not supported on other systems.
  
  
  File: gfortran.info,  Node: Legacy PARAMETER statements,  Next: Default exponents,  Prev: Extended I/O specifiers,  Up: Extensions implemented in GNU Fortran
  
! 5.1.32 Legacy 'PARAMETER' statements
  ------------------------------------
  
! For compatibility, GNU Fortran supports legacy 'PARAMETER' statements
! without parentheses with '-std=legacy'.  A warning is emitted if used
! with '-std=gnu', and an error is acknowledged with a real Fortran
! standard flag ('-std=f95', etc...).  These statements take the following
  form:
  
       implicit real (E)
--- 3982,4009 ----
  
       Explicit form          Short form             Meaning
       ----------------------------------------------------------------------------
!      â€˜SHARE='DENYRW'â€™       â€˜NOSHAREDâ€™             Exclusive (write) lock
!      â€˜SHARE='DENYNONE'â€™     â€˜SHAREDâ€™               Shared (read) lock
  
       In general only one process may hold an exclusive (write) lock for
       a given file at a time, whereas many processes may hold shared
       (read) locks for the same file.
  
       The behavior of locking may vary with your operating system.  On
!      POSIX systems, locking is implemented with â€˜fcntlâ€™.  Consult your
       corresponding operating system's manual pages for further details.
!      Locking via â€˜SHARE=â€™ is not supported on other systems.
  
  
  File: gfortran.info,  Node: Legacy PARAMETER statements,  Next: Default exponents,  Prev: Extended I/O specifiers,  Up: Extensions implemented in GNU Fortran
  
! 5.1.32 Legacy â€˜PARAMETERâ€™ statements
  ------------------------------------
  
! For compatibility, GNU Fortran supports legacy â€˜PARAMETERâ€™ statements
! without parentheses with â€˜-std=legacyâ€™.  A warning is emitted if used
! with â€˜-std=gnuâ€™, and an error is acknowledged with a real Fortran
! standard flag (â€˜-std=f95â€™, etc...).  These statements take the following
  form:
  
       implicit real (E)
*************** File: gfortran.info,  Node: Default expo
*** 4018,4025 ****
  ------------------------
  
  For compatibility, GNU Fortran supports a default exponent of zero in
! real constants with '-fdec'.  For example, '9e' would be interpreted as
! '9e0', rather than an error.
  
  
  File: gfortran.info,  Node: Extensions not implemented in GNU Fortran,  Next: Experimental features for future Fortran versions,  Prev: Extensions implemented in GNU Fortran,  Up: Extensions
--- 4018,4025 ----
  ------------------------
  
  For compatibility, GNU Fortran supports a default exponent of zero in
! real constants with â€˜-fdecâ€™.  For example, â€˜9eâ€™ would be interpreted as
! â€˜9e0â€™, rather than an error.
  
  
  File: gfortran.info,  Node: Extensions not implemented in GNU Fortran,  Next: Experimental features for future Fortran versions,  Prev: Extensions implemented in GNU Fortran,  Up: Extensions
*************** make code that uses them running with th
*** 4048,4059 ****
  
  File: gfortran.info,  Node: ENCODE and DECODE statements,  Next: Variable FORMAT expressions,  Up: Extensions not implemented in GNU Fortran
  
! 5.2.1 'ENCODE' and 'DECODE' statements
  --------------------------------------
  
! GNU Fortran does not support the 'ENCODE' and 'DECODE' statements.
! These statements are best replaced by 'READ' and 'WRITE' statements
! involving internal files ('CHARACTER' variables and arrays), which have
  been part of the Fortran standard since Fortran 77.  For example,
  replace a code fragment like
  
--- 4048,4059 ----
  
  File: gfortran.info,  Node: ENCODE and DECODE statements,  Next: Variable FORMAT expressions,  Up: Extensions not implemented in GNU Fortran
  
! 5.2.1 â€˜ENCODEâ€™ and â€˜DECODEâ€™ statements
  --------------------------------------
  
! GNU Fortran does not support the â€˜ENCODEâ€™ and â€˜DECODEâ€™ statements.
! These statements are best replaced by â€˜READâ€™ and â€˜WRITEâ€™ statements
! involving internal files (â€˜CHARACTERâ€™ variables and arrays), which have
  been part of the Fortran standard since Fortran 77.  For example,
  replace a code fragment like
  
*************** with the following:
*** 4090,4100 ****
  
  File: gfortran.info,  Node: Variable FORMAT expressions,  Next: Alternate complex function syntax,  Prev: ENCODE and DECODE statements,  Up: Extensions not implemented in GNU Fortran
  
! 5.2.2 Variable 'FORMAT' expressions
  -----------------------------------
  
! A variable 'FORMAT' expression is format statement that includes angle
! brackets enclosing a Fortran expression: 'FORMAT(I<N>)'.  GNU Fortran
  does not support this legacy extension.  The effect of variable format
  expressions can be reproduced by using the more powerful (and standard)
  combination of internal output and string formats.  For example, replace
--- 4090,4100 ----
  
  File: gfortran.info,  Node: Variable FORMAT expressions,  Next: Alternate complex function syntax,  Prev: ENCODE and DECODE statements,  Up: Extensions not implemented in GNU Fortran
  
! 5.2.2 Variable â€˜FORMATâ€™ expressions
  -----------------------------------
  
! A variable â€˜FORMATâ€™ expression is format statement that includes angle
! brackets enclosing a Fortran expression: â€˜FORMAT(I<N>)â€™.  GNU Fortran
  does not support this legacy extension.  The effect of variable format
  expressions can be reproduced by using the more powerful (and standard)
  combination of internal output and string formats.  For example, replace
*************** File: gfortran.info,  Node: Alternate co
*** 4129,4182 ****
  5.2.3 Alternate complex function syntax
  ---------------------------------------
  
! Some Fortran compilers, including 'g77', let the user declare complex
! functions with the syntax 'COMPLEX FUNCTION name*16()', as well as
! 'COMPLEX*16 FUNCTION name()'.  Both are nonstandard legacy extensions.
! 'gfortran' accepts the latter form, which is more common, but not the
  former.
  
  
  File: gfortran.info,  Node: Volatile COMMON blocks,  Next: OPEN( ... NAME=),  Prev: Alternate complex function syntax,  Up: Extensions not implemented in GNU Fortran
  
! 5.2.4 Volatile 'COMMON' blocks
  ------------------------------
  
! Some Fortran compilers, including 'g77', let the user declare 'COMMON'
! with the 'VOLATILE' attribute.  This is invalid standard Fortran syntax
! and is not supported by 'gfortran'.  Note that 'gfortran' accepts
! 'VOLATILE' variables in 'COMMON' blocks since revision 4.3.
  
  
  File: gfortran.info,  Node: OPEN( ... NAME=),  Next: Q edit descriptor,  Prev: Volatile COMMON blocks,  Up: Extensions not implemented in GNU Fortran
  
! 5.2.5 'OPEN( ... NAME=)'
  ------------------------
  
! Some Fortran compilers, including 'g77', let the user declare 'OPEN( ...
! NAME=)'.  This is invalid standard Fortran syntax and is not supported
! by 'gfortran'.  'OPEN( ... NAME=)' should be replaced with 'OPEN( ...
! FILE=)'.
  
  
  File: gfortran.info,  Node: Q edit descriptor,  Prev: OPEN( ... NAME=),  Up: Extensions not implemented in GNU Fortran
  
! 5.2.6 'Q' edit descriptor
  -------------------------
  
! Some Fortran compilers provide the 'Q' edit descriptor, which transfers
  the number of characters left within an input record into an integer
  variable.
  
!    A direct replacement of the 'Q' edit descriptor is not available in
! 'gfortran'.  How to replicate its functionality using
  standard-conforming code depends on what the intent of the original code
  is.
  
!    Options to replace 'Q' may be to read the whole line into a character
  variable and then counting the number of non-blank characters left using
! 'LEN_TRIM'.  Another method may be to use formatted stream, read the
! data up to the position where the 'Q' descriptor occurred, use 'INQUIRE'
! to get the file position, count the characters up to the next 'NEW_LINE'
  and then start reading from the position marked previously.
  
  
--- 4129,4182 ----
  5.2.3 Alternate complex function syntax
  ---------------------------------------
  
! Some Fortran compilers, including â€˜g77â€™, let the user declare complex
! functions with the syntax â€˜COMPLEX FUNCTION name*16()â€™, as well as
! â€˜COMPLEX*16 FUNCTION name()â€™.  Both are nonstandard legacy extensions.
! â€˜gfortranâ€™ accepts the latter form, which is more common, but not the
  former.
  
  
  File: gfortran.info,  Node: Volatile COMMON blocks,  Next: OPEN( ... NAME=),  Prev: Alternate complex function syntax,  Up: Extensions not implemented in GNU Fortran
  
! 5.2.4 Volatile â€˜COMMONâ€™ blocks
  ------------------------------
  
! Some Fortran compilers, including â€˜g77â€™, let the user declare â€˜COMMONâ€™
! with the â€˜VOLATILEâ€™ attribute.  This is invalid standard Fortran syntax
! and is not supported by â€˜gfortranâ€™.  Note that â€˜gfortranâ€™ accepts
! â€˜VOLATILEâ€™ variables in â€˜COMMONâ€™ blocks since revision 4.3.
  
  
  File: gfortran.info,  Node: OPEN( ... NAME=),  Next: Q edit descriptor,  Prev: Volatile COMMON blocks,  Up: Extensions not implemented in GNU Fortran
  
! 5.2.5 â€˜OPEN( ... NAME=)â€™
  ------------------------
  
! Some Fortran compilers, including â€˜g77â€™, let the user declare â€˜OPEN( ...
! NAME=)â€™.  This is invalid standard Fortran syntax and is not supported
! by â€˜gfortranâ€™.  â€˜OPEN( ... NAME=)â€™ should be replaced with â€˜OPEN( ...
! FILE=)â€™.
  
  
  File: gfortran.info,  Node: Q edit descriptor,  Prev: OPEN( ... NAME=),  Up: Extensions not implemented in GNU Fortran
  
! 5.2.6 â€˜Qâ€™ edit descriptor
  -------------------------
  
! Some Fortran compilers provide the â€˜Qâ€™ edit descriptor, which transfers
  the number of characters left within an input record into an integer
  variable.
  
!    A direct replacement of the â€˜Qâ€™ edit descriptor is not available in
! â€˜gfortranâ€™.  How to replicate its functionality using
  standard-conforming code depends on what the intent of the original code
  is.
  
!    Options to replace â€˜Qâ€™ may be to read the whole line into a character
  variable and then counting the number of non-blank characters left using
! â€˜LEN_TRIMâ€™.  Another method may be to use formatted stream, read the
! data up to the position where the â€˜Qâ€™ descriptor occurred, use â€˜INQUIREâ€™
! to get the file position, count the characters up to the next â€˜NEW_LINEâ€™
  and then start reading from the position marked previously.
  
  
*************** File: gfortran.info,  Node: Unsigned int
*** 4204,4230 ****
  5.3.1 Unsigned integers
  -----------------------
  
! If the '-funsigned' option is given, GNU Fortran supports unsigned
  integers according to J3/24-116
  (https://j3-fortran.org/doc/year/24/24-116.txt).  The data type is
! called 'UNSIGNED'.  For an unsigned type with 'n' bits, it implements
! integer arithmetic modulo '2**n', comparable to the 'unsigned' data type
  in C.
  
!    The data type has 'KIND' numbers comparable to other Fortran data
! types, which can be selected via the 'SELECTED_UNSIGNED_KIND' function.
  
!    Mixed arithmetic, comparisons and assignment between 'UNSIGNED' and
  other types are only possible via explicit conversion.  Conversion from
! 'UNSIGNED' to other types is done via type conversion functions like
! 'INT' or 'REAL'.  Conversion from other types to 'UNSIGNED' is done via
! 'UINT'.  Unsigned variables cannot be used as index variables in 'DO'
  loops or as array indices.
  
!    Unsigned numbers have a trailing 'u' as suffix, optionally followed
! by a 'KIND' number separated by an underscore.
  
!    Input and output can be done using the 'I', 'B', 'O' and 'Z'
  descriptors, plus unformatted I/O.
  
     Here is a small, somewhat contrived example of their use:
--- 4204,4230 ----
  5.3.1 Unsigned integers
  -----------------------
  
! If the â€˜-funsignedâ€™ option is given, GNU Fortran supports unsigned
  integers according to J3/24-116
  (https://j3-fortran.org/doc/year/24/24-116.txt).  The data type is
! called â€˜UNSIGNEDâ€™.  For an unsigned type with â€˜nâ€™ bits, it implements
! integer arithmetic modulo â€˜2**nâ€™, comparable to the â€˜unsignedâ€™ data type
  in C.
  
!    The data type has â€˜KINDâ€™ numbers comparable to other Fortran data
! types, which can be selected via the â€˜SELECTED_UNSIGNED_KINDâ€™ function.
  
!    Mixed arithmetic, comparisons and assignment between â€˜UNSIGNEDâ€™ and
  other types are only possible via explicit conversion.  Conversion from
! â€˜UNSIGNEDâ€™ to other types is done via type conversion functions like
! â€˜INTâ€™ or â€˜REALâ€™.  Conversion from other types to â€˜UNSIGNEDâ€™ is done via
! â€˜UINTâ€™.  Unsigned variables cannot be used as index variables in â€˜DOâ€™
  loops or as array indices.
  
!    Unsigned numbers have a trailing â€˜uâ€™ as suffix, optionally followed
! by a â€˜KINDâ€™ number separated by an underscore.
  
!    Input and output can be done using the â€˜Iâ€™, â€˜Bâ€™, â€˜Oâ€™ and â€˜Zâ€™
  descriptors, plus unformatted I/O.
  
     Here is a small, somewhat contrived example of their use:
*************** which outputs the number 184467440737095
*** 4238,4327 ****
  
     Arithmetic operations work on unsigned integers, also for
  exponentiation.  As an extension to J3/24-116.txt, unary minus and
! exponentiation of unsigned integers are permitted unless '-pedantic' is
  in force.
  
     In intrinsic procedures, unsigned arguments are typically permitted
  for arguments for the data to be processed, analogous to the use of
! 'REAL' arguments.  Unsigned values are prohibited as index variables in
! 'DO' loops and as array indices.
  
     Unsigned numbers can be read and written using list-directed,
! formatted and unformatted I/O. For formatted I/O, the 'B', 'I', 'O' and
! 'Z' descriptors are valid.  Negative values and values that would
! overflow are rejected with '-pedantic'.
  
!    'SELECT CASE' is supported for unsigned integers.
  
     The following intrinsics take unsigned arguments:
!    * 'BGE', *note BGE::
!    * 'BGT', *note BGT::
!    * 'BIT_SIZE', *note BIT_SIZE::
!    * 'BLE', *note BLE::
!    * 'BLT', *note BLT::
!    * 'CMPLX', *note CMPLX::
!    * 'CSHIFT', *note CSHIFT::
!    * 'DIGITS', *note DIGITS::
!    * 'DOT_PRODUCT', *note DOT_PRODUCT::
!    * 'DSHIFTL', *note DSHIFTL::
!    * 'DSHIFTR', *note DSHIFTR::
!    * 'EOSHIFT', *note EOSHIFT::
!    * 'FINDLOC', *note FINDLOC::
!    * 'HUGE', *note HUGE::
!    * 'IALL', *note IALL::
!    * 'IAND', *note IAND::
!    * 'IANY', *note IANY::
!    * 'IBCLR', *note IBCLR::
!    * 'IBITS', *note IBITS::
!    * 'IBSET', *note IBSET::
!    * 'IEOR', *note IEOR::
!    * 'INT', *note INT::
!    * 'IOR', *note IOR::
!    * 'IPARITY', *note IPARITY::
!    * 'ISHFT', *note ISHFT::
!    * 'ISHFTC', *note ISHFTC::
!    * 'MATMUL', *note MATMUL::
!    * 'MAX', *note MAX::
!    * 'MAXLOC', *note MAXLOC::
!    * 'MAXVAL', *note MAXVAL::
!    * 'MERGE', *note MERGE::
!    * 'MERGE_BITS', *note MERGE_BITS::
!    * 'MIN', *note MIN::
!    * 'MINLOC', *note MINLOC::
!    * 'MINVAL', *note MINVAL::
!    * 'MOD', *note MOD::
!    * 'MODULO', *note MODULO::
!    * 'MVBITS', *note MVBITS::
!    * 'NOT', *note NOT::
!    * 'OUT_OF_RANGE', *note OUT_OF_RANGE::
!    * 'PRODUCT', *note PRODUCT::
!    * 'RANDOM_NUMBER', *note RANDOM_NUMBER::
!    * 'RANGE', *note RANGE::
!    * 'REAL', *note REAL::
!    * 'SHIFTA', *note SHIFTA::
!    * 'SHIFTL', *note SHIFTL::
!    * 'SHIFTR', *note SHIFTR::
!    * 'SUM', *note SUM::
!    * 'TRANSPOSE', *note TRANSPOSE::
!    * 'TRANSFER', *note TRANSFER::
  
!    The following intrinsics are enabled with '-funsigned':
!    * 'UINT', *note UINT::
!    * 'UMASKL', *note UMASKL::
!    * 'UMASKR', *note UMASKR::
!    * 'SELECTED_UNSIGNED_KIND', *note SELECTED_UNSIGNED_KIND::
  
     The following constants have been added to the intrinsic
! 'ISO_C_BINDING' module: 'c_unsigned', 'c_unsigned_short',
! 'c_unsigned_char', 'c_unsigned_long', 'c_unsigned_long_long',
! 'c_uintmax_t', 'c_uint8_t', 'c_uint16_t', 'c_uint32_t', 'c_uint64_t',
! 'c_uint128_t', 'c_uint_fast8_t', 'c_uint_fast16_t', 'c_uint_fast32_t',
! 'c_uint_fast64_t', 'c_uint_fast128_t', 'c_uint_least8_t',
! 'c_uint_least16_t', 'c_uint_least32_t', 'c_uint_least64_t' and
! 'c_uint_least128_t'.
  
     The following constants have been added to the intrinsic
! 'ISO_FORTRAN_ENV' module: 'uint8', 'uint16', 'uint32' and 'uint64'.
  
  
  File: gfortran.info,  Node: Mixed-Language Programming,  Next: Coarray Programming,  Prev: Extensions,  Up: Top
--- 4238,4327 ----
  
     Arithmetic operations work on unsigned integers, also for
  exponentiation.  As an extension to J3/24-116.txt, unary minus and
! exponentiation of unsigned integers are permitted unless â€˜-pedanticâ€™ is
  in force.
  
     In intrinsic procedures, unsigned arguments are typically permitted
  for arguments for the data to be processed, analogous to the use of
! â€˜REALâ€™ arguments.  Unsigned values are prohibited as index variables in
! â€˜DOâ€™ loops and as array indices.
  
     Unsigned numbers can be read and written using list-directed,
! formatted and unformatted I/O. For formatted I/O, the â€˜Bâ€™, â€˜Iâ€™, â€˜Oâ€™ and
! â€˜Zâ€™ descriptors are valid.  Negative values and values that would
! overflow are rejected with â€˜-pedanticâ€™.
  
!    â€˜SELECT CASEâ€™ is supported for unsigned integers.
  
     The following intrinsics take unsigned arguments:
!    â€¢ â€˜BGEâ€™, *note BGE::
!    â€¢ â€˜BGTâ€™, *note BGT::
!    â€¢ â€˜BIT_SIZEâ€™, *note BIT_SIZE::
!    â€¢ â€˜BLEâ€™, *note BLE::
!    â€¢ â€˜BLTâ€™, *note BLT::
!    â€¢ â€˜CMPLXâ€™, *note CMPLX::
!    â€¢ â€˜CSHIFTâ€™, *note CSHIFT::
!    â€¢ â€˜DIGITSâ€™, *note DIGITS::
!    â€¢ â€˜DOT_PRODUCTâ€™, *note DOT_PRODUCT::
!    â€¢ â€˜DSHIFTLâ€™, *note DSHIFTL::
!    â€¢ â€˜DSHIFTRâ€™, *note DSHIFTR::
!    â€¢ â€˜EOSHIFTâ€™, *note EOSHIFT::
!    â€¢ â€˜FINDLOCâ€™, *note FINDLOC::
!    â€¢ â€˜HUGEâ€™, *note HUGE::
!    â€¢ â€˜IALLâ€™, *note IALL::
!    â€¢ â€˜IANDâ€™, *note IAND::
!    â€¢ â€˜IANYâ€™, *note IANY::
!    â€¢ â€˜IBCLRâ€™, *note IBCLR::
!    â€¢ â€˜IBITSâ€™, *note IBITS::
!    â€¢ â€˜IBSETâ€™, *note IBSET::
!    â€¢ â€˜IEORâ€™, *note IEOR::
!    â€¢ â€˜INTâ€™, *note INT::
!    â€¢ â€˜IORâ€™, *note IOR::
!    â€¢ â€˜IPARITYâ€™, *note IPARITY::
!    â€¢ â€˜ISHFTâ€™, *note ISHFT::
!    â€¢ â€˜ISHFTCâ€™, *note ISHFTC::
!    â€¢ â€˜MATMULâ€™, *note MATMUL::
!    â€¢ â€˜MAXâ€™, *note MAX::
!    â€¢ â€˜MAXLOCâ€™, *note MAXLOC::
!    â€¢ â€˜MAXVALâ€™, *note MAXVAL::
!    â€¢ â€˜MERGEâ€™, *note MERGE::
!    â€¢ â€˜MERGE_BITSâ€™, *note MERGE_BITS::
!    â€¢ â€˜MINâ€™, *note MIN::
!    â€¢ â€˜MINLOCâ€™, *note MINLOC::
!    â€¢ â€˜MINVALâ€™, *note MINVAL::
!    â€¢ â€˜MODâ€™, *note MOD::
!    â€¢ â€˜MODULOâ€™, *note MODULO::
!    â€¢ â€˜MVBITSâ€™, *note MVBITS::
!    â€¢ â€˜NOTâ€™, *note NOT::
!    â€¢ â€˜OUT_OF_RANGEâ€™, *note OUT_OF_RANGE::
!    â€¢ â€˜PRODUCTâ€™, *note PRODUCT::
!    â€¢ â€˜RANDOM_NUMBERâ€™, *note RANDOM_NUMBER::
!    â€¢ â€˜RANGEâ€™, *note RANGE::
!    â€¢ â€˜REALâ€™, *note REAL::
!    â€¢ â€˜SHIFTAâ€™, *note SHIFTA::
!    â€¢ â€˜SHIFTLâ€™, *note SHIFTL::
!    â€¢ â€˜SHIFTRâ€™, *note SHIFTR::
!    â€¢ â€˜SUMâ€™, *note SUM::
!    â€¢ â€˜TRANSPOSEâ€™, *note TRANSPOSE::
!    â€¢ â€˜TRANSFERâ€™, *note TRANSFER::
  
!    The following intrinsics are enabled with â€˜-funsignedâ€™:
!    â€¢ â€˜UINTâ€™, *note UINT::
!    â€¢ â€˜UMASKLâ€™, *note UMASKL::
!    â€¢ â€˜UMASKRâ€™, *note UMASKR::
!    â€¢ â€˜SELECTED_UNSIGNED_KINDâ€™, *note SELECTED_UNSIGNED_KIND::
  
     The following constants have been added to the intrinsic
! â€˜ISO_C_BINDINGâ€™ module: â€˜c_unsignedâ€™, â€˜c_unsigned_shortâ€™,
! â€˜c_unsigned_charâ€™, â€˜c_unsigned_longâ€™, â€˜c_unsigned_long_longâ€™,
! â€˜c_uintmax_tâ€™, â€˜c_uint8_tâ€™, â€˜c_uint16_tâ€™, â€˜c_uint32_tâ€™, â€˜c_uint64_tâ€™,
! â€˜c_uint128_tâ€™, â€˜c_uint_fast8_tâ€™, â€˜c_uint_fast16_tâ€™, â€˜c_uint_fast32_tâ€™,
! â€˜c_uint_fast64_tâ€™, â€˜c_uint_fast128_tâ€™, â€˜c_uint_least8_tâ€™,
! â€˜c_uint_least16_tâ€™, â€˜c_uint_least32_tâ€™, â€˜c_uint_least64_tâ€™ and
! â€˜c_uint_least128_tâ€™.
  
     The following constants have been added to the intrinsic
! â€˜ISO_FORTRAN_ENVâ€™ module: â€˜uint8â€™, â€˜uint16â€™, â€˜uint32â€™ and â€˜uint64â€™.
  
  
  File: gfortran.info,  Node: Mixed-Language Programming,  Next: Coarray Programming,  Prev: Extensions,  Up: Top
*************** cases, use of the C Binding features of
*** 4342,4355 ****
  standards is sufficient.
  
     For example, it is possible to mix Fortran code with C++ code as well
! as C, if you declare the interface functions as 'extern "C"' on the C++
! side and 'BIND(C)' on the Fortran side, and follow the rules for
  interoperability with C. Note that you cannot manipulate C++ class
  objects in Fortran or vice versa except as opaque pointers.
  
!    You can use the 'gfortran' command to link both Fortran and
! non-Fortran code into the same program, or you can use 'gcc' or 'g++' if
! you also add an explicit '-lgfortran' option to link with the Fortran
  library.  If your main program is written in C or some other language
  instead of Fortran, see *note Non-Fortran Main Program::, below.
  
--- 4342,4355 ----
  standards is sufficient.
  
     For example, it is possible to mix Fortran code with C++ code as well
! as C, if you declare the interface functions as â€˜extern "C"â€™ on the C++
! side and â€˜BIND(C)â€™ on the Fortran side, and follow the rules for
  interoperability with C. Note that you cannot manipulate C++ class
  objects in Fortran or vice versa except as opaque pointers.
  
!    You can use the â€˜gfortranâ€™ command to link both Fortran and
! non-Fortran code into the same program, or you can use â€˜gccâ€™ or â€˜g++â€™ if
! you also add an explicit â€˜-lgfortranâ€™ option to link with the Fortran
  library.  If your main program is written in C or some other language
  instead of Fortran, see *note Non-Fortran Main Program::, below.
  
*************** File: gfortran.info,  Node: Interoperabi
*** 4371,4377 ****
  
  Since Fortran 2003 (ISO/IEC 1539-1:2004(E)) there is a standardized way
  to generate procedure and derived-type declarations and global variables
! that are interoperable with C (ISO/IEC 9899:1999).  The 'BIND(C)'
  attribute has been added to inform the compiler that a symbol shall be
  interoperable with C; also, some constraints are added.  Note, however,
  that not all C features have a Fortran equivalent or vice versa.  For
--- 4371,4377 ----
  
  Since Fortran 2003 (ISO/IEC 1539-1:2004(E)) there is a standardized way
  to generate procedure and derived-type declarations and global variables
! that are interoperable with C (ISO/IEC 9899:1999).  The â€˜BIND(C)â€™
  attribute has been added to inform the compiler that a symbol shall be
  interoperable with C; also, some constraints are added.  Note, however,
  that not all C features have a Fortran equivalent or vice versa.  For
*************** number of arguments have an equivalent i
*** 4380,4389 ****
  
     Note that array dimensions are reversely ordered in C and that arrays
  in C always start with index 0 while in Fortran they start by default
! with 1.  Thus, an array declaration 'A(n,m)' in Fortran matches
! 'A[m][n]' in C and accessing the element 'A(i,j)' matches 'A[j-1][i-1]'.
! The element following 'A(i,j)' (C: 'A[j-1][i-1]'; assuming i < n) in
! memory is 'A(i+1,j)' (C: 'A[j-1][i]').
  
  
  File: gfortran.info,  Node: Intrinsic Types,  Next: Derived Types and struct,  Up: Interoperability with C
--- 4380,4389 ----
  
     Note that array dimensions are reversely ordered in C and that arrays
  in C always start with index 0 while in Fortran they start by default
! with 1.  Thus, an array declaration â€˜A(n,m)â€™ in Fortran matches
! â€˜A[m][n]â€™ in C and accessing the element â€˜A(i,j)â€™ matches â€˜A[j-1][i-1]â€™.
! The element following â€˜A(i,j)â€™ (C: â€˜A[j-1][i-1]â€™; assuming i < n) in
! memory is â€˜A(i+1,j)â€™ (C: â€˜A[j-1][i]â€™).
  
  
  File: gfortran.info,  Node: Intrinsic Types,  Next: Derived Types and struct,  Up: Interoperability with C
*************** File: gfortran.info,  Node: Intrinsic Ty
*** 4393,4410 ****
  
  In order to ensure that exactly the same variable type and kind is used
  in C and Fortran, you should use the named constants for kind parameters
! that are defined in the 'ISO_C_BINDING' intrinsic module.  That module
  contains named constants of character type representing the escaped
  special characters in C, such as newline.  For a list of the constants,
  see *note ISO_C_BINDING::.
  
     For logical types, please note that the Fortran standard only
! guarantees interoperability between C99's '_Bool' and Fortran's
! 'C_Bool'-kind logicals and C99 defines that 'true' has the value 1 and
! 'false' the value 0.  Using any other integer value with GNU Fortran's
! 'LOGICAL' (with any kind parameter) gives an undefined result.  (Passing
! other integer values than 0 and 1 to GCC's '_Bool' is also undefined,
! unless the integer is explicitly or implicitly casted to '_Bool'.)
  
  
  File: gfortran.info,  Node: Derived Types and struct,  Next: Interoperable Global Variables,  Prev: Intrinsic Types,  Up: Interoperability with C
--- 4393,4410 ----
  
  In order to ensure that exactly the same variable type and kind is used
  in C and Fortran, you should use the named constants for kind parameters
! that are defined in the â€˜ISO_C_BINDINGâ€™ intrinsic module.  That module
  contains named constants of character type representing the escaped
  special characters in C, such as newline.  For a list of the constants,
  see *note ISO_C_BINDING::.
  
     For logical types, please note that the Fortran standard only
! guarantees interoperability between C99's â€˜_Boolâ€™ and Fortran's
! â€˜C_Boolâ€™-kind logicals and C99 defines that â€˜trueâ€™ has the value 1 and
! â€˜falseâ€™ the value 0.  Using any other integer value with GNU Fortran's
! â€˜LOGICALâ€™ (with any kind parameter) gives an undefined result.  (Passing
! other integer values than 0 and 1 to GCC's â€˜_Boolâ€™ is also undefined,
! unless the integer is explicitly or implicitly casted to â€˜_Boolâ€™.)
  
  
  File: gfortran.info,  Node: Derived Types and struct,  Next: Interoperable Global Variables,  Prev: Intrinsic Types,  Up: Interoperability with C
*************** File: gfortran.info,  Node: Derived Type
*** 4412,4418 ****
  6.1.2 Derived Types and struct
  ------------------------------
  
! For compatibility of derived types with 'struct', use the 'BIND(C)'
  attribute in the type declaration.  For instance, the following type
  declaration
  
--- 4412,4418 ----
  6.1.2 Derived Types and struct
  ------------------------------
  
! For compatibility of derived types with â€˜structâ€™, use the â€˜BIND(C)â€™
  attribute in the type declaration.  For instance, the following type
  declaration
  
*************** declaration
*** 4425,4431 ****
          CHARACTER(KIND=C_CHAR) :: str(5)
        END TYPE
  
! matches the following 'struct' declaration in C
  
        struct {
          int i1, i2;
--- 4425,4431 ----
          CHARACTER(KIND=C_CHAR) :: str(5)
        END TYPE
  
! matches the following â€˜structâ€™ declaration in C
  
        struct {
          int i1, i2;
*************** matches the following 'struct' declarati
*** 4437,4445 ****
        } myType;
  
     Derived types with the C binding attribute shall not have the
! 'sequence' attribute, type parameters, the 'extends' attribute, nor
  type-bound procedures.  Every component must be of interoperable type
! and kind and may not have the 'pointer' or 'allocatable' attribute.  The
  names of the components are irrelevant for interoperability.
  
     As there exist no direct Fortran equivalents, neither unions nor
--- 4437,4445 ----
        } myType;
  
     Derived types with the C binding attribute shall not have the
! â€˜sequenceâ€™ attribute, type parameters, the â€˜extendsâ€™ attribute, nor
  type-bound procedures.  Every component must be of interoperable type
! and kind and may not have the â€˜pointerâ€™ or â€˜allocatableâ€™ attribute.  The
  names of the components are irrelevant for interoperability.
  
     As there exist no direct Fortran equivalents, neither unions nor
*************** File: gfortran.info,  Node: Interoperabl
*** 4454,4461 ****
  
  Variables can be made accessible from C using the C binding attribute,
  optionally together with specifying a binding name.  Those variables
! have to be declared in the declaration part of a 'MODULE', be of
! interoperable type, and have neither the 'pointer' nor the 'allocatable'
  attribute.
  
         MODULE m
--- 4454,4461 ----
  
  Variables can be made accessible from C using the C binding attribute,
  optionally together with specifying a binding name.  Those variables
! have to be declared in the declaration part of a â€˜MODULEâ€™, be of
! interoperable type, and have neither the â€˜pointerâ€™ nor the â€˜allocatableâ€™
  attribute.
  
         MODULE m
*************** attribute.
*** 4465,4477 ****
           type(myType), bind(C) :: tp
         END MODULE
  
!    Here, '_MyProject_flags' is the case-sensitive name of the variable
! as seen from C programs while 'global_flag' is the case-insensitive name
  as seen from Fortran.  If no binding name is specified, as for TP, the C
  binding name is the (lowercase) Fortran binding name.  If a binding name
  is specified, only a single variable may be after the double colon.
  Note of warning: You cannot use a global variable to access ERRNO of the
! C library as the C standard allows it to be a macro.  Use the 'IERRNO'
  intrinsic (GNU extension) instead.
  
  
--- 4465,4477 ----
           type(myType), bind(C) :: tp
         END MODULE
  
!    Here, â€˜_MyProject_flagsâ€™ is the case-sensitive name of the variable
! as seen from C programs while â€˜global_flagâ€™ is the case-insensitive name
  as seen from Fortran.  If no binding name is specified, as for TP, the C
  binding name is the (lowercase) Fortran binding name.  If a binding name
  is specified, only a single variable may be after the double colon.
  Note of warning: You cannot use a global variable to access ERRNO of the
! C library as the C standard allows it to be a macro.  Use the â€˜IERRNOâ€™
  intrinsic (GNU extension) instead.
  
  
*************** File: gfortran.info,  Node: Interoperabl
*** 4480,4493 ****
  6.1.4 Interoperable Subroutines and Functions
  ---------------------------------------------
  
! Subroutines and functions have to have the 'BIND(C)' attribute to be
  compatible with C. The dummy argument declaration is relatively
  straightforward.  However, one needs to be careful because C uses
  call-by-value by default while Fortran behaves usually similar to
  call-by-reference.  Furthermore, strings and pointers are handled
  differently.
  
!    To pass a variable by value, use the 'VALUE' attribute.  Thus, the
  following C prototype
  
       int func(int i, int *j)
--- 4480,4493 ----
  6.1.4 Interoperable Subroutines and Functions
  ---------------------------------------------
  
! Subroutines and functions have to have the â€˜BIND(C)â€™ attribute to be
  compatible with C. The dummy argument declaration is relatively
  straightforward.  However, one needs to be careful because C uses
  call-by-value by default while Fortran behaves usually similar to
  call-by-reference.  Furthermore, strings and pointers are handled
  differently.
  
!    To pass a variable by value, use the â€˜VALUEâ€™ attribute.  Thus, the
  following C prototype
  
       int func(int i, int *j)
*************** matches the Fortran declaration
*** 4499,4511 ****
           integer(c_int), VALUE :: i
           integer(c_int) :: j
  
!    Note that pointer arguments also frequently need the 'VALUE'
  attribute, see *note Working with C Pointers::.
  
     Strings are handled quite differently in C and Fortran.  In C a
! string is a 'NUL'-terminated array of characters while in Fortran each
  string has a length associated with it and is thus not terminated (by
! e.g.  'NUL').  For example, if you want to use the following C function,
  
         #include <stdio.h>
         void print_C(char *string) /* equivalent: char string[]  */
--- 4499,4511 ----
           integer(c_int), VALUE :: i
           integer(c_int) :: j
  
!    Note that pointer arguments also frequently need the â€˜VALUEâ€™
  attribute, see *note Working with C Pointers::.
  
     Strings are handled quite differently in C and Fortran.  In C a
! string is a â€˜NULâ€™-terminated array of characters while in Fortran each
  string has a length associated with it and is thus not terminated (by
! e.g.  â€˜NULâ€™).  For example, if you want to use the following C function,
  
         #include <stdio.h>
         void print_C(char *string) /* equivalent: char string[]  */
*************** to print "Hello World" from Fortran, you
*** 4524,4543 ****
         end interface
         call print_c(C_CHAR_"Hello World"//C_NULL_CHAR)
  
!    As the example shows, you need to ensure that the string is 'NUL'
! terminated.  Additionally, the dummy argument STRING of 'print_C' is a
! length-one assumed-size array; using 'character(len=*)' is not allowed.
! The example above uses 'c_char_"Hello World"' to ensure the string
  literal has the right type; typically the default character kind and
! 'c_char' are the same and thus '"Hello World"' is equivalent.  However,
  the standard does not guarantee this.
  
     The use of strings is now further illustrated using the C library
! function 'strncpy', whose prototype is
  
         char *strncpy(char *restrict s1, const char *restrict s2, size_t n);
  
! The function 'strncpy' copies at most N characters from string S2 to S1
  and returns S1.  In the following example, we ignore the return value:
  
         use iso_c_binding
--- 4524,4543 ----
         end interface
         call print_c(C_CHAR_"Hello World"//C_NULL_CHAR)
  
!    As the example shows, you need to ensure that the string is â€˜NULâ€™
! terminated.  Additionally, the dummy argument STRING of â€˜print_Câ€™ is a
! length-one assumed-size array; using â€˜character(len=*)â€™ is not allowed.
! The example above uses â€˜c_char_"Hello World"â€™ to ensure the string
  literal has the right type; typically the default character kind and
! â€˜c_charâ€™ are the same and thus â€˜"Hello World"â€™ is equivalent.  However,
  the standard does not guarantee this.
  
     The use of strings is now further illustrated using the C library
! function â€˜strncpyâ€™, whose prototype is
  
         char *strncpy(char *restrict s1, const char *restrict s2, size_t n);
  
! The function â€˜strncpyâ€™ copies at most N characters from string S2 to S1
  and returns S1.  In the following example, we ignore the return value:
  
         use iso_c_binding
*************** File: gfortran.info,  Node: Working with
*** 4569,4578 ****
  -----------------------------
  
  C pointers are represented in Fortran via the special opaque derived
! type 'type(c_ptr)' (with private components).  C pointers are distinct
! from Fortran objects with the 'POINTER' attribute.  Thus one needs to
  use intrinsic conversion procedures to convert from or to C pointers.
! For some applications, using an assumed type ('TYPE(*)') can be an
  alternative to a C pointer, and you can also use library routines to
  access Fortran pointers from C. See *note Further Interoperability of
  Fortran with C::.
--- 4569,4578 ----
  -----------------------------
  
  C pointers are represented in Fortran via the special opaque derived
! type â€˜type(c_ptr)â€™ (with private components).  C pointers are distinct
! from Fortran objects with the â€˜POINTERâ€™ attribute.  Thus one needs to
  use intrinsic conversion procedures to convert from or to C pointers.
! For some applications, using an assumed type (â€˜TYPE(*)â€™) can be an
  alternative to a C pointer, and you can also use library routines to
  access Fortran pointers from C. See *note Further Interoperability of
  Fortran with C::.
*************** Fortran with C::.
*** 4590,4605 ****
         call c_f_pointer(cptr2, ps)
         call c_f_pointer(cptr2, pa, shape=[7])
  
!    When converting C to Fortran arrays, the one-dimensional 'SHAPE'
  argument has to be passed.
  
     If a pointer is a dummy argument of an interoperable procedure, it
! usually has to be declared using the 'VALUE' attribute.  'void*' matches
! 'TYPE(C_PTR), VALUE', while 'TYPE(C_PTR)' alone matches 'void**'.
  
     Procedure pointers are handled analogously to pointers; the C type is
! 'TYPE(C_FUNPTR)' and the intrinsic conversion procedures are
! 'C_F_PROCPOINTER' and 'C_FUNLOC'.
  
     Let us consider two examples of actually passing a procedure pointer
  from C to Fortran and vice versa.  Note that these examples are also
--- 4590,4605 ----
         call c_f_pointer(cptr2, ps)
         call c_f_pointer(cptr2, pa, shape=[7])
  
!    When converting C to Fortran arrays, the one-dimensional â€˜SHAPEâ€™
  argument has to be passed.
  
     If a pointer is a dummy argument of an interoperable procedure, it
! usually has to be declared using the â€˜VALUEâ€™ attribute.  â€˜void*â€™ matches
! â€˜TYPE(C_PTR), VALUEâ€™, while â€˜TYPE(C_PTR)â€™ alone matches â€˜void**â€™.
  
     Procedure pointers are handled analogously to pointers; the C type is
! â€˜TYPE(C_FUNPTR)â€™ and the intrinsic conversion procedures are
! â€˜C_F_PROCPOINTERâ€™ and â€˜C_FUNLOCâ€™.
  
     Let us consider two examples of actually passing a procedure pointer
  from C to Fortran and vice versa.  Note that these examples are also
*************** First, consider this code in C:
*** 4623,4631 ****
         get_values (&print_it);
       }
  
!    A matching implementation for 'get_values' in Fortran that correctly
  receives the procedure pointer from C and is able to call it, is given
! in the following 'MODULE':
  
       MODULE m
         IMPLICIT NONE
--- 4623,4631 ----
         get_values (&print_it);
       }
  
!    A matching implementation for â€˜get_valuesâ€™ in Fortran that correctly
  receives the procedure pointer from C and is able to call it, is given
! in the following â€˜MODULEâ€™:
  
       MODULE m
         IMPLICIT NONE
*************** GNU Fortran implements the Technical Spe
*** 4718,4734 ****
  29113:2012, which extends the interoperability support of Fortran 2003
  and Fortran 2008 and is now part of the 2018 Fortran standard.  Besides
  removing some restrictions and constraints, the Technical Specification
! adds assumed-type ('TYPE(*)') and assumed-rank ('DIMENSION(..)')
  variables and allows for interoperability of assumed-shape,
  assumed-rank, and deferred-shape arrays, as well as allocatables and
! pointers.  Objects of these types are passed to 'BIND(C)' functions as
  descriptors with a standard interface, declared in the header file
! '<ISO_Fortran_binding.h>'.
  
     Note: Currently, GNU Fortran does not use internally the array
  descriptor (dope vector) as specified in the Technical Specification,
  but uses an array descriptor with different fields in functions without
! the 'BIND(C)' attribute.  Arguments to functions marked 'BIND(C)' are
  converted to the specified form.  If you need to access GNU Fortran's
  internal array descriptor, you can use the Chasm Language
  Interoperability Tools, <http://chasm-interop.sourceforge.net/>.
--- 4718,4734 ----
  29113:2012, which extends the interoperability support of Fortran 2003
  and Fortran 2008 and is now part of the 2018 Fortran standard.  Besides
  removing some restrictions and constraints, the Technical Specification
! adds assumed-type (â€˜TYPE(*)â€™) and assumed-rank (â€˜DIMENSION(..)â€™)
  variables and allows for interoperability of assumed-shape,
  assumed-rank, and deferred-shape arrays, as well as allocatables and
! pointers.  Objects of these types are passed to â€˜BIND(C)â€™ functions as
  descriptors with a standard interface, declared in the header file
! â€˜<ISO_Fortran_binding.h>â€™.
  
     Note: Currently, GNU Fortran does not use internally the array
  descriptor (dope vector) as specified in the Technical Specification,
  but uses an array descriptor with different fields in functions without
! the â€˜BIND(C)â€™ attribute.  Arguments to functions marked â€˜BIND(C)â€™ are
  converted to the specified form.  If you need to access GNU Fortran's
  internal array descriptor, you can use the Chasm Language
  Interoperability Tools, <http://chasm-interop.sourceforge.net/>.
*************** File: gfortran.info,  Node: Generating C
*** 4739,4751 ****
  6.1.7 Generating C prototypes from Fortran
  ------------------------------------------
  
! The options '-fc-prototypes' can be used to write out C declatations and
! function prototypes for 'BIND(C)' entities.  The same can be done for
  writing out prototypes for external procedures using
! '-fc-prototypes-external', *note Interoperability Options::.
  
     Standard Fortran does not specify an interoperable type for C's
! 'unsigned' integer types.  For interoperability with unsigned types, GNU
  Fortran provides unsigned integers, *note Unsigned integers::.
  
  
--- 4739,4751 ----
  6.1.7 Generating C prototypes from Fortran
  ------------------------------------------
  
! The options â€˜-fc-prototypesâ€™ can be used to write out C declatations and
! function prototypes for â€˜BIND(C)â€™ entities.  The same can be done for
  writing out prototypes for external procedures using
! â€˜-fc-prototypes-externalâ€™, *note Interoperability Options::.
  
     Standard Fortran does not specify an interoperable type for C's
! â€˜unsignedâ€™ integer types.  For interoperability with unsigned types, GNU
  Fortran provides unsigned integers, *note Unsigned integers::.
  
  
*************** File: gfortran.info,  Node: GNU Fortran
*** 4766,4772 ****
  
  File: gfortran.info,  Node: ATTRIBUTES directive,  Next: UNROLL directive,  Up: GNU Fortran Compiler Directives
  
! 6.2.1 'ATTRIBUTES' directive
  ----------------------------
  
  The Fortran standard describes how a conforming program shall behave;
--- 4766,4772 ----
  
  File: gfortran.info,  Node: ATTRIBUTES directive,  Next: UNROLL directive,  Up: GNU Fortran Compiler Directives
  
! 6.2.1 â€˜ATTRIBUTESâ€™ directive
  ----------------------------
  
  The Fortran standard describes how a conforming program shall behave;
*************** on the processor; see *note C Extensions
*** 4780,4788 ****
     For procedures and procedure pointers, the following attributes can
  be used to change the calling convention:
  
!    * 'CDECL' - standard C calling convention
!    * 'STDCALL' - convention where the called procedure pops the stack
!    * 'FASTCALL' - part of the arguments are passed via registers instead
       using the stack
  
     Besides changing the calling convention, the attributes also
--- 4780,4788 ----
     For procedures and procedure pointers, the following attributes can
  be used to change the calling convention:
  
!    â€¢ â€˜CDECLâ€™ - standard C calling convention
!    â€¢ â€˜STDCALLâ€™ - convention where the called procedure pops the stack
!    â€¢ â€˜FASTCALLâ€™ - part of the arguments are passed via registers instead
       using the stack
  
     Besides changing the calling convention, the attributes also
*************** the stack.  When assigning a procedure t
*** 4792,4828 ****
  should use the same calling convention.
  
     On some systems, procedures and global variables (module variables
! and 'COMMON' blocks) need special handling to be accessible when they
  are in a shared library.  The following attributes are available:
  
!    * 'DLLEXPORT' - provide a global pointer to a pointer in the DLL
!    * 'DLLIMPORT' - reference the function or variable using a global
       pointer
  
!    For dummy arguments, the 'NO_ARG_CHECK' attribute can be used; in
! other compilers, it is also known as 'IGNORE_TKR'.  For dummy arguments
  with this attribute actual arguments of any type and kind (similar to
! 'TYPE(*)'), scalars and arrays of any rank (no equivalent in Fortran
! standard) are accepted.  As with 'TYPE(*)', the argument is unlimited
  polymorphic and no type information is available.  Additionally, the
! argument may only be passed to dummy arguments with the 'NO_ARG_CHECK'
! attribute and as argument to the 'PRESENT' intrinsic function and to
! 'C_LOC' of the 'ISO_C_BINDING' module.
  
!    Variables with 'NO_ARG_CHECK' attribute shall be of assumed-type
! ('TYPE(*)'; recommended) or of type 'INTEGER', 'LOGICAL', 'REAL' or
! 'COMPLEX'.  They shall not have the 'ALLOCATE', 'CODIMENSION',
! 'INTENT(OUT)', 'POINTER' or 'VALUE' attribute; furthermore, they shall
! be either scalar or of assumed-size ('dimension(*)').  As 'TYPE(*)', the
! 'NO_ARG_CHECK' attribute requires an explicit interface.
  
!    * 'NO_ARG_CHECK' - disable the type, kind and rank checking
!    * 'DEPRECATED' - print a warning when using a such-tagged deprecated
       procedure, variable or parameter; the warning can be suppressed
!      with '-Wno-deprecated-declarations'.
!    * 'NOINLINE' - prevent inlining given function.
!    * 'NORETURN' - add a hint that a given function cannot return.
!    * 'WEAK' - emit the declaration of an external symbol as a weak
       symbol rather than a global.  This is primarily useful in defining
       library functions that can be overridden in user code, though it
       can also be used with non-function declarations.  The overriding
--- 4792,4828 ----
  should use the same calling convention.
  
     On some systems, procedures and global variables (module variables
! and â€˜COMMONâ€™ blocks) need special handling to be accessible when they
  are in a shared library.  The following attributes are available:
  
!    â€¢ â€˜DLLEXPORTâ€™ - provide a global pointer to a pointer in the DLL
!    â€¢ â€˜DLLIMPORTâ€™ - reference the function or variable using a global
       pointer
  
!    For dummy arguments, the â€˜NO_ARG_CHECKâ€™ attribute can be used; in
! other compilers, it is also known as â€˜IGNORE_TKRâ€™.  For dummy arguments
  with this attribute actual arguments of any type and kind (similar to
! â€˜TYPE(*)â€™), scalars and arrays of any rank (no equivalent in Fortran
! standard) are accepted.  As with â€˜TYPE(*)â€™, the argument is unlimited
  polymorphic and no type information is available.  Additionally, the
! argument may only be passed to dummy arguments with the â€˜NO_ARG_CHECKâ€™
! attribute and as argument to the â€˜PRESENTâ€™ intrinsic function and to
! â€˜C_LOCâ€™ of the â€˜ISO_C_BINDINGâ€™ module.
  
!    Variables with â€˜NO_ARG_CHECKâ€™ attribute shall be of assumed-type
! (â€˜TYPE(*)â€™; recommended) or of type â€˜INTEGERâ€™, â€˜LOGICALâ€™, â€˜REALâ€™ or
! â€˜COMPLEXâ€™.  They shall not have the â€˜ALLOCATEâ€™, â€˜CODIMENSIONâ€™,
! â€˜INTENT(OUT)â€™, â€˜POINTERâ€™ or â€˜VALUEâ€™ attribute; furthermore, they shall
! be either scalar or of assumed-size (â€˜dimension(*)â€™).  As â€˜TYPE(*)â€™, the
! â€˜NO_ARG_CHECKâ€™ attribute requires an explicit interface.
  
!    â€¢ â€˜NO_ARG_CHECKâ€™ - disable the type, kind and rank checking
!    â€¢ â€˜DEPRECATEDâ€™ - print a warning when using a such-tagged deprecated
       procedure, variable or parameter; the warning can be suppressed
!      with â€˜-Wno-deprecated-declarationsâ€™.
!    â€¢ â€˜NOINLINEâ€™ - prevent inlining given function.
!    â€¢ â€˜NORETURNâ€™ - add a hint that a given function cannot return.
!    â€¢ â€˜WEAKâ€™ - emit the declaration of an external symbol as a weak
       symbol rather than a global.  This is primarily useful in defining
       library functions that can be overridden in user code, though it
       can also be used with non-function declarations.  The overriding
*************** be either scalar or of assumed-size ('di
*** 4830,4839 ****
  
     The attributes are specified using the syntax
  
!    '!GCC$ ATTRIBUTES' ATTRIBUTE-LIST '::' VARIABLE-LIST
  
     where in free-form source code only whitespace is allowed before
! '!GCC$' and in fixed-form source code '!GCC$', 'cGCC$' or '*GCC$' shall
  start in the first column.
  
     For procedures, the compiler directives shall be placed into the body
--- 4830,4839 ----
  
     The attributes are specified using the syntax
  
!    â€˜!GCC$ ATTRIBUTESâ€™ ATTRIBUTE-LIST â€˜::â€™ VARIABLE-LIST
  
     where in free-form source code only whitespace is allowed before
! â€˜!GCC$â€™ and in fixed-form source code â€˜!GCC$â€™, â€˜cGCC$â€™ or â€˜*GCC$â€™ shall
  start in the first column.
  
     For procedures, the compiler directives shall be placed into the body
*************** the same declaration part as the variabl
*** 4843,4878 ****
  
  File: gfortran.info,  Node: UNROLL directive,  Next: BUILTIN directive,  Prev: ATTRIBUTES directive,  Up: GNU Fortran Compiler Directives
  
! 6.2.2 'UNROLL' directive
  ------------------------
  
  The syntax of the directive is
  
!    '!GCC$ unroll N'
  
     You can use this directive to control how many times a loop should be
! unrolled.  It must be placed immediately before a 'DO' loop and applies
  only to the loop that follows.  N is an integer constant specifying the
  unrolling factor.  The values of 0 and 1 block any unrolling of the
  loop.
  
!    For 'DO CONCURRENT' constructs the unrolling specification applies
  only to the first loop control variable.
  
  
  File: gfortran.info,  Node: BUILTIN directive,  Next: IVDEP directive,  Prev: UNROLL directive,  Up: GNU Fortran Compiler Directives
  
! 6.2.3 'BUILTIN' directive
  -------------------------
  
  The syntax of the directive is
  
!    '!GCC$ BUILTIN (B) attributes simd FLAGS IF('target')'
  
     You can use this directive to define which middle-end built-ins
  provide vector implementations.  B is name of the middle-end built-in.
! FLAGS are optional and must be either '(inbranch)' or '(notinbranch)'.
! 'IF' statement is optional and is used to filter multilib ABIs for the
  built-in that should be vectorized.  Example usage:
  
       !GCC$ builtin (sinf) attributes simd (notinbranch) if('x86_64')
--- 4843,4878 ----
  
  File: gfortran.info,  Node: UNROLL directive,  Next: BUILTIN directive,  Prev: ATTRIBUTES directive,  Up: GNU Fortran Compiler Directives
  
! 6.2.2 â€˜UNROLLâ€™ directive
  ------------------------
  
  The syntax of the directive is
  
!    â€˜!GCC$ unroll Nâ€™
  
     You can use this directive to control how many times a loop should be
! unrolled.  It must be placed immediately before a â€˜DOâ€™ loop and applies
  only to the loop that follows.  N is an integer constant specifying the
  unrolling factor.  The values of 0 and 1 block any unrolling of the
  loop.
  
!    For â€˜DO CONCURRENTâ€™ constructs the unrolling specification applies
  only to the first loop control variable.
  
  
  File: gfortran.info,  Node: BUILTIN directive,  Next: IVDEP directive,  Prev: UNROLL directive,  Up: GNU Fortran Compiler Directives
  
! 6.2.3 â€˜BUILTINâ€™ directive
  -------------------------
  
  The syntax of the directive is
  
!    â€˜!GCC$ BUILTIN (B) attributes simd FLAGS IF('target')â€™
  
     You can use this directive to define which middle-end built-ins
  provide vector implementations.  B is name of the middle-end built-in.
! FLAGS are optional and must be either â€˜(inbranch)â€™ or â€˜(notinbranch)â€™.
! â€˜IFâ€™ statement is optional and is used to filter multilib ABIs for the
  built-in that should be vectorized.  Example usage:
  
       !GCC$ builtin (sinf) attributes simd (notinbranch) if('x86_64')
*************** of math routines.
*** 4884,4898 ****
  
  File: gfortran.info,  Node: IVDEP directive,  Next: VECTOR directive,  Prev: BUILTIN directive,  Up: GNU Fortran Compiler Directives
  
! 6.2.4 'IVDEP' directive
  -----------------------
  
  The syntax of the directive is
  
!    '!GCC$ ivdep'
  
     This directive tells the compiler to ignore vector dependencies in
! the following loop.  It must be placed immediately before a 'DO' loop
  and applies only to the loop that follows.
  
     Sometimes the compiler may not have sufficient information to decide
--- 4884,4898 ----
  
  File: gfortran.info,  Node: IVDEP directive,  Next: VECTOR directive,  Prev: BUILTIN directive,  Up: GNU Fortran Compiler Directives
  
! 6.2.4 â€˜IVDEPâ€™ directive
  -----------------------
  
  The syntax of the directive is
  
!    â€˜!GCC$ ivdepâ€™
  
     This directive tells the compiler to ignore vector dependencies in
! the following loop.  It must be placed immediately before a â€˜DOâ€™ loop
  and applies only to the loop that follows.
  
     Sometimes the compiler may not have sufficient information to decide
*************** whether a particular loop is vectorizabl
*** 4900,4906 ****
  between iterations.  The purpose of the directive is to tell the
  compiler that vectorization is safe.
  
!    For 'DO CONCURRENT' constructs this annotation is implicit to all
  loop control variables.
  
     This directive is intended for annotation of existing code.  For new
--- 4900,4906 ----
  between iterations.  The purpose of the directive is to tell the
  compiler that vectorization is safe.
  
!    For â€˜DO CONCURRENTâ€™ constructs this annotation is implicit to all
  loop control variables.
  
     This directive is intended for annotation of existing code.  For new
*************** alternative.
*** 4910,4944 ****
  
  File: gfortran.info,  Node: VECTOR directive,  Next: NOVECTOR directive,  Prev: IVDEP directive,  Up: GNU Fortran Compiler Directives
  
! 6.2.5 'VECTOR' directive
  ------------------------
  
  The syntax of the directive is
  
!    '!GCC$ vector'
  
     This directive tells the compiler to vectorize the following loop.
! It must be placed immediately before a 'DO' loop and applies only to the
  loop that follows.
  
!    For 'DO CONCURRENT' constructs this annotation applies to all loops
  specified in the concurrent header.
  
  
  File: gfortran.info,  Node: NOVECTOR directive,  Prev: VECTOR directive,  Up: GNU Fortran Compiler Directives
  
! 6.2.6 'NOVECTOR' directive
  --------------------------
  
  The syntax of the directive is
  
!    '!GCC$ novector'
  
     This directive tells the compiler to not vectorize the following
! loop.  It must be placed immediately before a 'DO' loop and applies only
  to the loop that follows.
  
!    For 'DO CONCURRENT' constructs this annotation applies to all loops
  specified in the concurrent header.
  
  
--- 4910,4944 ----
  
  File: gfortran.info,  Node: VECTOR directive,  Next: NOVECTOR directive,  Prev: IVDEP directive,  Up: GNU Fortran Compiler Directives
  
! 6.2.5 â€˜VECTORâ€™ directive
  ------------------------
  
  The syntax of the directive is
  
!    â€˜!GCC$ vectorâ€™
  
     This directive tells the compiler to vectorize the following loop.
! It must be placed immediately before a â€˜DOâ€™ loop and applies only to the
  loop that follows.
  
!    For â€˜DO CONCURRENTâ€™ constructs this annotation applies to all loops
  specified in the concurrent header.
  
  
  File: gfortran.info,  Node: NOVECTOR directive,  Prev: VECTOR directive,  Up: GNU Fortran Compiler Directives
  
! 6.2.6 â€˜NOVECTORâ€™ directive
  --------------------------
  
  The syntax of the directive is
  
!    â€˜!GCC$ novectorâ€™
  
     This directive tells the compiler to not vectorize the following
! loop.  It must be placed immediately before a â€˜DOâ€™ loop and applies only
  to the loop that follows.
  
!    For â€˜DO CONCURRENTâ€™ constructs this annotation applies to all loops
  specified in the concurrent header.
  
  
*************** you do not need to know or use the infor
*** 4961,4986 ****
  it is about the internal structure of GNU Fortran, it may also change in
  GCC minor releases.
  
!    When you compile a 'PROGRAM' with GNU Fortran, a function with the
! name 'main' (in the symbol table of the object file) is generated, which
  initializes the libgfortran library and then calls the actual program
! that uses the name 'MAIN__', for historic reasons.  If you link GNU
  Fortran compiled procedures to, e.g., a C or C++ program or to a Fortran
  program compiled by a different compiler, the libgfortran library is not
  initialized and thus a few intrinsic procedures do not work properly,
  e.g.  those for obtaining the command-line arguments.
  
!    Therefore, if your 'PROGRAM' is not compiled with GNU Fortran and the
  GNU Fortran compiled procedures require intrinsics relying on the
  library initialization, you need to initialize the library yourself.
! Using the default options, gfortran calls '_gfortran_set_args' and
! '_gfortran_set_options'.  The initialization of the former is needed if
  the called procedures access the command line (and for backtracing); the
  latter sets some flags based on the standard chosen or to enable
  backtracing.  In typical programs, it is not necessary to call any
  initialization function.
  
!    If your 'PROGRAM' is compiled with GNU Fortran, you shall not call
  any of the following functions.  The libgfortran initialization
  functions are shown in C syntax but using C bindings they are also
  accessible from Fortran.
--- 4961,4986 ----
  it is about the internal structure of GNU Fortran, it may also change in
  GCC minor releases.
  
!    When you compile a â€˜PROGRAMâ€™ with GNU Fortran, a function with the
! name â€˜mainâ€™ (in the symbol table of the object file) is generated, which
  initializes the libgfortran library and then calls the actual program
! that uses the name â€˜MAIN__â€™, for historic reasons.  If you link GNU
  Fortran compiled procedures to, e.g., a C or C++ program or to a Fortran
  program compiled by a different compiler, the libgfortran library is not
  initialized and thus a few intrinsic procedures do not work properly,
  e.g.  those for obtaining the command-line arguments.
  
!    Therefore, if your â€˜PROGRAMâ€™ is not compiled with GNU Fortran and the
  GNU Fortran compiled procedures require intrinsics relying on the
  library initialization, you need to initialize the library yourself.
! Using the default options, gfortran calls â€˜_gfortran_set_argsâ€™ and
! â€˜_gfortran_set_optionsâ€™.  The initialization of the former is needed if
  the called procedures access the command line (and for backtracing); the
  latter sets some flags based on the standard chosen or to enable
  backtracing.  In typical programs, it is not necessary to call any
  initialization function.
  
!    If your â€˜PROGRAMâ€™ is compiled with GNU Fortran, you shall not call
  any of the following functions.  The libgfortran initialization
  functions are shown in C syntax but using C bindings they are also
  accessible from Fortran.
*************** accessible from Fortran.
*** 4988,5004 ****
  
  File: gfortran.info,  Node: _gfortran_set_args,  Next: _gfortran_set_options,  Up: Non-Fortran Main Program
  
! 6.3.1 '_gfortran_set_args' -- Save command-line arguments
  ---------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_set_args (int argc, char *argv[])'
  
  _Description_:
!      '_gfortran_set_args' saves the command-line arguments; this
       initialization is required if any of the command-line intrinsics is
       called.  Additionally, it shall be called if backtracing is enabled
!      (see '_gfortran_set_options').
  
  _Arguments_:
       ARGC        number of command line argument strings
--- 4988,5004 ----
  
  File: gfortran.info,  Node: _gfortran_set_args,  Next: _gfortran_set_options,  Up: Non-Fortran Main Program
  
! 6.3.1 â€˜_gfortran_set_argsâ€™ -- Save command-line arguments
  ---------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_set_args (int argc, char *argv[])â€™
  
  _Description_:
!      â€˜_gfortran_set_argsâ€™ saves the command-line arguments; this
       initialization is required if any of the command-line intrinsics is
       called.  Additionally, it shall be called if backtracing is enabled
!      (see â€˜_gfortran_set_optionsâ€™).
  
  _Arguments_:
       ARGC        number of command line argument strings
*************** _Example_:
*** 5016,5029 ****
  
  File: gfortran.info,  Node: _gfortran_set_options,  Next: _gfortran_set_convert,  Prev: _gfortran_set_args,  Up: Non-Fortran Main Program
  
! 6.3.2 '_gfortran_set_options' -- Set library option flags
  ---------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_set_options (int num, int options[])'
  
  _Description_:
!      '_gfortran_set_options' sets several flags related to the Fortran
       standard to be used, whether backtracing should be enabled and
       whether range checks should be performed.  The syntax allows for
       upward compatibility since the number of passed flags is specified;
--- 5016,5029 ----
  
  File: gfortran.info,  Node: _gfortran_set_options,  Next: _gfortran_set_convert,  Prev: _gfortran_set_args,  Up: Non-Fortran Main Program
  
! 6.3.2 â€˜_gfortran_set_optionsâ€™ -- Set library option flags
  ---------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_set_options (int num, int options[])â€™
  
  _Description_:
!      â€˜_gfortran_set_optionsâ€™ sets several flags related to the Fortran
       standard to be used, whether backtracing should be enabled and
       whether range checks should be performed.  The syntax allows for
       upward compatibility since the number of passed flags is specified;
*************** _option flag list_:
*** 5039,5062 ****
       OPTION[0]   Allowed standard; can give run-time errors if
                   e.g.  an input-output edit descriptor is invalid
                   in a given standard.  Possible values are
!                  (bitwise or-ed) 'GFC_STD_F77' (1),
!                  'GFC_STD_F95_OBS' (2), 'GFC_STD_F95_DEL' (4),
!                  'GFC_STD_F95' (8), 'GFC_STD_F2003' (16),
!                  'GFC_STD_GNU' (32), 'GFC_STD_LEGACY' (64),
!                  'GFC_STD_F2008' (128), 'GFC_STD_F2008_OBS'
!                  (256), 'GFC_STD_F2018' (512),
!                  'GFC_STD_F2018_OBS' (1024), 'GFC_STD_F2018_DEL'
!                  (2048), 'GFC_STD_F2023' (4096), and
!                  'GFC_STD_F2023_DEL' (8192).  Default:
!                  'GFC_STD_F95_OBS | GFC_STD_F95_DEL | GFC_STD_F95
                   | GFC_STD_F2003 | GFC_STD_F2008 |
                   GFC_STD_F2008_OBS | GFC_STD_F77 | GFC_STD_F2018
                   | GFC_STD_F2018_OBS | GFC_STD_F2018_DEL |
                   GFC_STD_F2023 | GFC_STD_F2023_DEL | GFC_STD_GNU
!                  | GFC_STD_LEGACY'.
       OPTION[1]   Standard-warning flag; prints a warning to
!                  standard error.  Default: 'GFC_STD_F95_DEL |
!                  GFC_STD_LEGACY'.
       OPTION[2]   If non zero, enable pedantic checking.  Default:
                   off.
       OPTION[3]   Unused.
--- 5039,5062 ----
       OPTION[0]   Allowed standard; can give run-time errors if
                   e.g.  an input-output edit descriptor is invalid
                   in a given standard.  Possible values are
!                  (bitwise or-ed) â€˜GFC_STD_F77â€™ (1),
!                  â€˜GFC_STD_F95_OBSâ€™ (2), â€˜GFC_STD_F95_DELâ€™ (4),
!                  â€˜GFC_STD_F95â€™ (8), â€˜GFC_STD_F2003â€™ (16),
!                  â€˜GFC_STD_GNUâ€™ (32), â€˜GFC_STD_LEGACYâ€™ (64),
!                  â€˜GFC_STD_F2008â€™ (128), â€˜GFC_STD_F2008_OBSâ€™
!                  (256), â€˜GFC_STD_F2018â€™ (512),
!                  â€˜GFC_STD_F2018_OBSâ€™ (1024), â€˜GFC_STD_F2018_DELâ€™
!                  (2048), â€˜GFC_STD_F2023â€™ (4096), and
!                  â€˜GFC_STD_F2023_DELâ€™ (8192).  Default:
!                  â€˜GFC_STD_F95_OBS | GFC_STD_F95_DEL | GFC_STD_F95
                   | GFC_STD_F2003 | GFC_STD_F2008 |
                   GFC_STD_F2008_OBS | GFC_STD_F77 | GFC_STD_F2018
                   | GFC_STD_F2018_OBS | GFC_STD_F2018_DEL |
                   GFC_STD_F2023 | GFC_STD_F2023_DEL | GFC_STD_GNU
!                  | GFC_STD_LEGACYâ€™.
       OPTION[1]   Standard-warning flag; prints a warning to
!                  standard error.  Default: â€˜GFC_STD_F95_DEL |
!                  GFC_STD_LEGACYâ€™.
       OPTION[2]   If non zero, enable pedantic checking.  Default:
                   off.
       OPTION[3]   Unused.
*************** _option flag list_:
*** 5064,5070 ****
                   errors.  Default: off.  (Default in the
                   compiler: on.)  Note: Installs a signal handler
                   and requires command-line initialization using
!                  '_gfortran_set_args'.
       OPTION[5]   If non zero, supports signed zeros.  Default:
                   enabled.
       OPTION[6]   Enables run-time checking.  Possible values are
--- 5064,5070 ----
                   errors.  Default: off.  (Default in the
                   compiler: on.)  Note: Installs a signal handler
                   and requires command-line initialization using
!                  â€˜_gfortran_set_argsâ€™.
       OPTION[5]   If non zero, supports signed zeros.  Default:
                   enabled.
       OPTION[6]   Enables run-time checking.  Possible values are
*************** _option flag list_:
*** 5074,5089 ****
                   GFC_RTCHECK_POINTER (16), GFC_RTCHECK_MEM (32),
                   GFC_RTCHECK_BITS (64).  Default: disabled.
       OPTION[7]   Unused.
!      OPTION[8]   Show a warning when invoking 'STOP' and 'ERROR
!                  STOP' if a floating-point exception occurred.
                   Possible values are (bitwise or-ed)
!                  'GFC_FPE_INVALID' (1), 'GFC_FPE_DENORMAL' (2),
!                  'GFC_FPE_ZERO' (4), 'GFC_FPE_OVERFLOW' (8),
!                  'GFC_FPE_UNDERFLOW' (16), 'GFC_FPE_INEXACT'
                   (32).  Default: None (0).  (Default in the
!                  compiler: 'GFC_FPE_INVALID | GFC_FPE_DENORMAL |
                   GFC_FPE_ZERO | GFC_FPE_OVERFLOW |
!                  GFC_FPE_UNDERFLOW'.)
  
  _Example_:
              /* Use gfortran 4.9 default options.  */
--- 5074,5089 ----
                   GFC_RTCHECK_POINTER (16), GFC_RTCHECK_MEM (32),
                   GFC_RTCHECK_BITS (64).  Default: disabled.
       OPTION[7]   Unused.
!      OPTION[8]   Show a warning when invoking â€˜STOPâ€™ and â€˜ERROR
!                  STOPâ€™ if a floating-point exception occurred.
                   Possible values are (bitwise or-ed)
!                  â€˜GFC_FPE_INVALIDâ€™ (1), â€˜GFC_FPE_DENORMALâ€™ (2),
!                  â€˜GFC_FPE_ZEROâ€™ (4), â€˜GFC_FPE_OVERFLOWâ€™ (8),
!                  â€˜GFC_FPE_UNDERFLOWâ€™ (16), â€˜GFC_FPE_INEXACTâ€™
                   (32).  Default: None (0).  (Default in the
!                  compiler: â€˜GFC_FPE_INVALID | GFC_FPE_DENORMAL |
                   GFC_FPE_ZERO | GFC_FPE_OVERFLOW |
!                  GFC_FPE_UNDERFLOWâ€™.)
  
  _Example_:
              /* Use gfortran 4.9 default options.  */
*************** _Example_:
*** 5093,5106 ****
  
  File: gfortran.info,  Node: _gfortran_set_convert,  Next: _gfortran_set_record_marker,  Prev: _gfortran_set_options,  Up: Non-Fortran Main Program
  
! 6.3.3 '_gfortran_set_convert' -- Set endian conversion
  ------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_set_convert (int conv)'
  
  _Description_:
!      '_gfortran_set_convert' set the representation of data for
       unformatted files.
  
  _Arguments_:
--- 5093,5106 ----
  
  File: gfortran.info,  Node: _gfortran_set_convert,  Next: _gfortran_set_record_marker,  Prev: _gfortran_set_options,  Up: Non-Fortran Main Program
  
! 6.3.3 â€˜_gfortran_set_convertâ€™ -- Set endian conversion
  ------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_set_convert (int conv)â€™
  
  _Description_:
!      â€˜_gfortran_set_convertâ€™ set the representation of data for
       unformatted files.
  
  _Arguments_:
*************** _Example_:
*** 5121,5134 ****
  
  File: gfortran.info,  Node: _gfortran_set_record_marker,  Next: _gfortran_set_fpe,  Prev: _gfortran_set_convert,  Up: Non-Fortran Main Program
  
! 6.3.4 '_gfortran_set_record_marker' -- Set length of record markers
  -------------------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_set_record_marker (int val)'
  
  _Description_:
!      '_gfortran_set_record_marker' sets the length of record markers for
       unformatted files.
  
  _Arguments_:
--- 5121,5134 ----
  
  File: gfortran.info,  Node: _gfortran_set_record_marker,  Next: _gfortran_set_fpe,  Prev: _gfortran_set_convert,  Up: Non-Fortran Main Program
  
! 6.3.4 â€˜_gfortran_set_record_markerâ€™ -- Set length of record markers
  -------------------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_set_record_marker (int val)â€™
  
  _Description_:
!      â€˜_gfortran_set_record_markerâ€™ sets the length of record markers for
       unformatted files.
  
  _Arguments_:
*************** _Example_:
*** 5147,5169 ****
  
  File: gfortran.info,  Node: _gfortran_set_fpe,  Next: _gfortran_set_max_subrecord_length,  Prev: _gfortran_set_record_marker,  Up: Non-Fortran Main Program
  
! 6.3.5 '_gfortran_set_fpe' -- Enable floating point exception traps
  ------------------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_set_fpe (int val)'
  
  _Description_:
!      '_gfortran_set_fpe' enables floating point exception traps for the
!      specified exceptions.  On most systems, this results in a 'SIGFPE'
       signal being sent and the program being aborted.
  
  _Arguments_:
       OPTION[0]   IEEE exceptions.  Possible values are (bitwise
                   or-ed) zero (0, default) no trapping,
!                  'GFC_FPE_INVALID' (1), 'GFC_FPE_DENORMAL' (2),
!                  'GFC_FPE_ZERO' (4), 'GFC_FPE_OVERFLOW' (8),
!                  'GFC_FPE_UNDERFLOW' (16), and 'GFC_FPE_INEXACT'
                   (32).
  
  _Example_:
--- 5147,5169 ----
  
  File: gfortran.info,  Node: _gfortran_set_fpe,  Next: _gfortran_set_max_subrecord_length,  Prev: _gfortran_set_record_marker,  Up: Non-Fortran Main Program
  
! 6.3.5 â€˜_gfortran_set_fpeâ€™ -- Enable floating point exception traps
  ------------------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_set_fpe (int val)â€™
  
  _Description_:
!      â€˜_gfortran_set_fpeâ€™ enables floating point exception traps for the
!      specified exceptions.  On most systems, this results in a â€˜SIGFPEâ€™
       signal being sent and the program being aborted.
  
  _Arguments_:
       OPTION[0]   IEEE exceptions.  Possible values are (bitwise
                   or-ed) zero (0, default) no trapping,
!                  â€˜GFC_FPE_INVALIDâ€™ (1), â€˜GFC_FPE_DENORMALâ€™ (2),
!                  â€˜GFC_FPE_ZEROâ€™ (4), â€˜GFC_FPE_OVERFLOWâ€™ (8),
!                  â€˜GFC_FPE_UNDERFLOWâ€™ (16), and â€˜GFC_FPE_INEXACTâ€™
                   (32).
  
  _Example_:
*************** _Example_:
*** 5179,5192 ****
  
  File: gfortran.info,  Node: _gfortran_set_max_subrecord_length,  Prev: _gfortran_set_fpe,  Up: Non-Fortran Main Program
  
! 6.3.6 '_gfortran_set_max_subrecord_length' -- Set subrecord length
  ------------------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_set_max_subrecord_length (int val)'
  
  _Description_:
!      '_gfortran_set_max_subrecord_length' set the maximum length for a
       subrecord.  This option only makes sense for testing and debugging
       of unformatted I/O.
  
--- 5179,5192 ----
  
  File: gfortran.info,  Node: _gfortran_set_max_subrecord_length,  Prev: _gfortran_set_fpe,  Up: Non-Fortran Main Program
  
! 6.3.6 â€˜_gfortran_set_max_subrecord_lengthâ€™ -- Set subrecord length
  ------------------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_set_max_subrecord_length (int val)â€™
  
  _Description_:
!      â€˜_gfortran_set_max_subrecord_lengthâ€™ set the maximum length for a
       subrecord.  This option only makes sense for testing and debugging
       of unformatted I/O.
  
*************** File: gfortran.info,  Node: Naming conve
*** 5229,5255 ****
  ------------------------
  
  According the Fortran standard, valid Fortran names consist of a letter
! between 'A' to 'Z', 'a' to 'z', digits '0', '1' to '9' and underscores
! ('_') with the restriction that names may only start with a letter.  As
! vendor extension, the dollar sign ('$') is additionally permitted with
! the option '-fdollar-ok', but not as first character and only if the
  target system supports it.
  
     By default, the procedure name is the lowercased Fortran name with an
! appended underscore ('_'); using '-fno-underscoring' no underscore is
! appended while '-fsecond-underscore' appends two underscores.  Depending
  on the target system and the calling convention, the procedure might be
! additionally dressed; for instance, on 32bit Windows with 'stdcall', an
! at-sign '@' followed by an integer number is appended.  For the changing
  the calling convention, see *note GNU Fortran Compiler Directives::.
  
     For common blocks, the same convention is used, i.e.  by default an
  underscore is appended to the lowercased Fortran name.  Blank commons
! have the name '__BLNK__'.
  
     For procedures and variables declared in the specification space of a
! module, the name is formed by '__', followed by the lowercased module
! name, '_MOD_', and the lowercased Fortran name.  Note that no underscore
  is appended.
  
  
--- 5229,5255 ----
  ------------------------
  
  According the Fortran standard, valid Fortran names consist of a letter
! between â€˜Aâ€™ to â€˜Zâ€™, â€˜aâ€™ to â€˜zâ€™, digits â€˜0â€™, â€˜1â€™ to â€˜9â€™ and underscores
! (â€˜_â€™) with the restriction that names may only start with a letter.  As
! vendor extension, the dollar sign (â€˜$â€™) is additionally permitted with
! the option â€˜-fdollar-okâ€™, but not as first character and only if the
  target system supports it.
  
     By default, the procedure name is the lowercased Fortran name with an
! appended underscore (â€˜_â€™); using â€˜-fno-underscoringâ€™ no underscore is
! appended while â€˜-fsecond-underscoreâ€™ appends two underscores.  Depending
  on the target system and the calling convention, the procedure might be
! additionally dressed; for instance, on 32bit Windows with â€˜stdcallâ€™, an
! at-sign â€˜@â€™ followed by an integer number is appended.  For the changing
  the calling convention, see *note GNU Fortran Compiler Directives::.
  
     For common blocks, the same convention is used, i.e.  by default an
  underscore is appended to the lowercased Fortran name.  Blank commons
! have the name â€˜__BLNK__â€™.
  
     For procedures and variables declared in the specification space of a
! module, the name is formed by â€˜__â€™, followed by the lowercased module
! name, â€˜_MOD_â€™, and the lowercased Fortran name.  Note that no underscore
  is appended.
  
  
*************** File: gfortran.info,  Node: Argument pas
*** 5258,5277 ****
  6.4.2 Argument passing conventions
  ----------------------------------
  
! Subroutines do not return a value (matching C99's 'void') while
  functions either return a value as specified in the platform ABI or the
  result variable is passed as hidden argument to the function and no
  result is returned.  A hidden result variable is used when the result
! variable is an array or of type 'CHARACTER'.
  
     Arguments are passed according to the platform ABI. In particular,
  complex arguments might not be compatible to a struct with two real
  components for the real and imaginary part.  The argument passing
! matches the one of C99's '_Complex'.  Functions with scalar complex
  result variables return their value and do not use a by-reference
! argument.  Note that with the '-ff2c' option, the argument passing is
  modified and no longer completely matches the platform ABI. Some other
! Fortran compilers use 'f2c' semantic by default; this might cause
  problems with interoperability.
  
     GNU Fortran passes most arguments by reference, i.e.  by passing a
--- 5258,5277 ----
  6.4.2 Argument passing conventions
  ----------------------------------
  
! Subroutines do not return a value (matching C99's â€˜voidâ€™) while
  functions either return a value as specified in the platform ABI or the
  result variable is passed as hidden argument to the function and no
  result is returned.  A hidden result variable is used when the result
! variable is an array or of type â€˜CHARACTERâ€™.
  
     Arguments are passed according to the platform ABI. In particular,
  complex arguments might not be compatible to a struct with two real
  components for the real and imaginary part.  The argument passing
! matches the one of C99's â€˜_Complexâ€™.  Functions with scalar complex
  result variables return their value and do not use a by-reference
! argument.  Note that with the â€˜-ff2câ€™ option, the argument passing is
  modified and no longer completely matches the platform ABI. Some other
! Fortran compilers use â€˜f2câ€™ semantic by default; this might cause
  problems with interoperability.
  
     GNU Fortran passes most arguments by reference, i.e.  by passing a
*************** pointer to the data.  Note that the comp
*** 5279,5311 ****
  variable into which the actual argument has been copied, if required
  semantically (copy-in/copy-out).
  
!    For arguments with 'ALLOCATABLE' and 'POINTER' attribute (including
  procedure pointers), a pointer to the pointer is passed such that the
  pointer address can be modified in the procedure.
  
!    For dummy arguments with the 'VALUE' attribute: Scalar arguments of
! the type 'INTEGER', 'LOGICAL', 'REAL' and 'COMPLEX' are passed by value
  according to the platform ABI. (As vendor extension and not recommended,
! using '%VAL()' in the call to a procedure has the same effect.)  For
! 'TYPE(C_PTR)' and procedure pointers, the pointer itself is passed such
  that it can be modified without affecting the caller.
  
!    For Boolean ('LOGICAL') arguments, please note that GCC expects only
! the integer value 0 and 1.  If a GNU Fortran 'LOGICAL' variable contains
  another integer value, the result is undefined.  As some other Fortran
! compilers use -1 for '.TRUE.', extra care has to be taken - such as
! passing the value as 'INTEGER'.  (The same value restriction also
  applies to other front ends of GCC, e.g.  to GCC's C99 compiler for
! '_Bool' or GCC's Ada compiler for 'Boolean'.)
  
!    For arguments of 'CHARACTER' type, the character length is passed as
  a hidden argument at the end of the argument list, except when the
! corresponding dummy argument is declared as 'TYPE(*)'.  For
  deferred-length strings, the value is passed by reference, otherwise by
! value.  The character length has the C type 'size_t' (or
! 'INTEGER(kind=C_SIZE_T)' in Fortran).  Note that this is different to
  older versions of the GNU Fortran compiler, where the type of the hidden
! character length argument was a C 'int'.  In order to retain
  compatibility with older versions, one can e.g.  for the following
  Fortran procedure
  
--- 5279,5311 ----
  variable into which the actual argument has been copied, if required
  semantically (copy-in/copy-out).
  
!    For arguments with â€˜ALLOCATABLEâ€™ and â€˜POINTERâ€™ attribute (including
  procedure pointers), a pointer to the pointer is passed such that the
  pointer address can be modified in the procedure.
  
!    For dummy arguments with the â€˜VALUEâ€™ attribute: Scalar arguments of
! the type â€˜INTEGERâ€™, â€˜LOGICALâ€™, â€˜REALâ€™ and â€˜COMPLEXâ€™ are passed by value
  according to the platform ABI. (As vendor extension and not recommended,
! using â€˜%VAL()â€™ in the call to a procedure has the same effect.)  For
! â€˜TYPE(C_PTR)â€™ and procedure pointers, the pointer itself is passed such
  that it can be modified without affecting the caller.
  
!    For Boolean (â€˜LOGICALâ€™) arguments, please note that GCC expects only
! the integer value 0 and 1.  If a GNU Fortran â€˜LOGICALâ€™ variable contains
  another integer value, the result is undefined.  As some other Fortran
! compilers use -1 for â€˜.TRUE.â€™, extra care has to be taken - such as
! passing the value as â€˜INTEGERâ€™.  (The same value restriction also
  applies to other front ends of GCC, e.g.  to GCC's C99 compiler for
! â€˜_Boolâ€™ or GCC's Ada compiler for â€˜Booleanâ€™.)
  
!    For arguments of â€˜CHARACTERâ€™ type, the character length is passed as
  a hidden argument at the end of the argument list, except when the
! corresponding dummy argument is declared as â€˜TYPE(*)â€™.  For
  deferred-length strings, the value is passed by reference, otherwise by
! value.  The character length has the C type â€˜size_tâ€™ (or
! â€˜INTEGER(kind=C_SIZE_T)â€™ in Fortran).  Note that this is different to
  older versions of the GNU Fortran compiler, where the type of the hidden
! character length argument was a C â€˜intâ€™.  In order to retain
  compatibility with older versions, one can e.g.  for the following
  Fortran procedure
  
*************** Fortran procedure
*** 5328,5364 ****
     In order to avoid such compiler-specific details, for new code it is
  instead recommended to use the ISO_C_BINDING feature.
  
!    Note with C binding, 'CHARACTER(len=1)' result variables are returned
  according to the platform ABI and no hidden length argument is used for
! dummy arguments; with 'VALUE', those variables are passed by value.
  
!    For 'OPTIONAL' dummy arguments, an absent argument is denoted by a
  NULL pointer, except for scalar dummy arguments of intrinsic type or
! derived type (but not 'CLASS') and that have the 'VALUE' attribute.  For
! those, a hidden Boolean argument ('logical(kind=C_bool),value') is used
  to indicate whether the argument is present.
  
     Arguments that are assumed-shape, assumed-rank or deferred-rank
! arrays or, with '-fcoarray=lib', allocatable scalar coarrays use an
  array descriptor.  All other arrays pass the address of the first
! element of the array.  With '-fcoarray=lib', the token and the offset
  belonging to nonallocatable coarrays dummy arguments are passed as
  hidden argument along the character length hidden arguments.  The token
  is an opaque pointer identifying the coarray and the offset is a
! passed-by-value integer of kind 'C_PTRDIFF_T', denoting the byte offset
  between the base address of the coarray and the passed scalar or first
  element of the passed array.
  
     The arguments are passed in the following order
!    * Result variable, when the function result is passed by reference
!    * Character length of the function result, if it is a of type
!      'CHARACTER' and no C binding is used
!    * The arguments in the order in which they appear in the Fortran
       declaration
!    * The present status for optional arguments with value attribute,
       which are internally passed by value
!    * The character length and/or coarray token and offset for the first
!      argument which is a 'CHARACTER' or a nonallocatable coarray dummy
       argument, followed by the hidden arguments of the next dummy
       argument of such a type
  
--- 5328,5364 ----
     In order to avoid such compiler-specific details, for new code it is
  instead recommended to use the ISO_C_BINDING feature.
  
!    Note with C binding, â€˜CHARACTER(len=1)â€™ result variables are returned
  according to the platform ABI and no hidden length argument is used for
! dummy arguments; with â€˜VALUEâ€™, those variables are passed by value.
  
!    For â€˜OPTIONALâ€™ dummy arguments, an absent argument is denoted by a
  NULL pointer, except for scalar dummy arguments of intrinsic type or
! derived type (but not â€˜CLASSâ€™) and that have the â€˜VALUEâ€™ attribute.  For
! those, a hidden Boolean argument (â€˜logical(kind=C_bool),valueâ€™) is used
  to indicate whether the argument is present.
  
     Arguments that are assumed-shape, assumed-rank or deferred-rank
! arrays or, with â€˜-fcoarray=libâ€™, allocatable scalar coarrays use an
  array descriptor.  All other arrays pass the address of the first
! element of the array.  With â€˜-fcoarray=libâ€™, the token and the offset
  belonging to nonallocatable coarrays dummy arguments are passed as
  hidden argument along the character length hidden arguments.  The token
  is an opaque pointer identifying the coarray and the offset is a
! passed-by-value integer of kind â€˜C_PTRDIFF_Tâ€™, denoting the byte offset
  between the base address of the coarray and the passed scalar or first
  element of the passed array.
  
     The arguments are passed in the following order
!    â€¢ Result variable, when the function result is passed by reference
!    â€¢ Character length of the function result, if it is a of type
!      â€˜CHARACTERâ€™ and no C binding is used
!    â€¢ The arguments in the order in which they appear in the Fortran
       declaration
!    â€¢ The present status for optional arguments with value attribute,
       which are internally passed by value
!    â€¢ The character length and/or coarray token and offset for the first
!      argument which is a â€˜CHARACTERâ€™ or a nonallocatable coarray dummy
       argument, followed by the hidden arguments of the next dummy
       argument of such a type
  
*************** File: gfortran.info,  Node: Type and enu
*** 5390,5405 ****
  
  File: gfortran.info,  Node: caf_token_t,  Next: caf_register_t,  Up: Type and enum ABI Documentation
  
! 7.1.1 'caf_token_t'
  -------------------
  
! Typedef of type 'void *' on the compiler side.  Can be any data type on
  the library side.
  
  
  File: gfortran.info,  Node: caf_register_t,  Next: caf_deregister_t,  Prev: caf_token_t,  Up: Type and enum ABI Documentation
  
! 7.1.2 'caf_register_t'
  ----------------------
  
  Indicates which kind of coarray variable should be registered.
--- 5390,5405 ----
  
  File: gfortran.info,  Node: caf_token_t,  Next: caf_register_t,  Up: Type and enum ABI Documentation
  
! 7.1.1 â€˜caf_token_tâ€™
  -------------------
  
! Typedef of type â€˜void *â€™ on the compiler side.  Can be any data type on
  the library side.
  
  
  File: gfortran.info,  Node: caf_register_t,  Next: caf_deregister_t,  Prev: caf_token_t,  Up: Type and enum ABI Documentation
  
! 7.1.2 â€˜caf_register_tâ€™
  ----------------------
  
  Indicates which kind of coarray variable should be registered.
*************** Indicates which kind of coarray variable
*** 5417,5437 ****
       }
       caf_register_t;
  
!    The values 'CAF_REGTYPE_COARRAY_ALLOC_REGISTER_ONLY' and
! 'CAF_REGTYPE_COARRAY_ALLOC_ALLOCATE_ONLY' are for allocatable components
  in derived type coarrays only.  The first one sets up the token without
  allocating memory for allocatable component.  The latter one only
  allocates the memory for an allocatable component in a derived type
  coarray.  The token needs to be set up previously by the REGISTER_ONLY.
  This allows having allocatable components unallocated on some images.
  The status of whether an allocatable component is allocated on a remote
! image can be queried by '_caf_is_present' which used internally by the
! 'ALLOCATED' intrinsic.
  
  
  File: gfortran.info,  Node: caf_deregister_t,  Next: caf_reference_t,  Prev: caf_register_t,  Up: Type and enum ABI Documentation
  
! 7.1.3 'caf_deregister_t'
  ------------------------
  
       typedef enum caf_deregister_t {
--- 5417,5437 ----
       }
       caf_register_t;
  
!    The values â€˜CAF_REGTYPE_COARRAY_ALLOC_REGISTER_ONLYâ€™ and
! â€˜CAF_REGTYPE_COARRAY_ALLOC_ALLOCATE_ONLYâ€™ are for allocatable components
  in derived type coarrays only.  The first one sets up the token without
  allocating memory for allocatable component.  The latter one only
  allocates the memory for an allocatable component in a derived type
  coarray.  The token needs to be set up previously by the REGISTER_ONLY.
  This allows having allocatable components unallocated on some images.
  The status of whether an allocatable component is allocated on a remote
! image can be queried by â€˜_caf_is_presentâ€™ which used internally by the
! â€˜ALLOCATEDâ€™ intrinsic.
  
  
  File: gfortran.info,  Node: caf_deregister_t,  Next: caf_reference_t,  Prev: caf_register_t,  Up: Type and enum ABI Documentation
  
! 7.1.3 â€˜caf_deregister_tâ€™
  ------------------------
  
       typedef enum caf_deregister_t {
*************** File: gfortran.info,  Node: caf_deregist
*** 5441,5460 ****
       caf_deregister_t;
  
     Allows to specify the type of deregistration of a coarray object.
! The 'CAF_DEREGTYPE_COARRAY_DEALLOCATE_ONLY' flag is only allowed for
  allocatable components in derived type coarrays.
  
  
  File: gfortran.info,  Node: caf_reference_t,  Next: caf_team_t,  Prev: caf_deregister_t,  Up: Type and enum ABI Documentation
  
! 7.1.4 'caf_reference_t'
  -----------------------
  
  The structure used for implementing arbitrary reference chains.  A
! 'CAF_REFERENCE_T' allows to specify a component reference or any kind of
  array reference of any rank supported by gfortran.  For array references
  all kinds as known by the compiler/Fortran standard are supported
! indicated by a 'MODE'.
  
       typedef enum caf_ref_type_t {
         /* Reference a component of a derived type, either regular one or an
--- 5441,5460 ----
       caf_deregister_t;
  
     Allows to specify the type of deregistration of a coarray object.
! The â€˜CAF_DEREGTYPE_COARRAY_DEALLOCATE_ONLYâ€™ flag is only allowed for
  allocatable components in derived type coarrays.
  
  
  File: gfortran.info,  Node: caf_reference_t,  Next: caf_team_t,  Prev: caf_deregister_t,  Up: Type and enum ABI Documentation
  
! 7.1.4 â€˜caf_reference_tâ€™
  -----------------------
  
  The structure used for implementing arbitrary reference chains.  A
! â€˜CAF_REFERENCE_Tâ€™ allows to specify a component reference or any kind of
  array reference of any rank supported by gfortran.  For array references
  all kinds as known by the compiler/Fortran standard are supported
! indicated by a â€˜MODEâ€™.
  
       typedef enum caf_ref_type_t {
         /* Reference a component of a derived type, either regular one or an
*************** indicated by a 'MODE'.
*** 5536,5559 ****
       } caf_reference_t;
  
     The references make up a single linked list of reference operations.
! The 'NEXT' member links to the next reference or NULL to indicate the
  end of the chain.  Component and array refs can be arbitrarily mixed as
  long as they comply to the Fortran standard.
  
!    _Notes_: The member 'STATIC_ARRAY_TYPE' is used only when the 'TYPE'
! is 'CAF_REF_STATIC_ARRAY'.  The member gives the type of the data
  referenced.  Because no array descriptor is available for a
  descriptorless array and type conversion still needs to take place the
  type is transported here.
  
!    At the moment 'CAF_ARR_REF_VECTOR' is not implemented in the front
  end for descriptorless arrays.  The library caf_single has untested
  support for it.
  
  
  File: gfortran.info,  Node: caf_team_t,  Prev: caf_reference_t,  Up: Type and enum ABI Documentation
  
! 7.1.5 'caf_team_t'
  ------------------
  
  Opaque pointer to represent a team-handle.  This type is a stand-in for
--- 5536,5559 ----
       } caf_reference_t;
  
     The references make up a single linked list of reference operations.
! The â€˜NEXTâ€™ member links to the next reference or NULL to indicate the
  end of the chain.  Component and array refs can be arbitrarily mixed as
  long as they comply to the Fortran standard.
  
!    _Notes_: The member â€˜STATIC_ARRAY_TYPEâ€™ is used only when the â€˜TYPEâ€™
! is â€˜CAF_REF_STATIC_ARRAYâ€™.  The member gives the type of the data
  referenced.  Because no array descriptor is available for a
  descriptorless array and type conversion still needs to take place the
  type is transported here.
  
!    At the moment â€˜CAF_ARR_REF_VECTORâ€™ is not implemented in the front
  end for descriptorless arrays.  The library caf_single has untested
  support for it.
  
  
  File: gfortran.info,  Node: caf_team_t,  Prev: caf_reference_t,  Up: Type and enum ABI Documentation
  
! 7.1.5 â€˜caf_team_tâ€™
  ------------------
  
  Opaque pointer to represent a team-handle.  This type is a stand-in for
*************** File: gfortran.info,  Node: Function ABI
*** 5609,5633 ****
  
  File: gfortran.info,  Node: _gfortran_caf_init,  Next: _gfortran_caf_finish,  Up: Function ABI Documentation
  
! 7.2.1 '_gfortran_caf_init' -- Initialization function
  -----------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_init (int *argc, char ***argv)'
  
  _Description_:
       This function is called at startup of the program before the
       Fortran main program, if the latter has been compiled with
!      '-fcoarray=lib'.  It takes as arguments the command-line arguments
!      of the program.  It is permitted to pass two 'NULL' pointers as
!      argument; if non-'NULL', the library is permitted to modify the
       arguments.
  
  _Arguments_:
       ARGC        intent(inout) An integer pointer with the number
!                  of arguments passed to the program or 'NULL'.
       ARGV        intent(inout) A pointer to an array of strings
!                  with the command-line arguments or 'NULL'.
  
  _Notes_:
       The function is modelled after the initialization function of the
--- 5609,5633 ----
  
  File: gfortran.info,  Node: _gfortran_caf_init,  Next: _gfortran_caf_finish,  Up: Function ABI Documentation
  
! 7.2.1 â€˜_gfortran_caf_initâ€™ -- Initialization function
  -----------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_init (int *argc, char ***argv)â€™
  
  _Description_:
       This function is called at startup of the program before the
       Fortran main program, if the latter has been compiled with
!      â€˜-fcoarray=libâ€™.  It takes as arguments the command-line arguments
!      of the program.  It is permitted to pass two â€˜NULLâ€™ pointers as
!      argument; if non-â€˜NULLâ€™, the library is permitted to modify the
       arguments.
  
  _Arguments_:
       ARGC        intent(inout) An integer pointer with the number
!                  of arguments passed to the program or â€˜NULLâ€™.
       ARGV        intent(inout) A pointer to an array of strings
!                  with the command-line arguments or â€˜NULLâ€™.
  
  _Notes_:
       The function is modelled after the initialization function of the
*************** _Notes_:
*** 5641,5655 ****
  
  File: gfortran.info,  Node: _gfortran_caf_finish,  Next: _gfortran_caf_this_image,  Prev: _gfortran_caf_init,  Up: Function ABI Documentation
  
! 7.2.2 '_gfortran_caf_finish' -- Finalization function
  -----------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_finish (void)'
  
  _Description_:
       This function is called at the end of the Fortran main program, if
!      it has been compiled with the '-fcoarray=lib' option.
  
  _Notes_:
       For non-Fortran programs, it is recommended to call the function at
--- 5641,5655 ----
  
  File: gfortran.info,  Node: _gfortran_caf_finish,  Next: _gfortran_caf_this_image,  Prev: _gfortran_caf_init,  Up: Function ABI Documentation
  
! 7.2.2 â€˜_gfortran_caf_finishâ€™ -- Finalization function
  -----------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_finish (void)â€™
  
  _Description_:
       This function is called at the end of the Fortran main program, if
!      it has been compiled with the â€˜-fcoarray=libâ€™ option.
  
  _Notes_:
       For non-Fortran programs, it is recommended to call the function at
*************** _Notes_:
*** 5663,5695 ****
  
  File: gfortran.info,  Node: _gfortran_caf_this_image,  Next: _gfortran_caf_num_images,  Prev: _gfortran_caf_finish,  Up: Function ABI Documentation
  
! 7.2.3 '_gfortran_caf_this_image' -- Querying the image number
  -------------------------------------------------------------
  
  _Synopsis_:
!      'int _gfortran_caf_this_image (int distance)'
  
  _Description_:
       This function returns the current image number, which is a positive
       number.
  
  _Arguments_:
!      DISTANCE    As specified for the 'this_image' intrinsic in
                   TS18508.  Shall be a nonnegative number.
  
  _Notes_:
!      If the Fortran intrinsic 'this_image' is invoked without an
       argument, which is the only permitted form in Fortran 2008, GCC
!      passes '0' as first argument.
  
  
  File: gfortran.info,  Node: _gfortran_caf_num_images,  Next: _gfortran_caf_image_status,  Prev: _gfortran_caf_this_image,  Up: Function ABI Documentation
  
! 7.2.4 '_gfortran_caf_num_images' -- Querying the maximal number of images
  -------------------------------------------------------------------------
  
  _Synopsis_:
!      'int _gfortran_caf_num_images(int distance, int failed)'
  
  _Description_:
       This function returns the number of images in the current team, if
--- 5663,5695 ----
  
  File: gfortran.info,  Node: _gfortran_caf_this_image,  Next: _gfortran_caf_num_images,  Prev: _gfortran_caf_finish,  Up: Function ABI Documentation
  
! 7.2.3 â€˜_gfortran_caf_this_imageâ€™ -- Querying the image number
  -------------------------------------------------------------
  
  _Synopsis_:
!      â€˜int _gfortran_caf_this_image (int distance)â€™
  
  _Description_:
       This function returns the current image number, which is a positive
       number.
  
  _Arguments_:
!      DISTANCE    As specified for the â€˜this_imageâ€™ intrinsic in
                   TS18508.  Shall be a nonnegative number.
  
  _Notes_:
!      If the Fortran intrinsic â€˜this_imageâ€™ is invoked without an
       argument, which is the only permitted form in Fortran 2008, GCC
!      passes â€˜0â€™ as first argument.
  
  
  File: gfortran.info,  Node: _gfortran_caf_num_images,  Next: _gfortran_caf_image_status,  Prev: _gfortran_caf_this_image,  Up: Function ABI Documentation
  
! 7.2.4 â€˜_gfortran_caf_num_imagesâ€™ -- Querying the maximal number of images
  -------------------------------------------------------------------------
  
  _Synopsis_:
!      â€˜int _gfortran_caf_num_images(int distance, int failed)â€™
  
  _Description_:
       This function returns the number of images in the current team, if
*************** _Arguments_:
*** 5706,5730 ****
  
  _Notes_:
       This function follows TS18508.  If the num_image intrinsic has no
!      arguments, then the compiler passes 'distance=0' and 'failed=-1' to
       the function.
  
  
  File: gfortran.info,  Node: _gfortran_caf_image_status,  Next: _gfortran_caf_failed_images,  Prev: _gfortran_caf_num_images,  Up: Function ABI Documentation
  
! 7.2.5 '_gfortran_caf_image_status' -- Query the status of an image
  ------------------------------------------------------------------
  
  _Synopsis_:
!      'int _gfortran_caf_image_status (int image, caf_team_t * team)'
  
  _Description_:
       Get the status of the image given by the id IMAGE of the team given
       by TEAM.  Valid results are zero, for image is ok,
!      'STAT_STOPPED_IMAGE' from the ISO_FORTRAN_ENV module to indicate
!      that the image has been stopped and 'STAT_FAILED_IMAGE' also from
!      ISO_FORTRAN_ENV to indicate that the image has executed a 'FAIL
!      IMAGE' statement.
  
  _Arguments_:
       IMAGE       the positive scalar id of the image in the
--- 5706,5730 ----
  
  _Notes_:
       This function follows TS18508.  If the num_image intrinsic has no
!      arguments, then the compiler passes â€˜distance=0â€™ and â€˜failed=-1â€™ to
       the function.
  
  
  File: gfortran.info,  Node: _gfortran_caf_image_status,  Next: _gfortran_caf_failed_images,  Prev: _gfortran_caf_num_images,  Up: Function ABI Documentation
  
! 7.2.5 â€˜_gfortran_caf_image_statusâ€™ -- Query the status of an image
  ------------------------------------------------------------------
  
  _Synopsis_:
!      â€˜int _gfortran_caf_image_status (int image, caf_team_t * team)â€™
  
  _Description_:
       Get the status of the image given by the id IMAGE of the team given
       by TEAM.  Valid results are zero, for image is ok,
!      â€˜STAT_STOPPED_IMAGEâ€™ from the ISO_FORTRAN_ENV module to indicate
!      that the image has been stopped and â€˜STAT_FAILED_IMAGEâ€™ also from
!      ISO_FORTRAN_ENV to indicate that the image has executed a â€˜FAIL
!      IMAGEâ€™ statement.
  
  _Arguments_:
       IMAGE       the positive scalar id of the image in the
*************** _Notes_:
*** 5740,5750 ****
  
  File: gfortran.info,  Node: _gfortran_caf_failed_images,  Next: _gfortran_caf_stopped_images,  Prev: _gfortran_caf_image_status,  Up: Function ABI Documentation
  
! 7.2.6 '_gfortran_caf_failed_images' -- Get an array of the indexes of the failed images
  ---------------------------------------------------------------------------------------
  
  _Synopsis_:
!      'int _gfortran_caf_failed_images (caf_team_t * team, int * kind)'
  
  _Description_:
       Get an array of image indexes in the current TEAM that have failed.
--- 5740,5750 ----
  
  File: gfortran.info,  Node: _gfortran_caf_failed_images,  Next: _gfortran_caf_stopped_images,  Prev: _gfortran_caf_image_status,  Up: Function ABI Documentation
  
! 7.2.6 â€˜_gfortran_caf_failed_imagesâ€™ -- Get an array of the indexes of the failed images
  ---------------------------------------------------------------------------------------
  
  _Synopsis_:
!      â€˜int _gfortran_caf_failed_images (caf_team_t * team, int * kind)â€™
  
  _Description_:
       Get an array of image indexes in the current TEAM that have failed.
*************** _Notes_:
*** 5768,5778 ****
  
  File: gfortran.info,  Node: _gfortran_caf_stopped_images,  Next: _gfortran_caf_register,  Prev: _gfortran_caf_failed_images,  Up: Function ABI Documentation
  
! 7.2.7 '_gfortran_caf_stopped_images' -- Get an array of the indexes of the stopped images
  -----------------------------------------------------------------------------------------
  
  _Synopsis_:
!      'int _gfortran_caf_stopped_images (caf_team_t * team, int * kind)'
  
  _Description_:
       Get an array of image indexes in the current TEAM that have
--- 5768,5778 ----
  
  File: gfortran.info,  Node: _gfortran_caf_stopped_images,  Next: _gfortran_caf_register,  Prev: _gfortran_caf_failed_images,  Up: Function ABI Documentation
  
! 7.2.7 â€˜_gfortran_caf_stopped_imagesâ€™ -- Get an array of the indexes of the stopped images
  -----------------------------------------------------------------------------------------
  
  _Synopsis_:
!      â€˜int _gfortran_caf_stopped_images (caf_team_t * team, int * kind)â€™
  
  _Description_:
       Get an array of image indexes in the current TEAM that have
*************** _Notes_:
*** 5796,5840 ****
  
  File: gfortran.info,  Node: _gfortran_caf_register,  Next: _gfortran_caf_deregister,  Prev: _gfortran_caf_stopped_images,  Up: Function ABI Documentation
  
! 7.2.8 '_gfortran_caf_register' -- Registering coarrays
  ------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_register (size_t size, caf_register_t type,
       caf_token_t *token, gfc_descriptor_t *desc, int *stat, char
!      *errmsg, size_t errmsg_len)'
  
  _Description_:
       Registers memory for a coarray and creates a token to identify the
!      coarray.  The routine is called for both coarrays with 'SAVE'
!      attribute and using an explicit 'ALLOCATE' statement.  If an error
!      occurs and STAT is a 'NULL' pointer, the function shall abort with
       printing an error message and starting the error termination.  If
       no error occurs and STAT is present, it shall be set to zero.
!      Otherwise, it shall be set to a positive value and, if not-'NULL',
       ERRMSG shall be set to a string describing the failure.  The
!      routine shall register the memory provided in the 'DATA'-component
!      of the array descriptor DESC, when that component is non-'NULL',
       else it shall allocate sufficient memory and provide a pointer to
!      it in the 'DATA'-component of DESC.  The array descriptor has rank
       zero, when a scalar object is to be registered and the array
       descriptor may be invalid after the call to
!      '_gfortran_caf_register'.  When an array is to be allocated the
       descriptor persists.
  
!      For 'CAF_REGTYPE_COARRAY_STATIC' and 'CAF_REGTYPE_COARRAY_ALLOC',
       the passed size is the byte size requested.  For
!      'CAF_REGTYPE_LOCK_STATIC', 'CAF_REGTYPE_LOCK_ALLOC' and
!      'CAF_REGTYPE_CRITICAL' it is the array size or one for a scalar.
  
!      When 'CAF_REGTYPE_COARRAY_ALLOC_REGISTER_ONLY' is used, then only a
       token for an allocatable or pointer component is created.  The
!      'SIZE' parameter is not used then.  On the contrary when
!      'CAF_REGTYPE_COARRAY_ALLOC_ALLOCATE_ONLY' is specified, then the
       TOKEN needs to be registered by a previous call with regtype
!      'CAF_REGTYPE_COARRAY_ALLOC_REGISTER_ONLY' and either the memory
       specified in the DESC's data-ptr is registered or allocate when the
!      data-ptr is 'NULL'.
  
  _Arguments_:
       SIZE        For normal coarrays, the byte size of the
--- 5796,5840 ----
  
  File: gfortran.info,  Node: _gfortran_caf_register,  Next: _gfortran_caf_deregister,  Prev: _gfortran_caf_stopped_images,  Up: Function ABI Documentation
  
! 7.2.8 â€˜_gfortran_caf_registerâ€™ -- Registering coarrays
  ------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_register (size_t size, caf_register_t type,
       caf_token_t *token, gfc_descriptor_t *desc, int *stat, char
!      *errmsg, size_t errmsg_len)â€™
  
  _Description_:
       Registers memory for a coarray and creates a token to identify the
!      coarray.  The routine is called for both coarrays with â€˜SAVEâ€™
!      attribute and using an explicit â€˜ALLOCATEâ€™ statement.  If an error
!      occurs and STAT is a â€˜NULLâ€™ pointer, the function shall abort with
       printing an error message and starting the error termination.  If
       no error occurs and STAT is present, it shall be set to zero.
!      Otherwise, it shall be set to a positive value and, if not-â€˜NULLâ€™,
       ERRMSG shall be set to a string describing the failure.  The
!      routine shall register the memory provided in the â€˜DATAâ€™-component
!      of the array descriptor DESC, when that component is non-â€˜NULLâ€™,
       else it shall allocate sufficient memory and provide a pointer to
!      it in the â€˜DATAâ€™-component of DESC.  The array descriptor has rank
       zero, when a scalar object is to be registered and the array
       descriptor may be invalid after the call to
!      â€˜_gfortran_caf_registerâ€™.  When an array is to be allocated the
       descriptor persists.
  
!      For â€˜CAF_REGTYPE_COARRAY_STATICâ€™ and â€˜CAF_REGTYPE_COARRAY_ALLOCâ€™,
       the passed size is the byte size requested.  For
!      â€˜CAF_REGTYPE_LOCK_STATICâ€™, â€˜CAF_REGTYPE_LOCK_ALLOCâ€™ and
!      â€˜CAF_REGTYPE_CRITICALâ€™ it is the array size or one for a scalar.
  
!      When â€˜CAF_REGTYPE_COARRAY_ALLOC_REGISTER_ONLYâ€™ is used, then only a
       token for an allocatable or pointer component is created.  The
!      â€˜SIZEâ€™ parameter is not used then.  On the contrary when
!      â€˜CAF_REGTYPE_COARRAY_ALLOC_ALLOCATE_ONLYâ€™ is specified, then the
       TOKEN needs to be registered by a previous call with regtype
!      â€˜CAF_REGTYPE_COARRAY_ALLOC_REGISTER_ONLYâ€™ and either the memory
       specified in the DESC's data-ptr is registered or allocate when the
!      data-ptr is â€˜NULLâ€™.
  
  _Arguments_:
       SIZE        For normal coarrays, the byte size of the
*************** _Arguments_:
*** 5845,5853 ****
                   coarray.
       DESC        intent(inout) The (pseudo) array descriptor.
       STAT        intent(out) For allocatable coarrays, stores the
!                  STAT=; may be 'NULL'
       ERRMSG      intent(out) When an error occurs, this is set to
!                  an error message; may be 'NULL'
       ERRMSG_LEN  the buffer size of errmsg.
  
  _Notes_:
--- 5845,5853 ----
                   coarray.
       DESC        intent(inout) The (pseudo) array descriptor.
       STAT        intent(out) For allocatable coarrays, stores the
!                  STAT=; may be â€˜NULLâ€™
       ERRMSG      intent(out) When an error occurs, this is set to
!                  an error message; may be â€˜NULLâ€™
       ERRMSG_LEN  the buffer size of errmsg.
  
  _Notes_:
*************** _Notes_:
*** 5866,5872 ****
       allocation status.  Note that for critical blocks, the locking is
       only required on one image; in the locking statement, the processor
       shall always pass an image index of one for critical-block lock
!      variables ('CAF_REGTYPE_CRITICAL').  For lock types and
       critical-block variables, the initial value shall be unlocked (or,
       respectively, not in critical section) such as the value false; for
       event types, the initial state should be no event, e.g.  zero.
--- 5866,5872 ----
       allocation status.  Note that for critical blocks, the locking is
       only required on one image; in the locking statement, the processor
       shall always pass an image index of one for critical-block lock
!      variables (â€˜CAF_REGTYPE_CRITICALâ€™).  For lock types and
       critical-block variables, the initial value shall be unlocked (or,
       respectively, not in critical section) such as the value false; for
       event types, the initial state should be no event, e.g.  zero.
*************** _Notes_:
*** 5874,5885 ****
  
  File: gfortran.info,  Node: _gfortran_caf_deregister,  Next: _gfortran_caf_register_accessor,  Prev: _gfortran_caf_register,  Up: Function ABI Documentation
  
! 7.2.9 '_gfortran_caf_deregister' -- Deregistering coarrays
  ----------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_deregister (caf_token_t *token,
!      caf_deregister_t type, int *stat, char *errmsg, size_t errmsg_len)'
  
  _Description_:
       Called to free or deregister the memory of a coarray; the processor
--- 5874,5885 ----
  
  File: gfortran.info,  Node: _gfortran_caf_deregister,  Next: _gfortran_caf_register_accessor,  Prev: _gfortran_caf_register,  Up: Function ABI Documentation
  
! 7.2.9 â€˜_gfortran_caf_deregisterâ€™ -- Deregistering coarrays
  ----------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_deregister (caf_token_t *token,
!      caf_deregister_t type, int *stat, char *errmsg, size_t errmsg_len)â€™
  
  _Description_:
       Called to free or deregister the memory of a coarray; the processor
*************** _Description_:
*** 5887,5898 ****
       case of an error, this function shall fail with an error message,
       unless the STAT variable is not null.  The library is only expected
       to free memory it allocated itself during a call to
!      '_gfortran_caf_register'.
  
  _Arguments_:
       TOKEN       the token to free.
       TYPE        the type of action to take for the coarray.  A
!                  'CAF_DEREGTYPE_COARRAY_DEALLOCATE_ONLY' is
                   allowed only for allocatable or pointer
                   components of derived type coarrays.  The action
                   only deallocates the local memory without
--- 5887,5898 ----
       case of an error, this function shall fail with an error message,
       unless the STAT variable is not null.  The library is only expected
       to free memory it allocated itself during a call to
!      â€˜_gfortran_caf_registerâ€™.
  
  _Arguments_:
       TOKEN       the token to free.
       TYPE        the type of action to take for the coarray.  A
!                  â€˜CAF_DEREGTYPE_COARRAY_DEALLOCATE_ONLYâ€™ is
                   allowed only for allocatable or pointer
                   components of derived type coarrays.  The action
                   only deallocates the local memory without
*************** _Notes_:
*** 5910,5922 ****
  
  File: gfortran.info,  Node: _gfortran_caf_register_accessor,  Next: _gfortran_caf_register_accessors_finish,  Prev: _gfortran_caf_deregister,  Up: Function ABI Documentation
  
! 7.2.10 '_gfortran_caf_register_accessor' -- Register an accessor for remote access
  ----------------------------------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_register_accessor (const int hash, void
       (*accessor)(void **, int32_t *, void *, void *, size_t *, size_t
!      *))'
  
  _Description_:
       Identification of access funtions across images is done using a
--- 5910,5922 ----
  
  File: gfortran.info,  Node: _gfortran_caf_register_accessor,  Next: _gfortran_caf_register_accessors_finish,  Prev: _gfortran_caf_deregister,  Up: Function ABI Documentation
  
! 7.2.10 â€˜_gfortran_caf_register_accessorâ€™ -- Register an accessor for remote access
  ----------------------------------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_register_accessor (const int hash, void
       (*accessor)(void **, int32_t *, void *, void *, size_t *, size_t
!      *))â€™
  
  _Description_:
       Identification of access funtions across images is done using a
*************** _Description_:
*** 5924,5951 ****
       This routine is expected to register an accessor function pointer
       for the given hash in nearly constant time.  I.e.  it is expected
       to add the hash and accessor to a buffer and return.  Sorting shall
!      be done in '_gfortran_caf_register_accessors_finish'.
  
  _Arguments_:
       HASH        intent(in) The unique hash value this accessor
                   is to be identified by.
       ACCESSOR    intent(in) A pointer to the function on this
!                  image.  The function has the signature 'void
                   accessor (void **dst_ptr, int32_t *free_dst,
                   void *src_ptr, void *get_data, size_t
!                  *opt_src_charlen, size_t *opt_dst_charlen)'.
                   GFortran ensures that functions provided to
!                  '_gfortran_caf_register_accessor' adhere to this
                   interface.
  
  _Notes_:
       This function is required to have a nearly constant runtime
       complexity, because it will be called to register multiple accessor
       in a sequence.  GFortran ensures that before the first remote
!      accesses commences '_gfortran_caf_register_accessors_finish' is
       called at least once.  It is valid to register further accessors
!      after a call to '_gfortran_caf_register_accessors_finish'.  It is
!      invalid to call '_gfortran_caf_register_accessor' after the first
       remote access has been done.  See also *note
       _gfortran_caf_register_accessors_finish:: and *note
       _gfortran_caf_get_remote_function_index::
--- 5924,5951 ----
       This routine is expected to register an accessor function pointer
       for the given hash in nearly constant time.  I.e.  it is expected
       to add the hash and accessor to a buffer and return.  Sorting shall
!      be done in â€˜_gfortran_caf_register_accessors_finishâ€™.
  
  _Arguments_:
       HASH        intent(in) The unique hash value this accessor
                   is to be identified by.
       ACCESSOR    intent(in) A pointer to the function on this
!                  image.  The function has the signature â€˜void
                   accessor (void **dst_ptr, int32_t *free_dst,
                   void *src_ptr, void *get_data, size_t
!                  *opt_src_charlen, size_t *opt_dst_charlen)â€™.
                   GFortran ensures that functions provided to
!                  â€˜_gfortran_caf_register_accessorâ€™ adhere to this
                   interface.
  
  _Notes_:
       This function is required to have a nearly constant runtime
       complexity, because it will be called to register multiple accessor
       in a sequence.  GFortran ensures that before the first remote
!      accesses commences â€˜_gfortran_caf_register_accessors_finishâ€™ is
       called at least once.  It is valid to register further accessors
!      after a call to â€˜_gfortran_caf_register_accessors_finishâ€™.  It is
!      invalid to call â€˜_gfortran_caf_register_accessorâ€™ after the first
       remote access has been done.  See also *note
       _gfortran_caf_register_accessors_finish:: and *note
       _gfortran_caf_get_remote_function_index::
*************** _Notes_:
*** 5953,5969 ****
  
  File: gfortran.info,  Node: _gfortran_caf_register_accessors_finish,  Next: _gfortran_caf_get_remote_function_index,  Prev: _gfortran_caf_register_accessor,  Up: Function ABI Documentation
  
! 7.2.11 '_gfortran_caf_register_accessors_finish' -- Finish registering accessor functions
  -----------------------------------------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_register_accessors_finish ()'
  
  _Description_:
       Called to finalize registering of accessor functions.  This
       function is expected to prepare a lookup table that has fast lookup
       time for the hash supplied to
!      '_gfortran_caf_get_remote_function_index' and constant access time
       for indexing operations.
  
  _Arguments_:
--- 5953,5969 ----
  
  File: gfortran.info,  Node: _gfortran_caf_register_accessors_finish,  Next: _gfortran_caf_get_remote_function_index,  Prev: _gfortran_caf_register_accessor,  Up: Function ABI Documentation
  
! 7.2.11 â€˜_gfortran_caf_register_accessors_finishâ€™ -- Finish registering accessor functions
  -----------------------------------------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_register_accessors_finish ()â€™
  
  _Description_:
       Called to finalize registering of accessor functions.  This
       function is expected to prepare a lookup table that has fast lookup
       time for the hash supplied to
!      â€˜_gfortran_caf_get_remote_function_indexâ€™ and constant access time
       for indexing operations.
  
  _Arguments_:
*************** _Notes_:
*** 5979,5989 ****
  
  File: gfortran.info,  Node: _gfortran_caf_get_remote_function_index,  Next: _gfortran_caf_get_from_remote,  Prev: _gfortran_caf_register_accessors_finish,  Up: Function ABI Documentation
  
! 7.2.12 '_gfortran_caf_get_remote_function_index' -- Get the index of an accessor
  --------------------------------------------------------------------------------
  
  _Synopsis_:
!      'int _gfortran_caf_get_remote_function_index (const int hash)'
  
  _Description_:
       Return the index of the accessor in the lookup table build by *note
--- 5979,5989 ----
  
  File: gfortran.info,  Node: _gfortran_caf_get_remote_function_index,  Next: _gfortran_caf_get_from_remote,  Prev: _gfortran_caf_register_accessors_finish,  Up: Function ABI Documentation
  
! 7.2.12 â€˜_gfortran_caf_get_remote_function_indexâ€™ -- Get the index of an accessor
  --------------------------------------------------------------------------------
  
  _Synopsis_:
!      â€˜int _gfortran_caf_get_remote_function_index (const int hash)â€™
  
  _Description_:
       Return the index of the accessor in the lookup table build by *note
*************** _Description_:
*** 5991,6003 ****
       _gfortran_caf_register_accessors_finish::.  This function is
       expected to be fast, because it may be called often.  A log(N)
       lookup time for a given hash is preferred.  The reference
!      implementation uses 'bsearch ()', for example.  The index returned
       shall be an array index to be used by *note
       _gfortran_caf_get_from_remote::, i.e.  a constant time operation is
       mandatory for quick access.
  
       The GFortran compiler ensures that
!      '_gfortran_caf_get_remote_function_index' is called once only for
       each hash and the result be stored in a static variable to prevent
       future redundant lookups.
  
--- 5991,6003 ----
       _gfortran_caf_register_accessors_finish::.  This function is
       expected to be fast, because it may be called often.  A log(N)
       lookup time for a given hash is preferred.  The reference
!      implementation uses â€˜bsearch ()â€™, for example.  The index returned
       shall be an array index to be used by *note
       _gfortran_caf_get_from_remote::, i.e.  a constant time operation is
       mandatory for quick access.
  
       The GFortran compiler ensures that
!      â€˜_gfortran_caf_get_remote_function_indexâ€™ is called once only for
       each hash and the result be stored in a static variable to prevent
       future redundant lookups.
  
*************** _Arguments_:
*** 6006,6017 ****
  
  _Result_:
       The zero based index to access the accessor funtion in a lookup
!      table.  On error, '-1' can be returned.
  
  _Notes_:
       The function's complexity is expected to be significantly smaller
       than N, where N is the number of all accessors registered.
!      Although returning '-1' is valid, will this most likely crash the
       Fortran program when accessing the -1-th accessor function.  It is
       therefore advised to terminate with an error message, when the hash
       could not be found.
--- 6006,6017 ----
  
  _Result_:
       The zero based index to access the accessor funtion in a lookup
!      table.  On error, â€˜-1â€™ can be returned.
  
  _Notes_:
       The function's complexity is expected to be significantly smaller
       than N, where N is the number of all accessors registered.
!      Although returning â€˜-1â€™ is valid, will this most likely crash the
       Fortran program when accessing the -1-th accessor function.  It is
       therefore advised to terminate with an error message, when the hash
       could not be found.
*************** _Notes_:
*** 6019,6035 ****
  
  File: gfortran.info,  Node: _gfortran_caf_get_from_remote,  Next: _gfortran_caf_is_present_on_remote,  Prev: _gfortran_caf_get_remote_function_index,  Up: Function ABI Documentation
  
! 7.2.13 '_gfortran_caf_get_from_remote' -- Getting data from a remote image using a remote side accessor
  -------------------------------------------------------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_get_from_remote (caf_token_t token, const
       gfc_descriptor_t *opt_src_desc, const size_t *opt_src_charlen,
       const int image_index, const size_t dst_size, void **dst_data,
       size_t *opt_dst_charlen, gfc_descriptor_t *opt_dst_desc, const bool
       may_realloc_dst, const int getter_index, void *get_data, const
       size_t get_data_size, int *stat, caf_team_t *team, int
!      *team_number)'
  
  _Description_:
       Called to get a scalar, an array section or a whole array from a
--- 6019,6035 ----
  
  File: gfortran.info,  Node: _gfortran_caf_get_from_remote,  Next: _gfortran_caf_is_present_on_remote,  Prev: _gfortran_caf_get_remote_function_index,  Up: Function ABI Documentation
  
! 7.2.13 â€˜_gfortran_caf_get_from_remoteâ€™ -- Getting data from a remote image using a remote side accessor
  -------------------------------------------------------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_get_from_remote (caf_token_t token, const
       gfc_descriptor_t *opt_src_desc, const size_t *opt_src_charlen,
       const int image_index, const size_t dst_size, void **dst_data,
       size_t *opt_dst_charlen, gfc_descriptor_t *opt_dst_desc, const bool
       may_realloc_dst, const int getter_index, void *get_data, const
       size_t get_data_size, int *stat, caf_team_t *team, int
!      *team_number)â€™
  
  _Description_:
       Called to get a scalar, an array section or a whole array from a
*************** _Arguments_:
*** 6041,6060 ****
       OPT_SRC_DESCintent(in) A pointer to the descriptor when the
                   object identified by TOKEN is an array with a
                   descriptor.  The parameter needs to be set to
!                  'NULL', when TOKEN identifies a scalar.
       OPT_SRC_CHARLENintent(in) When the object to get is a char
                   array with deferred length, then this parameter
                   needs to be set to point to its length.  Else
!                  the parameter needs to be set to 'NULL'.
       IMAGE_INDEX intent(in) The ID of the remote image; must be a
!                  positive number.  'this_image ()' is valid.
       DST_SIZE    intent(in) The size of data expected to be
                   transferred from the remote image.  If the data
                   type to get is a string or string array, then
                   this needs to be set to the byte size of each
!                  character, i.e.  '4' for a 'CHARACTER (KIND=4)'
                   string.  The length of the string is then
!                  returned in 'opt_dst_charlen' (also for string
                   arrays).
       DST_DATA    intent(inout) A pointer to the adress the data
                   is stored.  To prevent copying of data into an
--- 6041,6060 ----
       OPT_SRC_DESCintent(in) A pointer to the descriptor when the
                   object identified by TOKEN is an array with a
                   descriptor.  The parameter needs to be set to
!                  â€˜NULLâ€™, when TOKEN identifies a scalar.
       OPT_SRC_CHARLENintent(in) When the object to get is a char
                   array with deferred length, then this parameter
                   needs to be set to point to its length.  Else
!                  the parameter needs to be set to â€˜NULLâ€™.
       IMAGE_INDEX intent(in) The ID of the remote image; must be a
!                  positive number.  â€˜this_image ()â€™ is valid.
       DST_SIZE    intent(in) The size of data expected to be
                   transferred from the remote image.  If the data
                   type to get is a string or string array, then
                   this needs to be set to the byte size of each
!                  character, i.e.  â€˜4â€™ for a â€˜CHARACTER (KIND=4)â€™
                   string.  The length of the string is then
!                  returned in â€˜opt_dst_charlenâ€™ (also for string
                   arrays).
       DST_DATA    intent(inout) A pointer to the adress the data
                   is stored.  To prevent copying of data into an
*************** _Arguments_:
*** 6079,6085 ****
                   DST_DATA or OPT_DST_DESC.
       GETTER_INDEXintent(in) The index of the accessor to execute
                   as returned by
!                  '_gfortran_caf_get_remote_function_index ()'.
       GET_DATA    intent(inout) Additional data needed in the
                   accessor.  I.e., when an array reference uses a
                   local variable V, it is transported in this
--- 6079,6085 ----
                   DST_DATA or OPT_DST_DESC.
       GETTER_INDEXintent(in) The index of the accessor to execute
                   as returned by
!                  â€˜_gfortran_caf_get_remote_function_index ()â€™.
       GET_DATA    intent(inout) Additional data needed in the
                   accessor.  I.e., when an array reference uses a
                   local variable V, it is transported in this
*************** _Arguments_:
*** 6089,6121 ****
                   accessor, but these changes are lost to the
                   calling Fortran program.
       GET_DATA_SIZEintent(in) The size of the GET_DATA structure.
!      STAT        intent(out) When non-'NULL' give the result of
                   the operation, i.e., zero on success and
!                  non-zero on error.  When 'NULL' and an error
                   occurs, then an error message is printed and the
                   program is terminated.
       TEAM        intent(in) The opaque team handle as returned by
!                  'FORM TEAM'.  Unused at the moment.
       TEAM_NUMBER intent(in) The number of the team this access is
                   to be part of.  Unused at the moment.
  
  _Notes_:
!      It is permitted to have 'image_index' equal the current image; the
       memory to get and the memory to store the data may (partially)
       overlap.  The implementation has to take care that it handles this
!      case, e.g.  using 'memmove' which handles (partially) overlapping
       memory.
  
  
  File: gfortran.info,  Node: _gfortran_caf_is_present_on_remote,  Next: _gfortran_caf_send_to_remote,  Prev: _gfortran_caf_get_from_remote,  Up: Function ABI Documentation
  
! 7.2.14 '_gfortran_caf_is_present_on_remote' -- Check that a coarray or a part of it is allocated on the remote image
  --------------------------------------------------------------------------------------------------------------------
  
  _Synopsis_:
!      'int32_t _gfortran_caf_is_present_on_remote (caf_token_t token,
       const int image_index, const int is_present_index, void *add_data,
!      const size_t add_data_size)'
  
  _Description_:
       Check if an allocatable coarray or a component of a derived type
--- 6089,6121 ----
                   accessor, but these changes are lost to the
                   calling Fortran program.
       GET_DATA_SIZEintent(in) The size of the GET_DATA structure.
!      STAT        intent(out) When non-â€˜NULLâ€™ give the result of
                   the operation, i.e., zero on success and
!                  non-zero on error.  When â€˜NULLâ€™ and an error
                   occurs, then an error message is printed and the
                   program is terminated.
       TEAM        intent(in) The opaque team handle as returned by
!                  â€˜FORM TEAMâ€™.  Unused at the moment.
       TEAM_NUMBER intent(in) The number of the team this access is
                   to be part of.  Unused at the moment.
  
  _Notes_:
!      It is permitted to have â€˜image_indexâ€™ equal the current image; the
       memory to get and the memory to store the data may (partially)
       overlap.  The implementation has to take care that it handles this
!      case, e.g.  using â€˜memmoveâ€™ which handles (partially) overlapping
       memory.
  
  
  File: gfortran.info,  Node: _gfortran_caf_is_present_on_remote,  Next: _gfortran_caf_send_to_remote,  Prev: _gfortran_caf_get_from_remote,  Up: Function ABI Documentation
  
! 7.2.14 â€˜_gfortran_caf_is_present_on_remoteâ€™ -- Check that a coarray or a part of it is allocated on the remote image
  --------------------------------------------------------------------------------------------------------------------
  
  _Synopsis_:
!      â€˜int32_t _gfortran_caf_is_present_on_remote (caf_token_t token,
       const int image_index, const int is_present_index, void *add_data,
!      const size_t add_data_size)â€™
  
  _Description_:
       Check if an allocatable coarray or a component of a derived type
*************** _Arguments_:
*** 6127,6136 ****
       TOKEN       intent(in) An opaque pointer identifying the
                   coarray.
       IMAGE_INDEX intent(in) The ID of the remote image; must be a
!                  positive number.  'this_image ()' is valid.
       IS_PRESENT_INDEXintent(in) The index of the accessor to execute
                   as returned by
!                  '_gfortran_caf_get_remote_function_index ()'.
       ADD_DATA    intent(inout) Additional data needed in the
                   accessor.  I.e., when an array reference uses a
                   local variable V, it is transported in this
--- 6127,6136 ----
       TOKEN       intent(in) An opaque pointer identifying the
                   coarray.
       IMAGE_INDEX intent(in) The ID of the remote image; must be a
!                  positive number.  â€˜this_image ()â€™ is valid.
       IS_PRESENT_INDEXintent(in) The index of the accessor to execute
                   as returned by
!                  â€˜_gfortran_caf_get_remote_function_index ()â€™.
       ADD_DATA    intent(inout) Additional data needed in the
                   accessor.  I.e., when an array reference uses a
                   local variable V, it is transported in this
*************** _Arguments_:
*** 6144,6159 ****
  
  File: gfortran.info,  Node: _gfortran_caf_send_to_remote,  Next: _gfortran_caf_transfer_between_remotes,  Prev: _gfortran_caf_is_present_on_remote,  Up: Function ABI Documentation
  
! 7.2.15 '_gfortran_caf_send_to_remote' -- Send data to a remote image using a remote side accessor to store it
  -------------------------------------------------------------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_send_to_remote (caf_token_t token,
       gfc_descriptor_t *opt_dst_desc, const size_t *opt_dst_charlen,
       const int image_index, const size_t src_size, const void *src_data,
       size_t *opt_src_charlen, const gfc_descriptor_t *opt_src_desc,
       const int setter_index, void *add_data, const size_t add_data_size,
!      int *stat, caf_team_t *team, int *team_number)'
  
  _Description_:
       Called to send a scalar, an array section or a whole array to a
--- 6144,6159 ----
  
  File: gfortran.info,  Node: _gfortran_caf_send_to_remote,  Next: _gfortran_caf_transfer_between_remotes,  Prev: _gfortran_caf_is_present_on_remote,  Up: Function ABI Documentation
  
! 7.2.15 â€˜_gfortran_caf_send_to_remoteâ€™ -- Send data to a remote image using a remote side accessor to store it
  -------------------------------------------------------------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_send_to_remote (caf_token_t token,
       gfc_descriptor_t *opt_dst_desc, const size_t *opt_dst_charlen,
       const int image_index, const size_t src_size, const void *src_data,
       size_t *opt_src_charlen, const gfc_descriptor_t *opt_src_desc,
       const int setter_index, void *add_data, const size_t add_data_size,
!      int *stat, caf_team_t *team, int *team_number)â€™
  
  _Description_:
       Called to send a scalar, an array section or a whole array to a
*************** _Arguments_:
*** 6166,6189 ****
       OPT_DST_DESCintent(inout) A pointer to the descriptor when
                   the object identified by TOKEN is an array with
                   a descriptor.  The parameter needs to be set to
!                  'NULL', when TOKEN identifies a scalar or is an
                   array without a descriptor.
       OPT_DST_CHARLENintent(in) When the object to send is a char
                   array with deferred length, then this parameter
                   needs to be set to point to its length.  Else
!                  the parameter needs to be set to 'NULL'.
       IMAGE_INDEX intent(in) The ID of the remote image; must be a
!                  positive number.  'this_image ()' is valid.
       SRC_SIZE    intent(in) The size of data expected to be
                   transferred to the remote image.  If the data
                   type to get is a string or string array, then
                   this needs to be set to the byte size of each
!                  character, i.e.  '4' for a 'CHARACTER (KIND=4)'
                   string.  The length of the string is then given
!                  in 'opt_src_charlen' (also for string arrays).
       SRC_DATA    intent(in) A pointer the data to be send to the
                   remote image.  When a descriptor is provided in
!                  'opt_src_desc' then this parameter can be
                   ignored by the library implementing the coarray
                   functionality.
       OPT_SRC_CHARLENintent(in) When a char array is send, this
--- 6166,6189 ----
       OPT_DST_DESCintent(inout) A pointer to the descriptor when
                   the object identified by TOKEN is an array with
                   a descriptor.  The parameter needs to be set to
!                  â€˜NULLâ€™, when TOKEN identifies a scalar or is an
                   array without a descriptor.
       OPT_DST_CHARLENintent(in) When the object to send is a char
                   array with deferred length, then this parameter
                   needs to be set to point to its length.  Else
!                  the parameter needs to be set to â€˜NULLâ€™.
       IMAGE_INDEX intent(in) The ID of the remote image; must be a
!                  positive number.  â€˜this_image ()â€™ is valid.
       SRC_SIZE    intent(in) The size of data expected to be
                   transferred to the remote image.  If the data
                   type to get is a string or string array, then
                   this needs to be set to the byte size of each
!                  character, i.e.  â€˜4â€™ for a â€˜CHARACTER (KIND=4)â€™
                   string.  The length of the string is then given
!                  in â€˜opt_src_charlenâ€™ (also for string arrays).
       SRC_DATA    intent(in) A pointer the data to be send to the
                   remote image.  When a descriptor is provided in
!                  â€˜opt_src_descâ€™ then this parameter can be
                   ignored by the library implementing the coarray
                   functionality.
       OPT_SRC_CHARLENintent(in) When a char array is send, this
*************** _Arguments_:
*** 6192,6198 ****
                   this parameter gives the handle.
       SETTER_INDEXintent(in) The index of the accessor to execute
                   as returned by
!                  '_gfortran_caf_get_remote_function_index ()'.
       ADD_DATA    intent(inout) Additional data needed in the
                   accessor.  I.e., when an array reference uses a
                   local variable V, it is transported in this
--- 6192,6198 ----
                   this parameter gives the handle.
       SETTER_INDEXintent(in) The index of the accessor to execute
                   as returned by
!                  â€˜_gfortran_caf_get_remote_function_index ()â€™.
       ADD_DATA    intent(inout) Additional data needed in the
                   accessor.  I.e., when an array reference uses a
                   local variable V, it is transported in this
*************** _Arguments_:
*** 6202,6232 ****
                   accessor, but these changes are lost to the
                   calling Fortran program.
       ADD_DATA_SIZEintent(in) The size of the ADD_DATA structure.
!      STAT        intent(out) When non-'NULL' give the result of
                   the operation, i.e., zero on success and
!                  non-zero on error.  When 'NULL' and an error
                   occurs, then an error message is printed and the
                   program is terminated.
       TEAM        intent(in) The opaque team handle as returned by
!                  'FORM TEAM'.  Unused at the moment.
       TEAM_NUMBER intent(in) The number of the team this access is
                   to be part of.  Unused at the moment.
  
  _Notes_:
!      It is permitted to have 'image_index' equal the current image; the
       memory to send the data to and the memory to read for the data may
       (partially) overlap.  The implementation has to take care that it
!      handles this case, e.g.  using 'memmove' which handles (partially)
       overlapping memory.
  
  
  File: gfortran.info,  Node: _gfortran_caf_transfer_between_remotes,  Next: _gfortran_caf_sendget_by_ref,  Prev: _gfortran_caf_send_to_remote,  Up: Function ABI Documentation
  
! 7.2.16 '_gfortran_caf_transfer_between_remotes' -- Initiate data transfer between to remote images
  --------------------------------------------------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_transfer_between_remotes (caf_token_t
       dst_token, gfc_descriptor_t *opt_dst_desc, size_t *opt_dst_charlen,
       const int dst_image_index, const int dst_access_index, void
       *dst_add_data, const size_t dst_add_data_size, caf_token_t
--- 6202,6232 ----
                   accessor, but these changes are lost to the
                   calling Fortran program.
       ADD_DATA_SIZEintent(in) The size of the ADD_DATA structure.
!      STAT        intent(out) When non-â€˜NULLâ€™ give the result of
                   the operation, i.e., zero on success and
!                  non-zero on error.  When â€˜NULLâ€™ and an error
                   occurs, then an error message is printed and the
                   program is terminated.
       TEAM        intent(in) The opaque team handle as returned by
!                  â€˜FORM TEAMâ€™.  Unused at the moment.
       TEAM_NUMBER intent(in) The number of the team this access is
                   to be part of.  Unused at the moment.
  
  _Notes_:
!      It is permitted to have â€˜image_indexâ€™ equal the current image; the
       memory to send the data to and the memory to read for the data may
       (partially) overlap.  The implementation has to take care that it
!      handles this case, e.g.  using â€˜memmoveâ€™ which handles (partially)
       overlapping memory.
  
  
  File: gfortran.info,  Node: _gfortran_caf_transfer_between_remotes,  Next: _gfortran_caf_sendget_by_ref,  Prev: _gfortran_caf_send_to_remote,  Up: Function ABI Documentation
  
! 7.2.16 â€˜_gfortran_caf_transfer_between_remotesâ€™ -- Initiate data transfer between to remote images
  --------------------------------------------------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_transfer_between_remotes (caf_token_t
       dst_token, gfc_descriptor_t *opt_dst_desc, size_t *opt_dst_charlen,
       const int dst_image_index, const int dst_access_index, void
       *dst_add_data, const size_t dst_add_data_size, caf_token_t
*************** _Synopsis_:
*** 6236,6247 ****
       src_add_data_size, const size_t src_size, const bool
       scalar_transfer, int *dst_stat, int *src_stat, caf_team_t
       *dst_team, int *dst_team_number, caf_team_t *src_team, int
!      *src_team_number) '
  
  _Description_:
       Initiates a transfer of data from one remote image to another
       remote image.  The call modifies the memory of the receiving remote
!      image given by 'dst_image_index'.  The 'src_image_index''s memory
       is not modified.  The call returns when the transfer has commenced.
  
  _Arguments_:
--- 6236,6247 ----
       src_add_data_size, const size_t src_size, const bool
       scalar_transfer, int *dst_stat, int *src_stat, caf_team_t
       *dst_team, int *dst_team_number, caf_team_t *src_team, int
!      *src_team_number) â€™
  
  _Description_:
       Initiates a transfer of data from one remote image to another
       remote image.  The call modifies the memory of the receiving remote
!      image given by â€˜dst_image_indexâ€™.  The â€˜src_image_indexâ€™'s memory
       is not modified.  The call returns when the transfer has commenced.
  
  _Arguments_:
*************** _Arguments_:
*** 6250,6268 ****
       OPT_DST_DESCintent(inout) A pointer to the descriptor when
                   the object identified by DST_TOKEN is an array
                   with a descriptor.  The parameter needs to be
!                  set to 'NULL', when DST_TOKEN identifies a
                   scalar or is an array without a descriptor.
       OPT_DST_CHARLENintent(in) When the object to modify on the
                   receiving image is a char array with deferred
                   length, then this parameter needs to be set to
                   point to its length.  Else the parameter needs
!                  to be set to 'NULL'.
       DST_IMAGE_INDEXintent(in) The ID of the receiving/destination
                   remote image; must be a positive number.
!                  'this_image ()' is valid.
       DST_ACCESS_INDEXintent(in) The index of the accessor to execute
                   on the receiving image as returned by
!                  '_gfortran_caf_get_remote_function_index ()'.
       DST_ADD_DATAintent(inout) Additional data needed in the
                   accessor on the receiving side.  I.e., when an
                   array reference uses a local variable V, it is
--- 6250,6268 ----
       OPT_DST_DESCintent(inout) A pointer to the descriptor when
                   the object identified by DST_TOKEN is an array
                   with a descriptor.  The parameter needs to be
!                  set to â€˜NULLâ€™, when DST_TOKEN identifies a
                   scalar or is an array without a descriptor.
       OPT_DST_CHARLENintent(in) When the object to modify on the
                   receiving image is a char array with deferred
                   length, then this parameter needs to be set to
                   point to its length.  Else the parameter needs
!                  to be set to â€˜NULLâ€™.
       DST_IMAGE_INDEXintent(in) The ID of the receiving/destination
                   remote image; must be a positive number.
!                  â€˜this_image ()â€™ is valid.
       DST_ACCESS_INDEXintent(in) The index of the accessor to execute
                   on the receiving image as returned by
!                  â€˜_gfortran_caf_get_remote_function_index ()â€™.
       DST_ADD_DATAintent(inout) Additional data needed in the
                   accessor on the receiving side.  I.e., when an
                   array reference uses a local variable V, it is
*************** _Arguments_:
*** 6279,6297 ****
       OPT_SRC_DESCintent(inout) A pointer to the descriptor when
                   the object identified by SRC_TOKEN is an array
                   with a descriptor.  The parameter needs to be
!                  set to 'NULL', when SRC_TOKEN identifies a
                   scalar or is an array without a descriptor.
       OPT_SRC_CHARLENintent(in) When the object to get from the
                   source image is a char array with deferred
                   length, then this parameter needs to be set to
                   point to its length.  Else the parameter needs
!                  to be set to 'NULL'.
       SRC_IMAGE_INDEXintent(in) The ID of the sending/source remote
!                  image; must be a positive number.  'this_image
!                  ()' is valid.
       SRC_ACCESS_INDEXintent(in) The index of the accessor to execute
                   on the sending image as returned by
!                  '_gfortran_caf_get_remote_function_index ()'.
       SRC_ADD_DATAintent(inout) Additional data needed in the
                   accessor on the sending side.  I.e., when an
                   array reference uses a local variable V, it is
--- 6279,6297 ----
       OPT_SRC_DESCintent(inout) A pointer to the descriptor when
                   the object identified by SRC_TOKEN is an array
                   with a descriptor.  The parameter needs to be
!                  set to â€˜NULLâ€™, when SRC_TOKEN identifies a
                   scalar or is an array without a descriptor.
       OPT_SRC_CHARLENintent(in) When the object to get from the
                   source image is a char array with deferred
                   length, then this parameter needs to be set to
                   point to its length.  Else the parameter needs
!                  to be set to â€˜NULLâ€™.
       SRC_IMAGE_INDEXintent(in) The ID of the sending/source remote
!                  image; must be a positive number.  â€˜this_image
!                  ()â€™ is valid.
       SRC_ACCESS_INDEXintent(in) The index of the accessor to execute
                   on the sending image as returned by
!                  â€˜_gfortran_caf_get_remote_function_index ()â€™.
       SRC_ADD_DATAintent(inout) Additional data needed in the
                   accessor on the sending side.  I.e., when an
                   array reference uses a local variable V, it is
*************** _Arguments_:
*** 6307,6358 ****
                   transferred between the images.  If the data
                   type to get is a string or string array, then
                   this needs to be set to the byte size of each
!                  character, i.e.  '4' for a 'CHARACTER (KIND=4)'
                   string.  The length of the string is then given
!                  in 'opt_src_charlen' and 'opt_dst_charlen' (also
                   for string arrays).
       SCALAR_TRANSFERintent(in) Is set to true when the data to be
                   transfered between the two images is not an
                   array with a descriptor.
!      DST_STAT    intent(out) When non-'NULL' give the result of
                   the operation on the receiving side, i.e., zero
!                  on success and non-zero on error.  When 'NULL'
                   and an error occurs, then an error message is
                   printed and the program is terminated.
!      SRC_STAT    intent(out) When non-'NULL' give the result of
                   the operation on the sending side, i.e., zero on
!                  success and non-zero on error.  When 'NULL' and
                   an error occurs, then an error message is
                   printed and the program is terminated.
       DST_TEAM    intent(in) The opaque team handle as returned by
!                  'FORM TEAM'.  Unused at the moment.
       DST_TEAM_NUMBERintent(in) The number of the team this access is
                   to be part of.  Unused at the moment.
       SRC_TEAM    intent(in) The opaque team handle as returned by
!                  'FORM TEAM'.  Unused at the moment.
       SRC_TEAM_NUMBERintent(in) The number of the team this access is
                   to be part of.  Unused at the moment.
  
  _Notes_:
!      It is permitted to have both 'dst_image_index' and
!      'src_image_index' equal the current image; the memory to send the
       data to and the memory to read for the data may (partially)
       overlap.  The implementation has to take care that it handles this
!      case, e.g.  using 'memmove' which handles (partially) overlapping
       memory.
  
  
  File: gfortran.info,  Node: _gfortran_caf_sendget_by_ref,  Next: _gfortran_caf_lock,  Prev: _gfortran_caf_transfer_between_remotes,  Up: Function ABI Documentation
  
! 7.2.17 '_gfortran_caf_sendget_by_ref' -- Sending data between remote images using enhanced references on both sides
  -------------------------------------------------------------------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_sendget_by_ref (caf_token_t dst_token, int
       dst_image_index, caf_reference_t *dst_refs, caf_token_t src_token,
       int src_image_index, caf_reference_t *src_refs, int dst_kind, int
       src_kind, bool may_require_tmp, int *dst_stat, int *src_stat, int
!      dst_type, int src_type)'
  
  _Description_:
       Called to send a scalar, an array section or a whole array from a
--- 6307,6358 ----
                   transferred between the images.  If the data
                   type to get is a string or string array, then
                   this needs to be set to the byte size of each
!                  character, i.e.  â€˜4â€™ for a â€˜CHARACTER (KIND=4)â€™
                   string.  The length of the string is then given
!                  in â€˜opt_src_charlenâ€™ and â€˜opt_dst_charlenâ€™ (also
                   for string arrays).
       SCALAR_TRANSFERintent(in) Is set to true when the data to be
                   transfered between the two images is not an
                   array with a descriptor.
!      DST_STAT    intent(out) When non-â€˜NULLâ€™ give the result of
                   the operation on the receiving side, i.e., zero
!                  on success and non-zero on error.  When â€˜NULLâ€™
                   and an error occurs, then an error message is
                   printed and the program is terminated.
!      SRC_STAT    intent(out) When non-â€˜NULLâ€™ give the result of
                   the operation on the sending side, i.e., zero on
!                  success and non-zero on error.  When â€˜NULLâ€™ and
                   an error occurs, then an error message is
                   printed and the program is terminated.
       DST_TEAM    intent(in) The opaque team handle as returned by
!                  â€˜FORM TEAMâ€™.  Unused at the moment.
       DST_TEAM_NUMBERintent(in) The number of the team this access is
                   to be part of.  Unused at the moment.
       SRC_TEAM    intent(in) The opaque team handle as returned by
!                  â€˜FORM TEAMâ€™.  Unused at the moment.
       SRC_TEAM_NUMBERintent(in) The number of the team this access is
                   to be part of.  Unused at the moment.
  
  _Notes_:
!      It is permitted to have both â€˜dst_image_indexâ€™ and
!      â€˜src_image_indexâ€™ equal the current image; the memory to send the
       data to and the memory to read for the data may (partially)
       overlap.  The implementation has to take care that it handles this
!      case, e.g.  using â€˜memmoveâ€™ which handles (partially) overlapping
       memory.
  
  
  File: gfortran.info,  Node: _gfortran_caf_sendget_by_ref,  Next: _gfortran_caf_lock,  Prev: _gfortran_caf_transfer_between_remotes,  Up: Function ABI Documentation
  
! 7.2.17 â€˜_gfortran_caf_sendget_by_refâ€™ -- Sending data between remote images using enhanced references on both sides
  -------------------------------------------------------------------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_sendget_by_ref (caf_token_t dst_token, int
       dst_image_index, caf_reference_t *dst_refs, caf_token_t src_token,
       int src_image_index, caf_reference_t *src_refs, int dst_kind, int
       src_kind, bool may_require_tmp, int *dst_stat, int *src_stat, int
!      dst_type, int src_type)â€™
  
  _Description_:
       Called to send a scalar, an array section or a whole array from a
*************** _Arguments_:
*** 6375,6395 ****
                   structure to get the data.
       DST_KIND    intent(in) Kind of the destination argument
       SRC_KIND    intent(in) Kind of the source argument
!      MAY_REQUIRE_TMPintent(in) The variable is 'false' when it is
                   known at compile time that the DEST and SRC
                   either cannot overlap or overlap (fully or
                   partially) such that walking SRC and DEST in
                   elementwise order (honoring the stride value)
                   does not lead to wrong results.  Otherwise, the
!                  value is 'true'.
!      DST_STAT    intent(out) when non-'NULL' give the result of
                   the send-operation, i.e., zero on success and
!                  nonzero on error.  When 'NULL' and an error
                   occurs, then an error message is printed and the
                   program is terminated.
!      SRC_STAT    intent(out) When non-'NULL' give the result of
                   the get-operation, i.e., zero on success and
!                  nonzero on error.  When 'NULL' and an error
                   occurs, then an error message is printed and the
                   program is terminated.
       DST_TYPE    intent(in) Give the type of the destination.
--- 6375,6395 ----
                   structure to get the data.
       DST_KIND    intent(in) Kind of the destination argument
       SRC_KIND    intent(in) Kind of the source argument
!      MAY_REQUIRE_TMPintent(in) The variable is â€˜falseâ€™ when it is
                   known at compile time that the DEST and SRC
                   either cannot overlap or overlap (fully or
                   partially) such that walking SRC and DEST in
                   elementwise order (honoring the stride value)
                   does not lead to wrong results.  Otherwise, the
!                  value is â€˜trueâ€™.
!      DST_STAT    intent(out) when non-â€˜NULLâ€™ give the result of
                   the send-operation, i.e., zero on success and
!                  nonzero on error.  When â€˜NULLâ€™ and an error
                   occurs, then an error message is printed and the
                   program is terminated.
!      SRC_STAT    intent(out) When non-â€˜NULLâ€™ give the result of
                   the get-operation, i.e., zero on success and
!                  nonzero on error.  When â€˜NULLâ€™ and an error
                   occurs, then an error message is printed and the
                   program is terminated.
       DST_TYPE    intent(in) Give the type of the destination.
*************** _Notes_:
*** 6406,6416 ****
       SRC_IMAGE_INDEX and DST_IMAGE_INDEX; the memory of the send-to and
       the send-from might (partially) overlap in that case.  The
       implementation has to take care that it handles this case, e.g.
!      using 'memmove' which handles (partially) overlapping memory.  If
       MAY_REQUIRE_TMP is true, the library might additionally create a
       temporary variable, unless additional checks show that this is not
       required (e.g.  because walking backward is possible or because
!      both arrays are contiguous and 'memmove' takes care of overlap
       issues).
  
       Note that the assignment of a scalar to an array is permitted.  In
--- 6406,6416 ----
       SRC_IMAGE_INDEX and DST_IMAGE_INDEX; the memory of the send-to and
       the send-from might (partially) overlap in that case.  The
       implementation has to take care that it handles this case, e.g.
!      using â€˜memmoveâ€™ which handles (partially) overlapping memory.  If
       MAY_REQUIRE_TMP is true, the library might additionally create a
       temporary variable, unless additional checks show that this is not
       required (e.g.  because walking backward is possible or because
!      both arrays are contiguous and â€˜memmoveâ€™ takes care of overlap
       issues).
  
       Note that the assignment of a scalar to an array is permitted.  In
*************** _Notes_:
*** 6425,6443 ****
  
  File: gfortran.info,  Node: _gfortran_caf_lock,  Next: _gfortran_caf_unlock,  Prev: _gfortran_caf_sendget_by_ref,  Up: Function ABI Documentation
  
! 7.2.18 '_gfortran_caf_lock' -- Locking a lock variable
  ------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_lock (caf_token_t token, size_t index, int
       image_index, int *acquired_lock, int *stat, char *errmsg, size_t
!      errmsg_len)'
  
  _Description_:
       Acquire a lock on the given image on a scalar locking variable or
       for the given array element for an array-valued variable.  If the
!      ACQUIRED_LOCK is 'NULL', the function returns after having obtained
!      the lock.  If it is non-'NULL', then ACQUIRED_LOCK is assigned the
       value true (one) when the lock could be obtained and false (zero)
       otherwise.  Locking a lock variable that has already been locked by
       the same image is an error.
--- 6425,6443 ----
  
  File: gfortran.info,  Node: _gfortran_caf_lock,  Next: _gfortran_caf_unlock,  Prev: _gfortran_caf_sendget_by_ref,  Up: Function ABI Documentation
  
! 7.2.18 â€˜_gfortran_caf_lockâ€™ -- Locking a lock variable
  ------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_lock (caf_token_t token, size_t index, int
       image_index, int *acquired_lock, int *stat, char *errmsg, size_t
!      errmsg_len)â€™
  
  _Description_:
       Acquire a lock on the given image on a scalar locking variable or
       for the given array element for an array-valued variable.  If the
!      ACQUIRED_LOCK is â€˜NULLâ€™, the function returns after having obtained
!      the lock.  If it is non-â€˜NULLâ€™, then ACQUIRED_LOCK is assigned the
       value true (one) when the lock could be obtained and false (zero)
       otherwise.  Locking a lock variable that has already been locked by
       the same image is an error.
*************** _Notes_:
*** 6465,6476 ****
  
  File: gfortran.info,  Node: _gfortran_caf_unlock,  Next: _gfortran_caf_event_post,  Prev: _gfortran_caf_lock,  Up: Function ABI Documentation
  
! 7.2.19 '_gfortran_caf_lock' -- Unlocking a lock variable
  --------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_unlock (caf_token_t token, size_t index, int
!      image_index, int *stat, char *errmsg, size_t errmsg_len)'
  
  _Description_:
       Release a lock on the given image on a scalar locking variable or
--- 6465,6476 ----
  
  File: gfortran.info,  Node: _gfortran_caf_unlock,  Next: _gfortran_caf_event_post,  Prev: _gfortran_caf_lock,  Up: Function ABI Documentation
  
! 7.2.19 â€˜_gfortran_caf_lockâ€™ -- Unlocking a lock variable
  --------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_unlock (caf_token_t token, size_t index, int
!      image_index, int *stat, char *errmsg, size_t errmsg_len)â€™
  
  _Description_:
       Release a lock on the given image on a scalar locking variable or
*************** _Notes_:
*** 6500,6511 ****
  
  File: gfortran.info,  Node: _gfortran_caf_event_post,  Next: _gfortran_caf_event_wait,  Prev: _gfortran_caf_unlock,  Up: Function ABI Documentation
  
! 7.2.20 '_gfortran_caf_event_post' -- Post an event
  --------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_event_post (caf_token_t token, size_t index,
!      int image_index, int *stat, char *errmsg, size_t errmsg_len)'
  
  _Description_:
       Increment the event count of the specified event variable.
--- 6500,6511 ----
  
  File: gfortran.info,  Node: _gfortran_caf_event_post,  Next: _gfortran_caf_event_wait,  Prev: _gfortran_caf_unlock,  Up: Function ABI Documentation
  
! 7.2.20 â€˜_gfortran_caf_event_postâ€™ -- Post an event
  --------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_event_post (caf_token_t token, size_t index,
!      int image_index, int *stat, char *errmsg, size_t errmsg_len)â€™
  
  _Description_:
       Increment the event count of the specified event variable.
*************** _Notes_:
*** 6528,6544 ****
       variable.  The statement is an image-control statement but does not
       imply sync memory.  Still, all preceding push communications of
       this image to the specified remote image have to be completed
!      before 'event_wait' on the remote image returns.
  
  
  File: gfortran.info,  Node: _gfortran_caf_event_wait,  Next: _gfortran_caf_event_query,  Prev: _gfortran_caf_event_post,  Up: Function ABI Documentation
  
! 7.2.21 '_gfortran_caf_event_wait' -- Wait that an event occurred
  ----------------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_event_wait (caf_token_t token, size_t index,
!      int until_count, int *stat, char *errmsg, size_t errmsg_len)'
  
  _Description_:
       Wait until the event count has reached at least the specified
--- 6528,6544 ----
       variable.  The statement is an image-control statement but does not
       imply sync memory.  Still, all preceding push communications of
       this image to the specified remote image have to be completed
!      before â€˜event_waitâ€™ on the remote image returns.
  
  
  File: gfortran.info,  Node: _gfortran_caf_event_wait,  Next: _gfortran_caf_event_query,  Prev: _gfortran_caf_event_post,  Up: Function ABI Documentation
  
! 7.2.21 â€˜_gfortran_caf_event_waitâ€™ -- Wait that an event occurred
  ----------------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_event_wait (caf_token_t token, size_t index,
!      int until_count, int *stat, char *errmsg, size_t errmsg_len)â€™
  
  _Description_:
       Wait until the event count has reached at least the specified
*************** _Notes_:
*** 6571,6588 ****
  
       The statement is an image-control statement but does not imply sync
       memory.  Still, all preceding push communications of this image to
!      the specified remote image have to be completed before 'event_wait'
       on the remote image returns.
  
  
  File: gfortran.info,  Node: _gfortran_caf_event_query,  Next: _gfortran_caf_sync_all,  Prev: _gfortran_caf_event_wait,  Up: Function ABI Documentation
  
! 7.2.22 '_gfortran_caf_event_query' -- Query event count
  -------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_event_query (caf_token_t token, size_t index,
!      int image_index, int *count, int *stat)'
  
  _Description_:
       Return the event count of the specified event variable.
--- 6571,6588 ----
  
       The statement is an image-control statement but does not imply sync
       memory.  Still, all preceding push communications of this image to
!      the specified remote image have to be completed before â€˜event_waitâ€™
       on the remote image returns.
  
  
  File: gfortran.info,  Node: _gfortran_caf_event_query,  Next: _gfortran_caf_sync_all,  Prev: _gfortran_caf_event_wait,  Up: Function ABI Documentation
  
! 7.2.22 â€˜_gfortran_caf_event_queryâ€™ -- Query event count
  -------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_event_query (caf_token_t token, size_t index,
!      int image_index, int *count, int *stat)â€™
  
  _Description_:
       Return the event count of the specified event variable.
*************** _Arguments_:
*** 6601,6607 ****
  
  _Notes_:
       The typical use is to check the local event variable to only call
!      'event_wait' when the data is available.  However, a coindexed
       variable is permitted; there is no ordering or synchronization
       implied.  It acts like an atomic fetch of the value of the event
       variable.
--- 6601,6607 ----
  
  _Notes_:
       The typical use is to check the local event variable to only call
!      â€˜event_waitâ€™ when the data is available.  However, a coindexed
       variable is permitted; there is no ordering or synchronization
       implied.  It acts like an atomic fetch of the value of the event
       variable.
*************** _Notes_:
*** 6609,6620 ****
  
  File: gfortran.info,  Node: _gfortran_caf_sync_all,  Next: _gfortran_caf_sync_images,  Prev: _gfortran_caf_event_query,  Up: Function ABI Documentation
  
! 7.2.23 '_gfortran_caf_sync_all' -- All-image barrier
  ----------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_sync_all (int *stat, char *errmsg, size_t
!      errmsg_len)'
  
  _Description_:
       Synchronization of all images in the current team; the program only
--- 6609,6620 ----
  
  File: gfortran.info,  Node: _gfortran_caf_sync_all,  Next: _gfortran_caf_sync_images,  Prev: _gfortran_caf_event_query,  Up: Function ABI Documentation
  
! 7.2.23 â€˜_gfortran_caf_sync_allâ€™ -- All-image barrier
  ----------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_sync_all (int *stat, char *errmsg, size_t
!      errmsg_len)â€™
  
  _Description_:
       Synchronization of all images in the current team; the program only
*************** _Arguments_:
*** 6632,6658 ****
  
  File: gfortran.info,  Node: _gfortran_caf_sync_images,  Next: _gfortran_caf_sync_memory,  Prev: _gfortran_caf_sync_all,  Up: Function ABI Documentation
  
! 7.2.24 '_gfortran_caf_sync_images' -- Barrier for selected images
  -----------------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_sync_images (int count, int images[], int
!      *stat, char *errmsg, size_t errmsg_len)'
  
  _Description_:
       Synchronization between the specified images; the program only
       continues on a given image after this function has been called on
       all images specified for that image.  Note that one image can wait
!      for all other images in the current team (e.g.  via 'sync
!      images(*)') while those only wait for that specific image.
!      Additionally, 'sync images' ensures that all pending data transfers
       of previous segments have completed.
  
  _Arguments_:
       COUNT       intent(in) The number of images that are
                   provided in the next argument.  For a zero-sized
!                  array, the value is zero.  For 'sync images
!                  (*)', the value is -1.
       IMAGES      intent(in) An array with the images provided by
                   the user.  If COUNT is zero, a NULL pointer is
                   passed.
--- 6632,6658 ----
  
  File: gfortran.info,  Node: _gfortran_caf_sync_images,  Next: _gfortran_caf_sync_memory,  Prev: _gfortran_caf_sync_all,  Up: Function ABI Documentation
  
! 7.2.24 â€˜_gfortran_caf_sync_imagesâ€™ -- Barrier for selected images
  -----------------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_sync_images (int count, int images[], int
!      *stat, char *errmsg, size_t errmsg_len)â€™
  
  _Description_:
       Synchronization between the specified images; the program only
       continues on a given image after this function has been called on
       all images specified for that image.  Note that one image can wait
!      for all other images in the current team (e.g.  via â€˜sync
!      images(*)â€™) while those only wait for that specific image.
!      Additionally, â€˜sync imagesâ€™ ensures that all pending data transfers
       of previous segments have completed.
  
  _Arguments_:
       COUNT       intent(in) The number of images that are
                   provided in the next argument.  For a zero-sized
!                  array, the value is zero.  For â€˜sync images
!                  (*)â€™, the value is -1.
       IMAGES      intent(in) An array with the images provided by
                   the user.  If COUNT is zero, a NULL pointer is
                   passed.
*************** _Arguments_:
*** 6665,6676 ****
  
  File: gfortran.info,  Node: _gfortran_caf_sync_memory,  Next: _gfortran_caf_error_stop,  Prev: _gfortran_caf_sync_images,  Up: Function ABI Documentation
  
! 7.2.25 '_gfortran_caf_sync_memory' -- Wait for completion of segment-memory operations
  --------------------------------------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_sync_memory (int *stat, char *errmsg, size_t
!      errmsg_len)'
  
  _Description_:
       Acts as optimization barrier between different segments.  It also
--- 6665,6676 ----
  
  File: gfortran.info,  Node: _gfortran_caf_sync_memory,  Next: _gfortran_caf_error_stop,  Prev: _gfortran_caf_sync_images,  Up: Function ABI Documentation
  
! 7.2.25 â€˜_gfortran_caf_sync_memoryâ€™ -- Wait for completion of segment-memory operations
  --------------------------------------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_sync_memory (int *stat, char *errmsg, size_t
!      errmsg_len)â€™
  
  _Description_:
       Acts as optimization barrier between different segments.  It also
*************** _Arguments_:
*** 6685,6704 ****
       ERRMSG_LEN  intent(in) the buffer size of errmsg
  
  _Notes_:
!      A simple implementation could be '__asm__ __volatile__
!      ("":::"memory")' to prevent code movements.
  
  
  File: gfortran.info,  Node: _gfortran_caf_error_stop,  Next: _gfortran_caf_error_stop_str,  Prev: _gfortran_caf_sync_memory,  Up: Function ABI Documentation
  
! 7.2.26 '_gfortran_caf_error_stop' -- Error termination with exit code
  ---------------------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_error_stop (int error)'
  
  _Description_:
!      Invoked for an 'ERROR STOP' statement that has an integer argument.
       The function should terminate the program with the specified exit
       code.
  
--- 6685,6704 ----
       ERRMSG_LEN  intent(in) the buffer size of errmsg
  
  _Notes_:
!      A simple implementation could be â€˜__asm__ __volatile__
!      ("":::"memory")â€™ to prevent code movements.
  
  
  File: gfortran.info,  Node: _gfortran_caf_error_stop,  Next: _gfortran_caf_error_stop_str,  Prev: _gfortran_caf_sync_memory,  Up: Function ABI Documentation
  
! 7.2.26 â€˜_gfortran_caf_error_stopâ€™ -- Error termination with exit code
  ---------------------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_error_stop (int error)â€™
  
  _Description_:
!      Invoked for an â€˜ERROR STOPâ€™ statement that has an integer argument.
       The function should terminate the program with the specified exit
       code.
  
*************** _Arguments_:
*** 6708,6721 ****
  
  File: gfortran.info,  Node: _gfortran_caf_error_stop_str,  Next: _gfortran_caf_fail_image,  Prev: _gfortran_caf_error_stop,  Up: Function ABI Documentation
  
! 7.2.27 '_gfortran_caf_error_stop_str' -- Error termination with string
  ----------------------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_error_stop (const char *string, size_t len)'
  
  _Description_:
!      Invoked for an 'ERROR STOP' statement that has a string as
       argument.  The function should terminate the program with a
       nonzero-exit code.
  
--- 6708,6721 ----
  
  File: gfortran.info,  Node: _gfortran_caf_error_stop_str,  Next: _gfortran_caf_fail_image,  Prev: _gfortran_caf_error_stop,  Up: Function ABI Documentation
  
! 7.2.27 â€˜_gfortran_caf_error_stop_strâ€™ -- Error termination with string
  ----------------------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_error_stop (const char *string, size_t len)â€™
  
  _Description_:
!      Invoked for an â€˜ERROR STOPâ€™ statement that has a string as
       argument.  The function should terminate the program with a
       nonzero-exit code.
  
*************** _Arguments_:
*** 6727,6740 ****
  
  File: gfortran.info,  Node: _gfortran_caf_fail_image,  Next: _gfortran_caf_atomic_define,  Prev: _gfortran_caf_error_stop_str,  Up: Function ABI Documentation
  
! 7.2.28 '_gfortran_caf_fail_image' -- Mark the image failed and end its execution
  --------------------------------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_fail_image ()'
  
  _Description_:
!      Invoked for an 'FAIL IMAGE' statement.  The function should
       terminate the current image.
  
  _Notes_:
--- 6727,6740 ----
  
  File: gfortran.info,  Node: _gfortran_caf_fail_image,  Next: _gfortran_caf_atomic_define,  Prev: _gfortran_caf_error_stop_str,  Up: Function ABI Documentation
  
! 7.2.28 â€˜_gfortran_caf_fail_imageâ€™ -- Mark the image failed and end its execution
  --------------------------------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_fail_image ()â€™
  
  _Description_:
!      Invoked for an â€˜FAIL IMAGEâ€™ statement.  The function should
       terminate the current image.
  
  _Notes_:
*************** _Notes_:
*** 6743,6755 ****
  
  File: gfortran.info,  Node: _gfortran_caf_atomic_define,  Next: _gfortran_caf_atomic_ref,  Prev: _gfortran_caf_fail_image,  Up: Function ABI Documentation
  
! 7.2.29 '_gfortran_caf_atomic_define' -- Atomic variable assignment
  ------------------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_atomic_define (caf_token_t token, size_t
       offset, int image_index, void *value, int *stat, int type, int
!      kind)'
  
  _Description_:
       Assign atomically a value to an integer or logical variable.
--- 6743,6755 ----
  
  File: gfortran.info,  Node: _gfortran_caf_atomic_define,  Next: _gfortran_caf_atomic_ref,  Prev: _gfortran_caf_fail_image,  Up: Function ABI Documentation
  
! 7.2.29 â€˜_gfortran_caf_atomic_defineâ€™ -- Atomic variable assignment
  ------------------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_atomic_define (caf_token_t token, size_t
       offset, int image_index, void *value, int *stat, int type, int
!      kind)â€™
  
  _Description_:
       Assign atomically a value to an integer or logical variable.
*************** _Arguments_:
*** 6767,6785 ****
                   reference
       STAT        intent(out) Stores the status STAT= and may be
                   NULL.
!      TYPE        intent(in) The data type, i.e.  'BT_INTEGER' (1)
!                  or 'BT_LOGICAL' (2).
!      KIND        intent(in) The kind value (only 4; always 'int')
  
  
  File: gfortran.info,  Node: _gfortran_caf_atomic_ref,  Next: _gfortran_caf_atomic_cas,  Prev: _gfortran_caf_atomic_define,  Up: Function ABI Documentation
  
! 7.2.30 '_gfortran_caf_atomic_ref' -- Atomic variable reference
  --------------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_atomic_ref (caf_token_t token, size_t offset,
!      int image_index, void *value, int *stat, int type, int kind)'
  
  _Description_:
       Reference atomically a value of a kind-4 integer or logical
--- 6767,6785 ----
                   reference
       STAT        intent(out) Stores the status STAT= and may be
                   NULL.
!      TYPE        intent(in) The data type, i.e.  â€˜BT_INTEGERâ€™ (1)
!                  or â€˜BT_LOGICALâ€™ (2).
!      KIND        intent(in) The kind value (only 4; always â€˜intâ€™)
  
  
  File: gfortran.info,  Node: _gfortran_caf_atomic_ref,  Next: _gfortran_caf_atomic_cas,  Prev: _gfortran_caf_atomic_define,  Up: Function ABI Documentation
  
! 7.2.30 â€˜_gfortran_caf_atomic_refâ€™ -- Atomic variable reference
  --------------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_atomic_ref (caf_token_t token, size_t offset,
!      int image_index, void *value, int *stat, int type, int kind)â€™
  
  _Description_:
       Reference atomically a value of a kind-4 integer or logical
*************** _Arguments_:
*** 6798,6817 ****
                   referenced variable.
       STAT        intent(out) Stores the status STAT= and may be
                   NULL.
!      TYPE        the data type, i.e.  'BT_INTEGER' (1) or
!                  'BT_LOGICAL' (2).
!      KIND        The kind value (only 4; always 'int')
  
  
  File: gfortran.info,  Node: _gfortran_caf_atomic_cas,  Next: _gfortran_caf_atomic_op,  Prev: _gfortran_caf_atomic_ref,  Up: Function ABI Documentation
  
! 7.2.31 '_gfortran_caf_atomic_cas' -- Atomic compare and swap
  ------------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_atomic_cas (caf_token_t token, size_t offset,
       int image_index, void *old, void *compare, void *new_val, int
!      *stat, int type, int kind)'
  
  _Description_:
       Atomic compare and swap of a kind-4 integer or logical variable.
--- 6798,6817 ----
                   referenced variable.
       STAT        intent(out) Stores the status STAT= and may be
                   NULL.
!      TYPE        the data type, i.e.  â€˜BT_INTEGERâ€™ (1) or
!                  â€˜BT_LOGICALâ€™ (2).
!      KIND        The kind value (only 4; always â€˜intâ€™)
  
  
  File: gfortran.info,  Node: _gfortran_caf_atomic_cas,  Next: _gfortran_caf_atomic_op,  Prev: _gfortran_caf_atomic_ref,  Up: Function ABI Documentation
  
! 7.2.31 â€˜_gfortran_caf_atomic_casâ€™ -- Atomic compare and swap
  ------------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_atomic_cas (caf_token_t token, size_t offset,
       int image_index, void *old, void *compare, void *new_val, int
!      *stat, int type, int kind)â€™
  
  _Description_:
       Atomic compare and swap of a kind-4 integer or logical variable.
*************** _Arguments_:
*** 6832,6869 ****
       COMPARE     intent(in) The value used for comparison.
       NEW_VAL     intent(in) The new value for the atomic
                   variable, assigned to the atomic variable, if
!                  'compare' equals the value of the atomic
                   variable.
       STAT        intent(out) Stores the status STAT= and may be
                   NULL.
!      TYPE        intent(in) the data type, i.e.  'BT_INTEGER' (1)
!                  or 'BT_LOGICAL' (2).
!      KIND        intent(in) The kind value (only 4; always 'int')
  
  
  File: gfortran.info,  Node: _gfortran_caf_atomic_op,  Next: _gfortran_caf_co_broadcast,  Prev: _gfortran_caf_atomic_cas,  Up: Function ABI Documentation
  
! 7.2.32 '_gfortran_caf_atomic_op' -- Atomic operation
  ----------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_atomic_op (int op, caf_token_t token, size_t
       offset, int image_index, void *value, void *old, int *stat, int
!      type, int kind)'
  
  _Description_:
       Apply an operation atomically to an atomic integer or logical
       variable.  After the operation, OLD contains the value just before
       the operation, which, respectively, adds (GFC_CAF_ATOMIC_ADD)
!      atomically the 'value' to the atomic integer variable or does a
       bitwise AND, OR or exclusive OR between the atomic variable and
       VALUE; the result is then stored in the atomic variable.
  
  _Arguments_:
       OP          intent(in) the operation to be performed;
!                  possible values 'GFC_CAF_ATOMIC_ADD' (1),
!                  'GFC_CAF_ATOMIC_AND' (2), 'GFC_CAF_ATOMIC_OR'
!                  (3), 'GFC_CAF_ATOMIC_XOR' (4).
       TOKEN       intent(in) An opaque pointer identifying the
                   coarray.
       OFFSET      intent(in) The number of bytes the actual data
--- 6832,6869 ----
       COMPARE     intent(in) The value used for comparison.
       NEW_VAL     intent(in) The new value for the atomic
                   variable, assigned to the atomic variable, if
!                  â€˜compareâ€™ equals the value of the atomic
                   variable.
       STAT        intent(out) Stores the status STAT= and may be
                   NULL.
!      TYPE        intent(in) the data type, i.e.  â€˜BT_INTEGERâ€™ (1)
!                  or â€˜BT_LOGICALâ€™ (2).
!      KIND        intent(in) The kind value (only 4; always â€˜intâ€™)
  
  
  File: gfortran.info,  Node: _gfortran_caf_atomic_op,  Next: _gfortran_caf_co_broadcast,  Prev: _gfortran_caf_atomic_cas,  Up: Function ABI Documentation
  
! 7.2.32 â€˜_gfortran_caf_atomic_opâ€™ -- Atomic operation
  ----------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_atomic_op (int op, caf_token_t token, size_t
       offset, int image_index, void *value, void *old, int *stat, int
!      type, int kind)â€™
  
  _Description_:
       Apply an operation atomically to an atomic integer or logical
       variable.  After the operation, OLD contains the value just before
       the operation, which, respectively, adds (GFC_CAF_ATOMIC_ADD)
!      atomically the â€˜valueâ€™ to the atomic integer variable or does a
       bitwise AND, OR or exclusive OR between the atomic variable and
       VALUE; the result is then stored in the atomic variable.
  
  _Arguments_:
       OP          intent(in) the operation to be performed;
!                  possible values â€˜GFC_CAF_ATOMIC_ADDâ€™ (1),
!                  â€˜GFC_CAF_ATOMIC_ANDâ€™ (2), â€˜GFC_CAF_ATOMIC_ORâ€™
!                  (3), â€˜GFC_CAF_ATOMIC_XORâ€™ (4).
       TOKEN       intent(in) An opaque pointer identifying the
                   coarray.
       OFFSET      intent(in) The number of bytes the actual data
*************** _Arguments_:
*** 6876,6898 ****
                   just before the atomic operation.
       VAL         intent(in) The new value for the atomic
                   variable, assigned to the atomic variable, if
!                  'compare' equals the value of the atomic
                   variable.
       STAT        intent(out) Stores the status STAT= and may be
                   NULL.
!      TYPE        intent(in) the data type, i.e.  'BT_INTEGER' (1)
!                  or 'BT_LOGICAL' (2)
!      KIND        intent(in) the kind value (only 4; always 'int')
  
  
  File: gfortran.info,  Node: _gfortran_caf_co_broadcast,  Next: _gfortran_caf_co_max,  Prev: _gfortran_caf_atomic_op,  Up: Function ABI Documentation
  
! 7.2.33 '_gfortran_caf_co_broadcast' -- Sending data to all images
  -----------------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_co_broadcast (gfc_descriptor_t *a, int
!      source_image, int *stat, char *errmsg, size_t errmsg_len)'
  
  _Description_:
       Distribute a value from a given image to all other images in the
--- 6876,6898 ----
                   just before the atomic operation.
       VAL         intent(in) The new value for the atomic
                   variable, assigned to the atomic variable, if
!                  â€˜compareâ€™ equals the value of the atomic
                   variable.
       STAT        intent(out) Stores the status STAT= and may be
                   NULL.
!      TYPE        intent(in) the data type, i.e.  â€˜BT_INTEGERâ€™ (1)
!                  or â€˜BT_LOGICALâ€™ (2)
!      KIND        intent(in) the kind value (only 4; always â€˜intâ€™)
  
  
  File: gfortran.info,  Node: _gfortran_caf_co_broadcast,  Next: _gfortran_caf_co_max,  Prev: _gfortran_caf_atomic_op,  Up: Function ABI Documentation
  
! 7.2.33 â€˜_gfortran_caf_co_broadcastâ€™ -- Sending data to all images
  -----------------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_co_broadcast (gfc_descriptor_t *a, int
!      source_image, int *stat, char *errmsg, size_t errmsg_len)â€™
  
  _Description_:
       Distribute a value from a given image to all other images in the
*************** _Arguments_:
*** 6913,6924 ****
  
  File: gfortran.info,  Node: _gfortran_caf_co_max,  Next: _gfortran_caf_co_min,  Prev: _gfortran_caf_co_broadcast,  Up: Function ABI Documentation
  
! 7.2.34 '_gfortran_caf_co_max' -- Collective maximum reduction
  -------------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_co_max (gfc_descriptor_t *a, int result_image,
!      int *stat, char *errmsg, int a_len, size_t errmsg_len)'
  
  _Description_:
       Calculates for each array element of the variable A the maximum
--- 6913,6924 ----
  
  File: gfortran.info,  Node: _gfortran_caf_co_max,  Next: _gfortran_caf_co_min,  Prev: _gfortran_caf_co_broadcast,  Up: Function ABI Documentation
  
! 7.2.34 â€˜_gfortran_caf_co_maxâ€™ -- Collective maximum reduction
  -------------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_co_max (gfc_descriptor_t *a, int result_image,
!      int *stat, char *errmsg, int a_len, size_t errmsg_len)â€™
  
  _Description_:
       Calculates for each array element of the variable A the maximum
*************** _Notes_:
*** 6949,6960 ****
  
  File: gfortran.info,  Node: _gfortran_caf_co_min,  Next: _gfortran_caf_co_sum,  Prev: _gfortran_caf_co_max,  Up: Function ABI Documentation
  
! 7.2.35 '_gfortran_caf_co_min' -- Collective minimum reduction
  -------------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_co_min (gfc_descriptor_t *a, int result_image,
!      int *stat, char *errmsg, int a_len, size_t errmsg_len)'
  
  _Description_:
       Calculates for each array element of the variable A the minimum
--- 6949,6960 ----
  
  File: gfortran.info,  Node: _gfortran_caf_co_min,  Next: _gfortran_caf_co_sum,  Prev: _gfortran_caf_co_max,  Up: Function ABI Documentation
  
! 7.2.35 â€˜_gfortran_caf_co_minâ€™ -- Collective minimum reduction
  -------------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_co_min (gfc_descriptor_t *a, int result_image,
!      int *stat, char *errmsg, int a_len, size_t errmsg_len)â€™
  
  _Description_:
       Calculates for each array element of the variable A the minimum
*************** _Notes_:
*** 6985,6996 ****
  
  File: gfortran.info,  Node: _gfortran_caf_co_sum,  Next: _gfortran_caf_co_reduce,  Prev: _gfortran_caf_co_min,  Up: Function ABI Documentation
  
! 7.2.36 '_gfortran_caf_co_sum' -- Collective summing reduction
  -------------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_co_sum (gfc_descriptor_t *a, int result_image,
!      int *stat, char *errmsg, size_t errmsg_len)'
  
  _Description_:
       Calculates for each array element of the variable A the sum of all
--- 6985,6996 ----
  
  File: gfortran.info,  Node: _gfortran_caf_co_sum,  Next: _gfortran_caf_co_reduce,  Prev: _gfortran_caf_co_min,  Up: Function ABI Documentation
  
! 7.2.36 â€˜_gfortran_caf_co_sumâ€™ -- Collective summing reduction
  -------------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_co_sum (gfc_descriptor_t *a, int result_image,
!      int *stat, char *errmsg, size_t errmsg_len)â€™
  
  _Description_:
       Calculates for each array element of the variable A the sum of all
*************** _Notes_:
*** 7020,7032 ****
  
  File: gfortran.info,  Node: _gfortran_caf_co_reduce,  Prev: _gfortran_caf_co_sum,  Up: Function ABI Documentation
  
! 7.2.37 '_gfortran_caf_co_reduce' -- Generic collective reduction
  ----------------------------------------------------------------
  
  _Synopsis_:
!      'void _gfortran_caf_co_reduce (gfc_descriptor_t *a, void * (*opr)
       (void *, void *), int opr_flags, int result_image, int *stat, char
!      *errmsg, int a_len, size_t errmsg_len)'
  
  _Description_:
       Calculates for each array element of the variable A the reduction
--- 7020,7032 ----
  
  File: gfortran.info,  Node: _gfortran_caf_co_reduce,  Prev: _gfortran_caf_co_sum,  Up: Function ABI Documentation
  
! 7.2.37 â€˜_gfortran_caf_co_reduceâ€™ -- Generic collective reduction
  ----------------------------------------------------------------
  
  _Synopsis_:
!      â€˜void _gfortran_caf_co_reduce (gfc_descriptor_t *a, void * (*opr)
       (void *, void *), int opr_flags, int result_image, int *stat, char
!      *errmsg, int a_len, size_t errmsg_len)â€™
  
  _Description_:
       Calculates for each array element of the variable A the reduction
*************** _Description_:
*** 7036,7046 ****
       mathematically commutative and associative operation.
  
       The OPR_FLAGS denote the following; the values are bitwise ored.
!      'GFC_CAF_BYREF' (1) if the result should be returned by reference;
!      'GFC_CAF_HIDDENLEN' (2) whether the result and argument string
!      lengths shall be specified as hidden arguments; 'GFC_CAF_ARG_VALUE'
       (4) whether the arguments shall be passed by value,
!      'GFC_CAF_ARG_DESC' (8) whether the arguments shall be passed by
       descriptor.
  
  _Arguments_:
--- 7036,7046 ----
       mathematically commutative and associative operation.
  
       The OPR_FLAGS denote the following; the values are bitwise ored.
!      â€˜GFC_CAF_BYREFâ€™ (1) if the result should be returned by reference;
!      â€˜GFC_CAF_HIDDENLENâ€™ (2) whether the result and argument string
!      lengths shall be specified as hidden arguments; â€˜GFC_CAF_ARG_VALUEâ€™
       (4) whether the arguments shall be passed by value,
!      â€˜GFC_CAF_ARG_DESCâ€™ (8) whether the arguments shall be passed by
       descriptor.
  
  _Arguments_:
*************** File: gfortran.info,  Node: Intrinsic Pr
*** 7082,7375 ****
  * Menu:
  
  * Introduction:         Introduction to Intrinsics
! * 'ABORT':         ABORT,     Abort the program
! * 'ABS':           ABS,       Absolute value
! * 'ACCESS':        ACCESS,    Checks file access modes
! * 'ACHAR':         ACHAR,     Character in ASCII collating sequence
! * 'ACOS':          ACOS,      Arccosine function
! * 'ACOSD':         ACOSD,     Arccosine function, degrees
! * 'ACOSH':         ACOSH,     Inverse hyperbolic cosine function
! * 'ADJUSTL':       ADJUSTL,   Left adjust a string
! * 'ADJUSTR':       ADJUSTR,   Right adjust a string
! * 'AIMAG':         AIMAG,     Imaginary part of complex number
! * 'AINT':          AINT,      Truncate to a whole number
! * 'ALARM':         ALARM,     Set an alarm clock
! * 'ALL':           ALL,       Determine if all values are true
! * 'ALLOCATED':     ALLOCATED, Status of allocatable entity
! * 'AND':           AND,       Bitwise logical AND
! * 'ANINT':         ANINT,     Nearest whole number
! * 'ANY':           ANY,       Determine if any values are true
! * 'ASIN':          ASIN,      Arcsine function
! * 'ASIND':         ASIND,     Arcsine function, degrees
! * 'ASINH':         ASINH,     Inverse hyperbolic sine function
! * 'ASSOCIATED':    ASSOCIATED, Status of a pointer or pointer/target pair
! * 'ATAN':          ATAN,      Arctangent function
! * 'ATAND':         ATAND,     Arctangent function, degrees
! * 'ATAN2':         ATAN2,     Arctangent function
! * 'ATAN2D':        ATAN2D,    Arctangent function, degrees
! * 'ATANH':         ATANH,     Inverse hyperbolic tangent function
! * 'ATOMIC_ADD':    ATOMIC_ADD, Atomic ADD operation
! * 'ATOMIC_AND':    ATOMIC_AND, Atomic bitwise AND operation
! * 'ATOMIC_CAS':    ATOMIC_CAS, Atomic compare and swap
! * 'ATOMIC_DEFINE': ATOMIC_DEFINE, Setting a variable atomically
! * 'ATOMIC_FETCH_ADD': ATOMIC_FETCH_ADD, Atomic ADD operation with prior fetch
! * 'ATOMIC_FETCH_AND': ATOMIC_FETCH_AND, Atomic bitwise AND operation with prior fetch
! * 'ATOMIC_FETCH_OR': ATOMIC_FETCH_OR, Atomic bitwise OR operation with prior fetch
! * 'ATOMIC_FETCH_XOR': ATOMIC_FETCH_XOR, Atomic bitwise XOR operation with prior fetch
! * 'ATOMIC_OR':     ATOMIC_OR, Atomic bitwise OR operation
! * 'ATOMIC_REF':    ATOMIC_REF, Obtaining the value of a variable atomically
! * 'ATOMIC_XOR':    ATOMIC_XOR, Atomic bitwise OR operation
! * 'BACKTRACE':     BACKTRACE, Show a backtrace
! * 'BESSEL_J0':     BESSEL_J0, Bessel function of the first kind of order 0
! * 'BESSEL_J1':     BESSEL_J1, Bessel function of the first kind of order 1
! * 'BESSEL_JN':     BESSEL_JN, Bessel function of the first kind
! * 'BESSEL_Y0':     BESSEL_Y0, Bessel function of the second kind of order 0
! * 'BESSEL_Y1':     BESSEL_Y1, Bessel function of the second kind of order 1
! * 'BESSEL_YN':     BESSEL_YN, Bessel function of the second kind
! * 'BGE':           BGE,       Bitwise greater than or equal to
! * 'BGT':           BGT,       Bitwise greater than
! * 'BIT_SIZE':      BIT_SIZE,  Bit size inquiry function
! * 'BLE':           BLE,       Bitwise less than or equal to
! * 'BLT':           BLT,       Bitwise less than
! * 'BTEST':         BTEST,     Bit test function
! * 'C_ASSOCIATED':  C_ASSOCIATED, Status of a C pointer
! * 'C_F_POINTER':   C_F_POINTER, Convert C into Fortran pointer
! * 'C_F_PROCPOINTER': C_F_PROCPOINTER, Convert C into Fortran procedure pointer
! * 'C_FUNLOC':      C_FUNLOC,  Obtain the C address of a procedure
! * 'C_LOC':         C_LOC,     Obtain the C address of an object
! * 'C_SIZEOF':      C_SIZEOF,  Size in bytes of an expression
! * 'CEILING':       CEILING,   Integer ceiling function
! * 'CHAR':          CHAR,      Integer-to-character conversion function
! * 'CHDIR':         CHDIR,     Change working directory
! * 'CHMOD':         CHMOD,     Change access permissions of files
! * 'CMPLX':         CMPLX,     Complex conversion function
! * 'CO_BROADCAST':  CO_BROADCAST, Copy a value to all images the current set of images
! * 'CO_MAX':        CO_MAX,    Maximal value on the current set of images
! * 'CO_MIN':        CO_MIN,    Minimal value on the current set of images
! * 'CO_REDUCE':     CO_REDUCE, Reduction of values on the current set of images
! * 'CO_SUM':        CO_SUM,    Sum of values on the current set of images
! * 'COMMAND_ARGUMENT_COUNT': COMMAND_ARGUMENT_COUNT, Get number of command line arguments
! * 'COMPILER_OPTIONS': COMPILER_OPTIONS, Options passed to the compiler
! * 'COMPILER_VERSION': COMPILER_VERSION, Compiler version string
! * 'COMPLEX':       COMPLEX,   Complex conversion function
! * 'CONJG':         CONJG,     Complex conjugate function
! * 'COS':           COS,       Cosine function
! * 'COSD':          COSD,      Cosine function, degrees
! * 'COSH':          COSH,      Hyperbolic cosine function
! * 'COTAN':         COTAN,     Cotangent function
! * 'COTAND':        COTAND,    Cotangent function, degrees
! * 'COUNT':         COUNT,     Count occurrences of TRUE in an array
! * 'CPU_TIME':      CPU_TIME,  CPU time subroutine
! * 'CSHIFT':        CSHIFT,    Circular shift elements of an array
! * 'CTIME':         CTIME,     Subroutine (or function) to convert a time into a string
! * 'DATE_AND_TIME': DATE_AND_TIME, Date and time subroutine
! * 'DBLE':          DBLE,      Double precision conversion function
! * 'DCMPLX':        DCMPLX,    Double complex conversion function
! * 'DIGITS':        DIGITS,    Significant digits function
! * 'DIM':           DIM,       Positive difference
! * 'DOT_PRODUCT':   DOT_PRODUCT, Dot product function
! * 'DPROD':         DPROD,     Double product function
! * 'DREAL':         DREAL,     Double real part function
! * 'DSHIFTL':       DSHIFTL,   Combined left shift
! * 'DSHIFTR':       DSHIFTR,   Combined right shift
! * 'DTIME':         DTIME,     Execution time subroutine (or function)
! * 'EOSHIFT':       EOSHIFT,   End-off shift elements of an array
! * 'EPSILON':       EPSILON,   Epsilon function
! * 'ERF':           ERF,       Error function
! * 'ERFC':          ERFC,      Complementary error function
! * 'ERFC_SCALED':   ERFC_SCALED, Exponentially-scaled complementary error function
! * 'ETIME':         ETIME,     Execution time subroutine (or function)
! * 'EVENT_QUERY': EVENT_QUERY, Query whether a coarray event has occurred
! * 'EXECUTE_COMMAND_LINE': EXECUTE_COMMAND_LINE, Execute a shell command
! * 'EXIT':          EXIT,      Exit the program with status.
! * 'EXP':           EXP,       Exponential function
! * 'EXPONENT':      EXPONENT,  Exponent function
! * 'EXTENDS_TYPE_OF': EXTENDS_TYPE_OF,  Query dynamic type for extension
! * 'FDATE':         FDATE,     Subroutine (or function) to get the current time as a string
! * 'FGET':          FGET,      Read a single character in stream mode from stdin
! * 'FGETC':         FGETC,     Read a single character in stream mode
! * 'FINDLOC':       FINDLOC,   Search an array for a value
! * 'FLOOR':         FLOOR,     Integer floor function
! * 'FLUSH':         FLUSH,     Flush I/O unit(s)
! * 'FNUM':          FNUM,      File number function
! * 'FPUT':          FPUT,      Write a single character in stream mode to stdout
! * 'FPUTC':         FPUTC,     Write a single character in stream mode
! * 'FRACTION':      FRACTION,  Fractional part of the model representation
! * 'FREE':          FREE,      Memory de-allocation subroutine
! * 'FSEEK':         FSEEK,     Low level file positioning subroutine
! * 'FSTAT':         FSTAT,     Get file status
! * 'FTELL':         FTELL,     Current stream position
! * 'GAMMA':         GAMMA,     Gamma function
! * 'GERROR':        GERROR,    Get last system error message
! * 'GETARG':        GETARG,    Get command line arguments
! * 'GET_COMMAND':   GET_COMMAND, Get the entire command line
! * 'GET_COMMAND_ARGUMENT': GET_COMMAND_ARGUMENT, Get command line arguments
! * 'GETCWD':        GETCWD,    Get current working directory
! * 'GETENV':        GETENV,    Get an environmental variable
! * 'GET_ENVIRONMENT_VARIABLE': GET_ENVIRONMENT_VARIABLE, Get an environmental variable
! * 'GETGID':        GETGID,    Group ID function
! * 'GETLOG':        GETLOG,    Get login name
! * 'GETPID':        GETPID,    Process ID function
! * 'GETUID':        GETUID,    User ID function
! * 'GMTIME':        GMTIME,    Convert time to GMT info
! * 'HOSTNM':        HOSTNM,    Get system host name
! * 'HUGE':          HUGE,      Largest number of a kind
! * 'HYPOT':         HYPOT,     Euclidean distance function
! * 'IACHAR':        IACHAR,    Code in ASCII collating sequence
! * 'IALL':          IALL,      Bitwise AND of array elements
! * 'IAND':          IAND,      Bitwise logical and
! * 'IANY':          IANY,      Bitwise OR of array elements
! * 'IARGC':         IARGC,     Get the number of command line arguments
! * 'IBCLR':         IBCLR,     Clear bit
! * 'IBITS':         IBITS,     Bit extraction
! * 'IBSET':         IBSET,     Set bit
! * 'ICHAR':         ICHAR,     Character-to-integer conversion function
! * 'IDATE':         IDATE,     Current local time (day/month/year)
! * 'IEOR':          IEOR,      Bitwise logical exclusive or
! * 'IERRNO':        IERRNO,    Function to get the last system error number
! * 'IMAGE_INDEX':   IMAGE_INDEX, Cosubscript to image index conversion
! * 'INDEX':         INDEX intrinsic, Position of a substring within a string
! * 'INT':           INT,       Convert to integer type
! * 'INT2':          INT2,      Convert to 16-bit integer type
! * 'INT8':          INT8,      Convert to 64-bit integer type
! * 'IOR':           IOR,       Bitwise logical or
! * 'IPARITY':       IPARITY,   Bitwise XOR of array elements
! * 'IRAND':         IRAND,     Integer pseudo-random number
! * 'IS_CONTIGUOUS':  IS_CONTIGUOUS, Test whether an array is contiguous
! * 'IS_IOSTAT_END':  IS_IOSTAT_END, Test for end-of-file value
! * 'IS_IOSTAT_EOR':  IS_IOSTAT_EOR, Test for end-of-record value
! * 'ISATTY':        ISATTY,    Whether a unit is a terminal device
! * 'ISHFT':         ISHFT,     Shift bits
! * 'ISHFTC':        ISHFTC,    Shift bits circularly
! * 'ISNAN':         ISNAN,     Tests for a NaN
! * 'ITIME':         ITIME,     Current local time (hour/minutes/seconds)
! * 'KILL':          KILL,      Send a signal to a process
! * 'KIND':          KIND,      Kind of an entity
! * 'LBOUND':        LBOUND,    Lower dimension bounds of an array
! * 'LCOBOUND':      LCOBOUND,  Lower codimension bounds of an array
! * 'LEADZ':         LEADZ,     Number of leading zero bits of an integer
! * 'LEN':           LEN,       Length of a character entity
! * 'LEN_TRIM':      LEN_TRIM,  Length of a character entity without trailing blank characters
! * 'LGE':           LGE,       Lexical greater than or equal
! * 'LGT':           LGT,       Lexical greater than
! * 'LINK':          LINK,      Create a hard link
! * 'LLE':           LLE,       Lexical less than or equal
! * 'LLT':           LLT,       Lexical less than
! * 'LNBLNK':        LNBLNK,    Index of the last non-blank character in a string
! * 'LOC':           LOC,       Returns the address of a variable
! * 'LOG':           LOG,       Logarithm function
! * 'LOG10':         LOG10,     Base 10 logarithm function
! * 'LOG_GAMMA':     LOG_GAMMA, Logarithm of the Gamma function
! * 'LOGICAL':       LOGICAL,   Convert to logical type
! * 'LSHIFT':        LSHIFT,    Left shift bits
! * 'LSTAT':         LSTAT,     Get file status
! * 'LTIME':         LTIME,     Convert time to local time info
! * 'MALLOC':        MALLOC,    Dynamic memory allocation function
! * 'MASKL':         MASKL,     Left justified mask
! * 'MASKR':         MASKR,     Right justified mask
! * 'MATMUL':        MATMUL,    matrix multiplication
! * 'MAX':           MAX,       Maximum value of an argument list
! * 'MAXEXPONENT':   MAXEXPONENT, Maximum exponent of a real kind
! * 'MAXLOC':        MAXLOC,    Location of the maximum value within an array
! * 'MAXVAL':        MAXVAL,    Maximum value of an array
! * 'MCLOCK':        MCLOCK,    Time function
! * 'MCLOCK8':       MCLOCK8,   Time function (64-bit)
! * 'MERGE':         MERGE,     Merge arrays
! * 'MERGE_BITS':    MERGE_BITS, Merge of bits under mask
! * 'MIN':           MIN,       Minimum value of an argument list
! * 'MINEXPONENT':   MINEXPONENT, Minimum exponent of a real kind
! * 'MINLOC':        MINLOC,    Location of the minimum value within an array
! * 'MINVAL':        MINVAL,    Minimum value of an array
! * 'MOD':           MOD,       Remainder function
! * 'MODULO':        MODULO,    Modulo function
! * 'MOVE_ALLOC':    MOVE_ALLOC, Move allocation from one object to another
! * 'MVBITS':        MVBITS,    Move bits from one integer to another
! * 'NEAREST':       NEAREST,   Nearest representable number
! * 'NEW_LINE':      NEW_LINE,  New line character
! * 'NINT':          NINT,      Nearest whole number
! * 'NORM2':         NORM2,     Euclidean vector norm
! * 'NOT':           NOT,       Logical negation
! * 'NULL':          NULL,      Function that returns an disassociated pointer
! * 'NUM_IMAGES':    NUM_IMAGES, Number of images
! * 'OR':            OR,        Bitwise logical OR
! * 'OUT_OF_RANGE':  OUT_OF_RANGE, Range check for numerical conversion
! * 'PACK':          PACK,      Pack an array into an array of rank one
! * 'PARITY':        PARITY,    Reduction with exclusive OR
! * 'PERROR':        PERROR,    Print system error message
! * 'POPCNT':        POPCNT,    Number of bits set
! * 'POPPAR':        POPPAR,    Parity of the number of bits set
! * 'PRECISION':     PRECISION, Decimal precision of a real kind
! * 'PRESENT':       PRESENT,   Determine whether an optional dummy argument is specified
! * 'PRODUCT':       PRODUCT,   Product of array elements
! * 'RADIX':         RADIX,     Base of a data model
! * 'RAN':           RAN,       Real pseudo-random number
! * 'RAND':          RAND,      Real pseudo-random number
! * 'RANDOM_INIT':   RANDOM_INIT, Initialize pseudo-random number generator
! * 'RANDOM_NUMBER': RANDOM_NUMBER, Pseudo-random number
! * 'RANDOM_SEED':   RANDOM_SEED, Initialize a pseudo-random number sequence
! * 'RANGE':         RANGE,     Decimal exponent range
! * 'RANK' :         RANK,      Rank of a data object
! * 'REAL':          REAL,      Convert to real type
! * 'RENAME':        RENAME,    Rename a file
! * 'REPEAT':        REPEAT,    Repeated string concatenation
! * 'RESHAPE':       RESHAPE,   Function to reshape an array
! * 'RRSPACING':     RRSPACING, Reciprocal of the relative spacing
! * 'RSHIFT':        RSHIFT,    Right shift bits
! * 'SAME_TYPE_AS':  SAME_TYPE_AS,  Query dynamic types for equality
! * 'SCALE':         SCALE,     Scale a real value
! * 'SCAN':          SCAN,      Scan a string for the presence of a set of characters
! * 'SECNDS':        SECNDS,    Time function
! * 'SECOND':        SECOND,    CPU time function
! * 'SELECTED_CHAR_KIND': SELECTED_CHAR_KIND,  Choose character kind
! * 'SELECTED_INT_KIND': SELECTED_INT_KIND,  Choose integer kind
! * 'SELECTED_LOGICAL_KIND': SELECTED_LOGICAL_KIND,  Choose logical kind
! * 'SELECTED_REAL_KIND': SELECTED_REAL_KIND,  Choose real kind
! * 'SELECTED_UNSIGNED_KIND': SELECTED_UNSIGNED_KIND, Chose unsigned kind
! * 'SET_EXPONENT':  SET_EXPONENT, Set the exponent of the model
! * 'SHAPE':         SHAPE,     Determine the shape of an array
! * 'SHIFTA':        SHIFTA,    Right shift with fill
! * 'SHIFTL':        SHIFTL,    Left shift
! * 'SHIFTR':        SHIFTR,    Right shift
! * 'SIGN':          SIGN,      Sign copying function
! * 'SIGNAL':        SIGNAL,    Signal handling subroutine (or function)
! * 'SIN':           SIN,       Sine function
! * 'SIND':          SIND,      Sine function, degrees
! * 'SINH':          SINH,      Hyperbolic sine function
! * 'SIZE':          SIZE,      Function to determine the size of an array
! * 'SIZEOF':        SIZEOF,    Determine the size in bytes of an expression
! * 'SLEEP':         SLEEP,     Sleep for the specified number of seconds
! * 'SPACING':       SPACING,   Smallest distance between two numbers of a given type
! * 'SPREAD':        SPREAD,    Add a dimension to an array
! * 'SQRT':          SQRT,      Square-root function
! * 'SRAND':         SRAND,     Reinitialize the random number generator
! * 'STAT':          STAT,      Get file status
! * 'STORAGE_SIZE':  STORAGE_SIZE, Storage size in bits
! * 'SUM':           SUM,       Sum of array elements
! * 'SYMLNK':        SYMLNK,    Create a symbolic link
! * 'SYSTEM':        SYSTEM,    Execute a shell command
! * 'SYSTEM_CLOCK':  SYSTEM_CLOCK, Time function
! * 'TAN':           TAN,       Tangent function
! * 'TAND':          TAND,      Tangent function, degrees
! * 'TANH':          TANH,      Hyperbolic tangent function
! * 'THIS_IMAGE':    THIS_IMAGE, Cosubscript index of this image
! * 'TIME':          TIME,      Time function
! * 'TIME8':         TIME8,     Time function (64-bit)
! * 'TINY':          TINY,      Smallest positive number of a real kind
! * 'TRAILZ':        TRAILZ,    Number of trailing zero bits of an integer
! * 'TRANSFER':      TRANSFER,  Transfer bit patterns
! * 'TRANSPOSE':     TRANSPOSE, Transpose an array of rank two
! * 'TRIM':          TRIM,      Remove trailing blank characters of a string
! * 'TTYNAM':        TTYNAM,    Get the name of a terminal device
! * 'UBOUND':        UBOUND,    Upper dimension bounds of an array
! * 'UCOBOUND':      UCOBOUND,  Upper codimension bounds of an array
! * 'UINT':          UINT,      Convert to an unsigned integer type
! * 'UMASK':         UMASK,     Set the file creation mask
! * 'UMASKL':        UMASKL,    Unsigned left justified mask
! * 'UMASKR':        UMASKR,    Unsigned right justified mask
! * 'UNLINK':        UNLINK,    Remove a file from the file system
! * 'UNPACK':        UNPACK,    Unpack an array of rank one into an array
! * 'VERIFY':        VERIFY,    Scan a string for the absence of a set of characters
! * 'XOR':           XOR,       Bitwise logical exclusive or
  
  
  File: gfortran.info,  Node: Introduction to Intrinsics,  Next: ABORT,  Up: Intrinsic Procedures
--- 7082,7375 ----
  * Menu:
  
  * Introduction:         Introduction to Intrinsics
! * â€˜ABORTâ€™:         ABORT,     Abort the program
! * â€˜ABSâ€™:           ABS,       Absolute value
! * â€˜ACCESSâ€™:        ACCESS,    Checks file access modes
! * â€˜ACHARâ€™:         ACHAR,     Character in ASCII collating sequence
! * â€˜ACOSâ€™:          ACOS,      Arccosine function
! * â€˜ACOSDâ€™:         ACOSD,     Arccosine function, degrees
! * â€˜ACOSHâ€™:         ACOSH,     Inverse hyperbolic cosine function
! * â€˜ADJUSTLâ€™:       ADJUSTL,   Left adjust a string
! * â€˜ADJUSTRâ€™:       ADJUSTR,   Right adjust a string
! * â€˜AIMAGâ€™:         AIMAG,     Imaginary part of complex number
! * â€˜AINTâ€™:          AINT,      Truncate to a whole number
! * â€˜ALARMâ€™:         ALARM,     Set an alarm clock
! * â€˜ALLâ€™:           ALL,       Determine if all values are true
! * â€˜ALLOCATEDâ€™:     ALLOCATED, Status of allocatable entity
! * â€˜ANDâ€™:           AND,       Bitwise logical AND
! * â€˜ANINTâ€™:         ANINT,     Nearest whole number
! * â€˜ANYâ€™:           ANY,       Determine if any values are true
! * â€˜ASINâ€™:          ASIN,      Arcsine function
! * â€˜ASINDâ€™:         ASIND,     Arcsine function, degrees
! * â€˜ASINHâ€™:         ASINH,     Inverse hyperbolic sine function
! * â€˜ASSOCIATEDâ€™:    ASSOCIATED, Status of a pointer or pointer/target pair
! * â€˜ATANâ€™:          ATAN,      Arctangent function
! * â€˜ATANDâ€™:         ATAND,     Arctangent function, degrees
! * â€˜ATAN2â€™:         ATAN2,     Arctangent function
! * â€˜ATAN2Dâ€™:        ATAN2D,    Arctangent function, degrees
! * â€˜ATANHâ€™:         ATANH,     Inverse hyperbolic tangent function
! * â€˜ATOMIC_ADDâ€™:    ATOMIC_ADD, Atomic ADD operation
! * â€˜ATOMIC_ANDâ€™:    ATOMIC_AND, Atomic bitwise AND operation
! * â€˜ATOMIC_CASâ€™:    ATOMIC_CAS, Atomic compare and swap
! * â€˜ATOMIC_DEFINEâ€™: ATOMIC_DEFINE, Setting a variable atomically
! * â€˜ATOMIC_FETCH_ADDâ€™: ATOMIC_FETCH_ADD, Atomic ADD operation with prior fetch
! * â€˜ATOMIC_FETCH_ANDâ€™: ATOMIC_FETCH_AND, Atomic bitwise AND operation with prior fetch
! * â€˜ATOMIC_FETCH_ORâ€™: ATOMIC_FETCH_OR, Atomic bitwise OR operation with prior fetch
! * â€˜ATOMIC_FETCH_XORâ€™: ATOMIC_FETCH_XOR, Atomic bitwise XOR operation with prior fetch
! * â€˜ATOMIC_ORâ€™:     ATOMIC_OR, Atomic bitwise OR operation
! * â€˜ATOMIC_REFâ€™:    ATOMIC_REF, Obtaining the value of a variable atomically
! * â€˜ATOMIC_XORâ€™:    ATOMIC_XOR, Atomic bitwise OR operation
! * â€˜BACKTRACEâ€™:     BACKTRACE, Show a backtrace
! * â€˜BESSEL_J0â€™:     BESSEL_J0, Bessel function of the first kind of order 0
! * â€˜BESSEL_J1â€™:     BESSEL_J1, Bessel function of the first kind of order 1
! * â€˜BESSEL_JNâ€™:     BESSEL_JN, Bessel function of the first kind
! * â€˜BESSEL_Y0â€™:     BESSEL_Y0, Bessel function of the second kind of order 0
! * â€˜BESSEL_Y1â€™:     BESSEL_Y1, Bessel function of the second kind of order 1
! * â€˜BESSEL_YNâ€™:     BESSEL_YN, Bessel function of the second kind
! * â€˜BGEâ€™:           BGE,       Bitwise greater than or equal to
! * â€˜BGTâ€™:           BGT,       Bitwise greater than
! * â€˜BIT_SIZEâ€™:      BIT_SIZE,  Bit size inquiry function
! * â€˜BLEâ€™:           BLE,       Bitwise less than or equal to
! * â€˜BLTâ€™:           BLT,       Bitwise less than
! * â€˜BTESTâ€™:         BTEST,     Bit test function
! * â€˜C_ASSOCIATEDâ€™:  C_ASSOCIATED, Status of a C pointer
! * â€˜C_F_POINTERâ€™:   C_F_POINTER, Convert C into Fortran pointer
! * â€˜C_F_PROCPOINTERâ€™: C_F_PROCPOINTER, Convert C into Fortran procedure pointer
! * â€˜C_FUNLOCâ€™:      C_FUNLOC,  Obtain the C address of a procedure
! * â€˜C_LOCâ€™:         C_LOC,     Obtain the C address of an object
! * â€˜C_SIZEOFâ€™:      C_SIZEOF,  Size in bytes of an expression
! * â€˜CEILINGâ€™:       CEILING,   Integer ceiling function
! * â€˜CHARâ€™:          CHAR,      Integer-to-character conversion function
! * â€˜CHDIRâ€™:         CHDIR,     Change working directory
! * â€˜CHMODâ€™:         CHMOD,     Change access permissions of files
! * â€˜CMPLXâ€™:         CMPLX,     Complex conversion function
! * â€˜CO_BROADCASTâ€™:  CO_BROADCAST, Copy a value to all images the current set of images
! * â€˜CO_MAXâ€™:        CO_MAX,    Maximal value on the current set of images
! * â€˜CO_MINâ€™:        CO_MIN,    Minimal value on the current set of images
! * â€˜CO_REDUCEâ€™:     CO_REDUCE, Reduction of values on the current set of images
! * â€˜CO_SUMâ€™:        CO_SUM,    Sum of values on the current set of images
! * â€˜COMMAND_ARGUMENT_COUNTâ€™: COMMAND_ARGUMENT_COUNT, Get number of command line arguments
! * â€˜COMPILER_OPTIONSâ€™: COMPILER_OPTIONS, Options passed to the compiler
! * â€˜COMPILER_VERSIONâ€™: COMPILER_VERSION, Compiler version string
! * â€˜COMPLEXâ€™:       COMPLEX,   Complex conversion function
! * â€˜CONJGâ€™:         CONJG,     Complex conjugate function
! * â€˜COSâ€™:           COS,       Cosine function
! * â€˜COSDâ€™:          COSD,      Cosine function, degrees
! * â€˜COSHâ€™:          COSH,      Hyperbolic cosine function
! * â€˜COTANâ€™:         COTAN,     Cotangent function
! * â€˜COTANDâ€™:        COTAND,    Cotangent function, degrees
! * â€˜COUNTâ€™:         COUNT,     Count occurrences of TRUE in an array
! * â€˜CPU_TIMEâ€™:      CPU_TIME,  CPU time subroutine
! * â€˜CSHIFTâ€™:        CSHIFT,    Circular shift elements of an array
! * â€˜CTIMEâ€™:         CTIME,     Subroutine (or function) to convert a time into a string
! * â€˜DATE_AND_TIMEâ€™: DATE_AND_TIME, Date and time subroutine
! * â€˜DBLEâ€™:          DBLE,      Double precision conversion function
! * â€˜DCMPLXâ€™:        DCMPLX,    Double complex conversion function
! * â€˜DIGITSâ€™:        DIGITS,    Significant digits function
! * â€˜DIMâ€™:           DIM,       Positive difference
! * â€˜DOT_PRODUCTâ€™:   DOT_PRODUCT, Dot product function
! * â€˜DPRODâ€™:         DPROD,     Double product function
! * â€˜DREALâ€™:         DREAL,     Double real part function
! * â€˜DSHIFTLâ€™:       DSHIFTL,   Combined left shift
! * â€˜DSHIFTRâ€™:       DSHIFTR,   Combined right shift
! * â€˜DTIMEâ€™:         DTIME,     Execution time subroutine (or function)
! * â€˜EOSHIFTâ€™:       EOSHIFT,   End-off shift elements of an array
! * â€˜EPSILONâ€™:       EPSILON,   Epsilon function
! * â€˜ERFâ€™:           ERF,       Error function
! * â€˜ERFCâ€™:          ERFC,      Complementary error function
! * â€˜ERFC_SCALEDâ€™:   ERFC_SCALED, Exponentially-scaled complementary error function
! * â€˜ETIMEâ€™:         ETIME,     Execution time subroutine (or function)
! * â€˜EVENT_QUERYâ€™: EVENT_QUERY, Query whether a coarray event has occurred
! * â€˜EXECUTE_COMMAND_LINEâ€™: EXECUTE_COMMAND_LINE, Execute a shell command
! * â€˜EXITâ€™:          EXIT,      Exit the program with status.
! * â€˜EXPâ€™:           EXP,       Exponential function
! * â€˜EXPONENTâ€™:      EXPONENT,  Exponent function
! * â€˜EXTENDS_TYPE_OFâ€™: EXTENDS_TYPE_OF,  Query dynamic type for extension
! * â€˜FDATEâ€™:         FDATE,     Subroutine (or function) to get the current time as a string
! * â€˜FGETâ€™:          FGET,      Read a single character in stream mode from stdin
! * â€˜FGETCâ€™:         FGETC,     Read a single character in stream mode
! * â€˜FINDLOCâ€™:       FINDLOC,   Search an array for a value
! * â€˜FLOORâ€™:         FLOOR,     Integer floor function
! * â€˜FLUSHâ€™:         FLUSH,     Flush I/O unit(s)
! * â€˜FNUMâ€™:          FNUM,      File number function
! * â€˜FPUTâ€™:          FPUT,      Write a single character in stream mode to stdout
! * â€˜FPUTCâ€™:         FPUTC,     Write a single character in stream mode
! * â€˜FRACTIONâ€™:      FRACTION,  Fractional part of the model representation
! * â€˜FREEâ€™:          FREE,      Memory de-allocation subroutine
! * â€˜FSEEKâ€™:         FSEEK,     Low level file positioning subroutine
! * â€˜FSTATâ€™:         FSTAT,     Get file status
! * â€˜FTELLâ€™:         FTELL,     Current stream position
! * â€˜GAMMAâ€™:         GAMMA,     Gamma function
! * â€˜GERRORâ€™:        GERROR,    Get last system error message
! * â€˜GETARGâ€™:        GETARG,    Get command line arguments
! * â€˜GET_COMMANDâ€™:   GET_COMMAND, Get the entire command line
! * â€˜GET_COMMAND_ARGUMENTâ€™: GET_COMMAND_ARGUMENT, Get command line arguments
! * â€˜GETCWDâ€™:        GETCWD,    Get current working directory
! * â€˜GETENVâ€™:        GETENV,    Get an environmental variable
! * â€˜GET_ENVIRONMENT_VARIABLEâ€™: GET_ENVIRONMENT_VARIABLE, Get an environmental variable
! * â€˜GETGIDâ€™:        GETGID,    Group ID function
! * â€˜GETLOGâ€™:        GETLOG,    Get login name
! * â€˜GETPIDâ€™:        GETPID,    Process ID function
! * â€˜GETUIDâ€™:        GETUID,    User ID function
! * â€˜GMTIMEâ€™:        GMTIME,    Convert time to GMT info
! * â€˜HOSTNMâ€™:        HOSTNM,    Get system host name
! * â€˜HUGEâ€™:          HUGE,      Largest number of a kind
! * â€˜HYPOTâ€™:         HYPOT,     Euclidean distance function
! * â€˜IACHARâ€™:        IACHAR,    Code in ASCII collating sequence
! * â€˜IALLâ€™:          IALL,      Bitwise AND of array elements
! * â€˜IANDâ€™:          IAND,      Bitwise logical and
! * â€˜IANYâ€™:          IANY,      Bitwise OR of array elements
! * â€˜IARGCâ€™:         IARGC,     Get the number of command line arguments
! * â€˜IBCLRâ€™:         IBCLR,     Clear bit
! * â€˜IBITSâ€™:         IBITS,     Bit extraction
! * â€˜IBSETâ€™:         IBSET,     Set bit
! * â€˜ICHARâ€™:         ICHAR,     Character-to-integer conversion function
! * â€˜IDATEâ€™:         IDATE,     Current local time (day/month/year)
! * â€˜IEORâ€™:          IEOR,      Bitwise logical exclusive or
! * â€˜IERRNOâ€™:        IERRNO,    Function to get the last system error number
! * â€˜IMAGE_INDEXâ€™:   IMAGE_INDEX, Cosubscript to image index conversion
! * â€˜INDEXâ€™:         INDEX intrinsic, Position of a substring within a string
! * â€˜INTâ€™:           INT,       Convert to integer type
! * â€˜INT2â€™:          INT2,      Convert to 16-bit integer type
! * â€˜INT8â€™:          INT8,      Convert to 64-bit integer type
! * â€˜IORâ€™:           IOR,       Bitwise logical or
! * â€˜IPARITYâ€™:       IPARITY,   Bitwise XOR of array elements
! * â€˜IRANDâ€™:         IRAND,     Integer pseudo-random number
! * â€˜IS_CONTIGUOUSâ€™:  IS_CONTIGUOUS, Test whether an array is contiguous
! * â€˜IS_IOSTAT_ENDâ€™:  IS_IOSTAT_END, Test for end-of-file value
! * â€˜IS_IOSTAT_EORâ€™:  IS_IOSTAT_EOR, Test for end-of-record value
! * â€˜ISATTYâ€™:        ISATTY,    Whether a unit is a terminal device
! * â€˜ISHFTâ€™:         ISHFT,     Shift bits
! * â€˜ISHFTCâ€™:        ISHFTC,    Shift bits circularly
! * â€˜ISNANâ€™:         ISNAN,     Tests for a NaN
! * â€˜ITIMEâ€™:         ITIME,     Current local time (hour/minutes/seconds)
! * â€˜KILLâ€™:          KILL,      Send a signal to a process
! * â€˜KINDâ€™:          KIND,      Kind of an entity
! * â€˜LBOUNDâ€™:        LBOUND,    Lower dimension bounds of an array
! * â€˜LCOBOUNDâ€™:      LCOBOUND,  Lower codimension bounds of an array
! * â€˜LEADZâ€™:         LEADZ,     Number of leading zero bits of an integer
! * â€˜LENâ€™:           LEN,       Length of a character entity
! * â€˜LEN_TRIMâ€™:      LEN_TRIM,  Length of a character entity without trailing blank characters
! * â€˜LGEâ€™:           LGE,       Lexical greater than or equal
! * â€˜LGTâ€™:           LGT,       Lexical greater than
! * â€˜LINKâ€™:          LINK,      Create a hard link
! * â€˜LLEâ€™:           LLE,       Lexical less than or equal
! * â€˜LLTâ€™:           LLT,       Lexical less than
! * â€˜LNBLNKâ€™:        LNBLNK,    Index of the last non-blank character in a string
! * â€˜LOCâ€™:           LOC,       Returns the address of a variable
! * â€˜LOGâ€™:           LOG,       Logarithm function
! * â€˜LOG10â€™:         LOG10,     Base 10 logarithm function
! * â€˜LOG_GAMMAâ€™:     LOG_GAMMA, Logarithm of the Gamma function
! * â€˜LOGICALâ€™:       LOGICAL,   Convert to logical type
! * â€˜LSHIFTâ€™:        LSHIFT,    Left shift bits
! * â€˜LSTATâ€™:         LSTAT,     Get file status
! * â€˜LTIMEâ€™:         LTIME,     Convert time to local time info
! * â€˜MALLOCâ€™:        MALLOC,    Dynamic memory allocation function
! * â€˜MASKLâ€™:         MASKL,     Left justified mask
! * â€˜MASKRâ€™:         MASKR,     Right justified mask
! * â€˜MATMULâ€™:        MATMUL,    matrix multiplication
! * â€˜MAXâ€™:           MAX,       Maximum value of an argument list
! * â€˜MAXEXPONENTâ€™:   MAXEXPONENT, Maximum exponent of a real kind
! * â€˜MAXLOCâ€™:        MAXLOC,    Location of the maximum value within an array
! * â€˜MAXVALâ€™:        MAXVAL,    Maximum value of an array
! * â€˜MCLOCKâ€™:        MCLOCK,    Time function
! * â€˜MCLOCK8â€™:       MCLOCK8,   Time function (64-bit)
! * â€˜MERGEâ€™:         MERGE,     Merge arrays
! * â€˜MERGE_BITSâ€™:    MERGE_BITS, Merge of bits under mask
! * â€˜MINâ€™:           MIN,       Minimum value of an argument list
! * â€˜MINEXPONENTâ€™:   MINEXPONENT, Minimum exponent of a real kind
! * â€˜MINLOCâ€™:        MINLOC,    Location of the minimum value within an array
! * â€˜MINVALâ€™:        MINVAL,    Minimum value of an array
! * â€˜MODâ€™:           MOD,       Remainder function
! * â€˜MODULOâ€™:        MODULO,    Modulo function
! * â€˜MOVE_ALLOCâ€™:    MOVE_ALLOC, Move allocation from one object to another
! * â€˜MVBITSâ€™:        MVBITS,    Move bits from one integer to another
! * â€˜NEARESTâ€™:       NEAREST,   Nearest representable number
! * â€˜NEW_LINEâ€™:      NEW_LINE,  New line character
! * â€˜NINTâ€™:          NINT,      Nearest whole number
! * â€˜NORM2â€™:         NORM2,     Euclidean vector norm
! * â€˜NOTâ€™:           NOT,       Logical negation
! * â€˜NULLâ€™:          NULL,      Function that returns an disassociated pointer
! * â€˜NUM_IMAGESâ€™:    NUM_IMAGES, Number of images
! * â€˜ORâ€™:            OR,        Bitwise logical OR
! * â€˜OUT_OF_RANGEâ€™:  OUT_OF_RANGE, Range check for numerical conversion
! * â€˜PACKâ€™:          PACK,      Pack an array into an array of rank one
! * â€˜PARITYâ€™:        PARITY,    Reduction with exclusive OR
! * â€˜PERRORâ€™:        PERROR,    Print system error message
! * â€˜POPCNTâ€™:        POPCNT,    Number of bits set
! * â€˜POPPARâ€™:        POPPAR,    Parity of the number of bits set
! * â€˜PRECISIONâ€™:     PRECISION, Decimal precision of a real kind
! * â€˜PRESENTâ€™:       PRESENT,   Determine whether an optional dummy argument is specified
! * â€˜PRODUCTâ€™:       PRODUCT,   Product of array elements
! * â€˜RADIXâ€™:         RADIX,     Base of a data model
! * â€˜RANâ€™:           RAN,       Real pseudo-random number
! * â€˜RANDâ€™:          RAND,      Real pseudo-random number
! * â€˜RANDOM_INITâ€™:   RANDOM_INIT, Initialize pseudo-random number generator
! * â€˜RANDOM_NUMBERâ€™: RANDOM_NUMBER, Pseudo-random number
! * â€˜RANDOM_SEEDâ€™:   RANDOM_SEED, Initialize a pseudo-random number sequence
! * â€˜RANGEâ€™:         RANGE,     Decimal exponent range
! * â€˜RANKâ€™ :         RANK,      Rank of a data object
! * â€˜REALâ€™:          REAL,      Convert to real type
! * â€˜RENAMEâ€™:        RENAME,    Rename a file
! * â€˜REPEATâ€™:        REPEAT,    Repeated string concatenation
! * â€˜RESHAPEâ€™:       RESHAPE,   Function to reshape an array
! * â€˜RRSPACINGâ€™:     RRSPACING, Reciprocal of the relative spacing
! * â€˜RSHIFTâ€™:        RSHIFT,    Right shift bits
! * â€˜SAME_TYPE_ASâ€™:  SAME_TYPE_AS,  Query dynamic types for equality
! * â€˜SCALEâ€™:         SCALE,     Scale a real value
! * â€˜SCANâ€™:          SCAN,      Scan a string for the presence of a set of characters
! * â€˜SECNDSâ€™:        SECNDS,    Time function
! * â€˜SECONDâ€™:        SECOND,    CPU time function
! * â€˜SELECTED_CHAR_KINDâ€™: SELECTED_CHAR_KIND,  Choose character kind
! * â€˜SELECTED_INT_KINDâ€™: SELECTED_INT_KIND,  Choose integer kind
! * â€˜SELECTED_LOGICAL_KINDâ€™: SELECTED_LOGICAL_KIND,  Choose logical kind
! * â€˜SELECTED_REAL_KINDâ€™: SELECTED_REAL_KIND,  Choose real kind
! * â€˜SELECTED_UNSIGNED_KINDâ€™: SELECTED_UNSIGNED_KIND, Chose unsigned kind
! * â€˜SET_EXPONENTâ€™:  SET_EXPONENT, Set the exponent of the model
! * â€˜SHAPEâ€™:         SHAPE,     Determine the shape of an array
! * â€˜SHIFTAâ€™:        SHIFTA,    Right shift with fill
! * â€˜SHIFTLâ€™:        SHIFTL,    Left shift
! * â€˜SHIFTRâ€™:        SHIFTR,    Right shift
! * â€˜SIGNâ€™:          SIGN,      Sign copying function
! * â€˜SIGNALâ€™:        SIGNAL,    Signal handling subroutine (or function)
! * â€˜SINâ€™:           SIN,       Sine function
! * â€˜SINDâ€™:          SIND,      Sine function, degrees
! * â€˜SINHâ€™:          SINH,      Hyperbolic sine function
! * â€˜SIZEâ€™:          SIZE,      Function to determine the size of an array
! * â€˜SIZEOFâ€™:        SIZEOF,    Determine the size in bytes of an expression
! * â€˜SLEEPâ€™:         SLEEP,     Sleep for the specified number of seconds
! * â€˜SPACINGâ€™:       SPACING,   Smallest distance between two numbers of a given type
! * â€˜SPREADâ€™:        SPREAD,    Add a dimension to an array
! * â€˜SQRTâ€™:          SQRT,      Square-root function
! * â€˜SRANDâ€™:         SRAND,     Reinitialize the random number generator
! * â€˜STATâ€™:          STAT,      Get file status
! * â€˜STORAGE_SIZEâ€™:  STORAGE_SIZE, Storage size in bits
! * â€˜SUMâ€™:           SUM,       Sum of array elements
! * â€˜SYMLNKâ€™:        SYMLNK,    Create a symbolic link
! * â€˜SYSTEMâ€™:        SYSTEM,    Execute a shell command
! * â€˜SYSTEM_CLOCKâ€™:  SYSTEM_CLOCK, Time function
! * â€˜TANâ€™:           TAN,       Tangent function
! * â€˜TANDâ€™:          TAND,      Tangent function, degrees
! * â€˜TANHâ€™:          TANH,      Hyperbolic tangent function
! * â€˜THIS_IMAGEâ€™:    THIS_IMAGE, Cosubscript index of this image
! * â€˜TIMEâ€™:          TIME,      Time function
! * â€˜TIME8â€™:         TIME8,     Time function (64-bit)
! * â€˜TINYâ€™:          TINY,      Smallest positive number of a real kind
! * â€˜TRAILZâ€™:        TRAILZ,    Number of trailing zero bits of an integer
! * â€˜TRANSFERâ€™:      TRANSFER,  Transfer bit patterns
! * â€˜TRANSPOSEâ€™:     TRANSPOSE, Transpose an array of rank two
! * â€˜TRIMâ€™:          TRIM,      Remove trailing blank characters of a string
! * â€˜TTYNAMâ€™:        TTYNAM,    Get the name of a terminal device
! * â€˜UBOUNDâ€™:        UBOUND,    Upper dimension bounds of an array
! * â€˜UCOBOUNDâ€™:      UCOBOUND,  Upper codimension bounds of an array
! * â€˜UINTâ€™:          UINT,      Convert to an unsigned integer type
! * â€˜UMASKâ€™:         UMASK,     Set the file creation mask
! * â€˜UMASKLâ€™:        UMASKL,    Unsigned left justified mask
! * â€˜UMASKRâ€™:        UMASKR,    Unsigned right justified mask
! * â€˜UNLINKâ€™:        UNLINK,    Remove a file from the file system
! * â€˜UNPACKâ€™:        UNPACK,    Unpack an array of rank one into an array
! * â€˜VERIFYâ€™:        VERIFY,    Scan a string for the absence of a set of characters
! * â€˜XORâ€™:           XOR,       Bitwise logical exclusive or
  
  
  File: gfortran.info,  Node: Introduction to Intrinsics,  Next: ABORT,  Up: Intrinsic Procedures
*************** intrinsic procedures for backwards compa
*** 7383,7412 ****
  between a description here and a description in the Fortran standards is
  unintentional, and the standard(s) should be considered authoritative.
  
!    The enumeration of the 'KIND' type parameter is processor defined in
  the Fortran 95 standard.  GNU Fortran defines the default integer type
! and default real type by 'INTEGER(KIND=4)' and 'REAL(KIND=4)',
  respectively.  The standard mandates that both data types shall have
  another kind that has more precision.  On typical target architectures
! supported by 'gfortran', this kind type parameter is 'KIND=8'.  Hence,
! 'REAL(KIND=8)' and 'DOUBLE PRECISION' are equivalent.  In the
  description of generic intrinsic procedures, the kind type parameter is
! specified by 'KIND=*', and in the description of specific names for an
  intrinsic procedure the kind type parameter is explicitly given (e.g.,
! 'REAL(KIND=4)' or 'REAL(KIND=8)').  Finally, for brevity the optional
! 'KIND=' syntax is omitted.
  
     Many of the intrinsic procedures take one or more optional arguments.
  This document follows the convention used in the Fortran 95 standard,
  and denotes such arguments by square brackets.
  
!    GNU Fortran offers the '-std=' command-line option, which can be used
  to restrict the set of intrinsic procedures to a given standard.  By
! default, 'gfortran' sets the '-std=gnu' option, and so all intrinsic
  procedures described here are accepted.  There is one caveat.  For a
! select group of intrinsic procedures, 'g77' implemented both a function
! and a subroutine.  Both classes have been implemented in 'gfortran' for
! backwards compatibility with 'g77'.  It is noted here that these
  functions and subroutines cannot be intermixed in a given subprogram.
  In the descriptions that follow, the applicable standard for each
  intrinsic procedure is noted.
--- 7383,7412 ----
  between a description here and a description in the Fortran standards is
  unintentional, and the standard(s) should be considered authoritative.
  
!    The enumeration of the â€˜KINDâ€™ type parameter is processor defined in
  the Fortran 95 standard.  GNU Fortran defines the default integer type
! and default real type by â€˜INTEGER(KIND=4)â€™ and â€˜REAL(KIND=4)â€™,
  respectively.  The standard mandates that both data types shall have
  another kind that has more precision.  On typical target architectures
! supported by â€˜gfortranâ€™, this kind type parameter is â€˜KIND=8â€™.  Hence,
! â€˜REAL(KIND=8)â€™ and â€˜DOUBLE PRECISIONâ€™ are equivalent.  In the
  description of generic intrinsic procedures, the kind type parameter is
! specified by â€˜KIND=*â€™, and in the description of specific names for an
  intrinsic procedure the kind type parameter is explicitly given (e.g.,
! â€˜REAL(KIND=4)â€™ or â€˜REAL(KIND=8)â€™).  Finally, for brevity the optional
! â€˜KIND=â€™ syntax is omitted.
  
     Many of the intrinsic procedures take one or more optional arguments.
  This document follows the convention used in the Fortran 95 standard,
  and denotes such arguments by square brackets.
  
!    GNU Fortran offers the â€˜-std=â€™ command-line option, which can be used
  to restrict the set of intrinsic procedures to a given standard.  By
! default, â€˜gfortranâ€™ sets the â€˜-std=gnuâ€™ option, and so all intrinsic
  procedures described here are accepted.  There is one caveat.  For a
! select group of intrinsic procedures, â€˜g77â€™ implemented both a function
! and a subroutine.  Both classes have been implemented in â€˜gfortranâ€™ for
! backwards compatibility with â€˜g77â€™.  It is noted here that these
  functions and subroutines cannot be intermixed in a given subprogram.
  In the descriptions that follow, the applicable standard for each
  intrinsic procedure is noted.
*************** intrinsic procedure is noted.
*** 7414,7429 ****
  
  File: gfortran.info,  Node: ABORT,  Next: ABS,  Prev: Introduction to Intrinsics,  Up: Intrinsic Procedures
  
! 8.2 'ABORT' -- Abort the program
  ================================
  
  _Synopsis_:
!      'CALL ABORT'
  
  _Description_:
!      'ABORT' causes immediate termination of the program.  On operating
!      systems that support a core dump, 'ABORT' produces a core dump.  It
!      also prints a backtrace, unless '-fno-backtrace' is given.
  
  _Class_:
       Subroutine
--- 7414,7429 ----
  
  File: gfortran.info,  Node: ABORT,  Next: ABS,  Prev: Introduction to Intrinsics,  Up: Intrinsic Procedures
  
! 8.2 â€˜ABORTâ€™ -- Abort the program
  ================================
  
  _Synopsis_:
!      â€˜CALL ABORTâ€™
  
  _Description_:
!      â€˜ABORTâ€™ causes immediate termination of the program.  On operating
!      systems that support a core dump, â€˜ABORTâ€™ produces a core dump.  It
!      also prints a backtrace, unless â€˜-fno-backtraceâ€™ is given.
  
  _Class_:
       Subroutine
*************** _See also_:
*** 7448,7472 ****
  
  File: gfortran.info,  Node: ABS,  Next: ACCESS,  Prev: ABORT,  Up: Intrinsic Procedures
  
! 8.3 'ABS' -- Absolute value
  ===========================
  
  _Synopsis_:
!      'RESULT = ABS(A)'
  
  _Description_:
!      'ABS(A)' computes the absolute value of 'A'.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           The type of the argument shall be an 'INTEGER',
!                  'REAL', or 'COMPLEX'.
  
  _Return value_:
       The return value is of the same type and kind as the argument
!      except the return value is 'REAL' for a 'COMPLEX' argument.
  
  _Example_:
            program test_abs
--- 7448,7472 ----
  
  File: gfortran.info,  Node: ABS,  Next: ACCESS,  Prev: ABORT,  Up: Intrinsic Procedures
  
! 8.3 â€˜ABSâ€™ -- Absolute value
  ===========================
  
  _Synopsis_:
!      â€˜RESULT = ABS(A)â€™
  
  _Description_:
!      â€˜ABS(A)â€™ computes the absolute value of â€˜Aâ€™.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           The type of the argument shall be an â€˜INTEGERâ€™,
!                  â€˜REALâ€™, or â€˜COMPLEXâ€™.
  
  _Return value_:
       The return value is of the same type and kind as the argument
!      except the return value is â€˜REALâ€™ for a â€˜COMPLEXâ€™ argument.
  
  _Example_:
            program test_abs
*************** _Example_:
*** 7481,7496 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'ABS(A)'       'REAL(4) A'       'REAL(4)'      Fortran 77 and later
!      'CABS(A)'      'COMPLEX(4) A'    'REAL(4)'      Fortran 77 and later
!      'DABS(A)'      'REAL(8) A'       'REAL(8)'      Fortran 77 and later
!      'IABS(A)'      'INTEGER(4) A'    'INTEGER(4)'   Fortran 77 and later
!      'BABS(A)'      'INTEGER(1) A'    'INTEGER(1)'   GNU extension
!      'IIABS(A)'     'INTEGER(2) A'    'INTEGER(2)'   GNU extension
!      'JIABS(A)'     'INTEGER(4) A'    'INTEGER(4)'   GNU extension
!      'KIABS(A)'     'INTEGER(8) A'    'INTEGER(8)'   GNU extension
!      'ZABS(A)'      'COMPLEX(8) A'    'REAL(8)'      GNU extension
!      'CDABS(A)'     'COMPLEX(8) A'    'REAL(8)'      GNU extension
  
  _Standard_:
       Fortran 77 and later, has overloads that are GNU extensions
--- 7481,7496 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜ABS(A)â€™       â€˜REAL(4) Aâ€™       â€˜REAL(4)â€™      Fortran 77 and later
!      â€˜CABS(A)â€™      â€˜COMPLEX(4) Aâ€™    â€˜REAL(4)â€™      Fortran 77 and later
!      â€˜DABS(A)â€™      â€˜REAL(8) Aâ€™       â€˜REAL(8)â€™      Fortran 77 and later
!      â€˜IABS(A)â€™      â€˜INTEGER(4) Aâ€™    â€˜INTEGER(4)â€™   Fortran 77 and later
!      â€˜BABS(A)â€™      â€˜INTEGER(1) Aâ€™    â€˜INTEGER(1)â€™   GNU extension
!      â€˜IIABS(A)â€™     â€˜INTEGER(2) Aâ€™    â€˜INTEGER(2)â€™   GNU extension
!      â€˜JIABS(A)â€™     â€˜INTEGER(4) Aâ€™    â€˜INTEGER(4)â€™   GNU extension
!      â€˜KIABS(A)â€™     â€˜INTEGER(8) Aâ€™    â€˜INTEGER(8)â€™   GNU extension
!      â€˜ZABS(A)â€™      â€˜COMPLEX(8) Aâ€™    â€˜REAL(8)â€™      GNU extension
!      â€˜CDABS(A)â€™     â€˜COMPLEX(8) Aâ€™    â€˜REAL(8)â€™      GNU extension
  
  _Standard_:
       Fortran 77 and later, has overloads that are GNU extensions
*************** _Standard_:
*** 7498,7532 ****
  
  File: gfortran.info,  Node: ACCESS,  Next: ACHAR,  Prev: ABS,  Up: Intrinsic Procedures
  
! 8.4 'ACCESS' -- Checks file access modes
  ========================================
  
  _Synopsis_:
!      'RESULT = ACCESS(NAME, MODE)'
  
  _Description_:
!      'ACCESS(NAME, MODE)' checks whether the file NAME exists, is
       readable, writable or executable.  Except for the executable check,
!      'ACCESS' can be replaced by Fortran 95's 'INQUIRE'.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      NAME        Scalar 'CHARACTER' of default kind with the file
                   name.  Trailing blank are ignored unless the
!                  character 'achar(0)' is present, then all
!                  characters up to and excluding 'achar(0)' are
                   used as file name.
!      MODE        Scalar 'CHARACTER' of default kind with the file
!                  access mode, may be any concatenation of '"r"'
!                  (readable), '"w"' (writable) and '"x"'
!                  (executable), or '" "' to check for existence.
  
  _Return value_:
!      Returns a scalar 'INTEGER', which is '0' if the file is accessible
       in the given mode; otherwise or if an invalid argument has been
!      given for 'MODE' the value '1' is returned.
  
  _Example_:
            program access_test
--- 7498,7532 ----
  
  File: gfortran.info,  Node: ACCESS,  Next: ACHAR,  Prev: ABS,  Up: Intrinsic Procedures
  
! 8.4 â€˜ACCESSâ€™ -- Checks file access modes
  ========================================
  
  _Synopsis_:
!      â€˜RESULT = ACCESS(NAME, MODE)â€™
  
  _Description_:
!      â€˜ACCESS(NAME, MODE)â€™ checks whether the file NAME exists, is
       readable, writable or executable.  Except for the executable check,
!      â€˜ACCESSâ€™ can be replaced by Fortran 95's â€˜INQUIREâ€™.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      NAME        Scalar â€˜CHARACTERâ€™ of default kind with the file
                   name.  Trailing blank are ignored unless the
!                  character â€˜achar(0)â€™ is present, then all
!                  characters up to and excluding â€˜achar(0)â€™ are
                   used as file name.
!      MODE        Scalar â€˜CHARACTERâ€™ of default kind with the file
!                  access mode, may be any concatenation of â€˜"r"â€™
!                  (readable), â€˜"w"â€™ (writable) and â€˜"x"â€™
!                  (executable), or â€˜" "â€™ to check for existence.
  
  _Return value_:
!      Returns a scalar â€˜INTEGERâ€™, which is â€˜0â€™ if the file is accessible
       in the given mode; otherwise or if an invalid argument has been
!      given for â€˜MODEâ€™ the value â€˜1â€™ is returned.
  
  _Example_:
            program access_test
*************** _Standard_:
*** 7547,7573 ****
  
  File: gfortran.info,  Node: ACHAR,  Next: ACOS,  Prev: ACCESS,  Up: Intrinsic Procedures
  
! 8.5 'ACHAR' -- Character in ASCII collating sequence
  ====================================================
  
  _Synopsis_:
!      'RESULT = ACHAR(I [, KIND])'
  
  _Description_:
!      'ACHAR(I)' returns the character located at position 'I' in the
       ASCII collating sequence.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be 'INTEGER'.
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type 'CHARACTER' with a length of one.  If
       the KIND argument is present, the return value is of the specified
       kind and of the default kind otherwise.
  
--- 7547,7573 ----
  
  File: gfortran.info,  Node: ACHAR,  Next: ACOS,  Prev: ACCESS,  Up: Intrinsic Procedures
  
! 8.5 â€˜ACHARâ€™ -- Character in ASCII collating sequence
  ====================================================
  
  _Synopsis_:
!      â€˜RESULT = ACHAR(I [, KIND])â€™
  
  _Description_:
!      â€˜ACHAR(I)â€™ returns the character located at position â€˜Iâ€™ in the
       ASCII collating sequence.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be â€˜INTEGERâ€™.
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type â€˜CHARACTERâ€™ with a length of one.  If
       the KIND argument is present, the return value is of the specified
       kind and of the default kind otherwise.
  
*************** _See also_:
*** 7592,7613 ****
  
  File: gfortran.info,  Node: ACOS,  Next: ACOSD,  Prev: ACHAR,  Up: Intrinsic Procedures
  
! 8.6 'ACOS' -- Arccosine function
  ================================
  
  _Synopsis_:
!      'RESULT = ACOS(X)'
  
  _Description_:
!      'ACOS(X)' computes the arccosine of X (inverse of 'COS(X)').
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall either be 'REAL' with a magnitude
                   that is less than or equal to one - or the type
!                  shall be 'COMPLEX'.
  
  _Return value_:
       The return value is of the same type and kind as X.  The real part
--- 7592,7613 ----
  
  File: gfortran.info,  Node: ACOS,  Next: ACOSD,  Prev: ACHAR,  Up: Intrinsic Procedures
  
! 8.6 â€˜ACOSâ€™ -- Arccosine function
  ================================
  
  _Synopsis_:
!      â€˜RESULT = ACOS(X)â€™
  
  _Description_:
!      â€˜ACOS(X)â€™ computes the arccosine of X (inverse of â€˜COS(X)â€™).
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall either be â€˜REALâ€™ with a magnitude
                   that is less than or equal to one - or the type
!                  shall be â€˜COMPLEXâ€™.
  
  _Return value_:
       The return value is of the same type and kind as X.  The real part
*************** _Example_:
*** 7623,7630 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'ACOS(X)'      'REAL(4) X'       'REAL(4)'      Fortran 77 and later
!      'DACOS(X)'     'REAL(8) X'       'REAL(8)'      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later, for a complex argument Fortran 2008 or later
--- 7623,7630 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜ACOS(X)â€™      â€˜REAL(4) Xâ€™       â€˜REAL(4)â€™      Fortran 77 and later
!      â€˜DACOS(X)â€™     â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later, for a complex argument Fortran 2008 or later
*************** _See also_:
*** 7638,7658 ****
  
  File: gfortran.info,  Node: ACOSD,  Next: ACOSH,  Prev: ACOS,  Up: Intrinsic Procedures
  
! 8.7 'ACOSD' -- Arccosine function, degrees
  ==========================================
  
  _Synopsis_:
!      'RESULT = ACOSD(X)'
  
  _Description_:
!      'ACOSD(X)' computes the arccosine of X in degrees (inverse of
!      'COSD(X)').
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall either be 'REAL' with a magnitude
                   that is less than or equal to one.
  
  _Return value_:
--- 7638,7658 ----
  
  File: gfortran.info,  Node: ACOSD,  Next: ACOSH,  Prev: ACOS,  Up: Intrinsic Procedures
  
! 8.7 â€˜ACOSDâ€™ -- Arccosine function, degrees
  ==========================================
  
  _Synopsis_:
!      â€˜RESULT = ACOSD(X)â€™
  
  _Description_:
!      â€˜ACOSD(X)â€™ computes the arccosine of X in degrees (inverse of
!      â€˜COSD(X)â€™).
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall either be â€˜REALâ€™ with a magnitude
                   that is less than or equal to one.
  
  _Return value_:
*************** _Example_:
*** 7669,7676 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'ACOSD(X)'     'REAL(4) X'       'REAL(4)'      Fortran 2023
!      'DACOSD(X)'    'REAL(8) X'       'REAL(8)'      GNU extension
  
  _Standard_:
       Fortran 2023
--- 7669,7676 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜ACOSD(X)â€™     â€˜REAL(4) Xâ€™       â€˜REAL(4)â€™      Fortran 2023
!      â€˜DACOSD(X)â€™    â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      GNU extension
  
  _Standard_:
       Fortran 2023
*************** _See also_:
*** 7684,7703 ****
  
  File: gfortran.info,  Node: ACOSH,  Next: ADJUSTL,  Prev: ACOSD,  Up: Intrinsic Procedures
  
! 8.8 'ACOSH' -- Inverse hyperbolic cosine function
  =================================================
  
  _Synopsis_:
!      'RESULT = ACOSH(X)'
  
  _Description_:
!      'ACOSH(X)' computes the inverse hyperbolic cosine of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL' or 'COMPLEX'.
  
  _Return value_:
       The return value has the same type and kind as X.  If X is complex,
--- 7684,7703 ----
  
  File: gfortran.info,  Node: ACOSH,  Next: ADJUSTL,  Prev: ACOSD,  Up: Intrinsic Procedures
  
! 8.8 â€˜ACOSHâ€™ -- Inverse hyperbolic cosine function
  =================================================
  
  _Synopsis_:
!      â€˜RESULT = ACOSH(X)â€™
  
  _Description_:
!      â€˜ACOSH(X)â€™ computes the inverse hyperbolic cosine of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™ or â€˜COMPLEXâ€™.
  
  _Return value_:
       The return value has the same type and kind as X.  If X is complex,
*************** _Example_:
*** 7713,7719 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'DACOSH(X)'    'REAL(8) X'       'REAL(8)'      GNU extension
  
  _Standard_:
       Fortran 2008 and later
--- 7713,7719 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜DACOSH(X)â€™    â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      GNU extension
  
  _Standard_:
       Fortran 2008 and later
*************** _See also_:
*** 7725,7748 ****
  
  File: gfortran.info,  Node: ADJUSTL,  Next: ADJUSTR,  Prev: ACOSH,  Up: Intrinsic Procedures
  
! 8.9 'ADJUSTL' -- Left adjust a string
  =====================================
  
  _Synopsis_:
!      'RESULT = ADJUSTL(STRING)'
  
  _Description_:
!      'ADJUSTL(STRING)' left adjusts a string by removing leading spaces.
       Spaces are inserted at the end of the string as needed.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      STRING      The type shall be 'CHARACTER'.
  
  _Return value_:
!      The return value is of type 'CHARACTER' and of the same kind as
       STRING where leading spaces are removed and the same number of
       spaces are inserted on the end of STRING.
  
--- 7725,7748 ----
  
  File: gfortran.info,  Node: ADJUSTL,  Next: ADJUSTR,  Prev: ACOSH,  Up: Intrinsic Procedures
  
! 8.9 â€˜ADJUSTLâ€™ -- Left adjust a string
  =====================================
  
  _Synopsis_:
!      â€˜RESULT = ADJUSTL(STRING)â€™
  
  _Description_:
!      â€˜ADJUSTL(STRING)â€™ left adjusts a string by removing leading spaces.
       Spaces are inserted at the end of the string as needed.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      STRING      The type shall be â€˜CHARACTERâ€™.
  
  _Return value_:
!      The return value is of type â€˜CHARACTERâ€™ and of the same kind as
       STRING where leading spaces are removed and the same number of
       spaces are inserted on the end of STRING.
  
*************** _See also_:
*** 7763,7786 ****
  
  File: gfortran.info,  Node: ADJUSTR,  Next: AIMAG,  Prev: ADJUSTL,  Up: Intrinsic Procedures
  
! 8.10 'ADJUSTR' -- Right adjust a string
  =======================================
  
  _Synopsis_:
!      'RESULT = ADJUSTR(STRING)'
  
  _Description_:
!      'ADJUSTR(STRING)' right adjusts a string by removing trailing
       spaces.  Spaces are inserted at the start of the string as needed.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      STR         The type shall be 'CHARACTER'.
  
  _Return value_:
!      The return value is of type 'CHARACTER' and of the same kind as
       STRING where trailing spaces are removed and the same number of
       spaces are inserted at the start of STRING.
  
--- 7763,7786 ----
  
  File: gfortran.info,  Node: ADJUSTR,  Next: AIMAG,  Prev: ADJUSTL,  Up: Intrinsic Procedures
  
! 8.10 â€˜ADJUSTRâ€™ -- Right adjust a string
  =======================================
  
  _Synopsis_:
!      â€˜RESULT = ADJUSTR(STRING)â€™
  
  _Description_:
!      â€˜ADJUSTR(STRING)â€™ right adjusts a string by removing trailing
       spaces.  Spaces are inserted at the start of the string as needed.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      STR         The type shall be â€˜CHARACTERâ€™.
  
  _Return value_:
!      The return value is of type â€˜CHARACTERâ€™ and of the same kind as
       STRING where trailing spaces are removed and the same number of
       spaces are inserted at the start of STRING.
  
*************** _See also_:
*** 7801,7826 ****
  
  File: gfortran.info,  Node: AIMAG,  Next: AINT,  Prev: ADJUSTR,  Up: Intrinsic Procedures
  
! 8.11 'AIMAG' -- Imaginary part of complex number
  ================================================
  
  _Synopsis_:
!      'RESULT = AIMAG(Z)'
  
  _Description_:
!      'AIMAG(Z)' yields the imaginary part of complex argument 'Z'.  The
!      'IMAG(Z)' and 'IMAGPART(Z)' intrinsic functions are provided for
!      compatibility with 'g77', and their use in new code is strongly
       discouraged.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      Z           The type of the argument shall be 'COMPLEX'.
  
  _Return value_:
!      The return value is of type 'REAL' with the kind type parameter of
       the argument.
  
  _Example_:
--- 7801,7826 ----
  
  File: gfortran.info,  Node: AIMAG,  Next: AINT,  Prev: ADJUSTR,  Up: Intrinsic Procedures
  
! 8.11 â€˜AIMAGâ€™ -- Imaginary part of complex number
  ================================================
  
  _Synopsis_:
!      â€˜RESULT = AIMAG(Z)â€™
  
  _Description_:
!      â€˜AIMAG(Z)â€™ yields the imaginary part of complex argument â€˜Zâ€™.  The
!      â€˜IMAG(Z)â€™ and â€˜IMAGPART(Z)â€™ intrinsic functions are provided for
!      compatibility with â€˜g77â€™, and their use in new code is strongly
       discouraged.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      Z           The type of the argument shall be â€˜COMPLEXâ€™.
  
  _Return value_:
!      The return value is of type â€˜REALâ€™ with the kind type parameter of
       the argument.
  
  _Example_:
*************** _Example_:
*** 7835,7844 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'AIMAG(Z)'     'COMPLEX Z'       'REAL'         Fortran 77 and later
!      'DIMAG(Z)'     'COMPLEX(8) Z'    'REAL(8)'      GNU extension
!      'IMAG(Z)'      'COMPLEX Z'       'REAL'         GNU extension
!      'IMAGPART(Z)'  'COMPLEX Z'       'REAL'         GNU extension
  
  _Standard_:
       Fortran 77 and later, has overloads that are GNU extensions
--- 7835,7844 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜AIMAG(Z)â€™     â€˜COMPLEX Zâ€™       â€˜REALâ€™         Fortran 77 and later
!      â€˜DIMAG(Z)â€™     â€˜COMPLEX(8) Zâ€™    â€˜REAL(8)â€™      GNU extension
!      â€˜IMAG(Z)â€™      â€˜COMPLEX Zâ€™       â€˜REALâ€™         GNU extension
!      â€˜IMAGPART(Z)â€™  â€˜COMPLEX Zâ€™       â€˜REALâ€™         GNU extension
  
  _Standard_:
       Fortran 77 and later, has overloads that are GNU extensions
*************** _Standard_:
*** 7846,7874 ****
  
  File: gfortran.info,  Node: AINT,  Next: ALARM,  Prev: AIMAG,  Up: Intrinsic Procedures
  
! 8.12 'AINT' -- Truncate to a whole number
  =========================================
  
  _Synopsis_:
!      'RESULT = AINT(A [, KIND])'
  
  _Description_:
!      'AINT(A [, KIND])' truncates its argument to a whole number.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           The type of the argument shall be 'REAL'.
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type 'REAL' with the kind type parameter of
       the argument if the optional KIND is absent; otherwise, the kind
       type parameter is given by KIND.  If the magnitude of X is less
!      than one, 'AINT(X)' returns zero.  If the magnitude is equal to or
       greater than one then it returns the largest whole number that does
       not exceed its magnitude.  The sign is the same as the sign of X.
  
--- 7846,7874 ----
  
  File: gfortran.info,  Node: AINT,  Next: ALARM,  Prev: AIMAG,  Up: Intrinsic Procedures
  
! 8.12 â€˜AINTâ€™ -- Truncate to a whole number
  =========================================
  
  _Synopsis_:
!      â€˜RESULT = AINT(A [, KIND])â€™
  
  _Description_:
!      â€˜AINT(A [, KIND])â€™ truncates its argument to a whole number.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           The type of the argument shall be â€˜REALâ€™.
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type â€˜REALâ€™ with the kind type parameter of
       the argument if the optional KIND is absent; otherwise, the kind
       type parameter is given by KIND.  If the magnitude of X is less
!      than one, â€˜AINT(X)â€™ returns zero.  If the magnitude is equal to or
       greater than one then it returns the largest whole number that does
       not exceed its magnitude.  The sign is the same as the sign of X.
  
*************** _Example_:
*** 7885,7892 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'AINT(A)'      'REAL(4) A'       'REAL(4)'      Fortran 77 and later
!      'DINT(A)'      'REAL(8) A'       'REAL(8)'      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later
--- 7885,7892 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜AINT(A)â€™      â€˜REAL(4) Aâ€™       â€˜REAL(4)â€™      Fortran 77 and later
!      â€˜DINT(A)â€™      â€˜REAL(8) Aâ€™       â€˜REAL(8)â€™      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later
*************** _Standard_:
*** 7894,7909 ****
  
  File: gfortran.info,  Node: ALARM,  Next: ALL,  Prev: AINT,  Up: Intrinsic Procedures
  
! 8.13 'ALARM' -- Execute a routine after a given delay
  =====================================================
  
  _Synopsis_:
!      'CALL ALARM(SECONDS, HANDLER [, STATUS])'
  
  _Description_:
!      'ALARM(SECONDS, HANDLER [, STATUS])' causes external subroutine
!      HANDLER to be executed after a delay of SECONDS by using 'alarm(2)'
!      to set up a signal and 'signal(2)' to catch it.  If STATUS is
       supplied, it is returned with the number of seconds remaining until
       any previously scheduled alarm was due to be delivered, or zero if
       there was no previously scheduled alarm.
--- 7894,7909 ----
  
  File: gfortran.info,  Node: ALARM,  Next: ALL,  Prev: AINT,  Up: Intrinsic Procedures
  
! 8.13 â€˜ALARMâ€™ -- Execute a routine after a given delay
  =====================================================
  
  _Synopsis_:
!      â€˜CALL ALARM(SECONDS, HANDLER [, STATUS])â€™
  
  _Description_:
!      â€˜ALARM(SECONDS, HANDLER [, STATUS])â€™ causes external subroutine
!      HANDLER to be executed after a delay of SECONDS by using â€˜alarm(2)â€™
!      to set up a signal and â€˜signal(2)â€™ to catch it.  If STATUS is
       supplied, it is returned with the number of seconds remaining until
       any previously scheduled alarm was due to be delivered, or zero if
       there was no previously scheduled alarm.
*************** _Class_:
*** 7913,7927 ****
  
  _Arguments_:
       SECONDS     The type of the argument shall be a scalar
!                  'INTEGER'.  It is 'INTENT(IN)'.
!      HANDLER     Signal handler ('INTEGER FUNCTION' or
!                  'SUBROUTINE') or dummy/global 'INTEGER' scalar.
!                  The scalar values may be either 'SIG_IGN=1' to
!                  ignore the alarm generated or 'SIG_DFL=0' to set
!                  the default action.  It is 'INTENT(IN)'.
       STATUS      (Optional) STATUS shall be a scalar variable of
!                  the default 'INTEGER' kind.  It is
!                  'INTENT(OUT)'.
  
  _Example_:
            program test_alarm
--- 7913,7927 ----
  
  _Arguments_:
       SECONDS     The type of the argument shall be a scalar
!                  â€˜INTEGERâ€™.  It is â€˜INTENT(IN)â€™.
!      HANDLER     Signal handler (â€˜INTEGER FUNCTIONâ€™ or
!                  â€˜SUBROUTINEâ€™) or dummy/global â€˜INTEGERâ€™ scalar.
!                  The scalar values may be either â€˜SIG_IGN=1â€™ to
!                  ignore the alarm generated or â€˜SIG_DFL=0â€™ to set
!                  the default action.  It is â€˜INTENT(IN)â€™.
       STATUS      (Optional) STATUS shall be a scalar variable of
!                  the default â€˜INTEGERâ€™ kind.  It is
!                  â€˜INTENT(OUT)â€™.
  
  _Example_:
            program test_alarm
*************** _Standard_:
*** 7940,7979 ****
  
  File: gfortran.info,  Node: ALL,  Next: ALLOCATED,  Prev: ALARM,  Up: Intrinsic Procedures
  
! 8.14 'ALL' -- All values in MASK along DIM are true
  ===================================================
  
  _Synopsis_:
!      'RESULT = ALL(MASK [, DIM])'
  
  _Description_:
!      'ALL(MASK [, DIM])' determines if all the values are true in MASK
       in the array along dimension DIM.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      MASK        The type of the argument shall be 'LOGICAL' and
                   it shall not be scalar.
       DIM         (Optional) DIM shall be a scalar integer with a
                   value that lies between one and the rank of
                   MASK.
  
  _Return value_:
!      'ALL(MASK)' returns a scalar value of type 'LOGICAL' where the kind
       type parameter is the same as the kind type parameter of MASK.  If
!      DIM is present, then 'ALL(MASK, DIM)' returns an array with the
       rank of MASK minus 1.  The shape is determined from the shape of
       MASK where the DIM dimension is elided.
  
       (A)
!           'ALL(MASK)' is true if all elements of MASK are true.  It also
            is true if MASK has zero size; otherwise, it is false.
       (B)
!           If the rank of MASK is one, then 'ALL(MASK,DIM)' is equivalent
!           to 'ALL(MASK)'.  If the rank is greater than one, then
!           'ALL(MASK,DIM)' is determined by applying 'ALL' to the array
            sections.
  
  _Example_:
--- 7940,7979 ----
  
  File: gfortran.info,  Node: ALL,  Next: ALLOCATED,  Prev: ALARM,  Up: Intrinsic Procedures
  
! 8.14 â€˜ALLâ€™ -- All values in MASK along DIM are true
  ===================================================
  
  _Synopsis_:
!      â€˜RESULT = ALL(MASK [, DIM])â€™
  
  _Description_:
!      â€˜ALL(MASK [, DIM])â€™ determines if all the values are true in MASK
       in the array along dimension DIM.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      MASK        The type of the argument shall be â€˜LOGICALâ€™ and
                   it shall not be scalar.
       DIM         (Optional) DIM shall be a scalar integer with a
                   value that lies between one and the rank of
                   MASK.
  
  _Return value_:
!      â€˜ALL(MASK)â€™ returns a scalar value of type â€˜LOGICALâ€™ where the kind
       type parameter is the same as the kind type parameter of MASK.  If
!      DIM is present, then â€˜ALL(MASK, DIM)â€™ returns an array with the
       rank of MASK minus 1.  The shape is determined from the shape of
       MASK where the DIM dimension is elided.
  
       (A)
!           â€˜ALL(MASK)â€™ is true if all elements of MASK are true.  It also
            is true if MASK has zero size; otherwise, it is false.
       (B)
!           If the rank of MASK is one, then â€˜ALL(MASK,DIM)â€™ is equivalent
!           to â€˜ALL(MASK)â€™.  If the rank is greater than one, then
!           â€˜ALL(MASK,DIM)â€™ is determined by applying â€˜ALLâ€™ to the array
            sections.
  
  _Example_:
*************** _Standard_:
*** 7999,8026 ****
  
  File: gfortran.info,  Node: ALLOCATED,  Next: AND,  Prev: ALL,  Up: Intrinsic Procedures
  
! 8.15 'ALLOCATED' -- Status of an allocatable entity
  ===================================================
  
  _Synopsis_:
!      'RESULT = ALLOCATED(ARRAY)'
!      'RESULT = ALLOCATED(SCALAR)'
  
  _Description_:
!      'ALLOCATED(ARRAY)' and 'ALLOCATED(SCALAR)' check the allocation
       status of ARRAY and SCALAR, respectively.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      ARRAY       The argument shall be an 'ALLOCATABLE' array.
!      SCALAR      The argument shall be an 'ALLOCATABLE' scalar.
  
  _Return value_:
!      The return value is a scalar 'LOGICAL' with the default logical
       kind type parameter.  If the argument is allocated, then the result
!      is '.TRUE.'; otherwise, it returns '.FALSE.'
  
  _Example_:
            program test_allocated
--- 7999,8026 ----
  
  File: gfortran.info,  Node: ALLOCATED,  Next: AND,  Prev: ALL,  Up: Intrinsic Procedures
  
! 8.15 â€˜ALLOCATEDâ€™ -- Status of an allocatable entity
  ===================================================
  
  _Synopsis_:
!      â€˜RESULT = ALLOCATED(ARRAY)â€™
!      â€˜RESULT = ALLOCATED(SCALAR)â€™
  
  _Description_:
!      â€˜ALLOCATED(ARRAY)â€™ and â€˜ALLOCATED(SCALAR)â€™ check the allocation
       status of ARRAY and SCALAR, respectively.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      ARRAY       The argument shall be an â€˜ALLOCATABLEâ€™ array.
!      SCALAR      The argument shall be an â€˜ALLOCATABLEâ€™ scalar.
  
  _Return value_:
!      The return value is a scalar â€˜LOGICALâ€™ with the default logical
       kind type parameter.  If the argument is allocated, then the result
!      is â€˜.TRUE.â€™; otherwise, it returns â€˜.FALSE.â€™
  
  _Example_:
            program test_allocated
*************** _Example_:
*** 8030,8049 ****
            end program test_allocated
  
  _Standard_:
!      Fortran 90 and later; for the 'SCALAR=' keyword and allocatable
       scalar entities, Fortran 2003 and later.
  
  
  File: gfortran.info,  Node: AND,  Next: ANINT,  Prev: ALLOCATED,  Up: Intrinsic Procedures
  
! 8.16 'AND' -- Bitwise logical AND
  =================================
  
  _Synopsis_:
!      'RESULT = AND(I, J)'
  
  _Description_:
!      Bitwise logical 'AND'.
  
       This intrinsic routine is provided for backwards compatibility with
       GNU Fortran 77.  For integer arguments, programmers should consider
--- 8030,8049 ----
            end program test_allocated
  
  _Standard_:
!      Fortran 90 and later; for the â€˜SCALAR=â€™ keyword and allocatable
       scalar entities, Fortran 2003 and later.
  
  
  File: gfortran.info,  Node: AND,  Next: ANINT,  Prev: ALLOCATED,  Up: Intrinsic Procedures
  
! 8.16 â€˜ANDâ€™ -- Bitwise logical AND
  =================================
  
  _Synopsis_:
!      â€˜RESULT = AND(I, J)â€™
  
  _Description_:
!      Bitwise logical â€˜ANDâ€™.
  
       This intrinsic routine is provided for backwards compatibility with
       GNU Fortran 77.  For integer arguments, programmers should consider
*************** _Class_:
*** 8054,8073 ****
       Function
  
  _Arguments_:
!      I           The type shall be either a scalar 'INTEGER' type
!                  or a scalar 'LOGICAL' type or a
                   boz-literal-constant.
       J           The type shall be the same as the type of I or a
                   boz-literal-constant.  I and J shall not both be
                   boz-literal-constants.  If either I or J is a
                   boz-literal-constant, then the other argument
!                  must be a scalar 'INTEGER'.
  
  _Return value_:
!      The return type is either a scalar 'INTEGER' or a scalar 'LOGICAL'.
       If the kind type parameters differ, then the smaller kind type is
       implicitly converted to larger kind, and the return has the larger
!      kind.  A boz-literal-constant is converted to an 'INTEGER' with the
       kind type parameter of the other argument as-if a call to *note
       INT:: occurred.
  
--- 8054,8073 ----
       Function
  
  _Arguments_:
!      I           The type shall be either a scalar â€˜INTEGERâ€™ type
!                  or a scalar â€˜LOGICALâ€™ type or a
                   boz-literal-constant.
       J           The type shall be the same as the type of I or a
                   boz-literal-constant.  I and J shall not both be
                   boz-literal-constants.  If either I or J is a
                   boz-literal-constant, then the other argument
!                  must be a scalar â€˜INTEGERâ€™.
  
  _Return value_:
!      The return type is either a scalar â€˜INTEGERâ€™ or a scalar â€˜LOGICALâ€™.
       If the kind type parameters differ, then the smaller kind type is
       implicitly converted to larger kind, and the return has the larger
!      kind.  A boz-literal-constant is converted to an â€˜INTEGERâ€™ with the
       kind type parameter of the other argument as-if a call to *note
       INT:: occurred.
  
*************** _See also_:
*** 8091,8112 ****
  
  File: gfortran.info,  Node: ANINT,  Next: ANY,  Prev: AND,  Up: Intrinsic Procedures
  
! 8.17 'ANINT' -- Nearest whole number
  ====================================
  
  _Synopsis_:
!      'RESULT = ANINT(A [, KIND])'
  
  _Description_:
!      'ANINT(A [, KIND])' rounds its argument to the nearest whole
       number.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           The type of the argument shall be 'REAL'.
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
--- 8091,8112 ----
  
  File: gfortran.info,  Node: ANINT,  Next: ANY,  Prev: AND,  Up: Intrinsic Procedures
  
! 8.17 â€˜ANINTâ€™ -- Nearest whole number
  ====================================
  
  _Synopsis_:
!      â€˜RESULT = ANINT(A [, KIND])â€™
  
  _Description_:
!      â€˜ANINT(A [, KIND])â€™ rounds its argument to the nearest whole
       number.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           The type of the argument shall be â€˜REALâ€™.
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
*************** _Return value_:
*** 8114,8121 ****
       The return value is of type real with the kind type parameter of
       the argument if the optional KIND is absent; otherwise, the kind
       type parameter is given by KIND.  If A is greater than zero,
!      'ANINT(A)' returns 'AINT(X+0.5)'.  If A is less than or equal to
!      zero then it returns 'AINT(X-0.5)'.
  
  _Example_:
            program test_anint
--- 8114,8121 ----
       The return value is of type real with the kind type parameter of
       the argument if the optional KIND is absent; otherwise, the kind
       type parameter is given by KIND.  If A is greater than zero,
!      â€˜ANINT(A)â€™ returns â€˜AINT(X+0.5)â€™.  If A is less than or equal to
!      zero then it returns â€˜AINT(X-0.5)â€™.
  
  _Example_:
            program test_anint
*************** _Example_:
*** 8130,8137 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'ANINT(A)'     'REAL(4) A'       'REAL(4)'      Fortran 77 and later
!      'DNINT(A)'     'REAL(8) A'       'REAL(8)'      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later
--- 8130,8137 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜ANINT(A)â€™     â€˜REAL(4) Aâ€™       â€˜REAL(4)â€™      Fortran 77 and later
!      â€˜DNINT(A)â€™     â€˜REAL(8) Aâ€™       â€˜REAL(8)â€™      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later
*************** _Standard_:
*** 8139,8178 ****
  
  File: gfortran.info,  Node: ANY,  Next: ASIN,  Prev: ANINT,  Up: Intrinsic Procedures
  
! 8.18 'ANY' -- Any value in MASK along DIM is true
  =================================================
  
  _Synopsis_:
!      'RESULT = ANY(MASK [, DIM])'
  
  _Description_:
!      'ANY(MASK [, DIM])' determines if any of the values in the logical
!      array MASK along dimension DIM are '.TRUE.'.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      MASK        The type of the argument shall be 'LOGICAL' and
                   it shall not be scalar.
       DIM         (Optional) DIM shall be a scalar integer with a
                   value that lies between one and the rank of
                   MASK.
  
  _Return value_:
!      'ANY(MASK)' returns a scalar value of type 'LOGICAL' where the kind
       type parameter is the same as the kind type parameter of MASK.  If
!      DIM is present, then 'ANY(MASK, DIM)' returns an array with the
       rank of MASK minus 1.  The shape is determined from the shape of
       MASK where the DIM dimension is elided.
  
       (A)
!           'ANY(MASK)' is true if any element of MASK is true; otherwise,
            it is false.  It also is false if MASK has zero size.
       (B)
!           If the rank of MASK is one, then 'ANY(MASK,DIM)' is equivalent
!           to 'ANY(MASK)'.  If the rank is greater than one, then
!           'ANY(MASK,DIM)' is determined by applying 'ANY' to the array
            sections.
  
  _Example_:
--- 8139,8178 ----
  
  File: gfortran.info,  Node: ANY,  Next: ASIN,  Prev: ANINT,  Up: Intrinsic Procedures
  
! 8.18 â€˜ANYâ€™ -- Any value in MASK along DIM is true
  =================================================
  
  _Synopsis_:
!      â€˜RESULT = ANY(MASK [, DIM])â€™
  
  _Description_:
!      â€˜ANY(MASK [, DIM])â€™ determines if any of the values in the logical
!      array MASK along dimension DIM are â€˜.TRUE.â€™.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      MASK        The type of the argument shall be â€˜LOGICALâ€™ and
                   it shall not be scalar.
       DIM         (Optional) DIM shall be a scalar integer with a
                   value that lies between one and the rank of
                   MASK.
  
  _Return value_:
!      â€˜ANY(MASK)â€™ returns a scalar value of type â€˜LOGICALâ€™ where the kind
       type parameter is the same as the kind type parameter of MASK.  If
!      DIM is present, then â€˜ANY(MASK, DIM)â€™ returns an array with the
       rank of MASK minus 1.  The shape is determined from the shape of
       MASK where the DIM dimension is elided.
  
       (A)
!           â€˜ANY(MASK)â€™ is true if any element of MASK is true; otherwise,
            it is false.  It also is false if MASK has zero size.
       (B)
!           If the rank of MASK is one, then â€˜ANY(MASK,DIM)â€™ is equivalent
!           to â€˜ANY(MASK)â€™.  If the rank is greater than one, then
!           â€˜ANY(MASK,DIM)â€™ is determined by applying â€˜ANYâ€™ to the array
            sections.
  
  _Example_:
*************** _Standard_:
*** 8198,8219 ****
  
  File: gfortran.info,  Node: ASIN,  Next: ASIND,  Prev: ANY,  Up: Intrinsic Procedures
  
! 8.19 'ASIN' -- Arcsine function
  ===============================
  
  _Synopsis_:
!      'RESULT = ASIN(X)'
  
  _Description_:
!      'ASIN(X)' computes the arcsine of its X (inverse of 'SIN(X)').
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be either 'REAL' and a magnitude
                   that is less than or equal to one - or be
!                  'COMPLEX'.
  
  _Return value_:
       The return value is of the same type and kind as X.  The real part
--- 8198,8219 ----
  
  File: gfortran.info,  Node: ASIN,  Next: ASIND,  Prev: ANY,  Up: Intrinsic Procedures
  
! 8.19 â€˜ASINâ€™ -- Arcsine function
  ===============================
  
  _Synopsis_:
!      â€˜RESULT = ASIN(X)â€™
  
  _Description_:
!      â€˜ASIN(X)â€™ computes the arcsine of its X (inverse of â€˜SIN(X)â€™).
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be either â€˜REALâ€™ and a magnitude
                   that is less than or equal to one - or be
!                  â€˜COMPLEXâ€™.
  
  _Return value_:
       The return value is of the same type and kind as X.  The real part
*************** _Example_:
*** 8229,8236 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'ASIN(X)'      'REAL(4) X'       'REAL(4)'      Fortran 77 and later
!      'DASIN(X)'     'REAL(8) X'       'REAL(8)'      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later, for a complex argument Fortran 2008 or later
--- 8229,8236 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜ASIN(X)â€™      â€˜REAL(4) Xâ€™       â€˜REAL(4)â€™      Fortran 77 and later
!      â€˜DASIN(X)â€™     â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later, for a complex argument Fortran 2008 or later
*************** _See also_:
*** 8244,8264 ****
  
  File: gfortran.info,  Node: ASIND,  Next: ASINH,  Prev: ASIN,  Up: Intrinsic Procedures
  
! 8.20 'ASIND' -- Arcsine function, degrees
  =========================================
  
  _Synopsis_:
!      'RESULT = ASIND(X)'
  
  _Description_:
!      'ASIND(X)' computes the arcsine of its X in degrees (inverse of
!      'SIND(X)').
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be either 'REAL' and a magnitude
                   that is less than or equal to one.
  
  _Return value_:
--- 8244,8264 ----
  
  File: gfortran.info,  Node: ASIND,  Next: ASINH,  Prev: ASIN,  Up: Intrinsic Procedures
  
! 8.20 â€˜ASINDâ€™ -- Arcsine function, degrees
  =========================================
  
  _Synopsis_:
!      â€˜RESULT = ASIND(X)â€™
  
  _Description_:
!      â€˜ASIND(X)â€™ computes the arcsine of its X in degrees (inverse of
!      â€˜SIND(X)â€™).
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be either â€˜REALâ€™ and a magnitude
                   that is less than or equal to one.
  
  _Return value_:
*************** _Example_:
*** 8274,8281 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'ASIND(X)'     'REAL(4) X'       'REAL(4)'      Fortran 2023
!      'DASIND(X)'    'REAL(8) X'       'REAL(8)'      GNU extension
  
  _Standard_:
       Fortran 2023
--- 8274,8281 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜ASIND(X)â€™     â€˜REAL(4) Xâ€™       â€˜REAL(4)â€™      Fortran 2023
!      â€˜DASIND(X)â€™    â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      GNU extension
  
  _Standard_:
       Fortran 2023
*************** _See also_:
*** 8289,8308 ****
  
  File: gfortran.info,  Node: ASINH,  Next: ASSOCIATED,  Prev: ASIND,  Up: Intrinsic Procedures
  
! 8.21 'ASINH' -- Inverse hyperbolic sine function
  ================================================
  
  _Synopsis_:
!      'RESULT = ASINH(X)'
  
  _Description_:
!      'ASINH(X)' computes the inverse hyperbolic sine of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL' or 'COMPLEX'.
  
  _Return value_:
       The return value is of the same type and kind as X.  If X is
--- 8289,8308 ----
  
  File: gfortran.info,  Node: ASINH,  Next: ASSOCIATED,  Prev: ASIND,  Up: Intrinsic Procedures
  
! 8.21 â€˜ASINHâ€™ -- Inverse hyperbolic sine function
  ================================================
  
  _Synopsis_:
!      â€˜RESULT = ASINH(X)â€™
  
  _Description_:
!      â€˜ASINH(X)â€™ computes the inverse hyperbolic sine of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™ or â€˜COMPLEXâ€™.
  
  _Return value_:
       The return value is of the same type and kind as X.  If X is
*************** _Example_:
*** 8318,8324 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'DASINH(X)'    'REAL(8) X'       'REAL(8)'      GNU extension.
  
  _Standard_:
       Fortran 2008 and later
--- 8318,8324 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜DASINH(X)â€™    â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      GNU extension.
  
  _Standard_:
       Fortran 2008 and later
*************** _See also_:
*** 8330,8350 ****
  
  File: gfortran.info,  Node: ASSOCIATED,  Next: ATAN,  Prev: ASINH,  Up: Intrinsic Procedures
  
! 8.22 'ASSOCIATED' -- Status of a pointer or pointer/target pair
  ===============================================================
  
  _Synopsis_:
!      'RESULT = ASSOCIATED(POINTER [, TARGET])'
  
  _Description_:
!      'ASSOCIATED(POINTER [, TARGET])' determines the status of the
       pointer POINTER or if POINTER is associated with the target TARGET.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      POINTER     POINTER shall have the 'POINTER' attribute and
                   it can be of any type.
       TARGET      (Optional) TARGET shall be a pointer or a
                   target.  It must have the same type, kind type
--- 8330,8350 ----
  
  File: gfortran.info,  Node: ASSOCIATED,  Next: ATAN,  Prev: ASINH,  Up: Intrinsic Procedures
  
! 8.22 â€˜ASSOCIATEDâ€™ -- Status of a pointer or pointer/target pair
  ===============================================================
  
  _Synopsis_:
!      â€˜RESULT = ASSOCIATED(POINTER [, TARGET])â€™
  
  _Description_:
!      â€˜ASSOCIATED(POINTER [, TARGET])â€™ determines the status of the
       pointer POINTER or if POINTER is associated with the target TARGET.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      POINTER     POINTER shall have the â€˜POINTERâ€™ attribute and
                   it can be of any type.
       TARGET      (Optional) TARGET shall be a pointer or a
                   target.  It must have the same type, kind type
*************** _Arguments_:
*** 8353,8362 ****
       undefined.
  
  _Return value_:
!      'ASSOCIATED(POINTER)' returns a scalar value of type 'LOGICAL(4)'.
       There are several cases:
       (A) When the optional TARGET is not present then
!           'ASSOCIATED(POINTER)' is true if POINTER is associated with a
            target; otherwise, it returns false.
       (B) If TARGET is present and a scalar target, the result is true if
            TARGET is not a zero-sized storage sequence and the target
--- 8353,8362 ----
       undefined.
  
  _Return value_:
!      â€˜ASSOCIATED(POINTER)â€™ returns a scalar value of type â€˜LOGICAL(4)â€™.
       There are several cases:
       (A) When the optional TARGET is not present then
!           â€˜ASSOCIATED(POINTER)â€™ is true if POINTER is associated with a
            target; otherwise, it returns false.
       (B) If TARGET is present and a scalar target, the result is true if
            TARGET is not a zero-sized storage sequence and the target
*************** _See also_:
*** 8400,8427 ****
  
  File: gfortran.info,  Node: ATAN,  Next: ATAND,  Prev: ASSOCIATED,  Up: Intrinsic Procedures
  
! 8.23 'ATAN' -- Arctangent function
  ==================================
  
  _Synopsis_:
!      'RESULT = ATAN(X)'
!      'RESULT = ATAN(Y, X)'
  
  _Description_:
!      'ATAN(X)' computes the arctangent of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL' or 'COMPLEX'; if Y is
                   present, X shall be REAL.
       Y           The type and kind type parameter shall be the
                   same as X.
  
  _Return value_:
       The return value is of the same type and kind as X.  If Y is
!      present, the result is identical to 'ATAN2(Y,X)'.  Otherwise, it is
       the arctangent of X, where the real part of the result is in
       radians and lies in the range -\pi/2 \leq \Re \atan(x) \leq \pi/2.
  
--- 8400,8427 ----
  
  File: gfortran.info,  Node: ATAN,  Next: ATAND,  Prev: ASSOCIATED,  Up: Intrinsic Procedures
  
! 8.23 â€˜ATANâ€™ -- Arctangent function
  ==================================
  
  _Synopsis_:
!      â€˜RESULT = ATAN(X)â€™
!      â€˜RESULT = ATAN(Y, X)â€™
  
  _Description_:
!      â€˜ATAN(X)â€™ computes the arctangent of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™ or â€˜COMPLEXâ€™; if Y is
                   present, X shall be REAL.
       Y           The type and kind type parameter shall be the
                   same as X.
  
  _Return value_:
       The return value is of the same type and kind as X.  If Y is
!      present, the result is identical to â€˜ATAN2(Y,X)â€™.  Otherwise, it is
       the arctangent of X, where the real part of the result is in
       radians and lies in the range -\pi/2 \leq \Re \atan(x) \leq \pi/2.
  
*************** _Example_:
*** 8434,8441 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'ATAN(X)'      'REAL(4) X'       'REAL(4)'      Fortran 77 and later
!      'DATAN(X)'     'REAL(8) X'       'REAL(8)'      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later, for a complex argument and for two arguments
--- 8434,8441 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜ATAN(X)â€™      â€˜REAL(4) Xâ€™       â€˜REAL(4)â€™      Fortran 77 and later
!      â€˜DATAN(X)â€™     â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later, for a complex argument and for two arguments
*************** _See also_:
*** 8450,8470 ****
  
  File: gfortran.info,  Node: ATAND,  Next: ATAN2,  Prev: ATAN,  Up: Intrinsic Procedures
  
! 8.24 'ATAND' -- Arctangent function, degrees
  ============================================
  
  _Synopsis_:
!      'RESULT = ATAND(X)'
  
  _Description_:
!      'ATAND(X)' computes the arctangent of X in degrees (inverse of
       *note TAND::).
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL'; if Y is present, X
                   shall be REAL.
       Y           The type and kind type parameter shall be the
                   same as X.
--- 8450,8470 ----
  
  File: gfortran.info,  Node: ATAND,  Next: ATAN2,  Prev: ATAN,  Up: Intrinsic Procedures
  
! 8.24 â€˜ATANDâ€™ -- Arctangent function, degrees
  ============================================
  
  _Synopsis_:
!      â€˜RESULT = ATAND(X)â€™
  
  _Description_:
!      â€˜ATAND(X)â€™ computes the arctangent of X in degrees (inverse of
       *note TAND::).
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™; if Y is present, X
                   shall be REAL.
       Y           The type and kind type parameter shall be the
                   same as X.
*************** _Example_:
*** 8482,8489 ****
  _Specific names_:
       Name              Argument          Return type    Standard
       --------------------------------------------------------------------------
!      'ATAND(X)'        'REAL(4) X'       'REAL(4)'      Fortran 2023
!      'DATAND(X)'       'REAL(8) X'       'REAL(8)'      GNU extension
  
  _Standard_:
       Fortran 2023
--- 8482,8489 ----
  _Specific names_:
       Name              Argument          Return type    Standard
       --------------------------------------------------------------------------
!      â€˜ATAND(X)â€™        â€˜REAL(4) Xâ€™       â€˜REAL(4)â€™      Fortran 2023
!      â€˜DATAND(X)â€™       â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      GNU extension
  
  _Standard_:
       Fortran 2023
*************** _See also_:
*** 8497,8510 ****
  
  File: gfortran.info,  Node: ATAN2,  Next: ATAN2D,  Prev: ATAND,  Up: Intrinsic Procedures
  
! 8.25 'ATAN2' -- Arctangent function
  ===================================
  
  _Synopsis_:
!      'RESULT = ATAN2(Y, X)'
  
  _Description_:
!      'ATAN2(Y, X)' computes the principal value of the argument function
       of the complex number X + i Y. This function can be used to
       transform from Cartesian into polar coordinates and allows to
       determine the angle in the correct quadrant.
--- 8497,8510 ----
  
  File: gfortran.info,  Node: ATAN2,  Next: ATAN2D,  Prev: ATAND,  Up: Intrinsic Procedures
  
! 8.25 â€˜ATAN2â€™ -- Arctangent function
  ===================================
  
  _Synopsis_:
!      â€˜RESULT = ATAN2(Y, X)â€™
  
  _Description_:
!      â€˜ATAN2(Y, X)â€™ computes the principal value of the argument function
       of the complex number X + i Y. This function can be used to
       transform from Cartesian into polar coordinates and allows to
       determine the angle in the correct quadrant.
*************** _Class_:
*** 8513,8519 ****
       Elemental function
  
  _Arguments_:
!      Y           The type shall be 'REAL'.
       X           The type and kind type parameter shall be the
                   same as Y.  If Y is zero, then X must be
                   nonzero.
--- 8513,8519 ----
       Elemental function
  
  _Arguments_:
!      Y           The type shall be â€˜REALâ€™.
       X           The type and kind type parameter shall be the
                   same as Y.  If Y is zero, then X must be
                   nonzero.
*************** _Example_:
*** 8537,8544 ****
  _Specific names_:
       Name             Argument         Return type    Standard
       -------------------------------------------------------------------------
!      'ATAN2(X, Y)'    'REAL(4) X, Y'   'REAL(4)'      Fortran 77 and later
!      'DATAN2(X, Y)'   'REAL(8) X, Y'   'REAL(8)'      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later
--- 8537,8544 ----
  _Specific names_:
       Name             Argument         Return type    Standard
       -------------------------------------------------------------------------
!      â€˜ATAN2(X, Y)â€™    â€˜REAL(4) X, Yâ€™   â€˜REAL(4)â€™      Fortran 77 and later
!      â€˜DATAN2(X, Y)â€™   â€˜REAL(8) X, Yâ€™   â€˜REAL(8)â€™      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later
*************** _See also_:
*** 8552,8565 ****
  
  File: gfortran.info,  Node: ATAN2D,  Next: ATANH,  Prev: ATAN2,  Up: Intrinsic Procedures
  
! 8.26 'ATAN2D' -- Arctangent function, degrees
  =============================================
  
  _Synopsis_:
!      'RESULT = ATAN2D(Y, X)'
  
  _Description_:
!      'ATAN2D(Y, X)' computes the principal value of the argument
       function of the complex number X + i Y in degrees.  This function
       can be used to transform from Cartesian into polar coordinates and
       allows to determine the angle in the correct quadrant.
--- 8552,8565 ----
  
  File: gfortran.info,  Node: ATAN2D,  Next: ATANH,  Prev: ATAN2,  Up: Intrinsic Procedures
  
! 8.26 â€˜ATAN2Dâ€™ -- Arctangent function, degrees
  =============================================
  
  _Synopsis_:
!      â€˜RESULT = ATAN2D(Y, X)â€™
  
  _Description_:
!      â€˜ATAN2D(Y, X)â€™ computes the principal value of the argument
       function of the complex number X + i Y in degrees.  This function
       can be used to transform from Cartesian into polar coordinates and
       allows to determine the angle in the correct quadrant.
*************** _Class_:
*** 8568,8574 ****
       Elemental function
  
  _Arguments_:
!      Y           The type shall be 'REAL'.
       X           The type and kind type parameter shall be the
                   same as Y.  If Y is zero, then X must be
                   nonzero.
--- 8568,8574 ----
       Elemental function
  
  _Arguments_:
!      Y           The type shall be â€˜REALâ€™.
       X           The type and kind type parameter shall be the
                   same as Y.  If Y is zero, then X must be
                   nonzero.
*************** _Example_:
*** 8592,8599 ****
  _Specific names_:
       Name              Argument          Return type    Standard
       --------------------------------------------------------------------------
!      'ATAN2D(X, Y)'    'REAL(4) X, Y'    'REAL(4)'      Fortran 2023
!      'DATAN2D(X, Y)'   'REAL(8) X, Y'    'REAL(8)'      GNU extension
  
  _Standard_:
       Fortran 2023
--- 8592,8599 ----
  _Specific names_:
       Name              Argument          Return type    Standard
       --------------------------------------------------------------------------
!      â€˜ATAN2D(X, Y)â€™    â€˜REAL(4) X, Yâ€™    â€˜REAL(4)â€™      Fortran 2023
!      â€˜DATAN2D(X, Y)â€™   â€˜REAL(8) X, Yâ€™    â€˜REAL(8)â€™      GNU extension
  
  _Standard_:
       Fortran 2023
*************** _See also_:
*** 8607,8626 ****
  
  File: gfortran.info,  Node: ATANH,  Next: ATOMIC_ADD,  Prev: ATAN2D,  Up: Intrinsic Procedures
  
! 8.27 'ATANH' -- Inverse hyperbolic tangent function
  ===================================================
  
  _Synopsis_:
!      'RESULT = ATANH(X)'
  
  _Description_:
!      'ATANH(X)' computes the inverse hyperbolic tangent of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL' or 'COMPLEX'.
  
  _Return value_:
       The return value has same type and kind as X.  If X is complex, the
--- 8607,8626 ----
  
  File: gfortran.info,  Node: ATANH,  Next: ATOMIC_ADD,  Prev: ATAN2D,  Up: Intrinsic Procedures
  
! 8.27 â€˜ATANHâ€™ -- Inverse hyperbolic tangent function
  ===================================================
  
  _Synopsis_:
!      â€˜RESULT = ATANH(X)â€™
  
  _Description_:
!      â€˜ATANH(X)â€™ computes the inverse hyperbolic tangent of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™ or â€˜COMPLEXâ€™.
  
  _Return value_:
       The return value has same type and kind as X.  If X is complex, the
*************** _Example_:
*** 8636,8642 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'DATANH(X)'    'REAL(8) X'       'REAL(8)'      GNU extension
  
  _Standard_:
       Fortran 2008 and later
--- 8636,8642 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜DATANH(X)â€™    â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      GNU extension
  
  _Standard_:
       Fortran 2008 and later
*************** _See also_:
*** 8648,8675 ****
  
  File: gfortran.info,  Node: ATOMIC_ADD,  Next: ATOMIC_AND,  Prev: ATANH,  Up: Intrinsic Procedures
  
! 8.28 'ATOMIC_ADD' -- Atomic ADD operation
  =========================================
  
  _Synopsis_:
!      'CALL ATOMIC_ADD (ATOM, VALUE [, STAT])'
  
  _Description_:
!      'ATOMIC_ADD(ATOM, VALUE)' atomically adds the value of VALUE to the
       variable ATOM.  When STAT is present and the invocation was
       successful, it is assigned the value 0.  If it is present and the
       invocation has failed, it is assigned a positive value; in
       particular, for a coindexed ATOM, if the remote image has stopped,
!      it is assigned the value of 'ISO_FORTRAN_ENV''s
!      'STAT_STOPPED_IMAGE' and if the remote image has failed, the value
!      'STAT_FAILED_IMAGE'.
  
  _Class_:
       Atomic subroutine
  
  _Arguments_:
       ATOM        Scalar coarray or coindexed variable of integer
!                  type with 'ATOMIC_INT_KIND' kind.
       VALUE       Scalar of the same type as ATOM.  If the kind is
                   different, the value is converted to the kind of
                   ATOM.
--- 8648,8675 ----
  
  File: gfortran.info,  Node: ATOMIC_ADD,  Next: ATOMIC_AND,  Prev: ATANH,  Up: Intrinsic Procedures
  
! 8.28 â€˜ATOMIC_ADDâ€™ -- Atomic ADD operation
  =========================================
  
  _Synopsis_:
!      â€˜CALL ATOMIC_ADD (ATOM, VALUE [, STAT])â€™
  
  _Description_:
!      â€˜ATOMIC_ADD(ATOM, VALUE)â€™ atomically adds the value of VALUE to the
       variable ATOM.  When STAT is present and the invocation was
       successful, it is assigned the value 0.  If it is present and the
       invocation has failed, it is assigned a positive value; in
       particular, for a coindexed ATOM, if the remote image has stopped,
!      it is assigned the value of â€˜ISO_FORTRAN_ENVâ€™'s
!      â€˜STAT_STOPPED_IMAGEâ€™ and if the remote image has failed, the value
!      â€˜STAT_FAILED_IMAGEâ€™.
  
  _Class_:
       Atomic subroutine
  
  _Arguments_:
       ATOM        Scalar coarray or coindexed variable of integer
!                  type with â€˜ATOMIC_INT_KINDâ€™ kind.
       VALUE       Scalar of the same type as ATOM.  If the kind is
                   different, the value is converted to the kind of
                   ATOM.
*************** _See also_:
*** 8696,8723 ****
  
  File: gfortran.info,  Node: ATOMIC_AND,  Next: ATOMIC_CAS,  Prev: ATOMIC_ADD,  Up: Intrinsic Procedures
  
! 8.29 'ATOMIC_AND' -- Atomic bitwise AND operation
  =================================================
  
  _Synopsis_:
!      'CALL ATOMIC_AND (ATOM, VALUE [, STAT])'
  
  _Description_:
!      'ATOMIC_AND(ATOM, VALUE)' atomically defines ATOM with the bitwise
       AND between the values of ATOM and VALUE.  When STAT is present and
       the invocation was successful, it is assigned the value 0.  If it
       is present and the invocation has failed, it is assigned a positive
       value; in particular, for a coindexed ATOM, if the remote image has
!      stopped, it is assigned the value of 'ISO_FORTRAN_ENV''s
!      'STAT_STOPPED_IMAGE' and if the remote image has failed, the value
!      'STAT_FAILED_IMAGE'.
  
  _Class_:
       Atomic subroutine
  
  _Arguments_:
       ATOM        Scalar coarray or coindexed variable of integer
!                  type with 'ATOMIC_INT_KIND' kind.
       VALUE       Scalar of the same type as ATOM.  If the kind is
                   different, the value is converted to the kind of
                   ATOM.
--- 8696,8723 ----
  
  File: gfortran.info,  Node: ATOMIC_AND,  Next: ATOMIC_CAS,  Prev: ATOMIC_ADD,  Up: Intrinsic Procedures
  
! 8.29 â€˜ATOMIC_ANDâ€™ -- Atomic bitwise AND operation
  =================================================
  
  _Synopsis_:
!      â€˜CALL ATOMIC_AND (ATOM, VALUE [, STAT])â€™
  
  _Description_:
!      â€˜ATOMIC_AND(ATOM, VALUE)â€™ atomically defines ATOM with the bitwise
       AND between the values of ATOM and VALUE.  When STAT is present and
       the invocation was successful, it is assigned the value 0.  If it
       is present and the invocation has failed, it is assigned a positive
       value; in particular, for a coindexed ATOM, if the remote image has
!      stopped, it is assigned the value of â€˜ISO_FORTRAN_ENVâ€™'s
!      â€˜STAT_STOPPED_IMAGEâ€™ and if the remote image has failed, the value
!      â€˜STAT_FAILED_IMAGEâ€™.
  
  _Class_:
       Atomic subroutine
  
  _Arguments_:
       ATOM        Scalar coarray or coindexed variable of integer
!                  type with â€˜ATOMIC_INT_KINDâ€™ kind.
       VALUE       Scalar of the same type as ATOM.  If the kind is
                   different, the value is converted to the kind of
                   ATOM.
*************** _See also_:
*** 8744,8774 ****
  
  File: gfortran.info,  Node: ATOMIC_CAS,  Next: ATOMIC_DEFINE,  Prev: ATOMIC_AND,  Up: Intrinsic Procedures
  
! 8.30 'ATOMIC_CAS' -- Atomic compare and swap
  ============================================
  
  _Synopsis_:
!      'CALL ATOMIC_CAS (ATOM, OLD, COMPARE, NEW [, STAT])'
  
  _Description_:
!      'ATOMIC_CAS' compares the variable ATOM with the value of COMPARE;
       if the value is the same, ATOM is set to the value of NEW.
       Additionally, OLD is set to the value of ATOM that was used for the
       comparison.  When STAT is present and the invocation was
       successful, it is assigned the value 0.  If it is present and the
       invocation has failed, it is assigned a positive value; in
       particular, for a coindexed ATOM, if the remote image has stopped,
!      it is assigned the value of 'ISO_FORTRAN_ENV''s
!      'STAT_STOPPED_IMAGE' and if the remote image has failed, the value
!      'STAT_FAILED_IMAGE'.
  
  _Class_:
       Atomic subroutine
  
  _Arguments_:
       ATOM        Scalar coarray or coindexed variable of either
!                  integer type with 'ATOMIC_INT_KIND' kind or
!                  logical type with 'ATOMIC_LOGICAL_KIND' kind.
       OLD         Scalar of the same type and kind as ATOM.
       COMPARE     Scalar variable of the same type and kind as
                   ATOM.
--- 8744,8774 ----
  
  File: gfortran.info,  Node: ATOMIC_CAS,  Next: ATOMIC_DEFINE,  Prev: ATOMIC_AND,  Up: Intrinsic Procedures
  
! 8.30 â€˜ATOMIC_CASâ€™ -- Atomic compare and swap
  ============================================
  
  _Synopsis_:
!      â€˜CALL ATOMIC_CAS (ATOM, OLD, COMPARE, NEW [, STAT])â€™
  
  _Description_:
!      â€˜ATOMIC_CASâ€™ compares the variable ATOM with the value of COMPARE;
       if the value is the same, ATOM is set to the value of NEW.
       Additionally, OLD is set to the value of ATOM that was used for the
       comparison.  When STAT is present and the invocation was
       successful, it is assigned the value 0.  If it is present and the
       invocation has failed, it is assigned a positive value; in
       particular, for a coindexed ATOM, if the remote image has stopped,
!      it is assigned the value of â€˜ISO_FORTRAN_ENVâ€™'s
!      â€˜STAT_STOPPED_IMAGEâ€™ and if the remote image has failed, the value
!      â€˜STAT_FAILED_IMAGEâ€™.
  
  _Class_:
       Atomic subroutine
  
  _Arguments_:
       ATOM        Scalar coarray or coindexed variable of either
!                  integer type with â€˜ATOMIC_INT_KINDâ€™ kind or
!                  logical type with â€˜ATOMIC_LOGICAL_KINDâ€™ kind.
       OLD         Scalar of the same type and kind as ATOM.
       COMPARE     Scalar variable of the same type and kind as
                   ATOM.
*************** _See also_:
*** 8795,8823 ****
  
  File: gfortran.info,  Node: ATOMIC_DEFINE,  Next: ATOMIC_FETCH_ADD,  Prev: ATOMIC_CAS,  Up: Intrinsic Procedures
  
! 8.31 'ATOMIC_DEFINE' -- Setting a variable atomically
  =====================================================
  
  _Synopsis_:
!      'CALL ATOMIC_DEFINE (ATOM, VALUE [, STAT])'
  
  _Description_:
!      'ATOMIC_DEFINE(ATOM, VALUE)' defines the variable ATOM with the
       value VALUE atomically.  When STAT is present and the invocation
       was successful, it is assigned the value 0.  If it is present and
       the invocation has failed, it is assigned a positive value; in
       particular, for a coindexed ATOM, if the remote image has stopped,
!      it is assigned the value of 'ISO_FORTRAN_ENV''s
!      'STAT_STOPPED_IMAGE' and if the remote image has failed, the value
!      'STAT_FAILED_IMAGE'.
  
  _Class_:
       Atomic subroutine
  
  _Arguments_:
       ATOM        Scalar coarray or coindexed variable of either
!                  integer type with 'ATOMIC_INT_KIND' kind or
!                  logical type with 'ATOMIC_LOGICAL_KIND' kind.
                   
       VALUE       Scalar of the same type as ATOM.  If the kind is
                   different, the value is converted to the kind of
--- 8795,8823 ----
  
  File: gfortran.info,  Node: ATOMIC_DEFINE,  Next: ATOMIC_FETCH_ADD,  Prev: ATOMIC_CAS,  Up: Intrinsic Procedures
  
! 8.31 â€˜ATOMIC_DEFINEâ€™ -- Setting a variable atomically
  =====================================================
  
  _Synopsis_:
!      â€˜CALL ATOMIC_DEFINE (ATOM, VALUE [, STAT])â€™
  
  _Description_:
!      â€˜ATOMIC_DEFINE(ATOM, VALUE)â€™ defines the variable ATOM with the
       value VALUE atomically.  When STAT is present and the invocation
       was successful, it is assigned the value 0.  If it is present and
       the invocation has failed, it is assigned a positive value; in
       particular, for a coindexed ATOM, if the remote image has stopped,
!      it is assigned the value of â€˜ISO_FORTRAN_ENVâ€™'s
!      â€˜STAT_STOPPED_IMAGEâ€™ and if the remote image has failed, the value
!      â€˜STAT_FAILED_IMAGEâ€™.
  
  _Class_:
       Atomic subroutine
  
  _Arguments_:
       ATOM        Scalar coarray or coindexed variable of either
!                  integer type with â€˜ATOMIC_INT_KINDâ€™ kind or
!                  logical type with â€˜ATOMIC_LOGICAL_KINDâ€™ kind.
                   
       VALUE       Scalar of the same type as ATOM.  If the kind is
                   different, the value is converted to the kind of
*************** _See also_:
*** 8846,8874 ****
  
  File: gfortran.info,  Node: ATOMIC_FETCH_ADD,  Next: ATOMIC_FETCH_AND,  Prev: ATOMIC_DEFINE,  Up: Intrinsic Procedures
  
! 8.32 'ATOMIC_FETCH_ADD' -- Atomic ADD operation with prior fetch
  ================================================================
  
  _Synopsis_:
!      'CALL ATOMIC_FETCH_ADD (ATOM, VALUE, OLD [, STAT])'
  
  _Description_:
!      'ATOMIC_FETCH_ADD(ATOM, VALUE, OLD)' atomically stores the value of
       ATOM in OLD and adds the value of VALUE to the variable ATOM.  When
       STAT is present and the invocation was successful, it is assigned
       the value 0.  If it is present and the invocation has failed, it is
       assigned a positive value; in particular, for a coindexed ATOM, if
       the remote image has stopped, it is assigned the value of
!      'ISO_FORTRAN_ENV''s 'STAT_STOPPED_IMAGE' and if the remote image
!      has failed, the value 'STAT_FAILED_IMAGE'.
  
  _Class_:
       Atomic subroutine
  
  _Arguments_:
       ATOM        Scalar coarray or coindexed variable of integer
!                  type with 'ATOMIC_INT_KIND' kind.
!                  'ATOMIC_LOGICAL_KIND' kind.
                   
       VALUE       Scalar of the same type as ATOM.  If the kind is
                   different, the value is converted to the kind of
--- 8846,8874 ----
  
  File: gfortran.info,  Node: ATOMIC_FETCH_ADD,  Next: ATOMIC_FETCH_AND,  Prev: ATOMIC_DEFINE,  Up: Intrinsic Procedures
  
! 8.32 â€˜ATOMIC_FETCH_ADDâ€™ -- Atomic ADD operation with prior fetch
  ================================================================
  
  _Synopsis_:
!      â€˜CALL ATOMIC_FETCH_ADD (ATOM, VALUE, OLD [, STAT])â€™
  
  _Description_:
!      â€˜ATOMIC_FETCH_ADD(ATOM, VALUE, OLD)â€™ atomically stores the value of
       ATOM in OLD and adds the value of VALUE to the variable ATOM.  When
       STAT is present and the invocation was successful, it is assigned
       the value 0.  If it is present and the invocation has failed, it is
       assigned a positive value; in particular, for a coindexed ATOM, if
       the remote image has stopped, it is assigned the value of
!      â€˜ISO_FORTRAN_ENVâ€™'s â€˜STAT_STOPPED_IMAGEâ€™ and if the remote image
!      has failed, the value â€˜STAT_FAILED_IMAGEâ€™.
  
  _Class_:
       Atomic subroutine
  
  _Arguments_:
       ATOM        Scalar coarray or coindexed variable of integer
!                  type with â€˜ATOMIC_INT_KINDâ€™ kind.
!                  â€˜ATOMIC_LOGICAL_KINDâ€™ kind.
                   
       VALUE       Scalar of the same type as ATOM.  If the kind is
                   different, the value is converted to the kind of
*************** _See also_:
*** 8897,8925 ****
  
  File: gfortran.info,  Node: ATOMIC_FETCH_AND,  Next: ATOMIC_FETCH_OR,  Prev: ATOMIC_FETCH_ADD,  Up: Intrinsic Procedures
  
! 8.33 'ATOMIC_FETCH_AND' -- Atomic bitwise AND operation with prior fetch
  ========================================================================
  
  _Synopsis_:
!      'CALL ATOMIC_FETCH_AND (ATOM, VALUE, OLD [, STAT])'
  
  _Description_:
!      'ATOMIC_AND(ATOM, VALUE)' atomically stores the value of ATOM in
       OLD and defines ATOM with the bitwise AND between the values of
       ATOM and VALUE.  When STAT is present and the invocation was
       successful, it is assigned the value 0.  If it is present and the
       invocation has failed, it is assigned a positive value; in
       particular, for a coindexed ATOM, if the remote image has stopped,
!      it is assigned the value of 'ISO_FORTRAN_ENV''s
!      'STAT_STOPPED_IMAGE' and if the remote image has failed, the value
!      'STAT_FAILED_IMAGE'.
  
  _Class_:
       Atomic subroutine
  
  _Arguments_:
       ATOM        Scalar coarray or coindexed variable of integer
!                  type with 'ATOMIC_INT_KIND' kind.
       VALUE       Scalar of the same type as ATOM.  If the kind is
                   different, the value is converted to the kind of
                   ATOM.
--- 8897,8925 ----
  
  File: gfortran.info,  Node: ATOMIC_FETCH_AND,  Next: ATOMIC_FETCH_OR,  Prev: ATOMIC_FETCH_ADD,  Up: Intrinsic Procedures
  
! 8.33 â€˜ATOMIC_FETCH_ANDâ€™ -- Atomic bitwise AND operation with prior fetch
  ========================================================================
  
  _Synopsis_:
!      â€˜CALL ATOMIC_FETCH_AND (ATOM, VALUE, OLD [, STAT])â€™
  
  _Description_:
!      â€˜ATOMIC_AND(ATOM, VALUE)â€™ atomically stores the value of ATOM in
       OLD and defines ATOM with the bitwise AND between the values of
       ATOM and VALUE.  When STAT is present and the invocation was
       successful, it is assigned the value 0.  If it is present and the
       invocation has failed, it is assigned a positive value; in
       particular, for a coindexed ATOM, if the remote image has stopped,
!      it is assigned the value of â€˜ISO_FORTRAN_ENVâ€™'s
!      â€˜STAT_STOPPED_IMAGEâ€™ and if the remote image has failed, the value
!      â€˜STAT_FAILED_IMAGEâ€™.
  
  _Class_:
       Atomic subroutine
  
  _Arguments_:
       ATOM        Scalar coarray or coindexed variable of integer
!                  type with â€˜ATOMIC_INT_KINDâ€™ kind.
       VALUE       Scalar of the same type as ATOM.  If the kind is
                   different, the value is converted to the kind of
                   ATOM.
*************** _See also_:
*** 8947,8974 ****
  
  File: gfortran.info,  Node: ATOMIC_FETCH_OR,  Next: ATOMIC_FETCH_XOR,  Prev: ATOMIC_FETCH_AND,  Up: Intrinsic Procedures
  
! 8.34 'ATOMIC_FETCH_OR' -- Atomic bitwise OR operation with prior fetch
  ======================================================================
  
  _Synopsis_:
!      'CALL ATOMIC_FETCH_OR (ATOM, VALUE, OLD [, STAT])'
  
  _Description_:
!      'ATOMIC_OR(ATOM, VALUE)' atomically stores the value of ATOM in OLD
       and defines ATOM with the bitwise OR between the values of ATOM and
       VALUE.  When STAT is present and the invocation was successful, it
       is assigned the value 0.  If it is present and the invocation has
       failed, it is assigned a positive value; in particular, for a
       coindexed ATOM, if the remote image has stopped, it is assigned the
!      value of 'ISO_FORTRAN_ENV''s 'STAT_STOPPED_IMAGE' and if the remote
!      image has failed, the value 'STAT_FAILED_IMAGE'.
  
  _Class_:
       Atomic subroutine
  
  _Arguments_:
       ATOM        Scalar coarray or coindexed variable of integer
!                  type with 'ATOMIC_INT_KIND' kind.
       VALUE       Scalar of the same type as ATOM.  If the kind is
                   different, the value is converted to the kind of
                   ATOM.
--- 8947,8974 ----
  
  File: gfortran.info,  Node: ATOMIC_FETCH_OR,  Next: ATOMIC_FETCH_XOR,  Prev: ATOMIC_FETCH_AND,  Up: Intrinsic Procedures
  
! 8.34 â€˜ATOMIC_FETCH_ORâ€™ -- Atomic bitwise OR operation with prior fetch
  ======================================================================
  
  _Synopsis_:
!      â€˜CALL ATOMIC_FETCH_OR (ATOM, VALUE, OLD [, STAT])â€™
  
  _Description_:
!      â€˜ATOMIC_OR(ATOM, VALUE)â€™ atomically stores the value of ATOM in OLD
       and defines ATOM with the bitwise OR between the values of ATOM and
       VALUE.  When STAT is present and the invocation was successful, it
       is assigned the value 0.  If it is present and the invocation has
       failed, it is assigned a positive value; in particular, for a
       coindexed ATOM, if the remote image has stopped, it is assigned the
!      value of â€˜ISO_FORTRAN_ENVâ€™'s â€˜STAT_STOPPED_IMAGEâ€™ and if the remote
!      image has failed, the value â€˜STAT_FAILED_IMAGEâ€™.
  
  _Class_:
       Atomic subroutine
  
  _Arguments_:
       ATOM        Scalar coarray or coindexed variable of integer
!                  type with â€˜ATOMIC_INT_KINDâ€™ kind.
       VALUE       Scalar of the same type as ATOM.  If the kind is
                   different, the value is converted to the kind of
                   ATOM.
*************** _See also_:
*** 8996,9024 ****
  
  File: gfortran.info,  Node: ATOMIC_FETCH_XOR,  Next: ATOMIC_OR,  Prev: ATOMIC_FETCH_OR,  Up: Intrinsic Procedures
  
! 8.35 'ATOMIC_FETCH_XOR' -- Atomic bitwise XOR operation with prior fetch
  ========================================================================
  
  _Synopsis_:
!      'CALL ATOMIC_FETCH_XOR (ATOM, VALUE, OLD [, STAT])'
  
  _Description_:
!      'ATOMIC_XOR(ATOM, VALUE)' atomically stores the value of ATOM in
       OLD and defines ATOM with the bitwise XOR between the values of
       ATOM and VALUE.  When STAT is present and the invocation was
       successful, it is assigned the value 0.  If it is present and the
       invocation has failed, it is assigned a positive value; in
       particular, for a coindexed ATOM, if the remote image has stopped,
!      it is assigned the value of 'ISO_FORTRAN_ENV''s
!      'STAT_STOPPED_IMAGE' and if the remote image has failed, the value
!      'STAT_FAILED_IMAGE'.
  
  _Class_:
       Atomic subroutine
  
  _Arguments_:
       ATOM        Scalar coarray or coindexed variable of integer
!                  type with 'ATOMIC_INT_KIND' kind.
       VALUE       Scalar of the same type as ATOM.  If the kind is
                   different, the value is converted to the kind of
                   ATOM.
--- 8996,9024 ----
  
  File: gfortran.info,  Node: ATOMIC_FETCH_XOR,  Next: ATOMIC_OR,  Prev: ATOMIC_FETCH_OR,  Up: Intrinsic Procedures
  
! 8.35 â€˜ATOMIC_FETCH_XORâ€™ -- Atomic bitwise XOR operation with prior fetch
  ========================================================================
  
  _Synopsis_:
!      â€˜CALL ATOMIC_FETCH_XOR (ATOM, VALUE, OLD [, STAT])â€™
  
  _Description_:
!      â€˜ATOMIC_XOR(ATOM, VALUE)â€™ atomically stores the value of ATOM in
       OLD and defines ATOM with the bitwise XOR between the values of
       ATOM and VALUE.  When STAT is present and the invocation was
       successful, it is assigned the value 0.  If it is present and the
       invocation has failed, it is assigned a positive value; in
       particular, for a coindexed ATOM, if the remote image has stopped,
!      it is assigned the value of â€˜ISO_FORTRAN_ENVâ€™'s
!      â€˜STAT_STOPPED_IMAGEâ€™ and if the remote image has failed, the value
!      â€˜STAT_FAILED_IMAGEâ€™.
  
  _Class_:
       Atomic subroutine
  
  _Arguments_:
       ATOM        Scalar coarray or coindexed variable of integer
!                  type with â€˜ATOMIC_INT_KINDâ€™ kind.
       VALUE       Scalar of the same type as ATOM.  If the kind is
                   different, the value is converted to the kind of
                   ATOM.
*************** _See also_:
*** 9046,9073 ****
  
  File: gfortran.info,  Node: ATOMIC_OR,  Next: ATOMIC_REF,  Prev: ATOMIC_FETCH_XOR,  Up: Intrinsic Procedures
  
! 8.36 'ATOMIC_OR' -- Atomic bitwise OR operation
  ===============================================
  
  _Synopsis_:
!      'CALL ATOMIC_OR (ATOM, VALUE [, STAT])'
  
  _Description_:
!      'ATOMIC_OR(ATOM, VALUE)' atomically defines ATOM with the bitwise
       AND between the values of ATOM and VALUE.  When STAT is present and
       the invocation was successful, it is assigned the value 0.  If it
       is present and the invocation has failed, it is assigned a positive
       value; in particular, for a coindexed ATOM, if the remote image has
!      stopped, it is assigned the value of 'ISO_FORTRAN_ENV''s
!      'STAT_STOPPED_IMAGE' and if the remote image has failed, the value
!      'STAT_FAILED_IMAGE'.
  
  _Class_:
       Atomic subroutine
  
  _Arguments_:
       ATOM        Scalar coarray or coindexed variable of integer
!                  type with 'ATOMIC_INT_KIND' kind.
       VALUE       Scalar of the same type as ATOM.  If the kind is
                   different, the value is converted to the kind of
                   ATOM.
--- 9046,9073 ----
  
  File: gfortran.info,  Node: ATOMIC_OR,  Next: ATOMIC_REF,  Prev: ATOMIC_FETCH_XOR,  Up: Intrinsic Procedures
  
! 8.36 â€˜ATOMIC_ORâ€™ -- Atomic bitwise OR operation
  ===============================================
  
  _Synopsis_:
!      â€˜CALL ATOMIC_OR (ATOM, VALUE [, STAT])â€™
  
  _Description_:
!      â€˜ATOMIC_OR(ATOM, VALUE)â€™ atomically defines ATOM with the bitwise
       AND between the values of ATOM and VALUE.  When STAT is present and
       the invocation was successful, it is assigned the value 0.  If it
       is present and the invocation has failed, it is assigned a positive
       value; in particular, for a coindexed ATOM, if the remote image has
!      stopped, it is assigned the value of â€˜ISO_FORTRAN_ENVâ€™'s
!      â€˜STAT_STOPPED_IMAGEâ€™ and if the remote image has failed, the value
!      â€˜STAT_FAILED_IMAGEâ€™.
  
  _Class_:
       Atomic subroutine
  
  _Arguments_:
       ATOM        Scalar coarray or coindexed variable of integer
!                  type with â€˜ATOMIC_INT_KINDâ€™ kind.
       VALUE       Scalar of the same type as ATOM.  If the kind is
                   different, the value is converted to the kind of
                   ATOM.
*************** _See also_:
*** 9094,9114 ****
  
  File: gfortran.info,  Node: ATOMIC_REF,  Next: ATOMIC_XOR,  Prev: ATOMIC_OR,  Up: Intrinsic Procedures
  
! 8.37 'ATOMIC_REF' -- Obtaining the value of a variable atomically
  =================================================================
  
  _Synopsis_:
!      'CALL ATOMIC_REF(VALUE, ATOM [, STAT])'
  
  _Description_:
!      'ATOMIC_DEFINE(ATOM, VALUE)' atomically assigns the value of the
       variable ATOM to VALUE.  When STAT is present and the invocation
       was successful, it is assigned the value 0.  If it is present and
       the invocation has failed, it is assigned a positive value; in
       particular, for a coindexed ATOM, if the remote image has stopped,
!      it is assigned the value of 'ISO_FORTRAN_ENV''s
!      'STAT_STOPPED_IMAGE' and if the remote image has failed, the value
!      'STAT_FAILED_IMAGE'.
  
  _Class_:
       Atomic subroutine
--- 9094,9114 ----
  
  File: gfortran.info,  Node: ATOMIC_REF,  Next: ATOMIC_XOR,  Prev: ATOMIC_OR,  Up: Intrinsic Procedures
  
! 8.37 â€˜ATOMIC_REFâ€™ -- Obtaining the value of a variable atomically
  =================================================================
  
  _Synopsis_:
!      â€˜CALL ATOMIC_REF(VALUE, ATOM [, STAT])â€™
  
  _Description_:
!      â€˜ATOMIC_DEFINE(ATOM, VALUE)â€™ atomically assigns the value of the
       variable ATOM to VALUE.  When STAT is present and the invocation
       was successful, it is assigned the value 0.  If it is present and
       the invocation has failed, it is assigned a positive value; in
       particular, for a coindexed ATOM, if the remote image has stopped,
!      it is assigned the value of â€˜ISO_FORTRAN_ENVâ€™'s
!      â€˜STAT_STOPPED_IMAGEâ€™ and if the remote image has failed, the value
!      â€˜STAT_FAILED_IMAGEâ€™.
  
  _Class_:
       Atomic subroutine
*************** _Arguments_:
*** 9118,9125 ****
                   different, the value is converted to the kind of
                   ATOM.
       ATOM        Scalar coarray or coindexed variable of either
!                  integer type with 'ATOMIC_INT_KIND' kind or
!                  logical type with 'ATOMIC_LOGICAL_KIND' kind.
       STAT        (optional) Scalar default-kind integer variable.
  
  _Example_:
--- 9118,9125 ----
                   different, the value is converted to the kind of
                   ATOM.
       ATOM        Scalar coarray or coindexed variable of either
!                  integer type with â€˜ATOMIC_INT_KINDâ€™ kind or
!                  logical type with â€˜ATOMIC_LOGICAL_KINDâ€™ kind.
       STAT        (optional) Scalar default-kind integer variable.
  
  _Example_:
*************** _See also_:
*** 9150,9177 ****
  
  File: gfortran.info,  Node: ATOMIC_XOR,  Next: BACKTRACE,  Prev: ATOMIC_REF,  Up: Intrinsic Procedures
  
! 8.38 'ATOMIC_XOR' -- Atomic bitwise OR operation
  ================================================
  
  _Synopsis_:
!      'CALL ATOMIC_XOR (ATOM, VALUE [, STAT])'
  
  _Description_:
!      'ATOMIC_AND(ATOM, VALUE)' atomically defines ATOM with the bitwise
       XOR between the values of ATOM and VALUE.  When STAT is present and
       the invocation was successful, it is assigned the value 0.  If it
       is present and the invocation has failed, it is assigned a positive
       value; in particular, for a coindexed ATOM, if the remote image has
!      stopped, it is assigned the value of 'ISO_FORTRAN_ENV''s
!      'STAT_STOPPED_IMAGE' and if the remote image has failed, the value
!      'STAT_FAILED_IMAGE'.
  
  _Class_:
       Atomic subroutine
  
  _Arguments_:
       ATOM        Scalar coarray or coindexed variable of integer
!                  type with 'ATOMIC_INT_KIND' kind.
       VALUE       Scalar of the same type as ATOM.  If the kind is
                   different, the value is converted to the kind of
                   ATOM.
--- 9150,9177 ----
  
  File: gfortran.info,  Node: ATOMIC_XOR,  Next: BACKTRACE,  Prev: ATOMIC_REF,  Up: Intrinsic Procedures
  
! 8.38 â€˜ATOMIC_XORâ€™ -- Atomic bitwise OR operation
  ================================================
  
  _Synopsis_:
!      â€˜CALL ATOMIC_XOR (ATOM, VALUE [, STAT])â€™
  
  _Description_:
!      â€˜ATOMIC_AND(ATOM, VALUE)â€™ atomically defines ATOM with the bitwise
       XOR between the values of ATOM and VALUE.  When STAT is present and
       the invocation was successful, it is assigned the value 0.  If it
       is present and the invocation has failed, it is assigned a positive
       value; in particular, for a coindexed ATOM, if the remote image has
!      stopped, it is assigned the value of â€˜ISO_FORTRAN_ENVâ€™'s
!      â€˜STAT_STOPPED_IMAGEâ€™ and if the remote image has failed, the value
!      â€˜STAT_FAILED_IMAGEâ€™.
  
  _Class_:
       Atomic subroutine
  
  _Arguments_:
       ATOM        Scalar coarray or coindexed variable of integer
!                  type with â€˜ATOMIC_INT_KINDâ€™ kind.
       VALUE       Scalar of the same type as ATOM.  If the kind is
                   different, the value is converted to the kind of
                   ATOM.
*************** _See also_:
*** 9198,9214 ****
  
  File: gfortran.info,  Node: BACKTRACE,  Next: BESSEL_J0,  Prev: ATOMIC_XOR,  Up: Intrinsic Procedures
  
! 8.39 'BACKTRACE' -- Show a backtrace
  ====================================
  
  _Synopsis_:
!      'CALL BACKTRACE'
  
  _Description_:
!      'BACKTRACE' shows a backtrace at an arbitrary place in user code.
       Program execution continues normally afterwards.  The backtrace
!      information is printed to the unit corresponding to 'ERROR_UNIT' in
!      'ISO_FORTRAN_ENV'.
  
  _Class_:
       Subroutine
--- 9198,9214 ----
  
  File: gfortran.info,  Node: BACKTRACE,  Next: BESSEL_J0,  Prev: ATOMIC_XOR,  Up: Intrinsic Procedures
  
! 8.39 â€˜BACKTRACEâ€™ -- Show a backtrace
  ====================================
  
  _Synopsis_:
!      â€˜CALL BACKTRACEâ€™
  
  _Description_:
!      â€˜BACKTRACEâ€™ shows a backtrace at an arbitrary place in user code.
       Program execution continues normally afterwards.  The backtrace
!      information is printed to the unit corresponding to â€˜ERROR_UNITâ€™ in
!      â€˜ISO_FORTRAN_ENVâ€™.
  
  _Class_:
       Subroutine
*************** _See also_:
*** 9225,9249 ****
  
  File: gfortran.info,  Node: BESSEL_J0,  Next: BESSEL_J1,  Prev: BACKTRACE,  Up: Intrinsic Procedures
  
! 8.40 'BESSEL_J0' -- Bessel function of the first kind of order 0
  ================================================================
  
  _Synopsis_:
!      'RESULT = BESSEL_J0(X)'
  
  _Description_:
!      'BESSEL_J0(X)' computes the Bessel function of the first kind of
!      order 0 of X.  This function is available under the name 'BESJ0' as
       a GNU extension.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL'.
  
  _Return value_:
!      The return value is of type 'REAL' and lies in the range -
       0.4027... \leq Bessel (0,x) \leq 1.  It has the same kind as X.
  
  _Example_:
--- 9225,9249 ----
  
  File: gfortran.info,  Node: BESSEL_J0,  Next: BESSEL_J1,  Prev: BACKTRACE,  Up: Intrinsic Procedures
  
! 8.40 â€˜BESSEL_J0â€™ -- Bessel function of the first kind of order 0
  ================================================================
  
  _Synopsis_:
!      â€˜RESULT = BESSEL_J0(X)â€™
  
  _Description_:
!      â€˜BESSEL_J0(X)â€™ computes the Bessel function of the first kind of
!      order 0 of X.  This function is available under the name â€˜BESJ0â€™ as
       a GNU extension.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™.
  
  _Return value_:
!      The return value is of type â€˜REALâ€™ and lies in the range -
       0.4027... \leq Bessel (0,x) \leq 1.  It has the same kind as X.
  
  _Example_:
*************** _Example_:
*** 9255,9261 ****
  _Specific names_:
       Name            Argument         Return type    Standard
       -------------------------------------------------------------------------
!      'DBESJ0(X)'     'REAL(8) X'      'REAL(8)'      GNU extension
  
  _Standard_:
       Fortran 2008 and later
--- 9255,9261 ----
  _Specific names_:
       Name            Argument         Return type    Standard
       -------------------------------------------------------------------------
!      â€˜DBESJ0(X)â€™     â€˜REAL(8) Xâ€™      â€˜REAL(8)â€™      GNU extension
  
  _Standard_:
       Fortran 2008 and later
*************** _Standard_:
*** 9263,9287 ****
  
  File: gfortran.info,  Node: BESSEL_J1,  Next: BESSEL_JN,  Prev: BESSEL_J0,  Up: Intrinsic Procedures
  
! 8.41 'BESSEL_J1' -- Bessel function of the first kind of order 1
  ================================================================
  
  _Synopsis_:
!      'RESULT = BESSEL_J1(X)'
  
  _Description_:
!      'BESSEL_J1(X)' computes the Bessel function of the first kind of
!      order 1 of X.  This function is available under the name 'BESJ1' as
       a GNU extension.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL'.
  
  _Return value_:
!      The return value is of type 'REAL' and lies in the range -
       0.5818... \leq Bessel (0,x) \leq 0.5818 .  It has the same kind as
       X.
  
--- 9263,9287 ----
  
  File: gfortran.info,  Node: BESSEL_J1,  Next: BESSEL_JN,  Prev: BESSEL_J0,  Up: Intrinsic Procedures
  
! 8.41 â€˜BESSEL_J1â€™ -- Bessel function of the first kind of order 1
  ================================================================
  
  _Synopsis_:
!      â€˜RESULT = BESSEL_J1(X)â€™
  
  _Description_:
!      â€˜BESSEL_J1(X)â€™ computes the Bessel function of the first kind of
!      order 1 of X.  This function is available under the name â€˜BESJ1â€™ as
       a GNU extension.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™.
  
  _Return value_:
!      The return value is of type â€˜REALâ€™ and lies in the range -
       0.5818... \leq Bessel (0,x) \leq 0.5818 .  It has the same kind as
       X.
  
*************** _Example_:
*** 9294,9300 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'DBESJ1(X)'    'REAL(8) X'       'REAL(8)'      GNU extension
  
  _Standard_:
       Fortran 2008
--- 9294,9300 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜DBESJ1(X)â€™    â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      GNU extension
  
  _Standard_:
       Fortran 2008
*************** _Standard_:
*** 9302,9338 ****
  
  File: gfortran.info,  Node: BESSEL_JN,  Next: BESSEL_Y0,  Prev: BESSEL_J1,  Up: Intrinsic Procedures
  
! 8.42 'BESSEL_JN' -- Bessel function of the first kind
  =====================================================
  
  _Synopsis_:
!      'RESULT = BESSEL_JN(N, X)'
!      'RESULT = BESSEL_JN(N1, N2, X)'
  
  _Description_:
!      'BESSEL_JN(N, X)' computes the Bessel function of the first kind of
!      order N of X.  This function is available under the name 'BESJN' as
       a GNU extension.  If N and X are arrays, their ranks and shapes
       shall conform.
  
!      'BESSEL_JN(N1, N2, X)' returns an array with the Bessel functions
       of the first kind of the orders N1 to N2.
  
  _Class_:
       Elemental function, except for the transformational function
!      'BESSEL_JN(N1, N2, X)'
  
  _Arguments_:
!      N           Shall be a scalar or an array of type 'INTEGER'.
       N1          Shall be a non-negative scalar of type
!                  'INTEGER'.
       N2          Shall be a non-negative scalar of type
!                  'INTEGER'.
!      X           Shall be a scalar or an array of type 'REAL';
!                  for 'BESSEL_JN(N1, N2, X)' it shall be scalar.
  
  _Return value_:
!      The return value is a scalar of type 'REAL'.  It has the same kind
       as X.
  
  _Notes_:
--- 9302,9338 ----
  
  File: gfortran.info,  Node: BESSEL_JN,  Next: BESSEL_Y0,  Prev: BESSEL_J1,  Up: Intrinsic Procedures
  
! 8.42 â€˜BESSEL_JNâ€™ -- Bessel function of the first kind
  =====================================================
  
  _Synopsis_:
!      â€˜RESULT = BESSEL_JN(N, X)â€™
!      â€˜RESULT = BESSEL_JN(N1, N2, X)â€™
  
  _Description_:
!      â€˜BESSEL_JN(N, X)â€™ computes the Bessel function of the first kind of
!      order N of X.  This function is available under the name â€˜BESJNâ€™ as
       a GNU extension.  If N and X are arrays, their ranks and shapes
       shall conform.
  
!      â€˜BESSEL_JN(N1, N2, X)â€™ returns an array with the Bessel functions
       of the first kind of the orders N1 to N2.
  
  _Class_:
       Elemental function, except for the transformational function
!      â€˜BESSEL_JN(N1, N2, X)â€™
  
  _Arguments_:
!      N           Shall be a scalar or an array of type â€˜INTEGERâ€™.
       N1          Shall be a non-negative scalar of type
!                  â€˜INTEGERâ€™.
       N2          Shall be a non-negative scalar of type
!                  â€˜INTEGERâ€™.
!      X           Shall be a scalar or an array of type â€˜REALâ€™;
!                  for â€˜BESSEL_JN(N1, N2, X)â€™ it shall be scalar.
  
  _Return value_:
!      The return value is a scalar of type â€˜REALâ€™.  It has the same kind
       as X.
  
  _Notes_:
*************** _Example_:
*** 9349,9356 ****
  _Specific names_:
       Name             Argument         Return type    Standard
       -------------------------------------------------------------------------
!      'DBESJN(N, X)'   'INTEGER N'      'REAL(8)'      GNU extension
!                       'REAL(8) X'
  
  _Standard_:
       Fortran 2008 and later, negative N is allowed as GNU extension
--- 9349,9356 ----
  _Specific names_:
       Name             Argument         Return type    Standard
       -------------------------------------------------------------------------
!      â€˜DBESJN(N, X)â€™   â€˜INTEGER Nâ€™      â€˜REAL(8)â€™      GNU extension
!                       â€˜REAL(8) Xâ€™
  
  _Standard_:
       Fortran 2008 and later, negative N is allowed as GNU extension
*************** _Standard_:
*** 9358,9382 ****
  
  File: gfortran.info,  Node: BESSEL_Y0,  Next: BESSEL_Y1,  Prev: BESSEL_JN,  Up: Intrinsic Procedures
  
! 8.43 'BESSEL_Y0' -- Bessel function of the second kind of order 0
  =================================================================
  
  _Synopsis_:
!      'RESULT = BESSEL_Y0(X)'
  
  _Description_:
!      'BESSEL_Y0(X)' computes the Bessel function of the second kind of
!      order 0 of X.  This function is available under the name 'BESY0' as
       a GNU extension.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL'.
  
  _Return value_:
!      The return value is of type 'REAL'.  It has the same kind as X.
  
  _Example_:
            program test_besy0
--- 9358,9382 ----
  
  File: gfortran.info,  Node: BESSEL_Y0,  Next: BESSEL_Y1,  Prev: BESSEL_JN,  Up: Intrinsic Procedures
  
! 8.43 â€˜BESSEL_Y0â€™ -- Bessel function of the second kind of order 0
  =================================================================
  
  _Synopsis_:
!      â€˜RESULT = BESSEL_Y0(X)â€™
  
  _Description_:
!      â€˜BESSEL_Y0(X)â€™ computes the Bessel function of the second kind of
!      order 0 of X.  This function is available under the name â€˜BESY0â€™ as
       a GNU extension.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™.
  
  _Return value_:
!      The return value is of type â€˜REALâ€™.  It has the same kind as X.
  
  _Example_:
            program test_besy0
*************** _Example_:
*** 9387,9393 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'DBESY0(X)'    'REAL(8) X'       'REAL(8)'      GNU extension
  
  _Standard_:
       Fortran 2008 and later
--- 9387,9393 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜DBESY0(X)â€™    â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      GNU extension
  
  _Standard_:
       Fortran 2008 and later
*************** _Standard_:
*** 9395,9419 ****
  
  File: gfortran.info,  Node: BESSEL_Y1,  Next: BESSEL_YN,  Prev: BESSEL_Y0,  Up: Intrinsic Procedures
  
! 8.44 'BESSEL_Y1' -- Bessel function of the second kind of order 1
  =================================================================
  
  _Synopsis_:
!      'RESULT = BESSEL_Y1(X)'
  
  _Description_:
!      'BESSEL_Y1(X)' computes the Bessel function of the second kind of
!      order 1 of X.  This function is available under the name 'BESY1' as
       a GNU extension.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL'.
  
  _Return value_:
!      The return value is of type 'REAL'.  It has the same kind as X.
  
  _Example_:
            program test_besy1
--- 9395,9419 ----
  
  File: gfortran.info,  Node: BESSEL_Y1,  Next: BESSEL_YN,  Prev: BESSEL_Y0,  Up: Intrinsic Procedures
  
! 8.44 â€˜BESSEL_Y1â€™ -- Bessel function of the second kind of order 1
  =================================================================
  
  _Synopsis_:
!      â€˜RESULT = BESSEL_Y1(X)â€™
  
  _Description_:
!      â€˜BESSEL_Y1(X)â€™ computes the Bessel function of the second kind of
!      order 1 of X.  This function is available under the name â€˜BESY1â€™ as
       a GNU extension.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™.
  
  _Return value_:
!      The return value is of type â€˜REALâ€™.  It has the same kind as X.
  
  _Example_:
            program test_besy1
*************** _Example_:
*** 9424,9430 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'DBESY1(X)'    'REAL(8) X'       'REAL(8)'      GNU extension
  
  _Standard_:
       Fortran 2008 and later
--- 9424,9430 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜DBESY1(X)â€™    â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      GNU extension
  
  _Standard_:
       Fortran 2008 and later
*************** _Standard_:
*** 9432,9469 ****
  
  File: gfortran.info,  Node: BESSEL_YN,  Next: BGE,  Prev: BESSEL_Y1,  Up: Intrinsic Procedures
  
! 8.45 'BESSEL_YN' -- Bessel function of the second kind
  ======================================================
  
  _Synopsis_:
!      'RESULT = BESSEL_YN(N, X)'
!      'RESULT = BESSEL_YN(N1, N2, X)'
  
  _Description_:
!      'BESSEL_YN(N, X)' computes the Bessel function of the second kind
!      of order N of X.  This function is available under the name 'BESYN'
       as a GNU extension.  If N and X are arrays, their ranks and shapes
       shall conform.
  
!      'BESSEL_YN(N1, N2, X)' returns an array with the Bessel functions
       of the first kind of the orders N1 to N2.
  
  _Class_:
       Elemental function, except for the transformational function
!      'BESSEL_YN(N1, N2, X)'
  
  _Arguments_:
!      N           Shall be a scalar or an array of type 'INTEGER'
                   .
       N1          Shall be a non-negative scalar of type
!                  'INTEGER'.
       N2          Shall be a non-negative scalar of type
!                  'INTEGER'.
!      X           Shall be a scalar or an array of type 'REAL';
!                  for 'BESSEL_YN(N1, N2, X)' it shall be scalar.
  
  _Return value_:
!      The return value is a scalar of type 'REAL'.  It has the same kind
       as X.
  
  _Notes_:
--- 9432,9469 ----
  
  File: gfortran.info,  Node: BESSEL_YN,  Next: BGE,  Prev: BESSEL_Y1,  Up: Intrinsic Procedures
  
! 8.45 â€˜BESSEL_YNâ€™ -- Bessel function of the second kind
  ======================================================
  
  _Synopsis_:
!      â€˜RESULT = BESSEL_YN(N, X)â€™
!      â€˜RESULT = BESSEL_YN(N1, N2, X)â€™
  
  _Description_:
!      â€˜BESSEL_YN(N, X)â€™ computes the Bessel function of the second kind
!      of order N of X.  This function is available under the name â€˜BESYNâ€™
       as a GNU extension.  If N and X are arrays, their ranks and shapes
       shall conform.
  
!      â€˜BESSEL_YN(N1, N2, X)â€™ returns an array with the Bessel functions
       of the first kind of the orders N1 to N2.
  
  _Class_:
       Elemental function, except for the transformational function
!      â€˜BESSEL_YN(N1, N2, X)â€™
  
  _Arguments_:
!      N           Shall be a scalar or an array of type â€˜INTEGERâ€™
                   .
       N1          Shall be a non-negative scalar of type
!                  â€˜INTEGERâ€™.
       N2          Shall be a non-negative scalar of type
!                  â€˜INTEGERâ€™.
!      X           Shall be a scalar or an array of type â€˜REALâ€™;
!                  for â€˜BESSEL_YN(N1, N2, X)â€™ it shall be scalar.
  
  _Return value_:
!      The return value is a scalar of type â€˜REALâ€™.  It has the same kind
       as X.
  
  _Notes_:
*************** _Example_:
*** 9480,9487 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'DBESYN(N,X)'  'INTEGER N'       'REAL(8)'      GNU extension
!                     'REAL(8) X'
  
  _Standard_:
       Fortran 2008 and later, negative N is allowed as GNU extension
--- 9480,9487 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜DBESYN(N,X)â€™  â€˜INTEGER Nâ€™       â€˜REAL(8)â€™      GNU extension
!                     â€˜REAL(8) Xâ€™
  
  _Standard_:
       Fortran 2008 and later, negative N is allowed as GNU extension
*************** _Standard_:
*** 9489,9499 ****
  
  File: gfortran.info,  Node: BGE,  Next: BGT,  Prev: BESSEL_YN,  Up: Intrinsic Procedures
  
! 8.46 'BGE' -- Bitwise greater than or equal to
  ==============================================
  
  _Synopsis_:
!      'RESULT = BGE(I, J)'
  
  _Description_:
       Determines whether an integral is a bitwise greater than or equal
--- 9489,9499 ----
  
  File: gfortran.info,  Node: BGE,  Next: BGT,  Prev: BESSEL_YN,  Up: Intrinsic Procedures
  
! 8.46 â€˜BGEâ€™ -- Bitwise greater than or equal to
  ==============================================
  
  _Synopsis_:
!      â€˜RESULT = BGE(I, J)â€™
  
  _Description_:
       Determines whether an integral is a bitwise greater than or equal
*************** _Class_:
*** 9503,9520 ****
       Elemental function
  
  _Arguments_:
!      I           Shall be of 'INTEGER' or 'UNSIGNED' type.
       J           Shall be of the same type and kind as I.
  
  _Return value_:
!      The return value is of type 'LOGICAL' and of the default kind.
  
  _Notes_:
!      For 'UNSIGNED' arguments, this function is identical to the '.GE.'
!      and '>=' operators.
  
  _Standard_:
!      Fortran 2008 and later, extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  _See also_:
--- 9503,9520 ----
       Elemental function
  
  _Arguments_:
!      I           Shall be of â€˜INTEGERâ€™ or â€˜UNSIGNEDâ€™ type.
       J           Shall be of the same type and kind as I.
  
  _Return value_:
!      The return value is of type â€˜LOGICALâ€™ and of the default kind.
  
  _Notes_:
!      For â€˜UNSIGNEDâ€™ arguments, this function is identical to the â€˜.GE.â€™
!      and â€˜>=â€™ operators.
  
  _Standard_:
!      Fortran 2008 and later, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  _See also_:
*************** _See also_:
*** 9525,9535 ****
  
  File: gfortran.info,  Node: BGT,  Next: BIT_SIZE,  Prev: BGE,  Up: Intrinsic Procedures
  
! 8.47 'BGT' -- Bitwise greater than
  ==================================
  
  _Synopsis_:
!      'RESULT = BGT(I, J)'
  
  _Description_:
       Determines whether an integral is a bitwise greater than another.
--- 9525,9535 ----
  
  File: gfortran.info,  Node: BGT,  Next: BIT_SIZE,  Prev: BGE,  Up: Intrinsic Procedures
  
! 8.47 â€˜BGTâ€™ -- Bitwise greater than
  ==================================
  
  _Synopsis_:
!      â€˜RESULT = BGT(I, J)â€™
  
  _Description_:
       Determines whether an integral is a bitwise greater than another.
*************** _Class_:
*** 9538,9555 ****
       Elemental function
  
  _Arguments_:
!      I           Shall be of 'INTEGER' or 'UNSIGNED' type.
       J           Shall be of the same type and kind as I.
  
  _Return value_:
!      The return value is of type 'LOGICAL' and of the default kind.
  
  _Notes_:
!      For 'UNSIGNED' arguments, this function is identical to the '.GT.'
!      and '>' operators.
  
  _Standard_:
!      Fortran 2008 and later, extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  _See also_:
--- 9538,9555 ----
       Elemental function
  
  _Arguments_:
!      I           Shall be of â€˜INTEGERâ€™ or â€˜UNSIGNEDâ€™ type.
       J           Shall be of the same type and kind as I.
  
  _Return value_:
!      The return value is of type â€˜LOGICALâ€™ and of the default kind.
  
  _Notes_:
!      For â€˜UNSIGNEDâ€™ arguments, this function is identical to the â€˜.GT.â€™
!      and â€˜>â€™ operators.
  
  _Standard_:
!      Fortran 2008 and later, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  _See also_:
*************** _See also_:
*** 9560,9584 ****
  
  File: gfortran.info,  Node: BIT_SIZE,  Next: BLE,  Prev: BGT,  Up: Intrinsic Procedures
  
! 8.48 'BIT_SIZE' -- Bit size inquiry function
  ============================================
  
  _Synopsis_:
!      'RESULT = BIT_SIZE(I)'
  
  _Description_:
!      'BIT_SIZE(I)' returns the number of bits (for integers, the
       precision plus the sign bit) represented by the type of I.  The
!      result of 'BIT_SIZE(I)' is independent of the actual value of I.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      I           The type shall be 'INTEGER' or 'UNSIGNED'.
  
  _Return value_:
!      The return value is of type 'INTEGER'
  
  _Example_:
            program test_bit_size
--- 9560,9584 ----
  
  File: gfortran.info,  Node: BIT_SIZE,  Next: BLE,  Prev: BGT,  Up: Intrinsic Procedures
  
! 8.48 â€˜BIT_SIZEâ€™ -- Bit size inquiry function
  ============================================
  
  _Synopsis_:
!      â€˜RESULT = BIT_SIZE(I)â€™
  
  _Description_:
!      â€˜BIT_SIZE(I)â€™ returns the number of bits (for integers, the
       precision plus the sign bit) represented by the type of I.  The
!      result of â€˜BIT_SIZE(I)â€™ is independent of the actual value of I.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      I           The type shall be â€˜INTEGERâ€™ or â€˜UNSIGNEDâ€™.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™
  
  _Example_:
            program test_bit_size
*************** _Example_:
*** 9589,9605 ****
            end program test_bit_size
  
  _Standard_:
!      Fortran 90 and later, extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  
  File: gfortran.info,  Node: BLE,  Next: BLT,  Prev: BIT_SIZE,  Up: Intrinsic Procedures
  
! 8.49 'BLE' -- Bitwise less than or equal to
  ===========================================
  
  _Synopsis_:
!      'RESULT = BLE(I, J)'
  
  _Description_:
       Determines whether an integral is a bitwise less than or equal to
--- 9589,9605 ----
            end program test_bit_size
  
  _Standard_:
!      Fortran 90 and later, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  
  File: gfortran.info,  Node: BLE,  Next: BLT,  Prev: BIT_SIZE,  Up: Intrinsic Procedures
  
! 8.49 â€˜BLEâ€™ -- Bitwise less than or equal to
  ===========================================
  
  _Synopsis_:
!      â€˜RESULT = BLE(I, J)â€™
  
  _Description_:
       Determines whether an integral is a bitwise less than or equal to
*************** _Class_:
*** 9609,9626 ****
       Elemental function
  
  _Arguments_:
!      I           Shall be of 'INTEGER' or 'UNSIGNED' type.
       J           Shall be of the same type and kind as I.
  
  _Return value_:
!      The return value is of type 'LOGICAL' and of the default kind.
  
  _Notes_:
!      For 'UNSIGNED' arguments, this function is identical to the '.LE.'
!      and '<=' operators.
  
  _Standard_:
!      Fortran 2008 and later, extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  _See also_:
--- 9609,9626 ----
       Elemental function
  
  _Arguments_:
!      I           Shall be of â€˜INTEGERâ€™ or â€˜UNSIGNEDâ€™ type.
       J           Shall be of the same type and kind as I.
  
  _Return value_:
!      The return value is of type â€˜LOGICALâ€™ and of the default kind.
  
  _Notes_:
!      For â€˜UNSIGNEDâ€™ arguments, this function is identical to the â€˜.LE.â€™
!      and â€˜<=â€™ operators.
  
  _Standard_:
!      Fortran 2008 and later, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  _See also_:
*************** _See also_:
*** 9631,9641 ****
  
  File: gfortran.info,  Node: BLT,  Next: BTEST,  Prev: BLE,  Up: Intrinsic Procedures
  
! 8.50 'BLT' -- Bitwise less than
  ===============================
  
  _Synopsis_:
!      'RESULT = BLT(I, J)'
  
  _Description_:
       Determines whether an integral is a bitwise less than another.
--- 9631,9641 ----
  
  File: gfortran.info,  Node: BLT,  Next: BTEST,  Prev: BLE,  Up: Intrinsic Procedures
  
! 8.50 â€˜BLTâ€™ -- Bitwise less than
  ===============================
  
  _Synopsis_:
!      â€˜RESULT = BLT(I, J)â€™
  
  _Description_:
       Determines whether an integral is a bitwise less than another.
*************** _Class_:
*** 9644,9661 ****
       Elemental function
  
  _Arguments_:
!      I           Shall be of 'INTEGER' or 'UNSIGNED' type.
       J           Shall be of the same type and kind as I.
  
  _Return value_:
!      The return value is of type 'LOGICAL' and of the default kind.
  
  _Notes_:
!      For 'UNSIGNED' arguments, this function is identical to the '.LT.'
!      and '<' operators.
  
  _Standard_:
!      Fortran 2008 and later, extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  _See also_:
--- 9644,9661 ----
       Elemental function
  
  _Arguments_:
!      I           Shall be of â€˜INTEGERâ€™ or â€˜UNSIGNEDâ€™ type.
       J           Shall be of the same type and kind as I.
  
  _Return value_:
!      The return value is of type â€˜LOGICALâ€™ and of the default kind.
  
  _Notes_:
!      For â€˜UNSIGNEDâ€™ arguments, this function is identical to the â€˜.LT.â€™
!      and â€˜<â€™ operators.
  
  _Standard_:
!      Fortran 2008 and later, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  _See also_:
*************** _See also_:
*** 9666,9690 ****
  
  File: gfortran.info,  Node: BTEST,  Next: C_ASSOCIATED,  Prev: BLT,  Up: Intrinsic Procedures
  
! 8.51 'BTEST' -- Bit test function
  =================================
  
  _Synopsis_:
!      'RESULT = BTEST(I, POS)'
  
  _Description_:
!      'BTEST(I,POS)' returns logical '.TRUE.' if the bit at POS in I is
       set.  The counting of the bits starts at 0.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be 'INTEGER' or 'UNSIGNED'.
!      POS         The type shall be 'INTEGER'.
  
  _Return value_:
!      The return value is of type 'LOGICAL'
  
  _Example_:
            program test_btest
--- 9666,9690 ----
  
  File: gfortran.info,  Node: BTEST,  Next: C_ASSOCIATED,  Prev: BLT,  Up: Intrinsic Procedures
  
! 8.51 â€˜BTESTâ€™ -- Bit test function
  =================================
  
  _Synopsis_:
!      â€˜RESULT = BTEST(I, POS)â€™
  
  _Description_:
!      â€˜BTEST(I,POS)â€™ returns logical â€˜.TRUE.â€™ if the bit at POS in I is
       set.  The counting of the bits starts at 0.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be â€˜INTEGERâ€™ or â€˜UNSIGNEDâ€™.
!      POS         The type shall be â€˜INTEGERâ€™.
  
  _Return value_:
!      The return value is of type â€˜LOGICALâ€™
  
  _Example_:
            program test_btest
*************** _Example_:
*** 9700,9737 ****
  _Specific names_:
       Name            Argument             Return type   Standard
       --------------------------------------------------------------------------
!      'BTEST(I,POS)'  'INTEGER I,POS'      'LOGICAL'     Fortran 95 and later
!      'BBTEST(I,POS)' 'INTEGER(1) I,POS'   'LOGICAL(1)'  GNU extension
!      'BITEST(I,POS)' 'INTEGER(2) I,POS'   'LOGICAL(2)'  GNU extension
!      'BJTEST(I,POS)' 'INTEGER(4) I,POS'   'LOGICAL(4)'  GNU extension
!      'BKTEST(I,POS)' 'INTEGER(8) I,POS'   'LOGICAL(8)'  GNU extension
  
  _Standard_:
       Fortran 90 and later, has overloads that are GNU extensions;
!      extension for 'UNSIGNED' (*note Unsigned integers::)
  
  
  File: gfortran.info,  Node: C_ASSOCIATED,  Next: C_F_POINTER,  Prev: BTEST,  Up: Intrinsic Procedures
  
! 8.52 'C_ASSOCIATED' -- Status of a C pointer
  ============================================
  
  _Synopsis_:
!      'RESULT = C_ASSOCIATED(CPTR1[, CPTR2])'
  
  _Description_:
!      'C_ASSOCIATED(CPTR1[, CPTR2])' determines the status of the C
       pointer CPTR1 or if CPTR1 is associated with the target CPTR2.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      CPTR1       Scalar of the type 'C_PTR' or 'C_FUNPTR'.
       CPTR2       (Optional) Scalar of the same type as CPTR1.
  
  _Return value_:
!      The return value is of type 'LOGICAL'; it is '.false.' if either
       CPTR1 is a C NULL pointer or if CPTR1 and CPTR2 point to different
       addresses.
  
--- 9700,9737 ----
  _Specific names_:
       Name            Argument             Return type   Standard
       --------------------------------------------------------------------------
!      â€˜BTEST(I,POS)â€™  â€˜INTEGER I,POSâ€™      â€˜LOGICALâ€™     Fortran 95 and later
!      â€˜BBTEST(I,POS)â€™ â€˜INTEGER(1) I,POSâ€™   â€˜LOGICAL(1)â€™  GNU extension
!      â€˜BITEST(I,POS)â€™ â€˜INTEGER(2) I,POSâ€™   â€˜LOGICAL(2)â€™  GNU extension
!      â€˜BJTEST(I,POS)â€™ â€˜INTEGER(4) I,POSâ€™   â€˜LOGICAL(4)â€™  GNU extension
!      â€˜BKTEST(I,POS)â€™ â€˜INTEGER(8) I,POSâ€™   â€˜LOGICAL(8)â€™  GNU extension
  
  _Standard_:
       Fortran 90 and later, has overloads that are GNU extensions;
!      extension for â€˜UNSIGNEDâ€™ (*note Unsigned integers::)
  
  
  File: gfortran.info,  Node: C_ASSOCIATED,  Next: C_F_POINTER,  Prev: BTEST,  Up: Intrinsic Procedures
  
! 8.52 â€˜C_ASSOCIATEDâ€™ -- Status of a C pointer
  ============================================
  
  _Synopsis_:
!      â€˜RESULT = C_ASSOCIATED(CPTR1[, CPTR2])â€™
  
  _Description_:
!      â€˜C_ASSOCIATED(CPTR1[, CPTR2])â€™ determines the status of the C
       pointer CPTR1 or if CPTR1 is associated with the target CPTR2.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      CPTR1       Scalar of the type â€˜C_PTRâ€™ or â€˜C_FUNPTRâ€™.
       CPTR2       (Optional) Scalar of the same type as CPTR1.
  
  _Return value_:
!      The return value is of type â€˜LOGICALâ€™; it is â€˜.false.â€™ if either
       CPTR1 is a C NULL pointer or if CPTR1 and CPTR2 point to different
       addresses.
  
*************** _See also_:
*** 9755,9779 ****
  
  File: gfortran.info,  Node: C_F_POINTER,  Next: C_F_PROCPOINTER,  Prev: C_ASSOCIATED,  Up: Intrinsic Procedures
  
! 8.53 'C_F_POINTER' -- Convert C into Fortran pointer
  ====================================================
  
  _Synopsis_:
!      'CALL C_F_POINTER(CPTR, FPTR[, SHAPE])'
  
  _Description_:
!      'C_F_POINTER(CPTR, FPTR[, SHAPE])' assigns the target of the C
       pointer CPTR to the Fortran pointer FPTR and specifies its shape.
  
  _Class_:
       Subroutine
  
  _Arguments_:
!      CPTR        scalar of the type 'C_PTR'.  It is 'INTENT(IN)'.
       FPTR        pointer interoperable with CPTR.  It is
!                  'INTENT(OUT)'.
!      SHAPE       (Optional) Rank-one array of type 'INTEGER' with
!                  'INTENT(IN)'.  It shall be present if and only
                   if FPTR is an array.  The size must be equal to
                   the rank of FPTR.
  
--- 9755,9779 ----
  
  File: gfortran.info,  Node: C_F_POINTER,  Next: C_F_PROCPOINTER,  Prev: C_ASSOCIATED,  Up: Intrinsic Procedures
  
! 8.53 â€˜C_F_POINTERâ€™ -- Convert C into Fortran pointer
  ====================================================
  
  _Synopsis_:
!      â€˜CALL C_F_POINTER(CPTR, FPTR[, SHAPE])â€™
  
  _Description_:
!      â€˜C_F_POINTER(CPTR, FPTR[, SHAPE])â€™ assigns the target of the C
       pointer CPTR to the Fortran pointer FPTR and specifies its shape.
  
  _Class_:
       Subroutine
  
  _Arguments_:
!      CPTR        scalar of the type â€˜C_PTRâ€™.  It is â€˜INTENT(IN)â€™.
       FPTR        pointer interoperable with CPTR.  It is
!                  â€˜INTENT(OUT)â€™.
!      SHAPE       (Optional) Rank-one array of type â€˜INTEGERâ€™ with
!                  â€˜INTENT(IN)â€™.  It shall be present if and only
                   if FPTR is an array.  The size must be equal to
                   the rank of FPTR.
  
*************** _See also_:
*** 9803,9826 ****
  
  File: gfortran.info,  Node: C_F_PROCPOINTER,  Next: C_FUNLOC,  Prev: C_F_POINTER,  Up: Intrinsic Procedures
  
! 8.54 'C_F_PROCPOINTER' -- Convert C into Fortran procedure pointer
  ==================================================================
  
  _Synopsis_:
!      'CALL C_F_PROCPOINTER(CPTR, FPTR)'
  
  _Description_:
!      'C_F_PROCPOINTER(CPTR, FPTR)' Assign the target of the C function
       pointer CPTR to the Fortran procedure pointer FPTR.
  
  _Class_:
       Subroutine
  
  _Arguments_:
!      CPTR        scalar of the type 'C_FUNPTR'.  It is
!                  'INTENT(IN)'.
       FPTR        procedure pointer interoperable with CPTR.  It
!                  is 'INTENT(OUT)'.
  
  _Example_:
            program main
--- 9803,9826 ----
  
  File: gfortran.info,  Node: C_F_PROCPOINTER,  Next: C_FUNLOC,  Prev: C_F_POINTER,  Up: Intrinsic Procedures
  
! 8.54 â€˜C_F_PROCPOINTERâ€™ -- Convert C into Fortran procedure pointer
  ==================================================================
  
  _Synopsis_:
!      â€˜CALL C_F_PROCPOINTER(CPTR, FPTR)â€™
  
  _Description_:
!      â€˜C_F_PROCPOINTER(CPTR, FPTR)â€™ Assign the target of the C function
       pointer CPTR to the Fortran procedure pointer FPTR.
  
  _Class_:
       Subroutine
  
  _Arguments_:
!      CPTR        scalar of the type â€˜C_FUNPTRâ€™.  It is
!                  â€˜INTENT(IN)â€™.
       FPTR        procedure pointer interoperable with CPTR.  It
!                  is â€˜INTENT(OUT)â€™.
  
  _Example_:
            program main
*************** _See also_:
*** 9855,9868 ****
  
  File: gfortran.info,  Node: C_FUNLOC,  Next: C_LOC,  Prev: C_F_PROCPOINTER,  Up: Intrinsic Procedures
  
! 8.55 'C_FUNLOC' -- Obtain the C address of a procedure
  ======================================================
  
  _Synopsis_:
!      'RESULT = C_FUNLOC(X)'
  
  _Description_:
!      'C_FUNLOC(X)' determines the C address of the argument.
  
  _Class_:
       Inquiry function
--- 9855,9868 ----
  
  File: gfortran.info,  Node: C_FUNLOC,  Next: C_LOC,  Prev: C_F_PROCPOINTER,  Up: Intrinsic Procedures
  
! 8.55 â€˜C_FUNLOCâ€™ -- Obtain the C address of a procedure
  ======================================================
  
  _Synopsis_:
!      â€˜RESULT = C_FUNLOC(X)â€™
  
  _Description_:
!      â€˜C_FUNLOC(X)â€™ determines the C address of the argument.
  
  _Class_:
       Inquiry function
*************** _Arguments_:
*** 9872,9878 ****
                   function.
  
  _Return value_:
!      The return value is of type 'C_FUNPTR' and contains the C address
       of the argument.
  
  _Example_:
--- 9872,9878 ----
                   function.
  
  _Return value_:
!      The return value is of type â€˜C_FUNPTRâ€™ and contains the C address
       of the argument.
  
  _Example_:
*************** _See also_:
*** 9910,9923 ****
  
  File: gfortran.info,  Node: C_LOC,  Next: C_SIZEOF,  Prev: C_FUNLOC,  Up: Intrinsic Procedures
  
! 8.56 'C_LOC' -- Obtain the C address of an object
  =================================================
  
  _Synopsis_:
!      'RESULT = C_LOC(X)'
  
  _Description_:
!      'C_LOC(X)' determines the C address of the argument.
  
  _Class_:
       Inquiry function
--- 9910,9923 ----
  
  File: gfortran.info,  Node: C_LOC,  Next: C_SIZEOF,  Prev: C_FUNLOC,  Up: Intrinsic Procedures
  
! 8.56 â€˜C_LOCâ€™ -- Obtain the C address of an object
  =================================================
  
  _Synopsis_:
!      â€˜RESULT = C_LOC(X)â€™
  
  _Description_:
!      â€˜C_LOC(X)â€™ determines the C address of the argument.
  
  _Class_:
       Inquiry function
*************** _Arguments_:
*** 9931,9937 ****
               
  
  _Return value_:
!      The return value is of type 'C_PTR' and contains the C address of
       the argument.
  
  _Example_:
--- 9931,9937 ----
               
  
  _Return value_:
!      The return value is of type â€˜C_PTRâ€™ and contains the C address of
       the argument.
  
  _Example_:
*************** _See also_:
*** 9956,9973 ****
  
  File: gfortran.info,  Node: C_SIZEOF,  Next: CEILING,  Prev: C_LOC,  Up: Intrinsic Procedures
  
! 8.57 'C_SIZEOF' -- Size in bytes of an expression
  =================================================
  
  _Synopsis_:
!      'N = C_SIZEOF(X)'
  
  _Description_:
!      'C_SIZEOF(X)' calculates the number of bytes of storage the
!      expression 'X' occupies.
  
  _Class_:
!      Inquiry function of the module 'ISO_C_BINDING'
  
  _Arguments_:
       X           The argument shall be an interoperable data
--- 9956,9973 ----
  
  File: gfortran.info,  Node: C_SIZEOF,  Next: CEILING,  Prev: C_LOC,  Up: Intrinsic Procedures
  
! 8.57 â€˜C_SIZEOFâ€™ -- Size in bytes of an expression
  =================================================
  
  _Synopsis_:
!      â€˜N = C_SIZEOF(X)â€™
  
  _Description_:
!      â€˜C_SIZEOF(X)â€™ calculates the number of bytes of storage the
!      expression â€˜Xâ€™ occupies.
  
  _Class_:
!      Inquiry function of the module â€˜ISO_C_BINDINGâ€™
  
  _Arguments_:
       X           The argument shall be an interoperable data
*************** _Arguments_:
*** 9975,9985 ****
  
  _Return value_:
       The return value is of type integer and of the system-dependent
!      kind 'C_SIZE_T' (from the 'ISO_C_BINDING' module).  Its value is
       the number of bytes occupied by the argument.  If the argument has
!      the 'POINTER' attribute, the number of bytes of the storage area
       pointed to is returned.  If the argument is of a derived type with
!      'POINTER' or 'ALLOCATABLE' components, the return value does not
       account for the sizes of the data pointed to by these components.
  
  _Example_:
--- 9975,9985 ----
  
  _Return value_:
       The return value is of type integer and of the system-dependent
!      kind â€˜C_SIZE_Tâ€™ (from the â€˜ISO_C_BINDINGâ€™ module).  Its value is
       the number of bytes occupied by the argument.  If the argument has
!      the â€˜POINTERâ€™ attribute, the number of bytes of the storage area
       pointed to is returned.  If the argument is of a derived type with
!      â€˜POINTERâ€™ or â€˜ALLOCATABLEâ€™ components, the return value does not
       account for the sizes of the data pointed to by these components.
  
  _Example_:
*************** _Example_:
*** 9988,9995 ****
               real(c_float) :: r, s(5)
               print *, (c_sizeof(s)/c_sizeof(r) == 5)
               end
!      The example prints 'T' unless you are using a platform where
!      default 'REAL' variables are unusually padded.
  
  _Standard_:
       Fortran 2008
--- 9988,9995 ----
               real(c_float) :: r, s(5)
               print *, (c_sizeof(s)/c_sizeof(r) == 5)
               end
!      The example prints â€˜Tâ€™ unless you are using a platform where
!      default â€˜REALâ€™ variables are unusually padded.
  
  _Standard_:
       Fortran 2008
*************** _See also_:
*** 10001,10027 ****
  
  File: gfortran.info,  Node: CEILING,  Next: CHAR,  Prev: C_SIZEOF,  Up: Intrinsic Procedures
  
! 8.58 'CEILING' -- Integer ceiling function
  ==========================================
  
  _Synopsis_:
!      'RESULT = CEILING(A [, KIND])'
  
  _Description_:
!      'CEILING(A)' returns the least integer greater than or equal to A.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           The type shall be 'REAL'.
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type 'INTEGER(KIND)' if KIND is present and
!      a default-kind 'INTEGER' otherwise.
  
  _Example_:
            program test_ceiling
--- 10001,10027 ----
  
  File: gfortran.info,  Node: CEILING,  Next: CHAR,  Prev: C_SIZEOF,  Up: Intrinsic Procedures
  
! 8.58 â€˜CEILINGâ€™ -- Integer ceiling function
  ==========================================
  
  _Synopsis_:
!      â€˜RESULT = CEILING(A [, KIND])â€™
  
  _Description_:
!      â€˜CEILING(A)â€™ returns the least integer greater than or equal to A.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           The type shall be â€˜REALâ€™.
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type â€˜INTEGER(KIND)â€™ if KIND is present and
!      a default-kind â€˜INTEGERâ€™ otherwise.
  
  _Example_:
            program test_ceiling
*************** _See also_:
*** 10041,10067 ****
  
  File: gfortran.info,  Node: CHAR,  Next: CHDIR,  Prev: CEILING,  Up: Intrinsic Procedures
  
! 8.59 'CHAR' -- Character conversion function
  ============================================
  
  _Synopsis_:
!      'RESULT = CHAR(I [, KIND])'
  
  _Description_:
!      'CHAR(I [, KIND])' returns the character represented by the integer
       I.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be 'INTEGER'.
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type 'CHARACTER(1)'
  
  _Example_:
            program test_char
--- 10041,10067 ----
  
  File: gfortran.info,  Node: CHAR,  Next: CHDIR,  Prev: CEILING,  Up: Intrinsic Procedures
  
! 8.59 â€˜CHARâ€™ -- Character conversion function
  ============================================
  
  _Synopsis_:
!      â€˜RESULT = CHAR(I [, KIND])â€™
  
  _Description_:
!      â€˜CHAR(I [, KIND])â€™ returns the character represented by the integer
       I.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be â€˜INTEGERâ€™.
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type â€˜CHARACTER(1)â€™
  
  _Example_:
            program test_char
*************** _Example_:
*** 10074,10080 ****
  _Specific names_:
       Name           Argument       Return type        Standard
       --------------------------------------------------------------------------
!      'CHAR(I)'      'INTEGER I'    'CHARACTER(LEN=1)' Fortran 77 and later
  
  _Notes_:
       See *note ICHAR:: for a discussion of converting between numerical
--- 10074,10080 ----
  _Specific names_:
       Name           Argument       Return type        Standard
       --------------------------------------------------------------------------
!      â€˜CHAR(I)â€™      â€˜INTEGER Iâ€™    â€˜CHARACTER(LEN=1)â€™ Fortran 77 and later
  
  _Notes_:
       See *note ICHAR:: for a discussion of converting between numerical
*************** _See also_:
*** 10091,10102 ****
  
  File: gfortran.info,  Node: CHDIR,  Next: CHMOD,  Prev: CHAR,  Up: Intrinsic Procedures
  
! 8.60 'CHDIR' -- Change working directory
  ========================================
  
  _Synopsis_:
!      'CALL CHDIR(NAME [, STATUS])'
!      'STATUS = CHDIR(NAME)'
  
  _Description_:
       Change current working directory to a specified path.
--- 10091,10102 ----
  
  File: gfortran.info,  Node: CHDIR,  Next: CHMOD,  Prev: CHAR,  Up: Intrinsic Procedures
  
! 8.60 â€˜CHDIRâ€™ -- Change working directory
  ========================================
  
  _Synopsis_:
!      â€˜CALL CHDIR(NAME [, STATUS])â€™
!      â€˜STATUS = CHDIR(NAME)â€™
  
  _Description_:
       Change current working directory to a specified path.
*************** _Class_:
*** 10108,10117 ****
       Subroutine, function
  
  _Arguments_:
!      NAME        The type shall be 'CHARACTER' of default kind
                   and shall specify a valid path within the file
                   system.
!      STATUS      (Optional) 'INTEGER' status flag of the default
                   kind.  Returns 0 on success, and a system
                   specific and nonzero error code otherwise.
  
--- 10108,10117 ----
       Subroutine, function
  
  _Arguments_:
!      NAME        The type shall be â€˜CHARACTERâ€™ of default kind
                   and shall specify a valid path within the file
                   system.
!      STATUS      (Optional) â€˜INTEGERâ€™ status flag of the default
                   kind.  Returns 0 on success, and a system
                   specific and nonzero error code otherwise.
  
*************** _See also_:
*** 10134,10148 ****
  
  File: gfortran.info,  Node: CHMOD,  Next: CMPLX,  Prev: CHDIR,  Up: Intrinsic Procedures
  
! 8.61 'CHMOD' -- Change access permissions of files
  ==================================================
  
  _Synopsis_:
!      'CALL CHMOD(NAME, MODE[, STATUS])'
!      'STATUS = CHMOD(NAME, MODE)'
  
  _Description_:
!      'CHMOD' changes the permissions of a file.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
--- 10134,10148 ----
  
  File: gfortran.info,  Node: CHMOD,  Next: CMPLX,  Prev: CHDIR,  Up: Intrinsic Procedures
  
! 8.61 â€˜CHMODâ€™ -- Change access permissions of files
  ==================================================
  
  _Synopsis_:
!      â€˜CALL CHMOD(NAME, MODE[, STATUS])â€™
!      â€˜STATUS = CHMOD(NAME, MODE)â€™
  
  _Description_:
!      â€˜CHMODâ€™ changes the permissions of a file.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
*************** _Class_:
*** 10152,10186 ****
  
  _Arguments_:
  
!      NAME        Scalar 'CHARACTER' of default kind with the file
                   name.  Trailing blanks are ignored unless the
!                  character 'achar(0)' is present, then all
!                  characters up to and excluding 'achar(0)' are
                   used as the file name.
                   
!      MODE        Scalar 'CHARACTER' of default kind giving the
                   file permission.  MODE uses the same syntax as
!                  the 'chmod' utility as defined by the POSIX
                   standard.  The argument shall either be a string
                   of a nonnegative octal number or a symbolic
                   mode.
                   
!      STATUS      (optional) scalar 'INTEGER', which is '0' on
                   success and nonzero otherwise.
  
  _Return value_:
!      In either syntax, STATUS is set to '0' on success and nonzero
       otherwise.
  
  _Example_:
!      'CHMOD' as subroutine
            program chmod_test
              implicit none
              integer :: status
              call chmod('test.dat','u+x',status)
              print *, 'Status: ', status
            end program chmod_test
!      'CHMOD' as function:
            program chmod_test
              implicit none
              integer :: status
--- 10152,10186 ----
  
  _Arguments_:
  
!      NAME        Scalar â€˜CHARACTERâ€™ of default kind with the file
                   name.  Trailing blanks are ignored unless the
!                  character â€˜achar(0)â€™ is present, then all
!                  characters up to and excluding â€˜achar(0)â€™ are
                   used as the file name.
                   
!      MODE        Scalar â€˜CHARACTERâ€™ of default kind giving the
                   file permission.  MODE uses the same syntax as
!                  the â€˜chmodâ€™ utility as defined by the POSIX
                   standard.  The argument shall either be a string
                   of a nonnegative octal number or a symbolic
                   mode.
                   
!      STATUS      (optional) scalar â€˜INTEGERâ€™, which is â€˜0â€™ on
                   success and nonzero otherwise.
  
  _Return value_:
!      In either syntax, STATUS is set to â€˜0â€™ on success and nonzero
       otherwise.
  
  _Example_:
!      â€˜CHMODâ€™ as subroutine
            program chmod_test
              implicit none
              integer :: status
              call chmod('test.dat','u+x',status)
              print *, 'Status: ', status
            end program chmod_test
!      â€˜CHMODâ€™ as function:
            program chmod_test
              implicit none
              integer :: status
*************** _Standard_:
*** 10194,10207 ****
  
  File: gfortran.info,  Node: CMPLX,  Next: CO_BROADCAST,  Prev: CHMOD,  Up: Intrinsic Procedures
  
! 8.62 'CMPLX' -- Complex conversion function
  ===========================================
  
  _Synopsis_:
!      'RESULT = CMPLX(X [, Y [, KIND]])'
  
  _Description_:
!      'CMPLX(X [, Y [, KIND]])' returns a complex number where X is
       converted to the real component.  If Y is present it is converted
       to the imaginary component.  If Y is not present then the imaginary
       component is set to 0.0.  If X is complex then Y must not be
--- 10194,10207 ----
  
  File: gfortran.info,  Node: CMPLX,  Next: CO_BROADCAST,  Prev: CHMOD,  Up: Intrinsic Procedures
  
! 8.62 â€˜CMPLXâ€™ -- Complex conversion function
  ===========================================
  
  _Synopsis_:
!      â€˜RESULT = CMPLX(X [, Y [, KIND]])â€™
  
  _Description_:
!      â€˜CMPLX(X [, Y [, KIND]])â€™ returns a complex number where X is
       converted to the real component.  If Y is present it is converted
       to the imaginary component.  If Y is not present then the imaginary
       component is set to 0.0.  If X is complex then Y must not be
*************** _Class_:
*** 10211,10228 ****
       Elemental function
  
  _Arguments_:
!      X           The type may be 'INTEGER', 'REAL', 'COMPLEX' or
!                  'UNSIGNED'.
!      Y           (Optional; only allowed if X is not 'COMPLEX'.)
!                  May be 'INTEGER', 'REAL' or 'UNSIGNED'.
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of 'COMPLEX' type, with a kind equal to KIND if
       it is specified.  If KIND is not specified, the result is of the
!      default 'COMPLEX' kind, regardless of the kinds of X and Y.
  
  _Example_:
            program test_cmplx
--- 10211,10228 ----
       Elemental function
  
  _Arguments_:
!      X           The type may be â€˜INTEGERâ€™, â€˜REALâ€™, â€˜COMPLEXâ€™ or
!                  â€˜UNSIGNEDâ€™.
!      Y           (Optional; only allowed if X is not â€˜COMPLEXâ€™.)
!                  May be â€˜INTEGERâ€™, â€˜REALâ€™ or â€˜UNSIGNEDâ€™.
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of â€˜COMPLEXâ€™ type, with a kind equal to KIND if
       it is specified.  If KIND is not specified, the result is of the
!      default â€˜COMPLEXâ€™ kind, regardless of the kinds of X and Y.
  
  _Example_:
            program test_cmplx
*************** _Example_:
*** 10234,10240 ****
            end program test_cmplx
  
  _Standard_:
!      Fortran 77 and later, extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  _See also_:
--- 10234,10240 ----
            end program test_cmplx
  
  _Standard_:
!      Fortran 77 and later, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  _See also_:
*************** _See also_:
*** 10243,10257 ****
  
  File: gfortran.info,  Node: CO_BROADCAST,  Next: CO_MAX,  Prev: CMPLX,  Up: Intrinsic Procedures
  
! 8.63 'CO_BROADCAST' -- Copy a value to all images the current set of images
  ===========================================================================
  
  _Synopsis_:
!      'CALL CO_BROADCAST(A, SOURCE_IMAGE [, STAT, ERRMSG])'
  
  _Description_:
!      'CO_BROADCAST' copies the value of argument A on the image with
!      image index 'SOURCE_IMAGE' to all images in the current team.  A
       becomes defined as if by intrinsic assignment.  If the execution
       was successful and STAT is present, it is assigned the value zero.
       If the execution failed, STAT gets assigned a nonzero value and, if
--- 10243,10257 ----
  
  File: gfortran.info,  Node: CO_BROADCAST,  Next: CO_MAX,  Prev: CMPLX,  Up: Intrinsic Procedures
  
! 8.63 â€˜CO_BROADCASTâ€™ -- Copy a value to all images the current set of images
  ===========================================================================
  
  _Synopsis_:
!      â€˜CALL CO_BROADCAST(A, SOURCE_IMAGE [, STAT, ERRMSG])â€™
  
  _Description_:
!      â€˜CO_BROADCASTâ€™ copies the value of argument A on the image with
!      image index â€˜SOURCE_IMAGEâ€™ to all images in the current team.  A
       becomes defined as if by intrinsic assignment.  If the execution
       was successful and STAT is present, it is assigned the value zero.
       If the execution failed, STAT gets assigned a nonzero value and, if
*************** _See also_:
*** 10295,10308 ****
  
  File: gfortran.info,  Node: CO_MAX,  Next: CO_MIN,  Prev: CO_BROADCAST,  Up: Intrinsic Procedures
  
! 8.64 'CO_MAX' -- Maximal value on the current set of images
  ===========================================================
  
  _Synopsis_:
!      'CALL CO_MAX(A [, RESULT_IMAGE, STAT, ERRMSG])'
  
  _Description_:
!      'CO_MAX' determines element-wise the maximal value of A on all
       images of the current team.  If RESULT_IMAGE is present, the
       maximum values are returned in A on the specified image only and
       the value of A on the other images become undefined.  If
--- 10295,10308 ----
  
  File: gfortran.info,  Node: CO_MAX,  Next: CO_MIN,  Prev: CO_BROADCAST,  Up: Intrinsic Procedures
  
! 8.64 â€˜CO_MAXâ€™ -- Maximal value on the current set of images
  ===========================================================
  
  _Synopsis_:
!      â€˜CALL CO_MAX(A [, RESULT_IMAGE, STAT, ERRMSG])â€™
  
  _Description_:
!      â€˜CO_MAXâ€™ determines element-wise the maximal value of A on all
       images of the current team.  If RESULT_IMAGE is present, the
       maximum values are returned in A on the specified image only and
       the value of A on the other images become undefined.  If
*************** _See also_:
*** 10348,10361 ****
  
  File: gfortran.info,  Node: CO_MIN,  Next: CO_REDUCE,  Prev: CO_MAX,  Up: Intrinsic Procedures
  
! 8.65 'CO_MIN' -- Minimal value on the current set of images
  ===========================================================
  
  _Synopsis_:
!      'CALL CO_MIN(A [, RESULT_IMAGE, STAT, ERRMSG])'
  
  _Description_:
!      'CO_MIN' determines element-wise the minimal value of A on all
       images of the current team.  If RESULT_IMAGE is present, the
       minimal values are returned in A on the specified image only and
       the value of A on the other images become undefined.  If
--- 10348,10361 ----
  
  File: gfortran.info,  Node: CO_MIN,  Next: CO_REDUCE,  Prev: CO_MAX,  Up: Intrinsic Procedures
  
! 8.65 â€˜CO_MINâ€™ -- Minimal value on the current set of images
  ===========================================================
  
  _Synopsis_:
!      â€˜CALL CO_MIN(A [, RESULT_IMAGE, STAT, ERRMSG])â€™
  
  _Description_:
!      â€˜CO_MINâ€™ determines element-wise the minimal value of A on all
       images of the current team.  If RESULT_IMAGE is present, the
       minimal values are returned in A on the specified image only and
       the value of A on the other images become undefined.  If
*************** _See also_:
*** 10401,10414 ****
  
  File: gfortran.info,  Node: CO_REDUCE,  Next: CO_SUM,  Prev: CO_MIN,  Up: Intrinsic Procedures
  
! 8.66 'CO_REDUCE' -- Reduction of values on the current set of images
  ====================================================================
  
  _Synopsis_:
!      'CALL CO_REDUCE(A, OPERATION, [, RESULT_IMAGE, STAT, ERRMSG])'
  
  _Description_:
!      'CO_REDUCE' determines element-wise the reduction of the value of A
       on all images of the current team.  The pure function passed as
       OPERATION is used to pairwise reduce the values of A by passing
       either the value of A of different images or the result values of
--- 10401,10414 ----
  
  File: gfortran.info,  Node: CO_REDUCE,  Next: CO_SUM,  Prev: CO_MIN,  Up: Intrinsic Procedures
  
! 8.66 â€˜CO_REDUCEâ€™ -- Reduction of values on the current set of images
  ====================================================================
  
  _Synopsis_:
!      â€˜CALL CO_REDUCE(A, OPERATION, [, RESULT_IMAGE, STAT, ERRMSG])â€™
  
  _Description_:
!      â€˜CO_REDUCEâ€™ determines element-wise the reduction of the value of A
       on all images of the current team.  The pure function passed as
       OPERATION is used to pairwise reduce the values of A by passing
       either the value of A of different images or the result values of
*************** _Class_:
*** 10426,10432 ****
       Collective subroutine
  
  _Arguments_:
!      A              is an 'INTENT(INOUT)' argument and shall be
                      nonpolymorphic.  If it is allocatable, it
                      shall be allocated; if it is a pointer, it
                      shall be associated.  A shall have the same
--- 10426,10432 ----
       Collective subroutine
  
  _Arguments_:
!      A              is an â€˜INTENT(INOUT)â€™ argument and shall be
                      nonpolymorphic.  If it is allocatable, it
                      shall be allocated; if it is a pointer, it
                      shall be associated.  A shall have the same
*************** _See also_:
*** 10484,10497 ****
  
  File: gfortran.info,  Node: CO_SUM,  Next: COMMAND_ARGUMENT_COUNT,  Prev: CO_REDUCE,  Up: Intrinsic Procedures
  
! 8.67 'CO_SUM' -- Sum of values on the current set of images
  ===========================================================
  
  _Synopsis_:
!      'CALL CO_SUM(A [, RESULT_IMAGE, STAT, ERRMSG])'
  
  _Description_:
!      'CO_SUM' sums up the values of each element of A on all images of
       the current team.  If RESULT_IMAGE is present, the summed-up values
       are returned in A on the specified image only and the value of A on
       the other images become undefined.  If RESULT_IMAGE is not present,
--- 10484,10497 ----
  
  File: gfortran.info,  Node: CO_SUM,  Next: COMMAND_ARGUMENT_COUNT,  Prev: CO_REDUCE,  Up: Intrinsic Procedures
  
! 8.67 â€˜CO_SUMâ€™ -- Sum of values on the current set of images
  ===========================================================
  
  _Synopsis_:
!      â€˜CALL CO_SUM(A [, RESULT_IMAGE, STAT, ERRMSG])â€™
  
  _Description_:
!      â€˜CO_SUMâ€™ sums up the values of each element of A on all images of
       the current team.  If RESULT_IMAGE is present, the summed-up values
       are returned in A on the specified image only and the value of A on
       the other images become undefined.  If RESULT_IMAGE is not present,
*************** _See also_:
*** 10538,10551 ****
  
  File: gfortran.info,  Node: COMMAND_ARGUMENT_COUNT,  Next: COMPILER_OPTIONS,  Prev: CO_SUM,  Up: Intrinsic Procedures
  
! 8.68 'COMMAND_ARGUMENT_COUNT' -- Get number of command line arguments
  =====================================================================
  
  _Synopsis_:
!      'RESULT = COMMAND_ARGUMENT_COUNT()'
  
  _Description_:
!      'COMMAND_ARGUMENT_COUNT' returns the number of arguments passed on
       the command line when the containing program was invoked.
  
  _Class_:
--- 10538,10551 ----
  
  File: gfortran.info,  Node: COMMAND_ARGUMENT_COUNT,  Next: COMPILER_OPTIONS,  Prev: CO_SUM,  Up: Intrinsic Procedures
  
! 8.68 â€˜COMMAND_ARGUMENT_COUNTâ€™ -- Get number of command line arguments
  =====================================================================
  
  _Synopsis_:
!      â€˜RESULT = COMMAND_ARGUMENT_COUNT()â€™
  
  _Description_:
!      â€˜COMMAND_ARGUMENT_COUNTâ€™ returns the number of arguments passed on
       the command line when the containing program was invoked.
  
  _Class_:
*************** _Arguments_:
*** 10555,10561 ****
       None
  
  _Return value_:
!      The return value is an 'INTEGER' of default kind.
  
  _Example_:
            program test_command_argument_count
--- 10555,10561 ----
       None
  
  _Return value_:
!      The return value is an â€˜INTEGERâ€™ of default kind.
  
  _Example_:
            program test_command_argument_count
*************** _See also_:
*** 10574,10591 ****
  
  File: gfortran.info,  Node: COMPILER_OPTIONS,  Next: COMPILER_VERSION,  Prev: COMMAND_ARGUMENT_COUNT,  Up: Intrinsic Procedures
  
! 8.69 'COMPILER_OPTIONS' -- Options passed to the compiler
  =========================================================
  
  _Synopsis_:
!      'STR = COMPILER_OPTIONS()'
  
  _Description_:
!      'COMPILER_OPTIONS' returns a string with the options used for
       compiling.
  
  _Class_:
!      Inquiry function of the module 'ISO_FORTRAN_ENV'
  
  _Arguments_:
       None
--- 10574,10591 ----
  
  File: gfortran.info,  Node: COMPILER_OPTIONS,  Next: COMPILER_VERSION,  Prev: COMMAND_ARGUMENT_COUNT,  Up: Intrinsic Procedures
  
! 8.69 â€˜COMPILER_OPTIONSâ€™ -- Options passed to the compiler
  =========================================================
  
  _Synopsis_:
!      â€˜STR = COMPILER_OPTIONS()â€™
  
  _Description_:
!      â€˜COMPILER_OPTIONSâ€™ returns a string with the options used for
       compiling.
  
  _Class_:
!      Inquiry function of the module â€˜ISO_FORTRAN_ENVâ€™
  
  _Arguments_:
       None
*************** _Arguments_:
*** 10593,10599 ****
  _Return value_:
       The return value is a default-kind string with system-dependent
       length.  It contains the compiler flags used to compile the file
!      that called the 'COMPILER_OPTIONS' intrinsic.
  
  _Example_:
               use iso_fortran_env
--- 10593,10599 ----
  _Return value_:
       The return value is a default-kind string with system-dependent
       length.  It contains the compiler flags used to compile the file
!      that called the â€˜COMPILER_OPTIONSâ€™ intrinsic.
  
  _Example_:
               use iso_fortran_env
*************** _See also_:
*** 10612,10629 ****
  
  File: gfortran.info,  Node: COMPILER_VERSION,  Next: COMPLEX,  Prev: COMPILER_OPTIONS,  Up: Intrinsic Procedures
  
! 8.70 'COMPILER_VERSION' -- Compiler version string
  ==================================================
  
  _Synopsis_:
!      'STR = COMPILER_VERSION()'
  
  _Description_:
!      'COMPILER_VERSION' returns a string with the name and the version
       of the compiler.
  
  _Class_:
!      Inquiry function of the module 'ISO_FORTRAN_ENV'
  
  _Arguments_:
       None
--- 10612,10629 ----
  
  File: gfortran.info,  Node: COMPILER_VERSION,  Next: COMPLEX,  Prev: COMPILER_OPTIONS,  Up: Intrinsic Procedures
  
! 8.70 â€˜COMPILER_VERSIONâ€™ -- Compiler version string
  ==================================================
  
  _Synopsis_:
!      â€˜STR = COMPILER_VERSION()â€™
  
  _Description_:
!      â€˜COMPILER_VERSIONâ€™ returns a string with the name and the version
       of the compiler.
  
  _Class_:
!      Inquiry function of the module â€˜ISO_FORTRAN_ENVâ€™
  
  _Arguments_:
       None
*************** _See also_:
*** 10650,10679 ****
  
  File: gfortran.info,  Node: COMPLEX,  Next: CONJG,  Prev: COMPILER_VERSION,  Up: Intrinsic Procedures
  
! 8.71 'COMPLEX' -- Complex conversion function
  =============================================
  
  _Synopsis_:
!      'RESULT = COMPLEX(X, Y)'
  
  _Description_:
!      'COMPLEX(X, Y)' returns a complex number where X is converted to
       the real component and Y is converted to the imaginary component.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type may be 'INTEGER' or 'REAL'.
!      Y           The type may be 'INTEGER' or 'REAL'.
  
  _Return value_:
!      If X and Y are both of 'INTEGER' type, then the return value is of
!      default 'COMPLEX' type.
  
!      If X and Y are of 'REAL' type, or one is of 'REAL' type and one is
!      of 'INTEGER' type, then the return value is of 'COMPLEX' type with
!      a kind equal to that of the 'REAL' argument with the highest
       precision.
  
  _Example_:
--- 10650,10679 ----
  
  File: gfortran.info,  Node: COMPLEX,  Next: CONJG,  Prev: COMPILER_VERSION,  Up: Intrinsic Procedures
  
! 8.71 â€˜COMPLEXâ€™ -- Complex conversion function
  =============================================
  
  _Synopsis_:
!      â€˜RESULT = COMPLEX(X, Y)â€™
  
  _Description_:
!      â€˜COMPLEX(X, Y)â€™ returns a complex number where X is converted to
       the real component and Y is converted to the imaginary component.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type may be â€˜INTEGERâ€™ or â€˜REALâ€™.
!      Y           The type may be â€˜INTEGERâ€™ or â€˜REALâ€™.
  
  _Return value_:
!      If X and Y are both of â€˜INTEGERâ€™ type, then the return value is of
!      default â€˜COMPLEXâ€™ type.
  
!      If X and Y are of â€˜REALâ€™ type, or one is of â€˜REALâ€™ type and one is
!      of â€˜INTEGERâ€™ type, then the return value is of â€˜COMPLEXâ€™ type with
!      a kind equal to that of the â€˜REALâ€™ argument with the highest
       precision.
  
  _Example_:
*************** _See also_:
*** 10692,10715 ****
  
  File: gfortran.info,  Node: CONJG,  Next: COS,  Prev: COMPLEX,  Up: Intrinsic Procedures
  
! 8.72 'CONJG' -- Complex conjugate function
  ==========================================
  
  _Synopsis_:
!      'Z = CONJG(Z)'
  
  _Description_:
!      'CONJG(Z)' returns the conjugate of Z.  If Z is '(x, y)' then the
!      result is '(x, -y)'
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      Z           The type shall be 'COMPLEX'.
  
  _Return value_:
!      The return value is of type 'COMPLEX'.
  
  _Example_:
            program test_conjg
--- 10692,10715 ----
  
  File: gfortran.info,  Node: CONJG,  Next: COS,  Prev: COMPLEX,  Up: Intrinsic Procedures
  
! 8.72 â€˜CONJGâ€™ -- Complex conjugate function
  ==========================================
  
  _Synopsis_:
!      â€˜Z = CONJG(Z)â€™
  
  _Description_:
!      â€˜CONJG(Z)â€™ returns the conjugate of Z.  If Z is â€˜(x, y)â€™ then the
!      result is â€˜(x, -y)â€™
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      Z           The type shall be â€˜COMPLEXâ€™.
  
  _Return value_:
!      The return value is of type â€˜COMPLEXâ€™.
  
  _Example_:
            program test_conjg
*************** _Example_:
*** 10724,10730 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'DCONJG(Z)'    'COMPLEX(8) Z'    'COMPLEX(8)'   GNU extension
  
  _Standard_:
       Fortran 77 and later, has an overload that is a GNU extension
--- 10724,10730 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜DCONJG(Z)â€™    â€˜COMPLEX(8) Zâ€™    â€˜COMPLEX(8)â€™   GNU extension
  
  _Standard_:
       Fortran 77 and later, has an overload that is a GNU extension
*************** _Standard_:
*** 10732,10755 ****
  
  File: gfortran.info,  Node: COS,  Next: COSD,  Prev: CONJG,  Up: Intrinsic Procedures
  
! 8.73 'COS' -- Cosine function
  =============================
  
  _Synopsis_:
!      'RESULT = COS(X)'
  
  _Description_:
!      'COS(X)' computes the cosine of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL' or 'COMPLEX'.
  
  _Return value_:
       The return value is of the same type and kind as X.  The real part
!      of the result is in radians.  If X is of the type 'REAL', the
       return value lies in the range -1 \leq \cos (x) \leq 1.
  
  _Example_:
--- 10732,10755 ----
  
  File: gfortran.info,  Node: COS,  Next: COSD,  Prev: CONJG,  Up: Intrinsic Procedures
  
! 8.73 â€˜COSâ€™ -- Cosine function
  =============================
  
  _Synopsis_:
!      â€˜RESULT = COS(X)â€™
  
  _Description_:
!      â€˜COS(X)â€™ computes the cosine of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™ or â€˜COMPLEXâ€™.
  
  _Return value_:
       The return value is of the same type and kind as X.  The real part
!      of the result is in radians.  If X is of the type â€˜REALâ€™, the
       return value lies in the range -1 \leq \cos (x) \leq 1.
  
  _Example_:
*************** _Example_:
*** 10761,10771 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'COS(X)'       'REAL(4) X'       'REAL(4)'      Fortran 77 and later
!      'DCOS(X)'      'REAL(8) X'       'REAL(8)'      Fortran 77 and later
!      'CCOS(X)'      'COMPLEX(4) X'    'COMPLEX(4)'   Fortran 77 and later
!      'ZCOS(X)'      'COMPLEX(8) X'    'COMPLEX(8)'   GNU extension
!      'CDCOS(X)'     'COMPLEX(8) X'    'COMPLEX(8)'   GNU extension
  
  _Standard_:
       Fortran 77 and later, has overloads that are GNU extensions
--- 10761,10771 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜COS(X)â€™       â€˜REAL(4) Xâ€™       â€˜REAL(4)â€™      Fortran 77 and later
!      â€˜DCOS(X)â€™      â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      Fortran 77 and later
!      â€˜CCOS(X)â€™      â€˜COMPLEX(4) Xâ€™    â€˜COMPLEX(4)â€™   Fortran 77 and later
!      â€˜ZCOS(X)â€™      â€˜COMPLEX(8) Xâ€™    â€˜COMPLEX(8)â€™   GNU extension
!      â€˜CDCOS(X)â€™     â€˜COMPLEX(8) Xâ€™    â€˜COMPLEX(8)â€™   GNU extension
  
  _Standard_:
       Fortran 77 and later, has overloads that are GNU extensions
*************** _See also_:
*** 10779,10798 ****
  
  File: gfortran.info,  Node: COSD,  Next: COSH,  Prev: COS,  Up: Intrinsic Procedures
  
! 8.74 'COSD' -- Cosine function, degrees
  =======================================
  
  _Synopsis_:
!      'RESULT = COSD(X)'
  
  _Description_:
!      'COSD(X)' computes the cosine of X in degrees.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL'.
  
  _Return value_:
       The return value is of the same type and kind as X and lies in the
--- 10779,10798 ----
  
  File: gfortran.info,  Node: COSD,  Next: COSH,  Prev: COS,  Up: Intrinsic Procedures
  
! 8.74 â€˜COSDâ€™ -- Cosine function, degrees
  =======================================
  
  _Synopsis_:
!      â€˜RESULT = COSD(X)â€™
  
  _Description_:
!      â€˜COSD(X)â€™ computes the cosine of X in degrees.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™.
  
  _Return value_:
       The return value is of the same type and kind as X and lies in the
*************** _Example_:
*** 10807,10817 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'COSD(X)'      'REAL(4) X'       'REAL(4)'      Fortran 2023
!      'DCOSD(X)'     'REAL(8) X'       'REAL(8)'      GNU extension
!      'CCOSD(X)'     'COMPLEX(4) X'    'COMPLEX(4)'   GNU extension
!      'ZCOSD(X)'     'COMPLEX(8) X'    'COMPLEX(8)'   GNU extension
!      'CDCOSD(X)'    'COMPLEX(8) X'    'COMPLEX(8)'   GNU extension
  
  _Standard_:
       Fortran 2023
--- 10807,10817 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜COSD(X)â€™      â€˜REAL(4) Xâ€™       â€˜REAL(4)â€™      Fortran 2023
!      â€˜DCOSD(X)â€™     â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      GNU extension
!      â€˜CCOSD(X)â€™     â€˜COMPLEX(4) Xâ€™    â€˜COMPLEX(4)â€™   GNU extension
!      â€˜ZCOSD(X)â€™     â€˜COMPLEX(8) Xâ€™    â€˜COMPLEX(8)â€™   GNU extension
!      â€˜CDCOSD(X)â€™    â€˜COMPLEX(8) Xâ€™    â€˜COMPLEX(8)â€™   GNU extension
  
  _Standard_:
       Fortran 2023
*************** _See also_:
*** 10825,10848 ****
  
  File: gfortran.info,  Node: COSH,  Next: COTAN,  Prev: COSD,  Up: Intrinsic Procedures
  
! 8.75 'COSH' -- Hyperbolic cosine function
  =========================================
  
  _Synopsis_:
!      'X = COSH(X)'
  
  _Description_:
!      'COSH(X)' computes the hyperbolic cosine of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL' or 'COMPLEX'.
  
  _Return value_:
       The return value has same type and kind as X.  If X is complex, the
!      imaginary part of the result is in radians.  If X is 'REAL', the
       return value has a lower bound of one, \cosh (x) \geq 1.
  
  _Example_:
--- 10825,10848 ----
  
  File: gfortran.info,  Node: COSH,  Next: COTAN,  Prev: COSD,  Up: Intrinsic Procedures
  
! 8.75 â€˜COSHâ€™ -- Hyperbolic cosine function
  =========================================
  
  _Synopsis_:
!      â€˜X = COSH(X)â€™
  
  _Description_:
!      â€˜COSH(X)â€™ computes the hyperbolic cosine of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™ or â€˜COMPLEXâ€™.
  
  _Return value_:
       The return value has same type and kind as X.  If X is complex, the
!      imaginary part of the result is in radians.  If X is â€˜REALâ€™, the
       return value has a lower bound of one, \cosh (x) \geq 1.
  
  _Example_:
*************** _Example_:
*** 10854,10861 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'COSH(X)'      'REAL(4) X'       'REAL(4)'      Fortran 77 and later
!      'DCOSH(X)'     'REAL(8) X'       'REAL(8)'      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later, for a complex argument Fortran 2008 or later
--- 10854,10861 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜COSH(X)â€™      â€˜REAL(4) Xâ€™       â€˜REAL(4)â€™      Fortran 77 and later
!      â€˜DCOSH(X)â€™     â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later, for a complex argument Fortran 2008 or later
*************** _See also_:
*** 10867,10881 ****
  
  File: gfortran.info,  Node: COTAN,  Next: COTAND,  Prev: COSH,  Up: Intrinsic Procedures
  
! 8.76 'COTAN' -- Cotangent function
  ==================================
  
  _Synopsis_:
!      'RESULT = COTAN(X)'
  
  _Description_:
!      'COTAN(X)' computes the cotangent of X.  Equivalent to 'COS(x)'
!      divided by 'SIN(x)', or '1 / TAN(x)'.
  
       This function is for compatibility only and should be avoided in
       favor of standard constructs wherever possible.
--- 10867,10881 ----
  
  File: gfortran.info,  Node: COTAN,  Next: COTAND,  Prev: COSH,  Up: Intrinsic Procedures
  
! 8.76 â€˜COTANâ€™ -- Cotangent function
  ==================================
  
  _Synopsis_:
!      â€˜RESULT = COTAN(X)â€™
  
  _Description_:
!      â€˜COTAN(X)â€™ computes the cotangent of X.  Equivalent to â€˜COS(x)â€™
!      divided by â€˜SIN(x)â€™, or â€˜1 / TAN(x)â€™.
  
       This function is for compatibility only and should be avoided in
       favor of standard constructs wherever possible.
*************** _Class_:
*** 10884,10890 ****
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL' or 'COMPLEX'.
  
  _Return value_:
       The return value has same type and kind as X, and its value is in
--- 10884,10890 ----
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™ or â€˜COMPLEXâ€™.
  
  _Return value_:
       The return value has same type and kind as X, and its value is in
*************** _Example_:
*** 10899,10909 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'COTAN(X)'     'REAL(4) X'       'REAL(4)'      GNU extension
!      'DCOTAN(X)'    'REAL(8) X'       'REAL(8)'      GNU extension
  
  _Standard_:
!      GNU extension, enabled with '-fdec-math'.
  
  _See also_:
       Converse function:
--- 10899,10909 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜COTAN(X)â€™     â€˜REAL(4) Xâ€™       â€˜REAL(4)â€™      GNU extension
!      â€˜DCOTAN(X)â€™    â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      GNU extension
  
  _Standard_:
!      GNU extension, enabled with â€˜-fdec-mathâ€™.
  
  _See also_:
       Converse function:
*************** _See also_:
*** 10914,10934 ****
  
  File: gfortran.info,  Node: COTAND,  Next: COUNT,  Prev: COTAN,  Up: Intrinsic Procedures
  
! 8.77 'COTAND' -- Cotangent function, degrees
  ============================================
  
  _Synopsis_:
!      'RESULT = COTAND(X)'
  
  _Description_:
!      'COTAND(X)' computes the cotangent of X in degrees.  Equivalent to
!      'COSD(x)' divided by 'SIND(x)', or '1 / TAND(x)'.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL'.
  
  _Return value_:
       The return value has same type and kind as X, and its value is in
--- 10914,10934 ----
  
  File: gfortran.info,  Node: COTAND,  Next: COUNT,  Prev: COTAN,  Up: Intrinsic Procedures
  
! 8.77 â€˜COTANDâ€™ -- Cotangent function, degrees
  ============================================
  
  _Synopsis_:
!      â€˜RESULT = COTAND(X)â€™
  
  _Description_:
!      â€˜COTAND(X)â€™ computes the cotangent of X in degrees.  Equivalent to
!      â€˜COSD(x)â€™ divided by â€˜SIND(x)â€™, or â€˜1 / TAND(x)â€™.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™.
  
  _Return value_:
       The return value has same type and kind as X, and its value is in
*************** _Example_:
*** 10943,10950 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'COTAND(X)'    'REAL(4) X'       'REAL(4)'      GNU extension
!      'DCOTAND(X)'   'REAL(8) X'       'REAL(8)'      GNU extension
  
  _Standard_:
       GNU extension.
--- 10943,10950 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜COTAND(X)â€™    â€˜REAL(4) Xâ€™       â€˜REAL(4)â€™      GNU extension
!      â€˜DCOTAND(X)â€™   â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      GNU extension
  
  _Standard_:
       GNU extension.
*************** _See also_:
*** 10961,10992 ****
  
  File: gfortran.info,  Node: COUNT,  Next: CPU_TIME,  Prev: COTAND,  Up: Intrinsic Procedures
  
! 8.78 'COUNT' -- Count function
  ==============================
  
  _Synopsis_:
!      'RESULT = COUNT(MASK [, DIM, KIND])'
  
  _Description_:
  
!      Counts the number of '.TRUE.' elements in a logical MASK, or, if
       the DIM argument is supplied, counts the number of elements along
       each row of the array in the DIM direction.  If the array has zero
!      size, or all of the elements of MASK are '.FALSE.', then the result
!      is '0'.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      MASK        The type shall be 'LOGICAL'.
!      DIM         (Optional) The type shall be 'INTEGER'.
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type 'INTEGER' and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.  If DIM is
       present, the result is an array with a rank one less than the rank
       of ARRAY, and a size corresponding to the shape of ARRAY with the
--- 10961,10992 ----
  
  File: gfortran.info,  Node: COUNT,  Next: CPU_TIME,  Prev: COTAND,  Up: Intrinsic Procedures
  
! 8.78 â€˜COUNTâ€™ -- Count function
  ==============================
  
  _Synopsis_:
!      â€˜RESULT = COUNT(MASK [, DIM, KIND])â€™
  
  _Description_:
  
!      Counts the number of â€˜.TRUE.â€™ elements in a logical MASK, or, if
       the DIM argument is supplied, counts the number of elements along
       each row of the array in the DIM direction.  If the array has zero
!      size, or all of the elements of MASK are â€˜.FALSE.â€™, then the result
!      is â€˜0â€™.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      MASK        The type shall be â€˜LOGICALâ€™.
!      DIM         (Optional) The type shall be â€˜INTEGERâ€™.
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™ and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.  If DIM is
       present, the result is an array with a rank one less than the rank
       of ARRAY, and a size corresponding to the shape of ARRAY with the
*************** _Standard_:
*** 11021,11042 ****
  
  File: gfortran.info,  Node: CPU_TIME,  Next: CSHIFT,  Prev: COUNT,  Up: Intrinsic Procedures
  
! 8.79 'CPU_TIME' -- CPU elapsed time in seconds
  ==============================================
  
  _Synopsis_:
!      'CALL CPU_TIME(TIME)'
  
  _Description_:
!      Returns a 'REAL' value representing the elapsed CPU time in
       seconds.  This is useful for testing segments of code to determine
       execution time.
  
       If a time source is available, time is reported with microsecond
!      resolution.  If no time source is available, TIME is set to '-1.0'.
  
       Note that TIME may contain a system-dependent arbitrary offset and
!      may not start with '0.0'.  For 'CPU_TIME', the absolute value is
       meaningless; only differences between subsequent calls to this
       subroutine, as shown in the example below, should be used.
  
--- 11021,11042 ----
  
  File: gfortran.info,  Node: CPU_TIME,  Next: CSHIFT,  Prev: COUNT,  Up: Intrinsic Procedures
  
! 8.79 â€˜CPU_TIMEâ€™ -- CPU elapsed time in seconds
  ==============================================
  
  _Synopsis_:
!      â€˜CALL CPU_TIME(TIME)â€™
  
  _Description_:
!      Returns a â€˜REALâ€™ value representing the elapsed CPU time in
       seconds.  This is useful for testing segments of code to determine
       execution time.
  
       If a time source is available, time is reported with microsecond
!      resolution.  If no time source is available, TIME is set to â€˜-1.0â€™.
  
       Note that TIME may contain a system-dependent arbitrary offset and
!      may not start with â€˜0.0â€™.  For â€˜CPU_TIMEâ€™, the absolute value is
       meaningless; only differences between subsequent calls to this
       subroutine, as shown in the example below, should be used.
  
*************** _Class_:
*** 11044,11050 ****
       Subroutine
  
  _Arguments_:
!      TIME        The type shall be 'REAL' with 'INTENT(OUT)'.
  
  _Return value_:
       None
--- 11044,11050 ----
       Subroutine
  
  _Arguments_:
!      TIME        The type shall be â€˜REALâ€™ with â€˜INTENT(OUT)â€™.
  
  _Return value_:
       None
*************** _See also_:
*** 11068,11083 ****
  
  File: gfortran.info,  Node: CSHIFT,  Next: CTIME,  Prev: CPU_TIME,  Up: Intrinsic Procedures
  
! 8.80 'CSHIFT' -- Circular shift elements of an array
  ====================================================
  
  _Synopsis_:
!      'RESULT = CSHIFT(ARRAY, SHIFT [, DIM])'
  
  _Description_:
!      'CSHIFT(ARRAY, SHIFT [, DIM])' performs a circular shift on
       elements of ARRAY along the dimension of DIM.  If DIM is omitted it
!      is taken to be '1'.  DIM is a scalar of type 'INTEGER' in the range
       of 1 \leq DIM \leq n) where n is the rank of ARRAY.  If the rank of
       ARRAY is one, then all elements of ARRAY are shifted by SHIFT
       places.  If rank is greater than one, then all complete rank one
--- 11068,11083 ----
  
  File: gfortran.info,  Node: CSHIFT,  Next: CTIME,  Prev: CPU_TIME,  Up: Intrinsic Procedures
  
! 8.80 â€˜CSHIFTâ€™ -- Circular shift elements of an array
  ====================================================
  
  _Synopsis_:
!      â€˜RESULT = CSHIFT(ARRAY, SHIFT [, DIM])â€™
  
  _Description_:
!      â€˜CSHIFT(ARRAY, SHIFT [, DIM])â€™ performs a circular shift on
       elements of ARRAY along the dimension of DIM.  If DIM is omitted it
!      is taken to be â€˜1â€™.  DIM is a scalar of type â€˜INTEGERâ€™ in the range
       of 1 \leq DIM \leq n) where n is the rank of ARRAY.  If the rank of
       ARRAY is one, then all elements of ARRAY are shifted by SHIFT
       places.  If rank is greater than one, then all complete rank one
*************** _Class_:
*** 11090,11100 ****
  
  _Arguments_:
       ARRAY       Shall be an array of any type.
!      SHIFT       The type shall be 'INTEGER'.
!      DIM         The type shall be 'INTEGER'.
  
  _Notes_:
!      ARRAY can also be 'UNSIGNED'.
  
  _Return value_:
       Returns an array of same type and rank as the ARRAY argument.
--- 11090,11100 ----
  
  _Arguments_:
       ARRAY       Shall be an array of any type.
!      SHIFT       The type shall be â€˜INTEGERâ€™.
!      DIM         The type shall be â€˜INTEGERâ€™.
  
  _Notes_:
!      ARRAY can also be â€˜UNSIGNEDâ€™.
  
  _Return value_:
       Returns an array of same type and rank as the ARRAY argument.
*************** _Standard_:
*** 11119,11135 ****
  
  File: gfortran.info,  Node: CTIME,  Next: DATE_AND_TIME,  Prev: CSHIFT,  Up: Intrinsic Procedures
  
! 8.81 'CTIME' -- Convert a time into a string
  ============================================
  
  _Synopsis_:
!      'CALL CTIME(TIME, RESULT)'.
!      'RESULT = CTIME(TIME)'.
  
  _Description_:
!      'CTIME' converts a system time value, such as returned by *note
!      TIME8::, to a string.  The output is of the form 'Sat Aug 19
!      18:13:14 1995'.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
--- 11119,11135 ----
  
  File: gfortran.info,  Node: CTIME,  Next: DATE_AND_TIME,  Prev: CSHIFT,  Up: Intrinsic Procedures
  
! 8.81 â€˜CTIMEâ€™ -- Convert a time into a string
  ============================================
  
  _Synopsis_:
!      â€˜CALL CTIME(TIME, RESULT)â€™.
!      â€˜RESULT = CTIME(TIME)â€™.
  
  _Description_:
!      â€˜CTIMEâ€™ converts a system time value, such as returned by *note
!      TIME8::, to a string.  The output is of the form â€˜Sat Aug 19
!      18:13:14 1995â€™.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
*************** _Class_:
*** 11138,11146 ****
       Subroutine, function
  
  _Arguments_:
!      TIME        The type shall be of type 'INTEGER'.
!      RESULT      The type shall be of type 'CHARACTER' and of
!                  default kind.  It is an 'INTENT(OUT)' argument.
                   If the length of this variable is too short for
                   the time and date string to fit completely, it
                   is blank on procedure return.
--- 11138,11146 ----
       Subroutine, function
  
  _Arguments_:
!      TIME        The type shall be of type â€˜INTEGERâ€™.
!      RESULT      The type shall be of type â€˜CHARACTERâ€™ and of
!                  default kind.  It is an â€˜INTENT(OUT)â€™ argument.
                   If the length of this variable is too short for
                   the time and date string to fit completely, it
                   is blank on procedure return.
*************** _See also_:
*** 11173,11215 ****
  
  File: gfortran.info,  Node: DATE_AND_TIME,  Next: DBLE,  Prev: CTIME,  Up: Intrinsic Procedures
  
! 8.82 'DATE_AND_TIME' -- Date and time subroutine
  ================================================
  
  _Synopsis_:
!      'CALL DATE_AND_TIME([DATE, TIME, ZONE, VALUES])'
  
  _Description_:
!      'DATE_AND_TIME(DATE, TIME, ZONE, VALUES)' gets the corresponding
       date and time information from the real-time system clock.  DATE is
!      'INTENT(OUT)' and of the form ccyymmdd.  TIME is 'INTENT(OUT)' and
!      of the form hhmmss.sss.  ZONE is 'INTENT(OUT)' and of the form
       (+-)hhmm, representing the difference with respect to Coordinated
       Universal Time (UTC). Unavailable time and date parameters return
       blanks.
  
!      VALUES is 'INTENT(OUT)' and provides the following:
  
!      'VALUES(1)':The year, including the century
!      'VALUES(2)':The month of the year
!      'VALUES(3)':The day of the month
!      'VALUES(4)':The time difference from UTC in minutes
!      'VALUES(5)':The hour of the day
!      'VALUES(6)':The minutes of the hour
!      'VALUES(7)':The seconds of the minute
!      'VALUES(8)':The milliseconds of the second
  
  _Class_:
       Subroutine
  
  _Arguments_:
!      DATE        (Optional) Scalar of type default 'CHARACTER'.
                   Recommended length is 8 or larger.
!      TIME        (Optional) Scalar of type default 'CHARACTER'.
                   Recommended length is 10 or larger.
!      ZONE        (Optional) Scalar of type default 'CHARACTER'.
                   Recommended length is 5 or larger.
!      VALUES      (Optional) Rank-1 array of type 'INTEGER' with a
                   decimal exponent range of at least four and
                   array size at least 8.
  
--- 11173,11215 ----
  
  File: gfortran.info,  Node: DATE_AND_TIME,  Next: DBLE,  Prev: CTIME,  Up: Intrinsic Procedures
  
! 8.82 â€˜DATE_AND_TIMEâ€™ -- Date and time subroutine
  ================================================
  
  _Synopsis_:
!      â€˜CALL DATE_AND_TIME([DATE, TIME, ZONE, VALUES])â€™
  
  _Description_:
!      â€˜DATE_AND_TIME(DATE, TIME, ZONE, VALUES)â€™ gets the corresponding
       date and time information from the real-time system clock.  DATE is
!      â€˜INTENT(OUT)â€™ and of the form ccyymmdd.  TIME is â€˜INTENT(OUT)â€™ and
!      of the form hhmmss.sss.  ZONE is â€˜INTENT(OUT)â€™ and of the form
       (+-)hhmm, representing the difference with respect to Coordinated
       Universal Time (UTC). Unavailable time and date parameters return
       blanks.
  
!      VALUES is â€˜INTENT(OUT)â€™ and provides the following:
  
!      â€˜VALUES(1)â€™:The year, including the century
!      â€˜VALUES(2)â€™:The month of the year
!      â€˜VALUES(3)â€™:The day of the month
!      â€˜VALUES(4)â€™:The time difference from UTC in minutes
!      â€˜VALUES(5)â€™:The hour of the day
!      â€˜VALUES(6)â€™:The minutes of the hour
!      â€˜VALUES(7)â€™:The seconds of the minute
!      â€˜VALUES(8)â€™:The milliseconds of the second
  
  _Class_:
       Subroutine
  
  _Arguments_:
!      DATE        (Optional) Scalar of type default â€˜CHARACTERâ€™.
                   Recommended length is 8 or larger.
!      TIME        (Optional) Scalar of type default â€˜CHARACTERâ€™.
                   Recommended length is 10 or larger.
!      ZONE        (Optional) Scalar of type default â€˜CHARACTERâ€™.
                   Recommended length is 5 or larger.
!      VALUES      (Optional) Rank-1 array of type â€˜INTEGERâ€™ with a
                   decimal exponent range of at least four and
                   array size at least 8.
  
*************** _See also_:
*** 11241,11261 ****
  
  File: gfortran.info,  Node: DBLE,  Next: DCMPLX,  Prev: DATE_AND_TIME,  Up: Intrinsic Procedures
  
! 8.83 'DBLE' -- Double conversion function
  =========================================
  
  _Synopsis_:
!      'RESULT = DBLE(A)'
  
  _Description_:
!      'DBLE(A)' Converts A to double precision real type.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           The type shall be 'INTEGER', 'REAL', or
!                  'COMPLEX'.
  
  _Return value_:
       The return value is of type double precision real.
--- 11241,11261 ----
  
  File: gfortran.info,  Node: DBLE,  Next: DCMPLX,  Prev: DATE_AND_TIME,  Up: Intrinsic Procedures
  
! 8.83 â€˜DBLEâ€™ -- Double conversion function
  =========================================
  
  _Synopsis_:
!      â€˜RESULT = DBLE(A)â€™
  
  _Description_:
!      â€˜DBLE(A)â€™ Converts A to double precision real type.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           The type shall be â€˜INTEGERâ€™, â€˜REALâ€™, or
!                  â€˜COMPLEXâ€™.
  
  _Return value_:
       The return value is of type double precision real.
*************** _See also_:
*** 11277,11290 ****
  
  File: gfortran.info,  Node: DCMPLX,  Next: DIGITS,  Prev: DBLE,  Up: Intrinsic Procedures
  
! 8.84 'DCMPLX' -- Double complex conversion function
  ===================================================
  
  _Synopsis_:
!      'RESULT = DCMPLX(X [, Y])'
  
  _Description_:
!      'DCMPLX(X [,Y])' returns a double complex number where X is
       converted to the real component.  If Y is present it is converted
       to the imaginary component.  If Y is not present then the imaginary
       component is set to 0.0.  If X is complex then Y must not be
--- 11277,11290 ----
  
  File: gfortran.info,  Node: DCMPLX,  Next: DIGITS,  Prev: DBLE,  Up: Intrinsic Procedures
  
! 8.84 â€˜DCMPLXâ€™ -- Double complex conversion function
  ===================================================
  
  _Synopsis_:
!      â€˜RESULT = DCMPLX(X [, Y])â€™
  
  _Description_:
!      â€˜DCMPLX(X [,Y])â€™ returns a double complex number where X is
       converted to the real component.  If Y is present it is converted
       to the imaginary component.  If Y is not present then the imaginary
       component is set to 0.0.  If X is complex then Y must not be
*************** _Class_:
*** 11294,11305 ****
       Elemental function
  
  _Arguments_:
!      X           The type may be 'INTEGER', 'REAL', or 'COMPLEX'.
!      Y           (Optional if X is not 'COMPLEX'.)  May be
!                  'INTEGER' or 'REAL'.
  
  _Return value_:
!      The return value is of type 'COMPLEX(8)'
  
  _Example_:
            program test_dcmplx
--- 11294,11305 ----
       Elemental function
  
  _Arguments_:
!      X           The type may be â€˜INTEGERâ€™, â€˜REALâ€™, or â€˜COMPLEXâ€™.
!      Y           (Optional if X is not â€˜COMPLEXâ€™.)  May be
!                  â€˜INTEGERâ€™ or â€˜REALâ€™.
  
  _Return value_:
!      The return value is of type â€˜COMPLEX(8)â€™
  
  _Example_:
            program test_dcmplx
*************** _Standard_:
*** 11319,11332 ****
  
  File: gfortran.info,  Node: DIGITS,  Next: DIM,  Prev: DCMPLX,  Up: Intrinsic Procedures
  
! 8.85 'DIGITS' -- Significant binary digits function
  ===================================================
  
  _Synopsis_:
!      'RESULT = DIGITS(X)'
  
  _Description_:
!      'DIGITS(X)' returns the number of significant binary digits of the
       internal model representation of X.  For example, on a system using
       a 32-bit floating point representation, a default real number would
       likely return 24.
--- 11319,11332 ----
  
  File: gfortran.info,  Node: DIGITS,  Next: DIM,  Prev: DCMPLX,  Up: Intrinsic Procedures
  
! 8.85 â€˜DIGITSâ€™ -- Significant binary digits function
  ===================================================
  
  _Synopsis_:
!      â€˜RESULT = DIGITS(X)â€™
  
  _Description_:
!      â€˜DIGITS(X)â€™ returns the number of significant binary digits of the
       internal model representation of X.  For example, on a system using
       a 32-bit floating point representation, a default real number would
       likely return 24.
*************** _Class_:
*** 11335,11344 ****
       Inquiry function
  
  _Arguments_:
!      X           The type may be 'INTEGER', 'REAL' or 'UNSIGNED'.
  
  _Return value_:
!      The return value is of type 'INTEGER'.
  
  _Example_:
            program test_digits
--- 11335,11344 ----
       Inquiry function
  
  _Arguments_:
!      X           The type may be â€˜INTEGERâ€™, â€˜REALâ€™ or â€˜UNSIGNEDâ€™.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™.
  
  _Example_:
            program test_digits
*************** _Example_:
*** 11351,11383 ****
            end program test_digits
  
  _Standard_:
!      Fortran 90 and later, extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  
  File: gfortran.info,  Node: DIM,  Next: DOT_PRODUCT,  Prev: DIGITS,  Up: Intrinsic Procedures
  
! 8.86 'DIM' -- Positive difference
  =================================
  
  _Synopsis_:
!      'RESULT = DIM(X, Y)'
  
  _Description_:
!      'DIM(X,Y)' returns the difference 'X-Y' if the result is positive;
       otherwise returns zero.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'INTEGER' or 'REAL'
       Y           The type shall be the same type and kind as X.
                   (As a GNU extension, arguments of different
                   kinds are permitted.)
  
  _Return value_:
!      The return value is of type 'INTEGER' or 'REAL'.  (As a GNU
       extension, kind is the largest kind of the actual arguments.)
  
  _Example_:
--- 11351,11383 ----
            end program test_digits
  
  _Standard_:
!      Fortran 90 and later, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  
  File: gfortran.info,  Node: DIM,  Next: DOT_PRODUCT,  Prev: DIGITS,  Up: Intrinsic Procedures
  
! 8.86 â€˜DIMâ€™ -- Positive difference
  =================================
  
  _Synopsis_:
!      â€˜RESULT = DIM(X, Y)â€™
  
  _Description_:
!      â€˜DIM(X,Y)â€™ returns the difference â€˜X-Yâ€™ if the result is positive;
       otherwise returns zero.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜INTEGERâ€™ or â€˜REALâ€™
       Y           The type shall be the same type and kind as X.
                   (As a GNU extension, arguments of different
                   kinds are permitted.)
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™ or â€˜REALâ€™.  (As a GNU
       extension, kind is the largest kind of the actual arguments.)
  
  _Example_:
*************** _Example_:
*** 11393,11401 ****
  _Specific names_:
       Name           Argument            Return type    Standard
       -------------------------------------------------------------------------
!      'DIM(X,Y)'     'REAL(4) X, Y'      'REAL(4)'      Fortran 77 and later
!      'IDIM(X,Y)'    'INTEGER(4) X, Y'   'INTEGER(4)'   Fortran 77 and later
!      'DDIM(X,Y)'    'REAL(8) X, Y'      'REAL(8)'      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later
--- 11393,11401 ----
  _Specific names_:
       Name           Argument            Return type    Standard
       -------------------------------------------------------------------------
!      â€˜DIM(X,Y)â€™     â€˜REAL(4) X, Yâ€™      â€˜REAL(4)â€™      Fortran 77 and later
!      â€˜IDIM(X,Y)â€™    â€˜INTEGER(4) X, Yâ€™   â€˜INTEGER(4)â€™   Fortran 77 and later
!      â€˜DDIM(X,Y)â€™    â€˜REAL(8) X, Yâ€™      â€˜REAL(8)â€™      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later
*************** _Standard_:
*** 11403,11443 ****
  
  File: gfortran.info,  Node: DOT_PRODUCT,  Next: DPROD,  Prev: DIM,  Up: Intrinsic Procedures
  
! 8.87 'DOT_PRODUCT' -- Dot product function
  ==========================================
  
  _Synopsis_:
!      'RESULT = DOT_PRODUCT(VECTOR_A, VECTOR_B)'
  
  _Description_:
!      'DOT_PRODUCT(VECTOR_A, VECTOR_B)' computes the dot product
       multiplication of two vectors VECTOR_A and VECTOR_B.  The two
       vectors may be either numeric or logical and must be arrays of rank
!      one and of equal size.  If the vectors are 'INTEGER', 'REAL' or
!      'UNSIGNED', the result is 'SUM(VECTOR_A*VECTOR_B)'.  If the vectors
!      are 'COMPLEX', the result is 'SUM(CONJG(VECTOR_A)*VECTOR_B)'.  If
!      the vectors are 'LOGICAL', the result is 'ANY(VECTOR_A .AND.
!      VECTOR_B)'.  If one of VECTOR_A or VECTOR_B is 'UNSIGNED', the
!      other one shall also be 'UNSIGNED'.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      VECTOR_A    The type shall be numeric or 'LOGICAL', rank 1.
!                  If VECTOR_B is 'UNSIGNED', VECTOR_A shall also
                   be unsigned.
                   
       VECTOR_B    The type shall if VECTOR_A is of numeric type or
!                  'LOGICAL' if VECTOR_A is of type 'LOGICAL'.
                   VECTOR_B shall be a rank-one array.  If VECTOR_A
!                  is 'UNSIGNED', VECTOR_B shall also be unsigned.
                   
  
  _Return value_:
       If the arguments are numeric, the return value is a scalar of
!      numeric type, 'INTEGER', 'REAL', 'COMPLEX' or 'UNSIGNED'.  If the
!      arguments are 'LOGICAL', the return value is '.TRUE.' or '.FALSE.'.
  
  _Example_:
            program test_dot_prod
--- 11403,11443 ----
  
  File: gfortran.info,  Node: DOT_PRODUCT,  Next: DPROD,  Prev: DIM,  Up: Intrinsic Procedures
  
! 8.87 â€˜DOT_PRODUCTâ€™ -- Dot product function
  ==========================================
  
  _Synopsis_:
!      â€˜RESULT = DOT_PRODUCT(VECTOR_A, VECTOR_B)â€™
  
  _Description_:
!      â€˜DOT_PRODUCT(VECTOR_A, VECTOR_B)â€™ computes the dot product
       multiplication of two vectors VECTOR_A and VECTOR_B.  The two
       vectors may be either numeric or logical and must be arrays of rank
!      one and of equal size.  If the vectors are â€˜INTEGERâ€™, â€˜REALâ€™ or
!      â€˜UNSIGNEDâ€™, the result is â€˜SUM(VECTOR_A*VECTOR_B)â€™.  If the vectors
!      are â€˜COMPLEXâ€™, the result is â€˜SUM(CONJG(VECTOR_A)*VECTOR_B)â€™.  If
!      the vectors are â€˜LOGICALâ€™, the result is â€˜ANY(VECTOR_A .AND.
!      VECTOR_B)â€™.  If one of VECTOR_A or VECTOR_B is â€˜UNSIGNEDâ€™, the
!      other one shall also be â€˜UNSIGNEDâ€™.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      VECTOR_A    The type shall be numeric or â€˜LOGICALâ€™, rank 1.
!                  If VECTOR_B is â€˜UNSIGNEDâ€™, VECTOR_A shall also
                   be unsigned.
                   
       VECTOR_B    The type shall if VECTOR_A is of numeric type or
!                  â€˜LOGICALâ€™ if VECTOR_A is of type â€˜LOGICALâ€™.
                   VECTOR_B shall be a rank-one array.  If VECTOR_A
!                  is â€˜UNSIGNEDâ€™, VECTOR_B shall also be unsigned.
                   
  
  _Return value_:
       If the arguments are numeric, the return value is a scalar of
!      numeric type, â€˜INTEGERâ€™, â€˜REALâ€™, â€˜COMPLEXâ€™ or â€˜UNSIGNEDâ€™.  If the
!      arguments are â€˜LOGICALâ€™, the return value is â€˜.TRUE.â€™ or â€˜.FALSE.â€™.
  
  _Example_:
            program test_dot_prod
*************** _Example_:
*** 11452,11481 ****
            end program test_dot_prod
  
  _Standard_:
!      Fortran 90 and later, extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  
  File: gfortran.info,  Node: DPROD,  Next: DREAL,  Prev: DOT_PRODUCT,  Up: Intrinsic Procedures
  
! 8.88 'DPROD' -- Double product function
  =======================================
  
  _Synopsis_:
!      'RESULT = DPROD(X, Y)'
  
  _Description_:
!      'DPROD(X,Y)' returns the product 'X*Y'.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL'.
!      Y           The type shall be 'REAL'.
  
  _Return value_:
!      The return value is of type 'REAL(8)'.
  
  _Example_:
            program test_dprod
--- 11452,11481 ----
            end program test_dot_prod
  
  _Standard_:
!      Fortran 90 and later, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  
  File: gfortran.info,  Node: DPROD,  Next: DREAL,  Prev: DOT_PRODUCT,  Up: Intrinsic Procedures
  
! 8.88 â€˜DPRODâ€™ -- Double product function
  =======================================
  
  _Synopsis_:
!      â€˜RESULT = DPROD(X, Y)â€™
  
  _Description_:
!      â€˜DPROD(X,Y)â€™ returns the product â€˜X*Yâ€™.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™.
!      Y           The type shall be â€˜REALâ€™.
  
  _Return value_:
!      The return value is of type â€˜REAL(8)â€™.
  
  _Example_:
            program test_dprod
*************** _Example_:
*** 11489,11495 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'DPROD(X,Y)'   'REAL(4) X, Y'    'REAL(8)'      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later
--- 11489,11495 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜DPROD(X,Y)â€™   â€˜REAL(4) X, Yâ€™    â€˜REAL(8)â€™      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later
*************** _Standard_:
*** 11497,11519 ****
  
  File: gfortran.info,  Node: DREAL,  Next: DSHIFTL,  Prev: DPROD,  Up: Intrinsic Procedures
  
! 8.89 'DREAL' -- Double real part function
  =========================================
  
  _Synopsis_:
!      'RESULT = DREAL(A)'
  
  _Description_:
!      'DREAL(Z)' returns the real part of complex variable Z.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           The type shall be 'COMPLEX(8)'.
  
  _Return value_:
!      The return value is of type 'REAL(8)'.
  
  _Example_:
            program test_dreal
--- 11497,11519 ----
  
  File: gfortran.info,  Node: DREAL,  Next: DSHIFTL,  Prev: DPROD,  Up: Intrinsic Procedures
  
! 8.89 â€˜DREALâ€™ -- Double real part function
  =========================================
  
  _Synopsis_:
!      â€˜RESULT = DREAL(A)â€™
  
  _Description_:
!      â€˜DREAL(Z)â€™ returns the real part of complex variable Z.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           The type shall be â€˜COMPLEX(8)â€™.
  
  _Return value_:
!      The return value is of type â€˜REAL(8)â€™.
  
  _Example_:
            program test_dreal
*************** _See also_:
*** 11530,11543 ****
  
  File: gfortran.info,  Node: DSHIFTL,  Next: DSHIFTR,  Prev: DREAL,  Up: Intrinsic Procedures
  
! 8.90 'DSHIFTL' -- Combined left shift
  =====================================
  
  _Synopsis_:
!      'RESULT = DSHIFTL(I, J, SHIFT)'
  
  _Description_:
!      'DSHIFTL(I, J, SHIFT)' combines bits of I and J.  The rightmost
       SHIFT bits of the result are the leftmost SHIFT bits of J, and the
       remaining bits are the rightmost bits of I.
  
--- 11530,11543 ----
  
  File: gfortran.info,  Node: DSHIFTL,  Next: DSHIFTR,  Prev: DREAL,  Up: Intrinsic Procedures
  
! 8.90 â€˜DSHIFTLâ€™ -- Combined left shift
  =====================================
  
  _Synopsis_:
!      â€˜RESULT = DSHIFTL(I, J, SHIFT)â€™
  
  _Description_:
!      â€˜DSHIFTL(I, J, SHIFT)â€™ combines bits of I and J.  The rightmost
       SHIFT bits of the result are the leftmost SHIFT bits of J, and the
       remaining bits are the rightmost bits of I.
  
*************** _Class_:
*** 11545,11569 ****
       Elemental function
  
  _Arguments_:
!      I           Shall be of type 'INTEGER', 'UNSIGNED' or a BOZ
                   constant.
!      J           Shall be of type 'INTEGER', 'UNSIGNED' or a BOZ
!                  constant.  If both I and J have 'INTEGER' or
!                  'UNSIGNED' type, then they shall have the same
                   type and kind type parameter.  I and J shall not
                   both be BOZ constants.
!      SHIFT       Shall be of type 'INTEGER'.  It shall be
                   nonnegative.  If I is not a BOZ constant, then
                   SHIFT shall be less than or equal to
!                  'BIT_SIZE(I)'; otherwise, SHIFT shall be less
!                  than or equal to 'BIT_SIZE(J)'.
  
  _Return value_:
       The return value is the same type and type kind parameter as I or,
       if I is a BOZ constant, J.
  
  _Standard_:
!      Fortran 2008 and later, extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  _See also_:
--- 11545,11569 ----
       Elemental function
  
  _Arguments_:
!      I           Shall be of type â€˜INTEGERâ€™, â€˜UNSIGNEDâ€™ or a BOZ
                   constant.
!      J           Shall be of type â€˜INTEGERâ€™, â€˜UNSIGNEDâ€™ or a BOZ
!                  constant.  If both I and J have â€˜INTEGERâ€™ or
!                  â€˜UNSIGNEDâ€™ type, then they shall have the same
                   type and kind type parameter.  I and J shall not
                   both be BOZ constants.
!      SHIFT       Shall be of type â€˜INTEGERâ€™.  It shall be
                   nonnegative.  If I is not a BOZ constant, then
                   SHIFT shall be less than or equal to
!                  â€˜BIT_SIZE(I)â€™; otherwise, SHIFT shall be less
!                  than or equal to â€˜BIT_SIZE(J)â€™.
  
  _Return value_:
       The return value is the same type and type kind parameter as I or,
       if I is a BOZ constant, J.
  
  _Standard_:
!      Fortran 2008 and later, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  _See also_:
*************** _See also_:
*** 11572,11585 ****
  
  File: gfortran.info,  Node: DSHIFTR,  Next: DTIME,  Prev: DSHIFTL,  Up: Intrinsic Procedures
  
! 8.91 'DSHIFTR' -- Combined right shift
  ======================================
  
  _Synopsis_:
!      'RESULT = DSHIFTR(I, J, SHIFT)'
  
  _Description_:
!      'DSHIFTR(I, J, SHIFT)' combines bits of I and J.  The leftmost
       SHIFT bits of the result are the rightmost SHIFT bits of I, and the
       remaining bits are the leftmost bits of J.
  
--- 11572,11585 ----
  
  File: gfortran.info,  Node: DSHIFTR,  Next: DTIME,  Prev: DSHIFTL,  Up: Intrinsic Procedures
  
! 8.91 â€˜DSHIFTRâ€™ -- Combined right shift
  ======================================
  
  _Synopsis_:
!      â€˜RESULT = DSHIFTR(I, J, SHIFT)â€™
  
  _Description_:
!      â€˜DSHIFTR(I, J, SHIFT)â€™ combines bits of I and J.  The leftmost
       SHIFT bits of the result are the rightmost SHIFT bits of I, and the
       remaining bits are the leftmost bits of J.
  
*************** _Class_:
*** 11587,11611 ****
       Elemental function
  
  _Arguments_:
!      I           Shall be of type 'INTEGER', 'UNSIGNED' or a BOZ
                   constant.
!      J           Shall be of type 'INTEGER', 'UNSIGNED' or a BOZ
!                  constant.  If both I and J have 'INTEGER' or
!                  'UNSIGNED' type, then they shall have the same
                   type and kind type parameter.  I and J shall not
                   both be BOZ constants.
!      SHIFT       Shall be of type 'INTEGER'.  It shall be
                   nonnegative.  If I is not a BOZ constant, then
                   SHIFT shall be less than or equal to
!                  'BIT_SIZE(I)'; otherwise, SHIFT shall be less
!                  than or equal to 'BIT_SIZE(J)'.
  
  _Return value_:
       The return value is the same type and type kind parameter as I or,
       if I is a BOZ constant, J.
  
  _Standard_:
!      Fortran 2008 and later, extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  _See also_:
--- 11587,11611 ----
       Elemental function
  
  _Arguments_:
!      I           Shall be of type â€˜INTEGERâ€™, â€˜UNSIGNEDâ€™ or a BOZ
                   constant.
!      J           Shall be of type â€˜INTEGERâ€™, â€˜UNSIGNEDâ€™ or a BOZ
!                  constant.  If both I and J have â€˜INTEGERâ€™ or
!                  â€˜UNSIGNEDâ€™ type, then they shall have the same
                   type and kind type parameter.  I and J shall not
                   both be BOZ constants.
!      SHIFT       Shall be of type â€˜INTEGERâ€™.  It shall be
                   nonnegative.  If I is not a BOZ constant, then
                   SHIFT shall be less than or equal to
!                  â€˜BIT_SIZE(I)â€™; otherwise, SHIFT shall be less
!                  than or equal to â€˜BIT_SIZE(J)â€™.
  
  _Return value_:
       The return value is the same type and type kind parameter as I or,
       if I is a BOZ constant, J.
  
  _Standard_:
!      Fortran 2008 and later, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  _See also_:
*************** _See also_:
*** 11614,11634 ****
  
  File: gfortran.info,  Node: DTIME,  Next: EOSHIFT,  Prev: DSHIFTR,  Up: Intrinsic Procedures
  
! 8.92 'DTIME' -- Execution time subroutine (or function)
  =======================================================
  
  _Synopsis_:
!      'CALL DTIME(VALUES, TIME)'.
!      'TIME = DTIME(VALUES)', (not recommended).
  
  _Description_:
!      'DTIME(VALUES, TIME)' initially returns the number of seconds of
       runtime since the start of the process's execution in TIME.  VALUES
!      returns the user and system components of this time in 'VALUES(1)'
!      and 'VALUES(2)' respectively.  TIME is equal to 'VALUES(1) +
!      VALUES(2)'.
  
!      Subsequent invocations of 'DTIME' return values accumulated since
       the previous invocation.
  
       On some systems, the underlying timings are represented using types
--- 11614,11634 ----
  
  File: gfortran.info,  Node: DTIME,  Next: EOSHIFT,  Prev: DSHIFTR,  Up: Intrinsic Procedures
  
! 8.92 â€˜DTIMEâ€™ -- Execution time subroutine (or function)
  =======================================================
  
  _Synopsis_:
!      â€˜CALL DTIME(VALUES, TIME)â€™.
!      â€˜TIME = DTIME(VALUES)â€™, (not recommended).
  
  _Description_:
!      â€˜DTIME(VALUES, TIME)â€™ initially returns the number of seconds of
       runtime since the start of the process's execution in TIME.  VALUES
!      returns the user and system components of this time in â€˜VALUES(1)â€™
!      and â€˜VALUES(2)â€™ respectively.  TIME is equal to â€˜VALUES(1) +
!      VALUES(2)â€™.
  
!      Subsequent invocations of â€˜DTIMEâ€™ return values accumulated since
       the previous invocation.
  
       On some systems, the underlying timings are represented using types
*************** _Description_:
*** 11639,11664 ****
  
       Please note that this implementation is thread safe if used within
       OpenMP directives, i.e., its state is consistent while called from
!      multiple threads.  However, if 'DTIME' is called from multiple
       threads, the result is still the time since the last invocation.
       This may not give the intended results.  If possible, use
!      'CPU_TIME' instead.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
  
!      VALUES and TIME are 'INTENT(OUT)' and provide the following:
  
!      'VALUES(1)':User time in seconds.
!      'VALUES(2)':System time in seconds.
!      'TIME':     Run time since start in seconds.
  
  _Class_:
       Subroutine, function
  
  _Arguments_:
!      VALUES      The type shall be 'REAL(4), DIMENSION(2)'.
!      TIME        The type shall be 'REAL(4)'.
  
  _Return value_:
       Elapsed time in seconds since the last invocation or since the
--- 11639,11664 ----
  
       Please note that this implementation is thread safe if used within
       OpenMP directives, i.e., its state is consistent while called from
!      multiple threads.  However, if â€˜DTIMEâ€™ is called from multiple
       threads, the result is still the time since the last invocation.
       This may not give the intended results.  If possible, use
!      â€˜CPU_TIMEâ€™ instead.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
  
!      VALUES and TIME are â€˜INTENT(OUT)â€™ and provide the following:
  
!      â€˜VALUES(1)â€™:User time in seconds.
!      â€˜VALUES(2)â€™:System time in seconds.
!      â€˜TIMEâ€™:     Run time since start in seconds.
  
  _Class_:
       Subroutine, function
  
  _Arguments_:
!      VALUES      The type shall be â€˜REAL(4), DIMENSION(2)â€™.
!      TIME        The type shall be â€˜REAL(4)â€™.
  
  _Return value_:
       Elapsed time in seconds since the last invocation or since the
*************** _See also_:
*** 11691,11706 ****
  
  File: gfortran.info,  Node: EOSHIFT,  Next: EPSILON,  Prev: DTIME,  Up: Intrinsic Procedures
  
! 8.93 'EOSHIFT' -- End-off shift elements of an array
  ====================================================
  
  _Synopsis_:
!      'RESULT = EOSHIFT(ARRAY, SHIFT [, BOUNDARY, DIM])'
  
  _Description_:
!      'EOSHIFT(ARRAY, SHIFT[, BOUNDARY, DIM])' performs an end-off shift
       on elements of ARRAY along the dimension of DIM.  If DIM is omitted
!      it is taken to be '1'.  DIM is a scalar of type 'INTEGER' in the
       range of 1 \leq DIM \leq n) where n is the rank of ARRAY.  If the
       rank of ARRAY is one, then all elements of ARRAY are shifted by
       SHIFT places.  If rank is greater than one, then all complete rank
--- 11691,11706 ----
  
  File: gfortran.info,  Node: EOSHIFT,  Next: EPSILON,  Prev: DTIME,  Up: Intrinsic Procedures
  
! 8.93 â€˜EOSHIFTâ€™ -- End-off shift elements of an array
  ====================================================
  
  _Synopsis_:
!      â€˜RESULT = EOSHIFT(ARRAY, SHIFT [, BOUNDARY, DIM])â€™
  
  _Description_:
!      â€˜EOSHIFT(ARRAY, SHIFT[, BOUNDARY, DIM])â€™ performs an end-off shift
       on elements of ARRAY along the dimension of DIM.  If DIM is omitted
!      it is taken to be â€˜1â€™.  DIM is a scalar of type â€˜INTEGERâ€™ in the
       range of 1 \leq DIM \leq n) where n is the rank of ARRAY.  If the
       rank of ARRAY is one, then all elements of ARRAY are shifted by
       SHIFT places.  If rank is greater than one, then all complete rank
*************** _Description_:
*** 11714,11720 ****
       _Array      _Boundary Value_
       Type_
       Numeric     0 of the type and kind of ARRAY.
!      Logical     '.FALSE.'.
       Character(LEN)LEN blanks.
  
  _Class_:
--- 11714,11720 ----
       _Array      _Boundary Value_
       Type_
       Numeric     0 of the type and kind of ARRAY.
!      Logical     â€˜.FALSE.â€™.
       Character(LEN)LEN blanks.
  
  _Class_:
*************** _Class_:
*** 11722,11733 ****
  
  _Arguments_:
       ARRAY       May be any type, not scalar.
!      SHIFT       The type shall be 'INTEGER'.
       BOUNDARY    Same type as ARRAY.
!      DIM         The type shall be 'INTEGER'.
  
  _Notes_:
!      ARRAY can also be 'UNSIGNED'.
  
  _Return value_:
       Returns an array of same type and rank as the ARRAY argument.
--- 11722,11733 ----
  
  _Arguments_:
       ARRAY       May be any type, not scalar.
!      SHIFT       The type shall be â€˜INTEGERâ€™.
       BOUNDARY    Same type as ARRAY.
!      DIM         The type shall be â€˜INTEGERâ€™.
  
  _Notes_:
!      ARRAY can also be â€˜UNSIGNEDâ€™.
  
  _Return value_:
       Returns an array of same type and rank as the ARRAY argument.
*************** _Example_:
*** 11747,11773 ****
            end program test_eoshift
  
  _Standard_:
!      Fortran 90 and later, extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  
  File: gfortran.info,  Node: EPSILON,  Next: ERF,  Prev: EOSHIFT,  Up: Intrinsic Procedures
  
! 8.94 'EPSILON' -- Epsilon function
  ==================================
  
  _Synopsis_:
!      'RESULT = EPSILON(X)'
  
  _Description_:
!      'EPSILON(X)' returns the smallest number E of the same kind as X
       such that 1 + E > 1.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      X           The type shall be 'REAL'.
  
  _Return value_:
       The return value is of same type as the argument.
--- 11747,11773 ----
            end program test_eoshift
  
  _Standard_:
!      Fortran 90 and later, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  
  File: gfortran.info,  Node: EPSILON,  Next: ERF,  Prev: EOSHIFT,  Up: Intrinsic Procedures
  
! 8.94 â€˜EPSILONâ€™ -- Epsilon function
  ==================================
  
  _Synopsis_:
!      â€˜RESULT = EPSILON(X)â€™
  
  _Description_:
!      â€˜EPSILON(X)â€™ returns the smallest number E of the same kind as X
       such that 1 + E > 1.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™.
  
  _Return value_:
       The return value is of same type as the argument.
*************** _Standard_:
*** 11786,11808 ****
  
  File: gfortran.info,  Node: ERF,  Next: ERFC,  Prev: EPSILON,  Up: Intrinsic Procedures
  
! 8.95 'ERF' -- Error function
  ============================
  
  _Synopsis_:
!      'RESULT = ERF(X)'
  
  _Description_:
!      'ERF(X)' computes the error function of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL'.
  
  _Return value_:
!      The return value is of type 'REAL', of the same kind as X and lies
       in the range -1 \leq erf (x) \leq 1 .
  
  _Example_:
--- 11786,11808 ----
  
  File: gfortran.info,  Node: ERF,  Next: ERFC,  Prev: EPSILON,  Up: Intrinsic Procedures
  
! 8.95 â€˜ERFâ€™ -- Error function
  ============================
  
  _Synopsis_:
!      â€˜RESULT = ERF(X)â€™
  
  _Description_:
!      â€˜ERF(X)â€™ computes the error function of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™.
  
  _Return value_:
!      The return value is of type â€˜REALâ€™, of the same kind as X and lies
       in the range -1 \leq erf (x) \leq 1 .
  
  _Example_:
*************** _Example_:
*** 11814,11820 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'DERF(X)'      'REAL(8) X'       'REAL(8)'      GNU extension
  
  _Standard_:
       Fortran 2008 and later
--- 11814,11820 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜DERF(X)â€™      â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      GNU extension
  
  _Standard_:
       Fortran 2008 and later
*************** _Standard_:
*** 11822,11844 ****
  
  File: gfortran.info,  Node: ERFC,  Next: ERFC_SCALED,  Prev: ERF,  Up: Intrinsic Procedures
  
! 8.96 'ERFC' -- Error function
  =============================
  
  _Synopsis_:
!      'RESULT = ERFC(X)'
  
  _Description_:
!      'ERFC(X)' computes the complementary error function of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL'.
  
  _Return value_:
!      The return value is of type 'REAL' and of the same kind as X.  It
       lies in the range 0 \leq erfc (x) \leq 2 .
  
  _Example_:
--- 11822,11844 ----
  
  File: gfortran.info,  Node: ERFC,  Next: ERFC_SCALED,  Prev: ERF,  Up: Intrinsic Procedures
  
! 8.96 â€˜ERFCâ€™ -- Error function
  =============================
  
  _Synopsis_:
!      â€˜RESULT = ERFC(X)â€™
  
  _Description_:
!      â€˜ERFC(X)â€™ computes the complementary error function of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™.
  
  _Return value_:
!      The return value is of type â€˜REALâ€™ and of the same kind as X.  It
       lies in the range 0 \leq erfc (x) \leq 2 .
  
  _Example_:
*************** _Example_:
*** 11850,11856 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'DERFC(X)'     'REAL(8) X'       'REAL(8)'      GNU extension
  
  _Standard_:
       Fortran 2008 and later
--- 11850,11856 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜DERFC(X)â€™     â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      GNU extension
  
  _Standard_:
       Fortran 2008 and later
*************** _Standard_:
*** 11858,11881 ****
  
  File: gfortran.info,  Node: ERFC_SCALED,  Next: ETIME,  Prev: ERFC,  Up: Intrinsic Procedures
  
! 8.97 'ERFC_SCALED' -- Error function
  ====================================
  
  _Synopsis_:
!      'RESULT = ERFC_SCALED(X)'
  
  _Description_:
!      'ERFC_SCALED(X)' computes the exponentially-scaled complementary
       error function of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL'.
  
  _Return value_:
!      The return value is of type 'REAL' and of the same kind as X.
  
  _Example_:
            program test_erfc_scaled
--- 11858,11881 ----
  
  File: gfortran.info,  Node: ERFC_SCALED,  Next: ETIME,  Prev: ERFC,  Up: Intrinsic Procedures
  
! 8.97 â€˜ERFC_SCALEDâ€™ -- Error function
  ====================================
  
  _Synopsis_:
!      â€˜RESULT = ERFC_SCALED(X)â€™
  
  _Description_:
!      â€˜ERFC_SCALED(X)â€™ computes the exponentially-scaled complementary
       error function of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™.
  
  _Return value_:
!      The return value is of type â€˜REALâ€™ and of the same kind as X.
  
  _Example_:
            program test_erfc_scaled
*************** _Standard_:
*** 11889,11907 ****
  
  File: gfortran.info,  Node: ETIME,  Next: EVENT_QUERY,  Prev: ERFC_SCALED,  Up: Intrinsic Procedures
  
! 8.98 'ETIME' -- Execution time subroutine (or function)
  =======================================================
  
  _Synopsis_:
!      'CALL ETIME(VALUES, TIME)'.
!      'TIME = ETIME(VALUES)', (not recommended).
  
  _Description_:
!      'ETIME(VALUES, TIME)' returns the number of seconds of runtime
       since the start of the process's execution in TIME.  VALUES returns
!      the user and system components of this time in 'VALUES(1)' and
!      'VALUES(2)' respectively.  TIME is equal to 'VALUES(1) +
!      VALUES(2)'.
  
       On some systems, the underlying timings are represented using types
       with sufficiently small limits that overflows (wrap around) are
--- 11889,11907 ----
  
  File: gfortran.info,  Node: ETIME,  Next: EVENT_QUERY,  Prev: ERFC_SCALED,  Up: Intrinsic Procedures
  
! 8.98 â€˜ETIMEâ€™ -- Execution time subroutine (or function)
  =======================================================
  
  _Synopsis_:
!      â€˜CALL ETIME(VALUES, TIME)â€™.
!      â€˜TIME = ETIME(VALUES)â€™, (not recommended).
  
  _Description_:
!      â€˜ETIME(VALUES, TIME)â€™ returns the number of seconds of runtime
       since the start of the process's execution in TIME.  VALUES returns
!      the user and system components of this time in â€˜VALUES(1)â€™ and
!      â€˜VALUES(2)â€™ respectively.  TIME is equal to â€˜VALUES(1) +
!      VALUES(2)â€™.
  
       On some systems, the underlying timings are represented using types
       with sufficiently small limits that overflows (wrap around) are
*************** _Description_:
*** 11912,11929 ****
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
  
!      VALUES and TIME are 'INTENT(OUT)' and provide the following:
  
!      'VALUES(1)':User time in seconds.
!      'VALUES(2)':System time in seconds.
!      'TIME':     Run time since start in seconds.
  
  _Class_:
       Subroutine, function
  
  _Arguments_:
!      VALUES      The type shall be 'REAL(4), DIMENSION(2)'.
!      TIME        The type shall be 'REAL(4)'.
  
  _Return value_:
       Elapsed time in seconds since the start of program execution.
--- 11912,11929 ----
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
  
!      VALUES and TIME are â€˜INTENT(OUT)â€™ and provide the following:
  
!      â€˜VALUES(1)â€™:User time in seconds.
!      â€˜VALUES(2)â€™:System time in seconds.
!      â€˜TIMEâ€™:     Run time since start in seconds.
  
  _Class_:
       Subroutine, function
  
  _Arguments_:
!      VALUES      The type shall be â€˜REAL(4), DIMENSION(2)â€™.
!      TIME        The type shall be â€˜REAL(4)â€™.
  
  _Return value_:
       Elapsed time in seconds since the start of program execution.
*************** _See also_:
*** 11955,11970 ****
  
  File: gfortran.info,  Node: EVENT_QUERY,  Next: EXECUTE_COMMAND_LINE,  Prev: ETIME,  Up: Intrinsic Procedures
  
! 8.99 'EVENT_QUERY' -- Query whether a coarray event has occurred
  ================================================================
  
  _Synopsis_:
!      'CALL EVENT_QUERY (EVENT, COUNT [, STAT])'
  
  _Description_:
!      'EVENT_QUERY' assigns the number of events to COUNT that have been
       posted to the EVENT variable and not yet been removed by calling
!      'EVENT WAIT'.  When STAT is present and the invocation is
       successful, it is assigned the value 0.  If it is present and the
       invocation fails, it is assigned a positive value and COUNT is
       assigned the value -1.
--- 11955,11970 ----
  
  File: gfortran.info,  Node: EVENT_QUERY,  Next: EXECUTE_COMMAND_LINE,  Prev: ETIME,  Up: Intrinsic Procedures
  
! 8.99 â€˜EVENT_QUERYâ€™ -- Query whether a coarray event has occurred
  ================================================================
  
  _Synopsis_:
!      â€˜CALL EVENT_QUERY (EVENT, COUNT [, STAT])â€™
  
  _Description_:
!      â€˜EVENT_QUERYâ€™ assigns the number of events to COUNT that have been
       posted to the EVENT variable and not yet been removed by calling
!      â€˜EVENT WAITâ€™.  When STAT is present and the invocation is
       successful, it is assigned the value 0.  If it is present and the
       invocation fails, it is assigned a positive value and COUNT is
       assigned the value -1.
*************** _Class_:
*** 11973,11980 ****
       subroutine
  
  _Arguments_:
!      EVENT       (intent(IN)) Scalar of type 'EVENT_TYPE',
!                  defined in 'ISO_FORTRAN_ENV'; shall not be
                   coindexed.
       COUNT       (intent(out))Scalar integer with at least the
                   precision of default integer.
--- 11973,11980 ----
       subroutine
  
  _Arguments_:
!      EVENT       (intent(IN)) Scalar of type â€˜EVENT_TYPEâ€™,
!                  defined in â€˜ISO_FORTRAN_ENVâ€™; shall not be
                   coindexed.
       COUNT       (intent(out))Scalar integer with at least the
                   precision of default integer.
*************** _Standard_:
*** 12000,12049 ****
  
  File: gfortran.info,  Node: EXECUTE_COMMAND_LINE,  Next: EXIT,  Prev: EVENT_QUERY,  Up: Intrinsic Procedures
  
! 8.100 'EXECUTE_COMMAND_LINE' -- Execute a shell command
  =======================================================
  
  _Synopsis_:
!      'CALL EXECUTE_COMMAND_LINE(COMMAND [, WAIT, EXITSTAT, CMDSTAT,
!      CMDMSG ])'
  
  _Description_:
!      'EXECUTE_COMMAND_LINE' runs a shell command, synchronously or
       asynchronously.
  
!      The 'COMMAND' argument is passed to the shell and executed (The
!      shell is 'sh' on Unix systems, and 'cmd.exe' on Windows.).  If
!      'WAIT' is present and has the value false, the execution of the
       command is asynchronous if the system supports it; otherwise, the
!      command is executed synchronously using the C library's 'system'
       call.
  
       The three last arguments allow the user to get status information.
!      After synchronous execution, 'EXITSTAT' contains the integer exit
!      code of the command, as returned by 'system'.  'CMDSTAT' is set to
       zero if the command line was executed (whatever its exit status
!      was).  'CMDMSG' is assigned an error message if an error has
       occurred.
  
!      Note that the 'system' function need not be thread-safe.  It is the
!      responsibility of the user to ensure that 'system' is not called
       concurrently.
  
       For asynchronous execution on supported targets, the POSIX
!      'posix_spawn' or 'fork' functions are used.  Also, a signal handler
!      for the 'SIGCHLD' signal is installed.
  
  _Class_:
       Subroutine
  
  _Arguments_:
!      COMMAND     Shall be a default 'CHARACTER' scalar.
!      WAIT        (Optional) Shall be a default 'LOGICAL' scalar.
!      EXITSTAT    (Optional) Shall be an 'INTEGER' of the default
                   kind.
!      CMDSTAT     (Optional) Shall be an 'INTEGER' of the default
                   kind.
!      CMDMSG      (Optional) Shall be an 'CHARACTER' scalar of the
                   default kind.
  
  _Example_:
--- 12000,12049 ----
  
  File: gfortran.info,  Node: EXECUTE_COMMAND_LINE,  Next: EXIT,  Prev: EVENT_QUERY,  Up: Intrinsic Procedures
  
! 8.100 â€˜EXECUTE_COMMAND_LINEâ€™ -- Execute a shell command
  =======================================================
  
  _Synopsis_:
!      â€˜CALL EXECUTE_COMMAND_LINE(COMMAND [, WAIT, EXITSTAT, CMDSTAT,
!      CMDMSG ])â€™
  
  _Description_:
!      â€˜EXECUTE_COMMAND_LINEâ€™ runs a shell command, synchronously or
       asynchronously.
  
!      The â€˜COMMANDâ€™ argument is passed to the shell and executed (The
!      shell is â€˜shâ€™ on Unix systems, and â€˜cmd.exeâ€™ on Windows.).  If
!      â€˜WAITâ€™ is present and has the value false, the execution of the
       command is asynchronous if the system supports it; otherwise, the
!      command is executed synchronously using the C library's â€˜systemâ€™
       call.
  
       The three last arguments allow the user to get status information.
!      After synchronous execution, â€˜EXITSTATâ€™ contains the integer exit
!      code of the command, as returned by â€˜systemâ€™.  â€˜CMDSTATâ€™ is set to
       zero if the command line was executed (whatever its exit status
!      was).  â€˜CMDMSGâ€™ is assigned an error message if an error has
       occurred.
  
!      Note that the â€˜systemâ€™ function need not be thread-safe.  It is the
!      responsibility of the user to ensure that â€˜systemâ€™ is not called
       concurrently.
  
       For asynchronous execution on supported targets, the POSIX
!      â€˜posix_spawnâ€™ or â€˜forkâ€™ functions are used.  Also, a signal handler
!      for the â€˜SIGCHLDâ€™ signal is installed.
  
  _Class_:
       Subroutine
  
  _Arguments_:
!      COMMAND     Shall be a default â€˜CHARACTERâ€™ scalar.
!      WAIT        (Optional) Shall be a default â€˜LOGICALâ€™ scalar.
!      EXITSTAT    (Optional) Shall be an â€˜INTEGERâ€™ of the default
                   kind.
!      CMDSTAT     (Optional) Shall be an â€˜INTEGERâ€™ of the default
                   kind.
!      CMDMSG      (Optional) Shall be an â€˜CHARACTERâ€™ scalar of the
                   default kind.
  
  _Example_:
*************** _Example_:
*** 12060,12069 ****
  
  _Notes_:
  
!      Because this intrinsic is implemented in terms of the 'system'
       function call, its behavior with respect to signaling is processor
!      dependent.  In particular, on POSIX-compliant systems, the 'SIGINT'
!      and 'SIGQUIT' signals are ignored, and 'SIGCHLD' is blocked.  As
       such, if the parent process is terminated, the child process might
       not be terminated alongside.
  
--- 12060,12069 ----
  
  _Notes_:
  
!      Because this intrinsic is implemented in terms of the â€˜systemâ€™
       function call, its behavior with respect to signaling is processor
!      dependent.  In particular, on POSIX-compliant systems, the â€˜SIGINTâ€™
!      and â€˜SIGQUITâ€™ signals are ignored, and â€˜SIGCHLDâ€™ is blocked.  As
       such, if the parent process is terminated, the child process might
       not be terminated alongside.
  
*************** _See also_:
*** 12076,12089 ****
  
  File: gfortran.info,  Node: EXIT,  Next: EXP,  Prev: EXECUTE_COMMAND_LINE,  Up: Intrinsic Procedures
  
! 8.101 'EXIT' -- Exit the program with status.
  =============================================
  
  _Synopsis_:
!      'CALL EXIT([STATUS])'
  
  _Description_:
!      'EXIT' causes immediate termination of the program with status.  If
       status is omitted it returns the canonical _success_ for the
       system.  All Fortran I/O units are closed.
  
--- 12076,12089 ----
  
  File: gfortran.info,  Node: EXIT,  Next: EXP,  Prev: EXECUTE_COMMAND_LINE,  Up: Intrinsic Procedures
  
! 8.101 â€˜EXITâ€™ -- Exit the program with status.
  =============================================
  
  _Synopsis_:
!      â€˜CALL EXIT([STATUS])â€™
  
  _Description_:
!      â€˜EXITâ€™ causes immediate termination of the program with status.  If
       status is omitted it returns the canonical _success_ for the
       system.  All Fortran I/O units are closed.
  
*************** _Class_:
*** 12091,12100 ****
       Subroutine
  
  _Arguments_:
!      STATUS      Shall be an 'INTEGER' of the default kind.
  
  _Return value_:
!      'STATUS' is passed to the parent process on exit.
  
  _Example_:
            program test_exit
--- 12091,12100 ----
       Subroutine
  
  _Arguments_:
!      STATUS      Shall be an â€˜INTEGERâ€™ of the default kind.
  
  _Return value_:
!      â€˜STATUSâ€™ is passed to the parent process on exit.
  
  _Example_:
            program test_exit
*************** _See also_:
*** 12113,12132 ****
  
  File: gfortran.info,  Node: EXP,  Next: EXPONENT,  Prev: EXIT,  Up: Intrinsic Procedures
  
! 8.102 'EXP' -- Exponential function
  ===================================
  
  _Synopsis_:
!      'RESULT = EXP(X)'
  
  _Description_:
!      'EXP(X)' computes the base e exponential of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL' or 'COMPLEX'.
  
  _Return value_:
       The return value has same type and kind as X.
--- 12113,12132 ----
  
  File: gfortran.info,  Node: EXP,  Next: EXPONENT,  Prev: EXIT,  Up: Intrinsic Procedures
  
! 8.102 â€˜EXPâ€™ -- Exponential function
  ===================================
  
  _Synopsis_:
!      â€˜RESULT = EXP(X)â€™
  
  _Description_:
!      â€˜EXP(X)â€™ computes the base e exponential of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™ or â€˜COMPLEXâ€™.
  
  _Return value_:
       The return value has same type and kind as X.
*************** _Example_:
*** 12140,12150 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'EXP(X)'       'REAL(4) X'       'REAL(4)'      Fortran 77 and later
!      'DEXP(X)'      'REAL(8) X'       'REAL(8)'      Fortran 77 and later
!      'CEXP(X)'      'COMPLEX(4) X'    'COMPLEX(4)'   Fortran 77 and later
!      'ZEXP(X)'      'COMPLEX(8) X'    'COMPLEX(8)'   GNU extension
!      'CDEXP(X)'     'COMPLEX(8) X'    'COMPLEX(8)'   GNU extension
  
  _Standard_:
       Fortran 77 and later, has overloads that are GNU extensions
--- 12140,12150 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜EXP(X)â€™       â€˜REAL(4) Xâ€™       â€˜REAL(4)â€™      Fortran 77 and later
!      â€˜DEXP(X)â€™      â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      Fortran 77 and later
!      â€˜CEXP(X)â€™      â€˜COMPLEX(4) Xâ€™    â€˜COMPLEX(4)â€™   Fortran 77 and later
!      â€˜ZEXP(X)â€™      â€˜COMPLEX(8) Xâ€™    â€˜COMPLEX(8)â€™   GNU extension
!      â€˜CDEXP(X)â€™     â€˜COMPLEX(8) Xâ€™    â€˜COMPLEX(8)â€™   GNU extension
  
  _Standard_:
       Fortran 77 and later, has overloads that are GNU extensions
*************** _Standard_:
*** 12152,12175 ****
  
  File: gfortran.info,  Node: EXPONENT,  Next: EXTENDS_TYPE_OF,  Prev: EXP,  Up: Intrinsic Procedures
  
! 8.103 'EXPONENT' -- Exponent function
  =====================================
  
  _Synopsis_:
!      'RESULT = EXPONENT(X)'
  
  _Description_:
!      'EXPONENT(X)' returns the value of the exponent part of X.  If X is
       zero the value returned is zero.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL'.
  
  _Return value_:
!      The return value is of type default 'INTEGER'.
  
  _Example_:
            program test_exponent
--- 12152,12175 ----
  
  File: gfortran.info,  Node: EXPONENT,  Next: EXTENDS_TYPE_OF,  Prev: EXP,  Up: Intrinsic Procedures
  
! 8.103 â€˜EXPONENTâ€™ -- Exponent function
  =====================================
  
  _Synopsis_:
!      â€˜RESULT = EXPONENT(X)â€™
  
  _Description_:
!      â€˜EXPONENT(X)â€™ returns the value of the exponent part of X.  If X is
       zero the value returned is zero.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™.
  
  _Return value_:
!      The return value is of type default â€˜INTEGERâ€™.
  
  _Example_:
            program test_exponent
*************** _Standard_:
*** 12186,12196 ****
  
  File: gfortran.info,  Node: EXTENDS_TYPE_OF,  Next: FDATE,  Prev: EXPONENT,  Up: Intrinsic Procedures
  
! 8.104 'EXTENDS_TYPE_OF' -- Query dynamic type for extension
  ===========================================================
  
  _Synopsis_:
!      'RESULT = EXTENDS_TYPE_OF(A, MOLD)'
  
  _Description_:
       Query dynamic type for extension.
--- 12186,12196 ----
  
  File: gfortran.info,  Node: EXTENDS_TYPE_OF,  Next: FDATE,  Prev: EXPONENT,  Up: Intrinsic Procedures
  
! 8.104 â€˜EXTENDS_TYPE_OFâ€™ -- Query dynamic type for extension
  ===========================================================
  
  _Synopsis_:
!      â€˜RESULT = EXTENDS_TYPE_OF(A, MOLD)â€™
  
  _Description_:
       Query dynamic type for extension.
*************** _See also_:
*** 12218,12234 ****
  
  File: gfortran.info,  Node: FDATE,  Next: FGET,  Prev: EXTENDS_TYPE_OF,  Up: Intrinsic Procedures
  
! 8.105 'FDATE' -- Get the current time as a string
  =================================================
  
  _Synopsis_:
!      'CALL FDATE(DATE)'.
!      'DATE = FDATE()'.
  
  _Description_:
!      'FDATE(DATE)' returns the current date (using the same format as
!      *note CTIME::) in DATE.  It is equivalent to 'CALL CTIME(DATE,
!      TIME())'.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
--- 12218,12234 ----
  
  File: gfortran.info,  Node: FDATE,  Next: FGET,  Prev: EXTENDS_TYPE_OF,  Up: Intrinsic Procedures
  
! 8.105 â€˜FDATEâ€™ -- Get the current time as a string
  =================================================
  
  _Synopsis_:
!      â€˜CALL FDATE(DATE)â€™.
!      â€˜DATE = FDATE()â€™.
  
  _Description_:
!      â€˜FDATE(DATE)â€™ returns the current date (using the same format as
!      *note CTIME::) in DATE.  It is equivalent to â€˜CALL CTIME(DATE,
!      TIME())â€™.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
*************** _Class_:
*** 12237,12244 ****
       Subroutine, function
  
  _Arguments_:
!      DATE        The type shall be of type 'CHARACTER' of the
!                  default kind.  It is an 'INTENT(OUT)' argument.
                   If the length of this variable is too short for
                   the date and time string to fit completely, it
                   is blank on procedure return.
--- 12237,12244 ----
       Subroutine, function
  
  _Arguments_:
!      DATE        The type shall be of type â€˜CHARACTERâ€™ of the
!                  default kind.  It is an â€˜INTENT(OUT)â€™ argument.
                   If the length of this variable is too short for
                   the date and time string to fit completely, it
                   is blank on procedure return.
*************** _See also_:
*** 12269,12280 ****
  
  File: gfortran.info,  Node: FGET,  Next: FGETC,  Prev: FDATE,  Up: Intrinsic Procedures
  
! 8.106 'FGET' -- Read a single character in stream mode from stdin
  =================================================================
  
  _Synopsis_:
!      'CALL FGET(C [, STATUS])'
!      'STATUS = FGET(C)'
  
  _Description_:
       Read a single character in stream mode from stdin by bypassing
--- 12269,12280 ----
  
  File: gfortran.info,  Node: FGET,  Next: FGETC,  Prev: FDATE,  Up: Intrinsic Procedures
  
! 8.106 â€˜FGETâ€™ -- Read a single character in stream mode from stdin
  =================================================================
  
  _Synopsis_:
!      â€˜CALL FGET(C [, STATUS])â€™
!      â€˜STATUS = FGET(C)â€™
  
  _Description_:
       Read a single character in stream mode from stdin by bypassing
*************** _Description_:
*** 12285,12292 ****
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
  
!      Note that the 'FGET' intrinsic is provided for backwards
!      compatibility with 'g77'.  GNU Fortran provides the Fortran 2003
       Stream facility.  Programmers should consider the use of new stream
       IO feature in new code for future portability.  See also *note
       Fortran 2003 status::.
--- 12285,12292 ----
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
  
!      Note that the â€˜FGETâ€™ intrinsic is provided for backwards
!      compatibility with â€˜g77â€™.  GNU Fortran provides the Fortran 2003
       Stream facility.  Programmers should consider the use of new stream
       IO feature in new code for future portability.  See also *note
       Fortran 2003 status::.
*************** _Class_:
*** 12295,12303 ****
       Subroutine, function
  
  _Arguments_:
!      C           The type shall be 'CHARACTER' and of default
                   kind.
!      STATUS      (Optional) status flag of type 'INTEGER'.
                   Returns 0 on success, -1 on end-of-file, and a
                   system specific positive error code otherwise.
  
--- 12295,12303 ----
       Subroutine, function
  
  _Arguments_:
!      C           The type shall be â€˜CHARACTERâ€™ and of default
                   kind.
!      STATUS      (Optional) status flag of type â€˜INTEGERâ€™.
                   Returns 0 on success, -1 on end-of-file, and a
                   system specific positive error code otherwise.
  
*************** _See also_:
*** 12327,12338 ****
  
  File: gfortran.info,  Node: FGETC,  Next: FINDLOC,  Prev: FGET,  Up: Intrinsic Procedures
  
! 8.107 'FGETC' -- Read a single character in stream mode
  =======================================================
  
  _Synopsis_:
!      'CALL FGETC(UNIT, C [, STATUS])'
!      'STATUS = FGETC(UNIT, C)'
  
  _Description_:
       Read a single character in stream mode by bypassing normal
--- 12327,12338 ----
  
  File: gfortran.info,  Node: FGETC,  Next: FINDLOC,  Prev: FGET,  Up: Intrinsic Procedures
  
! 8.107 â€˜FGETCâ€™ -- Read a single character in stream mode
  =======================================================
  
  _Synopsis_:
!      â€˜CALL FGETC(UNIT, C [, STATUS])â€™
!      â€˜STATUS = FGETC(UNIT, C)â€™
  
  _Description_:
       Read a single character in stream mode by bypassing normal
*************** _Description_:
*** 12343,12350 ****
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
  
!      Note that the 'FGET' intrinsic is provided for backwards
!      compatibility with 'g77'.  GNU Fortran provides the Fortran 2003
       Stream facility.  Programmers should consider the use of new stream
       IO feature in new code for future portability.  See also *note
       Fortran 2003 status::.
--- 12343,12350 ----
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
  
!      Note that the â€˜FGETâ€™ intrinsic is provided for backwards
!      compatibility with â€˜g77â€™.  GNU Fortran provides the Fortran 2003
       Stream facility.  Programmers should consider the use of new stream
       IO feature in new code for future portability.  See also *note
       Fortran 2003 status::.
*************** _Class_:
*** 12353,12362 ****
       Subroutine, function
  
  _Arguments_:
!      UNIT        The type shall be 'INTEGER'.
!      C           The type shall be 'CHARACTER' and of default
                   kind.
!      STATUS      (Optional) status flag of type 'INTEGER'.
                   Returns 0 on success, -1 on end-of-file and a
                   system specific positive error code otherwise.
  
--- 12353,12362 ----
       Subroutine, function
  
  _Arguments_:
!      UNIT        The type shall be â€˜INTEGERâ€™.
!      C           The type shall be â€˜CHARACTERâ€™ and of default
                   kind.
!      STATUS      (Optional) status flag of type â€˜INTEGERâ€™.
                   Returns 0 on success, -1 on end-of-file and a
                   system specific positive error code otherwise.
  
*************** _See also_:
*** 12385,12411 ****
  
  File: gfortran.info,  Node: FINDLOC,  Next: FLOOR,  Prev: FGETC,  Up: Intrinsic Procedures
  
! 8.108 'FINDLOC' -- Search an array for a value
  ==============================================
  
  _Synopsis_:
!      'RESULT = FINDLOC(ARRAY, VALUE, DIM [, MASK] [,KIND]
!      [,BACK])'
!      'RESULT = FINDLOC(ARRAY, VALUE, [, MASK] [,KIND]
!      [,BACK])'
  
  _Description_:
       Determines the location of the element in the array with the value
       given in the VALUE argument, or, if the DIM argument is supplied,
       determines the locations of the elements equal to the VALUE
       argument element along each row of the array in the DIM direction.
!      If MASK is present, only the elements for which MASK is '.TRUE.'
       are considered.  If more than one element in the array has the
       value VALUE, the location returned is that of the first such
       element in array element order if the BACK is not present or if it
!      is '.FALSE.'.  If BACK is true, the location returned is that of
       the last such element.  If the array has zero size, or all of the
!      elements of MASK are '.FALSE.', then the result is an array of
       zeroes.  Similarly, if DIM is supplied and all of the elements of
       MASK along a given row are zero, the result value for that row is
       zero.
--- 12385,12411 ----
  
  File: gfortran.info,  Node: FINDLOC,  Next: FLOOR,  Prev: FGETC,  Up: Intrinsic Procedures
  
! 8.108 â€˜FINDLOCâ€™ -- Search an array for a value
  ==============================================
  
  _Synopsis_:
!      â€˜RESULT = FINDLOC(ARRAY, VALUE, DIM [, MASK] [,KIND]
!      [,BACK])â€™
!      â€˜RESULT = FINDLOC(ARRAY, VALUE, [, MASK] [,KIND]
!      [,BACK])â€™
  
  _Description_:
       Determines the location of the element in the array with the value
       given in the VALUE argument, or, if the DIM argument is supplied,
       determines the locations of the elements equal to the VALUE
       argument element along each row of the array in the DIM direction.
!      If MASK is present, only the elements for which MASK is â€˜.TRUE.â€™
       are considered.  If more than one element in the array has the
       value VALUE, the location returned is that of the first such
       element in array element order if the BACK is not present or if it
!      is â€˜.FALSE.â€™.  If BACK is true, the location returned is that of
       the last such element.  If the array has zero size, or all of the
!      elements of MASK are â€˜.FALSE.â€™, then the result is an array of
       zeroes.  Similarly, if DIM is supplied and all of the elements of
       MASK along a given row are zero, the result value for that row is
       zero.
*************** _Arguments_:
*** 12417,12435 ****
       ARRAY       Shall be an array of intrinsic type.
       VALUE       A scalar of intrinsic type that is in type
                   conformance with ARRAY.
!      DIM         (Optional) Shall be a scalar of type 'INTEGER',
                   with a value between one and the rank of ARRAY,
                   inclusive.  It may not be an optional dummy
                   argument.
!      MASK        (Optional) Shall be of type 'LOGICAL', and
                   conformable with ARRAY.
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
!      BACK        (Optional) A scalar of type 'LOGICAL'.
  
  _Notes_:
!      ARRAY can also be 'UNSIGNED'.
  
  _Return value_:
       If DIM is absent, the result is a rank-one array with a length
--- 12417,12435 ----
       ARRAY       Shall be an array of intrinsic type.
       VALUE       A scalar of intrinsic type that is in type
                   conformance with ARRAY.
!      DIM         (Optional) Shall be a scalar of type â€˜INTEGERâ€™,
                   with a value between one and the rank of ARRAY,
                   inclusive.  It may not be an optional dummy
                   argument.
!      MASK        (Optional) Shall be of type â€˜LOGICALâ€™, and
                   conformable with ARRAY.
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
!      BACK        (Optional) A scalar of type â€˜LOGICALâ€™.
  
  _Notes_:
!      ARRAY can also be â€˜UNSIGNEDâ€™.
  
  _Return value_:
       If DIM is absent, the result is a rank-one array with a length
*************** _See also_:
*** 12450,12476 ****
  
  File: gfortran.info,  Node: FLOOR,  Next: FLUSH,  Prev: FINDLOC,  Up: Intrinsic Procedures
  
! 8.109 'FLOOR' -- Integer floor function
  =======================================
  
  _Synopsis_:
!      'RESULT = FLOOR(A [, KIND])'
  
  _Description_:
!      'FLOOR(A)' returns the greatest integer less than or equal to A.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           The type shall be 'REAL'.
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type 'INTEGER(KIND)' if KIND is present and
!      of default-kind 'INTEGER' otherwise.
  
  _Example_:
            program test_floor
--- 12450,12476 ----
  
  File: gfortran.info,  Node: FLOOR,  Next: FLUSH,  Prev: FINDLOC,  Up: Intrinsic Procedures
  
! 8.109 â€˜FLOORâ€™ -- Integer floor function
  =======================================
  
  _Synopsis_:
!      â€˜RESULT = FLOOR(A [, KIND])â€™
  
  _Description_:
!      â€˜FLOOR(A)â€™ returns the greatest integer less than or equal to A.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           The type shall be â€˜REALâ€™.
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type â€˜INTEGER(KIND)â€™ if KIND is present and
!      of default-kind â€˜INTEGERâ€™ otherwise.
  
  _Example_:
            program test_floor
*************** _See also_:
*** 12490,12500 ****
  
  File: gfortran.info,  Node: FLUSH,  Next: FNUM,  Prev: FLOOR,  Up: Intrinsic Procedures
  
! 8.110 'FLUSH' -- Flush I/O unit(s)
  ==================================
  
  _Synopsis_:
!      'CALL FLUSH(UNIT)'
  
  _Description_:
       Flushes Fortran unit(s) currently open for output.  Without the
--- 12490,12500 ----
  
  File: gfortran.info,  Node: FLUSH,  Next: FNUM,  Prev: FLOOR,  Up: Intrinsic Procedures
  
! 8.110 â€˜FLUSHâ€™ -- Flush I/O unit(s)
  ==================================
  
  _Synopsis_:
!      â€˜CALL FLUSH(UNIT)â€™
  
  _Description_:
       Flushes Fortran unit(s) currently open for output.  Without the
*************** _Class_:
*** 12505,12525 ****
       Subroutine
  
  _Arguments_:
!      UNIT        (Optional) The type shall be 'INTEGER'.
  
  _Notes_:
!      Beginning with the Fortran 2003 standard, there is a 'FLUSH'
!      statement that should be preferred over the 'FLUSH' intrinsic.
  
!      The 'FLUSH' intrinsic and the Fortran 2003 'FLUSH' statement have
       identical effect: they flush the runtime library's I/O buffer so
       that the data becomes visible to other processes.  This does not
       guarantee that the data is committed to disk.
  
       On POSIX systems, you can request that all data is transferred to
!      the storage device by calling the 'fsync' function, with the POSIX
       file descriptor of the I/O unit as argument (retrieved with GNU
!      intrinsic 'FNUM').  The following example shows how:
  
              ! Declare the interface for POSIX fsync function
              interface
--- 12505,12525 ----
       Subroutine
  
  _Arguments_:
!      UNIT        (Optional) The type shall be â€˜INTEGERâ€™.
  
  _Notes_:
!      Beginning with the Fortran 2003 standard, there is a â€˜FLUSHâ€™
!      statement that should be preferred over the â€˜FLUSHâ€™ intrinsic.
  
!      The â€˜FLUSHâ€™ intrinsic and the Fortran 2003 â€˜FLUSHâ€™ statement have
       identical effect: they flush the runtime library's I/O buffer so
       that the data becomes visible to other processes.  This does not
       guarantee that the data is committed to disk.
  
       On POSIX systems, you can request that all data is transferred to
!      the storage device by calling the â€˜fsyncâ€™ function, with the POSIX
       file descriptor of the I/O unit as argument (retrieved with GNU
!      intrinsic â€˜FNUMâ€™).  The following example shows how:
  
              ! Declare the interface for POSIX fsync function
              interface
*************** _Standard_:
*** 12553,12576 ****
  
  File: gfortran.info,  Node: FNUM,  Next: FPUT,  Prev: FLUSH,  Up: Intrinsic Procedures
  
! 8.111 'FNUM' -- File number function
  ====================================
  
  _Synopsis_:
!      'RESULT = FNUM(UNIT)'
  
  _Description_:
!      'FNUM(UNIT)' returns the POSIX file descriptor number corresponding
!      to the open Fortran I/O unit 'UNIT'.
  
  _Class_:
       Function
  
  _Arguments_:
!      UNIT        The type shall be 'INTEGER'.
  
  _Return value_:
!      The return value is of type 'INTEGER'
  
  _Example_:
            program test_fnum
--- 12553,12576 ----
  
  File: gfortran.info,  Node: FNUM,  Next: FPUT,  Prev: FLUSH,  Up: Intrinsic Procedures
  
! 8.111 â€˜FNUMâ€™ -- File number function
  ====================================
  
  _Synopsis_:
!      â€˜RESULT = FNUM(UNIT)â€™
  
  _Description_:
!      â€˜FNUM(UNIT)â€™ returns the POSIX file descriptor number corresponding
!      to the open Fortran I/O unit â€˜UNITâ€™.
  
  _Class_:
       Function
  
  _Arguments_:
!      UNIT        The type shall be â€˜INTEGERâ€™.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™
  
  _Example_:
            program test_fnum
*************** _Standard_:
*** 12587,12598 ****
  
  File: gfortran.info,  Node: FPUT,  Next: FPUTC,  Prev: FNUM,  Up: Intrinsic Procedures
  
! 8.112 'FPUT' -- Write a single character in stream mode to stdout
  =================================================================
  
  _Synopsis_:
!      'CALL FPUT(C [, STATUS])'
!      'STATUS = FPUT(C)'
  
  _Description_:
       Write a single character in stream mode to stdout by bypassing
--- 12587,12598 ----
  
  File: gfortran.info,  Node: FPUT,  Next: FPUTC,  Prev: FNUM,  Up: Intrinsic Procedures
  
! 8.112 â€˜FPUTâ€™ -- Write a single character in stream mode to stdout
  =================================================================
  
  _Synopsis_:
!      â€˜CALL FPUT(C [, STATUS])â€™
!      â€˜STATUS = FPUT(C)â€™
  
  _Description_:
       Write a single character in stream mode to stdout by bypassing
*************** _Description_:
*** 12603,12610 ****
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
  
!      Note that the 'FGET' intrinsic is provided for backwards
!      compatibility with 'g77'.  GNU Fortran provides the Fortran 2003
       Stream facility.  Programmers should consider the use of new stream
       IO feature in new code for future portability.  See also *note
       Fortran 2003 status::.
--- 12603,12610 ----
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
  
!      Note that the â€˜FGETâ€™ intrinsic is provided for backwards
!      compatibility with â€˜g77â€™.  GNU Fortran provides the Fortran 2003
       Stream facility.  Programmers should consider the use of new stream
       IO feature in new code for future portability.  See also *note
       Fortran 2003 status::.
*************** _Class_:
*** 12613,12621 ****
       Subroutine, function
  
  _Arguments_:
!      C           The type shall be 'CHARACTER' and of default
                   kind.
!      STATUS      (Optional) status flag of type 'INTEGER'.
                   Returns 0 on success, -1 on end-of-file and a
                   system specific positive error code otherwise.
  
--- 12613,12621 ----
       Subroutine, function
  
  _Arguments_:
!      C           The type shall be â€˜CHARACTERâ€™ and of default
                   kind.
!      STATUS      (Optional) status flag of type â€˜INTEGERâ€™.
                   Returns 0 on success, -1 on end-of-file and a
                   system specific positive error code otherwise.
  
*************** _See also_:
*** 12639,12650 ****
  
  File: gfortran.info,  Node: FPUTC,  Next: FRACTION,  Prev: FPUT,  Up: Intrinsic Procedures
  
! 8.113 'FPUTC' -- Write a single character in stream mode
  ========================================================
  
  _Synopsis_:
!      'CALL FPUTC(UNIT, C [, STATUS])'
!      'STATUS = FPUTC(UNIT, C)'
  
  _Description_:
       Write a single character in stream mode by bypassing normal
--- 12639,12650 ----
  
  File: gfortran.info,  Node: FPUTC,  Next: FRACTION,  Prev: FPUT,  Up: Intrinsic Procedures
  
! 8.113 â€˜FPUTCâ€™ -- Write a single character in stream mode
  ========================================================
  
  _Synopsis_:
!      â€˜CALL FPUTC(UNIT, C [, STATUS])â€™
!      â€˜STATUS = FPUTC(UNIT, C)â€™
  
  _Description_:
       Write a single character in stream mode by bypassing normal
*************** _Description_:
*** 12655,12662 ****
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
  
!      Note that the 'FGET' intrinsic is provided for backwards
!      compatibility with 'g77'.  GNU Fortran provides the Fortran 2003
       Stream facility.  Programmers should consider the use of new stream
       IO feature in new code for future portability.  See also *note
       Fortran 2003 status::.
--- 12655,12662 ----
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
  
!      Note that the â€˜FGETâ€™ intrinsic is provided for backwards
!      compatibility with â€˜g77â€™.  GNU Fortran provides the Fortran 2003
       Stream facility.  Programmers should consider the use of new stream
       IO feature in new code for future portability.  See also *note
       Fortran 2003 status::.
*************** _Class_:
*** 12665,12674 ****
       Subroutine, function
  
  _Arguments_:
!      UNIT        The type shall be 'INTEGER'.
!      C           The type shall be 'CHARACTER' and of default
                   kind.
!      STATUS      (Optional) status flag of type 'INTEGER'.
                   Returns 0 on success, -1 on end-of-file and a
                   system specific positive error code otherwise.
  
--- 12665,12674 ----
       Subroutine, function
  
  _Arguments_:
!      UNIT        The type shall be â€˜INTEGERâ€™.
!      C           The type shall be â€˜CHARACTERâ€™ and of default
                   kind.
!      STATUS      (Optional) status flag of type â€˜INTEGERâ€™.
                   Returns 0 on success, -1 on end-of-file and a
                   system specific positive error code otherwise.
  
*************** _See also_:
*** 12695,12720 ****
  
  File: gfortran.info,  Node: FRACTION,  Next: FREE,  Prev: FPUTC,  Up: Intrinsic Procedures
  
! 8.114 'FRACTION' -- Fractional part of the model representation
  ===============================================================
  
  _Synopsis_:
!      'Y = FRACTION(X)'
  
  _Description_:
!      'FRACTION(X)' returns the fractional part of the model
!      representation of 'X'.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type of the argument shall be a 'REAL'.
  
  _Return value_:
       The return value is of the same type and kind as the argument.  The
!      fractional part of the model representation of 'X' is returned; it
!      is 'X * RADIX(X)**(-EXPONENT(X))'.
  
  _Example_:
            program test_fraction
--- 12695,12720 ----
  
  File: gfortran.info,  Node: FRACTION,  Next: FREE,  Prev: FPUTC,  Up: Intrinsic Procedures
  
! 8.114 â€˜FRACTIONâ€™ -- Fractional part of the model representation
  ===============================================================
  
  _Synopsis_:
!      â€˜Y = FRACTION(X)â€™
  
  _Description_:
!      â€˜FRACTION(X)â€™ returns the fractional part of the model
!      representation of â€˜Xâ€™.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type of the argument shall be a â€˜REALâ€™.
  
  _Return value_:
       The return value is of the same type and kind as the argument.  The
!      fractional part of the model representation of â€˜Xâ€™ is returned; it
!      is â€˜X * RADIX(X)**(-EXPONENT(X))â€™.
  
  _Example_:
            program test_fraction
*************** _Standard_:
*** 12729,12752 ****
  
  File: gfortran.info,  Node: FREE,  Next: FSEEK,  Prev: FRACTION,  Up: Intrinsic Procedures
  
! 8.115 'FREE' -- Frees memory
  ============================
  
  _Synopsis_:
!      'CALL FREE(PTR)'
  
  _Description_:
!      Frees memory previously allocated by 'MALLOC'.  The 'FREE'
       intrinsic is an extension intended to be used with Cray pointers,
       and is provided in GNU Fortran to allow user to compile legacy
       code.  For new code using Fortran 95 pointers, the memory
!      de-allocation intrinsic is 'DEALLOCATE'.
  
  _Class_:
       Subroutine
  
  _Arguments_:
!      PTR         The type shall be 'INTEGER'.  It represents the
                   location of the memory that should be
                   de-allocated.
  
--- 12729,12752 ----
  
  File: gfortran.info,  Node: FREE,  Next: FSEEK,  Prev: FRACTION,  Up: Intrinsic Procedures
  
! 8.115 â€˜FREEâ€™ -- Frees memory
  ============================
  
  _Synopsis_:
!      â€˜CALL FREE(PTR)â€™
  
  _Description_:
!      Frees memory previously allocated by â€˜MALLOCâ€™.  The â€˜FREEâ€™
       intrinsic is an extension intended to be used with Cray pointers,
       and is provided in GNU Fortran to allow user to compile legacy
       code.  For new code using Fortran 95 pointers, the memory
!      de-allocation intrinsic is â€˜DEALLOCATEâ€™.
  
  _Class_:
       Subroutine
  
  _Arguments_:
!      PTR         The type shall be â€˜INTEGERâ€™.  It represents the
                   location of the memory that should be
                   de-allocated.
  
*************** _Return value_:
*** 12754,12760 ****
       None
  
  _Example_:
!      See 'MALLOC' for an example.
  
  _Standard_:
       GNU extension
--- 12754,12760 ----
       None
  
  _Example_:
!      See â€˜MALLOCâ€™ for an example.
  
  _Standard_:
       GNU extension
*************** _See also_:
*** 12765,12786 ****
  
  File: gfortran.info,  Node: FSEEK,  Next: FSTAT,  Prev: FREE,  Up: Intrinsic Procedures
  
! 8.116 'FSEEK' -- Low level file positioning subroutine
  ======================================================
  
  _Synopsis_:
!      'CALL FSEEK(UNIT, OFFSET, WHENCE[, STATUS])'
  
  _Description_:
       Moves UNIT to the specified OFFSET.  If WHENCE is set to 0, the
!      OFFSET is taken as an absolute value 'SEEK_SET', if set to 1,
!      OFFSET is taken to be relative to the current position 'SEEK_CUR',
!      and if set to 2 relative to the end of the file 'SEEK_END'.  On
       error, STATUS is set to a nonzero value.  If STATUS the seek fails
       silently.
  
       This intrinsic routine is not fully backwards compatible with
!      'g77'.  In 'g77', the 'FSEEK' takes a statement label instead of a
       STATUS variable.  If FSEEK is used in old code, change
              CALL FSEEK(UNIT, OFFSET, WHENCE, *label)
       to
--- 12765,12786 ----
  
  File: gfortran.info,  Node: FSEEK,  Next: FSTAT,  Prev: FREE,  Up: Intrinsic Procedures
  
! 8.116 â€˜FSEEKâ€™ -- Low level file positioning subroutine
  ======================================================
  
  _Synopsis_:
!      â€˜CALL FSEEK(UNIT, OFFSET, WHENCE[, STATUS])â€™
  
  _Description_:
       Moves UNIT to the specified OFFSET.  If WHENCE is set to 0, the
!      OFFSET is taken as an absolute value â€˜SEEK_SETâ€™, if set to 1,
!      OFFSET is taken to be relative to the current position â€˜SEEK_CURâ€™,
!      and if set to 2 relative to the end of the file â€˜SEEK_ENDâ€™.  On
       error, STATUS is set to a nonzero value.  If STATUS the seek fails
       silently.
  
       This intrinsic routine is not fully backwards compatible with
!      â€˜g77â€™.  In â€˜g77â€™, the â€˜FSEEKâ€™ takes a statement label instead of a
       STATUS variable.  If FSEEK is used in old code, change
              CALL FSEEK(UNIT, OFFSET, WHENCE, *label)
       to
*************** _Class_:
*** 12797,12808 ****
       Subroutine
  
  _Arguments_:
!      UNIT        Shall be a scalar of type 'INTEGER'.
!      OFFSET      Shall be a scalar of type 'INTEGER'.
!      WHENCE      Shall be a scalar of type 'INTEGER'.  Its value
                   shall be either 0, 1 or 2.
       STATUS      (Optional) shall be a scalar of type
!                  'INTEGER(4)'.
  
  _Example_:
            PROGRAM test_fseek
--- 12797,12808 ----
       Subroutine
  
  _Arguments_:
!      UNIT        Shall be a scalar of type â€˜INTEGERâ€™.
!      OFFSET      Shall be a scalar of type â€˜INTEGERâ€™.
!      WHENCE      Shall be a scalar of type â€˜INTEGERâ€™.  Its value
                   shall be either 0, 1 or 2.
       STATUS      (Optional) shall be a scalar of type
!                  â€˜INTEGER(4)â€™.
  
  _Example_:
            PROGRAM test_fseek
*************** _See also_:
*** 12835,12852 ****
  
  File: gfortran.info,  Node: FSTAT,  Next: FTELL,  Prev: FSEEK,  Up: Intrinsic Procedures
  
! 8.117 'FSTAT' -- Get file status
  ================================
  
  _Synopsis_:
!      'CALL FSTAT(UNIT, VALUES [, STATUS])'
!      'STATUS = FSTAT(UNIT, VALUES)'
  
  _Description_:
!      'FSTAT' is identical to *note STAT::, except that information about
       an already opened file is obtained.
  
!      The elements in 'VALUES' are the same as described by *note STAT::.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
--- 12835,12852 ----
  
  File: gfortran.info,  Node: FSTAT,  Next: FTELL,  Prev: FSEEK,  Up: Intrinsic Procedures
  
! 8.117 â€˜FSTATâ€™ -- Get file status
  ================================
  
  _Synopsis_:
!      â€˜CALL FSTAT(UNIT, VALUES [, STATUS])â€™
!      â€˜STATUS = FSTAT(UNIT, VALUES)â€™
  
  _Description_:
!      â€˜FSTATâ€™ is identical to *note STAT::, except that information about
       an already opened file is obtained.
  
!      The elements in â€˜VALUESâ€™ are the same as described by *note STAT::.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
*************** _Class_:
*** 12855,12863 ****
       Subroutine, function
  
  _Arguments_:
!      UNIT        An open I/O unit number of type 'INTEGER'.
!      VALUES      The type shall be 'INTEGER(4), DIMENSION(13)'.
!      STATUS      (Optional) status flag of type 'INTEGER(4)'.
                   Returns 0 on success and a system specific error
                   code otherwise.
  
--- 12855,12863 ----
       Subroutine, function
  
  _Arguments_:
!      UNIT        An open I/O unit number of type â€˜INTEGERâ€™.
!      VALUES      The type shall be â€˜INTEGER(4), DIMENSION(13)â€™.
!      STATUS      (Optional) status flag of type â€˜INTEGER(4)â€™.
                   Returns 0 on success and a system specific error
                   code otherwise.
  
*************** _See also_:
*** 12876,12887 ****
  
  File: gfortran.info,  Node: FTELL,  Next: GAMMA,  Prev: FSTAT,  Up: Intrinsic Procedures
  
! 8.118 'FTELL' -- Current stream position
  ========================================
  
  _Synopsis_:
!      'CALL FTELL(UNIT, OFFSET)'
!      'OFFSET = FTELL(UNIT)'
  
  _Description_:
       Retrieves the current position within an open file.
--- 12876,12887 ----
  
  File: gfortran.info,  Node: FTELL,  Next: GAMMA,  Prev: FSTAT,  Up: Intrinsic Procedures
  
! 8.118 â€˜FTELLâ€™ -- Current stream position
  ========================================
  
  _Synopsis_:
!      â€˜CALL FTELL(UNIT, OFFSET)â€™
!      â€˜OFFSET = FTELL(UNIT)â€™
  
  _Description_:
       Retrieves the current position within an open file.
*************** _Class_:
*** 12893,12900 ****
       Subroutine, function
  
  _Arguments_:
!      OFFSET      Shall of type 'INTEGER'.
!      UNIT        Shall of type 'INTEGER'.
  
  _Return value_:
       In either syntax, OFFSET is set to the current offset of unit
--- 12893,12900 ----
       Subroutine, function
  
  _Arguments_:
!      OFFSET      Shall of type â€˜INTEGERâ€™.
!      UNIT        Shall of type â€˜INTEGERâ€™.
  
  _Return value_:
       In either syntax, OFFSET is set to the current offset of unit
*************** _See also_:
*** 12917,12930 ****
  
  File: gfortran.info,  Node: GAMMA,  Next: GERROR,  Prev: FTELL,  Up: Intrinsic Procedures
  
! 8.119 'GAMMA' -- Gamma function
  ===============================
  
  _Synopsis_:
!      'X = GAMMA(X)'
  
  _Description_:
!      'GAMMA(X)' computes Gamma (\Gamma) of X.  For positive, integer
       values of X the Gamma function simplifies to the factorial function
       \Gamma(x)=(x-1)!.
  
--- 12917,12930 ----
  
  File: gfortran.info,  Node: GAMMA,  Next: GERROR,  Prev: FTELL,  Up: Intrinsic Procedures
  
! 8.119 â€˜GAMMAâ€™ -- Gamma function
  ===============================
  
  _Synopsis_:
!      â€˜X = GAMMA(X)â€™
  
  _Description_:
!      â€˜GAMMA(X)â€™ computes Gamma (\Gamma) of X.  For positive, integer
       values of X the Gamma function simplifies to the factorial function
       \Gamma(x)=(x-1)!.
  
*************** _Class_:
*** 12932,12942 ****
       Elemental function
  
  _Arguments_:
!      X           Shall be of type 'REAL' and neither zero nor a
                   negative integer.
  
  _Return value_:
!      The return value is of type 'REAL' of the same kind as X.
  
  _Example_:
            program test_gamma
--- 12932,12942 ----
       Elemental function
  
  _Arguments_:
!      X           Shall be of type â€˜REALâ€™ and neither zero nor a
                   negative integer.
  
  _Return value_:
!      The return value is of type â€˜REALâ€™ of the same kind as X.
  
  _Example_:
            program test_gamma
*************** _Example_:
*** 12947,12953 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'DGAMMA(X)'    'REAL(8) X'       'REAL(8)'      GNU extension
  
  _Standard_:
       Fortran 2008 and later
--- 12947,12953 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜DGAMMA(X)â€™    â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      GNU extension
  
  _Standard_:
       Fortran 2008 and later
*************** _See also_:
*** 12959,12979 ****
  
  File: gfortran.info,  Node: GERROR,  Next: GETARG,  Prev: GAMMA,  Up: Intrinsic Procedures
  
! 8.120 'GERROR' -- Get last system error message
  ===============================================
  
  _Synopsis_:
!      'CALL GERROR(RESULT)'
  
  _Description_:
       Returns the system error message corresponding to the last system
!      error.  This resembles the functionality of 'strerror(3)' in C.
  
  _Class_:
       Subroutine
  
  _Arguments_:
!      RESULT      Shall be of type 'CHARACTER' and of default
                   kind.
  
  _Example_:
--- 12959,12979 ----
  
  File: gfortran.info,  Node: GERROR,  Next: GETARG,  Prev: GAMMA,  Up: Intrinsic Procedures
  
! 8.120 â€˜GERRORâ€™ -- Get last system error message
  ===============================================
  
  _Synopsis_:
!      â€˜CALL GERROR(RESULT)â€™
  
  _Description_:
       Returns the system error message corresponding to the last system
!      error.  This resembles the functionality of â€˜strerror(3)â€™ in C.
  
  _Class_:
       Subroutine
  
  _Arguments_:
!      RESULT      Shall be of type â€˜CHARACTERâ€™ and of default
                   kind.
  
  _Example_:
*************** _See also_:
*** 12993,13003 ****
  
  File: gfortran.info,  Node: GETARG,  Next: GET_COMMAND,  Prev: GERROR,  Up: Intrinsic Procedures
  
! 8.121 'GETARG' -- Get command line arguments
  ============================================
  
  _Synopsis_:
!      'CALL GETARG(POS, VALUE)'
  
  _Description_:
       Retrieve the POS-th argument that was passed on the command line
--- 12993,13003 ----
  
  File: gfortran.info,  Node: GETARG,  Next: GET_COMMAND,  Prev: GERROR,  Up: Intrinsic Procedures
  
! 8.121 â€˜GETARGâ€™ -- Get command line arguments
  ============================================
  
  _Synopsis_:
!      â€˜CALL GETARG(POS, VALUE)â€™
  
  _Description_:
       Retrieve the POS-th argument that was passed on the command line
*************** _Class_:
*** 13012,13024 ****
       Subroutine
  
  _Arguments_:
!      POS         Shall be of type 'INTEGER' and not wider than
                   the default integer kind; POS \geq 0
!      VALUE       Shall be of type 'CHARACTER' and of default
                   kind.
  
  _Return value_:
!      After 'GETARG' returns, the VALUE argument holds the POSth command
       line argument.  If VALUE cannot hold the argument, it is truncated
       to fit the length of VALUE.  If there are less than POS arguments
       specified at the command line, VALUE is filled with blanks.  If POS
--- 13012,13024 ----
       Subroutine
  
  _Arguments_:
!      POS         Shall be of type â€˜INTEGERâ€™ and not wider than
                   the default integer kind; POS \geq 0
!      VALUE       Shall be of type â€˜CHARACTERâ€™ and of default
                   kind.
  
  _Return value_:
!      After â€˜GETARGâ€™ returns, the VALUE argument holds the POSth command
       line argument.  If VALUE cannot hold the argument, it is truncated
       to fit the length of VALUE.  If there are less than POS arguments
       specified at the command line, VALUE is filled with blanks.  If POS
*************** _See also_:
*** 13050,13060 ****
  
  File: gfortran.info,  Node: GET_COMMAND,  Next: GET_COMMAND_ARGUMENT,  Prev: GETARG,  Up: Intrinsic Procedures
  
! 8.122 'GET_COMMAND' -- Get the entire command line
  ==================================================
  
  _Synopsis_:
!      'CALL GET_COMMAND([COMMAND, LENGTH, STATUS])'
  
  _Description_:
       Retrieve the entire command line that was used to invoke the
--- 13050,13060 ----
  
  File: gfortran.info,  Node: GET_COMMAND,  Next: GET_COMMAND_ARGUMENT,  Prev: GETARG,  Up: Intrinsic Procedures
  
! 8.122 â€˜GET_COMMANDâ€™ -- Get the entire command line
  ==================================================
  
  _Synopsis_:
!      â€˜CALL GET_COMMAND([COMMAND, LENGTH, STATUS])â€™
  
  _Description_:
       Retrieve the entire command line that was used to invoke the
*************** _Class_:
*** 13064,13074 ****
       Subroutine
  
  _Arguments_:
!      COMMAND     (Optional) shall be of type 'CHARACTER' and of
                   default kind.
!      LENGTH      (Optional) Shall be of type 'INTEGER' and of
                   default kind.
!      STATUS      (Optional) Shall be of type 'INTEGER' and of
                   default kind.
  
  _Return value_:
--- 13064,13074 ----
       Subroutine
  
  _Arguments_:
!      COMMAND     (Optional) shall be of type â€˜CHARACTERâ€™ and of
                   default kind.
!      LENGTH      (Optional) Shall be of type â€˜INTEGERâ€™ and of
                   default kind.
!      STATUS      (Optional) Shall be of type â€˜INTEGERâ€™ and of
                   default kind.
  
  _Return value_:
*************** _See also_:
*** 13096,13106 ****
  
  File: gfortran.info,  Node: GET_COMMAND_ARGUMENT,  Next: GETCWD,  Prev: GET_COMMAND,  Up: Intrinsic Procedures
  
! 8.123 'GET_COMMAND_ARGUMENT' -- Get command line arguments
  ==========================================================
  
  _Synopsis_:
!      'CALL GET_COMMAND_ARGUMENT(NUMBER [, VALUE, LENGTH, STATUS])'
  
  _Description_:
       Retrieve the NUMBER-th argument that was passed on the command line
--- 13096,13106 ----
  
  File: gfortran.info,  Node: GET_COMMAND_ARGUMENT,  Next: GETCWD,  Prev: GET_COMMAND,  Up: Intrinsic Procedures
  
! 8.123 â€˜GET_COMMAND_ARGUMENTâ€™ -- Get command line arguments
  ==========================================================
  
  _Synopsis_:
!      â€˜CALL GET_COMMAND_ARGUMENT(NUMBER [, VALUE, LENGTH, STATUS])â€™
  
  _Description_:
       Retrieve the NUMBER-th argument that was passed on the command line
*************** _Class_:
*** 13110,13126 ****
       Subroutine
  
  _Arguments_:
!      NUMBER      Shall be a scalar of type 'INTEGER' and of
                   default kind, NUMBER \geq 0
!      VALUE       (Optional) Shall be a scalar of type 'CHARACTER'
                   and of default kind.
!      LENGTH      (Optional) Shall be a scalar of type 'INTEGER'
                   and of default kind.
!      STATUS      (Optional) Shall be a scalar of type 'INTEGER'
                   and of default kind.
  
  _Return value_:
!      After 'GET_COMMAND_ARGUMENT' returns, the VALUE argument holds the
       NUMBER-th command line argument.  If VALUE cannot hold the
       argument, it is truncated to fit the length of VALUE.  If there are
       less than NUMBER arguments specified at the command line, VALUE is
--- 13110,13126 ----
       Subroutine
  
  _Arguments_:
!      NUMBER      Shall be a scalar of type â€˜INTEGERâ€™ and of
                   default kind, NUMBER \geq 0
!      VALUE       (Optional) Shall be a scalar of type â€˜CHARACTERâ€™
                   and of default kind.
!      LENGTH      (Optional) Shall be a scalar of type â€˜INTEGERâ€™
                   and of default kind.
!      STATUS      (Optional) Shall be a scalar of type â€˜INTEGERâ€™
                   and of default kind.
  
  _Return value_:
!      After â€˜GET_COMMAND_ARGUMENTâ€™ returns, the VALUE argument holds the
       NUMBER-th command line argument.  If VALUE cannot hold the
       argument, it is truncated to fit the length of VALUE.  If there are
       less than NUMBER arguments specified at the command line, VALUE is
*************** _See also_:
*** 13156,13167 ****
  
  File: gfortran.info,  Node: GETCWD,  Next: GETENV,  Prev: GET_COMMAND_ARGUMENT,  Up: Intrinsic Procedures
  
! 8.124 'GETCWD' -- Get current working directory
  ===============================================
  
  _Synopsis_:
!      'CALL GETCWD(C [, STATUS])'
!      'STATUS = GETCWD(C)'
  
  _Description_:
       Get current working directory.
--- 13156,13167 ----
  
  File: gfortran.info,  Node: GETCWD,  Next: GETENV,  Prev: GET_COMMAND_ARGUMENT,  Up: Intrinsic Procedures
  
! 8.124 â€˜GETCWDâ€™ -- Get current working directory
  ===============================================
  
  _Synopsis_:
!      â€˜CALL GETCWD(C [, STATUS])â€™
!      â€˜STATUS = GETCWD(C)â€™
  
  _Description_:
       Get current working directory.
*************** _Class_:
*** 13173,13179 ****
       Subroutine, function
  
  _Arguments_:
!      C           The type shall be 'CHARACTER' and of default
                   kind.
       STATUS      (Optional) status flag.  Returns 0 on success, a
                   system specific and nonzero error code
--- 13173,13179 ----
       Subroutine, function
  
  _Arguments_:
!      C           The type shall be â€˜CHARACTERâ€™ and of default
                   kind.
       STATUS      (Optional) status flag.  Returns 0 on success, a
                   system specific and nonzero error code
*************** _See also_:
*** 13195,13205 ****
  
  File: gfortran.info,  Node: GETENV,  Next: GET_ENVIRONMENT_VARIABLE,  Prev: GETCWD,  Up: Intrinsic Procedures
  
! 8.125 'GETENV' -- Get an environmental variable
  ===============================================
  
  _Synopsis_:
!      'CALL GETENV(NAME, VALUE)'
  
  _Description_:
       Get the VALUE of the environmental variable NAME.
--- 13195,13205 ----
  
  File: gfortran.info,  Node: GETENV,  Next: GET_ENVIRONMENT_VARIABLE,  Prev: GETCWD,  Up: Intrinsic Procedures
  
! 8.125 â€˜GETENVâ€™ -- Get an environmental variable
  ===============================================
  
  _Synopsis_:
!      â€˜CALL GETENV(NAME, VALUE)â€™
  
  _Description_:
       Get the VALUE of the environmental variable NAME.
*************** _Description_:
*** 13209,13225 ****
       of the *note GET_ENVIRONMENT_VARIABLE:: intrinsic defined by the
       Fortran 2003 standard.
  
!      Note that 'GETENV' need not be thread-safe.  It is the
       responsibility of the user to ensure that the environment is not
!      being updated concurrently with a call to the 'GETENV' intrinsic.
  
  _Class_:
       Subroutine
  
  _Arguments_:
!      NAME        Shall be of type 'CHARACTER' and of default
                   kind.
!      VALUE       Shall be of type 'CHARACTER' and of default
                   kind.
  
  _Return value_:
--- 13209,13225 ----
       of the *note GET_ENVIRONMENT_VARIABLE:: intrinsic defined by the
       Fortran 2003 standard.
  
!      Note that â€˜GETENVâ€™ need not be thread-safe.  It is the
       responsibility of the user to ensure that the environment is not
!      being updated concurrently with a call to the â€˜GETENVâ€™ intrinsic.
  
  _Class_:
       Subroutine
  
  _Arguments_:
!      NAME        Shall be of type â€˜CHARACTERâ€™ and of default
                   kind.
!      VALUE       Shall be of type â€˜CHARACTERâ€™ and of default
                   kind.
  
  _Return value_:
*************** _See also_:
*** 13243,13276 ****
  
  File: gfortran.info,  Node: GET_ENVIRONMENT_VARIABLE,  Next: GETGID,  Prev: GETENV,  Up: Intrinsic Procedures
  
! 8.126 'GET_ENVIRONMENT_VARIABLE' -- Get an environmental variable
  =================================================================
  
  _Synopsis_:
!      'CALL GET_ENVIRONMENT_VARIABLE(NAME[, VALUE, LENGTH, STATUS,
!      TRIM_NAME)'
  
  _Description_:
       Get the VALUE of the environmental variable NAME.
  
!      Note that 'GET_ENVIRONMENT_VARIABLE' need not be thread-safe.  It
       is the responsibility of the user to ensure that the environment is
       not being updated concurrently with a call to the
!      'GET_ENVIRONMENT_VARIABLE' intrinsic.
  
  _Class_:
       Subroutine
  
  _Arguments_:
!      NAME        Shall be a scalar of type 'CHARACTER' and of
                   default kind.
!      VALUE       (Optional) Shall be a scalar of type 'CHARACTER'
                   and of default kind.
!      LENGTH      (Optional) Shall be a scalar of type 'INTEGER'
                   and of default kind.
!      STATUS      (Optional) Shall be a scalar of type 'INTEGER'
                   and of default kind.
!      TRIM_NAME   (Optional) Shall be a scalar of type 'LOGICAL'
                   and of default kind.
  
  _Return value_:
--- 13243,13276 ----
  
  File: gfortran.info,  Node: GET_ENVIRONMENT_VARIABLE,  Next: GETGID,  Prev: GETENV,  Up: Intrinsic Procedures
  
! 8.126 â€˜GET_ENVIRONMENT_VARIABLEâ€™ -- Get an environmental variable
  =================================================================
  
  _Synopsis_:
!      â€˜CALL GET_ENVIRONMENT_VARIABLE(NAME[, VALUE, LENGTH, STATUS,
!      TRIM_NAME)â€™
  
  _Description_:
       Get the VALUE of the environmental variable NAME.
  
!      Note that â€˜GET_ENVIRONMENT_VARIABLEâ€™ need not be thread-safe.  It
       is the responsibility of the user to ensure that the environment is
       not being updated concurrently with a call to the
!      â€˜GET_ENVIRONMENT_VARIABLEâ€™ intrinsic.
  
  _Class_:
       Subroutine
  
  _Arguments_:
!      NAME        Shall be a scalar of type â€˜CHARACTERâ€™ and of
                   default kind.
!      VALUE       (Optional) Shall be a scalar of type â€˜CHARACTERâ€™
                   and of default kind.
!      LENGTH      (Optional) Shall be a scalar of type â€˜INTEGERâ€™
                   and of default kind.
!      STATUS      (Optional) Shall be a scalar of type â€˜INTEGERâ€™
                   and of default kind.
!      TRIM_NAME   (Optional) Shall be a scalar of type â€˜LOGICALâ€™
                   and of default kind.
  
  _Return value_:
*************** _Return value_:
*** 13282,13288 ****
       variable; it is 1 if the environment variable does not exist and 2
       if the processor does not support environment variables; in all
       other cases STATUS is zero.  If TRIM_NAME is present with the value
!      '.FALSE.', the trailing blanks in NAME are significant; otherwise
       they are not part of the environment variable name.
  
  _Example_:
--- 13282,13288 ----
       variable; it is 1 if the environment variable does not exist and 2
       if the processor does not support environment variables; in all
       other cases STATUS is zero.  If TRIM_NAME is present with the value
!      â€˜.FALSE.â€™, the trailing blanks in NAME are significant; otherwise
       they are not part of the environment variable name.
  
  _Example_:
*************** _Standard_:
*** 13298,13308 ****
  
  File: gfortran.info,  Node: GETGID,  Next: GETLOG,  Prev: GET_ENVIRONMENT_VARIABLE,  Up: Intrinsic Procedures
  
! 8.127 'GETGID' -- Group ID function
  ===================================
  
  _Synopsis_:
!      'RESULT = GETGID()'
  
  _Description_:
       Returns the numerical group ID of the current process.
--- 13298,13308 ----
  
  File: gfortran.info,  Node: GETGID,  Next: GETLOG,  Prev: GET_ENVIRONMENT_VARIABLE,  Up: Intrinsic Procedures
  
! 8.127 â€˜GETGIDâ€™ -- Group ID function
  ===================================
  
  _Synopsis_:
!      â€˜RESULT = GETGID()â€™
  
  _Description_:
       Returns the numerical group ID of the current process.
*************** _Class_:
*** 13311,13320 ****
       Function
  
  _Return value_:
!      The return value of 'GETGID' is an 'INTEGER' of the default kind.
  
  _Example_:
!      See 'GETPID' for an example.
  
  _Standard_:
       GNU extension
--- 13311,13320 ----
       Function
  
  _Return value_:
!      The return value of â€˜GETGIDâ€™ is an â€˜INTEGERâ€™ of the default kind.
  
  _Example_:
!      See â€˜GETPIDâ€™ for an example.
  
  _Standard_:
       GNU extension
*************** _See also_:
*** 13326,13336 ****
  
  File: gfortran.info,  Node: GETLOG,  Next: GETPID,  Prev: GETGID,  Up: Intrinsic Procedures
  
! 8.128 'GETLOG' -- Get login name
  ================================
  
  _Synopsis_:
!      'CALL GETLOG(C)'
  
  _Description_:
       Gets the username under which the program is running.
--- 13326,13336 ----
  
  File: gfortran.info,  Node: GETLOG,  Next: GETPID,  Prev: GETGID,  Up: Intrinsic Procedures
  
! 8.128 â€˜GETLOGâ€™ -- Get login name
  ================================
  
  _Synopsis_:
!      â€˜CALL GETLOG(C)â€™
  
  _Description_:
       Gets the username under which the program is running.
*************** _Class_:
*** 13339,13351 ****
       Subroutine
  
  _Arguments_:
!      C           Shall be of type 'CHARACTER' and of default
                   kind.
  
  _Return value_:
       Stores the current user name in C.  (On systems where POSIX
!      functions 'geteuid' and 'getpwuid' are not available, and the
!      'getlogin' function is not implemented either, this returns a blank
       string.)
  
  _Example_:
--- 13339,13351 ----
       Subroutine
  
  _Arguments_:
!      C           Shall be of type â€˜CHARACTERâ€™ and of default
                   kind.
  
  _Return value_:
       Stores the current user name in C.  (On systems where POSIX
!      functions â€˜geteuidâ€™ and â€˜getpwuidâ€™ are not available, and the
!      â€˜getloginâ€™ function is not implemented either, this returns a blank
       string.)
  
  _Example_:
*************** _See also_:
*** 13364,13374 ****
  
  File: gfortran.info,  Node: GETPID,  Next: GETUID,  Prev: GETLOG,  Up: Intrinsic Procedures
  
! 8.129 'GETPID' -- Process ID function
  =====================================
  
  _Synopsis_:
!      'RESULT = GETPID()'
  
  _Description_:
       Returns the numerical process identifier of the current process.
--- 13364,13374 ----
  
  File: gfortran.info,  Node: GETPID,  Next: GETUID,  Prev: GETLOG,  Up: Intrinsic Procedures
  
! 8.129 â€˜GETPIDâ€™ -- Process ID function
  =====================================
  
  _Synopsis_:
!      â€˜RESULT = GETPID()â€™
  
  _Description_:
       Returns the numerical process identifier of the current process.
*************** _Class_:
*** 13377,13383 ****
       Function
  
  _Return value_:
!      The return value of 'GETPID' is an 'INTEGER' of the default kind.
  
  _Example_:
            program info
--- 13377,13383 ----
       Function
  
  _Return value_:
!      The return value of â€˜GETPIDâ€™ is an â€˜INTEGERâ€™ of the default kind.
  
  _Example_:
            program info
*************** _See also_:
*** 13396,13406 ****
  
  File: gfortran.info,  Node: GETUID,  Next: GMTIME,  Prev: GETPID,  Up: Intrinsic Procedures
  
! 8.130 'GETUID' -- User ID function
  ==================================
  
  _Synopsis_:
!      'RESULT = GETUID()'
  
  _Description_:
       Returns the numerical user ID of the current process.
--- 13396,13406 ----
  
  File: gfortran.info,  Node: GETUID,  Next: GMTIME,  Prev: GETPID,  Up: Intrinsic Procedures
  
! 8.130 â€˜GETUIDâ€™ -- User ID function
  ==================================
  
  _Synopsis_:
!      â€˜RESULT = GETUID()â€™
  
  _Description_:
       Returns the numerical user ID of the current process.
*************** _Class_:
*** 13409,13418 ****
       Function
  
  _Return value_:
!      The return value of 'GETUID' is an 'INTEGER' of the default kind.
  
  _Example_:
!      See 'GETPID' for an example.
  
  _Standard_:
       GNU extension
--- 13409,13418 ----
       Function
  
  _Return value_:
!      The return value of â€˜GETUIDâ€™ is an â€˜INTEGERâ€™ of the default kind.
  
  _Example_:
!      See â€˜GETPIDâ€™ for an example.
  
  _Standard_:
       GNU extension
*************** _See also_:
*** 13424,13440 ****
  
  File: gfortran.info,  Node: GMTIME,  Next: HOSTNM,  Prev: GETUID,  Up: Intrinsic Procedures
  
! 8.131 'GMTIME' -- Convert time to GMT info
  ==========================================
  
  _Synopsis_:
!      'CALL GMTIME(TIME, VALUES)'
  
  _Description_:
       Given a system time value TIME (as provided by the *note TIME::
       intrinsic), fills VALUES with values extracted from it appropriate
       to the UTC time zone (Universal Coordinated Time, also known in
!      some countries as GMT, Greenwich Mean Time), using 'gmtime(3)'.
  
       This intrinsic routine is provided for backwards compatibility with
       GNU Fortran 77.  In new code, programmers should consider the use
--- 13424,13440 ----
  
  File: gfortran.info,  Node: GMTIME,  Next: HOSTNM,  Prev: GETUID,  Up: Intrinsic Procedures
  
! 8.131 â€˜GMTIMEâ€™ -- Convert time to GMT info
  ==========================================
  
  _Synopsis_:
!      â€˜CALL GMTIME(TIME, VALUES)â€™
  
  _Description_:
       Given a system time value TIME (as provided by the *note TIME::
       intrinsic), fills VALUES with values extracted from it appropriate
       to the UTC time zone (Universal Coordinated Time, also known in
!      some countries as GMT, Greenwich Mean Time), using â€˜gmtime(3)â€™.
  
       This intrinsic routine is provided for backwards compatibility with
       GNU Fortran 77.  In new code, programmers should consider the use
*************** _Class_:
*** 13445,13454 ****
       Subroutine
  
  _Arguments_:
!      TIME        An 'INTEGER' scalar expression corresponding to
!                  a system time, with 'INTENT(IN)'.
!      VALUES      A default 'INTEGER' array with 9 elements, with
!                  'INTENT(OUT)'.
  
  _Return value_:
       The elements of VALUES are assigned as follows:
--- 13445,13454 ----
       Subroutine
  
  _Arguments_:
!      TIME        An â€˜INTEGERâ€™ scalar expression corresponding to
!                  a system time, with â€˜INTENT(IN)â€™.
!      VALUES      A default â€˜INTEGERâ€™ array with 9 elements, with
!                  â€˜INTENT(OUT)â€™.
  
  _Return value_:
       The elements of VALUES are assigned as follows:
*************** _See also_:
*** 13478,13489 ****
  
  File: gfortran.info,  Node: HOSTNM,  Next: HUGE,  Prev: GMTIME,  Up: Intrinsic Procedures
  
! 8.132 'HOSTNM' -- Get system host name
  ======================================
  
  _Synopsis_:
!      'CALL HOSTNM(C [, STATUS])'
!      'STATUS = HOSTNM(NAME)'
  
  _Description_:
       Retrieves the host name of the system on which the program is
--- 13478,13489 ----
  
  File: gfortran.info,  Node: HOSTNM,  Next: HUGE,  Prev: GMTIME,  Up: Intrinsic Procedures
  
! 8.132 â€˜HOSTNMâ€™ -- Get system host name
  ======================================
  
  _Synopsis_:
!      â€˜CALL HOSTNM(C [, STATUS])â€™
!      â€˜STATUS = HOSTNM(NAME)â€™
  
  _Description_:
       Retrieves the host name of the system on which the program is
*************** _Class_:
*** 13496,13503 ****
       Subroutine, function
  
  _Arguments_:
!      C           Shall of type 'CHARACTER' and of default kind.
!      STATUS      (Optional) status flag of type 'INTEGER'.
                   Returns 0 on success, or a system specific error
                   code otherwise.
  
--- 13496,13503 ----
       Subroutine, function
  
  _Arguments_:
!      C           Shall of type â€˜CHARACTERâ€™ and of default kind.
!      STATUS      (Optional) status flag of type â€˜INTEGERâ€™.
                   Returns 0 on success, or a system specific error
                   code otherwise.
  
*************** _Standard_:
*** 13511,13532 ****
  
  File: gfortran.info,  Node: HUGE,  Next: HYPOT,  Prev: HOSTNM,  Up: Intrinsic Procedures
  
! 8.133 'HUGE' -- Largest number of a kind
  ========================================
  
  _Synopsis_:
!      'RESULT = HUGE(X)'
  
  _Description_:
!      'HUGE(X)' returns the largest number that is not an infinity in the
!      model of the type of 'X'.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      X           Shall be of type 'REAL', 'INTEGER' or
!                  'UNSIGNED'.
  
  _Return value_:
       The return value is of the same type and kind as X
--- 13511,13532 ----
  
  File: gfortran.info,  Node: HUGE,  Next: HYPOT,  Prev: HOSTNM,  Up: Intrinsic Procedures
  
! 8.133 â€˜HUGEâ€™ -- Largest number of a kind
  ========================================
  
  _Synopsis_:
!      â€˜RESULT = HUGE(X)â€™
  
  _Description_:
!      â€˜HUGE(X)â€™ returns the largest number that is not an infinity in the
!      model of the type of â€˜Xâ€™.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      X           Shall be of type â€˜REALâ€™, â€˜INTEGERâ€™ or
!                  â€˜UNSIGNEDâ€™.
  
  _Return value_:
       The return value is of the same type and kind as X
*************** _Example_:
*** 13538,13564 ****
            end program test_huge_tiny
  
  _Standard_:
!      Fortran 90 and later, extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  
  File: gfortran.info,  Node: HYPOT,  Next: IACHAR,  Prev: HUGE,  Up: Intrinsic Procedures
  
! 8.134 'HYPOT' -- Euclidean distance function
  ============================================
  
  _Synopsis_:
!      'RESULT = HYPOT(X, Y)'
  
  _Description_:
!      'HYPOT(X,Y)' is the Euclidean distance function.  It is equal to
       \sqrt{X^2 + Y^2}, without undue underflow or overflow.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL'.
       Y           The type and kind type parameter shall be the
                   same as X.
  
--- 13538,13564 ----
            end program test_huge_tiny
  
  _Standard_:
!      Fortran 90 and later, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  
  File: gfortran.info,  Node: HYPOT,  Next: IACHAR,  Prev: HUGE,  Up: Intrinsic Procedures
  
! 8.134 â€˜HYPOTâ€™ -- Euclidean distance function
  ============================================
  
  _Synopsis_:
!      â€˜RESULT = HYPOT(X, Y)â€™
  
  _Description_:
!      â€˜HYPOT(X,Y)â€™ is the Euclidean distance function.  It is equal to
       \sqrt{X^2 + Y^2}, without undue underflow or overflow.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™.
       Y           The type and kind type parameter shall be the
                   same as X.
  
*************** _Standard_:
*** 13577,13603 ****
  
  File: gfortran.info,  Node: IACHAR,  Next: IALL,  Prev: HYPOT,  Up: Intrinsic Procedures
  
! 8.135 'IACHAR' -- Code in ASCII collating sequence
  ==================================================
  
  _Synopsis_:
!      'RESULT = IACHAR(C [, KIND])'
  
  _Description_:
!      'IACHAR(C)' returns the code for the ASCII character in the first
!      character position of 'C'.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      C           Shall be a scalar 'CHARACTER', with 'INTENT(IN)'
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type 'INTEGER' and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.
  
  _Example_:
--- 13577,13603 ----
  
  File: gfortran.info,  Node: IACHAR,  Next: IALL,  Prev: HYPOT,  Up: Intrinsic Procedures
  
! 8.135 â€˜IACHARâ€™ -- Code in ASCII collating sequence
  ==================================================
  
  _Synopsis_:
!      â€˜RESULT = IACHAR(C [, KIND])â€™
  
  _Description_:
!      â€˜IACHAR(C)â€™ returns the code for the ASCII character in the first
!      character position of â€˜Câ€™.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      C           Shall be a scalar â€˜CHARACTERâ€™, with â€˜INTENT(IN)â€™
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™ and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.
  
  _Example_:
*************** _See also_:
*** 13621,13647 ****
  
  File: gfortran.info,  Node: IALL,  Next: IAND,  Prev: IACHAR,  Up: Intrinsic Procedures
  
! 8.136 'IALL' -- Bitwise AND of array elements
  =============================================
  
  _Synopsis_:
!      'RESULT = IALL(ARRAY[, MASK])'
!      'RESULT = IALL(ARRAY, DIM[, MASK])'
  
  _Description_:
       Reduces with bitwise AND the elements of ARRAY along dimension DIM
!      if the corresponding element in MASK is 'TRUE'.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      ARRAY       Shall be an array of type 'INTEGER' or
!                  'UNSIGNED'
!      DIM         (Optional) shall be a scalar of type 'INTEGER'
                   with a value in the range from 1 to n, where n
                   equals the rank of ARRAY.
!      MASK        (Optional) shall be of type 'LOGICAL' and either
                   be a scalar or an array of the same shape as
                   ARRAY.
  
--- 13621,13647 ----
  
  File: gfortran.info,  Node: IALL,  Next: IAND,  Prev: IACHAR,  Up: Intrinsic Procedures
  
! 8.136 â€˜IALLâ€™ -- Bitwise AND of array elements
  =============================================
  
  _Synopsis_:
!      â€˜RESULT = IALL(ARRAY[, MASK])â€™
!      â€˜RESULT = IALL(ARRAY, DIM[, MASK])â€™
  
  _Description_:
       Reduces with bitwise AND the elements of ARRAY along dimension DIM
!      if the corresponding element in MASK is â€˜TRUEâ€™.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      ARRAY       Shall be an array of type â€˜INTEGERâ€™ or
!                  â€˜UNSIGNEDâ€™
!      DIM         (Optional) shall be a scalar of type â€˜INTEGERâ€™
                   with a value in the range from 1 to n, where n
                   equals the rank of ARRAY.
!      MASK        (Optional) shall be of type â€˜LOGICALâ€™ and either
                   be a scalar or an array of the same shape as
                   ARRAY.
  
*************** _Example_:
*** 13665,13671 ****
            END PROGRAM
  
  _Standard_:
!      Fortran 2008 and later, extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  _See also_:
--- 13665,13671 ----
            END PROGRAM
  
  _Standard_:
!      Fortran 2008 and later, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  _See also_:
*************** _See also_:
*** 13676,13695 ****
  
  File: gfortran.info,  Node: IAND,  Next: IANY,  Prev: IALL,  Up: Intrinsic Procedures
  
! 8.137 'IAND' -- Bitwise logical and
  ===================================
  
  _Synopsis_:
!      'RESULT = IAND(I, J)'
  
  _Description_:
!      Bitwise logical 'AND'.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be 'INTEGER', 'UNSIGNED' or a
                   boz-literal-constant.
       J           The type shall be the same type as I with the
                   same kind type parameter or a
--- 13676,13695 ----
  
  File: gfortran.info,  Node: IAND,  Next: IANY,  Prev: IALL,  Up: Intrinsic Procedures
  
! 8.137 â€˜IANDâ€™ -- Bitwise logical and
  ===================================
  
  _Synopsis_:
!      â€˜RESULT = IAND(I, J)â€™
  
  _Description_:
!      Bitwise logical â€˜ANDâ€™.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be â€˜INTEGERâ€™, â€˜UNSIGNEDâ€™ or a
                   boz-literal-constant.
       J           The type shall be the same type as I with the
                   same kind type parameter or a
*************** _Arguments_:
*** 13698,13704 ****
  
  _Return value_:
       The return type is with the kind type parameter of the arguments.
!      A boz-literal-constant is converted to an 'INTEGER' or 'UNSIGNED'
       with the kind type parameter of the other argument as-if a call to
       *note INT:: or *note UINT::, respectively, occurred.
  
--- 13698,13704 ----
  
  _Return value_:
       The return type is with the kind type parameter of the arguments.
!      A boz-literal-constant is converted to an â€˜INTEGERâ€™ or â€˜UNSIGNEDâ€™
       with the kind type parameter of the other argument as-if a call to
       *note INT:: or *note UINT::, respectively, occurred.
  
*************** _Example_:
*** 13712,13727 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'IAND(A)'      'INTEGER A'       'INTEGER'      Fortran 90 and later
!      'BIAND(A)'     'INTEGER(1) A'    'INTEGER(1)'   GNU extension
!      'IIAND(A)'     'INTEGER(2) A'    'INTEGER(2)'   GNU extension
!      'JIAND(A)'     'INTEGER(4) A'    'INTEGER(4)'   GNU extension
!      'KIAND(A)'     'INTEGER(8) A'    'INTEGER(8)'   GNU extension
  
  _Standard_:
       Fortran 90 and later, with boz-literal-constant Fortran 2008 and
       later, has overloads that are GNU extensions.  Extension for
!      'UNSIGNED' (*note Unsigned integers::)
  
  _See also_:
       *note IOR::,
--- 13712,13727 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜IAND(A)â€™      â€˜INTEGER Aâ€™       â€˜INTEGERâ€™      Fortran 90 and later
!      â€˜BIAND(A)â€™     â€˜INTEGER(1) Aâ€™    â€˜INTEGER(1)â€™   GNU extension
!      â€˜IIAND(A)â€™     â€˜INTEGER(2) Aâ€™    â€˜INTEGER(2)â€™   GNU extension
!      â€˜JIAND(A)â€™     â€˜INTEGER(4) Aâ€™    â€˜INTEGER(4)â€™   GNU extension
!      â€˜KIAND(A)â€™     â€˜INTEGER(8) Aâ€™    â€˜INTEGER(8)â€™   GNU extension
  
  _Standard_:
       Fortran 90 and later, with boz-literal-constant Fortran 2008 and
       later, has overloads that are GNU extensions.  Extension for
!      â€˜UNSIGNEDâ€™ (*note Unsigned integers::)
  
  _See also_:
       *note IOR::,
*************** _See also_:
*** 13734,13760 ****
  
  File: gfortran.info,  Node: IANY,  Next: IARGC,  Prev: IAND,  Up: Intrinsic Procedures
  
! 8.138 'IANY' -- Bitwise OR of array elements
  ============================================
  
  _Synopsis_:
!      'RESULT = IANY(ARRAY[, MASK])'
!      'RESULT = IANY(ARRAY, DIM[, MASK])'
  
  _Description_:
       Reduces with bitwise OR (inclusive or) the elements of ARRAY along
!      dimension DIM if the corresponding element in MASK is 'TRUE'.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      ARRAY       Shall be an array of type 'INTEGER' or
!                  'UNSIGNED'
!      DIM         (Optional) shall be a scalar of type 'INTEGER'
                   with a value in the range from 1 to n, where n
                   equals the rank of ARRAY.
!      MASK        (Optional) shall be of type 'LOGICAL' and either
                   be a scalar or an array of the same shape as
                   ARRAY.
  
--- 13734,13760 ----
  
  File: gfortran.info,  Node: IANY,  Next: IARGC,  Prev: IAND,  Up: Intrinsic Procedures
  
! 8.138 â€˜IANYâ€™ -- Bitwise OR of array elements
  ============================================
  
  _Synopsis_:
!      â€˜RESULT = IANY(ARRAY[, MASK])â€™
!      â€˜RESULT = IANY(ARRAY, DIM[, MASK])â€™
  
  _Description_:
       Reduces with bitwise OR (inclusive or) the elements of ARRAY along
!      dimension DIM if the corresponding element in MASK is â€˜TRUEâ€™.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      ARRAY       Shall be an array of type â€˜INTEGERâ€™ or
!                  â€˜UNSIGNEDâ€™
!      DIM         (Optional) shall be a scalar of type â€˜INTEGERâ€™
                   with a value in the range from 1 to n, where n
                   equals the rank of ARRAY.
!      MASK        (Optional) shall be of type â€˜LOGICALâ€™ and either
                   be a scalar or an array of the same shape as
                   ARRAY.
  
*************** _Example_:
*** 13778,13784 ****
            END PROGRAM
  
  _Standard_:
!      Fortran 2008 and later, extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  _See also_:
--- 13778,13784 ----
            END PROGRAM
  
  _Standard_:
!      Fortran 2008 and later, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  _See also_:
*************** _See also_:
*** 13789,13802 ****
  
  File: gfortran.info,  Node: IARGC,  Next: IBCLR,  Prev: IANY,  Up: Intrinsic Procedures
  
! 8.139 'IARGC' -- Get the number of command line arguments
  =========================================================
  
  _Synopsis_:
!      'RESULT = IARGC()'
  
  _Description_:
!      'IARGC' returns the number of arguments passed on the command line
       when the containing program was invoked.
  
       This intrinsic routine is provided for backwards compatibility with
--- 13789,13802 ----
  
  File: gfortran.info,  Node: IARGC,  Next: IBCLR,  Prev: IANY,  Up: Intrinsic Procedures
  
! 8.139 â€˜IARGCâ€™ -- Get the number of command line arguments
  =========================================================
  
  _Synopsis_:
!      â€˜RESULT = IARGC()â€™
  
  _Description_:
!      â€˜IARGCâ€™ returns the number of arguments passed on the command line
       when the containing program was invoked.
  
       This intrinsic routine is provided for backwards compatibility with
*************** _Arguments_:
*** 13811,13817 ****
       None
  
  _Return value_:
!      The number of command line arguments, type 'INTEGER(4)'.
  
  _Example_:
       See *note GETARG::
--- 13811,13817 ----
       None
  
  _Return value_:
!      The number of command line arguments, type â€˜INTEGER(4)â€™.
  
  _Example_:
       See *note GETARG::
*************** _See also_:
*** 13830,13851 ****
  
  File: gfortran.info,  Node: IBCLR,  Next: IBITS,  Prev: IARGC,  Up: Intrinsic Procedures
  
! 8.140 'IBCLR' -- Clear bit
  ==========================
  
  _Synopsis_:
!      'RESULT = IBCLR(I, POS)'
  
  _Description_:
!      'IBCLR' returns the value of I with the bit at position POS set to
       zero.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be 'INTEGER' or 'UNSIGNED'.
!      POS         The type shall be 'INTEGER'.
  
  _Return value_:
       The return value is of the same type as I.
--- 13830,13851 ----
  
  File: gfortran.info,  Node: IBCLR,  Next: IBITS,  Prev: IARGC,  Up: Intrinsic Procedures
  
! 8.140 â€˜IBCLRâ€™ -- Clear bit
  ==========================
  
  _Synopsis_:
!      â€˜RESULT = IBCLR(I, POS)â€™
  
  _Description_:
!      â€˜IBCLRâ€™ returns the value of I with the bit at position POS set to
       zero.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be â€˜INTEGERâ€™ or â€˜UNSIGNEDâ€™.
!      POS         The type shall be â€˜INTEGERâ€™.
  
  _Return value_:
       The return value is of the same type as I.
*************** _Return value_:
*** 13853,13867 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'IBCLR(A)'     'INTEGER A'       'INTEGER'      Fortran 90 and later
!      'BBCLR(A)'     'INTEGER(1) A'    'INTEGER(1)'   GNU extension
!      'IIBCLR(A)'    'INTEGER(2) A'    'INTEGER(2)'   GNU extension
!      'JIBCLR(A)'    'INTEGER(4) A'    'INTEGER(4)'   GNU extension
!      'KIBCLR(A)'    'INTEGER(8) A'    'INTEGER(8)'   GNU extension
  
  _Standard_:
       Fortran 90 and later, has overloads that are GNU extensions.
!      Extension for 'UNSIGNED' (*note Unsigned integers::)
  
  _See also_:
       *note IBITS::,
--- 13853,13867 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜IBCLR(A)â€™     â€˜INTEGER Aâ€™       â€˜INTEGERâ€™      Fortran 90 and later
!      â€˜BBCLR(A)â€™     â€˜INTEGER(1) Aâ€™    â€˜INTEGER(1)â€™   GNU extension
!      â€˜IIBCLR(A)â€™    â€˜INTEGER(2) Aâ€™    â€˜INTEGER(2)â€™   GNU extension
!      â€˜JIBCLR(A)â€™    â€˜INTEGER(4) Aâ€™    â€˜INTEGER(4)â€™   GNU extension
!      â€˜KIBCLR(A)â€™    â€˜INTEGER(8) Aâ€™    â€˜INTEGER(8)â€™   GNU extension
  
  _Standard_:
       Fortran 90 and later, has overloads that are GNU extensions.
!      Extension for â€˜UNSIGNEDâ€™ (*note Unsigned integers::)
  
  _See also_:
       *note IBITS::,
*************** _See also_:
*** 13874,13898 ****
  
  File: gfortran.info,  Node: IBITS,  Next: IBSET,  Prev: IBCLR,  Up: Intrinsic Procedures
  
! 8.141 'IBITS' -- Bit extraction
  ===============================
  
  _Synopsis_:
!      'RESULT = IBITS(I, POS, LEN)'
  
  _Description_:
!      'IBITS' extracts a field of length LEN from I, starting from bit
       position POS and extending left for LEN bits.  The result is
       right-justified and the remaining bits are zeroed.  The value of
!      'POS+LEN' must be less than or equal to the value 'BIT_SIZE(I)'.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be 'INTEGER' or 'UNSIGNED'.
!      POS         The type shall be 'INTEGER'.
!      LEN         The type shall be 'INTEGER'.
  
  _Return value_:
       The return value is of type as I.
--- 13874,13898 ----
  
  File: gfortran.info,  Node: IBITS,  Next: IBSET,  Prev: IBCLR,  Up: Intrinsic Procedures
  
! 8.141 â€˜IBITSâ€™ -- Bit extraction
  ===============================
  
  _Synopsis_:
!      â€˜RESULT = IBITS(I, POS, LEN)â€™
  
  _Description_:
!      â€˜IBITSâ€™ extracts a field of length LEN from I, starting from bit
       position POS and extending left for LEN bits.  The result is
       right-justified and the remaining bits are zeroed.  The value of
!      â€˜POS+LENâ€™ must be less than or equal to the value â€˜BIT_SIZE(I)â€™.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be â€˜INTEGERâ€™ or â€˜UNSIGNEDâ€™.
!      POS         The type shall be â€˜INTEGERâ€™.
!      LEN         The type shall be â€˜INTEGERâ€™.
  
  _Return value_:
       The return value is of type as I.
*************** _Return value_:
*** 13900,13914 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'IBITS(A)'     'INTEGER A'       'INTEGER'      Fortran 90 and later
!      'BBITS(A)'     'INTEGER(1) A'    'INTEGER(1)'   GNU extension
!      'IIBITS(A)'    'INTEGER(2) A'    'INTEGER(2)'   GNU extension
!      'JIBITS(A)'    'INTEGER(4) A'    'INTEGER(4)'   GNU extension
!      'KIBITS(A)'    'INTEGER(8) A'    'INTEGER(8)'   GNU extension
  
  _Standard_:
       Fortran 90 and later, has overloads that are GNU extensions.
!      Extension for 'UNSIGNED' (*note Unsigned integers::)
  
  _See also_:
       *note BIT_SIZE::,
--- 13900,13914 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜IBITS(A)â€™     â€˜INTEGER Aâ€™       â€˜INTEGERâ€™      Fortran 90 and later
!      â€˜BBITS(A)â€™     â€˜INTEGER(1) Aâ€™    â€˜INTEGER(1)â€™   GNU extension
!      â€˜IIBITS(A)â€™    â€˜INTEGER(2) Aâ€™    â€˜INTEGER(2)â€™   GNU extension
!      â€˜JIBITS(A)â€™    â€˜INTEGER(4) Aâ€™    â€˜INTEGER(4)â€™   GNU extension
!      â€˜KIBITS(A)â€™    â€˜INTEGER(8) Aâ€™    â€˜INTEGER(8)â€™   GNU extension
  
  _Standard_:
       Fortran 90 and later, has overloads that are GNU extensions.
!      Extension for â€˜UNSIGNEDâ€™ (*note Unsigned integers::)
  
  _See also_:
       *note BIT_SIZE::,
*************** _See also_:
*** 13921,13942 ****
  
  File: gfortran.info,  Node: IBSET,  Next: ICHAR,  Prev: IBITS,  Up: Intrinsic Procedures
  
! 8.142 'IBSET' -- Set bit
  ========================
  
  _Synopsis_:
!      'RESULT = IBSET(I, POS)'
  
  _Description_:
!      'IBSET' returns the value of I with the bit at position POS set to
       one.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be 'INTEGER' or 'UNSIGNED'.
!      POS         The type shall be 'INTEGER'.
  
  _Return value_:
       The return value is of the same type as I.
--- 13921,13942 ----
  
  File: gfortran.info,  Node: IBSET,  Next: ICHAR,  Prev: IBITS,  Up: Intrinsic Procedures
  
! 8.142 â€˜IBSETâ€™ -- Set bit
  ========================
  
  _Synopsis_:
!      â€˜RESULT = IBSET(I, POS)â€™
  
  _Description_:
!      â€˜IBSETâ€™ returns the value of I with the bit at position POS set to
       one.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be â€˜INTEGERâ€™ or â€˜UNSIGNEDâ€™.
!      POS         The type shall be â€˜INTEGERâ€™.
  
  _Return value_:
       The return value is of the same type as I.
*************** _Return value_:
*** 13944,13958 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'IBSET(A)'     'INTEGER A'       'INTEGER'      Fortran 90 and later
!      'BBSET(A)'     'INTEGER(1) A'    'INTEGER(1)'   GNU extension
!      'IIBSET(A)'    'INTEGER(2) A'    'INTEGER(2)'   GNU extension
!      'JIBSET(A)'    'INTEGER(4) A'    'INTEGER(4)'   GNU extension
!      'KIBSET(A)'    'INTEGER(8) A'    'INTEGER(8)'   GNU extension
  
  _Standard_:
       Fortran 90 and later, has overloads that are GNU extensions.
!      Extension for 'UNSIGNED' (*note Unsigned integers::)
  
  _See also_:
       *note IBCLR::,
--- 13944,13958 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜IBSET(A)â€™     â€˜INTEGER Aâ€™       â€˜INTEGERâ€™      Fortran 90 and later
!      â€˜BBSET(A)â€™     â€˜INTEGER(1) Aâ€™    â€˜INTEGER(1)â€™   GNU extension
!      â€˜IIBSET(A)â€™    â€˜INTEGER(2) Aâ€™    â€˜INTEGER(2)â€™   GNU extension
!      â€˜JIBSET(A)â€™    â€˜INTEGER(4) Aâ€™    â€˜INTEGER(4)â€™   GNU extension
!      â€˜KIBSET(A)â€™    â€˜INTEGER(8) Aâ€™    â€˜INTEGER(8)â€™   GNU extension
  
  _Standard_:
       Fortran 90 and later, has overloads that are GNU extensions.
!      Extension for â€˜UNSIGNEDâ€™ (*note Unsigned integers::)
  
  _See also_:
       *note IBCLR::,
*************** _See also_:
*** 13965,13979 ****
  
  File: gfortran.info,  Node: ICHAR,  Next: IDATE,  Prev: IBSET,  Up: Intrinsic Procedures
  
! 8.143 'ICHAR' -- Character-to-integer conversion function
  =========================================================
  
  _Synopsis_:
!      'RESULT = ICHAR(C [, KIND])'
  
  _Description_:
!      'ICHAR(C)' returns the code for the character in the first
!      character position of 'C' in the system's native character set.
       The correspondence between characters and their codes is not
       necessarily the same across different GNU Fortran implementations.
  
--- 13965,13979 ----
  
  File: gfortran.info,  Node: ICHAR,  Next: IDATE,  Prev: IBSET,  Up: Intrinsic Procedures
  
! 8.143 â€˜ICHARâ€™ -- Character-to-integer conversion function
  =========================================================
  
  _Synopsis_:
!      â€˜RESULT = ICHAR(C [, KIND])â€™
  
  _Description_:
!      â€˜ICHAR(C)â€™ returns the code for the character in the first
!      character position of â€˜Câ€™ in the system's native character set.
       The correspondence between characters and their codes is not
       necessarily the same across different GNU Fortran implementations.
  
*************** _Class_:
*** 13981,13993 ****
       Elemental function
  
  _Arguments_:
!      C           Shall be a scalar 'CHARACTER', with 'INTENT(IN)'
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type 'INTEGER' and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.
  
  _Example_:
--- 13981,13993 ----
       Elemental function
  
  _Arguments_:
!      C           Shall be a scalar â€˜CHARACTERâ€™, with â€˜INTENT(IN)â€™
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™ and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.
  
  _Example_:
*************** _Example_:
*** 13999,14010 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'ICHAR(C)'     'CHARACTER C'     'INTEGER(4)'   Fortran 77 and later
  
  _Notes_:
       No intrinsic exists to convert between a numeric value and a
       formatted character string representation - for instance, given the
!      'CHARACTER' value ''154'', obtaining an 'INTEGER' or 'REAL' value
       with the value 154, or vice versa.  Instead, this functionality is
       provided by internal-file I/O, as in the following example:
            program read_val
--- 13999,14010 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜ICHAR(C)â€™     â€˜CHARACTER Câ€™     â€˜INTEGER(4)â€™   Fortran 77 and later
  
  _Notes_:
       No intrinsic exists to convert between a numeric value and a
       formatted character string representation - for instance, given the
!      â€˜CHARACTERâ€™ value â€˜'154'â€™, obtaining an â€˜INTEGERâ€™ or â€˜REALâ€™ value
       with the value 154, or vice versa.  Instead, this functionality is
       provided by internal-file I/O, as in the following example:
            program read_val
*************** _See also_:
*** 14032,14045 ****
  
  File: gfortran.info,  Node: IDATE,  Next: IEOR,  Prev: ICHAR,  Up: Intrinsic Procedures
  
! 8.144 'IDATE' -- Get current local time subroutine (day/month/year)
  ===================================================================
  
  _Synopsis_:
!      'CALL IDATE(VALUES)'
  
  _Description_:
!      'IDATE(VALUES)' Fills VALUES with the numerical values at the
       current local time.  The day (in the range 1-31), month (in the
       range 1-12), and year appear in elements 1, 2, and 3 of VALUES,
       respectively.  The year has four significant digits.
--- 14032,14045 ----
  
  File: gfortran.info,  Node: IDATE,  Next: IEOR,  Prev: ICHAR,  Up: Intrinsic Procedures
  
! 8.144 â€˜IDATEâ€™ -- Get current local time subroutine (day/month/year)
  ===================================================================
  
  _Synopsis_:
!      â€˜CALL IDATE(VALUES)â€™
  
  _Description_:
!      â€˜IDATE(VALUES)â€™ Fills VALUES with the numerical values at the
       current local time.  The day (in the range 1-31), month (in the
       range 1-12), and year appear in elements 1, 2, and 3 of VALUES,
       respectively.  The year has four significant digits.
*************** _Class_:
*** 14053,14059 ****
       Subroutine
  
  _Arguments_:
!      VALUES      The type shall be 'INTEGER, DIMENSION(3)' and
                   the kind shall be the default integer kind.
  
  _Return value_:
--- 14053,14059 ----
       Subroutine
  
  _Arguments_:
!      VALUES      The type shall be â€˜INTEGER, DIMENSION(3)â€™ and
                   the kind shall be the default integer kind.
  
  _Return value_:
*************** _See also_:
*** 14077,14096 ****
  
  File: gfortran.info,  Node: IEOR,  Next: IERRNO,  Prev: IDATE,  Up: Intrinsic Procedures
  
! 8.145 'IEOR' -- Bitwise logical exclusive or
  ============================================
  
  _Synopsis_:
!      'RESULT = IEOR(I, J)'
  
  _Description_:
!      'IEOR' returns the bitwise Boolean exclusive-OR of I and J.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be 'INTEGER', 'UNSIGNED' or a
                   boz-literal-constant.
       J           The type shall be the same type as I with the
                   same kind type parameter or a
--- 14077,14096 ----
  
  File: gfortran.info,  Node: IEOR,  Next: IERRNO,  Prev: IDATE,  Up: Intrinsic Procedures
  
! 8.145 â€˜IEORâ€™ -- Bitwise logical exclusive or
  ============================================
  
  _Synopsis_:
!      â€˜RESULT = IEOR(I, J)â€™
  
  _Description_:
!      â€˜IEORâ€™ returns the bitwise Boolean exclusive-OR of I and J.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be â€˜INTEGERâ€™, â€˜UNSIGNEDâ€™ or a
                   boz-literal-constant.
       J           The type shall be the same type as I with the
                   same kind type parameter or a
*************** _Arguments_:
*** 14099,14121 ****
  
  _Return value_:
       The return type is with the kind type parameter of the arguments.
!      A boz-literal-constant is converted to an 'INTEGER' or 'UNSIGNED'
       with the kind type parameter of the other argument as-if a call to
       *note INT:: or *note UINT::, respectively, occurred.
  
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'IEOR(A)'      'INTEGER A'       'INTEGER'      Fortran 90 and later
!      'BIEOR(A)'     'INTEGER(1) A'    'INTEGER(1)'   GNU extension
!      'IIEOR(A)'     'INTEGER(2) A'    'INTEGER(2)'   GNU extension
!      'JIEOR(A)'     'INTEGER(4) A'    'INTEGER(4)'   GNU extension
!      'KIEOR(A)'     'INTEGER(8) A'    'INTEGER(8)'   GNU extension
  
  _Standard_:
       Fortran 90 and later, with boz-literal-constant Fortran 2008 and
       later, has overloads that are GNU extensions.  Extension for
!      'UNSIGNED' (*note Unsigned integers::)
  
  _See also_:
       *note IOR::,
--- 14099,14121 ----
  
  _Return value_:
       The return type is with the kind type parameter of the arguments.
!      A boz-literal-constant is converted to an â€˜INTEGERâ€™ or â€˜UNSIGNEDâ€™
       with the kind type parameter of the other argument as-if a call to
       *note INT:: or *note UINT::, respectively, occurred.
  
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜IEOR(A)â€™      â€˜INTEGER Aâ€™       â€˜INTEGERâ€™      Fortran 90 and later
!      â€˜BIEOR(A)â€™     â€˜INTEGER(1) Aâ€™    â€˜INTEGER(1)â€™   GNU extension
!      â€˜IIEOR(A)â€™     â€˜INTEGER(2) Aâ€™    â€˜INTEGER(2)â€™   GNU extension
!      â€˜JIEOR(A)â€™     â€˜INTEGER(4) Aâ€™    â€˜INTEGER(4)â€™   GNU extension
!      â€˜KIEOR(A)â€™     â€˜INTEGER(8) Aâ€™    â€˜INTEGER(8)â€™   GNU extension
  
  _Standard_:
       Fortran 90 and later, with boz-literal-constant Fortran 2008 and
       later, has overloads that are GNU extensions.  Extension for
!      â€˜UNSIGNEDâ€™ (*note Unsigned integers::)
  
  _See also_:
       *note IOR::,
*************** _See also_:
*** 14128,14141 ****
  
  File: gfortran.info,  Node: IERRNO,  Next: IMAGE_INDEX,  Prev: IEOR,  Up: Intrinsic Procedures
  
! 8.146 'IERRNO' -- Get the last system error number
  ==================================================
  
  _Synopsis_:
!      'RESULT = IERRNO()'
  
  _Description_:
!      Returns the last system error number, as given by the C 'errno'
       variable.
  
  _Class_:
--- 14128,14141 ----
  
  File: gfortran.info,  Node: IERRNO,  Next: IMAGE_INDEX,  Prev: IEOR,  Up: Intrinsic Procedures
  
! 8.146 â€˜IERRNOâ€™ -- Get the last system error number
  ==================================================
  
  _Synopsis_:
!      â€˜RESULT = IERRNO()â€™
  
  _Description_:
!      Returns the last system error number, as given by the C â€˜errnoâ€™
       variable.
  
  _Class_:
*************** _Arguments_:
*** 14145,14151 ****
       None
  
  _Return value_:
!      The return value is of type 'INTEGER' and of the default integer
       kind.
  
  _Standard_:
--- 14145,14151 ----
       None
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™ and of the default integer
       kind.
  
  _Standard_:
*************** _See also_:
*** 14157,14167 ****
  
  File: gfortran.info,  Node: IMAGE_INDEX,  Next: INDEX intrinsic,  Prev: IERRNO,  Up: Intrinsic Procedures
  
! 8.147 'IMAGE_INDEX' -- Function that converts a cosubscript to an image index
  =============================================================================
  
  _Synopsis_:
!      'RESULT = IMAGE_INDEX(COARRAY, SUB)'
  
  _Description_:
       Returns the image index belonging to a cosubscript.
--- 14157,14167 ----
  
  File: gfortran.info,  Node: IMAGE_INDEX,  Next: INDEX intrinsic,  Prev: IERRNO,  Up: Intrinsic Procedures
  
! 8.147 â€˜IMAGE_INDEXâ€™ -- Function that converts a cosubscript to an image index
  =============================================================================
  
  _Synopsis_:
!      â€˜RESULT = IMAGE_INDEX(COARRAY, SUB)â€™
  
  _Description_:
       Returns the image index belonging to a cosubscript.
*************** _See also_:
*** 14194,14204 ****
  
  File: gfortran.info,  Node: INDEX intrinsic,  Next: INT,  Prev: IMAGE_INDEX,  Up: Intrinsic Procedures
  
! 8.148 'INDEX' -- Position of a substring within a string
  ========================================================
  
  _Synopsis_:
!      'RESULT = INDEX(STRING, SUBSTRING [, BACK [, KIND]])'
  
  _Description_:
       Returns the position of the start of the first occurrence of string
--- 14194,14204 ----
  
  File: gfortran.info,  Node: INDEX intrinsic,  Next: INT,  Prev: IMAGE_INDEX,  Up: Intrinsic Procedures
  
! 8.148 â€˜INDEXâ€™ -- Position of a substring within a string
  ========================================================
  
  _Synopsis_:
!      â€˜RESULT = INDEX(STRING, SUBSTRING [, BACK [, KIND]])â€™
  
  _Description_:
       Returns the position of the start of the first occurrence of string
*************** _Class_:
*** 14211,14233 ****
       Elemental function
  
  _Arguments_:
!      STRING      Shall be a scalar 'CHARACTER', with 'INTENT(IN)'
!      SUBSTRING   Shall be a scalar 'CHARACTER', with 'INTENT(IN)'
!      BACK        (Optional) Shall be a scalar 'LOGICAL', with
!                  'INTENT(IN)'
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type 'INTEGER' and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.
  
  _Specific names_:
       Name                      Argument    Return       Standard
                                             type
       --------------------------------------------------------------------------
!      'INDEX(STRING,SUBSTRING)' 'CHARACTER' 'INTEGER(4)' Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later, with KIND argument Fortran 2003 and later
--- 14211,14233 ----
       Elemental function
  
  _Arguments_:
!      STRING      Shall be a scalar â€˜CHARACTERâ€™, with â€˜INTENT(IN)â€™
!      SUBSTRING   Shall be a scalar â€˜CHARACTERâ€™, with â€˜INTENT(IN)â€™
!      BACK        (Optional) Shall be a scalar â€˜LOGICALâ€™, with
!                  â€˜INTENT(IN)â€™
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™ and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.
  
  _Specific names_:
       Name                      Argument    Return       Standard
                                             type
       --------------------------------------------------------------------------
!      â€˜INDEX(STRING,SUBSTRING)â€™ â€˜CHARACTERâ€™ â€˜INTEGER(4)â€™ Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later, with KIND argument Fortran 2003 and later
*************** _See also_:
*** 14239,14281 ****
  
  File: gfortran.info,  Node: INT,  Next: INT2,  Prev: INDEX intrinsic,  Up: Intrinsic Procedures
  
! 8.149 'INT' -- Convert to integer type
  ======================================
  
  _Synopsis_:
!      'RESULT = INT(A [, KIND))'
  
  _Description_:
       Convert to integer type
  
  _Class_:
!      Elemental function, extension for 'UNSIGNED' (*note Unsigned
       integers::).
  
  _Arguments_:
!      A           Shall be of type 'INTEGER', 'REAL', 'COMPLEX' or
!                  'UNSIGNED' or a boz-literal-constant.
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      These functions return a 'INTEGER' variable or array under the
       following rules:
  
       (A)
!           If A is of type 'INTEGER', 'INT(A) = A'
       (B)
!           If A is of type 'REAL' and |A| < 1, 'INT(A)' equals '0'.  If
!           |A| \geq 1, then 'INT(A)' is the integer whose magnitude is
            the largest integer that does not exceed the magnitude of A
            and whose sign is the same as the sign of A.
       (C)
!           If A is of type 'COMPLEX', rule B is applied to the real part
            of A.
       (D)
!           If A is of type 'UNSIGNED' and 0 \leq A \leq 'HUGE(A)',
!           'INT(A) = A'.  Outside that range, the result is interpreted
            using two's complement.
  
  _Example_:
--- 14239,14281 ----
  
  File: gfortran.info,  Node: INT,  Next: INT2,  Prev: INDEX intrinsic,  Up: Intrinsic Procedures
  
! 8.149 â€˜INTâ€™ -- Convert to integer type
  ======================================
  
  _Synopsis_:
!      â€˜RESULT = INT(A [, KIND))â€™
  
  _Description_:
       Convert to integer type
  
  _Class_:
!      Elemental function, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::).
  
  _Arguments_:
!      A           Shall be of type â€˜INTEGERâ€™, â€˜REALâ€™, â€˜COMPLEXâ€™ or
!                  â€˜UNSIGNEDâ€™ or a boz-literal-constant.
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      These functions return a â€˜INTEGERâ€™ variable or array under the
       following rules:
  
       (A)
!           If A is of type â€˜INTEGERâ€™, â€˜INT(A) = Aâ€™
       (B)
!           If A is of type â€˜REALâ€™ and |A| < 1, â€˜INT(A)â€™ equals â€˜0â€™.  If
!           |A| \geq 1, then â€˜INT(A)â€™ is the integer whose magnitude is
            the largest integer that does not exceed the magnitude of A
            and whose sign is the same as the sign of A.
       (C)
!           If A is of type â€˜COMPLEXâ€™, rule B is applied to the real part
            of A.
       (D)
!           If A is of type â€˜UNSIGNEDâ€™ and 0 \leq A \leq â€˜HUGE(A)â€™,
!           â€˜INT(A) = Aâ€™.  Outside that range, the result is interpreted
            using two's complement.
  
  _Example_:
*************** _Example_:
*** 14289,14297 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'INT(A)'       'REAL(4) A'       'INTEGER'      Fortran 77 and later
!      'IFIX(A)'      'REAL(4) A'       'INTEGER'      Fortran 77 and later
!      'IDINT(A)'     'REAL(8) A'       'INTEGER'      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later, with boz-literal-constant Fortran 2008 and
--- 14289,14297 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜INT(A)â€™       â€˜REAL(4) Aâ€™       â€˜INTEGERâ€™      Fortran 77 and later
!      â€˜IFIX(A)â€™      â€˜REAL(4) Aâ€™       â€˜INTEGERâ€™      Fortran 77 and later
!      â€˜IDINT(A)â€™     â€˜REAL(8) Aâ€™       â€˜INTEGERâ€™      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later, with boz-literal-constant Fortran 2008 and
*************** _Standard_:
*** 14300,14325 ****
  
  File: gfortran.info,  Node: INT2,  Next: INT8,  Prev: INT,  Up: Intrinsic Procedures
  
! 8.150 'INT2' -- Convert to 16-bit integer type
  ==============================================
  
  _Synopsis_:
!      'RESULT = INT2(A)'
  
  _Description_:
!      Convert to a 'KIND=2' integer type.  This is equivalent to the
!      standard 'INT' intrinsic with an optional argument of 'KIND=2', and
       is only included for backwards compatibility.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           Shall be of type 'INTEGER', 'REAL', or
!                  'COMPLEX'.
  
  _Return value_:
!      The return value is a 'INTEGER(2)' variable.
  
  _Standard_:
       GNU extension
--- 14300,14325 ----
  
  File: gfortran.info,  Node: INT2,  Next: INT8,  Prev: INT,  Up: Intrinsic Procedures
  
! 8.150 â€˜INT2â€™ -- Convert to 16-bit integer type
  ==============================================
  
  _Synopsis_:
!      â€˜RESULT = INT2(A)â€™
  
  _Description_:
!      Convert to a â€˜KIND=2â€™ integer type.  This is equivalent to the
!      standard â€˜INTâ€™ intrinsic with an optional argument of â€˜KIND=2â€™, and
       is only included for backwards compatibility.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           Shall be of type â€˜INTEGERâ€™, â€˜REALâ€™, or
!                  â€˜COMPLEXâ€™.
  
  _Return value_:
!      The return value is a â€˜INTEGER(2)â€™ variable.
  
  _Standard_:
       GNU extension
*************** _See also_:
*** 14331,14356 ****
  
  File: gfortran.info,  Node: INT8,  Next: IOR,  Prev: INT2,  Up: Intrinsic Procedures
  
! 8.151 'INT8' -- Convert to 64-bit integer type
  ==============================================
  
  _Synopsis_:
!      'RESULT = INT8(A)'
  
  _Description_:
!      Convert to a 'KIND=8' integer type.  This is equivalent to the
!      standard 'INT' intrinsic with an optional argument of 'KIND=8', and
       is only included for backwards compatibility.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           Shall be of type 'INTEGER', 'REAL', or
!                  'COMPLEX'.
  
  _Return value_:
!      The return value is a 'INTEGER(8)' variable.
  
  _Standard_:
       GNU extension
--- 14331,14356 ----
  
  File: gfortran.info,  Node: INT8,  Next: IOR,  Prev: INT2,  Up: Intrinsic Procedures
  
! 8.151 â€˜INT8â€™ -- Convert to 64-bit integer type
  ==============================================
  
  _Synopsis_:
!      â€˜RESULT = INT8(A)â€™
  
  _Description_:
!      Convert to a â€˜KIND=8â€™ integer type.  This is equivalent to the
!      standard â€˜INTâ€™ intrinsic with an optional argument of â€˜KIND=8â€™, and
       is only included for backwards compatibility.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           Shall be of type â€˜INTEGERâ€™, â€˜REALâ€™, or
!                  â€˜COMPLEXâ€™.
  
  _Return value_:
!      The return value is a â€˜INTEGER(8)â€™ variable.
  
  _Standard_:
       GNU extension
*************** _See also_:
*** 14362,14381 ****
  
  File: gfortran.info,  Node: IOR,  Next: IPARITY,  Prev: INT8,  Up: Intrinsic Procedures
  
! 8.152 'IOR' -- Bitwise logical or
  =================================
  
  _Synopsis_:
!      'RESULT = IOR(I, J)'
  
  _Description_:
!      'IOR' returns the bitwise Boolean inclusive-OR of I and J.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be 'INTEGER', 'UNSIGNED' or a
                   boz-literal-constant.
       J           The type shall be the same type as I with the
                   same kind type parameter or a
--- 14362,14381 ----
  
  File: gfortran.info,  Node: IOR,  Next: IPARITY,  Prev: INT8,  Up: Intrinsic Procedures
  
! 8.152 â€˜IORâ€™ -- Bitwise logical or
  =================================
  
  _Synopsis_:
!      â€˜RESULT = IOR(I, J)â€™
  
  _Description_:
!      â€˜IORâ€™ returns the bitwise Boolean inclusive-OR of I and J.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be â€˜INTEGERâ€™, â€˜UNSIGNEDâ€™ or a
                   boz-literal-constant.
       J           The type shall be the same type as I with the
                   same kind type parameter or a
*************** _Arguments_:
*** 14383,14406 ****
                   boz-literal-constants.
  
  _Return value_:
!      The return type is 'INTEGER' with the kind type parameter of the
!      arguments.  A boz-literal-constant is converted to an 'INTEGER' or
!      'UNSIGNED' with the kind type parameter of the other argument as-if
       a call to *note INT:: or *note UINT::, respectively, occurred.
  
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'IOR(A)'       'INTEGER A'       'INTEGER'      Fortran 90 and later
!      'BIOR(A)'      'INTEGER(1) A'    'INTEGER(1)'   GNU extension
!      'IIOR(A)'      'INTEGER(2) A'    'INTEGER(2)'   GNU extension
!      'JIOR(A)'      'INTEGER(4) A'    'INTEGER(4)'   GNU extension
!      'KIOR(A)'      'INTEGER(8) A'    'INTEGER(8)'   GNU extension
  
  _Standard_:
       Fortran 90 and later, with boz-literal-constant Fortran 2008 and
       later, has overloads that are GNU extensions.  Extension for
!      'UNSIGNED' (*note Unsigned integers::)
  
  _See also_:
       *note IEOR::,
--- 14383,14406 ----
                   boz-literal-constants.
  
  _Return value_:
!      The return type is â€˜INTEGERâ€™ with the kind type parameter of the
!      arguments.  A boz-literal-constant is converted to an â€˜INTEGERâ€™ or
!      â€˜UNSIGNEDâ€™ with the kind type parameter of the other argument as-if
       a call to *note INT:: or *note UINT::, respectively, occurred.
  
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜IOR(A)â€™       â€˜INTEGER Aâ€™       â€˜INTEGERâ€™      Fortran 90 and later
!      â€˜BIOR(A)â€™      â€˜INTEGER(1) Aâ€™    â€˜INTEGER(1)â€™   GNU extension
!      â€˜IIOR(A)â€™      â€˜INTEGER(2) Aâ€™    â€˜INTEGER(2)â€™   GNU extension
!      â€˜JIOR(A)â€™      â€˜INTEGER(4) Aâ€™    â€˜INTEGER(4)â€™   GNU extension
!      â€˜KIOR(A)â€™      â€˜INTEGER(8) Aâ€™    â€˜INTEGER(8)â€™   GNU extension
  
  _Standard_:
       Fortran 90 and later, with boz-literal-constant Fortran 2008 and
       later, has overloads that are GNU extensions.  Extension for
!      â€˜UNSIGNEDâ€™ (*note Unsigned integers::)
  
  _See also_:
       *note IEOR::,
*************** _See also_:
*** 14413,14439 ****
  
  File: gfortran.info,  Node: IPARITY,  Next: IRAND,  Prev: IOR,  Up: Intrinsic Procedures
  
! 8.153 'IPARITY' -- Bitwise XOR of array elements
  ================================================
  
  _Synopsis_:
!      'RESULT = IPARITY(ARRAY[, MASK])'
!      'RESULT = IPARITY(ARRAY, DIM[, MASK])'
  
  _Description_:
       Reduces with bitwise XOR (exclusive or) the elements of ARRAY along
!      dimension DIM if the corresponding element in MASK is 'TRUE'.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      ARRAY       Shall be an array of type 'INTEGER' or
!                  'UNSIGNED'.
!      DIM         (Optional) shall be a scalar of type 'INTEGER'
                   with a value in the range from 1 to n, where n
                   equals the rank of ARRAY.
!      MASK        (Optional) shall be of type 'LOGICAL' and either
                   be a scalar or an array of the same shape as
                   ARRAY.
  
--- 14413,14439 ----
  
  File: gfortran.info,  Node: IPARITY,  Next: IRAND,  Prev: IOR,  Up: Intrinsic Procedures
  
! 8.153 â€˜IPARITYâ€™ -- Bitwise XOR of array elements
  ================================================
  
  _Synopsis_:
!      â€˜RESULT = IPARITY(ARRAY[, MASK])â€™
!      â€˜RESULT = IPARITY(ARRAY, DIM[, MASK])â€™
  
  _Description_:
       Reduces with bitwise XOR (exclusive or) the elements of ARRAY along
!      dimension DIM if the corresponding element in MASK is â€˜TRUEâ€™.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      ARRAY       Shall be an array of type â€˜INTEGERâ€™ or
!                  â€˜UNSIGNEDâ€™.
!      DIM         (Optional) shall be a scalar of type â€˜INTEGERâ€™
                   with a value in the range from 1 to n, where n
                   equals the rank of ARRAY.
!      MASK        (Optional) shall be of type â€˜LOGICALâ€™ and either
                   be a scalar or an array of the same shape as
                   ARRAY.
  
*************** _Example_:
*** 14457,14463 ****
            END PROGRAM
  
  _Standard_:
!      Fortran 2008 and later.  Extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  _See also_:
--- 14457,14463 ----
            END PROGRAM
  
  _Standard_:
!      Fortran 2008 and later.  Extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  _See also_:
*************** _See also_:
*** 14469,14501 ****
  
  File: gfortran.info,  Node: IRAND,  Next: IS_CONTIGUOUS,  Prev: IPARITY,  Up: Intrinsic Procedures
  
! 8.154 'IRAND' -- Integer pseudo-random number
  =============================================
  
  _Synopsis_:
!      'RESULT = IRAND(I)'
  
  _Description_:
!      'IRAND(FLAG)' returns a pseudo-random number from a uniform
       distribution between 0 and a system-dependent limit (which is in
       most cases 2147483647).  If FLAG is 0, the next number in the
       current sequence is returned; if FLAG is 1, the generator is
!      restarted by 'CALL SRAND(0)'; if FLAG has any other value, it is
!      used as a new seed with 'SRAND'.
  
       This intrinsic routine is provided for backwards compatibility with
       GNU Fortran 77.  It implements a simple modulo generator as
!      provided by 'g77'.  For new code, one should consider the use of
       *note RANDOM_NUMBER:: as it implements a superior algorithm.
  
  _Class_:
       Function
  
  _Arguments_:
!      I           Shall be a scalar 'INTEGER' of kind 4.
  
  _Return value_:
!      The return value is of 'INTEGER(kind=4)' type.
  
  _Example_:
            program test_irand
--- 14469,14501 ----
  
  File: gfortran.info,  Node: IRAND,  Next: IS_CONTIGUOUS,  Prev: IPARITY,  Up: Intrinsic Procedures
  
! 8.154 â€˜IRANDâ€™ -- Integer pseudo-random number
  =============================================
  
  _Synopsis_:
!      â€˜RESULT = IRAND(I)â€™
  
  _Description_:
!      â€˜IRAND(FLAG)â€™ returns a pseudo-random number from a uniform
       distribution between 0 and a system-dependent limit (which is in
       most cases 2147483647).  If FLAG is 0, the next number in the
       current sequence is returned; if FLAG is 1, the generator is
!      restarted by â€˜CALL SRAND(0)â€™; if FLAG has any other value, it is
!      used as a new seed with â€˜SRANDâ€™.
  
       This intrinsic routine is provided for backwards compatibility with
       GNU Fortran 77.  It implements a simple modulo generator as
!      provided by â€˜g77â€™.  For new code, one should consider the use of
       *note RANDOM_NUMBER:: as it implements a superior algorithm.
  
  _Class_:
       Function
  
  _Arguments_:
!      I           Shall be a scalar â€˜INTEGERâ€™ of kind 4.
  
  _Return value_:
!      The return value is of â€˜INTEGER(kind=4)â€™ type.
  
  _Example_:
            program test_irand
*************** _Standard_:
*** 14512,14525 ****
  
  File: gfortran.info,  Node: IS_CONTIGUOUS,  Next: IS_IOSTAT_END,  Prev: IRAND,  Up: Intrinsic Procedures
  
! 8.155 'IS_CONTIGUOUS' -- Test whether an array is contiguous
  ============================================================
  
  _Synopsis_:
!      'RESULT = IS_CONTIGUOUS(ARRAY)'
  
  _Description_:
!      'IS_CONTIGUOUS' tests whether an array is contiguous.
  
  _Class_:
       Inquiry function
--- 14512,14525 ----
  
  File: gfortran.info,  Node: IS_CONTIGUOUS,  Next: IS_IOSTAT_END,  Prev: IRAND,  Up: Intrinsic Procedures
  
! 8.155 â€˜IS_CONTIGUOUSâ€™ -- Test whether an array is contiguous
  ============================================================
  
  _Synopsis_:
!      â€˜RESULT = IS_CONTIGUOUS(ARRAY)â€™
  
  _Description_:
!      â€˜IS_CONTIGUOUSâ€™ tests whether an array is contiguous.
  
  _Class_:
       Inquiry function
*************** _Arguments_:
*** 14528,14534 ****
       ARRAY       Shall be an array of any type.
  
  _Return value_:
!      Returns a 'LOGICAL' of the default kind, which is '.TRUE.' if ARRAY
       is contiguous and false otherwise.
  
  _Example_:
--- 14528,14534 ----
       ARRAY       Shall be an array of any type.
  
  _Return value_:
!      Returns a â€˜LOGICALâ€™ of the default kind, which is â€˜.TRUE.â€™ if ARRAY
       is contiguous and false otherwise.
  
  _Example_:
*************** _Standard_:
*** 14554,14581 ****
  
  File: gfortran.info,  Node: IS_IOSTAT_END,  Next: IS_IOSTAT_EOR,  Prev: IS_CONTIGUOUS,  Up: Intrinsic Procedures
  
! 8.156 'IS_IOSTAT_END' -- Test for end-of-file value
  ===================================================
  
  _Synopsis_:
!      'RESULT = IS_IOSTAT_END(I)'
  
  _Description_:
!      'IS_IOSTAT_END' tests whether an variable has the value of the I/O
       status "end of file".  The function is equivalent to comparing the
!      variable with the 'IOSTAT_END' parameter of the intrinsic module
!      'ISO_FORTRAN_ENV'.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           Shall be of the type 'INTEGER'.
  
  _Return value_:
!      Returns a 'LOGICAL' of the default kind, which is '.TRUE.' if I has
!      the value that indicates an end of file condition for 'IOSTAT='
!      specifiers, and is '.FALSE.' otherwise.
  
  _Example_:
            PROGRAM iostat
--- 14554,14581 ----
  
  File: gfortran.info,  Node: IS_IOSTAT_END,  Next: IS_IOSTAT_EOR,  Prev: IS_CONTIGUOUS,  Up: Intrinsic Procedures
  
! 8.156 â€˜IS_IOSTAT_ENDâ€™ -- Test for end-of-file value
  ===================================================
  
  _Synopsis_:
!      â€˜RESULT = IS_IOSTAT_END(I)â€™
  
  _Description_:
!      â€˜IS_IOSTAT_ENDâ€™ tests whether an variable has the value of the I/O
       status "end of file".  The function is equivalent to comparing the
!      variable with the â€˜IOSTAT_ENDâ€™ parameter of the intrinsic module
!      â€˜ISO_FORTRAN_ENVâ€™.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           Shall be of the type â€˜INTEGERâ€™.
  
  _Return value_:
!      Returns a â€˜LOGICALâ€™ of the default kind, which is â€˜.TRUE.â€™ if I has
!      the value that indicates an end of file condition for â€˜IOSTAT=â€™
!      specifiers, and is â€˜.FALSE.â€™ otherwise.
  
  _Example_:
            PROGRAM iostat
*************** _Standard_:
*** 14592,14619 ****
  
  File: gfortran.info,  Node: IS_IOSTAT_EOR,  Next: ISATTY,  Prev: IS_IOSTAT_END,  Up: Intrinsic Procedures
  
! 8.157 'IS_IOSTAT_EOR' -- Test for end-of-record value
  =====================================================
  
  _Synopsis_:
!      'RESULT = IS_IOSTAT_EOR(I)'
  
  _Description_:
!      'IS_IOSTAT_EOR' tests whether an variable has the value of the I/O
       status "end of record".  The function is equivalent to comparing
!      the variable with the 'IOSTAT_EOR' parameter of the intrinsic
!      module 'ISO_FORTRAN_ENV'.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           Shall be of the type 'INTEGER'.
  
  _Return value_:
!      Returns a 'LOGICAL' of the default kind, which is '.TRUE.' if I has
!      the value that indicates an end of file condition for 'IOSTAT='
!      specifiers, and is '.FALSE.' otherwise.
  
  _Example_:
            PROGRAM iostat
--- 14592,14619 ----
  
  File: gfortran.info,  Node: IS_IOSTAT_EOR,  Next: ISATTY,  Prev: IS_IOSTAT_END,  Up: Intrinsic Procedures
  
! 8.157 â€˜IS_IOSTAT_EORâ€™ -- Test for end-of-record value
  =====================================================
  
  _Synopsis_:
!      â€˜RESULT = IS_IOSTAT_EOR(I)â€™
  
  _Description_:
!      â€˜IS_IOSTAT_EORâ€™ tests whether an variable has the value of the I/O
       status "end of record".  The function is equivalent to comparing
!      the variable with the â€˜IOSTAT_EORâ€™ parameter of the intrinsic
!      module â€˜ISO_FORTRAN_ENVâ€™.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           Shall be of the type â€˜INTEGERâ€™.
  
  _Return value_:
!      Returns a â€˜LOGICALâ€™ of the default kind, which is â€˜.TRUE.â€™ if I has
!      the value that indicates an end of file condition for â€˜IOSTAT=â€™
!      specifiers, and is â€˜.FALSE.â€™ otherwise.
  
  _Example_:
            PROGRAM iostat
*************** _Standard_:
*** 14630,14640 ****
  
  File: gfortran.info,  Node: ISATTY,  Next: ISHFT,  Prev: IS_IOSTAT_EOR,  Up: Intrinsic Procedures
  
! 8.158 'ISATTY' -- Whether a unit is a terminal device
  =====================================================
  
  _Synopsis_:
!      'RESULT = ISATTY(UNIT)'
  
  _Description_:
       Determine whether a unit is connected to a terminal device.
--- 14630,14640 ----
  
  File: gfortran.info,  Node: ISATTY,  Next: ISHFT,  Prev: IS_IOSTAT_EOR,  Up: Intrinsic Procedures
  
! 8.158 â€˜ISATTYâ€™ -- Whether a unit is a terminal device
  =====================================================
  
  _Synopsis_:
!      â€˜RESULT = ISATTY(UNIT)â€™
  
  _Description_:
       Determine whether a unit is connected to a terminal device.
*************** _Class_:
*** 14643,14653 ****
       Function
  
  _Arguments_:
!      UNIT        Shall be a scalar 'INTEGER'.
  
  _Return value_:
!      Returns '.TRUE.' if the UNIT is connected to a terminal device,
!      '.FALSE.' otherwise.
  
  _Example_:
            PROGRAM test_isatty
--- 14643,14653 ----
       Function
  
  _Arguments_:
!      UNIT        Shall be a scalar â€˜INTEGERâ€™.
  
  _Return value_:
!      Returns â€˜.TRUE.â€™ if the UNIT is connected to a terminal device,
!      â€˜.FALSE.â€™ otherwise.
  
  _Example_:
            PROGRAM test_isatty
*************** _See also_:
*** 14666,14683 ****
  
  File: gfortran.info,  Node: ISHFT,  Next: ISHFTC,  Prev: ISATTY,  Up: Intrinsic Procedures
  
! 8.159 'ISHFT' -- Shift bits
  ===========================
  
  _Synopsis_:
!      'RESULT = ISHFT(I, SHIFT)'
  
  _Description_:
!      'ISHFT' returns a value corresponding to I with all of the bits
       shifted SHIFT places.  A value of SHIFT greater than zero
       corresponds to a left shift, a value of zero corresponds to no
       shift, and a value less than zero corresponds to a right shift.  If
!      the absolute value of SHIFT is greater than 'BIT_SIZE(I)', the
       value is undefined.  Bits shifted out from the left end or right
       end are lost; zeros are shifted in from the opposite end.
  
--- 14666,14683 ----
  
  File: gfortran.info,  Node: ISHFT,  Next: ISHFTC,  Prev: ISATTY,  Up: Intrinsic Procedures
  
! 8.159 â€˜ISHFTâ€™ -- Shift bits
  ===========================
  
  _Synopsis_:
!      â€˜RESULT = ISHFT(I, SHIFT)â€™
  
  _Description_:
!      â€˜ISHFTâ€™ returns a value corresponding to I with all of the bits
       shifted SHIFT places.  A value of SHIFT greater than zero
       corresponds to a left shift, a value of zero corresponds to no
       shift, and a value less than zero corresponds to a right shift.  If
!      the absolute value of SHIFT is greater than â€˜BIT_SIZE(I)â€™, the
       value is undefined.  Bits shifted out from the left end or right
       end are lost; zeros are shifted in from the opposite end.
  
*************** _Class_:
*** 14685,14692 ****
       Elemental function
  
  _Arguments_:
!      I           The type shall be 'INTEGER' or 'UNSIGNED'.
!      SHIFT       The type shall be 'INTEGER'.
  
  _Return value_:
       The return value is of type of I.
--- 14685,14692 ----
       Elemental function
  
  _Arguments_:
!      I           The type shall be â€˜INTEGERâ€™ or â€˜UNSIGNEDâ€™.
!      SHIFT       The type shall be â€˜INTEGERâ€™.
  
  _Return value_:
       The return value is of type of I.
*************** _Return value_:
*** 14694,14708 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'ISHFT(A)'     'INTEGER A'       'INTEGER'      Fortran 90 and later
!      'BSHFT(A)'     'INTEGER(1) A'    'INTEGER(1)'   GNU extension
!      'IISHFT(A)'    'INTEGER(2) A'    'INTEGER(2)'   GNU extension
!      'JISHFT(A)'    'INTEGER(4) A'    'INTEGER(4)'   GNU extension
!      'KISHFT(A)'    'INTEGER(8) A'    'INTEGER(8)'   GNU extension
  
  _Standard_:
       Fortran 90 and later, has overloads that are GNU extensions.
!      Extension for 'UNSIGNED' (*note Unsigned integers::)
  
  _See also_:
       *note ISHFTC::
--- 14694,14708 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜ISHFT(A)â€™     â€˜INTEGER Aâ€™       â€˜INTEGERâ€™      Fortran 90 and later
!      â€˜BSHFT(A)â€™     â€˜INTEGER(1) Aâ€™    â€˜INTEGER(1)â€™   GNU extension
!      â€˜IISHFT(A)â€™    â€˜INTEGER(2) Aâ€™    â€˜INTEGER(2)â€™   GNU extension
!      â€˜JISHFT(A)â€™    â€˜INTEGER(4) Aâ€™    â€˜INTEGER(4)â€™   GNU extension
!      â€˜KISHFT(A)â€™    â€˜INTEGER(8) Aâ€™    â€˜INTEGER(8)â€™   GNU extension
  
  _Standard_:
       Fortran 90 and later, has overloads that are GNU extensions.
!      Extension for â€˜UNSIGNEDâ€™ (*note Unsigned integers::)
  
  _See also_:
       *note ISHFTC::
*************** _See also_:
*** 14710,14740 ****
  
  File: gfortran.info,  Node: ISHFTC,  Next: ISNAN,  Prev: ISHFT,  Up: Intrinsic Procedures
  
! 8.160 'ISHFTC' -- Shift bits circularly
  =======================================
  
  _Synopsis_:
!      'RESULT = ISHFTC(I, SHIFT [, SIZE])'
  
  _Description_:
!      'ISHFTC' returns a value corresponding to I with the rightmost SIZE
       bits shifted circularly SHIFT places; that is, bits shifted out one
       end are shifted into the opposite end.  A value of SHIFT greater
       than zero corresponds to a left shift, a value of zero corresponds
       to no shift, and a value less than zero corresponds to a right
       shift.  The absolute value of SHIFT must be less than SIZE.  If the
       SIZE argument is omitted, it is taken to be equivalent to
!      'BIT_SIZE(I)'.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be 'INTEGER' or 'UNSIGNED'.
!      SHIFT       The type shall be 'INTEGER'.
!      SIZE        (Optional) The type shall be 'INTEGER'; the
                   value must be greater than zero and less than or
!                  equal to 'BIT_SIZE(I)'.
  
  _Return value_:
       The return value is of the same type as I.
--- 14710,14740 ----
  
  File: gfortran.info,  Node: ISHFTC,  Next: ISNAN,  Prev: ISHFT,  Up: Intrinsic Procedures
  
! 8.160 â€˜ISHFTCâ€™ -- Shift bits circularly
  =======================================
  
  _Synopsis_:
!      â€˜RESULT = ISHFTC(I, SHIFT [, SIZE])â€™
  
  _Description_:
!      â€˜ISHFTCâ€™ returns a value corresponding to I with the rightmost SIZE
       bits shifted circularly SHIFT places; that is, bits shifted out one
       end are shifted into the opposite end.  A value of SHIFT greater
       than zero corresponds to a left shift, a value of zero corresponds
       to no shift, and a value less than zero corresponds to a right
       shift.  The absolute value of SHIFT must be less than SIZE.  If the
       SIZE argument is omitted, it is taken to be equivalent to
!      â€˜BIT_SIZE(I)â€™.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be â€˜INTEGERâ€™ or â€˜UNSIGNEDâ€™.
!      SHIFT       The type shall be â€˜INTEGERâ€™.
!      SIZE        (Optional) The type shall be â€˜INTEGERâ€™; the
                   value must be greater than zero and less than or
!                  equal to â€˜BIT_SIZE(I)â€™.
  
  _Return value_:
       The return value is of the same type as I.
*************** _Return value_:
*** 14742,14756 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'ISHFTC(A)'    'INTEGER A'       'INTEGER'      Fortran 90 and later
!      'BSHFTC(A)'    'INTEGER(1) A'    'INTEGER(1)'   GNU extension
!      'IISHFTC(A)'   'INTEGER(2) A'    'INTEGER(2)'   GNU extension
!      'JISHFTC(A)'   'INTEGER(4) A'    'INTEGER(4)'   GNU extension
!      'KISHFTC(A)'   'INTEGER(8) A'    'INTEGER(8)'   GNU extension
  
  _Standard_:
       Fortran 90 and later, has overloads that are GNU extensions.
!      Extension for 'UNSIGNED' (*note Unsigned integers::)
  
  _See also_:
       *note ISHFT::
--- 14742,14756 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜ISHFTC(A)â€™    â€˜INTEGER Aâ€™       â€˜INTEGERâ€™      Fortran 90 and later
!      â€˜BSHFTC(A)â€™    â€˜INTEGER(1) Aâ€™    â€˜INTEGER(1)â€™   GNU extension
!      â€˜IISHFTC(A)â€™   â€˜INTEGER(2) Aâ€™    â€˜INTEGER(2)â€™   GNU extension
!      â€˜JISHFTC(A)â€™   â€˜INTEGER(4) Aâ€™    â€˜INTEGER(4)â€™   GNU extension
!      â€˜KISHFTC(A)â€™   â€˜INTEGER(8) Aâ€™    â€˜INTEGER(8)â€™   GNU extension
  
  _Standard_:
       Fortran 90 and later, has overloads that are GNU extensions.
!      Extension for â€˜UNSIGNEDâ€™ (*note Unsigned integers::)
  
  _See also_:
       *note ISHFT::
*************** _See also_:
*** 14758,14783 ****
  
  File: gfortran.info,  Node: ISNAN,  Next: ITIME,  Prev: ISHFTC,  Up: Intrinsic Procedures
  
! 8.161 'ISNAN' -- Test for a NaN
  ===============================
  
  _Synopsis_:
!      'ISNAN(X)'
  
  _Description_:
!      'ISNAN' tests whether a floating-point value is an IEEE
       Not-a-Number (NaN).
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           Variable of the type 'REAL'.
                   
  
  _Return value_:
!      Returns a default-kind 'LOGICAL'.  The returned value is 'TRUE' if
!      X is a NaN and 'FALSE' otherwise.
  
  _Example_:
            program test_nan
--- 14758,14783 ----
  
  File: gfortran.info,  Node: ISNAN,  Next: ITIME,  Prev: ISHFTC,  Up: Intrinsic Procedures
  
! 8.161 â€˜ISNANâ€™ -- Test for a NaN
  ===============================
  
  _Synopsis_:
!      â€˜ISNAN(X)â€™
  
  _Description_:
!      â€˜ISNANâ€™ tests whether a floating-point value is an IEEE
       Not-a-Number (NaN).
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           Variable of the type â€˜REALâ€™.
                   
  
  _Return value_:
!      Returns a default-kind â€˜LOGICALâ€™.  The returned value is â€˜TRUEâ€™ if
!      X is a NaN and â€˜FALSEâ€™ otherwise.
  
  _Example_:
            program test_nan
*************** _Standard_:
*** 14794,14807 ****
  
  File: gfortran.info,  Node: ITIME,  Next: KILL,  Prev: ISNAN,  Up: Intrinsic Procedures
  
! 8.162 'ITIME' -- Get current local time subroutine (hour/minutes/seconds)
  =========================================================================
  
  _Synopsis_:
!      'CALL ITIME(VALUES)'
  
  _Description_:
!      'ITIME(VALUES)' Fills VALUES with the numerical values at the
       current local time.  The hour (in the range 1-24), minute (in the
       range 1-60), and seconds (in the range 1-60) appear in elements 1,
       2, and 3 of VALUES, respectively.
--- 14794,14807 ----
  
  File: gfortran.info,  Node: ITIME,  Next: KILL,  Prev: ISNAN,  Up: Intrinsic Procedures
  
! 8.162 â€˜ITIMEâ€™ -- Get current local time subroutine (hour/minutes/seconds)
  =========================================================================
  
  _Synopsis_:
!      â€˜CALL ITIME(VALUES)â€™
  
  _Description_:
!      â€˜ITIME(VALUES)â€™ Fills VALUES with the numerical values at the
       current local time.  The hour (in the range 1-24), minute (in the
       range 1-60), and seconds (in the range 1-60) appear in elements 1,
       2, and 3 of VALUES, respectively.
*************** _Class_:
*** 14815,14821 ****
       Subroutine
  
  _Arguments_:
!      VALUES      The type shall be 'INTEGER, DIMENSION(3)' and
                   the kind shall be the default integer kind.
  
  _Return value_:
--- 14815,14821 ----
       Subroutine
  
  _Arguments_:
!      VALUES      The type shall be â€˜INTEGER, DIMENSION(3)â€™ and
                   the kind shall be the default integer kind.
  
  _Return value_:
*************** _See also_:
*** 14839,14854 ****
  
  File: gfortran.info,  Node: KILL,  Next: KIND,  Prev: ITIME,  Up: Intrinsic Procedures
  
! 8.163 'KILL' -- Send a signal to a process
  ==========================================
  
  _Synopsis_:
!      'CALL KILL(PID, SIG [, STATUS])'
!      'STATUS = KILL(PID, SIG)'
  
  _Description_:
       Sends the signal specified by SIG to the process PID.  See
!      'kill(2)'.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
--- 14839,14854 ----
  
  File: gfortran.info,  Node: KILL,  Next: KIND,  Prev: ITIME,  Up: Intrinsic Procedures
  
! 8.163 â€˜KILLâ€™ -- Send a signal to a process
  ==========================================
  
  _Synopsis_:
!      â€˜CALL KILL(PID, SIG [, STATUS])â€™
!      â€˜STATUS = KILL(PID, SIG)â€™
  
  _Description_:
       Sends the signal specified by SIG to the process PID.  See
!      â€˜kill(2)â€™.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
*************** _Class_:
*** 14857,14869 ****
       Subroutine, function
  
  _Arguments_:
!      PID         Shall be a scalar 'INTEGER' with 'INTENT(IN)'.
!      SIG         Shall be a scalar 'INTEGER' with 'INTENT(IN)'.
       STATUS      [Subroutine](Optional) Shall be a scalar
!                  'INTEGER'.  Returns 0 on success; otherwise a
                   system-specific error code is returned.
       STATUS      [Function] The kind type parameter is that of
!                  'pid'.  Returns 0 on success; otherwise a
                   system-specific error code is returned.
  
  _Standard_:
--- 14857,14869 ----
       Subroutine, function
  
  _Arguments_:
!      PID         Shall be a scalar â€˜INTEGERâ€™ with â€˜INTENT(IN)â€™.
!      SIG         Shall be a scalar â€˜INTEGERâ€™ with â€˜INTENT(IN)â€™.
       STATUS      [Subroutine](Optional) Shall be a scalar
!                  â€˜INTEGERâ€™.  Returns 0 on success; otherwise a
                   system-specific error code is returned.
       STATUS      [Function] The kind type parameter is that of
!                  â€˜pidâ€™.  Returns 0 on success; otherwise a
                   system-specific error code is returned.
  
  _Standard_:
*************** _See also_:
*** 14876,14900 ****
  
  File: gfortran.info,  Node: KIND,  Next: LBOUND,  Prev: KILL,  Up: Intrinsic Procedures
  
! 8.164 'KIND' -- Kind of an entity
  =================================
  
  _Synopsis_:
!      'K = KIND(X)'
  
  _Description_:
!      'KIND(X)' returns the kind value of the entity X.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      X           Shall be of type 'LOGICAL', 'INTEGER', 'REAL',
!                  'COMPLEX' or 'CHARACTER'.  It may be scalar or
                   array valued.
  
  _Return value_:
!      The return value is a scalar of type 'INTEGER' and of the default
       integer kind.
  
  _Example_:
--- 14876,14900 ----
  
  File: gfortran.info,  Node: KIND,  Next: LBOUND,  Prev: KILL,  Up: Intrinsic Procedures
  
! 8.164 â€˜KINDâ€™ -- Kind of an entity
  =================================
  
  _Synopsis_:
!      â€˜K = KIND(X)â€™
  
  _Description_:
!      â€˜KIND(X)â€™ returns the kind value of the entity X.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      X           Shall be of type â€˜LOGICALâ€™, â€˜INTEGERâ€™, â€˜REALâ€™,
!                  â€˜COMPLEXâ€™ or â€˜CHARACTERâ€™.  It may be scalar or
                   array valued.
  
  _Return value_:
!      The return value is a scalar of type â€˜INTEGERâ€™ and of the default
       integer kind.
  
  _Example_:
*************** _Standard_:
*** 14912,14922 ****
  
  File: gfortran.info,  Node: LBOUND,  Next: LCOBOUND,  Prev: KIND,  Up: Intrinsic Procedures
  
! 8.165 'LBOUND' -- Lower dimension bounds of an array
  ====================================================
  
  _Synopsis_:
!      'RESULT = LBOUND(ARRAY [, DIM [, KIND]])'
  
  _Description_:
       Returns the lower bounds of an array, or a single lower bound along
--- 14912,14922 ----
  
  File: gfortran.info,  Node: LBOUND,  Next: LCOBOUND,  Prev: KIND,  Up: Intrinsic Procedures
  
! 8.165 â€˜LBOUNDâ€™ -- Lower dimension bounds of an array
  ====================================================
  
  _Synopsis_:
!      â€˜RESULT = LBOUND(ARRAY [, DIM [, KIND]])â€™
  
  _Description_:
       Returns the lower bounds of an array, or a single lower bound along
*************** _Class_:
*** 14927,14939 ****
  
  _Arguments_:
       ARRAY       Shall be an array, of any type.
!      DIM         (Optional) Shall be a scalar 'INTEGER'.
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type 'INTEGER' and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.  If DIM is
       absent, the result is an array of the lower bounds of ARRAY.  If
       DIM is present, the result is a scalar corresponding to the lower
--- 14927,14939 ----
  
  _Arguments_:
       ARRAY       Shall be an array, of any type.
!      DIM         (Optional) Shall be a scalar â€˜INTEGERâ€™.
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™ and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.  If DIM is
       absent, the result is an array of the lower bounds of ARRAY.  If
       DIM is present, the result is a scalar corresponding to the lower
*************** _See also_:
*** 14952,14962 ****
  
  File: gfortran.info,  Node: LCOBOUND,  Next: LEADZ,  Prev: LBOUND,  Up: Intrinsic Procedures
  
! 8.166 'LCOBOUND' -- Lower codimension bounds of an array
  ========================================================
  
  _Synopsis_:
!      'RESULT = LCOBOUND(COARRAY [, DIM [, KIND]])'
  
  _Description_:
       Returns the lower bounds of a coarray, or a single lower cobound
--- 14952,14962 ----
  
  File: gfortran.info,  Node: LCOBOUND,  Next: LEADZ,  Prev: LBOUND,  Up: Intrinsic Procedures
  
! 8.166 â€˜LCOBOUNDâ€™ -- Lower codimension bounds of an array
  ========================================================
  
  _Synopsis_:
!      â€˜RESULT = LCOBOUND(COARRAY [, DIM [, KIND]])â€™
  
  _Description_:
       Returns the lower bounds of a coarray, or a single lower cobound
*************** _Class_:
*** 14967,14979 ****
  
  _Arguments_:
       ARRAY       Shall be an coarray, of any type.
!      DIM         (Optional) Shall be a scalar 'INTEGER'.
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type 'INTEGER' and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.  If DIM is
       absent, the result is an array of the lower cobounds of COARRAY.
       If DIM is present, the result is a scalar corresponding to the
--- 14967,14979 ----
  
  _Arguments_:
       ARRAY       Shall be an coarray, of any type.
!      DIM         (Optional) Shall be a scalar â€˜INTEGERâ€™.
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™ and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.  If DIM is
       absent, the result is an array of the lower cobounds of COARRAY.
       If DIM is present, the result is a scalar corresponding to the
*************** _See also_:
*** 14989,15012 ****
  
  File: gfortran.info,  Node: LEADZ,  Next: LEN,  Prev: LCOBOUND,  Up: Intrinsic Procedures
  
! 8.167 'LEADZ' -- Number of leading zero bits of an integer
  ==========================================================
  
  _Synopsis_:
!      'RESULT = LEADZ(I)'
  
  _Description_:
!      'LEADZ' returns the number of leading zero bits of an integer.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           Shall be of type 'INTEGER'.
  
  _Return value_:
!      The type of the return value is the default 'INTEGER'.  If all the
!      bits of 'I' are zero, the result value is 'BIT_SIZE(I)'.
  
  _Example_:
            PROGRAM test_leadz
--- 14989,15012 ----
  
  File: gfortran.info,  Node: LEADZ,  Next: LEN,  Prev: LCOBOUND,  Up: Intrinsic Procedures
  
! 8.167 â€˜LEADZâ€™ -- Number of leading zero bits of an integer
  ==========================================================
  
  _Synopsis_:
!      â€˜RESULT = LEADZ(I)â€™
  
  _Description_:
!      â€˜LEADZâ€™ returns the number of leading zero bits of an integer.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           Shall be of type â€˜INTEGERâ€™.
  
  _Return value_:
!      The type of the return value is the default â€˜INTEGERâ€™.  If all the
!      bits of â€˜Iâ€™ are zero, the result value is â€˜BIT_SIZE(I)â€™.
  
  _Example_:
            PROGRAM test_leadz
*************** _See also_:
*** 15026,15036 ****
  
  File: gfortran.info,  Node: LEN,  Next: LEN_TRIM,  Prev: LEADZ,  Up: Intrinsic Procedures
  
! 8.168 'LEN' -- Length of a character entity
  ===========================================
  
  _Synopsis_:
!      'L = LEN(STRING [, KIND])'
  
  _Description_:
       Returns the length of a character string.  If STRING is an array,
--- 15026,15036 ----
  
  File: gfortran.info,  Node: LEN,  Next: LEN_TRIM,  Prev: LEADZ,  Up: Intrinsic Procedures
  
! 8.168 â€˜LENâ€™ -- Length of a character entity
  ===========================================
  
  _Synopsis_:
!      â€˜L = LEN(STRING [, KIND])â€™
  
  _Description_:
       Returns the length of a character string.  If STRING is an array,
*************** _Class_:
*** 15042,15061 ****
       Inquiry function
  
  _Arguments_:
!      STRING      Shall be a scalar or array of type 'CHARACTER',
!                  with 'INTENT(IN)'
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type 'INTEGER' and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.
  
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'LEN(STRING)'  'CHARACTER'       'INTEGER'      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later, with KIND argument Fortran 2003 and later
--- 15042,15061 ----
       Inquiry function
  
  _Arguments_:
!      STRING      Shall be a scalar or array of type â€˜CHARACTERâ€™,
!                  with â€˜INTENT(IN)â€™
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™ and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.
  
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜LEN(STRING)â€™  â€˜CHARACTERâ€™       â€˜INTEGERâ€™      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later, with KIND argument Fortran 2003 and later
*************** _See also_:
*** 15068,15078 ****
  
  File: gfortran.info,  Node: LEN_TRIM,  Next: LGE,  Prev: LEN,  Up: Intrinsic Procedures
  
! 8.169 'LEN_TRIM' -- Length of a character entity without trailing blank characters
  ==================================================================================
  
  _Synopsis_:
!      'RESULT = LEN_TRIM(STRING [, KIND])'
  
  _Description_:
       Returns the length of a character string, ignoring any trailing
--- 15068,15078 ----
  
  File: gfortran.info,  Node: LEN_TRIM,  Next: LGE,  Prev: LEN,  Up: Intrinsic Procedures
  
! 8.169 â€˜LEN_TRIMâ€™ -- Length of a character entity without trailing blank characters
  ==================================================================================
  
  _Synopsis_:
!      â€˜RESULT = LEN_TRIM(STRING [, KIND])â€™
  
  _Description_:
       Returns the length of a character string, ignoring any trailing
*************** _Class_:
*** 15082,15095 ****
       Elemental function
  
  _Arguments_:
!      STRING      Shall be a scalar of type 'CHARACTER', with
!                  'INTENT(IN)'
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type 'INTEGER' and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.
  
  _Standard_:
--- 15082,15095 ----
       Elemental function
  
  _Arguments_:
!      STRING      Shall be a scalar of type â€˜CHARACTERâ€™, with
!                  â€˜INTENT(IN)â€™
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™ and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.
  
  _Standard_:
*************** _See also_:
*** 15103,15113 ****
  
  File: gfortran.info,  Node: LGE,  Next: LGT,  Prev: LEN_TRIM,  Up: Intrinsic Procedures
  
! 8.170 'LGE' -- Lexical greater than or equal
  ============================================
  
  _Synopsis_:
!      'RESULT = LGE(STRING_A, STRING_B)'
  
  _Description_:
       Determines whether one string is lexically greater than or equal to
--- 15103,15113 ----
  
  File: gfortran.info,  Node: LGE,  Next: LGT,  Prev: LEN_TRIM,  Up: Intrinsic Procedures
  
! 8.170 â€˜LGEâ€™ -- Lexical greater than or equal
  ============================================
  
  _Synopsis_:
!      â€˜RESULT = LGE(STRING_A, STRING_B)â€™
  
  _Description_:
       Determines whether one string is lexically greater than or equal to
*************** _Description_:
*** 15116,15124 ****
       same length, the shorter is compared as if spaces were appended to
       it to form a value that has the same length as the longer.
  
!      In general, the lexical comparison intrinsics 'LGE', 'LGT', 'LLE',
!      and 'LLT' differ from the corresponding intrinsic operators '.GE.',
!      '.GT.', '.LE.', and '.LT.', in that the latter use the processor's
       character ordering (which is not ASCII on some targets), whereas
       the former always use the ASCII ordering.
  
--- 15116,15124 ----
       same length, the shorter is compared as if spaces were appended to
       it to form a value that has the same length as the longer.
  
!      In general, the lexical comparison intrinsics â€˜LGEâ€™, â€˜LGTâ€™, â€˜LLEâ€™,
!      and â€˜LLTâ€™ differ from the corresponding intrinsic operators â€˜.GE.â€™,
!      â€˜.GT.â€™, â€˜.LE.â€™, and â€˜.LT.â€™, in that the latter use the processor's
       character ordering (which is not ASCII on some targets), whereas
       the former always use the ASCII ordering.
  
*************** _Class_:
*** 15126,15143 ****
       Elemental function
  
  _Arguments_:
!      STRING_A    Shall be of default 'CHARACTER' type.
!      STRING_B    Shall be of default 'CHARACTER' type.
  
  _Return value_:
!      Returns '.TRUE.' if 'STRING_A >= STRING_B', and '.FALSE.'
       otherwise, based on the ASCII ordering.
  
  _Specific names_:
       Name                     Argument     Return       Standard
                                             type
       --------------------------------------------------------------------------
!      'LGE(STRING_A,STRING_B)' 'CHARACTER'  'LOGICAL'    Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later
--- 15126,15143 ----
       Elemental function
  
  _Arguments_:
!      STRING_A    Shall be of default â€˜CHARACTERâ€™ type.
!      STRING_B    Shall be of default â€˜CHARACTERâ€™ type.
  
  _Return value_:
!      Returns â€˜.TRUE.â€™ if â€˜STRING_A >= STRING_Bâ€™, and â€˜.FALSE.â€™
       otherwise, based on the ASCII ordering.
  
  _Specific names_:
       Name                     Argument     Return       Standard
                                             type
       --------------------------------------------------------------------------
!      â€˜LGE(STRING_A,STRING_B)â€™ â€˜CHARACTERâ€™  â€˜LOGICALâ€™    Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later
*************** _See also_:
*** 15150,15160 ****
  
  File: gfortran.info,  Node: LGT,  Next: LINK,  Prev: LGE,  Up: Intrinsic Procedures
  
! 8.171 'LGT' -- Lexical greater than
  ===================================
  
  _Synopsis_:
!      'RESULT = LGT(STRING_A, STRING_B)'
  
  _Description_:
       Determines whether one string is lexically greater than another
--- 15150,15160 ----
  
  File: gfortran.info,  Node: LGT,  Next: LINK,  Prev: LGE,  Up: Intrinsic Procedures
  
! 8.171 â€˜LGTâ€™ -- Lexical greater than
  ===================================
  
  _Synopsis_:
!      â€˜RESULT = LGT(STRING_A, STRING_B)â€™
  
  _Description_:
       Determines whether one string is lexically greater than another
*************** _Description_:
*** 15163,15171 ****
       length, the shorter is compared as if spaces were appended to it to
       form a value that has the same length as the longer.
  
!      In general, the lexical comparison intrinsics 'LGE', 'LGT', 'LLE',
!      and 'LLT' differ from the corresponding intrinsic operators '.GE.',
!      '.GT.', '.LE.', and '.LT.', in that the latter use the processor's
       character ordering (which is not ASCII on some targets), whereas
       the former always use the ASCII ordering.
  
--- 15163,15171 ----
       length, the shorter is compared as if spaces were appended to it to
       form a value that has the same length as the longer.
  
!      In general, the lexical comparison intrinsics â€˜LGEâ€™, â€˜LGTâ€™, â€˜LLEâ€™,
!      and â€˜LLTâ€™ differ from the corresponding intrinsic operators â€˜.GE.â€™,
!      â€˜.GT.â€™, â€˜.LE.â€™, and â€˜.LT.â€™, in that the latter use the processor's
       character ordering (which is not ASCII on some targets), whereas
       the former always use the ASCII ordering.
  
*************** _Class_:
*** 15173,15190 ****
       Elemental function
  
  _Arguments_:
!      STRING_A    Shall be of default 'CHARACTER' type.
!      STRING_B    Shall be of default 'CHARACTER' type.
  
  _Return value_:
!      Returns '.TRUE.' if 'STRING_A > STRING_B', and '.FALSE.' otherwise,
       based on the ASCII ordering.
  
  _Specific names_:
       Name                     Argument     Return       Standard
                                             type
       --------------------------------------------------------------------------
!      'LGT(STRING_A,STRING_B)' 'CHARACTER'  'LOGICAL'    Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later
--- 15173,15190 ----
       Elemental function
  
  _Arguments_:
!      STRING_A    Shall be of default â€˜CHARACTERâ€™ type.
!      STRING_B    Shall be of default â€˜CHARACTERâ€™ type.
  
  _Return value_:
!      Returns â€˜.TRUE.â€™ if â€˜STRING_A > STRING_Bâ€™, and â€˜.FALSE.â€™ otherwise,
       based on the ASCII ordering.
  
  _Specific names_:
       Name                     Argument     Return       Standard
                                             type
       --------------------------------------------------------------------------
!      â€˜LGT(STRING_A,STRING_B)â€™ â€˜CHARACTERâ€™  â€˜LOGICALâ€™    Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later
*************** _See also_:
*** 15197,15215 ****
  
  File: gfortran.info,  Node: LINK,  Next: LLE,  Prev: LGT,  Up: Intrinsic Procedures
  
! 8.172 'LINK' -- Create a hard link
  ==================================
  
  _Synopsis_:
!      'CALL LINK(PATH1, PATH2 [, STATUS])'
!      'STATUS = LINK(PATH1, PATH2)'
  
  _Description_:
       Makes a (hard) link from file PATH1 to PATH2.  A null character
!      ('CHAR(0)') can be used to mark the end of the names in PATH1 and
       PATH2; otherwise, trailing blanks in the file names are ignored.
       If the STATUS argument is supplied, it contains 0 on success or a
!      nonzero error code upon return; see 'link(2)'.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
--- 15197,15215 ----
  
  File: gfortran.info,  Node: LINK,  Next: LLE,  Prev: LGT,  Up: Intrinsic Procedures
  
! 8.172 â€˜LINKâ€™ -- Create a hard link
  ==================================
  
  _Synopsis_:
!      â€˜CALL LINK(PATH1, PATH2 [, STATUS])â€™
!      â€˜STATUS = LINK(PATH1, PATH2)â€™
  
  _Description_:
       Makes a (hard) link from file PATH1 to PATH2.  A null character
!      (â€˜CHAR(0)â€™) can be used to mark the end of the names in PATH1 and
       PATH2; otherwise, trailing blanks in the file names are ignored.
       If the STATUS argument is supplied, it contains 0 on success or a
!      nonzero error code upon return; see â€˜link(2)â€™.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
*************** _Class_:
*** 15218,15226 ****
       Subroutine, function
  
  _Arguments_:
!      PATH1       Shall be of default 'CHARACTER' type.
!      PATH2       Shall be of default 'CHARACTER' type.
!      STATUS      (Optional) Shall be of default 'INTEGER' type.
  
  _Standard_:
       GNU extension
--- 15218,15226 ----
       Subroutine, function
  
  _Arguments_:
!      PATH1       Shall be of default â€˜CHARACTERâ€™ type.
!      PATH2       Shall be of default â€˜CHARACTERâ€™ type.
!      STATUS      (Optional) Shall be of default â€˜INTEGERâ€™ type.
  
  _Standard_:
       GNU extension
*************** _See also_:
*** 15232,15242 ****
  
  File: gfortran.info,  Node: LLE,  Next: LLT,  Prev: LINK,  Up: Intrinsic Procedures
  
! 8.173 'LLE' -- Lexical less than or equal
  =========================================
  
  _Synopsis_:
!      'RESULT = LLE(STRING_A, STRING_B)'
  
  _Description_:
       Determines whether one string is lexically less than or equal to
--- 15232,15242 ----
  
  File: gfortran.info,  Node: LLE,  Next: LLT,  Prev: LINK,  Up: Intrinsic Procedures
  
! 8.173 â€˜LLEâ€™ -- Lexical less than or equal
  =========================================
  
  _Synopsis_:
!      â€˜RESULT = LLE(STRING_A, STRING_B)â€™
  
  _Description_:
       Determines whether one string is lexically less than or equal to
*************** _Description_:
*** 15245,15253 ****
       same length, the shorter is compared as if spaces were appended to
       it to form a value that has the same length as the longer.
  
!      In general, the lexical comparison intrinsics 'LGE', 'LGT', 'LLE',
!      and 'LLT' differ from the corresponding intrinsic operators '.GE.',
!      '.GT.', '.LE.', and '.LT.', in that the latter use the processor's
       character ordering (which is not ASCII on some targets), whereas
       the former always use the ASCII ordering.
  
--- 15245,15253 ----
       same length, the shorter is compared as if spaces were appended to
       it to form a value that has the same length as the longer.
  
!      In general, the lexical comparison intrinsics â€˜LGEâ€™, â€˜LGTâ€™, â€˜LLEâ€™,
!      and â€˜LLTâ€™ differ from the corresponding intrinsic operators â€˜.GE.â€™,
!      â€˜.GT.â€™, â€˜.LE.â€™, and â€˜.LT.â€™, in that the latter use the processor's
       character ordering (which is not ASCII on some targets), whereas
       the former always use the ASCII ordering.
  
*************** _Class_:
*** 15255,15272 ****
       Elemental function
  
  _Arguments_:
!      STRING_A    Shall be of default 'CHARACTER' type.
!      STRING_B    Shall be of default 'CHARACTER' type.
  
  _Return value_:
!      Returns '.TRUE.' if 'STRING_A <= STRING_B', and '.FALSE.'
       otherwise, based on the ASCII ordering.
  
  _Specific names_:
       Name                     Argument     Return       Standard
                                             type
       --------------------------------------------------------------------------
!      'LLE(STRING_A,STRING_B)' 'CHARACTER'  'LOGICAL'    Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later
--- 15255,15272 ----
       Elemental function
  
  _Arguments_:
!      STRING_A    Shall be of default â€˜CHARACTERâ€™ type.
!      STRING_B    Shall be of default â€˜CHARACTERâ€™ type.
  
  _Return value_:
!      Returns â€˜.TRUE.â€™ if â€˜STRING_A <= STRING_Bâ€™, and â€˜.FALSE.â€™
       otherwise, based on the ASCII ordering.
  
  _Specific names_:
       Name                     Argument     Return       Standard
                                             type
       --------------------------------------------------------------------------
!      â€˜LLE(STRING_A,STRING_B)â€™ â€˜CHARACTERâ€™  â€˜LOGICALâ€™    Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later
*************** _See also_:
*** 15279,15289 ****
  
  File: gfortran.info,  Node: LLT,  Next: LNBLNK,  Prev: LLE,  Up: Intrinsic Procedures
  
! 8.174 'LLT' -- Lexical less than
  ================================
  
  _Synopsis_:
!      'RESULT = LLT(STRING_A, STRING_B)'
  
  _Description_:
       Determines whether one string is lexically less than another
--- 15279,15289 ----
  
  File: gfortran.info,  Node: LLT,  Next: LNBLNK,  Prev: LLE,  Up: Intrinsic Procedures
  
! 8.174 â€˜LLTâ€™ -- Lexical less than
  ================================
  
  _Synopsis_:
!      â€˜RESULT = LLT(STRING_A, STRING_B)â€™
  
  _Description_:
       Determines whether one string is lexically less than another
*************** _Description_:
*** 15292,15300 ****
       length, the shorter is compared as if spaces were appended to it to
       form a value that has the same length as the longer.
  
!      In general, the lexical comparison intrinsics 'LGE', 'LGT', 'LLE',
!      and 'LLT' differ from the corresponding intrinsic operators '.GE.',
!      '.GT.', '.LE.', and '.LT.', in that the latter use the processor's
       character ordering (which is not ASCII on some targets), whereas
       the former always use the ASCII ordering.
  
--- 15292,15300 ----
       length, the shorter is compared as if spaces were appended to it to
       form a value that has the same length as the longer.
  
!      In general, the lexical comparison intrinsics â€˜LGEâ€™, â€˜LGTâ€™, â€˜LLEâ€™,
!      and â€˜LLTâ€™ differ from the corresponding intrinsic operators â€˜.GE.â€™,
!      â€˜.GT.â€™, â€˜.LE.â€™, and â€˜.LT.â€™, in that the latter use the processor's
       character ordering (which is not ASCII on some targets), whereas
       the former always use the ASCII ordering.
  
*************** _Class_:
*** 15302,15319 ****
       Elemental function
  
  _Arguments_:
!      STRING_A    Shall be of default 'CHARACTER' type.
!      STRING_B    Shall be of default 'CHARACTER' type.
  
  _Return value_:
!      Returns '.TRUE.' if 'STRING_A < STRING_B', and '.FALSE.' otherwise,
       based on the ASCII ordering.
  
  _Specific names_:
       Name                     Argument     Return       Standard
                                             type
       --------------------------------------------------------------------------
!      'LLT(STRING_A,STRING_B)' 'CHARACTER'  'LOGICAL'    Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later
--- 15302,15319 ----
       Elemental function
  
  _Arguments_:
!      STRING_A    Shall be of default â€˜CHARACTERâ€™ type.
!      STRING_B    Shall be of default â€˜CHARACTERâ€™ type.
  
  _Return value_:
!      Returns â€˜.TRUE.â€™ if â€˜STRING_A < STRING_Bâ€™, and â€˜.FALSE.â€™ otherwise,
       based on the ASCII ordering.
  
  _Specific names_:
       Name                     Argument     Return       Standard
                                             type
       --------------------------------------------------------------------------
!      â€˜LLT(STRING_A,STRING_B)â€™ â€˜CHARACTERâ€™  â€˜LOGICALâ€™    Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later
*************** _See also_:
*** 15326,15351 ****
  
  File: gfortran.info,  Node: LNBLNK,  Next: LOC,  Prev: LLT,  Up: Intrinsic Procedures
  
! 8.175 'LNBLNK' -- Index of the last non-blank character in a string
  ===================================================================
  
  _Synopsis_:
!      'RESULT = LNBLNK(STRING)'
  
  _Description_:
       Returns the length of a character string, ignoring any trailing
!      blanks.  This is identical to the standard 'LEN_TRIM' intrinsic,
       and is only included for backwards compatibility.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      STRING      Shall be a scalar of type 'CHARACTER', with
!                  'INTENT(IN)'
  
  _Return value_:
!      The return value is of 'INTEGER(kind=4)' type.
  
  _Standard_:
       GNU extension
--- 15326,15351 ----
  
  File: gfortran.info,  Node: LNBLNK,  Next: LOC,  Prev: LLT,  Up: Intrinsic Procedures
  
! 8.175 â€˜LNBLNKâ€™ -- Index of the last non-blank character in a string
  ===================================================================
  
  _Synopsis_:
!      â€˜RESULT = LNBLNK(STRING)â€™
  
  _Description_:
       Returns the length of a character string, ignoring any trailing
!      blanks.  This is identical to the standard â€˜LEN_TRIMâ€™ intrinsic,
       and is only included for backwards compatibility.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      STRING      Shall be a scalar of type â€˜CHARACTERâ€™, with
!                  â€˜INTENT(IN)â€™
  
  _Return value_:
!      The return value is of â€˜INTEGER(kind=4)â€™ type.
  
  _Standard_:
       GNU extension
*************** _See also_:
*** 15357,15370 ****
  
  File: gfortran.info,  Node: LOC,  Next: LOG,  Prev: LNBLNK,  Up: Intrinsic Procedures
  
! 8.176 'LOC' -- Returns the address of a variable
  ================================================
  
  _Synopsis_:
!      'RESULT = LOC(X)'
  
  _Description_:
!      'LOC(X)' returns the address of X as an integer.
  
  _Class_:
       Inquiry function
--- 15357,15370 ----
  
  File: gfortran.info,  Node: LOC,  Next: LOG,  Prev: LNBLNK,  Up: Intrinsic Procedures
  
! 8.176 â€˜LOCâ€™ -- Returns the address of a variable
  ================================================
  
  _Synopsis_:
!      â€˜RESULT = LOC(X)â€™
  
  _Description_:
!      â€˜LOC(X)â€™ returns the address of X as an integer.
  
  _Class_:
       Inquiry function
*************** _Arguments_:
*** 15373,15379 ****
       X           Variable of any type.
  
  _Return value_:
!      The return value is of type 'INTEGER', with a 'KIND' corresponding
       to the size (in bytes) of a memory address on the target machine.
  
  _Example_:
--- 15373,15379 ----
       X           Variable of any type.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™, with a â€˜KINDâ€™ corresponding
       to the size (in bytes) of a memory address on the target machine.
  
  _Example_:
*************** _Standard_:
*** 15390,15414 ****
  
  File: gfortran.info,  Node: LOG,  Next: LOG10,  Prev: LOC,  Up: Intrinsic Procedures
  
! 8.177 'LOG' -- Natural logarithm function
  =========================================
  
  _Synopsis_:
!      'RESULT = LOG(X)'
  
  _Description_:
!      'LOG(X)' computes the natural logarithm of X, i.e.  the logarithm
       to the base e.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL' or 'COMPLEX'.
  
  _Return value_:
!      The return value is of type 'REAL' or 'COMPLEX'.  The kind type
!      parameter is the same as X.  If X is 'COMPLEX', the imaginary part
       \omega is in the range -\pi < \omega \leq \pi.
  
  _Example_:
--- 15390,15414 ----
  
  File: gfortran.info,  Node: LOG,  Next: LOG10,  Prev: LOC,  Up: Intrinsic Procedures
  
! 8.177 â€˜LOGâ€™ -- Natural logarithm function
  =========================================
  
  _Synopsis_:
!      â€˜RESULT = LOG(X)â€™
  
  _Description_:
!      â€˜LOG(X)â€™ computes the natural logarithm of X, i.e.  the logarithm
       to the base e.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™ or â€˜COMPLEXâ€™.
  
  _Return value_:
!      The return value is of type â€˜REALâ€™ or â€˜COMPLEXâ€™.  The kind type
!      parameter is the same as X.  If X is â€˜COMPLEXâ€™, the imaginary part
       \omega is in the range -\pi < \omega \leq \pi.
  
  _Example_:
*************** _Example_:
*** 15422,15432 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'ALOG(X)'      'REAL(4) X'       'REAL(4)'      Fortran 77 or later
!      'DLOG(X)'      'REAL(8) X'       'REAL(8)'      Fortran 77 or later
!      'CLOG(X)'      'COMPLEX(4) X'    'COMPLEX(4)'   Fortran 77 or later
!      'ZLOG(X)'      'COMPLEX(8) X'    'COMPLEX(8)'   GNU extension
!      'CDLOG(X)'     'COMPLEX(8) X'    'COMPLEX(8)'   GNU extension
  
  _Standard_:
       Fortran 77 and later, has GNU extensions
--- 15422,15432 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜ALOG(X)â€™      â€˜REAL(4) Xâ€™       â€˜REAL(4)â€™      Fortran 77 or later
!      â€˜DLOG(X)â€™      â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      Fortran 77 or later
!      â€˜CLOG(X)â€™      â€˜COMPLEX(4) Xâ€™    â€˜COMPLEX(4)â€™   Fortran 77 or later
!      â€˜ZLOG(X)â€™      â€˜COMPLEX(8) Xâ€™    â€˜COMPLEX(8)â€™   GNU extension
!      â€˜CDLOG(X)â€™     â€˜COMPLEX(8) Xâ€™    â€˜COMPLEX(8)â€™   GNU extension
  
  _Standard_:
       Fortran 77 and later, has GNU extensions
*************** _Standard_:
*** 15434,15456 ****
  
  File: gfortran.info,  Node: LOG10,  Next: LOG_GAMMA,  Prev: LOG,  Up: Intrinsic Procedures
  
! 8.178 'LOG10' -- Base 10 logarithm function
  ===========================================
  
  _Synopsis_:
!      'RESULT = LOG10(X)'
  
  _Description_:
!      'LOG10(X)' computes the base 10 logarithm of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL'.
  
  _Return value_:
!      The return value is of type 'REAL' or 'COMPLEX'.  The kind type
       parameter is the same as X.
  
  _Example_:
--- 15434,15456 ----
  
  File: gfortran.info,  Node: LOG10,  Next: LOG_GAMMA,  Prev: LOG,  Up: Intrinsic Procedures
  
! 8.178 â€˜LOG10â€™ -- Base 10 logarithm function
  ===========================================
  
  _Synopsis_:
!      â€˜RESULT = LOG10(X)â€™
  
  _Description_:
!      â€˜LOG10(X)â€™ computes the base 10 logarithm of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™.
  
  _Return value_:
!      The return value is of type â€˜REALâ€™ or â€˜COMPLEXâ€™.  The kind type
       parameter is the same as X.
  
  _Example_:
*************** _Example_:
*** 15462,15469 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'ALOG10(X)'    'REAL(4) X'       'REAL(4)'      Fortran 77 and later
!      'DLOG10(X)'    'REAL(8) X'       'REAL(8)'      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later
--- 15462,15469 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜ALOG10(X)â€™    â€˜REAL(4) Xâ€™       â€˜REAL(4)â€™      Fortran 77 and later
!      â€˜DLOG10(X)â€™    â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later
*************** _Standard_:
*** 15471,15495 ****
  
  File: gfortran.info,  Node: LOG_GAMMA,  Next: LOGICAL,  Prev: LOG10,  Up: Intrinsic Procedures
  
! 8.179 'LOG_GAMMA' -- Logarithm of the Gamma function
  ====================================================
  
  _Synopsis_:
!      'X = LOG_GAMMA(X)'
  
  _Description_:
!      'LOG_GAMMA(X)' computes the natural logarithm of the absolute value
       of the Gamma (\Gamma) function.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           Shall be of type 'REAL' and neither zero nor a
                   negative integer.
  
  _Return value_:
!      The return value is of type 'REAL' of the same kind as X.
  
  _Example_:
            program test_log_gamma
--- 15471,15495 ----
  
  File: gfortran.info,  Node: LOG_GAMMA,  Next: LOGICAL,  Prev: LOG10,  Up: Intrinsic Procedures
  
! 8.179 â€˜LOG_GAMMAâ€™ -- Logarithm of the Gamma function
  ====================================================
  
  _Synopsis_:
!      â€˜X = LOG_GAMMA(X)â€™
  
  _Description_:
!      â€˜LOG_GAMMA(X)â€™ computes the natural logarithm of the absolute value
       of the Gamma (\Gamma) function.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           Shall be of type â€˜REALâ€™ and neither zero nor a
                   negative integer.
  
  _Return value_:
!      The return value is of type â€˜REALâ€™ of the same kind as X.
  
  _Example_:
            program test_log_gamma
*************** _Example_:
*** 15500,15508 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'LGAMMA(X)'    'REAL(4) X'       'REAL(4)'      GNU extension
!      'ALGAMA(X)'    'REAL(4) X'       'REAL(4)'      GNU extension
!      'DLGAMA(X)'    'REAL(8) X'       'REAL(8)'      GNU extension
  
  _Standard_:
       Fortran 2008 and later
--- 15500,15508 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜LGAMMA(X)â€™    â€˜REAL(4) Xâ€™       â€˜REAL(4)â€™      GNU extension
!      â€˜ALGAMA(X)â€™    â€˜REAL(4) Xâ€™       â€˜REAL(4)â€™      GNU extension
!      â€˜DLGAMA(X)â€™    â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      GNU extension
  
  _Standard_:
       Fortran 2008 and later
*************** _See also_:
*** 15514,15539 ****
  
  File: gfortran.info,  Node: LOGICAL,  Next: LSHIFT,  Prev: LOG_GAMMA,  Up: Intrinsic Procedures
  
! 8.180 'LOGICAL' -- Convert to logical type
  ==========================================
  
  _Synopsis_:
!      'RESULT = LOGICAL(L [, KIND])'
  
  _Description_:
!      Converts one kind of 'LOGICAL' variable to another.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      L           The type shall be 'LOGICAL'.
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is a 'LOGICAL' value equal to L, with a kind
       corresponding to KIND, or of the default logical kind if KIND is
       not given.
  
--- 15514,15539 ----
  
  File: gfortran.info,  Node: LOGICAL,  Next: LSHIFT,  Prev: LOG_GAMMA,  Up: Intrinsic Procedures
  
! 8.180 â€˜LOGICALâ€™ -- Convert to logical type
  ==========================================
  
  _Synopsis_:
!      â€˜RESULT = LOGICAL(L [, KIND])â€™
  
  _Description_:
!      Converts one kind of â€˜LOGICALâ€™ variable to another.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      L           The type shall be â€˜LOGICALâ€™.
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is a â€˜LOGICALâ€™ value equal to L, with a kind
       corresponding to KIND, or of the default logical kind if KIND is
       not given.
  
*************** _See also_:
*** 15548,15579 ****
  
  File: gfortran.info,  Node: LSHIFT,  Next: LSTAT,  Prev: LOGICAL,  Up: Intrinsic Procedures
  
! 8.181 'LSHIFT' -- Left shift bits
  =================================
  
  _Synopsis_:
!      'RESULT = LSHIFT(I, SHIFT)'
  
  _Description_:
!      'LSHIFT' returns a value corresponding to I with all of the bits
       shifted left by SHIFT places.  SHIFT shall be nonnegative and less
!      than or equal to 'BIT_SIZE(I)', otherwise the result value is
       undefined.  Bits shifted out from the left end are lost; zeros are
       shifted in from the opposite end.
  
!      This function has been superseded by the 'ISHFT' intrinsic, which
!      is standard in Fortran 95 and later, and the 'SHIFTL' intrinsic,
       which is standard in Fortran 2008 and later.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be 'INTEGER'.
!      SHIFT       The type shall be 'INTEGER'.
  
  _Return value_:
!      The return value is of type 'INTEGER' and of the same kind as I.
  
  _Standard_:
       GNU extension
--- 15548,15579 ----
  
  File: gfortran.info,  Node: LSHIFT,  Next: LSTAT,  Prev: LOGICAL,  Up: Intrinsic Procedures
  
! 8.181 â€˜LSHIFTâ€™ -- Left shift bits
  =================================
  
  _Synopsis_:
!      â€˜RESULT = LSHIFT(I, SHIFT)â€™
  
  _Description_:
!      â€˜LSHIFTâ€™ returns a value corresponding to I with all of the bits
       shifted left by SHIFT places.  SHIFT shall be nonnegative and less
!      than or equal to â€˜BIT_SIZE(I)â€™, otherwise the result value is
       undefined.  Bits shifted out from the left end are lost; zeros are
       shifted in from the opposite end.
  
!      This function has been superseded by the â€˜ISHFTâ€™ intrinsic, which
!      is standard in Fortran 95 and later, and the â€˜SHIFTLâ€™ intrinsic,
       which is standard in Fortran 2008 and later.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be â€˜INTEGERâ€™.
!      SHIFT       The type shall be â€˜INTEGERâ€™.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™ and of the same kind as I.
  
  _Standard_:
       GNU extension
*************** _See also_:
*** 15589,15607 ****
  
  File: gfortran.info,  Node: LSTAT,  Next: LTIME,  Prev: LSHIFT,  Up: Intrinsic Procedures
  
! 8.182 'LSTAT' -- Get file status
  ================================
  
  _Synopsis_:
!      'CALL LSTAT(NAME, VALUES [, STATUS])'
!      'STATUS = LSTAT(NAME, VALUES)'
  
  _Description_:
!      'LSTAT' is identical to *note STAT::, except that if path is a
       symbolic link, then the operation is performed on the link itself,
       not the file that it refers to.
  
!      The elements in 'VALUES' are the same as described by *note STAT::.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
--- 15589,15607 ----
  
  File: gfortran.info,  Node: LSTAT,  Next: LTIME,  Prev: LSHIFT,  Up: Intrinsic Procedures
  
! 8.182 â€˜LSTATâ€™ -- Get file status
  ================================
  
  _Synopsis_:
!      â€˜CALL LSTAT(NAME, VALUES [, STATUS])â€™
!      â€˜STATUS = LSTAT(NAME, VALUES)â€™
  
  _Description_:
!      â€˜LSTATâ€™ is identical to *note STAT::, except that if path is a
       symbolic link, then the operation is performed on the link itself,
       not the file that it refers to.
  
!      The elements in â€˜VALUESâ€™ are the same as described by *note STAT::.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
*************** _Class_:
*** 15610,15619 ****
       Subroutine, function
  
  _Arguments_:
!      NAME        The type shall be 'CHARACTER' of the default
                   kind, a valid path within the file system.
!      VALUES      The type shall be 'INTEGER(4), DIMENSION(13)'.
!      STATUS      (Optional) status flag of type 'INTEGER(4)'.
                   Returns 0 on success and a system specific error
                   code otherwise.
  
--- 15610,15619 ----
       Subroutine, function
  
  _Arguments_:
!      NAME        The type shall be â€˜CHARACTERâ€™ of the default
                   kind, a valid path within the file system.
!      VALUES      The type shall be â€˜INTEGER(4), DIMENSION(13)â€™.
!      STATUS      (Optional) status flag of type â€˜INTEGER(4)â€™.
                   Returns 0 on success and a system specific error
                   code otherwise.
  
*************** _See also_:
*** 15632,15647 ****
  
  File: gfortran.info,  Node: LTIME,  Next: MALLOC,  Prev: LSTAT,  Up: Intrinsic Procedures
  
! 8.183 'LTIME' -- Convert time to local time info
  ================================================
  
  _Synopsis_:
!      'CALL LTIME(TIME, VALUES)'
  
  _Description_:
       Given a system time value TIME (as provided by the *note TIME::
       intrinsic), fills VALUES with values extracted from it appropriate
!      to the local time zone using 'localtime(3)'.
  
       This intrinsic routine is provided for backwards compatibility with
       GNU Fortran 77.  In new code, programmers should consider the use
--- 15632,15647 ----
  
  File: gfortran.info,  Node: LTIME,  Next: MALLOC,  Prev: LSTAT,  Up: Intrinsic Procedures
  
! 8.183 â€˜LTIMEâ€™ -- Convert time to local time info
  ================================================
  
  _Synopsis_:
!      â€˜CALL LTIME(TIME, VALUES)â€™
  
  _Description_:
       Given a system time value TIME (as provided by the *note TIME::
       intrinsic), fills VALUES with values extracted from it appropriate
!      to the local time zone using â€˜localtime(3)â€™.
  
       This intrinsic routine is provided for backwards compatibility with
       GNU Fortran 77.  In new code, programmers should consider the use
*************** _Class_:
*** 15652,15661 ****
       Subroutine
  
  _Arguments_:
!      TIME        An 'INTEGER' scalar expression corresponding to
!                  a system time, with 'INTENT(IN)'.
!      VALUES      A default 'INTEGER' array with 9 elements, with
!                  'INTENT(OUT)'.
  
  _Return value_:
       The elements of VALUES are assigned as follows:
--- 15652,15661 ----
       Subroutine
  
  _Arguments_:
!      TIME        An â€˜INTEGERâ€™ scalar expression corresponding to
!                  a system time, with â€˜INTENT(IN)â€™.
!      VALUES      A default â€˜INTEGERâ€™ array with 9 elements, with
!                  â€˜INTENT(OUT)â€™.
  
  _Return value_:
       The elements of VALUES are assigned as follows:
*************** _See also_:
*** 15685,15717 ****
  
  File: gfortran.info,  Node: MALLOC,  Next: MASKL,  Prev: LTIME,  Up: Intrinsic Procedures
  
! 8.184 'MALLOC' -- Allocate dynamic memory
  =========================================
  
  _Synopsis_:
!      'PTR = MALLOC(SIZE)'
  
  _Description_:
!      'MALLOC(SIZE)' allocates SIZE bytes of dynamic memory and returns
!      the address of the allocated memory.  The 'MALLOC' intrinsic is an
       extension intended to be used with Cray pointers, and is provided
       in GNU Fortran to allow the user to compile legacy code.  For new
       code using Fortran 95 pointers, the memory allocation intrinsic is
!      'ALLOCATE'.
  
  _Class_:
       Function
  
  _Arguments_:
!      SIZE        The type shall be 'INTEGER'.
  
  _Return value_:
!      The return value is of type 'INTEGER(K)', with K such that
!      variables of type 'INTEGER(K)' have the same size as C pointers
!      ('sizeof(void *)').
  
  _Example_:
!      The following example demonstrates the use of 'MALLOC' and 'FREE'
       with Cray pointers.
  
            program test_malloc
--- 15685,15717 ----
  
  File: gfortran.info,  Node: MALLOC,  Next: MASKL,  Prev: LTIME,  Up: Intrinsic Procedures
  
! 8.184 â€˜MALLOCâ€™ -- Allocate dynamic memory
  =========================================
  
  _Synopsis_:
!      â€˜PTR = MALLOC(SIZE)â€™
  
  _Description_:
!      â€˜MALLOC(SIZE)â€™ allocates SIZE bytes of dynamic memory and returns
!      the address of the allocated memory.  The â€˜MALLOCâ€™ intrinsic is an
       extension intended to be used with Cray pointers, and is provided
       in GNU Fortran to allow the user to compile legacy code.  For new
       code using Fortran 95 pointers, the memory allocation intrinsic is
!      â€˜ALLOCATEâ€™.
  
  _Class_:
       Function
  
  _Arguments_:
!      SIZE        The type shall be â€˜INTEGERâ€™.
  
  _Return value_:
!      The return value is of type â€˜INTEGER(K)â€™, with K such that
!      variables of type â€˜INTEGER(K)â€™ have the same size as C pointers
!      (â€˜sizeof(void *)â€™).
  
  _Example_:
!      The following example demonstrates the use of â€˜MALLOCâ€™ and â€˜FREEâ€™
       with Cray pointers.
  
            program test_malloc
*************** _See also_:
*** 15741,15766 ****
  
  File: gfortran.info,  Node: MASKL,  Next: MASKR,  Prev: MALLOC,  Up: Intrinsic Procedures
  
! 8.185 'MASKL' -- Left justified mask
  ====================================
  
  _Synopsis_:
!      'RESULT = MASKL(I[, KIND])'
  
  _Description_:
!      'MASKL(I[, KIND])' has its leftmost I bits set to 1, and the
       remaining bits set to 0.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           Shall be of type 'INTEGER'.
       KIND        Shall be a scalar constant expression of type
!                  'INTEGER'.
  
  _Return value_:
!      The return value is of type 'INTEGER'.  If KIND is present, it
       specifies the kind value of the return type; otherwise, it is of
       the default integer kind.
  
--- 15741,15766 ----
  
  File: gfortran.info,  Node: MASKL,  Next: MASKR,  Prev: MALLOC,  Up: Intrinsic Procedures
  
! 8.185 â€˜MASKLâ€™ -- Left justified mask
  ====================================
  
  _Synopsis_:
!      â€˜RESULT = MASKL(I[, KIND])â€™
  
  _Description_:
!      â€˜MASKL(I[, KIND])â€™ has its leftmost I bits set to 1, and the
       remaining bits set to 0.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           Shall be of type â€˜INTEGERâ€™.
       KIND        Shall be a scalar constant expression of type
!                  â€˜INTEGERâ€™.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™.  If KIND is present, it
       specifies the kind value of the return type; otherwise, it is of
       the default integer kind.
  
*************** _See also_:
*** 15773,15798 ****
  
  File: gfortran.info,  Node: MASKR,  Next: MATMUL,  Prev: MASKL,  Up: Intrinsic Procedures
  
! 8.186 'MASKR' -- Right justified mask
  =====================================
  
  _Synopsis_:
!      'RESULT = MASKR(I[, KIND])'
  
  _Description_:
!      'MASKL(I[, KIND])' has its rightmost I bits set to 1, and the
       remaining bits set to 0.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           Shall be of type 'INTEGER'.
       KIND        Shall be a scalar constant expression of type
!                  'INTEGER'.
  
  _Return value_:
!      The return value is of type 'INTEGER'.  If KIND is present, it
       specifies the kind value of the return type; otherwise, it is of
       the default integer kind.
  
--- 15773,15798 ----
  
  File: gfortran.info,  Node: MASKR,  Next: MATMUL,  Prev: MASKL,  Up: Intrinsic Procedures
  
! 8.186 â€˜MASKRâ€™ -- Right justified mask
  =====================================
  
  _Synopsis_:
!      â€˜RESULT = MASKR(I[, KIND])â€™
  
  _Description_:
!      â€˜MASKL(I[, KIND])â€™ has its rightmost I bits set to 1, and the
       remaining bits set to 0.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           Shall be of type â€˜INTEGERâ€™.
       KIND        Shall be a scalar constant expression of type
!                  â€˜INTEGERâ€™.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™.  If KIND is present, it
       specifies the kind value of the return type; otherwise, it is of
       the default integer kind.
  
*************** _See also_:
*** 15805,15815 ****
  
  File: gfortran.info,  Node: MATMUL,  Next: MAX,  Prev: MASKR,  Up: Intrinsic Procedures
  
! 8.187 'MATMUL' -- matrix multiplication
  =======================================
  
  _Synopsis_:
!      'RESULT = MATMUL(MATRIX_A, MATRIX_B)'
  
  _Description_:
       Performs a matrix multiplication on numeric or logical arguments.
--- 15805,15815 ----
  
  File: gfortran.info,  Node: MATMUL,  Next: MAX,  Prev: MASKR,  Up: Intrinsic Procedures
  
! 8.187 â€˜MATMULâ€™ -- matrix multiplication
  =======================================
  
  _Synopsis_:
!      â€˜RESULT = MATMUL(MATRIX_A, MATRIX_B)â€™
  
  _Description_:
       Performs a matrix multiplication on numeric or logical arguments.
*************** _Class_:
*** 15819,15832 ****
  
  _Arguments_:
  
!      MATRIX_A    An array of 'INTEGER', 'REAL', 'COMPLEX',
!                  'UNSIGNED' or 'LOGICAL' type, with a rank of one
                   or two.
                   
!      MATRIX_B    An array of 'INTEGER', 'REAL', or 'COMPLEX' type
!                  if MATRIX_A is of 'INTEGER', 'REAL', or
!                  'COMPLEX' type.  Otherwise, if MATRIX_A is an
!                  array of 'UNSIGNED' or 'LOGICAL' type, the type
                   shall be the same as that of MATRIX_A.  The rank
                   shall be one or two, and the first (or only)
                   dimension of MATRIX_B shall be equal to the last
--- 15819,15832 ----
  
  _Arguments_:
  
!      MATRIX_A    An array of â€˜INTEGERâ€™, â€˜REALâ€™, â€˜COMPLEXâ€™,
!                  â€˜UNSIGNEDâ€™ or â€˜LOGICALâ€™ type, with a rank of one
                   or two.
                   
!      MATRIX_B    An array of â€˜INTEGERâ€™, â€˜REALâ€™, or â€˜COMPLEXâ€™ type
!                  if MATRIX_A is of â€˜INTEGERâ€™, â€˜REALâ€™, or
!                  â€˜COMPLEXâ€™ type.  Otherwise, if MATRIX_A is an
!                  array of â€˜UNSIGNEDâ€™ or â€˜LOGICALâ€™ type, the type
                   shall be the same as that of MATRIX_A.  The rank
                   shall be one or two, and the first (or only)
                   dimension of MATRIX_B shall be equal to the last
*************** _Arguments_:
*** 15836,15855 ****
  _Return value_:
       The matrix product of MATRIX_A and MATRIX_B.  The type and kind of
       the result follow the usual type and kind promotion rules, as for
!      the '*' or '.AND.' operators.
  
  _Standard_:
!      Fortran 90 and later.  Extension for'UNSIGNED' (*note Unsigned
       integers::)
  
  
  File: gfortran.info,  Node: MAX,  Next: MAXEXPONENT,  Prev: MATMUL,  Up: Intrinsic Procedures
  
! 8.188 'MAX' -- Maximum value of an argument list
  ================================================
  
  _Synopsis_:
!      'RESULT = MAX(A1, A2 [, A3 [, ...]])'
  
  _Description_:
       Returns the argument with the largest (most positive) value.
--- 15836,15855 ----
  _Return value_:
       The matrix product of MATRIX_A and MATRIX_B.  The type and kind of
       the result follow the usual type and kind promotion rules, as for
!      the â€˜*â€™ or â€˜.AND.â€™ operators.
  
  _Standard_:
!      Fortran 90 and later.  Extension forâ€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  
  File: gfortran.info,  Node: MAX,  Next: MAXEXPONENT,  Prev: MATMUL,  Up: Intrinsic Procedures
  
! 8.188 â€˜MAXâ€™ -- Maximum value of an argument list
  ================================================
  
  _Synopsis_:
!      â€˜RESULT = MAX(A1, A2 [, A3 [, ...]])â€™
  
  _Description_:
       Returns the argument with the largest (most positive) value.
*************** _Class_:
*** 15858,15865 ****
       Elemental function
  
  _Arguments_:
!      A1          The type shall be 'INTEGER', 'REAL' or
!                  'UNSIGNED'.
       A2, A3,     An expression of the same type and kind as A1.
       ...         (As a GNU extension, arguments of different
                   kinds are permitted.)
--- 15858,15865 ----
       Elemental function
  
  _Arguments_:
!      A1          The type shall be â€˜INTEGERâ€™, â€˜REALâ€™ or
!                  â€˜UNSIGNEDâ€™.
       A2, A3,     An expression of the same type and kind as A1.
       ...         (As a GNU extension, arguments of different
                   kinds are permitted.)
*************** _Return value_:
*** 15871,15884 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'MAX0(A1)'     'INTEGER(4) A1'   'INTEGER(4)'   Fortran 77 and later
!      'AMAX0(A1)'    'INTEGER(4) A1'   'REAL(MAX(X))' Fortran 77 and later
!      'MAX1(A1)'     'REAL A1'         'INT(MAX(X))'  Fortran 77 and later
!      'AMAX1(A1)'    'REAL(4) A1'      'REAL(4)'      Fortran 77 and later
!      'DMAX1(A1)'    'REAL(8) A1'      'REAL(8)'      Fortran 77 and later
  
  _Standard_:
!      Fortran 77 and later.  Extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  _See also_:
--- 15871,15884 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜MAX0(A1)â€™     â€˜INTEGER(4) A1â€™   â€˜INTEGER(4)â€™   Fortran 77 and later
!      â€˜AMAX0(A1)â€™    â€˜INTEGER(4) A1â€™   â€˜REAL(MAX(X))â€™ Fortran 77 and later
!      â€˜MAX1(A1)â€™     â€˜REAL A1â€™         â€˜INT(MAX(X))â€™  Fortran 77 and later
!      â€˜AMAX1(A1)â€™    â€˜REAL(4) A1â€™      â€˜REAL(4)â€™      Fortran 77 and later
!      â€˜DMAX1(A1)â€™    â€˜REAL(8) A1â€™      â€˜REAL(8)â€™      Fortran 77 and later
  
  _Standard_:
!      Fortran 77 and later.  Extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  _See also_:
*************** _See also_:
*** 15889,15912 ****
  
  File: gfortran.info,  Node: MAXEXPONENT,  Next: MAXLOC,  Prev: MAX,  Up: Intrinsic Procedures
  
! 8.189 'MAXEXPONENT' -- Maximum exponent of a real kind
  ======================================================
  
  _Synopsis_:
!      'RESULT = MAXEXPONENT(X)'
  
  _Description_:
!      'MAXEXPONENT(X)' returns the maximum exponent in the model of the
!      type of 'X'.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      X           Shall be of type 'REAL'.
  
  _Return value_:
!      The return value is of type 'INTEGER' and of the default integer
       kind.
  
  _Example_:
--- 15889,15912 ----
  
  File: gfortran.info,  Node: MAXEXPONENT,  Next: MAXLOC,  Prev: MAX,  Up: Intrinsic Procedures
  
! 8.189 â€˜MAXEXPONENTâ€™ -- Maximum exponent of a real kind
  ======================================================
  
  _Synopsis_:
!      â€˜RESULT = MAXEXPONENT(X)â€™
  
  _Description_:
!      â€˜MAXEXPONENT(X)â€™ returns the maximum exponent in the model of the
!      type of â€˜Xâ€™.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      X           Shall be of type â€˜REALâ€™.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™ and of the default integer
       kind.
  
  _Example_:
*************** _Standard_:
*** 15924,15947 ****
  
  File: gfortran.info,  Node: MAXLOC,  Next: MAXVAL,  Prev: MAXEXPONENT,  Up: Intrinsic Procedures
  
! 8.190 'MAXLOC' -- Location of the maximum value within an array
  ===============================================================
  
  _Synopsis_:
!      'RESULT = MAXLOC(ARRAY, DIM [, MASK] [,KIND] [,BACK])'
!      'RESULT = MAXLOC(ARRAY [, MASK] [,KIND] [,BACK])'
  
  _Description_:
       Determines the location of the element in the array with the
       maximum value, or, if the DIM argument is supplied, determines the
       locations of the maximum element along each row of the array in the
       DIM direction.  If MASK is present, only the elements for which
!      MASK is '.TRUE.' are considered.  If more than one element in the
       array has the maximum value, the location returned is that of the
       first such element in array element order if the BACK is not
       present, or is false; if BACK is true, the location returned is
       that of the last such element.  If the array has zero size, or all
!      of the elements of MASK are '.FALSE.', then the result is an array
       of zeroes.  Similarly, if DIM is supplied and all of the elements
       of MASK along a given row are zero, the result value for that row
       is zero.
--- 15924,15947 ----
  
  File: gfortran.info,  Node: MAXLOC,  Next: MAXVAL,  Prev: MAXEXPONENT,  Up: Intrinsic Procedures
  
! 8.190 â€˜MAXLOCâ€™ -- Location of the maximum value within an array
  ===============================================================
  
  _Synopsis_:
!      â€˜RESULT = MAXLOC(ARRAY, DIM [, MASK] [,KIND] [,BACK])â€™
!      â€˜RESULT = MAXLOC(ARRAY [, MASK] [,KIND] [,BACK])â€™
  
  _Description_:
       Determines the location of the element in the array with the
       maximum value, or, if the DIM argument is supplied, determines the
       locations of the maximum element along each row of the array in the
       DIM direction.  If MASK is present, only the elements for which
!      MASK is â€˜.TRUE.â€™ are considered.  If more than one element in the
       array has the maximum value, the location returned is that of the
       first such element in array element order if the BACK is not
       present, or is false; if BACK is true, the location returned is
       that of the last such element.  If the array has zero size, or all
!      of the elements of MASK are â€˜.FALSE.â€™, then the result is an array
       of zeroes.  Similarly, if DIM is supplied and all of the elements
       of MASK along a given row are zero, the result value for that row
       is zero.
*************** _Class_:
*** 15950,15967 ****
       Transformational function
  
  _Arguments_:
!      ARRAY       Shall be an array of type 'INTEGER', 'REAL',
!                  'UNSIGNED' or 'CHARACTER'.
!      DIM         (Optional) Shall be a scalar of type 'INTEGER',
                   with a value between one and the rank of ARRAY,
                   inclusive.  It may not be an optional dummy
                   argument.
!      MASK        Shall be of type 'LOGICAL', and conformable with
                   ARRAY.
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
!      BACK        (Optional) A scalar of type 'LOGICAL'.
  
  _Return value_:
       If DIM is absent, the result is a rank-one array with a length
--- 15950,15967 ----
       Transformational function
  
  _Arguments_:
!      ARRAY       Shall be an array of type â€˜INTEGERâ€™, â€˜REALâ€™,
!                  â€˜UNSIGNEDâ€™ or â€˜CHARACTERâ€™.
!      DIM         (Optional) Shall be a scalar of type â€˜INTEGERâ€™,
                   with a value between one and the rank of ARRAY,
                   inclusive.  It may not be an optional dummy
                   argument.
!      MASK        Shall be of type â€˜LOGICALâ€™, and conformable with
                   ARRAY.
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
!      BACK        (Optional) A scalar of type â€˜LOGICALâ€™.
  
  _Return value_:
       If DIM is absent, the result is a rank-one array with a length
*************** _Return value_:
*** 15973,15981 ****
       integer of kind KIND, otherwise it is of default kind.
  
  _Standard_:
!      Fortran 95 and later; ARRAY of 'CHARACTER' and the KIND argument
       are available in Fortran 2003 and later.  The BACK argument is
!      available in Fortran 2008 and later.  Extension for'UNSIGNED'
       (*note Unsigned integers::).
  
  _See also_:
--- 15973,15981 ----
       integer of kind KIND, otherwise it is of default kind.
  
  _Standard_:
!      Fortran 95 and later; ARRAY of â€˜CHARACTERâ€™ and the KIND argument
       are available in Fortran 2003 and later.  The BACK argument is
!      available in Fortran 2008 and later.  Extension forâ€˜UNSIGNEDâ€™
       (*note Unsigned integers::).
  
  _See also_:
*************** _See also_:
*** 15986,16019 ****
  
  File: gfortran.info,  Node: MAXVAL,  Next: MCLOCK,  Prev: MAXLOC,  Up: Intrinsic Procedures
  
! 8.191 'MAXVAL' -- Maximum value of an array
  ===========================================
  
  _Synopsis_:
!      'RESULT = MAXVAL(ARRAY, DIM [, MASK])'
!      'RESULT = MAXVAL(ARRAY [, MASK])'
  
  _Description_:
       Determines the maximum value of the elements in an array value, or,
       if the DIM argument is supplied, determines the maximum value along
       each row of the array in the DIM direction.  If MASK is present,
!      only the elements for which MASK is '.TRUE.' are considered.  If
       the array has zero size, or all of the elements of MASK are
!      '.FALSE.', then the result is '-HUGE(ARRAY)' if ARRAY is of type
!      'INTEGER' or 'REAL', '0' if it is type 'UNSIGNED'.  or a string of
       nulls if ARRAY is of character type.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      ARRAY       Shall be an array of type 'INTEGER', 'REAL',
!                  'UNSIGNED' or 'CHARACTER'.
!      DIM         (Optional) Shall be a scalar of type 'INTEGER',
                   with a value between one and the rank of ARRAY,
                   inclusive.  It may not be an optional dummy
                   argument.
!      MASK        (Optional) Shall be of type 'LOGICAL', and
                   conformable with ARRAY.
  
  _Return value_:
--- 15986,16019 ----
  
  File: gfortran.info,  Node: MAXVAL,  Next: MCLOCK,  Prev: MAXLOC,  Up: Intrinsic Procedures
  
! 8.191 â€˜MAXVALâ€™ -- Maximum value of an array
  ===========================================
  
  _Synopsis_:
!      â€˜RESULT = MAXVAL(ARRAY, DIM [, MASK])â€™
!      â€˜RESULT = MAXVAL(ARRAY [, MASK])â€™
  
  _Description_:
       Determines the maximum value of the elements in an array value, or,
       if the DIM argument is supplied, determines the maximum value along
       each row of the array in the DIM direction.  If MASK is present,
!      only the elements for which MASK is â€˜.TRUE.â€™ are considered.  If
       the array has zero size, or all of the elements of MASK are
!      â€˜.FALSE.â€™, then the result is â€˜-HUGE(ARRAY)â€™ if ARRAY is of type
!      â€˜INTEGERâ€™ or â€˜REALâ€™, â€˜0â€™ if it is type â€˜UNSIGNEDâ€™.  or a string of
       nulls if ARRAY is of character type.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      ARRAY       Shall be an array of type â€˜INTEGERâ€™, â€˜REALâ€™,
!                  â€˜UNSIGNEDâ€™ or â€˜CHARACTERâ€™.
!      DIM         (Optional) Shall be a scalar of type â€˜INTEGERâ€™,
                   with a value between one and the rank of ARRAY,
                   inclusive.  It may not be an optional dummy
                   argument.
!      MASK        (Optional) Shall be of type â€˜LOGICALâ€™, and
                   conformable with ARRAY.
  
  _Return value_:
*************** _Return value_:
*** 16024,16030 ****
       is of the same type and kind as ARRAY.
  
  _Standard_:
!      Fortran 90 and later, extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  _See also_:
--- 16024,16030 ----
       is of the same type and kind as ARRAY.
  
  _Standard_:
!      Fortran 90 and later, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  _See also_:
*************** _See also_:
*** 16034,16051 ****
  
  File: gfortran.info,  Node: MCLOCK,  Next: MCLOCK8,  Prev: MAXVAL,  Up: Intrinsic Procedures
  
! 8.192 'MCLOCK' -- Time function
  ===============================
  
  _Synopsis_:
!      'RESULT = MCLOCK()'
  
  _Description_:
       Returns the number of clock ticks since the start of the process,
!      based on the function 'clock(3)' in the C standard library.
  
       This intrinsic is not fully portable, such as to systems with
!      32-bit 'INTEGER' types but supporting times wider than 32 bits.
       Therefore, the values returned by this intrinsic might be, or
       become, negative, or numerically less than previous values, during
       a single run of the compiled program.
--- 16034,16051 ----
  
  File: gfortran.info,  Node: MCLOCK,  Next: MCLOCK8,  Prev: MAXVAL,  Up: Intrinsic Procedures
  
! 8.192 â€˜MCLOCKâ€™ -- Time function
  ===============================
  
  _Synopsis_:
!      â€˜RESULT = MCLOCK()â€™
  
  _Description_:
       Returns the number of clock ticks since the start of the process,
!      based on the function â€˜clock(3)â€™ in the C standard library.
  
       This intrinsic is not fully portable, such as to systems with
!      32-bit â€˜INTEGERâ€™ types but supporting times wider than 32 bits.
       Therefore, the values returned by this intrinsic might be, or
       become, negative, or numerically less than previous values, during
       a single run of the compiled program.
*************** _Class_:
*** 16054,16062 ****
       Function
  
  _Return value_:
!      The return value is a scalar of type 'INTEGER(4)', equal to the
!      number of clock ticks since the start of the process, or '-1' if
!      the system does not support 'clock(3)'.
  
  _Standard_:
       GNU extension
--- 16054,16062 ----
       Function
  
  _Return value_:
!      The return value is a scalar of type â€˜INTEGER(4)â€™, equal to the
!      number of clock ticks since the start of the process, or â€˜-1â€™ if
!      the system does not support â€˜clock(3)â€™.
  
  _Standard_:
       GNU extension
*************** _See also_:
*** 16071,16090 ****
  
  File: gfortran.info,  Node: MCLOCK8,  Next: MERGE,  Prev: MCLOCK,  Up: Intrinsic Procedures
  
! 8.193 'MCLOCK8' -- Time function (64-bit)
  =========================================
  
  _Synopsis_:
!      'RESULT = MCLOCK8()'
  
  _Description_:
       Returns the number of clock ticks since the start of the process,
!      based on the function 'clock(3)' in the C standard library.
  
       _Warning:_ this intrinsic does not increase the range of the timing
!      values over that returned by 'clock(3)'.  On a system with a 32-bit
!      'clock(3)', 'MCLOCK8' returns a 32-bit value, even though it is
!      converted to a 64-bit 'INTEGER(8)' value.  That means overflows of
       the 32-bit value can still occur.  Therefore, the values returned
       by this intrinsic might be or become negative or numerically less
       than previous values during a single run of the compiled program.
--- 16071,16090 ----
  
  File: gfortran.info,  Node: MCLOCK8,  Next: MERGE,  Prev: MCLOCK,  Up: Intrinsic Procedures
  
! 8.193 â€˜MCLOCK8â€™ -- Time function (64-bit)
  =========================================
  
  _Synopsis_:
!      â€˜RESULT = MCLOCK8()â€™
  
  _Description_:
       Returns the number of clock ticks since the start of the process,
!      based on the function â€˜clock(3)â€™ in the C standard library.
  
       _Warning:_ this intrinsic does not increase the range of the timing
!      values over that returned by â€˜clock(3)â€™.  On a system with a 32-bit
!      â€˜clock(3)â€™, â€˜MCLOCK8â€™ returns a 32-bit value, even though it is
!      converted to a 64-bit â€˜INTEGER(8)â€™ value.  That means overflows of
       the 32-bit value can still occur.  Therefore, the values returned
       by this intrinsic might be or become negative or numerically less
       than previous values during a single run of the compiled program.
*************** _Class_:
*** 16093,16101 ****
       Function
  
  _Return value_:
!      The return value is a scalar of type 'INTEGER(8)', equal to the
!      number of clock ticks since the start of the process, or '-1' if
!      the system does not support 'clock(3)'.
  
  _Standard_:
       GNU extension
--- 16093,16101 ----
       Function
  
  _Return value_:
!      The return value is a scalar of type â€˜INTEGER(8)â€™, equal to the
!      number of clock ticks since the start of the process, or â€˜-1â€™ if
!      the system does not support â€˜clock(3)â€™.
  
  _Standard_:
       GNU extension
*************** _See also_:
*** 16110,16125 ****
  
  File: gfortran.info,  Node: MERGE,  Next: MERGE_BITS,  Prev: MCLOCK8,  Up: Intrinsic Procedures
  
! 8.194 'MERGE' -- Merge variables
  ================================
  
  _Synopsis_:
!      'RESULT = MERGE(TSOURCE, FSOURCE, MASK)'
  
  _Description_:
       Select values from two arrays according to a logical mask.  The
!      result is equal to TSOURCE if MASK is '.TRUE.', or equal to FSOURCE
!      if it is '.FALSE.'.
  
  _Class_:
       Elemental function
--- 16110,16125 ----
  
  File: gfortran.info,  Node: MERGE,  Next: MERGE_BITS,  Prev: MCLOCK8,  Up: Intrinsic Procedures
  
! 8.194 â€˜MERGEâ€™ -- Merge variables
  ================================
  
  _Synopsis_:
!      â€˜RESULT = MERGE(TSOURCE, FSOURCE, MASK)â€™
  
  _Description_:
       Select values from two arrays according to a logical mask.  The
!      result is equal to TSOURCE if MASK is â€˜.TRUE.â€™, or equal to FSOURCE
!      if it is â€˜.FALSE.â€™.
  
  _Class_:
       Elemental function
*************** _Arguments_:
*** 16128,16134 ****
       TSOURCE     May be of any type.
       FSOURCE     Shall be of the same type and type parameters as
                   TSOURCE.
!      MASK        Shall be of type 'LOGICAL'.
  
  _Return value_:
       The result is of the same type and type parameters as TSOURCE.
--- 16128,16134 ----
       TSOURCE     May be of any type.
       FSOURCE     Shall be of the same type and type parameters as
                   TSOURCE.
!      MASK        Shall be of type â€˜LOGICALâ€™.
  
  _Return value_:
       The result is of the same type and type parameters as TSOURCE.
*************** _Standard_:
*** 16139,16152 ****
  
  File: gfortran.info,  Node: MERGE_BITS,  Next: MIN,  Prev: MERGE,  Up: Intrinsic Procedures
  
! 8.195 'MERGE_BITS' -- Merge of bits under mask
  ==============================================
  
  _Synopsis_:
!      'RESULT = MERGE_BITS(I, J, MASK)'
  
  _Description_:
!      'MERGE_BITS(I, J, MASK)' merges the bits of I and J as determined
       by the mask.  The i-th bit of the result is equal to the i-th bit
       of I if the i-th bit of MASK is 1; it is equal to the i-th bit of J
       otherwise.
--- 16139,16152 ----
  
  File: gfortran.info,  Node: MERGE_BITS,  Next: MIN,  Prev: MERGE,  Up: Intrinsic Procedures
  
! 8.195 â€˜MERGE_BITSâ€™ -- Merge of bits under mask
  ==============================================
  
  _Synopsis_:
!      â€˜RESULT = MERGE_BITS(I, J, MASK)â€™
  
  _Description_:
!      â€˜MERGE_BITS(I, J, MASK)â€™ merges the bits of I and J as determined
       by the mask.  The i-th bit of the result is equal to the i-th bit
       of I if the i-th bit of MASK is 1; it is equal to the i-th bit of J
       otherwise.
*************** _Class_:
*** 16155,16161 ****
       Elemental function
  
  _Arguments_:
!      I           Shall be of type 'INTEGER', 'UNSIGNED' or a
                   boz-literal-constant.  I and J shall not both be
                   boz-literal-constants.
       J           The type shall be the same type as I with the
--- 16155,16161 ----
       Elemental function
  
  _Arguments_:
!      I           Shall be of type â€˜INTEGERâ€™, â€˜UNSIGNEDâ€™ or a
                   boz-literal-constant.  I and J shall not both be
                   boz-literal-constants.
       J           The type shall be the same type as I with the
*************** _Return value_:
*** 16168,16184 ****
       The result is of the same type and kind as I.
  
  _Standard_:
!      Fortran 2008 and later, extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  
  File: gfortran.info,  Node: MIN,  Next: MINEXPONENT,  Prev: MERGE_BITS,  Up: Intrinsic Procedures
  
! 8.196 'MIN' -- Minimum value of an argument list
  ================================================
  
  _Synopsis_:
!      'RESULT = MIN(A1, A2 [, A3, ...])'
  
  _Description_:
       Returns the argument with the smallest (most negative) value.
--- 16168,16184 ----
       The result is of the same type and kind as I.
  
  _Standard_:
!      Fortran 2008 and later, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  
  File: gfortran.info,  Node: MIN,  Next: MINEXPONENT,  Prev: MERGE_BITS,  Up: Intrinsic Procedures
  
! 8.196 â€˜MINâ€™ -- Minimum value of an argument list
  ================================================
  
  _Synopsis_:
!      â€˜RESULT = MIN(A1, A2 [, A3, ...])â€™
  
  _Description_:
       Returns the argument with the smallest (most negative) value.
*************** _Class_:
*** 16187,16194 ****
       Elemental function
  
  _Arguments_:
!      A1          The type shall be 'INTEGER', 'REAL' or
!                  'UNSIGNED'.
       A2, A3,     An expression of the same type and kind as A1.
       ...         (As a GNU extension, arguments of different
                   kinds are permitted.)
--- 16187,16194 ----
       Elemental function
  
  _Arguments_:
!      A1          The type shall be â€˜INTEGERâ€™, â€˜REALâ€™ or
!                  â€˜UNSIGNEDâ€™.
       A2, A3,     An expression of the same type and kind as A1.
       ...         (As a GNU extension, arguments of different
                   kinds are permitted.)
*************** _Return value_:
*** 16200,16213 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'MIN0(A1)'     'INTEGER(4) A1'   'INTEGER(4)'   Fortran 77 and later
!      'AMIN0(A1)'    'INTEGER(4) A1'   'REAL(4)'      Fortran 77 and later
!      'MIN1(A1)'     'REAL A1'         'INTEGER(4)'   Fortran 77 and later
!      'AMIN1(A1)'    'REAL(4) A1'      'REAL(4)'      Fortran 77 and later
!      'DMIN1(A1)'    'REAL(8) A1'      'REAL(8)'      Fortran 77 and later
  
  _Standard_:
!      Fortran 77 and later, extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  _See also_:
--- 16200,16213 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜MIN0(A1)â€™     â€˜INTEGER(4) A1â€™   â€˜INTEGER(4)â€™   Fortran 77 and later
!      â€˜AMIN0(A1)â€™    â€˜INTEGER(4) A1â€™   â€˜REAL(4)â€™      Fortran 77 and later
!      â€˜MIN1(A1)â€™     â€˜REAL A1â€™         â€˜INTEGER(4)â€™   Fortran 77 and later
!      â€˜AMIN1(A1)â€™    â€˜REAL(4) A1â€™      â€˜REAL(4)â€™      Fortran 77 and later
!      â€˜DMIN1(A1)â€™    â€˜REAL(8) A1â€™      â€˜REAL(8)â€™      Fortran 77 and later
  
  _Standard_:
!      Fortran 77 and later, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  _See also_:
*************** _See also_:
*** 16218,16245 ****
  
  File: gfortran.info,  Node: MINEXPONENT,  Next: MINLOC,  Prev: MIN,  Up: Intrinsic Procedures
  
! 8.197 'MINEXPONENT' -- Minimum exponent of a real kind
  ======================================================
  
  _Synopsis_:
!      'RESULT = MINEXPONENT(X)'
  
  _Description_:
!      'MINEXPONENT(X)' returns the minimum exponent in the model of the
!      type of 'X'.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      X           Shall be of type 'REAL'.
  
  _Return value_:
!      The return value is of type 'INTEGER' and of the default integer
       kind.
  
  _Example_:
!      See 'MAXEXPONENT' for an example.
  
  _Standard_:
       Fortran 90 and later
--- 16218,16245 ----
  
  File: gfortran.info,  Node: MINEXPONENT,  Next: MINLOC,  Prev: MIN,  Up: Intrinsic Procedures
  
! 8.197 â€˜MINEXPONENTâ€™ -- Minimum exponent of a real kind
  ======================================================
  
  _Synopsis_:
!      â€˜RESULT = MINEXPONENT(X)â€™
  
  _Description_:
!      â€˜MINEXPONENT(X)â€™ returns the minimum exponent in the model of the
!      type of â€˜Xâ€™.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      X           Shall be of type â€˜REALâ€™.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™ and of the default integer
       kind.
  
  _Example_:
!      See â€˜MAXEXPONENTâ€™ for an example.
  
  _Standard_:
       Fortran 90 and later
*************** _Standard_:
*** 16247,16270 ****
  
  File: gfortran.info,  Node: MINLOC,  Next: MINVAL,  Prev: MINEXPONENT,  Up: Intrinsic Procedures
  
! 8.198 'MINLOC' -- Location of the minimum value within an array
  ===============================================================
  
  _Synopsis_:
!      'RESULT = MINLOC(ARRAY, DIM [, MASK] [,KIND] [,BACK])'
!      'RESULT = MINLOC(ARRAY [, MASK], [,KIND] [,BACK])'
  
  _Description_:
       Determines the location of the element in the array with the
       minimum value, or, if the DIM argument is supplied, determines the
       locations of the minimum element along each row of the array in the
       DIM direction.  If MASK is present, only the elements for which
!      MASK is '.TRUE.' are considered.  If more than one element in the
       array has the minimum value, the location returned is that of the
       first such element in array element order if the BACK is not
       present, or is false; if BACK is true, the location returned is
       that of the last such element.  If the array has zero size, or all
!      of the elements of MASK are '.FALSE.', then the result is an array
       of zeroes.  Similarly, if DIM is supplied and all of the elements
       of MASK along a given row are zero, the result value for that row
       is zero.
--- 16247,16270 ----
  
  File: gfortran.info,  Node: MINLOC,  Next: MINVAL,  Prev: MINEXPONENT,  Up: Intrinsic Procedures
  
! 8.198 â€˜MINLOCâ€™ -- Location of the minimum value within an array
  ===============================================================
  
  _Synopsis_:
!      â€˜RESULT = MINLOC(ARRAY, DIM [, MASK] [,KIND] [,BACK])â€™
!      â€˜RESULT = MINLOC(ARRAY [, MASK], [,KIND] [,BACK])â€™
  
  _Description_:
       Determines the location of the element in the array with the
       minimum value, or, if the DIM argument is supplied, determines the
       locations of the minimum element along each row of the array in the
       DIM direction.  If MASK is present, only the elements for which
!      MASK is â€˜.TRUE.â€™ are considered.  If more than one element in the
       array has the minimum value, the location returned is that of the
       first such element in array element order if the BACK is not
       present, or is false; if BACK is true, the location returned is
       that of the last such element.  If the array has zero size, or all
!      of the elements of MASK are â€˜.FALSE.â€™, then the result is an array
       of zeroes.  Similarly, if DIM is supplied and all of the elements
       of MASK along a given row are zero, the result value for that row
       is zero.
*************** _Class_:
*** 16273,16290 ****
       Transformational function
  
  _Arguments_:
!      ARRAY       Shall be an array of type 'INTEGER', 'REAL',
!                  'CHARACTER' or 'UNSIGNED'.
!      DIM         (Optional) Shall be a scalar of type 'INTEGER',
                   with a value between one and the rank of ARRAY,
                   inclusive.  It may not be an optional dummy
                   argument.
!      MASK        Shall be of type 'LOGICAL', and conformable with
                   ARRAY.
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
!      BACK        (Optional) A scalar of type 'LOGICAL'.
  
  _Return value_:
       If DIM is absent, the result is a rank-one array with a length
--- 16273,16290 ----
       Transformational function
  
  _Arguments_:
!      ARRAY       Shall be an array of type â€˜INTEGERâ€™, â€˜REALâ€™,
!                  â€˜CHARACTERâ€™ or â€˜UNSIGNEDâ€™.
!      DIM         (Optional) Shall be a scalar of type â€˜INTEGERâ€™,
                   with a value between one and the rank of ARRAY,
                   inclusive.  It may not be an optional dummy
                   argument.
!      MASK        Shall be of type â€˜LOGICALâ€™, and conformable with
                   ARRAY.
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
!      BACK        (Optional) A scalar of type â€˜LOGICALâ€™.
  
  _Return value_:
       If DIM is absent, the result is a rank-one array with a length
*************** _Return value_:
*** 16296,16304 ****
       integer of kind KIND, otherwise it is of default kind.
  
  _Standard_:
!      Fortran 90 and later; ARRAY of 'CHARACTER' and the KIND argument
       are available in Fortran 2003 and later.  The BACK argument is
!      available in Fortran 2008 and later.  Extension for 'UNSIGNED'
       (*note Unsigned integers::).
  
  _See also_:
--- 16296,16304 ----
       integer of kind KIND, otherwise it is of default kind.
  
  _Standard_:
!      Fortran 90 and later; ARRAY of â€˜CHARACTERâ€™ and the KIND argument
       are available in Fortran 2003 and later.  The BACK argument is
!      available in Fortran 2008 and later.  Extension for â€˜UNSIGNEDâ€™
       (*note Unsigned integers::).
  
  _See also_:
*************** _See also_:
*** 16309,16341 ****
  
  File: gfortran.info,  Node: MINVAL,  Next: MOD,  Prev: MINLOC,  Up: Intrinsic Procedures
  
! 8.199 'MINVAL' -- Minimum value of an array
  ===========================================
  
  _Synopsis_:
!      'RESULT = MINVAL(ARRAY, DIM [, MASK])'
!      'RESULT = MINVAL(ARRAY [, MASK])'
  
  _Description_:
       Determines the minimum value of the elements in an array value, or,
       if the DIM argument is supplied, determines the minimum value along
       each row of the array in the DIM direction.  If MASK is present,
!      only the elements for which MASK is '.TRUE.' are considered.  If
       the array has zero size, or all of the elements of MASK are
!      '.FALSE.', then the result is 'HUGE(ARRAY)' if ARRAY is numeric, or
!      a string of 'CHAR(255)' characters if ARRAY is of character type.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      ARRAY       Shall be an array of type 'INTEGER', 'REAL' or
!                  'UNSIGNED'.
!      DIM         (Optional) Shall be a scalar of type 'INTEGER',
                   with a value between one and the rank of ARRAY,
                   inclusive.  It may not be an optional dummy
                   argument.
!      MASK        Shall be of type 'LOGICAL', and conformable with
                   ARRAY.
  
  _Return value_:
--- 16309,16341 ----
  
  File: gfortran.info,  Node: MINVAL,  Next: MOD,  Prev: MINLOC,  Up: Intrinsic Procedures
  
! 8.199 â€˜MINVALâ€™ -- Minimum value of an array
  ===========================================
  
  _Synopsis_:
!      â€˜RESULT = MINVAL(ARRAY, DIM [, MASK])â€™
!      â€˜RESULT = MINVAL(ARRAY [, MASK])â€™
  
  _Description_:
       Determines the minimum value of the elements in an array value, or,
       if the DIM argument is supplied, determines the minimum value along
       each row of the array in the DIM direction.  If MASK is present,
!      only the elements for which MASK is â€˜.TRUE.â€™ are considered.  If
       the array has zero size, or all of the elements of MASK are
!      â€˜.FALSE.â€™, then the result is â€˜HUGE(ARRAY)â€™ if ARRAY is numeric, or
!      a string of â€˜CHAR(255)â€™ characters if ARRAY is of character type.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      ARRAY       Shall be an array of type â€˜INTEGERâ€™, â€˜REALâ€™ or
!                  â€˜UNSIGNEDâ€™.
!      DIM         (Optional) Shall be a scalar of type â€˜INTEGERâ€™,
                   with a value between one and the rank of ARRAY,
                   inclusive.  It may not be an optional dummy
                   argument.
!      MASK        Shall be of type â€˜LOGICALâ€™, and conformable with
                   ARRAY.
  
  _Return value_:
*************** _Return value_:
*** 16346,16352 ****
       is of the same type and kind as ARRAY.
  
  _Standard_:
!      Fortran 90 and later, extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  _See also_:
--- 16346,16352 ----
       is of the same type and kind as ARRAY.
  
  _Standard_:
!      Fortran 90 and later, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  _See also_:
*************** _See also_:
*** 16356,16390 ****
  
  File: gfortran.info,  Node: MOD,  Next: MODULO,  Prev: MINVAL,  Up: Intrinsic Procedures
  
! 8.200 'MOD' -- Remainder function
  =================================
  
  _Synopsis_:
!      'RESULT = MOD(A, P)'
  
  _Description_:
!      'MOD(A,P)' computes the remainder of the division of A by P.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           Shall be a scalar of type 'INTEGER', 'REAL' or
!                  'UNSIGNED'.
       P           Shall be a scalar of the same type and kind as A
                   and not equal to zero.  (As a GNU extension,
                   arguments of different kinds are permitted.)
  
  _Return value_:
!      The return value is the result of 'A - (INT(A/P) * P)'.  The type
       and kind of the return value is the same as that of the arguments.
       The returned value has the same sign as A and a magnitude less than
       the magnitude of P. (As a GNU extension, kind is the largest kind
       of the actual arguments.)
  
  _Notes_:
!      'MOD' and 'MODULO' yield identical results if their arguments are
!      'UNSIGNED'.
  
  _Example_:
            program test_mod
--- 16356,16390 ----
  
  File: gfortran.info,  Node: MOD,  Next: MODULO,  Prev: MINVAL,  Up: Intrinsic Procedures
  
! 8.200 â€˜MODâ€™ -- Remainder function
  =================================
  
  _Synopsis_:
!      â€˜RESULT = MOD(A, P)â€™
  
  _Description_:
!      â€˜MOD(A,P)â€™ computes the remainder of the division of A by P.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           Shall be a scalar of type â€˜INTEGERâ€™, â€˜REALâ€™ or
!                  â€˜UNSIGNEDâ€™.
       P           Shall be a scalar of the same type and kind as A
                   and not equal to zero.  (As a GNU extension,
                   arguments of different kinds are permitted.)
  
  _Return value_:
!      The return value is the result of â€˜A - (INT(A/P) * P)â€™.  The type
       and kind of the return value is the same as that of the arguments.
       The returned value has the same sign as A and a magnitude less than
       the magnitude of P. (As a GNU extension, kind is the largest kind
       of the actual arguments.)
  
  _Notes_:
!      â€˜MODâ€™ and â€˜MODULOâ€™ yield identical results if their arguments are
!      â€˜UNSIGNEDâ€™.
  
  _Example_:
            program test_mod
*************** _Example_:
*** 16407,16423 ****
  _Specific names_:
       Name           Arguments          Return type    Standard
       ------------------------------------------------------------------------
!      'MOD(A,P)'     'INTEGER A,P'      'INTEGER'      Fortran 77 and later
!      'AMOD(A,P)'    'REAL(4) A,P'      'REAL(4)'      Fortran 77 and later
!      'DMOD(A,P)'    'REAL(8) A,P'      'REAL(8)'      Fortran 77 and later
!      'BMOD(A,P)'    'INTEGER(1) A,P'   'INTEGER(1)'   GNU extension
!      'IMOD(A,P)'    'INTEGER(2) A,P'   'INTEGER(2)'   GNU extension
!      'JMOD(A,P)'    'INTEGER(4) A,P'   'INTEGER(4)'   GNU extension
!      'KMOD(A,P)'    'INTEGER(8) A,P'   'INTEGER(8)'   GNU extension
  
  _Standard_:
       Fortran 77 and later, has overloads that are GNU extensions.
!      Extension for 'UNSIGNED'.
  
  _See also_:
       *note MODULO::
--- 16407,16423 ----
  _Specific names_:
       Name           Arguments          Return type    Standard
       ------------------------------------------------------------------------
!      â€˜MOD(A,P)â€™     â€˜INTEGER A,Pâ€™      â€˜INTEGERâ€™      Fortran 77 and later
!      â€˜AMOD(A,P)â€™    â€˜REAL(4) A,Pâ€™      â€˜REAL(4)â€™      Fortran 77 and later
!      â€˜DMOD(A,P)â€™    â€˜REAL(8) A,Pâ€™      â€˜REAL(8)â€™      Fortran 77 and later
!      â€˜BMOD(A,P)â€™    â€˜INTEGER(1) A,Pâ€™   â€˜INTEGER(1)â€™   GNU extension
!      â€˜IMOD(A,P)â€™    â€˜INTEGER(2) A,Pâ€™   â€˜INTEGER(2)â€™   GNU extension
!      â€˜JMOD(A,P)â€™    â€˜INTEGER(4) A,Pâ€™   â€˜INTEGER(4)â€™   GNU extension
!      â€˜KMOD(A,P)â€™    â€˜INTEGER(8) A,Pâ€™   â€˜INTEGER(8)â€™   GNU extension
  
  _Standard_:
       Fortran 77 and later, has overloads that are GNU extensions.
!      Extension for â€˜UNSIGNEDâ€™.
  
  _See also_:
       *note MODULO::
*************** _See also_:
*** 16425,16444 ****
  
  File: gfortran.info,  Node: MODULO,  Next: MOVE_ALLOC,  Prev: MOD,  Up: Intrinsic Procedures
  
! 8.201 'MODULO' -- Modulo function
  =================================
  
  _Synopsis_:
!      'RESULT = MODULO(A, P)'
  
  _Description_:
!      'MODULO(A,P)' computes the A modulo P.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           Shall be a scalar of type 'INTEGER' or 'REAL'.
       P           Shall be a scalar of the same type and kind as
                   A.  It shall not be zero.  (As a GNU extension,
                   arguments of different kinds are permitted.)
--- 16425,16444 ----
  
  File: gfortran.info,  Node: MODULO,  Next: MOVE_ALLOC,  Prev: MOD,  Up: Intrinsic Procedures
  
! 8.201 â€˜MODULOâ€™ -- Modulo function
  =================================
  
  _Synopsis_:
!      â€˜RESULT = MODULO(A, P)â€™
  
  _Description_:
!      â€˜MODULO(A,P)â€™ computes the A modulo P.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           Shall be a scalar of type â€˜INTEGERâ€™ or â€˜REALâ€™.
       P           Shall be a scalar of the same type and kind as
                   A.  It shall not be zero.  (As a GNU extension,
                   arguments of different kinds are permitted.)
*************** _Arguments_:
*** 16446,16462 ****
  _Return value_:
       The type and kind of the result are those of the arguments.  (As a
       GNU extension, kind is the largest kind of the actual arguments.)
!      If A and P are of type 'INTEGER' or 'UNSIGNED':
!           'MODULO(A,P)' has the value R such that 'A=Q*P+R', where Q is
            an integer and R is between 0 (inclusive) and P (exclusive).
!      If A and P are of type 'REAL':
!           'MODULO(A,P)' has the value of 'A - FLOOR (A / P) * P'.
       The returned value has the same sign as P and a magnitude less than
       the magnitude of P.
  
  _Notes_:
!      'MOD' and 'MODULO' yield identical results if their arguments are
!      'UNSIGNED'.
  
  _Example_:
            program test_modulo
--- 16446,16462 ----
  _Return value_:
       The type and kind of the result are those of the arguments.  (As a
       GNU extension, kind is the largest kind of the actual arguments.)
!      If A and P are of type â€˜INTEGERâ€™ or â€˜UNSIGNEDâ€™:
!           â€˜MODULO(A,P)â€™ has the value R such that â€˜A=Q*P+Râ€™, where Q is
            an integer and R is between 0 (inclusive) and P (exclusive).
!      If A and P are of type â€˜REALâ€™:
!           â€˜MODULO(A,P)â€™ has the value of â€˜A - FLOOR (A / P) * Pâ€™.
       The returned value has the same sign as P and a magnitude less than
       the magnitude of P.
  
  _Notes_:
!      â€˜MODâ€™ and â€˜MODULOâ€™ yield identical results if their arguments are
!      â€˜UNSIGNEDâ€™.
  
  _Example_:
            program test_modulo
*************** _Example_:
*** 16471,16477 ****
            end program
  
  _Standard_:
!      Fortran 95 and later, extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  _See also_:
--- 16471,16477 ----
            end program
  
  _Standard_:
!      Fortran 95 and later, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  _See also_:
*************** _See also_:
*** 16480,16502 ****
  
  File: gfortran.info,  Node: MOVE_ALLOC,  Next: MVBITS,  Prev: MODULO,  Up: Intrinsic Procedures
  
! 8.202 'MOVE_ALLOC' -- Move allocation from one object to another
  ================================================================
  
  _Synopsis_:
!      'CALL MOVE_ALLOC(FROM, TO)'
  
  _Description_:
!      'MOVE_ALLOC(FROM, TO)' moves the allocation from FROM to TO.  FROM
       becomes deallocated in the process.
  
  _Class_:
       Pure subroutine
  
  _Arguments_:
!      FROM        'ALLOCATABLE', 'INTENT(INOUT)', may be of any
                   type and kind.
!      TO          'ALLOCATABLE', 'INTENT(OUT)', shall be of the
                   same type, kind and rank as FROM.
  
  _Return value_:
--- 16480,16502 ----
  
  File: gfortran.info,  Node: MOVE_ALLOC,  Next: MVBITS,  Prev: MODULO,  Up: Intrinsic Procedures
  
! 8.202 â€˜MOVE_ALLOCâ€™ -- Move allocation from one object to another
  ================================================================
  
  _Synopsis_:
!      â€˜CALL MOVE_ALLOC(FROM, TO)â€™
  
  _Description_:
!      â€˜MOVE_ALLOC(FROM, TO)â€™ moves the allocation from FROM to TO.  FROM
       becomes deallocated in the process.
  
  _Class_:
       Pure subroutine
  
  _Arguments_:
!      FROM        â€˜ALLOCATABLEâ€™, â€˜INTENT(INOUT)â€™, may be of any
                   type and kind.
!      TO          â€˜ALLOCATABLEâ€™, â€˜INTENT(OUT)â€™, shall be of the
                   same type, kind and rank as FROM.
  
  _Return value_:
*************** _Standard_:
*** 16519,16560 ****
  
  File: gfortran.info,  Node: MVBITS,  Next: NEAREST,  Prev: MOVE_ALLOC,  Up: Intrinsic Procedures
  
! 8.203 'MVBITS' -- Move bits from one integer to another
  =======================================================
  
  _Synopsis_:
!      'CALL MVBITS(FROM, FROMPOS, LEN, TO, TOPOS)'
  
  _Description_:
!      Moves LEN bits from positions FROMPOS through 'FROMPOS+LEN-1' of
!      FROM to positions TOPOS through 'TOPOS+LEN-1' of TO.  The portion
       of argument TO not affected by the movement of bits is unchanged.
!      The values of 'FROMPOS+LEN-1' and 'TOPOS+LEN-1' must be less than
!      'BIT_SIZE(FROM)'.
  
  _Class_:
       Elemental subroutine
  
  _Arguments_:
!      FROM        The type shall be 'INTEGER' or 'UNSIGNED'.
!      FROMPOS     The type shall be 'INTEGER'.
!      LEN         The type shall be 'INTEGER'.
       TO          The type shall be of the same type and kind as
                   FROM.
!      TOPOS       The type shall be 'INTEGER'.
  
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'MVBITS(A)'    'INTEGER A'       'INTEGER'      Fortran 90 and later
!      'BMVBITS(A)'   'INTEGER(1) A'    'INTEGER(1)'   GNU extension
!      'IMVBITS(A)'   'INTEGER(2) A'    'INTEGER(2)'   GNU extension
!      'JMVBITS(A)'   'INTEGER(4) A'    'INTEGER(4)'   GNU extension
!      'KMVBITS(A)'   'INTEGER(8) A'    'INTEGER(8)'   GNU extension
  
  _Standard_:
       Fortran 90 and later, has overloads that are GNU extensions.
!      Extension for 'UNSIGNED' (*note Unsigned integers::).
  
  _See also_:
       *note IBCLR::,
--- 16519,16560 ----
  
  File: gfortran.info,  Node: MVBITS,  Next: NEAREST,  Prev: MOVE_ALLOC,  Up: Intrinsic Procedures
  
! 8.203 â€˜MVBITSâ€™ -- Move bits from one integer to another
  =======================================================
  
  _Synopsis_:
!      â€˜CALL MVBITS(FROM, FROMPOS, LEN, TO, TOPOS)â€™
  
  _Description_:
!      Moves LEN bits from positions FROMPOS through â€˜FROMPOS+LEN-1â€™ of
!      FROM to positions TOPOS through â€˜TOPOS+LEN-1â€™ of TO.  The portion
       of argument TO not affected by the movement of bits is unchanged.
!      The values of â€˜FROMPOS+LEN-1â€™ and â€˜TOPOS+LEN-1â€™ must be less than
!      â€˜BIT_SIZE(FROM)â€™.
  
  _Class_:
       Elemental subroutine
  
  _Arguments_:
!      FROM        The type shall be â€˜INTEGERâ€™ or â€˜UNSIGNEDâ€™.
!      FROMPOS     The type shall be â€˜INTEGERâ€™.
!      LEN         The type shall be â€˜INTEGERâ€™.
       TO          The type shall be of the same type and kind as
                   FROM.
!      TOPOS       The type shall be â€˜INTEGERâ€™.
  
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜MVBITS(A)â€™    â€˜INTEGER Aâ€™       â€˜INTEGERâ€™      Fortran 90 and later
!      â€˜BMVBITS(A)â€™   â€˜INTEGER(1) Aâ€™    â€˜INTEGER(1)â€™   GNU extension
!      â€˜IMVBITS(A)â€™   â€˜INTEGER(2) Aâ€™    â€˜INTEGER(2)â€™   GNU extension
!      â€˜JMVBITS(A)â€™   â€˜INTEGER(4) Aâ€™    â€˜INTEGER(4)â€™   GNU extension
!      â€˜KMVBITS(A)â€™   â€˜INTEGER(8) Aâ€™    â€˜INTEGER(8)â€™   GNU extension
  
  _Standard_:
       Fortran 90 and later, has overloads that are GNU extensions.
!      Extension for â€˜UNSIGNEDâ€™ (*note Unsigned integers::).
  
  _See also_:
       *note IBCLR::,
*************** _See also_:
*** 16567,16594 ****
  
  File: gfortran.info,  Node: NEAREST,  Next: NEW_LINE,  Prev: MVBITS,  Up: Intrinsic Procedures
  
! 8.204 'NEAREST' -- Nearest representable number
  ===============================================
  
  _Synopsis_:
!      'RESULT = NEAREST(X, S)'
  
  _Description_:
!      'NEAREST(X, S)' returns the processor-representable number nearest
!      to 'X' in the direction indicated by the sign of 'S'.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           Shall be of type 'REAL'.
!      S           Shall be of type 'REAL' and not equal to zero.
  
  _Return value_:
!      The return value is of the same type as 'X'.  If 'S' is positive,
!      'NEAREST' returns the processor-representable number greater than
!      'X' and nearest to it.  If 'S' is negative, 'NEAREST' returns the
!      processor-representable number smaller than 'X' and nearest to it.
  
  _Example_:
            program test_nearest
--- 16567,16594 ----
  
  File: gfortran.info,  Node: NEAREST,  Next: NEW_LINE,  Prev: MVBITS,  Up: Intrinsic Procedures
  
! 8.204 â€˜NEARESTâ€™ -- Nearest representable number
  ===============================================
  
  _Synopsis_:
!      â€˜RESULT = NEAREST(X, S)â€™
  
  _Description_:
!      â€˜NEAREST(X, S)â€™ returns the processor-representable number nearest
!      to â€˜Xâ€™ in the direction indicated by the sign of â€˜Sâ€™.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           Shall be of type â€˜REALâ€™.
!      S           Shall be of type â€˜REALâ€™ and not equal to zero.
  
  _Return value_:
!      The return value is of the same type as â€˜Xâ€™.  If â€˜Sâ€™ is positive,
!      â€˜NEARESTâ€™ returns the processor-representable number greater than
!      â€˜Xâ€™ and nearest to it.  If â€˜Sâ€™ is negative, â€˜NEARESTâ€™ returns the
!      processor-representable number smaller than â€˜Xâ€™ and nearest to it.
  
  _Example_:
            program test_nearest
*************** _Standard_:
*** 16604,16624 ****
  
  File: gfortran.info,  Node: NEW_LINE,  Next: NINT,  Prev: NEAREST,  Up: Intrinsic Procedures
  
! 8.205 'NEW_LINE' -- New line character
  ======================================
  
  _Synopsis_:
!      'RESULT = NEW_LINE(C)'
  
  _Description_:
!      'NEW_LINE(C)' returns the new-line character.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
       C           The argument shall be a scalar or array of the
!                  type 'CHARACTER'.
  
  _Return value_:
       Returns a CHARACTER scalar of length one with the new-line
--- 16604,16624 ----
  
  File: gfortran.info,  Node: NEW_LINE,  Next: NINT,  Prev: NEAREST,  Up: Intrinsic Procedures
  
! 8.205 â€˜NEW_LINEâ€™ -- New line character
  ======================================
  
  _Synopsis_:
!      â€˜RESULT = NEW_LINE(C)â€™
  
  _Description_:
!      â€˜NEW_LINE(C)â€™ returns the new-line character.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
       C           The argument shall be a scalar or array of the
!                  type â€˜CHARACTERâ€™.
  
  _Return value_:
       Returns a CHARACTER scalar of length one with the new-line
*************** _Standard_:
*** 16636,16663 ****
  
  File: gfortran.info,  Node: NINT,  Next: NORM2,  Prev: NEW_LINE,  Up: Intrinsic Procedures
  
! 8.206 'NINT' -- Nearest whole number
  ====================================
  
  _Synopsis_:
!      'RESULT = NINT(A [, KIND])'
  
  _Description_:
!      'NINT(A)' rounds its argument to the nearest whole number.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           The type of the argument shall be 'REAL'.
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
       Returns A with the fractional portion of its magnitude eliminated
       by rounding to the nearest whole number and with its sign
!      preserved, converted to an 'INTEGER' of the default kind.
  
  _Example_:
            program test_nint
--- 16636,16663 ----
  
  File: gfortran.info,  Node: NINT,  Next: NORM2,  Prev: NEW_LINE,  Up: Intrinsic Procedures
  
! 8.206 â€˜NINTâ€™ -- Nearest whole number
  ====================================
  
  _Synopsis_:
!      â€˜RESULT = NINT(A [, KIND])â€™
  
  _Description_:
!      â€˜NINT(A)â€™ rounds its argument to the nearest whole number.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           The type of the argument shall be â€˜REALâ€™.
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
       Returns A with the fractional portion of its magnitude eliminated
       by rounding to the nearest whole number and with its sign
!      preserved, converted to an â€˜INTEGERâ€™ of the default kind.
  
  _Example_:
            program test_nint
*************** _Example_:
*** 16671,16678 ****
  _Specific names_:
       Name           Argument          Return Type    Standard
       -------------------------------------------------------------------------
!      'NINT(A)'      'REAL(4) A'       'INTEGER'      Fortran 77 and later
!      'IDNINT(A)'    'REAL(8) A'       'INTEGER'      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later, with KIND argument Fortran 90 and later
--- 16671,16678 ----
  _Specific names_:
       Name           Argument          Return Type    Standard
       -------------------------------------------------------------------------
!      â€˜NINT(A)â€™      â€˜REAL(4) Aâ€™       â€˜INTEGERâ€™      Fortran 77 and later
!      â€˜IDNINT(A)â€™    â€˜REAL(8) Aâ€™       â€˜INTEGERâ€™      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later, with KIND argument Fortran 90 and later
*************** _See also_:
*** 16684,16694 ****
  
  File: gfortran.info,  Node: NORM2,  Next: NOT,  Prev: NINT,  Up: Intrinsic Procedures
  
! 8.207 'NORM2' -- Euclidean vector norms
  =======================================
  
  _Synopsis_:
!      'RESULT = NORM2(ARRAY[, DIM])'
  
  _Description_:
       Calculates the Euclidean vector norm (L_2 norm) of ARRAY along
--- 16684,16694 ----
  
  File: gfortran.info,  Node: NORM2,  Next: NOT,  Prev: NINT,  Up: Intrinsic Procedures
  
! 8.207 â€˜NORM2â€™ -- Euclidean vector norms
  =======================================
  
  _Synopsis_:
!      â€˜RESULT = NORM2(ARRAY[, DIM])â€™
  
  _Description_:
       Calculates the Euclidean vector norm (L_2 norm) of ARRAY along
*************** _Class_:
*** 16698,16705 ****
       Transformational function
  
  _Arguments_:
!      ARRAY       Shall be an array of type 'REAL'
!      DIM         (Optional) shall be a scalar of type 'INTEGER'
                   with a value in the range from 1 to n, where n
                   equals the rank of ARRAY.
  
--- 16698,16705 ----
       Transformational function
  
  _Arguments_:
!      ARRAY       Shall be an array of type â€˜REALâ€™
!      DIM         (Optional) shall be a scalar of type â€˜INTEGERâ€™
                   with a value in the range from 1 to n, where n
                   equals the rank of ARRAY.
  
*************** _Standard_:
*** 16723,16758 ****
  
  File: gfortran.info,  Node: NOT,  Next: NULL,  Prev: NORM2,  Up: Intrinsic Procedures
  
! 8.208 'NOT' -- Logical negation
  ===============================
  
  _Synopsis_:
!      'RESULT = NOT(I)'
  
  _Description_:
!      'NOT' returns the bitwise Boolean inverse of I.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be 'INTEGER' or 'UNSIGNED'.
  
  _Return value_:
!      The return type is 'INTEGER', of the same kind as the argument.
  
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'NOT(A)'       'INTEGER A'       'INTEGER'      Fortran 95 and later
!      'BNOT(A)'      'INTEGER(1) A'    'INTEGER(1)'   GNU extension
!      'INOT(A)'      'INTEGER(2) A'    'INTEGER(2)'   GNU extension
!      'JNOT(A)'      'INTEGER(4) A'    'INTEGER(4)'   GNU extension
!      'KNOT(A)'      'INTEGER(8) A'    'INTEGER(8)'   GNU extension
  
  _Standard_:
       Fortran 90 and later, has overloads that are GNU extensions,
!      extension for 'UNSIGNED' (*note Unsigned integers::)
  
  _See also_:
       *note IAND::,
--- 16723,16758 ----
  
  File: gfortran.info,  Node: NOT,  Next: NULL,  Prev: NORM2,  Up: Intrinsic Procedures
  
! 8.208 â€˜NOTâ€™ -- Logical negation
  ===============================
  
  _Synopsis_:
!      â€˜RESULT = NOT(I)â€™
  
  _Description_:
!      â€˜NOTâ€™ returns the bitwise Boolean inverse of I.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be â€˜INTEGERâ€™ or â€˜UNSIGNEDâ€™.
  
  _Return value_:
!      The return type is â€˜INTEGERâ€™, of the same kind as the argument.
  
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜NOT(A)â€™       â€˜INTEGER Aâ€™       â€˜INTEGERâ€™      Fortran 95 and later
!      â€˜BNOT(A)â€™      â€˜INTEGER(1) Aâ€™    â€˜INTEGER(1)â€™   GNU extension
!      â€˜INOT(A)â€™      â€˜INTEGER(2) Aâ€™    â€˜INTEGER(2)â€™   GNU extension
!      â€˜JNOT(A)â€™      â€˜INTEGER(4) Aâ€™    â€˜INTEGER(4)â€™   GNU extension
!      â€˜KNOT(A)â€™      â€˜INTEGER(8) Aâ€™    â€˜INTEGER(8)â€™   GNU extension
  
  _Standard_:
       Fortran 90 and later, has overloads that are GNU extensions,
!      extension for â€˜UNSIGNEDâ€™ (*note Unsigned integers::)
  
  _See also_:
       *note IAND::,
*************** _See also_:
*** 16765,16775 ****
  
  File: gfortran.info,  Node: NULL,  Next: NUM_IMAGES,  Prev: NOT,  Up: Intrinsic Procedures
  
! 8.209 'NULL' -- Function that returns an disassociated pointer
  ==============================================================
  
  _Synopsis_:
!      'PTR => NULL([MOLD])'
  
  _Description_:
       Returns a disassociated pointer.
--- 16765,16775 ----
  
  File: gfortran.info,  Node: NULL,  Next: NUM_IMAGES,  Prev: NOT,  Up: Intrinsic Procedures
  
! 8.209 â€˜NULLâ€™ -- Function that returns an disassociated pointer
  ==============================================================
  
  _Synopsis_:
!      â€˜PTR => NULL([MOLD])â€™
  
  _Description_:
       Returns a disassociated pointer.
*************** _See also_:
*** 16802,16812 ****
  
  File: gfortran.info,  Node: NUM_IMAGES,  Next: OR,  Prev: NULL,  Up: Intrinsic Procedures
  
! 8.210 'NUM_IMAGES' -- Function that returns the number of images
  ================================================================
  
  _Synopsis_:
!      'RESULT = NUM_IMAGES(DISTANCE, FAILED)'
  
  _Description_:
       Returns the number of images.
--- 16802,16812 ----
  
  File: gfortran.info,  Node: NUM_IMAGES,  Next: OR,  Prev: NULL,  Up: Intrinsic Procedures
  
! 8.210 â€˜NUM_IMAGESâ€™ -- Function that returns the number of images
  ================================================================
  
  _Synopsis_:
!      â€˜RESULT = NUM_IMAGES(DISTANCE, FAILED)â€™
  
  _Description_:
       Returns the number of images.
*************** _Return value_:
*** 16827,16833 ****
       of DISTANCE from the invoking team.  If DISTANCE is larger than the
       distance to the initial team, the number of images of the initial
       team is returned.  If FAILED is not present the total number of
!      images is returned; if it has the value '.TRUE.', the number of
       failed images is returned, otherwise, the number of images that do
       have not the failed status.
  
--- 16827,16833 ----
       of DISTANCE from the invoking team.  If DISTANCE is larger than the
       distance to the initial team, the number of images of the initial
       team is returned.  If FAILED is not present the total number of
!      images is returned; if it has the value â€˜.TRUE.â€™, the number of
       failed images is returned, otherwise, the number of images that do
       have not the failed status.
  
*************** _See also_:
*** 16853,16866 ****
  
  File: gfortran.info,  Node: OR,  Next: OUT_OF_RANGE,  Prev: NUM_IMAGES,  Up: Intrinsic Procedures
  
! 8.211 'OR' -- Bitwise logical OR
  ================================
  
  _Synopsis_:
!      'RESULT = OR(I, J)'
  
  _Description_:
!      Bitwise logical 'OR'.
  
       This intrinsic routine is provided for backwards compatibility with
       GNU Fortran 77.  For integer arguments, programmers should consider
--- 16853,16866 ----
  
  File: gfortran.info,  Node: OR,  Next: OUT_OF_RANGE,  Prev: NUM_IMAGES,  Up: Intrinsic Procedures
  
! 8.211 â€˜ORâ€™ -- Bitwise logical OR
  ================================
  
  _Synopsis_:
!      â€˜RESULT = OR(I, J)â€™
  
  _Description_:
!      Bitwise logical â€˜ORâ€™.
  
       This intrinsic routine is provided for backwards compatibility with
       GNU Fortran 77.  For integer arguments, programmers should consider
*************** _Class_:
*** 16871,16890 ****
       Function
  
  _Arguments_:
!      I           The type shall be either a scalar 'INTEGER' type
!                  or a scalar 'LOGICAL' type or a
                   boz-literal-constant.
       J           The type shall be the same as the type of I or a
                   boz-literal-constant.  I and J shall not both be
                   boz-literal-constants.  If either I and J is a
                   boz-literal-constant, then the other argument
!                  must be a scalar 'INTEGER'.
  
  _Return value_:
!      The return type is either a scalar 'INTEGER' or a scalar 'LOGICAL'.
       If the kind type parameters differ, then the smaller kind type is
       implicitly converted to larger kind, and the return has the larger
!      kind.  A boz-literal-constant is converted to an 'INTEGER' with the
       kind type parameter of the other argument as-if a call to *note
       INT:: occurred.
  
--- 16871,16890 ----
       Function
  
  _Arguments_:
!      I           The type shall be either a scalar â€˜INTEGERâ€™ type
!                  or a scalar â€˜LOGICALâ€™ type or a
                   boz-literal-constant.
       J           The type shall be the same as the type of I or a
                   boz-literal-constant.  I and J shall not both be
                   boz-literal-constants.  If either I and J is a
                   boz-literal-constant, then the other argument
!                  must be a scalar â€˜INTEGERâ€™.
  
  _Return value_:
!      The return type is either a scalar â€˜INTEGERâ€™ or a scalar â€˜LOGICALâ€™.
       If the kind type parameters differ, then the smaller kind type is
       implicitly converted to larger kind, and the return has the larger
!      kind.  A boz-literal-constant is converted to an â€˜INTEGERâ€™ with the
       kind type parameter of the other argument as-if a call to *note
       INT:: occurred.
  
*************** _See also_:
*** 16908,16946 ****
  
  File: gfortran.info,  Node: OUT_OF_RANGE,  Next: PACK,  Prev: OR,  Up: Intrinsic Procedures
  
! 8.212 'OUT_OF_RANGE' -- Range check for numerical conversion
  ============================================================
  
  _Synopsis_:
!      'RESULT = OUT_OF_RANGE(X, MOLD[, ROUND])'
  
  _Description_:
!      'OUT_OF_RANGE(X, MOLD[, ROUND])' determines if the value of 'X' can
!      be safely converted to an object with the type of argument 'MOLD'.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be either 'INTEGER', 'UNSIGNED'
!                  or 'REAL'.
!      MOLD        The type shall be a scalar 'INTEGER', 'UNSIGNED'
!                  or 'REAL'.  If it is a variable, it need not be
                   defined.
!      ROUND       (Optional) A scalar 'LOGICAL' that shall only be
!                  present if X is of type 'REAL' and MOLD is of
!                  type 'INTEGER' or 'UNSIGNED'.
  
  _Return value_:
!      The return value is of type 'LOGICAL'.
  
!      If MOLD is of type 'INTEGER' or 'UNSIGNED', and ROUND is absent or
       present with the value false, the result is true if and only if the
       value of X is an IEEE infinity or NaN, or if the integer with
       largest magnitude that lies between zero and X inclusive is not
       representable by objects with the type and kind of MOLD.
  
!      If MOLD is of type 'INTEGER' or 'UNSIGNED', and ROUND is present
       with the value true, the result is true if and only if the value of
       X is an IEEE infinity or NaN, or if the integer nearest X, or the
       integer of greater magnitude if two integers are equally near to X,
--- 16908,16946 ----
  
  File: gfortran.info,  Node: OUT_OF_RANGE,  Next: PACK,  Prev: OR,  Up: Intrinsic Procedures
  
! 8.212 â€˜OUT_OF_RANGEâ€™ -- Range check for numerical conversion
  ============================================================
  
  _Synopsis_:
!      â€˜RESULT = OUT_OF_RANGE(X, MOLD[, ROUND])â€™
  
  _Description_:
!      â€˜OUT_OF_RANGE(X, MOLD[, ROUND])â€™ determines if the value of â€˜Xâ€™ can
!      be safely converted to an object with the type of argument â€˜MOLDâ€™.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be either â€˜INTEGERâ€™, â€˜UNSIGNEDâ€™
!                  or â€˜REALâ€™.
!      MOLD        The type shall be a scalar â€˜INTEGERâ€™, â€˜UNSIGNEDâ€™
!                  or â€˜REALâ€™.  If it is a variable, it need not be
                   defined.
!      ROUND       (Optional) A scalar â€˜LOGICALâ€™ that shall only be
!                  present if X is of type â€˜REALâ€™ and MOLD is of
!                  type â€˜INTEGERâ€™ or â€˜UNSIGNEDâ€™.
  
  _Return value_:
!      The return value is of type â€˜LOGICALâ€™.
  
!      If MOLD is of type â€˜INTEGERâ€™ or â€˜UNSIGNEDâ€™, and ROUND is absent or
       present with the value false, the result is true if and only if the
       value of X is an IEEE infinity or NaN, or if the integer with
       largest magnitude that lies between zero and X inclusive is not
       representable by objects with the type and kind of MOLD.
  
!      If MOLD is of type â€˜INTEGERâ€™ or â€˜UNSIGNEDâ€™, and ROUND is present
       with the value true, the result is true if and only if the value of
       X is an IEEE infinity or NaN, or if the integer nearest X, or the
       integer of greater magnitude if two integers are equally near to X,
*************** _Standard_:
*** 16966,16982 ****
  
  File: gfortran.info,  Node: PACK,  Next: PARITY,  Prev: OUT_OF_RANGE,  Up: Intrinsic Procedures
  
! 8.213 'PACK' -- Pack an array into an array of rank one
  =======================================================
  
  _Synopsis_:
!      'RESULT = PACK(ARRAY, MASK[,VECTOR])'
  
  _Description_:
       Stores the elements of ARRAY in an array of rank one.
  
       The beginning of the resulting array is made up of elements whose
!      MASK equals 'TRUE'.  Afterwards, positions are filled with elements
       taken from VECTOR.
  
  _Class_:
--- 16966,16982 ----
  
  File: gfortran.info,  Node: PACK,  Next: PARITY,  Prev: OUT_OF_RANGE,  Up: Intrinsic Procedures
  
! 8.213 â€˜PACKâ€™ -- Pack an array into an array of rank one
  =======================================================
  
  _Synopsis_:
!      â€˜RESULT = PACK(ARRAY, MASK[,VECTOR])â€™
  
  _Description_:
       Stores the elements of ARRAY in an array of rank one.
  
       The beginning of the resulting array is made up of elements whose
!      MASK equals â€˜TRUEâ€™.  Afterwards, positions are filled with elements
       taken from VECTOR.
  
  _Class_:
*************** _Class_:
*** 16984,16992 ****
  
  _Arguments_:
       ARRAY       Shall be an array of any type.
!      MASK        Shall be an array of type 'LOGICAL' and of the
                   same size as ARRAY.  Alternatively, it may be a
!                  'LOGICAL' scalar.
       VECTOR      (Optional) shall be an array of the same type as
                   ARRAY and of rank one.  If present, the number
                   of elements in VECTOR shall be equal to or
--- 16984,16992 ----
  
  _Arguments_:
       ARRAY       Shall be an array of any type.
!      MASK        Shall be an array of type â€˜LOGICALâ€™ and of the
                   same size as ARRAY.  Alternatively, it may be a
!                  â€˜LOGICALâ€™ scalar.
       VECTOR      (Optional) shall be an array of the same type as
                   ARRAY and of rank one.  If present, the number
                   of elements in VECTOR shall be equal to or
*************** _Arguments_:
*** 16998,17004 ****
  _Return value_:
       The result is an array of rank one and the same type as that of
       ARRAY.  If VECTOR is present, the result size is that of VECTOR,
!      the number of 'TRUE' values in MASK otherwise.
  
  _Example_:
       Gathering nonzero elements from an array:
--- 16998,17004 ----
  _Return value_:
       The result is an array of rank one and the same type as that of
       ARRAY.  If VECTOR is present, the result size is that of VECTOR,
!      the number of â€˜TRUEâ€™ values in MASK otherwise.
  
  _Example_:
       Gathering nonzero elements from an array:
*************** _See also_:
*** 17026,17047 ****
  
  File: gfortran.info,  Node: PARITY,  Next: PERROR,  Prev: PACK,  Up: Intrinsic Procedures
  
! 8.214 'PARITY' -- Reduction with exclusive OR
  =============================================
  
  _Synopsis_:
!      'RESULT = PARITY(MASK[, DIM])'
  
  _Description_:
!      Calculates the parity, i.e.  the reduction using '.XOR.', of MASK
       along dimension DIM.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      MASK        Shall be an array of type 'LOGICAL'
!      DIM         (Optional) shall be a scalar of type 'INTEGER'
                   with a value in the range from 1 to n, where n
                   equals the rank of MASK.
  
--- 17026,17047 ----
  
  File: gfortran.info,  Node: PARITY,  Next: PERROR,  Prev: PACK,  Up: Intrinsic Procedures
  
! 8.214 â€˜PARITYâ€™ -- Reduction with exclusive OR
  =============================================
  
  _Synopsis_:
!      â€˜RESULT = PARITY(MASK[, DIM])â€™
  
  _Description_:
!      Calculates the parity, i.e.  the reduction using â€˜.XOR.â€™, of MASK
       along dimension DIM.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      MASK        Shall be an array of type â€˜LOGICALâ€™
!      DIM         (Optional) shall be a scalar of type â€˜INTEGERâ€™
                   with a value in the range from 1 to n, where n
                   equals the rank of MASK.
  
*************** _Return value_:
*** 17049,17055 ****
       The result is of the same type as MASK.
  
       If DIM is absent, a scalar with the parity of all elements in MASK
!      is returned, i.e.  true if an odd number of elements is '.true.'
       and false otherwise.  If DIM is present, an array of rank n-1,
       where n equals the rank of ARRAY, and a shape similar to that of
       MASK with dimension DIM dropped is returned.
--- 17049,17055 ----
       The result is of the same type as MASK.
  
       If DIM is absent, a scalar with the parity of all elements in MASK
!      is returned, i.e.  true if an odd number of elements is â€˜.true.â€™
       and false otherwise.  If DIM is present, an array of rank n-1,
       where n equals the rank of ARRAY, and a shape similar to that of
       MASK with dimension DIM dropped is returned.
*************** _Standard_:
*** 17066,17087 ****
  
  File: gfortran.info,  Node: PERROR,  Next: POPCNT,  Prev: PARITY,  Up: Intrinsic Procedures
  
! 8.215 'PERROR' -- Print system error message
  ============================================
  
  _Synopsis_:
!      'CALL PERROR(STRING)'
  
  _Description_:
!      Prints (on the C 'stderr' stream) a newline-terminated error
       message corresponding to the last system error.  This is prefixed
!      by STRING, a colon and a space.  See 'perror(3)'.
  
  _Class_:
       Subroutine
  
  _Arguments_:
!      STRING      A scalar of type 'CHARACTER' and of the default
                   kind.
  
  _Standard_:
--- 17066,17087 ----
  
  File: gfortran.info,  Node: PERROR,  Next: POPCNT,  Prev: PARITY,  Up: Intrinsic Procedures
  
! 8.215 â€˜PERRORâ€™ -- Print system error message
  ============================================
  
  _Synopsis_:
!      â€˜CALL PERROR(STRING)â€™
  
  _Description_:
!      Prints (on the C â€˜stderrâ€™ stream) a newline-terminated error
       message corresponding to the last system error.  This is prefixed
!      by STRING, a colon and a space.  See â€˜perror(3)â€™.
  
  _Class_:
       Subroutine
  
  _Arguments_:
!      STRING      A scalar of type â€˜CHARACTERâ€™ and of the default
                   kind.
  
  _Standard_:
*************** _See also_:
*** 17093,17116 ****
  
  File: gfortran.info,  Node: POPCNT,  Next: POPPAR,  Prev: PERROR,  Up: Intrinsic Procedures
  
! 8.216 'POPCNT' -- Number of bits set
  ====================================
  
  _Synopsis_:
!      'RESULT = POPCNT(I)'
  
  _Description_:
!      'POPCNT(I)' returns the number of bits set ('1' bits) in the binary
!      representation of 'I'.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           Shall be of type 'INTEGER'.
  
  _Return value_:
!      The return value is of type 'INTEGER' and of the default integer
       kind.
  
  _Example_:
--- 17093,17116 ----
  
  File: gfortran.info,  Node: POPCNT,  Next: POPPAR,  Prev: PERROR,  Up: Intrinsic Procedures
  
! 8.216 â€˜POPCNTâ€™ -- Number of bits set
  ====================================
  
  _Synopsis_:
!      â€˜RESULT = POPCNT(I)â€™
  
  _Description_:
!      â€˜POPCNT(I)â€™ returns the number of bits set ('1' bits) in the binary
!      representation of â€˜Iâ€™.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           Shall be of type â€˜INTEGERâ€™.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™ and of the default integer
       kind.
  
  _Example_:
*************** _See also_:
*** 17131,17156 ****
  
  File: gfortran.info,  Node: POPPAR,  Next: PRECISION,  Prev: POPCNT,  Up: Intrinsic Procedures
  
! 8.217 'POPPAR' -- Parity of the number of bits set
  ==================================================
  
  _Synopsis_:
!      'RESULT = POPPAR(I)'
  
  _Description_:
!      'POPPAR(I)' returns parity of the integer 'I', i.e.  the parity of
       the number of bits set ('1' bits) in the binary representation of
!      'I'.  It is equal to 0 if 'I' has an even number of bits set, and 1
       for an odd number of '1' bits.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           Shall be of type 'INTEGER'.
  
  _Return value_:
!      The return value is of type 'INTEGER' and of the default integer
       kind.
  
  _Example_:
--- 17131,17156 ----
  
  File: gfortran.info,  Node: POPPAR,  Next: PRECISION,  Prev: POPCNT,  Up: Intrinsic Procedures
  
! 8.217 â€˜POPPARâ€™ -- Parity of the number of bits set
  ==================================================
  
  _Synopsis_:
!      â€˜RESULT = POPPAR(I)â€™
  
  _Description_:
!      â€˜POPPAR(I)â€™ returns parity of the integer â€˜Iâ€™, i.e.  the parity of
       the number of bits set ('1' bits) in the binary representation of
!      â€˜Iâ€™.  It is equal to 0 if â€˜Iâ€™ has an even number of bits set, and 1
       for an odd number of '1' bits.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           Shall be of type â€˜INTEGERâ€™.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™ and of the default integer
       kind.
  
  _Example_:
*************** _See also_:
*** 17171,17195 ****
  
  File: gfortran.info,  Node: PRECISION,  Next: PRESENT,  Prev: POPPAR,  Up: Intrinsic Procedures
  
! 8.218 'PRECISION' -- Decimal precision of a real kind
  =====================================================
  
  _Synopsis_:
!      'RESULT = PRECISION(X)'
  
  _Description_:
!      'PRECISION(X)' returns the decimal precision in the model of the
!      type of 'X'.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      X           Shall be of type 'REAL' or 'COMPLEX'.  It may be
                   scalar or valued.
  
  _Return value_:
!      The return value is of type 'INTEGER' and of the default integer
       kind.
  
  _Example_:
--- 17171,17195 ----
  
  File: gfortran.info,  Node: PRECISION,  Next: PRESENT,  Prev: POPPAR,  Up: Intrinsic Procedures
  
! 8.218 â€˜PRECISIONâ€™ -- Decimal precision of a real kind
  =====================================================
  
  _Synopsis_:
!      â€˜RESULT = PRECISION(X)â€™
  
  _Description_:
!      â€˜PRECISION(X)â€™ returns the decimal precision in the model of the
!      type of â€˜Xâ€™.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      X           Shall be of type â€˜REALâ€™ or â€˜COMPLEXâ€™.  It may be
                   scalar or valued.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™ and of the default integer
       kind.
  
  _Example_:
*************** _See also_:
*** 17211,17221 ****
  
  File: gfortran.info,  Node: PRESENT,  Next: PRODUCT,  Prev: PRECISION,  Up: Intrinsic Procedures
  
! 8.219 'PRESENT' -- Determine whether an optional dummy argument is specified
  ============================================================================
  
  _Synopsis_:
!      'RESULT = PRESENT(A)'
  
  _Description_:
       Determines whether an optional dummy argument is present.
--- 17211,17221 ----
  
  File: gfortran.info,  Node: PRESENT,  Next: PRODUCT,  Prev: PRECISION,  Up: Intrinsic Procedures
  
! 8.219 â€˜PRESENTâ€™ -- Determine whether an optional dummy argument is specified
  ============================================================================
  
  _Synopsis_:
!      â€˜RESULT = PRESENT(A)â€™
  
  _Description_:
       Determines whether an optional dummy argument is present.
*************** _Arguments_:
*** 17231,17238 ****
                   function.
  
  _Return value_:
!      Returns either 'TRUE' if the optional argument A is present, or
!      'FALSE' otherwise.
  
  _Example_:
            PROGRAM test_present
--- 17231,17238 ----
                   function.
  
  _Return value_:
!      Returns either â€˜TRUEâ€™ if the optional argument A is present, or
!      â€˜FALSEâ€™ otherwise.
  
  _Example_:
            PROGRAM test_present
*************** _Standard_:
*** 17250,17276 ****
  
  File: gfortran.info,  Node: PRODUCT,  Next: RADIX,  Prev: PRESENT,  Up: Intrinsic Procedures
  
! 8.220 'PRODUCT' -- Product of array elements
  ============================================
  
  _Synopsis_:
!      'RESULT = PRODUCT(ARRAY[, MASK])'
!      'RESULT = PRODUCT(ARRAY, DIM[, MASK])'
  
  _Description_:
       Multiplies the elements of ARRAY along dimension DIM if the
!      corresponding element in MASK is 'TRUE'.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      ARRAY       Shall be an array of type 'INTEGER', 'REAL',
!                  'COMPLEX' or 'UNSIGNED'.
!      DIM         (Optional) shall be a scalar of type 'INTEGER'
                   with a value in the range from 1 to n, where n
                   equals the rank of ARRAY.
!      MASK        (Optional) shall be of type 'LOGICAL' and either
                   be a scalar or an array of the same shape as
                   ARRAY.
  
--- 17250,17276 ----
  
  File: gfortran.info,  Node: PRODUCT,  Next: RADIX,  Prev: PRESENT,  Up: Intrinsic Procedures
  
! 8.220 â€˜PRODUCTâ€™ -- Product of array elements
  ============================================
  
  _Synopsis_:
!      â€˜RESULT = PRODUCT(ARRAY[, MASK])â€™
!      â€˜RESULT = PRODUCT(ARRAY, DIM[, MASK])â€™
  
  _Description_:
       Multiplies the elements of ARRAY along dimension DIM if the
!      corresponding element in MASK is â€˜TRUEâ€™.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      ARRAY       Shall be an array of type â€˜INTEGERâ€™, â€˜REALâ€™,
!                  â€˜COMPLEXâ€™ or â€˜UNSIGNEDâ€™.
!      DIM         (Optional) shall be a scalar of type â€˜INTEGERâ€™
                   with a value in the range from 1 to n, where n
                   equals the rank of ARRAY.
!      MASK        (Optional) shall be of type â€˜LOGICALâ€™ and either
                   be a scalar or an array of the same shape as
                   ARRAY.
  
*************** _Example_:
*** 17290,17296 ****
            END PROGRAM
  
  _Standard_:
!      Fortran 90 and later, extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  _See also_:
--- 17290,17296 ----
            END PROGRAM
  
  _Standard_:
!      Fortran 90 and later, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  _See also_:
*************** _See also_:
*** 17299,17321 ****
  
  File: gfortran.info,  Node: RADIX,  Next: RAN,  Prev: PRODUCT,  Up: Intrinsic Procedures
  
! 8.221 'RADIX' -- Base of a model number
  =======================================
  
  _Synopsis_:
!      'RESULT = RADIX(X)'
  
  _Description_:
!      'RADIX(X)' returns the base of the model representing the entity X.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      X           Shall be of type 'INTEGER' or 'REAL'
  
  _Return value_:
!      The return value is a scalar of type 'INTEGER' and of the default
       integer kind.
  
  _Example_:
--- 17299,17321 ----
  
  File: gfortran.info,  Node: RADIX,  Next: RAN,  Prev: PRODUCT,  Up: Intrinsic Procedures
  
! 8.221 â€˜RADIXâ€™ -- Base of a model number
  =======================================
  
  _Synopsis_:
!      â€˜RESULT = RADIX(X)â€™
  
  _Description_:
!      â€˜RADIX(X)â€™ returns the base of the model representing the entity X.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      X           Shall be of type â€˜INTEGERâ€™ or â€˜REALâ€™
  
  _Return value_:
!      The return value is a scalar of type â€˜INTEGERâ€™ and of the default
       integer kind.
  
  _Example_:
*************** _See also_:
*** 17333,17344 ****
  
  File: gfortran.info,  Node: RAN,  Next: RAND,  Prev: RADIX,  Up: Intrinsic Procedures
  
! 8.222 'RAN' -- Real pseudo-random number
  ========================================
  
  _Description_:
!      For compatibility with HP FORTRAN 77/iX, the 'RAN' intrinsic is
!      provided as an alias for 'RAND'.  See *note RAND:: for complete
       documentation.
  
  _Class_:
--- 17333,17344 ----
  
  File: gfortran.info,  Node: RAN,  Next: RAND,  Prev: RADIX,  Up: Intrinsic Procedures
  
! 8.222 â€˜RANâ€™ -- Real pseudo-random number
  ========================================
  
  _Description_:
!      For compatibility with HP FORTRAN 77/iX, the â€˜RANâ€™ intrinsic is
!      provided as an alias for â€˜RANDâ€™.  See *note RAND:: for complete
       documentation.
  
  _Class_:
*************** _See also_:
*** 17354,17385 ****
  
  File: gfortran.info,  Node: RAND,  Next: RANDOM_INIT,  Prev: RAN,  Up: Intrinsic Procedures
  
! 8.223 'RAND' -- Real pseudo-random number
  =========================================
  
  _Synopsis_:
!      'RESULT = RAND(I)'
  
  _Description_:
!      'RAND(FLAG)' returns a pseudo-random number from a uniform
       distribution between 0 and 1.  If FLAG is 0, the next number in the
       current sequence is returned; if FLAG is 1, the generator is
!      restarted by 'CALL SRAND(0)'; if FLAG has any other value, it is
!      used as a new seed with 'SRAND'.
  
       This intrinsic routine is provided for backwards compatibility with
       GNU Fortran 77.  It implements a simple modulo generator as
!      provided by 'g77'.  For new code, one should consider the use of
       *note RANDOM_NUMBER:: as it implements a superior algorithm.
  
  _Class_:
       Function
  
  _Arguments_:
!      I           Shall be a scalar 'INTEGER' of kind 4.
  
  _Return value_:
!      The return value is of 'REAL' type and the default kind.
  
  _Example_:
            program test_rand
--- 17354,17385 ----
  
  File: gfortran.info,  Node: RAND,  Next: RANDOM_INIT,  Prev: RAN,  Up: Intrinsic Procedures
  
! 8.223 â€˜RANDâ€™ -- Real pseudo-random number
  =========================================
  
  _Synopsis_:
!      â€˜RESULT = RAND(I)â€™
  
  _Description_:
!      â€˜RAND(FLAG)â€™ returns a pseudo-random number from a uniform
       distribution between 0 and 1.  If FLAG is 0, the next number in the
       current sequence is returned; if FLAG is 1, the generator is
!      restarted by â€˜CALL SRAND(0)â€™; if FLAG has any other value, it is
!      used as a new seed with â€˜SRANDâ€™.
  
       This intrinsic routine is provided for backwards compatibility with
       GNU Fortran 77.  It implements a simple modulo generator as
!      provided by â€˜g77â€™.  For new code, one should consider the use of
       *note RANDOM_NUMBER:: as it implements a superior algorithm.
  
  _Class_:
       Function
  
  _Arguments_:
!      I           Shall be a scalar â€˜INTEGERâ€™ of kind 4.
  
  _Return value_:
!      The return value is of â€˜REALâ€™ type and the default kind.
  
  _Example_:
            program test_rand
*************** _See also_:
*** 17400,17436 ****
  
  File: gfortran.info,  Node: RANDOM_INIT,  Next: RANDOM_NUMBER,  Prev: RAND,  Up: Intrinsic Procedures
  
! 8.224 'RANDOM_INIT' -- Initialize a pseudo-random number generator
  ==================================================================
  
  _Synopsis_:
!      'CALL RANDOM_INIT(REPEATABLE, IMAGE_DISTINCT)'
  
  _Description_:
       Initializes the state of the pseudorandom number generator used by
!      'RANDOM_NUMBER'.
  
  _Class_:
       Subroutine
  
  _Arguments_:
!      REPEATABLE         Shall be a scalar with a 'LOGICAL' type, and it
!                         is 'INTENT(IN)'.  If it is '.true.', the seed is
                          set to a processor-dependent value that is the
!                         same each time 'RANDOM_INIT' is called from the
                          same image.  The term "same image" means a
                          single instance of program execution.  The
                          sequence of random numbers is the same for
                          repeated execution of the program with the same
!                         execution environment.  If it is '.false.', the
                          seed is set to a processor-dependent value.
!      IMAGE_DISTINCT     Shall be a scalar with a 'LOGICAL' type, and it
!                         is 'INTENT(IN)'.  If it is '.true.', the seed is
                          set to a processor-dependent value that is
                          distinct from the seed set by a call to
!                         'RANDOM_INIT' in another image.  If it is
!                         '.false.', the seed is set to a value that is
!                         the same on every image calling 'RANDOM_INIT'.
  
  _Example_:
            program test_random_seed
--- 17400,17436 ----
  
  File: gfortran.info,  Node: RANDOM_INIT,  Next: RANDOM_NUMBER,  Prev: RAND,  Up: Intrinsic Procedures
  
! 8.224 â€˜RANDOM_INITâ€™ -- Initialize a pseudo-random number generator
  ==================================================================
  
  _Synopsis_:
!      â€˜CALL RANDOM_INIT(REPEATABLE, IMAGE_DISTINCT)â€™
  
  _Description_:
       Initializes the state of the pseudorandom number generator used by
!      â€˜RANDOM_NUMBERâ€™.
  
  _Class_:
       Subroutine
  
  _Arguments_:
!      REPEATABLE         Shall be a scalar with a â€˜LOGICALâ€™ type, and it
!                         is â€˜INTENT(IN)â€™.  If it is â€˜.true.â€™, the seed is
                          set to a processor-dependent value that is the
!                         same each time â€˜RANDOM_INITâ€™ is called from the
                          same image.  The term "same image" means a
                          single instance of program execution.  The
                          sequence of random numbers is the same for
                          repeated execution of the program with the same
!                         execution environment.  If it is â€˜.false.â€™, the
                          seed is set to a processor-dependent value.
!      IMAGE_DISTINCT     Shall be a scalar with a â€˜LOGICALâ€™ type, and it
!                         is â€˜INTENT(IN)â€™.  If it is â€˜.true.â€™, the seed is
                          set to a processor-dependent value that is
                          distinct from the seed set by a call to
!                         â€˜RANDOM_INITâ€™ in another image.  If it is
!                         â€˜.false.â€™, the seed is set to a value that is
!                         the same on every image calling â€˜RANDOM_INITâ€™.
  
  _Example_:
            program test_random_seed
*************** _See also_:
*** 17454,17471 ****
  
  File: gfortran.info,  Node: RANDOM_NUMBER,  Next: RANDOM_SEED,  Prev: RANDOM_INIT,  Up: Intrinsic Procedures
  
! 8.225 'RANDOM_NUMBER' -- Pseudo-random number
  =============================================
  
  _Synopsis_:
!      'CALL RANDOM_NUMBER(HARVEST)'
  
  _Description_:
!      For 'REAL' argument, returns a single pseudorandom number or an
       array of pseudorandom numbers from the uniform distribution over
       the range 0 <= x < 1.
  
!      For 'UNSIGNED' argument returns a single pseudorandom number or an
       array of pseudorandom numbers in over the range of 0 <= x <=
       HUGE(HARVEST).
  
--- 17454,17471 ----
  
  File: gfortran.info,  Node: RANDOM_NUMBER,  Next: RANDOM_SEED,  Prev: RANDOM_INIT,  Up: Intrinsic Procedures
  
! 8.225 â€˜RANDOM_NUMBERâ€™ -- Pseudo-random number
  =============================================
  
  _Synopsis_:
!      â€˜CALL RANDOM_NUMBER(HARVEST)â€™
  
  _Description_:
!      For â€˜REALâ€™ argument, returns a single pseudorandom number or an
       array of pseudorandom numbers from the uniform distribution over
       the range 0 <= x < 1.
  
!      For â€˜UNSIGNEDâ€™ argument returns a single pseudorandom number or an
       array of pseudorandom numbers in over the range of 0 <= x <=
       HUGE(HARVEST).
  
*************** _Description_:
*** 17477,17489 ****
       Note that in a multi-threaded program (e.g.  using OpenMP
       directives), each thread has its own random number state.  For
       details of the seeding procedure, see the documentation for the
!      'RANDOM_SEED' intrinsic.
  
  _Class_:
       Subroutine
  
  _Arguments_:
!      HARVEST     Shall be a scalar or an array of type 'REAL'.
  
  _Example_:
            program test_random_number
--- 17477,17489 ----
       Note that in a multi-threaded program (e.g.  using OpenMP
       directives), each thread has its own random number state.  For
       details of the seeding procedure, see the documentation for the
!      â€˜RANDOM_SEEDâ€™ intrinsic.
  
  _Class_:
       Subroutine
  
  _Arguments_:
!      HARVEST     Shall be a scalar or an array of type â€˜REALâ€™.
  
  _Example_:
            program test_random_number
*************** _Example_:
*** 17492,17498 ****
            end program
  
  _Standard_:
!      Fortran 90 and later, extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  _See also_:
--- 17492,17498 ----
            end program
  
  _Standard_:
!      Fortran 90 and later, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  _See also_:
*************** _See also_:
*** 17502,17530 ****
  
  File: gfortran.info,  Node: RANDOM_SEED,  Next: RANGE,  Prev: RANDOM_NUMBER,  Up: Intrinsic Procedures
  
! 8.226 'RANDOM_SEED' -- Initialize a pseudo-random number sequence
  =================================================================
  
  _Synopsis_:
!      'CALL RANDOM_SEED([SIZE, PUT, GET])'
  
  _Description_:
       Restarts or queries the state of the pseudorandom number generator
!      used by 'RANDOM_NUMBER'.
  
!      If 'RANDOM_SEED' is called without arguments, it is seeded with
       random data retrieved from the operating system.
  
       As an extension to the Fortran standard, the GFortran
!      'RANDOM_NUMBER' supports multiple threads.  Each thread in a
!      multi-threaded program has its own seed.  When 'RANDOM_SEED' is
       called either without arguments or with the PUT argument, the given
       seed is copied into a master seed as well as the seed of the
!      current thread.  When a new thread uses 'RANDOM_NUMBER' for the
       first time, the seed is copied from the master seed, and forwarded
       N * 2^{128} steps to guarantee that the random stream does not
       alias any other stream in the system, where N is the number of
!      threads that have used 'RANDOM_NUMBER' so far during the program
       execution.
  
  _Class_:
--- 17502,17530 ----
  
  File: gfortran.info,  Node: RANDOM_SEED,  Next: RANGE,  Prev: RANDOM_NUMBER,  Up: Intrinsic Procedures
  
! 8.226 â€˜RANDOM_SEEDâ€™ -- Initialize a pseudo-random number sequence
  =================================================================
  
  _Synopsis_:
!      â€˜CALL RANDOM_SEED([SIZE, PUT, GET])â€™
  
  _Description_:
       Restarts or queries the state of the pseudorandom number generator
!      used by â€˜RANDOM_NUMBERâ€™.
  
!      If â€˜RANDOM_SEEDâ€™ is called without arguments, it is seeded with
       random data retrieved from the operating system.
  
       As an extension to the Fortran standard, the GFortran
!      â€˜RANDOM_NUMBERâ€™ supports multiple threads.  Each thread in a
!      multi-threaded program has its own seed.  When â€˜RANDOM_SEEDâ€™ is
       called either without arguments or with the PUT argument, the given
       seed is copied into a master seed as well as the seed of the
!      current thread.  When a new thread uses â€˜RANDOM_NUMBERâ€™ for the
       first time, the seed is copied from the master seed, and forwarded
       N * 2^{128} steps to guarantee that the random stream does not
       alias any other stream in the system, where N is the number of
!      threads that have used â€˜RANDOM_NUMBERâ€™ so far during the program
       execution.
  
  _Class_:
*************** _Class_:
*** 17532,17547 ****
  
  _Arguments_:
       SIZE        (Optional) Shall be a scalar and of type default
!                  'INTEGER', with 'INTENT(OUT)'.  It specifies the
                   minimum size of the arrays used with the PUT and
                   GET arguments.
       PUT         (Optional) Shall be an array of type default
!                  'INTEGER' and rank one.  It is 'INTENT(IN)' and
                   the size of the array must be larger than or
                   equal to the number returned by the SIZE
                   argument.
       GET         (Optional) Shall be an array of type default
!                  'INTEGER' and rank one.  It is 'INTENT(OUT)' and
                   the size of the array must be larger than or
                   equal to the number returned by the SIZE
                   argument.
--- 17532,17547 ----
  
  _Arguments_:
       SIZE        (Optional) Shall be a scalar and of type default
!                  â€˜INTEGERâ€™, with â€˜INTENT(OUT)â€™.  It specifies the
                   minimum size of the arrays used with the PUT and
                   GET arguments.
       PUT         (Optional) Shall be an array of type default
!                  â€˜INTEGERâ€™ and rank one.  It is â€˜INTENT(IN)â€™ and
                   the size of the array must be larger than or
                   equal to the number returned by the SIZE
                   argument.
       GET         (Optional) Shall be an array of type default
!                  â€˜INTEGERâ€™ and rank one.  It is â€˜INTENT(OUT)â€™ and
                   the size of the array must be larger than or
                   equal to the number returned by the SIZE
                   argument.
*************** _See also_:
*** 17568,17599 ****
  
  File: gfortran.info,  Node: RANGE,  Next: RANK,  Prev: RANDOM_SEED,  Up: Intrinsic Procedures
  
! 8.227 'RANGE' -- Decimal exponent range
  =======================================
  
  _Synopsis_:
!      'RESULT = RANGE(X)'
  
  _Description_:
!      'RANGE(X)' returns the decimal exponent range in the model of the
!      type of 'X'.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      X           Shall be of type 'INTEGER', 'REAL', 'COMPLEX' or
!                  'UNSIGNED'.
  
  _Return value_:
!      The return value is of type 'INTEGER' and of the default integer
       kind.
  
  _Example_:
!      See 'PRECISION' for an example.
  
  _Standard_:
!      Fortran 90 and later, extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  _See also_:
--- 17568,17599 ----
  
  File: gfortran.info,  Node: RANGE,  Next: RANK,  Prev: RANDOM_SEED,  Up: Intrinsic Procedures
  
! 8.227 â€˜RANGEâ€™ -- Decimal exponent range
  =======================================
  
  _Synopsis_:
!      â€˜RESULT = RANGE(X)â€™
  
  _Description_:
!      â€˜RANGE(X)â€™ returns the decimal exponent range in the model of the
!      type of â€˜Xâ€™.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      X           Shall be of type â€˜INTEGERâ€™, â€˜REALâ€™, â€˜COMPLEXâ€™ or
!                  â€˜UNSIGNEDâ€™.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™ and of the default integer
       kind.
  
  _Example_:
!      See â€˜PRECISIONâ€™ for an example.
  
  _Standard_:
!      Fortran 90 and later, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  _See also_:
*************** _See also_:
*** 17603,17616 ****
  
  File: gfortran.info,  Node: RANK,  Next: REAL,  Prev: RANGE,  Up: Intrinsic Procedures
  
! 8.228 'RANK' -- Rank of a data object
  =====================================
  
  _Synopsis_:
!      'RESULT = RANK(A)'
  
  _Description_:
!      'RANK(A)' returns the rank of a scalar or array data object.
  
  _Class_:
       Inquiry function
--- 17603,17616 ----
  
  File: gfortran.info,  Node: RANK,  Next: REAL,  Prev: RANGE,  Up: Intrinsic Procedures
  
! 8.228 â€˜RANKâ€™ -- Rank of a data object
  =====================================
  
  _Synopsis_:
!      â€˜RESULT = RANK(A)â€™
  
  _Description_:
!      â€˜RANK(A)â€™ returns the rank of a scalar or array data object.
  
  _Class_:
       Inquiry function
*************** _Arguments_:
*** 17619,17625 ****
       A           can be of any type
  
  _Return value_:
!      The return value is of type 'INTEGER' and of the default integer
       kind.  For arrays, their rank is returned; for scalars zero is
       returned.
  
--- 17619,17625 ----
       A           can be of any type
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™ and of the default integer
       kind.  For arrays, their rank is returned; for scalars zero is
       returned.
  
*************** _Standard_:
*** 17637,17676 ****
  
  File: gfortran.info,  Node: REAL,  Next: RENAME,  Prev: RANK,  Up: Intrinsic Procedures
  
! 8.229 'REAL' -- Convert to real type
  ====================================
  
  _Synopsis_:
!      'RESULT = REAL(A [, KIND])'
!      'RESULT = REALPART(Z)'
  
  _Description_:
!      'REAL(A [, KIND])' converts its argument A to a real type.  The
!      'REALPART' function is provided for compatibility with 'g77', and
       its use is strongly discouraged.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           Shall be 'INTEGER', 'REAL', 'COMPLEX' or
!                  'UNSIGNED'.
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      These functions return a 'REAL' variable or array under the
       following rules:
  
       (A)
!           'REAL(A)' is converted to a default real type if A is an
            integer, real or unsigned variable.
       (B)
!           'REAL(A)' is converted to a real type with the kind type
            parameter of A if A is a complex variable.
       (C)
!           'REAL(A, KIND)' is converted to a real type with kind type
            parameter KIND if A is a complex, integer, real or unsigned
            variable.
  
--- 17637,17676 ----
  
  File: gfortran.info,  Node: REAL,  Next: RENAME,  Prev: RANK,  Up: Intrinsic Procedures
  
! 8.229 â€˜REALâ€™ -- Convert to real type
  ====================================
  
  _Synopsis_:
!      â€˜RESULT = REAL(A [, KIND])â€™
!      â€˜RESULT = REALPART(Z)â€™
  
  _Description_:
!      â€˜REAL(A [, KIND])â€™ converts its argument A to a real type.  The
!      â€˜REALPARTâ€™ function is provided for compatibility with â€˜g77â€™, and
       its use is strongly discouraged.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           Shall be â€˜INTEGERâ€™, â€˜REALâ€™, â€˜COMPLEXâ€™ or
!                  â€˜UNSIGNEDâ€™.
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      These functions return a â€˜REALâ€™ variable or array under the
       following rules:
  
       (A)
!           â€˜REAL(A)â€™ is converted to a default real type if A is an
            integer, real or unsigned variable.
       (B)
!           â€˜REAL(A)â€™ is converted to a real type with the kind type
            parameter of A if A is a complex variable.
       (C)
!           â€˜REAL(A, KIND)â€™ is converted to a real type with kind type
            parameter KIND if A is a complex, integer, real or unsigned
            variable.
  
*************** _Example_:
*** 17683,17698 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'FLOAT(A)'     'INTEGER(4)'      'REAL(4)'      Fortran 77 and later
!      'DFLOAT(A)'    'INTEGER(4)'      'REAL(8)'      GNU extension
!      'FLOATI(A)'    'INTEGER(2)'      'REAL(4)'      GNU extension (-fdec)
!      'FLOATJ(A)'    'INTEGER(4)'      'REAL(4)'      GNU extension (-fdec)
!      'FLOATK(A)'    'INTEGER(8)'      'REAL(4)'      GNU extension (-fdec)
!      'SNGL(A)'      'REAL(8)'         'REAL(4)'      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later, with KIND argument Fortran 90 and later, has
!      GNU extensions.  Extension for 'UNSIGNED' (*note Unsigned
       integers::).
  
  _See also_:
--- 17683,17698 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜FLOAT(A)â€™     â€˜INTEGER(4)â€™      â€˜REAL(4)â€™      Fortran 77 and later
!      â€˜DFLOAT(A)â€™    â€˜INTEGER(4)â€™      â€˜REAL(8)â€™      GNU extension
!      â€˜FLOATI(A)â€™    â€˜INTEGER(2)â€™      â€˜REAL(4)â€™      GNU extension (-fdec)
!      â€˜FLOATJ(A)â€™    â€˜INTEGER(4)â€™      â€˜REAL(4)â€™      GNU extension (-fdec)
!      â€˜FLOATK(A)â€™    â€˜INTEGER(8)â€™      â€˜REAL(4)â€™      GNU extension (-fdec)
!      â€˜SNGL(A)â€™      â€˜REAL(8)â€™         â€˜REAL(4)â€™      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later, with KIND argument Fortran 90 and later, has
!      GNU extensions.  Extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::).
  
  _See also_:
*************** _See also_:
*** 17701,17719 ****
  
  File: gfortran.info,  Node: RENAME,  Next: REPEAT,  Prev: REAL,  Up: Intrinsic Procedures
  
! 8.230 'RENAME' -- Rename a file
  ===============================
  
  _Synopsis_:
!      'CALL RENAME(PATH1, PATH2 [, STATUS])'
!      'STATUS = RENAME(PATH1, PATH2)'
  
  _Description_:
       Renames a file from file PATH1 to PATH2.  A null character
!      ('CHAR(0)') can be used to mark the end of the names in PATH1 and
       PATH2; otherwise, trailing blanks in the file names are ignored.
       If the STATUS argument is supplied, it contains 0 on success or a
!      nonzero error code upon return; see 'rename(2)'.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
--- 17701,17719 ----
  
  File: gfortran.info,  Node: RENAME,  Next: REPEAT,  Prev: REAL,  Up: Intrinsic Procedures
  
! 8.230 â€˜RENAMEâ€™ -- Rename a file
  ===============================
  
  _Synopsis_:
!      â€˜CALL RENAME(PATH1, PATH2 [, STATUS])â€™
!      â€˜STATUS = RENAME(PATH1, PATH2)â€™
  
  _Description_:
       Renames a file from file PATH1 to PATH2.  A null character
!      (â€˜CHAR(0)â€™) can be used to mark the end of the names in PATH1 and
       PATH2; otherwise, trailing blanks in the file names are ignored.
       If the STATUS argument is supplied, it contains 0 on success or a
!      nonzero error code upon return; see â€˜rename(2)â€™.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
*************** _Class_:
*** 17722,17730 ****
       Subroutine, function
  
  _Arguments_:
!      PATH1       Shall be of default 'CHARACTER' type.
!      PATH2       Shall be of default 'CHARACTER' type.
!      STATUS      (Optional) Shall be of default 'INTEGER' type.
  
  _Standard_:
       GNU extension
--- 17722,17730 ----
       Subroutine, function
  
  _Arguments_:
!      PATH1       Shall be of default â€˜CHARACTERâ€™ type.
!      PATH2       Shall be of default â€˜CHARACTERâ€™ type.
!      STATUS      (Optional) Shall be of default â€˜INTEGERâ€™ type.
  
  _Standard_:
       GNU extension
*************** _See also_:
*** 17735,17745 ****
  
  File: gfortran.info,  Node: REPEAT,  Next: RESHAPE,  Prev: RENAME,  Up: Intrinsic Procedures
  
! 8.231 'REPEAT' -- Repeated string concatenation
  ===============================================
  
  _Synopsis_:
!      'RESULT = REPEAT(STRING, NCOPIES)'
  
  _Description_:
       Concatenates NCOPIES copies of a string.
--- 17735,17745 ----
  
  File: gfortran.info,  Node: REPEAT,  Next: RESHAPE,  Prev: RENAME,  Up: Intrinsic Procedures
  
! 8.231 â€˜REPEATâ€™ -- Repeated string concatenation
  ===============================================
  
  _Synopsis_:
!      â€˜RESULT = REPEAT(STRING, NCOPIES)â€™
  
  _Description_:
       Concatenates NCOPIES copies of a string.
*************** _Class_:
*** 17748,17758 ****
       Transformational function
  
  _Arguments_:
!      STRING      Shall be scalar and of type 'CHARACTER'.
!      NCOPIES     Shall be scalar and of type 'INTEGER'.
  
  _Return value_:
!      A new scalar of type 'CHARACTER' built up from NCOPIES copies of
       STRING.
  
  _Example_:
--- 17748,17758 ----
       Transformational function
  
  _Arguments_:
!      STRING      Shall be scalar and of type â€˜CHARACTERâ€™.
!      NCOPIES     Shall be scalar and of type â€˜INTEGERâ€™.
  
  _Return value_:
!      A new scalar of type â€˜CHARACTERâ€™ built up from NCOPIES copies of
       STRING.
  
  _Example_:
*************** _Standard_:
*** 17766,17776 ****
  
  File: gfortran.info,  Node: RESHAPE,  Next: RRSPACING,  Prev: REPEAT,  Up: Intrinsic Procedures
  
! 8.232 'RESHAPE' -- Function to reshape an array
  ===============================================
  
  _Synopsis_:
!      'RESULT = RESHAPE(SOURCE, SHAPE[, PAD, ORDER])'
  
  _Description_:
       Reshapes SOURCE to correspond to SHAPE.  If necessary, the new
--- 17766,17776 ----
  
  File: gfortran.info,  Node: RESHAPE,  Next: RRSPACING,  Prev: REPEAT,  Up: Intrinsic Procedures
  
! 8.232 â€˜RESHAPEâ€™ -- Function to reshape an array
  ===============================================
  
  _Synopsis_:
!      â€˜RESULT = RESHAPE(SOURCE, SHAPE[, PAD, ORDER])â€™
  
  _Description_:
       Reshapes SOURCE to correspond to SHAPE.  If necessary, the new
*************** _Class_:
*** 17782,17792 ****
  
  _Arguments_:
       SOURCE      Shall be an array of any type.
!      SHAPE       Shall be of type 'INTEGER' and an array of rank
                   one.  Its values must be positive or zero.
       PAD         (Optional) shall be an array of the same type as
                   SOURCE.
!      ORDER       (Optional) shall be of type 'INTEGER' and an
                   array of the same shape as SHAPE.  Its values
                   shall be a permutation of the numbers from 1 to
                   n, where n is the size of SHAPE.  If ORDER is
--- 17782,17792 ----
  
  _Arguments_:
       SOURCE      Shall be an array of any type.
!      SHAPE       Shall be of type â€˜INTEGERâ€™ and an array of rank
                   one.  Its values must be positive or zero.
       PAD         (Optional) shall be an array of the same type as
                   SOURCE.
!      ORDER       (Optional) shall be of type â€˜INTEGERâ€™ and an
                   array of the same shape as SHAPE.  Its values
                   shall be a permutation of the numbers from 1 to
                   n, where n is the size of SHAPE.  If ORDER is
*************** _See also_:
*** 17811,17836 ****
  
  File: gfortran.info,  Node: RRSPACING,  Next: RSHIFT,  Prev: RESHAPE,  Up: Intrinsic Procedures
  
! 8.233 'RRSPACING' -- Reciprocal of the relative spacing
  =======================================================
  
  _Synopsis_:
!      'RESULT = RRSPACING(X)'
  
  _Description_:
!      'RRSPACING(X)' returns the reciprocal of the relative spacing of
       model numbers near X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           Shall be of type 'REAL'.
  
  _Return value_:
       The return value is of the same type and kind as X.  The value
!      returned is equal to 'ABS(FRACTION(X)) *
!      FLOAT(RADIX(X))**DIGITS(X)'.
  
  _Standard_:
       Fortran 90 and later
--- 17811,17836 ----
  
  File: gfortran.info,  Node: RRSPACING,  Next: RSHIFT,  Prev: RESHAPE,  Up: Intrinsic Procedures
  
! 8.233 â€˜RRSPACINGâ€™ -- Reciprocal of the relative spacing
  =======================================================
  
  _Synopsis_:
!      â€˜RESULT = RRSPACING(X)â€™
  
  _Description_:
!      â€˜RRSPACING(X)â€™ returns the reciprocal of the relative spacing of
       model numbers near X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           Shall be of type â€˜REALâ€™.
  
  _Return value_:
       The return value is of the same type and kind as X.  The value
!      returned is equal to â€˜ABS(FRACTION(X)) *
!      FLOAT(RADIX(X))**DIGITS(X)â€™.
  
  _Standard_:
       Fortran 90 and later
*************** _See also_:
*** 17841,17873 ****
  
  File: gfortran.info,  Node: RSHIFT,  Next: SAME_TYPE_AS,  Prev: RRSPACING,  Up: Intrinsic Procedures
  
! 8.234 'RSHIFT' -- Right shift bits
  ==================================
  
  _Synopsis_:
!      'RESULT = RSHIFT(I, SHIFT)'
  
  _Description_:
!      'RSHIFT' returns a value corresponding to I with all of the bits
       shifted right by SHIFT places.  SHIFT shall be nonnegative and less
!      than or equal to 'BIT_SIZE(I)', otherwise the result value is
       undefined.  Bits shifted out from the right end are lost.  The fill
       is arithmetic: the bits shifted in from the left end are equal to
       the leftmost bit, which in two's complement representation is the
       sign bit.
  
!      This function has been superseded by the 'SHIFTA' intrinsic, which
       is standard in Fortran 2008 and later.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be 'INTEGER'.
!      SHIFT       The type shall be 'INTEGER'.
  
  _Return value_:
!      The return value is of type 'INTEGER' and of the same kind as I.
  
  _Standard_:
       GNU extension
--- 17841,17873 ----
  
  File: gfortran.info,  Node: RSHIFT,  Next: SAME_TYPE_AS,  Prev: RRSPACING,  Up: Intrinsic Procedures
  
! 8.234 â€˜RSHIFTâ€™ -- Right shift bits
  ==================================
  
  _Synopsis_:
!      â€˜RESULT = RSHIFT(I, SHIFT)â€™
  
  _Description_:
!      â€˜RSHIFTâ€™ returns a value corresponding to I with all of the bits
       shifted right by SHIFT places.  SHIFT shall be nonnegative and less
!      than or equal to â€˜BIT_SIZE(I)â€™, otherwise the result value is
       undefined.  Bits shifted out from the right end are lost.  The fill
       is arithmetic: the bits shifted in from the left end are equal to
       the leftmost bit, which in two's complement representation is the
       sign bit.
  
!      This function has been superseded by the â€˜SHIFTAâ€™ intrinsic, which
       is standard in Fortran 2008 and later.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           The type shall be â€˜INTEGERâ€™.
!      SHIFT       The type shall be â€˜INTEGERâ€™.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™ and of the same kind as I.
  
  _Standard_:
       GNU extension
*************** _See also_:
*** 17883,17893 ****
  
  File: gfortran.info,  Node: SAME_TYPE_AS,  Next: SCALE,  Prev: RSHIFT,  Up: Intrinsic Procedures
  
! 8.235 'SAME_TYPE_AS' -- Query dynamic types for equality
  ========================================================
  
  _Synopsis_:
!      'RESULT = SAME_TYPE_AS(A, B)'
  
  _Description_:
       Query dynamic types for equality.
--- 17883,17893 ----
  
  File: gfortran.info,  Node: SAME_TYPE_AS,  Next: SCALE,  Prev: RSHIFT,  Up: Intrinsic Procedures
  
! 8.235 â€˜SAME_TYPE_ASâ€™ -- Query dynamic types for equality
  ========================================================
  
  _Synopsis_:
!      â€˜RESULT = SAME_TYPE_AS(A, B)â€™
  
  _Description_:
       Query dynamic types for equality.
*************** _See also_:
*** 17915,17939 ****
  
  File: gfortran.info,  Node: SCALE,  Next: SCAN,  Prev: SAME_TYPE_AS,  Up: Intrinsic Procedures
  
! 8.236 'SCALE' -- Scale a real value
  ===================================
  
  _Synopsis_:
!      'RESULT = SCALE(X, I)'
  
  _Description_:
!      'SCALE(X,I)' returns 'X * RADIX(X)**I'.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type of the argument shall be a 'REAL'.
!      I           The type of the argument shall be a 'INTEGER'.
  
  _Return value_:
       The return value is of the same type and kind as X.  Its value is
!      'X * RADIX(X)**I'.
  
  _Example_:
            program test_scale
--- 17915,17939 ----
  
  File: gfortran.info,  Node: SCALE,  Next: SCAN,  Prev: SAME_TYPE_AS,  Up: Intrinsic Procedures
  
! 8.236 â€˜SCALEâ€™ -- Scale a real value
  ===================================
  
  _Synopsis_:
!      â€˜RESULT = SCALE(X, I)â€™
  
  _Description_:
!      â€˜SCALE(X,I)â€™ returns â€˜X * RADIX(X)**Iâ€™.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type of the argument shall be a â€˜REALâ€™.
!      I           The type of the argument shall be a â€˜INTEGERâ€™.
  
  _Return value_:
       The return value is of the same type and kind as X.  Its value is
!      â€˜X * RADIX(X)**Iâ€™.
  
  _Example_:
            program test_scale
*************** _Standard_:
*** 17948,17980 ****
  
  File: gfortran.info,  Node: SCAN,  Next: SECNDS,  Prev: SCALE,  Up: Intrinsic Procedures
  
! 8.237 'SCAN' -- Scan a string for the presence of a set of characters
  =====================================================================
  
  _Synopsis_:
!      'RESULT = SCAN(STRING, SET[, BACK [, KIND]])'
  
  _Description_:
       Scans a STRING for any of the characters in a SET of characters.
  
!      If BACK is either absent or equals 'FALSE', this function returns
       the position of the leftmost character of STRING that is in SET.
!      If BACK equals 'TRUE', the rightmost position is returned.  If no
       character of SET is found in STRING, the result is zero.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      STRING      Shall be of type 'CHARACTER'.
!      SET         Shall be of type 'CHARACTER'.
!      BACK        (Optional) shall be of type 'LOGICAL'.
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type 'INTEGER' and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.
  
  _Example_:
--- 17948,17980 ----
  
  File: gfortran.info,  Node: SCAN,  Next: SECNDS,  Prev: SCALE,  Up: Intrinsic Procedures
  
! 8.237 â€˜SCANâ€™ -- Scan a string for the presence of a set of characters
  =====================================================================
  
  _Synopsis_:
!      â€˜RESULT = SCAN(STRING, SET[, BACK [, KIND]])â€™
  
  _Description_:
       Scans a STRING for any of the characters in a SET of characters.
  
!      If BACK is either absent or equals â€˜FALSEâ€™, this function returns
       the position of the leftmost character of STRING that is in SET.
!      If BACK equals â€˜TRUEâ€™, the rightmost position is returned.  If no
       character of SET is found in STRING, the result is zero.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      STRING      Shall be of type â€˜CHARACTERâ€™.
!      SET         Shall be of type â€˜CHARACTERâ€™.
!      BACK        (Optional) shall be of type â€˜LOGICALâ€™.
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™ and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.
  
  _Example_:
*************** _See also_:
*** 17994,18007 ****
  
  File: gfortran.info,  Node: SECNDS,  Next: SECOND,  Prev: SCAN,  Up: Intrinsic Procedures
  
! 8.238 'SECNDS' -- Time function
  ===============================
  
  _Synopsis_:
!      'RESULT = SECNDS (X)'
  
  _Description_:
!      'SECNDS(X)' gets the time in seconds from the real-time system
       clock.  X is a reference time, also in seconds.  If this is zero,
       the time in seconds from midnight is returned.  This function is
       non-standard and its use is discouraged.
--- 17994,18007 ----
  
  File: gfortran.info,  Node: SECNDS,  Next: SECOND,  Prev: SCAN,  Up: Intrinsic Procedures
  
! 8.238 â€˜SECNDSâ€™ -- Time function
  ===============================
  
  _Synopsis_:
!      â€˜RESULT = SECNDS (X)â€™
  
  _Description_:
!      â€˜SECNDS(X)â€™ gets the time in seconds from the real-time system
       clock.  X is a reference time, also in seconds.  If this is zero,
       the time in seconds from midnight is returned.  This function is
       non-standard and its use is discouraged.
*************** _Class_:
*** 18010,18017 ****
       Function
  
  _Arguments_:
!      T           Shall be of type 'REAL(4)'.
!      X           Shall be of type 'REAL(4)'.
  
  _Return value_:
       None
--- 18010,18017 ----
       Function
  
  _Arguments_:
!      T           Shall be of type â€˜REAL(4)â€™.
!      X           Shall be of type â€˜REAL(4)â€™.
  
  _Return value_:
       None
*************** _Standard_:
*** 18034,18050 ****
  
  File: gfortran.info,  Node: SECOND,  Next: SELECTED_CHAR_KIND,  Prev: SECNDS,  Up: Intrinsic Procedures
  
! 8.239 'SECOND' -- CPU time function
  ===================================
  
  _Synopsis_:
!      'CALL SECOND(TIME)'
!      'TIME = SECOND()'
  
  _Description_:
!      Returns a 'REAL(4)' value representing the elapsed CPU time in
       seconds.  This provides the same functionality as the standard
!      'CPU_TIME' intrinsic, and is only included for backwards
       compatibility.
  
       This intrinsic is provided in both subroutine and function forms;
--- 18034,18050 ----
  
  File: gfortran.info,  Node: SECOND,  Next: SELECTED_CHAR_KIND,  Prev: SECNDS,  Up: Intrinsic Procedures
  
! 8.239 â€˜SECONDâ€™ -- CPU time function
  ===================================
  
  _Synopsis_:
!      â€˜CALL SECOND(TIME)â€™
!      â€˜TIME = SECOND()â€™
  
  _Description_:
!      Returns a â€˜REAL(4)â€™ value representing the elapsed CPU time in
       seconds.  This provides the same functionality as the standard
!      â€˜CPU_TIMEâ€™ intrinsic, and is only included for backwards
       compatibility.
  
       This intrinsic is provided in both subroutine and function forms;
*************** _Class_:
*** 18054,18060 ****
       Subroutine, function
  
  _Arguments_:
!      TIME        Shall be of type 'REAL(4)'.
  
  _Return value_:
       In either syntax, TIME is set to the process's current runtime in
--- 18054,18060 ----
       Subroutine, function
  
  _Arguments_:
!      TIME        Shall be of type â€˜REAL(4)â€™.
  
  _Return value_:
       In either syntax, TIME is set to the process's current runtime in
*************** _See also_:
*** 18069,18083 ****
  
  File: gfortran.info,  Node: SELECTED_CHAR_KIND,  Next: SELECTED_INT_KIND,  Prev: SECOND,  Up: Intrinsic Procedures
  
! 8.240 'SELECTED_CHAR_KIND' -- Choose character kind
  ===================================================
  
  _Synopsis_:
!      'RESULT = SELECTED_CHAR_KIND(NAME)'
  
  _Description_:
  
!      'SELECTED_CHAR_KIND(NAME)' returns the kind value for the character
       set named NAME, if a character set with such a name is supported,
       or -1 otherwise.  Currently, supported character sets include
       "ASCII" and "DEFAULT", which are equivalent, and "ISO_10646"
--- 18069,18083 ----
  
  File: gfortran.info,  Node: SELECTED_CHAR_KIND,  Next: SELECTED_INT_KIND,  Prev: SECOND,  Up: Intrinsic Procedures
  
! 8.240 â€˜SELECTED_CHAR_KINDâ€™ -- Choose character kind
  ===================================================
  
  _Synopsis_:
!      â€˜RESULT = SELECTED_CHAR_KIND(NAME)â€™
  
  _Description_:
  
!      â€˜SELECTED_CHAR_KIND(NAME)â€™ returns the kind value for the character
       set named NAME, if a character set with such a name is supported,
       or -1 otherwise.  Currently, supported character sets include
       "ASCII" and "DEFAULT", which are equivalent, and "ISO_10646"
*************** _Standard_:
*** 18118,18140 ****
  
  File: gfortran.info,  Node: SELECTED_INT_KIND,  Next: SELECTED_LOGICAL_KIND,  Prev: SELECTED_CHAR_KIND,  Up: Intrinsic Procedures
  
! 8.241 'SELECTED_INT_KIND' -- Choose integer kind
  ================================================
  
  _Synopsis_:
!      'RESULT = SELECTED_INT_KIND(R)'
  
  _Description_:
!      'SELECTED_INT_KIND(R)' return the kind value of the smallest
       integer type that can represent all values ranging from -10^R
       (exclusive) to 10^R (exclusive).  If there is no integer kind that
!      accommodates this range, 'SELECTED_INT_KIND' returns -1.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      R           Shall be a scalar and of type 'INTEGER'.
  
  _Example_:
            program large_integers
--- 18118,18140 ----
  
  File: gfortran.info,  Node: SELECTED_INT_KIND,  Next: SELECTED_LOGICAL_KIND,  Prev: SELECTED_CHAR_KIND,  Up: Intrinsic Procedures
  
! 8.241 â€˜SELECTED_INT_KINDâ€™ -- Choose integer kind
  ================================================
  
  _Synopsis_:
!      â€˜RESULT = SELECTED_INT_KIND(R)â€™
  
  _Description_:
!      â€˜SELECTED_INT_KIND(R)â€™ return the kind value of the smallest
       integer type that can represent all values ranging from -10^R
       (exclusive) to 10^R (exclusive).  If there is no integer kind that
!      accommodates this range, â€˜SELECTED_INT_KINDâ€™ returns -1.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      R           Shall be a scalar and of type â€˜INTEGERâ€™.
  
  _Example_:
            program large_integers
*************** _Standard_:
*** 18156,18177 ****
  
  File: gfortran.info,  Node: SELECTED_LOGICAL_KIND,  Next: SELECTED_REAL_KIND,  Prev: SELECTED_INT_KIND,  Up: Intrinsic Procedures
  
! 8.242 'SELECTED_LOGICAL_KIND' -- Choose logical kind
  ====================================================
  
  _Synopsis_:
!      'RESULT = SELECTED_LOGICAL_KIND(BITS)'
  
  _Description_:
!      'SELECTED_LOGICAL_KIND(BITS)' return the kind value of the smallest
       logical type whose storage size in bits is at least BITS.  If there
!      is no such logical kind, 'SELECTED_LOGICAL_KIND' returns -1.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      BITS        Shall be a scalar and of type 'INTEGER'.
  
  _Example_:
            program logical_kinds
--- 18156,18177 ----
  
  File: gfortran.info,  Node: SELECTED_LOGICAL_KIND,  Next: SELECTED_REAL_KIND,  Prev: SELECTED_INT_KIND,  Up: Intrinsic Procedures
  
! 8.242 â€˜SELECTED_LOGICAL_KINDâ€™ -- Choose logical kind
  ====================================================
  
  _Synopsis_:
!      â€˜RESULT = SELECTED_LOGICAL_KIND(BITS)â€™
  
  _Description_:
!      â€˜SELECTED_LOGICAL_KIND(BITS)â€™ return the kind value of the smallest
       logical type whose storage size in bits is at least BITS.  If there
!      is no such logical kind, â€˜SELECTED_LOGICAL_KINDâ€™ returns -1.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      BITS        Shall be a scalar and of type â€˜INTEGERâ€™.
  
  _Example_:
            program logical_kinds
*************** _Standard_:
*** 18190,18240 ****
  
  File: gfortran.info,  Node: SELECTED_REAL_KIND,  Next: SELECTED_UNSIGNED_KIND,  Prev: SELECTED_LOGICAL_KIND,  Up: Intrinsic Procedures
  
! 8.243 'SELECTED_REAL_KIND' -- Choose real kind
  ==============================================
  
  _Synopsis_:
!      'RESULT = SELECTED_REAL_KIND([P, R, RADIX])'
  
  _Description_:
!      'SELECTED_REAL_KIND(P,R)' returns the kind value of a real data
!      type with decimal precision of at least 'P' digits, exponent range
!      of at least 'R', and with a radix of 'RADIX'.
  
  _Class_:
       Transformational function
  
  _Arguments_:
       P           (Optional) shall be a scalar and of type
!                  'INTEGER'.
       R           (Optional) shall be a scalar and of type
!                  'INTEGER'.
       RADIX       (Optional) shall be a scalar and of type
!                  'INTEGER'.
       Before Fortran 2008, at least one of the arguments R or P shall be
       present; since Fortran 2008, they are assumed to be zero if absent.
  
  _Return value_:
  
!      'SELECTED_REAL_KIND' returns the value of the kind type parameter
!      of a real data type with decimal precision of at least 'P' digits,
!      a decimal exponent range of at least 'R', and with the requested
!      'RADIX'.  If the 'RADIX' parameter is absent, real kinds with any
       radix can be returned.  If more than one real data type meet the
       criteria, the kind of the data type with the smallest decimal
       precision is returned.  If no real data type matches the criteria,
       the result is
       -1 if the processor does not support a real data type with a
!           precision greater than or equal to 'P', but the 'R' and
!           'RADIX' requirements can be fulfilled
       -2 if the processor does not support a real type with an exponent
!           range greater than or equal to 'R', but 'P' and 'RADIX' are
            fulfillable
!      -3 if 'RADIX' but not 'P' and 'R' requirements
            are fulfillable
!      -4 if 'RADIX' and either 'P' or 'R' requirements
            are fulfillable
!      -5 if there is no real type with the given 'RADIX'
  
  _Example_:
            program real_kinds
--- 18190,18240 ----
  
  File: gfortran.info,  Node: SELECTED_REAL_KIND,  Next: SELECTED_UNSIGNED_KIND,  Prev: SELECTED_LOGICAL_KIND,  Up: Intrinsic Procedures
  
! 8.243 â€˜SELECTED_REAL_KINDâ€™ -- Choose real kind
  ==============================================
  
  _Synopsis_:
!      â€˜RESULT = SELECTED_REAL_KIND([P, R, RADIX])â€™
  
  _Description_:
!      â€˜SELECTED_REAL_KIND(P,R)â€™ returns the kind value of a real data
!      type with decimal precision of at least â€˜Pâ€™ digits, exponent range
!      of at least â€˜Râ€™, and with a radix of â€˜RADIXâ€™.
  
  _Class_:
       Transformational function
  
  _Arguments_:
       P           (Optional) shall be a scalar and of type
!                  â€˜INTEGERâ€™.
       R           (Optional) shall be a scalar and of type
!                  â€˜INTEGERâ€™.
       RADIX       (Optional) shall be a scalar and of type
!                  â€˜INTEGERâ€™.
       Before Fortran 2008, at least one of the arguments R or P shall be
       present; since Fortran 2008, they are assumed to be zero if absent.
  
  _Return value_:
  
!      â€˜SELECTED_REAL_KINDâ€™ returns the value of the kind type parameter
!      of a real data type with decimal precision of at least â€˜Pâ€™ digits,
!      a decimal exponent range of at least â€˜Râ€™, and with the requested
!      â€˜RADIXâ€™.  If the â€˜RADIXâ€™ parameter is absent, real kinds with any
       radix can be returned.  If more than one real data type meet the
       criteria, the kind of the data type with the smallest decimal
       precision is returned.  If no real data type matches the criteria,
       the result is
       -1 if the processor does not support a real data type with a
!           precision greater than or equal to â€˜Pâ€™, but the â€˜Râ€™ and
!           â€˜RADIXâ€™ requirements can be fulfilled
       -2 if the processor does not support a real type with an exponent
!           range greater than or equal to â€˜Râ€™, but â€˜Pâ€™ and â€˜RADIXâ€™ are
            fulfillable
!      -3 if â€˜RADIXâ€™ but not â€˜Pâ€™ and â€˜Râ€™ requirements
            are fulfillable
!      -4 if â€˜RADIXâ€™ and either â€˜Pâ€™ or â€˜Râ€™ requirements
            are fulfillable
!      -5 if there is no real type with the given â€˜RADIXâ€™
  
  _Example_:
            program real_kinds
*************** _Example_:
*** 18251,18257 ****
            end program real_kinds
  
  _Standard_:
!      Fortran 90 and later, with 'RADIX' Fortran 2008 or later
  
  _See also_:
       *note PRECISION::,
--- 18251,18257 ----
            end program real_kinds
  
  _Standard_:
!      Fortran 90 and later, with â€˜RADIXâ€™ Fortran 2008 or later
  
  _See also_:
       *note PRECISION::,
*************** _See also_:
*** 18261,18283 ****
  
  File: gfortran.info,  Node: SELECTED_UNSIGNED_KIND,  Next: SET_EXPONENT,  Prev: SELECTED_REAL_KIND,  Up: Intrinsic Procedures
  
! 8.244 'SELECTED_UNSIGNED_KIND' -- Choose unsigned kind
  ======================================================
  
  _Synopsis_:
!      'RESULT = SELECTED_UNSIGNED_KIND(R)'
  
  _Description_:
!      'SELECTED_UNSIGNED_KIND(R)' return the kind value of the smallest
       integer type that can represent all values ranging from 0 to 10^R
       (exclusive).  If there is no unsigned kind that accommodates this
!      range, 'SELECTED_UNSIGNED_KIND' returns -1.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      R           Shall be a scalar and of type 'INTEGER'.
  
  _Example_:
            program large_unsigned
--- 18261,18283 ----
  
  File: gfortran.info,  Node: SELECTED_UNSIGNED_KIND,  Next: SET_EXPONENT,  Prev: SELECTED_REAL_KIND,  Up: Intrinsic Procedures
  
! 8.244 â€˜SELECTED_UNSIGNED_KINDâ€™ -- Choose unsigned kind
  ======================================================
  
  _Synopsis_:
!      â€˜RESULT = SELECTED_UNSIGNED_KIND(R)â€™
  
  _Description_:
!      â€˜SELECTED_UNSIGNED_KIND(R)â€™ return the kind value of the smallest
       integer type that can represent all values ranging from 0 to 10^R
       (exclusive).  If there is no unsigned kind that accommodates this
!      range, â€˜SELECTED_UNSIGNED_KINDâ€™ returns -1.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      R           Shall be a scalar and of type â€˜INTEGERâ€™.
  
  _Example_:
            program large_unsigned
*************** _Example_:
*** 18290,18321 ****
            end program large_unsigned
  
  _Standard_:
!      Extension for 'UNSIGNED' (*note Unsigned integers::)
  
  
  File: gfortran.info,  Node: SET_EXPONENT,  Next: SHAPE,  Prev: SELECTED_UNSIGNED_KIND,  Up: Intrinsic Procedures
  
! 8.245 'SET_EXPONENT' -- Set the exponent of the model
  =====================================================
  
  _Synopsis_:
!      'RESULT = SET_EXPONENT(X, I)'
  
  _Description_:
!      'SET_EXPONENT(X, I)' returns the real number whose fractional part
       is that of X and whose exponent part is I.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           Shall be of type 'REAL'.
!      I           Shall be of type 'INTEGER'.
  
  _Return value_:
       The return value is of the same type and kind as X.  The real
       number whose fractional part is that of X and whose exponent part
!      if I is returned; it is 'FRACTION(X) * RADIX(X)**I'.
  
  _Example_:
            PROGRAM test_setexp
--- 18290,18321 ----
            end program large_unsigned
  
  _Standard_:
!      Extension for â€˜UNSIGNEDâ€™ (*note Unsigned integers::)
  
  
  File: gfortran.info,  Node: SET_EXPONENT,  Next: SHAPE,  Prev: SELECTED_UNSIGNED_KIND,  Up: Intrinsic Procedures
  
! 8.245 â€˜SET_EXPONENTâ€™ -- Set the exponent of the model
  =====================================================
  
  _Synopsis_:
!      â€˜RESULT = SET_EXPONENT(X, I)â€™
  
  _Description_:
!      â€˜SET_EXPONENT(X, I)â€™ returns the real number whose fractional part
       is that of X and whose exponent part is I.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           Shall be of type â€˜REALâ€™.
!      I           Shall be of type â€˜INTEGERâ€™.
  
  _Return value_:
       The return value is of the same type and kind as X.  The real
       number whose fractional part is that of X and whose exponent part
!      if I is returned; it is â€˜FRACTION(X) * RADIX(X)**Iâ€™.
  
  _Example_:
            PROGRAM test_setexp
*************** _Standard_:
*** 18330,18340 ****
  
  File: gfortran.info,  Node: SHAPE,  Next: SHIFTA,  Prev: SET_EXPONENT,  Up: Intrinsic Procedures
  
! 8.246 'SHAPE' -- Determine the shape of an array
  ================================================
  
  _Synopsis_:
!      'RESULT = SHAPE(SOURCE [, KIND])'
  
  _Description_:
       Determines the shape of an array.
--- 18330,18340 ----
  
  File: gfortran.info,  Node: SHAPE,  Next: SHIFTA,  Prev: SET_EXPONENT,  Up: Intrinsic Procedures
  
! 8.246 â€˜SHAPEâ€™ -- Determine the shape of an array
  ================================================
  
  _Synopsis_:
!      â€˜RESULT = SHAPE(SOURCE [, KIND])â€™
  
  _Description_:
       Determines the shape of an array.
*************** _Arguments_:
*** 18346,18357 ****
       SOURCE      Shall be an array or scalar of any type.  If
                   SOURCE is a pointer it must be associated and
                   allocatable arrays must be allocated.
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      An 'INTEGER' array of rank one with as many elements as SOURCE has
       dimensions.  The elements of the resulting array correspond to the
       extend of SOURCE along the respective dimensions.  If SOURCE is a
       scalar, the result is the rank one array of size zero.  If KIND is
--- 18346,18357 ----
       SOURCE      Shall be an array or scalar of any type.  If
                   SOURCE is a pointer it must be associated and
                   allocatable arrays must be allocated.
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      An â€˜INTEGERâ€™ array of rank one with as many elements as SOURCE has
       dimensions.  The elements of the resulting array correspond to the
       extend of SOURCE along the respective dimensions.  If SOURCE is a
       scalar, the result is the rank one array of size zero.  If KIND is
*************** _See also_:
*** 18375,18390 ****
  
  File: gfortran.info,  Node: SHIFTA,  Next: SHIFTL,  Prev: SHAPE,  Up: Intrinsic Procedures
  
! 8.247 'SHIFTA' -- Right shift with fill
  =======================================
  
  _Synopsis_:
!      'RESULT = SHIFTA(I, SHIFT)'
  
  _Description_:
!      'SHIFTA' returns a value corresponding to I with all of the bits
       shifted right by SHIFT places.  SHIFT that be nonnegative and less
!      than or equal to 'BIT_SIZE(I)', otherwise the result value is
       undefined.  Bits shifted out from the right end are lost.  The fill
       is arithmetic: the bits shifted in from the left end are equal to
       the leftmost bit, which in two's complement representation is the
--- 18375,18390 ----
  
  File: gfortran.info,  Node: SHIFTA,  Next: SHIFTL,  Prev: SHAPE,  Up: Intrinsic Procedures
  
! 8.247 â€˜SHIFTAâ€™ -- Right shift with fill
  =======================================
  
  _Synopsis_:
!      â€˜RESULT = SHIFTA(I, SHIFT)â€™
  
  _Description_:
!      â€˜SHIFTAâ€™ returns a value corresponding to I with all of the bits
       shifted right by SHIFT places.  SHIFT that be nonnegative and less
!      than or equal to â€˜BIT_SIZE(I)â€™, otherwise the result value is
       undefined.  Bits shifted out from the right end are lost.  The fill
       is arithmetic: the bits shifted in from the left end are equal to
       the leftmost bit, which in two's complement representation is the
*************** _Class_:
*** 18394,18407 ****
       Elemental function
  
  _Arguments_:
!      I           The type shall be 'INTEGER' or 'UNSIGNED'.
!      SHIFT       The type shall be 'INTEGER'.
  
  _Return value_:
       The return value is of the same type and kind as I.
  
  _Standard_:
!      Fortran 2008 and later, extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  _See also_:
--- 18394,18407 ----
       Elemental function
  
  _Arguments_:
!      I           The type shall be â€˜INTEGERâ€™ or â€˜UNSIGNEDâ€™.
!      SHIFT       The type shall be â€˜INTEGERâ€™.
  
  _Return value_:
       The return value is of the same type and kind as I.
  
  _Standard_:
!      Fortran 2008 and later, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  _See also_:
*************** _See also_:
*** 18411,18426 ****
  
  File: gfortran.info,  Node: SHIFTL,  Next: SHIFTR,  Prev: SHIFTA,  Up: Intrinsic Procedures
  
! 8.248 'SHIFTL' -- Left shift
  ============================
  
  _Synopsis_:
!      'RESULT = SHIFTL(I, SHIFT)'
  
  _Description_:
!      'SHIFTL' returns a value corresponding to I with all of the bits
       shifted left by SHIFT places.  SHIFT shall be nonnegative and less
!      than or equal to 'BIT_SIZE(I)', otherwise the result value is
       undefined.  Bits shifted out from the left end are lost, and bits
       shifted in from the right end are set to 0.
  
--- 18411,18426 ----
  
  File: gfortran.info,  Node: SHIFTL,  Next: SHIFTR,  Prev: SHIFTA,  Up: Intrinsic Procedures
  
! 8.248 â€˜SHIFTLâ€™ -- Left shift
  ============================
  
  _Synopsis_:
!      â€˜RESULT = SHIFTL(I, SHIFT)â€™
  
  _Description_:
!      â€˜SHIFTLâ€™ returns a value corresponding to I with all of the bits
       shifted left by SHIFT places.  SHIFT shall be nonnegative and less
!      than or equal to â€˜BIT_SIZE(I)â€™, otherwise the result value is
       undefined.  Bits shifted out from the left end are lost, and bits
       shifted in from the right end are set to 0.
  
*************** _Class_:
*** 18428,18441 ****
       Elemental function
  
  _Arguments_:
!      I           The type shall be 'INTEGER' or 'UNSIGNED'.
!      SHIFT       The type shall be 'INTEGER'.
  
  _Return value_:
       The return value is of the same type and kind as I.
  
  _Standard_:
!      Fortran 2008 and later, extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  _See also_:
--- 18428,18441 ----
       Elemental function
  
  _Arguments_:
!      I           The type shall be â€˜INTEGERâ€™ or â€˜UNSIGNEDâ€™.
!      SHIFT       The type shall be â€˜INTEGERâ€™.
  
  _Return value_:
       The return value is of the same type and kind as I.
  
  _Standard_:
!      Fortran 2008 and later, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  _See also_:
*************** _See also_:
*** 18445,18460 ****
  
  File: gfortran.info,  Node: SHIFTR,  Next: SIGN,  Prev: SHIFTL,  Up: Intrinsic Procedures
  
! 8.249 'SHIFTR' -- Right shift
  =============================
  
  _Synopsis_:
!      'RESULT = SHIFTR(I, SHIFT)'
  
  _Description_:
!      'SHIFTR' returns a value corresponding to I with all of the bits
       shifted right by SHIFT places.  SHIFT shall be nonnegative and less
!      than or equal to 'BIT_SIZE(I)', otherwise the result value is
       undefined.  Bits shifted out from the right end are lost, and bits
       shifted in from the left end are set to 0.
  
--- 18445,18460 ----
  
  File: gfortran.info,  Node: SHIFTR,  Next: SIGN,  Prev: SHIFTL,  Up: Intrinsic Procedures
  
! 8.249 â€˜SHIFTRâ€™ -- Right shift
  =============================
  
  _Synopsis_:
!      â€˜RESULT = SHIFTR(I, SHIFT)â€™
  
  _Description_:
!      â€˜SHIFTRâ€™ returns a value corresponding to I with all of the bits
       shifted right by SHIFT places.  SHIFT shall be nonnegative and less
!      than or equal to â€˜BIT_SIZE(I)â€™, otherwise the result value is
       undefined.  Bits shifted out from the right end are lost, and bits
       shifted in from the left end are set to 0.
  
*************** _Class_:
*** 18462,18472 ****
       Elemental function
  
  _Arguments_:
!      I           The type shall be 'INTEGER'.
!      SHIFT       The type shall be 'INTEGER'.
  
  _Return value_:
!      The return value is of type 'INTEGER' and of the same kind as I.
  
  _Standard_:
       Fortran 2008 and later
--- 18462,18472 ----
       Elemental function
  
  _Arguments_:
!      I           The type shall be â€˜INTEGERâ€™.
!      SHIFT       The type shall be â€˜INTEGERâ€™.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™ and of the same kind as I.
  
  _Standard_:
       Fortran 2008 and later
*************** _See also_:
*** 18478,18502 ****
  
  File: gfortran.info,  Node: SIGN,  Next: SIGNAL,  Prev: SHIFTR,  Up: Intrinsic Procedures
  
! 8.250 'SIGN' -- Sign copying function
  =====================================
  
  _Synopsis_:
!      'RESULT = SIGN(A, B)'
  
  _Description_:
!      'SIGN(A,B)' returns the value of A with the sign of B.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           Shall be of type 'INTEGER' or 'REAL'
       B           Shall be of the same type and kind as A.
  
  _Return value_:
       The kind of the return value is that of A and B.  If B \ge 0 then
!      the result is 'ABS(A)', else it is '-ABS(A)'.
  
  _Example_:
            program test_sign
--- 18478,18502 ----
  
  File: gfortran.info,  Node: SIGN,  Next: SIGNAL,  Prev: SHIFTR,  Up: Intrinsic Procedures
  
! 8.250 â€˜SIGNâ€™ -- Sign copying function
  =====================================
  
  _Synopsis_:
!      â€˜RESULT = SIGN(A, B)â€™
  
  _Description_:
!      â€˜SIGN(A,B)â€™ returns the value of A with the sign of B.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      A           Shall be of type â€˜INTEGERâ€™ or â€˜REALâ€™
       B           Shall be of the same type and kind as A.
  
  _Return value_:
       The kind of the return value is that of A and B.  If B \ge 0 then
!      the result is â€˜ABS(A)â€™, else it is â€˜-ABS(A)â€™.
  
  _Example_:
            program test_sign
*************** _Example_:
*** 18512,18520 ****
  _Specific names_:
       Name           Arguments           Return type    Standard
       -------------------------------------------------------------------------
!      'SIGN(A,B)'    'REAL(4) A, B'      'REAL(4)'      Fortran 77 and later
!      'ISIGN(A,B)'   'INTEGER(4) A, B'   'INTEGER(4)'   Fortran 77 and later
!      'DSIGN(A,B)'   'REAL(8) A, B'      'REAL(8)'      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later
--- 18512,18520 ----
  _Specific names_:
       Name           Arguments           Return type    Standard
       -------------------------------------------------------------------------
!      â€˜SIGN(A,B)â€™    â€˜REAL(4) A, Bâ€™      â€˜REAL(4)â€™      Fortran 77 and later
!      â€˜ISIGN(A,B)â€™   â€˜INTEGER(4) A, Bâ€™   â€˜INTEGER(4)â€™   Fortran 77 and later
!      â€˜DSIGN(A,B)â€™   â€˜REAL(8) A, Bâ€™      â€˜REAL(8)â€™      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later
*************** _Standard_:
*** 18522,18557 ****
  
  File: gfortran.info,  Node: SIGNAL,  Next: SIN,  Prev: SIGN,  Up: Intrinsic Procedures
  
! 8.251 'SIGNAL' -- Signal handling subroutine (or function)
  ==========================================================
  
  _Synopsis_:
!      'CALL SIGNAL(NUMBER, HANDLER [, STATUS])'
!      'STATUS = SIGNAL(NUMBER, HANDLER)'
  
  _Description_:
!      'SIGNAL(NUMBER, HANDLER [, STATUS])' causes external subroutine
       HANDLER to be executed with a single integer argument passed by
       value when signal NUMBER occurs.  If HANDLER is an integer, it can
       be used to turn off handling of signal NUMBER or revert to its
!      default action.  See 'signal(2)'.
  
!      If 'SIGNAL' is called as a subroutine and the STATUS argument is
!      supplied, it is set to the value returned by 'signal(2)'.
  
  _Class_:
       Subroutine, function
  
  _Arguments_:
!      NUMBER      Shall be a scalar integer, with 'INTENT(IN)'
!      HANDLER     Signal handler ('INTEGER FUNCTION' or
!                  'SUBROUTINE') or dummy/global 'INTEGER' scalar.
!                  'INTEGER'.  It is 'INTENT(IN)'.
       STATUS      (Optional) STATUS shall be a scalar integer.  It
!                  has 'INTENT(OUT)'.
  
  _Return value_:
!      The 'SIGNAL' function returns the value returned by 'signal(2)'.
  
  _Example_:
            module m_handler
--- 18522,18557 ----
  
  File: gfortran.info,  Node: SIGNAL,  Next: SIN,  Prev: SIGN,  Up: Intrinsic Procedures
  
! 8.251 â€˜SIGNALâ€™ -- Signal handling subroutine (or function)
  ==========================================================
  
  _Synopsis_:
!      â€˜CALL SIGNAL(NUMBER, HANDLER [, STATUS])â€™
!      â€˜STATUS = SIGNAL(NUMBER, HANDLER)â€™
  
  _Description_:
!      â€˜SIGNAL(NUMBER, HANDLER [, STATUS])â€™ causes external subroutine
       HANDLER to be executed with a single integer argument passed by
       value when signal NUMBER occurs.  If HANDLER is an integer, it can
       be used to turn off handling of signal NUMBER or revert to its
!      default action.  See â€˜signal(2)â€™.
  
!      If â€˜SIGNALâ€™ is called as a subroutine and the STATUS argument is
!      supplied, it is set to the value returned by â€˜signal(2)â€™.
  
  _Class_:
       Subroutine, function
  
  _Arguments_:
!      NUMBER      Shall be a scalar integer, with â€˜INTENT(IN)â€™
!      HANDLER     Signal handler (â€˜INTEGER FUNCTIONâ€™ or
!                  â€˜SUBROUTINEâ€™) or dummy/global â€˜INTEGERâ€™ scalar.
!                  â€˜INTEGERâ€™.  It is â€˜INTENT(IN)â€™.
       STATUS      (Optional) STATUS shall be a scalar integer.  It
!                  has â€˜INTENT(OUT)â€™.
  
  _Return value_:
!      The â€˜SIGNALâ€™ function returns the value returned by â€˜signal(2)â€™.
  
  _Example_:
            module m_handler
*************** _Standard_:
*** 18578,18597 ****
  
  File: gfortran.info,  Node: SIN,  Next: SIND,  Prev: SIGNAL,  Up: Intrinsic Procedures
  
! 8.252 'SIN' -- Sine function
  ============================
  
  _Synopsis_:
!      'RESULT = SIN(X)'
  
  _Description_:
!      'SIN(X)' computes the sine of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL' or 'COMPLEX'.
  
  _Return value_:
       The return value has same type and kind as X.
--- 18578,18597 ----
  
  File: gfortran.info,  Node: SIN,  Next: SIND,  Prev: SIGNAL,  Up: Intrinsic Procedures
  
! 8.252 â€˜SINâ€™ -- Sine function
  ============================
  
  _Synopsis_:
!      â€˜RESULT = SIN(X)â€™
  
  _Description_:
!      â€˜SIN(X)â€™ computes the sine of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™ or â€˜COMPLEXâ€™.
  
  _Return value_:
       The return value has same type and kind as X.
*************** _Example_:
*** 18605,18615 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'SIN(X)'       'REAL(4) X'       'REAL(4)'      Fortran 77 and later
!      'DSIN(X)'      'REAL(8) X'       'REAL(8)'      Fortran 77 and later
!      'CSIN(X)'      'COMPLEX(4) X'    'COMPLEX(4)'   Fortran 77 and later
!      'ZSIN(X)'      'COMPLEX(8) X'    'COMPLEX(8)'   GNU extension
!      'CDSIN(X)'     'COMPLEX(8) X'    'COMPLEX(8)'   GNU extension
  
  _Standard_:
       Fortran 77 and later
--- 18605,18615 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜SIN(X)â€™       â€˜REAL(4) Xâ€™       â€˜REAL(4)â€™      Fortran 77 and later
!      â€˜DSIN(X)â€™      â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      Fortran 77 and later
!      â€˜CSIN(X)â€™      â€˜COMPLEX(4) Xâ€™    â€˜COMPLEX(4)â€™   Fortran 77 and later
!      â€˜ZSIN(X)â€™      â€˜COMPLEX(8) Xâ€™    â€˜COMPLEX(8)â€™   GNU extension
!      â€˜CDSIN(X)â€™     â€˜COMPLEX(8) Xâ€™    â€˜COMPLEX(8)â€™   GNU extension
  
  _Standard_:
       Fortran 77 and later
*************** _See also_:
*** 18623,18642 ****
  
  File: gfortran.info,  Node: SIND,  Next: SINH,  Prev: SIN,  Up: Intrinsic Procedures
  
! 8.253 'SIND' -- Sine function, degrees
  ======================================
  
  _Synopsis_:
!      'RESULT = SIND(X)'
  
  _Description_:
!      'SIND(X)' computes the sine of X in degrees.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL'.
  
  _Return value_:
       The return value has same type and kind as X, and its value is in
--- 18623,18642 ----
  
  File: gfortran.info,  Node: SIND,  Next: SINH,  Prev: SIN,  Up: Intrinsic Procedures
  
! 8.253 â€˜SINDâ€™ -- Sine function, degrees
  ======================================
  
  _Synopsis_:
!      â€˜RESULT = SIND(X)â€™
  
  _Description_:
!      â€˜SIND(X)â€™ computes the sine of X in degrees.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™.
  
  _Return value_:
       The return value has same type and kind as X, and its value is in
*************** _Example_:
*** 18651,18661 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'SIND(X)'      'REAL(4) X'       'REAL(4)'      Fortran 2023
!      'DSIND(X)'     'REAL(8) X'       'REAL(8)'      GNU extension
!      'CSIND(X)'     'COMPLEX(4) X'    'COMPLEX(4)'   GNU extension
!      'ZSIND(X)'     'COMPLEX(8) X'    'COMPLEX(8)'   GNU extension
!      'CDSIND(X)'    'COMPLEX(8) X'    'COMPLEX(8)'   GNU extension
  
  _Standard_:
       Fortran 2023
--- 18651,18661 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜SIND(X)â€™      â€˜REAL(4) Xâ€™       â€˜REAL(4)â€™      Fortran 2023
!      â€˜DSIND(X)â€™     â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      GNU extension
!      â€˜CSIND(X)â€™     â€˜COMPLEX(4) Xâ€™    â€˜COMPLEX(4)â€™   GNU extension
!      â€˜ZSIND(X)â€™     â€˜COMPLEX(8) Xâ€™    â€˜COMPLEX(8)â€™   GNU extension
!      â€˜CDSIND(X)â€™    â€˜COMPLEX(8) Xâ€™    â€˜COMPLEX(8)â€™   GNU extension
  
  _Standard_:
       Fortran 2023
*************** _See also_:
*** 18669,18688 ****
  
  File: gfortran.info,  Node: SINH,  Next: SIZE,  Prev: SIND,  Up: Intrinsic Procedures
  
! 8.254 'SINH' -- Hyperbolic sine function
  ========================================
  
  _Synopsis_:
!      'RESULT = SINH(X)'
  
  _Description_:
!      'SINH(X)' computes the hyperbolic sine of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL' or 'COMPLEX'.
  
  _Return value_:
       The return value has same type and kind as X.
--- 18669,18688 ----
  
  File: gfortran.info,  Node: SINH,  Next: SIZE,  Prev: SIND,  Up: Intrinsic Procedures
  
! 8.254 â€˜SINHâ€™ -- Hyperbolic sine function
  ========================================
  
  _Synopsis_:
!      â€˜RESULT = SINH(X)â€™
  
  _Description_:
!      â€˜SINH(X)â€™ computes the hyperbolic sine of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™ or â€˜COMPLEXâ€™.
  
  _Return value_:
       The return value has same type and kind as X.
*************** _Example_:
*** 18696,18702 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'DSINH(X)'     'REAL(8) X'       'REAL(8)'      Fortran 90 and later
  
  _Standard_:
       Fortran 90 and later, for a complex argument Fortran 2008 or later,
--- 18696,18702 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜DSINH(X)â€™     â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      Fortran 90 and later
  
  _Standard_:
       Fortran 90 and later, for a complex argument Fortran 2008 or later,
*************** _See also_:
*** 18708,18718 ****
  
  File: gfortran.info,  Node: SIZE,  Next: SIZEOF,  Prev: SINH,  Up: Intrinsic Procedures
  
! 8.255 'SIZE' -- Determine the size of an array
  ==============================================
  
  _Synopsis_:
!      'RESULT = SIZE(ARRAY[, DIM [, KIND]])'
  
  _Description_:
       Determine the extent of ARRAY along a specified dimension DIM, or
--- 18708,18718 ----
  
  File: gfortran.info,  Node: SIZE,  Next: SIZEOF,  Prev: SINH,  Up: Intrinsic Procedures
  
! 8.255 â€˜SIZEâ€™ -- Determine the size of an array
  ==============================================
  
  _Synopsis_:
!      â€˜RESULT = SIZE(ARRAY[, DIM [, KIND]])â€™
  
  _Description_:
       Determine the extent of ARRAY along a specified dimension DIM, or
*************** _Arguments_:
*** 18725,18739 ****
       ARRAY       Shall be an array of any type.  If ARRAY is a
                   pointer it must be associated and allocatable
                   arrays must be allocated.
!      DIM         (Optional) shall be a scalar of type 'INTEGER'
                   and its value shall be in the range from 1 to n,
                   where n equals the rank of ARRAY.
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type 'INTEGER' and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.
  
  _Example_:
--- 18725,18739 ----
       ARRAY       Shall be an array of any type.  If ARRAY is a
                   pointer it must be associated and allocatable
                   arrays must be allocated.
!      DIM         (Optional) shall be a scalar of type â€˜INTEGERâ€™
                   and its value shall be in the range from 1 to n,
                   where n equals the rank of ARRAY.
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™ and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.
  
  _Example_:
*************** _See also_:
*** 18751,18765 ****
  
  File: gfortran.info,  Node: SIZEOF,  Next: SLEEP,  Prev: SIZE,  Up: Intrinsic Procedures
  
! 8.256 'SIZEOF' -- Size in bytes of an expression
  ================================================
  
  _Synopsis_:
!      'N = SIZEOF(X)'
  
  _Description_:
!      'SIZEOF(X)' calculates the number of bytes of storage the
!      expression 'X' occupies.
  
  _Class_:
       Inquiry function
--- 18751,18765 ----
  
  File: gfortran.info,  Node: SIZEOF,  Next: SLEEP,  Prev: SIZE,  Up: Intrinsic Procedures
  
! 8.256 â€˜SIZEOFâ€™ -- Size in bytes of an expression
  ================================================
  
  _Synopsis_:
!      â€˜N = SIZEOF(X)â€™
  
  _Description_:
!      â€˜SIZEOF(X)â€™ calculates the number of bytes of storage the
!      expression â€˜Xâ€™ occupies.
  
  _Class_:
       Inquiry function
*************** _Return value_:
*** 18772,18780 ****
       The return value is of type integer and of the system-dependent
       kind C_SIZE_T (from the ISO_C_BINDING module).  Its value is the
       number of bytes occupied by the argument.  If the argument has the
!      'POINTER' attribute, the number of bytes of the storage area
       pointed to is returned.  If the argument is of a derived type with
!      'POINTER' or 'ALLOCATABLE' components, the return value does not
       account for the sizes of the data pointed to by these components.
       If the argument is polymorphic, the size according to the dynamic
       type is returned.  The argument may not be a procedure or procedure
--- 18772,18780 ----
       The return value is of type integer and of the system-dependent
       kind C_SIZE_T (from the ISO_C_BINDING module).  Its value is the
       number of bytes occupied by the argument.  If the argument has the
!      â€˜POINTERâ€™ attribute, the number of bytes of the storage area
       pointed to is returned.  If the argument is of a derived type with
!      â€˜POINTERâ€™ or â€˜ALLOCATABLEâ€™ components, the return value does not
       account for the sizes of the data pointed to by these components.
       If the argument is polymorphic, the size according to the dynamic
       type is returned.  The argument may not be a procedure or procedure
*************** _Example_:
*** 18787,18794 ****
               real :: r, s(5)
               print *, (sizeof(s)/sizeof(r) == 5)
               end
!      The example prints '.TRUE.' unless you are using a platform where
!      default 'REAL' variables are unusually padded.
  
  _Standard_:
       GNU extension
--- 18787,18794 ----
               real :: r, s(5)
               print *, (sizeof(s)/sizeof(r) == 5)
               end
!      The example prints â€˜.TRUE.â€™ unless you are using a platform where
!      default â€˜REALâ€™ variables are unusually padded.
  
  _Standard_:
       GNU extension
*************** _See also_:
*** 18800,18810 ****
  
  File: gfortran.info,  Node: SLEEP,  Next: SPACING,  Prev: SIZEOF,  Up: Intrinsic Procedures
  
! 8.257 'SLEEP' -- Sleep for the specified number of seconds
  ==========================================================
  
  _Synopsis_:
!      'CALL SLEEP(SECONDS)'
  
  _Description_:
       Calling this subroutine causes the process to pause for SECONDS
--- 18800,18810 ----
  
  File: gfortran.info,  Node: SLEEP,  Next: SPACING,  Prev: SIZEOF,  Up: Intrinsic Procedures
  
! 8.257 â€˜SLEEPâ€™ -- Sleep for the specified number of seconds
  ==========================================================
  
  _Synopsis_:
!      â€˜CALL SLEEP(SECONDS)â€™
  
  _Description_:
       Calling this subroutine causes the process to pause for SECONDS
*************** _Class_:
*** 18814,18820 ****
       Subroutine
  
  _Arguments_:
!      SECONDS     The type shall be of default 'INTEGER'.
  
  _Example_:
            program test_sleep
--- 18814,18820 ----
       Subroutine
  
  _Arguments_:
!      SECONDS     The type shall be of default â€˜INTEGERâ€™.
  
  _Example_:
            program test_sleep
*************** _Standard_:
*** 18827,18837 ****
  
  File: gfortran.info,  Node: SPACING,  Next: SPREAD,  Prev: SLEEP,  Up: Intrinsic Procedures
  
! 8.258 'SPACING' -- Smallest distance between two numbers of a given type
  ========================================================================
  
  _Synopsis_:
!      'RESULT = SPACING(X)'
  
  _Description_:
       Determines the distance between the argument X and the nearest
--- 18827,18837 ----
  
  File: gfortran.info,  Node: SPACING,  Next: SPREAD,  Prev: SLEEP,  Up: Intrinsic Procedures
  
! 8.258 â€˜SPACINGâ€™ -- Smallest distance between two numbers of a given type
  ========================================================================
  
  _Synopsis_:
!      â€˜RESULT = SPACING(X)â€™
  
  _Description_:
       Determines the distance between the argument X and the nearest
*************** _Class_:
*** 18841,18847 ****
       Elemental function
  
  _Arguments_:
!      X           Shall be of type 'REAL'.
  
  _Return value_:
       The result is of the same type as the input argument X.
--- 18841,18847 ----
       Elemental function
  
  _Arguments_:
!      X           Shall be of type â€˜REALâ€™.
  
  _Return value_:
       The result is of the same type as the input argument X.
*************** _See also_:
*** 18864,18874 ****
  
  File: gfortran.info,  Node: SPREAD,  Next: SQRT,  Prev: SPACING,  Up: Intrinsic Procedures
  
! 8.259 'SPREAD' -- Add a dimension to an array
  =============================================
  
  _Synopsis_:
!      'RESULT = SPREAD(SOURCE, DIM, NCOPIES)'
  
  _Description_:
       Replicates a SOURCE array NCOPIES times along a specified dimension
--- 18864,18874 ----
  
  File: gfortran.info,  Node: SPREAD,  Next: SQRT,  Prev: SPACING,  Up: Intrinsic Procedures
  
! 8.259 â€˜SPREADâ€™ -- Add a dimension to an array
  =============================================
  
  _Synopsis_:
!      â€˜RESULT = SPREAD(SOURCE, DIM, NCOPIES)â€™
  
  _Description_:
       Replicates a SOURCE array NCOPIES times along a specified dimension
*************** _Class_:
*** 18880,18889 ****
  _Arguments_:
       SOURCE      Shall be a scalar or an array of any type and a
                   rank less than seven.
!      DIM         Shall be a scalar of type 'INTEGER' with a value
                   in the range from 1 to n+1, where n equals the
                   rank of SOURCE.
!      NCOPIES     Shall be a scalar of type 'INTEGER'.
  
  _Return value_:
       The result is an array of the same type as SOURCE and has rank n+1
--- 18880,18889 ----
  _Arguments_:
       SOURCE      Shall be a scalar or an array of any type and a
                   rank less than seven.
!      DIM         Shall be a scalar of type â€˜INTEGERâ€™ with a value
                   in the range from 1 to n+1, where n equals the
                   rank of SOURCE.
!      NCOPIES     Shall be a scalar of type â€˜INTEGERâ€™.
  
  _Return value_:
       The result is an array of the same type as SOURCE and has rank n+1
*************** _See also_:
*** 18905,18927 ****
  
  File: gfortran.info,  Node: SQRT,  Next: SRAND,  Prev: SPREAD,  Up: Intrinsic Procedures
  
! 8.260 'SQRT' -- Square-root function
  ====================================
  
  _Synopsis_:
!      'RESULT = SQRT(X)'
  
  _Description_:
!      'SQRT(X)' computes the square root of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL' or 'COMPLEX'.
  
  _Return value_:
!      The return value is of type 'REAL' or 'COMPLEX'.  The kind type
       parameter is the same as X.
  
  _Example_:
--- 18905,18927 ----
  
  File: gfortran.info,  Node: SQRT,  Next: SRAND,  Prev: SPREAD,  Up: Intrinsic Procedures
  
! 8.260 â€˜SQRTâ€™ -- Square-root function
  ====================================
  
  _Synopsis_:
!      â€˜RESULT = SQRT(X)â€™
  
  _Description_:
!      â€˜SQRT(X)â€™ computes the square root of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™ or â€˜COMPLEXâ€™.
  
  _Return value_:
!      The return value is of type â€˜REALâ€™ or â€˜COMPLEXâ€™.  The kind type
       parameter is the same as X.
  
  _Example_:
*************** _Example_:
*** 18935,18945 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'SQRT(X)'      'REAL(4) X'       'REAL(4)'      Fortran 77 and later
!      'DSQRT(X)'     'REAL(8) X'       'REAL(8)'      Fortran 77 and later
!      'CSQRT(X)'     'COMPLEX(4) X'    'COMPLEX(4)'   Fortran 77 and later
!      'ZSQRT(X)'     'COMPLEX(8) X'    'COMPLEX(8)'   GNU extension
!      'CDSQRT(X)'    'COMPLEX(8) X'    'COMPLEX(8)'   GNU extension
  
  _Standard_:
       Fortran 77 and later
--- 18935,18945 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜SQRT(X)â€™      â€˜REAL(4) Xâ€™       â€˜REAL(4)â€™      Fortran 77 and later
!      â€˜DSQRT(X)â€™     â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      Fortran 77 and later
!      â€˜CSQRT(X)â€™     â€˜COMPLEX(4) Xâ€™    â€˜COMPLEX(4)â€™   Fortran 77 and later
!      â€˜ZSQRT(X)â€™     â€˜COMPLEX(8) Xâ€™    â€˜COMPLEX(8)â€™   GNU extension
!      â€˜CDSQRT(X)â€™    â€˜COMPLEX(8) Xâ€™    â€˜COMPLEX(8)â€™   GNU extension
  
  _Standard_:
       Fortran 77 and later
*************** _Standard_:
*** 18947,18984 ****
  
  File: gfortran.info,  Node: SRAND,  Next: STAT,  Prev: SQRT,  Up: Intrinsic Procedures
  
! 8.261 'SRAND' -- Reinitialize the random number generator
  =========================================================
  
  _Synopsis_:
!      'CALL SRAND(SEED)'
  
  _Description_:
!      'SRAND' reinitializes the pseudo-random number generator called by
!      'RAND' and 'IRAND'.  The new seed used by the generator is
       specified by the required argument SEED.
  
  _Class_:
       Subroutine
  
  _Arguments_:
!      SEED        Shall be a scalar 'INTEGER(kind=4)'.
  
  _Return value_:
       Does not return anything.
  
  _Example_:
!      See 'RAND' and 'IRAND' for examples.
  
  _Notes_:
       The Fortran standard specifies the intrinsic subroutines
!      'RANDOM_SEED' to initialize the pseudo-random number generator and
!      'RANDOM_NUMBER' to generate pseudo-random numbers.  These
       subroutines should be used in new codes.
  
       Please note that in GNU Fortran, these two sets of intrinsics
!      ('RAND', 'IRAND' and 'SRAND' on the one hand, 'RANDOM_NUMBER' and
!      'RANDOM_SEED' on the other hand) access two independent
       pseudo-random number generators.
  
  _Standard_:
--- 18947,18984 ----
  
  File: gfortran.info,  Node: SRAND,  Next: STAT,  Prev: SQRT,  Up: Intrinsic Procedures
  
! 8.261 â€˜SRANDâ€™ -- Reinitialize the random number generator
  =========================================================
  
  _Synopsis_:
!      â€˜CALL SRAND(SEED)â€™
  
  _Description_:
!      â€˜SRANDâ€™ reinitializes the pseudo-random number generator called by
!      â€˜RANDâ€™ and â€˜IRANDâ€™.  The new seed used by the generator is
       specified by the required argument SEED.
  
  _Class_:
       Subroutine
  
  _Arguments_:
!      SEED        Shall be a scalar â€˜INTEGER(kind=4)â€™.
  
  _Return value_:
       Does not return anything.
  
  _Example_:
!      See â€˜RANDâ€™ and â€˜IRANDâ€™ for examples.
  
  _Notes_:
       The Fortran standard specifies the intrinsic subroutines
!      â€˜RANDOM_SEEDâ€™ to initialize the pseudo-random number generator and
!      â€˜RANDOM_NUMBERâ€™ to generate pseudo-random numbers.  These
       subroutines should be used in new codes.
  
       Please note that in GNU Fortran, these two sets of intrinsics
!      (â€˜RANDâ€™, â€˜IRANDâ€™ and â€˜SRANDâ€™ on the one hand, â€˜RANDOM_NUMBERâ€™ and
!      â€˜RANDOM_SEEDâ€™ on the other hand) access two independent
       pseudo-random number generators.
  
  _Standard_:
*************** _See also_:
*** 18992,19024 ****
  
  File: gfortran.info,  Node: STAT,  Next: STORAGE_SIZE,  Prev: SRAND,  Up: Intrinsic Procedures
  
! 8.262 'STAT' -- Get file status
  ===============================
  
  _Synopsis_:
!      'CALL STAT(NAME, VALUES [, STATUS])'
!      'STATUS = STAT(NAME, VALUES)'
  
  _Description_:
       This function returns information about a file.  No permissions are
       required on the file itself, but execute (search) permission is
       required on all of the directories in path that lead to the file.
  
!      The elements that are obtained and stored in the array 'VALUES':
!      'VALUES(1)' Device ID
!      'VALUES(2)' Inode number
!      'VALUES(3)' File mode
!      'VALUES(4)' Number of links
!      'VALUES(5)' Owner's uid
!      'VALUES(6)' Owner's gid
!      'VALUES(7)' ID of device containing directory entry for file
                   (0 if not available)
!      'VALUES(8)' File size (bytes)
!      'VALUES(9)' Last access time
!      'VALUES(10)'Last modification time
!      'VALUES(11)'Last file status change time
!      'VALUES(12)'Preferred I/O block size (-1 if not available)
!      'VALUES(13)'Number of blocks allocated (-1 if not available)
  
       Not all these elements are relevant on all systems.  If an element
       is not relevant, it is returned as 0.
--- 18992,19024 ----
  
  File: gfortran.info,  Node: STAT,  Next: STORAGE_SIZE,  Prev: SRAND,  Up: Intrinsic Procedures
  
! 8.262 â€˜STATâ€™ -- Get file status
  ===============================
  
  _Synopsis_:
!      â€˜CALL STAT(NAME, VALUES [, STATUS])â€™
!      â€˜STATUS = STAT(NAME, VALUES)â€™
  
  _Description_:
       This function returns information about a file.  No permissions are
       required on the file itself, but execute (search) permission is
       required on all of the directories in path that lead to the file.
  
!      The elements that are obtained and stored in the array â€˜VALUESâ€™:
!      â€˜VALUES(1)â€™ Device ID
!      â€˜VALUES(2)â€™ Inode number
!      â€˜VALUES(3)â€™ File mode
!      â€˜VALUES(4)â€™ Number of links
!      â€˜VALUES(5)â€™ Owner's uid
!      â€˜VALUES(6)â€™ Owner's gid
!      â€˜VALUES(7)â€™ ID of device containing directory entry for file
                   (0 if not available)
!      â€˜VALUES(8)â€™ File size (bytes)
!      â€˜VALUES(9)â€™ Last access time
!      â€˜VALUES(10)â€™Last modification time
!      â€˜VALUES(11)â€™Last file status change time
!      â€˜VALUES(12)â€™Preferred I/O block size (-1 if not available)
!      â€˜VALUES(13)â€™Number of blocks allocated (-1 if not available)
  
       Not all these elements are relevant on all systems.  If an element
       is not relevant, it is returned as 0.
*************** _Class_:
*** 19030,19039 ****
       Subroutine, function
  
  _Arguments_:
!      NAME        The type shall be 'CHARACTER', of the default
                   kind and a valid path within the file system.
!      VALUES      The type shall be 'INTEGER(4), DIMENSION(13)'.
!      STATUS      (Optional) status flag of type 'INTEGER(4)'.
                   Returns 0 on success and a system specific error
                   code otherwise.
  
--- 19030,19039 ----
       Subroutine, function
  
  _Arguments_:
!      NAME        The type shall be â€˜CHARACTERâ€™, of the default
                   kind and a valid path within the file system.
!      VALUES      The type shall be â€˜INTEGER(4), DIMENSION(13)â€™.
!      STATUS      (Optional) status flag of type â€˜INTEGER(4)â€™.
                   Returns 0 on success and a system specific error
                   code otherwise.
  
*************** _See also_:
*** 19073,19083 ****
  
  File: gfortran.info,  Node: STORAGE_SIZE,  Next: SUM,  Prev: STAT,  Up: Intrinsic Procedures
  
! 8.263 'STORAGE_SIZE' -- Storage size in bits
  ============================================
  
  _Synopsis_:
!      'RESULT = STORAGE_SIZE(A [, KIND])'
  
  _Description_:
       Returns the storage size of argument A in bits.
--- 19073,19083 ----
  
  File: gfortran.info,  Node: STORAGE_SIZE,  Next: SUM,  Prev: STAT,  Up: Intrinsic Procedures
  
! 8.263 â€˜STORAGE_SIZEâ€™ -- Storage size in bits
  ============================================
  
  _Synopsis_:
!      â€˜RESULT = STORAGE_SIZE(A [, KIND])â€™
  
  _Description_:
       Returns the storage size of argument A in bits.
*************** _See also_:
*** 19106,19132 ****
  
  File: gfortran.info,  Node: SUM,  Next: SYMLNK,  Prev: STORAGE_SIZE,  Up: Intrinsic Procedures
  
! 8.264 'SUM' -- Sum of array elements
  ====================================
  
  _Synopsis_:
!      'RESULT = SUM(ARRAY[, MASK])'
!      'RESULT = SUM(ARRAY, DIM[, MASK])'
  
  _Description_:
       Adds the elements of ARRAY along dimension DIM if the corresponding
!      element in MASK is 'TRUE'.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      ARRAY       Shall be an array of type 'INTEGER', 'REAL',
!                  'COMPLEX' or 'UNSIGNED'.
!      DIM         (Optional) shall be a scalar of type 'INTEGER'
                   with a value in the range from 1 to n, where n
                   equals the rank of ARRAY.
!      MASK        (Optional) shall be of type 'LOGICAL' and either
                   be a scalar or an array of the same shape as
                   ARRAY.
  
--- 19106,19132 ----
  
  File: gfortran.info,  Node: SUM,  Next: SYMLNK,  Prev: STORAGE_SIZE,  Up: Intrinsic Procedures
  
! 8.264 â€˜SUMâ€™ -- Sum of array elements
  ====================================
  
  _Synopsis_:
!      â€˜RESULT = SUM(ARRAY[, MASK])â€™
!      â€˜RESULT = SUM(ARRAY, DIM[, MASK])â€™
  
  _Description_:
       Adds the elements of ARRAY along dimension DIM if the corresponding
!      element in MASK is â€˜TRUEâ€™.
  
  _Class_:
       Transformational function
  
  _Arguments_:
!      ARRAY       Shall be an array of type â€˜INTEGERâ€™, â€˜REALâ€™,
!                  â€˜COMPLEXâ€™ or â€˜UNSIGNEDâ€™.
!      DIM         (Optional) shall be a scalar of type â€˜INTEGERâ€™
                   with a value in the range from 1 to n, where n
                   equals the rank of ARRAY.
!      MASK        (Optional) shall be of type â€˜LOGICALâ€™ and either
                   be a scalar or an array of the same shape as
                   ARRAY.
  
*************** _Example_:
*** 19146,19152 ****
            END PROGRAM
  
  _Standard_:
!      Fortran 90 and later, extension for 'UNSIGNED' (*note Unsigned
       integers::)
  
  _See also_:
--- 19146,19152 ----
            END PROGRAM
  
  _Standard_:
!      Fortran 90 and later, extension for â€˜UNSIGNEDâ€™ (*note Unsigned
       integers::)
  
  _See also_:
*************** _See also_:
*** 19155,19174 ****
  
  File: gfortran.info,  Node: SYMLNK,  Next: SYSTEM,  Prev: SUM,  Up: Intrinsic Procedures
  
! 8.265 'SYMLNK' -- Create a symbolic link
  ========================================
  
  _Synopsis_:
!      'CALL SYMLNK(PATH1, PATH2 [, STATUS])'
!      'STATUS = SYMLNK(PATH1, PATH2)'
  
  _Description_:
       Makes a symbolic link from file PATH1 to PATH2.  A null character
!      ('CHAR(0)') can be used to mark the end of the names in PATH1 and
       PATH2; otherwise, trailing blanks in the file names are ignored.
       If the STATUS argument is supplied, it contains 0 on success or a
!      nonzero error code upon return; see 'symlink(2)'.  If the system
!      does not supply 'symlink(2)', 'ENOSYS' is returned.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
--- 19155,19174 ----
  
  File: gfortran.info,  Node: SYMLNK,  Next: SYSTEM,  Prev: SUM,  Up: Intrinsic Procedures
  
! 8.265 â€˜SYMLNKâ€™ -- Create a symbolic link
  ========================================
  
  _Synopsis_:
!      â€˜CALL SYMLNK(PATH1, PATH2 [, STATUS])â€™
!      â€˜STATUS = SYMLNK(PATH1, PATH2)â€™
  
  _Description_:
       Makes a symbolic link from file PATH1 to PATH2.  A null character
!      (â€˜CHAR(0)â€™) can be used to mark the end of the names in PATH1 and
       PATH2; otherwise, trailing blanks in the file names are ignored.
       If the STATUS argument is supplied, it contains 0 on success or a
!      nonzero error code upon return; see â€˜symlink(2)â€™.  If the system
!      does not supply â€˜symlink(2)â€™, â€˜ENOSYSâ€™ is returned.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
*************** _Class_:
*** 19177,19185 ****
       Subroutine, function
  
  _Arguments_:
!      PATH1       Shall be of default 'CHARACTER' type.
!      PATH2       Shall be of default 'CHARACTER' type.
!      STATUS      (Optional) Shall be of default 'INTEGER' type.
  
  _Standard_:
       GNU extension
--- 19177,19185 ----
       Subroutine, function
  
  _Arguments_:
!      PATH1       Shall be of default â€˜CHARACTERâ€™ type.
!      PATH2       Shall be of default â€˜CHARACTERâ€™ type.
!      STATUS      (Optional) Shall be of default â€˜INTEGERâ€™ type.
  
  _Standard_:
       GNU extension
*************** _See also_:
*** 19191,19223 ****
  
  File: gfortran.info,  Node: SYSTEM,  Next: SYSTEM_CLOCK,  Prev: SYMLNK,  Up: Intrinsic Procedures
  
! 8.266 'SYSTEM' -- Execute a shell command
  =========================================
  
  _Synopsis_:
!      'CALL SYSTEM(COMMAND [, STATUS])'
!      'STATUS = SYSTEM(COMMAND)'
  
  _Description_:
!      Passes the command COMMAND to a shell (see 'system(3)').  If
       argument STATUS is present, it contains the value returned by
!      'system(3)', which is presumably 0 if the shell command succeeded.
       Note that which shell is used to invoke the command is
       system-dependent and environment-dependent.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
  
!      Note that the 'system' function need not be thread-safe.  It is the
!      responsibility of the user to ensure that 'system' is not called
       concurrently.
  
  _Class_:
       Subroutine, function
  
  _Arguments_:
!      COMMAND     Shall be of default 'CHARACTER' type.
!      STATUS      (Optional) Shall be of default 'INTEGER' type.
  
  _Standard_:
       GNU extension
--- 19191,19223 ----
  
  File: gfortran.info,  Node: SYSTEM,  Next: SYSTEM_CLOCK,  Prev: SYMLNK,  Up: Intrinsic Procedures
  
! 8.266 â€˜SYSTEMâ€™ -- Execute a shell command
  =========================================
  
  _Synopsis_:
!      â€˜CALL SYSTEM(COMMAND [, STATUS])â€™
!      â€˜STATUS = SYSTEM(COMMAND)â€™
  
  _Description_:
!      Passes the command COMMAND to a shell (see â€˜system(3)â€™).  If
       argument STATUS is present, it contains the value returned by
!      â€˜system(3)â€™, which is presumably 0 if the shell command succeeded.
       Note that which shell is used to invoke the command is
       system-dependent and environment-dependent.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
  
!      Note that the â€˜systemâ€™ function need not be thread-safe.  It is the
!      responsibility of the user to ensure that â€˜systemâ€™ is not called
       concurrently.
  
  _Class_:
       Subroutine, function
  
  _Arguments_:
!      COMMAND     Shall be of default â€˜CHARACTERâ€™ type.
!      STATUS      (Optional) Shall be of default â€˜INTEGERâ€™ type.
  
  _Standard_:
       GNU extension
*************** _See also_:
*** 19229,19239 ****
  
  File: gfortran.info,  Node: SYSTEM_CLOCK,  Next: TAN,  Prev: SYSTEM,  Up: Intrinsic Procedures
  
! 8.267 'SYSTEM_CLOCK' -- Time function
  =====================================
  
  _Synopsis_:
!      'CALL SYSTEM_CLOCK([COUNT, COUNT_RATE, COUNT_MAX])'
  
  _Description_:
       Determines the COUNT of a processor clock since an unspecified time
--- 19229,19239 ----
  
  File: gfortran.info,  Node: SYSTEM_CLOCK,  Next: TAN,  Prev: SYSTEM,  Up: Intrinsic Procedures
  
! 8.267 â€˜SYSTEM_CLOCKâ€™ -- Time function
  =====================================
  
  _Synopsis_:
!      â€˜CALL SYSTEM_CLOCK([COUNT, COUNT_RATE, COUNT_MAX])â€™
  
  _Description_:
       Determines the COUNT of a processor clock since an unspecified time
*************** _Description_:
*** 19249,19272 ****
       kinds), COUNT represents milliseconds, while for KIND=8 arguments
       (and larger integer kinds), COUNT typically represents micro- or
       nanoseconds depending on resolution of the underlying platform
!      clock.  COUNT_MAX usually equals 'HUGE(COUNT_MAX)'.  Note that the
       millisecond resolution of the KIND=4 version implies that the COUNT
       wraps around in roughly 25 days.  In order to avoid issues with the
       wrap-around and for more precise timing, please use the KIND=8
       version.
  
       If there is no clock, or querying the clock fails, COUNT is set to
!      '-HUGE(COUNT)', and COUNT_RATE and COUNT_MAX are set to zero.
  
       When running on a platform using the GNU C library (glibc) version
       2.16 or older, or a derivative thereof, the high resolution
       monotonic clock is available only when linking with the RT library.
!      This can be done explicitly by adding the '-lrt' flag when linking
       the application, but is also done implicitly when using OpenMP.
  
       On the Windows platform, the version with KIND=4 arguments uses the
!      'GetTickCount' function, whereas the KIND=8 version uses
!      'QueryPerformanceCounter' and 'QueryPerformanceCounterFrequency'.
       For more information, and potential caveats, please see the
       platform documentation.
  
--- 19249,19272 ----
       kinds), COUNT represents milliseconds, while for KIND=8 arguments
       (and larger integer kinds), COUNT typically represents micro- or
       nanoseconds depending on resolution of the underlying platform
!      clock.  COUNT_MAX usually equals â€˜HUGE(COUNT_MAX)â€™.  Note that the
       millisecond resolution of the KIND=4 version implies that the COUNT
       wraps around in roughly 25 days.  In order to avoid issues with the
       wrap-around and for more precise timing, please use the KIND=8
       version.
  
       If there is no clock, or querying the clock fails, COUNT is set to
!      â€˜-HUGE(COUNT)â€™, and COUNT_RATE and COUNT_MAX are set to zero.
  
       When running on a platform using the GNU C library (glibc) version
       2.16 or older, or a derivative thereof, the high resolution
       monotonic clock is available only when linking with the RT library.
!      This can be done explicitly by adding the â€˜-lrtâ€™ flag when linking
       the application, but is also done implicitly when using OpenMP.
  
       On the Windows platform, the version with KIND=4 arguments uses the
!      â€˜GetTickCountâ€™ function, whereas the KIND=8 version uses
!      â€˜QueryPerformanceCounterâ€™ and â€˜QueryPerformanceCounterFrequencyâ€™.
       For more information, and potential caveats, please see the
       platform documentation.
  
*************** _Class_:
*** 19275,19285 ****
  
  _Arguments_:
       COUNT          (Optional) shall be a scalar of type
!                     'INTEGER' with 'INTENT(OUT)'.
       COUNT_RATE     (Optional) shall be a scalar of type
!                     'INTEGER' or 'REAL', with 'INTENT(OUT)'.
       COUNT_MAX      (Optional) shall be a scalar of type
!                     'INTEGER' with 'INTENT(OUT)'.
  
  _Example_:
            PROGRAM test_system_clock
--- 19275,19285 ----
  
  _Arguments_:
       COUNT          (Optional) shall be a scalar of type
!                     â€˜INTEGERâ€™ with â€˜INTENT(OUT)â€™.
       COUNT_RATE     (Optional) shall be a scalar of type
!                     â€˜INTEGERâ€™ or â€˜REALâ€™, with â€˜INTENT(OUT)â€™.
       COUNT_MAX      (Optional) shall be a scalar of type
!                     â€˜INTEGERâ€™ with â€˜INTENT(OUT)â€™.
  
  _Example_:
            PROGRAM test_system_clock
*************** _See also_:
*** 19298,19317 ****
  
  File: gfortran.info,  Node: TAN,  Next: TAND,  Prev: SYSTEM_CLOCK,  Up: Intrinsic Procedures
  
! 8.268 'TAN' -- Tangent function
  ===============================
  
  _Synopsis_:
!      'RESULT = TAN(X)'
  
  _Description_:
!      'TAN(X)' computes the tangent of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL' or 'COMPLEX'.
  
  _Return value_:
       The return value has same type and kind as X, and its value is in
--- 19298,19317 ----
  
  File: gfortran.info,  Node: TAN,  Next: TAND,  Prev: SYSTEM_CLOCK,  Up: Intrinsic Procedures
  
! 8.268 â€˜TANâ€™ -- Tangent function
  ===============================
  
  _Synopsis_:
!      â€˜RESULT = TAN(X)â€™
  
  _Description_:
!      â€˜TAN(X)â€™ computes the tangent of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™ or â€˜COMPLEXâ€™.
  
  _Return value_:
       The return value has same type and kind as X, and its value is in
*************** _Example_:
*** 19326,19333 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'TAN(X)'       'REAL(4) X'       'REAL(4)'      Fortran 77 and later
!      'DTAN(X)'      'REAL(8) X'       'REAL(8)'      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later, for a complex argument Fortran 2008 or later
--- 19326,19333 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜TAN(X)â€™       â€˜REAL(4) Xâ€™       â€˜REAL(4)â€™      Fortran 77 and later
!      â€˜DTAN(X)â€™      â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later, for a complex argument Fortran 2008 or later
*************** _See also_:
*** 19341,19360 ****
  
  File: gfortran.info,  Node: TAND,  Next: TANH,  Prev: TAN,  Up: Intrinsic Procedures
  
! 8.269 'TAND' -- Tangent function, degrees
  =========================================
  
  _Synopsis_:
!      'RESULT = TAND(X)'
  
  _Description_:
!      'TAND(X)' computes the tangent of X in degrees.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL'.
  
  _Return value_:
       The return value has same type and kind as X.
--- 19341,19360 ----
  
  File: gfortran.info,  Node: TAND,  Next: TANH,  Prev: TAN,  Up: Intrinsic Procedures
  
! 8.269 â€˜TANDâ€™ -- Tangent function, degrees
  =========================================
  
  _Synopsis_:
!      â€˜RESULT = TAND(X)â€™
  
  _Description_:
!      â€˜TAND(X)â€™ computes the tangent of X in degrees.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™.
  
  _Return value_:
       The return value has same type and kind as X.
*************** _Example_:
*** 19368,19375 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'TAND(X)'      'REAL(4) X'       'REAL(4)'      Fortran 2023
!      'DTAND(X)'     'REAL(8) X'       'REAL(8)'      GNU extension
  
  _Standard_:
       Fortran 2023
--- 19368,19375 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜TAND(X)â€™      â€˜REAL(4) Xâ€™       â€˜REAL(4)â€™      Fortran 2023
!      â€˜DTAND(X)â€™     â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      GNU extension
  
  _Standard_:
       Fortran 2023
*************** _See also_:
*** 19383,19406 ****
  
  File: gfortran.info,  Node: TANH,  Next: THIS_IMAGE,  Prev: TAND,  Up: Intrinsic Procedures
  
! 8.270 'TANH' -- Hyperbolic tangent function
  ===========================================
  
  _Synopsis_:
!      'X = TANH(X)'
  
  _Description_:
!      'TANH(X)' computes the hyperbolic tangent of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be 'REAL' or 'COMPLEX'.
  
  _Return value_:
       The return value has same type and kind as X.  If X is complex, the
!      imaginary part of the result is in radians.  If X is 'REAL', the
       return value lies in the range - 1 \leq tanh(x) \leq 1 .
  
  _Example_:
--- 19383,19406 ----
  
  File: gfortran.info,  Node: TANH,  Next: THIS_IMAGE,  Prev: TAND,  Up: Intrinsic Procedures
  
! 8.270 â€˜TANHâ€™ -- Hyperbolic tangent function
  ===========================================
  
  _Synopsis_:
!      â€˜X = TANH(X)â€™
  
  _Description_:
!      â€˜TANH(X)â€™ computes the hyperbolic tangent of X.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      X           The type shall be â€˜REALâ€™ or â€˜COMPLEXâ€™.
  
  _Return value_:
       The return value has same type and kind as X.  If X is complex, the
!      imaginary part of the result is in radians.  If X is â€˜REALâ€™, the
       return value lies in the range - 1 \leq tanh(x) \leq 1 .
  
  _Example_:
*************** _Example_:
*** 19412,19419 ****
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      'TANH(X)'      'REAL(4) X'       'REAL(4)'      Fortran 77 and later
!      'DTANH(X)'     'REAL(8) X'       'REAL(8)'      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later, for a complex argument Fortran 2008 or later
--- 19412,19419 ----
  _Specific names_:
       Name           Argument          Return type    Standard
       -------------------------------------------------------------------------
!      â€˜TANH(X)â€™      â€˜REAL(4) Xâ€™       â€˜REAL(4)â€™      Fortran 77 and later
!      â€˜DTANH(X)â€™     â€˜REAL(8) Xâ€™       â€˜REAL(8)â€™      Fortran 77 and later
  
  _Standard_:
       Fortran 77 and later, for a complex argument Fortran 2008 or later
*************** _See also_:
*** 19424,19436 ****
  
  File: gfortran.info,  Node: THIS_IMAGE,  Next: TIME,  Prev: TANH,  Up: Intrinsic Procedures
  
! 8.271 'THIS_IMAGE' -- Function that returns the cosubscript index of this image
  ===============================================================================
  
  _Synopsis_:
!      'RESULT = THIS_IMAGE()'
!      'RESULT = THIS_IMAGE(DISTANCE)'
!      'RESULT = THIS_IMAGE(COARRAY [, DIM])'
  
  _Description_:
       Returns the cosubscript for this image.
--- 19424,19436 ----
  
  File: gfortran.info,  Node: THIS_IMAGE,  Next: TIME,  Prev: TANH,  Up: Intrinsic Procedures
  
! 8.271 â€˜THIS_IMAGEâ€™ -- Function that returns the cosubscript index of this image
  ===============================================================================
  
  _Synopsis_:
!      â€˜RESULT = THIS_IMAGE()â€™
!      â€˜RESULT = THIS_IMAGE(DISTANCE)â€™
!      â€˜RESULT = THIS_IMAGE(COARRAY [, DIM])â€™
  
  _Description_:
       Returns the cosubscript for this image.
*************** _Return value_:
*** 19459,19465 ****
       rank-1 array with corank elements is returned, containing the
       cosubscripts for COARRAY specifying the invoking image.  If DIM is
       present, a scalar is returned, with the value of the DIM element of
!      'THIS_IMAGE(COARRAY)'.
  
  _Example_:
            INTEGER :: value[*]
--- 19459,19465 ----
       rank-1 array with corank elements is returned, containing the
       cosubscripts for COARRAY specifying the invoking image.  If DIM is
       present, a scalar is returned, with the value of the DIM element of
!      â€˜THIS_IMAGE(COARRAY)â€™.
  
  _Example_:
            INTEGER :: value[*]
*************** _See also_:
*** 19487,19506 ****
  
  File: gfortran.info,  Node: TIME,  Next: TIME8,  Prev: THIS_IMAGE,  Up: Intrinsic Procedures
  
! 8.272 'TIME' -- Time function
  =============================
  
  _Synopsis_:
!      'RESULT = TIME()'
  
  _Description_:
       Returns the current time encoded as an integer (in the manner of
!      the function 'time(3)' in the C standard library).  This value is
       suitable for passing to *note CTIME::, *note GMTIME::, and *note
       LTIME::.
  
       This intrinsic is not fully portable, such as to systems with
!      32-bit 'INTEGER' types but supporting times wider than 32 bits.
       Therefore, the values returned by this intrinsic might be, or
       become, negative, or numerically less than previous values, during
       a single run of the compiled program.
--- 19487,19506 ----
  
  File: gfortran.info,  Node: TIME,  Next: TIME8,  Prev: THIS_IMAGE,  Up: Intrinsic Procedures
  
! 8.272 â€˜TIMEâ€™ -- Time function
  =============================
  
  _Synopsis_:
!      â€˜RESULT = TIME()â€™
  
  _Description_:
       Returns the current time encoded as an integer (in the manner of
!      the function â€˜time(3)â€™ in the C standard library).  This value is
       suitable for passing to *note CTIME::, *note GMTIME::, and *note
       LTIME::.
  
       This intrinsic is not fully portable, such as to systems with
!      32-bit â€˜INTEGERâ€™ types but supporting times wider than 32 bits.
       Therefore, the values returned by this intrinsic might be, or
       become, negative, or numerically less than previous values, during
       a single run of the compiled program.
*************** _Class_:
*** 19513,19519 ****
       Function
  
  _Return value_:
!      The return value is a scalar of type 'INTEGER(4)'.
  
  _Standard_:
       GNU extension
--- 19513,19519 ----
       Function
  
  _Return value_:
!      The return value is a scalar of type â€˜INTEGER(4)â€™.
  
  _Standard_:
       GNU extension
*************** _See also_:
*** 19529,19550 ****
  
  File: gfortran.info,  Node: TIME8,  Next: TINY,  Prev: TIME,  Up: Intrinsic Procedures
  
! 8.273 'TIME8' -- Time function (64-bit)
  =======================================
  
  _Synopsis_:
!      'RESULT = TIME8()'
  
  _Description_:
       Returns the current time encoded as an integer (in the manner of
!      the function 'time(3)' in the C standard library).  This value is
       suitable for passing to *note CTIME::, *note GMTIME::, and *note
       LTIME::.
  
       _Warning:_ this intrinsic does not increase the range of the timing
!      values over that returned by 'time(3)'.  On a system with a 32-bit
!      'time(3)', 'TIME8' returns a 32-bit value, even though it is
!      converted to a 64-bit 'INTEGER(8)' value.  That means overflows of
       the 32-bit value can still occur.  Therefore, the values returned
       by this intrinsic might be or become negative or numerically less
       than previous values during a single run of the compiled program.
--- 19529,19550 ----
  
  File: gfortran.info,  Node: TIME8,  Next: TINY,  Prev: TIME,  Up: Intrinsic Procedures
  
! 8.273 â€˜TIME8â€™ -- Time function (64-bit)
  =======================================
  
  _Synopsis_:
!      â€˜RESULT = TIME8()â€™
  
  _Description_:
       Returns the current time encoded as an integer (in the manner of
!      the function â€˜time(3)â€™ in the C standard library).  This value is
       suitable for passing to *note CTIME::, *note GMTIME::, and *note
       LTIME::.
  
       _Warning:_ this intrinsic does not increase the range of the timing
!      values over that returned by â€˜time(3)â€™.  On a system with a 32-bit
!      â€˜time(3)â€™, â€˜TIME8â€™ returns a 32-bit value, even though it is
!      converted to a 64-bit â€˜INTEGER(8)â€™ value.  That means overflows of
       the 32-bit value can still occur.  Therefore, the values returned
       by this intrinsic might be or become negative or numerically less
       than previous values during a single run of the compiled program.
*************** _Class_:
*** 19553,19559 ****
       Function
  
  _Return value_:
!      The return value is a scalar of type 'INTEGER(8)'.
  
  _Standard_:
       GNU extension
--- 19553,19559 ----
       Function
  
  _Return value_:
!      The return value is a scalar of type â€˜INTEGER(8)â€™.
  
  _Standard_:
       GNU extension
*************** _See also_:
*** 19569,19595 ****
  
  File: gfortran.info,  Node: TINY,  Next: TRAILZ,  Prev: TIME8,  Up: Intrinsic Procedures
  
! 8.274 'TINY' -- Smallest positive number of a real kind
  =======================================================
  
  _Synopsis_:
!      'RESULT = TINY(X)'
  
  _Description_:
!      'TINY(X)' returns the smallest positive (non zero) number in the
!      model of the type of 'X'.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      X           Shall be of type 'REAL'.
  
  _Return value_:
       The return value is of the same type and kind as X
  
  _Example_:
!      See 'HUGE' for an example.
  
  _Standard_:
       Fortran 90 and later
--- 19569,19595 ----
  
  File: gfortran.info,  Node: TINY,  Next: TRAILZ,  Prev: TIME8,  Up: Intrinsic Procedures
  
! 8.274 â€˜TINYâ€™ -- Smallest positive number of a real kind
  =======================================================
  
  _Synopsis_:
!      â€˜RESULT = TINY(X)â€™
  
  _Description_:
!      â€˜TINY(X)â€™ returns the smallest positive (non zero) number in the
!      model of the type of â€˜Xâ€™.
  
  _Class_:
       Inquiry function
  
  _Arguments_:
!      X           Shall be of type â€˜REALâ€™.
  
  _Return value_:
       The return value is of the same type and kind as X
  
  _Example_:
!      See â€˜HUGEâ€™ for an example.
  
  _Standard_:
       Fortran 90 and later
*************** _Standard_:
*** 19597,19620 ****
  
  File: gfortran.info,  Node: TRAILZ,  Next: TRANSFER,  Prev: TINY,  Up: Intrinsic Procedures
  
! 8.275 'TRAILZ' -- Number of trailing zero bits of an integer
  ============================================================
  
  _Synopsis_:
!      'RESULT = TRAILZ(I)'
  
  _Description_:
!      'TRAILZ' returns the number of trailing zero bits of an integer.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           Shall be of type 'INTEGER'.
  
  _Return value_:
!      The type of the return value is the default 'INTEGER'.  If all the
!      bits of 'I' are zero, the result value is 'BIT_SIZE(I)'.
  
  _Example_:
            PROGRAM test_trailz
--- 19597,19620 ----
  
  File: gfortran.info,  Node: TRAILZ,  Next: TRANSFER,  Prev: TINY,  Up: Intrinsic Procedures
  
! 8.275 â€˜TRAILZâ€™ -- Number of trailing zero bits of an integer
  ============================================================
  
  _Synopsis_:
!      â€˜RESULT = TRAILZ(I)â€™
  
  _Description_:
!      â€˜TRAILZâ€™ returns the number of trailing zero bits of an integer.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           Shall be of type â€˜INTEGERâ€™.
  
  _Return value_:
!      The type of the return value is the default â€˜INTEGERâ€™.  If all the
!      bits of â€˜Iâ€™ are zero, the result value is â€˜BIT_SIZE(I)â€™.
  
  _Example_:
            PROGRAM test_trailz
*************** _See also_:
*** 19633,19643 ****
  
  File: gfortran.info,  Node: TRANSFER,  Next: TRANSPOSE,  Prev: TRAILZ,  Up: Intrinsic Procedures
  
! 8.276 'TRANSFER' -- Transfer bit patterns
  =========================================
  
  _Synopsis_:
!      'RESULT = TRANSFER(SOURCE, MOLD[, SIZE])'
  
  _Description_:
       Interprets the bitwise representation of SOURCE in memory as if it
--- 19633,19643 ----
  
  File: gfortran.info,  Node: TRANSFER,  Next: TRANSPOSE,  Prev: TRAILZ,  Up: Intrinsic Procedures
  
! 8.276 â€˜TRANSFERâ€™ -- Transfer bit patterns
  =========================================
  
  _Synopsis_:
!      â€˜RESULT = TRANSFER(SOURCE, MOLD[, SIZE])â€™
  
  _Description_:
       Interprets the bitwise representation of SOURCE in memory as if it
*************** _Class_:
*** 19653,19659 ****
  _Arguments_:
       SOURCE      Shall be a scalar or an array of any type.
       MOLD        Shall be a scalar or an array of any type.
!      SIZE        (Optional) shall be a scalar of type 'INTEGER'.
  
  _Return value_:
       The result has the same type as MOLD, with the bit level
--- 19653,19659 ----
  _Arguments_:
       SOURCE      Shall be a scalar or an array of any type.
       MOLD        Shall be a scalar or an array of any type.
!      SIZE        (Optional) shall be a scalar of type â€˜INTEGERâ€™.
  
  _Return value_:
       The result has the same type as MOLD, with the bit level
*************** _Return value_:
*** 19672,19679 ****
       valid representation of a variable of the same type as MOLD, the
       results are undefined, and subsequent operations on the result
       cannot be guaranteed to produce sensible behavior.  For example, it
!      is possible to create 'LOGICAL' variables for which 'VAR' and
!      '.NOT.VAR' both appear to be true.
  
  _Example_:
            PROGRAM test_transfer
--- 19672,19679 ----
       valid representation of a variable of the same type as MOLD, the
       results are undefined, and subsequent operations on the result
       cannot be guaranteed to produce sensible behavior.  For example, it
!      is possible to create â€˜LOGICALâ€™ variables for which â€˜VARâ€™ and
!      â€˜.NOT.VARâ€™ both appear to be true.
  
  _Example_:
            PROGRAM test_transfer
*************** _Standard_:
*** 19687,19701 ****
  
  File: gfortran.info,  Node: TRANSPOSE,  Next: TRIM,  Prev: TRANSFER,  Up: Intrinsic Procedures
  
! 8.277 'TRANSPOSE' -- Transpose an array of rank two
  ===================================================
  
  _Synopsis_:
!      'RESULT = TRANSPOSE(MATRIX)'
  
  _Description_:
       Transpose an array of rank two.  Element (i, j) of the result has
!      the value 'MATRIX(j, i)', for all i, j.
  
  _Class_:
       Transformational function
--- 19687,19701 ----
  
  File: gfortran.info,  Node: TRANSPOSE,  Next: TRIM,  Prev: TRANSFER,  Up: Intrinsic Procedures
  
! 8.277 â€˜TRANSPOSEâ€™ -- Transpose an array of rank two
  ===================================================
  
  _Synopsis_:
!      â€˜RESULT = TRANSPOSE(MATRIX)â€™
  
  _Description_:
       Transpose an array of rank two.  Element (i, j) of the result has
!      the value â€˜MATRIX(j, i)â€™, for all i, j.
  
  _Class_:
       Transformational function
*************** _Arguments_:
*** 19705,19712 ****
                   two.
  
  _Return value_:
!      The result has the same type as MATRIX, and has shape '(/ m, n /)'
!      if MATRIX has shape '(/ n, m /)'.
  
  _Standard_:
       Fortran 90 and later
--- 19705,19712 ----
                   two.
  
  _Return value_:
!      The result has the same type as MATRIX, and has shape â€˜(/ m, n /)â€™
!      if MATRIX has shape â€˜(/ n, m /)â€™.
  
  _Standard_:
       Fortran 90 and later
*************** _Standard_:
*** 19714,19724 ****
  
  File: gfortran.info,  Node: TRIM,  Next: TTYNAM,  Prev: TRANSPOSE,  Up: Intrinsic Procedures
  
! 8.278 'TRIM' -- Remove trailing blank characters of a string
  ============================================================
  
  _Synopsis_:
!      'RESULT = TRIM(STRING)'
  
  _Description_:
       Removes trailing blank characters of a string.
--- 19714,19724 ----
  
  File: gfortran.info,  Node: TRIM,  Next: TTYNAM,  Prev: TRANSPOSE,  Up: Intrinsic Procedures
  
! 8.278 â€˜TRIMâ€™ -- Remove trailing blank characters of a string
  ============================================================
  
  _Synopsis_:
!      â€˜RESULT = TRIM(STRING)â€™
  
  _Description_:
       Removes trailing blank characters of a string.
*************** _Class_:
*** 19727,19736 ****
       Transformational function
  
  _Arguments_:
!      STRING      Shall be a scalar of type 'CHARACTER'.
  
  _Return value_:
!      A scalar of type 'CHARACTER' that is the length of STRING less the
       number of trailing blanks.
  
  _Example_:
--- 19727,19736 ----
       Transformational function
  
  _Arguments_:
!      STRING      Shall be a scalar of type â€˜CHARACTERâ€™.
  
  _Return value_:
!      A scalar of type â€˜CHARACTERâ€™ that is the length of STRING less the
       number of trailing blanks.
  
  _Example_:
*************** _See also_:
*** 19749,19764 ****
  
  File: gfortran.info,  Node: TTYNAM,  Next: UBOUND,  Prev: TRIM,  Up: Intrinsic Procedures
  
! 8.279 'TTYNAM' -- Get the name of a terminal device
  ===================================================
  
  _Synopsis_:
!      'CALL TTYNAM(UNIT, NAME)'
!      'NAME = TTYNAM(UNIT)'
  
  _Description_:
       Get the name of a terminal device.  For more information, see
!      'ttyname(3)'.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
--- 19749,19764 ----
  
  File: gfortran.info,  Node: TTYNAM,  Next: UBOUND,  Prev: TRIM,  Up: Intrinsic Procedures
  
! 8.279 â€˜TTYNAMâ€™ -- Get the name of a terminal device
  ===================================================
  
  _Synopsis_:
!      â€˜CALL TTYNAM(UNIT, NAME)â€™
!      â€˜NAME = TTYNAM(UNIT)â€™
  
  _Description_:
       Get the name of a terminal device.  For more information, see
!      â€˜ttyname(3)â€™.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
*************** _Class_:
*** 19767,19774 ****
       Subroutine, function
  
  _Arguments_:
!      UNIT        Shall be a scalar 'INTEGER'.
!      NAME        Shall be of type 'CHARACTER'.
  
  _Example_:
            PROGRAM test_ttynam
--- 19767,19774 ----
       Subroutine, function
  
  _Arguments_:
!      UNIT        Shall be a scalar â€˜INTEGERâ€™.
!      NAME        Shall be of type â€˜CHARACTERâ€™.
  
  _Example_:
            PROGRAM test_ttynam
*************** _See also_:
*** 19787,19797 ****
  
  File: gfortran.info,  Node: UBOUND,  Next: UCOBOUND,  Prev: TTYNAM,  Up: Intrinsic Procedures
  
! 8.280 'UBOUND' -- Upper dimension bounds of an array
  ====================================================
  
  _Synopsis_:
!      'RESULT = UBOUND(ARRAY [, DIM [, KIND]])'
  
  _Description_:
       Returns the upper bounds of an array, or a single upper bound along
--- 19787,19797 ----
  
  File: gfortran.info,  Node: UBOUND,  Next: UCOBOUND,  Prev: TTYNAM,  Up: Intrinsic Procedures
  
! 8.280 â€˜UBOUNDâ€™ -- Upper dimension bounds of an array
  ====================================================
  
  _Synopsis_:
!      â€˜RESULT = UBOUND(ARRAY [, DIM [, KIND]])â€™
  
  _Description_:
       Returns the upper bounds of an array, or a single upper bound along
*************** _Class_:
*** 19802,19814 ****
  
  _Arguments_:
       ARRAY       Shall be an array, of any type.
!      DIM         (Optional) Shall be a scalar 'INTEGER'.
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type 'INTEGER' and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.  If DIM is
       absent, the result is an array of the upper bounds of ARRAY.  If
       DIM is present, the result is a scalar corresponding to the upper
--- 19802,19814 ----
  
  _Arguments_:
       ARRAY       Shall be an array, of any type.
!      DIM         (Optional) Shall be a scalar â€˜INTEGERâ€™.
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™ and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.  If DIM is
       absent, the result is an array of the upper bounds of ARRAY.  If
       DIM is present, the result is a scalar corresponding to the upper
*************** _See also_:
*** 19827,19837 ****
  
  File: gfortran.info,  Node: UCOBOUND,  Next: UINT,  Prev: UBOUND,  Up: Intrinsic Procedures
  
! 8.281 'UCOBOUND' -- Upper codimension bounds of an array
  ========================================================
  
  _Synopsis_:
!      'RESULT = UCOBOUND(COARRAY [, DIM [, KIND]])'
  
  _Description_:
       Returns the upper cobounds of a coarray, or a single upper cobound
--- 19827,19837 ----
  
  File: gfortran.info,  Node: UCOBOUND,  Next: UINT,  Prev: UBOUND,  Up: Intrinsic Procedures
  
! 8.281 â€˜UCOBOUNDâ€™ -- Upper codimension bounds of an array
  ========================================================
  
  _Synopsis_:
!      â€˜RESULT = UCOBOUND(COARRAY [, DIM [, KIND]])â€™
  
  _Description_:
       Returns the upper cobounds of a coarray, or a single upper cobound
*************** _Class_:
*** 19842,19854 ****
  
  _Arguments_:
       ARRAY       Shall be an coarray, of any type.
!      DIM         (Optional) Shall be a scalar 'INTEGER'.
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type 'INTEGER' and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.  If DIM is
       absent, the result is an array of the lower cobounds of COARRAY.
       If DIM is present, the result is a scalar corresponding to the
--- 19842,19854 ----
  
  _Arguments_:
       ARRAY       Shall be an coarray, of any type.
!      DIM         (Optional) Shall be a scalar â€˜INTEGERâ€™.
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™ and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.  If DIM is
       absent, the result is an array of the lower cobounds of COARRAY.
       If DIM is present, the result is a scalar corresponding to the
*************** _See also_:
*** 19864,19874 ****
  
  File: gfortran.info,  Node: UINT,  Next: UMASK,  Prev: UCOBOUND,  Up: Intrinsic Procedures
  
! 8.282 'UINT' - Convert to 'UNSIGNED' type
  =========================================
  
  _Synopsis_:
!      'RESULT = UINT(A [, KIND))'
  
  _Description_:
       Convert to unsigned type
--- 19864,19874 ----
  
  File: gfortran.info,  Node: UINT,  Next: UMASK,  Prev: UCOBOUND,  Up: Intrinsic Procedures
  
! 8.282 â€˜UINTâ€™ - Convert to â€˜UNSIGNEDâ€™ type
  =========================================
  
  _Synopsis_:
!      â€˜RESULT = UINT(A [, KIND))â€™
  
  _Description_:
       Convert to unsigned type
*************** _Class_:
*** 19877,19885 ****
       Elemental function
  
  _Arguments_:
!      A           Shall be of type 'INTEGER', 'REAL', 'COMPLEX' or
!                  'UNSIGNED' or a boz-literal-constant.
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
--- 19877,19885 ----
       Elemental function
  
  _Arguments_:
!      A           Shall be of type â€˜INTEGERâ€™, â€˜REALâ€™, â€˜COMPLEXâ€™ or
!                  â€˜UNSIGNEDâ€™ or a boz-literal-constant.
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
*************** _Standard_:
*** 19889,19912 ****
  
  File: gfortran.info,  Node: UMASK,  Next: UMASKL,  Prev: UINT,  Up: Intrinsic Procedures
  
! 8.283 'UMASK' -- Set the file creation mask
  ===========================================
  
  _Synopsis_:
!      'CALL UMASK(MASK [, OLD])'
!      'OLD = UMASK(MASK)'
  
  _Description_:
       Sets the file creation mask to MASK.  If called as a function, it
       returns the old value.  If called as a subroutine and argument OLD
!      if it is supplied, it is set to the old value.  See 'umask(2)'.
  
  _Class_:
       Subroutine, function
  
  _Arguments_:
!      MASK        Shall be a scalar of type 'INTEGER'.
!      OLD         (Optional) Shall be a scalar of type 'INTEGER'.
  
  _Standard_:
       GNU extension
--- 19889,19912 ----
  
  File: gfortran.info,  Node: UMASK,  Next: UMASKL,  Prev: UINT,  Up: Intrinsic Procedures
  
! 8.283 â€˜UMASKâ€™ -- Set the file creation mask
  ===========================================
  
  _Synopsis_:
!      â€˜CALL UMASK(MASK [, OLD])â€™
!      â€˜OLD = UMASK(MASK)â€™
  
  _Description_:
       Sets the file creation mask to MASK.  If called as a function, it
       returns the old value.  If called as a subroutine and argument OLD
!      if it is supplied, it is set to the old value.  See â€˜umask(2)â€™.
  
  _Class_:
       Subroutine, function
  
  _Arguments_:
!      MASK        Shall be a scalar of type â€˜INTEGERâ€™.
!      OLD         (Optional) Shall be a scalar of type â€˜INTEGERâ€™.
  
  _Standard_:
       GNU extension
*************** _Standard_:
*** 19914,19939 ****
  
  File: gfortran.info,  Node: UMASKL,  Next: UMASKR,  Prev: UMASK,  Up: Intrinsic Procedures
  
! 8.284 'UMASKL' -- Unsigned left justified mask
  ==============================================
  
  _Synopsis_:
!      'RESULT = UMASKL(I[, KIND])'
  
  _Description_:
!      'UMASKL(I[, KIND])' has its leftmost I bits set to 1, and the
       remaining bits set to 0.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           Shall be of type 'UNSIGNED'.
       KIND        Shall be a scalar constant expression of type
!                  'INTEGER'.
  
  _Return value_:
!      The return value is of type 'UNSIGNED'.  If KIND is present, it
       specifies the kind value of the return type; otherwise, it is of
       the default unsigned kind.
  
--- 19914,19939 ----
  
  File: gfortran.info,  Node: UMASKL,  Next: UMASKR,  Prev: UMASK,  Up: Intrinsic Procedures
  
! 8.284 â€˜UMASKLâ€™ -- Unsigned left justified mask
  ==============================================
  
  _Synopsis_:
!      â€˜RESULT = UMASKL(I[, KIND])â€™
  
  _Description_:
!      â€˜UMASKL(I[, KIND])â€™ has its leftmost I bits set to 1, and the
       remaining bits set to 0.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           Shall be of type â€˜UNSIGNEDâ€™.
       KIND        Shall be a scalar constant expression of type
!                  â€˜INTEGERâ€™.
  
  _Return value_:
!      The return value is of type â€˜UNSIGNEDâ€™.  If KIND is present, it
       specifies the kind value of the return type; otherwise, it is of
       the default unsigned kind.
  
*************** _See also_:
*** 19948,19973 ****
  
  File: gfortran.info,  Node: UMASKR,  Next: UNLINK,  Prev: UMASKL,  Up: Intrinsic Procedures
  
! 8.285 'UMASKR' -- Unsigned right justified mask
  ===============================================
  
  _Synopsis_:
!      'RESULT = MASKR(I[, KIND])'
  
  _Description_:
!      'UMASKL(I[, KIND])' has its rightmost I bits set to 1, and the
       remaining bits set to 0.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           Shall be of type 'UNSIGNED'.
       KIND        Shall be a scalar constant expression of type
!                  'INTEGER'.
  
  _Return value_:
!      The return value is of type 'UNSIGNED'.  If KIND is present, it
       specifies the kind value of the return type; otherwise, it is of
       the default integer kind.
  
--- 19948,19973 ----
  
  File: gfortran.info,  Node: UMASKR,  Next: UNLINK,  Prev: UMASKL,  Up: Intrinsic Procedures
  
! 8.285 â€˜UMASKRâ€™ -- Unsigned right justified mask
  ===============================================
  
  _Synopsis_:
!      â€˜RESULT = MASKR(I[, KIND])â€™
  
  _Description_:
!      â€˜UMASKL(I[, KIND])â€™ has its rightmost I bits set to 1, and the
       remaining bits set to 0.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      I           Shall be of type â€˜UNSIGNEDâ€™.
       KIND        Shall be a scalar constant expression of type
!                  â€˜INTEGERâ€™.
  
  _Return value_:
!      The return value is of type â€˜UNSIGNEDâ€™.  If KIND is present, it
       specifies the kind value of the return type; otherwise, it is of
       the default integer kind.
  
*************** _See also_:
*** 19982,20000 ****
  
  File: gfortran.info,  Node: UNLINK,  Next: UNPACK,  Prev: UMASKR,  Up: Intrinsic Procedures
  
! 8.286 'UNLINK' -- Remove a file from the file system
  ====================================================
  
  _Synopsis_:
!      'CALL UNLINK(PATH [, STATUS])'
!      'STATUS = UNLINK(PATH)'
  
  _Description_:
!      Unlinks the file PATH.  A null character ('CHAR(0)') can be used to
       mark the end of the name in PATH; otherwise, trailing blanks in the
       file name are ignored.  If the STATUS argument is supplied, it
       contains 0 on success or a nonzero error code upon return; see
!      'unlink(2)'.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
--- 19982,20000 ----
  
  File: gfortran.info,  Node: UNLINK,  Next: UNPACK,  Prev: UMASKR,  Up: Intrinsic Procedures
  
! 8.286 â€˜UNLINKâ€™ -- Remove a file from the file system
  ====================================================
  
  _Synopsis_:
!      â€˜CALL UNLINK(PATH [, STATUS])â€™
!      â€˜STATUS = UNLINK(PATH)â€™
  
  _Description_:
!      Unlinks the file PATH.  A null character (â€˜CHAR(0)â€™) can be used to
       mark the end of the name in PATH; otherwise, trailing blanks in the
       file name are ignored.  If the STATUS argument is supplied, it
       contains 0 on success or a nonzero error code upon return; see
!      â€˜unlink(2)â€™.
  
       This intrinsic is provided in both subroutine and function forms;
       however, only one form can be used in any given program unit.
*************** _Class_:
*** 20003,20010 ****
       Subroutine, function
  
  _Arguments_:
!      PATH        Shall be of default 'CHARACTER' type.
!      STATUS      (Optional) Shall be of default 'INTEGER' type.
  
  _Standard_:
       GNU extension
--- 20003,20010 ----
       Subroutine, function
  
  _Arguments_:
!      PATH        Shall be of default â€˜CHARACTERâ€™ type.
!      STATUS      (Optional) Shall be of default â€˜INTEGERâ€™ type.
  
  _Standard_:
       GNU extension
*************** _See also_:
*** 20016,20026 ****
  
  File: gfortran.info,  Node: UNPACK,  Next: VERIFY,  Prev: UNLINK,  Up: Intrinsic Procedures
  
! 8.287 'UNPACK' -- Unpack an array of rank one into an array
  ===========================================================
  
  _Synopsis_:
!      'RESULT = UNPACK(VECTOR, MASK, FIELD)'
  
  _Description_:
       Store the elements of VECTOR in an array of higher rank.
--- 20016,20026 ----
  
  File: gfortran.info,  Node: UNPACK,  Next: VERIFY,  Prev: UNLINK,  Up: Intrinsic Procedures
  
! 8.287 â€˜UNPACKâ€™ -- Unpack an array of rank one into an array
  ===========================================================
  
  _Synopsis_:
!      â€˜RESULT = UNPACK(VECTOR, MASK, FIELD)â€™
  
  _Description_:
       Store the elements of VECTOR in an array of higher rank.
*************** _Class_:
*** 20031,20043 ****
  _Arguments_:
       VECTOR      Shall be an array of any type and rank one.  It
                   shall have at least as many elements as MASK has
!                  'TRUE' values.
!      MASK        Shall be an array of type 'LOGICAL'.
       FIELD       Shall be of the same type as VECTOR and have the
                   same shape as MASK.
  
  _Return value_:
!      The resulting array corresponds to FIELD with 'TRUE' elements of
       MASK replaced by values from VECTOR in array element order.
  
  _Example_:
--- 20031,20043 ----
  _Arguments_:
       VECTOR      Shall be an array of any type and rank one.  It
                   shall have at least as many elements as MASK has
!                  â€˜TRUEâ€™ values.
!      MASK        Shall be an array of type â€˜LOGICALâ€™.
       FIELD       Shall be of the same type as VECTOR and have the
                   same shape as MASK.
  
  _Return value_:
!      The resulting array corresponds to FIELD with â€˜TRUEâ€™ elements of
       MASK replaced by values from VECTOR in array element order.
  
  _Example_:
*************** _See also_:
*** 20060,20093 ****
  
  File: gfortran.info,  Node: VERIFY,  Next: XOR,  Prev: UNPACK,  Up: Intrinsic Procedures
  
! 8.288 'VERIFY' -- Scan a string for characters not a given set
  ==============================================================
  
  _Synopsis_:
!      'RESULT = VERIFY(STRING, SET[, BACK [, KIND]])'
  
  _Description_:
       Verifies that all the characters in STRING belong to the set of
       characters in SET.
  
!      If BACK is either absent or equals 'FALSE', this function returns
       the position of the leftmost character of STRING that is not in
!      SET.  If BACK equals 'TRUE', the rightmost position is returned.
       If all characters of STRING are found in SET, the result is zero.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      STRING      Shall be of type 'CHARACTER'.
!      SET         Shall be of type 'CHARACTER'.
!      BACK        (Optional) shall be of type 'LOGICAL'.
!      KIND        (Optional) A scalar 'INTEGER' constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type 'INTEGER' and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.
  
  _Example_:
--- 20060,20093 ----
  
  File: gfortran.info,  Node: VERIFY,  Next: XOR,  Prev: UNPACK,  Up: Intrinsic Procedures
  
! 8.288 â€˜VERIFYâ€™ -- Scan a string for characters not a given set
  ==============================================================
  
  _Synopsis_:
!      â€˜RESULT = VERIFY(STRING, SET[, BACK [, KIND]])â€™
  
  _Description_:
       Verifies that all the characters in STRING belong to the set of
       characters in SET.
  
!      If BACK is either absent or equals â€˜FALSEâ€™, this function returns
       the position of the leftmost character of STRING that is not in
!      SET.  If BACK equals â€˜TRUEâ€™, the rightmost position is returned.
       If all characters of STRING are found in SET, the result is zero.
  
  _Class_:
       Elemental function
  
  _Arguments_:
!      STRING      Shall be of type â€˜CHARACTERâ€™.
!      SET         Shall be of type â€˜CHARACTERâ€™.
!      BACK        (Optional) shall be of type â€˜LOGICALâ€™.
!      KIND        (Optional) A scalar â€˜INTEGERâ€™ constant
                   expression indicating the kind parameter of the
                   result.
  
  _Return value_:
!      The return value is of type â€˜INTEGERâ€™ and of kind KIND.  If KIND is
       absent, the return value is of default integer kind.
  
  _Example_:
*************** _See also_:
*** 20109,20119 ****
  
  File: gfortran.info,  Node: XOR,  Prev: VERIFY,  Up: Intrinsic Procedures
  
! 8.289 'XOR' -- Bitwise logical exclusive OR
  ===========================================
  
  _Synopsis_:
!      'RESULT = XOR(I, J)'
  
  _Description_:
       Bitwise logical exclusive or.
--- 20109,20119 ----
  
  File: gfortran.info,  Node: XOR,  Prev: VERIFY,  Up: Intrinsic Procedures
  
! 8.289 â€˜XORâ€™ -- Bitwise logical exclusive OR
  ===========================================
  
  _Synopsis_:
!      â€˜RESULT = XOR(I, J)â€™
  
  _Description_:
       Bitwise logical exclusive or.
*************** _Description_:
*** 20121,20146 ****
       This intrinsic routine is provided for backwards compatibility with
       GNU Fortran 77.  For integer arguments, programmers should consider
       the use of the *note IEOR:: intrinsic and for logical arguments the
!      '.NEQV.' operator, which are both defined by the Fortran standard.
  
  _Class_:
       Function
  
  _Arguments_:
!      I           The type shall be either a scalar 'INTEGER' type
!                  or a scalar 'LOGICAL' type or a
                   boz-literal-constant.
       J           The type shall be the same as the type of I or a
                   boz-literal-constant.  I and J shall not both be
                   boz-literal-constants.  If either I and J is a
                   boz-literal-constant, then the other argument
!                  must be a scalar 'INTEGER'.
  
  _Return value_:
!      The return type is either a scalar 'INTEGER' or a scalar 'LOGICAL'.
       If the kind type parameters differ, then the smaller kind type is
       implicitly converted to larger kind, and the return has the larger
!      kind.  A boz-literal-constant is converted to an 'INTEGER' with the
       kind type parameter of the other argument as-if a call to *note
       INT:: occurred.
  
--- 20121,20146 ----
       This intrinsic routine is provided for backwards compatibility with
       GNU Fortran 77.  For integer arguments, programmers should consider
       the use of the *note IEOR:: intrinsic and for logical arguments the
!      â€˜.NEQV.â€™ operator, which are both defined by the Fortran standard.
  
  _Class_:
       Function
  
  _Arguments_:
!      I           The type shall be either a scalar â€˜INTEGERâ€™ type
!                  or a scalar â€˜LOGICALâ€™ type or a
                   boz-literal-constant.
       J           The type shall be the same as the type of I or a
                   boz-literal-constant.  I and J shall not both be
                   boz-literal-constants.  If either I and J is a
                   boz-literal-constant, then the other argument
!                  must be a scalar â€˜INTEGERâ€™.
  
  _Return value_:
!      The return type is either a scalar â€˜INTEGERâ€™ or a scalar â€˜LOGICALâ€™.
       If the kind type parameters differ, then the smaller kind type is
       implicitly converted to larger kind, and the return has the larger
!      kind.  A boz-literal-constant is converted to an â€˜INTEGERâ€™ with the
       kind type parameter of the other argument as-if a call to *note
       INT:: occurred.
  
*************** File: gfortran.info,  Node: Intrinsic Mo
*** 20178,20294 ****
  
  File: gfortran.info,  Node: ISO_FORTRAN_ENV,  Next: ISO_C_BINDING,  Up: Intrinsic Modules
  
! 9.1 'ISO_FORTRAN_ENV'
  =====================
  
  _Standard_:
       Fortran 2003 and later, except when otherwise noted
  
!    The 'ISO_FORTRAN_ENV' module provides the following scalar
  default-integer named constants:
  
! 'ATOMIC_INT_KIND':
       Default-kind integer constant to be used as kind parameter when
       defining integer variables used in atomic operations.  (Fortran
       2008 or later.)
  
! 'ATOMIC_LOGICAL_KIND':
       Default-kind integer constant to be used as kind parameter when
       defining logical variables used in atomic operations.  (Fortran
       2008 or later.)
  
! 'CHARACTER_KINDS':
       Default-kind integer constant array of rank one containing the
!      supported kind parameters of the 'CHARACTER' type.  (Fortran 2008
       or later.)
  
! 'CHARACTER_STORAGE_SIZE':
       Size in bits of the character storage unit.
  
! 'ERROR_UNIT':
       Identifies the preconnected unit used for error reporting.
  
! 'FILE_STORAGE_SIZE':
       Size in bits of the file-storage unit.
  
! 'INPUT_UNIT':
!      Identifies the preconnected unit identified by the asterisk ('*')
!      in 'READ' statement.
  
! 'INT8', 'INT16', 'INT32', 'INT64':
       Kind type parameters to specify an INTEGER type with a storage size
       of 8, 16, 32, and 64 bits.  It is negative if a target platform
       does not support the particular kind.  (Fortran 2008 or later.)
  
! 'INTEGER_KINDS':
       Default-kind integer constant array of rank one containing the
!      supported kind parameters of the 'INTEGER' type.  (Fortran 2008 or
       later.)
  
! 'IOSTAT_END':
!      The value assigned to the variable passed to the 'IOSTAT='
       specifier of an input/output statement if an end-of-file condition
       occurred.
  
! 'IOSTAT_EOR':
!      The value assigned to the variable passed to the 'IOSTAT='
       specifier of an input/output statement if an end-of-record
       condition occurred.
  
! 'IOSTAT_INQUIRE_INTERNAL_UNIT':
!      Scalar default-integer constant, used by 'INQUIRE' for the
!      'IOSTAT=' specifier to denote an that a unit number identifies an
       internal unit.  (Fortran 2008 or later.)
  
! 'NUMERIC_STORAGE_SIZE':
       The size in bits of the numeric storage unit.
  
! 'LOGICAL_KINDS':
       Default-kind integer constant array of rank one containing the
!      supported kind parameters of the 'LOGICAL' type.  (Fortran 2008 or
       later.)
  
! 'OUTPUT_UNIT':
!      Identifies the preconnected unit identified by the asterisk ('*')
!      in 'WRITE' statement.
  
! 'REAL32', 'REAL64', 'REAL128':
       Kind type parameters to specify a REAL type with a storage size of
       32, 64, and 128 bits.  It is negative if a target platform does not
       support the particular kind.  (Fortran 2008 or later.)
  
! 'REAL_KINDS':
       Default-kind integer constant array of rank one containing the
!      supported kind parameters of the 'REAL' type.  (Fortran 2008 or
       later.)
  
! 'STAT_LOCKED':
!      Scalar default-integer constant used as 'STAT=' return value by
!      'LOCK' to denote that the lock variable is locked by the executing
       image.  (Fortran 2008 or later.)
  
! 'STAT_LOCKED_OTHER_IMAGE':
!      Scalar default-integer constant used as 'STAT=' return value by
!      'UNLOCK' to denote that the lock variable is locked by another
       image.  (Fortran 2008 or later.)
  
! 'STAT_STOPPED_IMAGE':
!      Positive, scalar default-integer constant used as 'STAT=' return
       value if the argument in the statement requires synchronization
       with an image that has initiated termination.  (Fortran 2008 or
       later.)
  
! 'STAT_FAILED_IMAGE':
!      Positive, scalar default-integer constant used as 'STAT=' return
       value if the argument in the statement requires communication with
       an image that is in the failed state.  (TS 18508 or later.)
  
! 'STAT_UNLOCKED':
!      Scalar default-integer constant used as 'STAT=' return value by
!      'UNLOCK' to denote that the lock variable is unlocked.  (Fortran
       2008 or later.)
  
! 'UINT8', 'UINT16', 'UINT32', 'UINT64':
       Kind type parameters to specify an UNSIGNED type with a storage
       size of 8, 16, 32, and 64 bits.  It is negative if a target
       platform does not support the particular kind.  (Extension, *note
--- 20178,20294 ----
  
  File: gfortran.info,  Node: ISO_FORTRAN_ENV,  Next: ISO_C_BINDING,  Up: Intrinsic Modules
  
! 9.1 â€˜ISO_FORTRAN_ENVâ€™
  =====================
  
  _Standard_:
       Fortran 2003 and later, except when otherwise noted
  
!    The â€˜ISO_FORTRAN_ENVâ€™ module provides the following scalar
  default-integer named constants:
  
! â€˜ATOMIC_INT_KINDâ€™:
       Default-kind integer constant to be used as kind parameter when
       defining integer variables used in atomic operations.  (Fortran
       2008 or later.)
  
! â€˜ATOMIC_LOGICAL_KINDâ€™:
       Default-kind integer constant to be used as kind parameter when
       defining logical variables used in atomic operations.  (Fortran
       2008 or later.)
  
! â€˜CHARACTER_KINDSâ€™:
       Default-kind integer constant array of rank one containing the
!      supported kind parameters of the â€˜CHARACTERâ€™ type.  (Fortran 2008
       or later.)
  
! â€˜CHARACTER_STORAGE_SIZEâ€™:
       Size in bits of the character storage unit.
  
! â€˜ERROR_UNITâ€™:
       Identifies the preconnected unit used for error reporting.
  
! â€˜FILE_STORAGE_SIZEâ€™:
       Size in bits of the file-storage unit.
  
! â€˜INPUT_UNITâ€™:
!      Identifies the preconnected unit identified by the asterisk (â€˜*â€™)
!      in â€˜READâ€™ statement.
  
! â€˜INT8â€™, â€˜INT16â€™, â€˜INT32â€™, â€˜INT64â€™:
       Kind type parameters to specify an INTEGER type with a storage size
       of 8, 16, 32, and 64 bits.  It is negative if a target platform
       does not support the particular kind.  (Fortran 2008 or later.)
  
! â€˜INTEGER_KINDSâ€™:
       Default-kind integer constant array of rank one containing the
!      supported kind parameters of the â€˜INTEGERâ€™ type.  (Fortran 2008 or
       later.)
  
! â€˜IOSTAT_ENDâ€™:
!      The value assigned to the variable passed to the â€˜IOSTAT=â€™
       specifier of an input/output statement if an end-of-file condition
       occurred.
  
! â€˜IOSTAT_EORâ€™:
!      The value assigned to the variable passed to the â€˜IOSTAT=â€™
       specifier of an input/output statement if an end-of-record
       condition occurred.
  
! â€˜IOSTAT_INQUIRE_INTERNAL_UNITâ€™:
!      Scalar default-integer constant, used by â€˜INQUIREâ€™ for the
!      â€˜IOSTAT=â€™ specifier to denote an that a unit number identifies an
       internal unit.  (Fortran 2008 or later.)
  
! â€˜NUMERIC_STORAGE_SIZEâ€™:
       The size in bits of the numeric storage unit.
  
! â€˜LOGICAL_KINDSâ€™:
       Default-kind integer constant array of rank one containing the
!      supported kind parameters of the â€˜LOGICALâ€™ type.  (Fortran 2008 or
       later.)
  
! â€˜OUTPUT_UNITâ€™:
!      Identifies the preconnected unit identified by the asterisk (â€˜*â€™)
!      in â€˜WRITEâ€™ statement.
  
! â€˜REAL32â€™, â€˜REAL64â€™, â€˜REAL128â€™:
       Kind type parameters to specify a REAL type with a storage size of
       32, 64, and 128 bits.  It is negative if a target platform does not
       support the particular kind.  (Fortran 2008 or later.)
  
! â€˜REAL_KINDSâ€™:
       Default-kind integer constant array of rank one containing the
!      supported kind parameters of the â€˜REALâ€™ type.  (Fortran 2008 or
       later.)
  
! â€˜STAT_LOCKEDâ€™:
!      Scalar default-integer constant used as â€˜STAT=â€™ return value by
!      â€˜LOCKâ€™ to denote that the lock variable is locked by the executing
       image.  (Fortran 2008 or later.)
  
! â€˜STAT_LOCKED_OTHER_IMAGEâ€™:
!      Scalar default-integer constant used as â€˜STAT=â€™ return value by
!      â€˜UNLOCKâ€™ to denote that the lock variable is locked by another
       image.  (Fortran 2008 or later.)
  
! â€˜STAT_STOPPED_IMAGEâ€™:
!      Positive, scalar default-integer constant used as â€˜STAT=â€™ return
       value if the argument in the statement requires synchronization
       with an image that has initiated termination.  (Fortran 2008 or
       later.)
  
! â€˜STAT_FAILED_IMAGEâ€™:
!      Positive, scalar default-integer constant used as â€˜STAT=â€™ return
       value if the argument in the statement requires communication with
       an image that is in the failed state.  (TS 18508 or later.)
  
! â€˜STAT_UNLOCKEDâ€™:
!      Scalar default-integer constant used as â€˜STAT=â€™ return value by
!      â€˜UNLOCKâ€™ to denote that the lock variable is unlocked.  (Fortran
       2008 or later.)
  
! â€˜UINT8â€™, â€˜UINT16â€™, â€˜UINT32â€™, â€˜UINT64â€™:
       Kind type parameters to specify an UNSIGNED type with a storage
       size of 8, 16, 32, and 64 bits.  It is negative if a target
       platform does not support the particular kind.  (Extension, *note
*************** default-integer named constants:
*** 20296,20304 ****
  
     The module provides the following derived type:
  
! 'LOCK_TYPE':
!      Derived type with private components to be use with the 'LOCK' and
!      'UNLOCK' statement.  A variable of its type has to be always
       declared as coarray and may not appear in a variable-definition
       context.  (Fortran 2008 or later.)
  
--- 20296,20304 ----
  
     The module provides the following derived type:
  
! â€˜LOCK_TYPEâ€™:
!      Derived type with private components to be use with the â€˜LOCKâ€™ and
!      â€˜UNLOCKâ€™ statement.  A variable of its type has to be always
       declared as coarray and may not appear in a variable-definition
       context.  (Fortran 2008 or later.)
  
*************** COMPILER_OPTIONS:: and *note COMPILER_VE
*** 20308,20314 ****
  
  File: gfortran.info,  Node: ISO_C_BINDING,  Next: IEEE modules,  Prev: ISO_FORTRAN_ENV,  Up: Intrinsic Modules
  
! 9.2 'ISO_C_BINDING'
  ===================
  
  _Standard_:
--- 20308,20314 ----
  
  File: gfortran.info,  Node: ISO_C_BINDING,  Next: IEEE modules,  Prev: ISO_FORTRAN_ENV,  Up: Intrinsic Modules
  
! 9.2 â€˜ISO_C_BINDINGâ€™
  ===================
  
  _Standard_:
*************** _Standard_:
*** 20318,20458 ****
  definition can be found in the section Intrinsic Procedures of this
  manual.
  
! 'C_ASSOCIATED'
! 'C_F_POINTER'
! 'C_F_PROCPOINTER'
! 'C_FUNLOC'
! 'C_LOC'
! 'C_SIZEOF'
  
!    The 'ISO_C_BINDING' module provides the following named constants of
  type default integer, which can be used as KIND type parameters.
  
     In addition to the integer named constants required by the Fortran
! 2003 standard and 'C_PTRDIFF_T' of TS 29113, GNU Fortran provides as an
  extension named constants for the 128-bit integer types supported by the
! C compiler: 'C_INT128_T, C_INT_LEAST128_T, C_INT_FAST128_T'.
! Furthermore, if '_Float128' is supported in C, the named constants
! 'C_FLOAT128' and 'C_FLOAT128_COMPLEX' are defined.
  
  Fortran Type   Named constant          C type                   Extension
  ----------------------------------------------------------------------------
! 'INTEGER'      'C_INT'                 'int'
! 'INTEGER'      'C_SHORT'               'short int'
! 'INTEGER'      'C_LONG'                'long int'
! 'INTEGER'      'C_LONG_LONG'           'long long int'
! 'INTEGER'      'C_SIGNED_CHAR'         'signed
!                                        char'/'unsigned char'
! 'INTEGER'      'C_SIZE_T'              'size_t'
! 'INTEGER'      'C_INT8_T'              'int8_t'
! 'INTEGER'      'C_INT16_T'             'int16_t'
! 'INTEGER'      'C_INT32_T'             'int32_t'
! 'INTEGER'      'C_INT64_T'             'int64_t'
! 'INTEGER'      'C_INT128_T'            'int128_t'               Ext.
! 'INTEGER'      'C_INT_LEAST8_T'        'int_least8_t'
! 'INTEGER'      'C_INT_LEAST16_T'       'int_least16_t'
! 'INTEGER'      'C_INT_LEAST32_T'       'int_least32_t'
! 'INTEGER'      'C_INT_LEAST64_T'       'int_least64_t'
! 'INTEGER'      'C_INT_LEAST128_T'      'int_least128_t'         Ext.
! 'INTEGER'      'C_INT_FAST8_T'         'int_fast8_t'
! 'INTEGER'      'C_INT_FAST16_T'        'int_fast16_t'
! 'INTEGER'      'C_INT_FAST32_T'        'int_fast32_t'
! 'INTEGER'      'C_INT_FAST64_T'        'int_fast64_t'
! 'INTEGER'      'C_INT_FAST128_T'       'int_fast128_t'          Ext.
! 'INTEGER'      'C_INTMAX_T'            'intmax_t'
! 'INTEGER'      'C_INTPTR_T'            'intptr_t'
! 'INTEGER'      'C_PTRDIFF_T'           'ptrdiff_t'              TS 29113
! 'REAL'         'C_FLOAT'               'float'
! 'REAL'         'C_DOUBLE'              'double'
! 'REAL'         'C_LONG_DOUBLE'         'long double'
! 'REAL'         'C_FLOAT128'            '_Float128'              Ext.
! 'COMPLEX'      'C_FLOAT_COMPLEX'       'float _Complex'
! 'COMPLEX'      'C_DOUBLE_COMPLEX'      'double _Complex'
! 'COMPLEX'      'C_LONG_DOUBLE_COMPLEX' 'long double _Complex'
! 'COMPLEX'      'C_FLOAT128_COMPLEX'    '_Float128 _Complex'     Ext.
! 'LOGICAL'      'C_BOOL'                '_Bool'
! 'CHARACTER'    'C_CHAR'                'char'
  
     GNU Fortran also provides as an extension, named constants for
! 'UNSIGNED' integers *note Unsigned integers::.
  Fortran Type   Named constant                C type
  ---------------------------------------------------------------------------
! 'UNSIGNED'     'C_UNSIGNED'                  'unsigned int'
! 'UNSIGNED'     'C_UNSIGNED_SHORT'            'unsigned short'
! 'UNSIGNED'     'C_UNSIGNED_CHAR'             'unsigned char'
! 'UNSINGED'     'C_UNSIGNED_LONG'             'unsigned long'
! 'UNSINGED'     'C_UNSIGNED_LONG_LONG'        'unsigned long long'
! 'UNSIGNED'     'C_UINTMAX_T'                 'uintmax_t'
! 'UNSIGNED'     'C_UINT8_T'                   'uint8_t'
! 'UNSIGNED'     'C_UINT16_T'                  'uint16_t'
! 'UNSIGNED'     'C_UINT32_T'                  'uint32_t'
! 'UNSIGNED'     'C_UINT64_T'                  'uint64_t'
! 'UNSIGNED'     'C_UINT128_T'                 'uint128_t'
! 'UNSIGNED'     'C_UINT_FAST8_T'              'uint_fast8_t'
! 'UNSIGNED'     'C_UINT_FAST16_T'             'uint_fast16_t'
! 'UNSIGNED'     'C_UINT_FAST32_T'             'uint_fast32_t'
! 'UNSIGNED'     'C_UINT_FAST64_T'             'uint_fast64_t'
! 'UNSIGNED'     'C_UINT_FAST128_T'            'uint_fast128_t'
! 'UNSIGNED'     'C_UINT_LEAST8_T'             'uint_least8_t'
! 'UNSIGNED'     'C_UINT_LEAST16_T'            'uint_least16_t'
! 'UNSIGNED'     'C_UINT_LEAST32_T'            'uint_least32_t'
! 'UNSIGNED'     'C_UINT_LEAST64_T'            'uint_least64_t'
! 'UNSIGNED'     'C_UINT_LEAST128_T'           'uint_least128_t'
  
     Additionally, the following parameters of type
! 'CHARACTER(KIND=C_CHAR)' are defined.
  
  Name           C definition                     Value
  ------------------------------------------------------------
! 'C_NULL_CHAR'  null character                   ''\0''
! 'C_ALERT'      alert                            ''\a''
! 'C_BACKSPACE'  backspace                        ''\b''
! 'C_FORM_FEED'  form feed                        ''\f''
! 'C_NEW_LINE'   new line                         ''\n''
! 'C_CARRIAGE_RETURN'carriage return              ''\r''
! 'C_HORIZONTAL_TAB'horizontal tab                ''\t''
! 'C_VERTICAL_TAB'vertical tab                    ''\v''
  
     Moreover, the following two named constants are defined:
  
  Name           Type
  --------------------------------------------------------------------------
! 'C_NULL_PTR'   'C_PTR'
! 'C_NULL_FUNPTR''C_FUNPTR'
  
!    Both are equivalent to the value 'NULL' in C.
  
  
  File: gfortran.info,  Node: IEEE modules,  Next: OpenMP Modules OMP_LIB and OMP_LIB_KINDS,  Prev: ISO_C_BINDING,  Up: Intrinsic Modules
  
! 9.3 IEEE modules: 'IEEE_EXCEPTIONS', 'IEEE_ARITHMETIC', and 'IEEE_FEATURES'
  ===========================================================================
  
  _Standard_:
       Fortran 2003 and later
  
!    The 'IEEE_EXCEPTIONS', 'IEEE_ARITHMETIC', and 'IEEE_FEATURES'
  intrinsic modules provide support for exceptions and IEEE arithmetic, as
  defined in Fortran 2003 and later standards, and the IEC 60559:1989
  standard (_Binary floating-point arithmetic for microprocessor
  systems_).  These modules are only provided on the following supported
  platforms:
  
!    * i386 and x86_64 processors
!    * platforms that use the GNU C Library (glibc)
!    * platforms with support for SysV/386 routines for floating-point
       interface (including Solaris and BSDs)
!    * platforms with the AIX OS
  
     For full compliance with the Fortran standards, code using the
! 'IEEE_EXCEPTIONS' or 'IEEE_ARITHMETIC' modules should be compiled with
! the following options: '-fno-unsafe-math-optimizations -frounding-math
! -fsignaling-nans'.
  
  
  File: gfortran.info,  Node: OpenMP Modules OMP_LIB and OMP_LIB_KINDS,  Next: OpenACC Module OPENACC,  Prev: IEEE modules,  Up: Intrinsic Modules
  
! 9.4 OpenMP Modules 'OMP_LIB' and 'OMP_LIB_KINDS'
  ================================================
  
  _Standard_:
--- 20318,20458 ----
  definition can be found in the section Intrinsic Procedures of this
  manual.
  
! â€˜C_ASSOCIATEDâ€™
! â€˜C_F_POINTERâ€™
! â€˜C_F_PROCPOINTERâ€™
! â€˜C_FUNLOCâ€™
! â€˜C_LOCâ€™
! â€˜C_SIZEOFâ€™
  
!    The â€˜ISO_C_BINDINGâ€™ module provides the following named constants of
  type default integer, which can be used as KIND type parameters.
  
     In addition to the integer named constants required by the Fortran
! 2003 standard and â€˜C_PTRDIFF_Tâ€™ of TS 29113, GNU Fortran provides as an
  extension named constants for the 128-bit integer types supported by the
! C compiler: â€˜C_INT128_T, C_INT_LEAST128_T, C_INT_FAST128_Tâ€™.
! Furthermore, if â€˜_Float128â€™ is supported in C, the named constants
! â€˜C_FLOAT128â€™ and â€˜C_FLOAT128_COMPLEXâ€™ are defined.
  
  Fortran Type   Named constant          C type                   Extension
  ----------------------------------------------------------------------------
! â€˜INTEGERâ€™      â€˜C_INTâ€™                 â€˜intâ€™
! â€˜INTEGERâ€™      â€˜C_SHORTâ€™               â€˜short intâ€™
! â€˜INTEGERâ€™      â€˜C_LONGâ€™                â€˜long intâ€™
! â€˜INTEGERâ€™      â€˜C_LONG_LONGâ€™           â€˜long long intâ€™
! â€˜INTEGERâ€™      â€˜C_SIGNED_CHARâ€™         â€˜signed
!                                        charâ€™/â€˜unsigned charâ€™
! â€˜INTEGERâ€™      â€˜C_SIZE_Tâ€™              â€˜size_tâ€™
! â€˜INTEGERâ€™      â€˜C_INT8_Tâ€™              â€˜int8_tâ€™
! â€˜INTEGERâ€™      â€˜C_INT16_Tâ€™             â€˜int16_tâ€™
! â€˜INTEGERâ€™      â€˜C_INT32_Tâ€™             â€˜int32_tâ€™
! â€˜INTEGERâ€™      â€˜C_INT64_Tâ€™             â€˜int64_tâ€™
! â€˜INTEGERâ€™      â€˜C_INT128_Tâ€™            â€˜int128_tâ€™               Ext.
! â€˜INTEGERâ€™      â€˜C_INT_LEAST8_Tâ€™        â€˜int_least8_tâ€™
! â€˜INTEGERâ€™      â€˜C_INT_LEAST16_Tâ€™       â€˜int_least16_tâ€™
! â€˜INTEGERâ€™      â€˜C_INT_LEAST32_Tâ€™       â€˜int_least32_tâ€™
! â€˜INTEGERâ€™      â€˜C_INT_LEAST64_Tâ€™       â€˜int_least64_tâ€™
! â€˜INTEGERâ€™      â€˜C_INT_LEAST128_Tâ€™      â€˜int_least128_tâ€™         Ext.
! â€˜INTEGERâ€™      â€˜C_INT_FAST8_Tâ€™         â€˜int_fast8_tâ€™
! â€˜INTEGERâ€™      â€˜C_INT_FAST16_Tâ€™        â€˜int_fast16_tâ€™
! â€˜INTEGERâ€™      â€˜C_INT_FAST32_Tâ€™        â€˜int_fast32_tâ€™
! â€˜INTEGERâ€™      â€˜C_INT_FAST64_Tâ€™        â€˜int_fast64_tâ€™
! â€˜INTEGERâ€™      â€˜C_INT_FAST128_Tâ€™       â€˜int_fast128_tâ€™          Ext.
! â€˜INTEGERâ€™      â€˜C_INTMAX_Tâ€™            â€˜intmax_tâ€™
! â€˜INTEGERâ€™      â€˜C_INTPTR_Tâ€™            â€˜intptr_tâ€™
! â€˜INTEGERâ€™      â€˜C_PTRDIFF_Tâ€™           â€˜ptrdiff_tâ€™              TS 29113
! â€˜REALâ€™         â€˜C_FLOATâ€™               â€˜floatâ€™
! â€˜REALâ€™         â€˜C_DOUBLEâ€™              â€˜doubleâ€™
! â€˜REALâ€™         â€˜C_LONG_DOUBLEâ€™         â€˜long doubleâ€™
! â€˜REALâ€™         â€˜C_FLOAT128â€™            â€˜_Float128â€™              Ext.
! â€˜COMPLEXâ€™      â€˜C_FLOAT_COMPLEXâ€™       â€˜float _Complexâ€™
! â€˜COMPLEXâ€™      â€˜C_DOUBLE_COMPLEXâ€™      â€˜double _Complexâ€™
! â€˜COMPLEXâ€™      â€˜C_LONG_DOUBLE_COMPLEXâ€™ â€˜long double _Complexâ€™
! â€˜COMPLEXâ€™      â€˜C_FLOAT128_COMPLEXâ€™    â€˜_Float128 _Complexâ€™     Ext.
! â€˜LOGICALâ€™      â€˜C_BOOLâ€™                â€˜_Boolâ€™
! â€˜CHARACTERâ€™    â€˜C_CHARâ€™                â€˜charâ€™
  
     GNU Fortran also provides as an extension, named constants for
! â€˜UNSIGNEDâ€™ integers *note Unsigned integers::.
  Fortran Type   Named constant                C type
  ---------------------------------------------------------------------------
! â€˜UNSIGNEDâ€™     â€˜C_UNSIGNEDâ€™                  â€˜unsigned intâ€™
! â€˜UNSIGNEDâ€™     â€˜C_UNSIGNED_SHORTâ€™            â€˜unsigned shortâ€™
! â€˜UNSIGNEDâ€™     â€˜C_UNSIGNED_CHARâ€™             â€˜unsigned charâ€™
! â€˜UNSINGEDâ€™     â€˜C_UNSIGNED_LONGâ€™             â€˜unsigned longâ€™
! â€˜UNSINGEDâ€™     â€˜C_UNSIGNED_LONG_LONGâ€™        â€˜unsigned long longâ€™
! â€˜UNSIGNEDâ€™     â€˜C_UINTMAX_Tâ€™                 â€˜uintmax_tâ€™
! â€˜UNSIGNEDâ€™     â€˜C_UINT8_Tâ€™                   â€˜uint8_tâ€™
! â€˜UNSIGNEDâ€™     â€˜C_UINT16_Tâ€™                  â€˜uint16_tâ€™
! â€˜UNSIGNEDâ€™     â€˜C_UINT32_Tâ€™                  â€˜uint32_tâ€™
! â€˜UNSIGNEDâ€™     â€˜C_UINT64_Tâ€™                  â€˜uint64_tâ€™
! â€˜UNSIGNEDâ€™     â€˜C_UINT128_Tâ€™                 â€˜uint128_tâ€™
! â€˜UNSIGNEDâ€™     â€˜C_UINT_FAST8_Tâ€™              â€˜uint_fast8_tâ€™
! â€˜UNSIGNEDâ€™     â€˜C_UINT_FAST16_Tâ€™             â€˜uint_fast16_tâ€™
! â€˜UNSIGNEDâ€™     â€˜C_UINT_FAST32_Tâ€™             â€˜uint_fast32_tâ€™
! â€˜UNSIGNEDâ€™     â€˜C_UINT_FAST64_Tâ€™             â€˜uint_fast64_tâ€™
! â€˜UNSIGNEDâ€™     â€˜C_UINT_FAST128_Tâ€™            â€˜uint_fast128_tâ€™
! â€˜UNSIGNEDâ€™     â€˜C_UINT_LEAST8_Tâ€™             â€˜uint_least8_tâ€™
! â€˜UNSIGNEDâ€™     â€˜C_UINT_LEAST16_Tâ€™            â€˜uint_least16_tâ€™
! â€˜UNSIGNEDâ€™     â€˜C_UINT_LEAST32_Tâ€™            â€˜uint_least32_tâ€™
! â€˜UNSIGNEDâ€™     â€˜C_UINT_LEAST64_Tâ€™            â€˜uint_least64_tâ€™
! â€˜UNSIGNEDâ€™     â€˜C_UINT_LEAST128_Tâ€™           â€˜uint_least128_tâ€™
  
     Additionally, the following parameters of type
! â€˜CHARACTER(KIND=C_CHAR)â€™ are defined.
  
  Name           C definition                     Value
  ------------------------------------------------------------
! â€˜C_NULL_CHARâ€™  null character                   â€˜'\0'â€™
! â€˜C_ALERTâ€™      alert                            â€˜'\a'â€™
! â€˜C_BACKSPACEâ€™  backspace                        â€˜'\b'â€™
! â€˜C_FORM_FEEDâ€™  form feed                        â€˜'\f'â€™
! â€˜C_NEW_LINEâ€™   new line                         â€˜'\n'â€™
! â€˜C_CARRIAGE_RETURNâ€™carriage return              â€˜'\r'â€™
! â€˜C_HORIZONTAL_TABâ€™horizontal tab                â€˜'\t'â€™
! â€˜C_VERTICAL_TABâ€™vertical tab                    â€˜'\v'â€™
  
     Moreover, the following two named constants are defined:
  
  Name           Type
  --------------------------------------------------------------------------
! â€˜C_NULL_PTRâ€™   â€˜C_PTRâ€™
! â€˜C_NULL_FUNPTRâ€™â€˜C_FUNPTRâ€™
  
!    Both are equivalent to the value â€˜NULLâ€™ in C.
  
  
  File: gfortran.info,  Node: IEEE modules,  Next: OpenMP Modules OMP_LIB and OMP_LIB_KINDS,  Prev: ISO_C_BINDING,  Up: Intrinsic Modules
  
! 9.3 IEEE modules: â€˜IEEE_EXCEPTIONSâ€™, â€˜IEEE_ARITHMETICâ€™, and â€˜IEEE_FEATURESâ€™
  ===========================================================================
  
  _Standard_:
       Fortran 2003 and later
  
!    The â€˜IEEE_EXCEPTIONSâ€™, â€˜IEEE_ARITHMETICâ€™, and â€˜IEEE_FEATURESâ€™
  intrinsic modules provide support for exceptions and IEEE arithmetic, as
  defined in Fortran 2003 and later standards, and the IEC 60559:1989
  standard (_Binary floating-point arithmetic for microprocessor
  systems_).  These modules are only provided on the following supported
  platforms:
  
!    â€¢ i386 and x86_64 processors
!    â€¢ platforms that use the GNU C Library (glibc)
!    â€¢ platforms with support for SysV/386 routines for floating-point
       interface (including Solaris and BSDs)
!    â€¢ platforms with the AIX OS
  
     For full compliance with the Fortran standards, code using the
! â€˜IEEE_EXCEPTIONSâ€™ or â€˜IEEE_ARITHMETICâ€™ modules should be compiled with
! the following options: â€˜-fno-unsafe-math-optimizations -frounding-math
! -fsignaling-nansâ€™.
  
  
  File: gfortran.info,  Node: OpenMP Modules OMP_LIB and OMP_LIB_KINDS,  Next: OpenACC Module OPENACC,  Prev: IEEE modules,  Up: Intrinsic Modules
  
! 9.4 OpenMP Modules â€˜OMP_LIBâ€™ and â€˜OMP_LIB_KINDSâ€™
  ================================================
  
  _Standard_:
*************** _Standard_:
*** 20462,20470 ****
       Program Interface v5.2 (partially supported).
  
     The OpenMP Fortran runtime library routines are provided both in a
! form of two Fortran modules, named 'OMP_LIB' and 'OMP_LIB_KINDS', and in
! a form of a Fortran 'include' file named 'omp_lib.h'.  The procedures
! provided by 'OMP_LIB' can be found in the *note Introduction:
  (libgomp)Top. manual, the named constants defined in the modules are
  listed below.
  
--- 20462,20470 ----
       Program Interface v5.2 (partially supported).
  
     The OpenMP Fortran runtime library routines are provided both in a
! form of two Fortran modules, named â€˜OMP_LIBâ€™ and â€˜OMP_LIB_KINDSâ€™, and in
! a form of a Fortran â€˜includeâ€™ file named â€˜omp_lib.hâ€™.  The procedures
! provided by â€˜OMP_LIBâ€™ can be found in the *note Introduction:
  (libgomp)Top. manual, the named constants defined in the modules are
  listed below.
  
*************** OpenMP Application Program Interface v5.
*** 20477,20629 ****
  and OpenMP Application Program Interface v5.2
  (https://www.openmp.org/wp-content/uploads/OpenMP-API-Specification-5-2.pdf).
  
!    'OMP_LIB_KINDS' provides the following scalar default-integer named
  constants:
  
! 'omp_allocator_handle_kind'
! 'omp_alloctrait_key_kind'
! 'omp_alloctrait_val_kind'
! 'omp_depend_kind'
! 'omp_lock_kind'
! 'omp_lock_hint_kind'
! 'omp_nest_lock_kind'
! 'omp_pause_resource_kind'
! 'omp_memspace_handle_kind'
! 'omp_proc_bind_kind'
! 'omp_sched_kind'
! 'omp_sync_hint_kind'
  
!    'OMP_LIB' provides the scalar default-integer named constant
! 'openmp_version' with a value of the form YYYYMM, where 'yyyy' is the
  year and MM the month of the OpenMP version; for OpenMP v4.5 the value
! is '201511'.
  
     The following derived type:
  
! 'omp_alloctrait'
  
     The following scalar default-integer named constants:
! 'omp_initial_device'
! 'omp_invalid_device'
  
     The following scalar integer named constants of the kind
! 'omp_sched_kind':
  
! 'omp_sched_static'
! 'omp_sched_dynamic'
! 'omp_sched_guided'
! 'omp_sched_auto'
  
     And the following scalar integer named constants of the kind
! 'omp_proc_bind_kind':
  
! 'omp_proc_bind_false'
! 'omp_proc_bind_true'
! 'omp_proc_bind_primary'
! 'omp_proc_bind_master'
! 'omp_proc_bind_close'
! 'omp_proc_bind_spread'
  
     The following scalar integer named constants are of the kind
! 'omp_lock_hint_kind':
  
! 'omp_lock_hint_none'
! 'omp_lock_hint_uncontended'
! 'omp_lock_hint_contended'
! 'omp_lock_hint_nonspeculative'
! 'omp_lock_hint_speculative'
! 'omp_sync_hint_none'
! 'omp_sync_hint_uncontended'
! 'omp_sync_hint_contended'
! 'omp_sync_hint_nonspeculative'
! 'omp_sync_hint_speculative'
  
     And the following two scalar integer named constants are of the kind
! 'omp_pause_resource_kind':
  
! 'omp_pause_soft'
! 'omp_pause_hard'
  
     The following scalar integer named constants are of the kind
! 'omp_alloctrait_key_kind':
  
! 'omp_atk_sync_hint'
! 'omp_atk_alignment'
! 'omp_atk_access'
! 'omp_atk_pool_size'
! 'omp_atk_fallback'
! 'omp_atk_fb_data'
! 'omp_atk_pinned'
! 'omp_atk_partition'
  
     The following scalar integer named constants are of the kind
! 'omp_alloctrait_val_kind':
  
!      'omp_alloctrait_key_kind':
! 'omp_atv_default'
! 'omp_atv_false'
! 'omp_atv_true'
! 'omp_atv_contended'
! 'omp_atv_uncontended'
! 'omp_atv_serialized'
! 'omp_atv_sequential'
! 'omp_atv_private'
! 'omp_atv_all'
! 'omp_atv_thread'
! 'omp_atv_pteam'
! 'omp_atv_cgroup'
! 'omp_atv_default_mem_fb'
! 'omp_atv_null_fb'
! 'omp_atv_abort_fb'
! 'omp_atv_allocator_fb'
! 'omp_atv_environment'
! 'omp_atv_nearest'
! 'omp_atv_blocked'
  
     The following scalar integer named constants are of the kind
! 'omp_allocator_handle_kind':
  
! 'omp_null_allocator'
! 'omp_default_mem_alloc'
! 'omp_large_cap_mem_alloc'
! 'omp_const_mem_alloc'
! 'omp_high_bw_mem_alloc'
! 'omp_low_lat_mem_alloc'
! 'omp_cgroup_mem_alloc'
! 'omp_pteam_mem_alloc'
! 'omp_thread_mem_alloc'
  
     The following scalar integer named constants are of the kind
! 'omp_memspace_handle_kind':
  
! 'omp_default_mem_space'
! 'omp_large_cap_mem_space'
! 'omp_const_mem_space'
! 'omp_high_bw_mem_space'
! 'omp_low_lat_mem_space'
  
  
  File: gfortran.info,  Node: OpenACC Module OPENACC,  Prev: OpenMP Modules OMP_LIB and OMP_LIB_KINDS,  Up: Intrinsic Modules
  
! 9.5 OpenACC Module 'OPENACC'
  ============================
  
  _Standard_:
       OpenACC Application Programming Interface v2.6
  
     The OpenACC Fortran runtime library routines are provided both in a
! form of a Fortran 90 module, named 'OPENACC', and in form of a Fortran
! 'include' file named 'openacc_lib.h'.  The procedures provided by
! 'OPENACC' can be found in the *note Introduction: (libgomp)Top. manual,
  the named constants defined in the modules are listed below.
  
     For details refer to the actual OpenACC Application Programming
  Interface v2.6 (https://www.openacc.org/).
  
!    'OPENACC' provides the scalar default-integer named constant
! 'openacc_version' with a value of the form YYYYMM, where 'yyyy' is the
  year and MM the month of the OpenACC version; for OpenACC v2.6 the value
! is '201711'.
  
  
  File: gfortran.info,  Node: Contributing,  Next: Copying,  Prev: Intrinsic Modules,  Up: Top
--- 20477,20629 ----
  and OpenMP Application Program Interface v5.2
  (https://www.openmp.org/wp-content/uploads/OpenMP-API-Specification-5-2.pdf).
  
!    â€˜OMP_LIB_KINDSâ€™ provides the following scalar default-integer named
  constants:
  
! â€˜omp_allocator_handle_kindâ€™
! â€˜omp_alloctrait_key_kindâ€™
! â€˜omp_alloctrait_val_kindâ€™
! â€˜omp_depend_kindâ€™
! â€˜omp_lock_kindâ€™
! â€˜omp_lock_hint_kindâ€™
! â€˜omp_nest_lock_kindâ€™
! â€˜omp_pause_resource_kindâ€™
! â€˜omp_memspace_handle_kindâ€™
! â€˜omp_proc_bind_kindâ€™
! â€˜omp_sched_kindâ€™
! â€˜omp_sync_hint_kindâ€™
  
!    â€˜OMP_LIBâ€™ provides the scalar default-integer named constant
! â€˜openmp_versionâ€™ with a value of the form YYYYMM, where â€˜yyyyâ€™ is the
  year and MM the month of the OpenMP version; for OpenMP v4.5 the value
! is â€˜201511â€™.
  
     The following derived type:
  
! â€˜omp_alloctraitâ€™
  
     The following scalar default-integer named constants:
! â€˜omp_initial_deviceâ€™
! â€˜omp_invalid_deviceâ€™
  
     The following scalar integer named constants of the kind
! â€˜omp_sched_kindâ€™:
  
! â€˜omp_sched_staticâ€™
! â€˜omp_sched_dynamicâ€™
! â€˜omp_sched_guidedâ€™
! â€˜omp_sched_autoâ€™
  
     And the following scalar integer named constants of the kind
! â€˜omp_proc_bind_kindâ€™:
  
! â€˜omp_proc_bind_falseâ€™
! â€˜omp_proc_bind_trueâ€™
! â€˜omp_proc_bind_primaryâ€™
! â€˜omp_proc_bind_masterâ€™
! â€˜omp_proc_bind_closeâ€™
! â€˜omp_proc_bind_spreadâ€™
  
     The following scalar integer named constants are of the kind
! â€˜omp_lock_hint_kindâ€™:
  
! â€˜omp_lock_hint_noneâ€™
! â€˜omp_lock_hint_uncontendedâ€™
! â€˜omp_lock_hint_contendedâ€™
! â€˜omp_lock_hint_nonspeculativeâ€™
! â€˜omp_lock_hint_speculativeâ€™
! â€˜omp_sync_hint_noneâ€™
! â€˜omp_sync_hint_uncontendedâ€™
! â€˜omp_sync_hint_contendedâ€™
! â€˜omp_sync_hint_nonspeculativeâ€™
! â€˜omp_sync_hint_speculativeâ€™
  
     And the following two scalar integer named constants are of the kind
! â€˜omp_pause_resource_kindâ€™:
  
! â€˜omp_pause_softâ€™
! â€˜omp_pause_hardâ€™
  
     The following scalar integer named constants are of the kind
! â€˜omp_alloctrait_key_kindâ€™:
  
! â€˜omp_atk_sync_hintâ€™
! â€˜omp_atk_alignmentâ€™
! â€˜omp_atk_accessâ€™
! â€˜omp_atk_pool_sizeâ€™
! â€˜omp_atk_fallbackâ€™
! â€˜omp_atk_fb_dataâ€™
! â€˜omp_atk_pinnedâ€™
! â€˜omp_atk_partitionâ€™
  
     The following scalar integer named constants are of the kind
! â€˜omp_alloctrait_val_kindâ€™:
  
!      â€˜omp_alloctrait_key_kindâ€™:
! â€˜omp_atv_defaultâ€™
! â€˜omp_atv_falseâ€™
! â€˜omp_atv_trueâ€™
! â€˜omp_atv_contendedâ€™
! â€˜omp_atv_uncontendedâ€™
! â€˜omp_atv_serializedâ€™
! â€˜omp_atv_sequentialâ€™
! â€˜omp_atv_privateâ€™
! â€˜omp_atv_allâ€™
! â€˜omp_atv_threadâ€™
! â€˜omp_atv_pteamâ€™
! â€˜omp_atv_cgroupâ€™
! â€˜omp_atv_default_mem_fbâ€™
! â€˜omp_atv_null_fbâ€™
! â€˜omp_atv_abort_fbâ€™
! â€˜omp_atv_allocator_fbâ€™
! â€˜omp_atv_environmentâ€™
! â€˜omp_atv_nearestâ€™
! â€˜omp_atv_blockedâ€™
  
     The following scalar integer named constants are of the kind
! â€˜omp_allocator_handle_kindâ€™:
  
! â€˜omp_null_allocatorâ€™
! â€˜omp_default_mem_allocâ€™
! â€˜omp_large_cap_mem_allocâ€™
! â€˜omp_const_mem_allocâ€™
! â€˜omp_high_bw_mem_allocâ€™
! â€˜omp_low_lat_mem_allocâ€™
! â€˜omp_cgroup_mem_allocâ€™
! â€˜omp_pteam_mem_allocâ€™
! â€˜omp_thread_mem_allocâ€™
  
     The following scalar integer named constants are of the kind
! â€˜omp_memspace_handle_kindâ€™:
  
! â€˜omp_default_mem_spaceâ€™
! â€˜omp_large_cap_mem_spaceâ€™
! â€˜omp_const_mem_spaceâ€™
! â€˜omp_high_bw_mem_spaceâ€™
! â€˜omp_low_lat_mem_spaceâ€™
  
  
  File: gfortran.info,  Node: OpenACC Module OPENACC,  Prev: OpenMP Modules OMP_LIB and OMP_LIB_KINDS,  Up: Intrinsic Modules
  
! 9.5 OpenACC Module â€˜OPENACCâ€™
  ============================
  
  _Standard_:
       OpenACC Application Programming Interface v2.6
  
     The OpenACC Fortran runtime library routines are provided both in a
! form of a Fortran 90 module, named â€˜OPENACCâ€™, and in form of a Fortran
! â€˜includeâ€™ file named â€˜openacc_lib.hâ€™.  The procedures provided by
! â€˜OPENACCâ€™ can be found in the *note Introduction: (libgomp)Top. manual,
  the named constants defined in the modules are listed below.
  
     For details refer to the actual OpenACC Application Programming
  Interface v2.6 (https://www.openacc.org/).
  
!    â€˜OPENACCâ€™ provides the scalar default-integer named constant
! â€˜openacc_versionâ€™ with a value of the form YYYYMM, where â€˜yyyyâ€™ is the
  year and MM the month of the OpenACC version; for OpenACC v2.6 the value
! is â€˜201711â€™.
  
  
  File: gfortran.info,  Node: Contributing,  Next: Copying,  Prev: Intrinsic Modules,  Up: Top
*************** with GCC was written by _Paul Brook_.
*** 20661,20710 ****
     The following individuals have contributed code and/or ideas and
  significant help to the GNU Fortran project (in alphabetical order):
  
!    - Janne Blomqvist
!    - Steven Bosscher
!    - Paul Brook
!    - Tobias Burnus
!    - Franc,ois-Xavier Coudert
!    - Bud Davis
!    - Jerry DeLisle
!    - Erik Edelmann
!    - Bernhard Fischer
!    - Daniel Franke
!    - Richard Guenther
!    - Richard Henderson
!    - Katherine Holcomb
!    - Jakub Jelinek
!    - Niels Kristian Bech Jensen
!    - Steven Johnson
!    - Steven G. Kargl
!    - Thomas Koenig
!    - Asher Langton
!    - H. J. Lu
!    - Toon Moene
!    - Brooks Moses
!    - Andrew Pinski
!    - Tim Prince
!    - Christopher D. Rickett
!    - Richard Sandiford
!    - Tobias Schlu"ter
!    - Roger Sayle
!    - Paul Thomas
!    - Andy Vaught
!    - Feng Wang
!    - Janus Weil
!    - Daniel Kraft
  
     The following people have contributed bug reports, smaller or larger
  patches, and much needed feedback and encouragement for the GNU Fortran
  project:
  
!    - Bill Clodius
!    - Dominique d'Humie`res
!    - Kate Hedstrom
!    - Erik Schnetter
!    - Gerhard Steinmetz
!    - Joost VandeVondele
  
     Many other individuals have helped debug, test and improve the GNU
  Fortran compiler over the past few years, and we welcome you to do the
--- 20661,20710 ----
     The following individuals have contributed code and/or ideas and
  significant help to the GNU Fortran project (in alphabetical order):
  
!    âˆ’ Janne Blomqvist
!    âˆ’ Steven Bosscher
!    âˆ’ Paul Brook
!    âˆ’ Tobias Burnus
!    âˆ’ FranÃ§ois-Xavier Coudert
!    âˆ’ Bud Davis
!    âˆ’ Jerry DeLisle
!    âˆ’ Erik Edelmann
!    âˆ’ Bernhard Fischer
!    âˆ’ Daniel Franke
!    âˆ’ Richard Guenther
!    âˆ’ Richard Henderson
!    âˆ’ Katherine Holcomb
!    âˆ’ Jakub Jelinek
!    âˆ’ Niels Kristian Bech Jensen
!    âˆ’ Steven Johnson
!    âˆ’ Steven G. Kargl
!    âˆ’ Thomas Koenig
!    âˆ’ Asher Langton
!    âˆ’ H. J. Lu
!    âˆ’ Toon Moene
!    âˆ’ Brooks Moses
!    âˆ’ Andrew Pinski
!    âˆ’ Tim Prince
!    âˆ’ Christopher D. Rickett
!    âˆ’ Richard Sandiford
!    âˆ’ Tobias SchlÃ¼ter
!    âˆ’ Roger Sayle
!    âˆ’ Paul Thomas
!    âˆ’ Andy Vaught
!    âˆ’ Feng Wang
!    âˆ’ Janus Weil
!    âˆ’ Daniel Kraft
  
     The following people have contributed bug reports, smaller or larger
  patches, and much needed feedback and encouragement for the GNU Fortran
  project:
  
!    âˆ’ Bill Clodius
!    âˆ’ Dominique d'HumiÃ¨res
!    âˆ’ Kate Hedstrom
!    âˆ’ Erik Schnetter
!    âˆ’ Gerhard Steinmetz
!    âˆ’ Joost VandeVondele
  
     Many other individuals have helped debug, test and improve the GNU
  Fortran compiler over the past few years, and we welcome you to do the
*************** GNU General Public License
*** 20747,20753 ****
  
                          Version 3, 29 June 2007
  
!      Copyright (C) 2007 Free Software Foundation, Inc. <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies of this
       license document, but changing it is not allowed.
--- 20747,20753 ----
  
                          Version 3, 29 June 2007
  
!      Copyright Â© 2007 Free Software Foundation, Inc. <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies of this
       license document, but changing it is not allowed.
*************** mail.
*** 21434,21444 ****
  notice like this when it starts in an interactive mode:
  
       PROGRAM Copyright (C) YEAR NAME OF AUTHOR
!      This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'.
       This is free software, and you are welcome to redistribute it
!      under certain conditions; type 'show c' for details.
  
!    The hypothetical commands 'show w' and 'show c' should show the
  appropriate parts of the General Public License.  Of course, your
  program's commands might be different; for a GUI interface, you would
  use an "about box".
--- 21434,21444 ----
  notice like this when it starts in an interactive mode:
  
       PROGRAM Copyright (C) YEAR NAME OF AUTHOR
!      This program comes with ABSOLUTELY NO WARRANTY; for details type â€˜show wâ€™.
       This is free software, and you are welcome to redistribute it
!      under certain conditions; type â€˜show câ€™ for details.
  
!    The hypothetical commands â€˜show wâ€™ and â€˜show câ€™ should show the
  appropriate parts of the General Public License.  Of course, your
  program's commands might be different; for a GUI interface, you would
  use an "about box".
*************** GNU Free Documentation License
*** 21463,21469 ****
  
                       Version 1.3, 3 November 2008
  
!      Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
       <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies
--- 21463,21469 ----
  
                       Version 1.3, 3 November 2008
  
!      Copyright Â© 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
       <https://www.fsf.org>
  
       Everyone is permitted to copy and distribute verbatim copies
*************** GNU Free Documentation License
*** 21472,21478 ****
    0. PREAMBLE
  
       The purpose of this License is to make a manual, textbook, or other
!      functional and useful document "free" in the sense of freedom: to
       assure everyone the effective freedom to copy and redistribute it,
       with or without modifying it, either commercially or
       noncommercially.  Secondarily, this License preserves for the
--- 21472,21478 ----
    0. PREAMBLE
  
       The purpose of this License is to make a manual, textbook, or other
!      functional and useful document â€œfreeâ€� in the sense of freedom: to
       assure everyone the effective freedom to copy and redistribute it,
       with or without modifying it, either commercially or
       noncommercially.  Secondarily, this License preserves for the
*************** more; major new features or packages con
*** 21983,21989 ****
  proper thing to do" when distributing free software for a fee, we can
  assure a steady flow of resources into making more free software.
  
!      Copyright (C) 1994 Free Software Foundation, Inc.
       Verbatim copying and redistribution of this section is permitted
       without royalty; alteration is not permitted.
  
--- 21983,21989 ----
  proper thing to do" when distributing free software for a fee, we can
  assure a steady flow of resources into making more free software.
  
!      Copyright Â© 1994 Free Software Foundation, Inc.
       Verbatim copying and redistribution of this section is permitted
       without royalty; alteration is not permitted.
  
*************** File: gfortran.info,  Node: Option Index
*** 21993,22000 ****
  Option Index
  ************
  
! 'gfortran''s command line options are indexed here without any initial
! '-' or '--'.  Where an option has both positive and negative forms (such
  as -foption and -fno-option), relevant entries in the manual are indexed
  under the most appropriate form; it may sometimes be useful to look up
  both forms.
--- 21993,22000 ----
  Option Index
  ************
  
! â€˜gfortranâ€™'s command line options are indexed here without any initial
! â€˜-â€™ or â€˜--â€™.  Where an option has both positive and negative forms (such
  as -foption and -fno-option), relevant entries in the manual are indexed
  under the most appropriate form; it may sometimes be useful to look up
  both forms.
*************** both forms.
*** 22072,22086 ****
  * fdec-structure:                        Fortran Dialect Options.
                                                                (line  71)
  * fdefault-double-8:                     Fortran Dialect Options.
!                                                               (line 271)
  * fdefault-integer-8:                    Fortran Dialect Options.
!                                                               (line 235)
  * fdefault-real-10:                      Fortran Dialect Options.
!                                                               (line 251)
  * fdefault-real-16:                      Fortran Dialect Options.
!                                                               (line 261)
  * fdefault-real-8:                       Fortran Dialect Options.
!                                                               (line 241)
  * fdollar-ok:                            Fortran Dialect Options.
                                                                (line 107)
  * fdump-fortran-global:                  Developer Options.   (line   9)
--- 22072,22086 ----
  * fdec-structure:                        Fortran Dialect Options.
                                                                (line  71)
  * fdefault-double-8:                     Fortran Dialect Options.
!                                                               (line 269)
  * fdefault-integer-8:                    Fortran Dialect Options.
!                                                               (line 233)
  * fdefault-real-10:                      Fortran Dialect Options.
!                                                               (line 249)
  * fdefault-real-16:                      Fortran Dialect Options.
!                                                               (line 259)
  * fdefault-real-8:                       Fortran Dialect Options.
!                                                               (line 239)
  * fdollar-ok:                            Fortran Dialect Options.
                                                                (line 107)
  * fdump-fortran-global:                  Developer Options.   (line   9)
*************** both forms.
*** 22111,22117 ****
  * finline-intrinsics:                    Code Gen Options.    (line 346)
  * finline-matmul-limit:                  Code Gen Options.    (line 375)
  * finteger-4-integer-8:                  Fortran Dialect Options.
!                                                               (line 279)
  * fintrinsic-modules-path:               Directory Options.   (line  35)
  * fmax-array-constructor:                Code Gen Options.    (line 241)
  * fmax-errors=N:                         Error and Warning Options.
--- 22111,22117 ----
  * finline-intrinsics:                    Code Gen Options.    (line 346)
  * finline-matmul-limit:                  Code Gen Options.    (line 375)
  * finteger-4-integer-8:                  Fortran Dialect Options.
!                                                               (line 277)
  * fintrinsic-modules-path:               Directory Options.   (line  35)
  * fmax-array-constructor:                Code Gen Options.    (line 241)
  * fmax-errors=N:                         Error and Warning Options.
*************** both forms.
*** 22129,22158 ****
  * fopenacc:                              Fortran Dialect Options.
                                                                (line 172)
  * fopenmp:                               Fortran Dialect Options.
!                                                               (line 182)
  * fopenmp-allocators:                    Fortran Dialect Options.
!                                                               (line 194)
  * fopenmp-simd:                          Fortran Dialect Options.
!                                                               (line 212)
  * fpack-derived:                         Code Gen Options.    (line 281)
  * fpad-source:                           Fortran Dialect Options.
                                                                (line 144)
  * fpp:                                   Preprocessing Options.
                                                                (line  41)
  * frange-check:                          Fortran Dialect Options.
!                                                               (line 223)
  * freal-4-real-10:                       Fortran Dialect Options.
!                                                               (line 289)
  * freal-4-real-16:                       Fortran Dialect Options.
!                                                               (line 289)
  * freal-4-real-8:                        Fortran Dialect Options.
!                                                               (line 289)
  * freal-8-real-10:                       Fortran Dialect Options.
!                                                               (line 289)
  * freal-8-real-16:                       Fortran Dialect Options.
!                                                               (line 289)
  * freal-8-real-4:                        Fortran Dialect Options.
!                                                               (line 289)
  * frealloc-lhs:                          Code Gen Options.    (line 456)
  * frecord-marker=LENGTH:                 Runtime Options.     (line  28)
  * frecursive:                            Code Gen Options.    (line 389)
--- 22129,22158 ----
  * fopenacc:                              Fortran Dialect Options.
                                                                (line 172)
  * fopenmp:                               Fortran Dialect Options.
!                                                               (line 181)
  * fopenmp-allocators:                    Fortran Dialect Options.
!                                                               (line 192)
  * fopenmp-simd:                          Fortran Dialect Options.
!                                                               (line 210)
  * fpack-derived:                         Code Gen Options.    (line 281)
  * fpad-source:                           Fortran Dialect Options.
                                                                (line 144)
  * fpp:                                   Preprocessing Options.
                                                                (line  41)
  * frange-check:                          Fortran Dialect Options.
!                                                               (line 221)
  * freal-4-real-10:                       Fortran Dialect Options.
!                                                               (line 287)
  * freal-4-real-16:                       Fortran Dialect Options.
!                                                               (line 287)
  * freal-4-real-8:                        Fortran Dialect Options.
!                                                               (line 287)
  * freal-8-real-10:                       Fortran Dialect Options.
!                                                               (line 287)
  * freal-8-real-16:                       Fortran Dialect Options.
!                                                               (line 287)
  * freal-8-real-4:                        Fortran Dialect Options.
!                                                               (line 287)
  * frealloc-lhs:                          Code Gen Options.    (line 456)
  * frecord-marker=LENGTH:                 Runtime Options.     (line  28)
  * frecursive:                            Code Gen Options.    (line 389)
*************** both forms.
*** 22166,22174 ****
  * fsyntax-only:                          Error and Warning Options.
                                                                (line  32)
  * ftest-forall-temp:                     Fortran Dialect Options.
!                                                               (line 340)
  * funsigned:                             Fortran Dialect Options.
!                                                               (line 344)
  * fworking-directory:                    Preprocessing Options.
                                                                (line  85)
  * H:                                     Preprocessing Options.
--- 22166,22174 ----
  * fsyntax-only:                          Error and Warning Options.
                                                                (line  32)
  * ftest-forall-temp:                     Fortran Dialect Options.
!                                                               (line 338)
  * funsigned:                             Fortran Dialect Options.
!                                                               (line 342)
  * fworking-directory:                    Preprocessing Options.
                                                                (line  85)
  * H:                                     Preprocessing Options.
*************** both forms.
*** 22198,22204 ****
  * static-libgfortran:                    Link Options.        (line  10)
  * static-libquadmath:                    Link Options.        (line  16)
  * std=STD:                               Fortran Dialect Options.
!                                                               (line 317)
  * tail-call-workaround:                  Code Gen Options.    (line 207)
  * UNAME:                                 Preprocessing Options.
                                                                (line 215)
--- 22198,22204 ----
  * static-libgfortran:                    Link Options.        (line  10)
  * static-libquadmath:                    Link Options.        (line  16)
  * std=STD:                               Fortran Dialect Options.
!                                                               (line 315)
  * tail-call-workaround:                  Code Gen Options.    (line 207)
  * UNAME:                                 Preprocessing Options.
                                                                (line 215)
*************** Keyword Index
*** 22286,22302 ****
  [index]
  * Menu:
  
- * $:                                     Fortran Dialect Options.
-                                                               (line 107)
- * %LOC:                                  Argument list functions.
-                                                               (line   6)
- * %REF:                                  Argument list functions.
-                                                               (line   6)
- * %VAL:                                  Argument list functions.
-                                                               (line   6)
- * &:                                     Error and Warning Options.
-                                                               (line  87)
- * , conversion, to unsigned:             UINT.                (line   6)
  * _gfortran_set_args:                    _gfortran_set_args.  (line   6)
  * _gfortran_set_convert:                 _gfortran_set_convert.
                                                                (line   6)
--- 22286,22291 ----
*************** Keyword Index
*** 22307,22312 ****
--- 22296,22312 ----
                                                                (line   6)
  * _gfortran_set_record_marker:           _gfortran_set_record_marker.
                                                                (line   6)
+ * , conversion, to unsigned:             UINT.                (line   6)
+ * &:                                     Error and Warning Options.
+                                                               (line  87)
+ * %LOC:                                  Argument list functions.
+                                                               (line   6)
+ * %REF:                                  Argument list functions.
+                                                               (line   6)
+ * %VAL:                                  Argument list functions.
+                                                               (line   6)
+ * $:                                     Fortran Dialect Options.
+                                                               (line 107)
  * ABORT:                                 ABORT.               (line   6)
  * ABS:                                   ABS.                 (line   6)
  * absolute value:                        ABS.                 (line   6)
*************** Keyword Index
*** 22496,22501 ****
--- 22496,22502 ----
  * binary representation <1>:             POPPAR.              (line   6)
  * BIOR:                                  IOR.                 (line   6)
  * bit intrinsics checking:               Code Gen Options.    (line 143)
+ * BIT_SIZE:                              BIT_SIZE.            (line   6)
  * BITEST:                                BTEST.               (line   6)
  * bits set:                              POPCNT.              (line   6)
  * bits, AND of array elements:           IALL.                (line   6)
*************** Keyword Index
*** 22530,22536 ****
  * bitwise logical not:                   NOT.                 (line   6)
  * bitwise logical or:                    IOR.                 (line   6)
  * bitwise logical or <1>:                OR.                  (line   6)
- * BIT_SIZE:                              BIT_SIZE.            (line   6)
  * BJTEST:                                BTEST.               (line   6)
  * BKTEST:                                BTEST.               (line   6)
  * BLE:                                   BLE.                 (line   6)
--- 22531,22536 ----
*************** Keyword Index
*** 22558,22563 ****
--- 22558,22569 ----
                                                                (line   6)
  * C variable interoperability:           Interoperable Global Variables.
                                                                (line   6)
+ * C_ASSOCIATED:                          C_ASSOCIATED.        (line   6)
+ * C_F_POINTER:                           C_F_POINTER.         (line   6)
+ * C_F_PROCPOINTER:                       C_F_PROCPOINTER.     (line   6)
+ * C_FUNLOC:                              C_FUNLOC.            (line   6)
+ * C_LOC:                                 C_LOC.               (line   6)
+ * C_SIZEOF:                              C_SIZEOF.            (line   6)
  * CABS:                                  ABS.                 (line   6)
  * caf_deregister_t:                      caf_deregister_t.    (line   6)
  * caf_reference_t:                       caf_reference_t.     (line   6)
*************** Keyword Index
*** 22593,22607 ****
  * clock ticks <2>:                       SYSTEM_CLOCK.        (line   6)
  * CLOG:                                  LOG.                 (line   6)
  * CMPLX:                                 CMPLX.               (line   6)
  * Coarray Function ABI:                  Function ABI Documentation.
                                                                (line   6)
  * Coarray type and enum ABI:             Type and enum ABI Documentation.
                                                                (line   6)
- * coarray, IMAGE_INDEX:                  IMAGE_INDEX.         (line   6)
- * coarray, lower bound:                  LCOBOUND.            (line   6)
- * coarray, NUM_IMAGES:                   NUM_IMAGES.          (line   6)
- * coarray, THIS_IMAGE:                   THIS_IMAGE.          (line   6)
- * coarray, upper bound:                  UCOBOUND.            (line   6)
  * Coarray, _gfortran_caf_atomic_cas:     _gfortran_caf_atomic_cas.
                                                                (line   6)
  * Coarray, _gfortran_caf_atomic_define:  _gfortran_caf_atomic_define.
--- 22599,22613 ----
  * clock ticks <2>:                       SYSTEM_CLOCK.        (line   6)
  * CLOG:                                  LOG.                 (line   6)
  * CMPLX:                                 CMPLX.               (line   6)
+ * CO_BROADCAST:                          CO_BROADCAST.        (line   6)
+ * CO_MAX:                                CO_MAX.              (line   6)
+ * CO_MIN:                                CO_MIN.              (line   6)
+ * CO_REDUCE:                             CO_REDUCE.           (line   6)
+ * CO_SUM:                                CO_SUM.              (line   6)
  * Coarray Function ABI:                  Function ABI Documentation.
                                                                (line   6)
  * Coarray type and enum ABI:             Type and enum ABI Documentation.
                                                                (line   6)
  * Coarray, _gfortran_caf_atomic_cas:     _gfortran_caf_atomic_cas.
                                                                (line   6)
  * Coarray, _gfortran_caf_atomic_define:  _gfortran_caf_atomic_define.
*************** Keyword Index
*** 22632,22641 ****
                                                                (line   6)
  * Coarray, _gfortran_caf_event_wait:     _gfortran_caf_event_wait.
                                                                (line   6)
- * Coarray, _gfortran_caf_failed_images:  _gfortran_caf_failed_images.
-                                                               (line   6)
  * Coarray, _gfortran_caf_fail_image:     _gfortran_caf_fail_image.
                                                                (line   6)
  * Coarray, _gfortran_caf_finish:         _gfortran_caf_finish.
                                                                (line   6)
  * Coarray, _gfortran_caf_get_from_remote: _gfortran_caf_get_from_remote.
--- 22638,22647 ----
                                                                (line   6)
  * Coarray, _gfortran_caf_event_wait:     _gfortran_caf_event_wait.
                                                                (line   6)
  * Coarray, _gfortran_caf_fail_image:     _gfortran_caf_fail_image.
                                                                (line   6)
+ * Coarray, _gfortran_caf_failed_images:  _gfortran_caf_failed_images.
+                                                               (line   6)
  * Coarray, _gfortran_caf_finish:         _gfortran_caf_finish.
                                                                (line   6)
  * Coarray, _gfortran_caf_get_from_remote: _gfortran_caf_get_from_remote.
*************** Keyword Index
*** 22656,22665 ****
                                                                (line   6)
  * Coarray, _gfortran_caf_register_accessors_finish: _gfortran_caf_register_accessors_finish.
                                                                (line   6)
- * Coarray, _gfortran_caf_sendget_by_ref: _gfortran_caf_sendget_by_ref.
-                                                               (line   6)
  * Coarray, _gfortran_caf_send_to_remote: _gfortran_caf_send_to_remote.
                                                                (line   6)
  * Coarray, _gfortran_caf_stopped_images: _gfortran_caf_stopped_images.
                                                                (line   6)
  * Coarray, _gfortran_caf_sync_all:       _gfortran_caf_sync_all.
--- 22662,22671 ----
                                                                (line   6)
  * Coarray, _gfortran_caf_register_accessors_finish: _gfortran_caf_register_accessors_finish.
                                                                (line   6)
  * Coarray, _gfortran_caf_send_to_remote: _gfortran_caf_send_to_remote.
                                                                (line   6)
+ * Coarray, _gfortran_caf_sendget_by_ref: _gfortran_caf_sendget_by_ref.
+                                                               (line   6)
  * Coarray, _gfortran_caf_stopped_images: _gfortran_caf_stopped_images.
                                                                (line   6)
  * Coarray, _gfortran_caf_sync_all:       _gfortran_caf_sync_all.
*************** Keyword Index
*** 22674,22679 ****
--- 22680,22690 ----
                                                                (line   6)
  * Coarray, _gfortran_caf_unlock:         _gfortran_caf_unlock.
                                                                (line   6)
+ * coarray, IMAGE_INDEX:                  IMAGE_INDEX.         (line   6)
+ * coarray, lower bound:                  LCOBOUND.            (line   6)
+ * coarray, NUM_IMAGES:                   NUM_IMAGES.          (line   6)
+ * coarray, THIS_IMAGE:                   THIS_IMAGE.          (line   6)
+ * coarray, upper bound:                  UCOBOUND.            (line   6)
  * coarrays:                              Code Gen Options.    (line 127)
  * Coarrays:                              Coarray Programming. (line   6)
  * code generation, conventions:          Code Gen Options.    (line   6)
*************** Keyword Index
*** 22688,22693 ****
--- 22699,22706 ----
                                                                (line   6)
  * command options:                       Invoking GNU Fortran.
                                                                (line   6)
+ * COMMAND_ARGUMENT_COUNT:                COMMAND_ARGUMENT_COUNT.
+                                                               (line   6)
  * command-line arguments:                COMMAND_ARGUMENT_COUNT.
                                                                (line   6)
  * command-line arguments <1>:            GETARG.              (line   6)
*************** Keyword Index
*** 22698,22713 ****
  * command-line arguments, number of:     COMMAND_ARGUMENT_COUNT.
                                                                (line   6)
  * command-line arguments, number of <1>: IARGC.               (line   6)
- * COMMAND_ARGUMENT_COUNT:                COMMAND_ARGUMENT_COUNT.
-                                                               (line   6)
  * COMMON:                                Volatile COMMON blocks.
                                                                (line   6)
  * Compiler Directives:                   GNU Fortran Compiler Directives.
                                                                (line   6)
  * compiler flags inquiry function:       COMPILER_OPTIONS.    (line   6)
- * compiler, name and version:            COMPILER_VERSION.    (line   6)
  * COMPILER_OPTIONS:                      COMPILER_OPTIONS.    (line   6)
  * COMPILER_VERSION:                      COMPILER_VERSION.    (line   6)
  * COMPLEX:                               COMPLEX.             (line   6)
  * complex conjugate:                     CONJG.               (line   6)
  * Complex function:                      Alternate complex function syntax.
--- 22711,22724 ----
  * command-line arguments, number of:     COMMAND_ARGUMENT_COUNT.
                                                                (line   6)
  * command-line arguments, number of <1>: IARGC.               (line   6)
  * COMMON:                                Volatile COMMON blocks.
                                                                (line   6)
  * Compiler Directives:                   GNU Fortran Compiler Directives.
                                                                (line   6)
  * compiler flags inquiry function:       COMPILER_OPTIONS.    (line   6)
  * COMPILER_OPTIONS:                      COMPILER_OPTIONS.    (line   6)
  * COMPILER_VERSION:                      COMPILER_VERSION.    (line   6)
+ * compiler, name and version:            COMPILER_VERSION.    (line   6)
  * COMPLEX:                               COMPLEX.             (line   6)
  * complex conjugate:                     CONJG.               (line   6)
  * Complex function:                      Alternate complex function syntax.
*************** Keyword Index
*** 22765,22775 ****
  * cotangent:                             COTAN.               (line   6)
  * cotangent, degrees:                    COTAND.              (line   6)
  * COUNT:                                 COUNT.               (line   6)
- * CO_BROADCAST:                          CO_BROADCAST.        (line   6)
- * CO_MAX:                                CO_MAX.              (line   6)
- * CO_MIN:                                CO_MIN.              (line   6)
- * CO_REDUCE:                             CO_REDUCE.           (line   6)
- * CO_SUM:                                CO_SUM.              (line   6)
  * CPP:                                   Preprocessing Options.
                                                                (line   6)
  * CPU_TIME:                              CPU_TIME.            (line   6)
--- 22776,22781 ----
*************** Keyword Index
*** 22787,22798 ****
  * current time <2>:                      ITIME.               (line   6)
  * current time <3>:                      TIME.                (line   6)
  * current time <4>:                      TIME8.               (line   6)
- * C_ASSOCIATED:                          C_ASSOCIATED.        (line   6)
- * C_FUNLOC:                              C_FUNLOC.            (line   6)
- * C_F_POINTER:                           C_F_POINTER.         (line   6)
- * C_F_PROCPOINTER:                       C_F_PROCPOINTER.     (line   6)
- * C_LOC:                                 C_LOC.               (line   6)
- * C_SIZEOF:                              C_SIZEOF.            (line   6)
  * DABS:                                  ABS.                 (line   6)
  * DACOS:                                 ACOS.                (line   6)
  * DACOSD:                                ACOSD.               (line   6)
--- 22793,22798 ----
*************** Keyword Index
*** 22805,22814 ****
  * DATAN2D:                               ATAN2D.              (line   6)
  * DATAND:                                ATAND.               (line   6)
  * DATANH:                                ATANH.               (line   6)
  * date, current:                         DATE_AND_TIME.       (line   6)
  * date, current <1>:                     FDATE.               (line   6)
  * date, current <2>:                     IDATE.               (line   6)
- * DATE_AND_TIME:                         DATE_AND_TIME.       (line   6)
  * DBESJ0:                                BESSEL_J0.           (line   6)
  * DBESJ1:                                BESSEL_J1.           (line   6)
  * DBESJN:                                BESSEL_JN.           (line   6)
--- 22805,22814 ----
  * DATAN2D:                               ATAN2D.              (line   6)
  * DATAND:                                ATAND.               (line   6)
  * DATANH:                                ATANH.               (line   6)
+ * DATE_AND_TIME:                         DATE_AND_TIME.       (line   6)
  * date, current:                         DATE_AND_TIME.       (line   6)
  * date, current <1>:                     FDATE.               (line   6)
  * date, current <2>:                     IDATE.               (line   6)
  * DBESJ0:                                BESSEL_J0.           (line   6)
  * DBESJ1:                                BESSEL_J1.           (line   6)
  * DBESJN:                                BESSEL_JN.           (line   6)
*************** Keyword Index
*** 22915,22922 ****
  * ETIME:                                 ETIME.               (line   6)
  * Euclidean distance:                    HYPOT.               (line   6)
  * Euclidean vector norm:                 NORM2.               (line   6)
- * Events, EVENT_QUERY:                   EVENT_QUERY.         (line   6)
  * EVENT_QUERY:                           EVENT_QUERY.         (line   6)
  * EXECUTE_COMMAND_LINE:                  EXECUTE_COMMAND_LINE.
                                                                (line   6)
  * EXIT:                                  EXIT.                (line   6)
--- 22915,22922 ----
  * ETIME:                                 ETIME.               (line   6)
  * Euclidean distance:                    HYPOT.               (line   6)
  * Euclidean vector norm:                 NORM2.               (line   6)
  * EVENT_QUERY:                           EVENT_QUERY.         (line   6)
+ * Events, EVENT_QUERY:                   EVENT_QUERY.         (line   6)
  * EXECUTE_COMMAND_LINE:                  EXECUTE_COMMAND_LINE.
                                                                (line   6)
  * EXIT:                                  EXIT.                (line   6)
*************** Keyword Index
*** 23029,23034 ****
--- 23029,23039 ----
  * Generating C prototypes from Fortran BIND(C) enteties: Interoperability Options.
                                                                (line   6)
  * GERROR:                                GERROR.              (line   6)
+ * GET_COMMAND:                           GET_COMMAND.         (line   6)
+ * GET_COMMAND_ARGUMENT:                  GET_COMMAND_ARGUMENT.
+                                                               (line   6)
+ * GET_ENVIRONMENT_VARIABLE:              GET_ENVIRONMENT_VARIABLE.
+                                                               (line   6)
  * GETARG:                                GETARG.              (line   6)
  * GETCWD:                                GETCWD.              (line   6)
  * GETENV:                                GETENV.              (line   6)
*************** Keyword Index
*** 23036,23046 ****
  * GETLOG:                                GETLOG.              (line   6)
  * GETPID:                                GETPID.              (line   6)
  * GETUID:                                GETUID.              (line   6)
- * GET_COMMAND:                           GET_COMMAND.         (line   6)
- * GET_COMMAND_ARGUMENT:                  GET_COMMAND_ARGUMENT.
-                                                               (line   6)
- * GET_ENVIRONMENT_VARIABLE:              GET_ENVIRONMENT_VARIABLE.
-                                                               (line   6)
  * GMTIME:                                GMTIME.              (line   6)
  * GNU Compiler Collection:               GNU Fortran and GCC. (line   6)
  * GNU Fortran command options:           Invoking GNU Fortran.
--- 23041,23046 ----
*************** Keyword Index
*** 23092,23101 ****
  * IISHFT:                                ISHFT.               (line   6)
  * IISHFTC:                               ISHFTC.              (line   6)
  * IMAG:                                  AIMAG.               (line   6)
  * images, cosubscript to image index conversion: IMAGE_INDEX. (line   6)
  * images, index of this image:           THIS_IMAGE.          (line   6)
  * images, number of:                     NUM_IMAGES.          (line   6)
- * IMAGE_INDEX:                           IMAGE_INDEX.         (line   6)
  * IMAGPART:                              AIMAG.               (line   6)
  * IMOD:                                  MOD.                 (line   6)
  * IMVBITS:                               MVBITS.              (line   6)
--- 23092,23101 ----
  * IISHFT:                                ISHFT.               (line   6)
  * IISHFTC:                               ISHFTC.              (line   6)
  * IMAG:                                  AIMAG.               (line   6)
+ * IMAGE_INDEX:                           IMAGE_INDEX.         (line   6)
  * images, cosubscript to image index conversion: IMAGE_INDEX. (line   6)
  * images, index of this image:           THIS_IMAGE.          (line   6)
  * images, number of:                     NUM_IMAGES.          (line   6)
  * IMAGPART:                              AIMAG.               (line   6)
  * IMOD:                                  MOD.                 (line   6)
  * IMVBITS:                               MVBITS.              (line   6)
*************** Keyword Index
*** 23140,23153 ****
  * IOSTAT, end of record:                 IS_IOSTAT_EOR.       (line   6)
  * IPARITY:                               IPARITY.             (line   6)
  * IRAND:                                 IRAND.               (line   6)
  * ISATTY:                                ISATTY.              (line   6)
  * ISHFT:                                 ISHFT.               (line   6)
  * ISHFTC:                                ISHFTC.              (line   6)
  * ISIGN:                                 SIGN.                (line   6)
  * ISNAN:                                 ISNAN.               (line   6)
- * IS_IOSTAT_END:                         IS_IOSTAT_END.       (line   6)
- * IS_IOSTAT_EOR:                         IS_CONTIGUOUS.       (line   6)
- * IS_IOSTAT_EOR <1>:                     IS_IOSTAT_EOR.       (line   6)
  * ITIME:                                 ITIME.               (line   6)
  * IVDEP directive:                       IVDEP directive.     (line   6)
  * JIABS:                                 ABS.                 (line   6)
--- 23140,23153 ----
  * IOSTAT, end of record:                 IS_IOSTAT_EOR.       (line   6)
  * IPARITY:                               IPARITY.             (line   6)
  * IRAND:                                 IRAND.               (line   6)
+ * IS_IOSTAT_END:                         IS_IOSTAT_END.       (line   6)
+ * IS_IOSTAT_EOR:                         IS_CONTIGUOUS.       (line   6)
+ * IS_IOSTAT_EOR <1>:                     IS_IOSTAT_EOR.       (line   6)
  * ISATTY:                                ISATTY.              (line   6)
  * ISHFT:                                 ISHFT.               (line   6)
  * ISHFTC:                                ISHFTC.              (line   6)
  * ISIGN:                                 SIGN.                (line   6)
  * ISNAN:                                 ISNAN.               (line   6)
  * ITIME:                                 ITIME.               (line   6)
  * IVDEP directive:                       IVDEP directive.     (line   6)
  * JIABS:                                 ABS.                 (line   6)
*************** Keyword Index
*** 23227,23232 ****
--- 23227,23233 ----
  * LOC <1>:                               LOC.                 (line   6)
  * location of a variable in memory:      LOC.                 (line   6)
  * LOG:                                   LOG.                 (line   6)
+ * LOG_GAMMA:                             LOG_GAMMA.           (line   6)
  * LOG10:                                 LOG10.               (line   6)
  * logarithm function:                    LOG.                 (line   6)
  * logarithm function with base 10:       LOG10.               (line   6)
*************** Keyword Index
*** 23246,23252 ****
  * logical, variable representation:      Internal representation of LOGICAL variables.
                                                                (line   6)
  * login name:                            GETLOG.              (line   6)
- * LOG_GAMMA:                             LOG_GAMMA.           (line   6)
  * loop interchange, Fortran:             Code Gen Options.    (line 483)
  * loop interchange, warning:             Error and Warning Options.
                                                                (line 136)
--- 23247,23252 ----
*************** Keyword Index
*** 23317,23330 ****
  * moving allocation:                     MOVE_ALLOC.          (line   6)
  * multiply array elements:               PRODUCT.             (line   6)
  * MVBITS:                                MVBITS.              (line   6)
! * NAME:                                  OPEN( ... NAME=).    (line   6)
  * Namelist:                              Extensions to namelist.
                                                                (line   6)
  * Naming conventions:                    Naming conventions.  (line   6)
  * natural logarithm function:            LOG.                 (line   6)
  * NEAREST:                               NEAREST.             (line   6)
- * newline:                               NEW_LINE.            (line   6)
  * NEW_LINE:                              NEW_LINE.            (line   6)
  * NINT:                                  NINT.                (line   6)
  * Non-Fortran Main Program:              Non-Fortran Main Program.
                                                                (line   6)
--- 23317,23330 ----
  * moving allocation:                     MOVE_ALLOC.          (line   6)
  * multiply array elements:               PRODUCT.             (line   6)
  * MVBITS:                                MVBITS.              (line   6)
! * NAME:                                  OPEN( ... NAME=).    (line   6)
  * Namelist:                              Extensions to namelist.
                                                                (line   6)
  * Naming conventions:                    Naming conventions.  (line   6)
  * natural logarithm function:            LOG.                 (line   6)
  * NEAREST:                               NEAREST.             (line   6)
  * NEW_LINE:                              NEW_LINE.            (line   6)
+ * newline:                               NEW_LINE.            (line   6)
  * NINT:                                  NINT.                (line   6)
  * Non-Fortran Main Program:              Non-Fortran Main Program.
                                                                (line   6)
*************** Keyword Index
*** 23343,23355 ****
                                                                (line 172)
  * OpenMP:                                OpenMP.              (line   6)
  * OpenMP Allocators:                     Fortran Dialect Options.
!                                                               (line 194)
  * OpenMP parallel:                       Fortran Dialect Options.
!                                                               (line 182)
  * OpenMP SIMD:                           Fortran Dialect Options.
!                                                               (line 212)
  * operators, unary:                      Unary operators.     (line   6)
! * operators, xor:                        .XOR. operator.      (line   6)
  * options inquiry function:              COMPILER_OPTIONS.    (line   6)
  * options, code generation:              Code Gen Options.    (line   6)
  * options, debugging:                    Debugging Options.   (line   6)
--- 23343,23355 ----
                                                                (line 172)
  * OpenMP:                                OpenMP.              (line   6)
  * OpenMP Allocators:                     Fortran Dialect Options.
!                                                               (line 192)
  * OpenMP parallel:                       Fortran Dialect Options.
!                                                               (line 181)
  * OpenMP SIMD:                           Fortran Dialect Options.
!                                                               (line 210)
  * operators, unary:                      Unary operators.     (line   6)
! * operators, xor:                        .XOR. operator.      (line   6)
  * options inquiry function:              COMPILER_OPTIONS.    (line   6)
  * options, code generation:              Code Gen Options.    (line   6)
  * options, debugging:                    Debugging Options.   (line   6)
*************** Keyword Index
*** 23369,23382 ****
  * options, preprocessor:                 Preprocessing Options.
                                                                (line   6)
  * options, real kind type promotion:     Fortran Dialect Options.
!                                                               (line 289)
  * options, run-time:                     Code Gen Options.    (line   6)
  * options, runtime:                      Runtime Options.     (line   6)
  * options, warnings:                     Error and Warning Options.
                                                                (line   6)
  * OR:                                    OR.                  (line   6)
- * output, newline:                       NEW_LINE.            (line   6)
  * OUT_OF_RANGE:                          OUT_OF_RANGE.        (line   6)
  * overflow handling:                     Behavior on integer overflow.
                                                                (line   6)
  * PACK:                                  PACK.                (line   6)
--- 23369,23382 ----
  * options, preprocessor:                 Preprocessing Options.
                                                                (line   6)
  * options, real kind type promotion:     Fortran Dialect Options.
!                                                               (line 287)
  * options, run-time:                     Code Gen Options.    (line   6)
  * options, runtime:                      Runtime Options.     (line   6)
  * options, warnings:                     Error and Warning Options.
                                                                (line   6)
  * OR:                                    OR.                  (line   6)
  * OUT_OF_RANGE:                          OUT_OF_RANGE.        (line   6)
+ * output, newline:                       NEW_LINE.            (line   6)
  * overflow handling:                     Behavior on integer overflow.
                                                                (line   6)
  * PACK:                                  PACK.                (line   6)
*************** Keyword Index
*** 23570,23576 ****
  * sign copying:                          SIGN.                (line   6)
  * SIGNAL:                                SIGNAL.              (line   6)
  * SIMD:                                  Fortran Dialect Options.
!                                                               (line 212)
  * SIN:                                   SIN.                 (line   6)
  * SIND:                                  SIND.                (line   6)
  * sine:                                  SIN.                 (line   6)
--- 23570,23576 ----
  * sign copying:                          SIGN.                (line   6)
  * SIGNAL:                                SIGNAL.              (line   6)
  * SIMD:                                  Fortran Dialect Options.
!                                                               (line 210)
  * SIN:                                   SIN.                 (line   6)
  * SIND:                                  SIND.                (line   6)
  * sine:                                  SIN.                 (line   6)
*************** Keyword Index
*** 23642,23647 ****
--- 23642,23648 ----
  * syntax checking:                       Error and Warning Options.
                                                                (line  32)
  * SYSTEM:                                SYSTEM.              (line   6)
+ * SYSTEM_CLOCK:                          SYSTEM_CLOCK.        (line   6)
  * system, error handling:                GERROR.              (line   6)
  * system, error handling <1>:            IERRNO.              (line   6)
  * system, error handling <2>:            PERROR.              (line   6)
*************** Keyword Index
*** 23658,23664 ****
  * system, user ID:                       GETUID.              (line   6)
  * system, working directory:             CHDIR.               (line   6)
  * system, working directory <1>:         GETCWD.              (line   6)
- * SYSTEM_CLOCK:                          SYSTEM_CLOCK.        (line   6)
  * tabulators:                            Error and Warning Options.
                                                                (line 201)
  * TAN:                                   TAN.                 (line   6)
--- 23659,23664 ----
*************** Keyword Index
*** 23844,24316 ****
  
  
  Tag Table:
! Node: Top1950
! Node: Introduction3270
! Node: About GNU Fortran3617
! Node: GNU Fortran and GCC8603
! Node: Standards10680
! Node: Fortran 95 status12119
! Node: Fortran 2003 status13093
! Node: Fortran 2008 status13543
! Node: Fortran 2018 status14201
! Node: Invoking GNU Fortran15804
! Node: Option Summary17694
! Node: Fortran Dialect Options22097
! Ref: -funsigned39276
! Node: Preprocessing Options39325
! Node: Error and Warning Options49177
! Node: Debugging Options61661
! Node: Directory Options65336
! Node: Link Options66771
! Node: Runtime Options67902
! Node: Developer Options70158
! Node: Code Gen Options72566
! Node: Interoperability Options95214
! Node: Environment Variables97284
! Node: Runtime97897
! Node: TMPDIR99068
! Node: GFORTRAN_STDIN_UNIT99738
! Node: GFORTRAN_STDOUT_UNIT100120
! Node: GFORTRAN_STDERR_UNIT100521
! Node: GFORTRAN_UNBUFFERED_ALL100923
! Node: GFORTRAN_UNBUFFERED_PRECONNECTED101450
! Node: GFORTRAN_SHOW_LOCUS102090
! Node: GFORTRAN_OPTIONAL_PLUS102586
! Node: GFORTRAN_LIST_SEPARATOR103064
! Node: GFORTRAN_CONVERT_UNIT103669
! Node: GFORTRAN_ERROR_BACKTRACE106952
! Node: GFORTRAN_FORMATTED_BUFFER_SIZE107548
! Node: GFORTRAN_UNFORMATTED_BUFFER_SIZE107996
! Node: Compiler Characteristics108425
! Node: KIND Type Parameters109223
! Node: Internal representation of LOGICAL variables110686
! Node: Evaluation of logical expressions111547
! Node: MAX and MIN intrinsics with REAL NaN arguments112394
! Node: Thread-safety of the runtime library113227
! Node: Data consistency and durability115632
! Node: Files opened without an explicit ACTION= specifier118729
! Node: File operations on symbolic links119424
! Node: File format of unformatted sequential files120529
! Node: Asynchronous I/O122907
! Node: Behavior on integer overflow123643
! Node: Extensions124415
! Node: Extensions implemented in GNU Fortran125074
! Node: Old-style kind specifications127014
! Node: Old-style variable initialization128137
! Node: Extensions to namelist129448
! Node: X format descriptor without count field131929
! Node: Commas in FORMAT specifications132456
! Node: Missing period in FORMAT specifications133209
! Node: Default widths for F/G/I format descriptors133800
! Node: I/O item lists134496
! Node: Q exponent-letter134885
! Node: BOZ literal constants135474
! Node: Real array indices137051
! Node: Unary operators137350
! Node: Implicitly convert LOGICAL and INTEGER values137764
! Node: Hollerith constants support138723
! Node: Character conversion140932
! Node: Cray pointers141809
! Node: CONVERT specifier147281
! Node: OpenMP149591
! Node: OpenACC152066
! Node: Argument list functions153280
! Node: Read/Write after EOF marker154923
! Node: STRUCTURE and RECORD155526
! Node: UNION and MAP160603
! Node: Type variants for integer intrinsics163570
! Node: AUTOMATIC and STATIC attributes165465
! Node: Form feed as whitespace166988
! Node: TYPE as an alias for PRINT167541
! Node: %LOC as an rvalue168010
! Node: .XOR. operator168657
! Node: Bitwise logical operators169061
! Node: Extended I/O specifiers170565
! Node: Legacy PARAMETER statements174285
! Node: Default exponents174896
! Node: Extensions not implemented in GNU Fortran175248
! Node: ENCODE and DECODE statements176273
! Node: Variable FORMAT expressions177604
! Node: Alternate complex function syntax178708
! Node: Volatile COMMON blocks179256
! Node: OPEN( ... NAME=)179758
! Node: Q edit descriptor180186
! Node: Experimental features for future Fortran versions181138
! Node: Unsigned integers181900
! Node: Mixed-Language Programming186462
! Node: Interoperability with C187695
! Node: Intrinsic Types189071
! Node: Derived Types and struct190092
! Node: Interoperable Global Variables191434
! Node: Interoperable Subroutines and Functions192709
! Node: Working with C Pointers196200
! Node: Further Interoperability of Fortran with C200863
! Node: Generating C prototypes from Fortran202252
! Node: GNU Fortran Compiler Directives202950
! Node: ATTRIBUTES directive203326
! Node: UNROLL directive207152
! Node: BUILTIN directive207801
! Node: IVDEP directive208643
! Node: VECTOR directive209560
! Node: NOVECTOR directive210070
! Node: Non-Fortran Main Program210567
! Node: _gfortran_set_args212754
! Node: _gfortran_set_options213694
! Node: _gfortran_set_convert217423
! Node: _gfortran_set_record_marker218293
! Node: _gfortran_set_fpe219105
! Node: _gfortran_set_max_subrecord_length220303
! Node: Naming and argument-passing conventions221228
! Node: Naming conventions221947
! Node: Argument passing conventions223415
! Node: Coarray Programming228788
! Node: Type and enum ABI Documentation229035
! Node: caf_token_t229333
! Node: caf_register_t229569
! Node: caf_deregister_t230842
! Node: caf_reference_t231368
! Node: caf_team_t236072
! Node: Function ABI Documentation236371
! Node: _gfortran_caf_init238949
! Node: _gfortran_caf_finish240380
! Node: _gfortran_caf_this_image241322
! Node: _gfortran_caf_num_images242079
! Node: _gfortran_caf_image_status243193
! Node: _gfortran_caf_failed_images244316
! Node: _gfortran_caf_stopped_images245489
! Node: _gfortran_caf_register246665
! Node: _gfortran_caf_deregister250853
! Node: _gfortran_caf_register_accessor252475
! Node: _gfortran_caf_register_accessors_finish254636
! Node: _gfortran_caf_get_remote_function_index255704
! Node: _gfortran_caf_get_from_remote257502
! Node: _gfortran_caf_is_present_on_remote262440
! Node: _gfortran_caf_send_to_remote264209
! Node: _gfortran_caf_transfer_between_remotes268512
! Node: _gfortran_caf_sendget_by_ref275347
! Node: _gfortran_caf_lock279650
! Node: _gfortran_caf_unlock281436
! Node: _gfortran_caf_event_post282914
! Node: _gfortran_caf_event_wait284360
! Node: _gfortran_caf_event_query286463
! Node: _gfortran_caf_sync_all287797
! Node: _gfortran_caf_sync_images288722
! Node: _gfortran_caf_sync_memory290253
! Node: _gfortran_caf_error_stop291249
! Node: _gfortran_caf_error_stop_str291853
! Node: _gfortran_caf_fail_image292559
! Node: _gfortran_caf_atomic_define293098
! Node: _gfortran_caf_atomic_ref294410
! Node: _gfortran_caf_atomic_cas295711
! Node: _gfortran_caf_atomic_op297462
! Node: _gfortran_caf_co_broadcast299555
! Node: _gfortran_caf_co_max300657
! Node: _gfortran_caf_co_min302281
! Node: _gfortran_caf_co_sum303899
! Node: _gfortran_caf_co_reduce305437
! Node: Intrinsic Procedures308079
! Node: Introduction to Intrinsics325681
! Node: ABORT327858
! Node: ABS328608
! Node: ACCESS330334
! Node: ACHAR332237
! Node: ACOS333454
! Node: ACOSD334745
! Node: ACOSH335959
! Node: ADJUSTL337047
! Node: ADJUSTR337991
! Node: AIMAG338944
! Node: AINT340396
! Node: ALARM341982
! Node: ALL343607
! Node: ALLOCATED345533
! Node: AND346655
! Node: ANINT348397
! Node: ANY349879
! Node: ASIN351807
! Node: ASIND353087
! Node: ASINH354279
! Node: ASSOCIATED355377
! Node: ATAN358390
! Node: ATAND359868
! Node: ATAN2361147
! Node: ATAN2D363018
! Node: ATANH364907
! Node: ATOMIC_ADD366005
! Node: ATOMIC_AND367556
! Node: ATOMIC_CAS369161
! Node: ATOMIC_DEFINE371032
! Node: ATOMIC_FETCH_ADD372773
! Node: ATOMIC_FETCH_AND374592
! Node: ATOMIC_FETCH_OR376399
! Node: ATOMIC_FETCH_XOR378193
! Node: ATOMIC_OR379993
! Node: ATOMIC_REF381595
! Node: ATOMIC_XOR383513
! Node: BACKTRACE385115
! Node: BESSEL_J0385697
! Node: BESSEL_J1386800
! Node: BESSEL_JN387904
! Node: BESSEL_Y0389812
! Node: BESSEL_Y1390854
! Node: BESSEL_YN391896
! Node: BGE393815
! Node: BGT394668
! Node: BIT_SIZE395478
! Node: BLE396389
! Node: BLT397232
! Node: BTEST398030
! Node: C_ASSOCIATED399550
! Node: C_F_POINTER400742
! Node: C_F_PROCPOINTER402184
! Node: C_FUNLOC403698
! Node: C_LOC405081
! Node: C_SIZEOF406372
! Node: CEILING407783
! Node: CHAR408798
! Node: CHDIR410115
! Node: CHMOD411291
! Node: CMPLX413208
! Node: CO_BROADCAST414752
! Node: CO_MAX416581
! Node: CO_MIN418491
! Node: CO_REDUCE420387
! Node: CO_SUM423966
! Node: COMMAND_ARGUMENT_COUNT425949
! Node: COMPILER_OPTIONS426873
! Node: COMPILER_VERSION427903
! Node: COMPLEX428873
! Node: CONJG430014
! Node: COS431072
! Node: COSD432445
! Node: COSH433680
! Node: COTAN434858
! Node: COTAND436102
! Node: COUNT437346
! Node: CPU_TIME439373
! Node: CSHIFT440725
! Node: CTIME442432
! Node: DATE_AND_TIME443947
! Node: DBLE446336
! Node: DCMPLX447133
! Node: DIGITS448317
! Node: DIM449357
! Node: DOT_PRODUCT450767
! Node: DPROD452787
! Node: DREAL453751
! Node: DSHIFTL454419
! Node: DSHIFTR455828
! Node: DTIME457238
! Node: EOSHIFT459940
! Node: EPSILON462119
! Node: ERF462848
! Node: ERFC463716
! Node: ERFC_SCALED464613
! Node: ETIME465308
! Node: EVENT_QUERY467480
! Node: EXECUTE_COMMAND_LINE469063
! Node: EXIT471839
! Node: EXP472724
! Node: EXPONENT473880
! Node: EXTENDS_TYPE_OF474646
! Node: FDATE475506
! Node: FGET476994
! Node: FGETC478833
! Node: FINDLOC480655
! Node: FLOOR483299
! Node: FLUSH484297
! Node: FNUM486179
! Node: FPUT486906
! Node: FPUTC488552
! Node: FRACTION490345
! Node: FREE491251
! Node: FSEEK492096
! Node: FSTAT494404
! Node: FTELL495507
! Node: GAMMA496491
! Node: GERROR497573
! Node: GETARG498328
! Node: GET_COMMAND500065
! Node: GET_COMMAND_ARGUMENT501446
! Node: GETCWD503495
! Node: GETENV504477
! Node: GET_ENVIRONMENT_VARIABLE505906
! Node: GETGID508066
! Node: GETLOG508610
! Node: GETPID509466
! Node: GETUID510203
! Node: GMTIME510726
! Node: HOSTNM512503
! Node: HUGE513426
! Node: HYPOT514238
! Node: IACHAR515066
! Node: IALL516247
! Node: IAND517834
! Node: IANY519721
! Node: IARGC521317
! Node: IBCLR522353
! Node: IBITS523629
! Node: IBSET525152
! Node: ICHAR526423
! Node: IDATE528641
! Node: IEOR529943
! Node: IERRNO531723
! Node: IMAGE_INDEX532273
! Node: INDEX intrinsic533301
! Node: INT534924
! Node: INT2536959
! Node: INT8537667
! Node: IOR538375
! Node: IPARITY540142
! Node: IRAND541799
! Node: IS_CONTIGUOUS543160
! Node: IS_IOSTAT_END544331
! Node: IS_IOSTAT_EOR545442
! Node: ISATTY546575
! Node: ISHFT547359
! Node: ISHFTC548927
! Node: ISNAN550742
! Node: ITIME551512
! Node: KILL552812
! Node: KIND553924
! Node: LBOUND554824
! Node: LCOBOUND556170
! Node: LEADZ557313
! Node: LEN558191
! Node: LEN_TRIM559534
! Node: LGE560534
! Node: LGT562149
! Node: LINK563729
! Node: LLE564775
! Node: LLT566377
! Node: LNBLNK567950
! Node: LOC568735
! Node: LOG569469
! Node: LOG10570903
! Node: LOG_GAMMA571883
! Node: LOGICAL573083
! Node: LSHIFT573909
! Node: LSTAT575043
! Node: LTIME576278
! Node: MALLOC577977
! Node: MASKL579441
! Node: MASKR580210
! Node: MATMUL580982
! Node: MAX582384
! Node: MAXEXPONENT583867
! Node: MAXLOC584686
! Node: MAXVAL587407
! Node: MCLOCK589213
! Node: MCLOCK8590253
! Node: MERGE591496
! Node: MERGE_BITS592250
! Node: MIN593366
! Node: MINEXPONENT594851
! Node: MINLOC595484
! Node: MINVAL598207
! Node: MOD599946
! Node: MODULO602292
! Node: MOVE_ALLOC603930
! Node: MVBITS604961
! Node: NEAREST606662
! Node: NEW_LINE607764
! Node: NINT608539
! Node: NORM2609955
! Node: NOT611096
! Node: NULL612316
! Node: NUM_IMAGES613226
! Node: OR614932
! Node: OUT_OF_RANGE616670
! Node: PACK619031
! Node: PARITY621087
! Node: PERROR622310
! Node: POPCNT622937
! Node: POPPAR623821
! Node: PRECISION624887
! Node: PRESENT625827
! Node: PRODUCT626941
! Node: RADIX628548
! Node: RAN629362
! Node: RAND629823
! Node: RANDOM_INIT631163
! Node: RANDOM_NUMBER633281
! Node: RANDOM_SEED634777
! Node: RANGE637254
! Node: RANK638030
! Node: REAL638813
! Node: RENAME641012
! Node: REPEAT642036
! Node: RESHAPE642766
! Node: RRSPACING644235
! Node: RSHIFT644930
! Node: SAME_TYPE_AS646120
! Node: SCALE646954
! Node: SCAN647737
! Node: SECNDS649302
! Node: SECOND650396
! Node: SELECTED_CHAR_KIND651274
! Node: SELECTED_INT_KIND652871
! Node: SELECTED_LOGICAL_KIND654053
! Node: SELECTED_REAL_KIND655155
! Node: SELECTED_UNSIGNED_KIND657858
! Node: SET_EXPONENT658943
! Node: SHAPE659936
! Node: SHIFTA661367
! Node: SHIFTL662425
! Node: SHIFTR663352
! Node: SIGN664220
! Node: SIGNAL665513
! Node: SIN667475
! Node: SIND668657
! Node: SINH669864
! Node: SIZE670819
! Node: SIZEOF672145
! Node: SLEEP673803
! Node: SPACING674366
! Node: SPREAD675382
! Node: SQRT676535
! Node: SRAND677770
! Node: STAT679016
! Node: STORAGE_SIZE682200
! Node: SUM683089
! Node: SYMLNK684654
! Node: SYSTEM685796
! Node: SYSTEM_CLOCK687053
! Node: TAN689904
! Node: TAND690980
! Node: TANH691965
! Node: THIS_IMAGE693130
! Node: TIME695436
! Node: TIME8696629
! Node: TINY697846
! Node: TRAILZ698449
! Node: TRANSFER699284
! Node: TRANSPOSE701322
! Node: TRIM702014
! Node: TTYNAM702877
! Node: UBOUND703795
! Node: UCOBOUND705193
! Node: UINT706337
! Node: UMASK706952
! Node: UMASKL707632
! Node: UMASKR708483
! Node: UNLINK709336
! Node: UNPACK710324
! Node: VERIFY711626
! Node: XOR713362
! Node: Intrinsic Modules715179
! Node: ISO_FORTRAN_ENV715466
! Node: ISO_C_BINDING720123
! Node: IEEE modules725572
! Node: OpenMP Modules OMP_LIB and OMP_LIB_KINDS726712
! Node: OpenACC Module OPENACC730928
! Node: Contributing731854
! Node: Contributors732684
! Node: Projects734338
! Node: Copying735516
! Node: GNU Free Documentation License773067
! Node: Funding798196
! Node: Option Index800722
! Node: Keyword Index820414
  
  End Tag Table
--- 23844,24321 ----
  
  
  Tag Table:
! Node: Top1952
! Node: Introduction3284
! Node: About GNU Fortran3631
! Node: GNU Fortran and GCC8741
! Node: Standards10942
! Node: Fortran 95 status12385
! Node: Fortran 2003 status13367
! Node: Fortran 2008 status13817
! Node: Fortran 2018 status14491
! Node: Invoking GNU Fortran16192
! Node: Option Summary18126
! Node: Fortran Dialect Options22529
! Ref: -funsigned40676
! Node: Preprocessing Options40725
! Node: Error and Warning Options51009
! Node: Debugging Options64121
! Node: Directory Options67956
! Node: Link Options69467
! Node: Runtime Options70626
! Node: Developer Options72974
! Node: Code Gen Options75438
! Node: Interoperability Options98954
! Node: Environment Variables101092
! Node: Runtime101717
! Node: TMPDIR102892
! Node: GFORTRAN_STDIN_UNIT103594
! Node: GFORTRAN_STDOUT_UNIT103980
! Node: GFORTRAN_STDERR_UNIT104385
! Node: GFORTRAN_UNBUFFERED_ALL104791
! Node: GFORTRAN_UNBUFFERED_PRECONNECTED105346
! Node: GFORTRAN_SHOW_LOCUS106018
! Node: GFORTRAN_OPTIONAL_PLUS106542
! Node: GFORTRAN_LIST_SEPARATOR107048
! Node: GFORTRAN_CONVERT_UNIT107661
! Node: GFORTRAN_ERROR_BACKTRACE111072
! Node: GFORTRAN_FORMATTED_BUFFER_SIZE111704
! Node: GFORTRAN_UNFORMATTED_BUFFER_SIZE112160
! Node: Compiler Characteristics112597
! Node: KIND Type Parameters113395
! Node: Internal representation of LOGICAL variables114954
! Node: Evaluation of logical expressions115859
! Node: MAX and MIN intrinsics with REAL NaN arguments116718
! Node: Thread-safety of the runtime library117595
! Node: Data consistency and durability120080
! Node: Files opened without an explicit ACTION= specifier123237
! Node: File operations on symbolic links123956
! Node: File format of unformatted sequential files125091
! Node: Asynchronous I/O127485
! Node: Behavior on integer overflow128233
! Node: Extensions129017
! Node: Extensions implemented in GNU Fortran129676
! Node: Old-style kind specifications131648
! Node: Old-style variable initialization132827
! Node: Extensions to namelist134162
! Node: X format descriptor without count field136707
! Node: Commas in FORMAT specifications137246
! Node: Missing period in FORMAT specifications138011
! Node: Default widths for F/G/I format descriptors138610
! Node: I/O item lists139322
! Node: Q exponent-letter139723
! Node: BOZ literal constants140348
! Node: Real array indices142025
! Node: Unary operators142328
! Node: Implicitly convert LOGICAL and INTEGER values142742
! Node: Hollerith constants support143765
! Node: Character conversion146034
! Node: Cray pointers146935
! Node: CONVERT specifier152527
! Node: OpenMP154937
! Node: OpenACC157484
! Node: Argument list functions158754
! Node: Read/Write after EOF marker160449
! Node: STRUCTURE and RECORD161068
! Node: UNION and MAP166221
! Node: Type variants for integer intrinsics169221
! Node: AUTOMATIC and STATIC attributes171380
! Node: Form feed as whitespace172967
! Node: TYPE as an alias for PRINT173520
! Node: %LOC as an rvalue174009
! Node: .XOR. operator174676
! Node: Bitwise logical operators175100
! Node: Extended I/O specifiers176688
! Node: Legacy PARAMETER statements180536
! Node: Default exponents181167
! Node: Extensions not implemented in GNU Fortran181531
! Node: ENCODE and DECODE statements182556
! Node: Variable FORMAT expressions183915
! Node: Alternate complex function syntax185031
! Node: Volatile COMMON blocks185595
! Node: OPEN( ... NAME=)186129
! Node: Q edit descriptor186581
! Node: Experimental features for future Fortran versions187569
! Node: Unsigned integers188331
! Node: Mixed-Language Programming193445
! Node: Interoperability with C194702
! Node: Intrinsic Types196114
! Node: Derived Types and struct197167
! Node: Interoperable Global Variables198537
! Node: Interoperable Subroutines and Functions199836
! Node: Working with C Pointers203379
! Node: Further Interoperability of Fortran with C208098
! Node: Generating C prototypes from Fortran209511
! Node: GNU Fortran Compiler Directives210225
! Node: ATTRIBUTES directive210601
! Node: UNROLL directive214611
! Node: BUILTIN directive215276
! Node: IVDEP directive216138
! Node: VECTOR directive217071
! Node: NOVECTOR directive217597
! Node: Non-Fortran Main Program218110
! Node: _gfortran_set_args220325
! Node: _gfortran_set_options221281
! Node: _gfortran_set_convert225126
! Node: _gfortran_set_record_marker226008
! Node: _gfortran_set_fpe226832
! Node: _gfortran_set_max_subrecord_length228070
! Node: Naming and argument-passing conventions229007
! Node: Naming conventions229726
! Node: Argument passing conventions231266
! Node: Coarray Programming236793
! Node: Type and enum ABI Documentation237040
! Node: caf_token_t237338
! Node: caf_register_t237582
! Node: caf_deregister_t238875
! Node: caf_reference_t239409
! Node: caf_team_t244145
! Node: Function ABI Documentation244448
! Node: _gfortran_caf_init247026
! Node: _gfortran_caf_finish248485
! Node: _gfortran_caf_this_image249439
! Node: _gfortran_caf_num_images250216
! Node: _gfortran_caf_image_status251346
! Node: _gfortran_caf_failed_images252489
! Node: _gfortran_caf_stopped_images253670
! Node: _gfortran_caf_register254854
! Node: _gfortran_caf_deregister259134
! Node: _gfortran_caf_register_accessor260772
! Node: _gfortran_caf_register_accessors_finish262965
! Node: _gfortran_caf_get_remote_function_index264045
! Node: _gfortran_caf_get_from_remote265867
! Node: _gfortran_caf_is_present_on_remote270861
! Node: _gfortran_caf_send_to_remote272646
! Node: _gfortran_caf_transfer_between_remotes277009
! Node: _gfortran_caf_sendget_by_ref283944
! Node: _gfortran_caf_lock288287
! Node: _gfortran_caf_unlock290089
! Node: _gfortran_caf_event_post291575
! Node: _gfortran_caf_event_wait293033
! Node: _gfortran_caf_event_query295148
! Node: _gfortran_caf_sync_all296494
! Node: _gfortran_caf_sync_images297427
! Node: _gfortran_caf_sync_memory298978
! Node: _gfortran_caf_error_stop299986
! Node: _gfortran_caf_error_stop_str300602
! Node: _gfortran_caf_fail_image301320
! Node: _gfortran_caf_atomic_define301871
! Node: _gfortran_caf_atomic_ref303203
! Node: _gfortran_caf_atomic_cas304524
! Node: _gfortran_caf_atomic_op306299
! Node: _gfortran_caf_co_broadcast308436
! Node: _gfortran_caf_co_max309546
! Node: _gfortran_caf_co_min311178
! Node: _gfortran_caf_co_sum312804
! Node: _gfortran_caf_co_reduce314350
! Node: Intrinsic Procedures317016
! Node: Introduction to Intrinsics335770
! Node: ABORT338015
! Node: ABS338785
! Node: ACCESS340667
! Node: ACHAR342638
! Node: ACOS343883
! Node: ACOSD345222
! Node: ACOSH346480
! Node: ADJUSTL347600
! Node: ADJUSTR348564
! Node: AIMAG349537
! Node: AINT351073
! Node: ALARM352711
! Node: ALL354396
! Node: ALLOCATED356370
! Node: AND357536
! Node: ANINT359314
! Node: ANY360852
! Node: ASIN362832
! Node: ASIND364160
! Node: ASINH365396
! Node: ASSOCIATED366526
! Node: ATAN369567
! Node: ATAND371097
! Node: ATAN2372416
! Node: ATAN2D374327
! Node: ATANH376256
! Node: ATOMIC_ADD377386
! Node: ATOMIC_AND378965
! Node: ATOMIC_CAS380598
! Node: ATOMIC_DEFINE382501
! Node: ATOMIC_FETCH_ADD384274
! Node: ATOMIC_FETCH_AND386125
! Node: ATOMIC_FETCH_OR387960
! Node: ATOMIC_FETCH_XOR389782
! Node: ATOMIC_OR391610
! Node: ATOMIC_REF393240
! Node: ATOMIC_XOR395190
! Node: BACKTRACE396820
! Node: BESSEL_J0397422
! Node: BESSEL_J1398561
! Node: BESSEL_JN399701
! Node: BESSEL_Y0401677
! Node: BESSEL_Y1402755
! Node: BESSEL_YN403833
! Node: BGE405820
! Node: BGT406709
! Node: BIT_SIZE407555
! Node: BLE408498
! Node: BLT409377
! Node: BTEST410211
! Node: C_ASSOCIATED411827
! Node: C_F_POINTER413047
! Node: C_F_PROCPOINTER414521
! Node: C_FUNLOC416059
! Node: C_LOC417458
! Node: C_SIZEOF418765
! Node: CEILING420224
! Node: CHAR421267
! Node: CHDIR422620
! Node: CHMOD423816
! Node: CMPLX425789
! Node: CO_BROADCAST427393
! Node: CO_MAX429238
! Node: CO_MIN431160
! Node: CO_REDUCE433068
! Node: CO_SUM436663
! Node: COMMAND_ARGUMENT_COUNT438658
! Node: COMPILER_OPTIONS439598
! Node: COMPILER_VERSION440648
! Node: COMPLEX441634
! Node: CONJG442831
! Node: COS443929
! Node: COSD445386
! Node: COSH446697
! Node: COTAN447923
! Node: COTAND449227
! Node: COUNT450523
! Node: CPU_TIME452586
! Node: CSHIFT453970
! Node: CTIME455709
! Node: DATE_AND_TIME457256
! Node: DBLE459721
! Node: DCMPLX460542
! Node: DIGITS461766
! Node: DIM462838
! Node: DOT_PRODUCT464316
! Node: DPROD466440
! Node: DREAL467444
! Node: DSHIFTL468132
! Node: DSHIFTR469593
! Node: DTIME471055
! Node: EOSHIFT473821
! Node: EPSILON476040
! Node: ERF476785
! Node: ERFC477685
! Node: ERFC_SCALED478614
! Node: ETIME479329
! Node: EVENT_QUERY481553
! Node: EXECUTE_COMMAND_LINE483160
! Node: EXIT486040
! Node: EXP486945
! Node: EXPONENT488181
! Node: EXTENDS_TYPE_OF488967
! Node: FDATE489835
! Node: FGET491351
! Node: FGETC493218
! Node: FINDLOC495072
! Node: FLOOR497760
! Node: FLUSH498786
! Node: FNUM500704
! Node: FPUT501455
! Node: FPUTC503129
! Node: FRACTION504954
! Node: FREE505888
! Node: FSEEK506761
! Node: FSTAT509117
! Node: FTELL510252
! Node: GAMMA511256
! Node: GERROR512370
! Node: GETARG513141
! Node: GET_COMMAND514898
! Node: GET_COMMAND_ARGUMENT516299
! Node: GETCWD518376
! Node: GETENV519374
! Node: GET_ENVIRONMENT_VARIABLE520827
! Node: GETGID523027
! Node: GETLOG523591
! Node: GETPID524471
! Node: GETUID525224
! Node: GMTIME525767
! Node: HOSTNM527572
! Node: HUGE528515
! Node: HYPOT529359
! Node: IACHAR530203
! Node: IALL531416
! Node: IAND533039
! Node: IANY535018
! Node: IARGC536650
! Node: IBCLR537702
! Node: IBITS539066
! Node: IBSET540689
! Node: ICHAR542048
! Node: IDATE544326
! Node: IEOR545644
! Node: IERRNO547516
! Node: IMAGE_INDEX548082
! Node: INDEX intrinsic549118
! Node: INT550793
! Node: INT2552940
! Node: INT8553684
! Node: IOR554428
! Node: IPARITY556291
! Node: IRAND557984
! Node: IS_CONTIGUOUS559377
! Node: IS_IOSTAT_END560568
! Node: IS_IOSTAT_EOR561719
! Node: ISATTY562892
! Node: ISHFT563696
! Node: ISHFTC565356
! Node: ISNAN567271
! Node: ITIME568069
! Node: KILL569385
! Node: KIND570537
! Node: LBOUND571473
! Node: LCOBOUND572839
! Node: LEADZ574002
! Node: LEN574908
! Node: LEN_TRIM576287
! Node: LGE577311
! Node: LGT578998
! Node: LINK580650
! Node: LLE581728
! Node: LLT583402
! Node: LNBLNK585047
! Node: LOC585856
! Node: LOG586610
! Node: LOG10588136
! Node: LOG_GAMMA589164
! Node: LOGICAL590420
! Node: LSHIFT591270
! Node: LSTAT592440
! Node: LTIME593707
! Node: MALLOC595434
! Node: MASKL596942
! Node: MASKR597735
! Node: MATMUL598531
! Node: MAX600005
! Node: MAXEXPONENT601572
! Node: MAXLOC602415
! Node: MAXVAL605196
! Node: MCLOCK607070
! Node: MCLOCK8608138
! Node: MERGE609421
! Node: MERGE_BITS610195
! Node: MIN611335
! Node: MINEXPONENT612904
! Node: MINLOC613565
! Node: MINVAL616348
! Node: MOD618139
! Node: MODULO620613
! Node: MOVE_ALLOC622315
! Node: MVBITS623374
! Node: NEAREST625187
! Node: NEW_LINE626345
! Node: NINT627136
! Node: NORM2628600
! Node: NOT629757
! Node: NULL631065
! Node: NUM_IMAGES631983
! Node: OR633701
! Node: OUT_OF_RANGE635475
! Node: PACK637916
! Node: PARITY639996
! Node: PERROR641243
! Node: POPCNT641890
! Node: POPPAR642798
! Node: PRECISION643896
! Node: PRESENT644864
! Node: PRODUCT645994
! Node: RADIX647645
! Node: RAN648483
! Node: RAND648956
! Node: RANDOM_INIT650328
! Node: RANDOM_NUMBER652502
! Node: RANDOM_SEED654026
! Node: RANGE656559
! Node: RANK657379
! Node: REAL658178
! Node: RENAME660513
! Node: REPEAT661569
! Node: RESHAPE662319
! Node: RRSPACING663804
! Node: RSHIFT664519
! Node: SAME_TYPE_AS665741
! Node: SCALE666583
! Node: SCAN667394
! Node: SECNDS668995
! Node: SECOND670109
! Node: SELECTED_CHAR_KIND671011
! Node: SELECTED_INT_KIND672620
! Node: SELECTED_LOGICAL_KIND673822
! Node: SELECTED_REAL_KIND674944
! Node: SELECTED_UNSIGNED_KIND677759
! Node: SET_EXPONENT678868
! Node: SHAPE679885
! Node: SHIFTA681332
! Node: SHIFTL682422
! Node: SHIFTR683381
! Node: SIGN684277
! Node: SIGNAL685634
! Node: SIN687660
! Node: SIND688922
! Node: SINH690205
! Node: SIZE691192
! Node: SIZEOF692538
! Node: SLEEP694232
! Node: SPACING694807
! Node: SPREAD695835
! Node: SQRT697004
! Node: SRAND698327
! Node: STAT699633
! Node: STORAGE_SIZE702897
! Node: SUM703794
! Node: SYMLNK705403
! Node: SYSTEM706585
! Node: SYSTEM_CLOCK707878
! Node: TAN710789
! Node: TAND711909
! Node: TANH712934
! Node: THIS_IMAGE714147
! Node: TIME716473
! Node: TIME8717686
! Node: TINY718935
! Node: TRAILZ719562
! Node: TRANSFER720425
! Node: TRANSPOSE722487
! Node: TRIM723199
! Node: TTYNAM724078
! Node: UBOUND725020
! Node: UCOBOUND726438
! Node: UINT727602
! Node: UMASK728249
! Node: UMASKL728953
! Node: UMASKR729828
! Node: UNLINK730705
! Node: UNPACK731721
! Node: VERIFY733043
! Node: XOR734815
! Node: Intrinsic Modules736668
! Node: ISO_FORTRAN_ENV736955
! Node: ISO_C_BINDING741836
! Node: IEEE modules748093
! Node: OpenMP Modules OMP_LIB and OMP_LIB_KINDS749277
! Node: OpenACC Module OPENACC753889
! Node: Contributing754851
! Node: Contributors755681
! Node: Projects757413
! Node: Copying758591
! Node: GNU Free Documentation License796157
! Node: Funding821289
! Node: Option Index823814
! Node: Keyword Index843518
  
  End Tag Table
+ 
+ 
+ Local Variables:
+ coding: utf-8
+ End:
diff -Nrcpad gcc-15.2.0/gcc/fortran/interface.cc gcc-15.3.0/gcc/fortran/interface.cc
*** gcc-15.2.0/gcc/fortran/interface.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/interface.cc	Fri Jun 12 06:09:06 2026
*************** gfc_check_dummy_characteristics (gfc_sym
*** 1541,1546 ****
--- 1541,1553 ----
        int i, compval;
        gfc_expr *shape1, *shape2;
  
+       if (s1->as->rank != s2->as->rank)
+ 	{
+ 	  snprintf (errmsg, err_len, "Rank mismatch in argument '%s' (%i/%i)",
+ 		    s1->name, s1->as->rank, s2->as->rank);
+ 	  return false;
+ 	}
+ 
        /* Sometimes the ambiguity between deferred shape and assumed shape
  	 does not get resolved in module procedures, where the only explicit
  	 declaration of the dummy is in the interface.  */
*************** gfc_check_dummy_characteristics (gfc_sym
*** 1554,1560 ****
  	      s2->as->lower[i] = gfc_copy_expr (s1->as->lower[i]);
  	}
  
!       if (s1->as->type != s2->as->type)
  	{
  	  snprintf (errmsg, err_len, "Shape mismatch in argument '%s'",
  		    s1->name);
--- 1561,1569 ----
  	      s2->as->lower[i] = gfc_copy_expr (s1->as->lower[i]);
  	}
  
!       if (s1->as->type != s2->as->type
! 	  && !(s1->as->type == AS_DEFERRED
! 	       && s2->as->type == AS_ASSUMED_SHAPE))
  	{
  	  snprintf (errmsg, err_len, "Shape mismatch in argument '%s'",
  		    s1->name);
*************** gfc_compare_actual_formal (gfc_actual_ar
*** 4013,4018 ****
--- 4022,4049 ----
  		       &a->expr->where,f->sym->name);
  	  ok = false;
  	  goto match;
+ 	}
+ 
+       /* C_LOC/C_FUNLOC from ISO_C_BINDING as actual argument can only be
+ 	 passed to a dummy argument of matching type C_PTR/C_FUNPTR.  */
+       if (a->expr->expr_type == EXPR_FUNCTION
+ 	  && a->expr->ts.type == BT_VOID
+ 	  && a->expr->symtree->n.sym
+ 	  && a->expr->symtree->n.sym->from_intmod == INTMOD_ISO_C_BINDING
+ 	  && (f->sym->ts.type != BT_DERIVED
+ 	      || f->sym->ts.u.derived->from_intmod != INTMOD_ISO_C_BINDING
+ 	      || !((a->expr->symtree->n.sym->intmod_sym_id == ISOCBINDING_FUNLOC
+ 		    && f->sym->ts.u.derived->intmod_sym_id == ISOCBINDING_FUNPTR)
+ 		   || (a->expr->symtree->n.sym->intmod_sym_id == ISOCBINDING_LOC
+ 		       && f->sym->ts.u.derived->intmod_sym_id == ISOCBINDING_PTR))))
+ 	{
+ 	  if (where)
+ 	    gfc_error ("ISO_C_BINDING function actual argument at %L "
+ 		       "requires dummy argument %qs to have a matching "
+ 		       "type from ISO_C_BINDING",
+ 		       &a->expr->where,f->sym->name);
+ 	  ok = false;
+ 	  goto match;
  	}
  
      match:
diff -Nrcpad gcc-15.2.0/gcc/fortran/iresolve.cc gcc-15.3.0/gcc/fortran/iresolve.cc
*** gcc-15.2.0/gcc/fortran/iresolve.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/iresolve.cc	Fri Jun 12 06:09:06 2026
*************** check_charlen_present (gfc_expr *source)
*** 103,108 ****
--- 103,127 ----
      }
  }
  
+ static gfc_intrinsic_sym *
+ copy_intrinsic_sym (const gfc_intrinsic_sym *src)
+ {
+   gfc_intrinsic_sym *copy = XCNEW (gfc_intrinsic_sym);
+   gfc_intrinsic_arg *head = NULL;
+   gfc_intrinsic_arg **tail = &head;
+ 
+   *copy = *src;
+   for (const gfc_intrinsic_arg *arg = src->formal; arg; arg = arg->next)
+     {
+       *tail = XCNEW (gfc_intrinsic_arg);
+       **tail = *arg;
+       (*tail)->next = NULL;
+       tail = &(*tail)->next;
+     }
+   copy->formal = head;
+   return copy;
+ }
+ 
  /* Helper function for resolving the "mask" argument.  */
  
  static void
*************** gfc_resolve_spread (gfc_expr *f, gfc_exp
*** 2939,2945 ****
      gfc_resolve_substring_charlen (source);
  
    if (source->ts.type == BT_CHARACTER)
!     check_charlen_present (source);
  
    f->ts = source->ts;
    f->rank = source->rank + 1;
--- 2958,2968 ----
      gfc_resolve_substring_charlen (source);
  
    if (source->ts.type == BT_CHARACTER)
!     {
!       check_charlen_present (source);
!       f->value.function.isym = copy_intrinsic_sym (f->value.function.isym);
!       f->value.function.isym->formal->ts = source->ts;
!     }
  
    f->ts = source->ts;
    f->rank = source->rank + 1;
diff -Nrcpad gcc-15.2.0/gcc/fortran/match.cc gcc-15.3.0/gcc/fortran/match.cc
*** gcc-15.2.0/gcc/fortran/match.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/match.cc	Fri Jun 12 06:09:06 2026
*************** gfc_match_select_type (void)
*** 7044,7055 ****
    else
      {
        m = gfc_match (" %e ", &expr1);
!       if (m != MATCH_YES)
  	{
  	  std::swap (ns, gfc_current_ns);
  	  gfc_free_namespace (ns);
  	  return m;
  	}
      }
  
    m = gfc_match (" )%t");
--- 7044,7060 ----
    else
      {
        m = gfc_match (" %e ", &expr1);
!       if (m == MATCH_NO)
  	{
  	  std::swap (ns, gfc_current_ns);
  	  gfc_free_namespace (ns);
  	  return m;
  	}
+       /* On MATCH_ERROR, the temporary block namespace may already contain
+ 	 broken state from the failed expression match.  Avoid freeing it
+ 	 through the normal rollback path.  */
+       else if (m == MATCH_ERROR)
+ 	return m;
      }
  
    m = gfc_match (" )%t");
diff -Nrcpad gcc-15.2.0/gcc/fortran/openmp.cc gcc-15.3.0/gcc/fortran/openmp.cc
*** gcc-15.2.0/gcc/fortran/openmp.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/openmp.cc	Fri Jun 12 06:09:06 2026
*************** resolve_omp_clauses (gfc_code *code, gfc
*** 10166,10171 ****
--- 10166,10206 ----
  		      }
  		    break;
  		  case OMP_LIST_LINEAR:
+ 		    if (code)
+ 		      {
+ 			bool is_worksharing_for = false;
+ 			switch (code->op)
+ 			  {
+ 			  case EXEC_OMP_DO:
+ 			  case EXEC_OMP_PARALLEL_DO:
+ 			  case EXEC_OMP_DISTRIBUTE_PARALLEL_DO:
+ 			  case EXEC_OMP_TARGET_PARALLEL_DO:
+ 			  case EXEC_OMP_TEAMS_DISTRIBUTE_PARALLEL_DO:
+ 			  case EXEC_OMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_DO:
+ 			    is_worksharing_for = true;
+ 			    break;
+ 			  default:
+ 			    break;
+ 			  }
+ 
+ 			if (is_worksharing_for
+ 			    && (n->sym->attr.dimension
+ 				|| n->sym->attr.allocatable))
+ 			  {
+ 			    if (n->sym->attr.allocatable)
+ 			      gfc_error ("Sorry, ALLOCATABLE object %qs in "
+ 					 "LINEAR clause on worksharing-loop "
+ 					 "construct at %L is not yet supported",
+ 					 n->sym->name, &n->where);
+ 			    else
+ 			      gfc_error ("Sorry, array %qs in LINEAR clause "
+ 					 "on worksharing-loop construct at %L "
+ 					 "is not yet supported",
+ 					 n->sym->name, &n->where);
+ 			    break;
+ 			  }
+ 		      }
+ 
  		    if (code
  			&& n->u.linear.op != OMP_LINEAR_DEFAULT
  			&& n->u.linear.op != linear_op)
diff -Nrcpad gcc-15.2.0/gcc/fortran/parse.cc gcc-15.3.0/gcc/fortran/parse.cc
*** gcc-15.2.0/gcc/fortran/parse.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/parse.cc	Fri Jun 12 06:09:06 2026
*************** check_component (gfc_symbol *sym, gfc_co
*** 3675,3685 ****
                 "of type LOCK_TYPE, which must have a codimension or be a "
                 "subcomponent of a coarray", c->name, &c->loc);
  
!   if (lock_type && allocatable && !coarray)
!     gfc_error ("Allocatable component %s at %L of type LOCK_TYPE must have "
!                "a codimension", c->name, &c->loc);
!   else if (lock_type && allocatable && c->ts.type == BT_DERIVED
!            && c->ts.u.derived->attr.lock_comp)
      gfc_error ("Allocatable component %s at %L must have a codimension as "
                 "it has a noncoarray subcomponent of type LOCK_TYPE",
                 c->name, &c->loc);
--- 3675,3682 ----
                 "of type LOCK_TYPE, which must have a codimension or be a "
                 "subcomponent of a coarray", c->name, &c->loc);
  
!   if (lock_type && allocatable && !coarray && c->ts.type == BT_DERIVED
!       && c->ts.u.derived->attr.lock_comp)
      gfc_error ("Allocatable component %s at %L must have a codimension as "
                 "it has a noncoarray subcomponent of type LOCK_TYPE",
                 c->name, &c->loc);
*************** parse_executable (gfc_statement st)
*** 6728,6733 ****
--- 6725,6752 ----
  }
  
  
+ /* Update statement function formal argument lists that reference OLD_SYM
+    to point to NEW_SYM instead.  This prevents use-after-free when
+    gfc_fixup_sibling_symbols replaces and frees a symbol that is also
+    used as a statement function dummy argument (PR95879).  */
+ 
+ static void
+ fixup_st_func_formals (gfc_symtree *st, gfc_symbol *old_sym,
+ 		       gfc_symbol *new_sym)
+ {
+   if (st == NULL)
+     return;
+ 
+   fixup_st_func_formals (st->left, old_sym, new_sym);
+   fixup_st_func_formals (st->right, old_sym, new_sym);
+ 
+   if (st->n.sym && st->n.sym->attr.proc == PROC_ST_FUNCTION)
+     for (gfc_formal_arglist *fa = st->n.sym->formal; fa; fa = fa->next)
+       if (fa->sym == old_sym)
+ 	fa->sym = new_sym;
+ }
+ 
+ 
  /* Fix the symbols for sibling functions.  These are incorrectly added to
     the child namespace as the parser didn't know about this procedure.  */
  
*************** gfc_fixup_sibling_symbols (gfc_symbol *s
*** 6779,6784 ****
--- 6798,6808 ----
  	  st->n.sym = sym;
  	  sym->refs++;
  
+ 	  /* Update statement function formal argument lists that still
+ 	     reference old_sym before releasing it (PR95879).  */
+ 	  fixup_st_func_formals (ns->sym_root, old_sym, sym);
+ 
+ 
  	  gfc_release_symbol (old_sym);
  	}
  
diff -Nrcpad gcc-15.2.0/gcc/fortran/primary.cc gcc-15.3.0/gcc/fortran/primary.cc
*** gcc-15.2.0/gcc/fortran/primary.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/primary.cc	Fri Jun 12 06:09:06 2026
*************** gfc_variable_attr (gfc_expr *expr, gfc_t
*** 3057,3068 ****
--- 3057,3070 ----
  
  	if (comp->ts.type == BT_CLASS)
  	  {
+ 	    dimension = CLASS_DATA (comp)->attr.dimension;
  	    codimension = CLASS_DATA (comp)->attr.codimension;
  	    pointer = CLASS_DATA (comp)->attr.class_pointer;
  	    allocatable = CLASS_DATA (comp)->attr.allocatable;
  	  }
  	else
  	  {
+ 	    dimension = comp->attr.dimension;
  	    codimension = comp->attr.codimension;
  	    if (expr->ts.type == BT_CLASS && strcmp (comp->name, "_data") == 0)
  	      pointer = comp->attr.class_pointer;
*************** gfc_convert_to_structure_constructor (gf
*** 3537,3542 ****
--- 3539,3545 ----
  	  && this_comp->ts.u.cl && this_comp->ts.u.cl->length
  	  && this_comp->ts.u.cl->length->expr_type == EXPR_CONSTANT
  	  && this_comp->ts.u.cl->length->ts.type == BT_INTEGER
+ 	  && actual->expr
  	  && actual->expr->ts.type == BT_CHARACTER
  	  && actual->expr->expr_type == EXPR_CONSTANT)
  	{
*************** gfc_convert_to_structure_constructor (gf
*** 3601,3627 ****
  	  goto cleanup;
  	}
  
!           /* If not explicitly a parent constructor, gather up the components
!              and build one.  */
!           if (comp && comp == sym->components
!                 && sym->attr.extension
! 		&& comp_tail->val
!                 && (!gfc_bt_struct (comp_tail->val->ts.type)
!                       ||
!                     comp_tail->val->ts.u.derived != this_comp->ts.u.derived))
!             {
!               bool m;
  	      gfc_actual_arglist *arg_null = NULL;
  
  	      actual->expr = comp_tail->val;
  	      comp_tail->val = NULL;
  
!               m = gfc_convert_to_structure_constructor (NULL,
! 					comp->ts.u.derived, &comp_tail->val,
! 					comp->ts.u.derived->attr.zero_comp
! 					  ? &arg_null : &actual, true);
!               if (!m)
!                 goto cleanup;
  
  	      if (comp->ts.u.derived->attr.zero_comp)
  		{
--- 3604,3630 ----
  	  goto cleanup;
  	}
  
! 	  /* If not explicitly a parent constructor, gather up the components
! 	     and build one.  */
! 	  if (comp && comp == sym->components
! 	      && sym->attr.extension
! 	      && comp_tail->val
! 	      && (!gfc_bt_struct (comp_tail->val->ts.type)
! 		  || comp_tail->val->ts.u.derived != this_comp->ts.u.derived))
! 	    {
! 	      bool m;
  	      gfc_actual_arglist *arg_null = NULL;
  
  	      actual->expr = comp_tail->val;
  	      comp_tail->val = NULL;
+ #define shorter gfc_convert_to_structure_constructor
+ 	      m = shorter (NULL, comp->ts.u.derived, &comp_tail->val,
+ 			   comp->ts.u.derived->attr.zero_comp ? &arg_null :
+ 								&actual, true);
+ #undef shorter
  
! 	      if (!m)
! 		goto cleanup;
  
  	      if (comp->ts.u.derived->attr.zero_comp)
  		{
diff -Nrcpad gcc-15.2.0/gcc/fortran/resolve.cc gcc-15.3.0/gcc/fortran/resolve.cc
*** gcc-15.2.0/gcc/fortran/resolve.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/resolve.cc	Fri Jun 12 06:09:06 2026
*************** static int omp_workshare_flag;
*** 82,87 ****
--- 82,90 ----
  
  /* True if we are resolving a specification expression.  */
  static bool specification_expr = false;
+ /* The dummy whose character length or array bounds are currently being
+    resolved as a specification expression.  */
+ static gfc_symbol *specification_expr_symbol = NULL;
  
  /* The id of the last entry seen.  */
  static int current_entry_id;
*************** static bitmap_obstack labels_obstack;
*** 92,97 ****
--- 95,118 ----
  /* True when simplifying a EXPR_VARIABLE argument to an inquiry function.  */
  static bool inquiry_argument = false;
  
+ static bool
+ entry_dummy_seen_p (gfc_symbol *sym)
+ {
+   gfc_entry_list *entry;
+   gfc_formal_arglist *formal;
+ 
+   gcc_checking_assert (sym->attr.dummy && sym->ns == gfc_current_ns);
+ 
+   for (entry = gfc_current_ns->entries;
+        entry && entry->id <= current_entry_id;
+        entry = entry->next)
+     for (formal = entry->sym->formal; formal; formal = formal->next)
+       if (formal->sym && sym->name == formal->sym->name)
+ 	return true;
+ 
+   return false;
+ }
+ 
  
  /* Is the symbol host associated?  */
  static bool
*************** gfc_resolve_formal_arglist (gfc_symbol *
*** 289,294 ****
--- 310,316 ----
    for (f = proc->formal; f; f = f->next)
      {
        gfc_array_spec *as;
+       gfc_symbol *saved_specification_expr_symbol;
  
        sym = f->sym;
  
*************** gfc_resolve_formal_arglist (gfc_symbol *
*** 337,345 ****
--- 359,370 ----
  	   ? CLASS_DATA (sym)->as : sym->as;
  
        saved_specification_expr = specification_expr;
+       saved_specification_expr_symbol = specification_expr_symbol;
        specification_expr = true;
+       specification_expr_symbol = sym;
        gfc_resolve_array_spec (as, 0);
        specification_expr = saved_specification_expr;
+       specification_expr_symbol = saved_specification_expr_symbol;
  
        /* We can't tell if an array with dimension (:) is assumed or deferred
  	 shape until we know if it has the pointer or allocatable attributes.
*************** was_declared (gfc_symbol *sym)
*** 1630,1636 ****
    if (a.allocatable || a.dimension || a.dummy || a.external || a.intrinsic
        || a.optional || a.pointer || a.save || a.target || a.volatile_
        || a.value || a.access != ACCESS_UNKNOWN || a.intent != INTENT_UNKNOWN
!       || a.asynchronous || a.codimension)
      return 1;
  
    return 0;
--- 1655,1661 ----
    if (a.allocatable || a.dimension || a.dummy || a.external || a.intrinsic
        || a.optional || a.pointer || a.save || a.target || a.volatile_
        || a.value || a.access != ACCESS_UNKNOWN || a.intent != INTENT_UNKNOWN
!       || a.asynchronous || a.codimension || a.subroutine)
      return 1;
  
    return 0;
*************** resolve_global_procedure (gfc_symbol *sy
*** 2738,2754 ****
  	  /* This can happen if a binding name has been specified.  */
  	  if (gsym->binding_label && gsym->sym_name != def_sym->name)
  	    gfc_find_symbol (gsym->sym_name, gsym->ns, 0, &def_sym);
  
! 	  if (def_sym->attr.entry_master || def_sym->attr.entry)
! 	    {
! 	      gfc_entry_list *entry;
! 	      for (entry = gsym->ns->entries; entry; entry = entry->next)
! 		if (strcmp (entry->sym->name, sym->name) == 0)
! 		  {
! 		    def_sym = entry->sym;
! 		    break;
! 		  }
! 	    }
  	}
  
        if (sym->attr.function && !gfc_compare_types (&sym->ts, &def_sym->ts))
--- 2763,2784 ----
  	  /* This can happen if a binding name has been specified.  */
  	  if (gsym->binding_label && gsym->sym_name != def_sym->name)
  	    gfc_find_symbol (gsym->sym_name, gsym->ns, 0, &def_sym);
+ 	}
  
!       /* Look up the specific entry symbol so that interface checks use
! 	 the entry's own formal argument list, not the entry master's.
! 	 This must run even when resolved == -1 (recursive resolution in
! 	 progress), because def_sym starts as the namespace proc_name
! 	 which is the entry master with the combined formals.  */
!       if (def_sym->attr.entry_master || def_sym->attr.entry)
! 	{
! 	  gfc_entry_list *entry;
! 	  for (entry = gsym->ns->entries; entry; entry = entry->next)
! 	    if (strcmp (entry->sym->name, sym->name) == 0)
! 	      {
! 		def_sym = entry->sym;
! 		break;
! 	      }
  	}
  
        if (sym->attr.function && !gfc_compare_types (&sym->ts, &def_sym->ts))
*************** resolve_variable (gfc_expr *e)
*** 6345,6376 ****
        && cs_base->current
        && cs_base->current->op != EXEC_ENTRY)
      {
-       gfc_entry_list *entry;
-       gfc_formal_arglist *formal;
        int n;
!       bool seen, saved_specification_expr;
  
        /* If the symbol is a dummy...  */
        if (sym->attr.dummy && sym->ns == gfc_current_ns)
  	{
- 	  entry = gfc_current_ns->entries;
- 	  seen = false;
- 
- 	  /* ...test if the symbol is a parameter of previous entries.  */
- 	  for (; entry && entry->id <= current_entry_id; entry = entry->next)
- 	    for (formal = entry->sym->formal; formal; formal = formal->next)
- 	      {
- 		if (formal->sym && sym->name == formal->sym->name)
- 		  {
- 		    seen = true;
- 		    break;
- 		  }
- 	      }
- 
  	  /*  If it has not been seen as a dummy, this is an error.  */
! 	  if (!seen)
  	    {
! 	      if (specification_expr)
  		gfc_error ("Variable %qs, used in a specification expression"
  			   ", is referenced at %L before the ENTRY statement "
  			   "in which it is a parameter",
--- 6375,6397 ----
        && cs_base->current
        && cs_base->current->op != EXEC_ENTRY)
      {
        int n;
!       bool saved_specification_expr;
!       gfc_symbol *saved_specification_expr_symbol;
  
        /* If the symbol is a dummy...  */
        if (sym->attr.dummy && sym->ns == gfc_current_ns)
  	{
  	  /*  If it has not been seen as a dummy, this is an error.  */
! 	  if (!entry_dummy_seen_p (sym))
  	    {
! 	      if (specification_expr
! 		  && specification_expr_symbol
! 		  && specification_expr_symbol->attr.dummy
! 		  && specification_expr_symbol->ns == gfc_current_ns
! 		  && !entry_dummy_seen_p (specification_expr_symbol))
! 		;
! 	      else if (specification_expr)
  		gfc_error ("Variable %qs, used in a specification expression"
  			   ", is referenced at %L before the ENTRY statement "
  			   "in which it is a parameter",
*************** resolve_variable (gfc_expr *e)
*** 6385,6391 ****
--- 6406,6414 ----
  
        /* Now do the same check on the specification expressions.  */
        saved_specification_expr = specification_expr;
+       saved_specification_expr_symbol = specification_expr_symbol;
        specification_expr = true;
+       specification_expr_symbol = sym;
        if (sym->ts.type == BT_CHARACTER
  	  && !gfc_resolve_expr (sym->ts.u.cl->length))
  	t = false;
*************** resolve_variable (gfc_expr *e)
*** 6401,6406 ****
--- 6424,6430 ----
  	    }
  	}
        specification_expr = saved_specification_expr;
+       specification_expr_symbol = saved_specification_expr_symbol;
  
        if (t)
  	/* Update the symbol's entry level.  */
*************** resolve_assoc_var (gfc_symbol* sym, bool
*** 10465,10470 ****
--- 10489,10498 ----
    /* If the target is a good class object, so is the associate variable.  */
    if (sym->ts.type == BT_CLASS && gfc_expr_attr (target).class_ok)
      sym->attr.class_ok = 1;
+ 
+   /* If the target is a contiguous pointer, so is the associate variable.  */
+   if (gfc_expr_attr (target).pointer && gfc_expr_attr (target).contiguous)
+     sym->attr.contiguous = 1;
  }
  
  
*************** resolve_fl_variable (gfc_symbol *sym, in
*** 14576,14582 ****
--- 14604,14612 ----
       This check is effected by the call to gfc_resolve_expr through
       is_non_constant_shape_array.  */
    bool saved_specification_expr = specification_expr;
+   gfc_symbol *saved_specification_expr_symbol = specification_expr_symbol;
    specification_expr = true;
+   specification_expr_symbol = sym;
  
    if (sym->ns->proc_name
        && (sym->ns->proc_name->attr.flavor == FL_MODULE
*************** resolve_fl_variable (gfc_symbol *sym, in
*** 14591,14596 ****
--- 14621,14627 ----
        gfc_error ("The module or main program array %qs at %L must "
  		 "have constant shape", sym->name, &sym->declared_at);
        specification_expr = saved_specification_expr;
+       specification_expr_symbol = saved_specification_expr_symbol;
        return false;
      }
  
*************** resolve_fl_variable (gfc_symbol *sym, in
*** 14616,14621 ****
--- 14647,14653 ----
  	  gfc_error ("Entity with assumed character length at %L must be a "
  		     "dummy argument or a PARAMETER", &sym->declared_at);
  	  specification_expr = saved_specification_expr;
+ 	  specification_expr_symbol = saved_specification_expr_symbol;
  	  return false;
  	}
  
*************** resolve_fl_variable (gfc_symbol *sym, in
*** 14623,14628 ****
--- 14655,14661 ----
  	{
  	  gfc_error (auto_save_msg, sym->name, &sym->declared_at);
  	  specification_expr = saved_specification_expr;
+ 	  specification_expr_symbol = saved_specification_expr_symbol;
  	  return false;
  	}
  
*************** resolve_fl_variable (gfc_symbol *sym, in
*** 14637,14642 ****
--- 14670,14676 ----
  	      gfc_error ("%qs at %L must have constant character length "
  			"in this context", sym->name, &sym->declared_at);
  	      specification_expr = saved_specification_expr;
+ 	      specification_expr_symbol = saved_specification_expr_symbol;
  	      return false;
  	    }
  	  if (sym->attr.in_common)
*************** resolve_fl_variable (gfc_symbol *sym, in
*** 14644,14649 ****
--- 14678,14684 ----
  	      gfc_error ("COMMON variable %qs at %L must have constant "
  			 "character length", sym->name, &sym->declared_at);
  	      specification_expr = saved_specification_expr;
+ 	      specification_expr_symbol = saved_specification_expr_symbol;
  	      return false;
  	    }
  	}
*************** resolve_fl_variable (gfc_symbol *sym, in
*** 14676,14681 ****
--- 14711,14717 ----
  	{
  	  gfc_error (auto_save_msg, sym->name, &sym->declared_at);
  	  specification_expr = saved_specification_expr;
+ 	  specification_expr_symbol = saved_specification_expr_symbol;
  	  return false;
  	}
      }
*************** resolve_fl_variable (gfc_symbol *sym, in
*** 14709,14714 ****
--- 14745,14751 ----
        else
  	goto no_init_error;
        specification_expr = saved_specification_expr;
+       specification_expr_symbol = saved_specification_expr_symbol;
        return false;
      }
  
*************** no_init_error:
*** 14717,14726 ****
--- 14754,14765 ----
      {
        bool res = resolve_fl_variable_derived (sym, no_init_flag);
        specification_expr = saved_specification_expr;
+       specification_expr_symbol = saved_specification_expr_symbol;
        return res;
      }
  
    specification_expr = saved_specification_expr;
+   specification_expr_symbol = saved_specification_expr_symbol;
    return true;
  }
  
*************** resolve_symbol_array_spec (gfc_symbol *s
*** 17118,17128 ****
--- 17157,17170 ----
    gfc_current_ns = gfc_get_spec_ns (sym);
  
    bool saved_specification_expr = specification_expr;
+   gfc_symbol *saved_specification_expr_symbol = specification_expr_symbol;
    specification_expr = true;
+   specification_expr_symbol = sym;
  
    bool result = gfc_resolve_array_spec (sym->as, check_constant);
  
    specification_expr = saved_specification_expr;
+   specification_expr_symbol = saved_specification_expr_symbol;
    gfc_current_ns = orig_current_ns;
  
    return result;
*************** skip_interfaces:
*** 17345,17350 ****
--- 17387,17393 ----
  
    /* F2008, C530.  */
    if (sym->attr.contiguous
+       && !sym->attr.associate_var
        && (!class_attr.dimension
  	  || (as->type != AS_ASSUMED_SHAPE && as->type != AS_ASSUMED_RANK
  	      && !class_attr.pointer)))
*************** skip_interfaces:
*** 17959,17966 ****
  	  || (a->dummy && !a->pointer && a->intent == INTENT_OUT
  	      && sym->ns->proc_name->attr.if_source != IFSRC_IFBODY))
  	apply_default_init (sym);
!       else if (a->function && !a->pointer && !a->allocatable && !a->use_assoc
! 	       && sym->result)
  	/* Default initialization for function results.  */
  	apply_default_init (sym->result);
        else if (a->function && sym->result && a->access != ACCESS_PRIVATE
--- 18002,18009 ----
  	  || (a->dummy && !a->pointer && a->intent == INTENT_OUT
  	      && sym->ns->proc_name->attr.if_source != IFSRC_IFBODY))
  	apply_default_init (sym);
!       else if (a->function && !a->pointer && !a->allocatable
! 	       && !a->use_assoc && !a->used_in_submodule && sym->result)
  	/* Default initialization for function results.  */
  	apply_default_init (sym->result);
        else if (a->function && sym->result && a->access != ACCESS_PRIVATE
diff -Nrcpad gcc-15.2.0/gcc/fortran/scanner.cc gcc-15.3.0/gcc/fortran/scanner.cc
*** gcc-15.2.0/gcc/fortran/scanner.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/scanner.cc	Fri Jun 12 06:09:06 2026
*************** skip_free_oacc_sentinel (locus start, lo
*** 776,781 ****
--- 776,783 ----
        if ((c = next_char ()) == ' ' || c == '\t'
  	  || continue_flag)
  	{
+ 	  if (!continue_flag && (c == ' ' || c == '\t'))
+ 	    openmp_flag = 0;
  	  while (gfc_is_whitespace (c))
  	    c = next_char ();
  	  if (c != '\n' && c != '!')
*************** skip_free_omp_sentinel (locus start, loc
*** 816,821 ****
--- 818,825 ----
        if ((c = next_char ()) == ' ' || c == '\t'
  	  || continue_flag)
  	{
+ 	  if (!continue_flag && (c == ' ' || c == '\t'))
+ 	    openacc_flag = 0;
  	  while (gfc_is_whitespace (c))
  	    c = next_char ();
  	  if (c != '\n' && c != '!')
diff -Nrcpad gcc-15.2.0/gcc/fortran/simplify.cc gcc-15.3.0/gcc/fortran/simplify.cc
*** gcc-15.2.0/gcc/fortran/simplify.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/simplify.cc	Fri Jun 12 06:09:06 2026
*************** gfc_simplify_eoshift (gfc_expr *array, g
*** 2717,2722 ****
--- 2717,2723 ----
    /* Shut up compiler */
    len = 1;
    rsoffset = 1;
+   sstride[0] = 0;
  
    n = 0;
    for (d=0; d < array->rank; d++)
*************** gfc_simplify_eoshift (gfc_expr *array, g
*** 2786,2792 ****
  	{
  	  while (n--)
  	    {
! 	      *dest = gfc_copy_expr (bnd_ctor->expr);
  	      dest += rsoffset;
  	    }
  	}
--- 2787,2793 ----
  	{
  	  while (n--)
  	    {
! 	      *dest = bnd_ctor->expr;
  	      dest += rsoffset;
  	    }
  	}
*************** gfc_simplify_eoshift (gfc_expr *array, g
*** 2794,2800 ****
  	{
  	  while (n--)
  	    {
! 	      *dest = gfc_copy_expr (bnd);
  	      dest += rsoffset;
  	    }
  	}
--- 2795,2801 ----
  	{
  	  while (n--)
  	    {
! 	      *dest = bnd;
  	      dest += rsoffset;
  	    }
  	}
*************** gfc_simplify_eoshift (gfc_expr *array, g
*** 2835,2840 ****
--- 2836,2844 ----
  				   NULL);
      }
  
+   free (arrayvec);
+   free (resultvec);
+ 
   final:
    if (temp_boundary)
      gfc_free_expr (bnd);
diff -Nrcpad gcc-15.2.0/gcc/fortran/symbol.cc gcc-15.3.0/gcc/fortran/symbol.cc
*** gcc-15.2.0/gcc/fortran/symbol.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/symbol.cc	Fri Jun 12 06:09:06 2026
*************** gfc_find_component (gfc_symbol *sym, con
*** 2667,2672 ****
--- 2667,2687 ----
  /* Given a symbol, free all of the component structures and everything
     they point to.  */
  
+ void
+ gfc_free_component (gfc_component *p)
+ {
+   gfc_free_array_spec (p->as);
+   gfc_free_expr (p->initializer);
+   if (p->kind_expr)
+     gfc_free_expr (p->kind_expr);
+   if (p->param_list)
+     gfc_free_actual_arglist (p->param_list);
+   free (p->tb);
+   p->tb = NULL;
+   free (p);
+ }
+ 
+ 
  static void
  free_components (gfc_component *p)
  {
*************** free_components (gfc_component *p)
*** 2675,2690 ****
    for (; p; p = q)
      {
        q = p->next;
! 
!       gfc_free_array_spec (p->as);
!       gfc_free_expr (p->initializer);
!       if (p->kind_expr)
! 	gfc_free_expr (p->kind_expr);
!       if (p->param_list)
! 	gfc_free_actual_arglist (p->param_list);
!       free (p->tb);
!       p->tb = NULL;
!       free (p);
      }
  }
  
--- 2690,2696 ----
    for (; p; p = q)
      {
        q = p->next;
!       gfc_free_component (p);
      }
  }
  
*************** gfc_new_symtree (gfc_symtree **root, con
*** 3027,3033 ****
  
  /* Delete a symbol from the tree.  Does not free the symbol itself!  */
  
! static void
  gfc_delete_symtree (gfc_symtree **root, const char *name)
  {
    gfc_symtree st, *st0;
--- 3033,3039 ----
  
  /* Delete a symbol from the tree.  Does not free the symbol itself!  */
  
! void
  gfc_delete_symtree (gfc_symtree **root, const char *name)
  {
    gfc_symtree st, *st0;
*************** gfc_namespace *
*** 5500,5506 ****
  gfc_get_procedure_ns (gfc_symbol *sym)
  {
    if (sym->formal_ns
!       && sym->formal_ns->proc_name == sym)
      return sym->formal_ns;
  
    /* The above should have worked in most cases.  If it hasn't, try some other
--- 5506,5521 ----
  gfc_get_procedure_ns (gfc_symbol *sym)
  {
    if (sym->formal_ns
!       && sym->formal_ns->proc_name == sym
!       /* For module procedures used in submodules, there are two namespaces.
! 	 The one generated by the host association of the module is directly
! 	 accessible through SYM->FORMAL_NS but doesn't have any parent set.
! 	 The one generated by the parser is only accessible by walking the
! 	 contained namespace but has its parent set.  Prefer the one generated
! 	 by the parser below.  */
!       && !(sym->attr.used_in_submodule
! 	   && sym->attr.contained
! 	   && sym->formal_ns->parent == nullptr))
      return sym->formal_ns;
  
    /* The above should have worked in most cases.  If it hasn't, try some other
*************** gfc_get_procedure_ns (gfc_symbol *sym)
*** 5515,5520 ****
--- 5530,5539 ----
        if (ns->proc_name == sym)
  	return ns;
  
+   if (sym->formal_ns
+       && sym->formal_ns->proc_name == sym)
+     return sym->formal_ns;
+ 
    if (sym->formal)
      for (gfc_formal_arglist *f = sym->formal; f != nullptr; f = f->next)
        if (f->sym)
diff -Nrcpad gcc-15.2.0/gcc/fortran/trans-array.cc gcc-15.3.0/gcc/fortran/trans-array.cc
*** gcc-15.2.0/gcc/fortran/trans-array.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/trans-array.cc	Fri Jun 12 06:09:06 2026
*************** get_class_info_from_ss (stmtblock_t * pr
*** 1426,1437 ****
  	  tmp2 = gfc_class_len_get (class_expr);
  	  gfc_add_modify (pre, tmp, tmp2);
  	}
- 
-       if (rhs_function)
- 	{
- 	  tmp = gfc_class_data_get (class_expr);
- 	  gfc_conv_descriptor_offset_set (pre, tmp, gfc_index_zero_node);
- 	}
      }
    else if (rhs_ss->info->data.array.descriptor)
     {
--- 1426,1431 ----
*************** gfc_add_loop_ss_code (gfc_loopinfo * loo
*** 3372,3389 ****
  	  break;
  
  	case GFC_SS_FUNCTION:
! 	  /* Array function return value.  We call the function and save its
! 	     result in a temporary for use inside the loop.  */
! 	  gfc_init_se (&se, NULL);
! 	  se.loop = loop;
! 	  se.ss = ss;
! 	  if (gfc_is_class_array_function (expr))
! 	    expr->must_finalize = 1;
! 	  gfc_conv_expr (&se, expr);
! 	  gfc_add_block_to_block (&outer_loop->pre, &se.pre);
! 	  gfc_add_block_to_block (&outer_loop->post, &se.post);
! 	  gfc_add_block_to_block (&outer_loop->post, &se.finalblock);
! 	  ss_info->string_length = se.string_length;
  	  break;
  
  	case GFC_SS_CONSTRUCTOR:
--- 3366,3416 ----
  	  break;
  
  	case GFC_SS_FUNCTION:
! 	  {
! 	    /* Array function return value.  We call the function and save its
! 	       result in a temporary for use inside the loop.  */
! 	    gfc_init_se (&se, NULL);
! 	    se.loop = loop;
! 	    se.ss = ss;
! 	    bool class_func = gfc_is_class_array_function (expr);
! 	    if (class_func)
! 	      expr->must_finalize = 1;
! 	    gfc_conv_expr (&se, expr);
! 	    gfc_add_block_to_block (&outer_loop->pre, &se.pre);
! 	    if (class_func
! 		&& se.expr
! 		&& GFC_CLASS_TYPE_P (TREE_TYPE (se.expr)))
! 	      {
! 		tree tmp = gfc_class_data_get (se.expr);
! 		info->descriptor = tmp;
! 		info->data = gfc_conv_descriptor_data_get (tmp);
! 		info->offset = gfc_conv_descriptor_offset_get (tmp);
! 		for (gfc_ss *s = ss; s; s = s->parent)
! 		  for (int n = 0; n < s->dimen; n++)
! 		    {
! 		      int dim = s->dim[n];
! 		      tree tree_dim = gfc_rank_cst[dim];
! 
! 		      tree start;
! 		      start = gfc_conv_descriptor_lbound_get (tmp, tree_dim);
! 		      start = gfc_evaluate_now (start, &outer_loop->pre);
! 		      info->start[dim] = start;
! 
! 		      tree end;
! 		      end = gfc_conv_descriptor_ubound_get (tmp, tree_dim);
! 		      end = gfc_evaluate_now (end, &outer_loop->pre);
! 		      info->end[dim] = end;
! 
! 		      tree stride;
! 		      stride = gfc_conv_descriptor_stride_get (tmp, tree_dim);
! 		      stride = gfc_evaluate_now (stride, &outer_loop->pre);
! 		      info->stride[dim] = stride;
! 		    }
! 	      }
! 	    gfc_add_block_to_block (&outer_loop->post, &se.post);
! 	    gfc_add_block_to_block (&outer_loop->post, &se.finalblock);
! 	    ss_info->string_length = se.string_length;
! 	  }
  	  break;
  
  	case GFC_SS_CONSTRUCTOR:
*************** trans_array_bound_check (gfc_se * se, gf
*** 3781,3786 ****
--- 3808,3836 ----
  }
  
  
+ /* Helper functions to detect impure functions in an expression.  */
+ 
+ static const char *impure_name = NULL;
+ static bool
+ expr_contains_impure_fcn (gfc_expr *e, gfc_symbol* sym ATTRIBUTE_UNUSED,
+ 	 int* g ATTRIBUTE_UNUSED)
+ {
+   if (e && e->expr_type == EXPR_FUNCTION
+       && !gfc_pure_function (e, &impure_name)
+       && !gfc_implicit_pure_function (e))
+     return true;
+ 
+   return false;
+ }
+ 
+ static bool
+ gfc_expr_contains_impure_fcn (gfc_expr *e)
+ {
+   impure_name = NULL;
+   return gfc_traverse_expr (e, NULL, &expr_contains_impure_fcn, 0);
+ }
+ 
+ 
  /* Generate code for bounds checking for elemental dimensions.  */
  
  static void
*************** array_bound_check_elemental (gfc_se * se
*** 3803,3812 ****
--- 3853,3869 ----
  		{
  		  if (ar->dimen_type[dim] == DIMEN_ELEMENT)
  		    {
+ 		      if (gfc_expr_contains_impure_fcn (ar->start[dim]))
+ 			gfc_warning_now (0, "Bounds checking of the elemental "
+ 					 "index at %L will cause two calls to "
+ 					 "%qs, which is not declared to be "
+ 					 "PURE or is not implicitly pure.",
+ 					 &ar->start[dim]->where, impure_name);
  		      gfc_se indexse;
  		      gfc_init_se (&indexse, NULL);
  		      gfc_conv_expr_type (&indexse, ar->start[dim],
  					  gfc_array_index_type);
+ 		      gfc_add_block_to_block (&se->pre, &indexse.pre);
  		      trans_array_bound_check (se, ss, indexse.expr, dim,
  					       &ar->where,
  					       ar->as->type != AS_ASSUMED_SIZE
*************** done:
*** 5205,5211 ****
  	      int dim = ss->dim[n];
  
  	      info->start[dim]  = gfc_index_zero_node;
! 	      info->end[dim]    = gfc_index_zero_node;
  	      info->stride[dim] = gfc_index_one_node;
  	    }
  	  break;
--- 5262,5269 ----
  	      int dim = ss->dim[n];
  
  	      info->start[dim]  = gfc_index_zero_node;
! 	      if (ss_info->type != GFC_SS_FUNCTION)
! 		info->end[dim]    = gfc_index_zero_node;
  	      info->stride[dim] = gfc_index_one_node;
  	    }
  	  break;
*************** set_loop_bounds (gfc_loopinfo *loop)
*** 5890,5895 ****
--- 5948,5993 ----
  }
  
  
+ /* Last attempt to set the loop bounds, in case they depend on an allocatable
+    function result.  */
+ 
+ static void
+ late_set_loop_bounds (gfc_loopinfo *loop)
+ {
+   int n, dim;
+   gfc_array_info *info;
+   gfc_ss **loopspec;
+ 
+   loopspec = loop->specloop;
+ 
+   for (n = 0; n < loop->dimen; n++)
+     {
+       /* Set the extents of this range.  */
+       if (loop->from[n] == NULL_TREE
+ 	  || loop->to[n] == NULL_TREE)
+ 	{
+ 	  /* We should have found the scalarization loop specifier.  If not,
+ 	     that's bad news.  */
+ 	  gcc_assert (loopspec[n]);
+ 
+ 	  info = &loopspec[n]->info->data.array;
+ 	  dim = loopspec[n]->dim[n];
+ 
+ 	  if (loopspec[n]->info->type == GFC_SS_FUNCTION
+ 	      && info->start[dim]
+ 	      && info->end[dim])
+ 	    {
+ 	      loop->from[n] = info->start[dim];
+ 	      loop->to[n] = info->end[dim];
+ 	    }
+ 	}
+     }
+ 
+   for (loop = loop->nested; loop; loop = loop->next)
+     late_set_loop_bounds (loop);
+ }
+ 
+ 
  /* Initialize the scalarization loop.  Creates the loop variables.  Determines
     the range of the loop variables.  Creates a temporary if required.
     Also generates code for scalar expressions which have been
*************** gfc_conv_loop_setup (gfc_loopinfo * loop
*** 5908,5913 ****
--- 6006,6013 ----
       allocating the temporary.  */
    gfc_add_loop_ss_code (loop, loop->ss, false, where);
  
+   late_set_loop_bounds (loop);
+ 
    tmp_ss = loop->temp_ss;
    /* If we want a temporary then create it.  */
    if (tmp_ss != NULL)
*************** gfc_set_delta (gfc_loopinfo *loop)
*** 5964,5972 ****
        gfc_ss_type ss_type;
  
        ss_type = ss->info->type;
!       if (ss_type != GFC_SS_SECTION
! 	  && ss_type != GFC_SS_COMPONENT
! 	  && ss_type != GFC_SS_CONSTRUCTOR)
  	continue;
  
        info = &ss->info->data.array;
--- 6064,6074 ----
        gfc_ss_type ss_type;
  
        ss_type = ss->info->type;
!       if (!(ss_type == GFC_SS_SECTION
! 	    || ss_type == GFC_SS_COMPONENT
! 	    || ss_type == GFC_SS_CONSTRUCTOR
! 	    || (ss_type == GFC_SS_FUNCTION
! 		&& gfc_is_class_array_function (ss->info->expr))))
  	continue;
  
        info = &ss->info->data.array;
*************** gfc_conv_expr_descriptor (gfc_se *se, gf
*** 8682,8687 ****
--- 8784,8802 ----
  					  gfc_rank_cst[dim], stride);
  	}
  
+       /* For deferred-length character we need to take the dynamic length
+ 	 into account for the dataptr offset.  */
+       if (expr->ts.type == BT_CHARACTER
+ 	  && expr->ts.deferred
+ 	  && expr->ts.u.cl->backend_decl
+ 	  && VAR_P (expr->ts.u.cl->backend_decl))
+ 	{
+ 	  tree base_type = TREE_TYPE (base);
+ 	  base = fold_build2_loc (input_location, MULT_EXPR, base_type, base,
+ 				  fold_convert (base_type,
+ 						expr->ts.u.cl->backend_decl));
+ 	}
+ 
        for (n = loop.dimen; n < loop.dimen + codim; n++)
  	{
  	  from = loop.from[n];
*************** gfc_conv_array_parameter (gfc_se *se, gf
*** 9321,9327 ****
  	  tmp = build_fold_indirect_ref_loc (input_location, desc);
  
  	  gfc_ss * ss = gfc_walk_expr (expr);
! 	  if (!transposed_dims (ss))
  	    {
  	      if (!ctree)
  		gfc_conv_descriptor_data_set (&se->pre, tmp, ptr);
--- 9436,9442 ----
  	  tmp = build_fold_indirect_ref_loc (input_location, desc);
  
  	  gfc_ss * ss = gfc_walk_expr (expr);
! 	  if (!transposed_dims (ss) && expr->rank != -1)
  	    {
  	      if (!ctree)
  		gfc_conv_descriptor_data_set (&se->pre, tmp, ptr);
*************** gfc_conv_array_parameter (gfc_se *se, gf
*** 9329,9337 ****
  	  else if (!ctree)
  	    {
  	      tree old_field, new_field;
- 
- 	      /* The original descriptor has transposed dims so we can't reuse
- 		 it directly; we have to create a new one.  */
  	      tree old_desc = tmp;
  	      tree new_desc = gfc_create_var (TREE_TYPE (old_desc), "arg_desc");
  
--- 9444,9449 ----
*************** gfc_conv_array_parameter (gfc_se *se, gf
*** 9339,9355 ****
  	      new_field = gfc_conv_descriptor_dtype (new_desc);
  	      gfc_add_modify (&se->pre, new_field, old_field);
  
! 	      old_field = gfc_conv_descriptor_offset (old_desc);
! 	      new_field = gfc_conv_descriptor_offset (new_desc);
! 	      gfc_add_modify (&se->pre, new_field, old_field);
  
! 	      for (int i = 0; i < expr->rank; i++)
  		{
! 		  old_field = gfc_conv_descriptor_dimension (old_desc,
  			gfc_rank_cst[get_array_ref_dim_for_loop_dim (ss, i)]);
! 		  new_field = gfc_conv_descriptor_dimension (new_desc,
  			gfc_rank_cst[i]);
! 		  gfc_add_modify (&se->pre, new_field, old_field);
  		}
  
  	      if (flag_coarray == GFC_FCOARRAY_LIB
--- 9451,9525 ----
  	      new_field = gfc_conv_descriptor_dtype (new_desc);
  	      gfc_add_modify (&se->pre, new_field, old_field);
  
! 	      if (expr->rank == -1)
! 		{
! 		  tree idx = gfc_create_var (TREE_TYPE (gfc_conv_descriptor_rank
! 							(old_desc)),
! 					     "idx");
! 		  tree stride = gfc_create_var (gfc_array_index_type, "stride");
! 		  stmtblock_t loop_body;
  
! 		  gfc_conv_descriptor_offset_set (&se->pre, new_desc,
! 						  gfc_index_zero_node);
! 		  gfc_conv_descriptor_span_set (&se->pre, new_desc,
! 						gfc_conv_descriptor_span_get
! 						(old_desc));
! 		  gfc_add_modify (&se->pre, stride, gfc_index_one_node);
! 
! 		  gfc_init_block (&loop_body);
! 
! 		  old_field = gfc_conv_descriptor_lbound_get (old_desc, idx);
! 		  gfc_conv_descriptor_lbound_set (&loop_body, new_desc, idx,
! 						  old_field);
! 
! 		  old_field = gfc_conv_descriptor_ubound_get (old_desc, idx);
! 		  gfc_conv_descriptor_ubound_set (&loop_body, new_desc, idx,
! 						  old_field);
! 
! 		  gfc_conv_descriptor_stride_set (&loop_body, new_desc, idx,
! 						  stride);
! 
! 		  tree offset = fold_build2_loc (input_location, MULT_EXPR,
! 						 gfc_array_index_type, stride,
! 						 gfc_conv_descriptor_lbound_get
! 						 (new_desc, idx));
! 		  offset = fold_build2_loc (input_location, MINUS_EXPR,
! 					    gfc_array_index_type,
! 					    gfc_conv_descriptor_offset_get
! 					    (new_desc), offset);
! 		  gfc_conv_descriptor_offset_set (&loop_body, new_desc, offset);
! 
! 		  tree extent = gfc_conv_array_extent_dim
! 				(gfc_conv_descriptor_lbound_get (new_desc, idx),
! 				 gfc_conv_descriptor_ubound_get (new_desc, idx),
! 				 NULL);
! 		  extent = fold_build2_loc (input_location, MULT_EXPR,
! 					    gfc_array_index_type, stride,
! 					    extent);
! 		  gfc_add_modify (&loop_body, stride, extent);
! 
! 		  gfc_simple_for_loop (&se->pre, idx,
! 				       build_int_cst (TREE_TYPE (idx), 0),
! 				       gfc_conv_descriptor_rank (old_desc),
! 				       LT_EXPR,
! 				       build_int_cst (TREE_TYPE (idx), 1),
! 				       gfc_finish_block (&loop_body));
! 		}
! 	      else
  		{
! 		  /* The original descriptor has transposed dims so we can't
! 		     reuse it directly; we have to create a new one.  */
! 		  old_field = gfc_conv_descriptor_offset_get (old_desc);
! 		  gfc_conv_descriptor_offset_set (&se->pre, new_desc, old_field);
! 
! 		  for (int i = 0; i < expr->rank; i++)
! 		    {
! 		      old_field = gfc_conv_descriptor_dimension (old_desc,
  			gfc_rank_cst[get_array_ref_dim_for_loop_dim (ss, i)]);
! 		      new_field = gfc_conv_descriptor_dimension (new_desc,
  			gfc_rank_cst[i]);
! 		      gfc_add_modify (&se->pre, new_field, old_field);
! 		    }
  		}
  
  	      if (flag_coarray == GFC_FCOARRAY_LIB
*************** gfc_trans_deferred_array (gfc_symbol * s
*** 12069,12076 ****
        && !INTEGER_CST_P (sym->ts.u.cl->backend_decl))
      {
        if (sym->ts.deferred && !sym->ts.u.cl->length && !sym->attr.dummy)
! 	gfc_add_modify (&init, sym->ts.u.cl->backend_decl,
! 			build_zero_cst (TREE_TYPE (sym->ts.u.cl->backend_decl)));
        gfc_conv_string_length (sym->ts.u.cl, NULL, &init);
        gfc_trans_vla_type_sizes (sym, &init);
  
--- 12239,12254 ----
        && !INTEGER_CST_P (sym->ts.u.cl->backend_decl))
      {
        if (sym->ts.deferred && !sym->ts.u.cl->length && !sym->attr.dummy)
! 	{
! 	  tree len_expr = sym->ts.u.cl->backend_decl;
! 	  tree init_val = build_zero_cst (TREE_TYPE (len_expr));
! 	  if (VAR_P (len_expr)
! 	      && sym->attr.save
! 	      && !DECL_INITIAL (len_expr))
! 	    DECL_INITIAL (len_expr) = init_val;
! 	  else
! 	    gfc_add_modify (&init, len_expr, init_val);
! 	}
        gfc_conv_string_length (sym->ts.u.cl, NULL, &init);
        gfc_trans_vla_type_sizes (sym, &init);
  
diff -Nrcpad gcc-15.2.0/gcc/fortran/trans-decl.cc gcc-15.3.0/gcc/fortran/trans-decl.cc
*** gcc-15.2.0/gcc/fortran/trans-decl.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/trans-decl.cc	Fri Jun 12 06:09:06 2026
*************** gfc_finish_var_decl (tree decl, gfc_symb
*** 655,667 ****
  	  && (sym->ns->proc_name->backend_decl == current_function_decl
  	      || sym->result == sym))
  	gfc_add_decl_to_function (decl);
        else if (sym->ns->proc_name
  	       && sym->ns->proc_name->attr.flavor == FL_LABEL)
  	/* This is a BLOCK construct.  */
  	add_decl_as_local (decl);
-       else if (sym->ns->omp_affinity_iterators)
- 	/* This is a block-local iterator.  */
- 	add_decl_as_local (decl);
        else
  	gfc_add_decl_to_parent_function (decl);
      }
--- 655,680 ----
  	  && (sym->ns->proc_name->backend_decl == current_function_decl
  	      || sym->result == sym))
  	gfc_add_decl_to_function (decl);
+       else if (sym->ns->omp_affinity_iterators)
+ 	{
+ 	  /* Iterator variables are block-local; other variables in the
+ 	     iterator namespace (e.g. implicitly typed host-associated
+ 	     ones used in locator expressions) belong in the enclosing
+ 	     function.  */
+ 	  gfc_symbol *iter;
+ 	  for (iter = sym->ns->omp_affinity_iterators; iter;
+ 	       iter = iter->tlink)
+ 	    if (iter == sym)
+ 	      break;
+ 	  if (iter)
+ 	    add_decl_as_local (decl);
+ 	  else
+ 	    gfc_add_decl_to_function (decl);
+ 	}
        else if (sym->ns->proc_name
  	       && sym->ns->proc_name->attr.flavor == FL_LABEL)
  	/* This is a BLOCK construct.  */
  	add_decl_as_local (decl);
        else
  	gfc_add_decl_to_parent_function (decl);
      }
*************** gfc_finish_var_decl (tree decl, gfc_symb
*** 732,747 ****
  		&& sym->attr.codimension && !sym->attr.allocatable)))
      TREE_STATIC (decl) = 1;
  
-   /* If derived-type variables with DTIO procedures are not made static
-      some bits of code referencing them get optimized away.
-      TODO Understand why this is so and fix it.  */
-   if (!sym->attr.use_assoc
-       && ((sym->ts.type == BT_DERIVED
-            && sym->ts.u.derived->attr.has_dtio_procs)
- 	  || (sym->ts.type == BT_CLASS
- 	      && CLASS_DATA (sym)->ts.u.derived->attr.has_dtio_procs)))
-     TREE_STATIC (decl) = 1;
- 
    /* Treat asynchronous variables the same as volatile, for now.  */
    if (sym->attr.volatile_ || sym->attr.asynchronous)
      {
--- 745,750 ----
*************** build_function_decl (gfc_symbol * sym, b
*** 2519,2524 ****
--- 2522,2529 ----
    gcc_assert (current_function_decl == NULL_TREE
  	      || DECL_FILE_SCOPE_P (current_function_decl)
  	      || (TREE_CODE (DECL_CONTEXT (current_function_decl))
+ 		  == FUNCTION_DECL)
+ 	      || (TREE_CODE (DECL_CONTEXT (current_function_decl))
  		  == NAMESPACE_DECL));
  
    type = gfc_get_function_type (sym);
*************** build_entry_thunks (gfc_namespace * ns,
*** 3095,3109 ****
        tmp = build_int_cst (gfc_array_index_type, el->id);
        vec_safe_push (args, tmp);
  
!       if (thunk_sym->attr.function)
  	{
! 	  if (gfc_return_by_reference (ns->proc_name))
  	    {
  	      tree ref = DECL_ARGUMENTS (current_function_decl);
  	      vec_safe_push (args, ref);
  	      if (ns->proc_name->ts.type == BT_CHARACTER)
  		vec_safe_push (args, DECL_CHAIN (ref));
  	    }
  	}
  
        for (formal = gfc_sym_get_dummy_args (ns->proc_name); formal;
--- 3100,3159 ----
        tmp = build_int_cst (gfc_array_index_type, el->id);
        vec_safe_push (args, tmp);
  
!       /* When the master returns by reference, pass the result reference
! 	 and (for CHARACTER) the string length to the master call.  If the
! 	 thunk itself also returns by reference these are forwarded from
! 	 its own argument list; otherwise (bind(c) CHARACTER entry) we
! 	 create local temporaries and load the value after the call.  */
!       tree result_ref = NULL_TREE;
!       if (thunk_sym->attr.function
! 	  && gfc_return_by_reference (ns->proc_name))
  	{
! 	  if (gfc_return_by_reference (thunk_sym))
  	    {
  	      tree ref = DECL_ARGUMENTS (current_function_decl);
  	      vec_safe_push (args, ref);
  	      if (ns->proc_name->ts.type == BT_CHARACTER)
  		vec_safe_push (args, DECL_CHAIN (ref));
  	    }
+ 	  else
+ 	    {
+ 	      /* The thunk is bind(c) and returns CHARACTER by value, but
+ 		 the master returns by reference.  Create a local buffer
+ 		 and length to pass to the master call.  */
+ 	      tree chartype = gfc_get_char_type (thunk_sym->ts.kind);
+ 	      tree len;
+ 
+ 	      if (thunk_sym->ts.u.cl && thunk_sym->ts.u.cl->length)
+ 		{
+ 		  gfc_se se;
+ 		  gfc_init_se (&se, NULL);
+ 		  gfc_conv_expr (&se, thunk_sym->ts.u.cl->length);
+ 		  gfc_add_block_to_block (&body, &se.pre);
+ 		  len = se.expr;
+ 		  gfc_add_block_to_block (&body, &se.post);
+ 		}
+ 	      else
+ 		len = build_int_cst (gfc_charlen_type_node, 1);
+ 
+ 	      result_ref = build_decl (input_location, VAR_DECL,
+ 				       get_identifier ("__entry_result"),
+ 				       build_array_type (chartype,
+ 					 build_range_type (gfc_array_index_type,
+ 					   gfc_index_one_node,
+ 					   fold_convert (gfc_array_index_type,
+ 							 len))));
+ 	      DECL_ARTIFICIAL (result_ref) = 1;
+ 	      TREE_USED (result_ref) = 1;
+ 	      DECL_CONTEXT (result_ref) = current_function_decl;
+ 	      layout_decl (result_ref, 0);
+ 	      pushdecl (result_ref);
+ 
+ 	      vec_safe_push (args,
+ 			     build_fold_addr_expr_loc (input_location,
+ 						       result_ref));
+ 	      vec_safe_push (args, len);
+ 	    }
  	}
  
        for (formal = gfc_sym_get_dummy_args (ns->proc_name); formal;
*************** build_entry_thunks (gfc_namespace * ns,
*** 3150,3156 ****
        vec_safe_splice (args, string_args);
        tmp = ns->proc_name->backend_decl;
        tmp = build_call_expr_loc_vec (input_location, tmp, args);
!       if (ns->proc_name->attr.mixed_entry_master)
  	{
  	  tree union_decl, field;
  	  tree master_type = TREE_TYPE (ns->proc_name->backend_decl);
--- 3200,3223 ----
        vec_safe_splice (args, string_args);
        tmp = ns->proc_name->backend_decl;
        tmp = build_call_expr_loc_vec (input_location, tmp, args);
!       if (result_ref != NULL_TREE)
! 	{
! 	  /* The master returns by reference (void) but the bind(c) thunk
! 	     returns CHARACTER by value.  Execute the master call, then
! 	     load the first character from the local buffer.  */
! 	  gfc_add_expr_to_block (&body, tmp);
! 	  tmp = build4_loc (input_location, ARRAY_REF,
! 			    TREE_TYPE (TREE_TYPE (result_ref)),
! 			    result_ref, gfc_index_one_node,
! 			    NULL_TREE, NULL_TREE);
! 	  tmp = fold_convert (TREE_TYPE (DECL_RESULT (current_function_decl)),
! 			      tmp);
! 	  tmp = fold_build2_loc (input_location, MODIFY_EXPR,
! 			     TREE_TYPE (DECL_RESULT (current_function_decl)),
! 			     DECL_RESULT (current_function_decl), tmp);
! 	  tmp = build1_v (RETURN_EXPR, tmp);
! 	}
!       else if (ns->proc_name->attr.mixed_entry_master)
  	{
  	  tree union_decl, field;
  	  tree master_type = TREE_TYPE (ns->proc_name->backend_decl);
*************** gfc_trans_deferred_vars (gfc_symbol * pr
*** 5022,5027 ****
--- 5089,5099 ----
  					NULL_TREE);
  		  continue;
  		}
+ 	      else if (sym->attr.codimension && !sym->attr.dimension)
+ 		{
+ 		  /* Scalar coarrays do not need array allocation.  */
+ 		  continue;
+ 		}
  	      else
  		{
  		  loc = input_location;
diff -Nrcpad gcc-15.2.0/gcc/fortran/trans-expr.cc gcc-15.3.0/gcc/fortran/trans-expr.cc
*** gcc-15.2.0/gcc/fortran/trans-expr.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/trans-expr.cc	Fri Jun 12 06:09:06 2026
*************** gfc_conv_class_to_class (gfc_se *parmse,
*** 1251,1263 ****
    stmtblock_t block;
    bool full_array = false;
  
!   /* Class transformational function results are the data field of a class
!      temporary and so the class expression can be obtained directly.  */
!   if (e->expr_type == EXPR_FUNCTION
!       && e->value.function.isym
!       && e->value.function.isym->transformational
        && TREE_CODE (parmse->expr) == COMPONENT_REF
!       && !GFC_CLASS_TYPE_P (TREE_TYPE (parmse->expr)))
      {
        parmse->expr = TREE_OPERAND (parmse->expr, 0);
        if (!VAR_P (parmse->expr))
--- 1251,1262 ----
    stmtblock_t block;
    bool full_array = false;
  
!   /* If this is the data field of a class temporary, the class expression
!      can be obtained and returned directly.  */
!   if (e->expr_type != EXPR_VARIABLE
        && TREE_CODE (parmse->expr) == COMPONENT_REF
!       && !GFC_CLASS_TYPE_P (TREE_TYPE (parmse->expr))
!       && GFC_CLASS_TYPE_P (TREE_TYPE (TREE_OPERAND (parmse->expr, 0))))
      {
        parmse->expr = TREE_OPERAND (parmse->expr, 0);
        if (!VAR_P (parmse->expr))
*************** gfc_get_interface_mapping_charlen (gfc_i
*** 4775,4787 ****
  
  /* A subroutine of gfc_add_interface_mapping.  Return a descriptorless
     array variable that can be used as the actual argument for dummy
!    argument SYM.  Add any initialization code to BLOCK.  PACKED is as
!    for gfc_get_nodesc_array_type and DATA points to the first element
!    in the passed array.  */
  
  static tree
  gfc_get_interface_mapping_array (stmtblock_t * block, gfc_symbol * sym,
! 				 gfc_packed packed, tree data, tree len)
  {
    tree type;
    tree var;
--- 4774,4788 ----
  
  /* A subroutine of gfc_add_interface_mapping.  Return a descriptorless
     array variable that can be used as the actual argument for dummy
!    argument SYM, except in the case of assumed rank dummies of
!    non-intrinsic functions where the descriptor must be passed. Add any
!    initialization code to BLOCK. PACKED is as for gfc_get_nodesc_array_type
!    and DATA points to the first element in the passed array.  */
  
  static tree
  gfc_get_interface_mapping_array (stmtblock_t * block, gfc_symbol * sym,
! 				 gfc_packed packed, tree data, tree len,
! 				 bool assumed_rank_formal)
  {
    tree type;
    tree var;
*************** gfc_get_interface_mapping_array (stmtblo
*** 4790,4796 ****
      type = gfc_get_character_type_len (sym->ts.kind, len);
    else
      type = gfc_typenode_for_spec (&sym->ts);
!   type = gfc_get_nodesc_array_type (type, sym->as, packed,
  				    !sym->attr.target && !sym->attr.pointer
  				    && !sym->attr.proc_pointer);
  
--- 4791,4801 ----
      type = gfc_get_character_type_len (sym->ts.kind, len);
    else
      type = gfc_typenode_for_spec (&sym->ts);
! 
!   if (assumed_rank_formal)
!     type = TREE_TYPE (data);
!   else
!     type = gfc_get_nodesc_array_type (type, sym->as, packed,
  				    !sym->attr.target && !sym->attr.pointer
  				    && !sym->attr.proc_pointer);
  
*************** gfc_add_interface_mapping (gfc_interface
*** 4877,4882 ****
--- 4882,4888 ----
    new_sym->attr.allocatable = sym->attr.allocatable;
    new_sym->attr.flavor = sym->attr.flavor;
    new_sym->attr.function = sym->attr.function;
+   new_sym->attr.dummy = 0;
  
    /* Ensure that the interface is available and that
       descriptors are passed for array actual arguments.  */
*************** gfc_add_interface_mapping (gfc_interface
*** 4963,4977 ****
    else if (POINTER_TYPE_P (TREE_TYPE (se->expr))
  	   && GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (TREE_TYPE (se->expr))))
      {
        /* Get the actual argument's descriptor.  */
        desc = build_fold_indirect_ref_loc (input_location,
  				      se->expr);
  
        /* Create the replacement variable.  */
!       tmp = gfc_conv_descriptor_data_get (desc);
        value = gfc_get_interface_mapping_array (&se->pre, sym,
  					       PACKED_NO, tmp,
! 					       se->string_length);
  
        /* Use DESC to work out the upper bounds, strides and offset.  */
        gfc_set_interface_mapping_bounds (&se->pre, TREE_TYPE (value), desc);
--- 4969,4995 ----
    else if (POINTER_TYPE_P (TREE_TYPE (se->expr))
  	   && GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (TREE_TYPE (se->expr))))
      {
+       bool assumed_rank_formal = false;
+ 
        /* Get the actual argument's descriptor.  */
        desc = build_fold_indirect_ref_loc (input_location,
  				      se->expr);
  
        /* Create the replacement variable.  */
!       if (sym->as && sym->as->type == AS_ASSUMED_RANK
! 	  && !(sym->ns && sym->ns->proc_name
! 	       && sym->ns->proc_name->attr.proc == PROC_INTRINSIC))
! 	{
! 	  assumed_rank_formal = true;
! 	  tmp = desc;
! 	}
!       else
! 	tmp = gfc_conv_descriptor_data_get (desc);
! 
        value = gfc_get_interface_mapping_array (&se->pre, sym,
  					       PACKED_NO, tmp,
! 					       se->string_length,
! 					       assumed_rank_formal);
  
        /* Use DESC to work out the upper bounds, strides and offset.  */
        gfc_set_interface_mapping_bounds (&se->pre, TREE_TYPE (value), desc);
*************** gfc_add_interface_mapping (gfc_interface
*** 4980,4986 ****
      /* Otherwise we have a packed array.  */
      value = gfc_get_interface_mapping_array (&se->pre, sym,
  					     PACKED_FULL, se->expr,
! 					     se->string_length);
  
    new_sym->backend_decl = value;
  }
--- 4998,5005 ----
      /* Otherwise we have a packed array.  */
      value = gfc_get_interface_mapping_array (&se->pre, sym,
  					     PACKED_FULL, se->expr,
! 					     se->string_length,
! 					     false);
  
    new_sym->backend_decl = value;
  }
*************** gfc_conv_subref_array_arg (gfc_se *se, g
*** 5455,5470 ****
    /* Translate the expression.  */
    gfc_conv_expr (&rse, expr);
  
-   /* Reset the offset for the function call since the loop
-      is zero based on the data pointer.  Note that the temp
-      comes first in the loop chain since it is added second.  */
-   if (gfc_is_class_array_function (expr))
-     {
-       tmp = loop.ss->loop_chain->info->data.array.descriptor;
-       gfc_conv_descriptor_offset_set (&loop.pre, tmp,
- 				      gfc_index_zero_node);
-     }
- 
    gfc_conv_tmp_array_ref (&lse);
  
    if (intent != INTENT_OUT)
--- 5474,5479 ----
*************** gfc_conv_subref_array_arg (gfc_se *se, g
*** 5576,5582 ****
  
    gcc_assert (lse.ss == gfc_ss_terminator);
  
!   tmp = gfc_trans_scalar_assign (&lse, &rse, expr->ts, false, true);
    gfc_add_expr_to_block (&body, tmp);
  
    /* Generate the copying loops.  */
--- 5585,5593 ----
  
    gcc_assert (lse.ss == gfc_ss_terminator);
  
!   /* Do not do deallocations when we are looking at a g77-style argument.  */
! 
!   tmp = gfc_trans_scalar_assign (&lse, &rse, expr->ts, false, !g77);
    gfc_add_expr_to_block (&body, tmp);
  
    /* Generate the copying loops.  */
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 7346,7351 ****
--- 7357,7363 ----
  				  && !e->ts.u.derived->attr.alloc_comp
  				  && !e->ts.u.derived->attr.pdt_type
  				  && !gfc_is_finalizable (e->ts.u.derived, NULL)))
+ 			  && e->ts.type != BT_PROCEDURE
  			  && !sym->attr.elemental)
  			{
  			  tree var;
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 7605,7610 ****
--- 7617,7632 ----
  	      gfc_init_block (&class_se.pre);
  	      gfc_init_block (&class_se.post);
  
+ 	      if (e->expr_type != EXPR_VARIABLE)
+ 		{
+ 		  int n;
+ 		  /* Set the bounds and offset correctly.  */
+ 		  for (n = 0; n < e->rank; n++)
+ 		    gfc_conv_shift_descriptor_lbound (&class_se.pre,
+ 						      class_se.expr,
+ 						      n, gfc_index_one_node);
+ 		}
+ 
  	      /* The conversion does not repackage the reference to a class
  	         array - _data descriptor.  */
  	      gfc_conv_class_to_class (&class_se, e, fsym->ts, false,
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 7623,7628 ****
--- 7645,7682 ----
  					     : &parmse.pre;
  	      gfc_add_block_to_block (class_pre_block, &class_se.pre);
  	      gfc_add_block_to_block (&parmse.post, &class_se.post);
+ 
+ 	      if (e->expr_type == EXPR_OP
+ 		  && POINTER_TYPE_P (TREE_TYPE (parmse.expr))
+ 		  && GFC_CLASS_TYPE_P (TREE_TYPE (TREE_OPERAND (parmse.expr, 0))))
+ 		{
+ 		  tree cond;
+ 		  tree dealloc_expr = gfc_finish_block (&parmse.post);
+ 		  tmp = TREE_OPERAND (parmse.expr, 0);
+ 		  gfc_init_block (&parmse.post);
+ 		  cond = gfc_class_data_get (tmp);
+ 		  tmp = gfc_deallocate_alloc_comp_no_caf (e->ts.u.derived,
+ 							  tmp, e->rank, true);
+ 		  gfc_add_expr_to_block (&parmse.post, tmp);
+ 		  cond = gfc_class_data_get (TREE_OPERAND (parmse.expr, 0));
+ 		  cond = gfc_conv_descriptor_data_get (cond);
+ 		  cond = fold_build2_loc (input_location, NE_EXPR,
+ 					  logical_type_node, cond,
+ 					  build_int_cst (TREE_TYPE (cond), 0));
+ 		  tmp = build3_v (COND_EXPR, cond, dealloc_expr,
+ 				  build_empty_stmt (input_location));
+ 
+ 		  /* This specific case should not be processed further and so
+ 		     bundle everything up and proceed to the next argument.  */
+ 		  if (fsym && need_interface_mapping && e)
+ 		    gfc_add_interface_mapping (&mapping, fsym, &parmse, e);
+ 		  gfc_add_expr_to_block (&parmse.post, tmp);
+ 		  gfc_add_block_to_block (&se->pre, &parmse.pre);
+ 		  gfc_add_block_to_block (&post, &parmse.post);
+ 		  gfc_add_block_to_block (&se->finalblock, &parmse.finalblock);
+ 		  vec_safe_push (arglist, parmse.expr);
+ 		  continue;
+ 		}
  	    }
  	  else
  	    {
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 7744,7750 ****
  		       && (fsym->attr.target
  			   ? gfc_is_not_contiguous (e)
  			   : !gfc_is_simply_contiguous (e, false, true))
! 		       && gfc_expr_is_variable (e))
  		{
  		  gfc_conv_subref_array_arg (&parmse, e, nodesc_arg,
  					     fsym->attr.intent,
--- 7798,7805 ----
  		       && (fsym->attr.target
  			   ? gfc_is_not_contiguous (e)
  			   : !gfc_is_simply_contiguous (e, false, true))
! 		       && gfc_expr_is_variable (e)
! 		       && e->rank != -1)
  		{
  		  gfc_conv_subref_array_arg (&parmse, e, nodesc_arg,
  					     fsym->attr.intent,
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 8834,8861 ****
  	  && se->expr && GFC_CLASS_TYPE_P (TREE_TYPE (se->expr))
  	  && expr->must_finalize)
  	{
! 	  int n;
! 	  if (se->ss && se->ss->loop)
! 	    {
! 	      gfc_add_block_to_block (&se->ss->loop->pre, &se->pre);
! 	      se->expr = gfc_evaluate_now (se->expr, &se->ss->loop->pre);
! 	      tmp = gfc_class_data_get (se->expr);
! 	      info->descriptor = tmp;
! 	      info->data = gfc_conv_descriptor_data_get (tmp);
! 	      info->offset = gfc_conv_descriptor_offset_get (tmp);
! 	      for (n = 0; n < se->ss->loop->dimen; n++)
! 		{
! 		  tree dim = gfc_rank_cst[n];
! 		  se->ss->loop->to[n] = gfc_conv_descriptor_ubound_get (tmp, dim);
! 		  se->ss->loop->from[n] = gfc_conv_descriptor_lbound_get (tmp, dim);
! 		}
! 	    }
! 	  else
! 	    {
! 	      /* TODO Eliminate the doubling of temporaries. This
! 		 one is necessary to ensure no memory leakage.  */
! 	      se->expr = gfc_evaluate_now (se->expr, &se->pre);
! 	    }
  
  	  /* Finalize the result, if necessary.  */
  	  attr = expr->value.function.esym
--- 8889,8897 ----
  	  && se->expr && GFC_CLASS_TYPE_P (TREE_TYPE (se->expr))
  	  && expr->must_finalize)
  	{
! 	  /* TODO Eliminate the doubling of temporaries.  This
! 	     one is necessary to ensure no memory leakage.  */
! 	  se->expr = gfc_evaluate_now (se->expr, &se->pre);
  
  	  /* Finalize the result, if necessary.  */
  	  attr = expr->value.function.esym
*************** gfc_trans_pointer_assignment (gfc_expr *
*** 11222,11242 ****
  	  int dim;
  	  gcc_assert (remap->u.ar.dimen == expr1->rank);
  
  	  if (rank_remap)
  	    {
  	      /* Do rank remapping.  We already have the RHS's descriptor
  		 converted in rse and now have to build the correct LHS
  		 descriptor for it.  */
  
! 	      tree dtype, data, span;
  	      tree offs, stride;
  	      tree lbound, ubound;
  
- 	      /* Set dtype.  */
- 	      dtype = gfc_conv_descriptor_dtype (desc);
- 	      tmp = gfc_get_dtype (TREE_TYPE (desc));
- 	      gfc_add_modify (&block, dtype, tmp);
- 
  	      /* Copy data pointer.  */
  	      data = gfc_conv_descriptor_data_get (rse.expr);
  	      gfc_conv_descriptor_data_set (&block, desc, data);
--- 11258,11290 ----
  	  int dim;
  	  gcc_assert (remap->u.ar.dimen == expr1->rank);
  
+ 	  /* Always set dtype.  */
+ 	  tree dtype = gfc_conv_descriptor_dtype (desc);
+ 	  tmp = gfc_get_dtype (TREE_TYPE (desc));
+ 	  gfc_add_modify (&block, dtype, tmp);
+ 
+ 	  /* For unlimited polymorphic LHS use elem_len from RHS.  */
+ 	  if (UNLIMITED_POLY (expr1) && expr2->ts.type != BT_CLASS)
+ 	    {
+ 	      tree elem_len;
+ 	      tmp = TYPE_SIZE_UNIT (gfc_typenode_for_spec (&expr2->ts));
+ 	      elem_len = fold_convert (gfc_array_index_type, tmp);
+ 	      elem_len = gfc_evaluate_now (elem_len, &block);
+ 	      tmp = gfc_conv_descriptor_elem_len (desc);
+ 	      gfc_add_modify (&block, tmp,
+ 			      fold_convert (TREE_TYPE (tmp), elem_len));
+ 	    }
+ 
  	  if (rank_remap)
  	    {
  	      /* Do rank remapping.  We already have the RHS's descriptor
  		 converted in rse and now have to build the correct LHS
  		 descriptor for it.  */
  
! 	      tree data, span;
  	      tree offs, stride;
  	      tree lbound, ubound;
  
  	      /* Copy data pointer.  */
  	      data = gfc_conv_descriptor_data_get (rse.expr);
  	      gfc_conv_descriptor_data_set (&block, desc, data);
*************** gfc_trans_arrayfunc_assign (gfc_expr * e
*** 11943,11950 ****
    gfc_symbol *sym = expr1->symtree->n.sym;
    bool finalizable =  gfc_may_be_finalized (expr1->ts);
  
    if (arrayfunc_assign_needs_temporary (expr1, expr2))
!     return NULL;
  
    /* The frontend doesn't seem to bother filling in expr->symtree for intrinsic
       functions.  */
--- 11991,12003 ----
    gfc_symbol *sym = expr1->symtree->n.sym;
    bool finalizable =  gfc_may_be_finalized (expr1->ts);
  
+   /* If the symbol is host associated and has not been referenced in its name
+      space, it might be lacking a backend_decl and vtable.  */
+   if (sym->backend_decl == NULL_TREE)
+     return NULL_TREE;
+ 
    if (arrayfunc_assign_needs_temporary (expr1, expr2))
!     return NULL_TREE;
  
    /* The frontend doesn't seem to bother filling in expr->symtree for intrinsic
       functions.  */
*************** gfc_trans_arrayfunc_assign (gfc_expr * e
*** 11954,11960 ****
  	      || (comp && comp->attr.dimension)
  	      || (!comp && gfc_return_by_reference (expr2->value.function.esym)
  		  && expr2->value.function.esym->result->attr.dimension)))
!     return NULL;
  
    gfc_init_se (&se, NULL);
    gfc_start_block (&se.pre);
--- 12007,12013 ----
  	      || (comp && comp->attr.dimension)
  	      || (!comp && gfc_return_by_reference (expr2->value.function.esym)
  		  && expr2->value.function.esym->result->attr.dimension)))
!     return NULL_TREE;
  
    gfc_init_se (&se, NULL);
    gfc_start_block (&se.pre);
diff -Nrcpad gcc-15.2.0/gcc/fortran/trans-intrinsic.cc gcc-15.3.0/gcc/fortran/trans-intrinsic.cc
*** gcc-15.2.0/gcc/fortran/trans-intrinsic.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/trans-intrinsic.cc	Fri Jun 12 06:09:06 2026
*************** gfc_conv_is_contiguous_expr (gfc_se *se,
*** 2315,2324 ****
--- 2315,2328 ----
    int i;
    tree fncall0;
    gfc_array_spec *as;
+   gfc_symbol *sym = NULL;
  
    if (arg->ts.type == BT_CLASS)
      gfc_add_class_array_ref (arg);
  
+   if (arg->expr_type == EXPR_VARIABLE)
+     sym = arg->symtree->n.sym;
+ 
    ss = gfc_walk_expr (arg);
    gcc_assert (ss != gfc_ss_terminator);
    gfc_init_se (&argse, NULL);
*************** gfc_conv_is_contiguous_expr (gfc_se *se,
*** 2341,2347 ****
        fncall0 = build_call_expr_loc (input_location,
  				     gfor_fndecl_is_contiguous0, 1, desc);
        se->expr = fncall0;
!       se->expr = convert (logical_type_node, se->expr);
      }
    else
      {
--- 2345,2351 ----
        fncall0 = build_call_expr_loc (input_location,
  				     gfor_fndecl_is_contiguous0, 1, desc);
        se->expr = fncall0;
!       se->expr = convert (boolean_type_node, se->expr);
      }
    else
      {
*************** gfc_conv_is_contiguous_expr (gfc_se *se,
*** 2373,2378 ****
--- 2377,2398 ----
  	}
        se->expr = cond;
      }
+ 
+   /* A pointer that does not have the CONTIGUOUS attribute needs to be checked
+      if it points to an array whose span differs from the element size.  */
+   if (as && sym && IS_POINTER(sym) && !sym->attr.contiguous)
+     {
+       tree span = gfc_conv_descriptor_span_get (desc);
+       tmp = fold_convert (TREE_TYPE (span),
+ 			  gfc_conv_descriptor_elem_len (desc));
+       cond = fold_build2_loc (input_location, EQ_EXPR, boolean_type_node,
+ 			      span, tmp);
+       se->expr = fold_build2_loc (input_location, TRUTH_ANDIF_EXPR,
+ 				  boolean_type_node, cond,
+ 				  convert (boolean_type_node, se->expr));
+     }
+ 
+   gfc_free_ss_chain (ss);
  }
  
  
*************** gfc_conv_intrinsic_transfer (gfc_se * se
*** 8541,8553 ****
      }
    else
      {
        argse.want_pointer = 0;
        gfc_conv_expr_descriptor (&argse, arg->expr);
        source = gfc_conv_descriptor_data_get (argse.expr);
        source_type = gfc_get_element_type (TREE_TYPE (argse.expr));
  
        /* Repack the source if not simply contiguous.  */
!       if (!gfc_is_simply_contiguous (arg->expr, false, true))
  	{
  	  tmp = gfc_build_addr_expr (NULL_TREE, argse.expr);
  
--- 8561,8578 ----
      }
    else
      {
+       bool simply_contiguous = gfc_is_simply_contiguous (arg->expr,
+ 							 false, true);
        argse.want_pointer = 0;
+       /* A non-contiguous SOURCE needs packing.  */
+       if (!simply_contiguous)
+ 	argse.force_tmp = 1;
        gfc_conv_expr_descriptor (&argse, arg->expr);
        source = gfc_conv_descriptor_data_get (argse.expr);
        source_type = gfc_get_element_type (TREE_TYPE (argse.expr));
  
        /* Repack the source if not simply contiguous.  */
!       if (!simply_contiguous)
  	{
  	  tmp = gfc_build_addr_expr (NULL_TREE, argse.expr);
  
*************** gfc_conv_intrinsic_transfer (gfc_se * se
*** 8584,8590 ****
  				       argse.string_length);
        else if (arg->expr->ts.type == BT_CLASS)
  	{
! 	  class_ref = TREE_OPERAND (argse.expr, 0);
  	  tmp = gfc_class_vtab_size_get (class_ref);
  	  if (UNLIMITED_POLY (arg->expr))
  	    tmp = gfc_resize_class_size_with_len (&argse.pre, class_ref, tmp);
--- 8609,8620 ----
  				       argse.string_length);
        else if (arg->expr->ts.type == BT_CLASS)
  	{
! 	  if (UNLIMITED_POLY (source_expr)
! 	      && DECL_LANG_SPECIFIC (source_expr->symtree->n.sym->backend_decl))
! 	    class_ref = GFC_DECL_SAVED_DESCRIPTOR
! 	      (source_expr->symtree->n.sym->backend_decl);
! 	  else
! 	    class_ref = TREE_OPERAND (argse.expr, 0);
  	  tmp = gfc_class_vtab_size_get (class_ref);
  	  if (UNLIMITED_POLY (arg->expr))
  	    tmp = gfc_resize_class_size_with_len (&argse.pre, class_ref, tmp);
*************** conv_isocbinding_function (gfc_se *se, g
*** 9647,9653 ****
        se->expr = gfc_evaluate_now (se->expr, &se->pre);
      }
    else if (expr->value.function.isym->id == GFC_ISYM_C_FUNLOC)
!     gfc_conv_expr_reference (se, arg->expr);
    else if (expr->value.function.isym->id == GFC_ISYM_C_ASSOCIATED)
      {
        gfc_se arg1se;
--- 9677,9693 ----
        se->expr = gfc_evaluate_now (se->expr, &se->pre);
      }
    else if (expr->value.function.isym->id == GFC_ISYM_C_FUNLOC)
!     {
!       gfc_conv_expr_reference (se, arg->expr);
!       if (arg->expr->symtree->n.sym->attr.proc_pointer
! 	  && arg->expr->symtree->n.sym->attr.dummy)
! 	se->expr = build_fold_indirect_ref_loc (input_location, se->expr);
!       /* The code below is necessary to create a reference from the calling
! 	 subprogram to the argument of C_FUNLOC() in the call graph.
! 	 Please see PR 117303 for more details. */
!       se->expr = convert (pvoid_type_node, se->expr);
!       se->expr = gfc_evaluate_now (se->expr, &se->pre);
!     }
    else if (expr->value.function.isym->id == GFC_ISYM_C_ASSOCIATED)
      {
        gfc_se arg1se;
diff -Nrcpad gcc-15.2.0/gcc/fortran/trans-io.cc gcc-15.3.0/gcc/fortran/trans-io.cc
*** gcc-15.2.0/gcc/fortran/trans-io.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/trans-io.cc	Fri Jun 12 06:09:06 2026
*************** gfc_build_io_library_fndecls (void)
*** 416,422 ****
  	integer_type_node, gfc_charlen_type_node);
  
    iocall[IOCALL_X_DERIVED] = gfc_build_library_function_decl_with_spec (
! 	get_identifier (PREFIX("transfer_derived")), ". w r ",
  	void_type_node, 2, dt_parm_type, pvoid_type_node);
  
    /* Library entry points */
--- 416,422 ----
  	integer_type_node, gfc_charlen_type_node);
  
    iocall[IOCALL_X_DERIVED] = gfc_build_library_function_decl_with_spec (
! 	get_identifier (PREFIX("transfer_derived")), ". w w ",
  	void_type_node, 2, dt_parm_type, pvoid_type_node);
  
    /* Library entry points */
*************** transfer_expr (gfc_se * se, gfc_typespec
*** 2511,2517 ****
  
  		  if (c->attr.dimension)
  		    {
! 		      tmp = transfer_array_component (tmp, c, & code->loc);
  		      gfc_add_expr_to_block (&se->pre, tmp);
  		    }
  		  else
--- 2511,2519 ----
  
  		  if (c->attr.dimension)
  		    {
! 		      tmp = transfer_array_component (tmp, c,
! 						      code ? &code->loc
! 						      : NULL);
  		      gfc_add_expr_to_block (&se->pre, tmp);
  		    }
  		  else
*************** gfc_trans_transfer (gfc_code * code)
*** 2645,2651 ****
  	 && ((expr->symtree->n.sym->ts.type == BT_DERIVED && expr->ts.deferred)
  	     || (expr->symtree->n.sym->assoc
  		 && expr->symtree->n.sym->assoc->variable)
! 	     || gfc_expr_attr (expr).pointer))
  	goto scalarize;
  
        /* With array-bounds checking enabled, force scalarization in some
--- 2647,2655 ----
  	 && ((expr->symtree->n.sym->ts.type == BT_DERIVED && expr->ts.deferred)
  	     || (expr->symtree->n.sym->assoc
  		 && expr->symtree->n.sym->assoc->variable)
! 	     || gfc_expr_attr (expr).pointer
! 	     || (expr->symtree->n.sym->attr.pointer
! 		 && gfc_expr_attr (expr).target)))
  	goto scalarize;
  
        /* With array-bounds checking enabled, force scalarization in some
diff -Nrcpad gcc-15.2.0/gcc/fortran/trans-openmp.cc gcc-15.3.0/gcc/fortran/trans-openmp.cc
*** gcc-15.2.0/gcc/fortran/trans-openmp.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/trans-openmp.cc	Fri Jun 12 06:09:06 2026
*************** gfc_omp_replace_alloc_by_to_mapping (tre
*** 466,473 ****
  }
  
  
- /* Return true if TYPE is polymorphic but not with pointer attribute.  */
- 
  static bool
  gfc_is_polymorphic_nonptr (tree type)
  {
--- 466,471 ----
*************** gfc_is_polymorphic_nonptr (tree type)
*** 476,481 ****
--- 474,503 ----
    return GFC_CLASS_TYPE_P (type);
  }
  
+ /* Return true if TYPE is a class container for a POINTER entity.  */
+ 
+ static bool
+ gfc_is_class_pointer_type (tree type)
+ {
+   tree name;
+   const char *s;
+ 
+   if (POINTER_TYPE_P (type))
+     type = TREE_TYPE (type);
+ 
+   if (!GFC_CLASS_TYPE_P (type))
+     return false;
+ 
+   name = TYPE_NAME (type);
+   if (name && TREE_CODE (name) == TYPE_DECL)
+     name = DECL_NAME (name);
+   if (!name)
+     return false;
+ 
+   s = IDENTIFIER_POINTER (name);
+   return startswith (s, "__class_") && s[strlen (s) - 1] == 'p';
+ }
+ 
  /* Return true if TYPE is unlimited polymorphic but not with pointer attribute;
     unlimited means also intrinsic types are handled and _len is used.  */
  
*************** gfc_omp_clause_default_ctor (tree clause
*** 815,821 ****
        return NULL_TREE;
      }
  
!   gcc_assert (outer != NULL_TREE);
  
    /* Allocatable arrays and scalars in PRIVATE clauses need to be set to
       "not currently allocated" allocation status if outer
--- 837,846 ----
        return NULL_TREE;
      }
  
!   gcc_assert (outer != NULL_TREE
! 	      || (!GFC_DESCRIPTOR_TYPE_P (type)
! 		  && !gfc_has_alloc_comps (type, OMP_CLAUSE_DECL (clause),
! 					   false)));
  
    /* Allocatable arrays and scalars in PRIVATE clauses need to be set to
       "not currently allocated" allocation status if outer
*************** gfc_omp_clause_copy_ctor (tree clause, t
*** 905,926 ****
  {
    tree type = TREE_TYPE (dest), ptr, size, call;
    tree decl_type = TREE_TYPE (OMP_CLAUSE_DECL (clause));
    tree cond, then_b, else_b;
    stmtblock_t block, cond_block;
  
    gcc_assert (OMP_CLAUSE_CODE (clause) == OMP_CLAUSE_FIRSTPRIVATE
  	      || OMP_CLAUSE_CODE (clause) == OMP_CLAUSE_LINEAR);
  
!   /* Privatize pointer, only; cf. gfc_omp_predetermined_sharing. */
!   if (DECL_P (OMP_CLAUSE_DECL (clause))
!       && GFC_DECL_ASSOCIATE_VAR_P (OMP_CLAUSE_DECL (clause)))
!     return build2 (MODIFY_EXPR, TREE_TYPE (dest), dest, src);
  
!   if (DECL_ARTIFICIAL (OMP_CLAUSE_DECL (clause))
!       && DECL_LANG_SPECIFIC (OMP_CLAUSE_DECL (clause))
!       && GFC_DECL_SAVED_DESCRIPTOR (OMP_CLAUSE_DECL (clause)))
!     decl_type
!       = TREE_TYPE (GFC_DECL_SAVED_DESCRIPTOR (OMP_CLAUSE_DECL (clause)));
  
    if (gfc_is_polymorphic_nonptr (decl_type))
      {
--- 930,958 ----
  {
    tree type = TREE_TYPE (dest), ptr, size, call;
    tree decl_type = TREE_TYPE (OMP_CLAUSE_DECL (clause));
+   tree orig_decl = OMP_CLAUSE_DECL (clause);
    tree cond, then_b, else_b;
    stmtblock_t block, cond_block;
  
    gcc_assert (OMP_CLAUSE_CODE (clause) == OMP_CLAUSE_FIRSTPRIVATE
  	      || OMP_CLAUSE_CODE (clause) == OMP_CLAUSE_LINEAR);
  
!   if (DECL_ARTIFICIAL (orig_decl)
!       && DECL_LANG_SPECIFIC (orig_decl)
!       && GFC_DECL_SAVED_DESCRIPTOR (orig_decl))
!     {
!       orig_decl = GFC_DECL_SAVED_DESCRIPTOR (orig_decl);
!       decl_type = TREE_TYPE (orig_decl);
!     }
  
!   /* Privatize pointer association only; cf. gfc_omp_predetermined_sharing.
!      This includes scalar class pointers, whose tree type is still the class
!      record even though the Fortran entity has POINTER semantics.  */
!   if (DECL_P (orig_decl)
!       && (GFC_DECL_ASSOCIATE_VAR_P (orig_decl)
! 	  || GFC_DECL_GET_SCALAR_POINTER (orig_decl)
! 	  || gfc_is_class_pointer_type (decl_type)))
!     return build2 (MODIFY_EXPR, TREE_TYPE (dest), dest, src);
  
    if (gfc_is_polymorphic_nonptr (decl_type))
      {
*************** gfc_omp_clause_dtor (tree clause, tree d
*** 1428,1444 ****
  {
    tree type = TREE_TYPE (decl), tem;
    tree decl_type = TREE_TYPE (OMP_CLAUSE_DECL (clause));
  
!   /* Only pointer was privatized; cf. gfc_omp_clause_copy_ctor. */
!   if (DECL_P (OMP_CLAUSE_DECL (clause))
!       && GFC_DECL_ASSOCIATE_VAR_P (OMP_CLAUSE_DECL (clause)))
!     return NULL_TREE;
  
!   if (DECL_ARTIFICIAL (OMP_CLAUSE_DECL (clause))
!       && DECL_LANG_SPECIFIC (OMP_CLAUSE_DECL (clause))
!       && GFC_DECL_SAVED_DESCRIPTOR (OMP_CLAUSE_DECL (clause)))
!     decl_type
! 	= TREE_TYPE (GFC_DECL_SAVED_DESCRIPTOR (OMP_CLAUSE_DECL (clause)));
    if (gfc_is_polymorphic_nonptr (decl_type))
      {
        if (POINTER_TYPE_P (decl_type))
--- 1460,1482 ----
  {
    tree type = TREE_TYPE (decl), tem;
    tree decl_type = TREE_TYPE (OMP_CLAUSE_DECL (clause));
+   tree orig_decl = OMP_CLAUSE_DECL (clause);
  
!   if (DECL_ARTIFICIAL (orig_decl)
!       && DECL_LANG_SPECIFIC (orig_decl)
!       && GFC_DECL_SAVED_DESCRIPTOR (orig_decl))
!     {
!       orig_decl = GFC_DECL_SAVED_DESCRIPTOR (orig_decl);
!       decl_type = TREE_TYPE (orig_decl);
!     }
  
!   /* Only pointer association was privatized; cf. gfc_omp_clause_copy_ctor.
!      Scalar class pointers must not finalize or free their targets here.  */
!   if (DECL_P (orig_decl)
!       && (GFC_DECL_ASSOCIATE_VAR_P (orig_decl)
! 	  || GFC_DECL_GET_SCALAR_POINTER (orig_decl)
! 	  || gfc_is_class_pointer_type (decl_type)))
!     return NULL_TREE;
    if (gfc_is_polymorphic_nonptr (decl_type))
      {
        if (POINTER_TYPE_P (decl_type))
*************** gfc_omp_finish_clause (tree c, gimple_se
*** 1801,1809 ****
    else
      {
        if (OMP_CLAUSE_SIZE (c) == NULL_TREE)
! 	OMP_CLAUSE_SIZE (c)
! 	  = DECL_P (decl) ? DECL_SIZE_UNIT (decl)
! 			  : TYPE_SIZE_UNIT (TREE_TYPE (decl));
  
        tree type = TREE_TYPE (decl);
        if (POINTER_TYPE_P (type) && POINTER_TYPE_P (TREE_TYPE (type)))
--- 1839,1877 ----
    else
      {
        if (OMP_CLAUSE_SIZE (c) == NULL_TREE)
! 	{
! 	  if (DECL_P (decl))
! 	    OMP_CLAUSE_SIZE (c) = DECL_SIZE_UNIT (decl);
! 	  else
! 	    {
! 	      tree type = TREE_TYPE (decl);
! 	      tree size = TYPE_SIZE_UNIT (type);
! 	      /* For variable-length character types, TYPE_SIZE_UNIT is a
! 		 SAVE_EXPR.  Gimplifying the SAVE_EXPR (here or elsewhere)
! 		 resolves it in place, embedding a gimple temporary that
! 		 later causes an ICE in remap_type during inlining because
! 		 the temporary is not in scope (PR101760, PR102314).
! 		 Compute the size from the array domain and element size
! 		 to decouple completely from the type's SAVE_EXPRs.  */
! 	      if (size
! 		  && TREE_CODE (type) == ARRAY_TYPE
! 		  && TYPE_DOMAIN (type)
! 		  && TYPE_MAX_VALUE (TYPE_DOMAIN (type))
! 		  && !TREE_CONSTANT (TYPE_MAX_VALUE (TYPE_DOMAIN (type))))
! 		{
! 		  tree len = TYPE_MAX_VALUE (TYPE_DOMAIN (type));
! 		  tree lb = TYPE_MIN_VALUE (TYPE_DOMAIN (type));
! 		  tree eltsz = TYPE_SIZE_UNIT (TREE_TYPE (type));
! 		  len = fold_build2 (MINUS_EXPR, TREE_TYPE (len), len, lb);
! 		  len = fold_build2 (PLUS_EXPR, TREE_TYPE (len), len,
! 				     build_one_cst (TREE_TYPE (len)));
! 		  size = fold_build2 (MULT_EXPR, sizetype,
! 				      fold_convert (sizetype, len),
! 				      fold_convert (sizetype, eltsz));
! 		}
! 	      OMP_CLAUSE_SIZE (c) = size;
! 	    }
! 	}
  
        tree type = TREE_TYPE (decl);
        if (POINTER_TYPE_P (type) && POINTER_TYPE_P (TREE_TYPE (type)))
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 3972,3978 ****
  		{
  		  tree ptr;
  		  gfc_init_se (&se, NULL);
! 		  if (n->expr->ref->u.ar.type == AR_ELEMENT)
  		    {
  		      gfc_conv_expr_reference (&se, n->expr);
  		      ptr = se.expr;
--- 4040,4050 ----
  		{
  		  tree ptr;
  		  gfc_init_se (&se, NULL);
! 		  /* The first ref can be an element selection on the base
! 		     object while the full expression still denotes an array,
! 		     e.g. x(j)%a.  Pick the lowering path from the overall
! 		     expression rank, not from the first REF_ARRAY.  */
! 		  if (n->expr->rank == 0)
  		    {
  		      gfc_conv_expr_reference (&se, n->expr);
  		      ptr = se.expr;
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 4215,4220 ****
--- 4287,4300 ----
  				       != BT_VOID))))
  		    {
  		      tree orig_decl = decl;
+ 		      bool bare_attach_detach
+ 			= (openacc
+ 			   && (n->u.map.op == OMP_MAP_ATTACH
+ 			       || n->u.map.op == OMP_MAP_DETACH)
+ 			   && !GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (decl))
+ 			   && !(POINTER_TYPE_P (TREE_TYPE (decl))
+ 				&& GFC_DESCRIPTOR_TYPE_P (TREE_TYPE
+ 							  (TREE_TYPE (decl)))));
  
  		      /* For nonallocatable, nonpointer arrays, a temporary
  			 variable is generated, but this one is only defined if
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 4239,4244 ****
--- 4319,4336 ----
  							     cond, tmp,
  							     NULL_TREE));
  			}
+ 		      /* Bare OpenACC attach/detach on scalar pointer-like
+ 			 variables wants a single attach operation on the
+ 			 pointer itself, not a standalone pointer-mapping
+ 			 node.  Component and descriptor cases have dedicated
+ 			 handling below; this covers the plain scalar path.  */
+ 		      if (bare_attach_detach)
+ 			{
+ 			  decl = build_fold_indirect_ref (decl);
+ 			  OMP_CLAUSE_DECL (node) = build_fold_addr_expr (decl);
+ 			  OMP_CLAUSE_SIZE (node) = size_zero_node;
+ 			  goto finalize_map_clause;
+ 			}
  		      /* For descriptor types, the unmapping happens below.  */
  		      if (op != EXEC_OMP_TARGET_EXIT_DATA
  			  || !GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (decl)))
*************** gfc_trans_omp_depobj (gfc_code *code)
*** 7300,7306 ****
        else if (n->expr && n->expr->ref->u.ar.type != AR_FULL)
  	{
  	  gfc_init_se (&se, NULL);
! 	  if (n->expr->ref->u.ar.type == AR_ELEMENT)
  	    {
  	      gfc_conv_expr_reference (&se, n->expr);
  	      var = se.expr;
--- 7392,7398 ----
        else if (n->expr && n->expr->ref->u.ar.type != AR_FULL)
  	{
  	  gfc_init_se (&se, NULL);
! 	  if (n->expr->rank == 0)
  	    {
  	      gfc_conv_expr_reference (&se, n->expr);
  	      var = se.expr;
diff -Nrcpad gcc-15.2.0/gcc/fortran/trans-types.cc gcc-15.3.0/gcc/fortran/trans-types.cc
*** gcc-15.2.0/gcc/fortran/trans-types.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fortran/trans-types.cc	Fri Jun 12 06:09:06 2026
*************** along with GCC; see the file COPYING3.
*** 39,45 ****
  #include "dwarf2out.h"	/* For struct array_descr_info.  */
  #include "attribs.h"
  #include "alias.h"
! 
  
  #if (GFC_MAX_DIMENSIONS < 10)
  #define GFC_RANK_DIGITS 1
--- 39,45 ----
  #include "dwarf2out.h"	/* For struct array_descr_info.  */
  #include "attribs.h"
  #include "alias.h"
! 
  
  #if (GFC_MAX_DIMENSIONS < 10)
  #define GFC_RANK_DIGITS 1
*************** gfc_init_types (void)
*** 1132,1137 ****
--- 1132,1138 ----
      {
        type = gfc_build_uint_type (gfc_character_kinds[index].bit_size);
        type = build_qualified_type (type, TYPE_UNQUALIFIED);
+       TYPE_STRING_FLAG (type) = 1;
        snprintf (name_buf, sizeof(name_buf), "character(kind=%d)",
  		gfc_character_kinds[index].kind);
        PUSH_TYPE (name_buf, type);
*************** gfc_get_pchar_type (int kind)
*** 1277,1283 ****
    return index < 0 ? 0 : gfc_pcharacter_types[index];
  }
  
! 
  /* Create a character type with the given kind and length.  */
  
  tree
--- 1278,1284 ----
    return index < 0 ? 0 : gfc_pcharacter_types[index];
  }
  
! 
  /* Create a character type with the given kind and length.  */
  
  tree
*************** gfc_get_character_type (int kind, gfc_ch
*** 1313,1319 ****
  
    return gfc_get_character_type_len (kind, len);
  }
! 
  /* Convert a basic type.  This will be an array for character types.  */
  
  tree
--- 1314,1320 ----
  
    return gfc_get_character_type_len (kind, len);
  }
! 
  /* Convert a basic type.  This will be an array for character types.  */
  
  tree
*************** gfc_typenode_for_spec (gfc_typespec * sp
*** 1413,1419 ****
      }
    return basetype;
  }
! 
  /* Build an INT_CST for constant expressions, otherwise return NULL_TREE.  */
  
  static tree
--- 1414,1420 ----
      }
    return basetype;
  }
! 
  /* Build an INT_CST for constant expressions, otherwise return NULL_TREE.  */
  
  static tree
*************** gfc_conv_array_bound (gfc_expr * expr)
*** 1426,1432 ****
    /* Otherwise return NULL.  */
    return NULL_TREE;
  }
! 
  /* Return the type of an element of the array.  Note that scalar coarrays
     are special.  In particular, for GFC_ARRAY_TYPE_P, the original argument
     (with POINTER_TYPE stripped) is returned.  */
--- 1427,1433 ----
    /* Otherwise return NULL.  */
    return NULL_TREE;
  }
! 
  /* Return the type of an element of the array.  Note that scalar coarrays
     are special.  In particular, for GFC_ARRAY_TYPE_P, the original argument
     (with POINTER_TYPE stripped) is returned.  */
*************** gfc_get_element_type (tree type)
*** 1466,1472 ****
  
    return element;
  }
! 
  /* Build an array.  This function is called from gfc_sym_type().
     Actually returns array descriptor type.
  
--- 1467,1473 ----
  
    return element;
  }
! 
  /* Build an array.  This function is called from gfc_sym_type().
     Actually returns array descriptor type.
  
*************** gfc_build_array_type (tree type, gfc_arr
*** 1646,1652 ****
  				    corank, lbound, ubound, 0, akind,
  				    restricted);
  }
! 
  /* Returns the struct descriptor_dimension type.  */
  
  static tree
--- 1647,1653 ----
  				    corank, lbound, ubound, 0, akind,
  				    restricted);
  }
! 
  /* Returns the struct descriptor_dimension type.  */
  
  static tree
*************** gfc_get_array_type_bounds (tree etype, i
*** 2279,2285 ****
  
    return fat_type;
  }
! 
  /* Build a pointer type. This function is called from gfc_sym_type().  */
  
  static tree
--- 2280,2286 ----
  
    return fat_type;
  }
! 
  /* Build a pointer type. This function is called from gfc_sym_type().  */
  
  static tree
*************** gfc_nonrestricted_type (tree t)
*** 2454,2460 ****
    return ret;
  }
  
! 
  /* Return the type for a symbol.  Special handling is required for character
     types to get the correct level of indirection.
     For functions return the return type.
--- 2455,2461 ----
    return ret;
  }
  
! 
  /* Return the type for a symbol.  Special handling is required for character
     types to get the correct level of indirection.
     For functions return the return type.
*************** gfc_sym_type (gfc_symbol * sym, bool is_
*** 2583,2589 ****
  
    return (type);
  }
! 
  /* Layout and output debug info for a record type.  */
  
  void
--- 2584,2590 ----
  
    return (type);
  }
! 
  /* Layout and output debug info for a record type.  */
  
  void
*************** gfc_finish_type (tree type)
*** 2598,2604 ****
    rest_of_type_compilation (type, 1);
    rest_of_decl_compilation (decl, 1, 0);
  }
! 
  /* Add a field of given NAME and TYPE to the context of a UNION_TYPE
     or RECORD_TYPE pointed to by CONTEXT.  The new field is chained
     to the end of the field list pointed to by *CHAIN.
--- 2599,2605 ----
    rest_of_type_compilation (type, 1);
    rest_of_decl_compilation (decl, 1, 0);
  }
! 
  /* Add a field of given NAME and TYPE to the context of a UNION_TYPE
     or RECORD_TYPE pointed to by CONTEXT.  The new field is chained
     to the end of the field list pointed to by *CHAIN.
*************** gfc_return_by_reference (gfc_symbol * sy
*** 3242,3248 ****
  
    return 0;
  }
! 
  static tree
  gfc_get_mixed_entry_union (gfc_namespace *ns)
  {
--- 3243,3270 ----
  
    return 0;
  }
! 
! static tree
! gfc_get_entry_result_type (gfc_symbol *sym)
! {
!   tree type;
! 
!   type = gfc_sym_type (sym->result);
! 
!   /* Mixed ENTRY master unions must use the ABI return type of each entry.
!      Under -ff2c, default REAL entries return C double even though their
!      Fortran result symbol remains default REAL.  */
!   if (flag_f2c
!       && sym->ts.type == BT_REAL
!       && sym->ts.kind == gfc_default_real_kind
!       && !sym->attr.pointer
!       && !sym->attr.allocatable
!       && !sym->attr.always_explicit)
!     type = gfc_get_real_type (gfc_default_double_kind);
! 
!   return type;
! }
! 
  static tree
  gfc_get_mixed_entry_union (gfc_namespace *ns)
  {
*************** gfc_get_mixed_entry_union (gfc_namespace
*** 3271,3277 ****
        if (el == el2)
  	gfc_add_field_to_struct_1 (type,
  				   get_identifier (el->sym->result->name),
! 				   gfc_sym_type (el->sym->result), &chain);
      }
  
    /* Finish off the type.  */
--- 3293,3300 ----
        if (el == el2)
  	gfc_add_field_to_struct_1 (type,
  				   get_identifier (el->sym->result->name),
! 				   gfc_get_entry_result_type (el->sym),
! 				   &chain);
      }
  
    /* Finish off the type.  */
*************** gfc_get_mixed_entry_union (gfc_namespace
*** 3279,3285 ****
    TYPE_DECL_SUPPRESS_DEBUG (TYPE_STUB_DECL (type)) = 1;
    return type;
  }
! 
  /* Create a "fn spec" based on the formal arguments;
     cf. create_function_arglist.  */
  
--- 3302,3308 ----
    TYPE_DECL_SUPPRESS_DEBUG (TYPE_STUB_DECL (type)) = 1;
    return type;
  }
! 
  /* Create a "fn spec" based on the formal arguments;
     cf. create_function_arglist.  */
  
*************** gfc_get_function_type (gfc_symbol * sym,
*** 3436,3441 ****
--- 3459,3465 ----
  	}
      }
    if (sym->backend_decl == error_mark_node && actual_args != NULL
+       && sym->ts.interface == NULL
        && sym->formal == NULL && (sym->attr.proc == PROC_EXTERNAL
  				 || sym->attr.proc == PROC_UNKNOWN))
      gfc_get_formal_from_actual_arglist (sym, actual_args);
*************** arg_type_list_done:
*** 3599,3605 ****
  
    return type;
  }
! 
  /* Language hooks for middle-end access to type nodes.  */
  
  /* Return an integer type with BITS bits of precision,
--- 3623,3629 ----
  
    return type;
  }
! 
  /* Language hooks for middle-end access to type nodes.  */
  
  /* Return an integer type with BITS bits of precision,
diff -Nrcpad gcc-15.2.0/gcc/fwprop.cc gcc-15.3.0/gcc/fwprop.cc
*** gcc-15.2.0/gcc/fwprop.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/fwprop.cc	Fri Jun 12 06:09:06 2026
*************** forward_propagate_into (use_info *use, b
*** 836,841 ****
--- 836,855 ----
    if (def_insn->is_artificial ())
      return false;
  
+   /* Do not propagate asms.  The only kind of propagation that would
+      succeed is propagation into a register move.  Such a propagation
+      is neutral if the destination of the move is a pseudo and unnecessarily
+      restricts the register allocator if the destination of the move is
+      a hard register.
+ 
+      Furthermore, unlike for a normal instruction, we cannot take a SET from an
+      asm and try dropping the CLOBBERs.  The recog process does not (and should
+      not try to) second-guess whether what the user wrote can be changed and
+      so it has to assume that any asm given to it is a fair reflection of
+      what the user wrote.  */
+   if (def_insn->is_asm ())
+     return false;
+ 
    rtx_insn *def_rtl = def_insn->rtl ();
    if (!NONJUMP_INSN_P (def_rtl))
      return false;
diff -Nrcpad gcc-15.2.0/gcc/gcc.cc gcc-15.3.0/gcc/gcc.cc
*** gcc-15.2.0/gcc/gcc.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/gcc.cc	Fri Jun 12 06:09:06 2026
*************** find_fortran_preinclude_file (int argc,
*** 11092,11098 ****
    return result;
  }
  
! /* The function takes any number of arguments and joins them together.
  
     This seems to be necessary to build "-fjoined=foo.b" from "-fseparate foo.a"
     with a %{fseparate*:-fjoined=%.b$*} rule without adding undesired spaces:
--- 11092,11099 ----
    return result;
  }
  
! /* The function takes any number of arguments and joins them together,
!    escaping any special characters.
  
     This seems to be necessary to build "-fjoined=foo.b" from "-fseparate foo.a"
     with a %{fseparate*:-fjoined=%.b$*} rule without adding undesired spaces:
*************** find_fortran_preinclude_file (int argc,
*** 11105,11116 ****
  static const char *
  join_spec_func (int argc, const char **argv)
  {
!   if (argc == 1)
!     return argv[0];
!   for (int i = 0; i < argc; ++i)
!     obstack_grow (&obstack, argv[i], strlen (argv[i]));
!   obstack_1grow (&obstack, '\0');
!   return XOBFINISH (&obstack, const char *);
  }
  
  /* If any character in ORIG fits QUOTE_P (_, P), reallocate the string
--- 11106,11120 ----
  static const char *
  join_spec_func (int argc, const char **argv)
  {
!   const char *result = argv[0];
!   if (argc != 1)
!     {
!       for (int i = 0; i < argc; ++i)
! 	obstack_grow (&obstack, argv[i], strlen (argv[i]));
!       obstack_1grow (&obstack, '\0');
!       result = XOBFINISH (&obstack, const char *);
!     }
!   return quote_spec (xstrdup (result));
  }
  
  /* If any character in ORIG fits QUOTE_P (_, P), reallocate the string
diff -Nrcpad gcc-15.2.0/gcc/gimple-crc-optimization.cc gcc-15.3.0/gcc/gimple-crc-optimization.cc
*** gcc-15.2.0/gcc/gimple-crc-optimization.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/gimple-crc-optimization.cc	Fri Jun 12 06:09:06 2026
*************** along with GCC; see the file COPYING3.
*** 32,37 ****
--- 32,39 ----
  #include "cfgloop.h"
  #include "tree-scalar-evolution.h"
  #include "crc-verification.h"
+ #include "internal-fn.h"
+ #include "predict.h"
  
  class crc_optimization {
   private:
*************** class crc_optimization {
*** 225,234 ****
    /* Returns phi statement which may hold the calculated CRC.  */
    gphi *get_output_phi ();
  
!   /* Attempts to optimize a CRC calculation loop by replacing it with a call to
!      an internal function (IFN_CRC or IFN_CRC_REV).
       Returns true if replacement succeeded, otherwise false.  */
!   bool optimize_crc_loop (gphi *output_crc);
  
   public:
    crc_optimization () : m_visited_stmts (BITMAP_ALLOC (NULL)),
--- 227,236 ----
    /* Returns phi statement which may hold the calculated CRC.  */
    gphi *get_output_phi ();
  
!   /* Attempts to optimize a CRC calculation calculated by LOOP by replacing it
!      with a call to an internal function (IFN_CRC or IFN_CRC_REV).
       Returns true if replacement succeeded, otherwise false.  */
!   bool optimize_crc_loop (class loop *loop, gphi *output_crc);
  
   public:
    crc_optimization () : m_visited_stmts (BITMAP_ALLOC (NULL)),
*************** crc_optimization::get_output_phi ()
*** 1221,1227 ****
     Returns true if replacement succeeded, otherwise false.  */
  
  bool
! crc_optimization::optimize_crc_loop (gphi *output_crc)
  {
    if (!output_crc)
      {
--- 1223,1229 ----
     Returns true if replacement succeeded, otherwise false.  */
  
  bool
! crc_optimization::optimize_crc_loop (class loop *loop, gphi *output_crc)
  {
    if (!output_crc)
      {
*************** crc_optimization::optimize_crc_loop (gph
*** 1260,1265 ****
--- 1262,1279 ----
    location_t loc;
    loc = EXPR_LOCATION (phi_result);
  
+   /* If the target does not have an expansion for CRC optimally then the table
+      based lookup will need at least 255-bytes of RODATA and won't be smaller
+      than the original code itself.  */
+   if (!optimize_loop_for_speed_p (loop))
+     {
+       tree data_type = TREE_TYPE (m_data_arg);
+       tree result_type = TREE_TYPE (phi_result);
+       auto ty_pair = tree_pair (data_type, result_type);
+       if (!direct_internal_fn_supported_p (ifn, ty_pair, OPTIMIZE_FOR_BOTH))
+ 	return false;
+     }
+ 
    /* Add IFN call and write the return value in the phi_result.  */
    gcall *call = gimple_build_call_internal (ifn, 3, m_crc_arg, m_data_arg,
  					    polynomial_arg);
*************** crc_optimization::execute (function *fun
*** 1337,1343 ****
  	    fprintf (dump_file, "The loop with %d header BB index "
  				"calculates CRC!\n", m_crc_loop->header->index);
  
! 	  if (!optimize_crc_loop (output_crc))
  	    {
  	      if (dump_file)
  		fprintf (dump_file, "Couldn't generate faster CRC code.\n");
--- 1351,1357 ----
  	    fprintf (dump_file, "The loop with %d header BB index "
  				"calculates CRC!\n", m_crc_loop->header->index);
  
! 	  if (!optimize_crc_loop (loop, output_crc))
  	    {
  	      if (dump_file)
  		fprintf (dump_file, "Couldn't generate faster CRC code.\n");
diff -Nrcpad gcc-15.2.0/gcc/gimple-fold.cc gcc-15.3.0/gcc/gimple-fold.cc
*** gcc-15.2.0/gcc/gimple-fold.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/gimple-fold.cc	Fri Jun 12 06:09:06 2026
*************** gimple_fold_call (gimple_stmt_iterator *
*** 5913,5918 ****
--- 5913,5922 ----
    if (inplace)
      return changed;
  
+   /* Don't constant fold functions which can change the control. */
+   if (gimple_call_ctrl_altering_p (stmt))
+     return changed;
+ 
    /* Check for builtins that CCP can handle using information not
       available in the generic fold routines.  */
    if (gimple_call_builtin_p (stmt, BUILT_IN_NORMAL))
*************** fold_stmt_1 (gimple_stmt_iterator *gsi,
*** 6636,6649 ****
        gimple_seq seq = NULL;
        gimple_match_op res_op;
        if (gimple_simplify (stmt, &res_op, inplace ? NULL : &seq,
! 			   valueize, valueize))
! 	{
! 	  if (replace_stmt_with_simplification (gsi, &res_op, &seq, inplace,
! 						dce_worklist))
! 	    changed = true;
! 	  else
! 	    gimple_seq_discard (seq);
! 	}
      }
  
    stmt = gsi_stmt (*gsi);
--- 6640,6651 ----
        gimple_seq seq = NULL;
        gimple_match_op res_op;
        if (gimple_simplify (stmt, &res_op, inplace ? NULL : &seq,
! 			   valueize, valueize)
! 	  && replace_stmt_with_simplification (gsi, &res_op, &seq, inplace,
! 					       dce_worklist))
! 	changed = true;
!       else
! 	gimple_seq_discard (seq);
      }
  
    stmt = gsi_stmt (*gsi);
diff -Nrcpad gcc-15.2.0/gcc/gimple-isel.cc gcc-15.3.0/gcc/gimple-isel.cc
*** gcc-15.2.0/gcc/gimple-isel.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/gimple-isel.cc	Fri Jun 12 06:09:06 2026
*************** gimple_expand_vec_set_extract_expr (stru
*** 101,106 ****
--- 101,116 ----
        tree pos = TREE_OPERAND (ref, 1);
  
        tree view_op0 = TREE_OPERAND (op0, 0);
+ 
+       tree idx = TREE_OPERAND (ref, 1);
+       // if index is a constant, then check the bounds
+       poly_uint64 idx_poly;
+       if (poly_int_tree_p (idx, &idx_poly))
+ 	{
+ 	  poly_uint64 nelts = TYPE_VECTOR_SUBPARTS (TREE_TYPE (view_op0));
+ 	  if (known_gt (idx_poly, nelts))
+ 	    return false;
+ 	}
        machine_mode outermode = TYPE_MODE (TREE_TYPE (view_op0));
        machine_mode extract_mode = TYPE_MODE (TREE_TYPE (ref));
  
diff -Nrcpad gcc-15.2.0/gcc/gimple-lower-bitint.cc gcc-15.3.0/gcc/gimple-lower-bitint.cc
*** gcc-15.2.0/gcc/gimple-lower-bitint.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/gimple-lower-bitint.cc	Fri Jun 12 06:09:06 2026
*************** enum bitint_prec_kind {
*** 76,82 ****
  /* Caches to speed up bitint_precision_kind.  */
  
  static int small_max_prec, mid_min_prec, large_min_prec, huge_min_prec;
! static int limb_prec;
  
  /* Categorize _BitInt(PREC) as small, middle, large or huge.  */
  
--- 76,82 ----
  /* Caches to speed up bitint_precision_kind.  */
  
  static int small_max_prec, mid_min_prec, large_min_prec, huge_min_prec;
! static int limb_prec, abi_limb_prec;
  
  /* Categorize _BitInt(PREC) as small, middle, large or huge.  */
  
*************** bitint_precision_kind (int prec)
*** 106,111 ****
--- 106,114 ----
      large_min_prec = MAX_FIXED_MODE_SIZE + 1;
    if (!limb_prec)
      limb_prec = GET_MODE_PRECISION (limb_mode);
+   if (!abi_limb_prec)
+     abi_limb_prec
+       = GET_MODE_PRECISION (as_a <scalar_int_mode> (info.abi_limb_mode));
    if (!huge_min_prec)
      {
        if (4 * limb_prec >= MAX_FIXED_MODE_SIZE)
*************** bitint_large_huge::handle_load (gimple *
*** 1851,1856 ****
--- 1854,1863 ----
    edge eh_edge = NULL;
    gimple *g;
  
+   if (TREE_CODE (rhs1) == BIT_FIELD_REF
+       && integer_zerop (TREE_OPERAND (rhs1, 2)))
+     rhs1 = TREE_OPERAND (rhs1, 0);
+ 
    if (eh)
      {
        edge_iterator ei;
*************** range_to_prec (tree op, gimple *stmt)
*** 2213,2219 ****
     from that precision, if it is negative, the operand is sign-extended
     from -*PREC.  If PREC_STORED is NULL, it is the toplevel call,
     otherwise *PREC_STORED is prec from the innermost call without
!    range optimizations.  */
  
  tree
  bitint_large_huge::handle_operand_addr (tree op, gimple *stmt,
--- 2220,2226 ----
     from that precision, if it is negative, the operand is sign-extended
     from -*PREC.  If PREC_STORED is NULL, it is the toplevel call,
     otherwise *PREC_STORED is prec from the innermost call without
!    range optimizations (0 for uninitialized SSA_NAME).  */
  
  tree
  bitint_large_huge::handle_operand_addr (tree op, gimple *stmt,
*************** bitint_large_huge::handle_operand_addr (
*** 2318,2324 ****
  	    {
  	      *prec = TYPE_UNSIGNED (TREE_TYPE (op)) ? limb_prec : -limb_prec;
  	      if (prec_stored)
! 		*prec_stored = *prec;
  	      tree var = create_tmp_var (m_limb_type);
  	      TREE_ADDRESSABLE (var) = 1;
  	      ret = build_fold_addr_expr (var);
--- 2325,2331 ----
  	    {
  	      *prec = TYPE_UNSIGNED (TREE_TYPE (op)) ? limb_prec : -limb_prec;
  	      if (prec_stored)
! 		*prec_stored = 0;
  	      tree var = create_tmp_var (m_limb_type);
  	      TREE_ADDRESSABLE (var) = 1;
  	      ret = build_fold_addr_expr (var);
*************** bitint_large_huge::handle_operand_addr (
*** 2346,2351 ****
--- 2353,2360 ----
  		  tree rhs_type = TREE_TYPE (rhs1);
  		  int prec_stored_val = 0;
  		  ret = handle_operand_addr (rhs1, g, &prec_stored_val, prec);
+ 		  if (prec_stored)
+ 		    *prec_stored = prec_stored_val;
  		  if (TYPE_PRECISION (lhs_type) > TYPE_PRECISION (rhs_type))
  		    {
  		      if (TYPE_UNSIGNED (lhs_type)
*************** bitint_large_huge::handle_operand_addr (
*** 2354,2360 ****
  		    }
  		  else
  		    {
! 		      if (*prec > 0 && *prec < TYPE_PRECISION (lhs_type))
  			;
  		      else if (TYPE_UNSIGNED (lhs_type))
  			{
--- 2363,2371 ----
  		    }
  		  else
  		    {
! 		      if (prec_stored_val == 0)
! 			/* Non-widening cast of uninitialized value.  */;
! 		      else if (*prec > 0 && *prec < TYPE_PRECISION (lhs_type))
  			;
  		      else if (TYPE_UNSIGNED (lhs_type))
  			{
*************** bitint_dom_walker::before_dom_children (
*** 5892,5898 ****
  	    vuse = vop;
  	  if (vuse != lvop
  	      && walk_non_aliased_vuses (&ref, vuse, false, vuse_eq,
! 					 NULL, NULL, limit, lvop) == NULL)
  	    bitmap_clear_bit (m_loads, SSA_NAME_VERSION (s));
  	}
      }
--- 5903,5909 ----
  	    vuse = vop;
  	  if (vuse != lvop
  	      && walk_non_aliased_vuses (&ref, vuse, false, vuse_eq,
! 					 NULL, NULL, NULL, limit, lvop) == NULL)
  	    bitmap_clear_bit (m_loads, SSA_NAME_VERSION (s));
  	}
      }
*************** static unsigned int
*** 6071,6077 ****
  gimple_lower_bitint (void)
  {
    small_max_prec = mid_min_prec = large_min_prec = huge_min_prec = 0;
!   limb_prec = 0;
  
    unsigned int i;
    for (i = 0; i < num_ssa_names; ++i)
--- 6082,6088 ----
  gimple_lower_bitint (void)
  {
    small_max_prec = mid_min_prec = large_min_prec = huge_min_prec = 0;
!   limb_prec = abi_limb_prec = 0;
  
    unsigned int i;
    for (i = 0; i < num_ssa_names; ++i)
*************** gimple_lower_bitint (void)
*** 6593,6607 ****
  	      if (is_gimple_assign (SSA_NAME_DEF_STMT (s)))
  		switch (gimple_assign_rhs_code (SSA_NAME_DEF_STMT (s)))
  		  {
  		  case IMAGPART_EXPR:
  		    {
! 		      tree rhs1 = gimple_assign_rhs1 (SSA_NAME_DEF_STMT (s));
  		      rhs1 = TREE_OPERAND (rhs1, 0);
  		      if (TREE_CODE (rhs1) == SSA_NAME)
  			{
  			  gimple *g = SSA_NAME_DEF_STMT (rhs1);
  			  if (optimizable_arith_overflow (g))
! 			    continue;
  			}
  		    }
  		    /* FALLTHRU */
--- 6604,6665 ----
  	      if (is_gimple_assign (SSA_NAME_DEF_STMT (s)))
  		switch (gimple_assign_rhs_code (SSA_NAME_DEF_STMT (s)))
  		  {
+ 		  case REALPART_EXPR:
  		  case IMAGPART_EXPR:
  		    {
! 		      gimple *ds = SSA_NAME_DEF_STMT (s);
! 		      tree rhs1 = gimple_assign_rhs1 (ds);
  		      rhs1 = TREE_OPERAND (rhs1, 0);
  		      if (TREE_CODE (rhs1) == SSA_NAME)
  			{
  			  gimple *g = SSA_NAME_DEF_STMT (rhs1);
  			  if (optimizable_arith_overflow (g))
! 			    {
! 			      if (gimple_assign_rhs_code (ds) == IMAGPART_EXPR)
! 				continue;
! 			      if (gimple_store_p (use_stmt))
! 				{
! 				  /* Punt if the cast use of IMAGPART_EXPR stmt
! 				     appears before the store use_stmt, because
! 				     optimizable arith overflow can't be
! 				     lowered at the store location in that case.
! 				     See PR121828.  */
! 				  gimple_stmt_iterator gsi
! 				    = gsi_for_stmt (use_stmt);
! 				  unsigned int cnt = 0;
! 				  do
! 				    {
! 				      gsi_prev_nondebug (&gsi);
! 				      if (gsi_end_p (gsi))
! 					break;
! 				      gimple *g2 = gsi_stmt (gsi);
! 				      if (g2 == ds)
! 					break;
! 				      if (++cnt == 64)
! 					break;
! 				      if (!gimple_assign_cast_p (g2))
! 					continue;
! 				      tree rhs2 = gimple_assign_rhs1 (g2);
! 				      if (TREE_CODE (rhs2) != SSA_NAME)
! 					continue;
! 				      gimple *g3 = SSA_NAME_DEF_STMT (rhs2);
! 				      if (!is_gimple_assign (g3))
! 					continue;
! 				      if (gimple_assign_rhs_code (g3)
! 					  != IMAGPART_EXPR)
! 					continue;
! 				      rhs2 = gimple_assign_rhs1 (g3);
! 				      rhs2 = TREE_OPERAND (rhs2, 0);
! 				      if (rhs2 != rhs1)
! 					continue;
! 				      cnt = 64;
! 				      break;
! 				    }
! 				  while (1);
! 				  if (cnt == 64)
! 				    break;
! 				}
! 			    }
  			}
  		    }
  		    /* FALLTHRU */
*************** gimple_lower_bitint (void)
*** 6612,6618 ****
  		  case EXACT_DIV_EXPR:
  		  case TRUNC_MOD_EXPR:
  		  case FIX_TRUNC_EXPR:
- 		  case REALPART_EXPR:
  		    if (gimple_store_p (use_stmt)
  			&& is_gimple_assign (use_stmt)
  			&& !gimple_has_volatile_ops (use_stmt)
--- 6670,6675 ----
*************** gimple_lower_bitint (void)
*** 7032,7038 ****
  		       from smaller number.  */
  		    min_prec = prec;
  		  else
! 		    min_prec = CEIL (min_prec, limb_prec) * limb_prec;
  		  if (min_prec == 0)
  		    c = NULL_TREE;
  		  else if (min_prec == prec)
--- 7089,7108 ----
  		       from smaller number.  */
  		    min_prec = prec;
  		  else
! 		    {
! 		      min_prec = CEIL (min_prec, limb_prec) * limb_prec;
! 		      if (min_prec > (unsigned) limb_prec
! 			  && abi_limb_prec > limb_prec)
! 			{
! 			  /* For targets with ABI limb precision higher than
! 			     limb precision round to ABI limb precision,
! 			     otherwise c can contain padding bits.  */
! 			  min_prec
! 			    = CEIL (min_prec, abi_limb_prec) * abi_limb_prec;
! 			  if (min_prec > prec - rem - 2 * limb_prec)
! 			    min_prec = prec;
! 			}
! 		    }
  		  if (min_prec == 0)
  		    c = NULL_TREE;
  		  else if (min_prec == prec)
*************** gimple_lower_bitint (void)
*** 7073,7078 ****
--- 7143,7153 ----
  							   vtype, c));
  			}
  		      gsi_insert_on_edge (e, g);
+ 		      if (min_prec == prec)
+ 			{
+ 			  edge_insertions = true;
+ 			  break;
+ 			}
  		    }
  		  if (ext == 0)
  		    {
diff -Nrcpad gcc-15.2.0/gcc/gimple-range-gori.cc gcc-15.3.0/gcc/gimple-range-gori.cc
*** gcc-15.2.0/gcc/gimple-range-gori.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/gimple-range-gori.cc	Fri Jun 12 06:09:06 2026
*************** gori_map::exports (basic_block bb)
*** 383,388 ****
--- 383,410 ----
    return m_outgoing[bb->index];
  }
  
+ // Return the bitmap vector of all exports AND their dependencies from BB
+ // in TMPBIT.  Calculate if necessary.  Return TMPBIT.
+ 
+ bitmap
+ gori_map::exports_and_deps (basic_block bb, bitmap tmpbit)
+ {
+   if (bb->index >= (signed int)m_outgoing.length () || !m_outgoing[bb->index])
+     calculate_gori (bb);
+   bitmap_copy (tmpbit, m_outgoing[bb->index]);
+   if (!bitmap_empty_p (tmpbit))
+     {
+       tree name;
+       FOR_EACH_GORI_EXPORT_NAME (this, bb, name)
+ 	{
+ 	  bitmap dep = get_def_chain (name);
+ 	  if (dep)
+ 	    bitmap_ior_into (tmpbit, dep);
+ 	}
+     }
+   return tmpbit;
+ }
+ 
  // Return the bitmap vector of all imports to BB.  Calculate if necessary.
  
  bitmap
diff -Nrcpad gcc-15.2.0/gcc/gimple-range-gori.h gcc-15.3.0/gcc/gimple-range-gori.h
*** gcc-15.2.0/gcc/gimple-range-gori.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/gimple-range-gori.h	Fri Jun 12 06:09:06 2026
*************** public:
*** 99,104 ****
--- 99,105 ----
    bool is_export_p (tree name, basic_block bb = NULL);
    bool is_import_p (tree name, basic_block bb);
    bitmap exports (basic_block bb);
+   bitmap exports_and_deps (basic_block bb, bitmap tmpbit);
    bitmap imports (basic_block bb);
    void set_range_invariant (tree name, bool invariant = true);
  
*************** bool gori_on_edge (class ssa_cache &r, e
*** 223,229 ****
  bool gori_name_on_edge (vrange &r, tree name, edge e, range_query *q = NULL);
  
  // For each name that is an import into BB's exports..
! #define FOR_EACH_GORI_IMPORT_NAME(gorimap, bb, name)			\
    for (gori_export_iterator iter ((gorimap)->imports ((bb)));	\
         ((name) = iter.get_name ());				\
         iter.next ())
--- 224,230 ----
  bool gori_name_on_edge (vrange &r, tree name, edge e, range_query *q = NULL);
  
  // For each name that is an import into BB's exports..
! #define FOR_EACH_GORI_IMPORT_NAME(gorimap, bb, name)		\
    for (gori_export_iterator iter ((gorimap)->imports ((bb)));	\
         ((name) = iter.get_name ());				\
         iter.next ())
*************** bool gori_name_on_edge (vrange &r, tree
*** 234,239 ****
--- 235,246 ----
         ((name) = iter.get_name ());				\
         iter.next ())
  
+ // For each name and all their dependencies possibly exported from block BB.
+ #define FOR_EACH_GORI_EXPORT_AND_DEP_NAME(gorimap, bb, name, bm)	   \
+   for (gori_export_iterator iter ((gorimap)->exports_and_deps ((bb),(bm))); \
+        ((name) = iter.get_name ());					   \
+        iter.next ())
+ 
  // Used to assist with iterating over the GORI export list in various ways
  class gori_export_iterator {
  public:
diff -Nrcpad gcc-15.2.0/gcc/gimple-range-op.cc gcc-15.3.0/gcc/gimple-range-op.cc
*** gcc-15.2.0/gcc/gimple-range-op.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/gimple-range-op.cc	Fri Jun 12 06:09:06 2026
*************** gimple_range_op_handler::maybe_non_stand
*** 1347,1383 ****
    gcc_checking_assert (signed_op);
    range_op_handler unsigned_op (OP_WIDEN_MULT_UNSIGNED);
    gcc_checking_assert (unsigned_op);
  
    if (gimple_code (m_stmt) == GIMPLE_ASSIGN)
      switch (gimple_assign_rhs_code (m_stmt))
        {
  	case WIDEN_MULT_EXPR:
- 	{
  	  m_op1 = gimple_assign_rhs1 (m_stmt);
  	  m_op2 = gimple_assign_rhs2 (m_stmt);
! 	  tree ret = gimple_assign_lhs (m_stmt);
! 	  bool signed1 = TYPE_SIGN (TREE_TYPE (m_op1)) == SIGNED;
! 	  bool signed2 = TYPE_SIGN (TREE_TYPE (m_op2)) == SIGNED;
! 	  bool signed_ret = TYPE_SIGN (TREE_TYPE (ret)) == SIGNED;
! 
! 	  /* Normally these operands should all have the same sign, but
! 	     some passes and violate this by taking mismatched sign args.  At
! 	     the moment the only one that's possible is mismatch inputs and
! 	     unsigned output.  Once ranger supports signs for the operands we
! 	     can properly fix it,  for now only accept the case we can do
! 	     correctly.  */
! 	  if ((signed1 ^ signed2) && signed_ret)
! 	    return;
! 
! 	  if (signed2 && !signed1)
! 	    std::swap (m_op1, m_op2);
  
! 	  if (signed1 || signed2)
  	    m_operator = signed_op.range_op ();
  	  else
  	    m_operator = unsigned_op.range_op ();
  	  break;
! 	}
  	default:
  	  break;
        }
--- 1347,1377 ----
    gcc_checking_assert (signed_op);
    range_op_handler unsigned_op (OP_WIDEN_MULT_UNSIGNED);
    gcc_checking_assert (unsigned_op);
+   range_op_handler signed_unsigned_op (OP_WIDEN_MULT_SIGNED_UNSIGNED);
+   gcc_checking_assert (signed_unsigned_op);
+   bool signed1, signed2;
  
    if (gimple_code (m_stmt) == GIMPLE_ASSIGN)
      switch (gimple_assign_rhs_code (m_stmt))
        {
  	case WIDEN_MULT_EXPR:
  	  m_op1 = gimple_assign_rhs1 (m_stmt);
  	  m_op2 = gimple_assign_rhs2 (m_stmt);
! 	  signed1 = TYPE_SIGN (TREE_TYPE (m_op1)) == SIGNED;
! 	  signed2 = TYPE_SIGN (TREE_TYPE (m_op2)) == SIGNED;
  
! 	  if (signed1 != signed2)
! 	    {
! 	      if (signed2 && !signed1)
! 		std::swap (m_op1, m_op2);
! 	      m_operator = signed_unsigned_op.range_op ();
! 	    }
! 	  else if (signed1)
  	    m_operator = signed_op.range_op ();
  	  else
  	    m_operator = unsigned_op.range_op ();
  	  break;
! 
  	default:
  	  break;
        }
*************** gimple_range_op_handler::maybe_builtin_c
*** 1404,1409 ****
--- 1398,1405 ----
    switch (func)
      {
      case CFN_BUILT_IN_CONSTANT_P:
+       if (gimple_call_num_args (call) != 1)
+ 	return;
        m_op1 = gimple_call_arg (call, 0);
        if (irange::supports_p (TREE_TYPE (m_op1)))
  	m_operator = &op_cfn_constant_p;
*************** gimple_range_op_handler::maybe_builtin_c
*** 1412,1432 ****
--- 1408,1436 ----
        break;
  
      CASE_FLT_FN (CFN_BUILT_IN_SIGNBIT):
+       if (gimple_call_num_args (call) != 1)
+ 	return;
        m_op1 = gimple_call_arg (call, 0);
        m_operator = &op_cfn_signbit;
        break;
  
      CASE_FLT_FN (BUILT_IN_ISINF):
+       if (gimple_call_num_args (call) != 1)
+ 	return;
        m_op1 = gimple_call_arg (call, 0);
        m_operator = &op_cfn_isinf;
        break;
  
      case CFN_BUILT_IN_ISFINITE:
+       if (gimple_call_num_args (call) != 1)
+ 	return;
        m_op1 = gimple_call_arg (call, 0);
        m_operator = &op_cfn_isfinite;
        break;
  
      case CFN_BUILT_IN_ISNORMAL:
+       if (gimple_call_num_args (call) != 1)
+ 	return;
        m_op1 = gimple_call_arg (call, 0);
        m_operator = &op_cfn_isnormal;
        break;
*************** gimple_range_op_handler::maybe_builtin_c
*** 1557,1563 ****
      default:
        {
  	unsigned arg;
! 	if (gimple_call_fnspec (call).returns_arg (&arg) && arg == 0)
  	  {
  	    m_op1 = gimple_call_arg (call, 0);
  	    m_operator = &op_cfn_pass_through_arg1;
--- 1561,1569 ----
      default:
        {
  	unsigned arg;
! 	if (gimple_call_fnspec (call).returns_arg (&arg)
! 	    && arg == 0
! 	    && gimple_call_num_args (call) > 0)
  	  {
  	    m_op1 = gimple_call_arg (call, 0);
  	    m_operator = &op_cfn_pass_through_arg1;
diff -Nrcpad gcc-15.2.0/gcc/gimple-ssa-isolate-paths.cc gcc-15.3.0/gcc/gimple-ssa-isolate-paths.cc
*** gcc-15.2.0/gcc/gimple-ssa-isolate-paths.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/gimple-ssa-isolate-paths.cc	Fri Jun 12 06:09:06 2026
*************** handle_return_addr_local_phi_arg (basic_
*** 641,647 ****
        if (!return_stmt)
  	continue;
  
!       if (gimple_return_retval (return_stmt) != lhs)
  	continue;
  
        /* Add an entry for the return statement and the locations
--- 641,648 ----
        if (!return_stmt)
  	continue;
  
!       if (gimple_return_retval (return_stmt) != lhs
! 	  || !dominated_by_p (CDI_DOMINATORS, gimple_bb (use_stmt), bb))
  	continue;
  
        /* Add an entry for the return statement and the locations
*************** find_implicit_erroneous_behavior (void)
*** 715,738 ****
   	 is then dereferenced within BB.  This is somewhat overly
  	 conservative, but probably catches most of the interesting
  	 cases.   */
        for (si = gsi_start_phis (bb); !gsi_end_p (si); gsi_next (&si))
  	{
  	  gphi *phi = si.phi ();
  	  tree lhs = gimple_phi_result (phi);
  
- 	  /* Initial number of PHI arguments.  The result may change
- 	     from one iteration of the loop below to the next in
- 	     response to changes to the CFG but only the initial
- 	     value is stored below for use by diagnostics.  */
- 	  unsigned nargs = gimple_phi_num_args (phi);
- 
  	  /* PHI produces a pointer result.  See if any of the PHI's
  	     arguments are NULL.
  
  	     When we remove an edge, we want to reprocess the current
  	     index since the argument at that index will have been
  	     removed, hence the ugly way we update I for each iteration.  */
- 	  basic_block duplicate = NULL;
  	  for (unsigned i = 0, next_i = 0;
  	       i < gimple_phi_num_args (phi); i = next_i)
  	    {
--- 716,733 ----
   	 is then dereferenced within BB.  This is somewhat overly
  	 conservative, but probably catches most of the interesting
  	 cases.   */
+       basic_block duplicate = NULL;
        for (si = gsi_start_phis (bb); !gsi_end_p (si); gsi_next (&si))
  	{
  	  gphi *phi = si.phi ();
  	  tree lhs = gimple_phi_result (phi);
  
  	  /* PHI produces a pointer result.  See if any of the PHI's
  	     arguments are NULL.
  
  	     When we remove an edge, we want to reprocess the current
  	     index since the argument at that index will have been
  	     removed, hence the ugly way we update I for each iteration.  */
  	  for (unsigned i = 0, next_i = 0;
  	       i < gimple_phi_num_args (phi); i = next_i)
  	    {
*************** find_implicit_erroneous_behavior (void)
*** 742,756 ****
  	      /* Advance the argument index unless a path involving
  		 the current argument has been isolated.  */
  	      next_i = i + 1;
- 	      bool isolated = false;
- 	      duplicate = handle_return_addr_local_phi_arg (bb, duplicate, lhs,
- 							    arg, e, locmap,
- 							    nargs, &isolated);
- 	      if (isolated)
- 		{
- 		  cfg_altered = true;
- 		  next_i = i;
- 		}
  
  	      if (!integer_zerop (arg))
  		continue;
--- 737,742 ----
*************** find_implicit_erroneous_behavior (void)
*** 788,793 ****
--- 774,821 ----
  		}
  	    }
  	}
+ 
+       /* Then look for a PHI which have addresses of locals that
+ 	 are then returned.  */
+       duplicate = NULL;
+       for (si = gsi_start_phis (bb); !gsi_end_p (si); gsi_next (&si))
+ 	{
+ 	  gphi *phi = si.phi ();
+ 	  tree lhs = gimple_phi_result (phi);
+ 
+ 	  /* Initial number of PHI arguments.  The result may change
+ 	     from one iteration of the loop below to the next in
+ 	     response to changes to the CFG but only the initial
+ 	     value is stored below for use by diagnostics.  */
+ 	  unsigned nargs = gimple_phi_num_args (phi);
+ 
+ 	  /* PHI produces a pointer result.  See if any of the PHI's
+ 	     arguments are NULL.
+ 
+ 	     When we remove an edge, we want to reprocess the current
+ 	     index since the argument at that index will have been
+ 	     removed, hence the ugly way we update I for each iteration.  */
+ 	  for (unsigned i = 0, next_i = 0;
+ 	       i < gimple_phi_num_args (phi); i = next_i)
+ 	    {
+ 	      tree arg = gimple_phi_arg_def (phi, i);
+ 	      edge e = gimple_phi_arg_edge (phi, i);
+ 
+ 	      /* Advance the argument index unless a path involving
+ 		 the current argument has been isolated.  */
+ 	      next_i = i + 1;
+ 	      bool isolated = false;
+ 	      duplicate = handle_return_addr_local_phi_arg (bb, duplicate, lhs,
+ 							    arg, e, locmap,
+ 							    nargs, &isolated);
+ 	      if (isolated)
+ 		{
+ 		  cfg_altered = true;
+ 		  next_i = i;
+ 		}
+ 	    }
+ 	}
+ 
      }
  
    diag_returned_locals (false, locmap);
diff -Nrcpad gcc-15.2.0/gcc/gimple.h gcc-15.3.0/gcc/gimple.h
*** gcc-15.2.0/gcc/gimple.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/gimple.h	Fri Jun 12 06:09:06 2026
*************** struct GTY((tag("GSS_ASSUME")))
*** 865,871 ****
     tell the runtime that it should begin the transaction in
     serial-irrevocable mode.  */
  #define GTMA_DOES_GO_IRREVOCABLE	(1u << 6)
! /* The transaction contains no instrumentation code whatsover, most
     likely because it is guaranteed to go irrevocable upon entry.  */
  #define GTMA_HAS_NO_INSTRUMENTATION	(1u << 7)
  
--- 865,871 ----
     tell the runtime that it should begin the transaction in
     serial-irrevocable mode.  */
  #define GTMA_DOES_GO_IRREVOCABLE	(1u << 6)
! /* The transaction contains no instrumentation code whatsoever, most
     likely because it is guaranteed to go irrevocable upon entry.  */
  #define GTMA_HAS_NO_INSTRUMENTATION	(1u << 7)
  
diff -Nrcpad gcc-15.2.0/gcc/gimplify-me.cc gcc-15.3.0/gcc/gimplify-me.cc
*** gcc-15.2.0/gcc/gimplify-me.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/gimplify-me.cc	Fri Jun 12 06:09:06 2026
*************** gimple_regimplify_operands (gimple *stmt
*** 232,240 ****
  	  else if (i == 2
  		   && gimple_assign_single_p (stmt)
  		   && num_ops == 2)
! 	    gimplify_expr (&op, &pre, NULL,
! 			   rhs_predicate_for (gimple_assign_lhs (stmt)),
! 			   fb_rvalue);
  	  else if (i == 2 && is_gimple_call (stmt))
  	    {
  	      if (TREE_CODE (op) == FUNCTION_DECL)
--- 232,244 ----
  	  else if (i == 2
  		   && gimple_assign_single_p (stmt)
  		   && num_ops == 2)
! 	    {
! 	      if (gimple_clobber_p (stmt))
! 		continue;
! 	      gimplify_expr (&op, &pre, NULL,
! 			     rhs_predicate_for (gimple_assign_lhs (stmt)),
! 			     fb_rvalue);
! 	    }
  	  else if (i == 2 && is_gimple_call (stmt))
  	    {
  	      if (TREE_CODE (op) == FUNCTION_DECL)
*************** gimple_regimplify_operands (gimple *stmt
*** 253,260 ****
  	{
  	  bool need_temp = false;
  
! 	  if (gimple_assign_single_p (stmt)
! 	      && num_ops == 2)
  	    gimplify_expr (gimple_assign_rhs1_ptr (stmt), &pre, NULL,
  			   rhs_predicate_for (gimple_assign_lhs (stmt)),
  			   fb_rvalue);
--- 257,265 ----
  	{
  	  bool need_temp = false;
  
! 	  if (gimple_clobber_p (stmt))
! 	    ;
! 	  else if (gimple_assign_single_p (stmt) && num_ops == 2)
  	    gimplify_expr (gimple_assign_rhs1_ptr (stmt), &pre, NULL,
  			   rhs_predicate_for (gimple_assign_lhs (stmt)),
  			   fb_rvalue);
diff -Nrcpad gcc-15.2.0/gcc/gimplify.cc gcc-15.3.0/gcc/gimplify.cc
*** gcc-15.2.0/gcc/gimplify.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/gimplify.cc	Fri Jun 12 06:09:06 2026
*************** gimplify_call_expr (tree *expr_p, gimple
*** 4618,4623 ****
--- 4618,4643 ----
  	      *expr_p = NULL_TREE;
  	      return GS_ALL_DONE;
  	    }
+ 	  else if (ifn == IFN_UBSAN_BOUNDS
+ 		   && nargs == 3
+ 		   && integer_onep (CALL_EXPR_ARG (*expr_p, 0)))
+ 	    {
+ 	      /* If first argument is one, add TYPE_MAX_VALUE (TYPE_DOMAIN (t))
+ 		 to 3rd argument and change first argument to 0.  This is
+ 		 done by ubsan_instrument_bounds so that we can use the
+ 		 max value from gimplify_type_sizes here instead of original
+ 		 expression for VLAs.  */
+ 	      tree type = TREE_TYPE (CALL_EXPR_ARG (*expr_p, 0));
+ 	      CALL_EXPR_ARG (*expr_p, 0) = build_int_cst (type, 0);
+ 	      gcc_assert (TREE_CODE (type) == POINTER_TYPE);
+ 	      type = TREE_TYPE (type);
+ 	      gcc_assert (TREE_CODE (type) == ARRAY_TYPE);
+ 	      tree maxv = TYPE_MAX_VALUE (TYPE_DOMAIN (type));
+ 	      gcc_assert (maxv);
+ 	      tree arg3 = CALL_EXPR_ARG (*expr_p, 2);
+ 	      CALL_EXPR_ARG (*expr_p, 2)
+ 		= fold_build2 (PLUS_EXPR, TREE_TYPE (arg3), maxv, arg3);
+ 	    }
  
  	  for (i = 0; i < nargs; i++)
  	    {
diff -Nrcpad gcc-15.2.0/gcc/glimits.h gcc-15.3.0/gcc/glimits.h
*** gcc-15.2.0/gcc/glimits.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/glimits.h	Fri Jun 12 06:09:06 2026
*************** see the files COPYING3 and COPYING.RUNTI
*** 162,168 ****
  #  define BITINT_MAXWIDTH __BITINT_MAXWIDTH__
  # endif
  
! # define __STDC_VERSION_LIMITS_H__	202311L
  #endif
  
  #endif /* _LIMITS_H___ */
--- 162,170 ----
  #  define BITINT_MAXWIDTH __BITINT_MAXWIDTH__
  # endif
  
! # ifndef __STDC_VERSION_LIMITS_H__
! #  define __STDC_VERSION_LIMITS_H__	202311L
! # endif
  #endif
  
  #endif /* _LIMITS_H___ */
diff -Nrcpad gcc-15.2.0/gcc/go/ChangeLog gcc-15.3.0/gcc/go/ChangeLog
*** gcc-15.2.0/gcc/go/ChangeLog	Fri Aug  8 06:52:35 2025
--- gcc-15.3.0/gcc/go/ChangeLog	Fri Jun 12 06:10:03 2026
***************
*** 1,3 ****
--- 1,7 ----
+ 2026-06-12  Release Manager
+ 
+ 	* GCC 15.3.0 released.
+ 
  2025-08-08  Release Manager
  
  	* GCC 15.2.0 released.
diff -Nrcpad gcc-15.2.0/gcc/ifcvt.cc gcc-15.3.0/gcc/ifcvt.cc
*** gcc-15.2.0/gcc/ifcvt.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ifcvt.cc	Fri Jun 12 06:09:06 2026
*************** noce_emit_store_flag (struct noce_if_inf
*** 893,898 ****
--- 893,902 ----
    if (cond_complex || !SCALAR_INT_MODE_P (GET_MODE (x)))
      return NULL_RTX;
  
+   /* Don't try if mode of X is more than the max fixed mode size.  */
+   if (known_le (MAX_FIXED_MODE_SIZE, GET_MODE_BITSIZE (GET_MODE (x))))
+     return NULL_RTX;
+ 
    return emit_store_flag (x, code, XEXP (cond, 0),
  			  XEXP (cond, 1), VOIDmode,
  			  (code == LTU || code == LEU
*************** noce_can_force_operand (rtx x)
*** 921,933 ****
        switch (GET_CODE (x))
  	{
  	case MULT:
- 	case DIV:
  	case MOD:
  	case UDIV:
  	case UMOD:
  	  return true;
  	default:
! 	  return code_to_optab (GET_CODE (x));
  	}
      }
    if (UNARY_P (x))
--- 925,943 ----
        switch (GET_CODE (x))
  	{
  	case MULT:
  	case MOD:
  	case UDIV:
  	case UMOD:
  	  return true;
+ 	case DIV:
+ 	  if (INTEGRAL_MODE_P (GET_MODE (x)))
+ 	    return true;
+ 	  /* FALLTHRU */
  	default:
! 	  auto optab = code_to_optab (GET_CODE (x));
! 	  if (!optab)
! 	    return false;
! 	  return optab_handler (optab, GET_MODE (x));
  	}
      }
    if (UNARY_P (x))
*************** noce_can_force_operand (rtx x)
*** 947,953 ****
  	case UNSIGNED_FLOAT:
  	  return true;
  	default:
! 	  return code_to_optab (GET_CODE (x));
  	}
      }
    return false;
--- 957,966 ----
  	case UNSIGNED_FLOAT:
  	  return true;
  	default:
! 	  auto optab = code_to_optab (GET_CODE (x));
! 	  if (!optab)
! 	    return false;
! 	  return optab_handler (optab, GET_MODE (x));
  	}
      }
    return false;
*************** find_if_header (basic_block test_bb, int
*** 4939,4945 ****
        && cond_exec_find_if_block (&ce_info))
      goto success;
  
!   if (targetm.have_trap ()
        && optab_handler (ctrap_optab, word_mode) != CODE_FOR_nothing
        && find_cond_trap (test_bb, then_edge, else_edge))
      goto success;
--- 4952,4958 ----
        && cond_exec_find_if_block (&ce_info))
      goto success;
  
!   if (!reload_completed && targetm.have_trap ()
        && optab_handler (ctrap_optab, word_mode) != CODE_FOR_nothing
        && find_cond_trap (test_bb, then_edge, else_edge))
      goto success;
diff -Nrcpad gcc-15.2.0/gcc/input.cc gcc-15.3.0/gcc/input.cc
*** gcc-15.2.0/gcc/input.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/input.cc	Fri Jun 12 06:09:06 2026
*************** get_end_location (class line_maps *set,
*** 1379,1385 ****
  static void
  write_digit (FILE *stream, int digit)
  {
!   fputc ('0' + (digit % 10), stream);
  }
  
  /* Helper function for dump_location_info.
--- 1379,1385 ----
  static void
  write_digit (FILE *stream, int digit)
  {
!   fputc ('0' + digit, stream);
  }
  
  /* Helper function for dump_location_info.
*************** write_digit_row (FILE *stream, int inden
*** 1396,1402 ****
    for (int column = 1; column < max_col; column++)
      {
        location_t column_loc = loc + (location_t (column) << map->m_range_bits);
!       write_digit (stream, column_loc / divisor);
      }
    fprintf (stream, "\n");
  }
--- 1396,1402 ----
    for (int column = 1; column < max_col; column++)
      {
        location_t column_loc = loc + (location_t (column) << map->m_range_bits);
!       write_digit (stream, (column_loc / divisor) % 10);
      }
    fprintf (stream, "\n");
  }
diff -Nrcpad gcc-15.2.0/gcc/ipa-cp.cc gcc-15.3.0/gcc/ipa-cp.cc
*** gcc-15.2.0/gcc/ipa-cp.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ipa-cp.cc	Fri Jun 12 06:09:06 2026
*************** initialize_node_lattices (struct cgraph_
*** 1368,1377 ****
        int caller_count = 0;
        node->call_for_symbol_thunks_and_aliases (count_callers, &caller_count,
  						true);
-       gcc_checking_assert (caller_count > 0);
        if (caller_count == 1)
  	node->call_for_symbol_thunks_and_aliases (set_single_call_flag,
  						  NULL, true);
      }
    else
      {
--- 1368,1381 ----
        int caller_count = 0;
        node->call_for_symbol_thunks_and_aliases (count_callers, &caller_count,
  						true);
        if (caller_count == 1)
  	node->call_for_symbol_thunks_and_aliases (set_single_call_flag,
  						  NULL, true);
+       else if (caller_count == 0)
+ 	{
+ 	  gcc_checking_assert (!opt_for_fn (node->decl, flag_toplevel_reorder));
+ 	  variable = true;
+ 	}
      }
    else
      {
*************** initialize_node_lattices (struct cgraph_
*** 1473,1479 ****
     propagated to a parameter of type PARAM_TYPE, or return a fold-converted
     VALUE to PARAM_TYPE if that is possible.  Return NULL_TREE otherwise.  */
  
! static tree
  ipacp_value_safe_for_type (tree param_type, tree value)
  {
    if (!value)
--- 1477,1483 ----
     propagated to a parameter of type PARAM_TYPE, or return a fold-converted
     VALUE to PARAM_TYPE if that is possible.  Return NULL_TREE otherwise.  */
  
! tree
  ipacp_value_safe_for_type (tree param_type, tree value)
  {
    if (!value)
*************** self_recursive_pass_through_p (cgraph_ed
*** 5314,5322 ****
  			       bool simple = true)
  {
    enum availability availability;
!   if (cs->caller == cs->callee->function_symbol (&availability)
        && availability > AVAIL_INTERPOSABLE
-       && jfunc->type == IPA_JF_PASS_THROUGH
        && (!simple || ipa_get_jf_pass_through_operation (jfunc) == NOP_EXPR)
        && ipa_get_jf_pass_through_formal_id (jfunc) == i
        && ipa_node_params_sum->get (cs->caller)
--- 5318,5326 ----
  			       bool simple = true)
  {
    enum availability availability;
!   if (jfunc->type == IPA_JF_PASS_THROUGH
!       && cs->caller == cs->callee->function_symbol (&availability)
        && availability > AVAIL_INTERPOSABLE
        && (!simple || ipa_get_jf_pass_through_operation (jfunc) == NOP_EXPR)
        && ipa_get_jf_pass_through_formal_id (jfunc) == i
        && ipa_node_params_sum->get (cs->caller)
*************** self_recursive_pass_through_p (cgraph_ed
*** 5325,5330 ****
--- 5329,5353 ----
    return false;
  }
  
+ /* Return true if JFUNC, which describes the i-th parameter of call CS, is an
+    ancestor function with zero offset to itself when the cgraph_node involved
+    is not an IPA-CP clone.  */
+ 
+ static bool
+ self_recursive_ancestor_p (cgraph_edge *cs, ipa_jump_func *jfunc, int i)
+ {
+   enum availability availability;
+   if (jfunc->type == IPA_JF_ANCESTOR
+       && cs->caller == cs->callee->function_symbol (&availability)
+       && availability > AVAIL_INTERPOSABLE
+       && ipa_get_jf_ancestor_offset (jfunc) == 0
+       && ipa_get_jf_ancestor_formal_id (jfunc) == i
+       && ipa_node_params_sum->get (cs->caller)
+       && !ipa_node_params_sum->get (cs->caller)->ipcp_orig_node)
+     return true;
+   return false;
+ }
+ 
  /* Return true if JFUNC, which describes a part of an aggregate represented or
     pointed to by the i-th parameter of call CS, is a pass-through function to
     itself when the cgraph_node involved is not an IPA-CP clone..  When
*************** find_more_scalar_values_for_callers_subs
*** 5411,5416 ****
--- 5434,5441 ----
  				op_type);
  	      t = ipacp_value_safe_for_type (type, t);
  	    }
+ 	  else if (self_recursive_ancestor_p (cs, jump_func, i))
+ 	    continue;
  	  else
  	    t = ipa_value_from_jfunc (ipa_node_params_sum->get (cs->caller),
  				      jump_func, type);
*************** push_agg_values_for_index_from_edge (str
*** 5576,5582 ****
  	      && !src_plats->aggs_bottom
  	      && (agg_jf_preserved || !src_plats->aggs_by_ref))
  	    {
! 	      if (interim && self_recursive_pass_through_p (cs, jfunc, index))
  		{
  		  interim->push_adjusted_values (src_idx, index, unit_delta,
  						 res);
--- 5601,5608 ----
  	      && !src_plats->aggs_bottom
  	      && (agg_jf_preserved || !src_plats->aggs_by_ref))
  	    {
! 	      if (interim && (self_recursive_pass_through_p (cs, jfunc, index)
! 			      || self_recursive_ancestor_p (cs, jfunc, index)))
  		{
  		  interim->push_adjusted_values (src_idx, index, unit_delta,
  						 res);
diff -Nrcpad gcc-15.2.0/gcc/ipa-cp.h gcc-15.3.0/gcc/ipa-cp.h
*** gcc-15.2.0/gcc/ipa-cp.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ipa-cp.h	Fri Jun 12 06:09:06 2026
*************** bool ipa_vr_operation_and_type_effects (
*** 309,314 ****
--- 309,315 ----
  					const ipa_vr &src_vr,
  					enum tree_code operation,
  					tree dst_type, tree src_type);
+ tree ipacp_value_safe_for_type (tree param_type, tree value);
  
  
  
diff -Nrcpad gcc-15.2.0/gcc/ipa-devirt.cc gcc-15.3.0/gcc/ipa-devirt.cc
*** gcc-15.2.0/gcc/ipa-devirt.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ipa-devirt.cc	Fri Jun 12 06:09:06 2026
*************** struct GTY(()) odr_type_d
*** 227,234 ****
--- 227,243 ----
    bool rtti_broken;
    /* Set when the canonical type is determined using the type name.  */
    bool tbaa_enabled;
+   /* Set when we determined there are no derived construction vtables.  */
+   bool no_derived_construction_vtables;
  };
  
+ /* ODR types also stored into ODR_TYPE vector to allow consistent
+    walking.  Bases appear before derived types.  Vector is garbage collected
+    so we won't end up visiting empty types.  */
+ 
+ static GTY(()) vec <odr_type, va_gc> *odr_types_ptr;
+ #define odr_types (*odr_types_ptr)
+ 
  /* Return TRUE if all derived types of T are known and thus
     we may consider the walk of derived type complete.
  
*************** type_all_ctors_visible_p (tree t)
*** 268,273 ****
--- 277,322 ----
  	 && type_in_anonymous_namespace_p (t);
  }
  
+ /* Return true if VTABLE is is a virtual table of an anonymous namespace
+    type and it is not the main virtual table for its type.  */
+ 
+ static bool
+ anonymous_construction_vtable_p (tree vtable)
+ {
+   if (!DECL_VIRTUAL_P (vtable)
+       || !type_in_anonymous_namespace_p (DECL_CONTEXT (vtable)))
+     return false;
+   tree vtable2 = BINFO_VTABLE (TYPE_BINFO (DECL_CONTEXT (vtable)));
+   if (TREE_CODE (vtable2) == POINTER_PLUS_EXPR)
+     vtable2 = TREE_OPERAND (TREE_OPERAND (vtable2, 0), 0);
+   return vtable2 != vtable;
+ }
+ 
+ /* Set if construction vtables are computed.  */
+ static bool construction_vtables_detected = false;
+ 
+ /* Mark all bases of T as having derived construction vtables.  */
+ 
+ static void
+ mark_derived_construction_vtables (odr_type t)
+ {
+   for (odr_type b: t->bases)
+     {
+       b->no_derived_construction_vtables = false;
+       mark_derived_construction_vtables (b);
+     }
+ }
+ 
+ /* Watch removal of construction vtables so we recompute their
+    existence.  */
+ 
+ void
+ construction_vtable_hook (varpool_node *v, void *)
+ {
+   if (anonymous_construction_vtable_p (v->decl))
+     construction_vtables_detected = false;
+ }
+ 
  /* Return TRUE if type may have instance.  */
  
  static bool
*************** type_possibly_instantiated_p (tree t)
*** 284,290 ****
    if (TREE_CODE (vtable) == POINTER_PLUS_EXPR)
      vtable = TREE_OPERAND (TREE_OPERAND (vtable, 0), 0);
    vnode = varpool_node::get (vtable);
!   return vnode && vnode->definition;
  }
  
  /* Return true if T or type derived from T may have instance.  */
--- 333,366 ----
    if (TREE_CODE (vtable) == POINTER_PLUS_EXPR)
      vtable = TREE_OPERAND (TREE_OPERAND (vtable, 0), 0);
    vnode = varpool_node::get (vtable);
!   if (vnode && vnode->definition)
!     return true;
! 
!   /* If T is derived, we may see only the construction vtable.
!      To find them, we need to walk symbol table. Cache the result
!      and only recompute when some vtables are removed.  This only
!      happens in unreachable node removal, which is only called
!      constant number of times during computation.  */
!   odr_type odr_t = get_odr_type (t);
!   if (odr_t->derived_types.length () && !construction_vtables_detected)
!     {
!       static bool hook_registered = false;
!       if (!hook_registered)
! 	{
! 	  symtab->add_varpool_removal_hook (construction_vtable_hook, NULL);
! 	  hook_registered = true;
! 	}
!       for (odr_type t: odr_types)
! 	if (t)
! 	  t->no_derived_construction_vtables = true;
!       FOR_EACH_VARIABLE (vnode)
! 	if (vnode->definition
! 	    && anonymous_construction_vtable_p (vnode->decl))
! 	  mark_derived_construction_vtables
! 	    (get_odr_type (DECL_CONTEXT (vnode->decl)));
!       construction_vtables_detected = true;
!     }
!   return !odr_t->no_derived_construction_vtables;
  }
  
  /* Return true if T or type derived from T may have instance.  */
*************** odr_name_hasher::remove (odr_type_d *v)
*** 507,519 ****
  typedef hash_table<odr_name_hasher> odr_hash_type;
  static odr_hash_type *odr_hash;
  
- /* ODR types are also stored into ODR_TYPE vector to allow consistent
-    walking.  Bases appear before derived types.  Vector is garbage collected
-    so we won't end up visiting empty types.  */
- 
- static GTY(()) vec <odr_type, va_gc> *odr_types_ptr;
- #define odr_types (*odr_types_ptr)
- 
  /* All enums defined and accessible for the unit.  */
  static GTY(()) vec <tree, va_gc> *odr_enums;
  
--- 583,588 ----
*************** get_odr_type (tree type, bool insert)
*** 1979,1984 ****
--- 2048,2054 ----
        val->type = type;
        val->bases = vNULL;
        val->derived_types = vNULL;
+       val->no_derived_construction_vtables = false;
        if (type_with_linkage_p (type))
          val->anonymous_namespace = type_in_anonymous_namespace_p (type);
        else
diff -Nrcpad gcc-15.2.0/gcc/ipa-modref-tree.cc gcc-15.3.0/gcc/ipa-modref-tree.cc
*** gcc-15.2.0/gcc/ipa-modref-tree.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ipa-modref-tree.cc	Fri Jun 12 06:09:06 2026
*************** modref_access_node::operator == (modref_
*** 59,65 ****
  bool
  modref_access_node::contains (const modref_access_node &a) const
  {
!   poly_int64 aoffset_adj = 0;
    if (parm_index != MODREF_UNKNOWN_PARM)
      {
        if (parm_index != a.parm_index)
--- 59,65 ----
  bool
  modref_access_node::contains (const modref_access_node &a) const
  {
!   poly_offset_int aoffset_adj = 0;
    if (parm_index != MODREF_UNKNOWN_PARM)
      {
        if (parm_index != a.parm_index)
*************** modref_access_node::contains (const modr
*** 80,86 ****
  	      a.offset may result in non-negative offset again.
  	      Ubsan fails on val << LOG_BITS_PER_UNIT where val
  	      is negative.  */
! 	   aoffset_adj = (a.parm_offset - parm_offset)
  			 * BITS_PER_UNIT;
  	}
      }
--- 80,87 ----
  	      a.offset may result in non-negative offset again.
  	      Ubsan fails on val << LOG_BITS_PER_UNIT where val
  	      is negative.  */
! 	   aoffset_adj = (poly_offset_int::from (a.parm_offset, SIGNED)
! 			  - poly_offset_int::from (parm_offset, SIGNED))
  			 * BITS_PER_UNIT;
  	}
      }
*************** modref_access_node::contains (const modr
*** 96,105 ****
  	      || !known_le (size, a.size)))
  	return false;
        if (known_size_p (max_size))
! 	return known_subrange_p (a.offset + aoffset_adj,
! 				 a.max_size, offset, max_size);
        else
! 	return known_le (offset, a.offset + aoffset_adj);
      }
    return true;
  }
--- 97,110 ----
  	      || !known_le (size, a.size)))
  	return false;
        if (known_size_p (max_size))
! 	return known_subrange_p (poly_offset_int::from (a.offset, SIGNED)
! 				 + aoffset_adj, a.max_size,
! 				 poly_offset_int::from (offset, SIGNED),
! 				 max_size);
        else
! 	return known_le (poly_offset_int::from (offset, SIGNED),
! 			 poly_offset_int::from (a.offset, SIGNED)
! 			 + aoffset_adj);
      }
    return true;
  }
diff -Nrcpad gcc-15.2.0/gcc/ipa-modref.cc gcc-15.3.0/gcc/ipa-modref.cc
*** gcc-15.2.0/gcc/ipa-modref.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ipa-modref.cc	Fri Jun 12 06:09:06 2026
*************** ipa_merge_modref_summary_after_inlining
*** 5342,5358 ****
  				      : NULL;
    class modref_summary_lto *callee_info_lto
  		 = summaries_lto ? summaries_lto->get (edge->callee) : NULL;
    int flags = flags_from_decl_or_type (edge->callee->decl);
!   /* Combine in outer flags.  */
!   cgraph_node *n;
!   for (n = edge->caller; n->inlined_to; n = n->callers->caller)
!     flags |= flags_from_decl_or_type (n->decl);
!   flags |= flags_from_decl_or_type (n->decl);
!   bool ignore_stores = ignore_stores_p (edge->caller->decl, flags);
  
    if (!callee_info && to_info)
      {
!       if (!(flags & (ECF_CONST | ECF_PURE | ECF_NOVOPS)))
  	to_info->loads->collapse ();
        if (!ignore_stores)
  	to_info->stores->collapse ();
--- 5342,5391 ----
  				      : NULL;
    class modref_summary_lto *callee_info_lto
  		 = summaries_lto ? summaries_lto->get (edge->callee) : NULL;
+ 
+   /* Compute effective ECF_CONST, ECF_PURE, ECF_NOVOPS,
+      ECF_LOOPING_CONST_OR_PURE and ignore_stores of the inlined function from
+      the point of view of caller of the function it is transitively inlined to.
+ 
+      Consider inline chain A->B->C, where (edge is the edge B->C).
+      ECF_CONST, ECF_PURE_ECF, ECF_NOVOPS and ignore_stores is the strongest
+      flag seen on the inline path.
+ 
+      ECF_LOOPING_CONST_OR_PURE is bit special since, for example if C
+      is ECF_CONST | ECF_LOOPING_CONST_OR_PURE and B is ECF_PURE, then outcome
+      is ECF_CONST and !ECF_LOOPING_CONST_OR_PURE.
+ 
+      Flags are later used to avoid merging info about side-effects of C which
+      are invisible to to the caller of A.  For example, it is possible for
+      const function to have local array and call non-const functions modifying
+      it.  */
+ 
    int flags = flags_from_decl_or_type (edge->callee->decl);
!   bool ignore_stores = ignore_stores_p (edge->callee->decl, flags);
! 
!   for (cgraph_node *n = edge->caller; n;
!        n = n->inlined_to ? n->callers->caller : NULL)
!     {
!       int f = flags_from_decl_or_type (n->decl);
! 
!       ignore_stores |= ignore_stores_p (n->decl, f);
!       /* If we see first CONST/PURE flag in the chain, take its
! 	 ECF_LOOPING_CONST_OR_PURE  */
!       if (!(flags & (ECF_CONST | ECF_PURE)) && (f & (ECF_CONST | ECF_PURE)))
! 	flags |= (f & ECF_LOOPING_CONST_OR_PURE);
!       /* If we already have ECF_CONST or ECF_PURE flag
! 	 just improve ECF_LOOPING_CONST_OR_PURE if possible.  */
!       else if ((flags & (ECF_CONST | ECF_PURE))
! 	       && (flags & ECF_LOOPING_CONST_OR_PURE)
! 	       && (f & (ECF_CONST | ECF_PURE))
! 	       && !(f & ECF_LOOPING_CONST_OR_PURE))
! 	flags &= ECF_LOOPING_CONST_OR_PURE;
!       flags |= f & (ECF_CONST | ECF_PURE | ECF_NOVOPS);
!     }
  
    if (!callee_info && to_info)
      {
!       if (!(flags & (ECF_CONST | ECF_NOVOPS)))
  	to_info->loads->collapse ();
        if (!ignore_stores)
  	to_info->stores->collapse ();
diff -Nrcpad gcc-15.2.0/gcc/ipa-polymorphic-call.cc gcc-15.3.0/gcc/ipa-polymorphic-call.cc
*** gcc-15.2.0/gcc/ipa-polymorphic-call.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ipa-polymorphic-call.cc	Fri Jun 12 06:09:06 2026
*************** polymorphic_ctor_dtor_p (tree fn, bool c
*** 503,510 ****
  	return NULL_TREE;
      }
  
!   if (flags_from_decl_or_type (fn) & (ECF_PURE | ECF_CONST))
!     return NULL_TREE;
  
    return fn;
  }
--- 503,512 ----
  	return NULL_TREE;
      }
  
!   /* We used to check that the ctor/dtor is not pure/const.
!      However this may interact with pass ordering.  It is possible that the
!      store of vtable is optimized out in offline copy, but inline copies keep
!      it and then local-pure-const overwrites the flag.  See PR120098.  */
  
    return fn;
  }
diff -Nrcpad gcc-15.2.0/gcc/ipa-prop.cc gcc-15.3.0/gcc/ipa-prop.cc
*** gcc-15.2.0/gcc/ipa-prop.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ipa-prop.cc	Fri Jun 12 06:09:06 2026
*************** ipa_set_jf_unknown (struct ipa_jump_func
*** 645,652 ****
    jfunc->type = IPA_JF_UNKNOWN;
  }
  
! /* Set JFUNC to be a copy of another jmp (to be used by jump function
!    combination code).  The two functions will share their rdesc.  */
  
  static void
  ipa_set_jf_cst_copy (struct ipa_jump_func *dst,
--- 645,652 ----
    jfunc->type = IPA_JF_UNKNOWN;
  }
  
! /* Set DST to be a copy of another SRC.  The two functions will share their
!    rdesc.  */
  
  static void
  ipa_set_jf_cst_copy (struct ipa_jump_func *dst,
*************** ipa_set_jf_cst_copy (struct ipa_jump_fun
*** 658,663 ****
--- 658,693 ----
    dst->value.constant = src->value.constant;
  }
  
+ /* Set DST to be a copy of another jump function SRC but possibly adjust it to
+    a new passed type PARM_TYPE.  If the adjustment fails, the jump function can
+    end up being set to the unknown type.  If the conversion is not necessary or
+    it succeeds and if the destination rdesc has not been already used, the two
+    functions will share their rdesc.  */
+ 
+ static void
+ ipa_convert_prop_cst_jf (struct ipa_jump_func *dst,
+ 			 struct ipa_jump_func *src,
+ 			 tree parm_type)
+ 
+ {
+   gcc_checking_assert (src->type == IPA_JF_CONST);
+   tree new_val = ipacp_value_safe_for_type (parm_type,
+ 					    ipa_get_jf_constant (src));
+   if (new_val)
+     {
+       bool rd = ipa_get_jf_pass_through_refdesc_decremented (dst);
+ 
+       dst->type = IPA_JF_CONST;
+       dst->value.constant.value = new_val;
+       if (!rd)
+ 	dst->value.constant.rdesc = src->value.constant.rdesc;
+       else
+ 	ipa_zap_jf_refdesc (dst);
+     }
+   else
+     ipa_set_jf_unknown (dst);
+ }
+ 
  /* Set JFUNC to be a constant jmp function.  */
  
  static void
*************** determine_known_aggregate_parts (struct
*** 2208,2216 ****
      {
        gimple *stmt = SSA_NAME_DEF_STMT (dom_vuse);
  
!       if (gimple_code (stmt) == GIMPLE_PHI)
  	{
! 	  dom_vuse = get_continuation_for_phi (stmt, &r, true,
  					       fbi->aa_walk_budget,
  					       &visited, false, NULL, NULL);
  	  continue;
--- 2238,2246 ----
      {
        gimple *stmt = SSA_NAME_DEF_STMT (dom_vuse);
  
!       if (gphi *phi = dyn_cast <gphi *> (stmt))
  	{
! 	  dom_vuse = get_continuation_for_phi (phi, &r, true,
  					       fbi->aa_walk_budget,
  					       &visited, false, NULL, NULL);
  	  continue;
*************** update_jump_functions_after_inlining (st
*** 3529,3541 ****
  		  ipa_set_jf_unknown (dst);
  		  break;
  		case IPA_JF_CONST:
! 		  {
! 		    bool rd = ipa_get_jf_pass_through_refdesc_decremented (dst);
! 		    ipa_set_jf_cst_copy (dst, src);
! 		    if (rd)
! 		      ipa_zap_jf_refdesc (dst);
! 		  }
! 
  		  break;
  
  		case IPA_JF_PASS_THROUGH:
--- 3559,3567 ----
  		  ipa_set_jf_unknown (dst);
  		  break;
  		case IPA_JF_CONST:
! 		  ipa_convert_prop_cst_jf (dst, src,
! 					   ipa_get_type (old_inline_root_info,
! 							 dst_fid));
  		  break;
  
  		case IPA_JF_PASS_THROUGH:
diff -Nrcpad gcc-15.2.0/gcc/ira-color.cc gcc-15.3.0/gcc/ira-color.cc
*** gcc-15.2.0/gcc/ira-color.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/ira-color.cc	Fri Jun 12 06:09:06 2026
*************** improve_allocation (void)
*** 3383,3388 ****
--- 3383,3391 ----
        for (j = 0; j < class_size; j++)
  	{
  	  hregno = ira_class_hard_regs[aclass][j];
+ 	  if (NUM_REGISTER_FILTERS
+ 	      && !test_register_filters (ALLOCNO_REGISTER_FILTERS (a), hregno))
+ 	    continue;
  	  if (check_hard_reg_p (a, hregno,
  				conflicting_regs, profitable_hard_regs)
  	      && min_cost > costs[hregno])
diff -Nrcpad gcc-15.2.0/gcc/jit/ChangeLog gcc-15.3.0/gcc/jit/ChangeLog
*** gcc-15.2.0/gcc/jit/ChangeLog	Fri Aug  8 06:52:35 2025
--- gcc-15.3.0/gcc/jit/ChangeLog	Fri Jun 12 06:10:03 2026
***************
*** 1,3 ****
--- 1,7 ----
+ 2026-06-12  Release Manager
+ 
+ 	* GCC 15.3.0 released.
+ 
  2025-08-08  Release Manager
  
  	* GCC 15.2.0 released.
diff -Nrcpad gcc-15.2.0/gcc/lra-constraints.cc gcc-15.3.0/gcc/lra-constraints.cc
*** gcc-15.2.0/gcc/lra-constraints.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/lra-constraints.cc	Fri Jun 12 06:09:06 2026
*************** get_equiv (rtx x)
*** 541,546 ****
--- 541,547 ----
    rtx res;
  
    if (! REG_P (x) || (regno = REGNO (x)) < FIRST_PSEUDO_REGISTER
+       || regno >= ira_reg_equiv_len
        || ! ira_reg_equiv[regno].defined_p
        || ! ira_reg_equiv[regno].profitable_p
        || lra_get_regno_hard_regno (regno) >= 0)
*************** process_alt_operands (int only_alternati
*** 2216,2221 ****
--- 2217,2224 ----
    if (only_alternative >= 0)
      preferred &= ALTERNATIVE_BIT (only_alternative);
  
+   bool prefer_memory_p = false;
+  repeat:
    for (nalt = 0; nalt < n_alternatives; nalt++)
      {
        /* Loop over operands for one constraint alternative.  */
*************** process_alt_operands (int only_alternati
*** 2423,2436 ****
  			if (curr_static_id->operand[nop].type == OP_INOUT
  			    || curr_static_id->operand[m].type == OP_INOUT)
  			  break;
! 			/* Operands don't match.  If the operands are
! 			   different user defined explicit hard
  			   registers, then we cannot make them match
  			   when one is early clobber operand.  */
  			if ((REG_P (*curr_id->operand_loc[nop])
  			     || SUBREG_P (*curr_id->operand_loc[nop]))
  			    && (REG_P (*curr_id->operand_loc[m])
! 				|| SUBREG_P (*curr_id->operand_loc[m])))
  			  {
  			    rtx nop_reg = *curr_id->operand_loc[nop];
  			    if (SUBREG_P (nop_reg))
--- 2426,2440 ----
  			if (curr_static_id->operand[nop].type == OP_INOUT
  			    || curr_static_id->operand[m].type == OP_INOUT)
  			  break;
! 			/* Operands don't match.  For asm if the operands
! 			   are different user defined explicit hard
  			   registers, then we cannot make them match
  			   when one is early clobber operand.  */
  			if ((REG_P (*curr_id->operand_loc[nop])
  			     || SUBREG_P (*curr_id->operand_loc[nop]))
  			    && (REG_P (*curr_id->operand_loc[m])
! 				|| SUBREG_P (*curr_id->operand_loc[m]))
! 			    && INSN_CODE (curr_insn) < 0)
  			  {
  			    rtx nop_reg = *curr_id->operand_loc[nop];
  			    if (SUBREG_P (nop_reg))
*************** process_alt_operands (int only_alternati
*** 2547,2552 ****
--- 2551,2561 ----
  		      || general_constant_p (op)
  		      || spilled_pseudo_p (op))
  		    win = true;
+ 		  if (REG_P (op) && prefer_memory_p)
+ 		    {
+ 		      badop = false;
+ 		      offmemok = true;
+ 		    }
  		  cl = GENERAL_REGS;
  		  cl_filter = nullptr;
  		  goto reg;
*************** process_alt_operands (int only_alternati
*** 2663,2669 ****
  				   (this_alternative_exclude_start_hard_regs,
  				    hard_regno[nop]))))
  			win = true;
! 		      else if (hard_regno[nop] < 0)
  			{
  			  if (in_class_p (op, this_alternative, NULL))
  			    win = true;
--- 2672,2678 ----
  				   (this_alternative_exclude_start_hard_regs,
  				    hard_regno[nop]))))
  			win = true;
! 		      else if (hard_regno[nop] < 0 && !prefer_memory_p)
  			{
  			  if (in_class_p (op, this_alternative, NULL))
  			    win = true;
*************** process_alt_operands (int only_alternati
*** 2765,2770 ****
--- 2774,2785 ----
  	    this_alternative_match_win = true;
  	  else
  	    {
+ 	      if (prefer_memory_p && offmemok)
+ 		{
+ 		  winreg = false;
+ 		  this_alternative = NO_REGS;
+ 		}
+ 
  	      int const_to_mem = 0;
  	      bool no_regs_p;
  
*************** process_alt_operands (int only_alternati
*** 3298,3303 ****
--- 3313,3329 ----
  	       ira_class_hard_regs_num[all_this_alternative],
  	       all_used_nregs, all_reload_nregs);
  	  overall += LRA_MAX_REJECT;
+ 	  if (!prefer_memory_p && INSN_CODE (curr_insn) < 0)
+ 	    {
+ 	      /* asm can permit memory and reg and can be not enough regs for
+ 		 asm -- try now memory: */
+ 	      prefer_memory_p = true;
+ 	      if (lra_dump_file != NULL)
+ 		fprintf
+ 		  (lra_dump_file,
+ 		   "            Trying now memory for operands\n");
+ 	      goto repeat;
+ 	    }
  	}
        ok_p = true;
        curr_alt_dont_inherit_ops_num = 0;
*************** process_alt_operands (int only_alternati
*** 3335,3353 ****
  		  first_conflict_j = j;
  		last_conflict_j = j;
  		/* Both the earlyclobber operand and conflicting operand
! 		   cannot both be user defined hard registers.  */
  		if (HARD_REGISTER_P (operand_reg[i])
  		    && REG_USERVAR_P (operand_reg[i])
  		    && operand_reg[j] != NULL_RTX
  		    && HARD_REGISTER_P (operand_reg[j])
! 		    && REG_USERVAR_P (operand_reg[j]))
! 		  {
! 		    /* For asm, let curr_insn_transform diagnose it.  */
! 		    if (INSN_CODE (curr_insn) < 0)
  		      return false;
- 		    fatal_insn ("unable to generate reloads for "
- 				"impossible constraints:", curr_insn);
- 		  }
  	      }
  	  if (last_conflict_j < 0)
  	    continue;
--- 3361,3375 ----
  		  first_conflict_j = j;
  		last_conflict_j = j;
  		/* Both the earlyclobber operand and conflicting operand
! 		   cannot both be user defined hard registers for asm.
! 		   Let curr_insn_transform diagnose it.  */
  		if (HARD_REGISTER_P (operand_reg[i])
  		    && REG_USERVAR_P (operand_reg[i])
  		    && operand_reg[j] != NULL_RTX
  		    && HARD_REGISTER_P (operand_reg[j])
! 		    && REG_USERVAR_P (operand_reg[j])
! 		    && INSN_CODE (curr_insn) < 0)
  		      return false;
  	      }
  	  if (last_conflict_j < 0)
  	    continue;
*************** process_address_1 (int nop, bool check_o
*** 3937,3942 ****
--- 3959,3974 ----
        enum reg_class cl;
        rtx set;
        rtx_insn *insns, *last_insn;
+ 
+       cl = base_reg_class (ad.mode, ad.as, ad.base_outer_code,
+ 			   get_index_code (&ad), curr_insn);
+ 
+       if (REG_P (*ad.base_term)
+ 	  && ira_class_subset_p[get_reg_class (REGNO (*ad.base_term))][cl])
+ 	/* It seems base reg is already in the base reg class and changing it
+ 	   does not make a progress.  So reload the whole inner address.  */
+ 	goto reload_inner_addr;
+ 
        /* Try to reload base into register only if the base is invalid
           for the address but with valid offset, case (4) above.  */
        start_sequence ();
*************** process_address_1 (int nop, bool check_o
*** 3982,3989 ****
  	    {
  	      *ad.base_term = XEXP (SET_SRC (set), 0);
  	      *ad.disp_term = XEXP (SET_SRC (set), 1);
- 	      cl = base_reg_class (ad.mode, ad.as, ad.base_outer_code,
- 				   get_index_code (&ad), curr_insn);
  	      regno = REGNO (*ad.base_term);
  	      if (regno >= FIRST_PSEUDO_REGISTER
  		  && cl != lra_get_allocno_class (regno))
--- 4014,4019 ----
*************** process_address_1 (int nop, bool check_o
*** 4026,4036 ****
      }
    else
      {
!       enum reg_class cl = base_reg_class (ad.mode, ad.as,
! 					  SCRATCH, SCRATCH,
! 					  curr_insn);
!       rtx addr = *ad.inner;
! 
        new_reg = lra_create_new_reg (Pmode, NULL_RTX, cl, NULL, "addr");
        /* addr => new_base.  */
        lra_emit_move (new_reg, addr);
--- 4056,4066 ----
      }
    else
      {
!       enum reg_class cl;
!       rtx addr;
!     reload_inner_addr:
!       cl = base_reg_class (ad.mode, ad.as, SCRATCH, SCRATCH, curr_insn);
!       addr = *ad.inner;
        new_reg = lra_create_new_reg (Pmode, NULL_RTX, cl, NULL, "addr");
        /* addr => new_base.  */
        lra_emit_move (new_reg, addr);
*************** process_address (int nop, bool check_onl
*** 4052,4065 ****
  		 rtx_insn **before, rtx_insn **after)
  {
    bool res = false;
! 
!   while (process_address_1 (nop, check_only_p, before, after))
      {
!       if (check_only_p)
! 	return true;
!       res = true;
      }
!   return res;
  }
  
  /* Override the generic address_reload_context in order to
--- 4082,4102 ----
  		 rtx_insn **before, rtx_insn **after)
  {
    bool res = false;
!   /* Use enough iterations to process all address parts:  */
!   for (int i = 0; i < 10; i++)
      {
!       if (!process_address_1 (nop, check_only_p, before, after))
! 	{
! 	  return res;
! 	}
!       else
! 	{
! 	  if (check_only_p)
! 	    return true;
! 	  res = true;
! 	}
      }
!   fatal_insn ("unable to reload address in ", curr_insn);
  }
  
  /* Override the generic address_reload_context in order to
*************** lra_constraints (bool first_p)
*** 5380,5385 ****
--- 5417,5426 ----
       some pseudos during elimination.  */
    lra_eliminate (false, first_p);
    auto_bitmap equiv_insn_bitmap (&reg_obstack);
+ 
+   /* Register elimination can create new pseudos via the addptr pattern,
+      so make sure the equivalency tables are resized appropriately.  */
+   ira_expand_reg_equiv ();
    for (i = FIRST_PSEUDO_REGISTER; i < new_regno_start; i++)
      if (lra_reg_info[i].nrefs != 0)
        {
*************** lra_constraints (bool first_p)
*** 5578,5583 ****
--- 5619,5625 ----
  		   && loc_equivalence_change_p (&PATTERN (curr_insn)))
  	    {
  	      lra_update_insn_regno_info (curr_insn);
+ 	      lra_push_insn_by_uid (INSN_UID (curr_insn));
  	      changed_p = true;
  	    }
  	}
diff -Nrcpad gcc-15.2.0/gcc/lra-remat.cc gcc-15.3.0/gcc/lra-remat.cc
*** gcc-15.2.0/gcc/lra-remat.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/lra-remat.cc	Fri Jun 12 06:09:06 2026
*************** typedef const struct cand *const_cand_t;
*** 81,88 ****
  
  /* Insn candidates for rematerialization.  The candidate insn should
     have the following properies:
!    o no any memory (as access to memory is non-profitable)
     o no INOUT regs (it means no non-paradoxical subreg of output reg)
     o one output spilled pseudo (or reload pseudo of a spilled pseudo)
     o all other pseudos are with assigned hard regs.  */
  struct cand
--- 81,90 ----
  
  /* Insn candidates for rematerialization.  The candidate insn should
     have the following properies:
!    o no any memory (as access to memory is non-profitable) or
!      div/mod operations (as they are usually more expensive than loads)
     o no INOUT regs (it means no non-paradoxical subreg of output reg)
+    o no multiple output pseudos
     o one output spilled pseudo (or reload pseudo of a spilled pseudo)
     o all other pseudos are with assigned hard regs.  */
  struct cand
*************** finish_cand_table (void)
*** 249,260 ****
  
  
  
! /* Return true if X contains memory or some UNSPEC.  We cannot just
!    check insn operands as memory or unspec might be not an operand
!    itself but contain an operand.  Insn with memory access is not
!    profitable for rematerialization.  Rematerialization of UNSPEC
!    might result in wrong code generation as the UNPEC effect is
!    unknown (e.g. generating a label).  */
  static bool
  bad_for_rematerialization_p (rtx x)
  {
--- 251,262 ----
  
  
  
! /* Return true if X contains memory, some UNSPEC, or expensive operations.  We
!    cannot just check insn operands as memory or unspec might be not an operand
!    itself but contain an operand.  Insns with memory access or expensive ones
!    are not profitable for rematerialization.  Rematerialization of UNSPEC might
!    result in wrong code generation as the UNPEC effect is unknown
!    (e.g. generating a label).  */
  static bool
  bad_for_rematerialization_p (rtx x)
  {
*************** bad_for_rematerialization_p (rtx x)
*** 262,268 ****
    const char *fmt;
    enum rtx_code code;
  
!   if (MEM_P (x) || GET_CODE (x) == UNSPEC || GET_CODE (x) == UNSPEC_VOLATILE)
      return true;
    code = GET_CODE (x);
    fmt = GET_RTX_FORMAT (code);
--- 264,274 ----
    const char *fmt;
    enum rtx_code code;
  
!   if (MEM_P (x) || GET_CODE (x) == UNSPEC || GET_CODE (x) == UNSPEC_VOLATILE
!       /* Usually the following operations are expensive and does not worth to
! 	 rematerialize: */
!       || GET_CODE(x) == DIV || GET_CODE(x) == UDIV
!       || GET_CODE(x) == MOD || GET_CODE(x) == UMOD)
      return true;
    code = GET_CODE (x);
    fmt = GET_RTX_FORMAT (code);
*************** operand_to_remat (rtx_insn *insn)
*** 308,315 ****
  	 cannot know sp offset at a rematerialization place.  */
        if (reg->regno == STACK_POINTER_REGNUM && frame_pointer_needed)
  	return -1;
!       else if (reg->type == OP_OUT && ! reg->subreg_p
! 	       && find_regno_note (insn, REG_UNUSED, reg->regno) == NULL)
  	{
  	  /* We permits only one spilled reg.  */
  	  if (found_reg != NULL)
--- 314,320 ----
  	 cannot know sp offset at a rematerialization place.  */
        if (reg->regno == STACK_POINTER_REGNUM && frame_pointer_needed)
  	return -1;
!       else if (reg->type == OP_OUT)
  	{
  	  /* We permits only one spilled reg.  */
  	  if (found_reg != NULL)
diff -Nrcpad gcc-15.2.0/gcc/lto/ChangeLog gcc-15.3.0/gcc/lto/ChangeLog
*** gcc-15.2.0/gcc/lto/ChangeLog	Fri Aug  8 06:52:35 2025
--- gcc-15.3.0/gcc/lto/ChangeLog	Fri Jun 12 06:10:03 2026
***************
*** 1,3 ****
--- 1,35 ----
+ 2026-06-12  Release Manager
+ 
+ 	* GCC 15.3.0 released.
+ 
+ 2026-02-26  Michal Jires  <mjires@suse.cz>
+ 
+ 	Backported from master:
+ 	2026-01-11  Michal Jires  <mjires@suse.cz>
+ 
+ 	PR lto/121588
+ 	* lto-symtab.cc (lto_symtab_merge_symbols): Set body_removed
+ 	for symbols resolved outside of IR.
+ 
+ 2025-12-03  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	Backported from master:
+ 	2025-11-25  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	PR lto/122515
+ 	* lto-common.cc (lto_read_section_data): Avoid using SSIZE_MAX.
+ 
+ 2025-11-18  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	Backported from master:
+ 	2025-11-04  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	PR lto/122515
+ 	* lto.h (lto_section_slot): Set type of START to off_t.
+ 	* lto-common.cc (lto_read_section_data): Adjust.
+ 	* lto-object.cc (lto_obj_file_open): Set type of OFFSET to
+ 	int64_t.
+ 
  2025-08-08  Release Manager
  
  	* GCC 15.2.0 released.
diff -Nrcpad gcc-15.2.0/gcc/lto/lto-common.cc gcc-15.3.0/gcc/lto/lto-common.cc
*** gcc-15.2.0/gcc/lto/lto-common.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/lto/lto-common.cc	Fri Jun 12 06:09:06 2026
*************** static size_t page_mask;
*** 2395,2409 ****
  
  static char *
  lto_read_section_data (struct lto_file_decl_data *file_data,
! 		       intptr_t offset, size_t len)
  {
    char *result;
    static int fd = -1;
    static char *fd_name;
  #if LTO_MMAP_IO
!   intptr_t computed_len;
!   intptr_t computed_offset;
!   intptr_t diff;
  #endif
  
    /* Keep a single-entry file-descriptor cache.  The last file we
--- 2395,2409 ----
  
  static char *
  lto_read_section_data (struct lto_file_decl_data *file_data,
! 		       off_t offset, size_t len)
  {
    char *result;
    static int fd = -1;
    static char *fd_name;
  #if LTO_MMAP_IO
!   size_t computed_len;
!   off_t computed_offset;
!   off_t diff;
  #endif
  
    /* Keep a single-entry file-descriptor cache.  The last file we
*************** lto_read_section_data (struct lto_file_d
*** 2436,2444 ****
        page_mask = ~(page_size - 1);
      }
  
!   computed_offset = offset & page_mask;
    diff = offset - computed_offset;
!   computed_len = len + diff;
  
    result = (char *) mmap (NULL, computed_len, PROT_READ, MAP_PRIVATE,
  			  fd, computed_offset);
--- 2436,2450 ----
        page_mask = ~(page_size - 1);
      }
  
!   computed_offset = offset & ((off_t) page_mask);
    diff = offset - computed_offset;
!   if (len > (((size_t) -1) >> 1) - diff)
!     {
!       fatal_error (input_location, "Cannot map %s: section is too long",
! 		   file_data->file_name);
!       return NULL;
!     }
!   computed_len = (size_t) diff + len;
  
    result = (char *) mmap (NULL, computed_len, PROT_READ, MAP_PRIVATE,
  			  fd, computed_offset);
diff -Nrcpad gcc-15.2.0/gcc/lto/lto-object.cc gcc-15.3.0/gcc/lto/lto-object.cc
*** gcc-15.2.0/gcc/lto/lto-object.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/lto/lto-object.cc	Fri Jun 12 06:09:06 2026
*************** lto_file *
*** 69,78 ****
  lto_obj_file_open (const char *filename, bool writable)
  {
    const char *offset_p;
-   long loffset;
    int consumed;
    char *fname;
!   off_t offset;
    struct lto_simple_object *lo;
    const char *errmsg;
    int err;
--- 69,77 ----
  lto_obj_file_open (const char *filename, bool writable)
  {
    const char *offset_p;
    int consumed;
    char *fname;
!   int64_t offset;
    struct lto_simple_object *lo;
    const char *errmsg;
    int err;
*************** lto_obj_file_open (const char *filename,
*** 80,92 ****
    offset_p = strrchr (filename, '@');
    if (offset_p != NULL
        && offset_p != filename
!       && sscanf (offset_p, "@%li%n", &loffset, &consumed) >= 1
        && strlen (offset_p) == (unsigned int) consumed)
      {
        fname = XNEWVEC (char, offset_p - filename + 1);
        memcpy (fname, filename, offset_p - filename);
        fname[offset_p - filename] = '\0';
-       offset = (off_t) loffset;
      }
    else
      {
--- 79,90 ----
    offset_p = strrchr (filename, '@');
    if (offset_p != NULL
        && offset_p != filename
!       && sscanf (offset_p, "@%" PRIi64 "%n", &offset, &consumed) >= 1
        && strlen (offset_p) == (unsigned int) consumed)
      {
        fname = XNEWVEC (char, offset_p - filename + 1);
        memcpy (fname, filename, offset_p - filename);
        fname[offset_p - filename] = '\0';
      }
    else
      {
diff -Nrcpad gcc-15.2.0/gcc/lto/lto-symtab.cc gcc-15.3.0/gcc/lto/lto-symtab.cc
*** gcc-15.2.0/gcc/lto/lto-symtab.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/lto/lto-symtab.cc	Fri Jun 12 06:09:06 2026
*************** lto_symtab_merge_symbols (void)
*** 1040,1045 ****
--- 1040,1046 ----
  		      node->analyzed = node->definition = false;
  		      node->remove_all_references ();
  		    }
+ 		  node->body_removed = true;
  		}
  	      DECL_EXTERNAL (node->decl) = 1;
  	    }
diff -Nrcpad gcc-15.2.0/gcc/lto/lto.h gcc-15.3.0/gcc/lto/lto.h
*** gcc-15.2.0/gcc/lto/lto.h	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/lto/lto.h	Fri Jun 12 06:09:06 2026
*************** extern int lto_link_dump_id, decl_merge_
*** 58,64 ****
  struct lto_section_slot
  {
    const char *name;
!   intptr_t start;
    size_t len;
    struct lto_section_slot *next;
  };
--- 58,64 ----
  struct lto_section_slot
  {
    const char *name;
!   off_t start;
    size_t len;
    struct lto_section_slot *next;
  };
diff -Nrcpad gcc-15.2.0/gcc/lto-wrapper.cc gcc-15.3.0/gcc/lto-wrapper.cc
*** gcc-15.2.0/gcc/lto-wrapper.cc	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/lto-wrapper.cc	Fri Jun 12 06:09:06 2026
*************** debug_objcopy (const char *infile, bool
*** 1206,1223 ****
  
    const char *p;
    const char *orig_infile = infile;
!   off_t inoff = 0;
!   long loffset;
    int consumed;
    if ((p = strrchr (infile, '@'))
        && p != infile
!       && sscanf (p, "@%li%n", &loffset, &consumed) >= 1
        && strlen (p) == (unsigned int) consumed)
      {
        char *fname = xstrdup (infile);
        fname[p - infile] = '\0';
        infile = fname;
-       inoff = (off_t) loffset;
      }
    int infd = open (infile, O_RDONLY | O_BINARY);
    if (infd == -1)
--- 1206,1221 ----
  
    const char *p;
    const char *orig_infile = infile;
!   int64_t inoff = 0;
    int consumed;
    if ((p = strrchr (infile, '@'))
        && p != infile
!       && sscanf (p, "@%" PRIi64 "%n", &inoff, &consumed) >= 1
        && strlen (p) == (unsigned int) consumed)
      {
        char *fname = xstrdup (infile);
        fname[p - infile] = '\0';
        infile = fname;
      }
    int infd = open (infile, O_RDONLY | O_BINARY);
    if (infd == -1)
*************** run_gcc (unsigned argc, char *argv[])
*** 1483,1490 ****
      {
        char *p;
        int fd;
!       off_t file_offset = 0;
!       long loffset;
        int consumed;
        char *filename = argv[i];
  
--- 1481,1487 ----
      {
        char *p;
        int fd;
!       int64_t file_offset = 0;
        int consumed;
        char *filename = argv[i];
  
*************** run_gcc (unsigned argc, char *argv[])
*** 1498,1510 ****
  
        if ((p = strrchr (argv[i], '@'))
  	  && p != argv[i]
! 	  && sscanf (p, "@%li%n", &loffset, &consumed) >= 1
  	  && strlen (p) == (unsigned int) consumed)
  	{
  	  filename = XNEWVEC (char, p - argv[i] + 1);
  	  memcpy (filename, argv[i], p - argv[i]);
  	  filename[p - argv[i]] = '\0';
- 	  file_offset = (off_t) loffset;
  	}
        fd = open (filename, O_RDONLY | O_BINARY);
        /* Linker plugin passes -fresolution and -flinker-output options.
--- 1495,1506 ----
  
        if ((p = strrchr (argv[i], '@'))
  	  && p != argv[i]
! 	  && sscanf (p, "@%" PRIi64 "%n", &file_offset, &consumed) >= 1
  	  && strlen (p) == (unsigned int) consumed)
  	{
  	  filename = XNEWVEC (char, p - argv[i] + 1);
  	  memcpy (filename, argv[i], p - argv[i]);
  	  filename[p - argv[i]] = '\0';
  	}
        fd = open (filename, O_RDONLY | O_BINARY);
        /* Linker plugin passes -fresolution and -flinker-output options.
*************** cont1:
*** 1801,1820 ****
        for (i = 0; i < num_offload_files; i++)
  	{
  	  char *p;
- 	  long loffset;
  	  int fd, consumed;
! 	  off_t file_offset = 0;
  	  char *filename = offload_argv[i];
  
  	  if ((p = strrchr (offload_argv[i], '@'))
  	      && p != offload_argv[i]
! 	      && sscanf (p, "@%li%n", &loffset, &consumed) >= 1
  	      && strlen (p) == (unsigned int) consumed)
  	    {
  	      filename = XNEWVEC (char, p - offload_argv[i] + 1);
  	      memcpy (filename, offload_argv[i], p - offload_argv[i]);
  	      filename[p - offload_argv[i]] = '\0';
- 	      file_offset = (off_t) loffset;
  	    }
  	  fd = open (filename, O_RDONLY | O_BINARY);
  	  if (fd == -1)
--- 1797,1814 ----
        for (i = 0; i < num_offload_files; i++)
  	{
  	  char *p;
  	  int fd, consumed;
! 	  int64_t file_offset = 0;
  	  char *filename = offload_argv[i];
  
  	  if ((p = strrchr (offload_argv[i], '@'))
  	      && p != offload_argv[i]
! 	      && sscanf (p, "@%" PRIi64 "%n", &file_offset, &consumed) >= 1
  	      && strlen (p) == (unsigned int) consumed)
  	    {
  	      filename = XNEWVEC (char, p - offload_argv[i] + 1);
  	      memcpy (filename, offload_argv[i], p - offload_argv[i]);
  	      filename[p - offload_argv[i]] = '\0';
  	    }
  	  fd = open (filename, O_RDONLY | O_BINARY);
  	  if (fd == -1)
diff -Nrcpad gcc-15.2.0/gcc/m2/ChangeLog gcc-15.3.0/gcc/m2/ChangeLog
*** gcc-15.2.0/gcc/m2/ChangeLog	Fri Aug  8 06:52:35 2025
--- gcc-15.3.0/gcc/m2/ChangeLog	Fri Jun 12 06:10:03 2026
***************
*** 1,3 ****
--- 1,7 ----
+ 2026-06-12  Release Manager
+ 
+ 	* GCC 15.3.0 released.
+ 
  2025-08-08  Release Manager
  
  	* GCC 15.2.0 released.
diff -Nrcpad gcc-15.2.0/gcc/machmode.def gcc-15.3.0/gcc/machmode.def
*** gcc-15.2.0/gcc/machmode.def	Fri Aug  8 06:51:40 2025
--- gcc-15.3.0/gcc/machmode.def	Fri Jun 12 06:09:06 2026
*************** along with GCC; see the file COPYING3.
*** 148,159 ****
  	mode, with smaller numbers indicating a higher priority.
  
       VECTOR_BOOL_MODE (NAME, COUNT, COMPONENT, BYTESIZE)
!         Create a vector mode called NAME that contains COUNT boolean
!         elements and occupies BYTESIZE bytes in total.  Each boolean
!         element is of COMPONENT type and occupies (COUNT * BITS_PER_UNIT) /
!         BYTESIZE bits, with the element at index 0 occupying the lsb of the
!         first byte in memory.  Only the lowest bit of each element is
!         significant.
  
       OPAQUE_MODE (NAME, BYTESIZE)
          Create an opaque mode called NAME that is BYTESIZE bytes wide.
--- 148,159 ----
  	mode, with smaller numbers indicating a higher priority.
  
       VECTOR_BOOL_MODE (NAME, COUNT, COMPONENT, BYTESIZE)
! 	Create a vector mode called NAME that contains COUNT boolean
! 	elements and occupies BYTESIZE bytes in total.  Each boolean
! 	element is of COMPONENT type and occupies ((BYTESIZE * BITS_PER_UNIT)
! 	/ COUNT) bits, with the element at index 0 occupying the lsb of the
! 	first byte in memory.  Only the lowest bit of each element is
! 	significant.
  
       OPAQUE_MODE (NAME, BYTESIZE)
          Create an opaque mode called NAME that is BYTESIZE bytes wide.
diff -Nrcpad gcc-15.2.0/gcc/match.pd gcc-15.3.0/gcc/match.pd
*** gcc-15.2.0/gcc/match.pd	Fri Aug  8 06:51:41 2025
--- gcc-15.3.0/gcc/match.pd	Fri Jun 12 06:09:06 2026
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 214,220 ****
  (simplify (abs (convert @0))
   (if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (@0))
        && !TYPE_UNSIGNED (TREE_TYPE (@0))
!       && element_precision (type) > element_precision (TREE_TYPE (@0)))
    (with { tree utype = unsigned_type_for (TREE_TYPE (@0)); }
     (convert (absu:utype @0)))))
  
--- 214,222 ----
  (simplify (abs (convert @0))
   (if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (@0))
        && !TYPE_UNSIGNED (TREE_TYPE (@0))
!       && element_precision (type) > element_precision (TREE_TYPE (@0))
!       && (!VECTOR_TYPE_P (type)
! 	  || target_supports_op_p (TREE_TYPE (@0), ABSU_EXPR, optab_vector)))
    (with { tree utype = unsigned_type_for (TREE_TYPE (@0)); }
     (convert (absu:utype @0)))))
  
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 981,996 ****
   (if (INTEGRAL_TYPE_P (TREE_TYPE (@0)) && TYPE_UNSIGNED (TREE_TYPE (@0)))
    (bit_and @0 (negate @1))))
  
! (for div (trunc_div ceil_div floor_div round_div exact_div)
  #if GIMPLE
!  /* Canonicalize unsigned t / 4 to t >> 2.  */
   (simplify
    (div @0 integer_pow2p@1)
    (if (INTEGRAL_TYPE_P (type)
         && (TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (@0)))
     (rshift @0 { build_int_cst (integer_type_node,
! 			       wi::exact_log2 (wi::to_wide (@1))); })))
  #endif
   /* Simplify (t * u) / u -> t.  */
   (simplify
    (div (mult:c @0 @1) @1)
--- 983,1000 ----
   (if (INTEGRAL_TYPE_P (TREE_TYPE (@0)) && TYPE_UNSIGNED (TREE_TYPE (@0)))
    (bit_and @0 (negate @1))))
  
! /* Canonicalize unsigned t / 4 to t >> 2.  */
  #if GIMPLE
! (for div (trunc_div floor_div exact_div)
   (simplify
    (div @0 integer_pow2p@1)
    (if (INTEGRAL_TYPE_P (type)
         && (TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (@0)))
     (rshift @0 { build_int_cst (integer_type_node,
! 			       wi::exact_log2 (wi::to_wide (@1))); }))))
  #endif
+ 
+ (for div (trunc_div ceil_div floor_div round_div exact_div)
   /* Simplify (t * u) / u -> t.  */
   (simplify
    (div (mult:c @0 @1) @1)
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 3002,3008 ****
  #if GENERIC
  (simplify
    (pointer_plus (convert:s (pointer_plus:s @0 @1)) @3)
!   (convert:type (pointer_plus @0 (plus @1 @3))))
  #endif
  
  /* Pattern match
--- 3006,3012 ----
  #if GENERIC
  (simplify
    (pointer_plus (convert:s (pointer_plus:s @0 @1)) @3)
!   (pointer_plus (convert:type @0) (plus @1 @3)))
  #endif
  
  /* Pattern match
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 4808,4814 ****
          (op:c @2 @1))
    (if (INTEGRAL_TYPE_P (type)
         && TYPE_PRECISION (type) > 1
!        && (INTEGRAL_TYPE_P (TREE_TYPE (@0))))
         (op (mult (convert:type @0) @2) @1))))
  
  /* (zero_one != 0) ? z <op> y : y -> ((typeof(y))zero_one * z) <op> y */
--- 4812,4819 ----
          (op:c @2 @1))
    (if (INTEGRAL_TYPE_P (type)
         && TYPE_PRECISION (type) > 1
!        && INTEGRAL_TYPE_P (TREE_TYPE (@0))
!        && expr_no_side_effects_p (@2))
         (op (mult (convert:type @0) @2) @1))))
  
  /* (zero_one != 0) ? z <op> y : y -> ((typeof(y))zero_one * z) <op> y */
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 4820,4826 ****
          @1)
    (if (INTEGRAL_TYPE_P (type)
         && TYPE_PRECISION (type) > 1
!        && (INTEGRAL_TYPE_P (TREE_TYPE (@0))))
         (op (mult (convert:type @0) @2) @1))))
  
  /* ?: Value replacement. */
--- 4825,4832 ----
          @1)
    (if (INTEGRAL_TYPE_P (type)
         && TYPE_PRECISION (type) > 1
!        && INTEGRAL_TYPE_P (TREE_TYPE (@0))
!        && expr_no_side_effects_p (@2))
         (op (mult (convert:type @0) @2) @1))))
  
  /* ?: Value replacement. */
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 5862,5868 ****
   (if (VECTOR_TYPE_P (type) && VECTOR_TYPE_P (TREE_TYPE (@1))
        && known_eq (TYPE_VECTOR_SUBPARTS (type),
  		   TYPE_VECTOR_SUBPARTS (TREE_TYPE (@1)))
!       && tree_nop_conversion_p (TREE_TYPE (type), TREE_TYPE (TREE_TYPE (@1))))
    (vec_cond @0 (view_convert! @1) (view_convert! @2))))
  
  /* Sink binary operation to branches, but only if we can fold it.  */
--- 5868,5876 ----
   (if (VECTOR_TYPE_P (type) && VECTOR_TYPE_P (TREE_TYPE (@1))
        && known_eq (TYPE_VECTOR_SUBPARTS (type),
  		   TYPE_VECTOR_SUBPARTS (TREE_TYPE (@1)))
!       && tree_nop_conversion_p (TREE_TYPE (type), TREE_TYPE (TREE_TYPE (@1)))
!       && (expand_vec_cond_expr_p (type, TREE_TYPE (@0))
! 	  || !expand_vec_cond_expr_p (TREE_TYPE (@1), TREE_TYPE (@0))))
    (vec_cond @0 (view_convert! @1) (view_convert! @2))))
  
  /* Sink binary operation to branches, but only if we can fold it.  */
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 6057,6063 ****
     (eqne (cnd @0 @1 @2) (cnd @3 @1 @2))
      (if (!HONOR_NANS (@1)
  	 && types_match (TREE_TYPE (@0), TREE_TYPE (@3))
!          && types_match (type, TREE_TYPE (@0)))
       (cnd (bit_and (bit_xor @0 @3) (ne:type @1 @2))
        { constant_boolean_node (eqne == NE_EXPR, type); }
        { constant_boolean_node (eqne != NE_EXPR, type); })))
--- 6065,6073 ----
     (eqne (cnd @0 @1 @2) (cnd @3 @1 @2))
      (if (!HONOR_NANS (@1)
  	 && types_match (TREE_TYPE (@0), TREE_TYPE (@3))
!          && types_match (type, TREE_TYPE (@0))
! 	 && expr_no_side_effects_p (@1)
! 	 && expr_no_side_effects_p (@2))
       (cnd (bit_and (bit_xor @0 @3) (ne:type @1 @2))
        { constant_boolean_node (eqne == NE_EXPR, type); }
        { constant_boolean_node (eqne != NE_EXPR, type); })))
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 6065,6071 ****
     (eqne (cnd @0 @1 @2) (cnd @3 @2 @1))
      (if (!HONOR_NANS (@1)
  	 && types_match (TREE_TYPE (@0), TREE_TYPE (@3))
!          && types_match (type, TREE_TYPE (@0)))
       (cnd (bit_ior (bit_xor @0 @3) (eq:type @1 @2))
        { constant_boolean_node (eqne != NE_EXPR, type); }
        { constant_boolean_node (eqne == NE_EXPR, type); })))))
--- 6075,6083 ----
     (eqne (cnd @0 @1 @2) (cnd @3 @2 @1))
      (if (!HONOR_NANS (@1)
  	 && types_match (TREE_TYPE (@0), TREE_TYPE (@3))
!          && types_match (type, TREE_TYPE (@0))
! 	 && expr_no_side_effects_p (@1)
! 	 && expr_no_side_effects_p (@2))
       (cnd (bit_ior (bit_xor @0 @3) (eq:type @1 @2))
        { constant_boolean_node (eqne != NE_EXPR, type); }
        { constant_boolean_node (eqne == NE_EXPR, type); })))))
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 6726,6732 ****
  	 && !TYPE_UNSIGNED (TREE_TYPE (@1))
  	 && element_precision (@1)
  	      <= element_precision (@0)
! 	 && bitwise_equal_p (@1, @2))
      (if (TYPE_UNSIGNED (TREE_TYPE (@2)))
        (with {
  	tree stype = signed_type_for (TREE_TYPE (@2));
--- 6738,6746 ----
  	 && !TYPE_UNSIGNED (TREE_TYPE (@1))
  	 && element_precision (@1)
  	      <= element_precision (@0)
! 	 && bitwise_equal_p (@1, @2)
! 	 && (!VECTOR_TYPE_P (type)
! 	     || target_supports_op_p (type, ABS_EXPR, optab_vector)))
      (if (TYPE_UNSIGNED (TREE_TYPE (@2)))
        (with {
  	tree stype = signed_type_for (TREE_TYPE (@2));
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 6744,6750 ****
  	 && !TYPE_UNSIGNED (TREE_TYPE (@1))
  	 && element_precision (@1)
  	      <= element_precision (@0)
! 	 && bitwise_equal_p (@1, @2))
        (if ((ANY_INTEGRAL_TYPE_P (TREE_TYPE (@2))
  	      && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (@2)))
  	    || TYPE_UNSIGNED (TREE_TYPE (@2)))
--- 6758,6767 ----
  	 && !TYPE_UNSIGNED (TREE_TYPE (@1))
  	 && element_precision (@1)
  	      <= element_precision (@0)
! 	 && bitwise_equal_p (@1, @2)
! 	 && (!VECTOR_TYPE_P (type)
! 	     || (target_supports_op_p (type, ABS_EXPR, optab_vector)
! 		 && target_supports_op_p (type, NEGATE_EXPR, optab_vector))))
        (if ((ANY_INTEGRAL_TYPE_P (TREE_TYPE (@2))
  	      && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (@2)))
  	    || TYPE_UNSIGNED (TREE_TYPE (@2)))
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 6783,6789 ****
    (simplify
     (cnd (cmp (minus@0 @1 @2) zerop) @0 (minus @2 @1))
     (if (!HONOR_SIGNED_ZEROS (type)
! 	&& !TYPE_UNSIGNED (type))
      (abs @0))))
   /* (A - B) <=/< 0 ? (A - B) : (B - A)    same as -abs (A - B) */
   (for cmp (le lt)
--- 6800,6808 ----
    (simplify
     (cnd (cmp (minus@0 @1 @2) zerop) @0 (minus @2 @1))
     (if (!HONOR_SIGNED_ZEROS (type)
! 	&& !TYPE_UNSIGNED (type)
! 	&& (!VECTOR_TYPE_P (type)
! 	    || target_supports_op_p (type, ABS_EXPR, optab_vector)))
      (abs @0))))
   /* (A - B) <=/< 0 ? (A - B) : (B - A)    same as -abs (A - B) */
   (for cmp (le lt)
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 6792,6798 ****
     (if (!HONOR_SIGNED_ZEROS (type)
  	&& !TYPE_UNSIGNED (type))
      (if (ANY_INTEGRAL_TYPE_P (type)
! 	 && !TYPE_OVERFLOW_WRAPS (type))
       (with {
          tree utype = unsigned_type_for (type);
        }
--- 6811,6820 ----
     (if (!HONOR_SIGNED_ZEROS (type)
  	&& !TYPE_UNSIGNED (type))
      (if (ANY_INTEGRAL_TYPE_P (type)
! 	 && !TYPE_OVERFLOW_WRAPS (type)
! 	 && (!VECTOR_TYPE_P (type)
! 	     || (target_supports_op_p (type, ABS_EXPR, optab_vector)
! 		 && target_supports_op_p (type, NEGATE_EXPR, optab_vector))))
       (with {
          tree utype = unsigned_type_for (type);
        }
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 8257,8263 ****
     (if (TYPE_UNSIGNED (TREE_TYPE (@0)))
      (convert (gt @0 (trunc_div! { TYPE_MAX_VALUE (TREE_TYPE (@0)); } @1)))
      (if (TYPE_MIN_VALUE (TREE_TYPE (@0)))
!      (if (integer_minus_onep (@1))
        (convert (eq @0 { TYPE_MIN_VALUE (TREE_TYPE (@0)); }))
        (with
         {
--- 8279,8285 ----
     (if (TYPE_UNSIGNED (TREE_TYPE (@0)))
      (convert (gt @0 (trunc_div! { TYPE_MAX_VALUE (TREE_TYPE (@0)); } @1)))
      (if (TYPE_MIN_VALUE (TREE_TYPE (@0)))
!      (if (!TYPE_UNSIGNED (TREE_TYPE (@1)) && integer_minus_onep (@1))
        (convert (eq @0 { TYPE_MIN_VALUE (TREE_TYPE (@0)); }))
        (with
         {
*************** and,
*** 10814,10823 ****
  	    unsigned int elt_bits = tree_to_uhwi (TYPE_SIZE (elt_type));
  	    tree size = bitsize_int (elt_bits);
  	    tree pos = bitsize_int (elt_bits * i); }
!      (view_convert
!       (bit_and:elt_type
!        (BIT_FIELD_REF:elt_type @0 { size; } { pos; })
!        { elt; })))))))
  
  /* Fold reduction of a single nonzero element constructor.  */
  (for reduc (IFN_REDUC_PLUS IFN_REDUC_IOR IFN_REDUC_XOR)
--- 10836,10846 ----
  	    unsigned int elt_bits = tree_to_uhwi (TYPE_SIZE (elt_type));
  	    tree size = bitsize_int (elt_bits);
  	    tree pos = bitsize_int (elt_bits * i); }
!      (if (compare_tree_int (TYPE_SIZE (type), elt_bits) == 0)
!       (view_convert
!        (bit_and:elt_type
!         (BIT_FIELD_REF:elt_type @0 { size; } { pos; })
!         { elt; }))))))))
  
  /* Fold reduction of a single nonzero element constructor.  */
  (for reduc (IFN_REDUC_PLUS IFN_REDUC_IOR IFN_REDUC_XOR)
*************** and,
*** 10826,10831 ****
--- 10849,10855 ----
  			 ? gimple_assign_rhs1 (SSA_NAME_DEF_STMT (@0)) : @0);
  	    tree elt = ctor_single_nonzero_element (ctor); }
        (if (elt
+ 	   && types_match (type, TREE_TYPE (elt))
  	   && !HONOR_SNANS (type)
  	   && !HONOR_SIGNED_ZEROS (type))
  	{ elt; }))))
*************** and,
*** 10939,10951 ****
      {
        /* Create a vec_perm_indices for the integer vector.  */
        poly_uint64 nelts = TYPE_VECTOR_SUBPARTS (type);
        bool single_arg = (op0 == op1);
!       vec_perm_indices sel (builder, single_arg ? 1 : 2, nelts);
      }
!     (if (sel.series_p (0, 1, 0, 1))
!      { op0; }
!      (if (sel.series_p (0, 1, nelts, 1))
!       { op1; }
        (with
         {
           if (!single_arg)
--- 10963,10976 ----
      {
        /* Create a vec_perm_indices for the integer vector.  */
        poly_uint64 nelts = TYPE_VECTOR_SUBPARTS (type);
+       poly_uint64 nelts_in = TYPE_VECTOR_SUBPARTS (TREE_TYPE (op0));
        bool single_arg = (op0 == op1);
!       vec_perm_indices sel (builder, single_arg ? 1 : 2, nelts_in);
      }
!     (if (known_eq (nelts, nelts_in) && sel.series_p (0, 1, 0, 1))
!      (view_convert @0)
!      (if (known_eq (nelts, nelts_in) && sel.series_p (0, 1, nelts_in, 1))
!       (view_convert @1)
        (with
         {
           if (!single_arg)
*************** and,
*** 10957,10963 ****
  	         op0 = op1;
  	         sel.rotate_inputs (1);
  	       }
! 	     else if (known_ge (poly_uint64 (sel[0]), nelts))
  	       {
  	         std::swap (op0, op1);
  	         sel.rotate_inputs (1);
--- 10982,10988 ----
  	         op0 = op1;
  	         sel.rotate_inputs (1);
  	       }
! 	     else if (known_ge (poly_uint64 (sel[0]), nelts_in))
  	       {
  	         std::swap (op0, op1);
  	         sel.rotate_inputs (1);
*************** and,
*** 10992,10997 ****
--- 11017,11023 ----
  	      in that case.  But only if the vector mode is supported,
  	      otherwise this is invalid GIMPLE.  */
  	   if (op_mode != BLKmode
+ 	       && known_eq (nelts, nelts_in)
  	       && (TREE_CODE (cop0) == VECTOR_CST
  		   || TREE_CODE (cop0) == CONSTRUCTOR
  		   || TREE_CODE (cop1) == VECTOR_CST
*************** and,
*** 11403,11405 ****
--- 11429,11436 ----
        }
        (if (full_perm_p)
  	(vec_perm (op@3 @0 @1) @3 @2))))))
+ 
+ /* Strip nop-conversions __builtin_constant_p arguments.  */
+ (simplify
+  (BUILT_IN_CONSTANT_P (nop_convert@1 @0))
+  (BUILT_IN_CONSTANT_P @0))
diff -Nrcpad gcc-15.2.0/gcc/modulo-sched.cc gcc-15.3.0/gcc/modulo-sched.cc
*** gcc-15.2.0/gcc/modulo-sched.cc	Fri Aug  8 06:51:41 2025
--- gcc-15.3.0/gcc/modulo-sched.cc	Fri Jun 12 06:09:06 2026
*************** doloop_register_get (rtx_insn *head, rtx
*** 356,362 ****
      reg = XEXP (condition, 0);
    else if (GET_CODE (XEXP (condition, 0)) == PLUS
  	   && REG_P (XEXP (XEXP (condition, 0), 0)))
!     reg = XEXP (XEXP (condition, 0), 0);
    else
      gcc_unreachable ();
  
--- 356,368 ----
      reg = XEXP (condition, 0);
    else if (GET_CODE (XEXP (condition, 0)) == PLUS
  	   && REG_P (XEXP (XEXP (condition, 0), 0)))
!     {
!       if (CONST_INT_P (XEXP (condition, 1))
! 	  && INTVAL (XEXP (condition, 1)) == -1)
! 	reg = XEXP (XEXP (condition, 0), 0);
!       else
! 	return NULL_RTX;
!     }
    else
      gcc_unreachable ();
  
diff -Nrcpad gcc-15.2.0/gcc/objc/ChangeLog gcc-15.3.0/gcc/objc/ChangeLog
*** gcc-15.2.0/gcc/objc/ChangeLog	Fri Aug  8 06:52:35 2025
--- gcc-15.3.0/gcc/objc/ChangeLog	Fri Jun 12 06:10:03 2026
***************
*** 1,3 ****
--- 1,7 ----
+ 2026-06-12  Release Manager
+ 
+ 	* GCC 15.3.0 released.
+ 
  2025-08-08  Release Manager
  
  	* GCC 15.2.0 released.
diff -Nrcpad gcc-15.2.0/gcc/objcp/ChangeLog gcc-15.3.0/gcc/objcp/ChangeLog
*** gcc-15.2.0/gcc/objcp/ChangeLog	Fri Aug  8 06:52:35 2025
--- gcc-15.3.0/gcc/objcp/ChangeLog	Fri Jun 12 06:10:03 2026
***************
*** 1,3 ****
--- 1,7 ----
+ 2026-06-12  Release Manager
+ 
+ 	* GCC 15.3.0 released.
+ 
  2025-08-08  Release Manager
  
  	* GCC 15.2.0 released.
diff -Nrcpad gcc-15.2.0/gcc/omp-expand.cc gcc-15.3.0/gcc/omp-expand.cc
*** gcc-15.2.0/gcc/omp-expand.cc	Fri Aug  8 06:51:41 2025
--- gcc-15.3.0/gcc/omp-expand.cc	Fri Jun 12 06:09:06 2026
*************** expand_omp_for_init_counts (struct omp_f
*** 1895,1900 ****
--- 1895,1901 ----
  	}
      }
    bool rect_count_seen = false;
+   bool init_n2 = SSA_VAR_P (fd->loop.n2) && zero_iter1_bb;
    for (i = 0; i < (fd->ordered ? fd->ordered : fd->collapse); i++)
      {
        tree itype = TREE_TYPE (fd->loops[i].v);
*************** expand_omp_for_init_counts (struct omp_f
*** 1919,1924 ****
--- 1920,1940 ----
  	{
  	  gcond *cond_stmt;
  	  tree n1, n2;
+ 	  if (init_n2 && i < fd->collapse && !rect_count_seen)
+ 	    {
+ 	      /* When called with non-NULL zero_iter1_bb, we won't clear
+ 		 fd->loop.n2 in the if (zero_iter_bb == NULL) code below
+ 		 and if it is prior to storing fd->loop.n2 where
+ 		 rect_count_seen is set, it could be used uninitialized.
+ 		 As zero_iter1_bb in that case can be reached also if there
+ 		 are non-zero iterations, the clearing can't be emitted
+ 		 to the zero_iter1_bb, but needs to be done before the
+ 		 condition.  */
+ 	      gassign *assign_stmt
+ 		= gimple_build_assign (fd->loop.n2, build_zero_cst (type));
+ 	      gsi_insert_before (gsi, assign_stmt, GSI_SAME_STMT);
+ 	      init_n2 = false;
+ 	    }
  	  n1 = fold_convert (itype, unshare_expr (fd->loops[i].n1));
  	  n1 = force_gimple_operand_gsi (gsi, n1, true, NULL_TREE,
  					 true, GSI_SAME_STMT);
*************** extract_omp_for_update_vars (struct omp_
*** 3283,3289 ****
  	  if (DECL_P (v) && TREE_ADDRESSABLE (v))
  	    v = force_gimple_operand_gsi (&gsi, v, true, NULL_TREE,
  					  false, GSI_CONTINUE_LINKING);
! 	  t = fold_build2 (fd->loops[i].cond_code, boolean_type_node, v, t);
  	  stmt = gimple_build_cond_empty (t);
  	  gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING);
  	  if (walk_tree (gimple_cond_lhs_ptr (as_a <gcond *> (stmt)),
--- 3299,3305 ----
  	  if (DECL_P (v) && TREE_ADDRESSABLE (v))
  	    v = force_gimple_operand_gsi (&gsi, v, true, NULL_TREE,
  					  false, GSI_CONTINUE_LINKING);
! 	  t = build2 (fd->loops[i].cond_code, boolean_type_node, v, t);
  	  stmt = gimple_build_cond_empty (t);
  	  gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING);
  	  if (walk_tree (gimple_cond_lhs_ptr (as_a <gcond *> (stmt)),
diff -Nrcpad gcc-15.2.0/gcc/omp-general.cc gcc-15.3.0/gcc/omp-general.cc
*** gcc-15.2.0/gcc/omp-general.cc	Fri Aug  8 06:51:41 2025
--- gcc-15.3.0/gcc/omp-general.cc	Fri Jun 12 06:09:06 2026
*************** omp_dynamic_cond (tree ctx, tree superco
*** 2727,2733 ****
  
        /* The user condition is not dynamic if it is constant.  */
        if (!tree_fits_shwi_p (expr))
! 	user_cond = expr;
      }
  
    /* Build the "target_device" part of the dynamic selector.  In the
--- 2727,2733 ----
  
        /* The user condition is not dynamic if it is constant.  */
        if (!tree_fits_shwi_p (expr))
! 	user_cond = unshare_expr (expr);
      }
  
    /* Build the "target_device" part of the dynamic selector.  In the
diff -Nrcpad gcc-15.2.0/gcc/omp-low.cc gcc-15.3.0/gcc/omp-low.cc
*** gcc-15.2.0/gcc/omp-low.cc	Fri Aug  8 06:51:41 2025
--- gcc-15.3.0/gcc/omp-low.cc	Fri Jun 12 06:09:06 2026
*************** lower_omp_regimplify_operands_p (tree *t
*** 14708,14713 ****
--- 14708,14715 ----
        lower_omp_regimplify_operands_data *ldata
  	= (lower_omp_regimplify_operands_data *) wi->info;
        tree o = maybe_lookup_decl (t, ldata->ctx);
+       if (o == NULL_TREE)
+ 	o = maybe_lookup_decl_in_outer_ctx (t, ldata->ctx);
        if (o != t)
  	{
  	  ldata->decls->safe_push (DECL_VALUE_EXPR (*tp));
*************** diagnose_sb_2 (gimple_stmt_iterator *gsi
*** 15378,15383 ****
--- 15380,15398 ----
  	    n = splay_tree_lookup (all_labels, (splay_tree_key) lab);
  	    if (n && diagnose_sb_0 (gsi_p, context, (gimple *) n->value))
  	      break;
+ 	  }
+       }
+       break;
+ 
+     case GIMPLE_ASM:
+       {
+ 	gasm *asm_stmt = as_a <gasm *> (stmt);
+ 	for (unsigned i = 0; i < gimple_asm_nlabels (asm_stmt); ++i)
+ 	  {
+ 	    tree lab = TREE_VALUE (gimple_asm_label_op (asm_stmt, i));
+ 	    n = splay_tree_lookup (all_labels, (splay_tree_key) lab);
+ 	    if (n && diagnose_sb_0 (gsi_p, context, (gimple *) n->value))
+ 	      break;
  	  }
        }
        break;
diff -Nrcpad gcc-15.2.0/gcc/optabs.cc gcc-15.3.0/gcc/optabs.cc
*** gcc-15.2.0/gcc/optabs.cc	Fri Aug  8 06:51:41 2025
--- gcc-15.3.0/gcc/optabs.cc	Fri Jun 12 06:09:06 2026
*************** force_expand_binop (machine_mode mode, o
*** 422,430 ****
    return true;
  }
  
! /* Create a new vector value in VMODE with all elements set to OP.  The
!    mode of OP must be the element mode of VMODE.  If OP is a constant,
!    then the return value will be a constant.  */
  
  rtx
  expand_vector_broadcast (machine_mode vmode, rtx op)
--- 422,430 ----
    return true;
  }
  
! /* Create a new vector value in VMODE with all elements set to OP.  If OP
!    is not a constant, the mode of it must be the element mode of VMODE.
!    If OP is a constant, then the return value will be a constant.  */
  
  rtx
  expand_vector_broadcast (machine_mode vmode, rtx op)
*************** expand_binop (machine_mode mode, optab b
*** 1623,1637 ****
        if (otheroptab
  	  && (icode = optab_handler (otheroptab, mode)) != CODE_FOR_nothing)
  	{
! 	  /* The scalar may have been extended to be too wide.  Truncate
! 	     it back to the proper size to fit in the broadcast vector.  */
  	  scalar_mode inner_mode = GET_MODE_INNER (mode);
! 	  if (!CONST_INT_P (op1)
! 	      && (GET_MODE_BITSIZE (as_a <scalar_int_mode> (GET_MODE (op1)))
! 		  > GET_MODE_BITSIZE (inner_mode)))
! 	    op1 = force_reg (inner_mode,
! 			     simplify_gen_unary (TRUNCATE, inner_mode, op1,
! 						 GET_MODE (op1)));
  	  rtx vop1 = expand_vector_broadcast (mode, op1);
  	  if (vop1)
  	    {
--- 1623,1647 ----
        if (otheroptab
  	  && (icode = optab_handler (otheroptab, mode)) != CODE_FOR_nothing)
  	{
! 	  /* The scalar may be wider or narrower than the vector element.
! 	     Truncate or extend it to the proper size to fit in the
! 	     broadcast vector.  */
  	  scalar_mode inner_mode = GET_MODE_INNER (mode);
! 	  if (!CONST_INT_P (op1))
! 	    {
! 	      auto mode1 = as_a <scalar_int_mode> (GET_MODE (op1));
! 	      int size1 = GET_MODE_BITSIZE (mode1);
! 	      int inner_size = GET_MODE_BITSIZE (inner_mode);
! 
! 	      if (size1 != inner_size)
! 		{
! 		  auto unary = size1 > inner_size ? TRUNCATE : ZERO_EXTEND;
! 		  op1 = force_reg (inner_mode,
! 				   simplify_gen_unary (unary, inner_mode,
! 						       op1, mode1));
! 		}
! 	    }
! 
  	  rtx vop1 = expand_vector_broadcast (mode, op1);
  	  if (vop1)
  	    {
diff -Nrcpad gcc-15.2.0/gcc/po/ChangeLog gcc-15.3.0/gcc/po/ChangeLog
*** gcc-15.2.0/gcc/po/ChangeLog	Fri Aug  8 06:52:35 2025
--- gcc-15.3.0/gcc/po/ChangeLog	Fri Jun 12 06:10:03 2026
***************
*** 1,3 ****
--- 1,33 ----
+ 2026-06-12  Release Manager
+ 
+ 	* GCC 15.3.0 released.
+ 
+ 2026-02-05  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* es.po: Update.
+ 
+ 2026-01-27  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* sv.po: Update.
+ 
+ 2026-01-19  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* es.po: Update.
+ 
+ 2025-11-10  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* es.po: Update.
+ 
+ 2025-08-24  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* de.po: Update.
+ 
+ 2025-08-11  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, hr.po, id.po,
+ 	ja.po, ka.po, nl.po, ru.po, sr.po, sv.po, tr.po, uk.po, vi.po,
+ 	zh_CN.po, zh_TW.po: Update.
+ 
  2025-08-08  Release Manager
  
  	* GCC 15.2.0 released.
diff -Nrcpad gcc-15.2.0/gcc/po/be.gmo gcc-15.3.0/gcc/po/be.gmo
*** gcc-15.2.0/gcc/po/be.gmo	Fri Aug  8 07:09:59 2025
--- gcc-15.3.0/gcc/po/be.gmo	Fri Jun 12 06:28:38 2026
*************** Last-Translator: Ales Nyakhaychyk <nyakh
*** 19,25 ****
  Language-Team: Belarusian <i18n@tut.by>
  Language: be
  MIME-Version: 1.0
! Content-Type: text/plain; charset=utf-8
  Content-Transfer-Encoding: 8bit
  X-Bugs: Report translation errors to the Language-Team address.
  
--- 19,25 ----
  Language-Team: Belarusian <i18n@tut.by>
  Language: be
  MIME-Version: 1.0
! Content-Type: text/plain; charset=UTF-8
  Content-Transfer-Encoding: 8bit
  X-Bugs: Report translation errors to the Language-Team address.
  
diff -Nrcpad gcc-15.2.0/gcc/po/be.po gcc-15.3.0/gcc/po/be.po
*** gcc-15.2.0/gcc/po/be.po	Fri Aug  8 06:51:41 2025
--- gcc-15.3.0/gcc/po/be.po	Fri Jun 12 06:09:06 2026
*************** msgid ""
*** 6,12 ****
  msgstr ""
  "Project-Id-Version: gcc 3.1\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
! "POT-Creation-Date: 2025-04-23 19:27+0000\n"
  "PO-Revision-Date: 2002-05-17 15:54+0200\n"
  "Last-Translator: Ales Nyakhaychyk <nyakhaychyk@i18n.linux.by>\n"
  "Language-Team: Belarusian <i18n@tut.by>\n"
--- 6,12 ----
  msgstr ""
  "Project-Id-Version: gcc 3.1\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
! "POT-Creation-Date: 2025-08-01 17:58+0000\n"
  "PO-Revision-Date: 2002-05-17 15:54+0200\n"
  "Last-Translator: Ales Nyakhaychyk <nyakhaychyk@i18n.linux.by>\n"
  "Language-Team: Belarusian <i18n@tut.by>\n"
*************** msgstr "Ð½ÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ñ�Ñ‚Ð²Ð°Ñ€Ñ‹Ñ
*** 579,586 ****
  #: fortran/lang.opt:214 fortran/lang.opt:547 c-family/c.opt:1692
  #: config/alpha/alpha.opt:31 common.opt:691 common.opt:849 common.opt:1112
  #: common.opt:1116 common.opt:1120 common.opt:1124 common.opt:1876
! #: common.opt:1979 common.opt:2161 common.opt:2165 common.opt:2479
! #: common.opt:2705 common.opt:3472
  #, no-c-format
  msgid "Does nothing. Preserved for backward compatibility."
  msgstr ""
--- 579,586 ----
  #: fortran/lang.opt:214 fortran/lang.opt:547 c-family/c.opt:1692
  #: config/alpha/alpha.opt:31 common.opt:691 common.opt:849 common.opt:1112
  #: common.opt:1116 common.opt:1120 common.opt:1124 common.opt:1876
! #: common.opt:1979 common.opt:2161 common.opt:2165 common.opt:2476
! #: common.opt:2702 common.opt:3469
  #, no-c-format
  msgid "Does nothing. Preserved for backward compatibility."
  msgstr ""
*************** msgstr ""
*** 915,921 ****
  msgid "Use f2c calling convention."
  msgstr ""
  
! #: fortran/lang.opt:575 cobol/lang.opt:78
  #, no-c-format
  msgid "Assume that the source file is fixed form."
  msgstr ""
--- 915,921 ----
  msgid "Use f2c calling convention."
  msgstr ""
  
! #: fortran/lang.opt:575 cobol/lang.opt:83
  #, no-c-format
  msgid "Assume that the source file is fixed form."
  msgstr ""
*************** msgstr ""
*** 960,966 ****
  msgid "-ffpe-summary=[...]\tPrint summary of floating point exceptions."
  msgstr ""
  
! #: fortran/lang.opt:615 cobol/lang.opt:82
  #, no-c-format
  msgid "Assume that the source file is free form."
  msgstr ""
--- 960,966 ----
  msgid "-ffpe-summary=[...]\tPrint summary of floating point exceptions."
  msgstr ""
  
! #: fortran/lang.opt:615 cobol/lang.opt:87
  #, no-c-format
  msgid "Assume that the source file is free form."
  msgstr ""
*************** msgstr ""
*** 1188,1199 ****
  #: config/arc/arc.opt:312 config/arc/arc.opt:317 config/arc/arc.opt:326
  #: config/arc/arc.opt:405 common.opt:649 common.opt:1210 common.opt:1214
  #: common.opt:1218 common.opt:1313 common.opt:1658 common.opt:1740
! #: common.opt:1839 common.opt:2109 common.opt:2256 common.opt:2313
! #: common.opt:2783 common.opt:2819 common.opt:2912 common.opt:2916
! #: common.opt:3025 common.opt:3160 common.opt:3168 common.opt:3176
! #: common.opt:3184 common.opt:3285 common.opt:3345 common.opt:3433
! #: common.opt:3613 common.opt:3617 common.opt:3621 common.opt:3625
! #: common.opt:3699 common.opt:3703 common.opt:3734 common.opt:3738
  #, no-c-format
  msgid "Does nothing.  Preserved for backward compatibility."
  msgstr ""
--- 1188,1199 ----
  #: config/arc/arc.opt:312 config/arc/arc.opt:317 config/arc/arc.opt:326
  #: config/arc/arc.opt:405 common.opt:649 common.opt:1210 common.opt:1214
  #: common.opt:1218 common.opt:1313 common.opt:1658 common.opt:1740
! #: common.opt:1839 common.opt:2109 common.opt:2256 common.opt:2310
! #: common.opt:2780 common.opt:2816 common.opt:2909 common.opt:2913
! #: common.opt:3022 common.opt:3157 common.opt:3165 common.opt:3173
! #: common.opt:3181 common.opt:3282 common.opt:3342 common.opt:3430
! #: common.opt:3610 common.opt:3614 common.opt:3618 common.opt:3622
! #: common.opt:3696 common.opt:3700 common.opt:3731 common.opt:3735
  #, no-c-format
  msgid "Does nothing.  Preserved for backward compatibility."
  msgstr ""
*************** msgstr ""
*** 3851,3922 ****
  msgid "Do not predefine system-specific and GCC-specific macros."
  msgstr ""
  
! #: cobol/lang.opt:43
  #, no-c-format
  msgid "Accept COBOL constructs used by non-ISO compilers"
  msgstr ""
  
! #: cobol/lang.opt:62
  #, no-c-format
  msgid "-fcobol-exceptions=<n>\tEnable some exceptions by default"
  msgstr ""
  
! #: cobol/lang.opt:66
  #, no-c-format
  msgid "Define alternative implicit copybook filename extension"
  msgstr ""
  
! #: cobol/lang.opt:70
  #, no-c-format
  msgid "Set Working-Storage data items to the supplied value"
  msgstr ""
  
! #: cobol/lang.opt:74
  #, no-c-format
  msgid "Enable Cobol lex debugging"
  msgstr ""
  
! #: cobol/lang.opt:86
  #, no-c-format
  msgid "-findicator-column=<n>\tColumn after which Region A begins"
  msgstr ""
  
! #: cobol/lang.opt:90
  #, no-c-format
  msgid "-finternal-ebcdic\tInternal processing is in EBCDIC Code Page 1140"
  msgstr ""
  
! #: cobol/lang.opt:94
  #, no-c-format
  msgid "Enable/disable static linkage for CALL literals"
  msgstr ""
  
! #: cobol/lang.opt:98
  #, no-c-format
  msgid "Enable Cobol parser debugging"
  msgstr ""
  
! #: cobol/lang.opt:102
  #, no-c-format
  msgid "Enable Cobol yacc debugging"
  msgstr ""
  
! #: cobol/lang.opt:106
  #, no-c-format
  msgid "preprocess <source_filter> before compiling"
  msgstr ""
  
! #: cobol/lang.opt:126
  #, no-c-format
  msgid "-main\tThe first program-id in the next source file is called by a generated main() entry point"
  msgstr ""
  
! #: cobol/lang.opt:130
  #, no-c-format
  msgid "-main=<source_file> source_file/PROGRAM-ID is called by the generated main()"
  msgstr ""
  
! #: cobol/lang.opt:134
  #, no-c-format
  msgid "-nomain\tNo main() function is created from COBOL source files"
  msgstr ""
--- 3851,3922 ----
  msgid "Do not predefine system-specific and GCC-specific macros."
  msgstr ""
  
! #: cobol/lang.opt:48
  #, no-c-format
  msgid "Accept COBOL constructs used by non-ISO compilers"
  msgstr ""
  
! #: cobol/lang.opt:67
  #, no-c-format
  msgid "-fcobol-exceptions=<n>\tEnable some exceptions by default"
  msgstr ""
  
! #: cobol/lang.opt:71
  #, no-c-format
  msgid "Define alternative implicit copybook filename extension"
  msgstr ""
  
! #: cobol/lang.opt:75
  #, no-c-format
  msgid "Set Working-Storage data items to the supplied value"
  msgstr ""
  
! #: cobol/lang.opt:79
  #, no-c-format
  msgid "Enable Cobol lex debugging"
  msgstr ""
  
! #: cobol/lang.opt:91
  #, no-c-format
  msgid "-findicator-column=<n>\tColumn after which Region A begins"
  msgstr ""
  
! #: cobol/lang.opt:95
  #, no-c-format
  msgid "-finternal-ebcdic\tInternal processing is in EBCDIC Code Page 1140"
  msgstr ""
  
! #: cobol/lang.opt:99
  #, no-c-format
  msgid "Enable/disable static linkage for CALL literals"
  msgstr ""
  
! #: cobol/lang.opt:103
  #, no-c-format
  msgid "Enable Cobol parser debugging"
  msgstr ""
  
! #: cobol/lang.opt:107
  #, no-c-format
  msgid "Enable Cobol yacc debugging"
  msgstr ""
  
! #: cobol/lang.opt:111
  #, no-c-format
  msgid "preprocess <source_filter> before compiling"
  msgstr ""
  
! #: cobol/lang.opt:131
  #, no-c-format
  msgid "-main\tThe first program-id in the next source file is called by a generated main() entry point"
  msgstr ""
  
! #: cobol/lang.opt:135
  #, no-c-format
  msgid "-main=<source_file> source_file/PROGRAM-ID is called by the generated main()"
  msgstr ""
  
! #: cobol/lang.opt:139
  #, no-c-format
  msgid "-nomain\tNo main() function is created from COBOL source files"
  msgstr ""
*************** msgstr ""
*** 8844,8855 ****
  msgid "Known PTX ISA versions (for use with the -mptx= option):"
  msgstr ""
  
! #: config/nvptx/nvptx.opt:156
  #, no-c-format
  msgid "Specify the PTX ISA version to use."
  msgstr ""
  
! #: config/nvptx/nvptx.opt:160
  #, no-c-format
  msgid "Initialize ptx registers."
  msgstr ""
--- 8844,8855 ----
  msgid "Known PTX ISA versions (for use with the -mptx= option):"
  msgstr ""
  
! #: config/nvptx/nvptx.opt:159
  #, no-c-format
  msgid "Specify the PTX ISA version to use."
  msgstr ""
  
! #: config/nvptx/nvptx.opt:163
  #, no-c-format
  msgid "Initialize ptx registers."
  msgstr ""
*************** msgstr ""
*** 9027,9057 ****
  
  #: config/avr/avr.opt:169
  #, no-c-format
! msgid "Assume that all data in static storage can be accessed by LDS / STS instructions.  This option is only useful for reduced Tiny devices like ATtiny40."
  msgstr ""
  
  #: config/avr/avr.opt:173
  #, no-c-format
! msgid "-mdouble=<BITS>\tUse <BITS> bits wide double type."
  msgstr ""
  
  #: config/avr/avr.opt:177
  #, no-c-format
! msgid "-mlong-double=<BITS>\tUse <BITS> bits wide long double type."
  msgstr ""
  
  #: config/avr/avr.opt:181
  #, no-c-format
! msgid "Do not link against the device-specific library lib<MCU>.a."
  msgstr ""
  
  #: config/avr/avr.opt:185
  #, no-c-format
! msgid "Do not use the device-specific specs file device-specs/specs-<MCU>."
  msgstr ""
  
  #: config/avr/avr.opt:189
  #, no-c-format
  msgid "Available BITS selections:"
  msgstr ""
  
--- 9027,9062 ----
  
  #: config/avr/avr.opt:169
  #, no-c-format
! msgid "Optimization. Fuse some move insns after insn combine."
  msgstr ""
  
  #: config/avr/avr.opt:173
  #, no-c-format
! msgid "Assume that all data in static storage can be accessed by LDS / STS instructions.  This option is only useful for reduced Tiny devices like ATtiny40."
  msgstr ""
  
  #: config/avr/avr.opt:177
  #, no-c-format
! msgid "-mdouble=<BITS>\tUse <BITS> bits wide double type."
  msgstr ""
  
  #: config/avr/avr.opt:181
  #, no-c-format
! msgid "-mlong-double=<BITS>\tUse <BITS> bits wide long double type."
  msgstr ""
  
  #: config/avr/avr.opt:185
  #, no-c-format
! msgid "Do not link against the device-specific library lib<MCU>.a."
  msgstr ""
  
  #: config/avr/avr.opt:189
  #, no-c-format
+ msgid "Do not use the device-specific specs file device-specs/specs-<MCU>."
+ msgstr ""
+ 
+ #: config/avr/avr.opt:193
+ #, no-c-format
  msgid "Available BITS selections:"
  msgstr ""
  
*************** msgstr ""
*** 14551,14557 ****
  msgid "Mark all loops as parallel."
  msgstr ""
  
! #: common.opt:1852 common.opt:1860 common.opt:3249
  #, no-c-format
  msgid "Enable loop nest transforms.  Same as -floop-nest-optimize."
  msgstr ""
--- 14556,14562 ----
  msgid "Mark all loops as parallel."
  msgstr ""
  
! #: common.opt:1852 common.opt:1860 common.opt:3246
  #, no-c-format
  msgid "Enable loop nest transforms.  Same as -floop-nest-optimize."
  msgstr ""
*************** msgstr ""
*** 14914,16340 ****
  msgid "Number of cache entries in incremental LTO after which to prune old entries."
  msgstr ""
  
! #: common.opt:2304
  #, no-c-format
  msgid "Specify the algorithm to partition symbols and vars at linktime."
  msgstr ""
  
! #: common.opt:2309
  #, no-c-format
  msgid "Use zlib/zstd compression level <number> for IL."
  msgstr ""
  
! #: common.opt:2317
  #, no-c-format
  msgid "Report various link-time optimization statistics."
  msgstr ""
  
! #: common.opt:2321
  #, no-c-format
  msgid "Report various link-time optimization statistics for WPA only."
  msgstr ""
  
! #: common.opt:2325
  #, fuzzy, no-c-format
  msgid "Set errno after built-in math functions."
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: common.opt:2329
  #, no-c-format
  msgid "-fmax-errors=<number>\tMaximum number of errors to report."
  msgstr ""
  
! #: common.opt:2333
  #, no-c-format
  msgid "Allow removal of malloc and free pairs when allocated block is unused."
  msgstr ""
  
! #: common.opt:2340
  #, no-c-format
  msgid "Report on permanent memory allocation."
  msgstr ""
  
! #: common.opt:2344
  #, no-c-format
  msgid "Report on permanent memory allocation in WPA only."
  msgstr ""
  
! #: common.opt:2351
  #, no-c-format
  msgid "Attempt to merge identical constants and constant variables."
  msgstr ""
  
! #: common.opt:2355
  #, no-c-format
  msgid "Attempt to merge identical constants across compilation units."
  msgstr ""
  
! #: common.opt:2359
  #, no-c-format
  msgid "Attempt to merge identical debug strings across compilation units."
  msgstr ""
  
! #: common.opt:2363
  #, no-c-format
  msgid "-fmessage-length=<number>\tLimit diagnostics to <number> characters per line.  0 suppresses line-wrapping."
  msgstr ""
  
! #: common.opt:2367
  #, fuzzy, no-c-format
  msgid "Align the start of every function."
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: common.opt:2371
  #, no-c-format
  msgid "Perform SMS based modulo scheduling before the first scheduling pass."
  msgstr ""
  
! #: common.opt:2375
  #, no-c-format
  msgid "Perform SMS based modulo scheduling with register moves allowed."
  msgstr ""
  
! #: common.opt:2379
  #, no-c-format
  msgid "Move loop invariant computations out of loops."
  msgstr ""
  
! #: common.opt:2383
  #, no-c-format
  msgid "Move stores out of loops."
  msgstr ""
  
! #: common.opt:2387
  #, no-c-format
  msgid "Building block for specs-based multilib-aware TFLAGS."
  msgstr ""
  
! #: common.opt:2391
  #, no-c-format
  msgid "Use the RTL dead code elimination pass."
  msgstr ""
  
! #: common.opt:2395
  #, no-c-format
  msgid "Use the RTL dead store elimination pass."
  msgstr ""
  
! #: common.opt:2399
  #, no-c-format
  msgid "Enable/Disable the traditional scheduling in loops that already passed modulo scheduling."
  msgstr ""
  
! #: common.opt:2403
  #, no-c-format
  msgid "Support synchronous non-call exceptions."
  msgstr ""
  
! #: common.opt:2410
  #, no-c-format
  msgid "-foffload-options=<targets>=<options>\tSpecify options for the offloading targets."
  msgstr ""
  
! #: common.opt:2414
  #, no-c-format
  msgid "-foffload-abi=[lp64|ilp32]\tSet the ABI to use in an offload compiler."
  msgstr ""
  
! #: common.opt:2427
  #, no-c-format
  msgid "-foffload-abi-host-opts=<options>\tSpecify host ABI options."
  msgstr ""
  
! #: common.opt:2431
  #, no-c-format
  msgid "When possible do not generate stack frames."
  msgstr ""
  
! #: common.opt:2438
  #, no-c-format
  msgid "Generate SIMD clones for functions with the OpenMP declare target directive."
  msgstr ""
  
! #: common.opt:2457
  #, fuzzy, no-c-format
  #| msgid "Enable SSA optimizations"
  msgid "Enable all optimization info dumps on stderr."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ð°Ñ†ÑŒ SSA Ð°Ð¿Ñ‚Ñ‹Ð¼Ñ–Ð·Ð°Ñ†Ñ‹ÑŽ"
  
! #: common.opt:2461
  #, no-c-format
  msgid "-fopt-info[-<type>=filename]\tDump compiler optimization details."
  msgstr ""
  
! #: common.opt:2465
  #, no-c-format
  msgid "Write a SRCFILE.opt-record.json file detailing what optimizations were performed."
  msgstr ""
  
! #: common.opt:2469
  #, no-c-format
  msgid "Detect loops calculating CRC and replace with faster implementation. If the target supports CRC instruction and the CRC loop uses the same polynomial as the one used in the CRC instruction, directly replace with the corresponding CRC instruction. Otherwise, if the target supports carry-less-multiplication instruction, generate CRC using it. If neither case applies, generate table-based CRC."
  msgstr ""
  
! #: common.opt:2483
  #, no-c-format
  msgid "Optimize sibling and tail recursive calls."
  msgstr ""
  
! #: common.opt:2487
  #, no-c-format
  msgid "Insert path profiling code."
  msgstr ""
  
! #: common.opt:2491
  #, no-c-format
  msgid "Perform partial inlining."
  msgstr ""
  
! #: common.opt:2495 common.opt:2499
  #, no-c-format
  msgid "Report on memory allocation before interprocedural optimization."
  msgstr ""
  
! #: common.opt:2503
  #, no-c-format
  msgid "Pack structure members together without holes."
  msgstr ""
  
! #: common.opt:2507
  #, no-c-format
  msgid "-fpack-struct=<number>\tSet initial maximum structure member alignment."
  msgstr ""
  
! #: common.opt:2511
  #, no-c-format
  msgid "Return small aggregates in memory, not registers."
  msgstr ""
  
! #: common.opt:2515
  #, no-c-format
  msgid "Perform loop peeling."
  msgstr ""
  
! #: common.opt:2519
  #, no-c-format
  msgid "Enable machine specific peephole optimizations."
  msgstr ""
  
! #: common.opt:2523
  #, no-c-format
  msgid "Enable an RTL peephole pass before sched2."
  msgstr ""
  
! #: common.opt:2527
  #, no-c-format
  msgid "Generate position-independent code if possible (large mode)."
  msgstr ""
  
! #: common.opt:2531
  #, no-c-format
  msgid "Generate position-independent code for executables if possible (large mode)."
  msgstr ""
  
! #: common.opt:2535
  #, no-c-format
  msgid "Generate position-independent code if possible (small mode)."
  msgstr ""
  
! #: common.opt:2539
  #, no-c-format
  msgid "Generate position-independent code for executables if possible (small mode)."
  msgstr ""
  
! #: common.opt:2543
  #, no-c-format
  msgid "Use PLT for PIC calls (-fno-plt: load the address from GOT at call site)."
  msgstr ""
  
! #: common.opt:2547
  #, no-c-format
  msgid "Specify a plugin to load."
  msgstr ""
  
! #: common.opt:2551
  #, no-c-format
  msgid "-fplugin-arg-<name>-<key>[=<value>]\tSpecify argument <key>=<value> for plugin <name>."
  msgstr ""
  
! #: common.opt:2555
  #, no-c-format
  msgid "Run predictive commoning optimization."
  msgstr ""
  
! #: common.opt:2559
  #, no-c-format
  msgid "Generate prefetch instructions, if available, for arrays in loops."
  msgstr ""
  
! #: common.opt:2563
  #, no-c-format
  msgid "Enable basic program profiling code."
  msgstr ""
  
! #: common.opt:2567
  #, no-c-format
  msgid "Generate absolute source path names for gcov."
  msgstr ""
  
! #: common.opt:2571
  #, no-c-format
  msgid "Insert arc-based program profiling code."
  msgstr ""
  
! #: common.opt:2575
  #, no-c-format
  msgid "Insert condition coverage profiling code."
  msgstr ""
  
! #: common.opt:2579
  #, no-c-format
  msgid "Set the top-level directory for storing the profile data. The default is 'pwd'."
  msgstr ""
  
! #: common.opt:2584
  #, no-c-format
  msgid "Select the name for storing the profile note file."
  msgstr ""
  
! #: common.opt:2588
  #, no-c-format
  msgid "Enable correction of flow inconsistent profile data input."
  msgstr ""
  
! #: common.opt:2592
  #, no-c-format
  msgid "-fprofile-update=[single|atomic|prefer-atomic]\tSet the profile update method."
  msgstr ""
  
! #: common.opt:2596
  #, no-c-format
  msgid "Instrument only functions from files whose name matches any of the regular expressions (separated by semi-colons)."
  msgstr ""
  
! #: common.opt:2600
  #, no-c-format
  msgid "Instrument only functions from files whose name does not match any of the regular expressions (separated by semi-colons)."
  msgstr ""
  
! #: common.opt:2616
  #, no-c-format
  msgid "-fprofile-reproducible=[serial|parallel-runs|multithreaded]\tControl level of reproducibility of profile gathered by -fprofile-generate."
  msgstr ""
  
! #: common.opt:2632
  #, no-c-format
  msgid "Remove prefix from absolute path before mangling name for -fprofile-generate= and -fprofile-use=."
  msgstr ""
  
! #: common.opt:2636
  #, no-c-format
  msgid "-fprofile-prefix-map=<old>=<new>\tMap one directory name to another in GCOV coverage result."
  msgstr ""
  
! #: common.opt:2640
  #, no-c-format
  msgid "Enable common options for generating profile info for profile feedback directed optimizations."
  msgstr ""
  
! #: common.opt:2644
  #, no-c-format
  msgid "Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=."
  msgstr ""
  
! #: common.opt:2648
  #, no-c-format
  msgid "Register the profile information in the .gcov_info section instead of using a constructor/destructor."
  msgstr ""
  
! #: common.opt:2652
  #, no-c-format
  msgid "Register the profile information in the specified section instead of using a constructor/destructor."
  msgstr ""
  
! #: common.opt:2656
  #, no-c-format
  msgid "Do not assume that functions never executed during the train run are cold."
  msgstr ""
  
! #: common.opt:2660
  #, no-c-format
  msgid "Enable common options for performing profile feedback directed optimizations."
  msgstr ""
  
! #: common.opt:2664
  #, no-c-format
  msgid "Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=."
  msgstr ""
  
! #: common.opt:2668
  #, no-c-format
  msgid "Insert code to profile values of expressions."
  msgstr ""
  
! #: common.opt:2672
  #, no-c-format
  msgid "Report on consistency of profile."
  msgstr ""
  
! #: common.opt:2676
  #, no-c-format
  msgid "Enable function reordering that improves code placement."
  msgstr ""
  
! #: common.opt:2680
  #, no-c-format
  msgid "Insert NOP instructions at each function entry."
  msgstr ""
  
! #: common.opt:2687
  #, no-c-format
  msgid "-frandom-seed=<string>\tMake compile reproducible using <string>."
  msgstr ""
  
! #: common.opt:2697
  #, no-c-format
  msgid "Record gcc command line switches in the object file."
  msgstr ""
  
! #: common.opt:2701
  #, fuzzy, no-c-format
  msgid "Return small aggregates in registers."
  msgstr "Ð�Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ð°Ñ†ÑŒ Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð° sb"
  
! #: common.opt:2709
  #, no-c-format
  msgid "Tell DSE that the storage for a C++ object is dead when the constructor starts and when the destructor finishes."
  msgstr ""
  
! #: common.opt:2723
  #, no-c-format
  msgid "-flive-patching=[inline-only-static|inline-clone]\tControl IPA optimizations to provide a safe compilation for live-patching.  At the same time, provides multiple-level control on the enabled IPA optimizations."
  msgstr ""
  
! #: common.opt:2738
  #, no-c-format
  msgid "Tell DCE to remove unused C++ allocations."
  msgstr ""
  
! #: common.opt:2742
  #, no-c-format
  msgid "Relief of register pressure through live range shrinkage."
  msgstr ""
  
! #: common.opt:2746
  #, no-c-format
  msgid "Perform a register renaming optimization pass."
  msgstr ""
  
! #: common.opt:2750
  #, no-c-format
  msgid "Perform a target dependent instruction fusion optimization pass."
  msgstr ""
  
! #: common.opt:2754
  #, no-c-format
  msgid "Reorder basic blocks to improve code placement."
  msgstr ""
  
! #: common.opt:2758
  #, no-c-format
  msgid "-freorder-blocks-algorithm=[simple|stc]\tSet the used basic block reordering algorithm."
  msgstr ""
  
! #: common.opt:2771
  #, no-c-format
  msgid "Reorder basic blocks and partition into hot and cold sections."
  msgstr ""
  
! #: common.opt:2775
  #, no-c-format
  msgid "Reorder functions to improve code placement."
  msgstr ""
  
! #: common.opt:2779
  #, no-c-format
  msgid "Add a common subexpression elimination pass after loop optimizations."
  msgstr ""
  
! #: common.opt:2787
  #, no-c-format
  msgid "Disable optimizations that assume default FP rounding behavior."
  msgstr ""
  
! #: common.opt:2791
  #, no-c-format
  msgid "Enable scheduling across basic blocks."
  msgstr ""
  
! #: common.opt:2795
  #, no-c-format
  msgid "Enable register pressure sensitive insn scheduling."
  msgstr ""
  
! #: common.opt:2799
  #, no-c-format
  msgid "Allow speculative motion of non-loads."
  msgstr ""
  
! #: common.opt:2803
  #, no-c-format
  msgid "Allow speculative motion of some loads."
  msgstr ""
  
! #: common.opt:2807
  #, no-c-format
  msgid "Allow speculative motion of more loads."
  msgstr ""
  
! #: common.opt:2811
  #, no-c-format
  msgid "-fsched-verbose=<number>\tSet the verbosity level of the scheduler."
  msgstr ""
  
! #: common.opt:2815
  #, no-c-format
  msgid "If scheduling post reload, do superblock scheduling."
  msgstr ""
  
! #: common.opt:2823
  #, no-c-format
  msgid "Reschedule instructions before register allocation."
  msgstr ""
  
! #: common.opt:2827
  #, no-c-format
  msgid "Reschedule instructions after register allocation."
  msgstr ""
  
! #: common.opt:2834
  #, no-c-format
  msgid "Schedule instructions using selective scheduling algorithm."
  msgstr ""
  
! #: common.opt:2838
  #, no-c-format
  msgid "Run selective scheduling after reload."
  msgstr ""
  
! #: common.opt:2842
  #, no-c-format
  msgid "Run self-tests, using the given path to locate test files."
  msgstr ""
  
! #: common.opt:2846
  #, no-c-format
  msgid "Perform software pipelining of inner loops during selective scheduling."
  msgstr ""
  
! #: common.opt:2850
  #, no-c-format
  msgid "Perform software pipelining of outer loops during selective scheduling."
  msgstr ""
  
! #: common.opt:2854
  #, no-c-format
  msgid "Reschedule pipelined regions without pipelining."
  msgstr ""
  
! #: common.opt:2858
  #, no-c-format
  msgid "Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker."
  msgstr ""
  
! #: common.opt:2864
  #, no-c-format
  msgid "Allow premature scheduling of queued insns."
  msgstr ""
  
! #: common.opt:2868
  #, no-c-format
  msgid "-fsched-stalled-insns=<number>\tSet number of queued insns that can be prematurely scheduled."
  msgstr ""
  
! #: common.opt:2876
  #, no-c-format
  msgid "Set dependence distance checking in premature scheduling of queued insns."
  msgstr ""
  
! #: common.opt:2880
  #, no-c-format
  msgid "-fsched-stalled-insns-dep=<number>\tSet dependence distance checking in premature scheduling of queued insns."
  msgstr ""
  
! #: common.opt:2884
  #, no-c-format
  msgid "Enable the group heuristic in the scheduler."
  msgstr ""
  
! #: common.opt:2888
  #, no-c-format
  msgid "Enable the critical path heuristic in the scheduler."
  msgstr ""
  
! #: common.opt:2892
  #, no-c-format
  msgid "Enable the speculative instruction heuristic in the scheduler."
  msgstr ""
  
! #: common.opt:2896
  #, no-c-format
  msgid "Enable the rank heuristic in the scheduler."
  msgstr ""
  
! #: common.opt:2900
  #, no-c-format
  msgid "Enable the last instruction heuristic in the scheduler."
  msgstr ""
  
! #: common.opt:2904
  #, no-c-format
  msgid "Enable the dependent count heuristic in the scheduler."
  msgstr ""
  
! #: common.opt:2908
  #, no-c-format
  msgid "Access data in the same section from shared anchor points."
  msgstr ""
  
! #: common.opt:2920
  #, no-c-format
  msgid "Turn on Redundant Extensions Elimination pass."
  msgstr ""
  
! #: common.opt:2924
  #, no-c-format
  msgid "Show column numbers in diagnostics, when available.  Default on."
  msgstr ""
  
! #: common.opt:2928
  #, no-c-format
  msgid "Emit function prologues only before parts of the function that need it, rather than at the top of the function."
  msgstr ""
  
! #: common.opt:2933
  #, no-c-format
  msgid "Shrink-wrap parts of the prologue and epilogue separately."
  msgstr ""
  
! #: common.opt:2937
  #, no-c-format
  msgid "Disable optimizations observable by IEEE signaling NaNs."
  msgstr ""
  
! #: common.opt:2941
  #, no-c-format
  msgid "Disable floating point optimizations that ignore the IEEE signedness of zero."
  msgstr ""
  
! #: common.opt:2945
  #, no-c-format
  msgid "Convert floating point constants to single precision constants."
  msgstr ""
  
! #: common.opt:2949
  #, no-c-format
  msgid "Split lifetimes of induction variables when loops are unrolled."
  msgstr ""
  
! #: common.opt:2953
  #, no-c-format
  msgid "Generate discontiguous stack frames."
  msgstr ""
  
! #: common.opt:2957
  #, no-c-format
  msgid "Split wide types into independent registers."
  msgstr ""
  
! #: common.opt:2961
  #, no-c-format
  msgid "Split wide types into independent registers earlier."
  msgstr ""
  
! #: common.opt:2965
  #, no-c-format
  msgid "Enable backward propagation of use properties at the SSA level."
  msgstr ""
  
! #: common.opt:2969
  #, no-c-format
  msgid "Optimize conditional patterns using SSA PHI nodes."
  msgstr ""
  
! #: common.opt:2973
  #, no-c-format
  msgid "Optimize amount of stdarg registers saved to stack at start of function."
  msgstr ""
  
! #: common.opt:2977
  #, no-c-format
  msgid "Apply variable expansion when loops are unrolled."
  msgstr ""
  
! #: common.opt:2981
  #, fuzzy, no-c-format
  #| msgid "Insert stack checking code into the program"
  msgid "-fstack-check=[no|generic|specific]\tInsert stack checking code into the program."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ð°Ñ†ÑŒ ÐºÐ¾Ð´ Ð¿Ñ€Ð°Ð²Ñ�Ñ€ÐºÑ– Ñ�Ñ‚Ñ�ÐºÑƒ Ñž Ð¿Ñ€Ð°Ð³Ñ€Ð°Ð¼Ñƒ"
  
! #: common.opt:2985
  #, fuzzy, no-c-format
  #| msgid "Insert stack checking code into the program"
  msgid "Insert stack checking code into the program.  Same as -fstack-check=specific."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ð°Ñ†ÑŒ ÐºÐ¾Ð´ Ð¿Ñ€Ð°Ð²Ñ�Ñ€ÐºÑ– Ñ�Ñ‚Ñ�ÐºÑƒ Ñž Ð¿Ñ€Ð°Ð³Ñ€Ð°Ð¼Ñƒ"
  
! #: common.opt:2989
  #, no-c-format
  msgid "Insert code to probe each page of stack space as it is allocated to protect from stack-clash style attacks."
  msgstr ""
  
! #: common.opt:2997
  #, no-c-format
  msgid "-fstack-limit-register=<register>\tTrap if the stack goes past <register>."
  msgstr ""
  
! #: common.opt:3001
  #, no-c-format
  msgid "-fstack-limit-symbol=<name>\tTrap if the stack goes past symbol <name>."
  msgstr ""
  
! #: common.opt:3005
  #, no-c-format
  msgid "Use propolice as a stack protection method."
  msgstr ""
  
! #: common.opt:3009
  #, no-c-format
  msgid "Use a stack protection method for every function."
  msgstr ""
  
! #: common.opt:3013
  #, no-c-format
  msgid "Use a smart stack protection method for certain functions."
  msgstr ""
  
! #: common.opt:3017
  #, no-c-format
  msgid "Use stack protection method only for functions with the stack_protect attribute."
  msgstr ""
  
! #: common.opt:3021
  #, no-c-format
  msgid "Output stack usage information on a per-function basis."
  msgstr ""
  
! #: common.opt:3033
  #, no-c-format
  msgid "Assume strict aliasing rules apply."
  msgstr ""
  
! #: common.opt:3037
  #, no-c-format
  msgid "Treat signed overflow as undefined.  Negated as -fwrapv -fwrapv-pointer."
  msgstr ""
  
! #: common.opt:3041
  #, no-c-format
  msgid "Disable stack scrub entirely, disregarding strub attributes."
  msgstr ""
  
! #: common.opt:3045
  #, no-c-format
  msgid "Enable stack scrub as per attributes, with strict call checking."
  msgstr ""
  
! #: common.opt:3054
  #, no-c-format
  msgid "Restore default strub mode: as per attributes, with relaxed checking."
  msgstr ""
  
! #: common.opt:3058
  #, no-c-format
  msgid "Enable stack scrubbing for all viable functions."
  msgstr ""
  
! #: common.opt:3062
  #, no-c-format
  msgid "Enable at-calls stack scrubbing for all viable functions."
  msgstr ""
  
! #: common.opt:3066
  #, no-c-format
  msgid "Enable internal stack scrubbing for all viable functions."
  msgstr ""
  
! #: common.opt:3070
  #, no-c-format
  msgid "Implement __atomic operations via libcalls to legacy __sync functions."
  msgstr ""
  
! #: common.opt:3074
  #, no-c-format
  msgid "Check for syntax errors, then stop."
  msgstr ""
  
! #: common.opt:3078
  #, no-c-format
  msgid "Create data files needed by \"gcov\"."
  msgstr ""
  
! #: common.opt:3082
  #, no-c-format
  msgid "Perform jump threading optimizations."
  msgstr ""
  
! #: common.opt:3086
  #, no-c-format
  msgid "Report the time taken by each compiler pass."
  msgstr ""
  
! #: common.opt:3090
  #, no-c-format
  msgid "Record times taken by sub-phases separately."
  msgstr ""
  
! #: common.opt:3094
  #, no-c-format
  msgid "-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\tSet the default thread-local storage code generation model."
  msgstr ""
  
! #: common.opt:3113
  #, no-c-format
  msgid "Reorder top level functions, variables, and asms."
  msgstr ""
  
! #: common.opt:3117
  #, no-c-format
  msgid "Perform superblock formation via tail duplication."
  msgstr ""
  
! #: common.opt:3121
  #, no-c-format
  msgid "For targets that normally need trampolines for nested functions, always generate them instead of using descriptors."
  msgstr ""
  
! #: common.opt:3126
  #, no-c-format
  msgid "Whether trampolines are generated in executable memory rather than executable stack."
  msgstr ""
  
! #: common.opt:3144
  #, no-c-format
  msgid "Assume floating-point operations can trap."
  msgstr ""
  
! #: common.opt:3148
  #, no-c-format
  msgid "Trap for signed overflow in addition, subtraction and multiplication."
  msgstr ""
  
! #: common.opt:3152
  #, fuzzy, no-c-format
  #| msgid "Enable SSA optimizations"
  msgid "Enable SSA-CCP optimization on trees."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ð°Ñ†ÑŒ SSA Ð°Ð¿Ñ‚Ñ‹Ð¼Ñ–Ð·Ð°Ñ†Ñ‹ÑŽ"
  
! #: common.opt:3156
  #, fuzzy, no-c-format
  #| msgid "Enable SSA optimizations"
  msgid "Enable SSA-BIT-CCP optimization on trees."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ð°Ñ†ÑŒ SSA Ð°Ð¿Ñ‚Ñ‹Ð¼Ñ–Ð·Ð°Ñ†Ñ‹ÑŽ"
  
! #: common.opt:3164
  #, no-c-format
  msgid "Enable loop header copying on trees."
  msgstr ""
  
! #: common.opt:3172
  #, no-c-format
  msgid "Enable SSA coalescing of user variables."
  msgstr ""
  
! #: common.opt:3180
  #, no-c-format
  msgid "Enable copy propagation on trees."
  msgstr ""
  
! #: common.opt:3188
  #, no-c-format
  msgid "Transform condition stores into unconditional ones."
  msgstr ""
  
! #: common.opt:3192
  #, no-c-format
  msgid "Perform conversions of switch initializations."
  msgstr ""
  
! #: common.opt:3196
  #, fuzzy, no-c-format
  #| msgid "Enable SSA optimizations"
  msgid "Enable SSA dead code elimination optimization on trees."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ð°Ñ†ÑŒ SSA Ð°Ð¿Ñ‚Ñ‹Ð¼Ñ–Ð·Ð°Ñ†Ñ‹ÑŽ"
  
! #: common.opt:3200
  #, fuzzy, no-c-format
  #| msgid "Enable SSA optimizations"
  msgid "Enable dominator optimizations."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ð°Ñ†ÑŒ SSA Ð°Ð¿Ñ‚Ñ‹Ð¼Ñ–Ð·Ð°Ñ†Ñ‹ÑŽ"
  
! #: common.opt:3204
  #, no-c-format
  msgid "Enable tail merging on trees."
  msgstr ""
  
! #: common.opt:3208
  #, fuzzy, no-c-format
  #| msgid "Enable SSA optimizations"
  msgid "Enable dead store elimination."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ð°Ñ†ÑŒ SSA Ð°Ð¿Ñ‚Ñ‹Ð¼Ñ–Ð·Ð°Ñ†Ñ‹ÑŽ"
  
! #: common.opt:3212
  #, no-c-format
  msgid "Enable forward propagation on trees."
  msgstr ""
  
! #: common.opt:3216
  #, no-c-format
  msgid "Enable Full Redundancy Elimination (FRE) on trees."
  msgstr ""
  
! #: common.opt:3220
  #, fuzzy, no-c-format
  #| msgid "Enable SSA optimizations"
  msgid "Enable string length optimizations on trees."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ð°Ñ†ÑŒ SSA Ð°Ð¿Ñ‚Ñ‹Ð¼Ñ–Ð·Ð°Ñ†Ñ‹ÑŽ"
  
! #: common.opt:3224
  #, no-c-format
  msgid "Detect paths that trigger erroneous or undefined behavior due to dereferencing a null pointer.  Isolate those paths from the main control flow and turn the statement with erroneous or undefined behavior into a trap."
  msgstr ""
  
! #: common.opt:3230
  #, no-c-format
  msgid "Detect paths that trigger erroneous or undefined behavior due to a null value being used in a way forbidden by a returns_nonnull or nonnull attribute.  Isolate those paths from the main control flow and turn the statement with erroneous or undefined behavior into a trap."
  msgstr ""
  
! #: common.opt:3237
  #, no-c-format
  msgid "Enable loop distribution on trees."
  msgstr ""
  
! #: common.opt:3241
  #, no-c-format
  msgid "Enable loop distribution for patterns transformed into a library call."
  msgstr ""
  
! #: common.opt:3245
  #, no-c-format
  msgid "Enable loop invariant motion on trees."
  msgstr ""
  
! #: common.opt:3253
  #, no-c-format
  msgid "Create canonical induction variables in loops."
  msgstr ""
  
! #: common.opt:3257
  #, fuzzy, no-c-format
  #| msgid "Enable SSA optimizations"
  msgid "Enable loop optimizations on tree level."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ð°Ñ†ÑŒ SSA Ð°Ð¿Ñ‚Ñ‹Ð¼Ñ–Ð·Ð°Ñ†Ñ‹ÑŽ"
  
! #: common.opt:3261
  #, no-c-format
  msgid "-ftree-parallelize-loops=<number>\tEnable automatic parallelization of loops."
  msgstr ""
  
! #: common.opt:3265
  #, no-c-format
  msgid "Enable hoisting loads from conditional pointers."
  msgstr ""
  
! #: common.opt:3269
  #, fuzzy, no-c-format
  #| msgid "Enable SSA optimizations"
  msgid "Enable SSA-PRE optimization on trees."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ð°Ñ†ÑŒ SSA Ð°Ð¿Ñ‚Ñ‹Ð¼Ñ–Ð·Ð°Ñ†Ñ‹ÑŽ"
  
! #: common.opt:3273
  #, no-c-format
  msgid "In SSA-PRE optimization on trees, enable partial-partial redundancy elimination."
  msgstr ""
  
! #: common.opt:3277
  #, no-c-format
  msgid "Perform function-local points-to analysis on trees."
  msgstr ""
  
! #: common.opt:3281
  #, no-c-format
  msgid "Enable reassociation on tree level."
  msgstr ""
  
! #: common.opt:3289
  #, no-c-format
  msgid "Enable SSA code sinking on trees."
  msgstr ""
  
! #: common.opt:3293
  #, no-c-format
  msgid "Perform straight-line strength reduction."
  msgstr ""
  
! #: common.opt:3297
  #, no-c-format
  msgid "Perform scalar replacement of aggregates."
  msgstr ""
  
! #: common.opt:3301
  #, no-c-format
  msgid "Replace temporary expressions in the SSA->normal pass."
  msgstr ""
  
! #: common.opt:3305
  #, no-c-format
  msgid "Perform live range splitting during the SSA->normal pass."
  msgstr ""
  
! #: common.opt:3309
  #, no-c-format
  msgid "Perform Value Range Propagation on trees."
  msgstr ""
  
! #: common.opt:3313
  #, no-c-format
  msgid "Split paths leading to loop backedges."
  msgstr ""
  
! #: common.opt:3317
  #, no-c-format
  msgid "Assume common declarations may be overridden with ones with a larger trailing array."
  msgstr ""
  
! #: common.opt:3322
  #, no-c-format
  msgid "Compile whole compilation unit at a time."
  msgstr ""
  
! #: common.opt:3326
  #, no-c-format
  msgid "Trap on __builtin_unreachable instead of using it for optimization."
  msgstr ""
  
! #: common.opt:3330
  #, no-c-format
  msgid "Perform loop unrolling when iteration count is known."
  msgstr ""
  
! #: common.opt:3334
  #, no-c-format
  msgid "Perform loop unrolling for all loops."
  msgstr ""
  
! #: common.opt:3349
  #, no-c-format
  msgid "Allow optimization for floating-point arithmetic which may change the result of the operation due to rounding."
  msgstr ""
  
! #: common.opt:3354
  #, no-c-format
  msgid "Same as -fassociative-math for expressions which include division."
  msgstr ""
  
! #: common.opt:3362
  #, no-c-format
  msgid "Allow math optimizations that may violate IEEE or ISO standards."
  msgstr ""
  
! #: common.opt:3366
  #, no-c-format
  msgid "Perform loop unswitching."
  msgstr ""
  
! #: common.opt:3370
  #, no-c-format
  msgid "Perform loop splitting."
  msgstr ""
  
! #: common.opt:3374
  #, no-c-format
  msgid "Version loops based on whether indices have a stride of one."
  msgstr ""
  
! #: common.opt:3378
  #, fuzzy, no-c-format
  #| msgid "Enable exception handling"
  msgid "Just generate unwind tables for exception handling."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ñ‹Ñ†ÑŒ Ð°Ð¿Ñ€Ð°Ñ†Ð¾ÑžÐºÑƒ Ð²Ñ‹ÐºÐ»ÑŽÑ‡Ñ�Ð½ÑŒÐ½Ñ�Ñž"
  
! #: common.opt:3382
  #, no-c-format
  msgid "Use the bfd linker instead of the default linker."
  msgstr ""
  
! #: common.opt:3386
  #, no-c-format
  msgid "Use the gold linker instead of the default linker."
  msgstr ""
  
! #: common.opt:3390
  #, no-c-format
  msgid "Use the lld LLVM linker instead of the default linker."
  msgstr ""
  
! #: common.opt:3394
  #, no-c-format
  msgid "Use the Modern linker (MOLD) linker instead of the default linker."
  msgstr ""
  
! #: common.opt:3404
  #, no-c-format
  msgid "Perform variable tracking."
  msgstr ""
  
! #: common.opt:3411
  #, no-c-format
  msgid "Perform variable tracking by annotating assignments."
  msgstr ""
  
! #: common.opt:3417
  #, no-c-format
  msgid "Toggle -fvar-tracking-assignments."
  msgstr ""
  
! #: common.opt:3424
  #, no-c-format
  msgid "Perform variable tracking and also tag variables that are uninitialized."
  msgstr ""
  
! #: common.opt:3429
  #, no-c-format
  msgid "Enable vectorization on trees."
  msgstr ""
  
! #: common.opt:3437
  #, fuzzy, no-c-format
  #| msgid "Enable SSA optimizations"
  msgid "Enable loop vectorization on trees."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ð°Ñ†ÑŒ SSA Ð°Ð¿Ñ‚Ñ‹Ð¼Ñ–Ð·Ð°Ñ†Ñ‹ÑŽ"
  
! #: common.opt:3441
  #, no-c-format
  msgid "Enable basic block vectorization (SLP) on trees."
  msgstr ""
  
! #: common.opt:3445
  #, no-c-format
  msgid "-fvect-cost-model=[unlimited|dynamic|cheap|very-cheap]\tSpecifies the cost model for vectorization."
  msgstr ""
  
! #: common.opt:3449
  #, no-c-format
  msgid "-fsimd-cost-model=[unlimited|dynamic|cheap|very-cheap]\tSpecifies the vectorization cost model for code marked with a simd directive."
  msgstr ""
  
! #: common.opt:3468
  #, no-c-format
  msgid "Enables the dynamic vectorizer cost model.  Preserved for backward compatibility."
  msgstr ""
  
! #: common.opt:3476
  #, no-c-format
  msgid "Enable copy propagation of scalar-evolution information."
  msgstr ""
  
! #: common.opt:3480
  #, no-c-format
  msgid "-ftrivial-auto-var-init=[uninitialized|pattern|zero]\tAdd initializations to automatic variables."
  msgstr ""
  
! #: common.opt:3502
  #, no-c-format
  msgid "Add extra commentary to assembler output."
  msgstr ""
  
! #: common.opt:3506
  #, no-c-format
  msgid "-fvisibility=[default|internal|hidden|protected]\tSet the default symbol visibility."
  msgstr ""
  
! #: common.opt:3525
  #, no-c-format
  msgid "Validate vtable pointers before using them."
  msgstr ""
  
! #: common.opt:3541
  #, no-c-format
  msgid "Output vtable verification counters."
  msgstr ""
  
! #: common.opt:3545
  #, no-c-format
  msgid "Output vtable verification pointer sets information."
  msgstr ""
  
! #: common.opt:3549
  #, no-c-format
  msgid "Use expression value profiles in optimizations."
  msgstr ""
  
! #: common.opt:3553
  #, no-c-format
  msgid "Construct webs and split unrelated uses of single variable."
  msgstr ""
  
! #: common.opt:3557
  #, no-c-format
  msgid "Enable conditional dead code elimination for builtin calls."
  msgstr ""
  
! #: common.opt:3561
  #, no-c-format
  msgid "Perform whole program optimizations."
  msgstr ""
  
! #: common.opt:3565
  #, no-c-format
  msgid "Assume pointer overflow wraps around."
  msgstr ""
  
! #: common.opt:3569
  #, no-c-format
  msgid "Assume signed arithmetic overflow wraps around."
  msgstr ""
  
! #: common.opt:3573
  #, no-c-format
  msgid "Put zero initialized data in the bss section."
  msgstr ""
  
! #: common.opt:3577
  #, no-c-format
  msgid "Clear call-used registers upon function return."
  msgstr ""
  
! #: common.opt:3581
  #, no-c-format
  msgid "-fzero-init-padding-bits=[standard|unions|all]\tZero padding bits in initializers."
  msgstr ""
  
! #: common.opt:3597
  #, no-c-format
  msgid "Generate debug information in default format."
  msgstr ""
  
! #: common.opt:3601
  #, no-c-format
  msgid "Assume assembler support for (DWARF2+) .loc directives."
  msgstr ""
  
! #: common.opt:3605
  #, no-c-format
  msgid "Assume assembler support for view in (DWARF2+) .loc directives."
  msgstr ""
  
! #: common.opt:3609
  #, no-c-format
  msgid "Generate debug information in CodeView format."
  msgstr ""
  
! #: common.opt:3629
  #, no-c-format
  msgid "Record DW_AT_decl_column and DW_AT_call_column in DWARF."
  msgstr ""
  
! #: common.opt:3635
  #, no-c-format
  msgid "Generate CTF debug information at default level."
  msgstr ""
  
! #: common.opt:3639
  #, no-c-format
  msgid "Generate BTF debug information at default level."
  msgstr ""
  
! #: common.opt:3643
  #, no-c-format
  msgid "Generate pruned BTF when emitting BTF info."
  msgstr ""
  
! #: common.opt:3647
  #, no-c-format
  msgid "Generate debug information in default version of DWARF format."
  msgstr ""
  
! #: common.opt:3651
  #, no-c-format
  msgid "Generate debug information in DWARF v2 (or later) format."
  msgstr ""
  
! #: common.opt:3655
  #, no-c-format
  msgid "Use 32-bit DWARF format when emitting DWARF debug information."
  msgstr ""
  
! #: common.opt:3659
  #, no-c-format
  msgid "Use 64-bit DWARF format when emitting DWARF debug information."
  msgstr ""
  
! #: common.opt:3663
  #, no-c-format
  msgid "Generate debug information in default extended format."
  msgstr ""
  
! #: common.opt:3667
  #, no-c-format
  msgid "Generate extended entry point information for inlined functions."
  msgstr ""
  
! #: common.opt:3671
  #, no-c-format
  msgid "Compute locview reset points based on insn length estimates."
  msgstr ""
  
! #: common.opt:3679
  #, no-c-format
  msgid "Don't generate DWARF pubnames and pubtypes sections."
  msgstr ""
  
! #: common.opt:3683
  #, no-c-format
  msgid "Generate DWARF pubnames and pubtypes sections."
  msgstr ""
  
! #: common.opt:3687
  #, no-c-format
  msgid "Generate DWARF pubnames and pubtypes sections with GNU extensions."
  msgstr ""
  
! #: common.opt:3691
  #, no-c-format
  msgid "Record gcc command line switches in DWARF DW_AT_producer."
  msgstr ""
  
! #: common.opt:3695
  #, no-c-format
  msgid "Generate debug information in separate .dwo files."
  msgstr ""
  
! #: common.opt:3707
  #, no-c-format
  msgid "Emit progressive recommended breakpoint locations."
  msgstr ""
  
! #: common.opt:3711
  #, no-c-format
  msgid "Don't emit DWARF additions beyond selected version."
  msgstr ""
  
! #: common.opt:3715
  #, no-c-format
  msgid "Add description attributes to some DWARF DIEs that have no name attribute."
  msgstr ""
  
! #: common.opt:3719
  #, no-c-format
  msgid "Toggle debug information generation."
  msgstr ""
  
! #: common.opt:3723
  #, no-c-format
  msgid "Augment variable location lists with progressive views."
  msgstr ""
  
! #: common.opt:3730
  #, fuzzy, no-c-format
  msgid "Generate debug information in VMS format."
  msgstr "Ð¡Ñ‚Ð²Ð°Ñ€Ñ‹Ñ†ÑŒ ÐºÐ¾Ð´ Ð´Ð»Ñ� DLL"
  
! #: common.opt:3759
  #, no-c-format
  msgid "Generate compressed debug sections."
  msgstr ""
  
! #: common.opt:3763
  #, no-c-format
  msgid "-gz=<format>\tGenerate compressed debug sections in format <format>."
  msgstr ""
  
! #: common.opt:3770
  #, no-c-format
  msgid "-iplugindir=<dir>\tSet <dir> to be the default plugin directory."
  msgstr ""
  
! #: common.opt:3774
  #, no-c-format
  msgid "-imultiarch <dir>\tSet <dir> to be the multiarch include subdirectory."
  msgstr ""
  
! #: common.opt:3802
  #, fuzzy, no-c-format
  #| msgid "  -o <file>                Place the output into <file>\n"
  msgid "-o <file>\tPlace output into <file>."
  msgstr "  -o <Ñ„Ð°Ð¹Ð»>                ÐŸÐ°Ð¼Ñ�Ñ�Ñ†Ñ–Ñ†ÑŒ Ð²Ñ‹Ð²Ð°Ð´ Ñƒ <Ñ„Ð°Ð¹Ð»>\n"
  
! #: common.opt:3806
  #, fuzzy, no-c-format
  #| msgid "Enable exception handling"
  msgid "Enable function profiling."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ñ‹Ñ†ÑŒ Ð°Ð¿Ñ€Ð°Ñ†Ð¾ÑžÐºÑƒ Ð²Ñ‹ÐºÐ»ÑŽÑ‡Ñ�Ð½ÑŒÐ½Ñ�Ñž"
  
! #: common.opt:3816
  #, no-c-format
  msgid "Like -pedantic but issue errors instead of warnings."
  msgstr ""
  
! #: common.opt:3856
  #, no-c-format
  msgid "Do not display functions compiled or elapsed time."
  msgstr ""
  
! #: common.opt:3888
  #, no-c-format
  msgid "Enable verbose output."
  msgstr ""
  
! #: common.opt:3892
  #, no-c-format
  msgid "Display the compiler's version."
  msgstr ""
  
! #: common.opt:3896
  #, no-c-format
  msgid "Suppress warnings."
  msgstr ""
  
! #: common.opt:3906
  #, no-c-format
  msgid "Create a shared library."
  msgstr ""
  
! #: common.opt:3970
  #, no-c-format
  msgid "Don't create a dynamically linked position independent executable."
  msgstr ""
  
! #: common.opt:3974
  #, no-c-format
  msgid "Create a dynamically linked position independent executable."
  msgstr ""
  
! #: common.opt:3978
  #, no-c-format
  msgid "Create a static position independent executable."
  msgstr ""
  
! #: common.opt:3985
  #, no-c-format
  msgid "Use caller save register across calls if possible."
  msgstr ""
  
! #: common.opt:3989
  #, no-c-format
  msgid "Perform dead code elimination on zero and sign extensions with special dataflow analysis."
  msgstr ""
--- 14919,16345 ----
  msgid "Number of cache entries in incremental LTO after which to prune old entries."
  msgstr ""
  
! #: common.opt:2301
  #, no-c-format
  msgid "Specify the algorithm to partition symbols and vars at linktime."
  msgstr ""
  
! #: common.opt:2306
  #, no-c-format
  msgid "Use zlib/zstd compression level <number> for IL."
  msgstr ""
  
! #: common.opt:2314
  #, no-c-format
  msgid "Report various link-time optimization statistics."
  msgstr ""
  
! #: common.opt:2318
  #, no-c-format
  msgid "Report various link-time optimization statistics for WPA only."
  msgstr ""
  
! #: common.opt:2322
  #, fuzzy, no-c-format
  msgid "Set errno after built-in math functions."
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: common.opt:2326
  #, no-c-format
  msgid "-fmax-errors=<number>\tMaximum number of errors to report."
  msgstr ""
  
! #: common.opt:2330
  #, no-c-format
  msgid "Allow removal of malloc and free pairs when allocated block is unused."
  msgstr ""
  
! #: common.opt:2337
  #, no-c-format
  msgid "Report on permanent memory allocation."
  msgstr ""
  
! #: common.opt:2341
  #, no-c-format
  msgid "Report on permanent memory allocation in WPA only."
  msgstr ""
  
! #: common.opt:2348
  #, no-c-format
  msgid "Attempt to merge identical constants and constant variables."
  msgstr ""
  
! #: common.opt:2352
  #, no-c-format
  msgid "Attempt to merge identical constants across compilation units."
  msgstr ""
  
! #: common.opt:2356
  #, no-c-format
  msgid "Attempt to merge identical debug strings across compilation units."
  msgstr ""
  
! #: common.opt:2360
  #, no-c-format
  msgid "-fmessage-length=<number>\tLimit diagnostics to <number> characters per line.  0 suppresses line-wrapping."
  msgstr ""
  
! #: common.opt:2364
  #, fuzzy, no-c-format
  msgid "Align the start of every function."
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: common.opt:2368
  #, no-c-format
  msgid "Perform SMS based modulo scheduling before the first scheduling pass."
  msgstr ""
  
! #: common.opt:2372
  #, no-c-format
  msgid "Perform SMS based modulo scheduling with register moves allowed."
  msgstr ""
  
! #: common.opt:2376
  #, no-c-format
  msgid "Move loop invariant computations out of loops."
  msgstr ""
  
! #: common.opt:2380
  #, no-c-format
  msgid "Move stores out of loops."
  msgstr ""
  
! #: common.opt:2384
  #, no-c-format
  msgid "Building block for specs-based multilib-aware TFLAGS."
  msgstr ""
  
! #: common.opt:2388
  #, no-c-format
  msgid "Use the RTL dead code elimination pass."
  msgstr ""
  
! #: common.opt:2392
  #, no-c-format
  msgid "Use the RTL dead store elimination pass."
  msgstr ""
  
! #: common.opt:2396
  #, no-c-format
  msgid "Enable/Disable the traditional scheduling in loops that already passed modulo scheduling."
  msgstr ""
  
! #: common.opt:2400
  #, no-c-format
  msgid "Support synchronous non-call exceptions."
  msgstr ""
  
! #: common.opt:2407
  #, no-c-format
  msgid "-foffload-options=<targets>=<options>\tSpecify options for the offloading targets."
  msgstr ""
  
! #: common.opt:2411
  #, no-c-format
  msgid "-foffload-abi=[lp64|ilp32]\tSet the ABI to use in an offload compiler."
  msgstr ""
  
! #: common.opt:2424
  #, no-c-format
  msgid "-foffload-abi-host-opts=<options>\tSpecify host ABI options."
  msgstr ""
  
! #: common.opt:2428
  #, no-c-format
  msgid "When possible do not generate stack frames."
  msgstr ""
  
! #: common.opt:2435
  #, no-c-format
  msgid "Generate SIMD clones for functions with the OpenMP declare target directive."
  msgstr ""
  
! #: common.opt:2454
  #, fuzzy, no-c-format
  #| msgid "Enable SSA optimizations"
  msgid "Enable all optimization info dumps on stderr."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ð°Ñ†ÑŒ SSA Ð°Ð¿Ñ‚Ñ‹Ð¼Ñ–Ð·Ð°Ñ†Ñ‹ÑŽ"
  
! #: common.opt:2458
  #, no-c-format
  msgid "-fopt-info[-<type>=filename]\tDump compiler optimization details."
  msgstr ""
  
! #: common.opt:2462
  #, no-c-format
  msgid "Write a SRCFILE.opt-record.json file detailing what optimizations were performed."
  msgstr ""
  
! #: common.opt:2466
  #, no-c-format
  msgid "Detect loops calculating CRC and replace with faster implementation. If the target supports CRC instruction and the CRC loop uses the same polynomial as the one used in the CRC instruction, directly replace with the corresponding CRC instruction. Otherwise, if the target supports carry-less-multiplication instruction, generate CRC using it. If neither case applies, generate table-based CRC."
  msgstr ""
  
! #: common.opt:2480
  #, no-c-format
  msgid "Optimize sibling and tail recursive calls."
  msgstr ""
  
! #: common.opt:2484
  #, no-c-format
  msgid "Insert path profiling code."
  msgstr ""
  
! #: common.opt:2488
  #, no-c-format
  msgid "Perform partial inlining."
  msgstr ""
  
! #: common.opt:2492 common.opt:2496
  #, no-c-format
  msgid "Report on memory allocation before interprocedural optimization."
  msgstr ""
  
! #: common.opt:2500
  #, no-c-format
  msgid "Pack structure members together without holes."
  msgstr ""
  
! #: common.opt:2504
  #, no-c-format
  msgid "-fpack-struct=<number>\tSet initial maximum structure member alignment."
  msgstr ""
  
! #: common.opt:2508
  #, no-c-format
  msgid "Return small aggregates in memory, not registers."
  msgstr ""
  
! #: common.opt:2512
  #, no-c-format
  msgid "Perform loop peeling."
  msgstr ""
  
! #: common.opt:2516
  #, no-c-format
  msgid "Enable machine specific peephole optimizations."
  msgstr ""
  
! #: common.opt:2520
  #, no-c-format
  msgid "Enable an RTL peephole pass before sched2."
  msgstr ""
  
! #: common.opt:2524
  #, no-c-format
  msgid "Generate position-independent code if possible (large mode)."
  msgstr ""
  
! #: common.opt:2528
  #, no-c-format
  msgid "Generate position-independent code for executables if possible (large mode)."
  msgstr ""
  
! #: common.opt:2532
  #, no-c-format
  msgid "Generate position-independent code if possible (small mode)."
  msgstr ""
  
! #: common.opt:2536
  #, no-c-format
  msgid "Generate position-independent code for executables if possible (small mode)."
  msgstr ""
  
! #: common.opt:2540
  #, no-c-format
  msgid "Use PLT for PIC calls (-fno-plt: load the address from GOT at call site)."
  msgstr ""
  
! #: common.opt:2544
  #, no-c-format
  msgid "Specify a plugin to load."
  msgstr ""
  
! #: common.opt:2548
  #, no-c-format
  msgid "-fplugin-arg-<name>-<key>[=<value>]\tSpecify argument <key>=<value> for plugin <name>."
  msgstr ""
  
! #: common.opt:2552
  #, no-c-format
  msgid "Run predictive commoning optimization."
  msgstr ""
  
! #: common.opt:2556
  #, no-c-format
  msgid "Generate prefetch instructions, if available, for arrays in loops."
  msgstr ""
  
! #: common.opt:2560
  #, no-c-format
  msgid "Enable basic program profiling code."
  msgstr ""
  
! #: common.opt:2564
  #, no-c-format
  msgid "Generate absolute source path names for gcov."
  msgstr ""
  
! #: common.opt:2568
  #, no-c-format
  msgid "Insert arc-based program profiling code."
  msgstr ""
  
! #: common.opt:2572
  #, no-c-format
  msgid "Insert condition coverage profiling code."
  msgstr ""
  
! #: common.opt:2576
  #, no-c-format
  msgid "Set the top-level directory for storing the profile data. The default is 'pwd'."
  msgstr ""
  
! #: common.opt:2581
  #, no-c-format
  msgid "Select the name for storing the profile note file."
  msgstr ""
  
! #: common.opt:2585
  #, no-c-format
  msgid "Enable correction of flow inconsistent profile data input."
  msgstr ""
  
! #: common.opt:2589
  #, no-c-format
  msgid "-fprofile-update=[single|atomic|prefer-atomic]\tSet the profile update method."
  msgstr ""
  
! #: common.opt:2593
  #, no-c-format
  msgid "Instrument only functions from files whose name matches any of the regular expressions (separated by semi-colons)."
  msgstr ""
  
! #: common.opt:2597
  #, no-c-format
  msgid "Instrument only functions from files whose name does not match any of the regular expressions (separated by semi-colons)."
  msgstr ""
  
! #: common.opt:2613
  #, no-c-format
  msgid "-fprofile-reproducible=[serial|parallel-runs|multithreaded]\tControl level of reproducibility of profile gathered by -fprofile-generate."
  msgstr ""
  
! #: common.opt:2629
  #, no-c-format
  msgid "Remove prefix from absolute path before mangling name for -fprofile-generate= and -fprofile-use=."
  msgstr ""
  
! #: common.opt:2633
  #, no-c-format
  msgid "-fprofile-prefix-map=<old>=<new>\tMap one directory name to another in GCOV coverage result."
  msgstr ""
  
! #: common.opt:2637
  #, no-c-format
  msgid "Enable common options for generating profile info for profile feedback directed optimizations."
  msgstr ""
  
! #: common.opt:2641
  #, no-c-format
  msgid "Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=."
  msgstr ""
  
! #: common.opt:2645
  #, no-c-format
  msgid "Register the profile information in the .gcov_info section instead of using a constructor/destructor."
  msgstr ""
  
! #: common.opt:2649
  #, no-c-format
  msgid "Register the profile information in the specified section instead of using a constructor/destructor."
  msgstr ""
  
! #: common.opt:2653
  #, no-c-format
  msgid "Do not assume that functions never executed during the train run are cold."
  msgstr ""
  
! #: common.opt:2657
  #, no-c-format
  msgid "Enable common options for performing profile feedback directed optimizations."
  msgstr ""
  
! #: common.opt:2661
  #, no-c-format
  msgid "Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=."
  msgstr ""
  
! #: common.opt:2665
  #, no-c-format
  msgid "Insert code to profile values of expressions."
  msgstr ""
  
! #: common.opt:2669
  #, no-c-format
  msgid "Report on consistency of profile."
  msgstr ""
  
! #: common.opt:2673
  #, no-c-format
  msgid "Enable function reordering that improves code placement."
  msgstr ""
  
! #: common.opt:2677
  #, no-c-format
  msgid "Insert NOP instructions at each function entry."
  msgstr ""
  
! #: common.opt:2684
  #, no-c-format
  msgid "-frandom-seed=<string>\tMake compile reproducible using <string>."
  msgstr ""
  
! #: common.opt:2694
  #, no-c-format
  msgid "Record gcc command line switches in the object file."
  msgstr ""
  
! #: common.opt:2698
  #, fuzzy, no-c-format
  msgid "Return small aggregates in registers."
  msgstr "Ð�Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ð°Ñ†ÑŒ Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð° sb"
  
! #: common.opt:2706
  #, no-c-format
  msgid "Tell DSE that the storage for a C++ object is dead when the constructor starts and when the destructor finishes."
  msgstr ""
  
! #: common.opt:2720
  #, no-c-format
  msgid "-flive-patching=[inline-only-static|inline-clone]\tControl IPA optimizations to provide a safe compilation for live-patching.  At the same time, provides multiple-level control on the enabled IPA optimizations."
  msgstr ""
  
! #: common.opt:2735
  #, no-c-format
  msgid "Tell DCE to remove unused C++ allocations."
  msgstr ""
  
! #: common.opt:2739
  #, no-c-format
  msgid "Relief of register pressure through live range shrinkage."
  msgstr ""
  
! #: common.opt:2743
  #, no-c-format
  msgid "Perform a register renaming optimization pass."
  msgstr ""
  
! #: common.opt:2747
  #, no-c-format
  msgid "Perform a target dependent instruction fusion optimization pass."
  msgstr ""
  
! #: common.opt:2751
  #, no-c-format
  msgid "Reorder basic blocks to improve code placement."
  msgstr ""
  
! #: common.opt:2755
  #, no-c-format
  msgid "-freorder-blocks-algorithm=[simple|stc]\tSet the used basic block reordering algorithm."
  msgstr ""
  
! #: common.opt:2768
  #, no-c-format
  msgid "Reorder basic blocks and partition into hot and cold sections."
  msgstr ""
  
! #: common.opt:2772
  #, no-c-format
  msgid "Reorder functions to improve code placement."
  msgstr ""
  
! #: common.opt:2776
  #, no-c-format
  msgid "Add a common subexpression elimination pass after loop optimizations."
  msgstr ""
  
! #: common.opt:2784
  #, no-c-format
  msgid "Disable optimizations that assume default FP rounding behavior."
  msgstr ""
  
! #: common.opt:2788
  #, no-c-format
  msgid "Enable scheduling across basic blocks."
  msgstr ""
  
! #: common.opt:2792
  #, no-c-format
  msgid "Enable register pressure sensitive insn scheduling."
  msgstr ""
  
! #: common.opt:2796
  #, no-c-format
  msgid "Allow speculative motion of non-loads."
  msgstr ""
  
! #: common.opt:2800
  #, no-c-format
  msgid "Allow speculative motion of some loads."
  msgstr ""
  
! #: common.opt:2804
  #, no-c-format
  msgid "Allow speculative motion of more loads."
  msgstr ""
  
! #: common.opt:2808
  #, no-c-format
  msgid "-fsched-verbose=<number>\tSet the verbosity level of the scheduler."
  msgstr ""
  
! #: common.opt:2812
  #, no-c-format
  msgid "If scheduling post reload, do superblock scheduling."
  msgstr ""
  
! #: common.opt:2820
  #, no-c-format
  msgid "Reschedule instructions before register allocation."
  msgstr ""
  
! #: common.opt:2824
  #, no-c-format
  msgid "Reschedule instructions after register allocation."
  msgstr ""
  
! #: common.opt:2831
  #, no-c-format
  msgid "Schedule instructions using selective scheduling algorithm."
  msgstr ""
  
! #: common.opt:2835
  #, no-c-format
  msgid "Run selective scheduling after reload."
  msgstr ""
  
! #: common.opt:2839
  #, no-c-format
  msgid "Run self-tests, using the given path to locate test files."
  msgstr ""
  
! #: common.opt:2843
  #, no-c-format
  msgid "Perform software pipelining of inner loops during selective scheduling."
  msgstr ""
  
! #: common.opt:2847
  #, no-c-format
  msgid "Perform software pipelining of outer loops during selective scheduling."
  msgstr ""
  
! #: common.opt:2851
  #, no-c-format
  msgid "Reschedule pipelined regions without pipelining."
  msgstr ""
  
! #: common.opt:2855
  #, no-c-format
  msgid "Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker."
  msgstr ""
  
! #: common.opt:2861
  #, no-c-format
  msgid "Allow premature scheduling of queued insns."
  msgstr ""
  
! #: common.opt:2865
  #, no-c-format
  msgid "-fsched-stalled-insns=<number>\tSet number of queued insns that can be prematurely scheduled."
  msgstr ""
  
! #: common.opt:2873
  #, no-c-format
  msgid "Set dependence distance checking in premature scheduling of queued insns."
  msgstr ""
  
! #: common.opt:2877
  #, no-c-format
  msgid "-fsched-stalled-insns-dep=<number>\tSet dependence distance checking in premature scheduling of queued insns."
  msgstr ""
  
! #: common.opt:2881
  #, no-c-format
  msgid "Enable the group heuristic in the scheduler."
  msgstr ""
  
! #: common.opt:2885
  #, no-c-format
  msgid "Enable the critical path heuristic in the scheduler."
  msgstr ""
  
! #: common.opt:2889
  #, no-c-format
  msgid "Enable the speculative instruction heuristic in the scheduler."
  msgstr ""
  
! #: common.opt:2893
  #, no-c-format
  msgid "Enable the rank heuristic in the scheduler."
  msgstr ""
  
! #: common.opt:2897
  #, no-c-format
  msgid "Enable the last instruction heuristic in the scheduler."
  msgstr ""
  
! #: common.opt:2901
  #, no-c-format
  msgid "Enable the dependent count heuristic in the scheduler."
  msgstr ""
  
! #: common.opt:2905
  #, no-c-format
  msgid "Access data in the same section from shared anchor points."
  msgstr ""
  
! #: common.opt:2917
  #, no-c-format
  msgid "Turn on Redundant Extensions Elimination pass."
  msgstr ""
  
! #: common.opt:2921
  #, no-c-format
  msgid "Show column numbers in diagnostics, when available.  Default on."
  msgstr ""
  
! #: common.opt:2925
  #, no-c-format
  msgid "Emit function prologues only before parts of the function that need it, rather than at the top of the function."
  msgstr ""
  
! #: common.opt:2930
  #, no-c-format
  msgid "Shrink-wrap parts of the prologue and epilogue separately."
  msgstr ""
  
! #: common.opt:2934
  #, no-c-format
  msgid "Disable optimizations observable by IEEE signaling NaNs."
  msgstr ""
  
! #: common.opt:2938
  #, no-c-format
  msgid "Disable floating point optimizations that ignore the IEEE signedness of zero."
  msgstr ""
  
! #: common.opt:2942
  #, no-c-format
  msgid "Convert floating point constants to single precision constants."
  msgstr ""
  
! #: common.opt:2946
  #, no-c-format
  msgid "Split lifetimes of induction variables when loops are unrolled."
  msgstr ""
  
! #: common.opt:2950
  #, no-c-format
  msgid "Generate discontiguous stack frames."
  msgstr ""
  
! #: common.opt:2954
  #, no-c-format
  msgid "Split wide types into independent registers."
  msgstr ""
  
! #: common.opt:2958
  #, no-c-format
  msgid "Split wide types into independent registers earlier."
  msgstr ""
  
! #: common.opt:2962
  #, no-c-format
  msgid "Enable backward propagation of use properties at the SSA level."
  msgstr ""
  
! #: common.opt:2966
  #, no-c-format
  msgid "Optimize conditional patterns using SSA PHI nodes."
  msgstr ""
  
! #: common.opt:2970
  #, no-c-format
  msgid "Optimize amount of stdarg registers saved to stack at start of function."
  msgstr ""
  
! #: common.opt:2974
  #, no-c-format
  msgid "Apply variable expansion when loops are unrolled."
  msgstr ""
  
! #: common.opt:2978
  #, fuzzy, no-c-format
  #| msgid "Insert stack checking code into the program"
  msgid "-fstack-check=[no|generic|specific]\tInsert stack checking code into the program."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ð°Ñ†ÑŒ ÐºÐ¾Ð´ Ð¿Ñ€Ð°Ð²Ñ�Ñ€ÐºÑ– Ñ�Ñ‚Ñ�ÐºÑƒ Ñž Ð¿Ñ€Ð°Ð³Ñ€Ð°Ð¼Ñƒ"
  
! #: common.opt:2982
  #, fuzzy, no-c-format
  #| msgid "Insert stack checking code into the program"
  msgid "Insert stack checking code into the program.  Same as -fstack-check=specific."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ð°Ñ†ÑŒ ÐºÐ¾Ð´ Ð¿Ñ€Ð°Ð²Ñ�Ñ€ÐºÑ– Ñ�Ñ‚Ñ�ÐºÑƒ Ñž Ð¿Ñ€Ð°Ð³Ñ€Ð°Ð¼Ñƒ"
  
! #: common.opt:2986
  #, no-c-format
  msgid "Insert code to probe each page of stack space as it is allocated to protect from stack-clash style attacks."
  msgstr ""
  
! #: common.opt:2994
  #, no-c-format
  msgid "-fstack-limit-register=<register>\tTrap if the stack goes past <register>."
  msgstr ""
  
! #: common.opt:2998
  #, no-c-format
  msgid "-fstack-limit-symbol=<name>\tTrap if the stack goes past symbol <name>."
  msgstr ""
  
! #: common.opt:3002
  #, no-c-format
  msgid "Use propolice as a stack protection method."
  msgstr ""
  
! #: common.opt:3006
  #, no-c-format
  msgid "Use a stack protection method for every function."
  msgstr ""
  
! #: common.opt:3010
  #, no-c-format
  msgid "Use a smart stack protection method for certain functions."
  msgstr ""
  
! #: common.opt:3014
  #, no-c-format
  msgid "Use stack protection method only for functions with the stack_protect attribute."
  msgstr ""
  
! #: common.opt:3018
  #, no-c-format
  msgid "Output stack usage information on a per-function basis."
  msgstr ""
  
! #: common.opt:3030
  #, no-c-format
  msgid "Assume strict aliasing rules apply."
  msgstr ""
  
! #: common.opt:3034
  #, no-c-format
  msgid "Treat signed overflow as undefined.  Negated as -fwrapv -fwrapv-pointer."
  msgstr ""
  
! #: common.opt:3038
  #, no-c-format
  msgid "Disable stack scrub entirely, disregarding strub attributes."
  msgstr ""
  
! #: common.opt:3042
  #, no-c-format
  msgid "Enable stack scrub as per attributes, with strict call checking."
  msgstr ""
  
! #: common.opt:3051
  #, no-c-format
  msgid "Restore default strub mode: as per attributes, with relaxed checking."
  msgstr ""
  
! #: common.opt:3055
  #, no-c-format
  msgid "Enable stack scrubbing for all viable functions."
  msgstr ""
  
! #: common.opt:3059
  #, no-c-format
  msgid "Enable at-calls stack scrubbing for all viable functions."
  msgstr ""
  
! #: common.opt:3063
  #, no-c-format
  msgid "Enable internal stack scrubbing for all viable functions."
  msgstr ""
  
! #: common.opt:3067
  #, no-c-format
  msgid "Implement __atomic operations via libcalls to legacy __sync functions."
  msgstr ""
  
! #: common.opt:3071
  #, no-c-format
  msgid "Check for syntax errors, then stop."
  msgstr ""
  
! #: common.opt:3075
  #, no-c-format
  msgid "Create data files needed by \"gcov\"."
  msgstr ""
  
! #: common.opt:3079
  #, no-c-format
  msgid "Perform jump threading optimizations."
  msgstr ""
  
! #: common.opt:3083
  #, no-c-format
  msgid "Report the time taken by each compiler pass."
  msgstr ""
  
! #: common.opt:3087
  #, no-c-format
  msgid "Record times taken by sub-phases separately."
  msgstr ""
  
! #: common.opt:3091
  #, no-c-format
  msgid "-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\tSet the default thread-local storage code generation model."
  msgstr ""
  
! #: common.opt:3110
  #, no-c-format
  msgid "Reorder top level functions, variables, and asms."
  msgstr ""
  
! #: common.opt:3114
  #, no-c-format
  msgid "Perform superblock formation via tail duplication."
  msgstr ""
  
! #: common.opt:3118
  #, no-c-format
  msgid "For targets that normally need trampolines for nested functions, always generate them instead of using descriptors."
  msgstr ""
  
! #: common.opt:3123
  #, no-c-format
  msgid "Whether trampolines are generated in executable memory rather than executable stack."
  msgstr ""
  
! #: common.opt:3141
  #, no-c-format
  msgid "Assume floating-point operations can trap."
  msgstr ""
  
! #: common.opt:3145
  #, no-c-format
  msgid "Trap for signed overflow in addition, subtraction and multiplication."
  msgstr ""
  
! #: common.opt:3149
  #, fuzzy, no-c-format
  #| msgid "Enable SSA optimizations"
  msgid "Enable SSA-CCP optimization on trees."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ð°Ñ†ÑŒ SSA Ð°Ð¿Ñ‚Ñ‹Ð¼Ñ–Ð·Ð°Ñ†Ñ‹ÑŽ"
  
! #: common.opt:3153
  #, fuzzy, no-c-format
  #| msgid "Enable SSA optimizations"
  msgid "Enable SSA-BIT-CCP optimization on trees."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ð°Ñ†ÑŒ SSA Ð°Ð¿Ñ‚Ñ‹Ð¼Ñ–Ð·Ð°Ñ†Ñ‹ÑŽ"
  
! #: common.opt:3161
  #, no-c-format
  msgid "Enable loop header copying on trees."
  msgstr ""
  
! #: common.opt:3169
  #, no-c-format
  msgid "Enable SSA coalescing of user variables."
  msgstr ""
  
! #: common.opt:3177
  #, no-c-format
  msgid "Enable copy propagation on trees."
  msgstr ""
  
! #: common.opt:3185
  #, no-c-format
  msgid "Transform condition stores into unconditional ones."
  msgstr ""
  
! #: common.opt:3189
  #, no-c-format
  msgid "Perform conversions of switch initializations."
  msgstr ""
  
! #: common.opt:3193
  #, fuzzy, no-c-format
  #| msgid "Enable SSA optimizations"
  msgid "Enable SSA dead code elimination optimization on trees."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ð°Ñ†ÑŒ SSA Ð°Ð¿Ñ‚Ñ‹Ð¼Ñ–Ð·Ð°Ñ†Ñ‹ÑŽ"
  
! #: common.opt:3197
  #, fuzzy, no-c-format
  #| msgid "Enable SSA optimizations"
  msgid "Enable dominator optimizations."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ð°Ñ†ÑŒ SSA Ð°Ð¿Ñ‚Ñ‹Ð¼Ñ–Ð·Ð°Ñ†Ñ‹ÑŽ"
  
! #: common.opt:3201
  #, no-c-format
  msgid "Enable tail merging on trees."
  msgstr ""
  
! #: common.opt:3205
  #, fuzzy, no-c-format
  #| msgid "Enable SSA optimizations"
  msgid "Enable dead store elimination."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ð°Ñ†ÑŒ SSA Ð°Ð¿Ñ‚Ñ‹Ð¼Ñ–Ð·Ð°Ñ†Ñ‹ÑŽ"
  
! #: common.opt:3209
  #, no-c-format
  msgid "Enable forward propagation on trees."
  msgstr ""
  
! #: common.opt:3213
  #, no-c-format
  msgid "Enable Full Redundancy Elimination (FRE) on trees."
  msgstr ""
  
! #: common.opt:3217
  #, fuzzy, no-c-format
  #| msgid "Enable SSA optimizations"
  msgid "Enable string length optimizations on trees."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ð°Ñ†ÑŒ SSA Ð°Ð¿Ñ‚Ñ‹Ð¼Ñ–Ð·Ð°Ñ†Ñ‹ÑŽ"
  
! #: common.opt:3221
  #, no-c-format
  msgid "Detect paths that trigger erroneous or undefined behavior due to dereferencing a null pointer.  Isolate those paths from the main control flow and turn the statement with erroneous or undefined behavior into a trap."
  msgstr ""
  
! #: common.opt:3227
  #, no-c-format
  msgid "Detect paths that trigger erroneous or undefined behavior due to a null value being used in a way forbidden by a returns_nonnull or nonnull attribute.  Isolate those paths from the main control flow and turn the statement with erroneous or undefined behavior into a trap."
  msgstr ""
  
! #: common.opt:3234
  #, no-c-format
  msgid "Enable loop distribution on trees."
  msgstr ""
  
! #: common.opt:3238
  #, no-c-format
  msgid "Enable loop distribution for patterns transformed into a library call."
  msgstr ""
  
! #: common.opt:3242
  #, no-c-format
  msgid "Enable loop invariant motion on trees."
  msgstr ""
  
! #: common.opt:3250
  #, no-c-format
  msgid "Create canonical induction variables in loops."
  msgstr ""
  
! #: common.opt:3254
  #, fuzzy, no-c-format
  #| msgid "Enable SSA optimizations"
  msgid "Enable loop optimizations on tree level."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ð°Ñ†ÑŒ SSA Ð°Ð¿Ñ‚Ñ‹Ð¼Ñ–Ð·Ð°Ñ†Ñ‹ÑŽ"
  
! #: common.opt:3258
  #, no-c-format
  msgid "-ftree-parallelize-loops=<number>\tEnable automatic parallelization of loops."
  msgstr ""
  
! #: common.opt:3262
  #, no-c-format
  msgid "Enable hoisting loads from conditional pointers."
  msgstr ""
  
! #: common.opt:3266
  #, fuzzy, no-c-format
  #| msgid "Enable SSA optimizations"
  msgid "Enable SSA-PRE optimization on trees."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ð°Ñ†ÑŒ SSA Ð°Ð¿Ñ‚Ñ‹Ð¼Ñ–Ð·Ð°Ñ†Ñ‹ÑŽ"
  
! #: common.opt:3270
  #, no-c-format
  msgid "In SSA-PRE optimization on trees, enable partial-partial redundancy elimination."
  msgstr ""
  
! #: common.opt:3274
  #, no-c-format
  msgid "Perform function-local points-to analysis on trees."
  msgstr ""
  
! #: common.opt:3278
  #, no-c-format
  msgid "Enable reassociation on tree level."
  msgstr ""
  
! #: common.opt:3286
  #, no-c-format
  msgid "Enable SSA code sinking on trees."
  msgstr ""
  
! #: common.opt:3290
  #, no-c-format
  msgid "Perform straight-line strength reduction."
  msgstr ""
  
! #: common.opt:3294
  #, no-c-format
  msgid "Perform scalar replacement of aggregates."
  msgstr ""
  
! #: common.opt:3298
  #, no-c-format
  msgid "Replace temporary expressions in the SSA->normal pass."
  msgstr ""
  
! #: common.opt:3302
  #, no-c-format
  msgid "Perform live range splitting during the SSA->normal pass."
  msgstr ""
  
! #: common.opt:3306
  #, no-c-format
  msgid "Perform Value Range Propagation on trees."
  msgstr ""
  
! #: common.opt:3310
  #, no-c-format
  msgid "Split paths leading to loop backedges."
  msgstr ""
  
! #: common.opt:3314
  #, no-c-format
  msgid "Assume common declarations may be overridden with ones with a larger trailing array."
  msgstr ""
  
! #: common.opt:3319
  #, no-c-format
  msgid "Compile whole compilation unit at a time."
  msgstr ""
  
! #: common.opt:3323
  #, no-c-format
  msgid "Trap on __builtin_unreachable instead of using it for optimization."
  msgstr ""
  
! #: common.opt:3327
  #, no-c-format
  msgid "Perform loop unrolling when iteration count is known."
  msgstr ""
  
! #: common.opt:3331
  #, no-c-format
  msgid "Perform loop unrolling for all loops."
  msgstr ""
  
! #: common.opt:3346
  #, no-c-format
  msgid "Allow optimization for floating-point arithmetic which may change the result of the operation due to rounding."
  msgstr ""
  
! #: common.opt:3351
  #, no-c-format
  msgid "Same as -fassociative-math for expressions which include division."
  msgstr ""
  
! #: common.opt:3359
  #, no-c-format
  msgid "Allow math optimizations that may violate IEEE or ISO standards."
  msgstr ""
  
! #: common.opt:3363
  #, no-c-format
  msgid "Perform loop unswitching."
  msgstr ""
  
! #: common.opt:3367
  #, no-c-format
  msgid "Perform loop splitting."
  msgstr ""
  
! #: common.opt:3371
  #, no-c-format
  msgid "Version loops based on whether indices have a stride of one."
  msgstr ""
  
! #: common.opt:3375
  #, fuzzy, no-c-format
  #| msgid "Enable exception handling"
  msgid "Just generate unwind tables for exception handling."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ñ‹Ñ†ÑŒ Ð°Ð¿Ñ€Ð°Ñ†Ð¾ÑžÐºÑƒ Ð²Ñ‹ÐºÐ»ÑŽÑ‡Ñ�Ð½ÑŒÐ½Ñ�Ñž"
  
! #: common.opt:3379
  #, no-c-format
  msgid "Use the bfd linker instead of the default linker."
  msgstr ""
  
! #: common.opt:3383
  #, no-c-format
  msgid "Use the gold linker instead of the default linker."
  msgstr ""
  
! #: common.opt:3387
  #, no-c-format
  msgid "Use the lld LLVM linker instead of the default linker."
  msgstr ""
  
! #: common.opt:3391
  #, no-c-format
  msgid "Use the Modern linker (MOLD) linker instead of the default linker."
  msgstr ""
  
! #: common.opt:3401
  #, no-c-format
  msgid "Perform variable tracking."
  msgstr ""
  
! #: common.opt:3408
  #, no-c-format
  msgid "Perform variable tracking by annotating assignments."
  msgstr ""
  
! #: common.opt:3414
  #, no-c-format
  msgid "Toggle -fvar-tracking-assignments."
  msgstr ""
  
! #: common.opt:3421
  #, no-c-format
  msgid "Perform variable tracking and also tag variables that are uninitialized."
  msgstr ""
  
! #: common.opt:3426
  #, no-c-format
  msgid "Enable vectorization on trees."
  msgstr ""
  
! #: common.opt:3434
  #, fuzzy, no-c-format
  #| msgid "Enable SSA optimizations"
  msgid "Enable loop vectorization on trees."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ð°Ñ†ÑŒ SSA Ð°Ð¿Ñ‚Ñ‹Ð¼Ñ–Ð·Ð°Ñ†Ñ‹ÑŽ"
  
! #: common.opt:3438
  #, no-c-format
  msgid "Enable basic block vectorization (SLP) on trees."
  msgstr ""
  
! #: common.opt:3442
  #, no-c-format
  msgid "-fvect-cost-model=[unlimited|dynamic|cheap|very-cheap]\tSpecifies the cost model for vectorization."
  msgstr ""
  
! #: common.opt:3446
  #, no-c-format
  msgid "-fsimd-cost-model=[unlimited|dynamic|cheap|very-cheap]\tSpecifies the vectorization cost model for code marked with a simd directive."
  msgstr ""
  
! #: common.opt:3465
  #, no-c-format
  msgid "Enables the dynamic vectorizer cost model.  Preserved for backward compatibility."
  msgstr ""
  
! #: common.opt:3473
  #, no-c-format
  msgid "Enable copy propagation of scalar-evolution information."
  msgstr ""
  
! #: common.opt:3477
  #, no-c-format
  msgid "-ftrivial-auto-var-init=[uninitialized|pattern|zero]\tAdd initializations to automatic variables."
  msgstr ""
  
! #: common.opt:3499
  #, no-c-format
  msgid "Add extra commentary to assembler output."
  msgstr ""
  
! #: common.opt:3503
  #, no-c-format
  msgid "-fvisibility=[default|internal|hidden|protected]\tSet the default symbol visibility."
  msgstr ""
  
! #: common.opt:3522
  #, no-c-format
  msgid "Validate vtable pointers before using them."
  msgstr ""
  
! #: common.opt:3538
  #, no-c-format
  msgid "Output vtable verification counters."
  msgstr ""
  
! #: common.opt:3542
  #, no-c-format
  msgid "Output vtable verification pointer sets information."
  msgstr ""
  
! #: common.opt:3546
  #, no-c-format
  msgid "Use expression value profiles in optimizations."
  msgstr ""
  
! #: common.opt:3550
  #, no-c-format
  msgid "Construct webs and split unrelated uses of single variable."
  msgstr ""
  
! #: common.opt:3554
  #, no-c-format
  msgid "Enable conditional dead code elimination for builtin calls."
  msgstr ""
  
! #: common.opt:3558
  #, no-c-format
  msgid "Perform whole program optimizations."
  msgstr ""
  
! #: common.opt:3562
  #, no-c-format
  msgid "Assume pointer overflow wraps around."
  msgstr ""
  
! #: common.opt:3566
  #, no-c-format
  msgid "Assume signed arithmetic overflow wraps around."
  msgstr ""
  
! #: common.opt:3570
  #, no-c-format
  msgid "Put zero initialized data in the bss section."
  msgstr ""
  
! #: common.opt:3574
  #, no-c-format
  msgid "Clear call-used registers upon function return."
  msgstr ""
  
! #: common.opt:3578
  #, no-c-format
  msgid "-fzero-init-padding-bits=[standard|unions|all]\tZero padding bits in initializers."
  msgstr ""
  
! #: common.opt:3594
  #, no-c-format
  msgid "Generate debug information in default format."
  msgstr ""
  
! #: common.opt:3598
  #, no-c-format
  msgid "Assume assembler support for (DWARF2+) .loc directives."
  msgstr ""
  
! #: common.opt:3602
  #, no-c-format
  msgid "Assume assembler support for view in (DWARF2+) .loc directives."
  msgstr ""
  
! #: common.opt:3606
  #, no-c-format
  msgid "Generate debug information in CodeView format."
  msgstr ""
  
! #: common.opt:3626
  #, no-c-format
  msgid "Record DW_AT_decl_column and DW_AT_call_column in DWARF."
  msgstr ""
  
! #: common.opt:3632
  #, no-c-format
  msgid "Generate CTF debug information at default level."
  msgstr ""
  
! #: common.opt:3636
  #, no-c-format
  msgid "Generate BTF debug information at default level."
  msgstr ""
  
! #: common.opt:3640
  #, no-c-format
  msgid "Generate pruned BTF when emitting BTF info."
  msgstr ""
  
! #: common.opt:3644
  #, no-c-format
  msgid "Generate debug information in default version of DWARF format."
  msgstr ""
  
! #: common.opt:3648
  #, no-c-format
  msgid "Generate debug information in DWARF v2 (or later) format."
  msgstr ""
  
! #: common.opt:3652
  #, no-c-format
  msgid "Use 32-bit DWARF format when emitting DWARF debug information."
  msgstr ""
  
! #: common.opt:3656
  #, no-c-format
  msgid "Use 64-bit DWARF format when emitting DWARF debug information."
  msgstr ""
  
! #: common.opt:3660
  #, no-c-format
  msgid "Generate debug information in default extended format."
  msgstr ""
  
! #: common.opt:3664
  #, no-c-format
  msgid "Generate extended entry point information for inlined functions."
  msgstr ""
  
! #: common.opt:3668
  #, no-c-format
  msgid "Compute locview reset points based on insn length estimates."
  msgstr ""
  
! #: common.opt:3676
  #, no-c-format
  msgid "Don't generate DWARF pubnames and pubtypes sections."
  msgstr ""
  
! #: common.opt:3680
  #, no-c-format
  msgid "Generate DWARF pubnames and pubtypes sections."
  msgstr ""
  
! #: common.opt:3684
  #, no-c-format
  msgid "Generate DWARF pubnames and pubtypes sections with GNU extensions."
  msgstr ""
  
! #: common.opt:3688
  #, no-c-format
  msgid "Record gcc command line switches in DWARF DW_AT_producer."
  msgstr ""
  
! #: common.opt:3692
  #, no-c-format
  msgid "Generate debug information in separate .dwo files."
  msgstr ""
  
! #: common.opt:3704
  #, no-c-format
  msgid "Emit progressive recommended breakpoint locations."
  msgstr ""
  
! #: common.opt:3708
  #, no-c-format
  msgid "Don't emit DWARF additions beyond selected version."
  msgstr ""
  
! #: common.opt:3712
  #, no-c-format
  msgid "Add description attributes to some DWARF DIEs that have no name attribute."
  msgstr ""
  
! #: common.opt:3716
  #, no-c-format
  msgid "Toggle debug information generation."
  msgstr ""
  
! #: common.opt:3720
  #, no-c-format
  msgid "Augment variable location lists with progressive views."
  msgstr ""
  
! #: common.opt:3727
  #, fuzzy, no-c-format
  msgid "Generate debug information in VMS format."
  msgstr "Ð¡Ñ‚Ð²Ð°Ñ€Ñ‹Ñ†ÑŒ ÐºÐ¾Ð´ Ð´Ð»Ñ� DLL"
  
! #: common.opt:3756
  #, no-c-format
  msgid "Generate compressed debug sections."
  msgstr ""
  
! #: common.opt:3760
  #, no-c-format
  msgid "-gz=<format>\tGenerate compressed debug sections in format <format>."
  msgstr ""
  
! #: common.opt:3767
  #, no-c-format
  msgid "-iplugindir=<dir>\tSet <dir> to be the default plugin directory."
  msgstr ""
  
! #: common.opt:3771
  #, no-c-format
  msgid "-imultiarch <dir>\tSet <dir> to be the multiarch include subdirectory."
  msgstr ""
  
! #: common.opt:3799
  #, fuzzy, no-c-format
  #| msgid "  -o <file>                Place the output into <file>\n"
  msgid "-o <file>\tPlace output into <file>."
  msgstr "  -o <Ñ„Ð°Ð¹Ð»>                ÐŸÐ°Ð¼Ñ�Ñ�Ñ†Ñ–Ñ†ÑŒ Ð²Ñ‹Ð²Ð°Ð´ Ñƒ <Ñ„Ð°Ð¹Ð»>\n"
  
! #: common.opt:3803
  #, fuzzy, no-c-format
  #| msgid "Enable exception handling"
  msgid "Enable function profiling."
  msgstr "Ð£ÐºÐ»ÑŽÑ‡Ñ‹Ñ†ÑŒ Ð°Ð¿Ñ€Ð°Ñ†Ð¾ÑžÐºÑƒ Ð²Ñ‹ÐºÐ»ÑŽÑ‡Ñ�Ð½ÑŒÐ½Ñ�Ñž"
  
! #: common.opt:3813
  #, no-c-format
  msgid "Like -pedantic but issue errors instead of warnings."
  msgstr ""
  
! #: common.opt:3853
  #, no-c-format
  msgid "Do not display functions compiled or elapsed time."
  msgstr ""
  
! #: common.opt:3885
  #, no-c-format
  msgid "Enable verbose output."
  msgstr ""
  
! #: common.opt:3889
  #, no-c-format
  msgid "Display the compiler's version."
  msgstr ""
  
! #: common.opt:3893
  #, no-c-format
  msgid "Suppress warnings."
  msgstr ""
  
! #: common.opt:3903
  #, no-c-format
  msgid "Create a shared library."
  msgstr ""
  
! #: common.opt:3967
  #, no-c-format
  msgid "Don't create a dynamically linked position independent executable."
  msgstr ""
  
! #: common.opt:3971
  #, no-c-format
  msgid "Create a dynamically linked position independent executable."
  msgstr ""
  
! #: common.opt:3975
  #, no-c-format
  msgid "Create a static position independent executable."
  msgstr ""
  
! #: common.opt:3982
  #, no-c-format
  msgid "Use caller save register across calls if possible."
  msgstr ""
  
! #: common.opt:3986
  #, no-c-format
  msgid "Perform dead code elimination on zero and sign extensions with special dataflow analysis."
  msgstr ""
*************** msgstr ""
*** 17666,17776 ****
  
  #: params.opt:1194
  #, no-c-format
! msgid "Instruction accounted for function prologue, epilogue and other overhead."
  msgstr ""
  
  #: params.opt:1198
  #, no-c-format
! msgid "Time accounted for function prologue, epilogue and other overhead."
  msgstr ""
  
  #: params.opt:1202
  #, no-c-format
! msgid "Instruction accounted for function thunk overhead."
  msgstr ""
  
  #: params.opt:1206
  #, no-c-format
! msgid "Time accounted for function thunk overhead."
  msgstr ""
  
  #: params.opt:1210
  #, no-c-format
! msgid "The denominator n of fraction 1/n of the number of profiled runs of the entire program below which the execution count of a basic block must be in order for the basic block to be considered unlikely."
  msgstr ""
  
  #: params.opt:1214
  #, no-c-format
! msgid "Maximum unroll factor for the unroll-and-jam transformation."
  msgstr ""
  
  #: params.opt:1218
  #, no-c-format
! msgid "Minimum percentage of memrefs that must go away for unroll-and-jam to be considered profitable."
  msgstr ""
  
  #: params.opt:1222
  #, no-c-format
! msgid "Use direct poisoning/unpoisoning instructions for variables smaller or equal to this number."
  msgstr ""
  
  #: params.opt:1226
  #, no-c-format
! msgid "Whether to use canonical types."
  msgstr ""
  
  #: params.opt:1230
  #, no-c-format
! msgid "Enable loop epilogue vectorization using smaller vector size."
  msgstr ""
  
  #: params.opt:1234
  #, no-c-format
! msgid "Maximum number of possible vector layouts (such as permutations) to consider when optimizing to-be-vectorized code."
  msgstr ""
  
  #: params.opt:1238
  #, no-c-format
! msgid "Maximum number of loop peels to enhance alignment of data references in a loop."
  msgstr ""
  
  #: params.opt:1242
  #, no-c-format
! msgid "Bound on number of runtime checks inserted by the vectorizer's loop versioning for alias check."
  msgstr ""
  
  #: params.opt:1246
  #, no-c-format
! msgid "Bound on number of runtime checks inserted by the vectorizer's loop versioning for alignment check."
  msgstr ""
  
  #: params.opt:1250
  #, no-c-format
! msgid "Controls how loop vectorizer uses partial vectors.  0 means never, 1 means only for loops whose need to iterate can be removed, 2 means for all loops.  The default value is 2."
  msgstr ""
  
  #: params.opt:1254
  #, no-c-format
! msgid "The maximum factor which the loop vectorizer applies to the cost of statements in an inner loop relative to the loop being vectorized."
  msgstr ""
  
  #: params.opt:1258
  #, no-c-format
! msgid "Enable loop vectorization of floating point inductions."
  msgstr ""
  
  #: params.opt:1262
  #, no-c-format
! msgid "Force the use of SLP when vectorizing, fail if not possible."
  msgstr ""
  
  #: params.opt:1266
  #, no-c-format
! msgid "Maximum number of basic blocks before VRP switches to a fast model with less memory requirements."
  msgstr ""
  
  #: params.opt:1270
  #, no-c-format
! msgid "Maximum number of basic blocks before VRP uses a sparse bitmap cache."
  msgstr ""
  
  #: params.opt:1274
  #, no-c-format
! msgid "Maximum number of outgoing edges in a switch before VRP will not process it."
  msgstr ""
  
  #: params.opt:1278
  #, no-c-format
  msgid "Maximum number of basic blocks for VRP to use a basic cache vector."
  msgstr ""
  
--- 17671,17786 ----
  
  #: params.opt:1194
  #, no-c-format
! msgid "Maximum amount of work done to prune paths where the variable is always initialized."
  msgstr ""
  
  #: params.opt:1198
  #, no-c-format
! msgid "Instruction accounted for function prologue, epilogue and other overhead."
  msgstr ""
  
  #: params.opt:1202
  #, no-c-format
! msgid "Time accounted for function prologue, epilogue and other overhead."
  msgstr ""
  
  #: params.opt:1206
  #, no-c-format
! msgid "Instruction accounted for function thunk overhead."
  msgstr ""
  
  #: params.opt:1210
  #, no-c-format
! msgid "Time accounted for function thunk overhead."
  msgstr ""
  
  #: params.opt:1214
  #, no-c-format
! msgid "The denominator n of fraction 1/n of the number of profiled runs of the entire program below which the execution count of a basic block must be in order for the basic block to be considered unlikely."
  msgstr ""
  
  #: params.opt:1218
  #, no-c-format
! msgid "Maximum unroll factor for the unroll-and-jam transformation."
  msgstr ""
  
  #: params.opt:1222
  #, no-c-format
! msgid "Minimum percentage of memrefs that must go away for unroll-and-jam to be considered profitable."
  msgstr ""
  
  #: params.opt:1226
  #, no-c-format
! msgid "Use direct poisoning/unpoisoning instructions for variables smaller or equal to this number."
  msgstr ""
  
  #: params.opt:1230
  #, no-c-format
! msgid "Whether to use canonical types."
  msgstr ""
  
  #: params.opt:1234
  #, no-c-format
! msgid "Enable loop epilogue vectorization using smaller vector size."
  msgstr ""
  
  #: params.opt:1238
  #, no-c-format
! msgid "Maximum number of possible vector layouts (such as permutations) to consider when optimizing to-be-vectorized code."
  msgstr ""
  
  #: params.opt:1242
  #, no-c-format
! msgid "Maximum number of loop peels to enhance alignment of data references in a loop."
  msgstr ""
  
  #: params.opt:1246
  #, no-c-format
! msgid "Bound on number of runtime checks inserted by the vectorizer's loop versioning for alias check."
  msgstr ""
  
  #: params.opt:1250
  #, no-c-format
! msgid "Bound on number of runtime checks inserted by the vectorizer's loop versioning for alignment check."
  msgstr ""
  
  #: params.opt:1254
  #, no-c-format
! msgid "Controls how loop vectorizer uses partial vectors.  0 means never, 1 means only for loops whose need to iterate can be removed, 2 means for all loops.  The default value is 2."
  msgstr ""
  
  #: params.opt:1258
  #, no-c-format
! msgid "The maximum factor which the loop vectorizer applies to the cost of statements in an inner loop relative to the loop being vectorized."
  msgstr ""
  
  #: params.opt:1262
  #, no-c-format
! msgid "Enable loop vectorization of floating point inductions."
  msgstr ""
  
  #: params.opt:1266
  #, no-c-format
! msgid "Force the use of SLP when vectorizing, fail if not possible."
  msgstr ""
  
  #: params.opt:1270
  #, no-c-format
! msgid "Maximum number of basic blocks before VRP switches to a fast model with less memory requirements."
  msgstr ""
  
  #: params.opt:1274
  #, no-c-format
! msgid "Maximum number of basic blocks before VRP uses a sparse bitmap cache."
  msgstr ""
  
  #: params.opt:1278
  #, no-c-format
+ msgid "Maximum number of outgoing edges in a switch before VRP will not process it."
+ msgstr ""
+ 
+ #: params.opt:1282
+ #, no-c-format
  msgid "Maximum number of basic blocks for VRP to use a basic cache vector."
  msgstr ""
  
*************** msgstr ""
*** 17802,17855 ****
  msgid "callee does not return"
  msgstr ""
  
! #: calls.cc:2585
  #, fuzzy
  msgid "volatile function type"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: calls.cc:2604
  #, fuzzy
  #| msgid "In function"
  msgid "nested function"
  msgstr "Ð£ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: calls.cc:2615
  msgid "callee required more stack slots than the caller"
  msgstr ""
  
! #: calls.cc:2629
  msgid "inconsistent number of popped arguments"
  msgstr ""
  
! #: calls.cc:2636
  #, fuzzy
  #| msgid "%s does not support %s"
  msgid "frontend does not support sibling call"
  msgstr "%s Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ %s"
  
! #: calls.cc:2692
  msgid "other reasons"
  msgstr ""
  
! #: calls.cc:3066
  msgid "inside another call"
  msgstr ""
  
! #: calls.cc:3075
  msgid "variable size arguments"
  msgstr ""
  
! #: calls.cc:3099
  msgid "hidden string length argument passed on stack"
  msgstr ""
  
! #: calls.cc:3148
  msgid "caller and callee disagree in promotion of function return value"
  msgstr ""
  
  #. Ideally we'd emit a message for all of the ways that it could
  #. have failed.
! #: calls.cc:4060
  msgid "tail call production failed"
  msgstr ""
  
--- 17812,17865 ----
  msgid "callee does not return"
  msgstr ""
  
! #: calls.cc:2586
  #, fuzzy
  msgid "volatile function type"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: calls.cc:2605
  #, fuzzy
  #| msgid "In function"
  msgid "nested function"
  msgstr "Ð£ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: calls.cc:2616
  msgid "callee required more stack slots than the caller"
  msgstr ""
  
! #: calls.cc:2630
  msgid "inconsistent number of popped arguments"
  msgstr ""
  
! #: calls.cc:2637
  #, fuzzy
  #| msgid "%s does not support %s"
  msgid "frontend does not support sibling call"
  msgstr "%s Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ %s"
  
! #: calls.cc:2693
  msgid "other reasons"
  msgstr ""
  
! #: calls.cc:3067
  msgid "inside another call"
  msgstr ""
  
! #: calls.cc:3076
  msgid "variable size arguments"
  msgstr ""
  
! #: calls.cc:3100
  msgid "hidden string length argument passed on stack"
  msgstr ""
  
! #: calls.cc:3149
  msgid "caller and callee disagree in promotion of function return value"
  msgstr ""
  
  #. Ideally we'd emit a message for all of the ways that it could
  #. have failed.
! #: calls.cc:4061
  msgid "tail call production failed"
  msgstr ""
  
*************** msgstr ""
*** 18085,18096 ****
  #. PRINT_OPERAND must handle them.
  #. We can't handle floating point constants;
  #. TARGET_PRINT_OPERAND must handle them.
! #: final.cc:3738 config/arc/arc.cc:6311 config/i386/i386.cc:12799
  #, c-format
  msgid "floating constant misused"
  msgstr ""
  
! #: final.cc:3796 config/arc/arc.cc:6408 config/i386/i386.cc:12890
  #: config/pdp11/pdp11.cc:1872
  #, c-format
  msgid "invalid expression as operand"
--- 18095,18106 ----
  #. PRINT_OPERAND must handle them.
  #. We can't handle floating point constants;
  #. TARGET_PRINT_OPERAND must handle them.
! #: final.cc:3738 config/arc/arc.cc:6311 config/i386/i386.cc:12801
  #, c-format
  msgid "floating constant misused"
  msgstr ""
  
! #: final.cc:3796 config/arc/arc.cc:6408 config/i386/i386.cc:12892
  #: config/pdp11/pdp11.cc:1872
  #, c-format
  msgid "invalid expression as operand"
*************** msgstr ""
*** 19295,19404 ****
  msgid "Uses of this option are diagnosed."
  msgstr ""
  
! #: opts.cc:1723
  #, c-format
  msgid "Same as %s%s (or, in negated form, %s%s)."
  msgstr ""
  
! #: opts.cc:1728
  #, c-format
  msgid "Same as %s%s."
  msgstr ""
  
! #: opts.cc:1733
  #, c-format
  msgid "Same as %s."
  msgstr ""
  
! #: opts.cc:1741
  #, c-format
  msgid "%s  Same as %s."
  msgstr ""
  
! #: opts.cc:1804
  msgid "[available in "
  msgstr ""
  
! #: opts.cc:1836
  msgid "[default]"
  msgstr ""
  
! #: opts.cc:1845
  #, c-format
  msgid "%llu bytes"
  msgstr ""
  
! #: opts.cc:1882
  msgid "[enabled]"
  msgstr ""
  
! #: opts.cc:1884
  msgid "[disabled]"
  msgstr ""
  
! #: opts.cc:1920
  #, c-format
  msgid " No options with the desired characteristics were found\n"
  msgstr ""
  
! #: opts.cc:1929
  #, c-format
  msgid " None found.  Use --help=%s to show *all* the options supported by the %s front-end.\n"
  msgstr ""
  
! #: opts.cc:1935
  #, c-format
  msgid " All options with the desired characteristics have already been displayed\n"
  msgstr ""
  
! #: opts.cc:1980
  #, fuzzy, c-format
  msgid ""
  "  Known valid arguments for %s option:\n"
  "   "
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: opts.cc:2030
  msgid "The following options are target specific"
  msgstr ""
  
! #: opts.cc:2033
  msgid "The following options control compiler warning messages"
  msgstr ""
  
! #: opts.cc:2036
  msgid "The following options control optimizations"
  msgstr ""
  
! #: opts.cc:2039 opts.cc:2079
  msgid "The following options are language-independent"
  msgstr ""
  
! #: opts.cc:2042
  msgid "The following options control parameters"
  msgstr ""
  
! #: opts.cc:2048
  msgid "The following options are specific to just the language "
  msgstr ""
  
! #: opts.cc:2050
  msgid "The following options are supported by the language "
  msgstr ""
  
! #: opts.cc:2061
  msgid "The following options are not documented"
  msgstr ""
  
! #: opts.cc:2063
  msgid "The following options take separate arguments"
  msgstr ""
  
! #: opts.cc:2065
  msgid "The following options take joined arguments"
  msgstr ""
  
! #: opts.cc:2077
  msgid "The following options are language-related"
  msgstr ""
  
--- 19305,19414 ----
  msgid "Uses of this option are diagnosed."
  msgstr ""
  
! #: opts.cc:1721
  #, c-format
  msgid "Same as %s%s (or, in negated form, %s%s)."
  msgstr ""
  
! #: opts.cc:1726
  #, c-format
  msgid "Same as %s%s."
  msgstr ""
  
! #: opts.cc:1731
  #, c-format
  msgid "Same as %s."
  msgstr ""
  
! #: opts.cc:1739
  #, c-format
  msgid "%s  Same as %s."
  msgstr ""
  
! #: opts.cc:1802
  msgid "[available in "
  msgstr ""
  
! #: opts.cc:1834
  msgid "[default]"
  msgstr ""
  
! #: opts.cc:1843
  #, c-format
  msgid "%llu bytes"
  msgstr ""
  
! #: opts.cc:1880
  msgid "[enabled]"
  msgstr ""
  
! #: opts.cc:1882
  msgid "[disabled]"
  msgstr ""
  
! #: opts.cc:1918
  #, c-format
  msgid " No options with the desired characteristics were found\n"
  msgstr ""
  
! #: opts.cc:1927
  #, c-format
  msgid " None found.  Use --help=%s to show *all* the options supported by the %s front-end.\n"
  msgstr ""
  
! #: opts.cc:1933
  #, c-format
  msgid " All options with the desired characteristics have already been displayed\n"
  msgstr ""
  
! #: opts.cc:1978
  #, fuzzy, c-format
  msgid ""
  "  Known valid arguments for %s option:\n"
  "   "
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: opts.cc:2028
  msgid "The following options are target specific"
  msgstr ""
  
! #: opts.cc:2031
  msgid "The following options control compiler warning messages"
  msgstr ""
  
! #: opts.cc:2034
  msgid "The following options control optimizations"
  msgstr ""
  
! #: opts.cc:2037 opts.cc:2077
  msgid "The following options are language-independent"
  msgstr ""
  
! #: opts.cc:2040
  msgid "The following options control parameters"
  msgstr ""
  
! #: opts.cc:2046
  msgid "The following options are specific to just the language "
  msgstr ""
  
! #: opts.cc:2048
  msgid "The following options are supported by the language "
  msgstr ""
  
! #: opts.cc:2059
  msgid "The following options are not documented"
  msgstr ""
  
! #: opts.cc:2061
  msgid "The following options take separate arguments"
  msgstr ""
  
! #: opts.cc:2063
  msgid "The following options take joined arguments"
  msgstr ""
  
! #: opts.cc:2075
  msgid "The following options are language-related"
  msgstr ""
  
*************** msgid "%s%sGGC heuristics: --param ggc-m
*** 19508,19514 ****
  msgstr ""
  
  #: tree-diagnostic.cc:100 tree-logical-location.cc:92 c/c-decl.cc:6607
! #: c/c-typeck.cc:9013 cp/error.cc:1301 c-family/c-pretty-print.cc:447
  #, gcc-internal-format
  msgid "<anonymous>"
  msgstr ""
--- 19518,19524 ----
  msgstr ""
  
  #: tree-diagnostic.cc:100 tree-logical-location.cc:92 c/c-decl.cc:6607
! #: c/c-typeck.cc:9014 cp/error.cc:1301 c-family/c-pretty-print.cc:447
  #, gcc-internal-format
  msgid "<anonymous>"
  msgstr ""
*************** msgstr ""
*** 19525,19531 ****
  msgid "caller uses sjlj exceptions"
  msgstr ""
  
! #: tree-tailcall.cc:197 tree-tailcall.cc:723
  msgid "caller uses setjmp"
  msgstr ""
  
--- 19535,19541 ----
  msgid "caller uses sjlj exceptions"
  msgstr ""
  
! #: tree-tailcall.cc:197 tree-tailcall.cc:853
  msgid "caller uses setjmp"
  msgstr ""
  
*************** msgstr ""
*** 19533,19601 ****
  msgid "caller uses __builtin_eh_return"
  msgstr ""
  
! #: tree-tailcall.cc:633
  msgid "memory reference or volatile after call"
  msgstr ""
  
! #: tree-tailcall.cc:690
  msgid "address of caller arguments taken"
  msgstr ""
  
! #: tree-tailcall.cc:717
  msgid "return value in memory"
  msgstr ""
  
! #: tree-tailcall.cc:734
  msgid "code between call and return"
  msgstr ""
  
! #: tree-tailcall.cc:747
  msgid "call may throw exception that does not propagate"
  msgstr ""
  
! #: tree-tailcall.cc:760 tree-tailcall.cc:1166
  msgid "call may throw exception caught locally or perform cleanups"
  msgstr ""
  
! #: tree-tailcall.cc:795
  msgid "return value used after call"
  msgstr ""
  
! #: tree-tailcall.cc:893 tree-tailcall.cc:921
  msgid "call invocation refers to locals"
  msgstr ""
  
! #: tree-tailcall.cc:1001
  #, fuzzy
  msgid "unhandled code after call"
  msgstr "Ð“ÐµÐ½ÐµÑ€Ñ‹Ñ€Ð°Ð²Ð°Ñ†ÑŒ ÐºÐ¾Ð´ Ð´Ð»Ñ� Intel as"
  
! #: tree-tailcall.cc:1011
  msgid "return value changed after call"
  msgstr ""
  
! #: tree-tailcall.cc:1060
  #, fuzzy
  msgid "internal call"
  msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°Ð½Ð°Ñ� Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ°"
  
! #: tree-tailcall.cc:1068 tree-tailcall.cc:1139
  msgid "call and return value are different"
  msgstr ""
  
! #: tree-tailcall.cc:1149
  msgid "operations after non tail recursive call"
  msgstr ""
  
! #: tree-tailcall.cc:1157
  msgid "tail recursion with pointers can only use additions"
  msgstr ""
  
! #: tree-tailcall.cc:1170
  msgid "exception cleanups omit __tsan_func_exit call"
  msgstr ""
  
! #: tree-tailcall.cc:1672
  msgid "tail recursion with accumulation mixed with musttail non-recursive call"
  msgstr ""
  
--- 19543,19611 ----
  msgid "caller uses __builtin_eh_return"
  msgstr ""
  
! #: tree-tailcall.cc:746
  msgid "memory reference or volatile after call"
  msgstr ""
  
! #: tree-tailcall.cc:820
  msgid "address of caller arguments taken"
  msgstr ""
  
! #: tree-tailcall.cc:847
  msgid "return value in memory"
  msgstr ""
  
! #: tree-tailcall.cc:864
  msgid "code between call and return"
  msgstr ""
  
! #: tree-tailcall.cc:877
  msgid "call may throw exception that does not propagate"
  msgstr ""
  
! #: tree-tailcall.cc:890 tree-tailcall.cc:1385
  msgid "call may throw exception caught locally or perform cleanups"
  msgstr ""
  
! #: tree-tailcall.cc:925
  msgid "return value used after call"
  msgstr ""
  
! #: tree-tailcall.cc:1023 tree-tailcall.cc:1051
  msgid "call invocation refers to locals"
  msgstr ""
  
! #: tree-tailcall.cc:1220
  #, fuzzy
  msgid "unhandled code after call"
  msgstr "Ð“ÐµÐ½ÐµÑ€Ñ‹Ñ€Ð°Ð²Ð°Ñ†ÑŒ ÐºÐ¾Ð´ Ð´Ð»Ñ� Intel as"
  
! #: tree-tailcall.cc:1230
  msgid "return value changed after call"
  msgstr ""
  
! #: tree-tailcall.cc:1279
  #, fuzzy
  msgid "internal call"
  msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°Ð½Ð°Ñ� Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ°"
  
! #: tree-tailcall.cc:1287 tree-tailcall.cc:1358
  msgid "call and return value are different"
  msgstr ""
  
! #: tree-tailcall.cc:1368
  msgid "operations after non tail recursive call"
  msgstr ""
  
! #: tree-tailcall.cc:1376
  msgid "tail recursion with pointers can only use additions"
  msgstr ""
  
! #: tree-tailcall.cc:1389
  msgid "exception cleanups omit __tsan_func_exit call"
  msgstr ""
  
! #: tree-tailcall.cc:1892
  msgid "tail recursion with accumulation mixed with musttail non-recursive call"
  msgstr ""
  
*************** msgid "length modifier in strfmon format
*** 19906,19927 ****
  msgstr ""
  
  #. Handle deferred options from command-line.
! #: c-family/c-opts.cc:1656 fortran/cpp.cc:630
  msgid "<command-line>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12298 config/loongarch/loongarch.cc:6280
  #, fuzzy, c-format
  msgid "unsupported operand for code '%c'"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: config/aarch64/aarch64.cc:12307 config/aarch64/aarch64.cc:12320
! #: config/aarch64/aarch64.cc:12332 config/aarch64/aarch64.cc:12343
! #: config/aarch64/aarch64.cc:12359 config/aarch64/aarch64.cc:12373
! #: config/aarch64/aarch64.cc:12393 config/aarch64/aarch64.cc:12475
! #: config/aarch64/aarch64.cc:12486 config/aarch64/aarch64.cc:12500
! #: config/aarch64/aarch64.cc:12726 config/aarch64/aarch64.cc:12739
! #: config/aarch64/aarch64.cc:12756 config/pru/pru.cc:1824
  #: config/pru/pru.cc:1835 config/pru/pru.cc:1917 config/riscv/riscv.cc:7037
  #: config/riscv/riscv.cc:7053 config/riscv/riscv.cc:7069
  #: config/riscv/riscv.cc:7085 config/riscv/riscv.cc:7118
--- 19916,19937 ----
  msgstr ""
  
  #. Handle deferred options from command-line.
! #: c-family/c-opts.cc:1658 fortran/cpp.cc:630
  msgid "<command-line>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12313 config/loongarch/loongarch.cc:6280
  #, fuzzy, c-format
  msgid "unsupported operand for code '%c'"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: config/aarch64/aarch64.cc:12322 config/aarch64/aarch64.cc:12335
! #: config/aarch64/aarch64.cc:12347 config/aarch64/aarch64.cc:12358
! #: config/aarch64/aarch64.cc:12374 config/aarch64/aarch64.cc:12388
! #: config/aarch64/aarch64.cc:12408 config/aarch64/aarch64.cc:12490
! #: config/aarch64/aarch64.cc:12501 config/aarch64/aarch64.cc:12515
! #: config/aarch64/aarch64.cc:12741 config/aarch64/aarch64.cc:12754
! #: config/aarch64/aarch64.cc:12771 config/pru/pru.cc:1824
  #: config/pru/pru.cc:1835 config/pru/pru.cc:1917 config/riscv/riscv.cc:7037
  #: config/riscv/riscv.cc:7053 config/riscv/riscv.cc:7069
  #: config/riscv/riscv.cc:7085 config/riscv/riscv.cc:7118
*************** msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€
*** 19931,19938 ****
  msgid "invalid operand for '%%%c'"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: config/aarch64/aarch64.cc:12411 config/aarch64/aarch64.cc:12422
! #: config/aarch64/aarch64.cc:12586 config/aarch64/aarch64.cc:12597
  #: config/riscv/riscv.cc:6933 config/riscv/riscv.cc:6941
  #: config/riscv/riscv.cc:6948 config/riscv/riscv.cc:6952
  #: config/riscv/riscv.cc:6994 config/riscv/riscv.cc:7012
--- 19941,19948 ----
  msgid "invalid operand for '%%%c'"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: config/aarch64/aarch64.cc:12426 config/aarch64/aarch64.cc:12437
! #: config/aarch64/aarch64.cc:12601 config/aarch64/aarch64.cc:12612
  #: config/riscv/riscv.cc:6933 config/riscv/riscv.cc:6941
  #: config/riscv/riscv.cc:6948 config/riscv/riscv.cc:6952
  #: config/riscv/riscv.cc:6994 config/riscv/riscv.cc:7012
*************** msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€
*** 19941,20085 ****
  msgid "invalid vector constant"
  msgstr "`%E' - Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ñ� Ð½Ñ�Ð·ÑŒÐ¼ÐµÐ½Ð½Ð°Ñ� Ñ‚Ñ‹Ð¿Ñƒ string"
  
! #: config/aarch64/aarch64.cc:12436
  #, c-format
  msgid "incompatible floating point / vector register operand for '%%%c'"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12448
  #, fuzzy, c-format
  #| msgid "impossible operator '%s'"
  msgid "incompatible operand for '%%%c'"
  msgstr "Ð½ÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ñ‹ Ð°Ð¿Ñ�Ñ€Ð°Ñ‚Ð°Ñ€ '%s'"
  
! #: config/aarch64/aarch64.cc:12468
  #, fuzzy, c-format
  #| msgid "invalid register name for `%s'"
  msgid "incompatible register operand for '%%%c'"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð° `%s'"
  
! #: config/aarch64/aarch64.cc:12533 config/arm/arm.cc:24916
  #, fuzzy, c-format
  msgid "missing operand"
  msgstr "Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: config/aarch64/aarch64.cc:12623
  #, fuzzy, c-format
  msgid "invalid constant"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ %s"
  
! #: config/aarch64/aarch64.cc:12626
  #, fuzzy, c-format
  #| msgid "invalid %%d operand"
  msgid "invalid operand"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ %%d Ð°Ð¿ÐµÑ€Ð°Ð½Ð´"
  
! #: config/aarch64/aarch64.cc:12764 config/aarch64/aarch64.cc:12769
  #, fuzzy, c-format
  msgid "invalid operand prefix '%%%c'"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: config/aarch64/aarch64.cc:12789
  #, fuzzy, c-format
  #| msgid "invalid address"
  msgid "invalid address mode"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð°Ð´Ñ€Ð°Ñ�"
  
! #: config/aarch64/aarch64.cc:22760
  msgid "invalid conversion from type %<mfloat8_t%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:22762
  msgid "invalid conversion to type %<mfloat8_t%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29725 config/aarch64/aarch64.cc:29748
  msgid "operation not permitted on type %<mfloat8_t%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29743
  msgid "cannot combine GNU and SVE vectors in a binary operation"
  msgstr ""
  
! #: config/alpha/alpha.cc:5783 config/i386/i386.cc:14075
  #: config/rs6000/rs6000.cc:14674 config/sparc/sparc.cc:9400
  #, c-format
  msgid "'%%&' used without any local dynamic TLS references"
  msgstr ""
  
! #: config/alpha/alpha.cc:5841 config/bfin/bfin.cc:1428
  #, fuzzy, c-format
  msgid "invalid %%J value"
  msgstr "Ð´Ñ€Ñ�Ð½Ð½Ð°Ðµ %%Q Ð·Ð½Ð°Ñ‡Ñ�Ð½Ð½Ðµ"
  
! #: config/alpha/alpha.cc:5871 config/ia64/ia64.cc:5592 config/or1k/or1k.cc:1252
  #, c-format
  msgid "invalid %%r value"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%r"
  
! #: config/alpha/alpha.cc:5881 config/ia64/ia64.cc:5546
  #: config/rs6000/rs6000.cc:14369 config/xtensa/xtensa.cc:3144
  #, c-format
  msgid "invalid %%R value"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%R"
  
! #: config/alpha/alpha.cc:5887 config/rs6000/rs6000.cc:14289
  #: config/xtensa/xtensa.cc:3117
  #, c-format
  msgid "invalid %%N value"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%N"
  
! #: config/alpha/alpha.cc:5895 config/rs6000/rs6000.cc:14317
  #, c-format
  msgid "invalid %%P value"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%P"
  
! #: config/alpha/alpha.cc:5903
  #, c-format
  msgid "invalid %%h value"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%h"
  
! #: config/alpha/alpha.cc:5911 config/xtensa/xtensa.cc:3137
  #, c-format
  msgid "invalid %%L value"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%L"
  
! #: config/alpha/alpha.cc:5930
  #, c-format
  msgid "invalid %%m value"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%m"
  
! #: config/alpha/alpha.cc:5936
  #, c-format
  msgid "invalid %%M value"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%M"
  
! #: config/alpha/alpha.cc:5973
  #, c-format
  msgid "invalid %%U value"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%U"
  
! #: config/alpha/alpha.cc:5981 config/rs6000/rs6000.cc:14377
  #, c-format
  msgid "invalid %%s value"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%v"
  
! #: config/alpha/alpha.cc:5992
  #, c-format
  msgid "invalid %%C value"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%C"
  
! #: config/alpha/alpha.cc:6029 config/rs6000/rs6000.cc:14153
  #, c-format
  msgid "invalid %%E value"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%E"
  
! #: config/alpha/alpha.cc:6054 config/alpha/alpha.cc:6104
  #, c-format
  msgid "unknown relocation unspec"
  msgstr ""
  
! #: config/alpha/alpha.cc:6063 config/gcn/gcn.cc:7341 config/gcn/gcn.cc:7350
  #: config/gcn/gcn.cc:7408 config/gcn/gcn.cc:7416 config/gcn/gcn.cc:7432
  #: config/gcn/gcn.cc:7450 config/gcn/gcn.cc:7501 config/gcn/gcn.cc:7620
  #: config/gcn/gcn.cc:7733 config/rs6000/rs6000.cc:14679
--- 19951,20095 ----
  msgid "invalid vector constant"
  msgstr "`%E' - Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ñ� Ð½Ñ�Ð·ÑŒÐ¼ÐµÐ½Ð½Ð°Ñ� Ñ‚Ñ‹Ð¿Ñƒ string"
  
! #: config/aarch64/aarch64.cc:12451
  #, c-format
  msgid "incompatible floating point / vector register operand for '%%%c'"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12463
  #, fuzzy, c-format
  #| msgid "impossible operator '%s'"
  msgid "incompatible operand for '%%%c'"
  msgstr "Ð½ÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ñ‹ Ð°Ð¿Ñ�Ñ€Ð°Ñ‚Ð°Ñ€ '%s'"
  
! #: config/aarch64/aarch64.cc:12483
  #, fuzzy, c-format
  #| msgid "invalid register name for `%s'"
  msgid "incompatible register operand for '%%%c'"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð° `%s'"
  
! #: config/aarch64/aarch64.cc:12548 config/arm/arm.cc:24916
  #, fuzzy, c-format
  msgid "missing operand"
  msgstr "Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: config/aarch64/aarch64.cc:12638
  #, fuzzy, c-format
  msgid "invalid constant"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ %s"
  
! #: config/aarch64/aarch64.cc:12641
  #, fuzzy, c-format
  #| msgid "invalid %%d operand"
  msgid "invalid operand"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ %%d Ð°Ð¿ÐµÑ€Ð°Ð½Ð´"
  
! #: config/aarch64/aarch64.cc:12779 config/aarch64/aarch64.cc:12784
  #, fuzzy, c-format
  msgid "invalid operand prefix '%%%c'"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: config/aarch64/aarch64.cc:12804
  #, fuzzy, c-format
  #| msgid "invalid address"
  msgid "invalid address mode"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð°Ð´Ñ€Ð°Ñ�"
  
! #: config/aarch64/aarch64.cc:22775
  msgid "invalid conversion from type %<mfloat8_t%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:22777
  msgid "invalid conversion to type %<mfloat8_t%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29806 config/aarch64/aarch64.cc:29829
  msgid "operation not permitted on type %<mfloat8_t%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29824
  msgid "cannot combine GNU and SVE vectors in a binary operation"
  msgstr ""
  
! #: config/alpha/alpha.cc:5780 config/i386/i386.cc:14077
  #: config/rs6000/rs6000.cc:14674 config/sparc/sparc.cc:9400
  #, c-format
  msgid "'%%&' used without any local dynamic TLS references"
  msgstr ""
  
! #: config/alpha/alpha.cc:5838 config/bfin/bfin.cc:1428
  #, fuzzy, c-format
  msgid "invalid %%J value"
  msgstr "Ð´Ñ€Ñ�Ð½Ð½Ð°Ðµ %%Q Ð·Ð½Ð°Ñ‡Ñ�Ð½Ð½Ðµ"
  
! #: config/alpha/alpha.cc:5868 config/ia64/ia64.cc:5592 config/or1k/or1k.cc:1252
  #, c-format
  msgid "invalid %%r value"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%r"
  
! #: config/alpha/alpha.cc:5878 config/ia64/ia64.cc:5546
  #: config/rs6000/rs6000.cc:14369 config/xtensa/xtensa.cc:3144
  #, c-format
  msgid "invalid %%R value"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%R"
  
! #: config/alpha/alpha.cc:5884 config/rs6000/rs6000.cc:14289
  #: config/xtensa/xtensa.cc:3117
  #, c-format
  msgid "invalid %%N value"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%N"
  
! #: config/alpha/alpha.cc:5892 config/rs6000/rs6000.cc:14317
  #, c-format
  msgid "invalid %%P value"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%P"
  
! #: config/alpha/alpha.cc:5900
  #, c-format
  msgid "invalid %%h value"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%h"
  
! #: config/alpha/alpha.cc:5908 config/xtensa/xtensa.cc:3137
  #, c-format
  msgid "invalid %%L value"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%L"
  
! #: config/alpha/alpha.cc:5927
  #, c-format
  msgid "invalid %%m value"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%m"
  
! #: config/alpha/alpha.cc:5933
  #, c-format
  msgid "invalid %%M value"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%M"
  
! #: config/alpha/alpha.cc:5970
  #, c-format
  msgid "invalid %%U value"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%U"
  
! #: config/alpha/alpha.cc:5978 config/rs6000/rs6000.cc:14377
  #, c-format
  msgid "invalid %%s value"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%v"
  
! #: config/alpha/alpha.cc:5989
  #, c-format
  msgid "invalid %%C value"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%C"
  
! #: config/alpha/alpha.cc:6026 config/rs6000/rs6000.cc:14153
  #, c-format
  msgid "invalid %%E value"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%E"
  
! #: config/alpha/alpha.cc:6051 config/alpha/alpha.cc:6101
  #, c-format
  msgid "unknown relocation unspec"
  msgstr ""
  
! #: config/alpha/alpha.cc:6060 config/gcn/gcn.cc:7341 config/gcn/gcn.cc:7350
  #: config/gcn/gcn.cc:7408 config/gcn/gcn.cc:7416 config/gcn/gcn.cc:7432
  #: config/gcn/gcn.cc:7450 config/gcn/gcn.cc:7501 config/gcn/gcn.cc:7620
  #: config/gcn/gcn.cc:7733 config/rs6000/rs6000.cc:14679
*************** msgstr ""
*** 20087,20093 ****
  msgid "invalid %%xn code"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%xn"
  
! #: config/alpha/alpha.cc:6169
  #, fuzzy, c-format
  #| msgid "invalid address"
  msgid "invalid operand address"
--- 20097,20103 ----
  msgid "invalid %%xn code"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ %%xn"
  
! #: config/alpha/alpha.cc:6166
  #, fuzzy, c-format
  #| msgid "invalid address"
  msgid "invalid operand address"
*************** msgstr "Ð½ÐµÐ¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÐ¼Ð°
*** 20394,20402 ****
  #: config/cris/cris.cc:783 config/ft32/ft32.cc:110 config/moxie/moxie.cc:108
  #: cobol/dts.h:71 final.cc:3194 final.cc:3196 fold-const.cc:347 gcc.cc:6299
  #: gcc.cc:6313 rtl-error.cc:101 toplev.cc:322 cobol/gcobolspec.cc:366
! #: cobol/gcobolspec.cc:440 cobol/gcobolspec.cc:450 cobol/gcobolspec.cc:525
! #: cp/logic.cc:311 cp/logic.cc:313 cp/typeck.cc:7836 d/d-convert.cc:237
! #: go/go-gcc-diagnostics.cc:28 go/go-gcc-diagnostics.cc:37
  #: go/go-gcc-diagnostics.cc:45 go/go-gcc-diagnostics.cc:53
  #: lto/lto-object.cc:180 lto/lto-object.cc:277 lto/lto-object.cc:334
  #: lto/lto-object.cc:358 m2/gm2-gcc/m2linemap.cc:183
--- 20404,20412 ----
  #: config/cris/cris.cc:783 config/ft32/ft32.cc:110 config/moxie/moxie.cc:108
  #: cobol/dts.h:71 final.cc:3194 final.cc:3196 fold-const.cc:347 gcc.cc:6299
  #: gcc.cc:6313 rtl-error.cc:101 toplev.cc:322 cobol/gcobolspec.cc:366
! #: cobol/gcobolspec.cc:440 cobol/gcobolspec.cc:450 cobol/gcobolspec.cc:534
! #: cobol/genutil.cc:1268 cp/logic.cc:311 cp/logic.cc:313 cp/typeck.cc:7952
! #: d/d-convert.cc:237 go/go-gcc-diagnostics.cc:28 go/go-gcc-diagnostics.cc:37
  #: go/go-gcc-diagnostics.cc:45 go/go-gcc-diagnostics.cc:53
  #: lto/lto-object.cc:180 lto/lto-object.cc:277 lto/lto-object.cc:334
  #: lto/lto-object.cc:358 m2/gm2-gcc/m2linemap.cc:183
*************** msgstr "`%E' - Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ñ� Ð½
*** 20643,20767 ****
  msgid "Expected register or constant integer."
  msgstr ""
  
! #: config/i386/i386.cc:12884
  #, c-format
  msgid "invalid UNSPEC as operand"
  msgstr ""
  
! #: config/i386/i386.cc:13423
  #, fuzzy, c-format
  #| msgid "invalid use of `restrict'"
  msgid "invalid use of register '%s'"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: config/i386/i386.cc:13428
  #, fuzzy, c-format
  #| msgid "invalid use of `restrict'"
  msgid "invalid use of asm flag output"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: config/i386/i386.cc:13662
  #, fuzzy, c-format
  msgid "invalid operand size for operand code 'O'"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ %%-ÐºÐ¾Ð´"
  
! #: config/i386/i386.cc:13697
  #, fuzzy, c-format
  msgid "invalid operand size for operand code 'z'"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ %%-ÐºÐ¾Ð´"
  
! #: config/i386/i386.cc:13772
  #, fuzzy, c-format
  msgid "invalid operand type used with operand code '%c'"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: config/i386/i386.cc:13777
  #, fuzzy, c-format
  msgid "invalid operand size for operand code '%c'"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: config/i386/i386.cc:13855
  #, c-format
  msgid "operand is not a condition code, invalid operand code 'Y'"
  msgstr ""
  
! #: config/i386/i386.cc:13934
  #, c-format
  msgid "operand is not a condition code, invalid operand code 'D'"
  msgstr ""
  
! #: config/i386/i386.cc:13952
  #, c-format
  msgid "operand is not a condition code, invalid operand code '%c'"
  msgstr ""
  
! #: config/i386/i386.cc:13973
  #, c-format
  msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
  msgstr ""
  
! #: config/i386/i386.cc:13988
  #, c-format
  msgid "operand is not an integer, invalid operand code 'K'"
  msgstr ""
  
! #: config/i386/i386.cc:14016
  #, c-format
  msgid "operand is not a specific integer, invalid operand code 'r'"
  msgstr ""
  
! #: config/i386/i386.cc:14034
  #, c-format
  msgid "operand is not an integer, invalid operand code 'R'"
  msgstr ""
  
! #: config/i386/i386.cc:14057
  #, c-format
  msgid "operand is not a specific integer, invalid operand code 'R'"
  msgstr ""
  
! #: config/i386/i386.cc:14150
  #, fuzzy, c-format
  msgid "invalid operand code '%c'"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: config/i386/i386.cc:14212 config/i386/i386.cc:14601
  #, fuzzy, c-format
  #| msgid "invalid %%c operand"
  msgid "invalid constraints for operand"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ %%c Ð°Ð¿ÐµÑ€Ð°Ð½Ð´"
  
! #: config/i386/i386.cc:14313
  #, fuzzy, c-format
  msgid "invalid vector immediate"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: config/i386/i386.cc:17483
  #, fuzzy
  msgid "unknown insn mode"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ñ‹ Ñ€Ñ�Ð¶Ñ‹Ð¼ Ð¼Ð°ÑˆÑ‹Ð½Ñ‹ \"%s\""
  
! #: config/i386/i386.cc:24021
  msgid "invalid conversion from type %<__bf16%> without option %<-msse2%>"
  msgstr ""
  
! #: config/i386/i386.cc:24024
  msgid "invalid conversion from type %<_Float16%> without option %<-msse2%>"
  msgstr ""
  
! #: config/i386/i386.cc:24027
  msgid "invalid conversion to type %<__bf16%> without option %<-msse2%>"
  msgstr ""
  
! #: config/i386/i386.cc:24030
  msgid "invalid conversion to type %<_Float16%> without option %<-msse2%>"
  msgstr ""
  
! #: config/i386/i386.cc:24068 config/i386/i386.cc:24093
  msgid "operation not permitted on type %<__bf16%> without option %<-msse2%>"
  msgstr ""
  
! #: config/i386/i386.cc:24071 config/i386/i386.cc:24097
  msgid "operation not permitted on type %<_Float16%> without option %<-msse2%>"
  msgstr ""
  
--- 20653,20777 ----
  msgid "Expected register or constant integer."
  msgstr ""
  
! #: config/i386/i386.cc:12886
  #, c-format
  msgid "invalid UNSPEC as operand"
  msgstr ""
  
! #: config/i386/i386.cc:13425
  #, fuzzy, c-format
  #| msgid "invalid use of `restrict'"
  msgid "invalid use of register '%s'"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: config/i386/i386.cc:13430
  #, fuzzy, c-format
  #| msgid "invalid use of `restrict'"
  msgid "invalid use of asm flag output"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: config/i386/i386.cc:13664
  #, fuzzy, c-format
  msgid "invalid operand size for operand code 'O'"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ %%-ÐºÐ¾Ð´"
  
! #: config/i386/i386.cc:13699
  #, fuzzy, c-format
  msgid "invalid operand size for operand code 'z'"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ %%-ÐºÐ¾Ð´"
  
! #: config/i386/i386.cc:13774
  #, fuzzy, c-format
  msgid "invalid operand type used with operand code '%c'"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: config/i386/i386.cc:13779
  #, fuzzy, c-format
  msgid "invalid operand size for operand code '%c'"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: config/i386/i386.cc:13857
  #, c-format
  msgid "operand is not a condition code, invalid operand code 'Y'"
  msgstr ""
  
! #: config/i386/i386.cc:13936
  #, c-format
  msgid "operand is not a condition code, invalid operand code 'D'"
  msgstr ""
  
! #: config/i386/i386.cc:13954
  #, c-format
  msgid "operand is not a condition code, invalid operand code '%c'"
  msgstr ""
  
! #: config/i386/i386.cc:13975
  #, c-format
  msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
  msgstr ""
  
! #: config/i386/i386.cc:13990
  #, c-format
  msgid "operand is not an integer, invalid operand code 'K'"
  msgstr ""
  
! #: config/i386/i386.cc:14018
  #, c-format
  msgid "operand is not a specific integer, invalid operand code 'r'"
  msgstr ""
  
! #: config/i386/i386.cc:14036
  #, c-format
  msgid "operand is not an integer, invalid operand code 'R'"
  msgstr ""
  
! #: config/i386/i386.cc:14059
  #, c-format
  msgid "operand is not a specific integer, invalid operand code 'R'"
  msgstr ""
  
! #: config/i386/i386.cc:14152
  #, fuzzy, c-format
  msgid "invalid operand code '%c'"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: config/i386/i386.cc:14214 config/i386/i386.cc:14603
  #, fuzzy, c-format
  #| msgid "invalid %%c operand"
  msgid "invalid constraints for operand"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ %%c Ð°Ð¿ÐµÑ€Ð°Ð½Ð´"
  
! #: config/i386/i386.cc:14315
  #, fuzzy, c-format
  msgid "invalid vector immediate"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: config/i386/i386.cc:17485
  #, fuzzy
  msgid "unknown insn mode"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ñ‹ Ñ€Ñ�Ð¶Ñ‹Ð¼ Ð¼Ð°ÑˆÑ‹Ð½Ñ‹ \"%s\""
  
! #: config/i386/i386.cc:24023
  msgid "invalid conversion from type %<__bf16%> without option %<-msse2%>"
  msgstr ""
  
! #: config/i386/i386.cc:24026
  msgid "invalid conversion from type %<_Float16%> without option %<-msse2%>"
  msgstr ""
  
! #: config/i386/i386.cc:24029
  msgid "invalid conversion to type %<__bf16%> without option %<-msse2%>"
  msgstr ""
  
! #: config/i386/i386.cc:24032
  msgid "invalid conversion to type %<_Float16%> without option %<-msse2%>"
  msgstr ""
  
! #: config/i386/i386.cc:24070 config/i386/i386.cc:24095
  msgid "operation not permitted on type %<__bf16%> without option %<-msse2%>"
  msgstr ""
  
! #: config/i386/i386.cc:24073 config/i386/i386.cc:24099
  msgid "operation not permitted on type %<_Float16%> without option %<-msse2%>"
  msgstr ""
  
*************** msgstr "Ð´Ñ€Ñ�Ð½Ð½Ñ‹ Ð°Ð´Ñ€Ð°Ñ�"
*** 20891,20929 ****
  msgid "lo_sum not of register"
  msgstr "Ð�Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ð°Ñ†ÑŒ Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð° sb"
  
! #: config/microblaze/microblaze.cc:2299
  #, fuzzy, c-format
  #| msgid "unknown escape sequence '\\%c'"
  msgid "unknown punctuation '%c'"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ð°Ñ� ESC-Ð¿Ð°Ñ�Ð»Ñ�Ð´Ð¾ÑžÐ½Ð°Ñ�Ñ†ÑŒ '\\%c'"
  
! #: config/microblaze/microblaze.cc:2308
  #, c-format
  msgid "null pointer"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:2343
  #, c-format
  msgid "PRINT_OPERAND, invalid insn for %%C"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:2372
  #, c-format
  msgid "PRINT_OPERAND, invalid insn for %%N"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:2392 config/microblaze/microblaze.cc:2568
  #, fuzzy
  #| msgid "invalid address"
  msgid "insn contains an invalid address !"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð°Ð´Ñ€Ð°Ñ�"
  
! #: config/microblaze/microblaze.cc:2408 config/microblaze/microblaze.cc:2638
  #: config/xtensa/xtensa.cc:3240
  msgid "invalid address"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð°Ð´Ñ€Ð°Ñ�"
  
! #: config/microblaze/microblaze.cc:2511
  #, c-format
  msgid "letter %c was found & insn was not CONST_INT"
  msgstr ""
--- 20901,20939 ----
  msgid "lo_sum not of register"
  msgstr "Ð�Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ð°Ñ†ÑŒ Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð° sb"
  
! #: config/microblaze/microblaze.cc:2303
  #, fuzzy, c-format
  #| msgid "unknown escape sequence '\\%c'"
  msgid "unknown punctuation '%c'"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ð°Ñ� ESC-Ð¿Ð°Ñ�Ð»Ñ�Ð´Ð¾ÑžÐ½Ð°Ñ�Ñ†ÑŒ '\\%c'"
  
! #: config/microblaze/microblaze.cc:2312
  #, c-format
  msgid "null pointer"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:2347
  #, c-format
  msgid "PRINT_OPERAND, invalid insn for %%C"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:2376
  #, c-format
  msgid "PRINT_OPERAND, invalid insn for %%N"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:2396 config/microblaze/microblaze.cc:2572
  #, fuzzy
  #| msgid "invalid address"
  msgid "insn contains an invalid address !"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð°Ð´Ñ€Ð°Ñ�"
  
! #: config/microblaze/microblaze.cc:2412 config/microblaze/microblaze.cc:2642
  #: config/xtensa/xtensa.cc:3240
  msgid "invalid address"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð°Ð´Ñ€Ð°Ñ�"
  
! #: config/microblaze/microblaze.cc:2515
  #, c-format
  msgid "letter %c was found & insn was not CONST_INT"
  msgstr ""
*************** msgstr ""
*** 21238,21269 ****
  msgid "AltiVec argument passed to unprototyped function"
  msgstr "Ð½Ðµ Ñ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: config/rs6000/rs6000.cc:28020
  #, fuzzy
  msgid "Could not generate addis value for fusion"
  msgstr "Ð¡Ñ‚Ð²Ð°Ñ€Ñ‹Ñ†ÑŒ ÐºÐ¾Ð´ Ð´Ð»Ñ� DLL"
  
! #: config/rs6000/rs6000.cc:28089
  msgid "Unable to generate load/store offset for fusion"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28165
  msgid "Bad GPR fusion"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28767
  msgid "invalid conversion from type %<__vector_quad%>"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28769
  msgid "invalid conversion to type %<__vector_quad%>"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28771
  msgid "invalid conversion from type %<__vector_pair%>"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28773
  msgid "invalid conversion to type %<__vector_pair%>"
  msgstr ""
  
--- 21248,21279 ----
  msgid "AltiVec argument passed to unprototyped function"
  msgstr "Ð½Ðµ Ñ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: config/rs6000/rs6000.cc:28023
  #, fuzzy
  msgid "Could not generate addis value for fusion"
  msgstr "Ð¡Ñ‚Ð²Ð°Ñ€Ñ‹Ñ†ÑŒ ÐºÐ¾Ð´ Ð´Ð»Ñ� DLL"
  
! #: config/rs6000/rs6000.cc:28092
  msgid "Unable to generate load/store offset for fusion"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28168
  msgid "Bad GPR fusion"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28770
  msgid "invalid conversion from type %<__vector_quad%>"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28772
  msgid "invalid conversion to type %<__vector_quad%>"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28774
  msgid "invalid conversion from type %<__vector_pair%>"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28776
  msgid "invalid conversion to type %<__vector_pair%>"
  msgstr ""
  
*************** msgstr ""
*** 21349,21367 ****
  msgid "vector argument passed to unprototyped function"
  msgstr "Ð½Ðµ Ñ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: config/s390/s390.cc:17350
  msgid "types differ in signedness"
  msgstr ""
  
! #: config/s390/s390.cc:17360
  msgid "binary operator does not support two vector bool operands"
  msgstr ""
  
! #: config/s390/s390.cc:17363
  msgid "binary operator does not support vector bool operand"
  msgstr ""
  
! #: config/s390/s390.cc:17371
  msgid "binary operator does not support mixing vector bool with floating point vector operands"
  msgstr ""
  
--- 21359,21377 ----
  msgid "vector argument passed to unprototyped function"
  msgstr "Ð½Ðµ Ñ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: config/s390/s390.cc:17377
  msgid "types differ in signedness"
  msgstr ""
  
! #: config/s390/s390.cc:17387
  msgid "binary operator does not support two vector bool operands"
  msgstr ""
  
! #: config/s390/s390.cc:17390
  msgid "binary operator does not support vector bool operand"
  msgstr ""
  
! #: config/s390/s390.cc:17398
  msgid "binary operator does not support mixing vector bool with floating point vector operands"
  msgstr ""
  
*************** msgstr ""
*** 21536,21542 ****
  msgid "aka"
  msgstr ""
  
! #: c/c-objc-common.cc:385 c/c-typeck.cc:7714
  msgid "({anonymous})"
  msgstr ""
  
--- 21546,21552 ----
  msgid "aka"
  msgstr ""
  
! #: c/c-objc-common.cc:385 c/c-typeck.cc:7715
  msgid "({anonymous})"
  msgstr ""
  
*************** msgstr ""
*** 21549,21586 ****
  #. ;
  #. <~~~~~~~~~ declaration ~~~~~~~~~~>
  #. Use c_parser_require to get an error with a fix-it hint.
! #: c/c-parser.cc:3089 c/c-parser.cc:3279 c/c-parser.cc:3293 c/c-parser.cc:7502
! #: c/c-parser.cc:8356 c/c-parser.cc:8934 c/c-parser.cc:9126 c/c-parser.cc:9159
! #: c/c-parser.cc:9457 c/c-parser.cc:14304 c/c-parser.cc:14339
! #: c/c-parser.cc:14370 c/c-parser.cc:14417 c/c-parser.cc:14598
! #: c/c-parser.cc:15431 c/c-parser.cc:15506 c/c-parser.cc:15549
! #: c/c-parser.cc:23037 c/c-parser.cc:23117 c/c-parser.cc:23446
! #: c/c-parser.cc:23472 c/c-parser.cc:23495 c/c-parser.cc:24181
! #: c/c-parser.cc:24224 c/c-parser.cc:25491 c/gimple-parser.cc:454
  #: c/gimple-parser.cc:495 c/gimple-parser.cc:504 c/gimple-parser.cc:723
  #: c/gimple-parser.cc:2437 c/gimple-parser.cc:2474 c/gimple-parser.cc:2553
! #: c/gimple-parser.cc:2580 c/c-parser.cc:4141 c/c-parser.cc:4332
! #: c/c-parser.cc:4367 c/c-parser.cc:14591 c/gimple-parser.cc:2244
! #: c/gimple-parser.cc:2256 cp/parser.cc:16475 cp/parser.cc:34635
! #: cp/parser.cc:35274
  #, gcc-internal-format
  msgid "expected %<;%>"
  msgstr ""
  
! #: c/c-parser.cc:3251 c/c-parser.cc:9417
  #, gcc-internal-format
  msgid "expected %<:%> or %<)%>"
  msgstr ""
  
! #: c/c-parser.cc:3790 c/c-parser.cc:4943 c/c-parser.cc:5135 c/c-parser.cc:5193
! #: c/c-parser.cc:5251 c/c-parser.cc:5635 c/c-parser.cc:5658 c/c-parser.cc:5667
! #: c/c-parser.cc:5718 c/c-parser.cc:5727 c/c-parser.cc:10892
! #: c/c-parser.cc:10978 c/c-parser.cc:11552 c/c-parser.cc:11578
! #: c/c-parser.cc:11612 c/c-parser.cc:11825 c/c-parser.cc:12697
! #: c/c-parser.cc:14705 c/c-parser.cc:17345 c/c-parser.cc:18080
! #: c/c-parser.cc:18139 c/c-parser.cc:18194 c/c-parser.cc:20053
! #: c/c-parser.cc:20173 c/c-parser.cc:22130 c/c-parser.cc:23537
! #: c/c-parser.cc:24189 c/c-parser.cc:28016 c/c-parser.cc:28098
  #: c/gimple-parser.cc:238 c/gimple-parser.cc:241 c/gimple-parser.cc:589
  #: c/gimple-parser.cc:623 c/gimple-parser.cc:628 c/gimple-parser.cc:807
  #: c/gimple-parser.cc:904 c/gimple-parser.cc:1175 c/gimple-parser.cc:1201
--- 21559,21596 ----
  #. ;
  #. <~~~~~~~~~ declaration ~~~~~~~~~~>
  #. Use c_parser_require to get an error with a fix-it hint.
! #: c/c-parser.cc:3134 c/c-parser.cc:3324 c/c-parser.cc:3338 c/c-parser.cc:7547
! #: c/c-parser.cc:8401 c/c-parser.cc:8979 c/c-parser.cc:9171 c/c-parser.cc:9204
! #: c/c-parser.cc:9502 c/c-parser.cc:14349 c/c-parser.cc:14384
! #: c/c-parser.cc:14415 c/c-parser.cc:14462 c/c-parser.cc:14643
! #: c/c-parser.cc:15476 c/c-parser.cc:15551 c/c-parser.cc:15594
! #: c/c-parser.cc:23082 c/c-parser.cc:23162 c/c-parser.cc:23491
! #: c/c-parser.cc:23517 c/c-parser.cc:23540 c/c-parser.cc:24226
! #: c/c-parser.cc:24269 c/c-parser.cc:25536 c/gimple-parser.cc:454
  #: c/gimple-parser.cc:495 c/gimple-parser.cc:504 c/gimple-parser.cc:723
  #: c/gimple-parser.cc:2437 c/gimple-parser.cc:2474 c/gimple-parser.cc:2553
! #: c/gimple-parser.cc:2580 c/c-parser.cc:4186 c/c-parser.cc:4377
! #: c/c-parser.cc:4412 c/c-parser.cc:14636 c/gimple-parser.cc:2244
! #: c/gimple-parser.cc:2256 cp/parser.cc:16479 cp/parser.cc:34694
! #: cp/parser.cc:35333
  #, gcc-internal-format
  msgid "expected %<;%>"
  msgstr ""
  
! #: c/c-parser.cc:3296 c/c-parser.cc:9462
  #, gcc-internal-format
  msgid "expected %<:%> or %<)%>"
  msgstr ""
  
! #: c/c-parser.cc:3835 c/c-parser.cc:4988 c/c-parser.cc:5180 c/c-parser.cc:5238
! #: c/c-parser.cc:5296 c/c-parser.cc:5680 c/c-parser.cc:5703 c/c-parser.cc:5712
! #: c/c-parser.cc:5763 c/c-parser.cc:5772 c/c-parser.cc:10937
! #: c/c-parser.cc:11023 c/c-parser.cc:11597 c/c-parser.cc:11623
! #: c/c-parser.cc:11657 c/c-parser.cc:11870 c/c-parser.cc:12742
! #: c/c-parser.cc:14750 c/c-parser.cc:17390 c/c-parser.cc:18125
! #: c/c-parser.cc:18184 c/c-parser.cc:18239 c/c-parser.cc:20098
! #: c/c-parser.cc:20218 c/c-parser.cc:22175 c/c-parser.cc:23582
! #: c/c-parser.cc:24234 c/c-parser.cc:28062 c/c-parser.cc:28144
  #: c/gimple-parser.cc:238 c/gimple-parser.cc:241 c/gimple-parser.cc:589
  #: c/gimple-parser.cc:623 c/gimple-parser.cc:628 c/gimple-parser.cc:807
  #: c/gimple-parser.cc:904 c/gimple-parser.cc:1175 c/gimple-parser.cc:1201
*************** msgstr ""
*** 21588,21737 ****
  #: c/gimple-parser.cc:1592 c/gimple-parser.cc:1608 c/gimple-parser.cc:1664
  #: c/gimple-parser.cc:1691 c/gimple-parser.cc:1721 c/gimple-parser.cc:1747
  #: c/gimple-parser.cc:1954 c/gimple-parser.cc:2166 c/gimple-parser.cc:2186
! #: c/gimple-parser.cc:2347 c/gimple-parser.cc:2510 c/c-parser.cc:3242
! #: c/c-parser.cc:9409 c/c-parser.cc:20746 cp/parser.cc:35322 cp/parser.cc:43032
  #, gcc-internal-format
  msgid "expected %<)%>"
  msgstr ""
  
! #: c/c-parser.cc:5029 c/c-parser.cc:5778 c/c-parser.cc:6138 c/c-parser.cc:6156
! #: c/c-parser.cc:6157 c/c-parser.cc:6660 c/c-parser.cc:6704 c/c-parser.cc:9508
! #: c/c-parser.cc:11816 c/c-parser.cc:13270 c/c-parser.cc:13642
! #: c/c-parser.cc:16667 c/gimple-parser.cc:1930 cp/parser.cc:35286
  #, gcc-internal-format
  msgid "expected %<]%>"
  msgstr ""
  
! #: c/c-parser.cc:5231
  msgid "expected %<;%>, %<,%> or %<)%>"
  msgstr ""
  
  #. Look for the two `(' tokens.
! #: c/c-parser.cc:5687 c/c-parser.cc:5692 c/c-parser.cc:17328
! #: c/c-parser.cc:18169 c/c-parser.cc:20554 c/c-parser.cc:20653
! #: c/c-parser.cc:26832 c/c-parser.cc:27136 c/c-parser.cc:27824
! #: c/c-parser.cc:28041 c/gimple-parser.cc:223 c/gimple-parser.cc:536
  #: c/gimple-parser.cc:575 c/gimple-parser.cc:607 c/gimple-parser.cc:874
  #: c/gimple-parser.cc:1169 c/gimple-parser.cc:1195 c/gimple-parser.cc:1322
  #: c/gimple-parser.cc:1457 c/gimple-parser.cc:1582 c/gimple-parser.cc:1687
  #: c/gimple-parser.cc:1705 c/gimple-parser.cc:1740 c/gimple-parser.cc:2135
  #: c/gimple-parser.cc:2146 c/gimple-parser.cc:2152 c/gimple-parser.cc:2335
! #: c/gimple-parser.cc:2507 c/c-parser.cc:17109 cp/parser.cc:35277
  #, gcc-internal-format
  msgid "expected %<(%>"
  msgstr ""
  
! #: c/c-parser.cc:6134 c/c-parser.cc:6136 c/c-parser.cc:16572 cp/parser.cc:35289
! #: cp/parser.cc:39179 go/gofrontend/embed.cc:440
  #, gcc-internal-format
  msgid "expected %<[%>"
  msgstr ""
  
! #: c/c-parser.cc:6964 c/c-parser.cc:14934 c/c-parser.cc:20630
! #: c/c-parser.cc:23012 c/c-parser.cc:23098 c/c-parser.cc:23859
! #: c/c-parser.cc:24999 c/c-parser.cc:29820 c/gimple-parser.cc:447
! #: c/gimple-parser.cc:2513 c/c-parser.cc:4128 c/c-parser.cc:4356
! #: c/c-parser.cc:14486 cp/parser.cc:22203 cp/parser.cc:35283
  #: go/gofrontend/embed.cc:371
  #, gcc-internal-format
  msgid "expected %<{%>"
  msgstr ""
  
! #: c/c-parser.cc:7914 c/c-parser.cc:7923 c/c-parser.cc:9957 c/c-parser.cc:11136
! #: c/c-parser.cc:14698 c/c-parser.cc:15095 c/c-parser.cc:15159
! #: c/c-parser.cc:16649 c/c-parser.cc:17760 c/c-parser.cc:17997
! #: c/c-parser.cc:18550 c/c-parser.cc:18653 c/c-parser.cc:19194
! #: c/c-parser.cc:19630 c/c-parser.cc:19706 c/c-parser.cc:19823
! #: c/c-parser.cc:19895 c/c-parser.cc:20868 c/c-parser.cc:26702
! #: c/c-parser.cc:27881 c/c-parser.cc:27940 c/c-parser.cc:29142
! #: c/gimple-parser.cc:630 c/gimple-parser.cc:943 c/gimple-parser.cc:2561
! #: c/gimple-parser.cc:2588 c/c-parser.cc:9416 c/c-parser.cc:17253
! #: c/c-parser.cc:18658 cp/parser.cc:35316 cp/parser.cc:37023 cp/parser.cc:40119
! #: cp/parser.cc:41012 go/gofrontend/embed.cc:404
  #, gcc-internal-format
  msgid "expected %<:%>"
  msgstr ""
  
! #: c/c-parser.cc:8910 cp/parser.cc:35203
  #, gcc-internal-format
  msgid "expected %<while%>"
  msgstr ""
  
! #: c/c-parser.cc:10855 c/c-parser.cc:11085 c/c-parser.cc:11602
! #: c/c-parser.cc:11647 c/c-parser.cc:11740 c/c-parser.cc:11887
! #: c/c-parser.cc:12687 c/c-parser.cc:18174 c/c-parser.cc:19775
  #: c/gimple-parser.cc:1172 c/gimple-parser.cc:1198 c/gimple-parser.cc:1326
  #: c/gimple-parser.cc:1329 c/gimple-parser.cc:1709 c/gimple-parser.cc:1715
! #: cp/parser.cc:34633 cp/parser.cc:35292
  #, gcc-internal-format
  msgid "expected %<,%>"
  msgstr ""
  
! #: c/c-parser.cc:11496
  msgid "expected %<.%>"
  msgstr ""
  
! #: c/c-parser.cc:14157 c/c-parser.cc:14189 c/c-parser.cc:14429
! #: cp/parser.cc:37597 cp/parser.cc:37618
  #, gcc-internal-format
  msgid "expected %<@end%>"
  msgstr ""
  
! #: c/c-parser.cc:14847 c/gimple-parser.cc:1497 cp/parser.cc:35301
  #, gcc-internal-format
  msgid "expected %<>%>"
  msgstr ""
  
! #: c/c-parser.cc:18748 c/c-parser.cc:20191 c/c-parser.cc:20617
! #: cp/parser.cc:35325 cp/parser.cc:42883
  #, gcc-internal-format
  msgid "expected %<,%> or %<)%>"
  msgstr ""
  
  #. All following cases are statements with LHS.
! #: c/c-parser.cc:19622 c/c-parser.cc:22907 c/c-parser.cc:22952
! #: c/c-parser.cc:23109 c/c-parser.cc:23456 c/c-parser.cc:24168
! #: c/c-parser.cc:25374 c/c-parser.cc:26880 c/c-parser.cc:28082
! #: c/gimple-parser.cc:798 c/c-parser.cc:6727 c/c-parser.cc:23029
! #: c/c-parser.cc:23252 cp/parser.cc:35304 cp/parser.cc:44578 cp/parser.cc:44751
  #, gcc-internal-format
  msgid "expected %<=%>"
  msgstr ""
  
! #: c/c-parser.cc:20767 c/c-parser.cc:27145 c/c-parser.cc:27166
! #: c/c-parser.cc:16707 c/c-parser.cc:16719 c/c-parser.cc:20747
! #: cp/parser.cc:43033 cp/parser.cc:43060 cp/parser.cc:50600 cp/parser.cc:50611
  #, gcc-internal-format
  msgid "expected %<)%> or %<,%>"
  msgstr ""
  
! #: c/c-parser.cc:23040 c/c-parser.cc:23120 c/c-parser.cc:23473
! #: c/c-parser.cc:23928 c/gimple-parser.cc:1763 c/gimple-parser.cc:1795
! #: c/gimple-parser.cc:1805 c/gimple-parser.cc:2598 cp/parser.cc:35280
! #: cp/parser.cc:37807
  #, gcc-internal-format
  msgid "expected %<}%>"
  msgstr ""
  
! #: c/c-parser.cc:23133 cp/parser.cc:44676
  #, gcc-internal-format
  msgid "expected %<else%>"
  msgstr ""
  
! #: c/c-parser.cc:25046 c/c-parser.cc:25035 cp/parser.cc:47606
  #, gcc-internal-format
  msgid "expected %<#pragma omp section%> or %<}%>"
  msgstr ""
  
! #: c/c-parser.cc:28760 cp/parser.cc:52554
  msgid "<message unknown at compile time>"
  msgstr ""
  
! #: c/c-typeck.cc:9863
  msgid "(anonymous)"
  msgstr ""
  
! #: c/gimple-parser.cc:1486 cp/parser.cc:19538 cp/parser.cc:35298
  #, gcc-internal-format
  msgid "expected %<<%>"
  msgstr ""
--- 21598,21748 ----
  #: c/gimple-parser.cc:1592 c/gimple-parser.cc:1608 c/gimple-parser.cc:1664
  #: c/gimple-parser.cc:1691 c/gimple-parser.cc:1721 c/gimple-parser.cc:1747
  #: c/gimple-parser.cc:1954 c/gimple-parser.cc:2166 c/gimple-parser.cc:2186
! #: c/gimple-parser.cc:2347 c/gimple-parser.cc:2510 c/c-parser.cc:3287
! #: c/c-parser.cc:9454 c/c-parser.cc:20791 cp/parser.cc:35381 cp/parser.cc:43091
  #, gcc-internal-format
  msgid "expected %<)%>"
  msgstr ""
  
! #: c/c-parser.cc:5074 c/c-parser.cc:5823 c/c-parser.cc:6183 c/c-parser.cc:6201
! #: c/c-parser.cc:6202 c/c-parser.cc:6705 c/c-parser.cc:6749 c/c-parser.cc:9553
! #: c/c-parser.cc:11861 c/c-parser.cc:13315 c/c-parser.cc:13687
! #: c/c-parser.cc:16712 c/gimple-parser.cc:1930 cp/parser.cc:35345
  #, gcc-internal-format
  msgid "expected %<]%>"
  msgstr ""
  
! #: c/c-parser.cc:5276
  msgid "expected %<;%>, %<,%> or %<)%>"
  msgstr ""
  
  #. Look for the two `(' tokens.
! #: c/c-parser.cc:5732 c/c-parser.cc:5737 c/c-parser.cc:17373
! #: c/c-parser.cc:18214 c/c-parser.cc:20599 c/c-parser.cc:20698
! #: c/c-parser.cc:26875 c/c-parser.cc:27182 c/c-parser.cc:27870
! #: c/c-parser.cc:28087 c/gimple-parser.cc:223 c/gimple-parser.cc:536
  #: c/gimple-parser.cc:575 c/gimple-parser.cc:607 c/gimple-parser.cc:874
  #: c/gimple-parser.cc:1169 c/gimple-parser.cc:1195 c/gimple-parser.cc:1322
  #: c/gimple-parser.cc:1457 c/gimple-parser.cc:1582 c/gimple-parser.cc:1687
  #: c/gimple-parser.cc:1705 c/gimple-parser.cc:1740 c/gimple-parser.cc:2135
  #: c/gimple-parser.cc:2146 c/gimple-parser.cc:2152 c/gimple-parser.cc:2335
! #: c/gimple-parser.cc:2507 c/c-parser.cc:17154 cp/parser.cc:35336
  #, gcc-internal-format
  msgid "expected %<(%>"
  msgstr ""
  
! #: c/c-parser.cc:6179 c/c-parser.cc:6181 c/c-parser.cc:16617 cp/parser.cc:35348
! #: cp/parser.cc:39238 go/gofrontend/embed.cc:440
  #, gcc-internal-format
  msgid "expected %<[%>"
  msgstr ""
  
! #: c/c-parser.cc:7009 c/c-parser.cc:14979 c/c-parser.cc:20675
! #: c/c-parser.cc:23057 c/c-parser.cc:23143 c/c-parser.cc:23904
! #: c/c-parser.cc:25044 c/c-parser.cc:29863 c/gimple-parser.cc:447
! #: c/gimple-parser.cc:2513 c/c-parser.cc:4173 c/c-parser.cc:4401
! #: c/c-parser.cc:14531 cp/parser.cc:22207 cp/parser.cc:35342
  #: go/gofrontend/embed.cc:371
  #, gcc-internal-format
  msgid "expected %<{%>"
  msgstr ""
  
! #: c/c-parser.cc:7959 c/c-parser.cc:7968 c/c-parser.cc:10002
! #: c/c-parser.cc:11181 c/c-parser.cc:14743 c/c-parser.cc:15140
! #: c/c-parser.cc:15204 c/c-parser.cc:16694 c/c-parser.cc:17805
! #: c/c-parser.cc:18042 c/c-parser.cc:18595 c/c-parser.cc:18698
! #: c/c-parser.cc:19239 c/c-parser.cc:19675 c/c-parser.cc:19751
! #: c/c-parser.cc:19868 c/c-parser.cc:19940 c/c-parser.cc:20913
! #: c/c-parser.cc:26747 c/c-parser.cc:27927 c/c-parser.cc:27986
! #: c/c-parser.cc:29185 c/gimple-parser.cc:630 c/gimple-parser.cc:943
! #: c/gimple-parser.cc:2561 c/gimple-parser.cc:2588 c/c-parser.cc:9461
! #: c/c-parser.cc:17298 c/c-parser.cc:18703 cp/parser.cc:35375
! #: cp/parser.cc:37082 cp/parser.cc:40178 cp/parser.cc:41071
! #: go/gofrontend/embed.cc:404
  #, gcc-internal-format
  msgid "expected %<:%>"
  msgstr ""
  
! #: c/c-parser.cc:8955 cp/parser.cc:35262
  #, gcc-internal-format
  msgid "expected %<while%>"
  msgstr ""
  
! #: c/c-parser.cc:10900 c/c-parser.cc:11130 c/c-parser.cc:11647
! #: c/c-parser.cc:11692 c/c-parser.cc:11785 c/c-parser.cc:11932
! #: c/c-parser.cc:12732 c/c-parser.cc:18219 c/c-parser.cc:19820
  #: c/gimple-parser.cc:1172 c/gimple-parser.cc:1198 c/gimple-parser.cc:1326
  #: c/gimple-parser.cc:1329 c/gimple-parser.cc:1709 c/gimple-parser.cc:1715
! #: cp/parser.cc:34692 cp/parser.cc:35351
  #, gcc-internal-format
  msgid "expected %<,%>"
  msgstr ""
  
! #: c/c-parser.cc:11541
  msgid "expected %<.%>"
  msgstr ""
  
! #: c/c-parser.cc:14202 c/c-parser.cc:14234 c/c-parser.cc:14474
! #: cp/parser.cc:37656 cp/parser.cc:37677
  #, gcc-internal-format
  msgid "expected %<@end%>"
  msgstr ""
  
! #: c/c-parser.cc:14892 c/gimple-parser.cc:1497 cp/parser.cc:35360
  #, gcc-internal-format
  msgid "expected %<>%>"
  msgstr ""
  
! #: c/c-parser.cc:18793 c/c-parser.cc:20236 c/c-parser.cc:20662
! #: cp/parser.cc:35384 cp/parser.cc:42942
  #, gcc-internal-format
  msgid "expected %<,%> or %<)%>"
  msgstr ""
  
  #. All following cases are statements with LHS.
! #: c/c-parser.cc:19667 c/c-parser.cc:22952 c/c-parser.cc:22997
! #: c/c-parser.cc:23154 c/c-parser.cc:23501 c/c-parser.cc:24213
! #: c/c-parser.cc:25419 c/c-parser.cc:26923 c/c-parser.cc:28128
! #: c/gimple-parser.cc:798 c/c-parser.cc:6772 c/c-parser.cc:23074
! #: c/c-parser.cc:23297 cp/parser.cc:35363 cp/parser.cc:44637 cp/parser.cc:44810
  #, gcc-internal-format
  msgid "expected %<=%>"
  msgstr ""
  
! #: c/c-parser.cc:20812 c/c-parser.cc:27191 c/c-parser.cc:27212
! #: c/c-parser.cc:16752 c/c-parser.cc:16764 c/c-parser.cc:20792
! #: cp/parser.cc:43092 cp/parser.cc:43119 cp/parser.cc:50659 cp/parser.cc:50670
  #, gcc-internal-format
  msgid "expected %<)%> or %<,%>"
  msgstr ""
  
! #: c/c-parser.cc:23085 c/c-parser.cc:23165 c/c-parser.cc:23518
! #: c/c-parser.cc:23973 c/gimple-parser.cc:1763 c/gimple-parser.cc:1795
! #: c/gimple-parser.cc:1805 c/gimple-parser.cc:2598 cp/parser.cc:35339
! #: cp/parser.cc:37866
  #, gcc-internal-format
  msgid "expected %<}%>"
  msgstr ""
  
! #: c/c-parser.cc:23178 cp/parser.cc:44735
  #, gcc-internal-format
  msgid "expected %<else%>"
  msgstr ""
  
! #: c/c-parser.cc:25091 c/c-parser.cc:25080 cp/parser.cc:47665
  #, gcc-internal-format
  msgid "expected %<#pragma omp section%> or %<}%>"
  msgstr ""
  
! #: c/c-parser.cc:28806 cp/parser.cc:52607
  msgid "<message unknown at compile time>"
  msgstr ""
  
! #: c/c-typeck.cc:9880
  msgid "(anonymous)"
  msgstr ""
  
! #: c/gimple-parser.cc:1486 cp/parser.cc:19542 cp/parser.cc:35357
  #, gcc-internal-format
  msgid "expected %<<%>"
  msgstr ""
*************** msgstr ""
*** 21742,21750 ****
  msgid "expected label"
  msgstr ""
  
! #: cobol/gcobolspec.cc:544
  #, c-format
! msgid "Driving: (%ld)\n"
  msgstr ""
  
  #: cp/call.cc:4225
--- 21753,21761 ----
  msgid "expected label"
  msgstr ""
  
! #: cobol/gcobolspec.cc:554
  #, c-format
! msgid "Driving: ("
  msgstr ""
  
  #: cp/call.cc:4225
*************** msgstr ""
*** 21756,21762 ****
  msgid "  after user-defined conversion:"
  msgstr ""
  
! #: cp/call.cc:8724 cp/pt.cc:2064 cp/pt.cc:26956
  msgid "candidate is:"
  msgid_plural "candidates are:"
  msgstr[0] ""
--- 21767,21773 ----
  msgid "  after user-defined conversion:"
  msgstr ""
  
! #: cp/call.cc:8724 cp/pt.cc:2064 cp/pt.cc:26986
  msgid "candidate is:"
  msgid_plural "candidates are:"
  msgstr[0] ""
*************** msgstr "Ð½ÐµÐ²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°ÐµÐ¼Ñ‹ Ð¿Ð
*** 21865,21871 ****
  msgid "<statement>"
  msgstr ""
  
! #: cp/error.cc:2381 cp/error.cc:3503 c-family/c-pretty-print.cc:2694
  #, gcc-internal-format
  msgid "<unknown>"
  msgstr ""
--- 21876,21882 ----
  msgid "<statement>"
  msgstr ""
  
! #: cp/error.cc:2381 cp/error.cc:3524 c-family/c-pretty-print.cc:2694
  #, gcc-internal-format
  msgid "<unknown>"
  msgstr ""
*************** msgstr ""
*** 21892,21908 ****
  msgid "*this"
  msgstr ""
  
! #: cp/error.cc:3227
  #, fuzzy
  #| msgid "parse error"
  msgid "<expression error>"
  msgstr "Ð³Ñ€Ð°Ð¼Ð°Ñ‚Ñ‹Ñ‡Ð½Ð°Ñ� Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ°"
  
! #: cp/error.cc:3242
  msgid "<unknown operator>"
  msgstr ""
  
! #: cp/error.cc:3732
  msgid "At global scope:"
  msgstr ""
  
--- 21903,21919 ----
  msgid "*this"
  msgstr ""
  
! #: cp/error.cc:3248
  #, fuzzy
  #| msgid "parse error"
  msgid "<expression error>"
  msgstr "Ð³Ñ€Ð°Ð¼Ð°Ñ‚Ñ‹Ñ‡Ð½Ð°Ñ� Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ°"
  
! #: cp/error.cc:3263
  msgid "<unknown operator>"
  msgstr ""
  
! #: cp/error.cc:3753
  msgid "At global scope:"
  msgstr ""
  
*************** msgstr ""
*** 21910,22004 ****
  msgid "candidates are:"
  msgstr ""
  
! #: cp/rtti.cc:588
  #, fuzzy
  msgid "target is not pointer or reference to class"
  msgstr "Ð�Ðµ Ð¼Ð°Ð³Ñƒ Ð·Ð½Ð°Ð¹Ñ�Ñ†Ñ– Ñ„Ð°Ð¹Ð» Ð´Ð»Ñ� ÐºÐ»Ð°Ñ�Ð° %s."
  
! #: cp/rtti.cc:593
  #, fuzzy
  msgid "target is not pointer or reference to complete type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/rtti.cc:599
  msgid "target is not pointer or reference"
  msgstr ""
  
! #: cp/rtti.cc:615
  msgid "source is not a pointer"
  msgstr ""
  
! #: cp/rtti.cc:620
  msgid "source is not a pointer to class"
  msgstr ""
  
! #: cp/rtti.cc:625
  #, fuzzy
  msgid "source is a pointer to incomplete type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/rtti.cc:638
  msgid "source is not of class type"
  msgstr ""
  
! #: cp/rtti.cc:643
  #, fuzzy
  #| msgid "`%s' has an incomplete type"
  msgid "source is of incomplete class type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/rtti.cc:654
  msgid "conversion casts away constness"
  msgstr ""
  
! #: cp/rtti.cc:816
  msgid "source type is not polymorphic"
  msgstr ""
  
! #: cp/typeck.cc:7524 c/c-typeck.cc:5303
  #, gcc-internal-format
  msgid "wrong type argument to unary minus"
  msgstr ""
  
! #: cp/typeck.cc:7525 c/c-typeck.cc:5289
  #, gcc-internal-format
  msgid "wrong type argument to unary plus"
  msgstr ""
  
! #: cp/typeck.cc:7552 c/c-typeck.cc:5348
  #, gcc-internal-format
  msgid "wrong type argument to bit-complement"
  msgstr ""
  
! #: cp/typeck.cc:7572 c/c-typeck.cc:5356
  #, gcc-internal-format
  msgid "wrong type argument to abs"
  msgstr ""
  
! #: cp/typeck.cc:7584 c/c-typeck.cc:5378
  #, gcc-internal-format
  msgid "wrong type argument to conjugation"
  msgstr ""
  
! #: cp/typeck.cc:7608
  #, fuzzy
  #| msgid "too many arguments to function"
  msgid "in argument to unary !"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/typeck.cc:7657
  msgid "no pre-increment operator for type"
  msgstr ""
  
! #: cp/typeck.cc:7659
  msgid "no post-increment operator for type"
  msgstr ""
  
! #: cp/typeck.cc:7661
  msgid "no pre-decrement operator for type"
  msgstr ""
  
! #: cp/typeck.cc:7663
  msgid "no post-decrement operator for type"
  msgstr ""
  
--- 21921,22015 ----
  msgid "candidates are:"
  msgstr ""
  
! #: cp/rtti.cc:589
  #, fuzzy
  msgid "target is not pointer or reference to class"
  msgstr "Ð�Ðµ Ð¼Ð°Ð³Ñƒ Ð·Ð½Ð°Ð¹Ñ�Ñ†Ñ– Ñ„Ð°Ð¹Ð» Ð´Ð»Ñ� ÐºÐ»Ð°Ñ�Ð° %s."
  
! #: cp/rtti.cc:594
  #, fuzzy
  msgid "target is not pointer or reference to complete type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/rtti.cc:600
  msgid "target is not pointer or reference"
  msgstr ""
  
! #: cp/rtti.cc:616
  msgid "source is not a pointer"
  msgstr ""
  
! #: cp/rtti.cc:621
  msgid "source is not a pointer to class"
  msgstr ""
  
! #: cp/rtti.cc:626
  #, fuzzy
  msgid "source is a pointer to incomplete type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/rtti.cc:639
  msgid "source is not of class type"
  msgstr ""
  
! #: cp/rtti.cc:644
  #, fuzzy
  #| msgid "`%s' has an incomplete type"
  msgid "source is of incomplete class type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/rtti.cc:655
  msgid "conversion casts away constness"
  msgstr ""
  
! #: cp/rtti.cc:817
  msgid "source type is not polymorphic"
  msgstr ""
  
! #: cp/typeck.cc:7640 c/c-typeck.cc:5304
  #, gcc-internal-format
  msgid "wrong type argument to unary minus"
  msgstr ""
  
! #: cp/typeck.cc:7641 c/c-typeck.cc:5290
  #, gcc-internal-format
  msgid "wrong type argument to unary plus"
  msgstr ""
  
! #: cp/typeck.cc:7668 c/c-typeck.cc:5349
  #, gcc-internal-format
  msgid "wrong type argument to bit-complement"
  msgstr ""
  
! #: cp/typeck.cc:7688 c/c-typeck.cc:5357
  #, gcc-internal-format
  msgid "wrong type argument to abs"
  msgstr ""
  
! #: cp/typeck.cc:7700 c/c-typeck.cc:5379
  #, gcc-internal-format
  msgid "wrong type argument to conjugation"
  msgstr ""
  
! #: cp/typeck.cc:7724
  #, fuzzy
  #| msgid "too many arguments to function"
  msgid "in argument to unary !"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/typeck.cc:7773
  msgid "no pre-increment operator for type"
  msgstr ""
  
! #: cp/typeck.cc:7775
  msgid "no post-increment operator for type"
  msgstr ""
  
! #: cp/typeck.cc:7777
  msgid "no pre-decrement operator for type"
  msgstr ""
  
! #: cp/typeck.cc:7779
  msgid "no post-decrement operator for type"
  msgstr ""
  
*************** msgstr ""
*** 22137,22143 ****
  msgid "Unsigned:"
  msgstr ""
  
! #: fortran/expr.cc:3856
  msgid "array assignment"
  msgstr ""
  
--- 22148,22154 ----
  msgid "Unsigned:"
  msgstr ""
  
! #: fortran/expr.cc:3960
  msgid "array assignment"
  msgstr ""
  
*************** msgstr ""
*** 22167,22173 ****
  msgid "Driving:"
  msgstr "ÑƒÐ²Ð°Ð³Ð°:"
  
! #: fortran/interface.cc:3905 fortran/intrinsic.cc:4662
  msgid "actual argument to INTENT = OUT/INOUT"
  msgstr ""
  
--- 22178,22184 ----
  msgid "Driving:"
  msgstr "ÑƒÐ²Ð°Ð³Ð°:"
  
! #: fortran/interface.cc:3926 fortran/intrinsic.cc:4662
  msgid "actual argument to INTENT = OUT/INOUT"
  msgstr ""
  
*************** msgstr ""
*** 22215,22232 ****
  msgid "unsigned"
  msgstr ""
  
! #: fortran/io.cc:1873
  #, c-format
  msgid "%s tag"
  msgstr ""
  
! #: fortran/io.cc:3364
  msgid "internal unit in WRITE"
  msgstr ""
  
  #. For INQUIRE, all tags except FILE, ID and UNIT are variable definition
  #. contexts.  Thus, use an extended RESOLVE_TAG macro for that.
! #: fortran/io.cc:4725
  #, c-format
  msgid "%s tag with INQUIRE"
  msgstr ""
--- 22226,22243 ----
  msgid "unsigned"
  msgstr ""
  
! #: fortran/io.cc:1875
  #, c-format
  msgid "%s tag"
  msgstr ""
  
! #: fortran/io.cc:3366
  msgid "internal unit in WRITE"
  msgstr ""
  
  #. For INQUIRE, all tags except FILE, ID and UNIT are variable definition
  #. contexts.  Thus, use an extended RESOLVE_TAG macro for that.
! #: fortran/io.cc:4727
  #, c-format
  msgid "%s tag with INQUIRE"
  msgstr ""
*************** msgstr ""
*** 22341,22351 ****
  msgid "implied END DO"
  msgstr ""
  
! #: fortran/parse.cc:2523 fortran/resolve.cc:13586
  msgid "assignment"
  msgstr ""
  
! #: fortran/parse.cc:2526 fortran/resolve.cc:13652 fortran/resolve.cc:13655
  msgid "pointer assignment"
  msgstr ""
  
--- 22352,22362 ----
  msgid "implied END DO"
  msgstr ""
  
! #: fortran/parse.cc:2523 fortran/resolve.cc:13576
  msgid "assignment"
  msgstr ""
  
! #: fortran/parse.cc:2526 fortran/resolve.cc:13642 fortran/resolve.cc:13645
  msgid "pointer assignment"
  msgstr ""
  
*************** msgstr ""
*** 22353,22510 ****
  msgid "simple IF"
  msgstr ""
  
! #: fortran/resolve.cc:2464 fortran/resolve.cc:2659
  msgid "elemental procedure"
  msgstr ""
  
! #: fortran/resolve.cc:2562
  #, fuzzy
  #| msgid "no arguments"
  msgid "allocatable argument"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: fortran/resolve.cc:2567
  #, fuzzy
  #| msgid "no arguments"
  msgid "asynchronous argument"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: fortran/resolve.cc:2572
  #, fuzzy
  #| msgid "no arguments"
  msgid "optional argument"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: fortran/resolve.cc:2577
  #, fuzzy
  #| msgid "no arguments"
  msgid "pointer argument"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: fortran/resolve.cc:2582
  #, fuzzy
  #| msgid "no arguments"
  msgid "target argument"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: fortran/resolve.cc:2587
  #, fuzzy
  #| msgid "no arguments"
  msgid "value argument"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: fortran/resolve.cc:2592
  #, fuzzy
  #| msgid "no arguments"
  msgid "volatile argument"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: fortran/resolve.cc:2597
  msgid "assumed-shape argument"
  msgstr ""
  
! #: fortran/resolve.cc:2602
  #, fuzzy
  #| msgid "no arguments"
  msgid "assumed-rank argument"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: fortran/resolve.cc:2607
  #, fuzzy
  #| msgid "no arguments"
  msgid "coarray argument"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: fortran/resolve.cc:2612
  msgid "parametrized derived type argument"
  msgstr ""
  
! #: fortran/resolve.cc:2617
  #, fuzzy
  #| msgid "no arguments"
  msgid "polymorphic argument"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: fortran/resolve.cc:2622
  msgid "NO_ARG_CHECK attribute"
  msgstr ""
  
  #. As assumed-type is unlimited polymorphic (cf. above).
  #. See also TS 29113, Note 6.1.
! #: fortran/resolve.cc:2629
  msgid "assumed-type argument"
  msgstr ""
  
! #: fortran/resolve.cc:2640
  msgid "array result"
  msgstr ""
  
! #: fortran/resolve.cc:2645
  msgid "pointer or allocatable result"
  msgstr ""
  
! #: fortran/resolve.cc:2652
  msgid "result with non-constant character length"
  msgstr ""
  
! #: fortran/resolve.cc:2664
  msgid "bind(c) procedure"
  msgstr ""
  
! #: fortran/resolve.cc:8002
  msgid "Loop variable"
  msgstr ""
  
! #: fortran/resolve.cc:8006
  msgid "iterator variable"
  msgstr ""
  
! #: fortran/resolve.cc:8010
  msgid "Start expression in DO loop"
  msgstr ""
  
! #: fortran/resolve.cc:8014
  msgid "End expression in DO loop"
  msgstr ""
  
! #: fortran/resolve.cc:8018
  msgid "Step expression in DO loop"
  msgstr ""
  
! #: fortran/resolve.cc:8636 fortran/resolve.cc:8639
  msgid "DEALLOCATE object"
  msgstr ""
  
! #: fortran/resolve.cc:9063 fortran/resolve.cc:9066
  msgid "ALLOCATE object"
  msgstr ""
  
! #: fortran/resolve.cc:9303 fortran/resolve.cc:11450 fortran/resolve.cc:11571
  msgid "STAT variable"
  msgstr ""
  
! #: fortran/resolve.cc:9354 fortran/resolve.cc:11462 fortran/resolve.cc:11583
  msgid "ERRMSG variable"
  msgstr ""
  
! #: fortran/resolve.cc:11258
  msgid "item in READ"
  msgstr ""
  
! #: fortran/resolve.cc:11474
  msgid "ACQUIRED_LOCK variable"
  msgstr ""
  
! #: fortran/trans-array.cc:2058
  #, c-format
  msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
  msgstr ""
  
! #: fortran/trans-array.cc:6629
  msgid "Integer overflow when calculating the amount of memory to allocate"
  msgstr ""
  
! #: fortran/trans-array.cc:10933
  #, c-format
  msgid "The value of the PDT LEN parameter '%s' does not agree with that in the dummy declaration"
  msgstr ""
--- 22364,22521 ----
  msgid "simple IF"
  msgstr ""
  
! #: fortran/resolve.cc:2465 fortran/resolve.cc:2660
  msgid "elemental procedure"
  msgstr ""
  
! #: fortran/resolve.cc:2563
  #, fuzzy
  #| msgid "no arguments"
  msgid "allocatable argument"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: fortran/resolve.cc:2568
  #, fuzzy
  #| msgid "no arguments"
  msgid "asynchronous argument"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: fortran/resolve.cc:2573
  #, fuzzy
  #| msgid "no arguments"
  msgid "optional argument"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: fortran/resolve.cc:2578
  #, fuzzy
  #| msgid "no arguments"
  msgid "pointer argument"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: fortran/resolve.cc:2583
  #, fuzzy
  #| msgid "no arguments"
  msgid "target argument"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: fortran/resolve.cc:2588
  #, fuzzy
  #| msgid "no arguments"
  msgid "value argument"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: fortran/resolve.cc:2593
  #, fuzzy
  #| msgid "no arguments"
  msgid "volatile argument"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: fortran/resolve.cc:2598
  msgid "assumed-shape argument"
  msgstr ""
  
! #: fortran/resolve.cc:2603
  #, fuzzy
  #| msgid "no arguments"
  msgid "assumed-rank argument"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: fortran/resolve.cc:2608
  #, fuzzy
  #| msgid "no arguments"
  msgid "coarray argument"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: fortran/resolve.cc:2613
  msgid "parametrized derived type argument"
  msgstr ""
  
! #: fortran/resolve.cc:2618
  #, fuzzy
  #| msgid "no arguments"
  msgid "polymorphic argument"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: fortran/resolve.cc:2623
  msgid "NO_ARG_CHECK attribute"
  msgstr ""
  
  #. As assumed-type is unlimited polymorphic (cf. above).
  #. See also TS 29113, Note 6.1.
! #: fortran/resolve.cc:2630
  msgid "assumed-type argument"
  msgstr ""
  
! #: fortran/resolve.cc:2641
  msgid "array result"
  msgstr ""
  
! #: fortran/resolve.cc:2646
  msgid "pointer or allocatable result"
  msgstr ""
  
! #: fortran/resolve.cc:2653
  msgid "result with non-constant character length"
  msgstr ""
  
! #: fortran/resolve.cc:2665
  msgid "bind(c) procedure"
  msgstr ""
  
! #: fortran/resolve.cc:7975
  msgid "Loop variable"
  msgstr ""
  
! #: fortran/resolve.cc:7979
  msgid "iterator variable"
  msgstr ""
  
! #: fortran/resolve.cc:7983
  msgid "Start expression in DO loop"
  msgstr ""
  
! #: fortran/resolve.cc:7987
  msgid "End expression in DO loop"
  msgstr ""
  
! #: fortran/resolve.cc:7991
  msgid "Step expression in DO loop"
  msgstr ""
  
! #: fortran/resolve.cc:8609 fortran/resolve.cc:8612
  msgid "DEALLOCATE object"
  msgstr ""
  
! #: fortran/resolve.cc:9053 fortran/resolve.cc:9056
  msgid "ALLOCATE object"
  msgstr ""
  
! #: fortran/resolve.cc:9293 fortran/resolve.cc:11440 fortran/resolve.cc:11561
  msgid "STAT variable"
  msgstr ""
  
! #: fortran/resolve.cc:9344 fortran/resolve.cc:11452 fortran/resolve.cc:11573
  msgid "ERRMSG variable"
  msgstr ""
  
! #: fortran/resolve.cc:11248
  msgid "item in READ"
  msgstr ""
  
! #: fortran/resolve.cc:11464
  msgid "ACQUIRED_LOCK variable"
  msgstr ""
  
! #: fortran/trans-array.cc:2061
  #, c-format
  msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
  msgstr ""
  
! #: fortran/trans-array.cc:6631
  msgid "Integer overflow when calculating the amount of memory to allocate"
  msgstr ""
  
! #: fortran/trans-array.cc:10935
  #, c-format
  msgid "The value of the PDT LEN parameter '%s' does not agree with that in the dummy declaration"
  msgstr ""
*************** msgstr ""
*** 22519,22530 ****
  msgid "Actual string length is shorter than the declared one for dummy argument '%s' (%ld/%ld)"
  msgstr ""
  
! #: fortran/trans-expr.cc:11373
  #, c-format
  msgid "Target of rank remapping is too small (%ld < %ld)"
  msgstr ""
  
! #: fortran/trans-expr.cc:13068
  msgid "Assignment of scalar to unallocated array"
  msgstr ""
  
--- 22530,22541 ----
  msgid "Actual string length is shorter than the declared one for dummy argument '%s' (%ld/%ld)"
  msgstr ""
  
! #: fortran/trans-expr.cc:11386
  #, c-format
  msgid "Target of rank remapping is too small (%ld < %ld)"
  msgstr ""
  
! #: fortran/trans-expr.cc:13081
  msgid "Assignment of scalar to unallocated array"
  msgstr ""
  
*************** msgstr ""
*** 22533,22613 ****
  msgid "Unequal character lengths (%ld/%ld) in %s"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6387
  #, c-format
  msgid "POS argument (%ld) out of range 0:%ld in intrinsic BTEST"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6674
  #, c-format
  msgid "POS argument (%ld) out of range 0:%ld in intrinsic %s"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6722
  #, c-format
  msgid "POS argument (%ld) out of range 0:%ld in intrinsic IBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6732
  #, c-format
  msgid "LEN argument (%ld) out of range 0:%ld in intrinsic IBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6739
  #, c-format
  msgid "POS(%ld)+LEN(%ld)>BIT_SIZE(%ld) in intrinsic IBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6831
  #, c-format
  msgid "SHIFT argument (%ld) out of range 0:%ld in intrinsic %s"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6899
  #, c-format
  msgid "SHIFT argument (%ld) out of range -%ld:%ld in intrinsic ISHFT"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6979
  #, c-format
  msgid "SIZE argument (%ld) out of range 1:%ld in intrinsic ISHFTC"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6987 fortran/trans-intrinsic.cc:7032
  #, c-format
  msgid "SHIFT argument (%ld) out of range -%ld:%ld in intrinsic ISHFTC"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:9383
  #, c-format
  msgid "Argument NCOPIES of REPEAT intrinsic is negative (its value is %ld)"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:9415
  msgid "Argument NCOPIES of REPEAT intrinsic is too large"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12882
  #, c-format
  msgid "FROMPOS argument (%ld) out of range 0:%d in intrinsic MVBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12894
  #, c-format
  msgid "LEN argument (%ld) out of range 0:%d in intrinsic MVBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12906
  #, c-format
  msgid "TOPOS argument (%ld) out of range 0:%d in intrinsic MVBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12918
  #, c-format
  msgid "FROMPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsic MVBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12926
  #, c-format
  msgid "TOPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsic MVBITS"
  msgstr ""
--- 22544,22624 ----
  msgid "Unequal character lengths (%ld/%ld) in %s"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6366
  #, c-format
  msgid "POS argument (%ld) out of range 0:%ld in intrinsic BTEST"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6653
  #, c-format
  msgid "POS argument (%ld) out of range 0:%ld in intrinsic %s"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6701
  #, c-format
  msgid "POS argument (%ld) out of range 0:%ld in intrinsic IBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6711
  #, c-format
  msgid "LEN argument (%ld) out of range 0:%ld in intrinsic IBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6718
  #, c-format
  msgid "POS(%ld)+LEN(%ld)>BIT_SIZE(%ld) in intrinsic IBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6810
  #, c-format
  msgid "SHIFT argument (%ld) out of range 0:%ld in intrinsic %s"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6878
  #, c-format
  msgid "SHIFT argument (%ld) out of range -%ld:%ld in intrinsic ISHFT"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6958
  #, c-format
  msgid "SIZE argument (%ld) out of range 1:%ld in intrinsic ISHFTC"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6966 fortran/trans-intrinsic.cc:7011
  #, c-format
  msgid "SHIFT argument (%ld) out of range -%ld:%ld in intrinsic ISHFTC"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:9362
  #, c-format
  msgid "Argument NCOPIES of REPEAT intrinsic is negative (its value is %ld)"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:9394
  msgid "Argument NCOPIES of REPEAT intrinsic is too large"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12861
  #, c-format
  msgid "FROMPOS argument (%ld) out of range 0:%d in intrinsic MVBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12873
  #, c-format
  msgid "LEN argument (%ld) out of range 0:%d in intrinsic MVBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12885
  #, c-format
  msgid "TOPOS argument (%ld) out of range 0:%d in intrinsic MVBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12897
  #, c-format
  msgid "FROMPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsic MVBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12905
  #, c-format
  msgid "TOPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsic MVBITS"
  msgstr ""
*************** msgstr ""
*** 22720,22727 ****
  msgid "expected boolean type"
  msgstr ""
  
! #: go/gofrontend/expressions.cc:5610 c/c-parser.cc:19534 c/c-parser.cc:19541
! #: cp/parser.cc:41864 cp/parser.cc:41871
  #, gcc-internal-format
  msgid "expected integer"
  msgstr ""
--- 22731,22738 ----
  msgid "expected boolean type"
  msgstr ""
  
! #: go/gofrontend/expressions.cc:5610 c/c-parser.cc:19579 c/c-parser.cc:19586
! #: cp/parser.cc:41923 cp/parser.cc:41930
  #, gcc-internal-format
  msgid "expected integer"
  msgstr ""
*************** msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
*** 22791,22797 ****
  #: go/gofrontend/expressions.cc:11749 go/gofrontend/expressions.cc:11844
  #: go/gofrontend/expressions.cc:14020 go/gofrontend/expressions.cc:14149
  #: go/gofrontend/expressions.cc:14163 go/gofrontend/expressions.cc:14184
! #: cp/pt.cc:9466
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to function"
  msgid "too many arguments"
--- 22802,22808 ----
  #: go/gofrontend/expressions.cc:11749 go/gofrontend/expressions.cc:11844
  #: go/gofrontend/expressions.cc:14020 go/gofrontend/expressions.cc:14149
  #: go/gofrontend/expressions.cc:14163 go/gofrontend/expressions.cc:14184
! #: cp/pt.cc:9471
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to function"
  msgid "too many arguments"
*************** msgstr ""
*** 23219,23225 ****
  msgid "target OS does not support unaligned accesses"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: config/c6x/c6x.h:346 config/nvptx/nvptx.h:193
  #, fuzzy, gcc-internal-format
  msgid "profiling is not yet implemented for this architecture"
  msgstr "__buitin_saveregs Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð° Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ð°Ð¹"
--- 23230,23236 ----
  msgid "target OS does not support unaligned accesses"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: config/c6x/c6x.h:346 config/nvptx/nvptx.h:194
  #, fuzzy, gcc-internal-format
  msgid "profiling is not yet implemented for this architecture"
  msgstr "__buitin_saveregs Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð° Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ð°Ð¹"
*************** msgstr "-pipe Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð
*** 23453,23479 ****
  msgid "%<-mrelax%> is only supported for RTP PIC"
  msgstr ""
  
! #: cobol/parse_ante.h:1728
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Global declarative %s for %s"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cobol/parse_ante.h:2456 cobol/genapi.cc:5784
! #, gcc-internal-format, gfc-internal-format
! msgid "%s:%d: invalid symbol_type_t %d"
! msgstr ""
! 
! #: cobol/parse_ante.h:2798
! #, gcc-internal-format, gfc-internal-format
! msgid "%s:%d: no symbol '%s' found"
  msgstr ""
  
! #: cobol/parse_util.h:351
! #, gcc-internal-format, gfc-internal-format
! msgid "%s: intrinsic function  %s not found"
  msgstr ""
  
! #: cobol/parse_util.h:383
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "%s: invalid function descr type '%c'"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
--- 23464,23491 ----
  msgid "%<-mrelax%> is only supported for RTP PIC"
  msgstr ""
  
! #: cobol/exceptg.h:80
! #, gcc-internal-format, gfc-internal-format
! msgid "CDF: exception '%s'"
! msgstr ""
! 
! #: cobol/parse_ante.h:1592
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Global declarative %s for %s"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cobol/parse_ante.h:2385 cobol/symbols.h:134 cobol/genapi.cc:6470
! #: cobol/util.cc:288 cobol/util.cc:337 cobol/util.cc:637
! #, gcc-internal-format
! msgid "%s:%d: invalid %<symbol_type_t%> %d"
  msgstr ""
  
! #: cobol/parse_util.h:360
! #, gcc-internal-format
! msgid "%s: intrinsic function %qs not found"
  msgstr ""
  
! #: cobol/parse_util.h:392
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "%s: invalid function descr type '%c'"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
*************** msgid "scan.o: %s"
*** 23484,23490 ****
  msgstr ""
  
  #. A general purpose syntax error.
! #: fortran/gfortran.h:3560 fortran/io.cc:3727 fortran/io.cc:4413
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in %s statement at %C"
  msgstr ""
--- 23496,23502 ----
  msgstr ""
  
  #. A general purpose syntax error.
! #: fortran/gfortran.h:3563 fortran/io.cc:3729 fortran/io.cc:4415
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in %s statement at %C"
  msgstr ""
*************** msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� \"%s\" Ð
*** 23579,23585 ****
  #: c-family/c.opt:89 c-family/c.opt:185 c-family/c.opt:188 c-family/c.opt:230
  #: c-family/c.opt:234 c-family/c.opt:246 c-family/c.opt:2482
  #: c-family/c.opt:2490 config/darwin.opt:30 common.opt:329 common.opt:332
! #: common.opt:429 common.opt:3801
  #, fuzzy, gcc-internal-format
  #| msgid "missing white space after number '%.*s'"
  msgid "missing filename after %qs"
--- 23591,23597 ----
  #: c-family/c.opt:89 c-family/c.opt:185 c-family/c.opt:188 c-family/c.opt:230
  #: c-family/c.opt:234 c-family/c.opt:246 c-family/c.opt:2482
  #: c-family/c.opt:2490 config/darwin.opt:30 common.opt:329 common.opt:332
! #: common.opt:429 common.opt:3798
  #, fuzzy, gcc-internal-format
  #| msgid "missing white space after number '%.*s'"
  msgid "missing filename after %qs"
*************** msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ð°Ñ� Ð½Ð°Ð
*** 23682,23688 ****
  msgid "unrecognized scalar storage order value %qs"
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ�Ñ�ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cobol/lang.opt:46
  #, fuzzy, gcc-internal-format
  #| msgid "unrecognized section name \"%s\""
  msgid "Unrecognized COBOL dialect name: %qs"
--- 23694,23700 ----
  msgid "unrecognized scalar storage order value %qs"
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ�Ñ�ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cobol/lang.opt:51
  #, fuzzy, gcc-internal-format
  #| msgid "unrecognized section name \"%s\""
  msgid "Unrecognized COBOL dialect name: %qs"
*************** msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ€
*** 23863,23944 ****
  msgid "unknown LTO partitioning model %qs"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ñ‹ Ñ€Ñ�Ð¶Ñ‹Ð¼ Ð¼Ð°ÑˆÑ‹Ð½Ñ‹ \"%s\""
  
! #: common.opt:2406
  #, fuzzy, gcc-internal-format
  msgid "targets missing after %qs"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� \"%s\" Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½"
  
! #: common.opt:2409
  #, fuzzy, gcc-internal-format
  msgid "options or targets=options missing after %qs"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� \"%s\" Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½"
  
! #: common.opt:2417
  #, gcc-internal-format
  msgid "unknown offload ABI %qs"
  msgstr ""
  
! #: common.opt:2426
  #, fuzzy, gcc-internal-format
  msgid "option missing after %qs"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� \"%s\" Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½"
  
! #: common.opt:2603
  #, gcc-internal-format
  msgid "unknown profile reproducibility method %qs"
  msgstr ""
  
! #: common.opt:2619
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown profile update method %qs"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð°: %s"
  
! #: common.opt:2728
  #, fuzzy, gcc-internal-format
  #| msgid "unknown machine mode `%s'"
  msgid "unknown Live-Patching Level %qs"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ñ‹ Ñ€Ñ�Ð¶Ñ‹Ð¼ Ð¼Ð°ÑˆÑ‹Ð½Ñ‹ \"%s\""
  
! #: common.opt:2761
  #, gcc-internal-format
  msgid "unknown basic block reordering algorithm %qs"
  msgstr ""
  
! #: common.opt:3097
  #, fuzzy, gcc-internal-format
  #| msgid "unknown machine mode `%s'"
  msgid "unknown TLS model %qs"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ñ‹ Ñ€Ñ�Ð¶Ñ‹Ð¼ Ð¼Ð°ÑˆÑ‹Ð½Ñ‹ \"%s\""
  
! #: common.opt:3130
  #, fuzzy, gcc-internal-format
  msgid "unknown trampoline implementation %qs"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð°: %s\n"
  
! #: common.opt:3452
  #, fuzzy, gcc-internal-format
  #| msgid "unknown machine mode `%s'"
  msgid "unknown vectorizer cost model %qs"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ñ‹ Ñ€Ñ�Ð¶Ñ‹Ð¼ Ð¼Ð°ÑˆÑ‹Ð½Ñ‹ \"%s\""
  
! #: common.opt:3483
  #, gcc-internal-format
  msgid "unrecognized automatic variable initialization type %qs"
  msgstr ""
  
! #: common.opt:3509
  #, fuzzy, gcc-internal-format
  #| msgid "unrecognized section name \"%s\""
  msgid "unrecognized visibility value %qs"
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ�Ñ�ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: common.opt:3528
  #, gcc-internal-format
  msgid "unknown vtable verify initialization priority %qs"
  msgstr ""
  
! #: common.opt:3584
  #, fuzzy, gcc-internal-format
  msgid "unrecognized zero init padding bits kind %qs"
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"-%s\""
--- 23875,23956 ----
  msgid "unknown LTO partitioning model %qs"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ñ‹ Ñ€Ñ�Ð¶Ñ‹Ð¼ Ð¼Ð°ÑˆÑ‹Ð½Ñ‹ \"%s\""
  
! #: common.opt:2403
  #, fuzzy, gcc-internal-format
  msgid "targets missing after %qs"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� \"%s\" Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½"
  
! #: common.opt:2406
  #, fuzzy, gcc-internal-format
  msgid "options or targets=options missing after %qs"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� \"%s\" Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½"
  
! #: common.opt:2414
  #, gcc-internal-format
  msgid "unknown offload ABI %qs"
  msgstr ""
  
! #: common.opt:2423
  #, fuzzy, gcc-internal-format
  msgid "option missing after %qs"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� \"%s\" Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½"
  
! #: common.opt:2600
  #, gcc-internal-format
  msgid "unknown profile reproducibility method %qs"
  msgstr ""
  
! #: common.opt:2616
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown profile update method %qs"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð°: %s"
  
! #: common.opt:2725
  #, fuzzy, gcc-internal-format
  #| msgid "unknown machine mode `%s'"
  msgid "unknown Live-Patching Level %qs"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ñ‹ Ñ€Ñ�Ð¶Ñ‹Ð¼ Ð¼Ð°ÑˆÑ‹Ð½Ñ‹ \"%s\""
  
! #: common.opt:2758
  #, gcc-internal-format
  msgid "unknown basic block reordering algorithm %qs"
  msgstr ""
  
! #: common.opt:3094
  #, fuzzy, gcc-internal-format
  #| msgid "unknown machine mode `%s'"
  msgid "unknown TLS model %qs"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ñ‹ Ñ€Ñ�Ð¶Ñ‹Ð¼ Ð¼Ð°ÑˆÑ‹Ð½Ñ‹ \"%s\""
  
! #: common.opt:3127
  #, fuzzy, gcc-internal-format
  msgid "unknown trampoline implementation %qs"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð°: %s\n"
  
! #: common.opt:3449
  #, fuzzy, gcc-internal-format
  #| msgid "unknown machine mode `%s'"
  msgid "unknown vectorizer cost model %qs"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ñ‹ Ñ€Ñ�Ð¶Ñ‹Ð¼ Ð¼Ð°ÑˆÑ‹Ð½Ñ‹ \"%s\""
  
! #: common.opt:3480
  #, gcc-internal-format
  msgid "unrecognized automatic variable initialization type %qs"
  msgstr ""
  
! #: common.opt:3506
  #, fuzzy, gcc-internal-format
  #| msgid "unrecognized section name \"%s\""
  msgid "unrecognized visibility value %qs"
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ�Ñ�ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: common.opt:3525
  #, gcc-internal-format
  msgid "unknown vtable verify initialization priority %qs"
  msgstr ""
  
! #: common.opt:3581
  #, fuzzy, gcc-internal-format
  msgid "unrecognized zero init padding bits kind %qs"
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"-%s\""
*************** msgstr ""
*** 23977,23983 ****
  
  #: attribs.cc:538 c-family/c-attribs.cc:1053 c-family/c-attribs.cc:2762
  #: c-family/c-attribs.cc:3318 c-family/c-attribs.cc:5282
! #: c-family/c-attribs.cc:5375 cp/decl.cc:17061 cp/decl.cc:17112
  #: cp/friend.cc:319 cp/tree.cc:5394
  #, fuzzy, gcc-internal-format
  msgid "previous declaration here"
--- 23989,23995 ----
  
  #: attribs.cc:538 c-family/c-attribs.cc:1053 c-family/c-attribs.cc:2762
  #: c-family/c-attribs.cc:3318 c-family/c-attribs.cc:5282
! #: c-family/c-attribs.cc:5375 cp/decl.cc:17059 cp/decl.cc:17110
  #: cp/friend.cc:319 cp/tree.cc:5394
  #, fuzzy, gcc-internal-format
  msgid "previous declaration here"
*************** msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€
*** 23996,24002 ****
  msgid "%<%E::%E%> scoped attribute directive ignored"
  msgstr ""
  
! #: attribs.cc:761 c/c-parser.cc:2144 cp/cp-gimplify.cc:3704
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments specified for %qE attribute"
--- 24008,24014 ----
  msgid "%<%E::%E%> scoped attribute directive ignored"
  msgstr ""
  
! #: attribs.cc:761 c/c-parser.cc:2189 cp/cp-gimplify.cc:3709
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments specified for %qE attribute"
*************** msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ
*** 24007,24013 ****
  msgid "expected %i or more, found %i"
  msgstr ""
  
! #: attribs.cc:767 c/c-parser.cc:2147 cp/cp-gimplify.cc:3706
  #, gcc-internal-format, gfc-internal-format
  msgid "expected %i, found %i"
  msgstr ""
--- 24019,24025 ----
  msgid "expected %i or more, found %i"
  msgstr ""
  
! #: attribs.cc:767 c/c-parser.cc:2192 cp/cp-gimplify.cc:3711
  #, gcc-internal-format, gfc-internal-format
  msgid "expected %i, found %i"
  msgstr ""
*************** msgstr ""
*** 24074,24095 ****
  #: c-family/c-attribs.cc:6073 c-family/c-attribs.cc:6105
  #: c-family/c-attribs.cc:6147 c-family/c-attribs.cc:6163
  #: c-family/c-attribs.cc:6335 c-family/c-attribs.cc:6347
! #: c-family/c-common.cc:6235 c-family/c-common.cc:6238 config/darwin.cc:2208
  #: config/arm/arm.cc:7515 config/arm/arm.cc:7542 config/arm/arm.cc:7559
  #: config/avr/avr.cc:11304 config/csky/csky.cc:6498 config/csky/csky.cc:6519
  #: config/h8300/h8300.cc:4972 config/h8300/h8300.cc:4996
  #: config/i386/i386-options.cc:3774 config/i386/i386-options.cc:3932
  #: config/i386/i386-options.cc:4164 config/i386/i386-options.cc:4194
  #: config/ia64/ia64.cc:799 config/loongarch/loongarch.cc:8197
! #: config/rs6000/rs6000.cc:20745 ada/gcc-interface/utils.cc:6900
! #: ada/gcc-interface/utils.cc:6916 ada/gcc-interface/utils.cc:7013
! #: ada/gcc-interface/utils.cc:7030 ada/gcc-interface/utils.cc:7047
! #: ada/gcc-interface/utils.cc:7062 ada/gcc-interface/utils.cc:7078
! #: ada/gcc-interface/utils.cc:7104 ada/gcc-interface/utils.cc:7173
! #: ada/gcc-interface/utils.cc:7200 ada/gcc-interface/utils.cc:7245
! #: ada/gcc-interface/utils.cc:7266 ada/gcc-interface/utils.cc:7314
! #: ada/gcc-interface/utils.cc:7330 ada/gcc-interface/utils.cc:7364
! #: c/c-decl.cc:4952 c/c-decl.cc:4955 c/c-decl.cc:4982 c/c-parser.cc:6097
  #: cp/tree.cc:5062 cp/tree.cc:5561 d/d-attribs.cc:483 d/d-attribs.cc:702
  #: d/d-attribs.cc:723 d/d-attribs.cc:739 d/d-attribs.cc:756 d/d-attribs.cc:788
  #: d/d-attribs.cc:917 d/d-attribs.cc:976 d/d-attribs.cc:992 d/d-attribs.cc:1008
--- 24086,24107 ----
  #: c-family/c-attribs.cc:6073 c-family/c-attribs.cc:6105
  #: c-family/c-attribs.cc:6147 c-family/c-attribs.cc:6163
  #: c-family/c-attribs.cc:6335 c-family/c-attribs.cc:6347
! #: c-family/c-common.cc:6256 c-family/c-common.cc:6259 config/darwin.cc:2208
  #: config/arm/arm.cc:7515 config/arm/arm.cc:7542 config/arm/arm.cc:7559
  #: config/avr/avr.cc:11304 config/csky/csky.cc:6498 config/csky/csky.cc:6519
  #: config/h8300/h8300.cc:4972 config/h8300/h8300.cc:4996
  #: config/i386/i386-options.cc:3774 config/i386/i386-options.cc:3932
  #: config/i386/i386-options.cc:4164 config/i386/i386-options.cc:4194
  #: config/ia64/ia64.cc:799 config/loongarch/loongarch.cc:8197
! #: config/rs6000/rs6000.cc:20745 ada/gcc-interface/utils.cc:6902
! #: ada/gcc-interface/utils.cc:6918 ada/gcc-interface/utils.cc:7015
! #: ada/gcc-interface/utils.cc:7032 ada/gcc-interface/utils.cc:7049
! #: ada/gcc-interface/utils.cc:7064 ada/gcc-interface/utils.cc:7080
! #: ada/gcc-interface/utils.cc:7106 ada/gcc-interface/utils.cc:7175
! #: ada/gcc-interface/utils.cc:7202 ada/gcc-interface/utils.cc:7247
! #: ada/gcc-interface/utils.cc:7268 ada/gcc-interface/utils.cc:7316
! #: ada/gcc-interface/utils.cc:7332 ada/gcc-interface/utils.cc:7366
! #: c/c-decl.cc:4952 c/c-decl.cc:4955 c/c-decl.cc:4982 c/c-parser.cc:6142
  #: cp/tree.cc:5062 cp/tree.cc:5561 d/d-attribs.cc:483 d/d-attribs.cc:702
  #: d/d-attribs.cc:723 d/d-attribs.cc:739 d/d-attribs.cc:756 d/d-attribs.cc:788
  #: d/d-attribs.cc:917 d/d-attribs.cc:976 d/d-attribs.cc:992 d/d-attribs.cc:1008
*************** msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€
*** 24112,24119 ****
  msgid "missing %<target%> attribute for multi-versioned %qD"
  msgstr ""
  
! #: attribs.cc:1224 cp/decl.cc:1359 cp/decl.cc:2371 cp/decl.cc:2419
! #: cp/decl.cc:2435 cp/decl.cc:3134 cp/decl.cc:3586
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration of `%D'"
  msgid "previous declaration of %qD"
--- 24124,24131 ----
  msgid "missing %<target%> attribute for multi-versioned %qD"
  msgstr ""
  
! #: attribs.cc:1224 cp/decl.cc:1357 cp/decl.cc:2369 cp/decl.cc:2417
! #: cp/decl.cc:2433 cp/decl.cc:3132 cp/decl.cc:3584
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration of `%D'"
  msgid "previous declaration of %qD"
*************** msgstr "Ð½ÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð·Ð½Ð°Ð¹Ñ�ÑŒÑ
*** 24223,24229 ****
  msgid "offset %qwi outside bounds of constant string"
  msgstr ""
  
! #: builtins.cc:707 cp/name-lookup.cc:6938
  #, gcc-internal-format
  msgid "%qE declared here"
  msgstr ""
--- 24235,24241 ----
  msgid "offset %qwi outside bounds of constant string"
  msgstr ""
  
! #: builtins.cc:707 cp/name-lookup.cc:6941
  #, gcc-internal-format
  msgid "%qE declared here"
  msgstr ""
*************** msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼
*** 24331,24361 ****
  msgid "illegal argument 0 to %qs"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� \"%s\" Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½"
  
  #. All valid uses of __builtin_va_arg_pack () are removed during
  #. inlining.
! #: builtins.cc:8084 expr.cc:12464
  #, gcc-internal-format
  msgid "invalid use of %<__builtin_va_arg_pack ()%>"
  msgstr ""
  
  #. All valid uses of __builtin_va_arg_pack_len () are removed during
  #. inlining.
! #: builtins.cc:8090
  #, gcc-internal-format
  msgid "invalid use of %<__builtin_va_arg_pack_len ()%>"
  msgstr ""
  
! #: builtins.cc:8379
  #, gcc-internal-format
  msgid "%<__builtin_longjmp%> second argument must be 1"
  msgstr ""
  
! #: builtins.cc:9343
  #, fuzzy, gcc-internal-format
  msgid "target format does not support infinity"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: builtins.cc:11402
  #, fuzzy, gcc-internal-format
  #| msgid "`va_start' used in function with fixed args"
  msgid "%<va_start%> used in function with fixed arguments"
--- 24343,24378 ----
  msgid "illegal argument 0 to %qs"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� \"%s\" Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½"
  
+ #: builtins.cc:7806 internal-fn.cc:4030
+ #, fuzzy, gcc-internal-format
+ msgid "third argument to %<crc%> builtins must be a constant"
+ msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
+ 
  #. All valid uses of __builtin_va_arg_pack () are removed during
  #. inlining.
! #: builtins.cc:8090 expr.cc:12464
  #, gcc-internal-format
  msgid "invalid use of %<__builtin_va_arg_pack ()%>"
  msgstr ""
  
  #. All valid uses of __builtin_va_arg_pack_len () are removed during
  #. inlining.
! #: builtins.cc:8096
  #, gcc-internal-format
  msgid "invalid use of %<__builtin_va_arg_pack_len ()%>"
  msgstr ""
  
! #: builtins.cc:8385
  #, gcc-internal-format
  msgid "%<__builtin_longjmp%> second argument must be 1"
  msgstr ""
  
! #: builtins.cc:9349
  #, fuzzy, gcc-internal-format
  msgid "target format does not support infinity"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: builtins.cc:11408
  #, fuzzy, gcc-internal-format
  #| msgid "`va_start' used in function with fixed args"
  msgid "%<va_start%> used in function with fixed arguments"
*************** msgstr ""
*** 24363,24402 ****
  "`va_start' Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ñ‹Ð²Ð°ÐµÑ†Ñ†Ð° Ñž Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð· Ð½Ñ�Ð·ÑŒÐ¼ÐµÐ½Ð½Ð°Ð¹\n"
  "           ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŽ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: builtins.cc:11410
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments to function %<va_start%>"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž, Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ… Ð´Ð»Ñ� Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
  
! #: builtins.cc:11425
  #, fuzzy, gcc-internal-format
  #| msgid "`__builtin_next_arg' called without an argument"
  msgid "%<__builtin_next_arg%> called without an argument"
  msgstr "\"__buitin_next_arg\" Ð²Ñ‹ÐºÐ»Ñ–ÐºÐ°ÐµÑ†Ñ†Ð° Ð±ÐµÐ· Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°"
  
! #: builtins.cc:11430
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments to function %<__builtin_next_arg%>"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž, Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ… Ð´Ð»Ñ� Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
  
! #: builtins.cc:11463
  #, gcc-internal-format
  msgid "second parameter of %<va_start%> not last named argument"
  msgstr ""
  
! #: builtins.cc:11476 c/c-parser.cc:11669
  #, gcc-internal-format
  msgid "undefined behavior when second parameter of %<va_start%> is declared with %<register%> storage"
  msgstr ""
  
! #: builtins.cc:11505
  #, fuzzy, gcc-internal-format
  msgid "first argument of %qD must be a pointer, second integer constant"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: builtins.cc:11518
  #, gcc-internal-format
  msgid "last argument of %qD is not integer constant between 0 and 3"
  msgstr ""
--- 24380,24419 ----
  "`va_start' Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ñ‹Ð²Ð°ÐµÑ†Ñ†Ð° Ñž Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð· Ð½Ñ�Ð·ÑŒÐ¼ÐµÐ½Ð½Ð°Ð¹\n"
  "           ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŽ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: builtins.cc:11416
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments to function %<va_start%>"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž, Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ… Ð´Ð»Ñ� Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
  
! #: builtins.cc:11431
  #, fuzzy, gcc-internal-format
  #| msgid "`__builtin_next_arg' called without an argument"
  msgid "%<__builtin_next_arg%> called without an argument"
  msgstr "\"__buitin_next_arg\" Ð²Ñ‹ÐºÐ»Ñ–ÐºÐ°ÐµÑ†Ñ†Ð° Ð±ÐµÐ· Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°"
  
! #: builtins.cc:11436
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments to function %<__builtin_next_arg%>"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž, Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ… Ð´Ð»Ñ� Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
  
! #: builtins.cc:11469
  #, gcc-internal-format
  msgid "second parameter of %<va_start%> not last named argument"
  msgstr ""
  
! #: builtins.cc:11482 c/c-parser.cc:11714
  #, gcc-internal-format
  msgid "undefined behavior when second parameter of %<va_start%> is declared with %<register%> storage"
  msgstr ""
  
! #: builtins.cc:11511
  #, fuzzy, gcc-internal-format
  msgid "first argument of %qD must be a pointer, second integer constant"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: builtins.cc:11524
  #, gcc-internal-format
  msgid "last argument of %qD is not integer constant between 0 and 3"
  msgstr ""
*************** msgstr ""
*** 24407,24418 ****
  msgid "cannot tail-call: %s"
  msgstr "Ð½ÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð·Ð½Ð°Ð¹Ñ�ÑŒÑ†Ñ– ÐºÐ»Ñ�Ñ� `%s'"
  
! #: calls.cc:2818
  #, gcc-internal-format
  msgid "function call has aggregate value"
  msgstr ""
  
! #: calls.cc:3561
  #, gcc-internal-format
  msgid "passing too large argument on stack"
  msgstr ""
--- 24424,24435 ----
  msgid "cannot tail-call: %s"
  msgstr "Ð½ÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð·Ð½Ð°Ð¹Ñ�ÑŒÑ†Ñ– ÐºÐ»Ñ�Ñ� `%s'"
  
! #: calls.cc:2819
  #, gcc-internal-format
  msgid "function call has aggregate value"
  msgstr ""
  
! #: calls.cc:3562
  #, gcc-internal-format
  msgid "passing too large argument on stack"
  msgstr ""
*************** msgstr ""
*** 24422,24539 ****
  msgid "%<verify_marked_backedges%> failed"
  msgstr ""
  
! #: cfgexpand.cc:2128
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%s' is too large"
  msgid "total size of local objects is too large"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð²ÐµÐ»ÑŒÐ¼Ñ– Ð²Ñ�Ð»Ñ–ÐºÑ–"
  
! #: cfgexpand.cc:2131 function.cc:1016 varasm.cc:2539
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%s' is too large"
  msgid "size of variable %q+D is too large"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð²ÐµÐ»ÑŒÐ¼Ñ– Ð²Ñ�Ð»Ñ–ÐºÑ–"
  
! #: cfgexpand.cc:2143
  #, gcc-internal-format
  msgid "cannot allocate stack for variable %q+D, naked function"
  msgstr ""
  
! #: cfgexpand.cc:3241
  #, fuzzy, gcc-internal-format
  msgid "too many alternatives in %<asm%>"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cfgexpand.cc:3248
  #, gcc-internal-format
  msgid "operand constraints for %<asm%> differ in number of alternatives"
  msgstr ""
  
! #: cfgexpand.cc:3270
  #, gcc-internal-format
  msgid "%<asm%> specifier for variable %qE conflicts with %<asm%> clobber list"
  msgstr ""
  
  #. ??? Diagnose during gimplification?
! #: cfgexpand.cc:3301
  #, gcc-internal-format
  msgid "PIC register clobbered by %qs in %<asm%>"
  msgstr ""
  
  #. ??? Diagnose during gimplification?
! #: cfgexpand.cc:3308
  #, gcc-internal-format
  msgid "the register %qs cannot be clobbered in %<asm%> for the current target"
  msgstr ""
  
! #: cfgexpand.cc:3321
  #, gcc-internal-format
  msgid "listing the stack pointer register %qs in a clobber list is deprecated"
  msgstr ""
  
! #: cfgexpand.cc:3323
  #, gcc-internal-format
  msgid "the value of the stack pointer after an %<asm%> statement must be the same as it was before the statement"
  msgstr ""
  
! #: cfgexpand.cc:3393 varasm.cc:1718
  #, gcc-internal-format
  msgid "more than %d operands in %<asm%>"
  msgstr ""
  
  #. ??? Diagnose during gimplification?
! #: cfgexpand.cc:3446
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown register name %qs in %<asm%>"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð°: %s"
  
! #: cfgexpand.cc:3518
  #, fuzzy, gcc-internal-format
  msgid "invalid hard register usage between output operands"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cfgexpand.cc:3545
  #, gcc-internal-format
  msgid "invalid hard register usage between output operand and matching constraint operand"
  msgstr ""
  
! #: cfgexpand.cc:3553
  #, gcc-internal-format
  msgid "invalid hard register usage between earlyclobber operand and input operand"
  msgstr ""
  
! #: cfgexpand.cc:3638 varasm.cc:1757
  #, gcc-internal-format, gfc-internal-format
  msgid "output number %d not directly addressable"
  msgstr ""
  
! #: cfgexpand.cc:3734 varasm.cc:1810
  #, gcc-internal-format
  msgid "%<asm%> operand %d probably does not match constraints"
  msgstr ""
  
! #: cfgexpand.cc:3927
  #, gcc-internal-format
  msgid "%<asm%> clobber conflict with output operand"
  msgstr ""
  
! #: cfgexpand.cc:3932
  #, gcc-internal-format
  msgid "%<asm%> clobber conflict with input operand"
  msgstr ""
  
! #: cfgexpand.cc:7029
  #, gcc-internal-format
  msgid "stack protector not protecting local variables: variable length buffer"
  msgstr ""
  
! #: cfgexpand.cc:7033
  #, gcc-internal-format, gfc-internal-format
  msgid "stack protector not protecting function: all local arrays are less than %d bytes long"
  msgstr ""
  
! #: cfgexpand.cc:7322
  #, gcc-internal-format
  msgid "patchable function entry %wu exceeds size %wu"
  msgstr ""
--- 24439,24556 ----
  msgid "%<verify_marked_backedges%> failed"
  msgstr ""
  
! #: cfgexpand.cc:2129
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%s' is too large"
  msgid "total size of local objects is too large"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð²ÐµÐ»ÑŒÐ¼Ñ– Ð²Ñ�Ð»Ñ–ÐºÑ–"
  
! #: cfgexpand.cc:2132 function.cc:1016 varasm.cc:2539
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%s' is too large"
  msgid "size of variable %q+D is too large"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð²ÐµÐ»ÑŒÐ¼Ñ– Ð²Ñ�Ð»Ñ–ÐºÑ–"
  
! #: cfgexpand.cc:2144
  #, gcc-internal-format
  msgid "cannot allocate stack for variable %q+D, naked function"
  msgstr ""
  
! #: cfgexpand.cc:3242
  #, fuzzy, gcc-internal-format
  msgid "too many alternatives in %<asm%>"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cfgexpand.cc:3249
  #, gcc-internal-format
  msgid "operand constraints for %<asm%> differ in number of alternatives"
  msgstr ""
  
! #: cfgexpand.cc:3271
  #, gcc-internal-format
  msgid "%<asm%> specifier for variable %qE conflicts with %<asm%> clobber list"
  msgstr ""
  
  #. ??? Diagnose during gimplification?
! #: cfgexpand.cc:3302
  #, gcc-internal-format
  msgid "PIC register clobbered by %qs in %<asm%>"
  msgstr ""
  
  #. ??? Diagnose during gimplification?
! #: cfgexpand.cc:3309
  #, gcc-internal-format
  msgid "the register %qs cannot be clobbered in %<asm%> for the current target"
  msgstr ""
  
! #: cfgexpand.cc:3322
  #, gcc-internal-format
  msgid "listing the stack pointer register %qs in a clobber list is deprecated"
  msgstr ""
  
! #: cfgexpand.cc:3324
  #, gcc-internal-format
  msgid "the value of the stack pointer after an %<asm%> statement must be the same as it was before the statement"
  msgstr ""
  
! #: cfgexpand.cc:3394 varasm.cc:1718
  #, gcc-internal-format
  msgid "more than %d operands in %<asm%>"
  msgstr ""
  
  #. ??? Diagnose during gimplification?
! #: cfgexpand.cc:3447
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown register name %qs in %<asm%>"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð°: %s"
  
! #: cfgexpand.cc:3519
  #, fuzzy, gcc-internal-format
  msgid "invalid hard register usage between output operands"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cfgexpand.cc:3546
  #, gcc-internal-format
  msgid "invalid hard register usage between output operand and matching constraint operand"
  msgstr ""
  
! #: cfgexpand.cc:3554
  #, gcc-internal-format
  msgid "invalid hard register usage between earlyclobber operand and input operand"
  msgstr ""
  
! #: cfgexpand.cc:3639 varasm.cc:1757
  #, gcc-internal-format, gfc-internal-format
  msgid "output number %d not directly addressable"
  msgstr ""
  
! #: cfgexpand.cc:3735 varasm.cc:1810
  #, gcc-internal-format
  msgid "%<asm%> operand %d probably does not match constraints"
  msgstr ""
  
! #: cfgexpand.cc:3928
  #, gcc-internal-format
  msgid "%<asm%> clobber conflict with output operand"
  msgstr ""
  
! #: cfgexpand.cc:3933
  #, gcc-internal-format
  msgid "%<asm%> clobber conflict with input operand"
  msgstr ""
  
! #: cfgexpand.cc:7085
  #, gcc-internal-format
  msgid "stack protector not protecting local variables: variable length buffer"
  msgstr ""
  
! #: cfgexpand.cc:7089
  #, gcc-internal-format, gfc-internal-format
  msgid "stack protector not protecting function: all local arrays are less than %d bytes long"
  msgstr ""
  
! #: cfgexpand.cc:7378
  #, gcc-internal-format
  msgid "patchable function entry %wu exceeds size %wu"
  msgstr ""
*************** msgstr ""
*** 25082,25389 ****
  msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)"
  msgstr ""
  
! #: cgraph.cc:3266
  #, gcc-internal-format
  msgid "caller edge count invalid"
  msgstr ""
  
! #: cgraph.cc:3363
  #, gcc-internal-format
  msgid "missing indirect call in speculative call sequence"
  msgstr ""
  
! #: cgraph.cc:3368
  #, gcc-internal-format
  msgid "indirect call in speculative call sequence has no speculative flag"
  msgstr ""
  
! #: cgraph.cc:3398
  #, gcc-internal-format
  msgid "speculative edges are not adjacent"
  msgstr ""
  
! #: cgraph.cc:3404
  #, gcc-internal-format, gfc-internal-format
  msgid "direct call to %s in speculative call sequence has no speculative flag"
  msgstr ""
  
! #: cgraph.cc:3410 cgraph.cc:3440
  #, gcc-internal-format, gfc-internal-format
  msgid "direct call to %s in speculative call sequence has speculative_id %i out of range"
  msgstr ""
  
! #: cgraph.cc:3417
  #, gcc-internal-format, gfc-internal-format
  msgid "duplicate direct call to %s in speculative call sequence with speculative_id %i"
  msgstr ""
  
! #: cgraph.cc:3428
  #, gcc-internal-format
  msgid "call stmt hash does not point to first direct edge of speculative call sequence"
  msgstr ""
  
! #: cgraph.cc:3447
  #, gcc-internal-format, gfc-internal-format
  msgid "duplicate reference %s in speculative call sequence with speculative_id %i"
  msgstr ""
  
! #: cgraph.cc:3460
  #, gcc-internal-format, gfc-internal-format
  msgid "missing direct call for speculation %i"
  msgstr ""
  
! #: cgraph.cc:3465
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "missing ref for speculation %i"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� \"%s\" Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½"
  
! #: cgraph.cc:3474
  #, gcc-internal-format, gfc-internal-format
  msgid "number of speculative targets %i mismatched with num_speculative_call_targets %i"
  msgstr ""
  
! #: cgraph.cc:3503
  #, gcc-internal-format, gfc-internal-format
  msgid "aux field set for edge %s->%s"
  msgstr ""
  
! #: cgraph.cc:3510
  #, gcc-internal-format
  msgid "cgraph count invalid"
  msgstr ""
  
! #: cgraph.cc:3515
  #, gcc-internal-format
  msgid "inline clone in same comdat group list"
  msgstr ""
  
! #: cgraph.cc:3520
  #, gcc-internal-format
  msgid "inline clone count is not compatible"
  msgstr ""
  
! #: cgraph.cc:3527
  #, gcc-internal-format
  msgid "tp_first_run must be non-negative"
  msgstr ""
  
! #: cgraph.cc:3532
  #, fuzzy, gcc-internal-format
  #| msgid "label `%s' used but not defined"
  msgid "local symbols must be defined"
  msgstr "Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ð° `%s' Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ñ‹Ð²Ð°ÐµÑ†Ñ†Ð°, Ð°Ð»Ðµ Ð½Ñ� Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°"
  
! #: cgraph.cc:3537
  #, gcc-internal-format
  msgid "externally visible inline clone"
  msgstr ""
  
! #: cgraph.cc:3542
  #, gcc-internal-format
  msgid "inline clone with address taken"
  msgstr ""
  
! #: cgraph.cc:3547
  #, gcc-internal-format
  msgid "inline clone is forced to output"
  msgstr ""
  
! #: cgraph.cc:3554
  #, gcc-internal-format
  msgid "calls_comdat_local is set outside of a comdat group"
  msgstr ""
  
! #: cgraph.cc:3559
  #, gcc-internal-format
  msgid "invalid calls_comdat_local flag"
  msgstr ""
  
! #: cgraph.cc:3566
  #, gcc-internal-format
  msgid "malloc attribute should be used for a function that returns a pointer"
  msgstr ""
  
! #: cgraph.cc:3578
  #, gcc-internal-format
  msgid "semantic interposition mismatch"
  msgstr ""
  
! #: cgraph.cc:3585
  #, gcc-internal-format, gfc-internal-format
  msgid "aux field set for indirect edge from %s"
  msgstr ""
  
! #: cgraph.cc:3591 cgraph.cc:3651
  #, gcc-internal-format
  msgid "edge count is not compatible with function count"
  msgstr ""
  
! #: cgraph.cc:3599
  #, gcc-internal-format, gfc-internal-format
  msgid "An indirect edge from %s is not marked as indirect or has associated indirect_info, the corresponding statement is: "
  msgstr ""
  
! #: cgraph.cc:3607 cgraph.cc:3679
  #, gcc-internal-format
  msgid "edge has both call_stmt and lto_stmt_uid set"
  msgstr ""
  
! #: cgraph.cc:3619
  #, gcc-internal-format, gfc-internal-format
  msgid "comdat-local function called by %s outside its comdat"
  msgstr ""
  
! #: cgraph.cc:3629
  #, gcc-internal-format
  msgid "inlined_to pointer is wrong"
  msgstr ""
  
! #: cgraph.cc:3634
  #, gcc-internal-format
  msgid "multiple inline callers"
  msgstr ""
  
! #: cgraph.cc:3641
  #, gcc-internal-format
  msgid "inlined_to pointer set for noninline callers"
  msgstr ""
  
! #: cgraph.cc:3669
  #, gcc-internal-format
  msgid "caller edge count does not match BB count"
  msgstr ""
  
! #: cgraph.cc:3700
  #, gcc-internal-format
  msgid "indirect call count does not match BB count"
  msgstr ""
  
! #: cgraph.cc:3717
  #, gcc-internal-format
  msgid "reference has both stmt and lto_stmt_uid set"
  msgstr ""
  
! #: cgraph.cc:3728
  #, gcc-internal-format
  msgid "inlined_to pointer is set but no predecessors found"
  msgstr ""
  
! #: cgraph.cc:3733
  #, gcc-internal-format
  msgid "inlined_to pointer refers to itself"
  msgstr ""
  
! #: cgraph.cc:3744
  #, gcc-internal-format
  msgid "cgraph_node has wrong clone_of"
  msgstr ""
  
! #: cgraph.cc:3757
  #, gcc-internal-format
  msgid "cgraph_node has wrong clone list"
  msgstr ""
  
! #: cgraph.cc:3763
  #, gcc-internal-format
  msgid "cgraph_node is in clone list but it is not clone"
  msgstr ""
  
! #: cgraph.cc:3768
  #, gcc-internal-format
  msgid "cgraph_node has wrong prev_clone pointer"
  msgstr ""
  
! #: cgraph.cc:3773
  #, gcc-internal-format
  msgid "double linked list of clones corrupted"
  msgstr ""
  
! #: cgraph.cc:3785
  #, gcc-internal-format
  msgid "Alias has call edges"
  msgstr ""
  
! #: cgraph.cc:3791
  #, gcc-internal-format
  msgid "Alias has non-alias reference"
  msgstr ""
  
! #: cgraph.cc:3796
  #, gcc-internal-format
  msgid "Alias has more than one alias reference"
  msgstr ""
  
! #: cgraph.cc:3803
  #, gcc-internal-format
  msgid "Analyzed alias has no reference"
  msgstr ""
  
! #: cgraph.cc:3812
  #, gcc-internal-format
  msgid "No edge out of thunk node"
  msgstr ""
  
! #: cgraph.cc:3817
  #, gcc-internal-format
  msgid "More than one edge out of thunk node"
  msgstr ""
  
! #: cgraph.cc:3822
  #, gcc-internal-format
  msgid "Thunk is not supposed to have body"
  msgstr ""
  
! #: cgraph.cc:3858
  #, gcc-internal-format
  msgid "shared call_stmt:"
  msgstr ""
  
! #: cgraph.cc:3866
  #, fuzzy, gcc-internal-format
  msgid "edge points to wrong declaration:"
  msgstr "\"%s\" - Ð³Ñ�Ñ‚Ð° Ð½Ðµ Ð¿Ð°Ñ‡Ð°Ñ‚Ð°Ðº Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ–"
  
! #: cgraph.cc:3875
  #, gcc-internal-format
  msgid "an indirect edge with unknown callee corresponding to a call_stmt with a known declaration:"
  msgstr ""
  
! #: cgraph.cc:3885
  #, gcc-internal-format
  msgid "missing callgraph edge for call stmt:"
  msgstr ""
  
! #: cgraph.cc:3895
  #, gcc-internal-format
  msgid "reference to dead statement"
  msgstr ""
  
! #: cgraph.cc:3908
  #, gcc-internal-format, gfc-internal-format
  msgid "edge %s->%s has no corresponding call_stmt"
  msgstr ""
  
! #: cgraph.cc:3920
  #, gcc-internal-format, gfc-internal-format
  msgid "an indirect edge from %s has no corresponding call_stmt"
  msgstr ""
  
! #: cgraph.cc:3939 cgraph.cc:3952
  #, gcc-internal-format
  msgid "missing origin for a node in a nested list"
  msgstr ""
  
! #: cgraph.cc:3944
  #, gcc-internal-format
  msgid "origin points to a different parent"
  msgstr ""
  
! #: cgraph.cc:3960
  #, gcc-internal-format
  msgid "verify_cgraph_node failed"
  msgstr ""
  
! #: cgraph.cc:4082 varpool.cc:304
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument to `-%s' is missing"
  msgid "%s: section %s.%d is missing"
--- 25099,25406 ----
  msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)"
  msgstr ""
  
! #: cgraph.cc:3279
  #, gcc-internal-format
  msgid "caller edge count invalid"
  msgstr ""
  
! #: cgraph.cc:3376
  #, gcc-internal-format
  msgid "missing indirect call in speculative call sequence"
  msgstr ""
  
! #: cgraph.cc:3381
  #, gcc-internal-format
  msgid "indirect call in speculative call sequence has no speculative flag"
  msgstr ""
  
! #: cgraph.cc:3411
  #, gcc-internal-format
  msgid "speculative edges are not adjacent"
  msgstr ""
  
! #: cgraph.cc:3417
  #, gcc-internal-format, gfc-internal-format
  msgid "direct call to %s in speculative call sequence has no speculative flag"
  msgstr ""
  
! #: cgraph.cc:3423 cgraph.cc:3453
  #, gcc-internal-format, gfc-internal-format
  msgid "direct call to %s in speculative call sequence has speculative_id %i out of range"
  msgstr ""
  
! #: cgraph.cc:3430
  #, gcc-internal-format, gfc-internal-format
  msgid "duplicate direct call to %s in speculative call sequence with speculative_id %i"
  msgstr ""
  
! #: cgraph.cc:3441
  #, gcc-internal-format
  msgid "call stmt hash does not point to first direct edge of speculative call sequence"
  msgstr ""
  
! #: cgraph.cc:3460
  #, gcc-internal-format, gfc-internal-format
  msgid "duplicate reference %s in speculative call sequence with speculative_id %i"
  msgstr ""
  
! #: cgraph.cc:3473
  #, gcc-internal-format, gfc-internal-format
  msgid "missing direct call for speculation %i"
  msgstr ""
  
! #: cgraph.cc:3478
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "missing ref for speculation %i"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� \"%s\" Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½"
  
! #: cgraph.cc:3487
  #, gcc-internal-format, gfc-internal-format
  msgid "number of speculative targets %i mismatched with num_speculative_call_targets %i"
  msgstr ""
  
! #: cgraph.cc:3516
  #, gcc-internal-format, gfc-internal-format
  msgid "aux field set for edge %s->%s"
  msgstr ""
  
! #: cgraph.cc:3523
  #, gcc-internal-format
  msgid "cgraph count invalid"
  msgstr ""
  
! #: cgraph.cc:3528
  #, gcc-internal-format
  msgid "inline clone in same comdat group list"
  msgstr ""
  
! #: cgraph.cc:3533
  #, gcc-internal-format
  msgid "inline clone count is not compatible"
  msgstr ""
  
! #: cgraph.cc:3540
  #, gcc-internal-format
  msgid "tp_first_run must be non-negative"
  msgstr ""
  
! #: cgraph.cc:3545
  #, fuzzy, gcc-internal-format
  #| msgid "label `%s' used but not defined"
  msgid "local symbols must be defined"
  msgstr "Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ð° `%s' Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ñ‹Ð²Ð°ÐµÑ†Ñ†Ð°, Ð°Ð»Ðµ Ð½Ñ� Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°"
  
! #: cgraph.cc:3550
  #, gcc-internal-format
  msgid "externally visible inline clone"
  msgstr ""
  
! #: cgraph.cc:3555
  #, gcc-internal-format
  msgid "inline clone with address taken"
  msgstr ""
  
! #: cgraph.cc:3560
  #, gcc-internal-format
  msgid "inline clone is forced to output"
  msgstr ""
  
! #: cgraph.cc:3567
  #, gcc-internal-format
  msgid "calls_comdat_local is set outside of a comdat group"
  msgstr ""
  
! #: cgraph.cc:3572
  #, gcc-internal-format
  msgid "invalid calls_comdat_local flag"
  msgstr ""
  
! #: cgraph.cc:3579
  #, gcc-internal-format
  msgid "malloc attribute should be used for a function that returns a pointer"
  msgstr ""
  
! #: cgraph.cc:3591
  #, gcc-internal-format
  msgid "semantic interposition mismatch"
  msgstr ""
  
! #: cgraph.cc:3598
  #, gcc-internal-format, gfc-internal-format
  msgid "aux field set for indirect edge from %s"
  msgstr ""
  
! #: cgraph.cc:3604 cgraph.cc:3664
  #, gcc-internal-format
  msgid "edge count is not compatible with function count"
  msgstr ""
  
! #: cgraph.cc:3612
  #, gcc-internal-format, gfc-internal-format
  msgid "An indirect edge from %s is not marked as indirect or has associated indirect_info, the corresponding statement is: "
  msgstr ""
  
! #: cgraph.cc:3620 cgraph.cc:3692
  #, gcc-internal-format
  msgid "edge has both call_stmt and lto_stmt_uid set"
  msgstr ""
  
! #: cgraph.cc:3632
  #, gcc-internal-format, gfc-internal-format
  msgid "comdat-local function called by %s outside its comdat"
  msgstr ""
  
! #: cgraph.cc:3642
  #, gcc-internal-format
  msgid "inlined_to pointer is wrong"
  msgstr ""
  
! #: cgraph.cc:3647
  #, gcc-internal-format
  msgid "multiple inline callers"
  msgstr ""
  
! #: cgraph.cc:3654
  #, gcc-internal-format
  msgid "inlined_to pointer set for noninline callers"
  msgstr ""
  
! #: cgraph.cc:3682
  #, gcc-internal-format
  msgid "caller edge count does not match BB count"
  msgstr ""
  
! #: cgraph.cc:3713
  #, gcc-internal-format
  msgid "indirect call count does not match BB count"
  msgstr ""
  
! #: cgraph.cc:3730
  #, gcc-internal-format
  msgid "reference has both stmt and lto_stmt_uid set"
  msgstr ""
  
! #: cgraph.cc:3741
  #, gcc-internal-format
  msgid "inlined_to pointer is set but no predecessors found"
  msgstr ""
  
! #: cgraph.cc:3746
  #, gcc-internal-format
  msgid "inlined_to pointer refers to itself"
  msgstr ""
  
! #: cgraph.cc:3757
  #, gcc-internal-format
  msgid "cgraph_node has wrong clone_of"
  msgstr ""
  
! #: cgraph.cc:3770
  #, gcc-internal-format
  msgid "cgraph_node has wrong clone list"
  msgstr ""
  
! #: cgraph.cc:3776
  #, gcc-internal-format
  msgid "cgraph_node is in clone list but it is not clone"
  msgstr ""
  
! #: cgraph.cc:3781
  #, gcc-internal-format
  msgid "cgraph_node has wrong prev_clone pointer"
  msgstr ""
  
! #: cgraph.cc:3786
  #, gcc-internal-format
  msgid "double linked list of clones corrupted"
  msgstr ""
  
! #: cgraph.cc:3798
  #, gcc-internal-format
  msgid "Alias has call edges"
  msgstr ""
  
! #: cgraph.cc:3804
  #, gcc-internal-format
  msgid "Alias has non-alias reference"
  msgstr ""
  
! #: cgraph.cc:3809
  #, gcc-internal-format
  msgid "Alias has more than one alias reference"
  msgstr ""
  
! #: cgraph.cc:3816
  #, gcc-internal-format
  msgid "Analyzed alias has no reference"
  msgstr ""
  
! #: cgraph.cc:3825
  #, gcc-internal-format
  msgid "No edge out of thunk node"
  msgstr ""
  
! #: cgraph.cc:3830
  #, gcc-internal-format
  msgid "More than one edge out of thunk node"
  msgstr ""
  
! #: cgraph.cc:3835
  #, gcc-internal-format
  msgid "Thunk is not supposed to have body"
  msgstr ""
  
! #: cgraph.cc:3871
  #, gcc-internal-format
  msgid "shared call_stmt:"
  msgstr ""
  
! #: cgraph.cc:3879
  #, fuzzy, gcc-internal-format
  msgid "edge points to wrong declaration:"
  msgstr "\"%s\" - Ð³Ñ�Ñ‚Ð° Ð½Ðµ Ð¿Ð°Ñ‡Ð°Ñ‚Ð°Ðº Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ–"
  
! #: cgraph.cc:3888
  #, gcc-internal-format
  msgid "an indirect edge with unknown callee corresponding to a call_stmt with a known declaration:"
  msgstr ""
  
! #: cgraph.cc:3898
  #, gcc-internal-format
  msgid "missing callgraph edge for call stmt:"
  msgstr ""
  
! #: cgraph.cc:3908
  #, gcc-internal-format
  msgid "reference to dead statement"
  msgstr ""
  
! #: cgraph.cc:3921
  #, gcc-internal-format, gfc-internal-format
  msgid "edge %s->%s has no corresponding call_stmt"
  msgstr ""
  
! #: cgraph.cc:3933
  #, gcc-internal-format, gfc-internal-format
  msgid "an indirect edge from %s has no corresponding call_stmt"
  msgstr ""
  
! #: cgraph.cc:3952 cgraph.cc:3965
  #, gcc-internal-format
  msgid "missing origin for a node in a nested list"
  msgstr ""
  
! #: cgraph.cc:3957
  #, gcc-internal-format
  msgid "origin points to a different parent"
  msgstr ""
  
! #: cgraph.cc:3973
  #, gcc-internal-format
  msgid "verify_cgraph_node failed"
  msgstr ""
  
! #: cgraph.cc:4095 varpool.cc:304
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument to `-%s' is missing"
  msgid "%s: section %s.%d is missing"
*************** msgstr ""
*** 25466,25478 ****
  
  #. include_self=
  #. TODO: Add OPT_Wundefined-inline.
! #: cgraphunit.cc:1112 c/c-decl.cc:13593
  #, fuzzy, gcc-internal-format
  #| msgid "label `%s' used but not defined"
  msgid "%q+F used but never defined"
  msgstr "Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ð° `%s' Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ñ‹Ð²Ð°ÐµÑ†Ñ†Ð°, Ð°Ð»Ðµ Ð½Ñ� Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°"
  
! #: cgraphunit.cc:1114 c/c-decl.cc:13603
  #, gcc-internal-format
  msgid "%q+F declared %<static%> but never defined"
  msgstr ""
--- 25483,25495 ----
  
  #. include_self=
  #. TODO: Add OPT_Wundefined-inline.
! #: cgraphunit.cc:1112 c/c-decl.cc:13597
  #, fuzzy, gcc-internal-format
  #| msgid "label `%s' used but not defined"
  msgid "%q+F used but never defined"
  msgstr "Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ð° `%s' Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ñ‹Ð²Ð°ÐµÑ†Ñ†Ð°, Ð°Ð»Ðµ Ð½Ñ� Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°"
  
! #: cgraphunit.cc:1114 c/c-decl.cc:13607
  #, gcc-internal-format
  msgid "%q+F declared %<static%> but never defined"
  msgstr ""
*************** msgstr ""
*** 25609,25615 ****
  msgid "ld returned %d exit status"
  msgstr ""
  
! #: collect2.cc:916 gcc.cc:8378 config/nvptx/mkoffload.cc:640
  #, gcc-internal-format
  msgid "atexit failed"
  msgstr ""
--- 25626,25632 ----
  msgid "ld returned %d exit status"
  msgstr ""
  
! #: collect2.cc:916 gcc.cc:8378 config/nvptx/mkoffload.cc:646
  #, gcc-internal-format
  msgid "atexit failed"
  msgstr ""
*************** msgstr ""
*** 26132,26138 ****
  msgid "assuming signed overflow does not occur when simplifying %<X - Y %s 0%> to %<X %s Y%>"
  msgstr ""
  
! #: ext-dce.cc:1115
  #, gcc-internal-format
  msgid "ext-dce disabled: %d basic blocks and %d registers; increase %<--param max-gcse-memory%> above %wu"
  msgstr ""
--- 26149,26155 ----
  msgid "assuming signed overflow does not occur when simplifying %<X - Y %s 0%> to %<X %s Y%>"
  msgstr ""
  
! #: ext-dce.cc:1202
  #, gcc-internal-format
  msgid "ext-dce disabled: %d basic blocks and %d registers; increase %<--param max-gcse-memory%> above %wu"
  msgstr ""
*************** msgstr ""
*** 26911,26917 ****
  msgid "flexible array member %qD does not have well defined padding bits for %qs"
  msgstr ""
  
! #: gimple-fold.cc:4970 cp/constexpr.cc:5103
  #, gcc-internal-format
  msgid "PDP11 bit-field handling unsupported in %qs"
  msgstr ""
--- 26928,26934 ----
  msgid "flexible array member %qD does not have well defined padding bits for %qs"
  msgstr ""
  
! #: gimple-fold.cc:4970 cp/constexpr.cc:5115
  #, gcc-internal-format
  msgid "PDP11 bit-field handling unsupported in %qs"
  msgstr ""
*************** msgstr ""
*** 26926,26932 ****
  msgid "%s not supported on this target"
  msgstr "__buitin_saveregs Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð° Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ð°Ð¹"
  
! #: gimple-fold.cc:8578 gimple-fold.cc:8607
  #, gcc-internal-format, gfc-internal-format
  msgid "comparison is always %d"
  msgstr ""
--- 26943,26949 ----
  msgid "%s not supported on this target"
  msgstr "__buitin_saveregs Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð° Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ð°Ð¹"
  
! #: gimple-fold.cc:8582 gimple-fold.cc:8611
  #, gcc-internal-format, gfc-internal-format
  msgid "comparison is always %d"
  msgstr ""
*************** msgstr ""
*** 26951,26957 ****
  msgid "reference to label %qD defined inside of %<assume%> attribute expression from outside of the attribute"
  msgstr ""
  
! #: gimple-low.cc:112 cp/name-lookup.cc:9308
  #, fuzzy, gcc-internal-format
  msgid "%qD defined here"
  msgstr "YYDEBUG Ð½Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½."
--- 26968,26974 ----
  msgid "reference to label %qD defined inside of %<assume%> attribute expression from outside of the attribute"
  msgstr ""
  
! #: gimple-low.cc:112 cp/name-lookup.cc:9311
  #, fuzzy, gcc-internal-format
  msgid "%qD defined here"
  msgstr "YYDEBUG Ð½Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½."
*************** msgstr ""
*** 26971,26993 ****
  msgid "function may return address of local variable"
  msgstr ""
  
! #: gimple-ssa-isolate-paths.cc:422 c/c-typeck.cc:12879
  #, gcc-internal-format
  msgid "function returns address of local variable"
  msgstr ""
  
  #: gimple-ssa-isolate-paths.cc:425 gimple-ssa-warn-access.cc:2075
  #: gimple-ssa-warn-access.cc:3729 tree.cc:12615 tree.cc:12652 tree.cc:12693
! #: tree.cc:12726 c/c-decl.cc:10781 c/c-parser.cc:22345 c/c-parser.cc:22486
! #: c/c-typeck.cc:3673 c/c-typeck.cc:3769 c/c-typeck.cc:3781 c/c-typeck.cc:6512
! #: c/c-typeck.cc:12780 c/c-typeck.cc:12797 c/gimple-parser.cc:2660
  #: c/gimple-parser.cc:2668 cp/call.cc:8391 cp/call.cc:8474 cp/call.cc:8493
! #: cp/call.cc:10729 cp/class.cc:9468 cp/constexpr.cc:889 cp/constexpr.cc:1348
! #: cp/constexpr.cc:4511 cp/constexpr.cc:6205 cp/constexpr.cc:6584
! #: cp/cvt.cc:1110 cp/cvt.cc:1150 cp/decl.cc:9605 cp/decl2.cc:6351
! #: cp/decl2.cc:6400 cp/lambda.cc:639 cp/method.cc:1240 cp/parser.cc:23073
! #: cp/pt.cc:9266 cp/pt.cc:9936 cp/semantics.cc:2753 cp/semantics.cc:5290
! #: cp/typeck.cc:2164 cp/typeck.cc:2385 cp/typeck.cc:4570 cp/typeck.cc:10793
  #: rust/backend/rust-constexpr.cc:4407 rust/backend/rust-tree.cc:621
  #: rust/backend/rust-tree.cc:3800
  #, fuzzy, gcc-internal-format
--- 26988,27010 ----
  msgid "function may return address of local variable"
  msgstr ""
  
! #: gimple-ssa-isolate-paths.cc:422 c/c-typeck.cc:12896
  #, gcc-internal-format
  msgid "function returns address of local variable"
  msgstr ""
  
  #: gimple-ssa-isolate-paths.cc:425 gimple-ssa-warn-access.cc:2075
  #: gimple-ssa-warn-access.cc:3729 tree.cc:12615 tree.cc:12652 tree.cc:12693
! #: tree.cc:12726 c/c-decl.cc:10785 c/c-parser.cc:22390 c/c-parser.cc:22531
! #: c/c-typeck.cc:3673 c/c-typeck.cc:3769 c/c-typeck.cc:3781 c/c-typeck.cc:6513
! #: c/c-typeck.cc:12797 c/c-typeck.cc:12814 c/gimple-parser.cc:2660
  #: c/gimple-parser.cc:2668 cp/call.cc:8391 cp/call.cc:8474 cp/call.cc:8493
! #: cp/call.cc:10729 cp/class.cc:9502 cp/constexpr.cc:889 cp/constexpr.cc:1348
! #: cp/constexpr.cc:4511 cp/constexpr.cc:6220 cp/constexpr.cc:6600
! #: cp/cvt.cc:1110 cp/cvt.cc:1150 cp/decl.cc:9603 cp/decl2.cc:6379
! #: cp/decl2.cc:6428 cp/lambda.cc:639 cp/method.cc:1240 cp/parser.cc:23077
! #: cp/pt.cc:9271 cp/pt.cc:9941 cp/semantics.cc:2753 cp/semantics.cc:5290
! #: cp/typeck.cc:2164 cp/typeck.cc:2385 cp/typeck.cc:4686 cp/typeck.cc:10909
  #: rust/backend/rust-constexpr.cc:4407 rust/backend/rust-tree.cc:621
  #: rust/backend/rust-tree.cc:3800
  #, fuzzy, gcc-internal-format
*************** msgstr ""
*** 28100,28111 ****
  #: gimple-ssa-warn-access.cc:3981 gimple-ssa-warn-access.cc:4629
  #: gimple-ssa-warn-access.cc:4632 gimple-ssa-warn-restrict.cc:1830
  #: tree-ssa-uninit.cc:924 tree-ssa-uninit.cc:1123 c/c-decl.cc:4101
! #: c/c-decl.cc:4391 c/c-typeck.cc:10377 c/c-typeck.cc:13597 cp/call.cc:8808
  #: cp/call.cc:8819 cp/class.cc:1722 cp/class.cc:3543 cp/constexpr.cc:1071
! #: cp/decl.cc:4687 cp/decl.cc:13468 cp/decl.cc:14071 cp/decl.cc:14081
! #: cp/decl.cc:15081 cp/friend.cc:407 cp/friend.cc:417 cp/init.cc:2948
  #: cp/parser.cc:3860 cp/parser.cc:4006 cp/parser.cc:4058 cp/parser.cc:7428
! #: cp/parser.cc:25737 cp/typeck.cc:5069
  #, fuzzy, gcc-internal-format
  msgid "%qD declared here"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
--- 28117,28128 ----
  #: gimple-ssa-warn-access.cc:3981 gimple-ssa-warn-access.cc:4629
  #: gimple-ssa-warn-access.cc:4632 gimple-ssa-warn-restrict.cc:1830
  #: tree-ssa-uninit.cc:924 tree-ssa-uninit.cc:1123 c/c-decl.cc:4101
! #: c/c-decl.cc:4391 c/c-typeck.cc:10394 c/c-typeck.cc:13614 cp/call.cc:8808
  #: cp/call.cc:8819 cp/class.cc:1722 cp/class.cc:3543 cp/constexpr.cc:1071
! #: cp/decl.cc:4685 cp/decl.cc:13466 cp/decl.cc:14069 cp/decl.cc:14079
! #: cp/decl.cc:15079 cp/friend.cc:407 cp/friend.cc:417 cp/init.cc:2948
  #: cp/parser.cc:3860 cp/parser.cc:4006 cp/parser.cc:4058 cp/parser.cc:7428
! #: cp/parser.cc:25741 cp/typeck.cc:5185
  #, fuzzy, gcc-internal-format
  msgid "%qD declared here"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
*************** msgstr ""
*** 29255,29266 ****
  msgid "mismatching definition"
  msgstr ""
  
! #: ipa-fnsummary.cc:4845
  #, gcc-internal-format
  msgid "invalid fnsummary in LTO stream"
  msgstr ""
  
! #: ipa-fnsummary.cc:4946
  #, gcc-internal-format
  msgid "ipa inline summary is missing in input file"
  msgstr ""
--- 29272,29283 ----
  msgid "mismatching definition"
  msgstr ""
  
! #: ipa-fnsummary.cc:4860
  #, gcc-internal-format
  msgid "invalid fnsummary in LTO stream"
  msgstr ""
  
! #: ipa-fnsummary.cc:4961
  #, gcc-internal-format
  msgid "ipa inline summary is missing in input file"
  msgstr ""
*************** msgstr ""
*** 29270,29276 ****
  msgid "IPA modref summary is missing in input file"
  msgstr ""
  
! #: ipa-prop.cc:4991 ipa-prop.cc:5035 ipa-prop.cc:5115 ipa-prop.cc:5167
  #, gcc-internal-format
  msgid "invalid jump function in LTO stream"
  msgstr ""
--- 29287,29293 ----
  msgid "IPA modref summary is missing in input file"
  msgstr ""
  
! #: ipa-prop.cc:5019 ipa-prop.cc:5063 ipa-prop.cc:5143 ipa-prop.cc:5195
  #, gcc-internal-format
  msgid "invalid jump function in LTO stream"
  msgstr ""
*************** msgstr ""
*** 29315,29326 ****
  msgid "IPA-SRA access verification failed"
  msgstr ""
  
! #: ipa-sra.cc:2751
  #, gcc-internal-format
  msgid "function %qs, parameter %u, has IPA-SRA accesses which overlap"
  msgstr ""
  
! #: ipa-sra.cc:2754
  #, gcc-internal-format
  msgid "function %qs, parameter %u, is used but does not have any certain IPA-SRA access"
  msgstr ""
--- 29332,29343 ----
  msgid "IPA-SRA access verification failed"
  msgstr ""
  
! #: ipa-sra.cc:2757
  #, gcc-internal-format
  msgid "function %qs, parameter %u, has IPA-SRA accesses which overlap"
  msgstr ""
  
! #: ipa-sra.cc:2760
  #, gcc-internal-format
  msgid "function %qs, parameter %u, is used but does not have any certain IPA-SRA access"
  msgstr ""
*************** msgstr "%s Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ
*** 29713,29719 ****
  msgid "tree code %qs is not supported in LTO streams"
  msgstr ""
  
! #: lto-streamer-out.cc:2554
  #, gcc-internal-format
  msgid "LTO streaming of toplevel extended %<asm%> unimplemented"
  msgstr ""
--- 29730,29736 ----
  msgid "tree code %qs is not supported in LTO streams"
  msgstr ""
  
! #: lto-streamer-out.cc:2555
  #, gcc-internal-format
  msgid "LTO streaming of toplevel extended %<asm%> unimplemented"
  msgstr ""
*************** msgstr ""
*** 30014,30030 ****
  msgid "%<allocate%> clause must specify an allocator here"
  msgstr ""
  
! #: omp-low.cc:2774 omp-offload.cc:1518
  #, gcc-internal-format
  msgid "%<seq%> overrides other OpenACC loop specifiers"
  msgstr ""
  
! #: omp-low.cc:2777 omp-offload.cc:1519
  #, gcc-internal-format
  msgid "%<auto%> conflicts with other OpenACC loop specifiers"
  msgstr ""
  
! #: omp-low.cc:2781 omp-offload.cc:1553
  #, gcc-internal-format
  msgid "inner loop uses same OpenACC parallelism as containing loop"
  msgstr ""
--- 30031,30047 ----
  msgid "%<allocate%> clause must specify an allocator here"
  msgstr ""
  
! #: omp-low.cc:2774 omp-offload.cc:1519
  #, gcc-internal-format
  msgid "%<seq%> overrides other OpenACC loop specifiers"
  msgstr ""
  
! #: omp-low.cc:2777 omp-offload.cc:1520
  #, gcc-internal-format
  msgid "%<auto%> conflicts with other OpenACC loop specifiers"
  msgstr ""
  
! #: omp-low.cc:2781 omp-offload.cc:1554
  #, gcc-internal-format
  msgid "inner loop uses same OpenACC parallelism as containing loop"
  msgstr ""
*************** msgstr "-pipe Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð
*** 30343,30414 ****
  msgid "shared-memory region overflow"
  msgstr ""
  
! #: omp-offload.cc:316
  #, gcc-internal-format
  msgid "%qD specified both in declare target %<link%> and implicitly in %<to%> clauses"
  msgstr ""
  
! #: omp-offload.cc:929
  #, gcc-internal-format
  msgid "%<-fopenacc-dim%> operand is malformed at %qs"
  msgstr ""
  
! #: omp-offload.cc:981
  #, gcc-internal-format, gfc-internal-format
  msgid "region contains %s partitioned code but is not %s partitioned"
  msgstr ""
  
! #: omp-offload.cc:987
  #, gcc-internal-format, gfc-internal-format
  msgid "region is %s partitioned but does not contain %s partitioned code"
  msgstr ""
  
! #: omp-offload.cc:1477
  #, gcc-internal-format
  msgid "gang reduction on an orphan loop"
  msgstr ""
  
! #: omp-offload.cc:1551
  #, gcc-internal-format
  msgid "routine call uses same OpenACC parallelism as containing loop"
  msgstr ""
  
! #: omp-offload.cc:1555 omp-offload.cc:1587
  #, gcc-internal-format
  msgid "containing loop here"
  msgstr ""
  
! #: omp-offload.cc:1560
  #, gcc-internal-format
  msgid "routine call uses OpenACC parallelism disallowed by containing routine"
  msgstr ""
  
! #: omp-offload.cc:1562
  #, gcc-internal-format
  msgid "loop uses OpenACC parallelism disallowed by containing routine"
  msgstr ""
  
! #: omp-offload.cc:1567
  #, fuzzy, gcc-internal-format
  msgid "routine %qD declared here"
  msgstr "Ñ‚Ñ‹Ð¿ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" Ð½Ðµ Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ñ‹"
  
! #: omp-offload.cc:1580
  #, gcc-internal-format
  msgid "incorrectly nested OpenACC loop parallelism"
  msgstr ""
  
! #: omp-offload.cc:1721
  #, gcc-internal-format
  msgid "insufficient partitioning available to parallelize element loop"
  msgstr ""
  
! #: omp-offload.cc:1729
  #, gcc-internal-format
  msgid "insufficient partitioning available to parallelize tile loop"
  msgstr ""
  
! #: omp-offload.cc:1731
  #, gcc-internal-format
  msgid "insufficient partitioning available to parallelize loop"
  msgstr ""
--- 30360,30431 ----
  msgid "shared-memory region overflow"
  msgstr ""
  
! #: omp-offload.cc:317
  #, gcc-internal-format
  msgid "%qD specified both in declare target %<link%> and implicitly in %<to%> clauses"
  msgstr ""
  
! #: omp-offload.cc:930
  #, gcc-internal-format
  msgid "%<-fopenacc-dim%> operand is malformed at %qs"
  msgstr ""
  
! #: omp-offload.cc:982
  #, gcc-internal-format, gfc-internal-format
  msgid "region contains %s partitioned code but is not %s partitioned"
  msgstr ""
  
! #: omp-offload.cc:988
  #, gcc-internal-format, gfc-internal-format
  msgid "region is %s partitioned but does not contain %s partitioned code"
  msgstr ""
  
! #: omp-offload.cc:1478
  #, gcc-internal-format
  msgid "gang reduction on an orphan loop"
  msgstr ""
  
! #: omp-offload.cc:1552
  #, gcc-internal-format
  msgid "routine call uses same OpenACC parallelism as containing loop"
  msgstr ""
  
! #: omp-offload.cc:1556 omp-offload.cc:1588
  #, gcc-internal-format
  msgid "containing loop here"
  msgstr ""
  
! #: omp-offload.cc:1561
  #, gcc-internal-format
  msgid "routine call uses OpenACC parallelism disallowed by containing routine"
  msgstr ""
  
! #: omp-offload.cc:1563
  #, gcc-internal-format
  msgid "loop uses OpenACC parallelism disallowed by containing routine"
  msgstr ""
  
! #: omp-offload.cc:1568
  #, fuzzy, gcc-internal-format
  msgid "routine %qD declared here"
  msgstr "Ñ‚Ñ‹Ð¿ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" Ð½Ðµ Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ñ‹"
  
! #: omp-offload.cc:1581
  #, gcc-internal-format
  msgid "incorrectly nested OpenACC loop parallelism"
  msgstr ""
  
! #: omp-offload.cc:1722
  #, gcc-internal-format
  msgid "insufficient partitioning available to parallelize element loop"
  msgstr ""
  
! #: omp-offload.cc:1730
  #, gcc-internal-format
  msgid "insufficient partitioning available to parallelize tile loop"
  msgstr ""
  
! #: omp-offload.cc:1732
  #, gcc-internal-format
  msgid "insufficient partitioning available to parallelize loop"
  msgstr ""
*************** msgstr ""
*** 30460,30466 ****
  msgid "command-line option %qs is not supported by this configuration"
  msgstr ""
  
! #: opts-common.cc:1463 opts.cc:2612
  #, fuzzy, gcc-internal-format
  msgid "missing argument to %qs"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� \"%s\" Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½"
--- 30477,30483 ----
  msgid "command-line option %qs is not supported by this configuration"
  msgstr ""
  
! #: opts-common.cc:1463 opts.cc:2610
  #, fuzzy, gcc-internal-format
  msgid "missing argument to %qs"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� \"%s\" Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½"
*************** msgstr ""
*** 30698,30940 ****
  msgid "%<-fsplit-stack%> is not supported by this compiler configuration"
  msgstr ""
  
! #: opts.cc:1284
  #, gcc-internal-format
  msgid "%<-fsanitize=pointer-compare%> must be combined with %<-fsanitize=address%> or %<-fsanitize=kernel-address%>"
  msgstr ""
  
! #: opts.cc:1288
  #, gcc-internal-format
  msgid "%<-fsanitize=pointer-subtract%> must be combined with %<-fsanitize=address%> or %<-fsanitize=kernel-address%>"
  msgstr ""
  
! #: opts.cc:1315
  #, fuzzy, gcc-internal-format
  #| msgid "-pipe is not supported"
  msgid "%<-fsanitize-recover=%s%> is not supported"
  msgstr "-pipe Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð°"
  
! #: opts.cc:1327 opts.cc:2324
  #, fuzzy, gcc-internal-format
  #| msgid "-pipe is not supported"
  msgid "%<-fsanitize-trap=%s%> is not supported"
  msgstr "-pipe Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð°"
  
! #: opts.cc:1354
  #, gcc-internal-format
  msgid "%<-fsanitize-address-use-after-scope%> requires %<-fstack-reuse=none%> option"
  msgstr ""
  
! #: opts.cc:1361
  #, gcc-internal-format
  msgid "transactional memory is not supported with %<-fsanitize=address%>"
  msgstr ""
  
! #: opts.cc:1364
  #, gcc-internal-format
  msgid "transactional memory is not supported with %<-fsanitize=kernel-address%>"
  msgstr ""
  
! #: opts.cc:1369
  #, gcc-internal-format
  msgid "live patching (with %qs) is not supported with LTO"
  msgstr ""
  
! #: opts.cc:1374
  #, fuzzy, gcc-internal-format
  msgid "vtable verification is not supported with LTO"
  msgstr "Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ñ‹ Ñ�ÐµÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð° Ð´Ð»Ñ� Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ñ‹"
  
! #: opts.cc:1449
  #, gcc-internal-format
  msgid "variable tracking requested, but useless unless producing debug info"
  msgstr ""
  
! #: opts.cc:1453
  #, gcc-internal-format
  msgid "variable tracking requested, but not supported by this debug format"
  msgstr ""
  
! #: opts.cc:1482
  #, gcc-internal-format
  msgid "var-tracking-assignments changes selective scheduling"
  msgstr ""
  
! #: opts.cc:1495
  #, gcc-internal-format
  msgid "%<-Wstrict-flex-arrays%> is ignored when %<-fstrict-flex-arrays%> is not present"
  msgstr ""
  
! #: opts.cc:1525 config/darwin.cc:3484
  #, gcc-internal-format
  msgid "%<-freorder-blocks-and-partition%> does not work with exceptions on this architecture"
  msgstr ""
  
! #: opts.cc:1541
  #, gcc-internal-format
  msgid "%<-freorder-blocks-and-partition%> does not support unwind info on this architecture"
  msgstr ""
  
! #: opts.cc:1559 config/pa/pa.cc:580
  #, gcc-internal-format
  msgid "%<-freorder-blocks-and-partition%> does not work on this architecture"
  msgstr ""
  
! #: opts.cc:2068
  #, gcc-internal-format
  msgid "unrecognized %<include_flags 0x%x%> passed to %<print_specific_help%>"
  msgstr ""
  
! #: opts.cc:2303
  #, gcc-internal-format
  msgid "%<-fsanitize=all%> option is not valid"
  msgstr ""
  
! #: opts.cc:2358
  #, gcc-internal-format
  msgid "unrecognized argument to %<-f%ssanitize%s=%> option: %q.*s; did you mean %qs?"
  msgstr ""
  
! #: opts.cc:2364
  #, gcc-internal-format
  msgid "unrecognized argument to %<-f%ssanitize%s=%> option: %q.*s"
  msgstr ""
  
! #: opts.cc:2399
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute ignored"
  msgid "%qs attribute directive ignored"
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
! #: opts.cc:2423
  #, gcc-internal-format
  msgid "unrecognized argument to %<-fzero-call-used-regs=%>: %qs"
  msgstr ""
  
! #: opts.cc:2447
  #, gcc-internal-format
  msgid "invalid arguments for %<-falign-%s%> option: %qs"
  msgstr ""
  
! #: opts.cc:2462
  #, gcc-internal-format
  msgid "invalid number of arguments for %<-falign-%s%> option: %qs"
  msgstr ""
  
! #: opts.cc:2471
  #, gcc-internal-format
  msgid "%<-falign-%s%> is not between 0 and %d"
  msgstr ""
  
! #: opts.cc:2530
  #, fuzzy, gcc-internal-format
  msgid "invalid arguments for %<-fpatchable-function-entry%>"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: opts.cc:2667
  #, gcc-internal-format
  msgid "%<--help%> argument %q.*s is ambiguous, please be more specific"
  msgstr ""
  
! #: opts.cc:2678
  #, gcc-internal-format
  msgid "unrecognized argument to %<--help=%> option: %q.*s"
  msgstr ""
  
! #: opts.cc:2858
  #, gcc-internal-format
  msgid "arguments ignored for %<-Wattributes=%>; use %<-Wno-attributes=%> instead"
  msgstr ""
  
! #: opts.cc:2864
  #, gcc-internal-format
  msgid "trailing %<,%> in arguments for %<-Wno-attributes=%>"
  msgstr ""
  
! #: opts.cc:3110
  #, gcc-internal-format
  msgid "%qs option can be specified only for offload compiler"
  msgstr ""
  
! #: opts.cc:3119
  #, gcc-internal-format
  msgid "structure alignment must be a small power of two, not %wu"
  msgstr ""
  
! #: opts.cc:3240
  #, fuzzy, gcc-internal-format
  #| msgid "unused parameter `%s'"
  msgid "unknown stack check parameter %qs"
  msgstr "Ð½ÐµÐ²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°ÐµÐ¼Ñ‹ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\""
  
! #: opts.cc:3292
  #, gcc-internal-format
  msgid "%<-gdwarf%s%> is ambiguous; use %<-gdwarf-%s%> for DWARF version or %<-gdwarf%> %<-g%s%> for debug level"
  msgstr ""
  
! #: opts.cc:3303
  #, fuzzy, gcc-internal-format
  #| msgid "-pipe is not supported"
  msgid "dwarf version %wu is not supported"
  msgstr "-pipe Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð°"
  
! #: opts.cc:3340
  #, fuzzy, gcc-internal-format
  msgid "unrecognized argument to %<-flto=%> option: %qs"
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"-%s\""
  
! #: opts.cc:3540
  #, fuzzy, gcc-internal-format
  msgid "target system does not support debug output"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: opts.cc:3579
  #, fuzzy, gcc-internal-format
  #| msgid "section of `%s' conflicts with previous declaration"
  msgid "debug format %qs conflicts with prior selection"
  msgstr "Ñ�ÐµÐºÑ†Ñ‹Ñ� \"%s\" ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÐµ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð¹ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ�Ð¹"
  
! #: opts.cc:3603
  #, fuzzy, gcc-internal-format
  msgid "unrecognized debug output level %qs"
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"-%s\""
  
! #: opts.cc:3605
  #, gcc-internal-format
  msgid "debug output level %qs is too high"
  msgstr ""
  
! #: opts.cc:3617
  #, fuzzy, gcc-internal-format
  msgid "unrecognized btf debug output level %qs"
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"-%s\""
  
! #: opts.cc:3634
  #, gcc-internal-format
  msgid "getting core file size maximum limit: %m"
  msgstr ""
  
! #: opts.cc:3638
  #, gcc-internal-format
  msgid "setting core file size limit to maximum: %m"
  msgstr ""
  
! #: opts.cc:3683
  #, gcc-internal-format, gfc-internal-format
  msgid "unrecognized gcc debugging option: %c"
  msgstr ""
  
! #: opts.cc:3712
  #, gcc-internal-format
  msgid "%<-W%serror=%s%>: no option %<-%s%>; did you mean %<-%s%>?"
  msgstr ""
  
! #: opts.cc:3716
  #, gcc-internal-format
  msgid "%<-W%serror=%s%>: no option %<-%s%>"
  msgstr ""
  
! #: opts.cc:3720
  #, gcc-internal-format
  msgid "%<-Werror=%s%>: %<-%s%> is not an option that controls warnings"
  msgstr ""
--- 30715,30957 ----
  msgid "%<-fsplit-stack%> is not supported by this compiler configuration"
  msgstr ""
  
! #: opts.cc:1282
  #, gcc-internal-format
  msgid "%<-fsanitize=pointer-compare%> must be combined with %<-fsanitize=address%> or %<-fsanitize=kernel-address%>"
  msgstr ""
  
! #: opts.cc:1286
  #, gcc-internal-format
  msgid "%<-fsanitize=pointer-subtract%> must be combined with %<-fsanitize=address%> or %<-fsanitize=kernel-address%>"
  msgstr ""
  
! #: opts.cc:1313
  #, fuzzy, gcc-internal-format
  #| msgid "-pipe is not supported"
  msgid "%<-fsanitize-recover=%s%> is not supported"
  msgstr "-pipe Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð°"
  
! #: opts.cc:1325 opts.cc:2322
  #, fuzzy, gcc-internal-format
  #| msgid "-pipe is not supported"
  msgid "%<-fsanitize-trap=%s%> is not supported"
  msgstr "-pipe Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð°"
  
! #: opts.cc:1352
  #, gcc-internal-format
  msgid "%<-fsanitize-address-use-after-scope%> requires %<-fstack-reuse=none%> option"
  msgstr ""
  
! #: opts.cc:1359
  #, gcc-internal-format
  msgid "transactional memory is not supported with %<-fsanitize=address%>"
  msgstr ""
  
! #: opts.cc:1362
  #, gcc-internal-format
  msgid "transactional memory is not supported with %<-fsanitize=kernel-address%>"
  msgstr ""
  
! #: opts.cc:1367
  #, gcc-internal-format
  msgid "live patching (with %qs) is not supported with LTO"
  msgstr ""
  
! #: opts.cc:1372
  #, fuzzy, gcc-internal-format
  msgid "vtable verification is not supported with LTO"
  msgstr "Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ñ‹ Ñ�ÐµÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð° Ð´Ð»Ñ� Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ñ‹"
  
! #: opts.cc:1447
  #, gcc-internal-format
  msgid "variable tracking requested, but useless unless producing debug info"
  msgstr ""
  
! #: opts.cc:1451
  #, gcc-internal-format
  msgid "variable tracking requested, but not supported by this debug format"
  msgstr ""
  
! #: opts.cc:1480
  #, gcc-internal-format
  msgid "var-tracking-assignments changes selective scheduling"
  msgstr ""
  
! #: opts.cc:1493
  #, gcc-internal-format
  msgid "%<-Wstrict-flex-arrays%> is ignored when %<-fstrict-flex-arrays%> is not present"
  msgstr ""
  
! #: opts.cc:1523 config/darwin.cc:3484
  #, gcc-internal-format
  msgid "%<-freorder-blocks-and-partition%> does not work with exceptions on this architecture"
  msgstr ""
  
! #: opts.cc:1539
  #, gcc-internal-format
  msgid "%<-freorder-blocks-and-partition%> does not support unwind info on this architecture"
  msgstr ""
  
! #: opts.cc:1557 config/pa/pa.cc:580
  #, gcc-internal-format
  msgid "%<-freorder-blocks-and-partition%> does not work on this architecture"
  msgstr ""
  
! #: opts.cc:2066
  #, gcc-internal-format
  msgid "unrecognized %<include_flags 0x%x%> passed to %<print_specific_help%>"
  msgstr ""
  
! #: opts.cc:2301
  #, gcc-internal-format
  msgid "%<-fsanitize=all%> option is not valid"
  msgstr ""
  
! #: opts.cc:2356
  #, gcc-internal-format
  msgid "unrecognized argument to %<-f%ssanitize%s=%> option: %q.*s; did you mean %qs?"
  msgstr ""
  
! #: opts.cc:2362
  #, gcc-internal-format
  msgid "unrecognized argument to %<-f%ssanitize%s=%> option: %q.*s"
  msgstr ""
  
! #: opts.cc:2397
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute ignored"
  msgid "%qs attribute directive ignored"
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
! #: opts.cc:2421
  #, gcc-internal-format
  msgid "unrecognized argument to %<-fzero-call-used-regs=%>: %qs"
  msgstr ""
  
! #: opts.cc:2445
  #, gcc-internal-format
  msgid "invalid arguments for %<-falign-%s%> option: %qs"
  msgstr ""
  
! #: opts.cc:2460
  #, gcc-internal-format
  msgid "invalid number of arguments for %<-falign-%s%> option: %qs"
  msgstr ""
  
! #: opts.cc:2469
  #, gcc-internal-format
  msgid "%<-falign-%s%> is not between 0 and %d"
  msgstr ""
  
! #: opts.cc:2528
  #, fuzzy, gcc-internal-format
  msgid "invalid arguments for %<-fpatchable-function-entry%>"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: opts.cc:2665
  #, gcc-internal-format
  msgid "%<--help%> argument %q.*s is ambiguous, please be more specific"
  msgstr ""
  
! #: opts.cc:2676
  #, gcc-internal-format
  msgid "unrecognized argument to %<--help=%> option: %q.*s"
  msgstr ""
  
! #: opts.cc:2856
  #, gcc-internal-format
  msgid "arguments ignored for %<-Wattributes=%>; use %<-Wno-attributes=%> instead"
  msgstr ""
  
! #: opts.cc:2862
  #, gcc-internal-format
  msgid "trailing %<,%> in arguments for %<-Wno-attributes=%>"
  msgstr ""
  
! #: opts.cc:3108
  #, gcc-internal-format
  msgid "%qs option can be specified only for offload compiler"
  msgstr ""
  
! #: opts.cc:3117
  #, gcc-internal-format
  msgid "structure alignment must be a small power of two, not %wu"
  msgstr ""
  
! #: opts.cc:3238
  #, fuzzy, gcc-internal-format
  #| msgid "unused parameter `%s'"
  msgid "unknown stack check parameter %qs"
  msgstr "Ð½ÐµÐ²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°ÐµÐ¼Ñ‹ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\""
  
! #: opts.cc:3290
  #, gcc-internal-format
  msgid "%<-gdwarf%s%> is ambiguous; use %<-gdwarf-%s%> for DWARF version or %<-gdwarf%> %<-g%s%> for debug level"
  msgstr ""
  
! #: opts.cc:3301
  #, fuzzy, gcc-internal-format
  #| msgid "-pipe is not supported"
  msgid "dwarf version %wu is not supported"
  msgstr "-pipe Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð°"
  
! #: opts.cc:3338
  #, fuzzy, gcc-internal-format
  msgid "unrecognized argument to %<-flto=%> option: %qs"
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"-%s\""
  
! #: opts.cc:3538
  #, fuzzy, gcc-internal-format
  msgid "target system does not support debug output"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: opts.cc:3577
  #, fuzzy, gcc-internal-format
  #| msgid "section of `%s' conflicts with previous declaration"
  msgid "debug format %qs conflicts with prior selection"
  msgstr "Ñ�ÐµÐºÑ†Ñ‹Ñ� \"%s\" ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÐµ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð¹ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ�Ð¹"
  
! #: opts.cc:3601
  #, fuzzy, gcc-internal-format
  msgid "unrecognized debug output level %qs"
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"-%s\""
  
! #: opts.cc:3603
  #, gcc-internal-format
  msgid "debug output level %qs is too high"
  msgstr ""
  
! #: opts.cc:3615
  #, fuzzy, gcc-internal-format
  msgid "unrecognized btf debug output level %qs"
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"-%s\""
  
! #: opts.cc:3632
  #, gcc-internal-format
  msgid "getting core file size maximum limit: %m"
  msgstr ""
  
! #: opts.cc:3636
  #, gcc-internal-format
  msgid "setting core file size limit to maximum: %m"
  msgstr ""
  
! #: opts.cc:3681
  #, gcc-internal-format, gfc-internal-format
  msgid "unrecognized gcc debugging option: %c"
  msgstr ""
  
! #: opts.cc:3710
  #, gcc-internal-format
  msgid "%<-W%serror=%s%>: no option %<-%s%>; did you mean %<-%s%>?"
  msgstr ""
  
! #: opts.cc:3714
  #, gcc-internal-format
  msgid "%<-W%serror=%s%>: no option %<-%s%>"
  msgstr ""
  
! #: opts.cc:3718
  #, gcc-internal-format
  msgid "%<-Werror=%s%>: %<-%s%> is not an option that controls warnings"
  msgstr ""
*************** msgstr ""
*** 31255,31276 ****
  msgid "unrecognized enum value: %qs"
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ�Ñ�ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: read-rtl-function.cc:1145 read-rtl-function.cc:1204
  #, gcc-internal-format, gfc-internal-format
  msgid "was expecting `%s'"
  msgstr ""
  
! #: read-rtl-function.cc:1598
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "duplicate insn UID: %i"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½Ð½Ðµ \"restrict\""
  
! #: read-rtl-function.cc:1659
  #, gcc-internal-format
  msgid "start/end of RTL fragment are in different files"
  msgstr ""
  
! #: read-rtl-function.cc:1665
  #, gcc-internal-format
  msgid "start of RTL fragment must be on an earlier line than end"
  msgstr ""
--- 31272,31293 ----
  msgid "unrecognized enum value: %qs"
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ�Ñ�ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: read-rtl-function.cc:1148 read-rtl-function.cc:1207
  #, gcc-internal-format, gfc-internal-format
  msgid "was expecting `%s'"
  msgstr ""
  
! #: read-rtl-function.cc:1601
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "duplicate insn UID: %i"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½Ð½Ðµ \"restrict\""
  
! #: read-rtl-function.cc:1662
  #, gcc-internal-format
  msgid "start/end of RTL fragment are in different files"
  msgstr ""
  
! #: read-rtl-function.cc:1668
  #, gcc-internal-format
  msgid "start of RTL fragment must be on an earlier line than end"
  msgstr ""
*************** msgstr ""
*** 33104,33130 ****
  msgid "target does not support atomic profile update, single mode is selected"
  msgstr ""
  
! #: tree-ssa-alias.cc:4125
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "invalid fn spec attribute \"%s\""
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: tree-ssa-alias.cc:4164
  #, gcc-internal-format, gfc-internal-format
  msgid "invalid fn spec attribute \"%s\" arg %i"
  msgstr ""
  
! #: tree-ssa-ccp.cc:4595 c-family/c-common.cc:5992
  #, gcc-internal-format
  msgid "%qs pointer is null"
  msgstr ""
  
! #: tree-ssa-ccp.cc:4598 c-family/c-common.cc:5995
  #, fuzzy, gcc-internal-format
  msgid "in a call to non-static member function %qD"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: tree-ssa-ccp.cc:4604 c-family/c-common.cc:6010
  #, gcc-internal-format, gfc-internal-format
  msgid "argument %u null where non-null expected"
  msgstr ""
--- 33121,33147 ----
  msgid "target does not support atomic profile update, single mode is selected"
  msgstr ""
  
! #: tree-ssa-alias.cc:4127
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "invalid fn spec attribute \"%s\""
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: tree-ssa-alias.cc:4166
  #, gcc-internal-format, gfc-internal-format
  msgid "invalid fn spec attribute \"%s\" arg %i"
  msgstr ""
  
! #: tree-ssa-ccp.cc:4595 c-family/c-common.cc:6013
  #, gcc-internal-format
  msgid "%qs pointer is null"
  msgstr ""
  
! #: tree-ssa-ccp.cc:4598 c-family/c-common.cc:6016
  #, fuzzy, gcc-internal-format
  msgid "in a call to non-static member function %qD"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: tree-ssa-ccp.cc:4604 c-family/c-common.cc:6031
  #, gcc-internal-format, gfc-internal-format
  msgid "argument %u null where non-null expected"
  msgstr ""
*************** msgstr ""
*** 33134,33145 ****
  msgid "in a call to built-in function %qD"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: tree-ssa-ccp.cc:4614 tree-ssa-ccp.cc:4671 c-family/c-common.cc:6014
  #, fuzzy, gcc-internal-format
  msgid "in a call to function %qD declared %qs"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: tree-ssa-ccp.cc:4660 c-family/c-common.cc:6002
  #, gcc-internal-format, gfc-internal-format
  msgid "argument %u null where non-null expected because argument %u is nonzero"
  msgstr ""
--- 33151,33162 ----
  msgid "in a call to built-in function %qD"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: tree-ssa-ccp.cc:4614 tree-ssa-ccp.cc:4671 c-family/c-common.cc:6035
  #, fuzzy, gcc-internal-format
  msgid "in a call to function %qD declared %qs"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: tree-ssa-ccp.cc:4660 c-family/c-common.cc:6023
  #, gcc-internal-format, gfc-internal-format
  msgid "argument %u null where non-null expected because argument %u is nonzero"
  msgstr ""
*************** msgstr ""
*** 33542,33558 ****
  msgid "verify_ssa failed"
  msgstr ""
  
! #: tree-streamer-in.cc:347
  #, gcc-internal-format
  msgid "machine independent builtin code out of range"
  msgstr ""
  
! #: tree-streamer-in.cc:353
  #, gcc-internal-format
  msgid "target specific builtin not available"
  msgstr ""
  
! #: tree-streamer-in.cc:726
  #, gcc-internal-format
  msgid "degree of %<poly_int%> exceeds %<NUM_POLY_INT_COEFFS%>"
  msgstr ""
--- 33559,33575 ----
  msgid "verify_ssa failed"
  msgstr ""
  
! #: tree-streamer-in.cc:348
  #, gcc-internal-format
  msgid "machine independent builtin code out of range"
  msgstr ""
  
! #: tree-streamer-in.cc:354
  #, gcc-internal-format
  msgid "target specific builtin not available"
  msgstr ""
  
! #: tree-streamer-in.cc:736
  #, gcc-internal-format
  msgid "degree of %<poly_int%> exceeds %<NUM_POLY_INT_COEFFS%>"
  msgstr ""
*************** msgstr ""
*** 33582,33598 ****
  msgid "address of local variable passed to %<musttail%> call argument"
  msgstr ""
  
! #: tree-tailcall.cc:885 tree-tailcall.cc:914
  #, gcc-internal-format
  msgid "address of local variable can escape to %<musttail%> call"
  msgstr ""
  
! #: tree-tailcall.cc:909
  #, gcc-internal-format
  msgid "address of automatic variable %qD can escape to %<musttail%> call"
  msgstr ""
  
! #: tree-tailcall.cc:939
  #, gcc-internal-format
  msgid "address of parameter %qD can escape to %<musttail%> call"
  msgstr ""
--- 33599,33615 ----
  msgid "address of local variable passed to %<musttail%> call argument"
  msgstr ""
  
! #: tree-tailcall.cc:1015 tree-tailcall.cc:1044
  #, gcc-internal-format
  msgid "address of local variable can escape to %<musttail%> call"
  msgstr ""
  
! #: tree-tailcall.cc:1039
  #, gcc-internal-format
  msgid "address of automatic variable %qD can escape to %<musttail%> call"
  msgstr ""
  
! #: tree-tailcall.cc:1069
  #, gcc-internal-format
  msgid "address of parameter %qD can escape to %<musttail%> call"
  msgstr ""
*************** msgstr ""
*** 33622,33628 ****
  msgid "vector shuffling operation will be expanded piecewise"
  msgstr ""
  
! #: tree-vect-loop.cc:5115
  #, gcc-internal-format
  msgid "vectorization did not happen for a simd loop"
  msgstr ""
--- 33639,33645 ----
  msgid "vector shuffling operation will be expanded piecewise"
  msgstr ""
  
! #: tree-vect-loop.cc:5116
  #, gcc-internal-format
  msgid "vectorization did not happen for a simd loop"
  msgstr ""
*************** msgstr ""
*** 34194,34200 ****
  msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
  msgstr ""
  
! #: varasm.cc:2513 c/c-decl.cc:5971 c/c-parser.cc:1969 m2/gm2-gcc/m2type.cc:1248
  #, gcc-internal-format
  msgid "storage size of %q+D isn%'t known"
  msgstr ""
--- 34211,34217 ----
  msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
  msgstr ""
  
! #: varasm.cc:2513 c/c-decl.cc:5971 c/c-parser.cc:2014 m2/gm2-gcc/m2type.cc:1248
  #, gcc-internal-format
  msgid "storage size of %q+D isn%'t known"
  msgstr ""
*************** msgstr ""
*** 34269,34275 ****
  msgid "%qs symbol %q+D must have static linkage"
  msgstr ""
  
! #: varasm.cc:6609 config/nvptx/nvptx.cc:7758
  #, fuzzy, gcc-internal-format
  msgid "alias definitions not supported in this configuration"
  msgstr "Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ñ‹ Ñ�ÐµÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð° Ð´Ð»Ñ� Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ñ‹"
--- 34286,34292 ----
  msgid "%qs symbol %q+D must have static linkage"
  msgstr ""
  
! #: varasm.cc:6609 config/nvptx/nvptx.cc:7764
  #, fuzzy, gcc-internal-format
  msgid "alias definitions not supported in this configuration"
  msgstr "Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ñ‹ Ñ�ÐµÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð° Ð´Ð»Ñ� Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ñ‹"
*************** msgid "%qE attribute ignored for field o
*** 34443,34470 ****
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
  #: c-family/c-attribs.cc:1452 c-family/c-attribs.cc:3650
! #: c-family/c-attribs.cc:6271 ada/gcc-interface/utils.cc:7461
  #, fuzzy, gcc-internal-format
  #| msgid "argument to `%s' missing"
  msgid "%qE argument not a string"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� \"%s\" Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½"
  
! #: c-family/c-attribs.cc:1627 ada/gcc-interface/utils.cc:6947
  #, fuzzy, gcc-internal-format
  msgid "%qE attribute ignored because of argument %qE"
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
! #: c-family/c-attribs.cc:1648 ada/gcc-interface/utils.cc:6968
  #, gcc-internal-format
  msgid "ignoring attribute %qE because of excess arguments starting at %qE"
  msgstr ""
  
! #: c-family/c-attribs.cc:1662 ada/gcc-interface/utils.cc:6982
  #, gcc-internal-format
  msgid "attribute %qE does not apply to elements of non-scalar type %qT"
  msgstr ""
  
! #: c-family/c-attribs.cc:1667 ada/gcc-interface/utils.cc:6987
  #, gcc-internal-format
  msgid "attribute %qE does not apply to fields of aggregate type %qT"
  msgstr ""
--- 34460,34487 ----
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
  #: c-family/c-attribs.cc:1452 c-family/c-attribs.cc:3650
! #: c-family/c-attribs.cc:6271 ada/gcc-interface/utils.cc:7463
  #, fuzzy, gcc-internal-format
  #| msgid "argument to `%s' missing"
  msgid "%qE argument not a string"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� \"%s\" Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½"
  
! #: c-family/c-attribs.cc:1627 ada/gcc-interface/utils.cc:6949
  #, fuzzy, gcc-internal-format
  msgid "%qE attribute ignored because of argument %qE"
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
! #: c-family/c-attribs.cc:1648 ada/gcc-interface/utils.cc:6970
  #, gcc-internal-format
  msgid "ignoring attribute %qE because of excess arguments starting at %qE"
  msgstr ""
  
! #: c-family/c-attribs.cc:1662 ada/gcc-interface/utils.cc:6984
  #, gcc-internal-format
  msgid "attribute %qE does not apply to elements of non-scalar type %qT"
  msgstr ""
  
! #: c-family/c-attribs.cc:1667 ada/gcc-interface/utils.cc:6989
  #, gcc-internal-format
  msgid "attribute %qE does not apply to fields of aggregate type %qT"
  msgstr ""
*************** msgid "%qE attribute has no effect on un
*** 34480,34491 ****
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
  #: c-family/c-attribs.cc:1993 c-family/c-attribs.cc:3633
! #: ada/gcc-interface/utils.cc:7217
  #, fuzzy, gcc-internal-format
  msgid "%qE attribute ignored because %qD is not a variable"
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
! #: c-family/c-attribs.cc:1999 ada/gcc-interface/utils.cc:7223
  #, gcc-internal-format
  msgid "%qE attribute ignored because %qD is not a local variable"
  msgstr ""
--- 34497,34508 ----
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
  #: c-family/c-attribs.cc:1993 c-family/c-attribs.cc:3633
! #: ada/gcc-interface/utils.cc:7219
  #, fuzzy, gcc-internal-format
  msgid "%qE attribute ignored because %qD is not a variable"
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
! #: c-family/c-attribs.cc:1999 ada/gcc-interface/utils.cc:7225
  #, gcc-internal-format
  msgid "%qE attribute ignored because %qD is not a local variable"
  msgstr ""
*************** msgid "weak %q+D cannot be defined %qE"
*** 34776,34782 ****
  msgstr ""
  
  #: c-family/c-attribs.cc:3209 c-family/c-attribs.cc:4198
! #: ada/gcc-interface/utils.cc:7288 jit/dummy-frontend.cc:883
  #, gcc-internal-format
  msgid "attribute %qE argument not a string"
  msgstr ""
--- 34793,34799 ----
  msgstr ""
  
  #: c-family/c-attribs.cc:3209 c-family/c-attribs.cc:4198
! #: ada/gcc-interface/utils.cc:7290 jit/dummy-frontend.cc:883
  #, gcc-internal-format
  msgid "attribute %qE argument not a string"
  msgstr ""
*************** msgstr ""
*** 34884,34890 ****
  
  #: c-family/c-attribs.cc:3685 c-family/c-attribs.cc:4281
  #: c-family/c-attribs.cc:6236 c-family/c-attribs.cc:6263
! #: config/m32c/m32c.cc:2942 ada/gcc-interface/utils.cc:7447
  #, fuzzy, gcc-internal-format
  msgid "%qE attribute applies only to functions"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
--- 34901,34907 ----
  
  #: c-family/c-attribs.cc:3685 c-family/c-attribs.cc:4281
  #: c-family/c-attribs.cc:6236 c-family/c-attribs.cc:6263
! #: config/m32c/m32c.cc:2942 ada/gcc-interface/utils.cc:7449
  #, fuzzy, gcc-internal-format
  msgid "%qE attribute applies only to functions"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
*************** msgstr ""
*** 34980,34986 ****
  msgid "%qE attribute argument %E is not in the range [0, %wu]"
  msgstr ""
  
! #: c-family/c-attribs.cc:4211 ada/gcc-interface/utils.cc:7301
  #, gcc-internal-format
  msgid "only %<inbranch%> and %<notinbranch%> flags are allowed for %<__simd__%> attribute"
  msgstr ""
--- 34997,35003 ----
  msgid "%qE attribute argument %E is not in the range [0, %wu]"
  msgstr ""
  
! #: c-family/c-attribs.cc:4211 ada/gcc-interface/utils.cc:7303
  #, gcc-internal-format
  msgid "only %<inbranch%> and %<notinbranch%> flags are allowed for %<__simd__%> attribute"
  msgstr ""
*************** msgstr ""
*** 35032,35038 ****
  msgid "%qE argument is not a function"
  msgstr "`%D' - Ð³Ñ�Ñ‚Ð° Ð½Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�,"
  
! #: c-family/c-attribs.cc:4635 cp/name-lookup.cc:6573
  #, gcc-internal-format
  msgid "deprecated message is not a string"
  msgstr ""
--- 35049,35055 ----
  msgid "%qE argument is not a function"
  msgstr "`%D' - Ð³Ñ�Ñ‚Ð° Ð½Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�,"
  
! #: c-family/c-attribs.cc:4635 cp/name-lookup.cc:6576
  #, gcc-internal-format
  msgid "deprecated message is not a string"
  msgstr ""
*************** msgstr ""
*** 35062,35073 ****
  msgid "%qE attribute argument value %qE exceeds %wu"
  msgstr ""
  
! #: c-family/c-attribs.cc:4876 ada/gcc-interface/utils.cc:4436
  #, gcc-internal-format
  msgid "vector size not an integral multiple of component size"
  msgstr ""
  
! #: c-family/c-attribs.cc:4882 ada/gcc-interface/utils.cc:4443
  #, gcc-internal-format
  msgid "zero vector size"
  msgstr ""
--- 35079,35090 ----
  msgid "%qE attribute argument value %qE exceeds %wu"
  msgstr ""
  
! #: c-family/c-attribs.cc:4876 ada/gcc-interface/utils.cc:4438
  #, gcc-internal-format
  msgid "vector size not an integral multiple of component size"
  msgstr ""
  
! #: c-family/c-attribs.cc:4882 ada/gcc-interface/utils.cc:4445
  #, gcc-internal-format
  msgid "zero vector size"
  msgstr ""
*************** msgstr ""
*** 35239,35255 ****
  msgid "%qE attribute only applies to variadic functions"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: c-family/c-attribs.cc:6031 ada/gcc-interface/utils.cc:6848
  #, fuzzy, gcc-internal-format
  msgid "requested position is not an integer constant"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: c-family/c-attribs.cc:6039 ada/gcc-interface/utils.cc:6855
  #, gcc-internal-format
  msgid "requested position is less than zero"
  msgstr ""
  
! #: c-family/c-attribs.cc:6088 ada/gcc-interface/utils.cc:7344
  #: d/d-attribs.cc:771 jit/dummy-frontend.cc:799
  #, gcc-internal-format
  msgid "empty string in attribute %<target%>"
--- 35256,35272 ----
  msgid "%qE attribute only applies to variadic functions"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: c-family/c-attribs.cc:6031 ada/gcc-interface/utils.cc:6850
  #, fuzzy, gcc-internal-format
  msgid "requested position is not an integer constant"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: c-family/c-attribs.cc:6039 ada/gcc-interface/utils.cc:6857
  #, gcc-internal-format
  msgid "requested position is less than zero"
  msgstr ""
  
! #: c-family/c-attribs.cc:6088 ada/gcc-interface/utils.cc:7346
  #: d/d-attribs.cc:771 jit/dummy-frontend.cc:799
  #, gcc-internal-format
  msgid "empty string in attribute %<target%>"
*************** msgstr ""
*** 35263,35269 ****
  msgid "%qE attribute argument not a string constant"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: c-family/c-attribs.cc:6288 ada/gcc-interface/utils.cc:7478
  #, fuzzy, gcc-internal-format
  #| msgid "unrecognized section name \"%s\""
  msgid "unrecognized %qE attribute argument %qs"
--- 35280,35286 ----
  msgid "%qE attribute argument not a string constant"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: c-family/c-attribs.cc:6288 ada/gcc-interface/utils.cc:7480
  #, fuzzy, gcc-internal-format
  #| msgid "unrecognized section name \"%s\""
  msgid "unrecognized %qE attribute argument %qs"
*************** msgstr ""
*** 35486,35699 ****
  msgid "pointer to a function used in arithmetic"
  msgstr ""
  
! #: c-family/c-common.cc:3610
  #, gcc-internal-format
  msgid "enum constant in boolean context"
  msgstr ""
  
! #: c-family/c-common.cc:3640 d/d-convert.cc:149
  #, gcc-internal-format
  msgid "the address of %qD will always evaluate as %<true%>"
  msgstr ""
  
! #: c-family/c-common.cc:3685
  #, gcc-internal-format
  msgid "%<*%> in boolean context, suggest %<&&%> instead"
  msgstr ""
  
! #: c-family/c-common.cc:3698
  #, gcc-internal-format
  msgid "%<<<%> in boolean context, did you mean %<<%>?"
  msgstr ""
  
! #: c-family/c-common.cc:3714
  #, gcc-internal-format
  msgid "%<?:%> using integer constants in boolean context, the expression will always evaluate to %<true%>"
  msgstr ""
  
! #: c-family/c-common.cc:3723
  #, gcc-internal-format
  msgid "%<?:%> using integer constants in boolean context"
  msgstr ""
  
! #: c-family/c-common.cc:3759
  #, gcc-internal-format
  msgid "the compiler can assume that the address of %qD will always evaluate to %<true%>"
  msgstr ""
  
! #: c-family/c-common.cc:3795 cp/semantics.cc:1030
  #, gcc-internal-format
  msgid "suggest parentheses around assignment used as truth value"
  msgstr ""
  
! #: c-family/c-common.cc:3882 c/c-decl.cc:5028 c/c-decl.cc:7694
! #: c/c-parser.cc:4001 c/c-typeck.cc:17908
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `restrict'"
  msgid "invalid use of %<restrict%>"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: c-family/c-common.cc:3958
  #, fuzzy, gcc-internal-format
  msgid "invalid application of %<sizeof%> to a function type"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: c-family/c-common.cc:3968
  #, gcc-internal-format
  msgid "ISO C++ does not permit %<alignof%> applied to a function type"
  msgstr ""
  
! #: c-family/c-common.cc:3971
  #, gcc-internal-format
  msgid "ISO C does not permit %<_Alignof%> applied to a function type"
  msgstr ""
  
! #: c-family/c-common.cc:3982 cp/typeck.cc:2085
  #, gcc-internal-format
  msgid "invalid application of %qs to a void type"
  msgstr ""
  
! #: c-family/c-common.cc:3993
  #, fuzzy, gcc-internal-format
  msgid "invalid application of %qs to incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c-family/c-common.cc:4001
  #, gcc-internal-format
  msgid "invalid application of %qs to array type %qT of incomplete element type"
  msgstr ""
  
! #: c-family/c-common.cc:4053
  #, gcc-internal-format
  msgid "%<__alignof%> applied to a bit-field"
  msgstr ""
  
! #: c-family/c-common.cc:4878
  #, gcc-internal-format
  msgid "first argument to %<va_arg%> not of type %<va_list%>"
  msgstr ""
  
! #: c-family/c-common.cc:4998
  #, fuzzy, gcc-internal-format
  msgid "cannot disable built-in function %qs"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: c-family/c-common.cc:5190
  #, gcc-internal-format
  msgid "pointers are not permitted as case values"
  msgstr ""
  
! #: c-family/c-common.cc:5199
  #, gcc-internal-format
  msgid "range expressions in switch statements are non-standard"
  msgstr ""
  
! #: c-family/c-common.cc:5204 c-family/c-common.cc:5208
! #: c-family/c-common.cc:5213
  #, gcc-internal-format
  msgid "ISO C does not support range expressions in switch statements before C2Y"
  msgstr ""
  
! #: c-family/c-common.cc:5227 c-family/c-common.cc:5244
  #, gcc-internal-format
  msgid "conversion of %qE to %qT in range expression changes value to %qE"
  msgstr ""
  
! #: c-family/c-common.cc:5263
  #, gcc-internal-format
  msgid "empty range specified"
  msgstr ""
  
! #: c-family/c-common.cc:5317
  #, gcc-internal-format
  msgid "duplicate (or overlapping) case value"
  msgstr ""
  
! #: c-family/c-common.cc:5319
  #, gcc-internal-format
  msgid "this is the first entry overlapping that value"
  msgstr ""
  
! #: c-family/c-common.cc:5323
  #, gcc-internal-format
  msgid "duplicate case value"
  msgstr ""
  
! #: c-family/c-common.cc:5324 c-family/c-warn.cc:2662
  #, gcc-internal-format
  msgid "previously used here"
  msgstr ""
  
! #: c-family/c-common.cc:5328
  #, gcc-internal-format
  msgid "multiple default labels in one switch"
  msgstr ""
  
! #: c-family/c-common.cc:5330
  #, gcc-internal-format
  msgid "this is the first default label"
  msgstr ""
  
! #: c-family/c-common.cc:5442
  #, fuzzy, gcc-internal-format
  msgid "taking the address of a label is non-standard"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð¿ÑƒÑ�Ñ‚Ñ‹ Ñ–Ð·Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹ Ñ„Ð°Ð¹Ð»"
  
! #: c-family/c-common.cc:5627
  #, fuzzy, gcc-internal-format
  msgid "requested alignment is not an integer constant"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: c-family/c-common.cc:5635 c-family/c-common.cc:5645
  #, gcc-internal-format
  msgid "requested alignment %qE is not a positive power of 2"
  msgstr ""
  
! #: c-family/c-common.cc:5655
  #, gcc-internal-format
  msgid "requested alignment %qE exceeds object file maximum %u"
  msgstr ""
  
! #: c-family/c-common.cc:5663
  #, gcc-internal-format
  msgid "requested alignment %qE exceeds maximum %u"
  msgstr ""
  
! #: c-family/c-common.cc:5858
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function"
  msgid "not enough variable arguments to fit a sentinel"
  msgstr "Ð½Ðµ Ñ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: c-family/c-common.cc:5873
  #, gcc-internal-format
  msgid "missing sentinel in function call"
  msgstr ""
  
! #: c-family/c-common.cc:6112 c-family/c-common.cc:6165 d/d-attribs.cc:837
  #: d/d-attribs.cc:887
  #, gcc-internal-format
  msgid "bad option %qs to attribute %<optimize%>"
  msgstr ""
  
! #: c-family/c-common.cc:6116 c-family/c-common.cc:6170
  #, gcc-internal-format
  msgid "bad option %qs to pragma %<optimize%>"
  msgstr ""
  
! #: c-family/c-common.cc:6219
  #, gcc-internal-format
  msgid "attribute %<fallthrough%> specified multiple times"
  msgstr ""
  
! #: c-family/c-common.cc:6223
  #, gcc-internal-format
  msgid "%<fallthrough%> attribute specified with a parameter"
  msgstr ""
  
! #: c-family/c-common.cc:6412 c-family/c-common.cc:7430
! #: c-family/c-common.cc:7478 c-family/c-common.cc:7560
! #: c-family/c-common.cc:7646 c-family/c-common.cc:8315
  #: config/aarch64/aarch64-sve-builtins.cc:3001
  #: config/arm/arm-mve-builtins.cc:1714
  #, fuzzy, gcc-internal-format
--- 35503,35716 ----
  msgid "pointer to a function used in arithmetic"
  msgstr ""
  
! #: c-family/c-common.cc:3631
  #, gcc-internal-format
  msgid "enum constant in boolean context"
  msgstr ""
  
! #: c-family/c-common.cc:3661 d/d-convert.cc:149
  #, gcc-internal-format
  msgid "the address of %qD will always evaluate as %<true%>"
  msgstr ""
  
! #: c-family/c-common.cc:3706
  #, gcc-internal-format
  msgid "%<*%> in boolean context, suggest %<&&%> instead"
  msgstr ""
  
! #: c-family/c-common.cc:3719
  #, gcc-internal-format
  msgid "%<<<%> in boolean context, did you mean %<<%>?"
  msgstr ""
  
! #: c-family/c-common.cc:3735
  #, gcc-internal-format
  msgid "%<?:%> using integer constants in boolean context, the expression will always evaluate to %<true%>"
  msgstr ""
  
! #: c-family/c-common.cc:3744
  #, gcc-internal-format
  msgid "%<?:%> using integer constants in boolean context"
  msgstr ""
  
! #: c-family/c-common.cc:3780
  #, gcc-internal-format
  msgid "the compiler can assume that the address of %qD will always evaluate to %<true%>"
  msgstr ""
  
! #: c-family/c-common.cc:3816 cp/semantics.cc:1030
  #, gcc-internal-format
  msgid "suggest parentheses around assignment used as truth value"
  msgstr ""
  
! #: c-family/c-common.cc:3903 c/c-decl.cc:5028 c/c-decl.cc:7694
! #: c/c-parser.cc:4046 c/c-typeck.cc:17925
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `restrict'"
  msgid "invalid use of %<restrict%>"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: c-family/c-common.cc:3979
  #, fuzzy, gcc-internal-format
  msgid "invalid application of %<sizeof%> to a function type"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: c-family/c-common.cc:3989
  #, gcc-internal-format
  msgid "ISO C++ does not permit %<alignof%> applied to a function type"
  msgstr ""
  
! #: c-family/c-common.cc:3992
  #, gcc-internal-format
  msgid "ISO C does not permit %<_Alignof%> applied to a function type"
  msgstr ""
  
! #: c-family/c-common.cc:4003 cp/typeck.cc:2085
  #, gcc-internal-format
  msgid "invalid application of %qs to a void type"
  msgstr ""
  
! #: c-family/c-common.cc:4014
  #, fuzzy, gcc-internal-format
  msgid "invalid application of %qs to incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c-family/c-common.cc:4022
  #, gcc-internal-format
  msgid "invalid application of %qs to array type %qT of incomplete element type"
  msgstr ""
  
! #: c-family/c-common.cc:4074
  #, gcc-internal-format
  msgid "%<__alignof%> applied to a bit-field"
  msgstr ""
  
! #: c-family/c-common.cc:4899
  #, gcc-internal-format
  msgid "first argument to %<va_arg%> not of type %<va_list%>"
  msgstr ""
  
! #: c-family/c-common.cc:5019
  #, fuzzy, gcc-internal-format
  msgid "cannot disable built-in function %qs"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: c-family/c-common.cc:5211
  #, gcc-internal-format
  msgid "pointers are not permitted as case values"
  msgstr ""
  
! #: c-family/c-common.cc:5220
  #, gcc-internal-format
  msgid "range expressions in switch statements are non-standard"
  msgstr ""
  
! #: c-family/c-common.cc:5225 c-family/c-common.cc:5229
! #: c-family/c-common.cc:5234
  #, gcc-internal-format
  msgid "ISO C does not support range expressions in switch statements before C2Y"
  msgstr ""
  
! #: c-family/c-common.cc:5248 c-family/c-common.cc:5265
  #, gcc-internal-format
  msgid "conversion of %qE to %qT in range expression changes value to %qE"
  msgstr ""
  
! #: c-family/c-common.cc:5284
  #, gcc-internal-format
  msgid "empty range specified"
  msgstr ""
  
! #: c-family/c-common.cc:5338
  #, gcc-internal-format
  msgid "duplicate (or overlapping) case value"
  msgstr ""
  
! #: c-family/c-common.cc:5340
  #, gcc-internal-format
  msgid "this is the first entry overlapping that value"
  msgstr ""
  
! #: c-family/c-common.cc:5344
  #, gcc-internal-format
  msgid "duplicate case value"
  msgstr ""
  
! #: c-family/c-common.cc:5345 c-family/c-warn.cc:2662
  #, gcc-internal-format
  msgid "previously used here"
  msgstr ""
  
! #: c-family/c-common.cc:5349
  #, gcc-internal-format
  msgid "multiple default labels in one switch"
  msgstr ""
  
! #: c-family/c-common.cc:5351
  #, gcc-internal-format
  msgid "this is the first default label"
  msgstr ""
  
! #: c-family/c-common.cc:5463
  #, fuzzy, gcc-internal-format
  msgid "taking the address of a label is non-standard"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð¿ÑƒÑ�Ñ‚Ñ‹ Ñ–Ð·Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹ Ñ„Ð°Ð¹Ð»"
  
! #: c-family/c-common.cc:5648
  #, fuzzy, gcc-internal-format
  msgid "requested alignment is not an integer constant"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: c-family/c-common.cc:5656 c-family/c-common.cc:5666
  #, gcc-internal-format
  msgid "requested alignment %qE is not a positive power of 2"
  msgstr ""
  
! #: c-family/c-common.cc:5676
  #, gcc-internal-format
  msgid "requested alignment %qE exceeds object file maximum %u"
  msgstr ""
  
! #: c-family/c-common.cc:5684
  #, gcc-internal-format
  msgid "requested alignment %qE exceeds maximum %u"
  msgstr ""
  
! #: c-family/c-common.cc:5879
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function"
  msgid "not enough variable arguments to fit a sentinel"
  msgstr "Ð½Ðµ Ñ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: c-family/c-common.cc:5894
  #, gcc-internal-format
  msgid "missing sentinel in function call"
  msgstr ""
  
! #: c-family/c-common.cc:6133 c-family/c-common.cc:6186 d/d-attribs.cc:837
  #: d/d-attribs.cc:887
  #, gcc-internal-format
  msgid "bad option %qs to attribute %<optimize%>"
  msgstr ""
  
! #: c-family/c-common.cc:6137 c-family/c-common.cc:6191
  #, gcc-internal-format
  msgid "bad option %qs to pragma %<optimize%>"
  msgstr ""
  
! #: c-family/c-common.cc:6240
  #, gcc-internal-format
  msgid "attribute %<fallthrough%> specified multiple times"
  msgstr ""
  
! #: c-family/c-common.cc:6244
  #, gcc-internal-format
  msgid "%<fallthrough%> attribute specified with a parameter"
  msgstr ""
  
! #: c-family/c-common.cc:6433 c-family/c-common.cc:7451
! #: c-family/c-common.cc:7499 c-family/c-common.cc:7581
! #: c-family/c-common.cc:7667 c-family/c-common.cc:8336
  #: config/aarch64/aarch64-sve-builtins.cc:3001
  #: config/arm/arm-mve-builtins.cc:1714
  #, fuzzy, gcc-internal-format
*************** msgstr ""
*** 35701,35708 ****
  msgid "too few arguments to function %qE"
  msgstr "Ð½Ðµ Ñ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: c-family/c-common.cc:6418 c-family/c-common.cc:7485
! #: c-family/c-common.cc:7673 c-family/c-common.cc:8317
  #: config/aarch64/aarch64-sve-builtins.cc:3003
  #: config/arm/arm-mve-builtins.cc:1716
  #, fuzzy, gcc-internal-format
--- 35718,35725 ----
  msgid "too few arguments to function %qE"
  msgstr "Ð½Ðµ Ñ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: c-family/c-common.cc:6439 c-family/c-common.cc:7506
! #: c-family/c-common.cc:7694 c-family/c-common.cc:8338
  #: config/aarch64/aarch64-sve-builtins.cc:3003
  #: config/arm/arm-mve-builtins.cc:1716
  #, fuzzy, gcc-internal-format
*************** msgstr "Ð½Ðµ Ñ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚
*** 35710,36010 ****
  msgid "too many arguments to function %qE"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: c-family/c-common.cc:6462
  #, fuzzy, gcc-internal-format
  msgid "third argument to function %qE must be a constant integer"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: c-family/c-common.cc:6488
  #, gcc-internal-format
  msgid "second argument to function %qE must be a constant integer power of 2 between %qi and %qu bits"
  msgstr ""
  
! #: c-family/c-common.cc:6512 c-family/c-common.cc:6568
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to function `%s'"
  msgid "non-floating-point argument in call to function %qE"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼Ñ�Ð½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– `%s'"
  
! #: c-family/c-common.cc:6541
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to function `%s'"
  msgid "non-floating-point arguments in call to function %qE"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼Ñ�Ð½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– `%s'"
  
! #: c-family/c-common.cc:6558
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function `%s'"
  msgid "non-const integer argument %u in call to function %qE"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: c-family/c-common.cc:6587
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function `%s'"
  msgid "non-integer argument 3 in call to function %qE"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: c-family/c-common.cc:6607 c-family/c-common.cc:6673
! #: c-family/c-common.cc:6757 c-family/c-common.cc:6784
  #, gcc-internal-format
  msgid "argument %u in call to function %qE does not have integral type"
  msgstr ""
  
! #: c-family/c-common.cc:6617
  #, gcc-internal-format
  msgid "argument 3 in call to function %qE does not have pointer to integral type"
  msgstr ""
  
! #: c-family/c-common.cc:6626
  #, gcc-internal-format
  msgid "argument 3 in call to function %qE has pointer to enumerated type"
  msgstr ""
  
! #: c-family/c-common.cc:6635
  #, gcc-internal-format
  msgid "argument 3 in call to function %qE has pointer to boolean type"
  msgstr ""
  
! #: c-family/c-common.cc:6644 c-family/c-common.cc:6653
! #: c-family/c-common.cc:6725 c-family/c-common.cc:6734
  #, gcc-internal-format
  msgid "argument %u in call to function %qE has pointer to %qs type (%qT)"
  msgstr ""
  
! #: c-family/c-common.cc:6682 c-family/c-common.cc:6793
  #, gcc-internal-format
  msgid "argument %u in call to function %qE has enumerated type"
  msgstr ""
  
! #: c-family/c-common.cc:6691 c-family/c-common.cc:6802
  #, gcc-internal-format
  msgid "argument %u in call to function %qE has boolean type"
  msgstr ""
  
! #: c-family/c-common.cc:6707
  #, gcc-internal-format
  msgid "argument %u in call to function %qE does not have pointer type"
  msgstr ""
  
! #: c-family/c-common.cc:6716
  #, fuzzy, gcc-internal-format
  msgid "argument %u in call to function %qE points to incomplete type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c-family/c-common.cc:6770
  #, gcc-internal-format
  msgid "argument %u in call to function %qE does not have %<int%> type"
  msgstr ""
  
! #: c-family/c-common.cc:6814
  #, gcc-internal-format
  msgid "argument 1 in call to function %qE has unsigned type"
  msgstr ""
  
! #: c-family/c-common.cc:6824
  #, gcc-internal-format
  msgid "argument 1 in call to function %qE has signed type"
  msgstr ""
  
! #: c-family/c-common.cc:7089 rust/backend/rust-tree.cc:3588
  #, gcc-internal-format
  msgid "cannot apply %<offsetof%> to static data member %qD"
  msgstr ""
  
! #: c-family/c-common.cc:7094 rust/backend/rust-tree.cc:3593
  #, gcc-internal-format
  msgid "cannot apply %<offsetof%> when %<operator[]%> is overloaded"
  msgstr ""
  
! #: c-family/c-common.cc:7101 rust/backend/rust-tree.cc:3600
  #, gcc-internal-format
  msgid "cannot apply %<offsetof%> to a non constant address"
  msgstr ""
  
! #: c-family/c-common.cc:7114 rust/backend/rust-tree.cc:3613
  #, fuzzy, gcc-internal-format
  msgid "attempt to take address of bit-field structure member %qD"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ð°Ñ‚Ñ€Ñ‹Ð¼Ð°Ñ†ÑŒ Ð°Ð´Ñ€Ð°Ñ� Ð±Ñ–Ñ‚Ð°Ð²Ð°Ð³Ð° Ð¿Ð¾Ð»Ñ� \"%s\""
  
! #: c-family/c-common.cc:7167 rust/backend/rust-tree.cc:3665
  #, gcc-internal-format
  msgid "index %E denotes an offset greater than size of %qT"
  msgstr ""
  
! #: c-family/c-common.cc:7344
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%s' is too large"
  msgid "size of array is too large"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð²ÐµÐ»ÑŒÐ¼Ñ– Ð²Ñ�Ð»Ñ–ÐºÑ–"
  
! #: c-family/c-common.cc:7460 c-family/c-common.cc:7604
  #, gcc-internal-format
  msgid "operand type %qT is incompatible with argument %d of %qE"
  msgstr ""
  
! #: c-family/c-common.cc:7496
  #, gcc-internal-format
  msgid "expecting argument of type pointer or of type integer for argument 1"
  msgstr ""
  
! #: c-family/c-common.cc:7513
  #, gcc-internal-format
  msgid "both arguments must be compatible"
  msgstr ""
  
! #: c-family/c-common.cc:7749
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function `%s'"
  msgid "incorrect number of arguments to function %qE"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: c-family/c-common.cc:7765
  #, fuzzy, gcc-internal-format
  msgid "argument 1 of %qE must be a non-void pointer type"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: c-family/c-common.cc:7773
  #, fuzzy, gcc-internal-format
  msgid "argument 1 of %qE must be a pointer to a complete type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c-family/c-common.cc:7783
  #, fuzzy, gcc-internal-format
  msgid "argument 1 of %qE must be a pointer to a constant size type"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: c-family/c-common.cc:7795
  #, fuzzy, gcc-internal-format
  msgid "argument 1 of %qE must be a pointer to a nonzero size object"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: c-family/c-common.cc:7817
  #, fuzzy, gcc-internal-format
  msgid "argument %d of %qE must be a pointer type"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: c-family/c-common.cc:7827
  #, fuzzy, gcc-internal-format
  msgid "argument %d of %qE must be a pointer to a constant size type"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: c-family/c-common.cc:7836
  #, fuzzy, gcc-internal-format
  msgid "argument %d of %qE must not be a pointer to a function"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: c-family/c-common.cc:7846
  #, gcc-internal-format
  msgid "size mismatch in argument %d of %qE"
  msgstr ""
  
! #: c-family/c-common.cc:7861
  #, gcc-internal-format
  msgid "argument %d of %qE must not be a pointer to a %<const%> type"
  msgstr ""
  
! #: c-family/c-common.cc:7867
  #, gcc-internal-format
  msgid "argument %d of %qE discards %<const%> qualifier"
  msgstr ""
  
! #: c-family/c-common.cc:7878
  #, fuzzy, gcc-internal-format
  msgid "argument %d of %qE must not be a pointer to a %<volatile%> type"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: c-family/c-common.cc:7884
  #, gcc-internal-format
  msgid "argument %d of %qE discards %<volatile%> qualifier"
  msgstr ""
  
! #: c-family/c-common.cc:7898
  #, gcc-internal-format
  msgid "non-integer memory model argument %d of %qE"
  msgstr ""
  
! #: c-family/c-common.cc:7913
  #, gcc-internal-format
  msgid "invalid memory model argument %d of %qE"
  msgstr ""
  
! #: c-family/c-common.cc:8554
  #, gcc-internal-format
  msgid "this target does not define a speculation barrier; your program will still execute correctly, but incorrect speculation may not be restricted"
  msgstr ""
  
! #: c-family/c-common.cc:9252
  #, gcc-internal-format
  msgid "index value is out of bound"
  msgstr ""
  
! #: c-family/c-common.cc:9298 c-family/c-common.cc:9347
! #: c-family/c-common.cc:9363
  #, gcc-internal-format
  msgid "conversion of scalar %qT to vector %qT involves truncation"
  msgstr ""
  
  #. Reject arguments that are built-in functions with
  #. no library fallback.
! #: c-family/c-common.cc:9451 d/intrinsics.cc:1459
  #: rust/backend/rust-tree.cc:3484
  #, gcc-internal-format
  msgid "built-in function %qE must be directly called"
  msgstr ""
  
! #: c-family/c-common.cc:9471
  #, fuzzy, gcc-internal-format
  msgid "size of array %qE is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: c-family/c-common.cc:9474
  #, fuzzy, gcc-internal-format
  msgid "size of array is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: c-family/c-common.cc:9478
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is negative"
  msgid "size %qE of array %qE is negative"
  msgstr "Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹ Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° "
  
! #: c-family/c-common.cc:9481
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is negative"
  msgid "size %qE of array is negative"
  msgstr "Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹ Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° "
  
! #: c-family/c-common.cc:9486
  #, gcc-internal-format
  msgid "size %qE of array %qE exceeds maximum object size %qE"
  msgstr ""
  
! #: c-family/c-common.cc:9489
  #, gcc-internal-format
  msgid "size %qE of array exceeds maximum object size %qE"
  msgstr ""
  
! #: c-family/c-common.cc:9494
  #, gcc-internal-format
  msgid "size of array %qE exceeds maximum object size %qE"
  msgstr ""
  
! #: c-family/c-common.cc:9497
  #, gcc-internal-format
  msgid "size of array exceeds maximum object size %qE"
  msgstr ""
  
! #: c-family/c-common.cc:9568
  #, gcc-internal-format
  msgid "environment variable %qs must expand to a non-negative integer less than or equal to %wd"
  msgstr ""
  
! #: c-family/c-common.cc:9855
  #, gcc-internal-format
  msgid "possible fix: take the address with %qs"
  msgstr ""
  
! #: c-family/c-common.cc:9865
  #, gcc-internal-format
  msgid "possible fix: dereference with %qs"
  msgstr ""
--- 35727,36027 ----
  msgid "too many arguments to function %qE"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: c-family/c-common.cc:6483
  #, fuzzy, gcc-internal-format
  msgid "third argument to function %qE must be a constant integer"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: c-family/c-common.cc:6509
  #, gcc-internal-format
  msgid "second argument to function %qE must be a constant integer power of 2 between %qi and %qu bits"
  msgstr ""
  
! #: c-family/c-common.cc:6533 c-family/c-common.cc:6589
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to function `%s'"
  msgid "non-floating-point argument in call to function %qE"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼Ñ�Ð½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– `%s'"
  
! #: c-family/c-common.cc:6562
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to function `%s'"
  msgid "non-floating-point arguments in call to function %qE"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼Ñ�Ð½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– `%s'"
  
! #: c-family/c-common.cc:6579
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function `%s'"
  msgid "non-const integer argument %u in call to function %qE"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: c-family/c-common.cc:6608
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function `%s'"
  msgid "non-integer argument 3 in call to function %qE"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: c-family/c-common.cc:6628 c-family/c-common.cc:6694
! #: c-family/c-common.cc:6778 c-family/c-common.cc:6805
  #, gcc-internal-format
  msgid "argument %u in call to function %qE does not have integral type"
  msgstr ""
  
! #: c-family/c-common.cc:6638
  #, gcc-internal-format
  msgid "argument 3 in call to function %qE does not have pointer to integral type"
  msgstr ""
  
! #: c-family/c-common.cc:6647
  #, gcc-internal-format
  msgid "argument 3 in call to function %qE has pointer to enumerated type"
  msgstr ""
  
! #: c-family/c-common.cc:6656
  #, gcc-internal-format
  msgid "argument 3 in call to function %qE has pointer to boolean type"
  msgstr ""
  
! #: c-family/c-common.cc:6665 c-family/c-common.cc:6674
! #: c-family/c-common.cc:6746 c-family/c-common.cc:6755
  #, gcc-internal-format
  msgid "argument %u in call to function %qE has pointer to %qs type (%qT)"
  msgstr ""
  
! #: c-family/c-common.cc:6703 c-family/c-common.cc:6814
  #, gcc-internal-format
  msgid "argument %u in call to function %qE has enumerated type"
  msgstr ""
  
! #: c-family/c-common.cc:6712 c-family/c-common.cc:6823
  #, gcc-internal-format
  msgid "argument %u in call to function %qE has boolean type"
  msgstr ""
  
! #: c-family/c-common.cc:6728
  #, gcc-internal-format
  msgid "argument %u in call to function %qE does not have pointer type"
  msgstr ""
  
! #: c-family/c-common.cc:6737
  #, fuzzy, gcc-internal-format
  msgid "argument %u in call to function %qE points to incomplete type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c-family/c-common.cc:6791
  #, gcc-internal-format
  msgid "argument %u in call to function %qE does not have %<int%> type"
  msgstr ""
  
! #: c-family/c-common.cc:6835
  #, gcc-internal-format
  msgid "argument 1 in call to function %qE has unsigned type"
  msgstr ""
  
! #: c-family/c-common.cc:6845
  #, gcc-internal-format
  msgid "argument 1 in call to function %qE has signed type"
  msgstr ""
  
! #: c-family/c-common.cc:7110 rust/backend/rust-tree.cc:3588
  #, gcc-internal-format
  msgid "cannot apply %<offsetof%> to static data member %qD"
  msgstr ""
  
! #: c-family/c-common.cc:7115 rust/backend/rust-tree.cc:3593
  #, gcc-internal-format
  msgid "cannot apply %<offsetof%> when %<operator[]%> is overloaded"
  msgstr ""
  
! #: c-family/c-common.cc:7122 rust/backend/rust-tree.cc:3600
  #, gcc-internal-format
  msgid "cannot apply %<offsetof%> to a non constant address"
  msgstr ""
  
! #: c-family/c-common.cc:7135 rust/backend/rust-tree.cc:3613
  #, fuzzy, gcc-internal-format
  msgid "attempt to take address of bit-field structure member %qD"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ð°Ñ‚Ñ€Ñ‹Ð¼Ð°Ñ†ÑŒ Ð°Ð´Ñ€Ð°Ñ� Ð±Ñ–Ñ‚Ð°Ð²Ð°Ð³Ð° Ð¿Ð¾Ð»Ñ� \"%s\""
  
! #: c-family/c-common.cc:7188 rust/backend/rust-tree.cc:3665
  #, gcc-internal-format
  msgid "index %E denotes an offset greater than size of %qT"
  msgstr ""
  
! #: c-family/c-common.cc:7365
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%s' is too large"
  msgid "size of array is too large"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð²ÐµÐ»ÑŒÐ¼Ñ– Ð²Ñ�Ð»Ñ–ÐºÑ–"
  
! #: c-family/c-common.cc:7481 c-family/c-common.cc:7625
  #, gcc-internal-format
  msgid "operand type %qT is incompatible with argument %d of %qE"
  msgstr ""
  
! #: c-family/c-common.cc:7517
  #, gcc-internal-format
  msgid "expecting argument of type pointer or of type integer for argument 1"
  msgstr ""
  
! #: c-family/c-common.cc:7534
  #, gcc-internal-format
  msgid "both arguments must be compatible"
  msgstr ""
  
! #: c-family/c-common.cc:7770
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function `%s'"
  msgid "incorrect number of arguments to function %qE"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: c-family/c-common.cc:7786
  #, fuzzy, gcc-internal-format
  msgid "argument 1 of %qE must be a non-void pointer type"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: c-family/c-common.cc:7794
  #, fuzzy, gcc-internal-format
  msgid "argument 1 of %qE must be a pointer to a complete type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c-family/c-common.cc:7804
  #, fuzzy, gcc-internal-format
  msgid "argument 1 of %qE must be a pointer to a constant size type"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: c-family/c-common.cc:7816
  #, fuzzy, gcc-internal-format
  msgid "argument 1 of %qE must be a pointer to a nonzero size object"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: c-family/c-common.cc:7838
  #, fuzzy, gcc-internal-format
  msgid "argument %d of %qE must be a pointer type"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: c-family/c-common.cc:7848
  #, fuzzy, gcc-internal-format
  msgid "argument %d of %qE must be a pointer to a constant size type"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: c-family/c-common.cc:7857
  #, fuzzy, gcc-internal-format
  msgid "argument %d of %qE must not be a pointer to a function"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: c-family/c-common.cc:7867
  #, gcc-internal-format
  msgid "size mismatch in argument %d of %qE"
  msgstr ""
  
! #: c-family/c-common.cc:7882
  #, gcc-internal-format
  msgid "argument %d of %qE must not be a pointer to a %<const%> type"
  msgstr ""
  
! #: c-family/c-common.cc:7888
  #, gcc-internal-format
  msgid "argument %d of %qE discards %<const%> qualifier"
  msgstr ""
  
! #: c-family/c-common.cc:7899
  #, fuzzy, gcc-internal-format
  msgid "argument %d of %qE must not be a pointer to a %<volatile%> type"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: c-family/c-common.cc:7905
  #, gcc-internal-format
  msgid "argument %d of %qE discards %<volatile%> qualifier"
  msgstr ""
  
! #: c-family/c-common.cc:7919
  #, gcc-internal-format
  msgid "non-integer memory model argument %d of %qE"
  msgstr ""
  
! #: c-family/c-common.cc:7934
  #, gcc-internal-format
  msgid "invalid memory model argument %d of %qE"
  msgstr ""
  
! #: c-family/c-common.cc:8575
  #, gcc-internal-format
  msgid "this target does not define a speculation barrier; your program will still execute correctly, but incorrect speculation may not be restricted"
  msgstr ""
  
! #: c-family/c-common.cc:9273
  #, gcc-internal-format
  msgid "index value is out of bound"
  msgstr ""
  
! #: c-family/c-common.cc:9319 c-family/c-common.cc:9368
! #: c-family/c-common.cc:9384
  #, gcc-internal-format
  msgid "conversion of scalar %qT to vector %qT involves truncation"
  msgstr ""
  
  #. Reject arguments that are built-in functions with
  #. no library fallback.
! #: c-family/c-common.cc:9472 d/intrinsics.cc:1459
  #: rust/backend/rust-tree.cc:3484
  #, gcc-internal-format
  msgid "built-in function %qE must be directly called"
  msgstr ""
  
! #: c-family/c-common.cc:9492
  #, fuzzy, gcc-internal-format
  msgid "size of array %qE is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: c-family/c-common.cc:9495
  #, fuzzy, gcc-internal-format
  msgid "size of array is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: c-family/c-common.cc:9499
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is negative"
  msgid "size %qE of array %qE is negative"
  msgstr "Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹ Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° "
  
! #: c-family/c-common.cc:9502
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is negative"
  msgid "size %qE of array is negative"
  msgstr "Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹ Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° "
  
! #: c-family/c-common.cc:9507
  #, gcc-internal-format
  msgid "size %qE of array %qE exceeds maximum object size %qE"
  msgstr ""
  
! #: c-family/c-common.cc:9510
  #, gcc-internal-format
  msgid "size %qE of array exceeds maximum object size %qE"
  msgstr ""
  
! #: c-family/c-common.cc:9515
  #, gcc-internal-format
  msgid "size of array %qE exceeds maximum object size %qE"
  msgstr ""
  
! #: c-family/c-common.cc:9518
  #, gcc-internal-format
  msgid "size of array exceeds maximum object size %qE"
  msgstr ""
  
! #: c-family/c-common.cc:9589
  #, gcc-internal-format
  msgid "environment variable %qs must expand to a non-negative integer less than or equal to %wd"
  msgstr ""
  
! #: c-family/c-common.cc:9876
  #, gcc-internal-format
  msgid "possible fix: take the address with %qs"
  msgstr ""
  
! #: c-family/c-common.cc:9886
  #, gcc-internal-format
  msgid "possible fix: dereference with %qs"
  msgstr ""
*************** msgstr ""
*** 36621,36627 ****
  msgid "integer constant is too large for %<_BitInt(%d)%> type"
  msgstr ""
  
! #: c-family/c-lex.cc:1093 c/c-decl.cc:12949
  #, fuzzy, gcc-internal-format
  msgid "%<_BitInt(%d)%> is not supported on this target"
  msgstr "__buitin_saveregs Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð° Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ð°Ð¹"
--- 36638,36644 ----
  msgid "integer constant is too large for %<_BitInt(%d)%> type"
  msgstr ""
  
! #: c-family/c-lex.cc:1093 c/c-decl.cc:12953
  #, fuzzy, gcc-internal-format
  msgid "%<_BitInt(%d)%> is not supported on this target"
  msgstr "__buitin_saveregs Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð° Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ð°Ð¹"
*************** msgstr ""
*** 36692,36708 ****
  msgid "repeated %<@%> before Objective-C string"
  msgstr ""
  
! #: c-family/c-lex.cc:1655 c/c-parser.cc:9675
  #, gcc-internal-format
  msgid "unsupported non-standard concatenation of string literals"
  msgstr ""
  
! #: c-family/c-lex.cc:1691 c/c-parser.cc:9696
  #, gcc-internal-format
  msgid "traditional C rejects string constant concatenation"
  msgstr ""
  
! #: c-family/c-omp.cc:131 cp/pt.cc:19623
  #, gcc-internal-format
  msgid "%<#pragma omp critical%> with %<hint%> clause requires a name, except when %<omp_sync_hint_none%> is used"
  msgstr ""
--- 36709,36725 ----
  msgid "repeated %<@%> before Objective-C string"
  msgstr ""
  
! #: c-family/c-lex.cc:1655 c/c-parser.cc:9720
  #, gcc-internal-format
  msgid "unsupported non-standard concatenation of string literals"
  msgstr ""
  
! #: c-family/c-lex.cc:1691 c/c-parser.cc:9741
  #, gcc-internal-format
  msgid "traditional C rejects string constant concatenation"
  msgstr ""
  
! #: c-family/c-omp.cc:131 cp/pt.cc:19652
  #, gcc-internal-format
  msgid "%<#pragma omp critical%> with %<hint%> clause requires a name, except when %<omp_sync_hint_none%> is used"
  msgstr ""
*************** msgstr ""
*** 36888,36906 ****
  msgid "%<inscan%> %<reduction%> clause on construct other than %<for%>, %<simd%>, %<for simd%>, %<parallel for%>, %<parallel for simd%>"
  msgstr ""
  
! #: c-family/c-omp.cc:3072 c/c-typeck.cc:17691 cp/semantics.cc:10162
  #, gcc-internal-format
  msgid "%qD specified in %<allocate%> clause but not in an explicit privatization clause"
  msgstr ""
  
! #: c-family/c-omp.cc:3164 c-family/c-omp.cc:3179 c/c-parser.cc:27067
! #: cp/parser.cc:50503
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function,"
  msgid "%qD is not a function argument"
  msgstr "`%D' - Ð³Ñ�Ñ‚Ð° Ð½Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�,"
  
! #: c-family/c-omp.cc:3460 c/c-typeck.cc:16778 cp/semantics.cc:8752
  #, gcc-internal-format
  msgid "bit-field %qE in %qs clause"
  msgstr ""
--- 36905,36923 ----
  msgid "%<inscan%> %<reduction%> clause on construct other than %<for%>, %<simd%>, %<for simd%>, %<parallel for%>, %<parallel for simd%>"
  msgstr ""
  
! #: c-family/c-omp.cc:3072 c/c-typeck.cc:17708 cp/semantics.cc:10162
  #, gcc-internal-format
  msgid "%qD specified in %<allocate%> clause but not in an explicit privatization clause"
  msgstr ""
  
! #: c-family/c-omp.cc:3164 c-family/c-omp.cc:3179 c/c-parser.cc:27113
! #: cp/parser.cc:50562
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function,"
  msgid "%qD is not a function argument"
  msgstr "`%D' - Ð³Ñ�Ñ‚Ð° Ð½Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�,"
  
! #: c-family/c-omp.cc:3460 c/c-typeck.cc:16795 cp/semantics.cc:8752
  #, gcc-internal-format
  msgid "bit-field %qE in %qs clause"
  msgstr ""
*************** msgstr ""
*** 36910,36917 ****
  msgid "%qE does not have a mappable type in %qs clause"
  msgstr ""
  
! #: c-family/c-omp.cc:3476 c/c-typeck.cc:15178 c/c-typeck.cc:16867
! #: c/c-typeck.cc:17055
  #, gcc-internal-format
  msgid "%<_Atomic%> %qE in %qs clause"
  msgstr ""
--- 36927,36934 ----
  msgid "%qE does not have a mappable type in %qs clause"
  msgstr ""
  
! #: c-family/c-omp.cc:3476 c/c-typeck.cc:15195 c/c-typeck.cc:16884
! #: c/c-typeck.cc:17072
  #, gcc-internal-format
  msgid "%<_Atomic%> %qE in %qs clause"
  msgstr ""
*************** msgstr ""
*** 36992,37090 ****
  msgid "%<-fabi-compat-version=1%> is not supported, using =2"
  msgstr ""
  
! #: c-family/c-opts.cc:1108
! #, gcc-internal-format
! msgid "%<-Wabi%> won%'t warn about anything"
! msgstr ""
! 
! #: c-family/c-opts.cc:1110
! #, gcc-internal-format
! msgid "%<-Wabi%> warns about differences from the most up-to-date ABI, which is also used by default"
! msgstr ""
! 
! #: c-family/c-opts.cc:1113
  #, gcc-internal-format
! msgid "use e.g. %<-Wabi=11%> to warn about changes from GCC 7"
  msgstr ""
  
! #: c-family/c-opts.cc:1198
  #, fuzzy, gcc-internal-format
  msgid "external TLS initialization functions not supported on this target"
  msgstr "__buitin_saveregs Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð° Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ð°Ð¹"
  
! #: c-family/c-opts.cc:1226
  #, gcc-internal-format
  msgid "too many filenames given; type %<%s %s%> for usage"
  msgstr ""
  
! #: c-family/c-opts.cc:1240
  #, fuzzy, gcc-internal-format
  #| msgid "can't open output file `%s'"
  msgid "opening output file %s: %m"
  msgstr "Ð½ÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð°Ð´Ñ‡Ñ‹Ð½Ñ–Ñ†ÑŒ Ñ„Ð°Ð¹Ð» ÑƒÐ²Ð¾Ð´Ñƒ `%s'"
  
! #: c-family/c-opts.cc:1258
  #, gcc-internal-format
  msgid "the %qs debug info cannot be used with pre-compiled headers"
  msgstr ""
  
! #: c-family/c-opts.cc:1424 c-family/c-opts.cc:1445
  #, gcc-internal-format
  msgid "opening dependency file %s: %m"
  msgstr ""
  
! #: c-family/c-opts.cc:1449
  #, gcc-internal-format
  msgid "%<-MF%> and %<-fdeps-file=%> cannot share an output file %s: %m"
  msgstr ""
  
! #: c-family/c-opts.cc:1459
  #, gcc-internal-format
  msgid "closing dependency file %s: %m"
  msgstr ""
  
! #: c-family/c-opts.cc:1462
  #, fuzzy, gcc-internal-format
  #| msgid "error writing to %s"
  msgid "when writing output to %s: %m"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° Ð·Ð°Ð¿Ñ–Ñ�Ñƒ Ñž %s"
  
! #: c-family/c-opts.cc:1540
  #, gcc-internal-format
  msgid "to generate dependencies you must specify either %<-M%> or %<-MM%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1564
  #, gcc-internal-format
  msgid "%<-MG%> may only be used with %<-M%> or %<-MM%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1597
  #, gcc-internal-format
  msgid "%<-fdirectives-only%> is incompatible with %<-Wunused-macros%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1600
  #, gcc-internal-format
  msgid "%<-fdirectives-only%> is incompatible with %<-traditional%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1702
  #, gcc-internal-format
  msgid "%<_FORTIFY_SOURCE%> is not enabled by %<-fhardened%> because optimizations are turned off"
  msgstr ""
  
! #: c-family/c-opts.cc:1706
  #, gcc-internal-format
  msgid "%<_FORTIFY_SOURCE%> is not enabled by %<-fhardened%> because it was specified in %<-D%> or %<-U%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1712
  #, gcc-internal-format
  msgid "%<_GLIBCXX_ASSERTIONS%> is not enabled by %<-fhardened%> because it was specified in %<-D%> or %<-U%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1836
  #, gcc-internal-format
  msgid "too late for # directive to set debug directory"
  msgstr ""
--- 37009,37097 ----
  msgid "%<-fabi-compat-version=1%> is not supported, using =2"
  msgstr ""
  
! #: c-family/c-opts.cc:1094
  #, gcc-internal-format
! msgid "%<-fabi-version=%d%> is not supported, using =%d"
  msgstr ""
  
! #: c-family/c-opts.cc:1200
  #, fuzzy, gcc-internal-format
  msgid "external TLS initialization functions not supported on this target"
  msgstr "__buitin_saveregs Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð° Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ð°Ð¹"
  
! #: c-family/c-opts.cc:1228
  #, gcc-internal-format
  msgid "too many filenames given; type %<%s %s%> for usage"
  msgstr ""
  
! #: c-family/c-opts.cc:1242
  #, fuzzy, gcc-internal-format
  #| msgid "can't open output file `%s'"
  msgid "opening output file %s: %m"
  msgstr "Ð½ÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð°Ð´Ñ‡Ñ‹Ð½Ñ–Ñ†ÑŒ Ñ„Ð°Ð¹Ð» ÑƒÐ²Ð¾Ð´Ñƒ `%s'"
  
! #: c-family/c-opts.cc:1260
  #, gcc-internal-format
  msgid "the %qs debug info cannot be used with pre-compiled headers"
  msgstr ""
  
! #: c-family/c-opts.cc:1426 c-family/c-opts.cc:1447
  #, gcc-internal-format
  msgid "opening dependency file %s: %m"
  msgstr ""
  
! #: c-family/c-opts.cc:1451
  #, gcc-internal-format
  msgid "%<-MF%> and %<-fdeps-file=%> cannot share an output file %s: %m"
  msgstr ""
  
! #: c-family/c-opts.cc:1461
  #, gcc-internal-format
  msgid "closing dependency file %s: %m"
  msgstr ""
  
! #: c-family/c-opts.cc:1464
  #, fuzzy, gcc-internal-format
  #| msgid "error writing to %s"
  msgid "when writing output to %s: %m"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° Ð·Ð°Ð¿Ñ–Ñ�Ñƒ Ñž %s"
  
! #: c-family/c-opts.cc:1542
  #, gcc-internal-format
  msgid "to generate dependencies you must specify either %<-M%> or %<-MM%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1566
  #, gcc-internal-format
  msgid "%<-MG%> may only be used with %<-M%> or %<-MM%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1599
  #, gcc-internal-format
  msgid "%<-fdirectives-only%> is incompatible with %<-Wunused-macros%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1602
  #, gcc-internal-format
  msgid "%<-fdirectives-only%> is incompatible with %<-traditional%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1704
  #, gcc-internal-format
  msgid "%<_FORTIFY_SOURCE%> is not enabled by %<-fhardened%> because optimizations are turned off"
  msgstr ""
  
! #: c-family/c-opts.cc:1708
  #, gcc-internal-format
  msgid "%<_FORTIFY_SOURCE%> is not enabled by %<-fhardened%> because it was specified in %<-D%> or %<-U%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1714
  #, gcc-internal-format
  msgid "%<_GLIBCXX_ASSERTIONS%> is not enabled by %<-fhardened%> because it was specified in %<-D%> or %<-U%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1838
  #, gcc-internal-format
  msgid "too late for # directive to set debug directory"
  msgstr ""
*************** msgid "wrong type argument to %s"
*** 37508,37514 ****
  msgstr "Ð½Ðµ Ñ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
  #: c-family/c-warn.cc:60 c-family/c-warn.cc:73 cp/constexpr.cc:3715
! #: cp/constexpr.cc:7709 m2/gm2-gcc/m2expr.cc:965
  #: rust/backend/rust-constexpr.cc:1908 rust/backend/rust-constexpr.cc:4331
  #, gcc-internal-format
  msgid "overflow in constant expression"
--- 37515,37521 ----
  msgstr "Ð½Ðµ Ñ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
  #: c-family/c-warn.cc:60 c-family/c-warn.cc:73 cp/constexpr.cc:3715
! #: cp/constexpr.cc:7725 m2/gm2-gcc/m2expr.cc:965
  #: rust/backend/rust-constexpr.cc:1908 rust/backend/rust-constexpr.cc:4331
  #, gcc-internal-format
  msgid "overflow in constant expression"
*************** msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð
*** 38001,38019 ****
  msgid "function %qD used as %<asm%> output"
  msgstr ""
  
! #: c-family/c-warn.cc:1914 c/c-typeck.cc:5841
  #: rust/checks/errors/rust-readonly-check.cc:103
  #, gcc-internal-format
  msgid "assignment of read-only location %qE"
  msgstr ""
  
! #: c-family/c-warn.cc:1915 c/c-typeck.cc:5844
  #: rust/checks/errors/rust-readonly-check.cc:104
  #, gcc-internal-format
  msgid "increment of read-only location %qE"
  msgstr ""
  
! #: c-family/c-warn.cc:1916 c/c-typeck.cc:5847
  #: rust/checks/errors/rust-readonly-check.cc:105
  #, gcc-internal-format
  msgid "decrement of read-only location %qE"
--- 38008,38026 ----
  msgid "function %qD used as %<asm%> output"
  msgstr ""
  
! #: c-family/c-warn.cc:1914 c/c-typeck.cc:5842
  #: rust/checks/errors/rust-readonly-check.cc:103
  #, gcc-internal-format
  msgid "assignment of read-only location %qE"
  msgstr ""
  
! #: c-family/c-warn.cc:1915 c/c-typeck.cc:5845
  #: rust/checks/errors/rust-readonly-check.cc:104
  #, gcc-internal-format
  msgid "increment of read-only location %qE"
  msgstr ""
  
! #: c-family/c-warn.cc:1916 c/c-typeck.cc:5848
  #: rust/checks/errors/rust-readonly-check.cc:105
  #, gcc-internal-format
  msgid "decrement of read-only location %qE"
*************** msgid_plural "passing argument %i to %qs
*** 38286,38292 ****
  msgstr[0] ""
  msgstr[1] ""
  
! #: c-family/c-warn.cc:2934 c/c-typeck.cc:6465 cp/call.cc:6527
  #, gcc-internal-format
  msgid "this condition has identical branches"
  msgstr ""
--- 38293,38299 ----
  msgstr[0] ""
  msgstr[1] ""
  
! #: c-family/c-warn.cc:2934 c/c-typeck.cc:6466 cp/call.cc:6527
  #, gcc-internal-format
  msgid "this condition has identical branches"
  msgstr ""
*************** msgstr ""
*** 38639,38660 ****
  msgid "unrecognized operand to %%:%<asm_auto_mfpu%>"
  msgstr ""
  
! #: common/config/avr/avr-common.cc:94
  #, gcc-internal-format
  msgid "option %<-mdouble=64%> is only available if configured %<--with-double={64|64,32|32,64}%>"
  msgstr ""
  
! #: common/config/avr/avr-common.cc:102
  #, gcc-internal-format
  msgid "option %<-mdouble=32%> is only available if configured %<--with-double={32|32,64|64,32}%>"
  msgstr ""
  
! #: common/config/avr/avr-common.cc:118
  #, gcc-internal-format
  msgid "option %<-mlong-double=64%> is only available if configured %<--with-long-double={64|64,32|32,64}%>, or %<--with-long-double=double%> together with %<--with-double={64|64,32|32,64}%>"
  msgstr ""
  
! #: common/config/avr/avr-common.cc:127
  #, gcc-internal-format
  msgid "option %<-mlong-double=32%> is only available if configured %<--with-long-double={32|32,64|64,32}%>, or %<--with-long-double=double%> together with %<--with-double={32|32,64|64,32}%>"
  msgstr ""
--- 38646,38667 ----
  msgid "unrecognized operand to %%:%<asm_auto_mfpu%>"
  msgstr ""
  
! #: common/config/avr/avr-common.cc:95
  #, gcc-internal-format
  msgid "option %<-mdouble=64%> is only available if configured %<--with-double={64|64,32|32,64}%>"
  msgstr ""
  
! #: common/config/avr/avr-common.cc:103
  #, gcc-internal-format
  msgid "option %<-mdouble=32%> is only available if configured %<--with-double={32|32,64|64,32}%>"
  msgstr ""
  
! #: common/config/avr/avr-common.cc:119
  #, gcc-internal-format
  msgid "option %<-mlong-double=64%> is only available if configured %<--with-long-double={64|64,32|32,64}%>, or %<--with-long-double=double%> together with %<--with-double={64|64,32|32,64}%>"
  msgstr ""
  
! #: common/config/avr/avr-common.cc:128
  #, gcc-internal-format
  msgid "option %<-mlong-double=32%> is only available if configured %<--with-long-double={32|32,64|64,32}%>, or %<--with-long-double=double%> together with %<--with-double={32|32,64|64,32}%>"
  msgstr ""
*************** msgstr ""
*** 38674,38720 ****
  msgid "%<-mcpu=%s%> has invalid silicon revision"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:1994
  #, gcc-internal-format
  msgid "%<-malign-loops%> is obsolete, use %<-falign-loops%>"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:1997
  #, gcc-internal-format
  msgid "%<-malign-loops=%d%> is not between 0 and %d"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2004
  #, gcc-internal-format
  msgid "%<-malign-jumps%> is obsolete, use %<-falign-jumps%>"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2007
  #, gcc-internal-format
  msgid "%<-malign-jumps=%d%> is not between 0 and %d"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2015
  #, gcc-internal-format
  msgid "%<-malign-functions%> is obsolete, use %<-falign-functions%>"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2018
  #, gcc-internal-format
  msgid "%<-malign-functions=%d%> is not between 0 and %d"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2027
  #, gcc-internal-format
  msgid "%<-mbranch-cost=%d%> is not between 0 and 5"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2091 common/config/s390/s390-common.cc:141
  #, gcc-internal-format
  msgid "%<-fsplit-stack%> currently only supported on GNU/Linux"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2101
  #, gcc-internal-format
  msgid "%<-fsplit-stack%> requires assembler support for CFI directives"
  msgstr ""
--- 38681,38727 ----
  msgid "%<-mcpu=%s%> has invalid silicon revision"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:1993
  #, gcc-internal-format
  msgid "%<-malign-loops%> is obsolete, use %<-falign-loops%>"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:1996
  #, gcc-internal-format
  msgid "%<-malign-loops=%d%> is not between 0 and %d"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2003
  #, gcc-internal-format
  msgid "%<-malign-jumps%> is obsolete, use %<-falign-jumps%>"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2006
  #, gcc-internal-format
  msgid "%<-malign-jumps=%d%> is not between 0 and %d"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2014
  #, gcc-internal-format
  msgid "%<-malign-functions%> is obsolete, use %<-falign-functions%>"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2017
  #, gcc-internal-format
  msgid "%<-malign-functions=%d%> is not between 0 and %d"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2026
  #, gcc-internal-format
  msgid "%<-mbranch-cost=%d%> is not between 0 and 5"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2090 common/config/s390/s390-common.cc:141
  #, gcc-internal-format
  msgid "%<-fsplit-stack%> currently only supported on GNU/Linux"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2100
  #, gcc-internal-format
  msgid "%<-fsplit-stack%> requires assembler support for CFI directives"
  msgstr ""
*************** msgstr ""
*** 38961,39018 ****
  msgid "unknown value %qs of %<-mmacosx-version-min%>"
  msgstr ""
  
! #: config/darwin-driver.cc:147
  #, gcc-internal-format
  msgid "%<sysctl%> for %<kern.osversion%> failed: %m"
  msgstr ""
  
! #: config/darwin-driver.cc:186
  #, gcc-internal-format
  msgid "could not understand %<kern.osversion%> %q.*s"
  msgstr ""
  
! #: config/darwin-driver.cc:226
  #, fuzzy, gcc-internal-format
  msgid "could not understand version %qs"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ð·Ð½Ð°Ð¹Ñ�Ñ†Ñ– ÐºÑ€Ñ‹Ð½Ñ–Ñ†Ñƒ %s\n"
  
! #: config/darwin-driver.cc:300
  #, fuzzy, gcc-internal-format
  #| msgid "%s does not support %s"
  msgid "this compiler does not support %qs"
  msgstr "%s Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ %s"
  
! #: config/darwin-driver.cc:326
  #, gcc-internal-format
  msgid "%qs is not valid for %<-mmacosx-version-min%>"
  msgstr ""
  
! #: config/darwin-driver.cc:377
  #, gcc-internal-format
  msgid "this compiler does not support PowerPC (%<-arch%> option ignored)"
  msgstr ""
  
! #: config/darwin-driver.cc:384
  #, gcc-internal-format
  msgid "%qs conflicts with %<-arch i386%> (%qs ignored)"
  msgstr ""
  
! #: config/darwin-driver.cc:393
  #, gcc-internal-format
  msgid "%<-m32%> conflicts with %<-arch x86_64%> (%<-m32%> ignored)"
  msgstr ""
  
! #: config/darwin-driver.cc:400
  #, gcc-internal-format
  msgid "this compiler does not support x86 (%<-arch%> option ignored)"
  msgstr ""
  
! #: config/darwin-driver.cc:407
  #, gcc-internal-format
  msgid "%qs conflicts with %<-arch ppc%> (%qs ignored)"
  msgstr ""
  
! #: config/darwin-driver.cc:416
  #, gcc-internal-format
  msgid "%<-m32%> conflicts with %<-arch ppc64%> (%<-m32%> ignored)"
  msgstr ""
--- 38968,39025 ----
  msgid "unknown value %qs of %<-mmacosx-version-min%>"
  msgstr ""
  
! #: config/darwin-driver.cc:148
  #, gcc-internal-format
  msgid "%<sysctl%> for %<kern.osversion%> failed: %m"
  msgstr ""
  
! #: config/darwin-driver.cc:188
  #, gcc-internal-format
  msgid "could not understand %<kern.osversion%> %q.*s"
  msgstr ""
  
! #: config/darwin-driver.cc:228
  #, fuzzy, gcc-internal-format
  msgid "could not understand version %qs"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ð·Ð½Ð°Ð¹Ñ�Ñ†Ñ– ÐºÑ€Ñ‹Ð½Ñ–Ñ†Ñƒ %s\n"
  
! #: config/darwin-driver.cc:302
  #, fuzzy, gcc-internal-format
  #| msgid "%s does not support %s"
  msgid "this compiler does not support %qs"
  msgstr "%s Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ %s"
  
! #: config/darwin-driver.cc:328
  #, gcc-internal-format
  msgid "%qs is not valid for %<-mmacosx-version-min%>"
  msgstr ""
  
! #: config/darwin-driver.cc:379
  #, gcc-internal-format
  msgid "this compiler does not support PowerPC (%<-arch%> option ignored)"
  msgstr ""
  
! #: config/darwin-driver.cc:386
  #, gcc-internal-format
  msgid "%qs conflicts with %<-arch i386%> (%qs ignored)"
  msgstr ""
  
! #: config/darwin-driver.cc:395
  #, gcc-internal-format
  msgid "%<-m32%> conflicts with %<-arch x86_64%> (%<-m32%> ignored)"
  msgstr ""
  
! #: config/darwin-driver.cc:402
  #, gcc-internal-format
  msgid "this compiler does not support x86 (%<-arch%> option ignored)"
  msgstr ""
  
! #: config/darwin-driver.cc:409
  #, gcc-internal-format
  msgid "%qs conflicts with %<-arch ppc%> (%qs ignored)"
  msgstr ""
  
! #: config/darwin-driver.cc:418
  #, gcc-internal-format
  msgid "%<-m32%> conflicts with %<-arch ppc64%> (%<-m32%> ignored)"
  msgstr ""
*************** msgstr ""
*** 39182,39189 ****
  msgid "ACLE function %qD requires ISA extension %qs"
  msgstr ""
  
! #: config/aarch64/aarch64-builtins.cc:2540 config/aarch64/aarch64.cc:11462
! #: config/aarch64/aarch64.cc:18764 config/aarch64/aarch64.cc:19379
  #, gcc-internal-format
  msgid "you can enable %qs using the command-line option %<-march%>, or by using the %<target%> attribute or pragma"
  msgstr ""
--- 39189,39196 ----
  msgid "ACLE function %qD requires ISA extension %qs"
  msgstr ""
  
! #: config/aarch64/aarch64-builtins.cc:2540 config/aarch64/aarch64.cc:11477
! #: config/aarch64/aarch64.cc:18779 config/aarch64/aarch64.cc:19394
  #, gcc-internal-format
  msgid "you can enable %qs using the command-line option %<-march%>, or by using the %<target%> attribute or pragma"
  msgstr ""
*************** msgstr ""
*** 39737,40242 ****
  msgid "SVE type %qT not allowed in %<target%> device clauses"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:649
  #, gcc-internal-format
  msgid "the arguments to %qE must be constant strings"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:657
  #, fuzzy, gcc-internal-format
  msgid "unrecognized state string %qs"
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"-%s\""
  
! #: config/aarch64/aarch64.cc:741
  #, fuzzy, gcc-internal-format
  msgid "the %qE attribute cannot be applied to an SVE function type"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: config/aarch64/aarch64.cc:768
  #, gcc-internal-format
  msgid "cannot create a new %qs scope since %qs is shared with callers"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:784
  #, fuzzy, gcc-internal-format
  msgid "%qE attribute applies only to function definitions"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: config/aarch64/aarch64.cc:830
  #, gcc-internal-format
  msgid "inconsistent attributes for state %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:1327
  #, gcc-internal-format
  msgid "%qs is incompatible with the use of floating-point types"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:1330
  #, gcc-internal-format
  msgid "%qs is incompatible with the use of vector types"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:1334
  #, gcc-internal-format
  msgid "%qs feature modifier is incompatible with the use of floating-point types"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:1337
  #, gcc-internal-format
  msgid "%qs feature modifier is incompatible with the use of vector types"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:1353
  #, gcc-internal-format
  msgid "this operation requires the SVE ISA extension"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:1354
  #, gcc-internal-format
  msgid "you can enable SVE using the command-line option %<-march%>, or by using the %<target%> attribute or pragma"
  msgstr ""
  
  #. We can't gracefully recover at this point, so make this a
  #. fatal error.
! #: config/aarch64/aarch64.cc:6685
  #, gcc-internal-format
  msgid "arguments of type %qT require the SVE ISA extension"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7162
  #, fuzzy, gcc-internal-format
  msgid "SVE type %qT cannot be passed to an unprototyped function"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: config/aarch64/aarch64.cc:7303 config/aarch64/aarch64.cc:7382
! #: config/aarch64/aarch64.cc:21640
  #, gcc-internal-format
  msgid "parameter passing for argument of type %qT changed in GCC 13.1"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7310 config/aarch64/aarch64.cc:7389
! #: config/aarch64/aarch64.cc:21647
  #, gcc-internal-format
  msgid "parameter passing for argument of type %qT changed in GCC 14.1"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7321 config/aarch64/aarch64.cc:7399
! #: config/aarch64/aarch64.cc:21655 config/arm/arm.cc:7338
  #: config/arm/arm.cc:7368 config/arm/arm.cc:29593
  #, gcc-internal-format
  msgid "parameter passing for argument of type %qT changed in GCC 9.1"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7526
  #, gcc-internal-format
  msgid "%qE requires the SVE ISA extension"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7529
  #, gcc-internal-format
  msgid "calls to functions of type %qT require the SVE ISA extension"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7717
  #, gcc-internal-format
  msgid "stack probes for SVE frames"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11460
  #, gcc-internal-format
  msgid "calling a streaming function requires the ISA extension %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11469 config/aarch64/aarch64.cc:11473
  #, gcc-internal-format
  msgid "call to a function that shares %qs state from a function that has no %qs state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11476
  #, gcc-internal-format
  msgid "call to a function that shares SME state from a function that has no SME state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11534
  #, gcc-internal-format
  msgid "call to a function that shares state other than %qs from a function that has %qs state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11536
  #, gcc-internal-format
  msgid "use %<__arm_preserves(\"za\")%> if the callee preserves ZA"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18382
  #, gcc-internal-format
  msgid "unknown flag passed in %<-moverride=%s%> (%s)"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18426
  #, gcc-internal-format
  msgid "%qs string ill-formed"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18482
  #, gcc-internal-format
  msgid "invalid format for %<sve_width%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18494
  #, fuzzy, gcc-internal-format
  #| msgid "invalid %%Q value"
  msgid "invalid %<sve_width%> value: %d"
  msgstr "Ð´Ñ€Ñ�Ð½Ð½Ð°Ðµ %%Q Ð·Ð½Ð°Ñ‡Ñ�Ð½Ð½Ðµ"
  
! #: config/aarch64/aarch64.cc:18514
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "tuning string missing in option (%s)"
  msgstr "Ð�ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: config/aarch64/aarch64.cc:18532
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "unknown tuning option (%s)"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð°: %s\n"
  
! #: config/aarch64/aarch64.cc:18719 config/arm/arm.cc:3223
! #: config/riscv/riscv.cc:10776
  #, gcc-internal-format
  msgid "incompatible options %<-mstack-protector-guard=global%> and %<-mstack-protector-guard-offset=%s%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18728 config/riscv/riscv.cc:10785
  #, gcc-internal-format
  msgid "both %<-mstack-protector-guard-offset%> and %<-mstack-protector-guard-reg%> must be used with %<-mstack-protector-guard=sysreg%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18736
  #, gcc-internal-format
  msgid "specify a system register with a small string length"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18746 config/arm/arm.cc:3235
! #: config/riscv/riscv.cc:10814 config/rs6000/rs6000.cc:4518
  #, fuzzy, gcc-internal-format
  msgid "%qs is not a valid offset in %qs"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ %s"
  
! #: config/aarch64/aarch64.cc:18753
  #, gcc-internal-format
  msgid "%<-fsanitize=shadow-call-stack%> requires %<-ffixed-x18%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18760
  #, gcc-internal-format
  msgid "streaming functions require the ISA extension %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18762
  #, gcc-internal-format
  msgid "functions with SME state require the ISA extension %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18858
  #, gcc-internal-format
  msgid "only values 12 (4 KB) and 16 (64 KB) are supported for guard size.  Given value %d (%llu KB) is out of range"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18874 config/riscv/riscv.cc:10834
  #, gcc-internal-format
  msgid "stack clash guard size %<%d%> must be equal to probing interval %<%d%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18902
  #, gcc-internal-format
  msgid "no support for %qs without %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18955
  #, gcc-internal-format
  msgid "invalid argument given to %<-mharden-sls=%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18966
  #, gcc-internal-format
  msgid "%qs must be by itself for %<-mharden-sls=%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18971
  #, fuzzy, gcc-internal-format
  msgid "invalid argument %qs for %<-mharden-sls=%>"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: config/aarch64/aarch64.cc:19127
  #, gcc-internal-format
  msgid "switch %<-mcpu=%s%> conflicts with %<-march=%s%> switch and resulted in options %qs being added"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19194
  #, fuzzy, gcc-internal-format
  #| msgid "%s does not support %s"
  msgid "assembler does not support %<-mabi=ilp32%>"
  msgstr "%s Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ %s"
  
! #: config/aarch64/aarch64.cc:19197
  #, gcc-internal-format
  msgid "%<-mabi=ilp32%> is deprecated"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19203
  #, gcc-internal-format
  msgid "return address signing is only supported for %<-mabi=lp64%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19276
  #, gcc-internal-format
  msgid "code model %qs with %<-f%s%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19279
  #, fuzzy, gcc-internal-format
  msgid "code model %qs not supported in ilp32 mode"
  msgstr "-pipe Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð°"
  
! #: config/aarch64/aarch64.cc:19377
  #, gcc-internal-format
  msgid "functions with %qs state require the ISA extension %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19482
  #, gcc-internal-format
  msgid "missing name in %<target(\"arch=\")%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19485
  #, gcc-internal-format
  msgid "invalid name %qs in %<target(\"arch=\")%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19489
  #, gcc-internal-format
  msgid "invalid feature modifier %s of value %qs in %<target()%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19524
  #, gcc-internal-format
  msgid "missing name in %<target(\"cpu=\")%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19527
  #, gcc-internal-format
  msgid "invalid name %qs in %<target(\"cpu=\")%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19531 config/aarch64/aarch64.cc:19615
  #, gcc-internal-format
  msgid "invalid feature modifier %qs of value %qs in %<target()%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19570
  #, gcc-internal-format
  msgid "invalid name %qs in %<target(\"tune=\")%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19611
  #, gcc-internal-format
  msgid "missing value in %<target()%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19669 config/aarch64/aarch64.cc:19846
  #: config/loongarch/loongarch-target-attr.cc:144
  #: config/loongarch/loongarch-target-attr.cc:309
  #, gcc-internal-format
  msgid "malformed %<target()%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19715
  #, gcc-internal-format
  msgid "pragma or attribute %<target(\"%s\")%> does not accept an argument"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19723 config/i386/i386-options.cc:1315
  #: config/loongarch/loongarch-target-attr.cc:181
  #, gcc-internal-format
  msgid "pragma or attribute %<target(\"%s\")%> does not allow a negated form"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19777
  #: config/loongarch/loongarch-target-attr.cc:221
  #, gcc-internal-format
  msgid "pragma or attribute %<target(\"%s=%s\")%> is not valid"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19834 config/arm/arm.cc:33836
  #: config/loongarch/loongarch-target-attr.cc:297
  #: config/riscv/riscv-target-attr.cc:431 config/rs6000/rs6000.cc:24714
! #: config/s390/s390.cc:16661
  #, gcc-internal-format
  msgid "attribute %<target%> argument not a string"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19871
  #, gcc-internal-format
  msgid "arch extension %qs should be prefixed by %<+%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19874
  #, gcc-internal-format
  msgid "pragma or attribute %<target(\"%s\")%> is not valid"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19883
  #: config/loongarch/loongarch-target-attr.cc:332
  #, gcc-internal-format
  msgid "malformed %<target(\"%s\")%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20101
  #, gcc-internal-format
  msgid "Function Multi Versioning support is experimental, and the behavior is likely to change"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20110 config/riscv/riscv-target-attr.cc:497
  #, gcc-internal-format
  msgid "attribute %<target_version%> has multiple values"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20118 config/riscv/riscv-target-attr.cc:505
  #, gcc-internal-format
  msgid "attribute %<target_version%> argument not a string"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20140
  #, fuzzy, gcc-internal-format
  msgid "missing value in %<target_version%> attribute"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: config/aarch64/aarch64.cc:20144
  #, gcc-internal-format
  msgid "invalid feature modifier %qs of value %qs in %<target_version%> attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20150
  #, gcc-internal-format
  msgid "duplicate feature modifier %qs of value %qs in %<target_version%> attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20736 config/i386/i386-features.cc:3911
! #: config/i386/i386-features.cc:4180 config/riscv/riscv.cc:13694
  #, fuzzy, gcc-internal-format
  #| msgid "virtual functions cannot be friends"
  msgid "virtual function multiversioning not supported"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: config/aarch64/aarch64.cc:20857 config/i386/i386-features.cc:4044
! #: config/riscv/riscv.cc:13819 config/rs6000/rs6000.cc:25404
  #, fuzzy, gcc-internal-format
  msgid "multiversioning needs %<ifunc%> which is not supported on this target"
  msgstr "__buitin_saveregs Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð° Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ð°Ð¹"
  
! #: config/aarch64/aarch64.cc:22409 config/arm/arm.cc:6686
  #: config/rs6000/rs6000-call.cc:366 config/s390/s390.cc:12993
  msgid "parameter passing for argument of type %qT with %<[[no_unique_address]]%> members changed %{in GCC 10.1%}"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:22414 config/arm/arm.cc:6691
  #: config/rs6000/rs6000-call.cc:361 config/s390/s390.cc:12988
  msgid "parameter passing for argument of type %qT when C++17 is enabled changed to match C++14 %{in GCC 10.1%}"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:22419 config/arm/arm.cc:6696
  msgid "parameter passing for argument of type %qT changed %{in GCC 12.1%}"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:23825 config/aarch64/aarch64.cc:23828
  #, gcc-internal-format
  msgid "lane %wd out of range %wd - %wd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29341 config/i386/i386.cc:25621
! #: config/i386/i386.cc:25752
  #, fuzzy, gcc-internal-format
  #| msgid "unsupported version"
  msgid "unsupported simdlen %wd"
  msgstr "Ð½ÐµÐ¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÐ¼Ð°Ñ� Ð²ÐµÑ€Ñ�Ñ–Ñ�"
  
! #: config/aarch64/aarch64.cc:29355
  #, gcc-internal-format
  msgid "GCC does not currently support return type %qT for simd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29359 config/i386/i386.cc:25643
  #, gcc-internal-format
  msgid "unsupported return type %qT for simd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29393
  #, gcc-internal-format
  msgid "GCC does not currently support argument type %qT for simd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29397 config/i386/i386.cc:25674
  #, gcc-internal-format
  msgid "unsupported argument type %qT for simd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29468
  #, gcc-internal-format
  msgid "GCC does not currently support simdlen %wd for type %qT"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29488
  #, gcc-internal-format
  msgid "GCC does not currently support a simdclone with simdlens %wd and %wd for these types."
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29676
  #, gcc-internal-format
  msgid "cannot apply attribute %qs to %q+D after the function has been defined"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29678
  #, fuzzy, gcc-internal-format
  msgid "%q+D defined here"
  msgstr "YYDEBUG Ð½Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½."
  
! #: config/aarch64/aarch64.cc:30158
  #, gcc-internal-format
  msgid "non-local gotos in functions with SME state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:30467
  #, gcc-internal-format
  msgid "catching non-call exceptions in functions with SME state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:31107 config/arm/arm-mve-builtins.cc:634
  #: config/riscv/riscv-vector-builtins.cc:4493
  #, fuzzy, gcc-internal-format
  msgid "argument %d of %qE must be an integer constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: config/aarch64/aarch64.cc:31120
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects the value %wd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:31123 config/arm/arm-mve-builtins.cc:646
  #: config/riscv/riscv-vector-builtins.cc:4507
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects a value in the range [%wd, %wd]"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:31136
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects either %wd or %wd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:31150 config/arm/arm-mve-builtins.cc:685
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects %wd, %wd, %wd or %wd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:31162 config/arm/arm-mve-builtins.cc:672
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects a valid %qT value"
  msgstr ""
--- 39744,40249 ----
  msgid "SVE type %qT not allowed in %<target%> device clauses"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:650
  #, gcc-internal-format
  msgid "the arguments to %qE must be constant strings"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:658
  #, fuzzy, gcc-internal-format
  msgid "unrecognized state string %qs"
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"-%s\""
  
! #: config/aarch64/aarch64.cc:742
  #, fuzzy, gcc-internal-format
  msgid "the %qE attribute cannot be applied to an SVE function type"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: config/aarch64/aarch64.cc:769
  #, gcc-internal-format
  msgid "cannot create a new %qs scope since %qs is shared with callers"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:785
  #, fuzzy, gcc-internal-format
  msgid "%qE attribute applies only to function definitions"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: config/aarch64/aarch64.cc:831
  #, gcc-internal-format
  msgid "inconsistent attributes for state %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:1328
  #, gcc-internal-format
  msgid "%qs is incompatible with the use of floating-point types"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:1331
  #, gcc-internal-format
  msgid "%qs is incompatible with the use of vector types"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:1335
  #, gcc-internal-format
  msgid "%qs feature modifier is incompatible with the use of floating-point types"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:1338
  #, gcc-internal-format
  msgid "%qs feature modifier is incompatible with the use of vector types"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:1354
  #, gcc-internal-format
  msgid "this operation requires the SVE ISA extension"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:1355
  #, gcc-internal-format
  msgid "you can enable SVE using the command-line option %<-march%>, or by using the %<target%> attribute or pragma"
  msgstr ""
  
  #. We can't gracefully recover at this point, so make this a
  #. fatal error.
! #: config/aarch64/aarch64.cc:6686
  #, gcc-internal-format
  msgid "arguments of type %qT require the SVE ISA extension"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7163
  #, fuzzy, gcc-internal-format
  msgid "SVE type %qT cannot be passed to an unprototyped function"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: config/aarch64/aarch64.cc:7304 config/aarch64/aarch64.cc:7383
! #: config/aarch64/aarch64.cc:21655
  #, gcc-internal-format
  msgid "parameter passing for argument of type %qT changed in GCC 13.1"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7311 config/aarch64/aarch64.cc:7390
! #: config/aarch64/aarch64.cc:21662
  #, gcc-internal-format
  msgid "parameter passing for argument of type %qT changed in GCC 14.1"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7322 config/aarch64/aarch64.cc:7400
! #: config/aarch64/aarch64.cc:21670 config/arm/arm.cc:7338
  #: config/arm/arm.cc:7368 config/arm/arm.cc:29593
  #, gcc-internal-format
  msgid "parameter passing for argument of type %qT changed in GCC 9.1"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7527
  #, gcc-internal-format
  msgid "%qE requires the SVE ISA extension"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7530
  #, gcc-internal-format
  msgid "calls to functions of type %qT require the SVE ISA extension"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7718
  #, gcc-internal-format
  msgid "stack probes for SVE frames"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11475
  #, gcc-internal-format
  msgid "calling a streaming function requires the ISA extension %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11484 config/aarch64/aarch64.cc:11488
  #, gcc-internal-format
  msgid "call to a function that shares %qs state from a function that has no %qs state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11491
  #, gcc-internal-format
  msgid "call to a function that shares SME state from a function that has no SME state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11549
  #, gcc-internal-format
  msgid "call to a function that shares state other than %qs from a function that has %qs state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11551
  #, gcc-internal-format
  msgid "use %<__arm_preserves(\"za\")%> if the callee preserves ZA"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18397
  #, gcc-internal-format
  msgid "unknown flag passed in %<-moverride=%s%> (%s)"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18441
  #, gcc-internal-format
  msgid "%qs string ill-formed"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18497
  #, gcc-internal-format
  msgid "invalid format for %<sve_width%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18509
  #, fuzzy, gcc-internal-format
  #| msgid "invalid %%Q value"
  msgid "invalid %<sve_width%> value: %d"
  msgstr "Ð´Ñ€Ñ�Ð½Ð½Ð°Ðµ %%Q Ð·Ð½Ð°Ñ‡Ñ�Ð½Ð½Ðµ"
  
! #: config/aarch64/aarch64.cc:18529
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "tuning string missing in option (%s)"
  msgstr "Ð�ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: config/aarch64/aarch64.cc:18547
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "unknown tuning option (%s)"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð°: %s\n"
  
! #: config/aarch64/aarch64.cc:18734 config/arm/arm.cc:3223
! #: config/riscv/riscv.cc:10785
  #, gcc-internal-format
  msgid "incompatible options %<-mstack-protector-guard=global%> and %<-mstack-protector-guard-offset=%s%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18743 config/riscv/riscv.cc:10794
  #, gcc-internal-format
  msgid "both %<-mstack-protector-guard-offset%> and %<-mstack-protector-guard-reg%> must be used with %<-mstack-protector-guard=sysreg%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18751
  #, gcc-internal-format
  msgid "specify a system register with a small string length"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18761 config/arm/arm.cc:3235
! #: config/riscv/riscv.cc:10823 config/rs6000/rs6000.cc:4518
  #, fuzzy, gcc-internal-format
  msgid "%qs is not a valid offset in %qs"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ %s"
  
! #: config/aarch64/aarch64.cc:18768
  #, gcc-internal-format
  msgid "%<-fsanitize=shadow-call-stack%> requires %<-ffixed-x18%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18775
  #, gcc-internal-format
  msgid "streaming functions require the ISA extension %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18777
  #, gcc-internal-format
  msgid "functions with SME state require the ISA extension %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18873
  #, gcc-internal-format
  msgid "only values 12 (4 KB) and 16 (64 KB) are supported for guard size.  Given value %d (%llu KB) is out of range"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18889 config/riscv/riscv.cc:10843
  #, gcc-internal-format
  msgid "stack clash guard size %<%d%> must be equal to probing interval %<%d%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18917
  #, gcc-internal-format
  msgid "no support for %qs without %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18970
  #, gcc-internal-format
  msgid "invalid argument given to %<-mharden-sls=%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18981
  #, gcc-internal-format
  msgid "%qs must be by itself for %<-mharden-sls=%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18986
  #, fuzzy, gcc-internal-format
  msgid "invalid argument %qs for %<-mharden-sls=%>"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: config/aarch64/aarch64.cc:19142
  #, gcc-internal-format
  msgid "switch %<-mcpu=%s%> conflicts with %<-march=%s%> switch and resulted in options %qs being added"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19209
  #, fuzzy, gcc-internal-format
  #| msgid "%s does not support %s"
  msgid "assembler does not support %<-mabi=ilp32%>"
  msgstr "%s Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ %s"
  
! #: config/aarch64/aarch64.cc:19212
  #, gcc-internal-format
  msgid "%<-mabi=ilp32%> is deprecated"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19218
  #, gcc-internal-format
  msgid "return address signing is only supported for %<-mabi=lp64%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19291
  #, gcc-internal-format
  msgid "code model %qs with %<-f%s%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19294
  #, fuzzy, gcc-internal-format
  msgid "code model %qs not supported in ilp32 mode"
  msgstr "-pipe Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð°"
  
! #: config/aarch64/aarch64.cc:19392
  #, gcc-internal-format
  msgid "functions with %qs state require the ISA extension %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19497
  #, gcc-internal-format
  msgid "missing name in %<target(\"arch=\")%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19500
  #, gcc-internal-format
  msgid "invalid name %qs in %<target(\"arch=\")%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19504
  #, gcc-internal-format
  msgid "invalid feature modifier %s of value %qs in %<target()%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19539
  #, gcc-internal-format
  msgid "missing name in %<target(\"cpu=\")%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19542
  #, gcc-internal-format
  msgid "invalid name %qs in %<target(\"cpu=\")%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19546 config/aarch64/aarch64.cc:19630
  #, gcc-internal-format
  msgid "invalid feature modifier %qs of value %qs in %<target()%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19585
  #, gcc-internal-format
  msgid "invalid name %qs in %<target(\"tune=\")%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19626
  #, gcc-internal-format
  msgid "missing value in %<target()%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19684 config/aarch64/aarch64.cc:19861
  #: config/loongarch/loongarch-target-attr.cc:144
  #: config/loongarch/loongarch-target-attr.cc:309
  #, gcc-internal-format
  msgid "malformed %<target()%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19730
  #, gcc-internal-format
  msgid "pragma or attribute %<target(\"%s\")%> does not accept an argument"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19738 config/i386/i386-options.cc:1315
  #: config/loongarch/loongarch-target-attr.cc:181
  #, gcc-internal-format
  msgid "pragma or attribute %<target(\"%s\")%> does not allow a negated form"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19792
  #: config/loongarch/loongarch-target-attr.cc:221
  #, gcc-internal-format
  msgid "pragma or attribute %<target(\"%s=%s\")%> is not valid"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19849 config/arm/arm.cc:33836
  #: config/loongarch/loongarch-target-attr.cc:297
  #: config/riscv/riscv-target-attr.cc:431 config/rs6000/rs6000.cc:24714
! #: config/s390/s390.cc:16688
  #, gcc-internal-format
  msgid "attribute %<target%> argument not a string"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19886
  #, gcc-internal-format
  msgid "arch extension %qs should be prefixed by %<+%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19889
  #, gcc-internal-format
  msgid "pragma or attribute %<target(\"%s\")%> is not valid"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19898
  #: config/loongarch/loongarch-target-attr.cc:332
  #, gcc-internal-format
  msgid "malformed %<target(\"%s\")%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20116
  #, gcc-internal-format
  msgid "Function Multi Versioning support is experimental, and the behavior is likely to change"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20125 config/riscv/riscv-target-attr.cc:497
  #, gcc-internal-format
  msgid "attribute %<target_version%> has multiple values"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20133 config/riscv/riscv-target-attr.cc:505
  #, gcc-internal-format
  msgid "attribute %<target_version%> argument not a string"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20155
  #, fuzzy, gcc-internal-format
  msgid "missing value in %<target_version%> attribute"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: config/aarch64/aarch64.cc:20159
  #, gcc-internal-format
  msgid "invalid feature modifier %qs of value %qs in %<target_version%> attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20165
  #, gcc-internal-format
  msgid "duplicate feature modifier %qs of value %qs in %<target_version%> attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20751 config/i386/i386-features.cc:3911
! #: config/i386/i386-features.cc:4180 config/riscv/riscv.cc:13703
  #, fuzzy, gcc-internal-format
  #| msgid "virtual functions cannot be friends"
  msgid "virtual function multiversioning not supported"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: config/aarch64/aarch64.cc:20872 config/i386/i386-features.cc:4044
! #: config/riscv/riscv.cc:13828 config/rs6000/rs6000.cc:25404
  #, fuzzy, gcc-internal-format
  msgid "multiversioning needs %<ifunc%> which is not supported on this target"
  msgstr "__buitin_saveregs Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð° Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ð°Ð¹"
  
! #: config/aarch64/aarch64.cc:22424 config/arm/arm.cc:6686
  #: config/rs6000/rs6000-call.cc:366 config/s390/s390.cc:12993
  msgid "parameter passing for argument of type %qT with %<[[no_unique_address]]%> members changed %{in GCC 10.1%}"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:22429 config/arm/arm.cc:6691
  #: config/rs6000/rs6000-call.cc:361 config/s390/s390.cc:12988
  msgid "parameter passing for argument of type %qT when C++17 is enabled changed to match C++14 %{in GCC 10.1%}"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:22434 config/arm/arm.cc:6696
  msgid "parameter passing for argument of type %qT changed %{in GCC 12.1%}"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:23889 config/aarch64/aarch64.cc:23892
  #, gcc-internal-format
  msgid "lane %wd out of range %wd - %wd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29422 config/i386/i386.cc:25619
! #: config/i386/i386.cc:25750
  #, fuzzy, gcc-internal-format
  #| msgid "unsupported version"
  msgid "unsupported simdlen %wd"
  msgstr "Ð½ÐµÐ¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÐ¼Ð°Ñ� Ð²ÐµÑ€Ñ�Ñ–Ñ�"
  
! #: config/aarch64/aarch64.cc:29436
  #, gcc-internal-format
  msgid "GCC does not currently support return type %qT for simd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29440 config/i386/i386.cc:25641
  #, gcc-internal-format
  msgid "unsupported return type %qT for simd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29474
  #, gcc-internal-format
  msgid "GCC does not currently support argument type %qT for simd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29478 config/i386/i386.cc:25672
  #, gcc-internal-format
  msgid "unsupported argument type %qT for simd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29549
  #, gcc-internal-format
  msgid "GCC does not currently support simdlen %wd for type %qT"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29569
  #, gcc-internal-format
  msgid "GCC does not currently support a simdclone with simdlens %wd and %wd for these types."
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29757
  #, gcc-internal-format
  msgid "cannot apply attribute %qs to %q+D after the function has been defined"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29759
  #, fuzzy, gcc-internal-format
  msgid "%q+D defined here"
  msgstr "YYDEBUG Ð½Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½."
  
! #: config/aarch64/aarch64.cc:30239
  #, gcc-internal-format
  msgid "non-local gotos in functions with SME state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:30548
  #, gcc-internal-format
  msgid "catching non-call exceptions in functions with SME state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:31188 config/arm/arm-mve-builtins.cc:634
  #: config/riscv/riscv-vector-builtins.cc:4493
  #, fuzzy, gcc-internal-format
  msgid "argument %d of %qE must be an integer constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: config/aarch64/aarch64.cc:31201
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects the value %wd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:31204 config/arm/arm-mve-builtins.cc:646
  #: config/riscv/riscv-vector-builtins.cc:4507
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects a value in the range [%wd, %wd]"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:31217
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects either %wd or %wd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:31231 config/arm/arm-mve-builtins.cc:685
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects %wd, %wd, %wd or %wd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:31243 config/arm/arm-mve-builtins.cc:672
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects a valid %qT value"
  msgstr ""
*************** msgstr ""
*** 40296,40302 ****
  msgid "bad value %qs for %<-mmemory-latency%>"
  msgstr ""
  
! #: config/alpha/alpha.cc:7360 config/alpha/alpha.cc:7363 config/arc/arc.cc:6981
  #: config/arc/arc.cc:7255 config/s390/s390.cc:942
  #, gcc-internal-format
  msgid "bad builtin fcode"
--- 40303,40309 ----
  msgid "bad value %qs for %<-mmemory-latency%>"
  msgstr ""
  
! #: config/alpha/alpha.cc:7357 config/alpha/alpha.cc:7360 config/arc/arc.cc:6981
  #: config/arc/arc.cc:7255 config/s390/s390.cc:942
  #, gcc-internal-format
  msgid "bad builtin fcode"
*************** msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args
*** 40427,40433 ****
  #: config/i386/i386-options.cc:3906 config/i386/i386-options.cc:3962
  #: config/i386/i386-options.cc:4013 config/i386/i386-options.cc:4050
  #: config/m68k/m68k.cc:804 config/mcore/mcore.cc:3070
! #: config/nvptx/nvptx.cc:5895 config/riscv/riscv.cc:6533
  #: config/rl78/rl78.cc:821 config/rl78/rl78.cc:890
  #: config/rs6000/rs6000.cc:20642 config/rx/rx.cc:2727 config/rx/rx.cc:2753
  #: config/s390/s390.cc:1157 config/s390/s390.cc:1247 config/sh/sh.cc:8442
--- 40434,40440 ----
  #: config/i386/i386-options.cc:3906 config/i386/i386-options.cc:3962
  #: config/i386/i386-options.cc:4013 config/i386/i386-options.cc:4050
  #: config/m68k/m68k.cc:804 config/mcore/mcore.cc:3070
! #: config/nvptx/nvptx.cc:5901 config/riscv/riscv.cc:6533
  #: config/rl78/rl78.cc:821 config/rl78/rl78.cc:890
  #: config/rs6000/rs6000.cc:20642 config/rx/rx.cc:2727 config/rx/rx.cc:2753
  #: config/s390/s390.cc:1157 config/s390/s390.cc:1247 config/sh/sh.cc:8442
*************** msgid "argument of %qE attribute ignored
*** 40567,40588 ****
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ \"%s\" Ð±Ð¾Ð»ÑŒÑˆ Ñ‡Ð°Ð¼ %d Ð±Ð°Ð¹Ñ‚"
  
  #: config/arc/arc.cc:11004 config/avr/avr.cc:11384 config/bfin/bfin.cc:4818
! #: config/mingw/winnt.cc:63 config/nvptx/nvptx.cc:5918
  #, fuzzy, gcc-internal-format
  msgid "%qE attribute only applies to variables"
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
! #: config/arm/aarch-common.cc:553 config/i386/i386.cc:24288
  #, gcc-internal-format
  msgid "alternatives not allowed in %<asm%> flag output"
  msgstr ""
  
! #: config/arm/aarch-common.cc:614 config/i386/i386.cc:24352
  #, gcc-internal-format
  msgid "unknown %<asm%> flag output %qs"
  msgstr ""
  
! #: config/arm/aarch-common.cc:624 config/i386/i386.cc:24381
  #, gcc-internal-format
  msgid "invalid type for %<asm%> flag output"
  msgstr ""
--- 40574,40595 ----
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ \"%s\" Ð±Ð¾Ð»ÑŒÑˆ Ñ‡Ð°Ð¼ %d Ð±Ð°Ð¹Ñ‚"
  
  #: config/arc/arc.cc:11004 config/avr/avr.cc:11384 config/bfin/bfin.cc:4818
! #: config/mingw/winnt.cc:63 config/nvptx/nvptx.cc:5924
  #, fuzzy, gcc-internal-format
  msgid "%qE attribute only applies to variables"
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
! #: config/arm/aarch-common.cc:553 config/i386/i386.cc:24290
  #, gcc-internal-format
  msgid "alternatives not allowed in %<asm%> flag output"
  msgstr ""
  
! #: config/arm/aarch-common.cc:614 config/i386/i386.cc:24354
  #, gcc-internal-format
  msgid "unknown %<asm%> flag output %qs"
  msgstr ""
  
! #: config/arm/aarch-common.cc:624 config/i386/i386.cc:24383
  #, gcc-internal-format
  msgid "invalid type for %<asm%> flag output"
  msgstr ""
*************** msgstr ""
*** 41159,41165 ****
  msgid "supported core architectures:%s"
  msgstr ""
  
! #: config/avr/avr-passes.cc:4907
  #, gcc-internal-format
  msgid "failed to split insn"
  msgstr ""
--- 41166,41172 ----
  msgid "supported core architectures:%s"
  msgstr ""
  
! #: config/avr/avr-passes.cc:5038
  #, gcc-internal-format
  msgid "failed to split insn"
  msgstr ""
*************** msgstr "-pipe Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð
*** 41197,41208 ****
  msgid "%<-fPIE%> is not supported"
  msgstr "-pipe Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð°"
  
! #: config/avr/avr.cc:954 config/avr/avr.cc:959 config/riscv/riscv.cc:11234
  #, gcc-internal-format
  msgid "function attributes %qs and %qs are mutually exclusive"
  msgstr ""
  
! #: config/avr/avr.cc:981 config/riscv/riscv.cc:11246
  #, fuzzy, gcc-internal-format
  #| msgid "virtual functions cannot be friends"
  msgid "%qs function cannot have arguments"
--- 41204,41215 ----
  msgid "%<-fPIE%> is not supported"
  msgstr "-pipe Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð°"
  
! #: config/avr/avr.cc:954 config/avr/avr.cc:959 config/riscv/riscv.cc:11243
  #, gcc-internal-format
  msgid "function attributes %qs and %qs are mutually exclusive"
  msgstr ""
  
! #: config/avr/avr.cc:981 config/riscv/riscv.cc:11255
  #, fuzzy, gcc-internal-format
  #| msgid "virtual functions cannot be friends"
  msgid "%qs function cannot have arguments"
*************** msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ
*** 41213,41219 ****
  msgid "method %qs has an implicit %<this%> argument"
  msgstr ""
  
! #: config/avr/avr.cc:987 config/riscv/riscv.cc:11243
  #, fuzzy, gcc-internal-format
  #| msgid "function does not return string type"
  msgid "%qs function cannot return a value"
--- 41220,41226 ----
  msgid "method %qs has an implicit %<this%> argument"
  msgstr ""
  
! #: config/avr/avr.cc:987 config/riscv/riscv.cc:11252
  #, fuzzy, gcc-internal-format
  #| msgid "function does not return string type"
  msgid "%qs function cannot return a value"
*************** msgstr ""
*** 41379,41410 ****
  msgid "architecture %qs supported for assembler only"
  msgstr ""
  
! #: config/avr/avr.cc:15093
  #, gcc-internal-format
  msgid "conversion from address space %qs to address space %qs"
  msgstr ""
  
! #: config/avr/avr.cc:16261 config/avr/avr.cc:16274
  #, gcc-internal-format, gfc-internal-format
  msgid "%s expects a compile time integer constant"
  msgstr ""
  
! #: config/avr/avr.cc:16289
  #, gcc-internal-format, gfc-internal-format
  msgid "%s expects a compile time integer constant of 0x01, 0x7f, 0x80 or 0xfe as first argument"
  msgstr ""
  
! #: config/avr/avr.cc:16304
  #, gcc-internal-format, gfc-internal-format
  msgid "%s expects a compile time long integer constant as first argument"
  msgstr ""
  
! #: config/avr/avr.cc:16332
  #, gcc-internal-format, gfc-internal-format
  msgid "rounding to %d bits has no effect for fixed-point value with %d fractional bits"
  msgstr ""
  
! #: config/avr/avr.cc:16341
  #, gcc-internal-format
  msgid "rounding result will always be 0"
  msgstr ""
--- 41386,41417 ----
  msgid "architecture %qs supported for assembler only"
  msgstr ""
  
! #: config/avr/avr.cc:15107
  #, gcc-internal-format
  msgid "conversion from address space %qs to address space %qs"
  msgstr ""
  
! #: config/avr/avr.cc:16275 config/avr/avr.cc:16288
  #, gcc-internal-format, gfc-internal-format
  msgid "%s expects a compile time integer constant"
  msgstr ""
  
! #: config/avr/avr.cc:16303
  #, gcc-internal-format, gfc-internal-format
  msgid "%s expects a compile time integer constant of 0x01, 0x7f, 0x80 or 0xfe as first argument"
  msgstr ""
  
! #: config/avr/avr.cc:16318
  #, gcc-internal-format, gfc-internal-format
  msgid "%s expects a compile time long integer constant as first argument"
  msgstr ""
  
! #: config/avr/avr.cc:16346
  #, gcc-internal-format, gfc-internal-format
  msgid "rounding to %d bits has no effect for fixed-point value with %d fractional bits"
  msgstr ""
  
! #: config/avr/avr.cc:16355
  #, gcc-internal-format
  msgid "rounding result will always be 0"
  msgstr ""
*************** msgstr ""
*** 41852,41858 ****
  msgid "using %<vector_length (64)%>, ignoring runtime setting"
  msgstr ""
  
! #: config/gcn/gcn.cc:6351 config/nvptx/nvptx.cc:6748
  #, gcc-internal-format
  msgid "using %<num_workers (%d)%>, ignoring %d"
  msgstr ""
--- 41859,41865 ----
  msgid "using %<vector_length (64)%>, ignoring runtime setting"
  msgstr ""
  
! #: config/gcn/gcn.cc:6351 config/nvptx/nvptx.cc:6754
  #, gcc-internal-format
  msgid "using %<num_workers (%d)%>, ignoring %d"
  msgstr ""
*************** msgstr "Ð‘Ñ–Ð±Ð»Ñ–Ñ�Ñ‚Ñ�ÐºÐ° lib%s Ð½Ðµ
*** 41915,41926 ****
  msgid "unrecognizable argument of option %<"
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"-%s\""
  
! #: config/gcn/mkoffload.cc:1033 config/nvptx/mkoffload.cc:722
  #, gcc-internal-format
  msgid "%<-foffload-abi-host-opts%> specified multiple times"
  msgstr ""
  
! #: config/gcn/mkoffload.cc:1090 config/nvptx/mkoffload.cc:757
  #, gcc-internal-format
  msgid "either %<-fopenacc%> or %<-fopenmp%> must be set"
  msgstr ""
--- 41922,41933 ----
  msgid "unrecognizable argument of option %<"
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"-%s\""
  
! #: config/gcn/mkoffload.cc:1033 config/nvptx/mkoffload.cc:728
  #, gcc-internal-format
  msgid "%<-foffload-abi-host-opts%> specified multiple times"
  msgstr ""
  
! #: config/gcn/mkoffload.cc:1090 config/nvptx/mkoffload.cc:763
  #, gcc-internal-format
  msgid "either %<-fopenacc%> or %<-fopenmp%> must be set"
  msgstr ""
*************** msgstr ""
*** 41936,41948 ****
  msgid "cannot open %qs"
  msgstr "Ð½ÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð°Ð´Ñ‡Ñ‹Ð½Ñ–Ñ†ÑŒ %s"
  
! #: config/gcn/mkoffload.cc:1327 config/nvptx/mkoffload.cc:850
  #, fuzzy, gcc-internal-format
  #| msgid "can't open output file `%s'"
  msgid "cannot open omp_requires file %qs"
  msgstr "Ð½ÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð°Ð´Ñ‡Ñ‹Ð½Ñ–Ñ†ÑŒ Ñ„Ð°Ð¹Ð» ÑƒÐ²Ð¾Ð´Ñƒ `%s'"
  
! #: config/gcn/mkoffload.cc:1331 config/nvptx/mkoffload.cc:854
  #, fuzzy, gcc-internal-format
  #| msgid "cannot create temporary file"
  msgid "cannot read omp_requires file %qs"
--- 41943,41955 ----
  msgid "cannot open %qs"
  msgstr "Ð½ÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð°Ð´Ñ‡Ñ‹Ð½Ñ–Ñ†ÑŒ %s"
  
! #: config/gcn/mkoffload.cc:1327 config/nvptx/mkoffload.cc:856
  #, fuzzy, gcc-internal-format
  #| msgid "can't open output file `%s'"
  msgid "cannot open omp_requires file %qs"
  msgstr "Ð½ÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð°Ð´Ñ‡Ñ‹Ð½Ñ–Ñ†ÑŒ Ñ„Ð°Ð¹Ð» ÑƒÐ²Ð¾Ð´Ñƒ `%s'"
  
! #: config/gcn/mkoffload.cc:1331 config/nvptx/mkoffload.cc:860
  #, fuzzy, gcc-internal-format
  #| msgid "cannot create temporary file"
  msgid "cannot read omp_requires file %qs"
*************** msgstr ""
*** 42601,42608 ****
  msgid "%<-fcf-protection=full%> is not enabled by %<-fhardened%> because it was specified on the command line"
  msgstr ""
  
! #: config/i386/i386-options.cc:3277 config/riscv/riscv.cc:10651
! #: config/riscv/riscv.cc:10655
  #, fuzzy, gcc-internal-format
  msgid "%<-fcf-protection%> is not compatible with this target"
  msgstr "Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ñ‹ Ñ�ÐµÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð° Ð´Ð»Ñ� Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ñ‹"
--- 42608,42615 ----
  msgid "%<-fcf-protection=full%> is not enabled by %<-fhardened%> because it was specified on the command line"
  msgstr ""
  
! #: config/i386/i386-options.cc:3277 config/riscv/riscv.cc:10660
! #: config/riscv/riscv.cc:10664
  #, fuzzy, gcc-internal-format
  msgid "%<-fcf-protection%> is not compatible with this target"
  msgstr "Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ñ‹ Ñ�ÐµÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð° Ð´Ð»Ñ� Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ñ‹"
*************** msgstr ""
*** 42928,42998 ****
  msgid "%<-fsplit-stack%> does not support 3 register parameters"
  msgstr ""
  
! #: config/i386/i386.cc:13437
  #, gcc-internal-format
  msgid "%<V%> modifier on non-integer register"
  msgstr ""
  
! #: config/i386/i386.cc:13448 config/i386/i386.cc:13462
  #, gcc-internal-format
  msgid "unsupported size for integer register"
  msgstr ""
  
! #: config/i386/i386.cc:13494
  #, gcc-internal-format
  msgid "extended registers have no high halves"
  msgstr ""
  
! #: config/i386/i386.cc:13509
  #, gcc-internal-format
  msgid "unsupported operand size for extended register"
  msgstr ""
  
! #: config/i386/i386.cc:13707 config/i386/i386.cc:13709
  #, gcc-internal-format
  msgid "non-integer operand used with operand code %<z%>"
  msgstr ""
  
! #: config/i386/i386.cc:17917
  #, gcc-internal-format
  msgid "empty class %qT parameter passing ABI changes in %<-fabi-version=12%> (GCC 8)"
  msgstr ""
  
! #: config/i386/i386.cc:23148
  msgid "the alignment of %<_Atomic %T%> fields changed in %{GCC 11.1%}"
  msgstr ""
  
! #: config/i386/i386.cc:23235
  #, gcc-internal-format
  msgid "no register available for profiling %<-mcmodel=large%s%>"
  msgstr ""
  
! #: config/i386/i386.cc:23331
  #, gcc-internal-format
  msgid "profiling %<-mcmodel=large%> with PIC is not supported"
  msgstr ""
  
! #: config/i386/i386.cc:24046
  #, gcc-internal-format
  msgid "%<__bfloat16%> is redefined from typedef %<short%> to real %<__bf16%> since GCC 13.1, be careful of implicit conversion between %<__bf16%> and %<short%>; an explicit bitcast may be needed here"
  msgstr ""
  
! #: config/i386/i386.cc:25580
  #, gcc-internal-format
  msgid "unknown architecture specific memory model"
  msgstr ""
  
! #: config/i386/i386.cc:25587
  #, gcc-internal-format
  msgid "%<HLE_ACQUIRE%> not used with %<ACQUIRE%> or stronger memory model"
  msgstr ""
  
! #: config/i386/i386.cc:25594
  #, gcc-internal-format
  msgid "%<HLE_RELEASE%> not used with %<RELEASE%> or stronger memory model"
  msgstr ""
  
! #: config/i386/i386.cc:26281
  #, gcc-internal-format
  msgid "%<-fexcess-precision=16%> is not compatible with %<-mfpmath=387%>"
  msgstr ""
--- 42935,43005 ----
  msgid "%<-fsplit-stack%> does not support 3 register parameters"
  msgstr ""
  
! #: config/i386/i386.cc:13439
  #, gcc-internal-format
  msgid "%<V%> modifier on non-integer register"
  msgstr ""
  
! #: config/i386/i386.cc:13450 config/i386/i386.cc:13464
  #, gcc-internal-format
  msgid "unsupported size for integer register"
  msgstr ""
  
! #: config/i386/i386.cc:13496
  #, gcc-internal-format
  msgid "extended registers have no high halves"
  msgstr ""
  
! #: config/i386/i386.cc:13511
  #, gcc-internal-format
  msgid "unsupported operand size for extended register"
  msgstr ""
  
! #: config/i386/i386.cc:13709 config/i386/i386.cc:13711
  #, gcc-internal-format
  msgid "non-integer operand used with operand code %<z%>"
  msgstr ""
  
! #: config/i386/i386.cc:17919
  #, gcc-internal-format
  msgid "empty class %qT parameter passing ABI changes in %<-fabi-version=12%> (GCC 8)"
  msgstr ""
  
! #: config/i386/i386.cc:23150
  msgid "the alignment of %<_Atomic %T%> fields changed in %{GCC 11.1%}"
  msgstr ""
  
! #: config/i386/i386.cc:23237
  #, gcc-internal-format
  msgid "no register available for profiling %<-mcmodel=large%s%>"
  msgstr ""
  
! #: config/i386/i386.cc:23333
  #, gcc-internal-format
  msgid "profiling %<-mcmodel=large%> with PIC is not supported"
  msgstr ""
  
! #: config/i386/i386.cc:24048
  #, gcc-internal-format
  msgid "%<__bfloat16%> is redefined from typedef %<short%> to real %<__bf16%> since GCC 13.1, be careful of implicit conversion between %<__bf16%> and %<short%>; an explicit bitcast may be needed here"
  msgstr ""
  
! #: config/i386/i386.cc:25578
  #, gcc-internal-format
  msgid "unknown architecture specific memory model"
  msgstr ""
  
! #: config/i386/i386.cc:25585
  #, gcc-internal-format
  msgid "%<HLE_ACQUIRE%> not used with %<ACQUIRE%> or stronger memory model"
  msgstr ""
  
! #: config/i386/i386.cc:25592
  #, gcc-internal-format
  msgid "%<HLE_RELEASE%> not used with %<RELEASE%> or stronger memory model"
  msgstr ""
  
! #: config/i386/i386.cc:26279
  #, gcc-internal-format
  msgid "%<-fexcess-precision=16%> is not compatible with %<-mfpmath=387%>"
  msgstr ""
*************** msgstr ""
*** 43191,43198 ****
  msgid "%qs cannot be used for compiling a shared library"
  msgstr ""
  
! #: config/loongarch/loongarch-target-attr.cc:246 config/s390/s390.cc:16727
! #: config/s390/s390.cc:16777 config/s390/s390.cc:16794
  #, gcc-internal-format
  msgid "attribute %<target%> argument %qs is unknown"
  msgstr ""
--- 43198,43205 ----
  msgid "%qs cannot be used for compiling a shared library"
  msgstr ""
  
! #: config/loongarch/loongarch-target-attr.cc:246 config/s390/s390.cc:16754
! #: config/s390/s390.cc:16804 config/s390/s390.cc:16821
  #, gcc-internal-format
  msgid "attribute %<target%> argument %qs is unknown"
  msgstr ""
*************** msgstr ""
*** 43316,43322 ****
  msgid "stack limit expression is not supported"
  msgstr ""
  
! #: config/m68k/m68k.cc:7175 config/s390/s390.cc:17417
  #, fuzzy, gcc-internal-format
  msgid "%<-fexcess-precision=16%> is not supported on this target"
  msgstr "__buitin_saveregs Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð° Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ð°Ð¹"
--- 43323,43329 ----
  msgid "stack limit expression is not supported"
  msgstr ""
  
! #: config/m68k/m68k.cc:7175 config/s390/s390.cc:17444
  #, fuzzy, gcc-internal-format
  msgid "%<-fexcess-precision=16%> is not supported on this target"
  msgstr "__buitin_saveregs Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð° Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ð°Ð¹"
*************** msgstr "__buitin_saveregs Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ
*** 43326,43357 ****
  msgid "initialized variable %q+D is marked dllimport"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1760
  #, fuzzy, gcc-internal-format
  msgid "%<-fPIC%>/%<-fpic%> not supported for this target"
  msgstr "Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ñ‹ Ñ�ÐµÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð° Ð´Ð»Ñ� Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ñ‹"
  
! #: config/microblaze/microblaze.cc:1772
  #, gcc-internal-format
  msgid "%qs is an invalid argument to %<-mcpu=%>"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1821
  #, gcc-internal-format
  msgid "%<-mxl-multiply-high%> can be used only with %<-mcpu=v6.00.a%> or greater"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1838
  #, gcc-internal-format
  msgid "%<-mxl-reorder%> can be used only with %<-mcpu=v8.30.a%> or greater"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1845
  #, gcc-internal-format
  msgid "%<-mxl-reorder%> requires %<-mxl-pattern-compare%> for %<-mcpu=v8.30.a%>"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1851
  #, gcc-internal-format
  msgid "%<-mxl-multiply-high%> requires %<-mno-xl-soft-mul%>"
  msgstr ""
--- 43333,43364 ----
  msgid "initialized variable %q+D is marked dllimport"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1764
  #, fuzzy, gcc-internal-format
  msgid "%<-fPIC%>/%<-fpic%> not supported for this target"
  msgstr "Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ñ‹ Ñ�ÐµÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð° Ð´Ð»Ñ� Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ñ‹"
  
! #: config/microblaze/microblaze.cc:1776
  #, gcc-internal-format
  msgid "%qs is an invalid argument to %<-mcpu=%>"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1825
  #, gcc-internal-format
  msgid "%<-mxl-multiply-high%> can be used only with %<-mcpu=v6.00.a%> or greater"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1842
  #, gcc-internal-format
  msgid "%<-mxl-reorder%> can be used only with %<-mcpu=v8.30.a%> or greater"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1849
  #, gcc-internal-format
  msgid "%<-mxl-reorder%> requires %<-mxl-pattern-compare%> for %<-mcpu=v8.30.a%>"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1855
  #, gcc-internal-format
  msgid "%<-mxl-multiply-high%> requires %<-mno-xl-soft-mul%>"
  msgstr ""
*************** msgstr "%s: Ð½ÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð·Ð½Ñ–ÑˆÑ
*** 44139,44186 ****
  msgid "malformed ptx file"
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:336
  #, gcc-internal-format
  msgid "%<omp requires reverse_offload%> requires at least %<sm_35%> for %<-foffload-options=nvptx-none=-march=%> - disabling offload-code generation for this device type"
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:420 config/nvptx/mkoffload.cc:492
  #, fuzzy, gcc-internal-format
  msgid "Cannot find function declaration for %qs"
  msgstr "Ð�Ðµ Ð¼Ð°Ð³Ñƒ Ð·Ð½Ð°Ð¹Ñ�Ñ†Ñ– Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹ÑŽ Ð¿Ñ€Ð°Ñ‚Ð°ÐºÐ¾Ð»Ð° Ð´Ð»Ñ� \"%s\""
  
! #: config/nvptx/mkoffload.cc:592
  #, gcc-internal-format
  msgid "environment variable COLLECT_GCC_OPTIONS must be set"
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:613
  #, gcc-internal-format
  msgid "%<-foffload-abi-host-opts%> not specified."
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:644
  #, gcc-internal-format
  msgid "COLLECT_GCC must be set."
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:692
  #, gcc-internal-format
  msgid "offload compiler %s not found (consider using %<-B%>)"
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:715
  #, fuzzy, gcc-internal-format
  msgid "unrecognizable argument of option "
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"-%s\""
  
! #: config/nvptx/mkoffload.cc:804
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "can't open %s"
  msgid "cannot open '%s'"
  msgstr "Ð½ÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð°Ð´Ñ‡Ñ‹Ð½Ñ–Ñ†ÑŒ %s"
  
! #: config/nvptx/mkoffload.cc:860
  #, fuzzy, gcc-internal-format
  msgid "cannot open intermediate ptx file"
  msgstr "Ð½ÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð·Ð°Ñ‡Ñ‹Ð½Ñ–Ñ†ÑŒ ÑƒÐ²Ð°Ñ…Ð¾Ð´Ð·Ñ�Ñ‡Ñ‹ Ñ„Ð°Ð¹Ð» %s"
--- 44146,44193 ----
  msgid "malformed ptx file"
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:339
  #, gcc-internal-format
  msgid "%<omp requires reverse_offload%> requires at least %<sm_35%> for %<-foffload-options=nvptx-none=-march=%> - disabling offload-code generation for this device type"
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:426 config/nvptx/mkoffload.cc:498
  #, fuzzy, gcc-internal-format
  msgid "Cannot find function declaration for %qs"
  msgstr "Ð�Ðµ Ð¼Ð°Ð³Ñƒ Ð·Ð½Ð°Ð¹Ñ�Ñ†Ñ– Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹ÑŽ Ð¿Ñ€Ð°Ñ‚Ð°ÐºÐ¾Ð»Ð° Ð´Ð»Ñ� \"%s\""
  
! #: config/nvptx/mkoffload.cc:598
  #, gcc-internal-format
  msgid "environment variable COLLECT_GCC_OPTIONS must be set"
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:619
  #, gcc-internal-format
  msgid "%<-foffload-abi-host-opts%> not specified."
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:650
  #, gcc-internal-format
  msgid "COLLECT_GCC must be set."
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:698
  #, gcc-internal-format
  msgid "offload compiler %s not found (consider using %<-B%>)"
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:721
  #, fuzzy, gcc-internal-format
  msgid "unrecognizable argument of option "
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"-%s\""
  
! #: config/nvptx/mkoffload.cc:810
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "can't open %s"
  msgid "cannot open '%s'"
  msgstr "Ð½ÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð°Ð´Ñ‡Ñ‹Ð½Ñ–Ñ†ÑŒ %s"
  
! #: config/nvptx/mkoffload.cc:866
  #, fuzzy, gcc-internal-format
  msgid "cannot open intermediate ptx file"
  msgstr "Ð½ÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð·Ð°Ñ‡Ñ‹Ð½Ñ–Ñ†ÑŒ ÑƒÐ²Ð°Ñ…Ð¾Ð´Ð·Ñ�Ñ‡Ñ‹ Ñ„Ð°Ð¹Ð» %s"
*************** msgstr "Ð½ÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð·Ð°Ñ‡Ñ‹Ð½Ñ–Ñ
*** 44190,44271 ****
  msgid "option %s is not supported together with %<-fopenacc%>"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:342
  #, gcc-internal-format
  msgid "PTX version (%<-mptx%>) needs to be at least %s to support selected %<-misa%> (sm_%s)"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:359
  #, gcc-internal-format
  msgid "%<-march=%> must be specified"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:382
  #, gcc-internal-format
  msgid "not generating patch area, nops not supported"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:479
  #, gcc-internal-format
  msgid "static initialization of variable %q+D in %<.shared%> memory is not supported"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:2409
  #, gcc-internal-format
  msgid "cannot emit unaligned pointers in ptx assembly"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:2659
  #, gcc-internal-format
  msgid "PTX does not support weak declarations (only weak definitions)"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:5900
  #, gcc-internal-format
  msgid "%qE attribute requires a void return type"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:5923
  #, gcc-internal-format
  msgid "%qE attribute not allowed with auto storage class"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:6368
  #, gcc-internal-format
  msgid "barrier value must be within [0,15]"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:6381
  #, fuzzy, gcc-internal-format
  msgid "complement argument must be constant"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: config/nvptx/nvptx.cc:6721
  #, gcc-internal-format
  msgid "using %<vector_length (%d)%> due to call to vector-partitionable routine, ignoring %d"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:6729
  #, gcc-internal-format
  msgid "using %<vector_length (%d)%>, ignoring runtime setting"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:6743
  #, gcc-internal-format
  msgid "using %<vector_length (%d)%>, ignoring %d"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:7629
  #, gcc-internal-format
  msgid "variable %qD adjusted for OpenACC privatization level: %qs"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:7768
  #, fuzzy, gcc-internal-format
  msgid "weak alias definitions not supported in this configuration"
  msgstr "Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ñ‹ Ñ�ÐµÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð° Ð´Ð»Ñ� Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ñ‹"
  
! #: config/nvptx/nvptx.cc:7781
  #, fuzzy, gcc-internal-format
  msgid "non-function alias definitions not supported in this configuration"
  msgstr "Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ñ‹ Ñ�ÐµÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð° Ð´Ð»Ñ� Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ñ‹"
--- 44197,44278 ----
  msgid "option %s is not supported together with %<-fopenacc%>"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:348
  #, gcc-internal-format
  msgid "PTX version (%<-mptx%>) needs to be at least %s to support selected %<-misa%> (sm_%s)"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:365
  #, gcc-internal-format
  msgid "%<-march=%> must be specified"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:388
  #, gcc-internal-format
  msgid "not generating patch area, nops not supported"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:485
  #, gcc-internal-format
  msgid "static initialization of variable %q+D in %<.shared%> memory is not supported"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:2415
  #, gcc-internal-format
  msgid "cannot emit unaligned pointers in ptx assembly"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:2665
  #, gcc-internal-format
  msgid "PTX does not support weak declarations (only weak definitions)"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:5906
  #, gcc-internal-format
  msgid "%qE attribute requires a void return type"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:5929
  #, gcc-internal-format
  msgid "%qE attribute not allowed with auto storage class"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:6374
  #, gcc-internal-format
  msgid "barrier value must be within [0,15]"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:6387
  #, fuzzy, gcc-internal-format
  msgid "complement argument must be constant"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: config/nvptx/nvptx.cc:6727
  #, gcc-internal-format
  msgid "using %<vector_length (%d)%> due to call to vector-partitionable routine, ignoring %d"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:6735
  #, gcc-internal-format
  msgid "using %<vector_length (%d)%>, ignoring runtime setting"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:6749
  #, gcc-internal-format
  msgid "using %<vector_length (%d)%>, ignoring %d"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:7635
  #, gcc-internal-format
  msgid "variable %qD adjusted for OpenACC privatization level: %qs"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:7774
  #, fuzzy, gcc-internal-format
  msgid "weak alias definitions not supported in this configuration"
  msgstr "Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ñ‹ Ñ�ÐµÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð° Ð´Ð»Ñ� Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ñ‹"
  
! #: config/nvptx/nvptx.cc:7787
  #, fuzzy, gcc-internal-format
  msgid "non-function alias definitions not supported in this configuration"
  msgstr "Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ñ‹ Ñ�ÐµÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð° Ð´Ð»Ñ� Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ñ‹"
*************** msgstr ""
*** 44672,44769 ****
  msgid "invalid RVV vector size %qd, expected size is %qd based on LMUL of type and %qs"
  msgstr ""
  
! #: config/riscv/riscv.cc:10571
  #, gcc-internal-format
  msgid "%<-mdiv%> requires %<-march%> to subsume the %<M%> extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10576
  #, gcc-internal-format
  msgid "Currently the %<V%> implementation requires the %<M%> extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10636
  #, gcc-internal-format
  msgid "Current RISC-V GCC does not support VLEN greater than 4096bit for 'V' Extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10642
  #, gcc-internal-format
  msgid "Current RISC-V GCC does not support RVV in big-endian mode"
  msgstr ""
  
! #: config/riscv/riscv.cc:10682 config/riscv/riscv.cc:10685
  #, gcc-internal-format
  msgid "code model %qs with %qs"
  msgstr ""
  
! #: config/riscv/riscv.cc:10714
  #, gcc-internal-format
  msgid "requested ABI requires %<-march%> to subsume the %qc extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10721
  #, gcc-internal-format
  msgid "rv32e requires ilp32e ABI"
  msgstr ""
  
! #: config/riscv/riscv.cc:10723
  #, gcc-internal-format
  msgid "rv64e requires lp64e ABI"
  msgstr ""
  
! #: config/riscv/riscv.cc:10728
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 does not support complex types"
  msgid "ILP32E ABI does not support the %qc extension"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: config/riscv/riscv.cc:10733
  #, gcc-internal-format
  msgid "LP64E ABI is marked for deprecation in GCC"
  msgstr ""
  
! #: config/riscv/riscv.cc:10734
  msgid "if you need LP64E please notify the GCC project via %{PR116152%}"
  msgstr ""
  
! #: config/riscv/riscv.cc:10742
  #, gcc-internal-format
  msgid "z*inx requires ABI ilp32, ilp32e, lp64 or lp64e"
  msgstr ""
  
! #: config/riscv/riscv.cc:10746
  #, gcc-internal-format
  msgid "ABI requires %<-march=rv%d%>"
  msgstr ""
  
! #: config/riscv/riscv.cc:10756
  #, gcc-internal-format
  msgid "%<-mpreferred-stack-boundary=%d%> must be between %d and %d"
  msgstr ""
  
! #: config/riscv/riscv.cc:10769
  #, gcc-internal-format
  msgid "%<-mriscv-attribute%> RISC-V ELF attribute requires GNU as 2.32 [%<-mriscv-attribute%>]"
  msgstr ""
  
! #: config/riscv/riscv.cc:10796 config/rs6000/rs6000.cc:4530
  #, fuzzy, gcc-internal-format
  #| msgid "invalid register name for `%s'"
  msgid "%qs is not a valid base register in %qs"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð° `%s'"
  
! #: config/riscv/riscv.cc:10810 config/rs6000/rs6000.cc:4513
  #, gcc-internal-format
  msgid "%qs is not a valid number in %qs"
  msgstr ""
  
! #: config/riscv/riscv.cc:11305
  #, gcc-internal-format
  msgid "%qs function cannot have different interrupt type"
  msgstr ""
  
! #: config/riscv/riscv.cc:11880
  #, gcc-internal-format
  msgid "cannot allocate vl register for %qs on this target"
  msgstr ""
--- 44679,44776 ----
  msgid "invalid RVV vector size %qd, expected size is %qd based on LMUL of type and %qs"
  msgstr ""
  
! #: config/riscv/riscv.cc:10580
  #, gcc-internal-format
  msgid "%<-mdiv%> requires %<-march%> to subsume the %<M%> extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10585
  #, gcc-internal-format
  msgid "Currently the %<V%> implementation requires the %<M%> extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10645
  #, gcc-internal-format
  msgid "Current RISC-V GCC does not support VLEN greater than 4096bit for 'V' Extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10651
  #, gcc-internal-format
  msgid "Current RISC-V GCC does not support RVV in big-endian mode"
  msgstr ""
  
! #: config/riscv/riscv.cc:10691 config/riscv/riscv.cc:10694
  #, gcc-internal-format
  msgid "code model %qs with %qs"
  msgstr ""
  
! #: config/riscv/riscv.cc:10723
  #, gcc-internal-format
  msgid "requested ABI requires %<-march%> to subsume the %qc extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10730
  #, gcc-internal-format
  msgid "rv32e requires ilp32e ABI"
  msgstr ""
  
! #: config/riscv/riscv.cc:10732
  #, gcc-internal-format
  msgid "rv64e requires lp64e ABI"
  msgstr ""
  
! #: config/riscv/riscv.cc:10737
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 does not support complex types"
  msgid "ILP32E ABI does not support the %qc extension"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: config/riscv/riscv.cc:10742
  #, gcc-internal-format
  msgid "LP64E ABI is marked for deprecation in GCC"
  msgstr ""
  
! #: config/riscv/riscv.cc:10743
  msgid "if you need LP64E please notify the GCC project via %{PR116152%}"
  msgstr ""
  
! #: config/riscv/riscv.cc:10751
  #, gcc-internal-format
  msgid "z*inx requires ABI ilp32, ilp32e, lp64 or lp64e"
  msgstr ""
  
! #: config/riscv/riscv.cc:10755
  #, gcc-internal-format
  msgid "ABI requires %<-march=rv%d%>"
  msgstr ""
  
! #: config/riscv/riscv.cc:10765
  #, gcc-internal-format
  msgid "%<-mpreferred-stack-boundary=%d%> must be between %d and %d"
  msgstr ""
  
! #: config/riscv/riscv.cc:10778
  #, gcc-internal-format
  msgid "%<-mriscv-attribute%> RISC-V ELF attribute requires GNU as 2.32 [%<-mriscv-attribute%>]"
  msgstr ""
  
! #: config/riscv/riscv.cc:10805 config/rs6000/rs6000.cc:4530
  #, fuzzy, gcc-internal-format
  #| msgid "invalid register name for `%s'"
  msgid "%qs is not a valid base register in %qs"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð° `%s'"
  
! #: config/riscv/riscv.cc:10819 config/rs6000/rs6000.cc:4513
  #, gcc-internal-format
  msgid "%qs is not a valid number in %qs"
  msgstr ""
  
! #: config/riscv/riscv.cc:11314
  #, gcc-internal-format
  msgid "%qs function cannot have different interrupt type"
  msgstr ""
  
! #: config/riscv/riscv.cc:11889
  #, gcc-internal-format
  msgid "cannot allocate vl register for %qs on this target"
  msgstr ""
*************** msgstr ""
*** 45342,45358 ****
  msgid "Virtual function multiversioning not supported"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28798
  #, gcc-internal-format
  msgid "the result for the xxspltidp instruction is undefined for subnormal input values"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:29276
  #, gcc-internal-format
  msgid "type %<__vector_quad%> requires the %qs option"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:29281
  #, gcc-internal-format
  msgid "type %<__vector_pair%> requires the %qs option"
  msgstr ""
--- 45349,45365 ----
  msgid "Virtual function multiversioning not supported"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28801
  #, gcc-internal-format
  msgid "the result for the xxspltidp instruction is undefined for subnormal input values"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:29279
  #, gcc-internal-format
  msgid "type %<__vector_quad%> requires the %qs option"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:29284
  #, gcc-internal-format
  msgid "type %<__vector_pair%> requires the %qs option"
  msgstr ""
*************** msgstr ""
*** 45580,45706 ****
  msgid "nested functions cannot be profiled with %<-mfentry%> on s390"
  msgstr ""
  
! #: config/s390/s390.cc:16296
  #, gcc-internal-format
  msgid "64-bit ABI not supported in ESA/390 mode"
  msgstr ""
  
! #: config/s390/s390.cc:16303
  #, gcc-internal-format
  msgid "thunk-inline is only supported with %<-mindirect-branch-jump%>"
  msgstr ""
  
! #: config/s390/s390.cc:16338
  #, gcc-internal-format, gfc-internal-format
  msgid "hardware vector support not available on %s"
  msgstr ""
  
! #: config/s390/s390.cc:16341
  #, gcc-internal-format
  msgid "hardware vector support not available with %<-msoft-float%>"
  msgstr ""
  
! #: config/s390/s390.cc:16370
  #, gcc-internal-format, gfc-internal-format
  msgid "hardware decimal floating-point instructions not available on %s"
  msgstr ""
  
! #: config/s390/s390.cc:16374
  #, gcc-internal-format
  msgid "hardware decimal floating-point instructions not available in ESA/390 mode"
  msgstr ""
  
! #: config/s390/s390.cc:16386
  #, gcc-internal-format
  msgid "%<-mhard-dfp%> cannot be used in conjunction with %<-msoft-float%>"
  msgstr ""
  
! #: config/s390/s390.cc:16395
  #, gcc-internal-format
  msgid "%<-mbackchain%> %<-mpacked-stack%> %<-mhard-float%> are not supported in combination"
  msgstr ""
  
! #: config/s390/s390.cc:16401
  #, gcc-internal-format
  msgid "stack size must be greater than the stack guard value"
  msgstr ""
  
! #: config/s390/s390.cc:16403
  #, gcc-internal-format
  msgid "stack size must not be greater than 64k"
  msgstr ""
  
! #: config/s390/s390.cc:16406
  #, gcc-internal-format
  msgid "%<-mstack-guard%> implies use of %<-mstack-size%>"
  msgstr ""
  
! #: config/s390/s390.cc:16419
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-prologue-check%> requires integer in range 0-4095"
  msgstr ""
  
! #: config/s390/s390.cc:16422
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-prologue-target%> requires integer in range 0-4095"
  msgstr ""
  
! #: config/s390/s390.cc:16425
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-epilogue-check%> requires integer in range 0-4095"
  msgstr ""
  
! #: config/s390/s390.cc:16428
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-epilogue-target%> requires integer in range 0-4095"
  msgstr ""
  
! #: config/s390/s390.cc:16492
  #, gcc-internal-format
  msgid "%<-mfentry%> is supported only for 64-bit CPUs"
  msgstr ""
  
  #. argument is not a plain number
! #: config/s390/s390.cc:16528
  #, fuzzy, gcc-internal-format
  #| msgid "first argument of `%s' should be `int'"
  msgid "arguments to %qs should be non-negative integers"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: config/s390/s390.cc:16535
  #, fuzzy, gcc-internal-format
  msgid "argument to %qs is too large (max. %d)"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ \"%s\" Ð±Ð¾Ð»ÑŒÑˆ Ñ‡Ð°Ð¼ %d Ð±Ð°Ð¹Ñ‚"
  
! #: config/s390/s390.cc:16566
  #, gcc-internal-format
  msgid "%<-mno-pic-data-is-text-relative%> cannot be used without %<-fpic%>/%<-fPIC%>"
  msgstr ""
  
  #. Value is not allowed for the target attribute.
! #: config/s390/s390.cc:16733
  #, fuzzy, gcc-internal-format
  msgid "value %qs is not supported by attribute %<target%>"
  msgstr "__buitin_saveregs Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð° Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ð°Ð¹"
  
! #: config/s390/s390.cc:17792
  #, fuzzy, gcc-internal-format
  #| msgid "invalid string constant `%E'"
  msgid "invalid cc output constraint: %qs"
  msgstr "`%E' - Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ñ� Ð½Ñ�Ð·ÑŒÐ¼ÐµÐ½Ð½Ð°Ñ� Ñ‚Ñ‹Ð¿Ñƒ string"
  
! #: config/s390/s390.cc:17797
  #, fuzzy, gcc-internal-format
  #| msgid "-pipe is not supported"
  msgid "multiple cc output constraints not supported"
  msgstr "-pipe Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð°"
  
! #: config/s390/s390.cc:17802
  #, gcc-internal-format
  msgid "%<asm%> specifier for cc output conflicts with %<asm%> clobber list"
  msgstr ""
  
! #: config/s390/s390.cc:17808
  #, gcc-internal-format
  msgid "invalid type for cc output constraint"
  msgstr ""
--- 45587,45713 ----
  msgid "nested functions cannot be profiled with %<-mfentry%> on s390"
  msgstr ""
  
! #: config/s390/s390.cc:16323
  #, gcc-internal-format
  msgid "64-bit ABI not supported in ESA/390 mode"
  msgstr ""
  
! #: config/s390/s390.cc:16330
  #, gcc-internal-format
  msgid "thunk-inline is only supported with %<-mindirect-branch-jump%>"
  msgstr ""
  
! #: config/s390/s390.cc:16365
  #, gcc-internal-format, gfc-internal-format
  msgid "hardware vector support not available on %s"
  msgstr ""
  
! #: config/s390/s390.cc:16368
  #, gcc-internal-format
  msgid "hardware vector support not available with %<-msoft-float%>"
  msgstr ""
  
! #: config/s390/s390.cc:16397
  #, gcc-internal-format, gfc-internal-format
  msgid "hardware decimal floating-point instructions not available on %s"
  msgstr ""
  
! #: config/s390/s390.cc:16401
  #, gcc-internal-format
  msgid "hardware decimal floating-point instructions not available in ESA/390 mode"
  msgstr ""
  
! #: config/s390/s390.cc:16413
  #, gcc-internal-format
  msgid "%<-mhard-dfp%> cannot be used in conjunction with %<-msoft-float%>"
  msgstr ""
  
! #: config/s390/s390.cc:16422
  #, gcc-internal-format
  msgid "%<-mbackchain%> %<-mpacked-stack%> %<-mhard-float%> are not supported in combination"
  msgstr ""
  
! #: config/s390/s390.cc:16428
  #, gcc-internal-format
  msgid "stack size must be greater than the stack guard value"
  msgstr ""
  
! #: config/s390/s390.cc:16430
  #, gcc-internal-format
  msgid "stack size must not be greater than 64k"
  msgstr ""
  
! #: config/s390/s390.cc:16433
  #, gcc-internal-format
  msgid "%<-mstack-guard%> implies use of %<-mstack-size%>"
  msgstr ""
  
! #: config/s390/s390.cc:16446
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-prologue-check%> requires integer in range 0-4095"
  msgstr ""
  
! #: config/s390/s390.cc:16449
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-prologue-target%> requires integer in range 0-4095"
  msgstr ""
  
! #: config/s390/s390.cc:16452
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-epilogue-check%> requires integer in range 0-4095"
  msgstr ""
  
! #: config/s390/s390.cc:16455
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-epilogue-target%> requires integer in range 0-4095"
  msgstr ""
  
! #: config/s390/s390.cc:16519
  #, gcc-internal-format
  msgid "%<-mfentry%> is supported only for 64-bit CPUs"
  msgstr ""
  
  #. argument is not a plain number
! #: config/s390/s390.cc:16555
  #, fuzzy, gcc-internal-format
  #| msgid "first argument of `%s' should be `int'"
  msgid "arguments to %qs should be non-negative integers"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: config/s390/s390.cc:16562
  #, fuzzy, gcc-internal-format
  msgid "argument to %qs is too large (max. %d)"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ \"%s\" Ð±Ð¾Ð»ÑŒÑˆ Ñ‡Ð°Ð¼ %d Ð±Ð°Ð¹Ñ‚"
  
! #: config/s390/s390.cc:16593
  #, gcc-internal-format
  msgid "%<-mno-pic-data-is-text-relative%> cannot be used without %<-fpic%>/%<-fPIC%>"
  msgstr ""
  
  #. Value is not allowed for the target attribute.
! #: config/s390/s390.cc:16760
  #, fuzzy, gcc-internal-format
  msgid "value %qs is not supported by attribute %<target%>"
  msgstr "__buitin_saveregs Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð° Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ð°Ð¹"
  
! #: config/s390/s390.cc:17819
  #, fuzzy, gcc-internal-format
  #| msgid "invalid string constant `%E'"
  msgid "invalid cc output constraint: %qs"
  msgstr "`%E' - Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ñ� Ð½Ñ�Ð·ÑŒÐ¼ÐµÐ½Ð½Ð°Ñ� Ñ‚Ñ‹Ð¿Ñƒ string"
  
! #: config/s390/s390.cc:17824
  #, fuzzy, gcc-internal-format
  #| msgid "-pipe is not supported"
  msgid "multiple cc output constraints not supported"
  msgstr "-pipe Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð°"
  
! #: config/s390/s390.cc:17829
  #, gcc-internal-format
  msgid "%<asm%> specifier for cc output conflicts with %<asm%> clobber list"
  msgstr ""
  
! #: config/s390/s390.cc:17835
  #, gcc-internal-format
  msgid "invalid type for cc output constraint"
  msgstr ""
*************** msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ
*** 46067,46133 ****
  msgid "subprogram %q+F not marked %<Inline%>"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:4427
  #, fuzzy, gcc-internal-format
  msgid "invalid element type for attribute %qs"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: ada/gcc-interface/utils.cc:4451
  #, gcc-internal-format
  msgid "number of components of vector not a power of two"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6705 ada/gcc-interface/utils.cc:6883
! #: ada/gcc-interface/utils.cc:7123
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute ignored"
  msgid "%qs attribute ignored"
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
! #: ada/gcc-interface/utils.cc:6760
  #, gcc-internal-format
  msgid "%qs attribute without arguments on a non-prototype"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6775
  #, gcc-internal-format
  msgid "%qs argument has invalid operand number (argument %lu)"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6797
  #, gcc-internal-format
  msgid "%qs argument with out-of-range operand number (argument %lu, operand %lu)"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6806
  #, gcc-internal-format
  msgid "%qs argument references non-pointer operand (argument %lu, operand %lu)"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6827
  #, gcc-internal-format
  msgid "%qs attribute requires prototypes with named arguments"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6836
  #, fuzzy, gcc-internal-format
  msgid "%qs attribute only applies to variadic functions"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: ada/gcc-interface/utils.cc:7083 d/d-attribs.cc:362 d/d-attribs.cc:488
  #: rust/rust-attribs.cc:176
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute ignored"
  msgid "%qE attribute has no effect"
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
! #: ada/gcc-interface/utils.cc:7418
  #, fuzzy, gcc-internal-format
  msgid "attribute %qs applies to array types only"
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
! #: c/c-convert.cc:104 c/c-typeck.cc:2730 c/c-typeck.cc:14860 cp/typeck.cc:2520
! #: cp/typeck.cc:9603 cp/typeck.cc:10396 d/d-convert.cc:262
  #, gcc-internal-format
  msgid "void value not ignored as it ought to be"
  msgstr ""
--- 46074,46140 ----
  msgid "subprogram %q+F not marked %<Inline%>"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:4429
  #, fuzzy, gcc-internal-format
  msgid "invalid element type for attribute %qs"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: ada/gcc-interface/utils.cc:4453
  #, gcc-internal-format
  msgid "number of components of vector not a power of two"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6707 ada/gcc-interface/utils.cc:6885
! #: ada/gcc-interface/utils.cc:7125
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute ignored"
  msgid "%qs attribute ignored"
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
! #: ada/gcc-interface/utils.cc:6762
  #, gcc-internal-format
  msgid "%qs attribute without arguments on a non-prototype"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6777
  #, gcc-internal-format
  msgid "%qs argument has invalid operand number (argument %lu)"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6799
  #, gcc-internal-format
  msgid "%qs argument with out-of-range operand number (argument %lu, operand %lu)"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6808
  #, gcc-internal-format
  msgid "%qs argument references non-pointer operand (argument %lu, operand %lu)"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6829
  #, gcc-internal-format
  msgid "%qs attribute requires prototypes with named arguments"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6838
  #, fuzzy, gcc-internal-format
  msgid "%qs attribute only applies to variadic functions"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: ada/gcc-interface/utils.cc:7085 d/d-attribs.cc:362 d/d-attribs.cc:488
  #: rust/rust-attribs.cc:176
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute ignored"
  msgid "%qE attribute has no effect"
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
! #: ada/gcc-interface/utils.cc:7420
  #, fuzzy, gcc-internal-format
  msgid "attribute %qs applies to array types only"
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
! #: c/c-convert.cc:104 c/c-typeck.cc:2730 c/c-typeck.cc:14877 cp/typeck.cc:2520
! #: cp/typeck.cc:9719 cp/typeck.cc:10512 d/d-convert.cc:262
  #, gcc-internal-format
  msgid "void value not ignored as it ought to be"
  msgstr ""
*************** msgstr ""
*** 46206,46213 ****
  msgid "underspecified declaration of %qE, which is already declared in this scope"
  msgstr ""
  
! #: c/c-decl.cc:1732 c/c-decl.cc:7925 c/c-decl.cc:8924 c/c-decl.cc:9859
! #: c/c-decl.cc:9865 c/c-decl.cc:10092
  #, gcc-internal-format
  msgid "originally defined here"
  msgstr ""
--- 46213,46220 ----
  msgid "underspecified declaration of %qE, which is already declared in this scope"
  msgstr ""
  
! #: c/c-decl.cc:1732 c/c-decl.cc:7925 c/c-decl.cc:8924 c/c-decl.cc:9862
! #: c/c-decl.cc:9868 c/c-decl.cc:10096
  #, gcc-internal-format
  msgid "originally defined here"
  msgstr ""
*************** msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿
*** 46520,46526 ****
  msgid "each undeclared identifier is reported only once for each function it appears in"
  msgstr "(Ð�Ð± ÐºÐ¾Ð¶Ð½Ñ‹Ð¼ Ð½ÐµÐ°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½Ñ‹Ð¼ Ñ–Ð´Ñ�Ð½Ñ‚Ñ‹Ñ„Ñ–ÐºÐ°Ñ‚Ð°Ñ€Ñ‹ Ð¿Ð°Ð²ÐµÐ´Ð°Ð¼Ð»Ñ�ÐµÑ†Ñ†Ð°"
  
! #: c/c-decl.cc:4055 cp/decl.cc:3632
  #, gcc-internal-format
  msgid "label %qE referenced outside of any function"
  msgstr ""
--- 46527,46533 ----
  msgid "each undeclared identifier is reported only once for each function it appears in"
  msgstr "(Ð�Ð± ÐºÐ¾Ð¶Ð½Ñ‹Ð¼ Ð½ÐµÐ°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½Ñ‹Ð¼ Ñ–Ð´Ñ�Ð½Ñ‚Ñ‹Ñ„Ñ–ÐºÐ°Ñ‚Ð°Ñ€Ñ‹ Ð¿Ð°Ð²ÐµÐ´Ð°Ð¼Ð»Ñ�ÐµÑ†Ñ†Ð°"
  
! #: c/c-decl.cc:4055 cp/decl.cc:3630
  #, gcc-internal-format
  msgid "label %qE referenced outside of any function"
  msgstr ""
*************** msgstr ""
*** 46557,46563 ****
  msgid "duplicate label declaration %qE"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ñ‹ `%s'"
  
! #: c/c-decl.cc:4278 cp/decl.cc:4135
  #, fuzzy, gcc-internal-format
  msgid "duplicate label %qD"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½Ð½Ðµ \"%s\""
--- 46564,46570 ----
  msgid "duplicate label declaration %qE"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ñ‹ `%s'"
  
! #: c/c-decl.cc:4278 cp/decl.cc:4133
  #, fuzzy, gcc-internal-format
  msgid "duplicate label %qD"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½Ð½Ðµ \"%s\""
*************** msgstr ""
*** 46730,46736 ****
  msgid "invalid use of attributes in empty declaration"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: c/c-decl.cc:5264 c/c-parser.cc:2513
  #, gcc-internal-format
  msgid "empty declaration"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ"
--- 46737,46743 ----
  msgid "invalid use of attributes in empty declaration"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: c/c-decl.cc:5264 c/c-parser.cc:2558
  #, gcc-internal-format
  msgid "empty declaration"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ"
*************** msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð
*** 46748,46759 ****
  #. C99 6.7.5.2p4
  #. A function definition isn't function prototype scope C99 6.2.1p4.
  #. C99 6.7.5.2p4
! #: c/c-decl.cc:5346 c/c-decl.cc:8448 c/c-decl.cc:10986
  #, gcc-internal-format
  msgid "%<[*]%> not allowed in other than function prototype scope"
  msgstr ""
  
! #: c/c-decl.cc:5539 cp/decl2.cc:1960 cp/name-lookup.cc:8993
  #, gcc-internal-format
  msgid "%<omp::%s%> not allowed to be specified in this context"
  msgstr ""
--- 46755,46766 ----
  #. C99 6.7.5.2p4
  #. A function definition isn't function prototype scope C99 6.2.1p4.
  #. C99 6.7.5.2p4
! #: c/c-decl.cc:5346 c/c-decl.cc:8448 c/c-decl.cc:10990
  #, gcc-internal-format
  msgid "%<[*]%> not allowed in other than function prototype scope"
  msgstr ""
  
! #: c/c-decl.cc:5539 cp/decl2.cc:1960 cp/name-lookup.cc:8996
  #, gcc-internal-format
  msgid "%<omp::%s%> not allowed to be specified in this context"
  msgstr ""
*************** msgstr ""
*** 46764,46770 ****
  msgid "%q+D is usually a function"
  msgstr "`%s' - Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: c/c-decl.cc:5627 c/c-decl.cc:10816 cp/decl.cc:18580
  #, fuzzy, gcc-internal-format
  #| msgid "no previous declaration for `%s'"
  msgid "no previous declaration for %qD"
--- 46771,46777 ----
  msgid "%q+D is usually a function"
  msgstr "`%s' - Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: c/c-decl.cc:5627 c/c-decl.cc:10820 cp/decl.cc:18578
  #, fuzzy, gcc-internal-format
  #| msgid "no previous declaration for `%s'"
  msgid "no previous declaration for %qD"
*************** msgstr ""
*** 46844,46850 ****
  msgid "uninitialized %<const %D%> is invalid in C++"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: c/c-decl.cc:6178 cp/decl.cc:9535
  #, gcc-internal-format
  msgid "%q+D in declare target directive does not have mappable type"
  msgstr ""
--- 46851,46857 ----
  msgid "uninitialized %<const %D%> is invalid in C++"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: c/c-decl.cc:6178 cp/decl.cc:9533
  #, gcc-internal-format
  msgid "%q+D in declare target directive does not have mappable type"
  msgstr ""
*************** msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½Ð½Ðµ \"restrict\
*** 46994,47000 ****
  msgid "conflicting named address spaces (%s vs %s)"
  msgstr ""
  
! #: c/c-decl.cc:7080 c/c-parser.cc:3794
  #, gcc-internal-format
  msgid "%<_Atomic%>-qualified array type"
  msgstr ""
--- 47001,47007 ----
  msgid "conflicting named address spaces (%s vs %s)"
  msgstr ""
  
! #: c/c-decl.cc:7080 c/c-parser.cc:3839
  #, gcc-internal-format
  msgid "%<_Atomic%>-qualified array type"
  msgstr ""
*************** msgstr ""
*** 47039,47045 ****
  msgid "storage class specified for unnamed parameter"
  msgstr ""
  
! #: c/c-decl.cc:7141 cp/decl.cc:13709
  #, gcc-internal-format
  msgid "storage class specified for typename"
  msgstr ""
--- 47046,47052 ----
  msgid "storage class specified for unnamed parameter"
  msgstr ""
  
! #: c/c-decl.cc:7141 cp/decl.cc:13707
  #, gcc-internal-format
  msgid "storage class specified for typename"
  msgstr ""
*************** msgstr ""
*** 47215,47227 ****
  msgid "function definition has qualified void return type"
  msgstr "Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ� Ð½Ðµ Ð²Ñ�Ñ€Ñ‚Ð°Ðµ Ñ‚Ñ‹Ð¿ string"
  
! #: c/c-decl.cc:7684 cp/decl.cc:14134
  #, gcc-internal-format
  msgid "type qualifiers ignored on function return type"
  msgstr ""
  
  #: c/c-decl.cc:7723 c/c-decl.cc:7891 c/c-decl.cc:7945 c/c-decl.cc:8039
! #: c/c-decl.cc:8161 c/c-parser.cc:3796
  #, gcc-internal-format
  msgid "%<_Atomic%>-qualified function type"
  msgstr ""
--- 47222,47234 ----
  msgid "function definition has qualified void return type"
  msgstr "Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ� Ð½Ðµ Ð²Ñ�Ñ€Ñ‚Ð°Ðµ Ñ‚Ñ‹Ð¿ string"
  
! #: c/c-decl.cc:7684 cp/decl.cc:14132
  #, gcc-internal-format
  msgid "type qualifiers ignored on function return type"
  msgstr ""
  
  #: c/c-decl.cc:7723 c/c-decl.cc:7891 c/c-decl.cc:7945 c/c-decl.cc:8039
! #: c/c-decl.cc:8161 c/c-parser.cc:3841
  #, gcc-internal-format
  msgid "%<_Atomic%>-qualified function type"
  msgstr ""
*************** msgstr ""
*** 47344,47350 ****
  msgid "a member of a structure or union cannot have a variably modified type"
  msgstr ""
  
! #: c/c-decl.cc:7979 cp/decl.cc:12576
  #, fuzzy, gcc-internal-format
  msgid "variable or field %qE declared void"
  msgstr "Ñ‚Ñ‹Ð¿ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" Ð½Ðµ Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ñ‹"
--- 47351,47357 ----
  msgid "a member of a structure or union cannot have a variably modified type"
  msgstr ""
  
! #: c/c-decl.cc:7979 cp/decl.cc:12574
  #, fuzzy, gcc-internal-format
  msgid "variable or field %qE declared void"
  msgstr "Ñ‚Ñ‹Ð¿ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" Ð½Ðµ Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ñ‹"
*************** msgstr ""
*** 47416,47427 ****
  msgid "%<constexpr%> object has variably modified type"
  msgstr ""
  
! #: c/c-decl.cc:8263 c/c-parser.cc:13368
  #, gcc-internal-format
  msgid "invalid qualifiers for %<constexpr%> object"
  msgstr ""
  
! #: c/c-decl.cc:8269 c/c-parser.cc:13371
  #, gcc-internal-format
  msgid "invalid qualifiers for field of %<constexpr%> object"
  msgstr ""
--- 47423,47434 ----
  msgid "%<constexpr%> object has variably modified type"
  msgstr ""
  
! #: c/c-decl.cc:8263 c/c-parser.cc:13413
  #, gcc-internal-format
  msgid "invalid qualifiers for %<constexpr%> object"
  msgstr ""
  
! #: c/c-decl.cc:8269 c/c-parser.cc:13416
  #, gcc-internal-format
  msgid "invalid qualifiers for field of %<constexpr%> object"
  msgstr ""
*************** msgstr ""
*** 47451,47457 ****
  msgid "object with variably modified type must have no linkage"
  msgstr ""
  
! #: c/c-decl.cc:8454 c/c-decl.cc:10790
  #, gcc-internal-format
  msgid "function declaration isn%'t a prototype"
  msgstr ""
--- 47458,47464 ----
  msgid "object with variably modified type must have no linkage"
  msgstr ""
  
! #: c/c-decl.cc:8454 c/c-decl.cc:10794
  #, gcc-internal-format
  msgid "function declaration isn%'t a prototype"
  msgstr ""
*************** msgstr "Ð¿ÐµÑ€Ð°Ð½Ð°ÐºÑ–Ñ€Ð°Ð²Ð°Ð½Ð½Ðµ s
*** 47538,47554 ****
  msgid "nested redefinition of %<struct %E%>"
  msgstr "Ð¿ÐµÑ€Ð°Ð½Ð°ÐºÑ–Ñ€Ð°Ð²Ð°Ð½Ð½Ðµ stdout: %s"
  
! #: c/c-decl.cc:8966 c/c-decl.cc:10120
  #, gcc-internal-format
  msgid "defining type in %qs expression is invalid in C++"
  msgstr ""
  
! #: c/c-decl.cc:8972 c/c-decl.cc:10126
  #, gcc-internal-format
  msgid "%qT defined in underspecified object initializer"
  msgstr ""
  
! #: c/c-decl.cc:9036 cp/decl.cc:5719 cp/parser.cc:28813
  #, gcc-internal-format
  msgid "declaration does not declare anything"
  msgstr ""
--- 47545,47561 ----
  msgid "nested redefinition of %<struct %E%>"
  msgstr "Ð¿ÐµÑ€Ð°Ð½Ð°ÐºÑ–Ñ€Ð°Ð²Ð°Ð½Ð½Ðµ stdout: %s"
  
! #: c/c-decl.cc:8966 c/c-decl.cc:10124
  #, gcc-internal-format
  msgid "defining type in %qs expression is invalid in C++"
  msgstr ""
  
! #: c/c-decl.cc:8972 c/c-decl.cc:10130
  #, gcc-internal-format
  msgid "%qT defined in underspecified object initializer"
  msgstr ""
  
! #: c/c-decl.cc:9036 cp/decl.cc:5717 cp/parser.cc:28867
  #, gcc-internal-format
  msgid "declaration does not declare anything"
  msgstr ""
*************** msgstr ""
*** 47610,47616 ****
  msgid "struct has no members"
  msgstr ""
  
! #: c/c-decl.cc:9640 cp/decl.cc:15166
  #, gcc-internal-format
  msgid "flexible array member in union is a GCC extension"
  msgstr ""
--- 47617,47623 ----
  msgid "struct has no members"
  msgstr ""
  
! #: c/c-decl.cc:9640 cp/decl.cc:15164
  #, gcc-internal-format
  msgid "flexible array member in union is a GCC extension"
  msgstr ""
*************** msgstr ""
*** 47625,48083 ****
  msgid "flexible array member in a struct with no named members is a GCC extension"
  msgstr ""
  
! #: c/c-decl.cc:9684
  #, gcc-internal-format
  msgid "structure containing a flexible array member is not at the end of another structure"
  msgstr ""
  
! #: c/c-decl.cc:9711
  #, fuzzy, gcc-internal-format
  #| msgid "%s is too large"
  msgid "type %qT is too large"
  msgstr "%s - Ð²ÐµÐ»ÑŒÐ¼Ñ– Ð²Ñ�Ð»Ñ–ÐºÑ–"
  
! #: c/c-decl.cc:9775
  #, gcc-internal-format
  msgid "type punning toggles scalar storage order"
  msgstr ""
  
! #: c/c-decl.cc:9842
  #, gcc-internal-format
  msgid "union cannot be made transparent"
  msgstr ""
  
! #: c/c-decl.cc:9856
  #, gcc-internal-format
  msgid "redefinition of struct or union %qT with variably modified type"
  msgstr ""
  
! #: c/c-decl.cc:9863
  #, fuzzy, gcc-internal-format
  msgid "redefinition of struct or union %qT"
  msgstr "Ð¿ÐµÑ€Ð°Ð½Ð°ÐºÑ–Ñ€Ð°Ð²Ð°Ð½Ð½Ðµ stdout: %s"
  
! #: c/c-decl.cc:10042
  #, fuzzy, gcc-internal-format
  msgid "nested redefinition of %<enum %E%>"
  msgstr "Ð¿ÐµÑ€Ð°Ð½Ð°ÐºÑ–Ñ€Ð°Ð²Ð°Ð½Ð½Ðµ stdout: %s"
  
! #: c/c-decl.cc:10090
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%#D'"
  msgid "redeclaration of %<enum %E%>"
  msgstr "Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%#D'"
  
! #: c/c-decl.cc:10102
  #, gcc-internal-format
  msgid "%<enum%> declared with but defined without fixed underlying type"
  msgstr ""
  
! #: c/c-decl.cc:10189 cp/decl.cc:17838 m2/gm2-gcc/m2type.cc:2088
  #, gcc-internal-format
  msgid "specified mode too small for enumerated values"
  msgstr ""
  
! #: c/c-decl.cc:10208
  #, gcc-internal-format
  msgid "enumeration values exceed range of largest integer"
  msgstr ""
  
! #: c/c-decl.cc:10217
  #, gcc-internal-format
  msgid "enumeration values exceed range of %qs"
  msgstr ""
  
! #: c/c-decl.cc:10330
  #, fuzzy, gcc-internal-format
  msgid "conflicting redefinition of enum %qT"
  msgstr "Ð¿ÐµÑ€Ð°Ð½Ð°ÐºÑ–Ñ€Ð°Ð²Ð°Ð½Ð½Ðµ stdout: %s"
  
! #: c/c-decl.cc:10363 c/c-decl.cc:10379
  #, fuzzy, gcc-internal-format
  msgid "enumerator value for %qE is not an integer constant"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: c/c-decl.cc:10374
  #, fuzzy, gcc-internal-format
  msgid "enumerator value for %qE is not an integer constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: c/c-decl.cc:10398
  #, gcc-internal-format
  msgid "overflow in enumeration values"
  msgstr ""
  
! #: c/c-decl.cc:10405
  #, gcc-internal-format
  msgid "enumerator value outside the range of underlying type"
  msgstr ""
  
! #: c/c-decl.cc:10422
  #, gcc-internal-format
  msgid "value of redeclared enumerator outside the range of %qT"
  msgstr ""
  
! #: c/c-decl.cc:10450
  #, gcc-internal-format
  msgid "enumerator value outside the range of %qs"
  msgstr ""
  
! #: c/c-decl.cc:10456
  #, gcc-internal-format
  msgid "ISO C restricts enumerator values to range of %<int%> before C23"
  msgstr ""
  
! #: c/c-decl.cc:10664 cp/decl.cc:6053 cp/decl.cc:18438
  #, gcc-internal-format
  msgid "inline function %qD given attribute %qs"
  msgstr ""
  
! #: c/c-decl.cc:10683
  #, gcc-internal-format
  msgid "return type is an incomplete type"
  msgstr ""
  
! #: c/c-decl.cc:10695
  #, fuzzy, gcc-internal-format
  #| msgid "return type of `%s' is not `int'"
  msgid "return type defaults to %<int%>"
  msgstr "Ð²Ñ�Ñ€Ñ‚Ð°ÐµÐ¼Ñ‹ Ñ‚Ñ‹Ð¿ \"%s\" Ð½Ðµ \"int\""
  
! #: c/c-decl.cc:10723
  #, gcc-internal-format
  msgid "%q+D defined as variadic function without prototype"
  msgstr ""
  
! #: c/c-decl.cc:10776
  #, gcc-internal-format
  msgid "ISO C23 does not allow defining parameters for function %qE declared without parameters"
  msgstr ""
  
! #: c/c-decl.cc:10799
  #, fuzzy, gcc-internal-format
  #| msgid "no previous prototype for `%s'"
  msgid "no previous prototype for %qD"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð¿Ñ€Ð°Ñ‚Ð°Ñ‚Ñ‹Ð¿Ð° Ð´Ð»Ñ� \"%s\""
  
! #: c/c-decl.cc:10808
  #, fuzzy, gcc-internal-format
  msgid "%qD was used with no prototype before its definition"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: c/c-decl.cc:10826
  #, fuzzy, gcc-internal-format
  msgid "%qD was used with no declaration before its definition"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: c/c-decl.cc:10845
  #, fuzzy, gcc-internal-format
  #| msgid "return type of `%s' is not `int'"
  msgid "return type of %qD is not %<int%>"
  msgstr "Ð²Ñ�Ñ€Ñ‚Ð°ÐµÐ¼Ñ‹ Ñ‚Ñ‹Ð¿ \"%s\" Ð½Ðµ \"int\""
  
! #: c/c-decl.cc:10847
  #, gcc-internal-format
  msgid "%<_Atomic%>-qualified return type of %qD"
  msgstr ""
  
! #: c/c-decl.cc:10854
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is usually a function"
  msgid "%qD is normally a non-static function"
  msgstr "`%s' - Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: c/c-decl.cc:10905
  #, gcc-internal-format
  msgid "old-style parameter declarations in prototyped function definition"
  msgstr ""
  
! #: c/c-decl.cc:10921
  #, gcc-internal-format
  msgid "traditional C rejects ISO C style function definitions"
  msgstr ""
  
! #: c/c-decl.cc:10938
  #, gcc-internal-format
  msgid "ISO C does not support omitting parameter names in function definitions before C23"
  msgstr ""
  
! #: c/c-decl.cc:10978 c/c-decl.cc:10982
  #, gcc-internal-format
  msgid "old-style function definition"
  msgstr ""
  
! #: c/c-decl.cc:10995
  #, gcc-internal-format
  msgid "parameter name missing from parameter list"
  msgstr ""
  
! #: c/c-decl.cc:11011
  #, gcc-internal-format
  msgid "%qD declared as a non-parameter"
  msgstr ""
  
! #: c/c-decl.cc:11019
  #, fuzzy, gcc-internal-format
  msgid "multiple parameters named %qD"
  msgstr "Ð½ÐµÐ²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°ÐµÐ¼Ñ‹ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\""
  
! #: c/c-decl.cc:11028
  #, fuzzy, gcc-internal-format
  msgid "parameter %qD declared with void type"
  msgstr "Ñ‚Ñ‹Ð¿ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" Ð½Ðµ Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ñ‹"
  
! #: c/c-decl.cc:11057 c/c-decl.cc:11062
  #, gcc-internal-format
  msgid "type of %qD defaults to %<int%>"
  msgstr ""
  
! #: c/c-decl.cc:11082
  #, fuzzy, gcc-internal-format
  msgid "parameter %qD has incomplete type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-decl.cc:11089
  #, gcc-internal-format
  msgid "declaration for parameter %qD but no such parameter"
  msgstr ""
  
! #: c/c-decl.cc:11142
  #, gcc-internal-format
  msgid "number of arguments doesn%'t match built-in prototype"
  msgstr ""
  
! #: c/c-decl.cc:11153
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "number of arguments doesn%'t match prototype"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž, Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ… Ð´Ð»Ñ� Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
  
! #: c/c-decl.cc:11156 c/c-decl.cc:11203 c/c-decl.cc:11217
  #, fuzzy, gcc-internal-format
  #| msgid "empty declaration"
  msgid "prototype declaration"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: c/c-decl.cc:11195
  #, gcc-internal-format
  msgid "promoted argument %qD doesn%'t match built-in prototype"
  msgstr ""
  
! #: c/c-decl.cc:11200
  #, gcc-internal-format
  msgid "promoted argument %qD doesn%'t match prototype"
  msgstr ""
  
! #: c/c-decl.cc:11210
  #, gcc-internal-format
  msgid "argument %qD doesn%'t match built-in prototype"
  msgstr ""
  
! #: c/c-decl.cc:11215
  #, gcc-internal-format
  msgid "argument %qD doesn%'t match prototype"
  msgstr ""
  
! #: c/c-decl.cc:11473 cp/decl.cc:19361
  #, gcc-internal-format
  msgid "no return statement in function returning non-void"
  msgstr ""
  
! #: c/c-decl.cc:11492 cp/decl.cc:19432
  #, fuzzy, gcc-internal-format
  #| msgid "label `%D' defined but not used"
  msgid "parameter %qD set but not used"
  msgstr "Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ð° `%D' Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°, Ð°Ð»Ðµ Ð½Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ð°ÐµÑ†Ñ†Ð°"
  
! #: c/c-decl.cc:11589
  #, gcc-internal-format
  msgid "%<for%> loop initial declarations are only allowed in C99 or C11 mode"
  msgstr ""
  
! #: c/c-decl.cc:11594
  #, gcc-internal-format
  msgid "use option %<-std=c99%>, %<-std=gnu99%>, %<-std=c11%> or %<-std=gnu11%> to compile your code"
  msgstr ""
  
! #: c/c-decl.cc:11601
  #, fuzzy, gcc-internal-format
  msgid "ISO C90 does not support %<for%> loop initial declarations"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ \"long long\""
  
! #: c/c-decl.cc:11635
  #, gcc-internal-format
  msgid "declaration of static variable %qD in %<for%> loop initial declaration"
  msgstr ""
  
! #: c/c-decl.cc:11639
  #, gcc-internal-format
  msgid "declaration of %<extern%> variable %qD in %<for%> loop initial declaration"
  msgstr ""
  
! #: c/c-decl.cc:11646
  #, gcc-internal-format
  msgid "%<struct %E%> declared in %<for%> loop initial declaration"
  msgstr ""
  
! #: c/c-decl.cc:11651
  #, gcc-internal-format
  msgid "%<union %E%> declared in %<for%> loop initial declaration"
  msgstr ""
  
! #: c/c-decl.cc:11657
  #, gcc-internal-format
  msgid "%<enum %E%> declared in %<for%> loop initial declaration"
  msgstr ""
  
! #: c/c-decl.cc:11661
  #, gcc-internal-format
  msgid "declaration of non-variable %qD in %<for%> loop initial declaration"
  msgstr ""
  
! #: c/c-decl.cc:11961
  #, gcc-internal-format
  msgid "incompatible address space qualifiers %qs and %qs"
  msgstr ""
  
! #: c/c-decl.cc:12020 c/c-decl.cc:12027
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate label declaration `%s'"
  msgid "duplicate %qE declaration specifier"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ñ‹ `%s'"
  
! #: c/c-decl.cc:12055 c/c-decl.cc:13176
  #, gcc-internal-format
  msgid "multiple storage classes in declaration specifiers"
  msgstr ""
  
! #: c/c-decl.cc:12057
  #, gcc-internal-format
  msgid "%qs used with %<auto%>"
  msgstr ""
  
  #. auto may only be used with another storage class specifier,
  #. such as constexpr, if the type is inferred.
! #: c/c-decl.cc:12062
  #, gcc-internal-format
  msgid "%<auto%> used with %<constexpr%>"
  msgstr ""
  
! #: c/c-decl.cc:12075 c/c-decl.cc:12513 c/c-decl.cc:12971
  #, gcc-internal-format
  msgid "two or more data types in declaration specifiers"
  msgstr ""
  
! #: c/c-decl.cc:12087 cp/parser.cc:35091
  #, fuzzy, gcc-internal-format
  #| msgid "`long long long' is too long for GCC"
  msgid "%<long long long%> is too long for GCC"
  msgstr "`long long long' - Ð²ÐµÐ»ÑŒÐ¼Ñ– Ð´Ð¾ÑžÐ³Ð° Ð´Ð»Ñ� GCC"
  
! #: c/c-decl.cc:12100
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 does not support `long long'"
  msgid "ISO C90 does not support %<long long%>"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ `long long'"
  
! #: c/c-decl.cc:12353 c/c-parser.cc:12542
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 does not support complex types"
  msgid "ISO C90 does not support complex types"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-decl.cc:12407
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support saturating types"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-decl.cc:12486 c/c-decl.cc:13111 c/c-decl.cc:13170
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `%s'"
  msgid "duplicate %qE"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½ÑŒÐ½Ðµ `%s'"
  
! #: c/c-decl.cc:12503
  #, gcc-internal-format
  msgid "%qs cannot be defined via %<typedef%>"
  msgstr ""
  
! #: c/c-decl.cc:12507
  #, fuzzy, gcc-internal-format
  msgid "%qs cannot be used here"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: c/c-decl.cc:12560
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support %<__int%d%> types"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-decl.cc:12582
  #, fuzzy, gcc-internal-format
  msgid "%<__int%d%> is not supported on this target"
  msgstr "__buitin_saveregs Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð° Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ð°Ð¹"
  
! #: c/c-decl.cc:12625
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 does not support complex types"
  msgid "ISO C90 does not support boolean types"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-decl.cc:12744
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support the %<_Float%d%s%> type before C23"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-decl.cc:12795 cp/parser.cc:20889
  #, fuzzy, gcc-internal-format
  msgid "%<_Float%d%s%> is not supported on this target"
  msgstr "__buitin_saveregs Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð° Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ð°Ð¹"
  
! #: c/c-decl.cc:12871
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support decimal floating-point before C23"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-decl.cc:12895 c/c-decl.cc:13272 c/c-parser.cc:11443
  #, fuzzy, gcc-internal-format
  msgid "fixed-point types not supported for this target"
  msgstr "Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ñ‹ Ñ�ÐµÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð° Ð´Ð»Ñ� Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ñ‹"
  
! #: c/c-decl.cc:12897
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support fixed-point types"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-decl.cc:12926
  #, fuzzy, gcc-internal-format
  msgid "%<_BitInt%> argument is not an integer constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: c/c-decl.cc:12932
  #, fuzzy, gcc-internal-format
  msgid "%<_BitInt%> argument %qE is not a positive integer constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: c/c-decl.cc:12939
  #, gcc-internal-format
  msgid "%<_BitInt%> argument %qE is larger than %<BITINT_MAXWIDTH%> %qd"
  msgstr ""
  
! #: c/c-decl.cc:12987
  #, gcc-internal-format
  msgid "C++ lookup of %qD would return a field, not a type"
  msgstr ""
  
! #: c/c-decl.cc:13000
  #, gcc-internal-format
  msgid "%qE fails to be a typedef or built in type"
  msgstr ""
  
! #: c/c-decl.cc:13055
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not at beginning of declaration"
  msgid "%qE is not at beginning of declaration"
--- 47632,48090 ----
  msgid "flexible array member in a struct with no named members is a GCC extension"
  msgstr ""
  
! #: c/c-decl.cc:9687
  #, gcc-internal-format
  msgid "structure containing a flexible array member is not at the end of another structure"
  msgstr ""
  
! #: c/c-decl.cc:9714
  #, fuzzy, gcc-internal-format
  #| msgid "%s is too large"
  msgid "type %qT is too large"
  msgstr "%s - Ð²ÐµÐ»ÑŒÐ¼Ñ– Ð²Ñ�Ð»Ñ–ÐºÑ–"
  
! #: c/c-decl.cc:9778
  #, gcc-internal-format
  msgid "type punning toggles scalar storage order"
  msgstr ""
  
! #: c/c-decl.cc:9845
  #, gcc-internal-format
  msgid "union cannot be made transparent"
  msgstr ""
  
! #: c/c-decl.cc:9859
  #, gcc-internal-format
  msgid "redefinition of struct or union %qT with variably modified type"
  msgstr ""
  
! #: c/c-decl.cc:9866
  #, fuzzy, gcc-internal-format
  msgid "redefinition of struct or union %qT"
  msgstr "Ð¿ÐµÑ€Ð°Ð½Ð°ÐºÑ–Ñ€Ð°Ð²Ð°Ð½Ð½Ðµ stdout: %s"
  
! #: c/c-decl.cc:10046
  #, fuzzy, gcc-internal-format
  msgid "nested redefinition of %<enum %E%>"
  msgstr "Ð¿ÐµÑ€Ð°Ð½Ð°ÐºÑ–Ñ€Ð°Ð²Ð°Ð½Ð½Ðµ stdout: %s"
  
! #: c/c-decl.cc:10094
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%#D'"
  msgid "redeclaration of %<enum %E%>"
  msgstr "Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%#D'"
  
! #: c/c-decl.cc:10106
  #, gcc-internal-format
  msgid "%<enum%> declared with but defined without fixed underlying type"
  msgstr ""
  
! #: c/c-decl.cc:10193 cp/decl.cc:17836 m2/gm2-gcc/m2type.cc:2088
  #, gcc-internal-format
  msgid "specified mode too small for enumerated values"
  msgstr ""
  
! #: c/c-decl.cc:10212
  #, gcc-internal-format
  msgid "enumeration values exceed range of largest integer"
  msgstr ""
  
! #: c/c-decl.cc:10221
  #, gcc-internal-format
  msgid "enumeration values exceed range of %qs"
  msgstr ""
  
! #: c/c-decl.cc:10334
  #, fuzzy, gcc-internal-format
  msgid "conflicting redefinition of enum %qT"
  msgstr "Ð¿ÐµÑ€Ð°Ð½Ð°ÐºÑ–Ñ€Ð°Ð²Ð°Ð½Ð½Ðµ stdout: %s"
  
! #: c/c-decl.cc:10367 c/c-decl.cc:10383
  #, fuzzy, gcc-internal-format
  msgid "enumerator value for %qE is not an integer constant"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: c/c-decl.cc:10378
  #, fuzzy, gcc-internal-format
  msgid "enumerator value for %qE is not an integer constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: c/c-decl.cc:10402
  #, gcc-internal-format
  msgid "overflow in enumeration values"
  msgstr ""
  
! #: c/c-decl.cc:10409
  #, gcc-internal-format
  msgid "enumerator value outside the range of underlying type"
  msgstr ""
  
! #: c/c-decl.cc:10426
  #, gcc-internal-format
  msgid "value of redeclared enumerator outside the range of %qT"
  msgstr ""
  
! #: c/c-decl.cc:10454
  #, gcc-internal-format
  msgid "enumerator value outside the range of %qs"
  msgstr ""
  
! #: c/c-decl.cc:10460
  #, gcc-internal-format
  msgid "ISO C restricts enumerator values to range of %<int%> before C23"
  msgstr ""
  
! #: c/c-decl.cc:10668 cp/decl.cc:6051 cp/decl.cc:18436
  #, gcc-internal-format
  msgid "inline function %qD given attribute %qs"
  msgstr ""
  
! #: c/c-decl.cc:10687
  #, gcc-internal-format
  msgid "return type is an incomplete type"
  msgstr ""
  
! #: c/c-decl.cc:10699
  #, fuzzy, gcc-internal-format
  #| msgid "return type of `%s' is not `int'"
  msgid "return type defaults to %<int%>"
  msgstr "Ð²Ñ�Ñ€Ñ‚Ð°ÐµÐ¼Ñ‹ Ñ‚Ñ‹Ð¿ \"%s\" Ð½Ðµ \"int\""
  
! #: c/c-decl.cc:10727
  #, gcc-internal-format
  msgid "%q+D defined as variadic function without prototype"
  msgstr ""
  
! #: c/c-decl.cc:10780
  #, gcc-internal-format
  msgid "ISO C23 does not allow defining parameters for function %qE declared without parameters"
  msgstr ""
  
! #: c/c-decl.cc:10803
  #, fuzzy, gcc-internal-format
  #| msgid "no previous prototype for `%s'"
  msgid "no previous prototype for %qD"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð¿Ñ€Ð°Ñ‚Ð°Ñ‚Ñ‹Ð¿Ð° Ð´Ð»Ñ� \"%s\""
  
! #: c/c-decl.cc:10812
  #, fuzzy, gcc-internal-format
  msgid "%qD was used with no prototype before its definition"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: c/c-decl.cc:10830
  #, fuzzy, gcc-internal-format
  msgid "%qD was used with no declaration before its definition"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: c/c-decl.cc:10849
  #, fuzzy, gcc-internal-format
  #| msgid "return type of `%s' is not `int'"
  msgid "return type of %qD is not %<int%>"
  msgstr "Ð²Ñ�Ñ€Ñ‚Ð°ÐµÐ¼Ñ‹ Ñ‚Ñ‹Ð¿ \"%s\" Ð½Ðµ \"int\""
  
! #: c/c-decl.cc:10851
  #, gcc-internal-format
  msgid "%<_Atomic%>-qualified return type of %qD"
  msgstr ""
  
! #: c/c-decl.cc:10858
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is usually a function"
  msgid "%qD is normally a non-static function"
  msgstr "`%s' - Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: c/c-decl.cc:10909
  #, gcc-internal-format
  msgid "old-style parameter declarations in prototyped function definition"
  msgstr ""
  
! #: c/c-decl.cc:10925
  #, gcc-internal-format
  msgid "traditional C rejects ISO C style function definitions"
  msgstr ""
  
! #: c/c-decl.cc:10942
  #, gcc-internal-format
  msgid "ISO C does not support omitting parameter names in function definitions before C23"
  msgstr ""
  
! #: c/c-decl.cc:10982 c/c-decl.cc:10986
  #, gcc-internal-format
  msgid "old-style function definition"
  msgstr ""
  
! #: c/c-decl.cc:10999
  #, gcc-internal-format
  msgid "parameter name missing from parameter list"
  msgstr ""
  
! #: c/c-decl.cc:11015
  #, gcc-internal-format
  msgid "%qD declared as a non-parameter"
  msgstr ""
  
! #: c/c-decl.cc:11023
  #, fuzzy, gcc-internal-format
  msgid "multiple parameters named %qD"
  msgstr "Ð½ÐµÐ²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°ÐµÐ¼Ñ‹ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\""
  
! #: c/c-decl.cc:11032
  #, fuzzy, gcc-internal-format
  msgid "parameter %qD declared with void type"
  msgstr "Ñ‚Ñ‹Ð¿ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" Ð½Ðµ Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ñ‹"
  
! #: c/c-decl.cc:11061 c/c-decl.cc:11066
  #, gcc-internal-format
  msgid "type of %qD defaults to %<int%>"
  msgstr ""
  
! #: c/c-decl.cc:11086
  #, fuzzy, gcc-internal-format
  msgid "parameter %qD has incomplete type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-decl.cc:11093
  #, gcc-internal-format
  msgid "declaration for parameter %qD but no such parameter"
  msgstr ""
  
! #: c/c-decl.cc:11146
  #, gcc-internal-format
  msgid "number of arguments doesn%'t match built-in prototype"
  msgstr ""
  
! #: c/c-decl.cc:11157
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "number of arguments doesn%'t match prototype"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž, Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ… Ð´Ð»Ñ� Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
  
! #: c/c-decl.cc:11160 c/c-decl.cc:11207 c/c-decl.cc:11221
  #, fuzzy, gcc-internal-format
  #| msgid "empty declaration"
  msgid "prototype declaration"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: c/c-decl.cc:11199
  #, gcc-internal-format
  msgid "promoted argument %qD doesn%'t match built-in prototype"
  msgstr ""
  
! #: c/c-decl.cc:11204
  #, gcc-internal-format
  msgid "promoted argument %qD doesn%'t match prototype"
  msgstr ""
  
! #: c/c-decl.cc:11214
  #, gcc-internal-format
  msgid "argument %qD doesn%'t match built-in prototype"
  msgstr ""
  
! #: c/c-decl.cc:11219
  #, gcc-internal-format
  msgid "argument %qD doesn%'t match prototype"
  msgstr ""
  
! #: c/c-decl.cc:11477 cp/decl.cc:19359
  #, gcc-internal-format
  msgid "no return statement in function returning non-void"
  msgstr ""
  
! #: c/c-decl.cc:11496 cp/decl.cc:19430
  #, fuzzy, gcc-internal-format
  #| msgid "label `%D' defined but not used"
  msgid "parameter %qD set but not used"
  msgstr "Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ð° `%D' Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°, Ð°Ð»Ðµ Ð½Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ð°ÐµÑ†Ñ†Ð°"
  
! #: c/c-decl.cc:11593
  #, gcc-internal-format
  msgid "%<for%> loop initial declarations are only allowed in C99 or C11 mode"
  msgstr ""
  
! #: c/c-decl.cc:11598
  #, gcc-internal-format
  msgid "use option %<-std=c99%>, %<-std=gnu99%>, %<-std=c11%> or %<-std=gnu11%> to compile your code"
  msgstr ""
  
! #: c/c-decl.cc:11605
  #, fuzzy, gcc-internal-format
  msgid "ISO C90 does not support %<for%> loop initial declarations"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ \"long long\""
  
! #: c/c-decl.cc:11639
  #, gcc-internal-format
  msgid "declaration of static variable %qD in %<for%> loop initial declaration"
  msgstr ""
  
! #: c/c-decl.cc:11643
  #, gcc-internal-format
  msgid "declaration of %<extern%> variable %qD in %<for%> loop initial declaration"
  msgstr ""
  
! #: c/c-decl.cc:11650
  #, gcc-internal-format
  msgid "%<struct %E%> declared in %<for%> loop initial declaration"
  msgstr ""
  
! #: c/c-decl.cc:11655
  #, gcc-internal-format
  msgid "%<union %E%> declared in %<for%> loop initial declaration"
  msgstr ""
  
! #: c/c-decl.cc:11661
  #, gcc-internal-format
  msgid "%<enum %E%> declared in %<for%> loop initial declaration"
  msgstr ""
  
! #: c/c-decl.cc:11665
  #, gcc-internal-format
  msgid "declaration of non-variable %qD in %<for%> loop initial declaration"
  msgstr ""
  
! #: c/c-decl.cc:11965
  #, gcc-internal-format
  msgid "incompatible address space qualifiers %qs and %qs"
  msgstr ""
  
! #: c/c-decl.cc:12024 c/c-decl.cc:12031
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate label declaration `%s'"
  msgid "duplicate %qE declaration specifier"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ñ‹ `%s'"
  
! #: c/c-decl.cc:12059 c/c-decl.cc:13180
  #, gcc-internal-format
  msgid "multiple storage classes in declaration specifiers"
  msgstr ""
  
! #: c/c-decl.cc:12061
  #, gcc-internal-format
  msgid "%qs used with %<auto%>"
  msgstr ""
  
  #. auto may only be used with another storage class specifier,
  #. such as constexpr, if the type is inferred.
! #: c/c-decl.cc:12066
  #, gcc-internal-format
  msgid "%<auto%> used with %<constexpr%>"
  msgstr ""
  
! #: c/c-decl.cc:12079 c/c-decl.cc:12517 c/c-decl.cc:12975
  #, gcc-internal-format
  msgid "two or more data types in declaration specifiers"
  msgstr ""
  
! #: c/c-decl.cc:12091 cp/parser.cc:35150
  #, fuzzy, gcc-internal-format
  #| msgid "`long long long' is too long for GCC"
  msgid "%<long long long%> is too long for GCC"
  msgstr "`long long long' - Ð²ÐµÐ»ÑŒÐ¼Ñ– Ð´Ð¾ÑžÐ³Ð° Ð´Ð»Ñ� GCC"
  
! #: c/c-decl.cc:12104
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 does not support `long long'"
  msgid "ISO C90 does not support %<long long%>"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ `long long'"
  
! #: c/c-decl.cc:12357 c/c-parser.cc:12587
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 does not support complex types"
  msgid "ISO C90 does not support complex types"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-decl.cc:12411
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support saturating types"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-decl.cc:12490 c/c-decl.cc:13115 c/c-decl.cc:13174
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `%s'"
  msgid "duplicate %qE"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½ÑŒÐ½Ðµ `%s'"
  
! #: c/c-decl.cc:12507
  #, gcc-internal-format
  msgid "%qs cannot be defined via %<typedef%>"
  msgstr ""
  
! #: c/c-decl.cc:12511
  #, fuzzy, gcc-internal-format
  msgid "%qs cannot be used here"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: c/c-decl.cc:12564
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support %<__int%d%> types"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-decl.cc:12586
  #, fuzzy, gcc-internal-format
  msgid "%<__int%d%> is not supported on this target"
  msgstr "__buitin_saveregs Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð° Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ð°Ð¹"
  
! #: c/c-decl.cc:12629
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 does not support complex types"
  msgid "ISO C90 does not support boolean types"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-decl.cc:12748
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support the %<_Float%d%s%> type before C23"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-decl.cc:12799 cp/parser.cc:20893
  #, fuzzy, gcc-internal-format
  msgid "%<_Float%d%s%> is not supported on this target"
  msgstr "__buitin_saveregs Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð° Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ð°Ð¹"
  
! #: c/c-decl.cc:12875
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support decimal floating-point before C23"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-decl.cc:12899 c/c-decl.cc:13276 c/c-parser.cc:11488
  #, fuzzy, gcc-internal-format
  msgid "fixed-point types not supported for this target"
  msgstr "Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ñ‹ Ñ�ÐµÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð° Ð´Ð»Ñ� Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ñ‹"
  
! #: c/c-decl.cc:12901
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support fixed-point types"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-decl.cc:12930
  #, fuzzy, gcc-internal-format
  msgid "%<_BitInt%> argument is not an integer constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: c/c-decl.cc:12936
  #, fuzzy, gcc-internal-format
  msgid "%<_BitInt%> argument %qE is not a positive integer constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: c/c-decl.cc:12943
  #, gcc-internal-format
  msgid "%<_BitInt%> argument %qE is larger than %<BITINT_MAXWIDTH%> %qd"
  msgstr ""
  
! #: c/c-decl.cc:12991
  #, gcc-internal-format
  msgid "C++ lookup of %qD would return a field, not a type"
  msgstr ""
  
! #: c/c-decl.cc:13004
  #, gcc-internal-format
  msgid "%qE fails to be a typedef or built in type"
  msgstr ""
  
! #: c/c-decl.cc:13059
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not at beginning of declaration"
  msgid "%qE is not at beginning of declaration"
*************** msgstr "\"%s\" - Ð³Ñ�Ñ‚Ð° Ð½Ðµ Ð¿Ð°Ñ‡Ð°Ñ
*** 48085,48256 ****
  
  #. auto may only be used with another storage class specifier,
  #. such as constexpr, if the type is inferred.
! #: c/c-decl.cc:13076 c/c-decl.cc:13153
  #, gcc-internal-format
  msgid "%qE used with %<auto%>"
  msgstr ""
  
! #: c/c-decl.cc:13078
  #, gcc-internal-format
  msgid "%qE used with %<register%>"
  msgstr ""
  
! #: c/c-decl.cc:13080 c/c-decl.cc:13149
  #, gcc-internal-format
  msgid "%qE used with %<typedef%>"
  msgstr ""
  
! #: c/c-decl.cc:13082 c/c-decl.cc:13119
  #, gcc-internal-format
  msgid "%qE used with %<constexpr%>"
  msgstr ""
  
! #: c/c-decl.cc:13096 c/c-parser.cc:3320 c/c-parser.cc:4691 c/c-parser.cc:10707
  #, fuzzy, gcc-internal-format
  #| msgid "%s does not support %s"
  msgid "ISO C99 does not support %qE"
  msgstr "%s Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ %s"
  
! #: c/c-decl.cc:13099 c/c-parser.cc:3323 c/c-parser.cc:4694 c/c-parser.cc:10710
  #, fuzzy, gcc-internal-format
  #| msgid "%s does not support %s"
  msgid "ISO C90 does not support %qE"
  msgstr "%s Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ %s"
  
! #: c/c-decl.cc:13125
  #, gcc-internal-format
  msgid "%<__thread%> before %<extern%>"
  msgstr ""
  
! #: c/c-decl.cc:13134
  #, gcc-internal-format
  msgid "%<__thread%> before %<static%>"
  msgstr ""
  
! #: c/c-decl.cc:13140
  #, gcc-internal-format
  msgid "%<typedef%> used with %<auto%>"
  msgstr ""
  
! #: c/c-decl.cc:13147
  #, gcc-internal-format
  msgid "%qE used with %<extern%>"
  msgstr ""
  
! #: c/c-decl.cc:13155
  #, gcc-internal-format
  msgid "%qE used with %qs"
  msgstr ""
  
! #: c/c-decl.cc:13168
  #, gcc-internal-format
  msgid "duplicate %<_Thread_local%> or %<__thread%>"
  msgstr ""
  
! #: c/c-decl.cc:13184
  #, gcc-internal-format
  msgid "%qs used with %qE"
  msgstr ""
  
! #: c/c-decl.cc:13192
  #, gcc-internal-format
  msgid "%<constexpr%> used with %qE"
  msgstr ""
  
! #: c/c-decl.cc:13269
  #, gcc-internal-format
  msgid "%<_Sat%> is used without %<_Fract%> or %<_Accum%>"
  msgstr ""
  
! #: c/c-decl.cc:13284
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support plain `complex' meaning `double complex'"
  msgid "ISO C does not support plain %<complex%> meaning %<double complex%>"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ‹ \"complex\" Ñƒ Ð·Ð½Ð°Ñ‡Ñ�Ð½Ð½Ñ– \"double complex\""
  
! #: c/c-decl.cc:13295
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support %<auto%> type deduction before C23"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-decl.cc:13324
  #, gcc-internal-format
  msgid "%<__auto_type%> followed by %<[[]]%> attributes"
  msgstr ""
  
! #: c/c-decl.cc:13350 c/c-decl.cc:13366 c/c-decl.cc:13392
  #, gcc-internal-format
  msgid "ISO C does not support complex integer types"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-decl.cc:13538
  #, gcc-internal-format
  msgid "%<signed _BitInt%> argument must be at least 2"
  msgstr ""
  
! #: c/c-decl.cc:13547
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support %<%s_BitInt(%d)%> before C23"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-decl.cc:13847 cp/semantics.cc:6784
  #, gcc-internal-format
  msgid "%<#pragma omp declare reduction%> combiner refers to variable %qD which is not %<omp_out%> nor %<omp_in%>"
  msgstr ""
  
! #: c/c-decl.cc:13851 cp/semantics.cc:6788
  #, gcc-internal-format
  msgid "%<#pragma omp declare reduction%> initializer refers to variable %qD which is not %<omp_priv%> nor %<omp_orig%>"
  msgstr ""
  
! #: c/c-decl.cc:13975
  #, gcc-internal-format
  msgid "ISO C does not support %qs statement with an identifier operand before C2Y"
  msgstr ""
  
! #: c/c-decl.cc:14027
  #, gcc-internal-format
  msgid "%<break%> statement operand %qE does not refer to a named loop or %<switch%>; did you mean %qs?"
  msgstr ""
  
! #: c/c-decl.cc:14031
  #, gcc-internal-format
  msgid "%<continue%> statement operand %qE does not refer to a named loop; did you mean %qs?"
  msgstr ""
  
! #: c/c-decl.cc:14036
  #, gcc-internal-format
  msgid "%<break%> statement operand %qE does not refer to a named loop or %<switch%>"
  msgstr ""
  
! #: c/c-decl.cc:14039
  #, gcc-internal-format
  msgid "%<continue%> statement operand %qE does not refer to a named loop"
  msgstr ""
  
! #: c/c-decl.cc:14045
  #, gcc-internal-format
  msgid "%<continue%> statement operand %qE refers to a named %<switch%>"
  msgstr ""
  
! #: c/c-decl.cc:14047 c/c-decl.cc:14064
  #, gcc-internal-format
  msgid "%<switch%> name defined here"
  msgstr ""
  
! #: c/c-decl.cc:14055
  #, gcc-internal-format
  msgid "%qs statement operand %qE refers to a loop outside of its body"
  msgstr ""
  
! #: c/c-decl.cc:14057
  #, gcc-internal-format
  msgid "loop name defined here"
  msgstr ""
  
! #: c/c-decl.cc:14061
  #, gcc-internal-format
  msgid "%<break%> statement operand %qE refers to a %<switch%> outside of its body"
  msgstr ""
--- 48092,48263 ----
  
  #. auto may only be used with another storage class specifier,
  #. such as constexpr, if the type is inferred.
! #: c/c-decl.cc:13080 c/c-decl.cc:13157
  #, gcc-internal-format
  msgid "%qE used with %<auto%>"
  msgstr ""
  
! #: c/c-decl.cc:13082
  #, gcc-internal-format
  msgid "%qE used with %<register%>"
  msgstr ""
  
! #: c/c-decl.cc:13084 c/c-decl.cc:13153
  #, gcc-internal-format
  msgid "%qE used with %<typedef%>"
  msgstr ""
  
! #: c/c-decl.cc:13086 c/c-decl.cc:13123
  #, gcc-internal-format
  msgid "%qE used with %<constexpr%>"
  msgstr ""
  
! #: c/c-decl.cc:13100 c/c-parser.cc:3365 c/c-parser.cc:4736 c/c-parser.cc:10752
  #, fuzzy, gcc-internal-format
  #| msgid "%s does not support %s"
  msgid "ISO C99 does not support %qE"
  msgstr "%s Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ %s"
  
! #: c/c-decl.cc:13103 c/c-parser.cc:3368 c/c-parser.cc:4739 c/c-parser.cc:10755
  #, fuzzy, gcc-internal-format
  #| msgid "%s does not support %s"
  msgid "ISO C90 does not support %qE"
  msgstr "%s Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ %s"
  
! #: c/c-decl.cc:13129
  #, gcc-internal-format
  msgid "%<__thread%> before %<extern%>"
  msgstr ""
  
! #: c/c-decl.cc:13138
  #, gcc-internal-format
  msgid "%<__thread%> before %<static%>"
  msgstr ""
  
! #: c/c-decl.cc:13144
  #, gcc-internal-format
  msgid "%<typedef%> used with %<auto%>"
  msgstr ""
  
! #: c/c-decl.cc:13151
  #, gcc-internal-format
  msgid "%qE used with %<extern%>"
  msgstr ""
  
! #: c/c-decl.cc:13159
  #, gcc-internal-format
  msgid "%qE used with %qs"
  msgstr ""
  
! #: c/c-decl.cc:13172
  #, gcc-internal-format
  msgid "duplicate %<_Thread_local%> or %<__thread%>"
  msgstr ""
  
! #: c/c-decl.cc:13188
  #, gcc-internal-format
  msgid "%qs used with %qE"
  msgstr ""
  
! #: c/c-decl.cc:13196
  #, gcc-internal-format
  msgid "%<constexpr%> used with %qE"
  msgstr ""
  
! #: c/c-decl.cc:13273
  #, gcc-internal-format
  msgid "%<_Sat%> is used without %<_Fract%> or %<_Accum%>"
  msgstr ""
  
! #: c/c-decl.cc:13288
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support plain `complex' meaning `double complex'"
  msgid "ISO C does not support plain %<complex%> meaning %<double complex%>"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ‹ \"complex\" Ñƒ Ð·Ð½Ð°Ñ‡Ñ�Ð½Ð½Ñ– \"double complex\""
  
! #: c/c-decl.cc:13299
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support %<auto%> type deduction before C23"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-decl.cc:13328
  #, gcc-internal-format
  msgid "%<__auto_type%> followed by %<[[]]%> attributes"
  msgstr ""
  
! #: c/c-decl.cc:13354 c/c-decl.cc:13370 c/c-decl.cc:13396
  #, gcc-internal-format
  msgid "ISO C does not support complex integer types"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-decl.cc:13542
  #, gcc-internal-format
  msgid "%<signed _BitInt%> argument must be at least 2"
  msgstr ""
  
! #: c/c-decl.cc:13551
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support %<%s_BitInt(%d)%> before C23"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-decl.cc:13851 cp/semantics.cc:6784
  #, gcc-internal-format
  msgid "%<#pragma omp declare reduction%> combiner refers to variable %qD which is not %<omp_out%> nor %<omp_in%>"
  msgstr ""
  
! #: c/c-decl.cc:13855 cp/semantics.cc:6788
  #, gcc-internal-format
  msgid "%<#pragma omp declare reduction%> initializer refers to variable %qD which is not %<omp_priv%> nor %<omp_orig%>"
  msgstr ""
  
! #: c/c-decl.cc:13979
  #, gcc-internal-format
  msgid "ISO C does not support %qs statement with an identifier operand before C2Y"
  msgstr ""
  
! #: c/c-decl.cc:14031
  #, gcc-internal-format
  msgid "%<break%> statement operand %qE does not refer to a named loop or %<switch%>; did you mean %qs?"
  msgstr ""
  
! #: c/c-decl.cc:14035
  #, gcc-internal-format
  msgid "%<continue%> statement operand %qE does not refer to a named loop; did you mean %qs?"
  msgstr ""
  
! #: c/c-decl.cc:14040
  #, gcc-internal-format
  msgid "%<break%> statement operand %qE does not refer to a named loop or %<switch%>"
  msgstr ""
  
! #: c/c-decl.cc:14043
  #, gcc-internal-format
  msgid "%<continue%> statement operand %qE does not refer to a named loop"
  msgstr ""
  
! #: c/c-decl.cc:14049
  #, gcc-internal-format
  msgid "%<continue%> statement operand %qE refers to a named %<switch%>"
  msgstr ""
  
! #: c/c-decl.cc:14051 c/c-decl.cc:14068
  #, gcc-internal-format
  msgid "%<switch%> name defined here"
  msgstr ""
  
! #: c/c-decl.cc:14059
  #, gcc-internal-format
  msgid "%qs statement operand %qE refers to a loop outside of its body"
  msgstr ""
  
! #: c/c-decl.cc:14061
  #, gcc-internal-format
  msgid "loop name defined here"
  msgstr ""
  
! #: c/c-decl.cc:14065
  #, gcc-internal-format
  msgid "%<break%> statement operand %qE refers to a %<switch%> outside of its body"
  msgstr ""
*************** msgstr ""
*** 48260,48296 ****
  msgid "%qs is a keyword with %qs onwards"
  msgstr ""
  
! #: c/c-fold.cc:392 c/c-typeck.cc:14134 cp/typeck.cc:5803
  #, gcc-internal-format
  msgid "left shift of negative value"
  msgstr ""
  
! #: c/c-fold.cc:405 c/c-typeck.cc:14143 cp/typeck.cc:5811
  #, gcc-internal-format
  msgid "left shift count is negative"
  msgstr ""
  
! #: c/c-fold.cc:406 c/c-typeck.cc:14070 cp/typeck.cc:5750
  #, gcc-internal-format
  msgid "right shift count is negative"
  msgstr ""
  
! #: c/c-fold.cc:416 c/c-typeck.cc:14162 cp/typeck.cc:5819
  #, gcc-internal-format
  msgid "left shift count >= width of type"
  msgstr ""
  
! #: c/c-fold.cc:417 c/c-typeck.cc:14094 cp/typeck.cc:5761
  #, gcc-internal-format
  msgid "right shift count >= width of type"
  msgstr ""
  
! #: c/c-fold.cc:424 c/c-typeck.cc:14154
  #, gcc-internal-format
  msgid "left shift count >= width of vector element"
  msgstr ""
  
! #: c/c-fold.cc:425 c/c-typeck.cc:14081
  #, gcc-internal-format
  msgid "right shift count >= width of vector element"
  msgstr ""
--- 48267,48303 ----
  msgid "%qs is a keyword with %qs onwards"
  msgstr ""
  
! #: c/c-fold.cc:392 c/c-typeck.cc:14151 cp/typeck.cc:5919
  #, gcc-internal-format
  msgid "left shift of negative value"
  msgstr ""
  
! #: c/c-fold.cc:405 c/c-typeck.cc:14160 cp/typeck.cc:5927
  #, gcc-internal-format
  msgid "left shift count is negative"
  msgstr ""
  
! #: c/c-fold.cc:406 c/c-typeck.cc:14087 cp/typeck.cc:5866
  #, gcc-internal-format
  msgid "right shift count is negative"
  msgstr ""
  
! #: c/c-fold.cc:416 c/c-typeck.cc:14179 cp/typeck.cc:5935
  #, gcc-internal-format
  msgid "left shift count >= width of type"
  msgstr ""
  
! #: c/c-fold.cc:417 c/c-typeck.cc:14111 cp/typeck.cc:5877
  #, gcc-internal-format
  msgid "right shift count >= width of type"
  msgstr ""
  
! #: c/c-fold.cc:424 c/c-typeck.cc:14171
  #, gcc-internal-format
  msgid "left shift count >= width of vector element"
  msgstr ""
  
! #: c/c-fold.cc:425 c/c-typeck.cc:14098
  #, gcc-internal-format
  msgid "right shift count >= width of vector element"
  msgstr ""
*************** msgstr ""
*** 48310,48444 ****
  msgid "to match this %qs"
  msgstr ""
  
! #: c/c-parser.cc:1431 cp/parser.cc:35328
  #, gcc-internal-format
  msgid "expected end of line"
  msgstr ""
  
! #: c/c-parser.cc:1950
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids an empty source file"
  msgid "ISO C forbids an empty translation unit"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð¿ÑƒÑ�Ñ‚Ñ‹ Ñ–Ð·Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹ Ñ„Ð°Ð¹Ð»"
  
! #: c/c-parser.cc:1976 c/c-parser.cc:1985 c/c-parser.cc:27770 cp/parser.cc:51250
  #: cp/semantics.cc:4007 cp/semantics.cc:4016
  #, gcc-internal-format
  msgid "%qs without corresponding %qs"
  msgstr ""
  
! #: c/c-parser.cc:2081 c/c-parser.cc:14533
  #, gcc-internal-format
  msgid "ISO C does not allow extra %<;%> outside of a function"
  msgstr ""
  
! #: c/c-parser.cc:2165
  #, gcc-internal-format
  msgid "%<assume%> attribute at top level"
  msgstr ""
  
! #: c/c-parser.cc:2364
  #, gcc-internal-format
  msgid "unknown type name %qE; use %<struct%> keyword to refer to the type"
  msgstr ""
  
! #: c/c-parser.cc:2372
  #, gcc-internal-format
  msgid "unknown type name %qE; use %<union%> keyword to refer to the type"
  msgstr ""
  
! #: c/c-parser.cc:2380
  #, gcc-internal-format
  msgid "unknown type name %qE; use %<enum%> keyword to refer to the type"
  msgstr ""
  
! #: c/c-parser.cc:2393 c/c-parser.cc:3588 c/c-parser.cc:5295
  #, gcc-internal-format
  msgid "unknown type name %qE; did you mean %qs?"
  msgstr ""
  
! #: c/c-parser.cc:2397 c/c-parser.cc:3592 c/c-parser.cc:5299
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown type name %qE"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð°: %s"
  
! #: c/c-parser.cc:2424 c/c-parser.cc:15911 c/c-parser.cc:24927
! #: c/c-parser.cc:25670 c/c-parser.cc:26256 cp/parser.cc:48093
! #: cp/parser.cc:53871
  #, fuzzy, gcc-internal-format
  #| msgid "empty declaration"
  msgid "expected declaration specifiers"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: c/c-parser.cc:2448
  #, gcc-internal-format
  msgid "%qT declared in underspecified object declaration"
  msgstr ""
  
! #: c/c-parser.cc:2453
  #, gcc-internal-format
  msgid "%qT defined in underspecified object declaration"
  msgstr ""
  
! #: c/c-parser.cc:2489
  #, fuzzy, gcc-internal-format
  #| msgid "empty declaration"
  msgid "%qs in empty declaration"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: c/c-parser.cc:2503
  #, gcc-internal-format
  msgid "%<fallthrough%> attribute at top level"
  msgstr ""
  
! #: c/c-parser.cc:2541 c/c-parser.cc:8296
  #, gcc-internal-format
  msgid "attribute %<musttail%> mixed with other attributes on %<return%> statement"
  msgstr ""
  
! #: c/c-parser.cc:2557 c/c-parser.cc:4483
  #, gcc-internal-format
  msgid "expected %<;%>, identifier or %<(%>"
  msgstr ""
  
! #: c/c-parser.cc:2575 cp/parser.cc:37586 cp/parser.cc:37658
  #, fuzzy, gcc-internal-format
  msgid "prefix attributes are ignored for methods"
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
! #: c/c-parser.cc:2610
  #, fuzzy, gcc-internal-format
  #| msgid "section attributes are not supported for this target"
  msgid "prefix attributes are ignored for implementations"
  msgstr "Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ñ‹ Ñ�ÐµÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð° Ð´Ð»Ñ� Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ñ‹"
  
! #: c/c-parser.cc:2631
  #, gcc-internal-format
  msgid "unexpected attribute"
  msgstr ""
  
! #: c/c-parser.cc:2641 c/c-parser.cc:8316 cp/parser.cc:13359 cp/parser.cc:13620
  #, gcc-internal-format
  msgid "%<fallthrough%> attribute not followed by %<;%>"
  msgstr ""
  
! #: c/c-parser.cc:2644 c/c-parser.cc:8283 cp/cp-gimplify.cc:3684
  #, gcc-internal-format
  msgid "%<assume%> attribute not followed by %<;%>"
  msgstr ""
  
! #: c/c-parser.cc:2694
  #, gcc-internal-format
  msgid "%<__auto_type%> requires a plain identifier as declarator"
  msgstr ""
  
! #: c/c-parser.cc:2707
  #, gcc-internal-format
  msgid "%<auto%> requires a plain identifier, possibly with attributes, as declarator"
  msgstr ""
  
! #: c/c-parser.cc:2733
  #, gcc-internal-format
  msgid "data definition has no type or storage class"
  msgstr ""
--- 48317,48451 ----
  msgid "to match this %qs"
  msgstr ""
  
! #: c/c-parser.cc:1476 cp/parser.cc:35387
  #, gcc-internal-format
  msgid "expected end of line"
  msgstr ""
  
! #: c/c-parser.cc:1995
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids an empty source file"
  msgid "ISO C forbids an empty translation unit"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð¿ÑƒÑ�Ñ‚Ñ‹ Ñ–Ð·Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹ Ñ„Ð°Ð¹Ð»"
  
! #: c/c-parser.cc:2021 c/c-parser.cc:2030 c/c-parser.cc:27816 cp/parser.cc:51309
  #: cp/semantics.cc:4007 cp/semantics.cc:4016
  #, gcc-internal-format
  msgid "%qs without corresponding %qs"
  msgstr ""
  
! #: c/c-parser.cc:2126 c/c-parser.cc:14578
  #, gcc-internal-format
  msgid "ISO C does not allow extra %<;%> outside of a function"
  msgstr ""
  
! #: c/c-parser.cc:2210
  #, gcc-internal-format
  msgid "%<assume%> attribute at top level"
  msgstr ""
  
! #: c/c-parser.cc:2409
  #, gcc-internal-format
  msgid "unknown type name %qE; use %<struct%> keyword to refer to the type"
  msgstr ""
  
! #: c/c-parser.cc:2417
  #, gcc-internal-format
  msgid "unknown type name %qE; use %<union%> keyword to refer to the type"
  msgstr ""
  
! #: c/c-parser.cc:2425
  #, gcc-internal-format
  msgid "unknown type name %qE; use %<enum%> keyword to refer to the type"
  msgstr ""
  
! #: c/c-parser.cc:2438 c/c-parser.cc:3633 c/c-parser.cc:5340
  #, gcc-internal-format
  msgid "unknown type name %qE; did you mean %qs?"
  msgstr ""
  
! #: c/c-parser.cc:2442 c/c-parser.cc:3637 c/c-parser.cc:5344
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown type name %qE"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð°: %s"
  
! #: c/c-parser.cc:2469 c/c-parser.cc:15956 c/c-parser.cc:24972
! #: c/c-parser.cc:25715 c/c-parser.cc:26301 cp/parser.cc:48152
! #: cp/parser.cc:53924
  #, fuzzy, gcc-internal-format
  #| msgid "empty declaration"
  msgid "expected declaration specifiers"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: c/c-parser.cc:2493
  #, gcc-internal-format
  msgid "%qT declared in underspecified object declaration"
  msgstr ""
  
! #: c/c-parser.cc:2498
  #, gcc-internal-format
  msgid "%qT defined in underspecified object declaration"
  msgstr ""
  
! #: c/c-parser.cc:2534
  #, fuzzy, gcc-internal-format
  #| msgid "empty declaration"
  msgid "%qs in empty declaration"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: c/c-parser.cc:2548
  #, gcc-internal-format
  msgid "%<fallthrough%> attribute at top level"
  msgstr ""
  
! #: c/c-parser.cc:2586 c/c-parser.cc:8341
  #, gcc-internal-format
  msgid "attribute %<musttail%> mixed with other attributes on %<return%> statement"
  msgstr ""
  
! #: c/c-parser.cc:2602 c/c-parser.cc:4528
  #, gcc-internal-format
  msgid "expected %<;%>, identifier or %<(%>"
  msgstr ""
  
! #: c/c-parser.cc:2620 cp/parser.cc:37645 cp/parser.cc:37717
  #, fuzzy, gcc-internal-format
  msgid "prefix attributes are ignored for methods"
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
! #: c/c-parser.cc:2655
  #, fuzzy, gcc-internal-format
  #| msgid "section attributes are not supported for this target"
  msgid "prefix attributes are ignored for implementations"
  msgstr "Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ñ‹ Ñ�ÐµÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð° Ð´Ð»Ñ� Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ñ‹"
  
! #: c/c-parser.cc:2676
  #, gcc-internal-format
  msgid "unexpected attribute"
  msgstr ""
  
! #: c/c-parser.cc:2686 c/c-parser.cc:8361 cp/parser.cc:13361 cp/parser.cc:13622
  #, gcc-internal-format
  msgid "%<fallthrough%> attribute not followed by %<;%>"
  msgstr ""
  
! #: c/c-parser.cc:2689 c/c-parser.cc:8328 cp/cp-gimplify.cc:3689
  #, gcc-internal-format
  msgid "%<assume%> attribute not followed by %<;%>"
  msgstr ""
  
! #: c/c-parser.cc:2739
  #, gcc-internal-format
  msgid "%<__auto_type%> requires a plain identifier as declarator"
  msgstr ""
  
! #: c/c-parser.cc:2752
  #, gcc-internal-format
  msgid "%<auto%> requires a plain identifier, possibly with attributes, as declarator"
  msgstr ""
  
! #: c/c-parser.cc:2778
  #, gcc-internal-format
  msgid "data definition has no type or storage class"
  msgstr ""
*************** msgstr ""
*** 48446,48477 ****
  #. This means there is an attribute specifier after
  #. the declarator in a function definition.  Provide
  #. some more information for the user.
! #: c/c-parser.cc:2748
  #, gcc-internal-format
  msgid "attributes should be specified before the declarator in a function definition"
  msgstr ""
  
! #: c/c-parser.cc:2787
  #, gcc-internal-format
  msgid "%<__auto_type%> used with a bit-field initializer"
  msgstr ""
  
! #: c/c-parser.cc:2899 c/c-parser.cc:3044
  #, gcc-internal-format
  msgid "%qs requires an initialized data declaration"
  msgstr ""
  
! #: c/c-parser.cc:2999
  #, gcc-internal-format
  msgid "%qs may only be used with a single declarator"
  msgstr ""
  
! #: c/c-parser.cc:3031 cp/parser.cc:16635
  #, gcc-internal-format
  msgid "expected %<,%> or %<;%>"
  msgstr ""
  
! #: c/c-parser.cc:3036
  #, gcc-internal-format
  msgid "declaration in condition can only declare a single object"
  msgstr ""
--- 48453,48484 ----
  #. This means there is an attribute specifier after
  #. the declarator in a function definition.  Provide
  #. some more information for the user.
! #: c/c-parser.cc:2793
  #, gcc-internal-format
  msgid "attributes should be specified before the declarator in a function definition"
  msgstr ""
  
! #: c/c-parser.cc:2832
  #, gcc-internal-format
  msgid "%<__auto_type%> used with a bit-field initializer"
  msgstr ""
  
! #: c/c-parser.cc:2944 c/c-parser.cc:3089
  #, gcc-internal-format
  msgid "%qs requires an initialized data declaration"
  msgstr ""
  
! #: c/c-parser.cc:3044
  #, gcc-internal-format
  msgid "%qs may only be used with a single declarator"
  msgstr ""
  
! #: c/c-parser.cc:3076 cp/parser.cc:16639
  #, gcc-internal-format
  msgid "expected %<,%> or %<;%>"
  msgstr ""
  
! #: c/c-parser.cc:3081
  #, gcc-internal-format
  msgid "declaration in condition can only declare a single object"
  msgstr ""
*************** msgstr ""
*** 48479,48853 ****
  #. This can appear in many cases looking nothing like a
  #. function definition, so we don't give a more specific
  #. error suggesting there was one.
! #: c/c-parser.cc:3055 c/c-parser.cc:3097
  #, gcc-internal-format
  msgid "expected %<=%>, %<,%>, %<;%>, %<asm%> or %<__attribute__%>"
  msgstr ""
  
! #: c/c-parser.cc:3064
  #, gcc-internal-format
  msgid "ISO C forbids nested functions"
  msgstr ""
  
! #: c/c-parser.cc:3346 c/c-parser.cc:9636 c/c-parser.cc:15984
! #: c/c-parser.cc:20710 cp/parser.cc:42983
  #, gcc-internal-format
  msgid "expected string literal"
  msgstr ""
  
! #: c/c-parser.cc:3355
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C11 does not support omitting the string in %qE"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-parser.cc:3361
  #, gcc-internal-format
  msgid "expression in static assertion is not an integer"
  msgstr ""
  
! #: c/c-parser.cc:3370
  #, fuzzy, gcc-internal-format
  msgid "expression in static assertion is not an integer constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: c/c-parser.cc:3375
  #, gcc-internal-format
  msgid "expression in static assertion is not constant"
  msgstr ""
  
! #: c/c-parser.cc:3382
  #, gcc-internal-format
  msgid "static assertion failed: %E"
  msgstr ""
  
! #: c/c-parser.cc:3384 cp/semantics.cc:12469
  #, gcc-internal-format
  msgid "static assertion failed"
  msgstr ""
  
! #: c/c-parser.cc:3764
  #, gcc-internal-format
  msgid "%<_Atomic%> in Objective-C"
  msgstr ""
  
! #: c/c-parser.cc:3767
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 does not support complex types"
  msgid "ISO C99 does not support the %<_Atomic%> qualifier"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-parser.cc:3770
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 does not support complex types"
  msgid "ISO C90 does not support the %<_Atomic%> qualifier"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-parser.cc:3798
  #, gcc-internal-format
  msgid "%<_Atomic%> applied to a qualified type"
  msgstr ""
  
! #: c/c-parser.cc:3828
  #, gcc-internal-format
  msgid "%<__GIMPLE%> only valid with %<-fgimple%>"
  msgstr ""
  
! #: c/c-parser.cc:3865
  #, fuzzy, gcc-internal-format
  msgid "empty enum is invalid"
  msgstr "Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\" Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ð½Ñ‹"
  
! #: c/c-parser.cc:3876
  #, gcc-internal-format
  msgid "cannot use keyword %qs as enumeration constant"
  msgstr ""
  
  #. Otherwise, a more generic error message.
! #: c/c-parser.cc:3888 c/c-parser.cc:5120 c/c-parser.cc:5978 c/c-parser.cc:5995
! #: c/c-parser.cc:6580 c/c-parser.cc:7489 c/c-parser.cc:9503 c/c-parser.cc:9586
! #: c/c-parser.cc:10566 c/c-parser.cc:10881 c/c-parser.cc:10890
! #: c/c-parser.cc:11503 c/c-parser.cc:11791 c/c-parser.cc:11822
! #: c/c-parser.cc:13189 c/c-parser.cc:13763 c/c-parser.cc:13801
! #: c/c-parser.cc:14115 c/c-parser.cc:14166 c/c-parser.cc:14326
! #: c/c-parser.cc:14356 c/c-parser.cc:14364 c/c-parser.cc:14393
! #: c/c-parser.cc:14406 c/c-parser.cc:14712 c/c-parser.cc:14836
! #: c/c-parser.cc:15421 c/c-parser.cc:15474 c/c-parser.cc:15490
! #: c/c-parser.cc:15536 c/c-parser.cc:16557 c/c-parser.cc:16602
! #: c/c-parser.cc:19478 c/c-parser.cc:19615 c/c-parser.cc:20481
! #: c/c-parser.cc:23540 c/c-parser.cc:26738 c/c-parser.cc:26924
! #: c/gimple-parser.cc:1981 c/gimple-parser.cc:2028 cp/parser.cc:9871
! #: cp/parser.cc:35331 cp/parser.cc:38563 cp/parser.cc:41808 cp/parser.cc:42000
! #: cp/parser.cc:49790 cp/parser.cc:53098
  #, gcc-internal-format
  msgid "expected identifier"
  msgstr ""
  
! #: c/c-parser.cc:3961
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support specifying %<enum%> underlying types before C23"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-parser.cc:3970
  #, gcc-internal-format
  msgid "%<enum%> declared both with and without fixed underlying type"
  msgstr ""
  
! #: c/c-parser.cc:3993
  #, fuzzy, gcc-internal-format
  #| msgid "no input file specified"
  msgid "no %<enum%> underlying type specified"
  msgstr "Ð½Ðµ Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹ ÑžÐ²Ð°Ñ…Ð¾Ð´Ð·Ñ�Ñ‡Ñ‹Ñ� Ñ„Ð°Ð¹Ð»Ñ‹"
  
! #: c/c-parser.cc:3997
  #, fuzzy, gcc-internal-format
  msgid "invalid %<enum%> underlying type"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: c/c-parser.cc:4027
  #, fuzzy, gcc-internal-format
  #| msgid "section of `%s' conflicts with previous declaration"
  msgid "%<enum%> underlying type incompatible with previous declaration"
  msgstr "Ñ�ÐµÐºÑ†Ñ‹Ñ� \"%s\" ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÐµ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð¹ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ�Ð¹"
  
! #: c/c-parser.cc:4103 cp/parser.cc:22433
  #, gcc-internal-format
  msgid "comma at end of enumerator list"
  msgstr ""
  
! #: c/c-parser.cc:4109 c/c-parser.cc:20758 cp/parser.cc:43046
  #: go/gofrontend/embed.cc:424
  #, gcc-internal-format
  msgid "expected %<,%> or %<}%>"
  msgstr ""
  
! #: c/c-parser.cc:4152
  #, gcc-internal-format
  msgid "ISO C forbids forward references to %<enum%> types"
  msgstr ""
  
! #: c/c-parser.cc:4277
  #, gcc-internal-format
  msgid "expected class name"
  msgstr ""
  
! #: c/c-parser.cc:4299
  #, gcc-internal-format
  msgid "extra semicolon in struct or union specified"
  msgstr ""
  
! #: c/c-parser.cc:4328
  #, gcc-internal-format
  msgid "no semicolon at end of struct or union"
  msgstr ""
  
! #: c/c-parser.cc:4445 c/c-parser.cc:6320
  #, gcc-internal-format
  msgid "expected specifier-qualifier-list"
  msgstr ""
  
! #: c/c-parser.cc:4456
  #, gcc-internal-format
  msgid "ISO C forbids member declarations with no members"
  msgstr ""
  
! #: c/c-parser.cc:4550
  #, gcc-internal-format
  msgid "expected %<,%>, %<;%> or %<}%>"
  msgstr ""
  
! #: c/c-parser.cc:4557
  #, gcc-internal-format
  msgid "expected %<:%>, %<,%>, %<;%>, %<}%> or %<__attribute__%>"
  msgstr ""
  
! #: c/c-parser.cc:4629
  #, gcc-internal-format
  msgid "%<typeof%> applied to a bit-field"
  msgstr ""
  
! #: c/c-parser.cc:4951
  #, gcc-internal-format
  msgid "expected identifier or %<(%>"
  msgstr ""
  
! #: c/c-parser.cc:5013
  #, gcc-internal-format
  msgid "%<static%> may not be used with an unspecified variable length array size"
  msgstr ""
  
! #: c/c-parser.cc:5021
  #, gcc-internal-format
  msgid "%<static%> may not be used without an array size"
  msgstr ""
  
! #: c/c-parser.cc:5181
  #, gcc-internal-format
  msgid "ISO C requires a named argument before %<...%> before C23"
  msgstr ""
  
! #: c/c-parser.cc:5306
  #, gcc-internal-format
  msgid "expected declaration specifiers or %<...%>"
  msgstr ""
  
! #: c/c-parser.cc:5536
  #, gcc-internal-format
  msgid "parentheses must be omitted if attribute argument list is empty"
  msgstr ""
  
! #: c/c-parser.cc:5824 cp/parser.cc:30738
  #, gcc-internal-format
  msgid "expected OpenMP directive name"
  msgstr ""
  
! #: c/c-parser.cc:5871 cp/parser.cc:30794
  #, gcc-internal-format
  msgid "expected %<directive%> or %<sequence%>"
  msgstr ""
  
! #: c/c-parser.cc:6016 cp/parser.cc:30962
  #, gcc-internal-format
  msgid "%<omp::%E%> attribute requires argument"
  msgstr ""
  
! #: c/c-parser.cc:6032 cp/parser.cc:30978
  #, gcc-internal-format
  msgid "%qE attribute does not take any arguments"
  msgstr ""
  
! #: c/c-parser.cc:6153
  #, fuzzy, gcc-internal-format
  msgid "ISO C does not support %<[[]]%> attributes before C23"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ \"long long\""
  
! #: c/c-parser.cc:6397 c/c-parser.cc:6463 c/c-typeck.cc:9642
  #, gcc-internal-format
  msgid "variable-sized object may not be initialized except with an empty initializer"
  msgstr ""
  
! #: c/c-parser.cc:6455
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids an empty source file"
  msgid "ISO C forbids empty initializer braces before C23"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð¿ÑƒÑ�Ñ‚Ñ‹ Ñ–Ð·Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹ Ñ„Ð°Ð¹Ð»"
  
! #: c/c-parser.cc:6544
  #, gcc-internal-format
  msgid "obsolete use of designated initializer with %<:%>"
  msgstr ""
  
! #: c/c-parser.cc:6700
  #, gcc-internal-format
  msgid "ISO C forbids specifying range of elements to initialize"
  msgstr ""
  
! #: c/c-parser.cc:6712
  #, gcc-internal-format
  msgid "ISO C90 forbids specifying subobject to initialize"
  msgstr ""
  
! #: c/c-parser.cc:6720
  #, gcc-internal-format
  msgid "obsolete use of designated initializer without %<=%>"
  msgstr ""
  
! #: c/c-parser.cc:7007 cp/parser.cc:13742
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested in %<#pragma acc loop%>"
  msgstr ""
  
! #: c/c-parser.cc:7014 cp/parser.cc:13749
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested with %<ordered%> clause"
  msgstr ""
  
! #: c/c-parser.cc:7021 cp/parser.cc:13756
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested with %<reduction%> %<inscan%> clause"
  msgstr ""
  
! #: c/c-parser.cc:7028
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested in %<pragma omp tile%>"
  msgstr ""
  
! #: c/c-parser.cc:7084 c/c-parser.cc:7239 cp/parser.cc:12633 cp/parser.cc:12783
! #: cp/parser.cc:50777
  #, gcc-internal-format
  msgid "mixing OpenMP directives with attribute and pragma syntax on the same statement"
  msgstr ""
  
! #: c/c-parser.cc:7092 cp/parser.cc:12641
  #, gcc-internal-format
  msgid "OpenMP %<omp::decl%> attribute on a statement"
  msgstr ""
  
! #: c/c-parser.cc:7116 c/c-parser.cc:7337 c/c-parser.cc:27447 cp/parser.cc:12665
! #: cp/parser.cc:50757 cp/parser.cc:50896
  #, gcc-internal-format
  msgid "unknown OpenMP directive name in %qs attribute argument"
  msgstr ""
  
! #: c/c-parser.cc:7208 cp/parser.cc:12752
  #, gcc-internal-format
  msgid "OpenMP construct among %<omp::directive%> attributes requires all %<omp::directive%> attributes on the same statement to be in the same %<omp::sequence%>"
  msgstr ""
  
! #: c/c-parser.cc:7216 cp/parser.cc:12760
  #, gcc-internal-format
  msgid "multiple OpenMP standalone directives among %<omp::directive%> attributes must be all within the same %<omp::sequence%>"
  msgstr ""
  
! #: c/c-parser.cc:7228 cp/parser.cc:12772
  #, gcc-internal-format
  msgid "standalone OpenMP directives in %<omp::directive%> attribute can only appear on an empty statement"
  msgstr ""
  
! #: c/c-parser.cc:7349 cp/parser.cc:12902
  #, gcc-internal-format
  msgid "mixing OpenMP directives with attribute and pragma syntax on the same declaration"
  msgstr ""
  
! #: c/c-parser.cc:7407 cp/parser.cc:15356
  #, fuzzy, gcc-internal-format
  msgid "%qs attribute does not take any arguments"
  msgstr "Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ñ‹ Ñ�ÐµÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð° Ð´Ð»Ñ� Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ñ‹"
  
! #: c/c-parser.cc:7504
  #, gcc-internal-format
  msgid "ISO C forbids label declarations"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: c/c-parser.cc:7510 c/c-parser.cc:7702 c/c-parser.cc:7728
  #: c/gimple-parser.cc:467
  #, fuzzy, gcc-internal-format
  msgid "expected declaration or statement"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: c/c-parser.cc:7629
  #, gcc-internal-format
  msgid "a label can only be part of a statement and a declaration is not a statement"
  msgstr ""
  
! #: c/c-parser.cc:7649 c/c-parser.cc:7692
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids label declarations"
  msgid "ISO C90 forbids mixed declarations and code"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: c/c-parser.cc:7736
  #, gcc-internal-format
  msgid "expected %<}%> before %<else%>"
  msgstr ""
  
! #: c/c-parser.cc:7741 cp/parser.cc:13809
  #, gcc-internal-format
  msgid "%<else%> without a previous %<if%>"
  msgstr ""
  
! #: c/c-parser.cc:7776
  #, gcc-internal-format
  msgid "label at end of compound statement"
  msgstr ""
--- 48486,48860 ----
  #. This can appear in many cases looking nothing like a
  #. function definition, so we don't give a more specific
  #. error suggesting there was one.
! #: c/c-parser.cc:3100 c/c-parser.cc:3142
  #, gcc-internal-format
  msgid "expected %<=%>, %<,%>, %<;%>, %<asm%> or %<__attribute__%>"
  msgstr ""
  
! #: c/c-parser.cc:3109
  #, gcc-internal-format
  msgid "ISO C forbids nested functions"
  msgstr ""
  
! #: c/c-parser.cc:3391 c/c-parser.cc:9681 c/c-parser.cc:16029
! #: c/c-parser.cc:20755 cp/parser.cc:43042
  #, gcc-internal-format
  msgid "expected string literal"
  msgstr ""
  
! #: c/c-parser.cc:3400
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C11 does not support omitting the string in %qE"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-parser.cc:3406
  #, gcc-internal-format
  msgid "expression in static assertion is not an integer"
  msgstr ""
  
! #: c/c-parser.cc:3415
  #, fuzzy, gcc-internal-format
  msgid "expression in static assertion is not an integer constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: c/c-parser.cc:3420
  #, gcc-internal-format
  msgid "expression in static assertion is not constant"
  msgstr ""
  
! #: c/c-parser.cc:3427
  #, gcc-internal-format
  msgid "static assertion failed: %E"
  msgstr ""
  
! #: c/c-parser.cc:3429 cp/semantics.cc:12469
  #, gcc-internal-format
  msgid "static assertion failed"
  msgstr ""
  
! #: c/c-parser.cc:3809
  #, gcc-internal-format
  msgid "%<_Atomic%> in Objective-C"
  msgstr ""
  
! #: c/c-parser.cc:3812
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 does not support complex types"
  msgid "ISO C99 does not support the %<_Atomic%> qualifier"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-parser.cc:3815
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 does not support complex types"
  msgid "ISO C90 does not support the %<_Atomic%> qualifier"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-parser.cc:3843
  #, gcc-internal-format
  msgid "%<_Atomic%> applied to a qualified type"
  msgstr ""
  
! #: c/c-parser.cc:3873
  #, gcc-internal-format
  msgid "%<__GIMPLE%> only valid with %<-fgimple%>"
  msgstr ""
  
! #: c/c-parser.cc:3910
  #, fuzzy, gcc-internal-format
  msgid "empty enum is invalid"
  msgstr "Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\" Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ð½Ñ‹"
  
! #: c/c-parser.cc:3921
  #, gcc-internal-format
  msgid "cannot use keyword %qs as enumeration constant"
  msgstr ""
  
  #. Otherwise, a more generic error message.
! #: c/c-parser.cc:3933 c/c-parser.cc:5165 c/c-parser.cc:6023 c/c-parser.cc:6040
! #: c/c-parser.cc:6625 c/c-parser.cc:7534 c/c-parser.cc:9548 c/c-parser.cc:9631
! #: c/c-parser.cc:10611 c/c-parser.cc:10926 c/c-parser.cc:10935
! #: c/c-parser.cc:11548 c/c-parser.cc:11836 c/c-parser.cc:11867
! #: c/c-parser.cc:13234 c/c-parser.cc:13808 c/c-parser.cc:13846
! #: c/c-parser.cc:14160 c/c-parser.cc:14211 c/c-parser.cc:14371
! #: c/c-parser.cc:14401 c/c-parser.cc:14409 c/c-parser.cc:14438
! #: c/c-parser.cc:14451 c/c-parser.cc:14757 c/c-parser.cc:14881
! #: c/c-parser.cc:15466 c/c-parser.cc:15519 c/c-parser.cc:15535
! #: c/c-parser.cc:15581 c/c-parser.cc:16602 c/c-parser.cc:16647
! #: c/c-parser.cc:19523 c/c-parser.cc:19660 c/c-parser.cc:20526
! #: c/c-parser.cc:23585 c/c-parser.cc:26783 c/c-parser.cc:26970
! #: c/gimple-parser.cc:1981 c/gimple-parser.cc:2028 cp/parser.cc:9873
! #: cp/parser.cc:35390 cp/parser.cc:38622 cp/parser.cc:41867 cp/parser.cc:42059
! #: cp/parser.cc:49849 cp/parser.cc:53151
  #, gcc-internal-format
  msgid "expected identifier"
  msgstr ""
  
! #: c/c-parser.cc:4006
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support specifying %<enum%> underlying types before C23"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-parser.cc:4015
  #, gcc-internal-format
  msgid "%<enum%> declared both with and without fixed underlying type"
  msgstr ""
  
! #: c/c-parser.cc:4038
  #, fuzzy, gcc-internal-format
  #| msgid "no input file specified"
  msgid "no %<enum%> underlying type specified"
  msgstr "Ð½Ðµ Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹ ÑžÐ²Ð°Ñ…Ð¾Ð´Ð·Ñ�Ñ‡Ñ‹Ñ� Ñ„Ð°Ð¹Ð»Ñ‹"
  
! #: c/c-parser.cc:4042
  #, fuzzy, gcc-internal-format
  msgid "invalid %<enum%> underlying type"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: c/c-parser.cc:4072
  #, fuzzy, gcc-internal-format
  #| msgid "section of `%s' conflicts with previous declaration"
  msgid "%<enum%> underlying type incompatible with previous declaration"
  msgstr "Ñ�ÐµÐºÑ†Ñ‹Ñ� \"%s\" ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÐµ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð¹ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ�Ð¹"
  
! #: c/c-parser.cc:4148 cp/parser.cc:22437
  #, gcc-internal-format
  msgid "comma at end of enumerator list"
  msgstr ""
  
! #: c/c-parser.cc:4154 c/c-parser.cc:20803 cp/parser.cc:43105
  #: go/gofrontend/embed.cc:424
  #, gcc-internal-format
  msgid "expected %<,%> or %<}%>"
  msgstr ""
  
! #: c/c-parser.cc:4197
  #, gcc-internal-format
  msgid "ISO C forbids forward references to %<enum%> types"
  msgstr ""
  
! #: c/c-parser.cc:4322
  #, gcc-internal-format
  msgid "expected class name"
  msgstr ""
  
! #: c/c-parser.cc:4344
  #, gcc-internal-format
  msgid "extra semicolon in struct or union specified"
  msgstr ""
  
! #: c/c-parser.cc:4373
  #, gcc-internal-format
  msgid "no semicolon at end of struct or union"
  msgstr ""
  
! #: c/c-parser.cc:4490 c/c-parser.cc:6365
  #, gcc-internal-format
  msgid "expected specifier-qualifier-list"
  msgstr ""
  
! #: c/c-parser.cc:4501
  #, gcc-internal-format
  msgid "ISO C forbids member declarations with no members"
  msgstr ""
  
! #: c/c-parser.cc:4595
  #, gcc-internal-format
  msgid "expected %<,%>, %<;%> or %<}%>"
  msgstr ""
  
! #: c/c-parser.cc:4602
  #, gcc-internal-format
  msgid "expected %<:%>, %<,%>, %<;%>, %<}%> or %<__attribute__%>"
  msgstr ""
  
! #: c/c-parser.cc:4674
  #, gcc-internal-format
  msgid "%<typeof%> applied to a bit-field"
  msgstr ""
  
! #: c/c-parser.cc:4996
  #, gcc-internal-format
  msgid "expected identifier or %<(%>"
  msgstr ""
  
! #: c/c-parser.cc:5058
  #, gcc-internal-format
  msgid "%<static%> may not be used with an unspecified variable length array size"
  msgstr ""
  
! #: c/c-parser.cc:5066
  #, gcc-internal-format
  msgid "%<static%> may not be used without an array size"
  msgstr ""
  
! #: c/c-parser.cc:5226
  #, gcc-internal-format
  msgid "ISO C requires a named argument before %<...%> before C23"
  msgstr ""
  
! #: c/c-parser.cc:5351
  #, gcc-internal-format
  msgid "expected declaration specifiers or %<...%>"
  msgstr ""
  
! #: c/c-parser.cc:5581
  #, gcc-internal-format
  msgid "parentheses must be omitted if attribute argument list is empty"
  msgstr ""
  
! #: c/c-parser.cc:5869 cp/parser.cc:30792
  #, gcc-internal-format
  msgid "expected OpenMP directive name"
  msgstr ""
  
! #: c/c-parser.cc:5916 cp/parser.cc:30848
  #, gcc-internal-format
  msgid "expected %<directive%> or %<sequence%>"
  msgstr ""
  
! #: c/c-parser.cc:6061 cp/parser.cc:31016
  #, gcc-internal-format
  msgid "%<omp::%E%> attribute requires argument"
  msgstr ""
  
! #: c/c-parser.cc:6077 cp/parser.cc:31032
  #, gcc-internal-format
  msgid "%qE attribute does not take any arguments"
  msgstr ""
  
! #: c/c-parser.cc:6198
  #, fuzzy, gcc-internal-format
  msgid "ISO C does not support %<[[]]%> attributes before C23"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ \"long long\""
  
! #: c/c-parser.cc:6442 c/c-parser.cc:6508 c/c-typeck.cc:9659
  #, gcc-internal-format
  msgid "variable-sized object may not be initialized except with an empty initializer"
  msgstr ""
  
! #: c/c-parser.cc:6500
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids an empty source file"
  msgid "ISO C forbids empty initializer braces before C23"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð¿ÑƒÑ�Ñ‚Ñ‹ Ñ–Ð·Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹ Ñ„Ð°Ð¹Ð»"
  
! #: c/c-parser.cc:6589
  #, gcc-internal-format
  msgid "obsolete use of designated initializer with %<:%>"
  msgstr ""
  
! #: c/c-parser.cc:6745
  #, gcc-internal-format
  msgid "ISO C forbids specifying range of elements to initialize"
  msgstr ""
  
! #: c/c-parser.cc:6757
  #, gcc-internal-format
  msgid "ISO C90 forbids specifying subobject to initialize"
  msgstr ""
  
! #: c/c-parser.cc:6765
  #, gcc-internal-format
  msgid "obsolete use of designated initializer without %<=%>"
  msgstr ""
  
! #: c/c-parser.cc:7052 cp/parser.cc:13744
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested in %<#pragma acc loop%>"
  msgstr ""
  
! #: c/c-parser.cc:7059 cp/parser.cc:13751
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested with %<ordered%> clause"
  msgstr ""
  
! #: c/c-parser.cc:7066 cp/parser.cc:13758
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested with %<reduction%> %<inscan%> clause"
  msgstr ""
  
! #: c/c-parser.cc:7073
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested in %<pragma omp tile%>"
  msgstr ""
  
! #: c/c-parser.cc:7129 c/c-parser.cc:7284 cp/parser.cc:12635 cp/parser.cc:12785
! #: cp/parser.cc:50836
  #, gcc-internal-format
  msgid "mixing OpenMP directives with attribute and pragma syntax on the same statement"
  msgstr ""
  
! #: c/c-parser.cc:7137 cp/parser.cc:12643
  #, gcc-internal-format
  msgid "OpenMP %<omp::decl%> attribute on a statement"
  msgstr ""
  
! #: c/c-parser.cc:7161 c/c-parser.cc:7382 c/c-parser.cc:27493 cp/parser.cc:12667
! #: cp/parser.cc:50816 cp/parser.cc:50955
  #, gcc-internal-format
  msgid "unknown OpenMP directive name in %qs attribute argument"
  msgstr ""
  
! #: c/c-parser.cc:7253 cp/parser.cc:12754
  #, gcc-internal-format
  msgid "OpenMP construct among %<omp::directive%> attributes requires all %<omp::directive%> attributes on the same statement to be in the same %<omp::sequence%>"
  msgstr ""
  
! #: c/c-parser.cc:7261 cp/parser.cc:12762
  #, gcc-internal-format
  msgid "multiple OpenMP standalone directives among %<omp::directive%> attributes must be all within the same %<omp::sequence%>"
  msgstr ""
  
! #: c/c-parser.cc:7273 cp/parser.cc:12774
  #, gcc-internal-format
  msgid "standalone OpenMP directives in %<omp::directive%> attribute can only appear on an empty statement"
  msgstr ""
  
! #: c/c-parser.cc:7394 cp/parser.cc:12904
  #, gcc-internal-format
  msgid "mixing OpenMP directives with attribute and pragma syntax on the same declaration"
  msgstr ""
  
! #: c/c-parser.cc:7452 cp/parser.cc:15358
  #, fuzzy, gcc-internal-format
  msgid "%qs attribute does not take any arguments"
  msgstr "Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ñ‹ Ñ�ÐµÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð° Ð´Ð»Ñ� Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ñ‹"
  
! #: c/c-parser.cc:7549
  #, gcc-internal-format
  msgid "ISO C forbids label declarations"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: c/c-parser.cc:7555 c/c-parser.cc:7747 c/c-parser.cc:7773
  #: c/gimple-parser.cc:467
  #, fuzzy, gcc-internal-format
  msgid "expected declaration or statement"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: c/c-parser.cc:7674
  #, gcc-internal-format
  msgid "a label can only be part of a statement and a declaration is not a statement"
  msgstr ""
  
! #: c/c-parser.cc:7694 c/c-parser.cc:7737
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids label declarations"
  msgid "ISO C90 forbids mixed declarations and code"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: c/c-parser.cc:7781
  #, gcc-internal-format
  msgid "expected %<}%> before %<else%>"
  msgstr ""
  
! #: c/c-parser.cc:7786 cp/parser.cc:13811
  #, gcc-internal-format
  msgid "%<else%> without a previous %<if%>"
  msgstr ""
  
! #: c/c-parser.cc:7821
  #, gcc-internal-format
  msgid "label at end of compound statement"
  msgstr ""
*************** msgstr ""
*** 48856,50383 ****
  #. c_parser_skip_until_found stops at a closing nesting
  #. delimiter without consuming it, but here we need to consume
  #. it to proceed further.
! #: c/c-parser.cc:7833 c/c-parser.cc:7837 c/c-parser.cc:8345
! #: c/gimple-parser.cc:716 c/gimple-parser.cc:2520 cp/parser.cc:13265
  #, gcc-internal-format
  msgid "expected statement"
  msgstr ""
  
! #: c/c-parser.cc:7918
  #, gcc-internal-format
  msgid "expected %<:%> or %<...%>"
  msgstr ""
  
! #: c/c-parser.cc:7948
  #, gcc-internal-format
  msgid "GNU-style attribute between label and declaration appertains to the label"
  msgstr ""
  
! #: c/c-parser.cc:8201
  #, gcc-internal-format
  msgid "expected identifier or %<*%>"
  msgstr ""
  
! #: c/c-parser.cc:8327
  #, gcc-internal-format
  msgid "only attribute %<fallthrough%> or %<assume%> can be applied to a null statement"
  msgstr ""
  
! #: c/c-parser.cc:8437
  #, fuzzy, gcc-internal-format
  msgid "ISO C does not support if declarations before C2Y"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ \"long long\""
  
! #: c/c-parser.cc:8459
  #, gcc-internal-format
  msgid "declaration in the controlling expression must have an initializer"
  msgstr ""
  
! #: c/c-parser.cc:8476 cp/parser.cc:5462 cp/parser.cc:16420
  #, fuzzy, gcc-internal-format
  #| msgid "empty declaration"
  msgid "expected declaration"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: c/c-parser.cc:8557 cp/parser.cc:15492
  #, fuzzy, gcc-internal-format
  #| msgid "empty body in an else-statement"
  msgid "suggest braces around empty body in an %<if%> statement"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ñ†ÐµÐ»Ð° Ñž else-Ð²Ñ‹Ñ€Ð°Ð¶Ñ�Ð½Ð½Ñ–"
  
! #: c/c-parser.cc:8600 cp/parser.cc:15495
  #, fuzzy, gcc-internal-format
  #| msgid "empty body in an else-statement"
  msgid "suggest braces around empty body in an %<else%> statement"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ñ†ÐµÐ»Ð° Ñž else-Ð²Ñ‹Ñ€Ð°Ð¶Ñ�Ð½Ð½Ñ–"
  
! #: c/c-parser.cc:8694 cp/parser.cc:14223
  #, gcc-internal-format
  msgid "suggest explicit braces to avoid ambiguous %<else%>"
  msgstr ""
  
! #: c/c-parser.cc:8812 c/c-parser.cc:8891 c/c-parser.cc:9026 cp/parser.cc:15085
  #, gcc-internal-format
  msgid "loop not permitted in intervening code in OpenMP loop body"
  msgstr ""
  
! #: c/c-parser.cc:8899
  #, gcc-internal-format
  msgid "suggest braces around empty body in %<do%> statement"
  msgstr ""
  
! #: c/c-parser.cc:9060 c/c-parser.cc:9092
  #, gcc-internal-format
  msgid "multiple iterating variables in fast enumeration"
  msgstr ""
  
! #: c/c-parser.cc:9115
  #, fuzzy, gcc-internal-format
  msgid "invalid iterating variable in fast enumeration"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: c/c-parser.cc:9139 cp/parser.cc:14531
  #, gcc-internal-format
  msgid "missing loop condition in loop with %<GCC ivdep%> pragma"
  msgstr ""
  
! #: c/c-parser.cc:9145 cp/parser.cc:14537
  #, gcc-internal-format
  msgid "missing loop condition in loop with %<GCC unroll%> pragma"
  msgstr ""
  
! #: c/c-parser.cc:9186
  #, gcc-internal-format
  msgid "missing collection in fast enumeration"
  msgstr ""
  
! #: c/c-parser.cc:9335 c/c-parser.cc:9346 c/c-parser.cc:9357
  #, fuzzy, gcc-internal-format
  msgid "duplicate %<asm%> qualifier %qE"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½Ð½Ðµ \"volatile\""
  
! #: c/c-parser.cc:9336 c/c-parser.cc:9347 c/c-parser.cc:9358 cp/parser.cc:23377
! #: cp/parser.cc:23395 cp/parser.cc:23410
  #, gcc-internal-format
  msgid "first seen here"
  msgstr ""
  
! #: c/c-parser.cc:9367
  #, gcc-internal-format
  msgid "%qE is not a valid %<asm%> qualifier"
  msgstr ""
  
! #: c/c-parser.cc:9716 cp/parser.cc:4893
  #, gcc-internal-format
  msgid "a wide string is invalid in this context"
  msgstr ""
  
! #: c/c-parser.cc:9924
  #, fuzzy, gcc-internal-format
  msgid "ISO C forbids omitting the middle term of a %<?:%> expression"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð¿ÑƒÑ�Ñ‚Ñ‹ Ñ–Ð·Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹ Ñ„Ð°Ð¹Ð»"
  
  #. Location of the binary operator.
  #. Quiet warning.
! #: c/c-parser.cc:10148 cp/typeck.cc:5582
  #, gcc-internal-format
  msgid "division %<sizeof (%T) / sizeof (%T)%> does not compute the number of array elements"
  msgstr ""
  
! #: c/c-parser.cc:10154 cp/typeck.cc:5587
  #, gcc-internal-format
  msgid "first %<sizeof%> operand was declared here"
  msgstr ""
  
! #: c/c-parser.cc:10425
  #, gcc-internal-format
  msgid "storage class specifier in cast"
  msgstr ""
  
! #: c/c-parser.cc:10428
  #, gcc-internal-format
  msgid "alignment specified for type name in cast"
  msgstr ""
  
! #: c/c-parser.cc:10529
  #, gcc-internal-format
  msgid "traditional C rejects the unary plus operator"
  msgstr ""
  
! #: c/c-parser.cc:10659
  #, gcc-internal-format
  msgid "storage class specifier in %<sizeof%>"
  msgstr ""
  
! #: c/c-parser.cc:10662
  #, gcc-internal-format
  msgid "alignment specified for type name in %<sizeof%>"
  msgstr ""
  
! #: c/c-parser.cc:10678
  #, gcc-internal-format
  msgid "%<sizeof%> applied to a bit-field"
  msgstr ""
  
! #: c/c-parser.cc:10751
  #, gcc-internal-format
  msgid "storage class specifier in %qE"
  msgstr ""
  
! #: c/c-parser.cc:10754
  #, fuzzy, gcc-internal-format
  msgid "alignment specified for type name in %qE"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: c/c-parser.cc:10778
  #, gcc-internal-format
  msgid "ISO C does not allow %<%E (expression)%>"
  msgstr ""
  
! #: c/c-parser.cc:10931
  #, fuzzy, gcc-internal-format
  msgid "cannot take address of %qs"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ð°Ñ‚Ñ€Ñ‹Ð¼Ð°Ñ†ÑŒ Ð°Ð´Ñ€Ð°Ñ� Ð±Ñ–Ñ‚Ð°Ð²Ð°Ð³Ð° Ð¿Ð¾Ð»Ñ� \"%s\""
  
! #: c/c-parser.cc:11038
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 does not support complex types"
  msgid "ISO C99 does not support %<_Generic%>"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-parser.cc:11041
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 does not support complex types"
  msgid "ISO C90 does not support %<_Generic%>"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-parser.cc:11052
  #, gcc-internal-format
  msgid "ISO C does not support use of type name as %<_Generic%> controlling operand before C2Y"
  msgstr ""
  
! #: c/c-parser.cc:11123
  #, gcc-internal-format
  msgid "ISO C does not support %<_Generic%> association with function type before C2Y"
  msgstr ""
  
! #: c/c-parser.cc:11127
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support `++' and `--' on complex types"
  msgid "ISO C does not support %<_Generic%> association with incomplete type before C2Y"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ \"++\" Ñ– \"--\" Ð´Ð»Ñ� Ñ‚Ñ‹Ð¿Ñƒ complex"
  
! #: c/c-parser.cc:11132
  #, gcc-internal-format
  msgid "%<_Generic%> association has variable length type"
  msgstr ""
  
! #: c/c-parser.cc:11166
  #, gcc-internal-format
  msgid "duplicate %<default%> case in %<_Generic%>"
  msgstr ""
  
! #: c/c-parser.cc:11167
  #, gcc-internal-format
  msgid "original %<default%> is here"
  msgstr ""
  
! #: c/c-parser.cc:11175
  #, gcc-internal-format
  msgid "%<_Generic%> specifies two compatible types"
  msgstr ""
  
! #: c/c-parser.cc:11176
  #, gcc-internal-format
  msgid "compatible type is here"
  msgstr ""
  
! #: c/c-parser.cc:11199
  #, gcc-internal-format
  msgid "%<_Generic%> selector matches multiple associations"
  msgstr ""
  
! #: c/c-parser.cc:11201
  #, gcc-internal-format
  msgid "other match is here"
  msgstr ""
  
! #: c/c-parser.cc:11226
  #, gcc-internal-format
  msgid "%<_Generic%> selector of type %qT is not compatible with any association"
  msgstr ""
  
! #: c/c-parser.cc:11247
  #, fuzzy, gcc-internal-format
  msgid "argument %u of %<__builtin_tgmath%> is not a function pointer"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð²Ñ‹Ð¹ÑˆÐ°Ñž Ð·Ð° Ð¼ÐµÐ¶Ñ‹"
  
! #: c/c-parser.cc:11255
  #, fuzzy, gcc-internal-format
  msgid "argument %u of %<__builtin_tgmath%> is unprototyped"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð²Ñ‹Ð¹ÑˆÐ°Ñž Ð·Ð° Ð¼ÐµÐ¶Ñ‹"
  
! #: c/c-parser.cc:11261
  #, gcc-internal-format
  msgid "argument %u of %<__builtin_tgmath%> has variable arguments"
  msgstr ""
  
! #: c/c-parser.cc:11277
  #, fuzzy, gcc-internal-format
  msgid "argument %u of %<__builtin_tgmath%> has no arguments"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð²Ñ‹Ð¹ÑˆÐ°Ñž Ð·Ð° Ð¼ÐµÐ¶Ñ‹"
  
! #: c/c-parser.cc:11300 c/c-parser.cc:11304
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support %qs predefined identifier"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-parser.cc:11308
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C90 does not support %<__func__%> predefined identifier"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-parser.cc:11517 c/c-parser.cc:13256 c/c-parser.cc:13278
! #: c/c-parser.cc:22957 c/gimple-parser.cc:1897 c/gimple-parser.cc:2537
! #: cp/parser.cc:44516
  #, gcc-internal-format
  msgid "expected expression"
  msgstr ""
  
! #: c/c-parser.cc:11539
  #, gcc-internal-format
  msgid "braced-group within expression allowed only inside a function"
  msgstr ""
  
! #: c/c-parser.cc:11554
  #, gcc-internal-format
  msgid "ISO C forbids braced-groups within expressions"
  msgstr ""
  
! #: c/c-parser.cc:11665
  #, gcc-internal-format
  msgid "optional second parameter of %<va_start%> not last named argument"
  msgstr ""
  
! #: c/c-parser.cc:11704
  #, gcc-internal-format
  msgid "%<va_start%> macro used with additional arguments other than identifier of the last named argument"
  msgstr ""
  
! #: c/c-parser.cc:11849
  #, fuzzy, gcc-internal-format
  msgid "wrong number of arguments to %<__builtin_choose_expr%>"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: c/c-parser.cc:11865
  #, fuzzy, gcc-internal-format
  msgid "first argument to %<__builtin_choose_expr%> not a constant"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: c/c-parser.cc:11935 c/c-parser.cc:11952 c/c-parser.cc:11959
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function"
  msgid "too few arguments to %<__builtin_tgmath%>"
  msgstr "Ð½Ðµ Ñ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: c/c-parser.cc:11980
  #, fuzzy, gcc-internal-format
  msgid "argument %u of %<__builtin_tgmath%> has wrong number of arguments"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð²Ñ‹Ð¹ÑˆÐ°Ñž Ð·Ð° Ð¼ÐµÐ¶Ñ‹"
  
! #: c/c-parser.cc:12024 c/c-parser.cc:12034
  #, gcc-internal-format
  msgid "invalid type-generic return type for argument %u of %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12056 c/c-parser.cc:12066
  #, gcc-internal-format
  msgid "invalid type-generic type for argument %u of argument %u of %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12099
  #, gcc-internal-format
  msgid "function arguments of %<__builtin_tgmath%> all have the same type"
  msgstr ""
  
! #: c/c-parser.cc:12118
  #, gcc-internal-format
  msgid "function arguments of %<__builtin_tgmath%> lack type-generic parameter"
  msgstr ""
  
! #: c/c-parser.cc:12166
  #, gcc-internal-format
  msgid "duplicate type-generic parameter type for function argument %u of %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12189
  #, gcc-internal-format
  msgid "bad return type for function argument %u of %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12206
  #, gcc-internal-format
  msgid "bad type for argument %u of function argument %u of %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12246
  #, gcc-internal-format, gfc-internal-format
  msgid "invalid type of argument %u of type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12257
  #, gcc-internal-format, gfc-internal-format
  msgid "decimal floating-point argument %u to complex-only type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12265
  #, gcc-internal-format, gfc-internal-format
  msgid "decimal floating-point argument %u to binary-only type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12273 c/c-parser.cc:12303
  #, gcc-internal-format
  msgid "both complex and decimal floating-point arguments to type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12281 c/c-parser.cc:12323
  #, gcc-internal-format
  msgid "both binary and decimal floating-point arguments to type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12295
  #, gcc-internal-format, gfc-internal-format
  msgid "complex argument %u to decimal-only type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12315
  #, gcc-internal-format, gfc-internal-format
  msgid "binary argument %u to decimal-only type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12422
  #, gcc-internal-format
  msgid "no matching function for type-generic call"
  msgstr ""
  
! #: c/c-parser.cc:12463
  #, gcc-internal-format
  msgid "wrong number of arguments to %<__builtin_call_with_static_chain%>"
  msgstr ""
  
! #: c/c-parser.cc:12476
  #, fuzzy, gcc-internal-format
  msgid "first argument to %<__builtin_call_with_static_chain%> must be a call expression"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: c/c-parser.cc:12480
  #, fuzzy, gcc-internal-format
  msgid "second argument to %<__builtin_call_with_static_chain%> must be a pointer type"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: c/c-parser.cc:12506
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments to %<__builtin_complex%>"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž, Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ… Ð´Ð»Ñ� Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
  
! #: c/c-parser.cc:12528
  #, gcc-internal-format
  msgid "%<__builtin_complex%> operand not of real binary floating-point type"
  msgstr ""
  
! #: c/c-parser.cc:12537
  #, gcc-internal-format
  msgid "%<__builtin_complex%> operands of different types"
  msgstr ""
  
! #: c/c-parser.cc:12568
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments to %<__builtin_counted_by_ref%>"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž, Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ… Ð´Ð»Ñ� Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
  
! #: c/c-parser.cc:12579
  #, fuzzy, gcc-internal-format
  msgid "the argument to %<__builtin_counted_by_ref%> must be an array"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: c/c-parser.cc:12630 c/c-parser.cc:12659 cp/parser.cc:8032
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments to %<__builtin_shuffle%>"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž, Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ… Ð´Ð»Ñ� Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
  
! #: c/c-parser.cc:12830
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments to %qs"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž, Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ… Ð´Ð»Ñ� Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
  
! #: c/c-parser.cc:12839 c/c-parser.cc:12919
  #, fuzzy, gcc-internal-format
  msgid "%qs operand not an integral type"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: c/c-parser.cc:12845 c/c-parser.cc:12925
  #, gcc-internal-format
  msgid "argument %u in call to function %qs has enumerated type"
  msgstr ""
  
! #: c/c-parser.cc:12852
  #, gcc-internal-format
  msgid "argument %u in call to function %qs has boolean type"
  msgstr ""
  
! #: c/c-parser.cc:12859
  #, gcc-internal-format
  msgid "argument 1 in call to function %qs has signed type"
  msgstr ""
  
! #: c/c-parser.cc:12867
  #, gcc-internal-format
  msgid "argument 1 in call to function %qs has %<char%> type"
  msgstr ""
  
! #: c/c-parser.cc:12941
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is negative"
  msgid "rotate count is negative"
  msgstr "Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹ Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° "
  
! #: c/c-parser.cc:13233 cp/parser.cc:6380
  #, gcc-internal-format
  msgid "%<omp_all_memory%> may only be used in OpenMP %<depend%> clause"
  msgstr ""
  
! #: c/c-parser.cc:13243
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 does not support complex types"
  msgid "ISO C does not support %qs before C23"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-parser.cc:13331
  #, gcc-internal-format
  msgid "%qT declared in %<constexpr%> compound literal"
  msgstr ""
  
! #: c/c-parser.cc:13336
  #, gcc-internal-format
  msgid "%qT defined in %<constexpr%> compound literal"
  msgstr ""
  
! #: c/c-parser.cc:13351
  #, gcc-internal-format
  msgid "compound literal has variable size"
  msgstr ""
  
! #: c/c-parser.cc:13356
  #, gcc-internal-format
  msgid "compound literal has function type"
  msgstr ""
  
! #: c/c-parser.cc:13387
  #, gcc-internal-format
  msgid "compound literal qualified by address-space qualifier"
  msgstr ""
  
! #: c/c-parser.cc:13392
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids `goto *expr;'"
  msgid "ISO C90 forbids compound literals"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ \"goto *expr;\""
  
! #: c/c-parser.cc:13394
  #, gcc-internal-format
  msgid "ISO C forbids storage class specifiers in compound literals before C23"
  msgstr ""
  
! #: c/c-parser.cc:13408
  #, gcc-internal-format
  msgid "%<_Alignas%> specifiers cannot reduce alignment of compound literal"
  msgstr ""
  
! #: c/c-parser.cc:13483
  #, gcc-internal-format
  msgid "using integer absolute value function %qD when argument is of floating-point type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13488
  #, gcc-internal-format
  msgid "using integer absolute value function %qD when argument is of complex type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13496
  #, gcc-internal-format
  msgid "taking the absolute value of unsigned type %qT has no effect"
  msgstr ""
  
! #: c/c-parser.cc:13507
  #, gcc-internal-format
  msgid "using floating-point absolute value function %qD when argument is of integer type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13511
  #, gcc-internal-format
  msgid "using floating-point absolute value function %qD when argument is of decimal floating-point type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13516
  #, gcc-internal-format
  msgid "using floating-point absolute value function %qD when argument is of complex type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13529
  #, gcc-internal-format
  msgid "using complex absolute value function %qD when argument is of integer type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13533
  #, gcc-internal-format
  msgid "using complex absolute value function %qD when argument is of floating-point type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13551
  #, gcc-internal-format
  msgid "using decimal floating-point absolute value function %qD when argument is of integer type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13556
  #, gcc-internal-format
  msgid "using decimal floating-point absolute value function %qD when argument is of floating-point type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13561
  #, gcc-internal-format
  msgid "using decimal floating-point absolute value function %qD when argument is of complex type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13587
  #, gcc-internal-format
  msgid "absolute value function %qD given an argument of type %qT but has parameter of type %qT which may cause truncation of value"
  msgstr ""
  
! #: c/c-parser.cc:13717 cp/parser.cc:8468
  #, gcc-internal-format
  msgid "calls to the OpenMP runtime API are not permitted in intervening code"
  msgstr ""
  
! #: c/c-parser.cc:14137
  #, gcc-internal-format
  msgid "expected identifier or %<)%>"
  msgstr ""
  
! #: c/c-parser.cc:14233
  #, gcc-internal-format
  msgid "extra semicolon"
  msgstr ""
  
! #: c/c-parser.cc:14481
  #, gcc-internal-format
  msgid "extra semicolon in method definition specified"
  msgstr ""
  
! #: c/c-parser.cc:14613
  #, gcc-internal-format
  msgid "method attributes must be specified at the end only"
  msgstr ""
  
! #: c/c-parser.cc:14633
  #, gcc-internal-format
  msgid "expected %<;%> or %<{%> after method attribute definition"
  msgstr ""
  
! #: c/c-parser.cc:14755
  #, gcc-internal-format
  msgid "objective-c method declaration is expected"
  msgstr ""
  
! #: c/c-parser.cc:15207
  #, gcc-internal-format
  msgid "no type or storage class may be specified here,"
  msgstr ""
  
! #: c/c-parser.cc:15275 cp/parser.cc:38420
  #, gcc-internal-format
  msgid "empty property attribute list"
  msgstr ""
  
! #: c/c-parser.cc:15289 cp/parser.cc:38433
  #, fuzzy, gcc-internal-format
  msgid "missing property attribute"
  msgstr "Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: c/c-parser.cc:15328
  #, gcc-internal-format
  msgid "unknown property attribute %<%s%s%>"
  msgstr ""
  
! #: c/c-parser.cc:15331 cp/parser.cc:38470
  #, gcc-internal-format
  msgid "unknown property attribute"
  msgstr ""
  
! #: c/c-parser.cc:15340 cp/parser.cc:38479
  #, gcc-internal-format
  msgid "expected %<=%> after Objective-C %qE"
  msgstr ""
  
! #: c/c-parser.cc:15351 cp/parser.cc:38493
  #, gcc-internal-format
  msgid "expected %qE selector name"
  msgstr ""
  
! #: c/c-parser.cc:15367 cp/parser.cc:38512
  #, gcc-internal-format
  msgid "setter method names must terminate with %<:%>"
  msgstr ""
  
! #: c/c-parser.cc:15591 cp/semantics.cc:14071
  #, gcc-internal-format
  msgid "%<#pragma GCC unroll%> requires an assignment-expression that evaluates to a non-negative integral constant less than %u"
  msgstr ""
  
! #: c/c-parser.cc:15629 cp/parser.cc:53453
  #, gcc-internal-format
  msgid "intervening code must not contain OpenMP directives"
  msgstr ""
  
! #: c/c-parser.cc:15649 c/c-parser.cc:25667 c/c-parser.cc:25976
! #: c/c-parser.cc:26039 c/c-parser.cc:26149 cp/parser.cc:48090
! #: cp/parser.cc:48438 cp/parser.cc:48553 cp/parser.cc:48652 cp/parser.cc:53485
! #: cp/parser.cc:53501 cp/parser.cc:53517 cp/parser.cc:53533 cp/parser.cc:53550
! #: cp/parser.cc:53567 cp/parser.cc:53584 cp/parser.cc:53611 cp/parser.cc:53625
! #: cp/parser.cc:53650 cp/parser.cc:53664
  #, gcc-internal-format
  msgid "%<#pragma %s%> may only be used in compound statements"
  msgstr ""
  
! #: c/c-parser.cc:15672 cp/parser.cc:53639
  #, gcc-internal-format
  msgid "%<#pragma acc routine%> must be at file scope"
  msgstr ""
  
! #: c/c-parser.cc:15771 cp/parser.cc:53769
  #, gcc-internal-format
  msgid "%<#pragma omp scan%> may only be used in a loop construct with %<inscan%> %<reduction%> clause"
  msgstr ""
  
! #: c/c-parser.cc:15778 cp/parser.cc:53775
  #, gcc-internal-format
  msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct"
  msgstr ""
  
! #: c/c-parser.cc:15790 c/c-parser.cc:15806
  #, gcc-internal-format
  msgid "%<#pragma %s%> may only be used at file scope"
  msgstr ""
  
! #: c/c-parser.cc:15877 cp/parser.cc:53858
  #, gcc-internal-format
  msgid "for, while or do statement expected"
  msgstr ""
  
! #: c/c-parser.cc:15893 cp/parser.cc:53475
  #, gcc-internal-format
  msgid "%<#pragma GCC pch_preprocess%> must be first"
  msgstr ""
  
! #: c/c-parser.cc:16276 c/c-parser.cc:20196 c/c-parser.cc:22425
! #: c/c-parser.cc:22444 c/c-parser.cc:22697 c/c-parser.cc:22755
! #: c/c-parser.cc:22762 c/c-parser.cc:22769 c/c-parser.cc:27120
! #: c/c-parser.cc:28325 c/c-parser.cc:28333 c/c-parser.cc:28709
! #: c/c-parser.cc:28719 c/c-parser.cc:28813 c/c-parser.cc:28820
! #: c/c-parser.cc:28827 cp/parser.cc:38959 cp/parser.cc:42640 cp/parser.cc:44042
! #: cp/parser.cc:44079 cp/parser.cc:44268 cp/parser.cc:44331 cp/parser.cc:44338
! #: cp/parser.cc:44345 cp/parser.cc:50011 cp/parser.cc:50018 cp/parser.cc:50025
! #: cp/parser.cc:50558 cp/parser.cc:52339 cp/parser.cc:52347 cp/parser.cc:52499
! #: cp/parser.cc:52509
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %qs clauses"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ ÑƒÐ²Ð°Ñ…Ð¾Ð´Ð·Ñ�Ñ‡Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð°Ñž"
  
! #: c/c-parser.cc:16303
  #, gcc-internal-format
  msgid "expression must be integral"
  msgstr ""
  
! #: c/c-parser.cc:16910 c/c-parser.cc:29539
  #, fuzzy, gcc-internal-format
  msgid "%qD is not a variable"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-parser.cc:16914 cp/semantics.cc:9112
  #, fuzzy, gcc-internal-format
  msgid "%qD is not a pointer variable"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: c/c-parser.cc:16956 cp/parser.cc:39850
  #, gcc-internal-format
  msgid "collapse argument needs positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:17051 cp/parser.cc:39928
  #, gcc-internal-format
  msgid "expected %<none%> or %<present%>"
  msgstr ""
  
! #: c/c-parser.cc:17053 cp/parser.cc:39930
  #, gcc-internal-format
  msgid "expected %<none%>, %<shared%>, %<private%> or %<firstprivate%>"
  msgstr ""
  
! #: c/c-parser.cc:17138 cp/parser.cc:40000
  #, gcc-internal-format
  msgid "expected constant logical expression"
  msgstr ""
  
! #: c/c-parser.cc:17215 cp/parser.cc:40082
  #, gcc-internal-format
  msgid "expected %<data%>, %<update%>, %<enter%> or %<exit%>"
  msgstr ""
  
! #: c/c-parser.cc:17235 c/c-parser.cc:26032 c/c-parser.cc:26142
! #: cp/parser.cc:40100 cp/parser.cc:48430 cp/parser.cc:48545
  #, gcc-internal-format
  msgid "expected %<data%>"
  msgstr ""
  
! #: c/c-parser.cc:17288 cp/parser.cc:40155
  #, gcc-internal-format
  msgid "too many %<if%> clauses with %qs modifier"
  msgstr ""
  
! #: c/c-parser.cc:17295 cp/parser.cc:40162
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<if%> clauses"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ ÑƒÐ²Ð°Ñ…Ð¾Ð´Ð·Ñ�Ñ‡Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð°Ñž"
  
! #: c/c-parser.cc:17297 cp/parser.cc:40164
  #, gcc-internal-format
  msgid "too many %<if%> clauses without modifier"
  msgstr ""
  
! #: c/c-parser.cc:17303 cp/parser.cc:40170
  #, gcc-internal-format
  msgid "if any %<if%> clause has modifier, then all %<if%> clauses have to use modifier"
  msgstr ""
  
! #: c/c-parser.cc:17408 c/c-parser.cc:17468 c/c-parser.cc:17530
! #: c/c-parser.cc:17578 c/c-parser.cc:17658 c/c-parser.cc:18055
! #: c/c-parser.cc:18137 c/c-parser.cc:18742 c/c-parser.cc:18887
! #: c/c-parser.cc:18955 c/c-parser.cc:20133
  #, gcc-internal-format
  msgid "expected integer expression"
  msgstr ""
  
! #: c/c-parser.cc:17419
  #, gcc-internal-format
  msgid "%<num_threads%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:17480
  #, gcc-internal-format
  msgid "%<num_tasks%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:17542 cp/semantics.cc:9327
  #, gcc-internal-format
  msgid "%<grainsize%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:17591 cp/semantics.cc:9357
  #, gcc-internal-format
  msgid "%<priority%> value must be non-negative"
  msgstr ""
  
! #: c/c-parser.cc:17625 cp/parser.cc:40396
  #, gcc-internal-format
  msgid "expected constant integer expression with valid sync-hint value"
  msgstr ""
  
! #: c/c-parser.cc:17697 cp/parser.cc:40466
  #, gcc-internal-format
  msgid "expected %<alloc%>, %<to%>, %<from%>, %<tofrom%>, %<firstprivate%>, %<none%> or %<default%>"
  msgstr ""
  
! #: c/c-parser.cc:17765
  #, gcc-internal-format
  msgid "expected %<scalar%>, %<aggregate%>, %<pointer%> or %<all%>"
  msgstr ""
  
! #: c/c-parser.cc:17842 cp/parser.cc:40618
  #, gcc-internal-format
  msgid "too many %<defaultmap%> clauses with %qs category"
  msgstr ""
  
! #: c/c-parser.cc:17845 cp/parser.cc:40621
  #, gcc-internal-format
  msgid "too many %<defaultmap%> clauses with unspecified category"
  msgstr ""
  
! #: c/c-parser.cc:17929 cp/semantics.cc:8181 cp/semantics.cc:8236
  #, gcc-internal-format
  msgid "%qs expression must be integral"
  msgstr ""
  
! #: c/c-parser.cc:17941 c/c-parser.cc:18064 cp/semantics.cc:8215
  #: cp/semantics.cc:8250
  #, gcc-internal-format
  msgid "%qs value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:18003 cp/parser.cc:39613
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to function"
  msgid "too many %<static%> arguments"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: c/c-parser.cc:18037 cp/parser.cc:39646
  #, fuzzy, gcc-internal-format
  #| msgid "no arguments"
  msgid "unexpected argument"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: c/c-parser.cc:18204 cp/semantics.cc:9543
  #, gcc-internal-format
  msgid "%<tile%> argument needs positive integral constant"
  msgstr ""
  
! #: c/c-parser.cc:18272 cp/parser.cc:43259
  #, gcc-internal-format
  msgid "too many %<self%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:18314 cp/parser.cc:40671
  #, gcc-internal-format
  msgid "expected %<reproducible%> or %<unconstrained%>"
  msgstr ""
  
! #: c/c-parser.cc:18323 c/c-parser.cc:18329 cp/parser.cc:40680
! #: cp/parser.cc:40690
  #, gcc-internal-format
  msgid "expected %<concurrent%>"
  msgstr ""
  
! #: c/c-parser.cc:18365 cp/parser.cc:40730
  #, gcc-internal-format
  msgid "expected %<teams%>, %<parallel%> or %<thread%>"
  msgstr ""
  
! #: c/c-parser.cc:18418 cp/parser.cc:40798
  #, gcc-internal-format
  msgid "ordered argument needs positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:18543 c/c-parser.cc:27870 cp/parser.cc:51949
  #, gcc-internal-format
  msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%> or identifier"
  msgstr ""
  
! #: c/c-parser.cc:18665 cp/parser.cc:41056
  #, gcc-internal-format
  msgid "both %<monotonic%> and %<nonmonotonic%> modifiers specified"
  msgstr ""
  
! #: c/c-parser.cc:18719 cp/parser.cc:41072
  #, gcc-internal-format
  msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
  msgstr ""
  
! #: c/c-parser.cc:18723 cp/parser.cc:41075
  #, gcc-internal-format
  msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
  msgstr ""
  
! #: c/c-parser.cc:18736 cp/semantics.cc:8297
  #, gcc-internal-format
  msgid "chunk size value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:18759 cp/parser.cc:41095
  #, fuzzy, gcc-internal-format
  #| msgid "invalid %%-code"
  msgid "invalid schedule kind"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ %%-ÐºÐ¾Ð´"
  
! #: c/c-parser.cc:18898 c/c-parser.cc:18909
  #, gcc-internal-format
  msgid "%<num_teams%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:18917 cp/semantics.cc:8264
  #, gcc-internal-format
  msgid "%<num_teams%> lower bound %qE bigger than upper bound %qE"
  msgstr ""
  
! #: c/c-parser.cc:18966 cp/semantics.cc:8393
  #, gcc-internal-format
  msgid "%<thread_limit%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:19011 cp/semantics.cc:8521
  #, gcc-internal-format
  msgid "%<aligned%> clause alignment expression must be positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:19123 c/c-parser.cc:22412 cp/parser.cc:44034
  #, gcc-internal-format
  msgid "expected %<allocator%> or %<align%>"
  msgstr ""
  
! #: c/c-parser.cc:19130
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `%s'"
  msgid "duplicate %qs modifier"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½ÑŒÐ½Ðµ `%s'"
  
! #: c/c-parser.cc:19178 cp/semantics.cc:8654
  #, gcc-internal-format
  msgid "%<allocate%> clause allocator expression has type %qT rather than %<omp_allocator_handle_t%>"
  msgstr ""
  
! #: c/c-parser.cc:19189 cp/semantics.cc:8609 cp/semantics.cc:8625
  #, gcc-internal-format
  msgid "%<allocate%> clause %<align%> modifier argument needs to be positive constant power of two integer expression"
  msgstr ""
  
! #: c/c-parser.cc:19308 cp/parser.cc:41634
  #, gcc-internal-format
  msgid "multiple linear modifiers"
  msgstr ""
  
! #: c/c-parser.cc:19320 cp/parser.cc:41647
  #, gcc-internal-format
  msgid "multiple %<step%> modifiers"
  msgstr ""
  
! #: c/c-parser.cc:19328 c/c-parser.cc:19356
  #, gcc-internal-format
  msgid "%<linear%> clause step expression must be integral"
  msgstr ""
  
! #: c/c-parser.cc:19408
  #, gcc-internal-format
  msgid "%<safelen%> clause expression must be positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:19447
  #, gcc-internal-format
  msgid "%<simdlen%> clause expression must be positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:19807 cp/parser.cc:42194
  #, gcc-internal-format
  msgid "%<iterator%> modifier incompatible with %qs"
  msgstr ""
  
! #: c/c-parser.cc:19855 cp/parser.cc:42249 cp/parser.cc:42701 cp/parser.cc:42768
  #, fuzzy, gcc-internal-format
  #| msgid "invalid %%d operand"
  msgid "invalid depend kind"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ %%d Ð°Ð¿ÐµÑ€Ð°Ð½Ð´"
  
! #: c/c-parser.cc:19916 cp/parser.cc:42279
  #, fuzzy, gcc-internal-format
  #| msgid "invalid mask"
  msgid "invalid doacross kind"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ñ� Ð¼Ð°Ñ�ÐºÐ°"
  
! #: c/c-parser.cc:19985 cp/parser.cc:42422
  #, gcc-internal-format
  msgid "too many %<always%> modifiers"
  msgstr ""
  
! #: c/c-parser.cc:19995 cp/parser.cc:42435
  #, gcc-internal-format
  msgid "too many %<close%> modifiers"
  msgstr ""
  
! #: c/c-parser.cc:20005 cp/parser.cc:42448
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<present%> modifiers"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ ÑƒÐ²Ð°Ñ…Ð¾Ð´Ð·Ñ�Ñ‡Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð°Ñž"
  
! #: c/c-parser.cc:20013 cp/parser.cc:42459
  #, gcc-internal-format
  msgid "%<map%> clause with map-type modifier other than %<always%>, %<close%> or %<present%>"
  msgstr ""
  
! #: c/c-parser.cc:20051 cp/parser.cc:42499
  #, fuzzy, gcc-internal-format
  #| msgid "invalid mask"
  msgid "invalid map kind"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ñ� Ð¼Ð°Ñ�ÐºÐ°"
  
! #: c/c-parser.cc:20103 cp/parser.cc:42563
  #, gcc-internal-format
  msgid "%<ancestor%> device modifier not preceded by %<requires%> directive with %<reverse_offload%> clause"
  msgstr ""
  
! #: c/c-parser.cc:20115 cp/parser.cc:42574
  #, gcc-internal-format
  msgid "expected %<ancestor%> or %<device_num%>"
  msgstr ""
  
! #: c/c-parser.cc:20138 cp/semantics.cc:8418
  #, gcc-internal-format
  msgid "the %<device%> clause expression must evaluate to %<1%>"
  msgstr ""
  
! #: c/c-parser.cc:20171 cp/parser.cc:42645
  #, gcc-internal-format
  msgid "invalid dist_schedule kind"
  msgstr ""
  
! #: c/c-parser.cc:20250
  #, fuzzy, gcc-internal-format
  msgid "invalid proc_bind kind"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ %s"
  
! #: c/c-parser.cc:20294
  #, gcc-internal-format
  msgid "expected %<host%>, %<nohost%> or %<any%>"
  msgstr ""
  
! #: c/c-parser.cc:20400 cp/semantics.cc:9665 cp/semantics.cc:9683
  #, gcc-internal-format
  msgid "%<partial%> argument needs positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:20501 cp/semantics.cc:8837
  #, gcc-internal-format
  msgid "%<detach%> clause event handle has type %qT rather than %<omp_event_handle_t%>"
  msgstr ""
  
! #: c/c-parser.cc:20572 c/c-parser.cc:20666 cp/parser.cc:42828
! #: cp/parser.cc:42940
  #, gcc-internal-format
  msgid "string literal must not contain %<\\0%>"
  msgstr ""
  
! #: c/c-parser.cc:20581 c/c-parser.cc:20702 cp/parser.cc:42835
! #: cp/parser.cc:42975
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown foreign runtime identifier %qs"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð°: %s"
  
! #: c/c-parser.cc:20596 c/c-parser.cc:20725 cp/parser.cc:42850
! #: cp/parser.cc:42997
  #, gcc-internal-format
  msgid "expected string literal or constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:20604 c/c-parser.cc:20733 cp/parser.cc:42858
! #: cp/parser.cc:43005 cp/semantics.cc:7513
  #, gcc-internal-format
  msgid "unknown foreign runtime identifier %qwd"
  msgstr ""
  
! #: c/c-parser.cc:20642 cp/parser.cc:42917
  #, gcc-internal-format
  msgid "expected %<fr%> or %<attr%> preference selector"
  msgstr ""
  
! #: c/c-parser.cc:20650 cp/parser.cc:42925
  #, gcc-internal-format
  msgid "duplicated %<fr%> preference selector"
  msgstr ""
  
! #: c/c-parser.cc:20676 cp/parser.cc:42949
  #, gcc-internal-format
  msgid "%<attr%> string literal must start with %<ompx_%>"
  msgstr ""
  
! #: c/c-parser.cc:20684 cp/parser.cc:42956
  #, gcc-internal-format
  msgid "%<attr%> string literal must not contain a comma"
  msgstr ""
  
! #: c/c-parser.cc:20696 cp/parser.cc:42968
  #, gcc-internal-format
  msgid "non-empty string literal expected"
  msgstr ""
  
! #: c/c-parser.cc:20806 cp/parser.cc:43108
  #, gcc-internal-format
  msgid "duplicate %<targetsync%> modifier"
  msgstr ""
  
! #: c/c-parser.cc:20813 cp/parser.cc:43115
  #, gcc-internal-format
  msgid "duplicate %<target%> modifier"
  msgstr ""
  
! #: c/c-parser.cc:20820 cp/parser.cc:43122
  #, gcc-internal-format
  msgid "duplicate %<prefer_type%> modifier"
  msgstr ""
  
! #: c/c-parser.cc:20841 cp/parser.cc:43143
  #, gcc-internal-format
  msgid "expected %<prefer_type%>, %<target%>, or %<targetsync%>"
  msgstr ""
  
! #: c/c-parser.cc:20877 c/c-parser.cc:27149 cp/parser.cc:43180
! #: cp/parser.cc:50583
  #, gcc-internal-format
  msgid "missing required %<target%> and/or %<targetsync%> modifier"
  msgstr ""
  
! #: c/c-parser.cc:21118 cp/parser.cc:43475
  #, gcc-internal-format
  msgid "expected an OpenACC clause"
  msgstr ""
  
! #: c/c-parser.cc:21129 c/c-parser.cc:21526 c/c-parser.cc:29112
! #: cp/parser.cc:43486 cp/parser.cc:43939 cp/parser.cc:51427
  #, fuzzy, gcc-internal-format
  #| msgid "complex invalid for `%s'"
  msgid "%qs is not valid for %qs"
  msgstr "complex Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð´Ð»Ñ� \"%s\""
  
! #: c/c-parser.cc:21174 cp/parser.cc:43534
  #, gcc-internal-format
  msgid "clauses in %<simd%> trait should be separated by %<,%>"
  msgstr ""
  
! #: c/c-parser.cc:21327 cp/parser.cc:43727
  #, gcc-internal-format
  msgid "%qs must be the first clause of %qs"
  msgstr ""
  
! #: c/c-parser.cc:21515 cp/parser.cc:43928
  #, gcc-internal-format
  msgid "expected an OpenMP clause"
  msgstr ""
  
! #: c/c-parser.cc:21676 cp/parser.cc:49115
  #, gcc-internal-format
  msgid "no valid clauses specified in %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21686 cp/parser.cc:49125
  #, gcc-internal-format
  msgid "array section in %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21706 cp/parser.cc:49145
  #, gcc-internal-format
  msgid "%qD must be a global variable in %<#pragma acc declare link%>"
  msgstr ""
  
! #: c/c-parser.cc:21717 cp/parser.cc:49156
  #, gcc-internal-format
  msgid "invalid OpenACC clause at file scope"
  msgstr ""
  
! #: c/c-parser.cc:21724 cp/parser.cc:49163
  #, gcc-internal-format
  msgid "invalid use of %<extern%> variable %qD in %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21732 cp/parser.cc:49171
  #, gcc-internal-format
  msgid "invalid use of %<global%> variable %qD in %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21743 cp/parser.cc:49193
  #, gcc-internal-format
  msgid "%qD must be a variable declared in the same scope as %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21753 cp/parser.cc:49216
  #, gcc-internal-format
  msgid "variable %qD used more than once with %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21846 cp/parser.cc:49300
  #, gcc-internal-format
  msgid "expected %<data%> after %<#pragma acc %s%>"
  msgstr ""
  
! #: c/c-parser.cc:21862 cp/parser.cc:49317
  #, gcc-internal-format
  msgid "%<#pragma acc %s data%> has no data movement clause"
  msgstr ""
  
! #: c/c-parser.cc:21894 cp/parser.cc:49075
  #, gcc-internal-format
  msgid "%<host_data%> construct requires %<use_device%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22123 cp/parser.cc:3533
  #, gcc-internal-format
  msgid "%qE has not been declared"
  msgstr ""
  
! #: c/c-parser.cc:22127
  #, gcc-internal-format
  msgid "expected function name"
  msgstr ""
  
! #: c/c-parser.cc:22145 cp/parser.cc:52766
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function,"
  msgid "%qD does not refer to a function"
  msgstr "`%D' - Ð³Ñ�Ñ‚Ð° Ð½Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�,"
  
! #: c/c-parser.cc:22168 c/c-parser.cc:22216 cp/parser.cc:1779
  #, gcc-internal-format
  msgid "%<#pragma acc routine%> not immediately followed by function declaration or definition"
  msgstr ""
  
! #: c/c-parser.cc:22208 cp/parser.cc:52817 cp/parser.cc:52864
  #, gcc-internal-format
  msgid "%<#pragma acc routine%> not immediately followed by a single function declaration or definition"
  msgstr ""
  
! #: c/c-parser.cc:22239 cp/parser.cc:52892
  #, gcc-internal-format
  msgid "%<#pragma acc routine%> must be applied before use"
  msgstr ""
  
! #: c/c-parser.cc:22240 cp/parser.cc:52894
  #, gcc-internal-format
  msgid "%<#pragma acc routine%> must be applied before definition"
  msgstr ""
  
! #: c/c-parser.cc:22285 cp/parser.cc:49533
  #, gcc-internal-format
  msgid "%<#pragma acc update%> must contain at least one %<device%> or %<host%> or %<self%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22343
  #, gcc-internal-format
  msgid "variable %qD used in the %<allocator%> clause must be declared before %qD"
  msgstr ""
  
! #: c/c-parser.cc:22347 c/c-parser.cc:22370
  #, gcc-internal-format
  msgid "to be allocated variable declared here"
  msgstr ""
  
! #: c/c-parser.cc:22365
  #, gcc-internal-format
  msgid "variable %qD used in the %<allocator%> clause must not be modified between declaration of %qD and its %<allocate%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22368
  #, fuzzy, gcc-internal-format
  #| msgid "`O' modifier"
  msgid "modified here"
  msgstr "'O' Ð¼Ð°Ð´Ñ‹Ñ„Ñ–ÐºÐ°Ñ‚Ð°Ñ€"
  
! #: c/c-parser.cc:22436 cp/parser.cc:44054 cp/parser.cc:44069
  #, gcc-internal-format
  msgid "%<align%> clause argument needs to be positive constant power of two integer expression"
  msgstr ""
  
! #: c/c-parser.cc:22460
  #, gcc-internal-format
  msgid "%<allocator%> clause allocator expression has type %qT rather than %<omp_allocator_handle_t%>"
  msgstr ""
  
! #: c/c-parser.cc:22477
  #, gcc-internal-format
  msgid "function parameter %qD may not appear as list item in an %<allocate%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22484
  #, gcc-internal-format
  msgid "%<allocate%> directive must be in the same scope as %qD"
  msgstr ""
  
! #: c/c-parser.cc:22492
  #, gcc-internal-format
  msgid "%qD already appeared as list item in an %<allocate%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22501
  #, gcc-internal-format
  msgid "%<allocator%> clause required for static variable %qD"
  msgstr ""
  
! #: c/c-parser.cc:22512
  #, gcc-internal-format
  msgid "%<allocator%> clause requires a predefined allocator as %qD is static"
  msgstr ""
  
! #: c/c-parser.cc:22663 cp/parser.cc:44234
  #, gcc-internal-format
  msgid "expected %<read%>, %<write%>, %<update%>, or %<capture%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22702 cp/parser.cc:44273
  #, gcc-internal-format
  msgid "expected %<seq_cst%>, %<acquire%> or %<relaxed%>"
  msgstr ""
  
! #: c/c-parser.cc:22726 cp/parser.cc:44302
  #, gcc-internal-format
  msgid "expected %<read%>, %<write%>, %<update%>, %<capture%>, %<compare%>, %<weak%>, %<fail%>, %<seq_cst%>, %<acq_rel%>, %<release%>, %<relaxed%> or %<hint%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22741 cp/parser.cc:44317
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many atomic clauses"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ ÑƒÐ²Ð°Ñ…Ð¾Ð´Ð·Ñ�Ñ‡Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð°Ñž"
  
! #: c/c-parser.cc:22748 cp/parser.cc:44324
  #, gcc-internal-format
  msgid "too many memory order clauses"
  msgstr ""
  
! #: c/c-parser.cc:22786 c/c-parser.cc:22793 cp/parser.cc:44362
! #: cp/parser.cc:44369
  #, gcc-internal-format
  msgid "%qs clause is incompatible with %<read%> or %<write%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:22799 c/c-parser.cc:22804 cp/parser.cc:44375
! #: cp/parser.cc:44380
  #, gcc-internal-format
  msgid "%qs clause requires %qs clause"
  msgstr ""
  
! #: c/c-parser.cc:22827 cp/parser.cc:44403
  #, gcc-internal-format
  msgid "%<#pragma omp atomic write%> incompatible with %<acquire%> clause implicitly provided by a %<requires%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22838 cp/parser.cc:44414
  #, gcc-internal-format
  msgid "%<#pragma omp atomic read%> incompatible with %<release%> clause implicitly provided by a %<requires%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22870 cp/parser.cc:44446
  #, gcc-internal-format
  msgid "%<#pragma omp atomic read%> incompatible with %<release%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22880 cp/parser.cc:44456
  #, gcc-internal-format
  msgid "%<#pragma omp atomic write%> incompatible with %<acquire%> clause"
  msgstr ""
  
! #: c/c-parser.cc:23001 cp/parser.cc:44556
  #, gcc-internal-format
  msgid "expected %<==%> comparison in %<if%> condition"
  msgstr ""
  
! #: c/c-parser.cc:23008 cp/parser.cc:44563
  #, gcc-internal-format
  msgid "expected %<==%>, %<<%> or %<>%> comparison in %<if%> condition"
  msgstr ""
  
! #: c/c-parser.cc:23081 cp/parser.cc:44628 cp/parser.cc:44911 cp/parser.cc:45005
! #: cp/parser.cc:45023
  #, gcc-internal-format
  msgid "invalid form of %<#pragma omp atomic compare%>"
  msgstr ""
  
! #: c/c-parser.cc:23092 cp/parser.cc:44639
  #, gcc-internal-format
  msgid "unexpected %<else%>"
  msgstr ""
  
! #: c/c-parser.cc:23152 cp/parser.cc:45078
  #, gcc-internal-format
  msgid "invalid form of %<pragma omp atomic compare%>"
  msgstr ""
  
! #: c/c-parser.cc:23423 cp/parser.cc:44932 cp/parser.cc:44958
  #, gcc-internal-format
  msgid "invalid form of %<#pragma omp atomic%>"
  msgstr ""
  
! #: c/c-parser.cc:23427 cp/parser.cc:44998 cp/parser.cc:45032
  #, gcc-internal-format
  msgid "invalid operator for %<#pragma omp atomic%>"
  msgstr ""
  
! #: c/c-parser.cc:23478 cp/parser.cc:45067
  #, gcc-internal-format
  msgid "%<weak%> clause requires atomic equality comparison"
  msgstr ""
  
! #: c/c-parser.cc:23484 cp/semantics.cc:11909 cp/semantics.cc:11919
  #, gcc-internal-format
  msgid "%<#pragma omp atomic capture%> uses two different expressions for memory"
  msgstr ""
  
! #: c/c-parser.cc:23587 cp/semantics.cc:11996
  #, gcc-internal-format
  msgid "%<depobj%> expression is not lvalue expression"
  msgstr ""
  
! #: c/c-parser.cc:23630
  #, gcc-internal-format
  msgid "%<destroy%> expression is not lvalue expression"
  msgstr ""
  
! #: c/c-parser.cc:23636 cp/parser.cc:45220
  #, gcc-internal-format
  msgid "the %<destroy%> expression %qE should be the same as the %<depobj%> argument %qE"
  msgstr ""
  
! #: c/c-parser.cc:23667 cp/parser.cc:45256
  #, gcc-internal-format
  msgid "expected %<in%>, %<out%>, %<inout%>, %<mutexinoutset%> or %<inoutset%>"
  msgstr ""
  
! #: c/c-parser.cc:23679 cp/parser.cc:45272
  #, gcc-internal-format
  msgid "expected %<depend%>, %<destroy%> or %<update%> clause"
  msgstr ""
  
! #: c/c-parser.cc:23720 cp/parser.cc:45310
  #, gcc-internal-format
  msgid "expected %<seq_cst%>, %<acq_rel%>, %<release%> or %<acquire%>"
  msgstr ""
  
! #: c/c-parser.cc:23728 cp/parser.cc:45318
  #, gcc-internal-format
  msgid "%<flush%> list specified together with memory order clause"
  msgstr ""
  
! #: c/c-parser.cc:23733
  #, gcc-internal-format
  msgid "expected %<(%> or end of line"
  msgstr ""
  
! #: c/c-parser.cc:23804 cp/parser.cc:46039
  #, gcc-internal-format
  msgid "%<[[omp::directive(%s)]]%> must be the only specified attribute on a statement"
  msgstr ""
  
! #: c/c-parser.cc:23871 cp/parser.cc:46108
  #, gcc-internal-format
  msgid "%<#pragma omp scan%> with zero preceding executable statements"
  msgstr ""
  
! #: c/c-parser.cc:23905 cp/parser.cc:46141
  #, gcc-internal-format
  msgid "expected %<inclusive%> or %<exclusive%> clause"
  msgstr ""
  
! #: c/c-parser.cc:23910 cp/parser.cc:46147
  #, gcc-internal-format
  msgid "expected %<#pragma omp scan%>"
  msgstr ""
  
! #: c/c-parser.cc:23919 cp/parser.cc:46156
  #, gcc-internal-format
  msgid "%<#pragma omp scan%> with zero succeeding executable statements"
  msgstr ""
  
! #: c/c-parser.cc:23944 cp/parser.cc:46179
  #, fuzzy, gcc-internal-format
  msgid "for statement expected"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
--- 48863,50390 ----
  #. c_parser_skip_until_found stops at a closing nesting
  #. delimiter without consuming it, but here we need to consume
  #. it to proceed further.
! #: c/c-parser.cc:7878 c/c-parser.cc:7882 c/c-parser.cc:8390
! #: c/gimple-parser.cc:716 c/gimple-parser.cc:2520 cp/parser.cc:13267
  #, gcc-internal-format
  msgid "expected statement"
  msgstr ""
  
! #: c/c-parser.cc:7963
  #, gcc-internal-format
  msgid "expected %<:%> or %<...%>"
  msgstr ""
  
! #: c/c-parser.cc:7993
  #, gcc-internal-format
  msgid "GNU-style attribute between label and declaration appertains to the label"
  msgstr ""
  
! #: c/c-parser.cc:8246
  #, gcc-internal-format
  msgid "expected identifier or %<*%>"
  msgstr ""
  
! #: c/c-parser.cc:8372
  #, gcc-internal-format
  msgid "only attribute %<fallthrough%> or %<assume%> can be applied to a null statement"
  msgstr ""
  
! #: c/c-parser.cc:8482
  #, fuzzy, gcc-internal-format
  msgid "ISO C does not support if declarations before C2Y"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ \"long long\""
  
! #: c/c-parser.cc:8504
  #, gcc-internal-format
  msgid "declaration in the controlling expression must have an initializer"
  msgstr ""
  
! #: c/c-parser.cc:8521 cp/parser.cc:5462 cp/parser.cc:16424
  #, fuzzy, gcc-internal-format
  #| msgid "empty declaration"
  msgid "expected declaration"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: c/c-parser.cc:8602 cp/parser.cc:15494
  #, fuzzy, gcc-internal-format
  #| msgid "empty body in an else-statement"
  msgid "suggest braces around empty body in an %<if%> statement"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ñ†ÐµÐ»Ð° Ñž else-Ð²Ñ‹Ñ€Ð°Ð¶Ñ�Ð½Ð½Ñ–"
  
! #: c/c-parser.cc:8645 cp/parser.cc:15497
  #, fuzzy, gcc-internal-format
  #| msgid "empty body in an else-statement"
  msgid "suggest braces around empty body in an %<else%> statement"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ñ†ÐµÐ»Ð° Ñž else-Ð²Ñ‹Ñ€Ð°Ð¶Ñ�Ð½Ð½Ñ–"
  
! #: c/c-parser.cc:8739 cp/parser.cc:14225
  #, gcc-internal-format
  msgid "suggest explicit braces to avoid ambiguous %<else%>"
  msgstr ""
  
! #: c/c-parser.cc:8857 c/c-parser.cc:8936 c/c-parser.cc:9071 cp/parser.cc:15087
  #, gcc-internal-format
  msgid "loop not permitted in intervening code in OpenMP loop body"
  msgstr ""
  
! #: c/c-parser.cc:8944
  #, gcc-internal-format
  msgid "suggest braces around empty body in %<do%> statement"
  msgstr ""
  
! #: c/c-parser.cc:9105 c/c-parser.cc:9137
  #, gcc-internal-format
  msgid "multiple iterating variables in fast enumeration"
  msgstr ""
  
! #: c/c-parser.cc:9160
  #, fuzzy, gcc-internal-format
  msgid "invalid iterating variable in fast enumeration"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: c/c-parser.cc:9184 cp/parser.cc:14533
  #, gcc-internal-format
  msgid "missing loop condition in loop with %<GCC ivdep%> pragma"
  msgstr ""
  
! #: c/c-parser.cc:9190 cp/parser.cc:14539
  #, gcc-internal-format
  msgid "missing loop condition in loop with %<GCC unroll%> pragma"
  msgstr ""
  
! #: c/c-parser.cc:9231
  #, gcc-internal-format
  msgid "missing collection in fast enumeration"
  msgstr ""
  
! #: c/c-parser.cc:9380 c/c-parser.cc:9391 c/c-parser.cc:9402
  #, fuzzy, gcc-internal-format
  msgid "duplicate %<asm%> qualifier %qE"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½Ð½Ðµ \"volatile\""
  
! #: c/c-parser.cc:9381 c/c-parser.cc:9392 c/c-parser.cc:9403 cp/parser.cc:23381
! #: cp/parser.cc:23399 cp/parser.cc:23414
  #, gcc-internal-format
  msgid "first seen here"
  msgstr ""
  
! #: c/c-parser.cc:9412
  #, gcc-internal-format
  msgid "%qE is not a valid %<asm%> qualifier"
  msgstr ""
  
! #: c/c-parser.cc:9761 cp/parser.cc:4893
  #, gcc-internal-format
  msgid "a wide string is invalid in this context"
  msgstr ""
  
! #: c/c-parser.cc:9969
  #, fuzzy, gcc-internal-format
  msgid "ISO C forbids omitting the middle term of a %<?:%> expression"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð¿ÑƒÑ�Ñ‚Ñ‹ Ñ–Ð·Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹ Ñ„Ð°Ð¹Ð»"
  
  #. Location of the binary operator.
  #. Quiet warning.
! #: c/c-parser.cc:10193 cp/typeck.cc:5698
  #, gcc-internal-format
  msgid "division %<sizeof (%T) / sizeof (%T)%> does not compute the number of array elements"
  msgstr ""
  
! #: c/c-parser.cc:10199 cp/typeck.cc:5703
  #, gcc-internal-format
  msgid "first %<sizeof%> operand was declared here"
  msgstr ""
  
! #: c/c-parser.cc:10470
  #, gcc-internal-format
  msgid "storage class specifier in cast"
  msgstr ""
  
! #: c/c-parser.cc:10473
  #, gcc-internal-format
  msgid "alignment specified for type name in cast"
  msgstr ""
  
! #: c/c-parser.cc:10574
  #, gcc-internal-format
  msgid "traditional C rejects the unary plus operator"
  msgstr ""
  
! #: c/c-parser.cc:10704
  #, gcc-internal-format
  msgid "storage class specifier in %<sizeof%>"
  msgstr ""
  
! #: c/c-parser.cc:10707
  #, gcc-internal-format
  msgid "alignment specified for type name in %<sizeof%>"
  msgstr ""
  
! #: c/c-parser.cc:10723
  #, gcc-internal-format
  msgid "%<sizeof%> applied to a bit-field"
  msgstr ""
  
! #: c/c-parser.cc:10796
  #, gcc-internal-format
  msgid "storage class specifier in %qE"
  msgstr ""
  
! #: c/c-parser.cc:10799
  #, fuzzy, gcc-internal-format
  msgid "alignment specified for type name in %qE"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: c/c-parser.cc:10823
  #, gcc-internal-format
  msgid "ISO C does not allow %<%E (expression)%>"
  msgstr ""
  
! #: c/c-parser.cc:10976
  #, fuzzy, gcc-internal-format
  msgid "cannot take address of %qs"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ð°Ñ‚Ñ€Ñ‹Ð¼Ð°Ñ†ÑŒ Ð°Ð´Ñ€Ð°Ñ� Ð±Ñ–Ñ‚Ð°Ð²Ð°Ð³Ð° Ð¿Ð¾Ð»Ñ� \"%s\""
  
! #: c/c-parser.cc:11083
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 does not support complex types"
  msgid "ISO C99 does not support %<_Generic%>"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-parser.cc:11086
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 does not support complex types"
  msgid "ISO C90 does not support %<_Generic%>"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-parser.cc:11097
  #, gcc-internal-format
  msgid "ISO C does not support use of type name as %<_Generic%> controlling operand before C2Y"
  msgstr ""
  
! #: c/c-parser.cc:11168
  #, gcc-internal-format
  msgid "ISO C does not support %<_Generic%> association with function type before C2Y"
  msgstr ""
  
! #: c/c-parser.cc:11172
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support `++' and `--' on complex types"
  msgid "ISO C does not support %<_Generic%> association with incomplete type before C2Y"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ \"++\" Ñ– \"--\" Ð´Ð»Ñ� Ñ‚Ñ‹Ð¿Ñƒ complex"
  
! #: c/c-parser.cc:11177
  #, gcc-internal-format
  msgid "%<_Generic%> association has variable length type"
  msgstr ""
  
! #: c/c-parser.cc:11211
  #, gcc-internal-format
  msgid "duplicate %<default%> case in %<_Generic%>"
  msgstr ""
  
! #: c/c-parser.cc:11212
  #, gcc-internal-format
  msgid "original %<default%> is here"
  msgstr ""
  
! #: c/c-parser.cc:11220
  #, gcc-internal-format
  msgid "%<_Generic%> specifies two compatible types"
  msgstr ""
  
! #: c/c-parser.cc:11221
  #, gcc-internal-format
  msgid "compatible type is here"
  msgstr ""
  
! #: c/c-parser.cc:11244
  #, gcc-internal-format
  msgid "%<_Generic%> selector matches multiple associations"
  msgstr ""
  
! #: c/c-parser.cc:11246
  #, gcc-internal-format
  msgid "other match is here"
  msgstr ""
  
! #: c/c-parser.cc:11271
  #, gcc-internal-format
  msgid "%<_Generic%> selector of type %qT is not compatible with any association"
  msgstr ""
  
! #: c/c-parser.cc:11292
  #, fuzzy, gcc-internal-format
  msgid "argument %u of %<__builtin_tgmath%> is not a function pointer"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð²Ñ‹Ð¹ÑˆÐ°Ñž Ð·Ð° Ð¼ÐµÐ¶Ñ‹"
  
! #: c/c-parser.cc:11300
  #, fuzzy, gcc-internal-format
  msgid "argument %u of %<__builtin_tgmath%> is unprototyped"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð²Ñ‹Ð¹ÑˆÐ°Ñž Ð·Ð° Ð¼ÐµÐ¶Ñ‹"
  
! #: c/c-parser.cc:11306
  #, gcc-internal-format
  msgid "argument %u of %<__builtin_tgmath%> has variable arguments"
  msgstr ""
  
! #: c/c-parser.cc:11322
  #, fuzzy, gcc-internal-format
  msgid "argument %u of %<__builtin_tgmath%> has no arguments"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð²Ñ‹Ð¹ÑˆÐ°Ñž Ð·Ð° Ð¼ÐµÐ¶Ñ‹"
  
! #: c/c-parser.cc:11345 c/c-parser.cc:11349
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support %qs predefined identifier"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-parser.cc:11353
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C90 does not support %<__func__%> predefined identifier"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-parser.cc:11562 c/c-parser.cc:13301 c/c-parser.cc:13323
! #: c/c-parser.cc:23002 c/gimple-parser.cc:1897 c/gimple-parser.cc:2537
! #: cp/parser.cc:44575
  #, gcc-internal-format
  msgid "expected expression"
  msgstr ""
  
! #: c/c-parser.cc:11584
  #, gcc-internal-format
  msgid "braced-group within expression allowed only inside a function"
  msgstr ""
  
! #: c/c-parser.cc:11599
  #, gcc-internal-format
  msgid "ISO C forbids braced-groups within expressions"
  msgstr ""
  
! #: c/c-parser.cc:11710
  #, gcc-internal-format
  msgid "optional second parameter of %<va_start%> not last named argument"
  msgstr ""
  
! #: c/c-parser.cc:11749
  #, gcc-internal-format
  msgid "%<va_start%> macro used with additional arguments other than identifier of the last named argument"
  msgstr ""
  
! #: c/c-parser.cc:11894
  #, fuzzy, gcc-internal-format
  msgid "wrong number of arguments to %<__builtin_choose_expr%>"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: c/c-parser.cc:11910
  #, fuzzy, gcc-internal-format
  msgid "first argument to %<__builtin_choose_expr%> not a constant"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: c/c-parser.cc:11980 c/c-parser.cc:11997 c/c-parser.cc:12004
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function"
  msgid "too few arguments to %<__builtin_tgmath%>"
  msgstr "Ð½Ðµ Ñ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: c/c-parser.cc:12025
  #, fuzzy, gcc-internal-format
  msgid "argument %u of %<__builtin_tgmath%> has wrong number of arguments"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð²Ñ‹Ð¹ÑˆÐ°Ñž Ð·Ð° Ð¼ÐµÐ¶Ñ‹"
  
! #: c/c-parser.cc:12069 c/c-parser.cc:12079
  #, gcc-internal-format
  msgid "invalid type-generic return type for argument %u of %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12101 c/c-parser.cc:12111
  #, gcc-internal-format
  msgid "invalid type-generic type for argument %u of argument %u of %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12144
  #, gcc-internal-format
  msgid "function arguments of %<__builtin_tgmath%> all have the same type"
  msgstr ""
  
! #: c/c-parser.cc:12163
  #, gcc-internal-format
  msgid "function arguments of %<__builtin_tgmath%> lack type-generic parameter"
  msgstr ""
  
! #: c/c-parser.cc:12211
  #, gcc-internal-format
  msgid "duplicate type-generic parameter type for function argument %u of %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12234
  #, gcc-internal-format
  msgid "bad return type for function argument %u of %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12251
  #, gcc-internal-format
  msgid "bad type for argument %u of function argument %u of %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12291
  #, gcc-internal-format, gfc-internal-format
  msgid "invalid type of argument %u of type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12302
  #, gcc-internal-format, gfc-internal-format
  msgid "decimal floating-point argument %u to complex-only type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12310
  #, gcc-internal-format, gfc-internal-format
  msgid "decimal floating-point argument %u to binary-only type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12318 c/c-parser.cc:12348
  #, gcc-internal-format
  msgid "both complex and decimal floating-point arguments to type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12326 c/c-parser.cc:12368
  #, gcc-internal-format
  msgid "both binary and decimal floating-point arguments to type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12340
  #, gcc-internal-format, gfc-internal-format
  msgid "complex argument %u to decimal-only type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12360
  #, gcc-internal-format, gfc-internal-format
  msgid "binary argument %u to decimal-only type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12467
  #, gcc-internal-format
  msgid "no matching function for type-generic call"
  msgstr ""
  
! #: c/c-parser.cc:12508
  #, gcc-internal-format
  msgid "wrong number of arguments to %<__builtin_call_with_static_chain%>"
  msgstr ""
  
! #: c/c-parser.cc:12521
  #, fuzzy, gcc-internal-format
  msgid "first argument to %<__builtin_call_with_static_chain%> must be a call expression"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: c/c-parser.cc:12525
  #, fuzzy, gcc-internal-format
  msgid "second argument to %<__builtin_call_with_static_chain%> must be a pointer type"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: c/c-parser.cc:12551
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments to %<__builtin_complex%>"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž, Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ… Ð´Ð»Ñ� Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
  
! #: c/c-parser.cc:12573
  #, gcc-internal-format
  msgid "%<__builtin_complex%> operand not of real binary floating-point type"
  msgstr ""
  
! #: c/c-parser.cc:12582
  #, gcc-internal-format
  msgid "%<__builtin_complex%> operands of different types"
  msgstr ""
  
! #: c/c-parser.cc:12613
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments to %<__builtin_counted_by_ref%>"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž, Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ… Ð´Ð»Ñ� Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
  
! #: c/c-parser.cc:12624
  #, fuzzy, gcc-internal-format
  msgid "the argument to %<__builtin_counted_by_ref%> must be an array"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: c/c-parser.cc:12675 c/c-parser.cc:12704 cp/parser.cc:8032
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments to %<__builtin_shuffle%>"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž, Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ… Ð´Ð»Ñ� Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
  
! #: c/c-parser.cc:12875
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments to %qs"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž, Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ… Ð´Ð»Ñ� Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
  
! #: c/c-parser.cc:12884 c/c-parser.cc:12964
  #, fuzzy, gcc-internal-format
  msgid "%qs operand not an integral type"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: c/c-parser.cc:12890 c/c-parser.cc:12970
  #, gcc-internal-format
  msgid "argument %u in call to function %qs has enumerated type"
  msgstr ""
  
! #: c/c-parser.cc:12897
  #, gcc-internal-format
  msgid "argument %u in call to function %qs has boolean type"
  msgstr ""
  
! #: c/c-parser.cc:12904
  #, gcc-internal-format
  msgid "argument 1 in call to function %qs has signed type"
  msgstr ""
  
! #: c/c-parser.cc:12912
  #, gcc-internal-format
  msgid "argument 1 in call to function %qs has %<char%> type"
  msgstr ""
  
! #: c/c-parser.cc:12986
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is negative"
  msgid "rotate count is negative"
  msgstr "Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹ Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° "
  
! #: c/c-parser.cc:13278 cp/parser.cc:6380
  #, gcc-internal-format
  msgid "%<omp_all_memory%> may only be used in OpenMP %<depend%> clause"
  msgstr ""
  
! #: c/c-parser.cc:13288
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 does not support complex types"
  msgid "ISO C does not support %qs before C23"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-parser.cc:13376
  #, gcc-internal-format
  msgid "%qT declared in %<constexpr%> compound literal"
  msgstr ""
  
! #: c/c-parser.cc:13381
  #, gcc-internal-format
  msgid "%qT defined in %<constexpr%> compound literal"
  msgstr ""
  
! #: c/c-parser.cc:13396
  #, gcc-internal-format
  msgid "compound literal has variable size"
  msgstr ""
  
! #: c/c-parser.cc:13401
  #, gcc-internal-format
  msgid "compound literal has function type"
  msgstr ""
  
! #: c/c-parser.cc:13432
  #, gcc-internal-format
  msgid "compound literal qualified by address-space qualifier"
  msgstr ""
  
! #: c/c-parser.cc:13437
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids `goto *expr;'"
  msgid "ISO C90 forbids compound literals"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ \"goto *expr;\""
  
! #: c/c-parser.cc:13439
  #, gcc-internal-format
  msgid "ISO C forbids storage class specifiers in compound literals before C23"
  msgstr ""
  
! #: c/c-parser.cc:13453
  #, gcc-internal-format
  msgid "%<_Alignas%> specifiers cannot reduce alignment of compound literal"
  msgstr ""
  
! #: c/c-parser.cc:13528
  #, gcc-internal-format
  msgid "using integer absolute value function %qD when argument is of floating-point type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13533
  #, gcc-internal-format
  msgid "using integer absolute value function %qD when argument is of complex type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13541
  #, gcc-internal-format
  msgid "taking the absolute value of unsigned type %qT has no effect"
  msgstr ""
  
! #: c/c-parser.cc:13552
  #, gcc-internal-format
  msgid "using floating-point absolute value function %qD when argument is of integer type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13556
  #, gcc-internal-format
  msgid "using floating-point absolute value function %qD when argument is of decimal floating-point type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13561
  #, gcc-internal-format
  msgid "using floating-point absolute value function %qD when argument is of complex type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13574
  #, gcc-internal-format
  msgid "using complex absolute value function %qD when argument is of integer type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13578
  #, gcc-internal-format
  msgid "using complex absolute value function %qD when argument is of floating-point type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13596
  #, gcc-internal-format
  msgid "using decimal floating-point absolute value function %qD when argument is of integer type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13601
  #, gcc-internal-format
  msgid "using decimal floating-point absolute value function %qD when argument is of floating-point type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13606
  #, gcc-internal-format
  msgid "using decimal floating-point absolute value function %qD when argument is of complex type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13632
  #, gcc-internal-format
  msgid "absolute value function %qD given an argument of type %qT but has parameter of type %qT which may cause truncation of value"
  msgstr ""
  
! #: c/c-parser.cc:13762 cp/parser.cc:8468
  #, gcc-internal-format
  msgid "calls to the OpenMP runtime API are not permitted in intervening code"
  msgstr ""
  
! #: c/c-parser.cc:14182
  #, gcc-internal-format
  msgid "expected identifier or %<)%>"
  msgstr ""
  
! #: c/c-parser.cc:14278
  #, gcc-internal-format
  msgid "extra semicolon"
  msgstr ""
  
! #: c/c-parser.cc:14526
  #, gcc-internal-format
  msgid "extra semicolon in method definition specified"
  msgstr ""
  
! #: c/c-parser.cc:14658
  #, gcc-internal-format
  msgid "method attributes must be specified at the end only"
  msgstr ""
  
! #: c/c-parser.cc:14678
  #, gcc-internal-format
  msgid "expected %<;%> or %<{%> after method attribute definition"
  msgstr ""
  
! #: c/c-parser.cc:14800
  #, gcc-internal-format
  msgid "objective-c method declaration is expected"
  msgstr ""
  
! #: c/c-parser.cc:15252
  #, gcc-internal-format
  msgid "no type or storage class may be specified here,"
  msgstr ""
  
! #: c/c-parser.cc:15320 cp/parser.cc:38479
  #, gcc-internal-format
  msgid "empty property attribute list"
  msgstr ""
  
! #: c/c-parser.cc:15334 cp/parser.cc:38492
  #, fuzzy, gcc-internal-format
  msgid "missing property attribute"
  msgstr "Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: c/c-parser.cc:15373
  #, gcc-internal-format
  msgid "unknown property attribute %<%s%s%>"
  msgstr ""
  
! #: c/c-parser.cc:15376 cp/parser.cc:38529
  #, gcc-internal-format
  msgid "unknown property attribute"
  msgstr ""
  
! #: c/c-parser.cc:15385 cp/parser.cc:38538
  #, gcc-internal-format
  msgid "expected %<=%> after Objective-C %qE"
  msgstr ""
  
! #: c/c-parser.cc:15396 cp/parser.cc:38552
  #, gcc-internal-format
  msgid "expected %qE selector name"
  msgstr ""
  
! #: c/c-parser.cc:15412 cp/parser.cc:38571
  #, gcc-internal-format
  msgid "setter method names must terminate with %<:%>"
  msgstr ""
  
! #: c/c-parser.cc:15636 cp/semantics.cc:14071
  #, gcc-internal-format
  msgid "%<#pragma GCC unroll%> requires an assignment-expression that evaluates to a non-negative integral constant less than %u"
  msgstr ""
  
! #: c/c-parser.cc:15674 cp/parser.cc:53506
  #, gcc-internal-format
  msgid "intervening code must not contain OpenMP directives"
  msgstr ""
  
! #: c/c-parser.cc:15694 c/c-parser.cc:25712 c/c-parser.cc:26021
! #: c/c-parser.cc:26084 c/c-parser.cc:26194 cp/parser.cc:48149
! #: cp/parser.cc:48497 cp/parser.cc:48612 cp/parser.cc:48711 cp/parser.cc:53538
! #: cp/parser.cc:53554 cp/parser.cc:53570 cp/parser.cc:53586 cp/parser.cc:53603
! #: cp/parser.cc:53620 cp/parser.cc:53637 cp/parser.cc:53664 cp/parser.cc:53678
! #: cp/parser.cc:53703 cp/parser.cc:53717
  #, gcc-internal-format
  msgid "%<#pragma %s%> may only be used in compound statements"
  msgstr ""
  
! #: c/c-parser.cc:15717 cp/parser.cc:53692
  #, gcc-internal-format
  msgid "%<#pragma acc routine%> must be at file scope"
  msgstr ""
  
! #: c/c-parser.cc:15816 cp/parser.cc:53822
  #, gcc-internal-format
  msgid "%<#pragma omp scan%> may only be used in a loop construct with %<inscan%> %<reduction%> clause"
  msgstr ""
  
! #: c/c-parser.cc:15823 cp/parser.cc:53828
  #, gcc-internal-format
  msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct"
  msgstr ""
  
! #: c/c-parser.cc:15835 c/c-parser.cc:15851
  #, gcc-internal-format
  msgid "%<#pragma %s%> may only be used at file scope"
  msgstr ""
  
! #: c/c-parser.cc:15922 cp/parser.cc:53911
  #, gcc-internal-format
  msgid "for, while or do statement expected"
  msgstr ""
  
! #: c/c-parser.cc:15938 cp/parser.cc:53528
  #, gcc-internal-format
  msgid "%<#pragma GCC pch_preprocess%> must be first"
  msgstr ""
  
! #: c/c-parser.cc:16321 c/c-parser.cc:20241 c/c-parser.cc:22470
! #: c/c-parser.cc:22489 c/c-parser.cc:22742 c/c-parser.cc:22800
! #: c/c-parser.cc:22807 c/c-parser.cc:22814 c/c-parser.cc:27166
! #: c/c-parser.cc:28371 c/c-parser.cc:28379 c/c-parser.cc:28755
! #: c/c-parser.cc:28765 c/c-parser.cc:28859 c/c-parser.cc:28866
! #: c/c-parser.cc:28873 cp/parser.cc:39018 cp/parser.cc:42699 cp/parser.cc:44101
! #: cp/parser.cc:44138 cp/parser.cc:44327 cp/parser.cc:44390 cp/parser.cc:44397
! #: cp/parser.cc:44404 cp/parser.cc:50070 cp/parser.cc:50077 cp/parser.cc:50084
! #: cp/parser.cc:50617 cp/parser.cc:52392 cp/parser.cc:52400 cp/parser.cc:52552
! #: cp/parser.cc:52562
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %qs clauses"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ ÑƒÐ²Ð°Ñ…Ð¾Ð´Ð·Ñ�Ñ‡Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð°Ñž"
  
! #: c/c-parser.cc:16348
  #, gcc-internal-format
  msgid "expression must be integral"
  msgstr ""
  
! #: c/c-parser.cc:16955 c/c-parser.cc:29582
  #, fuzzy, gcc-internal-format
  msgid "%qD is not a variable"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-parser.cc:16959 cp/semantics.cc:9112
  #, fuzzy, gcc-internal-format
  msgid "%qD is not a pointer variable"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: c/c-parser.cc:17001 cp/parser.cc:39909
  #, gcc-internal-format
  msgid "collapse argument needs positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:17096 cp/parser.cc:39987
  #, gcc-internal-format
  msgid "expected %<none%> or %<present%>"
  msgstr ""
  
! #: c/c-parser.cc:17098 cp/parser.cc:39989
  #, gcc-internal-format
  msgid "expected %<none%>, %<shared%>, %<private%> or %<firstprivate%>"
  msgstr ""
  
! #: c/c-parser.cc:17183 cp/parser.cc:40059
  #, gcc-internal-format
  msgid "expected constant logical expression"
  msgstr ""
  
! #: c/c-parser.cc:17260 cp/parser.cc:40141
  #, gcc-internal-format
  msgid "expected %<data%>, %<update%>, %<enter%> or %<exit%>"
  msgstr ""
  
! #: c/c-parser.cc:17280 c/c-parser.cc:26077 c/c-parser.cc:26187
! #: cp/parser.cc:40159 cp/parser.cc:48489 cp/parser.cc:48604
  #, gcc-internal-format
  msgid "expected %<data%>"
  msgstr ""
  
! #: c/c-parser.cc:17333 cp/parser.cc:40214
  #, gcc-internal-format
  msgid "too many %<if%> clauses with %qs modifier"
  msgstr ""
  
! #: c/c-parser.cc:17340 cp/parser.cc:40221
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<if%> clauses"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ ÑƒÐ²Ð°Ñ…Ð¾Ð´Ð·Ñ�Ñ‡Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð°Ñž"
  
! #: c/c-parser.cc:17342 cp/parser.cc:40223
  #, gcc-internal-format
  msgid "too many %<if%> clauses without modifier"
  msgstr ""
  
! #: c/c-parser.cc:17348 cp/parser.cc:40229
  #, gcc-internal-format
  msgid "if any %<if%> clause has modifier, then all %<if%> clauses have to use modifier"
  msgstr ""
  
! #: c/c-parser.cc:17453 c/c-parser.cc:17513 c/c-parser.cc:17575
! #: c/c-parser.cc:17623 c/c-parser.cc:17703 c/c-parser.cc:18100
! #: c/c-parser.cc:18182 c/c-parser.cc:18787 c/c-parser.cc:18932
! #: c/c-parser.cc:19000 c/c-parser.cc:20178
  #, gcc-internal-format
  msgid "expected integer expression"
  msgstr ""
  
! #: c/c-parser.cc:17464
  #, gcc-internal-format
  msgid "%<num_threads%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:17525
  #, gcc-internal-format
  msgid "%<num_tasks%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:17587 cp/semantics.cc:9327
  #, gcc-internal-format
  msgid "%<grainsize%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:17636 cp/semantics.cc:9357
  #, gcc-internal-format
  msgid "%<priority%> value must be non-negative"
  msgstr ""
  
! #: c/c-parser.cc:17670 cp/parser.cc:40455
  #, gcc-internal-format
  msgid "expected constant integer expression with valid sync-hint value"
  msgstr ""
  
! #: c/c-parser.cc:17742 cp/parser.cc:40525
  #, gcc-internal-format
  msgid "expected %<alloc%>, %<to%>, %<from%>, %<tofrom%>, %<firstprivate%>, %<none%> or %<default%>"
  msgstr ""
  
! #: c/c-parser.cc:17810
  #, gcc-internal-format
  msgid "expected %<scalar%>, %<aggregate%>, %<pointer%> or %<all%>"
  msgstr ""
  
! #: c/c-parser.cc:17887 cp/parser.cc:40677
  #, gcc-internal-format
  msgid "too many %<defaultmap%> clauses with %qs category"
  msgstr ""
  
! #: c/c-parser.cc:17890 cp/parser.cc:40680
  #, gcc-internal-format
  msgid "too many %<defaultmap%> clauses with unspecified category"
  msgstr ""
  
! #: c/c-parser.cc:17974 cp/semantics.cc:8181 cp/semantics.cc:8236
  #, gcc-internal-format
  msgid "%qs expression must be integral"
  msgstr ""
  
! #: c/c-parser.cc:17986 c/c-parser.cc:18109 cp/semantics.cc:8215
  #: cp/semantics.cc:8250
  #, gcc-internal-format
  msgid "%qs value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:18048 cp/parser.cc:39672
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to function"
  msgid "too many %<static%> arguments"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: c/c-parser.cc:18082 cp/parser.cc:39705
  #, fuzzy, gcc-internal-format
  #| msgid "no arguments"
  msgid "unexpected argument"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: c/c-parser.cc:18249 cp/semantics.cc:9543
  #, gcc-internal-format
  msgid "%<tile%> argument needs positive integral constant"
  msgstr ""
  
! #: c/c-parser.cc:18317 cp/parser.cc:43318
  #, gcc-internal-format
  msgid "too many %<self%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:18359 cp/parser.cc:40730
  #, gcc-internal-format
  msgid "expected %<reproducible%> or %<unconstrained%>"
  msgstr ""
  
! #: c/c-parser.cc:18368 c/c-parser.cc:18374 cp/parser.cc:40739
! #: cp/parser.cc:40749
  #, gcc-internal-format
  msgid "expected %<concurrent%>"
  msgstr ""
  
! #: c/c-parser.cc:18410 cp/parser.cc:40789
  #, gcc-internal-format
  msgid "expected %<teams%>, %<parallel%> or %<thread%>"
  msgstr ""
  
! #: c/c-parser.cc:18463 cp/parser.cc:40857
  #, gcc-internal-format
  msgid "ordered argument needs positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:18588 c/c-parser.cc:27916 cp/parser.cc:52002
  #, gcc-internal-format
  msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%> or identifier"
  msgstr ""
  
! #: c/c-parser.cc:18710 cp/parser.cc:41115
  #, gcc-internal-format
  msgid "both %<monotonic%> and %<nonmonotonic%> modifiers specified"
  msgstr ""
  
! #: c/c-parser.cc:18764 cp/parser.cc:41131
  #, gcc-internal-format
  msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
  msgstr ""
  
! #: c/c-parser.cc:18768 cp/parser.cc:41134
  #, gcc-internal-format
  msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
  msgstr ""
  
! #: c/c-parser.cc:18781 cp/semantics.cc:8297
  #, gcc-internal-format
  msgid "chunk size value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:18804 cp/parser.cc:41154
  #, fuzzy, gcc-internal-format
  #| msgid "invalid %%-code"
  msgid "invalid schedule kind"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ %%-ÐºÐ¾Ð´"
  
! #: c/c-parser.cc:18943 c/c-parser.cc:18954
  #, gcc-internal-format
  msgid "%<num_teams%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:18962 cp/semantics.cc:8264
  #, gcc-internal-format
  msgid "%<num_teams%> lower bound %qE bigger than upper bound %qE"
  msgstr ""
  
! #: c/c-parser.cc:19011 cp/semantics.cc:8393
  #, gcc-internal-format
  msgid "%<thread_limit%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:19056 cp/semantics.cc:8521
  #, gcc-internal-format
  msgid "%<aligned%> clause alignment expression must be positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:19168 c/c-parser.cc:22457 cp/parser.cc:44093
  #, gcc-internal-format
  msgid "expected %<allocator%> or %<align%>"
  msgstr ""
  
! #: c/c-parser.cc:19175
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `%s'"
  msgid "duplicate %qs modifier"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½ÑŒÐ½Ðµ `%s'"
  
! #: c/c-parser.cc:19223 cp/semantics.cc:8654
  #, gcc-internal-format
  msgid "%<allocate%> clause allocator expression has type %qT rather than %<omp_allocator_handle_t%>"
  msgstr ""
  
! #: c/c-parser.cc:19234 cp/semantics.cc:8609 cp/semantics.cc:8625
  #, gcc-internal-format
  msgid "%<allocate%> clause %<align%> modifier argument needs to be positive constant power of two integer expression"
  msgstr ""
  
! #: c/c-parser.cc:19353 cp/parser.cc:41693
  #, gcc-internal-format
  msgid "multiple linear modifiers"
  msgstr ""
  
! #: c/c-parser.cc:19365 cp/parser.cc:41706
  #, gcc-internal-format
  msgid "multiple %<step%> modifiers"
  msgstr ""
  
! #: c/c-parser.cc:19373 c/c-parser.cc:19401
  #, gcc-internal-format
  msgid "%<linear%> clause step expression must be integral"
  msgstr ""
  
! #: c/c-parser.cc:19453
  #, gcc-internal-format
  msgid "%<safelen%> clause expression must be positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:19492
  #, gcc-internal-format
  msgid "%<simdlen%> clause expression must be positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:19852 cp/parser.cc:42253
  #, gcc-internal-format
  msgid "%<iterator%> modifier incompatible with %qs"
  msgstr ""
  
! #: c/c-parser.cc:19900 cp/parser.cc:42308 cp/parser.cc:42760 cp/parser.cc:42827
  #, fuzzy, gcc-internal-format
  #| msgid "invalid %%d operand"
  msgid "invalid depend kind"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ %%d Ð°Ð¿ÐµÑ€Ð°Ð½Ð´"
  
! #: c/c-parser.cc:19961 cp/parser.cc:42338
  #, fuzzy, gcc-internal-format
  #| msgid "invalid mask"
  msgid "invalid doacross kind"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ñ� Ð¼Ð°Ñ�ÐºÐ°"
  
! #: c/c-parser.cc:20030 cp/parser.cc:42481
  #, gcc-internal-format
  msgid "too many %<always%> modifiers"
  msgstr ""
  
! #: c/c-parser.cc:20040 cp/parser.cc:42494
  #, gcc-internal-format
  msgid "too many %<close%> modifiers"
  msgstr ""
  
! #: c/c-parser.cc:20050 cp/parser.cc:42507
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<present%> modifiers"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ ÑƒÐ²Ð°Ñ…Ð¾Ð´Ð·Ñ�Ñ‡Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð°Ñž"
  
! #: c/c-parser.cc:20058 cp/parser.cc:42518
  #, gcc-internal-format
  msgid "%<map%> clause with map-type modifier other than %<always%>, %<close%> or %<present%>"
  msgstr ""
  
! #: c/c-parser.cc:20096 cp/parser.cc:42558
  #, fuzzy, gcc-internal-format
  #| msgid "invalid mask"
  msgid "invalid map kind"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ñ� Ð¼Ð°Ñ�ÐºÐ°"
  
! #: c/c-parser.cc:20148 cp/parser.cc:42622
  #, gcc-internal-format
  msgid "%<ancestor%> device modifier not preceded by %<requires%> directive with %<reverse_offload%> clause"
  msgstr ""
  
! #: c/c-parser.cc:20160 cp/parser.cc:42633
  #, gcc-internal-format
  msgid "expected %<ancestor%> or %<device_num%>"
  msgstr ""
  
! #: c/c-parser.cc:20183 cp/semantics.cc:8418
  #, gcc-internal-format
  msgid "the %<device%> clause expression must evaluate to %<1%>"
  msgstr ""
  
! #: c/c-parser.cc:20216 cp/parser.cc:42704
  #, gcc-internal-format
  msgid "invalid dist_schedule kind"
  msgstr ""
  
! #: c/c-parser.cc:20295
  #, fuzzy, gcc-internal-format
  msgid "invalid proc_bind kind"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ %s"
  
! #: c/c-parser.cc:20339
  #, gcc-internal-format
  msgid "expected %<host%>, %<nohost%> or %<any%>"
  msgstr ""
  
! #: c/c-parser.cc:20445 cp/semantics.cc:9665 cp/semantics.cc:9683
  #, gcc-internal-format
  msgid "%<partial%> argument needs positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:20546 cp/semantics.cc:8837
  #, gcc-internal-format
  msgid "%<detach%> clause event handle has type %qT rather than %<omp_event_handle_t%>"
  msgstr ""
  
! #: c/c-parser.cc:20617 c/c-parser.cc:20711 cp/parser.cc:42887
! #: cp/parser.cc:42999
  #, gcc-internal-format
  msgid "string literal must not contain %<\\0%>"
  msgstr ""
  
! #: c/c-parser.cc:20626 c/c-parser.cc:20747 cp/parser.cc:42894
! #: cp/parser.cc:43034
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown foreign runtime identifier %qs"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð°: %s"
  
! #: c/c-parser.cc:20641 c/c-parser.cc:20770 cp/parser.cc:42909
! #: cp/parser.cc:43056
  #, gcc-internal-format
  msgid "expected string literal or constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:20649 c/c-parser.cc:20778 cp/parser.cc:42917
! #: cp/parser.cc:43064 cp/semantics.cc:7513
  #, gcc-internal-format
  msgid "unknown foreign runtime identifier %qwd"
  msgstr ""
  
! #: c/c-parser.cc:20687 cp/parser.cc:42976
  #, gcc-internal-format
  msgid "expected %<fr%> or %<attr%> preference selector"
  msgstr ""
  
! #: c/c-parser.cc:20695 cp/parser.cc:42984
  #, gcc-internal-format
  msgid "duplicated %<fr%> preference selector"
  msgstr ""
  
! #: c/c-parser.cc:20721 cp/parser.cc:43008
  #, gcc-internal-format
  msgid "%<attr%> string literal must start with %<ompx_%>"
  msgstr ""
  
! #: c/c-parser.cc:20729 cp/parser.cc:43015
  #, gcc-internal-format
  msgid "%<attr%> string literal must not contain a comma"
  msgstr ""
  
! #: c/c-parser.cc:20741 cp/parser.cc:43027
  #, gcc-internal-format
  msgid "non-empty string literal expected"
  msgstr ""
  
! #: c/c-parser.cc:20851 cp/parser.cc:43167
  #, gcc-internal-format
  msgid "duplicate %<targetsync%> modifier"
  msgstr ""
  
! #: c/c-parser.cc:20858 cp/parser.cc:43174
  #, gcc-internal-format
  msgid "duplicate %<target%> modifier"
  msgstr ""
  
! #: c/c-parser.cc:20865 cp/parser.cc:43181
  #, gcc-internal-format
  msgid "duplicate %<prefer_type%> modifier"
  msgstr ""
  
! #: c/c-parser.cc:20886 cp/parser.cc:43202
  #, gcc-internal-format
  msgid "expected %<prefer_type%>, %<target%>, or %<targetsync%>"
  msgstr ""
  
! #: c/c-parser.cc:20922 c/c-parser.cc:27195 cp/parser.cc:43239
! #: cp/parser.cc:50642
  #, gcc-internal-format
  msgid "missing required %<target%> and/or %<targetsync%> modifier"
  msgstr ""
  
! #: c/c-parser.cc:21163 cp/parser.cc:43534
  #, gcc-internal-format
  msgid "expected an OpenACC clause"
  msgstr ""
  
! #: c/c-parser.cc:21174 c/c-parser.cc:21571 c/c-parser.cc:29156
! #: cp/parser.cc:43545 cp/parser.cc:43998 cp/parser.cc:51484
  #, fuzzy, gcc-internal-format
  #| msgid "complex invalid for `%s'"
  msgid "%qs is not valid for %qs"
  msgstr "complex Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð´Ð»Ñ� \"%s\""
  
! #: c/c-parser.cc:21219 cp/parser.cc:43593
  #, gcc-internal-format
  msgid "clauses in %<simd%> trait should be separated by %<,%>"
  msgstr ""
  
! #: c/c-parser.cc:21372 cp/parser.cc:43786
  #, gcc-internal-format
  msgid "%qs must be the first clause of %qs"
  msgstr ""
  
! #: c/c-parser.cc:21560 cp/parser.cc:43987
  #, gcc-internal-format
  msgid "expected an OpenMP clause"
  msgstr ""
  
! #: c/c-parser.cc:21721 cp/parser.cc:49174
  #, gcc-internal-format
  msgid "no valid clauses specified in %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21731 cp/parser.cc:49184
  #, gcc-internal-format
  msgid "array section in %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21751 cp/parser.cc:49204
  #, gcc-internal-format
  msgid "%qD must be a global variable in %<#pragma acc declare link%>"
  msgstr ""
  
! #: c/c-parser.cc:21762 cp/parser.cc:49215
  #, gcc-internal-format
  msgid "invalid OpenACC clause at file scope"
  msgstr ""
  
! #: c/c-parser.cc:21769 cp/parser.cc:49222
  #, gcc-internal-format
  msgid "invalid use of %<extern%> variable %qD in %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21777 cp/parser.cc:49230
  #, gcc-internal-format
  msgid "invalid use of %<global%> variable %qD in %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21788 cp/parser.cc:49252
  #, gcc-internal-format
  msgid "%qD must be a variable declared in the same scope as %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21798 cp/parser.cc:49275
  #, gcc-internal-format
  msgid "variable %qD used more than once with %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21891 cp/parser.cc:49359
  #, gcc-internal-format
  msgid "expected %<data%> after %<#pragma acc %s%>"
  msgstr ""
  
! #: c/c-parser.cc:21907 cp/parser.cc:49376
  #, gcc-internal-format
  msgid "%<#pragma acc %s data%> has no data movement clause"
  msgstr ""
  
! #: c/c-parser.cc:21939 cp/parser.cc:49134
  #, gcc-internal-format
  msgid "%<host_data%> construct requires %<use_device%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22168 cp/parser.cc:3533
  #, gcc-internal-format
  msgid "%qE has not been declared"
  msgstr ""
  
! #: c/c-parser.cc:22172
  #, gcc-internal-format
  msgid "expected function name"
  msgstr ""
  
! #: c/c-parser.cc:22190 cp/parser.cc:52819
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function,"
  msgid "%qD does not refer to a function"
  msgstr "`%D' - Ð³Ñ�Ñ‚Ð° Ð½Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�,"
  
! #: c/c-parser.cc:22213 c/c-parser.cc:22261 cp/parser.cc:1779
  #, gcc-internal-format
  msgid "%<#pragma acc routine%> not immediately followed by function declaration or definition"
  msgstr ""
  
! #: c/c-parser.cc:22253 cp/parser.cc:52870 cp/parser.cc:52917
  #, gcc-internal-format
  msgid "%<#pragma acc routine%> not immediately followed by a single function declaration or definition"
  msgstr ""
  
! #: c/c-parser.cc:22284 cp/parser.cc:52945
  #, gcc-internal-format
  msgid "%<#pragma acc routine%> must be applied before use"
  msgstr ""
  
! #: c/c-parser.cc:22285 cp/parser.cc:52947
  #, gcc-internal-format
  msgid "%<#pragma acc routine%> must be applied before definition"
  msgstr ""
  
! #: c/c-parser.cc:22330 cp/parser.cc:49592
  #, gcc-internal-format
  msgid "%<#pragma acc update%> must contain at least one %<device%> or %<host%> or %<self%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22388
  #, gcc-internal-format
  msgid "variable %qD used in the %<allocator%> clause must be declared before %qD"
  msgstr ""
  
! #: c/c-parser.cc:22392 c/c-parser.cc:22415
  #, gcc-internal-format
  msgid "to be allocated variable declared here"
  msgstr ""
  
! #: c/c-parser.cc:22410
  #, gcc-internal-format
  msgid "variable %qD used in the %<allocator%> clause must not be modified between declaration of %qD and its %<allocate%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22413
  #, fuzzy, gcc-internal-format
  #| msgid "`O' modifier"
  msgid "modified here"
  msgstr "'O' Ð¼Ð°Ð´Ñ‹Ñ„Ñ–ÐºÐ°Ñ‚Ð°Ñ€"
  
! #: c/c-parser.cc:22481 cp/parser.cc:44113 cp/parser.cc:44128
  #, gcc-internal-format
  msgid "%<align%> clause argument needs to be positive constant power of two integer expression"
  msgstr ""
  
! #: c/c-parser.cc:22505
  #, gcc-internal-format
  msgid "%<allocator%> clause allocator expression has type %qT rather than %<omp_allocator_handle_t%>"
  msgstr ""
  
! #: c/c-parser.cc:22522
  #, gcc-internal-format
  msgid "function parameter %qD may not appear as list item in an %<allocate%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22529
  #, gcc-internal-format
  msgid "%<allocate%> directive must be in the same scope as %qD"
  msgstr ""
  
! #: c/c-parser.cc:22537
  #, gcc-internal-format
  msgid "%qD already appeared as list item in an %<allocate%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22546
  #, gcc-internal-format
  msgid "%<allocator%> clause required for static variable %qD"
  msgstr ""
  
! #: c/c-parser.cc:22557
  #, gcc-internal-format
  msgid "%<allocator%> clause requires a predefined allocator as %qD is static"
  msgstr ""
  
! #: c/c-parser.cc:22708 cp/parser.cc:44293
  #, gcc-internal-format
  msgid "expected %<read%>, %<write%>, %<update%>, or %<capture%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22747 cp/parser.cc:44332
  #, gcc-internal-format
  msgid "expected %<seq_cst%>, %<acquire%> or %<relaxed%>"
  msgstr ""
  
! #: c/c-parser.cc:22771 cp/parser.cc:44361
  #, gcc-internal-format
  msgid "expected %<read%>, %<write%>, %<update%>, %<capture%>, %<compare%>, %<weak%>, %<fail%>, %<seq_cst%>, %<acq_rel%>, %<release%>, %<relaxed%> or %<hint%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22786 cp/parser.cc:44376
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many atomic clauses"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ ÑƒÐ²Ð°Ñ…Ð¾Ð´Ð·Ñ�Ñ‡Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð°Ñž"
  
! #: c/c-parser.cc:22793 cp/parser.cc:44383
  #, gcc-internal-format
  msgid "too many memory order clauses"
  msgstr ""
  
! #: c/c-parser.cc:22831 c/c-parser.cc:22838 cp/parser.cc:44421
! #: cp/parser.cc:44428
  #, gcc-internal-format
  msgid "%qs clause is incompatible with %<read%> or %<write%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:22844 c/c-parser.cc:22849 cp/parser.cc:44434
! #: cp/parser.cc:44439
  #, gcc-internal-format
  msgid "%qs clause requires %qs clause"
  msgstr ""
  
! #: c/c-parser.cc:22872 cp/parser.cc:44462
  #, gcc-internal-format
  msgid "%<#pragma omp atomic write%> incompatible with %<acquire%> clause implicitly provided by a %<requires%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22883 cp/parser.cc:44473
  #, gcc-internal-format
  msgid "%<#pragma omp atomic read%> incompatible with %<release%> clause implicitly provided by a %<requires%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22915 cp/parser.cc:44505
  #, gcc-internal-format
  msgid "%<#pragma omp atomic read%> incompatible with %<release%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22925 cp/parser.cc:44515
  #, gcc-internal-format
  msgid "%<#pragma omp atomic write%> incompatible with %<acquire%> clause"
  msgstr ""
  
! #: c/c-parser.cc:23046 cp/parser.cc:44615
  #, gcc-internal-format
  msgid "expected %<==%> comparison in %<if%> condition"
  msgstr ""
  
! #: c/c-parser.cc:23053 cp/parser.cc:44622
  #, gcc-internal-format
  msgid "expected %<==%>, %<<%> or %<>%> comparison in %<if%> condition"
  msgstr ""
  
! #: c/c-parser.cc:23126 cp/parser.cc:44687 cp/parser.cc:44970 cp/parser.cc:45064
! #: cp/parser.cc:45082
  #, gcc-internal-format
  msgid "invalid form of %<#pragma omp atomic compare%>"
  msgstr ""
  
! #: c/c-parser.cc:23137 cp/parser.cc:44698
  #, gcc-internal-format
  msgid "unexpected %<else%>"
  msgstr ""
  
! #: c/c-parser.cc:23197 cp/parser.cc:45137
  #, gcc-internal-format
  msgid "invalid form of %<pragma omp atomic compare%>"
  msgstr ""
  
! #: c/c-parser.cc:23468 cp/parser.cc:44991 cp/parser.cc:45017
  #, gcc-internal-format
  msgid "invalid form of %<#pragma omp atomic%>"
  msgstr ""
  
! #: c/c-parser.cc:23472 cp/parser.cc:45057 cp/parser.cc:45091
  #, gcc-internal-format
  msgid "invalid operator for %<#pragma omp atomic%>"
  msgstr ""
  
! #: c/c-parser.cc:23523 cp/parser.cc:45126
  #, gcc-internal-format
  msgid "%<weak%> clause requires atomic equality comparison"
  msgstr ""
  
! #: c/c-parser.cc:23529 cp/semantics.cc:11909 cp/semantics.cc:11919
  #, gcc-internal-format
  msgid "%<#pragma omp atomic capture%> uses two different expressions for memory"
  msgstr ""
  
! #: c/c-parser.cc:23632 cp/semantics.cc:11996
  #, gcc-internal-format
  msgid "%<depobj%> expression is not lvalue expression"
  msgstr ""
  
! #: c/c-parser.cc:23675
  #, gcc-internal-format
  msgid "%<destroy%> expression is not lvalue expression"
  msgstr ""
  
! #: c/c-parser.cc:23681 cp/parser.cc:45279
  #, gcc-internal-format
  msgid "the %<destroy%> expression %qE should be the same as the %<depobj%> argument %qE"
  msgstr ""
  
! #: c/c-parser.cc:23712 cp/parser.cc:45315
  #, gcc-internal-format
  msgid "expected %<in%>, %<out%>, %<inout%>, %<mutexinoutset%> or %<inoutset%>"
  msgstr ""
  
! #: c/c-parser.cc:23724 cp/parser.cc:45331
  #, gcc-internal-format
  msgid "expected %<depend%>, %<destroy%> or %<update%> clause"
  msgstr ""
  
! #: c/c-parser.cc:23765 cp/parser.cc:45369
  #, gcc-internal-format
  msgid "expected %<seq_cst%>, %<acq_rel%>, %<release%> or %<acquire%>"
  msgstr ""
  
! #: c/c-parser.cc:23773 cp/parser.cc:45377
  #, gcc-internal-format
  msgid "%<flush%> list specified together with memory order clause"
  msgstr ""
  
! #: c/c-parser.cc:23778
  #, gcc-internal-format
  msgid "expected %<(%> or end of line"
  msgstr ""
  
! #: c/c-parser.cc:23849 cp/parser.cc:46098
  #, gcc-internal-format
  msgid "%<[[omp::directive(%s)]]%> must be the only specified attribute on a statement"
  msgstr ""
  
! #: c/c-parser.cc:23916 cp/parser.cc:46167
  #, gcc-internal-format
  msgid "%<#pragma omp scan%> with zero preceding executable statements"
  msgstr ""
  
! #: c/c-parser.cc:23950 cp/parser.cc:46200
  #, gcc-internal-format
  msgid "expected %<inclusive%> or %<exclusive%> clause"
  msgstr ""
  
! #: c/c-parser.cc:23955 cp/parser.cc:46206
  #, gcc-internal-format
  msgid "expected %<#pragma omp scan%>"
  msgstr ""
  
! #: c/c-parser.cc:23964 cp/parser.cc:46215
  #, gcc-internal-format
  msgid "%<#pragma omp scan%> with zero succeeding executable statements"
  msgstr ""
  
! #: c/c-parser.cc:23989 cp/parser.cc:46238
  #, fuzzy, gcc-internal-format
  msgid "for statement expected"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
*************** msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼
*** 50385,50954 ****
  #. Don't call cp_parser_error here since it overrides the
  #. provided message with a more confusing one if there was
  #. a bad pragma or attribute directive.
! #: c/c-parser.cc:23973 cp/parser.cc:46201 cp/parser.cc:46203 cp/parser.cc:46388
  #, gcc-internal-format
  msgid "loop nest expected"
  msgstr ""
  
! #: c/c-parser.cc:24025 cp/parser.cc:46276
  #, gcc-internal-format
  msgid "attributes other than OpenMP directives are not allowed on %<for%> in loop nest"
  msgstr ""
  
! #: c/c-parser.cc:24054 cp/parser.cc:46307
  #, gcc-internal-format
  msgid "%<unroll%> construct with %<partial%> clause generates just one loop with canonical form but %d loops are needed"
  msgstr ""
  
! #: c/c-parser.cc:24065 cp/parser.cc:46318
  #, gcc-internal-format
  msgid "generated loop of %<unroll%> construct without %<partial%> clause does not have canonical form"
  msgstr ""
  
! #: c/c-parser.cc:24088 cp/parser.cc:46344
  #, gcc-internal-format
  msgid "%<tile%> construct generates %d loops with canonical form but %d loops are needed"
  msgstr ""
  
! #: c/c-parser.cc:24099 cp/parser.cc:46355
  #, gcc-internal-format
  msgid "expected %<for%> loop or OpenMP loop transformation construct"
  msgstr ""
  
! #: c/c-parser.cc:24187 cp/semantics.cc:11471 cp/semantics.cc:11564
  #, gcc-internal-format
  msgid "expected iteration declaration or initialization"
  msgstr ""
  
! #: c/c-parser.cc:24276 c/c-parser.cc:24291 cp/parser.cc:46682
! #: cp/parser.cc:46697
  #, gcc-internal-format
  msgid "not enough nested loops"
  msgstr ""
  
! #: c/c-parser.cc:24394 cp/parser.cc:46982
  #, gcc-internal-format
  msgid "%<ordered%> clause parameter is less than %<collapse%>"
  msgstr ""
  
! #: c/c-parser.cc:24517 cp/parser.cc:46517 cp/parser.cc:46560 cp/pt.cc:18586
  #, gcc-internal-format
  msgid "iteration variable %qD should not be firstprivate"
  msgstr ""
  
! #: c/c-parser.cc:24951 cp/parser.cc:47528
  #, gcc-internal-format
  msgid "%<#pragma omp ordered%> with %qs clause may only be used in compound statements"
  msgstr ""
  
! #: c/c-parser.cc:25167 cp/parser.cc:47734
  #, gcc-internal-format
  msgid "expected %<for%> after %qs"
  msgstr ""
  
! #: c/c-parser.cc:25380 c/c-parser.cc:25388
  #, gcc-internal-format
  msgid "expected a function name"
  msgstr ""
  
! #: c/c-parser.cc:25401 cp/parser.cc:50217
  #, gcc-internal-format
  msgid "expected target-function call"
  msgstr ""
  
! #: c/c-parser.cc:25471
  #, gcc-internal-format
  msgid "%<#pragma omp dispatch%> must be followed by a function call with optional assignment"
  msgstr ""
  
! #: c/c-parser.cc:25658 cp/parser.cc:48081
  #, gcc-internal-format
  msgid "expected %<point%>"
  msgstr ""
  
! #: c/c-parser.cc:25925 cp/parser.cc:48368
  #, gcc-internal-format
  msgid "%<#pragma omp target data%> with map-type other than %<to%>, %<from%>, %<tofrom%> or %<alloc%> on %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:25941 cp/parser.cc:48384
  #, gcc-internal-format
  msgid "%<#pragma omp target data%> must contain at least one %<map%>, %<use_device_ptr%> or %<use_device_addr%> clause"
  msgstr ""
  
! #: c/c-parser.cc:25989 cp/parser.cc:48665
  #, gcc-internal-format
  msgid "%<#pragma omp target update%> must contain at least one %<from%> or %<to%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:26091 cp/parser.cc:48491
  #, gcc-internal-format
  msgid "%<#pragma omp target enter data%> with map-type other than %<to%>, %<tofrom%> or %<alloc%> on %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26103 cp/parser.cc:48503
  #, gcc-internal-format
  msgid "%<#pragma omp target enter data%> must contain at least one %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26202 cp/parser.cc:48608
  #, gcc-internal-format
  msgid "%<#pragma omp target exit data%> with map-type other than %<from%>, %<tofrom%>, %<release%> or %<delete%> on %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26215 cp/parser.cc:48621
  #, gcc-internal-format
  msgid "%<#pragma omp target exit data%> must contain at least one %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26460 cp/semantics.cc:10974
  #, gcc-internal-format
  msgid "%<#pragma omp target%> with map-type other than %<to%>, %<from%>, %<tofrom%> or %<alloc%> on %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26521
  #, gcc-internal-format
  msgid "%<#pragma omp declare %s%> must be followed by function declaration or definition or another %<#pragma omp declare %s%>"
  msgstr ""
  
! #: c/c-parser.cc:26572 c/c-parser.cc:26610
  #, gcc-internal-format
  msgid "%<#pragma omp declare %s%> must be followed by function declaration or definition"
  msgstr ""
  
! #: c/c-parser.cc:26643 cp/parser.cc:49677
  #, gcc-internal-format
  msgid "expected trait selector name"
  msgstr ""
  
! #: c/c-parser.cc:26655 cp/parser.cc:49691
  #, gcc-internal-format
  msgid "unknown selector %qs for context selector set %qs"
  msgstr ""
  
! #: c/c-parser.cc:26683 cp/parser.cc:49720
  #, gcc-internal-format
  msgid "selector %qs does not accept any properties"
  msgstr ""
  
! #: c/c-parser.cc:26705 cp/parser.cc:49752
  #, gcc-internal-format
  msgid "%<score%> cannot be specified in traits in the %qs trait-selector-set"
  msgstr ""
  
! #: c/c-parser.cc:26714 cp/parser.cc:49762 cp/pt.cc:18254
  #, gcc-internal-format
  msgid "%<score%> argument must be constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:26717 cp/parser.cc:49765 cp/pt.cc:18261
  #, gcc-internal-format
  msgid "%<score%> argument must be non-negative"
  msgstr ""
  
! #: c/c-parser.cc:26758 cp/parser.cc:49811
  #, gcc-internal-format
  msgid "expected identifier or string literal"
  msgstr ""
  
! #: c/c-parser.cc:26781 cp/parser.cc:49841 cp/pt.cc:18278
  #, gcc-internal-format
  msgid "property must be integer expression"
  msgstr ""
  
! #: c/c-parser.cc:26794 cp/parser.cc:49852
  #, gcc-internal-format
  msgid "properties for %<simd%> selector may not be specified in %<metadirective%>"
  msgstr ""
  
! #: c/c-parser.cc:26815 cp/parser.cc:49868 fortran/openmp.cc:6534
  #, gcc-internal-format
  msgid "%<requires%> selector is not supported yet"
  msgstr ""
  
! #: c/c-parser.cc:26874 cp/parser.cc:49931
  #, gcc-internal-format
  msgid "expected context selector set name"
  msgstr ""
  
! #: c/c-parser.cc:26986 cp/parser.cc:50435
  #, gcc-internal-format
  msgid "expected %<match%>, %<adjust_args%> or %<append_args%> clause"
  msgstr ""
  
! #: c/c-parser.cc:27002 cp/parser.cc:50448
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<match%> clauses"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ ÑƒÐ²Ð°Ñ…Ð¾Ð´Ð·Ñ�Ñ‡Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð°Ñž"
  
! #: c/c-parser.cc:27013
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function,"
  msgid "variant %qD is not a function"
  msgstr "`%D' - Ð³Ñ�Ñ‚Ð° Ð½Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�,"
  
! #: c/c-parser.cc:27028 cp/decl.cc:8621
  #, gcc-internal-format
  msgid "variant %qD is a built-in"
  msgstr ""
  
! #: c/c-parser.cc:27074 cp/parser.cc:50510
  #, gcc-internal-format
  msgid "%qD is specified more than once"
  msgstr ""
  
! #: c/c-parser.cc:27081
  #, fuzzy, gcc-internal-format
  msgid "%qD is not of pointer type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-parser.cc:27101 cp/parser.cc:50543
  #, gcc-internal-format
  msgid "expected %<nothing%> or %<need_device_ptr%>"
  msgstr ""
  
! #: c/c-parser.cc:27104
  #, gcc-internal-format
  msgid "%<need_device_addr%> is not valid for C"
  msgstr ""
  
! #: c/c-parser.cc:27111 cp/parser.cc:50550
  #, gcc-internal-format
  msgid "expected %<nothing%> or %<need_device_ptr%> followed by %<:%>"
  msgstr ""
  
! #: c/c-parser.cc:27131 cp/parser.cc:50567
  #, gcc-internal-format
  msgid "expected %<interop%>"
  msgstr ""
  
! #: c/c-parser.cc:27229 cp/decl.cc:8603
  #, fuzzy, gcc-internal-format
  msgid "argument %d of %qD must be of %<omp_interop_t%>"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: c/c-parser.cc:27231 cp/decl.cc:8500 cp/decl.cc:8606
  #, gcc-internal-format
  msgid "%<append_args%> specified here"
  msgstr ""
  
! #: c/c-parser.cc:27277 cp/decl.cc:8612
  #, fuzzy, gcc-internal-format
  msgid "variant %qD and base %qD have incompatible types"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-parser.cc:27302 cp/parser.cc:50635
  #, gcc-internal-format
  msgid "an %qs clause requires a %<match%> clause"
  msgstr ""
  
! #: c/c-parser.cc:27315
  #, gcc-internal-format
  msgid "an %qs clause can only be specified if the %<dispatch%> selector of the %<construct%> selector set appears in the %<match%> clause"
  msgstr ""
  
! #: c/c-parser.cc:27358
  #, gcc-internal-format
  msgid "%<#pragma omp declare %s%> not immediately followed by a function declaration or definition"
  msgstr ""
  
! #: c/c-parser.cc:27366 cp/parser.cc:50680
  #, gcc-internal-format
  msgid "%<#pragma omp declare %s%> not immediately followed by a single function declaration or definition"
  msgstr ""
  
! #: c/c-parser.cc:27573 cp/parser.cc:50969
  #, gcc-internal-format
  msgid "%qD specified both in declare target %<link%> and %qs clauses"
  msgstr ""
  
! #: c/c-parser.cc:27577 cp/parser.cc:50973
  #, gcc-internal-format
  msgid "%qD specified both in declare target %<link%> and %<to%> or %<enter%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:27637 cp/parser.cc:51106
  #, gcc-internal-format
  msgid "directive with only %<device_type%> or %<indirect%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:27640 cp/parser.cc:51109
  #, gcc-internal-format
  msgid "%<device_type%> clause must specify 'any' when used with an %<indirect%> clause"
  msgstr ""
  
! #: c/c-parser.cc:27689 c/c-parser.cc:27731 cp/parser.cc:51164
! #: cp/parser.cc:51211
  #, gcc-internal-format
  msgid "expected %<target%>"
  msgstr ""
  
! #: c/c-parser.cc:27703 cp/parser.cc:51177
  #, gcc-internal-format
  msgid "expected %<declare target%> or %<assumes%>"
  msgstr ""
  
! #: c/c-parser.cc:27738 cp/parser.cc:51218
  #, gcc-internal-format
  msgid "%<#pragma omp end declare target%> without corresponding %<#pragma omp declare target%> or %<#pragma omp begin declare target%>"
  msgstr ""
  
! #: c/c-parser.cc:27749 c/c-parser.cc:27780 cp/parser.cc:51229
! #: cp/parser.cc:51260
  #, gcc-internal-format
  msgid "%qs in attribute syntax terminated with %qs in pragma syntax"
  msgstr ""
  
! #: c/c-parser.cc:27756 c/c-parser.cc:27785 cp/parser.cc:51236
! #: cp/parser.cc:51265
  #, gcc-internal-format
  msgid "%qs in pragma syntax terminated with %qs in attribute syntax"
  msgstr ""
  
! #: c/c-parser.cc:27793 cp/parser.cc:51273
  #, gcc-internal-format
  msgid "expected %<declare%> or %<assumes%>"
  msgstr ""
  
! #: c/c-parser.cc:27820
  #, gcc-internal-format
  msgid "%<#pragma omp declare reduction%> not at file or block scope"
  msgstr ""
  
! #: c/c-parser.cc:27897
  #, gcc-internal-format
  msgid "predeclared arithmetic type in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:27901
  #, gcc-internal-format
  msgid "function or array type in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:27904
  #, gcc-internal-format
  msgid "%<_Atomic%> qualified type in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:27907
  #, gcc-internal-format
  msgid "const, volatile or restrict qualified type in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:27915
  #, gcc-internal-format
  msgid "redeclaration of %qs %<#pragma omp declare reduction%> for type %qT"
  msgstr ""
  
! #: c/c-parser.cc:27924
  #, gcc-internal-format
  msgid "previous %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:28045
  #, gcc-internal-format
  msgid "expected %<omp_priv%> or function-name"
  msgstr ""
  
! #: c/c-parser.cc:28056
  #, gcc-internal-format
  msgid "expected function-name %<(%>"
  msgstr ""
  
! #: c/c-parser.cc:28075
  #, gcc-internal-format
  msgid "one of the initializer call arguments should be %<&omp_priv%>"
  msgstr ""
  
! #: c/c-parser.cc:28209 cp/parser.cc:52195
  #, gcc-internal-format
  msgid "expected %<simd%>, %<reduction%>, %<target%> or %<variant%>"
  msgstr ""
  
! #: c/c-parser.cc:28280 cp/parser.cc:52288
  #, gcc-internal-format
  msgid "expected %<acq_rel%>, %<acquire%>, %<relaxed%>, %<release%> or %<seq_cst%>"
  msgstr ""
  
! #: c/c-parser.cc:28309 cp/parser.cc:52323
  #, gcc-internal-format
  msgid "expected %<unified_address%>, %<unified_shared_memory%>, %<self_maps%>, %<dynamic_allocators%>, %<reverse_offload%> or %<atomic_default_mem_order%> clause"
  msgstr ""
  
! #: c/c-parser.cc:28328 cp/parser.cc:52342
  #, gcc-internal-format
  msgid "%qs clause used lexically after first target construct or offloading API"
  msgstr ""
  
! #: c/c-parser.cc:28340 cp/parser.cc:52354
  #, gcc-internal-format
  msgid "more than one %<atomic_default_mem_order%> clause in a single compilation unit"
  msgstr ""
  
! #: c/c-parser.cc:28349 cp/parser.cc:52363
  #, gcc-internal-format
  msgid "%<atomic_default_mem_order%> clause used lexically after first %<atomic%> construct without memory order clause"
  msgstr ""
  
! #: c/c-parser.cc:28363 cp/parser.cc:52377
  #, gcc-internal-format
  msgid "%<pragma omp requires%> requires at least one clause"
  msgstr ""
  
! #: c/c-parser.cc:28382
  #, gcc-internal-format
  msgid "zero sized type %qT in %<reduction%> clause"
  msgstr ""
  
! #: c/c-parser.cc:28388
  #, gcc-internal-format
  msgid "variable sized type %qT in %<reduction%> clause"
  msgstr ""
  
! #: c/c-parser.cc:28506 cp/parser.cc:48884
  #, gcc-internal-format
  msgid "expected %<sizes%>"
  msgstr ""
  
! #: c/c-parser.cc:28535 cp/semantics.cc:9567 cp/semantics.cc:9584
  #, gcc-internal-format
  msgid "%<sizes%> argument needs positive integral constant"
  msgstr ""
  
! #: c/c-parser.cc:28651 cp/parser.cc:52434
  #, gcc-internal-format
  msgid "expected %<at%>, %<severity%> or %<message%> clause"
  msgstr ""
  
! #: c/c-parser.cc:28684 cp/parser.cc:52469
  #, gcc-internal-format
  msgid "expected %qs or %qs"
  msgstr ""
  
! #: c/c-parser.cc:28741 cp/parser.cc:52531
  #, gcc-internal-format
  msgid "%<#pragma omp error%> with %<at(execution)%> clause may only be used in compound statements"
  msgstr ""
  
! #: c/c-parser.cc:28764 cp/parser.cc:52558
  #, gcc-internal-format
  msgid "%<pragma omp error%> encountered: %s"
  msgstr ""
  
! #: c/c-parser.cc:28767 cp/parser.cc:52561
  #, gcc-internal-format
  msgid "%<pragma omp error%> encountered"
  msgstr ""
  
! #: c/c-parser.cc:28794 cp/parser.cc:49992
  #, gcc-internal-format
  msgid "expected at least one assumption clause"
  msgstr ""
  
! #: c/c-parser.cc:28880 c/c-parser.cc:29181 cp/parser.cc:50078
! #: cp/parser.cc:51497 cp/parser.cc:51525
  #, gcc-internal-format
  msgid "expected directive name"
  msgstr ""
  
! #: c/c-parser.cc:28891 cp/parser.cc:50089
  #, gcc-internal-format
  msgid "invalid OpenMP directive name in %qs clause argument: declarative, informational, and meta directives not permitted"
  msgstr ""
  
! #: c/c-parser.cc:28899 cp/parser.cc:50097
  #, gcc-internal-format
  msgid "unknown OpenMP directive name in %qs clause argument"
  msgstr ""
  
! #: c/c-parser.cc:28906 cp/parser.cc:50104
  #, gcc-internal-format
  msgid "%<%s%s%s%s%s%> directive mentioned in both %<absent%> and %<contains%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:28917 cp/parser.cc:50115
  #, gcc-internal-format
  msgid "%<%s%s%s%s%s%> directive mentioned multiple times in %qs clauses"
  msgstr ""
  
! #: c/c-parser.cc:28940 cp/parser.cc:50142
  #, fuzzy, gcc-internal-format
  msgid "unknown assumption clause %qs"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð°: %s\n"
  
! #: c/c-parser.cc:28953 cp/parser.cc:50152
  #, gcc-internal-format
  msgid "expected assumption clause"
  msgstr ""
  
! #: c/c-parser.cc:29082 cp/parser.cc:51395
  #, gcc-internal-format
  msgid "expected %<when%>, %<otherwise%>, or %<default%> clause"
  msgstr ""
  
! #: c/c-parser.cc:29096 cp/parser.cc:51410
  #, gcc-internal-format
  msgid "too many %<otherwise%> or %<default%> clauses in %<metadirective%>"
  msgstr ""
  
! #: c/c-parser.cc:29105 cp/parser.cc:51420
  #, gcc-internal-format
  msgid "%<otherwise%> or %<default%> clause must appear last in %<metadirective%>"
  msgstr ""
  
! #: c/c-parser.cc:29195 cp/parser.cc:51511
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown directive name"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð°: %s"
  
! #: c/c-parser.cc:29210 cp/parser.cc:51531
  #, gcc-internal-format
  msgid "metadirectives cannot be used as variants of a %<metadirective%>"
  msgstr ""
  
! #: c/c-parser.cc:29216 cp/parser.cc:51537
  #, gcc-internal-format
  msgid "declarative directive variants of a %<metadirective%> are not supported"
  msgstr ""
  
! #: c/c-parser.cc:29541 cp/semantics.cc:10340
  #, gcc-internal-format
  msgid "%qE declared %<threadprivate%> after first use"
  msgstr ""
  
! #: c/c-parser.cc:29543 cp/semantics.cc:10342
  #, gcc-internal-format
  msgid "automatic variable %qE cannot be %<threadprivate%>"
  msgstr ""
  
! #: c/c-parser.cc:29547 cp/semantics.cc:10344
  #, fuzzy, gcc-internal-format
  msgid "%<threadprivate%> %qE has incomplete type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-parser.cc:29727 cp/parser.cc:53320
  #, gcc-internal-format
  msgid "%<__transaction_cancel%> without transactional memory support enabled"
  msgstr ""
  
! #: c/c-parser.cc:29733 cp/parser.cc:53326
  #, gcc-internal-format
  msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
  msgstr ""
  
! #: c/c-parser.cc:29742
  #, gcc-internal-format
  msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%> or a %<transaction_may_cancel_outer%> function"
  msgstr ""
  
! #: c/c-parser.cc:29750 cp/parser.cc:53344
  #, gcc-internal-format
  msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
  msgstr ""
  
! #: c/c-parser.cc:29843
  #, gcc-internal-format
  msgid "no closing brace"
  msgstr ""
--- 50392,50961 ----
  #. Don't call cp_parser_error here since it overrides the
  #. provided message with a more confusing one if there was
  #. a bad pragma or attribute directive.
! #: c/c-parser.cc:24018 cp/parser.cc:46260 cp/parser.cc:46262 cp/parser.cc:46447
  #, gcc-internal-format
  msgid "loop nest expected"
  msgstr ""
  
! #: c/c-parser.cc:24070 cp/parser.cc:46335
  #, gcc-internal-format
  msgid "attributes other than OpenMP directives are not allowed on %<for%> in loop nest"
  msgstr ""
  
! #: c/c-parser.cc:24099 cp/parser.cc:46366
  #, gcc-internal-format
  msgid "%<unroll%> construct with %<partial%> clause generates just one loop with canonical form but %d loops are needed"
  msgstr ""
  
! #: c/c-parser.cc:24110 cp/parser.cc:46377
  #, gcc-internal-format
  msgid "generated loop of %<unroll%> construct without %<partial%> clause does not have canonical form"
  msgstr ""
  
! #: c/c-parser.cc:24133 cp/parser.cc:46403
  #, gcc-internal-format
  msgid "%<tile%> construct generates %d loops with canonical form but %d loops are needed"
  msgstr ""
  
! #: c/c-parser.cc:24144 cp/parser.cc:46414
  #, gcc-internal-format
  msgid "expected %<for%> loop or OpenMP loop transformation construct"
  msgstr ""
  
! #: c/c-parser.cc:24232 cp/semantics.cc:11471 cp/semantics.cc:11564
  #, gcc-internal-format
  msgid "expected iteration declaration or initialization"
  msgstr ""
  
! #: c/c-parser.cc:24321 c/c-parser.cc:24336 cp/parser.cc:46741
! #: cp/parser.cc:46756
  #, gcc-internal-format
  msgid "not enough nested loops"
  msgstr ""
  
! #: c/c-parser.cc:24439 cp/parser.cc:47041
  #, gcc-internal-format
  msgid "%<ordered%> clause parameter is less than %<collapse%>"
  msgstr ""
  
! #: c/c-parser.cc:24562 cp/parser.cc:46576 cp/parser.cc:46619 cp/pt.cc:18615
  #, gcc-internal-format
  msgid "iteration variable %qD should not be firstprivate"
  msgstr ""
  
! #: c/c-parser.cc:24996 cp/parser.cc:47587
  #, gcc-internal-format
  msgid "%<#pragma omp ordered%> with %qs clause may only be used in compound statements"
  msgstr ""
  
! #: c/c-parser.cc:25212 cp/parser.cc:47793
  #, gcc-internal-format
  msgid "expected %<for%> after %qs"
  msgstr ""
  
! #: c/c-parser.cc:25425 c/c-parser.cc:25433
  #, gcc-internal-format
  msgid "expected a function name"
  msgstr ""
  
! #: c/c-parser.cc:25446 cp/parser.cc:50276
  #, gcc-internal-format
  msgid "expected target-function call"
  msgstr ""
  
! #: c/c-parser.cc:25516
  #, gcc-internal-format
  msgid "%<#pragma omp dispatch%> must be followed by a function call with optional assignment"
  msgstr ""
  
! #: c/c-parser.cc:25703 cp/parser.cc:48140
  #, gcc-internal-format
  msgid "expected %<point%>"
  msgstr ""
  
! #: c/c-parser.cc:25970 cp/parser.cc:48427
  #, gcc-internal-format
  msgid "%<#pragma omp target data%> with map-type other than %<to%>, %<from%>, %<tofrom%> or %<alloc%> on %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:25986 cp/parser.cc:48443
  #, gcc-internal-format
  msgid "%<#pragma omp target data%> must contain at least one %<map%>, %<use_device_ptr%> or %<use_device_addr%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26034 cp/parser.cc:48724
  #, gcc-internal-format
  msgid "%<#pragma omp target update%> must contain at least one %<from%> or %<to%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:26136 cp/parser.cc:48550
  #, gcc-internal-format
  msgid "%<#pragma omp target enter data%> with map-type other than %<to%>, %<tofrom%> or %<alloc%> on %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26148 cp/parser.cc:48562
  #, gcc-internal-format
  msgid "%<#pragma omp target enter data%> must contain at least one %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26247 cp/parser.cc:48667
  #, gcc-internal-format
  msgid "%<#pragma omp target exit data%> with map-type other than %<from%>, %<tofrom%>, %<release%> or %<delete%> on %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26260 cp/parser.cc:48680
  #, gcc-internal-format
  msgid "%<#pragma omp target exit data%> must contain at least one %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26505 cp/semantics.cc:10974
  #, gcc-internal-format
  msgid "%<#pragma omp target%> with map-type other than %<to%>, %<from%>, %<tofrom%> or %<alloc%> on %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26566
  #, gcc-internal-format
  msgid "%<#pragma omp declare %s%> must be followed by function declaration or definition or another %<#pragma omp declare %s%>"
  msgstr ""
  
! #: c/c-parser.cc:26617 c/c-parser.cc:26655
  #, gcc-internal-format
  msgid "%<#pragma omp declare %s%> must be followed by function declaration or definition"
  msgstr ""
  
! #: c/c-parser.cc:26688 cp/parser.cc:49736
  #, gcc-internal-format
  msgid "expected trait selector name"
  msgstr ""
  
! #: c/c-parser.cc:26700 cp/parser.cc:49750
  #, gcc-internal-format
  msgid "unknown selector %qs for context selector set %qs"
  msgstr ""
  
! #: c/c-parser.cc:26728 cp/parser.cc:49779
  #, gcc-internal-format
  msgid "selector %qs does not accept any properties"
  msgstr ""
  
! #: c/c-parser.cc:26750 cp/parser.cc:49811
  #, gcc-internal-format
  msgid "%<score%> cannot be specified in traits in the %qs trait-selector-set"
  msgstr ""
  
! #: c/c-parser.cc:26759 cp/parser.cc:49821 cp/pt.cc:18283
  #, gcc-internal-format
  msgid "%<score%> argument must be constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:26762 cp/parser.cc:49824 cp/pt.cc:18290
  #, gcc-internal-format
  msgid "%<score%> argument must be non-negative"
  msgstr ""
  
! #: c/c-parser.cc:26803 cp/parser.cc:49870
  #, gcc-internal-format
  msgid "expected identifier or string literal"
  msgstr ""
  
! #: c/c-parser.cc:26827 cp/parser.cc:49900 cp/pt.cc:18307
  #, gcc-internal-format
  msgid "property must be integer expression"
  msgstr ""
  
! #: c/c-parser.cc:26837 cp/parser.cc:49911
  #, gcc-internal-format
  msgid "properties for %<simd%> selector may not be specified in %<metadirective%>"
  msgstr ""
  
! #: c/c-parser.cc:26858 cp/parser.cc:49927 fortran/openmp.cc:6534
  #, gcc-internal-format
  msgid "%<requires%> selector is not supported yet"
  msgstr ""
  
! #: c/c-parser.cc:26917 cp/parser.cc:49990
  #, gcc-internal-format
  msgid "expected context selector set name"
  msgstr ""
  
! #: c/c-parser.cc:27032 cp/parser.cc:50494
  #, gcc-internal-format
  msgid "expected %<match%>, %<adjust_args%> or %<append_args%> clause"
  msgstr ""
  
! #: c/c-parser.cc:27048 cp/parser.cc:50507
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<match%> clauses"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ ÑƒÐ²Ð°Ñ…Ð¾Ð´Ð·Ñ�Ñ‡Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð°Ñž"
  
! #: c/c-parser.cc:27059
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function,"
  msgid "variant %qD is not a function"
  msgstr "`%D' - Ð³Ñ�Ñ‚Ð° Ð½Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�,"
  
! #: c/c-parser.cc:27074 cp/decl.cc:8619
  #, gcc-internal-format
  msgid "variant %qD is a built-in"
  msgstr ""
  
! #: c/c-parser.cc:27120 cp/parser.cc:50569
  #, gcc-internal-format
  msgid "%qD is specified more than once"
  msgstr ""
  
! #: c/c-parser.cc:27127
  #, fuzzy, gcc-internal-format
  msgid "%qD is not of pointer type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-parser.cc:27147 cp/parser.cc:50602
  #, gcc-internal-format
  msgid "expected %<nothing%> or %<need_device_ptr%>"
  msgstr ""
  
! #: c/c-parser.cc:27150
  #, gcc-internal-format
  msgid "%<need_device_addr%> is not valid for C"
  msgstr ""
  
! #: c/c-parser.cc:27157 cp/parser.cc:50609
  #, gcc-internal-format
  msgid "expected %<nothing%> or %<need_device_ptr%> followed by %<:%>"
  msgstr ""
  
! #: c/c-parser.cc:27177 cp/parser.cc:50626
  #, gcc-internal-format
  msgid "expected %<interop%>"
  msgstr ""
  
! #: c/c-parser.cc:27275 cp/decl.cc:8601
  #, fuzzy, gcc-internal-format
  msgid "argument %d of %qD must be of %<omp_interop_t%>"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: c/c-parser.cc:27277 cp/decl.cc:8498 cp/decl.cc:8604
  #, gcc-internal-format
  msgid "%<append_args%> specified here"
  msgstr ""
  
! #: c/c-parser.cc:27323 cp/decl.cc:8610
  #, fuzzy, gcc-internal-format
  msgid "variant %qD and base %qD have incompatible types"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-parser.cc:27348 cp/parser.cc:50694
  #, gcc-internal-format
  msgid "an %qs clause requires a %<match%> clause"
  msgstr ""
  
! #: c/c-parser.cc:27361
  #, gcc-internal-format
  msgid "an %qs clause can only be specified if the %<dispatch%> selector of the %<construct%> selector set appears in the %<match%> clause"
  msgstr ""
  
! #: c/c-parser.cc:27404
  #, gcc-internal-format
  msgid "%<#pragma omp declare %s%> not immediately followed by a function declaration or definition"
  msgstr ""
  
! #: c/c-parser.cc:27412 cp/parser.cc:50739
  #, gcc-internal-format
  msgid "%<#pragma omp declare %s%> not immediately followed by a single function declaration or definition"
  msgstr ""
  
! #: c/c-parser.cc:27619 cp/parser.cc:51028
  #, gcc-internal-format
  msgid "%qD specified both in declare target %<link%> and %qs clauses"
  msgstr ""
  
! #: c/c-parser.cc:27623 cp/parser.cc:51032
  #, gcc-internal-format
  msgid "%qD specified both in declare target %<link%> and %<to%> or %<enter%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:27683 cp/parser.cc:51165
  #, gcc-internal-format
  msgid "directive with only %<device_type%> or %<indirect%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:27686 cp/parser.cc:51168
  #, gcc-internal-format
  msgid "%<device_type%> clause must specify 'any' when used with an %<indirect%> clause"
  msgstr ""
  
! #: c/c-parser.cc:27735 c/c-parser.cc:27777 cp/parser.cc:51223
! #: cp/parser.cc:51270
  #, gcc-internal-format
  msgid "expected %<target%>"
  msgstr ""
  
! #: c/c-parser.cc:27749 cp/parser.cc:51236
  #, gcc-internal-format
  msgid "expected %<declare target%> or %<assumes%>"
  msgstr ""
  
! #: c/c-parser.cc:27784 cp/parser.cc:51277
  #, gcc-internal-format
  msgid "%<#pragma omp end declare target%> without corresponding %<#pragma omp declare target%> or %<#pragma omp begin declare target%>"
  msgstr ""
  
! #: c/c-parser.cc:27795 c/c-parser.cc:27826 cp/parser.cc:51288
! #: cp/parser.cc:51319
  #, gcc-internal-format
  msgid "%qs in attribute syntax terminated with %qs in pragma syntax"
  msgstr ""
  
! #: c/c-parser.cc:27802 c/c-parser.cc:27831 cp/parser.cc:51295
! #: cp/parser.cc:51324
  #, gcc-internal-format
  msgid "%qs in pragma syntax terminated with %qs in attribute syntax"
  msgstr ""
  
! #: c/c-parser.cc:27839 cp/parser.cc:51332
  #, gcc-internal-format
  msgid "expected %<declare%> or %<assumes%>"
  msgstr ""
  
! #: c/c-parser.cc:27866
  #, gcc-internal-format
  msgid "%<#pragma omp declare reduction%> not at file or block scope"
  msgstr ""
  
! #: c/c-parser.cc:27943
  #, gcc-internal-format
  msgid "predeclared arithmetic type in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:27947
  #, gcc-internal-format
  msgid "function or array type in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:27950
  #, gcc-internal-format
  msgid "%<_Atomic%> qualified type in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:27953
  #, gcc-internal-format
  msgid "const, volatile or restrict qualified type in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:27961
  #, gcc-internal-format
  msgid "redeclaration of %qs %<#pragma omp declare reduction%> for type %qT"
  msgstr ""
  
! #: c/c-parser.cc:27970
  #, gcc-internal-format
  msgid "previous %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:28091
  #, gcc-internal-format
  msgid "expected %<omp_priv%> or function-name"
  msgstr ""
  
! #: c/c-parser.cc:28102
  #, gcc-internal-format
  msgid "expected function-name %<(%>"
  msgstr ""
  
! #: c/c-parser.cc:28121
  #, gcc-internal-format
  msgid "one of the initializer call arguments should be %<&omp_priv%>"
  msgstr ""
  
! #: c/c-parser.cc:28255 cp/parser.cc:52248
  #, gcc-internal-format
  msgid "expected %<simd%>, %<reduction%>, %<target%> or %<variant%>"
  msgstr ""
  
! #: c/c-parser.cc:28326 cp/parser.cc:52341
  #, gcc-internal-format
  msgid "expected %<acq_rel%>, %<acquire%>, %<relaxed%>, %<release%> or %<seq_cst%>"
  msgstr ""
  
! #: c/c-parser.cc:28355 cp/parser.cc:52376
  #, gcc-internal-format
  msgid "expected %<unified_address%>, %<unified_shared_memory%>, %<self_maps%>, %<dynamic_allocators%>, %<reverse_offload%> or %<atomic_default_mem_order%> clause"
  msgstr ""
  
! #: c/c-parser.cc:28374 cp/parser.cc:52395
  #, gcc-internal-format
  msgid "%qs clause used lexically after first target construct or offloading API"
  msgstr ""
  
! #: c/c-parser.cc:28386 cp/parser.cc:52407
  #, gcc-internal-format
  msgid "more than one %<atomic_default_mem_order%> clause in a single compilation unit"
  msgstr ""
  
! #: c/c-parser.cc:28395 cp/parser.cc:52416
  #, gcc-internal-format
  msgid "%<atomic_default_mem_order%> clause used lexically after first %<atomic%> construct without memory order clause"
  msgstr ""
  
! #: c/c-parser.cc:28409 cp/parser.cc:52430
  #, gcc-internal-format
  msgid "%<pragma omp requires%> requires at least one clause"
  msgstr ""
  
! #: c/c-parser.cc:28428
  #, gcc-internal-format
  msgid "zero sized type %qT in %<reduction%> clause"
  msgstr ""
  
! #: c/c-parser.cc:28434
  #, gcc-internal-format
  msgid "variable sized type %qT in %<reduction%> clause"
  msgstr ""
  
! #: c/c-parser.cc:28552 cp/parser.cc:48943
  #, gcc-internal-format
  msgid "expected %<sizes%>"
  msgstr ""
  
! #: c/c-parser.cc:28581 cp/semantics.cc:9567 cp/semantics.cc:9584
  #, gcc-internal-format
  msgid "%<sizes%> argument needs positive integral constant"
  msgstr ""
  
! #: c/c-parser.cc:28697 cp/parser.cc:52487
  #, gcc-internal-format
  msgid "expected %<at%>, %<severity%> or %<message%> clause"
  msgstr ""
  
! #: c/c-parser.cc:28730 cp/parser.cc:52522
  #, gcc-internal-format
  msgid "expected %qs or %qs"
  msgstr ""
  
! #: c/c-parser.cc:28787 cp/parser.cc:52584
  #, gcc-internal-format
  msgid "%<#pragma omp error%> with %<at(execution)%> clause may only be used in compound statements"
  msgstr ""
  
! #: c/c-parser.cc:28810 cp/parser.cc:52611
  #, gcc-internal-format
  msgid "%<pragma omp error%> encountered: %s"
  msgstr ""
  
! #: c/c-parser.cc:28813 cp/parser.cc:52614
  #, gcc-internal-format
  msgid "%<pragma omp error%> encountered"
  msgstr ""
  
! #: c/c-parser.cc:28840 cp/parser.cc:50051
  #, gcc-internal-format
  msgid "expected at least one assumption clause"
  msgstr ""
  
! #: c/c-parser.cc:28926 c/c-parser.cc:29224 cp/parser.cc:50137
! #: cp/parser.cc:51553 cp/parser.cc:51580
  #, gcc-internal-format
  msgid "expected directive name"
  msgstr ""
  
! #: c/c-parser.cc:28937 cp/parser.cc:50148
  #, gcc-internal-format
  msgid "invalid OpenMP directive name in %qs clause argument: declarative, informational, and meta directives not permitted"
  msgstr ""
  
! #: c/c-parser.cc:28945 cp/parser.cc:50156
  #, gcc-internal-format
  msgid "unknown OpenMP directive name in %qs clause argument"
  msgstr ""
  
! #: c/c-parser.cc:28952 cp/parser.cc:50163
  #, gcc-internal-format
  msgid "%<%s%s%s%s%s%> directive mentioned in both %<absent%> and %<contains%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:28963 cp/parser.cc:50174
  #, gcc-internal-format
  msgid "%<%s%s%s%s%s%> directive mentioned multiple times in %qs clauses"
  msgstr ""
  
! #: c/c-parser.cc:28986 cp/parser.cc:50201
  #, fuzzy, gcc-internal-format
  msgid "unknown assumption clause %qs"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð°: %s\n"
  
! #: c/c-parser.cc:28999 cp/parser.cc:50211
  #, gcc-internal-format
  msgid "expected assumption clause"
  msgstr ""
  
! #: c/c-parser.cc:29128 cp/parser.cc:51454
  #, gcc-internal-format
  msgid "expected %<when%>, %<otherwise%>, or %<default%> clause"
  msgstr ""
  
! #: c/c-parser.cc:29142 cp/parser.cc:51469
  #, gcc-internal-format
  msgid "too many %<otherwise%> or %<default%> clauses in %<metadirective%>"
  msgstr ""
  
! #: c/c-parser.cc:29150 cp/parser.cc:51478
  #, gcc-internal-format
  msgid "%<otherwise%> or %<default%> clause must appear last in %<metadirective%>"
  msgstr ""
  
! #: c/c-parser.cc:29237 cp/parser.cc:51566
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown directive name"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð°: %s"
  
! #: c/c-parser.cc:29252 cp/parser.cc:51586
  #, gcc-internal-format
  msgid "metadirectives cannot be used as variants of a %<metadirective%>"
  msgstr ""
  
! #: c/c-parser.cc:29258 cp/parser.cc:51592
  #, gcc-internal-format
  msgid "declarative directive variants of a %<metadirective%> are not supported"
  msgstr ""
  
! #: c/c-parser.cc:29584 cp/semantics.cc:10340
  #, gcc-internal-format
  msgid "%qE declared %<threadprivate%> after first use"
  msgstr ""
  
! #: c/c-parser.cc:29586 cp/semantics.cc:10342
  #, gcc-internal-format
  msgid "automatic variable %qE cannot be %<threadprivate%>"
  msgstr ""
  
! #: c/c-parser.cc:29590 cp/semantics.cc:10344
  #, fuzzy, gcc-internal-format
  msgid "%<threadprivate%> %qE has incomplete type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-parser.cc:29770 cp/parser.cc:53373
  #, gcc-internal-format
  msgid "%<__transaction_cancel%> without transactional memory support enabled"
  msgstr ""
  
! #: c/c-parser.cc:29776 cp/parser.cc:53379
  #, gcc-internal-format
  msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
  msgstr ""
  
! #: c/c-parser.cc:29785
  #, gcc-internal-format
  msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%> or a %<transaction_may_cancel_outer%> function"
  msgstr ""
  
! #: c/c-parser.cc:29793 cp/parser.cc:53397
  #, gcc-internal-format
  msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
  msgstr ""
  
! #: c/c-parser.cc:29886
  #, gcc-internal-format
  msgid "no closing brace"
  msgstr ""
*************** msgstr ""
*** 50959,50965 ****
  msgid "%qD has an incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-typeck.cc:252 c/c-typeck.cc:12542 c/c-typeck.cc:12617 cp/call.cc:5062
  #, gcc-internal-format
  msgid "invalid use of void expression"
  msgstr ""
--- 50966,50972 ----
  msgid "%qD has an incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-typeck.cc:252 c/c-typeck.cc:12559 c/c-typeck.cc:12634 cp/call.cc:5062
  #, gcc-internal-format
  msgid "invalid use of void expression"
  msgstr ""
*************** msgstr ""
*** 51045,51056 ****
  msgid "converting an array compound literal to a pointer leads to a dangling pointer in C++"
  msgstr ""
  
! #: c/c-typeck.cc:3109 c/c-typeck.cc:10693
  #, gcc-internal-format
  msgid "%qT has no member named %qE; did you mean %qE?"
  msgstr ""
  
! #: c/c-typeck.cc:3113 c/c-typeck.cc:10697
  #, gcc-internal-format
  msgid "%qT has no member named %qE"
  msgstr ""
--- 51052,51063 ----
  msgid "converting an array compound literal to a pointer leads to a dangling pointer in C++"
  msgstr ""
  
! #: c/c-typeck.cc:3109 c/c-typeck.cc:10710
  #, gcc-internal-format
  msgid "%qT has no member named %qE; did you mean %qE?"
  msgstr ""
  
! #: c/c-typeck.cc:3113 c/c-typeck.cc:10714
  #, gcc-internal-format
  msgid "%qT has no member named %qE"
  msgstr ""
*************** msgstr ""
*** 51090,51096 ****
  msgid "subscripted value is neither array nor pointer nor vector"
  msgstr ""
  
! #: c/c-typeck.cc:3324 cp/typeck.cc:4035 cp/typeck.cc:4130
  #, gcc-internal-format
  msgid "array subscript is not an integer"
  msgstr ""
--- 51097,51103 ----
  msgid "subscripted value is neither array nor pointer nor vector"
  msgstr ""
  
! #: c/c-typeck.cc:3324 cp/typeck.cc:4151 cp/typeck.cc:4246
  #, gcc-internal-format
  msgid "array subscript is not an integer"
  msgstr ""
*************** msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼
*** 51231,52691 ****
  msgid "too many arguments to built-in function %qE expecting %d"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼Ñ�Ð½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– `%s'"
  
! #: c/c-typeck.cc:4351
  #, gcc-internal-format
  msgid "ISO C23 does not allow arguments for method %qE declared without parameters"
  msgstr ""
  
! #: c/c-typeck.cc:4356
  #, gcc-internal-format
  msgid "ISO C23 does not allow arguments for function %qE declared without parameters"
  msgstr ""
  
! #: c/c-typeck.cc:4432
  #, gcc-internal-format
  msgid "implicit conversion from %qT to %qT when passing argument to function"
  msgstr ""
  
! #: c/c-typeck.cc:4513
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function `%s'"
  msgid "too few arguments to function %qE; expected at least %i, have %i"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: c/c-typeck.cc:4514
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function `%s'"
  msgid "too few arguments to function %qE; expected %i, have %i"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: c/c-typeck.cc:4528
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function `%s'"
  msgid "too few arguments to built-in function %qE expecting %u"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: c/c-typeck.cc:4706 c/c-typeck.cc:4734 cp/typeck.cc:5849 cp/typeck.cc:6137
  #, gcc-internal-format
  msgid "comparison with string literal results in unspecified behavior"
  msgstr ""
  
! #: c/c-typeck.cc:4714 c/c-typeck.cc:4725 cp/typeck.cc:5886 cp/typeck.cc:5910
  #, gcc-internal-format
  msgid "comparison between pointer and zero character constant"
  msgstr ""
  
! #: c/c-typeck.cc:4717 c/c-typeck.cc:4728 cp/typeck.cc:5889 cp/typeck.cc:5913
  #, gcc-internal-format
  msgid "did you mean to dereference the pointer?"
  msgstr ""
  
! #: c/c-typeck.cc:4746 c/c-typeck.cc:4753 c/c-typeck.cc:6130 c/c-typeck.cc:6135
! #: c/c-typeck.cc:8683 cp/tree.cc:6464
  #, gcc-internal-format
  msgid "zero as null pointer constant"
  msgstr ""
  
! #: c/c-typeck.cc:4774
  #, gcc-internal-format
  msgid "comparison between %qT and %qT"
  msgstr ""
  
! #: c/c-typeck.cc:4833
  #, gcc-internal-format
  msgid "pointer of type %<void *%> used in subtraction"
  msgstr ""
  
! #: c/c-typeck.cc:4836
  #, gcc-internal-format
  msgid "pointer to a function used in subtraction"
  msgstr ""
  
! #: c/c-typeck.cc:4870
  #, gcc-internal-format
  msgid "arithmetic on pointer to an incomplete type"
  msgstr ""
  
! #: c/c-typeck.cc:4879 cp/typeck.cc:6937
  #, gcc-internal-format
  msgid "arithmetic on pointer to an empty aggregate"
  msgstr ""
  
! #: c/c-typeck.cc:5328
  #, gcc-internal-format
  msgid "%<~%> on a boolean expression"
  msgstr ""
  
! #: c/c-typeck.cc:5332
  #, gcc-internal-format
  msgid "did you mean to use logical not?"
  msgstr ""
  
! #: c/c-typeck.cc:5342
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 does not support complex types"
  msgid "ISO C does not support %<~%> for complex conjugation"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-typeck.cc:5366
  #, fuzzy, gcc-internal-format
  msgid "wrong type argument to absu"
  msgstr "Ð½Ðµ Ñ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: c/c-typeck.cc:5392
  #, gcc-internal-format
  msgid "wrong type argument to unary exclamation mark"
  msgstr ""
  
! #: c/c-typeck.cc:5450
  #, gcc-internal-format
  msgid "increment of enumeration value is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:5453
  #, gcc-internal-format
  msgid "decrement of enumeration value is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:5460
  #, gcc-internal-format
  msgid "increment of a boolean expression"
  msgstr ""
  
! #: c/c-typeck.cc:5463
  #, gcc-internal-format
  msgid "decrement of a boolean expression"
  msgstr ""
  
! #: c/c-typeck.cc:5479
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support `++' and `--' on complex types"
  msgid "ISO C does not support %<++%> and %<--%> on complex types before C2Y"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ \"++\" Ñ– \"--\" Ð´Ð»Ñ� Ñ‚Ñ‹Ð¿Ñƒ complex"
  
! #: c/c-typeck.cc:5506 c/c-typeck.cc:5540
  #, fuzzy, gcc-internal-format
  msgid "wrong type argument to increment"
  msgstr "Ð½Ðµ Ñ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: c/c-typeck.cc:5508 c/c-typeck.cc:5543
  #, gcc-internal-format
  msgid "wrong type argument to decrement"
  msgstr ""
  
! #: c/c-typeck.cc:5528
  #, fuzzy, gcc-internal-format
  msgid "increment of pointer to an incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-typeck.cc:5532
  #, fuzzy, gcc-internal-format
  msgid "decrement of pointer to an incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-typeck.cc:5640
  #, gcc-internal-format
  msgid "taking address of expression of type %<void%>"
  msgstr ""
  
! #: c/c-typeck.cc:5703 c/c-typeck.cc:5899
  #, fuzzy, gcc-internal-format
  msgid "cannot take address of bit-field %qD"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ð°Ñ‚Ñ€Ñ‹Ð¼Ð°Ñ†ÑŒ Ð°Ð´Ñ€Ð°Ñ� Ð±Ñ–Ñ‚Ð°Ð²Ð°Ð³Ð° Ð¿Ð¾Ð»Ñ� \"%s\""
  
! #: c/c-typeck.cc:5717
  #, fuzzy, gcc-internal-format
  msgid "cannot take address of scalar with reverse storage order"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ð°Ñ‚Ñ€Ñ‹Ð¼Ð°Ñ†ÑŒ Ð°Ð´Ñ€Ð°Ñ� Ð±Ñ–Ñ‚Ð°Ð²Ð°Ð³Ð° Ð¿Ð¾Ð»Ñ� \"%s\""
  
! #: c/c-typeck.cc:5725
  #, gcc-internal-format
  msgid "address of array with reverse scalar storage order requested"
  msgstr ""
  
! #: c/c-typeck.cc:5914
  #, gcc-internal-format
  msgid "address of register compound literal requested"
  msgstr ""
  
! #: c/c-typeck.cc:5935
  #, gcc-internal-format
  msgid "global register variable %qD used in nested function"
  msgstr ""
  
! #: c/c-typeck.cc:5938
  #, gcc-internal-format
  msgid "register variable %qD used in nested function"
  msgstr ""
  
! #: c/c-typeck.cc:5943
  #, gcc-internal-format
  msgid "address of global register variable %qD requested"
  msgstr ""
  
! #: c/c-typeck.cc:5945 d/d-codegen.cc:761
  #, gcc-internal-format
  msgid "address of register variable %qD requested"
  msgstr ""
  
! #: c/c-typeck.cc:6084
  #, gcc-internal-format
  msgid "non-lvalue array in conditional expression"
  msgstr ""
  
! #: c/c-typeck.cc:6180
  #, gcc-internal-format
  msgid "implicit conversion from %qT to %qT to match other result of conditional"
  msgstr ""
  
! #: c/c-typeck.cc:6239 c/c-typeck.cc:6245
  #, gcc-internal-format
  msgid "operand of %<?:%> changes signedness from %qT to %qT due to unsignedness of other operand"
  msgstr ""
  
! #: c/c-typeck.cc:6262
  #, gcc-internal-format
  msgid "ISO C forbids conditional expr with only one void side"
  msgstr ""
  
! #: c/c-typeck.cc:6279
  #, gcc-internal-format
  msgid "pointers to disjoint address spaces used in conditional expression"
  msgstr ""
  
! #: c/c-typeck.cc:6303
  #, gcc-internal-format
  msgid "pointer to array loses qualifier in conditional expression"
  msgstr ""
  
! #: c/c-typeck.cc:6307
  #, gcc-internal-format
  msgid "pointer to array loses qualifier in conditional expression in ISO C before C23"
  msgstr ""
  
! #: c/c-typeck.cc:6312
  #, gcc-internal-format
  msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
  msgstr ""
  
! #: c/c-typeck.cc:6334
  #, gcc-internal-format
  msgid "pointer type mismatch in conditional expression"
  msgstr ""
  
! #: c/c-typeck.cc:6337
  #, gcc-internal-format
  msgid "first expression has type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:6338
  #, gcc-internal-format
  msgid "second expression has type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:6349 c/c-typeck.cc:6362
  #, gcc-internal-format
  msgid "pointer/integer type mismatch in conditional expression"
  msgstr ""
  
! #: c/c-typeck.cc:6389
  #, gcc-internal-format
  msgid "type mismatch in conditional expression"
  msgstr ""
  
! #: c/c-typeck.cc:6505
  #, gcc-internal-format
  msgid "ignoring return value of %qD, declared with attribute %<nodiscard%>: %E"
  msgstr ""
  
! #: c/c-typeck.cc:6509
  #, gcc-internal-format
  msgid "ignoring return value of %qD, declared with attribute %<nodiscard%>"
  msgstr ""
  
! #: c/c-typeck.cc:6528
  #, gcc-internal-format
  msgid "ignoring return value of type %qT, declared with attribute %<nodiscard%>: %E"
  msgstr ""
  
! #: c/c-typeck.cc:6533
  #, gcc-internal-format
  msgid "ignoring return value of type %qT, declared with attribute %<nodiscard%>"
  msgstr ""
  
! #: c/c-typeck.cc:6542 cp/cvt.cc:1132 rust/backend/rust-tree.cc:640
  #, gcc-internal-format
  msgid "in call to %qD, declared here"
  msgstr ""
  
! #: c/c-typeck.cc:6591
  #, gcc-internal-format
  msgid "left-hand operand of comma expression has no effect"
  msgstr ""
  
! #: c/c-typeck.cc:6609 c/c-typeck.cc:13209
  #, gcc-internal-format
  msgid "right-hand operand of comma expression has no effect"
  msgstr ""
  
! #: c/c-typeck.cc:6680
  msgid "cast adds %q#v qualifier to function type"
  msgstr ""
  
! #: c/c-typeck.cc:6686
  msgid "cast discards %qv qualifier from pointer target type"
  msgstr ""
  
! #: c/c-typeck.cc:6721
  #, gcc-internal-format
  msgid "to be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualified"
  msgstr ""
  
! #: c/c-typeck.cc:6818
  #, gcc-internal-format
  msgid "cast specifies array type"
  msgstr ""
  
! #: c/c-typeck.cc:6824
  #, gcc-internal-format
  msgid "cast specifies function type"
  msgstr ""
  
! #: c/c-typeck.cc:6839
  #, gcc-internal-format
  msgid "ISO C forbids casting nonscalar to the same type"
  msgstr ""
  
! #: c/c-typeck.cc:6843
  #, gcc-internal-format
  msgid "useless cast to type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:6863
  #, gcc-internal-format
  msgid "ISO C forbids casts to union type"
  msgstr ""
  
! #: c/c-typeck.cc:6873
  #, gcc-internal-format
  msgid "cast to union type from type not present in union"
  msgstr ""
  
! #: c/c-typeck.cc:6908
  #, gcc-internal-format
  msgid "cast to %qs address space pointer from disjoint generic address space pointer"
  msgstr ""
  
! #: c/c-typeck.cc:6913
  #, gcc-internal-format
  msgid "cast to generic address space pointer from disjoint %qs address space pointer"
  msgstr ""
  
! #: c/c-typeck.cc:6918
  #, gcc-internal-format
  msgid "cast to %qs address space pointer from disjoint %qs address space pointer"
  msgstr ""
  
! #: c/c-typeck.cc:6951
  #, gcc-internal-format
  msgid "cast increases required alignment of target type"
  msgstr ""
  
! #: c/c-typeck.cc:6963
  #, gcc-internal-format
  msgid "cast from pointer to integer of different size"
  msgstr ""
  
! #: c/c-typeck.cc:6968
  #, gcc-internal-format
  msgid "cast from function call of type %qT to non-matching type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:6978 cp/typeck.cc:9383
  #, gcc-internal-format
  msgid "cast to pointer from integer of different size"
  msgstr ""
  
! #: c/c-typeck.cc:6992
  #, gcc-internal-format
  msgid "ISO C forbids conversion of function pointer to object pointer type"
  msgstr ""
  
! #: c/c-typeck.cc:7001
  #, gcc-internal-format
  msgid "ISO C forbids conversion of object pointer to function pointer type"
  msgstr ""
  
! #: c/c-typeck.cc:7011
  #, gcc-internal-format
  msgid "cast between incompatible function types from %qT to %qT"
  msgstr ""
  
! #: c/c-typeck.cc:7126
  #, gcc-internal-format
  msgid "defining a type in a cast is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7168
  #, gcc-internal-format
  msgid "assignment to expression with array type"
  msgstr ""
  
! #: c/c-typeck.cc:7294
  #, gcc-internal-format
  msgid "enum conversion in assignment is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7496 c/c-typeck.cc:7515 c/c-typeck.cc:7572
  #, fuzzy, gcc-internal-format
  #| msgid "initialization"
  msgid "(near initialization for %qs)"
  msgstr "Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ†Ñ‹Ñ�"
  
! #: c/c-typeck.cc:7588
  #, gcc-internal-format
  msgid "array initialized from parenthesized string constant"
  msgstr ""
  
! #: c/c-typeck.cc:7638
  msgid "expected %e but argument is of type %e"
  msgstr ""
  
! #: c/c-typeck.cc:7672
  #, gcc-internal-format
  msgid "%qD argument %d type is %qT where %qT is expected in a call to built-in function declared without prototype"
  msgstr ""
  
! #: c/c-typeck.cc:7675
  #, gcc-internal-format
  msgid "%qD argument %d promotes to %qT where %qT is expected in a call to built-in function declared without prototype"
  msgstr ""
  
! #: c/c-typeck.cc:7680
  #, gcc-internal-format
  msgid "built-in %qD declared here"
  msgstr ""
  
! #: c/c-typeck.cc:7737 c/c-typeck.cc:8645
  #, fuzzy
  msgid "%e declared here"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: c/c-typeck.cc:7930
  #, gcc-internal-format
  msgid "enum conversion when passing argument %d of %qE is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7935
  #, gcc-internal-format
  msgid "expected %qT but argument is of type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:7939
  #, gcc-internal-format
  msgid "enum conversion from %qT to %qT in assignment is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7944
  #, gcc-internal-format
  msgid "enum conversion from %qT to %qT in initialization is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7949
  #, gcc-internal-format
  msgid "enum conversion from %qT to %qT in return is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7967
  #, fuzzy, gcc-internal-format
  #| msgid "converting from `%T' to `%T'"
  msgid "implicit conversion from %qT to %qT"
  msgstr "Ð¿ÐµÑ€Ð°ÑžÑ‚Ð²Ð°Ñ€Ñ�Ð½ÑŒÐ½Ðµ Ð· `%T' Ñƒ `%T'"
  
! #: c/c-typeck.cc:8149 c/c-typeck.cc:8548
  msgid "passing argument %d of %qE makes %q#v qualified function pointer from unqualified"
  msgstr ""
  
! #: c/c-typeck.cc:8152 c/c-typeck.cc:8551
  msgid "assignment makes %q#v qualified function pointer from unqualified"
  msgstr ""
  
! #: c/c-typeck.cc:8155 c/c-typeck.cc:8553
  msgid "initialization makes %q#v qualified function pointer from unqualified"
  msgstr ""
  
! #: c/c-typeck.cc:8158 c/c-typeck.cc:8555
  msgid "return makes %q#v qualified function pointer from unqualified"
  msgstr ""
  
! #: c/c-typeck.cc:8166 c/c-typeck.cc:8438 c/c-typeck.cc:8481
  msgid "passing argument %d of %qE discards %qv qualifier from pointer target type"
  msgstr ""
  
! #: c/c-typeck.cc:8168 c/c-typeck.cc:8440 c/c-typeck.cc:8483
  msgid "assignment discards %qv qualifier from pointer target type"
  msgstr ""
  
! #: c/c-typeck.cc:8170 c/c-typeck.cc:8442 c/c-typeck.cc:8485
  msgid "initialization discards %qv qualifier from pointer target type"
  msgstr ""
  
! #: c/c-typeck.cc:8172 c/c-typeck.cc:8444 c/c-typeck.cc:8487
  msgid "return discards %qv qualifier from pointer target type"
  msgstr ""
  
! #: c/c-typeck.cc:8181
  #, gcc-internal-format
  msgid "ISO C prohibits argument conversion to union type"
  msgstr ""
  
! #: c/c-typeck.cc:8249
  #, gcc-internal-format
  msgid "request for implicit conversion from %qT to %qT not permitted in C++"
  msgstr ""
  
! #: c/c-typeck.cc:8276
  #, gcc-internal-format
  msgid "passing argument %d of %qE from pointer to non-enclosed address space"
  msgstr ""
  
! #: c/c-typeck.cc:8287
  #, gcc-internal-format
  msgid "assignment from pointer to non-enclosed address space"
  msgstr ""
  
! #: c/c-typeck.cc:8298
  #, gcc-internal-format
  msgid "initialization from pointer to non-enclosed address space"
  msgstr ""
  
! #: c/c-typeck.cc:8308
  #, gcc-internal-format
  msgid "return from pointer to non-enclosed address space"
  msgstr ""
  
! #: c/c-typeck.cc:8324
  #, gcc-internal-format
  msgid "expected %qT but pointer is of type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:8339
  #, gcc-internal-format
  msgid "argument %d of %qE might be a candidate for a format attribute"
  msgstr ""
  
! #: c/c-typeck.cc:8345
  #, gcc-internal-format
  msgid "assignment left-hand side might be a candidate for a format attribute"
  msgstr ""
  
! #: c/c-typeck.cc:8351
  #, gcc-internal-format
  msgid "initialization left-hand side might be a candidate for a format attribute"
  msgstr ""
  
! #: c/c-typeck.cc:8356 cp/typeck.cc:10559
  #, gcc-internal-format
  msgid "return type might be a candidate for a format attribute"
  msgstr ""
  
! #: c/c-typeck.cc:8380
  #, gcc-internal-format
  msgid "passing argument %d of %qE from incompatible scalar storage order"
  msgstr ""
  
! #: c/c-typeck.cc:8390
  #, gcc-internal-format
  msgid "assignment to %qT from pointer type %qT with incompatible scalar storage order"
  msgstr ""
  
! #: c/c-typeck.cc:8400
  #, gcc-internal-format
  msgid "initialization of %qT from pointer type %qT with incompatible scalar storage order"
  msgstr ""
  
! #: c/c-typeck.cc:8405
  #, gcc-internal-format
  msgid "returning %qT from pointer type with incompatible scalar storage order %qT"
  msgstr ""
  
! #: c/c-typeck.cc:8455
  #, gcc-internal-format
  msgid "ISO C forbids passing argument %d of %qE between function pointer and %<void *%>"
  msgstr ""
  
! #: c/c-typeck.cc:8458
  #, gcc-internal-format
  msgid "ISO C forbids assignment between function pointer and %<void *%>"
  msgstr ""
  
! #: c/c-typeck.cc:8460
  #, gcc-internal-format
  msgid "ISO C forbids initialization between function pointer and %<void *%>"
  msgstr ""
  
! #: c/c-typeck.cc:8462
  #, gcc-internal-format
  msgid "ISO C forbids return between function pointer and %<void *%>"
  msgstr ""
  
! #: c/c-typeck.cc:8492
  #, gcc-internal-format
  msgid "array with qualifier on the element is not qualified before C23"
  msgstr ""
  
! #: c/c-typeck.cc:8510
  #, gcc-internal-format
  msgid "pointer targets in passing argument %d of %qE differ in signedness"
  msgstr ""
  
! #: c/c-typeck.cc:8518
  #, gcc-internal-format
  msgid "pointer targets in assignment from %qT to %qT differ in signedness"
  msgstr ""
  
! #: c/c-typeck.cc:8524
  #, gcc-internal-format
  msgid "pointer targets in initialization of %qT from %qT differ in signedness"
  msgstr ""
  
! #: c/c-typeck.cc:8529
  #, gcc-internal-format
  msgid "pointer targets in returning %qT from a function with return type %qT differ in signedness"
  msgstr ""
  
! #: c/c-typeck.cc:8576
  #, gcc-internal-format
  msgid "passing argument %d of %qE from incompatible pointer type"
  msgstr ""
  
! #: c/c-typeck.cc:8587
  #, fuzzy
  msgid "assignment to %e from pointer to %qD with incompatible type %e"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-typeck.cc:8593
  msgid "assignment to %e from incompatible pointer type %e"
  msgstr ""
  
! #: c/c-typeck.cc:8602
  #, fuzzy
  msgid "initialization of %e from pointer to %qD with incompatible type %e"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-typeck.cc:8608
  msgid "initialization of %e from incompatible pointer type %e"
  msgstr ""
  
! #: c/c-typeck.cc:8616
  msgid "returning pointer to %qD of type %e from a function with incompatible type %e"
  msgstr ""
  
! #: c/c-typeck.cc:8622
  msgid "returning %e from a function with incompatible return type %e"
  msgstr ""
  
! #: c/c-typeck.cc:8698
  #, gcc-internal-format
  msgid "passing argument %d of %qE makes pointer from integer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8708
  #, gcc-internal-format
  msgid "assignment to %qT from %qT makes pointer from integer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8714
  #, gcc-internal-format
  msgid "initialization of %qT from %qT makes pointer from integer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8719
  #, gcc-internal-format
  msgid "returning %qT from a function with return type %qT makes pointer from integer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8741
  #, gcc-internal-format
  msgid "passing argument %d of %qE makes integer from pointer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8751
  #, gcc-internal-format
  msgid "assignment to %qT from %qT makes integer from pointer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8757
  #, gcc-internal-format
  msgid "initialization of %qT from %qT makes integer from pointer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8761
  #, gcc-internal-format
  msgid "returning %qT from a function with return type %qT makes integer from pointer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8794
  #, gcc-internal-format
  msgid "incompatible type for argument %d of %qE"
  msgstr ""
  
! #: c/c-typeck.cc:8805
  #, gcc-internal-format
  msgid "incompatible types when assigning to type %qT from type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:8816
  #, gcc-internal-format
  msgid "incompatible types when initializing type %qT using type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:8826
  #, gcc-internal-format
  msgid "incompatible types when returning type %qT but %qT was expected"
  msgstr ""
  
! #: c/c-typeck.cc:8906
  #, gcc-internal-format
  msgid "traditional C rejects automatic aggregate initialization"
  msgstr ""
  
! #: c/c-typeck.cc:9148
  #, gcc-internal-format
  msgid "%<constexpr%> pointer initializer is not null"
  msgstr ""
  
! #: c/c-typeck.cc:9156
! #, fuzzy, gcc-internal-format
! msgid "%<constexpr%> integer initializer is not an integer constant expression"
! msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
! 
! #: c/c-typeck.cc:9159 c/c-typeck.cc:9221 c/c-typeck.cc:9374
  #, gcc-internal-format
  msgid "%<constexpr%> initializer not representable in type of object"
  msgstr ""
  
! #: c/c-typeck.cc:9169
  #, fuzzy, gcc-internal-format
! msgid "%<constexpr%> initializer is not an arithmetic constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
  #: c/c-typeck.cc:9186
  #, gcc-internal-format
  msgid "%<constexpr%> initializer for a real type is of complex type"
  msgstr ""
  
! #: c/c-typeck.cc:9195
  #, gcc-internal-format
  msgid "%<constexpr%> initializer for a binary floating-point type is of decimal type"
  msgstr ""
  
! #: c/c-typeck.cc:9339 c/c-typeck.cc:10307 cp/typeck2.cc:1241
  #, gcc-internal-format
  msgid "initialization of a flexible array member"
  msgstr ""
  
! #: c/c-typeck.cc:9355 cp/typeck2.cc:1258
  #, gcc-internal-format
  msgid "cannot initialize array of %qT from a string literal with type array of %qT"
  msgstr ""
  
! #: c/c-typeck.cc:9401
  #, gcc-internal-format
  msgid "initializer-string for array of %qT is too long (%wu chars into %wu available)"
  msgstr ""
  
! #: c/c-typeck.cc:9406
  #, gcc-internal-format
  msgid "initializer-string for array of %qT is too long for C++ (%wu chars into %wu available)"
  msgstr ""
  
! #: c/c-typeck.cc:9413
  #, gcc-internal-format
  msgid "initializer-string for array of %qT truncates NUL terminator but destination lacks %qs attribute (%wu chars into %wu available)"
  msgstr ""
  
! #: c/c-typeck.cc:9425
  #, gcc-internal-format
  msgid "array of inappropriate type initialized from string constant"
  msgstr ""
  
! #: c/c-typeck.cc:9493 cp/typeck.cc:2556
  #, gcc-internal-format
  msgid "invalid use of non-lvalue array"
  msgstr ""
  
! #: c/c-typeck.cc:9507 c/c-typeck.cc:9647 c/c-typeck.cc:10401
  #, gcc-internal-format
  msgid "invalid initializer"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: c/c-typeck.cc:9519 c/c-typeck.cc:9543 c/c-typeck.cc:9546 c/c-typeck.cc:9554
! #: c/c-typeck.cc:9616 c/c-typeck.cc:11384 c/c-typeck.cc:11468
  #, gcc-internal-format
  msgid "initializer element is not constant"
  msgstr ""
  
! #: c/c-typeck.cc:9528
  #, gcc-internal-format
  msgid "array initialized from non-constant array expression"
  msgstr ""
  
! #: c/c-typeck.cc:9559 c/c-typeck.cc:9629 c/c-typeck.cc:11478
  #, fuzzy, gcc-internal-format
  msgid "initializer element is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: c/c-typeck.cc:9581 cp/typeck2.cc:1340
  #, gcc-internal-format
  msgid "conversion from %qT to %qT changes value from %qd to %qd"
  msgstr ""
  
! #: c/c-typeck.cc:9623 c/c-typeck.cc:11473
  #, gcc-internal-format
  msgid "initializer element is not computable at load time"
  msgstr ""
  
! #: c/c-typeck.cc:9929 cp/decl.cc:7906
  #, gcc-internal-format
  msgid "opaque vector types cannot be initialized"
  msgstr ""
  
! #: c/c-typeck.cc:10155
  #, gcc-internal-format
  msgid "extra brace group at end of initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10239
  #, gcc-internal-format
  msgid "braces around scalar initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10309 c/c-typeck.cc:10313 c/c-typeck.cc:12076
! #: c/c-typeck.cc:12201 cp/typeck2.cc:1268 cp/typeck2.cc:1621
  #, gcc-internal-format
  msgid "initialization of flexible array member in a nested context"
  msgstr ""
  
! #: c/c-typeck.cc:10350
  #, gcc-internal-format
  msgid "missing braces around initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10373
  #, fuzzy, gcc-internal-format
  msgid "missing initializer for field %qD of %qT"
  msgstr "Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: c/c-typeck.cc:10413
  #, gcc-internal-format
  msgid "extra elements in scalar initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10535 c/c-typeck.cc:10617
  #, gcc-internal-format
  msgid "array index in non-array initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10540 c/c-typeck.cc:10679
  #, gcc-internal-format
  msgid "field name not in record or union initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10590
  #, fuzzy, gcc-internal-format
  msgid "array index in initializer not of integer type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-typeck.cc:10599 c/c-typeck.cc:10608
  #, fuzzy, gcc-internal-format
  msgid "array index in initializer is not an integer constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: c/c-typeck.cc:10613 c/c-typeck.cc:10615
  #, gcc-internal-format
  msgid "nonconstant array index in initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10619 c/c-typeck.cc:10622
  #, gcc-internal-format
  msgid "array index in initializer exceeds array bounds"
  msgstr ""
  
! #: c/c-typeck.cc:10641
  #, gcc-internal-format
  msgid "empty index range in initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10650
  #, gcc-internal-format
  msgid "array index range in initializer exceeds array bounds"
  msgstr ""
  
! #: c/c-typeck.cc:10784 c/c-typeck.cc:10839 c/c-typeck.cc:10880
! #: c/c-typeck.cc:10940 c/c-typeck.cc:10987 c/c-typeck.cc:11575
  #, gcc-internal-format
  msgid "initialized field overwritten"
  msgstr ""
  
! #: c/c-typeck.cc:10875 c/c-typeck.cc:10936 c/c-typeck.cc:10983
! #: c/c-typeck.cc:11572
  #, gcc-internal-format
  msgid "initialized field with side-effects overwritten"
  msgstr ""
  
! #: c/c-typeck.cc:11500
  #, gcc-internal-format
  msgid "enum conversion in initialization is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:11946
  #, fuzzy, gcc-internal-format
  #| msgid "missing initializer"
  msgid "excess elements in %qT initializer"
  msgstr "Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: c/c-typeck.cc:11958 c/c-typeck.cc:12035
  #, gcc-internal-format
  msgid "excess elements in struct initializer"
  msgstr ""
  
! #: c/c-typeck.cc:11979
  #, gcc-internal-format
  msgid "positional initialization of field in %<struct%> declared with %<designated_init%> attribute"
  msgstr ""
  
! #: c/c-typeck.cc:12050 c/c-typeck.cc:12176 cp/typeck2.cc:1245
  #, gcc-internal-format
  msgid "non-static initialization of a flexible array member"
  msgstr ""
  
! #: c/c-typeck.cc:12146
  #, gcc-internal-format
  msgid "excess elements in union initializer"
  msgstr ""
  
! #: c/c-typeck.cc:12168
  #, gcc-internal-format
  msgid "traditional C rejects initialization of unions"
  msgstr ""
  
! #: c/c-typeck.cc:12267
  #, gcc-internal-format
  msgid "excess elements in array initializer"
  msgstr ""
  
! #: c/c-typeck.cc:12344 c/c-typeck.cc:12346
  #, gcc-internal-format
  msgid "excess elements in vector initializer"
  msgstr ""
  
! #: c/c-typeck.cc:12380
  #, gcc-internal-format
  msgid "excess elements in scalar initializer"
  msgstr ""
  
! #: c/c-typeck.cc:12547 c/c-typeck.cc:12623 cp/semantics.cc:2346
  #: cp/semantics.cc:2455
  #, gcc-internal-format
  msgid "constraint allows registers outside of a function"
  msgstr ""
  
! #: c/c-typeck.cc:12559 cp/semantics.cc:2358
  #, gcc-internal-format
  msgid "side-effects in output operand outside of a function"
  msgstr ""
  
! #: c/c-typeck.cc:12570 cp/semantics.cc:2374
  #, gcc-internal-format
  msgid "output operand outside of a function is not constant"
  msgstr ""
  
! #: c/c-typeck.cc:12578 c/c-typeck.cc:12668 cp/semantics.cc:2385
  #: cp/semantics.cc:2518
  #, fuzzy, gcc-internal-format
  msgid "%<-%> modifier used inside of a function"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: c/c-typeck.cc:12636 cp/semantics.cc:2468
  #, gcc-internal-format
  msgid "%<:%> constraint operand is not address of a function or non-automatic variable"
  msgstr ""
  
! #: c/c-typeck.cc:12649 cp/semantics.cc:2481
  #, gcc-internal-format
  msgid "side-effects in input operand outside of a function"
  msgstr ""
  
! #: c/c-typeck.cc:12660 cp/semantics.cc:2496 cp/semantics.cc:2510
  #, gcc-internal-format
  msgid "input operand outside of a function is not constant"
  msgstr ""
  
! #: c/c-typeck.cc:12712
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids `goto *expr;'"
  msgid "ISO C forbids %<goto *expr;%>"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ \"goto *expr;\""
  
! #: c/c-typeck.cc:12718
  #, gcc-internal-format
  msgid "computed goto must be pointer type"
  msgstr ""
  
! #: c/c-typeck.cc:12748 c/gimple-parser.cc:2648 cp/typeck.cc:11159
  #, fuzzy, gcc-internal-format
  #| msgid "function does not return string type"
  msgid "function declared %<noreturn%> has a %<return%> statement"
  msgstr "Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ� Ð½Ðµ Ð²Ñ�Ñ€Ñ‚Ð°Ðµ Ñ‚Ñ‹Ð¿ string"
  
! #: c/c-typeck.cc:12777
  #, gcc-internal-format
  msgid "%<return%> with no value, in function returning non-void"
  msgstr ""
  
! #: c/c-typeck.cc:12790 c/gimple-parser.cc:2658
  #, gcc-internal-format
  msgid "%<return%> with a value, in function returning void"
  msgstr ""
  
! #: c/c-typeck.cc:12793
  #, gcc-internal-format
  msgid "ISO C forbids %<return%> with expression, in function returning void"
  msgstr ""
  
! #: c/c-typeck.cc:12875
  #, fuzzy, gcc-internal-format
  msgid "function returns address of label"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð¿ÑƒÑ�Ñ‚Ñ‹ Ñ–Ð·Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹ Ñ„Ð°Ð¹Ð»"
  
! #: c/c-typeck.cc:12966 cp/semantics.cc:1921
  #, gcc-internal-format
  msgid "switch quantity not an integer"
  msgstr ""
  
! #: c/c-typeck.cc:12991
  #, gcc-internal-format
  msgid "%<long%> switch expression not converted to %<int%> in ISO C"
  msgstr ""
  
! #: c/c-typeck.cc:13029 c/c-typeck.cc:13037
  #, fuzzy, gcc-internal-format
  msgid "case label is not an integer constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: c/c-typeck.cc:13043 cp/parser.cc:13521
  #, gcc-internal-format
  msgid "case label not within a switch statement"
  msgstr ""
  
! #: c/c-typeck.cc:13045
  #, gcc-internal-format
  msgid "%<default%> label not within a switch statement"
  msgstr ""
  
! #: c/c-typeck.cc:13121 cp/parser.cc:15291
  #, gcc-internal-format
  msgid "break statement not within loop or switch"
  msgstr ""
  
! #: c/c-typeck.cc:13124 c/c-typeck.cc:13144 cp/decl.cc:4107 cp/parser.cc:15301
! #: cp/parser.cc:15322
  #, gcc-internal-format
  msgid "invalid exit from OpenMP structured block"
  msgstr ""
  
! #: c/c-typeck.cc:13127 cp/parser.cc:15304
  #, gcc-internal-format
  msgid "break statement used with OpenMP for loop"
  msgstr ""
  
! #: c/c-typeck.cc:13141 cp/parser.cc:15314
  #, gcc-internal-format
  msgid "continue statement not within a loop"
  msgstr ""
  
! #: c/c-typeck.cc:13191 cp/cp-gimplify.cc:277
  #, gcc-internal-format
  msgid "statement with no effect"
  msgstr ""
  
! #: c/c-typeck.cc:13235
  #, gcc-internal-format
  msgid "expression statement has incomplete type"
  msgstr ""
  
! #: c/c-typeck.cc:13526
  #, gcc-internal-format
  msgid "the comparison will always evaluate as %<false%> for the pointer operand in %qE must not be NULL"
  msgstr ""
  
! #: c/c-typeck.cc:13531
  #, gcc-internal-format
  msgid "the comparison will always evaluate as %<true%> for the pointer operand in %qE must not be NULL"
  msgstr ""
  
! #: c/c-typeck.cc:13549 c/c-typeck.cc:13587
  #, gcc-internal-format
  msgid "the comparison will always evaluate as %<false%> for the address of %qE will never be NULL"
  msgstr ""
  
! #: c/c-typeck.cc:13554 c/c-typeck.cc:13592
  #, gcc-internal-format
  msgid "the comparison will always evaluate as %<true%> for the address of %qE will never be NULL"
  msgstr ""
  
! #: c/c-typeck.cc:14184 c/c-typeck.cc:14348 cp/typeck.cc:6163
  #, gcc-internal-format
  msgid "comparing vectors with different element types"
  msgstr ""
  
! #: c/c-typeck.cc:14192 c/c-typeck.cc:14356 cp/typeck.cc:6177
  #, gcc-internal-format
  msgid "comparing vectors with different number of elements"
  msgstr ""
  
! #: c/c-typeck.cc:14207 c/c-typeck.cc:14371 cp/typeck.cc:6195
  #, gcc-internal-format
  msgid "comparison between types %qT and %qT"
  msgstr ""
  
! #: c/c-typeck.cc:14217 c/c-typeck.cc:14381 cp/typeck.cc:6212
  #, gcc-internal-format
  msgid "could not find an integer type of the same size as %qT"
  msgstr ""
  
! #: c/c-typeck.cc:14231 cp/typeck.cc:5838
  #, gcc-internal-format
  msgid "comparing floating-point with %<==%> or %<!=%> is unsafe"
  msgstr ""
  
! #: c/c-typeck.cc:14270 c/c-typeck.cc:14422
  #, gcc-internal-format
  msgid "comparison of pointers to disjoint address spaces"
  msgstr ""
  
! #: c/c-typeck.cc:14277 c/c-typeck.cc:14283
  #, fuzzy, gcc-internal-format
  msgid "ISO C forbids comparison of %<void *%> with function pointer"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: c/c-typeck.cc:14290 c/c-typeck.cc:14432
  #, gcc-internal-format
  msgid "comparison of distinct pointer types lacks a cast"
  msgstr ""
  
! #: c/c-typeck.cc:14303 c/c-typeck.cc:14309 c/c-typeck.cc:14459
! #: c/c-typeck.cc:14465
  #, gcc-internal-format
  msgid "comparison between pointer and integer"
  msgstr ""
  
! #: c/c-typeck.cc:14410
  #, gcc-internal-format
  msgid "comparison of complete and incomplete pointers"
  msgstr ""
  
! #: c/c-typeck.cc:14412
  #, gcc-internal-format
  msgid "ISO C forbids ordered comparisons of pointers to functions"
  msgstr ""
  
! #: c/c-typeck.cc:14417
  #, gcc-internal-format
  msgid "ordered comparison of pointer with null pointer"
  msgstr ""
  
! #: c/c-typeck.cc:14440 c/c-typeck.cc:14443 c/c-typeck.cc:14450
! #: c/c-typeck.cc:14453
  #, gcc-internal-format
  msgid "ordered comparison of pointer with integer zero"
  msgstr ""
  
! #: c/c-typeck.cc:14530
  #, gcc-internal-format
  msgid "implicit conversion from %qT to %qT to match other operand of binary expression"
  msgstr ""
  
! #: c/c-typeck.cc:14848
  #, gcc-internal-format
  msgid "used array that cannot be converted to pointer where scalar is required"
  msgstr ""
  
! #: c/c-typeck.cc:14852
  #, gcc-internal-format
  msgid "used struct type value where scalar is required"
  msgstr ""
  
! #: c/c-typeck.cc:14856
  #, gcc-internal-format
  msgid "used union type value where scalar is required"
  msgstr ""
  
! #: c/c-typeck.cc:14872
  #, gcc-internal-format
  msgid "used vector type where scalar is required"
  msgstr ""
  
! #: c/c-typeck.cc:15075 cp/semantics.cc:12069
  #, gcc-internal-format
  msgid "%<#pragma omp cancel%> must specify one of %<parallel%>, %<for%>, %<sections%> or %<taskgroup%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:15086 c/c-typeck.cc:15096 cp/semantics.cc:12080
  #: cp/semantics.cc:12090
  #, gcc-internal-format
  msgid "expected %<cancel%> %<if%> clause modifier"
  msgstr ""
  
! #: c/c-typeck.cc:15131 cp/semantics.cc:12125
  #, gcc-internal-format
  msgid "%<#pragma omp cancellation point%> must specify one of %<parallel%>, %<for%>, %<sections%> or %<taskgroup%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:15199 cp/semantics.cc:5948 cp/semantics.cc:9059
  #, gcc-internal-format
  msgid "%qD is not a variable in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15203 c/c-typeck.cc:17020 cp/semantics.cc:5952
  #: cp/semantics.cc:9063
  #, gcc-internal-format
  msgid "%qE is not a variable in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15211
  #, gcc-internal-format
  msgid "%<_Atomic%> %qD in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15221 c/c-typeck.cc:17027 c/c-typeck.cc:17181
  #: cp/semantics.cc:5961 cp/semantics.cc:9070 cp/semantics.cc:9259
  #, gcc-internal-format
  msgid "%qD is threadprivate variable in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15258 cp/semantics.cc:5995
  #, gcc-internal-format
  msgid "low bound %qE of array section does not have integral type"
  msgstr ""
  
! #: c/c-typeck.cc:15265 cp/semantics.cc:6002
  #, gcc-internal-format
  msgid "length %qE of array section does not have integral type"
  msgstr ""
  
! #: c/c-typeck.cc:15288 cp/semantics.cc:6035
  #, gcc-internal-format
  msgid "expected single pointer in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15306 c/c-typeck.cc:15373 c/c-typeck.cc:15666
  #: cp/semantics.cc:6053 cp/semantics.cc:6120
  #, gcc-internal-format
  msgid "zero length array section in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15325 cp/semantics.cc:6072
  #, gcc-internal-format
  msgid "for unknown bound array type length expression must be specified"
  msgstr ""
  
! #: c/c-typeck.cc:15333 cp/semantics.cc:6080
  #, gcc-internal-format
  msgid "negative low bound in array section in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15342 c/c-typeck.cc:15466 cp/semantics.cc:6089
  #: cp/semantics.cc:6213
  #, gcc-internal-format
  msgid "negative length in array section in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15359 cp/semantics.cc:6106
  #, gcc-internal-format
  msgid "low bound %qE above array section size in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15402 cp/semantics.cc:6149
  #, gcc-internal-format
  msgid "length %qE above array section size in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15417 cp/semantics.cc:6164
  #, gcc-internal-format
  msgid "high bound %qE above array section size in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15454 cp/semantics.cc:6201
  #, gcc-internal-format
  msgid "for array function parameter length expression must be specified"
  msgstr ""
  
! #: c/c-typeck.cc:15458 cp/semantics.cc:6205
  #, gcc-internal-format
  msgid "for pointer type length expression must be specified"
  msgstr ""
  
! #: c/c-typeck.cc:15486 c/c-typeck.cc:15605 cp/semantics.cc:6232
  #: cp/semantics.cc:6368
  #, gcc-internal-format
  msgid "array section is not contiguous in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15496 cp/semantics.cc:6242
  #, gcc-internal-format
  msgid "%qE does not have pointer or array type"
  msgstr ""
  
! #: c/c-typeck.cc:15872 cp/semantics.cc:7305
  #, gcc-internal-format
  msgid "iterator %qD has neither integral nor pointer type"
  msgstr ""
  
! #: c/c-typeck.cc:15879
  #, gcc-internal-format
  msgid "iterator %qD has %<_Atomic%> qualified type"
  msgstr ""
  
! #: c/c-typeck.cc:15885 cp/semantics.cc:7312
  #, gcc-internal-format
  msgid "iterator %qD has const qualified type"
  msgstr ""
  
! #: c/c-typeck.cc:15898 cp/semantics.cc:7328
  #, fuzzy, gcc-internal-format
  msgid "iterator step with non-integral type"
  msgstr "Ð±Ñ–Ñ‚Ð°Ð²Ð°Ðµ Ð¿Ð¾Ð»Ðµ \"%s\" Ð¼Ð°Ðµ Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-typeck.cc:15918 cp/semantics.cc:7364
  #, gcc-internal-format
  msgid "iterator %qD has zero step"
  msgstr ""
  
! #: c/c-typeck.cc:15945
  #, gcc-internal-format
  msgid "type of iterator %qD refers to outer iterator %qD"
  msgstr ""
  
! #: c/c-typeck.cc:15952 cp/semantics.cc:7398
  #, gcc-internal-format
  msgid "begin expression refers to outer iterator %qD"
  msgstr ""
  
! #: c/c-typeck.cc:15958 cp/semantics.cc:7404
  #, gcc-internal-format
  msgid "end expression refers to outer iterator %qD"
  msgstr ""
  
! #: c/c-typeck.cc:15964 cp/semantics.cc:7410
  #, gcc-internal-format
  msgid "step expression refers to outer iterator %qD"
  msgstr ""
  
! #: c/c-typeck.cc:16001 cp/semantics.cc:7458
  #, gcc-internal-format
  msgid "expected pointer in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:16104 cp/semantics.cc:7624
  #, gcc-internal-format
  msgid "%<inscan%> and non-%<inscan%> %<reduction%> clauses on the same construct"
  msgstr ""
  
! #: c/c-typeck.cc:16126 cp/semantics.cc:7644
  #, gcc-internal-format
  msgid "%<inscan%> %<reduction%> clause with array section"
  msgstr ""
  
! #: c/c-typeck.cc:16152 c/c-typeck.cc:16162
  #, gcc-internal-format
  msgid "%qD in %<reduction%> clause is a zero size array"
  msgstr ""
  
! #: c/c-typeck.cc:16182
  #, gcc-internal-format
  msgid "%<_Atomic%> %qE in %<reduction%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16194
  #, gcc-internal-format
  msgid "zero sized type %qT in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:16202
  #, gcc-internal-format
  msgid "variable sized type %qT in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:16246
  #, gcc-internal-format
  msgid "%qE has invalid type for %<reduction(%s)%>"
  msgstr ""
  
! #: c/c-typeck.cc:16255 cp/semantics.cc:7197
  #, gcc-internal-format
  msgid "user defined reduction not found for %qE"
  msgstr ""
  
! #: c/c-typeck.cc:16343
  #, gcc-internal-format
  msgid "variable length element type in array %<reduction%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16361 c/c-typeck.cc:17275 cp/semantics.cc:9943
  #, gcc-internal-format
  msgid "%<nowait%> clause must not be used together with %<copyprivate%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16373 cp/semantics.cc:10011
  #, gcc-internal-format
  msgid "%qE must be %<threadprivate%> for %<copyin%>"
  msgstr ""
  
! #: c/c-typeck.cc:16388 cp/semantics.cc:7687
  #, gcc-internal-format
  msgid "modifier should not be specified in %<linear%> clause on %<simd%> or %<for%> constructs when not using OpenMP 5.2 modifiers"
  msgstr ""
  
! #: c/c-typeck.cc:16397
  #, gcc-internal-format
  msgid "linear clause applied to non-integral non-pointer variable with type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:16405
  #, gcc-internal-format
  msgid "%<_Atomic%> %qD in %<linear%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16424 cp/semantics.cc:7771
  #, gcc-internal-format
  msgid "%<linear%> clause step %qE is neither constant nor a parameter"
  msgstr ""
  
! #: c/c-typeck.cc:16454 c/c-typeck.cc:17175 c/c-typeck.cc:17446
  #: cp/semantics.cc:7858 cp/semantics.cc:9253 cp/semantics.cc:9644
  #, gcc-internal-format
  msgid "%qE is not a variable in clause %qs"
  msgstr ""
  
! #: c/c-typeck.cc:16471 cp/semantics.cc:7876
  #, gcc-internal-format
  msgid "%qD appears more than once in data-sharing clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16482 cp/semantics.cc:7887
  #, gcc-internal-format
  msgid "%qD appears more than once in reduction clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16496 c/c-typeck.cc:16566 c/c-typeck.cc:16601
  #, gcc-internal-format
  msgid "%qE appears more than once in data clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16506 c/c-typeck.cc:16574 c/c-typeck.cc:16923
! #: c/c-typeck.cc:17075 c/c-typeck.cc:17083 c/c-typeck.cc:17099
! #: c/c-typeck.cc:17108 c/c-typeck.cc:17116 cp/semantics.cc:7901
  #: cp/semantics.cc:7911 cp/semantics.cc:8004 cp/semantics.cc:8012
  #: cp/semantics.cc:8059 cp/semantics.cc:8941 cp/semantics.cc:9131
  #: cp/semantics.cc:9139 cp/semantics.cc:9159 cp/semantics.cc:9168
--- 51238,52698 ----
  msgid "too many arguments to built-in function %qE expecting %d"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼Ñ�Ð½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– `%s'"
  
! #: c/c-typeck.cc:4352
  #, gcc-internal-format
  msgid "ISO C23 does not allow arguments for method %qE declared without parameters"
  msgstr ""
  
! #: c/c-typeck.cc:4357
  #, gcc-internal-format
  msgid "ISO C23 does not allow arguments for function %qE declared without parameters"
  msgstr ""
  
! #: c/c-typeck.cc:4433
  #, gcc-internal-format
  msgid "implicit conversion from %qT to %qT when passing argument to function"
  msgstr ""
  
! #: c/c-typeck.cc:4514
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function `%s'"
  msgid "too few arguments to function %qE; expected at least %i, have %i"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: c/c-typeck.cc:4515
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function `%s'"
  msgid "too few arguments to function %qE; expected %i, have %i"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: c/c-typeck.cc:4529
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function `%s'"
  msgid "too few arguments to built-in function %qE expecting %u"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: c/c-typeck.cc:4707 c/c-typeck.cc:4735 cp/typeck.cc:5965 cp/typeck.cc:6253
  #, gcc-internal-format
  msgid "comparison with string literal results in unspecified behavior"
  msgstr ""
  
! #: c/c-typeck.cc:4715 c/c-typeck.cc:4726 cp/typeck.cc:6002 cp/typeck.cc:6026
  #, gcc-internal-format
  msgid "comparison between pointer and zero character constant"
  msgstr ""
  
! #: c/c-typeck.cc:4718 c/c-typeck.cc:4729 cp/typeck.cc:6005 cp/typeck.cc:6029
  #, gcc-internal-format
  msgid "did you mean to dereference the pointer?"
  msgstr ""
  
! #: c/c-typeck.cc:4747 c/c-typeck.cc:4754 c/c-typeck.cc:6131 c/c-typeck.cc:6136
! #: c/c-typeck.cc:8684 cp/tree.cc:6464
  #, gcc-internal-format
  msgid "zero as null pointer constant"
  msgstr ""
  
! #: c/c-typeck.cc:4775
  #, gcc-internal-format
  msgid "comparison between %qT and %qT"
  msgstr ""
  
! #: c/c-typeck.cc:4834
  #, gcc-internal-format
  msgid "pointer of type %<void *%> used in subtraction"
  msgstr ""
  
! #: c/c-typeck.cc:4837
  #, gcc-internal-format
  msgid "pointer to a function used in subtraction"
  msgstr ""
  
! #: c/c-typeck.cc:4871
  #, gcc-internal-format
  msgid "arithmetic on pointer to an incomplete type"
  msgstr ""
  
! #: c/c-typeck.cc:4880 cp/typeck.cc:7053
  #, gcc-internal-format
  msgid "arithmetic on pointer to an empty aggregate"
  msgstr ""
  
! #: c/c-typeck.cc:5329
  #, gcc-internal-format
  msgid "%<~%> on a boolean expression"
  msgstr ""
  
! #: c/c-typeck.cc:5333
  #, gcc-internal-format
  msgid "did you mean to use logical not?"
  msgstr ""
  
! #: c/c-typeck.cc:5343
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 does not support complex types"
  msgid "ISO C does not support %<~%> for complex conjugation"
  msgstr "ISO C89 Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÐºÐ¾Ð¼Ð»ÐµÐºÑ�Ð½Ñ‹Ñ� Ñ‚Ñ‹Ð¿Ñ‹"
  
! #: c/c-typeck.cc:5367
  #, fuzzy, gcc-internal-format
  msgid "wrong type argument to absu"
  msgstr "Ð½Ðµ Ñ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: c/c-typeck.cc:5393
  #, gcc-internal-format
  msgid "wrong type argument to unary exclamation mark"
  msgstr ""
  
! #: c/c-typeck.cc:5451
  #, gcc-internal-format
  msgid "increment of enumeration value is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:5454
  #, gcc-internal-format
  msgid "decrement of enumeration value is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:5461
  #, gcc-internal-format
  msgid "increment of a boolean expression"
  msgstr ""
  
! #: c/c-typeck.cc:5464
  #, gcc-internal-format
  msgid "decrement of a boolean expression"
  msgstr ""
  
! #: c/c-typeck.cc:5480
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support `++' and `--' on complex types"
  msgid "ISO C does not support %<++%> and %<--%> on complex types before C2Y"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ \"++\" Ñ– \"--\" Ð´Ð»Ñ� Ñ‚Ñ‹Ð¿Ñƒ complex"
  
! #: c/c-typeck.cc:5507 c/c-typeck.cc:5541
  #, fuzzy, gcc-internal-format
  msgid "wrong type argument to increment"
  msgstr "Ð½Ðµ Ñ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: c/c-typeck.cc:5509 c/c-typeck.cc:5544
  #, gcc-internal-format
  msgid "wrong type argument to decrement"
  msgstr ""
  
! #: c/c-typeck.cc:5529
  #, fuzzy, gcc-internal-format
  msgid "increment of pointer to an incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-typeck.cc:5533
  #, fuzzy, gcc-internal-format
  msgid "decrement of pointer to an incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-typeck.cc:5641
  #, gcc-internal-format
  msgid "taking address of expression of type %<void%>"
  msgstr ""
  
! #: c/c-typeck.cc:5704 c/c-typeck.cc:5900
  #, fuzzy, gcc-internal-format
  msgid "cannot take address of bit-field %qD"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ð°Ñ‚Ñ€Ñ‹Ð¼Ð°Ñ†ÑŒ Ð°Ð´Ñ€Ð°Ñ� Ð±Ñ–Ñ‚Ð°Ð²Ð°Ð³Ð° Ð¿Ð¾Ð»Ñ� \"%s\""
  
! #: c/c-typeck.cc:5718
  #, fuzzy, gcc-internal-format
  msgid "cannot take address of scalar with reverse storage order"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ð°Ñ‚Ñ€Ñ‹Ð¼Ð°Ñ†ÑŒ Ð°Ð´Ñ€Ð°Ñ� Ð±Ñ–Ñ‚Ð°Ð²Ð°Ð³Ð° Ð¿Ð¾Ð»Ñ� \"%s\""
  
! #: c/c-typeck.cc:5726
  #, gcc-internal-format
  msgid "address of array with reverse scalar storage order requested"
  msgstr ""
  
! #: c/c-typeck.cc:5915
  #, gcc-internal-format
  msgid "address of register compound literal requested"
  msgstr ""
  
! #: c/c-typeck.cc:5936
  #, gcc-internal-format
  msgid "global register variable %qD used in nested function"
  msgstr ""
  
! #: c/c-typeck.cc:5939
  #, gcc-internal-format
  msgid "register variable %qD used in nested function"
  msgstr ""
  
! #: c/c-typeck.cc:5944
  #, gcc-internal-format
  msgid "address of global register variable %qD requested"
  msgstr ""
  
! #: c/c-typeck.cc:5946 d/d-codegen.cc:761
  #, gcc-internal-format
  msgid "address of register variable %qD requested"
  msgstr ""
  
! #: c/c-typeck.cc:6085
  #, gcc-internal-format
  msgid "non-lvalue array in conditional expression"
  msgstr ""
  
! #: c/c-typeck.cc:6181
  #, gcc-internal-format
  msgid "implicit conversion from %qT to %qT to match other result of conditional"
  msgstr ""
  
! #: c/c-typeck.cc:6240 c/c-typeck.cc:6246
  #, gcc-internal-format
  msgid "operand of %<?:%> changes signedness from %qT to %qT due to unsignedness of other operand"
  msgstr ""
  
! #: c/c-typeck.cc:6263
  #, gcc-internal-format
  msgid "ISO C forbids conditional expr with only one void side"
  msgstr ""
  
! #: c/c-typeck.cc:6280
  #, gcc-internal-format
  msgid "pointers to disjoint address spaces used in conditional expression"
  msgstr ""
  
! #: c/c-typeck.cc:6304
  #, gcc-internal-format
  msgid "pointer to array loses qualifier in conditional expression"
  msgstr ""
  
! #: c/c-typeck.cc:6308
  #, gcc-internal-format
  msgid "pointer to array loses qualifier in conditional expression in ISO C before C23"
  msgstr ""
  
! #: c/c-typeck.cc:6313
  #, gcc-internal-format
  msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
  msgstr ""
  
! #: c/c-typeck.cc:6335
  #, gcc-internal-format
  msgid "pointer type mismatch in conditional expression"
  msgstr ""
  
! #: c/c-typeck.cc:6338
  #, gcc-internal-format
  msgid "first expression has type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:6339
  #, gcc-internal-format
  msgid "second expression has type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:6350 c/c-typeck.cc:6363
  #, gcc-internal-format
  msgid "pointer/integer type mismatch in conditional expression"
  msgstr ""
  
! #: c/c-typeck.cc:6390
  #, gcc-internal-format
  msgid "type mismatch in conditional expression"
  msgstr ""
  
! #: c/c-typeck.cc:6506
  #, gcc-internal-format
  msgid "ignoring return value of %qD, declared with attribute %<nodiscard%>: %E"
  msgstr ""
  
! #: c/c-typeck.cc:6510
  #, gcc-internal-format
  msgid "ignoring return value of %qD, declared with attribute %<nodiscard%>"
  msgstr ""
  
! #: c/c-typeck.cc:6529
  #, gcc-internal-format
  msgid "ignoring return value of type %qT, declared with attribute %<nodiscard%>: %E"
  msgstr ""
  
! #: c/c-typeck.cc:6534
  #, gcc-internal-format
  msgid "ignoring return value of type %qT, declared with attribute %<nodiscard%>"
  msgstr ""
  
! #: c/c-typeck.cc:6543 cp/cvt.cc:1132 rust/backend/rust-tree.cc:640
  #, gcc-internal-format
  msgid "in call to %qD, declared here"
  msgstr ""
  
! #: c/c-typeck.cc:6592
  #, gcc-internal-format
  msgid "left-hand operand of comma expression has no effect"
  msgstr ""
  
! #: c/c-typeck.cc:6610 c/c-typeck.cc:13226
  #, gcc-internal-format
  msgid "right-hand operand of comma expression has no effect"
  msgstr ""
  
! #: c/c-typeck.cc:6681
  msgid "cast adds %q#v qualifier to function type"
  msgstr ""
  
! #: c/c-typeck.cc:6687
  msgid "cast discards %qv qualifier from pointer target type"
  msgstr ""
  
! #: c/c-typeck.cc:6722
  #, gcc-internal-format
  msgid "to be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualified"
  msgstr ""
  
! #: c/c-typeck.cc:6819
  #, gcc-internal-format
  msgid "cast specifies array type"
  msgstr ""
  
! #: c/c-typeck.cc:6825
  #, gcc-internal-format
  msgid "cast specifies function type"
  msgstr ""
  
! #: c/c-typeck.cc:6840
  #, gcc-internal-format
  msgid "ISO C forbids casting nonscalar to the same type"
  msgstr ""
  
! #: c/c-typeck.cc:6844
  #, gcc-internal-format
  msgid "useless cast to type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:6864
  #, gcc-internal-format
  msgid "ISO C forbids casts to union type"
  msgstr ""
  
! #: c/c-typeck.cc:6874
  #, gcc-internal-format
  msgid "cast to union type from type not present in union"
  msgstr ""
  
! #: c/c-typeck.cc:6909
  #, gcc-internal-format
  msgid "cast to %qs address space pointer from disjoint generic address space pointer"
  msgstr ""
  
! #: c/c-typeck.cc:6914
  #, gcc-internal-format
  msgid "cast to generic address space pointer from disjoint %qs address space pointer"
  msgstr ""
  
! #: c/c-typeck.cc:6919
  #, gcc-internal-format
  msgid "cast to %qs address space pointer from disjoint %qs address space pointer"
  msgstr ""
  
! #: c/c-typeck.cc:6952
  #, gcc-internal-format
  msgid "cast increases required alignment of target type"
  msgstr ""
  
! #: c/c-typeck.cc:6964
  #, gcc-internal-format
  msgid "cast from pointer to integer of different size"
  msgstr ""
  
! #: c/c-typeck.cc:6969
  #, gcc-internal-format
  msgid "cast from function call of type %qT to non-matching type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:6979 cp/typeck.cc:9499
  #, gcc-internal-format
  msgid "cast to pointer from integer of different size"
  msgstr ""
  
! #: c/c-typeck.cc:6993
  #, gcc-internal-format
  msgid "ISO C forbids conversion of function pointer to object pointer type"
  msgstr ""
  
! #: c/c-typeck.cc:7002
  #, gcc-internal-format
  msgid "ISO C forbids conversion of object pointer to function pointer type"
  msgstr ""
  
! #: c/c-typeck.cc:7012
  #, gcc-internal-format
  msgid "cast between incompatible function types from %qT to %qT"
  msgstr ""
  
! #: c/c-typeck.cc:7127
  #, gcc-internal-format
  msgid "defining a type in a cast is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7169
  #, gcc-internal-format
  msgid "assignment to expression with array type"
  msgstr ""
  
! #: c/c-typeck.cc:7295
  #, gcc-internal-format
  msgid "enum conversion in assignment is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7497 c/c-typeck.cc:7516 c/c-typeck.cc:7573
  #, fuzzy, gcc-internal-format
  #| msgid "initialization"
  msgid "(near initialization for %qs)"
  msgstr "Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ†Ñ‹Ñ�"
  
! #: c/c-typeck.cc:7589
  #, gcc-internal-format
  msgid "array initialized from parenthesized string constant"
  msgstr ""
  
! #: c/c-typeck.cc:7639
  msgid "expected %e but argument is of type %e"
  msgstr ""
  
! #: c/c-typeck.cc:7673
  #, gcc-internal-format
  msgid "%qD argument %d type is %qT where %qT is expected in a call to built-in function declared without prototype"
  msgstr ""
  
! #: c/c-typeck.cc:7676
  #, gcc-internal-format
  msgid "%qD argument %d promotes to %qT where %qT is expected in a call to built-in function declared without prototype"
  msgstr ""
  
! #: c/c-typeck.cc:7681
  #, gcc-internal-format
  msgid "built-in %qD declared here"
  msgstr ""
  
! #: c/c-typeck.cc:7738 c/c-typeck.cc:8646
  #, fuzzy
  msgid "%e declared here"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: c/c-typeck.cc:7931
  #, gcc-internal-format
  msgid "enum conversion when passing argument %d of %qE is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7936
  #, gcc-internal-format
  msgid "expected %qT but argument is of type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:7940
  #, gcc-internal-format
  msgid "enum conversion from %qT to %qT in assignment is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7945
  #, gcc-internal-format
  msgid "enum conversion from %qT to %qT in initialization is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7950
  #, gcc-internal-format
  msgid "enum conversion from %qT to %qT in return is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7968
  #, fuzzy, gcc-internal-format
  #| msgid "converting from `%T' to `%T'"
  msgid "implicit conversion from %qT to %qT"
  msgstr "Ð¿ÐµÑ€Ð°ÑžÑ‚Ð²Ð°Ñ€Ñ�Ð½ÑŒÐ½Ðµ Ð· `%T' Ñƒ `%T'"
  
! #: c/c-typeck.cc:8150 c/c-typeck.cc:8549
  msgid "passing argument %d of %qE makes %q#v qualified function pointer from unqualified"
  msgstr ""
  
! #: c/c-typeck.cc:8153 c/c-typeck.cc:8552
  msgid "assignment makes %q#v qualified function pointer from unqualified"
  msgstr ""
  
! #: c/c-typeck.cc:8156 c/c-typeck.cc:8554
  msgid "initialization makes %q#v qualified function pointer from unqualified"
  msgstr ""
  
! #: c/c-typeck.cc:8159 c/c-typeck.cc:8556
  msgid "return makes %q#v qualified function pointer from unqualified"
  msgstr ""
  
! #: c/c-typeck.cc:8167 c/c-typeck.cc:8439 c/c-typeck.cc:8482
  msgid "passing argument %d of %qE discards %qv qualifier from pointer target type"
  msgstr ""
  
! #: c/c-typeck.cc:8169 c/c-typeck.cc:8441 c/c-typeck.cc:8484
  msgid "assignment discards %qv qualifier from pointer target type"
  msgstr ""
  
! #: c/c-typeck.cc:8171 c/c-typeck.cc:8443 c/c-typeck.cc:8486
  msgid "initialization discards %qv qualifier from pointer target type"
  msgstr ""
  
! #: c/c-typeck.cc:8173 c/c-typeck.cc:8445 c/c-typeck.cc:8488
  msgid "return discards %qv qualifier from pointer target type"
  msgstr ""
  
! #: c/c-typeck.cc:8182
  #, gcc-internal-format
  msgid "ISO C prohibits argument conversion to union type"
  msgstr ""
  
! #: c/c-typeck.cc:8250
  #, gcc-internal-format
  msgid "request for implicit conversion from %qT to %qT not permitted in C++"
  msgstr ""
  
! #: c/c-typeck.cc:8277
  #, gcc-internal-format
  msgid "passing argument %d of %qE from pointer to non-enclosed address space"
  msgstr ""
  
! #: c/c-typeck.cc:8288
  #, gcc-internal-format
  msgid "assignment from pointer to non-enclosed address space"
  msgstr ""
  
! #: c/c-typeck.cc:8299
  #, gcc-internal-format
  msgid "initialization from pointer to non-enclosed address space"
  msgstr ""
  
! #: c/c-typeck.cc:8309
  #, gcc-internal-format
  msgid "return from pointer to non-enclosed address space"
  msgstr ""
  
! #: c/c-typeck.cc:8325
  #, gcc-internal-format
  msgid "expected %qT but pointer is of type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:8340
  #, gcc-internal-format
  msgid "argument %d of %qE might be a candidate for a format attribute"
  msgstr ""
  
! #: c/c-typeck.cc:8346
  #, gcc-internal-format
  msgid "assignment left-hand side might be a candidate for a format attribute"
  msgstr ""
  
! #: c/c-typeck.cc:8352
  #, gcc-internal-format
  msgid "initialization left-hand side might be a candidate for a format attribute"
  msgstr ""
  
! #: c/c-typeck.cc:8357 cp/typeck.cc:10675
  #, gcc-internal-format
  msgid "return type might be a candidate for a format attribute"
  msgstr ""
  
! #: c/c-typeck.cc:8381
  #, gcc-internal-format
  msgid "passing argument %d of %qE from incompatible scalar storage order"
  msgstr ""
  
! #: c/c-typeck.cc:8391
  #, gcc-internal-format
  msgid "assignment to %qT from pointer type %qT with incompatible scalar storage order"
  msgstr ""
  
! #: c/c-typeck.cc:8401
  #, gcc-internal-format
  msgid "initialization of %qT from pointer type %qT with incompatible scalar storage order"
  msgstr ""
  
! #: c/c-typeck.cc:8406
  #, gcc-internal-format
  msgid "returning %qT from pointer type with incompatible scalar storage order %qT"
  msgstr ""
  
! #: c/c-typeck.cc:8456
  #, gcc-internal-format
  msgid "ISO C forbids passing argument %d of %qE between function pointer and %<void *%>"
  msgstr ""
  
! #: c/c-typeck.cc:8459
  #, gcc-internal-format
  msgid "ISO C forbids assignment between function pointer and %<void *%>"
  msgstr ""
  
! #: c/c-typeck.cc:8461
  #, gcc-internal-format
  msgid "ISO C forbids initialization between function pointer and %<void *%>"
  msgstr ""
  
! #: c/c-typeck.cc:8463
  #, gcc-internal-format
  msgid "ISO C forbids return between function pointer and %<void *%>"
  msgstr ""
  
! #: c/c-typeck.cc:8493
  #, gcc-internal-format
  msgid "array with qualifier on the element is not qualified before C23"
  msgstr ""
  
! #: c/c-typeck.cc:8511
  #, gcc-internal-format
  msgid "pointer targets in passing argument %d of %qE differ in signedness"
  msgstr ""
  
! #: c/c-typeck.cc:8519
  #, gcc-internal-format
  msgid "pointer targets in assignment from %qT to %qT differ in signedness"
  msgstr ""
  
! #: c/c-typeck.cc:8525
  #, gcc-internal-format
  msgid "pointer targets in initialization of %qT from %qT differ in signedness"
  msgstr ""
  
! #: c/c-typeck.cc:8530
  #, gcc-internal-format
  msgid "pointer targets in returning %qT from a function with return type %qT differ in signedness"
  msgstr ""
  
! #: c/c-typeck.cc:8577
  #, gcc-internal-format
  msgid "passing argument %d of %qE from incompatible pointer type"
  msgstr ""
  
! #: c/c-typeck.cc:8588
  #, fuzzy
  msgid "assignment to %e from pointer to %qD with incompatible type %e"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-typeck.cc:8594
  msgid "assignment to %e from incompatible pointer type %e"
  msgstr ""
  
! #: c/c-typeck.cc:8603
  #, fuzzy
  msgid "initialization of %e from pointer to %qD with incompatible type %e"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-typeck.cc:8609
  msgid "initialization of %e from incompatible pointer type %e"
  msgstr ""
  
! #: c/c-typeck.cc:8617
  msgid "returning pointer to %qD of type %e from a function with incompatible type %e"
  msgstr ""
  
! #: c/c-typeck.cc:8623
  msgid "returning %e from a function with incompatible return type %e"
  msgstr ""
  
! #: c/c-typeck.cc:8699
  #, gcc-internal-format
  msgid "passing argument %d of %qE makes pointer from integer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8709
  #, gcc-internal-format
  msgid "assignment to %qT from %qT makes pointer from integer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8715
  #, gcc-internal-format
  msgid "initialization of %qT from %qT makes pointer from integer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8720
  #, gcc-internal-format
  msgid "returning %qT from a function with return type %qT makes pointer from integer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8742
  #, gcc-internal-format
  msgid "passing argument %d of %qE makes integer from pointer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8752
  #, gcc-internal-format
  msgid "assignment to %qT from %qT makes integer from pointer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8758
  #, gcc-internal-format
  msgid "initialization of %qT from %qT makes integer from pointer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8762
  #, gcc-internal-format
  msgid "returning %qT from a function with return type %qT makes integer from pointer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8795
  #, gcc-internal-format
  msgid "incompatible type for argument %d of %qE"
  msgstr ""
  
! #: c/c-typeck.cc:8806
  #, gcc-internal-format
  msgid "incompatible types when assigning to type %qT from type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:8817
  #, gcc-internal-format
  msgid "incompatible types when initializing type %qT using type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:8827
  #, gcc-internal-format
  msgid "incompatible types when returning type %qT but %qT was expected"
  msgstr ""
  
! #: c/c-typeck.cc:8907
  #, gcc-internal-format
  msgid "traditional C rejects automatic aggregate initialization"
  msgstr ""
  
! #: c/c-typeck.cc:9149
  #, gcc-internal-format
  msgid "%<constexpr%> pointer initializer is not null"
  msgstr ""
  
! #: c/c-typeck.cc:9166 c/c-typeck.cc:9176 c/c-typeck.cc:9238 c/c-typeck.cc:9391
  #, gcc-internal-format
  msgid "%<constexpr%> initializer not representable in type of object"
  msgstr ""
  
! #: c/c-typeck.cc:9172
  #, fuzzy, gcc-internal-format
! msgid "%<constexpr%> integer initializer is not an integer constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
  #: c/c-typeck.cc:9186
+ #, fuzzy, gcc-internal-format
+ msgid "%<constexpr%> initializer is not an arithmetic constant expression"
+ msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
+ 
+ #: c/c-typeck.cc:9203
  #, gcc-internal-format
  msgid "%<constexpr%> initializer for a real type is of complex type"
  msgstr ""
  
! #: c/c-typeck.cc:9212
  #, gcc-internal-format
  msgid "%<constexpr%> initializer for a binary floating-point type is of decimal type"
  msgstr ""
  
! #: c/c-typeck.cc:9356 c/c-typeck.cc:10324 cp/typeck2.cc:1241
  #, gcc-internal-format
  msgid "initialization of a flexible array member"
  msgstr ""
  
! #: c/c-typeck.cc:9372 cp/typeck2.cc:1258
  #, gcc-internal-format
  msgid "cannot initialize array of %qT from a string literal with type array of %qT"
  msgstr ""
  
! #: c/c-typeck.cc:9418
  #, gcc-internal-format
  msgid "initializer-string for array of %qT is too long (%wu chars into %wu available)"
  msgstr ""
  
! #: c/c-typeck.cc:9423
  #, gcc-internal-format
  msgid "initializer-string for array of %qT is too long for C++ (%wu chars into %wu available)"
  msgstr ""
  
! #: c/c-typeck.cc:9430
  #, gcc-internal-format
  msgid "initializer-string for array of %qT truncates NUL terminator but destination lacks %qs attribute (%wu chars into %wu available)"
  msgstr ""
  
! #: c/c-typeck.cc:9442
  #, gcc-internal-format
  msgid "array of inappropriate type initialized from string constant"
  msgstr ""
  
! #: c/c-typeck.cc:9510 cp/typeck.cc:2556
  #, gcc-internal-format
  msgid "invalid use of non-lvalue array"
  msgstr ""
  
! #: c/c-typeck.cc:9524 c/c-typeck.cc:9664 c/c-typeck.cc:10418
  #, gcc-internal-format
  msgid "invalid initializer"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: c/c-typeck.cc:9536 c/c-typeck.cc:9560 c/c-typeck.cc:9563 c/c-typeck.cc:9571
! #: c/c-typeck.cc:9633 c/c-typeck.cc:11401 c/c-typeck.cc:11485
  #, gcc-internal-format
  msgid "initializer element is not constant"
  msgstr ""
  
! #: c/c-typeck.cc:9545
  #, gcc-internal-format
  msgid "array initialized from non-constant array expression"
  msgstr ""
  
! #: c/c-typeck.cc:9576 c/c-typeck.cc:9646 c/c-typeck.cc:11495
  #, fuzzy, gcc-internal-format
  msgid "initializer element is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: c/c-typeck.cc:9598 cp/typeck2.cc:1340
  #, gcc-internal-format
  msgid "conversion from %qT to %qT changes value from %qd to %qd"
  msgstr ""
  
! #: c/c-typeck.cc:9640 c/c-typeck.cc:11490
  #, gcc-internal-format
  msgid "initializer element is not computable at load time"
  msgstr ""
  
! #: c/c-typeck.cc:9946 cp/decl.cc:7904
  #, gcc-internal-format
  msgid "opaque vector types cannot be initialized"
  msgstr ""
  
! #: c/c-typeck.cc:10172
  #, gcc-internal-format
  msgid "extra brace group at end of initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10256
  #, gcc-internal-format
  msgid "braces around scalar initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10326 c/c-typeck.cc:10330 c/c-typeck.cc:12093
! #: c/c-typeck.cc:12218 cp/typeck2.cc:1268 cp/typeck2.cc:1621
  #, gcc-internal-format
  msgid "initialization of flexible array member in a nested context"
  msgstr ""
  
! #: c/c-typeck.cc:10367
  #, gcc-internal-format
  msgid "missing braces around initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10390
  #, fuzzy, gcc-internal-format
  msgid "missing initializer for field %qD of %qT"
  msgstr "Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: c/c-typeck.cc:10430
  #, gcc-internal-format
  msgid "extra elements in scalar initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10552 c/c-typeck.cc:10634
  #, gcc-internal-format
  msgid "array index in non-array initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10557 c/c-typeck.cc:10696
  #, gcc-internal-format
  msgid "field name not in record or union initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10607
  #, fuzzy, gcc-internal-format
  msgid "array index in initializer not of integer type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-typeck.cc:10616 c/c-typeck.cc:10625
  #, fuzzy, gcc-internal-format
  msgid "array index in initializer is not an integer constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: c/c-typeck.cc:10630 c/c-typeck.cc:10632
  #, gcc-internal-format
  msgid "nonconstant array index in initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10636 c/c-typeck.cc:10639
  #, gcc-internal-format
  msgid "array index in initializer exceeds array bounds"
  msgstr ""
  
! #: c/c-typeck.cc:10658
  #, gcc-internal-format
  msgid "empty index range in initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10667
  #, gcc-internal-format
  msgid "array index range in initializer exceeds array bounds"
  msgstr ""
  
! #: c/c-typeck.cc:10801 c/c-typeck.cc:10856 c/c-typeck.cc:10897
! #: c/c-typeck.cc:10957 c/c-typeck.cc:11004 c/c-typeck.cc:11592
  #, gcc-internal-format
  msgid "initialized field overwritten"
  msgstr ""
  
! #: c/c-typeck.cc:10892 c/c-typeck.cc:10953 c/c-typeck.cc:11000
! #: c/c-typeck.cc:11589
  #, gcc-internal-format
  msgid "initialized field with side-effects overwritten"
  msgstr ""
  
! #: c/c-typeck.cc:11517
  #, gcc-internal-format
  msgid "enum conversion in initialization is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:11963
  #, fuzzy, gcc-internal-format
  #| msgid "missing initializer"
  msgid "excess elements in %qT initializer"
  msgstr "Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: c/c-typeck.cc:11975 c/c-typeck.cc:12052
  #, gcc-internal-format
  msgid "excess elements in struct initializer"
  msgstr ""
  
! #: c/c-typeck.cc:11996
  #, gcc-internal-format
  msgid "positional initialization of field in %<struct%> declared with %<designated_init%> attribute"
  msgstr ""
  
! #: c/c-typeck.cc:12067 c/c-typeck.cc:12193 cp/typeck2.cc:1245
  #, gcc-internal-format
  msgid "non-static initialization of a flexible array member"
  msgstr ""
  
! #: c/c-typeck.cc:12163
  #, gcc-internal-format
  msgid "excess elements in union initializer"
  msgstr ""
  
! #: c/c-typeck.cc:12185
  #, gcc-internal-format
  msgid "traditional C rejects initialization of unions"
  msgstr ""
  
! #: c/c-typeck.cc:12284
  #, gcc-internal-format
  msgid "excess elements in array initializer"
  msgstr ""
  
! #: c/c-typeck.cc:12361 c/c-typeck.cc:12363
  #, gcc-internal-format
  msgid "excess elements in vector initializer"
  msgstr ""
  
! #: c/c-typeck.cc:12397
  #, gcc-internal-format
  msgid "excess elements in scalar initializer"
  msgstr ""
  
! #: c/c-typeck.cc:12564 c/c-typeck.cc:12640 cp/semantics.cc:2346
  #: cp/semantics.cc:2455
  #, gcc-internal-format
  msgid "constraint allows registers outside of a function"
  msgstr ""
  
! #: c/c-typeck.cc:12576 cp/semantics.cc:2358
  #, gcc-internal-format
  msgid "side-effects in output operand outside of a function"
  msgstr ""
  
! #: c/c-typeck.cc:12587 cp/semantics.cc:2374
  #, gcc-internal-format
  msgid "output operand outside of a function is not constant"
  msgstr ""
  
! #: c/c-typeck.cc:12595 c/c-typeck.cc:12685 cp/semantics.cc:2385
  #: cp/semantics.cc:2518
  #, fuzzy, gcc-internal-format
  msgid "%<-%> modifier used inside of a function"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: c/c-typeck.cc:12653 cp/semantics.cc:2468
  #, gcc-internal-format
  msgid "%<:%> constraint operand is not address of a function or non-automatic variable"
  msgstr ""
  
! #: c/c-typeck.cc:12666 cp/semantics.cc:2481
  #, gcc-internal-format
  msgid "side-effects in input operand outside of a function"
  msgstr ""
  
! #: c/c-typeck.cc:12677 cp/semantics.cc:2496 cp/semantics.cc:2510
  #, gcc-internal-format
  msgid "input operand outside of a function is not constant"
  msgstr ""
  
! #: c/c-typeck.cc:12729
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids `goto *expr;'"
  msgid "ISO C forbids %<goto *expr;%>"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ \"goto *expr;\""
  
! #: c/c-typeck.cc:12735
  #, gcc-internal-format
  msgid "computed goto must be pointer type"
  msgstr ""
  
! #: c/c-typeck.cc:12765 c/gimple-parser.cc:2648 cp/typeck.cc:11275
  #, fuzzy, gcc-internal-format
  #| msgid "function does not return string type"
  msgid "function declared %<noreturn%> has a %<return%> statement"
  msgstr "Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ� Ð½Ðµ Ð²Ñ�Ñ€Ñ‚Ð°Ðµ Ñ‚Ñ‹Ð¿ string"
  
! #: c/c-typeck.cc:12794
  #, gcc-internal-format
  msgid "%<return%> with no value, in function returning non-void"
  msgstr ""
  
! #: c/c-typeck.cc:12807 c/gimple-parser.cc:2658
  #, gcc-internal-format
  msgid "%<return%> with a value, in function returning void"
  msgstr ""
  
! #: c/c-typeck.cc:12810
  #, gcc-internal-format
  msgid "ISO C forbids %<return%> with expression, in function returning void"
  msgstr ""
  
! #: c/c-typeck.cc:12892
  #, fuzzy, gcc-internal-format
  msgid "function returns address of label"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð¿ÑƒÑ�Ñ‚Ñ‹ Ñ–Ð·Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹ Ñ„Ð°Ð¹Ð»"
  
! #: c/c-typeck.cc:12983 cp/semantics.cc:1921
  #, gcc-internal-format
  msgid "switch quantity not an integer"
  msgstr ""
  
! #: c/c-typeck.cc:13008
  #, gcc-internal-format
  msgid "%<long%> switch expression not converted to %<int%> in ISO C"
  msgstr ""
  
! #: c/c-typeck.cc:13046 c/c-typeck.cc:13054
  #, fuzzy, gcc-internal-format
  msgid "case label is not an integer constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: c/c-typeck.cc:13060 cp/parser.cc:13523
  #, gcc-internal-format
  msgid "case label not within a switch statement"
  msgstr ""
  
! #: c/c-typeck.cc:13062
  #, gcc-internal-format
  msgid "%<default%> label not within a switch statement"
  msgstr ""
  
! #: c/c-typeck.cc:13138 cp/parser.cc:15293
  #, gcc-internal-format
  msgid "break statement not within loop or switch"
  msgstr ""
  
! #: c/c-typeck.cc:13141 c/c-typeck.cc:13161 cp/decl.cc:4105 cp/parser.cc:15303
! #: cp/parser.cc:15324
  #, gcc-internal-format
  msgid "invalid exit from OpenMP structured block"
  msgstr ""
  
! #: c/c-typeck.cc:13144 cp/parser.cc:15306
  #, gcc-internal-format
  msgid "break statement used with OpenMP for loop"
  msgstr ""
  
! #: c/c-typeck.cc:13158 cp/parser.cc:15316
  #, gcc-internal-format
  msgid "continue statement not within a loop"
  msgstr ""
  
! #: c/c-typeck.cc:13208 cp/cp-gimplify.cc:277
  #, gcc-internal-format
  msgid "statement with no effect"
  msgstr ""
  
! #: c/c-typeck.cc:13252
  #, gcc-internal-format
  msgid "expression statement has incomplete type"
  msgstr ""
  
! #: c/c-typeck.cc:13543
  #, gcc-internal-format
  msgid "the comparison will always evaluate as %<false%> for the pointer operand in %qE must not be NULL"
  msgstr ""
  
! #: c/c-typeck.cc:13548
  #, gcc-internal-format
  msgid "the comparison will always evaluate as %<true%> for the pointer operand in %qE must not be NULL"
  msgstr ""
  
! #: c/c-typeck.cc:13566 c/c-typeck.cc:13604
  #, gcc-internal-format
  msgid "the comparison will always evaluate as %<false%> for the address of %qE will never be NULL"
  msgstr ""
  
! #: c/c-typeck.cc:13571 c/c-typeck.cc:13609
  #, gcc-internal-format
  msgid "the comparison will always evaluate as %<true%> for the address of %qE will never be NULL"
  msgstr ""
  
! #: c/c-typeck.cc:14201 c/c-typeck.cc:14365 cp/typeck.cc:6279
  #, gcc-internal-format
  msgid "comparing vectors with different element types"
  msgstr ""
  
! #: c/c-typeck.cc:14209 c/c-typeck.cc:14373 cp/typeck.cc:6293
  #, gcc-internal-format
  msgid "comparing vectors with different number of elements"
  msgstr ""
  
! #: c/c-typeck.cc:14224 c/c-typeck.cc:14388 cp/typeck.cc:6311
  #, gcc-internal-format
  msgid "comparison between types %qT and %qT"
  msgstr ""
  
! #: c/c-typeck.cc:14234 c/c-typeck.cc:14398 cp/typeck.cc:6328
  #, gcc-internal-format
  msgid "could not find an integer type of the same size as %qT"
  msgstr ""
  
! #: c/c-typeck.cc:14248 cp/typeck.cc:5954
  #, gcc-internal-format
  msgid "comparing floating-point with %<==%> or %<!=%> is unsafe"
  msgstr ""
  
! #: c/c-typeck.cc:14287 c/c-typeck.cc:14439
  #, gcc-internal-format
  msgid "comparison of pointers to disjoint address spaces"
  msgstr ""
  
! #: c/c-typeck.cc:14294 c/c-typeck.cc:14300
  #, fuzzy, gcc-internal-format
  msgid "ISO C forbids comparison of %<void *%> with function pointer"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: c/c-typeck.cc:14307 c/c-typeck.cc:14449
  #, gcc-internal-format
  msgid "comparison of distinct pointer types lacks a cast"
  msgstr ""
  
! #: c/c-typeck.cc:14320 c/c-typeck.cc:14326 c/c-typeck.cc:14476
! #: c/c-typeck.cc:14482
  #, gcc-internal-format
  msgid "comparison between pointer and integer"
  msgstr ""
  
! #: c/c-typeck.cc:14427
  #, gcc-internal-format
  msgid "comparison of complete and incomplete pointers"
  msgstr ""
  
! #: c/c-typeck.cc:14429
  #, gcc-internal-format
  msgid "ISO C forbids ordered comparisons of pointers to functions"
  msgstr ""
  
! #: c/c-typeck.cc:14434
  #, gcc-internal-format
  msgid "ordered comparison of pointer with null pointer"
  msgstr ""
  
! #: c/c-typeck.cc:14457 c/c-typeck.cc:14460 c/c-typeck.cc:14467
! #: c/c-typeck.cc:14470
  #, gcc-internal-format
  msgid "ordered comparison of pointer with integer zero"
  msgstr ""
  
! #: c/c-typeck.cc:14547
  #, gcc-internal-format
  msgid "implicit conversion from %qT to %qT to match other operand of binary expression"
  msgstr ""
  
! #: c/c-typeck.cc:14865
  #, gcc-internal-format
  msgid "used array that cannot be converted to pointer where scalar is required"
  msgstr ""
  
! #: c/c-typeck.cc:14869
  #, gcc-internal-format
  msgid "used struct type value where scalar is required"
  msgstr ""
  
! #: c/c-typeck.cc:14873
  #, gcc-internal-format
  msgid "used union type value where scalar is required"
  msgstr ""
  
! #: c/c-typeck.cc:14889
  #, gcc-internal-format
  msgid "used vector type where scalar is required"
  msgstr ""
  
! #: c/c-typeck.cc:15092 cp/semantics.cc:12069
  #, gcc-internal-format
  msgid "%<#pragma omp cancel%> must specify one of %<parallel%>, %<for%>, %<sections%> or %<taskgroup%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:15103 c/c-typeck.cc:15113 cp/semantics.cc:12080
  #: cp/semantics.cc:12090
  #, gcc-internal-format
  msgid "expected %<cancel%> %<if%> clause modifier"
  msgstr ""
  
! #: c/c-typeck.cc:15148 cp/semantics.cc:12125
  #, gcc-internal-format
  msgid "%<#pragma omp cancellation point%> must specify one of %<parallel%>, %<for%>, %<sections%> or %<taskgroup%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:15216 cp/semantics.cc:5948 cp/semantics.cc:9059
  #, gcc-internal-format
  msgid "%qD is not a variable in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15220 c/c-typeck.cc:17037 cp/semantics.cc:5952
  #: cp/semantics.cc:9063
  #, gcc-internal-format
  msgid "%qE is not a variable in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15228
  #, gcc-internal-format
  msgid "%<_Atomic%> %qD in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15238 c/c-typeck.cc:17044 c/c-typeck.cc:17198
  #: cp/semantics.cc:5961 cp/semantics.cc:9070 cp/semantics.cc:9259
  #, gcc-internal-format
  msgid "%qD is threadprivate variable in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15275 cp/semantics.cc:5995
  #, gcc-internal-format
  msgid "low bound %qE of array section does not have integral type"
  msgstr ""
  
! #: c/c-typeck.cc:15282 cp/semantics.cc:6002
  #, gcc-internal-format
  msgid "length %qE of array section does not have integral type"
  msgstr ""
  
! #: c/c-typeck.cc:15305 cp/semantics.cc:6035
  #, gcc-internal-format
  msgid "expected single pointer in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15323 c/c-typeck.cc:15390 c/c-typeck.cc:15683
  #: cp/semantics.cc:6053 cp/semantics.cc:6120
  #, gcc-internal-format
  msgid "zero length array section in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15342 cp/semantics.cc:6072
  #, gcc-internal-format
  msgid "for unknown bound array type length expression must be specified"
  msgstr ""
  
! #: c/c-typeck.cc:15350 cp/semantics.cc:6080
  #, gcc-internal-format
  msgid "negative low bound in array section in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15359 c/c-typeck.cc:15483 cp/semantics.cc:6089
  #: cp/semantics.cc:6213
  #, gcc-internal-format
  msgid "negative length in array section in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15376 cp/semantics.cc:6106
  #, gcc-internal-format
  msgid "low bound %qE above array section size in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15419 cp/semantics.cc:6149
  #, gcc-internal-format
  msgid "length %qE above array section size in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15434 cp/semantics.cc:6164
  #, gcc-internal-format
  msgid "high bound %qE above array section size in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15471 cp/semantics.cc:6201
  #, gcc-internal-format
  msgid "for array function parameter length expression must be specified"
  msgstr ""
  
! #: c/c-typeck.cc:15475 cp/semantics.cc:6205
  #, gcc-internal-format
  msgid "for pointer type length expression must be specified"
  msgstr ""
  
! #: c/c-typeck.cc:15503 c/c-typeck.cc:15622 cp/semantics.cc:6232
  #: cp/semantics.cc:6368
  #, gcc-internal-format
  msgid "array section is not contiguous in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15513 cp/semantics.cc:6242
  #, gcc-internal-format
  msgid "%qE does not have pointer or array type"
  msgstr ""
  
! #: c/c-typeck.cc:15889 cp/semantics.cc:7305
  #, gcc-internal-format
  msgid "iterator %qD has neither integral nor pointer type"
  msgstr ""
  
! #: c/c-typeck.cc:15896
  #, gcc-internal-format
  msgid "iterator %qD has %<_Atomic%> qualified type"
  msgstr ""
  
! #: c/c-typeck.cc:15902 cp/semantics.cc:7312
  #, gcc-internal-format
  msgid "iterator %qD has const qualified type"
  msgstr ""
  
! #: c/c-typeck.cc:15915 cp/semantics.cc:7328
  #, fuzzy, gcc-internal-format
  msgid "iterator step with non-integral type"
  msgstr "Ð±Ñ–Ñ‚Ð°Ð²Ð°Ðµ Ð¿Ð¾Ð»Ðµ \"%s\" Ð¼Ð°Ðµ Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-typeck.cc:15935 cp/semantics.cc:7364
  #, gcc-internal-format
  msgid "iterator %qD has zero step"
  msgstr ""
  
! #: c/c-typeck.cc:15962
  #, gcc-internal-format
  msgid "type of iterator %qD refers to outer iterator %qD"
  msgstr ""
  
! #: c/c-typeck.cc:15969 cp/semantics.cc:7398
  #, gcc-internal-format
  msgid "begin expression refers to outer iterator %qD"
  msgstr ""
  
! #: c/c-typeck.cc:15975 cp/semantics.cc:7404
  #, gcc-internal-format
  msgid "end expression refers to outer iterator %qD"
  msgstr ""
  
! #: c/c-typeck.cc:15981 cp/semantics.cc:7410
  #, gcc-internal-format
  msgid "step expression refers to outer iterator %qD"
  msgstr ""
  
! #: c/c-typeck.cc:16018 cp/semantics.cc:7458
  #, gcc-internal-format
  msgid "expected pointer in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:16121 cp/semantics.cc:7624
  #, gcc-internal-format
  msgid "%<inscan%> and non-%<inscan%> %<reduction%> clauses on the same construct"
  msgstr ""
  
! #: c/c-typeck.cc:16143 cp/semantics.cc:7644
  #, gcc-internal-format
  msgid "%<inscan%> %<reduction%> clause with array section"
  msgstr ""
  
! #: c/c-typeck.cc:16169 c/c-typeck.cc:16179
  #, gcc-internal-format
  msgid "%qD in %<reduction%> clause is a zero size array"
  msgstr ""
  
! #: c/c-typeck.cc:16199
  #, gcc-internal-format
  msgid "%<_Atomic%> %qE in %<reduction%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16211
  #, gcc-internal-format
  msgid "zero sized type %qT in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:16219
  #, gcc-internal-format
  msgid "variable sized type %qT in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:16263
  #, gcc-internal-format
  msgid "%qE has invalid type for %<reduction(%s)%>"
  msgstr ""
  
! #: c/c-typeck.cc:16272 cp/semantics.cc:7197
  #, gcc-internal-format
  msgid "user defined reduction not found for %qE"
  msgstr ""
  
! #: c/c-typeck.cc:16360
  #, gcc-internal-format
  msgid "variable length element type in array %<reduction%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16378 c/c-typeck.cc:17292 cp/semantics.cc:9943
  #, gcc-internal-format
  msgid "%<nowait%> clause must not be used together with %<copyprivate%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16390 cp/semantics.cc:10011
  #, gcc-internal-format
  msgid "%qE must be %<threadprivate%> for %<copyin%>"
  msgstr ""
  
! #: c/c-typeck.cc:16405 cp/semantics.cc:7687
  #, gcc-internal-format
  msgid "modifier should not be specified in %<linear%> clause on %<simd%> or %<for%> constructs when not using OpenMP 5.2 modifiers"
  msgstr ""
  
! #: c/c-typeck.cc:16414
  #, gcc-internal-format
  msgid "linear clause applied to non-integral non-pointer variable with type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:16422
  #, gcc-internal-format
  msgid "%<_Atomic%> %qD in %<linear%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16441 cp/semantics.cc:7771
  #, gcc-internal-format
  msgid "%<linear%> clause step %qE is neither constant nor a parameter"
  msgstr ""
  
! #: c/c-typeck.cc:16471 c/c-typeck.cc:17192 c/c-typeck.cc:17463
  #: cp/semantics.cc:7858 cp/semantics.cc:9253 cp/semantics.cc:9644
  #, gcc-internal-format
  msgid "%qE is not a variable in clause %qs"
  msgstr ""
  
! #: c/c-typeck.cc:16488 cp/semantics.cc:7876
  #, gcc-internal-format
  msgid "%qD appears more than once in data-sharing clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16499 cp/semantics.cc:7887
  #, gcc-internal-format
  msgid "%qD appears more than once in reduction clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16513 c/c-typeck.cc:16583 c/c-typeck.cc:16618
  #, gcc-internal-format
  msgid "%qE appears more than once in data clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16523 c/c-typeck.cc:16591 c/c-typeck.cc:16940
! #: c/c-typeck.cc:17092 c/c-typeck.cc:17100 c/c-typeck.cc:17116
! #: c/c-typeck.cc:17125 c/c-typeck.cc:17133 cp/semantics.cc:7901
  #: cp/semantics.cc:7911 cp/semantics.cc:8004 cp/semantics.cc:8012
  #: cp/semantics.cc:8059 cp/semantics.cc:8941 cp/semantics.cc:9131
  #: cp/semantics.cc:9139 cp/semantics.cc:9159 cp/semantics.cc:9168
*************** msgstr ""
*** 52694,52952 ****
  msgid "%qD appears more than once in data clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16509 c/c-typeck.cc:16580 c/c-typeck.cc:17119
  #: cp/semantics.cc:7914 cp/semantics.cc:8018 cp/semantics.cc:9179
  #, gcc-internal-format
  msgid "%qD appears both in data and map clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16554 cp/semantics.cc:7991
  #, gcc-internal-format
  msgid "%qE is not a variable in clause %<firstprivate%>"
  msgstr ""
  
! #: c/c-typeck.cc:16594 cp/semantics.cc:8051
  #, gcc-internal-format
  msgid "%qE is not a variable in clause %<lastprivate%>"
  msgstr ""
  
! #: c/c-typeck.cc:16613 cp/semantics.cc:8473
  #, gcc-internal-format
  msgid "%qE is not a variable in %<aligned%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16620
  #, gcc-internal-format
  msgid "%qE in %<aligned%> clause is neither a pointer nor an array"
  msgstr ""
  
! #: c/c-typeck.cc:16627
  #, gcc-internal-format
  msgid "%<_Atomic%> %qD in %<aligned%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16634
  #, gcc-internal-format
  msgid "%qE appears more than once in %<aligned%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16647 cp/semantics.cc:8542
  #, gcc-internal-format
  msgid "%qE is not a variable in %<nontemporal%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16653
  #, gcc-internal-format
  msgid "%qE appears more than once in %<nontemporal%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16666 cp/semantics.cc:8581
  #, gcc-internal-format
  msgid "%qE is not a variable in %<allocate%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16672
  #, gcc-internal-format
  msgid "%qE appears more than once in %<allocate%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16744 cp/semantics.cc:8709
  #, gcc-internal-format
  msgid "%<depend%> clause with %<depobj%> dependence type on array section"
  msgstr ""
  
! #: c/c-typeck.cc:16759 cp/semantics.cc:8724
  #, gcc-internal-format
  msgid "%<omp_all_memory%> used with %<depend%> kind other than %<out%> or %<inout%>"
  msgstr ""
  
! #: c/c-typeck.cc:16767 cp/semantics.cc:8742
  #, gcc-internal-format
  msgid "%qE is not lvalue expression nor array section in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:16788 cp/semantics.cc:8764
  #, gcc-internal-format
  msgid "%qE does not have %<omp_depend_t%> type in %<depend%> clause with %<depobj%> dependence type"
  msgstr ""
  
! #: c/c-typeck.cc:16798 cp/semantics.cc:8776
  #, gcc-internal-format
  msgid "%qE should not have %<omp_depend_t%> type in %<depend%> clause with dependence type other than %<depobj%>"
  msgstr ""
  
! #: c/c-typeck.cc:16859 cp/semantics.cc:8876
  #, gcc-internal-format
  msgid "array section does not have mappable type in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:16879 c/c-typeck.cc:16955 c/c-typeck.cc:16991
  #: cp/semantics.cc:8896 cp/semantics.cc:8975 cp/semantics.cc:9011
  #, fuzzy, gcc-internal-format
  #| msgid "unsupported version"
  msgid "unsupported map expression %qE"
  msgstr "Ð½ÐµÐ¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÐ¼Ð°Ñ� Ð²ÐµÑ€Ñ�Ñ–Ñ�"
  
! #: c/c-typeck.cc:16919 c/c-typeck.cc:17096 cp/semantics.cc:8937
  #: cp/semantics.cc:9156
  #, gcc-internal-format
  msgid "%qD appears more than once in motion clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16927 c/c-typeck.cc:17102 cp/semantics.cc:8945
  #: cp/semantics.cc:9162
  #, gcc-internal-format
  msgid "%qD appears more than once in map clauses"
  msgstr ""
  
! #: c/c-typeck.cc:17046 c/c-typeck.cc:17188 cp/semantics.cc:9099
  #: cp/semantics.cc:9267
  #, gcc-internal-format
  msgid "%qD does not have a mappable type in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:17171 cp/semantics.cc:9248
  #, gcc-internal-format
  msgid "%qE is neither a variable nor a function name in clause %qs"
  msgstr ""
  
! #: c/c-typeck.cc:17197 cp/semantics.cc:9279
  #, gcc-internal-format
  msgid "%qE appears more than once on the same %<declare target%> directive"
  msgstr ""
  
! #: c/c-typeck.cc:17211 cp/semantics.cc:9295
  #, gcc-internal-format
  msgid "%qD is not an argument in %<uniform%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17214 cp/semantics.cc:9298
  #, gcc-internal-format
  msgid "%qE is not an argument in %<uniform%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17233
  #, gcc-internal-format
  msgid "%qs variable is not a pointer"
  msgstr ""
  
! #: c/c-typeck.cc:17240
  #, gcc-internal-format
  msgid "%qs variable is neither a pointer nor an array"
  msgstr ""
  
! #: c/c-typeck.cc:17288 c/c-typeck.cc:17393 cp/semantics.cc:9894
  #, gcc-internal-format
  msgid "%<order%> clause must not be used together with %<ordered%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17308 cp/semantics.cc:8816
  #, gcc-internal-format
  msgid "too many %qs clauses on a task construct"
  msgstr ""
  
! #: c/c-typeck.cc:17429 cp/semantics.cc:9612
  #, gcc-internal-format
  msgid "%<inbranch%> clause is incompatible with %<notinbranch%>"
  msgstr ""
  
! #: c/c-typeck.cc:17464 cp/semantics.cc:9706
  #, gcc-internal-format
  msgid "%qD appears more than once in action clauses"
  msgstr ""
  
! #: c/c-typeck.cc:17475 cp/semantics.cc:9720
  #, gcc-internal-format
  msgid "%qD must be of %<omp_interop_t%>"
  msgstr ""
  
! #: c/c-typeck.cc:17484 cp/semantics.cc:9729
  #, gcc-internal-format
  msgid "%qD shall not be const"
  msgstr ""
  
! #: c/c-typeck.cc:17533 cp/semantics.cc:10082
  #, gcc-internal-format
  msgid "%qE is predetermined %qs for %qs"
  msgstr ""
  
! #: c/c-typeck.cc:17543
  #, gcc-internal-format
  msgid "%<const%> qualified %qE may appear only in %<shared%> or %<firstprivate%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:17574 cp/semantics.cc:9835
  #, gcc-internal-format
  msgid "%<simdlen%> clause value is bigger than %<safelen%> clause value"
  msgstr ""
  
! #: c/c-typeck.cc:17586 cp/semantics.cc:9848
  #, gcc-internal-format
  msgid "%<nonmonotonic%> schedule modifier specified together with %<ordered%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17597 c/c-typeck.cc:17605 cp/semantics.cc:9857
  #: cp/semantics.cc:9886
  #, gcc-internal-format
  msgid "%qs clause specified together with %<inscan%> %<reduction%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17653 cp/semantics.cc:9815
  #, gcc-internal-format
  msgid "%<linear%> clause step is a parameter %qD not specified in %<uniform%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17704 cp/semantics.cc:9865
  #, gcc-internal-format
  msgid "%<nogroup%> clause must not be used together with %<reduction%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17712 cp/semantics.cc:9876
  #, gcc-internal-format
  msgid "%<grainsize%> clause must not be used together with %<num_tasks%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17720 cp/semantics.cc:9932
  #, gcc-internal-format
  msgid "%<full%> clause must not be used together with %<partial%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17730 cp/semantics.cc:9905
  #, gcc-internal-format
  msgid "%<detach%> clause must not be used together with %<mergeable%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17748 cp/semantics.cc:10107
  #, gcc-internal-format
  msgid "the event handle of a %<detach%> clause should not be in a data-sharing clause"
  msgstr ""
  
! #: c/c-typeck.cc:17766 cp/semantics.cc:10178
  #, gcc-internal-format
  msgid "%<depend%> clause requires action clauses with %<targetsync%> interop-type"
  msgstr ""
  
! #: c/c-typeck.cc:17770 cp/semantics.cc:10182
  #, gcc-internal-format
  msgid "%<init%> clause lacks the %<targetsync%> modifier"
  msgstr ""
  
! #: c/c-typeck.cc:17942
  #, gcc-internal-format
  msgid "cannot use %<va_arg%> with reverse storage order"
  msgstr ""
  
! #: c/c-typeck.cc:17947
  #, fuzzy, gcc-internal-format
  msgid "second argument to %<va_arg%> is of incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-typeck.cc:17953
  #, gcc-internal-format
  msgid "second argument to %<va_arg%> is a function type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:17959
  #, gcc-internal-format
  msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
  msgstr ""
--- 52701,52959 ----
  msgid "%qD appears more than once in data clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16526 c/c-typeck.cc:16597 c/c-typeck.cc:17136
  #: cp/semantics.cc:7914 cp/semantics.cc:8018 cp/semantics.cc:9179
  #, gcc-internal-format
  msgid "%qD appears both in data and map clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16571 cp/semantics.cc:7991
  #, gcc-internal-format
  msgid "%qE is not a variable in clause %<firstprivate%>"
  msgstr ""
  
! #: c/c-typeck.cc:16611 cp/semantics.cc:8051
  #, gcc-internal-format
  msgid "%qE is not a variable in clause %<lastprivate%>"
  msgstr ""
  
! #: c/c-typeck.cc:16630 cp/semantics.cc:8473
  #, gcc-internal-format
  msgid "%qE is not a variable in %<aligned%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16637
  #, gcc-internal-format
  msgid "%qE in %<aligned%> clause is neither a pointer nor an array"
  msgstr ""
  
! #: c/c-typeck.cc:16644
  #, gcc-internal-format
  msgid "%<_Atomic%> %qD in %<aligned%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16651
  #, gcc-internal-format
  msgid "%qE appears more than once in %<aligned%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16664 cp/semantics.cc:8542
  #, gcc-internal-format
  msgid "%qE is not a variable in %<nontemporal%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16670
  #, gcc-internal-format
  msgid "%qE appears more than once in %<nontemporal%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16683 cp/semantics.cc:8581
  #, gcc-internal-format
  msgid "%qE is not a variable in %<allocate%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16689
  #, gcc-internal-format
  msgid "%qE appears more than once in %<allocate%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16761 cp/semantics.cc:8709
  #, gcc-internal-format
  msgid "%<depend%> clause with %<depobj%> dependence type on array section"
  msgstr ""
  
! #: c/c-typeck.cc:16776 cp/semantics.cc:8724
  #, gcc-internal-format
  msgid "%<omp_all_memory%> used with %<depend%> kind other than %<out%> or %<inout%>"
  msgstr ""
  
! #: c/c-typeck.cc:16784 cp/semantics.cc:8742
  #, gcc-internal-format
  msgid "%qE is not lvalue expression nor array section in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:16805 cp/semantics.cc:8764
  #, gcc-internal-format
  msgid "%qE does not have %<omp_depend_t%> type in %<depend%> clause with %<depobj%> dependence type"
  msgstr ""
  
! #: c/c-typeck.cc:16815 cp/semantics.cc:8776
  #, gcc-internal-format
  msgid "%qE should not have %<omp_depend_t%> type in %<depend%> clause with dependence type other than %<depobj%>"
  msgstr ""
  
! #: c/c-typeck.cc:16876 cp/semantics.cc:8876
  #, gcc-internal-format
  msgid "array section does not have mappable type in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:16896 c/c-typeck.cc:16972 c/c-typeck.cc:17008
  #: cp/semantics.cc:8896 cp/semantics.cc:8975 cp/semantics.cc:9011
  #, fuzzy, gcc-internal-format
  #| msgid "unsupported version"
  msgid "unsupported map expression %qE"
  msgstr "Ð½ÐµÐ¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÐ¼Ð°Ñ� Ð²ÐµÑ€Ñ�Ñ–Ñ�"
  
! #: c/c-typeck.cc:16936 c/c-typeck.cc:17113 cp/semantics.cc:8937
  #: cp/semantics.cc:9156
  #, gcc-internal-format
  msgid "%qD appears more than once in motion clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16944 c/c-typeck.cc:17119 cp/semantics.cc:8945
  #: cp/semantics.cc:9162
  #, gcc-internal-format
  msgid "%qD appears more than once in map clauses"
  msgstr ""
  
! #: c/c-typeck.cc:17063 c/c-typeck.cc:17205 cp/semantics.cc:9099
  #: cp/semantics.cc:9267
  #, gcc-internal-format
  msgid "%qD does not have a mappable type in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:17188 cp/semantics.cc:9248
  #, gcc-internal-format
  msgid "%qE is neither a variable nor a function name in clause %qs"
  msgstr ""
  
! #: c/c-typeck.cc:17214 cp/semantics.cc:9279
  #, gcc-internal-format
  msgid "%qE appears more than once on the same %<declare target%> directive"
  msgstr ""
  
! #: c/c-typeck.cc:17228 cp/semantics.cc:9295
  #, gcc-internal-format
  msgid "%qD is not an argument in %<uniform%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17231 cp/semantics.cc:9298
  #, gcc-internal-format
  msgid "%qE is not an argument in %<uniform%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17250
  #, gcc-internal-format
  msgid "%qs variable is not a pointer"
  msgstr ""
  
! #: c/c-typeck.cc:17257
  #, gcc-internal-format
  msgid "%qs variable is neither a pointer nor an array"
  msgstr ""
  
! #: c/c-typeck.cc:17305 c/c-typeck.cc:17410 cp/semantics.cc:9894
  #, gcc-internal-format
  msgid "%<order%> clause must not be used together with %<ordered%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17325 cp/semantics.cc:8816
  #, gcc-internal-format
  msgid "too many %qs clauses on a task construct"
  msgstr ""
  
! #: c/c-typeck.cc:17446 cp/semantics.cc:9612
  #, gcc-internal-format
  msgid "%<inbranch%> clause is incompatible with %<notinbranch%>"
  msgstr ""
  
! #: c/c-typeck.cc:17481 cp/semantics.cc:9706
  #, gcc-internal-format
  msgid "%qD appears more than once in action clauses"
  msgstr ""
  
! #: c/c-typeck.cc:17492 cp/semantics.cc:9720
  #, gcc-internal-format
  msgid "%qD must be of %<omp_interop_t%>"
  msgstr ""
  
! #: c/c-typeck.cc:17501 cp/semantics.cc:9729
  #, gcc-internal-format
  msgid "%qD shall not be const"
  msgstr ""
  
! #: c/c-typeck.cc:17550 cp/semantics.cc:10082
  #, gcc-internal-format
  msgid "%qE is predetermined %qs for %qs"
  msgstr ""
  
! #: c/c-typeck.cc:17560
  #, gcc-internal-format
  msgid "%<const%> qualified %qE may appear only in %<shared%> or %<firstprivate%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:17591 cp/semantics.cc:9835
  #, gcc-internal-format
  msgid "%<simdlen%> clause value is bigger than %<safelen%> clause value"
  msgstr ""
  
! #: c/c-typeck.cc:17603 cp/semantics.cc:9848
  #, gcc-internal-format
  msgid "%<nonmonotonic%> schedule modifier specified together with %<ordered%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17614 c/c-typeck.cc:17622 cp/semantics.cc:9857
  #: cp/semantics.cc:9886
  #, gcc-internal-format
  msgid "%qs clause specified together with %<inscan%> %<reduction%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17670 cp/semantics.cc:9815
  #, gcc-internal-format
  msgid "%<linear%> clause step is a parameter %qD not specified in %<uniform%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17721 cp/semantics.cc:9865
  #, gcc-internal-format
  msgid "%<nogroup%> clause must not be used together with %<reduction%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17729 cp/semantics.cc:9876
  #, gcc-internal-format
  msgid "%<grainsize%> clause must not be used together with %<num_tasks%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17737 cp/semantics.cc:9932
  #, gcc-internal-format
  msgid "%<full%> clause must not be used together with %<partial%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17747 cp/semantics.cc:9905
  #, gcc-internal-format
  msgid "%<detach%> clause must not be used together with %<mergeable%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17765 cp/semantics.cc:10107
  #, gcc-internal-format
  msgid "the event handle of a %<detach%> clause should not be in a data-sharing clause"
  msgstr ""
  
! #: c/c-typeck.cc:17783 cp/semantics.cc:10178
  #, gcc-internal-format
  msgid "%<depend%> clause requires action clauses with %<targetsync%> interop-type"
  msgstr ""
  
! #: c/c-typeck.cc:17787 cp/semantics.cc:10182
  #, gcc-internal-format
  msgid "%<init%> clause lacks the %<targetsync%> modifier"
  msgstr ""
  
! #: c/c-typeck.cc:17959
  #, gcc-internal-format
  msgid "cannot use %<va_arg%> with reverse storage order"
  msgstr ""
  
! #: c/c-typeck.cc:17964
  #, fuzzy, gcc-internal-format
  msgid "second argument to %<va_arg%> is of incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: c/c-typeck.cc:17970
  #, gcc-internal-format
  msgid "second argument to %<va_arg%> is a function type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:17976
  #, gcc-internal-format
  msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
  msgstr ""
*************** msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ñ†ÐµÐ»Ð° Ñž else-Ð²
*** 53169,53512 ****
  msgid "expected case label"
  msgstr ""
  
! #: cobol/cdf-copy.cc:109
  msgid "REPLACING %zu characters exceeds system capacity'%s'"
  msgstr ""
  
! #: cobol/cobol1.cc:275
  #, gcc-internal-format
  msgid "COBOL requires a 64-bit configuration"
  msgstr ""
  
! #: cobol/cobol1.cc:326
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "exception '%s'"
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"-%s\""
  
! #: cobol/cobol1.cc:408
  #, gcc-internal-format, gfc-internal-format
  msgid "could not execute preprocessor %s"
  msgstr ""
  
! #: cobol/cobol1.cc:413
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "could not include %s"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ð·Ð½Ð°Ð¹Ñ�Ñ†Ñ– ÐºÑ€Ñ‹Ð½Ñ–Ñ†Ñƒ %s\n"
  
  #. This isn't right.  All OPT_main should be replaced
! #: cobol/cobol1.cc:419
  #, gcc-internal-format
  msgid "We should never see a non-equal dash-main in cobol1.c"
  msgstr ""
  
! #: cobol/except.cc:53
! msgid "no such exception: 0x%04x"
  msgstr ""
  
! #: cobol/genapi.cc:332
  #, gcc-internal-format
  msgid "Probable cause: it was referenced without being defined."
  msgstr ""
  
! #: cobol/genapi.cc:571
  #, gcc-internal-format
! msgid "Nice try, but you can't fire me. I quit!"
  msgstr ""
  
! #: cobol/genapi.cc:1486
  #, gcc-internal-format, gfc-internal-format
! msgid "%s(): Knows not the variable type %s for %s"
  msgstr ""
  
! #: cobol/genapi.cc:2176
  #, gcc-internal-format, gfc-internal-format
! msgid "I don't know how to MOVE an alphabetical string to %s(%s) \n"
  msgstr ""
  
! #: cobol/genapi.cc:2244
! #, gcc-internal-format, gfc-internal-format
! msgid "%s(): field->type %s must be literal or alphanumeric"
  msgstr ""
  
! #: cobol/genapi.cc:5728
! #, gcc-internal-format, gfc-internal-format
! msgid "%s(): Invalid field type %s:"
  msgstr ""
  
! #: cobol/genapi.cc:6929 cobol/genapi.cc:6935 cobol/genapi.cc:6941
! #, gcc-internal-format, gfc-internal-format
! msgid "parser_logop() was called with variable %s on line %d, which is not a FldConditional\n"
  msgstr ""
  
! #: cobol/genapi.cc:7048 cobol/genapi.cc:7112
! #, gcc-internal-format, gfc-internal-format
! msgid "parser_relop() was called with variable %s, which is not a FldConditional\n"
  msgstr ""
  
! #: cobol/genapi.cc:7158
! #, gcc-internal-format, gfc-internal-format
! msgid "parser_if() was called with variable %s, which is not a FldConditional\n"
  msgstr ""
  
! #: cobol/genapi.cc:7411
  #, gcc-internal-format, gfc-internal-format
! msgid "###### candidate %s has unimplemented CVT_type %d(%s)\n"
  msgstr ""
  
! #: cobol/genapi.cc:7422
! #, gcc-internal-format, gfc-internal-format
! msgid "###### unknown setop_t code %d\n"
  msgstr ""
  
! #: cobol/genapi.cc:7618
! msgid "%s:%d: %zu exceeds MAXIMUM_UNTILS of %d, line %d"
  msgstr ""
  
! #: cobol/genapi.cc:8624
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d: ignoring subscripts"
  msgstr ""
  
! #: cobol/genapi.cc:8846 cobol/genapi.cc:9306
  #, gcc-internal-format, gfc-internal-format
! msgid "%s(): called with NULL *file"
  msgstr ""
  
! #: cobol/genapi.cc:8971
! #, gcc-internal-format, gfc-internal-format
! msgid "%s:%d file %s access mode is 'file_inaccessible_e' in %s"
  msgstr ""
  
! #: cobol/genapi.cc:9044
  #, gcc-internal-format
! msgid "parser_file_open called with NULL *file"
  msgstr ""
  
! #: cobol/genapi.cc:9049
! #, gcc-internal-format, gfc-internal-format
! msgid "parser_file_open for %s called with NULL var_decl_node"
  msgstr ""
  
! #: cobol/genapi.cc:9054
  #, gcc-internal-format, gfc-internal-format
  msgid "EXTEND can only be used where %s is ACCESS MODE SEQUENTIAL"
  msgstr ""
  
! #: cobol/genapi.cc:9122
  #, gcc-internal-format
! msgid "parser_file_close called with NULL *file"
  msgstr ""
  
! #: cobol/genapi.cc:9127
! #, gcc-internal-format, gfc-internal-format
! msgid "parser_file_close for %s called with NULL file->var_decl_node"
  msgstr ""
  
! #: cobol/genapi.cc:9180
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d file %s 'where' is zero in %s"
  msgstr ""
  
! #: cobol/genapi.cc:9190
  #, gcc-internal-format
! msgid "parser_file_read called with NULL *file"
  msgstr ""
  
! #: cobol/genapi.cc:9195
! #, gcc-internal-format, gfc-internal-format
! msgid "parser_file_read for %s called with NULL file->var_decl_node"
  msgstr ""
  
! #: cobol/genapi.cc:9200
  #, gcc-internal-format
! msgid "parser_file_read called with NULL *field"
  msgstr ""
  
! #: cobol/genapi.cc:9205
! #, gcc-internal-format, gfc-internal-format
! msgid "parser_file_read for %s called with NULL field->var_decl_node"
  msgstr ""
  
! #: cobol/genapi.cc:9210
! #, gcc-internal-format, gfc-internal-format
! msgid "%s:%d file %s is RELATIVE/SEQUENTIAL, but 'where' >= 0"
  msgstr ""
  
! #: cobol/genapi.cc:9219
! #, gcc-internal-format, gfc-internal-format
! msgid "%s:%d file %s is RELATIVE/RANDOM, but 'where' < 0"
  msgstr ""
  
! #: cobol/genapi.cc:9262
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d file %s 'sequentially' is %d in %s"
  msgstr ""
  
! #: cobol/genapi.cc:9311
! #, gcc-internal-format, gfc-internal-format
! msgid "%s(): for %s called with NULL file->var_decl_node"
  msgstr ""
  
! #: cobol/genapi.cc:9317
  #, gcc-internal-format, gfc-internal-format
! msgid "%s(): called with NULL *field"
  msgstr ""
  
! #: cobol/genapi.cc:9322
! #, gcc-internal-format, gfc-internal-format
! msgid "%s(): for %s called with NULL field->var_decl_node"
  msgstr ""
  
! #: cobol/genapi.cc:9457
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d file %s is INDEXED/SEQUENTIAL, but 'sequentially' is false"
  msgstr ""
  
! #: cobol/genapi.cc:11122
  #, gcc-internal-format, gfc-internal-format
! msgid "%s(): asked to sort %s, but it's not a table"
  msgstr ""
  
  #. Having both or neither violates SORT syntax
! #: cobol/genapi.cc:11250
  #, gcc-internal-format, gfc-internal-format
! msgid "%s(): syntax error -- both (or neither) USING and input-proc are specified"
  msgstr ""
  
! #: cobol/genapi.cc:11379
  #, gcc-internal-format, gfc-internal-format
! msgid "%s(): syntax error -- both (or neither) GIVING and output-proc are specified"
  msgstr ""
  
! #: cobol/genapi.cc:11786
  #, gcc-internal-format, gfc-internal-format
! msgid "%s(): syntax error -- both (or neither) files and output-proc are specified"
  msgstr ""
  
! #: cobol/genapi.cc:12187
  #, gcc-internal-format
  msgid "CALL USING BY CONTENT <temporary> would require REPOSITORY PROTOTYPES."
  msgstr ""
  
! #: cobol/genapi.cc:12439
  #, gcc-internal-format, gfc-internal-format
! msgid "%s(): What in the name of Nero's fiddle are we doing here?"
  msgstr ""
  
! #: cobol/genapi.cc:13948
! #, gcc-internal-format, gfc-internal-format
! msgid "In parser_move(%s to %s), the move of FldLiteralN to %s hasn't been implemented"
  msgstr ""
  
! #: cobol/genapi.cc:14184
! #, gcc-internal-format, gfc-internal-format
! msgid "In mh_dest_is_float(%s to %s), the move of %s to %s hasn't been implemented"
  msgstr ""
  
! #: cobol/genapi.cc:16279
  #, gcc-internal-format, gfc-internal-format
  msgid "LEVEL 01 (%s) OCCURS has insufficient data.memsize"
  msgstr ""
  
! #: cobol/genapi.cc:16351
  #, gcc-internal-format
! msgid "parser_symbol_add() was called with a NULL new_var\n"
  msgstr ""
  
! #: cobol/genapi.cc:16379
! msgid "%s(): %2.2d %s is a table, but it improperly has a capacity of zero"
  msgstr ""
  
! #: cobol/genapi.cc:16419
  #, gcc-internal-format, gfc-internal-format
! msgid "parser_symbol_add(): %s is its own ancestor"
  msgstr ""
  
! #: cobol/genapi.cc:16425
! msgid "parser_symbol_add(): %2.2d %s has null ancestor"
  msgstr ""
  
! #: cobol/genapi.cc:16433
  #, gcc-internal-format, gfc-internal-format
! msgid "parser_symbol_add( %s ) improperly has a non-null var_decl_node\n"
  msgstr ""
  
! #: cobol/genapi.cc:16638
! msgid "%s(): %2.2d %s<%s> improperly has a data.capacity of zero"
  msgstr ""
  
! #: cobol/gengen.cc:363
  #, gcc-internal-format
! msgid "The given type is not NULL, and that's just not fair"
  msgstr ""
  
! #: cobol/gengen.cc:372
  #, gcc-internal-format
! msgid "The given type is not a DECL or a TYPE"
  msgstr ""
  
! #: cobol/gengen.cc:416
  #, gcc-internal-format, gfc-internal-format
  msgid "Unknown type %d"
  msgstr ""
  
! #: cobol/gengen.cc:2941
  #, gcc-internal-format
! msgid "Residual context count!"
  msgstr ""
  
! #: cobol/genmath.cc:1392
! #, gcc-internal-format, gfc-internal-format
! msgid "parser_op() doesn't know how to evaluate \"%s = %s %c %s\"\n"
  msgstr ""
  
! #: cobol/genutil.cc:322 cobol/genutil.cc:601
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "Too many subscripts"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ ÑƒÐ²Ð°Ñ…Ð¾Ð´Ð·Ñ�Ñ‡Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð°Ñž"
  
! #: cobol/lexio.cc:1490
  #, gcc-internal-format, gfc-internal-format
! msgid "%s pid %d terminated by %s"
  msgstr ""
  
! #: cobol/lexio.cc:1495
  #, gcc-internal-format, gfc-internal-format
  msgid "%s exited with status %d"
  msgstr ""
  
! #: cobol/symbols.cc:450
  msgid "%s:%d: LblNone '%s' has parent #%zu"
  msgstr ""
  
! #: cobol/symbols.cc:1907
  #, gcc-internal-format, gfc-internal-format
  msgid "%s: key must be field"
  msgstr ""
  
! #: cobol/symbols.cc:3709 cobol/symbols.cc:3816 cobol/symbols.cc:3846
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d: could not add '%s'"
  msgstr ""
  
! #: cobol/util.cc:1108
  #, gcc-internal-format, gfc-internal-format
  msgid "logic error: MOVE %s %s invalid type:"
  msgstr ""
  
! #: cobol/util.cc:1705
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "%s: compiling `%s'\n"
  msgid "%s: regcomp: %s"
  msgstr "%s: ÐºÐ°Ð¼Ð¿Ñ–Ð»ÑŽÐµÑ†Ñ†Ð° \"%s\"\n"
  
! #: cobol/util.cc:1815
  #, gcc-internal-format, gfc-internal-format
  msgid "logic error: missing inode for %s"
  msgstr ""
  
! #: cobol/util.cc:2141
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "%s: compiling `%s'\n"
  msgid "failed compiling %s"
--- 53176,53569 ----
  msgid "expected case label"
  msgstr ""
  
! #: cobol/cdf-copy.cc:108
  msgid "REPLACING %zu characters exceeds system capacity'%s'"
  msgstr ""
  
! #: cobol/cobol1.cc:274
  #, gcc-internal-format
  msgid "COBOL requires a 64-bit configuration"
  msgstr ""
  
! #: cobol/cobol1.cc:325
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "exception '%s'"
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"-%s\""
  
! #: cobol/cobol1.cc:414
  #, gcc-internal-format, gfc-internal-format
  msgid "could not execute preprocessor %s"
  msgstr ""
  
! #: cobol/cobol1.cc:420
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "could not include %s"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ð·Ð½Ð°Ð¹Ñ�Ñ†Ñ– ÐºÑ€Ñ‹Ð½Ñ–Ñ†Ñƒ %s\n"
  
  #. This isn't right.  All OPT_main should be replaced
! #: cobol/cobol1.cc:426
  #, gcc-internal-format
  msgid "We should never see a non-equal dash-main in cobol1.c"
  msgstr ""
  
! #: cobol/except.cc:54
! #, gcc-internal-format
! msgid "no such exception: 0x%x"
  msgstr ""
  
! #: cobol/genapi.cc:354
  #, gcc-internal-format
  msgid "Probable cause: it was referenced without being defined."
  msgstr ""
  
! #: cobol/genapi.cc:600
  #, gcc-internal-format
! msgid "Nice try, but you cannot fire me."
  msgstr ""
  
! #: cobol/genapi.cc:1214
  #, gcc-internal-format, gfc-internal-format
! msgid "%s should not be null"
  msgstr ""
  
! #: cobol/genapi.cc:1792
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: Knows not the variable type %s for %s"
  msgstr ""
  
! #: cobol/genapi.cc:2481
! #, gcc-internal-format
! msgid "I don%'t know how to MOVE an alphabetical string to %s(%s)"
  msgstr ""
  
! #: cobol/genapi.cc:2549
! #, gcc-internal-format
! msgid "%s: %<field->type%> %s must be literal or alphanumeric"
  msgstr ""
  
! #: cobol/genapi.cc:4460
! #, gcc-internal-format
! msgid "Not valid for ACCEPT statement."
  msgstr ""
  
! #: cobol/genapi.cc:5488
! #, gcc-internal-format
! msgid "Attempting to send to an input device."
  msgstr ""
  
! #: cobol/genapi.cc:5511
! #, gcc-internal-format
! msgid "Not valid for DISPLAY statement."
  msgstr ""
  
! #: cobol/genapi.cc:6412
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: Invalid field type %s:"
  msgstr ""
  
! #: cobol/genapi.cc:7622 cobol/genapi.cc:7628 cobol/genapi.cc:7634
! #, gcc-internal-format
! msgid "%<parser_logop()%> was called with variable %s on line %d, which is not a FldConditional"
  msgstr ""
  
! #: cobol/genapi.cc:7741
! #, gcc-internal-format
! msgid "%<parser_relop%> was called with variable %qs, which is not a FldConditional"
  msgstr ""
  
! #: cobol/genapi.cc:7805
! #, gcc-internal-format
! msgid "%<parser_relop()%> was called with variable %s, which is not a FldConditional"
! msgstr ""
! 
! #: cobol/genapi.cc:7851
! #, gcc-internal-format
! msgid "%<parser_if()%> was called with variable %s, which is not a FldConditional"
! msgstr ""
! 
! #: cobol/genapi.cc:8116
! #, gcc-internal-format
! msgid "candidate %s has unimplemented %<CVT_type%> %d(%s)"
! msgstr ""
! 
! #: cobol/genapi.cc:8127
! #, gcc-internal-format
! msgid "unknown %<setop_t%> code %d"
! msgstr ""
! 
! #: cobol/genapi.cc:8315
! #, gcc-internal-format
! msgid "%s:%d: %u exceeds %<MAXIMUM_UNTILS%> of %d, line %d"
! msgstr ""
! 
! #: cobol/genapi.cc:9324
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d: ignoring subscripts"
  msgstr ""
  
! #: cobol/genapi.cc:9538 cobol/genapi.cc:10006
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: called with NULL *file"
  msgstr ""
  
! #: cobol/genapi.cc:9663
! #, gcc-internal-format
! msgid "%s:%d file %s access mode is %<file_inaccessible_e%> in %s"
  msgstr ""
  
! #: cobol/genapi.cc:9737
  #, gcc-internal-format
! msgid "%<parser_file_open%> called with NULL *file"
  msgstr ""
  
! #: cobol/genapi.cc:9742
! #, gcc-internal-format
! msgid "%<parser_file_open%> for %s called with NULL %<var_decl_node%>"
  msgstr ""
  
! #: cobol/genapi.cc:9748
  #, gcc-internal-format, gfc-internal-format
  msgid "EXTEND can only be used where %s is ACCESS MODE SEQUENTIAL"
  msgstr ""
  
! #: cobol/genapi.cc:9817
  #, gcc-internal-format
! msgid "%<parser_file_close%> called with NULL *file"
  msgstr ""
  
! #: cobol/genapi.cc:9822
! #, gcc-internal-format
! msgid "%<parser_file_close%> for %s called with NULL %<file->var_decl_node%>"
  msgstr ""
  
! #: cobol/genapi.cc:9877
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d file %s 'where' is zero in %s"
  msgstr ""
  
! #: cobol/genapi.cc:9887
  #, gcc-internal-format
! msgid "%<parser_file_read%> called with NULL *file"
  msgstr ""
  
! #: cobol/genapi.cc:9892
! #, gcc-internal-format
! msgid "%<parser_file_read%> for %s called with NULL %<file->var_decl_node%>"
  msgstr ""
  
! #: cobol/genapi.cc:9898
  #, gcc-internal-format
! msgid "%<parser_file_read%> called with NULL *field"
  msgstr ""
  
! #: cobol/genapi.cc:9903
! #, gcc-internal-format
! msgid "%<parser_file_read%> for %s called with NULL %<field->var_decl_node%>"
  msgstr ""
  
! #: cobol/genapi.cc:9909
! #, gcc-internal-format
! msgid "%s:%d file %s is RELATIVE/SEQUENTIAL, but %<where >= 0%>"
  msgstr ""
  
! #: cobol/genapi.cc:9918
! #, gcc-internal-format
! msgid "%s:%d file %s is RELATIVE/RANDOM, but %<where < 0%>"
  msgstr ""
  
! #: cobol/genapi.cc:9962
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d file %s 'sequentially' is %d in %s"
  msgstr ""
  
! #: cobol/genapi.cc:10011
! #, gcc-internal-format
! msgid "%s: for %s called with NULL %<file->var_decl_node%>"
  msgstr ""
  
! #: cobol/genapi.cc:10017
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: called with NULL *field"
  msgstr ""
  
! #: cobol/genapi.cc:10022
! #, gcc-internal-format
! msgid "%s: for %s called with NULL %<field->var_decl_node%>"
  msgstr ""
  
! #: cobol/genapi.cc:10107
! #, gcc-internal-format
! msgid "The file pointer should not be null"
! msgstr ""
! 
! #: cobol/genapi.cc:10161
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d file %s is INDEXED/SEQUENTIAL, but 'sequentially' is false"
  msgstr ""
  
! #: cobol/genapi.cc:11881
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: asked to sort %s, which is not a table"
  msgstr ""
  
  #. Having both or neither violates SORT syntax
! #: cobol/genapi.cc:12013
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: syntax error: both (or neither) USING and input-proc are specified"
  msgstr ""
  
! #: cobol/genapi.cc:12147
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: syntax error: both (or neither) GIVING and output-proc are specified"
  msgstr ""
  
! #: cobol/genapi.cc:12569
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: syntax error: both (or neither) files and output-proc are specified"
  msgstr ""
  
! #: cobol/genapi.cc:12973
  #, gcc-internal-format
  msgid "CALL USING BY CONTENT <temporary> would require REPOSITORY PROTOTYPES."
  msgstr ""
  
! #: cobol/genapi.cc:13264
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: What in the name of Nero are we doing here?"
  msgstr ""
  
! #: cobol/genapi.cc:14560
! #, gcc-internal-format
! msgid "In %<parser_move(%s to %s)%>, the move of FldLiteralN to %s is unimplemented"
  msgstr ""
  
! #: cobol/genapi.cc:14796
! #, gcc-internal-format
! msgid "In %<mh_dest_is_float%>(%s to %s), the move of %s to %s is unimplemented"
  msgstr ""
  
! #: cobol/genapi.cc:16918
  #, gcc-internal-format, gfc-internal-format
  msgid "LEVEL 01 (%s) OCCURS has insufficient data.memsize"
  msgstr ""
  
! #: cobol/genapi.cc:16990
  #, gcc-internal-format
! msgid "%<parser_symbol_add()%> was called with a NULL %<new_var%>"
  msgstr ""
  
! #: cobol/genapi.cc:17020
! #, gcc-internal-format, gfc-internal-format
! msgid "%s: %d %s is a table, but it improperly has a capacity of zero"
  msgstr ""
  
! #: cobol/genapi.cc:17060
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: %s is its own ancestor"
  msgstr ""
  
! #: cobol/genapi.cc:17065
! #, gcc-internal-format
! msgid "%s: %d %qs has NULL ancestor"
  msgstr ""
  
! #: cobol/genapi.cc:17072
! #, gcc-internal-format
! msgid "%s(%s) improperly has a non-null %<var_decl_node%>"
! msgstr ""
! 
! #: cobol/genapi.cc:17267
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: %d %s<%s> improperly has a data.capacity of zero"
  msgstr ""
  
! #: cobol/genapi.cc:17334
! #, gcc-internal-format
! msgid "%<bytes_to_allocate%> is zero for %s (symbol number "
  msgstr ""
  
! #: cobol/gengen.cc:360
  #, gcc-internal-format
! msgid "The given type is NULL, and that is just not fair"
  msgstr ""
  
! #: cobol/gengen.cc:369
  #, gcc-internal-format
! msgid "The given type is not a declaration or a TYPE"
  msgstr ""
  
! #: cobol/gengen.cc:413
  #, gcc-internal-format, gfc-internal-format
  msgid "Unknown type %d"
  msgstr ""
  
! #: cobol/gengen.cc:482
  #, gcc-internal-format
! msgid "Attempting an assignment of differing types."
  msgstr ""
  
! #: cobol/gengen.cc:2893
! #, gcc-internal-format
! msgid "Residual context count"
  msgstr ""
  
! #: cobol/genmath.cc:1385
! #, gcc-internal-format
! msgid "%<parser_op()%> doesn%'t know how to evaluate %<%s = %s %c %s%>"
! msgstr ""
! 
! #: cobol/genutil.cc:596
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "Too many subscripts"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ ÑƒÐ²Ð°Ñ…Ð¾Ð´Ð·Ñ�Ñ‡Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð°Ñž"
  
! #: cobol/genutil.cc:761
! #, gcc-internal-format
! msgid "cannot get %<float%> value from %s"
! msgstr ""
! 
! #: cobol/lexio.cc:1581
  #, gcc-internal-format, gfc-internal-format
! msgid "%s pid %ld terminated by %s"
  msgstr ""
  
! #: cobol/lexio.cc:1586
  #, gcc-internal-format, gfc-internal-format
  msgid "%s exited with status %d"
  msgstr ""
  
! #: cobol/symbols.cc:418
  msgid "%s:%d: LblNone '%s' has parent #%zu"
  msgstr ""
  
! #: cobol/symbols.cc:1901
  #, gcc-internal-format, gfc-internal-format
  msgid "%s: key must be field"
  msgstr ""
  
! #: cobol/symbols.cc:3712 cobol/symbols.cc:3815 cobol/symbols.cc:3845
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d: could not add '%s'"
  msgstr ""
  
! #: cobol/util.cc:1276
  #, gcc-internal-format, gfc-internal-format
  msgid "logic error: MOVE %s %s invalid type:"
  msgstr ""
  
! #: cobol/util.cc:1873
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "%s: compiling `%s'\n"
  msgid "%s: regcomp: %s"
  msgstr "%s: ÐºÐ°Ð¼Ð¿Ñ–Ð»ÑŽÐµÑ†Ñ†Ð° \"%s\"\n"
  
! #: cobol/util.cc:2022
  #, gcc-internal-format, gfc-internal-format
  msgid "logic error: missing inode for %s"
  msgstr ""
  
! #: cobol/util.cc:2430
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "%s: compiling `%s'\n"
  msgid "failed compiling %s"
*************** msgstr "Ð½ÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ñ‹ Ð°Ð¿Ñ�Ñ€Ð°Ñ‚Ð
*** 53948,53954 ****
  msgid "%q#D is private within this context"
  msgstr ""
  
! #: cp/call.cc:8377 cp/decl.cc:9615
  #, fuzzy, gcc-internal-format
  msgid "declared private here"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
--- 54005,54011 ----
  msgid "%q#D is private within this context"
  msgstr ""
  
! #: cp/call.cc:8377 cp/decl.cc:9613
  #, fuzzy, gcc-internal-format
  msgid "declared private here"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
*************** msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿
*** 53958,53964 ****
  msgid "%q#D is protected within this context"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/call.cc:8383 cp/decl.cc:9616
  #, fuzzy, gcc-internal-format
  #| msgid "called from here"
  msgid "declared protected here"
--- 54015,54021 ----
  msgid "%q#D is protected within this context"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/call.cc:8383 cp/decl.cc:9614
  #, fuzzy, gcc-internal-format
  #| msgid "called from here"
  msgid "declared protected here"
*************** msgstr ""
*** 54284,54290 ****
  msgid "constructor delegates to itself"
  msgstr ""
  
! #: cp/call.cc:11805 cp/typeck.cc:10490
  msgid "cannot convert %qH to %qI"
  msgstr ""
  
--- 54341,54347 ----
  msgid "constructor delegates to itself"
  msgstr ""
  
! #: cp/call.cc:11805 cp/typeck.cc:10606
  msgid "cannot convert %qH to %qI"
  msgstr ""
  
*************** msgstr ""
*** 54303,54309 ****
  msgid "call to non-function %qD"
  msgstr ""
  
! #: cp/call.cc:11947 cp/pt.cc:17467 cp/typeck.cc:3508
  #, gcc-internal-format
  msgid "cannot call constructor %<%T::%D%> directly"
  msgstr ""
--- 54360,54366 ----
  msgid "call to non-function %qD"
  msgstr ""
  
! #: cp/call.cc:11947 cp/pt.cc:17496 cp/typeck.cc:3508
  #, gcc-internal-format
  msgid "cannot call constructor %<%T::%D%> directly"
  msgstr ""
*************** msgstr ""
*** 54462,54469 ****
  msgid "%q#D cannot be overloaded with %q#D"
  msgstr ""
  
! #: cp/class.cc:1461 cp/decl.cc:1946 cp/decl.cc:1958 cp/decl.cc:1984
! #: cp/decl.cc:2006 cp/name-lookup.cc:2918 cp/name-lookup.cc:3235
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration `%D'"
  msgid "previous declaration %q#D"
--- 54519,54526 ----
  msgid "%q#D cannot be overloaded with %q#D"
  msgstr ""
  
! #: cp/class.cc:1461 cp/decl.cc:1944 cp/decl.cc:1956 cp/decl.cc:1982
! #: cp/decl.cc:2004 cp/name-lookup.cc:2918 cp/name-lookup.cc:3235
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration `%D'"
  msgid "previous declaration %q#D"
*************** msgstr ""
*** 54795,54990 ****
  msgid "  non-static data member %qD has volatile type"
  msgstr ""
  
! #: cp/class.cc:6466
  #, gcc-internal-format
  msgid "base class %q#T has accessible non-virtual destructor"
  msgstr ""
  
! #: cp/class.cc:6495
  #, gcc-internal-format
  msgid "non-static reference %q#D in class without a constructor"
  msgstr ""
  
! #: cp/class.cc:6501
  #, gcc-internal-format
  msgid "non-static const member %q#D in class without a constructor"
  msgstr ""
  
! #: cp/class.cc:6834
  #, gcc-internal-format
  msgid "offset of %qT base class for %<-std=c++14%> and up changes in %<-fabi-version=17%> (GCC 12)"
  msgstr ""
  
! #: cp/class.cc:6838
  #, gcc-internal-format
  msgid "offset of %qD for %<-std=c++14%> and up changes in %<-fabi-version=17%> (GCC 12)"
  msgstr ""
  
! #: cp/class.cc:6878
  #, gcc-internal-format
  msgid "direct base %qT inaccessible in %qT due to ambiguity"
  msgstr ""
  
! #: cp/class.cc:6890
  #, gcc-internal-format
  msgid "virtual base %qT inaccessible in %qT due to ambiguity"
  msgstr ""
  
! #: cp/class.cc:7132
  #, gcc-internal-format
  msgid "offset of %qD is not ABI-compliant and may change in a future version of GCC"
  msgstr ""
  
! #: cp/class.cc:7328
  #, fuzzy, gcc-internal-format
  #| msgid "size of `%s' is larger than %d bytes"
  msgid "size of type %qT is too large (%qE bytes)"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ \"%s\" Ð±Ð¾Ð»ÑŒÑˆ Ñ‡Ð°Ð¼ %d Ð±Ð°Ð¹Ñ‚"
  
! #: cp/class.cc:7649
  #, gcc-internal-format
  msgid "invalid use of %q#T with a zero-size array in %q#D"
  msgstr ""
  
! #: cp/class.cc:7650
  #, gcc-internal-format
  msgid "invalid use of %q#T with a flexible array member in %q#T"
  msgstr ""
  
! #: cp/class.cc:7655
  #, fuzzy, gcc-internal-format
  msgid "array member %q#D declared here"
  msgstr "Ñ‚Ñ‹Ð¿ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" Ð½Ðµ Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ñ‹"
  
! #: cp/class.cc:7684
  #, gcc-internal-format
  msgid "zero-size array member %qD not at end of %q#T"
  msgstr ""
  
! #: cp/class.cc:7686
  #, gcc-internal-format
  msgid "zero-size array member %qD in an otherwise empty %q#T"
  msgstr ""
  
! #: cp/class.cc:7695 cp/class.cc:7730
  #, fuzzy, gcc-internal-format
  #| msgid "previous definition of `%#T'"
  msgid "in the definition of %q#T"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ `%#T'"
  
! #: cp/class.cc:7703
  #, gcc-internal-format
  msgid "flexible array member %qD not at end of %q#T"
  msgstr ""
  
! #: cp/class.cc:7705
  #, gcc-internal-format
  msgid "flexible array member %qD in an otherwise empty %q#T is a GCC extension"
  msgstr ""
  
! #: cp/class.cc:7728
  #, gcc-internal-format
  msgid "next member %q#D declared here"
  msgstr ""
  
! #: cp/class.cc:7840 cp/decl.cc:18273 cp/parser.cc:28411
  #, fuzzy, gcc-internal-format
  #| msgid "previous definition of `%#T'"
  msgid "redefinition of %q#T"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ `%#T'"
  
! #: cp/class.cc:7987
  #, gcc-internal-format
  msgid "%q#T has virtual functions and accessible non-virtual destructor"
  msgstr ""
  
! #: cp/class.cc:8015
  #, gcc-internal-format
  msgid "type transparent %q#T does not have any fields"
  msgstr ""
  
! #: cp/class.cc:8021
  #, gcc-internal-format
  msgid "type transparent class %qT has base classes"
  msgstr ""
  
! #: cp/class.cc:8025
  #, gcc-internal-format
  msgid "type transparent class %qT has virtual functions"
  msgstr ""
  
! #: cp/class.cc:8031
  #, gcc-internal-format
  msgid "type transparent %q#T cannot be made transparent because the type of the first field has a different ABI from the class overall"
  msgstr ""
  
! #: cp/class.cc:8202
  #, gcc-internal-format
  msgid "definition of %qD does not match %<#include <initializer_list>%>"
  msgstr ""
  
! #: cp/class.cc:8213
  #, gcc-internal-format
  msgid "trying to finish struct, but kicked out due to previous parse errors"
  msgstr ""
  
! #: cp/class.cc:8720
  #, fuzzy, gcc-internal-format
  #| msgid "language %s not recognized"
  msgid "language string %<\"%E\"%> not recognized"
  msgstr "Ð¼Ð¾Ð²Ð° %s Ð½Ðµ Ñ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ð°"
  
! #: cp/class.cc:8810
  #, gcc-internal-format
  msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
  msgstr ""
  
! #: cp/class.cc:8976
  #, gcc-internal-format
  msgid "no matches converting function %qD to type %q#T"
  msgstr ""
  
! #: cp/class.cc:9004
  #, gcc-internal-format
  msgid "converting overloaded function %qD to type %q#T is ambiguous"
  msgstr ""
  
! #: cp/class.cc:9046
  #, gcc-internal-format
  msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to explicit object member function."
  msgstr ""
  
! #: cp/class.cc:9051
  #, gcc-internal-format
  msgid "a pointer to explicit object member function can only be formed with %<&%E%>"
  msgstr ""
  
! #: cp/class.cc:9061
  #, fuzzy, gcc-internal-format
  msgid "assuming pointer to member %qD"
  msgstr "Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/class.cc:9064
  #, gcc-internal-format
  msgid "(a pointer to member can only be formed with %<&%E%>)"
  msgstr ""
  
! #: cp/class.cc:9143
  #, gcc-internal-format
  msgid "not enough type information"
  msgstr ""
  
! #: cp/class.cc:9163
  #, gcc-internal-format
  msgid "cannot convert %qE from type %qT to type %qT"
  msgstr ""
  
! #: cp/class.cc:9464
  #, gcc-internal-format
  msgid "declaration of %q#D changes meaning of %qD"
  msgstr ""
  
! #: cp/class.cc:9467
  #, gcc-internal-format
  msgid "used here to mean %q#D"
  msgstr ""
--- 54852,55057 ----
  msgid "  non-static data member %qD has volatile type"
  msgstr ""
  
! #: cp/class.cc:6478
  #, gcc-internal-format
  msgid "base class %q#T has accessible non-virtual destructor"
  msgstr ""
  
! #: cp/class.cc:6507
  #, gcc-internal-format
  msgid "non-static reference %q#D in class without a constructor"
  msgstr ""
  
! #: cp/class.cc:6513
  #, gcc-internal-format
  msgid "non-static const member %q#D in class without a constructor"
  msgstr ""
  
! #: cp/class.cc:6853
  #, gcc-internal-format
  msgid "offset of %qT base class for %<-std=c++14%> and up changes in %<-fabi-version=17%> (GCC 12)"
  msgstr ""
  
! #: cp/class.cc:6858
! #, gcc-internal-format
! msgid "offset of %qT base class for %<-std=c++20%> and up changes in %<-fabi-version=21%> (GCC 16)"
! msgstr ""
! 
! #: cp/class.cc:6866
  #, gcc-internal-format
  msgid "offset of %qD for %<-std=c++14%> and up changes in %<-fabi-version=17%> (GCC 12)"
  msgstr ""
  
! #: cp/class.cc:6871
! #, gcc-internal-format
! msgid "offset of %qD for %<-std=c++20%> and up changes in %<-fabi-version=21%> (GCC 16)"
! msgstr ""
! 
! #: cp/class.cc:6912
  #, gcc-internal-format
  msgid "direct base %qT inaccessible in %qT due to ambiguity"
  msgstr ""
  
! #: cp/class.cc:6924
  #, gcc-internal-format
  msgid "virtual base %qT inaccessible in %qT due to ambiguity"
  msgstr ""
  
! #: cp/class.cc:7166
  #, gcc-internal-format
  msgid "offset of %qD is not ABI-compliant and may change in a future version of GCC"
  msgstr ""
  
! #: cp/class.cc:7362
  #, fuzzy, gcc-internal-format
  #| msgid "size of `%s' is larger than %d bytes"
  msgid "size of type %qT is too large (%qE bytes)"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ \"%s\" Ð±Ð¾Ð»ÑŒÑˆ Ñ‡Ð°Ð¼ %d Ð±Ð°Ð¹Ñ‚"
  
! #: cp/class.cc:7683
  #, gcc-internal-format
  msgid "invalid use of %q#T with a zero-size array in %q#D"
  msgstr ""
  
! #: cp/class.cc:7684
  #, gcc-internal-format
  msgid "invalid use of %q#T with a flexible array member in %q#T"
  msgstr ""
  
! #: cp/class.cc:7689
  #, fuzzy, gcc-internal-format
  msgid "array member %q#D declared here"
  msgstr "Ñ‚Ñ‹Ð¿ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" Ð½Ðµ Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ñ‹"
  
! #: cp/class.cc:7718
  #, gcc-internal-format
  msgid "zero-size array member %qD not at end of %q#T"
  msgstr ""
  
! #: cp/class.cc:7720
  #, gcc-internal-format
  msgid "zero-size array member %qD in an otherwise empty %q#T"
  msgstr ""
  
! #: cp/class.cc:7729 cp/class.cc:7764
  #, fuzzy, gcc-internal-format
  #| msgid "previous definition of `%#T'"
  msgid "in the definition of %q#T"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ `%#T'"
  
! #: cp/class.cc:7737
  #, gcc-internal-format
  msgid "flexible array member %qD not at end of %q#T"
  msgstr ""
  
! #: cp/class.cc:7739
  #, gcc-internal-format
  msgid "flexible array member %qD in an otherwise empty %q#T is a GCC extension"
  msgstr ""
  
! #: cp/class.cc:7762
  #, gcc-internal-format
  msgid "next member %q#D declared here"
  msgstr ""
  
! #: cp/class.cc:7874 cp/decl.cc:18271 cp/parser.cc:28464
  #, fuzzy, gcc-internal-format
  #| msgid "previous definition of `%#T'"
  msgid "redefinition of %q#T"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ `%#T'"
  
! #: cp/class.cc:8021
  #, gcc-internal-format
  msgid "%q#T has virtual functions and accessible non-virtual destructor"
  msgstr ""
  
! #: cp/class.cc:8049
  #, gcc-internal-format
  msgid "type transparent %q#T does not have any fields"
  msgstr ""
  
! #: cp/class.cc:8055
  #, gcc-internal-format
  msgid "type transparent class %qT has base classes"
  msgstr ""
  
! #: cp/class.cc:8059
  #, gcc-internal-format
  msgid "type transparent class %qT has virtual functions"
  msgstr ""
  
! #: cp/class.cc:8065
  #, gcc-internal-format
  msgid "type transparent %q#T cannot be made transparent because the type of the first field has a different ABI from the class overall"
  msgstr ""
  
! #: cp/class.cc:8236
  #, gcc-internal-format
  msgid "definition of %qD does not match %<#include <initializer_list>%>"
  msgstr ""
  
! #: cp/class.cc:8247
  #, gcc-internal-format
  msgid "trying to finish struct, but kicked out due to previous parse errors"
  msgstr ""
  
! #: cp/class.cc:8754
  #, fuzzy, gcc-internal-format
  #| msgid "language %s not recognized"
  msgid "language string %<\"%E\"%> not recognized"
  msgstr "Ð¼Ð¾Ð²Ð° %s Ð½Ðµ Ñ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ð°"
  
! #: cp/class.cc:8844
  #, gcc-internal-format
  msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
  msgstr ""
  
! #: cp/class.cc:9010
  #, gcc-internal-format
  msgid "no matches converting function %qD to type %q#T"
  msgstr ""
  
! #: cp/class.cc:9038
  #, gcc-internal-format
  msgid "converting overloaded function %qD to type %q#T is ambiguous"
  msgstr ""
  
! #: cp/class.cc:9080
  #, gcc-internal-format
  msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to explicit object member function."
  msgstr ""
  
! #: cp/class.cc:9085
  #, gcc-internal-format
  msgid "a pointer to explicit object member function can only be formed with %<&%E%>"
  msgstr ""
  
! #: cp/class.cc:9095
  #, fuzzy, gcc-internal-format
  msgid "assuming pointer to member %qD"
  msgstr "Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/class.cc:9098
  #, gcc-internal-format
  msgid "(a pointer to member can only be formed with %<&%E%>)"
  msgstr ""
  
! #: cp/class.cc:9177
  #, gcc-internal-format
  msgid "not enough type information"
  msgstr ""
  
! #: cp/class.cc:9197
  #, gcc-internal-format
  msgid "cannot convert %qE from type %qT to type %qT"
  msgstr ""
  
! #: cp/class.cc:9498
  #, gcc-internal-format
  msgid "declaration of %q#D changes meaning of %qD"
  msgstr ""
  
! #: cp/class.cc:9501
  #, gcc-internal-format
  msgid "used here to mean %q#D"
  msgstr ""
*************** msgstr ""
*** 55020,55026 ****
  msgid "lambdas are implicitly %<constexpr%> only in C++17 and later"
  msgstr ""
  
! #: cp/constexpr.cc:270 cp/decl.cc:15267
  #, gcc-internal-format
  msgid "%<constexpr%> destructors only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
--- 55087,55093 ----
  msgid "lambdas are implicitly %<constexpr%> only in C++17 and later"
  msgstr ""
  
! #: cp/constexpr.cc:270 cp/decl.cc:15265
  #, gcc-internal-format
  msgid "%<constexpr%> destructors only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
*************** msgstr ""
*** 55066,55072 ****
  msgid "%qD is not usable as a %<constexpr%> function because:"
  msgstr ""
  
! #: cp/constexpr.cc:1347 cp/constexpr.cc:6580
  #, gcc-internal-format
  msgid "destroying %qE outside its lifetime"
  msgstr ""
--- 55133,55139 ----
  msgid "%qD is not usable as a %<constexpr%> function because:"
  msgstr ""
  
! #: cp/constexpr.cc:1347 cp/constexpr.cc:6596
  #, gcc-internal-format
  msgid "destroying %qE outside its lifetime"
  msgstr ""
*************** msgid "%q+E is not a constant expression
*** 55085,55096 ****
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
  #: cp/constexpr.cc:1897 cp/constexpr.cc:2796 cp/constexpr.cc:3080
! #: cp/constexpr.cc:10113 rust/backend/rust-constexpr.cc:5789
  #, gcc-internal-format
  msgid "call to non-%<constexpr%> function %qD"
  msgstr ""
  
! #: cp/constexpr.cc:1944 cp/constexpr.cc:6138 cp/constexpr.cc:8586
  #: rust/backend/rust-constexpr.cc:875 rust/backend/rust-constexpr.cc:2494
  #, gcc-internal-format
  msgid "dereferencing a null pointer"
--- 55152,55163 ----
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
  #: cp/constexpr.cc:1897 cp/constexpr.cc:2796 cp/constexpr.cc:3080
! #: cp/constexpr.cc:10135 rust/backend/rust-constexpr.cc:5789
  #, gcc-internal-format
  msgid "call to non-%<constexpr%> function %qD"
  msgstr ""
  
! #: cp/constexpr.cc:1944 cp/constexpr.cc:6153 cp/constexpr.cc:8608
  #: rust/backend/rust-constexpr.cc:875 rust/backend/rust-constexpr.cc:2494
  #, gcc-internal-format
  msgid "dereferencing a null pointer"
*************** msgstr ""
*** 55111,55117 ****
  msgid "failed %<assume%> attribute assumption"
  msgstr ""
  
! #: cp/constexpr.cc:2249 cp/constexpr.cc:10077
  #: rust/backend/rust-constexpr.cc:5758
  #, fuzzy, gcc-internal-format
  #| msgid "can't initialize friend function `%s'"
--- 55178,55184 ----
  msgid "failed %<assume%> attribute assumption"
  msgstr ""
  
! #: cp/constexpr.cc:2249 cp/constexpr.cc:10099
  #: rust/backend/rust-constexpr.cc:5758
  #, fuzzy, gcc-internal-format
  #| msgid "can't initialize friend function `%s'"
*************** msgstr "Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð
*** 55297,55307 ****
  msgid "dereferencing a null pointer in %qE"
  msgstr ""
  
! #: cp/constexpr.cc:4797 cp/constexpr.cc:4913 cp/constexpr.cc:4925
! #: cp/constexpr.cc:7761 cp/constexpr.cc:7892 cp/constexpr.cc:10027
! #: rust/backend/rust-constexpr.cc:1738 rust/backend/rust-constexpr.cc:1983
! #: rust/backend/rust-constexpr.cc:2225 rust/backend/rust-constexpr.cc:4743
! #: rust/backend/rust-constexpr.cc:5712
  #, fuzzy, gcc-internal-format
  msgid "%qE is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
--- 55364,55374 ----
  msgid "dereferencing a null pointer in %qE"
  msgstr ""
  
! #: cp/constexpr.cc:4797 cp/constexpr.cc:4925 cp/constexpr.cc:4937
! #: cp/constexpr.cc:7777 cp/constexpr.cc:7908 cp/constexpr.cc:10049
! #: cp/constexpr.cc:11043 rust/backend/rust-constexpr.cc:1738
! #: rust/backend/rust-constexpr.cc:1983 rust/backend/rust-constexpr.cc:2225
! #: rust/backend/rust-constexpr.cc:4743 rust/backend/rust-constexpr.cc:5712
  #, fuzzy, gcc-internal-format
  msgid "%qE is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
*************** msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð
*** 55311,55764 ****
  msgid "mutable %qD is not usable in a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:4837 cp/constexpr.cc:4873 cp/constexpr.cc:6748
  #: rust/backend/rust-constexpr.cc:1774 rust/backend/rust-constexpr.cc:1797
  #, fuzzy, gcc-internal-format
  msgid "accessing uninitialized member %qD"
  msgstr "Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/constexpr.cc:4839 cp/constexpr.cc:4852 cp/constexpr.cc:6743
  #: rust/backend/rust-constexpr.cc:1776
  #, gcc-internal-format
  msgid "accessing %qD member instead of initialized %qD member in constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:4991
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT is a union type"
  msgstr ""
  
! #: cp/constexpr.cc:4994
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a union type"
  msgstr ""
  
! #: cp/constexpr.cc:5005
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT is a pointer type"
  msgstr ""
  
! #: cp/constexpr.cc:5008
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a pointer type"
  msgstr ""
  
! #: cp/constexpr.cc:5019
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT is a reference type"
  msgstr ""
  
! #: cp/constexpr.cc:5022
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a reference type"
  msgstr ""
  
! #: cp/constexpr.cc:5033
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT is a pointer to member type"
  msgstr ""
  
! #: cp/constexpr.cc:5037
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a pointer to member type"
  msgstr ""
  
! #: cp/constexpr.cc:5048
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT is volatile"
  msgstr ""
  
! #: cp/constexpr.cc:5051
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a volatile subobject"
  msgstr ""
  
! #: cp/constexpr.cc:5206
  #, gcc-internal-format
  msgid "%qs cannot be constant evaluated on the target"
  msgstr ""
  
! #: cp/constexpr.cc:5215 cp/constexpr.cc:5225
  #, gcc-internal-format
  msgid "%qs cannot be constant evaluated because the type is too large"
  msgstr ""
  
! #: cp/constexpr.cc:5245
  #, gcc-internal-format
  msgid "%qs cannot be constant evaluated because the argument cannot be encoded"
  msgstr ""
  
! #: cp/constexpr.cc:5291
  #, gcc-internal-format
  msgid "%qs accessing uninitialized byte at offset %d"
  msgstr ""
  
! #: cp/constexpr.cc:5303
  #, gcc-internal-format
  msgid "%qs cannot be constant evaluated because the argument cannot be interpreted"
  msgstr ""
  
! #: cp/constexpr.cc:6158 rust/backend/rust-constexpr.cc:895
  #, gcc-internal-format
  msgid "accessing value of %qE through a %qT glvalue in a constant expression"
  msgstr ""
  
  #. Provide a more accurate message for deleted variables.
! #: cp/constexpr.cc:6198 cp/constexpr.cc:6231
  #, fuzzy, gcc-internal-format
  msgid "use of allocated storage after deallocation in a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:6200 cp/constexpr.cc:6226 cp/constexpr.cc:6233
! #: cp/constexpr.cc:6575
  #, fuzzy, gcc-internal-format
  #| msgid "called from here"
  msgid "allocated here"
  msgstr "Ð²Ñ‹ÐºÐ»Ñ–ÐºÐ°Ð½Ð° Ð°Ð´Ñ�ÑŽÐ»ÑŒ"
  
! #: cp/constexpr.cc:6204
  #, gcc-internal-format
  msgid "accessing %qE outside its lifetime"
  msgstr ""
  
! #: cp/constexpr.cc:6224
  #, fuzzy, gcc-internal-format
  msgid "the content of uninitialized storage is not usable in a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:6236 rust/backend/rust-constexpr.cc:4041
  #, fuzzy, gcc-internal-format
  msgid "the value of %qD is not usable in a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:6244
  #, fuzzy, gcc-internal-format
  #| msgid "invalid initializer"
  msgid "%qD used in its own initializer"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/constexpr.cc:6249
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function,"
  msgid "%q#D is not const"
  msgstr "`%D' - Ð³Ñ�Ñ‚Ð° Ð½Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�,"
  
! #: cp/constexpr.cc:6252
  #, gcc-internal-format
  msgid "%q#D is volatile"
  msgstr ""
  
! #: cp/constexpr.cc:6257 cp/constexpr.cc:6264
  #, fuzzy, gcc-internal-format
  msgid "%qD was not initialized with a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:6270
  #, fuzzy, gcc-internal-format
  msgid "%qD was not declared %<constexpr%>"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/constexpr.cc:6273
  #, gcc-internal-format
  msgid "%qD does not have integral or enumeration type"
  msgstr ""
  
! #: cp/constexpr.cc:6573
  #, gcc-internal-format
  msgid "modification of allocated storage after deallocation is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:6582
  #, gcc-internal-format
  msgid "modification of %qE outside its lifetime is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:6589
  #, gcc-internal-format
  msgid "destroying %qE from outside current evaluation is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:6592
  #, gcc-internal-format
  msgid "modification of %qE from outside current evaluation is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:6723
  #, gcc-internal-format
  msgid "change of the active member of a union from %qD to %qD is not a constant expression before C++20"
  msgstr ""
  
! #: cp/constexpr.cc:6752
  #, gcc-internal-format
  msgid "%qD does not implicitly begin its lifetime because %qT does not have a non-deleted trivial default constructor, use %<std::construct_at%> instead"
  msgstr ""
  
! #: cp/constexpr.cc:6759
  #, gcc-internal-format
  msgid "initializing %qD requires a member access expression as the left operand of the assignment"
  msgstr ""
  
! #: cp/constexpr.cc:6771 rust/backend/rust-constexpr.cc:2820
  #, gcc-internal-format
  msgid "change of the active member of a union from %qD to %qD during initialization"
  msgstr ""
  
! #: cp/constexpr.cc:7223 cp/constexpr.cc:8928 cp/constexpr.cc:8940
  #: rust/backend/rust-constexpr.cc:4668
  #, fuzzy, gcc-internal-format
  msgid "statement is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:7430 rust/backend/rust-constexpr.cc:4933
  #, gcc-internal-format
  msgid "%<constexpr%> loop iteration count exceeds limit of %d (use %<-fconstexpr-loop-limit=%> to increase the limit)"
  msgstr ""
  
! #: cp/constexpr.cc:7539 rust/backend/rust-constexpr.cc:999
  #, fuzzy, gcc-internal-format
  msgid "inline assembly is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:7541 rust/backend/rust-constexpr.cc:1000
  #, gcc-internal-format
  msgid "only unevaluated inline assembly is allowed in a %<constexpr%> function in C++20"
  msgstr ""
  
! #: cp/constexpr.cc:7560
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `%D'"
  msgid "use of %qD"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½ÑŒÐ½Ðµ `%D'"
  
! #: cp/constexpr.cc:7564
  #, gcc-internal-format
  msgid "its value can vary between compiler versions or with different %<-mtune%> or %<-mcpu%> flags"
  msgstr ""
  
! #: cp/constexpr.cc:7566
  #, gcc-internal-format
  msgid "if this use is part of a public ABI, change it to instead use a constant variable you define"
  msgstr ""
  
! #: cp/constexpr.cc:7568
  #, gcc-internal-format, gfc-internal-format
  msgid "the default value for the current CPU tuning is %d bytes"
  msgstr ""
  
! #: cp/constexpr.cc:7570
  #, gcc-internal-format
  msgid "you can stabilize this value with %<--param hardware_destructive_interference_size=%d%>, or disable this warning with %<-Wno-interference-size%>"
  msgstr ""
  
! #: cp/constexpr.cc:7723
  #, fuzzy, gcc-internal-format
  msgid "value %qE of type %qT is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:7736
  #, gcc-internal-format
  msgid "%<constexpr%> evaluation operation count exceeds limit of %wd (use %<-fconstexpr-ops-limit=%> to increase the limit)"
  msgstr ""
  
! #: cp/constexpr.cc:7922
  #, gcc-internal-format
  msgid "control passes through definition of %qD with thread storage duration"
  msgstr ""
  
! #: cp/constexpr.cc:7925
  #, gcc-internal-format
  msgid "control passes through definition of %qD with static storage duration"
  msgstr ""
  
! #: cp/constexpr.cc:7990 cp/constexpr.cc:10723
  #: rust/backend/rust-constexpr.cc:2056 rust/backend/rust-constexpr.cc:6206
  #, fuzzy, gcc-internal-format
  msgid "temporary of non-literal type %qT in a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:8448 cp/constexpr.cc:10228
  #, fuzzy, gcc-internal-format
  msgid "%<reinterpret_cast%> is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:8479 rust/backend/rust-constexpr.cc:2461
  #, gcc-internal-format
  msgid "conversion from pointer type %qT to arithmetic type %qT in a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:8531
  #, gcc-internal-format
  msgid "cast from %qT is not allowed in a constant expression because pointed-to type %qT is not similar to %qT"
  msgstr ""
  
! #: cp/constexpr.cc:8541
  #, gcc-internal-format
  msgid "pointed-to object declared here"
  msgstr ""
  
! #: cp/constexpr.cc:8549
  #, fuzzy, gcc-internal-format
  msgid "cast from %qT is not allowed in a constant expression before C++26"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:8563
  #, gcc-internal-format
  msgid "%qE is not a constant expression when the class %qT is still incomplete"
  msgstr ""
  
! #: cp/constexpr.cc:8603 rust/backend/rust-constexpr.cc:2506
  #, gcc-internal-format
  msgid "%<reinterpret_cast<%T>(%E)%> is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:8741 cp/constexpr.cc:10535 cp/constexpr.cc:10946
  #: rust/backend/rust-constexpr.cc:6100 rust/backend/rust-constexpr.cc:6415
  #, fuzzy, gcc-internal-format
  msgid "expression %qE is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:8785 cp/constexpr.cc:10987
  #, fuzzy, gcc-internal-format
  msgid "%<goto%> is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:8843
  #, gcc-internal-format
  msgid "contract predicate is false in constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:8878
  #, fuzzy, gcc-internal-format
  msgid "address of a call to %qs is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:8943
  #, gcc-internal-format
  msgid "unexpected expression %qE of kind %s"
  msgstr ""
  
! #: cp/constexpr.cc:9242 rust/backend/rust-constexpr.cc:5158
  #, gcc-internal-format
  msgid "%qE is not a constant expression because it refers to mutable subobjects of %qT"
  msgstr ""
  
! #: cp/constexpr.cc:9250 rust/backend/rust-constexpr.cc:5167
  #, gcc-internal-format
  msgid "%qE is not a constant expression because it refers to an incompletely initialized variable"
  msgstr ""
  
! #: cp/constexpr.cc:9266 rust/backend/rust-constexpr.cc:5183
  #, gcc-internal-format
  msgid "%qE is not a constant expression because it refers to a result of %<operator new%>"
  msgstr ""
  
! #: cp/constexpr.cc:9277 rust/backend/rust-constexpr.cc:5195
  #, gcc-internal-format
  msgid "%qE is not a constant expression because allocated storage has not been deallocated"
  msgstr ""
  
! #: cp/constexpr.cc:9297 rust/backend/rust-constexpr.cc:5213
  #, gcc-internal-format
  msgid "immediate evaluation returns address of immediate function %qD"
  msgstr ""
  
! #: cp/constexpr.cc:9301
  #, gcc-internal-format
  msgid "constant evaluation returns address of immediate function %qD"
  msgstr ""
  
! #: cp/constexpr.cc:9336
  #, gcc-internal-format
  msgid "%qE is not a constant expression because it initializes a %qT rather than %qT"
  msgstr ""
  
! #: cp/constexpr.cc:9964 rust/backend/rust-constexpr.cc:5667
  #, gcc-internal-format
  msgid "lvalue-to-rvalue conversion of a volatile lvalue %qE with type %qT"
  msgstr ""
  
! #: cp/constexpr.cc:10193
  #, fuzzy, gcc-internal-format
  msgid "lambda capture of %qE is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:10196
  #, gcc-internal-format
  msgid "because it is used as a glvalue"
  msgstr ""
  
! #: cp/constexpr.cc:10252 rust/backend/rust-constexpr.cc:5893
  #, gcc-internal-format
  msgid "%<reinterpret_cast%> from integer to pointer"
  msgstr ""
  
! #: cp/constexpr.cc:10286 rust/backend/rust-constexpr.cc:5921
  #, gcc-internal-format
  msgid "address-of an object %qE with thread local or automatic storage is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:10470
  #, gcc-internal-format
  msgid "lambda-expression is not a constant expression before C++17"
  msgstr ""
  
! #: cp/constexpr.cc:10482
  #, gcc-internal-format
  msgid "new-expression is not a constant expression before C++20"
  msgstr ""
  
! #: cp/constexpr.cc:10549
  #, fuzzy, gcc-internal-format
  #| msgid "virtual functions cannot be friends"
  msgid "virtual functions cannot be %<constexpr%> before C++20"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/constexpr.cc:10565
  #, gcc-internal-format
  msgid "%<typeid%> is not a constant expression because %qE is of polymorphic type"
  msgstr ""
  
! #: cp/constexpr.cc:10629
  #, fuzzy, gcc-internal-format
  msgid "cast to non-integral type %qT in a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:10687
  #, gcc-internal-format
  msgid "%qD defined %<thread_local%> in %<constexpr%> context"
  msgstr ""
  
! #: cp/constexpr.cc:10695
  #, gcc-internal-format
  msgid "%qD defined %<static%> in %<constexpr%> context"
  msgstr ""
  
! #: cp/constexpr.cc:10773 rust/backend/rust-constexpr.cc:6251
  #, fuzzy, gcc-internal-format
  msgid "division by zero is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:10874 rust/backend/rust-constexpr.cc:6349
  #, fuzzy, gcc-internal-format
  msgid "%<delete[]%> is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:10943
  #, gcc-internal-format
  msgid "neither branch of %<if%> is a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:10956
  #, fuzzy, gcc-internal-format
  msgid "non-constant array initialization"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/constexpr.cc:11004
  #, gcc-internal-format
  msgid "label definition in %<constexpr%> function only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/constexpr.cc:11040 rust/backend/rust-constexpr.cc:6438
  #, gcc-internal-format, gfc-internal-format
  msgid "unexpected AST of kind %s"
  msgstr ""
--- 55378,55831 ----
  msgid "mutable %qD is not usable in a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:4837 cp/constexpr.cc:4873 cp/constexpr.cc:6764
  #: rust/backend/rust-constexpr.cc:1774 rust/backend/rust-constexpr.cc:1797
  #, fuzzy, gcc-internal-format
  msgid "accessing uninitialized member %qD"
  msgstr "Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/constexpr.cc:4839 cp/constexpr.cc:4852 cp/constexpr.cc:6759
  #: rust/backend/rust-constexpr.cc:1776
  #, gcc-internal-format
  msgid "accessing %qD member instead of initialized %qD member in constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:5003
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT is a union type"
  msgstr ""
  
! #: cp/constexpr.cc:5006
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a union type"
  msgstr ""
  
! #: cp/constexpr.cc:5017
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT is a pointer type"
  msgstr ""
  
! #: cp/constexpr.cc:5020
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a pointer type"
  msgstr ""
  
! #: cp/constexpr.cc:5031
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT is a reference type"
  msgstr ""
  
! #: cp/constexpr.cc:5034
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a reference type"
  msgstr ""
  
! #: cp/constexpr.cc:5045
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT is a pointer to member type"
  msgstr ""
  
! #: cp/constexpr.cc:5049
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a pointer to member type"
  msgstr ""
  
! #: cp/constexpr.cc:5060
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT is volatile"
  msgstr ""
  
! #: cp/constexpr.cc:5063
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a volatile subobject"
  msgstr ""
  
! #: cp/constexpr.cc:5218
  #, gcc-internal-format
  msgid "%qs cannot be constant evaluated on the target"
  msgstr ""
  
! #: cp/constexpr.cc:5227 cp/constexpr.cc:5237
  #, gcc-internal-format
  msgid "%qs cannot be constant evaluated because the type is too large"
  msgstr ""
  
! #: cp/constexpr.cc:5257
  #, gcc-internal-format
  msgid "%qs cannot be constant evaluated because the argument cannot be encoded"
  msgstr ""
  
! #: cp/constexpr.cc:5303
  #, gcc-internal-format
  msgid "%qs accessing uninitialized byte at offset %d"
  msgstr ""
  
! #: cp/constexpr.cc:5315
  #, gcc-internal-format
  msgid "%qs cannot be constant evaluated because the argument cannot be interpreted"
  msgstr ""
  
! #: cp/constexpr.cc:6173 rust/backend/rust-constexpr.cc:895
  #, gcc-internal-format
  msgid "accessing value of %qE through a %qT glvalue in a constant expression"
  msgstr ""
  
  #. Provide a more accurate message for deleted variables.
! #: cp/constexpr.cc:6213 cp/constexpr.cc:6246
  #, fuzzy, gcc-internal-format
  msgid "use of allocated storage after deallocation in a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:6215 cp/constexpr.cc:6241 cp/constexpr.cc:6248
! #: cp/constexpr.cc:6591
  #, fuzzy, gcc-internal-format
  #| msgid "called from here"
  msgid "allocated here"
  msgstr "Ð²Ñ‹ÐºÐ»Ñ–ÐºÐ°Ð½Ð° Ð°Ð´Ñ�ÑŽÐ»ÑŒ"
  
! #: cp/constexpr.cc:6219
  #, gcc-internal-format
  msgid "accessing %qE outside its lifetime"
  msgstr ""
  
! #: cp/constexpr.cc:6239
  #, fuzzy, gcc-internal-format
  msgid "the content of uninitialized storage is not usable in a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:6251 rust/backend/rust-constexpr.cc:4041
  #, fuzzy, gcc-internal-format
  msgid "the value of %qD is not usable in a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:6259
  #, fuzzy, gcc-internal-format
  #| msgid "invalid initializer"
  msgid "%qD used in its own initializer"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/constexpr.cc:6264
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function,"
  msgid "%q#D is not const"
  msgstr "`%D' - Ð³Ñ�Ñ‚Ð° Ð½Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�,"
  
! #: cp/constexpr.cc:6267
  #, gcc-internal-format
  msgid "%q#D is volatile"
  msgstr ""
  
! #: cp/constexpr.cc:6272 cp/constexpr.cc:6279
  #, fuzzy, gcc-internal-format
  msgid "%qD was not initialized with a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:6285
  #, fuzzy, gcc-internal-format
  msgid "%qD was not declared %<constexpr%>"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/constexpr.cc:6288
  #, gcc-internal-format
  msgid "%qD does not have integral or enumeration type"
  msgstr ""
  
! #: cp/constexpr.cc:6589
  #, gcc-internal-format
  msgid "modification of allocated storage after deallocation is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:6598
  #, gcc-internal-format
  msgid "modification of %qE outside its lifetime is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:6605
  #, gcc-internal-format
  msgid "destroying %qE from outside current evaluation is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:6608
  #, gcc-internal-format
  msgid "modification of %qE from outside current evaluation is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:6739
  #, gcc-internal-format
  msgid "change of the active member of a union from %qD to %qD is not a constant expression before C++20"
  msgstr ""
  
! #: cp/constexpr.cc:6768
  #, gcc-internal-format
  msgid "%qD does not implicitly begin its lifetime because %qT does not have a non-deleted trivial default constructor, use %<std::construct_at%> instead"
  msgstr ""
  
! #: cp/constexpr.cc:6775
  #, gcc-internal-format
  msgid "initializing %qD requires a member access expression as the left operand of the assignment"
  msgstr ""
  
! #: cp/constexpr.cc:6787 rust/backend/rust-constexpr.cc:2820
  #, gcc-internal-format
  msgid "change of the active member of a union from %qD to %qD during initialization"
  msgstr ""
  
! #: cp/constexpr.cc:7239 cp/constexpr.cc:8950 cp/constexpr.cc:8962
  #: rust/backend/rust-constexpr.cc:4668
  #, fuzzy, gcc-internal-format
  msgid "statement is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:7446 rust/backend/rust-constexpr.cc:4933
  #, gcc-internal-format
  msgid "%<constexpr%> loop iteration count exceeds limit of %d (use %<-fconstexpr-loop-limit=%> to increase the limit)"
  msgstr ""
  
! #: cp/constexpr.cc:7555 rust/backend/rust-constexpr.cc:999
  #, fuzzy, gcc-internal-format
  msgid "inline assembly is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:7557 rust/backend/rust-constexpr.cc:1000
  #, gcc-internal-format
  msgid "only unevaluated inline assembly is allowed in a %<constexpr%> function in C++20"
  msgstr ""
  
! #: cp/constexpr.cc:7576
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `%D'"
  msgid "use of %qD"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½ÑŒÐ½Ðµ `%D'"
  
! #: cp/constexpr.cc:7580
  #, gcc-internal-format
  msgid "its value can vary between compiler versions or with different %<-mtune%> or %<-mcpu%> flags"
  msgstr ""
  
! #: cp/constexpr.cc:7582
  #, gcc-internal-format
  msgid "if this use is part of a public ABI, change it to instead use a constant variable you define"
  msgstr ""
  
! #: cp/constexpr.cc:7584
  #, gcc-internal-format, gfc-internal-format
  msgid "the default value for the current CPU tuning is %d bytes"
  msgstr ""
  
! #: cp/constexpr.cc:7586
  #, gcc-internal-format
  msgid "you can stabilize this value with %<--param hardware_destructive_interference_size=%d%>, or disable this warning with %<-Wno-interference-size%>"
  msgstr ""
  
! #: cp/constexpr.cc:7739
  #, fuzzy, gcc-internal-format
  msgid "value %qE of type %qT is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:7752
  #, gcc-internal-format
  msgid "%<constexpr%> evaluation operation count exceeds limit of %wd (use %<-fconstexpr-ops-limit=%> to increase the limit)"
  msgstr ""
  
! #: cp/constexpr.cc:7938
  #, gcc-internal-format
  msgid "control passes through definition of %qD with thread storage duration"
  msgstr ""
  
! #: cp/constexpr.cc:7941
  #, gcc-internal-format
  msgid "control passes through definition of %qD with static storage duration"
  msgstr ""
  
! #: cp/constexpr.cc:8006 cp/constexpr.cc:10745
  #: rust/backend/rust-constexpr.cc:2056 rust/backend/rust-constexpr.cc:6206
  #, fuzzy, gcc-internal-format
  msgid "temporary of non-literal type %qT in a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:8470 cp/constexpr.cc:10250
  #, fuzzy, gcc-internal-format
  msgid "%<reinterpret_cast%> is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:8501 rust/backend/rust-constexpr.cc:2461
  #, gcc-internal-format
  msgid "conversion from pointer type %qT to arithmetic type %qT in a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:8553
  #, gcc-internal-format
  msgid "cast from %qT is not allowed in a constant expression because pointed-to type %qT is not similar to %qT"
  msgstr ""
  
! #: cp/constexpr.cc:8563
  #, gcc-internal-format
  msgid "pointed-to object declared here"
  msgstr ""
  
! #: cp/constexpr.cc:8571
  #, fuzzy, gcc-internal-format
  msgid "cast from %qT is not allowed in a constant expression before C++26"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:8585
  #, gcc-internal-format
  msgid "%qE is not a constant expression when the class %qT is still incomplete"
  msgstr ""
  
! #: cp/constexpr.cc:8625 rust/backend/rust-constexpr.cc:2506
  #, gcc-internal-format
  msgid "%<reinterpret_cast<%T>(%E)%> is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:8763 cp/constexpr.cc:10557 cp/constexpr.cc:10968
  #: rust/backend/rust-constexpr.cc:6100 rust/backend/rust-constexpr.cc:6415
  #, fuzzy, gcc-internal-format
  msgid "expression %qE is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:8807 cp/constexpr.cc:11009
  #, fuzzy, gcc-internal-format
  msgid "%<goto%> is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:8865
  #, gcc-internal-format
  msgid "contract predicate is false in constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:8900
  #, fuzzy, gcc-internal-format
  msgid "address of a call to %qs is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:8965
  #, gcc-internal-format
  msgid "unexpected expression %qE of kind %s"
  msgstr ""
  
! #: cp/constexpr.cc:9264 rust/backend/rust-constexpr.cc:5158
  #, gcc-internal-format
  msgid "%qE is not a constant expression because it refers to mutable subobjects of %qT"
  msgstr ""
  
! #: cp/constexpr.cc:9272 rust/backend/rust-constexpr.cc:5167
  #, gcc-internal-format
  msgid "%qE is not a constant expression because it refers to an incompletely initialized variable"
  msgstr ""
  
! #: cp/constexpr.cc:9288 rust/backend/rust-constexpr.cc:5183
  #, gcc-internal-format
  msgid "%qE is not a constant expression because it refers to a result of %<operator new%>"
  msgstr ""
  
! #: cp/constexpr.cc:9299 rust/backend/rust-constexpr.cc:5195
  #, gcc-internal-format
  msgid "%qE is not a constant expression because allocated storage has not been deallocated"
  msgstr ""
  
! #: cp/constexpr.cc:9319 rust/backend/rust-constexpr.cc:5213
  #, gcc-internal-format
  msgid "immediate evaluation returns address of immediate function %qD"
  msgstr ""
  
! #: cp/constexpr.cc:9323
  #, gcc-internal-format
  msgid "constant evaluation returns address of immediate function %qD"
  msgstr ""
  
! #: cp/constexpr.cc:9358
  #, gcc-internal-format
  msgid "%qE is not a constant expression because it initializes a %qT rather than %qT"
  msgstr ""
  
! #: cp/constexpr.cc:9986 rust/backend/rust-constexpr.cc:5667
  #, gcc-internal-format
  msgid "lvalue-to-rvalue conversion of a volatile lvalue %qE with type %qT"
  msgstr ""
  
! #: cp/constexpr.cc:10215
  #, fuzzy, gcc-internal-format
  msgid "lambda capture of %qE is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:10218
  #, gcc-internal-format
  msgid "because it is used as a glvalue"
  msgstr ""
  
! #: cp/constexpr.cc:10274 rust/backend/rust-constexpr.cc:5893
  #, gcc-internal-format
  msgid "%<reinterpret_cast%> from integer to pointer"
  msgstr ""
  
! #: cp/constexpr.cc:10308 rust/backend/rust-constexpr.cc:5921
  #, gcc-internal-format
  msgid "address-of an object %qE with thread local or automatic storage is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:10492
  #, gcc-internal-format
  msgid "lambda-expression is not a constant expression before C++17"
  msgstr ""
  
! #: cp/constexpr.cc:10504
  #, gcc-internal-format
  msgid "new-expression is not a constant expression before C++20"
  msgstr ""
  
! #: cp/constexpr.cc:10571
  #, fuzzy, gcc-internal-format
  #| msgid "virtual functions cannot be friends"
  msgid "virtual functions cannot be %<constexpr%> before C++20"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/constexpr.cc:10587
  #, gcc-internal-format
  msgid "%<typeid%> is not a constant expression because %qE is of polymorphic type"
  msgstr ""
  
! #: cp/constexpr.cc:10651
  #, fuzzy, gcc-internal-format
  msgid "cast to non-integral type %qT in a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:10709
  #, gcc-internal-format
  msgid "%qD defined %<thread_local%> in %<constexpr%> context"
  msgstr ""
  
! #: cp/constexpr.cc:10717
  #, gcc-internal-format
  msgid "%qD defined %<static%> in %<constexpr%> context"
  msgstr ""
  
! #: cp/constexpr.cc:10795 rust/backend/rust-constexpr.cc:6251
  #, fuzzy, gcc-internal-format
  msgid "division by zero is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:10896 rust/backend/rust-constexpr.cc:6349
  #, fuzzy, gcc-internal-format
  msgid "%<delete[]%> is not a constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/constexpr.cc:10965
  #, gcc-internal-format
  msgid "neither branch of %<if%> is a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:10978
  #, fuzzy, gcc-internal-format
  msgid "non-constant array initialization"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/constexpr.cc:11026
  #, gcc-internal-format
  msgid "label definition in %<constexpr%> function only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/constexpr.cc:11065 rust/backend/rust-constexpr.cc:6438
  #, gcc-internal-format, gfc-internal-format
  msgid "unexpected AST of kind %s"
  msgstr ""
*************** msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð°
*** 56359,56470 ****
  msgid "declaration adds contracts to %q#D"
  msgstr "Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ ÑˆÐ°Ð±Ð»Ñ‘Ð½Ñƒ `%#D'"
  
! #: cp/coroutines.cc:427
  #, gcc-internal-format
  msgid "coroutines require a traits template; cannot find %<%E::%E%>"
  msgstr ""
  
! #: cp/coroutines.cc:429
  #, gcc-internal-format
  msgid "perhaps %<#include <coroutine>%> is missing"
  msgstr ""
  
! #: cp/coroutines.cc:484
  #, gcc-internal-format
  msgid "cannot instantiate %<coroutine traits%>"
  msgstr ""
  
! #: cp/coroutines.cc:506
  #, gcc-internal-format
  msgid "coroutines require a handle class template; cannot find %<%E::%E%>"
  msgstr ""
  
! #: cp/coroutines.cc:534
  #, gcc-internal-format
  msgid "%qE must be a non-overloaded method"
  msgstr ""
  
! #: cp/coroutines.cc:547
  #, fuzzy, gcc-internal-format
  #| msgid "no arguments"
  msgid "%qE must take no arguments"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: cp/coroutines.cc:554 cp/coroutines.cc:599
  #, gcc-internal-format
  msgid "%qE must return %qT, not %qT"
  msgstr ""
  
! #: cp/coroutines.cc:581
  #, gcc-internal-format
  msgid "%qE must be a non-overloaded static function"
  msgstr ""
  
! #: cp/coroutines.cc:592
  #, gcc-internal-format
  msgid "%qE must take a single %qT"
  msgstr ""
  
! #: cp/coroutines.cc:621
  #, gcc-internal-format
  msgid "cannot instantiate a %<coroutine handle%> for promise type %qT"
  msgstr ""
  
! #: cp/coroutines.cc:736
  #, gcc-internal-format
  msgid "unable to find the promise type for this coroutine"
  msgstr ""
  
! #: cp/coroutines.cc:756
  #, gcc-internal-format
  msgid "the coroutine promise type %qT declares both %<return_value%> and %<return_void%>"
  msgstr ""
  
! #: cp/coroutines.cc:760
  #, gcc-internal-format
  msgid "%<return_void%> declared here"
  msgstr ""
  
! #: cp/coroutines.cc:919 cp/coroutines.cc:997 cp/coroutines.cc:4553
  #, gcc-internal-format
  msgid "no member named %qE in %qT"
  msgstr ""
  
! #: cp/coroutines.cc:1012
  #, fuzzy, gcc-internal-format
  msgid "%qs cannot be used outside a function"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
  #. [basic.start.main] 3. The function main shall not be a coroutine.
! #: cp/coroutines.cc:1020
  #, fuzzy, gcc-internal-format
  msgid "%qs cannot be used in the %<main%> function"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
  #. [dcl.constexpr] 3.3 it shall not be a coroutine.
! #: cp/coroutines.cc:1031
  #, fuzzy, gcc-internal-format
  msgid "%qs cannot be used in a %<constexpr%> function"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/coroutines.cc:1042
  #, fuzzy, gcc-internal-format
  msgid "%qs cannot be used in a function with a deduced return type"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/coroutines.cc:1053
  #, fuzzy, gcc-internal-format
  msgid "%qs cannot be used in a varargs function"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
  #. [class.ctor] 7. a constructor shall not be a coroutine.
! #: cp/coroutines.cc:1060
  #, fuzzy, gcc-internal-format
  msgid "%qs cannot be used in a constructor"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
  #. [class.dtor] 21. a destructor shall not be a coroutine.
! #: cp/coroutines.cc:1067
  #, fuzzy, gcc-internal-format
  msgid "%qs cannot be used in a destructor"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
--- 56426,56537 ----
  msgid "declaration adds contracts to %q#D"
  msgstr "Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ ÑˆÐ°Ð±Ð»Ñ‘Ð½Ñƒ `%#D'"
  
! #: cp/coroutines.cc:507
  #, gcc-internal-format
  msgid "coroutines require a traits template; cannot find %<%E::%E%>"
  msgstr ""
  
! #: cp/coroutines.cc:509
  #, gcc-internal-format
  msgid "perhaps %<#include <coroutine>%> is missing"
  msgstr ""
  
! #: cp/coroutines.cc:564
  #, gcc-internal-format
  msgid "cannot instantiate %<coroutine traits%>"
  msgstr ""
  
! #: cp/coroutines.cc:586
  #, gcc-internal-format
  msgid "coroutines require a handle class template; cannot find %<%E::%E%>"
  msgstr ""
  
! #: cp/coroutines.cc:614
  #, gcc-internal-format
  msgid "%qE must be a non-overloaded method"
  msgstr ""
  
! #: cp/coroutines.cc:627
  #, fuzzy, gcc-internal-format
  #| msgid "no arguments"
  msgid "%qE must take no arguments"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: cp/coroutines.cc:634 cp/coroutines.cc:679
  #, gcc-internal-format
  msgid "%qE must return %qT, not %qT"
  msgstr ""
  
! #: cp/coroutines.cc:661
  #, gcc-internal-format
  msgid "%qE must be a non-overloaded static function"
  msgstr ""
  
! #: cp/coroutines.cc:672
  #, gcc-internal-format
  msgid "%qE must take a single %qT"
  msgstr ""
  
! #: cp/coroutines.cc:701
  #, gcc-internal-format
  msgid "cannot instantiate a %<coroutine handle%> for promise type %qT"
  msgstr ""
  
! #: cp/coroutines.cc:816
  #, gcc-internal-format
  msgid "unable to find the promise type for this coroutine"
  msgstr ""
  
! #: cp/coroutines.cc:836
  #, gcc-internal-format
  msgid "the coroutine promise type %qT declares both %<return_value%> and %<return_void%>"
  msgstr ""
  
! #: cp/coroutines.cc:840
  #, gcc-internal-format
  msgid "%<return_void%> declared here"
  msgstr ""
  
! #: cp/coroutines.cc:999 cp/coroutines.cc:1077 cp/coroutines.cc:4711
  #, gcc-internal-format
  msgid "no member named %qE in %qT"
  msgstr ""
  
! #: cp/coroutines.cc:1092
  #, fuzzy, gcc-internal-format
  msgid "%qs cannot be used outside a function"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
  #. [basic.start.main] 3. The function main shall not be a coroutine.
! #: cp/coroutines.cc:1100
  #, fuzzy, gcc-internal-format
  msgid "%qs cannot be used in the %<main%> function"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
  #. [dcl.constexpr] 3.3 it shall not be a coroutine.
! #: cp/coroutines.cc:1111
  #, fuzzy, gcc-internal-format
  msgid "%qs cannot be used in a %<constexpr%> function"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/coroutines.cc:1122
  #, fuzzy, gcc-internal-format
  msgid "%qs cannot be used in a function with a deduced return type"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/coroutines.cc:1133
  #, fuzzy, gcc-internal-format
  msgid "%qs cannot be used in a varargs function"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
  #. [class.ctor] 7. a constructor shall not be a coroutine.
! #: cp/coroutines.cc:1140
  #, fuzzy, gcc-internal-format
  msgid "%qs cannot be used in a constructor"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
  #. [class.dtor] 21. a destructor shall not be a coroutine.
! #: cp/coroutines.cc:1147
  #, fuzzy, gcc-internal-format
  msgid "%qs cannot be used in a destructor"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
*************** msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½Ðº
*** 56472,56565 ****
  #. TODO: record or extract positions of returns (and the first coro
  #. keyword) so that we can add notes to the diagnostic about where
  #. the bad keyword is and what made the function into a coro.
! #: cp/coroutines.cc:1098
  #, gcc-internal-format
  msgid "a %<return%> statement is not allowed in coroutine; did you mean %<co_return%>?"
  msgstr ""
  
! #: cp/coroutines.cc:1150
  #, gcc-internal-format
  msgid "the expression %qE is required to be non-throwing"
  msgstr ""
  
! #: cp/coroutines.cc:1152
  #, gcc-internal-format
  msgid "must be declared with %<noexcept(true)%>"
  msgstr ""
  
! #: cp/coroutines.cc:1280
  #, gcc-internal-format
  msgid "awaitable type %qT is not a structure"
  msgstr ""
  
! #: cp/coroutines.cc:1374
  #, gcc-internal-format
  msgid "%<await_suspend%> must return %<void%>, %<bool%> or a coroutine handle"
  msgstr ""
  
! #: cp/coroutines.cc:1723
  #, gcc-internal-format
  msgid "function declared %<noreturn%> has a %<co_return%> statement"
  msgstr ""
  
! #: cp/coroutines.cc:1760
  #, fuzzy, gcc-internal-format
  msgid "the align argument to %<__builtin_coro_promise%> must be a constant"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: cp/coroutines.cc:1770
  #, fuzzy, gcc-internal-format
  msgid "the direction argument to %<__builtin_coro_promise%> must be a constant"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: cp/coroutines.cc:2267
  #, gcc-internal-format
  msgid "no suspend point info for %qD"
  msgstr ""
  
! #: cp/coroutines.cc:2829
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `%s'"
  msgid "duplicate info for %qE"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½ÑŒÐ½Ðµ `%s'"
  
! #: cp/coroutines.cc:3958
  #, gcc-internal-format
  msgid "await expressions are not permitted in handlers"
  msgstr ""
  
! #: cp/coroutines.cc:4183
  #, gcc-internal-format
  msgid "variable length arrays are not yet supported in coroutines"
  msgstr ""
  
! #: cp/coroutines.cc:4701
  #, gcc-internal-format
  msgid "%qE is provided by %qT but is not usable with the function signature %qD"
  msgstr ""
  
! #: cp/coroutines.cc:4708
  #, gcc-internal-format
  msgid "%qE is provided by %qT but %qE is not marked %<throw()%> or %<noexcept%>"
  msgstr ""
  
! #: cp/coroutines.cc:4713
  #, gcc-internal-format
  msgid "%qE is marked %<throw()%> or %<noexcept%> but no usable %<get_return_object_on_allocation_failure%> is provided by %qT"
  msgstr ""
  
  #. Something is seriously wrong, punt.
! #: cp/coroutines.cc:4744
  #, gcc-internal-format
  msgid "%qE is provided by %qT but %<std::nothrow%> cannot be found"
  msgstr ""
  
! #: cp/coroutines.cc:4840
  #, gcc-internal-format
  msgid "%qE is provided by %qT but is not usable with the function %qD"
  msgstr ""
  
! #: cp/coroutines.cc:5146
  #, gcc-internal-format
  msgid "no viable conversion from %<void%> provided by %<get_return_object%> to return type %qT"
  msgstr ""
--- 56539,56647 ----
  #. TODO: record or extract positions of returns (and the first coro
  #. keyword) so that we can add notes to the diagnostic about where
  #. the bad keyword is and what made the function into a coro.
! #: cp/coroutines.cc:1178
  #, gcc-internal-format
  msgid "a %<return%> statement is not allowed in coroutine; did you mean %<co_return%>?"
  msgstr ""
  
! #: cp/coroutines.cc:1230
  #, gcc-internal-format
  msgid "the expression %qE is required to be non-throwing"
  msgstr ""
  
! #: cp/coroutines.cc:1232
  #, gcc-internal-format
  msgid "must be declared with %<noexcept(true)%>"
  msgstr ""
  
! #: cp/coroutines.cc:1361 cp/coroutines.cc:1364
! #, gcc-internal-format
! msgid "%qs awaitable type %qT is not a structure"
! msgstr ""
! 
! #: cp/coroutines.cc:1367
  #, gcc-internal-format
  msgid "awaitable type %qT is not a structure"
  msgstr ""
  
! #: cp/coroutines.cc:1460
  #, gcc-internal-format
  msgid "%<await_suspend%> must return %<void%>, %<bool%> or a coroutine handle"
  msgstr ""
  
! #: cp/coroutines.cc:1552 cp/coroutines.cc:1638
! #, fuzzy, gcc-internal-format
! msgid "%qs cannot be used in an unevaluated context"
! msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
! 
! #: cp/coroutines.cc:1821
  #, gcc-internal-format
  msgid "function declared %<noreturn%> has a %<co_return%> statement"
  msgstr ""
  
! #: cp/coroutines.cc:1858
  #, fuzzy, gcc-internal-format
  msgid "the align argument to %<__builtin_coro_promise%> must be a constant"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: cp/coroutines.cc:1868
  #, fuzzy, gcc-internal-format
  msgid "the direction argument to %<__builtin_coro_promise%> must be a constant"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
  
! #: cp/coroutines.cc:2387
  #, gcc-internal-format
  msgid "no suspend point info for %qD"
  msgstr ""
  
! #: cp/coroutines.cc:2960
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `%s'"
  msgid "duplicate info for %qE"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½ÑŒÐ½Ðµ `%s'"
  
! #: cp/coroutines.cc:3618
! #, gcc-internal-format
! msgid "assumption ignored because it contains an await-expression"
! msgstr ""
! 
! #: cp/coroutines.cc:4125
  #, gcc-internal-format
  msgid "await expressions are not permitted in handlers"
  msgstr ""
  
! #: cp/coroutines.cc:4342
  #, gcc-internal-format
  msgid "variable length arrays are not yet supported in coroutines"
  msgstr ""
  
! #: cp/coroutines.cc:4864
  #, gcc-internal-format
  msgid "%qE is provided by %qT but is not usable with the function signature %qD"
  msgstr ""
  
! #: cp/coroutines.cc:4871
  #, gcc-internal-format
  msgid "%qE is provided by %qT but %qE is not marked %<throw()%> or %<noexcept%>"
  msgstr ""
  
! #: cp/coroutines.cc:4876
  #, gcc-internal-format
  msgid "%qE is marked %<throw()%> or %<noexcept%> but no usable %<get_return_object_on_allocation_failure%> is provided by %qT"
  msgstr ""
  
  #. Something is seriously wrong, punt.
! #: cp/coroutines.cc:4907
  #, gcc-internal-format
  msgid "%qE is provided by %qT but %<std::nothrow%> cannot be found"
  msgstr ""
  
! #: cp/coroutines.cc:5003
  #, gcc-internal-format
  msgid "%qE is provided by %qT but is not usable with the function %qD"
  msgstr ""
  
! #: cp/coroutines.cc:5277
  #, gcc-internal-format
  msgid "no viable conversion from %<void%> provided by %<get_return_object%> to return type %qT"
  msgstr ""
*************** msgstr ""
*** 56589,56646 ****
  msgid "call to consteval function %qE is not a constant expression"
  msgstr ""
  
! #: cp/cp-gimplify.cc:2050
  #, gcc-internal-format
  msgid "%<throw%> will always call %<terminate%>"
  msgstr ""
  
! #: cp/cp-gimplify.cc:2053
  #, gcc-internal-format
  msgid "in C++11 destructors default to %<noexcept%>"
  msgstr ""
  
! #: cp/cp-gimplify.cc:2065
  #, gcc-internal-format
  msgid "in C++11 this %<throw%> will call %<terminate%> because destructors default to %<noexcept%>"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3650
  #, gcc-internal-format
  msgid "ignoring attribute %qE after earlier %qE"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3693
  #, gcc-internal-format
  msgid "pack expansion of %qE attribute"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3696
  #, gcc-internal-format
  msgid "use fold expression in the attribute argument instead"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3735 cp/cp-gimplify.cc:3747 cp/decl.cc:4511
  #: cp/method.cc:990
  #, fuzzy, gcc-internal-format
  msgid "%qD is not a type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/cp-gimplify.cc:3753
  #, fuzzy, gcc-internal-format
  msgid "%qD is not a class type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/cp-gimplify.cc:3770
  #, gcc-internal-format
  msgid "%qD does not have %<const char *%> type"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3780
  #, fuzzy, gcc-internal-format
  msgid "%qD does not have integral type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/cp-gimplify.cc:3792
  #, gcc-internal-format
  msgid "%<std::source_location::__impl%> does not contain only non-static data members %<_M_file_name%>, %<_M_function_name%>, %<_M_line%> and %<_M_column%>"
  msgstr ""
--- 56671,56728 ----
  msgid "call to consteval function %qE is not a constant expression"
  msgstr ""
  
! #: cp/cp-gimplify.cc:2055
  #, gcc-internal-format
  msgid "%<throw%> will always call %<terminate%>"
  msgstr ""
  
! #: cp/cp-gimplify.cc:2058
  #, gcc-internal-format
  msgid "in C++11 destructors default to %<noexcept%>"
  msgstr ""
  
! #: cp/cp-gimplify.cc:2070
  #, gcc-internal-format
  msgid "in C++11 this %<throw%> will call %<terminate%> because destructors default to %<noexcept%>"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3655
  #, gcc-internal-format
  msgid "ignoring attribute %qE after earlier %qE"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3698
  #, gcc-internal-format
  msgid "pack expansion of %qE attribute"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3701
  #, gcc-internal-format
  msgid "use fold expression in the attribute argument instead"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3740 cp/cp-gimplify.cc:3752 cp/decl.cc:4509
  #: cp/method.cc:990
  #, fuzzy, gcc-internal-format
  msgid "%qD is not a type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/cp-gimplify.cc:3758
  #, fuzzy, gcc-internal-format
  msgid "%qD is not a class type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/cp-gimplify.cc:3775
  #, gcc-internal-format
  msgid "%qD does not have %<const char *%> type"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3785
  #, fuzzy, gcc-internal-format
  msgid "%qD does not have integral type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/cp-gimplify.cc:3797
  #, gcc-internal-format
  msgid "%<std::source_location::__impl%> does not contain only non-static data members %<_M_file_name%>, %<_M_function_name%>, %<_M_line%> and %<_M_column%>"
  msgstr ""
*************** msgstr ""
*** 56682,56688 ****
  msgid "conversion from %qH to %qI discards qualifiers"
  msgstr ""
  
! #: cp/cvt.cc:499 cp/typeck.cc:8914
  #, gcc-internal-format
  msgid "casting %qT to %qT does not dereference pointer"
  msgstr ""
--- 56764,56770 ----
  msgid "conversion from %qH to %qI discards qualifiers"
  msgstr ""
  
! #: cp/cvt.cc:499 cp/typeck.cc:9030
  #, gcc-internal-format
  msgid "casting %qT to %qT does not dereference pointer"
  msgstr ""
*************** msgstr "Ð½ÐµÐ²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ð°ÐµÐ¼
*** 57044,57331 ****
  msgid "structured binding declaration set but not used"
  msgstr ""
  
! #: cp/decl.cc:905
  #, gcc-internal-format
  msgid "%qF declared %<static%> but never defined"
  msgstr ""
  
! #: cp/decl.cc:912
  #, gcc-internal-format
  msgid "odr-used inline variable %qD is not defined"
  msgstr ""
  
! #: cp/decl.cc:1357
  #, gcc-internal-format
  msgid "%qD was declared %<extern%> and later %<static%>"
  msgstr ""
  
! #: cp/decl.cc:1397
  #, gcc-internal-format
  msgid "declaration of %qF has a different exception specifier"
  msgstr ""
  
! #: cp/decl.cc:1427
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration `%D'"
  msgid "from previous declaration %qF"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%D'"
  
! #: cp/decl.cc:1488
  #, fuzzy, gcc-internal-format
  #| msgid "this is a previous declaration"
  msgid "redeclaration %qD differs in %qs from previous declaration"
  msgstr "Ð³Ñ�Ñ‚Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: cp/decl.cc:1492 cp/decl.cc:17249
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration `%D'"
  msgid "previous declaration %qD"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%D'"
  
! #: cp/decl.cc:1513
  #, gcc-internal-format
  msgid "redeclaration of %q#D may not have default arguments"
  msgstr ""
  
! #: cp/decl.cc:1542
  #, gcc-internal-format
  msgid "friend declaration of %q#D specifies default arguments and isn%'t the only declaration"
  msgstr ""
  
! #: cp/decl.cc:1545
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration of `%#D'"
  msgid "previous declaration of %q#D"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%#D'"
  
! #: cp/decl.cc:1598
  #, fuzzy, gcc-internal-format
  msgid "ambiguating new declaration %q+#D"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:1600 cp/decl.cc:2027
  #, fuzzy, gcc-internal-format
  msgid "old declaration %q#D"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:1640
  #, fuzzy, gcc-internal-format
  msgid "redefinition of default argument for %q+#D"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/decl.cc:1642
  #, fuzzy, gcc-internal-format
  #| msgid "previous definition here"
  msgid "original definition appeared here"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: cp/decl.cc:1708
  #, fuzzy, gcc-internal-format
  msgid "built-in function %qD declared as non-function"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/decl.cc:1721 cp/decl.cc:1847
  #, fuzzy, gcc-internal-format
  msgid "shadowing built-in function %q#D"
  msgstr "Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\":"
  
! #: cp/decl.cc:1722 cp/decl.cc:1848
  #, fuzzy, gcc-internal-format
  msgid "shadowing library function %q#D"
  msgstr "Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\":"
  
! #: cp/decl.cc:1730
  #, gcc-internal-format
  msgid "library function %q#D redeclared as non-function %q#D"
  msgstr ""
  
! #: cp/decl.cc:1734 cp/decl.cc:1795
  #, fuzzy, gcc-internal-format
  msgid "declaration of %q#D conflicts with built-in declaration %q#D"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:1822
  #, fuzzy, gcc-internal-format
  msgid "definition of %q#D ambiguates built-in declaration %q#D"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:1828 cp/decl.cc:1842
  #, fuzzy, gcc-internal-format
  msgid "new declaration %q#D ambiguates built-in declaration %q#D"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:1832
  #, gcc-internal-format
  msgid "ignoring the %q#D declaration"
  msgstr ""
  
! #: cp/decl.cc:1937
  #, gcc-internal-format
  msgid "literal operator %q#D conflicts with raw literal operator"
  msgstr ""
  
! #: cp/decl.cc:1941
  #, gcc-internal-format
  msgid "raw literal operator %q#D conflicts with literal operator template"
  msgstr ""
  
! #: cp/decl.cc:1957
  #, gcc-internal-format
  msgid "%q#D redeclared as different kind of entity"
  msgstr ""
  
! #: cp/decl.cc:1982
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of template `%#D'"
  msgid "conflicting declaration of template %q#D"
  msgstr "Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ ÑˆÐ°Ð±Ð»Ñ‘Ð½Ñƒ `%#D'"
  
! #: cp/decl.cc:2003
  #, fuzzy, gcc-internal-format
  msgid "conflicting declaration of C function %q#D"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:2025
  #, fuzzy, gcc-internal-format
  msgid "ambiguating new declaration of %q#D"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:2036
  #, fuzzy, gcc-internal-format
  msgid "conflicting declaration %q#D"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:2038
  #, fuzzy, gcc-internal-format
  msgid "previous declaration as %q#D"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:2049
  #, gcc-internal-format
  msgid "redeclaration of %<pragma omp declare reduction%>"
  msgstr ""
  
! #: cp/decl.cc:2051
  #, fuzzy, gcc-internal-format
  msgid "previous %<pragma omp declare reduction%> declaration"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:2109
  #, fuzzy, gcc-internal-format
  #| msgid "previous definition here"
  msgid "%q#D previously defined here"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: cp/decl.cc:2110 cp/name-lookup.cc:3388 cp/name-lookup.cc:3426
  #: cp/name-lookup.cc:3452
  #, fuzzy, gcc-internal-format
  msgid "%q#D previously declared here"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:2118
  #, gcc-internal-format
  msgid "parameter declaration is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2123
  #, gcc-internal-format
  msgid "structured binding at namespace scope is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2127
  #, gcc-internal-format
  msgid "static structured binding is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2131
  #, gcc-internal-format
  msgid "extern structured binding is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2138
  #, gcc-internal-format
  msgid "static data member is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2141
  #, gcc-internal-format
  msgid "variable at namespace scope is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2144
  #, gcc-internal-format
  msgid "static variable is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2147
  #, gcc-internal-format
  msgid "extern variable is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2159
  #, fuzzy, gcc-internal-format
  msgid "prototype specified for %q#D"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð¿Ñ€Ð°Ñ‚Ð°Ñ‚Ñ‹Ð¿Ð° Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:2161
  #, fuzzy, gcc-internal-format
  #| msgid "previous definition here"
  msgid "previous non-prototype definition here"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: cp/decl.cc:2201
  #, fuzzy, gcc-internal-format
  msgid "conflicting declaration of %q#D with %qL linkage"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:2204
  #, fuzzy, gcc-internal-format
  msgid "previous declaration with %qL linkage"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:2253 cp/decl.cc:2263
  #, fuzzy, gcc-internal-format
  msgid "default argument given for parameter %d of %q#D"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/decl.cc:2256 cp/decl.cc:2266
  #, fuzzy, gcc-internal-format
  msgid "previous specification in %q#D here"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:2321 cp/decl.cc:17267
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with previous declaration `%#D'"
  msgid "conflicting exporting for declaration %qD"
  msgstr "ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ–Ð¼ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½ÐµÐ¼ `%#D'"
  
! #: cp/decl.cc:2323 cp/decl.cc:17269
  #, gcc-internal-format
  msgid "previously declared here without exporting"
  msgstr ""
  
! #: cp/decl.cc:2353
  #, fuzzy, gcc-internal-format
  #| msgid "previous definition here"
  msgid "previous definition of %qD here"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: cp/decl.cc:2354
  #, fuzzy, gcc-internal-format
  msgid "previous declaration of %qD here"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:2369
  #, gcc-internal-format
  msgid "function %qD declared %<[[noreturn]]%> but its first declaration was not"
  msgstr ""
  
! #: cp/decl.cc:2416
  #, fuzzy, gcc-internal-format
  msgid "redundant redeclaration of %qD in same scope"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:2432
  #, gcc-internal-format
  msgid "deleted definition of %qD is not first declaration"
  msgstr ""
--- 57126,57413 ----
  msgid "structured binding declaration set but not used"
  msgstr ""
  
! #: cp/decl.cc:903
  #, gcc-internal-format
  msgid "%qF declared %<static%> but never defined"
  msgstr ""
  
! #: cp/decl.cc:910
  #, gcc-internal-format
  msgid "odr-used inline variable %qD is not defined"
  msgstr ""
  
! #: cp/decl.cc:1355
  #, gcc-internal-format
  msgid "%qD was declared %<extern%> and later %<static%>"
  msgstr ""
  
! #: cp/decl.cc:1395
  #, gcc-internal-format
  msgid "declaration of %qF has a different exception specifier"
  msgstr ""
  
! #: cp/decl.cc:1425
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration `%D'"
  msgid "from previous declaration %qF"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%D'"
  
! #: cp/decl.cc:1486
  #, fuzzy, gcc-internal-format
  #| msgid "this is a previous declaration"
  msgid "redeclaration %qD differs in %qs from previous declaration"
  msgstr "Ð³Ñ�Ñ‚Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: cp/decl.cc:1490 cp/decl.cc:17247
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration `%D'"
  msgid "previous declaration %qD"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%D'"
  
! #: cp/decl.cc:1511
  #, gcc-internal-format
  msgid "redeclaration of %q#D may not have default arguments"
  msgstr ""
  
! #: cp/decl.cc:1540
  #, gcc-internal-format
  msgid "friend declaration of %q#D specifies default arguments and isn%'t the only declaration"
  msgstr ""
  
! #: cp/decl.cc:1543
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration of `%#D'"
  msgid "previous declaration of %q#D"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%#D'"
  
! #: cp/decl.cc:1596
  #, fuzzy, gcc-internal-format
  msgid "ambiguating new declaration %q+#D"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:1598 cp/decl.cc:2025
  #, fuzzy, gcc-internal-format
  msgid "old declaration %q#D"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:1638
  #, fuzzy, gcc-internal-format
  msgid "redefinition of default argument for %q+#D"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/decl.cc:1640
  #, fuzzy, gcc-internal-format
  #| msgid "previous definition here"
  msgid "original definition appeared here"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: cp/decl.cc:1706
  #, fuzzy, gcc-internal-format
  msgid "built-in function %qD declared as non-function"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/decl.cc:1719 cp/decl.cc:1845
  #, fuzzy, gcc-internal-format
  msgid "shadowing built-in function %q#D"
  msgstr "Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\":"
  
! #: cp/decl.cc:1720 cp/decl.cc:1846
  #, fuzzy, gcc-internal-format
  msgid "shadowing library function %q#D"
  msgstr "Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\":"
  
! #: cp/decl.cc:1728
  #, gcc-internal-format
  msgid "library function %q#D redeclared as non-function %q#D"
  msgstr ""
  
! #: cp/decl.cc:1732 cp/decl.cc:1793
  #, fuzzy, gcc-internal-format
  msgid "declaration of %q#D conflicts with built-in declaration %q#D"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:1820
  #, fuzzy, gcc-internal-format
  msgid "definition of %q#D ambiguates built-in declaration %q#D"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:1826 cp/decl.cc:1840
  #, fuzzy, gcc-internal-format
  msgid "new declaration %q#D ambiguates built-in declaration %q#D"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:1830
  #, gcc-internal-format
  msgid "ignoring the %q#D declaration"
  msgstr ""
  
! #: cp/decl.cc:1935
  #, gcc-internal-format
  msgid "literal operator %q#D conflicts with raw literal operator"
  msgstr ""
  
! #: cp/decl.cc:1939
  #, gcc-internal-format
  msgid "raw literal operator %q#D conflicts with literal operator template"
  msgstr ""
  
! #: cp/decl.cc:1955
  #, gcc-internal-format
  msgid "%q#D redeclared as different kind of entity"
  msgstr ""
  
! #: cp/decl.cc:1980
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of template `%#D'"
  msgid "conflicting declaration of template %q#D"
  msgstr "Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ ÑˆÐ°Ð±Ð»Ñ‘Ð½Ñƒ `%#D'"
  
! #: cp/decl.cc:2001
  #, fuzzy, gcc-internal-format
  msgid "conflicting declaration of C function %q#D"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:2023
  #, fuzzy, gcc-internal-format
  msgid "ambiguating new declaration of %q#D"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:2034
  #, fuzzy, gcc-internal-format
  msgid "conflicting declaration %q#D"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:2036
  #, fuzzy, gcc-internal-format
  msgid "previous declaration as %q#D"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:2047
  #, gcc-internal-format
  msgid "redeclaration of %<pragma omp declare reduction%>"
  msgstr ""
  
! #: cp/decl.cc:2049
  #, fuzzy, gcc-internal-format
  msgid "previous %<pragma omp declare reduction%> declaration"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:2107
  #, fuzzy, gcc-internal-format
  #| msgid "previous definition here"
  msgid "%q#D previously defined here"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: cp/decl.cc:2108 cp/name-lookup.cc:3388 cp/name-lookup.cc:3426
  #: cp/name-lookup.cc:3452
  #, fuzzy, gcc-internal-format
  msgid "%q#D previously declared here"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:2116
  #, gcc-internal-format
  msgid "parameter declaration is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2121
  #, gcc-internal-format
  msgid "structured binding at namespace scope is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2125
  #, gcc-internal-format
  msgid "static structured binding is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2129
  #, gcc-internal-format
  msgid "extern structured binding is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2136
  #, gcc-internal-format
  msgid "static data member is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2139
  #, gcc-internal-format
  msgid "variable at namespace scope is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2142
  #, gcc-internal-format
  msgid "static variable is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2145
  #, gcc-internal-format
  msgid "extern variable is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2157
  #, fuzzy, gcc-internal-format
  msgid "prototype specified for %q#D"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð¿Ñ€Ð°Ñ‚Ð°Ñ‚Ñ‹Ð¿Ð° Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:2159
  #, fuzzy, gcc-internal-format
  #| msgid "previous definition here"
  msgid "previous non-prototype definition here"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: cp/decl.cc:2199
  #, fuzzy, gcc-internal-format
  msgid "conflicting declaration of %q#D with %qL linkage"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:2202
  #, fuzzy, gcc-internal-format
  msgid "previous declaration with %qL linkage"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:2251 cp/decl.cc:2261
  #, fuzzy, gcc-internal-format
  msgid "default argument given for parameter %d of %q#D"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/decl.cc:2254 cp/decl.cc:2264
  #, fuzzy, gcc-internal-format
  msgid "previous specification in %q#D here"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:2319 cp/decl.cc:17265
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with previous declaration `%#D'"
  msgid "conflicting exporting for declaration %qD"
  msgstr "ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ–Ð¼ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½ÐµÐ¼ `%#D'"
  
! #: cp/decl.cc:2321 cp/decl.cc:17267
  #, gcc-internal-format
  msgid "previously declared here without exporting"
  msgstr ""
  
! #: cp/decl.cc:2351
  #, fuzzy, gcc-internal-format
  #| msgid "previous definition here"
  msgid "previous definition of %qD here"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: cp/decl.cc:2352
  #, fuzzy, gcc-internal-format
  msgid "previous declaration of %qD here"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:2367
  #, gcc-internal-format
  msgid "function %qD declared %<[[noreturn]]%> but its first declaration was not"
  msgstr ""
  
! #: cp/decl.cc:2414
  #, fuzzy, gcc-internal-format
  msgid "redundant redeclaration of %qD in same scope"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:2430
  #, gcc-internal-format
  msgid "deleted definition of %qD is not first declaration"
  msgstr ""
*************** msgstr ""
*** 57338,57383 ****
  #. that specialization that would cause an implicit
  #. instantiation to take place, in every translation unit in
  #. which such a use occurs.
! #: cp/decl.cc:2949
  #, fuzzy, gcc-internal-format
  msgid "explicit specialization of %qD after first use"
  msgstr "Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ†Ñ‹Ñ�"
  
! #: cp/decl.cc:3131
  #, fuzzy, gcc-internal-format
  #| msgid "section of `%s' conflicts with previous declaration"
  msgid "%qD: visibility attribute ignored because it conflicts with previous declaration"
  msgstr "Ñ�ÐµÐºÑ†Ñ‹Ñ� \"%s\" ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÐµ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð¹ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ�Ð¹"
  
  #. Reject two definitions.
! #: cp/decl.cc:3409 cp/decl.cc:3438 cp/decl.cc:3476 cp/decl.cc:3493
! #: cp/decl.cc:3592
  #, fuzzy, gcc-internal-format
  #| msgid "previous definition of `%#T'"
  msgid "redefinition of %q#D"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ `%#T'"
  
! #: cp/decl.cc:3425
  #, fuzzy, gcc-internal-format
  msgid "%qD conflicts with used function"
  msgstr "Ñ�ÐµÐºÑ†Ñ‹Ñ� \"%s\" ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÐµ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð¹ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ�Ð¹"
  
! #: cp/decl.cc:3435
  #, fuzzy, gcc-internal-format
  msgid "%q#D not declared in class"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/decl.cc:3449 cp/decl.cc:3503
  #, gcc-internal-format
  msgid "%q+D redeclared inline with %<gnu_inline%> attribute"
  msgstr ""
  
! #: cp/decl.cc:3452 cp/decl.cc:3506
  #, gcc-internal-format
  msgid "%q+D redeclared inline without %<gnu_inline%> attribute"
  msgstr ""
  
! #: cp/decl.cc:3462
  #, gcc-internal-format
  msgid "comparison operator %q+D defaulted after its first declaration"
  msgstr ""
--- 57420,57465 ----
  #. that specialization that would cause an implicit
  #. instantiation to take place, in every translation unit in
  #. which such a use occurs.
! #: cp/decl.cc:2947
  #, fuzzy, gcc-internal-format
  msgid "explicit specialization of %qD after first use"
  msgstr "Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ†Ñ‹Ñ�"
  
! #: cp/decl.cc:3129
  #, fuzzy, gcc-internal-format
  #| msgid "section of `%s' conflicts with previous declaration"
  msgid "%qD: visibility attribute ignored because it conflicts with previous declaration"
  msgstr "Ñ�ÐµÐºÑ†Ñ‹Ñ� \"%s\" ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÐµ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð¹ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ�Ð¹"
  
  #. Reject two definitions.
! #: cp/decl.cc:3407 cp/decl.cc:3436 cp/decl.cc:3474 cp/decl.cc:3491
! #: cp/decl.cc:3590
  #, fuzzy, gcc-internal-format
  #| msgid "previous definition of `%#T'"
  msgid "redefinition of %q#D"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ `%#T'"
  
! #: cp/decl.cc:3423
  #, fuzzy, gcc-internal-format
  msgid "%qD conflicts with used function"
  msgstr "Ñ�ÐµÐºÑ†Ñ‹Ñ� \"%s\" ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÐµ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð¹ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ�Ð¹"
  
! #: cp/decl.cc:3433
  #, fuzzy, gcc-internal-format
  msgid "%q#D not declared in class"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/decl.cc:3447 cp/decl.cc:3501
  #, gcc-internal-format
  msgid "%q+D redeclared inline with %<gnu_inline%> attribute"
  msgstr ""
  
! #: cp/decl.cc:3450 cp/decl.cc:3504
  #, gcc-internal-format
  msgid "%q+D redeclared inline without %<gnu_inline%> attribute"
  msgstr ""
  
! #: cp/decl.cc:3460
  #, gcc-internal-format
  msgid "comparison operator %q+D defaulted after its first declaration"
  msgstr ""
*************** msgstr ""
*** 57385,57406 ****
  #. is_primary=
  #. is_partial=
  #. is_friend_decl=
! #: cp/decl.cc:3523
  #, gcc-internal-format
  msgid "redeclaration of friend %q#D may not have default template arguments"
  msgstr ""
  
! #: cp/decl.cc:3538
  #, gcc-internal-format
  msgid "thread-local declaration of %q#D follows non-thread-local declaration"
  msgstr ""
  
! #: cp/decl.cc:3541
  #, gcc-internal-format
  msgid "non-thread-local declaration of %q#D follows thread-local declaration"
  msgstr ""
  
! #: cp/decl.cc:3556 cp/decl.cc:3600 cp/name-lookup.cc:2913
  #: cp/name-lookup.cc:3420 cp/name-lookup.cc:3423 cp/name-lookup.cc:3446
  #: cp/name-lookup.cc:3449
  #, fuzzy, gcc-internal-format
--- 57467,57488 ----
  #. is_primary=
  #. is_partial=
  #. is_friend_decl=
! #: cp/decl.cc:3521
  #, gcc-internal-format
  msgid "redeclaration of friend %q#D may not have default template arguments"
  msgstr ""
  
! #: cp/decl.cc:3536
  #, gcc-internal-format
  msgid "thread-local declaration of %q#D follows non-thread-local declaration"
  msgstr ""
  
! #: cp/decl.cc:3539
  #, gcc-internal-format
  msgid "non-thread-local declaration of %q#D follows thread-local declaration"
  msgstr ""
  
! #: cp/decl.cc:3554 cp/decl.cc:3598 cp/name-lookup.cc:2913
  #: cp/name-lookup.cc:3420 cp/name-lookup.cc:3423 cp/name-lookup.cc:3446
  #: cp/name-lookup.cc:3449
  #, fuzzy, gcc-internal-format
*************** msgstr ""
*** 57408,59940 ****
  msgid "redeclaration of %q#D"
  msgstr "Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%#D'"
  
! #: cp/decl.cc:3583
  #, gcc-internal-format
  msgid "redundant redeclaration of %<constexpr%> static data member %qD"
  msgstr ""
  
! #: cp/decl.cc:3652
  #, gcc-internal-format
  msgid "local label %qE conflicts with existing label"
  msgstr ""
  
! #: cp/decl.cc:3653
  #, gcc-internal-format
  msgid "previous label"
  msgstr ""
  
! #: cp/decl.cc:3743
  #, fuzzy, gcc-internal-format
  msgid "jump to label %qD"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½Ð½Ðµ \"%s\""
  
! #: cp/decl.cc:3744
  #, gcc-internal-format
  msgid "jump to case label"
  msgstr ""
  
! #: cp/decl.cc:3748
  #, gcc-internal-format
  msgid "  as a possible target of computed goto"
  msgstr ""
  
! #: cp/decl.cc:3750
  #, gcc-internal-format
  msgid "  from here"
  msgstr " Ð°Ð´Ñ�ÑŽÐ»ÑŒ"
  
! #: cp/decl.cc:3779 cp/decl.cc:4018
  #, gcc-internal-format
  msgid "  exits OpenMP structured block"
  msgstr ""
  
! #: cp/decl.cc:3804
  #, fuzzy, gcc-internal-format
  msgid "  crosses initialization of %q#D"
  msgstr "Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ†Ñ‹Ñ�"
  
! #: cp/decl.cc:3816 cp/decl.cc:3984
  #, gcc-internal-format
  msgid "  enters %<try%> block"
  msgstr ""
  
! #: cp/decl.cc:3822 cp/decl.cc:3973 cp/decl.cc:3986
  #, gcc-internal-format
  msgid "  enters %<catch%> block"
  msgstr ""
  
! #: cp/decl.cc:3828 cp/decl.cc:4000
  #, gcc-internal-format
  msgid "  enters OpenMP structured block"
  msgstr ""
  
! #: cp/decl.cc:3834 cp/decl.cc:3988
  #, gcc-internal-format
  msgid "  enters synchronized or atomic statement"
  msgstr ""
  
! #: cp/decl.cc:3840 cp/decl.cc:3994
  #, fuzzy, gcc-internal-format
  msgid "  enters statement expression"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/decl.cc:3847 cp/decl.cc:3990
  #, gcc-internal-format
  msgid "  enters %<constexpr if%> statement"
  msgstr ""
  
! #: cp/decl.cc:3853 cp/decl.cc:3992
  #, gcc-internal-format
  msgid "  enters %<consteval if%> statement"
  msgstr ""
  
! #: cp/decl.cc:3884 cp/decl.cc:4058
  #, fuzzy, gcc-internal-format
  #| msgid "%s does not support %s"
  msgid "  does not destroy %qD"
  msgstr "%s Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ %s"
  
! #: cp/decl.cc:3886 cp/decl.cc:4042
  #, gcc-internal-format
  msgid "  does not clean up handled exception"
  msgstr ""
  
! #: cp/decl.cc:3978
  #, fuzzy, gcc-internal-format
  msgid "  skips initialization of %q#D"
  msgstr "Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ†Ñ‹Ñ�"
  
! #: cp/decl.cc:4518 cp/parser.cc:7467
  #, gcc-internal-format
  msgid "%qD used without template arguments"
  msgstr ""
  
! #: cp/decl.cc:4524
  #, fuzzy, gcc-internal-format
  msgid "%qD is a function, not a type"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/decl.cc:4535
  #, fuzzy, gcc-internal-format
  msgid "%q#T is not a class"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:4574 cp/decl.cc:4675
  #, gcc-internal-format
  msgid "no class template named %q#T in %q#T"
  msgstr ""
  
! #: cp/decl.cc:4575
  #, fuzzy, gcc-internal-format
  msgid "no type named %q#T in %q#T"
  msgstr "Ð²Ñ�Ñ€Ñ‚Ð°ÐµÐ¼Ñ‹ Ñ‚Ñ‹Ð¿ \"%s\" Ð½Ðµ \"int\""
  
! #: cp/decl.cc:4589
  #, fuzzy, gcc-internal-format
  msgid "lookup of %qT in %qT is ambiguous"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ \"%s\" - %d Ð±Ð°Ð¹Ñ‚"
  
! #: cp/decl.cc:4598
  #, gcc-internal-format
  msgid "%<typename %T::%D%> names %q#T, which is not a class template"
  msgstr ""
  
! #: cp/decl.cc:4611
  #, gcc-internal-format
  msgid "%<typename %T::%D%> names %q#D, which is not a type"
  msgstr ""
  
! #: cp/decl.cc:4685
  #, fuzzy, gcc-internal-format
  msgid "template parameters do not match template %qD"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/decl.cc:5163
  #, gcc-internal-format
  msgid "%<-faligned-new=%d%> is not a power of two"
  msgstr ""
  
! #: cp/decl.cc:5218
  #, gcc-internal-format
  msgid "%<--param destructive-interference-size=%d%> is less than %d"
  msgstr ""
  
! #: cp/decl.cc:5222
  #, gcc-internal-format
  msgid "%<--param destructive-interference-size=%d%> is less than %<--param l1-cache-line-size=%d%>"
  msgstr ""
  
! #: cp/decl.cc:5235
  #, gcc-internal-format
  msgid "%<--param constructive-interference-size=%d%> is less than %d"
  msgstr ""
  
! #: cp/decl.cc:5240
  #, gcc-internal-format
  msgid "%<--param constructive-interference-size=%d%> is greater than %<--param l1-cache-line-size=%d%>"
  msgstr ""
  
! #: cp/decl.cc:5567
  #, gcc-internal-format
  msgid "%q#D invalid; an anonymous union may only have public non-static data members"
  msgstr ""
  
! #: cp/decl.cc:5577 cp/parser.cc:24254
  #, gcc-internal-format
  msgid "this flexibility is deprecated and will be removed"
  msgstr ""
  
! #: cp/decl.cc:5606
  #, gcc-internal-format
  msgid "anonymous struct with base classes"
  msgstr ""
  
! #: cp/decl.cc:5618
  #, gcc-internal-format
  msgid "member %q+#D with constructor not allowed in anonymous aggregate"
  msgstr ""
  
! #: cp/decl.cc:5621
  #, gcc-internal-format
  msgid "member %q+#D with destructor not allowed in anonymous aggregate"
  msgstr ""
  
! #: cp/decl.cc:5624
  #, gcc-internal-format
  msgid "member %q+#D with copy assignment operator not allowed in anonymous aggregate"
  msgstr ""
  
! #: cp/decl.cc:5643
  #, fuzzy, gcc-internal-format
  msgid "attribute ignored in declaration of %q#T"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:5646
  #, gcc-internal-format
  msgid "attribute for %q#T must follow the %qs keyword"
  msgstr ""
  
! #: cp/decl.cc:5688
  #, gcc-internal-format
  msgid "multiple types in one declaration"
  msgstr ""
  
! #: cp/decl.cc:5693
  #, fuzzy, gcc-internal-format
  msgid "redeclaration of C++ built-in type %qT"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:5710
  #, gcc-internal-format
  msgid "%<auto%> can only be specified for variables or function declarations"
  msgstr ""
  
! #: cp/decl.cc:5743
  #, gcc-internal-format
  msgid "missing type-name in typedef-declaration"
  msgstr ""
  
! #: cp/decl.cc:5751
  #, gcc-internal-format
  msgid "ISO C++ prohibits anonymous structs"
  msgstr ""
  
! #: cp/decl.cc:5758
  #, fuzzy, gcc-internal-format
  msgid "%<inline%> can only be specified for functions"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: cp/decl.cc:5761
  #, gcc-internal-format
  msgid "%<virtual%> can only be specified for functions"
  msgstr ""
  
! #: cp/decl.cc:5766
  #, gcc-internal-format
  msgid "%<friend%> can only be specified inside a class"
  msgstr ""
  
! #: cp/decl.cc:5769
  #, gcc-internal-format
  msgid "%<explicit%> can only be specified for constructors"
  msgstr ""
  
! #: cp/decl.cc:5772
  #, gcc-internal-format
  msgid "a storage class can only be specified for objects and functions"
  msgstr ""
  
! #: cp/decl.cc:5776
  #, gcc-internal-format
  msgid "%<const%> can only be specified for objects and functions"
  msgstr ""
  
! #: cp/decl.cc:5780
  #, gcc-internal-format
  msgid "%<volatile%> can only be specified for objects and functions"
  msgstr ""
  
! #: cp/decl.cc:5784
  #, gcc-internal-format
  msgid "%<__restrict%> can only be specified for objects and functions"
  msgstr ""
  
! #: cp/decl.cc:5788
  #, gcc-internal-format
  msgid "%<__thread%> can only be specified for objects and functions"
  msgstr ""
  
! #: cp/decl.cc:5792
  #, gcc-internal-format
  msgid "%<typedef%> was ignored in this declaration"
  msgstr ""
  
! #: cp/decl.cc:5795 cp/decl.cc:5798 cp/decl.cc:5801
  #, fuzzy, gcc-internal-format
  msgid "%qs cannot be used for type declarations"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/decl.cc:5824
  #, fuzzy, gcc-internal-format
  msgid "attribute ignored in explicit instantiation %q#T"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:5827
  #, fuzzy, gcc-internal-format
  msgid "no attribute can be applied to an explicit instantiation"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/decl.cc:5840 cp/decl.cc:13780 cp/decl.cc:15427 cp/parser.cc:16037
! #: cp/parser.cc:21975 cp/parser.cc:28867
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute ignored"
  msgid "attribute ignored"
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
! #: cp/decl.cc:5842 cp/decl.cc:13781
  #, gcc-internal-format
  msgid "an attribute that appertains to a type-specifier is ignored"
  msgstr ""
  
! #: cp/decl.cc:5917
  #, gcc-internal-format
  msgid "ignoring attributes applied to class type %qT outside of definition"
  msgstr ""
  
  #. A template type parameter or other dependent type.
! #: cp/decl.cc:5921
  #, gcc-internal-format
  msgid "ignoring attributes applied to dependent type %qT without an associated declaration"
  msgstr ""
  
! #: cp/decl.cc:5987 cp/decl2.cc:1069 cp/decl2.cc:1271
  #, fuzzy, gcc-internal-format
  msgid "typedef %qD is initialized (use %qs instead)"
  msgstr "Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\" Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ð½Ñ‹"
  
! #: cp/decl.cc:6000
  #, gcc-internal-format
  msgid "declaration of %q#D has %<extern%> and is initialized"
  msgstr ""
  
! #: cp/decl.cc:6038
  #, gcc-internal-format
  msgid "definition of %q#D is marked %<dllimport%>"
  msgstr ""
  
! #: cp/decl.cc:6065
  #, gcc-internal-format
  msgid "%q+#D is not a static data member of %q#T"
  msgstr ""
  
! #: cp/decl.cc:6074
  #, fuzzy, gcc-internal-format
  msgid "non-member-template declaration of %qD"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ"
  
! #: cp/decl.cc:6075
  #, fuzzy, gcc-internal-format
  msgid "does not match member template declaration here"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:6087
  #, gcc-internal-format
  msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
  msgstr ""
  
! #: cp/decl.cc:6099
  #, fuzzy, gcc-internal-format
  msgid "duplicate initialization of %qD"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:6149 cp/decl.cc:6153
  #, gcc-internal-format
  msgid "declaration of %q#D outside of class is not definition"
  msgstr ""
  
! #: cp/decl.cc:6171
  #, gcc-internal-format
  msgid "block-scope extern declaration %q#D must not be attached to a named module"
  msgstr ""
  
! #: cp/decl.cc:6207
  #, gcc-internal-format
  msgid "%qD defined %<thread_local%> in %qs function only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/decl.cc:6213
  #, gcc-internal-format
  msgid "%qD defined %<static%> in %qs function only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/decl.cc:6279
  #, fuzzy, gcc-internal-format
  msgid "variable %q#D has initializer but incomplete type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:6288 cp/decl.cc:7763
  #, fuzzy, gcc-internal-format
  msgid "elements of array %q#D have incomplete type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:6299
  #, gcc-internal-format
  msgid "aggregate %q#D has incomplete type and cannot be defined"
  msgstr ""
  
! #: cp/decl.cc:6369
  #, gcc-internal-format
  msgid "%qD declared as reference but not initialized"
  msgstr ""
  
! #: cp/decl.cc:6452
  #, gcc-internal-format
  msgid "name used in a GNU-style designated initializer for an array"
  msgstr ""
  
! #: cp/decl.cc:6458
  #, gcc-internal-format
  msgid "name %qD used in a GNU-style designated initializer for an array"
  msgstr ""
  
! #: cp/decl.cc:6477
  #, gcc-internal-format
  msgid "non-trivial designated initializers not supported"
  msgstr ""
  
! #: cp/decl.cc:6481
  #, fuzzy, gcc-internal-format
  msgid "C99 designator %qE is not an integral constant-expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/decl.cc:6546
  #, gcc-internal-format
  msgid "initializer fails to determine size of %qD"
  msgstr ""
  
! #: cp/decl.cc:6553
  #, fuzzy, gcc-internal-format
  #| msgid "array size missing in `%D'"
  msgid "array size missing in %qD"
  msgstr "Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½ Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° Ñž `%D'"
  
! #: cp/decl.cc:6565
  #, fuzzy, gcc-internal-format
  #| msgid "zero-size array `%D'"
  msgid "zero-size array %qD"
  msgstr "Ð½ÑƒÐ»Ñ�Ð²Ñ‹ Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° `%D'"
  
! #: cp/decl.cc:6605
  #, gcc-internal-format
  msgid "storage size of %qD isn%'t known"
  msgstr ""
  
! #: cp/decl.cc:6630
  #, fuzzy, gcc-internal-format
  msgid "storage size of %qD isn%'t constant"
  msgstr "Ñ‚Ñ‹Ð¿ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" Ð½Ðµ Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ñ‹"
  
! #: cp/decl.cc:6732
  #, gcc-internal-format
  msgid "sorry: semantics of inline variable %q#D are wrong (you%'ll wind up with multiple copies)"
  msgstr ""
  
! #: cp/decl.cc:6736
  #, gcc-internal-format
  msgid "sorry: semantics of inline function static data %q#D are wrong (you%'ll wind up with multiple copies)"
  msgstr ""
  
! #: cp/decl.cc:6743
  #, gcc-internal-format
  msgid "you can work around this by removing the initializer"
  msgstr ""
  
! #: cp/decl.cc:6786 rust/backend/rust-tree.cc:3265
  #, fuzzy, gcc-internal-format
  msgid "uninitialized %<const %D%>"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: cp/decl.cc:6793 rust/backend/rust-tree.cc:3272
  #, gcc-internal-format
  msgid "uninitialized variable %qD in %<constexpr%> function"
  msgstr ""
  
! #: cp/decl.cc:6802 rust/backend/rust-tree.cc:3281
  #, gcc-internal-format
  msgid "uninitialized variable %qD in %<constexpr%> context"
  msgstr ""
  
! #: cp/decl.cc:6810
  #, gcc-internal-format
  msgid "%q#T has no user-provided default constructor"
  msgstr ""
  
! #: cp/decl.cc:6814
  #, gcc-internal-format
  msgid "constructor is not user-provided because it is explicitly defaulted in the class body"
  msgstr ""
  
! #: cp/decl.cc:6817
  #, gcc-internal-format
  msgid "and the implicitly-defined constructor does not initialize %q#D"
  msgstr ""
  
! #: cp/decl.cc:7117
  #, fuzzy, gcc-internal-format
  msgid "invalid type %qT as initializer for a vector of type %qT"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/decl.cc:7189
  #, gcc-internal-format
  msgid "initializer for %qT must be brace-enclosed"
  msgstr ""
  
! #: cp/decl.cc:7234
  #, gcc-internal-format
  msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
  msgstr ""
  
! #: cp/decl.cc:7251 cp/init.cc:3424 cp/search.cc:1244
  #, fuzzy, gcc-internal-format
  msgid "request for member %qD is ambiguous"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ \"%s\" - %d Ð±Ð°Ð¹Ñ‚"
  
! #: cp/decl.cc:7256
  #, gcc-internal-format
  msgid "%qT has no non-static data member named %qD"
  msgstr ""
  
! #: cp/decl.cc:7281
  #, gcc-internal-format
  msgid "%qD is not a direct member of %qT"
  msgstr ""
  
! #: cp/decl.cc:7337
  #, fuzzy, gcc-internal-format
  #| msgid "invalid initializer"
  msgid "invalid initializer for %q#D"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/decl.cc:7391
  #, gcc-internal-format
  msgid "C99 designator %qE outside aggregate initializer"
  msgstr ""
  
! #: cp/decl.cc:7430 cp/decl.cc:7721 cp/typeck2.cc:1634 cp/typeck2.cc:1969
  #: cp/typeck2.cc:2017 cp/typeck2.cc:2064
  #, fuzzy, gcc-internal-format
  msgid "too many initializers for %qT"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: cp/decl.cc:7473
  #, fuzzy, gcc-internal-format
  msgid "braces around scalar initializer for type %qT"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: cp/decl.cc:7483
  #, gcc-internal-format
  msgid "too many braces around scalar initializer for type %qT"
  msgstr ""
  
! #: cp/decl.cc:7617
  #, fuzzy, gcc-internal-format
  msgid "missing braces around initializer for %qT"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: cp/decl.cc:7751
  #, fuzzy, gcc-internal-format
  msgid "structured binding has incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:7765
  #, fuzzy, gcc-internal-format
  msgid "elements of array %q#T have incomplete type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:7778
  #, gcc-internal-format
  msgid "variable-sized compound literal"
  msgstr ""
  
! #: cp/decl.cc:7834
  #, fuzzy, gcc-internal-format
  msgid "%q#D has incomplete type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:7855
  #, gcc-internal-format
  msgid "scalar object %qD requires one element in initializer"
  msgstr ""
  
! #: cp/decl.cc:7900
  #, gcc-internal-format
  msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
  msgstr ""
  
! #: cp/decl.cc:8043
  #, gcc-internal-format
  msgid "array %qD initialized by parenthesized string literal %qE"
  msgstr ""
  
! #: cp/decl.cc:8083
  #, gcc-internal-format
  msgid "initializer invalid for static member with constructor"
  msgstr ""
  
! #: cp/decl.cc:8085
  #, gcc-internal-format
  msgid "non-constant in-class initialization invalid for static member %qD"
  msgstr ""
  
! #: cp/decl.cc:8088
  #, gcc-internal-format
  msgid "non-constant in-class initialization invalid for non-inline static member %qD"
  msgstr ""
  
! #: cp/decl.cc:8093
  #, gcc-internal-format
  msgid "(an out of class initialization is required)"
  msgstr ""
  
! #: cp/decl.cc:8295
  #, fuzzy, gcc-internal-format
  msgid "reference %qD is initialized with itself"
  msgstr "Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\" Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ð½Ñ‹"
  
! #: cp/decl.cc:8497
  #, fuzzy, gcc-internal-format
  msgid "argument %d of %qE must be of %<omp_interop_t%>"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: cp/decl.cc:8668
  #, fuzzy, gcc-internal-format
  msgid "could not find variant declaration"
  msgstr "Ð�Ðµ Ð¼Ð°Ð³Ñƒ Ð·Ð½Ð°Ð¹Ñ�Ñ†Ñ– Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹ÑŽ Ñ–Ð½Ñ‚Ñ�Ñ€Ñ„ÐµÐ¹Ñ�Ð° Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:8692
  #, gcc-internal-format
  msgid "%<declare variant%> on constructor %qD"
  msgstr ""
  
! #: cp/decl.cc:8697
  #, gcc-internal-format
  msgid "%<declare variant%> on destructor %qD"
  msgstr ""
  
! #: cp/decl.cc:8702
  #, gcc-internal-format
  msgid "%<declare variant%> on defaulted %qD"
  msgstr ""
  
! #: cp/decl.cc:8707
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of template `%#D'"
  msgid "%<declare variant%> on deleted %qD"
  msgstr "Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ ÑˆÐ°Ð±Ð»Ñ‘Ð½Ñƒ `%#D'"
  
! #: cp/decl.cc:8712
  #, gcc-internal-format
  msgid "%<declare variant%> on virtual %qD"
  msgstr ""
  
! #: cp/decl.cc:8777
  #, gcc-internal-format
  msgid "assignment (not initialization) in declaration"
  msgstr ""
  
! #: cp/decl.cc:8798 cp/decl.cc:15827
  #, gcc-internal-format
  msgid "ISO C++17 does not allow %<register%> storage class specifier"
  msgstr ""
  
! #: cp/decl.cc:8802 cp/decl.cc:15831
  #, gcc-internal-format
  msgid "%<register%> storage class specifier used"
  msgstr ""
  
! #: cp/decl.cc:8847 cp/decl.cc:15794
  #, fuzzy, gcc-internal-format
  msgid "declaration of %q#D has no initializer"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:8883
  #, gcc-internal-format
  msgid "initializer for %<decltype(auto) %D%> has function type; did you forget the %<()%>?"
  msgstr ""
  
! #: cp/decl.cc:8895
  #, fuzzy, gcc-internal-format
  msgid "deduced type %qT for %qD is incomplete"
  msgstr "Ð²Ñ�Ñ€Ñ‚Ð°ÐµÐ¼Ñ‹ Ñ‚Ñ‹Ð¿ \"%s\" Ð½Ðµ \"int\""
  
  #. [basic.start.main]/3: A program that defines main as deleted
  #. is ill-formed.
! #: cp/decl.cc:8946
  #, gcc-internal-format
  msgid "%<::main%> cannot be deleted"
  msgstr ""
  
! #: cp/decl.cc:9100
  #, fuzzy, gcc-internal-format
  msgid "shadowing previous type declaration of %q#D"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:9143
  #, gcc-internal-format
  msgid "%<constinit%> can only be applied to a variable with static or thread storage duration"
  msgstr ""
  
! #: cp/decl.cc:9351
  #, gcc-internal-format
  msgid "function %q#D is initialized like a variable"
  msgstr ""
  
! #: cp/decl.cc:9583
  #, gcc-internal-format
  msgid "cannot decompose lambda closure type %qT"
  msgstr ""
  
! #: cp/decl.cc:9584
  #, gcc-internal-format
  msgid "lambda declared here"
  msgstr ""
  
! #: cp/decl.cc:9600
  #, gcc-internal-format
  msgid "cannot decompose class type %qT because it has an anonymous struct member"
  msgstr ""
  
! #: cp/decl.cc:9603
  #, gcc-internal-format
  msgid "cannot decompose class type %qT because it has an anonymous union member"
  msgstr ""
  
! #: cp/decl.cc:9611
  #, gcc-internal-format
  msgid "cannot decompose inaccessible member %qD of %qT"
  msgstr ""
  
! #: cp/decl.cc:9634
  #, gcc-internal-format
  msgid "in base class of %qT"
  msgstr ""
  
! #: cp/decl.cc:9641
  #, gcc-internal-format
  msgid "cannot decompose class type %qT: both it and its base class %qT have non-static data members"
  msgstr ""
  
! #: cp/decl.cc:9650
  #, gcc-internal-format
  msgid "cannot decompose class type %qT: its base classes %qT and %qT have non-static data members"
  msgstr ""
  
! #: cp/decl.cc:9888
  #, fuzzy, gcc-internal-format
  msgid "structured binding refers to incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:9904
  #, gcc-internal-format
  msgid "array initializer for structured binding declaration in condition"
  msgstr ""
  
! #: cp/decl.cc:9910
  #, gcc-internal-format
  msgid "cannot decompose variable length array %qT"
  msgstr ""
  
! #: cp/decl.cc:9920 cp/decl.cc:10000
  #, gcc-internal-format, gfc-internal-format
  msgid "%u name provided for structured binding"
  msgid_plural "%u names provided for structured binding"
  msgstr[0] ""
  msgstr[1] ""
  
! #: cp/decl.cc:9924
  #, gcc-internal-format, gfc-internal-format
  msgid "only %u name provided for structured binding"
  msgid_plural "only %u names provided for structured binding"
  msgstr[0] ""
  msgstr[1] ""
  
! #: cp/decl.cc:9927
  #, gcc-internal-format
  msgid "while %qT decomposes into %wu element"
  msgid_plural "while %qT decomposes into %wu elements"
  msgstr[0] ""
  msgstr[1] ""
  
! #: cp/decl.cc:9968
  #, gcc-internal-format
  msgid "cannot decompose variable length vector %qT"
  msgstr ""
  
! #: cp/decl.cc:9992
  #, fuzzy, gcc-internal-format
  msgid "%<std::tuple_size<%T>::value%> is not an integral constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/decl.cc:10002
  #, gcc-internal-format
  msgid "while %qT decomposes into %E elements"
  msgstr ""
  
! #: cp/decl.cc:10049
  #, gcc-internal-format
  msgid "%<std::tuple_element<%u, %T>::type%> is %<void%>"
  msgstr ""
  
! #: cp/decl.cc:10055
  #, gcc-internal-format
  msgid "in initialization of structured binding variable %qD"
  msgstr ""
  
! #: cp/decl.cc:10084
  #, gcc-internal-format
  msgid "cannot decompose union type %qT"
  msgstr ""
  
! #: cp/decl.cc:10089
  #, gcc-internal-format
  msgid "cannot decompose non-array non-class type %qT"
  msgstr ""
  
! #: cp/decl.cc:10095
  #, gcc-internal-format
  msgid "structured binding refers to incomplete class type %qT"
  msgstr ""
  
! #: cp/decl.cc:10104
  #, gcc-internal-format
  msgid "cannot decompose class type %qT without non-static data members"
  msgstr ""
  
! #: cp/decl.cc:10600
  #, gcc-internal-format
  msgid "non-local variable %qD declared %<__thread%> needs dynamic initialization"
  msgstr ""
  
! #: cp/decl.cc:10603
  #, gcc-internal-format
  msgid "non-local variable %qD declared %<__thread%> has a non-trivial destructor"
  msgstr ""
  
! #: cp/decl.cc:10608
  #, gcc-internal-format
  msgid "C++11 %<thread_local%> allows dynamic initialization and destruction"
  msgstr ""
  
! #: cp/decl.cc:10827
  #, gcc-internal-format
  msgid "initializer fails to determine size of %qT"
  msgstr ""
  
! #: cp/decl.cc:10831
  #, fuzzy, gcc-internal-format
  #| msgid "array size missing in `%D'"
  msgid "array size missing in %qT"
  msgstr "Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½ Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° Ñž `%D'"
  
! #: cp/decl.cc:10834
  #, fuzzy, gcc-internal-format
  #| msgid "zero-size array `%D'"
  msgid "zero-size array %qT"
  msgstr "Ð½ÑƒÐ»Ñ�Ð²Ñ‹ Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° `%D'"
  
! #: cp/decl.cc:10850
  #, gcc-internal-format
  msgid "destructor for alien class %qT cannot be a member"
  msgstr ""
  
! #: cp/decl.cc:10852
  #, gcc-internal-format
  msgid "constructor for alien class %qT cannot be a member"
  msgstr ""
  
! #: cp/decl.cc:10878
  #, gcc-internal-format
  msgid "%qD declared as a %<virtual%> variable"
  msgstr ""
  
! #: cp/decl.cc:10880
  #, gcc-internal-format
  msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in variable declaration"
  msgstr ""
  
! #: cp/decl.cc:10886
  #, gcc-internal-format
  msgid "%qD declared as a %<virtual%> parameter"
  msgstr ""
  
! #: cp/decl.cc:10889
  #, gcc-internal-format
  msgid "%qD declared as an %<inline%> parameter"
  msgstr ""
  
! #: cp/decl.cc:10891
  #, gcc-internal-format
  msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter declaration"
  msgstr ""
  
! #: cp/decl.cc:10897
  #, gcc-internal-format
  msgid "%qD declared as a %<virtual%> type"
  msgstr ""
  
! #: cp/decl.cc:10900
  #, gcc-internal-format
  msgid "%qD declared as an %<inline%> type"
  msgstr ""
  
! #: cp/decl.cc:10902
  #, gcc-internal-format
  msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in type declaration"
  msgstr ""
  
! #: cp/decl.cc:10908
  #, gcc-internal-format
  msgid "%qD declared as a %<virtual%> field"
  msgstr ""
  
! #: cp/decl.cc:10911
  #, gcc-internal-format
  msgid "%qD declared as an %<inline%> field"
  msgstr ""
  
! #: cp/decl.cc:10913
  #, gcc-internal-format
  msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in field declaration"
  msgstr ""
  
! #: cp/decl.cc:10920
  #, gcc-internal-format
  msgid "%q+D declared as a friend"
  msgstr ""
  
! #: cp/decl.cc:10927
  #, fuzzy, gcc-internal-format
  msgid "%q+D declared with an exception specification"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/decl.cc:10959
  #, gcc-internal-format
  msgid "definition of %qD is not in namespace enclosing %qT"
  msgstr ""
  
! #: cp/decl.cc:10999
  #, gcc-internal-format
  msgid "static member function %q#D declared with type qualifiers"
  msgstr ""
  
! #: cp/decl.cc:11075
  #, fuzzy, gcc-internal-format
  msgid "function concepts are no longer supported"
  msgstr "-pipe Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð°."
  
! #: cp/decl.cc:11113
  #, gcc-internal-format
  msgid "constraints on a non-templated function"
  msgstr ""
  
! #: cp/decl.cc:11115
  #, gcc-internal-format
  msgid "constrained non-template friend declaration must be a definition"
  msgstr ""
  
! #: cp/decl.cc:11122
  #, gcc-internal-format
  msgid "friend function template with constraints that depend on outer template parameters must be a definition"
  msgstr ""
  
! #: cp/decl.cc:11174
  #, fuzzy, gcc-internal-format
  msgid "defining explicit specialization %qD in friend declaration"
  msgstr "Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ†Ñ‹Ñ�"
  
! #: cp/decl.cc:11185
  #, fuzzy, gcc-internal-format
  msgid "invalid use of template-id %qD in declaration of primary template"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/decl.cc:11203
  #, gcc-internal-format
  msgid "default arguments are not allowed in declaration of friend template specialization %qD"
  msgstr ""
  
! #: cp/decl.cc:11212
  #, gcc-internal-format
  msgid "%<inline%> is not allowed in declaration of friend template specialization %qD"
  msgstr ""
  
  #. diagnostic_option_id=
! #: cp/decl.cc:11243
  #, gcc-internal-format
  msgid "friend declaration of %qD specifies default arguments and isn%'t a definition"
  msgstr ""
  
! #: cp/decl.cc:11285
  #, gcc-internal-format
  msgid "cannot declare %<::main%> to be a template"
  msgstr ""
  
! #: cp/decl.cc:11288
  #, gcc-internal-format
  msgid "cannot declare %<::main%> to be inline"
  msgstr ""
  
! #: cp/decl.cc:11291 cp/decl.cc:11294
  #, gcc-internal-format
  msgid "cannot declare %<::main%> to be %qs"
  msgstr ""
  
! #: cp/decl.cc:11296
  #, gcc-internal-format
  msgid "cannot declare %<::main%> to be static"
  msgstr ""
  
! #: cp/decl.cc:11298
  #, fuzzy, gcc-internal-format
  msgid "cannot declare %<::main%> with a linkage specification"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/decl.cc:11301
  #, gcc-internal-format
  msgid "cannot attach %<::main%> to a named module"
  msgstr ""
  
! #: cp/decl.cc:11360
  #, gcc-internal-format
  msgid "non-member function %qD cannot have cv-qualifier"
  msgstr ""
  
! #: cp/decl.cc:11362
  #, gcc-internal-format
  msgid "static member function %qD cannot have cv-qualifier"
  msgstr ""
  
! #: cp/decl.cc:11363
  #, gcc-internal-format
  msgid "explicit object member function %qD cannot have cv-qualifier"
  msgstr ""
  
! #: cp/decl.cc:11368
  #, gcc-internal-format
  msgid "non-member function %qD cannot have ref-qualifier"
  msgstr ""
  
! #: cp/decl.cc:11370
  #, gcc-internal-format
  msgid "static member function %qD cannot have ref-qualifier"
  msgstr ""
  
! #: cp/decl.cc:11371
  #, gcc-internal-format
  msgid "explicit object member function %qD cannot have ref-qualifier"
  msgstr ""
  
! #: cp/decl.cc:11377 cp/decl.cc:14310 cp/decl.cc:14320 cp/parser.cc:12368
  #, fuzzy, gcc-internal-format
  msgid "explicit object parameter declared here"
  msgstr "Ñ‚Ñ‹Ð¿ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" Ð½Ðµ Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ñ‹"
  
! #: cp/decl.cc:11390
  #, gcc-internal-format
  msgid "deduction guide %qD must be declared in the same scope as %qT"
  msgstr ""
  
! #: cp/decl.cc:11392 cp/decl.cc:11401 cp/typeck.cc:4667
  #, fuzzy, gcc-internal-format
  #| msgid "  from here"
  msgid "  declared here"
  msgstr " Ð°Ð´Ñ�ÑŽÐ»ÑŒ"
  
! #: cp/decl.cc:11399
  #, gcc-internal-format
  msgid "deduction guide %qD must have the same access as %qT"
  msgstr ""
  
! #: cp/decl.cc:11405
  #, gcc-internal-format
  msgid "deduction guide %qD must not have a function body"
  msgstr ""
  
! #: cp/decl.cc:11419
  #, gcc-internal-format
  msgid "literal operator with C linkage"
  msgstr ""
  
! #: cp/decl.cc:11429
  #, fuzzy, gcc-internal-format
  msgid "%qD has invalid argument list"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/decl.cc:11437
  #, gcc-internal-format
  msgid "integer suffix %qs shadowed by implementation"
  msgstr ""
  
! #: cp/decl.cc:11443
  #, gcc-internal-format
  msgid "floating-point suffix %qs shadowed by implementation"
  msgstr ""
  
! #: cp/decl.cc:11450
  #, gcc-internal-format
  msgid "literal operator suffixes not preceded by %<_%> are reserved for future standardization"
  msgstr ""
  
! #: cp/decl.cc:11455
  #, gcc-internal-format
  msgid "%qD must be a non-member function"
  msgstr ""
  
! #: cp/decl.cc:11540
  #, fuzzy, gcc-internal-format
  #| msgid "`main' must return `int'"
  msgid "%<::main%> must return %<int%>"
  msgstr "`main' Ð¿Ð°Ð²Ñ–Ð½Ð½Ð° Ð²Ñ�Ñ€Ñ‚Ð°Ñ†ÑŒ `int'"
  
! #: cp/decl.cc:11580
  #, gcc-internal-format
  msgid "definition of implicitly-declared %qD"
  msgstr ""
  
! #: cp/decl.cc:11586
  #, gcc-internal-format
  msgid "definition of explicitly-defaulted %q+D"
  msgstr ""
  
! #: cp/decl.cc:11588
  #, fuzzy, gcc-internal-format
  msgid "%q#D explicitly defaulted here"
  msgstr "Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ†Ñ‹Ñ�"
  
! #: cp/decl.cc:11605
  #, gcc-internal-format
  msgid "no %q#D member function declared in class %qT"
  msgstr ""
  
! #: cp/decl.cc:11802
  #, gcc-internal-format
  msgid "cannot declare %<::main%> to be a global variable"
  msgstr ""
  
! #: cp/decl.cc:11805
  #, gcc-internal-format
  msgid "an entity named %<main%> cannot be declared with C language linkage"
  msgstr ""
  
! #: cp/decl.cc:11814
  #, fuzzy, gcc-internal-format
  msgid "a non-template variable cannot be %<concept%>"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/decl.cc:11817
  #, gcc-internal-format
  msgid "concept must be defined at namespace scope"
  msgstr ""
  
! #: cp/decl.cc:11820
  #, fuzzy, gcc-internal-format
  msgid "variable concepts are no longer supported"
  msgstr "-pipe Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð°."
  
! #: cp/decl.cc:11941
  #, gcc-internal-format
  msgid "in-class initialization of static data member %q#D of incomplete type"
  msgstr ""
  
! #: cp/decl.cc:11945
  #, gcc-internal-format
  msgid "%<constexpr%> needed for in-class initialization of static data member %q#D of non-integral type"
  msgstr ""
  
! #: cp/decl.cc:11949
  #, gcc-internal-format
  msgid "in-class initialization of static data member %q#D of non-literal type"
  msgstr ""
  
! #: cp/decl.cc:11960
  #, gcc-internal-format
  msgid "invalid in-class initialization of static data member of non-integral type %qT"
  msgstr ""
  
! #: cp/decl.cc:11965
  #, gcc-internal-format
  msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
  msgstr ""
  
! #: cp/decl.cc:11970
  #, gcc-internal-format
  msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT"
  msgstr ""
  
! #: cp/decl.cc:12082
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%D' has non-integer type"
  msgid "size of array %qD has non-integral type %qT"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° `%D' Ð½Ðµ Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:12085
  #, fuzzy, gcc-internal-format
  msgid "size of array has non-integral type %qT"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/decl.cc:12116 cp/decl.cc:12188
  #, fuzzy, gcc-internal-format
  msgid "size of array %qD is not an integral constant-expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/decl.cc:12120 cp/decl.cc:12191
  #, gcc-internal-format
  msgid "size of array is not an integral constant-expression"
  msgstr ""
  
! #: cp/decl.cc:12171
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids zero-size array %qD"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: cp/decl.cc:12174
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids zero-size array"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: cp/decl.cc:12198
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids variable length array %qD"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: cp/decl.cc:12201
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids variable length array"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: cp/decl.cc:12207
  #, gcc-internal-format
  msgid "variable length array %qD is used"
  msgstr ""
  
! #: cp/decl.cc:12210
  #, gcc-internal-format
  msgid "variable length array is used"
  msgstr ""
  
! #: cp/decl.cc:12262
  #, gcc-internal-format
  msgid "overflow in array dimension"
  msgstr ""
  
! #: cp/decl.cc:12322
  #, gcc-internal-format
  msgid "%qD declared as array of template placeholder type %qT"
  msgstr ""
  
! #: cp/decl.cc:12325
  #, gcc-internal-format
  msgid "creating array of template placeholder type %qT"
  msgstr ""
  
! #: cp/decl.cc:12335
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%#D'"
  msgid "declaration of %qD as array of void"
  msgstr "Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%#D'"
  
! #: cp/decl.cc:12337
  #, gcc-internal-format
  msgid "creating array of void"
  msgstr ""
  
! #: cp/decl.cc:12342
  #, gcc-internal-format
  msgid "declaration of %qD as array of functions"
  msgstr ""
  
! #: cp/decl.cc:12344
  #, gcc-internal-format
  msgid "creating array of functions"
  msgstr ""
  
! #: cp/decl.cc:12349
  #, gcc-internal-format
  msgid "declaration of %qD as array of references"
  msgstr ""
  
! #: cp/decl.cc:12351
  #, gcc-internal-format
  msgid "creating array of references"
  msgstr ""
  
! #: cp/decl.cc:12356
  #, gcc-internal-format
  msgid "declaration of %qD as array of function members"
  msgstr ""
  
! #: cp/decl.cc:12359
  #, gcc-internal-format
  msgid "creating array of function members"
  msgstr ""
  
! #: cp/decl.cc:12377
  #, gcc-internal-format
  msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first"
  msgstr ""
  
! #: cp/decl.cc:12381
  #, gcc-internal-format
  msgid "multidimensional array must have bounds for all dimensions except the first"
  msgstr ""
  
! #: cp/decl.cc:12395
  #, gcc-internal-format
  msgid "variable-length array of %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:12493
  #, gcc-internal-format
  msgid "return type specification for constructor invalid"
  msgstr ""
  
! #: cp/decl.cc:12496
  #, fuzzy, gcc-internal-format
  msgid "qualifiers are not allowed on constructor declaration"
  msgstr "\"%s\" - Ð³Ñ�Ñ‚Ð° Ð½Ðµ Ð¿Ð°Ñ‡Ð°Ñ‚Ð°Ðº Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ–"
  
! #: cp/decl.cc:12507
  #, gcc-internal-format
  msgid "return type specification for destructor invalid"
  msgstr ""
  
! #: cp/decl.cc:12510
  #, fuzzy, gcc-internal-format
  msgid "qualifiers are not allowed on destructor declaration"
  msgstr "\"%s\" - Ð³Ñ�Ñ‚Ð° Ð½Ðµ Ð¿Ð°Ñ‡Ð°Ñ‚Ð°Ðº Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ–"
  
! #: cp/decl.cc:12523
  #, gcc-internal-format
  msgid "return type specified for %<operator %T%>"
  msgstr ""
  
! #: cp/decl.cc:12526
  #, gcc-internal-format
  msgid "qualifiers are not allowed on declaration of %<operator %T%>"
  msgstr ""
  
! #: cp/decl.cc:12535
  #, gcc-internal-format
  msgid "return type specified for deduction guide"
  msgstr ""
  
! #: cp/decl.cc:12538
  #, gcc-internal-format
  msgid "qualifiers are not allowed on declaration of deduction guide"
  msgstr ""
  
! #: cp/decl.cc:12542
  #, gcc-internal-format
  msgid "template template parameter %qT in declaration of deduction guide"
  msgstr ""
  
! #: cp/decl.cc:12551
  #, gcc-internal-format
  msgid "%<decl-specifier%> in declaration of deduction guide"
  msgstr ""
  
! #: cp/decl.cc:12572
  #, gcc-internal-format
  msgid "unnamed variable or field declared void"
  msgstr ""
  
! #: cp/decl.cc:12580
  #, gcc-internal-format
  msgid "variable or field declared void"
  msgstr ""
  
! #: cp/decl.cc:12595
  #, gcc-internal-format
  msgid "%<inline%> specifier invalid for variable %qD declared at block scope"
  msgstr ""
  
! #: cp/decl.cc:12600
  #, gcc-internal-format
  msgid "inline variables are only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/decl.cc:12656
  #, gcc-internal-format
  msgid "%qT as type rather than plain %<decltype(auto)%>"
  msgstr ""
  
! #: cp/decl.cc:12662
  #, gcc-internal-format
  msgid "%<decltype(auto)%> cannot be cv-qualified"
  msgstr ""
  
! #: cp/decl.cc:12683
  msgid "%e and %e specified together"
  msgstr ""
  
! #: cp/decl.cc:12895
  #, fuzzy, gcc-internal-format
  msgid "invalid use of qualified-name %<::%D%>"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/decl.cc:12898 cp/decl.cc:12920
  #, fuzzy, gcc-internal-format
  msgid "invalid use of qualified-name %<%T::%D%>"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/decl.cc:12901
  #, fuzzy, gcc-internal-format
  msgid "invalid use of qualified-name %<%D::%D%>"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/decl.cc:12911
  #, gcc-internal-format
  msgid "%q#T is not a class or namespace"
  msgstr ""
  
! #: cp/decl.cc:12935
  #, fuzzy, gcc-internal-format
  msgid "declaration of %qE as non-function"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:12942
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%#D'"
  msgid "declaration of %qE as non-member"
  msgstr "Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%#D'"
  
! #: cp/decl.cc:12970
  #, gcc-internal-format
  msgid "declarator-id missing; using reserved word %qD"
  msgstr ""
  
! #: cp/decl.cc:13021
  #, gcc-internal-format
  msgid "function definition does not declare parameters"
  msgstr ""
  
! #: cp/decl.cc:13029 cp/decl.cc:13038 cp/decl.cc:15034
  #, fuzzy, gcc-internal-format
  msgid "declaration of %qD as non-function"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:13046
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%#D'"
  msgid "declaration of %qD as %<typedef%>"
  msgstr "Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%#D'"
  
! #: cp/decl.cc:13051
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%#D'"
  msgid "declaration of %qD as parameter"
  msgstr "Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%#D'"
  
! #: cp/decl.cc:13086
  #, gcc-internal-format
  msgid "both %qs and %qs specified"
  msgstr ""
  
! #: cp/decl.cc:13093 cp/decl.cc:13100 cp/decl.cc:13107 cp/decl.cc:13114
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not at beginning of declaration"
  msgid "%qs cannot appear in a typedef declaration"
  msgstr "\"%s\" - Ð³Ñ�Ñ‚Ð° Ð½Ðµ Ð¿Ð°Ñ‡Ð°Ñ‚Ð°Ðº Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ–"
  
! #: cp/decl.cc:13125
  #, gcc-internal-format
  msgid "can use at most one of the %<constinit%> and %<constexpr%> specifiers"
  msgstr ""
  
! #: cp/decl.cc:13135
  #, fuzzy, gcc-internal-format
  msgid "two or more data types in declaration of %qs"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ"
  
! #: cp/decl.cc:13189
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support plain `complex' meaning `double complex'"
  msgid "ISO C++ does not support plain %<complex%> meaning %<double complex%>"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ‹ \"complex\" Ñƒ Ð·Ð½Ð°Ñ‡Ñ�Ð½Ð½Ñ– \"double complex\""
  
! #: cp/decl.cc:13239 cp/decl.cc:13243 cp/decl.cc:13246
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids declaration of %qs with no type"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: cp/decl.cc:13263
  #, fuzzy, gcc-internal-format
  #| msgid "__builtin_saveregs not supported by this target"
  msgid "%<__int%d%> is not supported by this target"
  msgstr "__buitin_saveregs Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð° Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ð°Ð¹"
  
! #: cp/decl.cc:13271
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ does not support `long long'"
  msgid "ISO C++ does not support %<__int%d%> for %qs"
  msgstr "ISO C++ Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ \"long long\""
  
! #: cp/decl.cc:13334
  #, gcc-internal-format
  msgid "%qs specified with %qT"
  msgstr ""
  
! #: cp/decl.cc:13341
  #, gcc-internal-format
  msgid "%qs specified with typedef-name %qD"
  msgstr ""
  
! #: cp/decl.cc:13350
  #, gcc-internal-format
  msgid "%qs specified with %<decltype%>"
  msgstr ""
  
! #: cp/decl.cc:13352
  #, gcc-internal-format
  msgid "%qs specified with %<typeof%>"
  msgstr ""
  
! #: cp/decl.cc:13421
  #, fuzzy, gcc-internal-format
  #| msgid "complex invalid for `%s'"
  msgid "complex invalid for %qs"
  msgstr "complex Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:13465
  #, gcc-internal-format
  msgid "missing template argument list after %qE; for deduction, template placeholder must be followed by a simple declarator-id"
  msgstr ""
  
! #: cp/decl.cc:13491
  #, gcc-internal-format
  msgid "member %qD cannot be declared both %<virtual%> and %<static%>"
  msgstr ""
  
! #: cp/decl.cc:13500
  #, gcc-internal-format
  msgid "member %qD can be declared both %<virtual%> and %<constexpr%> only in %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/decl.cc:13513
  #, gcc-internal-format
  msgid "typedef declaration invalid in parameter declaration"
  msgstr ""
  
! #: cp/decl.cc:13520
  #, gcc-internal-format
  msgid "storage class specified for template parameter %qs"
  msgstr ""
  
! #: cp/decl.cc:13530 cp/decl.cc:13707
  #, gcc-internal-format
  msgid "storage class specified for parameter %qs"
  msgstr ""
  
! #: cp/decl.cc:13538 cp/decl.cc:13547 cp/decl.cc:13553 cp/decl.cc:13559
  #, fuzzy, gcc-internal-format
  msgid "a parameter cannot be declared %qs"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/decl.cc:13569
  #, fuzzy, gcc-internal-format
  #| msgid "Invalid declaration"
  msgid "%<virtual%> outside class declaration"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ"
  
! #: cp/decl.cc:13579 cp/decl.cc:13582 cp/decl.cc:13584 cp/decl.cc:13587
! #: cp/decl.cc:13597 cp/decl.cc:13607 cp/decl.cc:13617 cp/decl.cc:13621
  #, gcc-internal-format
  msgid "structured binding declaration cannot be %qs"
  msgstr ""
  
! #: cp/decl.cc:13591 cp/decl.cc:13613
  #, gcc-internal-format
  msgid "structured binding declaration can be %qs only in %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/decl.cc:13601
  #, gcc-internal-format
  msgid "%<volatile%>-qualified structured binding is deprecated"
  msgstr ""
  
! #: cp/decl.cc:13625
  #, gcc-internal-format
  msgid "structured binding declaration cannot be C++98 %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:13637
  #, gcc-internal-format
  msgid "structured binding declaration cannot have type %qT"
  msgstr ""
  
! #: cp/decl.cc:13640
  #, gcc-internal-format
  msgid "type must be cv-qualified %<auto%> or reference to cv-qualified %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:13648
  #, gcc-internal-format
  msgid "structured binding declaration cannot have constrained %<auto%> type %qT"
  msgstr ""
  
! #: cp/decl.cc:13679
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate label declaration `%s'"
  msgid "multiple storage classes in declaration of %qs"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ñ‹ `%s'"
  
! #: cp/decl.cc:13705
  #, gcc-internal-format
  msgid "storage class specified for %qs"
  msgstr ""
  
! #: cp/decl.cc:13719
  #, gcc-internal-format
  msgid "nested function %qs declared %<extern%>"
  msgstr ""
  
! #: cp/decl.cc:13724
  #, gcc-internal-format
  msgid "top-level declaration of %qs specifies %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:13732
  #, gcc-internal-format
  msgid "function-scope %qs implicitly auto and declared %<__thread%>"
  msgstr ""
  
! #: cp/decl.cc:13746
  #, gcc-internal-format
  msgid "storage class specifiers invalid in friend function declarations"
  msgstr ""
  
! #: cp/decl.cc:13852
  #, fuzzy, gcc-internal-format
  msgid "unnecessary parentheses in declaration of %qs"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:13858
  #, gcc-internal-format
  msgid "remove parentheses"
  msgstr ""
  
! #: cp/decl.cc:13925
  #, gcc-internal-format
  msgid "explicit object member function only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/decl.cc:13939
  #, gcc-internal-format
  msgid "a function type cannot have an explicit object parameter"
  msgstr ""
  
! #: cp/decl.cc:13945
  #, gcc-internal-format
  msgid "a pointer to function type cannot have an explicit object parameter"
  msgstr ""
  
! #: cp/decl.cc:13949
  #, gcc-internal-format
  msgid "a pointer to member function type cannot have an explicit object parameter"
  msgstr ""
  
! #: cp/decl.cc:13957
  #, gcc-internal-format
  msgid "the type of a pointer to explicit object member function is a regular pointer to function type"
  msgstr ""
  
! #: cp/decl.cc:13961
  #, gcc-internal-format
  msgid "the type of an explicit object member function is a regular function type"
  msgstr ""
  
! #: cp/decl.cc:13982
  #, gcc-internal-format
  msgid "only the first parameter of a member function can be declared as an explicit object parameter"
  msgstr ""
  
! #: cp/decl.cc:13987
  #, gcc-internal-format
  msgid "valid explicit object parameter declared here"
  msgstr ""
  
! #: cp/decl.cc:13991
  #, gcc-internal-format
  msgid "requires-clause on return type"
  msgstr ""
  
! #: cp/decl.cc:14012
  #, gcc-internal-format
  msgid "%qs function uses %<auto%> type specifier without trailing return type"
  msgstr ""
  
! #: cp/decl.cc:14016
  #, gcc-internal-format
  msgid "deduced return type only available with %<-std=c++14%> or %<-std=gnu++14%>"
  msgstr ""
  
! #: cp/decl.cc:14021
  #, fuzzy, gcc-internal-format
  #| msgid "virtual functions cannot be friends"
  msgid "virtual function cannot have deduced return type"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/decl.cc:14028
  #, gcc-internal-format
  msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:14037
  #, gcc-internal-format
  msgid "%qs function with trailing return type has %<decltype(auto)%> as its type rather than plain %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:14042
  #, fuzzy, gcc-internal-format
  msgid "invalid use of %<decltype(auto)%>"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/decl.cc:14049
  #, gcc-internal-format
  msgid "%qs function with trailing return type has constrained %<auto%> type specifier rather than plain %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:14055
  #, fuzzy, gcc-internal-format
  msgid "invalid use of constrained %<auto%> type"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/decl.cc:14067
  #, gcc-internal-format
  msgid "deduced class type %qD in function return type"
  msgstr ""
  
! #: cp/decl.cc:14077
  #, gcc-internal-format
  msgid "deduction guide for %qT must have trailing return type"
  msgstr ""
  
! #: cp/decl.cc:14090
  #, gcc-internal-format
  msgid "trailing return type %qT of deduction guide is not a specialization of %qT"
  msgstr ""
  
! #: cp/decl.cc:14104
  #, gcc-internal-format
  msgid "trailing return type only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/decl.cc:14107
  #, gcc-internal-format
  msgid "%qs function with trailing return type not declared with %<auto%> type specifier"
  msgstr ""
  
! #: cp/decl.cc:14114
  #, gcc-internal-format
  msgid "a conversion function cannot have a trailing return type"
  msgstr ""
  
! #: cp/decl.cc:14140
  #, gcc-internal-format
  msgid "%<volatile%>-qualified return type is deprecated"
  msgstr ""
  
! #: cp/decl.cc:14152
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' undeclared (first use in this function)"
  msgid "%qs declared as function returning a function"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/decl.cc:14158
  #, gcc-internal-format
  msgid "%qs declared as function returning an array"
  msgstr ""
  
! #: cp/decl.cc:14165
  #, gcc-internal-format
  msgid "%<constinit%> on function return type is not allowed"
  msgstr ""
  
! #: cp/decl.cc:14198
  #, gcc-internal-format
  msgid "destructor cannot be static member function"
  msgstr ""
  
! #: cp/decl.cc:14200
  #, gcc-internal-format
  msgid "constructor cannot be static member function"
  msgstr ""
  
! #: cp/decl.cc:14205
  #, gcc-internal-format
  msgid "destructors may not be cv-qualified"
  msgstr ""
  
! #: cp/decl.cc:14206
  #, gcc-internal-format
  msgid "constructors may not be cv-qualified"
  msgstr ""
  
! #: cp/decl.cc:14214
  #, gcc-internal-format
  msgid "destructors may not be ref-qualified"
  msgstr ""
  
! #: cp/decl.cc:14215
  #, gcc-internal-format
  msgid "constructors may not be ref-qualified"
  msgstr ""
  
! #: cp/decl.cc:14233
  #, fuzzy, gcc-internal-format
  msgid "constructors cannot be declared %<virtual%>"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/decl.cc:14250
  #, gcc-internal-format
  msgid "virtual functions cannot be friends"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/decl.cc:14255
  #, gcc-internal-format
  msgid "friend declaration not in class definition"
  msgstr ""
  
! #: cp/decl.cc:14259
  #, fuzzy, gcc-internal-format
  msgid "cannot define friend function %qs in a local class definition"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: cp/decl.cc:14269
  #, gcc-internal-format
  msgid "friend function definition %qs cannot have a name qualified with %<::%>"
  msgstr ""
  
! #: cp/decl.cc:14273
  #, gcc-internal-format
  msgid "friend function definition %qs cannot have a name qualified with %<%D::%>"
  msgstr ""
  
! #: cp/decl.cc:14299
  #, gcc-internal-format
  msgid "a non-member function cannot have an explicit object parameter"
  msgstr ""
  
! #: cp/decl.cc:14307
  #, gcc-internal-format
  msgid "an explicit object member function cannot be %<virtual%>"
  msgstr ""
  
! #: cp/decl.cc:14317
  #, gcc-internal-format
  msgid "an explicit object member function cannot be %<static%>"
  msgstr ""
  
! #: cp/decl.cc:14326
  #, gcc-internal-format
  msgid "%qD cannot be an explicit object member function"
  msgstr ""
  
! #: cp/decl.cc:14349
  #, gcc-internal-format
  msgid "destructors may not have parameters"
  msgstr ""
  
! #: cp/decl.cc:14407
  #, fuzzy, gcc-internal-format
  msgid "cannot declare pointer to %q#T"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:14420 cp/decl.cc:14427
  #, fuzzy, gcc-internal-format
  msgid "cannot declare reference to %q#T"
  msgstr "Ð�Ðµ Ð¼Ð°Ð³Ñƒ Ð·Ð½Ð°Ð¹Ñ�Ñ†Ñ– Ñ„Ð°Ð¹Ð» Ð´Ð»Ñ� ÐºÐ»Ð°Ñ�Ð° %s."
  
! #: cp/decl.cc:14429
  #, gcc-internal-format
  msgid "cannot declare pointer to %q#T member"
  msgstr ""
  
! #: cp/decl.cc:14458
  #, gcc-internal-format
  msgid "cannot declare reference to qualified function type %qT"
  msgstr ""
  
! #: cp/decl.cc:14459
  #, fuzzy, gcc-internal-format
  msgid "cannot declare pointer to qualified function type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:14532
  #, gcc-internal-format
  msgid "cannot declare reference to %q#T, which is not a typedef or a template type argument"
  msgstr ""
  
! #: cp/decl.cc:14611
  #, gcc-internal-format
  msgid "template-id %qD used as a declarator"
  msgstr ""
  
! #: cp/decl.cc:14637
  #, gcc-internal-format
  msgid "member functions are implicitly friends of their class"
  msgstr ""
  
! #: cp/decl.cc:14642
  #, gcc-internal-format
  msgid "extra qualification %<%T::%> on member %qs"
  msgstr ""
  
! #: cp/decl.cc:14672
  #, gcc-internal-format
  msgid "cannot define member function %<%T::%s%> within %qT"
  msgstr ""
  
! #: cp/decl.cc:14674
  #, gcc-internal-format
  msgid "cannot declare member function %<%T::%s%> within %qT"
  msgstr ""
  
! #: cp/decl.cc:14682
  #, gcc-internal-format
  msgid "cannot declare member %<%T::%s%> within %qT"
  msgstr ""
  
! #: cp/decl.cc:14722
  #, gcc-internal-format
  msgid "non-parameter %qs cannot be a parameter pack"
  msgstr ""
  
! #: cp/decl.cc:14731
  #, gcc-internal-format
  msgid "data member may not have variably modified type %qT"
  msgstr ""
  
! #: cp/decl.cc:14734
  #, gcc-internal-format
  msgid "parameter may not have variably modified type %qT"
  msgstr ""
  
! #: cp/decl.cc:14745
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate label declaration `%s'"
  msgid "%<explicit%> outside class declaration"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ñ‹ `%s'"
  
! #: cp/decl.cc:14748
  #, fuzzy, gcc-internal-format
  msgid "%<explicit%> in friend declaration"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:14751
  #, gcc-internal-format
  msgid "only declarations of constructors and conversion operators can be %<explicit%>"
  msgstr ""
  
! #: cp/decl.cc:14761
  #, fuzzy, gcc-internal-format
  msgid "non-member %qs cannot be declared %<mutable%>"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/decl.cc:14768
  #, gcc-internal-format
  msgid "non-object member %qs cannot be declared %<mutable%>"
  msgstr ""
  
! #: cp/decl.cc:14774
  #, fuzzy, gcc-internal-format
  msgid "function %qs cannot be declared %<mutable%>"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/decl.cc:14780
  #, gcc-internal-format
  msgid "%<static%> %qs cannot be declared %<mutable%>"
  msgstr ""
  
! #: cp/decl.cc:14786
  #, fuzzy, gcc-internal-format
  msgid "%<const%> %qs cannot be declared %<mutable%>"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/decl.cc:14792
  #, fuzzy, gcc-internal-format
  msgid "reference %qs cannot be declared %<mutable%>"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/decl.cc:14808
  #, gcc-internal-format
  msgid "typedef may not be a function definition"
  msgstr ""
  
! #: cp/decl.cc:14811
  #, gcc-internal-format
  msgid "typedef may not be a member function definition"
  msgstr ""
  
! #: cp/decl.cc:14837
  #, fuzzy, gcc-internal-format
  msgid "%<auto%> not allowed in alias declaration"
  msgstr "\"%s\" - Ð³Ñ�Ñ‚Ð° Ð½Ðµ Ð¿Ð°Ñ‡Ð°Ñ‚Ð°Ðº Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ–"
  
! #: cp/decl.cc:14840
  #, gcc-internal-format
  msgid "typedef declared %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:14845
  #, gcc-internal-format
  msgid "requires-clause on typedef"
  msgstr ""
  
! #: cp/decl.cc:14849
  #, gcc-internal-format
  msgid "typedef name may not be a nested-name-specifier"
  msgstr ""
  
! #: cp/decl.cc:14875
  #, gcc-internal-format
  msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
  msgstr ""
  
! #: cp/decl.cc:14964
  #, fuzzy, gcc-internal-format
  msgid "%<inline%> specified for friend class declaration"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:14972
  #, fuzzy, gcc-internal-format
  msgid "template parameters cannot be friends"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/decl.cc:14974
  #, gcc-internal-format
  msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
  msgstr ""
  
! #: cp/decl.cc:14978
  #, gcc-internal-format
  msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
  msgstr ""
  
! #: cp/decl.cc:14991
  #, gcc-internal-format
  msgid "trying to make class %qT a friend of global scope"
  msgstr ""
  
! #: cp/decl.cc:15011
  #, gcc-internal-format
  msgid "invalid qualifiers on non-member function type"
  msgstr ""
  
! #: cp/decl.cc:15015
  #, gcc-internal-format
  msgid "requires-clause on type-id"
  msgstr ""
  
! #: cp/decl.cc:15025
  #, gcc-internal-format
  msgid "abstract declarator %qT used as declaration"
  msgstr ""
  
! #: cp/decl.cc:15040
  #, fuzzy, gcc-internal-format
  msgid "requires-clause on declaration of non-function type %qT"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:15059
  #, fuzzy, gcc-internal-format
  msgid "cannot use %<::%> in parameter declaration"
  msgstr "Ð�Ðµ Ð¼Ð°Ð³Ñƒ Ð·Ð½Ð°Ð¹Ñ�Ñ†Ñ– Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹ÑŽ Ð¿Ñ€Ð°Ñ‚Ð°ÐºÐ¾Ð»Ð° Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:15069 cp/parser.cc:21410
  #, gcc-internal-format
  msgid "cannot declare a parameter with %<decltype(auto)%>"
  msgstr ""
  
! #: cp/decl.cc:15076
  #, gcc-internal-format
  msgid "missing template argument list after %qE; template placeholder not permitted in parameter"
  msgstr ""
  
! #: cp/decl.cc:15079
  #, gcc-internal-format
  msgid "or use %<auto%> for an abbreviated function template"
  msgstr ""
  
! #: cp/decl.cc:15085 cp/parser.cc:26076
  #, gcc-internal-format
  msgid "%<auto%> parameter not permitted in this context"
  msgstr ""
  
! #: cp/decl.cc:15095
  #, fuzzy, gcc-internal-format
  msgid "parameter declared %<auto%>"
  msgstr "Ñ‚Ñ‹Ð¿ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" Ð½Ðµ Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ñ‹"
  
! #: cp/decl.cc:15149 cp/parser.cc:3855
  #, fuzzy, gcc-internal-format
  msgid "invalid use of template-name %qE without an argument list"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/decl.cc:15153
  #, gcc-internal-format
  msgid "non-static data member declared with placeholder %qT"
  msgstr ""
  
! #: cp/decl.cc:15173
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids flexible array member %qs"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: cp/decl.cc:15176
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids flexible array members"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
  #. Something like struct S { int N::j; };
! #: cp/decl.cc:15192
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `::'"
  msgid "invalid use of %<::%>"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½ÑŒÐ½Ðµ `::'"
  
! #: cp/decl.cc:15213
  #, fuzzy, gcc-internal-format
  msgid "declaration of function %qD in invalid context"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:15223
  #, fuzzy, gcc-internal-format
  msgid "function %qD declared %<virtual%> inside a union"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/decl.cc:15233
  #, gcc-internal-format
  msgid "%qD cannot be declared %<virtual%>, since it is always static"
  msgstr ""
  
! #: cp/decl.cc:15247
  #, gcc-internal-format
  msgid "expected qualified name in friend declaration for destructor %qD"
  msgstr ""
  
! #: cp/decl.cc:15254
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of template `%#D'"
  msgid "declaration of %qD as member of %qT"
  msgstr "Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ ÑˆÐ°Ð±Ð»Ñ‘Ð½Ñƒ `%#D'"
  
! #: cp/decl.cc:15261 cp/decl.cc:15274
  #, gcc-internal-format
  msgid "a destructor cannot be %qs"
  msgstr ""
  
! #: cp/decl.cc:15280
  #, gcc-internal-format
  msgid "expected qualified name in friend declaration for constructor %qD"
  msgstr ""
  
! #: cp/decl.cc:15289
  #, gcc-internal-format
  msgid "a constructor cannot be %<concept%>"
  msgstr ""
  
! #: cp/decl.cc:15295
  #, fuzzy, gcc-internal-format
  msgid "a concept cannot be a member function"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/decl.cc:15303 cp/decl.cc:15662
  #, fuzzy, gcc-internal-format
  #| msgid "[cannot find %s]"
  msgid "%qD cannot be %qs"
  msgstr "[Ð½ÐµÐ»ÑŒÐ³Ð° Ð·Ð½Ð°Ð¹Ñ�Ñ†Ñ– %s]"
  
! #: cp/decl.cc:15313
  #, gcc-internal-format
  msgid "specialization of variable template %qD declared as function"
  msgstr ""
  
! #: cp/decl.cc:15316
  #, fuzzy, gcc-internal-format
  msgid "variable template declared here"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:15381
  #, fuzzy, gcc-internal-format
  msgid "field %qD has incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:15386
  #, fuzzy, gcc-internal-format
  msgid "name %qT has incomplete type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:15406
  #, fuzzy, gcc-internal-format
  msgid "%qE is neither function nor member function; cannot be declared friend"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/decl.cc:15409
  #, gcc-internal-format
  msgid "unnamed field is neither function nor member function; cannot be declared friend"
  msgstr ""
  
! #: cp/decl.cc:15428 cp/parser.cc:21976 cp/parser.cc:28868
  #, gcc-internal-format
  msgid "an attribute that appertains to a friend declaration that is not a definition is ignored"
  msgstr ""
  
! #: cp/decl.cc:15478 cp/decl.cc:15489
  #, gcc-internal-format
  msgid "static data member %qE declared %qs"
  msgstr ""
  
! #: cp/decl.cc:15483
  #, gcc-internal-format
  msgid "%<constexpr%> static data member %qD must have an initializer"
  msgstr ""
  
! #: cp/decl.cc:15526 cp/decl.cc:15534 cp/decl.cc:15541 cp/decl.cc:15548
  #, gcc-internal-format
  msgid "non-static data member %qE declared %qs"
  msgstr ""
  
! #: cp/decl.cc:15600
  #, gcc-internal-format
  msgid "storage class %<auto%> invalid for function %qs"
  msgstr ""
  
! #: cp/decl.cc:15603
  #, gcc-internal-format
  msgid "storage class %<register%> invalid for function %qs"
  msgstr ""
  
! #: cp/decl.cc:15609
  #, gcc-internal-format
  msgid "storage class %<__thread%> invalid for function %qs"
  msgstr ""
  
! #: cp/decl.cc:15613
  #, gcc-internal-format
  msgid "storage class %<thread_local%> invalid for function %qs"
  msgstr ""
  
! #: cp/decl.cc:15618
  #, fuzzy, gcc-internal-format
  #| msgid "can't initialize friend function `%s'"
  msgid "%<constinit%> specifier invalid for function %qs"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: cp/decl.cc:15621
  #, gcc-internal-format
  msgid "virt-specifiers in %qs not allowed outside a class definition"
  msgstr ""
  
! #: cp/decl.cc:15633
  #, gcc-internal-format
  msgid "%<static%> specifier invalid for function %qs declared out of global scope"
  msgstr ""
  
! #: cp/decl.cc:15637
  #, gcc-internal-format
  msgid "%<inline%> specifier invalid for function %qs declared out of global scope"
  msgstr ""
  
! #: cp/decl.cc:15645
  #, gcc-internal-format
  msgid "virtual non-class function %qs"
  msgstr ""
  
! #: cp/decl.cc:15652
  #, gcc-internal-format
  msgid "%qs defined in a non-class scope"
  msgstr ""
  
! #: cp/decl.cc:15653
  #, fuzzy, gcc-internal-format
  msgid "%qs declared in a non-class scope"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/decl.cc:15696
  #, gcc-internal-format
  msgid "cannot declare member function %qD to have static linkage"
  msgstr ""
  
! #: cp/decl.cc:15705
  #, gcc-internal-format
  msgid "cannot declare static function inside another function"
  msgstr ""
  
! #: cp/decl.cc:15746
  #, gcc-internal-format
  msgid "%<static%> may not be used when defining (as opposed to declaring) a static data member"
  msgstr ""
  
! #: cp/decl.cc:15753
  #, gcc-internal-format
  msgid "static member %qD declared %<register%>"
  msgstr ""
  
! #: cp/decl.cc:15759
  #, gcc-internal-format
  msgid "cannot explicitly declare member %q#D to have extern linkage"
  msgstr ""
  
! #: cp/decl.cc:15767
  #, gcc-internal-format
  msgid "declaration of %<constexpr%> variable %qD is not a definition"
  msgstr ""
  
! #: cp/decl.cc:15774
  #, gcc-internal-format
  msgid "a variable cannot be declared %<consteval%>"
  msgstr ""
  
! #: cp/decl.cc:15806
  #, gcc-internal-format
  msgid "%qs initialized and declared %<extern%>"
  msgstr ""
  
! #: cp/decl.cc:15811
  #, gcc-internal-format
  msgid "%qs has both %<extern%> and initializer"
  msgstr ""
  
! #: cp/decl.cc:16013
  #, fuzzy, gcc-internal-format
  msgid "default argument %qE uses %qD"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/decl.cc:16016
  #, fuzzy, gcc-internal-format
  msgid "default argument %qE uses local variable %qD"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/decl.cc:16143
  #, fuzzy, gcc-internal-format
  msgid "invalid use of cv-qualified type %qT in parameter declaration"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/decl.cc:16147
  #, fuzzy, gcc-internal-format
  msgid "invalid use of type %<void%> in parameter declaration"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/decl.cc:16176
  #, gcc-internal-format
  msgid "%<volatile%>-qualified parameter is deprecated"
  msgstr ""
  
! #: cp/decl.cc:16184
  #, fuzzy, gcc-internal-format
  msgid "parameter %qD invalidly declared method type"
  msgstr "Ñ‚Ñ‹Ð¿ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" Ð½Ðµ Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ñ‹"
  
! #: cp/decl.cc:16209
  #, gcc-internal-format
  msgid "parameter %qD includes pointer to array of unknown bound %qT"
  msgstr ""
  
! #: cp/decl.cc:16211
  #, gcc-internal-format
  msgid "parameter %qD includes reference to array of unknown bound %qT"
  msgstr ""
  
! #: cp/decl.cc:16494
  #, gcc-internal-format
  msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
  msgstr ""
  
! #: cp/decl.cc:16573
  #, fuzzy, gcc-internal-format
  msgid "%qD may not be declared within a namespace"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/decl.cc:16580
  #, fuzzy, gcc-internal-format
  msgid "%qD may not be declared as static"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/decl.cc:16638
  #, gcc-internal-format
  msgid "%qD must be a non-static member function"
  msgstr ""
  
! #: cp/decl.cc:16646
  #, fuzzy, gcc-internal-format
  msgid "%qD must be a member function"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/decl.cc:16654
  #, gcc-internal-format
  msgid "%qD may be a static member function only with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/decl.cc:16664
  #, gcc-internal-format
  msgid "%qD must be either a non-static member function or a non-member function"
  msgstr ""
  
! #: cp/decl.cc:16674
  #, gcc-internal-format
  msgid "%qD must have an argument of class or enumerated type"
  msgstr ""
  
  #. 13.4.0.3
! #: cp/decl.cc:16705
  #, gcc-internal-format
  msgid "ISO C++ prohibits overloading %<operator ?:%>"
  msgstr ""
  
! #: cp/decl.cc:16715
  #, gcc-internal-format
  msgid "%qD must not have variable number of arguments"
  msgstr ""
  
! #: cp/decl.cc:16741
  #, gcc-internal-format
  msgid "%qD must have either zero or one argument"
  msgstr ""
  
! #: cp/decl.cc:16742
  #, gcc-internal-format
  msgid "%qD must have either one or two arguments"
  msgstr ""
  
! #: cp/decl.cc:16754
  #, gcc-internal-format
  msgid "postfix %qD must have %<int%> as its argument"
  msgstr ""
  
! #: cp/decl.cc:16755
  #, gcc-internal-format
  msgid "postfix %qD must have %<int%> as its second argument"
  msgstr ""
  
! #: cp/decl.cc:16766
  #, fuzzy, gcc-internal-format
  #| msgid "no arguments"
  msgid "%qD must have no arguments"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: cp/decl.cc:16767 cp/decl.cc:16777
  #, gcc-internal-format
  msgid "%qD must have exactly one argument"
  msgstr ""
  
! #: cp/decl.cc:16778
  #, gcc-internal-format
  msgid "%qD must have exactly two arguments"
  msgstr ""
  
! #: cp/decl.cc:16793
  #, fuzzy, gcc-internal-format
  msgid "%qD cannot have default arguments"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/decl.cc:16817
  #, gcc-internal-format
  msgid "converting %qT to %<void%> will never use a type conversion operator"
  msgstr ""
  
! #: cp/decl.cc:16824
  #, gcc-internal-format
  msgid "converting %qT to a reference to the same type will never use a type conversion operator"
  msgstr ""
  
! #: cp/decl.cc:16826
  #, gcc-internal-format
  msgid "converting %qT to the same type will never use a type conversion operator"
  msgstr ""
  
! #: cp/decl.cc:16835
  #, gcc-internal-format
  msgid "converting %qT to a reference to a base class %qT will never use a type conversion operator"
  msgstr ""
  
! #: cp/decl.cc:16837
  #, gcc-internal-format
  msgid "converting %qT to a base class %qT will never use a type conversion operator"
  msgstr ""
  
! #: cp/decl.cc:16853
  #, gcc-internal-format
  msgid "user-defined %qD always evaluates both arguments"
  msgstr ""
  
! #: cp/decl.cc:16872
  #, gcc-internal-format
  msgid "prefix %qD should return %qT"
  msgstr ""
  
! #: cp/decl.cc:16879
  #, gcc-internal-format
  msgid "postfix %qD should return %qT"
  msgstr ""
  
! #: cp/decl.cc:16891
  #, gcc-internal-format
  msgid "%qD should return by value"
  msgstr ""
  
! #: cp/decl.cc:16946
  #, fuzzy, gcc-internal-format
  msgid "using template type parameter %qT after %qs"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/decl.cc:16970
  #, gcc-internal-format
  msgid "using alias template specialization %qT after %qs"
  msgstr ""
  
! #: cp/decl.cc:16973
  #, gcc-internal-format
  msgid "using typedef-name %qD after %qs"
  msgstr ""
  
! #: cp/decl.cc:16975
  #, fuzzy, gcc-internal-format
  #| msgid "this is a previous declaration"
  msgid "%qD has a previous declaration here"
  msgstr "Ð³Ñ�Ñ‚Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: cp/decl.cc:16984
  #, gcc-internal-format
  msgid "%qT referred to as %qs"
  msgstr ""
  
! #: cp/decl.cc:16985 cp/decl.cc:16993
  #, fuzzy, gcc-internal-format
  #| msgid "this is a previous declaration"
  msgid "%qT has a previous declaration here"
  msgstr "Ð³Ñ�Ñ‚Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: cp/decl.cc:16992
  #, gcc-internal-format
  msgid "%qT referred to as enum"
  msgstr ""
--- 57490,60022 ----
  msgid "redeclaration of %q#D"
  msgstr "Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%#D'"
  
! #: cp/decl.cc:3581
  #, gcc-internal-format
  msgid "redundant redeclaration of %<constexpr%> static data member %qD"
  msgstr ""
  
! #: cp/decl.cc:3650
  #, gcc-internal-format
  msgid "local label %qE conflicts with existing label"
  msgstr ""
  
! #: cp/decl.cc:3651
  #, gcc-internal-format
  msgid "previous label"
  msgstr ""
  
! #: cp/decl.cc:3741
  #, fuzzy, gcc-internal-format
  msgid "jump to label %qD"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½Ð½Ðµ \"%s\""
  
! #: cp/decl.cc:3742
  #, gcc-internal-format
  msgid "jump to case label"
  msgstr ""
  
! #: cp/decl.cc:3746
  #, gcc-internal-format
  msgid "  as a possible target of computed goto"
  msgstr ""
  
! #: cp/decl.cc:3748
  #, gcc-internal-format
  msgid "  from here"
  msgstr " Ð°Ð´Ñ�ÑŽÐ»ÑŒ"
  
! #: cp/decl.cc:3777 cp/decl.cc:4016
  #, gcc-internal-format
  msgid "  exits OpenMP structured block"
  msgstr ""
  
! #: cp/decl.cc:3802
  #, fuzzy, gcc-internal-format
  msgid "  crosses initialization of %q#D"
  msgstr "Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ†Ñ‹Ñ�"
  
! #: cp/decl.cc:3814 cp/decl.cc:3982
  #, gcc-internal-format
  msgid "  enters %<try%> block"
  msgstr ""
  
! #: cp/decl.cc:3820 cp/decl.cc:3971 cp/decl.cc:3984
  #, gcc-internal-format
  msgid "  enters %<catch%> block"
  msgstr ""
  
! #: cp/decl.cc:3826 cp/decl.cc:3998
  #, gcc-internal-format
  msgid "  enters OpenMP structured block"
  msgstr ""
  
! #: cp/decl.cc:3832 cp/decl.cc:3986
  #, gcc-internal-format
  msgid "  enters synchronized or atomic statement"
  msgstr ""
  
! #: cp/decl.cc:3838 cp/decl.cc:3992
  #, fuzzy, gcc-internal-format
  msgid "  enters statement expression"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/decl.cc:3845 cp/decl.cc:3988
  #, gcc-internal-format
  msgid "  enters %<constexpr if%> statement"
  msgstr ""
  
! #: cp/decl.cc:3851 cp/decl.cc:3990
  #, gcc-internal-format
  msgid "  enters %<consteval if%> statement"
  msgstr ""
  
! #: cp/decl.cc:3882 cp/decl.cc:4056
  #, fuzzy, gcc-internal-format
  #| msgid "%s does not support %s"
  msgid "  does not destroy %qD"
  msgstr "%s Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ %s"
  
! #: cp/decl.cc:3884 cp/decl.cc:4040
  #, gcc-internal-format
  msgid "  does not clean up handled exception"
  msgstr ""
  
! #: cp/decl.cc:3976
  #, fuzzy, gcc-internal-format
  msgid "  skips initialization of %q#D"
  msgstr "Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ†Ñ‹Ñ�"
  
! #: cp/decl.cc:4516 cp/parser.cc:7467
  #, gcc-internal-format
  msgid "%qD used without template arguments"
  msgstr ""
  
! #: cp/decl.cc:4522
  #, fuzzy, gcc-internal-format
  msgid "%qD is a function, not a type"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/decl.cc:4533
  #, fuzzy, gcc-internal-format
  msgid "%q#T is not a class"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:4572 cp/decl.cc:4673
  #, gcc-internal-format
  msgid "no class template named %q#T in %q#T"
  msgstr ""
  
! #: cp/decl.cc:4573
  #, fuzzy, gcc-internal-format
  msgid "no type named %q#T in %q#T"
  msgstr "Ð²Ñ�Ñ€Ñ‚Ð°ÐµÐ¼Ñ‹ Ñ‚Ñ‹Ð¿ \"%s\" Ð½Ðµ \"int\""
  
! #: cp/decl.cc:4587
  #, fuzzy, gcc-internal-format
  msgid "lookup of %qT in %qT is ambiguous"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ \"%s\" - %d Ð±Ð°Ð¹Ñ‚"
  
! #: cp/decl.cc:4596
  #, gcc-internal-format
  msgid "%<typename %T::%D%> names %q#T, which is not a class template"
  msgstr ""
  
! #: cp/decl.cc:4609
  #, gcc-internal-format
  msgid "%<typename %T::%D%> names %q#D, which is not a type"
  msgstr ""
  
! #: cp/decl.cc:4683
  #, fuzzy, gcc-internal-format
  msgid "template parameters do not match template %qD"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/decl.cc:5161
  #, gcc-internal-format
  msgid "%<-faligned-new=%d%> is not a power of two"
  msgstr ""
  
! #: cp/decl.cc:5216
  #, gcc-internal-format
  msgid "%<--param destructive-interference-size=%d%> is less than %d"
  msgstr ""
  
! #: cp/decl.cc:5220
  #, gcc-internal-format
  msgid "%<--param destructive-interference-size=%d%> is less than %<--param l1-cache-line-size=%d%>"
  msgstr ""
  
! #: cp/decl.cc:5233
  #, gcc-internal-format
  msgid "%<--param constructive-interference-size=%d%> is less than %d"
  msgstr ""
  
! #: cp/decl.cc:5238
  #, gcc-internal-format
  msgid "%<--param constructive-interference-size=%d%> is greater than %<--param l1-cache-line-size=%d%>"
  msgstr ""
  
! #: cp/decl.cc:5565
  #, gcc-internal-format
  msgid "%q#D invalid; an anonymous union may only have public non-static data members"
  msgstr ""
  
! #: cp/decl.cc:5575 cp/parser.cc:24258
  #, gcc-internal-format
  msgid "this flexibility is deprecated and will be removed"
  msgstr ""
  
! #: cp/decl.cc:5604
  #, gcc-internal-format
  msgid "anonymous struct with base classes"
  msgstr ""
  
! #: cp/decl.cc:5616
  #, gcc-internal-format
  msgid "member %q+#D with constructor not allowed in anonymous aggregate"
  msgstr ""
  
! #: cp/decl.cc:5619
  #, gcc-internal-format
  msgid "member %q+#D with destructor not allowed in anonymous aggregate"
  msgstr ""
  
! #: cp/decl.cc:5622
  #, gcc-internal-format
  msgid "member %q+#D with copy assignment operator not allowed in anonymous aggregate"
  msgstr ""
  
! #: cp/decl.cc:5641
  #, fuzzy, gcc-internal-format
  msgid "attribute ignored in declaration of %q#T"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:5644
  #, gcc-internal-format
  msgid "attribute for %q#T must follow the %qs keyword"
  msgstr ""
  
! #: cp/decl.cc:5686
  #, gcc-internal-format
  msgid "multiple types in one declaration"
  msgstr ""
  
! #: cp/decl.cc:5691
  #, fuzzy, gcc-internal-format
  msgid "redeclaration of C++ built-in type %qT"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:5708
  #, gcc-internal-format
  msgid "%<auto%> can only be specified for variables or function declarations"
  msgstr ""
  
! #: cp/decl.cc:5741
  #, gcc-internal-format
  msgid "missing type-name in typedef-declaration"
  msgstr ""
  
! #: cp/decl.cc:5749
  #, gcc-internal-format
  msgid "ISO C++ prohibits anonymous structs"
  msgstr ""
  
! #: cp/decl.cc:5756
  #, fuzzy, gcc-internal-format
  msgid "%<inline%> can only be specified for functions"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: cp/decl.cc:5759
  #, gcc-internal-format
  msgid "%<virtual%> can only be specified for functions"
  msgstr ""
  
! #: cp/decl.cc:5764
  #, gcc-internal-format
  msgid "%<friend%> can only be specified inside a class"
  msgstr ""
  
! #: cp/decl.cc:5767
  #, gcc-internal-format
  msgid "%<explicit%> can only be specified for constructors"
  msgstr ""
  
! #: cp/decl.cc:5770
  #, gcc-internal-format
  msgid "a storage class can only be specified for objects and functions"
  msgstr ""
  
! #: cp/decl.cc:5774
  #, gcc-internal-format
  msgid "%<const%> can only be specified for objects and functions"
  msgstr ""
  
! #: cp/decl.cc:5778
  #, gcc-internal-format
  msgid "%<volatile%> can only be specified for objects and functions"
  msgstr ""
  
! #: cp/decl.cc:5782
  #, gcc-internal-format
  msgid "%<__restrict%> can only be specified for objects and functions"
  msgstr ""
  
! #: cp/decl.cc:5786
  #, gcc-internal-format
  msgid "%<__thread%> can only be specified for objects and functions"
  msgstr ""
  
! #: cp/decl.cc:5790
  #, gcc-internal-format
  msgid "%<typedef%> was ignored in this declaration"
  msgstr ""
  
! #: cp/decl.cc:5793 cp/decl.cc:5796 cp/decl.cc:5799
  #, fuzzy, gcc-internal-format
  msgid "%qs cannot be used for type declarations"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/decl.cc:5822
  #, fuzzy, gcc-internal-format
  msgid "attribute ignored in explicit instantiation %q#T"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:5825
  #, fuzzy, gcc-internal-format
  msgid "no attribute can be applied to an explicit instantiation"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/decl.cc:5838 cp/decl.cc:13778 cp/decl.cc:15425 cp/parser.cc:16040
! #: cp/parser.cc:21979 cp/parser.cc:28921
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute ignored"
  msgid "attribute ignored"
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
! #: cp/decl.cc:5840 cp/decl.cc:13779
  #, gcc-internal-format
  msgid "an attribute that appertains to a type-specifier is ignored"
  msgstr ""
  
! #: cp/decl.cc:5915
  #, gcc-internal-format
  msgid "ignoring attributes applied to class type %qT outside of definition"
  msgstr ""
  
  #. A template type parameter or other dependent type.
! #: cp/decl.cc:5919
  #, gcc-internal-format
  msgid "ignoring attributes applied to dependent type %qT without an associated declaration"
  msgstr ""
  
! #: cp/decl.cc:5985 cp/decl2.cc:1069 cp/decl2.cc:1271
  #, fuzzy, gcc-internal-format
  msgid "typedef %qD is initialized (use %qs instead)"
  msgstr "Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\" Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ð½Ñ‹"
  
! #: cp/decl.cc:5998
  #, gcc-internal-format
  msgid "declaration of %q#D has %<extern%> and is initialized"
  msgstr ""
  
! #: cp/decl.cc:6036
  #, gcc-internal-format
  msgid "definition of %q#D is marked %<dllimport%>"
  msgstr ""
  
! #: cp/decl.cc:6063
  #, gcc-internal-format
  msgid "%q+#D is not a static data member of %q#T"
  msgstr ""
  
! #: cp/decl.cc:6072
  #, fuzzy, gcc-internal-format
  msgid "non-member-template declaration of %qD"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ"
  
! #: cp/decl.cc:6073
  #, fuzzy, gcc-internal-format
  msgid "does not match member template declaration here"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:6085
  #, gcc-internal-format
  msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
  msgstr ""
  
! #: cp/decl.cc:6097
  #, fuzzy, gcc-internal-format
  msgid "duplicate initialization of %qD"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:6147 cp/decl.cc:6151
  #, gcc-internal-format
  msgid "declaration of %q#D outside of class is not definition"
  msgstr ""
  
! #: cp/decl.cc:6169
  #, gcc-internal-format
  msgid "block-scope extern declaration %q#D must not be attached to a named module"
  msgstr ""
  
! #: cp/decl.cc:6205
  #, gcc-internal-format
  msgid "%qD defined %<thread_local%> in %qs function only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/decl.cc:6211
  #, gcc-internal-format
  msgid "%qD defined %<static%> in %qs function only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/decl.cc:6277
  #, fuzzy, gcc-internal-format
  msgid "variable %q#D has initializer but incomplete type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:6286 cp/decl.cc:7761
  #, fuzzy, gcc-internal-format
  msgid "elements of array %q#D have incomplete type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:6297
  #, gcc-internal-format
  msgid "aggregate %q#D has incomplete type and cannot be defined"
  msgstr ""
  
! #: cp/decl.cc:6367
  #, gcc-internal-format
  msgid "%qD declared as reference but not initialized"
  msgstr ""
  
! #: cp/decl.cc:6450
  #, gcc-internal-format
  msgid "name used in a GNU-style designated initializer for an array"
  msgstr ""
  
! #: cp/decl.cc:6456
  #, gcc-internal-format
  msgid "name %qD used in a GNU-style designated initializer for an array"
  msgstr ""
  
! #: cp/decl.cc:6475
  #, gcc-internal-format
  msgid "non-trivial designated initializers not supported"
  msgstr ""
  
! #: cp/decl.cc:6479
  #, fuzzy, gcc-internal-format
  msgid "C99 designator %qE is not an integral constant-expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/decl.cc:6544
  #, gcc-internal-format
  msgid "initializer fails to determine size of %qD"
  msgstr ""
  
! #: cp/decl.cc:6551
  #, fuzzy, gcc-internal-format
  #| msgid "array size missing in `%D'"
  msgid "array size missing in %qD"
  msgstr "Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½ Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° Ñž `%D'"
  
! #: cp/decl.cc:6563
  #, fuzzy, gcc-internal-format
  #| msgid "zero-size array `%D'"
  msgid "zero-size array %qD"
  msgstr "Ð½ÑƒÐ»Ñ�Ð²Ñ‹ Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° `%D'"
  
! #: cp/decl.cc:6603
  #, gcc-internal-format
  msgid "storage size of %qD isn%'t known"
  msgstr ""
  
! #: cp/decl.cc:6628
  #, fuzzy, gcc-internal-format
  msgid "storage size of %qD isn%'t constant"
  msgstr "Ñ‚Ñ‹Ð¿ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" Ð½Ðµ Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ñ‹"
  
! #: cp/decl.cc:6730
  #, gcc-internal-format
  msgid "sorry: semantics of inline variable %q#D are wrong (you%'ll wind up with multiple copies)"
  msgstr ""
  
! #: cp/decl.cc:6734
  #, gcc-internal-format
  msgid "sorry: semantics of inline function static data %q#D are wrong (you%'ll wind up with multiple copies)"
  msgstr ""
  
! #: cp/decl.cc:6741
  #, gcc-internal-format
  msgid "you can work around this by removing the initializer"
  msgstr ""
  
! #: cp/decl.cc:6784 rust/backend/rust-tree.cc:3265
  #, fuzzy, gcc-internal-format
  msgid "uninitialized %<const %D%>"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: cp/decl.cc:6791 rust/backend/rust-tree.cc:3272
  #, gcc-internal-format
  msgid "uninitialized variable %qD in %<constexpr%> function"
  msgstr ""
  
! #: cp/decl.cc:6800 rust/backend/rust-tree.cc:3281
  #, gcc-internal-format
  msgid "uninitialized variable %qD in %<constexpr%> context"
  msgstr ""
  
! #: cp/decl.cc:6808
  #, gcc-internal-format
  msgid "%q#T has no user-provided default constructor"
  msgstr ""
  
! #: cp/decl.cc:6812
  #, gcc-internal-format
  msgid "constructor is not user-provided because it is explicitly defaulted in the class body"
  msgstr ""
  
! #: cp/decl.cc:6815
  #, gcc-internal-format
  msgid "and the implicitly-defined constructor does not initialize %q#D"
  msgstr ""
  
! #: cp/decl.cc:7115
  #, fuzzy, gcc-internal-format
  msgid "invalid type %qT as initializer for a vector of type %qT"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/decl.cc:7187
  #, gcc-internal-format
  msgid "initializer for %qT must be brace-enclosed"
  msgstr ""
  
! #: cp/decl.cc:7232
  #, gcc-internal-format
  msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
  msgstr ""
  
! #: cp/decl.cc:7249 cp/init.cc:3424 cp/search.cc:1244
  #, fuzzy, gcc-internal-format
  msgid "request for member %qD is ambiguous"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ \"%s\" - %d Ð±Ð°Ð¹Ñ‚"
  
! #: cp/decl.cc:7254
  #, gcc-internal-format
  msgid "%qT has no non-static data member named %qD"
  msgstr ""
  
! #: cp/decl.cc:7279
  #, gcc-internal-format
  msgid "%qD is not a direct member of %qT"
  msgstr ""
  
! #: cp/decl.cc:7335
  #, fuzzy, gcc-internal-format
  #| msgid "invalid initializer"
  msgid "invalid initializer for %q#D"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/decl.cc:7389
  #, gcc-internal-format
  msgid "C99 designator %qE outside aggregate initializer"
  msgstr ""
  
! #: cp/decl.cc:7428 cp/decl.cc:7719 cp/typeck2.cc:1634 cp/typeck2.cc:1969
  #: cp/typeck2.cc:2017 cp/typeck2.cc:2064
  #, fuzzy, gcc-internal-format
  msgid "too many initializers for %qT"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: cp/decl.cc:7471
  #, fuzzy, gcc-internal-format
  msgid "braces around scalar initializer for type %qT"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: cp/decl.cc:7481
  #, gcc-internal-format
  msgid "too many braces around scalar initializer for type %qT"
  msgstr ""
  
! #: cp/decl.cc:7615
  #, fuzzy, gcc-internal-format
  msgid "missing braces around initializer for %qT"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: cp/decl.cc:7749
  #, fuzzy, gcc-internal-format
  msgid "structured binding has incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:7763
  #, fuzzy, gcc-internal-format
  msgid "elements of array %q#T have incomplete type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:7776
  #, gcc-internal-format
  msgid "variable-sized compound literal"
  msgstr ""
  
! #: cp/decl.cc:7832
  #, fuzzy, gcc-internal-format
  msgid "%q#D has incomplete type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:7853
  #, gcc-internal-format
  msgid "scalar object %qD requires one element in initializer"
  msgstr ""
  
! #: cp/decl.cc:7898
  #, gcc-internal-format
  msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
  msgstr ""
  
! #: cp/decl.cc:8041
  #, gcc-internal-format
  msgid "array %qD initialized by parenthesized string literal %qE"
  msgstr ""
  
! #: cp/decl.cc:8081
  #, gcc-internal-format
  msgid "initializer invalid for static member with constructor"
  msgstr ""
  
! #: cp/decl.cc:8083
  #, gcc-internal-format
  msgid "non-constant in-class initialization invalid for static member %qD"
  msgstr ""
  
! #: cp/decl.cc:8086
  #, gcc-internal-format
  msgid "non-constant in-class initialization invalid for non-inline static member %qD"
  msgstr ""
  
! #: cp/decl.cc:8091
  #, gcc-internal-format
  msgid "(an out of class initialization is required)"
  msgstr ""
  
! #: cp/decl.cc:8293
  #, fuzzy, gcc-internal-format
  msgid "reference %qD is initialized with itself"
  msgstr "Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\" Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ð½Ñ‹"
  
! #: cp/decl.cc:8495
  #, fuzzy, gcc-internal-format
  msgid "argument %d of %qE must be of %<omp_interop_t%>"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: cp/decl.cc:8666
  #, fuzzy, gcc-internal-format
  msgid "could not find variant declaration"
  msgstr "Ð�Ðµ Ð¼Ð°Ð³Ñƒ Ð·Ð½Ð°Ð¹Ñ�Ñ†Ñ– Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹ÑŽ Ñ–Ð½Ñ‚Ñ�Ñ€Ñ„ÐµÐ¹Ñ�Ð° Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:8690
  #, gcc-internal-format
  msgid "%<declare variant%> on constructor %qD"
  msgstr ""
  
! #: cp/decl.cc:8695
  #, gcc-internal-format
  msgid "%<declare variant%> on destructor %qD"
  msgstr ""
  
! #: cp/decl.cc:8700
  #, gcc-internal-format
  msgid "%<declare variant%> on defaulted %qD"
  msgstr ""
  
! #: cp/decl.cc:8705
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of template `%#D'"
  msgid "%<declare variant%> on deleted %qD"
  msgstr "Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ ÑˆÐ°Ð±Ð»Ñ‘Ð½Ñƒ `%#D'"
  
! #: cp/decl.cc:8710
  #, gcc-internal-format
  msgid "%<declare variant%> on virtual %qD"
  msgstr ""
  
! #: cp/decl.cc:8775
  #, gcc-internal-format
  msgid "assignment (not initialization) in declaration"
  msgstr ""
  
! #: cp/decl.cc:8796 cp/decl.cc:15825
  #, gcc-internal-format
  msgid "ISO C++17 does not allow %<register%> storage class specifier"
  msgstr ""
  
! #: cp/decl.cc:8800 cp/decl.cc:15829
  #, gcc-internal-format
  msgid "%<register%> storage class specifier used"
  msgstr ""
  
! #: cp/decl.cc:8845 cp/decl.cc:15792
  #, fuzzy, gcc-internal-format
  msgid "declaration of %q#D has no initializer"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:8881
  #, gcc-internal-format
  msgid "initializer for %<decltype(auto) %D%> has function type; did you forget the %<()%>?"
  msgstr ""
  
! #: cp/decl.cc:8893
  #, fuzzy, gcc-internal-format
  msgid "deduced type %qT for %qD is incomplete"
  msgstr "Ð²Ñ�Ñ€Ñ‚Ð°ÐµÐ¼Ñ‹ Ñ‚Ñ‹Ð¿ \"%s\" Ð½Ðµ \"int\""
  
  #. [basic.start.main]/3: A program that defines main as deleted
  #. is ill-formed.
! #: cp/decl.cc:8944
  #, gcc-internal-format
  msgid "%<::main%> cannot be deleted"
  msgstr ""
  
! #: cp/decl.cc:9098
  #, fuzzy, gcc-internal-format
  msgid "shadowing previous type declaration of %q#D"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:9141
  #, gcc-internal-format
  msgid "%<constinit%> can only be applied to a variable with static or thread storage duration"
  msgstr ""
  
! #: cp/decl.cc:9349
  #, gcc-internal-format
  msgid "function %q#D is initialized like a variable"
  msgstr ""
  
! #: cp/decl.cc:9581
  #, gcc-internal-format
  msgid "cannot decompose lambda closure type %qT"
  msgstr ""
  
! #: cp/decl.cc:9582
  #, gcc-internal-format
  msgid "lambda declared here"
  msgstr ""
  
! #: cp/decl.cc:9598
  #, gcc-internal-format
  msgid "cannot decompose class type %qT because it has an anonymous struct member"
  msgstr ""
  
! #: cp/decl.cc:9601
  #, gcc-internal-format
  msgid "cannot decompose class type %qT because it has an anonymous union member"
  msgstr ""
  
! #: cp/decl.cc:9609
  #, gcc-internal-format
  msgid "cannot decompose inaccessible member %qD of %qT"
  msgstr ""
  
! #: cp/decl.cc:9632
  #, gcc-internal-format
  msgid "in base class of %qT"
  msgstr ""
  
! #: cp/decl.cc:9639
  #, gcc-internal-format
  msgid "cannot decompose class type %qT: both it and its base class %qT have non-static data members"
  msgstr ""
  
! #: cp/decl.cc:9648
  #, gcc-internal-format
  msgid "cannot decompose class type %qT: its base classes %qT and %qT have non-static data members"
  msgstr ""
  
! #: cp/decl.cc:9886
  #, fuzzy, gcc-internal-format
  msgid "structured binding refers to incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:9902
  #, gcc-internal-format
  msgid "array initializer for structured binding declaration in condition"
  msgstr ""
  
! #: cp/decl.cc:9908
  #, gcc-internal-format
  msgid "cannot decompose variable length array %qT"
  msgstr ""
  
! #: cp/decl.cc:9918 cp/decl.cc:9998
  #, gcc-internal-format, gfc-internal-format
  msgid "%u name provided for structured binding"
  msgid_plural "%u names provided for structured binding"
  msgstr[0] ""
  msgstr[1] ""
  
! #: cp/decl.cc:9922
  #, gcc-internal-format, gfc-internal-format
  msgid "only %u name provided for structured binding"
  msgid_plural "only %u names provided for structured binding"
  msgstr[0] ""
  msgstr[1] ""
  
! #: cp/decl.cc:9925
  #, gcc-internal-format
  msgid "while %qT decomposes into %wu element"
  msgid_plural "while %qT decomposes into %wu elements"
  msgstr[0] ""
  msgstr[1] ""
  
! #: cp/decl.cc:9966
  #, gcc-internal-format
  msgid "cannot decompose variable length vector %qT"
  msgstr ""
  
! #: cp/decl.cc:9990
  #, fuzzy, gcc-internal-format
  msgid "%<std::tuple_size<%T>::value%> is not an integral constant expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/decl.cc:10000
  #, gcc-internal-format
  msgid "while %qT decomposes into %E elements"
  msgstr ""
  
! #: cp/decl.cc:10047
  #, gcc-internal-format
  msgid "%<std::tuple_element<%u, %T>::type%> is %<void%>"
  msgstr ""
  
! #: cp/decl.cc:10053
  #, gcc-internal-format
  msgid "in initialization of structured binding variable %qD"
  msgstr ""
  
! #: cp/decl.cc:10082
  #, gcc-internal-format
  msgid "cannot decompose union type %qT"
  msgstr ""
  
! #: cp/decl.cc:10087
  #, gcc-internal-format
  msgid "cannot decompose non-array non-class type %qT"
  msgstr ""
  
! #: cp/decl.cc:10093
  #, gcc-internal-format
  msgid "structured binding refers to incomplete class type %qT"
  msgstr ""
  
! #: cp/decl.cc:10102
  #, gcc-internal-format
  msgid "cannot decompose class type %qT without non-static data members"
  msgstr ""
  
! #: cp/decl.cc:10598
  #, gcc-internal-format
  msgid "non-local variable %qD declared %<__thread%> needs dynamic initialization"
  msgstr ""
  
! #: cp/decl.cc:10601
  #, gcc-internal-format
  msgid "non-local variable %qD declared %<__thread%> has a non-trivial destructor"
  msgstr ""
  
! #: cp/decl.cc:10606
  #, gcc-internal-format
  msgid "C++11 %<thread_local%> allows dynamic initialization and destruction"
  msgstr ""
  
! #: cp/decl.cc:10825
  #, gcc-internal-format
  msgid "initializer fails to determine size of %qT"
  msgstr ""
  
! #: cp/decl.cc:10829
  #, fuzzy, gcc-internal-format
  #| msgid "array size missing in `%D'"
  msgid "array size missing in %qT"
  msgstr "Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½ Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° Ñž `%D'"
  
! #: cp/decl.cc:10832
  #, fuzzy, gcc-internal-format
  #| msgid "zero-size array `%D'"
  msgid "zero-size array %qT"
  msgstr "Ð½ÑƒÐ»Ñ�Ð²Ñ‹ Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° `%D'"
  
! #: cp/decl.cc:10848
  #, gcc-internal-format
  msgid "destructor for alien class %qT cannot be a member"
  msgstr ""
  
! #: cp/decl.cc:10850
  #, gcc-internal-format
  msgid "constructor for alien class %qT cannot be a member"
  msgstr ""
  
! #: cp/decl.cc:10876
  #, gcc-internal-format
  msgid "%qD declared as a %<virtual%> variable"
  msgstr ""
  
! #: cp/decl.cc:10878
  #, gcc-internal-format
  msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in variable declaration"
  msgstr ""
  
! #: cp/decl.cc:10884
  #, gcc-internal-format
  msgid "%qD declared as a %<virtual%> parameter"
  msgstr ""
  
! #: cp/decl.cc:10887
  #, gcc-internal-format
  msgid "%qD declared as an %<inline%> parameter"
  msgstr ""
  
! #: cp/decl.cc:10889
  #, gcc-internal-format
  msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter declaration"
  msgstr ""
  
! #: cp/decl.cc:10895
  #, gcc-internal-format
  msgid "%qD declared as a %<virtual%> type"
  msgstr ""
  
! #: cp/decl.cc:10898
  #, gcc-internal-format
  msgid "%qD declared as an %<inline%> type"
  msgstr ""
  
! #: cp/decl.cc:10900
  #, gcc-internal-format
  msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in type declaration"
  msgstr ""
  
! #: cp/decl.cc:10906
  #, gcc-internal-format
  msgid "%qD declared as a %<virtual%> field"
  msgstr ""
  
! #: cp/decl.cc:10909
  #, gcc-internal-format
  msgid "%qD declared as an %<inline%> field"
  msgstr ""
  
! #: cp/decl.cc:10911
  #, gcc-internal-format
  msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in field declaration"
  msgstr ""
  
! #: cp/decl.cc:10918
  #, gcc-internal-format
  msgid "%q+D declared as a friend"
  msgstr ""
  
! #: cp/decl.cc:10925
  #, fuzzy, gcc-internal-format
  msgid "%q+D declared with an exception specification"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/decl.cc:10957
  #, gcc-internal-format
  msgid "definition of %qD is not in namespace enclosing %qT"
  msgstr ""
  
! #: cp/decl.cc:10997
  #, gcc-internal-format
  msgid "static member function %q#D declared with type qualifiers"
  msgstr ""
  
! #: cp/decl.cc:11073
  #, fuzzy, gcc-internal-format
  msgid "function concepts are no longer supported"
  msgstr "-pipe Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð°."
  
! #: cp/decl.cc:11111
  #, gcc-internal-format
  msgid "constraints on a non-templated function"
  msgstr ""
  
! #: cp/decl.cc:11113
  #, gcc-internal-format
  msgid "constrained non-template friend declaration must be a definition"
  msgstr ""
  
! #: cp/decl.cc:11120
  #, gcc-internal-format
  msgid "friend function template with constraints that depend on outer template parameters must be a definition"
  msgstr ""
  
! #: cp/decl.cc:11172
  #, fuzzy, gcc-internal-format
  msgid "defining explicit specialization %qD in friend declaration"
  msgstr "Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ†Ñ‹Ñ�"
  
! #: cp/decl.cc:11183
  #, fuzzy, gcc-internal-format
  msgid "invalid use of template-id %qD in declaration of primary template"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/decl.cc:11201
  #, gcc-internal-format
  msgid "default arguments are not allowed in declaration of friend template specialization %qD"
  msgstr ""
  
! #: cp/decl.cc:11210
  #, gcc-internal-format
  msgid "%<inline%> is not allowed in declaration of friend template specialization %qD"
  msgstr ""
  
  #. diagnostic_option_id=
! #: cp/decl.cc:11241
  #, gcc-internal-format
  msgid "friend declaration of %qD specifies default arguments and isn%'t a definition"
  msgstr ""
  
! #: cp/decl.cc:11283
  #, gcc-internal-format
  msgid "cannot declare %<::main%> to be a template"
  msgstr ""
  
! #: cp/decl.cc:11286
  #, gcc-internal-format
  msgid "cannot declare %<::main%> to be inline"
  msgstr ""
  
! #: cp/decl.cc:11289 cp/decl.cc:11292
  #, gcc-internal-format
  msgid "cannot declare %<::main%> to be %qs"
  msgstr ""
  
! #: cp/decl.cc:11294
  #, gcc-internal-format
  msgid "cannot declare %<::main%> to be static"
  msgstr ""
  
! #: cp/decl.cc:11296
  #, fuzzy, gcc-internal-format
  msgid "cannot declare %<::main%> with a linkage specification"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/decl.cc:11299
  #, gcc-internal-format
  msgid "cannot attach %<::main%> to a named module"
  msgstr ""
  
! #: cp/decl.cc:11358
  #, gcc-internal-format
  msgid "non-member function %qD cannot have cv-qualifier"
  msgstr ""
  
! #: cp/decl.cc:11360
  #, gcc-internal-format
  msgid "static member function %qD cannot have cv-qualifier"
  msgstr ""
  
! #: cp/decl.cc:11361
  #, gcc-internal-format
  msgid "explicit object member function %qD cannot have cv-qualifier"
  msgstr ""
  
! #: cp/decl.cc:11366
  #, gcc-internal-format
  msgid "non-member function %qD cannot have ref-qualifier"
  msgstr ""
  
! #: cp/decl.cc:11368
  #, gcc-internal-format
  msgid "static member function %qD cannot have ref-qualifier"
  msgstr ""
  
! #: cp/decl.cc:11369
  #, gcc-internal-format
  msgid "explicit object member function %qD cannot have ref-qualifier"
  msgstr ""
  
! #: cp/decl.cc:11375 cp/decl.cc:14308 cp/decl.cc:14318 cp/parser.cc:12370
  #, fuzzy, gcc-internal-format
  msgid "explicit object parameter declared here"
  msgstr "Ñ‚Ñ‹Ð¿ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" Ð½Ðµ Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ñ‹"
  
! #: cp/decl.cc:11388
  #, gcc-internal-format
  msgid "deduction guide %qD must be declared in the same scope as %qT"
  msgstr ""
  
! #: cp/decl.cc:11390 cp/decl.cc:11399 cp/typeck.cc:4783
  #, fuzzy, gcc-internal-format
  #| msgid "  from here"
  msgid "  declared here"
  msgstr " Ð°Ð´Ñ�ÑŽÐ»ÑŒ"
  
! #: cp/decl.cc:11397
  #, gcc-internal-format
  msgid "deduction guide %qD must have the same access as %qT"
  msgstr ""
  
! #: cp/decl.cc:11403
  #, gcc-internal-format
  msgid "deduction guide %qD must not have a function body"
  msgstr ""
  
! #: cp/decl.cc:11417
  #, gcc-internal-format
  msgid "literal operator with C linkage"
  msgstr ""
  
! #: cp/decl.cc:11427
  #, fuzzy, gcc-internal-format
  msgid "%qD has invalid argument list"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/decl.cc:11435
  #, gcc-internal-format
  msgid "integer suffix %qs shadowed by implementation"
  msgstr ""
  
! #: cp/decl.cc:11441
  #, gcc-internal-format
  msgid "floating-point suffix %qs shadowed by implementation"
  msgstr ""
  
! #: cp/decl.cc:11448
  #, gcc-internal-format
  msgid "literal operator suffixes not preceded by %<_%> are reserved for future standardization"
  msgstr ""
  
! #: cp/decl.cc:11453
  #, gcc-internal-format
  msgid "%qD must be a non-member function"
  msgstr ""
  
! #: cp/decl.cc:11538
  #, fuzzy, gcc-internal-format
  #| msgid "`main' must return `int'"
  msgid "%<::main%> must return %<int%>"
  msgstr "`main' Ð¿Ð°Ð²Ñ–Ð½Ð½Ð° Ð²Ñ�Ñ€Ñ‚Ð°Ñ†ÑŒ `int'"
  
! #: cp/decl.cc:11578
  #, gcc-internal-format
  msgid "definition of implicitly-declared %qD"
  msgstr ""
  
! #: cp/decl.cc:11584
  #, gcc-internal-format
  msgid "definition of explicitly-defaulted %q+D"
  msgstr ""
  
! #: cp/decl.cc:11586
  #, fuzzy, gcc-internal-format
  msgid "%q#D explicitly defaulted here"
  msgstr "Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ†Ñ‹Ñ�"
  
! #: cp/decl.cc:11603
  #, gcc-internal-format
  msgid "no %q#D member function declared in class %qT"
  msgstr ""
  
! #: cp/decl.cc:11800
  #, gcc-internal-format
  msgid "cannot declare %<::main%> to be a global variable"
  msgstr ""
  
! #: cp/decl.cc:11803
  #, gcc-internal-format
  msgid "an entity named %<main%> cannot be declared with C language linkage"
  msgstr ""
  
! #: cp/decl.cc:11812
  #, fuzzy, gcc-internal-format
  msgid "a non-template variable cannot be %<concept%>"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/decl.cc:11815
  #, gcc-internal-format
  msgid "concept must be defined at namespace scope"
  msgstr ""
  
! #: cp/decl.cc:11818
  #, fuzzy, gcc-internal-format
  msgid "variable concepts are no longer supported"
  msgstr "-pipe Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð°."
  
! #: cp/decl.cc:11939
  #, gcc-internal-format
  msgid "in-class initialization of static data member %q#D of incomplete type"
  msgstr ""
  
! #: cp/decl.cc:11943
  #, gcc-internal-format
  msgid "%<constexpr%> needed for in-class initialization of static data member %q#D of non-integral type"
  msgstr ""
  
! #: cp/decl.cc:11947
  #, gcc-internal-format
  msgid "in-class initialization of static data member %q#D of non-literal type"
  msgstr ""
  
! #: cp/decl.cc:11958
  #, gcc-internal-format
  msgid "invalid in-class initialization of static data member of non-integral type %qT"
  msgstr ""
  
! #: cp/decl.cc:11963
  #, gcc-internal-format
  msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
  msgstr ""
  
! #: cp/decl.cc:11968
  #, gcc-internal-format
  msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT"
  msgstr ""
  
! #: cp/decl.cc:12080
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%D' has non-integer type"
  msgid "size of array %qD has non-integral type %qT"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° `%D' Ð½Ðµ Ñ†Ñ�Ð»Ð°Ð»Ñ–ÐºÐ°Ð²Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:12083
  #, fuzzy, gcc-internal-format
  msgid "size of array has non-integral type %qT"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/decl.cc:12114 cp/decl.cc:12186
  #, fuzzy, gcc-internal-format
  msgid "size of array %qD is not an integral constant-expression"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/decl.cc:12118 cp/decl.cc:12189
  #, gcc-internal-format
  msgid "size of array is not an integral constant-expression"
  msgstr ""
  
! #: cp/decl.cc:12169
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids zero-size array %qD"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: cp/decl.cc:12172
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids zero-size array"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: cp/decl.cc:12196
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids variable length array %qD"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: cp/decl.cc:12199
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids variable length array"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: cp/decl.cc:12205
  #, gcc-internal-format
  msgid "variable length array %qD is used"
  msgstr ""
  
! #: cp/decl.cc:12208
  #, gcc-internal-format
  msgid "variable length array is used"
  msgstr ""
  
! #: cp/decl.cc:12260
  #, gcc-internal-format
  msgid "overflow in array dimension"
  msgstr ""
  
! #: cp/decl.cc:12320
  #, gcc-internal-format
  msgid "%qD declared as array of template placeholder type %qT"
  msgstr ""
  
! #: cp/decl.cc:12323
  #, gcc-internal-format
  msgid "creating array of template placeholder type %qT"
  msgstr ""
  
! #: cp/decl.cc:12333
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%#D'"
  msgid "declaration of %qD as array of void"
  msgstr "Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%#D'"
  
! #: cp/decl.cc:12335
  #, gcc-internal-format
  msgid "creating array of void"
  msgstr ""
  
! #: cp/decl.cc:12340
  #, gcc-internal-format
  msgid "declaration of %qD as array of functions"
  msgstr ""
  
! #: cp/decl.cc:12342
  #, gcc-internal-format
  msgid "creating array of functions"
  msgstr ""
  
! #: cp/decl.cc:12347
  #, gcc-internal-format
  msgid "declaration of %qD as array of references"
  msgstr ""
  
! #: cp/decl.cc:12349
  #, gcc-internal-format
  msgid "creating array of references"
  msgstr ""
  
! #: cp/decl.cc:12354
  #, gcc-internal-format
  msgid "declaration of %qD as array of function members"
  msgstr ""
  
! #: cp/decl.cc:12357
  #, gcc-internal-format
  msgid "creating array of function members"
  msgstr ""
  
! #: cp/decl.cc:12375
  #, gcc-internal-format
  msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first"
  msgstr ""
  
! #: cp/decl.cc:12379
  #, gcc-internal-format
  msgid "multidimensional array must have bounds for all dimensions except the first"
  msgstr ""
  
! #: cp/decl.cc:12393
  #, gcc-internal-format
  msgid "variable-length array of %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:12491
  #, gcc-internal-format
  msgid "return type specification for constructor invalid"
  msgstr ""
  
! #: cp/decl.cc:12494
  #, fuzzy, gcc-internal-format
  msgid "qualifiers are not allowed on constructor declaration"
  msgstr "\"%s\" - Ð³Ñ�Ñ‚Ð° Ð½Ðµ Ð¿Ð°Ñ‡Ð°Ñ‚Ð°Ðº Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ–"
  
! #: cp/decl.cc:12505
  #, gcc-internal-format
  msgid "return type specification for destructor invalid"
  msgstr ""
  
! #: cp/decl.cc:12508
  #, fuzzy, gcc-internal-format
  msgid "qualifiers are not allowed on destructor declaration"
  msgstr "\"%s\" - Ð³Ñ�Ñ‚Ð° Ð½Ðµ Ð¿Ð°Ñ‡Ð°Ñ‚Ð°Ðº Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ–"
  
! #: cp/decl.cc:12521
  #, gcc-internal-format
  msgid "return type specified for %<operator %T%>"
  msgstr ""
  
! #: cp/decl.cc:12524
  #, gcc-internal-format
  msgid "qualifiers are not allowed on declaration of %<operator %T%>"
  msgstr ""
  
! #: cp/decl.cc:12533
  #, gcc-internal-format
  msgid "return type specified for deduction guide"
  msgstr ""
  
! #: cp/decl.cc:12536
  #, gcc-internal-format
  msgid "qualifiers are not allowed on declaration of deduction guide"
  msgstr ""
  
! #: cp/decl.cc:12540
  #, gcc-internal-format
  msgid "template template parameter %qT in declaration of deduction guide"
  msgstr ""
  
! #: cp/decl.cc:12549
  #, gcc-internal-format
  msgid "%<decl-specifier%> in declaration of deduction guide"
  msgstr ""
  
! #: cp/decl.cc:12570
  #, gcc-internal-format
  msgid "unnamed variable or field declared void"
  msgstr ""
  
! #: cp/decl.cc:12578
  #, gcc-internal-format
  msgid "variable or field declared void"
  msgstr ""
  
! #: cp/decl.cc:12593
  #, gcc-internal-format
  msgid "%<inline%> specifier invalid for variable %qD declared at block scope"
  msgstr ""
  
! #: cp/decl.cc:12598
  #, gcc-internal-format
  msgid "inline variables are only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/decl.cc:12654
  #, gcc-internal-format
  msgid "%qT as type rather than plain %<decltype(auto)%>"
  msgstr ""
  
! #: cp/decl.cc:12660
  #, gcc-internal-format
  msgid "%<decltype(auto)%> cannot be cv-qualified"
  msgstr ""
  
! #: cp/decl.cc:12681
  msgid "%e and %e specified together"
  msgstr ""
  
! #: cp/decl.cc:12893
  #, fuzzy, gcc-internal-format
  msgid "invalid use of qualified-name %<::%D%>"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/decl.cc:12896 cp/decl.cc:12918
  #, fuzzy, gcc-internal-format
  msgid "invalid use of qualified-name %<%T::%D%>"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/decl.cc:12899
  #, fuzzy, gcc-internal-format
  msgid "invalid use of qualified-name %<%D::%D%>"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/decl.cc:12909
  #, gcc-internal-format
  msgid "%q#T is not a class or namespace"
  msgstr ""
  
! #: cp/decl.cc:12933
  #, fuzzy, gcc-internal-format
  msgid "declaration of %qE as non-function"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:12940
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%#D'"
  msgid "declaration of %qE as non-member"
  msgstr "Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%#D'"
  
! #: cp/decl.cc:12968
  #, gcc-internal-format
  msgid "declarator-id missing; using reserved word %qD"
  msgstr ""
  
! #: cp/decl.cc:13019
  #, gcc-internal-format
  msgid "function definition does not declare parameters"
  msgstr ""
  
! #: cp/decl.cc:13027 cp/decl.cc:13036 cp/decl.cc:15032
  #, fuzzy, gcc-internal-format
  msgid "declaration of %qD as non-function"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:13044
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%#D'"
  msgid "declaration of %qD as %<typedef%>"
  msgstr "Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%#D'"
  
! #: cp/decl.cc:13049
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%#D'"
  msgid "declaration of %qD as parameter"
  msgstr "Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%#D'"
  
! #: cp/decl.cc:13084
  #, gcc-internal-format
  msgid "both %qs and %qs specified"
  msgstr ""
  
! #: cp/decl.cc:13091 cp/decl.cc:13098 cp/decl.cc:13105 cp/decl.cc:13112
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not at beginning of declaration"
  msgid "%qs cannot appear in a typedef declaration"
  msgstr "\"%s\" - Ð³Ñ�Ñ‚Ð° Ð½Ðµ Ð¿Ð°Ñ‡Ð°Ñ‚Ð°Ðº Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ–"
  
! #: cp/decl.cc:13123
  #, gcc-internal-format
  msgid "can use at most one of the %<constinit%> and %<constexpr%> specifiers"
  msgstr ""
  
! #: cp/decl.cc:13133
  #, fuzzy, gcc-internal-format
  msgid "two or more data types in declaration of %qs"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ"
  
! #: cp/decl.cc:13187
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support plain `complex' meaning `double complex'"
  msgid "ISO C++ does not support plain %<complex%> meaning %<double complex%>"
  msgstr "ISO C Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ‹ \"complex\" Ñƒ Ð·Ð½Ð°Ñ‡Ñ�Ð½Ð½Ñ– \"double complex\""
  
! #: cp/decl.cc:13237 cp/decl.cc:13241 cp/decl.cc:13244
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids declaration of %qs with no type"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: cp/decl.cc:13261
  #, fuzzy, gcc-internal-format
  #| msgid "__builtin_saveregs not supported by this target"
  msgid "%<__int%d%> is not supported by this target"
  msgstr "__buitin_saveregs Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð° Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ð°Ð¹"
  
! #: cp/decl.cc:13269
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ does not support `long long'"
  msgid "ISO C++ does not support %<__int%d%> for %qs"
  msgstr "ISO C++ Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ \"long long\""
  
! #: cp/decl.cc:13332
  #, gcc-internal-format
  msgid "%qs specified with %qT"
  msgstr ""
  
! #: cp/decl.cc:13339
  #, gcc-internal-format
  msgid "%qs specified with typedef-name %qD"
  msgstr ""
  
! #: cp/decl.cc:13348
  #, gcc-internal-format
  msgid "%qs specified with %<decltype%>"
  msgstr ""
  
! #: cp/decl.cc:13350
  #, gcc-internal-format
  msgid "%qs specified with %<typeof%>"
  msgstr ""
  
! #: cp/decl.cc:13419
  #, fuzzy, gcc-internal-format
  #| msgid "complex invalid for `%s'"
  msgid "complex invalid for %qs"
  msgstr "complex Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:13463
  #, gcc-internal-format
  msgid "missing template argument list after %qE; for deduction, template placeholder must be followed by a simple declarator-id"
  msgstr ""
  
! #: cp/decl.cc:13489
  #, gcc-internal-format
  msgid "member %qD cannot be declared both %<virtual%> and %<static%>"
  msgstr ""
  
! #: cp/decl.cc:13498
  #, gcc-internal-format
  msgid "member %qD can be declared both %<virtual%> and %<constexpr%> only in %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/decl.cc:13511
  #, gcc-internal-format
  msgid "typedef declaration invalid in parameter declaration"
  msgstr ""
  
! #: cp/decl.cc:13518
  #, gcc-internal-format
  msgid "storage class specified for template parameter %qs"
  msgstr ""
  
! #: cp/decl.cc:13528 cp/decl.cc:13705
  #, gcc-internal-format
  msgid "storage class specified for parameter %qs"
  msgstr ""
  
! #: cp/decl.cc:13536 cp/decl.cc:13545 cp/decl.cc:13551 cp/decl.cc:13557
  #, fuzzy, gcc-internal-format
  msgid "a parameter cannot be declared %qs"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/decl.cc:13567
  #, fuzzy, gcc-internal-format
  #| msgid "Invalid declaration"
  msgid "%<virtual%> outside class declaration"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ"
  
! #: cp/decl.cc:13577 cp/decl.cc:13580 cp/decl.cc:13582 cp/decl.cc:13585
! #: cp/decl.cc:13595 cp/decl.cc:13605 cp/decl.cc:13615 cp/decl.cc:13619
  #, gcc-internal-format
  msgid "structured binding declaration cannot be %qs"
  msgstr ""
  
! #: cp/decl.cc:13589 cp/decl.cc:13611
  #, gcc-internal-format
  msgid "structured binding declaration can be %qs only in %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/decl.cc:13599
  #, gcc-internal-format
  msgid "%<volatile%>-qualified structured binding is deprecated"
  msgstr ""
  
! #: cp/decl.cc:13623
  #, gcc-internal-format
  msgid "structured binding declaration cannot be C++98 %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:13635
  #, gcc-internal-format
  msgid "structured binding declaration cannot have type %qT"
  msgstr ""
  
! #: cp/decl.cc:13638
  #, gcc-internal-format
  msgid "type must be cv-qualified %<auto%> or reference to cv-qualified %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:13646
  #, gcc-internal-format
  msgid "structured binding declaration cannot have constrained %<auto%> type %qT"
  msgstr ""
  
! #: cp/decl.cc:13677
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate label declaration `%s'"
  msgid "multiple storage classes in declaration of %qs"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ñ‹ `%s'"
  
! #: cp/decl.cc:13703
  #, gcc-internal-format
  msgid "storage class specified for %qs"
  msgstr ""
  
! #: cp/decl.cc:13717
  #, gcc-internal-format
  msgid "nested function %qs declared %<extern%>"
  msgstr ""
  
! #: cp/decl.cc:13722
  #, gcc-internal-format
  msgid "top-level declaration of %qs specifies %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:13730
  #, gcc-internal-format
  msgid "function-scope %qs implicitly auto and declared %<__thread%>"
  msgstr ""
  
! #: cp/decl.cc:13744
  #, gcc-internal-format
  msgid "storage class specifiers invalid in friend function declarations"
  msgstr ""
  
! #: cp/decl.cc:13850
  #, fuzzy, gcc-internal-format
  msgid "unnecessary parentheses in declaration of %qs"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:13856
  #, gcc-internal-format
  msgid "remove parentheses"
  msgstr ""
  
! #: cp/decl.cc:13923
  #, gcc-internal-format
  msgid "explicit object member function only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/decl.cc:13937
  #, gcc-internal-format
  msgid "a function type cannot have an explicit object parameter"
  msgstr ""
  
! #: cp/decl.cc:13943
  #, gcc-internal-format
  msgid "a pointer to function type cannot have an explicit object parameter"
  msgstr ""
  
! #: cp/decl.cc:13947
  #, gcc-internal-format
  msgid "a pointer to member function type cannot have an explicit object parameter"
  msgstr ""
  
! #: cp/decl.cc:13955
  #, gcc-internal-format
  msgid "the type of a pointer to explicit object member function is a regular pointer to function type"
  msgstr ""
  
! #: cp/decl.cc:13959
  #, gcc-internal-format
  msgid "the type of an explicit object member function is a regular function type"
  msgstr ""
  
! #: cp/decl.cc:13980
  #, gcc-internal-format
  msgid "only the first parameter of a member function can be declared as an explicit object parameter"
  msgstr ""
  
! #: cp/decl.cc:13985
  #, gcc-internal-format
  msgid "valid explicit object parameter declared here"
  msgstr ""
  
! #: cp/decl.cc:13989
  #, gcc-internal-format
  msgid "requires-clause on return type"
  msgstr ""
  
! #: cp/decl.cc:14010
  #, gcc-internal-format
  msgid "%qs function uses %<auto%> type specifier without trailing return type"
  msgstr ""
  
! #: cp/decl.cc:14014
  #, gcc-internal-format
  msgid "deduced return type only available with %<-std=c++14%> or %<-std=gnu++14%>"
  msgstr ""
  
! #: cp/decl.cc:14019
  #, fuzzy, gcc-internal-format
  #| msgid "virtual functions cannot be friends"
  msgid "virtual function cannot have deduced return type"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/decl.cc:14026
  #, gcc-internal-format
  msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:14035
  #, gcc-internal-format
  msgid "%qs function with trailing return type has %<decltype(auto)%> as its type rather than plain %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:14040
  #, fuzzy, gcc-internal-format
  msgid "invalid use of %<decltype(auto)%>"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/decl.cc:14047
  #, gcc-internal-format
  msgid "%qs function with trailing return type has constrained %<auto%> type specifier rather than plain %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:14053
  #, fuzzy, gcc-internal-format
  msgid "invalid use of constrained %<auto%> type"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/decl.cc:14065
  #, gcc-internal-format
  msgid "deduced class type %qD in function return type"
  msgstr ""
  
! #: cp/decl.cc:14075
  #, gcc-internal-format
  msgid "deduction guide for %qT must have trailing return type"
  msgstr ""
  
! #: cp/decl.cc:14088
  #, gcc-internal-format
  msgid "trailing return type %qT of deduction guide is not a specialization of %qT"
  msgstr ""
  
! #: cp/decl.cc:14102
  #, gcc-internal-format
  msgid "trailing return type only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/decl.cc:14105
  #, gcc-internal-format
  msgid "%qs function with trailing return type not declared with %<auto%> type specifier"
  msgstr ""
  
! #: cp/decl.cc:14112
  #, gcc-internal-format
  msgid "a conversion function cannot have a trailing return type"
  msgstr ""
  
! #: cp/decl.cc:14138
  #, gcc-internal-format
  msgid "%<volatile%>-qualified return type is deprecated"
  msgstr ""
  
! #: cp/decl.cc:14150
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' undeclared (first use in this function)"
  msgid "%qs declared as function returning a function"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/decl.cc:14156
  #, gcc-internal-format
  msgid "%qs declared as function returning an array"
  msgstr ""
  
! #: cp/decl.cc:14163
  #, gcc-internal-format
  msgid "%<constinit%> on function return type is not allowed"
  msgstr ""
  
! #: cp/decl.cc:14196
  #, gcc-internal-format
  msgid "destructor cannot be static member function"
  msgstr ""
  
! #: cp/decl.cc:14198
  #, gcc-internal-format
  msgid "constructor cannot be static member function"
  msgstr ""
  
! #: cp/decl.cc:14203
  #, gcc-internal-format
  msgid "destructors may not be cv-qualified"
  msgstr ""
  
! #: cp/decl.cc:14204
  #, gcc-internal-format
  msgid "constructors may not be cv-qualified"
  msgstr ""
  
! #: cp/decl.cc:14212
  #, gcc-internal-format
  msgid "destructors may not be ref-qualified"
  msgstr ""
  
! #: cp/decl.cc:14213
  #, gcc-internal-format
  msgid "constructors may not be ref-qualified"
  msgstr ""
  
! #: cp/decl.cc:14231
  #, fuzzy, gcc-internal-format
  msgid "constructors cannot be declared %<virtual%>"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/decl.cc:14248
  #, gcc-internal-format
  msgid "virtual functions cannot be friends"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/decl.cc:14253
  #, gcc-internal-format
  msgid "friend declaration not in class definition"
  msgstr ""
  
! #: cp/decl.cc:14257
  #, fuzzy, gcc-internal-format
  msgid "cannot define friend function %qs in a local class definition"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: cp/decl.cc:14267
  #, gcc-internal-format
  msgid "friend function definition %qs cannot have a name qualified with %<::%>"
  msgstr ""
  
! #: cp/decl.cc:14271
  #, gcc-internal-format
  msgid "friend function definition %qs cannot have a name qualified with %<%D::%>"
  msgstr ""
  
! #: cp/decl.cc:14297
  #, gcc-internal-format
  msgid "a non-member function cannot have an explicit object parameter"
  msgstr ""
  
! #: cp/decl.cc:14305
  #, gcc-internal-format
  msgid "an explicit object member function cannot be %<virtual%>"
  msgstr ""
  
! #: cp/decl.cc:14315
  #, gcc-internal-format
  msgid "an explicit object member function cannot be %<static%>"
  msgstr ""
  
! #: cp/decl.cc:14324
  #, gcc-internal-format
  msgid "%qD cannot be an explicit object member function"
  msgstr ""
  
! #: cp/decl.cc:14347
  #, gcc-internal-format
  msgid "destructors may not have parameters"
  msgstr ""
  
! #: cp/decl.cc:14405
  #, fuzzy, gcc-internal-format
  msgid "cannot declare pointer to %q#T"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:14418 cp/decl.cc:14425
  #, fuzzy, gcc-internal-format
  msgid "cannot declare reference to %q#T"
  msgstr "Ð�Ðµ Ð¼Ð°Ð³Ñƒ Ð·Ð½Ð°Ð¹Ñ�Ñ†Ñ– Ñ„Ð°Ð¹Ð» Ð´Ð»Ñ� ÐºÐ»Ð°Ñ�Ð° %s."
  
! #: cp/decl.cc:14427
  #, gcc-internal-format
  msgid "cannot declare pointer to %q#T member"
  msgstr ""
  
! #: cp/decl.cc:14456
  #, gcc-internal-format
  msgid "cannot declare reference to qualified function type %qT"
  msgstr ""
  
! #: cp/decl.cc:14457
  #, fuzzy, gcc-internal-format
  msgid "cannot declare pointer to qualified function type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:14530
  #, gcc-internal-format
  msgid "cannot declare reference to %q#T, which is not a typedef or a template type argument"
  msgstr ""
  
! #: cp/decl.cc:14609
  #, gcc-internal-format
  msgid "template-id %qD used as a declarator"
  msgstr ""
  
! #: cp/decl.cc:14635
  #, gcc-internal-format
  msgid "member functions are implicitly friends of their class"
  msgstr ""
  
! #: cp/decl.cc:14640
  #, gcc-internal-format
  msgid "extra qualification %<%T::%> on member %qs"
  msgstr ""
  
! #: cp/decl.cc:14670
  #, gcc-internal-format
  msgid "cannot define member function %<%T::%s%> within %qT"
  msgstr ""
  
! #: cp/decl.cc:14672
  #, gcc-internal-format
  msgid "cannot declare member function %<%T::%s%> within %qT"
  msgstr ""
  
! #: cp/decl.cc:14680
  #, gcc-internal-format
  msgid "cannot declare member %<%T::%s%> within %qT"
  msgstr ""
  
! #: cp/decl.cc:14720
  #, gcc-internal-format
  msgid "non-parameter %qs cannot be a parameter pack"
  msgstr ""
  
! #: cp/decl.cc:14729
  #, gcc-internal-format
  msgid "data member may not have variably modified type %qT"
  msgstr ""
  
! #: cp/decl.cc:14732
  #, gcc-internal-format
  msgid "parameter may not have variably modified type %qT"
  msgstr ""
  
! #: cp/decl.cc:14743
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate label declaration `%s'"
  msgid "%<explicit%> outside class declaration"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ñ‹ `%s'"
  
! #: cp/decl.cc:14746
  #, fuzzy, gcc-internal-format
  msgid "%<explicit%> in friend declaration"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:14749
  #, gcc-internal-format
  msgid "only declarations of constructors and conversion operators can be %<explicit%>"
  msgstr ""
  
! #: cp/decl.cc:14759
  #, fuzzy, gcc-internal-format
  msgid "non-member %qs cannot be declared %<mutable%>"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/decl.cc:14766
  #, gcc-internal-format
  msgid "non-object member %qs cannot be declared %<mutable%>"
  msgstr ""
  
! #: cp/decl.cc:14772
  #, fuzzy, gcc-internal-format
  msgid "function %qs cannot be declared %<mutable%>"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/decl.cc:14778
  #, gcc-internal-format
  msgid "%<static%> %qs cannot be declared %<mutable%>"
  msgstr ""
  
! #: cp/decl.cc:14784
  #, fuzzy, gcc-internal-format
  msgid "%<const%> %qs cannot be declared %<mutable%>"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/decl.cc:14790
  #, fuzzy, gcc-internal-format
  msgid "reference %qs cannot be declared %<mutable%>"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/decl.cc:14806
  #, gcc-internal-format
  msgid "typedef may not be a function definition"
  msgstr ""
  
! #: cp/decl.cc:14809
  #, gcc-internal-format
  msgid "typedef may not be a member function definition"
  msgstr ""
  
! #: cp/decl.cc:14835
  #, fuzzy, gcc-internal-format
  msgid "%<auto%> not allowed in alias declaration"
  msgstr "\"%s\" - Ð³Ñ�Ñ‚Ð° Ð½Ðµ Ð¿Ð°Ñ‡Ð°Ñ‚Ð°Ðº Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ–"
  
! #: cp/decl.cc:14838
  #, gcc-internal-format
  msgid "typedef declared %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:14843
  #, gcc-internal-format
  msgid "requires-clause on typedef"
  msgstr ""
  
! #: cp/decl.cc:14847
  #, gcc-internal-format
  msgid "typedef name may not be a nested-name-specifier"
  msgstr ""
  
! #: cp/decl.cc:14873
  #, gcc-internal-format
  msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
  msgstr ""
  
! #: cp/decl.cc:14962
  #, fuzzy, gcc-internal-format
  msgid "%<inline%> specified for friend class declaration"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:14970
  #, fuzzy, gcc-internal-format
  msgid "template parameters cannot be friends"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/decl.cc:14972
  #, gcc-internal-format
  msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
  msgstr ""
  
! #: cp/decl.cc:14976
  #, gcc-internal-format
  msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
  msgstr ""
  
! #: cp/decl.cc:14989
  #, gcc-internal-format
  msgid "trying to make class %qT a friend of global scope"
  msgstr ""
  
! #: cp/decl.cc:15009
  #, gcc-internal-format
  msgid "invalid qualifiers on non-member function type"
  msgstr ""
  
! #: cp/decl.cc:15013
  #, gcc-internal-format
  msgid "requires-clause on type-id"
  msgstr ""
  
! #: cp/decl.cc:15023
  #, gcc-internal-format
  msgid "abstract declarator %qT used as declaration"
  msgstr ""
  
! #: cp/decl.cc:15038
  #, fuzzy, gcc-internal-format
  msgid "requires-clause on declaration of non-function type %qT"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:15057
  #, fuzzy, gcc-internal-format
  msgid "cannot use %<::%> in parameter declaration"
  msgstr "Ð�Ðµ Ð¼Ð°Ð³Ñƒ Ð·Ð½Ð°Ð¹Ñ�Ñ†Ñ– Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹ÑŽ Ð¿Ñ€Ð°Ñ‚Ð°ÐºÐ¾Ð»Ð° Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:15067 cp/parser.cc:21414
  #, gcc-internal-format
  msgid "cannot declare a parameter with %<decltype(auto)%>"
  msgstr ""
  
! #: cp/decl.cc:15074
  #, gcc-internal-format
  msgid "missing template argument list after %qE; template placeholder not permitted in parameter"
  msgstr ""
  
! #: cp/decl.cc:15077
  #, gcc-internal-format
  msgid "or use %<auto%> for an abbreviated function template"
  msgstr ""
  
! #: cp/decl.cc:15083 cp/parser.cc:26080
  #, gcc-internal-format
  msgid "%<auto%> parameter not permitted in this context"
  msgstr ""
  
! #: cp/decl.cc:15093
  #, fuzzy, gcc-internal-format
  msgid "parameter declared %<auto%>"
  msgstr "Ñ‚Ñ‹Ð¿ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" Ð½Ðµ Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ñ‹"
  
! #: cp/decl.cc:15147 cp/parser.cc:3855
  #, fuzzy, gcc-internal-format
  msgid "invalid use of template-name %qE without an argument list"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/decl.cc:15151
  #, gcc-internal-format
  msgid "non-static data member declared with placeholder %qT"
  msgstr ""
  
! #: cp/decl.cc:15171
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids flexible array member %qs"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: cp/decl.cc:15174
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids flexible array members"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
  #. Something like struct S { int N::j; };
! #: cp/decl.cc:15190
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `::'"
  msgid "invalid use of %<::%>"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½ÑŒÐ½Ðµ `::'"
  
! #: cp/decl.cc:15211
  #, fuzzy, gcc-internal-format
  msgid "declaration of function %qD in invalid context"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl.cc:15221
  #, fuzzy, gcc-internal-format
  msgid "function %qD declared %<virtual%> inside a union"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/decl.cc:15231
  #, gcc-internal-format
  msgid "%qD cannot be declared %<virtual%>, since it is always static"
  msgstr ""
  
! #: cp/decl.cc:15245
  #, gcc-internal-format
  msgid "expected qualified name in friend declaration for destructor %qD"
  msgstr ""
  
! #: cp/decl.cc:15252
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of template `%#D'"
  msgid "declaration of %qD as member of %qT"
  msgstr "Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ ÑˆÐ°Ð±Ð»Ñ‘Ð½Ñƒ `%#D'"
  
! #: cp/decl.cc:15259 cp/decl.cc:15272
  #, gcc-internal-format
  msgid "a destructor cannot be %qs"
  msgstr ""
  
! #: cp/decl.cc:15278
  #, gcc-internal-format
  msgid "expected qualified name in friend declaration for constructor %qD"
  msgstr ""
  
! #: cp/decl.cc:15287
  #, gcc-internal-format
  msgid "a constructor cannot be %<concept%>"
  msgstr ""
  
! #: cp/decl.cc:15293
  #, fuzzy, gcc-internal-format
  msgid "a concept cannot be a member function"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/decl.cc:15301 cp/decl.cc:15660
  #, fuzzy, gcc-internal-format
  #| msgid "[cannot find %s]"
  msgid "%qD cannot be %qs"
  msgstr "[Ð½ÐµÐ»ÑŒÐ³Ð° Ð·Ð½Ð°Ð¹Ñ�Ñ†Ñ– %s]"
  
! #: cp/decl.cc:15311
  #, gcc-internal-format
  msgid "specialization of variable template %qD declared as function"
  msgstr ""
  
! #: cp/decl.cc:15314
  #, fuzzy, gcc-internal-format
  msgid "variable template declared here"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/decl.cc:15379
  #, fuzzy, gcc-internal-format
  msgid "field %qD has incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:15384
  #, fuzzy, gcc-internal-format
  msgid "name %qT has incomplete type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:15404
  #, fuzzy, gcc-internal-format
  msgid "%qE is neither function nor member function; cannot be declared friend"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/decl.cc:15407
  #, gcc-internal-format
  msgid "unnamed field is neither function nor member function; cannot be declared friend"
  msgstr ""
  
! #: cp/decl.cc:15426 cp/parser.cc:21980 cp/parser.cc:28922
  #, gcc-internal-format
  msgid "an attribute that appertains to a friend declaration that is not a definition is ignored"
  msgstr ""
  
! #: cp/decl.cc:15476 cp/decl.cc:15487
  #, gcc-internal-format
  msgid "static data member %qE declared %qs"
  msgstr ""
  
! #: cp/decl.cc:15481
  #, gcc-internal-format
  msgid "%<constexpr%> static data member %qD must have an initializer"
  msgstr ""
  
! #: cp/decl.cc:15524 cp/decl.cc:15532 cp/decl.cc:15539 cp/decl.cc:15546
  #, gcc-internal-format
  msgid "non-static data member %qE declared %qs"
  msgstr ""
  
! #: cp/decl.cc:15598
  #, gcc-internal-format
  msgid "storage class %<auto%> invalid for function %qs"
  msgstr ""
  
! #: cp/decl.cc:15601
  #, gcc-internal-format
  msgid "storage class %<register%> invalid for function %qs"
  msgstr ""
  
! #: cp/decl.cc:15607
  #, gcc-internal-format
  msgid "storage class %<__thread%> invalid for function %qs"
  msgstr ""
  
! #: cp/decl.cc:15611
  #, gcc-internal-format
  msgid "storage class %<thread_local%> invalid for function %qs"
  msgstr ""
  
! #: cp/decl.cc:15616
  #, fuzzy, gcc-internal-format
  #| msgid "can't initialize friend function `%s'"
  msgid "%<constinit%> specifier invalid for function %qs"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: cp/decl.cc:15619
  #, gcc-internal-format
  msgid "virt-specifiers in %qs not allowed outside a class definition"
  msgstr ""
  
! #: cp/decl.cc:15631
  #, gcc-internal-format
  msgid "%<static%> specifier invalid for function %qs declared out of global scope"
  msgstr ""
  
! #: cp/decl.cc:15635
  #, gcc-internal-format
  msgid "%<inline%> specifier invalid for function %qs declared out of global scope"
  msgstr ""
  
! #: cp/decl.cc:15643
  #, gcc-internal-format
  msgid "virtual non-class function %qs"
  msgstr ""
  
! #: cp/decl.cc:15650
  #, gcc-internal-format
  msgid "%qs defined in a non-class scope"
  msgstr ""
  
! #: cp/decl.cc:15651
  #, fuzzy, gcc-internal-format
  msgid "%qs declared in a non-class scope"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/decl.cc:15694
  #, gcc-internal-format
  msgid "cannot declare member function %qD to have static linkage"
  msgstr ""
  
! #: cp/decl.cc:15703
  #, gcc-internal-format
  msgid "cannot declare static function inside another function"
  msgstr ""
  
! #: cp/decl.cc:15744
  #, gcc-internal-format
  msgid "%<static%> may not be used when defining (as opposed to declaring) a static data member"
  msgstr ""
  
! #: cp/decl.cc:15751
  #, gcc-internal-format
  msgid "static member %qD declared %<register%>"
  msgstr ""
  
! #: cp/decl.cc:15757
  #, gcc-internal-format
  msgid "cannot explicitly declare member %q#D to have extern linkage"
  msgstr ""
  
! #: cp/decl.cc:15765
  #, gcc-internal-format
  msgid "declaration of %<constexpr%> variable %qD is not a definition"
  msgstr ""
  
! #: cp/decl.cc:15772
  #, gcc-internal-format
  msgid "a variable cannot be declared %<consteval%>"
  msgstr ""
  
! #: cp/decl.cc:15804
  #, gcc-internal-format
  msgid "%qs initialized and declared %<extern%>"
  msgstr ""
  
! #: cp/decl.cc:15809
  #, gcc-internal-format
  msgid "%qs has both %<extern%> and initializer"
  msgstr ""
  
! #: cp/decl.cc:16011
  #, fuzzy, gcc-internal-format
  msgid "default argument %qE uses %qD"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/decl.cc:16014
  #, fuzzy, gcc-internal-format
  msgid "default argument %qE uses local variable %qD"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/decl.cc:16141
  #, fuzzy, gcc-internal-format
  msgid "invalid use of cv-qualified type %qT in parameter declaration"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/decl.cc:16145
  #, fuzzy, gcc-internal-format
  msgid "invalid use of type %<void%> in parameter declaration"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/decl.cc:16174
  #, gcc-internal-format
  msgid "%<volatile%>-qualified parameter is deprecated"
  msgstr ""
  
! #: cp/decl.cc:16182
  #, fuzzy, gcc-internal-format
  msgid "parameter %qD invalidly declared method type"
  msgstr "Ñ‚Ñ‹Ð¿ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" Ð½Ðµ Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ñ‹"
  
! #: cp/decl.cc:16207
  #, gcc-internal-format
  msgid "parameter %qD includes pointer to array of unknown bound %qT"
  msgstr ""
  
! #: cp/decl.cc:16209
  #, gcc-internal-format
  msgid "parameter %qD includes reference to array of unknown bound %qT"
  msgstr ""
  
! #: cp/decl.cc:16492
  #, gcc-internal-format
  msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
  msgstr ""
  
! #: cp/decl.cc:16571
  #, fuzzy, gcc-internal-format
  msgid "%qD may not be declared within a namespace"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/decl.cc:16578
  #, fuzzy, gcc-internal-format
  msgid "%qD may not be declared as static"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/decl.cc:16636
  #, gcc-internal-format
  msgid "%qD must be a non-static member function"
  msgstr ""
  
! #: cp/decl.cc:16644
  #, fuzzy, gcc-internal-format
  msgid "%qD must be a member function"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/decl.cc:16652
  #, gcc-internal-format
  msgid "%qD may be a static member function only with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/decl.cc:16662
  #, gcc-internal-format
  msgid "%qD must be either a non-static member function or a non-member function"
  msgstr ""
  
! #: cp/decl.cc:16672
  #, gcc-internal-format
  msgid "%qD must have an argument of class or enumerated type"
  msgstr ""
  
  #. 13.4.0.3
! #: cp/decl.cc:16703
  #, gcc-internal-format
  msgid "ISO C++ prohibits overloading %<operator ?:%>"
  msgstr ""
  
! #: cp/decl.cc:16713
  #, gcc-internal-format
  msgid "%qD must not have variable number of arguments"
  msgstr ""
  
! #: cp/decl.cc:16739
  #, gcc-internal-format
  msgid "%qD must have either zero or one argument"
  msgstr ""
  
! #: cp/decl.cc:16740
  #, gcc-internal-format
  msgid "%qD must have either one or two arguments"
  msgstr ""
  
! #: cp/decl.cc:16752
  #, gcc-internal-format
  msgid "postfix %qD must have %<int%> as its argument"
  msgstr ""
  
! #: cp/decl.cc:16753
  #, gcc-internal-format
  msgid "postfix %qD must have %<int%> as its second argument"
  msgstr ""
  
! #: cp/decl.cc:16764
  #, fuzzy, gcc-internal-format
  #| msgid "no arguments"
  msgid "%qD must have no arguments"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: cp/decl.cc:16765 cp/decl.cc:16775
  #, gcc-internal-format
  msgid "%qD must have exactly one argument"
  msgstr ""
  
! #: cp/decl.cc:16776
  #, gcc-internal-format
  msgid "%qD must have exactly two arguments"
  msgstr ""
  
! #: cp/decl.cc:16791
  #, fuzzy, gcc-internal-format
  msgid "%qD cannot have default arguments"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/decl.cc:16815
  #, gcc-internal-format
  msgid "converting %qT to %<void%> will never use a type conversion operator"
  msgstr ""
  
! #: cp/decl.cc:16822
  #, gcc-internal-format
  msgid "converting %qT to a reference to the same type will never use a type conversion operator"
  msgstr ""
  
! #: cp/decl.cc:16824
  #, gcc-internal-format
  msgid "converting %qT to the same type will never use a type conversion operator"
  msgstr ""
  
! #: cp/decl.cc:16833
  #, gcc-internal-format
  msgid "converting %qT to a reference to a base class %qT will never use a type conversion operator"
  msgstr ""
  
! #: cp/decl.cc:16835
  #, gcc-internal-format
  msgid "converting %qT to a base class %qT will never use a type conversion operator"
  msgstr ""
  
! #: cp/decl.cc:16851
  #, gcc-internal-format
  msgid "user-defined %qD always evaluates both arguments"
  msgstr ""
  
! #: cp/decl.cc:16870
  #, gcc-internal-format
  msgid "prefix %qD should return %qT"
  msgstr ""
  
! #: cp/decl.cc:16877
  #, gcc-internal-format
  msgid "postfix %qD should return %qT"
  msgstr ""
  
! #: cp/decl.cc:16889
  #, gcc-internal-format
  msgid "%qD should return by value"
  msgstr ""
  
! #: cp/decl.cc:16944
  #, fuzzy, gcc-internal-format
  msgid "using template type parameter %qT after %qs"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/decl.cc:16968
  #, gcc-internal-format
  msgid "using alias template specialization %qT after %qs"
  msgstr ""
  
! #: cp/decl.cc:16971
  #, gcc-internal-format
  msgid "using typedef-name %qD after %qs"
  msgstr ""
  
! #: cp/decl.cc:16973
  #, fuzzy, gcc-internal-format
  #| msgid "this is a previous declaration"
  msgid "%qD has a previous declaration here"
  msgstr "Ð³Ñ�Ñ‚Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: cp/decl.cc:16982
  #, gcc-internal-format
  msgid "%qT referred to as %qs"
  msgstr ""
  
! #: cp/decl.cc:16983 cp/decl.cc:16991
  #, fuzzy, gcc-internal-format
  #| msgid "this is a previous declaration"
  msgid "%qT has a previous declaration here"
  msgstr "Ð³Ñ�Ñ‚Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: cp/decl.cc:16990
  #, gcc-internal-format
  msgid "%qT referred to as enum"
  msgstr ""
*************** msgstr ""
*** 59946,60046 ****
  #. void f(class C);		// No template header here
  #.
  #. then the required template argument is missing.
! #: cp/decl.cc:17007
  #, fuzzy, gcc-internal-format
  msgid "template argument required for %<%s %T%>"
  msgstr "Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\" Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ð½Ñ‹"
  
! #: cp/decl.cc:17050 cp/name-lookup.cc:6234 cp/name-lookup.cc:6367
! #: cp/parser.cc:7477 cp/parser.cc:33034
  #, fuzzy, gcc-internal-format
  msgid "reference to %qD is ambiguous"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ \"%s\" - %d Ð±Ð°Ð¹Ñ‚"
  
! #: cp/decl.cc:17060
  #, gcc-internal-format
  msgid "class template %qD redeclared as non-template"
  msgstr ""
  
! #: cp/decl.cc:17082 cp/name-lookup.cc:5923
  #, gcc-internal-format
  msgid "%qD has the same name as the class in which it is declared"
  msgstr ""
  
! #: cp/decl.cc:17111 cp/friend.cc:318 cp/parser.cc:3680 cp/parser.cc:7181
! #: cp/pt.cc:10128
  #, fuzzy, gcc-internal-format
  msgid "%qT is not a template"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:17116
  #, gcc-internal-format
  msgid "perhaps you want to explicitly add %<%T::%>"
  msgstr ""
  
! #: cp/decl.cc:17221
  #, fuzzy, gcc-internal-format
  msgid "use of enum %q#D without previous declaration"
  msgstr "Ñ�ÐµÐºÑ†Ñ‹Ñ� \"%s\" ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÐµ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð¹ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ�Ð¹"
  
! #: cp/decl.cc:17248
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of template `%#D'"
  msgid "redeclaration of %qT as a non-template"
  msgstr "Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ ÑˆÐ°Ð±Ð»Ñ‘Ð½Ñƒ `%#D'"
  
! #: cp/decl.cc:17385
  #, gcc-internal-format
  msgid "derived union %qT invalid"
  msgstr ""
  
! #: cp/decl.cc:17392
  #, gcc-internal-format
  msgid "%qT defined with multiple direct bases"
  msgstr ""
  
! #: cp/decl.cc:17403
  #, gcc-internal-format
  msgid "%qT defined with direct virtual base"
  msgstr ""
  
! #: cp/decl.cc:17428
  #, gcc-internal-format
  msgid "base type %qT fails to be a struct or class type"
  msgstr ""
  
! #: cp/decl.cc:17458
  #, gcc-internal-format
  msgid "recursive type %qT undefined"
  msgstr ""
  
! #: cp/decl.cc:17460
  #, fuzzy, gcc-internal-format
  msgid "duplicate base type %qT invalid"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½Ð½Ðµ \"restrict\""
  
! #: cp/decl.cc:17618
  #, gcc-internal-format
  msgid "scoped/unscoped mismatch in enum %q#T"
  msgstr ""
  
! #: cp/decl.cc:17621 cp/decl.cc:17630 cp/decl.cc:17641 cp/decl.cc:18242
! #: cp/parser.cc:22331
  #, gcc-internal-format
  msgid "previous definition here"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: cp/decl.cc:17627
  #, gcc-internal-format
  msgid "underlying type mismatch in enum %q#T"
  msgstr ""
  
! #: cp/decl.cc:17638
  #, gcc-internal-format
  msgid "different underlying type in enum %q#T"
  msgstr ""
  
! #: cp/decl.cc:17713
  #, gcc-internal-format
  msgid "underlying type %qT of %qT must be an integral type"
  msgstr ""
--- 60028,60128 ----
  #. void f(class C);		// No template header here
  #.
  #. then the required template argument is missing.
! #: cp/decl.cc:17005
  #, fuzzy, gcc-internal-format
  msgid "template argument required for %<%s %T%>"
  msgstr "Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\" Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ð½Ñ‹"
  
! #: cp/decl.cc:17048 cp/name-lookup.cc:6237 cp/name-lookup.cc:6370
! #: cp/parser.cc:7477 cp/parser.cc:33093
  #, fuzzy, gcc-internal-format
  msgid "reference to %qD is ambiguous"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ \"%s\" - %d Ð±Ð°Ð¹Ñ‚"
  
! #: cp/decl.cc:17058
  #, gcc-internal-format
  msgid "class template %qD redeclared as non-template"
  msgstr ""
  
! #: cp/decl.cc:17080 cp/name-lookup.cc:5926
  #, gcc-internal-format
  msgid "%qD has the same name as the class in which it is declared"
  msgstr ""
  
! #: cp/decl.cc:17109 cp/friend.cc:318 cp/parser.cc:3680 cp/parser.cc:7181
! #: cp/pt.cc:10141
  #, fuzzy, gcc-internal-format
  msgid "%qT is not a template"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/decl.cc:17114
  #, gcc-internal-format
  msgid "perhaps you want to explicitly add %<%T::%>"
  msgstr ""
  
! #: cp/decl.cc:17219
  #, fuzzy, gcc-internal-format
  msgid "use of enum %q#D without previous declaration"
  msgstr "Ñ�ÐµÐºÑ†Ñ‹Ñ� \"%s\" ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÐµ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð¹ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ�Ð¹"
  
! #: cp/decl.cc:17246
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of template `%#D'"
  msgid "redeclaration of %qT as a non-template"
  msgstr "Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ ÑˆÐ°Ð±Ð»Ñ‘Ð½Ñƒ `%#D'"
  
! #: cp/decl.cc:17383
  #, gcc-internal-format
  msgid "derived union %qT invalid"
  msgstr ""
  
! #: cp/decl.cc:17390
  #, gcc-internal-format
  msgid "%qT defined with multiple direct bases"
  msgstr ""
  
! #: cp/decl.cc:17401
  #, gcc-internal-format
  msgid "%qT defined with direct virtual base"
  msgstr ""
  
! #: cp/decl.cc:17426
  #, gcc-internal-format
  msgid "base type %qT fails to be a struct or class type"
  msgstr ""
  
! #: cp/decl.cc:17456
  #, gcc-internal-format
  msgid "recursive type %qT undefined"
  msgstr ""
  
! #: cp/decl.cc:17458
  #, fuzzy, gcc-internal-format
  msgid "duplicate base type %qT invalid"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½Ð½Ðµ \"restrict\""
  
! #: cp/decl.cc:17616
  #, gcc-internal-format
  msgid "scoped/unscoped mismatch in enum %q#T"
  msgstr ""
  
! #: cp/decl.cc:17619 cp/decl.cc:17628 cp/decl.cc:17639 cp/decl.cc:18240
! #: cp/parser.cc:22335
  #, gcc-internal-format
  msgid "previous definition here"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: cp/decl.cc:17625
  #, gcc-internal-format
  msgid "underlying type mismatch in enum %q#T"
  msgstr ""
  
! #: cp/decl.cc:17636
  #, gcc-internal-format
  msgid "different underlying type in enum %q#T"
  msgstr ""
  
! #: cp/decl.cc:17711
  #, gcc-internal-format
  msgid "underlying type %qT of %qT must be an integral type"
  msgstr ""
*************** msgstr ""
*** 60049,60131 ****
  #.
  #. IF no integral type can represent all the enumerator values, the
  #. enumeration is ill-formed.
! #: cp/decl.cc:17862
  #, gcc-internal-format
  msgid "no integral type can represent all of the enumerator values for %qT"
  msgstr ""
  
! #: cp/decl.cc:18049
  #, gcc-internal-format
  msgid "enumerator value for %qD must have integral or unscoped enumeration type"
  msgstr ""
  
! #: cp/decl.cc:18059
  #, fuzzy, gcc-internal-format
  msgid "enumerator value for %qD is not an integer constant"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/decl.cc:18108
  #, gcc-internal-format
  msgid "incremented enumerator value is too large for %<unsigned long%>"
  msgstr ""
  
! #: cp/decl.cc:18109
  #, gcc-internal-format
  msgid "incremented enumerator value is too large for %<long%>"
  msgstr ""
  
! #: cp/decl.cc:18120
  #, gcc-internal-format
  msgid "overflow in enumeration values at %qD"
  msgstr ""
  
! #: cp/decl.cc:18140
  #, gcc-internal-format
  msgid "enumerator value %qE is outside the range of underlying type %qT"
  msgstr ""
  
! #: cp/decl.cc:18240 cp/parser.cc:22329
  #, fuzzy, gcc-internal-format
  #| msgid "previous definition of `%#T'"
  msgid "multiple definition of %q#T"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ `%#T'"
  
! #: cp/decl.cc:18314
  #, fuzzy, gcc-internal-format
  msgid "return type %q#T is incomplete"
  msgstr "Ð²Ñ�Ñ€Ñ‚Ð°ÐµÐ¼Ñ‹ Ñ‚Ñ‹Ð¿ \"%s\" Ð½Ðµ \"int\""
  
! #: cp/decl.cc:18481 cp/typeck.cc:11344
  #, gcc-internal-format
  msgid "%<operator=%> should return a reference to %<*this%>"
  msgstr ""
  
! #: cp/decl.cc:19300
  #, gcc-internal-format
  msgid "no return statements in function returning %qT"
  msgstr ""
  
! #: cp/decl.cc:19302 cp/typeck.cc:11222
  #, gcc-internal-format
  msgid "only plain %<auto%> return type can be deduced to %<void%>"
  msgstr ""
  
! #: cp/decl.cc:19358
  #, gcc-internal-format
  msgid "no return statement in %<constexpr%> function returning non-void"
  msgstr ""
  
! #: cp/decl.cc:19549
  #, fuzzy, gcc-internal-format
  msgid "%qD is already defined in class %qT"
  msgstr "Ð½Ðµ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½ ÐºÐ»Ð°Ñ� \"%s\""
  
! #: cp/decl.cc:19947
  #, gcc-internal-format
  msgid "using %qs"
  msgstr ""
  
! #: cp/decl.cc:19959
  #, gcc-internal-format
  msgid "use of %qD before deduction of %<auto%>"
  msgstr ""
--- 60131,60213 ----
  #.
  #. IF no integral type can represent all the enumerator values, the
  #. enumeration is ill-formed.
! #: cp/decl.cc:17860
  #, gcc-internal-format
  msgid "no integral type can represent all of the enumerator values for %qT"
  msgstr ""
  
! #: cp/decl.cc:18047
  #, gcc-internal-format
  msgid "enumerator value for %qD must have integral or unscoped enumeration type"
  msgstr ""
  
! #: cp/decl.cc:18057
  #, fuzzy, gcc-internal-format
  msgid "enumerator value for %qD is not an integer constant"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/decl.cc:18106
  #, gcc-internal-format
  msgid "incremented enumerator value is too large for %<unsigned long%>"
  msgstr ""
  
! #: cp/decl.cc:18107
  #, gcc-internal-format
  msgid "incremented enumerator value is too large for %<long%>"
  msgstr ""
  
! #: cp/decl.cc:18118
  #, gcc-internal-format
  msgid "overflow in enumeration values at %qD"
  msgstr ""
  
! #: cp/decl.cc:18138
  #, gcc-internal-format
  msgid "enumerator value %qE is outside the range of underlying type %qT"
  msgstr ""
  
! #: cp/decl.cc:18238 cp/parser.cc:22333
  #, fuzzy, gcc-internal-format
  #| msgid "previous definition of `%#T'"
  msgid "multiple definition of %q#T"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ `%#T'"
  
! #: cp/decl.cc:18312
  #, fuzzy, gcc-internal-format
  msgid "return type %q#T is incomplete"
  msgstr "Ð²Ñ�Ñ€Ñ‚Ð°ÐµÐ¼Ñ‹ Ñ‚Ñ‹Ð¿ \"%s\" Ð½Ðµ \"int\""
  
! #: cp/decl.cc:18479 cp/typeck.cc:11460
  #, gcc-internal-format
  msgid "%<operator=%> should return a reference to %<*this%>"
  msgstr ""
  
! #: cp/decl.cc:19298
  #, gcc-internal-format
  msgid "no return statements in function returning %qT"
  msgstr ""
  
! #: cp/decl.cc:19300 cp/typeck.cc:11338
  #, gcc-internal-format
  msgid "only plain %<auto%> return type can be deduced to %<void%>"
  msgstr ""
  
! #: cp/decl.cc:19356
  #, gcc-internal-format
  msgid "no return statement in %<constexpr%> function returning non-void"
  msgstr ""
  
! #: cp/decl.cc:19547
  #, fuzzy, gcc-internal-format
  msgid "%qD is already defined in class %qT"
  msgstr "Ð½Ðµ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½ ÐºÐ»Ð°Ñ� \"%s\""
  
! #: cp/decl.cc:19945
  #, gcc-internal-format
  msgid "using %qs"
  msgstr ""
  
! #: cp/decl.cc:19957
  #, gcc-internal-format
  msgid "use of %qD before deduction of %<auto%>"
  msgstr ""
*************** msgstr ""
*** 60427,60438 ****
  msgid "%qT declared with greater visibility than its base %qT"
  msgstr ""
  
! #: cp/decl2.cc:5117
  #, gcc-internal-format
  msgid "%q#D, declared using an unnamed type, is used but never defined"
  msgstr ""
  
! #: cp/decl2.cc:5121
  #, gcc-internal-format
  msgid "%q#D, declared using an unnamed type, is used but not defined"
  msgstr ""
--- 60509,60520 ----
  msgid "%qT declared with greater visibility than its base %qT"
  msgstr ""
  
! #: cp/decl2.cc:5122
  #, gcc-internal-format
  msgid "%q#D, declared using an unnamed type, is used but never defined"
  msgstr ""
  
! #: cp/decl2.cc:5126
  #, gcc-internal-format
  msgid "%q#D, declared using an unnamed type, is used but not defined"
  msgstr ""
*************** msgstr ""
*** 60441,60820 ****
  #. no linkage can only be used to declare extern "C"
  #. entities.  Since it's not always an error in the
  #. ISO C++ 90 Standard, we only issue a warning.
! #: cp/decl2.cc:5131
  #, gcc-internal-format
  msgid "unnamed type with no linkage used to declare variable %q#D with linkage"
  msgstr ""
  
! #: cp/decl2.cc:5135
  #, gcc-internal-format
  msgid "unnamed type with no linkage used to declare function %q#D with linkage"
  msgstr ""
  
! #: cp/decl2.cc:5139
  #, gcc-internal-format
  msgid "%q#D does not refer to the unqualified type, so it is not used for linkage"
  msgstr ""
  
! #: cp/decl2.cc:5157
  #, gcc-internal-format
  msgid "%q#D, declared using local type %qT, is used but never defined"
  msgstr ""
  
! #: cp/decl2.cc:5161
  #, gcc-internal-format
  msgid "%q#D, declared using local type %qT, is used but not defined here"
  msgstr ""
  
! #: cp/decl2.cc:5169
  #, gcc-internal-format
  msgid "type %qT with no linkage used to declare variable %q#D with linkage"
  msgstr ""
  
! #: cp/decl2.cc:5172
  #, fuzzy, gcc-internal-format
  msgid "type %qT with no linkage used to declare function %q#D with linkage"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl2.cc:5377
  #, fuzzy, gcc-internal-format
  #| msgid "section of `%s' conflicts with previous declaration"
  msgid "mangling of %q#D as %qE conflicts with a previous mangle"
  msgstr "Ñ�ÐµÐºÑ†Ñ‹Ñ� \"%s\" ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÐµ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð¹ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ�Ð¹"
  
! #: cp/decl2.cc:5380
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration `%D'"
  msgid "previous mangling %q#D"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%D'"
  
! #: cp/decl2.cc:5382
  #, gcc-internal-format
  msgid "a later %<-fabi-version=%> (or =0) avoids this error with a change in mangling"
  msgstr ""
  
! #: cp/decl2.cc:5454 cp/decl2.cc:5457
  #, gcc-internal-format
  msgid "the program should also define %qD"
  msgstr ""
  
! #: cp/decl2.cc:5820
  #, fuzzy, gcc-internal-format
  #| msgid "label `%D' used but not defined"
  msgid "inline function %qD used but never defined"
  msgstr "Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ð° `%D' Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ñ‹Ð²Ð°ÐµÑ†Ñ†Ð°, Ð°Ð»Ðµ Ð½Ñ� Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°"
  
! #: cp/decl2.cc:6058
  #, fuzzy, gcc-internal-format
  msgid "default argument missing for parameter %P of %q#D"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� \"%s\" Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½"
  
! #: cp/decl2.cc:6063
  #, gcc-internal-format
  msgid "...following parameter %P which has a default argument"
  msgstr ""
  
! #: cp/decl2.cc:6186
  #, fuzzy, gcc-internal-format
  msgid "implicitly-declared %qD is deprecated"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/decl2.cc:6190
  #, gcc-internal-format
  msgid "because %qT has user-provided %qD"
  msgstr ""
  
  #. We mark a lambda conversion op as deleted if we can't
  #. generate it properly; see maybe_add_lambda_conv_op.
! #: cp/decl2.cc:6336
  #, gcc-internal-format
  msgid "converting lambda that uses %<...%> to function pointer"
  msgstr ""
  
! #: cp/decl2.cc:6345
  #, gcc-internal-format
  msgid "use of deleted function %qD: %s"
  msgstr ""
  
! #: cp/decl2.cc:6349
  #, gcc-internal-format
  msgid "use of deleted function %qD"
  msgstr ""
  
! #: cp/decl2.cc:6397
  #, gcc-internal-format
  msgid "use of function %qD with unsatisfied constraints"
  msgstr ""
  
! #: cp/decl2.cc:6436
  #, gcc-internal-format
  msgid "use of built-in parameter pack %qD outside of a template"
  msgstr ""
  
! #: cp/error.cc:3791
  msgid "    inlined from %qD at %r%s:%d:%d%R"
  msgstr ""
  
! #: cp/error.cc:3796
  #, fuzzy
  #| msgid "In file included from %s:%d"
  msgid "    inlined from %qD at %r%s:%d%R"
  msgstr "Ð£ Ñ„Ð°Ð¹Ð»Ðµ ÑƒÐºÐ»ÑŽÑ‡Ð°Ð½Ñ‹Ð¼ Ð· %s:%d"
  
! #: cp/error.cc:3802
  #, gcc-internal-format
  msgid "    inlined from %qD"
  msgstr ""
  
! #: cp/error.cc:3828
  #, fuzzy, gcc-internal-format
  msgid "In static member function %qD"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/error.cc:3830
  #, fuzzy, gcc-internal-format
  #| msgid "In construct"
  msgid "In copy constructor %qD"
  msgstr "Ð£ ÐºÐ°Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ‹Ñ–"
  
! #: cp/error.cc:3832
  #, fuzzy, gcc-internal-format
  #| msgid "In construct"
  msgid "In constructor %qD"
  msgstr "Ð£ ÐºÐ°Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ‹Ñ–"
  
! #: cp/error.cc:3834
  #, fuzzy, gcc-internal-format
  #| msgid "In construct"
  msgid "In destructor %qD"
  msgstr "Ð£ ÐºÐ°Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ‹Ñ–"
  
! #: cp/error.cc:3836
  #, fuzzy, gcc-internal-format
  #| msgid "In function"
  msgid "In lambda function"
  msgstr "Ð£ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/error.cc:3838
  #, fuzzy, gcc-internal-format
  msgid "In explicit object member function %qD"
  msgstr "Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\":"
  
! #: cp/error.cc:3840
  #, fuzzy, gcc-internal-format
  msgid "In member function %qD"
  msgstr "Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\":"
  
! #: cp/error.cc:3843
  #, fuzzy, gcc-internal-format
  #| msgid "In function"
  msgid "In function %qD"
  msgstr "Ð£ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/error.cc:3870
  msgid "%s%s%sIn substitution of %qS:\n"
  msgstr ""
  
! #: cp/error.cc:3871
  #, fuzzy, gcc-internal-format
  msgid "%s%s%sIn instantiation of %q#D:\n"
  msgstr "Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ†Ñ‹Ñ�"
  
! #: cp/error.cc:3891
  msgid "%r%s:%d:%d:%R   "
  msgstr ""
  
! #: cp/error.cc:3894
  msgid "%r%s:%d:%R   "
  msgstr ""
  
! #: cp/error.cc:3987
  msgid "recursively required by substitution of %qS\n"
  msgstr ""
  
! #: cp/error.cc:3988
  msgid "required by substitution of %qS\n"
  msgstr ""
  
! #: cp/error.cc:3993
  #, gcc-internal-format
  msgid "recursively required from %q#D\n"
  msgstr ""
  
! #: cp/error.cc:3994
  #, gcc-internal-format
  msgid "required from %q#D\n"
  msgstr ""
  
! #: cp/error.cc:4001
  #, gcc-internal-format
  msgid "recursively required from here\n"
  msgstr ""
  
! #: cp/error.cc:4002
  #, fuzzy, gcc-internal-format
  #| msgid "called from here"
  msgid "required from here\n"
  msgstr "Ð²Ñ‹ÐºÐ»Ñ–ÐºÐ°Ð½Ð° Ð°Ð´Ñ�ÑŽÐ»ÑŒ"
  
! #: cp/error.cc:4052
  #, gcc-internal-format, gfc-internal-format
  msgid "[ skipping %d instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]\n"
  msgstr ""
  
! #: cp/error.cc:4104
  #, gcc-internal-format
  msgid "in %<constexpr%> expansion of %qs"
  msgstr ""
  
! #: cp/error.cc:4117
  #, gcc-internal-format
  msgid "required by the constraints of %q#D\n"
  msgstr ""
  
! #: cp/error.cc:4132
  #, gcc-internal-format
  msgid "required for the satisfaction of %qE"
  msgstr ""
  
! #: cp/error.cc:4154
  #, gcc-internal-format
  msgid "required for constraint satisfaction\n"
  msgstr ""
  
! #: cp/error.cc:4185
  #, gcc-internal-format
  msgid "in requirements with "
  msgstr ""
  
! #: cp/error.cc:4186
  #, fuzzy, gcc-internal-format
  #| msgid "no arguments"
  msgid "in requirements "
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: cp/error.cc:4304
  #, fuzzy, gcc-internal-format
  #| msgid "no arguments"
  msgid "(no argument)"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: cp/error.cc:4398
  #, gcc-internal-format
  msgid "[...]"
  msgstr ""
  
! #: cp/error.cc:4750
  #, gcc-internal-format
  msgid "extended initializer lists only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4755
  #, gcc-internal-format
  msgid "explicit conversion operators only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4760
  #, gcc-internal-format
  msgid "variadic templates only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4765
  #, gcc-internal-format
  msgid "lambda expressions only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4770
  #, gcc-internal-format
  msgid "C++11 auto only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4775
  #, gcc-internal-format
  msgid "scoped enums only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4780
  #, gcc-internal-format
  msgid "defaulted and deleted functions only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4786
  #, gcc-internal-format
  msgid "inline namespaces only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4791
  #, gcc-internal-format
  msgid "override controls (override/final) only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4796
  #, gcc-internal-format
  msgid "non-static data member initializers only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4801
  #, gcc-internal-format
  msgid "user-defined literals only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4806
  #, gcc-internal-format
  msgid "delegating constructors only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4811
  #, gcc-internal-format
  msgid "inheriting constructors only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4817
  #, gcc-internal-format
  msgid "C++11 attributes only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4822
  #, gcc-internal-format
  msgid "ref-qualifiers only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4875
  #, gcc-internal-format
  msgid "incomplete type %qT used in nested name specifier"
  msgstr ""
  
! #: cp/error.cc:4880
  #, fuzzy, gcc-internal-format
  msgid "reference to %<%T::%D%> is ambiguous"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ \"%s\" - %d Ð±Ð°Ð¹Ñ‚"
  
! #: cp/error.cc:4895
  #, gcc-internal-format
  msgid "%qD is not a member of %qT; did you mean %qs?"
  msgstr ""
  
! #: cp/error.cc:4899 cp/typeck.cc:2897
  #, gcc-internal-format
  msgid "%qD is not a member of %qT"
  msgstr ""
  
! #: cp/error.cc:4921
  #, gcc-internal-format
  msgid "%qD is not a member of %qD; did you mean %qs?"
  msgstr ""
  
! #: cp/error.cc:4925 cp/typeck.cc:3492
  #, gcc-internal-format
  msgid "%qD is not a member of %qD"
  msgstr ""
  
! #: cp/error.cc:4936
  #, gcc-internal-format
  msgid "%<::%D%> has not been declared; did you mean %qs?"
  msgstr ""
  
! #: cp/error.cc:4940
  #, gcc-internal-format
  msgid "%<::%D%> has not been declared"
  msgstr ""
--- 60523,60902 ----
  #. no linkage can only be used to declare extern "C"
  #. entities.  Since it's not always an error in the
  #. ISO C++ 90 Standard, we only issue a warning.
! #: cp/decl2.cc:5136
  #, gcc-internal-format
  msgid "unnamed type with no linkage used to declare variable %q#D with linkage"
  msgstr ""
  
! #: cp/decl2.cc:5140
  #, gcc-internal-format
  msgid "unnamed type with no linkage used to declare function %q#D with linkage"
  msgstr ""
  
! #: cp/decl2.cc:5144
  #, gcc-internal-format
  msgid "%q#D does not refer to the unqualified type, so it is not used for linkage"
  msgstr ""
  
! #: cp/decl2.cc:5162
  #, gcc-internal-format
  msgid "%q#D, declared using local type %qT, is used but never defined"
  msgstr ""
  
! #: cp/decl2.cc:5166
  #, gcc-internal-format
  msgid "%q#D, declared using local type %qT, is used but not defined here"
  msgstr ""
  
! #: cp/decl2.cc:5174
  #, gcc-internal-format
  msgid "type %qT with no linkage used to declare variable %q#D with linkage"
  msgstr ""
  
! #: cp/decl2.cc:5177
  #, fuzzy, gcc-internal-format
  msgid "type %qT with no linkage used to declare function %q#D with linkage"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/decl2.cc:5382
  #, fuzzy, gcc-internal-format
  #| msgid "section of `%s' conflicts with previous declaration"
  msgid "mangling of %q#D as %qE conflicts with a previous mangle"
  msgstr "Ñ�ÐµÐºÑ†Ñ‹Ñ� \"%s\" ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÐµ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð¹ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ�Ð¹"
  
! #: cp/decl2.cc:5385
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration `%D'"
  msgid "previous mangling %q#D"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%D'"
  
! #: cp/decl2.cc:5387
  #, gcc-internal-format
  msgid "a later %<-fabi-version=%> (or =0) avoids this error with a change in mangling"
  msgstr ""
  
! #: cp/decl2.cc:5459 cp/decl2.cc:5462
  #, gcc-internal-format
  msgid "the program should also define %qD"
  msgstr ""
  
! #: cp/decl2.cc:5825
  #, fuzzy, gcc-internal-format
  #| msgid "label `%D' used but not defined"
  msgid "inline function %qD used but never defined"
  msgstr "Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ð° `%D' Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ñ‹Ð²Ð°ÐµÑ†Ñ†Ð°, Ð°Ð»Ðµ Ð½Ñ� Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°"
  
! #: cp/decl2.cc:6059
  #, fuzzy, gcc-internal-format
  msgid "default argument missing for parameter %P of %q#D"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� \"%s\" Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½"
  
! #: cp/decl2.cc:6064
  #, gcc-internal-format
  msgid "...following parameter %P which has a default argument"
  msgstr ""
  
! #: cp/decl2.cc:6187
  #, fuzzy, gcc-internal-format
  msgid "implicitly-declared %qD is deprecated"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/decl2.cc:6191
  #, gcc-internal-format
  msgid "because %qT has user-provided %qD"
  msgstr ""
  
  #. We mark a lambda conversion op as deleted if we can't
  #. generate it properly; see maybe_add_lambda_conv_op.
! #: cp/decl2.cc:6364
  #, gcc-internal-format
  msgid "converting lambda that uses %<...%> to function pointer"
  msgstr ""
  
! #: cp/decl2.cc:6373
  #, gcc-internal-format
  msgid "use of deleted function %qD: %s"
  msgstr ""
  
! #: cp/decl2.cc:6377
  #, gcc-internal-format
  msgid "use of deleted function %qD"
  msgstr ""
  
! #: cp/decl2.cc:6425
  #, gcc-internal-format
  msgid "use of function %qD with unsatisfied constraints"
  msgstr ""
  
! #: cp/decl2.cc:6464
  #, gcc-internal-format
  msgid "use of built-in parameter pack %qD outside of a template"
  msgstr ""
  
! #: cp/error.cc:3812
  msgid "    inlined from %qD at %r%s:%d:%d%R"
  msgstr ""
  
! #: cp/error.cc:3817
  #, fuzzy
  #| msgid "In file included from %s:%d"
  msgid "    inlined from %qD at %r%s:%d%R"
  msgstr "Ð£ Ñ„Ð°Ð¹Ð»Ðµ ÑƒÐºÐ»ÑŽÑ‡Ð°Ð½Ñ‹Ð¼ Ð· %s:%d"
  
! #: cp/error.cc:3823
  #, gcc-internal-format
  msgid "    inlined from %qD"
  msgstr ""
  
! #: cp/error.cc:3849
  #, fuzzy, gcc-internal-format
  msgid "In static member function %qD"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/error.cc:3851
  #, fuzzy, gcc-internal-format
  #| msgid "In construct"
  msgid "In copy constructor %qD"
  msgstr "Ð£ ÐºÐ°Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ‹Ñ–"
  
! #: cp/error.cc:3853
  #, fuzzy, gcc-internal-format
  #| msgid "In construct"
  msgid "In constructor %qD"
  msgstr "Ð£ ÐºÐ°Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ‹Ñ–"
  
! #: cp/error.cc:3855
  #, fuzzy, gcc-internal-format
  #| msgid "In construct"
  msgid "In destructor %qD"
  msgstr "Ð£ ÐºÐ°Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ‹Ñ–"
  
! #: cp/error.cc:3857
  #, fuzzy, gcc-internal-format
  #| msgid "In function"
  msgid "In lambda function"
  msgstr "Ð£ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/error.cc:3859
  #, fuzzy, gcc-internal-format
  msgid "In explicit object member function %qD"
  msgstr "Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\":"
  
! #: cp/error.cc:3861
  #, fuzzy, gcc-internal-format
  msgid "In member function %qD"
  msgstr "Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\":"
  
! #: cp/error.cc:3864
  #, fuzzy, gcc-internal-format
  #| msgid "In function"
  msgid "In function %qD"
  msgstr "Ð£ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/error.cc:3891
  msgid "%s%s%sIn substitution of %qS:\n"
  msgstr ""
  
! #: cp/error.cc:3892
  #, fuzzy, gcc-internal-format
  msgid "%s%s%sIn instantiation of %q#D:\n"
  msgstr "Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ†Ñ‹Ñ�"
  
! #: cp/error.cc:3912
  msgid "%r%s:%d:%d:%R   "
  msgstr ""
  
! #: cp/error.cc:3915
  msgid "%r%s:%d:%R   "
  msgstr ""
  
! #: cp/error.cc:4008
  msgid "recursively required by substitution of %qS\n"
  msgstr ""
  
! #: cp/error.cc:4009
  msgid "required by substitution of %qS\n"
  msgstr ""
  
! #: cp/error.cc:4014
  #, gcc-internal-format
  msgid "recursively required from %q#D\n"
  msgstr ""
  
! #: cp/error.cc:4015
  #, gcc-internal-format
  msgid "required from %q#D\n"
  msgstr ""
  
! #: cp/error.cc:4022
  #, gcc-internal-format
  msgid "recursively required from here\n"
  msgstr ""
  
! #: cp/error.cc:4023
  #, fuzzy, gcc-internal-format
  #| msgid "called from here"
  msgid "required from here\n"
  msgstr "Ð²Ñ‹ÐºÐ»Ñ–ÐºÐ°Ð½Ð° Ð°Ð´Ñ�ÑŽÐ»ÑŒ"
  
! #: cp/error.cc:4073
  #, gcc-internal-format, gfc-internal-format
  msgid "[ skipping %d instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]\n"
  msgstr ""
  
! #: cp/error.cc:4125
  #, gcc-internal-format
  msgid "in %<constexpr%> expansion of %qs"
  msgstr ""
  
! #: cp/error.cc:4138
  #, gcc-internal-format
  msgid "required by the constraints of %q#D\n"
  msgstr ""
  
! #: cp/error.cc:4153
  #, gcc-internal-format
  msgid "required for the satisfaction of %qE"
  msgstr ""
  
! #: cp/error.cc:4175
  #, gcc-internal-format
  msgid "required for constraint satisfaction\n"
  msgstr ""
  
! #: cp/error.cc:4206
  #, gcc-internal-format
  msgid "in requirements with "
  msgstr ""
  
! #: cp/error.cc:4207
  #, fuzzy, gcc-internal-format
  #| msgid "no arguments"
  msgid "in requirements "
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: cp/error.cc:4325
  #, fuzzy, gcc-internal-format
  #| msgid "no arguments"
  msgid "(no argument)"
  msgstr "Ð½Ñ�Ð¼Ð° Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž"
  
! #: cp/error.cc:4419
  #, gcc-internal-format
  msgid "[...]"
  msgstr ""
  
! #: cp/error.cc:4771
  #, gcc-internal-format
  msgid "extended initializer lists only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4776
  #, gcc-internal-format
  msgid "explicit conversion operators only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4781
  #, gcc-internal-format
  msgid "variadic templates only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4786
  #, gcc-internal-format
  msgid "lambda expressions only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4791
  #, gcc-internal-format
  msgid "C++11 auto only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4796
  #, gcc-internal-format
  msgid "scoped enums only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4801
  #, gcc-internal-format
  msgid "defaulted and deleted functions only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4807
  #, gcc-internal-format
  msgid "inline namespaces only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4812
  #, gcc-internal-format
  msgid "override controls (override/final) only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4817
  #, gcc-internal-format
  msgid "non-static data member initializers only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4822
  #, gcc-internal-format
  msgid "user-defined literals only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4827
  #, gcc-internal-format
  msgid "delegating constructors only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4832
  #, gcc-internal-format
  msgid "inheriting constructors only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4838
  #, gcc-internal-format
  msgid "C++11 attributes only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4843
  #, gcc-internal-format
  msgid "ref-qualifiers only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4896
  #, gcc-internal-format
  msgid "incomplete type %qT used in nested name specifier"
  msgstr ""
  
! #: cp/error.cc:4901
  #, fuzzy, gcc-internal-format
  msgid "reference to %<%T::%D%> is ambiguous"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ \"%s\" - %d Ð±Ð°Ð¹Ñ‚"
  
! #: cp/error.cc:4916
  #, gcc-internal-format
  msgid "%qD is not a member of %qT; did you mean %qs?"
  msgstr ""
  
! #: cp/error.cc:4920 cp/typeck.cc:2897
  #, gcc-internal-format
  msgid "%qD is not a member of %qT"
  msgstr ""
  
! #: cp/error.cc:4942
  #, gcc-internal-format
  msgid "%qD is not a member of %qD; did you mean %qs?"
  msgstr ""
  
! #: cp/error.cc:4946 cp/typeck.cc:3492
  #, gcc-internal-format
  msgid "%qD is not a member of %qD"
  msgstr ""
  
! #: cp/error.cc:4957
  #, gcc-internal-format
  msgid "%<::%D%> has not been declared; did you mean %qs?"
  msgstr ""
  
! #: cp/error.cc:4961
  #, gcc-internal-format
  msgid "%<::%D%> has not been declared"
  msgstr ""
*************** msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ
*** 61040,61057 ****
  msgid "invalid initializer for array member %q#D"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/init.cc:1158 cp/init.cc:1184 cp/init.cc:2781 cp/method.cc:2648
  #, fuzzy, gcc-internal-format
  msgid "uninitialized const member in %q#T"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
  #: cp/init.cc:1160 cp/init.cc:1178 cp/init.cc:1186 cp/init.cc:2765
! #: cp/init.cc:2794 cp/method.cc:2651 cp/method.cc:2662
  #, fuzzy, gcc-internal-format
  msgid "%q#D should be initialized"
  msgstr "Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\" Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ð½Ñ‹"
  
! #: cp/init.cc:1176 cp/init.cc:2752 cp/method.cc:2659
  #, fuzzy, gcc-internal-format
  msgid "uninitialized reference member in %q#T"
  msgstr "Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
--- 61122,61139 ----
  msgid "invalid initializer for array member %q#D"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/init.cc:1158 cp/init.cc:1184 cp/init.cc:2781 cp/method.cc:2649
  #, fuzzy, gcc-internal-format
  msgid "uninitialized const member in %q#T"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
  #: cp/init.cc:1160 cp/init.cc:1178 cp/init.cc:1186 cp/init.cc:2765
! #: cp/init.cc:2794 cp/method.cc:2652 cp/method.cc:2663
  #, fuzzy, gcc-internal-format
  msgid "%q#D should be initialized"
  msgstr "Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\" Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ð½Ñ‹"
  
! #: cp/init.cc:1176 cp/init.cc:2752 cp/method.cc:2660
  #, fuzzy, gcc-internal-format
  msgid "uninitialized reference member in %q#T"
  msgstr "Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
*************** msgstr ""
*** 61424,61435 ****
  msgid "%<this%> was not captured for this lambda function"
  msgstr ""
  
! #: cp/lambda.cc:1581
  #, gcc-internal-format
  msgid "the mangled name of %qT changed in %<-fabi-version=20%> (GCC 15.1)"
  msgstr ""
  
! #: cp/lambda.cc:1585
  #, gcc-internal-format
  msgid "the mangled name of %qT changes in %<-fabi-version=20%> (GCC 15.1)"
  msgstr ""
--- 61506,61517 ----
  msgid "%<this%> was not captured for this lambda function"
  msgstr ""
  
! #: cp/lambda.cc:1578
  #, gcc-internal-format
  msgid "the mangled name of %qT changed in %<-fabi-version=20%> (GCC 15.1)"
  msgstr ""
  
! #: cp/lambda.cc:1582
  #, gcc-internal-format
  msgid "the mangled name of %qT changes in %<-fabi-version=20%> (GCC 15.1)"
  msgstr ""
*************** msgstr ""
*** 61567,61578 ****
  msgid "mapper exit status %d"
  msgstr ""
  
! #: cp/method.cc:867 cp/method.cc:2601
  #, gcc-internal-format
  msgid "non-static const member %q#D, cannot use default assignment operator"
  msgstr ""
  
! #: cp/method.cc:873 cp/method.cc:2607
  #, gcc-internal-format
  msgid "non-static reference member %q#D, cannot use default assignment operator"
  msgstr ""
--- 61649,61660 ----
  msgid "mapper exit status %d"
  msgstr ""
  
! #: cp/method.cc:867 cp/method.cc:2602
  #, gcc-internal-format
  msgid "non-static const member %q#D, cannot use default assignment operator"
  msgstr ""
  
! #: cp/method.cc:873 cp/method.cc:2608
  #, gcc-internal-format
  msgid "non-static reference member %q#D, cannot use default assignment operator"
  msgstr ""
*************** msgstr ""
*** 61688,61804 ****
  msgid "first argument type %qT of a pointer to member must be a class type or a pointer to a class type"
  msgstr ""
  
! #: cp/method.cc:2524
  #, gcc-internal-format
  msgid "union member %q+D with non-trivial %qD"
  msgstr ""
  
! #: cp/method.cc:2535
  #, gcc-internal-format
  msgid "defaulted destructor calls non-%<constexpr%> %qD"
  msgstr ""
  
! #: cp/method.cc:2536
  #, gcc-internal-format
  msgid "defaulted constructor calls non-%<constexpr%> %qD"
  msgstr ""
  
! #: cp/method.cc:2624
  #, fuzzy, gcc-internal-format
  msgid "initializer for %q#D is invalid"
  msgstr "complex Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð´Ð»Ñ� \"%s\""
  
! #: cp/method.cc:2681
  #, gcc-internal-format
  msgid "defaulted default constructor does not initialize %q#D"
  msgstr ""
  
! #: cp/method.cc:2692
  #, gcc-internal-format
  msgid "copying non-static data member %q#D of rvalue reference type"
  msgstr ""
  
  #. A trivial constructor doesn't have any NSDMI.
! #: cp/method.cc:2910
  #, gcc-internal-format
  msgid "defaulted default constructor does not initialize any non-static data member"
  msgstr ""
  
! #: cp/method.cc:2954
  #, gcc-internal-format
  msgid "defaulted move assignment for %qT calls a non-trivial move assignment operator for virtual base %qT"
  msgstr ""
  
! #: cp/method.cc:3086
  #, gcc-internal-format
  msgid "a lambda closure type has a deleted default constructor"
  msgstr ""
  
! #: cp/method.cc:3089
  #, gcc-internal-format
  msgid "a lambda closure type has a deleted copy assignment operator"
  msgstr ""
  
! #: cp/method.cc:3098
  #, gcc-internal-format
  msgid "%q#D is implicitly declared as deleted because %qT declares a move constructor or move assignment operator"
  msgstr ""
  
! #: cp/method.cc:3109
  #, gcc-internal-format
  msgid "%q#D inherits from multiple base subobjects"
  msgstr ""
  
! #: cp/method.cc:3117 cp/method.cc:3141
  #, gcc-internal-format
  msgid "%q#D is implicitly deleted because the default definition would be ill-formed:"
  msgstr ""
  
! #: cp/method.cc:3150
  msgid "%q#F is implicitly deleted because its exception-specification does not match the implicit exception-specification %qX"
  msgstr ""
  
! #: cp/method.cc:3573
  #, gcc-internal-format
  msgid "explicitly defaulted copy constructor is implicitly deleted because its declared type does not match the type of an implicit copy constructor"
  msgstr ""
  
! #: cp/method.cc:3578
  #, gcc-internal-format
  msgid "explicitly defaulted move constructor is implicitly deleted because its declared type does not match the type of an implicit move constructor"
  msgstr ""
  
! #: cp/method.cc:3583
  #, gcc-internal-format
  msgid "explicitly defaulted copy assignment operator is implicitly deleted because its declared type does not match the type of an implicit copy assignment operator"
  msgstr ""
  
! #: cp/method.cc:3588
  #, gcc-internal-format
  msgid "explicitly defaulted move assignment operator is implicitly deleted because its declared type does not match the type of an implicit move assignment operator"
  msgstr ""
  
! #: cp/method.cc:3597
  #, gcc-internal-format
  msgid "expected signature: %qD"
  msgstr ""
  
! #: cp/method.cc:3695
  #, gcc-internal-format
  msgid "explicitly defaulted function %q+D cannot be declared %qs because the implicit declaration is not %qs:"
  msgstr ""
  
! #: cp/method.cc:3715
  #, fuzzy, gcc-internal-format
  msgid "a template cannot be defaulted"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/method.cc:3754
  #, fuzzy, gcc-internal-format
  msgid "%qD cannot be defaulted"
  msgstr "YYDEBUG Ð½Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½."
  
! #: cp/method.cc:3763
  #, gcc-internal-format
  msgid "defaulted function %q+D with default argument"
  msgstr ""
--- 61770,61886 ----
  msgid "first argument type %qT of a pointer to member must be a class type or a pointer to a class type"
  msgstr ""
  
! #: cp/method.cc:2525
  #, gcc-internal-format
  msgid "union member %q+D with non-trivial %qD"
  msgstr ""
  
! #: cp/method.cc:2536
  #, gcc-internal-format
  msgid "defaulted destructor calls non-%<constexpr%> %qD"
  msgstr ""
  
! #: cp/method.cc:2537
  #, gcc-internal-format
  msgid "defaulted constructor calls non-%<constexpr%> %qD"
  msgstr ""
  
! #: cp/method.cc:2625
  #, fuzzy, gcc-internal-format
  msgid "initializer for %q#D is invalid"
  msgstr "complex Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð´Ð»Ñ� \"%s\""
  
! #: cp/method.cc:2682
  #, gcc-internal-format
  msgid "defaulted default constructor does not initialize %q#D"
  msgstr ""
  
! #: cp/method.cc:2693
  #, gcc-internal-format
  msgid "copying non-static data member %q#D of rvalue reference type"
  msgstr ""
  
  #. A trivial constructor doesn't have any NSDMI.
! #: cp/method.cc:2911
  #, gcc-internal-format
  msgid "defaulted default constructor does not initialize any non-static data member"
  msgstr ""
  
! #: cp/method.cc:2955
  #, gcc-internal-format
  msgid "defaulted move assignment for %qT calls a non-trivial move assignment operator for virtual base %qT"
  msgstr ""
  
! #: cp/method.cc:3087
  #, gcc-internal-format
  msgid "a lambda closure type has a deleted default constructor"
  msgstr ""
  
! #: cp/method.cc:3090
  #, gcc-internal-format
  msgid "a lambda closure type has a deleted copy assignment operator"
  msgstr ""
  
! #: cp/method.cc:3099
  #, gcc-internal-format
  msgid "%q#D is implicitly declared as deleted because %qT declares a move constructor or move assignment operator"
  msgstr ""
  
! #: cp/method.cc:3110
  #, gcc-internal-format
  msgid "%q#D inherits from multiple base subobjects"
  msgstr ""
  
! #: cp/method.cc:3118 cp/method.cc:3142
  #, gcc-internal-format
  msgid "%q#D is implicitly deleted because the default definition would be ill-formed:"
  msgstr ""
  
! #: cp/method.cc:3151
  msgid "%q#F is implicitly deleted because its exception-specification does not match the implicit exception-specification %qX"
  msgstr ""
  
! #: cp/method.cc:3574
  #, gcc-internal-format
  msgid "explicitly defaulted copy constructor is implicitly deleted because its declared type does not match the type of an implicit copy constructor"
  msgstr ""
  
! #: cp/method.cc:3579
  #, gcc-internal-format
  msgid "explicitly defaulted move constructor is implicitly deleted because its declared type does not match the type of an implicit move constructor"
  msgstr ""
  
! #: cp/method.cc:3584
  #, gcc-internal-format
  msgid "explicitly defaulted copy assignment operator is implicitly deleted because its declared type does not match the type of an implicit copy assignment operator"
  msgstr ""
  
! #: cp/method.cc:3589
  #, gcc-internal-format
  msgid "explicitly defaulted move assignment operator is implicitly deleted because its declared type does not match the type of an implicit move assignment operator"
  msgstr ""
  
! #: cp/method.cc:3598
  #, gcc-internal-format
  msgid "expected signature: %qD"
  msgstr ""
  
! #: cp/method.cc:3696
  #, gcc-internal-format
  msgid "explicitly defaulted function %q+D cannot be declared %qs because the implicit declaration is not %qs:"
  msgstr ""
  
! #: cp/method.cc:3716
  #, fuzzy, gcc-internal-format
  msgid "a template cannot be defaulted"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/method.cc:3755
  #, fuzzy, gcc-internal-format
  msgid "%qD cannot be defaulted"
  msgstr "YYDEBUG Ð½Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½."
  
! #: cp/method.cc:3764
  #, gcc-internal-format
  msgid "defaulted function %q+D with default argument"
  msgstr ""
*************** msgstr ""
*** 61833,62275 ****
  msgid "unable to represent further imported source locations"
  msgstr ""
  
! #: cp/module.cc:12044
  #, gcc-internal-format
  msgid "mismatching abi tags for %qD with tags %qE"
  msgstr ""
  
! #: cp/module.cc:12048
  #, gcc-internal-format
  msgid "mismatching abi tags for %qD with no tags"
  msgstr ""
  
! #: cp/module.cc:12051
  #, gcc-internal-format
  msgid "existing declaration here with tags %qE"
  msgstr ""
  
! #: cp/module.cc:12054
  #, fuzzy, gcc-internal-format
  msgid "existing declaration here with no tags"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/module.cc:12105 cp/module.cc:12229
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with previous declaration `%#D'"
  msgid "conflicting type for imported declaration %#qD"
  msgstr "ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ–Ð¼ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½ÐµÐ¼ `%#D'"
  
! #: cp/module.cc:12114
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with previous declaration `%#D'"
  msgid "conflicting language linkage for imported declaration %#qD"
  msgstr "ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ–Ð¼ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½ÐµÐ¼ `%#D'"
  
! #: cp/module.cc:12126
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with previous declaration `%#D'"
  msgid "conflicting argument list for imported declaration %#qD"
  msgstr "ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ–Ð¼ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½ÐµÐ¼ `%#D'"
  
! #: cp/module.cc:12133
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with previous declaration `%#D'"
  msgid "conflicting argument types for imported declaration %#qD"
  msgstr "ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ–Ð¼ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½ÐµÐ¼ `%#D'"
  
! #: cp/module.cc:12171
  #, gcc-internal-format
  msgid "conflicting %<noexcept%> specifier for imported declaration %#qD"
  msgstr ""
  
! #: cp/module.cc:12189
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with previous declaration `%#D'"
  msgid "conflicting deduced return type for imported declaration %#qD"
  msgstr "ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ–Ð¼ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½ÐµÐ¼ `%#D'"
  
! #: cp/module.cc:12204
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with previous declaration `%#D'"
  msgid "conflicting %<constexpr%> for imported declaration %#qD"
  msgstr "ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ–Ð¼ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½ÐµÐ¼ `%#D'"
  
! #: cp/module.cc:12220
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with previous declaration `%#D'"
  msgid "conflicting imported declaration %q#D"
  msgstr "ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ–Ð¼ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½ÐµÐ¼ `%#D'"
  
! #: cp/module.cc:12246
  #, fuzzy, gcc-internal-format
  #| msgid "in declaration `%D'"
  msgid "existing declaration %#qD"
  msgstr "Ñƒ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ñ–  `%D'"
  
! #: cp/module.cc:12349
  #, fuzzy, gcc-internal-format
  msgid "conflicting default argument for %#qD"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/module.cc:12351 cp/module.cc:12378
  #, gcc-internal-format
  msgid "existing default declared here"
  msgstr ""
  
! #: cp/module.cc:12375
  #, fuzzy, gcc-internal-format
  msgid "conflicting default argument for parameter %P of %#qD"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/module.cc:13434
  #, gcc-internal-format
  msgid "definition of %qD does not match"
  msgstr ""
  
! #: cp/module.cc:13436
  #, fuzzy, gcc-internal-format
  #| msgid "previous definition here"
  msgid "existing definition %qD"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: cp/module.cc:13448
  #, gcc-internal-format
  msgid "enumerator %qD does not match ..."
  msgstr ""
  
! #: cp/module.cc:13450
  #, gcc-internal-format
  msgid "... this enumerator %qD"
  msgstr ""
  
! #: cp/module.cc:13456
  #, gcc-internal-format
  msgid "additional enumerators beginning with %qD"
  msgstr ""
  
! #: cp/module.cc:13460
  #, gcc-internal-format
  msgid "enumeration range differs"
  msgstr ""
  
! #: cp/module.cc:13673
  #, gcc-internal-format
  msgid "%qD is an alias of TU-local type %qT"
  msgstr ""
  
! #: cp/module.cc:13691
  #, gcc-internal-format
  msgid "%qD is a specialization of TU-local template %qD"
  msgstr ""
  
! #: cp/module.cc:13715
  #, gcc-internal-format
  msgid "%qD declared with internal linkage"
  msgstr ""
  
! #: cp/module.cc:13733
  #, gcc-internal-format
  msgid "%qD has no linkage and is declared in an anonymous namespace"
  msgstr ""
  
! #: cp/module.cc:13745
  #, gcc-internal-format
  msgid "%qD has no linkage and is declared within TU-local entity %qT"
  msgstr ""
  
! #: cp/module.cc:13756
  #, gcc-internal-format
  msgid "%qD has no linkage and is declared within TU-local entity %qD"
  msgstr ""
  
! #: cp/module.cc:13788
  #, gcc-internal-format
  msgid "%qT has no name and cannot be differentiated from similar lambdas in other TUs"
  msgstr ""
  
! #: cp/module.cc:13797
  #, gcc-internal-format
  msgid "%qT has no name and is not defined within a class, function, or initializer"
  msgstr ""
  
! #: cp/module.cc:13833
  #, gcc-internal-format
  msgid "%qD has TU-local template argument %qD"
  msgstr ""
  
! #: cp/module.cc:13845
  #, gcc-internal-format
  msgid "%qD has TU-local template argument %qT"
  msgstr ""
  
! #: cp/module.cc:13897
  #, gcc-internal-format
  msgid "%qD refers to TU-local object %qD"
  msgstr ""
  
! #: cp/module.cc:13899
  #, gcc-internal-format
  msgid "%qD refers to TU-local function %qD"
  msgstr ""
  
! #: cp/module.cc:15021
  #, gcc-internal-format
  msgid "%qD exposes TU-local entity %qD"
  msgstr ""
  
! #: cp/module.cc:15032
  #, gcc-internal-format
  msgid "%qD is declared %<constexpr%> and is initialized to a TU-local value"
  msgstr ""
  
! #: cp/module.cc:15070
  #, gcc-internal-format
  msgid "%qD refers to TU-local entity %qD and cannot be instantiated in other TUs"
  msgstr ""
  
! #: cp/module.cc:15667
  #, gcc-internal-format
  msgid "recursive lazy load"
  msgstr ""
  
! #: cp/module.cc:15687
  #, gcc-internal-format
  msgid "cannot import module in its own purview"
  msgstr ""
  
! #: cp/module.cc:15688 cp/module.cc:21270
  #, gcc-internal-format
  msgid "module %qs declared here"
  msgstr ""
  
! #: cp/module.cc:16037
  #, gcc-internal-format
  msgid "indirect import %qs is not already loaded"
  msgstr ""
  
! #: cp/module.cc:16043
  #, gcc-internal-format
  msgid "import %qs has CRC mismatch"
  msgstr ""
  
! #: cp/module.cc:18810
  #, gcc-internal-format
  msgid "not exporting %<#define %E%> as it is a keyword"
  msgstr ""
  
! #: cp/module.cc:19050
  #, gcc-internal-format
  msgid "macro definitions of %qE corrupted"
  msgstr ""
  
! #: cp/module.cc:19075 cp/module.cc:19078
  #, gcc-internal-format
  msgid "inconsistent imported macro definition %qE"
  msgstr ""
  
! #: cp/module.cc:19084
  #, gcc-internal-format
  msgid "%<#undef %E%>"
  msgstr ""
  
! #: cp/module.cc:19086
  #, gcc-internal-format
  msgid "%<#define %s%>"
  msgstr ""
  
! #: cp/module.cc:19418
  #, gcc-internal-format
  msgid "compiled module file is %qs"
  msgstr ""
  
! #: cp/module.cc:19456 cp/module.cc:19461
  #, gcc-internal-format, gfc-internal-format
  msgid "compiled module is %sversion %s"
  msgstr ""
  
! #: cp/module.cc:19467
  #, gcc-internal-format, gfc-internal-format
  msgid "compiler is %sversion %s%s%s"
  msgstr ""
  
! #: cp/module.cc:19497
  #, gcc-internal-format
  msgid "module %qs found"
  msgstr ""
  
! #: cp/module.cc:19499
  #, gcc-internal-format
  msgid "header module expected, module %qs found"
  msgstr ""
  
! #: cp/module.cc:19500
  #, gcc-internal-format
  msgid "module %qs expected, header module found"
  msgstr ""
  
! #: cp/module.cc:19515
  #, gcc-internal-format
  msgid "module %qs CRC mismatch"
  msgstr ""
  
! #: cp/module.cc:19529
  #, gcc-internal-format
  msgid "target & host is %qs:%qs, expected %qs:%qs"
  msgstr ""
  
! #: cp/module.cc:19541
  #, gcc-internal-format
  msgid "language dialect differs %qs, expected %qs"
  msgstr ""
  
! #: cp/module.cc:19561
  #, gcc-internal-format
  msgid "module contains OpenMP, use %<-fopenmp%> to enable"
  msgstr ""
  
! #: cp/module.cc:19563
  #, gcc-internal-format
  msgid "module contains OpenMP, use %<-fopenmp%> or %<-fopenmp-simd%> to enable"
  msgstr ""
  
! #: cp/module.cc:19566
  #, gcc-internal-format
  msgid "module contains OpenACC, use %<-fopenacc%> to enable"
  msgstr ""
  
! #: cp/module.cc:19584
  #, fuzzy, gcc-internal-format
  msgid "fixed tree mismatch"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/module.cc:19675
  #, gcc-internal-format
  msgid "interface partition is not exported"
  msgstr ""
  
! #: cp/module.cc:20232
  #, gcc-internal-format, gfc-internal-format
  msgid "failed to read compiled module cluster %u: %s"
  msgstr ""
  
! #: cp/module.cc:20271
  #, gcc-internal-format, gfc-internal-format
  msgid "failed to read compiled module: %s"
  msgstr ""
  
! #: cp/module.cc:20281
  #, gcc-internal-format
  msgid "consider using %<-fno-module-lazy%>, increasing %<-param-lazy-modules=%u%> value, or increasing the per-process file descriptor limit"
  msgstr ""
  
! #: cp/module.cc:20286
  #, gcc-internal-format
  msgid "imports must be built before being imported"
  msgstr ""
  
! #: cp/module.cc:20289
  #, gcc-internal-format
  msgid "returning to the gate for a mechanical issue"
  msgstr ""
  
! #: cp/module.cc:20610
  #, gcc-internal-format
  msgid "declaring %qD in module %qs conflicts with builtin in global module"
  msgstr ""
  
! #: cp/module.cc:20613
  #, fuzzy, gcc-internal-format
  msgid "declaration %qD conflicts with builtin"
  msgstr "Ñ�ÐµÐºÑ†Ñ‹Ñ� \"%s\" ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÐµ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð¹ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ�Ð¹"
  
! #: cp/module.cc:20619
  #, gcc-internal-format
  msgid "redeclaring %qD in module %qs conflicts with import"
  msgstr ""
  
! #: cp/module.cc:20622
  #, gcc-internal-format
  msgid "redeclaring %qD in global module conflicts with import"
  msgstr ""
  
! #: cp/module.cc:20627
  #, gcc-internal-format
  msgid "import declared attached to module %qs"
  msgstr ""
  
! #: cp/module.cc:20631
  #, gcc-internal-format
  msgid "import declared in global module"
  msgstr ""
  
! #: cp/module.cc:20637
  #, fuzzy, gcc-internal-format
  msgid "conflicting declaration of %qD in module %qs"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/module.cc:20640
  #, gcc-internal-format
  msgid "conflicting declaration of %qD in global module"
  msgstr ""
  
! #: cp/module.cc:20645
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration of `%D'"
  msgid "previously declared in module %qs"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%D'"
  
! #: cp/module.cc:20649
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration of `%D'"
  msgid "previously declared in global module"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%D'"
  
! #: cp/module.cc:20788
  #, gcc-internal-format
  msgid "external linkage definition of %qD in header module must be declared %<inline%>"
  msgstr ""
  
! #: cp/module.cc:20803
  #, gcc-internal-format
  msgid "exporting declaration %qD declared in unnamed namespace"
  msgstr ""
  
! #: cp/module.cc:20810
  #, fuzzy, gcc-internal-format
  msgid "exporting declaration %qD with internal linkage"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/module.cc:20963
  #, gcc-internal-format
  msgid "reading CMI %qs"
  msgstr ""
  
! #: cp/module.cc:21114
  #, gcc-internal-format
  msgid "failed to load binding %<%E%s%E%>"
  msgstr ""
  
! #: cp/module.cc:21115
  #, gcc-internal-format
  msgid "failed to load binding %<%E%s%E@%s%>"
  msgstr ""
  
! #: cp/module.cc:21122
  #, gcc-internal-format
  msgid "during load of binding %<%E%s%E%>"
  msgstr ""
  
! #: cp/module.cc:21123
  #, gcc-internal-format
  msgid "during load of binding %<%E%s%E@%s%>"
  msgstr ""
  
! #: cp/module.cc:21185
  #, gcc-internal-format
  msgid "failed to load pendings for %<%E%s%E%>"
  msgstr ""
  
! #: cp/module.cc:21189
  #, gcc-internal-format
  msgid "during load of pendings for %<%E%s%E%>"
  msgstr ""
--- 61915,62372 ----
  msgid "unable to represent further imported source locations"
  msgstr ""
  
! #: cp/module.cc:6549
! #, gcc-internal-format
! msgid "%<target%> attribute currently unsupported in modules"
! msgstr ""
! 
! #: cp/module.cc:6552
! #, gcc-internal-format
! msgid "%<optimize%> attribute currently unsupported in modules"
! msgstr ""
! 
! #: cp/module.cc:12100
  #, gcc-internal-format
  msgid "mismatching abi tags for %qD with tags %qE"
  msgstr ""
  
! #: cp/module.cc:12104
  #, gcc-internal-format
  msgid "mismatching abi tags for %qD with no tags"
  msgstr ""
  
! #: cp/module.cc:12107
  #, gcc-internal-format
  msgid "existing declaration here with tags %qE"
  msgstr ""
  
! #: cp/module.cc:12110
  #, fuzzy, gcc-internal-format
  msgid "existing declaration here with no tags"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/module.cc:12161 cp/module.cc:12285
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with previous declaration `%#D'"
  msgid "conflicting type for imported declaration %#qD"
  msgstr "ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ–Ð¼ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½ÐµÐ¼ `%#D'"
  
! #: cp/module.cc:12170
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with previous declaration `%#D'"
  msgid "conflicting language linkage for imported declaration %#qD"
  msgstr "ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ–Ð¼ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½ÐµÐ¼ `%#D'"
  
! #: cp/module.cc:12182
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with previous declaration `%#D'"
  msgid "conflicting argument list for imported declaration %#qD"
  msgstr "ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ–Ð¼ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½ÐµÐ¼ `%#D'"
  
! #: cp/module.cc:12189
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with previous declaration `%#D'"
  msgid "conflicting argument types for imported declaration %#qD"
  msgstr "ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ–Ð¼ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½ÐµÐ¼ `%#D'"
  
! #: cp/module.cc:12227
  #, gcc-internal-format
  msgid "conflicting %<noexcept%> specifier for imported declaration %#qD"
  msgstr ""
  
! #: cp/module.cc:12245
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with previous declaration `%#D'"
  msgid "conflicting deduced return type for imported declaration %#qD"
  msgstr "ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ–Ð¼ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½ÐµÐ¼ `%#D'"
  
! #: cp/module.cc:12260
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with previous declaration `%#D'"
  msgid "conflicting %<constexpr%> for imported declaration %#qD"
  msgstr "ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ–Ð¼ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½ÐµÐ¼ `%#D'"
  
! #: cp/module.cc:12276
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with previous declaration `%#D'"
  msgid "conflicting imported declaration %q#D"
  msgstr "ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ–Ð¼ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½ÐµÐ¼ `%#D'"
  
! #: cp/module.cc:12302
  #, fuzzy, gcc-internal-format
  #| msgid "in declaration `%D'"
  msgid "existing declaration %#qD"
  msgstr "Ñƒ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ñ–  `%D'"
  
! #: cp/module.cc:12405
  #, fuzzy, gcc-internal-format
  msgid "conflicting default argument for %#qD"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/module.cc:12407 cp/module.cc:12434
  #, gcc-internal-format
  msgid "existing default declared here"
  msgstr ""
  
! #: cp/module.cc:12431
  #, fuzzy, gcc-internal-format
  msgid "conflicting default argument for parameter %P of %#qD"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/module.cc:13494
  #, gcc-internal-format
  msgid "definition of %qD does not match"
  msgstr ""
  
! #: cp/module.cc:13496
  #, fuzzy, gcc-internal-format
  #| msgid "previous definition here"
  msgid "existing definition %qD"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: cp/module.cc:13508
  #, gcc-internal-format
  msgid "enumerator %qD does not match ..."
  msgstr ""
  
! #: cp/module.cc:13510
  #, gcc-internal-format
  msgid "... this enumerator %qD"
  msgstr ""
  
! #: cp/module.cc:13516
  #, gcc-internal-format
  msgid "additional enumerators beginning with %qD"
  msgstr ""
  
! #: cp/module.cc:13520
  #, gcc-internal-format
  msgid "enumeration range differs"
  msgstr ""
  
! #: cp/module.cc:13733
  #, gcc-internal-format
  msgid "%qD is an alias of TU-local type %qT"
  msgstr ""
  
! #: cp/module.cc:13751
  #, gcc-internal-format
  msgid "%qD is a specialization of TU-local template %qD"
  msgstr ""
  
! #: cp/module.cc:13775
  #, gcc-internal-format
  msgid "%qD declared with internal linkage"
  msgstr ""
  
! #: cp/module.cc:13793
  #, gcc-internal-format
  msgid "%qD has no linkage and is declared in an anonymous namespace"
  msgstr ""
  
! #: cp/module.cc:13805
  #, gcc-internal-format
  msgid "%qD has no linkage and is declared within TU-local entity %qT"
  msgstr ""
  
! #: cp/module.cc:13816
  #, gcc-internal-format
  msgid "%qD has no linkage and is declared within TU-local entity %qD"
  msgstr ""
  
! #: cp/module.cc:13848
  #, gcc-internal-format
  msgid "%qT has no name and cannot be differentiated from similar lambdas in other TUs"
  msgstr ""
  
! #: cp/module.cc:13857
  #, gcc-internal-format
  msgid "%qT has no name and is not defined within a class, function, or initializer"
  msgstr ""
  
! #: cp/module.cc:13893
  #, gcc-internal-format
  msgid "%qD has TU-local template argument %qD"
  msgstr ""
  
! #: cp/module.cc:13905
  #, gcc-internal-format
  msgid "%qD has TU-local template argument %qT"
  msgstr ""
  
! #: cp/module.cc:13957
  #, gcc-internal-format
  msgid "%qD refers to TU-local object %qD"
  msgstr ""
  
! #: cp/module.cc:13959
  #, gcc-internal-format
  msgid "%qD refers to TU-local function %qD"
  msgstr ""
  
! #: cp/module.cc:15089
  #, gcc-internal-format
  msgid "%qD exposes TU-local entity %qD"
  msgstr ""
  
! #: cp/module.cc:15104
  #, gcc-internal-format
  msgid "%qD is declared %<constexpr%> and is initialized to a TU-local value"
  msgstr ""
  
! #: cp/module.cc:15111
! #, gcc-internal-format
! msgid "%qD is a reference declared %<inline%> and is constant-initialized to a TU-local value"
! msgstr ""
! 
! #: cp/module.cc:15150
  #, gcc-internal-format
  msgid "%qD refers to TU-local entity %qD and cannot be instantiated in other TUs"
  msgstr ""
  
! #: cp/module.cc:15747
  #, gcc-internal-format
  msgid "recursive lazy load"
  msgstr ""
  
! #: cp/module.cc:15767
  #, gcc-internal-format
  msgid "cannot import module in its own purview"
  msgstr ""
  
! #: cp/module.cc:15768 cp/module.cc:21350
  #, gcc-internal-format
  msgid "module %qs declared here"
  msgstr ""
  
! #: cp/module.cc:16117
  #, gcc-internal-format
  msgid "indirect import %qs is not already loaded"
  msgstr ""
  
! #: cp/module.cc:16123
  #, gcc-internal-format
  msgid "import %qs has CRC mismatch"
  msgstr ""
  
! #: cp/module.cc:18890
  #, gcc-internal-format
  msgid "not exporting %<#define %E%> as it is a keyword"
  msgstr ""
  
! #: cp/module.cc:19130
  #, gcc-internal-format
  msgid "macro definitions of %qE corrupted"
  msgstr ""
  
! #: cp/module.cc:19155 cp/module.cc:19158
  #, gcc-internal-format
  msgid "inconsistent imported macro definition %qE"
  msgstr ""
  
! #: cp/module.cc:19164
  #, gcc-internal-format
  msgid "%<#undef %E%>"
  msgstr ""
  
! #: cp/module.cc:19166
  #, gcc-internal-format
  msgid "%<#define %s%>"
  msgstr ""
  
! #: cp/module.cc:19498
  #, gcc-internal-format
  msgid "compiled module file is %qs"
  msgstr ""
  
! #: cp/module.cc:19536 cp/module.cc:19541
  #, gcc-internal-format, gfc-internal-format
  msgid "compiled module is %sversion %s"
  msgstr ""
  
! #: cp/module.cc:19547
  #, gcc-internal-format, gfc-internal-format
  msgid "compiler is %sversion %s%s%s"
  msgstr ""
  
! #: cp/module.cc:19577
  #, gcc-internal-format
  msgid "module %qs found"
  msgstr ""
  
! #: cp/module.cc:19579
  #, gcc-internal-format
  msgid "header module expected, module %qs found"
  msgstr ""
  
! #: cp/module.cc:19580
  #, gcc-internal-format
  msgid "module %qs expected, header module found"
  msgstr ""
  
! #: cp/module.cc:19595
  #, gcc-internal-format
  msgid "module %qs CRC mismatch"
  msgstr ""
  
! #: cp/module.cc:19609
  #, gcc-internal-format
  msgid "target & host is %qs:%qs, expected %qs:%qs"
  msgstr ""
  
! #: cp/module.cc:19621
  #, gcc-internal-format
  msgid "language dialect differs %qs, expected %qs"
  msgstr ""
  
! #: cp/module.cc:19641
  #, gcc-internal-format
  msgid "module contains OpenMP, use %<-fopenmp%> to enable"
  msgstr ""
  
! #: cp/module.cc:19643
  #, gcc-internal-format
  msgid "module contains OpenMP, use %<-fopenmp%> or %<-fopenmp-simd%> to enable"
  msgstr ""
  
! #: cp/module.cc:19646
  #, gcc-internal-format
  msgid "module contains OpenACC, use %<-fopenacc%> to enable"
  msgstr ""
  
! #: cp/module.cc:19664
  #, fuzzy, gcc-internal-format
  msgid "fixed tree mismatch"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/module.cc:19755
  #, gcc-internal-format
  msgid "interface partition is not exported"
  msgstr ""
  
! #: cp/module.cc:20312
  #, gcc-internal-format, gfc-internal-format
  msgid "failed to read compiled module cluster %u: %s"
  msgstr ""
  
! #: cp/module.cc:20351
  #, gcc-internal-format, gfc-internal-format
  msgid "failed to read compiled module: %s"
  msgstr ""
  
! #: cp/module.cc:20361
  #, gcc-internal-format
  msgid "consider using %<-fno-module-lazy%>, increasing %<-param-lazy-modules=%u%> value, or increasing the per-process file descriptor limit"
  msgstr ""
  
! #: cp/module.cc:20366
  #, gcc-internal-format
  msgid "imports must be built before being imported"
  msgstr ""
  
! #: cp/module.cc:20369
  #, gcc-internal-format
  msgid "returning to the gate for a mechanical issue"
  msgstr ""
  
! #: cp/module.cc:20690
  #, gcc-internal-format
  msgid "declaring %qD in module %qs conflicts with builtin in global module"
  msgstr ""
  
! #: cp/module.cc:20693
  #, fuzzy, gcc-internal-format
  msgid "declaration %qD conflicts with builtin"
  msgstr "Ñ�ÐµÐºÑ†Ñ‹Ñ� \"%s\" ÐºÐ°Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÐµ Ð· Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð¹ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ�Ð¹"
  
! #: cp/module.cc:20699
  #, gcc-internal-format
  msgid "redeclaring %qD in module %qs conflicts with import"
  msgstr ""
  
! #: cp/module.cc:20702
  #, gcc-internal-format
  msgid "redeclaring %qD in global module conflicts with import"
  msgstr ""
  
! #: cp/module.cc:20707
  #, gcc-internal-format
  msgid "import declared attached to module %qs"
  msgstr ""
  
! #: cp/module.cc:20711
  #, gcc-internal-format
  msgid "import declared in global module"
  msgstr ""
  
! #: cp/module.cc:20717
  #, fuzzy, gcc-internal-format
  msgid "conflicting declaration of %qD in module %qs"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/module.cc:20720
  #, gcc-internal-format
  msgid "conflicting declaration of %qD in global module"
  msgstr ""
  
! #: cp/module.cc:20725
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration of `%D'"
  msgid "previously declared in module %qs"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%D'"
  
! #: cp/module.cc:20729
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration of `%D'"
  msgid "previously declared in global module"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%D'"
  
! #: cp/module.cc:20868
  #, gcc-internal-format
  msgid "external linkage definition of %qD in header module must be declared %<inline%>"
  msgstr ""
  
! #: cp/module.cc:20883
  #, gcc-internal-format
  msgid "exporting declaration %qD declared in unnamed namespace"
  msgstr ""
  
! #: cp/module.cc:20890
  #, fuzzy, gcc-internal-format
  msgid "exporting declaration %qD with internal linkage"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/module.cc:21043
  #, gcc-internal-format
  msgid "reading CMI %qs"
  msgstr ""
  
! #: cp/module.cc:21194
  #, gcc-internal-format
  msgid "failed to load binding %<%E%s%E%>"
  msgstr ""
  
! #: cp/module.cc:21195
  #, gcc-internal-format
  msgid "failed to load binding %<%E%s%E@%s%>"
  msgstr ""
  
! #: cp/module.cc:21202
  #, gcc-internal-format
  msgid "during load of binding %<%E%s%E%>"
  msgstr ""
  
! #: cp/module.cc:21203
  #, gcc-internal-format
  msgid "during load of binding %<%E%s%E@%s%>"
  msgstr ""
  
! #: cp/module.cc:21265
  #, gcc-internal-format
  msgid "failed to load pendings for %<%E%s%E%>"
  msgstr ""
  
! #: cp/module.cc:21269
  #, gcc-internal-format
  msgid "during load of pendings for %<%E%s%E%>"
  msgstr ""
*************** msgstr ""
*** 62281,62385 ****
  #. module, so we don't want to confuse things by having to think
  #. about whether 'extern "C++" { import foo; }' puts foo's
  #. contents into the global module all of a sudden.
! #: cp/module.cc:21234
  #, gcc-internal-format
  msgid "import of named module %qs inside language-linkage block"
  msgstr ""
  
! #: cp/module.cc:21265
  #, gcc-internal-format
  msgid "module already declared"
  msgstr ""
  
! #: cp/module.cc:21266
  #, gcc-internal-format
  msgid "module already imported"
  msgstr ""
  
! #: cp/module.cc:21271
  #, gcc-internal-format
  msgid "module %qs imported here"
  msgstr ""
  
! #: cp/module.cc:21479
  #, gcc-internal-format
  msgid "mismatching compiled module interface: had %qs, got %qs"
  msgstr ""
  
! #: cp/module.cc:21485
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown compiled module interface: %s"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð°: %s"
  
! #: cp/module.cc:21529
  #, gcc-internal-format
  msgid "cannot determine %<#include%> translation of %s: %s"
  msgstr ""
  
! #: cp/module.cc:21547
  #, gcc-internal-format
  msgid "include %qs translated to import"
  msgstr ""
  
! #: cp/module.cc:21548
  #, gcc-internal-format
  msgid "include %qs processed textually"
  msgstr ""
  
! #: cp/module.cc:21908
  #, gcc-internal-format
  msgid "C++ modules are incompatible with precompiled headers"
  msgstr ""
  
! #: cp/module.cc:21912
  #, gcc-internal-format
  msgid "C++ modules are incompatible with traditional preprocessing"
  msgstr ""
  
! #: cp/module.cc:21944 cp/module.cc:21973
  #, fuzzy, gcc-internal-format
  #| msgid "invalid register name for `%s'"
  msgid "invalid header name %qs"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð° `%s'"
  
! #: cp/module.cc:21983
  #, fuzzy, gcc-internal-format
  msgid "invalid module name %qs"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ %s"
  
! #: cp/module.cc:22183
  #, gcc-internal-format
  msgid "%<-fmodule-only%> used for non-interface"
  msgstr ""
  
! #: cp/module.cc:22223
  #, fuzzy, gcc-internal-format
  #| msgid "error writing to %s"
  msgid "writing CMI %qs"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° Ð·Ð°Ð¿Ñ–Ñ�Ñƒ Ñž %s"
  
! #: cp/module.cc:22238
  #, gcc-internal-format
  msgid "not writing module %qs due to errors in template bodies"
  msgstr ""
  
! #: cp/module.cc:22241
  #, gcc-internal-format
  msgid "enable %<-Wtemplate-body%> for more details"
  msgstr ""
  
! #: cp/module.cc:22243
  #, gcc-internal-format
  msgid "first error in %qD appeared here"
  msgstr ""
  
! #: cp/module.cc:22307
  #, gcc-internal-format, gfc-internal-format
  msgid "failed to write compiled module: %s"
  msgstr ""
  
! #: cp/module.cc:22404
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown header kind %qs"
--- 62378,62482 ----
  #. module, so we don't want to confuse things by having to think
  #. about whether 'extern "C++" { import foo; }' puts foo's
  #. contents into the global module all of a sudden.
! #: cp/module.cc:21314
  #, gcc-internal-format
  msgid "import of named module %qs inside language-linkage block"
  msgstr ""
  
! #: cp/module.cc:21345
  #, gcc-internal-format
  msgid "module already declared"
  msgstr ""
  
! #: cp/module.cc:21346
  #, gcc-internal-format
  msgid "module already imported"
  msgstr ""
  
! #: cp/module.cc:21351
  #, gcc-internal-format
  msgid "module %qs imported here"
  msgstr ""
  
! #: cp/module.cc:21559
  #, gcc-internal-format
  msgid "mismatching compiled module interface: had %qs, got %qs"
  msgstr ""
  
! #: cp/module.cc:21565
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown compiled module interface: %s"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð°: %s"
  
! #: cp/module.cc:21609
  #, gcc-internal-format
  msgid "cannot determine %<#include%> translation of %s: %s"
  msgstr ""
  
! #: cp/module.cc:21627
  #, gcc-internal-format
  msgid "include %qs translated to import"
  msgstr ""
  
! #: cp/module.cc:21628
  #, gcc-internal-format
  msgid "include %qs processed textually"
  msgstr ""
  
! #: cp/module.cc:21988
  #, gcc-internal-format
  msgid "C++ modules are incompatible with precompiled headers"
  msgstr ""
  
! #: cp/module.cc:21992
  #, gcc-internal-format
  msgid "C++ modules are incompatible with traditional preprocessing"
  msgstr ""
  
! #: cp/module.cc:22024 cp/module.cc:22053
  #, fuzzy, gcc-internal-format
  #| msgid "invalid register name for `%s'"
  msgid "invalid header name %qs"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ñ� Ð½Ð°Ð·Ð²Ð° Ñ€Ñ�Ð³Ñ–Ñ�Ñ‚Ñ€Ð° `%s'"
  
! #: cp/module.cc:22063
  #, fuzzy, gcc-internal-format
  msgid "invalid module name %qs"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ %s"
  
! #: cp/module.cc:22263
  #, gcc-internal-format
  msgid "%<-fmodule-only%> used for non-interface"
  msgstr ""
  
! #: cp/module.cc:22303
  #, fuzzy, gcc-internal-format
  #| msgid "error writing to %s"
  msgid "writing CMI %qs"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° Ð·Ð°Ð¿Ñ–Ñ�Ñƒ Ñž %s"
  
! #: cp/module.cc:22318
  #, gcc-internal-format
  msgid "not writing module %qs due to errors in template bodies"
  msgstr ""
  
! #: cp/module.cc:22321
  #, gcc-internal-format
  msgid "enable %<-Wtemplate-body%> for more details"
  msgstr ""
  
! #: cp/module.cc:22323
  #, gcc-internal-format
  msgid "first error in %qD appeared here"
  msgstr ""
  
! #: cp/module.cc:22387
  #, gcc-internal-format, gfc-internal-format
  msgid "failed to write compiled module: %s"
  msgstr ""
  
! #: cp/module.cc:22484
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown header kind %qs"
*************** msgstr ""
*** 62437,62690 ****
  msgid "friend declaration %qD in local class without prior local declaration"
  msgstr ""
  
! #: cp/name-lookup.cc:4653
  #, gcc-internal-format
  msgid "%s %<%s(%E)%> %p %d"
  msgstr ""
  
! #: cp/name-lookup.cc:4656
  #, gcc-internal-format
  msgid "%s %s %p %d"
  msgstr ""
  
! #: cp/name-lookup.cc:5252
  #, gcc-internal-format
  msgid "exporting %q#D that does not have external linkage"
  msgstr ""
  
! #: cp/name-lookup.cc:5256
  #, gcc-internal-format
  msgid "%q#D declared here with no linkage"
  msgstr ""
  
! #: cp/name-lookup.cc:5259
  #, gcc-internal-format
  msgid "%q#D declared here with internal linkage"
  msgstr ""
  
! #: cp/name-lookup.cc:5262
  #, gcc-internal-format
  msgid "%q#D declared here with module linkage"
  msgstr ""
  
! #: cp/name-lookup.cc:6070
  #, gcc-internal-format
  msgid "%<%T%s%D%> names destructor"
  msgstr ""
  
! #: cp/name-lookup.cc:6086
  #, gcc-internal-format
  msgid "using-declaration for non-member at class scope"
  msgstr ""
  
! #: cp/name-lookup.cc:6094
  #, gcc-internal-format
  msgid "%<using%> with enumeration scope %q#T only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/name-lookup.cc:6110 cp/pt.cc:18933
  #, gcc-internal-format
  msgid "%qT is not a class, namespace, or enumeration"
  msgstr ""
  
! #: cp/name-lookup.cc:6120
  #, gcc-internal-format
  msgid "non-member using-declaration names constructor of %qT"
  msgstr ""
  
! #: cp/name-lookup.cc:6131 cp/name-lookup.cc:6204
  #, gcc-internal-format
  msgid "using-declaration for member at non-class scope"
  msgstr ""
  
! #: cp/name-lookup.cc:6154
  #, fuzzy, gcc-internal-format
  #| msgid "%s: Not a directory"
  msgid "%qT is not a direct base of %qT"
  msgstr "%s: Ð½Ðµ Ð´Ñ‹Ñ€Ñ�ÐºÑ‚Ð¾Ñ€Ñ‹Ñ�"
  
! #: cp/name-lookup.cc:6214
  #, gcc-internal-format
  msgid "did you mean %<using enum %T::%D%>?"
  msgstr ""
  
! #: cp/name-lookup.cc:6226
  #, fuzzy, gcc-internal-format
  msgid "%qD has not been declared in %qD"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/name-lookup.cc:6241
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of template `%#D'"
  msgid "using-declaration may not name namespace %qD"
  msgstr "Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ ÑˆÐ°Ð±Ð»Ñ‘Ð½Ñƒ `%#D'"
  
! #: cp/name-lookup.cc:6252
  #, fuzzy, gcc-internal-format
  msgid "%<%T::%D%> names constructor in %qT"
  msgstr "Ð´Ñ�Ñ�Ñ‚Ñ€ÑƒÐºÑ‚Ð°Ñ€Ñƒ Ð½ÐµÐ°Ð±Ñ…Ð¾Ð´Ð½Ñ‹ \"%#D\""
  
! #: cp/name-lookup.cc:6345
  #, gcc-internal-format
  msgid "declaration of %qD not in a namespace surrounding %qD"
  msgstr ""
  
! #: cp/name-lookup.cc:6387
  #, fuzzy, gcc-internal-format
  msgid "explicit qualification in declaration of %qD"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/name-lookup.cc:6397
  #, gcc-internal-format
  msgid "%qD should have been declared inside %qD"
  msgstr ""
  
! #: cp/name-lookup.cc:6467
  #, fuzzy, gcc-internal-format
  msgid "%qD has not been declared within %qD"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/name-lookup.cc:6469
  #, gcc-internal-format
  msgid "only here as a %<friend%>"
  msgstr ""
  
! #: cp/name-lookup.cc:6523
  #, gcc-internal-format
  msgid "%qD attribute requires a single NTBS argument"
  msgstr ""
  
! #: cp/name-lookup.cc:6530
  #, gcc-internal-format
  msgid "%qD attribute is meaningless since members of the anonymous namespace get local symbols"
  msgstr ""
  
! #: cp/name-lookup.cc:6540 cp/name-lookup.cc:6567
  #, gcc-internal-format
  msgid "ignoring %qD attribute on anonymous namespace"
  msgstr ""
  
! #: cp/name-lookup.cc:6546
  #, gcc-internal-format
  msgid "ignoring %qD attribute on non-inline namespace"
  msgstr ""
  
! #: cp/name-lookup.cc:6583 cp/name-lookup.cc:9004
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute ignored"
  msgid "%qD attribute directive ignored"
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
! #: cp/name-lookup.cc:6912
  #, gcc-internal-format
  msgid "maximum limit of %d namespaces searched for %qE"
  msgstr ""
  
! #: cp/name-lookup.cc:6964
  #, gcc-internal-format
  msgid "suggested alternative:"
  msgid_plural "suggested alternatives:"
  msgstr[0] ""
  msgstr[1] ""
  
! #: cp/name-lookup.cc:6970
  #, gcc-internal-format
  msgid "  %qE"
  msgstr ""
  
! #: cp/name-lookup.cc:7295
  #, gcc-internal-format
  msgid "%<std::%s%> is defined in header %qs; this is probably fixable by adding %<#include %s%>"
  msgstr ""
  
! #: cp/name-lookup.cc:7301
  #, gcc-internal-format
  msgid "%<std::%s%> is only available from %s onwards"
  msgstr ""
  
! #: cp/name-lookup.cc:7739
  #, gcc-internal-format
  msgid "the macro %qs had not yet been defined"
  msgstr ""
  
! #: cp/name-lookup.cc:7742
  #, gcc-internal-format
  msgid "it was later defined here"
  msgstr ""
  
! #: cp/name-lookup.cc:8538
  #, gcc-internal-format
  msgid "declaration of %<std::initializer_list%> does not match %<#include <initializer_list>%>, isn%'t a template"
  msgstr ""
  
! #: cp/name-lookup.cc:8976
  #, gcc-internal-format
  msgid "%<strong%> using directive no longer supported"
  msgstr ""
  
! #: cp/name-lookup.cc:8979
  #, gcc-internal-format
  msgid "you can use an inline namespace instead"
  msgstr ""
  
! #: cp/name-lookup.cc:8998
  #, gcc-internal-format
  msgid "%<omp::%E%> not allowed to be specified in this context"
  msgstr ""
  
  #. We only allow depth 255.
! #: cp/name-lookup.cc:9090
  #, gcc-internal-format, gfc-internal-format
  msgid "cannot nest more than %d namespaces"
  msgstr ""
  
! #: cp/name-lookup.cc:9192
  #, fuzzy, gcc-internal-format
  msgid "%<namespace %E%> is ambiguous"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ \"%s\" - %d Ð±Ð°Ð¹Ñ‚"
  
! #: cp/name-lookup.cc:9208
  #, fuzzy, gcc-internal-format
  msgid "namespace alias %qD not allowed here, assuming %qD"
  msgstr "\"%s\" - Ð³Ñ�Ñ‚Ð° Ð½Ðµ Ð¿Ð°Ñ‡Ð°Ñ‚Ð°Ðº Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ–"
  
! #: cp/name-lookup.cc:9291
  #, gcc-internal-format
  msgid "exporting namespace %qD with internal linkage"
  msgstr ""
  
! #: cp/name-lookup.cc:9293
  #, gcc-internal-format
  msgid "%qD has internal linkage because it was declared in an unnamed namespace"
  msgstr ""
  
! #: cp/name-lookup.cc:9297
  #, gcc-internal-format
  msgid "exporting unnamed namespace"
  msgstr ""
  
! #: cp/name-lookup.cc:9307
  #, gcc-internal-format
  msgid "inline namespace must be specified at initial definition"
  msgstr ""
  
! #: cp/name-lookup.cc:9357
  #, gcc-internal-format
  msgid "%s namespace %qD conflicts with reachable definition"
  msgstr ""
  
! #: cp/name-lookup.cc:9359
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "previous definition here"
  msgid "reachable %s definition here"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: cp/name-lookup.cc:9402
  #, gcc-internal-format
  msgid "XXX entering %<pop_everything ()%>"
  msgstr ""
  
! #: cp/name-lookup.cc:9411
  #, gcc-internal-format
  msgid "XXX leaving %<pop_everything ()%>"
  msgstr ""
--- 62534,62787 ----
  msgid "friend declaration %qD in local class without prior local declaration"
  msgstr ""
  
! #: cp/name-lookup.cc:4656
  #, gcc-internal-format
  msgid "%s %<%s(%E)%> %p %d"
  msgstr ""
  
! #: cp/name-lookup.cc:4659
  #, gcc-internal-format
  msgid "%s %s %p %d"
  msgstr ""
  
! #: cp/name-lookup.cc:5255
  #, gcc-internal-format
  msgid "exporting %q#D that does not have external linkage"
  msgstr ""
  
! #: cp/name-lookup.cc:5259
  #, gcc-internal-format
  msgid "%q#D declared here with no linkage"
  msgstr ""
  
! #: cp/name-lookup.cc:5262
  #, gcc-internal-format
  msgid "%q#D declared here with internal linkage"
  msgstr ""
  
! #: cp/name-lookup.cc:5265
  #, gcc-internal-format
  msgid "%q#D declared here with module linkage"
  msgstr ""
  
! #: cp/name-lookup.cc:6073
  #, gcc-internal-format
  msgid "%<%T%s%D%> names destructor"
  msgstr ""
  
! #: cp/name-lookup.cc:6089
  #, gcc-internal-format
  msgid "using-declaration for non-member at class scope"
  msgstr ""
  
! #: cp/name-lookup.cc:6097
  #, gcc-internal-format
  msgid "%<using%> with enumeration scope %q#T only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/name-lookup.cc:6113 cp/pt.cc:18962
  #, gcc-internal-format
  msgid "%qT is not a class, namespace, or enumeration"
  msgstr ""
  
! #: cp/name-lookup.cc:6123
  #, gcc-internal-format
  msgid "non-member using-declaration names constructor of %qT"
  msgstr ""
  
! #: cp/name-lookup.cc:6134 cp/name-lookup.cc:6207
  #, gcc-internal-format
  msgid "using-declaration for member at non-class scope"
  msgstr ""
  
! #: cp/name-lookup.cc:6157
  #, fuzzy, gcc-internal-format
  #| msgid "%s: Not a directory"
  msgid "%qT is not a direct base of %qT"
  msgstr "%s: Ð½Ðµ Ð´Ñ‹Ñ€Ñ�ÐºÑ‚Ð¾Ñ€Ñ‹Ñ�"
  
! #: cp/name-lookup.cc:6217
  #, gcc-internal-format
  msgid "did you mean %<using enum %T::%D%>?"
  msgstr ""
  
! #: cp/name-lookup.cc:6229
  #, fuzzy, gcc-internal-format
  msgid "%qD has not been declared in %qD"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/name-lookup.cc:6244
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of template `%#D'"
  msgid "using-declaration may not name namespace %qD"
  msgstr "Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ ÑˆÐ°Ð±Ð»Ñ‘Ð½Ñƒ `%#D'"
  
! #: cp/name-lookup.cc:6255
  #, fuzzy, gcc-internal-format
  msgid "%<%T::%D%> names constructor in %qT"
  msgstr "Ð´Ñ�Ñ�Ñ‚Ñ€ÑƒÐºÑ‚Ð°Ñ€Ñƒ Ð½ÐµÐ°Ð±Ñ…Ð¾Ð´Ð½Ñ‹ \"%#D\""
  
! #: cp/name-lookup.cc:6348
  #, gcc-internal-format
  msgid "declaration of %qD not in a namespace surrounding %qD"
  msgstr ""
  
! #: cp/name-lookup.cc:6390
  #, fuzzy, gcc-internal-format
  msgid "explicit qualification in declaration of %qD"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/name-lookup.cc:6400
  #, gcc-internal-format
  msgid "%qD should have been declared inside %qD"
  msgstr ""
  
! #: cp/name-lookup.cc:6470
  #, fuzzy, gcc-internal-format
  msgid "%qD has not been declared within %qD"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/name-lookup.cc:6472
  #, gcc-internal-format
  msgid "only here as a %<friend%>"
  msgstr ""
  
! #: cp/name-lookup.cc:6526
  #, gcc-internal-format
  msgid "%qD attribute requires a single NTBS argument"
  msgstr ""
  
! #: cp/name-lookup.cc:6533
  #, gcc-internal-format
  msgid "%qD attribute is meaningless since members of the anonymous namespace get local symbols"
  msgstr ""
  
! #: cp/name-lookup.cc:6543 cp/name-lookup.cc:6570
  #, gcc-internal-format
  msgid "ignoring %qD attribute on anonymous namespace"
  msgstr ""
  
! #: cp/name-lookup.cc:6549
  #, gcc-internal-format
  msgid "ignoring %qD attribute on non-inline namespace"
  msgstr ""
  
! #: cp/name-lookup.cc:6586 cp/name-lookup.cc:9007
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute ignored"
  msgid "%qD attribute directive ignored"
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
! #: cp/name-lookup.cc:6915
  #, gcc-internal-format
  msgid "maximum limit of %d namespaces searched for %qE"
  msgstr ""
  
! #: cp/name-lookup.cc:6967
  #, gcc-internal-format
  msgid "suggested alternative:"
  msgid_plural "suggested alternatives:"
  msgstr[0] ""
  msgstr[1] ""
  
! #: cp/name-lookup.cc:6973
  #, gcc-internal-format
  msgid "  %qE"
  msgstr ""
  
! #: cp/name-lookup.cc:7298
  #, gcc-internal-format
  msgid "%<std::%s%> is defined in header %qs; this is probably fixable by adding %<#include %s%>"
  msgstr ""
  
! #: cp/name-lookup.cc:7304
  #, gcc-internal-format
  msgid "%<std::%s%> is only available from %s onwards"
  msgstr ""
  
! #: cp/name-lookup.cc:7742
  #, gcc-internal-format
  msgid "the macro %qs had not yet been defined"
  msgstr ""
  
! #: cp/name-lookup.cc:7745
  #, gcc-internal-format
  msgid "it was later defined here"
  msgstr ""
  
! #: cp/name-lookup.cc:8541
  #, gcc-internal-format
  msgid "declaration of %<std::initializer_list%> does not match %<#include <initializer_list>%>, isn%'t a template"
  msgstr ""
  
! #: cp/name-lookup.cc:8979
  #, gcc-internal-format
  msgid "%<strong%> using directive no longer supported"
  msgstr ""
  
! #: cp/name-lookup.cc:8982
  #, gcc-internal-format
  msgid "you can use an inline namespace instead"
  msgstr ""
  
! #: cp/name-lookup.cc:9001
  #, gcc-internal-format
  msgid "%<omp::%E%> not allowed to be specified in this context"
  msgstr ""
  
  #. We only allow depth 255.
! #: cp/name-lookup.cc:9093
  #, gcc-internal-format, gfc-internal-format
  msgid "cannot nest more than %d namespaces"
  msgstr ""
  
! #: cp/name-lookup.cc:9195
  #, fuzzy, gcc-internal-format
  msgid "%<namespace %E%> is ambiguous"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ \"%s\" - %d Ð±Ð°Ð¹Ñ‚"
  
! #: cp/name-lookup.cc:9211
  #, fuzzy, gcc-internal-format
  msgid "namespace alias %qD not allowed here, assuming %qD"
  msgstr "\"%s\" - Ð³Ñ�Ñ‚Ð° Ð½Ðµ Ð¿Ð°Ñ‡Ð°Ñ‚Ð°Ðº Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ–"
  
! #: cp/name-lookup.cc:9294
  #, gcc-internal-format
  msgid "exporting namespace %qD with internal linkage"
  msgstr ""
  
! #: cp/name-lookup.cc:9296
  #, gcc-internal-format
  msgid "%qD has internal linkage because it was declared in an unnamed namespace"
  msgstr ""
  
! #: cp/name-lookup.cc:9300
  #, gcc-internal-format
  msgid "exporting unnamed namespace"
  msgstr ""
  
! #: cp/name-lookup.cc:9310
  #, gcc-internal-format
  msgid "inline namespace must be specified at initial definition"
  msgstr ""
  
! #: cp/name-lookup.cc:9360
  #, gcc-internal-format
  msgid "%s namespace %qD conflicts with reachable definition"
  msgstr ""
  
! #: cp/name-lookup.cc:9362
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "previous definition here"
  msgid "reachable %s definition here"
  msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: cp/name-lookup.cc:9405
  #, gcc-internal-format
  msgid "XXX entering %<pop_everything ()%>"
  msgstr ""
  
! #: cp/name-lookup.cc:9414
  #, gcc-internal-format
  msgid "XXX leaving %<pop_everything ()%>"
  msgstr ""
*************** msgstr ""
*** 62709,62715 ****
  msgid "%<LEXER_DEBUGGING_ENABLED_P%> is not set to true"
  msgstr ""
  
! #: cp/parser.cc:1724 cp/parser.cc:49645
  #, gcc-internal-format
  msgid "%<#pragma omp declare %s%> not immediately followed by function declaration or definition"
  msgstr ""
--- 62806,62812 ----
  msgid "%<LEXER_DEBUGGING_ENABLED_P%> is not set to true"
  msgstr ""
  
! #: cp/parser.cc:1724 cp/parser.cc:49704
  #, gcc-internal-format
  msgid "%<#pragma omp declare %s%> not immediately followed by function declaration or definition"
  msgstr ""
*************** msgstr ""
*** 62754,62760 ****
  msgid "request for member %qE in non-class type %qT"
  msgstr ""
  
! #: cp/parser.cc:3517 cp/parser.cc:22267
  #, gcc-internal-format
  msgid "%<%T::%E%> has not been declared"
  msgstr ""
--- 62851,62857 ----
  msgid "request for member %qE in non-class type %qT"
  msgstr ""
  
! #: cp/parser.cc:3517 cp/parser.cc:22271
  #, gcc-internal-format
  msgid "%<%T::%E%> has not been declared"
  msgstr ""
*************** msgstr ""
*** 62976,62982 ****
  msgid "%<concept%> only available with %<-std=c++20%> or %<-fconcepts%>"
  msgstr ""
  
! #: cp/parser.cc:3922 cp/parser.cc:32272
  #, gcc-internal-format
  msgid "%<requires%> only available with %<-std=c++20%> or %<-fconcepts%>"
  msgstr ""
--- 63073,63079 ----
  msgid "%<concept%> only available with %<-std=c++20%> or %<-fconcepts%>"
  msgstr ""
  
! #: cp/parser.cc:3922 cp/parser.cc:32331
  #, gcc-internal-format
  msgid "%<requires%> only available with %<-std=c++20%> or %<-fconcepts%>"
  msgstr ""
*************** msgstr ""
*** 63217,63223 ****
  msgid "template-id not allowed for destructor in C++20"
  msgstr ""
  
! #: cp/parser.cc:6989 cp/parser.cc:33504
  #, gcc-internal-format
  msgid "remove the %qs"
  msgstr ""
--- 63314,63320 ----
  msgid "template-id not allowed for destructor in C++20"
  msgstr ""
  
! #: cp/parser.cc:6989 cp/parser.cc:33563
  #, gcc-internal-format
  msgid "remove the %qs"
  msgstr ""
*************** msgstr ""
*** 63232,63238 ****
  msgid "typedef-name %qD used as destructor declarator"
  msgstr ""
  
! #: cp/parser.cc:7155 cp/parser.cc:24869
  #, gcc-internal-format
  msgid "expected unqualified-id"
  msgstr ""
--- 63329,63335 ----
  msgid "typedef-name %qD used as destructor declarator"
  msgstr ""
  
! #: cp/parser.cc:7155 cp/parser.cc:24873
  #, gcc-internal-format
  msgid "expected unqualified-id"
  msgstr ""
*************** msgstr ""
*** 63272,63278 ****
  msgid "expected nested-name-specifier"
  msgstr ""
  
! #: cp/parser.cc:7808 cp/parser.cc:10516
  #, gcc-internal-format
  msgid "types may not be defined in casts"
  msgstr ""
--- 63369,63375 ----
  msgid "expected nested-name-specifier"
  msgstr ""
  
! #: cp/parser.cc:7808 cp/parser.cc:10518
  #, gcc-internal-format
  msgid "types may not be defined in casts"
  msgstr ""
*************** msgstr ""
*** 63288,63294 ****
  msgid "wrong number of arguments to %<__builtin_addressof%>"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž, Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ… Ð´Ð»Ñ� Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
  
! #: cp/parser.cc:8002 cp/pt.cc:21522
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments to %<__builtin_launder%>"
--- 63385,63391 ----
  msgid "wrong number of arguments to %<__builtin_addressof%>"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž, Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ… Ð´Ð»Ñ� Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
  
! #: cp/parser.cc:8002 cp/pt.cc:21551
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments to %<__builtin_launder%>"
*************** msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ
*** 63306,63322 ****
  msgid "wrong number of arguments to %<__builtin_shufflevector%>"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž, Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ… Ð´Ð»Ñ� Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
  
! #: cp/parser.cc:8069 cp/pt.cc:21637
  #, gcc-internal-format
  msgid "call to %<__builtin_operator_new%> does not select replaceable global allocation function"
  msgstr ""
  
! #: cp/parser.cc:8073 cp/pt.cc:21641
  #, gcc-internal-format
  msgid "call to %<__builtin_operator_delete%> does not select replaceable global deallocation function"
  msgstr ""
  
! #: cp/parser.cc:8078 cp/pt.cc:21646
  #, gcc-internal-format
  msgid "selected function declared here"
  msgstr ""
--- 63403,63419 ----
  msgid "wrong number of arguments to %<__builtin_shufflevector%>"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž, Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ… Ð´Ð»Ñ� Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
  
! #: cp/parser.cc:8069 cp/pt.cc:21666
  #, gcc-internal-format
  msgid "call to %<__builtin_operator_new%> does not select replaceable global allocation function"
  msgstr ""
  
! #: cp/parser.cc:8073 cp/pt.cc:21670
  #, gcc-internal-format
  msgid "call to %<__builtin_operator_delete%> does not select replaceable global deallocation function"
  msgstr ""
  
! #: cp/parser.cc:8078 cp/pt.cc:21675
  #, gcc-internal-format
  msgid "selected function declared here"
  msgstr ""
*************** msgstr ""
*** 63362,64719 ****
  msgid "ISO C++ does not allow %<alignof%> with a non-type"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: cp/parser.cc:9507
  #, gcc-internal-format
  msgid "types may not be defined in %<noexcept%> expressions"
  msgstr ""
  
! #: cp/parser.cc:9566
  #, gcc-internal-format
  msgid "%<co_await%> cannot be used in default arguments"
  msgstr ""
  
! #: cp/parser.cc:9791 cp/parser.cc:34822
  #, gcc-internal-format
  msgid "types may not be defined in %qs expressions"
  msgstr ""
  
! #: cp/parser.cc:9856
  #, gcc-internal-format
  msgid "%<__builtin_has_attribute%> with dependent argument not supported yet"
  msgstr ""
  
! #: cp/parser.cc:9942
  #, gcc-internal-format
  msgid "types may not be defined in a new-expression"
  msgstr ""
  
! #: cp/parser.cc:9960
  #, gcc-internal-format
  msgid "array bound forbidden after parenthesized type-id"
  msgstr ""
  
! #: cp/parser.cc:9962
  #, gcc-internal-format
  msgid "try removing the parentheses around the type-id"
  msgstr ""
  
! #: cp/parser.cc:9995
  #, gcc-internal-format
  msgid "initialization of new-expression for type %<auto%> requires exactly one element"
  msgstr ""
  
! #: cp/parser.cc:10040
  #, gcc-internal-format
  msgid "expected expression-list or type-id"
  msgstr ""
  
! #: cp/parser.cc:10069
  #, gcc-internal-format
  msgid "types may not be defined in a new-type-id"
  msgstr ""
  
! #: cp/parser.cc:10117
  #, gcc-internal-format
  msgid "attributes ignored on outermost array type in new expression"
  msgstr ""
  
! #: cp/parser.cc:10213
  #, gcc-internal-format
  msgid "expression in new-declarator must have integral or enumeration type"
  msgstr ""
  
! #: cp/parser.cc:10619
  #, gcc-internal-format
  msgid "use of old-style cast to %q#T"
  msgstr ""
  
! #: cp/parser.cc:10769
  #, gcc-internal-format
  msgid "%<>>%> operator is treated as two right angle brackets in C++11"
  msgstr ""
  
! #: cp/parser.cc:10772
  #, gcc-internal-format
  msgid "suggest parentheses around %<>>%> expression"
  msgstr ""
  
! #: cp/parser.cc:10998
  #, gcc-internal-format
  msgid "ISO C++ does not allow %<?:%> with omitted middle operand"
  msgstr ""
  
! #: cp/parser.cc:11322
  #, gcc-internal-format
  msgid "top-level comma expression in array subscript is deprecated"
  msgstr ""
  
! #: cp/parser.cc:11470
  #, gcc-internal-format
  msgid "types may not be defined within %<__builtin_offsetof%>"
  msgstr ""
  
! #: cp/parser.cc:11604
  #, gcc-internal-format
  msgid "trailing argument to %<__type_pack_element%> is not a type"
  msgstr ""
  
! #: cp/parser.cc:11704
  #, gcc-internal-format
  msgid "lambda-expression in template parameter type"
  msgstr ""
  
! #: cp/parser.cc:11714
  #, gcc-internal-format
  msgid "lambda-expression in unevaluated context only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:11724
  #, gcc-internal-format
  msgid "lambda-expression in template-argument only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:11898
  #, gcc-internal-format
  msgid "non-local lambda expression cannot have a capture-default"
  msgstr ""
  
! #: cp/parser.cc:11921
  #, gcc-internal-format
  msgid "expected end of capture-list"
  msgstr ""
  
! #: cp/parser.cc:11937
  #, gcc-internal-format
  msgid "explicit by-copy capture of %<this%> with by-copy capture default only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:11943 cp/parser.cc:11965 cp/parser.cc:12163
  #, gcc-internal-format
  msgid "already captured %qD in lambda expression"
  msgstr ""
  
! #: cp/parser.cc:11959
  #, gcc-internal-format
  msgid "%<*this%> capture only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:11979
  #, fuzzy, gcc-internal-format
  msgid "%<this%> cannot be captured by reference"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/parser.cc:11999
  #, gcc-internal-format
  msgid "pack init-capture only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:12010
  #, gcc-internal-format
  msgid "%<&%> should come before %<...%>"
  msgstr ""
  
! #: cp/parser.cc:12040
  #, gcc-internal-format
  msgid "lambda capture initializers only available with %<-std=c++14%> or %<-std=gnu++14%>"
  msgstr ""
  
! #: cp/parser.cc:12049
  #, gcc-internal-format
  msgid "empty initializer for lambda init-capture"
  msgstr ""
  
! #: cp/parser.cc:12074
  #, gcc-internal-format
  msgid "capture of non-variable %qE"
  msgstr ""
  
! #: cp/parser.cc:12078 cp/parser.cc:12089 cp/semantics.cc:4618
  #: cp/semantics.cc:4634
  #, fuzzy, gcc-internal-format
  msgid "%q#D declared here"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/parser.cc:12085
  #, gcc-internal-format
  msgid "capture of variable %qD with non-automatic storage duration"
  msgstr ""
  
! #: cp/parser.cc:12123
  #, gcc-internal-format
  msgid "too many %<...%> in lambda capture"
  msgstr ""
  
! #: cp/parser.cc:12134
  #, gcc-internal-format
  msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
  msgstr ""
  
! #: cp/parser.cc:12139
  #, gcc-internal-format
  msgid "explicit by-reference capture of %qD redundant with by-reference capture default"
  msgstr ""
  
! #: cp/parser.cc:12221
  #, gcc-internal-format
  msgid "lambda templates are only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:12275
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "default argument specified for lambda parameter"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž, Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ… Ð´Ð»Ñ� Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
  
! #: cp/parser.cc:12298
  #, gcc-internal-format
  msgid "parameter declaration before lambda declaration specifiers only optional with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:12328 cp/pt.cc:14987
  #, gcc-internal-format
  msgid "a lambda with captures may not have an explicit object parameter of an unrelated type"
  msgstr ""
  
! #: cp/parser.cc:12341
  #, gcc-internal-format
  msgid "%<mutable%> lambda specifier with explicit object parameter"
  msgstr ""
  
! #: cp/parser.cc:12350
  #, gcc-internal-format
  msgid "the passed in closure object will not be mutated because it is taken by value"
  msgstr ""
  
! #: cp/parser.cc:12354
  #, gcc-internal-format
  msgid "declare the explicit object parameter as non-const reference instead"
  msgstr ""
  
! #: cp/parser.cc:12358
  #, gcc-internal-format
  msgid "explicit object parameter is already a mutable reference"
  msgstr ""
  
! #: cp/parser.cc:12365
  #, gcc-internal-format
  msgid "%<static%> lambda specifier with explicit object parameter"
  msgstr ""
  
! #: cp/parser.cc:12383
  #, gcc-internal-format
  msgid "%<static%> lambda specifier with lambda capture"
  msgstr ""
  
! #: cp/parser.cc:12395
  #, gcc-internal-format
  msgid "parameter declaration before lambda transaction qualifier only optional with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:12408
  #, gcc-internal-format
  msgid "parameter declaration before lambda exception specification only optional with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:12426
  #, gcc-internal-format
  msgid "parameter declaration before lambda trailing return type only optional with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:12468
  #, gcc-internal-format
  msgid "%<constexpr%> lambda only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:13029
  #, fuzzy, gcc-internal-format
  #| msgid "virtual functions cannot be friends"
  msgid "preconditions cannot be statements"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/parser.cc:13032
  #, fuzzy, gcc-internal-format
  #| msgid "empty body in an else-statement"
  msgid "postconditions cannot be statements"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ñ†ÐµÐ»Ð° Ñž else-Ð²Ñ‹Ñ€Ð°Ð¶Ñ�Ð½Ð½Ñ–"
  
! #: cp/parser.cc:13037
  #, gcc-internal-format
  msgid "assertions must be followed by %<;%>"
  msgstr ""
  
! #: cp/parser.cc:13202
  #, gcc-internal-format
  msgid "label at end of compound statement only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:13382 cp/parser.cc:13627
  #, gcc-internal-format
  msgid "attributes at the beginning of statement are ignored"
  msgstr ""
  
! #: cp/parser.cc:13453
  #, fuzzy, gcc-internal-format
  #| msgid "empty body in an else-statement"
  msgid "expected labeled-statement"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ñ†ÐµÐ»Ð° Ñž else-Ð²Ñ‹Ñ€Ð°Ð¶Ñ�Ð½Ð½Ñ–"
  
! #: cp/parser.cc:13502
  #, gcc-internal-format
  msgid "case label %qE not within a switch statement"
  msgstr ""
  
! #: cp/parser.cc:13635
  #, gcc-internal-format
  msgid "need %<typename%> before %qE because %qT is a dependent scope"
  msgstr ""
  
  #. A::A a;
! #: cp/parser.cc:13641
  #, gcc-internal-format
  msgid "%qE names the constructor, not the type"
  msgstr ""
  
! #: cp/parser.cc:13699
  #, gcc-internal-format
  msgid "compound-statement in %<constexpr%> function"
  msgstr ""
  
! #: cp/parser.cc:13763
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested with %<tile%> directive"
  msgstr ""
  
! #: cp/parser.cc:13968
  #, gcc-internal-format
  msgid "%<if constexpr%> only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:13990
  #, gcc-internal-format
  msgid "%<if consteval%> only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:14015 cp/parser.cc:14050
  #, gcc-internal-format
  msgid "%<if consteval%> requires compound statement"
  msgstr ""
  
! #: cp/parser.cc:14092
  #, gcc-internal-format
  msgid "init-statement in selection statements only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:14260 cp/parser.cc:35334
  #, fuzzy, gcc-internal-format
  #| msgid "empty body in an else-statement"
  msgid "expected selection-statement"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ñ†ÐµÐ»Ð° Ñž else-Ð²Ñ‹Ñ€Ð°Ð¶Ñ�Ð½Ð½Ñ–"
  
! #: cp/parser.cc:14301
  #, gcc-internal-format
  msgid "condition declares an array"
  msgstr ""
  
! #: cp/parser.cc:14303
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function"
  msgid "condition declares a function"
  msgstr "Ð½Ðµ Ñ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/parser.cc:14344
  #, gcc-internal-format
  msgid "types may not be defined in conditions"
  msgstr ""
  
  #. Anything else is an error.
! #: cp/parser.cc:14446 cp/parser.cc:24109 cp/parser.cc:26828
  #, fuzzy, gcc-internal-format
  #| msgid "invalid initializer"
  msgid "expected initializer"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/parser.cc:14496
  #, gcc-internal-format
  msgid "range-based %<for%> loops with initializer only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:14758
  #, gcc-internal-format
  msgid "loop variable %qD of type %qT binds to a temporary constructed from type %qT"
  msgstr ""
  
  #. rval
! #: cp/parser.cc:14765
  #, gcc-internal-format
  msgid "use non-reference type %qT to make the copy explicit or %qT to prevent copying"
  msgstr ""
  
! #: cp/parser.cc:14791
  #, gcc-internal-format
  msgid "loop variable %qD creates a copy from type %qT"
  msgstr ""
  
! #: cp/parser.cc:14796
  #, gcc-internal-format
  msgid "use reference type to prevent copying"
  msgstr ""
  
! #: cp/parser.cc:14935
  #, gcc-internal-format
  msgid "range-based %<for%> expression of type %qT has incomplete type"
  msgstr ""
  
! #: cp/parser.cc:15019
  #, gcc-internal-format
  msgid "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
  msgstr ""
  
! #: cp/parser.cc:15171 cp/parser.cc:35337
  #, fuzzy, gcc-internal-format
  #| msgid "empty body in an else-statement"
  msgid "expected iteration-statement"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ñ†ÐµÐ»Ð° Ñž else-Ð²Ñ‹Ñ€Ð°Ð¶Ñ�Ð½Ð½Ñ–"
  
! #: cp/parser.cc:15216
  #, gcc-internal-format
  msgid "alias-declaration in init-statement only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:15233
  #, gcc-internal-format
  msgid "range-based %<for%> loops only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/parser.cc:15395
  #, gcc-internal-format
  msgid "%<goto%> in %<constexpr%> function only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
  #. Issue a warning about this use of a GNU extension.
! #: cp/parser.cc:15404
  #, gcc-internal-format
  msgid "ISO C++ forbids computed gotos"
  msgstr ""
  
! #: cp/parser.cc:15423 cp/parser.cc:35340
  #, gcc-internal-format
  msgid "expected jump-statement"
  msgstr ""
  
! #: cp/parser.cc:15598
  #, gcc-internal-format
  msgid "expected module-partition"
  msgstr ""
  
! #: cp/parser.cc:15600
  #, gcc-internal-format
  msgid "expected module-name"
  msgstr ""
  
! #: cp/parser.cc:15642
  #, gcc-internal-format
  msgid "module-declaration not permitted in header-unit"
  msgstr ""
  
! #: cp/parser.cc:15648
  #, gcc-internal-format
  msgid "module-declaration must be at global scope"
  msgstr ""
  
! #: cp/parser.cc:15649
  #, gcc-internal-format
  msgid "scope opened here"
  msgstr ""
  
! #: cp/parser.cc:15675
  #, gcc-internal-format
  msgid "private module fragment"
  msgstr ""
  
! #: cp/parser.cc:15679
  #, gcc-internal-format
  msgid "private module fragment only permitted in purview of module interface or partition"
  msgstr ""
  
  #. Neither the first declaration, nor in a GMF.
! #: cp/parser.cc:15685
  #, gcc-internal-format
  msgid "module-declaration only permitted as first declaration, or ending a global module fragment"
  msgstr ""
  
! #: cp/parser.cc:15726
  #, gcc-internal-format
  msgid "post-module-declaration imports must be contiguous"
  msgstr ""
  
! #: cp/parser.cc:15728 cp/parser.cc:15737
  #, gcc-internal-format
  msgid "perhaps insert a line break after %<import%>, or other disambiguation, to prevent this being considered a module control-line"
  msgstr ""
  
! #: cp/parser.cc:15736
  #, gcc-internal-format
  msgid "import-declaration must be at global scope"
  msgstr ""
  
! #: cp/parser.cc:15760
  #, gcc-internal-format
  msgid "import specifying a module-partition must appear after a named module-declaration"
  msgstr ""
  
! #: cp/parser.cc:15781
  #, gcc-internal-format
  msgid "post-module-declaration imports must not be include-translated"
  msgstr ""
  
! #: cp/parser.cc:15784
  #, gcc-internal-format
  msgid "post-module-declaration imports must not be from header inclusion"
  msgstr ""
  
! #: cp/parser.cc:15805
  #, gcc-internal-format
  msgid "%qE may only occur after a module interface declaration"
  msgstr ""
  
! #: cp/parser.cc:15813
  #, gcc-internal-format
  msgid "%qE may only occur once in an export declaration"
  msgstr ""
  
! #: cp/parser.cc:15834
  #, gcc-internal-format
  msgid "%<export%> not part of following module-directive"
  msgstr ""
  
! #: cp/parser.cc:15873
  #, gcc-internal-format
  msgid "extra %<;%> outside of a function only allowed in C++11"
  msgstr ""
  
! #: cp/parser.cc:15876
  #, gcc-internal-format
  msgid "extra %<;%> outside of a function"
  msgstr ""
  
! #: cp/parser.cc:15885
  #, gcc-internal-format
  msgid "extra %<;%> inside a struct only allowed in C++11"
  msgstr ""
  
! #: cp/parser.cc:15887
  #, gcc-internal-format
  msgid "extra %<;%> inside a struct"
  msgstr ""
  
! #: cp/parser.cc:15895
  #, gcc-internal-format
  msgid "extra %<;%> after in-class function definition"
  msgstr ""
  
! #: cp/parser.cc:16065
  #, fuzzy, gcc-internal-format
  msgid "attributes are not permitted in this position"
  msgstr "Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ñ‹ Ñ�ÐµÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð° Ð´Ð»Ñ� Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ñ‹"
  
! #: cp/parser.cc:16069
  #, gcc-internal-format
  msgid "attributes may be inserted here"
  msgstr ""
  
! #: cp/parser.cc:16109
  #, fuzzy, gcc-internal-format
  msgid "explicit specializations are not permitted here"
  msgstr "Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ†Ñ‹Ñ�"
  
! #: cp/parser.cc:16111 cp/parser.cc:28251
  #, gcc-internal-format
  msgid "a specialization is always exported alongside its primary template"
  msgstr ""
  
! #: cp/parser.cc:16124
  #, gcc-internal-format
  msgid "explicit instantiations are not permitted here"
  msgstr ""
  
! #: cp/parser.cc:16140
  #, gcc-internal-format
  msgid "export-declarations are not permitted here"
  msgstr ""
  
! #: cp/parser.cc:16311
  #, gcc-internal-format
  msgid "%<__label__%> not at the beginning of a block"
  msgstr ""
  
! #: cp/parser.cc:16557
  #, gcc-internal-format
  msgid "non-variable %qD in declaration with more than one declarator with placeholder type"
  msgstr ""
  
! #: cp/parser.cc:16576
  #, gcc-internal-format
  msgid "inconsistent deduction for %qT: %qT and then %qT"
  msgstr ""
  
! #: cp/parser.cc:16597
  #, gcc-internal-format
  msgid "mixing declarations and function-definitions is forbidden"
  msgstr ""
  
! #: cp/parser.cc:16622
  #, gcc-internal-format
  msgid "types may not be defined in a for-range-declaration"
  msgstr ""
  
! #: cp/parser.cc:16679
  #, gcc-internal-format
  msgid "initializer in range-based %<for%> loop"
  msgstr ""
  
! #: cp/parser.cc:16682
  #, fuzzy, gcc-internal-format
  #| msgid "multiple declarations `%T' and `%T'"
  msgid "multiple declarations in range-based %<for%> loop"
  msgstr "Ð½ÐµÐ°Ð´Ð½Ð¾Ð»ÑŒÐºÐ°Ð²Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%T' Ñ– `%T'"
  
! #: cp/parser.cc:16722
  #, gcc-internal-format
  msgid "structured bindings with attributed identifiers only available with %<-std=c++2c%> or %<-std=gnu++2c%>"
  msgstr ""
  
! #: cp/parser.cc:16759
  #, gcc-internal-format
  msgid "structured bindings in conditions only available with %<-std=c++2c%> or %<-std=gnu++2c%>"
  msgstr ""
  
! #: cp/parser.cc:16763
  #, gcc-internal-format
  msgid "structured bindings only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:16820
  #, fuzzy, gcc-internal-format
  #| msgid "empty declaration"
  msgid "empty structured binding declaration"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: cp/parser.cc:16838
  #, fuzzy, gcc-internal-format
  msgid "invalid initializer for structured binding declaration"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/parser.cc:17033
  #, gcc-internal-format
  msgid "%<this%> must be the first specifier in a parameter declaration"
  msgstr ""
  
! #: cp/parser.cc:17056
  #, gcc-internal-format
  msgid "%<friend%> used outside of class"
  msgstr ""
  
! #: cp/parser.cc:17094
  #, gcc-internal-format
  msgid "the %<bool%> keyword is not allowed in a C++20 concept definition"
  msgstr ""
  
! #: cp/parser.cc:17097
  #, gcc-internal-format
  msgid "C++20 concept definition syntax is %<concept <name> = <expr>%>"
  msgstr ""
  
! #: cp/parser.cc:17148
  #, gcc-internal-format
  msgid "%<typedef%> specifier conflicts with %qs"
  msgstr ""
  
! #: cp/parser.cc:17174
  #, gcc-internal-format
  msgid "%<auto%> changes meaning in C++11; please remove it"
  msgstr ""
  
! #: cp/parser.cc:17210
  #, fuzzy, gcc-internal-format
  msgid "%qD invalid in condition"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: cp/parser.cc:17219
  #, fuzzy, gcc-internal-format
  msgid "%qD invalid in lambda"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: cp/parser.cc:17223
  #, gcc-internal-format
  msgid "%qD only valid in lambda with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:17305
  #, gcc-internal-format
  msgid "type-specifier invalid in lambda"
  msgstr ""
  
! #: cp/parser.cc:17318
  #, gcc-internal-format
  msgid "standard attributes in middle of decl-specifiers"
  msgstr ""
  
! #: cp/parser.cc:17320
  #, gcc-internal-format
  msgid "standard attributes must precede the decl-specifiers to apply to the declaration, or follow them to apply to the type"
  msgstr ""
  
! #: cp/parser.cc:17335
  #, fuzzy, gcc-internal-format
  msgid "class definition may not be declared a friend"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/parser.cc:17408 cp/parser.cc:29436
  #, gcc-internal-format
  msgid "templates may not be %<virtual%>"
  msgstr ""
  
! #: cp/parser.cc:17427
  #, gcc-internal-format
  msgid "types may not be defined in explicit-specifier"
  msgstr ""
  
! #: cp/parser.cc:17431
  #, gcc-internal-format
  msgid "%<explicit(bool)%> only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:17499
  #, fuzzy, gcc-internal-format
  msgid "invalid linkage-specification"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ñ� Ñ�Ð¿ÐµÑ†Ñ‹Ñ„Ñ–ÐºÐ°Ñ†Ñ‹Ñ�! ÐŸÐ°Ð¼Ñ‹Ð»ÐºÐ° Ñž cc."
  
! #: cp/parser.cc:17606
  #, gcc-internal-format
  msgid "%<static_assert%> without a message only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:17636
  #, gcc-internal-format
  msgid "%<static_assert%> with non-string message only available with %<-std=c++2c%> or %<-std=gnu++2c%>"
  msgstr ""
  
! #: cp/parser.cc:17840
  #, gcc-internal-format
  msgid "%<decltype(auto)%> type specifier only available with %<-std=c++14%> or %<-std=gnu++14%>"
  msgstr ""
  
! #: cp/parser.cc:17853
  #, gcc-internal-format
  msgid "types may not be defined in %<decltype%> expressions"
  msgstr ""
  
! #: cp/parser.cc:18029
  #, gcc-internal-format
  msgid "types may not be defined in a conversion-type-id"
  msgstr ""
  
! #: cp/parser.cc:18058
  #, gcc-internal-format
  msgid "invalid use of %<auto%> in conversion operator"
  msgstr ""
  
! #: cp/parser.cc:18062
  #, gcc-internal-format
  msgid "use of %<auto%> in member template conversion operator can never be deduced"
  msgstr ""
  
! #: cp/parser.cc:18146
  #, gcc-internal-format
  msgid "only constructors take member initializers"
  msgstr ""
  
! #: cp/parser.cc:18173
  #, fuzzy, gcc-internal-format
  msgid "cannot expand initializer for member %qD"
  msgstr "Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/parser.cc:18185 cp/pt.cc:28283
  #, gcc-internal-format
  msgid "mem-initializer for %qD follows constructor delegation"
  msgstr ""
  
! #: cp/parser.cc:18197 cp/pt.cc:28295
  #, gcc-internal-format
  msgid "constructor delegation follows mem-initializer for %qD"
  msgstr ""
  
! #: cp/parser.cc:18249
  #, gcc-internal-format
  msgid "anachronistic old-style base class initializer"
  msgstr ""
  
! #: cp/parser.cc:18337
  #, gcc-internal-format
  msgid "keyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)"
  msgstr ""
  
! #: cp/parser.cc:18749
  #, gcc-internal-format
  msgid "space between quotes and suffix is deprecated in C++23"
  msgstr ""
  
! #: cp/parser.cc:18755
  #, gcc-internal-format
  msgid "unexpected keyword; remove space between quotes and suffix identifier"
  msgstr ""
  
! #: cp/parser.cc:18761
  #, gcc-internal-format
  msgid "expected suffix identifier"
  msgstr ""
  
! #: cp/parser.cc:18770
  #, gcc-internal-format
  msgid "expected empty string after %<operator%> keyword"
  msgstr ""
  
! #: cp/parser.cc:18776
  #, gcc-internal-format
  msgid "invalid encoding prefix in literal operator"
  msgstr ""
  
! #: cp/parser.cc:18810
  #, fuzzy, gcc-internal-format
  #| msgid "unregistered operator %s"
  msgid "expected operator"
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ñ‹ Ð°Ð¿ÐµÑ€Ð°Ñ‚Ð°Ñ€ %s"
  
! #: cp/parser.cc:18857
  #, gcc-internal-format
  msgid "keyword %<export%> not implemented, and will be ignored"
  msgstr ""
  
! #: cp/parser.cc:18859
  #, gcc-internal-format
  msgid "keyword %<export%> is deprecated, and is ignored"
  msgstr ""
  
! #: cp/parser.cc:18861
  #, gcc-internal-format
  msgid "keyword %<export%> is enabled with %<-fmodules%>"
  msgstr ""
  
! #: cp/parser.cc:18966
  #, fuzzy, gcc-internal-format
  msgid "invalid constrained type parameter"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/parser.cc:18974
  #, fuzzy, gcc-internal-format
  msgid "cv-qualified type parameter"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/parser.cc:19090
  #, fuzzy, gcc-internal-format
  msgid "invalid use of %<auto%> in default template argument"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/parser.cc:19326 cp/parser.cc:19412 cp/parser.cc:26576
  #, fuzzy, gcc-internal-format
  msgid "template parameter pack %qD cannot have a default argument"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/parser.cc:19330 cp/parser.cc:19416
  #, fuzzy, gcc-internal-format
  msgid "template parameter packs cannot have default arguments"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/parser.cc:19483
  #, gcc-internal-format
  msgid "expected template-id"
  msgstr ""
  
! #: cp/parser.cc:19546
  #, gcc-internal-format
  msgid "%<<::%> cannot begin a template-argument list"
  msgstr ""
  
! #: cp/parser.cc:19550
  #, gcc-internal-format
  msgid "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>"
  msgstr ""
  
! #: cp/parser.cc:19554
  #, gcc-internal-format
  msgid "(if you use %<-fpermissive%> or %<-std=c++11%>, or %<-std=gnu++11%> G++ will accept your code)"
  msgstr ""
  
! #: cp/parser.cc:19585
  #, fuzzy, gcc-internal-format
  msgid "invalid template-argument-list"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/parser.cc:19586
  #, gcc-internal-format
  msgid "function name as the left hand operand of %<<%> is ill-formed in C++20; wrap the function name in %<()%>"
  msgstr ""
  
! #: cp/parser.cc:19593
  #, gcc-internal-format
  msgid "expected %<(%> after template-argument-list"
  msgstr ""
  
! #: cp/parser.cc:19699
  #, gcc-internal-format
  msgid "parse error in template argument list"
  msgstr ""
  
  #. The name does not name a template.
! #: cp/parser.cc:19784 cp/parser.cc:19976 cp/parser.cc:20185
  #, gcc-internal-format
  msgid "expected template-name"
  msgstr ""
  
! #: cp/parser.cc:19832
  #, gcc-internal-format
  msgid "non-template %qD used as template"
  msgstr ""
  
! #: cp/parser.cc:19834
  #, gcc-internal-format
  msgid "use %<%T::template %D%> to indicate that it is a template"
  msgstr ""
  
! #: cp/parser.cc:20049
  #, gcc-internal-format
  msgid "expected parameter pack before %<...%>"
  msgstr ""
  
! #: cp/parser.cc:20150 cp/parser.cc:20168 cp/parser.cc:20344
  #, gcc-internal-format
  msgid "expected template-argument"
  msgstr ""
  
! #: cp/parser.cc:20315
  #, fuzzy, gcc-internal-format
  msgid "invalid non-type template argument"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/parser.cc:20453
  #, gcc-internal-format
  msgid "explicit instantiation shall not use %<inline%> specifier"
  msgstr ""
  
! #: cp/parser.cc:20457
  #, gcc-internal-format
  msgid "explicit instantiation shall not use %<constexpr%> specifier"
  msgstr ""
  
! #: cp/parser.cc:20461
  #, gcc-internal-format
  msgid "explicit instantiation shall not use %<consteval%> specifier"
  msgstr ""
  
! #: cp/parser.cc:20522
  #, gcc-internal-format
  msgid "template specialization with C linkage"
  msgstr ""
  
! #: cp/parser.cc:20751
  #, gcc-internal-format
  msgid "expected type specifier"
  msgstr ""
  
! #: cp/parser.cc:20951
  #, gcc-internal-format
  msgid "use of %<auto%> in lambda parameter declaration only available with %<-std=c++14%> or %<-std=gnu++14%>"
  msgstr ""
  
! #: cp/parser.cc:20957
  #, gcc-internal-format
  msgid "use of %<auto%> in template argument"
  msgstr ""
  
! #: cp/parser.cc:20960
  #, gcc-internal-format
  msgid "use of %<auto%> in parameter declaration only available with %<-std=c++20%> or %<-fconcepts%>"
  msgstr ""
  
! #: cp/parser.cc:20964
  #, gcc-internal-format
  msgid "use of %<auto%> in parameter declaration only available with %<-std=c++14%> or %<-std=gnu++14%>"
  msgstr ""
  
! #: cp/parser.cc:21118
  #, gcc-internal-format
  msgid "expected template-id for type"
  msgstr ""
  
! #: cp/parser.cc:21259
  #, gcc-internal-format
  msgid "expected type-name"
  msgstr ""
  
! #: cp/parser.cc:21343
  #, fuzzy, gcc-internal-format
  #| msgid "function does not return string type"
  msgid "%qE does not constrain a type"
  msgstr "Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ� Ð½Ðµ Ð²Ñ�Ñ€Ñ‚Ð°Ðµ Ñ‚Ñ‹Ð¿ string"
  
! #: cp/parser.cc:21344
  #, gcc-internal-format
  msgid "concept defined here"
  msgstr ""
  
! #: cp/parser.cc:21375
  #, fuzzy, gcc-internal-format
  msgid "invalid use of concept-name %qD"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/parser.cc:21391
  #, gcc-internal-format
  msgid "expected %<auto%> or %<decltype(auto)%> after %qE"
  msgstr ""
  
! #: cp/parser.cc:21398
  #, gcc-internal-format
  msgid "unexpected placeholder in constrained result type"
  msgstr ""
  
! #: cp/parser.cc:21639
  #, gcc-internal-format
  msgid "elaborated-type-specifier for a scoped enum must not use the %qD keyword"
  msgstr ""
  
! #: cp/parser.cc:21715
  #, gcc-internal-format
  msgid "%<template%> must follow a nested-name-specifier"
  msgstr ""
  
! #: cp/parser.cc:21877
  #, gcc-internal-format
  msgid "declaration %qD does not declare anything"
  msgstr ""
  
! #: cp/parser.cc:21965
  #, gcc-internal-format
  msgid "attributes ignored on uninstantiated type"
  msgstr ""
  
! #: cp/parser.cc:21971
  #, gcc-internal-format
  msgid "attributes ignored on template instantiation"
  msgstr ""
  
! #: cp/parser.cc:21983
  #, gcc-internal-format
  msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration"
  msgstr ""
  
! #: cp/parser.cc:22124
  #, fuzzy, gcc-internal-format
  msgid "%qD is an enumeration template"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/parser.cc:22135
  #, gcc-internal-format
  msgid "%qD does not name an enumeration in %qT"
  msgstr ""
  
! #: cp/parser.cc:22150
  #, gcc-internal-format
  msgid "unnamed scoped enum is not allowed"
  msgstr ""
  
! #: cp/parser.cc:22168
  #, gcc-internal-format
  msgid "types may not be defined in enum-base"
  msgstr ""
  
! #: cp/parser.cc:22214
  #, gcc-internal-format
  msgid "declaration of enumeration with fixed underlying type and no enumerator list is only permitted as a standalone declaration"
  msgstr ""
  
! #: cp/parser.cc:22218
  #, gcc-internal-format
  msgid "expected %<;%> or %<{%>"
  msgstr ""
  
! #: cp/parser.cc:22261
  #, gcc-internal-format
  msgid "cannot add an enumerator list to a template instantiation"
  msgstr ""
  
! #: cp/parser.cc:22275
  #, gcc-internal-format
  msgid "nested name specifier %qT for enum declaration does not name a class or namespace"
  msgstr ""
  
! #: cp/parser.cc:22287 cp/parser.cc:28220
  #, gcc-internal-format
  msgid "declaration of %qD in namespace %qD which does not enclose %qD"
  msgstr ""
  
! #: cp/parser.cc:22292 cp/parser.cc:28225
  #, gcc-internal-format
  msgid "declaration of %qD in %qD which does not enclose %qD"
  msgstr ""
  
! #: cp/parser.cc:22304 cp/parser.cc:28238
  #, gcc-internal-format
  msgid "extra qualification not allowed"
  msgstr ""
  
! #: cp/parser.cc:22344
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids an empty source file"
  msgid "ISO C++ forbids empty unnamed enum"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð¿ÑƒÑ�Ñ‚Ñ‹ Ñ–Ð·Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹ Ñ„Ð°Ð¹Ð»"
  
! #: cp/parser.cc:22368
  #, gcc-internal-format
  msgid "opaque-enum-specifier without name"
  msgstr ""
  
! #: cp/parser.cc:22371
  #, gcc-internal-format
  msgid "opaque-enum-specifier must use a simple identifier"
  msgstr ""
  
! #: cp/parser.cc:22492
  #, gcc-internal-format
  msgid "unexpanded parameter pack in enumerator in lambda"
  msgstr ""
  
! #: cp/parser.cc:22567
  #, gcc-internal-format
  msgid "%qD is not a namespace-name; did you mean %qs?"
  msgstr ""
  
! #: cp/parser.cc:22571
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function,"
  msgid "%qD is not a namespace-name"
  msgstr "`%D' - Ð³Ñ�Ñ‚Ð° Ð½Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�,"
  
! #: cp/parser.cc:22575
  #, gcc-internal-format
  msgid "expected namespace-name"
  msgstr ""
  
! #: cp/parser.cc:22636
  #, gcc-internal-format
  msgid "nested inline namespace definitions only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:22648
  #, gcc-internal-format
  msgid "standard attributes on namespaces must precede the namespace name"
  msgstr ""
  
! #: cp/parser.cc:22667
  #, gcc-internal-format
  msgid "nested namespace definitions only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:22677
  #, gcc-internal-format
  msgid "nested namespace name required"
  msgstr ""
  
! #: cp/parser.cc:22682
  #, gcc-internal-format
  msgid "namespace name required"
  msgstr ""
  
! #: cp/parser.cc:22686
  #, gcc-internal-format
  msgid "a nested namespace definition cannot have attributes"
  msgstr ""
  
! #: cp/parser.cc:22689
  #, gcc-internal-format
  msgid "a nested namespace definition cannot be inline"
  msgstr ""
  
! #: cp/parser.cc:22696
  #, gcc-internal-format
  msgid "namespace %qD entered"
  msgstr ""
  
! #: cp/parser.cc:22752
  #, gcc-internal-format
  msgid "%<namespace%> definition is not allowed here"
  msgstr ""
  
! #: cp/parser.cc:22934
  #, gcc-internal-format
  msgid "pack expansion in using-declaration only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:22978
  #, fuzzy, gcc-internal-format
  msgid "a template-id may not appear in a using-declaration"
  msgstr "\"%s\" - Ð³Ñ�Ñ‚Ð° Ð½Ðµ Ð¿Ð°Ñ‡Ð°Ñ‚Ð°Ðº Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ–"
  
! #: cp/parser.cc:22996
  #, gcc-internal-format
  msgid "comma-separated list in using-declaration only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:23006
  #, gcc-internal-format
  msgid "access declarations are deprecated in favor of using-declarations; suggestion: add the %<using%> keyword"
  msgstr ""
  
! #: cp/parser.cc:23052
  #, gcc-internal-format
  msgid "%<using enum%> only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:23055
  #, gcc-internal-format
  msgid "%<using enum%> of dependent type %qT"
  msgstr ""
  
! #: cp/parser.cc:23057
  #, gcc-internal-format
  msgid "%<using enum%> of non-enumeration type %q#T"
  msgstr ""
  
! #: cp/parser.cc:23059
  #, fuzzy, gcc-internal-format
  msgid "%<using enum%> of incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/parser.cc:23061
  #, gcc-internal-format
  msgid "%<using enum%> of %qT before its enum-specifier"
  msgstr ""
  
! #: cp/parser.cc:23071
  #, fuzzy, gcc-internal-format
  msgid "opaque-enum-declaration here"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/parser.cc:23141
  #, gcc-internal-format
  msgid "types may not be defined in alias template declarations"
  msgstr ""
  
! #: cp/parser.cc:23293
  #, gcc-internal-format
  msgid "expected string-literal or constexpr in parentheses"
  msgstr ""
  
! #: cp/parser.cc:23354
  #, gcc-internal-format
  msgid "%<asm%> in %<constexpr%> function only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:23375 cp/parser.cc:23393 cp/parser.cc:23408
  #, fuzzy, gcc-internal-format
  msgid "duplicate %<asm%> qualifier %qT"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½Ð½Ðµ \"volatile\""
  
! #: cp/parser.cc:23382
  #, gcc-internal-format
  msgid "%<asm%> qualifier %qT ignored outside of function body"
  msgstr ""
  
! #: cp/parser.cc:23421
  #, gcc-internal-format
  msgid "%qT is not an %<asm%> qualifier"
  msgstr ""
  
! #: cp/parser.cc:23437
  #, gcc-internal-format
  msgid "%<asm%> qualifier outside of function body"
  msgstr ""
  
! #: cp/parser.cc:23587
  #, fuzzy, gcc-internal-format
  msgid "attributes ignored on %<asm%> declaration"
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
! #: cp/parser.cc:23678
  #, gcc-internal-format
  msgid "empty parentheses were disambiguated as a function declaration"
  msgstr ""
  
! #: cp/parser.cc:23689
  #, gcc-internal-format
  msgid "remove parentheses to default-initialize a variable"
  msgstr ""
  
! #: cp/parser.cc:23694
  #, gcc-internal-format
  msgid "or replace parentheses with braces to aggregate-initialize a variable"
  msgstr ""
  
! #: cp/parser.cc:23697
  #, gcc-internal-format
  msgid "or replace parentheses with braces to value-initialize a variable"
  msgstr ""
  
! #: cp/parser.cc:23714 cp/parser.cc:23739
  #, gcc-internal-format
  msgid "parentheses were disambiguated as a function declaration"
  msgstr ""
  
! #: cp/parser.cc:23726 cp/parser.cc:23747
  #, gcc-internal-format
  msgid "replace parentheses with braces to declare a variable"
  msgstr ""
  
! #: cp/parser.cc:23733
  #, gcc-internal-format
  msgid "add parentheses to declare a variable"
  msgstr ""
  
! #: cp/parser.cc:23980
  #, fuzzy, gcc-internal-format
  msgid "a function-definition is not allowed here"
  msgstr "Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ñ‹ Ñ�ÐµÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð° Ð´Ð»Ñ� Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ñ‹"
  
! #: cp/parser.cc:23991
  #, gcc-internal-format
  msgid "an %<asm%> specification is not allowed on a function-definition"
  msgstr ""
  
! #: cp/parser.cc:23995
  #, fuzzy, gcc-internal-format
  msgid "attributes are not allowed on a function-definition"
  msgstr "\"%s\" - Ð³Ñ�Ñ‚Ð° Ð½Ðµ Ð¿Ð°Ñ‡Ð°Ñ‚Ð°Ðº Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ–"
  
! #: cp/parser.cc:24046
  #, gcc-internal-format
  msgid "expected constructor, destructor, or type conversion"
  msgstr ""
  
! #: cp/parser.cc:24204
  #, fuzzy, gcc-internal-format
  msgid "initializer provided for function"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: cp/parser.cc:24249
  #, gcc-internal-format
  msgid "attributes after parenthesized initializer ignored"
  msgstr ""
  
! #: cp/parser.cc:24261
  #, gcc-internal-format
  msgid "non-function %qD declared as implicit template"
  msgstr ""
  
! #: cp/parser.cc:24790
  #, fuzzy, gcc-internal-format
  msgid "array bound is not an integer constant"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/parser.cc:24915
  #, gcc-internal-format
  msgid "cannot define member of dependent typedef %qT"
  msgstr ""
  
! #: cp/parser.cc:24919
  #, fuzzy, gcc-internal-format
  msgid "%<%T::%E%> is not a type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
--- 63459,64816 ----
  msgid "ISO C++ does not allow %<alignof%> with a non-type"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: cp/parser.cc:9509
  #, gcc-internal-format
  msgid "types may not be defined in %<noexcept%> expressions"
  msgstr ""
  
! #: cp/parser.cc:9568
  #, gcc-internal-format
  msgid "%<co_await%> cannot be used in default arguments"
  msgstr ""
  
! #: cp/parser.cc:9793 cp/parser.cc:34881
  #, gcc-internal-format
  msgid "types may not be defined in %qs expressions"
  msgstr ""
  
! #: cp/parser.cc:9858
  #, gcc-internal-format
  msgid "%<__builtin_has_attribute%> with dependent argument not supported yet"
  msgstr ""
  
! #: cp/parser.cc:9944
  #, gcc-internal-format
  msgid "types may not be defined in a new-expression"
  msgstr ""
  
! #: cp/parser.cc:9962
  #, gcc-internal-format
  msgid "array bound forbidden after parenthesized type-id"
  msgstr ""
  
! #: cp/parser.cc:9964
  #, gcc-internal-format
  msgid "try removing the parentheses around the type-id"
  msgstr ""
  
! #: cp/parser.cc:9997
  #, gcc-internal-format
  msgid "initialization of new-expression for type %<auto%> requires exactly one element"
  msgstr ""
  
! #: cp/parser.cc:10042
  #, gcc-internal-format
  msgid "expected expression-list or type-id"
  msgstr ""
  
! #: cp/parser.cc:10071
  #, gcc-internal-format
  msgid "types may not be defined in a new-type-id"
  msgstr ""
  
! #: cp/parser.cc:10119
  #, gcc-internal-format
  msgid "attributes ignored on outermost array type in new expression"
  msgstr ""
  
! #: cp/parser.cc:10215
  #, gcc-internal-format
  msgid "expression in new-declarator must have integral or enumeration type"
  msgstr ""
  
! #: cp/parser.cc:10621
  #, gcc-internal-format
  msgid "use of old-style cast to %q#T"
  msgstr ""
  
! #: cp/parser.cc:10771
  #, gcc-internal-format
  msgid "%<>>%> operator is treated as two right angle brackets in C++11"
  msgstr ""
  
! #: cp/parser.cc:10774
  #, gcc-internal-format
  msgid "suggest parentheses around %<>>%> expression"
  msgstr ""
  
! #: cp/parser.cc:11000
  #, gcc-internal-format
  msgid "ISO C++ does not allow %<?:%> with omitted middle operand"
  msgstr ""
  
! #: cp/parser.cc:11324
  #, gcc-internal-format
  msgid "top-level comma expression in array subscript is deprecated"
  msgstr ""
  
! #: cp/parser.cc:11472
  #, gcc-internal-format
  msgid "types may not be defined within %<__builtin_offsetof%>"
  msgstr ""
  
! #: cp/parser.cc:11606
  #, gcc-internal-format
  msgid "trailing argument to %<__type_pack_element%> is not a type"
  msgstr ""
  
! #: cp/parser.cc:11706
  #, gcc-internal-format
  msgid "lambda-expression in template parameter type"
  msgstr ""
  
! #: cp/parser.cc:11716
  #, gcc-internal-format
  msgid "lambda-expression in unevaluated context only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:11726
  #, gcc-internal-format
  msgid "lambda-expression in template-argument only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:11900
  #, gcc-internal-format
  msgid "non-local lambda expression cannot have a capture-default"
  msgstr ""
  
! #: cp/parser.cc:11923
  #, gcc-internal-format
  msgid "expected end of capture-list"
  msgstr ""
  
! #: cp/parser.cc:11939
  #, gcc-internal-format
  msgid "explicit by-copy capture of %<this%> with by-copy capture default only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:11945 cp/parser.cc:11967 cp/parser.cc:12165
  #, gcc-internal-format
  msgid "already captured %qD in lambda expression"
  msgstr ""
  
! #: cp/parser.cc:11961
  #, gcc-internal-format
  msgid "%<*this%> capture only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:11981
  #, fuzzy, gcc-internal-format
  msgid "%<this%> cannot be captured by reference"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/parser.cc:12001
  #, gcc-internal-format
  msgid "pack init-capture only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:12012
  #, gcc-internal-format
  msgid "%<&%> should come before %<...%>"
  msgstr ""
  
! #: cp/parser.cc:12042
  #, gcc-internal-format
  msgid "lambda capture initializers only available with %<-std=c++14%> or %<-std=gnu++14%>"
  msgstr ""
  
! #: cp/parser.cc:12051
  #, gcc-internal-format
  msgid "empty initializer for lambda init-capture"
  msgstr ""
  
! #: cp/parser.cc:12076
  #, gcc-internal-format
  msgid "capture of non-variable %qE"
  msgstr ""
  
! #: cp/parser.cc:12080 cp/parser.cc:12091 cp/semantics.cc:4618
  #: cp/semantics.cc:4634
  #, fuzzy, gcc-internal-format
  msgid "%q#D declared here"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/parser.cc:12087
  #, gcc-internal-format
  msgid "capture of variable %qD with non-automatic storage duration"
  msgstr ""
  
! #: cp/parser.cc:12125
  #, gcc-internal-format
  msgid "too many %<...%> in lambda capture"
  msgstr ""
  
! #: cp/parser.cc:12136
  #, gcc-internal-format
  msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
  msgstr ""
  
! #: cp/parser.cc:12141
  #, gcc-internal-format
  msgid "explicit by-reference capture of %qD redundant with by-reference capture default"
  msgstr ""
  
! #: cp/parser.cc:12223
  #, gcc-internal-format
  msgid "lambda templates are only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:12277
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "default argument specified for lambda parameter"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž, Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ… Ð´Ð»Ñ� Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
  
! #: cp/parser.cc:12300
  #, gcc-internal-format
  msgid "parameter declaration before lambda declaration specifiers only optional with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:12330 cp/pt.cc:15002
  #, gcc-internal-format
  msgid "a lambda with captures may not have an explicit object parameter of an unrelated type"
  msgstr ""
  
! #: cp/parser.cc:12343
  #, gcc-internal-format
  msgid "%<mutable%> lambda specifier with explicit object parameter"
  msgstr ""
  
! #: cp/parser.cc:12352
  #, gcc-internal-format
  msgid "the passed in closure object will not be mutated because it is taken by value"
  msgstr ""
  
! #: cp/parser.cc:12356
  #, gcc-internal-format
  msgid "declare the explicit object parameter as non-const reference instead"
  msgstr ""
  
! #: cp/parser.cc:12360
  #, gcc-internal-format
  msgid "explicit object parameter is already a mutable reference"
  msgstr ""
  
! #: cp/parser.cc:12367
  #, gcc-internal-format
  msgid "%<static%> lambda specifier with explicit object parameter"
  msgstr ""
  
! #: cp/parser.cc:12385
  #, gcc-internal-format
  msgid "%<static%> lambda specifier with lambda capture"
  msgstr ""
  
! #: cp/parser.cc:12397
  #, gcc-internal-format
  msgid "parameter declaration before lambda transaction qualifier only optional with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:12410
  #, gcc-internal-format
  msgid "parameter declaration before lambda exception specification only optional with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:12428
  #, gcc-internal-format
  msgid "parameter declaration before lambda trailing return type only optional with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:12470
  #, gcc-internal-format
  msgid "%<constexpr%> lambda only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:13031
  #, fuzzy, gcc-internal-format
  #| msgid "virtual functions cannot be friends"
  msgid "preconditions cannot be statements"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/parser.cc:13034
  #, fuzzy, gcc-internal-format
  #| msgid "empty body in an else-statement"
  msgid "postconditions cannot be statements"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ñ†ÐµÐ»Ð° Ñž else-Ð²Ñ‹Ñ€Ð°Ð¶Ñ�Ð½Ð½Ñ–"
  
! #: cp/parser.cc:13039
  #, gcc-internal-format
  msgid "assertions must be followed by %<;%>"
  msgstr ""
  
! #: cp/parser.cc:13204
  #, gcc-internal-format
  msgid "label at end of compound statement only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:13384 cp/parser.cc:13629
  #, gcc-internal-format
  msgid "attributes at the beginning of statement are ignored"
  msgstr ""
  
! #: cp/parser.cc:13455
  #, fuzzy, gcc-internal-format
  #| msgid "empty body in an else-statement"
  msgid "expected labeled-statement"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ñ†ÐµÐ»Ð° Ñž else-Ð²Ñ‹Ñ€Ð°Ð¶Ñ�Ð½Ð½Ñ–"
  
! #: cp/parser.cc:13504
  #, gcc-internal-format
  msgid "case label %qE not within a switch statement"
  msgstr ""
  
! #: cp/parser.cc:13637
  #, gcc-internal-format
  msgid "need %<typename%> before %qE because %qT is a dependent scope"
  msgstr ""
  
  #. A::A a;
! #: cp/parser.cc:13643
  #, gcc-internal-format
  msgid "%qE names the constructor, not the type"
  msgstr ""
  
! #: cp/parser.cc:13701
  #, gcc-internal-format
  msgid "compound-statement in %<constexpr%> function"
  msgstr ""
  
! #: cp/parser.cc:13765
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested with %<tile%> directive"
  msgstr ""
  
! #: cp/parser.cc:13970
  #, gcc-internal-format
  msgid "%<if constexpr%> only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:13992
  #, gcc-internal-format
  msgid "%<if consteval%> only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:14017 cp/parser.cc:14052
  #, gcc-internal-format
  msgid "%<if consteval%> requires compound statement"
  msgstr ""
  
! #: cp/parser.cc:14094
  #, gcc-internal-format
  msgid "init-statement in selection statements only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:14262 cp/parser.cc:35393
  #, fuzzy, gcc-internal-format
  #| msgid "empty body in an else-statement"
  msgid "expected selection-statement"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ñ†ÐµÐ»Ð° Ñž else-Ð²Ñ‹Ñ€Ð°Ð¶Ñ�Ð½Ð½Ñ–"
  
! #: cp/parser.cc:14303
  #, gcc-internal-format
  msgid "condition declares an array"
  msgstr ""
  
! #: cp/parser.cc:14305
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function"
  msgid "condition declares a function"
  msgstr "Ð½Ðµ Ñ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/parser.cc:14346
  #, gcc-internal-format
  msgid "types may not be defined in conditions"
  msgstr ""
  
  #. Anything else is an error.
! #: cp/parser.cc:14448 cp/parser.cc:24113 cp/parser.cc:26832
  #, fuzzy, gcc-internal-format
  #| msgid "invalid initializer"
  msgid "expected initializer"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/parser.cc:14498
  #, gcc-internal-format
  msgid "range-based %<for%> loops with initializer only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:14760
  #, gcc-internal-format
  msgid "loop variable %qD of type %qT binds to a temporary constructed from type %qT"
  msgstr ""
  
  #. rval
! #: cp/parser.cc:14767
  #, gcc-internal-format
  msgid "use non-reference type %qT to make the copy explicit or %qT to prevent copying"
  msgstr ""
  
! #: cp/parser.cc:14793
  #, gcc-internal-format
  msgid "loop variable %qD creates a copy from type %qT"
  msgstr ""
  
! #: cp/parser.cc:14798
  #, gcc-internal-format
  msgid "use reference type to prevent copying"
  msgstr ""
  
! #: cp/parser.cc:14937
  #, gcc-internal-format
  msgid "range-based %<for%> expression of type %qT has incomplete type"
  msgstr ""
  
! #: cp/parser.cc:15021
  #, gcc-internal-format
  msgid "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
  msgstr ""
  
! #: cp/parser.cc:15173 cp/parser.cc:35396
  #, fuzzy, gcc-internal-format
  #| msgid "empty body in an else-statement"
  msgid "expected iteration-statement"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ñ†ÐµÐ»Ð° Ñž else-Ð²Ñ‹Ñ€Ð°Ð¶Ñ�Ð½Ð½Ñ–"
  
! #: cp/parser.cc:15218
  #, gcc-internal-format
  msgid "alias-declaration in init-statement only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:15235
  #, gcc-internal-format
  msgid "range-based %<for%> loops only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/parser.cc:15397
  #, gcc-internal-format
  msgid "%<goto%> in %<constexpr%> function only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
  #. Issue a warning about this use of a GNU extension.
! #: cp/parser.cc:15406
  #, gcc-internal-format
  msgid "ISO C++ forbids computed gotos"
  msgstr ""
  
! #: cp/parser.cc:15425 cp/parser.cc:35399
  #, gcc-internal-format
  msgid "expected jump-statement"
  msgstr ""
  
! #: cp/parser.cc:15600
  #, gcc-internal-format
  msgid "expected module-partition"
  msgstr ""
  
! #: cp/parser.cc:15602
  #, gcc-internal-format
  msgid "expected module-name"
  msgstr ""
  
! #: cp/parser.cc:15644
  #, gcc-internal-format
  msgid "module-declaration not permitted in header-unit"
  msgstr ""
  
! #: cp/parser.cc:15650
  #, gcc-internal-format
  msgid "module-declaration must be at global scope"
  msgstr ""
  
! #: cp/parser.cc:15651
  #, gcc-internal-format
  msgid "scope opened here"
  msgstr ""
  
! #: cp/parser.cc:15677
  #, gcc-internal-format
  msgid "private module fragment"
  msgstr ""
  
! #: cp/parser.cc:15681
  #, gcc-internal-format
  msgid "private module fragment only permitted in purview of module interface or partition"
  msgstr ""
  
  #. Neither the first declaration, nor in a GMF.
! #: cp/parser.cc:15687
  #, gcc-internal-format
  msgid "module-declaration only permitted as first declaration, or ending a global module fragment"
  msgstr ""
  
! #: cp/parser.cc:15728
  #, gcc-internal-format
  msgid "post-module-declaration imports must be contiguous"
  msgstr ""
  
! #: cp/parser.cc:15730 cp/parser.cc:15739
  #, gcc-internal-format
  msgid "perhaps insert a line break after %<import%>, or other disambiguation, to prevent this being considered a module control-line"
  msgstr ""
  
! #: cp/parser.cc:15738
  #, gcc-internal-format
  msgid "import-declaration must be at global scope"
  msgstr ""
  
! #: cp/parser.cc:15762
  #, gcc-internal-format
  msgid "import specifying a module-partition must appear after a named module-declaration"
  msgstr ""
  
! #: cp/parser.cc:15783
  #, gcc-internal-format
  msgid "post-module-declaration imports must not be include-translated"
  msgstr ""
  
! #: cp/parser.cc:15786
  #, gcc-internal-format
  msgid "post-module-declaration imports must not be from header inclusion"
  msgstr ""
  
! #: cp/parser.cc:15807
  #, gcc-internal-format
  msgid "%qE may only occur after a module interface declaration"
  msgstr ""
  
! #: cp/parser.cc:15815
  #, gcc-internal-format
  msgid "%qE may only occur once in an export declaration"
  msgstr ""
  
! #: cp/parser.cc:15836
  #, gcc-internal-format
  msgid "%<export%> not part of following module-directive"
  msgstr ""
  
! #: cp/parser.cc:15875
  #, gcc-internal-format
  msgid "extra %<;%> outside of a function only allowed in C++11"
  msgstr ""
  
! #: cp/parser.cc:15878
  #, gcc-internal-format
  msgid "extra %<;%> outside of a function"
  msgstr ""
  
! #: cp/parser.cc:15887
  #, gcc-internal-format
  msgid "extra %<;%> inside a struct only allowed in C++11"
  msgstr ""
  
! #: cp/parser.cc:15889
  #, gcc-internal-format
  msgid "extra %<;%> inside a struct"
  msgstr ""
  
! #: cp/parser.cc:15897
  #, gcc-internal-format
  msgid "extra %<;%> after in-class function definition"
  msgstr ""
  
! #: cp/parser.cc:16068
  #, fuzzy, gcc-internal-format
  msgid "attributes are not permitted in this position"
  msgstr "Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ñ‹ Ñ�ÐµÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð° Ð´Ð»Ñ� Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ñ‹"
  
! #: cp/parser.cc:16072
  #, gcc-internal-format
  msgid "attributes may be inserted here"
  msgstr ""
  
! #: cp/parser.cc:16112
  #, fuzzy, gcc-internal-format
  msgid "explicit specializations are not permitted here"
  msgstr "Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ†Ñ‹Ñ�"
  
! #: cp/parser.cc:16114 cp/parser.cc:28304
  #, gcc-internal-format
  msgid "a specialization is always exported alongside its primary template"
  msgstr ""
  
! #: cp/parser.cc:16127
  #, gcc-internal-format
  msgid "explicit instantiations are not permitted here"
  msgstr ""
  
! #: cp/parser.cc:16143
  #, gcc-internal-format
  msgid "export-declarations are not permitted here"
  msgstr ""
  
! #: cp/parser.cc:16315
  #, gcc-internal-format
  msgid "%<__label__%> not at the beginning of a block"
  msgstr ""
  
! #: cp/parser.cc:16561
  #, gcc-internal-format
  msgid "non-variable %qD in declaration with more than one declarator with placeholder type"
  msgstr ""
  
! #: cp/parser.cc:16580
  #, gcc-internal-format
  msgid "inconsistent deduction for %qT: %qT and then %qT"
  msgstr ""
  
! #: cp/parser.cc:16601
  #, gcc-internal-format
  msgid "mixing declarations and function-definitions is forbidden"
  msgstr ""
  
! #: cp/parser.cc:16626
  #, gcc-internal-format
  msgid "types may not be defined in a for-range-declaration"
  msgstr ""
  
! #: cp/parser.cc:16683
  #, gcc-internal-format
  msgid "initializer in range-based %<for%> loop"
  msgstr ""
  
! #: cp/parser.cc:16686
  #, fuzzy, gcc-internal-format
  #| msgid "multiple declarations `%T' and `%T'"
  msgid "multiple declarations in range-based %<for%> loop"
  msgstr "Ð½ÐµÐ°Ð´Ð½Ð¾Ð»ÑŒÐºÐ°Ð²Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ `%T' Ñ– `%T'"
  
! #: cp/parser.cc:16726
  #, gcc-internal-format
  msgid "structured bindings with attributed identifiers only available with %<-std=c++2c%> or %<-std=gnu++2c%>"
  msgstr ""
  
! #: cp/parser.cc:16763
  #, gcc-internal-format
  msgid "structured bindings in conditions only available with %<-std=c++2c%> or %<-std=gnu++2c%>"
  msgstr ""
  
! #: cp/parser.cc:16767
  #, gcc-internal-format
  msgid "structured bindings only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:16824
  #, fuzzy, gcc-internal-format
  #| msgid "empty declaration"
  msgid "empty structured binding declaration"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: cp/parser.cc:16842
  #, fuzzy, gcc-internal-format
  msgid "invalid initializer for structured binding declaration"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/parser.cc:17037
  #, gcc-internal-format
  msgid "%<this%> must be the first specifier in a parameter declaration"
  msgstr ""
  
! #: cp/parser.cc:17060
  #, gcc-internal-format
  msgid "%<friend%> used outside of class"
  msgstr ""
  
! #: cp/parser.cc:17098
  #, gcc-internal-format
  msgid "the %<bool%> keyword is not allowed in a C++20 concept definition"
  msgstr ""
  
! #: cp/parser.cc:17101
  #, gcc-internal-format
  msgid "C++20 concept definition syntax is %<concept <name> = <expr>%>"
  msgstr ""
  
! #: cp/parser.cc:17152
  #, gcc-internal-format
  msgid "%<typedef%> specifier conflicts with %qs"
  msgstr ""
  
! #: cp/parser.cc:17178
  #, gcc-internal-format
  msgid "%<auto%> changes meaning in C++11; please remove it"
  msgstr ""
  
! #: cp/parser.cc:17214
  #, fuzzy, gcc-internal-format
  msgid "%qD invalid in condition"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: cp/parser.cc:17223
  #, fuzzy, gcc-internal-format
  msgid "%qD invalid in lambda"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: cp/parser.cc:17227
  #, gcc-internal-format
  msgid "%qD only valid in lambda with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:17309
  #, gcc-internal-format
  msgid "type-specifier invalid in lambda"
  msgstr ""
  
! #: cp/parser.cc:17322
  #, gcc-internal-format
  msgid "standard attributes in middle of decl-specifiers"
  msgstr ""
  
! #: cp/parser.cc:17324
  #, gcc-internal-format
  msgid "standard attributes must precede the decl-specifiers to apply to the declaration, or follow them to apply to the type"
  msgstr ""
  
! #: cp/parser.cc:17339
  #, fuzzy, gcc-internal-format
  msgid "class definition may not be declared a friend"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/parser.cc:17412 cp/parser.cc:29490
  #, gcc-internal-format
  msgid "templates may not be %<virtual%>"
  msgstr ""
  
! #: cp/parser.cc:17431
  #, gcc-internal-format
  msgid "types may not be defined in explicit-specifier"
  msgstr ""
  
! #: cp/parser.cc:17435
  #, gcc-internal-format
  msgid "%<explicit(bool)%> only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:17503
  #, fuzzy, gcc-internal-format
  msgid "invalid linkage-specification"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ñ� Ñ�Ð¿ÐµÑ†Ñ‹Ñ„Ñ–ÐºÐ°Ñ†Ñ‹Ñ�! ÐŸÐ°Ð¼Ñ‹Ð»ÐºÐ° Ñž cc."
  
! #: cp/parser.cc:17610
  #, gcc-internal-format
  msgid "%<static_assert%> without a message only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:17640
  #, gcc-internal-format
  msgid "%<static_assert%> with non-string message only available with %<-std=c++2c%> or %<-std=gnu++2c%>"
  msgstr ""
  
! #: cp/parser.cc:17844
  #, gcc-internal-format
  msgid "%<decltype(auto)%> type specifier only available with %<-std=c++14%> or %<-std=gnu++14%>"
  msgstr ""
  
! #: cp/parser.cc:17857
  #, gcc-internal-format
  msgid "types may not be defined in %<decltype%> expressions"
  msgstr ""
  
! #: cp/parser.cc:18033
  #, gcc-internal-format
  msgid "types may not be defined in a conversion-type-id"
  msgstr ""
  
! #: cp/parser.cc:18062
  #, gcc-internal-format
  msgid "invalid use of %<auto%> in conversion operator"
  msgstr ""
  
! #: cp/parser.cc:18066
  #, gcc-internal-format
  msgid "use of %<auto%> in member template conversion operator can never be deduced"
  msgstr ""
  
! #: cp/parser.cc:18150
  #, gcc-internal-format
  msgid "only constructors take member initializers"
  msgstr ""
  
! #: cp/parser.cc:18177
  #, fuzzy, gcc-internal-format
  msgid "cannot expand initializer for member %qD"
  msgstr "Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/parser.cc:18189 cp/pt.cc:28313
  #, gcc-internal-format
  msgid "mem-initializer for %qD follows constructor delegation"
  msgstr ""
  
! #: cp/parser.cc:18201 cp/pt.cc:28325
  #, gcc-internal-format
  msgid "constructor delegation follows mem-initializer for %qD"
  msgstr ""
  
! #: cp/parser.cc:18253
  #, gcc-internal-format
  msgid "anachronistic old-style base class initializer"
  msgstr ""
  
! #: cp/parser.cc:18341
  #, gcc-internal-format
  msgid "keyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)"
  msgstr ""
  
! #: cp/parser.cc:18753
  #, gcc-internal-format
  msgid "space between quotes and suffix is deprecated in C++23"
  msgstr ""
  
! #: cp/parser.cc:18759
  #, gcc-internal-format
  msgid "unexpected keyword; remove space between quotes and suffix identifier"
  msgstr ""
  
! #: cp/parser.cc:18765
  #, gcc-internal-format
  msgid "expected suffix identifier"
  msgstr ""
  
! #: cp/parser.cc:18774
  #, gcc-internal-format
  msgid "expected empty string after %<operator%> keyword"
  msgstr ""
  
! #: cp/parser.cc:18780
  #, gcc-internal-format
  msgid "invalid encoding prefix in literal operator"
  msgstr ""
  
! #: cp/parser.cc:18814
  #, fuzzy, gcc-internal-format
  #| msgid "unregistered operator %s"
  msgid "expected operator"
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ñ‹ Ð°Ð¿ÐµÑ€Ð°Ñ‚Ð°Ñ€ %s"
  
! #: cp/parser.cc:18861
  #, gcc-internal-format
  msgid "keyword %<export%> not implemented, and will be ignored"
  msgstr ""
  
! #: cp/parser.cc:18863
  #, gcc-internal-format
  msgid "keyword %<export%> is deprecated, and is ignored"
  msgstr ""
  
! #: cp/parser.cc:18865
  #, gcc-internal-format
  msgid "keyword %<export%> is enabled with %<-fmodules%>"
  msgstr ""
  
! #: cp/parser.cc:18970
  #, fuzzy, gcc-internal-format
  msgid "invalid constrained type parameter"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/parser.cc:18978
  #, fuzzy, gcc-internal-format
  msgid "cv-qualified type parameter"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/parser.cc:19094
  #, fuzzy, gcc-internal-format
  msgid "invalid use of %<auto%> in default template argument"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/parser.cc:19330 cp/parser.cc:19416 cp/parser.cc:26580
  #, fuzzy, gcc-internal-format
  msgid "template parameter pack %qD cannot have a default argument"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/parser.cc:19334 cp/parser.cc:19420
  #, fuzzy, gcc-internal-format
  msgid "template parameter packs cannot have default arguments"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/parser.cc:19487
  #, gcc-internal-format
  msgid "expected template-id"
  msgstr ""
  
! #: cp/parser.cc:19550
  #, gcc-internal-format
  msgid "%<<::%> cannot begin a template-argument list"
  msgstr ""
  
! #: cp/parser.cc:19554
  #, gcc-internal-format
  msgid "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>"
  msgstr ""
  
! #: cp/parser.cc:19558
  #, gcc-internal-format
  msgid "(if you use %<-fpermissive%> or %<-std=c++11%>, or %<-std=gnu++11%> G++ will accept your code)"
  msgstr ""
  
! #: cp/parser.cc:19589
  #, fuzzy, gcc-internal-format
  msgid "invalid template-argument-list"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/parser.cc:19590
  #, gcc-internal-format
  msgid "function name as the left hand operand of %<<%> is ill-formed in C++20; wrap the function name in %<()%>"
  msgstr ""
  
! #: cp/parser.cc:19597
  #, gcc-internal-format
  msgid "expected %<(%> after template-argument-list"
  msgstr ""
  
! #: cp/parser.cc:19703
  #, gcc-internal-format
  msgid "parse error in template argument list"
  msgstr ""
  
  #. The name does not name a template.
! #: cp/parser.cc:19788 cp/parser.cc:19980 cp/parser.cc:20189
  #, gcc-internal-format
  msgid "expected template-name"
  msgstr ""
  
! #: cp/parser.cc:19836
  #, gcc-internal-format
  msgid "non-template %qD used as template"
  msgstr ""
  
! #: cp/parser.cc:19838
  #, gcc-internal-format
  msgid "use %<%T::template %D%> to indicate that it is a template"
  msgstr ""
  
! #: cp/parser.cc:20053
  #, gcc-internal-format
  msgid "expected parameter pack before %<...%>"
  msgstr ""
  
! #: cp/parser.cc:20154 cp/parser.cc:20172 cp/parser.cc:20348
  #, gcc-internal-format
  msgid "expected template-argument"
  msgstr ""
  
! #: cp/parser.cc:20319
  #, fuzzy, gcc-internal-format
  msgid "invalid non-type template argument"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/parser.cc:20457
  #, gcc-internal-format
  msgid "explicit instantiation shall not use %<inline%> specifier"
  msgstr ""
  
! #: cp/parser.cc:20461
  #, gcc-internal-format
  msgid "explicit instantiation shall not use %<constexpr%> specifier"
  msgstr ""
  
! #: cp/parser.cc:20465
  #, gcc-internal-format
  msgid "explicit instantiation shall not use %<consteval%> specifier"
  msgstr ""
  
! #: cp/parser.cc:20526
  #, gcc-internal-format
  msgid "template specialization with C linkage"
  msgstr ""
  
! #: cp/parser.cc:20755
  #, gcc-internal-format
  msgid "expected type specifier"
  msgstr ""
  
! #: cp/parser.cc:20955
  #, gcc-internal-format
  msgid "use of %<auto%> in lambda parameter declaration only available with %<-std=c++14%> or %<-std=gnu++14%>"
  msgstr ""
  
! #: cp/parser.cc:20961
  #, gcc-internal-format
  msgid "use of %<auto%> in template argument"
  msgstr ""
  
! #: cp/parser.cc:20964
  #, gcc-internal-format
  msgid "use of %<auto%> in parameter declaration only available with %<-std=c++20%> or %<-fconcepts%>"
  msgstr ""
  
! #: cp/parser.cc:20968
  #, gcc-internal-format
  msgid "use of %<auto%> in parameter declaration only available with %<-std=c++14%> or %<-std=gnu++14%>"
  msgstr ""
  
! #: cp/parser.cc:21122
  #, gcc-internal-format
  msgid "expected template-id for type"
  msgstr ""
  
! #: cp/parser.cc:21263
  #, gcc-internal-format
  msgid "expected type-name"
  msgstr ""
  
! #: cp/parser.cc:21347
  #, fuzzy, gcc-internal-format
  #| msgid "function does not return string type"
  msgid "%qE does not constrain a type"
  msgstr "Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ� Ð½Ðµ Ð²Ñ�Ñ€Ñ‚Ð°Ðµ Ñ‚Ñ‹Ð¿ string"
  
! #: cp/parser.cc:21348
  #, gcc-internal-format
  msgid "concept defined here"
  msgstr ""
  
! #: cp/parser.cc:21379
  #, fuzzy, gcc-internal-format
  msgid "invalid use of concept-name %qD"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/parser.cc:21395
  #, gcc-internal-format
  msgid "expected %<auto%> or %<decltype(auto)%> after %qE"
  msgstr ""
  
! #: cp/parser.cc:21402
  #, gcc-internal-format
  msgid "unexpected placeholder in constrained result type"
  msgstr ""
  
! #: cp/parser.cc:21643
  #, gcc-internal-format
  msgid "elaborated-type-specifier for a scoped enum must not use the %qD keyword"
  msgstr ""
  
! #: cp/parser.cc:21719
  #, gcc-internal-format
  msgid "%<template%> must follow a nested-name-specifier"
  msgstr ""
  
! #: cp/parser.cc:21881
  #, gcc-internal-format
  msgid "declaration %qD does not declare anything"
  msgstr ""
  
! #: cp/parser.cc:21969
  #, gcc-internal-format
  msgid "attributes ignored on uninstantiated type"
  msgstr ""
  
! #: cp/parser.cc:21975
  #, gcc-internal-format
  msgid "attributes ignored on template instantiation"
  msgstr ""
  
! #: cp/parser.cc:21987
  #, gcc-internal-format
  msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration"
  msgstr ""
  
! #: cp/parser.cc:22128
  #, fuzzy, gcc-internal-format
  msgid "%qD is an enumeration template"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/parser.cc:22139
  #, gcc-internal-format
  msgid "%qD does not name an enumeration in %qT"
  msgstr ""
  
! #: cp/parser.cc:22154
  #, gcc-internal-format
  msgid "unnamed scoped enum is not allowed"
  msgstr ""
  
! #: cp/parser.cc:22172
  #, gcc-internal-format
  msgid "types may not be defined in enum-base"
  msgstr ""
  
! #: cp/parser.cc:22218
  #, gcc-internal-format
  msgid "declaration of enumeration with fixed underlying type and no enumerator list is only permitted as a standalone declaration"
  msgstr ""
  
! #: cp/parser.cc:22222
  #, gcc-internal-format
  msgid "expected %<;%> or %<{%>"
  msgstr ""
  
! #: cp/parser.cc:22265
  #, gcc-internal-format
  msgid "cannot add an enumerator list to a template instantiation"
  msgstr ""
  
! #: cp/parser.cc:22279
  #, gcc-internal-format
  msgid "nested name specifier %qT for enum declaration does not name a class or namespace"
  msgstr ""
  
! #: cp/parser.cc:22291 cp/parser.cc:28273
  #, gcc-internal-format
  msgid "declaration of %qD in namespace %qD which does not enclose %qD"
  msgstr ""
  
! #: cp/parser.cc:22296 cp/parser.cc:28278
  #, gcc-internal-format
  msgid "declaration of %qD in %qD which does not enclose %qD"
  msgstr ""
  
! #: cp/parser.cc:22308 cp/parser.cc:28291
  #, gcc-internal-format
  msgid "extra qualification not allowed"
  msgstr ""
  
! #: cp/parser.cc:22348
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids an empty source file"
  msgid "ISO C++ forbids empty unnamed enum"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð¿ÑƒÑ�Ñ‚Ñ‹ Ñ–Ð·Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹ Ñ„Ð°Ð¹Ð»"
  
! #: cp/parser.cc:22372
  #, gcc-internal-format
  msgid "opaque-enum-specifier without name"
  msgstr ""
  
! #: cp/parser.cc:22375
  #, gcc-internal-format
  msgid "opaque-enum-specifier must use a simple identifier"
  msgstr ""
  
! #: cp/parser.cc:22496
  #, gcc-internal-format
  msgid "unexpanded parameter pack in enumerator in lambda"
  msgstr ""
  
! #: cp/parser.cc:22571
  #, gcc-internal-format
  msgid "%qD is not a namespace-name; did you mean %qs?"
  msgstr ""
  
! #: cp/parser.cc:22575
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function,"
  msgid "%qD is not a namespace-name"
  msgstr "`%D' - Ð³Ñ�Ñ‚Ð° Ð½Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�,"
  
! #: cp/parser.cc:22579
  #, gcc-internal-format
  msgid "expected namespace-name"
  msgstr ""
  
! #: cp/parser.cc:22640
  #, gcc-internal-format
  msgid "nested inline namespace definitions only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:22652
  #, gcc-internal-format
  msgid "standard attributes on namespaces must precede the namespace name"
  msgstr ""
  
! #: cp/parser.cc:22671
  #, gcc-internal-format
  msgid "nested namespace definitions only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:22681
  #, gcc-internal-format
  msgid "nested namespace name required"
  msgstr ""
  
! #: cp/parser.cc:22686
  #, gcc-internal-format
  msgid "namespace name required"
  msgstr ""
  
! #: cp/parser.cc:22690
  #, gcc-internal-format
  msgid "a nested namespace definition cannot have attributes"
  msgstr ""
  
! #: cp/parser.cc:22693
  #, gcc-internal-format
  msgid "a nested namespace definition cannot be inline"
  msgstr ""
  
! #: cp/parser.cc:22700
  #, gcc-internal-format
  msgid "namespace %qD entered"
  msgstr ""
  
! #: cp/parser.cc:22756
  #, gcc-internal-format
  msgid "%<namespace%> definition is not allowed here"
  msgstr ""
  
! #: cp/parser.cc:22938
  #, gcc-internal-format
  msgid "pack expansion in using-declaration only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:22982
  #, fuzzy, gcc-internal-format
  msgid "a template-id may not appear in a using-declaration"
  msgstr "\"%s\" - Ð³Ñ�Ñ‚Ð° Ð½Ðµ Ð¿Ð°Ñ‡Ð°Ñ‚Ð°Ðº Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ–"
  
! #: cp/parser.cc:23000
  #, gcc-internal-format
  msgid "comma-separated list in using-declaration only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:23010
  #, gcc-internal-format
  msgid "access declarations are deprecated in favor of using-declarations; suggestion: add the %<using%> keyword"
  msgstr ""
  
! #: cp/parser.cc:23056
  #, gcc-internal-format
  msgid "%<using enum%> only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:23059
  #, gcc-internal-format
  msgid "%<using enum%> of dependent type %qT"
  msgstr ""
  
! #: cp/parser.cc:23061
  #, gcc-internal-format
  msgid "%<using enum%> of non-enumeration type %q#T"
  msgstr ""
  
! #: cp/parser.cc:23063
  #, fuzzy, gcc-internal-format
  msgid "%<using enum%> of incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/parser.cc:23065
  #, gcc-internal-format
  msgid "%<using enum%> of %qT before its enum-specifier"
  msgstr ""
  
! #: cp/parser.cc:23075
  #, fuzzy, gcc-internal-format
  msgid "opaque-enum-declaration here"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/parser.cc:23145
  #, gcc-internal-format
  msgid "types may not be defined in alias template declarations"
  msgstr ""
  
! #: cp/parser.cc:23297
  #, gcc-internal-format
  msgid "expected string-literal or constexpr in parentheses"
  msgstr ""
  
! #: cp/parser.cc:23358
  #, gcc-internal-format
  msgid "%<asm%> in %<constexpr%> function only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:23379 cp/parser.cc:23397 cp/parser.cc:23412
  #, fuzzy, gcc-internal-format
  msgid "duplicate %<asm%> qualifier %qT"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½Ð½Ðµ \"volatile\""
  
! #: cp/parser.cc:23386
  #, gcc-internal-format
  msgid "%<asm%> qualifier %qT ignored outside of function body"
  msgstr ""
  
! #: cp/parser.cc:23425
  #, gcc-internal-format
  msgid "%qT is not an %<asm%> qualifier"
  msgstr ""
  
! #: cp/parser.cc:23441
  #, gcc-internal-format
  msgid "%<asm%> qualifier outside of function body"
  msgstr ""
  
! #: cp/parser.cc:23591
  #, fuzzy, gcc-internal-format
  msgid "attributes ignored on %<asm%> declaration"
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
! #: cp/parser.cc:23682
  #, gcc-internal-format
  msgid "empty parentheses were disambiguated as a function declaration"
  msgstr ""
  
! #: cp/parser.cc:23693
  #, gcc-internal-format
  msgid "remove parentheses to default-initialize a variable"
  msgstr ""
  
! #: cp/parser.cc:23698
  #, gcc-internal-format
  msgid "or replace parentheses with braces to aggregate-initialize a variable"
  msgstr ""
  
! #: cp/parser.cc:23701
  #, gcc-internal-format
  msgid "or replace parentheses with braces to value-initialize a variable"
  msgstr ""
  
! #: cp/parser.cc:23718 cp/parser.cc:23743
  #, gcc-internal-format
  msgid "parentheses were disambiguated as a function declaration"
  msgstr ""
  
! #: cp/parser.cc:23730 cp/parser.cc:23751
  #, gcc-internal-format
  msgid "replace parentheses with braces to declare a variable"
  msgstr ""
  
! #: cp/parser.cc:23737
  #, gcc-internal-format
  msgid "add parentheses to declare a variable"
  msgstr ""
  
! #: cp/parser.cc:23984
  #, fuzzy, gcc-internal-format
  msgid "a function-definition is not allowed here"
  msgstr "Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ñ‹ Ñ�ÐµÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð° Ð´Ð»Ñ� Ð³Ñ�Ñ‚Ð°Ð¹ Ð¼Ñ�Ñ‚Ñ‹"
  
! #: cp/parser.cc:23995
  #, gcc-internal-format
  msgid "an %<asm%> specification is not allowed on a function-definition"
  msgstr ""
  
! #: cp/parser.cc:23999
  #, fuzzy, gcc-internal-format
  msgid "attributes are not allowed on a function-definition"
  msgstr "\"%s\" - Ð³Ñ�Ñ‚Ð° Ð½Ðµ Ð¿Ð°Ñ‡Ð°Ñ‚Ð°Ðº Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ–"
  
! #: cp/parser.cc:24050
  #, gcc-internal-format
  msgid "expected constructor, destructor, or type conversion"
  msgstr ""
  
! #: cp/parser.cc:24208
  #, fuzzy, gcc-internal-format
  msgid "initializer provided for function"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑŽ \"%s\""
  
! #: cp/parser.cc:24253
  #, gcc-internal-format
  msgid "attributes after parenthesized initializer ignored"
  msgstr ""
  
! #: cp/parser.cc:24265
  #, gcc-internal-format
  msgid "non-function %qD declared as implicit template"
  msgstr ""
  
! #: cp/parser.cc:24794
  #, fuzzy, gcc-internal-format
  msgid "array bound is not an integer constant"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð°Ð´Ð¼Ð¾ÑžÐ½Ñ‹"
  
! #: cp/parser.cc:24919
  #, gcc-internal-format
  msgid "cannot define member of dependent typedef %qT"
  msgstr ""
  
! #: cp/parser.cc:24923
  #, fuzzy, gcc-internal-format
  msgid "%<%T::%E%> is not a type"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
*************** msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°
*** 64722,65002 ****
  #. here because we do not have enough
  #. information about its original syntactic
  #. form.
! #: cp/parser.cc:24948
  #, gcc-internal-format
  msgid "invalid declarator"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ð°Ð»ÑŒÐ½Ñ–Ðº"
  
! #: cp/parser.cc:24957
  #, fuzzy, gcc-internal-format
  msgid "invalid use of constructor as a template"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/parser.cc:24959
  #, gcc-internal-format
  msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name"
  msgstr ""
  
  #. But declarations with qualified-ids can't appear in a
  #. function.
! #: cp/parser.cc:25074
  #, fuzzy, gcc-internal-format
  #| msgid "Invalid declaration"
  msgid "qualified-id in declaration"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ"
  
! #: cp/parser.cc:25099
  #, fuzzy, gcc-internal-format
  #| msgid "empty declaration"
  msgid "expected declarator"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: cp/parser.cc:25220
  #, gcc-internal-format
  msgid "%qD is a namespace"
  msgstr ""
  
! #: cp/parser.cc:25222
  #, gcc-internal-format
  msgid "cannot form pointer to member of non-class %q#T"
  msgstr ""
  
! #: cp/parser.cc:25243
  #, gcc-internal-format
  msgid "expected ptr-operator"
  msgstr ""
  
! #: cp/parser.cc:25304
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `volatile'"
  msgid "duplicate cv-qualifier"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½Ð½Ðµ \"volatile\""
  
! #: cp/parser.cc:25358
  #, gcc-internal-format
  msgid "multiple ref-qualifiers"
  msgstr ""
  
! #: cp/parser.cc:25395
  #, gcc-internal-format
  msgid "%qE requires %<-fgnu-tm%>"
  msgstr ""
  
! #: cp/parser.cc:25453
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `volatile'"
  msgid "duplicate virt-specifier"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½Ð½Ðµ \"volatile\""
  
! #: cp/parser.cc:25735
  #, fuzzy, gcc-internal-format
  msgid "missing template arguments after %qE"
  msgstr "Ð½ÐµÐ²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°ÐµÐ¼Ñ‹ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\""
  
! #: cp/parser.cc:25741
  #, gcc-internal-format
  msgid "%qT not permitted in template argument"
  msgstr ""
  
! #: cp/parser.cc:25744 cp/typeck2.cc:337 cp/typeck2.cc:383 cp/typeck2.cc:2519
  #: rust/backend/rust-tree.cc:3896
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `%T'"
  msgid "invalid use of %qT"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½ÑŒÐ½Ðµ `%T'"
  
! #: cp/parser.cc:25770
  #, gcc-internal-format
  msgid "types may not be defined in template arguments"
  msgstr ""
  
! #: cp/parser.cc:25779
  #, fuzzy, gcc-internal-format
  msgid "invalid use of %<auto%> in template argument"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/parser.cc:25900
  #, gcc-internal-format
  msgid "expected type-specifier"
  msgstr ""
  
! #: cp/parser.cc:26047
  #, gcc-internal-format
  msgid "omission of %<,%> before varargs %<...%> is deprecated in C++26"
  msgstr ""
  
! #: cp/parser.cc:26254
  #, gcc-internal-format
  msgid "expected %<,%> or %<...%>"
  msgstr ""
  
! #: cp/parser.cc:26332
  #, gcc-internal-format
  msgid "types may not be defined in parameter types"
  msgstr ""
  
! #: cp/parser.cc:26456
  #, gcc-internal-format
  msgid "%<this%> specifier in template parameter declaration"
  msgstr ""
  
! #: cp/parser.cc:26459
  #, gcc-internal-format
  msgid "%<this%> specifier in a requires-expression parameter"
  msgstr ""
  
! #: cp/parser.cc:26519
  #, gcc-internal-format
  msgid "an explicit object parameter cannot be a function parameter pack"
  msgstr ""
  
! #: cp/parser.cc:26560
  #, gcc-internal-format
  msgid "default arguments are only permitted for function parameters"
  msgstr ""
  
! #: cp/parser.cc:26578
  #, gcc-internal-format
  msgid "parameter pack %qD cannot have a default argument"
  msgstr ""
  
! #: cp/parser.cc:26584
  #, fuzzy, gcc-internal-format
  msgid "template parameter pack cannot have a default argument"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/parser.cc:26586
  #, gcc-internal-format
  msgid "parameter pack cannot have a default argument"
  msgstr ""
  
! #: cp/parser.cc:26609
  #, gcc-internal-format
  msgid "an explicit object parameter may not have a default argument"
  msgstr ""
  
! #: cp/parser.cc:26733
  #, gcc-internal-format
  msgid "function-try-block body of %<constexpr%> constructor only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:26737
  #, gcc-internal-format
  msgid "function-try-block body of %<constexpr%> function only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:26924
  #, fuzzy, gcc-internal-format
  msgid "probably missing a comma or an operator before"
  msgstr "Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½ Ð¿Ñ€Ð°Ð±ÐµÐ» Ð¿Ð°Ñ�Ð»Ñ� Ð½ÑƒÐ¼Ð°Ñ€Ð° \"%.*s\""
  
! #: cp/parser.cc:27086
  #, gcc-internal-format
  msgid "C++ designated initializers only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:27108
  #, gcc-internal-format
  msgid "ISO C++ does not allow GNU designated initializers"
  msgstr ""
  
! #: cp/parser.cc:27146
  #, gcc-internal-format
  msgid "ISO C++ does not allow C99 designated initializers"
  msgstr ""
  
! #: cp/parser.cc:27160
  #, gcc-internal-format
  msgid "either all initializer clauses should be designated or none of them should be"
  msgstr ""
  
! #: cp/parser.cc:27200
  #, gcc-internal-format
  msgid "%<...%> not allowed in designated initializer list"
  msgstr ""
  
! #: cp/parser.cc:27251
  #, gcc-internal-format
  msgid "%<.%s%> designator used multiple times in the same initializer list"
  msgstr ""
  
! #: cp/parser.cc:27307 cp/parser.cc:27442
  #, gcc-internal-format
  msgid "expected class-name"
  msgstr ""
  
! #: cp/parser.cc:27699
  #, gcc-internal-format
  msgid "expected %<;%> after class definition"
  msgstr ""
  
! #: cp/parser.cc:27702
  #, gcc-internal-format
  msgid "expected %<;%> after struct definition"
  msgstr ""
  
! #: cp/parser.cc:27705
  #, gcc-internal-format
  msgid "expected %<;%> after union definition"
  msgstr ""
  
! #: cp/parser.cc:28162
  #, gcc-internal-format
  msgid "expected %<{%> or %<:%>"
  msgstr ""
  
! #: cp/parser.cc:28173
! #, fuzzy, gcc-internal-format
! #| msgid "cannot find file for class %s"
! msgid "cannot specify %<override%> for a class"
! msgstr "Ð½ÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð·Ð½Ð°Ð¹Ñ�ÑŒÑ†Ñ– Ñ„Ð°Ð¹Ð» Ð´Ð»Ñ� ÐºÐ»Ñ�Ñ�Ð° %s"
! 
! #: cp/parser.cc:28181
  #, gcc-internal-format
  msgid "global qualification of class name is invalid"
  msgstr ""
  
! #: cp/parser.cc:28188
  #, gcc-internal-format
  msgid "qualified name does not name a class"
  msgstr ""
  
! #: cp/parser.cc:28200
  #, gcc-internal-format
  msgid "keyword %<template%> not allowed in class-head-name"
  msgstr ""
  
! #: cp/parser.cc:28206
  #, fuzzy, gcc-internal-format
  msgid "invalid class name in declaration of %qD"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ"
  
! #: cp/parser.cc:28249
  #, gcc-internal-format
  msgid "declaration of partial specialization in unbraced export-declaration"
  msgstr ""
  
! #: cp/parser.cc:28275
  #, gcc-internal-format
  msgid "an explicit instantiation cannot have a definition; use %<template <>%> to declare a specialization"
  msgstr ""
  
! #: cp/parser.cc:28282
  #, fuzzy, gcc-internal-format
  msgid "an explicit specialization must be preceded by %<template <>%>"
  msgstr "Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ†Ñ‹Ñ�"
  
! #: cp/parser.cc:28315
  #, gcc-internal-format
  msgid "function template %qD redeclared as a class template"
  msgstr ""
  
! #: cp/parser.cc:28348
  #, gcc-internal-format
  msgid "could not resolve typename type"
  msgstr ""
  
! #: cp/parser.cc:28413
  #, fuzzy, gcc-internal-format
  #| msgid "previous definition of `%#T'"
  msgid "previous definition of %q#T"
--- 64819,65093 ----
  #. here because we do not have enough
  #. information about its original syntactic
  #. form.
! #: cp/parser.cc:24952
  #, gcc-internal-format
  msgid "invalid declarator"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ð°Ð»ÑŒÐ½Ñ–Ðº"
  
! #: cp/parser.cc:24961
  #, fuzzy, gcc-internal-format
  msgid "invalid use of constructor as a template"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/parser.cc:24963
  #, gcc-internal-format
  msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name"
  msgstr ""
  
  #. But declarations with qualified-ids can't appear in a
  #. function.
! #: cp/parser.cc:25078
  #, fuzzy, gcc-internal-format
  #| msgid "Invalid declaration"
  msgid "qualified-id in declaration"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ"
  
! #: cp/parser.cc:25103
  #, fuzzy, gcc-internal-format
  #| msgid "empty declaration"
  msgid "expected declarator"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ"
  
! #: cp/parser.cc:25224
  #, gcc-internal-format
  msgid "%qD is a namespace"
  msgstr ""
  
! #: cp/parser.cc:25226
  #, gcc-internal-format
  msgid "cannot form pointer to member of non-class %q#T"
  msgstr ""
  
! #: cp/parser.cc:25247
  #, gcc-internal-format
  msgid "expected ptr-operator"
  msgstr ""
  
! #: cp/parser.cc:25308
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `volatile'"
  msgid "duplicate cv-qualifier"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½Ð½Ðµ \"volatile\""
  
! #: cp/parser.cc:25362
  #, gcc-internal-format
  msgid "multiple ref-qualifiers"
  msgstr ""
  
! #: cp/parser.cc:25399
  #, gcc-internal-format
  msgid "%qE requires %<-fgnu-tm%>"
  msgstr ""
  
! #: cp/parser.cc:25457 cp/parser.cc:28009
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `volatile'"
  msgid "duplicate virt-specifier"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½Ð½Ðµ \"volatile\""
  
! #: cp/parser.cc:25739
  #, fuzzy, gcc-internal-format
  msgid "missing template arguments after %qE"
  msgstr "Ð½ÐµÐ²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°ÐµÐ¼Ñ‹ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\""
  
! #: cp/parser.cc:25745
  #, gcc-internal-format
  msgid "%qT not permitted in template argument"
  msgstr ""
  
! #: cp/parser.cc:25748 cp/typeck2.cc:337 cp/typeck2.cc:383 cp/typeck2.cc:2519
  #: rust/backend/rust-tree.cc:3896
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `%T'"
  msgid "invalid use of %qT"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½ÑŒÐ½Ðµ `%T'"
  
! #: cp/parser.cc:25774
  #, gcc-internal-format
  msgid "types may not be defined in template arguments"
  msgstr ""
  
! #: cp/parser.cc:25783
  #, fuzzy, gcc-internal-format
  msgid "invalid use of %<auto%> in template argument"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/parser.cc:25904
  #, gcc-internal-format
  msgid "expected type-specifier"
  msgstr ""
  
! #: cp/parser.cc:26051
  #, gcc-internal-format
  msgid "omission of %<,%> before varargs %<...%> is deprecated in C++26"
  msgstr ""
  
! #: cp/parser.cc:26258
  #, gcc-internal-format
  msgid "expected %<,%> or %<...%>"
  msgstr ""
  
! #: cp/parser.cc:26336
  #, gcc-internal-format
  msgid "types may not be defined in parameter types"
  msgstr ""
  
! #: cp/parser.cc:26460
  #, gcc-internal-format
  msgid "%<this%> specifier in template parameter declaration"
  msgstr ""
  
! #: cp/parser.cc:26463
  #, gcc-internal-format
  msgid "%<this%> specifier in a requires-expression parameter"
  msgstr ""
  
! #: cp/parser.cc:26523
  #, gcc-internal-format
  msgid "an explicit object parameter cannot be a function parameter pack"
  msgstr ""
  
! #: cp/parser.cc:26564
  #, gcc-internal-format
  msgid "default arguments are only permitted for function parameters"
  msgstr ""
  
! #: cp/parser.cc:26582
  #, gcc-internal-format
  msgid "parameter pack %qD cannot have a default argument"
  msgstr ""
  
! #: cp/parser.cc:26588
  #, fuzzy, gcc-internal-format
  msgid "template parameter pack cannot have a default argument"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/parser.cc:26590
  #, gcc-internal-format
  msgid "parameter pack cannot have a default argument"
  msgstr ""
  
! #: cp/parser.cc:26613
  #, gcc-internal-format
  msgid "an explicit object parameter may not have a default argument"
  msgstr ""
  
! #: cp/parser.cc:26737
  #, gcc-internal-format
  msgid "function-try-block body of %<constexpr%> constructor only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:26741
  #, gcc-internal-format
  msgid "function-try-block body of %<constexpr%> function only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:26928
  #, fuzzy, gcc-internal-format
  msgid "probably missing a comma or an operator before"
  msgstr "Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½ Ð¿Ñ€Ð°Ð±ÐµÐ» Ð¿Ð°Ñ�Ð»Ñ� Ð½ÑƒÐ¼Ð°Ñ€Ð° \"%.*s\""
  
! #: cp/parser.cc:27090
  #, gcc-internal-format
  msgid "C++ designated initializers only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:27112
  #, gcc-internal-format
  msgid "ISO C++ does not allow GNU designated initializers"
  msgstr ""
  
! #: cp/parser.cc:27150
  #, gcc-internal-format
  msgid "ISO C++ does not allow C99 designated initializers"
  msgstr ""
  
! #: cp/parser.cc:27164
  #, gcc-internal-format
  msgid "either all initializer clauses should be designated or none of them should be"
  msgstr ""
  
! #: cp/parser.cc:27204
  #, gcc-internal-format
  msgid "%<...%> not allowed in designated initializer list"
  msgstr ""
  
! #: cp/parser.cc:27255
  #, gcc-internal-format
  msgid "%<.%s%> designator used multiple times in the same initializer list"
  msgstr ""
  
! #: cp/parser.cc:27311 cp/parser.cc:27446
  #, gcc-internal-format
  msgid "expected class-name"
  msgstr ""
  
! #: cp/parser.cc:27703
  #, gcc-internal-format
  msgid "expected %<;%> after class definition"
  msgstr ""
  
! #: cp/parser.cc:27706
  #, gcc-internal-format
  msgid "expected %<;%> after struct definition"
  msgstr ""
  
! #: cp/parser.cc:27709
  #, gcc-internal-format
  msgid "expected %<;%> after union definition"
  msgstr ""
  
! #: cp/parser.cc:28222
  #, gcc-internal-format
  msgid "expected %<{%> or %<:%>"
  msgstr ""
  
! #: cp/parser.cc:28234
  #, gcc-internal-format
  msgid "global qualification of class name is invalid"
  msgstr ""
  
! #: cp/parser.cc:28241
  #, gcc-internal-format
  msgid "qualified name does not name a class"
  msgstr ""
  
! #: cp/parser.cc:28253
  #, gcc-internal-format
  msgid "keyword %<template%> not allowed in class-head-name"
  msgstr ""
  
! #: cp/parser.cc:28259
  #, fuzzy, gcc-internal-format
  msgid "invalid class name in declaration of %qD"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ"
  
! #: cp/parser.cc:28302
  #, gcc-internal-format
  msgid "declaration of partial specialization in unbraced export-declaration"
  msgstr ""
  
! #: cp/parser.cc:28328
  #, gcc-internal-format
  msgid "an explicit instantiation cannot have a definition; use %<template <>%> to declare a specialization"
  msgstr ""
  
! #: cp/parser.cc:28335
  #, fuzzy, gcc-internal-format
  msgid "an explicit specialization must be preceded by %<template <>%>"
  msgstr "Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ†Ñ‹Ñ�"
  
! #: cp/parser.cc:28368
  #, gcc-internal-format
  msgid "function template %qD redeclared as a class template"
  msgstr ""
  
! #: cp/parser.cc:28401
  #, gcc-internal-format
  msgid "could not resolve typename type"
  msgstr ""
  
! #: cp/parser.cc:28466
  #, fuzzy, gcc-internal-format
  #| msgid "previous definition of `%#T'"
  msgid "previous definition of %q#T"
*************** msgstr "Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ðµ Ð²Ñ‹Ð·Ð½Ð°Ñ
*** 65005,65268 ****
  #. In a lambda this should work, but doesn't currently.
  #. We're in a lambda, but it isn't the innermost class.
  #. This should work, but currently doesn't.
! #: cp/parser.cc:28427 cp/pt.cc:4367
  #, gcc-internal-format
  msgid "unexpanded parameter pack in local class in lambda"
  msgstr ""
  
! #: cp/parser.cc:28533 cp/parser.cc:35343
  #, gcc-internal-format
  msgid "expected class-key"
  msgstr ""
  
! #: cp/parser.cc:28558
  #, gcc-internal-format
  msgid "ISO C++ forbids typename key in template template parameter; use %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:28562
  #, gcc-internal-format
  msgid "expected %<class%> or %<typename%>"
  msgstr ""
  
! #: cp/parser.cc:28831
  #, gcc-internal-format
  msgid "in C++03 a class-key must be used when declaring a friend"
  msgstr ""
  
! #: cp/parser.cc:28837
  #, gcc-internal-format
  msgid "variadic friends or friend type declarations with multiple types only available with %<-std=c++2c%> or %<-std=gnu++2c%>"
  msgstr ""
  
! #: cp/parser.cc:28878
  #, gcc-internal-format
  msgid "friend declaration does not name a class or function"
  msgstr ""
  
! #: cp/parser.cc:28918
  #, gcc-internal-format
  msgid "a storage class on an anonymous aggregate in class scope is not allowed"
  msgstr ""
  
! #: cp/parser.cc:29021
  #, gcc-internal-format
  msgid "default member initializers for bit-fields only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:29028
  #, gcc-internal-format
  msgid "default member initializer for unnamed bit-field"
  msgstr ""
  
! #: cp/parser.cc:29041
  #, gcc-internal-format
  msgid "ISO C++ allows bit-field attributes only before the %<:%> token"
  msgstr ""
  
! #: cp/parser.cc:29222
  #, fuzzy, gcc-internal-format
  msgid "bit-field %qD has non-integral type %qT"
  msgstr "Ð±Ñ–Ñ‚Ð°Ð²Ð°Ðµ Ð¿Ð¾Ð»Ðµ \"%s\" Ð¼Ð°Ðµ Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/parser.cc:29250
  #, gcc-internal-format
  msgid "pure-specifier on function-definition"
  msgstr ""
  
! #: cp/parser.cc:29320
  #, gcc-internal-format
  msgid "stray %<,%> at end of member declaration"
  msgstr ""
  
! #: cp/parser.cc:29334
  #, gcc-internal-format
  msgid "expected %<;%> at end of member declaration"
  msgstr ""
  
! #: cp/parser.cc:29407
  #, gcc-internal-format
  msgid "%<delete%> reason only available with %<-std=c++2c%> or %<-std=gnu++2c%>"
  msgstr ""
  
! #: cp/parser.cc:29430
  #, gcc-internal-format
  msgid "invalid pure specifier (only %<= 0%> is allowed)"
  msgstr ""
  
! #: cp/parser.cc:29465
  #, gcc-internal-format
  msgid "a brace-enclosed initializer is not allowed here"
  msgstr ""
  
! #: cp/parser.cc:29596
  #, gcc-internal-format
  msgid "attributes on base specifiers are ignored"
  msgstr ""
  
! #: cp/parser.cc:29611
  #, gcc-internal-format
  msgid "%<virtual%> specified more than once in base-specifier"
  msgstr ""
  
! #: cp/parser.cc:29631
  #, gcc-internal-format
  msgid "more than one access specifier in base-specifier"
  msgstr ""
  
! #: cp/parser.cc:29655
  #, gcc-internal-format
  msgid "keyword %<typename%> not allowed outside of templates"
  msgstr ""
  
! #: cp/parser.cc:29658
  #, gcc-internal-format
  msgid "keyword %<typename%> not allowed in this context (the base class is implicitly a type)"
  msgstr ""
  
! #: cp/parser.cc:29860 cp/parser.cc:29954
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in an exception-specification"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/parser.cc:29962
  #, fuzzy, gcc-internal-format
  msgid "ISO C++17 does not allow dynamic exception specifications"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/parser.cc:29968
  #, gcc-internal-format
  msgid "dynamic exception specifications are deprecated in C++11"
  msgstr ""
  
! #: cp/parser.cc:30012
  #, fuzzy, gcc-internal-format
  msgid "invalid use of %<auto%> in exception-specification"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/parser.cc:30053
  #, gcc-internal-format
  msgid "%<try%> in %<constexpr%> function only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:30165
  #, gcc-internal-format
  msgid "types may not be defined in exception-declarations"
  msgstr ""
  
! #: cp/parser.cc:30200
  #, gcc-internal-format
  msgid "%<alignas%> on exception declaration"
  msgstr ""
  
! #: cp/parser.cc:30279
  #, gcc-internal-format
  msgid "%<co_yield%> cannot be used in default arguments"
  msgstr ""
  
! #: cp/parser.cc:30747
  #, gcc-internal-format
  msgid "expected attribute argument as balanced token sequence"
  msgstr ""
  
! #: cp/parser.cc:30893
  #, gcc-internal-format
  msgid "attribute using prefix used together with scoped attribute token"
  msgstr ""
  
! #: cp/parser.cc:30907
  #, gcc-internal-format
  msgid "expected an identifier for the attribute name"
  msgstr ""
  
  #. e.g. [[attr()]].
! #: cp/parser.cc:31049
  #, gcc-internal-format
  msgid "parentheses must be omitted if %qE attribute argument list is empty"
  msgstr ""
  
! #: cp/parser.cc:31084
  #, gcc-internal-format
  msgid "attribute %qs specified multiple times"
  msgstr ""
  
! #: cp/parser.cc:31126
  #, gcc-internal-format
  msgid "expected attribute before %<...%>"
  msgstr ""
  
! #: cp/parser.cc:31129
  #, gcc-internal-format
  msgid "attribute with no arguments contains no parameter packs"
  msgstr ""
  
! #: cp/parser.cc:31175
  #, gcc-internal-format
  msgid "expected contract-role"
  msgstr ""
  
  #. We got some other token other than a ':'.
! #: cp/parser.cc:31256
  #, gcc-internal-format
  msgid "expected contract semantic or level"
  msgstr ""
  
! #: cp/parser.cc:31266
  #, gcc-internal-format
  msgid "expected contract level: %<default%>, %<audit%>, or %<axiom%>"
  msgstr ""
  
! #: cp/parser.cc:31276
  #, gcc-internal-format
  msgid "invalid use of contract role for explicit semantic"
  msgstr ""
  
! #: cp/parser.cc:31413
  #, gcc-internal-format
  msgid "contracts are only available with %<-fcontracts%>"
  msgstr ""
  
! #: cp/parser.cc:31572
  #, gcc-internal-format
  msgid "attribute using prefix only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:31933 cp/parser.cc:31942
  #, gcc-internal-format
  msgid "expression must be enclosed in parentheses"
  msgstr ""
  
! #: cp/parser.cc:32289
  #, gcc-internal-format
  msgid "missing additional %<requires%> to start a requires-expression"
  msgstr ""
  
! #: cp/parser.cc:32530
  #, gcc-internal-format
  msgid "testing if a concept-id is a valid expression; add %<requires%> to check satisfaction"
  msgstr ""
  
! #: cp/parser.cc:32668
  #, gcc-internal-format
  msgid "result type is not a plain type-constraint"
  msgstr ""
  
! #: cp/parser.cc:32676
  #, gcc-internal-format
  msgid "return-type-requirement is not a type-constraint"
  msgstr ""
  
! #: cp/parser.cc:33195
  #, gcc-internal-format
  msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
  msgstr ""
  
! #: cp/parser.cc:33200
  #, fuzzy, gcc-internal-format
  msgid "invalid declaration of %<%T::%E%>"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ"
  
! #: cp/parser.cc:33204
  #, fuzzy, gcc-internal-format
  msgid "too few template-parameter-lists"
  msgstr "Ð½ÐµÐ²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°ÐµÐ¼Ñ‹ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\""
--- 65096,65359 ----
  #. In a lambda this should work, but doesn't currently.
  #. We're in a lambda, but it isn't the innermost class.
  #. This should work, but currently doesn't.
! #: cp/parser.cc:28480 cp/pt.cc:4367
  #, gcc-internal-format
  msgid "unexpanded parameter pack in local class in lambda"
  msgstr ""
  
! #: cp/parser.cc:28586 cp/parser.cc:35402
  #, gcc-internal-format
  msgid "expected class-key"
  msgstr ""
  
! #: cp/parser.cc:28611
  #, gcc-internal-format
  msgid "ISO C++ forbids typename key in template template parameter; use %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:28615
  #, gcc-internal-format
  msgid "expected %<class%> or %<typename%>"
  msgstr ""
  
! #: cp/parser.cc:28885
  #, gcc-internal-format
  msgid "in C++03 a class-key must be used when declaring a friend"
  msgstr ""
  
! #: cp/parser.cc:28891
  #, gcc-internal-format
  msgid "variadic friends or friend type declarations with multiple types only available with %<-std=c++2c%> or %<-std=gnu++2c%>"
  msgstr ""
  
! #: cp/parser.cc:28932
  #, gcc-internal-format
  msgid "friend declaration does not name a class or function"
  msgstr ""
  
! #: cp/parser.cc:28972
  #, gcc-internal-format
  msgid "a storage class on an anonymous aggregate in class scope is not allowed"
  msgstr ""
  
! #: cp/parser.cc:29075
  #, gcc-internal-format
  msgid "default member initializers for bit-fields only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:29082
  #, gcc-internal-format
  msgid "default member initializer for unnamed bit-field"
  msgstr ""
  
! #: cp/parser.cc:29095
  #, gcc-internal-format
  msgid "ISO C++ allows bit-field attributes only before the %<:%> token"
  msgstr ""
  
! #: cp/parser.cc:29276
  #, fuzzy, gcc-internal-format
  msgid "bit-field %qD has non-integral type %qT"
  msgstr "Ð±Ñ–Ñ‚Ð°Ð²Ð°Ðµ Ð¿Ð¾Ð»Ðµ \"%s\" Ð¼Ð°Ðµ Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/parser.cc:29304
  #, gcc-internal-format
  msgid "pure-specifier on function-definition"
  msgstr ""
  
! #: cp/parser.cc:29374
  #, gcc-internal-format
  msgid "stray %<,%> at end of member declaration"
  msgstr ""
  
! #: cp/parser.cc:29388
  #, gcc-internal-format
  msgid "expected %<;%> at end of member declaration"
  msgstr ""
  
! #: cp/parser.cc:29461
  #, gcc-internal-format
  msgid "%<delete%> reason only available with %<-std=c++2c%> or %<-std=gnu++2c%>"
  msgstr ""
  
! #: cp/parser.cc:29484
  #, gcc-internal-format
  msgid "invalid pure specifier (only %<= 0%> is allowed)"
  msgstr ""
  
! #: cp/parser.cc:29519
  #, gcc-internal-format
  msgid "a brace-enclosed initializer is not allowed here"
  msgstr ""
  
! #: cp/parser.cc:29650
  #, gcc-internal-format
  msgid "attributes on base specifiers are ignored"
  msgstr ""
  
! #: cp/parser.cc:29665
  #, gcc-internal-format
  msgid "%<virtual%> specified more than once in base-specifier"
  msgstr ""
  
! #: cp/parser.cc:29685
  #, gcc-internal-format
  msgid "more than one access specifier in base-specifier"
  msgstr ""
  
! #: cp/parser.cc:29709
  #, gcc-internal-format
  msgid "keyword %<typename%> not allowed outside of templates"
  msgstr ""
  
! #: cp/parser.cc:29712
  #, gcc-internal-format
  msgid "keyword %<typename%> not allowed in this context (the base class is implicitly a type)"
  msgstr ""
  
! #: cp/parser.cc:29914 cp/parser.cc:30008
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in an exception-specification"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/parser.cc:30016
  #, fuzzy, gcc-internal-format
  msgid "ISO C++17 does not allow dynamic exception specifications"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/parser.cc:30022
  #, gcc-internal-format
  msgid "dynamic exception specifications are deprecated in C++11"
  msgstr ""
  
! #: cp/parser.cc:30066
  #, fuzzy, gcc-internal-format
  msgid "invalid use of %<auto%> in exception-specification"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/parser.cc:30107
  #, gcc-internal-format
  msgid "%<try%> in %<constexpr%> function only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:30219
  #, gcc-internal-format
  msgid "types may not be defined in exception-declarations"
  msgstr ""
  
! #: cp/parser.cc:30254
  #, gcc-internal-format
  msgid "%<alignas%> on exception declaration"
  msgstr ""
  
! #: cp/parser.cc:30333
  #, gcc-internal-format
  msgid "%<co_yield%> cannot be used in default arguments"
  msgstr ""
  
! #: cp/parser.cc:30801
  #, gcc-internal-format
  msgid "expected attribute argument as balanced token sequence"
  msgstr ""
  
! #: cp/parser.cc:30947
  #, gcc-internal-format
  msgid "attribute using prefix used together with scoped attribute token"
  msgstr ""
  
! #: cp/parser.cc:30961
  #, gcc-internal-format
  msgid "expected an identifier for the attribute name"
  msgstr ""
  
  #. e.g. [[attr()]].
! #: cp/parser.cc:31103
  #, gcc-internal-format
  msgid "parentheses must be omitted if %qE attribute argument list is empty"
  msgstr ""
  
! #: cp/parser.cc:31138
  #, gcc-internal-format
  msgid "attribute %qs specified multiple times"
  msgstr ""
  
! #: cp/parser.cc:31180
  #, gcc-internal-format
  msgid "expected attribute before %<...%>"
  msgstr ""
  
! #: cp/parser.cc:31183
  #, gcc-internal-format
  msgid "attribute with no arguments contains no parameter packs"
  msgstr ""
  
! #: cp/parser.cc:31229
  #, gcc-internal-format
  msgid "expected contract-role"
  msgstr ""
  
  #. We got some other token other than a ':'.
! #: cp/parser.cc:31310
  #, gcc-internal-format
  msgid "expected contract semantic or level"
  msgstr ""
  
! #: cp/parser.cc:31320
  #, gcc-internal-format
  msgid "expected contract level: %<default%>, %<audit%>, or %<axiom%>"
  msgstr ""
  
! #: cp/parser.cc:31330
  #, gcc-internal-format
  msgid "invalid use of contract role for explicit semantic"
  msgstr ""
  
! #: cp/parser.cc:31467
  #, gcc-internal-format
  msgid "contracts are only available with %<-fcontracts%>"
  msgstr ""
  
! #: cp/parser.cc:31626
  #, gcc-internal-format
  msgid "attribute using prefix only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:31992 cp/parser.cc:32001
  #, gcc-internal-format
  msgid "expression must be enclosed in parentheses"
  msgstr ""
  
! #: cp/parser.cc:32348
  #, gcc-internal-format
  msgid "missing additional %<requires%> to start a requires-expression"
  msgstr ""
  
! #: cp/parser.cc:32589
  #, gcc-internal-format
  msgid "testing if a concept-id is a valid expression; add %<requires%> to check satisfaction"
  msgstr ""
  
! #: cp/parser.cc:32727
  #, gcc-internal-format
  msgid "result type is not a plain type-constraint"
  msgstr ""
  
! #: cp/parser.cc:32735
  #, gcc-internal-format
  msgid "return-type-requirement is not a type-constraint"
  msgstr ""
  
! #: cp/parser.cc:33254
  #, gcc-internal-format
  msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
  msgstr ""
  
! #: cp/parser.cc:33259
  #, fuzzy, gcc-internal-format
  msgid "invalid declaration of %<%T::%E%>"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ"
  
! #: cp/parser.cc:33263
  #, fuzzy, gcc-internal-format
  msgid "too few template-parameter-lists"
  msgstr "Ð½ÐµÐ²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°ÐµÐ¼Ñ‹ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\""
*************** msgstr "Ð½ÐµÐ²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°ÐµÐ¼Ñ‹ Ð¿Ð
*** 65271,65705 ****
  #. something like:
  #.
  #. template <class T> template <class U> void S::f();
! #: cp/parser.cc:33211
  #, gcc-internal-format
  msgid "too many template-parameter-lists"
  msgstr ""
  
! #: cp/parser.cc:33503
  #, gcc-internal-format
  msgid "template-id not allowed for constructor in C++20"
  msgstr ""
  
! #: cp/parser.cc:33614
  #, fuzzy, gcc-internal-format
  msgid "named return values are no longer supported"
  msgstr "-pipe Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð°."
  
! #: cp/parser.cc:33791
  #, gcc-internal-format
  msgid "ISO C++ did not adopt string literal operator templates taking an argument pack of characters"
  msgstr ""
  
! #: cp/parser.cc:33800
  #, gcc-internal-format
  msgid "literal operator template %qD has invalid parameter list; expected non-type template parameter pack %<<char...>%> or single non-type parameter of class type"
  msgstr ""
  
! #: cp/parser.cc:33806
  #, gcc-internal-format
  msgid "literal operator template %qD has invalid parameter list; expected non-type template parameter pack %<<char...>%>"
  msgstr ""
  
! #: cp/parser.cc:33846
  #, gcc-internal-format
  msgid "invalid declaration of member template in local class"
  msgstr ""
  
! #: cp/parser.cc:33856
  #, gcc-internal-format
  msgid "template with C linkage"
  msgstr ""
  
! #: cp/parser.cc:33876
  #, fuzzy, gcc-internal-format
  msgid "invalid explicit specialization"
  msgstr "Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ†Ñ‹Ñ�"
  
! #: cp/parser.cc:33986
  #, fuzzy, gcc-internal-format
  msgid "template declaration of %<typedef%>"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ"
  
! #: cp/parser.cc:34037
  #, gcc-internal-format
  msgid "a class template declaration must not declare anything else"
  msgstr ""
  
! #: cp/parser.cc:34089
  #, fuzzy, gcc-internal-format
  msgid "explicit template specialization cannot have a storage class"
  msgstr "Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ†Ñ‹Ñ�"
  
! #: cp/parser.cc:34408
  #, gcc-internal-format
  msgid "%<>>%> should be %<> >%> within a nested template argument list"
  msgstr ""
  
! #: cp/parser.cc:34421
  #, gcc-internal-format
  msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
  msgstr ""
  
! #: cp/parser.cc:34452
  #, gcc-internal-format
  msgid "%qs should be %qs to terminate a template argument list"
  msgstr ""
  
! #: cp/parser.cc:34769
  #, gcc-internal-format
  msgid "%<sizeof...%> argument must be surrounded by parentheses"
  msgstr ""
  
! #: cp/parser.cc:34944
  #, gcc-internal-format
  msgid "invalid use of %qD in linkage specification"
  msgstr ""
  
! #: cp/parser.cc:34956
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `%s'"
  msgid "duplicate %qD specifier"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½ÑŒÐ½Ðµ `%s'"
  
! #: cp/parser.cc:34959
  #, gcc-internal-format
  msgid "%qD specifier conflicts with %qs"
  msgstr ""
  
! #: cp/parser.cc:34971
  #, gcc-internal-format
  msgid "%<__thread%> before %qD"
  msgstr ""
  
! #: cp/parser.cc:34988
  #, gcc-internal-format
  msgid "%qD specifier conflicts with %<typedef%>"
  msgstr ""
  
! #: cp/parser.cc:35097
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ does not support `long long'"
  msgid "ISO C++ 1998 does not support %<long long%>"
  msgstr "ISO C++ Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ \"long long\""
  
! #: cp/parser.cc:35108
  #, gcc-internal-format
  msgid "both %<__thread%> and %<thread_local%> specified"
  msgstr ""
  
! #: cp/parser.cc:35113
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `%s'"
  msgid "duplicate %qD"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½ÑŒÐ½Ðµ `%s'"
  
! #: cp/parser.cc:35142
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `%s'"
  msgid "duplicate %qs"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½ÑŒÐ½Ðµ `%s'"
  
! #: cp/parser.cc:35194
  #, gcc-internal-format
  msgid "expected %<new%>"
  msgstr ""
  
! #: cp/parser.cc:35197
  #, gcc-internal-format
  msgid "expected %<delete%>"
  msgstr ""
  
! #: cp/parser.cc:35200
  #, gcc-internal-format
  msgid "expected %<return%>"
  msgstr ""
  
! #: cp/parser.cc:35206
  #, gcc-internal-format
  msgid "expected %<extern%>"
  msgstr ""
  
! #: cp/parser.cc:35209
  #, gcc-internal-format
  msgid "expected %<static_assert%>"
  msgstr ""
  
! #: cp/parser.cc:35212
  #, gcc-internal-format
  msgid "expected %<decltype%>"
  msgstr ""
  
! #: cp/parser.cc:35215
  #, fuzzy, gcc-internal-format
  #| msgid "unregistered operator %s"
  msgid "expected %<operator%>"
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ñ‹ Ð°Ð¿ÐµÑ€Ð°Ñ‚Ð°Ñ€ %s"
  
! #: cp/parser.cc:35218
  #, gcc-internal-format
  msgid "expected %<class%>"
  msgstr ""
  
! #: cp/parser.cc:35221
  #, gcc-internal-format
  msgid "expected %<template%>"
  msgstr ""
  
! #: cp/parser.cc:35224
  #, gcc-internal-format
  msgid "expected %<namespace%>"
  msgstr ""
  
! #: cp/parser.cc:35227
  #, gcc-internal-format
  msgid "expected %<using%>"
  msgstr ""
  
! #: cp/parser.cc:35230
  #, gcc-internal-format
  msgid "expected %<asm%>"
  msgstr ""
  
! #: cp/parser.cc:35233
  #, gcc-internal-format
  msgid "expected %<try%>"
  msgstr ""
  
! #: cp/parser.cc:35236
  #, gcc-internal-format
  msgid "expected %<catch%>"
  msgstr ""
  
! #: cp/parser.cc:35239
  #, gcc-internal-format
  msgid "expected %<throw%>"
  msgstr ""
  
! #: cp/parser.cc:35242
  #, gcc-internal-format
  msgid "expected %<auto%>"
  msgstr ""
  
! #: cp/parser.cc:35245
  #, gcc-internal-format
  msgid "expected %<__label__%>"
  msgstr ""
  
! #: cp/parser.cc:35248
  #, gcc-internal-format
  msgid "expected %<@try%>"
  msgstr ""
  
! #: cp/parser.cc:35251
  #, gcc-internal-format
  msgid "expected %<@synchronized%>"
  msgstr ""
  
! #: cp/parser.cc:35254
  #, gcc-internal-format
  msgid "expected %<@throw%>"
  msgstr ""
  
! #: cp/parser.cc:35257
  #, gcc-internal-format
  msgid "expected %<__transaction_atomic%>"
  msgstr ""
  
! #: cp/parser.cc:35260
  #, gcc-internal-format
  msgid "expected %<__transaction_relaxed%>"
  msgstr ""
  
! #: cp/parser.cc:35263
  #, gcc-internal-format
  msgid "expected %<co_yield%>"
  msgstr ""
  
! #: cp/parser.cc:35295
  #, gcc-internal-format
  msgid "expected %<::%>"
  msgstr ""
  
! #: cp/parser.cc:35307
  #, gcc-internal-format
  msgid "expected %<...%>"
  msgstr ""
  
! #: cp/parser.cc:35310
  #, gcc-internal-format
  msgid "expected %<*%>"
  msgstr ""
  
! #: cp/parser.cc:35313
  #, gcc-internal-format
  msgid "expected %<~%>"
  msgstr ""
  
! #: cp/parser.cc:35319
  #, gcc-internal-format
  msgid "expected %<:%> or %<::%>"
  msgstr ""
  
! #: cp/parser.cc:35346
  #, gcc-internal-format
  msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgstr ""
  
! #: cp/parser.cc:35681
  #, gcc-internal-format
  msgid "redundant enum-key %<enum%s%> in reference to %q#T"
  msgstr ""
  
! #: cp/parser.cc:35833
  #, gcc-internal-format
  msgid "%qs tag used in naming %q#T"
  msgstr ""
  
! #: cp/parser.cc:35838
  #, fuzzy, gcc-internal-format
  msgid "%q#T was previously declared here"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/parser.cc:35959
  #, gcc-internal-format
  msgid "redundant class-key %qs in reference to %q#T"
  msgstr ""
  
! #: cp/parser.cc:36117 cp/parser.cc:36151
  #, gcc-internal-format
  msgid "%qT declared with a mismatched class-key %qs"
  msgstr ""
  
! #: cp/parser.cc:36124 cp/parser.cc:36157
  #, gcc-internal-format
  msgid "remove the class-key or replace it with %qs"
  msgstr ""
  
! #: cp/parser.cc:36125 cp/parser.cc:36158
  #, gcc-internal-format
  msgid "replace the class-key with %qs"
  msgstr ""
  
! #: cp/parser.cc:36132
  #, gcc-internal-format
  msgid "%qT defined as %qs here"
  msgstr ""
  
! #: cp/parser.cc:36133
  #, gcc-internal-format
  msgid "%qT first declared as %qs here"
  msgstr ""
  
! #: cp/parser.cc:36216
  #, gcc-internal-format
  msgid "%qD redeclared with different access"
  msgstr ""
  
! #: cp/parser.cc:36237
  #, gcc-internal-format
  msgid "in C++98 %<template%> (as a disambiguator) is only allowed within templates"
  msgstr ""
  
! #: cp/parser.cc:36486
  #, fuzzy, gcc-internal-format
  msgid "file ends in default argument"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/parser.cc:36727 cp/parser.cc:38039 cp/parser.cc:38228
  #, gcc-internal-format
  msgid "misplaced %<@%D%> Objective-C++ construct"
  msgstr ""
  
! #: cp/parser.cc:36798
  #, gcc-internal-format
  msgid "objective-c++ message receiver expected"
  msgstr ""
  
! #: cp/parser.cc:36872
  #, gcc-internal-format
  msgid "objective-c++ message argument(s) are expected"
  msgstr ""
  
! #: cp/parser.cc:36903
  #, gcc-internal-format
  msgid "%<@encode%> must specify a type as an argument"
  msgstr ""
  
! #: cp/parser.cc:37307
  #, gcc-internal-format
  msgid "invalid Objective-C++ selector name"
  msgstr ""
  
! #: cp/parser.cc:37382 cp/parser.cc:37400
  #, gcc-internal-format
  msgid "objective-c++ method declaration is expected"
  msgstr ""
  
! #: cp/parser.cc:37394 cp/parser.cc:37460
  #, gcc-internal-format
  msgid "method attributes must be specified at the end"
  msgstr ""
  
! #: cp/parser.cc:37503
  #, gcc-internal-format
  msgid "stray %qs between Objective-C++ methods"
  msgstr ""
  
! #: cp/parser.cc:37700 cp/parser.cc:37707 cp/parser.cc:37714
  #, fuzzy, gcc-internal-format
  #| msgid "invalid mode for gen_tst_reg"
  msgid "invalid type for instance variable"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ€Ñ�Ð¶Ñ‹Ð¼ Ð´Ð»Ñ� gen_tst_reg"
  
! #: cp/parser.cc:37831
  #, gcc-internal-format
  msgid "identifier expected after %<@protocol%>"
  msgstr ""
  
! #: cp/parser.cc:38004
  #, gcc-internal-format
  msgid "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
  msgstr ""
  
! #: cp/parser.cc:38011
  #, fuzzy, gcc-internal-format
  msgid "prefix attributes are ignored before %<@%D%>"
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
! #: cp/parser.cc:38291 cp/parser.cc:38298 cp/parser.cc:38305
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `restrict'"
  msgid "invalid type for property"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/parser.cc:38467
  #, gcc-internal-format
  msgid "unknown property attribute %qE"
  msgstr ""
  
! #: cp/parser.cc:39765
  #, gcc-internal-format
  msgid "expected integer expression list"
  msgstr ""
  
! #: cp/parser.cc:39782
  #, gcc-internal-format
  msgid "%<wait%> expression must be integral"
  msgstr ""
  
! #: cp/parser.cc:40538
  #, gcc-internal-format
  msgid "expected %<scalar%>, %<aggregate%>, %<all%>"
  msgstr ""
  
! #: cp/parser.cc:40929
  #, fuzzy, gcc-internal-format
  #| msgid "invalid initializer"
  msgid "invalid reduction-identifier"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/parser.cc:41990
  #, gcc-internal-format
  msgid "types may not be defined in iterator type"
  msgstr ""
--- 65362,65796 ----
  #. something like:
  #.
  #. template <class T> template <class U> void S::f();
! #: cp/parser.cc:33270
  #, gcc-internal-format
  msgid "too many template-parameter-lists"
  msgstr ""
  
! #: cp/parser.cc:33562
  #, gcc-internal-format
  msgid "template-id not allowed for constructor in C++20"
  msgstr ""
  
! #: cp/parser.cc:33673
  #, fuzzy, gcc-internal-format
  msgid "named return values are no longer supported"
  msgstr "-pipe Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÐµÑ†Ñ†Ð°."
  
! #: cp/parser.cc:33850
  #, gcc-internal-format
  msgid "ISO C++ did not adopt string literal operator templates taking an argument pack of characters"
  msgstr ""
  
! #: cp/parser.cc:33859
  #, gcc-internal-format
  msgid "literal operator template %qD has invalid parameter list; expected non-type template parameter pack %<<char...>%> or single non-type parameter of class type"
  msgstr ""
  
! #: cp/parser.cc:33865
  #, gcc-internal-format
  msgid "literal operator template %qD has invalid parameter list; expected non-type template parameter pack %<<char...>%>"
  msgstr ""
  
! #: cp/parser.cc:33905
  #, gcc-internal-format
  msgid "invalid declaration of member template in local class"
  msgstr ""
  
! #: cp/parser.cc:33915
  #, gcc-internal-format
  msgid "template with C linkage"
  msgstr ""
  
! #: cp/parser.cc:33935
  #, fuzzy, gcc-internal-format
  msgid "invalid explicit specialization"
  msgstr "Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ†Ñ‹Ñ�"
  
! #: cp/parser.cc:34045
  #, fuzzy, gcc-internal-format
  msgid "template declaration of %<typedef%>"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ"
  
! #: cp/parser.cc:34096
  #, gcc-internal-format
  msgid "a class template declaration must not declare anything else"
  msgstr ""
  
! #: cp/parser.cc:34148
  #, fuzzy, gcc-internal-format
  msgid "explicit template specialization cannot have a storage class"
  msgstr "Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ†Ñ‹Ñ�"
  
! #: cp/parser.cc:34467
  #, gcc-internal-format
  msgid "%<>>%> should be %<> >%> within a nested template argument list"
  msgstr ""
  
! #: cp/parser.cc:34480
  #, gcc-internal-format
  msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
  msgstr ""
  
! #: cp/parser.cc:34511
  #, gcc-internal-format
  msgid "%qs should be %qs to terminate a template argument list"
  msgstr ""
  
! #: cp/parser.cc:34828
  #, gcc-internal-format
  msgid "%<sizeof...%> argument must be surrounded by parentheses"
  msgstr ""
  
! #: cp/parser.cc:35003
  #, gcc-internal-format
  msgid "invalid use of %qD in linkage specification"
  msgstr ""
  
! #: cp/parser.cc:35015
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `%s'"
  msgid "duplicate %qD specifier"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½ÑŒÐ½Ðµ `%s'"
  
! #: cp/parser.cc:35018
  #, gcc-internal-format
  msgid "%qD specifier conflicts with %qs"
  msgstr ""
  
! #: cp/parser.cc:35030
  #, gcc-internal-format
  msgid "%<__thread%> before %qD"
  msgstr ""
  
! #: cp/parser.cc:35047
  #, gcc-internal-format
  msgid "%qD specifier conflicts with %<typedef%>"
  msgstr ""
  
! #: cp/parser.cc:35156
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ does not support `long long'"
  msgid "ISO C++ 1998 does not support %<long long%>"
  msgstr "ISO C++ Ð½Ðµ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ \"long long\""
  
! #: cp/parser.cc:35167
  #, gcc-internal-format
  msgid "both %<__thread%> and %<thread_local%> specified"
  msgstr ""
  
! #: cp/parser.cc:35172
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `%s'"
  msgid "duplicate %qD"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½ÑŒÐ½Ðµ `%s'"
  
! #: cp/parser.cc:35201
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `%s'"
  msgid "duplicate %qs"
  msgstr "Ð¿Ð°ÑžÑ‚Ð°Ñ€Ñ�Ð½ÑŒÐ½Ðµ `%s'"
  
! #: cp/parser.cc:35253
  #, gcc-internal-format
  msgid "expected %<new%>"
  msgstr ""
  
! #: cp/parser.cc:35256
  #, gcc-internal-format
  msgid "expected %<delete%>"
  msgstr ""
  
! #: cp/parser.cc:35259
  #, gcc-internal-format
  msgid "expected %<return%>"
  msgstr ""
  
! #: cp/parser.cc:35265
  #, gcc-internal-format
  msgid "expected %<extern%>"
  msgstr ""
  
! #: cp/parser.cc:35268
  #, gcc-internal-format
  msgid "expected %<static_assert%>"
  msgstr ""
  
! #: cp/parser.cc:35271
  #, gcc-internal-format
  msgid "expected %<decltype%>"
  msgstr ""
  
! #: cp/parser.cc:35274
  #, fuzzy, gcc-internal-format
  #| msgid "unregistered operator %s"
  msgid "expected %<operator%>"
  msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð°Ð·Ð½Ð°Ð½Ñ‹ Ð°Ð¿ÐµÑ€Ð°Ñ‚Ð°Ñ€ %s"
  
! #: cp/parser.cc:35277
  #, gcc-internal-format
  msgid "expected %<class%>"
  msgstr ""
  
! #: cp/parser.cc:35280
  #, gcc-internal-format
  msgid "expected %<template%>"
  msgstr ""
  
! #: cp/parser.cc:35283
  #, gcc-internal-format
  msgid "expected %<namespace%>"
  msgstr ""
  
! #: cp/parser.cc:35286
  #, gcc-internal-format
  msgid "expected %<using%>"
  msgstr ""
  
! #: cp/parser.cc:35289
  #, gcc-internal-format
  msgid "expected %<asm%>"
  msgstr ""
  
! #: cp/parser.cc:35292
  #, gcc-internal-format
  msgid "expected %<try%>"
  msgstr ""
  
! #: cp/parser.cc:35295
  #, gcc-internal-format
  msgid "expected %<catch%>"
  msgstr ""
  
! #: cp/parser.cc:35298
  #, gcc-internal-format
  msgid "expected %<throw%>"
  msgstr ""
  
! #: cp/parser.cc:35301
  #, gcc-internal-format
  msgid "expected %<auto%>"
  msgstr ""
  
! #: cp/parser.cc:35304
  #, gcc-internal-format
  msgid "expected %<__label__%>"
  msgstr ""
  
! #: cp/parser.cc:35307
  #, gcc-internal-format
  msgid "expected %<@try%>"
  msgstr ""
  
! #: cp/parser.cc:35310
  #, gcc-internal-format
  msgid "expected %<@synchronized%>"
  msgstr ""
  
! #: cp/parser.cc:35313
  #, gcc-internal-format
  msgid "expected %<@throw%>"
  msgstr ""
  
! #: cp/parser.cc:35316
  #, gcc-internal-format
  msgid "expected %<__transaction_atomic%>"
  msgstr ""
  
! #: cp/parser.cc:35319
  #, gcc-internal-format
  msgid "expected %<__transaction_relaxed%>"
  msgstr ""
  
! #: cp/parser.cc:35322
  #, gcc-internal-format
  msgid "expected %<co_yield%>"
  msgstr ""
  
! #: cp/parser.cc:35354
  #, gcc-internal-format
  msgid "expected %<::%>"
  msgstr ""
  
! #: cp/parser.cc:35366
  #, gcc-internal-format
  msgid "expected %<...%>"
  msgstr ""
  
! #: cp/parser.cc:35369
  #, gcc-internal-format
  msgid "expected %<*%>"
  msgstr ""
  
! #: cp/parser.cc:35372
  #, gcc-internal-format
  msgid "expected %<~%>"
  msgstr ""
  
! #: cp/parser.cc:35378
  #, gcc-internal-format
  msgid "expected %<:%> or %<::%>"
  msgstr ""
  
! #: cp/parser.cc:35405
  #, gcc-internal-format
  msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgstr ""
  
! #: cp/parser.cc:35740
  #, gcc-internal-format
  msgid "redundant enum-key %<enum%s%> in reference to %q#T"
  msgstr ""
  
! #: cp/parser.cc:35892
  #, gcc-internal-format
  msgid "%qs tag used in naming %q#T"
  msgstr ""
  
! #: cp/parser.cc:35897
  #, fuzzy, gcc-internal-format
  msgid "%q#T was previously declared here"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: cp/parser.cc:36018
  #, gcc-internal-format
  msgid "redundant class-key %qs in reference to %q#T"
  msgstr ""
  
! #: cp/parser.cc:36176 cp/parser.cc:36210
  #, gcc-internal-format
  msgid "%qT declared with a mismatched class-key %qs"
  msgstr ""
  
! #: cp/parser.cc:36183 cp/parser.cc:36216
  #, gcc-internal-format
  msgid "remove the class-key or replace it with %qs"
  msgstr ""
  
! #: cp/parser.cc:36184 cp/parser.cc:36217
  #, gcc-internal-format
  msgid "replace the class-key with %qs"
  msgstr ""
  
! #: cp/parser.cc:36191
  #, gcc-internal-format
  msgid "%qT defined as %qs here"
  msgstr ""
  
! #: cp/parser.cc:36192
  #, gcc-internal-format
  msgid "%qT first declared as %qs here"
  msgstr ""
  
! #: cp/parser.cc:36275
  #, gcc-internal-format
  msgid "%qD redeclared with different access"
  msgstr ""
  
! #: cp/parser.cc:36296
  #, gcc-internal-format
  msgid "in C++98 %<template%> (as a disambiguator) is only allowed within templates"
  msgstr ""
  
! #: cp/parser.cc:36545
  #, fuzzy, gcc-internal-format
  msgid "file ends in default argument"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/parser.cc:36786 cp/parser.cc:38098 cp/parser.cc:38287
  #, gcc-internal-format
  msgid "misplaced %<@%D%> Objective-C++ construct"
  msgstr ""
  
! #: cp/parser.cc:36857
  #, gcc-internal-format
  msgid "objective-c++ message receiver expected"
  msgstr ""
  
! #: cp/parser.cc:36931
  #, gcc-internal-format
  msgid "objective-c++ message argument(s) are expected"
  msgstr ""
  
! #: cp/parser.cc:36962
  #, gcc-internal-format
  msgid "%<@encode%> must specify a type as an argument"
  msgstr ""
  
! #: cp/parser.cc:37366
  #, gcc-internal-format
  msgid "invalid Objective-C++ selector name"
  msgstr ""
  
! #: cp/parser.cc:37441 cp/parser.cc:37459
  #, gcc-internal-format
  msgid "objective-c++ method declaration is expected"
  msgstr ""
  
! #: cp/parser.cc:37453 cp/parser.cc:37519
  #, gcc-internal-format
  msgid "method attributes must be specified at the end"
  msgstr ""
  
! #: cp/parser.cc:37562
  #, gcc-internal-format
  msgid "stray %qs between Objective-C++ methods"
  msgstr ""
  
! #: cp/parser.cc:37759 cp/parser.cc:37766 cp/parser.cc:37773
  #, fuzzy, gcc-internal-format
  #| msgid "invalid mode for gen_tst_reg"
  msgid "invalid type for instance variable"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ€Ñ�Ð¶Ñ‹Ð¼ Ð´Ð»Ñ� gen_tst_reg"
  
! #: cp/parser.cc:37890
  #, gcc-internal-format
  msgid "identifier expected after %<@protocol%>"
  msgstr ""
  
! #: cp/parser.cc:38063
  #, gcc-internal-format
  msgid "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
  msgstr ""
  
! #: cp/parser.cc:38070
  #, fuzzy, gcc-internal-format
  msgid "prefix attributes are ignored before %<@%D%>"
  msgstr "\"%s\" Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚ Ñ–Ð³Ð½Ð°Ñ€Ñ‹Ñ€ÑƒÐµÑ†Ñ†Ð°"
  
! #: cp/parser.cc:38350 cp/parser.cc:38357 cp/parser.cc:38364
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `restrict'"
  msgid "invalid type for property"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/parser.cc:38526
  #, gcc-internal-format
  msgid "unknown property attribute %qE"
  msgstr ""
  
! #: cp/parser.cc:39824
  #, gcc-internal-format
  msgid "expected integer expression list"
  msgstr ""
  
! #: cp/parser.cc:39841
  #, gcc-internal-format
  msgid "%<wait%> expression must be integral"
  msgstr ""
  
! #: cp/parser.cc:40597
  #, gcc-internal-format
  msgid "expected %<scalar%>, %<aggregate%>, %<all%>"
  msgstr ""
  
! #: cp/parser.cc:40988
  #, fuzzy, gcc-internal-format
  #| msgid "invalid initializer"
  msgid "invalid reduction-identifier"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/parser.cc:42049
  #, gcc-internal-format
  msgid "types may not be defined in iterator type"
  msgstr ""
*************** msgstr ""
*** 65708,65877 ****
  #. check above and add one in semantics.cc (to properly handle templates).
  #. Base this on the allocator/align modifiers check for the 'allocate' clause
  #. in semantics.cc's finish_omp_clauses.
! #: cp/parser.cc:44102
  #, gcc-internal-format
  msgid "%<#pragma omp allocate%> not yet supported"
  msgstr ""
  
! #: cp/parser.cc:45553
  #, gcc-internal-format
  msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
  msgstr ""
  
! #: cp/parser.cc:46484
  #, gcc-internal-format
  msgid "%<ordered%> clause with parameter on range-based %<for%> loop"
  msgstr ""
  
! #: cp/parser.cc:46566 cp/pt.cc:18593
  #, gcc-internal-format
  msgid "iteration variable %qD should not be reduction"
  msgstr ""
  
! #: cp/parser.cc:49607
  #, gcc-internal-format
  msgid "%<#pragma omp declare %s%> followed by %<#pragma omp declare %s%>"
  msgstr ""
  
! #: cp/parser.cc:50294
  #, gcc-internal-format
  msgid "%<#pragma omp dispatch%> must be followed by a direct function call with optional assignment"
  msgstr ""
  
! #: cp/parser.cc:50521
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function,"
  msgid "%qD is not a C pointer"
  msgstr "`%D' - Ð³Ñ�Ñ‚Ð° Ð½Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�,"
  
! #: cp/parser.cc:50647
  #, gcc-internal-format
  msgid "an %qs clause can only be specified if the %<dispatch%> selector of the construct selector set appears in the %<match%> clause"
  msgstr ""
  
! #: cp/parser.cc:50768
  #, gcc-internal-format
  msgid "OpenMP directive other than %<declare simd%> or %<declare variant%> appertains to a declaration"
  msgstr ""
  
! #: cp/parser.cc:51822
  #, fuzzy, gcc-internal-format
  #| msgid "invalid initializer"
  msgid "invalid initializer clause"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/parser.cc:51853
  #, gcc-internal-format
  msgid "expected id-expression (arguments)"
  msgstr ""
  
! #: cp/parser.cc:51865
  #, gcc-internal-format
  msgid "one of the initializer call arguments should be %<omp_priv%> or %<&omp_priv%>"
  msgstr ""
  
! #: cp/parser.cc:51968
  #, gcc-internal-format
  msgid "types may not be defined in declare reduction type list"
  msgstr ""
  
! #: cp/parser.cc:51988 cp/semantics.cc:6841
  #, gcc-internal-format
  msgid "predeclared arithmetic type %qT in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: cp/parser.cc:51992 cp/semantics.cc:6849
  #, gcc-internal-format
  msgid "function or array type %qT in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: cp/parser.cc:51995 cp/pt.cc:14880 cp/semantics.cc:6855
  #, gcc-internal-format
  msgid "reference type %qT in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: cp/parser.cc:51998 cp/semantics.cc:6861
  #, gcc-internal-format
  msgid "%<const%>, %<volatile%> or %<__restrict%>-qualified type %qT in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: cp/parser.cc:52749
  #, gcc-internal-format
  msgid "%<#pragma acc routine%> names a set of overloads"
  msgstr ""
  
! #: cp/parser.cc:52759
  #, gcc-internal-format
  msgid "%qD does not refer to a namespace scope function"
  msgstr ""
  
! #: cp/parser.cc:52929 cp/parser.cc:53464
  #, gcc-internal-format
  msgid "OpenMP directives may not appear in %<constexpr%> functions"
  msgstr ""
  
  #. cancel-and-throw is unimplemented.
! #: cp/parser.cc:53140
  #, gcc-internal-format
  msgid "%<atomic_cancel%>"
  msgstr ""
  
! #: cp/parser.cc:53187 cp/semantics.cc:12154
  #, gcc-internal-format
  msgid "%<__transaction_relaxed%> without transactional memory support enabled"
  msgstr ""
  
! #: cp/parser.cc:53189 cp/semantics.cc:12156
  #, gcc-internal-format
  msgid "%<__transaction_atomic%> without transactional memory support enabled"
  msgstr ""
  
! #: cp/parser.cc:53335
  #, gcc-internal-format
  msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
  msgstr ""
  
! #: cp/parser.cc:53338
  #, gcc-internal-format
  msgid "  or a %<transaction_may_cancel_outer%> function"
  msgstr ""
  
! #: cp/parser.cc:53385
  #, gcc-internal-format
  msgid "malformed %<#pragma GCC pch_preprocess%>"
  msgstr ""
  
! #: cp/parser.cc:53714
  #, gcc-internal-format
  msgid "%<#pragma omp requires%> may only be used at file or namespace scope"
  msgstr ""
  
! #: cp/parser.cc:53725
  #, gcc-internal-format
  msgid "%<#pragma omp assumes%> may only be used at file or namespace scope"
  msgstr ""
  
! #: cp/parser.cc:53812
  #, gcc-internal-format
  msgid "%<#pragma GCC %s%> must be inside a function"
  msgstr ""
  
! #: cp/parser.cc:53954
  #, gcc-internal-format
  msgid "multi-source compilation not implemented for C++"
  msgstr ""
  
! #: cp/parser.cc:53991
  #, gcc-internal-format
  msgid "placeholder type not allowed in this context"
  msgstr ""
  
! #: cp/parser.cc:54200
  #, gcc-internal-format
  msgid "implicit templates may not be %<virtual%>"
  msgstr ""
  
! #: cp/parser.cc:54256
  #, gcc-internal-format
  msgid "%<extern \"C\"%> linkage started here"
  msgstr ""
--- 65799,65968 ----
  #. check above and add one in semantics.cc (to properly handle templates).
  #. Base this on the allocator/align modifiers check for the 'allocate' clause
  #. in semantics.cc's finish_omp_clauses.
! #: cp/parser.cc:44161
  #, gcc-internal-format
  msgid "%<#pragma omp allocate%> not yet supported"
  msgstr ""
  
! #: cp/parser.cc:45612
  #, gcc-internal-format
  msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
  msgstr ""
  
! #: cp/parser.cc:46543
  #, gcc-internal-format
  msgid "%<ordered%> clause with parameter on range-based %<for%> loop"
  msgstr ""
  
! #: cp/parser.cc:46625 cp/pt.cc:18622
  #, gcc-internal-format
  msgid "iteration variable %qD should not be reduction"
  msgstr ""
  
! #: cp/parser.cc:49666
  #, gcc-internal-format
  msgid "%<#pragma omp declare %s%> followed by %<#pragma omp declare %s%>"
  msgstr ""
  
! #: cp/parser.cc:50353
  #, gcc-internal-format
  msgid "%<#pragma omp dispatch%> must be followed by a direct function call with optional assignment"
  msgstr ""
  
! #: cp/parser.cc:50580
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function,"
  msgid "%qD is not a C pointer"
  msgstr "`%D' - Ð³Ñ�Ñ‚Ð° Ð½Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�,"
  
! #: cp/parser.cc:50706
  #, gcc-internal-format
  msgid "an %qs clause can only be specified if the %<dispatch%> selector of the construct selector set appears in the %<match%> clause"
  msgstr ""
  
! #: cp/parser.cc:50827
  #, gcc-internal-format
  msgid "OpenMP directive other than %<declare simd%> or %<declare variant%> appertains to a declaration"
  msgstr ""
  
! #: cp/parser.cc:51875
  #, fuzzy, gcc-internal-format
  #| msgid "invalid initializer"
  msgid "invalid initializer clause"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/parser.cc:51906
  #, gcc-internal-format
  msgid "expected id-expression (arguments)"
  msgstr ""
  
! #: cp/parser.cc:51918
  #, gcc-internal-format
  msgid "one of the initializer call arguments should be %<omp_priv%> or %<&omp_priv%>"
  msgstr ""
  
! #: cp/parser.cc:52021
  #, gcc-internal-format
  msgid "types may not be defined in declare reduction type list"
  msgstr ""
  
! #: cp/parser.cc:52041 cp/semantics.cc:6841
  #, gcc-internal-format
  msgid "predeclared arithmetic type %qT in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: cp/parser.cc:52045 cp/semantics.cc:6849
  #, gcc-internal-format
  msgid "function or array type %qT in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: cp/parser.cc:52048 cp/pt.cc:14893 cp/semantics.cc:6855
  #, gcc-internal-format
  msgid "reference type %qT in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: cp/parser.cc:52051 cp/semantics.cc:6861
  #, gcc-internal-format
  msgid "%<const%>, %<volatile%> or %<__restrict%>-qualified type %qT in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: cp/parser.cc:52802
  #, gcc-internal-format
  msgid "%<#pragma acc routine%> names a set of overloads"
  msgstr ""
  
! #: cp/parser.cc:52812
  #, gcc-internal-format
  msgid "%qD does not refer to a namespace scope function"
  msgstr ""
  
! #: cp/parser.cc:52982 cp/parser.cc:53517
  #, gcc-internal-format
  msgid "OpenMP directives may not appear in %<constexpr%> functions"
  msgstr ""
  
  #. cancel-and-throw is unimplemented.
! #: cp/parser.cc:53193
  #, gcc-internal-format
  msgid "%<atomic_cancel%>"
  msgstr ""
  
! #: cp/parser.cc:53240 cp/semantics.cc:12154
  #, gcc-internal-format
  msgid "%<__transaction_relaxed%> without transactional memory support enabled"
  msgstr ""
  
! #: cp/parser.cc:53242 cp/semantics.cc:12156
  #, gcc-internal-format
  msgid "%<__transaction_atomic%> without transactional memory support enabled"
  msgstr ""
  
! #: cp/parser.cc:53388
  #, gcc-internal-format
  msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
  msgstr ""
  
! #: cp/parser.cc:53391
  #, gcc-internal-format
  msgid "  or a %<transaction_may_cancel_outer%> function"
  msgstr ""
  
! #: cp/parser.cc:53438
  #, gcc-internal-format
  msgid "malformed %<#pragma GCC pch_preprocess%>"
  msgstr ""
  
! #: cp/parser.cc:53767
  #, gcc-internal-format
  msgid "%<#pragma omp requires%> may only be used at file or namespace scope"
  msgstr ""
  
! #: cp/parser.cc:53778
  #, gcc-internal-format
  msgid "%<#pragma omp assumes%> may only be used at file or namespace scope"
  msgstr ""
  
! #: cp/parser.cc:53865
  #, gcc-internal-format
  msgid "%<#pragma GCC %s%> must be inside a function"
  msgstr ""
  
! #: cp/parser.cc:54007
  #, gcc-internal-format
  msgid "multi-source compilation not implemented for C++"
  msgstr ""
  
! #: cp/parser.cc:54044
  #, gcc-internal-format
  msgid "placeholder type not allowed in this context"
  msgstr ""
  
! #: cp/parser.cc:54253
  #, gcc-internal-format
  msgid "implicit templates may not be %<virtual%>"
  msgstr ""
  
! #: cp/parser.cc:54309
  #, gcc-internal-format
  msgid "%<extern \"C\"%> linkage started here"
  msgstr ""
*************** msgstr ""
*** 66569,66843 ****
  msgid "%qE is not a valid template argument for %qT because it is not the address of a variable"
  msgstr ""
  
! #: cp/pt.cc:7549
  #, gcc-internal-format
  msgid "%qE is not a valid template argument for type %qT because string literals can never be used in this context"
  msgstr ""
  
! #: cp/pt.cc:7714
  #, fuzzy, gcc-internal-format
  #| msgid "default argument for `%#D' has type `%T'"
  msgid "in template argument for type %qT"
  msgstr "Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ñ‹ Ð°Ñ€Ð³ÑƒÐ¼Ñ�Ð½Ñ‚ Ð´Ð»Ñ� `%#D' Ð¼Ð°Ðµ Ñ‚Ñ‹Ð¿ `%T'"
  
! #: cp/pt.cc:7728
  #, gcc-internal-format
  msgid "template argument %qE for type %qT not a compile-time constant"
  msgstr ""
  
! #: cp/pt.cc:7814
  #, gcc-internal-format
  msgid "%qE is not a valid template argument for type %qT because of conflicts in cv-qualification"
  msgstr ""
  
! #: cp/pt.cc:7822
  #, gcc-internal-format
  msgid "%qE is not a valid template argument for type %qT because it is not an lvalue"
  msgstr ""
  
! #: cp/pt.cc:7840
  #, gcc-internal-format
  msgid "%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address"
  msgstr ""
  
! #: cp/pt.cc:7900
  #, gcc-internal-format
  msgid "%qE is not a valid template argument for type %qT because it is a pointer"
  msgstr ""
  
! #: cp/pt.cc:7902
  #, gcc-internal-format
  msgid "try using %qE instead"
  msgstr ""
  
! #: cp/pt.cc:7956
  #, gcc-internal-format
  msgid "%qE is not a valid template argument for type %qT because it is of type %qT"
  msgstr ""
  
! #: cp/pt.cc:8547
  #, gcc-internal-format
  msgid "ignoring attributes on template argument %qT"
  msgstr ""
  
! #: cp/pt.cc:8563
  #, gcc-internal-format
  msgid "ignoring attributes in template argument %qE"
  msgstr ""
  
! #: cp/pt.cc:8693
  #, gcc-internal-format
  msgid "injected-class-name %qD used as template template argument"
  msgstr ""
  
! #: cp/pt.cc:8722
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `restrict'"
  msgid "invalid use of destructor %qE as a type"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/pt.cc:8727
  #, gcc-internal-format
  msgid "to refer to a type member of a template parameter, use %<typename %E%>"
  msgstr ""
  
! #: cp/pt.cc:8744 cp/pt.cc:8779 cp/pt.cc:8830
  #, gcc-internal-format
  msgid "type/value mismatch at argument %d in template parameter list for %qD"
  msgstr ""
  
! #: cp/pt.cc:8752
  #, gcc-internal-format
  msgid "  expected a constant of type %qT, got %qT"
  msgstr ""
  
! #: cp/pt.cc:8760
  #, gcc-internal-format
  msgid "  ambiguous template argument for non-type template parameter is treated as function type"
  msgstr ""
  
! #: cp/pt.cc:8766
  #, gcc-internal-format
  msgid "  expected a class template, got %qE"
  msgstr ""
  
! #: cp/pt.cc:8769
  #, gcc-internal-format
  msgid "  expected a type, got %qE"
  msgstr ""
  
! #: cp/pt.cc:8784
  #, gcc-internal-format
  msgid "  expected a type, got %qT"
  msgstr ""
  
! #: cp/pt.cc:8787
  #, gcc-internal-format
  msgid "  expected a class template, got %qT"
  msgstr ""
  
! #: cp/pt.cc:8834
  #, gcc-internal-format
  msgid "  expected a template of type %qD, got %qT"
  msgstr ""
  
! #: cp/pt.cc:8849
  #, gcc-internal-format
  msgid "constraint mismatch at argument %d in template parameter list for %qD"
  msgstr ""
  
! #: cp/pt.cc:8852
  #, gcc-internal-format
  msgid "  expected %qD but got %qD"
  msgstr ""
  
! #: cp/pt.cc:8940
  #, gcc-internal-format
  msgid "could not convert template argument %qE from %qT to %qT"
  msgstr ""
  
! #: cp/pt.cc:9068 cp/pt.cc:9404
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "template argument %d is invalid"
  msgstr "Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\" Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ð½Ñ‹"
  
! #: cp/pt.cc:9083 cp/pt.cc:9229
  #, gcc-internal-format, gfc-internal-format
  msgid "wrong number of template arguments (%d, should be %d)"
  msgstr ""
  
! #: cp/pt.cc:9225
  #, gcc-internal-format, gfc-internal-format
  msgid "wrong number of template arguments (%d, should be at least %d)"
  msgstr ""
  
! #: cp/pt.cc:9234
  #, fuzzy, gcc-internal-format
  msgid "provided for %qD"
  msgstr "Ð´Ñ�Ñ�Ñ‚Ñ€ÑƒÐºÑ‚Ð°Ñ€Ñƒ Ð½ÐµÐ°Ð±Ñ…Ð¾Ð´Ð½Ñ‹ \"%#D\""
  
! #: cp/pt.cc:9260
  #, gcc-internal-format
  msgid "pack expansion argument for non-pack parameter %qD of alias template %qD"
  msgstr ""
  
! #: cp/pt.cc:9264
  #, gcc-internal-format
  msgid "pack expansion argument for non-pack parameter %qD of concept %qD"
  msgstr ""
  
! #: cp/pt.cc:9365
  #, gcc-internal-format
  msgid "so any instantiation with a non-empty parameter pack would be ill-formed"
  msgstr ""
  
! #: cp/pt.cc:9934
  #, gcc-internal-format
  msgid "instantiation exposes TU-local entity %qD"
  msgstr ""
  
! #: cp/pt.cc:9953
  #, fuzzy, gcc-internal-format
  msgid "%q#D is not a function template"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/pt.cc:10140
  #, gcc-internal-format
  msgid "non-template type %qT used as a template"
  msgstr ""
  
! #: cp/pt.cc:10142
  #, fuzzy, gcc-internal-format
  msgid "for template declaration %q+D"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ"
  
! #: cp/pt.cc:10311 cp/pt.cc:22841
  #, gcc-internal-format
  msgid "template constraint failure for %qD"
  msgstr ""
  
! #: cp/pt.cc:10661
  #, gcc-internal-format
  msgid "use of invalid variable template %qE"
  msgstr ""
  
! #: cp/pt.cc:11392
  #, gcc-internal-format
  msgid "template instantiation depth exceeds maximum of %d (use %<-ftemplate-depth=%> to increase the maximum)"
  msgstr ""
  
! #: cp/pt.cc:12216
  #, gcc-internal-format
  msgid "score argument must be constant integer expression"
  msgstr ""
  
! #: cp/pt.cc:12225
  #, gcc-internal-format
  msgid "score argument must be non-negative"
  msgstr ""
  
! #: cp/pt.cc:12252
  #, gcc-internal-format
  msgid "property must be constant integer expression or string literal"
  msgstr ""
  
! #: cp/pt.cc:12256
  #, gcc-internal-format
  msgid "property must be constant integer expression"
  msgstr ""
  
! #: cp/pt.cc:12484
  #, gcc-internal-format
  msgid "instantiating erroneous template"
  msgstr ""
  
! #: cp/pt.cc:12485
  #, gcc-internal-format
  msgid "first error appeared here"
  msgstr ""
  
! #: cp/pt.cc:12836
  #, gcc-internal-format
  msgid "flexible array member %qD in union"
  msgstr ""
  
! #: cp/pt.cc:13355
  #, gcc-internal-format
  msgid "fold of empty expansion over %O"
  msgstr ""
  
! #: cp/pt.cc:13826
  #, gcc-internal-format
  msgid "%qE is not the entire pattern of the pack expansion"
  msgstr ""
  
! #: cp/pt.cc:13914
  #, gcc-internal-format
  msgid "mismatched argument pack lengths while expanding %qT"
  msgstr ""
  
! #: cp/pt.cc:13917
  #, gcc-internal-format
  msgid "mismatched argument pack lengths while expanding %qE"
  msgstr ""
  
! #: cp/pt.cc:14102
  #, fuzzy, gcc-internal-format
  #| msgid "cannot find `nm'"
  msgid "cannot index an empty pack"
  msgstr "Ð½ÐµÐ»ÑŒÐ³Ð° Ð·Ð½Ð°Ð¹Ñ�Ñ†Ñ– \"nm\""
  
! #: cp/pt.cc:14553
  #, fuzzy, gcc-internal-format
  msgid "  when instantiating default argument for call to %qD"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/pt.cc:14650
  #, gcc-internal-format
  msgid "creating pointer to member function of non-class type %qT"
  msgstr ""
  
! #: cp/pt.cc:15640
  #, gcc-internal-format, gfc-internal-format
  msgid "mismatched argument pack lengths (%d vs %d)"
  msgstr ""
--- 66660,66934 ----
  msgid "%qE is not a valid template argument for %qT because it is not the address of a variable"
  msgstr ""
  
! #: cp/pt.cc:7554
  #, gcc-internal-format
  msgid "%qE is not a valid template argument for type %qT because string literals can never be used in this context"
  msgstr ""
  
! #: cp/pt.cc:7719
  #, fuzzy, gcc-internal-format
  #| msgid "default argument for `%#D' has type `%T'"
  msgid "in template argument for type %qT"
  msgstr "Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ñ‹ Ð°Ñ€Ð³ÑƒÐ¼Ñ�Ð½Ñ‚ Ð´Ð»Ñ� `%#D' Ð¼Ð°Ðµ Ñ‚Ñ‹Ð¿ `%T'"
  
! #: cp/pt.cc:7733
  #, gcc-internal-format
  msgid "template argument %qE for type %qT not a compile-time constant"
  msgstr ""
  
! #: cp/pt.cc:7819
  #, gcc-internal-format
  msgid "%qE is not a valid template argument for type %qT because of conflicts in cv-qualification"
  msgstr ""
  
! #: cp/pt.cc:7827
  #, gcc-internal-format
  msgid "%qE is not a valid template argument for type %qT because it is not an lvalue"
  msgstr ""
  
! #: cp/pt.cc:7845
  #, gcc-internal-format
  msgid "%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address"
  msgstr ""
  
! #: cp/pt.cc:7905
  #, gcc-internal-format
  msgid "%qE is not a valid template argument for type %qT because it is a pointer"
  msgstr ""
  
! #: cp/pt.cc:7907
  #, gcc-internal-format
  msgid "try using %qE instead"
  msgstr ""
  
! #: cp/pt.cc:7961
  #, gcc-internal-format
  msgid "%qE is not a valid template argument for type %qT because it is of type %qT"
  msgstr ""
  
! #: cp/pt.cc:8552
  #, gcc-internal-format
  msgid "ignoring attributes on template argument %qT"
  msgstr ""
  
! #: cp/pt.cc:8568
  #, gcc-internal-format
  msgid "ignoring attributes in template argument %qE"
  msgstr ""
  
! #: cp/pt.cc:8698
  #, gcc-internal-format
  msgid "injected-class-name %qD used as template template argument"
  msgstr ""
  
! #: cp/pt.cc:8727
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `restrict'"
  msgid "invalid use of destructor %qE as a type"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/pt.cc:8732
  #, gcc-internal-format
  msgid "to refer to a type member of a template parameter, use %<typename %E%>"
  msgstr ""
  
! #: cp/pt.cc:8749 cp/pt.cc:8784 cp/pt.cc:8835
  #, gcc-internal-format
  msgid "type/value mismatch at argument %d in template parameter list for %qD"
  msgstr ""
  
! #: cp/pt.cc:8757
  #, gcc-internal-format
  msgid "  expected a constant of type %qT, got %qT"
  msgstr ""
  
! #: cp/pt.cc:8765
  #, gcc-internal-format
  msgid "  ambiguous template argument for non-type template parameter is treated as function type"
  msgstr ""
  
! #: cp/pt.cc:8771
  #, gcc-internal-format
  msgid "  expected a class template, got %qE"
  msgstr ""
  
! #: cp/pt.cc:8774
  #, gcc-internal-format
  msgid "  expected a type, got %qE"
  msgstr ""
  
! #: cp/pt.cc:8789
  #, gcc-internal-format
  msgid "  expected a type, got %qT"
  msgstr ""
  
! #: cp/pt.cc:8792
  #, gcc-internal-format
  msgid "  expected a class template, got %qT"
  msgstr ""
  
! #: cp/pt.cc:8839
  #, gcc-internal-format
  msgid "  expected a template of type %qD, got %qT"
  msgstr ""
  
! #: cp/pt.cc:8854
  #, gcc-internal-format
  msgid "constraint mismatch at argument %d in template parameter list for %qD"
  msgstr ""
  
! #: cp/pt.cc:8857
  #, gcc-internal-format
  msgid "  expected %qD but got %qD"
  msgstr ""
  
! #: cp/pt.cc:8945
  #, gcc-internal-format
  msgid "could not convert template argument %qE from %qT to %qT"
  msgstr ""
  
! #: cp/pt.cc:9073 cp/pt.cc:9409
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "template argument %d is invalid"
  msgstr "Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\" Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ð½Ñ‹"
  
! #: cp/pt.cc:9088 cp/pt.cc:9234
  #, gcc-internal-format, gfc-internal-format
  msgid "wrong number of template arguments (%d, should be %d)"
  msgstr ""
  
! #: cp/pt.cc:9230
  #, gcc-internal-format, gfc-internal-format
  msgid "wrong number of template arguments (%d, should be at least %d)"
  msgstr ""
  
! #: cp/pt.cc:9239
  #, fuzzy, gcc-internal-format
  msgid "provided for %qD"
  msgstr "Ð´Ñ�Ñ�Ñ‚Ñ€ÑƒÐºÑ‚Ð°Ñ€Ñƒ Ð½ÐµÐ°Ð±Ñ…Ð¾Ð´Ð½Ñ‹ \"%#D\""
  
! #: cp/pt.cc:9265
  #, gcc-internal-format
  msgid "pack expansion argument for non-pack parameter %qD of alias template %qD"
  msgstr ""
  
! #: cp/pt.cc:9269
  #, gcc-internal-format
  msgid "pack expansion argument for non-pack parameter %qD of concept %qD"
  msgstr ""
  
! #: cp/pt.cc:9370
  #, gcc-internal-format
  msgid "so any instantiation with a non-empty parameter pack would be ill-formed"
  msgstr ""
  
! #: cp/pt.cc:9939
  #, gcc-internal-format
  msgid "instantiation exposes TU-local entity %qD"
  msgstr ""
  
! #: cp/pt.cc:9958
  #, fuzzy, gcc-internal-format
  msgid "%q#D is not a function template"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/pt.cc:10153
  #, gcc-internal-format
  msgid "non-template type %qT used as a template"
  msgstr ""
  
! #: cp/pt.cc:10155
  #, fuzzy, gcc-internal-format
  msgid "for template declaration %q+D"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð¾Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ"
  
! #: cp/pt.cc:10324 cp/pt.cc:22870
  #, gcc-internal-format
  msgid "template constraint failure for %qD"
  msgstr ""
  
! #: cp/pt.cc:10674
  #, gcc-internal-format
  msgid "use of invalid variable template %qE"
  msgstr ""
  
! #: cp/pt.cc:11405
  #, gcc-internal-format
  msgid "template instantiation depth exceeds maximum of %d (use %<-ftemplate-depth=%> to increase the maximum)"
  msgstr ""
  
! #: cp/pt.cc:12229
  #, gcc-internal-format
  msgid "score argument must be constant integer expression"
  msgstr ""
  
! #: cp/pt.cc:12238
  #, gcc-internal-format
  msgid "score argument must be non-negative"
  msgstr ""
  
! #: cp/pt.cc:12265
  #, gcc-internal-format
  msgid "property must be constant integer expression or string literal"
  msgstr ""
  
! #: cp/pt.cc:12269
  #, gcc-internal-format
  msgid "property must be constant integer expression"
  msgstr ""
  
! #: cp/pt.cc:12497
  #, gcc-internal-format
  msgid "instantiating erroneous template"
  msgstr ""
  
! #: cp/pt.cc:12498
  #, gcc-internal-format
  msgid "first error appeared here"
  msgstr ""
  
! #: cp/pt.cc:12849
  #, gcc-internal-format
  msgid "flexible array member %qD in union"
  msgstr ""
  
! #: cp/pt.cc:13368
  #, gcc-internal-format
  msgid "fold of empty expansion over %O"
  msgstr ""
  
! #: cp/pt.cc:13839
  #, gcc-internal-format
  msgid "%qE is not the entire pattern of the pack expansion"
  msgstr ""
  
! #: cp/pt.cc:13927
  #, gcc-internal-format
  msgid "mismatched argument pack lengths while expanding %qT"
  msgstr ""
  
! #: cp/pt.cc:13930
  #, gcc-internal-format
  msgid "mismatched argument pack lengths while expanding %qE"
  msgstr ""
  
! #: cp/pt.cc:14115
  #, fuzzy, gcc-internal-format
  #| msgid "cannot find `nm'"
  msgid "cannot index an empty pack"
  msgstr "Ð½ÐµÐ»ÑŒÐ³Ð° Ð·Ð½Ð°Ð¹Ñ�Ñ†Ñ– \"nm\""
  
! #: cp/pt.cc:14566
  #, fuzzy, gcc-internal-format
  msgid "  when instantiating default argument for call to %qD"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/pt.cc:14663
  #, gcc-internal-format
  msgid "creating pointer to member function of non-class type %qT"
  msgstr ""
  
! #: cp/pt.cc:15663
  #, gcc-internal-format, gfc-internal-format
  msgid "mismatched argument pack lengths (%d vs %d)"
  msgstr ""
*************** msgstr ""
*** 66855,67161 ****
  #.
  #. is an attempt to declare a variable with function
  #. type.
! #: cp/pt.cc:15828
  #, fuzzy, gcc-internal-format
  msgid "variable %qD has function type"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: cp/pt.cc:16034
  #, fuzzy, gcc-internal-format
  #| msgid "invalid parameter type `%T'"
  msgid "invalid parameter type %qT"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ‚Ñ‹Ð¿ Ð¿Ð°Ñ€Ð°Ð¼Ñ�Ñ‚Ñ€Ð° `%T'"
  
! #: cp/pt.cc:16036
  #, fuzzy, gcc-internal-format
  #| msgid "in declaration `%D'"
  msgid "in declaration %q+D"
  msgstr "Ñƒ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ñ–  `%D'"
  
! #: cp/pt.cc:16163
  #, fuzzy, gcc-internal-format
  #| msgid "function does not return string type"
  msgid "function returning an array"
  msgstr "Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ� Ð½Ðµ Ð²Ñ�Ñ€Ñ‚Ð°Ðµ Ñ‚Ñ‹Ð¿ string"
  
! #: cp/pt.cc:16165
  #, fuzzy, gcc-internal-format
  msgid "function returning a function"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/pt.cc:16896
  #, gcc-internal-format
  msgid "forming reference to void"
  msgstr ""
  
! #: cp/pt.cc:16898
  #, fuzzy, gcc-internal-format
  msgid "forming pointer to reference type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/pt.cc:16900
  #, gcc-internal-format
  msgid "forming reference to reference type %qT"
  msgstr ""
  
! #: cp/pt.cc:16913
  #, fuzzy, gcc-internal-format
  msgid "forming pointer to qualified function type %qT"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: cp/pt.cc:16916
  #, gcc-internal-format
  msgid "forming reference to qualified function type %qT"
  msgstr ""
  
! #: cp/pt.cc:16969
  #, gcc-internal-format
  msgid "creating pointer to member of non-class type %qT"
  msgstr ""
  
! #: cp/pt.cc:16975
  #, gcc-internal-format
  msgid "creating pointer to member reference type %qT"
  msgstr ""
  
! #: cp/pt.cc:16981
  #, gcc-internal-format
  msgid "creating pointer to member of type void"
  msgstr ""
  
! #: cp/pt.cc:17050
  #, gcc-internal-format
  msgid "creating array of %qT"
  msgstr ""
  
! #: cp/pt.cc:17091
  #, gcc-internal-format
  msgid "%qD expanded to more than one element"
  msgstr ""
  
! #: cp/pt.cc:17098
  #, gcc-internal-format
  msgid "%qD is instantiated for an empty pack"
  msgstr ""
  
! #: cp/pt.cc:17119
  #, gcc-internal-format
  msgid "%qT is not a class, struct, or union type"
  msgstr ""
  
! #: cp/pt.cc:17159
  #, gcc-internal-format
  msgid "%qT resolves to %qT, which is not an enumeration type"
  msgstr ""
  
! #: cp/pt.cc:17167
  #, gcc-internal-format
  msgid "%qT resolves to %qT, which is not a class type"
  msgstr ""
  
! #: cp/pt.cc:17290
  #, fuzzy, gcc-internal-format
  msgid "use of %qs in template"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/pt.cc:17609
  #, gcc-internal-format
  msgid "qualifying type %qT does not match destructor name ~%qT"
  msgstr ""
  
! #: cp/pt.cc:17625
  #, gcc-internal-format
  msgid "dependent-name %qE is parsed as a non-type, but instantiation yields a type"
  msgstr ""
  
! #: cp/pt.cc:17627
  #, gcc-internal-format
  msgid "say %<typename %E%> if a type is meant"
  msgstr ""
  
! #: cp/pt.cc:17711
  #, gcc-internal-format
  msgid "initializer for %q#D expands to an empty list of expressions"
  msgstr ""
  
! #: cp/pt.cc:19980 cp/pt.cc:22201
  #, gcc-internal-format
  msgid "invalid use of pack expansion expression"
  msgstr ""
  
! #: cp/pt.cc:19984 cp/pt.cc:22205
  #, gcc-internal-format
  msgid "use %<...%> to expand argument pack"
  msgstr ""
  
! #: cp/pt.cc:20131
  #, gcc-internal-format
  msgid "empty initializer in lambda init-capture"
  msgstr ""
  
! #: cp/pt.cc:21437
  #, gcc-internal-format
  msgid "%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"
  msgstr ""
  
! #: cp/pt.cc:21472
  #, gcc-internal-format
  msgid "declarations in dependent base %qT are not found by unqualified lookup"
  msgstr ""
  
! #: cp/pt.cc:21477
  #, gcc-internal-format
  msgid "use %<this->%D%> instead"
  msgstr ""
  
! #: cp/pt.cc:21480
  #, gcc-internal-format
  msgid "use %<%T::%D%> instead"
  msgstr ""
  
! #: cp/pt.cc:21485
  #, gcc-internal-format
  msgid "%qD declared here, later in the translation unit"
  msgstr ""
  
! #: cp/pt.cc:21536
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments to %<__builtin_convertvector%>"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž, Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ… Ð´Ð»Ñ� Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
  
! #: cp/pt.cc:21563
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments to %<assume%> attribute"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž, Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ… Ð´Ð»Ñ� Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
  
! #: cp/pt.cc:21802
  #, fuzzy, gcc-internal-format
  msgid "%qT is not a class or namespace"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/pt.cc:21805
  #, fuzzy, gcc-internal-format
  msgid "%qD is not a class or namespace"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/pt.cc:22121
  #, gcc-internal-format
  msgid "using invalid field %qD"
  msgstr ""
  
! #: cp/pt.cc:22471
  #, gcc-internal-format
  msgid "%qT is/uses unnamed type"
  msgstr ""
  
! #: cp/pt.cc:22473
  #, fuzzy, gcc-internal-format
  #| msgid "default argument for `%#D' has type `%T'"
  msgid "template argument for %qD uses local type %qT"
  msgstr "Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ñ‹ Ð°Ñ€Ð³ÑƒÐ¼Ñ�Ð½Ñ‚ Ð´Ð»Ñ� `%#D' Ð¼Ð°Ðµ Ñ‚Ñ‹Ð¿ `%T'"
  
! #: cp/pt.cc:22483
  #, gcc-internal-format
  msgid "%qT is a variably modified type"
  msgstr ""
  
! #: cp/pt.cc:22498
  #, fuzzy, gcc-internal-format
  msgid "integral expression %qE is not constant"
  msgstr "Ñ‚Ñ‹Ð¿ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" Ð½Ðµ Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ñ‹"
  
! #: cp/pt.cc:22516
  #, gcc-internal-format
  msgid "  trying to instantiate %qD"
  msgstr ""
  
! #: cp/pt.cc:26953
  #, fuzzy, gcc-internal-format
  msgid "ambiguous template instantiation for %q#T"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/pt.cc:26955
  #, fuzzy, gcc-internal-format
  msgid "ambiguous template instantiation for %q#D"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/pt.cc:26961
  msgid "%s %#qS"
  msgstr ""
  
! #: cp/pt.cc:26988 cp/pt.cc:27075
  #, fuzzy, gcc-internal-format
  msgid "explicit instantiation of non-template %q#D"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/pt.cc:27007
  #, gcc-internal-format
  msgid "%qD is not a static data member of a class template"
  msgstr ""
  
! #: cp/pt.cc:27013 cp/pt.cc:27070
  #, gcc-internal-format
  msgid "no matching template for %qD found"
  msgstr ""
  
! #: cp/pt.cc:27018
  #, gcc-internal-format
  msgid "type %qT for explicit instantiation %qD does not match declared type %qT"
  msgstr ""
  
! #: cp/pt.cc:27026
  #, fuzzy, gcc-internal-format
  msgid "explicit instantiation of %q#D"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/pt.cc:27062
  #, fuzzy, gcc-internal-format
  msgid "duplicate explicit instantiation of %q#D"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/pt.cc:27085 cp/pt.cc:27152
  #, gcc-internal-format
  msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
  msgstr ""
  
! #: cp/pt.cc:27090 cp/pt.cc:27167
  #, gcc-internal-format
  msgid "storage class %qD applied to template instantiation"
  msgstr ""
  
! #: cp/pt.cc:27124
  #, fuzzy, gcc-internal-format
  msgid "explicit instantiation of non-class template %qD"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/pt.cc:27127
  #, fuzzy, gcc-internal-format
  msgid "explicit instantiation of non-template type %qT"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/pt.cc:27136
  #, gcc-internal-format
  msgid "explicit instantiation of %q#T before definition of template"
  msgstr ""
  
! #: cp/pt.cc:27157
  #, gcc-internal-format
  msgid "ISO C++ forbids the use of %qE on explicit instantiations"
  msgstr ""
  
! #: cp/pt.cc:27197
  #, fuzzy, gcc-internal-format
  msgid "duplicate explicit instantiation of %q#T"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/pt.cc:27527
  #, gcc-internal-format
  msgid "exception specification of %qD depends on itself"
  msgstr ""
  
! #: cp/pt.cc:27533
  #, gcc-internal-format
  msgid "exception specification of %qD is not available until end of class definition"
  msgstr ""
--- 66946,67252 ----
  #.
  #. is an attempt to declare a variable with function
  #. type.
! #: cp/pt.cc:15851
  #, fuzzy, gcc-internal-format
  msgid "variable %qD has function type"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: cp/pt.cc:16057
  #, fuzzy, gcc-internal-format
  #| msgid "invalid parameter type `%T'"
  msgid "invalid parameter type %qT"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ‚Ñ‹Ð¿ Ð¿Ð°Ñ€Ð°Ð¼Ñ�Ñ‚Ñ€Ð° `%T'"
  
! #: cp/pt.cc:16059
  #, fuzzy, gcc-internal-format
  #| msgid "in declaration `%D'"
  msgid "in declaration %q+D"
  msgstr "Ñƒ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ñ–  `%D'"
  
! #: cp/pt.cc:16186
  #, fuzzy, gcc-internal-format
  #| msgid "function does not return string type"
  msgid "function returning an array"
  msgstr "Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ� Ð½Ðµ Ð²Ñ�Ñ€Ñ‚Ð°Ðµ Ñ‚Ñ‹Ð¿ string"
  
! #: cp/pt.cc:16188
  #, fuzzy, gcc-internal-format
  msgid "function returning a function"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: cp/pt.cc:16919
  #, gcc-internal-format
  msgid "forming reference to void"
  msgstr ""
  
! #: cp/pt.cc:16921
  #, fuzzy, gcc-internal-format
  msgid "forming pointer to reference type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/pt.cc:16923
  #, gcc-internal-format
  msgid "forming reference to reference type %qT"
  msgstr ""
  
! #: cp/pt.cc:16936
  #, fuzzy, gcc-internal-format
  msgid "forming pointer to qualified function type %qT"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: cp/pt.cc:16939
  #, gcc-internal-format
  msgid "forming reference to qualified function type %qT"
  msgstr ""
  
! #: cp/pt.cc:16992
  #, gcc-internal-format
  msgid "creating pointer to member of non-class type %qT"
  msgstr ""
  
! #: cp/pt.cc:16998
  #, gcc-internal-format
  msgid "creating pointer to member reference type %qT"
  msgstr ""
  
! #: cp/pt.cc:17004
  #, gcc-internal-format
  msgid "creating pointer to member of type void"
  msgstr ""
  
! #: cp/pt.cc:17073
  #, gcc-internal-format
  msgid "creating array of %qT"
  msgstr ""
  
! #: cp/pt.cc:17114
  #, gcc-internal-format
  msgid "%qD expanded to more than one element"
  msgstr ""
  
! #: cp/pt.cc:17121
  #, gcc-internal-format
  msgid "%qD is instantiated for an empty pack"
  msgstr ""
  
! #: cp/pt.cc:17142
  #, gcc-internal-format
  msgid "%qT is not a class, struct, or union type"
  msgstr ""
  
! #: cp/pt.cc:17182
  #, gcc-internal-format
  msgid "%qT resolves to %qT, which is not an enumeration type"
  msgstr ""
  
! #: cp/pt.cc:17190
  #, gcc-internal-format
  msgid "%qT resolves to %qT, which is not a class type"
  msgstr ""
  
! #: cp/pt.cc:17319
  #, fuzzy, gcc-internal-format
  msgid "use of %qs in template"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/pt.cc:17638
  #, gcc-internal-format
  msgid "qualifying type %qT does not match destructor name ~%qT"
  msgstr ""
  
! #: cp/pt.cc:17654
  #, gcc-internal-format
  msgid "dependent-name %qE is parsed as a non-type, but instantiation yields a type"
  msgstr ""
  
! #: cp/pt.cc:17656
  #, gcc-internal-format
  msgid "say %<typename %E%> if a type is meant"
  msgstr ""
  
! #: cp/pt.cc:17740
  #, gcc-internal-format
  msgid "initializer for %q#D expands to an empty list of expressions"
  msgstr ""
  
! #: cp/pt.cc:20009 cp/pt.cc:22230
  #, gcc-internal-format
  msgid "invalid use of pack expansion expression"
  msgstr ""
  
! #: cp/pt.cc:20013 cp/pt.cc:22234
  #, gcc-internal-format
  msgid "use %<...%> to expand argument pack"
  msgstr ""
  
! #: cp/pt.cc:20160
  #, gcc-internal-format
  msgid "empty initializer in lambda init-capture"
  msgstr ""
  
! #: cp/pt.cc:21466
  #, gcc-internal-format
  msgid "%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"
  msgstr ""
  
! #: cp/pt.cc:21501
  #, gcc-internal-format
  msgid "declarations in dependent base %qT are not found by unqualified lookup"
  msgstr ""
  
! #: cp/pt.cc:21506
  #, gcc-internal-format
  msgid "use %<this->%D%> instead"
  msgstr ""
  
! #: cp/pt.cc:21509
  #, gcc-internal-format
  msgid "use %<%T::%D%> instead"
  msgstr ""
  
! #: cp/pt.cc:21514
  #, gcc-internal-format
  msgid "%qD declared here, later in the translation unit"
  msgstr ""
  
! #: cp/pt.cc:21565
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments to %<__builtin_convertvector%>"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž, Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ… Ð´Ð»Ñ� Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
  
! #: cp/pt.cc:21592
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments to %<assume%> attribute"
  msgstr "Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ¾Ð²Ð°Ñ� ÐºÐ¾Ð»ÑŒÐºÐ°Ñ�ÑŒÑ†ÑŒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž, Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ… Ð´Ð»Ñ� Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ð° `%s'"
  
! #: cp/pt.cc:21831
  #, fuzzy, gcc-internal-format
  msgid "%qT is not a class or namespace"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/pt.cc:21834
  #, fuzzy, gcc-internal-format
  msgid "%qD is not a class or namespace"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/pt.cc:22150
  #, gcc-internal-format
  msgid "using invalid field %qD"
  msgstr ""
  
! #: cp/pt.cc:22500
  #, gcc-internal-format
  msgid "%qT is/uses unnamed type"
  msgstr ""
  
! #: cp/pt.cc:22502
  #, fuzzy, gcc-internal-format
  #| msgid "default argument for `%#D' has type `%T'"
  msgid "template argument for %qD uses local type %qT"
  msgstr "Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ñ‹ Ð°Ñ€Ð³ÑƒÐ¼Ñ�Ð½Ñ‚ Ð´Ð»Ñ� `%#D' Ð¼Ð°Ðµ Ñ‚Ñ‹Ð¿ `%T'"
  
! #: cp/pt.cc:22512
  #, gcc-internal-format
  msgid "%qT is a variably modified type"
  msgstr ""
  
! #: cp/pt.cc:22527
  #, fuzzy, gcc-internal-format
  msgid "integral expression %qE is not constant"
  msgstr "Ñ‚Ñ‹Ð¿ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" Ð½Ðµ Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ñ‹"
  
! #: cp/pt.cc:22545
  #, gcc-internal-format
  msgid "  trying to instantiate %qD"
  msgstr ""
  
! #: cp/pt.cc:26983
  #, fuzzy, gcc-internal-format
  msgid "ambiguous template instantiation for %q#T"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/pt.cc:26985
  #, fuzzy, gcc-internal-format
  msgid "ambiguous template instantiation for %q#D"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/pt.cc:26991
  msgid "%s %#qS"
  msgstr ""
  
! #: cp/pt.cc:27018 cp/pt.cc:27105
  #, fuzzy, gcc-internal-format
  msgid "explicit instantiation of non-template %q#D"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/pt.cc:27037
  #, gcc-internal-format
  msgid "%qD is not a static data member of a class template"
  msgstr ""
  
! #: cp/pt.cc:27043 cp/pt.cc:27100
  #, gcc-internal-format
  msgid "no matching template for %qD found"
  msgstr ""
  
! #: cp/pt.cc:27048
  #, gcc-internal-format
  msgid "type %qT for explicit instantiation %qD does not match declared type %qT"
  msgstr ""
  
! #: cp/pt.cc:27056
  #, fuzzy, gcc-internal-format
  msgid "explicit instantiation of %q#D"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/pt.cc:27092
  #, fuzzy, gcc-internal-format
  msgid "duplicate explicit instantiation of %q#D"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/pt.cc:27115 cp/pt.cc:27182
  #, gcc-internal-format
  msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
  msgstr ""
  
! #: cp/pt.cc:27120 cp/pt.cc:27197
  #, gcc-internal-format
  msgid "storage class %qD applied to template instantiation"
  msgstr ""
  
! #: cp/pt.cc:27154
  #, fuzzy, gcc-internal-format
  msgid "explicit instantiation of non-class template %qD"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/pt.cc:27157
  #, fuzzy, gcc-internal-format
  msgid "explicit instantiation of non-template type %qT"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/pt.cc:27166
  #, gcc-internal-format
  msgid "explicit instantiation of %q#T before definition of template"
  msgstr ""
  
! #: cp/pt.cc:27187
  #, gcc-internal-format
  msgid "ISO C++ forbids the use of %qE on explicit instantiations"
  msgstr ""
  
! #: cp/pt.cc:27227
  #, fuzzy, gcc-internal-format
  msgid "duplicate explicit instantiation of %q#T"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½Ð½Ðµ Ð¼ÐµÑ‚ÐºÑ– \"%s\""
  
! #: cp/pt.cc:27557
  #, gcc-internal-format
  msgid "exception specification of %qD depends on itself"
  msgstr ""
  
! #: cp/pt.cc:27563
  #, gcc-internal-format
  msgid "exception specification of %qD is not available until end of class definition"
  msgstr ""
*************** msgstr ""
*** 67167,67324 ****
  #. member function or static data member of a class template
  #. shall be present in every translation unit in which it is
  #. explicitly instantiated.
! #: cp/pt.cc:28009
  #, gcc-internal-format
  msgid "explicit instantiation of %qD but no definition available"
  msgstr ""
  
! #: cp/pt.cc:28055
  #, gcc-internal-format
  msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use %<-ftemplate-depth=%> to increase the maximum)"
  msgstr ""
  
! #: cp/pt.cc:28430
  #, gcc-internal-format
  msgid "non-type template parameters of deduced class type only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/pt.cc:28460
  #, gcc-internal-format
  msgid "%qT is not a valid type for a template non-type parameter because it is not structural"
  msgstr ""
  
! #: cp/pt.cc:28469
  #, gcc-internal-format
  msgid "non-type template parameters of class type only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/pt.cc:28477
  #, fuzzy, gcc-internal-format
  msgid "invalid template non-type parameter"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/pt.cc:28479
  #, fuzzy, gcc-internal-format
  msgid "%q#T is not a valid type for a template non-type parameter"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/pt.cc:29942
  #, fuzzy, gcc-internal-format
  msgid "keyword %<template%> not allowed in declarator-id"
  msgstr "\"%s\" - Ð³Ñ�Ñ‚Ð° Ð½Ðµ Ð¿Ð°Ñ‡Ð°Ñ‚Ð°Ðº Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ–"
  
! #: cp/pt.cc:30127
  #, fuzzy, gcc-internal-format
  #| msgid "virtual functions cannot be friends"
  msgid "a concept cannot be constrained"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/pt.cc:30136
  #, gcc-internal-format
  msgid "concept %qE not in namespace scope"
  msgstr ""
  
! #: cp/pt.cc:30142
  #, gcc-internal-format
  msgid "concept %qE has multiple template parameter lists"
  msgstr ""
  
! #: cp/pt.cc:30186
  #, gcc-internal-format
  msgid "deducing from brace-enclosed initializer list requires %<#include <initializer_list>%>"
  msgstr ""
  
! #: cp/pt.cc:31457
  #, gcc-internal-format
  msgid "non-deducible template %qT used without template arguments"
  msgstr ""
  
! #: cp/pt.cc:31470
  #, gcc-internal-format
  msgid "alias template deduction only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/pt.cc:31476
  #, gcc-internal-format
  msgid "use %qD directly instead"
  msgstr ""
  
! #: cp/pt.cc:31604
  #, gcc-internal-format
  msgid "cannot deduce template arguments for copy-initialization of %qT, as it has no non-explicit deduction guides or user-declared constructors"
  msgstr ""
  
! #: cp/pt.cc:31611
  #, gcc-internal-format
  msgid "cannot deduce template arguments of %qT, as it has no viable deduction guides"
  msgstr ""
  
! #: cp/pt.cc:31624
  #, fuzzy, gcc-internal-format
  msgid "class template argument deduction failed:"
  msgstr "Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\" Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ð½Ñ‹"
  
! #: cp/pt.cc:31627
  #, gcc-internal-format
  msgid "explicit deduction guides not considered for copy-initialization"
  msgstr ""
  
! #: cp/pt.cc:31642
  #, gcc-internal-format
  msgid "class template argument deduction for %qT failed: explicit deduction guide selected in copy-list-initialization"
  msgstr ""
  
! #: cp/pt.cc:31646
  #, fuzzy, gcc-internal-format
  msgid "explicit deduction guide declared here"
  msgstr "Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ†Ñ‹Ñ�"
  
! #: cp/pt.cc:31661
  #, gcc-internal-format
  msgid "%qT may not intend to support class template argument deduction"
  msgstr ""
  
! #: cp/pt.cc:31663
  #, gcc-internal-format
  msgid "add a deduction guide to suppress this warning"
  msgstr ""
  
! #: cp/pt.cc:31786
  #, gcc-internal-format
  msgid "direct-list-initialization of %<auto%> requires exactly one element"
  msgstr ""
  
! #: cp/pt.cc:31789
  #, gcc-internal-format
  msgid "for deduction to %<std::initializer_list%>, use copy-list-initialization (i.e. add %<=%> before the %<{%>)"
  msgstr ""
  
! #: cp/pt.cc:31849
  #, gcc-internal-format
  msgid "unable to deduce lambda return type from %qE"
  msgstr ""
  
! #: cp/pt.cc:31852
  #, gcc-internal-format
  msgid "unable to deduce %qT from %qE"
  msgstr ""
  
! #: cp/pt.cc:31927
  #, gcc-internal-format
  msgid "placeholder constraints not satisfied"
  msgstr ""
  
! #: cp/pt.cc:31931
  #, gcc-internal-format
  msgid "deduced initializer does not satisfy placeholder constraints"
  msgstr ""
  
! #: cp/pt.cc:31935
  #, gcc-internal-format
  msgid "deduced return type does not satisfy placeholder constraints"
  msgstr ""
  
! #: cp/pt.cc:31939
  #, gcc-internal-format
  msgid "deduced expression type does not satisfy placeholder constraints"
  msgstr ""
--- 67258,67415 ----
  #. member function or static data member of a class template
  #. shall be present in every translation unit in which it is
  #. explicitly instantiated.
! #: cp/pt.cc:28039
  #, gcc-internal-format
  msgid "explicit instantiation of %qD but no definition available"
  msgstr ""
  
! #: cp/pt.cc:28085
  #, gcc-internal-format
  msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use %<-ftemplate-depth=%> to increase the maximum)"
  msgstr ""
  
! #: cp/pt.cc:28460
  #, gcc-internal-format
  msgid "non-type template parameters of deduced class type only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/pt.cc:28490
  #, gcc-internal-format
  msgid "%qT is not a valid type for a template non-type parameter because it is not structural"
  msgstr ""
  
! #: cp/pt.cc:28499
  #, gcc-internal-format
  msgid "non-type template parameters of class type only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/pt.cc:28507
  #, fuzzy, gcc-internal-format
  msgid "invalid template non-type parameter"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/pt.cc:28509
  #, fuzzy, gcc-internal-format
  msgid "%q#T is not a valid type for a template non-type parameter"
  msgstr "Ð½Ñ�Ð²ÐµÑ€Ð½Ð°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ \"restict\""
  
! #: cp/pt.cc:29972
  #, fuzzy, gcc-internal-format
  msgid "keyword %<template%> not allowed in declarator-id"
  msgstr "\"%s\" - Ð³Ñ�Ñ‚Ð° Ð½Ðµ Ð¿Ð°Ñ‡Ð°Ñ‚Ð°Ðº Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ–"
  
! #: cp/pt.cc:30157
  #, fuzzy, gcc-internal-format
  #| msgid "virtual functions cannot be friends"
  msgid "a concept cannot be constrained"
  msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ Ð±Ñ‹Ñ†ÑŒ Ñ�Ñ�Ð±Ñ€Ð¾ÑžÑ�ÐºÑ–Ð¼Ñ–"
  
! #: cp/pt.cc:30166
  #, gcc-internal-format
  msgid "concept %qE not in namespace scope"
  msgstr ""
  
! #: cp/pt.cc:30172
  #, gcc-internal-format
  msgid "concept %qE has multiple template parameter lists"
  msgstr ""
  
! #: cp/pt.cc:30216
  #, gcc-internal-format
  msgid "deducing from brace-enclosed initializer list requires %<#include <initializer_list>%>"
  msgstr ""
  
! #: cp/pt.cc:31487
  #, gcc-internal-format
  msgid "non-deducible template %qT used without template arguments"
  msgstr ""
  
! #: cp/pt.cc:31500
  #, gcc-internal-format
  msgid "alias template deduction only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/pt.cc:31506
  #, gcc-internal-format
  msgid "use %qD directly instead"
  msgstr ""
  
! #: cp/pt.cc:31634
  #, gcc-internal-format
  msgid "cannot deduce template arguments for copy-initialization of %qT, as it has no non-explicit deduction guides or user-declared constructors"
  msgstr ""
  
! #: cp/pt.cc:31641
  #, gcc-internal-format
  msgid "cannot deduce template arguments of %qT, as it has no viable deduction guides"
  msgstr ""
  
! #: cp/pt.cc:31654
  #, fuzzy, gcc-internal-format
  msgid "class template argument deduction failed:"
  msgstr "Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\" Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ð²Ð°Ð½Ñ‹"
  
! #: cp/pt.cc:31657
  #, gcc-internal-format
  msgid "explicit deduction guides not considered for copy-initialization"
  msgstr ""
  
! #: cp/pt.cc:31672
  #, gcc-internal-format
  msgid "class template argument deduction for %qT failed: explicit deduction guide selected in copy-list-initialization"
  msgstr ""
  
! #: cp/pt.cc:31676
  #, fuzzy, gcc-internal-format
  msgid "explicit deduction guide declared here"
  msgstr "Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ†Ñ‹Ñ�"
  
! #: cp/pt.cc:31691
  #, gcc-internal-format
  msgid "%qT may not intend to support class template argument deduction"
  msgstr ""
  
! #: cp/pt.cc:31693
  #, gcc-internal-format
  msgid "add a deduction guide to suppress this warning"
  msgstr ""
  
! #: cp/pt.cc:31816
  #, gcc-internal-format
  msgid "direct-list-initialization of %<auto%> requires exactly one element"
  msgstr ""
  
! #: cp/pt.cc:31819
  #, gcc-internal-format
  msgid "for deduction to %<std::initializer_list%>, use copy-list-initialization (i.e. add %<=%> before the %<{%>)"
  msgstr ""
  
! #: cp/pt.cc:31879
  #, gcc-internal-format
  msgid "unable to deduce lambda return type from %qE"
  msgstr ""
  
! #: cp/pt.cc:31882
  #, gcc-internal-format
  msgid "unable to deduce %qT from %qE"
  msgstr ""
  
! #: cp/pt.cc:31957
  #, gcc-internal-format
  msgid "placeholder constraints not satisfied"
  msgstr ""
  
! #: cp/pt.cc:31961
  #, gcc-internal-format
  msgid "deduced initializer does not satisfy placeholder constraints"
  msgstr ""
  
! #: cp/pt.cc:31965
  #, gcc-internal-format
  msgid "deduced return type does not satisfy placeholder constraints"
  msgstr ""
  
! #: cp/pt.cc:31969
  #, gcc-internal-format
  msgid "deduced expression type does not satisfy placeholder constraints"
  msgstr ""
*************** msgstr ""
*** 67338,67359 ****
  msgid "cannot create type information for type %qT because it involves types of variable size"
  msgstr ""
  
! #: cp/rtti.cc:520
  #, gcc-internal-format
  msgid "%<typeid%> of qualified function type %qT"
  msgstr ""
  
! #: cp/rtti.cc:710 cp/rtti.cc:726
  #, gcc-internal-format
  msgid "%<dynamic_cast<%#T>(%#D)%> can never succeed"
  msgstr ""
  
! #: cp/rtti.cc:738
  #, gcc-internal-format
  msgid "%<dynamic_cast%> not permitted with %<-fno-rtti%>"
  msgstr ""
  
! #: cp/rtti.cc:820
  #, gcc-internal-format
  msgid "cannot %<dynamic_cast%> %qE (of type %q#T) to type %q#T (%s)"
  msgstr ""
--- 67429,67450 ----
  msgid "cannot create type information for type %qT because it involves types of variable size"
  msgstr ""
  
! #: cp/rtti.cc:521
  #, gcc-internal-format
  msgid "%<typeid%> of qualified function type %qT"
  msgstr ""
  
! #: cp/rtti.cc:711 cp/rtti.cc:727
  #, gcc-internal-format
  msgid "%<dynamic_cast<%#T>(%#D)%> can never succeed"
  msgstr ""
  
! #: cp/rtti.cc:739
  #, gcc-internal-format
  msgid "%<dynamic_cast%> not permitted with %<-fno-rtti%>"
  msgstr ""
  
! #: cp/rtti.cc:821
  #, gcc-internal-format
  msgid "cannot %<dynamic_cast%> %qE (of type %q#T) to type %q#T (%s)"
  msgstr ""
*************** msgstr ""
*** 68602,69359 ****
  msgid "subscript missing in array reference"
  msgstr ""
  
! #: cp/typeck.cc:4084
  #, gcc-internal-format
  msgid "subscripting array declared %<register%>"
  msgstr ""
  
! #: cp/typeck.cc:4124
  #, gcc-internal-format
  msgid "subscripted value is neither array nor pointer"
  msgstr ""
  
! #: cp/typeck.cc:4196
  #, gcc-internal-format
  msgid "object missing in use of %qE"
  msgstr ""
  
! #: cp/typeck.cc:4447
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids calling %<::main%> from within program"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: cp/typeck.cc:4468
  #, gcc-internal-format
  msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>"
  msgstr ""
  
! #: cp/typeck.cc:4485
  #, fuzzy, gcc-internal-format
  msgid "%qE cannot be used as a function"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/typeck.cc:4488
  #, fuzzy, gcc-internal-format
  msgid "%qD cannot be used as a function"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/typeck.cc:4491
  #, fuzzy, gcc-internal-format
  msgid "expression cannot be used as a function"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/typeck.cc:4553
  #, fuzzy, gcc-internal-format
  msgid "too many arguments to constructor %q#D"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/typeck.cc:4554
  #, fuzzy, gcc-internal-format
  msgid "too few arguments to constructor %q#D"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/typeck.cc:4559
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to function"
  msgid "too many arguments to member function %q#D"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/typeck.cc:4560
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function"
  msgid "too few arguments to member function %q#D"
  msgstr "Ð½Ðµ Ñ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/typeck.cc:4566
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to function"
  msgid "too many arguments to function %q#D"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/typeck.cc:4567
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function"
  msgid "too few arguments to function %q#D"
  msgstr "Ð½Ðµ Ñ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/typeck.cc:4577
  #, fuzzy, gcc-internal-format
  msgid "too many arguments to method %q#D"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/typeck.cc:4578
  #, fuzzy, gcc-internal-format
  msgid "too few arguments to method %q#D"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/typeck.cc:4581
  #, gcc-internal-format
  msgid "too many arguments to function"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/typeck.cc:4582
  #, gcc-internal-format
  msgid "too few arguments to function"
  msgstr "Ð½Ðµ Ñ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/typeck.cc:4664
  #, fuzzy, gcc-internal-format
  msgid "parameter %P of %qD has incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/typeck.cc:4670
  #, fuzzy, gcc-internal-format
  msgid "parameter %P has incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/typeck.cc:4984
  #, gcc-internal-format
  msgid "the address %qE will never be NULL"
  msgstr ""
  
! #: cp/typeck.cc:5031
  #, gcc-internal-format
  msgid "the address of %qD will never be NULL"
  msgstr ""
  
! #: cp/typeck.cc:5046
  #, gcc-internal-format
  msgid "the compiler can assume that the address of %qE will never be NULL"
  msgstr ""
  
! #: cp/typeck.cc:5049
  #, gcc-internal-format
  msgid "comparing the result of pointer addition %qE and NULL"
  msgstr ""
  
! #: cp/typeck.cc:5064
  #, gcc-internal-format
  msgid "the compiler can assume that the address of %qD will never be NULL"
  msgstr ""
  
! #: cp/typeck.cc:5123
  #, gcc-internal-format
  msgid "bitwise operation between different enumeration types %qT and %qT"
  msgstr ""
  
! #: cp/typeck.cc:5126
  #, gcc-internal-format
  msgid "bitwise operation between different enumeration types %qT and %qT is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5132
  #, gcc-internal-format
  msgid "arithmetic between different enumeration types %qT and %qT"
  msgstr ""
  
! #: cp/typeck.cc:5135
  #, gcc-internal-format
  msgid "arithmetic between different enumeration types %qT and %qT is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5172
  #, gcc-internal-format
  msgid "comparison of enumeration type %qT with floating-point type %qT"
  msgstr ""
  
! #: cp/typeck.cc:5175
  #, gcc-internal-format
  msgid "comparison of floating-point type %qT with enumeration type %qT"
  msgstr ""
  
! #: cp/typeck.cc:5178
  #, gcc-internal-format
  msgid "comparison of enumeration type %qT with floating-point type %qT is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5182
  #, gcc-internal-format
  msgid "comparison of floating-point type %qT with enumeration type %qT is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5191
  #, gcc-internal-format
  msgid "arithmetic between enumeration type %qT and floating-point type %qT"
  msgstr ""
  
! #: cp/typeck.cc:5194
  #, gcc-internal-format
  msgid "arithmetic between floating-point type %qT and enumeration type %qT"
  msgstr ""
  
! #: cp/typeck.cc:5197
  #, gcc-internal-format
  msgid "arithmetic between enumeration type %qT and floating-point type %qT is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5201
  #, gcc-internal-format
  msgid "arithmetic between floating-point type %qT and enumeration type %qT is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5336 cp/typeck.cc:5348
  #, gcc-internal-format
  msgid "assuming cast to type %qT from overloaded function"
  msgstr ""
  
! #: cp/typeck.cc:5462
  #, gcc-internal-format
  msgid "NULL used in arithmetic"
  msgstr ""
  
! #: cp/typeck.cc:5929 cp/typeck.cc:5938 cp/typeck.cc:6244 cp/typeck.cc:6253
  #, gcc-internal-format
  msgid "ISO C++ forbids comparison between pointer and integer"
  msgstr ""
  
! #: cp/typeck.cc:6165 cp/typeck.cc:6179
  #, gcc-internal-format
  msgid "operand types are %qT and %qT"
  msgstr ""
  
! #: cp/typeck.cc:6202
  #, gcc-internal-format
  msgid "three-way comparison of vectors"
  msgstr ""
  
! #: cp/typeck.cc:6236
  #, gcc-internal-format
  msgid "ordered comparison of pointer with integer zero (%qT and %qT)"
  msgstr ""
  
! #: cp/typeck.cc:6283
  #, gcc-internal-format
  msgid "unordered comparison on non-floating-point argument"
  msgstr ""
  
! #: cp/typeck.cc:6349
  msgid "implicit conversion from %qH to %qI to match other operand of binary expression"
  msgstr ""
  
! #: cp/typeck.cc:6458
  #, gcc-internal-format
  msgid "invalid operands of types %qT and %qT to binary %qO"
  msgstr ""
  
! #: cp/typeck.cc:6859
  #, gcc-internal-format
  msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
  msgstr ""
  
! #: cp/typeck.cc:6867
  #, gcc-internal-format
  msgid "ISO C++ forbids using pointer to a function in subtraction"
  msgstr ""
  
! #: cp/typeck.cc:6875
  #, gcc-internal-format
  msgid "ISO C++ forbids using pointer to a method in subtraction"
  msgstr ""
  
! #: cp/typeck.cc:6928
  #, gcc-internal-format
  msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
  msgstr ""
  
! #: cp/typeck.cc:7005
  #, gcc-internal-format
  msgid "taking address of constructor %qD"
  msgstr ""
  
! #: cp/typeck.cc:7006
  #, gcc-internal-format
  msgid "taking address of destructor %qD"
  msgstr ""
  
! #: cp/typeck.cc:7023
  #, gcc-internal-format
  msgid "invalid use of %qE to form a pointer-to-member-function"
  msgstr ""
  
! #: cp/typeck.cc:7026
  #, gcc-internal-format
  msgid "  a qualified-id is required"
  msgstr ""
  
! #: cp/typeck.cc:7033
  #, gcc-internal-format
  msgid "parentheses around %qE cannot be used to form a pointer-to-member-function"
  msgstr ""
  
! #: cp/typeck.cc:7228
  #, gcc-internal-format
  msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function.  Say %<&%T::%D%>"
  msgstr ""
  
! #: cp/typeck.cc:7234
  #, gcc-internal-format
  msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to explicit object member function"
  msgstr ""
  
! #: cp/typeck.cc:7240
  #, gcc-internal-format
  msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function.  Say %<&%T::%D%>"
  msgstr ""
  
! #: cp/typeck.cc:7246
  #, gcc-internal-format
  msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to explicit object member function"
  msgstr ""
  
! #: cp/typeck.cc:7251
  #, gcc-internal-format
  msgid "a pointer to explicit object member function can only be formed with %<&%T::%D%>"
  msgstr ""
  
  #. Make this a permerror because we used to accept it.
! #: cp/typeck.cc:7284
  #, fuzzy, gcc-internal-format
  msgid "taking address of rvalue"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð¿ÑƒÑ�Ñ‚Ñ‹ Ñ–Ð·Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹ Ñ„Ð°Ð¹Ð»"
  
! #: cp/typeck.cc:7301
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids taking address of function %<::main%>"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð¿ÑƒÑ�Ñ‚Ñ‹ Ñ–Ð·Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹ Ñ„Ð°Ð¹Ð»"
  
! #: cp/typeck.cc:7359
  #, fuzzy, gcc-internal-format
  msgid "cannot create pointer to reference member %qD"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/typeck.cc:7394 cp/typeck.cc:7976 rust/backend/rust-tree.cc:4701
  #, fuzzy, gcc-internal-format
  msgid "attempt to take address of bit-field"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ð°Ñ‚Ñ€Ñ‹Ð¼Ð°Ñ†ÑŒ Ð°Ð´Ñ€Ð°Ñ� Ð±Ñ–Ñ‚Ð°Ð²Ð°Ð³Ð° Ð¿Ð¾Ð»Ñ� \"%s\""
  
! #: cp/typeck.cc:7561
  #, gcc-internal-format
  msgid "%<~%> on an expression of type %<bool%>"
  msgstr ""
  
! #: cp/typeck.cc:7562
  #, gcc-internal-format
  msgid "did you mean to use logical not (%<!%>)?"
  msgstr ""
  
! #: cp/typeck.cc:7695
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids an empty source file"
  msgid "ISO C++ forbids incrementing an enum"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð¿ÑƒÑ�Ñ‚Ñ‹ Ñ–Ð·Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹ Ñ„Ð°Ð¹Ð»"
  
! #: cp/typeck.cc:7696
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids decrementing an enum"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: cp/typeck.cc:7712
  #, fuzzy, gcc-internal-format
  msgid "cannot increment a pointer to incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/typeck.cc:7714
  #, fuzzy, gcc-internal-format
  msgid "cannot decrement a pointer to incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/typeck.cc:7726
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids incrementing a pointer of type %qT"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: cp/typeck.cc:7728
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids decrementing a pointer of type %qT"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: cp/typeck.cc:7768
  #, gcc-internal-format
  msgid "%qs expression of %<volatile%>-qualified type is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:7781
  #, gcc-internal-format
  msgid "use of an operand of type %qT in %<operator--%> is forbidden"
  msgstr ""
  
! #: cp/typeck.cc:7791
  #, gcc-internal-format
  msgid "use of an operand of type %qT in %<operator++%> is forbidden in C++17"
  msgstr ""
  
! #: cp/typeck.cc:7799
  #, gcc-internal-format
  msgid "use of an operand of type %qT in %<operator++%> is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:7988 rust/backend/rust-tree.cc:4713
  #, gcc-internal-format
  msgid "cannot take the address of %<this%>, which is an rvalue expression"
  msgstr ""
  
! #: cp/typeck.cc:8010 d/d-codegen.cc:759 rust/backend/rust-tree.cc:4732
  #, gcc-internal-format
  msgid "address of explicit register variable %qD requested"
  msgstr ""
  
! #: cp/typeck.cc:8015 rust/backend/rust-tree.cc:4739
  #, gcc-internal-format
  msgid "address requested for %qD, which is declared %<register%>"
  msgstr ""
  
! #: cp/typeck.cc:8086
  #, gcc-internal-format
  msgid "list-initializer for non-class type must not be parenthesized"
  msgstr ""
  
! #: cp/typeck.cc:8098
  #, gcc-internal-format
  msgid "expression list treated as compound expression in initializer"
  msgstr ""
  
! #: cp/typeck.cc:8102
  #, gcc-internal-format
  msgid "expression list treated as compound expression in mem-initializer"
  msgstr ""
  
! #: cp/typeck.cc:8106
  #, gcc-internal-format
  msgid "expression list treated as compound expression in functional cast"
  msgstr ""
  
! #: cp/typeck.cc:8144
  #, gcc-internal-format, gfc-internal-format
  msgid "%s expression list treated as compound expression"
  msgstr ""
  
! #: cp/typeck.cc:8247
  #, gcc-internal-format
  msgid "no context to resolve type of %qE"
  msgstr ""
  
! #: cp/typeck.cc:8284
  #, gcc-internal-format
  msgid "cast from type %qT to type %qT casts away qualifiers"
  msgstr ""
  
! #: cp/typeck.cc:8290
  #, gcc-internal-format
  msgid "%<static_cast%> from type %qT to type %qT casts away qualifiers"
  msgstr ""
  
! #: cp/typeck.cc:8297
  #, gcc-internal-format
  msgid "%<reinterpret_cast%> from type %qT to type %qT casts away qualifiers"
  msgstr ""
  
! #: cp/typeck.cc:8323
  #, gcc-internal-format
  msgid "useless cast to type %q#T"
  msgstr ""
  
! #: cp/typeck.cc:8337
  #, gcc-internal-format
  msgid "type qualifiers ignored on cast result type"
  msgstr ""
  
! #: cp/typeck.cc:8786
  #, fuzzy, gcc-internal-format
  msgid "invalid %<static_cast%> from type %qT to type %qT"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: cp/typeck.cc:8792 cp/typeck.cc:8798 cp/typeck.cc:10522
  #, fuzzy, gcc-internal-format
  msgid "class type %qT is incomplete"
  msgstr "Ð²Ñ�Ñ€Ñ‚Ð°ÐµÐ¼Ñ‹ Ñ‚Ñ‹Ð¿ \"%s\" Ð½Ðµ \"int\""
  
! #: cp/typeck.cc:8826
  #, fuzzy
  #| msgid "converting from `%T' to `%T'"
  msgid "converting from %qH to %qI"
  msgstr "Ð¿ÐµÑ€Ð°ÑžÑ‚Ð²Ð°Ñ€Ñ�Ð½ÑŒÐ½Ðµ Ð· `%T' Ñƒ `%T'"
  
! #: cp/typeck.cc:8901
  #, gcc-internal-format
  msgid "invalid cast of a prvalue expression of type %qT to type %qT"
  msgstr ""
  
! #: cp/typeck.cc:8971
  msgid "cast from %qH to %qI loses precision"
  msgstr ""
  
! #: cp/typeck.cc:8996
  msgid "cast between incompatible function types from %qH to %qI"
  msgstr ""
  
! #: cp/typeck.cc:9007
  msgid "cast between incompatible pointer to member types from %qH to %qI"
  msgstr ""
  
! #: cp/typeck.cc:9028 cp/typeck.cc:9218
  msgid "cast from %qH to %qI increases required alignment of target type"
  msgstr ""
  
! #: cp/typeck.cc:9045
  #, gcc-internal-format
  msgid "casting between pointer-to-function and pointer-to-object is conditionally-supported"
  msgstr ""
  
! #: cp/typeck.cc:9059
  #, fuzzy, gcc-internal-format
  msgid "invalid cast from type %qT to type %qT"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: cp/typeck.cc:9132
  #, gcc-internal-format
  msgid "invalid use of %<const_cast%> with type %qT, which is not a pointer, reference, nor a pointer-to-data-member type"
  msgstr ""
  
! #: cp/typeck.cc:9141
  #, gcc-internal-format
  msgid "invalid use of %<const_cast%> with type %qT, which is a pointer or reference to a function type"
  msgstr ""
  
! #: cp/typeck.cc:9183
  #, gcc-internal-format
  msgid "invalid %<const_cast%> of an rvalue of type %qT to type %qT"
  msgstr ""
  
! #: cp/typeck.cc:9253
  #, fuzzy, gcc-internal-format
  msgid "invalid %<const_cast%> from type %qT to type %qT"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: cp/typeck.cc:9354 cp/typeck.cc:9363
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids casting to an array type %qT"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: cp/typeck.cc:9372
  #, fuzzy, gcc-internal-format
  msgid "invalid cast to function type %qT"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: cp/typeck.cc:9488
  #, gcc-internal-format
  msgid "moving %qE of type %qT to itself"
  msgstr ""
  
! #: cp/typeck.cc:9753
  #, gcc-internal-format
  msgid "  in evaluation of %<%Q(%#T, %#T)%>"
  msgstr ""
  
! #: cp/typeck.cc:9814
  #, gcc-internal-format
  msgid "assigning to an array from an initializer list"
  msgstr ""
  
! #: cp/typeck.cc:9841
  #, gcc-internal-format
  msgid "incompatible types in assignment of %qT to %qT"
  msgstr ""
  
! #: cp/typeck.cc:9857
  #, fuzzy, gcc-internal-format
  msgid "array used as initializer"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/typeck.cc:9859
  #, fuzzy, gcc-internal-format
  msgid "invalid array assignment"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ %s"
  
! #: cp/typeck.cc:9995
  #, gcc-internal-format
  msgid "   in pointer to member function conversion"
  msgstr ""
  
! #: cp/typeck.cc:10009
  #, gcc-internal-format
  msgid "pointer to member conversion via virtual base %qT"
  msgstr ""
  
! #: cp/typeck.cc:10057 cp/typeck.cc:10076
  #, gcc-internal-format
  msgid "   in pointer to member conversion"
  msgstr ""
  
! #: cp/typeck.cc:10157
  #, fuzzy, gcc-internal-format
  msgid "invalid conversion to type %qT from type %qT"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: cp/typeck.cc:10481
  msgid "cannot convert %qH to %qI in default argument"
  msgstr ""
  
! #: cp/typeck.cc:10486
  msgid "cannot convert %qH to %qI in argument passing"
  msgstr ""
  
! #: cp/typeck.cc:10495
  msgid "cannot convert %qH to %qI in initialization"
  msgstr ""
  
! #: cp/typeck.cc:10499
  msgid "cannot convert %qH to %qI in return"
  msgstr ""
  
! #: cp/typeck.cc:10504
  msgid "cannot convert %qH to %qI in assignment"
  msgstr ""
  
! #: cp/typeck.cc:10540
  #, gcc-internal-format
  msgid "parameter %qP of %qD might be a candidate for a format attribute"
  msgstr ""
  
! #: cp/typeck.cc:10544
  #, gcc-internal-format
  msgid "parameter might be a candidate for a format attribute"
  msgstr ""
  
! #: cp/typeck.cc:10549
  #, gcc-internal-format
  msgid "target of conversion might be a candidate for a format attribute"
  msgstr ""
  
! #: cp/typeck.cc:10554
  #, gcc-internal-format
  msgid "target of initialization might be a candidate for a format attribute"
  msgstr ""
  
! #: cp/typeck.cc:10564
  #, gcc-internal-format
  msgid "left-hand side of assignment might be a candidate for a format attribute"
  msgstr ""
  
! #: cp/typeck.cc:10650
  #, fuzzy, gcc-internal-format
  msgid "in passing argument %P of %qD"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� \"%s\" Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½"
  
! #: cp/typeck.cc:10734
  #, gcc-internal-format
  msgid "returning reference to temporary"
  msgstr ""
  
! #: cp/typeck.cc:10737
  #, gcc-internal-format
  msgid "returning pointer to temporary"
  msgstr ""
  
! #: cp/typeck.cc:10740
  #, gcc-internal-format
  msgid "returning temporary %<initializer_list%> does not extend the lifetime of the underlying array"
  msgstr ""
  
! #: cp/typeck.cc:10775
  #, gcc-internal-format
  msgid "reference to local variable %qD returned"
  msgstr ""
  
! #: cp/typeck.cc:10779
  #, gcc-internal-format
  msgid "returning local %<initializer_list%> variable %qD does not extend the lifetime of the underlying array"
  msgstr ""
  
! #: cp/typeck.cc:10785
  #, gcc-internal-format
  msgid "address of label %qD returned"
  msgstr ""
  
! #: cp/typeck.cc:10789
  #, gcc-internal-format
  msgid "address of local variable %qD returned"
  msgstr ""
  
! #: cp/typeck.cc:11049
  #, gcc-internal-format
  msgid "moving a temporary object prevents copy elision"
  msgstr ""
  
! #: cp/typeck.cc:11050 cp/typeck.cc:11066 cp/typeck.cc:11091 cp/typeck.cc:11128
  #, gcc-internal-format
  msgid "remove %<std::move%> call"
  msgstr ""
  
! #: cp/typeck.cc:11064
  #, gcc-internal-format
  msgid "moving a local object in a return statement prevents copy elision"
  msgstr ""
  
! #: cp/typeck.cc:11090 cp/typeck.cc:11125
  #, gcc-internal-format
  msgid "redundant move in return statement"
  msgstr ""
  
! #: cp/typeck.cc:11127
  #, fuzzy, gcc-internal-format
  msgid "redundant move in initialization"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/typeck.cc:11165
  #, gcc-internal-format
  msgid "returning a value from a destructor"
  msgstr ""
  
  #. If a return statement appears in a handler of the
  #. function-try-block of a constructor, the program is ill-formed.
! #: cp/typeck.cc:11177
  #, gcc-internal-format
  msgid "cannot return from a handler of a function-try-block of a constructor"
  msgstr ""
  
  #. You can't return a value from a constructor.
! #: cp/typeck.cc:11180
  #, gcc-internal-format
  msgid "returning a value from a constructor"
  msgstr ""
  
! #: cp/typeck.cc:11220 cp/typeck.cc:11266
  #, gcc-internal-format
  msgid "return-statement with no value, in function returning %qT"
  msgstr ""
  
! #: cp/typeck.cc:11228
  #, fuzzy, gcc-internal-format
  #| msgid "missing initializer"
  msgid "returning initializer list"
  msgstr "Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/typeck.cc:11247
  #, gcc-internal-format
  msgid "inconsistent types %qT and %qT deduced for lambda return type"
  msgstr ""
  
! #: cp/typeck.cc:11250
  #, gcc-internal-format
  msgid "inconsistent deduction for auto return type: %qT and then %qT"
  msgstr ""
  
! #: cp/typeck.cc:11287
  #, gcc-internal-format
  msgid "return-statement with a value, in function returning %qT"
  msgstr ""
  
! #: cp/typeck.cc:11316
  #, gcc-internal-format
  msgid "%<operator new%> must not return NULL unless it is declared %<throw()%> (or %<-fcheck-new%> is in effect)"
  msgstr ""
  
! #: cp/typeck.cc:11405
  #, gcc-internal-format
  msgid "not eliding copy on return from %qD"
  msgstr ""
  
! #: cp/typeck.cc:11417
  #, gcc-internal-format
  msgid "not eliding copy on return in %qD"
  msgstr ""
  
! #: cp/typeck.cc:11997
  #, fuzzy, gcc-internal-format
  #| msgid "invalid %%s value"
  msgid "using rvalue as lvalue"
--- 68693,69450 ----
  msgid "subscript missing in array reference"
  msgstr ""
  
! #: cp/typeck.cc:4200
  #, gcc-internal-format
  msgid "subscripting array declared %<register%>"
  msgstr ""
  
! #: cp/typeck.cc:4240
  #, gcc-internal-format
  msgid "subscripted value is neither array nor pointer"
  msgstr ""
  
! #: cp/typeck.cc:4312
  #, gcc-internal-format
  msgid "object missing in use of %qE"
  msgstr ""
  
! #: cp/typeck.cc:4563
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids calling %<::main%> from within program"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: cp/typeck.cc:4584
  #, gcc-internal-format
  msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>"
  msgstr ""
  
! #: cp/typeck.cc:4601
  #, fuzzy, gcc-internal-format
  msgid "%qE cannot be used as a function"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/typeck.cc:4604
  #, fuzzy, gcc-internal-format
  msgid "%qD cannot be used as a function"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/typeck.cc:4607
  #, fuzzy, gcc-internal-format
  msgid "expression cannot be used as a function"
  msgstr "\"%s\" Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�"
  
! #: cp/typeck.cc:4669
  #, fuzzy, gcc-internal-format
  msgid "too many arguments to constructor %q#D"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/typeck.cc:4670
  #, fuzzy, gcc-internal-format
  msgid "too few arguments to constructor %q#D"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/typeck.cc:4675
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to function"
  msgid "too many arguments to member function %q#D"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/typeck.cc:4676
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function"
  msgid "too few arguments to member function %q#D"
  msgstr "Ð½Ðµ Ñ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/typeck.cc:4682
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to function"
  msgid "too many arguments to function %q#D"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/typeck.cc:4683
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function"
  msgid "too few arguments to function %q#D"
  msgstr "Ð½Ðµ Ñ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/typeck.cc:4693
  #, fuzzy, gcc-internal-format
  msgid "too many arguments to method %q#D"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/typeck.cc:4694
  #, fuzzy, gcc-internal-format
  msgid "too few arguments to method %q#D"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: cp/typeck.cc:4697
  #, gcc-internal-format
  msgid "too many arguments to function"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/typeck.cc:4698
  #, gcc-internal-format
  msgid "too few arguments to function"
  msgstr "Ð½Ðµ Ñ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: cp/typeck.cc:4780
  #, fuzzy, gcc-internal-format
  msgid "parameter %P of %qD has incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/typeck.cc:4786
  #, fuzzy, gcc-internal-format
  msgid "parameter %P has incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/typeck.cc:5100
  #, gcc-internal-format
  msgid "the address %qE will never be NULL"
  msgstr ""
  
! #: cp/typeck.cc:5147
  #, gcc-internal-format
  msgid "the address of %qD will never be NULL"
  msgstr ""
  
! #: cp/typeck.cc:5162
  #, gcc-internal-format
  msgid "the compiler can assume that the address of %qE will never be NULL"
  msgstr ""
  
! #: cp/typeck.cc:5165
  #, gcc-internal-format
  msgid "comparing the result of pointer addition %qE and NULL"
  msgstr ""
  
! #: cp/typeck.cc:5180
  #, gcc-internal-format
  msgid "the compiler can assume that the address of %qD will never be NULL"
  msgstr ""
  
! #: cp/typeck.cc:5239
  #, gcc-internal-format
  msgid "bitwise operation between different enumeration types %qT and %qT"
  msgstr ""
  
! #: cp/typeck.cc:5242
  #, gcc-internal-format
  msgid "bitwise operation between different enumeration types %qT and %qT is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5248
  #, gcc-internal-format
  msgid "arithmetic between different enumeration types %qT and %qT"
  msgstr ""
  
! #: cp/typeck.cc:5251
  #, gcc-internal-format
  msgid "arithmetic between different enumeration types %qT and %qT is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5288
  #, gcc-internal-format
  msgid "comparison of enumeration type %qT with floating-point type %qT"
  msgstr ""
  
! #: cp/typeck.cc:5291
  #, gcc-internal-format
  msgid "comparison of floating-point type %qT with enumeration type %qT"
  msgstr ""
  
! #: cp/typeck.cc:5294
  #, gcc-internal-format
  msgid "comparison of enumeration type %qT with floating-point type %qT is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5298
  #, gcc-internal-format
  msgid "comparison of floating-point type %qT with enumeration type %qT is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5307
  #, gcc-internal-format
  msgid "arithmetic between enumeration type %qT and floating-point type %qT"
  msgstr ""
  
! #: cp/typeck.cc:5310
  #, gcc-internal-format
  msgid "arithmetic between floating-point type %qT and enumeration type %qT"
  msgstr ""
  
! #: cp/typeck.cc:5313
  #, gcc-internal-format
  msgid "arithmetic between enumeration type %qT and floating-point type %qT is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5317
  #, gcc-internal-format
  msgid "arithmetic between floating-point type %qT and enumeration type %qT is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5452 cp/typeck.cc:5464
  #, gcc-internal-format
  msgid "assuming cast to type %qT from overloaded function"
  msgstr ""
  
! #: cp/typeck.cc:5578
  #, gcc-internal-format
  msgid "NULL used in arithmetic"
  msgstr ""
  
! #: cp/typeck.cc:6045 cp/typeck.cc:6054 cp/typeck.cc:6360 cp/typeck.cc:6369
  #, gcc-internal-format
  msgid "ISO C++ forbids comparison between pointer and integer"
  msgstr ""
  
! #: cp/typeck.cc:6281 cp/typeck.cc:6295
  #, gcc-internal-format
  msgid "operand types are %qT and %qT"
  msgstr ""
  
! #: cp/typeck.cc:6318
  #, gcc-internal-format
  msgid "three-way comparison of vectors"
  msgstr ""
  
! #: cp/typeck.cc:6352
  #, gcc-internal-format
  msgid "ordered comparison of pointer with integer zero (%qT and %qT)"
  msgstr ""
  
! #: cp/typeck.cc:6399
  #, gcc-internal-format
  msgid "unordered comparison on non-floating-point argument"
  msgstr ""
  
! #: cp/typeck.cc:6465
  msgid "implicit conversion from %qH to %qI to match other operand of binary expression"
  msgstr ""
  
! #: cp/typeck.cc:6574
  #, gcc-internal-format
  msgid "invalid operands of types %qT and %qT to binary %qO"
  msgstr ""
  
! #: cp/typeck.cc:6975
  #, gcc-internal-format
  msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
  msgstr ""
  
! #: cp/typeck.cc:6983
  #, gcc-internal-format
  msgid "ISO C++ forbids using pointer to a function in subtraction"
  msgstr ""
  
! #: cp/typeck.cc:6991
  #, gcc-internal-format
  msgid "ISO C++ forbids using pointer to a method in subtraction"
  msgstr ""
  
! #: cp/typeck.cc:7044
  #, gcc-internal-format
  msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
  msgstr ""
  
! #: cp/typeck.cc:7121
  #, gcc-internal-format
  msgid "taking address of constructor %qD"
  msgstr ""
  
! #: cp/typeck.cc:7122
  #, gcc-internal-format
  msgid "taking address of destructor %qD"
  msgstr ""
  
! #: cp/typeck.cc:7139
  #, gcc-internal-format
  msgid "invalid use of %qE to form a pointer-to-member-function"
  msgstr ""
  
! #: cp/typeck.cc:7142
  #, gcc-internal-format
  msgid "  a qualified-id is required"
  msgstr ""
  
! #: cp/typeck.cc:7149
  #, gcc-internal-format
  msgid "parentheses around %qE cannot be used to form a pointer-to-member-function"
  msgstr ""
  
! #: cp/typeck.cc:7344
  #, gcc-internal-format
  msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function.  Say %<&%T::%D%>"
  msgstr ""
  
! #: cp/typeck.cc:7350
  #, gcc-internal-format
  msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to explicit object member function"
  msgstr ""
  
! #: cp/typeck.cc:7356
  #, gcc-internal-format
  msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function.  Say %<&%T::%D%>"
  msgstr ""
  
! #: cp/typeck.cc:7362
  #, gcc-internal-format
  msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to explicit object member function"
  msgstr ""
  
! #: cp/typeck.cc:7367
  #, gcc-internal-format
  msgid "a pointer to explicit object member function can only be formed with %<&%T::%D%>"
  msgstr ""
  
  #. Make this a permerror because we used to accept it.
! #: cp/typeck.cc:7400
  #, fuzzy, gcc-internal-format
  msgid "taking address of rvalue"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð¿ÑƒÑ�Ñ‚Ñ‹ Ñ–Ð·Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹ Ñ„Ð°Ð¹Ð»"
  
! #: cp/typeck.cc:7417
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids taking address of function %<::main%>"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð¿ÑƒÑ�Ñ‚Ñ‹ Ñ–Ð·Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹ Ñ„Ð°Ð¹Ð»"
  
! #: cp/typeck.cc:7475
  #, fuzzy, gcc-internal-format
  msgid "cannot create pointer to reference member %qD"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/typeck.cc:7510 cp/typeck.cc:8092 rust/backend/rust-tree.cc:4701
  #, fuzzy, gcc-internal-format
  msgid "attempt to take address of bit-field"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ð°Ñ‚Ñ€Ñ‹Ð¼Ð°Ñ†ÑŒ Ð°Ð´Ñ€Ð°Ñ� Ð±Ñ–Ñ‚Ð°Ð²Ð°Ð³Ð° Ð¿Ð¾Ð»Ñ� \"%s\""
  
! #: cp/typeck.cc:7677
  #, gcc-internal-format
  msgid "%<~%> on an expression of type %<bool%>"
  msgstr ""
  
! #: cp/typeck.cc:7678
  #, gcc-internal-format
  msgid "did you mean to use logical not (%<!%>)?"
  msgstr ""
  
! #: cp/typeck.cc:7811
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids an empty source file"
  msgid "ISO C++ forbids incrementing an enum"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð¿ÑƒÑ�Ñ‚Ñ‹ Ñ–Ð·Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹ Ñ„Ð°Ð¹Ð»"
  
! #: cp/typeck.cc:7812
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids decrementing an enum"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: cp/typeck.cc:7828
  #, fuzzy, gcc-internal-format
  msgid "cannot increment a pointer to incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/typeck.cc:7830
  #, fuzzy, gcc-internal-format
  msgid "cannot decrement a pointer to incomplete type %qT"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
  
! #: cp/typeck.cc:7842
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids incrementing a pointer of type %qT"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: cp/typeck.cc:7844
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids decrementing a pointer of type %qT"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: cp/typeck.cc:7884
  #, gcc-internal-format
  msgid "%qs expression of %<volatile%>-qualified type is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:7897
  #, gcc-internal-format
  msgid "use of an operand of type %qT in %<operator--%> is forbidden"
  msgstr ""
  
! #: cp/typeck.cc:7907
  #, gcc-internal-format
  msgid "use of an operand of type %qT in %<operator++%> is forbidden in C++17"
  msgstr ""
  
! #: cp/typeck.cc:7915
  #, gcc-internal-format
  msgid "use of an operand of type %qT in %<operator++%> is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:8104 rust/backend/rust-tree.cc:4713
  #, gcc-internal-format
  msgid "cannot take the address of %<this%>, which is an rvalue expression"
  msgstr ""
  
! #: cp/typeck.cc:8126 d/d-codegen.cc:759 rust/backend/rust-tree.cc:4732
  #, gcc-internal-format
  msgid "address of explicit register variable %qD requested"
  msgstr ""
  
! #: cp/typeck.cc:8131 rust/backend/rust-tree.cc:4739
  #, gcc-internal-format
  msgid "address requested for %qD, which is declared %<register%>"
  msgstr ""
  
! #: cp/typeck.cc:8202
  #, gcc-internal-format
  msgid "list-initializer for non-class type must not be parenthesized"
  msgstr ""
  
! #: cp/typeck.cc:8214
  #, gcc-internal-format
  msgid "expression list treated as compound expression in initializer"
  msgstr ""
  
! #: cp/typeck.cc:8218
  #, gcc-internal-format
  msgid "expression list treated as compound expression in mem-initializer"
  msgstr ""
  
! #: cp/typeck.cc:8222
  #, gcc-internal-format
  msgid "expression list treated as compound expression in functional cast"
  msgstr ""
  
! #: cp/typeck.cc:8260
  #, gcc-internal-format, gfc-internal-format
  msgid "%s expression list treated as compound expression"
  msgstr ""
  
! #: cp/typeck.cc:8363
  #, gcc-internal-format
  msgid "no context to resolve type of %qE"
  msgstr ""
  
! #: cp/typeck.cc:8400
  #, gcc-internal-format
  msgid "cast from type %qT to type %qT casts away qualifiers"
  msgstr ""
  
! #: cp/typeck.cc:8406
  #, gcc-internal-format
  msgid "%<static_cast%> from type %qT to type %qT casts away qualifiers"
  msgstr ""
  
! #: cp/typeck.cc:8413
  #, gcc-internal-format
  msgid "%<reinterpret_cast%> from type %qT to type %qT casts away qualifiers"
  msgstr ""
  
! #: cp/typeck.cc:8439
  #, gcc-internal-format
  msgid "useless cast to type %q#T"
  msgstr ""
  
! #: cp/typeck.cc:8453
  #, gcc-internal-format
  msgid "type qualifiers ignored on cast result type"
  msgstr ""
  
! #: cp/typeck.cc:8902
  #, fuzzy, gcc-internal-format
  msgid "invalid %<static_cast%> from type %qT to type %qT"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: cp/typeck.cc:8908 cp/typeck.cc:8914 cp/typeck.cc:10638
  #, fuzzy, gcc-internal-format
  msgid "class type %qT is incomplete"
  msgstr "Ð²Ñ�Ñ€Ñ‚Ð°ÐµÐ¼Ñ‹ Ñ‚Ñ‹Ð¿ \"%s\" Ð½Ðµ \"int\""
  
! #: cp/typeck.cc:8942
  #, fuzzy
  #| msgid "converting from `%T' to `%T'"
  msgid "converting from %qH to %qI"
  msgstr "Ð¿ÐµÑ€Ð°ÑžÑ‚Ð²Ð°Ñ€Ñ�Ð½ÑŒÐ½Ðµ Ð· `%T' Ñƒ `%T'"
  
! #: cp/typeck.cc:9017
  #, gcc-internal-format
  msgid "invalid cast of a prvalue expression of type %qT to type %qT"
  msgstr ""
  
! #: cp/typeck.cc:9087
  msgid "cast from %qH to %qI loses precision"
  msgstr ""
  
! #: cp/typeck.cc:9112
  msgid "cast between incompatible function types from %qH to %qI"
  msgstr ""
  
! #: cp/typeck.cc:9123
  msgid "cast between incompatible pointer to member types from %qH to %qI"
  msgstr ""
  
! #: cp/typeck.cc:9144 cp/typeck.cc:9334
  msgid "cast from %qH to %qI increases required alignment of target type"
  msgstr ""
  
! #: cp/typeck.cc:9161
  #, gcc-internal-format
  msgid "casting between pointer-to-function and pointer-to-object is conditionally-supported"
  msgstr ""
  
! #: cp/typeck.cc:9175
  #, fuzzy, gcc-internal-format
  msgid "invalid cast from type %qT to type %qT"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: cp/typeck.cc:9248
  #, gcc-internal-format
  msgid "invalid use of %<const_cast%> with type %qT, which is not a pointer, reference, nor a pointer-to-data-member type"
  msgstr ""
  
! #: cp/typeck.cc:9257
  #, gcc-internal-format
  msgid "invalid use of %<const_cast%> with type %qT, which is a pointer or reference to a function type"
  msgstr ""
  
! #: cp/typeck.cc:9299
  #, gcc-internal-format
  msgid "invalid %<const_cast%> of an rvalue of type %qT to type %qT"
  msgstr ""
  
! #: cp/typeck.cc:9369
  #, fuzzy, gcc-internal-format
  msgid "invalid %<const_cast%> from type %qT to type %qT"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: cp/typeck.cc:9470 cp/typeck.cc:9479
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids casting to an array type %qT"
  msgstr "ISO C Ð½Ðµ Ð´Ð°Ð·Ð²Ð°Ð»Ñ�Ðµ Ð´Ñ�ÐºÐ»Ð°Ñ€Ð°Ñ†Ñ‹Ñ– Ð¼ÐµÑ‚Ð°Ðº (label)"
  
! #: cp/typeck.cc:9488
  #, fuzzy, gcc-internal-format
  msgid "invalid cast to function type %qT"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: cp/typeck.cc:9604
  #, gcc-internal-format
  msgid "moving %qE of type %qT to itself"
  msgstr ""
  
! #: cp/typeck.cc:9869
  #, gcc-internal-format
  msgid "  in evaluation of %<%Q(%#T, %#T)%>"
  msgstr ""
  
! #: cp/typeck.cc:9930
  #, gcc-internal-format
  msgid "assigning to an array from an initializer list"
  msgstr ""
  
! #: cp/typeck.cc:9957
  #, gcc-internal-format
  msgid "incompatible types in assignment of %qT to %qT"
  msgstr ""
  
! #: cp/typeck.cc:9973
  #, fuzzy, gcc-internal-format
  msgid "array used as initializer"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/typeck.cc:9975
  #, fuzzy, gcc-internal-format
  msgid "invalid array assignment"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ %s"
  
! #: cp/typeck.cc:10111
  #, gcc-internal-format
  msgid "   in pointer to member function conversion"
  msgstr ""
  
! #: cp/typeck.cc:10125
  #, gcc-internal-format
  msgid "pointer to member conversion via virtual base %qT"
  msgstr ""
  
! #: cp/typeck.cc:10173 cp/typeck.cc:10192
  #, gcc-internal-format
  msgid "   in pointer to member conversion"
  msgstr ""
  
! #: cp/typeck.cc:10273
  #, fuzzy, gcc-internal-format
  msgid "invalid conversion to type %qT from type %qT"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ð²Ñ‹Ð±Ð°Ñ€ \"%s\""
  
! #: cp/typeck.cc:10597
  msgid "cannot convert %qH to %qI in default argument"
  msgstr ""
  
! #: cp/typeck.cc:10602
  msgid "cannot convert %qH to %qI in argument passing"
  msgstr ""
  
! #: cp/typeck.cc:10611
  msgid "cannot convert %qH to %qI in initialization"
  msgstr ""
  
! #: cp/typeck.cc:10615
  msgid "cannot convert %qH to %qI in return"
  msgstr ""
  
! #: cp/typeck.cc:10620
  msgid "cannot convert %qH to %qI in assignment"
  msgstr ""
  
! #: cp/typeck.cc:10656
  #, gcc-internal-format
  msgid "parameter %qP of %qD might be a candidate for a format attribute"
  msgstr ""
  
! #: cp/typeck.cc:10660
  #, gcc-internal-format
  msgid "parameter might be a candidate for a format attribute"
  msgstr ""
  
! #: cp/typeck.cc:10665
  #, gcc-internal-format
  msgid "target of conversion might be a candidate for a format attribute"
  msgstr ""
  
! #: cp/typeck.cc:10670
  #, gcc-internal-format
  msgid "target of initialization might be a candidate for a format attribute"
  msgstr ""
  
! #: cp/typeck.cc:10680
  #, gcc-internal-format
  msgid "left-hand side of assignment might be a candidate for a format attribute"
  msgstr ""
  
! #: cp/typeck.cc:10766
  #, fuzzy, gcc-internal-format
  msgid "in passing argument %P of %qD"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� \"%s\" Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½"
  
! #: cp/typeck.cc:10850
  #, gcc-internal-format
  msgid "returning reference to temporary"
  msgstr ""
  
! #: cp/typeck.cc:10853
  #, gcc-internal-format
  msgid "returning pointer to temporary"
  msgstr ""
  
! #: cp/typeck.cc:10856
  #, gcc-internal-format
  msgid "returning temporary %<initializer_list%> does not extend the lifetime of the underlying array"
  msgstr ""
  
! #: cp/typeck.cc:10891
  #, gcc-internal-format
  msgid "reference to local variable %qD returned"
  msgstr ""
  
! #: cp/typeck.cc:10895
  #, gcc-internal-format
  msgid "returning local %<initializer_list%> variable %qD does not extend the lifetime of the underlying array"
  msgstr ""
  
! #: cp/typeck.cc:10901
  #, gcc-internal-format
  msgid "address of label %qD returned"
  msgstr ""
  
! #: cp/typeck.cc:10905
  #, gcc-internal-format
  msgid "address of local variable %qD returned"
  msgstr ""
  
! #: cp/typeck.cc:11165
  #, gcc-internal-format
  msgid "moving a temporary object prevents copy elision"
  msgstr ""
  
! #: cp/typeck.cc:11166 cp/typeck.cc:11182 cp/typeck.cc:11207 cp/typeck.cc:11244
  #, gcc-internal-format
  msgid "remove %<std::move%> call"
  msgstr ""
  
! #: cp/typeck.cc:11180
  #, gcc-internal-format
  msgid "moving a local object in a return statement prevents copy elision"
  msgstr ""
  
! #: cp/typeck.cc:11206 cp/typeck.cc:11241
  #, gcc-internal-format
  msgid "redundant move in return statement"
  msgstr ""
  
! #: cp/typeck.cc:11243
  #, fuzzy, gcc-internal-format
  msgid "redundant move in initialization"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/typeck.cc:11281
  #, gcc-internal-format
  msgid "returning a value from a destructor"
  msgstr ""
  
  #. If a return statement appears in a handler of the
  #. function-try-block of a constructor, the program is ill-formed.
! #: cp/typeck.cc:11293
  #, gcc-internal-format
  msgid "cannot return from a handler of a function-try-block of a constructor"
  msgstr ""
  
  #. You can't return a value from a constructor.
! #: cp/typeck.cc:11296
  #, gcc-internal-format
  msgid "returning a value from a constructor"
  msgstr ""
  
! #: cp/typeck.cc:11336 cp/typeck.cc:11382
  #, gcc-internal-format
  msgid "return-statement with no value, in function returning %qT"
  msgstr ""
  
! #: cp/typeck.cc:11344
  #, fuzzy, gcc-internal-format
  #| msgid "missing initializer"
  msgid "returning initializer list"
  msgstr "Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½ Ñ–Ð½Ñ–Ñ†Ñ‹Ñ�Ð»Ñ–Ð·Ð°Ñ‚Ð°Ñ€"
  
! #: cp/typeck.cc:11363
  #, gcc-internal-format
  msgid "inconsistent types %qT and %qT deduced for lambda return type"
  msgstr ""
  
! #: cp/typeck.cc:11366
  #, gcc-internal-format
  msgid "inconsistent deduction for auto return type: %qT and then %qT"
  msgstr ""
  
! #: cp/typeck.cc:11403
  #, gcc-internal-format
  msgid "return-statement with a value, in function returning %qT"
  msgstr ""
  
! #: cp/typeck.cc:11432
  #, gcc-internal-format
  msgid "%<operator new%> must not return NULL unless it is declared %<throw()%> (or %<-fcheck-new%> is in effect)"
  msgstr ""
  
! #: cp/typeck.cc:11521
  #, gcc-internal-format
  msgid "not eliding copy on return from %qD"
  msgstr ""
  
! #: cp/typeck.cc:11533
  #, gcc-internal-format
  msgid "not eliding copy on return in %qD"
  msgstr ""
  
! #: cp/typeck.cc:12119
  #, fuzzy, gcc-internal-format
  #| msgid "invalid %%s value"
  msgid "using rvalue as lvalue"
*************** msgid "Array reference at %C cannot have
*** 70485,70493 ****
  msgstr ""
  
  #: fortran/array.cc:335 fortran/array.cc:805 fortran/check.cc:3813
! #: fortran/check.cc:6539 fortran/check.cc:6582 fortran/check.cc:6624
! #: fortran/check.cc:6651 fortran/check.cc:6914 fortran/match.cc:1859
! #: fortran/match.cc:3656 fortran/match.cc:3998 fortran/match.cc:4194
  #: fortran/simplify.cc:3099 fortran/simplify.cc:3129 fortran/simplify.cc:6736
  #: fortran/simplify.cc:9043
  #, gcc-internal-format
--- 70576,70584 ----
  msgstr ""
  
  #: fortran/array.cc:335 fortran/array.cc:805 fortran/check.cc:3813
! #: fortran/check.cc:6610 fortran/check.cc:6653 fortran/check.cc:6695
! #: fortran/check.cc:6722 fortran/check.cc:6985 fortran/match.cc:1859
! #: fortran/match.cc:3657 fortran/match.cc:3999 fortran/match.cc:4195
  #: fortran/simplify.cc:3099 fortran/simplify.cc:3129 fortran/simplify.cc:6736
  #: fortran/simplify.cc:9043
  #, gcc-internal-format
*************** msgstr ""
*** 70645,70651 ****
  msgid "Array constructor including type specification at %C"
  msgstr ""
  
! #: fortran/array.cc:1372 fortran/match.cc:4630
  #, gcc-internal-format, gfc-internal-format
  msgid "Type-spec at %L cannot contain a deferred type parameter"
  msgstr ""
--- 70736,70742 ----
  msgid "Array constructor including type specification at %C"
  msgstr ""
  
! #: fortran/array.cc:1372 fortran/match.cc:4631
  #, gcc-internal-format, gfc-internal-format
  msgid "Type-spec at %L cannot contain a deferred type parameter"
  msgstr ""
*************** msgstr ""
*** 70761,70767 ****
  msgid "Arguments of %qs at %L and %L cannot both be BOZ literal constants"
  msgstr ""
  
! #: fortran/check.cc:123 fortran/resolve.cc:12344
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid string constant `%E'"
  msgid "Invalid use of BOZ literal constant at %L"
--- 70852,70858 ----
  msgid "Arguments of %qs at %L and %L cannot both be BOZ literal constants"
  msgstr ""
  
! #: fortran/check.cc:123 fortran/resolve.cc:12334
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid string constant `%E'"
  msgid "Invalid use of BOZ literal constant at %L"
*************** msgstr ""
*** 70837,70843 ****
  msgid "%qs argument of %qs intrinsic at %L must be INTEGER or PROCEDURE"
  msgstr ""
  
! #: fortran/check.cc:742 fortran/check.cc:8216
  #, fuzzy, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must be a constant"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
--- 70928,70934 ----
  msgid "%qs argument of %qs intrinsic at %L must be INTEGER or PROCEDURE"
  msgstr ""
  
! #: fortran/check.cc:742 fortran/check.cc:8287
  #, fuzzy, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must be a constant"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ `__builtin_args_info' Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°Ð¹"
*************** msgstr ""
*** 71218,71225 ****
  
  #: fortran/check.cc:2727 fortran/check.cc:3454 fortran/check.cc:3537
  #: fortran/check.cc:3799 fortran/check.cc:3847 fortran/check.cc:5515
! #: fortran/check.cc:5639 fortran/check.cc:5717 fortran/check.cc:6900
! #: fortran/check.cc:7031
  #, gcc-internal-format
  msgid "%qs intrinsic with KIND argument at %L"
  msgstr ""
--- 71309,71316 ----
  
  #: fortran/check.cc:2727 fortran/check.cc:3454 fortran/check.cc:3537
  #: fortran/check.cc:3799 fortran/check.cc:3847 fortran/check.cc:5515
! #: fortran/check.cc:5639 fortran/check.cc:5717 fortran/check.cc:6971
! #: fortran/check.cc:7102
  #, gcc-internal-format
  msgid "%qs intrinsic with KIND argument at %L"
  msgstr ""
*************** msgstr ""
*** 71400,71406 ****
  msgid "%qs argument of %qs intrinsic at %L must be INTEGER or UNSIGNED"
  msgstr ""
  
! #: fortran/check.cc:4577 fortran/check.cc:8136 fortran/check.cc:8151
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must be INTEGER"
  msgstr ""
--- 71491,71497 ----
  msgid "%qs argument of %qs intrinsic at %L must be INTEGER or UNSIGNED"
  msgstr ""
  
! #: fortran/check.cc:4577 fortran/check.cc:8207 fortran/check.cc:8222
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must be INTEGER"
  msgstr ""
*************** msgstr ""
*** 71455,71461 ****
  msgid "%qs argument of %qs intrinsic at %L shall appear only if %qs is of type REAL and %qs is of type INTEGER or UNSIGNED"
  msgstr ""
  
! #: fortran/check.cc:4984 fortran/check.cc:6978
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must provide at least as many elements as there are .TRUE. values in %qs (%ld/%d)"
  msgstr ""
--- 71546,71552 ----
  msgid "%qs argument of %qs intrinsic at %L shall appear only if %qs is of type REAL and %qs is of type INTEGER or UNSIGNED"
  msgstr ""
  
! #: fortran/check.cc:4984 fortran/check.cc:7049
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must provide at least as many elements as there are .TRUE. values in %qs (%ld/%d)"
  msgstr ""
*************** msgstr ""
*** 71575,71586 ****
  msgid "%<source%> argument of %<shape%> intrinsic at %L must not be an assumed size array"
  msgstr ""
  
! #: fortran/check.cc:5735 fortran/check.cc:8196
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L shall not be a procedure"
  msgstr ""
  
! #: fortran/check.cc:5751 fortran/check.cc:5897 fortran/check.cc:8188
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L shall not be TYPE(*)"
  msgstr ""
--- 71666,71677 ----
  msgid "%<source%> argument of %<shape%> intrinsic at %L must not be an assumed size array"
  msgstr ""
  
! #: fortran/check.cc:5735 fortran/check.cc:8267
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L shall not be a procedure"
  msgstr ""
  
! #: fortran/check.cc:5751 fortran/check.cc:5897 fortran/check.cc:8259
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L shall not be TYPE(*)"
  msgstr ""
*************** msgstr ""
*** 71600,71935 ****
  msgid "%qs argument of %qs intrinsic at %L must be an interoperable data entity: %s"
  msgstr ""
  
! #: fortran/check.cc:5927
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument C_PTR_1 at %L to C_ASSOCIATED shall have the type TYPE(C_PTR) or TYPE(C_FUNPTR)"
  msgstr ""
  
! #: fortran/check.cc:5941
  #, gcc-internal-format, gfc-internal-format
! msgid "Argument C_PTR_2 at %L to C_ASSOCIATED shall have the same type as C_PTR_1: %s instead of %s"
  msgstr ""
  
! #: fortran/check.cc:5965
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument CPTR at %L to C_F_POINTER shall have the type TYPE(C_PTR)"
  msgstr ""
  
! #: fortran/check.cc:5977
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument FPTR at %L to C_F_POINTER must be a pointer"
  msgstr ""
  
! #: fortran/check.cc:5984
  #, gcc-internal-format, gfc-internal-format
  msgid "FPTR argument at %L to C_F_POINTER shall not be polymorphic"
  msgstr ""
  
! #: fortran/check.cc:5991
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument FPTR at %L to C_F_POINTER shall not be coindexed"
  msgstr ""
  
! #: fortran/check.cc:5998
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected SHAPE argument at %L to C_F_POINTER with scalar FPTR"
  msgstr ""
  
! #: fortran/check.cc:6004
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected SHAPE argument to C_F_POINTER with array FPTR at %L"
  msgstr ""
  
! #: fortran/check.cc:6023
  #, gcc-internal-format, gfc-internal-format
  msgid "SHAPE argument at %L to C_F_POINTER must have the same size as the RANK of FPTR"
  msgstr ""
  
! #: fortran/check.cc:6033
  #, gcc-internal-format, gfc-internal-format
  msgid "Polymorphic FPTR at %L to C_F_POINTER"
  msgstr ""
  
! #: fortran/check.cc:6039
  #, gcc-internal-format, gfc-internal-format
  msgid "FPTR argument to C_F_POINTER at %L is a function returning a pointer"
  msgstr ""
  
! #: fortran/check.cc:6046
  #, gcc-internal-format, gfc-internal-format
  msgid "Noninteroperable array FPTR argument to C_F_POINTER at %L: %s"
  msgstr ""
  
! #: fortran/check.cc:6062
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument CPTR at %L to C_F_PROCPOINTER shall have the type TYPE(C_FUNPTR)"
  msgstr ""
  
! #: fortran/check.cc:6074
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument FPTR at %L to C_F_PROCPOINTER shall be a procedure pointer"
  msgstr ""
  
! #: fortran/check.cc:6081
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument FPTR at %L to C_F_PROCPOINTER shall not be coindexed"
  msgstr ""
  
! #: fortran/check.cc:6087
  #, gcc-internal-format, gfc-internal-format
  msgid "Noninteroperable procedure pointer at %L to C_F_PROCPOINTER"
  msgstr ""
  
! #: fortran/check.cc:6101
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_FUNLOC shall not be coindexed"
  msgstr ""
  
! #: fortran/check.cc:6113
  #, gcc-internal-format
  msgid "Function result %qs at %L is invalid as X argument to C_FUNLOC"
  msgstr ""
  
! #: fortran/check.cc:6120
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_FUNLOC shall be a procedure or a procedure pointer"
  msgstr ""
  
! #: fortran/check.cc:6126
  #, gcc-internal-format, gfc-internal-format
  msgid "Noninteroperable procedure at %L to C_FUNLOC"
  msgstr ""
  
! #: fortran/check.cc:6140
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_LOC shall not be coindexed"
  msgstr ""
  
! #: fortran/check.cc:6146
  #, gcc-internal-format, gfc-internal-format
  msgid "X argument at %L to C_LOC shall not be polymorphic"
  msgstr ""
  
! #: fortran/check.cc:6157
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_LOC shall have either the POINTER or the TARGET attribute"
  msgstr ""
  
! #: fortran/check.cc:6165
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_LOC shall be not be a zero-sized string"
  msgstr ""
  
! #: fortran/check.cc:6174
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument at %L to C_LOC shall not be polymorphic"
  msgstr ""
  
! #: fortran/check.cc:6181
  #, gcc-internal-format, gfc-internal-format
  msgid "Noninteroperable array at %L as argument to C_LOC: %s"
  msgstr ""
  
! #: fortran/check.cc:6192
  #, gcc-internal-format, gfc-internal-format
  msgid "Array of interoperable type at %L to C_LOC which is nonallocatable and neither assumed size nor explicit size"
  msgstr ""
  
! #: fortran/check.cc:6197
  #, gcc-internal-format, gfc-internal-format
  msgid "Array section at %L to C_LOC"
  msgstr ""
  
! #: fortran/check.cc:6225
  #, gcc-internal-format, gfc-internal-format
  msgid "non double precision REAL argument to %s intrinsic at %L"
  msgstr ""
  
! #: fortran/check.cc:6241
  #, fuzzy, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must be less than rank %d"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ \"%s\" Ð±Ð¾Ð»ÑŒÑˆ Ñ‡Ð°Ð¼ %d Ð±Ð°Ð¹Ñ‚"
  
! #: fortran/check.cc:6260
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L is not a valid dimension index"
  msgstr ""
  
! #: fortran/check.cc:6284
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must have length at least 1"
  msgstr ""
  
! #: fortran/check.cc:6548
  #, gcc-internal-format, gfc-internal-format
  msgid "%s argument to IMAGE_INDEX must be a rank one array at %L"
  msgstr ""
  
! #: fortran/check.cc:6555
  #, gcc-internal-format, gfc-internal-format
  msgid "Type of %s argument of IMAGE_INDEX at %L shall be INTEGER"
  msgstr ""
  
! #: fortran/check.cc:6564
  #, gcc-internal-format, gfc-internal-format
  msgid "The number of array elements of the SUB argument to IMAGE_INDEX at %L shall be %d (corank) not %d"
  msgstr ""
  
! #: fortran/check.cc:6597
  #, gcc-internal-format, gfc-internal-format
  msgid "DISTANCE= argument to NUM_IMAGES at %L"
  msgstr ""
  
! #: fortran/check.cc:6610
  #, gcc-internal-format, gfc-internal-format
  msgid "FAILED= argument to NUM_IMAGES at %L"
  msgstr ""
  
! #: fortran/check.cc:6634
  #, gcc-internal-format, gfc-internal-format
  msgid "TEAM argument at %L to the intrinsic TEAM_NUMBER shall be of type TEAM_TYPE"
  msgstr ""
  
! #: fortran/check.cc:6660
  #, gcc-internal-format, gfc-internal-format
  msgid "DIM argument without COARRAY argument not allowed for THIS_IMAGE intrinsic at %L"
  msgstr ""
  
! #: fortran/check.cc:6667
  #, gcc-internal-format, gfc-internal-format
  msgid "The DISTANCE argument may not be specified together with the COARRAY or DIM argument in intrinsic at %L"
  msgstr ""
  
! #: fortran/check.cc:6678
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected DIM argument with noncoarray argument at %L"
  msgstr ""
  
! #: fortran/check.cc:6696
  #, gcc-internal-format, gfc-internal-format
  msgid "DISTANCE= argument to THIS_IMAGE at %L"
  msgstr ""
  
! #: fortran/check.cc:6754
  #, gcc-internal-format
  msgid "%<MOLD%> argument of %<TRANSFER%> intrinsic at %L is an array and shall not have storage size 0 when %<SOURCE%> argument has size greater than 0"
  msgstr ""
  
! #: fortran/check.cc:6806
  #, gcc-internal-format
  msgid "%<SOURCE%> argument of %<TRANSFER%> intrinsic at %L must not be a %s"
  msgstr ""
  
! #: fortran/check.cc:6825
  #, gcc-internal-format
  msgid "%<MOLD%> argument of %<TRANSFER%> intrinsic at %L must not be a %s"
  msgstr ""
  
! #: fortran/check.cc:6833
  #, gcc-internal-format
  msgid "%<MOLD%> argument of %<TRANSFER%> intrinsic at %L must not be %s"
  msgstr ""
  
! #: fortran/check.cc:6868
  msgid "Intrinsic TRANSFER at %L has partly undefined result: source size %zd < result size %zd"
  msgstr ""
  
! #: fortran/check.cc:6992
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must have the same rank as %qs or be a scalar"
  msgstr ""
  
! #: fortran/check.cc:7005
  #, gcc-internal-format
  msgid "%qs and %qs arguments of %qs intrinsic at %L must have identical shape."
  msgstr ""
  
! #: fortran/check.cc:7141
  #, gcc-internal-format, gfc-internal-format
  msgid "VALUES argument of DATE_AND_TIME at %L has non-default kind"
  msgstr ""
  
! #: fortran/check.cc:7153
  #, gcc-internal-format, gfc-internal-format
  msgid "VALUES argument of DATE_AND_TIME at %L must have a decimal exponent range of at least four"
  msgstr ""
  
! #: fortran/check.cc:7308 fortran/check.cc:7344
  #, gcc-internal-format
  msgid "Size of %qs argument of %qs intrinsic at %L too small (%i/%i)"
  msgstr ""
  
! #: fortran/check.cc:7355
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Too many arguments to %s at %L"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: fortran/check.cc:7373
  #, gcc-internal-format
  msgid "fe_runtime_error string must be null terminated"
  msgstr ""
  
! #: fortran/check.cc:7385
  #, gcc-internal-format, gfc-internal-format
  msgid "fe_runtime_error: Wrong number of arguments (%d instead of %d)"
  msgstr ""
  
! #: fortran/check.cc:7427
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT argument to SYSTEM_CLOCK at %L has non-default kind"
  msgstr ""
  
! #: fortran/check.cc:7434
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT argument to SYSTEM_CLOCK at %L with kind smaller than default integer"
  msgstr ""
  
! #: fortran/check.cc:7455
  #, gcc-internal-format, gfc-internal-format
  msgid "Real COUNT_RATE argument to SYSTEM_CLOCK at %L"
  msgstr ""
  
! #: fortran/check.cc:7465
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT_RATE argument to SYSTEM_CLOCK at %L has non-default kind"
  msgstr ""
  
! #: fortran/check.cc:7472
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT_RATE argument to SYSTEM_CLOCK at %L with kind smaller than default integer"
  msgstr ""
  
! #: fortran/check.cc:7492
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT_MAX argument to SYSTEM_CLOCK at %L has non-default kind"
  msgstr ""
  
! #: fortran/check.cc:7502
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT_MAX argument to SYSTEM_CLOCK at %L with kind smaller than default integer"
  msgstr ""
  
! #: fortran/check.cc:7517 fortran/check.cc:7524
  #, gcc-internal-format, gfc-internal-format
  msgid "integer arguments to SYSTEM_CLOCK at %L with different kind parameters"
  msgstr ""
  
! #: fortran/check.cc:7738
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must be of a kind not wider than the default kind (%d)"
  msgstr ""
  
! #: fortran/check.cc:7920
  #, gcc-internal-format
  msgid "Actual argument at %L of %qs intrinsic shall be an associated pointer"
  msgstr ""
  
! #: fortran/check.cc:8109 fortran/check.cc:8120
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must be INTEGER, LOGICAL, or a BOZ literal constant"
  msgstr ""
  
! #: fortran/check.cc:8180
  #, gcc-internal-format, gfc-internal-format
  msgid "Intrinsic function NULL at %L cannot be an actual argument to STORAGE_SIZE, because it returns a disassociated pointer"
  msgstr ""
--- 71691,72026 ----
  msgid "%qs argument of %qs intrinsic at %L must be an interoperable data entity: %s"
  msgstr ""
  
! #: fortran/check.cc:5949
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument C_PTR_1 at %L to C_ASSOCIATED shall have the type TYPE(C_PTR) or TYPE(C_FUNPTR)"
  msgstr ""
  
! #: fortran/check.cc:6003
  #, gcc-internal-format, gfc-internal-format
! msgid "Argument C_PTR_2 at %L to C_ASSOCIATED shall have the same type as C_PTR_1, found %s instead of %s"
  msgstr ""
  
! #: fortran/check.cc:6036
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument CPTR at %L to C_F_POINTER shall have the type TYPE(C_PTR)"
  msgstr ""
  
! #: fortran/check.cc:6048
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument FPTR at %L to C_F_POINTER must be a pointer"
  msgstr ""
  
! #: fortran/check.cc:6055
  #, gcc-internal-format, gfc-internal-format
  msgid "FPTR argument at %L to C_F_POINTER shall not be polymorphic"
  msgstr ""
  
! #: fortran/check.cc:6062
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument FPTR at %L to C_F_POINTER shall not be coindexed"
  msgstr ""
  
! #: fortran/check.cc:6069
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected SHAPE argument at %L to C_F_POINTER with scalar FPTR"
  msgstr ""
  
! #: fortran/check.cc:6075
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected SHAPE argument to C_F_POINTER with array FPTR at %L"
  msgstr ""
  
! #: fortran/check.cc:6094
  #, gcc-internal-format, gfc-internal-format
  msgid "SHAPE argument at %L to C_F_POINTER must have the same size as the RANK of FPTR"
  msgstr ""
  
! #: fortran/check.cc:6104
  #, gcc-internal-format, gfc-internal-format
  msgid "Polymorphic FPTR at %L to C_F_POINTER"
  msgstr ""
  
! #: fortran/check.cc:6110
  #, gcc-internal-format, gfc-internal-format
  msgid "FPTR argument to C_F_POINTER at %L is a function returning a pointer"
  msgstr ""
  
! #: fortran/check.cc:6117
  #, gcc-internal-format, gfc-internal-format
  msgid "Noninteroperable array FPTR argument to C_F_POINTER at %L: %s"
  msgstr ""
  
! #: fortran/check.cc:6133
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument CPTR at %L to C_F_PROCPOINTER shall have the type TYPE(C_FUNPTR)"
  msgstr ""
  
! #: fortran/check.cc:6145
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument FPTR at %L to C_F_PROCPOINTER shall be a procedure pointer"
  msgstr ""
  
! #: fortran/check.cc:6152
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument FPTR at %L to C_F_PROCPOINTER shall not be coindexed"
  msgstr ""
  
! #: fortran/check.cc:6158
  #, gcc-internal-format, gfc-internal-format
  msgid "Noninteroperable procedure pointer at %L to C_F_PROCPOINTER"
  msgstr ""
  
! #: fortran/check.cc:6172
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_FUNLOC shall not be coindexed"
  msgstr ""
  
! #: fortran/check.cc:6184
  #, gcc-internal-format
  msgid "Function result %qs at %L is invalid as X argument to C_FUNLOC"
  msgstr ""
  
! #: fortran/check.cc:6191
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_FUNLOC shall be a procedure or a procedure pointer"
  msgstr ""
  
! #: fortran/check.cc:6197
  #, gcc-internal-format, gfc-internal-format
  msgid "Noninteroperable procedure at %L to C_FUNLOC"
  msgstr ""
  
! #: fortran/check.cc:6211
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_LOC shall not be coindexed"
  msgstr ""
  
! #: fortran/check.cc:6217
  #, gcc-internal-format, gfc-internal-format
  msgid "X argument at %L to C_LOC shall not be polymorphic"
  msgstr ""
  
! #: fortran/check.cc:6228
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_LOC shall have either the POINTER or the TARGET attribute"
  msgstr ""
  
! #: fortran/check.cc:6236
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_LOC shall be not be a zero-sized string"
  msgstr ""
  
! #: fortran/check.cc:6245
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument at %L to C_LOC shall not be polymorphic"
  msgstr ""
  
! #: fortran/check.cc:6252
  #, gcc-internal-format, gfc-internal-format
  msgid "Noninteroperable array at %L as argument to C_LOC: %s"
  msgstr ""
  
! #: fortran/check.cc:6263
  #, gcc-internal-format, gfc-internal-format
  msgid "Array of interoperable type at %L to C_LOC which is nonallocatable and neither assumed size nor explicit size"
  msgstr ""
  
! #: fortran/check.cc:6268
  #, gcc-internal-format, gfc-internal-format
  msgid "Array section at %L to C_LOC"
  msgstr ""
  
! #: fortran/check.cc:6296
  #, gcc-internal-format, gfc-internal-format
  msgid "non double precision REAL argument to %s intrinsic at %L"
  msgstr ""
  
! #: fortran/check.cc:6312
  #, fuzzy, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must be less than rank %d"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ \"%s\" Ð±Ð¾Ð»ÑŒÑˆ Ñ‡Ð°Ð¼ %d Ð±Ð°Ð¹Ñ‚"
  
! #: fortran/check.cc:6331
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L is not a valid dimension index"
  msgstr ""
  
! #: fortran/check.cc:6355
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must have length at least 1"
  msgstr ""
  
! #: fortran/check.cc:6619
  #, gcc-internal-format, gfc-internal-format
  msgid "%s argument to IMAGE_INDEX must be a rank one array at %L"
  msgstr ""
  
! #: fortran/check.cc:6626
  #, gcc-internal-format, gfc-internal-format
  msgid "Type of %s argument of IMAGE_INDEX at %L shall be INTEGER"
  msgstr ""
  
! #: fortran/check.cc:6635
  #, gcc-internal-format, gfc-internal-format
  msgid "The number of array elements of the SUB argument to IMAGE_INDEX at %L shall be %d (corank) not %d"
  msgstr ""
  
! #: fortran/check.cc:6668
  #, gcc-internal-format, gfc-internal-format
  msgid "DISTANCE= argument to NUM_IMAGES at %L"
  msgstr ""
  
! #: fortran/check.cc:6681
  #, gcc-internal-format, gfc-internal-format
  msgid "FAILED= argument to NUM_IMAGES at %L"
  msgstr ""
  
! #: fortran/check.cc:6705
  #, gcc-internal-format, gfc-internal-format
  msgid "TEAM argument at %L to the intrinsic TEAM_NUMBER shall be of type TEAM_TYPE"
  msgstr ""
  
! #: fortran/check.cc:6731
  #, gcc-internal-format, gfc-internal-format
  msgid "DIM argument without COARRAY argument not allowed for THIS_IMAGE intrinsic at %L"
  msgstr ""
  
! #: fortran/check.cc:6738
  #, gcc-internal-format, gfc-internal-format
  msgid "The DISTANCE argument may not be specified together with the COARRAY or DIM argument in intrinsic at %L"
  msgstr ""
  
! #: fortran/check.cc:6749
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected DIM argument with noncoarray argument at %L"
  msgstr ""
  
! #: fortran/check.cc:6767
  #, gcc-internal-format, gfc-internal-format
  msgid "DISTANCE= argument to THIS_IMAGE at %L"
  msgstr ""
  
! #: fortran/check.cc:6825
  #, gcc-internal-format
  msgid "%<MOLD%> argument of %<TRANSFER%> intrinsic at %L is an array and shall not have storage size 0 when %<SOURCE%> argument has size greater than 0"
  msgstr ""
  
! #: fortran/check.cc:6877
  #, gcc-internal-format
  msgid "%<SOURCE%> argument of %<TRANSFER%> intrinsic at %L must not be a %s"
  msgstr ""
  
! #: fortran/check.cc:6896
  #, gcc-internal-format
  msgid "%<MOLD%> argument of %<TRANSFER%> intrinsic at %L must not be a %s"
  msgstr ""
  
! #: fortran/check.cc:6904
  #, gcc-internal-format
  msgid "%<MOLD%> argument of %<TRANSFER%> intrinsic at %L must not be %s"
  msgstr ""
  
! #: fortran/check.cc:6939
  msgid "Intrinsic TRANSFER at %L has partly undefined result: source size %zd < result size %zd"
  msgstr ""
  
! #: fortran/check.cc:7063
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must have the same rank as %qs or be a scalar"
  msgstr ""
  
! #: fortran/check.cc:7076
  #, gcc-internal-format
  msgid "%qs and %qs arguments of %qs intrinsic at %L must have identical shape."
  msgstr ""
  
! #: fortran/check.cc:7212
  #, gcc-internal-format, gfc-internal-format
  msgid "VALUES argument of DATE_AND_TIME at %L has non-default kind"
  msgstr ""
  
! #: fortran/check.cc:7224
  #, gcc-internal-format, gfc-internal-format
  msgid "VALUES argument of DATE_AND_TIME at %L must have a decimal exponent range of at least four"
  msgstr ""
  
! #: fortran/check.cc:7379 fortran/check.cc:7415
  #, gcc-internal-format
  msgid "Size of %qs argument of %qs intrinsic at %L too small (%i/%i)"
  msgstr ""
  
! #: fortran/check.cc:7426
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Too many arguments to %s at %L"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: fortran/check.cc:7444
  #, gcc-internal-format
  msgid "fe_runtime_error string must be null terminated"
  msgstr ""
  
! #: fortran/check.cc:7456
  #, gcc-internal-format, gfc-internal-format
  msgid "fe_runtime_error: Wrong number of arguments (%d instead of %d)"
  msgstr ""
  
! #: fortran/check.cc:7498
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT argument to SYSTEM_CLOCK at %L has non-default kind"
  msgstr ""
  
! #: fortran/check.cc:7505
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT argument to SYSTEM_CLOCK at %L with kind smaller than default integer"
  msgstr ""
  
! #: fortran/check.cc:7526
  #, gcc-internal-format, gfc-internal-format
  msgid "Real COUNT_RATE argument to SYSTEM_CLOCK at %L"
  msgstr ""
  
! #: fortran/check.cc:7536
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT_RATE argument to SYSTEM_CLOCK at %L has non-default kind"
  msgstr ""
  
! #: fortran/check.cc:7543
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT_RATE argument to SYSTEM_CLOCK at %L with kind smaller than default integer"
  msgstr ""
  
! #: fortran/check.cc:7563
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT_MAX argument to SYSTEM_CLOCK at %L has non-default kind"
  msgstr ""
  
! #: fortran/check.cc:7573
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT_MAX argument to SYSTEM_CLOCK at %L with kind smaller than default integer"
  msgstr ""
  
! #: fortran/check.cc:7588 fortran/check.cc:7595
  #, gcc-internal-format, gfc-internal-format
  msgid "integer arguments to SYSTEM_CLOCK at %L with different kind parameters"
  msgstr ""
  
! #: fortran/check.cc:7809
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must be of a kind not wider than the default kind (%d)"
  msgstr ""
  
! #: fortran/check.cc:7991
  #, gcc-internal-format
  msgid "Actual argument at %L of %qs intrinsic shall be an associated pointer"
  msgstr ""
  
! #: fortran/check.cc:8180 fortran/check.cc:8191
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must be INTEGER, LOGICAL, or a BOZ literal constant"
  msgstr ""
  
! #: fortran/check.cc:8251
  #, gcc-internal-format, gfc-internal-format
  msgid "Intrinsic function NULL at %L cannot be an actual argument to STORAGE_SIZE, because it returns a disassociated pointer"
  msgstr ""
*************** msgstr ""
*** 71941,71947 ****
  msgid "Maximum extension level reached with type %qs at %L"
  msgstr ""
  
! #: fortran/class.cc:3123 fortran/class.cc:3197
  #, gcc-internal-format
  msgid "%qs of %qs is PRIVATE at %L"
  msgstr ""
--- 72032,72038 ----
  msgid "Maximum extension level reached with type %qs at %L"
  msgstr ""
  
! #: fortran/class.cc:3127 fortran/class.cc:3201
  #, gcc-internal-format
  msgid "%qs of %qs is PRIVATE at %L"
  msgstr ""
*************** msgstr ""
*** 71987,71998 ****
  msgid "Initialization string at %L was truncated to fit the variable (%wd/%wd)"
  msgstr ""
  
! #: fortran/data.cc:220 fortran/resolve.cc:5604
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring start index at %L is less than one"
  msgstr ""
  
! #: fortran/data.cc:226 fortran/resolve.cc:5634
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring end index at %L exceeds the string length"
  msgstr ""
--- 72078,72089 ----
  msgid "Initialization string at %L was truncated to fit the variable (%wd/%wd)"
  msgstr ""
  
! #: fortran/data.cc:220 fortran/resolve.cc:5577
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring start index at %L is less than one"
  msgstr ""
  
! #: fortran/data.cc:226 fortran/resolve.cc:5607
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring end index at %L exceeds the string length"
  msgstr ""
*************** msgstr ""
*** 72012,72018 ****
  msgid "Data element above array upper bound at %L"
  msgstr ""
  
! #: fortran/data.cc:390 fortran/data.cc:620
  #, fuzzy, gcc-internal-format
  #| msgid "initialization"
  msgid "re-initialization of %qs at %L"
--- 72103,72109 ----
  msgid "Data element above array upper bound at %L"
  msgstr ""
  
! #: fortran/data.cc:390 fortran/data.cc:626
  #, fuzzy, gcc-internal-format
  #| msgid "initialization"
  msgid "re-initialization of %qs at %L"
*************** msgstr ""
*** 72032,72044 ****
  msgid "LEN or KIND inquiry ref in DATA statement at %L"
  msgstr ""
  
! #: fortran/data.cc:643
  #, gcc-internal-format
  msgid "Nonpointer object %qs with default initialization shall not appear in a DATA statement at %L"
  msgstr ""
  
! #: fortran/data.cc:703 fortran/data.cc:722 fortran/data.cc:736
! #: fortran/data.cc:762 fortran/data.cc:909
  #, gcc-internal-format
  msgid "Simplification error"
  msgstr ""
--- 72123,72135 ----
  msgid "LEN or KIND inquiry ref in DATA statement at %L"
  msgstr ""
  
! #: fortran/data.cc:649
  #, gcc-internal-format
  msgid "Nonpointer object %qs with default initialization shall not appear in a DATA statement at %L"
  msgstr ""
  
! #: fortran/data.cc:709 fortran/data.cc:728 fortran/data.cc:742
! #: fortran/data.cc:768 fortran/data.cc:915
  #, gcc-internal-format
  msgid "Simplification error"
  msgstr ""
*************** msgstr ""
*** 72178,72184 ****
  msgid "deferred type parameter at %C"
  msgstr ""
  
! #: fortran/decl.cc:1166 fortran/resolve.cc:14157
  #, gcc-internal-format, gfc-internal-format
  msgid "Scalar INTEGER expression expected at %L"
  msgstr ""
--- 72269,72275 ----
  msgid "deferred type parameter at %C"
  msgstr ""
  
! #: fortran/decl.cc:1166 fortran/resolve.cc:14147
  #, gcc-internal-format, gfc-internal-format
  msgid "Scalar INTEGER expression expected at %L"
  msgstr ""
*************** msgstr ""
*** 74015,74026 ****
  msgid "are_identical_variables: Bad type"
  msgstr ""
  
! #: fortran/dependency.cc:1021
  #, gcc-internal-format, gfc-internal-format
  msgid "INTENT(%s) actual argument at %L might interfere with actual argument at %L."
  msgstr ""
  
! #: fortran/dependency.cc:1326
  #, gcc-internal-format
  msgid "gfc_check_dependency: expecting an EXPR_VARIABLE"
  msgstr ""
--- 74106,74117 ----
  msgid "are_identical_variables: Bad type"
  msgstr ""
  
! #: fortran/dependency.cc:1025
  #, gcc-internal-format, gfc-internal-format
  msgid "INTENT(%s) actual argument at %L might interfere with actual argument at %L."
  msgstr ""
  
! #: fortran/dependency.cc:1330
  #, gcc-internal-format
  msgid "gfc_check_dependency: expecting an EXPR_VARIABLE"
  msgstr ""
*************** msgstr ""
*** 74055,74061 ****
  msgid "show_code_node(): Bad statement code"
  msgstr ""
  
! #: fortran/dump-parse-tree.cc:4356 fortran/dump-parse-tree.cc:4450
  #, fuzzy, gcc-internal-format
  msgid "Cannot convert %qs to interoperable type at %L"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
--- 74146,74152 ----
  msgid "show_code_node(): Bad statement code"
  msgstr ""
  
! #: fortran/dump-parse-tree.cc:4358 fortran/dump-parse-tree.cc:4453
  #, fuzzy, gcc-internal-format
  msgid "Cannot convert %qs to interoperable type at %L"
  msgstr "\"%s\" Ð¼Ð°Ðµ Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹ Ñ‚Ñ‹Ð¿"
*************** msgstr ""
*** 74098,74545 ****
  msgid "gfc_is_constant_expr(): Unknown expression type"
  msgstr ""
  
! #: fortran/expr.cc:1338
  #, gcc-internal-format
  msgid "simplify_intrinsic_op(): Bad operator"
  msgstr ""
  
! #: fortran/expr.cc:1444
  #, gcc-internal-format, gfc-internal-format
  msgid "Index in dimension %d is out of bounds at %L"
  msgstr ""
  
! #: fortran/expr.cc:1643 fortran/expr.cc:1694
  #, gcc-internal-format, gfc-internal-format
  msgid "index in dimension %d is out of bounds at %L"
  msgstr ""
  
! #: fortran/expr.cc:1769
  #, gcc-internal-format
  msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit.  See %<-fmax-array-constructor%> option"
  msgstr ""
  
! #: fortran/expr.cc:1780
  #, gcc-internal-format, gfc-internal-format
  msgid "Error in array constructor referenced at %L"
  msgstr ""
  
! #: fortran/expr.cc:1890 fortran/primary.cc:2521 fortran/primary.cc:2698
  #, gcc-internal-format, gfc-internal-format
  msgid "LEN part_ref at %C"
  msgstr ""
  
! #: fortran/expr.cc:1915 fortran/primary.cc:2516 fortran/primary.cc:2713
  #, gcc-internal-format, gfc-internal-format
  msgid "KIND part_ref at %C"
  msgstr ""
  
! #: fortran/expr.cc:1926
  #, gcc-internal-format, gfc-internal-format
  msgid "RE part_ref at %C"
  msgstr ""
  
! #: fortran/expr.cc:1938
  #, gcc-internal-format, gfc-internal-format
  msgid "IM part_ref at %C"
  msgstr ""
  
! #: fortran/expr.cc:2592
  #, gcc-internal-format, gfc-internal-format
  msgid "elemental function arguments at %C are not compliant"
  msgstr ""
  
! #: fortran/expr.cc:2636
  #, gcc-internal-format, gfc-internal-format
  msgid "Numeric or CHARACTER operands are required in expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:2661
  #, gcc-internal-format, gfc-internal-format
  msgid "Concatenation operator in expression at %L must have two CHARACTER operands"
  msgstr ""
  
! #: fortran/expr.cc:2668
  #, gcc-internal-format, gfc-internal-format
  msgid "Concat operator at %L must concatenate strings of the same kind"
  msgstr ""
  
! #: fortran/expr.cc:2678
  #, gcc-internal-format, gfc-internal-format
  msgid ".NOT. operator in expression at %L must have a LOGICAL operand"
  msgstr ""
  
! #: fortran/expr.cc:2694
  #, gcc-internal-format, gfc-internal-format
  msgid "LOGICAL operands are required in expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:2705
  #, gcc-internal-format, gfc-internal-format
  msgid "Only intrinsic operators can be used in expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:2713
  #, gcc-internal-format, gfc-internal-format
  msgid "Numeric operands are required in expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:2736
  #, gcc-internal-format
  msgid "Invalid initialization expression for ALLOCATABLE component %qs in structure constructor at %L"
  msgstr ""
  
! #: fortran/expr.cc:2873
  #, gcc-internal-format
  msgid "Assumed or deferred character length variable %qs in constant expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:2957
  #, gcc-internal-format
  msgid "transformational intrinsic %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:2988
  #, gcc-internal-format, gfc-internal-format
  msgid "Evaluation of nonstandard initialization expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:3065 fortran/resolve.cc:2890
  #, gcc-internal-format
  msgid "Function %qs in initialization expression at %L must be an intrinsic function"
  msgstr ""
  
! #: fortran/expr.cc:3077
  #, gcc-internal-format
  msgid "Intrinsic function %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3116
  #, gcc-internal-format
  msgid "PARAMETER %qs is used at %L before its definition is complete"
  msgstr ""
  
! #: fortran/expr.cc:3136
  #, gcc-internal-format
  msgid "Assumed size array %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3142
  #, gcc-internal-format
  msgid "Assumed shape array %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3151
  #, gcc-internal-format
  msgid "Assumed-shape array %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3155
  #, gcc-internal-format
  msgid "Deferred array %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3161
  #, gcc-internal-format
  msgid "Array %qs at %L is a variable, which does not reduce to a constant expression"
  msgstr ""
  
! #: fortran/expr.cc:3167
  #, gcc-internal-format
  msgid "Assumed-rank array %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3177
  #, gcc-internal-format
  msgid "Parameter %qs at %L has not been declared or is a variable, which does not reduce to a constant expression"
  msgstr ""
  
! #: fortran/expr.cc:3231
  #, gcc-internal-format
  msgid "check_init_expr(): Unknown expression type"
  msgstr ""
  
! #: fortran/expr.cc:3371
  #, gcc-internal-format
  msgid "Specification function %qs at %L cannot be a statement function"
  msgstr ""
  
! #: fortran/expr.cc:3378
  #, gcc-internal-format
  msgid "Specification function %qs at %L cannot be an internal function"
  msgstr ""
  
! #: fortran/expr.cc:3385
  #, gcc-internal-format
  msgid "Specification function %qs at %L must be PURE"
  msgstr ""
  
! #: fortran/expr.cc:3393
  #, gcc-internal-format
  msgid "Specification function %qs at %L cannot be RECURSIVE"
  msgstr ""
  
! #: fortran/expr.cc:3540
  #, gcc-internal-format
  msgid "Dummy argument %qs not allowed in expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:3548
  #, gcc-internal-format
  msgid "Dummy argument %qs at %L cannot be OPTIONAL"
  msgstr ""
  
! #: fortran/expr.cc:3555
  #, gcc-internal-format
  msgid "Dummy argument %qs at %L cannot be INTENT(OUT)"
  msgstr ""
  
! #: fortran/expr.cc:3577
  #, gcc-internal-format
  msgid "Variable %qs cannot appear in the expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:3608
  #, gcc-internal-format
  msgid "check_restricted(): Unknown expression type"
  msgstr ""
  
! #: fortran/expr.cc:3628
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression at %L must be of INTEGER type, found %s"
  msgstr ""
  
! #: fortran/expr.cc:3640
  #, gcc-internal-format
  msgid "Function %qs at %L must be PURE"
  msgstr ""
  
! #: fortran/expr.cc:3649
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression at %L must be scalar"
  msgstr ""
  
  #. Reject truncation.
! #: fortran/expr.cc:3681
  #, gcc-internal-format, gfc-internal-format
  msgid "optype_msgid overflow: %d"
  msgstr ""
  
! #: fortran/expr.cc:3685
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible ranks in %s (%d and %d) at %L"
  msgstr ""
  
! #: fortran/expr.cc:3699
  #, gcc-internal-format, gfc-internal-format
  msgid "Different shape for %s at %L on dimension %d (%d and %d)"
  msgstr ""
  
! #: fortran/expr.cc:3747
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to a LEN or KIND part_ref at %L is not allowed"
  msgstr ""
  
! #: fortran/expr.cc:3803
  #, gcc-internal-format
  msgid "%qs at %L is not a VALUE"
  msgstr ""
  
! #: fortran/expr.cc:3814
  #, gcc-internal-format, gfc-internal-format
  msgid "Illegal assignment to external procedure at %L"
  msgstr ""
  
! #: fortran/expr.cc:3822
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible ranks %d and %d in assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:3829
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable type is UNKNOWN in assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:3841
  #, gcc-internal-format, gfc-internal-format
  msgid "NULL appears on right-hand side in assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:3851
  #, gcc-internal-format, gfc-internal-format
  msgid "POINTER-valued function appears on right-hand side of assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:3894
  #, gcc-internal-format
  msgid "BOZ literal constant near %L cannot be assigned to a %qs variable"
  msgstr ""
  
! #: fortran/expr.cc:3901
  #, gcc-internal-format, gfc-internal-format
  msgid "The assignment to a KIND or LEN component of a parameterized type at %L is not allowed"
  msgstr ""
  
! #: fortran/expr.cc:3932
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible types in DATA statement at %L; attempted conversion of %s to %s"
  msgstr ""
  
! #: fortran/expr.cc:3976
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target is not a POINTER at %L"
  msgstr ""
  
! #: fortran/expr.cc:3984
  #, gcc-internal-format
  msgid "%qs in the pointer assignment at %L cannot be an l-value since it is a procedure"
  msgstr ""
  
! #: fortran/expr.cc:4008
  #, gcc-internal-format
  msgid "Expected bounds specification for %qs at %L"
  msgstr ""
  
! #: fortran/expr.cc:4013
  #, gcc-internal-format
  msgid "Bounds specification for %qs in pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4042
  #, gcc-internal-format, gfc-internal-format
  msgid "Stride must not be present at %L"
  msgstr ""
  
! #: fortran/expr.cc:4048 fortran/expr.cc:4068
  #, gcc-internal-format
  msgid "Rank remapping requires a list of %<lower-bound : upper-bound%> specifications at %L"
  msgstr ""
  
! #: fortran/expr.cc:4056 fortran/expr.cc:4075
  #, gcc-internal-format
  msgid "Expected list of %<lower-bound :%> or list of %<lower-bound : upper-bound%> specifications at %L"
  msgstr ""
  
! #: fortran/expr.cc:4102
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer object at %L shall not have a coindex"
  msgstr ""
  
! #: fortran/expr.cc:4123
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4148
  #, gcc-internal-format
  msgid "Function result %qs is invalid as proc-target in procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4157
  #, gcc-internal-format
  msgid "Abstract interface %qs is invalid in procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4167
  #, gcc-internal-format
  msgid "Statement function %qs is invalid in procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4173
  #, gcc-internal-format
  msgid "Internal procedure %qs is invalid in procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4180
  #, gcc-internal-format
  msgid "Intrinsic %qs at %L is invalid in procedure pointer assignment"
  msgstr ""
  
! #: fortran/expr.cc:4188
  #, gcc-internal-format
  msgid "Nonintrinsic elemental procedure %qs is invalid in procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4211
  #, gcc-internal-format, gfc-internal-format
  msgid "Mismatch in the procedure pointer assignment at %L: mismatch in the calling convention"
  msgstr ""
  
! #: fortran/expr.cc:4264
  #, gcc-internal-format
  msgid "Interface mismatch in procedure pointer assignment at %L: %qs is not a subroutine"
  msgstr ""
  
! #: fortran/expr.cc:4274 fortran/expr.cc:4289
  #, gcc-internal-format
  msgid "Explicit interface required for component %qs at %L: %s"
  msgstr ""
  
! #: fortran/expr.cc:4280 fortran/expr.cc:4295 fortran/resolve.cc:2764
  #, gcc-internal-format
  msgid "Explicit interface required for %qs at %L: %s"
  msgstr ""
  
! #: fortran/expr.cc:4307
  #, gcc-internal-format, gfc-internal-format
  msgid "Interface mismatch in procedure pointer assignment at %L: %s"
  msgstr ""
  
! #: fortran/expr.cc:4316
  #, gcc-internal-format
  msgid "Procedure pointer target %qs at %L must be either an intrinsic, host or use associated, referenced or have the EXTERNAL attribute"
  msgstr ""
  
! #: fortran/expr.cc:4329
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target cannot be a constant at %L"
  msgstr ""
  
! #: fortran/expr.cc:4343
  #, gcc-internal-format, gfc-internal-format
  msgid "Data-pointer-object at %L must be unlimited polymorphic, or of a type with the BIND or SEQUENCE attribute, to be compatible with an unlimited polymorphic target"
  msgstr ""
  
! #: fortran/expr.cc:4348
  #, gcc-internal-format, gfc-internal-format
  msgid "Different types in pointer assignment at %L; attempted assignment of %s to %s"
  msgstr ""
  
! #: fortran/expr.cc:4356
  #, gcc-internal-format, gfc-internal-format
  msgid "Different kind type parameters in pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4363
  #, gcc-internal-format, gfc-internal-format
  msgid "Different ranks in pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4384
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank remapping target is smaller than size of the pointer (%ld < %ld) at %L"
  msgstr ""
  
! #: fortran/expr.cc:4400
  #, gcc-internal-format, gfc-internal-format
  msgid "The assumed rank target at %L is an experimental F202y feature. Use option -std=f202y to enable"
  msgstr ""
  
! #: fortran/expr.cc:4412
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank remapping target must be rank 1 or simply contiguous at %L"
  msgstr ""
  
! #: fortran/expr.cc:4416
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank remapping target is not rank 1 at %L"
  msgstr ""
  
! #: fortran/expr.cc:4423
  #, gcc-internal-format, gfc-internal-format
  msgid "The data-target at %L is an assumed rank object and so the data-pointer-object %s must have a bounds remapping list (list of lbound:ubound for each dimension)"
  msgstr ""
  
! #: fortran/expr.cc:4432
  #, gcc-internal-format, gfc-internal-format
  msgid "The assumed rank data-target at %L must be contiguous"
  msgstr ""
--- 74189,74636 ----
  msgid "gfc_is_constant_expr(): Unknown expression type"
  msgstr ""
  
! #: fortran/expr.cc:1339
  #, gcc-internal-format
  msgid "simplify_intrinsic_op(): Bad operator"
  msgstr ""
  
! #: fortran/expr.cc:1445
  #, gcc-internal-format, gfc-internal-format
  msgid "Index in dimension %d is out of bounds at %L"
  msgstr ""
  
! #: fortran/expr.cc:1644 fortran/expr.cc:1695
  #, gcc-internal-format, gfc-internal-format
  msgid "index in dimension %d is out of bounds at %L"
  msgstr ""
  
! #: fortran/expr.cc:1770
  #, gcc-internal-format
  msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit.  See %<-fmax-array-constructor%> option"
  msgstr ""
  
! #: fortran/expr.cc:1781
  #, gcc-internal-format, gfc-internal-format
  msgid "Error in array constructor referenced at %L"
  msgstr ""
  
! #: fortran/expr.cc:1945 fortran/primary.cc:2554 fortran/primary.cc:2739
  #, gcc-internal-format, gfc-internal-format
  msgid "LEN part_ref at %C"
  msgstr ""
  
! #: fortran/expr.cc:1992 fortran/primary.cc:2549 fortran/primary.cc:2754
  #, gcc-internal-format, gfc-internal-format
  msgid "KIND part_ref at %C"
  msgstr ""
  
! #: fortran/expr.cc:2003
  #, gcc-internal-format, gfc-internal-format
  msgid "RE part_ref at %C"
  msgstr ""
  
! #: fortran/expr.cc:2028
  #, gcc-internal-format, gfc-internal-format
  msgid "IM part_ref at %C"
  msgstr ""
  
! #: fortran/expr.cc:2696
  #, gcc-internal-format, gfc-internal-format
  msgid "elemental function arguments at %C are not compliant"
  msgstr ""
  
! #: fortran/expr.cc:2740
  #, gcc-internal-format, gfc-internal-format
  msgid "Numeric or CHARACTER operands are required in expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:2765
  #, gcc-internal-format, gfc-internal-format
  msgid "Concatenation operator in expression at %L must have two CHARACTER operands"
  msgstr ""
  
! #: fortran/expr.cc:2772
  #, gcc-internal-format, gfc-internal-format
  msgid "Concat operator at %L must concatenate strings of the same kind"
  msgstr ""
  
! #: fortran/expr.cc:2782
  #, gcc-internal-format, gfc-internal-format
  msgid ".NOT. operator in expression at %L must have a LOGICAL operand"
  msgstr ""
  
! #: fortran/expr.cc:2798
  #, gcc-internal-format, gfc-internal-format
  msgid "LOGICAL operands are required in expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:2809
  #, gcc-internal-format, gfc-internal-format
  msgid "Only intrinsic operators can be used in expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:2817
  #, gcc-internal-format, gfc-internal-format
  msgid "Numeric operands are required in expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:2840
  #, gcc-internal-format
  msgid "Invalid initialization expression for ALLOCATABLE component %qs in structure constructor at %L"
  msgstr ""
  
! #: fortran/expr.cc:2977
  #, gcc-internal-format
  msgid "Assumed or deferred character length variable %qs in constant expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:3061
  #, gcc-internal-format
  msgid "transformational intrinsic %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3092
  #, gcc-internal-format, gfc-internal-format
  msgid "Evaluation of nonstandard initialization expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:3169 fortran/resolve.cc:2891
  #, gcc-internal-format
  msgid "Function %qs in initialization expression at %L must be an intrinsic function"
  msgstr ""
  
! #: fortran/expr.cc:3181
  #, gcc-internal-format
  msgid "Intrinsic function %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3220
  #, gcc-internal-format
  msgid "PARAMETER %qs is used at %L before its definition is complete"
  msgstr ""
  
! #: fortran/expr.cc:3240
  #, gcc-internal-format
  msgid "Assumed size array %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3246
  #, gcc-internal-format
  msgid "Assumed shape array %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3255
  #, gcc-internal-format
  msgid "Assumed-shape array %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3259
  #, gcc-internal-format
  msgid "Deferred array %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3265
  #, gcc-internal-format
  msgid "Array %qs at %L is a variable, which does not reduce to a constant expression"
  msgstr ""
  
! #: fortran/expr.cc:3271
  #, gcc-internal-format
  msgid "Assumed-rank array %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3281
  #, gcc-internal-format
  msgid "Parameter %qs at %L has not been declared or is a variable, which does not reduce to a constant expression"
  msgstr ""
  
! #: fortran/expr.cc:3335
  #, gcc-internal-format
  msgid "check_init_expr(): Unknown expression type"
  msgstr ""
  
! #: fortran/expr.cc:3475
  #, gcc-internal-format
  msgid "Specification function %qs at %L cannot be a statement function"
  msgstr ""
  
! #: fortran/expr.cc:3482
  #, gcc-internal-format
  msgid "Specification function %qs at %L cannot be an internal function"
  msgstr ""
  
! #: fortran/expr.cc:3489
  #, gcc-internal-format
  msgid "Specification function %qs at %L must be PURE"
  msgstr ""
  
! #: fortran/expr.cc:3497
  #, gcc-internal-format
  msgid "Specification function %qs at %L cannot be RECURSIVE"
  msgstr ""
  
! #: fortran/expr.cc:3644
  #, gcc-internal-format
  msgid "Dummy argument %qs not allowed in expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:3652
  #, gcc-internal-format
  msgid "Dummy argument %qs at %L cannot be OPTIONAL"
  msgstr ""
  
! #: fortran/expr.cc:3659
  #, gcc-internal-format
  msgid "Dummy argument %qs at %L cannot be INTENT(OUT)"
  msgstr ""
  
! #: fortran/expr.cc:3681
  #, gcc-internal-format
  msgid "Variable %qs cannot appear in the expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:3712
  #, gcc-internal-format
  msgid "check_restricted(): Unknown expression type"
  msgstr ""
  
! #: fortran/expr.cc:3732
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression at %L must be of INTEGER type, found %s"
  msgstr ""
  
! #: fortran/expr.cc:3744
  #, gcc-internal-format
  msgid "Function %qs at %L must be PURE"
  msgstr ""
  
! #: fortran/expr.cc:3753
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression at %L must be scalar"
  msgstr ""
  
  #. Reject truncation.
! #: fortran/expr.cc:3785
  #, gcc-internal-format, gfc-internal-format
  msgid "optype_msgid overflow: %d"
  msgstr ""
  
! #: fortran/expr.cc:3789
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible ranks in %s (%d and %d) at %L"
  msgstr ""
  
! #: fortran/expr.cc:3803
  #, gcc-internal-format, gfc-internal-format
  msgid "Different shape for %s at %L on dimension %d (%d and %d)"
  msgstr ""
  
! #: fortran/expr.cc:3851
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to a LEN or KIND part_ref at %L is not allowed"
  msgstr ""
  
! #: fortran/expr.cc:3907
  #, gcc-internal-format
  msgid "%qs at %L is not a VALUE"
  msgstr ""
  
! #: fortran/expr.cc:3918
  #, gcc-internal-format, gfc-internal-format
  msgid "Illegal assignment to external procedure at %L"
  msgstr ""
  
! #: fortran/expr.cc:3926
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible ranks %d and %d in assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:3933
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable type is UNKNOWN in assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:3945
  #, gcc-internal-format, gfc-internal-format
  msgid "NULL appears on right-hand side in assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:3955
  #, gcc-internal-format, gfc-internal-format
  msgid "POINTER-valued function appears on right-hand side of assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:3998
  #, gcc-internal-format
  msgid "BOZ literal constant near %L cannot be assigned to a %qs variable"
  msgstr ""
  
! #: fortran/expr.cc:4005
  #, gcc-internal-format, gfc-internal-format
  msgid "The assignment to a KIND or LEN component of a parameterized type at %L is not allowed"
  msgstr ""
  
! #: fortran/expr.cc:4036
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible types in DATA statement at %L; attempted conversion of %s to %s"
  msgstr ""
  
! #: fortran/expr.cc:4080
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target is not a POINTER at %L"
  msgstr ""
  
! #: fortran/expr.cc:4088
  #, gcc-internal-format
  msgid "%qs in the pointer assignment at %L cannot be an l-value since it is a procedure"
  msgstr ""
  
! #: fortran/expr.cc:4112
  #, gcc-internal-format
  msgid "Expected bounds specification for %qs at %L"
  msgstr ""
  
! #: fortran/expr.cc:4117
  #, gcc-internal-format
  msgid "Bounds specification for %qs in pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4146
  #, gcc-internal-format, gfc-internal-format
  msgid "Stride must not be present at %L"
  msgstr ""
  
! #: fortran/expr.cc:4152 fortran/expr.cc:4172
  #, gcc-internal-format
  msgid "Rank remapping requires a list of %<lower-bound : upper-bound%> specifications at %L"
  msgstr ""
  
! #: fortran/expr.cc:4160 fortran/expr.cc:4179
  #, gcc-internal-format
  msgid "Expected list of %<lower-bound :%> or list of %<lower-bound : upper-bound%> specifications at %L"
  msgstr ""
  
! #: fortran/expr.cc:4206
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer object at %L shall not have a coindex"
  msgstr ""
  
! #: fortran/expr.cc:4227
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4252
  #, gcc-internal-format
  msgid "Function result %qs is invalid as proc-target in procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4261
  #, gcc-internal-format
  msgid "Abstract interface %qs is invalid in procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4271
  #, gcc-internal-format
  msgid "Statement function %qs is invalid in procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4277
  #, gcc-internal-format
  msgid "Internal procedure %qs is invalid in procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4284
  #, gcc-internal-format
  msgid "Intrinsic %qs at %L is invalid in procedure pointer assignment"
  msgstr ""
  
! #: fortran/expr.cc:4292
  #, gcc-internal-format
  msgid "Nonintrinsic elemental procedure %qs is invalid in procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4315
  #, gcc-internal-format, gfc-internal-format
  msgid "Mismatch in the procedure pointer assignment at %L: mismatch in the calling convention"
  msgstr ""
  
! #: fortran/expr.cc:4368
  #, gcc-internal-format
  msgid "Interface mismatch in procedure pointer assignment at %L: %qs is not a subroutine"
  msgstr ""
  
! #: fortran/expr.cc:4378 fortran/expr.cc:4393
  #, gcc-internal-format
  msgid "Explicit interface required for component %qs at %L: %s"
  msgstr ""
  
! #: fortran/expr.cc:4384 fortran/expr.cc:4399 fortran/resolve.cc:2765
  #, gcc-internal-format
  msgid "Explicit interface required for %qs at %L: %s"
  msgstr ""
  
! #: fortran/expr.cc:4411
  #, gcc-internal-format, gfc-internal-format
  msgid "Interface mismatch in procedure pointer assignment at %L: %s"
  msgstr ""
  
! #: fortran/expr.cc:4420
  #, gcc-internal-format
  msgid "Procedure pointer target %qs at %L must be either an intrinsic, host or use associated, referenced or have the EXTERNAL attribute"
  msgstr ""
  
! #: fortran/expr.cc:4433
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target cannot be a constant at %L"
  msgstr ""
  
! #: fortran/expr.cc:4447
  #, gcc-internal-format, gfc-internal-format
  msgid "Data-pointer-object at %L must be unlimited polymorphic, or of a type with the BIND or SEQUENCE attribute, to be compatible with an unlimited polymorphic target"
  msgstr ""
  
! #: fortran/expr.cc:4452
  #, gcc-internal-format, gfc-internal-format
  msgid "Different types in pointer assignment at %L; attempted assignment of %s to %s"
  msgstr ""
  
! #: fortran/expr.cc:4460
  #, gcc-internal-format, gfc-internal-format
  msgid "Different kind type parameters in pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4467
  #, gcc-internal-format, gfc-internal-format
  msgid "Different ranks in pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4488
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank remapping target is smaller than size of the pointer (%ld < %ld) at %L"
  msgstr ""
  
! #: fortran/expr.cc:4504
  #, gcc-internal-format, gfc-internal-format
  msgid "The assumed rank target at %L is an experimental F202y feature. Use option -std=f202y to enable"
  msgstr ""
  
! #: fortran/expr.cc:4516
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank remapping target must be rank 1 or simply contiguous at %L"
  msgstr ""
  
! #: fortran/expr.cc:4520
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank remapping target is not rank 1 at %L"
  msgstr ""
  
! #: fortran/expr.cc:4527
  #, gcc-internal-format, gfc-internal-format
  msgid "The data-target at %L is an assumed rank object and so the data-pointer-object %s must have a bounds remapping list (list of lbound:ubound for each dimension)"
  msgstr ""
  
! #: fortran/expr.cc:4536
  #, gcc-internal-format, gfc-internal-format
  msgid "The assumed rank data-target at %L must be contiguous"
  msgstr ""
*************** msgstr ""
*** 74547,74738 ****
  #. The test above might need to be extend when F08, Note 5.4 has to be
  #. interpreted in the way that target and pointer with the same coindex
  #. are allowed.
! #: fortran/expr.cc:4456 fortran/expr.cc:4582
  #, gcc-internal-format, gfc-internal-format
  msgid "Data target at %L shall not have a coindex"
  msgstr ""
  
! #: fortran/expr.cc:4459
  #, gcc-internal-format, gfc-internal-format
  msgid "Target expression in pointer assignment at %L must deliver a pointer result"
  msgstr ""
  
! #: fortran/expr.cc:4473
  #, gcc-internal-format, gfc-internal-format
  msgid "Zero-sized array detected at %L where an entity with the TARGET attribute is expected"
  msgstr ""
  
! #: fortran/expr.cc:4479 fortran/expr.cc:4494
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target in initialization expression does not have the TARGET attribute at %L"
  msgstr ""
  
! #: fortran/expr.cc:4510
  #, gcc-internal-format, gfc-internal-format
  msgid "Every subscript of target specification at %L must be a constant expression"
  msgstr ""
  
! #: fortran/expr.cc:4521
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring starting and ending points of target specification at %L must be constant expressions"
  msgstr ""
  
! #: fortran/expr.cc:4537
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target is neither TARGET nor POINTER at %L"
  msgstr ""
  
! #: fortran/expr.cc:4552
  #, gcc-internal-format, gfc-internal-format
  msgid "Bad target in pointer assignment in PURE procedure at %L"
  msgstr ""
  
! #: fortran/expr.cc:4561
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment with vector subscript on rhs at %L"
  msgstr ""
  
! #: fortran/expr.cc:4569
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target has PROTECTED attribute at %L"
  msgstr ""
  
! #: fortran/expr.cc:4597 fortran/expr.cc:4602
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to contiguous pointer from non-contiguous target at %L"
  msgstr ""
  
! #: fortran/expr.cc:4642
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer at %L in pointer assignment might outlive the pointer target"
  msgstr ""
  
! #: fortran/expr.cc:4722 fortran/resolve.cc:1573
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer initialization target at %L must not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/expr.cc:4728
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer initialization target at %L must have the TARGET attribute"
  msgstr ""
  
! #: fortran/expr.cc:4743 fortran/resolve.cc:1579
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer initialization target at %L must have the SAVE attribute"
  msgstr ""
  
! #: fortran/expr.cc:4755
  #, gcc-internal-format, gfc-internal-format
  msgid "Procedure pointer initialization target at %L may not be a procedure pointer"
  msgstr ""
  
! #: fortran/expr.cc:4761
  #, gcc-internal-format
  msgid "Internal procedure %qs is invalid in procedure pointer initialization at %L"
  msgstr ""
  
! #: fortran/expr.cc:4768
  #, gcc-internal-format
  msgid "Dummy procedure %qs is invalid in procedure pointer initialization at %L"
  msgstr ""
  
! #: fortran/expr.cc:5252
  #, gcc-internal-format
  msgid "generate_isocbinding_initializer(): bad iso_c_binding type, expected %<c_ptr%> or %<c_funptr%>"
  msgstr ""
  
! #: fortran/expr.cc:6385
  #, gcc-internal-format, gfc-internal-format
  msgid "Fortran 2008: Pointer functions in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6393
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-variable expression in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6401
  #, gcc-internal-format
  msgid "Named constant %qs in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6412
  #, gcc-internal-format
  msgid "%qs in variable definition context (%s) at %L is not a variable"
  msgstr ""
  
! #: fortran/expr.cc:6423
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-POINTER in pointer association context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6432
  #, gcc-internal-format, gfc-internal-format
  msgid "Type inaccessible in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6445
  #, gcc-internal-format, gfc-internal-format
  msgid "LOCK_TYPE in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6458
  #, gcc-internal-format, gfc-internal-format
  msgid "LOCK_EVENT in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6489
  #, gcc-internal-format
  msgid "%qs parameter inquiry for %qs in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6506
  #, gcc-internal-format
  msgid "Dummy argument %qs with INTENT(IN) in pointer association context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6516
  #, gcc-internal-format
  msgid "Dummy argument %qs with INTENT(IN) in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6532
  #, gcc-internal-format
  msgid "Variable %qs is PROTECTED and cannot appear in a pointer association context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6540
  #, gcc-internal-format
  msgid "Variable %qs is PROTECTED and cannot appear in a variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6555
  #, gcc-internal-format
  msgid "Variable %qs cannot appear in a variable definition context (%s) at %L in PURE procedure"
  msgstr ""
  
! #: fortran/expr.cc:6615 fortran/expr.cc:6636
  #, gcc-internal-format
  msgid "%qs at %L associated to vector-indexed target cannot be used in a variable definition context (%s)"
  msgstr ""
  
! #: fortran/expr.cc:6620
  #, gcc-internal-format
  msgid "%qs at %L associated to expression cannot be used in a variable definition context (%s)"
  msgstr ""
  
! #: fortran/expr.cc:6629
  #, gcc-internal-format
  msgid "%qs at %L associated to pointer function target being used in a variable definition context (%s)"
  msgstr ""
  
! #: fortran/expr.cc:6648
  #, gcc-internal-format
  msgid "Associate-name %qs cannot appear in a variable definition context (%s) at %L because its target at %L cannot, either"
  msgstr ""
  
! #: fortran/expr.cc:6690
  #, gcc-internal-format, gfc-internal-format
  msgid "Elements with the same value at %L and %L in vector subscript in a variable definition context (%s)"
  msgstr ""
--- 74638,74829 ----
  #. The test above might need to be extend when F08, Note 5.4 has to be
  #. interpreted in the way that target and pointer with the same coindex
  #. are allowed.
! #: fortran/expr.cc:4560 fortran/expr.cc:4686
  #, gcc-internal-format, gfc-internal-format
  msgid "Data target at %L shall not have a coindex"
  msgstr ""
  
! #: fortran/expr.cc:4563
  #, gcc-internal-format, gfc-internal-format
  msgid "Target expression in pointer assignment at %L must deliver a pointer result"
  msgstr ""
  
! #: fortran/expr.cc:4577
  #, gcc-internal-format, gfc-internal-format
  msgid "Zero-sized array detected at %L where an entity with the TARGET attribute is expected"
  msgstr ""
  
! #: fortran/expr.cc:4583 fortran/expr.cc:4598
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target in initialization expression does not have the TARGET attribute at %L"
  msgstr ""
  
! #: fortran/expr.cc:4614
  #, gcc-internal-format, gfc-internal-format
  msgid "Every subscript of target specification at %L must be a constant expression"
  msgstr ""
  
! #: fortran/expr.cc:4625
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring starting and ending points of target specification at %L must be constant expressions"
  msgstr ""
  
! #: fortran/expr.cc:4641
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target is neither TARGET nor POINTER at %L"
  msgstr ""
  
! #: fortran/expr.cc:4656
  #, gcc-internal-format, gfc-internal-format
  msgid "Bad target in pointer assignment in PURE procedure at %L"
  msgstr ""
  
! #: fortran/expr.cc:4665
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment with vector subscript on rhs at %L"
  msgstr ""
  
! #: fortran/expr.cc:4673
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target has PROTECTED attribute at %L"
  msgstr ""
  
! #: fortran/expr.cc:4701 fortran/expr.cc:4706
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to contiguous pointer from non-contiguous target at %L"
  msgstr ""
  
! #: fortran/expr.cc:4746
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer at %L in pointer assignment might outlive the pointer target"
  msgstr ""
  
! #: fortran/expr.cc:4826 fortran/resolve.cc:1574
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer initialization target at %L must not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/expr.cc:4832
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer initialization target at %L must have the TARGET attribute"
  msgstr ""
  
! #: fortran/expr.cc:4847 fortran/resolve.cc:1580
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer initialization target at %L must have the SAVE attribute"
  msgstr ""
  
! #: fortran/expr.cc:4859
  #, gcc-internal-format, gfc-internal-format
  msgid "Procedure pointer initialization target at %L may not be a procedure pointer"
  msgstr ""
  
! #: fortran/expr.cc:4865
  #, gcc-internal-format
  msgid "Internal procedure %qs is invalid in procedure pointer initialization at %L"
  msgstr ""
  
! #: fortran/expr.cc:4872
  #, gcc-internal-format
  msgid "Dummy procedure %qs is invalid in procedure pointer initialization at %L"
  msgstr ""
  
! #: fortran/expr.cc:5356
  #, gcc-internal-format
  msgid "generate_isocbinding_initializer(): bad iso_c_binding type, expected %<c_ptr%> or %<c_funptr%>"
  msgstr ""
  
! #: fortran/expr.cc:6489
  #, gcc-internal-format, gfc-internal-format
  msgid "Fortran 2008: Pointer functions in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6497
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-variable expression in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6505
  #, gcc-internal-format
  msgid "Named constant %qs in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6516
  #, gcc-internal-format
  msgid "%qs in variable definition context (%s) at %L is not a variable"
  msgstr ""
  
! #: fortran/expr.cc:6527
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-POINTER in pointer association context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6536
  #, gcc-internal-format, gfc-internal-format
  msgid "Type inaccessible in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6549
  #, gcc-internal-format, gfc-internal-format
  msgid "LOCK_TYPE in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6562
  #, gcc-internal-format, gfc-internal-format
  msgid "LOCK_EVENT in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6593
  #, gcc-internal-format
  msgid "%qs parameter inquiry for %qs in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6610
  #, gcc-internal-format
  msgid "Dummy argument %qs with INTENT(IN) in pointer association context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6620
  #, gcc-internal-format
  msgid "Dummy argument %qs with INTENT(IN) in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6636
  #, gcc-internal-format
  msgid "Variable %qs is PROTECTED and cannot appear in a pointer association context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6644
  #, gcc-internal-format
  msgid "Variable %qs is PROTECTED and cannot appear in a variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6659
  #, gcc-internal-format
  msgid "Variable %qs cannot appear in a variable definition context (%s) at %L in PURE procedure"
  msgstr ""
  
! #: fortran/expr.cc:6719 fortran/expr.cc:6740
  #, gcc-internal-format
  msgid "%qs at %L associated to vector-indexed target cannot be used in a variable definition context (%s)"
  msgstr ""
  
! #: fortran/expr.cc:6724
  #, gcc-internal-format
  msgid "%qs at %L associated to expression cannot be used in a variable definition context (%s)"
  msgstr ""
  
! #: fortran/expr.cc:6733
  #, gcc-internal-format
  msgid "%qs at %L associated to pointer function target being used in a variable definition context (%s)"
  msgstr ""
  
! #: fortran/expr.cc:6752
  #, gcc-internal-format
  msgid "Associate-name %qs cannot appear in a variable definition context (%s) at %L because its target at %L cannot, either"
  msgstr ""
  
! #: fortran/expr.cc:6794
  #, gcc-internal-format, gfc-internal-format
  msgid "Elements with the same value at %L and %L in vector subscript in a variable definition context (%s)"
  msgstr ""
*************** msgid "Illegal id in copy_walk_reduction
*** 74753,74760 ****
  msgstr ""
  
  #: fortran/frontend-passes.cc:874 fortran/trans-array.cc:1565
! #: fortran/trans-array.cc:7434 fortran/trans-array.cc:9248
! #: fortran/trans-intrinsic.cc:8577
  #, gcc-internal-format, gfc-internal-format
  msgid "Creating array temporary at %L"
  msgstr ""
--- 74844,74851 ----
  msgstr ""
  
  #: fortran/frontend-passes.cc:874 fortran/trans-array.cc:1565
! #: fortran/trans-array.cc:7436 fortran/trans-array.cc:9250
! #: fortran/trans-intrinsic.cc:8556
  #, gcc-internal-format, gfc-internal-format
  msgid "Creating array temporary at %L"
  msgstr ""
*************** msgstr ""
*** 74920,75703 ****
  msgid "Expecting %<END INTERFACE OPERATOR (.%s.)%> at %C"
  msgstr ""
  
! #: fortran/interface.cc:458
  #, gcc-internal-format
  msgid "Expecting %<END INTERFACE %s%> at %C"
  msgstr ""
  
! #: fortran/interface.cc:655
  #, gcc-internal-format
  msgid "gfc_compare_derived_types: invalid derived type"
  msgstr ""
  
! #: fortran/interface.cc:943
  #, gcc-internal-format, gfc-internal-format
  msgid "Alternate return cannot appear in operator interface at %L"
  msgstr ""
  
! #: fortran/interface.cc:972
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment operator interface at %L must have two arguments"
  msgstr ""
  
! #: fortran/interface.cc:975
  #, gcc-internal-format, gfc-internal-format
  msgid "Operator interface at %L has the wrong number of arguments"
  msgstr ""
  
! #: fortran/interface.cc:988
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment operator interface at %L must be a SUBROUTINE"
  msgstr ""
  
! #: fortran/interface.cc:1006
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment operator interface at %L must not redefine an INTRINSIC type assignment"
  msgstr ""
  
! #: fortran/interface.cc:1015
  #, gcc-internal-format, gfc-internal-format
  msgid "Intrinsic operator interface at %L must be a FUNCTION"
  msgstr ""
  
! #: fortran/interface.cc:1026
  #, gcc-internal-format, gfc-internal-format
  msgid "First argument of defined assignment at %L must be INTENT(OUT) or INTENT(INOUT)"
  msgstr ""
  
! #: fortran/interface.cc:1033
  #, gcc-internal-format, gfc-internal-format
  msgid "Second argument of defined assignment at %L must be INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:1042 fortran/resolve.cc:19136
  #, gcc-internal-format, gfc-internal-format
  msgid "First argument of operator interface at %L must be INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:1049 fortran/resolve.cc:19154
  #, gcc-internal-format, gfc-internal-format
  msgid "Second argument of operator interface at %L must be INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:1154
  #, gcc-internal-format, gfc-internal-format
  msgid "Operator interface at %L conflicts with intrinsic interface"
  msgstr ""
  
! #: fortran/interface.cc:1518 fortran/interface.cc:1590
  #, gcc-internal-format, gfc-internal-format
  msgid "check_dummy_characteristics: Unexpected result %i of gfc_dep_compare_expr"
  msgstr ""
  
! #: fortran/interface.cc:1715
  #, gcc-internal-format, gfc-internal-format
  msgid "Possible character length mismatch in function result between %L and %L"
  msgstr ""
  
! #: fortran/interface.cc:1724
  #, gcc-internal-format, gfc-internal-format
  msgid "check_result_characteristics (1): Unexpected result %i of gfc_dep_compare_expr"
  msgstr ""
  
! #: fortran/interface.cc:1771
  #, gcc-internal-format, gfc-internal-format
  msgid "check_result_characteristics (2): Unexpected result %i of gfc_dep_compare_expr"
  msgstr ""
  
! #: fortran/interface.cc:1968
  #, gcc-internal-format
  msgid "Procedure %qs in %s at %L has no explicit interface; did you mean %qs?"
  msgstr ""
  
! #: fortran/interface.cc:1973
  #, gcc-internal-format
  msgid "Procedure %qs in %s at %L has no explicit interface"
  msgstr ""
  
! #: fortran/interface.cc:1977
  #, gcc-internal-format
  msgid "Procedure %qs in %s at %L is neither function nor subroutine; did you mean %qs?"
  msgstr ""
  
! #: fortran/interface.cc:1981
  #, gcc-internal-format
  msgid "Procedure %qs in %s at %L is neither function nor subroutine"
  msgstr ""
  
! #: fortran/interface.cc:1993
  #, gcc-internal-format, gfc-internal-format
  msgid "In %s at %L procedures must be either all SUBROUTINEs or all FUNCTIONs"
  msgstr ""
  
! #: fortran/interface.cc:1997
  #, gcc-internal-format, gfc-internal-format
  msgid "In %s at %L procedures must be all FUNCTIONs as the generic name is also the name of a derived type"
  msgstr ""
  
! #: fortran/interface.cc:2005
  #, gcc-internal-format
  msgid "Internal procedure %qs in %s at %L"
  msgstr ""
  
! #: fortran/interface.cc:2062 fortran/interface.cc:2067
  #, gcc-internal-format
  msgid "Ambiguous interfaces in %s for %qs at %L and %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:2072
  #, gcc-internal-format
  msgid "Although not referenced, %qs has ambiguous interfaces at %L"
  msgstr ""
  
! #: fortran/interface.cc:2110
  #, gcc-internal-format
  msgid "%qs at %L is not a module procedure"
  msgstr ""
  
! #: fortran/interface.cc:2315
  #, gcc-internal-format
  msgid "The assumed-rank array at %L requires that the dummy argument %qs has assumed-rank"
  msgstr ""
  
! #: fortran/interface.cc:2318
  #, gcc-internal-format
  msgid "Rank mismatch in argument %qs at %L (scalar and rank-%d)"
  msgstr ""
  
! #: fortran/interface.cc:2321
  #, gcc-internal-format
  msgid "Rank mismatch in argument %qs at %L (rank-%d and scalar)"
  msgstr ""
  
! #: fortran/interface.cc:2324
  #, gcc-internal-format
  msgid "Rank mismatch in argument %qs at %L (rank-%d and rank-%d)"
  msgstr ""
  
! #: fortran/interface.cc:2336
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank mismatch between actual argument at %L and actual argument at %L (scalar and rank-%d)"
  msgstr ""
  
! #: fortran/interface.cc:2340
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank mismatch between actual argument at %L and actual argument at %L (rank-%d and scalar)"
  msgstr ""
  
! #: fortran/interface.cc:2344
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank mismatch between actual argument at %L and actual argument at %L (rank-%d and rank-%d)"
  msgstr ""
  
! #: fortran/interface.cc:2468
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid procedure argument at %L"
  msgstr ""
  
! #: fortran/interface.cc:2480 fortran/interface.cc:2496
  #, gcc-internal-format, gfc-internal-format
  msgid "Interface mismatch in dummy procedure at %L conflicts with %L: %s"
  msgstr ""
  
! #: fortran/interface.cc:2484 fortran/interface.cc:2500
! #: fortran/interface.cc:2590
  #, gcc-internal-format
  msgid "Interface mismatch in dummy procedure %qs at %L: %s"
  msgstr ""
  
! #: fortran/interface.cc:2519
  #, gcc-internal-format
  msgid "Passing global subroutine %qs declared at %L as function at %L"
  msgstr ""
  
! #: fortran/interface.cc:2526
  #, gcc-internal-format
  msgid "Passing global function %qs declared at %L as subroutine at %L"
  msgstr ""
  
! #: fortran/interface.cc:2539
  #, gcc-internal-format, gfc-internal-format
  msgid "Mismatch between subroutine and function at %L"
  msgstr ""
  
! #: fortran/interface.cc:2548
  #, gcc-internal-format
  msgid "Type mismatch at %L passing global function %qs declared at %L (%s/%s)"
  msgstr ""
  
! #: fortran/interface.cc:2601
  #, gcc-internal-format
  msgid "Actual argument to contiguous pointer dummy %qs at %L must be simply contiguous"
  msgstr ""
  
! #: fortran/interface.cc:2624
  #, gcc-internal-format, gfc-internal-format
  msgid "Type mismatch between actual argument at %L and actual argument at %L (%s/%s)."
  msgstr ""
  
! #: fortran/interface.cc:2634
  #, gcc-internal-format
  msgid "Type mismatch in argument %qs at %L; passed %s to %s"
  msgstr ""
  
! #: fortran/interface.cc:2644
  #, gcc-internal-format
  msgid "Assumed-type actual argument at %L requires that dummy argument %qs is of assumed type"
  msgstr ""
  
! #: fortran/interface.cc:2658
  #, gcc-internal-format
  msgid "Assumed-type actual argument at %L corresponding to assumed-rank dummy argument %qs must be assumed-shape or assumed-rank"
  msgstr ""
  
! #: fortran/interface.cc:2675
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must be polymorphic"
  msgstr ""
  
! #: fortran/interface.cc:2685
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must have the same declared type"
  msgstr ""
  
! #: fortran/interface.cc:2700
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must be unlimited polymorphic since the formal argument is a pointer or allocatable unlimited polymorphic entity [F2008: 12.5.2.5]"
  msgstr ""
  
! #: fortran/interface.cc:2716
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must be a coarray"
  msgstr ""
  
! #: fortran/interface.cc:2738
  #, gcc-internal-format
  msgid "Corank mismatch in argument %qs at %L (%d and %d)"
  msgstr ""
  
! #: fortran/interface.cc:2756
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must be simply contiguous or an element of such an array"
  msgstr ""
  
! #: fortran/interface.cc:2771
  #, gcc-internal-format
  msgid "Actual argument to non-INTENT(INOUT) dummy %qs at %L, which is LOCK_TYPE or has a LOCK_TYPE component"
  msgstr ""
  
! #: fortran/interface.cc:2786
  #, gcc-internal-format
  msgid "Actual argument to non-INTENT(INOUT) dummy %qs at %L, which is EVENT_TYPE or has a EVENT_TYPE component"
  msgstr ""
  
! #: fortran/interface.cc:2805
  #, gcc-internal-format
  msgid "Dummy argument %qs has to be a pointer, assumed-shape or assumed-rank array without CONTIGUOUS attribute - as actual argument at %L is not simply contiguous and both are ASYNCHRONOUS or VOLATILE"
  msgstr ""
  
! #: fortran/interface.cc:2818
  #, gcc-internal-format
  msgid "Passing coarray at %L to allocatable, noncoarray, INTENT(OUT) dummy argument %qs"
  msgstr ""
  
! #: fortran/interface.cc:2825
  #, gcc-internal-format
  msgid "Passing coarray at %L to allocatable, noncoarray dummy argument %qs, which is invalid if the allocation status is modified"
  msgstr ""
  
! #: fortran/interface.cc:2912
  #, gcc-internal-format
  msgid "Polymorphic scalar passed to array dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:2923
  #, gcc-internal-format, gfc-internal-format
  msgid "Element of assumed-shape or pointer array as actual argument at %L cannot correspond to actual argument at %L"
  msgstr ""
  
! #: fortran/interface.cc:2928
  #, gcc-internal-format
  msgid "Element of assumed-shape or pointer array passed to array dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:2941
  #, gcc-internal-format
  msgid "Extension: Scalar non-default-kind, non-C_CHAR-kind CHARACTER actual argument with array dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:2949
  #, gcc-internal-format
  msgid "Fortran 2003: Scalar CHARACTER actual argument with array dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3338
  #, gcc-internal-format
  msgid "Keyword argument %qs at %L is invalid in a statement function"
  msgstr ""
  
! #: fortran/interface.cc:3361
  #, gcc-internal-format
  msgid "Keyword argument %qs at %L is not in the procedure; did you mean %qs?"
  msgstr ""
  
! #: fortran/interface.cc:3365
  #, gcc-internal-format
  msgid "Keyword argument %qs at %L is not in the procedure"
  msgstr ""
  
! #: fortran/interface.cc:3374
  #, gcc-internal-format
  msgid "Keyword argument %qs at %L is already associated with another actual argument"
  msgstr ""
  
! #: fortran/interface.cc:3384
  #, gcc-internal-format, gfc-internal-format
  msgid "More actual than formal arguments in procedure call at %L"
  msgstr ""
  
! #: fortran/interface.cc:3397
  #, gcc-internal-format, gfc-internal-format
  msgid "Missing alternate return specifier in subroutine call at %L"
  msgstr ""
  
! #: fortran/interface.cc:3415
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected alternate return specifier in subroutine call at %L"
  msgstr ""
  
! #: fortran/interface.cc:3438
  #, gcc-internal-format
  msgid "Intrinsic %<NULL()%> without %<MOLD%> argument at %L passed to assumed-rank dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3451
  #, gcc-internal-format
  msgid "The assumed-size dummy %qs is being passed at %L to an assumed-rank dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3462
  #, gcc-internal-format
  msgid "Intrinsic %<NULL()%> without %<MOLD%> argument at %L passed to assumed-length dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3502
  #, gcc-internal-format
  msgid "Unexpected NULL() intrinsic at %L to dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3505
  #, gcc-internal-format
  msgid "Fortran 2008: Null pointer at %L to non-pointer dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3531
  #, gcc-internal-format, gfc-internal-format
  msgid "Actual argument at %L to assumed-type dummy has type parameters or is of derived type with type-bound or FINAL procedures"
  msgstr ""
  
! #: fortran/interface.cc:3543
  #, gcc-internal-format, gfc-internal-format
  msgid "Unlimited polymorphic actual argument at %L is not matched with either an unlimited polymorphic or assumed type dummy argument"
  msgstr ""
  
! #: fortran/interface.cc:3567
  #, gcc-internal-format
  msgid "Character length mismatch (%ld/%ld) between actual argument and pointer or allocatable dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3574
  #, gcc-internal-format
  msgid "Character length mismatch (%ld/%ld) between actual argument and assumed-shape dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3589
  #, gcc-internal-format
  msgid "Actual argument at %L to allocatable or pointer dummy argument %qs must have a deferred length type parameter if and only if the dummy has one"
  msgstr ""
  
! #: fortran/interface.cc:3612
  #, gcc-internal-format
  msgid "Character length of actual argument shorter than of dummy argument %qs (%lu/%lu) at %L"
  msgstr ""
  
! #: fortran/interface.cc:3622 fortran/interface.cc:3627
  #, gcc-internal-format
  msgid "Actual argument contains too few elements for dummy argument %qs (%lu/%lu) at %L"
  msgstr ""
  
! #: fortran/interface.cc:3653
  #, gcc-internal-format
  msgid "Expected a procedure pointer for argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3670
  #, gcc-internal-format
  msgid "Expected a procedure for argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3737
  #, gcc-internal-format
  msgid "Actual argument for %qs cannot be an assumed-size array at %L"
  msgstr ""
  
! #: fortran/interface.cc:3766
  #, gcc-internal-format
  msgid "Actual argument to assumed-rank INTENT(OUT) dummy %qs at %L cannot be of unknown size"
  msgstr ""
  
! #: fortran/interface.cc:3781
  #, fuzzy, gcc-internal-format
  msgid "Actual argument for %qs at %L must be a pointer"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: fortran/interface.cc:3790
  #, gcc-internal-format
  msgid "Fortran 2008: Non-pointer actual argument at %L to pointer dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3799
  #, gcc-internal-format
  msgid "Actual argument for %qs at %L must be a pointer or a valid target for the dummy pointer in a pointer assignment statement"
  msgstr ""
  
! #: fortran/interface.cc:3813
  #, gcc-internal-format
  msgid "Coindexed actual argument at %L to pointer dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3827
  #, gcc-internal-format
  msgid "Coindexed actual argument at %L to allocatable dummy %qs requires INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:3842
  #, gcc-internal-format
  msgid "Coindexed ASYNCHRONOUS or VOLATILE actual argument at %L requires that dummy %qs has neither ASYNCHRONOUS nor VOLATILE"
  msgstr ""
  
! #: fortran/interface.cc:3857
  #, gcc-internal-format
  msgid "Coindexed actual argument at %L with allocatable ultimate component to dummy %qs requires either VALUE or INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:3870
  #, gcc-internal-format
  msgid "Actual CLASS array argument for %qs must be a full array at %L"
  msgstr ""
  
! #: fortran/interface.cc:3881
  #, gcc-internal-format
  msgid "Actual argument for %qs must be ALLOCATABLE at %L"
  msgstr ""
  
! #: fortran/interface.cc:3892
  #, gcc-internal-format
  msgid "Actual argument for %qs at %L is a function result and the dummy argument is ALLOCATABLE"
  msgstr ""
  
! #: fortran/interface.cc:3930
  #, gcc-internal-format
  msgid "Array-section actual argument with vector subscripts at %L is incompatible with INTENT(OUT), INTENT(INOUT), VOLATILE or ASYNCHRONOUS attribute of the dummy argument %qs"
  msgstr ""
  
! #: fortran/interface.cc:3950
  #, gcc-internal-format
  msgid "Assumed-shape actual argument at %L is incompatible with the non-assumed-shape dummy argument %qs due to VOLATILE attribute"
  msgstr ""
  
! #: fortran/interface.cc:3968
  #, gcc-internal-format
  msgid "Array-section actual argument at %L is incompatible with the non-assumed-shape dummy argument %qs due to VOLATILE attribute"
  msgstr ""
  
! #: fortran/interface.cc:3989
  #, gcc-internal-format
  msgid "Pointer-array actual argument at %L requires an assumed-shape or pointer-array dummy argument %qs due to VOLATILE attribute"
  msgstr ""
  
! #: fortran/interface.cc:4017
  #, gcc-internal-format, gfc-internal-format
  msgid "Missing alternate return spec in subroutine call at %L"
  msgstr ""
  
! #: fortran/interface.cc:4030
  #, gcc-internal-format
  msgid "Missing actual argument for argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:4158
  #, gcc-internal-format
  msgid "compare_actual_expr(): Bad component code"
  msgstr ""
  
! #: fortran/interface.cc:4187
  #, gcc-internal-format
  msgid "check_some_aliasing(): List mismatch"
  msgstr ""
  
! #: fortran/interface.cc:4213
  #, gcc-internal-format
  msgid "check_some_aliasing(): corrupted data"
  msgstr ""
  
! #: fortran/interface.cc:4223
  #, gcc-internal-format
  msgid "Same actual argument associated with INTENT(%s) argument %qs and INTENT(%s) argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:4253
  #, gcc-internal-format
  msgid "check_intents(): List mismatch"
  msgstr ""
  
! #: fortran/interface.cc:4273
  #, gcc-internal-format, gfc-internal-format
  msgid "Procedure argument at %L is local to a PURE procedure and has the POINTER attribute"
  msgstr ""
  
! #: fortran/interface.cc:4285
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed actual argument at %L in PURE procedure is passed to an INTENT(%s) argument"
  msgstr ""
  
! #: fortran/interface.cc:4295
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed actual argument at %L in PURE procedure is passed to a POINTER dummy argument"
  msgstr ""
  
! #: fortran/interface.cc:4306
  #, gcc-internal-format
  msgid "Coindexed polymorphic actual argument at %L is passed polymorphic dummy argument %qs"
  msgstr ""
  
! #: fortran/interface.cc:4348
  #, gcc-internal-format
  msgid "Procedure %qs called at %L is not explicitly declared; did you mean %qs?"
  msgstr ""
  
! #: fortran/interface.cc:4352 fortran/interface.cc:4362
  #, gcc-internal-format
  msgid "Procedure %qs called at %L is not explicitly declared"
  msgstr ""
  
! #: fortran/interface.cc:4358
  #, gcc-internal-format
  msgid "Procedure %qs called with an implicit interface at %L"
  msgstr ""
  
! #: fortran/interface.cc:4371
  #, gcc-internal-format
  msgid "The pointer object %qs at %L must have an explicit function interface or be declared as array"
  msgstr ""
  
! #: fortran/interface.cc:4379
  #, gcc-internal-format
  msgid "The allocatable object %qs at %L must have an explicit function interface or be declared as array"
  msgstr ""
  
! #: fortran/interface.cc:4387
  #, gcc-internal-format
  msgid "Allocatable function %qs at %L must have an explicit function interface"
  msgstr ""
  
! #: fortran/interface.cc:4404
  #, gcc-internal-format, gfc-internal-format
  msgid "Explicit interface required for polymorphic argument at %L"
  msgstr ""
  
! #: fortran/interface.cc:4413
  #, gcc-internal-format
  msgid "Keyword argument requires explicit interface for procedure %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:4422
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type argument %s at %L requires an explicit interface"
  msgstr ""
  
! #: fortran/interface.cc:4437
  #, gcc-internal-format
  msgid "Actual argument of LOCK_TYPE or with LOCK_TYPE component at %L requires an explicit interface for procedure %qs"
  msgstr ""
  
! #: fortran/interface.cc:4452
  #, gcc-internal-format
  msgid "Actual argument of EVENT_TYPE or with EVENT_TYPE component at %L requires an explicit interface for procedure %qs"
  msgstr ""
  
! #: fortran/interface.cc:4462
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD argument to NULL required at %L"
  msgstr ""
  
! #: fortran/interface.cc:4470
  #, gcc-internal-format, gfc-internal-format
  msgid "Passing intrinsic NULL as actual argument at %L requires an explicit interface"
  msgstr ""
  
! #: fortran/interface.cc:4480
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank argument requires an explicit interface at %L"
  msgstr ""
  
! #: fortran/interface.cc:4522
  #, gcc-internal-format
  msgid "Procedure pointer component %qs called with an implicit interface at %L"
  msgstr ""
  
! #: fortran/interface.cc:4533
  #, gcc-internal-format
  msgid "Keyword argument requires explicit interface for procedure pointer component %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:4618
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD= required in NULL() argument at %L: Ambiguity between specific functions %s and %s"
  msgstr ""
  
! #: fortran/interface.cc:4688
  #, fuzzy, gcc-internal-format
  #| msgid "failed to find class '%s'"
  msgid "Unable to find symbol %qs"
  msgstr "Ð½Ðµ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½ ÐºÐ»Ð°Ñ� \"%s\""
  
! #: fortran/interface.cc:5072
  #, gcc-internal-format
  msgid "Entity %qs at %L is already present in the interface"
  msgstr ""
  
! #: fortran/interface.cc:5189
  #, gcc-internal-format
  msgid "gfc_add_interface(): Bad interface type"
  msgstr ""
  
! #: fortran/interface.cc:5283
  #, gcc-internal-format
  msgid "Cannot overwrite GENERIC %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:5295
  #, gcc-internal-format
  msgid "%qs at %L overrides a procedure binding declared NON_OVERRIDABLE"
  msgstr ""
  
! #: fortran/interface.cc:5303
  #, gcc-internal-format
  msgid "%qs at %L must not be DEFERRED as it overrides a non-DEFERRED binding"
  msgstr ""
  
! #: fortran/interface.cc:5311
  #, gcc-internal-format
  msgid "%qs at %L overrides a PURE procedure and must also be PURE"
  msgstr ""
  
! #: fortran/interface.cc:5320
  #, gcc-internal-format
  msgid "%qs at %L overrides an ELEMENTAL procedure and must also be ELEMENTAL"
  msgstr ""
  
! #: fortran/interface.cc:5326
  #, gcc-internal-format
  msgid "%qs at %L overrides a non-ELEMENTAL procedure and must not be ELEMENTAL, either"
  msgstr ""
  
! #: fortran/interface.cc:5335
  #, gcc-internal-format
  msgid "%qs at %L overrides a SUBROUTINE and must also be a SUBROUTINE"
  msgstr ""
  
! #: fortran/interface.cc:5346
  #, gcc-internal-format
  msgid "%qs at %L overrides a FUNCTION and must also be a FUNCTION"
  msgstr ""
  
! #: fortran/interface.cc:5354
  #, gcc-internal-format
  msgid "Result mismatch for the overriding procedure %qs at %L: %s"
  msgstr ""
  
! #: fortran/interface.cc:5365
  #, gcc-internal-format
  msgid "%qs at %L overrides a PUBLIC procedure and must not be PRIVATE"
  msgstr ""
  
! #: fortran/interface.cc:5395
  #, gcc-internal-format
  msgid "Dummy argument %qs of %qs at %L should be named %qs as to match the corresponding argument of the overridden procedure"
  msgstr ""
  
! #: fortran/interface.cc:5406
  #, gcc-internal-format
  msgid "Argument mismatch for the overriding procedure %qs at %L: %s"
  msgstr ""
  
! #: fortran/interface.cc:5415
  #, gcc-internal-format
  msgid "%qs at %L must have the same number of formal arguments as the overridden procedure"
  msgstr ""
  
! #: fortran/interface.cc:5424
  #, gcc-internal-format
  msgid "%qs at %L overrides a NOPASS binding and must also be NOPASS"
  msgstr ""
  
! #: fortran/interface.cc:5435
  #, gcc-internal-format
  msgid "%qs at %L overrides a binding with PASS and must also be PASS"
  msgstr ""
  
! #: fortran/interface.cc:5442
  #, gcc-internal-format
  msgid "Passed-object dummy argument of %qs at %L must be at the same position as the passed-object dummy argument of the overridden procedure"
  msgstr ""
  
! #: fortran/interface.cc:5463
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO dummy argument at %L must be of type %s"
  msgstr ""
  
! #: fortran/interface.cc:5470
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO dummy argument at %L must be of KIND = %d"
  msgstr ""
  
! #: fortran/interface.cc:5477
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO dummy argument at %L must be a scalar"
  msgstr ""
  
! #: fortran/interface.cc:5481
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO dummy argument at %L must be an ASSUMED SHAPE ARRAY"
  msgstr ""
  
! #: fortran/interface.cc:5485
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO character argument at %L must have assumed length"
  msgstr ""
  
! #: fortran/interface.cc:5489
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO dummy argument at %L must have INTENT %s"
  msgstr ""
  
! #: fortran/interface.cc:5547 fortran/interface.cc:5593
  #, gcc-internal-format, gfc-internal-format
  msgid "Alternate return at %L is not permitted in a DTIO procedure"
  msgstr ""
  
! #: fortran/interface.cc:5559
  #, gcc-internal-format
  msgid "DTIO procedure %qs at %L must be a subroutine"
  msgstr ""
  
! #: fortran/interface.cc:5571
  #, gcc-internal-format
  msgid "Too few dummy arguments in DTIO procedure %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:5578
  #, gcc-internal-format
  msgid "Too many dummy arguments in DTIO procedure %qs at %L"
  msgstr ""
--- 75011,75794 ----
  msgid "Expecting %<END INTERFACE OPERATOR (.%s.)%> at %C"
  msgstr ""
  
! #: fortran/interface.cc:468
  #, gcc-internal-format
  msgid "Expecting %<END INTERFACE %s%> at %C"
  msgstr ""
  
! #: fortran/interface.cc:664
  #, gcc-internal-format
  msgid "gfc_compare_derived_types: invalid derived type"
  msgstr ""
  
! #: fortran/interface.cc:952
  #, gcc-internal-format, gfc-internal-format
  msgid "Alternate return cannot appear in operator interface at %L"
  msgstr ""
  
! #: fortran/interface.cc:981
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment operator interface at %L must have two arguments"
  msgstr ""
  
! #: fortran/interface.cc:984
  #, gcc-internal-format, gfc-internal-format
  msgid "Operator interface at %L has the wrong number of arguments"
  msgstr ""
  
! #: fortran/interface.cc:997
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment operator interface at %L must be a SUBROUTINE"
  msgstr ""
  
! #: fortran/interface.cc:1015
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment operator interface at %L must not redefine an INTRINSIC type assignment"
  msgstr ""
  
! #: fortran/interface.cc:1024
  #, gcc-internal-format, gfc-internal-format
  msgid "Intrinsic operator interface at %L must be a FUNCTION"
  msgstr ""
  
! #: fortran/interface.cc:1035
  #, gcc-internal-format, gfc-internal-format
  msgid "First argument of defined assignment at %L must be INTENT(OUT) or INTENT(INOUT)"
  msgstr ""
  
! #: fortran/interface.cc:1042
  #, gcc-internal-format, gfc-internal-format
  msgid "Second argument of defined assignment at %L must be INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:1051 fortran/resolve.cc:19136
  #, gcc-internal-format, gfc-internal-format
  msgid "First argument of operator interface at %L must be INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:1058 fortran/resolve.cc:19154
  #, gcc-internal-format, gfc-internal-format
  msgid "Second argument of operator interface at %L must be INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:1163
  #, gcc-internal-format, gfc-internal-format
  msgid "Operator interface at %L conflicts with intrinsic interface"
  msgstr ""
  
! #: fortran/interface.cc:1532 fortran/interface.cc:1604
  #, gcc-internal-format, gfc-internal-format
  msgid "check_dummy_characteristics: Unexpected result %i of gfc_dep_compare_expr"
  msgstr ""
  
! #: fortran/interface.cc:1729
  #, gcc-internal-format, gfc-internal-format
  msgid "Possible character length mismatch in function result between %L and %L"
  msgstr ""
  
! #: fortran/interface.cc:1738
  #, gcc-internal-format, gfc-internal-format
  msgid "check_result_characteristics (1): Unexpected result %i of gfc_dep_compare_expr"
  msgstr ""
  
! #: fortran/interface.cc:1785
  #, gcc-internal-format, gfc-internal-format
  msgid "check_result_characteristics (2): Unexpected result %i of gfc_dep_compare_expr"
  msgstr ""
  
! #: fortran/interface.cc:1982
  #, gcc-internal-format
  msgid "Procedure %qs in %s at %L has no explicit interface; did you mean %qs?"
  msgstr ""
  
! #: fortran/interface.cc:1987
  #, gcc-internal-format
  msgid "Procedure %qs in %s at %L has no explicit interface"
  msgstr ""
  
! #: fortran/interface.cc:1991
  #, gcc-internal-format
  msgid "Procedure %qs in %s at %L is neither function nor subroutine; did you mean %qs?"
  msgstr ""
  
! #: fortran/interface.cc:1995
  #, gcc-internal-format
  msgid "Procedure %qs in %s at %L is neither function nor subroutine"
  msgstr ""
  
! #: fortran/interface.cc:2007
  #, gcc-internal-format, gfc-internal-format
  msgid "In %s at %L procedures must be either all SUBROUTINEs or all FUNCTIONs"
  msgstr ""
  
! #: fortran/interface.cc:2011
  #, gcc-internal-format, gfc-internal-format
  msgid "In %s at %L procedures must be all FUNCTIONs as the generic name is also the name of a derived type"
  msgstr ""
  
! #: fortran/interface.cc:2019
  #, gcc-internal-format
  msgid "Internal procedure %qs in %s at %L"
  msgstr ""
  
! #: fortran/interface.cc:2076 fortran/interface.cc:2081
  #, gcc-internal-format
  msgid "Ambiguous interfaces in %s for %qs at %L and %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:2086
  #, gcc-internal-format
  msgid "Although not referenced, %qs has ambiguous interfaces at %L"
  msgstr ""
  
! #: fortran/interface.cc:2124
  #, gcc-internal-format
  msgid "%qs at %L is not a module procedure"
  msgstr ""
  
! #: fortran/interface.cc:2329
  #, gcc-internal-format
  msgid "The assumed-rank array at %L requires that the dummy argument %qs has assumed-rank"
  msgstr ""
  
! #: fortran/interface.cc:2332
  #, gcc-internal-format
  msgid "Rank mismatch in argument %qs at %L (scalar and rank-%d)"
  msgstr ""
  
! #: fortran/interface.cc:2335
  #, gcc-internal-format
  msgid "Rank mismatch in argument %qs at %L (rank-%d and scalar)"
  msgstr ""
  
! #: fortran/interface.cc:2338
  #, gcc-internal-format
  msgid "Rank mismatch in argument %qs at %L (rank-%d and rank-%d)"
  msgstr ""
  
! #: fortran/interface.cc:2350
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank mismatch between actual argument at %L and actual argument at %L (scalar and rank-%d)"
  msgstr ""
  
! #: fortran/interface.cc:2354
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank mismatch between actual argument at %L and actual argument at %L (rank-%d and scalar)"
  msgstr ""
  
! #: fortran/interface.cc:2358
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank mismatch between actual argument at %L and actual argument at %L (rank-%d and rank-%d)"
  msgstr ""
  
! #: fortran/interface.cc:2482
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid procedure argument at %L"
  msgstr ""
  
! #: fortran/interface.cc:2494 fortran/interface.cc:2510
  #, gcc-internal-format, gfc-internal-format
  msgid "Interface mismatch in dummy procedure at %L conflicts with %L: %s"
  msgstr ""
  
! #: fortran/interface.cc:2498 fortran/interface.cc:2514
! #: fortran/interface.cc:2611
  #, gcc-internal-format
  msgid "Interface mismatch in dummy procedure %qs at %L: %s"
  msgstr ""
  
! #: fortran/interface.cc:2533
  #, gcc-internal-format
  msgid "Passing global subroutine %qs declared at %L as function at %L"
  msgstr ""
  
! #: fortran/interface.cc:2540
  #, gcc-internal-format
  msgid "Passing global function %qs declared at %L as subroutine at %L"
  msgstr ""
  
! #: fortran/interface.cc:2553
  #, gcc-internal-format, gfc-internal-format
  msgid "Mismatch between subroutine and function at %L"
  msgstr ""
  
! #: fortran/interface.cc:2569
  #, gcc-internal-format
  msgid "Type mismatch at %L passing global function %qs declared at %L (%s/%s)"
  msgstr ""
  
! #: fortran/interface.cc:2622
  #, gcc-internal-format
  msgid "Actual argument to contiguous pointer dummy %qs at %L must be simply contiguous"
  msgstr ""
  
! #: fortran/interface.cc:2645
  #, gcc-internal-format, gfc-internal-format
  msgid "Type mismatch between actual argument at %L and actual argument at %L (%s/%s)."
  msgstr ""
  
! #: fortran/interface.cc:2655
  #, gcc-internal-format
  msgid "Type mismatch in argument %qs at %L; passed %s to %s"
  msgstr ""
  
! #: fortran/interface.cc:2665
  #, gcc-internal-format
  msgid "Assumed-type actual argument at %L requires that dummy argument %qs is of assumed type"
  msgstr ""
  
! #: fortran/interface.cc:2679
  #, gcc-internal-format
  msgid "Assumed-type actual argument at %L corresponding to assumed-rank dummy argument %qs must be assumed-shape or assumed-rank"
  msgstr ""
  
! #: fortran/interface.cc:2696
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must be polymorphic"
  msgstr ""
  
! #: fortran/interface.cc:2706
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must have the same declared type"
  msgstr ""
  
! #: fortran/interface.cc:2721
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must be unlimited polymorphic since the formal argument is a pointer or allocatable unlimited polymorphic entity [F2008: 12.5.2.5]"
  msgstr ""
  
! #: fortran/interface.cc:2737
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must be a coarray"
  msgstr ""
  
! #: fortran/interface.cc:2759
  #, gcc-internal-format
  msgid "Corank mismatch in argument %qs at %L (%d and %d)"
  msgstr ""
  
! #: fortran/interface.cc:2777
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must be simply contiguous or an element of such an array"
  msgstr ""
  
! #: fortran/interface.cc:2792
  #, gcc-internal-format
  msgid "Actual argument to non-INTENT(INOUT) dummy %qs at %L, which is LOCK_TYPE or has a LOCK_TYPE component"
  msgstr ""
  
! #: fortran/interface.cc:2807
  #, gcc-internal-format
  msgid "Actual argument to non-INTENT(INOUT) dummy %qs at %L, which is EVENT_TYPE or has a EVENT_TYPE component"
  msgstr ""
  
! #: fortran/interface.cc:2826
  #, gcc-internal-format
  msgid "Dummy argument %qs has to be a pointer, assumed-shape or assumed-rank array without CONTIGUOUS attribute - as actual argument at %L is not simply contiguous and both are ASYNCHRONOUS or VOLATILE"
  msgstr ""
  
! #: fortran/interface.cc:2839
  #, gcc-internal-format
  msgid "Passing coarray at %L to allocatable, noncoarray, INTENT(OUT) dummy argument %qs"
  msgstr ""
  
! #: fortran/interface.cc:2846
  #, gcc-internal-format
  msgid "Passing coarray at %L to allocatable, noncoarray dummy argument %qs, which is invalid if the allocation status is modified"
  msgstr ""
  
! #: fortran/interface.cc:2933
  #, gcc-internal-format
  msgid "Polymorphic scalar passed to array dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:2944
  #, gcc-internal-format, gfc-internal-format
  msgid "Element of assumed-shape or pointer array as actual argument at %L cannot correspond to actual argument at %L"
  msgstr ""
  
! #: fortran/interface.cc:2949
  #, gcc-internal-format
  msgid "Element of assumed-shape or pointer array passed to array dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:2962
  #, gcc-internal-format
  msgid "Extension: Scalar non-default-kind, non-C_CHAR-kind CHARACTER actual argument with array dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:2970
  #, gcc-internal-format
  msgid "Fortran 2003: Scalar CHARACTER actual argument with array dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3359
  #, gcc-internal-format
  msgid "Keyword argument %qs at %L is invalid in a statement function"
  msgstr ""
  
! #: fortran/interface.cc:3382
  #, gcc-internal-format
  msgid "Keyword argument %qs at %L is not in the procedure; did you mean %qs?"
  msgstr ""
  
! #: fortran/interface.cc:3386
  #, gcc-internal-format
  msgid "Keyword argument %qs at %L is not in the procedure"
  msgstr ""
  
! #: fortran/interface.cc:3395
  #, gcc-internal-format
  msgid "Keyword argument %qs at %L is already associated with another actual argument"
  msgstr ""
  
! #: fortran/interface.cc:3405
  #, gcc-internal-format, gfc-internal-format
  msgid "More actual than formal arguments in procedure call at %L"
  msgstr ""
  
! #: fortran/interface.cc:3418
  #, gcc-internal-format, gfc-internal-format
  msgid "Missing alternate return specifier in subroutine call at %L"
  msgstr ""
  
! #: fortran/interface.cc:3436
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected alternate return specifier in subroutine call at %L"
  msgstr ""
  
! #: fortran/interface.cc:3459
  #, gcc-internal-format
  msgid "Intrinsic %<NULL()%> without %<MOLD%> argument at %L passed to assumed-rank dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3472
  #, gcc-internal-format
  msgid "The assumed-size dummy %qs is being passed at %L to an assumed-rank dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3483
  #, gcc-internal-format
  msgid "Intrinsic %<NULL()%> without %<MOLD%> argument at %L passed to assumed-length dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3523
  #, gcc-internal-format
  msgid "Unexpected NULL() intrinsic at %L to dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3526
  #, gcc-internal-format
  msgid "Fortran 2008: Null pointer at %L to non-pointer dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3552
  #, gcc-internal-format, gfc-internal-format
  msgid "Actual argument at %L to assumed-type dummy has type parameters or is of derived type with type-bound or FINAL procedures"
  msgstr ""
  
! #: fortran/interface.cc:3564
  #, gcc-internal-format, gfc-internal-format
  msgid "Unlimited polymorphic actual argument at %L is not matched with either an unlimited polymorphic or assumed type dummy argument"
  msgstr ""
  
! #: fortran/interface.cc:3588
  #, gcc-internal-format
  msgid "Character length mismatch (%ld/%ld) between actual argument and pointer or allocatable dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3595
  #, gcc-internal-format
  msgid "Character length mismatch (%ld/%ld) between actual argument and assumed-shape dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3610
  #, gcc-internal-format
  msgid "Actual argument at %L to allocatable or pointer dummy argument %qs must have a deferred length type parameter if and only if the dummy has one"
  msgstr ""
  
! #: fortran/interface.cc:3633
  #, gcc-internal-format
  msgid "Character length of actual argument shorter than of dummy argument %qs (%lu/%lu) at %L"
  msgstr ""
  
! #: fortran/interface.cc:3643 fortran/interface.cc:3648
  #, gcc-internal-format
  msgid "Actual argument contains too few elements for dummy argument %qs (%lu/%lu) at %L"
  msgstr ""
  
! #: fortran/interface.cc:3674
  #, gcc-internal-format
  msgid "Expected a procedure pointer for argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3691
  #, gcc-internal-format
  msgid "Expected a procedure for argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3758
  #, gcc-internal-format
  msgid "Actual argument for %qs cannot be an assumed-size array at %L"
  msgstr ""
  
! #: fortran/interface.cc:3787
  #, gcc-internal-format
  msgid "Actual argument to assumed-rank INTENT(OUT) dummy %qs at %L cannot be of unknown size"
  msgstr ""
  
! #: fortran/interface.cc:3802
  #, fuzzy, gcc-internal-format
  msgid "Actual argument for %qs at %L must be a pointer"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: fortran/interface.cc:3811
  #, gcc-internal-format
  msgid "Fortran 2008: Non-pointer actual argument at %L to pointer dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3820
  #, gcc-internal-format
  msgid "Actual argument for %qs at %L must be a pointer or a valid target for the dummy pointer in a pointer assignment statement"
  msgstr ""
  
! #: fortran/interface.cc:3834
  #, gcc-internal-format
  msgid "Coindexed actual argument at %L to pointer dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3848
  #, gcc-internal-format
  msgid "Coindexed actual argument at %L to allocatable dummy %qs requires INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:3863
  #, gcc-internal-format
  msgid "Coindexed ASYNCHRONOUS or VOLATILE actual argument at %L requires that dummy %qs has neither ASYNCHRONOUS nor VOLATILE"
  msgstr ""
  
! #: fortran/interface.cc:3878
  #, gcc-internal-format
  msgid "Coindexed actual argument at %L with allocatable ultimate component to dummy %qs requires either VALUE or INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:3891
  #, gcc-internal-format
  msgid "Actual CLASS array argument for %qs must be a full array at %L"
  msgstr ""
  
! #: fortran/interface.cc:3902
  #, gcc-internal-format
  msgid "Actual argument for %qs must be ALLOCATABLE at %L"
  msgstr ""
  
! #: fortran/interface.cc:3913
  #, gcc-internal-format
  msgid "Actual argument for %qs at %L is a function result and the dummy argument is ALLOCATABLE"
  msgstr ""
  
! #: fortran/interface.cc:3951
  #, gcc-internal-format
  msgid "Array-section actual argument with vector subscripts at %L is incompatible with INTENT(OUT), INTENT(INOUT), VOLATILE or ASYNCHRONOUS attribute of the dummy argument %qs"
  msgstr ""
  
! #: fortran/interface.cc:3971
  #, gcc-internal-format
  msgid "Assumed-shape actual argument at %L is incompatible with the non-assumed-shape dummy argument %qs due to VOLATILE attribute"
  msgstr ""
  
! #: fortran/interface.cc:3989
  #, gcc-internal-format
  msgid "Array-section actual argument at %L is incompatible with the non-assumed-shape dummy argument %qs due to VOLATILE attribute"
  msgstr ""
  
! #: fortran/interface.cc:4010
  #, gcc-internal-format
  msgid "Pointer-array actual argument at %L requires an assumed-shape or pointer-array dummy argument %qs due to VOLATILE attribute"
  msgstr ""
  
! #: fortran/interface.cc:4038
  #, gcc-internal-format, gfc-internal-format
  msgid "Missing alternate return spec in subroutine call at %L"
  msgstr ""
  
! #: fortran/interface.cc:4051
  #, gcc-internal-format
  msgid "Missing actual argument for argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:4179
  #, gcc-internal-format
  msgid "compare_actual_expr(): Bad component code"
  msgstr ""
  
! #: fortran/interface.cc:4208
  #, gcc-internal-format
  msgid "check_some_aliasing(): List mismatch"
  msgstr ""
  
! #: fortran/interface.cc:4234
  #, gcc-internal-format
  msgid "check_some_aliasing(): corrupted data"
  msgstr ""
  
! #: fortran/interface.cc:4244
  #, gcc-internal-format
  msgid "Same actual argument associated with INTENT(%s) argument %qs and INTENT(%s) argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:4274
  #, gcc-internal-format
  msgid "check_intents(): List mismatch"
  msgstr ""
  
! #: fortran/interface.cc:4294
  #, gcc-internal-format, gfc-internal-format
  msgid "Procedure argument at %L is local to a PURE procedure and has the POINTER attribute"
  msgstr ""
  
! #: fortran/interface.cc:4306
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed actual argument at %L in PURE procedure is passed to an INTENT(%s) argument"
  msgstr ""
  
! #: fortran/interface.cc:4316
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed actual argument at %L in PURE procedure is passed to a POINTER dummy argument"
  msgstr ""
  
! #: fortran/interface.cc:4327
  #, gcc-internal-format
  msgid "Coindexed polymorphic actual argument at %L is passed polymorphic dummy argument %qs"
  msgstr ""
  
! #: fortran/interface.cc:4369
  #, gcc-internal-format
  msgid "Procedure %qs called at %L is not explicitly declared; did you mean %qs?"
  msgstr ""
  
! #: fortran/interface.cc:4373 fortran/interface.cc:4383
  #, gcc-internal-format
  msgid "Procedure %qs called at %L is not explicitly declared"
  msgstr ""
  
! #: fortran/interface.cc:4379
  #, gcc-internal-format
  msgid "Procedure %qs called with an implicit interface at %L"
  msgstr ""
  
! #: fortran/interface.cc:4392
  #, gcc-internal-format
  msgid "The pointer object %qs at %L must have an explicit function interface or be declared as array"
  msgstr ""
  
! #: fortran/interface.cc:4400
  #, gcc-internal-format
  msgid "The allocatable object %qs at %L must have an explicit function interface or be declared as array"
  msgstr ""
  
! #: fortran/interface.cc:4408
  #, gcc-internal-format
  msgid "Allocatable function %qs at %L must have an explicit function interface"
  msgstr ""
  
! #: fortran/interface.cc:4425
  #, gcc-internal-format, gfc-internal-format
  msgid "Explicit interface required for polymorphic argument at %L"
  msgstr ""
  
! #: fortran/interface.cc:4434
  #, gcc-internal-format
  msgid "Keyword argument requires explicit interface for procedure %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:4443
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type argument %s at %L requires an explicit interface"
  msgstr ""
  
! #: fortran/interface.cc:4458
  #, gcc-internal-format
  msgid "Actual argument of LOCK_TYPE or with LOCK_TYPE component at %L requires an explicit interface for procedure %qs"
  msgstr ""
  
! #: fortran/interface.cc:4473
  #, gcc-internal-format
  msgid "Actual argument of EVENT_TYPE or with EVENT_TYPE component at %L requires an explicit interface for procedure %qs"
  msgstr ""
  
! #: fortran/interface.cc:4483
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD argument to NULL required at %L"
  msgstr ""
  
! #: fortran/interface.cc:4491
  #, gcc-internal-format, gfc-internal-format
  msgid "Passing intrinsic NULL as actual argument at %L requires an explicit interface"
  msgstr ""
  
! #: fortran/interface.cc:4501
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank argument requires an explicit interface at %L"
  msgstr ""
  
! #: fortran/interface.cc:4543
  #, gcc-internal-format
  msgid "Procedure pointer component %qs called with an implicit interface at %L"
  msgstr ""
  
! #: fortran/interface.cc:4554
  #, gcc-internal-format
  msgid "Keyword argument requires explicit interface for procedure pointer component %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:4639
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD= required in NULL() argument at %L: Ambiguity between specific functions %s and %s"
  msgstr ""
  
! #: fortran/interface.cc:4709
  #, fuzzy, gcc-internal-format
  #| msgid "failed to find class '%s'"
  msgid "Unable to find symbol %qs"
  msgstr "Ð½Ðµ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½ ÐºÐ»Ð°Ñ� \"%s\""
  
! #: fortran/interface.cc:5100
  #, gcc-internal-format
  msgid "Entity %qs at %L is already present in the interface"
  msgstr ""
  
! #: fortran/interface.cc:5217
  #, gcc-internal-format
  msgid "gfc_add_interface(): Bad interface type"
  msgstr ""
  
! #: fortran/interface.cc:5311
  #, gcc-internal-format
  msgid "Cannot overwrite GENERIC %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:5323
  #, gcc-internal-format
  msgid "%qs at %L overrides a procedure binding declared NON_OVERRIDABLE"
  msgstr ""
  
! #: fortran/interface.cc:5331
  #, gcc-internal-format
  msgid "%qs at %L must not be DEFERRED as it overrides a non-DEFERRED binding"
  msgstr ""
  
! #: fortran/interface.cc:5339
  #, gcc-internal-format
  msgid "%qs at %L overrides a PURE procedure and must also be PURE"
  msgstr ""
  
! #: fortran/interface.cc:5348
  #, gcc-internal-format
  msgid "%qs at %L overrides an ELEMENTAL procedure and must also be ELEMENTAL"
  msgstr ""
  
! #: fortran/interface.cc:5354
  #, gcc-internal-format
  msgid "%qs at %L overrides a non-ELEMENTAL procedure and must not be ELEMENTAL, either"
  msgstr ""
  
! #: fortran/interface.cc:5363
  #, gcc-internal-format
  msgid "%qs at %L overrides a SUBROUTINE and must also be a SUBROUTINE"
  msgstr ""
  
! #: fortran/interface.cc:5374
  #, gcc-internal-format
  msgid "%qs at %L overrides a FUNCTION and must also be a FUNCTION"
  msgstr ""
  
! #: fortran/interface.cc:5382
  #, gcc-internal-format
  msgid "Result mismatch for the overriding procedure %qs at %L: %s"
  msgstr ""
  
! #: fortran/interface.cc:5393
  #, gcc-internal-format
  msgid "%qs at %L overrides a PUBLIC procedure and must not be PRIVATE"
  msgstr ""
  
! #: fortran/interface.cc:5423
  #, gcc-internal-format
  msgid "Dummy argument %qs of %qs at %L should be named %qs as to match the corresponding argument of the overridden procedure"
  msgstr ""
  
! #: fortran/interface.cc:5434
  #, gcc-internal-format
  msgid "Argument mismatch for the overriding procedure %qs at %L: %s"
  msgstr ""
  
! #: fortran/interface.cc:5443
  #, gcc-internal-format
  msgid "%qs at %L must have the same number of formal arguments as the overridden procedure"
  msgstr ""
  
! #: fortran/interface.cc:5452
  #, gcc-internal-format
  msgid "%qs at %L overrides a NOPASS binding and must also be NOPASS"
  msgstr ""
  
! #: fortran/interface.cc:5463
  #, gcc-internal-format
  msgid "%qs at %L overrides a binding with PASS and must also be PASS"
  msgstr ""
  
! #: fortran/interface.cc:5470
  #, gcc-internal-format
  msgid "Passed-object dummy argument of %qs at %L must be at the same position as the passed-object dummy argument of the overridden procedure"
  msgstr ""
  
! #: fortran/interface.cc:5491
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO dummy argument at %L must be of type %s"
  msgstr ""
  
! #: fortran/interface.cc:5498
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO dummy argument at %L must be of KIND = %d"
  msgstr ""
  
! #: fortran/interface.cc:5505
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO dummy argument at %L must be a scalar"
  msgstr ""
  
! #: fortran/interface.cc:5509
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO dummy argument at %L must be an ASSUMED SHAPE ARRAY"
  msgstr ""
  
! #: fortran/interface.cc:5513
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO character argument at %L must have assumed length"
  msgstr ""
  
! #: fortran/interface.cc:5517
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO dummy argument at %L must have INTENT %s"
  msgstr ""
  
! #: fortran/interface.cc:5575 fortran/interface.cc:5621
  #, gcc-internal-format, gfc-internal-format
  msgid "Alternate return at %L is not permitted in a DTIO procedure"
  msgstr ""
  
! #: fortran/interface.cc:5587
  #, gcc-internal-format
  msgid "DTIO procedure %qs at %L must be a subroutine"
  msgstr ""
  
! #: fortran/interface.cc:5599
  #, gcc-internal-format
  msgid "Too few dummy arguments in DTIO procedure %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:5606
  #, gcc-internal-format
  msgid "Too many dummy arguments in DTIO procedure %qs at %L"
  msgstr ""
*************** msgstr "Ð¿ÐµÑ€Ð°ÑžÑ‚Ð²Ð°Ñ€Ñ�Ð½ÑŒÐ½Ðµ Ð·
*** 75887,75893 ****
  #. Use of -fdec-char-conversions allows assignment of character data
  #. to non-character variables.  This not permitted for nonconstant
  #. strings.
! #: fortran/intrinsic.cc:5573 fortran/resolve.cc:12312
  #, gcc-internal-format, gfc-internal-format
  msgid "Cannot convert %s to %s at %L"
  msgstr ""
--- 75978,75984 ----
  #. Use of -fdec-char-conversions allows assignment of character data
  #. to non-character variables.  This not permitted for nonconstant
  #. strings.
! #: fortran/intrinsic.cc:5573 fortran/resolve.cc:12302
  #, gcc-internal-format, gfc-internal-format
  msgid "Cannot convert %s to %s at %L"
  msgstr ""
*************** msgstr ""
*** 76068,76600 ****
  msgid "The H format specifier at %L is a Fortran 95 deleted feature"
  msgstr ""
  
! #: fortran/io.cc:1231 fortran/io.cc:1293
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Missing class name"
! msgid "Missing comma at %L"
! msgstr "ÐŸÑ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½Ð° Ð½Ð°Ð·Ð²Ð° ÐºÐ»Ð°Ñ�Ð°"
  
! #: fortran/io.cc:1349
  #, gcc-internal-format, gfc-internal-format
  msgid "Extraneous characters in format at %L"
  msgstr ""
  
! #: fortran/io.cc:1371
  #, gcc-internal-format, gfc-internal-format
  msgid "Format statement in module main block at %C"
  msgstr ""
  
! #: fortran/io.cc:1380
  #, gcc-internal-format, gfc-internal-format
  msgid "FORMAT statement at %C cannot appear within an INTERFACE"
  msgstr ""
  
! #: fortran/io.cc:1386
  #, gcc-internal-format, gfc-internal-format
  msgid "Missing format label at %C"
  msgstr ""
  
! #: fortran/io.cc:1441 fortran/io.cc:1472 fortran/io.cc:1552
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Invalid value for %s specification at %C"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ñ� Ñ�Ð¿ÐµÑ†Ñ‹Ñ„Ñ–ÐºÐ°Ñ†Ñ‹Ñ�! ÐŸÐ°Ð¼Ñ‹Ð»ÐºÐ° Ñž cc."
  
! #: fortran/io.cc:1447 fortran/io.cc:1478 fortran/io.cc:1634 fortran/io.cc:1647
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Duplicate %s specification at %C"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: fortran/io.cc:1489
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s cannot be INTENT(IN) at %C"
  msgstr ""
  
! #: fortran/io.cc:1497
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s cannot be assigned in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:1527
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting a variable at %L"
  msgstr ""
  
! #: fortran/io.cc:1558
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "duplicate label declaration `%s'"
  msgid "Duplicate %s label specification at %C"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ñ‹ `%s'"
  
! #: fortran/io.cc:1578 fortran/io.cc:1595 fortran/io.cc:1616
  #, gcc-internal-format
  msgid "%s at %C is a DEC extension, enable with %<-fdec%>"
  msgstr ""
  
! #: fortran/io.cc:1669
  #, gcc-internal-format, gfc-internal-format
  msgid "Constant expression in FORMAT tag at %L must be of type default CHARACTER"
  msgstr ""
  
! #: fortran/io.cc:1694
  #, gcc-internal-format, gfc-internal-format
  msgid "FORMAT tag at %L cannot be a zero-sized array"
  msgstr ""
  
! #: fortran/io.cc:1735
  #, gcc-internal-format, gfc-internal-format
  msgid "FORMAT tag at %L must be of type default-kind CHARACTER or of INTEGER"
  msgstr ""
  
! #: fortran/io.cc:1741
  #, gcc-internal-format, gfc-internal-format
  msgid "ASSIGNED variable in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1746
  #, gcc-internal-format
  msgid "Variable %qs at %L has not been assigned a format label"
  msgstr ""
  
! #: fortran/io.cc:1753
  #, gcc-internal-format
  msgid "Scalar %qs in FORMAT tag at %L is not an ASSIGNED variable"
  msgstr ""
  
! #: fortran/io.cc:1768
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character non-Hollerith in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1772
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1778
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character assumed shape array element in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1785
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character assumed size array element in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1792
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character pointer array element in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1818
  #, gcc-internal-format, gfc-internal-format
  msgid "%s tag at %L must be of type %s"
  msgstr ""
  
! #: fortran/io.cc:1825
  #, gcc-internal-format, gfc-internal-format
  msgid "%s tag at %L must be a character string of default kind"
  msgstr ""
  
! #: fortran/io.cc:1832
  #, gcc-internal-format, gfc-internal-format
  msgid "%s tag at %L must be scalar"
  msgstr ""
  
! #: fortran/io.cc:1838
  #, gcc-internal-format, gfc-internal-format
  msgid "IOMSG tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1846
  #, gcc-internal-format, gfc-internal-format
  msgid "Fortran 95 requires default INTEGER in %s tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1855
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-default LOGICAL kind in %s tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1862
  #, gcc-internal-format, gfc-internal-format
  msgid "NEWUNIT specifier at %L"
  msgstr ""
  
! #: fortran/io.cc:1880
  #, gcc-internal-format, gfc-internal-format
  msgid "CONVERT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:2096
  #, gcc-internal-format
  msgid "Fortran 2003: %s specifier in %s statement at %L has value %qs"
  msgstr ""
  
! #: fortran/io.cc:2104 fortran/io.cc:2131
  #, gcc-internal-format
  msgid "%s specifier in %s statement at %L has value %qs"
  msgstr ""
  
! #: fortran/io.cc:2123
  #, gcc-internal-format
  msgid "Extension: %s specifier in %s statement at %L has value %qs"
  msgstr ""
  
! #: fortran/io.cc:2145 fortran/io.cc:2153
  #, gcc-internal-format
  msgid "%s specifier in %s statement at %L has invalid value %qs"
  msgstr ""
  
! #: fortran/io.cc:2210
  #, gcc-internal-format, gfc-internal-format
  msgid "ACTION type conflicts with READONLY specifier at %L"
  msgstr ""
  
! #: fortran/io.cc:2226
  #, gcc-internal-format, gfc-internal-format
  msgid "ASYNCHRONOUS= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2245 fortran/io.cc:3919
  #, gcc-internal-format, gfc-internal-format
  msgid "BLANK= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2273 fortran/io.cc:3897
  #, gcc-internal-format, gfc-internal-format
  msgid "DECIMAL= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2305
  #, gcc-internal-format, gfc-internal-format
  msgid "ENCODING= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2356 fortran/io.cc:3964
  #, gcc-internal-format, gfc-internal-format
  msgid "ROUND= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2386
  #, gcc-internal-format, gfc-internal-format
  msgid "SIGN= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2407
  #, gcc-internal-format, gfc-internal-format
  msgid "RECL in OPEN statement at %L must be positive"
  msgstr ""
  
! #: fortran/io.cc:2432
  #, gcc-internal-format
  msgid "The STATUS specified in OPEN statement at %L is %qs and no FILE specifier is present"
  msgstr ""
  
! #: fortran/io.cc:2443
  #, gcc-internal-format, gfc-internal-format
  msgid "The STATUS specified in OPEN statement at %L cannot have the value SCRATCH if a FILE specifier is present"
  msgstr ""
  
! #: fortran/io.cc:2454
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT specifier not allowed with NEWUNIT at %L"
  msgstr ""
  
! #: fortran/io.cc:2465
  #, gcc-internal-format, gfc-internal-format
  msgid "NEWUNIT specifier must have FILE= or STATUS='scratch' at %L"
  msgstr ""
  
! #: fortran/io.cc:2472
  #, gcc-internal-format, gfc-internal-format
  msgid "OPEN statement at %L must have UNIT or NEWUNIT specified"
  msgstr ""
  
! #: fortran/io.cc:2507
  #, gcc-internal-format, gfc-internal-format
  msgid "%sspecifier at %L not allowed in OPEN statement for unformatted I/O"
  msgstr ""
  
! #: fortran/io.cc:2515
  #, gcc-internal-format, gfc-internal-format
  msgid "RECL specifier not allowed in OPEN statement at %L for stream I/O"
  msgstr ""
  
! #: fortran/io.cc:2528
  #, gcc-internal-format, gfc-internal-format
  msgid "POSITION specifier in OPEN statement at %L only allowed for stream or sequential ACCESS"
  msgstr ""
  
! #: fortran/io.cc:2581
  #, gcc-internal-format, gfc-internal-format
  msgid "OPEN statement not allowed in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:2689
  #, gcc-internal-format, gfc-internal-format
  msgid "CLOSE statement not allowed in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:2715
  #, gcc-internal-format, gfc-internal-format
  msgid "CLOSE statement at %L requires a UNIT number"
  msgstr ""
  
! #: fortran/io.cc:2723
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT number in CLOSE statement at %L must be non-negative"
  msgstr ""
  
! #: fortran/io.cc:2846 fortran/match.cc:3471
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement not allowed in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:2876
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT number missing in statement at %L"
  msgstr ""
  
! #: fortran/io.cc:2887 fortran/io.cc:3377
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT number in statement at %L must be non-negative"
  msgstr ""
  
! #: fortran/io.cc:2920
  #, gcc-internal-format, gfc-internal-format
  msgid "FLUSH statement at %C"
  msgstr ""
  
! #: fortran/io.cc:2961
  #, gcc-internal-format, gfc-internal-format
  msgid "Missing format with default unit at %C"
  msgstr ""
  
! #: fortran/io.cc:2981
  #, gcc-internal-format, gfc-internal-format
  msgid "Duplicate UNIT specification at %C"
  msgstr ""
  
! #: fortran/io.cc:3055
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Duplicate format specification at %C"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: fortran/io.cc:3096
  #, gcc-internal-format
  msgid "Symbol %qs in namelist %qs is INTENT(IN) at %C"
  msgstr ""
  
! #: fortran/io.cc:3132
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Duplicate NML specification at %C"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: fortran/io.cc:3141
  #, gcc-internal-format
  msgid "Symbol %qs at %C must be a NAMELIST group name"
  msgstr ""
  
! #: fortran/io.cc:3207
  #, gcc-internal-format, gfc-internal-format
  msgid "END tag at %C not allowed in output statement"
  msgstr ""
  
! #: fortran/io.cc:3303
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT not specified at %L"
  msgstr ""
  
! #: fortran/io.cc:3310
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT specification at %L must not be a character PARAMETER"
  msgstr ""
  
! #: fortran/io.cc:3323
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT specification at %L must be an INTEGER expression or a CHARACTER variable"
  msgstr ""
  
! #: fortran/io.cc:3345
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid form of WRITE statement at %L, UNIT required"
  msgstr ""
  
! #: fortran/io.cc:3356
  #, gcc-internal-format, gfc-internal-format
  msgid "Internal unit with vector subscript at %L"
  msgstr ""
  
! #: fortran/io.cc:3370
  #, gcc-internal-format, gfc-internal-format
  msgid "External IO UNIT cannot be an array at %L"
  msgstr ""
  
! #: fortran/io.cc:3400
  #, gcc-internal-format
  msgid "NAMELIST %qs in READ statement at %L contains the symbol %qs which may not appear in a variable definition context"
  msgstr ""
  
! #: fortran/io.cc:3412
  #, gcc-internal-format
  msgid "NAMELIST object %qs in namelist %qs at %L is polymorphic and requires a defined input/output procedure"
  msgstr ""
  
! #: fortran/io.cc:3422 fortran/resolve.cc:16941
  #, gcc-internal-format
  msgid "NAMELIST object %qs in namelist %qs at %L with ALLOCATABLE or POINTER components"
  msgstr ""
  
! #: fortran/io.cc:3430
  #, gcc-internal-format
  msgid "NAMELIST object %qs in namelist %qs at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedure"
  msgstr ""
  
! #: fortran/io.cc:3441
  #, gcc-internal-format, gfc-internal-format
  msgid "Comma before i/o item list at %L"
  msgstr ""
  
! #: fortran/io.cc:3451
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "label `%s' used but not defined"
  msgid "ERR tag label %d at %L not defined"
  msgstr "Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ð° `%s' Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ñ‹Ð²Ð°ÐµÑ†Ñ†Ð°, Ð°Ð»Ðµ Ð½Ñ� Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°"
  
! #: fortran/io.cc:3463
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "label `%s' used but not defined"
  msgid "END tag label %d at %L not defined"
  msgstr "Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ð° `%s' Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ñ‹Ð²Ð°ÐµÑ†Ñ†Ð°, Ð°Ð»Ðµ Ð½Ñ� Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°"
  
! #: fortran/io.cc:3475
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "label `%s' used but not defined"
  msgid "EOR tag label %d at %L not defined"
  msgstr "Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ð° `%s' Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ñ‹Ð²Ð°ÐµÑ†Ñ†Ð°, Ð°Ð»Ðµ Ð½Ñ� Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°"
  
! #: fortran/io.cc:3485
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "label `%s' used but not defined"
  msgid "FORMAT label %d at %L not defined"
  msgstr "Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ð° `%s' Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ñ‹Ð²Ð°ÐµÑ†Ñ†Ð°, Ð°Ð»Ðµ Ð½Ñ� Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°"
  
! #: fortran/io.cc:3516
  #, gcc-internal-format
  msgid "io_kind_name(): bad I/O-kind"
  msgstr ""
  
! #: fortran/io.cc:3605
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in I/O iterator at %C"
  msgstr ""
  
! #: fortran/io.cc:3637
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting variable in READ statement at %C"
  msgstr ""
  
! #: fortran/io.cc:3643
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting variable or io-implied-do in READ statement at %L"
  msgstr ""
  
! #: fortran/io.cc:3652
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting variable or io-implied-do at %L"
  msgstr ""
  
! #: fortran/io.cc:3661
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected expression in %s statement at %C"
  msgstr ""
  
! #: fortran/io.cc:3666
  #, gcc-internal-format, gfc-internal-format
  msgid "BOZ literal constant at %L cannot appear in an output IO list"
  msgstr ""
  
! #: fortran/io.cc:3814
  #, gcc-internal-format, gfc-internal-format
  msgid "Internal file at %L with namelist"
  msgstr ""
  
! #: fortran/io.cc:3829
  #, gcc-internal-format, gfc-internal-format
  msgid "IO UNIT in %s statement at %L must be an internal file in a PURE procedure"
  msgstr ""
  
! #: fortran/io.cc:3942
  #, gcc-internal-format, gfc-internal-format
  msgid "PAD= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:4011
  #, gcc-internal-format, gfc-internal-format
  msgid "DELIM= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:4185
  #, gcc-internal-format, gfc-internal-format
  msgid "PRINT namelist at %C is an extension"
  msgstr ""
  
! #: fortran/io.cc:4207
  #, gcc-internal-format, gfc-internal-format
  msgid "Comma after * at %C not allowed without I/O list"
  msgstr ""
  
! #: fortran/io.cc:4380
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected comma in I/O list at %C"
  msgstr ""
  
! #: fortran/io.cc:4447
  #, gcc-internal-format, gfc-internal-format
  msgid "PRINT statement at %C not allowed within PURE procedure"
  msgstr ""
  
! #: fortran/io.cc:4609
  #, gcc-internal-format, gfc-internal-format
  msgid "NULL() near %L cannot appear in INQUIRE statement"
  msgstr ""
  
! #: fortran/io.cc:4621 fortran/io.cc:4683
  #, gcc-internal-format, gfc-internal-format
  msgid "INQUIRE statement not allowed in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:4649
  #, gcc-internal-format, gfc-internal-format
  msgid "IOLENGTH tag invalid in INQUIRE statement at %C"
  msgstr ""
  
! #: fortran/io.cc:4659 fortran/trans-io.cc:1364
  #, gcc-internal-format, gfc-internal-format
  msgid "INQUIRE statement at %L cannot contain both FILE and UNIT specifiers"
  msgstr ""
  
! #: fortran/io.cc:4666
  #, gcc-internal-format, gfc-internal-format
  msgid "INQUIRE statement at %L requires either FILE or UNIT specifier"
  msgstr ""
  
! #: fortran/io.cc:4676
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT number in INQUIRE statement at %L cannot be %d"
  msgstr ""
  
! #: fortran/io.cc:4691
  #, gcc-internal-format, gfc-internal-format
  msgid "INQUIRE statement at %L requires a PENDING= specifier with the ID= specifier"
  msgstr ""
  
! #: fortran/io.cc:4867
  #, gcc-internal-format, gfc-internal-format
  msgid "WAIT at %C not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:4873
  #, gcc-internal-format, gfc-internal-format
  msgid "WAIT statement not allowed in PURE procedure at %C"
  msgstr ""
--- 76159,76690 ----
  msgid "The H format specifier at %L is a Fortran 95 deleted feature"
  msgstr ""
  
! #: fortran/io.cc:1232 fortran/io.cc:1295
! #, gcc-internal-format, gfc-internal-format
! msgid "Missing comma in FORMAT string at %L"
! msgstr ""
  
! #: fortran/io.cc:1351
  #, gcc-internal-format, gfc-internal-format
  msgid "Extraneous characters in format at %L"
  msgstr ""
  
! #: fortran/io.cc:1373
  #, gcc-internal-format, gfc-internal-format
  msgid "Format statement in module main block at %C"
  msgstr ""
  
! #: fortran/io.cc:1382
  #, gcc-internal-format, gfc-internal-format
  msgid "FORMAT statement at %C cannot appear within an INTERFACE"
  msgstr ""
  
! #: fortran/io.cc:1388
  #, gcc-internal-format, gfc-internal-format
  msgid "Missing format label at %C"
  msgstr ""
  
! #: fortran/io.cc:1443 fortran/io.cc:1474 fortran/io.cc:1554
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Invalid value for %s specification at %C"
  msgstr "Ð�ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ð°Ñ� Ñ�Ð¿ÐµÑ†Ñ‹Ñ„Ñ–ÐºÐ°Ñ†Ñ‹Ñ�! ÐŸÐ°Ð¼Ñ‹Ð»ÐºÐ° Ñž cc."
  
! #: fortran/io.cc:1449 fortran/io.cc:1480 fortran/io.cc:1636 fortran/io.cc:1649
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Duplicate %s specification at %C"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: fortran/io.cc:1491
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s cannot be INTENT(IN) at %C"
  msgstr ""
  
! #: fortran/io.cc:1499
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s cannot be assigned in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:1529
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting a variable at %L"
  msgstr ""
  
! #: fortran/io.cc:1560
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "duplicate label declaration `%s'"
  msgid "Duplicate %s label specification at %C"
  msgstr "Ð¿Ð°ÑžÑ‚Ð¾Ñ€Ð½Ð°Ðµ Ð°Ð±Ð²Ñ�ÑˆÑ‡Ñ�Ð½ÑŒÐ½Ðµ Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ñ‹ `%s'"
  
! #: fortran/io.cc:1580 fortran/io.cc:1597 fortran/io.cc:1618
  #, gcc-internal-format
  msgid "%s at %C is a DEC extension, enable with %<-fdec%>"
  msgstr ""
  
! #: fortran/io.cc:1671
  #, gcc-internal-format, gfc-internal-format
  msgid "Constant expression in FORMAT tag at %L must be of type default CHARACTER"
  msgstr ""
  
! #: fortran/io.cc:1696
  #, gcc-internal-format, gfc-internal-format
  msgid "FORMAT tag at %L cannot be a zero-sized array"
  msgstr ""
  
! #: fortran/io.cc:1737
  #, gcc-internal-format, gfc-internal-format
  msgid "FORMAT tag at %L must be of type default-kind CHARACTER or of INTEGER"
  msgstr ""
  
! #: fortran/io.cc:1743
  #, gcc-internal-format, gfc-internal-format
  msgid "ASSIGNED variable in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1748
  #, gcc-internal-format
  msgid "Variable %qs at %L has not been assigned a format label"
  msgstr ""
  
! #: fortran/io.cc:1755
  #, gcc-internal-format
  msgid "Scalar %qs in FORMAT tag at %L is not an ASSIGNED variable"
  msgstr ""
  
! #: fortran/io.cc:1770
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character non-Hollerith in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1774
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1780
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character assumed shape array element in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1787
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character assumed size array element in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1794
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character pointer array element in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1820
  #, gcc-internal-format, gfc-internal-format
  msgid "%s tag at %L must be of type %s"
  msgstr ""
  
! #: fortran/io.cc:1827
  #, gcc-internal-format, gfc-internal-format
  msgid "%s tag at %L must be a character string of default kind"
  msgstr ""
  
! #: fortran/io.cc:1834
  #, gcc-internal-format, gfc-internal-format
  msgid "%s tag at %L must be scalar"
  msgstr ""
  
! #: fortran/io.cc:1840
  #, gcc-internal-format, gfc-internal-format
  msgid "IOMSG tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1848
  #, gcc-internal-format, gfc-internal-format
  msgid "Fortran 95 requires default INTEGER in %s tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1857
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-default LOGICAL kind in %s tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1864
  #, gcc-internal-format, gfc-internal-format
  msgid "NEWUNIT specifier at %L"
  msgstr ""
  
! #: fortran/io.cc:1882
  #, gcc-internal-format, gfc-internal-format
  msgid "CONVERT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:2098
  #, gcc-internal-format
  msgid "Fortran 2003: %s specifier in %s statement at %L has value %qs"
  msgstr ""
  
! #: fortran/io.cc:2106 fortran/io.cc:2133
  #, gcc-internal-format
  msgid "%s specifier in %s statement at %L has value %qs"
  msgstr ""
  
! #: fortran/io.cc:2125
  #, gcc-internal-format
  msgid "Extension: %s specifier in %s statement at %L has value %qs"
  msgstr ""
  
! #: fortran/io.cc:2147 fortran/io.cc:2155
  #, gcc-internal-format
  msgid "%s specifier in %s statement at %L has invalid value %qs"
  msgstr ""
  
! #: fortran/io.cc:2212
  #, gcc-internal-format, gfc-internal-format
  msgid "ACTION type conflicts with READONLY specifier at %L"
  msgstr ""
  
! #: fortran/io.cc:2228
  #, gcc-internal-format, gfc-internal-format
  msgid "ASYNCHRONOUS= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2247 fortran/io.cc:3921
  #, gcc-internal-format, gfc-internal-format
  msgid "BLANK= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2275 fortran/io.cc:3899
  #, gcc-internal-format, gfc-internal-format
  msgid "DECIMAL= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2307
  #, gcc-internal-format, gfc-internal-format
  msgid "ENCODING= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2358 fortran/io.cc:3966
  #, gcc-internal-format, gfc-internal-format
  msgid "ROUND= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2388
  #, gcc-internal-format, gfc-internal-format
  msgid "SIGN= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2409
  #, gcc-internal-format, gfc-internal-format
  msgid "RECL in OPEN statement at %L must be positive"
  msgstr ""
  
! #: fortran/io.cc:2434
  #, gcc-internal-format
  msgid "The STATUS specified in OPEN statement at %L is %qs and no FILE specifier is present"
  msgstr ""
  
! #: fortran/io.cc:2445
  #, gcc-internal-format, gfc-internal-format
  msgid "The STATUS specified in OPEN statement at %L cannot have the value SCRATCH if a FILE specifier is present"
  msgstr ""
  
! #: fortran/io.cc:2456
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT specifier not allowed with NEWUNIT at %L"
  msgstr ""
  
! #: fortran/io.cc:2467
  #, gcc-internal-format, gfc-internal-format
  msgid "NEWUNIT specifier must have FILE= or STATUS='scratch' at %L"
  msgstr ""
  
! #: fortran/io.cc:2474
  #, gcc-internal-format, gfc-internal-format
  msgid "OPEN statement at %L must have UNIT or NEWUNIT specified"
  msgstr ""
  
! #: fortran/io.cc:2509
  #, gcc-internal-format, gfc-internal-format
  msgid "%sspecifier at %L not allowed in OPEN statement for unformatted I/O"
  msgstr ""
  
! #: fortran/io.cc:2517
  #, gcc-internal-format, gfc-internal-format
  msgid "RECL specifier not allowed in OPEN statement at %L for stream I/O"
  msgstr ""
  
! #: fortran/io.cc:2530
  #, gcc-internal-format, gfc-internal-format
  msgid "POSITION specifier in OPEN statement at %L only allowed for stream or sequential ACCESS"
  msgstr ""
  
! #: fortran/io.cc:2583
  #, gcc-internal-format, gfc-internal-format
  msgid "OPEN statement not allowed in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:2691
  #, gcc-internal-format, gfc-internal-format
  msgid "CLOSE statement not allowed in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:2717
  #, gcc-internal-format, gfc-internal-format
  msgid "CLOSE statement at %L requires a UNIT number"
  msgstr ""
  
! #: fortran/io.cc:2725
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT number in CLOSE statement at %L must be non-negative"
  msgstr ""
  
! #: fortran/io.cc:2848 fortran/match.cc:3472
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement not allowed in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:2878
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT number missing in statement at %L"
  msgstr ""
  
! #: fortran/io.cc:2889 fortran/io.cc:3379
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT number in statement at %L must be non-negative"
  msgstr ""
  
! #: fortran/io.cc:2922
  #, gcc-internal-format, gfc-internal-format
  msgid "FLUSH statement at %C"
  msgstr ""
  
! #: fortran/io.cc:2963
  #, gcc-internal-format, gfc-internal-format
  msgid "Missing format with default unit at %C"
  msgstr ""
  
! #: fortran/io.cc:2983
  #, gcc-internal-format, gfc-internal-format
  msgid "Duplicate UNIT specification at %C"
  msgstr ""
  
! #: fortran/io.cc:3057
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Duplicate format specification at %C"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: fortran/io.cc:3098
  #, gcc-internal-format
  msgid "Symbol %qs in namelist %qs is INTENT(IN) at %C"
  msgstr ""
  
! #: fortran/io.cc:3134
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Duplicate NML specification at %C"
  msgstr "Ð½Ñ�Ð¼Ð° Ð¿Ð°Ð¿Ñ�Ñ€Ñ�Ð´Ð½Ñ�Ð³Ð° Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� \"%s\""
  
! #: fortran/io.cc:3143
  #, gcc-internal-format
  msgid "Symbol %qs at %C must be a NAMELIST group name"
  msgstr ""
  
! #: fortran/io.cc:3209
  #, gcc-internal-format, gfc-internal-format
  msgid "END tag at %C not allowed in output statement"
  msgstr ""
  
! #: fortran/io.cc:3305
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT not specified at %L"
  msgstr ""
  
! #: fortran/io.cc:3312
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT specification at %L must not be a character PARAMETER"
  msgstr ""
  
! #: fortran/io.cc:3325
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT specification at %L must be an INTEGER expression or a CHARACTER variable"
  msgstr ""
  
! #: fortran/io.cc:3347
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid form of WRITE statement at %L, UNIT required"
  msgstr ""
  
! #: fortran/io.cc:3358
  #, gcc-internal-format, gfc-internal-format
  msgid "Internal unit with vector subscript at %L"
  msgstr ""
  
! #: fortran/io.cc:3372
  #, gcc-internal-format, gfc-internal-format
  msgid "External IO UNIT cannot be an array at %L"
  msgstr ""
  
! #: fortran/io.cc:3402
  #, gcc-internal-format
  msgid "NAMELIST %qs in READ statement at %L contains the symbol %qs which may not appear in a variable definition context"
  msgstr ""
  
! #: fortran/io.cc:3414
  #, gcc-internal-format
  msgid "NAMELIST object %qs in namelist %qs at %L is polymorphic and requires a defined input/output procedure"
  msgstr ""
  
! #: fortran/io.cc:3424 fortran/resolve.cc:16931
  #, gcc-internal-format
  msgid "NAMELIST object %qs in namelist %qs at %L with ALLOCATABLE or POINTER components"
  msgstr ""
  
! #: fortran/io.cc:3432
  #, gcc-internal-format
  msgid "NAMELIST object %qs in namelist %qs at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedure"
  msgstr ""
  
! #: fortran/io.cc:3443
  #, gcc-internal-format, gfc-internal-format
  msgid "Comma before i/o item list at %L"
  msgstr ""
  
! #: fortran/io.cc:3453
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "label `%s' used but not defined"
  msgid "ERR tag label %d at %L not defined"
  msgstr "Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ð° `%s' Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ñ‹Ð²Ð°ÐµÑ†Ñ†Ð°, Ð°Ð»Ðµ Ð½Ñ� Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°"
  
! #: fortran/io.cc:3465
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "label `%s' used but not defined"
  msgid "END tag label %d at %L not defined"
  msgstr "Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ð° `%s' Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ñ‹Ð²Ð°ÐµÑ†Ñ†Ð°, Ð°Ð»Ðµ Ð½Ñ� Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°"
  
! #: fortran/io.cc:3477
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "label `%s' used but not defined"
  msgid "EOR tag label %d at %L not defined"
  msgstr "Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ð° `%s' Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ñ‹Ð²Ð°ÐµÑ†Ñ†Ð°, Ð°Ð»Ðµ Ð½Ñ� Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°"
  
! #: fortran/io.cc:3487
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "label `%s' used but not defined"
  msgid "FORMAT label %d at %L not defined"
  msgstr "Ð°Ð´Ð¼ÐµÑ†Ñ–Ð½Ð° `%s' Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ñ‹Ð²Ð°ÐµÑ†Ñ†Ð°, Ð°Ð»Ðµ Ð½Ñ� Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°"
  
! #: fortran/io.cc:3518
  #, gcc-internal-format
  msgid "io_kind_name(): bad I/O-kind"
  msgstr ""
  
! #: fortran/io.cc:3607
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in I/O iterator at %C"
  msgstr ""
  
! #: fortran/io.cc:3639
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting variable in READ statement at %C"
  msgstr ""
  
! #: fortran/io.cc:3645
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting variable or io-implied-do in READ statement at %L"
  msgstr ""
  
! #: fortran/io.cc:3654
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting variable or io-implied-do at %L"
  msgstr ""
  
! #: fortran/io.cc:3663
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected expression in %s statement at %C"
  msgstr ""
  
! #: fortran/io.cc:3668
  #, gcc-internal-format, gfc-internal-format
  msgid "BOZ literal constant at %L cannot appear in an output IO list"
  msgstr ""
  
! #: fortran/io.cc:3816
  #, gcc-internal-format, gfc-internal-format
  msgid "Internal file at %L with namelist"
  msgstr ""
  
! #: fortran/io.cc:3831
  #, gcc-internal-format, gfc-internal-format
  msgid "IO UNIT in %s statement at %L must be an internal file in a PURE procedure"
  msgstr ""
  
! #: fortran/io.cc:3944
  #, gcc-internal-format, gfc-internal-format
  msgid "PAD= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:4013
  #, gcc-internal-format, gfc-internal-format
  msgid "DELIM= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:4187
  #, gcc-internal-format, gfc-internal-format
  msgid "PRINT namelist at %C is an extension"
  msgstr ""
  
! #: fortran/io.cc:4209
  #, gcc-internal-format, gfc-internal-format
  msgid "Comma after * at %C not allowed without I/O list"
  msgstr ""
  
! #: fortran/io.cc:4382
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected comma in I/O list at %C"
  msgstr ""
  
! #: fortran/io.cc:4449
  #, gcc-internal-format, gfc-internal-format
  msgid "PRINT statement at %C not allowed within PURE procedure"
  msgstr ""
  
! #: fortran/io.cc:4611
  #, gcc-internal-format, gfc-internal-format
  msgid "NULL() near %L cannot appear in INQUIRE statement"
  msgstr ""
  
! #: fortran/io.cc:4623 fortran/io.cc:4685
  #, gcc-internal-format, gfc-internal-format
  msgid "INQUIRE statement not allowed in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:4651
  #, gcc-internal-format, gfc-internal-format
  msgid "IOLENGTH tag invalid in INQUIRE statement at %C"
  msgstr ""
  
! #: fortran/io.cc:4661 fortran/trans-io.cc:1364
  #, gcc-internal-format, gfc-internal-format
  msgid "INQUIRE statement at %L cannot contain both FILE and UNIT specifiers"
  msgstr ""
  
! #: fortran/io.cc:4668
  #, gcc-internal-format, gfc-internal-format
  msgid "INQUIRE statement at %L requires either FILE or UNIT specifier"
  msgstr ""
  
! #: fortran/io.cc:4678
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT number in INQUIRE statement at %L cannot be %d"
  msgstr ""
  
! #: fortran/io.cc:4693
  #, gcc-internal-format, gfc-internal-format
  msgid "INQUIRE statement at %L requires a PENDING= specifier with the ID= specifier"
  msgstr ""
  
! #: fortran/io.cc:4869
  #, gcc-internal-format, gfc-internal-format
  msgid "WAIT at %C not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:4875
  #, gcc-internal-format, gfc-internal-format
  msgid "WAIT statement not allowed in PURE procedure at %C"
  msgstr ""
*************** msgstr ""
*** 76931,77430 ****
  msgid "Locality spec at %L"
  msgstr ""
  
! #: fortran/match.cc:3112
  #, gcc-internal-format
  msgid "Name %qs in %s statement at %C is unknown"
  msgstr ""
  
! #: fortran/match.cc:3120
  #, gcc-internal-format
  msgid "Name %qs in %s statement at %C is not a construct name"
  msgstr ""
  
! #: fortran/match.cc:3132
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C leaves CRITICAL construct"
  msgstr ""
  
  #. F2008, C821 & C845.
! #: fortran/match.cc:3140
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C leaves DO CONCURRENT construct"
  msgstr ""
  
! #: fortran/match.cc:3152
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C is not within a construct"
  msgstr ""
  
! #: fortran/match.cc:3155
  #, gcc-internal-format
  msgid "%s statement at %C is not within construct %qs"
  msgstr ""
  
! #: fortran/match.cc:3181
  #, gcc-internal-format
  msgid "CYCLE statement at %C is not applicable to non-loop construct %qs"
  msgstr ""
  
! #: fortran/match.cc:3186
  #, gcc-internal-format, gfc-internal-format
  msgid "EXIT statement with no do-construct-name at %C"
  msgstr ""
  
! #: fortran/match.cc:3192
  #, gcc-internal-format
  msgid "%s statement at %C is not applicable to construct %qs"
  msgstr ""
  
! #: fortran/match.cc:3200
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C leaving OpenACC structured block"
  msgstr ""
  
! #: fortran/match.cc:3201
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C leaving OpenMP structured block"
  msgstr ""
  
! #: fortran/match.cc:3241
  #, gcc-internal-format, gfc-internal-format
  msgid "EXIT statement at %C terminating !$ACC LOOP loop"
  msgstr ""
  
! #: fortran/match.cc:3247
  #, gcc-internal-format, gfc-internal-format
  msgid "CYCLE statement at %C to non-innermost tiled !$ACC LOOP loop"
  msgstr ""
  
! #: fortran/match.cc:3249
  #, gcc-internal-format, gfc-internal-format
  msgid "CYCLE statement at %C to non-innermost collapsed !$ACC LOOP loop"
  msgstr ""
  
! #: fortran/match.cc:3296
  #, gcc-internal-format, gfc-internal-format
  msgid "EXIT statement at %C terminating !$OMP DO loop"
  msgstr ""
  
! #: fortran/match.cc:3301
  #, gcc-internal-format, gfc-internal-format
  msgid "CYCLE statement at %C to non-innermost collapsed !$OMP DO loop"
  msgstr ""
  
! #: fortran/match.cc:3406
  #, gcc-internal-format, gfc-internal-format
  msgid "Blank required in %s statement near %C"
  msgstr ""
  
! #: fortran/match.cc:3429
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %C cannot be negative"
  msgstr ""
  
! #: fortran/match.cc:3435
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %C contains too many digits"
  msgstr ""
  
! #: fortran/match.cc:3451
  #, gcc-internal-format, gfc-internal-format
  msgid "QUIET= specifier for %s at %L"
  msgstr ""
  
! #: fortran/match.cc:3465
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C in PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:3481
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement STOP at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:3486
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement STOP at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:3498
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be a scalar CHARACTER constant or digit[digit[digit[digit[digit]]]]"
  msgstr ""
  
! #: fortran/match.cc:3510
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be a scalar default CHARACTER or INTEGER constant expression"
  msgstr ""
  
! #: fortran/match.cc:3517
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be either INTEGER or CHARACTER type"
  msgstr ""
  
! #: fortran/match.cc:3524
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be scalar"
  msgstr ""
  
! #: fortran/match.cc:3531
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be default character KIND=%d"
  msgstr ""
  
! #: fortran/match.cc:3538
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be default integer KIND=%d"
  msgstr ""
  
! #: fortran/match.cc:3550 fortran/resolve.cc:13453
  #, gcc-internal-format, gfc-internal-format
  msgid "QUIET specifier at %L must be a scalar LOGICAL"
  msgstr ""
  
! #: fortran/match.cc:3600
  #, gcc-internal-format, gfc-internal-format
  msgid "PAUSE statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3621
  #, gcc-internal-format, gfc-internal-format
  msgid "ERROR STOP statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3647
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement EVENT %s at %C in PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:3662
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement EVENT %s at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:3669
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement EVENT %s at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:3699 fortran/match.cc:4041 fortran/match.cc:4253
! #: fortran/match.cc:4805 fortran/match.cc:5177
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant STAT tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:3720 fortran/match.cc:4062 fortran/match.cc:4273
! #: fortran/match.cc:4837 fortran/match.cc:5202
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant ERRMSG tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:3741
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant UNTIL_COUNT tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:3807
  #, gcc-internal-format, gfc-internal-format
  msgid "EVENT POST statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3817
  #, gcc-internal-format, gfc-internal-format
  msgid "EVENT WAIT statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3829
  #, gcc-internal-format, gfc-internal-format
  msgid "FAIL IMAGE statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3853
  #, gcc-internal-format, gfc-internal-format
  msgid "FORM TEAM statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3892
  #, gcc-internal-format, gfc-internal-format
  msgid "CHANGE TEAM statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3922
  #, gcc-internal-format, gfc-internal-format
  msgid "END TEAM statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3946
  #, gcc-internal-format, gfc-internal-format
  msgid "SYNC TEAM statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3989
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement %s at %C in PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:4004
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement %s at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:4011
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement %s at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:4083
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant ACQUIRED_LOCK tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:4148
  #, gcc-internal-format, gfc-internal-format
  msgid "LOCK statement at %C"
  msgstr ""
  
! #: fortran/match.cc:4158
  #, gcc-internal-format, gfc-internal-format
  msgid "UNLOCK statement at %C"
  msgstr ""
  
! #: fortran/match.cc:4183
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement SYNC at %C in PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:4189
  #, gcc-internal-format, gfc-internal-format
  msgid "SYNC statement at %C"
  msgstr ""
  
! #: fortran/match.cc:4201
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement SYNC at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:4207
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement SYNC at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:4387
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "ASSIGN statement at %C"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: fortran/match.cc:4431
  #, gcc-internal-format, gfc-internal-format
  msgid "Assigned GOTO statement at %C"
  msgstr ""
  
! #: fortran/match.cc:4475 fortran/match.cc:4526
  #, gcc-internal-format, gfc-internal-format
  msgid "Statement label list in GOTO at %C cannot be empty"
  msgstr ""
  
! #: fortran/match.cc:4536
  #, gcc-internal-format, gfc-internal-format
  msgid "Computed GOTO at %C"
  msgstr ""
  
! #: fortran/match.cc:4611
  #, gcc-internal-format, gfc-internal-format
  msgid "Error in type-spec at %L"
  msgstr ""
  
! #: fortran/match.cc:4624
  #, gcc-internal-format, gfc-internal-format
  msgid "typespec in ALLOCATE at %L"
  msgstr ""
  
! #: fortran/match.cc:4647
  #, gcc-internal-format, gfc-internal-format
  msgid "The type parameter spec list in the type-spec at %L cannot contain DEFERRED parameters"
  msgstr ""
  
! #: fortran/match.cc:4677 fortran/match.cc:5115
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Unexpected constant at %C"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð°Ñ� Ñ�Ñ–Ð¼Ð²Ð°Ð»ÑŒÐ½Ð°Ñ� ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°"
  
! #: fortran/match.cc:4687
  #, gcc-internal-format, gfc-internal-format
  msgid "Bad allocate-object at %C for a PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:4702
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible allocate-object at %C for CHARACTER type-spec at %L"
  msgstr ""
  
! #: fortran/match.cc:4724
  #, gcc-internal-format, gfc-internal-format
  msgid "ALLOCATE of coarray at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:4729
  #, gcc-internal-format, gfc-internal-format
  msgid "ALLOCATE of coarray at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:4751
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L is neither a data pointer nor an allocatable variable"
  msgstr ""
  
! #: fortran/match.cc:4763
  #, gcc-internal-format, gfc-internal-format
  msgid "Type of entity at %L is type incompatible with typespec"
  msgstr ""
  
! #: fortran/match.cc:4771
  #, gcc-internal-format, gfc-internal-format
  msgid "Kind type parameter for entity at %L differs from the kind type parameter of the typespec"
  msgstr ""
  
! #: fortran/match.cc:4788
  #, gcc-internal-format, gfc-internal-format
  msgid "Shape specification for allocatable scalar at %C"
  msgstr ""
  
! #: fortran/match.cc:4815
  #, gcc-internal-format, gfc-internal-format
  msgid "STAT tag at %L cannot be a constant"
  msgstr ""
  
! #: fortran/match.cc:4831
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG tag at %L"
  msgstr ""
  
! #: fortran/match.cc:4854
  #, gcc-internal-format, gfc-internal-format
  msgid "SOURCE tag at %L"
  msgstr ""
  
! #: fortran/match.cc:4860
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant SOURCE tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:4867
  #, gcc-internal-format, gfc-internal-format
  msgid "SOURCE tag at %L conflicts with the typespec at %L"
  msgstr ""
  
! #: fortran/match.cc:4873
  #, gcc-internal-format, gfc-internal-format
  msgid "SOURCE tag at %L with more than a single allocate object"
  msgstr ""
  
! #: fortran/match.cc:4891
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD tag at %L"
  msgstr ""
  
! #: fortran/match.cc:4897
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant MOLD tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:4904
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD tag at %L conflicts with the typespec at %L"
  msgstr ""
  
! #: fortran/match.cc:4930
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD tag at %L conflicts with SOURCE tag at %L"
  msgstr ""
  
! #: fortran/match.cc:4938
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L with a deferred type parameter requires either a type-spec or SOURCE tag or a MOLD tag"
  msgstr ""
  
! #: fortran/match.cc:4950
  #, gcc-internal-format, gfc-internal-format
  msgid "Unlimited polymorphic allocate-object at %L requires either a type-spec or SOURCE tag or a MOLD tag"
  msgstr ""
  
! #: fortran/match.cc:5017
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer object at %C shall not be coindexed"
  msgstr ""
  
! #: fortran/match.cc:5032
  #, gcc-internal-format, gfc-internal-format
  msgid "NULLIFY does not allow bounds remapping for pointer object at %C"
  msgstr ""
  
! #: fortran/match.cc:5127
  #, gcc-internal-format, gfc-internal-format
  msgid "Illegal allocate-object at %C for a PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:5137
  #, gcc-internal-format, gfc-internal-format
  msgid "DEALLOCATE of coarray at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:5144
  #, gcc-internal-format, gfc-internal-format
  msgid "DEALLOCATE of coarray at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:5160
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %C is not a nonprocedure pointer nor an allocatable variable"
  msgstr ""
  
! #: fortran/match.cc:5197
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG at %L"
  msgstr ""
  
! #: fortran/match.cc:5254
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement RETURN at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:5260
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement RETURN at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:5269
  #, gcc-internal-format, gfc-internal-format
  msgid "Alternate RETURN statement at %C is only allowed within a SUBROUTINE"
  msgstr ""
  
! #: fortran/match.cc:5300
  #, gcc-internal-format, gfc-internal-format
  msgid "RETURN statement in main program at %C"
  msgstr ""
  
! #: fortran/match.cc:5328
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected component reference at %C"
  msgstr ""
  
! #: fortran/match.cc:5337
  #, gcc-internal-format, gfc-internal-format
  msgid "Junk after CALL at %C"
  msgstr ""
  
! #: fortran/match.cc:5348
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected type-bound procedure or procedure pointer component at %C"
  msgstr ""
  
! #: fortran/match.cc:5446
  #, gcc-internal-format, gfc-internal-format
  msgid "A BOZ literal constant at %L cannot appear as an actual argument in a subroutine reference"
  msgstr ""
  
! #: fortran/match.cc:5587
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in common block name at %C"
  msgstr ""
--- 77021,77520 ----
  msgid "Locality spec at %L"
  msgstr ""
  
! #: fortran/match.cc:3113
  #, gcc-internal-format
  msgid "Name %qs in %s statement at %C is unknown"
  msgstr ""
  
! #: fortran/match.cc:3121
  #, gcc-internal-format
  msgid "Name %qs in %s statement at %C is not a construct name"
  msgstr ""
  
! #: fortran/match.cc:3133
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C leaves CRITICAL construct"
  msgstr ""
  
  #. F2008, C821 & C845.
! #: fortran/match.cc:3141
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C leaves DO CONCURRENT construct"
  msgstr ""
  
! #: fortran/match.cc:3153
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C is not within a construct"
  msgstr ""
  
! #: fortran/match.cc:3156
  #, gcc-internal-format
  msgid "%s statement at %C is not within construct %qs"
  msgstr ""
  
! #: fortran/match.cc:3182
  #, gcc-internal-format
  msgid "CYCLE statement at %C is not applicable to non-loop construct %qs"
  msgstr ""
  
! #: fortran/match.cc:3187
  #, gcc-internal-format, gfc-internal-format
  msgid "EXIT statement with no do-construct-name at %C"
  msgstr ""
  
! #: fortran/match.cc:3193
  #, gcc-internal-format
  msgid "%s statement at %C is not applicable to construct %qs"
  msgstr ""
  
! #: fortran/match.cc:3201
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C leaving OpenACC structured block"
  msgstr ""
  
! #: fortran/match.cc:3202
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C leaving OpenMP structured block"
  msgstr ""
  
! #: fortran/match.cc:3242
  #, gcc-internal-format, gfc-internal-format
  msgid "EXIT statement at %C terminating !$ACC LOOP loop"
  msgstr ""
  
! #: fortran/match.cc:3248
  #, gcc-internal-format, gfc-internal-format
  msgid "CYCLE statement at %C to non-innermost tiled !$ACC LOOP loop"
  msgstr ""
  
! #: fortran/match.cc:3250
  #, gcc-internal-format, gfc-internal-format
  msgid "CYCLE statement at %C to non-innermost collapsed !$ACC LOOP loop"
  msgstr ""
  
! #: fortran/match.cc:3297
  #, gcc-internal-format, gfc-internal-format
  msgid "EXIT statement at %C terminating !$OMP DO loop"
  msgstr ""
  
! #: fortran/match.cc:3302
  #, gcc-internal-format, gfc-internal-format
  msgid "CYCLE statement at %C to non-innermost collapsed !$OMP DO loop"
  msgstr ""
  
! #: fortran/match.cc:3407
  #, gcc-internal-format, gfc-internal-format
  msgid "Blank required in %s statement near %C"
  msgstr ""
  
! #: fortran/match.cc:3430
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %C cannot be negative"
  msgstr ""
  
! #: fortran/match.cc:3436
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %C contains too many digits"
  msgstr ""
  
! #: fortran/match.cc:3452
  #, gcc-internal-format, gfc-internal-format
  msgid "QUIET= specifier for %s at %L"
  msgstr ""
  
! #: fortran/match.cc:3466
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C in PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:3482
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement STOP at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:3487
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement STOP at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:3499
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be a scalar CHARACTER constant or digit[digit[digit[digit[digit]]]]"
  msgstr ""
  
! #: fortran/match.cc:3511
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be a scalar default CHARACTER or INTEGER constant expression"
  msgstr ""
  
! #: fortran/match.cc:3518
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be either INTEGER or CHARACTER type"
  msgstr ""
  
! #: fortran/match.cc:3525
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be scalar"
  msgstr ""
  
! #: fortran/match.cc:3532
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be default character KIND=%d"
  msgstr ""
  
! #: fortran/match.cc:3539
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be default integer KIND=%d"
  msgstr ""
  
! #: fortran/match.cc:3551 fortran/resolve.cc:13443
  #, gcc-internal-format, gfc-internal-format
  msgid "QUIET specifier at %L must be a scalar LOGICAL"
  msgstr ""
  
! #: fortran/match.cc:3601
  #, gcc-internal-format, gfc-internal-format
  msgid "PAUSE statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3622
  #, gcc-internal-format, gfc-internal-format
  msgid "ERROR STOP statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3648
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement EVENT %s at %C in PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:3663
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement EVENT %s at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:3670
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement EVENT %s at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:3700 fortran/match.cc:4042 fortran/match.cc:4254
! #: fortran/match.cc:4806 fortran/match.cc:5178
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant STAT tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:3721 fortran/match.cc:4063 fortran/match.cc:4274
! #: fortran/match.cc:4838 fortran/match.cc:5203
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant ERRMSG tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:3742
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant UNTIL_COUNT tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:3808
  #, gcc-internal-format, gfc-internal-format
  msgid "EVENT POST statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3818
  #, gcc-internal-format, gfc-internal-format
  msgid "EVENT WAIT statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3830
  #, gcc-internal-format, gfc-internal-format
  msgid "FAIL IMAGE statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3854
  #, gcc-internal-format, gfc-internal-format
  msgid "FORM TEAM statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3893
  #, gcc-internal-format, gfc-internal-format
  msgid "CHANGE TEAM statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3923
  #, gcc-internal-format, gfc-internal-format
  msgid "END TEAM statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3947
  #, gcc-internal-format, gfc-internal-format
  msgid "SYNC TEAM statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3990
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement %s at %C in PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:4005
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement %s at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:4012
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement %s at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:4084
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant ACQUIRED_LOCK tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:4149
  #, gcc-internal-format, gfc-internal-format
  msgid "LOCK statement at %C"
  msgstr ""
  
! #: fortran/match.cc:4159
  #, gcc-internal-format, gfc-internal-format
  msgid "UNLOCK statement at %C"
  msgstr ""
  
! #: fortran/match.cc:4184
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement SYNC at %C in PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:4190
  #, gcc-internal-format, gfc-internal-format
  msgid "SYNC statement at %C"
  msgstr ""
  
! #: fortran/match.cc:4202
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement SYNC at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:4208
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement SYNC at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:4388
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "ASSIGN statement at %C"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: fortran/match.cc:4432
  #, gcc-internal-format, gfc-internal-format
  msgid "Assigned GOTO statement at %C"
  msgstr ""
  
! #: fortran/match.cc:4476 fortran/match.cc:4527
  #, gcc-internal-format, gfc-internal-format
  msgid "Statement label list in GOTO at %C cannot be empty"
  msgstr ""
  
! #: fortran/match.cc:4537
  #, gcc-internal-format, gfc-internal-format
  msgid "Computed GOTO at %C"
  msgstr ""
  
! #: fortran/match.cc:4612
  #, gcc-internal-format, gfc-internal-format
  msgid "Error in type-spec at %L"
  msgstr ""
  
! #: fortran/match.cc:4625
  #, gcc-internal-format, gfc-internal-format
  msgid "typespec in ALLOCATE at %L"
  msgstr ""
  
! #: fortran/match.cc:4648
  #, gcc-internal-format, gfc-internal-format
  msgid "The type parameter spec list in the type-spec at %L cannot contain DEFERRED parameters"
  msgstr ""
  
! #: fortran/match.cc:4678 fortran/match.cc:5116
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Unexpected constant at %C"
  msgstr "Ð¿ÑƒÑ�Ñ‚Ð°Ñ� Ñ�Ñ–Ð¼Ð²Ð°Ð»ÑŒÐ½Ð°Ñ� ÐºÐ°Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð°"
  
! #: fortran/match.cc:4688
  #, gcc-internal-format, gfc-internal-format
  msgid "Bad allocate-object at %C for a PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:4703
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible allocate-object at %C for CHARACTER type-spec at %L"
  msgstr ""
  
! #: fortran/match.cc:4725
  #, gcc-internal-format, gfc-internal-format
  msgid "ALLOCATE of coarray at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:4730
  #, gcc-internal-format, gfc-internal-format
  msgid "ALLOCATE of coarray at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:4752
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L is neither a data pointer nor an allocatable variable"
  msgstr ""
  
! #: fortran/match.cc:4764
  #, gcc-internal-format, gfc-internal-format
  msgid "Type of entity at %L is type incompatible with typespec"
  msgstr ""
  
! #: fortran/match.cc:4772
  #, gcc-internal-format, gfc-internal-format
  msgid "Kind type parameter for entity at %L differs from the kind type parameter of the typespec"
  msgstr ""
  
! #: fortran/match.cc:4789
  #, gcc-internal-format, gfc-internal-format
  msgid "Shape specification for allocatable scalar at %C"
  msgstr ""
  
! #: fortran/match.cc:4816
  #, gcc-internal-format, gfc-internal-format
  msgid "STAT tag at %L cannot be a constant"
  msgstr ""
  
! #: fortran/match.cc:4832
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG tag at %L"
  msgstr ""
  
! #: fortran/match.cc:4855
  #, gcc-internal-format, gfc-internal-format
  msgid "SOURCE tag at %L"
  msgstr ""
  
! #: fortran/match.cc:4861
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant SOURCE tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:4868
  #, gcc-internal-format, gfc-internal-format
  msgid "SOURCE tag at %L conflicts with the typespec at %L"
  msgstr ""
  
! #: fortran/match.cc:4874
  #, gcc-internal-format, gfc-internal-format
  msgid "SOURCE tag at %L with more than a single allocate object"
  msgstr ""
  
! #: fortran/match.cc:4892
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD tag at %L"
  msgstr ""
  
! #: fortran/match.cc:4898
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant MOLD tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:4905
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD tag at %L conflicts with the typespec at %L"
  msgstr ""
  
! #: fortran/match.cc:4931
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD tag at %L conflicts with SOURCE tag at %L"
  msgstr ""
  
! #: fortran/match.cc:4939
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L with a deferred type parameter requires either a type-spec or SOURCE tag or a MOLD tag"
  msgstr ""
  
! #: fortran/match.cc:4951
  #, gcc-internal-format, gfc-internal-format
  msgid "Unlimited polymorphic allocate-object at %L requires either a type-spec or SOURCE tag or a MOLD tag"
  msgstr ""
  
! #: fortran/match.cc:5018
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer object at %C shall not be coindexed"
  msgstr ""
  
! #: fortran/match.cc:5033
  #, gcc-internal-format, gfc-internal-format
  msgid "NULLIFY does not allow bounds remapping for pointer object at %C"
  msgstr ""
  
! #: fortran/match.cc:5128
  #, gcc-internal-format, gfc-internal-format
  msgid "Illegal allocate-object at %C for a PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:5138
  #, gcc-internal-format, gfc-internal-format
  msgid "DEALLOCATE of coarray at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:5145
  #, gcc-internal-format, gfc-internal-format
  msgid "DEALLOCATE of coarray at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:5161
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %C is not a nonprocedure pointer nor an allocatable variable"
  msgstr ""
  
! #: fortran/match.cc:5198
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG at %L"
  msgstr ""
  
! #: fortran/match.cc:5255
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement RETURN at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:5261
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement RETURN at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:5270
  #, gcc-internal-format, gfc-internal-format
  msgid "Alternate RETURN statement at %C is only allowed within a SUBROUTINE"
  msgstr ""
  
! #: fortran/match.cc:5301
  #, gcc-internal-format, gfc-internal-format
  msgid "RETURN statement in main program at %C"
  msgstr ""
  
! #: fortran/match.cc:5329
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected component reference at %C"
  msgstr ""
  
! #: fortran/match.cc:5338
  #, gcc-internal-format, gfc-internal-format
  msgid "Junk after CALL at %C"
  msgstr ""
  
! #: fortran/match.cc:5349
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected type-bound procedure or procedure pointer component at %C"
  msgstr ""
  
! #: fortran/match.cc:5447
  #, gcc-internal-format, gfc-internal-format
  msgid "A BOZ literal constant at %L cannot appear as an actual argument in a subroutine reference"
  msgstr ""
  
! #: fortran/match.cc:5588
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in common block name at %C"
  msgstr ""
*************** msgstr ""
*** 77432,77493 ****
  #. If we find an error, just print it and continue,
  #. cause it's just semantic, and we can see if there
  #. are more errors.
! #: fortran/match.cc:5662
  #, gcc-internal-format
  msgid "Variable %qs at %L in common block %qs at %C must be declared with a C interoperable kind since common block %qs is bind(c)"
  msgstr ""
  
! #: fortran/match.cc:5671
  #, gcc-internal-format
  msgid "Variable %qs in common block %qs at %C cannot be bind(c) since it is not global"
  msgstr ""
  
! #: fortran/match.cc:5678
  #, gcc-internal-format
  msgid "Symbol %qs at %C is already in a COMMON block"
  msgstr ""
  
! #: fortran/match.cc:5686
  #, gcc-internal-format
  msgid "Initialized symbol %qs at %C can only be COMMON in BLOCK DATA"
  msgstr ""
  
! #: fortran/match.cc:5697
  #, gcc-internal-format
  msgid "Symbol %qs at %C is USE associated from module %qs and cannot occur in COMMON"
  msgstr ""
  
! #: fortran/match.cc:5712
  #, gcc-internal-format
  msgid "Array specification for symbol %qs in COMMON at %C must be explicit"
  msgstr ""
  
! #: fortran/match.cc:5719
  #, gcc-internal-format
  msgid "Symbol %qs in COMMON at %C cannot be a coarray"
  msgstr ""
  
! #: fortran/match.cc:5729
  #, gcc-internal-format
  msgid "Symbol %qs in COMMON at %C cannot be a POINTER array"
  msgstr ""
  
! #: fortran/match.cc:5775
  #, gcc-internal-format
  msgid "Symbol %qs, in COMMON block %qs at %C is being indirectly equivalenced to another COMMON block %qs"
  msgstr ""
  
! #: fortran/match.cc:5837
  #, gcc-internal-format, gfc-internal-format
  msgid "BLOCK DATA construct at %L"
  msgstr ""
  
! #: fortran/match.cc:5950
  #, gcc-internal-format
  msgid "Namelist group name %qs at %C already has a basic type of %s"
  msgstr ""
  
! #: fortran/match.cc:5960
  #, gcc-internal-format
  msgid "Namelist group name %qs at %C already is USE associated and cannot be respecified."
  msgstr ""
--- 77522,77583 ----
  #. If we find an error, just print it and continue,
  #. cause it's just semantic, and we can see if there
  #. are more errors.
! #: fortran/match.cc:5663
  #, gcc-internal-format
  msgid "Variable %qs at %L in common block %qs at %C must be declared with a C interoperable kind since common block %qs is bind(c)"
  msgstr ""
  
! #: fortran/match.cc:5672
  #, gcc-internal-format
  msgid "Variable %qs in common block %qs at %C cannot be bind(c) since it is not global"
  msgstr ""
  
! #: fortran/match.cc:5679
  #, gcc-internal-format
  msgid "Symbol %qs at %C is already in a COMMON block"
  msgstr ""
  
! #: fortran/match.cc:5687
  #, gcc-internal-format
  msgid "Initialized symbol %qs at %C can only be COMMON in BLOCK DATA"
  msgstr ""
  
! #: fortran/match.cc:5698
  #, gcc-internal-format
  msgid "Symbol %qs at %C is USE associated from module %qs and cannot occur in COMMON"
  msgstr ""
  
! #: fortran/match.cc:5713
  #, gcc-internal-format
  msgid "Array specification for symbol %qs in COMMON at %C must be explicit"
  msgstr ""
  
! #: fortran/match.cc:5720
  #, gcc-internal-format
  msgid "Symbol %qs in COMMON at %C cannot be a coarray"
  msgstr ""
  
! #: fortran/match.cc:5730
  #, gcc-internal-format
  msgid "Symbol %qs in COMMON at %C cannot be a POINTER array"
  msgstr ""
  
! #: fortran/match.cc:5776
  #, gcc-internal-format
  msgid "Symbol %qs, in COMMON block %qs at %C is being indirectly equivalenced to another COMMON block %qs"
  msgstr ""
  
! #: fortran/match.cc:5838
  #, gcc-internal-format, gfc-internal-format
  msgid "BLOCK DATA construct at %L"
  msgstr ""
  
! #: fortran/match.cc:5951
  #, gcc-internal-format
  msgid "Namelist group name %qs at %C already has a basic type of %s"
  msgstr ""
  
! #: fortran/match.cc:5961
  #, gcc-internal-format
  msgid "Namelist group name %qs at %C already is USE associated and cannot be respecified."
  msgstr ""
*************** msgstr ""
*** 77495,77681 ****
  #. It is required that members of a namelist be declared
  #. before the namelist.  We check this by checking if the
  #. symbol has a defined type for IMPLICIT NONE.
! #: fortran/match.cc:5985
  #, gcc-internal-format
  msgid "Symbol %qs in namelist %qs at %C must be declared before the namelist is declared."
  msgstr ""
  
! #: fortran/match.cc:6005
  #, gcc-internal-format
  msgid "Derived type %qs at %L conflicts with namelist object %qs at %C"
  msgstr ""
  
! #: fortran/match.cc:6025
  #, gcc-internal-format
  msgid "Assumed size array %qs in namelist %qs at %C is not allowed"
  msgstr ""
  
! #: fortran/match.cc:6168
  #, gcc-internal-format, gfc-internal-format
  msgid "Derived type component %C is not a permitted EQUIVALENCE member"
  msgstr ""
  
! #: fortran/match.cc:6176
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference in EQUIVALENCE at %C cannot be an array section"
  msgstr ""
  
! #: fortran/match.cc:6209
  #, gcc-internal-format, gfc-internal-format
  msgid "EQUIVALENCE at %C requires two or more objects"
  msgstr ""
  
! #: fortran/match.cc:6223
  #, gcc-internal-format, gfc-internal-format
  msgid "Attempt to indirectly overlap COMMON blocks %s and %s by EQUIVALENCE at %C"
  msgstr ""
  
! #: fortran/match.cc:6236
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting a comma in EQUIVALENCE at %C"
  msgstr ""
  
! #: fortran/match.cc:6241
  #, gcc-internal-format, gfc-internal-format
  msgid "EQUIVALENCE statement at %C"
  msgstr ""
  
! #: fortran/match.cc:6334
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Invalid use of statement function argument at %L"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: fortran/match.cc:6401
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Statement function at %L is recursive"
  msgstr "Ð¼ÐµÑ‚ÐºÐ° \"%s\" Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°, Ð°Ð»Ðµ Ð½Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ð°ÐµÑ†Ñ†Ð°"
  
! #: fortran/match.cc:6407
  #, fuzzy, gcc-internal-format
  msgid "Statement function %qs at %L conflicts with function name"
  msgstr "Ð¼ÐµÑ‚ÐºÐ° \"%s\" Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°, Ð°Ð»Ðµ Ð½Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ð°ÐµÑ†Ñ†Ð°"
  
! #: fortran/match.cc:6421
  #, gcc-internal-format, gfc-internal-format
  msgid "Statement function at %L cannot appear within an INTERFACE"
  msgstr ""
  
! #: fortran/match.cc:6426
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Statement function at %C"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: fortran/match.cc:6553 fortran/match.cc:6571 fortran/match.cc:6592
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE selector at %L cannot be %s"
  msgstr ""
  
! #: fortran/match.cc:6602 fortran/match.cc:6608
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE selector at %L must be scalar"
  msgstr ""
  
! #: fortran/match.cc:6617
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected initialization expression in CASE at %C"
  msgstr ""
  
! #: fortran/match.cc:6649
  #, gcc-internal-format
  msgid "Expected block name %qs of SELECT construct at %C"
  msgstr ""
  
! #: fortran/match.cc:7029
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "SELECT TYPE at %C cannot appear in this scope"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: fortran/match.cc:7057
  #, gcc-internal-format, gfc-internal-format
  msgid "parse error in SELECT TYPE statement at %C"
  msgstr ""
  
! #: fortran/match.cc:7082
  #, gcc-internal-format, gfc-internal-format
  msgid "Selector in SELECT TYPE at %C is not a named variable; use associate-name=>"
  msgstr ""
  
! #: fortran/match.cc:7270
  #, gcc-internal-format, gfc-internal-format
  msgid "SELECT RANK statement at %C"
  msgstr ""
  
! #: fortran/match.cc:7311 fortran/match.cc:7365
  #, gcc-internal-format, gfc-internal-format
  msgid "The SELECT RANK selector at %C must be an assumed rank variable"
  msgstr ""
  
! #: fortran/match.cc:7375
  #, gcc-internal-format, gfc-internal-format
  msgid "parse error in SELECT RANK statement at %C"
  msgstr ""
  
! #: fortran/match.cc:7411
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected CASE statement at %C"
  msgstr ""
  
! #: fortran/match.cc:7463
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in CASE specification at %C"
  msgstr ""
  
! #: fortran/match.cc:7481
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected TYPE IS statement at %C"
  msgstr ""
  
! #: fortran/match.cc:7513
  #, gcc-internal-format, gfc-internal-format
  msgid "The type-spec shall not specify a sequence derived type or a type with the BIND attribute in SELECT TYPE at %C [F2003:C815]"
  msgstr ""
  
! #: fortran/match.cc:7524
  #, gcc-internal-format, gfc-internal-format
  msgid "All the LEN type parameters in the TYPE IS statement at %C must be ASSUMED"
  msgstr ""
  
! #: fortran/match.cc:7535
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in TYPE IS specification at %C"
  msgstr ""
  
! #: fortran/match.cc:7611
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in CLASS IS specification at %C"
  msgstr ""
  
! #: fortran/match.cc:7631
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected RANK statement at %C"
  msgstr ""
  
! #: fortran/match.cc:7677
  #, gcc-internal-format, gfc-internal-format
  msgid "The SELECT RANK CASE expression at %C must be a scalar, integer constant"
  msgstr ""
  
! #: fortran/match.cc:7686
  #, gcc-internal-format, gfc-internal-format
  msgid "The value of the SELECT RANK CASE expression at %C must not be less than zero or greater than %d"
  msgstr ""
  
! #: fortran/match.cc:7713
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in RANK specification at %C"
  msgstr ""
  
! #: fortran/match.cc:7835
  #, gcc-internal-format, gfc-internal-format
  msgid "ELSEWHERE statement at %C not enclosed in WHERE block"
  msgstr ""
  
! #: fortran/match.cc:7873
  #, gcc-internal-format
  msgid "Label %qs at %C doesn't match WHERE label %qs"
  msgstr ""
--- 77585,77771 ----
  #. It is required that members of a namelist be declared
  #. before the namelist.  We check this by checking if the
  #. symbol has a defined type for IMPLICIT NONE.
! #: fortran/match.cc:5986
  #, gcc-internal-format
  msgid "Symbol %qs in namelist %qs at %C must be declared before the namelist is declared."
  msgstr ""
  
! #: fortran/match.cc:6006
  #, gcc-internal-format
  msgid "Derived type %qs at %L conflicts with namelist object %qs at %C"
  msgstr ""
  
! #: fortran/match.cc:6026
  #, gcc-internal-format
  msgid "Assumed size array %qs in namelist %qs at %C is not allowed"
  msgstr ""
  
! #: fortran/match.cc:6169
  #, gcc-internal-format, gfc-internal-format
  msgid "Derived type component %C is not a permitted EQUIVALENCE member"
  msgstr ""
  
! #: fortran/match.cc:6177
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference in EQUIVALENCE at %C cannot be an array section"
  msgstr ""
  
! #: fortran/match.cc:6210
  #, gcc-internal-format, gfc-internal-format
  msgid "EQUIVALENCE at %C requires two or more objects"
  msgstr ""
  
! #: fortran/match.cc:6224
  #, gcc-internal-format, gfc-internal-format
  msgid "Attempt to indirectly overlap COMMON blocks %s and %s by EQUIVALENCE at %C"
  msgstr ""
  
! #: fortran/match.cc:6237
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting a comma in EQUIVALENCE at %C"
  msgstr ""
  
! #: fortran/match.cc:6242
  #, gcc-internal-format, gfc-internal-format
  msgid "EQUIVALENCE statement at %C"
  msgstr ""
  
! #: fortran/match.cc:6335
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Invalid use of statement function argument at %L"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: fortran/match.cc:6402
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Statement function at %L is recursive"
  msgstr "Ð¼ÐµÑ‚ÐºÐ° \"%s\" Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°, Ð°Ð»Ðµ Ð½Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ð°ÐµÑ†Ñ†Ð°"
  
! #: fortran/match.cc:6408
  #, fuzzy, gcc-internal-format
  msgid "Statement function %qs at %L conflicts with function name"
  msgstr "Ð¼ÐµÑ‚ÐºÐ° \"%s\" Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°, Ð°Ð»Ðµ Ð½Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ð°ÐµÑ†Ñ†Ð°"
  
! #: fortran/match.cc:6422
  #, gcc-internal-format, gfc-internal-format
  msgid "Statement function at %L cannot appear within an INTERFACE"
  msgstr ""
  
! #: fortran/match.cc:6427
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Statement function at %C"
  msgstr "Ð²ÐµÐ»ÑŒÐ¼Ñ– ÑˆÐ¼Ð°Ñ‚ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–"
  
! #: fortran/match.cc:6554 fortran/match.cc:6572 fortran/match.cc:6593
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE selector at %L cannot be %s"
  msgstr ""
  
! #: fortran/match.cc:6603 fortran/match.cc:6609
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE selector at %L must be scalar"
  msgstr ""
  
! #: fortran/match.cc:6618
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected initialization expression in CASE at %C"
  msgstr ""
  
! #: fortran/match.cc:6650
  #, gcc-internal-format
  msgid "Expected block name %qs of SELECT construct at %C"
  msgstr ""
  
! #: fortran/match.cc:7030
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "SELECT TYPE at %C cannot appear in this scope"
  msgstr "\"%s\" Ð½Ðµ Ð°Ð±Ð²ÐµÑˆÑ‡Ð°Ð½ (Ð¿ÐµÑ€ÑˆÐ°Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°Ð½Ð½Ðµ Ñž Ð³Ñ�Ñ‚Ð°Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ–)"
  
! #: fortran/match.cc:7058
  #, gcc-internal-format, gfc-internal-format
  msgid "parse error in SELECT TYPE statement at %C"
  msgstr ""
  
! #: fortran/match.cc:7083
  #, gcc-internal-format, gfc-internal-format
  msgid "Selector in SELECT TYPE at %C is not a named variable; use associate-name=>"
  msgstr ""
  
! #: fortran/match.cc:7271
  #, gcc-internal-format, gfc-internal-format
  msgid "SELECT RANK statement at %C"
  msgstr ""
  
! #: fortran/match.cc:7312 fortran/match.cc:7366
  #, gcc-internal-format, gfc-internal-format
  msgid "The SELECT RANK selector at %C must be an assumed rank variable"
  msgstr ""
  
! #: fortran/match.cc:7376
  #, gcc-internal-format, gfc-internal-format
  msgid "parse error in SELECT RANK statement at %C"
  msgstr ""
  
! #: fortran/match.cc:7412
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected CASE statement at %C"
  msgstr ""
  
! #: fortran/match.cc:7464
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in CASE specification at %C"
  msgstr ""
  
! #: fortran/match.cc:7482
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected TYPE IS statement at %C"
  msgstr ""
  
! #: fortran/match.cc:7514
  #, gcc-internal-format, gfc-internal-format
  msgid "The type-spec shall not specify a sequence derived type or a type with the BIND attribute in SELECT TYPE at %C [F2003:C815]"
  msgstr ""
  
! #: fortran/match.cc:7525
  #, gcc-internal-format, gfc-internal-format
  msgid "All the LEN type parameters in the TYPE IS statement at %C must be ASSUMED"
  msgstr ""
  
! #: fortran/match.cc:7536
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in TYPE IS specification at %C"
  msgstr ""
  
! #: fortran/match.cc:7612
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in CLASS IS specification at %C"
  msgstr ""
  
! #: fortran/match.cc:7632
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected RANK statement at %C"
  msgstr ""
  
! #: fortran/match.cc:7678
  #, gcc-internal-format, gfc-internal-format
  msgid "The SELECT RANK CASE expression at %C must be a scalar, integer constant"
  msgstr ""
  
! #: fortran/match.cc:7687
  #, gcc-internal-format, gfc-internal-format
  msgid "The value of the SELECT RANK CASE expression at %C must not be less than zero or greater than %d"
  msgstr ""
  
! #: fortran/match.cc:7714
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in RANK specification at %C"
  msgstr ""
  
! #: fortran/match.cc:7836
  #, gcc-internal-format, gfc-internal-format
  msgid "ELSEWHERE statement at %C not enclosed in WHERE block"
  msgstr ""
  
! #: fortran/match.cc:7874
  #, gcc-internal-format
  msgid "Label %qs at %C doesn't match WHERE label %qs"
  msgstr ""
*************** msgstr ""
*** 77716,77727 ****
  msgid "gfc_basic_typename(): Undefined type"
  msgstr ""
  
! #: fortran/misc.cc:218
  #, gcc-internal-format
  msgid "gfc_typename(): Undefined type"
  msgstr ""
  
! #: fortran/misc.cc:322
  #, gcc-internal-format
  msgid "gfc_code2string(): Bad code"
  msgstr ""
--- 77806,77817 ----
  msgid "gfc_basic_typename(): Undefined type"
  msgstr ""
  
! #: fortran/misc.cc:221
  #, gcc-internal-format
  msgid "gfc_typename(): Undefined type"
  msgstr ""
  
! #: fortran/misc.cc:325
  #, gcc-internal-format
  msgid "gfc_code2string(): Bad code"
  msgstr ""
*************** msgstr ""
*** 79270,79277 ****
  msgid "ORDER clause must not be used together with ORDERED at %L"
  msgstr ""
  
! #: fortran/openmp.cc:8630 fortran/openmp.cc:8641 fortran/resolve.cc:12090
! #: fortran/resolve.cc:13699
  #, gcc-internal-format, gfc-internal-format
  msgid "IF clause at %L requires a scalar LOGICAL expression"
  msgstr ""
--- 79360,79367 ----
  msgid "ORDER clause must not be used together with ORDERED at %L"
  msgstr ""
  
! #: fortran/openmp.cc:8630 fortran/openmp.cc:8641 fortran/resolve.cc:12080
! #: fortran/resolve.cc:13689
  #, gcc-internal-format, gfc-internal-format
  msgid "IF clause at %L requires a scalar LOGICAL expression"
  msgstr ""
*************** msgstr ""
*** 79409,79415 ****
  msgid "%qs appears more than once in %<allocate%> at %L"
  msgstr ""
  
! #: fortran/openmp.cc:9216 fortran/trans-openmp.cc:8309
  #, gcc-internal-format
  msgid "%qs specified in %<allocate%> clause at %L but not in an explicit privatization clause"
  msgstr ""
--- 79499,79505 ----
  msgid "%qs appears more than once in %<allocate%> at %L"
  msgstr ""
  
! #: fortran/openmp.cc:9216 fortran/trans-openmp.cc:8329
  #, gcc-internal-format
  msgid "%qs specified in %<allocate%> clause at %L but not in an explicit privatization clause"
  msgstr ""
*************** msgstr ""
*** 81195,81415 ****
  msgid "Syntax error in argument list at %C"
  msgstr ""
  
! #: fortran/primary.cc:2108
! #, gcc-internal-format
! msgid "extend_ref(): Bad tail"
! msgstr ""
! 
! #: fortran/primary.cc:2210
  #, gcc-internal-format
  msgid "Array section designator, e.g. %<(:)%>, is required besides the coarray designator %<[...]%> at %C"
  msgstr ""
  
! #: fortran/primary.cc:2218
  #, gcc-internal-format
  msgid "Coarray designator at %C but %qs is not a coarray"
  msgstr ""
  
! #: fortran/primary.cc:2461
  #, gcc-internal-format
  msgid "Symbol %qs at %C has no IMPLICIT type"
  msgstr ""
  
! #: fortran/primary.cc:2468
  #, gcc-internal-format
  msgid "Unexpected %<%c%> for nonderived-type variable %qs at %C"
  msgstr ""
  
! #: fortran/primary.cc:2489
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected structure component name at %C"
  msgstr ""
  
! #: fortran/primary.cc:2510 fortran/primary.cc:2685
  #, gcc-internal-format, gfc-internal-format
  msgid "RE or IM part_ref at %C"
  msgstr ""
  
! #: fortran/primary.cc:2562 fortran/primary.cc:2690
  #, gcc-internal-format, gfc-internal-format
  msgid "The RE or IM part_ref at %C must be applied to a COMPLEX expression"
  msgstr ""
  
! #: fortran/primary.cc:2569 fortran/primary.cc:2703
  #, gcc-internal-format, gfc-internal-format
  msgid "The LEN part_ref at %C must be applied to a CHARACTER expression"
  msgstr ""
  
! #: fortran/primary.cc:2628
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Expected argument list at %C"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� \"%s\" Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½"
  
! #: fortran/primary.cc:2646
  #, gcc-internal-format
  msgid "%qs at %C is not an inquiry reference to an intrinsic type component %qs"
  msgstr ""
  
! #: fortran/primary.cc:2649
  #, gcc-internal-format
  msgid "%qs at %C is not an inquiry reference to an intrinsic type component"
  msgstr ""
  
! #: fortran/primary.cc:2719
  #, gcc-internal-format, gfc-internal-format
  msgid "The KIND part_ref at %C must be applied to an expression of intrinsic type"
  msgstr ""
  
! #: fortran/primary.cc:2747
  #, gcc-internal-format
  msgid "Procedure pointer component %qs requires an argument list at %C"
  msgstr ""
  
! #: fortran/primary.cc:2833
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected array/substring ref at %C"
  msgstr ""
  
! #: fortran/primary.cc:2855
  #, gcc-internal-format, gfc-internal-format
  msgid "Nonpolymorphic reference to abstract type at %C"
  msgstr ""
  
! #: fortran/primary.cc:2862
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed procedure-pointer component at %C"
  msgstr ""
  
! #: fortran/primary.cc:2900
  #, gcc-internal-format
  msgid "gfc_variable_attr(): Expression isn't a variable"
  msgstr ""
  
! #: fortran/primary.cc:3118
  #, gcc-internal-format
  msgid "gfc_caf_attr(): Expression isn't a variable"
  msgstr ""
  
! #: fortran/primary.cc:3175
  #, gcc-internal-format
  msgid "gfc_caf_attr(): Bad array reference"
  msgstr ""
  
! #: fortran/primary.cc:3354
  #, gcc-internal-format
  msgid "No initializer for allocatable component %qs given in the structure constructor at %C"
  msgstr ""
  
! #: fortran/primary.cc:3365
  #, gcc-internal-format, gfc-internal-format
  msgid "Structure constructor with missing optional arguments at %C"
  msgstr ""
  
! #: fortran/primary.cc:3374
  #, gcc-internal-format
  msgid "No initializer for component %qs given in the structure constructor at %C"
  msgstr ""
  
! #: fortran/primary.cc:3422
  #, gcc-internal-format
  msgid "Cannot construct ABSTRACT type %qs at %L"
  msgstr ""
  
! #: fortran/primary.cc:3442
  #, gcc-internal-format, gfc-internal-format
  msgid "Structure constructor with named arguments at %C"
  msgstr ""
  
! #: fortran/primary.cc:3457
  #, gcc-internal-format, gfc-internal-format
  msgid "Component initializer without name after component named %s at %L"
  msgstr ""
  
! #: fortran/primary.cc:3462
  #, gcc-internal-format, gfc-internal-format
  msgid "Too many components in structure constructor at %L"
  msgstr ""
  
! #: fortran/primary.cc:3521
  msgid "CHARACTER expression will be truncated in constructor (%td/%td) at %L"
  msgstr ""
  
! #: fortran/primary.cc:3539
  #, gcc-internal-format
  msgid "Component %qs is initialized twice in the structure constructor at %L"
  msgstr ""
  
! #: fortran/primary.cc:3551
  #, gcc-internal-format
  msgid "Coindexed expression to pointer component %qs in structure constructor at %L"
  msgstr ""
  
! #: fortran/primary.cc:3605
  #, gcc-internal-format
  msgid "component %qs at %L has already been set by a parent derived type constructor"
  msgstr ""
  
! #: fortran/primary.cc:3768
  #, gcc-internal-format, gfc-internal-format
  msgid "%%LOC() as an rvalue at %C"
  msgstr ""
  
! #: fortran/primary.cc:3827
  #, gcc-internal-format
  msgid "%qs at %C is the name of a recursive function and so refers to the result variable. Use an explicit RESULT variable for direct recursion (12.5.2.1)"
  msgstr ""
  
! #: fortran/primary.cc:3858 fortran/primary.cc:4265
  #, gcc-internal-format, gfc-internal-format
  msgid "Symbol at %C is not appropriate for an expression"
  msgstr ""
  
! #: fortran/primary.cc:3963
  #, gcc-internal-format
  msgid "Unexpected use of subroutine name %qs at %C"
  msgstr ""
  
! #: fortran/primary.cc:3995
  #, fuzzy, gcc-internal-format
  msgid "Statement function %qs requires argument list at %C"
  msgstr "Ð¼ÐµÑ‚ÐºÐ° \"%s\" Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°, Ð°Ð»Ðµ Ð½Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ð°ÐµÑ†Ñ†Ð°"
  
! #: fortran/primary.cc:3998
  #, gcc-internal-format
  msgid "Function %qs requires an argument list at %C"
  msgstr ""
  
! #: fortran/primary.cc:4053
  #, fuzzy, gcc-internal-format
  msgid "Missing argument to %qs at %C"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� \"%s\" Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½"
  
! #: fortran/primary.cc:4066
  #, gcc-internal-format, gfc-internal-format
  msgid "The leftmost part-ref in a data-ref cannot be a function reference at %C"
  msgstr ""
  
! #: fortran/primary.cc:4221
  #, fuzzy, gcc-internal-format
  msgid "Missing argument list in function %qs at %C"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� \"%s\" Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½"
  
! #: fortran/primary.cc:4337
  #, gcc-internal-format
  msgid "Derived type %qs cannot be used as a variable at %C"
  msgstr ""
  
! #: fortran/primary.cc:4378
  #, gcc-internal-format, gfc-internal-format
  msgid "Named constant at %C in an EQUIVALENCE"
  msgstr ""
  
! #: fortran/primary.cc:4383
  #, gcc-internal-format
  msgid "PARAMETER %qs shall not appear in a DATA statement at %C"
  msgstr ""
  
! #: fortran/primary.cc:4419
  #, gcc-internal-format
  msgid "%qs at %C is not a variable"
  msgstr ""
--- 81285,81500 ----
  msgid "Syntax error in argument list at %C"
  msgstr ""
  
! #: fortran/primary.cc:2218
  #, gcc-internal-format
  msgid "Array section designator, e.g. %<(:)%>, is required besides the coarray designator %<[...]%> at %C"
  msgstr ""
  
! #: fortran/primary.cc:2226
  #, gcc-internal-format
  msgid "Coarray designator at %C but %qs is not a coarray"
  msgstr ""
  
! #: fortran/primary.cc:2483
  #, gcc-internal-format
  msgid "Symbol %qs at %C has no IMPLICIT type"
  msgstr ""
  
! #: fortran/primary.cc:2490
  #, gcc-internal-format
  msgid "Unexpected %<%c%> for nonderived-type variable %qs at %C"
  msgstr ""
  
! #: fortran/primary.cc:2512
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected structure component name at %C"
  msgstr ""
  
! #: fortran/primary.cc:2543 fortran/primary.cc:2726
  #, gcc-internal-format, gfc-internal-format
  msgid "RE or IM part_ref at %C"
  msgstr ""
  
! #: fortran/primary.cc:2595 fortran/primary.cc:2731
  #, gcc-internal-format, gfc-internal-format
  msgid "The RE or IM part_ref at %C must be applied to a COMPLEX expression"
  msgstr ""
  
! #: fortran/primary.cc:2602 fortran/primary.cc:2744
  #, gcc-internal-format, gfc-internal-format
  msgid "The LEN part_ref at %C must be applied to a CHARACTER expression"
  msgstr ""
  
! #: fortran/primary.cc:2661
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Expected argument list at %C"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� \"%s\" Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½"
  
! #: fortran/primary.cc:2679
  #, gcc-internal-format
  msgid "%qs at %C is not an inquiry reference to an intrinsic type component %qs"
  msgstr ""
  
! #: fortran/primary.cc:2682
  #, gcc-internal-format
  msgid "%qs at %C is not an inquiry reference to an intrinsic type component"
  msgstr ""
  
! #: fortran/primary.cc:2760
  #, gcc-internal-format, gfc-internal-format
  msgid "The KIND part_ref at %C must be applied to an expression of intrinsic type"
  msgstr ""
  
! #: fortran/primary.cc:2788
  #, gcc-internal-format
  msgid "Procedure pointer component %qs requires an argument list at %C"
  msgstr ""
  
! #: fortran/primary.cc:2875
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected array/substring ref at %C"
  msgstr ""
  
! #: fortran/primary.cc:2897
  #, gcc-internal-format, gfc-internal-format
  msgid "Nonpolymorphic reference to abstract type at %C"
  msgstr ""
  
! #: fortran/primary.cc:2904
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed procedure-pointer component at %C"
  msgstr ""
  
! #: fortran/primary.cc:2943
  #, gcc-internal-format
  msgid "gfc_variable_attr(): Expression isn't a variable"
  msgstr ""
  
! #: fortran/primary.cc:3165
  #, gcc-internal-format
  msgid "gfc_caf_attr(): Expression isn't a variable"
  msgstr ""
  
! #: fortran/primary.cc:3222
  #, gcc-internal-format
  msgid "gfc_caf_attr(): Bad array reference"
  msgstr ""
  
! #: fortran/primary.cc:3401
  #, gcc-internal-format
  msgid "No initializer for allocatable component %qs given in the structure constructor at %C"
  msgstr ""
  
! #: fortran/primary.cc:3412
  #, gcc-internal-format, gfc-internal-format
  msgid "Structure constructor with missing optional arguments at %C"
  msgstr ""
  
! #: fortran/primary.cc:3421
  #, gcc-internal-format
  msgid "No initializer for component %qs given in the structure constructor at %C"
  msgstr ""
  
! #: fortran/primary.cc:3469
  #, gcc-internal-format
  msgid "Cannot construct ABSTRACT type %qs at %L"
  msgstr ""
  
! #: fortran/primary.cc:3489
  #, gcc-internal-format, gfc-internal-format
  msgid "Structure constructor with named arguments at %C"
  msgstr ""
  
! #: fortran/primary.cc:3504
  #, gcc-internal-format, gfc-internal-format
  msgid "Component initializer without name after component named %s at %L"
  msgstr ""
  
! #: fortran/primary.cc:3509
  #, gcc-internal-format, gfc-internal-format
  msgid "Too many components in structure constructor at %L"
  msgstr ""
  
! #: fortran/primary.cc:3568
  msgid "CHARACTER expression will be truncated in constructor (%td/%td) at %L"
  msgstr ""
  
! #: fortran/primary.cc:3586
  #, gcc-internal-format
  msgid "Component %qs is initialized twice in the structure constructor at %L"
  msgstr ""
  
! #: fortran/primary.cc:3598
  #, gcc-internal-format
  msgid "Coindexed expression to pointer component %qs in structure constructor at %L"
  msgstr ""
  
! #: fortran/primary.cc:3652
  #, gcc-internal-format
  msgid "component %qs at %L has already been set by a parent derived type constructor"
  msgstr ""
  
! #: fortran/primary.cc:3815
  #, gcc-internal-format, gfc-internal-format
  msgid "%%LOC() as an rvalue at %C"
  msgstr ""
  
! #: fortran/primary.cc:3874
  #, gcc-internal-format
  msgid "%qs at %C is the name of a recursive function and so refers to the result variable. Use an explicit RESULT variable for direct recursion (12.5.2.1)"
  msgstr ""
  
! #: fortran/primary.cc:3905 fortran/primary.cc:4312
  #, gcc-internal-format, gfc-internal-format
  msgid "Symbol at %C is not appropriate for an expression"
  msgstr ""
  
! #: fortran/primary.cc:4010
  #, gcc-internal-format
  msgid "Unexpected use of subroutine name %qs at %C"
  msgstr ""
  
! #: fortran/primary.cc:4042
  #, fuzzy, gcc-internal-format
  msgid "Statement function %qs requires argument list at %C"
  msgstr "Ð¼ÐµÑ‚ÐºÐ° \"%s\" Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°, Ð°Ð»Ðµ Ð½Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ð°ÐµÑ†Ñ†Ð°"
  
! #: fortran/primary.cc:4045
  #, gcc-internal-format
  msgid "Function %qs requires an argument list at %C"
  msgstr ""
  
! #: fortran/primary.cc:4100
  #, fuzzy, gcc-internal-format
  msgid "Missing argument to %qs at %C"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� \"%s\" Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½"
  
! #: fortran/primary.cc:4113
  #, gcc-internal-format, gfc-internal-format
  msgid "The leftmost part-ref in a data-ref cannot be a function reference at %C"
  msgstr ""
  
! #: fortran/primary.cc:4268
  #, fuzzy, gcc-internal-format
  msgid "Missing argument list in function %qs at %C"
  msgstr "Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ� \"%s\" Ð¿Ñ€Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð½"
  
! #: fortran/primary.cc:4394
  #, gcc-internal-format
  msgid "Derived type %qs cannot be used as a variable at %C"
  msgstr ""
  
! #: fortran/primary.cc:4435
  #, gcc-internal-format, gfc-internal-format
  msgid "Named constant at %C in an EQUIVALENCE"
  msgstr ""
  
! #: fortran/primary.cc:4440
  #, gcc-internal-format
  msgid "PARAMETER %qs shall not appear in a DATA statement at %C"
  msgstr ""
  
! #: fortran/primary.cc:4476
  #, gcc-internal-format
  msgid "%qs at %C is not a variable"
  msgstr ""
*************** msgstr ""
*** 81541,82450 ****
  msgid "Character-valued argument %qs of statement function at %L must have constant length"
  msgstr ""
  
! #: fortran/resolve.cc:578
  #, gcc-internal-format
  msgid "Contained procedure %qs at %L has the same name as its encompassing procedure"
  msgstr ""
  
! #: fortran/resolve.cc:598
  #, gcc-internal-format
  msgid "Contained function %qs at %L has no IMPLICIT type"
  msgstr ""
  
! #: fortran/resolve.cc:601
  #, gcc-internal-format
  msgid "Result %qs of contained function %qs at %L has no IMPLICIT type"
  msgstr ""
  
! #: fortran/resolve.cc:627
  #, gcc-internal-format
  msgid "Character-valued module procedure %qs at %L must not be assumed length"
  msgstr ""
  
! #: fortran/resolve.cc:629
  #, gcc-internal-format
  msgid "Character-valued internal function %qs at %L must not be assumed length"
  msgstr ""
  
! #: fortran/resolve.cc:802
  #, gcc-internal-format, gfc-internal-format
  msgid "Function %s at %L has entries with mismatched array specifications"
  msgstr ""
  
! #: fortran/resolve.cc:813
  #, gcc-internal-format, gfc-internal-format
  msgid "Function %s at %L has entry %s with mismatched characteristics"
  msgstr ""
  
! #: fortran/resolve.cc:828
  #, gcc-internal-format, gfc-internal-format
  msgid "Function %s at %L with entries returning variables of different string lengths"
  msgstr ""
  
! #: fortran/resolve.cc:860
  #, gcc-internal-format, gfc-internal-format
  msgid "FUNCTION result %s cannot be an array in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:864
  #, gcc-internal-format, gfc-internal-format
  msgid "ENTRY result %s cannot be an array in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:871
  #, gcc-internal-format, gfc-internal-format
  msgid "FUNCTION result %s cannot be a POINTER in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:875
  #, gcc-internal-format, gfc-internal-format
  msgid "ENTRY result %s cannot be a POINTER in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:882
  #, gcc-internal-format, gfc-internal-format
  msgid "FUNCTION result %s cannot be ALLOCATABLE in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:886
  #, gcc-internal-format, gfc-internal-format
  msgid "ENTRY result %s cannot be ALLOCATABLE in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:924
  #, gcc-internal-format, gfc-internal-format
  msgid "FUNCTION result %s cannot be of type %s in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:929
  #, gcc-internal-format, gfc-internal-format
  msgid "ENTRY result %s cannot be of type %s in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:980
  #, gcc-internal-format
  msgid "Global entity %qs at %L cannot appear in a COMMON block at %L"
  msgstr ""
  
! #: fortran/resolve.cc:984
  #, gcc-internal-format
  msgid "Global entity %qs at %L cannot appear in a COMMON block"
  msgstr ""
  
! #: fortran/resolve.cc:994
  #, gcc-internal-format, gfc-internal-format
  msgid "COMMON block at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1001
  #, gcc-internal-format
  msgid "Variable %qs at %L is in COMMON but only in BLOCK DATA initialization is allowed"
  msgstr ""
  
! #: fortran/resolve.cc:1005
  #, gcc-internal-format
  msgid "Initialized variable %qs at %L is in a blank COMMON but initialization is only allowed in named common blocks"
  msgstr ""
  
! #: fortran/resolve.cc:1012
  #, gcc-internal-format
  msgid "%qs at %L cannot appear in COMMON [F2008:C5100]"
  msgstr ""
  
! #: fortran/resolve.cc:1017
  #, gcc-internal-format
  msgid "Automatic object %qs at %L cannot appear in COMMON at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1029
  #, gcc-internal-format
  msgid "Derived type variable %qs in COMMON at %L has neither the SEQUENCE nor the BIND(C) attribute"
  msgstr ""
  
! #: fortran/resolve.cc:1033
  #, gcc-internal-format
  msgid "Derived type variable %qs in COMMON at %L has an ultimate component that is allocatable"
  msgstr ""
  
! #: fortran/resolve.cc:1037
  #, gcc-internal-format
  msgid "Derived type variable %qs in COMMON at %L may not have default initializer"
  msgstr ""
  
! #: fortran/resolve.cc:1081
  #, gcc-internal-format
  msgid "In Fortran 2003 COMMON %qs block at %L is a global identifier and must thus have the same binding name as the same-named COMMON block at %L: %s vs %s"
  msgstr ""
  
! #: fortran/resolve.cc:1095
  #, gcc-internal-format
  msgid "COMMON block %qs at %L uses the same global identifier as entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1103
  #, gcc-internal-format
  msgid "Fortran 2008: COMMON block %qs with binding label at %L sharing the identifier with global non-COMMON-block entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1125
  #, gcc-internal-format
  msgid "COMMON block at %L with binding label %qs uses the same global identifier as entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1146
  #, gcc-internal-format
  msgid "COMMON block %qs at %L is used as PARAMETER at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1150
  #, gcc-internal-format
  msgid "COMMON block %qs at %L cannot have the EXTERNAL attribute"
  msgstr ""
  
! #: fortran/resolve.cc:1154
  #, gcc-internal-format
  msgid "COMMON block %qs at %L is also an intrinsic procedure"
  msgstr ""
  
! #: fortran/resolve.cc:1158
  #, gcc-internal-format
  msgid "COMMON block %qs at %L that is also a function result"
  msgstr ""
  
! #: fortran/resolve.cc:1163
  #, gcc-internal-format
  msgid "COMMON block %qs at %L that is also a global procedure"
  msgstr ""
  
! #: fortran/resolve.cc:1230
  #, gcc-internal-format
  msgid "The KIND parameter %qs in the PDT constructor at %C has no value"
  msgstr ""
  
! #: fortran/resolve.cc:1373
  #, gcc-internal-format, gfc-internal-format
  msgid "The rank of the element in the structure constructor at %L does not match that of the component (%d/%d)"
  msgstr ""
  
! #: fortran/resolve.cc:1394
  #, gcc-internal-format
  msgid "The element in the structure constructor at %L, for pointer component %qs, is %s but should be %s"
  msgstr ""
  
! #: fortran/resolve.cc:1429
  #, gcc-internal-format
  msgid "Unequal character lengths (%wd/%wd) for pointer component %qs in constructor at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1475
  #, gcc-internal-format
  msgid "The NULL in the structure constructor at %L is being applied to component %qs, which is neither a POINTER nor ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:1509
  #, gcc-internal-format
  msgid "Interface mismatch for procedure-pointer component %qs in structure constructor at %L: %s"
  msgstr ""
  
! #: fortran/resolve.cc:1528
  #, gcc-internal-format
  msgid "Bad array spec of component %qs referenced in structure constructor at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1541
  #, gcc-internal-format
  msgid "The shape of component %qs in the structure constructor at %L differs from the shape of the declared component for dimension %d (%ld/%ld)"
  msgstr ""
  
! #: fortran/resolve.cc:1562
  #, gcc-internal-format
  msgid "The element in the structure constructor at %L, for pointer component %qs should be a POINTER or a TARGET"
  msgstr ""
  
! #: fortran/resolve.cc:1589
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target at %L has a vector subscript"
  msgstr ""
  
! #: fortran/resolve.cc:1601
  #, gcc-internal-format
  msgid "Invalid expression in the structure constructor for pointer component %qs at %L in PURE procedure"
  msgstr ""
  
! #: fortran/resolve.cc:1727
  #, gcc-internal-format
  msgid "The upper bound in the last dimension must appear in the reference to the assumed size array %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1789
  #, fuzzy, gcc-internal-format
  msgid "%qs at %L is ambiguous"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ \"%s\" - %d Ð±Ð°Ð¹Ñ‚"
  
! #: fortran/resolve.cc:1793
  #, gcc-internal-format
  msgid "GENERIC procedure %qs is not allowed as an actual argument at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1914
  #, gcc-internal-format
  msgid "Type specified for intrinsic function %qs at %L is ignored"
  msgstr ""
  
! #: fortran/resolve.cc:1927
  #, gcc-internal-format
  msgid "Intrinsic subroutine %qs at %L shall not have a type specifier"
  msgstr ""
  
! #: fortran/resolve.cc:1938
  #, gcc-internal-format
  msgid "%qs declared INTRINSIC at %L does not exist"
  msgstr ""
  
! #: fortran/resolve.cc:1951
  #, gcc-internal-format
  msgid "The intrinsic %qs declared INTRINSIC at %L is not available in the current standard settings but %s. Use an appropriate %<-std=*%> option or enable %<-fall-intrinsics%> in order to use it."
  msgstr ""
  
! #: fortran/resolve.cc:1989
  #, gcc-internal-format
  msgid "Non-RECURSIVE procedure %qs from module %qs is possibly calling itself recursively in procedure %qs.  Declare it RECURSIVE or use %<-frecursive%>"
  msgstr ""
  
! #: fortran/resolve.cc:1994 fortran/resolve.cc:7179
  #, gcc-internal-format
  msgid "Non-RECURSIVE procedure %qs at %L is possibly calling itself recursively.  Declare it RECURSIVE or use %<-frecursive%>"
  msgstr ""
  
! #: fortran/resolve.cc:2053 fortran/resolve.cc:11603 fortran/resolve.cc:13626
  #, gcc-internal-format, gfc-internal-format
  msgid "Label %d referenced at %L is never defined"
  msgstr ""
  
! #: fortran/resolve.cc:2085
  #, gcc-internal-format
  msgid "Derived type %qs is used as an actual argument at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2103
  #, fuzzy, gcc-internal-format
  msgid "Statement function %qs at %L is not allowed as an actual argument"
  msgstr "Ð¼ÐµÑ‚ÐºÐ° \"%s\" Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°, Ð°Ð»Ðµ Ð½Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ð°ÐµÑ†Ñ†Ð°"
  
! #: fortran/resolve.cc:2111
  #, gcc-internal-format
  msgid "Intrinsic %qs at %L is not allowed as an actual argument"
  msgstr ""
  
! #: fortran/resolve.cc:2118
  #, gcc-internal-format
  msgid "Internal procedure %qs is used as actual argument at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2126
  #, gcc-internal-format
  msgid "ELEMENTAL non-INTRINSIC procedure %qs is not allowed as an actual argument at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2153
  #, gcc-internal-format
  msgid "Unable to find a specific INTRINSIC procedure for the reference %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2175
  #, fuzzy, gcc-internal-format
  msgid "Symbol %qs at %L is ambiguous"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ \"%s\" - %d Ð±Ð°Ð¹Ñ‚"
  
! #: fortran/resolve.cc:2239
  #, gcc-internal-format, gfc-internal-format
  msgid "By-value argument at %L is not of numeric type"
  msgstr ""
  
! #: fortran/resolve.cc:2246
  #, gcc-internal-format, gfc-internal-format
  msgid "By-value argument at %L cannot be an array or an array section"
  msgstr ""
  
! #: fortran/resolve.cc:2260
  #, gcc-internal-format, gfc-internal-format
  msgid "By-value argument at %L is not allowed in this context"
  msgstr ""
  
! #: fortran/resolve.cc:2272
  #, gcc-internal-format, gfc-internal-format
  msgid "Passing internal procedure at %L by location not allowed"
  msgstr ""
  
! #: fortran/resolve.cc:2283
  #, gcc-internal-format
  msgid "ELEMENTAL procedure pointer component %qs is not allowed as an actual argument at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2292
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed actual argument at %L with ultimate pointer component"
  msgstr ""
  
! #: fortran/resolve.cc:2442
  #, gcc-internal-format
  msgid "%qs at %L is an array and OPTIONAL; If it is not present, then it cannot be the actual argument of an ELEMENTAL procedure unless there is a non-optional argument with the same rank (Fortran 2018, 15.5.2.12)"
  msgstr ""
  
! #: fortran/resolve.cc:2481
  #, gcc-internal-format
  msgid "Actual argument at %L for INTENT(%s) dummy %qs of ELEMENTAL subroutine %qs is a scalar, but another actual argument is an array"
  msgstr ""
  
! #: fortran/resolve.cc:2755
  #, gcc-internal-format
  msgid "Return type mismatch of function %qs at %L (%s/%s)"
  msgstr ""
  
! #: fortran/resolve.cc:2782
  #, gcc-internal-format
  msgid "Interface mismatch in global procedure %qs at %L: %s"
  msgstr ""
  
! #: fortran/resolve.cc:2894
  #, gcc-internal-format
  msgid "There is no specific function for the generic %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2914
  #, gcc-internal-format
  msgid "Generic function %qs at %L is not consistent with a specific intrinsic interface"
  msgstr ""
  
! #: fortran/resolve.cc:2952
  #, gcc-internal-format
  msgid "Function %qs at %L is INTRINSIC but is not compatible with an intrinsic"
  msgstr ""
  
! #: fortran/resolve.cc:3013
  #, gcc-internal-format
  msgid "Unable to resolve the specific function %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3090
  #, gcc-internal-format
  msgid "Missing explicit declaration with EXTERNAL attribute for symbol %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3125
  #, gcc-internal-format
  msgid "Function %qs at %L has no IMPLICIT type; did you mean %qs?"
  msgstr ""
  
! #: fortran/resolve.cc:3129 fortran/resolve.cc:19066
  #, gcc-internal-format
  msgid "Function %qs at %L has no IMPLICIT type"
  msgstr ""
  
! #: fortran/resolve.cc:3283
  #, gcc-internal-format, gfc-internal-format
  msgid "Reference to impure function at %L inside a DO CONCURRENT"
  msgstr ""
  
! #: fortran/resolve.cc:3294
  #, gcc-internal-format
  msgid "Reference to impure function %qs at %L inside a FORALL %s"
  msgstr ""
  
! #: fortran/resolve.cc:3301
  #, gcc-internal-format
  msgid "Reference to impure function %qs at %L inside a DO CONCURRENT %s"
  msgstr ""
  
! #: fortran/resolve.cc:3308
  #, gcc-internal-format
  msgid "Reference to impure function %qs at %L within a PURE procedure"
  msgstr ""
  
! #: fortran/resolve.cc:3375
  #, gcc-internal-format
  msgid "Unexpected junk after %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3386
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function,"
  msgid "%qs at %L is not a function"
  msgstr "`%D' - Ð³Ñ�Ñ‚Ð° Ð½Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�,"
  
! #: fortran/resolve.cc:3394 fortran/resolve.cc:3966
  #, gcc-internal-format
  msgid "ABSTRACT INTERFACE %qs must not be referenced at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3406
  #, gcc-internal-format
  msgid "ABSTRACT INTERFACE %qs at %L must not have an assumed character length result (F2008: C418)"
  msgstr ""
  
  #. Internal procedures are taken care of in resolve_contained_fntype.
! #: fortran/resolve.cc:3449
  #, gcc-internal-format
  msgid "Function %qs is declared CHARACTER(*) and cannot be used at %L since it is not a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:3470
  #, gcc-internal-format, gfc-internal-format
  msgid "Different argument lists in external dummy function %s at %L and %L"
  msgstr ""
  
! #: fortran/resolve.cc:3509
  #, gcc-internal-format
  msgid "resolve_function(): bad function type"
  msgstr ""
  
! #: fortran/resolve.cc:3523
  #, gcc-internal-format, gfc-internal-format
  msgid "A BOZ literal constant at %L cannot appear as an actual argument in a function reference"
  msgstr ""
  
! #: fortran/resolve.cc:3539
  #, gcc-internal-format
  msgid "User defined non-ELEMENTAL function %qs at %L not allowed in WORKSHARE construct"
  msgstr ""
  
! #: fortran/resolve.cc:3601
  #, gcc-internal-format
  msgid "ENTRY %qs at %L cannot be called recursively, as function %qs is not RECURSIVE"
  msgstr ""
  
! #: fortran/resolve.cc:3605
  #, gcc-internal-format
  msgid "Function %qs at %L cannot be called recursively, as it is not RECURSIVE"
  msgstr ""
  
! #: fortran/resolve.cc:3663
  #, gcc-internal-format
  msgid "Using function %qs at %L is deprecated"
  msgstr ""
  
! #: fortran/resolve.cc:3701
  #, gcc-internal-format, gfc-internal-format
  msgid "Subroutine call at %L in a DO CONCURRENT block is not PURE"
  msgstr ""
  
! #: fortran/resolve.cc:3710
  #, gcc-internal-format
  msgid "Subroutine call to %qs in FORALL block at %L is not PURE"
  msgstr ""
  
! #: fortran/resolve.cc:3716
  #, gcc-internal-format
  msgid "Subroutine call to %qs in DO CONCURRENT block at %L is not PURE"
  msgstr ""
  
! #: fortran/resolve.cc:3722
  #, gcc-internal-format
  msgid "Subroutine call to %qs at %L is not PURE"
  msgstr ""
  
! #: fortran/resolve.cc:3790
  #, gcc-internal-format
  msgid "There is no specific subroutine for the generic %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3799
  #, gcc-internal-format
  msgid "Generic subroutine %qs at %L is not consistent with an intrinsic subroutine interface"
  msgstr ""
  
! #: fortran/resolve.cc:3834
  #, gcc-internal-format
  msgid "Subroutine %qs at %L is INTRINSIC but is not compatible with an intrinsic"
  msgstr ""
  
! #: fortran/resolve.cc:3879
  #, gcc-internal-format
  msgid "Unable to resolve the specific subroutine %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3937
  #, gcc-internal-format
  msgid "%qs at %L has a type, which is not consistent with the CALL at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3976
  #, gcc-internal-format
  msgid "ENTRY %qs at %L cannot be called recursively, as subroutine %qs is not RECURSIVE"
  msgstr ""
  
! #: fortran/resolve.cc:3980
  #, gcc-internal-format
  msgid "SUBROUTINE %qs at %L cannot be called recursively, as it is not RECURSIVE"
  msgstr ""
  
! #: fortran/resolve.cc:4031
  #, gcc-internal-format, gfc-internal-format
  msgid "Different argument lists in external dummy subroutine %s at %L and %L"
  msgstr ""
  
! #: fortran/resolve.cc:4062
  #, gcc-internal-format
  msgid "resolve_subroutine(): bad function type"
  msgstr ""
  
! #: fortran/resolve.cc:4079
  #, gcc-internal-format
  msgid "Using subroutine %qs at %L is deprecated"
  msgstr ""
  
! #: fortran/resolve.cc:4106
  #, gcc-internal-format, gfc-internal-format
  msgid "Shapes for operands at %L and %L are not conformable"
  msgstr ""
  
! #: fortran/resolve.cc:4158
  #, gcc-internal-format
  msgid "logical_to_bitwise(): Bad intrinsic"
  msgstr ""
  
! #: fortran/resolve.cc:4261
  #, gcc-internal-format
  msgid "Impure function %qs at %L might not be evaluated"
  msgstr ""
  
! #: fortran/resolve.cc:4265
  #, gcc-internal-format, gfc-internal-format
  msgid "Impure function at %L might not be evaluated"
  msgstr ""
  
! #: fortran/resolve.cc:4360
  #, gcc-internal-format
  msgid "BOZ literal constant at %L cannot be an operand of unary operator %qs"
  msgstr ""
  
! #: fortran/resolve.cc:4368
  #, gcc-internal-format, gfc-internal-format
  msgid "Negation of unsigned expression at %L not permitted "
  msgstr ""
  
! #: fortran/resolve.cc:4389
  #, gcc-internal-format
  msgid "Operands at %L and %L cannot appear as operands of binary operator %qs"
  msgstr ""
  
! #: fortran/resolve.cc:4399
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid context for NULL() pointer at %L"
  msgstr ""
  
! #: fortran/resolve.cc:4417
  #, gcc-internal-format
  msgid "Operand of unary numeric operator %qs at %L is %s"
  msgstr ""
  
! #: fortran/resolve.cc:4432 fortran/resolve.cc:4466
  #, gcc-internal-format
  msgid "Operands of binary numeric operator %qs at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4446 fortran/resolve.cc:4635 fortran/resolve.cc:4804
  #, gcc-internal-format, gfc-internal-format
  msgid "Inconsistent ranks for operator at %L and %L"
  msgstr ""
  
! #: fortran/resolve.cc:4458
  #, gcc-internal-format
  msgid "Unexpected derived-type entities in binary intrinsic numeric operator %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:4482
  #, gcc-internal-format, gfc-internal-format
  msgid "Operands of string concatenation operator at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4525
  #, gcc-internal-format
  msgid "Operands of logical operator %qs at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4548
  #, gcc-internal-format, gfc-internal-format
  msgid "Operand of .not. operator at %L is %s"
  msgstr ""
  
! #: fortran/resolve.cc:4563
  #, gcc-internal-format, gfc-internal-format
  msgid "COMPLEX quantities cannot be compared at %L"
  msgstr ""
  
! #: fortran/resolve.cc:4593 fortran/resolve.cc:4608
  #, gcc-internal-format, gfc-internal-format
  msgid "BOZ literal constant near %L cannot appear as an operand of a relational operator"
  msgstr ""
  
! #: fortran/resolve.cc:4643
  #, gcc-internal-format, gfc-internal-format
  msgid "Inconsistent types for operator at %L and %L: %s and %s"
  msgstr ""
  
! #: fortran/resolve.cc:4667
  #, gcc-internal-format, gfc-internal-format
  msgid "Equality comparison for %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:4669
  #, gcc-internal-format, gfc-internal-format
  msgid "Inequality comparison for %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:4682
  #, gcc-internal-format, gfc-internal-format
  msgid "Logicals at %L must be compared with %s instead of %s"
  msgstr ""
  
! #: fortran/resolve.cc:4690
  #, gcc-internal-format
  msgid "Operands of comparison operator %qs at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4705
  #, gcc-internal-format
  msgid "Unknown operator %qs at %L; did you mean %qs?"
  msgstr ""
  
! #: fortran/resolve.cc:4708
  #, gcc-internal-format
  msgid "Unknown operator %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:4713
  #, gcc-internal-format
  msgid "Operand of user operator %qs at %L is %s"
  msgstr ""
  
! #: fortran/resolve.cc:4720
  #, gcc-internal-format
  msgid "Operands of user operator %qs at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4734
  #, gcc-internal-format
  msgid "resolve_operator(): Bad intrinsic"
  msgstr ""
  
! #: fortran/resolve.cc:4832
! #, gcc-internal-format, gfc-internal-format
! msgid "Inconsistent coranks for operator at %L and %L"
! msgstr ""
! 
! #: fortran/resolve.cc:5031
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference at %L is out of bounds (%ld < %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5036
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference at %L is out of bounds (%ld < %ld) in codimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5046
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference at %L is out of bounds (%ld > %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5051
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference at %L is out of bounds (%ld > %ld) in codimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5072
  #, gcc-internal-format, gfc-internal-format
  msgid "Illegal stride of zero at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5089
  #, gcc-internal-format, gfc-internal-format
  msgid "Lower array reference at %L is out of bounds (%ld < %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5097
  #, gcc-internal-format, gfc-internal-format
  msgid "Lower array reference at %L is out of bounds (%ld > %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5113
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper array reference at %L is out of bounds (%ld < %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5122
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper array reference at %L is out of bounds (%ld > %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5138
  #, gcc-internal-format
  msgid "check_dimension(): Bad array reference"
  msgstr ""
  
! #: fortran/resolve.cc:5161
  #, gcc-internal-format, gfc-internal-format
  msgid "Rightmost upper bound of assumed size array section not specified at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5171
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank mismatch in array reference at %L (%d/%d)"
  msgstr ""
  
! #: fortran/resolve.cc:5179
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindex rank mismatch in array reference at %L (%d/%d)"
  msgstr ""
  
! #: fortran/resolve.cc:5195
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindex of codimension %d must be a scalar at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5223
  #, gcc-internal-format, gfc-internal-format
  msgid "Array index at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5229
  #, gcc-internal-format, gfc-internal-format
  msgid "Array index at %L must be of INTEGER type, found %s"
  msgstr ""
  
! #: fortran/resolve.cc:5235
  #, gcc-internal-format, gfc-internal-format
  msgid "REAL array index at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5275
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Argument dim at %L must be scalar"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: fortran/resolve.cc:5282
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument dim at %L must be of INTEGER type"
  msgstr ""
  
! #: fortran/resolve.cc:5343
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid array reference of a non-array entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5358
  #, gcc-internal-format
  msgid "find_array_spec(): unused as(1)"
  msgstr ""
  
! #: fortran/resolve.cc:5370
  #, gcc-internal-format
  msgid "find_array_spec(): unused as(2)"
  msgstr ""
  
! #: fortran/resolve.cc:5415
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Array index at %L is an array of rank %d"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð²ÐµÐ»ÑŒÐ¼Ñ– Ð²Ñ�Ð»Ñ–ÐºÑ–"
  
! #: fortran/resolve.cc:5506
  #, gcc-internal-format, gfc-internal-format
  msgid "TEAM_NUMBER argument at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5513
  #, gcc-internal-format, gfc-internal-format
  msgid "TEAM_NUMBER argument at %L must be of INTEGER type, found %s"
  msgstr ""
  
! #: fortran/resolve.cc:5527
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "TEAM argument at %L must be scalar"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: fortran/resolve.cc:5536
  #, gcc-internal-format, gfc-internal-format
  msgid "TEAM argument at %L must be of TEAM_TYPE from the intrinsic module ISO_FORTRAN_ENV, found %s"
  msgstr ""
  
! #: fortran/resolve.cc:5550
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "STAT argument at %L must be scalar"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: fortran/resolve.cc:5557
  #, gcc-internal-format, gfc-internal-format
  msgid "STAT argument at %L must be of INTEGER type, found %s"
  msgstr ""
  
! #: fortran/resolve.cc:5566
  #, gcc-internal-format, gfc-internal-format
  msgid "STAT's expression at %L must be a variable"
  msgstr ""
  
! #: fortran/resolve.cc:5588
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring start index at %L must be of type INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:5595
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring start index at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5617
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring end index at %L must be of type INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:5624
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring end index at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5644
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "size of array `%s' is too large"
  msgid "Substring end index at %L is too large"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð²ÐµÐ»ÑŒÐ¼Ñ– Ð²Ñ�Ð»Ñ–ÐºÑ–"
  
! #: fortran/resolve.cc:5835
  #, gcc-internal-format
  msgid "resolve_ref(): Bad array reference"
  msgstr ""
  
! #: fortran/resolve.cc:5849
  #, gcc-internal-format, gfc-internal-format
  msgid "Component to the right of a part reference with nonzero rank must not have the POINTER attribute at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5859
  #, gcc-internal-format, gfc-internal-format
  msgid "Component to the right of a part reference with nonzero rank must not have the ALLOCATABLE attribute at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5907
  #, gcc-internal-format, gfc-internal-format
  msgid "Two or more part references with nonzero rank must not be specified at %L"
  msgstr ""
  
! #: fortran/resolve.cc:6019
  #, gcc-internal-format
  msgid "gfc_expression_rank(): Two array specs"
  msgstr ""
  
! #: fortran/resolve.cc:6048
  #, gcc-internal-format
  msgid "Illegal coarray index"
  msgstr ""
  
! #: fortran/resolve.cc:6096
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute may only be used as actual argument"
  msgstr ""
  
! #: fortran/resolve.cc:6106
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L may only be used as actual argument"
  msgstr ""
--- 81626,82530 ----
  msgid "Character-valued argument %qs of statement function at %L must have constant length"
  msgstr ""
  
! #: fortran/resolve.cc:579
  #, gcc-internal-format
  msgid "Contained procedure %qs at %L has the same name as its encompassing procedure"
  msgstr ""
  
! #: fortran/resolve.cc:599
  #, gcc-internal-format
  msgid "Contained function %qs at %L has no IMPLICIT type"
  msgstr ""
  
! #: fortran/resolve.cc:602
  #, gcc-internal-format
  msgid "Result %qs of contained function %qs at %L has no IMPLICIT type"
  msgstr ""
  
! #: fortran/resolve.cc:628
  #, gcc-internal-format
  msgid "Character-valued module procedure %qs at %L must not be assumed length"
  msgstr ""
  
! #: fortran/resolve.cc:630
  #, gcc-internal-format
  msgid "Character-valued internal function %qs at %L must not be assumed length"
  msgstr ""
  
! #: fortran/resolve.cc:803
  #, gcc-internal-format, gfc-internal-format
  msgid "Function %s at %L has entries with mismatched array specifications"
  msgstr ""
  
! #: fortran/resolve.cc:814
  #, gcc-internal-format, gfc-internal-format
  msgid "Function %s at %L has entry %s with mismatched characteristics"
  msgstr ""
  
! #: fortran/resolve.cc:829
  #, gcc-internal-format, gfc-internal-format
  msgid "Function %s at %L with entries returning variables of different string lengths"
  msgstr ""
  
! #: fortran/resolve.cc:861
  #, gcc-internal-format, gfc-internal-format
  msgid "FUNCTION result %s cannot be an array in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:865
  #, gcc-internal-format, gfc-internal-format
  msgid "ENTRY result %s cannot be an array in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:872
  #, gcc-internal-format, gfc-internal-format
  msgid "FUNCTION result %s cannot be a POINTER in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:876
  #, gcc-internal-format, gfc-internal-format
  msgid "ENTRY result %s cannot be a POINTER in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:883
  #, gcc-internal-format, gfc-internal-format
  msgid "FUNCTION result %s cannot be ALLOCATABLE in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:887
  #, gcc-internal-format, gfc-internal-format
  msgid "ENTRY result %s cannot be ALLOCATABLE in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:925
  #, gcc-internal-format, gfc-internal-format
  msgid "FUNCTION result %s cannot be of type %s in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:930
  #, gcc-internal-format, gfc-internal-format
  msgid "ENTRY result %s cannot be of type %s in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:981
  #, gcc-internal-format
  msgid "Global entity %qs at %L cannot appear in a COMMON block at %L"
  msgstr ""
  
! #: fortran/resolve.cc:985
  #, gcc-internal-format
  msgid "Global entity %qs at %L cannot appear in a COMMON block"
  msgstr ""
  
! #: fortran/resolve.cc:995
  #, gcc-internal-format, gfc-internal-format
  msgid "COMMON block at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1002
  #, gcc-internal-format
  msgid "Variable %qs at %L is in COMMON but only in BLOCK DATA initialization is allowed"
  msgstr ""
  
! #: fortran/resolve.cc:1006
  #, gcc-internal-format
  msgid "Initialized variable %qs at %L is in a blank COMMON but initialization is only allowed in named common blocks"
  msgstr ""
  
! #: fortran/resolve.cc:1013
  #, gcc-internal-format
  msgid "%qs at %L cannot appear in COMMON [F2008:C5100]"
  msgstr ""
  
! #: fortran/resolve.cc:1018
  #, gcc-internal-format
  msgid "Automatic object %qs at %L cannot appear in COMMON at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1030
  #, gcc-internal-format
  msgid "Derived type variable %qs in COMMON at %L has neither the SEQUENCE nor the BIND(C) attribute"
  msgstr ""
  
! #: fortran/resolve.cc:1034
  #, gcc-internal-format
  msgid "Derived type variable %qs in COMMON at %L has an ultimate component that is allocatable"
  msgstr ""
  
! #: fortran/resolve.cc:1038
  #, gcc-internal-format
  msgid "Derived type variable %qs in COMMON at %L may not have default initializer"
  msgstr ""
  
! #: fortran/resolve.cc:1082
  #, gcc-internal-format
  msgid "In Fortran 2003 COMMON %qs block at %L is a global identifier and must thus have the same binding name as the same-named COMMON block at %L: %s vs %s"
  msgstr ""
  
! #: fortran/resolve.cc:1096
  #, gcc-internal-format
  msgid "COMMON block %qs at %L uses the same global identifier as entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1104
  #, gcc-internal-format
  msgid "Fortran 2008: COMMON block %qs with binding label at %L sharing the identifier with global non-COMMON-block entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1126
  #, gcc-internal-format
  msgid "COMMON block at %L with binding label %qs uses the same global identifier as entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1147
  #, gcc-internal-format
  msgid "COMMON block %qs at %L is used as PARAMETER at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1151
  #, gcc-internal-format
  msgid "COMMON block %qs at %L cannot have the EXTERNAL attribute"
  msgstr ""
  
! #: fortran/resolve.cc:1155
  #, gcc-internal-format
  msgid "COMMON block %qs at %L is also an intrinsic procedure"
  msgstr ""
  
! #: fortran/resolve.cc:1159
  #, gcc-internal-format
  msgid "COMMON block %qs at %L that is also a function result"
  msgstr ""
  
! #: fortran/resolve.cc:1164
  #, gcc-internal-format
  msgid "COMMON block %qs at %L that is also a global procedure"
  msgstr ""
  
! #: fortran/resolve.cc:1231
  #, gcc-internal-format
  msgid "The KIND parameter %qs in the PDT constructor at %C has no value"
  msgstr ""
  
! #: fortran/resolve.cc:1374
  #, gcc-internal-format, gfc-internal-format
  msgid "The rank of the element in the structure constructor at %L does not match that of the component (%d/%d)"
  msgstr ""
  
! #: fortran/resolve.cc:1395
  #, gcc-internal-format
  msgid "The element in the structure constructor at %L, for pointer component %qs, is %s but should be %s"
  msgstr ""
  
! #: fortran/resolve.cc:1430
  #, gcc-internal-format
  msgid "Unequal character lengths (%wd/%wd) for pointer component %qs in constructor at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1476
  #, gcc-internal-format
  msgid "The NULL in the structure constructor at %L is being applied to component %qs, which is neither a POINTER nor ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:1510
  #, gcc-internal-format
  msgid "Interface mismatch for procedure-pointer component %qs in structure constructor at %L: %s"
  msgstr ""
  
! #: fortran/resolve.cc:1529
  #, gcc-internal-format
  msgid "Bad array spec of component %qs referenced in structure constructor at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1542
  #, gcc-internal-format
  msgid "The shape of component %qs in the structure constructor at %L differs from the shape of the declared component for dimension %d (%ld/%ld)"
  msgstr ""
  
! #: fortran/resolve.cc:1563
  #, gcc-internal-format
  msgid "The element in the structure constructor at %L, for pointer component %qs should be a POINTER or a TARGET"
  msgstr ""
  
! #: fortran/resolve.cc:1590
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target at %L has a vector subscript"
  msgstr ""
  
! #: fortran/resolve.cc:1602
  #, gcc-internal-format
  msgid "Invalid expression in the structure constructor for pointer component %qs at %L in PURE procedure"
  msgstr ""
  
! #: fortran/resolve.cc:1728
  #, gcc-internal-format
  msgid "The upper bound in the last dimension must appear in the reference to the assumed size array %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1790
  #, fuzzy, gcc-internal-format
  msgid "%qs at %L is ambiguous"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ \"%s\" - %d Ð±Ð°Ð¹Ñ‚"
  
! #: fortran/resolve.cc:1794
  #, gcc-internal-format
  msgid "GENERIC procedure %qs is not allowed as an actual argument at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1915
  #, gcc-internal-format
  msgid "Type specified for intrinsic function %qs at %L is ignored"
  msgstr ""
  
! #: fortran/resolve.cc:1928
  #, gcc-internal-format
  msgid "Intrinsic subroutine %qs at %L shall not have a type specifier"
  msgstr ""
  
! #: fortran/resolve.cc:1939
  #, gcc-internal-format
  msgid "%qs declared INTRINSIC at %L does not exist"
  msgstr ""
  
! #: fortran/resolve.cc:1952
  #, gcc-internal-format
  msgid "The intrinsic %qs declared INTRINSIC at %L is not available in the current standard settings but %s. Use an appropriate %<-std=*%> option or enable %<-fall-intrinsics%> in order to use it."
  msgstr ""
  
! #: fortran/resolve.cc:1990
  #, gcc-internal-format
  msgid "Non-RECURSIVE procedure %qs from module %qs is possibly calling itself recursively in procedure %qs.  Declare it RECURSIVE or use %<-frecursive%>"
  msgstr ""
  
! #: fortran/resolve.cc:1995 fortran/resolve.cc:7152
  #, gcc-internal-format
  msgid "Non-RECURSIVE procedure %qs at %L is possibly calling itself recursively.  Declare it RECURSIVE or use %<-frecursive%>"
  msgstr ""
  
! #: fortran/resolve.cc:2054 fortran/resolve.cc:11593 fortran/resolve.cc:13616
  #, gcc-internal-format, gfc-internal-format
  msgid "Label %d referenced at %L is never defined"
  msgstr ""
  
! #: fortran/resolve.cc:2086
  #, gcc-internal-format
  msgid "Derived type %qs is used as an actual argument at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2104
  #, fuzzy, gcc-internal-format
  msgid "Statement function %qs at %L is not allowed as an actual argument"
  msgstr "Ð¼ÐµÑ‚ÐºÐ° \"%s\" Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°, Ð°Ð»Ðµ Ð½Ðµ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð¾ÑžÐ²Ð°ÐµÑ†Ñ†Ð°"
  
! #: fortran/resolve.cc:2112
  #, gcc-internal-format
  msgid "Intrinsic %qs at %L is not allowed as an actual argument"
  msgstr ""
  
! #: fortran/resolve.cc:2119
  #, gcc-internal-format
  msgid "Internal procedure %qs is used as actual argument at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2127
  #, gcc-internal-format
  msgid "ELEMENTAL non-INTRINSIC procedure %qs is not allowed as an actual argument at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2154
  #, gcc-internal-format
  msgid "Unable to find a specific INTRINSIC procedure for the reference %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2176
  #, fuzzy, gcc-internal-format
  msgid "Symbol %qs at %L is ambiguous"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ \"%s\" - %d Ð±Ð°Ð¹Ñ‚"
  
! #: fortran/resolve.cc:2240
  #, gcc-internal-format, gfc-internal-format
  msgid "By-value argument at %L is not of numeric type"
  msgstr ""
  
! #: fortran/resolve.cc:2247
  #, gcc-internal-format, gfc-internal-format
  msgid "By-value argument at %L cannot be an array or an array section"
  msgstr ""
  
! #: fortran/resolve.cc:2261
  #, gcc-internal-format, gfc-internal-format
  msgid "By-value argument at %L is not allowed in this context"
  msgstr ""
  
! #: fortran/resolve.cc:2273
  #, gcc-internal-format, gfc-internal-format
  msgid "Passing internal procedure at %L by location not allowed"
  msgstr ""
  
! #: fortran/resolve.cc:2284
  #, gcc-internal-format
  msgid "ELEMENTAL procedure pointer component %qs is not allowed as an actual argument at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2293
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed actual argument at %L with ultimate pointer component"
  msgstr ""
  
! #: fortran/resolve.cc:2443
  #, gcc-internal-format
  msgid "%qs at %L is an array and OPTIONAL; If it is not present, then it cannot be the actual argument of an ELEMENTAL procedure unless there is a non-optional argument with the same rank (Fortran 2018, 15.5.2.12)"
  msgstr ""
  
! #: fortran/resolve.cc:2482
  #, gcc-internal-format
  msgid "Actual argument at %L for INTENT(%s) dummy %qs of ELEMENTAL subroutine %qs is a scalar, but another actual argument is an array"
  msgstr ""
  
! #: fortran/resolve.cc:2756
  #, gcc-internal-format
  msgid "Return type mismatch of function %qs at %L (%s/%s)"
  msgstr ""
  
! #: fortran/resolve.cc:2783
  #, gcc-internal-format
  msgid "Interface mismatch in global procedure %qs at %L: %s"
  msgstr ""
  
! #: fortran/resolve.cc:2895
  #, gcc-internal-format
  msgid "There is no specific function for the generic %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2915
  #, gcc-internal-format
  msgid "Generic function %qs at %L is not consistent with a specific intrinsic interface"
  msgstr ""
  
! #: fortran/resolve.cc:2953
  #, gcc-internal-format
  msgid "Function %qs at %L is INTRINSIC but is not compatible with an intrinsic"
  msgstr ""
  
! #: fortran/resolve.cc:3014
  #, gcc-internal-format
  msgid "Unable to resolve the specific function %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3091
  #, gcc-internal-format
  msgid "Missing explicit declaration with EXTERNAL attribute for symbol %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3126
  #, gcc-internal-format
  msgid "Function %qs at %L has no IMPLICIT type; did you mean %qs?"
  msgstr ""
  
! #: fortran/resolve.cc:3130 fortran/resolve.cc:19066
  #, gcc-internal-format
  msgid "Function %qs at %L has no IMPLICIT type"
  msgstr ""
  
! #: fortran/resolve.cc:3284
  #, gcc-internal-format, gfc-internal-format
  msgid "Reference to impure function at %L inside a DO CONCURRENT"
  msgstr ""
  
! #: fortran/resolve.cc:3295
  #, gcc-internal-format
  msgid "Reference to impure function %qs at %L inside a FORALL %s"
  msgstr ""
  
! #: fortran/resolve.cc:3302
  #, gcc-internal-format
  msgid "Reference to impure function %qs at %L inside a DO CONCURRENT %s"
  msgstr ""
  
! #: fortran/resolve.cc:3309
  #, gcc-internal-format
  msgid "Reference to impure function %qs at %L within a PURE procedure"
  msgstr ""
  
! #: fortran/resolve.cc:3376
  #, gcc-internal-format
  msgid "Unexpected junk after %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3387
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function,"
  msgid "%qs at %L is not a function"
  msgstr "`%D' - Ð³Ñ�Ñ‚Ð° Ð½Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ�,"
  
! #: fortran/resolve.cc:3395 fortran/resolve.cc:3967
  #, gcc-internal-format
  msgid "ABSTRACT INTERFACE %qs must not be referenced at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3407
  #, gcc-internal-format
  msgid "ABSTRACT INTERFACE %qs at %L must not have an assumed character length result (F2008: C418)"
  msgstr ""
  
  #. Internal procedures are taken care of in resolve_contained_fntype.
! #: fortran/resolve.cc:3450
  #, gcc-internal-format
  msgid "Function %qs is declared CHARACTER(*) and cannot be used at %L since it is not a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:3471
  #, gcc-internal-format, gfc-internal-format
  msgid "Different argument lists in external dummy function %s at %L and %L"
  msgstr ""
  
! #: fortran/resolve.cc:3510
  #, gcc-internal-format
  msgid "resolve_function(): bad function type"
  msgstr ""
  
! #: fortran/resolve.cc:3524
  #, gcc-internal-format, gfc-internal-format
  msgid "A BOZ literal constant at %L cannot appear as an actual argument in a function reference"
  msgstr ""
  
! #: fortran/resolve.cc:3540
  #, gcc-internal-format
  msgid "User defined non-ELEMENTAL function %qs at %L not allowed in WORKSHARE construct"
  msgstr ""
  
! #: fortran/resolve.cc:3602
  #, gcc-internal-format
  msgid "ENTRY %qs at %L cannot be called recursively, as function %qs is not RECURSIVE"
  msgstr ""
  
! #: fortran/resolve.cc:3606
  #, gcc-internal-format
  msgid "Function %qs at %L cannot be called recursively, as it is not RECURSIVE"
  msgstr ""
  
! #: fortran/resolve.cc:3664
  #, gcc-internal-format
  msgid "Using function %qs at %L is deprecated"
  msgstr ""
  
! #: fortran/resolve.cc:3702
  #, gcc-internal-format, gfc-internal-format
  msgid "Subroutine call at %L in a DO CONCURRENT block is not PURE"
  msgstr ""
  
! #: fortran/resolve.cc:3711
  #, gcc-internal-format
  msgid "Subroutine call to %qs in FORALL block at %L is not PURE"
  msgstr ""
  
! #: fortran/resolve.cc:3717
  #, gcc-internal-format
  msgid "Subroutine call to %qs in DO CONCURRENT block at %L is not PURE"
  msgstr ""
  
! #: fortran/resolve.cc:3723
  #, gcc-internal-format
  msgid "Subroutine call to %qs at %L is not PURE"
  msgstr ""
  
! #: fortran/resolve.cc:3791
  #, gcc-internal-format
  msgid "There is no specific subroutine for the generic %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3800
  #, gcc-internal-format
  msgid "Generic subroutine %qs at %L is not consistent with an intrinsic subroutine interface"
  msgstr ""
  
! #: fortran/resolve.cc:3835
  #, gcc-internal-format
  msgid "Subroutine %qs at %L is INTRINSIC but is not compatible with an intrinsic"
  msgstr ""
  
! #: fortran/resolve.cc:3880
  #, gcc-internal-format
  msgid "Unable to resolve the specific subroutine %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3938
  #, gcc-internal-format
  msgid "%qs at %L has a type, which is not consistent with the CALL at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3977
  #, gcc-internal-format
  msgid "ENTRY %qs at %L cannot be called recursively, as subroutine %qs is not RECURSIVE"
  msgstr ""
  
! #: fortran/resolve.cc:3981
  #, gcc-internal-format
  msgid "SUBROUTINE %qs at %L cannot be called recursively, as it is not RECURSIVE"
  msgstr ""
  
! #: fortran/resolve.cc:4032
  #, gcc-internal-format, gfc-internal-format
  msgid "Different argument lists in external dummy subroutine %s at %L and %L"
  msgstr ""
  
! #: fortran/resolve.cc:4063
  #, gcc-internal-format
  msgid "resolve_subroutine(): bad function type"
  msgstr ""
  
! #: fortran/resolve.cc:4080
  #, gcc-internal-format
  msgid "Using subroutine %qs at %L is deprecated"
  msgstr ""
  
! #: fortran/resolve.cc:4107
  #, gcc-internal-format, gfc-internal-format
  msgid "Shapes for operands at %L and %L are not conformable"
  msgstr ""
  
! #: fortran/resolve.cc:4159
  #, gcc-internal-format
  msgid "logical_to_bitwise(): Bad intrinsic"
  msgstr ""
  
! #: fortran/resolve.cc:4262
  #, gcc-internal-format
  msgid "Impure function %qs at %L might not be evaluated"
  msgstr ""
  
! #: fortran/resolve.cc:4266
  #, gcc-internal-format, gfc-internal-format
  msgid "Impure function at %L might not be evaluated"
  msgstr ""
  
! #: fortran/resolve.cc:4361
  #, gcc-internal-format
  msgid "BOZ literal constant at %L cannot be an operand of unary operator %qs"
  msgstr ""
  
! #: fortran/resolve.cc:4369
  #, gcc-internal-format, gfc-internal-format
  msgid "Negation of unsigned expression at %L not permitted "
  msgstr ""
  
! #: fortran/resolve.cc:4390
  #, gcc-internal-format
  msgid "Operands at %L and %L cannot appear as operands of binary operator %qs"
  msgstr ""
  
! #: fortran/resolve.cc:4400
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid context for NULL() pointer at %L"
  msgstr ""
  
! #: fortran/resolve.cc:4418
  #, gcc-internal-format
  msgid "Operand of unary numeric operator %qs at %L is %s"
  msgstr ""
  
! #: fortran/resolve.cc:4433 fortran/resolve.cc:4467
  #, gcc-internal-format
  msgid "Operands of binary numeric operator %qs at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4447 fortran/resolve.cc:4636 fortran/resolve.cc:4805
  #, gcc-internal-format, gfc-internal-format
  msgid "Inconsistent ranks for operator at %L and %L"
  msgstr ""
  
! #: fortran/resolve.cc:4459
  #, gcc-internal-format
  msgid "Unexpected derived-type entities in binary intrinsic numeric operator %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:4483
  #, gcc-internal-format, gfc-internal-format
  msgid "Operands of string concatenation operator at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4526
  #, gcc-internal-format
  msgid "Operands of logical operator %qs at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4549
  #, gcc-internal-format, gfc-internal-format
  msgid "Operand of .not. operator at %L is %s"
  msgstr ""
  
! #: fortran/resolve.cc:4564
  #, gcc-internal-format, gfc-internal-format
  msgid "COMPLEX quantities cannot be compared at %L"
  msgstr ""
  
! #: fortran/resolve.cc:4594 fortran/resolve.cc:4609
  #, gcc-internal-format, gfc-internal-format
  msgid "BOZ literal constant near %L cannot appear as an operand of a relational operator"
  msgstr ""
  
! #: fortran/resolve.cc:4644
  #, gcc-internal-format, gfc-internal-format
  msgid "Inconsistent types for operator at %L and %L: %s and %s"
  msgstr ""
  
! #: fortran/resolve.cc:4668
  #, gcc-internal-format, gfc-internal-format
  msgid "Equality comparison for %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:4670
  #, gcc-internal-format, gfc-internal-format
  msgid "Inequality comparison for %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:4683
  #, gcc-internal-format, gfc-internal-format
  msgid "Logicals at %L must be compared with %s instead of %s"
  msgstr ""
  
! #: fortran/resolve.cc:4691
  #, gcc-internal-format
  msgid "Operands of comparison operator %qs at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4706
  #, gcc-internal-format
  msgid "Unknown operator %qs at %L; did you mean %qs?"
  msgstr ""
  
! #: fortran/resolve.cc:4709
  #, gcc-internal-format
  msgid "Unknown operator %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:4714
  #, gcc-internal-format
  msgid "Operand of user operator %qs at %L is %s"
  msgstr ""
  
! #: fortran/resolve.cc:4721
  #, gcc-internal-format
  msgid "Operands of user operator %qs at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4735
  #, gcc-internal-format
  msgid "resolve_operator(): Bad intrinsic"
  msgstr ""
  
! #: fortran/resolve.cc:5004
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference at %L is out of bounds (%ld < %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5009
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference at %L is out of bounds (%ld < %ld) in codimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5019
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference at %L is out of bounds (%ld > %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5024
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference at %L is out of bounds (%ld > %ld) in codimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5045
  #, gcc-internal-format, gfc-internal-format
  msgid "Illegal stride of zero at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5062
  #, gcc-internal-format, gfc-internal-format
  msgid "Lower array reference at %L is out of bounds (%ld < %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5070
  #, gcc-internal-format, gfc-internal-format
  msgid "Lower array reference at %L is out of bounds (%ld > %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5086
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper array reference at %L is out of bounds (%ld < %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5095
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper array reference at %L is out of bounds (%ld > %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5111
  #, gcc-internal-format
  msgid "check_dimension(): Bad array reference"
  msgstr ""
  
! #: fortran/resolve.cc:5134
  #, gcc-internal-format, gfc-internal-format
  msgid "Rightmost upper bound of assumed size array section not specified at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5144
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank mismatch in array reference at %L (%d/%d)"
  msgstr ""
  
! #: fortran/resolve.cc:5152
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindex rank mismatch in array reference at %L (%d/%d)"
  msgstr ""
  
! #: fortran/resolve.cc:5168
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindex of codimension %d must be a scalar at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5196
  #, gcc-internal-format, gfc-internal-format
  msgid "Array index at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5202
  #, gcc-internal-format, gfc-internal-format
  msgid "Array index at %L must be of INTEGER type, found %s"
  msgstr ""
  
! #: fortran/resolve.cc:5208
  #, gcc-internal-format, gfc-internal-format
  msgid "REAL array index at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5248
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Argument dim at %L must be scalar"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: fortran/resolve.cc:5255
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument dim at %L must be of INTEGER type"
  msgstr ""
  
! #: fortran/resolve.cc:5316
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid array reference of a non-array entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5331
  #, gcc-internal-format
  msgid "find_array_spec(): unused as(1)"
  msgstr ""
  
! #: fortran/resolve.cc:5343
  #, gcc-internal-format
  msgid "find_array_spec(): unused as(2)"
  msgstr ""
  
! #: fortran/resolve.cc:5388
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Array index at %L is an array of rank %d"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð²ÐµÐ»ÑŒÐ¼Ñ– Ð²Ñ�Ð»Ñ–ÐºÑ–"
  
! #: fortran/resolve.cc:5479
  #, gcc-internal-format, gfc-internal-format
  msgid "TEAM_NUMBER argument at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5486
  #, gcc-internal-format, gfc-internal-format
  msgid "TEAM_NUMBER argument at %L must be of INTEGER type, found %s"
  msgstr ""
  
! #: fortran/resolve.cc:5500
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "TEAM argument at %L must be scalar"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: fortran/resolve.cc:5509
  #, gcc-internal-format, gfc-internal-format
  msgid "TEAM argument at %L must be of TEAM_TYPE from the intrinsic module ISO_FORTRAN_ENV, found %s"
  msgstr ""
  
! #: fortran/resolve.cc:5523
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "STAT argument at %L must be scalar"
  msgstr "Ð¿ÐµÑ€ÑˆÑ‹Ð¼ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼ \"%s\" Ð¿Ð°Ð²Ñ–Ð½ÐµÐ½ Ð±Ñ‹Ñ†ÑŒ \"int\""
  
! #: fortran/resolve.cc:5530
  #, gcc-internal-format, gfc-internal-format
  msgid "STAT argument at %L must be of INTEGER type, found %s"
  msgstr ""
  
! #: fortran/resolve.cc:5539
  #, gcc-internal-format, gfc-internal-format
  msgid "STAT's expression at %L must be a variable"
  msgstr ""
  
! #: fortran/resolve.cc:5561
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring start index at %L must be of type INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:5568
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring start index at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5590
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring end index at %L must be of type INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:5597
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring end index at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5617
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "size of array `%s' is too large"
  msgid "Substring end index at %L is too large"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð²ÐµÐ»ÑŒÐ¼Ñ– Ð²Ñ�Ð»Ñ–ÐºÑ–"
  
! #: fortran/resolve.cc:5808
  #, gcc-internal-format
  msgid "resolve_ref(): Bad array reference"
  msgstr ""
  
! #: fortran/resolve.cc:5822
  #, gcc-internal-format, gfc-internal-format
  msgid "Component to the right of a part reference with nonzero rank must not have the POINTER attribute at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5832
  #, gcc-internal-format, gfc-internal-format
  msgid "Component to the right of a part reference with nonzero rank must not have the ALLOCATABLE attribute at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5880
  #, gcc-internal-format, gfc-internal-format
  msgid "Two or more part references with nonzero rank must not be specified at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5992
  #, gcc-internal-format
  msgid "gfc_expression_rank(): Two array specs"
  msgstr ""
  
! #: fortran/resolve.cc:6021
  #, gcc-internal-format
  msgid "Illegal coarray index"
  msgstr ""
  
! #: fortran/resolve.cc:6069
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute may only be used as actual argument"
  msgstr ""
  
! #: fortran/resolve.cc:6079
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L may only be used as actual argument"
  msgstr ""
*************** msgstr ""
*** 82453,82464 ****
  #. for all inquiry functions in resolve_function; the reason is
  #. that the function-name resolution happens too late in that
  #. function.
! #: fortran/resolve.cc:6116
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L as actual argument to an inquiry function shall be the first argument"
  msgstr ""
  
! #: fortran/resolve.cc:6137
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank variable %s at %L may only be used as actual argument"
  msgstr ""
--- 82533,82544 ----
  #. for all inquiry functions in resolve_function; the reason is
  #. that the function-name resolution happens too late in that
  #. function.
! #: fortran/resolve.cc:6089
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L as actual argument to an inquiry function shall be the first argument"
  msgstr ""
  
! #: fortran/resolve.cc:6110
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank variable %s at %L may only be used as actual argument"
  msgstr ""
*************** msgstr ""
*** 82467,82875 ****
  #. for all inquiry functions in resolve_function; the reason is
  #. that the function-name resolution happens too late in that
  #. function.
! #: fortran/resolve.cc:6147
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank variable %s at %L as actual argument to an inquiry function shall be the first argument"
  msgstr ""
  
! #: fortran/resolve.cc:6158
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute shall not have a subobject reference"
  msgstr ""
  
! #: fortran/resolve.cc:6167
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L shall not have a subobject reference"
  msgstr ""
  
! #: fortran/resolve.cc:6184
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank variable %s at %L shall not have a subobject reference"
  msgstr ""
  
! #: fortran/resolve.cc:6245
  #, gcc-internal-format
  msgid "Scalar variable %qs has an array reference at %L"
  msgstr ""
  
! #: fortran/resolve.cc:6401
  #, gcc-internal-format
  msgid "Variable %qs, used in a specification expression, is referenced at %L before the ENTRY statement in which it is a parameter"
  msgstr ""
  
! #: fortran/resolve.cc:6406
  #, gcc-internal-format
  msgid "Variable %qs is used at %L before the ENTRY statement in which it is a parameter"
  msgstr ""
  
! #: fortran/resolve.cc:6480
  #, gcc-internal-format, gfc-internal-format
  msgid "Polymorphic subobject of coindexed object at %L"
  msgstr ""
  
! #: fortran/resolve.cc:6493
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed object with polymorphic allocatable subcomponent at %L"
  msgstr ""
  
! #: fortran/resolve.cc:6506
  #, gcc-internal-format
  msgid "Using variable %qs at %L is deprecated"
  msgstr ""
  
! #: fortran/resolve.cc:6562 fortran/resolve.cc:6650 fortran/resolve.cc:6674
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid parameter type `%T'"
  msgid "Invalid array reference at %L"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ‚Ñ‹Ð¿ Ð¿Ð°Ñ€Ð°Ð¼Ñ�Ñ‚Ñ€Ð° `%T'"
  
! #: fortran/resolve.cc:6759
  #, gcc-internal-format
  msgid "%qs at %L is host associated at %L into a contained procedure with an internal procedure of the same name"
  msgstr ""
  
! #: fortran/resolve.cc:6938 fortran/resolve.cc:7090
  #, gcc-internal-format, gfc-internal-format
  msgid "Error in typebound call at %L"
  msgstr ""
  
! #: fortran/resolve.cc:7054
  #, gcc-internal-format, gfc-internal-format
  msgid "Passed-object at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:7061
  #, gcc-internal-format
  msgid "Base object for procedure-pointer component call at %L is of ABSTRACT type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:7100
  #, gcc-internal-format
  msgid "Base object for type-bound procedure call at %L is of ABSTRACT type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:7109
  #, gcc-internal-format, gfc-internal-format
  msgid "Base object for NOPASS type-bound procedure call at %L must be scalar"
  msgstr ""
  
  #. Nothing matching found!
! #: fortran/resolve.cc:7304
  #, gcc-internal-format
  msgid "Found no matching specific binding for the call to the GENERIC %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:7338
  #, gcc-internal-format
  msgid "%qs at %L should be a SUBROUTINE"
  msgstr ""
  
! #: fortran/resolve.cc:7391
  #, gcc-internal-format
  msgid "%qs at %L should be a FUNCTION"
  msgstr ""
  
! #: fortran/resolve.cc:7932
  #, gcc-internal-format
  msgid "gfc_resolve_expr(): Bad expression type"
  msgstr ""
  
! #: fortran/resolve.cc:7965
  #, gcc-internal-format, gfc-internal-format
  msgid "%s at %L must be a scalar"
  msgstr ""
  
! #: fortran/resolve.cc:7975
  #, gcc-internal-format, gfc-internal-format
  msgid "%s at %L must be integer"
  msgstr ""
  
! #: fortran/resolve.cc:7979 fortran/resolve.cc:7986
  #, gcc-internal-format, gfc-internal-format
  msgid "%s at %L must be INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:8041
  #, gcc-internal-format, gfc-internal-format
  msgid "Step expression in DO loop at %L cannot be zero"
  msgstr ""
  
! #: fortran/resolve.cc:8064
  #, gcc-internal-format, gfc-internal-format
  msgid "DO loop at %L will be executed zero times"
  msgstr ""
  
! #: fortran/resolve.cc:8081
  #, gcc-internal-format, gfc-internal-format
  msgid "DO loop at %L is undefined as it overflows"
  msgstr ""
  
! #: fortran/resolve.cc:8087
  #, gcc-internal-format, gfc-internal-format
  msgid "DO loop at %L is undefined as it underflows"
  msgstr ""
  
! #: fortran/resolve.cc:8147
  #, gcc-internal-format
  msgid "Variable %qs referenced in concurrent-header at %L must not appear in LOCAL locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8183
  #, gcc-internal-format
  msgid "Variable %qs at %L not specified in a locality spec of DO CONCURRENT at %L but required due to DEFAULT (NONE)"
  msgstr ""
  
! #: fortran/resolve.cc:8235
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected variable name in %s locality spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8244
  #, gcc-internal-format
  msgid "Variable %qs at %L has already been specified in a locality-spec"
  msgstr ""
  
! #: fortran/resolve.cc:8254
  #, gcc-internal-format
  msgid "Index variable %qs at %L cannot be specified in a locality-spec"
  msgstr ""
  
! #: fortran/resolve.cc:8267
  #, gcc-internal-format
  msgid "OPTIONAL attribute not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8274
  #, gcc-internal-format
  msgid "Assumed-size array not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8287
  #, gcc-internal-format
  msgid "ALLOCATABLE attribute not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8292
  #, gcc-internal-format
  msgid "Nonpointer polymorphic dummy argument not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8297
  #, gcc-internal-format
  msgid "Coarray not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8303
  #, gcc-internal-format
  msgid "Finalizable type not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8308
  #, gcc-internal-format
  msgid "Type with ultimate allocatable component not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8316
  #, gcc-internal-format
  msgid "ASYNCHRONOUS attribute not permitted for %qs in REDUCE locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8320
  #, gcc-internal-format
  msgid "VOLATILE attribute not permitted for %qs in REDUCE locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8374
  #, gcc-internal-format
  msgid "Expected numeric type for %qs in REDUCE at %L, got %s"
  msgstr ""
  
! #: fortran/resolve.cc:8383
  #, gcc-internal-format
  msgid "Expected logical type for %qs in REDUCE at %L, got %qs"
  msgstr ""
  
! #: fortran/resolve.cc:8401
  #, gcc-internal-format
  msgid "Expected INTEGER, REAL or CHARACTER type for %qs in REDUCE with MIN/MAX at %L, got %s"
  msgstr ""
  
! #: fortran/resolve.cc:8410
  #, gcc-internal-format
  msgid "Expected integer type for %qs in REDUCE with IAND/IOR/IEOR at %L, got %s"
  msgstr ""
  
! #: fortran/resolve.cc:8448
  #, gcc-internal-format
  msgid "Variable %qs in locality-spec at %L is not used"
  msgstr ""
  
! #: fortran/resolve.cc:8479
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL index-name at %L must be a scalar INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:8484
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL start expression at %L must be a scalar INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:8491
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL end expression at %L must be a scalar INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:8499
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL stride expression at %L must be a scalar %s"
  msgstr ""
  
! #: fortran/resolve.cc:8504
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL stride expression at %L cannot be zero"
  msgstr ""
  
! #: fortran/resolve.cc:8517
  #, gcc-internal-format
  msgid "FORALL index %qs may not appear in triplet specification at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8622 fortran/resolve.cc:8928
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
  msgstr ""
  
! #: fortran/resolve.cc:8630 fortran/resolve.cc:8891
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed allocatable object at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8748
  #, gcc-internal-format, gfc-internal-format
  msgid "Source-expr at %L must be scalar or have the same rank as the allocate-object at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8779
  #, gcc-internal-format, gfc-internal-format
  msgid "Source-expr at %L and allocate-object at %L must have the same shape"
  msgstr ""
  
! #: fortran/resolve.cc:8943
  #, gcc-internal-format, gfc-internal-format
  msgid "The intrinsic NULL cannot be used as source-expr at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8951
  #, gcc-internal-format, gfc-internal-format
  msgid "Type of entity at %L is type incompatible with source-expr at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8963
  #, gcc-internal-format, gfc-internal-format
  msgid "The allocate-object at %L and the source-expr at %L shall have the same kind type parameter"
  msgstr ""
  
! #: fortran/resolve.cc:8977
  #, gcc-internal-format, gfc-internal-format
  msgid "The source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:9002
  #, gcc-internal-format, gfc-internal-format
  msgid "The source-expr at %L shall neither be of type EVENT_TYPE nor have a EVENT_TYPE component if allocate-object at %L is a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:9015
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr"
  msgstr ""
  
! #: fortran/resolve.cc:9029
  #, gcc-internal-format
  msgid "The type parameter in ALLOCATE statement with type-spec shall be an asterisk as allocate object %qs at %L is a dummy argument with assumed type parameter"
  msgstr ""
  
! #: fortran/resolve.cc:9049
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocating %s at %L with type-spec requires the same character-length parameter as in the declaration"
  msgstr ""
  
! #: fortran/resolve.cc:9133 fortran/resolve.cc:9148
  #, gcc-internal-format, gfc-internal-format
  msgid "Array specification required in ALLOCATE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9140
  #, gcc-internal-format, gfc-internal-format
  msgid "Array specification or array-valued SOURCE= expression required in ALLOCATE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9165
  #, gcc-internal-format, gfc-internal-format
  msgid "Coarray specification required in ALLOCATE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9175 fortran/resolve.cc:9277
  #, gcc-internal-format, gfc-internal-format
  msgid "Bad coarray specification in ALLOCATE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9181
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper cobound is less than lower cobound at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9193
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper cobound is less than lower cobound of 1 at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9204 fortran/resolve.cc:9232
  #, gcc-internal-format, gfc-internal-format
  msgid "Bad array specification in ALLOCATE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9251
  #, gcc-internal-format
  msgid "%qs must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated"
  msgstr ""
  
! #: fortran/resolve.cc:9266
  #, gcc-internal-format
  msgid "Expected %<*%> in coindex specification in ALLOCATE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9308
  #, gcc-internal-format, gfc-internal-format
  msgid "Stat-variable at %L must be a scalar INTEGER variable"
  msgstr ""
  
! #: fortran/resolve.cc:9337
  #, gcc-internal-format, gfc-internal-format
  msgid "Stat-variable at %L shall not be %sd within the same %s statement"
  msgstr ""
  
! #: fortran/resolve.cc:9350
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG at %L is useless without a STAT tag"
  msgstr ""
  
! #: fortran/resolve.cc:9364
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG variable at %L shall be a scalar default CHARACTER variable"
  msgstr ""
  
! #: fortran/resolve.cc:9393
  #, gcc-internal-format, gfc-internal-format
  msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
  msgstr ""
  
! #: fortran/resolve.cc:9425
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L also appears at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9431 fortran/resolve.cc:9437
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L is subobject of object at %L"
  msgstr ""
--- 82547,82960 ----
  #. for all inquiry functions in resolve_function; the reason is
  #. that the function-name resolution happens too late in that
  #. function.
! #: fortran/resolve.cc:6120
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank variable %s at %L as actual argument to an inquiry function shall be the first argument"
  msgstr ""
  
! #: fortran/resolve.cc:6131
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute shall not have a subobject reference"
  msgstr ""
  
! #: fortran/resolve.cc:6140
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L shall not have a subobject reference"
  msgstr ""
  
! #: fortran/resolve.cc:6157
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank variable %s at %L shall not have a subobject reference"
  msgstr ""
  
! #: fortran/resolve.cc:6218
  #, gcc-internal-format
  msgid "Scalar variable %qs has an array reference at %L"
  msgstr ""
  
! #: fortran/resolve.cc:6374
  #, gcc-internal-format
  msgid "Variable %qs, used in a specification expression, is referenced at %L before the ENTRY statement in which it is a parameter"
  msgstr ""
  
! #: fortran/resolve.cc:6379
  #, gcc-internal-format
  msgid "Variable %qs is used at %L before the ENTRY statement in which it is a parameter"
  msgstr ""
  
! #: fortran/resolve.cc:6453
  #, gcc-internal-format, gfc-internal-format
  msgid "Polymorphic subobject of coindexed object at %L"
  msgstr ""
  
! #: fortran/resolve.cc:6466
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed object with polymorphic allocatable subcomponent at %L"
  msgstr ""
  
! #: fortran/resolve.cc:6479
  #, gcc-internal-format
  msgid "Using variable %qs at %L is deprecated"
  msgstr ""
  
! #: fortran/resolve.cc:6535 fortran/resolve.cc:6623 fortran/resolve.cc:6647
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid parameter type `%T'"
  msgid "Invalid array reference at %L"
  msgstr "Ð½ÐµÑ€Ñ�Ñ‡Ð°Ñ–Ñ�Ð½Ñ‹ Ñ‚Ñ‹Ð¿ Ð¿Ð°Ñ€Ð°Ð¼Ñ�Ñ‚Ñ€Ð° `%T'"
  
! #: fortran/resolve.cc:6732
  #, gcc-internal-format
  msgid "%qs at %L is host associated at %L into a contained procedure with an internal procedure of the same name"
  msgstr ""
  
! #: fortran/resolve.cc:6911 fortran/resolve.cc:7063
  #, gcc-internal-format, gfc-internal-format
  msgid "Error in typebound call at %L"
  msgstr ""
  
! #: fortran/resolve.cc:7027
  #, gcc-internal-format, gfc-internal-format
  msgid "Passed-object at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:7034
  #, gcc-internal-format
  msgid "Base object for procedure-pointer component call at %L is of ABSTRACT type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:7073
  #, gcc-internal-format
  msgid "Base object for type-bound procedure call at %L is of ABSTRACT type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:7082
  #, gcc-internal-format, gfc-internal-format
  msgid "Base object for NOPASS type-bound procedure call at %L must be scalar"
  msgstr ""
  
  #. Nothing matching found!
! #: fortran/resolve.cc:7277
  #, gcc-internal-format
  msgid "Found no matching specific binding for the call to the GENERIC %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:7311
  #, gcc-internal-format
  msgid "%qs at %L should be a SUBROUTINE"
  msgstr ""
  
! #: fortran/resolve.cc:7364
  #, gcc-internal-format
  msgid "%qs at %L should be a FUNCTION"
  msgstr ""
  
! #: fortran/resolve.cc:7905
  #, gcc-internal-format
  msgid "gfc_resolve_expr(): Bad expression type"
  msgstr ""
  
! #: fortran/resolve.cc:7938
  #, gcc-internal-format, gfc-internal-format
  msgid "%s at %L must be a scalar"
  msgstr ""
  
! #: fortran/resolve.cc:7948
  #, gcc-internal-format, gfc-internal-format
  msgid "%s at %L must be integer"
  msgstr ""
  
! #: fortran/resolve.cc:7952 fortran/resolve.cc:7959
  #, gcc-internal-format, gfc-internal-format
  msgid "%s at %L must be INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:8014
  #, gcc-internal-format, gfc-internal-format
  msgid "Step expression in DO loop at %L cannot be zero"
  msgstr ""
  
! #: fortran/resolve.cc:8037
  #, gcc-internal-format, gfc-internal-format
  msgid "DO loop at %L will be executed zero times"
  msgstr ""
  
! #: fortran/resolve.cc:8054
  #, gcc-internal-format, gfc-internal-format
  msgid "DO loop at %L is undefined as it overflows"
  msgstr ""
  
! #: fortran/resolve.cc:8060
  #, gcc-internal-format, gfc-internal-format
  msgid "DO loop at %L is undefined as it underflows"
  msgstr ""
  
! #: fortran/resolve.cc:8120
  #, gcc-internal-format
  msgid "Variable %qs referenced in concurrent-header at %L must not appear in LOCAL locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8156
  #, gcc-internal-format
  msgid "Variable %qs at %L not specified in a locality spec of DO CONCURRENT at %L but required due to DEFAULT (NONE)"
  msgstr ""
  
! #: fortran/resolve.cc:8208
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected variable name in %s locality spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8217
  #, gcc-internal-format
  msgid "Variable %qs at %L has already been specified in a locality-spec"
  msgstr ""
  
! #: fortran/resolve.cc:8227
  #, gcc-internal-format
  msgid "Index variable %qs at %L cannot be specified in a locality-spec"
  msgstr ""
  
! #: fortran/resolve.cc:8240
  #, gcc-internal-format
  msgid "OPTIONAL attribute not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8247
  #, gcc-internal-format
  msgid "Assumed-size array not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8260
  #, gcc-internal-format
  msgid "ALLOCATABLE attribute not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8265
  #, gcc-internal-format
  msgid "Nonpointer polymorphic dummy argument not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8270
  #, gcc-internal-format
  msgid "Coarray not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8276
  #, gcc-internal-format
  msgid "Finalizable type not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8281
  #, gcc-internal-format
  msgid "Type with ultimate allocatable component not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8289
  #, gcc-internal-format
  msgid "ASYNCHRONOUS attribute not permitted for %qs in REDUCE locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8293
  #, gcc-internal-format
  msgid "VOLATILE attribute not permitted for %qs in REDUCE locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8347
  #, gcc-internal-format
  msgid "Expected numeric type for %qs in REDUCE at %L, got %s"
  msgstr ""
  
! #: fortran/resolve.cc:8356
  #, gcc-internal-format
  msgid "Expected logical type for %qs in REDUCE at %L, got %qs"
  msgstr ""
  
! #: fortran/resolve.cc:8374
  #, gcc-internal-format
  msgid "Expected INTEGER, REAL or CHARACTER type for %qs in REDUCE with MIN/MAX at %L, got %s"
  msgstr ""
  
! #: fortran/resolve.cc:8383
  #, gcc-internal-format
  msgid "Expected integer type for %qs in REDUCE with IAND/IOR/IEOR at %L, got %s"
  msgstr ""
  
! #: fortran/resolve.cc:8421
  #, gcc-internal-format
  msgid "Variable %qs in locality-spec at %L is not used"
  msgstr ""
  
! #: fortran/resolve.cc:8452
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL index-name at %L must be a scalar INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:8457
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL start expression at %L must be a scalar INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:8464
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL end expression at %L must be a scalar INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:8472
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL stride expression at %L must be a scalar %s"
  msgstr ""
  
! #: fortran/resolve.cc:8477
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL stride expression at %L cannot be zero"
  msgstr ""
  
! #: fortran/resolve.cc:8490
  #, gcc-internal-format
  msgid "FORALL index %qs may not appear in triplet specification at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8595 fortran/resolve.cc:8918
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
  msgstr ""
  
! #: fortran/resolve.cc:8603 fortran/resolve.cc:8881
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed allocatable object at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8727
! #, gcc-internal-format, gfc-internal-format
! msgid "Allocate-object at %L has rank %d but MOLD= expression at %L has rank %d"
! msgstr ""
! 
! #: fortran/resolve.cc:8738
  #, gcc-internal-format, gfc-internal-format
  msgid "Source-expr at %L must be scalar or have the same rank as the allocate-object at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8769
  #, gcc-internal-format, gfc-internal-format
  msgid "Source-expr at %L and allocate-object at %L must have the same shape"
  msgstr ""
  
! #: fortran/resolve.cc:8933
  #, gcc-internal-format, gfc-internal-format
  msgid "The intrinsic NULL cannot be used as source-expr at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8941
  #, gcc-internal-format, gfc-internal-format
  msgid "Type of entity at %L is type incompatible with source-expr at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8953
  #, gcc-internal-format, gfc-internal-format
  msgid "The allocate-object at %L and the source-expr at %L shall have the same kind type parameter"
  msgstr ""
  
! #: fortran/resolve.cc:8967
  #, gcc-internal-format, gfc-internal-format
  msgid "The source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:8992
  #, gcc-internal-format, gfc-internal-format
  msgid "The source-expr at %L shall neither be of type EVENT_TYPE nor have a EVENT_TYPE component if allocate-object at %L is a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:9005
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr"
  msgstr ""
  
! #: fortran/resolve.cc:9019
  #, gcc-internal-format
  msgid "The type parameter in ALLOCATE statement with type-spec shall be an asterisk as allocate object %qs at %L is a dummy argument with assumed type parameter"
  msgstr ""
  
! #: fortran/resolve.cc:9039
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocating %s at %L with type-spec requires the same character-length parameter as in the declaration"
  msgstr ""
  
! #: fortran/resolve.cc:9123 fortran/resolve.cc:9138
  #, gcc-internal-format, gfc-internal-format
  msgid "Array specification required in ALLOCATE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9130
  #, gcc-internal-format, gfc-internal-format
  msgid "Array specification or array-valued SOURCE= expression required in ALLOCATE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9155
  #, gcc-internal-format, gfc-internal-format
  msgid "Coarray specification required in ALLOCATE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9165 fortran/resolve.cc:9267
  #, gcc-internal-format, gfc-internal-format
  msgid "Bad coarray specification in ALLOCATE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9171
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper cobound is less than lower cobound at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9183
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper cobound is less than lower cobound of 1 at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9194 fortran/resolve.cc:9222
  #, gcc-internal-format, gfc-internal-format
  msgid "Bad array specification in ALLOCATE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9241
  #, gcc-internal-format
  msgid "%qs must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated"
  msgstr ""
  
! #: fortran/resolve.cc:9256
  #, gcc-internal-format
  msgid "Expected %<*%> in coindex specification in ALLOCATE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9298
  #, gcc-internal-format, gfc-internal-format
  msgid "Stat-variable at %L must be a scalar INTEGER variable"
  msgstr ""
  
! #: fortran/resolve.cc:9327
  #, gcc-internal-format, gfc-internal-format
  msgid "Stat-variable at %L shall not be %sd within the same %s statement"
  msgstr ""
  
! #: fortran/resolve.cc:9340
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG at %L is useless without a STAT tag"
  msgstr ""
  
! #: fortran/resolve.cc:9354
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG variable at %L shall be a scalar default CHARACTER variable"
  msgstr ""
  
! #: fortran/resolve.cc:9383
  #, gcc-internal-format, gfc-internal-format
  msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
  msgstr ""
  
! #: fortran/resolve.cc:9415
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L also appears at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9421 fortran/resolve.cc:9427
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L is subobject of object at %L"
  msgstr ""
*************** msgstr ""
*** 82878,83166 ****
  #. element in the list.  Either way, we must
  #. issue an error and get the next case from P.
  #. FIXME: Sort P and Q by line number.
! #: fortran/resolve.cc:9665
  #, gcc-internal-format, gfc-internal-format
  msgid "CASE label at %L overlaps with CASE label at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9716
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE statement at %L must be of type %s"
  msgstr ""
  
! #: fortran/resolve.cc:9727
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE statement at %L must be of kind %d"
  msgstr ""
  
! #: fortran/resolve.cc:9740
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE statement at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:9786
  #, gcc-internal-format, gfc-internal-format
  msgid "Selection expression in computed GOTO statement at %L must be a scalar integer expression"
  msgstr ""
  
! #: fortran/resolve.cc:9807
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of SELECT statement at %L cannot be %s"
  msgstr ""
  
! #: fortran/resolve.cc:9817
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of SELECT statement at %L must be a scalar expression"
  msgstr ""
  
! #: fortran/resolve.cc:9835 fortran/resolve.cc:9843
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE statement at %L is not in the range of %s"
  msgstr ""
  
! #: fortran/resolve.cc:9905 fortran/resolve.cc:10739
  #, gcc-internal-format, gfc-internal-format
  msgid "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9931
  #, gcc-internal-format, gfc-internal-format
  msgid "Logical range in CASE statement at %L is not allowed"
  msgstr ""
  
! #: fortran/resolve.cc:9944
  #, gcc-internal-format, gfc-internal-format
  msgid "Constant logical value in CASE statement is repeated at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9959
  #, gcc-internal-format, gfc-internal-format
  msgid "Range specification at %L can never be matched"
  msgstr ""
  
! #: fortran/resolve.cc:10062
  #, gcc-internal-format, gfc-internal-format
  msgid "Logical SELECT CASE block at %L has more that two cases"
  msgstr ""
  
! #: fortran/resolve.cc:10124
  #, gcc-internal-format, gfc-internal-format
  msgid "(F202y)Missing or invalid bound in ASSOCIATE rank remapping of associate name %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10140
  #, gcc-internal-format
  msgid "Associating entity %qs at %L is a procedure pointer"
  msgstr ""
  
! #: fortran/resolve.cc:10149
  #, gcc-internal-format
  msgid "Derived type %qs cannot be used as a variable at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10166
  #, gcc-internal-format
  msgid "Associating entity %qs at %L is a procedure name"
  msgstr ""
  
! #: fortran/resolve.cc:10182
  #, gcc-internal-format, gfc-internal-format
  msgid "Associating selector-expression at %L yields a procedure"
  msgstr ""
  
! #: fortran/resolve.cc:10236
  #, gcc-internal-format, gfc-internal-format
  msgid "Selector at %L cannot be NULL()"
  msgstr ""
  
! #: fortran/resolve.cc:10241
  #, gcc-internal-format, gfc-internal-format
  msgid "Selector at %L has no type"
  msgstr ""
  
! #: fortran/resolve.cc:10300
  #, gcc-internal-format
  msgid "Associate-name %qs at %L is used as array"
  msgstr ""
  
! #: fortran/resolve.cc:10311
  #, gcc-internal-format, gfc-internal-format
  msgid "CLASS selector at %L needs a temporary which is not yet implemented"
  msgstr ""
  
! #: fortran/resolve.cc:10598
  #, gcc-internal-format, gfc-internal-format
  msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10647 fortran/resolve.cc:10659
  #, gcc-internal-format, gfc-internal-format
  msgid "Selector at %L must not be coindexed"
  msgstr ""
  
! #: fortran/resolve.cc:10688
  #, gcc-internal-format, gfc-internal-format
  msgid "TYPE IS at %L overlaps with TYPE IS at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10701
  #, gcc-internal-format
  msgid "Derived type %qs at %L must be extensible"
  msgstr ""
  
! #: fortran/resolve.cc:10714
  #, gcc-internal-format
  msgid "Derived type %qs at %L must be an extension of %qs"
  msgstr ""
  
! #: fortran/resolve.cc:10717
  #, gcc-internal-format
  msgid "Unexpected intrinsic type %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10727
  #, gcc-internal-format, gfc-internal-format
  msgid "The type-spec at %L shall specify that each length type parameter is assumed"
  msgstr ""
  
! #: fortran/resolve.cc:10978
  #, gcc-internal-format, gfc-internal-format
  msgid "Double CLASS IS block in SELECT TYPE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11111
  #, gcc-internal-format, gfc-internal-format
  msgid "RANK DEFAULT at %L is repeated at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11120
  #, gcc-internal-format, gfc-internal-format
  msgid "RANK (*) at %L is repeated at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11123
  #, gcc-internal-format, gfc-internal-format
  msgid "RANK (%i) at %L is repeated at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11133
  #, gcc-internal-format, gfc-internal-format
  msgid "RANK (*) at %L cannot be used with the pointer or allocatable selector at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11242
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid context for NULL () intrinsic at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11296
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO %s procedure at %L must be recursive"
  msgstr ""
  
! #: fortran/resolve.cc:11306
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedure"
  msgstr ""
  
! #: fortran/resolve.cc:11319
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedure"
  msgstr ""
  
! #: fortran/resolve.cc:11328
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot have procedure pointer components"
  msgstr ""
  
! #: fortran/resolve.cc:11335
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedure"
  msgstr ""
  
! #: fortran/resolve.cc:11346
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot have PRIVATE components"
  msgstr ""
  
! #: fortran/resolve.cc:11352
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot have PRIVATE components unless it is processed by a defined input/output procedure"
  msgstr ""
  
! #: fortran/resolve.cc:11370
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot be a full reference to an assumed-size array"
  msgstr ""
  
! #: fortran/resolve.cc:11421
  #, gcc-internal-format, gfc-internal-format
  msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
  msgstr ""
  
! #: fortran/resolve.cc:11431
  #, gcc-internal-format, gfc-internal-format
  msgid "Event variable at %L must be a scalar of type EVENT_TYPE"
  msgstr ""
  
! #: fortran/resolve.cc:11435
  #, gcc-internal-format, gfc-internal-format
  msgid "Event variable argument at %L must be a coarray or coindexed"
  msgstr ""
  
! #: fortran/resolve.cc:11438
  #, gcc-internal-format, gfc-internal-format
  msgid "Event variable argument at %L must be a coarray but not coindexed"
  msgstr ""
  
! #: fortran/resolve.cc:11445 fortran/resolve.cc:11567
  #, gcc-internal-format, gfc-internal-format
  msgid "STAT= argument at %L must be a scalar INTEGER variable"
  msgstr ""
  
! #: fortran/resolve.cc:11457 fortran/resolve.cc:11579
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
  msgstr ""
  
! #: fortran/resolve.cc:11469
  #, gcc-internal-format, gfc-internal-format
  msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
  msgstr ""
  
! #: fortran/resolve.cc:11482
  #, gcc-internal-format, gfc-internal-format
  msgid "UNTIL_COUNT= argument at %L must be a scalar INTEGER expression"
  msgstr ""
  
! #: fortran/resolve.cc:11543
  #, gcc-internal-format, gfc-internal-format
  msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
  msgstr ""
  
! #: fortran/resolve.cc:11547 fortran/resolve.cc:11557
  #, gcc-internal-format, gfc-internal-format
  msgid "Imageset argument at %L must between 1 and num_images()"
  msgstr ""
  
! #: fortran/resolve.cc:11610
  #, gcc-internal-format, gfc-internal-format
  msgid "Statement at %L is not a valid branch target statement for the branch statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11620
  #, gcc-internal-format, gfc-internal-format
  msgid "Branch at %L may result in an infinite loop"
  msgstr ""
  
  #. Note: A label at END CRITICAL does not leave the CRITICAL
  #. construct as END CRITICAL is still part of it.
! #: fortran/resolve.cc:11637 fortran/resolve.cc:11660
  #, gcc-internal-format, gfc-internal-format
  msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11641 fortran/resolve.cc:11666
  #, gcc-internal-format, gfc-internal-format
  msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
  msgstr ""
--- 82963,83251 ----
  #. element in the list.  Either way, we must
  #. issue an error and get the next case from P.
  #. FIXME: Sort P and Q by line number.
! #: fortran/resolve.cc:9655
  #, gcc-internal-format, gfc-internal-format
  msgid "CASE label at %L overlaps with CASE label at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9706
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE statement at %L must be of type %s"
  msgstr ""
  
! #: fortran/resolve.cc:9717
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE statement at %L must be of kind %d"
  msgstr ""
  
! #: fortran/resolve.cc:9730
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE statement at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:9776
  #, gcc-internal-format, gfc-internal-format
  msgid "Selection expression in computed GOTO statement at %L must be a scalar integer expression"
  msgstr ""
  
! #: fortran/resolve.cc:9797
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of SELECT statement at %L cannot be %s"
  msgstr ""
  
! #: fortran/resolve.cc:9807
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of SELECT statement at %L must be a scalar expression"
  msgstr ""
  
! #: fortran/resolve.cc:9825 fortran/resolve.cc:9833
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE statement at %L is not in the range of %s"
  msgstr ""
  
! #: fortran/resolve.cc:9895 fortran/resolve.cc:10729
  #, gcc-internal-format, gfc-internal-format
  msgid "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9921
  #, gcc-internal-format, gfc-internal-format
  msgid "Logical range in CASE statement at %L is not allowed"
  msgstr ""
  
! #: fortran/resolve.cc:9934
  #, gcc-internal-format, gfc-internal-format
  msgid "Constant logical value in CASE statement is repeated at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9949
  #, gcc-internal-format, gfc-internal-format
  msgid "Range specification at %L can never be matched"
  msgstr ""
  
! #: fortran/resolve.cc:10052
  #, gcc-internal-format, gfc-internal-format
  msgid "Logical SELECT CASE block at %L has more that two cases"
  msgstr ""
  
! #: fortran/resolve.cc:10114
  #, gcc-internal-format, gfc-internal-format
  msgid "(F202y)Missing or invalid bound in ASSOCIATE rank remapping of associate name %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10130
  #, gcc-internal-format
  msgid "Associating entity %qs at %L is a procedure pointer"
  msgstr ""
  
! #: fortran/resolve.cc:10139
  #, gcc-internal-format
  msgid "Derived type %qs cannot be used as a variable at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10156
  #, gcc-internal-format
  msgid "Associating entity %qs at %L is a procedure name"
  msgstr ""
  
! #: fortran/resolve.cc:10172
  #, gcc-internal-format, gfc-internal-format
  msgid "Associating selector-expression at %L yields a procedure"
  msgstr ""
  
! #: fortran/resolve.cc:10226
  #, gcc-internal-format, gfc-internal-format
  msgid "Selector at %L cannot be NULL()"
  msgstr ""
  
! #: fortran/resolve.cc:10231
  #, gcc-internal-format, gfc-internal-format
  msgid "Selector at %L has no type"
  msgstr ""
  
! #: fortran/resolve.cc:10290
  #, gcc-internal-format
  msgid "Associate-name %qs at %L is used as array"
  msgstr ""
  
! #: fortran/resolve.cc:10301
  #, gcc-internal-format, gfc-internal-format
  msgid "CLASS selector at %L needs a temporary which is not yet implemented"
  msgstr ""
  
! #: fortran/resolve.cc:10588
  #, gcc-internal-format, gfc-internal-format
  msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10637 fortran/resolve.cc:10649
  #, gcc-internal-format, gfc-internal-format
  msgid "Selector at %L must not be coindexed"
  msgstr ""
  
! #: fortran/resolve.cc:10678
  #, gcc-internal-format, gfc-internal-format
  msgid "TYPE IS at %L overlaps with TYPE IS at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10691
  #, gcc-internal-format
  msgid "Derived type %qs at %L must be extensible"
  msgstr ""
  
! #: fortran/resolve.cc:10704
  #, gcc-internal-format
  msgid "Derived type %qs at %L must be an extension of %qs"
  msgstr ""
  
! #: fortran/resolve.cc:10707
  #, gcc-internal-format
  msgid "Unexpected intrinsic type %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10717
  #, gcc-internal-format, gfc-internal-format
  msgid "The type-spec at %L shall specify that each length type parameter is assumed"
  msgstr ""
  
! #: fortran/resolve.cc:10968
  #, gcc-internal-format, gfc-internal-format
  msgid "Double CLASS IS block in SELECT TYPE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11101
  #, gcc-internal-format, gfc-internal-format
  msgid "RANK DEFAULT at %L is repeated at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11110
  #, gcc-internal-format, gfc-internal-format
  msgid "RANK (*) at %L is repeated at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11113
  #, gcc-internal-format, gfc-internal-format
  msgid "RANK (%i) at %L is repeated at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11123
  #, gcc-internal-format, gfc-internal-format
  msgid "RANK (*) at %L cannot be used with the pointer or allocatable selector at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11232
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid context for NULL () intrinsic at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11286
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO %s procedure at %L must be recursive"
  msgstr ""
  
! #: fortran/resolve.cc:11296
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedure"
  msgstr ""
  
! #: fortran/resolve.cc:11309
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedure"
  msgstr ""
  
! #: fortran/resolve.cc:11318
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot have procedure pointer components"
  msgstr ""
  
! #: fortran/resolve.cc:11325
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedure"
  msgstr ""
  
! #: fortran/resolve.cc:11336
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot have PRIVATE components"
  msgstr ""
  
! #: fortran/resolve.cc:11342
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot have PRIVATE components unless it is processed by a defined input/output procedure"
  msgstr ""
  
! #: fortran/resolve.cc:11360
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot be a full reference to an assumed-size array"
  msgstr ""
  
! #: fortran/resolve.cc:11411
  #, gcc-internal-format, gfc-internal-format
  msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
  msgstr ""
  
! #: fortran/resolve.cc:11421
  #, gcc-internal-format, gfc-internal-format
  msgid "Event variable at %L must be a scalar of type EVENT_TYPE"
  msgstr ""
  
! #: fortran/resolve.cc:11425
  #, gcc-internal-format, gfc-internal-format
  msgid "Event variable argument at %L must be a coarray or coindexed"
  msgstr ""
  
! #: fortran/resolve.cc:11428
  #, gcc-internal-format, gfc-internal-format
  msgid "Event variable argument at %L must be a coarray but not coindexed"
  msgstr ""
  
! #: fortran/resolve.cc:11435 fortran/resolve.cc:11557
  #, gcc-internal-format, gfc-internal-format
  msgid "STAT= argument at %L must be a scalar INTEGER variable"
  msgstr ""
  
! #: fortran/resolve.cc:11447 fortran/resolve.cc:11569
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
  msgstr ""
  
! #: fortran/resolve.cc:11459
  #, gcc-internal-format, gfc-internal-format
  msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
  msgstr ""
  
! #: fortran/resolve.cc:11472
  #, gcc-internal-format, gfc-internal-format
  msgid "UNTIL_COUNT= argument at %L must be a scalar INTEGER expression"
  msgstr ""
  
! #: fortran/resolve.cc:11533
  #, gcc-internal-format, gfc-internal-format
  msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
  msgstr ""
  
! #: fortran/resolve.cc:11537 fortran/resolve.cc:11547
  #, gcc-internal-format, gfc-internal-format
  msgid "Imageset argument at %L must between 1 and num_images()"
  msgstr ""
  
! #: fortran/resolve.cc:11600
  #, gcc-internal-format, gfc-internal-format
  msgid "Statement at %L is not a valid branch target statement for the branch statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11610
  #, gcc-internal-format, gfc-internal-format
  msgid "Branch at %L may result in an infinite loop"
  msgstr ""
  
  #. Note: A label at END CRITICAL does not leave the CRITICAL
  #. construct as END CRITICAL is still part of it.
! #: fortran/resolve.cc:11627 fortran/resolve.cc:11650
  #, gcc-internal-format, gfc-internal-format
  msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11631 fortran/resolve.cc:11656
  #, gcc-internal-format, gfc-internal-format
  msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
  msgstr ""
*************** msgstr ""
*** 83168,83385 ****
  #. The label is not in an enclosing block, so illegal.  This was
  #. allowed in Fortran 66, so we allow it as extension.  No
  #. further checks are necessary in this case.
! #: fortran/resolve.cc:11681
  #, gcc-internal-format, gfc-internal-format
  msgid "Label at %L is not in the same block as the GOTO statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11753
  #, gcc-internal-format, gfc-internal-format
  msgid "WHERE mask at %L has inconsistent shape"
  msgstr ""
  
! #: fortran/resolve.cc:11769
  #, gcc-internal-format, gfc-internal-format
  msgid "WHERE assignment target at %L has inconsistent shape"
  msgstr ""
  
! #: fortran/resolve.cc:11782 fortran/resolve.cc:11874
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11792 fortran/resolve.cc:11884
  #, gcc-internal-format, gfc-internal-format
  msgid "Unsupported statement inside WHERE at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11823
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to a FORALL index variable at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11832
  #, gcc-internal-format
  msgid "The FORALL with index %qs is not used on the left side of the assignment at %L and so might cause multiple assignment to this object"
  msgstr ""
  
! #: fortran/resolve.cc:11989
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL construct at %L"
  msgstr ""
  
! #: fortran/resolve.cc:12010
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL index-name at %L must be a scalar variable of type integer"
  msgstr ""
  
! #: fortran/resolve.cc:12020
  #, gcc-internal-format, gfc-internal-format
  msgid "An outer FORALL construct already has an index with this name %L"
  msgstr ""
  
! #: fortran/resolve.cc:12098
  #, gcc-internal-format, gfc-internal-format
  msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
  msgstr ""
  
! #: fortran/resolve.cc:12219
  #, gcc-internal-format
  msgid "gfc_resolve_blocks(): Bad block type"
  msgstr ""
  
! #: fortran/resolve.cc:12299
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable in the ordinary assignment at %L is a procedure pointer component"
  msgstr ""
  
! #: fortran/resolve.cc:12319
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "abort in %s, at %s:%d"
  msgid "Cannot assign %s to %s at %L"
  msgstr "Ñ�Ð¿Ñ‹Ð½ÐµÐ½Ð° Ñž %s, Ð»Ñ� %s:%d"
  
! #: fortran/resolve.cc:12367
  #, gcc-internal-format
  msgid "CHARACTER expression will be truncated in assignment (%wd/%wd) at %L"
  msgstr ""
  
! #: fortran/resolve.cc:12399
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedure"
  msgstr ""
  
  #. F2008, C1283 (4).
! #: fortran/resolve.cc:12405
  #, gcc-internal-format, gfc-internal-format
  msgid "In a pure subprogram an INTENT(IN) dummy argument shall not be used as the expr at %L of an intrinsic assignment statement in which the variable is of a derived type if the derived type has a pointer component at any level of component selection."
  msgstr ""
  
! #: fortran/resolve.cc:12417
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to coindexed variable at %L in a PURE procedure"
  msgstr ""
  
! #: fortran/resolve.cc:12449
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to polymorphic coarray at %L is not permitted"
  msgstr ""
  
! #: fortran/resolve.cc:12453
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to an allocatable polymorphic variable at %L"
  msgstr ""
  
! #: fortran/resolve.cc:12458
  #, gcc-internal-format
  msgid "Assignment to an allocatable polymorphic variable at %L requires %<-frealloc-lhs%>"
  msgstr ""
  
! #: fortran/resolve.cc:12465
  #, gcc-internal-format
  msgid "Nonallocatable variable must not be polymorphic in intrinsic assignment at %L - check that there is a matching specific subroutine for %<=%> operator"
  msgstr ""
  
! #: fortran/resolve.cc:12476
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed variable must not have an allocatable ultimate component in assignment at %L"
  msgstr ""
  
! #: fortran/resolve.cc:12865
  #, gcc-internal-format, gfc-internal-format
  msgid "TODO: type-bound defined assignment(s) at %L not done because multiple part array references would occur in intermediate expressions."
  msgstr ""
  
  #. Even if standard does not support this feature, continue to build
  #. the two statements to avoid upsetting frontend_passes.c.
! #: fortran/resolve.cc:13179
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer procedure assignment at %L"
  msgstr ""
  
! #: fortran/resolve.cc:13191
  #, gcc-internal-format, gfc-internal-format
  msgid "The function result on the lhs of the assignment at %L must have the pointer attribute."
  msgstr ""
  
! #: fortran/resolve.cc:13287
  #, gcc-internal-format
  msgid "TEAM argument to %qs at %L must be a scalar expression of type TEAM_TYPE"
  msgstr ""
  
! #: fortran/resolve.cc:13486
  #, gcc-internal-format, gfc-internal-format
  msgid "TEAM NUMBER argument to FORM TEAM at %L must be a scalar INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:13522
  #, gcc-internal-format, gfc-internal-format
  msgid "ASSIGNED GOTO statement at %L requires a scalar INTEGER variable"
  msgstr ""
  
! #: fortran/resolve.cc:13526
  #, gcc-internal-format
  msgid "Variable %qs has not been assigned a target label at %L"
  msgstr ""
  
! #: fortran/resolve.cc:13537
  #, gcc-internal-format, gfc-internal-format
  msgid "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
  msgstr ""
  
! #: fortran/resolve.cc:13593
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected intrinsic assignment in OMP WORKSHARE at %L"
  msgstr ""
  
! #: fortran/resolve.cc:13635
  #, gcc-internal-format, gfc-internal-format
  msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
  msgstr ""
  
! #: fortran/resolve.cc:13682
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid NULL at %L"
  msgstr ""
  
! #: fortran/resolve.cc:13686
  #, gcc-internal-format, gfc-internal-format
  msgid "Arithmetic IF statement at %L requires a scalar REAL or INTEGER expression"
  msgstr ""
  
! #: fortran/resolve.cc:13747
  #, gcc-internal-format
  msgid "gfc_resolve_code(): No expression on DO WHILE"
  msgstr ""
  
! #: fortran/resolve.cc:13752
  #, gcc-internal-format, gfc-internal-format
  msgid "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
  msgstr ""
  
! #: fortran/resolve.cc:13836
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
  msgstr ""
  
! #: fortran/resolve.cc:13948
  #, gcc-internal-format
  msgid "gfc_resolve_code(): Bad statement code"
  msgstr ""
  
! #: fortran/resolve.cc:13969
  #, fuzzy, gcc-internal-format
  msgid "Using parameter %qs declared at %L is deprecated"
  msgstr "Ñ‚Ñ‹Ð¿ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" Ð½Ðµ Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ñ‹"
  
! #: fortran/resolve.cc:14065
  #, gcc-internal-format
  msgid "Variable %qs with binding label %qs at %L uses the same global identifier as entity at %L"
  msgstr ""
  
  #. This can only happen if the variable is defined in a module - if it
  #. isn't the same module, reject it.
! #: fortran/resolve.cc:14079
  #, gcc-internal-format
  msgid "Variable %qs from module %qs with binding label %qs at %L uses the same global identifier as entity at %L from module %qs"
  msgstr ""
--- 83253,83470 ----
  #. The label is not in an enclosing block, so illegal.  This was
  #. allowed in Fortran 66, so we allow it as extension.  No
  #. further checks are necessary in this case.
! #: fortran/resolve.cc:11671
  #, gcc-internal-format, gfc-internal-format
  msgid "Label at %L is not in the same block as the GOTO statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11743
  #, gcc-internal-format, gfc-internal-format
  msgid "WHERE mask at %L has inconsistent shape"
  msgstr ""
  
! #: fortran/resolve.cc:11759
  #, gcc-internal-format, gfc-internal-format
  msgid "WHERE assignment target at %L has inconsistent shape"
  msgstr ""
  
! #: fortran/resolve.cc:11772 fortran/resolve.cc:11864
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11782 fortran/resolve.cc:11874
  #, gcc-internal-format, gfc-internal-format
  msgid "Unsupported statement inside WHERE at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11813
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to a FORALL index variable at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11822
  #, gcc-internal-format
  msgid "The FORALL with index %qs is not used on the left side of the assignment at %L and so might cause multiple assignment to this object"
  msgstr ""
  
! #: fortran/resolve.cc:11979
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL construct at %L"
  msgstr ""
  
! #: fortran/resolve.cc:12000
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL index-name at %L must be a scalar variable of type integer"
  msgstr ""
  
! #: fortran/resolve.cc:12010
  #, gcc-internal-format, gfc-internal-format
  msgid "An outer FORALL construct already has an index with this name %L"
  msgstr ""
  
! #: fortran/resolve.cc:12088
  #, gcc-internal-format, gfc-internal-format
  msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
  msgstr ""
  
! #: fortran/resolve.cc:12209
  #, gcc-internal-format
  msgid "gfc_resolve_blocks(): Bad block type"
  msgstr ""
  
! #: fortran/resolve.cc:12289
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable in the ordinary assignment at %L is a procedure pointer component"
  msgstr ""
  
! #: fortran/resolve.cc:12309
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "abort in %s, at %s:%d"
  msgid "Cannot assign %s to %s at %L"
  msgstr "Ñ�Ð¿Ñ‹Ð½ÐµÐ½Ð° Ñž %s, Ð»Ñ� %s:%d"
  
! #: fortran/resolve.cc:12357
  #, gcc-internal-format
  msgid "CHARACTER expression will be truncated in assignment (%wd/%wd) at %L"
  msgstr ""
  
! #: fortran/resolve.cc:12389
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedure"
  msgstr ""
  
  #. F2008, C1283 (4).
! #: fortran/resolve.cc:12395
  #, gcc-internal-format, gfc-internal-format
  msgid "In a pure subprogram an INTENT(IN) dummy argument shall not be used as the expr at %L of an intrinsic assignment statement in which the variable is of a derived type if the derived type has a pointer component at any level of component selection."
  msgstr ""
  
! #: fortran/resolve.cc:12407
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to coindexed variable at %L in a PURE procedure"
  msgstr ""
  
! #: fortran/resolve.cc:12439
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to polymorphic coarray at %L is not permitted"
  msgstr ""
  
! #: fortran/resolve.cc:12443
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to an allocatable polymorphic variable at %L"
  msgstr ""
  
! #: fortran/resolve.cc:12448
  #, gcc-internal-format
  msgid "Assignment to an allocatable polymorphic variable at %L requires %<-frealloc-lhs%>"
  msgstr ""
  
! #: fortran/resolve.cc:12455
  #, gcc-internal-format
  msgid "Nonallocatable variable must not be polymorphic in intrinsic assignment at %L - check that there is a matching specific subroutine for %<=%> operator"
  msgstr ""
  
! #: fortran/resolve.cc:12466
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed variable must not have an allocatable ultimate component in assignment at %L"
  msgstr ""
  
! #: fortran/resolve.cc:12855
  #, gcc-internal-format, gfc-internal-format
  msgid "TODO: type-bound defined assignment(s) at %L not done because multiple part array references would occur in intermediate expressions."
  msgstr ""
  
  #. Even if standard does not support this feature, continue to build
  #. the two statements to avoid upsetting frontend_passes.c.
! #: fortran/resolve.cc:13169
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer procedure assignment at %L"
  msgstr ""
  
! #: fortran/resolve.cc:13181
  #, gcc-internal-format, gfc-internal-format
  msgid "The function result on the lhs of the assignment at %L must have the pointer attribute."
  msgstr ""
  
! #: fortran/resolve.cc:13277
  #, gcc-internal-format
  msgid "TEAM argument to %qs at %L must be a scalar expression of type TEAM_TYPE"
  msgstr ""
  
! #: fortran/resolve.cc:13476
  #, gcc-internal-format, gfc-internal-format
  msgid "TEAM NUMBER argument to FORM TEAM at %L must be a scalar INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:13512
  #, gcc-internal-format, gfc-internal-format
  msgid "ASSIGNED GOTO statement at %L requires a scalar INTEGER variable"
  msgstr ""
  
! #: fortran/resolve.cc:13516
  #, gcc-internal-format
  msgid "Variable %qs has not been assigned a target label at %L"
  msgstr ""
  
! #: fortran/resolve.cc:13527
  #, gcc-internal-format, gfc-internal-format
  msgid "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
  msgstr ""
  
! #: fortran/resolve.cc:13583
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected intrinsic assignment in OMP WORKSHARE at %L"
  msgstr ""
  
! #: fortran/resolve.cc:13625
  #, gcc-internal-format, gfc-internal-format
  msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
  msgstr ""
  
! #: fortran/resolve.cc:13672
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid NULL at %L"
  msgstr ""
  
! #: fortran/resolve.cc:13676
  #, gcc-internal-format, gfc-internal-format
  msgid "Arithmetic IF statement at %L requires a scalar REAL or INTEGER expression"
  msgstr ""
  
! #: fortran/resolve.cc:13737
  #, gcc-internal-format
  msgid "gfc_resolve_code(): No expression on DO WHILE"
  msgstr ""
  
! #: fortran/resolve.cc:13742
  #, gcc-internal-format, gfc-internal-format
  msgid "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
  msgstr ""
  
! #: fortran/resolve.cc:13826
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
  msgstr ""
  
! #: fortran/resolve.cc:13938
  #, gcc-internal-format
  msgid "gfc_resolve_code(): Bad statement code"
  msgstr ""
  
! #: fortran/resolve.cc:13959
  #, fuzzy, gcc-internal-format
  msgid "Using parameter %qs declared at %L is deprecated"
  msgstr "Ñ‚Ñ‹Ð¿ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" Ð½Ðµ Ð°Ð±'Ñ�ÑžÐ»ÐµÐ½Ñ‹"
  
! #: fortran/resolve.cc:14055
  #, gcc-internal-format
  msgid "Variable %qs with binding label %qs at %L uses the same global identifier as entity at %L"
  msgstr ""
  
  #. This can only happen if the variable is defined in a module - if it
  #. isn't the same module, reject it.
! #: fortran/resolve.cc:14069
  #, gcc-internal-format
  msgid "Variable %qs from module %qs with binding label %qs at %L uses the same global identifier as entity at %L from module %qs"
  msgstr ""
*************** msgstr ""
*** 83387,84276 ****
  #. Print an error if the procedure is defined multiple times; we have to
  #. exclude references to the same procedure via module association or
  #. multiple checks for the same procedure.
! #: fortran/resolve.cc:14098
  #, gcc-internal-format
  msgid "Procedure %qs with binding label %qs at %L uses the same global identifier as entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14184
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "size of array `%s' is too large"
  msgid "String length at %L is too large"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð²ÐµÐ»ÑŒÐ¼Ñ– Ð²Ñ�Ð»Ñ–ÐºÑ–"
  
! #: fortran/resolve.cc:14422
  #, gcc-internal-format
  msgid "Allocatable array %qs at %L must have a deferred shape or assumed rank"
  msgstr ""
  
! #: fortran/resolve.cc:14426
  #, gcc-internal-format
  msgid "Scalar object %qs at %L may not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:14434
  #, gcc-internal-format
  msgid "Array pointer %qs at %L must have a deferred shape or assumed rank"
  msgstr ""
  
! #: fortran/resolve.cc:14445
  #, gcc-internal-format
  msgid "Array %qs at %L cannot have a deferred shape"
  msgstr ""
  
! #: fortran/resolve.cc:14463
  #, gcc-internal-format
  msgid "Type %qs of CLASS variable %qs at %L is not extensible"
  msgstr ""
  
! #: fortran/resolve.cc:14477
  #, gcc-internal-format
  msgid "CLASS variable %qs at %L must be dummy, allocatable or pointer"
  msgstr ""
  
! #: fortran/resolve.cc:14510
  #, gcc-internal-format
  msgid "The type %qs cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14532
  #, gcc-internal-format
  msgid "Implied SAVE for module variable %qs at %L, needed due to the default initialization"
  msgstr ""
  
! #: fortran/resolve.cc:14565
  #, gcc-internal-format
  msgid "Entity %qs at %L has a deferred type parameter and requires either the POINTER or ALLOCATABLE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:14579
  #, gcc-internal-format
  msgid "Automatic object %qs at %L cannot have the SAVE attribute"
  msgstr ""
  
  #. F08:C541. The shape of an array defined in a main program or module
  #. * needs to be constant.
! #: fortran/resolve.cc:14601
  #, gcc-internal-format
  msgid "The module or main program array %qs at %L must have constant shape"
  msgstr ""
  
! #: fortran/resolve.cc:14626
  #, gcc-internal-format, gfc-internal-format
  msgid "Entity with assumed character length at %L must be a dummy argument or a PARAMETER"
  msgstr ""
  
! #: fortran/resolve.cc:14647
  #, gcc-internal-format
  msgid "%qs at %L must have constant character length in this context"
  msgstr ""
  
! #: fortran/resolve.cc:14654
  #, gcc-internal-format
  msgid "COMMON variable %qs at %L must have constant character length"
  msgstr ""
  
! #: fortran/resolve.cc:14702
  #, gcc-internal-format
  msgid "Allocatable %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14705
  #, gcc-internal-format
  msgid "External %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14708
  #, gcc-internal-format
  msgid "Dummy %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14711
  #, gcc-internal-format
  msgid "Intrinsic %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14714
  #, gcc-internal-format
  msgid "Function result %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14717
  #, gcc-internal-format
  msgid "Automatic array %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14759
  #, gcc-internal-format, gfc-internal-format
  msgid "%s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14791
  #, gcc-internal-format
  msgid "Character-valued statement function %qs at %L must have constant length"
  msgstr ""
  
! #: fortran/resolve.cc:14814
  #, gcc-internal-format
  msgid "%qs is of a PRIVATE type and cannot be a dummy argument of %qs, which is PUBLIC at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14836
  #, gcc-internal-format
  msgid "Procedure %qs in PUBLIC interface %qs at %L takes dummy arguments of %qs which is PRIVATE"
  msgstr ""
  
! #: fortran/resolve.cc:14854
  #, gcc-internal-format
  msgid "Function %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14866
  #, gcc-internal-format
  msgid "External object %qs at %L may not have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14876
  #, gcc-internal-format
  msgid "ELEMENTAL function %qs at %L must have a scalar result"
  msgstr ""
  
! #: fortran/resolve.cc:14886
  #, gcc-internal-format
  msgid "Statement function %qs at %L may not have pointer or allocatable attribute"
  msgstr ""
  
! #: fortran/resolve.cc:14905
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L cannot be array-valued"
  msgstr ""
  
! #: fortran/resolve.cc:14909
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L cannot be pointer-valued"
  msgstr ""
  
! #: fortran/resolve.cc:14913
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L cannot be pure"
  msgstr ""
  
! #: fortran/resolve.cc:14917
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L cannot be recursive"
  msgstr ""
  
! #: fortran/resolve.cc:14930
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14941
  #, gcc-internal-format
  msgid "Procedure pointer %qs at %L shall not be elemental"
  msgstr ""
  
! #: fortran/resolve.cc:14947
  #, gcc-internal-format
  msgid "Dummy procedure %qs at %L shall not be elemental"
  msgstr ""
  
! #: fortran/resolve.cc:14967
  #, gcc-internal-format
  msgid "Function result variable %qs at %L of elemental function %qs shall not have an ALLOCATABLE or POINTER attribute"
  msgstr ""
  
! #: fortran/resolve.cc:15024
  #, gcc-internal-format
  msgid "PROCEDURE attribute conflicts with SAVE attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15030
  #, gcc-internal-format
  msgid "PROCEDURE attribute conflicts with INTENT attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15036
  #, gcc-internal-format
  msgid "PROCEDURE attribute conflicts with RESULT attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15044
  #, gcc-internal-format
  msgid "EXTERNAL attribute conflicts with FUNCTION attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15050
  #, gcc-internal-format
  msgid "Procedure pointer result %qs at %L is missing the pointer attribute"
  msgstr ""
  
! #: fortran/resolve.cc:15093
  #, gcc-internal-format, gfc-internal-format
  msgid "Mismatch in ELEMENTAL attribute between MODULE PROCEDURE at %L and its interface in %s"
  msgstr ""
  
! #: fortran/resolve.cc:15101
  #, gcc-internal-format, gfc-internal-format
  msgid "Mismatch in PURE attribute between MODULE PROCEDURE at %L and its interface in %s"
  msgstr ""
  
! #: fortran/resolve.cc:15109
  #, gcc-internal-format, gfc-internal-format
  msgid "Mismatch in RECURSIVE attribute between MODULE PROCEDURE at %L and its interface in %s"
  msgstr ""
  
! #: fortran/resolve.cc:15118
  #, gcc-internal-format
  msgid "%s between the MODULE PROCEDURE declaration in MODULE %qs and the declaration at %L in (SUB)MODULE %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15142
  #, gcc-internal-format
  msgid "Interface of %qs at %L must be explicit"
  msgstr ""
  
! #: fortran/resolve.cc:15212
  #, gcc-internal-format
  msgid "FINAL procedure %qs at %L is not a SUBROUTINE"
  msgstr ""
  
! #: fortran/resolve.cc:15221
  #, gcc-internal-format, gfc-internal-format
  msgid "FINAL procedure at %L must have exactly one argument"
  msgstr ""
  
! #: fortran/resolve.cc:15229 fortran/resolve.cc:15246
  #, gcc-internal-format
  msgid "Argument of FINAL procedure at %L must be of type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15237
  #, gcc-internal-format, gfc-internal-format
  msgid "FINAL procedure at %L with assumed rank argument must be the only finalizer with the same kind/type (F2018: C790)"
  msgstr ""
  
! #: fortran/resolve.cc:15254
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of FINAL procedure at %L must not be a POINTER"
  msgstr ""
  
! #: fortran/resolve.cc:15260
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:15266
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
  msgstr ""
  
! #: fortran/resolve.cc:15274
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
  msgstr ""
  
! #: fortran/resolve.cc:15283
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
  msgstr ""
  
! #: fortran/resolve.cc:15305
  #, gcc-internal-format
  msgid "FINAL procedure %qs declared at %L has the same rank (%d) as %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15342
  #, gcc-internal-format
  msgid "Only array FINAL procedures declared for derived type %qs defined at %L, suggest also scalar one unless an assumed rank finalizer has been declared"
  msgstr ""
  
! #: fortran/resolve.cc:15383
  #, gcc-internal-format
  msgid "%qs and %qs cannot be mixed FUNCTION/SUBROUTINE for GENERIC %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15419
  #, gcc-internal-format
  msgid "%qs and %qs for GENERIC %qs at %L are ambiguous"
  msgstr ""
  
! #: fortran/resolve.cc:15478
  #, gcc-internal-format
  msgid "Undefined specific binding %qs as target of GENERIC %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15490
  #, gcc-internal-format
  msgid "GENERIC %qs at %L must target a specific binding, %qs is GENERIC, too"
  msgstr ""
  
! #: fortran/resolve.cc:15518
  #, gcc-internal-format
  msgid "GENERIC %qs at %L cannot overwrite specific binding with the same name"
  msgstr ""
  
! #: fortran/resolve.cc:15574
  #, gcc-internal-format, gfc-internal-format
  msgid "Type-bound operator at %L cannot be NOPASS"
  msgstr ""
  
! #: fortran/resolve.cc:15786
  #, gcc-internal-format
  msgid "%qs must be a module procedure or an external procedure with an explicit interface at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15829
  #, gcc-internal-format
  msgid "Procedure %qs with PASS(%s) at %L has no argument %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15843
  #, gcc-internal-format
  msgid "Procedure %qs with PASS at %L must have at least one argument"
  msgstr ""
  
! #: fortran/resolve.cc:15857 fortran/resolve.cc:16399
  #, gcc-internal-format
  msgid "Non-polymorphic passed-object dummy argument of %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15866
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L must be of the derived-type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15876
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L must be of the parametric derived-type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15918
  #, gcc-internal-format
  msgid "All LEN type parameters of the passed dummy argument %qs of %qs at %L must be ASSUMED."
  msgstr ""
  
! #: fortran/resolve.cc:15928
  #, gcc-internal-format
  msgid "Passed-object dummy argument of %qs at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:15934
  #, gcc-internal-format
  msgid "Passed-object dummy argument of %qs at %L must not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:15940
  #, gcc-internal-format
  msgid "Passed-object dummy argument of %qs at %L must not be POINTER"
  msgstr ""
  
! #: fortran/resolve.cc:15969
  #, gcc-internal-format
  msgid "Procedure %qs at %L has the same name as a component of %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15979
  #, gcc-internal-format
  msgid "Procedure %qs at %L has the same name as an inherited component of %qs"
  msgstr ""
  
! #: fortran/resolve.cc:16074
  #, gcc-internal-format
  msgid "Derived-type %qs declared at %L must be ABSTRACT because %qs is DEFERRED and not overridden"
  msgstr ""
  
! #: fortran/resolve.cc:16179
  #, gcc-internal-format
  msgid "Coarray component %qs at %L must be allocatable with deferred shape"
  msgstr ""
  
! #: fortran/resolve.cc:16188
  #, gcc-internal-format
  msgid "Component %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:16198
  #, gcc-internal-format
  msgid "Component %qs at %L with coarray component shall be a nonpointer, nonallocatable scalar"
  msgstr ""
  
! #: fortran/resolve.cc:16223
  #, gcc-internal-format
  msgid "Component %qs at %L has the CONTIGUOUS attribute but is not an array pointer"
  msgstr ""
  
! #: fortran/resolve.cc:16234
  #, gcc-internal-format
  msgid "Component %qs of BIND(C) type at %L must have length one"
  msgstr ""
  
! #: fortran/resolve.cc:16332
  #, gcc-internal-format
  msgid "Procedure pointer component %qs with PASS(%s) at %L has no argument %qs"
  msgstr ""
  
! #: fortran/resolve.cc:16346
  #, gcc-internal-format
  msgid "Procedure pointer component %qs with PASS at %L must have at least one argument"
  msgstr ""
  
! #: fortran/resolve.cc:16362
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L must be of the derived type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:16372
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:16381
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L may not have the POINTER attribute"
  msgstr ""
  
! #: fortran/resolve.cc:16390
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L may not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:16432
  #, gcc-internal-format
  msgid "Component %qs of %qs at %L has the same name as an inherited type-bound procedure"
  msgstr ""
  
! #: fortran/resolve.cc:16445
  #, gcc-internal-format
  msgid "Character length of component %qs needs to be a constant specification expression at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16456
  #, gcc-internal-format
  msgid "Character length expression of component %qs at %L must be of INTEGER type, found %s"
  msgstr ""
  
! #: fortran/resolve.cc:16469
  #, gcc-internal-format
  msgid "Character component %qs of %qs at %L with deferred length must be a POINTER or ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:16502
  #, gcc-internal-format
  msgid "the component %qs is a PRIVATE type and cannot be a component of %qs, which is PUBLIC at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16510
  #, gcc-internal-format, gfc-internal-format
  msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
  msgstr ""
  
! #: fortran/resolve.cc:16519
  #, gcc-internal-format, gfc-internal-format
  msgid "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:16605
  #, gcc-internal-format, gfc-internal-format
  msgid "Conflicting initializers in union at %L and %L"
  msgstr ""
  
! #: fortran/resolve.cc:16697
  #, gcc-internal-format
  msgid "As extending type %qs at %L has a coarray component, parent type %qs shall also have one"
  msgstr ""
  
! #: fortran/resolve.cc:16710
  #, gcc-internal-format
  msgid "Non-extensible derived-type %qs at %L must not be ABSTRACT"
  msgstr ""
  
! #: fortran/resolve.cc:16780
  #, gcc-internal-format
  msgid "Parameterized type %qs does not have a component corresponding to parameter %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16812
  #, gcc-internal-format
  msgid "Generic name %qs of function %qs at %L being the same name as derived type at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16826
  #, gcc-internal-format
  msgid "Derived type %qs at %L has not been declared"
  msgstr ""
  
! #: fortran/resolve.cc:16894
  #, gcc-internal-format
  msgid "Assumed size array %qs in namelist %qs at %L is not allowed"
  msgstr ""
  
! #: fortran/resolve.cc:16900
  #, gcc-internal-format
  msgid "NAMELIST array object %qs with assumed shape in namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16906
  #, gcc-internal-format
  msgid "NAMELIST array object %qs with nonconstant shape in namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16914
  #, gcc-internal-format
  msgid "NAMELIST object %qs with nonconstant character length in namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16931
  #, gcc-internal-format
  msgid "NAMELIST object %qs was declared PRIVATE and cannot be member of PUBLIC namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16953
  #, gcc-internal-format
  msgid "NAMELIST object %qs has use-associated PRIVATE components and cannot be member of namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16964
  #, gcc-internal-format
  msgid "NAMELIST object %qs has PRIVATE components and cannot be a member of PUBLIC namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16991
  #, gcc-internal-format
  msgid "PROCEDURE attribute conflicts with NAMELIST attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17010
  #, gcc-internal-format
  msgid "Parameter array %qs at %L cannot be automatic or of deferred shape"
  msgstr ""
  
! #: fortran/resolve.cc:17026
  #, gcc-internal-format
  msgid "Implicitly typed PARAMETER %qs at %L doesn't match a later IMPLICIT type"
  msgstr ""
  
! #: fortran/resolve.cc:17037
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible derived type in PARAMETER at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17045
  #, gcc-internal-format
  msgid "CLASS variable %qs at %L cannot have the PARAMETER attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17097
  #, gcc-internal-format
  msgid "Entity %qs at %L has a deferred LEN parameter %qs and requires either the POINTER or ALLOCATABLE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17109
  #, gcc-internal-format
  msgid "The AUTOMATIC object %qs at %L must not have the SAVE attribute or be a variable declared in the main program, a module or a submodule(F08/C513)"
  msgstr ""
  
! #: fortran/resolve.cc:17116
  #, gcc-internal-format
  msgid "The object %qs at %L with ASSUMED type parameters must be a dummy or a SELECT TYPE selector(F08/4.2)"
  msgstr ""
  
! #: fortran/resolve.cc:17175
  #, gcc-internal-format, gfc-internal-format
  msgid "Sorry, allocatable/pointer components in polymorphic (CLASS) type coarrays at %L are unsupported"
  msgstr ""
  
! #: fortran/resolve.cc:17188
  #, gcc-internal-format
  msgid "%<omp_all_memory%>, declared at %L, may only be used in the OpenMP DEPEND clause"
  msgstr ""
  
! #: fortran/resolve.cc:17253
  #, gcc-internal-format, gfc-internal-format
  msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17256
  #, gcc-internal-format, gfc-internal-format
  msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17362
  #, gcc-internal-format
  msgid "%qs at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape or assumed-rank array"
  msgstr ""
  
! #: fortran/resolve.cc:17383
  #, gcc-internal-format, gfc-internal-format
  msgid "Bad specification for assumed size array at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17397
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed size array at %L must be a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17400
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed shape array at %L must be a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17412
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank array at %L must be a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17419
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank array at %L may not have the VALUE or CODIMENSION attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17432
  #, gcc-internal-format, gfc-internal-format
  msgid "Symbol at %L is not a DUMMY variable"
  msgstr ""
  
! #: fortran/resolve.cc:17438
  #, gcc-internal-format
  msgid "%qs at %L cannot have the VALUE attribute because it is not a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17448
  #, gcc-internal-format
  msgid "Character dummy variable %qs at %L with VALUE attribute must have constant length"
  msgstr ""
  
! #: fortran/resolve.cc:17457
  #, gcc-internal-format
  msgid "C interoperable character dummy variable %qs at %L with VALUE attribute must have length one"
  msgstr ""
  
! #: fortran/resolve.cc:17470 fortran/resolve.cc:17647
  #, gcc-internal-format
  msgid "The derived type %qs at %L is of type %qs, which has not been defined"
  msgstr ""
  
! #: fortran/resolve.cc:17484
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute shall be a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17493
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute shall be of type TYPE(*) or of an numeric intrinsic type"
  msgstr ""
  
! #: fortran/resolve.cc:17502
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute may not have the ALLOCATABLE, CODIMENSION, POINTER or VALUE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17510
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute may not have the INTENT(OUT) attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17517
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute shall either be a scalar or an assumed-size array"
  msgstr ""
  
! #: fortran/resolve.cc:17537
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed type of variable %s at %L is only permitted for dummy variables"
  msgstr ""
  
! #: fortran/resolve.cc:17544
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L may not have the ALLOCATABLE, CODIMENSION, POINTER or VALUE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17551
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L may not have the INTENT(OUT) attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17558
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L shall not be an explicit-shape array"
  msgstr ""
  
! #: fortran/resolve.cc:17584
  #, gcc-internal-format
  msgid "Variable %qs at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scope"
  msgstr ""
  
! #: fortran/resolve.cc:17594
  #, gcc-internal-format
  msgid "BIND(C) Variable %qs at %L must have length one"
  msgstr ""
  
! #: fortran/resolve.cc:17673
  #, gcc-internal-format
  msgid "PUBLIC %s %qs at %L of PRIVATE derived type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:17688
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:17701
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L of type EVENT_TYPE or with subcomponent of type EVENT_TYPE must be a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:17719
  #, gcc-internal-format
  msgid "The INTENT(OUT) dummy argument %qs at %L is ASSUMED SIZE and so cannot have a default initializer"
  msgstr ""
  
! #: fortran/resolve.cc:17731
  #, gcc-internal-format
  msgid "Dummy argument %qs at %L of LOCK_TYPE shall not be INTENT(OUT)"
  msgstr ""
  
! #: fortran/resolve.cc:17740
  #, gcc-internal-format
  msgid "Dummy argument %qs at %L of EVENT_TYPE shall not be INTENT(OUT)"
  msgstr ""
  
! #: fortran/resolve.cc:17753
  #, gcc-internal-format
  msgid "Function result %qs at %L shall not be a coarray or have a coarray component"
  msgstr ""
  
! #: fortran/resolve.cc:17762
  #, gcc-internal-format
  msgid "Variable %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:17775
  #, gcc-internal-format
  msgid "Variable %qs at %L with coarray component shall be a nonpointer, nonallocatable scalar, which is not a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:17791
  #, gcc-internal-format
  msgid "Variable %qs at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17799
  #, gcc-internal-format
  msgid "Coarray variable %qs at %L shall not have codimensions with deferred shape without allocatable"
  msgstr ""
  
! #: fortran/resolve.cc:17807
  #, gcc-internal-format
  msgid "Allocatable coarray variable %qs at %L must have deferred shape"
  msgstr ""
  
! #: fortran/resolve.cc:17820
  #, gcc-internal-format
  msgid "Variable %qs at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray components"
  msgstr ""
  
! #: fortran/resolve.cc:17829
  #, gcc-internal-format
  msgid "Coarray dummy variable %qs at %L not allowed in BIND(C) procedure %qs"
  msgstr ""
  
! #: fortran/resolve.cc:17845
  #, gcc-internal-format
  msgid "LOGICAL dummy argument %qs at %L with non-C_Bool kind in BIND(C) procedure %qs"
  msgstr ""
  
! #: fortran/resolve.cc:17851
  #, gcc-internal-format
  msgid "LOGICAL result variable %qs at %L with non-C_Bool kind in BIND(C) procedure %qs"
  msgstr ""
  
! #: fortran/resolve.cc:17876
  #, gcc-internal-format
  msgid "Namelist %qs cannot be an argument to subroutine or function at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17936
  #, gcc-internal-format, gfc-internal-format
  msgid "Threadprivate at %L isn't SAVEd"
  msgstr ""
  
! #: fortran/resolve.cc:17948
  #, gcc-internal-format
  msgid "!$OMP DECLARE TARGET variable %qs at %L isn't SAVEd"
  msgstr ""
  
! #: fortran/resolve.cc:18059
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting definable entity near %L"
  msgstr ""
  
! #: fortran/resolve.cc:18067
  #, gcc-internal-format
  msgid "BLOCK DATA element %qs at %L must be in COMMON"
  msgstr ""
  
! #: fortran/resolve.cc:18074
  #, gcc-internal-format
  msgid "DATA array %qs at %L must be specified in a previous declaration"
  msgstr ""
  
! #: fortran/resolve.cc:18081
  #, gcc-internal-format
  msgid "DATA element %qs at %L cannot have a coindex"
  msgstr ""
  
! #: fortran/resolve.cc:18097
  #, gcc-internal-format
  msgid "DATA element %qs at %L is a pointer and so must be a full array"
  msgstr ""
  
! #: fortran/resolve.cc:18104
  #, gcc-internal-format, gfc-internal-format
  msgid "DATA object near %L has the pointer attribute and the corresponding DATA value is not a valid initial-data-target"
  msgstr ""
  
! #: fortran/resolve.cc:18113
  #, gcc-internal-format
  msgid "DATA element %qs at %L cannot have the ALLOCATABLE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:18175
  #, gcc-internal-format, gfc-internal-format
  msgid "Nonconstant array section at %L in DATA statement"
  msgstr ""
  
! #: fortran/resolve.cc:18188
  #, gcc-internal-format, gfc-internal-format
  msgid "DATA statement at %L has more variables than values"
  msgstr ""
  
! #: fortran/resolve.cc:18264
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-constant character length at %L in DATA statement"
  msgstr ""
  
! #: fortran/resolve.cc:18292
  #, gcc-internal-format, gfc-internal-format
  msgid "start of implied-do loop at %L could not be simplified to a constant value"
  msgstr ""
  
! #: fortran/resolve.cc:18300
  #, gcc-internal-format, gfc-internal-format
  msgid "end of implied-do loop at %L could not be simplified to a constant value"
  msgstr ""
  
! #: fortran/resolve.cc:18308
  #, gcc-internal-format, gfc-internal-format
  msgid "step of implied-do loop at %L could not be simplified to a constant value"
  msgstr ""
  
! #: fortran/resolve.cc:18315
  #, gcc-internal-format, gfc-internal-format
  msgid "step of implied-do loop at %L shall not be zero"
  msgstr ""
  
! #: fortran/resolve.cc:18440
  #, gcc-internal-format, gfc-internal-format
  msgid "DATA statement at %L has more values than variables"
  msgstr ""
--- 83472,84361 ----
  #. Print an error if the procedure is defined multiple times; we have to
  #. exclude references to the same procedure via module association or
  #. multiple checks for the same procedure.
! #: fortran/resolve.cc:14088
  #, gcc-internal-format
  msgid "Procedure %qs with binding label %qs at %L uses the same global identifier as entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14174
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "size of array `%s' is too large"
  msgid "String length at %L is too large"
  msgstr "Ð¿Ð°Ð¼ÐµÑ€ Ð¼Ð°Ñ�Ñ–Ð²Ð° \"%s\" Ð²ÐµÐ»ÑŒÐ¼Ñ– Ð²Ñ�Ð»Ñ–ÐºÑ–"
  
! #: fortran/resolve.cc:14412
  #, gcc-internal-format
  msgid "Allocatable array %qs at %L must have a deferred shape or assumed rank"
  msgstr ""
  
! #: fortran/resolve.cc:14416
  #, gcc-internal-format
  msgid "Scalar object %qs at %L may not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:14424
  #, gcc-internal-format
  msgid "Array pointer %qs at %L must have a deferred shape or assumed rank"
  msgstr ""
  
! #: fortran/resolve.cc:14435
  #, gcc-internal-format
  msgid "Array %qs at %L cannot have a deferred shape"
  msgstr ""
  
! #: fortran/resolve.cc:14453
  #, gcc-internal-format
  msgid "Type %qs of CLASS variable %qs at %L is not extensible"
  msgstr ""
  
! #: fortran/resolve.cc:14467
  #, gcc-internal-format
  msgid "CLASS variable %qs at %L must be dummy, allocatable or pointer"
  msgstr ""
  
! #: fortran/resolve.cc:14500
  #, gcc-internal-format
  msgid "The type %qs cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14522
  #, gcc-internal-format
  msgid "Implied SAVE for module variable %qs at %L, needed due to the default initialization"
  msgstr ""
  
! #: fortran/resolve.cc:14555
  #, gcc-internal-format
  msgid "Entity %qs at %L has a deferred type parameter and requires either the POINTER or ALLOCATABLE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:14569
  #, gcc-internal-format
  msgid "Automatic object %qs at %L cannot have the SAVE attribute"
  msgstr ""
  
  #. F08:C541. The shape of an array defined in a main program or module
  #. * needs to be constant.
! #: fortran/resolve.cc:14591
  #, gcc-internal-format
  msgid "The module or main program array %qs at %L must have constant shape"
  msgstr ""
  
! #: fortran/resolve.cc:14616
  #, gcc-internal-format, gfc-internal-format
  msgid "Entity with assumed character length at %L must be a dummy argument or a PARAMETER"
  msgstr ""
  
! #: fortran/resolve.cc:14637
  #, gcc-internal-format
  msgid "%qs at %L must have constant character length in this context"
  msgstr ""
  
! #: fortran/resolve.cc:14644
  #, gcc-internal-format
  msgid "COMMON variable %qs at %L must have constant character length"
  msgstr ""
  
! #: fortran/resolve.cc:14692
  #, gcc-internal-format
  msgid "Allocatable %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14695
  #, gcc-internal-format
  msgid "External %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14698
  #, gcc-internal-format
  msgid "Dummy %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14701
  #, gcc-internal-format
  msgid "Intrinsic %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14704
  #, gcc-internal-format
  msgid "Function result %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14707
  #, gcc-internal-format
  msgid "Automatic array %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14749
  #, gcc-internal-format, gfc-internal-format
  msgid "%s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14781
  #, gcc-internal-format
  msgid "Character-valued statement function %qs at %L must have constant length"
  msgstr ""
  
! #: fortran/resolve.cc:14804
  #, gcc-internal-format
  msgid "%qs is of a PRIVATE type and cannot be a dummy argument of %qs, which is PUBLIC at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14826
  #, gcc-internal-format
  msgid "Procedure %qs in PUBLIC interface %qs at %L takes dummy arguments of %qs which is PRIVATE"
  msgstr ""
  
! #: fortran/resolve.cc:14844
  #, gcc-internal-format
  msgid "Function %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14856
  #, gcc-internal-format
  msgid "External object %qs at %L may not have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14866
  #, gcc-internal-format
  msgid "ELEMENTAL function %qs at %L must have a scalar result"
  msgstr ""
  
! #: fortran/resolve.cc:14876
  #, gcc-internal-format
  msgid "Statement function %qs at %L may not have pointer or allocatable attribute"
  msgstr ""
  
! #: fortran/resolve.cc:14895
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L cannot be array-valued"
  msgstr ""
  
! #: fortran/resolve.cc:14899
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L cannot be pointer-valued"
  msgstr ""
  
! #: fortran/resolve.cc:14903
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L cannot be pure"
  msgstr ""
  
! #: fortran/resolve.cc:14907
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L cannot be recursive"
  msgstr ""
  
! #: fortran/resolve.cc:14920
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14931
  #, gcc-internal-format
  msgid "Procedure pointer %qs at %L shall not be elemental"
  msgstr ""
  
! #: fortran/resolve.cc:14937
  #, gcc-internal-format
  msgid "Dummy procedure %qs at %L shall not be elemental"
  msgstr ""
  
! #: fortran/resolve.cc:14957
  #, gcc-internal-format
  msgid "Function result variable %qs at %L of elemental function %qs shall not have an ALLOCATABLE or POINTER attribute"
  msgstr ""
  
! #: fortran/resolve.cc:15014
  #, gcc-internal-format
  msgid "PROCEDURE attribute conflicts with SAVE attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15020
  #, gcc-internal-format
  msgid "PROCEDURE attribute conflicts with INTENT attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15026
  #, gcc-internal-format
  msgid "PROCEDURE attribute conflicts with RESULT attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15034
  #, gcc-internal-format
  msgid "EXTERNAL attribute conflicts with FUNCTION attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15040
  #, gcc-internal-format
  msgid "Procedure pointer result %qs at %L is missing the pointer attribute"
  msgstr ""
  
! #: fortran/resolve.cc:15083
  #, gcc-internal-format, gfc-internal-format
  msgid "Mismatch in ELEMENTAL attribute between MODULE PROCEDURE at %L and its interface in %s"
  msgstr ""
  
! #: fortran/resolve.cc:15091
  #, gcc-internal-format, gfc-internal-format
  msgid "Mismatch in PURE attribute between MODULE PROCEDURE at %L and its interface in %s"
  msgstr ""
  
! #: fortran/resolve.cc:15099
  #, gcc-internal-format, gfc-internal-format
  msgid "Mismatch in RECURSIVE attribute between MODULE PROCEDURE at %L and its interface in %s"
  msgstr ""
  
! #: fortran/resolve.cc:15108
  #, gcc-internal-format
  msgid "%s between the MODULE PROCEDURE declaration in MODULE %qs and the declaration at %L in (SUB)MODULE %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15132
  #, gcc-internal-format
  msgid "Interface of %qs at %L must be explicit"
  msgstr ""
  
! #: fortran/resolve.cc:15202
  #, gcc-internal-format
  msgid "FINAL procedure %qs at %L is not a SUBROUTINE"
  msgstr ""
  
! #: fortran/resolve.cc:15211
  #, gcc-internal-format, gfc-internal-format
  msgid "FINAL procedure at %L must have exactly one argument"
  msgstr ""
  
! #: fortran/resolve.cc:15219 fortran/resolve.cc:15236
  #, gcc-internal-format
  msgid "Argument of FINAL procedure at %L must be of type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15227
  #, gcc-internal-format, gfc-internal-format
  msgid "FINAL procedure at %L with assumed rank argument must be the only finalizer with the same kind/type (F2018: C790)"
  msgstr ""
  
! #: fortran/resolve.cc:15244
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of FINAL procedure at %L must not be a POINTER"
  msgstr ""
  
! #: fortran/resolve.cc:15250
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:15256
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
  msgstr ""
  
! #: fortran/resolve.cc:15264
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
  msgstr ""
  
! #: fortran/resolve.cc:15273
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
  msgstr ""
  
! #: fortran/resolve.cc:15295
  #, gcc-internal-format
  msgid "FINAL procedure %qs declared at %L has the same rank (%d) as %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15332
  #, gcc-internal-format
  msgid "Only array FINAL procedures declared for derived type %qs defined at %L, suggest also scalar one unless an assumed rank finalizer has been declared"
  msgstr ""
  
! #: fortran/resolve.cc:15373
  #, gcc-internal-format
  msgid "%qs and %qs cannot be mixed FUNCTION/SUBROUTINE for GENERIC %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15409
  #, gcc-internal-format
  msgid "%qs and %qs for GENERIC %qs at %L are ambiguous"
  msgstr ""
  
! #: fortran/resolve.cc:15468
  #, gcc-internal-format
  msgid "Undefined specific binding %qs as target of GENERIC %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15480
  #, gcc-internal-format
  msgid "GENERIC %qs at %L must target a specific binding, %qs is GENERIC, too"
  msgstr ""
  
! #: fortran/resolve.cc:15508
  #, gcc-internal-format
  msgid "GENERIC %qs at %L cannot overwrite specific binding with the same name"
  msgstr ""
  
! #: fortran/resolve.cc:15564
  #, gcc-internal-format, gfc-internal-format
  msgid "Type-bound operator at %L cannot be NOPASS"
  msgstr ""
  
! #: fortran/resolve.cc:15776
  #, gcc-internal-format
  msgid "%qs must be a module procedure or an external procedure with an explicit interface at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15819
  #, gcc-internal-format
  msgid "Procedure %qs with PASS(%s) at %L has no argument %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15833
  #, gcc-internal-format
  msgid "Procedure %qs with PASS at %L must have at least one argument"
  msgstr ""
  
! #: fortran/resolve.cc:15847 fortran/resolve.cc:16389
  #, gcc-internal-format
  msgid "Non-polymorphic passed-object dummy argument of %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15856
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L must be of the derived-type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15866
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L must be of the parametric derived-type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15908
  #, gcc-internal-format
  msgid "All LEN type parameters of the passed dummy argument %qs of %qs at %L must be ASSUMED."
  msgstr ""
  
! #: fortran/resolve.cc:15918
  #, gcc-internal-format
  msgid "Passed-object dummy argument of %qs at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:15924
  #, gcc-internal-format
  msgid "Passed-object dummy argument of %qs at %L must not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:15930
  #, gcc-internal-format
  msgid "Passed-object dummy argument of %qs at %L must not be POINTER"
  msgstr ""
  
! #: fortran/resolve.cc:15959
  #, gcc-internal-format
  msgid "Procedure %qs at %L has the same name as a component of %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15969
  #, gcc-internal-format
  msgid "Procedure %qs at %L has the same name as an inherited component of %qs"
  msgstr ""
  
! #: fortran/resolve.cc:16064
  #, gcc-internal-format
  msgid "Derived-type %qs declared at %L must be ABSTRACT because %qs is DEFERRED and not overridden"
  msgstr ""
  
! #: fortran/resolve.cc:16169
  #, gcc-internal-format
  msgid "Coarray component %qs at %L must be allocatable with deferred shape"
  msgstr ""
  
! #: fortran/resolve.cc:16178
  #, gcc-internal-format
  msgid "Component %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:16188
  #, gcc-internal-format
  msgid "Component %qs at %L with coarray component shall be a nonpointer, nonallocatable scalar"
  msgstr ""
  
! #: fortran/resolve.cc:16213
  #, gcc-internal-format
  msgid "Component %qs at %L has the CONTIGUOUS attribute but is not an array pointer"
  msgstr ""
  
! #: fortran/resolve.cc:16224
  #, gcc-internal-format
  msgid "Component %qs of BIND(C) type at %L must have length one"
  msgstr ""
  
! #: fortran/resolve.cc:16322
  #, gcc-internal-format
  msgid "Procedure pointer component %qs with PASS(%s) at %L has no argument %qs"
  msgstr ""
  
! #: fortran/resolve.cc:16336
  #, gcc-internal-format
  msgid "Procedure pointer component %qs with PASS at %L must have at least one argument"
  msgstr ""
  
! #: fortran/resolve.cc:16352
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L must be of the derived type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:16362
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:16371
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L may not have the POINTER attribute"
  msgstr ""
  
! #: fortran/resolve.cc:16380
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L may not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:16422
  #, gcc-internal-format
  msgid "Component %qs of %qs at %L has the same name as an inherited type-bound procedure"
  msgstr ""
  
! #: fortran/resolve.cc:16435
  #, gcc-internal-format
  msgid "Character length of component %qs needs to be a constant specification expression at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16446
  #, gcc-internal-format
  msgid "Character length expression of component %qs at %L must be of INTEGER type, found %s"
  msgstr ""
  
! #: fortran/resolve.cc:16459
  #, gcc-internal-format
  msgid "Character component %qs of %qs at %L with deferred length must be a POINTER or ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:16492
  #, gcc-internal-format
  msgid "the component %qs is a PRIVATE type and cannot be a component of %qs, which is PUBLIC at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16500
  #, gcc-internal-format, gfc-internal-format
  msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
  msgstr ""
  
! #: fortran/resolve.cc:16509
  #, gcc-internal-format, gfc-internal-format
  msgid "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:16595
  #, gcc-internal-format, gfc-internal-format
  msgid "Conflicting initializers in union at %L and %L"
  msgstr ""
  
! #: fortran/resolve.cc:16687
  #, gcc-internal-format
  msgid "As extending type %qs at %L has a coarray component, parent type %qs shall also have one"
  msgstr ""
  
! #: fortran/resolve.cc:16700
  #, gcc-internal-format
  msgid "Non-extensible derived-type %qs at %L must not be ABSTRACT"
  msgstr ""
  
! #: fortran/resolve.cc:16770
  #, gcc-internal-format
  msgid "Parameterized type %qs does not have a component corresponding to parameter %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16802
  #, gcc-internal-format
  msgid "Generic name %qs of function %qs at %L being the same name as derived type at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16816
  #, gcc-internal-format
  msgid "Derived type %qs at %L has not been declared"
  msgstr ""
  
! #: fortran/resolve.cc:16884
  #, gcc-internal-format
  msgid "Assumed size array %qs in namelist %qs at %L is not allowed"
  msgstr ""
  
! #: fortran/resolve.cc:16890
  #, gcc-internal-format
  msgid "NAMELIST array object %qs with assumed shape in namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16896
  #, gcc-internal-format
  msgid "NAMELIST array object %qs with nonconstant shape in namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16904
  #, gcc-internal-format
  msgid "NAMELIST object %qs with nonconstant character length in namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16921
  #, gcc-internal-format
  msgid "NAMELIST object %qs was declared PRIVATE and cannot be member of PUBLIC namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16943
  #, gcc-internal-format
  msgid "NAMELIST object %qs has use-associated PRIVATE components and cannot be member of namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16954
  #, gcc-internal-format
  msgid "NAMELIST object %qs has PRIVATE components and cannot be a member of PUBLIC namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16981
  #, gcc-internal-format
  msgid "PROCEDURE attribute conflicts with NAMELIST attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17000
  #, gcc-internal-format
  msgid "Parameter array %qs at %L cannot be automatic or of deferred shape"
  msgstr ""
  
! #: fortran/resolve.cc:17016
  #, gcc-internal-format
  msgid "Implicitly typed PARAMETER %qs at %L doesn't match a later IMPLICIT type"
  msgstr ""
  
! #: fortran/resolve.cc:17027
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible derived type in PARAMETER at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17035
  #, gcc-internal-format
  msgid "CLASS variable %qs at %L cannot have the PARAMETER attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17087
  #, gcc-internal-format
  msgid "Entity %qs at %L has a deferred LEN parameter %qs and requires either the POINTER or ALLOCATABLE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17099
  #, gcc-internal-format
  msgid "The AUTOMATIC object %qs at %L must not have the SAVE attribute or be a variable declared in the main program, a module or a submodule(F08/C513)"
  msgstr ""
  
! #: fortran/resolve.cc:17106
  #, gcc-internal-format
  msgid "The object %qs at %L with ASSUMED type parameters must be a dummy or a SELECT TYPE selector(F08/4.2)"
  msgstr ""
  
! #: fortran/resolve.cc:17165
  #, gcc-internal-format, gfc-internal-format
  msgid "Sorry, allocatable/pointer components in polymorphic (CLASS) type coarrays at %L are unsupported"
  msgstr ""
  
! #: fortran/resolve.cc:17178
  #, gcc-internal-format
  msgid "%<omp_all_memory%>, declared at %L, may only be used in the OpenMP DEPEND clause"
  msgstr ""
  
! #: fortran/resolve.cc:17243
  #, gcc-internal-format, gfc-internal-format
  msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17246
  #, gcc-internal-format, gfc-internal-format
  msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17352
  #, gcc-internal-format
  msgid "%qs at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape or assumed-rank array"
  msgstr ""
  
! #: fortran/resolve.cc:17373
  #, gcc-internal-format, gfc-internal-format
  msgid "Bad specification for assumed size array at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17387
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed size array at %L must be a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17390
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed shape array at %L must be a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17402
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank array at %L must be a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17409
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank array at %L may not have the VALUE or CODIMENSION attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17422
  #, gcc-internal-format, gfc-internal-format
  msgid "Symbol at %L is not a DUMMY variable"
  msgstr ""
  
! #: fortran/resolve.cc:17428
  #, gcc-internal-format
  msgid "%qs at %L cannot have the VALUE attribute because it is not a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17438
  #, gcc-internal-format
  msgid "Character dummy variable %qs at %L with VALUE attribute must have constant length"
  msgstr ""
  
! #: fortran/resolve.cc:17447
  #, gcc-internal-format
  msgid "C interoperable character dummy variable %qs at %L with VALUE attribute must have length one"
  msgstr ""
  
! #: fortran/resolve.cc:17460 fortran/resolve.cc:17637
  #, gcc-internal-format
  msgid "The derived type %qs at %L is of type %qs, which has not been defined"
  msgstr ""
  
! #: fortran/resolve.cc:17474
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute shall be a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17483
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute shall be of type TYPE(*) or of an numeric intrinsic type"
  msgstr ""
  
! #: fortran/resolve.cc:17492
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute may not have the ALLOCATABLE, CODIMENSION, POINTER or VALUE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17500
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute may not have the INTENT(OUT) attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17507
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute shall either be a scalar or an assumed-size array"
  msgstr ""
  
! #: fortran/resolve.cc:17527
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed type of variable %s at %L is only permitted for dummy variables"
  msgstr ""
  
! #: fortran/resolve.cc:17534
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L may not have the ALLOCATABLE, CODIMENSION, POINTER or VALUE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17541
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L may not have the INTENT(OUT) attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17548
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L shall not be an explicit-shape array"
  msgstr ""
  
! #: fortran/resolve.cc:17574
  #, gcc-internal-format
  msgid "Variable %qs at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scope"
  msgstr ""
  
! #: fortran/resolve.cc:17584
  #, gcc-internal-format
  msgid "BIND(C) Variable %qs at %L must have length one"
  msgstr ""
  
! #: fortran/resolve.cc:17663
  #, gcc-internal-format
  msgid "PUBLIC %s %qs at %L of PRIVATE derived type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:17678
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:17691
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L of type EVENT_TYPE or with subcomponent of type EVENT_TYPE must be a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:17709
  #, gcc-internal-format
  msgid "The INTENT(OUT) dummy argument %qs at %L is ASSUMED SIZE and so cannot have a default initializer"
  msgstr ""
  
! #: fortran/resolve.cc:17721
  #, gcc-internal-format
  msgid "Dummy argument %qs at %L of LOCK_TYPE shall not be INTENT(OUT)"
  msgstr ""
  
! #: fortran/resolve.cc:17730
  #, gcc-internal-format
  msgid "Dummy argument %qs at %L of EVENT_TYPE shall not be INTENT(OUT)"
  msgstr ""
  
! #: fortran/resolve.cc:17743
  #, gcc-internal-format
  msgid "Function result %qs at %L shall not be a coarray or have a coarray component"
  msgstr ""
  
! #: fortran/resolve.cc:17752
  #, gcc-internal-format
  msgid "Variable %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:17765
  #, gcc-internal-format
  msgid "Variable %qs at %L with coarray component shall be a nonpointer, nonallocatable scalar, which is not a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:17781
  #, gcc-internal-format
  msgid "Variable %qs at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17789
  #, gcc-internal-format
  msgid "Coarray variable %qs at %L shall not have codimensions with deferred shape without allocatable"
  msgstr ""
  
! #: fortran/resolve.cc:17797
  #, gcc-internal-format
  msgid "Allocatable coarray variable %qs at %L must have deferred shape"
  msgstr ""
  
! #: fortran/resolve.cc:17810
  #, gcc-internal-format
  msgid "Variable %qs at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray components"
  msgstr ""
  
! #: fortran/resolve.cc:17819
  #, gcc-internal-format
  msgid "Coarray dummy variable %qs at %L not allowed in BIND(C) procedure %qs"
  msgstr ""
  
! #: fortran/resolve.cc:17835
  #, gcc-internal-format
  msgid "LOGICAL dummy argument %qs at %L with non-C_Bool kind in BIND(C) procedure %qs"
  msgstr ""
  
! #: fortran/resolve.cc:17841
  #, gcc-internal-format
  msgid "LOGICAL result variable %qs at %L with non-C_Bool kind in BIND(C) procedure %qs"
  msgstr ""
  
! #: fortran/resolve.cc:17866
  #, gcc-internal-format
  msgid "Namelist %qs cannot be an argument to subroutine or function at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17926
  #, gcc-internal-format, gfc-internal-format
  msgid "Threadprivate at %L isn't SAVEd"
  msgstr ""
  
! #: fortran/resolve.cc:17938
  #, gcc-internal-format
  msgid "!$OMP DECLARE TARGET variable %qs at %L isn't SAVEd"
  msgstr ""
  
! #: fortran/resolve.cc:18049
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting definable entity near %L"
  msgstr ""
  
! #: fortran/resolve.cc:18057
  #, gcc-internal-format
  msgid "BLOCK DATA element %qs at %L must be in COMMON"
  msgstr ""
  
! #: fortran/resolve.cc:18064
  #, gcc-internal-format
  msgid "DATA array %qs at %L must be specified in a previous declaration"
  msgstr ""
  
! #: fortran/resolve.cc:18071
  #, gcc-internal-format
  msgid "DATA element %qs at %L cannot have a coindex"
  msgstr ""
  
! #: fortran/resolve.cc:18087
  #, gcc-internal-format
  msgid "DATA element %qs at %L is a pointer and so must be a full array"
  msgstr ""
  
! #: fortran/resolve.cc:18094
  #, gcc-internal-format, gfc-internal-format
  msgid "DATA object near %L has the pointer attribute and the corresponding DATA value is not a valid initial-data-target"
  msgstr ""
  
! #: fortran/resolve.cc:18103
  #, gcc-internal-format
  msgid "DATA element %qs at %L cannot have the ALLOCATABLE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:18165
  #, gcc-internal-format, gfc-internal-format
  msgid "Nonconstant array section at %L in DATA statement"
  msgstr ""
  
! #: fortran/resolve.cc:18178
  #, gcc-internal-format, gfc-internal-format
  msgid "DATA statement at %L has more variables than values"
  msgstr ""
  
! #: fortran/resolve.cc:18254
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-constant character length at %L in DATA statement"
  msgstr ""
  
! #: fortran/resolve.cc:18282
  #, gcc-internal-format, gfc-internal-format
  msgid "start of implied-do loop at %L could not be simplified to a constant value"
  msgstr ""
  
! #: fortran/resolve.cc:18290
  #, gcc-internal-format, gfc-internal-format
  msgid "end of implied-do loop at %L could not be simplified to a constant value"
  msgstr ""
  
! #: fortran/resolve.cc:18298
  #, gcc-internal-format, gfc-internal-format
  msgid "step of implied-do loop at %L could not be simplified to a constant value"
  msgstr ""
  
! #: fortran/resolve.cc:18305
  #, gcc-internal-format, gfc-internal-format
  msgid "step of implied-do loop at %L shall not be zero"
  msgstr ""
  
! #: fortran/resolve.cc:18430
  #, gcc-internal-format, gfc-internal-format
  msgid "DATA statement at %L has more values than variables"
  msgstr ""
*************** msgstr ""
*** 85326,85349 ****
  msgid "Overlapping unequal initializers in EQUIVALENCE at %C"
  msgstr ""
  
! #: fortran/trans-array.cc:2466 fortran/trans-expr.cc:10439
  #, gcc-internal-format, gfc-internal-format
  msgid "The structure constructor at %L has been finalized. This feature was removed by f08/0011. Use -std=f2018 or -std=gnu to eliminate the finalization."
  msgstr ""
  
  #. Problems occur when we get something like
  #. integer :: a(lots) = (/(i, i=1, lots)/)
! #: fortran/trans-array.cc:6838
  #, gcc-internal-format
  msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See %<-fmax-array-constructor%> option"
  msgstr ""
  
! #: fortran/trans-array.cc:9244
  #, gcc-internal-format
  msgid "Creating array temporary at %L for argument %qs"
  msgstr ""
  
! #: fortran/trans-array.cc:12704
  #, gcc-internal-format, gfc-internal-format
  msgid "bad expression type during walk (%d)"
  msgstr ""
--- 85411,85434 ----
  msgid "Overlapping unequal initializers in EQUIVALENCE at %C"
  msgstr ""
  
! #: fortran/trans-array.cc:2469 fortran/trans-expr.cc:10450
  #, gcc-internal-format, gfc-internal-format
  msgid "The structure constructor at %L has been finalized. This feature was removed by f08/0011. Use -std=f2018 or -std=gnu to eliminate the finalization."
  msgstr ""
  
  #. Problems occur when we get something like
  #. integer :: a(lots) = (/(i, i=1, lots)/)
! #: fortran/trans-array.cc:6840
  #, gcc-internal-format
  msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See %<-fmax-array-constructor%> option"
  msgstr ""
  
! #: fortran/trans-array.cc:9246
  #, gcc-internal-format
  msgid "Creating array temporary at %L for argument %qs"
  msgstr ""
  
! #: fortran/trans-array.cc:12706
  #, gcc-internal-format, gfc-internal-format
  msgid "bad expression type during walk (%d)"
  msgstr ""
*************** msgstr ""
*** 85526,85532 ****
  msgid "Sorry, !$ACC DECLARE at %L is not allowed in BLOCK construct"
  msgstr ""
  
! #: fortran/trans-decl.cc:7199 fortran/trans-expr.cc:6117
  #, gcc-internal-format
  msgid "Unsigned not yet implemented"
  msgstr ""
--- 85611,85617 ----
  msgid "Sorry, !$ACC DECLARE at %L is not allowed in BLOCK construct"
  msgstr ""
  
! #: fortran/trans-decl.cc:7199 fortran/trans-expr.cc:6127
  #, gcc-internal-format
  msgid "Unsigned not yet implemented"
  msgstr ""
*************** msgstr ""
*** 85556,85573 ****
  msgid "Sorry, coindexed access to an unlimited polymorphic component at %L is not supported"
  msgstr ""
  
! #: fortran/trans-expr.cc:4279
  #, fuzzy, gcc-internal-format
  msgid "Unknown intrinsic op"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ñ‹ Ñ€Ñ�Ð¶Ñ‹Ð¼ Ð¼Ð°ÑˆÑ‹Ð½Ñ‹ \"%s\""
  
! #: fortran/trans-expr.cc:5865
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "too few arguments to function `%s'"
  msgid "Unknown argument list function at %L"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: fortran/trans-expr.cc:11037
  #, gcc-internal-format, gfc-internal-format
  msgid "If bounds remapping is specified at %L, the pointer target shall not be NULL"
  msgstr ""
--- 85641,85658 ----
  msgid "Sorry, coindexed access to an unlimited polymorphic component at %L is not supported"
  msgstr ""
  
! #: fortran/trans-expr.cc:4289
  #, fuzzy, gcc-internal-format
  msgid "Unknown intrinsic op"
  msgstr "Ð½ÐµÐ²Ñ�Ð´Ð¾Ð¼Ñ‹ Ñ€Ñ�Ð¶Ñ‹Ð¼ Ð¼Ð°ÑˆÑ‹Ð½Ñ‹ \"%s\""
  
! #: fortran/trans-expr.cc:5875
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "too few arguments to function `%s'"
  msgid "Unknown argument list function at %L"
  msgstr "Ð½ÐµÑ…Ð°Ð¿Ð°Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñž Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ– \"%s\""
  
! #: fortran/trans-expr.cc:11050
  #, gcc-internal-format, gfc-internal-format
  msgid "If bounds remapping is specified at %L, the pointer target shall not be NULL"
  msgstr ""
*************** msgstr ""
*** 85583,85594 ****
  msgid "%<dim%> argument of %s intrinsic at %L is not a valid dimension index"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12709 fortran/trans-stmt.cc:1107
  #, gcc-internal-format, gfc-internal-format
  msgid "Sorry, the event component of derived type at %L is not yet supported"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12716
  #, gcc-internal-format, gfc-internal-format
  msgid "The event variable at %L shall not be coindexed"
  msgstr ""
--- 85668,85679 ----
  msgid "%<dim%> argument of %s intrinsic at %L is not a valid dimension index"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12688 fortran/trans-stmt.cc:1107
  #, gcc-internal-format, gfc-internal-format
  msgid "Sorry, the event component of derived type at %L is not yet supported"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12695
  #, gcc-internal-format, gfc-internal-format
  msgid "The event variable at %L shall not be coindexed"
  msgstr ""
*************** msgstr ""
*** 85623,85790 ****
  msgid "Mapping of polymorphic list item %qD is unspecified behavior"
  msgstr ""
  
! #: fortran/trans-openmp.cc:4176
  #, fuzzy, gcc-internal-format
  msgid "optional class parameter"
  msgstr "Ð½ÐµÐ²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°ÐµÐ¼Ñ‹ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\""
  
! #: fortran/trans-openmp.cc:4640
  #, gcc-internal-format
  msgid "unhandled expression type"
  msgstr ""
  
! #: fortran/trans-openmp.cc:4949
  #, gcc-internal-format
  msgid "unhandled expression"
  msgstr ""
  
! #: fortran/trans-openmp.cc:5072
  #, gcc-internal-format
  msgid "%<uses_allocators%> clause with traits and memory spaces"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6050
  #, gcc-internal-format
  msgid "%<!$OMP %s%> at %L requires %<-fopenmp-allocators%>"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6053
  #, gcc-internal-format
  msgid "All files that might deallocate such a variable must be compiled with %<-fopenmp-allocators%>"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6056
  #, gcc-internal-format
  msgid "This includes explicit DEALLOCATE, reallocation on intrinsic assignment, INTENT(OUT) for allocatable dummy arguments, and reallocation of allocatable components allocated with an OpenMP allocator"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6633 fortran/trans-openmp.cc:6653
  #, gcc-internal-format
  msgid "non-rectangular loop nest with non-constant step for %qs"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6655
  #, gcc-internal-format
  msgid "Used here"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9221
  #, gcc-internal-format
  msgid "gfc_trans_omp_workshare(): Bad statement code"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9631
  #, gcc-internal-format
  msgid "The base name for %<declare variant%> must be specified at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9642
  #, gcc-internal-format, gfc-internal-format
  msgid "The base name at %L does not match the name of the current procedure"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9645
  #, gcc-internal-format, gfc-internal-format
  msgid "The base name at %L must not be an entry name"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9648
  #, gcc-internal-format, gfc-internal-format
  msgid "The base name at %L must not be a generic name"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9651
  #, gcc-internal-format, gfc-internal-format
  msgid "The base name at %L must not be a procedure pointer"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9654
  #, gcc-internal-format, gfc-internal-format
  msgid "The base procedure at %L must have an explicit interface"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9690
  #, fuzzy, gcc-internal-format
  #| msgid "cannot find source %s"
! msgid "Cannot find symbol %qs"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ð·Ð½Ð°Ð¹Ñ�Ñ†Ñ– ÐºÑ€Ñ‹Ð½Ñ–Ñ†Ñƒ %s"
  
! #: fortran/trans-openmp.cc:9702
  #, gcc-internal-format
  msgid "variant %qs at %L is not a function or subroutine"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9744
  #, gcc-internal-format
  msgid "variant %qs and base %qs at %L have incompatible types: %s"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9750
  #, gcc-internal-format
  msgid "%<append_args%> clause implies that %qs has %d dummy arguments of integer type with %<omp_interop_kind%> kind"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9776
  #, gcc-internal-format
  msgid "%qs at %L must be a nonpointer, nonallocatable scalar integer dummy argument of %<omp_interop_kind%> kind as it utilized with the %<append_args%> clause at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9786
  #, gcc-internal-format
  msgid "%qs at %L with OPTIONAL attribute not support when utilized with the %<append_args%> clause at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9796
  #, gcc-internal-format
  msgid "%qs at %L has %d but requires %d %<omp_interop_kind%> kind dummy arguments as it is utilized with the %<append_args%> clause at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9811
  #, gcc-internal-format
  msgid "the %qs clause can only be specified if the %<dispatch%> selector of the construct selector set appears in the %<match%> clause at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9912 fortran/trans-openmp.cc:9951
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected positive argument index at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9923
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument index at %L exceeds number of arguments %d"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9961
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper argument index smaller than lower one at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9987
  #, gcc-internal-format
  msgid "List item %qs at %L, declared at %L, is not a dummy argument"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10001
  #, gcc-internal-format
  msgid "Argument %qs at %L to list item in %<need_device_ptr%> at %L must be a scalar of TYPE(C_PTR)"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10008
  #, gcc-internal-format
  msgid "Consider using %<need_device_addr%> instead"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10015
  #, gcc-internal-format
  msgid "Argument %qs at %L to list item in %<need_device_addr%> at %L must not have the VALUE attribute"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10024
  #, gcc-internal-format
  msgid "%qs at %L is specified more than once"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10041
  #, gcc-internal-format
  msgid "%<need_device_addr%> not yet supported"
  msgstr ""
--- 85708,85875 ----
  msgid "Mapping of polymorphic list item %qD is unspecified behavior"
  msgstr ""
  
! #: fortran/trans-openmp.cc:4196
  #, fuzzy, gcc-internal-format
  msgid "optional class parameter"
  msgstr "Ð½ÐµÐ²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°ÐµÐ¼Ñ‹ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\""
  
! #: fortran/trans-openmp.cc:4660
  #, gcc-internal-format
  msgid "unhandled expression type"
  msgstr ""
  
! #: fortran/trans-openmp.cc:4969
  #, gcc-internal-format
  msgid "unhandled expression"
  msgstr ""
  
! #: fortran/trans-openmp.cc:5092
  #, gcc-internal-format
  msgid "%<uses_allocators%> clause with traits and memory spaces"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6070
  #, gcc-internal-format
  msgid "%<!$OMP %s%> at %L requires %<-fopenmp-allocators%>"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6073
  #, gcc-internal-format
  msgid "All files that might deallocate such a variable must be compiled with %<-fopenmp-allocators%>"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6076
  #, gcc-internal-format
  msgid "This includes explicit DEALLOCATE, reallocation on intrinsic assignment, INTENT(OUT) for allocatable dummy arguments, and reallocation of allocatable components allocated with an OpenMP allocator"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6653 fortran/trans-openmp.cc:6673
  #, gcc-internal-format
  msgid "non-rectangular loop nest with non-constant step for %qs"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6675
  #, gcc-internal-format
  msgid "Used here"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9241
  #, gcc-internal-format
  msgid "gfc_trans_omp_workshare(): Bad statement code"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9651
  #, gcc-internal-format
  msgid "The base name for %<declare variant%> must be specified at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9662
  #, gcc-internal-format, gfc-internal-format
  msgid "The base name at %L does not match the name of the current procedure"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9665
  #, gcc-internal-format, gfc-internal-format
  msgid "The base name at %L must not be an entry name"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9668
  #, gcc-internal-format, gfc-internal-format
  msgid "The base name at %L must not be a generic name"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9671
  #, gcc-internal-format, gfc-internal-format
  msgid "The base name at %L must not be a procedure pointer"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9674
  #, gcc-internal-format, gfc-internal-format
  msgid "The base procedure at %L must have an explicit interface"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9710
  #, fuzzy, gcc-internal-format
  #| msgid "cannot find source %s"
! msgid "Cannot find symbol %qs at %L"
  msgstr "Ð½Ðµ Ð¼Ð°Ð³Ñƒ Ð·Ð½Ð°Ð¹Ñ�Ñ†Ñ– ÐºÑ€Ñ‹Ð½Ñ–Ñ†Ñƒ %s"
  
! #: fortran/trans-openmp.cc:9723
  #, gcc-internal-format
  msgid "variant %qs at %L is not a function or subroutine"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9765
  #, gcc-internal-format
  msgid "variant %qs and base %qs at %L have incompatible types: %s"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9771
  #, gcc-internal-format
  msgid "%<append_args%> clause implies that %qs has %d dummy arguments of integer type with %<omp_interop_kind%> kind"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9797
  #, gcc-internal-format
  msgid "%qs at %L must be a nonpointer, nonallocatable scalar integer dummy argument of %<omp_interop_kind%> kind as it utilized with the %<append_args%> clause at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9807
  #, gcc-internal-format
  msgid "%qs at %L with OPTIONAL attribute not support when utilized with the %<append_args%> clause at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9817
  #, gcc-internal-format
  msgid "%qs at %L has %d but requires %d %<omp_interop_kind%> kind dummy arguments as it is utilized with the %<append_args%> clause at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9832
  #, gcc-internal-format
  msgid "the %qs clause can only be specified if the %<dispatch%> selector of the construct selector set appears in the %<match%> clause at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9933 fortran/trans-openmp.cc:9972
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected positive argument index at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9944
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument index at %L exceeds number of arguments %d"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9982
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper argument index smaller than lower one at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10008
  #, gcc-internal-format
  msgid "List item %qs at %L, declared at %L, is not a dummy argument"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10022
  #, gcc-internal-format
  msgid "Argument %qs at %L to list item in %<need_device_ptr%> at %L must be a scalar of TYPE(C_PTR)"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10029
  #, gcc-internal-format
  msgid "Consider using %<need_device_addr%> instead"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10036
  #, gcc-internal-format
  msgid "Argument %qs at %L to list item in %<need_device_addr%> at %L must not have the VALUE attribute"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10045
  #, gcc-internal-format
  msgid "%qs at %L is specified more than once"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10062
  #, gcc-internal-format
  msgid "%<need_device_addr%> not yet supported"
  msgstr ""
*************** msgid "unused name %qE"
*** 87555,87561 ****
  msgstr "Ð½ÐµÐ²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°ÐµÐ¼Ñ‹ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\""
  
  #: rust/resolve/rust-ast-resolve-expr.cc:134
! #: rust/resolve/rust-late-name-resolver-2.0.cc:268
  #, gcc-internal-format, gfc-internal-format
  msgid "are you trying to break %s? how dare you?"
  msgstr ""
--- 87640,87646 ----
  msgstr "Ð½ÐµÐ²Ñ‹ÐºÐ°Ñ€Ñ‹Ñ�Ñ‚Ð°ÐµÐ¼Ñ‹ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\""
  
  #: rust/resolve/rust-ast-resolve-expr.cc:134
! #: rust/resolve/rust-late-name-resolver-2.0.cc:270
  #, gcc-internal-format, gfc-internal-format
  msgid "are you trying to break %s? how dare you?"
  msgstr ""
diff -Nrcpad gcc-15.2.0/gcc/po/da.po gcc-15.3.0/gcc/po/da.po
*** gcc-15.2.0/gcc/po/da.po	Fri Aug  8 06:51:41 2025
--- gcc-15.3.0/gcc/po/da.po	Fri Jun 12 06:09:06 2026
*************** msgid ""
*** 137,143 ****
  msgstr ""
  "Project-Id-Version: gcc-9.1-b20190203\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
! "POT-Creation-Date: 2025-04-23 19:27+0000\n"
  "PO-Revision-Date: 2019-02-14 11:00+0200\n"
  "Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
  "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
--- 137,143 ----
  msgstr ""
  "Project-Id-Version: gcc-9.1-b20190203\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
! "POT-Creation-Date: 2025-08-01 17:58+0000\n"
  "PO-Revision-Date: 2019-02-14 11:00+0200\n"
  "Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
  "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
*************** msgstr "Advar om beregninger pÃ¥ funktio
*** 725,732 ****
  #: fortran/lang.opt:214 fortran/lang.opt:547 c-family/c.opt:1692
  #: config/alpha/alpha.opt:31 common.opt:691 common.opt:849 common.opt:1112
  #: common.opt:1116 common.opt:1120 common.opt:1124 common.opt:1876
! #: common.opt:1979 common.opt:2161 common.opt:2165 common.opt:2479
! #: common.opt:2705 common.opt:3472
  #, no-c-format
  msgid "Does nothing. Preserved for backward compatibility."
  msgstr ""
--- 725,732 ----
  #: fortran/lang.opt:214 fortran/lang.opt:547 c-family/c.opt:1692
  #: config/alpha/alpha.opt:31 common.opt:691 common.opt:849 common.opt:1112
  #: common.opt:1116 common.opt:1120 common.opt:1124 common.opt:1876
! #: common.opt:1979 common.opt:2161 common.opt:2165 common.opt:2476
! #: common.opt:2702 common.opt:3469
  #, no-c-format
  msgid "Does nothing. Preserved for backward compatibility."
  msgstr ""
*************** msgstr ""
*** 1079,1085 ****
  msgid "Use f2c calling convention."
  msgstr "Brug normal kaldekonvention"
  
! #: fortran/lang.opt:575 cobol/lang.opt:78
  #, fuzzy, no-c-format
  #| msgid "Assume that pointers not aliased"
  msgid "Assume that the source file is fixed form."
--- 1079,1085 ----
  msgid "Use f2c calling convention."
  msgstr "Brug normal kaldekonvention"
  
! #: fortran/lang.opt:575 cobol/lang.opt:83
  #, fuzzy, no-c-format
  #| msgid "Assume that pointers not aliased"
  msgid "Assume that the source file is fixed form."
*************** msgstr ""
*** 1125,1131 ****
  msgid "-ffpe-summary=[...]\tPrint summary of floating point exceptions."
  msgstr ""
  
! #: fortran/lang.opt:615 cobol/lang.opt:82
  #, fuzzy, no-c-format
  #| msgid "Assume that pointers not aliased"
  msgid "Assume that the source file is free form."
--- 1125,1131 ----
  msgid "-ffpe-summary=[...]\tPrint summary of floating point exceptions."
  msgstr ""
  
! #: fortran/lang.opt:615 cobol/lang.opt:87
  #, fuzzy, no-c-format
  #| msgid "Assume that pointers not aliased"
  msgid "Assume that the source file is free form."
*************** msgstr "TilfÃ¸j aldrig en anden understr
*** 1359,1370 ****
  #: config/arc/arc.opt:312 config/arc/arc.opt:317 config/arc/arc.opt:326
  #: config/arc/arc.opt:405 common.opt:649 common.opt:1210 common.opt:1214
  #: common.opt:1218 common.opt:1313 common.opt:1658 common.opt:1740
! #: common.opt:1839 common.opt:2109 common.opt:2256 common.opt:2313
! #: common.opt:2783 common.opt:2819 common.opt:2912 common.opt:2916
! #: common.opt:3025 common.opt:3160 common.opt:3168 common.opt:3176
! #: common.opt:3184 common.opt:3285 common.opt:3345 common.opt:3433
! #: common.opt:3613 common.opt:3617 common.opt:3621 common.opt:3625
! #: common.opt:3699 common.opt:3703 common.opt:3734 common.opt:3738
  #, no-c-format
  msgid "Does nothing.  Preserved for backward compatibility."
  msgstr ""
--- 1359,1370 ----
  #: config/arc/arc.opt:312 config/arc/arc.opt:317 config/arc/arc.opt:326
  #: config/arc/arc.opt:405 common.opt:649 common.opt:1210 common.opt:1214
  #: common.opt:1218 common.opt:1313 common.opt:1658 common.opt:1740
! #: common.opt:1839 common.opt:2109 common.opt:2256 common.opt:2310
! #: common.opt:2780 common.opt:2816 common.opt:2909 common.opt:2913
! #: common.opt:3022 common.opt:3157 common.opt:3165 common.opt:3173
! #: common.opt:3181 common.opt:3282 common.opt:3342 common.opt:3430
! #: common.opt:3610 common.opt:3614 common.opt:3618 common.opt:3622
! #: common.opt:3696 common.opt:3700 common.opt:3731 common.opt:3735
  #, no-c-format
  msgid "Does nothing.  Preserved for backward compatibility."
  msgstr ""
*************** msgstr ""
*** 4141,4215 ****
  msgid "Do not predefine system-specific and GCC-specific macros."
  msgstr ""
  
! #: cobol/lang.opt:43
  #, no-c-format
  msgid "Accept COBOL constructs used by non-ISO compilers"
  msgstr ""
  
! #: cobol/lang.opt:62
  #, fuzzy, no-c-format
  msgid "-fcobol-exceptions=<n>\tEnable some exceptions by default"
  msgstr "-fhandle-exceptions er blevet omdÃ¸bt til -fexceptions (og er nu til som standard)"
  
! #: cobol/lang.opt:66
  #, no-c-format
  msgid "Define alternative implicit copybook filename extension"
  msgstr ""
  
! #: cobol/lang.opt:70
  #, no-c-format
  msgid "Set Working-Storage data items to the supplied value"
  msgstr ""
  
! #: cobol/lang.opt:74
  #, fuzzy, no-c-format
  #| msgid "Enable backend debugging."
  msgid "Enable Cobol lex debugging"
  msgstr "Aktiver motorfejlsÃ¸gning."
  
! #: cobol/lang.opt:86
  #, no-c-format
  msgid "-findicator-column=<n>\tColumn after which Region A begins"
  msgstr ""
  
! #: cobol/lang.opt:90
  #, no-c-format
  msgid "-finternal-ebcdic\tInternal processing is in EBCDIC Code Page 1140"
  msgstr ""
  
! #: cobol/lang.opt:94
  #, no-c-format
  msgid "Enable/disable static linkage for CALL literals"
  msgstr ""
  
! #: cobol/lang.opt:98
  #, fuzzy, no-c-format
  #| msgid "Enable backend debugging."
  msgid "Enable Cobol parser debugging"
  msgstr "Aktiver motorfejlsÃ¸gning."
  
! #: cobol/lang.opt:102
  #, fuzzy, no-c-format
  #| msgid "Enable backend debugging."
  msgid "Enable Cobol yacc debugging"
  msgstr "Aktiver motorfejlsÃ¸gning."
  
! #: cobol/lang.opt:106
  #, no-c-format
  msgid "preprocess <source_filter> before compiling"
  msgstr ""
  
! #: cobol/lang.opt:126
  #, no-c-format
  msgid "-main\tThe first program-id in the next source file is called by a generated main() entry point"
  msgstr ""
  
! #: cobol/lang.opt:130
  #, no-c-format
  msgid "-main=<source_file> source_file/PROGRAM-ID is called by the generated main()"
  msgstr ""
  
! #: cobol/lang.opt:134
  #, no-c-format
  msgid "-nomain\tNo main() function is created from COBOL source files"
  msgstr ""
--- 4141,4215 ----
  msgid "Do not predefine system-specific and GCC-specific macros."
  msgstr ""
  
! #: cobol/lang.opt:48
  #, no-c-format
  msgid "Accept COBOL constructs used by non-ISO compilers"
  msgstr ""
  
! #: cobol/lang.opt:67
  #, fuzzy, no-c-format
  msgid "-fcobol-exceptions=<n>\tEnable some exceptions by default"
  msgstr "-fhandle-exceptions er blevet omdÃ¸bt til -fexceptions (og er nu til som standard)"
  
! #: cobol/lang.opt:71
  #, no-c-format
  msgid "Define alternative implicit copybook filename extension"
  msgstr ""
  
! #: cobol/lang.opt:75
  #, no-c-format
  msgid "Set Working-Storage data items to the supplied value"
  msgstr ""
  
! #: cobol/lang.opt:79
  #, fuzzy, no-c-format
  #| msgid "Enable backend debugging."
  msgid "Enable Cobol lex debugging"
  msgstr "Aktiver motorfejlsÃ¸gning."
  
! #: cobol/lang.opt:91
  #, no-c-format
  msgid "-findicator-column=<n>\tColumn after which Region A begins"
  msgstr ""
  
! #: cobol/lang.opt:95
  #, no-c-format
  msgid "-finternal-ebcdic\tInternal processing is in EBCDIC Code Page 1140"
  msgstr ""
  
! #: cobol/lang.opt:99
  #, no-c-format
  msgid "Enable/disable static linkage for CALL literals"
  msgstr ""
  
! #: cobol/lang.opt:103
  #, fuzzy, no-c-format
  #| msgid "Enable backend debugging."
  msgid "Enable Cobol parser debugging"
  msgstr "Aktiver motorfejlsÃ¸gning."
  
! #: cobol/lang.opt:107
  #, fuzzy, no-c-format
  #| msgid "Enable backend debugging."
  msgid "Enable Cobol yacc debugging"
  msgstr "Aktiver motorfejlsÃ¸gning."
  
! #: cobol/lang.opt:111
  #, no-c-format
  msgid "preprocess <source_filter> before compiling"
  msgstr ""
  
! #: cobol/lang.opt:131
  #, no-c-format
  msgid "-main\tThe first program-id in the next source file is called by a generated main() entry point"
  msgstr ""
  
! #: cobol/lang.opt:135
  #, no-c-format
  msgid "-main=<source_file> source_file/PROGRAM-ID is called by the generated main()"
  msgstr ""
  
! #: cobol/lang.opt:139
  #, no-c-format
  msgid "-nomain\tNo main() function is created from COBOL source files"
  msgstr ""
*************** msgstr ""
*** 9418,9430 ****
  msgid "Known PTX ISA versions (for use with the -mptx= option):"
  msgstr "Kendte PTX ISA-versioner (for brug med tilvalget -misa=):"
  
! #: config/nvptx/nvptx.opt:156
  #, fuzzy, no-c-format
  #| msgid "Specify the version of the ptx ISA to use."
  msgid "Specify the PTX ISA version to use."
  msgstr "Angiv versionen for ptx ISA'en at anvende."
  
! #: config/nvptx/nvptx.opt:160
  #, fuzzy, no-c-format
  #| msgid "Use fp registers"
  msgid "Initialize ptx registers."
--- 9418,9430 ----
  msgid "Known PTX ISA versions (for use with the -mptx= option):"
  msgstr "Kendte PTX ISA-versioner (for brug med tilvalget -misa=):"
  
! #: config/nvptx/nvptx.opt:159
  #, fuzzy, no-c-format
  #| msgid "Specify the version of the ptx ISA to use."
  msgid "Specify the PTX ISA version to use."
  msgstr "Angiv versionen for ptx ISA'en at anvende."
  
! #: config/nvptx/nvptx.opt:163
  #, fuzzy, no-c-format
  #| msgid "Use fp registers"
  msgid "Initialize ptx registers."
*************** msgstr ""
*** 9609,9639 ****
  
  #: config/avr/avr.opt:169
  #, no-c-format
! msgid "Assume that all data in static storage can be accessed by LDS / STS instructions.  This option is only useful for reduced Tiny devices like ATtiny40."
  msgstr ""
  
  #: config/avr/avr.opt:173
  #, no-c-format
! msgid "-mdouble=<BITS>\tUse <BITS> bits wide double type."
  msgstr ""
  
  #: config/avr/avr.opt:177
  #, no-c-format
! msgid "-mlong-double=<BITS>\tUse <BITS> bits wide long double type."
  msgstr ""
  
  #: config/avr/avr.opt:181
  #, no-c-format
! msgid "Do not link against the device-specific library lib<MCU>.a."
  msgstr ""
  
  #: config/avr/avr.opt:185
  #, no-c-format
! msgid "Do not use the device-specific specs file device-specs/specs-<MCU>."
  msgstr ""
  
  #: config/avr/avr.opt:189
  #, no-c-format
  msgid "Available BITS selections:"
  msgstr ""
  
--- 9609,9644 ----
  
  #: config/avr/avr.opt:169
  #, no-c-format
! msgid "Optimization. Fuse some move insns after insn combine."
  msgstr ""
  
  #: config/avr/avr.opt:173
  #, no-c-format
! msgid "Assume that all data in static storage can be accessed by LDS / STS instructions.  This option is only useful for reduced Tiny devices like ATtiny40."
  msgstr ""
  
  #: config/avr/avr.opt:177
  #, no-c-format
! msgid "-mdouble=<BITS>\tUse <BITS> bits wide double type."
  msgstr ""
  
  #: config/avr/avr.opt:181
  #, no-c-format
! msgid "-mlong-double=<BITS>\tUse <BITS> bits wide long double type."
  msgstr ""
  
  #: config/avr/avr.opt:185
  #, no-c-format
! msgid "Do not link against the device-specific library lib<MCU>.a."
  msgstr ""
  
  #: config/avr/avr.opt:189
  #, no-c-format
+ msgid "Do not use the device-specific specs file device-specs/specs-<MCU>."
+ msgstr ""
+ 
+ #: config/avr/avr.opt:193
+ #, no-c-format
  msgid "Available BITS selections:"
  msgstr ""
  
*************** msgstr ""
*** 15570,15576 ****
  msgid "Mark all loops as parallel."
  msgstr ""
  
! #: common.opt:1852 common.opt:1860 common.opt:3249
  #, no-c-format
  msgid "Enable loop nest transforms.  Same as -floop-nest-optimize."
  msgstr ""
--- 15575,15581 ----
  msgid "Mark all loops as parallel."
  msgstr ""
  
! #: common.opt:1852 common.opt:1860 common.opt:3246
  #, no-c-format
  msgid "Enable loop nest transforms.  Same as -floop-nest-optimize."
  msgstr ""
*************** msgstr ""
*** 15961,17480 ****
  msgid "Number of cache entries in incremental LTO after which to prune old entries."
  msgstr ""
  
! #: common.opt:2304
  #, no-c-format
  msgid "Specify the algorithm to partition symbols and vars at linktime."
  msgstr ""
  
! #: common.opt:2309
  #, no-c-format
  msgid "Use zlib/zstd compression level <number> for IL."
  msgstr ""
  
! #: common.opt:2317
  #, fuzzy, no-c-format
  msgid "Report various link-time optimization statistics."
  msgstr "Foretag registeromdÃ¸bningsoptimering"
  
! #: common.opt:2321
  #, fuzzy, no-c-format
  msgid "Report various link-time optimization statistics for WPA only."
  msgstr "Foretag registeromdÃ¸bningsoptimering"
  
! #: common.opt:2325
  #, fuzzy, no-c-format
  #| msgid "Set errno after built-in math functions"
  msgid "Set errno after built-in math functions."
  msgstr "SÃ¦t errno efter indbyggede matematikfunktioner"
  
! #: common.opt:2329
  #, no-c-format
  msgid "-fmax-errors=<number>\tMaximum number of errors to report."
  msgstr ""
  
! #: common.opt:2333
  #, no-c-format
  msgid "Allow removal of malloc and free pairs when allocated block is unused."
  msgstr ""
  
! #: common.opt:2340
  #, fuzzy, no-c-format
  msgid "Report on permanent memory allocation."
  msgstr "RapportÃ©r om permanente hukommelsesallokering ved afslutningen af kÃ¸rslen"
  
! #: common.opt:2344
  #, fuzzy, no-c-format
  msgid "Report on permanent memory allocation in WPA only."
  msgstr "RapportÃ©r om permanente hukommelsesallokering ved afslutningen af kÃ¸rslen"
  
! #: common.opt:2351
  #, fuzzy, no-c-format
  #| msgid "Attempt to merge identical constants and constant variables"
  msgid "Attempt to merge identical constants and constant variables."
  msgstr "ForsÃ¸g at forene identiske konstanter og konstante variabler"
  
! #: common.opt:2355
  #, fuzzy, no-c-format
  #| msgid "Attempt to merge identical constants across compilation units"
  msgid "Attempt to merge identical constants across compilation units."
  msgstr "ForsÃ¸g at forene identiske konstanter over forskellige oversÃ¦ttelsesenheder"
  
! #: common.opt:2359
  #, fuzzy, no-c-format
  #| msgid "Attempt to merge identical constants across compilation units"
  msgid "Attempt to merge identical debug strings across compilation units."
  msgstr "ForsÃ¸g at forene identiske konstanter over forskellige oversÃ¦ttelsesenheder"
  
! #: common.opt:2363
  #, fuzzy, no-c-format
  msgid "-fmessage-length=<number>\tLimit diagnostics to <number> characters per line.  0 suppresses line-wrapping."
  msgstr "  -fmessage-length=<antal>  BegrÃ¦ns lÃ¦ngden af diagnosticeringmeddelelser til lÃ¦ngden <antal> tegn/linje. 0 undertrykker linjeombrydning\n"
  
! #: common.opt:2367
  #, fuzzy, no-c-format
  #| msgid "Align the start of functions"
  msgid "Align the start of every function."
  msgstr "JustÃ©r begyndelsen af funktioner"
  
! #: common.opt:2371
  #, no-c-format
  msgid "Perform SMS based modulo scheduling before the first scheduling pass."
  msgstr ""
  
! #: common.opt:2375
  #, no-c-format
  msgid "Perform SMS based modulo scheduling with register moves allowed."
  msgstr ""
  
! #: common.opt:2379
  #, fuzzy, no-c-format
  #| msgid "Force all loop invariant computations out of loops"
  msgid "Move loop invariant computations out of loops."
  msgstr "Tving alle lÃ¸kkeinvariansberegninger ud af lÃ¸kker"
  
! #: common.opt:2383
  #, fuzzy, no-c-format
  #| msgid "Align the start of loops"
  msgid "Move stores out of loops."
  msgstr "JustÃ©r begyndelsen af lÃ¸kker"
  
! #: common.opt:2387
  #, no-c-format
  msgid "Building block for specs-based multilib-aware TFLAGS."
  msgstr ""
  
! #: common.opt:2391
  #, fuzzy, no-c-format
  #| msgid "Enable aggressive SSA dead code elimination"
  msgid "Use the RTL dead code elimination pass."
  msgstr "AktivÃ©r aggressiv SSA-eliminering af ubrugt kode"
  
! #: common.opt:2395
  #, fuzzy, no-c-format
  msgid "Use the RTL dead store elimination pass."
  msgstr "Foretag en komplet registerflytningsoptimering"
  
! #: common.opt:2399
  #, no-c-format
  msgid "Enable/Disable the traditional scheduling in loops that already passed modulo scheduling."
  msgstr ""
  
! #: common.opt:2403
  #, fuzzy, no-c-format
  #| msgid "Support synchronous non-call exceptions"
  msgid "Support synchronous non-call exceptions."
  msgstr "UnderstÃ¸t synkrone ikke-kaldende undtagelser"
  
! #: common.opt:2410
  #, no-c-format
  msgid "-foffload-options=<targets>=<options>\tSpecify options for the offloading targets."
  msgstr ""
  
! #: common.opt:2414
  #, no-c-format
  msgid "-foffload-abi=[lp64|ilp32]\tSet the ABI to use in an offload compiler."
  msgstr ""
  
! #: common.opt:2427
  #, no-c-format
  msgid "-foffload-abi-host-opts=<options>\tSpecify host ABI options."
  msgstr ""
  
! #: common.opt:2431
  #, fuzzy, no-c-format
  #| msgid "When possible do not generate stack frames"
  msgid "When possible do not generate stack frames."
  msgstr "GenerÃ©r ikke stakrammer nÃ¥r det kan undgÃ¥s"
  
! #: common.opt:2438
  #, fuzzy, no-c-format
  msgid "Generate SIMD clones for functions with the OpenMP declare target directive."
  msgstr "GenerÃ©r kode for funktioner selv hvis de indlejres helt"
  
! #: common.opt:2457
  #, fuzzy, no-c-format
  #| msgid "Enable linker optimizations"
  msgid "Enable all optimization info dumps on stderr."
  msgstr "AktivÃ©r sammenkÃ¦deroptimeringer"
  
! #: common.opt:2461
  #, no-c-format
  msgid "-fopt-info[-<type>=filename]\tDump compiler optimization details."
  msgstr ""
  
! #: common.opt:2465
  #, no-c-format
  msgid "Write a SRCFILE.opt-record.json file detailing what optimizations were performed."
  msgstr ""
  
! #: common.opt:2469
  #, no-c-format
  msgid "Detect loops calculating CRC and replace with faster implementation. If the target supports CRC instruction and the CRC loop uses the same polynomial as the one used in the CRC instruction, directly replace with the corresponding CRC instruction. Otherwise, if the target supports carry-less-multiplication instruction, generate CRC using it. If neither case applies, generate table-based CRC."
  msgstr ""
  
! #: common.opt:2483
  #, fuzzy, no-c-format
  #| msgid "Optimize sibling and tail recursive calls"
  msgid "Optimize sibling and tail recursive calls."
  msgstr "OptimÃ©r sÃ¸skende- og halerekursive kald"
  
! #: common.opt:2487
  #, fuzzy, no-c-format
  msgid "Insert path profiling code."
  msgstr "IndsÃ¦t buebaseret programprofileringskode"
  
! #: common.opt:2491
  #, fuzzy, no-c-format
  msgid "Perform partial inlining."
  msgstr "UdfÃ¸r lÃ¸kkeoptimeringerne"
  
! #: common.opt:2495 common.opt:2499
  #, no-c-format
  msgid "Report on memory allocation before interprocedural optimization."
  msgstr ""
  
! #: common.opt:2503
  #, fuzzy, no-c-format
  #| msgid "Pack structure members together without holes"
  msgid "Pack structure members together without holes."
  msgstr "Pak strukturmedlemmer sammen uden mellemrum"
  
! #: common.opt:2507
  #, no-c-format
  msgid "-fpack-struct=<number>\tSet initial maximum structure member alignment."
  msgstr ""
  
! #: common.opt:2511
  #, fuzzy, no-c-format
  msgid "Return small aggregates in memory, not registers."
  msgstr "ReturnÃ©r smÃ¥ sammensatte vÃ¦rdier i hukommelsen, ikke i registre"
  
! #: common.opt:2515
  #, fuzzy, no-c-format
  msgid "Perform loop peeling."
  msgstr "UdfÃ¸r lÃ¸kkeoptimeringerne"
  
! #: common.opt:2519
  #, fuzzy, no-c-format
  #| msgid "Enable machine specific peephole optimizations"
  msgid "Enable machine specific peephole optimizations."
  msgstr "AktivÃ©r maskinspecifikke kighulsoptimeringer"
  
! #: common.opt:2523
  #, fuzzy, no-c-format
  msgid "Enable an RTL peephole pass before sched2."
  msgstr "AktivÃ©r en RTL-kikhulsfase fÃ¸r sched2"
  
! #: common.opt:2527
  #, fuzzy, no-c-format
  msgid "Generate position-independent code if possible (large mode)."
  msgstr "GenerÃ©r placeringsuafhÃ¦ngig kode, om muligt"
  
! #: common.opt:2531
  #, fuzzy, no-c-format
  msgid "Generate position-independent code for executables if possible (large mode)."
  msgstr "GenerÃ©r placeringsuafhÃ¦ngig kode, om muligt"
  
! #: common.opt:2535
  #, fuzzy, no-c-format
  msgid "Generate position-independent code if possible (small mode)."
  msgstr "GenerÃ©r placeringsuafhÃ¦ngig kode, om muligt"
  
! #: common.opt:2539
  #, fuzzy, no-c-format
  msgid "Generate position-independent code for executables if possible (small mode)."
  msgstr "GenerÃ©r placeringsuafhÃ¦ngig kode, om muligt"
  
! #: common.opt:2543
  #, no-c-format
  msgid "Use PLT for PIC calls (-fno-plt: load the address from GOT at call site)."
  msgstr ""
  
! #: common.opt:2547
  #, no-c-format
  msgid "Specify a plugin to load."
  msgstr ""
  
! #: common.opt:2551
  #, no-c-format
  msgid "-fplugin-arg-<name>-<key>[=<value>]\tSpecify argument <key>=<value> for plugin <name>."
  msgstr ""
  
! #: common.opt:2555
  #, fuzzy, no-c-format
  #| msgid "Enables a register move optimization"
  msgid "Run predictive commoning optimization."
  msgstr "AktivÃ©r en registerflytningsoptimering"
  
! #: common.opt:2559
  #, fuzzy, no-c-format
  #| msgid "Generate prefetch instructions, if available, for arrays in loops"
  msgid "Generate prefetch instructions, if available, for arrays in loops."
  msgstr "GenerÃ©r prÃ¦hentningsinstruktioner, hvis tilgÃ¦ngelige, for tabeller i lÃ¸kker"
  
! #: common.opt:2563
  #, fuzzy, no-c-format
  #| msgid "Enable basic program profiling code"
  msgid "Enable basic program profiling code."
  msgstr "AktivÃ©r basal programprofileringskode"
  
! #: common.opt:2567
  #, fuzzy, no-c-format
  #| msgid "Generate code for near calls"
  msgid "Generate absolute source path names for gcov."
  msgstr "GenerÃ©r kode til nÃ¦re kald"
  
! #: common.opt:2571
  #, fuzzy, no-c-format
  msgid "Insert arc-based program profiling code."
  msgstr "IndsÃ¦t buebaseret programprofileringskode"
  
! #: common.opt:2575
  #, fuzzy, no-c-format
  msgid "Insert condition coverage profiling code."
  msgstr "IndsÃ¦t buebaseret programprofileringskode"
  
! #: common.opt:2579
  #, no-c-format
  msgid "Set the top-level directory for storing the profile data. The default is 'pwd'."
  msgstr ""
  
! #: common.opt:2584
  #, no-c-format
  msgid "Select the name for storing the profile note file."
  msgstr ""
  
! #: common.opt:2588
  #, fuzzy, no-c-format
  #| msgid "Enable SSA conditional constant propagation"
  msgid "Enable correction of flow inconsistent profile data input."
  msgstr "AktivÃ©r betinget konstant SSA-propagering"
  
! #: common.opt:2592
  #, no-c-format
  msgid "-fprofile-update=[single|atomic|prefer-atomic]\tSet the profile update method."
  msgstr ""
  
! #: common.opt:2596
  #, no-c-format
  msgid "Instrument only functions from files whose name matches any of the regular expressions (separated by semi-colons)."
  msgstr ""
  
! #: common.opt:2600
  #, no-c-format
  msgid "Instrument only functions from files whose name does not match any of the regular expressions (separated by semi-colons)."
  msgstr ""
  
! #: common.opt:2616
  #, no-c-format
  msgid "-fprofile-reproducible=[serial|parallel-runs|multithreaded]\tControl level of reproducibility of profile gathered by -fprofile-generate."
  msgstr ""
  
! #: common.opt:2632
  #, no-c-format
  msgid "Remove prefix from absolute path before mangling name for -fprofile-generate= and -fprofile-use=."
  msgstr ""
  
! #: common.opt:2636
  #, no-c-format
  msgid "-fprofile-prefix-map=<old>=<new>\tMap one directory name to another in GCOV coverage result."
  msgstr ""
  
! #: common.opt:2640
  #, no-c-format
  msgid "Enable common options for generating profile info for profile feedback directed optimizations."
  msgstr ""
  
! #: common.opt:2644
  #, no-c-format
  msgid "Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=."
  msgstr ""
  
! #: common.opt:2648
  #, no-c-format
  msgid "Register the profile information in the .gcov_info section instead of using a constructor/destructor."
  msgstr ""
  
! #: common.opt:2652
  #, no-c-format
  msgid "Register the profile information in the specified section instead of using a constructor/destructor."
  msgstr ""
  
! #: common.opt:2656
  #, no-c-format
  msgid "Do not assume that functions never executed during the train run are cold."
  msgstr ""
  
! #: common.opt:2660
  #, no-c-format
  msgid "Enable common options for performing profile feedback directed optimizations."
  msgstr ""
  
! #: common.opt:2664
  #, no-c-format
  msgid "Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=."
  msgstr ""
  
! #: common.opt:2668
  #, no-c-format
  msgid "Insert code to profile values of expressions."
  msgstr ""
  
! #: common.opt:2672
  #, fuzzy, no-c-format
  #| msgid "internal gcc abort"
  msgid "Report on consistency of profile."
  msgstr "intern GCC-afbrydelse"
  
! #: common.opt:2676
  #, fuzzy, no-c-format
  #| msgid "Reorder functions to improve code placement"
  msgid "Enable function reordering that improves code placement."
  msgstr "Omordn funktioner for at forbedre kodeplacering"
  
! #: common.opt:2680
  #, fuzzy, no-c-format
  #| msgid "Generate cld instruction in the function prologue."
  msgid "Insert NOP instructions at each function entry."
  msgstr "Opret cld-instruktion i en funktions begyndelse."
  
! #: common.opt:2687
  #, no-c-format
  msgid "-frandom-seed=<string>\tMake compile reproducible using <string>."
  msgstr ""
  
! #: common.opt:2697
  #, no-c-format
  msgid "Record gcc command line switches in the object file."
  msgstr ""
  
! #: common.opt:2701
  #, fuzzy, no-c-format
  msgid "Return small aggregates in registers."
  msgstr "ReturnÃ©r smÃ¥ sammensatte vÃ¦rdier i registre"
  
! #: common.opt:2709
  #, no-c-format
  msgid "Tell DSE that the storage for a C++ object is dead when the constructor starts and when the destructor finishes."
  msgstr ""
  
! #: common.opt:2723
  #, no-c-format
  msgid "-flive-patching=[inline-only-static|inline-clone]\tControl IPA optimizations to provide a safe compilation for live-patching.  At the same time, provides multiple-level control on the enabled IPA optimizations."
  msgstr ""
  
! #: common.opt:2738
  #, no-c-format
  msgid "Tell DCE to remove unused C++ allocations."
  msgstr ""
  
! #: common.opt:2742
  #, no-c-format
  msgid "Relief of register pressure through live range shrinkage."
  msgstr ""
  
! #: common.opt:2746
  #, fuzzy, no-c-format
  msgid "Perform a register renaming optimization pass."
  msgstr "Foretag registeromdÃ¸bningsoptimering"
  
! #: common.opt:2750
  #, fuzzy, no-c-format
  msgid "Perform a target dependent instruction fusion optimization pass."
  msgstr "Foretag registeromdÃ¸bningsoptimering"
  
! #: common.opt:2754
  #, fuzzy, no-c-format
  #| msgid "Reorder basic blocks to improve code placement"
  msgid "Reorder basic blocks to improve code placement."
  msgstr "Omordn basisblokke for at forbedre kodeplacering"
  
! #: common.opt:2758
  #, no-c-format
  msgid "-freorder-blocks-algorithm=[simple|stc]\tSet the used basic block reordering algorithm."
  msgstr ""
  
! #: common.opt:2771
  #, fuzzy, no-c-format
  #| msgid "Reorder basic blocks to improve code placement"
  msgid "Reorder basic blocks and partition into hot and cold sections."
  msgstr "Omordn basisblokke for at forbedre kodeplacering"
  
! #: common.opt:2775
  #, fuzzy, no-c-format
  #| msgid "Reorder functions to improve code placement"
  msgid "Reorder functions to improve code placement."
  msgstr "Omordn funktioner for at forbedre kodeplacering"
  
! #: common.opt:2779
  #, fuzzy, no-c-format
  msgid "Add a common subexpression elimination pass after loop optimizations."
  msgstr "KÃ¸r CSE-fase efter lÃ¸kkeoptimeringer"
  
! #: common.opt:2787
  #, no-c-format
  msgid "Disable optimizations that assume default FP rounding behavior."
  msgstr ""
  
! #: common.opt:2791
  #, fuzzy, no-c-format
  #| msgid "Enable scheduling across basic blocks"
  msgid "Enable scheduling across basic blocks."
  msgstr "AktivÃ©r planlÃ¦gning over basisblokke"
  
! #: common.opt:2795
  #, no-c-format
  msgid "Enable register pressure sensitive insn scheduling."
  msgstr ""
  
! #: common.opt:2799
  #, fuzzy, no-c-format
  #| msgid "Allow speculative motion of non-loads"
  msgid "Allow speculative motion of non-loads."
  msgstr "Tillad spekulativ bevÃ¦gelse af ikke-indlÃ¦sninger"
  
! #: common.opt:2803
  #, fuzzy, no-c-format
  #| msgid "Allow speculative motion of some loads"
  msgid "Allow speculative motion of some loads."
  msgstr "Tillad spekulativ bevÃ¦gelse af nogle indlÃ¦sninger"
  
! #: common.opt:2807
  #, fuzzy, no-c-format
  #| msgid "Allow speculative motion of more loads"
  msgid "Allow speculative motion of more loads."
  msgstr "Tillad spekulativ bevÃ¦gelse af flere indlÃ¦sninger"
  
! #: common.opt:2811
  #, fuzzy, no-c-format
  msgid "-fsched-verbose=<number>\tSet the verbosity level of the scheduler."
  msgstr "  -fsched-verbose=<tal>    Angiv hvor meget planlÃ¦ggeren skal fortÃ¦lle\n"
  
! #: common.opt:2815
  #, no-c-format
  msgid "If scheduling post reload, do superblock scheduling."
  msgstr ""
  
! #: common.opt:2823
  #, fuzzy, no-c-format
  #| msgid "Reschedule instructions before register allocation"
  msgid "Reschedule instructions before register allocation."
  msgstr "OmplanlÃ¦g instruktioner fÃ¸r registerallokering"
  
! #: common.opt:2827
  #, fuzzy, no-c-format
  #| msgid "Reschedule instructions after register allocation"
  msgid "Reschedule instructions after register allocation."
  msgstr "OmplanlÃ¦g instruktioner efter registerallokering"
  
! #: common.opt:2834
  #, no-c-format
  msgid "Schedule instructions using selective scheduling algorithm."
  msgstr ""
  
! #: common.opt:2838
  #, no-c-format
  msgid "Run selective scheduling after reload."
  msgstr ""
  
! #: common.opt:2842
  #, no-c-format
  msgid "Run self-tests, using the given path to locate test files."
  msgstr ""
  
! #: common.opt:2846
  #, no-c-format
  msgid "Perform software pipelining of inner loops during selective scheduling."
  msgstr ""
  
! #: common.opt:2850
  #, no-c-format
  msgid "Perform software pipelining of outer loops during selective scheduling."
  msgstr ""
  
! #: common.opt:2854
  #, no-c-format
  msgid "Reschedule pipelined regions without pipelining."
  msgstr ""
  
! #: common.opt:2858
  #, no-c-format
  msgid "Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker."
  msgstr ""
  
! #: common.opt:2864
  #, no-c-format
  msgid "Allow premature scheduling of queued insns."
  msgstr ""
  
! #: common.opt:2868
  #, no-c-format
  msgid "-fsched-stalled-insns=<number>\tSet number of queued insns that can be prematurely scheduled."
  msgstr ""
  
! #: common.opt:2876
  #, no-c-format
  msgid "Set dependence distance checking in premature scheduling of queued insns."
  msgstr ""
  
! #: common.opt:2880
  #, no-c-format
  msgid "-fsched-stalled-insns-dep=<number>\tSet dependence distance checking in premature scheduling of queued insns."
  msgstr ""
  
! #: common.opt:2884
  #, fuzzy, no-c-format
  #| msgid "Enable the group heuristic in the scheduler"
  msgid "Enable the group heuristic in the scheduler."
  msgstr "Aktiver gruppeheuristikken i planlÃ¦ggeren"
  
! #: common.opt:2888
  #, fuzzy, no-c-format
  #| msgid "Enable the group heuristic in the scheduler"
  msgid "Enable the critical path heuristic in the scheduler."
  msgstr "Aktiver gruppeheuristikken i planlÃ¦ggeren"
  
! #: common.opt:2892
  #, fuzzy, no-c-format
  #| msgid "Enable the group heuristic in the scheduler"
  msgid "Enable the speculative instruction heuristic in the scheduler."
  msgstr "Aktiver gruppeheuristikken i planlÃ¦ggeren"
  
! #: common.opt:2896
  #, fuzzy, no-c-format
  #| msgid "Enable the group heuristic in the scheduler"
  msgid "Enable the rank heuristic in the scheduler."
  msgstr "Aktiver gruppeheuristikken i planlÃ¦ggeren"
  
! #: common.opt:2900
  #, fuzzy, no-c-format
  #| msgid "Enable the group heuristic in the scheduler"
  msgid "Enable the last instruction heuristic in the scheduler."
  msgstr "Aktiver gruppeheuristikken i planlÃ¦ggeren"
  
! #: common.opt:2904
  #, fuzzy, no-c-format
  #| msgid "Enable the group heuristic in the scheduler"
  msgid "Enable the dependent count heuristic in the scheduler."
  msgstr "Aktiver gruppeheuristikken i planlÃ¦ggeren"
  
! #: common.opt:2908
  #, no-c-format
  msgid "Access data in the same section from shared anchor points."
  msgstr ""
  
! #: common.opt:2920
  #, no-c-format
  msgid "Turn on Redundant Extensions Elimination pass."
  msgstr ""
  
! #: common.opt:2924
  #, no-c-format
  msgid "Show column numbers in diagnostics, when available.  Default on."
  msgstr ""
  
! #: common.opt:2928
  #, no-c-format
  msgid "Emit function prologues only before parts of the function that need it, rather than at the top of the function."
  msgstr ""
  
! #: common.opt:2933
  #, no-c-format
  msgid "Shrink-wrap parts of the prologue and epilogue separately."
  msgstr ""
  
! #: common.opt:2937
  #, fuzzy, no-c-format
  #| msgid "Disable optimizations observable by IEEE signaling NaNs"
  msgid "Disable optimizations observable by IEEE signaling NaNs."
  msgstr "DeaktivÃ©r optimeringer som kan opdages ved IEEE-signalerende NaN'er"
  
! #: common.opt:2941
  #, no-c-format
  msgid "Disable floating point optimizations that ignore the IEEE signedness of zero."
  msgstr ""
  
! #: common.opt:2945
  #, fuzzy, no-c-format
  msgid "Convert floating point constants to single precision constants."
  msgstr "KonvertÃ©r kommatalskonstanter til enkeltprÃ¦cisionskonstanter"
  
! #: common.opt:2949
  #, fuzzy, no-c-format
  #| msgid "Strength reduce all loop general induction variables"
  msgid "Split lifetimes of induction variables when loops are unrolled."
  msgstr "StyrkereducÃ©r alle generelle lÃ¸kkeinduktionsvariabler"
  
! #: common.opt:2953
  #, fuzzy, no-c-format
  #| msgid "Generate APCS conformant stack frames"
  msgid "Generate discontiguous stack frames."
  msgstr "GenerÃ©r APCS-overholdende stakrammer"
  
! #: common.opt:2957
  #, no-c-format
  msgid "Split wide types into independent registers."
  msgstr ""
  
! #: common.opt:2961
  #, no-c-format
  msgid "Split wide types into independent registers earlier."
  msgstr ""
  
! #: common.opt:2965
  #, no-c-format
  msgid "Enable backward propagation of use properties at the SSA level."
  msgstr ""
  
! #: common.opt:2969
  #, no-c-format
  msgid "Optimize conditional patterns using SSA PHI nodes."
  msgstr ""
  
! #: common.opt:2973
  #, fuzzy, no-c-format
  #| msgid "Number of registers used to pass integer arguments"
  msgid "Optimize amount of stdarg registers saved to stack at start of function."
  msgstr "Antallet af registre der skal bruges til at overbringe heltalsparametre"
  
! #: common.opt:2977
  #, no-c-format
  msgid "Apply variable expansion when loops are unrolled."
  msgstr ""
  
! #: common.opt:2981
  #, fuzzy, no-c-format
  #| msgid "Insert stack checking code into the program"
  msgid "-fstack-check=[no|generic|specific]\tInsert stack checking code into the program."
  msgstr "IndsÃ¦t stakkontrolleringskode i programmet"
  
! #: common.opt:2985
  #, fuzzy, no-c-format
  #| msgid "Insert stack checking code into the program"
  msgid "Insert stack checking code into the program.  Same as -fstack-check=specific."
  msgstr "IndsÃ¦t stakkontrolleringskode i programmet"
  
! #: common.opt:2989
  #, no-c-format
  msgid "Insert code to probe each page of stack space as it is allocated to protect from stack-clash style attacks."
  msgstr ""
  
! #: common.opt:2997
  #, no-c-format
  msgid "-fstack-limit-register=<register>\tTrap if the stack goes past <register>."
  msgstr ""
  
! #: common.opt:3001
  #, no-c-format
  msgid "-fstack-limit-symbol=<name>\tTrap if the stack goes past symbol <name>."
  msgstr ""
  
! #: common.opt:3005
  #, fuzzy, no-c-format
  #| msgid "Enable stack probing"
  msgid "Use propolice as a stack protection method."
  msgstr "AktivÃ©r stakprÃ¸vning"
  
! #: common.opt:3009
  #, no-c-format
  msgid "Use a stack protection method for every function."
  msgstr ""
  
! #: common.opt:3013
  #, no-c-format
  msgid "Use a smart stack protection method for certain functions."
  msgstr ""
  
! #: common.opt:3017
  #, no-c-format
  msgid "Use stack protection method only for functions with the stack_protect attribute."
  msgstr ""
  
! #: common.opt:3021
  #, fuzzy, no-c-format
  #| msgid "Reuse r30 on a per function basis"
  msgid "Output stack usage information on a per-function basis."
  msgstr "Genbrug r30 pÃ¥ et pr. funktionsgrundlag"
  
! #: common.opt:3033
  #, fuzzy, no-c-format
  #| msgid "Assume strict aliasing rules apply"
  msgid "Assume strict aliasing rules apply."
  msgstr "Antag at strenge aliasregler skal anvendes"
  
! #: common.opt:3037
  #, fuzzy, no-c-format
  #| msgid "Set Windows defines"
  msgid "Treat signed overflow as undefined.  Negated as -fwrapv -fwrapv-pointer."
  msgstr "Angiv Windows-definitioner"
  
! #: common.opt:3041
  #, no-c-format
  msgid "Disable stack scrub entirely, disregarding strub attributes."
  msgstr ""
  
! #: common.opt:3045
  #, no-c-format
  msgid "Enable stack scrub as per attributes, with strict call checking."
  msgstr ""
  
! #: common.opt:3054
  #, no-c-format
  msgid "Restore default strub mode: as per attributes, with relaxed checking."
  msgstr ""
  
! #: common.opt:3058
  #, fuzzy, no-c-format
  #| msgid "name missing for member function"
  msgid "Enable stack scrubbing for all viable functions."
  msgstr "navn mangler for medlemsfunktion"
  
! #: common.opt:3062
  #, no-c-format
  msgid "Enable at-calls stack scrubbing for all viable functions."
  msgstr ""
  
! #: common.opt:3066
  #, fuzzy, no-c-format
  #| msgid "Enable barrel shift instructions"
  msgid "Enable internal stack scrubbing for all viable functions."
  msgstr "Aktiver barrel shift-instruktioner"
  
! #: common.opt:3070
  #, no-c-format
  msgid "Implement __atomic operations via libcalls to legacy __sync functions."
  msgstr ""
  
! #: common.opt:3074
  #, fuzzy, no-c-format
  #| msgid "Check for syntax errors, then stop"
  msgid "Check for syntax errors, then stop."
  msgstr "Kontroller for syntaksfejl og stop derefter"
  
! #: common.opt:3078
  #, fuzzy, no-c-format
  #| msgid "Create data files needed by \"gcov\""
  msgid "Create data files needed by \"gcov\"."
  msgstr "Opret datafiler som Â»gcovÂ« har brug for"
  
! #: common.opt:3082
  #, fuzzy, no-c-format
  #| msgid "Perform jump threading optimizations"
  msgid "Perform jump threading optimizations."
  msgstr "UdfÃ¸r springtrÃ¥dningsoptimeringer"
  
! #: common.opt:3086
  #, fuzzy, no-c-format
  #| msgid "Report the time taken by each compiler pass"
  msgid "Report the time taken by each compiler pass."
  msgstr "Rapporter den tid det tager for hvert kompilergennemlÃ¸b"
  
! #: common.opt:3090
  #, no-c-format
  msgid "Record times taken by sub-phases separately."
  msgstr ""
  
! #: common.opt:3094
  #, fuzzy, no-c-format
  msgid "-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\tSet the default thread-local storage code generation model."
  msgstr "  -ftls-model=[global-dynamic | local-dynamic | initial-exec | local-exec] Indikerer den forvalgte trÃ¥d-lokale lagringsmodel for kodegenerering\n"
  
! #: common.opt:3113
  #, no-c-format
  msgid "Reorder top level functions, variables, and asms."
  msgstr ""
  
! #: common.opt:3117
  #, fuzzy, no-c-format
  #| msgid "Perform superblock formation via tail duplication"
  msgid "Perform superblock formation via tail duplication."
  msgstr "UdfÃ¸r superbloksformering vha. haleduplikering"
  
! #: common.opt:3121
  #, no-c-format
  msgid "For targets that normally need trampolines for nested functions, always generate them instead of using descriptors."
  msgstr ""
  
! #: common.opt:3126
  #, no-c-format
  msgid "Whether trampolines are generated in executable memory rather than executable stack."
  msgstr ""
  
! #: common.opt:3144
  #, fuzzy, no-c-format
  msgid "Assume floating-point operations can trap."
  msgstr "Kommatalsoperationer kan fange"
  
! #: common.opt:3148
  #, fuzzy, no-c-format
  msgid "Trap for signed overflow in addition, subtraction and multiplication."
  msgstr "OpsÃ¦t fÃ¦lde for overlÃ¸b med fortegn i addition/subtraktion/multiplikation"
  
! #: common.opt:3152
  #, fuzzy, no-c-format
  #| msgid "Enable SSA optimizations"
  msgid "Enable SSA-CCP optimization on trees."
  msgstr "AktivÃ©r SSA-optimeringer"
  
! #: common.opt:3156
  #, fuzzy, no-c-format
  #| msgid "Enable SSA-BIT-CCP optimization on trees"
  msgid "Enable SSA-BIT-CCP optimization on trees."
  msgstr "Aktiver SSA-BIT-CCP-optimering pÃ¥ trÃ¦er"
  
! #: common.opt:3164
  #, fuzzy, no-c-format
  #| msgid "Enable linker optimizations"
  msgid "Enable loop header copying on trees."
  msgstr "AktivÃ©r sammenkÃ¦deroptimeringer"
  
! #: common.opt:3172
  #, fuzzy, no-c-format
  #| msgid "Enable SSA code sinking on trees"
  msgid "Enable SSA coalescing of user variables."
  msgstr "Aktiver SSA-kodesinking pÃ¥ trÃ¦er"
  
! #: common.opt:3180
  #, fuzzy, no-c-format
  msgid "Enable copy propagation on trees."
  msgstr "AktivÃ©r stakprÃ¸vning"
  
! #: common.opt:3188
  #, fuzzy, no-c-format
  #| msgid "Perform conversion of conditional jumps to conditional execution"
  msgid "Transform condition stores into unconditional ones."
  msgstr "UdfÃ¸r konvertering af betingede spring til betinget udfÃ¸rsel"
  
! #: common.opt:3192
  #, fuzzy, no-c-format
  #| msgid "Perform conversion of conditional jumps to conditional execution"
  msgid "Perform conversions of switch initializations."
  msgstr "UdfÃ¸r konvertering af betingede spring til betinget udfÃ¸rsel"
  
! #: common.opt:3196
  #, fuzzy, no-c-format
  #| msgid "Enable aggressive SSA dead code elimination"
  msgid "Enable SSA dead code elimination optimization on trees."
  msgstr "AktivÃ©r aggressiv SSA-eliminering af ubrugt kode"
  
! #: common.opt:3200
  #, fuzzy, no-c-format
  #| msgid "Enable linker optimizations"
  msgid "Enable dominator optimizations."
  msgstr "AktivÃ©r sammenkÃ¦deroptimeringer"
  
! #: common.opt:3204
  #, fuzzy, no-c-format
  #| msgid "Enable most warning messages"
  msgid "Enable tail merging on trees."
  msgstr "AktivÃ©r de fleste advarselsbeskeder"
  
! #: common.opt:3208
  #, fuzzy, no-c-format
  #| msgid "Enable aggressive SSA dead code elimination"
  msgid "Enable dead store elimination."
  msgstr "AktivÃ©r aggressiv SSA-eliminering af ubrugt kode"
  
! #: common.opt:3212
  #, fuzzy, no-c-format
  msgid "Enable forward propagation on trees."
  msgstr "AktivÃ©r stakprÃ¸vning"
  
! #: common.opt:3216
  #, fuzzy, no-c-format
  #| msgid "Force all loop invariant computations out of loops"
  msgid "Enable Full Redundancy Elimination (FRE) on trees."
  msgstr "Tving alle lÃ¸kkeinvariansberegninger ud af lÃ¸kker"
  
! #: common.opt:3220
  #, fuzzy, no-c-format
  #| msgid "Enable linker optimizations"
  msgid "Enable string length optimizations on trees."
  msgstr "AktivÃ©r sammenkÃ¦deroptimeringer"
  
! #: common.opt:3224
  #, no-c-format
  msgid "Detect paths that trigger erroneous or undefined behavior due to dereferencing a null pointer.  Isolate those paths from the main control flow and turn the statement with erroneous or undefined behavior into a trap."
  msgstr ""
  
! #: common.opt:3230
  #, no-c-format
  msgid "Detect paths that trigger erroneous or undefined behavior due to a null value being used in a way forbidden by a returns_nonnull or nonnull attribute.  Isolate those paths from the main control flow and turn the statement with erroneous or undefined behavior into a trap."
  msgstr ""
  
! #: common.opt:3237
  #, fuzzy, no-c-format
  #| msgid "Enable parallel instructions"
  msgid "Enable loop distribution on trees."
  msgstr "AktivÃ©r parallelle instruktioner"
  
! #: common.opt:3241
  #, fuzzy, no-c-format
  #| msgid "Enable parallel instructions"
  msgid "Enable loop distribution for patterns transformed into a library call."
  msgstr "AktivÃ©r parallelle instruktioner"
  
! #: common.opt:3245
  #, fuzzy, no-c-format
  #| msgid "Force all loop invariant computations out of loops"
  msgid "Enable loop invariant motion on trees."
  msgstr "Tving alle lÃ¸kkeinvariansberegninger ud af lÃ¸kker"
  
! #: common.opt:3253
  #, fuzzy, no-c-format
  #| msgid "Strength reduce all loop general induction variables"
  msgid "Create canonical induction variables in loops."
  msgstr "StyrkereducÃ©r alle generelle lÃ¸kkeinduktionsvariabler"
  
! #: common.opt:3257
  #, fuzzy, no-c-format
  #| msgid "Enable linker optimizations"
  msgid "Enable loop optimizations on tree level."
  msgstr "AktivÃ©r sammenkÃ¦deroptimeringer"
  
! #: common.opt:3261
  #, fuzzy, no-c-format
  #| msgid "Enable automatic template instantiation"
  msgid "-ftree-parallelize-loops=<number>\tEnable automatic parallelization of loops."
  msgstr "AktivÃ©r automatisk skabelonsinstantiering"
  
! #: common.opt:3265
  #, fuzzy, no-c-format
  #| msgid "Enable use of conditional move instructions"
  msgid "Enable hoisting loads from conditional pointers."
  msgstr "AktivÃ©r brug af betingede flytteinstruktioner"
  
! #: common.opt:3269
  #, fuzzy, no-c-format
  #| msgid "Enable SSA optimizations"
  msgid "Enable SSA-PRE optimization on trees."
  msgstr "AktivÃ©r SSA-optimeringer"
  
! #: common.opt:3273
  #, no-c-format
  msgid "In SSA-PRE optimization on trees, enable partial-partial redundancy elimination."
  msgstr ""
  
! #: common.opt:3277
  #, no-c-format
  msgid "Perform function-local points-to analysis on trees."
  msgstr ""
  
! #: common.opt:3281
  #, fuzzy, no-c-format
  #| msgid "Enable linker optimizations"
  msgid "Enable reassociation on tree level."
  msgstr "AktivÃ©r sammenkÃ¦deroptimeringer"
  
! #: common.opt:3289
  #, fuzzy, no-c-format
  #| msgid "Enable SSA code sinking on trees"
  msgid "Enable SSA code sinking on trees."
  msgstr "Aktiver SSA-kodesinking pÃ¥ trÃ¦er"
  
! #: common.opt:3293
  #, fuzzy, no-c-format
  #| msgid "Perform strength reduction optimizations"
  msgid "Perform straight-line strength reduction."
  msgstr "UdfÃ¸r styrkereduceringsoptimeringer"
  
! #: common.opt:3297
  #, no-c-format
  msgid "Perform scalar replacement of aggregates."
  msgstr ""
  
! #: common.opt:3301
  #, no-c-format
  msgid "Replace temporary expressions in the SSA->normal pass."
  msgstr ""
  
! #: common.opt:3305
  #, no-c-format
  msgid "Perform live range splitting during the SSA->normal pass."
  msgstr ""
  
! #: common.opt:3309
  #, fuzzy, no-c-format
  msgid "Perform Value Range Propagation on trees."
  msgstr "Foretag registerkopipropageringsoptimering"
  
! #: common.opt:3313
  #, no-c-format
  msgid "Split paths leading to loop backedges."
  msgstr ""
  
! #: common.opt:3317
  #, no-c-format
  msgid "Assume common declarations may be overridden with ones with a larger trailing array."
  msgstr ""
  
! #: common.opt:3322
  #, fuzzy, no-c-format
  msgid "Compile whole compilation unit at a time."
  msgstr "Anbring hele oversÃ¦ttelsesenheden i en fil"
  
! #: common.opt:3326
  #, no-c-format
  msgid "Trap on __builtin_unreachable instead of using it for optimization."
  msgstr ""
  
! #: common.opt:3330
  #, fuzzy, no-c-format
  #| msgid "Perform loop unrolling when iteration count is known"
  msgid "Perform loop unrolling when iteration count is known."
  msgstr "UdfÃ¸r lÃ¸kkeudrulning nÃ¥r iterationsantallet er kendt"
  
! #: common.opt:3334
  #, fuzzy, no-c-format
  #| msgid "Perform loop unrolling for all loops"
  msgid "Perform loop unrolling for all loops."
  msgstr "UdfÃ¸r lÃ¸kkeudrulning for alle lÃ¸kker"
  
! #: common.opt:3349
  #, no-c-format
  msgid "Allow optimization for floating-point arithmetic which may change the result of the operation due to rounding."
  msgstr ""
  
! #: common.opt:3354
  #, no-c-format
  msgid "Same as -fassociative-math for expressions which include division."
  msgstr ""
  
! #: common.opt:3362
  #, fuzzy, no-c-format
  msgid "Allow math optimizations that may violate IEEE or ISO standards."
  msgstr "Tillad matematikoptimeringer der kan overtrÃ¦de IEEE- eller ANSI-standarderne"
  
! #: common.opt:3366
  #, fuzzy, no-c-format
  msgid "Perform loop unswitching."
  msgstr "UdfÃ¸r lÃ¸kkeoptimeringerne"
  
! #: common.opt:3370
  #, fuzzy, no-c-format
  msgid "Perform loop splitting."
  msgstr "UdfÃ¸r lÃ¸kkeoptimeringerne"
  
! #: common.opt:3374
  #, no-c-format
  msgid "Version loops based on whether indices have a stride of one."
  msgstr ""
  
! #: common.opt:3378
  #, fuzzy, no-c-format
  #| msgid "Just generate unwind tables for exception handling"
  msgid "Just generate unwind tables for exception handling."
  msgstr "GenerÃ©r blot afvindingstabeller for undtagelseshÃ¥ndtering"
  
! #: common.opt:3382
  #, fuzzy, no-c-format
  #| msgid "Use hardware quad fp instructions"
  msgid "Use the bfd linker instead of the default linker."
  msgstr "Benyt hardware quad-kommatalsinstruktioner"
  
! #: common.opt:3386
  #, fuzzy, no-c-format
  #| msgid "Use hardware quad fp instructions"
  msgid "Use the gold linker instead of the default linker."
  msgstr "Benyt hardware quad-kommatalsinstruktioner"
  
! #: common.opt:3390
  #, fuzzy, no-c-format
  #| msgid "Use hardware quad fp instructions"
  msgid "Use the lld LLVM linker instead of the default linker."
  msgstr "Benyt hardware quad-kommatalsinstruktioner"
  
! #: common.opt:3394
  #, fuzzy, no-c-format
  #| msgid "Use hardware quad fp instructions"
  msgid "Use the Modern linker (MOLD) linker instead of the default linker."
  msgstr "Benyt hardware quad-kommatalsinstruktioner"
  
! #: common.opt:3404
  #, fuzzy, no-c-format
  #| msgid "Perform tail call optimization"
  msgid "Perform variable tracking."
  msgstr "UdfÃ¸r halekaldsoptimering"
  
! #: common.opt:3411
  #, fuzzy, no-c-format
  msgid "Perform variable tracking by annotating assignments."
  msgstr "Foretag registeromdÃ¸bningsoptimering"
  
! #: common.opt:3417
  #, no-c-format
  msgid "Toggle -fvar-tracking-assignments."
  msgstr ""
  
! #: common.opt:3424
  #, fuzzy, no-c-format
  msgid "Perform variable tracking and also tag variables that are uninitialized."
  msgstr "Foretag registeromdÃ¸bningsoptimering"
  
! #: common.opt:3429
  #, fuzzy, no-c-format
  msgid "Enable vectorization on trees."
  msgstr "AktivÃ©r stakprÃ¸vning"
  
! #: common.opt:3437
  #, fuzzy, no-c-format
  #| msgid "Enable linker optimizations"
  msgid "Enable loop vectorization on trees."
  msgstr "AktivÃ©r sammenkÃ¦deroptimeringer"
  
! #: common.opt:3441
  #, fuzzy, no-c-format
  #| msgid "Enable linker optimizations"
  msgid "Enable basic block vectorization (SLP) on trees."
  msgstr "AktivÃ©r sammenkÃ¦deroptimeringer"
  
! #: common.opt:3445
  #, fuzzy, no-c-format
  #| msgid "Specify alternate name for bss section"
  msgid "-fvect-cost-model=[unlimited|dynamic|cheap|very-cheap]\tSpecifies the cost model for vectorization."
  msgstr "Angiv alternativt navn til bss-sektionen"
  
! #: common.opt:3449
  #, fuzzy, no-c-format
  #| msgid "Specify alternate name for bss section"
  msgid "-fsimd-cost-model=[unlimited|dynamic|cheap|very-cheap]\tSpecifies the vectorization cost model for code marked with a simd directive."
  msgstr "Angiv alternativt navn til bss-sektionen"
  
! #: common.opt:3468
  #, no-c-format
  msgid "Enables the dynamic vectorizer cost model.  Preserved for backward compatibility."
  msgstr ""
  
! #: common.opt:3476
  #, no-c-format
  msgid "Enable copy propagation of scalar-evolution information."
  msgstr ""
  
! #: common.opt:3480
  #, no-c-format
  msgid "-ftrivial-auto-var-init=[uninitialized|pattern|zero]\tAdd initializations to automatic variables."
  msgstr ""
  
! #: common.opt:3502
  #, fuzzy, no-c-format
  #| msgid "Add extra commentary to assembler output"
  msgid "Add extra commentary to assembler output."
  msgstr "TilfÃ¸j ekstra kommentarer til menneskeligt lÃ¦sbar maskinkodeuddata"
  
! #: common.opt:3506
  #, no-c-format
  msgid "-fvisibility=[default|internal|hidden|protected]\tSet the default symbol visibility."
  msgstr ""
  
! #: common.opt:3525
  #, no-c-format
  msgid "Validate vtable pointers before using them."
  msgstr ""
  
! #: common.opt:3541
  #, no-c-format
  msgid "Output vtable verification counters."
  msgstr ""
  
! #: common.opt:3545
  #, no-c-format
  msgid "Output vtable verification pointer sets information."
  msgstr ""
  
! #: common.opt:3549
  #, fuzzy, no-c-format
  msgid "Use expression value profiles in optimizations."
  msgstr "AktivÃ©r sammenkÃ¦deroptimeringer"
  
! #: common.opt:3553
  #, no-c-format
  msgid "Construct webs and split unrelated uses of single variable."
  msgstr ""
  
! #: common.opt:3557
  #, fuzzy, no-c-format
  #| msgid "Enable use of conditional move instructions"
  msgid "Enable conditional dead code elimination for builtin calls."
  msgstr "AktivÃ©r brug af betingede flytteinstruktioner"
  
! #: common.opt:3561
  #, fuzzy, no-c-format
  msgid "Perform whole program optimizations."
  msgstr "UdfÃ¸r lÃ¸kkeoptimeringerne"
  
! #: common.opt:3565
  #, fuzzy, no-c-format
  #| msgid "Set Windows defines"
  msgid "Assume pointer overflow wraps around."
  msgstr "Angiv Windows-definitioner"
  
! #: common.opt:3569
  #, no-c-format
  msgid "Assume signed arithmetic overflow wraps around."
  msgstr ""
  
! #: common.opt:3573
  #, fuzzy, no-c-format
  #| msgid "Put zero initialized data in the bss section"
  msgid "Put zero initialized data in the bss section."
  msgstr "Anbring nul-klargjorte data i bss-sektionen"
  
! #: common.opt:3577
  #, fuzzy, no-c-format
  #| msgid "Save registers around function calls"
  msgid "Clear call-used registers upon function return."
  msgstr "Gem registre omkring funktionskald"
  
! #: common.opt:3581
  #, no-c-format
  msgid "-fzero-init-padding-bits=[standard|unions|all]\tZero padding bits in initializers."
  msgstr ""
  
! #: common.opt:3597
  #, fuzzy, no-c-format
  msgid "Generate debug information in default format."
  msgstr "GenerÃ©r fejlfindingsinfo i standardformat"
  
! #: common.opt:3601
  #, no-c-format
  msgid "Assume assembler support for (DWARF2+) .loc directives."
  msgstr ""
  
! #: common.opt:3605
  #, no-c-format
  msgid "Assume assembler support for view in (DWARF2+) .loc directives."
  msgstr ""
  
! #: common.opt:3609
  #, fuzzy, no-c-format
  #| msgid "Generate debug information in VMS format"
  msgid "Generate debug information in CodeView format."
  msgstr "Opret fejlsÃ¸gningsinformation i VMS-format"
  
! #: common.opt:3629
  #, no-c-format
  msgid "Record DW_AT_decl_column and DW_AT_call_column in DWARF."
  msgstr ""
  
! #: common.opt:3635
  #, fuzzy, no-c-format
  msgid "Generate CTF debug information at default level."
  msgstr "GenerÃ©r fejlfindingsinfo i standardformat"
  
! #: common.opt:3639
  #, fuzzy, no-c-format
  msgid "Generate BTF debug information at default level."
  msgstr "GenerÃ©r fejlfindingsinfo i standardformat"
  
! #: common.opt:3643
  #, no-c-format
  msgid "Generate pruned BTF when emitting BTF info."
  msgstr ""
  
! #: common.opt:3647
  #, fuzzy, no-c-format
  msgid "Generate debug information in default version of DWARF format."
  msgstr "GenerÃ©r fejlfindingsinfo i standardformat"
  
! #: common.opt:3651
  #, fuzzy, no-c-format
  msgid "Generate debug information in DWARF v2 (or later) format."
  msgstr "GenerÃ©r fejlfindingsinfo i standardformat"
  
! #: common.opt:3655
  #, no-c-format
  msgid "Use 32-bit DWARF format when emitting DWARF debug information."
  msgstr ""
  
! #: common.opt:3659
  #, no-c-format
  msgid "Use 64-bit DWARF format when emitting DWARF debug information."
  msgstr ""
  
! #: common.opt:3663
  #, fuzzy, no-c-format
  msgid "Generate debug information in default extended format."
  msgstr "GenerÃ©r fejlfindingsinfo i udvidet standardformat"
  
! #: common.opt:3667
  #, fuzzy, no-c-format
  #| msgid "Generate a single exit point for each function"
  msgid "Generate extended entry point information for inlined functions."
  msgstr "GenerÃ©r et enkelt afslutningspunkt for hver funktion"
  
! #: common.opt:3671
  #, no-c-format
  msgid "Compute locview reset points based on insn length estimates."
  msgstr ""
  
! #: common.opt:3679
  #, fuzzy, no-c-format
  #| msgid "Don't generate fused multiply/add instructions"
  msgid "Don't generate DWARF pubnames and pubtypes sections."
  msgstr "GenerÃ©r ikke sammensatte gang/addÃ©r-instruktioner"
  
! #: common.opt:3683
  #, no-c-format
  msgid "Generate DWARF pubnames and pubtypes sections."
  msgstr "Opret sektioner for DWARF-pubnavne og pubtyper."
  
! #: common.opt:3687
  #, no-c-format
  msgid "Generate DWARF pubnames and pubtypes sections with GNU extensions."
  msgstr "Opret sektioner for DWARF-pubnavne og pubtyper med GNU-udvidelser."
  
! #: common.opt:3691
  #, no-c-format
  msgid "Record gcc command line switches in DWARF DW_AT_producer."
  msgstr ""
  
! #: common.opt:3695
  #, fuzzy, no-c-format
  #| msgid "Generate debug information in separate .dwo files"
  msgid "Generate debug information in separate .dwo files."
  msgstr "Opret fejlsÃ¸gningsinformation i separate .dwo-filer"
  
! #: common.opt:3707
  #, no-c-format
  msgid "Emit progressive recommended breakpoint locations."
  msgstr ""
  
! #: common.opt:3711
  #, no-c-format
  msgid "Don't emit DWARF additions beyond selected version."
  msgstr ""
  
! #: common.opt:3715
  #, no-c-format
  msgid "Add description attributes to some DWARF DIEs that have no name attribute."
  msgstr ""
  
! #: common.opt:3719
  #, fuzzy, no-c-format
  msgid "Toggle debug information generation."
  msgstr "GenerÃ©r fejlfindingsinfo i standardformat"
  
! #: common.opt:3723
  #, no-c-format
  msgid "Augment variable location lists with progressive views."
  msgstr ""
  
! #: common.opt:3730
  #, fuzzy, no-c-format
  #| msgid "Generate debug information in VMS format"
  msgid "Generate debug information in VMS format."
  msgstr "Opret fejlsÃ¸gningsinformation i VMS-format"
  
! #: common.opt:3759
  #, fuzzy, no-c-format
  #| msgid "Generate compressed debug sections"
  msgid "Generate compressed debug sections."
  msgstr "Opret komprimeret fejlsÃ¸gningssektioner"
  
! #: common.opt:3763
  #, fuzzy, no-c-format
  msgid "-gz=<format>\tGenerate compressed debug sections in format <format>."
  msgstr "GenerÃ©r fejlfindingsinfo i standardformat"
  
! #: common.opt:3770
  #, no-c-format
  msgid "-iplugindir=<dir>\tSet <dir> to be the default plugin directory."
  msgstr ""
  
! #: common.opt:3774
  #, no-c-format
  msgid "-imultiarch <dir>\tSet <dir> to be the multiarch include subdirectory."
  msgstr ""
  
! #: common.opt:3802
  #, fuzzy, no-c-format
  msgid "-o <file>\tPlace output into <file>."
  msgstr "  -o <fil>                Anbring uddata i <fil>\n"
  
! #: common.opt:3806
  #, fuzzy, no-c-format
  msgid "Enable function profiling."
  msgstr "MIPS16-funktionsprofilering"
  
! #: common.opt:3816
  #, no-c-format
  msgid "Like -pedantic but issue errors instead of warnings."
  msgstr ""
  
! #: common.opt:3856
  #, fuzzy, no-c-format
  #| msgid "Do not display functions compiled or elapsed time"
  msgid "Do not display functions compiled or elapsed time."
  msgstr "Vis ikke funktioner der oversÃ¦ttes eller forlÃ¸bet tid"
  
! #: common.opt:3888
  #, fuzzy, no-c-format
  #| msgid "Enable verbose output"
  msgid "Enable verbose output."
  msgstr "Aktiver uddybende uddata"
  
! #: common.opt:3892
  #, fuzzy, no-c-format
  #| msgid "Display the compiler's version"
  msgid "Display the compiler's version."
  msgstr "Vis oversÃ¦tterens version"
  
! #: common.opt:3896
  #, fuzzy, no-c-format
  #| msgid "Suppress warnings"
  msgid "Suppress warnings."
  msgstr "Undertryk advarsler"
  
! #: common.opt:3906
  #, fuzzy, no-c-format
  #| msgid "Create a shared library"
  msgid "Create a shared library."
  msgstr "Opret et delt bibliotek"
  
! #: common.opt:3970
  #, fuzzy, no-c-format
  #| msgid "Create a position independent executable"
  msgid "Don't create a dynamically linked position independent executable."
  msgstr "Opret en placeringsuafhÃ¦ngig kÃ¸rbar fil"
  
! #: common.opt:3974
  #, fuzzy, no-c-format
  #| msgid "Create a position independent executable"
  msgid "Create a dynamically linked position independent executable."
  msgstr "Opret en placeringsuafhÃ¦ngig kÃ¸rbar fil"
  
! #: common.opt:3978
  #, fuzzy, no-c-format
  #| msgid "Create a position independent executable"
  msgid "Create a static position independent executable."
  msgstr "Opret en placeringsuafhÃ¦ngig kÃ¸rbar fil"
  
! #: common.opt:3985
  #, no-c-format
  msgid "Use caller save register across calls if possible."
  msgstr ""
  
! #: common.opt:3989
  #, no-c-format
  msgid "Perform dead code elimination on zero and sign extensions with special dataflow analysis."
  msgstr ""
--- 15966,17485 ----
  msgid "Number of cache entries in incremental LTO after which to prune old entries."
  msgstr ""
  
! #: common.opt:2301
  #, no-c-format
  msgid "Specify the algorithm to partition symbols and vars at linktime."
  msgstr ""
  
! #: common.opt:2306
  #, no-c-format
  msgid "Use zlib/zstd compression level <number> for IL."
  msgstr ""
  
! #: common.opt:2314
  #, fuzzy, no-c-format
  msgid "Report various link-time optimization statistics."
  msgstr "Foretag registeromdÃ¸bningsoptimering"
  
! #: common.opt:2318
  #, fuzzy, no-c-format
  msgid "Report various link-time optimization statistics for WPA only."
  msgstr "Foretag registeromdÃ¸bningsoptimering"
  
! #: common.opt:2322
  #, fuzzy, no-c-format
  #| msgid "Set errno after built-in math functions"
  msgid "Set errno after built-in math functions."
  msgstr "SÃ¦t errno efter indbyggede matematikfunktioner"
  
! #: common.opt:2326
  #, no-c-format
  msgid "-fmax-errors=<number>\tMaximum number of errors to report."
  msgstr ""
  
! #: common.opt:2330
  #, no-c-format
  msgid "Allow removal of malloc and free pairs when allocated block is unused."
  msgstr ""
  
! #: common.opt:2337
  #, fuzzy, no-c-format
  msgid "Report on permanent memory allocation."
  msgstr "RapportÃ©r om permanente hukommelsesallokering ved afslutningen af kÃ¸rslen"
  
! #: common.opt:2341
  #, fuzzy, no-c-format
  msgid "Report on permanent memory allocation in WPA only."
  msgstr "RapportÃ©r om permanente hukommelsesallokering ved afslutningen af kÃ¸rslen"
  
! #: common.opt:2348
  #, fuzzy, no-c-format
  #| msgid "Attempt to merge identical constants and constant variables"
  msgid "Attempt to merge identical constants and constant variables."
  msgstr "ForsÃ¸g at forene identiske konstanter og konstante variabler"
  
! #: common.opt:2352
  #, fuzzy, no-c-format
  #| msgid "Attempt to merge identical constants across compilation units"
  msgid "Attempt to merge identical constants across compilation units."
  msgstr "ForsÃ¸g at forene identiske konstanter over forskellige oversÃ¦ttelsesenheder"
  
! #: common.opt:2356
  #, fuzzy, no-c-format
  #| msgid "Attempt to merge identical constants across compilation units"
  msgid "Attempt to merge identical debug strings across compilation units."
  msgstr "ForsÃ¸g at forene identiske konstanter over forskellige oversÃ¦ttelsesenheder"
  
! #: common.opt:2360
  #, fuzzy, no-c-format
  msgid "-fmessage-length=<number>\tLimit diagnostics to <number> characters per line.  0 suppresses line-wrapping."
  msgstr "  -fmessage-length=<antal>  BegrÃ¦ns lÃ¦ngden af diagnosticeringmeddelelser til lÃ¦ngden <antal> tegn/linje. 0 undertrykker linjeombrydning\n"
  
! #: common.opt:2364
  #, fuzzy, no-c-format
  #| msgid "Align the start of functions"
  msgid "Align the start of every function."
  msgstr "JustÃ©r begyndelsen af funktioner"
  
! #: common.opt:2368
  #, no-c-format
  msgid "Perform SMS based modulo scheduling before the first scheduling pass."
  msgstr ""
  
! #: common.opt:2372
  #, no-c-format
  msgid "Perform SMS based modulo scheduling with register moves allowed."
  msgstr ""
  
! #: common.opt:2376
  #, fuzzy, no-c-format
  #| msgid "Force all loop invariant computations out of loops"
  msgid "Move loop invariant computations out of loops."
  msgstr "Tving alle lÃ¸kkeinvariansberegninger ud af lÃ¸kker"
  
! #: common.opt:2380
  #, fuzzy, no-c-format
  #| msgid "Align the start of loops"
  msgid "Move stores out of loops."
  msgstr "JustÃ©r begyndelsen af lÃ¸kker"
  
! #: common.opt:2384
  #, no-c-format
  msgid "Building block for specs-based multilib-aware TFLAGS."
  msgstr ""
  
! #: common.opt:2388
  #, fuzzy, no-c-format
  #| msgid "Enable aggressive SSA dead code elimination"
  msgid "Use the RTL dead code elimination pass."
  msgstr "AktivÃ©r aggressiv SSA-eliminering af ubrugt kode"
  
! #: common.opt:2392
  #, fuzzy, no-c-format
  msgid "Use the RTL dead store elimination pass."
  msgstr "Foretag en komplet registerflytningsoptimering"
  
! #: common.opt:2396
  #, no-c-format
  msgid "Enable/Disable the traditional scheduling in loops that already passed modulo scheduling."
  msgstr ""
  
! #: common.opt:2400
  #, fuzzy, no-c-format
  #| msgid "Support synchronous non-call exceptions"
  msgid "Support synchronous non-call exceptions."
  msgstr "UnderstÃ¸t synkrone ikke-kaldende undtagelser"
  
! #: common.opt:2407
  #, no-c-format
  msgid "-foffload-options=<targets>=<options>\tSpecify options for the offloading targets."
  msgstr ""
  
! #: common.opt:2411
  #, no-c-format
  msgid "-foffload-abi=[lp64|ilp32]\tSet the ABI to use in an offload compiler."
  msgstr ""
  
! #: common.opt:2424
  #, no-c-format
  msgid "-foffload-abi-host-opts=<options>\tSpecify host ABI options."
  msgstr ""
  
! #: common.opt:2428
  #, fuzzy, no-c-format
  #| msgid "When possible do not generate stack frames"
  msgid "When possible do not generate stack frames."
  msgstr "GenerÃ©r ikke stakrammer nÃ¥r det kan undgÃ¥s"
  
! #: common.opt:2435
  #, fuzzy, no-c-format
  msgid "Generate SIMD clones for functions with the OpenMP declare target directive."
  msgstr "GenerÃ©r kode for funktioner selv hvis de indlejres helt"
  
! #: common.opt:2454
  #, fuzzy, no-c-format
  #| msgid "Enable linker optimizations"
  msgid "Enable all optimization info dumps on stderr."
  msgstr "AktivÃ©r sammenkÃ¦deroptimeringer"
  
! #: common.opt:2458
  #, no-c-format
  msgid "-fopt-info[-<type>=filename]\tDump compiler optimization details."
  msgstr ""
  
! #: common.opt:2462
  #, no-c-format
  msgid "Write a SRCFILE.opt-record.json file detailing what optimizations were performed."
  msgstr ""
  
! #: common.opt:2466
  #, no-c-format
  msgid "Detect loops calculating CRC and replace with faster implementation. If the target supports CRC instruction and the CRC loop uses the same polynomial as the one used in the CRC instruction, directly replace with the corresponding CRC instruction. Otherwise, if the target supports carry-less-multiplication instruction, generate CRC using it. If neither case applies, generate table-based CRC."
  msgstr ""
  
! #: common.opt:2480
  #, fuzzy, no-c-format
  #| msgid "Optimize sibling and tail recursive calls"
  msgid "Optimize sibling and tail recursive calls."
  msgstr "OptimÃ©r sÃ¸skende- og halerekursive kald"
  
! #: common.opt:2484
  #, fuzzy, no-c-format
  msgid "Insert path profiling code."
  msgstr "IndsÃ¦t buebaseret programprofileringskode"
  
! #: common.opt:2488
  #, fuzzy, no-c-format
  msgid "Perform partial inlining."
  msgstr "UdfÃ¸r lÃ¸kkeoptimeringerne"
  
! #: common.opt:2492 common.opt:2496
  #, no-c-format
  msgid "Report on memory allocation before interprocedural optimization."
  msgstr ""
  
! #: common.opt:2500
  #, fuzzy, no-c-format
  #| msgid "Pack structure members together without holes"
  msgid "Pack structure members together without holes."
  msgstr "Pak strukturmedlemmer sammen uden mellemrum"
  
! #: common.opt:2504
  #, no-c-format
  msgid "-fpack-struct=<number>\tSet initial maximum structure member alignment."
  msgstr ""
  
! #: common.opt:2508
  #, fuzzy, no-c-format
  msgid "Return small aggregates in memory, not registers."
  msgstr "ReturnÃ©r smÃ¥ sammensatte vÃ¦rdier i hukommelsen, ikke i registre"
  
! #: common.opt:2512
  #, fuzzy, no-c-format
  msgid "Perform loop peeling."
  msgstr "UdfÃ¸r lÃ¸kkeoptimeringerne"
  
! #: common.opt:2516
  #, fuzzy, no-c-format
  #| msgid "Enable machine specific peephole optimizations"
  msgid "Enable machine specific peephole optimizations."
  msgstr "AktivÃ©r maskinspecifikke kighulsoptimeringer"
  
! #: common.opt:2520
  #, fuzzy, no-c-format
  msgid "Enable an RTL peephole pass before sched2."
  msgstr "AktivÃ©r en RTL-kikhulsfase fÃ¸r sched2"
  
! #: common.opt:2524
  #, fuzzy, no-c-format
  msgid "Generate position-independent code if possible (large mode)."
  msgstr "GenerÃ©r placeringsuafhÃ¦ngig kode, om muligt"
  
! #: common.opt:2528
  #, fuzzy, no-c-format
  msgid "Generate position-independent code for executables if possible (large mode)."
  msgstr "GenerÃ©r placeringsuafhÃ¦ngig kode, om muligt"
  
! #: common.opt:2532
  #, fuzzy, no-c-format
  msgid "Generate position-independent code if possible (small mode)."
  msgstr "GenerÃ©r placeringsuafhÃ¦ngig kode, om muligt"
  
! #: common.opt:2536
  #, fuzzy, no-c-format
  msgid "Generate position-independent code for executables if possible (small mode)."
  msgstr "GenerÃ©r placeringsuafhÃ¦ngig kode, om muligt"
  
! #: common.opt:2540
  #, no-c-format
  msgid "Use PLT for PIC calls (-fno-plt: load the address from GOT at call site)."
  msgstr ""
  
! #: common.opt:2544
  #, no-c-format
  msgid "Specify a plugin to load."
  msgstr ""
  
! #: common.opt:2548
  #, no-c-format
  msgid "-fplugin-arg-<name>-<key>[=<value>]\tSpecify argument <key>=<value> for plugin <name>."
  msgstr ""
  
! #: common.opt:2552
  #, fuzzy, no-c-format
  #| msgid "Enables a register move optimization"
  msgid "Run predictive commoning optimization."
  msgstr "AktivÃ©r en registerflytningsoptimering"
  
! #: common.opt:2556
  #, fuzzy, no-c-format
  #| msgid "Generate prefetch instructions, if available, for arrays in loops"
  msgid "Generate prefetch instructions, if available, for arrays in loops."
  msgstr "GenerÃ©r prÃ¦hentningsinstruktioner, hvis tilgÃ¦ngelige, for tabeller i lÃ¸kker"
  
! #: common.opt:2560
  #, fuzzy, no-c-format
  #| msgid "Enable basic program profiling code"
  msgid "Enable basic program profiling code."
  msgstr "AktivÃ©r basal programprofileringskode"
  
! #: common.opt:2564
  #, fuzzy, no-c-format
  #| msgid "Generate code for near calls"
  msgid "Generate absolute source path names for gcov."
  msgstr "GenerÃ©r kode til nÃ¦re kald"
  
! #: common.opt:2568
  #, fuzzy, no-c-format
  msgid "Insert arc-based program profiling code."
  msgstr "IndsÃ¦t buebaseret programprofileringskode"
  
! #: common.opt:2572
  #, fuzzy, no-c-format
  msgid "Insert condition coverage profiling code."
  msgstr "IndsÃ¦t buebaseret programprofileringskode"
  
! #: common.opt:2576
  #, no-c-format
  msgid "Set the top-level directory for storing the profile data. The default is 'pwd'."
  msgstr ""
  
! #: common.opt:2581
  #, no-c-format
  msgid "Select the name for storing the profile note file."
  msgstr ""
  
! #: common.opt:2585
  #, fuzzy, no-c-format
  #| msgid "Enable SSA conditional constant propagation"
  msgid "Enable correction of flow inconsistent profile data input."
  msgstr "AktivÃ©r betinget konstant SSA-propagering"
  
! #: common.opt:2589
  #, no-c-format
  msgid "-fprofile-update=[single|atomic|prefer-atomic]\tSet the profile update method."
  msgstr ""
  
! #: common.opt:2593
  #, no-c-format
  msgid "Instrument only functions from files whose name matches any of the regular expressions (separated by semi-colons)."
  msgstr ""
  
! #: common.opt:2597
  #, no-c-format
  msgid "Instrument only functions from files whose name does not match any of the regular expressions (separated by semi-colons)."
  msgstr ""
  
! #: common.opt:2613
  #, no-c-format
  msgid "-fprofile-reproducible=[serial|parallel-runs|multithreaded]\tControl level of reproducibility of profile gathered by -fprofile-generate."
  msgstr ""
  
! #: common.opt:2629
  #, no-c-format
  msgid "Remove prefix from absolute path before mangling name for -fprofile-generate= and -fprofile-use=."
  msgstr ""
  
! #: common.opt:2633
  #, no-c-format
  msgid "-fprofile-prefix-map=<old>=<new>\tMap one directory name to another in GCOV coverage result."
  msgstr ""
  
! #: common.opt:2637
  #, no-c-format
  msgid "Enable common options for generating profile info for profile feedback directed optimizations."
  msgstr ""
  
! #: common.opt:2641
  #, no-c-format
  msgid "Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=."
  msgstr ""
  
! #: common.opt:2645
  #, no-c-format
  msgid "Register the profile information in the .gcov_info section instead of using a constructor/destructor."
  msgstr ""
  
! #: common.opt:2649
  #, no-c-format
  msgid "Register the profile information in the specified section instead of using a constructor/destructor."
  msgstr ""
  
! #: common.opt:2653
  #, no-c-format
  msgid "Do not assume that functions never executed during the train run are cold."
  msgstr ""
  
! #: common.opt:2657
  #, no-c-format
  msgid "Enable common options for performing profile feedback directed optimizations."
  msgstr ""
  
! #: common.opt:2661
  #, no-c-format
  msgid "Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=."
  msgstr ""
  
! #: common.opt:2665
  #, no-c-format
  msgid "Insert code to profile values of expressions."
  msgstr ""
  
! #: common.opt:2669
  #, fuzzy, no-c-format
  #| msgid "internal gcc abort"
  msgid "Report on consistency of profile."
  msgstr "intern GCC-afbrydelse"
  
! #: common.opt:2673
  #, fuzzy, no-c-format
  #| msgid "Reorder functions to improve code placement"
  msgid "Enable function reordering that improves code placement."
  msgstr "Omordn funktioner for at forbedre kodeplacering"
  
! #: common.opt:2677
  #, fuzzy, no-c-format
  #| msgid "Generate cld instruction in the function prologue."
  msgid "Insert NOP instructions at each function entry."
  msgstr "Opret cld-instruktion i en funktions begyndelse."
  
! #: common.opt:2684
  #, no-c-format
  msgid "-frandom-seed=<string>\tMake compile reproducible using <string>."
  msgstr ""
  
! #: common.opt:2694
  #, no-c-format
  msgid "Record gcc command line switches in the object file."
  msgstr ""
  
! #: common.opt:2698
  #, fuzzy, no-c-format
  msgid "Return small aggregates in registers."
  msgstr "ReturnÃ©r smÃ¥ sammensatte vÃ¦rdier i registre"
  
! #: common.opt:2706
  #, no-c-format
  msgid "Tell DSE that the storage for a C++ object is dead when the constructor starts and when the destructor finishes."
  msgstr ""
  
! #: common.opt:2720
  #, no-c-format
  msgid "-flive-patching=[inline-only-static|inline-clone]\tControl IPA optimizations to provide a safe compilation for live-patching.  At the same time, provides multiple-level control on the enabled IPA optimizations."
  msgstr ""
  
! #: common.opt:2735
  #, no-c-format
  msgid "Tell DCE to remove unused C++ allocations."
  msgstr ""
  
! #: common.opt:2739
  #, no-c-format
  msgid "Relief of register pressure through live range shrinkage."
  msgstr ""
  
! #: common.opt:2743
  #, fuzzy, no-c-format
  msgid "Perform a register renaming optimization pass."
  msgstr "Foretag registeromdÃ¸bningsoptimering"
  
! #: common.opt:2747
  #, fuzzy, no-c-format
  msgid "Perform a target dependent instruction fusion optimization pass."
  msgstr "Foretag registeromdÃ¸bningsoptimering"
  
! #: common.opt:2751
  #, fuzzy, no-c-format
  #| msgid "Reorder basic blocks to improve code placement"
  msgid "Reorder basic blocks to improve code placement."
  msgstr "Omordn basisblokke for at forbedre kodeplacering"
  
! #: common.opt:2755
  #, no-c-format
  msgid "-freorder-blocks-algorithm=[simple|stc]\tSet the used basic block reordering algorithm."
  msgstr ""
  
! #: common.opt:2768
  #, fuzzy, no-c-format
  #| msgid "Reorder basic blocks to improve code placement"
  msgid "Reorder basic blocks and partition into hot and cold sections."
  msgstr "Omordn basisblokke for at forbedre kodeplacering"
  
! #: common.opt:2772
  #, fuzzy, no-c-format
  #| msgid "Reorder functions to improve code placement"
  msgid "Reorder functions to improve code placement."
  msgstr "Omordn funktioner for at forbedre kodeplacering"
  
! #: common.opt:2776
  #, fuzzy, no-c-format
  msgid "Add a common subexpression elimination pass after loop optimizations."
  msgstr "KÃ¸r CSE-fase efter lÃ¸kkeoptimeringer"
  
! #: common.opt:2784
  #, no-c-format
  msgid "Disable optimizations that assume default FP rounding behavior."
  msgstr ""
  
! #: common.opt:2788
  #, fuzzy, no-c-format
  #| msgid "Enable scheduling across basic blocks"
  msgid "Enable scheduling across basic blocks."
  msgstr "AktivÃ©r planlÃ¦gning over basisblokke"
  
! #: common.opt:2792
  #, no-c-format
  msgid "Enable register pressure sensitive insn scheduling."
  msgstr ""
  
! #: common.opt:2796
  #, fuzzy, no-c-format
  #| msgid "Allow speculative motion of non-loads"
  msgid "Allow speculative motion of non-loads."
  msgstr "Tillad spekulativ bevÃ¦gelse af ikke-indlÃ¦sninger"
  
! #: common.opt:2800
  #, fuzzy, no-c-format
  #| msgid "Allow speculative motion of some loads"
  msgid "Allow speculative motion of some loads."
  msgstr "Tillad spekulativ bevÃ¦gelse af nogle indlÃ¦sninger"
  
! #: common.opt:2804
  #, fuzzy, no-c-format
  #| msgid "Allow speculative motion of more loads"
  msgid "Allow speculative motion of more loads."
  msgstr "Tillad spekulativ bevÃ¦gelse af flere indlÃ¦sninger"
  
! #: common.opt:2808
  #, fuzzy, no-c-format
  msgid "-fsched-verbose=<number>\tSet the verbosity level of the scheduler."
  msgstr "  -fsched-verbose=<tal>    Angiv hvor meget planlÃ¦ggeren skal fortÃ¦lle\n"
  
! #: common.opt:2812
  #, no-c-format
  msgid "If scheduling post reload, do superblock scheduling."
  msgstr ""
  
! #: common.opt:2820
  #, fuzzy, no-c-format
  #| msgid "Reschedule instructions before register allocation"
  msgid "Reschedule instructions before register allocation."
  msgstr "OmplanlÃ¦g instruktioner fÃ¸r registerallokering"
  
! #: common.opt:2824
  #, fuzzy, no-c-format
  #| msgid "Reschedule instructions after register allocation"
  msgid "Reschedule instructions after register allocation."
  msgstr "OmplanlÃ¦g instruktioner efter registerallokering"
  
! #: common.opt:2831
  #, no-c-format
  msgid "Schedule instructions using selective scheduling algorithm."
  msgstr ""
  
! #: common.opt:2835
  #, no-c-format
  msgid "Run selective scheduling after reload."
  msgstr ""
  
! #: common.opt:2839
  #, no-c-format
  msgid "Run self-tests, using the given path to locate test files."
  msgstr ""
  
! #: common.opt:2843
  #, no-c-format
  msgid "Perform software pipelining of inner loops during selective scheduling."
  msgstr ""
  
! #: common.opt:2847
  #, no-c-format
  msgid "Perform software pipelining of outer loops during selective scheduling."
  msgstr ""
  
! #: common.opt:2851
  #, no-c-format
  msgid "Reschedule pipelined regions without pipelining."
  msgstr ""
  
! #: common.opt:2855
  #, no-c-format
  msgid "Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker."
  msgstr ""
  
! #: common.opt:2861
  #, no-c-format
  msgid "Allow premature scheduling of queued insns."
  msgstr ""
  
! #: common.opt:2865
  #, no-c-format
  msgid "-fsched-stalled-insns=<number>\tSet number of queued insns that can be prematurely scheduled."
  msgstr ""
  
! #: common.opt:2873
  #, no-c-format
  msgid "Set dependence distance checking in premature scheduling of queued insns."
  msgstr ""
  
! #: common.opt:2877
  #, no-c-format
  msgid "-fsched-stalled-insns-dep=<number>\tSet dependence distance checking in premature scheduling of queued insns."
  msgstr ""
  
! #: common.opt:2881
  #, fuzzy, no-c-format
  #| msgid "Enable the group heuristic in the scheduler"
  msgid "Enable the group heuristic in the scheduler."
  msgstr "Aktiver gruppeheuristikken i planlÃ¦ggeren"
  
! #: common.opt:2885
  #, fuzzy, no-c-format
  #| msgid "Enable the group heuristic in the scheduler"
  msgid "Enable the critical path heuristic in the scheduler."
  msgstr "Aktiver gruppeheuristikken i planlÃ¦ggeren"
  
! #: common.opt:2889
  #, fuzzy, no-c-format
  #| msgid "Enable the group heuristic in the scheduler"
  msgid "Enable the speculative instruction heuristic in the scheduler."
  msgstr "Aktiver gruppeheuristikken i planlÃ¦ggeren"
  
! #: common.opt:2893
  #, fuzzy, no-c-format
  #| msgid "Enable the group heuristic in the scheduler"
  msgid "Enable the rank heuristic in the scheduler."
  msgstr "Aktiver gruppeheuristikken i planlÃ¦ggeren"
  
! #: common.opt:2897
  #, fuzzy, no-c-format
  #| msgid "Enable the group heuristic in the scheduler"
  msgid "Enable the last instruction heuristic in the scheduler."
  msgstr "Aktiver gruppeheuristikken i planlÃ¦ggeren"
  
! #: common.opt:2901
  #, fuzzy, no-c-format
  #| msgid "Enable the group heuristic in the scheduler"
  msgid "Enable the dependent count heuristic in the scheduler."
  msgstr "Aktiver gruppeheuristikken i planlÃ¦ggeren"
  
! #: common.opt:2905
  #, no-c-format
  msgid "Access data in the same section from shared anchor points."
  msgstr ""
  
! #: common.opt:2917
  #, no-c-format
  msgid "Turn on Redundant Extensions Elimination pass."
  msgstr ""
  
! #: common.opt:2921
  #, no-c-format
  msgid "Show column numbers in diagnostics, when available.  Default on."
  msgstr ""
  
! #: common.opt:2925
  #, no-c-format
  msgid "Emit function prologues only before parts of the function that need it, rather than at the top of the function."
  msgstr ""
  
! #: common.opt:2930
  #, no-c-format
  msgid "Shrink-wrap parts of the prologue and epilogue separately."
  msgstr ""
  
! #: common.opt:2934
  #, fuzzy, no-c-format
  #| msgid "Disable optimizations observable by IEEE signaling NaNs"
  msgid "Disable optimizations observable by IEEE signaling NaNs."
  msgstr "DeaktivÃ©r optimeringer som kan opdages ved IEEE-signalerende NaN'er"
  
! #: common.opt:2938
  #, no-c-format
  msgid "Disable floating point optimizations that ignore the IEEE signedness of zero."
  msgstr ""
  
! #: common.opt:2942
  #, fuzzy, no-c-format
  msgid "Convert floating point constants to single precision constants."
  msgstr "KonvertÃ©r kommatalskonstanter til enkeltprÃ¦cisionskonstanter"
  
! #: common.opt:2946
  #, fuzzy, no-c-format
  #| msgid "Strength reduce all loop general induction variables"
  msgid "Split lifetimes of induction variables when loops are unrolled."
  msgstr "StyrkereducÃ©r alle generelle lÃ¸kkeinduktionsvariabler"
  
! #: common.opt:2950
  #, fuzzy, no-c-format
  #| msgid "Generate APCS conformant stack frames"
  msgid "Generate discontiguous stack frames."
  msgstr "GenerÃ©r APCS-overholdende stakrammer"
  
! #: common.opt:2954
  #, no-c-format
  msgid "Split wide types into independent registers."
  msgstr ""
  
! #: common.opt:2958
  #, no-c-format
  msgid "Split wide types into independent registers earlier."
  msgstr ""
  
! #: common.opt:2962
  #, no-c-format
  msgid "Enable backward propagation of use properties at the SSA level."
  msgstr ""
  
! #: common.opt:2966
  #, no-c-format
  msgid "Optimize conditional patterns using SSA PHI nodes."
  msgstr ""
  
! #: common.opt:2970
  #, fuzzy, no-c-format
  #| msgid "Number of registers used to pass integer arguments"
  msgid "Optimize amount of stdarg registers saved to stack at start of function."
  msgstr "Antallet af registre der skal bruges til at overbringe heltalsparametre"
  
! #: common.opt:2974
  #, no-c-format
  msgid "Apply variable expansion when loops are unrolled."
  msgstr ""
  
! #: common.opt:2978
  #, fuzzy, no-c-format
  #| msgid "Insert stack checking code into the program"
  msgid "-fstack-check=[no|generic|specific]\tInsert stack checking code into the program."
  msgstr "IndsÃ¦t stakkontrolleringskode i programmet"
  
! #: common.opt:2982
  #, fuzzy, no-c-format
  #| msgid "Insert stack checking code into the program"
  msgid "Insert stack checking code into the program.  Same as -fstack-check=specific."
  msgstr "IndsÃ¦t stakkontrolleringskode i programmet"
  
! #: common.opt:2986
  #, no-c-format
  msgid "Insert code to probe each page of stack space as it is allocated to protect from stack-clash style attacks."
  msgstr ""
  
! #: common.opt:2994
  #, no-c-format
  msgid "-fstack-limit-register=<register>\tTrap if the stack goes past <register>."
  msgstr ""
  
! #: common.opt:2998
  #, no-c-format
  msgid "-fstack-limit-symbol=<name>\tTrap if the stack goes past symbol <name>."
  msgstr ""
  
! #: common.opt:3002
  #, fuzzy, no-c-format
  #| msgid "Enable stack probing"
  msgid "Use propolice as a stack protection method."
  msgstr "AktivÃ©r stakprÃ¸vning"
  
! #: common.opt:3006
  #, no-c-format
  msgid "Use a stack protection method for every function."
  msgstr ""
  
! #: common.opt:3010
  #, no-c-format
  msgid "Use a smart stack protection method for certain functions."
  msgstr ""
  
! #: common.opt:3014
  #, no-c-format
  msgid "Use stack protection method only for functions with the stack_protect attribute."
  msgstr ""
  
! #: common.opt:3018
  #, fuzzy, no-c-format
  #| msgid "Reuse r30 on a per function basis"
  msgid "Output stack usage information on a per-function basis."
  msgstr "Genbrug r30 pÃ¥ et pr. funktionsgrundlag"
  
! #: common.opt:3030
  #, fuzzy, no-c-format
  #| msgid "Assume strict aliasing rules apply"
  msgid "Assume strict aliasing rules apply."
  msgstr "Antag at strenge aliasregler skal anvendes"
  
! #: common.opt:3034
  #, fuzzy, no-c-format
  #| msgid "Set Windows defines"
  msgid "Treat signed overflow as undefined.  Negated as -fwrapv -fwrapv-pointer."
  msgstr "Angiv Windows-definitioner"
  
! #: common.opt:3038
  #, no-c-format
  msgid "Disable stack scrub entirely, disregarding strub attributes."
  msgstr ""
  
! #: common.opt:3042
  #, no-c-format
  msgid "Enable stack scrub as per attributes, with strict call checking."
  msgstr ""
  
! #: common.opt:3051
  #, no-c-format
  msgid "Restore default strub mode: as per attributes, with relaxed checking."
  msgstr ""
  
! #: common.opt:3055
  #, fuzzy, no-c-format
  #| msgid "name missing for member function"
  msgid "Enable stack scrubbing for all viable functions."
  msgstr "navn mangler for medlemsfunktion"
  
! #: common.opt:3059
  #, no-c-format
  msgid "Enable at-calls stack scrubbing for all viable functions."
  msgstr ""
  
! #: common.opt:3063
  #, fuzzy, no-c-format
  #| msgid "Enable barrel shift instructions"
  msgid "Enable internal stack scrubbing for all viable functions."
  msgstr "Aktiver barrel shift-instruktioner"
  
! #: common.opt:3067
  #, no-c-format
  msgid "Implement __atomic operations via libcalls to legacy __sync functions."
  msgstr ""
  
! #: common.opt:3071
  #, fuzzy, no-c-format
  #| msgid "Check for syntax errors, then stop"
  msgid "Check for syntax errors, then stop."
  msgstr "Kontroller for syntaksfejl og stop derefter"
  
! #: common.opt:3075
  #, fuzzy, no-c-format
  #| msgid "Create data files needed by \"gcov\""
  msgid "Create data files needed by \"gcov\"."
  msgstr "Opret datafiler som Â»gcovÂ« har brug for"
  
! #: common.opt:3079
  #, fuzzy, no-c-format
  #| msgid "Perform jump threading optimizations"
  msgid "Perform jump threading optimizations."
  msgstr "UdfÃ¸r springtrÃ¥dningsoptimeringer"
  
! #: common.opt:3083
  #, fuzzy, no-c-format
  #| msgid "Report the time taken by each compiler pass"
  msgid "Report the time taken by each compiler pass."
  msgstr "Rapporter den tid det tager for hvert kompilergennemlÃ¸b"
  
! #: common.opt:3087
  #, no-c-format
  msgid "Record times taken by sub-phases separately."
  msgstr ""
  
! #: common.opt:3091
  #, fuzzy, no-c-format
  msgid "-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\tSet the default thread-local storage code generation model."
  msgstr "  -ftls-model=[global-dynamic | local-dynamic | initial-exec | local-exec] Indikerer den forvalgte trÃ¥d-lokale lagringsmodel for kodegenerering\n"
  
! #: common.opt:3110
  #, no-c-format
  msgid "Reorder top level functions, variables, and asms."
  msgstr ""
  
! #: common.opt:3114
  #, fuzzy, no-c-format
  #| msgid "Perform superblock formation via tail duplication"
  msgid "Perform superblock formation via tail duplication."
  msgstr "UdfÃ¸r superbloksformering vha. haleduplikering"
  
! #: common.opt:3118
  #, no-c-format
  msgid "For targets that normally need trampolines for nested functions, always generate them instead of using descriptors."
  msgstr ""
  
! #: common.opt:3123
  #, no-c-format
  msgid "Whether trampolines are generated in executable memory rather than executable stack."
  msgstr ""
  
! #: common.opt:3141
  #, fuzzy, no-c-format
  msgid "Assume floating-point operations can trap."
  msgstr "Kommatalsoperationer kan fange"
  
! #: common.opt:3145
  #, fuzzy, no-c-format
  msgid "Trap for signed overflow in addition, subtraction and multiplication."
  msgstr "OpsÃ¦t fÃ¦lde for overlÃ¸b med fortegn i addition/subtraktion/multiplikation"
  
! #: common.opt:3149
  #, fuzzy, no-c-format
  #| msgid "Enable SSA optimizations"
  msgid "Enable SSA-CCP optimization on trees."
  msgstr "AktivÃ©r SSA-optimeringer"
  
! #: common.opt:3153
  #, fuzzy, no-c-format
  #| msgid "Enable SSA-BIT-CCP optimization on trees"
  msgid "Enable SSA-BIT-CCP optimization on trees."
  msgstr "Aktiver SSA-BIT-CCP-optimering pÃ¥ trÃ¦er"
  
! #: common.opt:3161
  #, fuzzy, no-c-format
  #| msgid "Enable linker optimizations"
  msgid "Enable loop header copying on trees."
  msgstr "AktivÃ©r sammenkÃ¦deroptimeringer"
  
! #: common.opt:3169
  #, fuzzy, no-c-format
  #| msgid "Enable SSA code sinking on trees"
  msgid "Enable SSA coalescing of user variables."
  msgstr "Aktiver SSA-kodesinking pÃ¥ trÃ¦er"
  
! #: common.opt:3177
  #, fuzzy, no-c-format
  msgid "Enable copy propagation on trees."
  msgstr "AktivÃ©r stakprÃ¸vning"
  
! #: common.opt:3185
  #, fuzzy, no-c-format
  #| msgid "Perform conversion of conditional jumps to conditional execution"
  msgid "Transform condition stores into unconditional ones."
  msgstr "UdfÃ¸r konvertering af betingede spring til betinget udfÃ¸rsel"
  
! #: common.opt:3189
  #, fuzzy, no-c-format
  #| msgid "Perform conversion of conditional jumps to conditional execution"
  msgid "Perform conversions of switch initializations."
  msgstr "UdfÃ¸r konvertering af betingede spring til betinget udfÃ¸rsel"
  
! #: common.opt:3193
  #, fuzzy, no-c-format
  #| msgid "Enable aggressive SSA dead code elimination"
  msgid "Enable SSA dead code elimination optimization on trees."
  msgstr "AktivÃ©r aggressiv SSA-eliminering af ubrugt kode"
  
! #: common.opt:3197
  #, fuzzy, no-c-format
  #| msgid "Enable linker optimizations"
  msgid "Enable dominator optimizations."
  msgstr "AktivÃ©r sammenkÃ¦deroptimeringer"
  
! #: common.opt:3201
  #, fuzzy, no-c-format
  #| msgid "Enable most warning messages"
  msgid "Enable tail merging on trees."
  msgstr "AktivÃ©r de fleste advarselsbeskeder"
  
! #: common.opt:3205
  #, fuzzy, no-c-format
  #| msgid "Enable aggressive SSA dead code elimination"
  msgid "Enable dead store elimination."
  msgstr "AktivÃ©r aggressiv SSA-eliminering af ubrugt kode"
  
! #: common.opt:3209
  #, fuzzy, no-c-format
  msgid "Enable forward propagation on trees."
  msgstr "AktivÃ©r stakprÃ¸vning"
  
! #: common.opt:3213
  #, fuzzy, no-c-format
  #| msgid "Force all loop invariant computations out of loops"
  msgid "Enable Full Redundancy Elimination (FRE) on trees."
  msgstr "Tving alle lÃ¸kkeinvariansberegninger ud af lÃ¸kker"
  
! #: common.opt:3217
  #, fuzzy, no-c-format
  #| msgid "Enable linker optimizations"
  msgid "Enable string length optimizations on trees."
  msgstr "AktivÃ©r sammenkÃ¦deroptimeringer"
  
! #: common.opt:3221
  #, no-c-format
  msgid "Detect paths that trigger erroneous or undefined behavior due to dereferencing a null pointer.  Isolate those paths from the main control flow and turn the statement with erroneous or undefined behavior into a trap."
  msgstr ""
  
! #: common.opt:3227
  #, no-c-format
  msgid "Detect paths that trigger erroneous or undefined behavior due to a null value being used in a way forbidden by a returns_nonnull or nonnull attribute.  Isolate those paths from the main control flow and turn the statement with erroneous or undefined behavior into a trap."
  msgstr ""
  
! #: common.opt:3234
  #, fuzzy, no-c-format
  #| msgid "Enable parallel instructions"
  msgid "Enable loop distribution on trees."
  msgstr "AktivÃ©r parallelle instruktioner"
  
! #: common.opt:3238
  #, fuzzy, no-c-format
  #| msgid "Enable parallel instructions"
  msgid "Enable loop distribution for patterns transformed into a library call."
  msgstr "AktivÃ©r parallelle instruktioner"
  
! #: common.opt:3242
  #, fuzzy, no-c-format
  #| msgid "Force all loop invariant computations out of loops"
  msgid "Enable loop invariant motion on trees."
  msgstr "Tving alle lÃ¸kkeinvariansberegninger ud af lÃ¸kker"
  
! #: common.opt:3250
  #, fuzzy, no-c-format
  #| msgid "Strength reduce all loop general induction variables"
  msgid "Create canonical induction variables in loops."
  msgstr "StyrkereducÃ©r alle generelle lÃ¸kkeinduktionsvariabler"
  
! #: common.opt:3254
  #, fuzzy, no-c-format
  #| msgid "Enable linker optimizations"
  msgid "Enable loop optimizations on tree level."
  msgstr "AktivÃ©r sammenkÃ¦deroptimeringer"
  
! #: common.opt:3258
  #, fuzzy, no-c-format
  #| msgid "Enable automatic template instantiation"
  msgid "-ftree-parallelize-loops=<number>\tEnable automatic parallelization of loops."
  msgstr "AktivÃ©r automatisk skabelonsinstantiering"
  
! #: common.opt:3262
  #, fuzzy, no-c-format
  #| msgid "Enable use of conditional move instructions"
  msgid "Enable hoisting loads from conditional pointers."
  msgstr "AktivÃ©r brug af betingede flytteinstruktioner"
  
! #: common.opt:3266
  #, fuzzy, no-c-format
  #| msgid "Enable SSA optimizations"
  msgid "Enable SSA-PRE optimization on trees."
  msgstr "AktivÃ©r SSA-optimeringer"
  
! #: common.opt:3270
  #, no-c-format
  msgid "In SSA-PRE optimization on trees, enable partial-partial redundancy elimination."
  msgstr ""
  
! #: common.opt:3274
  #, no-c-format
  msgid "Perform function-local points-to analysis on trees."
  msgstr ""
  
! #: common.opt:3278
  #, fuzzy, no-c-format
  #| msgid "Enable linker optimizations"
  msgid "Enable reassociation on tree level."
  msgstr "AktivÃ©r sammenkÃ¦deroptimeringer"
  
! #: common.opt:3286
  #, fuzzy, no-c-format
  #| msgid "Enable SSA code sinking on trees"
  msgid "Enable SSA code sinking on trees."
  msgstr "Aktiver SSA-kodesinking pÃ¥ trÃ¦er"
  
! #: common.opt:3290
  #, fuzzy, no-c-format
  #| msgid "Perform strength reduction optimizations"
  msgid "Perform straight-line strength reduction."
  msgstr "UdfÃ¸r styrkereduceringsoptimeringer"
  
! #: common.opt:3294
  #, no-c-format
  msgid "Perform scalar replacement of aggregates."
  msgstr ""
  
! #: common.opt:3298
  #, no-c-format
  msgid "Replace temporary expressions in the SSA->normal pass."
  msgstr ""
  
! #: common.opt:3302
  #, no-c-format
  msgid "Perform live range splitting during the SSA->normal pass."
  msgstr ""
  
! #: common.opt:3306
  #, fuzzy, no-c-format
  msgid "Perform Value Range Propagation on trees."
  msgstr "Foretag registerkopipropageringsoptimering"
  
! #: common.opt:3310
  #, no-c-format
  msgid "Split paths leading to loop backedges."
  msgstr ""
  
! #: common.opt:3314
  #, no-c-format
  msgid "Assume common declarations may be overridden with ones with a larger trailing array."
  msgstr ""
  
! #: common.opt:3319
  #, fuzzy, no-c-format
  msgid "Compile whole compilation unit at a time."
  msgstr "Anbring hele oversÃ¦ttelsesenheden i en fil"
  
! #: common.opt:3323
  #, no-c-format
  msgid "Trap on __builtin_unreachable instead of using it for optimization."
  msgstr ""
  
! #: common.opt:3327
  #, fuzzy, no-c-format
  #| msgid "Perform loop unrolling when iteration count is known"
  msgid "Perform loop unrolling when iteration count is known."
  msgstr "UdfÃ¸r lÃ¸kkeudrulning nÃ¥r iterationsantallet er kendt"
  
! #: common.opt:3331
  #, fuzzy, no-c-format
  #| msgid "Perform loop unrolling for all loops"
  msgid "Perform loop unrolling for all loops."
  msgstr "UdfÃ¸r lÃ¸kkeudrulning for alle lÃ¸kker"
  
! #: common.opt:3346
  #, no-c-format
  msgid "Allow optimization for floating-point arithmetic which may change the result of the operation due to rounding."
  msgstr ""
  
! #: common.opt:3351
  #, no-c-format
  msgid "Same as -fassociative-math for expressions which include division."
  msgstr ""
  
! #: common.opt:3359
  #, fuzzy, no-c-format
  msgid "Allow math optimizations that may violate IEEE or ISO standards."
  msgstr "Tillad matematikoptimeringer der kan overtrÃ¦de IEEE- eller ANSI-standarderne"
  
! #: common.opt:3363
  #, fuzzy, no-c-format
  msgid "Perform loop unswitching."
  msgstr "UdfÃ¸r lÃ¸kkeoptimeringerne"
  
! #: common.opt:3367
  #, fuzzy, no-c-format
  msgid "Perform loop splitting."
  msgstr "UdfÃ¸r lÃ¸kkeoptimeringerne"
  
! #: common.opt:3371
  #, no-c-format
  msgid "Version loops based on whether indices have a stride of one."
  msgstr ""
  
! #: common.opt:3375
  #, fuzzy, no-c-format
  #| msgid "Just generate unwind tables for exception handling"
  msgid "Just generate unwind tables for exception handling."
  msgstr "GenerÃ©r blot afvindingstabeller for undtagelseshÃ¥ndtering"
  
! #: common.opt:3379
  #, fuzzy, no-c-format
  #| msgid "Use hardware quad fp instructions"
  msgid "Use the bfd linker instead of the default linker."
  msgstr "Benyt hardware quad-kommatalsinstruktioner"
  
! #: common.opt:3383
  #, fuzzy, no-c-format
  #| msgid "Use hardware quad fp instructions"
  msgid "Use the gold linker instead of the default linker."
  msgstr "Benyt hardware quad-kommatalsinstruktioner"
  
! #: common.opt:3387
  #, fuzzy, no-c-format
  #| msgid "Use hardware quad fp instructions"
  msgid "Use the lld LLVM linker instead of the default linker."
  msgstr "Benyt hardware quad-kommatalsinstruktioner"
  
! #: common.opt:3391
  #, fuzzy, no-c-format
  #| msgid "Use hardware quad fp instructions"
  msgid "Use the Modern linker (MOLD) linker instead of the default linker."
  msgstr "Benyt hardware quad-kommatalsinstruktioner"
  
! #: common.opt:3401
  #, fuzzy, no-c-format
  #| msgid "Perform tail call optimization"
  msgid "Perform variable tracking."
  msgstr "UdfÃ¸r halekaldsoptimering"
  
! #: common.opt:3408
  #, fuzzy, no-c-format
  msgid "Perform variable tracking by annotating assignments."
  msgstr "Foretag registeromdÃ¸bningsoptimering"
  
! #: common.opt:3414
  #, no-c-format
  msgid "Toggle -fvar-tracking-assignments."
  msgstr ""
  
! #: common.opt:3421
  #, fuzzy, no-c-format
  msgid "Perform variable tracking and also tag variables that are uninitialized."
  msgstr "Foretag registeromdÃ¸bningsoptimering"
  
! #: common.opt:3426
  #, fuzzy, no-c-format
  msgid "Enable vectorization on trees."
  msgstr "AktivÃ©r stakprÃ¸vning"
  
! #: common.opt:3434
  #, fuzzy, no-c-format
  #| msgid "Enable linker optimizations"
  msgid "Enable loop vectorization on trees."
  msgstr "AktivÃ©r sammenkÃ¦deroptimeringer"
  
! #: common.opt:3438
  #, fuzzy, no-c-format
  #| msgid "Enable linker optimizations"
  msgid "Enable basic block vectorization (SLP) on trees."
  msgstr "AktivÃ©r sammenkÃ¦deroptimeringer"
  
! #: common.opt:3442
  #, fuzzy, no-c-format
  #| msgid "Specify alternate name for bss section"
  msgid "-fvect-cost-model=[unlimited|dynamic|cheap|very-cheap]\tSpecifies the cost model for vectorization."
  msgstr "Angiv alternativt navn til bss-sektionen"
  
! #: common.opt:3446
  #, fuzzy, no-c-format
  #| msgid "Specify alternate name for bss section"
  msgid "-fsimd-cost-model=[unlimited|dynamic|cheap|very-cheap]\tSpecifies the vectorization cost model for code marked with a simd directive."
  msgstr "Angiv alternativt navn til bss-sektionen"
  
! #: common.opt:3465
  #, no-c-format
  msgid "Enables the dynamic vectorizer cost model.  Preserved for backward compatibility."
  msgstr ""
  
! #: common.opt:3473
  #, no-c-format
  msgid "Enable copy propagation of scalar-evolution information."
  msgstr ""
  
! #: common.opt:3477
  #, no-c-format
  msgid "-ftrivial-auto-var-init=[uninitialized|pattern|zero]\tAdd initializations to automatic variables."
  msgstr ""
  
! #: common.opt:3499
  #, fuzzy, no-c-format
  #| msgid "Add extra commentary to assembler output"
  msgid "Add extra commentary to assembler output."
  msgstr "TilfÃ¸j ekstra kommentarer til menneskeligt lÃ¦sbar maskinkodeuddata"
  
! #: common.opt:3503
  #, no-c-format
  msgid "-fvisibility=[default|internal|hidden|protected]\tSet the default symbol visibility."
  msgstr ""
  
! #: common.opt:3522
  #, no-c-format
  msgid "Validate vtable pointers before using them."
  msgstr ""
  
! #: common.opt:3538
  #, no-c-format
  msgid "Output vtable verification counters."
  msgstr ""
  
! #: common.opt:3542
  #, no-c-format
  msgid "Output vtable verification pointer sets information."
  msgstr ""
  
! #: common.opt:3546
  #, fuzzy, no-c-format
  msgid "Use expression value profiles in optimizations."
  msgstr "AktivÃ©r sammenkÃ¦deroptimeringer"
  
! #: common.opt:3550
  #, no-c-format
  msgid "Construct webs and split unrelated uses of single variable."
  msgstr ""
  
! #: common.opt:3554
  #, fuzzy, no-c-format
  #| msgid "Enable use of conditional move instructions"
  msgid "Enable conditional dead code elimination for builtin calls."
  msgstr "AktivÃ©r brug af betingede flytteinstruktioner"
  
! #: common.opt:3558
  #, fuzzy, no-c-format
  msgid "Perform whole program optimizations."
  msgstr "UdfÃ¸r lÃ¸kkeoptimeringerne"
  
! #: common.opt:3562
  #, fuzzy, no-c-format
  #| msgid "Set Windows defines"
  msgid "Assume pointer overflow wraps around."
  msgstr "Angiv Windows-definitioner"
  
! #: common.opt:3566
  #, no-c-format
  msgid "Assume signed arithmetic overflow wraps around."
  msgstr ""
  
! #: common.opt:3570
  #, fuzzy, no-c-format
  #| msgid "Put zero initialized data in the bss section"
  msgid "Put zero initialized data in the bss section."
  msgstr "Anbring nul-klargjorte data i bss-sektionen"
  
! #: common.opt:3574
  #, fuzzy, no-c-format
  #| msgid "Save registers around function calls"
  msgid "Clear call-used registers upon function return."
  msgstr "Gem registre omkring funktionskald"
  
! #: common.opt:3578
  #, no-c-format
  msgid "-fzero-init-padding-bits=[standard|unions|all]\tZero padding bits in initializers."
  msgstr ""
  
! #: common.opt:3594
  #, fuzzy, no-c-format
  msgid "Generate debug information in default format."
  msgstr "GenerÃ©r fejlfindingsinfo i standardformat"
  
! #: common.opt:3598
  #, no-c-format
  msgid "Assume assembler support for (DWARF2+) .loc directives."
  msgstr ""
  
! #: common.opt:3602
  #, no-c-format
  msgid "Assume assembler support for view in (DWARF2+) .loc directives."
  msgstr ""
  
! #: common.opt:3606
  #, fuzzy, no-c-format
  #| msgid "Generate debug information in VMS format"
  msgid "Generate debug information in CodeView format."
  msgstr "Opret fejlsÃ¸gningsinformation i VMS-format"
  
! #: common.opt:3626
  #, no-c-format
  msgid "Record DW_AT_decl_column and DW_AT_call_column in DWARF."
  msgstr ""
  
! #: common.opt:3632
  #, fuzzy, no-c-format
  msgid "Generate CTF debug information at default level."
  msgstr "GenerÃ©r fejlfindingsinfo i standardformat"
  
! #: common.opt:3636
  #, fuzzy, no-c-format
  msgid "Generate BTF debug information at default level."
  msgstr "GenerÃ©r fejlfindingsinfo i standardformat"
  
! #: common.opt:3640
  #, no-c-format
  msgid "Generate pruned BTF when emitting BTF info."
  msgstr ""
  
! #: common.opt:3644
  #, fuzzy, no-c-format
  msgid "Generate debug information in default version of DWARF format."
  msgstr "GenerÃ©r fejlfindingsinfo i standardformat"
  
! #: common.opt:3648
  #, fuzzy, no-c-format
  msgid "Generate debug information in DWARF v2 (or later) format."
  msgstr "GenerÃ©r fejlfindingsinfo i standardformat"
  
! #: common.opt:3652
  #, no-c-format
  msgid "Use 32-bit DWARF format when emitting DWARF debug information."
  msgstr ""
  
! #: common.opt:3656
  #, no-c-format
  msgid "Use 64-bit DWARF format when emitting DWARF debug information."
  msgstr ""
  
! #: common.opt:3660
  #, fuzzy, no-c-format
  msgid "Generate debug information in default extended format."
  msgstr "GenerÃ©r fejlfindingsinfo i udvidet standardformat"
  
! #: common.opt:3664
  #, fuzzy, no-c-format
  #| msgid "Generate a single exit point for each function"
  msgid "Generate extended entry point information for inlined functions."
  msgstr "GenerÃ©r et enkelt afslutningspunkt for hver funktion"
  
! #: common.opt:3668
  #, no-c-format
  msgid "Compute locview reset points based on insn length estimates."
  msgstr ""
  
! #: common.opt:3676
  #, fuzzy, no-c-format
  #| msgid "Don't generate fused multiply/add instructions"
  msgid "Don't generate DWARF pubnames and pubtypes sections."
  msgstr "GenerÃ©r ikke sammensatte gang/addÃ©r-instruktioner"
  
! #: common.opt:3680
  #, no-c-format
  msgid "Generate DWARF pubnames and pubtypes sections."
  msgstr "Opret sektioner for DWARF-pubnavne og pubtyper."
  
! #: common.opt:3684
  #, no-c-format
  msgid "Generate DWARF pubnames and pubtypes sections with GNU extensions."
  msgstr "Opret sektioner for DWARF-pubnavne og pubtyper med GNU-udvidelser."
  
! #: common.opt:3688
  #, no-c-format
  msgid "Record gcc command line switches in DWARF DW_AT_producer."
  msgstr ""
  
! #: common.opt:3692
  #, fuzzy, no-c-format
  #| msgid "Generate debug information in separate .dwo files"
  msgid "Generate debug information in separate .dwo files."
  msgstr "Opret fejlsÃ¸gningsinformation i separate .dwo-filer"
  
! #: common.opt:3704
  #, no-c-format
  msgid "Emit progressive recommended breakpoint locations."
  msgstr ""
  
! #: common.opt:3708
  #, no-c-format
  msgid "Don't emit DWARF additions beyond selected version."
  msgstr ""
  
! #: common.opt:3712
  #, no-c-format
  msgid "Add description attributes to some DWARF DIEs that have no name attribute."
  msgstr ""
  
! #: common.opt:3716
  #, fuzzy, no-c-format
  msgid "Toggle debug information generation."
  msgstr "GenerÃ©r fejlfindingsinfo i standardformat"
  
! #: common.opt:3720
  #, no-c-format
  msgid "Augment variable location lists with progressive views."
  msgstr ""
  
! #: common.opt:3727
  #, fuzzy, no-c-format
  #| msgid "Generate debug information in VMS format"
  msgid "Generate debug information in VMS format."
  msgstr "Opret fejlsÃ¸gningsinformation i VMS-format"
  
! #: common.opt:3756
  #, fuzzy, no-c-format
  #| msgid "Generate compressed debug sections"
  msgid "Generate compressed debug sections."
  msgstr "Opret komprimeret fejlsÃ¸gningssektioner"
  
! #: common.opt:3760
  #, fuzzy, no-c-format
  msgid "-gz=<format>\tGenerate compressed debug sections in format <format>."
  msgstr "GenerÃ©r fejlfindingsinfo i standardformat"
  
! #: common.opt:3767
  #, no-c-format
  msgid "-iplugindir=<dir>\tSet <dir> to be the default plugin directory."
  msgstr ""
  
! #: common.opt:3771
  #, no-c-format
  msgid "-imultiarch <dir>\tSet <dir> to be the multiarch include subdirectory."
  msgstr ""
  
! #: common.opt:3799
  #, fuzzy, no-c-format
  msgid "-o <file>\tPlace output into <file>."
  msgstr "  -o <fil>                Anbring uddata i <fil>\n"
  
! #: common.opt:3803
  #, fuzzy, no-c-format
  msgid "Enable function profiling."
  msgstr "MIPS16-funktionsprofilering"
  
! #: common.opt:3813
  #, no-c-format
  msgid "Like -pedantic but issue errors instead of warnings."
  msgstr ""
  
! #: common.opt:3853
  #, fuzzy, no-c-format
  #| msgid "Do not display functions compiled or elapsed time"
  msgid "Do not display functions compiled or elapsed time."
  msgstr "Vis ikke funktioner der oversÃ¦ttes eller forlÃ¸bet tid"
  
! #: common.opt:3885
  #, fuzzy, no-c-format
  #| msgid "Enable verbose output"
  msgid "Enable verbose output."
  msgstr "Aktiver uddybende uddata"
  
! #: common.opt:3889
  #, fuzzy, no-c-format
  #| msgid "Display the compiler's version"
  msgid "Display the compiler's version."
  msgstr "Vis oversÃ¦tterens version"
  
! #: common.opt:3893
  #, fuzzy, no-c-format
  #| msgid "Suppress warnings"
  msgid "Suppress warnings."
  msgstr "Undertryk advarsler"
  
! #: common.opt:3903
  #, fuzzy, no-c-format
  #| msgid "Create a shared library"
  msgid "Create a shared library."
  msgstr "Opret et delt bibliotek"
  
! #: common.opt:3967
  #, fuzzy, no-c-format
  #| msgid "Create a position independent executable"
  msgid "Don't create a dynamically linked position independent executable."
  msgstr "Opret en placeringsuafhÃ¦ngig kÃ¸rbar fil"
  
! #: common.opt:3971
  #, fuzzy, no-c-format
  #| msgid "Create a position independent executable"
  msgid "Create a dynamically linked position independent executable."
  msgstr "Opret en placeringsuafhÃ¦ngig kÃ¸rbar fil"
  
! #: common.opt:3975
  #, fuzzy, no-c-format
  #| msgid "Create a position independent executable"
  msgid "Create a static position independent executable."
  msgstr "Opret en placeringsuafhÃ¦ngig kÃ¸rbar fil"
  
! #: common.opt:3982
  #, no-c-format
  msgid "Use caller save register across calls if possible."
  msgstr ""
  
! #: common.opt:3986
  #, no-c-format
  msgid "Perform dead code elimination on zero and sign extensions with special dataflow analysis."
  msgstr ""
*************** msgstr "Maksimalt antal konstante lagre
*** 18851,18965 ****
  
  #: params.opt:1194
  #, no-c-format
  msgid "Instruction accounted for function prologue, epilogue and other overhead."
  msgstr "Instruktion medtaget forfunktionsindledning/-afslutning og andre systembyrder."
  
! #: params.opt:1198
  #, no-c-format
  msgid "Time accounted for function prologue, epilogue and other overhead."
  msgstr "Tid medtaget for funktionsindledning/-afslutninger og andre systembyrder"
  
! #: params.opt:1202
  #, no-c-format
  msgid "Instruction accounted for function thunk overhead."
  msgstr "Instruktion medtaget for funktion thunk-systembyrde."
  
! #: params.opt:1206
  #, no-c-format
  msgid "Time accounted for function thunk overhead."
  msgstr "Tid medtaget for funktion thunk-systembyrde."
  
! #: params.opt:1210
  #, no-c-format
  msgid "The denominator n of fraction 1/n of the number of profiled runs of the entire program below which the execution count of a basic block must be in order for the basic block to be considered unlikely."
  msgstr ""
  
! #: params.opt:1214
  #, no-c-format
  msgid "Maximum unroll factor for the unroll-and-jam transformation."
  msgstr ""
  
! #: params.opt:1218
  #, no-c-format
  msgid "Minimum percentage of memrefs that must go away for unroll-and-jam to be considered profitable."
  msgstr ""
  
! #: params.opt:1222
  #, no-c-format
  msgid "Use direct poisoning/unpoisoning instructions for variables smaller or equal to this number."
  msgstr ""
  
! #: params.opt:1226
  #, no-c-format
  msgid "Whether to use canonical types."
  msgstr "Om der skal bruges kanoniske typer."
  
! #: params.opt:1230
  #, fuzzy, no-c-format
  #| msgid "Enable linker optimizations"
  msgid "Enable loop epilogue vectorization using smaller vector size."
  msgstr "AktivÃ©r sammenkÃ¦deroptimeringer"
  
! #: params.opt:1234
  #, no-c-format
  msgid "Maximum number of possible vector layouts (such as permutations) to consider when optimizing to-be-vectorized code."
  msgstr ""
  
! #: params.opt:1238
  #, fuzzy, no-c-format
  #| msgid "Maximum number of namespaces to search for alternatives when name lookup fails."
  msgid "Maximum number of loop peels to enhance alignment of data references in a loop."
  msgstr "Det maksimale antal navnerum der sÃ¸ges i efter alternativer, nÃ¥r navneopslag mislykkes."
  
! #: params.opt:1242
  #, no-c-format
  msgid "Bound on number of runtime checks inserted by the vectorizer's loop versioning for alias check."
  msgstr ""
  
! #: params.opt:1246
  #, no-c-format
  msgid "Bound on number of runtime checks inserted by the vectorizer's loop versioning for alignment check."
  msgstr ""
  
! #: params.opt:1250
  #, no-c-format
  msgid "Controls how loop vectorizer uses partial vectors.  0 means never, 1 means only for loops whose need to iterate can be removed, 2 means for all loops.  The default value is 2."
  msgstr ""
  
! #: params.opt:1254
  #, no-c-format
  msgid "The maximum factor which the loop vectorizer applies to the cost of statements in an inner loop relative to the loop being vectorized."
  msgstr ""
  
! #: params.opt:1258
  #, fuzzy, no-c-format
  #| msgid "Enable linker optimizations"
  msgid "Enable loop vectorization of floating point inductions."
  msgstr "AktivÃ©r sammenkÃ¦deroptimeringer"
  
! #: params.opt:1262
  #, no-c-format
  msgid "Force the use of SLP when vectorizing, fail if not possible."
  msgstr ""
  
! #: params.opt:1266
  #, fuzzy, no-c-format
  #| msgid "maximum number of basic blocks per function to be analyzed by Graphite"
  msgid "Maximum number of basic blocks before VRP switches to a fast model with less memory requirements."
  msgstr "Det maksimale antal grundlÃ¦ggende blokke per funktion, der skal analyseres af Graphite"
  
! #: params.opt:1270
  #, fuzzy, no-c-format
  #| msgid "maximum number of basic blocks per function to be analyzed by Graphite."
  msgid "Maximum number of basic blocks before VRP uses a sparse bitmap cache."
  msgstr "maksimalt antal grundlÃ¦ggende blokke per funktion, der skal analyseres af Graphite."
  
! #: params.opt:1274
  #, no-c-format
  msgid "Maximum number of outgoing edges in a switch before VRP will not process it."
  msgstr ""
  
! #: params.opt:1278
  #, fuzzy, no-c-format
  #| msgid "maximum number of basic blocks per function to be analyzed by Graphite."
  msgid "Maximum number of basic blocks for VRP to use a basic cache vector."
--- 18856,18975 ----
  
  #: params.opt:1194
  #, no-c-format
+ msgid "Maximum amount of work done to prune paths where the variable is always initialized."
+ msgstr ""
+ 
+ #: params.opt:1198
+ #, no-c-format
  msgid "Instruction accounted for function prologue, epilogue and other overhead."
  msgstr "Instruktion medtaget forfunktionsindledning/-afslutning og andre systembyrder."
  
! #: params.opt:1202
  #, no-c-format
  msgid "Time accounted for function prologue, epilogue and other overhead."
  msgstr "Tid medtaget for funktionsindledning/-afslutninger og andre systembyrder"
  
! #: params.opt:1206
  #, no-c-format
  msgid "Instruction accounted for function thunk overhead."
  msgstr "Instruktion medtaget for funktion thunk-systembyrde."
  
! #: params.opt:1210
  #, no-c-format
  msgid "Time accounted for function thunk overhead."
  msgstr "Tid medtaget for funktion thunk-systembyrde."
  
! #: params.opt:1214
  #, no-c-format
  msgid "The denominator n of fraction 1/n of the number of profiled runs of the entire program below which the execution count of a basic block must be in order for the basic block to be considered unlikely."
  msgstr ""
  
! #: params.opt:1218
  #, no-c-format
  msgid "Maximum unroll factor for the unroll-and-jam transformation."
  msgstr ""
  
! #: params.opt:1222
  #, no-c-format
  msgid "Minimum percentage of memrefs that must go away for unroll-and-jam to be considered profitable."
  msgstr ""
  
! #: params.opt:1226
  #, no-c-format
  msgid "Use direct poisoning/unpoisoning instructions for variables smaller or equal to this number."
  msgstr ""
  
! #: params.opt:1230
  #, no-c-format
  msgid "Whether to use canonical types."
  msgstr "Om der skal bruges kanoniske typer."
  
! #: params.opt:1234
  #, fuzzy, no-c-format
  #| msgid "Enable linker optimizations"
  msgid "Enable loop epilogue vectorization using smaller vector size."
  msgstr "AktivÃ©r sammenkÃ¦deroptimeringer"
  
! #: params.opt:1238
  #, no-c-format
  msgid "Maximum number of possible vector layouts (such as permutations) to consider when optimizing to-be-vectorized code."
  msgstr ""
  
! #: params.opt:1242
  #, fuzzy, no-c-format
  #| msgid "Maximum number of namespaces to search for alternatives when name lookup fails."
  msgid "Maximum number of loop peels to enhance alignment of data references in a loop."
  msgstr "Det maksimale antal navnerum der sÃ¸ges i efter alternativer, nÃ¥r navneopslag mislykkes."
  
! #: params.opt:1246
  #, no-c-format
  msgid "Bound on number of runtime checks inserted by the vectorizer's loop versioning for alias check."
  msgstr ""
  
! #: params.opt:1250
  #, no-c-format
  msgid "Bound on number of runtime checks inserted by the vectorizer's loop versioning for alignment check."
  msgstr ""
  
! #: params.opt:1254
  #, no-c-format
  msgid "Controls how loop vectorizer uses partial vectors.  0 means never, 1 means only for loops whose need to iterate can be removed, 2 means for all loops.  The default value is 2."
  msgstr ""
  
! #: params.opt:1258
  #, no-c-format
  msgid "The maximum factor which the loop vectorizer applies to the cost of statements in an inner loop relative to the loop being vectorized."
  msgstr ""
  
! #: params.opt:1262
  #, fuzzy, no-c-format
  #| msgid "Enable linker optimizations"
  msgid "Enable loop vectorization of floating point inductions."
  msgstr "AktivÃ©r sammenkÃ¦deroptimeringer"
  
! #: params.opt:1266
  #, no-c-format
  msgid "Force the use of SLP when vectorizing, fail if not possible."
  msgstr ""
  
! #: params.opt:1270
  #, fuzzy, no-c-format
  #| msgid "maximum number of basic blocks per function to be analyzed by Graphite"
  msgid "Maximum number of basic blocks before VRP switches to a fast model with less memory requirements."
  msgstr "Det maksimale antal grundlÃ¦ggende blokke per funktion, der skal analyseres af Graphite"
  
! #: params.opt:1274
  #, fuzzy, no-c-format
  #| msgid "maximum number of basic blocks per function to be analyzed by Graphite."
  msgid "Maximum number of basic blocks before VRP uses a sparse bitmap cache."
  msgstr "maksimalt antal grundlÃ¦ggende blokke per funktion, der skal analyseres af Graphite."
  
! #: params.opt:1278
  #, no-c-format
  msgid "Maximum number of outgoing edges in a switch before VRP will not process it."
  msgstr ""
  
! #: params.opt:1282
  #, fuzzy, no-c-format
  #| msgid "maximum number of basic blocks per function to be analyzed by Graphite."
  msgid "Maximum number of basic blocks for VRP to use a basic cache vector."
*************** msgstr "kald %d returnerer = %s\n"
*** 19001,19061 ****
  msgid "callee does not return"
  msgstr "kald %d returnerer = %s\n"
  
! #: calls.cc:2585
  #, fuzzy
  #| msgid "sizeof applied to a function type"
  msgid "volatile function type"
  msgstr "sizeof benyttet pÃ¥ en funktionstype"
  
! #: calls.cc:2604
  #, fuzzy
  #| msgid "expected function"
  msgid "nested function"
  msgstr "forventet funktion"
  
! #: calls.cc:2615
  msgid "callee required more stack slots than the caller"
  msgstr ""
  
! #: calls.cc:2629
  #, fuzzy
  #| msgid "destructors take no parameters"
  msgid "inconsistent number of popped arguments"
  msgstr "destruktionsfunktioner kan ikke have parametre"
  
! #: calls.cc:2636
  #, fuzzy
  #| msgid "%s does not support %s"
  msgid "frontend does not support sibling call"
  msgstr "%s understÃ¸tter ikke %s"
  
! #: calls.cc:2692
  msgid "other reasons"
  msgstr ""
  
! #: calls.cc:3066
  msgid "inside another call"
  msgstr ""
  
! #: calls.cc:3075
  #, fuzzy
  #| msgid "invalid type argument"
  msgid "variable size arguments"
  msgstr "ugyldig typeparameter"
  
! #: calls.cc:3099
  #, fuzzy
  #| msgid "Pass all arguments on stack"
  msgid "hidden string length argument passed on stack"
  msgstr "Overbring alle parametre pÃ¥ stakken"
  
! #: calls.cc:3148
  msgid "caller and callee disagree in promotion of function return value"
  msgstr ""
  
  #. Ideally we'd emit a message for all of the ways that it could
  #. have failed.
! #: calls.cc:4060
  #, fuzzy
  #| msgid "verification error at PC=%d"
  msgid "tail call production failed"
--- 19011,19071 ----
  msgid "callee does not return"
  msgstr "kald %d returnerer = %s\n"
  
! #: calls.cc:2586
  #, fuzzy
  #| msgid "sizeof applied to a function type"
  msgid "volatile function type"
  msgstr "sizeof benyttet pÃ¥ en funktionstype"
  
! #: calls.cc:2605
  #, fuzzy
  #| msgid "expected function"
  msgid "nested function"
  msgstr "forventet funktion"
  
! #: calls.cc:2616
  msgid "callee required more stack slots than the caller"
  msgstr ""
  
! #: calls.cc:2630
  #, fuzzy
  #| msgid "destructors take no parameters"
  msgid "inconsistent number of popped arguments"
  msgstr "destruktionsfunktioner kan ikke have parametre"
  
! #: calls.cc:2637
  #, fuzzy
  #| msgid "%s does not support %s"
  msgid "frontend does not support sibling call"
  msgstr "%s understÃ¸tter ikke %s"
  
! #: calls.cc:2693
  msgid "other reasons"
  msgstr ""
  
! #: calls.cc:3067
  msgid "inside another call"
  msgstr ""
  
! #: calls.cc:3076
  #, fuzzy
  #| msgid "invalid type argument"
  msgid "variable size arguments"
  msgstr "ugyldig typeparameter"
  
! #: calls.cc:3100
  #, fuzzy
  #| msgid "Pass all arguments on stack"
  msgid "hidden string length argument passed on stack"
  msgstr "Overbring alle parametre pÃ¥ stakken"
  
! #: calls.cc:3149
  msgid "caller and callee disagree in promotion of function return value"
  msgstr ""
  
  #. Ideally we'd emit a message for all of the ways that it could
  #. have failed.
! #: calls.cc:4061
  #, fuzzy
  #| msgid "verification error at PC=%d"
  msgid "tail call production failed"
*************** msgstr "Â»%%lÂ«-operand er ikke en etike
*** 19298,19309 ****
  #. PRINT_OPERAND must handle them.
  #. We can't handle floating point constants;
  #. TARGET_PRINT_OPERAND must handle them.
! #: final.cc:3738 config/arc/arc.cc:6311 config/i386/i386.cc:12799
  #, c-format
  msgid "floating constant misused"
  msgstr "kommatalskonstant misbrugt"
  
! #: final.cc:3796 config/arc/arc.cc:6408 config/i386/i386.cc:12890
  #: config/pdp11/pdp11.cc:1872
  #, c-format
  msgid "invalid expression as operand"
--- 19308,19319 ----
  #. PRINT_OPERAND must handle them.
  #. We can't handle floating point constants;
  #. TARGET_PRINT_OPERAND must handle them.
! #: final.cc:3738 config/arc/arc.cc:6311 config/i386/i386.cc:12801
  #, c-format
  msgid "floating constant misused"
  msgstr "kommatalskonstant misbrugt"
  
! #: final.cc:3796 config/arc/arc.cc:6408 config/i386/i386.cc:12892
  #: config/pdp11/pdp11.cc:1872
  #, c-format
  msgid "invalid expression as operand"
*************** msgstr "Dette tilvalg mangler dokumentat
*** 20552,20616 ****
  msgid "Uses of this option are diagnosed."
  msgstr "Brug af dette tilvalg diagnosticeres."
  
! #: opts.cc:1723
  #, c-format
  msgid "Same as %s%s (or, in negated form, %s%s)."
  msgstr ""
  
! #: opts.cc:1728
  #, fuzzy, c-format
  #| msgid "%s  Same as %s."
  msgid "Same as %s%s."
  msgstr "%s Samme som %s."
  
! #: opts.cc:1733
  #, fuzzy, c-format
  #| msgid "%s  Same as %s."
  msgid "Same as %s."
  msgstr "%s Samme som %s."
  
! #: opts.cc:1741
  #, c-format
  msgid "%s  Same as %s."
  msgstr "%s Samme som %s."
  
! #: opts.cc:1804
  msgid "[available in "
  msgstr ""
  
! #: opts.cc:1836
  msgid "[default]"
  msgstr "[standard]"
  
! #: opts.cc:1845
  #, c-format
  msgid "%llu bytes"
  msgstr ""
  
! #: opts.cc:1882
  msgid "[enabled]"
  msgstr "[aktiveret]"
  
! #: opts.cc:1884
  msgid "[disabled]"
  msgstr "[deaktiveret]"
  
! #: opts.cc:1920
  #, c-format
  msgid " No options with the desired characteristics were found\n"
  msgstr " Ingen tilvalg med de Ã¸nskede karakteristika blev fundet\n"
  
! #: opts.cc:1929
  #, c-format
  msgid " None found.  Use --help=%s to show *all* the options supported by the %s front-end.\n"
  msgstr " Ingen fundet. Brug --help=%s for at vise *alle* tilvalgene understÃ¸ttet af brugerfladen %s.\n"
  
! #: opts.cc:1935
  #, c-format
  msgid " All options with the desired characteristics have already been displayed\n"
  msgstr " Alle tilvalg med de Ã¸nskede karakteristika er allerede blevet vist\n"
  
! #: opts.cc:1980
  #, fuzzy, c-format
  #| msgid "invalid type argument"
  msgid ""
--- 20562,20626 ----
  msgid "Uses of this option are diagnosed."
  msgstr "Brug af dette tilvalg diagnosticeres."
  
! #: opts.cc:1721
  #, c-format
  msgid "Same as %s%s (or, in negated form, %s%s)."
  msgstr ""
  
! #: opts.cc:1726
  #, fuzzy, c-format
  #| msgid "%s  Same as %s."
  msgid "Same as %s%s."
  msgstr "%s Samme som %s."
  
! #: opts.cc:1731
  #, fuzzy, c-format
  #| msgid "%s  Same as %s."
  msgid "Same as %s."
  msgstr "%s Samme som %s."
  
! #: opts.cc:1739
  #, c-format
  msgid "%s  Same as %s."
  msgstr "%s Samme som %s."
  
! #: opts.cc:1802
  msgid "[available in "
  msgstr ""
  
! #: opts.cc:1834
  msgid "[default]"
  msgstr "[standard]"
  
! #: opts.cc:1843
  #, c-format
  msgid "%llu bytes"
  msgstr ""
  
! #: opts.cc:1880
  msgid "[enabled]"
  msgstr "[aktiveret]"
  
! #: opts.cc:1882
  msgid "[disabled]"
  msgstr "[deaktiveret]"
  
! #: opts.cc:1918
  #, c-format
  msgid " No options with the desired characteristics were found\n"
  msgstr " Ingen tilvalg med de Ã¸nskede karakteristika blev fundet\n"
  
! #: opts.cc:1927
  #, c-format
  msgid " None found.  Use --help=%s to show *all* the options supported by the %s front-end.\n"
  msgstr " Ingen fundet. Brug --help=%s for at vise *alle* tilvalgene understÃ¸ttet af brugerfladen %s.\n"
  
! #: opts.cc:1933
  #, c-format
  msgid " All options with the desired characteristics have already been displayed\n"
  msgstr " Alle tilvalg med de Ã¸nskede karakteristika er allerede blevet vist\n"
  
! #: opts.cc:1978
  #, fuzzy, c-format
  #| msgid "invalid type argument"
  msgid ""
*************** msgid ""
*** 20618,20666 ****
  "   "
  msgstr "ugyldig typeparameter"
  
! #: opts.cc:2030
  msgid "The following options are target specific"
  msgstr "De fÃ¸lgende tilvalg er mÃ¥lspecifikke"
  
! #: opts.cc:2033
  msgid "The following options control compiler warning messages"
  msgstr "De fÃ¸lgende tilvalg kontrollerer advarselsbeskeder for oversÃ¦tteren"
  
! #: opts.cc:2036
  msgid "The following options control optimizations"
  msgstr "De fÃ¸lgende tilvalg kontrollerer optimeringer"
  
! #: opts.cc:2039 opts.cc:2079
  msgid "The following options are language-independent"
  msgstr "De fÃ¸lgende tilvalg er sproguafhÃ¦ngige"
  
! #: opts.cc:2042
  #, fuzzy
  #| msgid "The following options control optimizations"
  msgid "The following options control parameters"
  msgstr "De fÃ¸lgende tilvalg kontrollerer optimeringer"
  
! #: opts.cc:2048
  msgid "The following options are specific to just the language "
  msgstr "De fÃ¸lgende tilvalg er specifikke kun for sproget "
  
! #: opts.cc:2050
  msgid "The following options are supported by the language "
  msgstr "De fÃ¸lgende tilvalg er understÃ¸ttet af sproget "
  
! #: opts.cc:2061
  msgid "The following options are not documented"
  msgstr "De fÃ¸lgende tilvalg er ikke dokumenterede"
  
! #: opts.cc:2063
  msgid "The following options take separate arguments"
  msgstr "De fÃ¸lgende tilvalg anvender forskellige parametre"
  
! #: opts.cc:2065
  msgid "The following options take joined arguments"
  msgstr "De fÃ¸lgende tilvalg anvender fÃ¦lles parametre"
  
! #: opts.cc:2077
  msgid "The following options are language-related"
  msgstr "De fÃ¸lgende tilvalg er sprogrelaterede"
  
--- 20628,20676 ----
  "   "
  msgstr "ugyldig typeparameter"
  
! #: opts.cc:2028
  msgid "The following options are target specific"
  msgstr "De fÃ¸lgende tilvalg er mÃ¥lspecifikke"
  
! #: opts.cc:2031
  msgid "The following options control compiler warning messages"
  msgstr "De fÃ¸lgende tilvalg kontrollerer advarselsbeskeder for oversÃ¦tteren"
  
! #: opts.cc:2034
  msgid "The following options control optimizations"
  msgstr "De fÃ¸lgende tilvalg kontrollerer optimeringer"
  
! #: opts.cc:2037 opts.cc:2077
  msgid "The following options are language-independent"
  msgstr "De fÃ¸lgende tilvalg er sproguafhÃ¦ngige"
  
! #: opts.cc:2040
  #, fuzzy
  #| msgid "The following options control optimizations"
  msgid "The following options control parameters"
  msgstr "De fÃ¸lgende tilvalg kontrollerer optimeringer"
  
! #: opts.cc:2046
  msgid "The following options are specific to just the language "
  msgstr "De fÃ¸lgende tilvalg er specifikke kun for sproget "
  
! #: opts.cc:2048
  msgid "The following options are supported by the language "
  msgstr "De fÃ¸lgende tilvalg er understÃ¸ttet af sproget "
  
! #: opts.cc:2059
  msgid "The following options are not documented"
  msgstr "De fÃ¸lgende tilvalg er ikke dokumenterede"
  
! #: opts.cc:2061
  msgid "The following options take separate arguments"
  msgstr "De fÃ¸lgende tilvalg anvender forskellige parametre"
  
! #: opts.cc:2063
  msgid "The following options take joined arguments"
  msgstr "De fÃ¸lgende tilvalg anvender fÃ¦lles parametre"
  
! #: opts.cc:2075
  msgid "The following options are language-related"
  msgstr "De fÃ¸lgende tilvalg er sprogrelaterede"
  
*************** msgid "%s%sGGC heuristics: --param ggc-m
*** 20767,20773 ****
  msgstr "%s%sGGC-heuristikker: --param ggc-min-expand=%d --param ggc-min-heapsize=%d\n"
  
  #: tree-diagnostic.cc:100 tree-logical-location.cc:92 c/c-decl.cc:6607
! #: c/c-typeck.cc:9013 cp/error.cc:1301 c-family/c-pretty-print.cc:447
  #, gcc-internal-format
  msgid "<anonymous>"
  msgstr "<anonym>"
--- 20777,20783 ----
  msgstr "%s%sGGC-heuristikker: --param ggc-min-expand=%d --param ggc-min-heapsize=%d\n"
  
  #: tree-diagnostic.cc:100 tree-logical-location.cc:92 c/c-decl.cc:6607
! #: c/c-typeck.cc:9014 cp/error.cc:1301 c-family/c-pretty-print.cc:447
  #, gcc-internal-format
  msgid "<anonymous>"
  msgstr "<anonym>"
*************** msgstr ""
*** 20784,20790 ****
  msgid "caller uses sjlj exceptions"
  msgstr ""
  
! #: tree-tailcall.cc:197 tree-tailcall.cc:723
  msgid "caller uses setjmp"
  msgstr ""
  
--- 20794,20800 ----
  msgid "caller uses sjlj exceptions"
  msgstr ""
  
! #: tree-tailcall.cc:197 tree-tailcall.cc:853
  msgid "caller uses setjmp"
  msgstr ""
  
*************** msgstr ""
*** 20794,20874 ****
  msgid "caller uses __builtin_eh_return"
  msgstr "funktionen bruger __builtin_eh_return"
  
! #: tree-tailcall.cc:633
  msgid "memory reference or volatile after call"
  msgstr ""
  
! #: tree-tailcall.cc:690
  #, fuzzy
  #| msgid "Pass all arguments on stack"
  msgid "address of caller arguments taken"
  msgstr "Overbring alle parametre pÃ¥ stakken"
  
! #: tree-tailcall.cc:717
  #, fuzzy
  #| msgid "Return 8-byte vectors in memory"
  msgid "return value in memory"
  msgstr "Returner 8-byte vektorer i hukommelse"
  
! #: tree-tailcall.cc:734
  msgid "code between call and return"
  msgstr ""
  
! #: tree-tailcall.cc:747
  msgid "call may throw exception that does not propagate"
  msgstr ""
  
! #: tree-tailcall.cc:760 tree-tailcall.cc:1166
  msgid "call may throw exception caught locally or perform cleanups"
  msgstr ""
  
! #: tree-tailcall.cc:795
  #, fuzzy
  #| msgid "field initializer type mismatch"
  msgid "return value used after call"
  msgstr "typen af startvÃ¦rdien for feltet passer ikke"
  
! #: tree-tailcall.cc:893 tree-tailcall.cc:921
  #, fuzzy
  #| msgid "callee refers to comdat-local symbols"
  msgid "call invocation refers to locals"
  msgstr "callee referer til comdat-lokale symboler"
  
! #: tree-tailcall.cc:1001
  msgid "unhandled code after call"
  msgstr ""
  
! #: tree-tailcall.cc:1011
  #, fuzzy
  #| msgid "field initializer type mismatch"
  msgid "return value changed after call"
  msgstr "typen af startvÃ¦rdien for feltet passer ikke"
  
! #: tree-tailcall.cc:1060
  #, fuzzy
  #| msgid "In function"
  msgid "internal call"
  msgstr "I funktionen"
  
! #: tree-tailcall.cc:1068 tree-tailcall.cc:1139
  msgid "call and return value are different"
  msgstr ""
  
! #: tree-tailcall.cc:1149
  #, fuzzy
  #| msgid "Optimize sibling and tail recursive calls"
  msgid "operations after non tail recursive call"
  msgstr "OptimÃ©r sÃ¸skende- og halerekursive kald"
  
! #: tree-tailcall.cc:1157
  msgid "tail recursion with pointers can only use additions"
  msgstr ""
  
! #: tree-tailcall.cc:1170
  msgid "exception cleanups omit __tsan_func_exit call"
  msgstr ""
  
! #: tree-tailcall.cc:1672
  msgid "tail recursion with accumulation mixed with musttail non-recursive call"
  msgstr ""
  
--- 20804,20884 ----
  msgid "caller uses __builtin_eh_return"
  msgstr "funktionen bruger __builtin_eh_return"
  
! #: tree-tailcall.cc:746
  msgid "memory reference or volatile after call"
  msgstr ""
  
! #: tree-tailcall.cc:820
  #, fuzzy
  #| msgid "Pass all arguments on stack"
  msgid "address of caller arguments taken"
  msgstr "Overbring alle parametre pÃ¥ stakken"
  
! #: tree-tailcall.cc:847
  #, fuzzy
  #| msgid "Return 8-byte vectors in memory"
  msgid "return value in memory"
  msgstr "Returner 8-byte vektorer i hukommelse"
  
! #: tree-tailcall.cc:864
  msgid "code between call and return"
  msgstr ""
  
! #: tree-tailcall.cc:877
  msgid "call may throw exception that does not propagate"
  msgstr ""
  
! #: tree-tailcall.cc:890 tree-tailcall.cc:1385
  msgid "call may throw exception caught locally or perform cleanups"
  msgstr ""
  
! #: tree-tailcall.cc:925
  #, fuzzy
  #| msgid "field initializer type mismatch"
  msgid "return value used after call"
  msgstr "typen af startvÃ¦rdien for feltet passer ikke"
  
! #: tree-tailcall.cc:1023 tree-tailcall.cc:1051
  #, fuzzy
  #| msgid "callee refers to comdat-local symbols"
  msgid "call invocation refers to locals"
  msgstr "callee referer til comdat-lokale symboler"
  
! #: tree-tailcall.cc:1220
  msgid "unhandled code after call"
  msgstr ""
  
! #: tree-tailcall.cc:1230
  #, fuzzy
  #| msgid "field initializer type mismatch"
  msgid "return value changed after call"
  msgstr "typen af startvÃ¦rdien for feltet passer ikke"
  
! #: tree-tailcall.cc:1279
  #, fuzzy
  #| msgid "In function"
  msgid "internal call"
  msgstr "I funktionen"
  
! #: tree-tailcall.cc:1287 tree-tailcall.cc:1358
  msgid "call and return value are different"
  msgstr ""
  
! #: tree-tailcall.cc:1368
  #, fuzzy
  #| msgid "Optimize sibling and tail recursive calls"
  msgid "operations after non tail recursive call"
  msgstr "OptimÃ©r sÃ¸skende- og halerekursive kald"
  
! #: tree-tailcall.cc:1376
  msgid "tail recursion with pointers can only use additions"
  msgstr ""
  
! #: tree-tailcall.cc:1389
  msgid "exception cleanups omit __tsan_func_exit call"
  msgstr ""
  
! #: tree-tailcall.cc:1892
  msgid "tail recursion with accumulation mixed with musttail non-recursive call"
  msgstr ""
  
*************** msgid "length modifier in strfmon format
*** 21146,21168 ****
  msgstr "lÃ¦ngdemodifikation i strfmon-formatering"
  
  #. Handle deferred options from command-line.
! #: c-family/c-opts.cc:1656 fortran/cpp.cc:630
  msgid "<command-line>"
  msgstr "<kommandolinje>"
  
! #: config/aarch64/aarch64.cc:12298 config/loongarch/loongarch.cc:6280
  #, fuzzy, c-format
  #| msgid "Unsupported operand for code '%c'"
  msgid "unsupported operand for code '%c'"
  msgstr "Ikke understÃ¸ttet operand for koden Â»%cÂ«"
  
! #: config/aarch64/aarch64.cc:12307 config/aarch64/aarch64.cc:12320
! #: config/aarch64/aarch64.cc:12332 config/aarch64/aarch64.cc:12343
! #: config/aarch64/aarch64.cc:12359 config/aarch64/aarch64.cc:12373
! #: config/aarch64/aarch64.cc:12393 config/aarch64/aarch64.cc:12475
! #: config/aarch64/aarch64.cc:12486 config/aarch64/aarch64.cc:12500
! #: config/aarch64/aarch64.cc:12726 config/aarch64/aarch64.cc:12739
! #: config/aarch64/aarch64.cc:12756 config/pru/pru.cc:1824
  #: config/pru/pru.cc:1835 config/pru/pru.cc:1917 config/riscv/riscv.cc:7037
  #: config/riscv/riscv.cc:7053 config/riscv/riscv.cc:7069
  #: config/riscv/riscv.cc:7085 config/riscv/riscv.cc:7118
--- 21156,21178 ----
  msgstr "lÃ¦ngdemodifikation i strfmon-formatering"
  
  #. Handle deferred options from command-line.
! #: c-family/c-opts.cc:1658 fortran/cpp.cc:630
  msgid "<command-line>"
  msgstr "<kommandolinje>"
  
! #: config/aarch64/aarch64.cc:12313 config/loongarch/loongarch.cc:6280
  #, fuzzy, c-format
  #| msgid "Unsupported operand for code '%c'"
  msgid "unsupported operand for code '%c'"
  msgstr "Ikke understÃ¸ttet operand for koden Â»%cÂ«"
  
! #: config/aarch64/aarch64.cc:12322 config/aarch64/aarch64.cc:12335
! #: config/aarch64/aarch64.cc:12347 config/aarch64/aarch64.cc:12358
! #: config/aarch64/aarch64.cc:12374 config/aarch64/aarch64.cc:12388
! #: config/aarch64/aarch64.cc:12408 config/aarch64/aarch64.cc:12490
! #: config/aarch64/aarch64.cc:12501 config/aarch64/aarch64.cc:12515
! #: config/aarch64/aarch64.cc:12741 config/aarch64/aarch64.cc:12754
! #: config/aarch64/aarch64.cc:12771 config/pru/pru.cc:1824
  #: config/pru/pru.cc:1835 config/pru/pru.cc:1917 config/riscv/riscv.cc:7037
  #: config/riscv/riscv.cc:7053 config/riscv/riscv.cc:7069
  #: config/riscv/riscv.cc:7085 config/riscv/riscv.cc:7118
*************** msgstr "Ikke understÃ¸ttet operand for k
*** 21172,21179 ****
  msgid "invalid operand for '%%%c'"
  msgstr "ugyldig operand for Â»%%%cÂ«"
  
! #: config/aarch64/aarch64.cc:12411 config/aarch64/aarch64.cc:12422
! #: config/aarch64/aarch64.cc:12586 config/aarch64/aarch64.cc:12597
  #: config/riscv/riscv.cc:6933 config/riscv/riscv.cc:6941
  #: config/riscv/riscv.cc:6948 config/riscv/riscv.cc:6952
  #: config/riscv/riscv.cc:6994 config/riscv/riscv.cc:7012
--- 21182,21189 ----
  msgid "invalid operand for '%%%c'"
  msgstr "ugyldig operand for Â»%%%cÂ«"
  
! #: config/aarch64/aarch64.cc:12426 config/aarch64/aarch64.cc:12437
! #: config/aarch64/aarch64.cc:12601 config/aarch64/aarch64.cc:12612
  #: config/riscv/riscv.cc:6933 config/riscv/riscv.cc:6941
  #: config/riscv/riscv.cc:6948 config/riscv/riscv.cc:6952
  #: config/riscv/riscv.cc:6994 config/riscv/riscv.cc:7012
*************** msgstr "ugyldig operand for Â»%%%cÂ«"
*** 21182,21331 ****
  msgid "invalid vector constant"
  msgstr "ugyldig konstant:"
  
! #: config/aarch64/aarch64.cc:12436
  #, c-format
  msgid "incompatible floating point / vector register operand for '%%%c'"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12448
  #, fuzzy, c-format
  #| msgid "invalid operand for '%%%c'"
  msgid "incompatible operand for '%%%c'"
  msgstr "ugyldig operand for Â»%%%cÂ«"
  
! #: config/aarch64/aarch64.cc:12468
  #, fuzzy, c-format
  #| msgid "invalid operand for '%%%c'"
  msgid "incompatible register operand for '%%%c'"
  msgstr "ugyldig operand for Â»%%%cÂ«"
  
! #: config/aarch64/aarch64.cc:12533 config/arm/arm.cc:24916
  #, c-format
  msgid "missing operand"
  msgstr "manglende operand"
  
! #: config/aarch64/aarch64.cc:12623
  #, c-format
  msgid "invalid constant"
  msgstr "ugyldig konstant:"
  
! #: config/aarch64/aarch64.cc:12626
  #, c-format
  msgid "invalid operand"
  msgstr "ugyldig operand"
  
! #: config/aarch64/aarch64.cc:12764 config/aarch64/aarch64.cc:12769
  #, c-format
  msgid "invalid operand prefix '%%%c'"
  msgstr "ugyldig operandprÃ¦fiks Â»%%%cÂ«"
  
! #: config/aarch64/aarch64.cc:12789
  #, fuzzy, c-format
  #| msgid "invalid addressing mode"
  msgid "invalid address mode"
  msgstr "ugyldig adresseringstilstand"
  
! #: config/aarch64/aarch64.cc:22760
  #, fuzzy
  #| msgid "invalid conversion from %<__fpreg%>"
  msgid "invalid conversion from type %<mfloat8_t%>"
  msgstr "ugyldig konvertering fra %<__fpreg%>"
  
! #: config/aarch64/aarch64.cc:22762
  #, fuzzy
  #| msgid "invalid conversion to type `%T' from type `%T'"
  msgid "invalid conversion to type %<mfloat8_t%>"
  msgstr "ugyldig omdannelse til typen '%T' fra typen '%T'"
  
! #: config/aarch64/aarch64.cc:29725 config/aarch64/aarch64.cc:29748
  msgid "operation not permitted on type %<mfloat8_t%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29743
  #, fuzzy
  #| msgid "invalid operands to binary %s"
  msgid "cannot combine GNU and SVE vectors in a binary operation"
  msgstr "ugyldige operander til binÃ¦r %s"
  
! #: config/alpha/alpha.cc:5783 config/i386/i386.cc:14075
  #: config/rs6000/rs6000.cc:14674 config/sparc/sparc.cc:9400
  #, c-format
  msgid "'%%&' used without any local dynamic TLS references"
  msgstr "Â»%%&Â« brugt uden nogle lokale dynamiske TLS-referencer"
  
! #: config/alpha/alpha.cc:5841 config/bfin/bfin.cc:1428
  #, c-format
  msgid "invalid %%J value"
  msgstr "ugyldig %%J-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:5871 config/ia64/ia64.cc:5592 config/or1k/or1k.cc:1252
  #, c-format
  msgid "invalid %%r value"
  msgstr "ugyldig %%r-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:5881 config/ia64/ia64.cc:5546
  #: config/rs6000/rs6000.cc:14369 config/xtensa/xtensa.cc:3144
  #, c-format
  msgid "invalid %%R value"
  msgstr "ugyldig %%R-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:5887 config/rs6000/rs6000.cc:14289
  #: config/xtensa/xtensa.cc:3117
  #, c-format
  msgid "invalid %%N value"
  msgstr "ugyldig %%N-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:5895 config/rs6000/rs6000.cc:14317
  #, c-format
  msgid "invalid %%P value"
  msgstr "ugyldig %%P-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:5903
  #, c-format
  msgid "invalid %%h value"
  msgstr "ugyldig %%h-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:5911 config/xtensa/xtensa.cc:3137
  #, c-format
  msgid "invalid %%L value"
  msgstr "ugyldig %%L-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:5930
  #, c-format
  msgid "invalid %%m value"
  msgstr "ugyldig %%m-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:5936
  #, c-format
  msgid "invalid %%M value"
  msgstr "ugyldig %%M-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:5973
  #, c-format
  msgid "invalid %%U value"
  msgstr "ugyldig %%U-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:5981 config/rs6000/rs6000.cc:14377
  #, c-format
  msgid "invalid %%s value"
  msgstr "ugyldig %%s-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:5992
  #, c-format
  msgid "invalid %%C value"
  msgstr "ugyldig %%C-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:6029 config/rs6000/rs6000.cc:14153
  #, c-format
  msgid "invalid %%E value"
  msgstr "ugyldig %%E-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:6054 config/alpha/alpha.cc:6104
  #, c-format
  msgid "unknown relocation unspec"
  msgstr "ukendt relokaliserings-unspec"
  
! #: config/alpha/alpha.cc:6063 config/gcn/gcn.cc:7341 config/gcn/gcn.cc:7350
  #: config/gcn/gcn.cc:7408 config/gcn/gcn.cc:7416 config/gcn/gcn.cc:7432
  #: config/gcn/gcn.cc:7450 config/gcn/gcn.cc:7501 config/gcn/gcn.cc:7620
  #: config/gcn/gcn.cc:7733 config/rs6000/rs6000.cc:14679
--- 21192,21341 ----
  msgid "invalid vector constant"
  msgstr "ugyldig konstant:"
  
! #: config/aarch64/aarch64.cc:12451
  #, c-format
  msgid "incompatible floating point / vector register operand for '%%%c'"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12463
  #, fuzzy, c-format
  #| msgid "invalid operand for '%%%c'"
  msgid "incompatible operand for '%%%c'"
  msgstr "ugyldig operand for Â»%%%cÂ«"
  
! #: config/aarch64/aarch64.cc:12483
  #, fuzzy, c-format
  #| msgid "invalid operand for '%%%c'"
  msgid "incompatible register operand for '%%%c'"
  msgstr "ugyldig operand for Â»%%%cÂ«"
  
! #: config/aarch64/aarch64.cc:12548 config/arm/arm.cc:24916
  #, c-format
  msgid "missing operand"
  msgstr "manglende operand"
  
! #: config/aarch64/aarch64.cc:12638
  #, c-format
  msgid "invalid constant"
  msgstr "ugyldig konstant:"
  
! #: config/aarch64/aarch64.cc:12641
  #, c-format
  msgid "invalid operand"
  msgstr "ugyldig operand"
  
! #: config/aarch64/aarch64.cc:12779 config/aarch64/aarch64.cc:12784
  #, c-format
  msgid "invalid operand prefix '%%%c'"
  msgstr "ugyldig operandprÃ¦fiks Â»%%%cÂ«"
  
! #: config/aarch64/aarch64.cc:12804
  #, fuzzy, c-format
  #| msgid "invalid addressing mode"
  msgid "invalid address mode"
  msgstr "ugyldig adresseringstilstand"
  
! #: config/aarch64/aarch64.cc:22775
  #, fuzzy
  #| msgid "invalid conversion from %<__fpreg%>"
  msgid "invalid conversion from type %<mfloat8_t%>"
  msgstr "ugyldig konvertering fra %<__fpreg%>"
  
! #: config/aarch64/aarch64.cc:22777
  #, fuzzy
  #| msgid "invalid conversion to type `%T' from type `%T'"
  msgid "invalid conversion to type %<mfloat8_t%>"
  msgstr "ugyldig omdannelse til typen '%T' fra typen '%T'"
  
! #: config/aarch64/aarch64.cc:29806 config/aarch64/aarch64.cc:29829
  msgid "operation not permitted on type %<mfloat8_t%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29824
  #, fuzzy
  #| msgid "invalid operands to binary %s"
  msgid "cannot combine GNU and SVE vectors in a binary operation"
  msgstr "ugyldige operander til binÃ¦r %s"
  
! #: config/alpha/alpha.cc:5780 config/i386/i386.cc:14077
  #: config/rs6000/rs6000.cc:14674 config/sparc/sparc.cc:9400
  #, c-format
  msgid "'%%&' used without any local dynamic TLS references"
  msgstr "Â»%%&Â« brugt uden nogle lokale dynamiske TLS-referencer"
  
! #: config/alpha/alpha.cc:5838 config/bfin/bfin.cc:1428
  #, c-format
  msgid "invalid %%J value"
  msgstr "ugyldig %%J-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:5868 config/ia64/ia64.cc:5592 config/or1k/or1k.cc:1252
  #, c-format
  msgid "invalid %%r value"
  msgstr "ugyldig %%r-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:5878 config/ia64/ia64.cc:5546
  #: config/rs6000/rs6000.cc:14369 config/xtensa/xtensa.cc:3144
  #, c-format
  msgid "invalid %%R value"
  msgstr "ugyldig %%R-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:5884 config/rs6000/rs6000.cc:14289
  #: config/xtensa/xtensa.cc:3117
  #, c-format
  msgid "invalid %%N value"
  msgstr "ugyldig %%N-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:5892 config/rs6000/rs6000.cc:14317
  #, c-format
  msgid "invalid %%P value"
  msgstr "ugyldig %%P-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:5900
  #, c-format
  msgid "invalid %%h value"
  msgstr "ugyldig %%h-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:5908 config/xtensa/xtensa.cc:3137
  #, c-format
  msgid "invalid %%L value"
  msgstr "ugyldig %%L-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:5927
  #, c-format
  msgid "invalid %%m value"
  msgstr "ugyldig %%m-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:5933
  #, c-format
  msgid "invalid %%M value"
  msgstr "ugyldig %%M-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:5970
  #, c-format
  msgid "invalid %%U value"
  msgstr "ugyldig %%U-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:5978 config/rs6000/rs6000.cc:14377
  #, c-format
  msgid "invalid %%s value"
  msgstr "ugyldig %%s-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:5989
  #, c-format
  msgid "invalid %%C value"
  msgstr "ugyldig %%C-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:6026 config/rs6000/rs6000.cc:14153
  #, c-format
  msgid "invalid %%E value"
  msgstr "ugyldig %%E-vÃ¦rdi"
  
! #: config/alpha/alpha.cc:6051 config/alpha/alpha.cc:6101
  #, c-format
  msgid "unknown relocation unspec"
  msgstr "ukendt relokaliserings-unspec"
  
! #: config/alpha/alpha.cc:6060 config/gcn/gcn.cc:7341 config/gcn/gcn.cc:7350
  #: config/gcn/gcn.cc:7408 config/gcn/gcn.cc:7416 config/gcn/gcn.cc:7432
  #: config/gcn/gcn.cc:7450 config/gcn/gcn.cc:7501 config/gcn/gcn.cc:7620
  #: config/gcn/gcn.cc:7733 config/rs6000/rs6000.cc:14679
*************** msgstr "ukendt relokaliserings-unspec"
*** 21333,21339 ****
  msgid "invalid %%xn code"
  msgstr "ugyldig %%xn-kode"
  
! #: config/alpha/alpha.cc:6169
  #, c-format
  msgid "invalid operand address"
  msgstr "ugyldig operandadresse"
--- 21343,21349 ----
  msgid "invalid %%xn code"
  msgstr "ugyldig %%xn-kode"
  
! #: config/alpha/alpha.cc:6166
  #, c-format
  msgid "invalid operand address"
  msgstr "ugyldig operandadresse"
*************** msgstr "uventet operand"
*** 21653,21661 ****
  #: config/cris/cris.cc:783 config/ft32/ft32.cc:110 config/moxie/moxie.cc:108
  #: cobol/dts.h:71 final.cc:3194 final.cc:3196 fold-const.cc:347 gcc.cc:6299
  #: gcc.cc:6313 rtl-error.cc:101 toplev.cc:322 cobol/gcobolspec.cc:366
! #: cobol/gcobolspec.cc:440 cobol/gcobolspec.cc:450 cobol/gcobolspec.cc:525
! #: cp/logic.cc:311 cp/logic.cc:313 cp/typeck.cc:7836 d/d-convert.cc:237
! #: go/go-gcc-diagnostics.cc:28 go/go-gcc-diagnostics.cc:37
  #: go/go-gcc-diagnostics.cc:45 go/go-gcc-diagnostics.cc:53
  #: lto/lto-object.cc:180 lto/lto-object.cc:277 lto/lto-object.cc:334
  #: lto/lto-object.cc:358 m2/gm2-gcc/m2linemap.cc:183
--- 21663,21671 ----
  #: config/cris/cris.cc:783 config/ft32/ft32.cc:110 config/moxie/moxie.cc:108
  #: cobol/dts.h:71 final.cc:3194 final.cc:3196 fold-const.cc:347 gcc.cc:6299
  #: gcc.cc:6313 rtl-error.cc:101 toplev.cc:322 cobol/gcobolspec.cc:366
! #: cobol/gcobolspec.cc:440 cobol/gcobolspec.cc:450 cobol/gcobolspec.cc:534
! #: cobol/genutil.cc:1268 cp/logic.cc:311 cp/logic.cc:313 cp/typeck.cc:7952
! #: d/d-convert.cc:237 go/go-gcc-diagnostics.cc:28 go/go-gcc-diagnostics.cc:37
  #: go/go-gcc-diagnostics.cc:45 go/go-gcc-diagnostics.cc:53
  #: lto/lto-object.cc:180 lto/lto-object.cc:277 lto/lto-object.cc:334
  #: lto/lto-object.cc:358 m2/gm2-gcc/m2linemap.cc:183
*************** msgstr "ugyldig konstant:"
*** 21903,22036 ****
  msgid "Expected register or constant integer."
  msgstr "']' forventet, ugyldigt typeudtryk"
  
! #: config/i386/i386.cc:12884
  #, c-format
  msgid "invalid UNSPEC as operand"
  msgstr "ugyldig UNSPEC som operand"
  
! #: config/i386/i386.cc:13423
  #, fuzzy, c-format
  #| msgid "invalid use of `restrict'"
  msgid "invalid use of register '%s'"
  msgstr "ugyldig brug af 'restrict'"
  
! #: config/i386/i386.cc:13428
  #, c-format
  msgid "invalid use of asm flag output"
  msgstr "ugyldig brug af asm-flaguddata"
  
! #: config/i386/i386.cc:13662
  #, c-format
  msgid "invalid operand size for operand code 'O'"
  msgstr "ugyldig operandstÃ¸rrelse for operandkoden Â»OÂ«"
  
! #: config/i386/i386.cc:13697
  #, c-format
  msgid "invalid operand size for operand code 'z'"
  msgstr "ugyldig operandstÃ¸rrelse for operandkoden Â»zÂ«"
  
! #: config/i386/i386.cc:13772
  #, fuzzy, c-format
  #| msgid "invalid operand type used with operand code 'Z'"
  msgid "invalid operand type used with operand code '%c'"
  msgstr "ugyldig operandtype brugt med operandkoden Â»ZÂ«"
  
! #: config/i386/i386.cc:13777
  #, fuzzy, c-format
  #| msgid "invalid operand size for operand code 'O'"
  msgid "invalid operand size for operand code '%c'"
  msgstr "ugyldig operandstÃ¸rrelse for operandkoden Â»OÂ«"
  
! #: config/i386/i386.cc:13855
  #, c-format
  msgid "operand is not a condition code, invalid operand code 'Y'"
  msgstr "operand er ikke en betingelseskode, ugyldig operandkode Â»YÂ«"
  
! #: config/i386/i386.cc:13934
  #, c-format
  msgid "operand is not a condition code, invalid operand code 'D'"
  msgstr "operand er ikke en betingelseskode, ugyldig operandkode Â»DÂ«"
  
! #: config/i386/i386.cc:13952
  #, c-format
  msgid "operand is not a condition code, invalid operand code '%c'"
  msgstr "operand er ikke en betingelseskode, ugyldig operandkode Â»%cÂ«"
  
! #: config/i386/i386.cc:13973
  #, c-format
  msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
  msgstr "operand er ikke en offsettable-hukommelsesreference, ugyldig operandkode Â»HÂ«"
  
! #: config/i386/i386.cc:13988
  #, c-format
  msgid "operand is not an integer, invalid operand code 'K'"
  msgstr "operand er ikke et heltal, ugyldig operandkode Â»KÂ«"
  
! #: config/i386/i386.cc:14016
  #, c-format
  msgid "operand is not a specific integer, invalid operand code 'r'"
  msgstr "operand er ikke et specifikt heltal, ugyldig operandkode Â»rÂ«"
  
! #: config/i386/i386.cc:14034
  #, c-format
  msgid "operand is not an integer, invalid operand code 'R'"
  msgstr "operand er ikke et heltal, ugyldig operandkode Â»RÂ«"
  
! #: config/i386/i386.cc:14057
  #, fuzzy, c-format
  #| msgid "operand is not a specific integer, invalid operand code 'r'"
  msgid "operand is not a specific integer, invalid operand code 'R'"
  msgstr "operand er ikke et specifikt heltal, ugyldig operandkode Â»rÂ«"
  
! #: config/i386/i386.cc:14150
  #, c-format
  msgid "invalid operand code '%c'"
  msgstr "ugyldig operandkode Â»%cÂ«"
  
! #: config/i386/i386.cc:14212 config/i386/i386.cc:14601
  #, c-format
  msgid "invalid constraints for operand"
  msgstr "ugyldige begrÃ¦nsninger for operand"
  
! #: config/i386/i386.cc:14313
  #, fuzzy, c-format
  #| msgid "invalid constant"
  msgid "invalid vector immediate"
  msgstr "ugyldig konstant:"
  
! #: config/i386/i386.cc:17483
  msgid "unknown insn mode"
  msgstr "ukendt instruktionstilstand"
  
! #: config/i386/i386.cc:24021
  #, fuzzy
  #| msgid "invalid conversion from %<__fpreg%>"
  msgid "invalid conversion from type %<__bf16%> without option %<-msse2%>"
  msgstr "ugyldig konvertering fra %<__fpreg%>"
  
! #: config/i386/i386.cc:24024
  #, fuzzy
  #| msgid "invalid conversion from %<__fpreg%>"
  msgid "invalid conversion from type %<_Float16%> without option %<-msse2%>"
  msgstr "ugyldig konvertering fra %<__fpreg%>"
  
! #: config/i386/i386.cc:24027
  #, fuzzy
  #| msgid "invalid conversion to %<__fpreg%>"
  msgid "invalid conversion to type %<__bf16%> without option %<-msse2%>"
  msgstr "ugyldig konvertering til %<__fpreg%>"
  
! #: config/i386/i386.cc:24030
  #, fuzzy
  #| msgid "invalid conversion to type `%T' from type `%T'"
  msgid "invalid conversion to type %<_Float16%> without option %<-msse2%>"
  msgstr "ugyldig omdannelse til typen '%T' fra typen '%T'"
  
! #: config/i386/i386.cc:24068 config/i386/i386.cc:24093
  msgid "operation not permitted on type %<__bf16%> without option %<-msse2%>"
  msgstr ""
  
! #: config/i386/i386.cc:24071 config/i386/i386.cc:24097
  msgid "operation not permitted on type %<_Float16%> without option %<-msse2%>"
  msgstr ""
  
--- 21913,22046 ----
  msgid "Expected register or constant integer."
  msgstr "']' forventet, ugyldigt typeudtryk"
  
! #: config/i386/i386.cc:12886
  #, c-format
  msgid "invalid UNSPEC as operand"
  msgstr "ugyldig UNSPEC som operand"
  
! #: config/i386/i386.cc:13425
  #, fuzzy, c-format
  #| msgid "invalid use of `restrict'"
  msgid "invalid use of register '%s'"
  msgstr "ugyldig brug af 'restrict'"
  
! #: config/i386/i386.cc:13430
  #, c-format
  msgid "invalid use of asm flag output"
  msgstr "ugyldig brug af asm-flaguddata"
  
! #: config/i386/i386.cc:13664
  #, c-format
  msgid "invalid operand size for operand code 'O'"
  msgstr "ugyldig operandstÃ¸rrelse for operandkoden Â»OÂ«"
  
! #: config/i386/i386.cc:13699
  #, c-format
  msgid "invalid operand size for operand code 'z'"
  msgstr "ugyldig operandstÃ¸rrelse for operandkoden Â»zÂ«"
  
! #: config/i386/i386.cc:13774
  #, fuzzy, c-format
  #| msgid "invalid operand type used with operand code 'Z'"
  msgid "invalid operand type used with operand code '%c'"
  msgstr "ugyldig operandtype brugt med operandkoden Â»ZÂ«"
  
! #: config/i386/i386.cc:13779
  #, fuzzy, c-format
  #| msgid "invalid operand size for operand code 'O'"
  msgid "invalid operand size for operand code '%c'"
  msgstr "ugyldig operandstÃ¸rrelse for operandkoden Â»OÂ«"
  
! #: config/i386/i386.cc:13857
  #, c-format
  msgid "operand is not a condition code, invalid operand code 'Y'"
  msgstr "operand er ikke en betingelseskode, ugyldig operandkode Â»YÂ«"
  
! #: config/i386/i386.cc:13936
  #, c-format
  msgid "operand is not a condition code, invalid operand code 'D'"
  msgstr "operand er ikke en betingelseskode, ugyldig operandkode Â»DÂ«"
  
! #: config/i386/i386.cc:13954
  #, c-format
  msgid "operand is not a condition code, invalid operand code '%c'"
  msgstr "operand er ikke en betingelseskode, ugyldig operandkode Â»%cÂ«"
  
! #: config/i386/i386.cc:13975
  #, c-format
  msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
  msgstr "operand er ikke en offsettable-hukommelsesreference, ugyldig operandkode Â»HÂ«"
  
! #: config/i386/i386.cc:13990
  #, c-format
  msgid "operand is not an integer, invalid operand code 'K'"
  msgstr "operand er ikke et heltal, ugyldig operandkode Â»KÂ«"
  
! #: config/i386/i386.cc:14018
  #, c-format
  msgid "operand is not a specific integer, invalid operand code 'r'"
  msgstr "operand er ikke et specifikt heltal, ugyldig operandkode Â»rÂ«"
  
! #: config/i386/i386.cc:14036
  #, c-format
  msgid "operand is not an integer, invalid operand code 'R'"
  msgstr "operand er ikke et heltal, ugyldig operandkode Â»RÂ«"
  
! #: config/i386/i386.cc:14059
  #, fuzzy, c-format
  #| msgid "operand is not a specific integer, invalid operand code 'r'"
  msgid "operand is not a specific integer, invalid operand code 'R'"
  msgstr "operand er ikke et specifikt heltal, ugyldig operandkode Â»rÂ«"
  
! #: config/i386/i386.cc:14152
  #, c-format
  msgid "invalid operand code '%c'"
  msgstr "ugyldig operandkode Â»%cÂ«"
  
! #: config/i386/i386.cc:14214 config/i386/i386.cc:14603
  #, c-format
  msgid "invalid constraints for operand"
  msgstr "ugyldige begrÃ¦nsninger for operand"
  
! #: config/i386/i386.cc:14315
  #, fuzzy, c-format
  #| msgid "invalid constant"
  msgid "invalid vector immediate"
  msgstr "ugyldig konstant:"
  
! #: config/i386/i386.cc:17485
  msgid "unknown insn mode"
  msgstr "ukendt instruktionstilstand"
  
! #: config/i386/i386.cc:24023
  #, fuzzy
  #| msgid "invalid conversion from %<__fpreg%>"
  msgid "invalid conversion from type %<__bf16%> without option %<-msse2%>"
  msgstr "ugyldig konvertering fra %<__fpreg%>"
  
! #: config/i386/i386.cc:24026
  #, fuzzy
  #| msgid "invalid conversion from %<__fpreg%>"
  msgid "invalid conversion from type %<_Float16%> without option %<-msse2%>"
  msgstr "ugyldig konvertering fra %<__fpreg%>"
  
! #: config/i386/i386.cc:24029
  #, fuzzy
  #| msgid "invalid conversion to %<__fpreg%>"
  msgid "invalid conversion to type %<__bf16%> without option %<-msse2%>"
  msgstr "ugyldig konvertering til %<__fpreg%>"
  
! #: config/i386/i386.cc:24032
  #, fuzzy
  #| msgid "invalid conversion to type `%T' from type `%T'"
  msgid "invalid conversion to type %<_Float16%> without option %<-msse2%>"
  msgstr "ugyldig omdannelse til typen '%T' fra typen '%T'"
  
! #: config/i386/i386.cc:24070 config/i386/i386.cc:24095
  msgid "operation not permitted on type %<__bf16%> without option %<-msse2%>"
  msgstr ""
  
! #: config/i386/i386.cc:24073 config/i386/i386.cc:24099
  msgid "operation not permitted on type %<_Float16%> without option %<-msse2%>"
  msgstr ""
  
*************** msgstr "ugyldig adresse"
*** 22151,22187 ****
  msgid "lo_sum not of register"
  msgstr "lo_sum ikke af register"
  
! #: config/microblaze/microblaze.cc:2299
  #, c-format
  msgid "unknown punctuation '%c'"
  msgstr "ukendt tegnsÃ¦tning Â»%cÂ«"
  
! #: config/microblaze/microblaze.cc:2308
  #, fuzzy, c-format
  #| msgid "pointer"
  msgid "null pointer"
  msgstr "henvisning"
  
! #: config/microblaze/microblaze.cc:2343
  #, c-format
  msgid "PRINT_OPERAND, invalid insn for %%C"
  msgstr "PRINT_OPERAND, ugyldig instruktion for %%C"
  
! #: config/microblaze/microblaze.cc:2372
  #, c-format
  msgid "PRINT_OPERAND, invalid insn for %%N"
  msgstr "PRINT_OPERAND, ugyldig instruktion for %%N"
  
! #: config/microblaze/microblaze.cc:2392 config/microblaze/microblaze.cc:2568
  msgid "insn contains an invalid address !"
  msgstr "instruktion indeholder en ugyldig adresse!"
  
! #: config/microblaze/microblaze.cc:2408 config/microblaze/microblaze.cc:2638
  #: config/xtensa/xtensa.cc:3240
  msgid "invalid address"
  msgstr "ugyldig adresse"
  
! #: config/microblaze/microblaze.cc:2511
  #, c-format
  msgid "letter %c was found & insn was not CONST_INT"
  msgstr "bogstavet %c blev fundet og instruktionen var ikke CONST_INT"
--- 22161,22197 ----
  msgid "lo_sum not of register"
  msgstr "lo_sum ikke af register"
  
! #: config/microblaze/microblaze.cc:2303
  #, c-format
  msgid "unknown punctuation '%c'"
  msgstr "ukendt tegnsÃ¦tning Â»%cÂ«"
  
! #: config/microblaze/microblaze.cc:2312
  #, fuzzy, c-format
  #| msgid "pointer"
  msgid "null pointer"
  msgstr "henvisning"
  
! #: config/microblaze/microblaze.cc:2347
  #, c-format
  msgid "PRINT_OPERAND, invalid insn for %%C"
  msgstr "PRINT_OPERAND, ugyldig instruktion for %%C"
  
! #: config/microblaze/microblaze.cc:2376
  #, c-format
  msgid "PRINT_OPERAND, invalid insn for %%N"
  msgstr "PRINT_OPERAND, ugyldig instruktion for %%N"
  
! #: config/microblaze/microblaze.cc:2396 config/microblaze/microblaze.cc:2572
  msgid "insn contains an invalid address !"
  msgstr "instruktion indeholder en ugyldig adresse!"
  
! #: config/microblaze/microblaze.cc:2412 config/microblaze/microblaze.cc:2642
  #: config/xtensa/xtensa.cc:3240
  msgid "invalid address"
  msgstr "ugyldig adresse"
  
! #: config/microblaze/microblaze.cc:2515
  #, c-format
  msgid "letter %c was found & insn was not CONST_INT"
  msgstr "bogstavet %c blev fundet og instruktionen var ikke CONST_INT"
*************** msgstr "Benyt hardware-kommatalsinstrukt
*** 22510,22546 ****
  msgid "AltiVec argument passed to unprototyped function"
  msgstr "AltiVec-parameter sendt til funktion uden prototype"
  
! #: config/rs6000/rs6000.cc:28020
  msgid "Could not generate addis value for fusion"
  msgstr "Kunne ikke generere addis-vÃ¦rdi for fusion"
  
! #: config/rs6000/rs6000.cc:28089
  msgid "Unable to generate load/store offset for fusion"
  msgstr "Kunne ikke generere indlÃ¦sning/lagring af forskydning for fusion"
  
! #: config/rs6000/rs6000.cc:28165
  msgid "Bad GPR fusion"
  msgstr "Ugyldig GPR-fusion"
  
! #: config/rs6000/rs6000.cc:28767
  #, fuzzy
  #| msgid "invalid conversion from %<__fpreg%>"
  msgid "invalid conversion from type %<__vector_quad%>"
  msgstr "ugyldig konvertering fra %<__fpreg%>"
  
! #: config/rs6000/rs6000.cc:28769
  #, fuzzy
  #| msgid "invalid conversion to %<__fpreg%>"
  msgid "invalid conversion to type %<__vector_quad%>"
  msgstr "ugyldig konvertering til %<__fpreg%>"
  
! #: config/rs6000/rs6000.cc:28771
  #, fuzzy
  #| msgid "invalid conversion from %<__fpreg%>"
  msgid "invalid conversion from type %<__vector_pair%>"
  msgstr "ugyldig konvertering fra %<__fpreg%>"
  
! #: config/rs6000/rs6000.cc:28773
  #, fuzzy
  #| msgid "invalid conversion to %<__fpreg%>"
  msgid "invalid conversion to type %<__vector_pair%>"
--- 22520,22556 ----
  msgid "AltiVec argument passed to unprototyped function"
  msgstr "AltiVec-parameter sendt til funktion uden prototype"
  
! #: config/rs6000/rs6000.cc:28023
  msgid "Could not generate addis value for fusion"
  msgstr "Kunne ikke generere addis-vÃ¦rdi for fusion"
  
! #: config/rs6000/rs6000.cc:28092
  msgid "Unable to generate load/store offset for fusion"
  msgstr "Kunne ikke generere indlÃ¦sning/lagring af forskydning for fusion"
  
! #: config/rs6000/rs6000.cc:28168
  msgid "Bad GPR fusion"
  msgstr "Ugyldig GPR-fusion"
  
! #: config/rs6000/rs6000.cc:28770
  #, fuzzy
  #| msgid "invalid conversion from %<__fpreg%>"
  msgid "invalid conversion from type %<__vector_quad%>"
  msgstr "ugyldig konvertering fra %<__fpreg%>"
  
! #: config/rs6000/rs6000.cc:28772
  #, fuzzy
  #| msgid "invalid conversion to %<__fpreg%>"
  msgid "invalid conversion to type %<__vector_quad%>"
  msgstr "ugyldig konvertering til %<__fpreg%>"
  
! #: config/rs6000/rs6000.cc:28774
  #, fuzzy
  #| msgid "invalid conversion from %<__fpreg%>"
  msgid "invalid conversion from type %<__vector_pair%>"
  msgstr "ugyldig konvertering fra %<__fpreg%>"
  
! #: config/rs6000/rs6000.cc:28776
  #, fuzzy
  #| msgid "invalid conversion to %<__fpreg%>"
  msgid "invalid conversion to type %<__vector_pair%>"
*************** msgstr "ugyldig udtryk til uddataÃ¦ndrin
*** 22626,22644 ****
  msgid "vector argument passed to unprototyped function"
  msgstr "vektorparameter sendt til funktion uden prototype"
  
! #: config/s390/s390.cc:17350
  msgid "types differ in signedness"
  msgstr "typer er forskellige i signedness"
  
! #: config/s390/s390.cc:17360
  msgid "binary operator does not support two vector bool operands"
  msgstr "binÃ¦r operator understÃ¸tter ikke tovektor bool-operand"
  
! #: config/s390/s390.cc:17363
  msgid "binary operator does not support vector bool operand"
  msgstr "binÃ¦r operator understÃ¸tter ikke vektor bool-operand"
  
! #: config/s390/s390.cc:17371
  msgid "binary operator does not support mixing vector bool with floating point vector operands"
  msgstr "binÃ¦r operator understÃ¸tter ikke at blande vektor bool med kommatals vektor-operand"
  
--- 22636,22654 ----
  msgid "vector argument passed to unprototyped function"
  msgstr "vektorparameter sendt til funktion uden prototype"
  
! #: config/s390/s390.cc:17377
  msgid "types differ in signedness"
  msgstr "typer er forskellige i signedness"
  
! #: config/s390/s390.cc:17387
  msgid "binary operator does not support two vector bool operands"
  msgstr "binÃ¦r operator understÃ¸tter ikke tovektor bool-operand"
  
! #: config/s390/s390.cc:17390
  msgid "binary operator does not support vector bool operand"
  msgstr "binÃ¦r operator understÃ¸tter ikke vektor bool-operand"
  
! #: config/s390/s390.cc:17398
  msgid "binary operator does not support mixing vector bool with floating point vector operands"
  msgstr "binÃ¦r operator understÃ¸tter ikke at blande vektor bool med kommatals vektor-operand"
  
*************** msgstr "<anonym %s>"
*** 22813,22819 ****
  msgid "aka"
  msgstr "aka"
  
! #: c/c-objc-common.cc:385 c/c-typeck.cc:7714
  msgid "({anonymous})"
  msgstr "({anonym})"
  
--- 22823,22829 ----
  msgid "aka"
  msgstr "aka"
  
! #: c/c-objc-common.cc:385 c/c-typeck.cc:7715
  msgid "({anonymous})"
  msgstr "({anonym})"
  
*************** msgstr "({anonym})"
*** 22826,22864 ****
  #. ;
  #. <~~~~~~~~~ declaration ~~~~~~~~~~>
  #. Use c_parser_require to get an error with a fix-it hint.
! #: c/c-parser.cc:3089 c/c-parser.cc:3279 c/c-parser.cc:3293 c/c-parser.cc:7502
! #: c/c-parser.cc:8356 c/c-parser.cc:8934 c/c-parser.cc:9126 c/c-parser.cc:9159
! #: c/c-parser.cc:9457 c/c-parser.cc:14304 c/c-parser.cc:14339
! #: c/c-parser.cc:14370 c/c-parser.cc:14417 c/c-parser.cc:14598
! #: c/c-parser.cc:15431 c/c-parser.cc:15506 c/c-parser.cc:15549
! #: c/c-parser.cc:23037 c/c-parser.cc:23117 c/c-parser.cc:23446
! #: c/c-parser.cc:23472 c/c-parser.cc:23495 c/c-parser.cc:24181
! #: c/c-parser.cc:24224 c/c-parser.cc:25491 c/gimple-parser.cc:454
  #: c/gimple-parser.cc:495 c/gimple-parser.cc:504 c/gimple-parser.cc:723
  #: c/gimple-parser.cc:2437 c/gimple-parser.cc:2474 c/gimple-parser.cc:2553
! #: c/gimple-parser.cc:2580 c/c-parser.cc:4141 c/c-parser.cc:4332
! #: c/c-parser.cc:4367 c/c-parser.cc:14591 c/gimple-parser.cc:2244
! #: c/gimple-parser.cc:2256 cp/parser.cc:16475 cp/parser.cc:34635
! #: cp/parser.cc:35274
  #, gcc-internal-format
  msgid "expected %<;%>"
  msgstr "%<;%> forventet"
  
! #: c/c-parser.cc:3251 c/c-parser.cc:9417
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<:%> or %<::%>"
  msgid "expected %<:%> or %<)%>"
  msgstr "forventede %<:%> or %<::%>"
  
! #: c/c-parser.cc:3790 c/c-parser.cc:4943 c/c-parser.cc:5135 c/c-parser.cc:5193
! #: c/c-parser.cc:5251 c/c-parser.cc:5635 c/c-parser.cc:5658 c/c-parser.cc:5667
! #: c/c-parser.cc:5718 c/c-parser.cc:5727 c/c-parser.cc:10892
! #: c/c-parser.cc:10978 c/c-parser.cc:11552 c/c-parser.cc:11578
! #: c/c-parser.cc:11612 c/c-parser.cc:11825 c/c-parser.cc:12697
! #: c/c-parser.cc:14705 c/c-parser.cc:17345 c/c-parser.cc:18080
! #: c/c-parser.cc:18139 c/c-parser.cc:18194 c/c-parser.cc:20053
! #: c/c-parser.cc:20173 c/c-parser.cc:22130 c/c-parser.cc:23537
! #: c/c-parser.cc:24189 c/c-parser.cc:28016 c/c-parser.cc:28098
  #: c/gimple-parser.cc:238 c/gimple-parser.cc:241 c/gimple-parser.cc:589
  #: c/gimple-parser.cc:623 c/gimple-parser.cc:628 c/gimple-parser.cc:807
  #: c/gimple-parser.cc:904 c/gimple-parser.cc:1175 c/gimple-parser.cc:1201
--- 22836,22874 ----
  #. ;
  #. <~~~~~~~~~ declaration ~~~~~~~~~~>
  #. Use c_parser_require to get an error with a fix-it hint.
! #: c/c-parser.cc:3134 c/c-parser.cc:3324 c/c-parser.cc:3338 c/c-parser.cc:7547
! #: c/c-parser.cc:8401 c/c-parser.cc:8979 c/c-parser.cc:9171 c/c-parser.cc:9204
! #: c/c-parser.cc:9502 c/c-parser.cc:14349 c/c-parser.cc:14384
! #: c/c-parser.cc:14415 c/c-parser.cc:14462 c/c-parser.cc:14643
! #: c/c-parser.cc:15476 c/c-parser.cc:15551 c/c-parser.cc:15594
! #: c/c-parser.cc:23082 c/c-parser.cc:23162 c/c-parser.cc:23491
! #: c/c-parser.cc:23517 c/c-parser.cc:23540 c/c-parser.cc:24226
! #: c/c-parser.cc:24269 c/c-parser.cc:25536 c/gimple-parser.cc:454
  #: c/gimple-parser.cc:495 c/gimple-parser.cc:504 c/gimple-parser.cc:723
  #: c/gimple-parser.cc:2437 c/gimple-parser.cc:2474 c/gimple-parser.cc:2553
! #: c/gimple-parser.cc:2580 c/c-parser.cc:4186 c/c-parser.cc:4377
! #: c/c-parser.cc:4412 c/c-parser.cc:14636 c/gimple-parser.cc:2244
! #: c/gimple-parser.cc:2256 cp/parser.cc:16479 cp/parser.cc:34694
! #: cp/parser.cc:35333
  #, gcc-internal-format
  msgid "expected %<;%>"
  msgstr "%<;%> forventet"
  
! #: c/c-parser.cc:3296 c/c-parser.cc:9462
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<:%> or %<::%>"
  msgid "expected %<:%> or %<)%>"
  msgstr "forventede %<:%> or %<::%>"
  
! #: c/c-parser.cc:3835 c/c-parser.cc:4988 c/c-parser.cc:5180 c/c-parser.cc:5238
! #: c/c-parser.cc:5296 c/c-parser.cc:5680 c/c-parser.cc:5703 c/c-parser.cc:5712
! #: c/c-parser.cc:5763 c/c-parser.cc:5772 c/c-parser.cc:10937
! #: c/c-parser.cc:11023 c/c-parser.cc:11597 c/c-parser.cc:11623
! #: c/c-parser.cc:11657 c/c-parser.cc:11870 c/c-parser.cc:12742
! #: c/c-parser.cc:14750 c/c-parser.cc:17390 c/c-parser.cc:18125
! #: c/c-parser.cc:18184 c/c-parser.cc:18239 c/c-parser.cc:20098
! #: c/c-parser.cc:20218 c/c-parser.cc:22175 c/c-parser.cc:23582
! #: c/c-parser.cc:24234 c/c-parser.cc:28062 c/c-parser.cc:28144
  #: c/gimple-parser.cc:238 c/gimple-parser.cc:241 c/gimple-parser.cc:589
  #: c/gimple-parser.cc:623 c/gimple-parser.cc:628 c/gimple-parser.cc:807
  #: c/gimple-parser.cc:904 c/gimple-parser.cc:1175 c/gimple-parser.cc:1201
*************** msgstr "forventede %<:%> or %<::%>"
*** 22866,23017 ****
  #: c/gimple-parser.cc:1592 c/gimple-parser.cc:1608 c/gimple-parser.cc:1664
  #: c/gimple-parser.cc:1691 c/gimple-parser.cc:1721 c/gimple-parser.cc:1747
  #: c/gimple-parser.cc:1954 c/gimple-parser.cc:2166 c/gimple-parser.cc:2186
! #: c/gimple-parser.cc:2347 c/gimple-parser.cc:2510 c/c-parser.cc:3242
! #: c/c-parser.cc:9409 c/c-parser.cc:20746 cp/parser.cc:35322 cp/parser.cc:43032
  #, gcc-internal-format
  msgid "expected %<)%>"
  msgstr "%<)%> forventet"
  
! #: c/c-parser.cc:5029 c/c-parser.cc:5778 c/c-parser.cc:6138 c/c-parser.cc:6156
! #: c/c-parser.cc:6157 c/c-parser.cc:6660 c/c-parser.cc:6704 c/c-parser.cc:9508
! #: c/c-parser.cc:11816 c/c-parser.cc:13270 c/c-parser.cc:13642
! #: c/c-parser.cc:16667 c/gimple-parser.cc:1930 cp/parser.cc:35286
  #, gcc-internal-format
  msgid "expected %<]%>"
  msgstr "%<]%> forventet"
  
! #: c/c-parser.cc:5231
  msgid "expected %<;%>, %<,%> or %<)%>"
  msgstr "%<;%>, %<,%> eller %<)%> forventet"
  
  #. Look for the two `(' tokens.
! #: c/c-parser.cc:5687 c/c-parser.cc:5692 c/c-parser.cc:17328
! #: c/c-parser.cc:18169 c/c-parser.cc:20554 c/c-parser.cc:20653
! #: c/c-parser.cc:26832 c/c-parser.cc:27136 c/c-parser.cc:27824
! #: c/c-parser.cc:28041 c/gimple-parser.cc:223 c/gimple-parser.cc:536
  #: c/gimple-parser.cc:575 c/gimple-parser.cc:607 c/gimple-parser.cc:874
  #: c/gimple-parser.cc:1169 c/gimple-parser.cc:1195 c/gimple-parser.cc:1322
  #: c/gimple-parser.cc:1457 c/gimple-parser.cc:1582 c/gimple-parser.cc:1687
  #: c/gimple-parser.cc:1705 c/gimple-parser.cc:1740 c/gimple-parser.cc:2135
  #: c/gimple-parser.cc:2146 c/gimple-parser.cc:2152 c/gimple-parser.cc:2335
! #: c/gimple-parser.cc:2507 c/c-parser.cc:17109 cp/parser.cc:35277
  #, gcc-internal-format
  msgid "expected %<(%>"
  msgstr "%<(%> forventet"
  
! #: c/c-parser.cc:6134 c/c-parser.cc:6136 c/c-parser.cc:16572 cp/parser.cc:35289
! #: cp/parser.cc:39179 go/gofrontend/embed.cc:440
  #, gcc-internal-format
  msgid "expected %<[%>"
  msgstr "%<[%> forventet"
  
! #: c/c-parser.cc:6964 c/c-parser.cc:14934 c/c-parser.cc:20630
! #: c/c-parser.cc:23012 c/c-parser.cc:23098 c/c-parser.cc:23859
! #: c/c-parser.cc:24999 c/c-parser.cc:29820 c/gimple-parser.cc:447
! #: c/gimple-parser.cc:2513 c/c-parser.cc:4128 c/c-parser.cc:4356
! #: c/c-parser.cc:14486 cp/parser.cc:22203 cp/parser.cc:35283
  #: go/gofrontend/embed.cc:371
  #, gcc-internal-format
  msgid "expected %<{%>"
  msgstr "%<{%> forventet"
  
! #: c/c-parser.cc:7914 c/c-parser.cc:7923 c/c-parser.cc:9957 c/c-parser.cc:11136
! #: c/c-parser.cc:14698 c/c-parser.cc:15095 c/c-parser.cc:15159
! #: c/c-parser.cc:16649 c/c-parser.cc:17760 c/c-parser.cc:17997
! #: c/c-parser.cc:18550 c/c-parser.cc:18653 c/c-parser.cc:19194
! #: c/c-parser.cc:19630 c/c-parser.cc:19706 c/c-parser.cc:19823
! #: c/c-parser.cc:19895 c/c-parser.cc:20868 c/c-parser.cc:26702
! #: c/c-parser.cc:27881 c/c-parser.cc:27940 c/c-parser.cc:29142
! #: c/gimple-parser.cc:630 c/gimple-parser.cc:943 c/gimple-parser.cc:2561
! #: c/gimple-parser.cc:2588 c/c-parser.cc:9416 c/c-parser.cc:17253
! #: c/c-parser.cc:18658 cp/parser.cc:35316 cp/parser.cc:37023 cp/parser.cc:40119
! #: cp/parser.cc:41012 go/gofrontend/embed.cc:404
  #, gcc-internal-format
  msgid "expected %<:%>"
  msgstr "%<:%> forventet"
  
! #: c/c-parser.cc:8910 cp/parser.cc:35203
  #, gcc-internal-format
  msgid "expected %<while%>"
  msgstr "%<while%> forventet"
  
! #: c/c-parser.cc:10855 c/c-parser.cc:11085 c/c-parser.cc:11602
! #: c/c-parser.cc:11647 c/c-parser.cc:11740 c/c-parser.cc:11887
! #: c/c-parser.cc:12687 c/c-parser.cc:18174 c/c-parser.cc:19775
  #: c/gimple-parser.cc:1172 c/gimple-parser.cc:1198 c/gimple-parser.cc:1326
  #: c/gimple-parser.cc:1329 c/gimple-parser.cc:1709 c/gimple-parser.cc:1715
! #: cp/parser.cc:34633 cp/parser.cc:35292
  #, gcc-internal-format
  msgid "expected %<,%>"
  msgstr "%<,%> forventet"
  
! #: c/c-parser.cc:11496
  msgid "expected %<.%>"
  msgstr "%<.%> forventet"
  
! #: c/c-parser.cc:14157 c/c-parser.cc:14189 c/c-parser.cc:14429
! #: cp/parser.cc:37597 cp/parser.cc:37618
  #, gcc-internal-format
  msgid "expected %<@end%>"
  msgstr "%<@end%> forventet"
  
! #: c/c-parser.cc:14847 c/gimple-parser.cc:1497 cp/parser.cc:35301
  #, gcc-internal-format
  msgid "expected %<>%>"
  msgstr "%<>%> forventet"
  
! #: c/c-parser.cc:18748 c/c-parser.cc:20191 c/c-parser.cc:20617
! #: cp/parser.cc:35325 cp/parser.cc:42883
  #, gcc-internal-format
  msgid "expected %<,%> or %<)%>"
  msgstr "%<,%> eller %<)%> forventet"
  
  #. All following cases are statements with LHS.
! #: c/c-parser.cc:19622 c/c-parser.cc:22907 c/c-parser.cc:22952
! #: c/c-parser.cc:23109 c/c-parser.cc:23456 c/c-parser.cc:24168
! #: c/c-parser.cc:25374 c/c-parser.cc:26880 c/c-parser.cc:28082
! #: c/gimple-parser.cc:798 c/c-parser.cc:6727 c/c-parser.cc:23029
! #: c/c-parser.cc:23252 cp/parser.cc:35304 cp/parser.cc:44578 cp/parser.cc:44751
  #, gcc-internal-format
  msgid "expected %<=%>"
  msgstr "%<=%> forventet"
  
! #: c/c-parser.cc:20767 c/c-parser.cc:27145 c/c-parser.cc:27166
! #: c/c-parser.cc:16707 c/c-parser.cc:16719 c/c-parser.cc:20747
! #: cp/parser.cc:43033 cp/parser.cc:43060 cp/parser.cc:50600 cp/parser.cc:50611
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<,%> or %<)%>"
  msgid "expected %<)%> or %<,%>"
  msgstr "%<,%> eller %<)%> forventet"
  
! #: c/c-parser.cc:23040 c/c-parser.cc:23120 c/c-parser.cc:23473
! #: c/c-parser.cc:23928 c/gimple-parser.cc:1763 c/gimple-parser.cc:1795
! #: c/gimple-parser.cc:1805 c/gimple-parser.cc:2598 cp/parser.cc:35280
! #: cp/parser.cc:37807
  #, gcc-internal-format
  msgid "expected %<}%>"
  msgstr "%<}%> forventet"
  
! #: c/c-parser.cc:23133 cp/parser.cc:44676
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<delete%>"
  msgid "expected %<else%>"
  msgstr "forventede %<delete%>"
  
! #: c/c-parser.cc:25046 c/c-parser.cc:25035 cp/parser.cc:47606
  #, gcc-internal-format
  msgid "expected %<#pragma omp section%> or %<}%>"
  msgstr "%<#pragma omp section%> eller %<}%> forventet"
  
! #: c/c-parser.cc:28760 cp/parser.cc:52554
  msgid "<message unknown at compile time>"
  msgstr ""
  
! #: c/c-typeck.cc:9863
  msgid "(anonymous)"
  msgstr "(anonym)"
  
! #: c/gimple-parser.cc:1486 cp/parser.cc:19538 cp/parser.cc:35298
  #, gcc-internal-format
  msgid "expected %<<%>"
  msgstr "%<<%> forventet"
--- 22876,23028 ----
  #: c/gimple-parser.cc:1592 c/gimple-parser.cc:1608 c/gimple-parser.cc:1664
  #: c/gimple-parser.cc:1691 c/gimple-parser.cc:1721 c/gimple-parser.cc:1747
  #: c/gimple-parser.cc:1954 c/gimple-parser.cc:2166 c/gimple-parser.cc:2186
! #: c/gimple-parser.cc:2347 c/gimple-parser.cc:2510 c/c-parser.cc:3287
! #: c/c-parser.cc:9454 c/c-parser.cc:20791 cp/parser.cc:35381 cp/parser.cc:43091
  #, gcc-internal-format
  msgid "expected %<)%>"
  msgstr "%<)%> forventet"
  
! #: c/c-parser.cc:5074 c/c-parser.cc:5823 c/c-parser.cc:6183 c/c-parser.cc:6201
! #: c/c-parser.cc:6202 c/c-parser.cc:6705 c/c-parser.cc:6749 c/c-parser.cc:9553
! #: c/c-parser.cc:11861 c/c-parser.cc:13315 c/c-parser.cc:13687
! #: c/c-parser.cc:16712 c/gimple-parser.cc:1930 cp/parser.cc:35345
  #, gcc-internal-format
  msgid "expected %<]%>"
  msgstr "%<]%> forventet"
  
! #: c/c-parser.cc:5276
  msgid "expected %<;%>, %<,%> or %<)%>"
  msgstr "%<;%>, %<,%> eller %<)%> forventet"
  
  #. Look for the two `(' tokens.
! #: c/c-parser.cc:5732 c/c-parser.cc:5737 c/c-parser.cc:17373
! #: c/c-parser.cc:18214 c/c-parser.cc:20599 c/c-parser.cc:20698
! #: c/c-parser.cc:26875 c/c-parser.cc:27182 c/c-parser.cc:27870
! #: c/c-parser.cc:28087 c/gimple-parser.cc:223 c/gimple-parser.cc:536
  #: c/gimple-parser.cc:575 c/gimple-parser.cc:607 c/gimple-parser.cc:874
  #: c/gimple-parser.cc:1169 c/gimple-parser.cc:1195 c/gimple-parser.cc:1322
  #: c/gimple-parser.cc:1457 c/gimple-parser.cc:1582 c/gimple-parser.cc:1687
  #: c/gimple-parser.cc:1705 c/gimple-parser.cc:1740 c/gimple-parser.cc:2135
  #: c/gimple-parser.cc:2146 c/gimple-parser.cc:2152 c/gimple-parser.cc:2335
! #: c/gimple-parser.cc:2507 c/c-parser.cc:17154 cp/parser.cc:35336
  #, gcc-internal-format
  msgid "expected %<(%>"
  msgstr "%<(%> forventet"
  
! #: c/c-parser.cc:6179 c/c-parser.cc:6181 c/c-parser.cc:16617 cp/parser.cc:35348
! #: cp/parser.cc:39238 go/gofrontend/embed.cc:440
  #, gcc-internal-format
  msgid "expected %<[%>"
  msgstr "%<[%> forventet"
  
! #: c/c-parser.cc:7009 c/c-parser.cc:14979 c/c-parser.cc:20675
! #: c/c-parser.cc:23057 c/c-parser.cc:23143 c/c-parser.cc:23904
! #: c/c-parser.cc:25044 c/c-parser.cc:29863 c/gimple-parser.cc:447
! #: c/gimple-parser.cc:2513 c/c-parser.cc:4173 c/c-parser.cc:4401
! #: c/c-parser.cc:14531 cp/parser.cc:22207 cp/parser.cc:35342
  #: go/gofrontend/embed.cc:371
  #, gcc-internal-format
  msgid "expected %<{%>"
  msgstr "%<{%> forventet"
  
! #: c/c-parser.cc:7959 c/c-parser.cc:7968 c/c-parser.cc:10002
! #: c/c-parser.cc:11181 c/c-parser.cc:14743 c/c-parser.cc:15140
! #: c/c-parser.cc:15204 c/c-parser.cc:16694 c/c-parser.cc:17805
! #: c/c-parser.cc:18042 c/c-parser.cc:18595 c/c-parser.cc:18698
! #: c/c-parser.cc:19239 c/c-parser.cc:19675 c/c-parser.cc:19751
! #: c/c-parser.cc:19868 c/c-parser.cc:19940 c/c-parser.cc:20913
! #: c/c-parser.cc:26747 c/c-parser.cc:27927 c/c-parser.cc:27986
! #: c/c-parser.cc:29185 c/gimple-parser.cc:630 c/gimple-parser.cc:943
! #: c/gimple-parser.cc:2561 c/gimple-parser.cc:2588 c/c-parser.cc:9461
! #: c/c-parser.cc:17298 c/c-parser.cc:18703 cp/parser.cc:35375
! #: cp/parser.cc:37082 cp/parser.cc:40178 cp/parser.cc:41071
! #: go/gofrontend/embed.cc:404
  #, gcc-internal-format
  msgid "expected %<:%>"
  msgstr "%<:%> forventet"
  
! #: c/c-parser.cc:8955 cp/parser.cc:35262
  #, gcc-internal-format
  msgid "expected %<while%>"
  msgstr "%<while%> forventet"
  
! #: c/c-parser.cc:10900 c/c-parser.cc:11130 c/c-parser.cc:11647
! #: c/c-parser.cc:11692 c/c-parser.cc:11785 c/c-parser.cc:11932
! #: c/c-parser.cc:12732 c/c-parser.cc:18219 c/c-parser.cc:19820
  #: c/gimple-parser.cc:1172 c/gimple-parser.cc:1198 c/gimple-parser.cc:1326
  #: c/gimple-parser.cc:1329 c/gimple-parser.cc:1709 c/gimple-parser.cc:1715
! #: cp/parser.cc:34692 cp/parser.cc:35351
  #, gcc-internal-format
  msgid "expected %<,%>"
  msgstr "%<,%> forventet"
  
! #: c/c-parser.cc:11541
  msgid "expected %<.%>"
  msgstr "%<.%> forventet"
  
! #: c/c-parser.cc:14202 c/c-parser.cc:14234 c/c-parser.cc:14474
! #: cp/parser.cc:37656 cp/parser.cc:37677
  #, gcc-internal-format
  msgid "expected %<@end%>"
  msgstr "%<@end%> forventet"
  
! #: c/c-parser.cc:14892 c/gimple-parser.cc:1497 cp/parser.cc:35360
  #, gcc-internal-format
  msgid "expected %<>%>"
  msgstr "%<>%> forventet"
  
! #: c/c-parser.cc:18793 c/c-parser.cc:20236 c/c-parser.cc:20662
! #: cp/parser.cc:35384 cp/parser.cc:42942
  #, gcc-internal-format
  msgid "expected %<,%> or %<)%>"
  msgstr "%<,%> eller %<)%> forventet"
  
  #. All following cases are statements with LHS.
! #: c/c-parser.cc:19667 c/c-parser.cc:22952 c/c-parser.cc:22997
! #: c/c-parser.cc:23154 c/c-parser.cc:23501 c/c-parser.cc:24213
! #: c/c-parser.cc:25419 c/c-parser.cc:26923 c/c-parser.cc:28128
! #: c/gimple-parser.cc:798 c/c-parser.cc:6772 c/c-parser.cc:23074
! #: c/c-parser.cc:23297 cp/parser.cc:35363 cp/parser.cc:44637 cp/parser.cc:44810
  #, gcc-internal-format
  msgid "expected %<=%>"
  msgstr "%<=%> forventet"
  
! #: c/c-parser.cc:20812 c/c-parser.cc:27191 c/c-parser.cc:27212
! #: c/c-parser.cc:16752 c/c-parser.cc:16764 c/c-parser.cc:20792
! #: cp/parser.cc:43092 cp/parser.cc:43119 cp/parser.cc:50659 cp/parser.cc:50670
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<,%> or %<)%>"
  msgid "expected %<)%> or %<,%>"
  msgstr "%<,%> eller %<)%> forventet"
  
! #: c/c-parser.cc:23085 c/c-parser.cc:23165 c/c-parser.cc:23518
! #: c/c-parser.cc:23973 c/gimple-parser.cc:1763 c/gimple-parser.cc:1795
! #: c/gimple-parser.cc:1805 c/gimple-parser.cc:2598 cp/parser.cc:35339
! #: cp/parser.cc:37866
  #, gcc-internal-format
  msgid "expected %<}%>"
  msgstr "%<}%> forventet"
  
! #: c/c-parser.cc:23178 cp/parser.cc:44735
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<delete%>"
  msgid "expected %<else%>"
  msgstr "forventede %<delete%>"
  
! #: c/c-parser.cc:25091 c/c-parser.cc:25080 cp/parser.cc:47665
  #, gcc-internal-format
  msgid "expected %<#pragma omp section%> or %<}%>"
  msgstr "%<#pragma omp section%> eller %<}%> forventet"
  
! #: c/c-parser.cc:28806 cp/parser.cc:52607
  msgid "<message unknown at compile time>"
  msgstr ""
  
! #: c/c-typeck.cc:9880
  msgid "(anonymous)"
  msgstr "(anonym)"
  
! #: c/gimple-parser.cc:1486 cp/parser.cc:19542 cp/parser.cc:35357
  #, gcc-internal-format
  msgid "expected %<<%>"
  msgstr "%<<%> forventet"
*************** msgstr "%<<%> forventet"
*** 23022,23031 ****
  msgid "expected label"
  msgstr "forventet etiket"
  
! #: cobol/gcobolspec.cc:544
  #, fuzzy, c-format
  #| msgid "warning:"
! msgid "Driving: (%ld)\n"
  msgstr "advarsel: "
  
  #: cp/call.cc:4225
--- 23033,23042 ----
  msgid "expected label"
  msgstr "forventet etiket"
  
! #: cobol/gcobolspec.cc:554
  #, fuzzy, c-format
  #| msgid "warning:"
! msgid "Driving: ("
  msgstr "advarsel: "
  
  #: cp/call.cc:4225
*************** msgstr "candidate%s: %+#D"
*** 23039,23045 ****
  msgid "  after user-defined conversion:"
  msgstr "AktivÃ©r brug af DB-instruktioner"
  
! #: cp/call.cc:8724 cp/pt.cc:2064 cp/pt.cc:26956
  #, fuzzy
  msgid "candidate is:"
  msgid_plural "candidates are:"
--- 23050,23056 ----
  msgid "  after user-defined conversion:"
  msgstr "AktivÃ©r brug af DB-instruktioner"
  
! #: cp/call.cc:8724 cp/pt.cc:2064 cp/pt.cc:26986
  #, fuzzy
  msgid "candidate is:"
  msgid_plural "candidates are:"
*************** msgstr "skabelonsparameter '%#D'"
*** 23151,23157 ****
  msgid "<statement>"
  msgstr ""
  
! #: cp/error.cc:2381 cp/error.cc:3503 c-family/c-pretty-print.cc:2694
  #, gcc-internal-format
  msgid "<unknown>"
  msgstr ""
--- 23162,23168 ----
  msgid "<statement>"
  msgstr ""
  
! #: cp/error.cc:2381 cp/error.cc:3524 c-family/c-pretty-print.cc:2694
  #, gcc-internal-format
  msgid "<unknown>"
  msgstr ""
*************** msgstr ""
*** 23180,23196 ****
  msgid "*this"
  msgstr ""
  
! #: cp/error.cc:3227
  #, fuzzy
  #| msgid "parse error"
  msgid "<expression error>"
  msgstr "tolkningsfejl"
  
! #: cp/error.cc:3242
  msgid "<unknown operator>"
  msgstr ""
  
! #: cp/error.cc:3732
  msgid "At global scope:"
  msgstr ""
  
--- 23191,23207 ----
  msgid "*this"
  msgstr ""
  
! #: cp/error.cc:3248
  #, fuzzy
  #| msgid "parse error"
  msgid "<expression error>"
  msgstr "tolkningsfejl"
  
! #: cp/error.cc:3263
  msgid "<unknown operator>"
  msgstr ""
  
! #: cp/error.cc:3753
  msgid "At global scope:"
  msgstr ""
  
*************** msgstr ""
*** 23199,23304 ****
  msgid "candidates are:"
  msgstr "candidate%s: %+#D"
  
! #: cp/rtti.cc:588
  #, fuzzy
  #| msgid "  overriding `%#D' (must be pointer or reference to class)"
  msgid "target is not pointer or reference to class"
  msgstr "  overskriver '%#D' (skal vÃ¦re en henvisning eller reference til klasse)"
  
! #: cp/rtti.cc:593
  #, fuzzy
  #| msgid "arithmetic on pointer to an incomplete type"
  msgid "target is not pointer or reference to complete type"
  msgstr "beregninger udfÃ¸rt pÃ¥ en henvisning til en ufuldstÃ¦ndig type"
  
! #: cp/rtti.cc:599
  #, fuzzy
  #| msgid "cannot declare pointers to references"
  msgid "target is not pointer or reference"
  msgstr "kan ikke erklÃ¦re henvisninger til referencer"
  
! #: cp/rtti.cc:615
  #, fuzzy
  #| msgid "base operand of `->' is not a pointer"
  msgid "source is not a pointer"
  msgstr "grundoperanden til '->' er ikke en henvisning"
  
! #: cp/rtti.cc:620
  #, fuzzy
  #| msgid "Assume that pointers not aliased"
  msgid "source is not a pointer to class"
  msgstr "Antag at henvisninger ikke kan vÃ¦re aliaser"
  
! #: cp/rtti.cc:625
  #, fuzzy
  #| msgid "cannot %s a pointer to incomplete type `%T'"
  msgid "source is a pointer to incomplete type"
  msgstr "kan ikke %s en henvisning til en ufuldstÃ¦ndig type '%T'"
  
! #: cp/rtti.cc:638
  #, fuzzy
  #| msgid "`%T' is not a class or union type"
  msgid "source is not of class type"
  msgstr "'%T' er ikke af en klasse- eller union-type"
  
! #: cp/rtti.cc:643
  #, fuzzy
  #| msgid "return type is an incomplete type"
  msgid "source is of incomplete class type"
  msgstr "returtypen er en ufuldstÃ¦ndig type"
  
! #: cp/rtti.cc:654
  msgid "conversion casts away constness"
  msgstr ""
  
! #: cp/rtti.cc:816
  msgid "source type is not polymorphic"
  msgstr ""
  
! #: cp/typeck.cc:7524 c/c-typeck.cc:5303
  #, gcc-internal-format
  msgid "wrong type argument to unary minus"
  msgstr "forkert parametertype til unÃ¦rt minus"
  
! #: cp/typeck.cc:7525 c/c-typeck.cc:5289
  #, gcc-internal-format
  msgid "wrong type argument to unary plus"
  msgstr "forkert parametertype til unÃ¦rt plus"
  
! #: cp/typeck.cc:7552 c/c-typeck.cc:5348
  #, gcc-internal-format
  msgid "wrong type argument to bit-complement"
  msgstr "forkert parametertype til bitkomplement"
  
! #: cp/typeck.cc:7572 c/c-typeck.cc:5356
  #, gcc-internal-format
  msgid "wrong type argument to abs"
  msgstr "forkert parametertype til abs"
  
! #: cp/typeck.cc:7584 c/c-typeck.cc:5378
  #, gcc-internal-format
  msgid "wrong type argument to conjugation"
  msgstr "forkert parametertype til konjugation"
  
! #: cp/typeck.cc:7608
  #, fuzzy
  #| msgid "wrong type argument to unary plus"
  msgid "in argument to unary !"
  msgstr "forkert parametertype til unÃ¦rt plus"
  
! #: cp/typeck.cc:7657
  msgid "no pre-increment operator for type"
  msgstr ""
  
! #: cp/typeck.cc:7659
  msgid "no post-increment operator for type"
  msgstr ""
  
! #: cp/typeck.cc:7661
  msgid "no pre-decrement operator for type"
  msgstr ""
  
! #: cp/typeck.cc:7663
  msgid "no post-decrement operator for type"
  msgstr ""
  
--- 23210,23315 ----
  msgid "candidates are:"
  msgstr "candidate%s: %+#D"
  
! #: cp/rtti.cc:589
  #, fuzzy
  #| msgid "  overriding `%#D' (must be pointer or reference to class)"
  msgid "target is not pointer or reference to class"
  msgstr "  overskriver '%#D' (skal vÃ¦re en henvisning eller reference til klasse)"
  
! #: cp/rtti.cc:594
  #, fuzzy
  #| msgid "arithmetic on pointer to an incomplete type"
  msgid "target is not pointer or reference to complete type"
  msgstr "beregninger udfÃ¸rt pÃ¥ en henvisning til en ufuldstÃ¦ndig type"
  
! #: cp/rtti.cc:600
  #, fuzzy
  #| msgid "cannot declare pointers to references"
  msgid "target is not pointer or reference"
  msgstr "kan ikke erklÃ¦re henvisninger til referencer"
  
! #: cp/rtti.cc:616
  #, fuzzy
  #| msgid "base operand of `->' is not a pointer"
  msgid "source is not a pointer"
  msgstr "grundoperanden til '->' er ikke en henvisning"
  
! #: cp/rtti.cc:621
  #, fuzzy
  #| msgid "Assume that pointers not aliased"
  msgid "source is not a pointer to class"
  msgstr "Antag at henvisninger ikke kan vÃ¦re aliaser"
  
! #: cp/rtti.cc:626
  #, fuzzy
  #| msgid "cannot %s a pointer to incomplete type `%T'"
  msgid "source is a pointer to incomplete type"
  msgstr "kan ikke %s en henvisning til en ufuldstÃ¦ndig type '%T'"
  
! #: cp/rtti.cc:639
  #, fuzzy
  #| msgid "`%T' is not a class or union type"
  msgid "source is not of class type"
  msgstr "'%T' er ikke af en klasse- eller union-type"
  
! #: cp/rtti.cc:644
  #, fuzzy
  #| msgid "return type is an incomplete type"
  msgid "source is of incomplete class type"
  msgstr "returtypen er en ufuldstÃ¦ndig type"
  
! #: cp/rtti.cc:655
  msgid "conversion casts away constness"
  msgstr ""
  
! #: cp/rtti.cc:817
  msgid "source type is not polymorphic"
  msgstr ""
  
! #: cp/typeck.cc:7640 c/c-typeck.cc:5304
  #, gcc-internal-format
  msgid "wrong type argument to unary minus"
  msgstr "forkert parametertype til unÃ¦rt minus"
  
! #: cp/typeck.cc:7641 c/c-typeck.cc:5290
  #, gcc-internal-format
  msgid "wrong type argument to unary plus"
  msgstr "forkert parametertype til unÃ¦rt plus"
  
! #: cp/typeck.cc:7668 c/c-typeck.cc:5349
  #, gcc-internal-format
  msgid "wrong type argument to bit-complement"
  msgstr "forkert parametertype til bitkomplement"
  
! #: cp/typeck.cc:7688 c/c-typeck.cc:5357
  #, gcc-internal-format
  msgid "wrong type argument to abs"
  msgstr "forkert parametertype til abs"
  
! #: cp/typeck.cc:7700 c/c-typeck.cc:5379
  #, gcc-internal-format
  msgid "wrong type argument to conjugation"
  msgstr "forkert parametertype til konjugation"
  
! #: cp/typeck.cc:7724
  #, fuzzy
  #| msgid "wrong type argument to unary plus"
  msgid "in argument to unary !"
  msgstr "forkert parametertype til unÃ¦rt plus"
  
! #: cp/typeck.cc:7773
  msgid "no pre-increment operator for type"
  msgstr ""
  
! #: cp/typeck.cc:7775
  msgid "no post-increment operator for type"
  msgstr ""
  
! #: cp/typeck.cc:7777
  msgid "no pre-decrement operator for type"
  msgstr ""
  
! #: cp/typeck.cc:7779
  msgid "no post-decrement operator for type"
  msgstr ""
  
*************** msgstr ""
*** 23454,23460 ****
  msgid "Unsigned:"
  msgstr ""
  
! #: fortran/expr.cc:3856
  #, fuzzy
  #| msgid "assignment"
  msgid "array assignment"
--- 23465,23471 ----
  msgid "Unsigned:"
  msgstr ""
  
! #: fortran/expr.cc:3960
  #, fuzzy
  #| msgid "assignment"
  msgid "array assignment"
*************** msgstr "typerne i betingelsesudtrykket p
*** 23488,23494 ****
  msgid "Driving:"
  msgstr "advarsel: "
  
! #: fortran/interface.cc:3905 fortran/intrinsic.cc:4662
  msgid "actual argument to INTENT = OUT/INOUT"
  msgstr ""
  
--- 23499,23505 ----
  msgid "Driving:"
  msgstr "advarsel: "
  
! #: fortran/interface.cc:3926 fortran/intrinsic.cc:4662
  msgid "actual argument to INTENT = OUT/INOUT"
  msgstr ""
  
*************** msgstr ""
*** 23540,23557 ****
  msgid "unsigned"
  msgstr ""
  
! #: fortran/io.cc:1873
  #, c-format
  msgid "%s tag"
  msgstr ""
  
! #: fortran/io.cc:3364
  msgid "internal unit in WRITE"
  msgstr ""
  
  #. For INQUIRE, all tags except FILE, ID and UNIT are variable definition
  #. contexts.  Thus, use an extended RESOLVE_TAG macro for that.
! #: fortran/io.cc:4725
  #, c-format
  msgid "%s tag with INQUIRE"
  msgstr ""
--- 23551,23568 ----
  msgid "unsigned"
  msgstr ""
  
! #: fortran/io.cc:1875
  #, c-format
  msgid "%s tag"
  msgstr ""
  
! #: fortran/io.cc:3366
  msgid "internal unit in WRITE"
  msgstr ""
  
  #. For INQUIRE, all tags except FILE, ID and UNIT are variable definition
  #. contexts.  Thus, use an extended RESOLVE_TAG macro for that.
! #: fortran/io.cc:4727
  #, c-format
  msgid "%s tag with INQUIRE"
  msgstr ""
*************** msgstr ""
*** 23686,23696 ****
  msgid "implied END DO"
  msgstr ""
  
! #: fortran/parse.cc:2523 fortran/resolve.cc:13586
  msgid "assignment"
  msgstr "tildeling"
  
! #: fortran/parse.cc:2526 fortran/resolve.cc:13652 fortran/resolve.cc:13655
  #, fuzzy
  #| msgid "assignment"
  msgid "pointer assignment"
--- 23697,23707 ----
  msgid "implied END DO"
  msgstr ""
  
! #: fortran/parse.cc:2523 fortran/resolve.cc:13576
  msgid "assignment"
  msgstr "tildeling"
  
! #: fortran/parse.cc:2526 fortran/resolve.cc:13642 fortran/resolve.cc:13645
  #, fuzzy
  #| msgid "assignment"
  msgid "pointer assignment"
*************** msgstr "tildeling"
*** 23700,23867 ****
  msgid "simple IF"
  msgstr ""
  
! #: fortran/resolve.cc:2464 fortran/resolve.cc:2659
  msgid "elemental procedure"
  msgstr ""
  
! #: fortran/resolve.cc:2562
  #, fuzzy
  #| msgid "invalid type argument"
  msgid "allocatable argument"
  msgstr "ugyldig typeparameter"
  
! #: fortran/resolve.cc:2567
  #, fuzzy
  #| msgid "no arguments"
  msgid "asynchronous argument"
  msgstr "ingen parametre"
  
! #: fortran/resolve.cc:2572
  #, fuzzy
  #| msgid "no arguments"
  msgid "optional argument"
  msgstr "ingen parametre"
  
! #: fortran/resolve.cc:2577
  #, fuzzy
  #| msgid "no arguments"
  msgid "pointer argument"
  msgstr "ingen parametre"
  
! #: fortran/resolve.cc:2582
  #, fuzzy
  #| msgid "no arguments"
  msgid "target argument"
  msgstr "ingen parametre"
  
! #: fortran/resolve.cc:2587
  #, fuzzy
  #| msgid "invalid type argument"
  msgid "value argument"
  msgstr "ugyldig typeparameter"
  
! #: fortran/resolve.cc:2592
  #, fuzzy
  #| msgid "no arguments"
  msgid "volatile argument"
  msgstr "ingen parametre"
  
! #: fortran/resolve.cc:2597
  #, fuzzy
  #| msgid "invalid type argument"
  msgid "assumed-shape argument"
  msgstr "ugyldig typeparameter"
  
! #: fortran/resolve.cc:2602
  #, fuzzy
  #| msgid "no arguments"
  msgid "assumed-rank argument"
  msgstr "ingen parametre"
  
! #: fortran/resolve.cc:2607
  #, fuzzy
  #| msgid "no arguments"
  msgid "coarray argument"
  msgstr "ingen parametre"
  
! #: fortran/resolve.cc:2612
  #, fuzzy
  #| msgid "invalid type argument"
  msgid "parametrized derived type argument"
  msgstr "ugyldig typeparameter"
  
! #: fortran/resolve.cc:2617
  #, fuzzy
  #| msgid "no arguments"
  msgid "polymorphic argument"
  msgstr "ingen parametre"
  
! #: fortran/resolve.cc:2622
  msgid "NO_ARG_CHECK attribute"
  msgstr ""
  
  #. As assumed-type is unlimited polymorphic (cf. above).
  #. See also TS 29113, Note 6.1.
! #: fortran/resolve.cc:2629
  #, fuzzy
  #| msgid "invalid type argument"
  msgid "assumed-type argument"
  msgstr "ugyldig typeparameter"
  
! #: fortran/resolve.cc:2640
  msgid "array result"
  msgstr ""
  
! #: fortran/resolve.cc:2645
  #, fuzzy
  #| msgid "Do not allocate BK register"
  msgid "pointer or allocatable result"
  msgstr "AllokÃ©r ikke BK-registeret"
  
! #: fortran/resolve.cc:2652
  msgid "result with non-constant character length"
  msgstr ""
  
! #: fortran/resolve.cc:2664
  msgid "bind(c) procedure"
  msgstr ""
  
! #: fortran/resolve.cc:8002
  msgid "Loop variable"
  msgstr ""
  
! #: fortran/resolve.cc:8006
  msgid "iterator variable"
  msgstr ""
  
! #: fortran/resolve.cc:8010
  msgid "Start expression in DO loop"
  msgstr ""
  
! #: fortran/resolve.cc:8014
  #, fuzzy
  #| msgid "invalid expression as operand"
  msgid "End expression in DO loop"
  msgstr "ugyldigt udtryk som operand"
  
! #: fortran/resolve.cc:8018
  msgid "Step expression in DO loop"
  msgstr ""
  
! #: fortran/resolve.cc:8636 fortran/resolve.cc:8639
  msgid "DEALLOCATE object"
  msgstr ""
  
! #: fortran/resolve.cc:9063 fortran/resolve.cc:9066
  msgid "ALLOCATE object"
  msgstr ""
  
! #: fortran/resolve.cc:9303 fortran/resolve.cc:11450 fortran/resolve.cc:11571
  msgid "STAT variable"
  msgstr ""
  
! #: fortran/resolve.cc:9354 fortran/resolve.cc:11462 fortran/resolve.cc:11583
  msgid "ERRMSG variable"
  msgstr ""
  
! #: fortran/resolve.cc:11258
  msgid "item in READ"
  msgstr ""
  
! #: fortran/resolve.cc:11474
  msgid "ACQUIRED_LOCK variable"
  msgstr ""
  
! #: fortran/trans-array.cc:2058
  #, c-format
  msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
  msgstr ""
  
! #: fortran/trans-array.cc:6629
  msgid "Integer overflow when calculating the amount of memory to allocate"
  msgstr ""
  
! #: fortran/trans-array.cc:10933
  #, c-format
  msgid "The value of the PDT LEN parameter '%s' does not agree with that in the dummy declaration"
  msgstr ""
--- 23711,23878 ----
  msgid "simple IF"
  msgstr ""
  
! #: fortran/resolve.cc:2465 fortran/resolve.cc:2660
  msgid "elemental procedure"
  msgstr ""
  
! #: fortran/resolve.cc:2563
  #, fuzzy
  #| msgid "invalid type argument"
  msgid "allocatable argument"
  msgstr "ugyldig typeparameter"
  
! #: fortran/resolve.cc:2568
  #, fuzzy
  #| msgid "no arguments"
  msgid "asynchronous argument"
  msgstr "ingen parametre"
  
! #: fortran/resolve.cc:2573
  #, fuzzy
  #| msgid "no arguments"
  msgid "optional argument"
  msgstr "ingen parametre"
  
! #: fortran/resolve.cc:2578
  #, fuzzy
  #| msgid "no arguments"
  msgid "pointer argument"
  msgstr "ingen parametre"
  
! #: fortran/resolve.cc:2583
  #, fuzzy
  #| msgid "no arguments"
  msgid "target argument"
  msgstr "ingen parametre"
  
! #: fortran/resolve.cc:2588
  #, fuzzy
  #| msgid "invalid type argument"
  msgid "value argument"
  msgstr "ugyldig typeparameter"
  
! #: fortran/resolve.cc:2593
  #, fuzzy
  #| msgid "no arguments"
  msgid "volatile argument"
  msgstr "ingen parametre"
  
! #: fortran/resolve.cc:2598
  #, fuzzy
  #| msgid "invalid type argument"
  msgid "assumed-shape argument"
  msgstr "ugyldig typeparameter"
  
! #: fortran/resolve.cc:2603
  #, fuzzy
  #| msgid "no arguments"
  msgid "assumed-rank argument"
  msgstr "ingen parametre"
  
! #: fortran/resolve.cc:2608
  #, fuzzy
  #| msgid "no arguments"
  msgid "coarray argument"
  msgstr "ingen parametre"
  
! #: fortran/resolve.cc:2613
  #, fuzzy
  #| msgid "invalid type argument"
  msgid "parametrized derived type argument"
  msgstr "ugyldig typeparameter"
  
! #: fortran/resolve.cc:2618
  #, fuzzy
  #| msgid "no arguments"
  msgid "polymorphic argument"
  msgstr "ingen parametre"
  
! #: fortran/resolve.cc:2623
  msgid "NO_ARG_CHECK attribute"
  msgstr ""
  
  #. As assumed-type is unlimited polymorphic (cf. above).
  #. See also TS 29113, Note 6.1.
! #: fortran/resolve.cc:2630
  #, fuzzy
  #| msgid "invalid type argument"
  msgid "assumed-type argument"
  msgstr "ugyldig typeparameter"
  
! #: fortran/resolve.cc:2641
  msgid "array result"
  msgstr ""
  
! #: fortran/resolve.cc:2646
  #, fuzzy
  #| msgid "Do not allocate BK register"
  msgid "pointer or allocatable result"
  msgstr "AllokÃ©r ikke BK-registeret"
  
! #: fortran/resolve.cc:2653
  msgid "result with non-constant character length"
  msgstr ""
  
! #: fortran/resolve.cc:2665
  msgid "bind(c) procedure"
  msgstr ""
  
! #: fortran/resolve.cc:7975
  msgid "Loop variable"
  msgstr ""
  
! #: fortran/resolve.cc:7979
  msgid "iterator variable"
  msgstr ""
  
! #: fortran/resolve.cc:7983
  msgid "Start expression in DO loop"
  msgstr ""
  
! #: fortran/resolve.cc:7987
  #, fuzzy
  #| msgid "invalid expression as operand"
  msgid "End expression in DO loop"
  msgstr "ugyldigt udtryk som operand"
  
! #: fortran/resolve.cc:7991
  msgid "Step expression in DO loop"
  msgstr ""
  
! #: fortran/resolve.cc:8609 fortran/resolve.cc:8612
  msgid "DEALLOCATE object"
  msgstr ""
  
! #: fortran/resolve.cc:9053 fortran/resolve.cc:9056
  msgid "ALLOCATE object"
  msgstr ""
  
! #: fortran/resolve.cc:9293 fortran/resolve.cc:11440 fortran/resolve.cc:11561
  msgid "STAT variable"
  msgstr ""
  
! #: fortran/resolve.cc:9344 fortran/resolve.cc:11452 fortran/resolve.cc:11573
  msgid "ERRMSG variable"
  msgstr ""
  
! #: fortran/resolve.cc:11248
  msgid "item in READ"
  msgstr ""
  
! #: fortran/resolve.cc:11464
  msgid "ACQUIRED_LOCK variable"
  msgstr ""
  
! #: fortran/trans-array.cc:2061
  #, c-format
  msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
  msgstr ""
  
! #: fortran/trans-array.cc:6631
  msgid "Integer overflow when calculating the amount of memory to allocate"
  msgstr ""
  
! #: fortran/trans-array.cc:10935
  #, c-format
  msgid "The value of the PDT LEN parameter '%s' does not agree with that in the dummy declaration"
  msgstr ""
*************** msgstr ""
*** 23876,23887 ****
  msgid "Actual string length is shorter than the declared one for dummy argument '%s' (%ld/%ld)"
  msgstr ""
  
! #: fortran/trans-expr.cc:11373
  #, c-format
  msgid "Target of rank remapping is too small (%ld < %ld)"
  msgstr ""
  
! #: fortran/trans-expr.cc:13068
  msgid "Assignment of scalar to unallocated array"
  msgstr ""
  
--- 23887,23898 ----
  msgid "Actual string length is shorter than the declared one for dummy argument '%s' (%ld/%ld)"
  msgstr ""
  
! #: fortran/trans-expr.cc:11386
  #, c-format
  msgid "Target of rank remapping is too small (%ld < %ld)"
  msgstr ""
  
! #: fortran/trans-expr.cc:13081
  msgid "Assignment of scalar to unallocated array"
  msgstr ""
  
*************** msgstr ""
*** 23890,23971 ****
  msgid "Unequal character lengths (%ld/%ld) in %s"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6387
  #, c-format
  msgid "POS argument (%ld) out of range 0:%ld in intrinsic BTEST"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6674
  #, fuzzy, c-format
  #| msgid "too few arguments to function `%s'"
  msgid "POS argument (%ld) out of range 0:%ld in intrinsic %s"
  msgstr "for fÃ¥ parametre til funktionen '%s'"
  
! #: fortran/trans-intrinsic.cc:6722
  #, c-format
  msgid "POS argument (%ld) out of range 0:%ld in intrinsic IBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6732
  #, c-format
  msgid "LEN argument (%ld) out of range 0:%ld in intrinsic IBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6739
  #, c-format
  msgid "POS(%ld)+LEN(%ld)>BIT_SIZE(%ld) in intrinsic IBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6831
  #, c-format
  msgid "SHIFT argument (%ld) out of range 0:%ld in intrinsic %s"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6899
  #, c-format
  msgid "SHIFT argument (%ld) out of range -%ld:%ld in intrinsic ISHFT"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6979
  #, c-format
  msgid "SIZE argument (%ld) out of range 1:%ld in intrinsic ISHFTC"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6987 fortran/trans-intrinsic.cc:7032
  #, c-format
  msgid "SHIFT argument (%ld) out of range -%ld:%ld in intrinsic ISHFTC"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:9383
  #, c-format
  msgid "Argument NCOPIES of REPEAT intrinsic is negative (its value is %ld)"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:9415
  msgid "Argument NCOPIES of REPEAT intrinsic is too large"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12882
  #, c-format
  msgid "FROMPOS argument (%ld) out of range 0:%d in intrinsic MVBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12894
  #, c-format
  msgid "LEN argument (%ld) out of range 0:%d in intrinsic MVBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12906
  #, c-format
  msgid "TOPOS argument (%ld) out of range 0:%d in intrinsic MVBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12918
  #, c-format
  msgid "FROMPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsic MVBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12926
  #, c-format
  msgid "TOPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsic MVBITS"
  msgstr ""
--- 23901,23982 ----
  msgid "Unequal character lengths (%ld/%ld) in %s"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6366
  #, c-format
  msgid "POS argument (%ld) out of range 0:%ld in intrinsic BTEST"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6653
  #, fuzzy, c-format
  #| msgid "too few arguments to function `%s'"
  msgid "POS argument (%ld) out of range 0:%ld in intrinsic %s"
  msgstr "for fÃ¥ parametre til funktionen '%s'"
  
! #: fortran/trans-intrinsic.cc:6701
  #, c-format
  msgid "POS argument (%ld) out of range 0:%ld in intrinsic IBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6711
  #, c-format
  msgid "LEN argument (%ld) out of range 0:%ld in intrinsic IBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6718
  #, c-format
  msgid "POS(%ld)+LEN(%ld)>BIT_SIZE(%ld) in intrinsic IBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6810
  #, c-format
  msgid "SHIFT argument (%ld) out of range 0:%ld in intrinsic %s"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6878
  #, c-format
  msgid "SHIFT argument (%ld) out of range -%ld:%ld in intrinsic ISHFT"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6958
  #, c-format
  msgid "SIZE argument (%ld) out of range 1:%ld in intrinsic ISHFTC"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6966 fortran/trans-intrinsic.cc:7011
  #, c-format
  msgid "SHIFT argument (%ld) out of range -%ld:%ld in intrinsic ISHFTC"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:9362
  #, c-format
  msgid "Argument NCOPIES of REPEAT intrinsic is negative (its value is %ld)"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:9394
  msgid "Argument NCOPIES of REPEAT intrinsic is too large"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12861
  #, c-format
  msgid "FROMPOS argument (%ld) out of range 0:%d in intrinsic MVBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12873
  #, c-format
  msgid "LEN argument (%ld) out of range 0:%d in intrinsic MVBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12885
  #, c-format
  msgid "TOPOS argument (%ld) out of range 0:%d in intrinsic MVBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12897
  #, c-format
  msgid "FROMPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsic MVBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12905
  #, c-format
  msgid "TOPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsic MVBITS"
  msgstr ""
*************** msgstr "forventet numerisk type"
*** 24090,24097 ****
  msgid "expected boolean type"
  msgstr "forventet boolesk type"
  
! #: go/gofrontend/expressions.cc:5610 c/c-parser.cc:19534 c/c-parser.cc:19541
! #: cp/parser.cc:41864 cp/parser.cc:41871
  #, fuzzy, gcc-internal-format
  msgid "expected integer"
  msgstr "uventet operand"
--- 24101,24108 ----
  msgid "expected boolean type"
  msgstr "forventet boolesk type"
  
! #: go/gofrontend/expressions.cc:5610 c/c-parser.cc:19579 c/c-parser.cc:19586
! #: cp/parser.cc:41923 cp/parser.cc:41930
  #, fuzzy, gcc-internal-format
  msgid "expected integer"
  msgstr "uventet operand"
*************** msgstr "ikke nok parametre"
*** 24166,24172 ****
  #: go/gofrontend/expressions.cc:11749 go/gofrontend/expressions.cc:11844
  #: go/gofrontend/expressions.cc:14020 go/gofrontend/expressions.cc:14149
  #: go/gofrontend/expressions.cc:14163 go/gofrontend/expressions.cc:14184
! #: cp/pt.cc:9466
  #, gcc-internal-format
  msgid "too many arguments"
  msgstr "for mange parametre"
--- 24177,24183 ----
  #: go/gofrontend/expressions.cc:11749 go/gofrontend/expressions.cc:11844
  #: go/gofrontend/expressions.cc:14020 go/gofrontend/expressions.cc:14149
  #: go/gofrontend/expressions.cc:14163 go/gofrontend/expressions.cc:14184
! #: cp/pt.cc:9471
  #, gcc-internal-format
  msgid "too many arguments"
  msgstr "for mange parametre"
*************** msgstr "function_profiler-understÃ¸ttels
*** 24622,24628 ****
  msgid "target OS does not support unaligned accesses"
  msgstr "mÃ¥lprocessoren understÃ¸tter ikke interarbejde"
  
! #: config/c6x/c6x.h:346 config/nvptx/nvptx.h:193
  #, gcc-internal-format
  msgid "profiling is not yet implemented for this architecture"
  msgstr "profilering er endnu ikke implementerer for denne arkitektur"
--- 24633,24639 ----
  msgid "target OS does not support unaligned accesses"
  msgstr "mÃ¥lprocessoren understÃ¸tter ikke interarbejde"
  
! #: config/c6x/c6x.h:346 config/nvptx/nvptx.h:194
  #, gcc-internal-format
  msgid "profiling is not yet implemented for this architecture"
  msgstr "profilering er endnu ikke implementerer for denne arkitektur"
*************** msgstr "%s understÃ¸ttes ikke af denne k
*** 24874,24903 ****
  msgid "%<-mrelax%> is only supported for RTP PIC"
  msgstr "-g er kun understÃ¸ttet ved brug af GAS pÃ¥ denne processor,"
  
! #: cobol/parse_ante.h:1728
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "a global declaration"
  msgid "Global declarative %s for %s"
  msgstr "en global erklÃ¦ring"
  
! #: cobol/parse_ante.h:2456 cobol/genapi.cc:5784
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "%s: invalid option -- %c\n"
! msgid "%s:%d: invalid symbol_type_t %d"
! msgstr "%s: ugyldigt tilvalg -- %c\n"
! 
! #: cobol/parse_ante.h:2798
! #, gcc-internal-format, gfc-internal-format
! msgid "%s:%d: no symbol '%s' found"
  msgstr ""
  
! #: cobol/parse_util.h:351
! #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "%s: definition of function `%s' not converted\n"
! msgid "%s: intrinsic function  %s not found"
  msgstr "%s: definitionen af funktionen '%s' er ikke omdannet\n"
  
! #: cobol/parse_util.h:383
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "%s: invalid function descr type '%c'"
  msgstr "Ugyldig erklÃ¦ring"
--- 24885,24915 ----
  msgid "%<-mrelax%> is only supported for RTP PIC"
  msgstr "-g er kun understÃ¸ttet ved brug af GAS pÃ¥ denne processor,"
  
! #: cobol/exceptg.h:80
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Creating '%s'\n"
! msgid "CDF: exception '%s'"
! msgstr "Opretter Â»%sÂ«.\n"
! 
! #: cobol/parse_ante.h:1592
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "a global declaration"
  msgid "Global declarative %s for %s"
  msgstr "en global erklÃ¦ring"
  
! #: cobol/parse_ante.h:2385 cobol/symbols.h:134 cobol/genapi.cc:6470
! #: cobol/util.cc:288 cobol/util.cc:337 cobol/util.cc:637
! #, gcc-internal-format
! msgid "%s:%d: invalid %<symbol_type_t%> %d"
  msgstr ""
  
! #: cobol/parse_util.h:360
! #, fuzzy, gcc-internal-format
  #| msgid "%s: definition of function `%s' not converted\n"
! msgid "%s: intrinsic function %qs not found"
  msgstr "%s: definitionen af funktionen '%s' er ikke omdannet\n"
  
! #: cobol/parse_util.h:392
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "%s: invalid function descr type '%c'"
  msgstr "Ugyldig erklÃ¦ring"
*************** msgid "scan.o: %s"
*** 24909,24915 ****
  msgstr "luk: %s"
  
  #. A general purpose syntax error.
! #: fortran/gfortran.h:3560 fortran/io.cc:3727 fortran/io.cc:4413
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "syntax error at '%s' token"
  msgid "Syntax error in %s statement at %C"
--- 24921,24927 ----
  msgstr "luk: %s"
  
  #. A general purpose syntax error.
! #: fortran/gfortran.h:3563 fortran/io.cc:3729 fortran/io.cc:4415
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "syntax error at '%s' token"
  msgid "Syntax error in %s statement at %C"
*************** msgstr "et makronavn mangler efter %s"
*** 25007,25013 ****
  #: c-family/c.opt:89 c-family/c.opt:185 c-family/c.opt:188 c-family/c.opt:230
  #: c-family/c.opt:234 c-family/c.opt:246 c-family/c.opt:2482
  #: c-family/c.opt:2490 config/darwin.opt:30 common.opt:329 common.opt:332
! #: common.opt:429 common.opt:3801
  #, fuzzy, gcc-internal-format
  msgid "missing filename after %qs"
  msgstr "et filnavn mangler efter '-%s'"
--- 25019,25025 ----
  #: c-family/c.opt:89 c-family/c.opt:185 c-family/c.opt:188 c-family/c.opt:230
  #: c-family/c.opt:234 c-family/c.opt:246 c-family/c.opt:2482
  #: c-family/c.opt:2490 config/darwin.opt:30 common.opt:329 common.opt:332
! #: common.opt:429 common.opt:3798
  #, fuzzy, gcc-internal-format
  msgid "missing filename after %qs"
  msgstr "et filnavn mangler efter '-%s'"
*************** msgstr "ukendt registernavn '%s'"
*** 25108,25114 ****
  msgid "unrecognized scalar storage order value %qs"
  msgstr "ukendt registernavn '%s'"
  
! #: cobol/lang.opt:46
  #, fuzzy, gcc-internal-format
  #| msgid "unrecognized section name \"%s\""
  msgid "Unrecognized COBOL dialect name: %qs"
--- 25120,25126 ----
  msgid "unrecognized scalar storage order value %qs"
  msgstr "ukendt registernavn '%s'"
  
! #: cobol/lang.opt:51
  #, fuzzy, gcc-internal-format
  #| msgid "unrecognized section name \"%s\""
  msgid "Unrecognized COBOL dialect name: %qs"
*************** msgstr "ukendt registernavn: %s"
*** 25295,25377 ****
  msgid "unknown LTO partitioning model %qs"
  msgstr "ukendt maskintilstand '%s'"
  
! #: common.opt:2406
  #, fuzzy, gcc-internal-format
  #| msgid "target missing after %s option"
  msgid "targets missing after %qs"
  msgstr "et mÃ¥l mangler efter tilvalget %s"
  
! #: common.opt:2409
  #, fuzzy, gcc-internal-format
  #| msgid "target missing after %s"
  msgid "options or targets=options missing after %qs"
  msgstr "et mÃ¥l mangler efter %s"
  
! #: common.opt:2417
  #, fuzzy, gcc-internal-format
  msgid "unknown offload ABI %qs"
  msgstr "'%s': ukendt tls-model-tilvalg"
  
! #: common.opt:2426
  #, fuzzy, gcc-internal-format
  msgid "option missing after %qs"
  msgstr "et postulat mangler efter %s"
  
! #: common.opt:2603
  #, fuzzy, gcc-internal-format
  msgid "unknown profile reproducibility method %qs"
  msgstr "'%s': ukendt tls-model-tilvalg"
  
! #: common.opt:2619
  #, fuzzy, gcc-internal-format
  msgid "unknown profile update method %qs"
  msgstr "'%s': ukendt tls-model-tilvalg"
  
! #: common.opt:2728
  #, fuzzy, gcc-internal-format
  #| msgid "unknown machine mode `%s'"
  msgid "unknown Live-Patching Level %qs"
  msgstr "ukendt maskintilstand '%s'"
  
! #: common.opt:2761
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown basic block reordering algorithm %qs"
  msgstr "ukendt registernavn: %s"
  
! #: common.opt:3097
  #, gcc-internal-format
  msgid "unknown TLS model %qs"
  msgstr "ukendt tls-model %qs"
  
! #: common.opt:3130
  #, fuzzy, gcc-internal-format
  msgid "unknown trampoline implementation %qs"
  msgstr "'%s': ukendt tls-model-tilvalg"
  
! #: common.opt:3452
  #, fuzzy, gcc-internal-format
  #| msgid "unknown machine mode `%s'"
  msgid "unknown vectorizer cost model %qs"
  msgstr "ukendt maskintilstand '%s'"
  
! #: common.opt:3483
  #, fuzzy, gcc-internal-format
  msgid "unrecognized automatic variable initialization type %qs"
  msgstr "ukendt registernavn '%s'"
  
! #: common.opt:3509
  #, gcc-internal-format
  msgid "unrecognized visibility value %qs"
  msgstr "ikke genkendt synlighedsvÃ¦rdi %qs"
  
! #: common.opt:3528
  #, fuzzy, gcc-internal-format
  #| msgid "(near initialization for `%s')"
  msgid "unknown vtable verify initialization priority %qs"
  msgstr "(i nÃ¦rheden af klargÃ¸ringen af '%s')"
  
! #: common.opt:3584
  #, fuzzy, gcc-internal-format
  msgid "unrecognized zero init padding bits kind %qs"
  msgstr "ignorerer kommandolinjetilvalget '%s'"
--- 25307,25389 ----
  msgid "unknown LTO partitioning model %qs"
  msgstr "ukendt maskintilstand '%s'"
  
! #: common.opt:2403
  #, fuzzy, gcc-internal-format
  #| msgid "target missing after %s option"
  msgid "targets missing after %qs"
  msgstr "et mÃ¥l mangler efter tilvalget %s"
  
! #: common.opt:2406
  #, fuzzy, gcc-internal-format
  #| msgid "target missing after %s"
  msgid "options or targets=options missing after %qs"
  msgstr "et mÃ¥l mangler efter %s"
  
! #: common.opt:2414
  #, fuzzy, gcc-internal-format
  msgid "unknown offload ABI %qs"
  msgstr "'%s': ukendt tls-model-tilvalg"
  
! #: common.opt:2423
  #, fuzzy, gcc-internal-format
  msgid "option missing after %qs"
  msgstr "et postulat mangler efter %s"
  
! #: common.opt:2600
  #, fuzzy, gcc-internal-format
  msgid "unknown profile reproducibility method %qs"
  msgstr "'%s': ukendt tls-model-tilvalg"
  
! #: common.opt:2616
  #, fuzzy, gcc-internal-format
  msgid "unknown profile update method %qs"
  msgstr "'%s': ukendt tls-model-tilvalg"
  
! #: common.opt:2725
  #, fuzzy, gcc-internal-format
  #| msgid "unknown machine mode `%s'"
  msgid "unknown Live-Patching Level %qs"
  msgstr "ukendt maskintilstand '%s'"
  
! #: common.opt:2758
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown basic block reordering algorithm %qs"
  msgstr "ukendt registernavn: %s"
  
! #: common.opt:3094
  #, gcc-internal-format
  msgid "unknown TLS model %qs"
  msgstr "ukendt tls-model %qs"
  
! #: common.opt:3127
  #, fuzzy, gcc-internal-format
  msgid "unknown trampoline implementation %qs"
  msgstr "'%s': ukendt tls-model-tilvalg"
  
! #: common.opt:3449
  #, fuzzy, gcc-internal-format
  #| msgid "unknown machine mode `%s'"
  msgid "unknown vectorizer cost model %qs"
  msgstr "ukendt maskintilstand '%s'"
  
! #: common.opt:3480
  #, fuzzy, gcc-internal-format
  msgid "unrecognized automatic variable initialization type %qs"
  msgstr "ukendt registernavn '%s'"
  
! #: common.opt:3506
  #, gcc-internal-format
  msgid "unrecognized visibility value %qs"
  msgstr "ikke genkendt synlighedsvÃ¦rdi %qs"
  
! #: common.opt:3525
  #, fuzzy, gcc-internal-format
  #| msgid "(near initialization for `%s')"
  msgid "unknown vtable verify initialization priority %qs"
  msgstr "(i nÃ¦rheden af klargÃ¸ringen af '%s')"
  
! #: common.opt:3581
  #, fuzzy, gcc-internal-format
  msgid "unrecognized zero init padding bits kind %qs"
  msgstr "ignorerer kommandolinjetilvalget '%s'"
*************** msgstr "dataomrÃ¥det '%s' er i modstrid
*** 25409,25415 ****
  
  #: attribs.cc:538 c-family/c-attribs.cc:1053 c-family/c-attribs.cc:2762
  #: c-family/c-attribs.cc:3318 c-family/c-attribs.cc:5282
! #: c-family/c-attribs.cc:5375 cp/decl.cc:17061 cp/decl.cc:17112
  #: cp/friend.cc:319 cp/tree.cc:5394
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration `%#D' here"
--- 25421,25427 ----
  
  #: attribs.cc:538 c-family/c-attribs.cc:1053 c-family/c-attribs.cc:2762
  #: c-family/c-attribs.cc:3318 c-family/c-attribs.cc:5282
! #: c-family/c-attribs.cc:5375 cp/decl.cc:17059 cp/decl.cc:17110
  #: cp/friend.cc:319 cp/tree.cc:5394
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration `%#D' here"
*************** msgstr "egenskabsdirektivet '%s' ignorer
*** 25430,25436 ****
  msgid "%<%E::%E%> scoped attribute directive ignored"
  msgstr "egenskabsdirektivet '%s' ignoreret"
  
! #: attribs.cc:761 c/c-parser.cc:2144 cp/cp-gimplify.cc:3704
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments specified for %qE attribute"
--- 25442,25448 ----
  msgid "%<%E::%E%> scoped attribute directive ignored"
  msgstr "egenskabsdirektivet '%s' ignoreret"
  
! #: attribs.cc:761 c/c-parser.cc:2189 cp/cp-gimplify.cc:3709
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments specified for %qE attribute"
*************** msgstr "forkert antal parametre angivet
*** 25442,25448 ****
  msgid "expected %i or more, found %i"
  msgstr "forventede %<return%>"
  
! #: attribs.cc:767 c/c-parser.cc:2147 cp/cp-gimplify.cc:3706
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "expected %<,%>"
  msgid "expected %i, found %i"
--- 25454,25460 ----
  msgid "expected %i or more, found %i"
  msgstr "forventede %<return%>"
  
! #: attribs.cc:767 c/c-parser.cc:2192 cp/cp-gimplify.cc:3711
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "expected %<,%>"
  msgid "expected %i, found %i"
*************** msgstr "egenskaben '%s' kan kun anvendes
*** 25512,25533 ****
  #: c-family/c-attribs.cc:6073 c-family/c-attribs.cc:6105
  #: c-family/c-attribs.cc:6147 c-family/c-attribs.cc:6163
  #: c-family/c-attribs.cc:6335 c-family/c-attribs.cc:6347
! #: c-family/c-common.cc:6235 c-family/c-common.cc:6238 config/darwin.cc:2208
  #: config/arm/arm.cc:7515 config/arm/arm.cc:7542 config/arm/arm.cc:7559
  #: config/avr/avr.cc:11304 config/csky/csky.cc:6498 config/csky/csky.cc:6519
  #: config/h8300/h8300.cc:4972 config/h8300/h8300.cc:4996
  #: config/i386/i386-options.cc:3774 config/i386/i386-options.cc:3932
  #: config/i386/i386-options.cc:4164 config/i386/i386-options.cc:4194
  #: config/ia64/ia64.cc:799 config/loongarch/loongarch.cc:8197
! #: config/rs6000/rs6000.cc:20745 ada/gcc-interface/utils.cc:6900
! #: ada/gcc-interface/utils.cc:6916 ada/gcc-interface/utils.cc:7013
! #: ada/gcc-interface/utils.cc:7030 ada/gcc-interface/utils.cc:7047
! #: ada/gcc-interface/utils.cc:7062 ada/gcc-interface/utils.cc:7078
! #: ada/gcc-interface/utils.cc:7104 ada/gcc-interface/utils.cc:7173
! #: ada/gcc-interface/utils.cc:7200 ada/gcc-interface/utils.cc:7245
! #: ada/gcc-interface/utils.cc:7266 ada/gcc-interface/utils.cc:7314
! #: ada/gcc-interface/utils.cc:7330 ada/gcc-interface/utils.cc:7364
! #: c/c-decl.cc:4952 c/c-decl.cc:4955 c/c-decl.cc:4982 c/c-parser.cc:6097
  #: cp/tree.cc:5062 cp/tree.cc:5561 d/d-attribs.cc:483 d/d-attribs.cc:702
  #: d/d-attribs.cc:723 d/d-attribs.cc:739 d/d-attribs.cc:756 d/d-attribs.cc:788
  #: d/d-attribs.cc:917 d/d-attribs.cc:976 d/d-attribs.cc:992 d/d-attribs.cc:1008
--- 25524,25545 ----
  #: c-family/c-attribs.cc:6073 c-family/c-attribs.cc:6105
  #: c-family/c-attribs.cc:6147 c-family/c-attribs.cc:6163
  #: c-family/c-attribs.cc:6335 c-family/c-attribs.cc:6347
! #: c-family/c-common.cc:6256 c-family/c-common.cc:6259 config/darwin.cc:2208
  #: config/arm/arm.cc:7515 config/arm/arm.cc:7542 config/arm/arm.cc:7559
  #: config/avr/avr.cc:11304 config/csky/csky.cc:6498 config/csky/csky.cc:6519
  #: config/h8300/h8300.cc:4972 config/h8300/h8300.cc:4996
  #: config/i386/i386-options.cc:3774 config/i386/i386-options.cc:3932
  #: config/i386/i386-options.cc:4164 config/i386/i386-options.cc:4194
  #: config/ia64/ia64.cc:799 config/loongarch/loongarch.cc:8197
! #: config/rs6000/rs6000.cc:20745 ada/gcc-interface/utils.cc:6902
! #: ada/gcc-interface/utils.cc:6918 ada/gcc-interface/utils.cc:7015
! #: ada/gcc-interface/utils.cc:7032 ada/gcc-interface/utils.cc:7049
! #: ada/gcc-interface/utils.cc:7064 ada/gcc-interface/utils.cc:7080
! #: ada/gcc-interface/utils.cc:7106 ada/gcc-interface/utils.cc:7175
! #: ada/gcc-interface/utils.cc:7202 ada/gcc-interface/utils.cc:7247
! #: ada/gcc-interface/utils.cc:7268 ada/gcc-interface/utils.cc:7316
! #: ada/gcc-interface/utils.cc:7332 ada/gcc-interface/utils.cc:7366
! #: c/c-decl.cc:4952 c/c-decl.cc:4955 c/c-decl.cc:4982 c/c-parser.cc:6142
  #: cp/tree.cc:5062 cp/tree.cc:5561 d/d-attribs.cc:483 d/d-attribs.cc:702
  #: d/d-attribs.cc:723 d/d-attribs.cc:739 d/d-attribs.cc:756 d/d-attribs.cc:788
  #: d/d-attribs.cc:917 d/d-attribs.cc:976 d/d-attribs.cc:992 d/d-attribs.cc:1008
*************** msgstr "egenskaben '%s' ignoreret"
*** 25551,25558 ****
  msgid "missing %<target%> attribute for multi-versioned %qD"
  msgstr "uforenelig egenskab '%s' ignoreret"
  
! #: attribs.cc:1224 cp/decl.cc:1359 cp/decl.cc:2371 cp/decl.cc:2419
! #: cp/decl.cc:2435 cp/decl.cc:3134 cp/decl.cc:3586
  #, gcc-internal-format
  msgid "previous declaration of %qD"
  msgstr "tidligere erklÃ¦ring af %qD"
--- 25563,25570 ----
  msgid "missing %<target%> attribute for multi-versioned %qD"
  msgstr "uforenelig egenskab '%s' ignoreret"
  
! #: attribs.cc:1224 cp/decl.cc:1357 cp/decl.cc:2369 cp/decl.cc:2417
! #: cp/decl.cc:2433 cp/decl.cc:3132 cp/decl.cc:3584
  #, gcc-internal-format
  msgid "previous declaration of %qD"
  msgstr "tidligere erklÃ¦ring af %qD"
*************** msgstr "kan ikke lÃ¦se funktionsprofil f
*** 25665,25671 ****
  msgid "offset %qwi outside bounds of constant string"
  msgstr "forskydning udenfor grÃ¦nserne af konstant streng"
  
! #: builtins.cc:707 cp/name-lookup.cc:6938
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "%qE declared here"
--- 25677,25683 ----
  msgid "offset %qwi outside bounds of constant string"
  msgstr "forskydning udenfor grÃ¦nserne af konstant streng"
  
! #: builtins.cc:707 cp/name-lookup.cc:6941
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "%qE declared here"
*************** msgstr "konstant parameter uden for det
*** 25785,25793 ****
  msgid "illegal argument 0 to %qs"
  msgstr "ugyldig typeparameter"
  
  #. All valid uses of __builtin_va_arg_pack () are removed during
  #. inlining.
! #: builtins.cc:8084 expr.cc:12464
  #, fuzzy, gcc-internal-format
  #| msgid "invalid arg to `__builtin_frame_address'"
  msgid "invalid use of %<__builtin_va_arg_pack ()%>"
--- 25797,25811 ----
  msgid "illegal argument 0 to %qs"
  msgstr "ugyldig typeparameter"
  
+ #: builtins.cc:7806 internal-fn.cc:4030
+ #, fuzzy, gcc-internal-format
+ #| msgid "third arg to `__builtin_prefetch' must be a constant"
+ msgid "third argument to %<crc%> builtins must be a constant"
+ msgstr "en tredje parameter til '__builtin_prefetch' skal vÃ¦re en konstant"
+ 
  #. All valid uses of __builtin_va_arg_pack () are removed during
  #. inlining.
! #: builtins.cc:8090 expr.cc:12464
  #, fuzzy, gcc-internal-format
  #| msgid "invalid arg to `__builtin_frame_address'"
  msgid "invalid use of %<__builtin_va_arg_pack ()%>"
*************** msgstr "ugyldig parameter til '__builtin
*** 25795,25859 ****
  
  #. All valid uses of __builtin_va_arg_pack_len () are removed during
  #. inlining.
! #: builtins.cc:8090
  #, fuzzy, gcc-internal-format
  #| msgid "invalid arg to `__builtin_frame_address'"
  msgid "invalid use of %<__builtin_va_arg_pack_len ()%>"
  msgstr "ugyldig parameter til '__builtin_frame_address'"
  
! #: builtins.cc:8379
  #, fuzzy, gcc-internal-format
  #| msgid "__builtin_longjmp second argument must be 1"
  msgid "%<__builtin_longjmp%> second argument must be 1"
  msgstr "den anden paramter til '__builtin_longjmp' skal vÃ¦re 1"
  
! #: builtins.cc:9343
  #, gcc-internal-format
  msgid "target format does not support infinity"
  msgstr "mÃ¥lprocessoren understÃ¸tter ikke uendelig"
  
! #: builtins.cc:11402
  #, fuzzy, gcc-internal-format
  #| msgid "`va_start' used in function with fixed args"
  msgid "%<va_start%> used in function with fixed arguments"
  msgstr "`va_start' benyttet i en funktion med fast antal parametre"
  
! #: builtins.cc:11410
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to function `va_start'"
  msgid "wrong number of arguments to function %<va_start%>"
  msgstr "for mange parametre til funktionen 'va_start'"
  
! #: builtins.cc:11425
  #, fuzzy, gcc-internal-format
  #| msgid "`__builtin_next_arg' called without an argument"
  msgid "%<__builtin_next_arg%> called without an argument"
  msgstr "`__builtin_next_arg' kaldt uden en parameter"
  
! #: builtins.cc:11430
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments to function %<__builtin_next_arg%>"
  msgstr "forkert antal parametre angivet til egenskaben '%s'"
  
! #: builtins.cc:11463
  #, fuzzy, gcc-internal-format
  #| msgid "second parameter of `va_start' not last named argument"
  msgid "second parameter of %<va_start%> not last named argument"
  msgstr "den anden parameter til 'va_start' er ikke den sidste navngivne parameter"
  
! #: builtins.cc:11476 c/c-parser.cc:11669
  #, gcc-internal-format
  msgid "undefined behavior when second parameter of %<va_start%> is declared with %<register%> storage"
  msgstr ""
  
! #: builtins.cc:11505
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute argument not an integer constant"
  msgid "first argument of %qD must be a pointer, second integer constant"
  msgstr "parameteren til egenskaben '%s' er ikke en heltalskonstant"
  
! #: builtins.cc:11518
  #, fuzzy, gcc-internal-format
  #| msgid "argument of `asm' is not a constant string"
  msgid "last argument of %qD is not integer constant between 0 and 3"
--- 25813,25877 ----
  
  #. All valid uses of __builtin_va_arg_pack_len () are removed during
  #. inlining.
! #: builtins.cc:8096
  #, fuzzy, gcc-internal-format
  #| msgid "invalid arg to `__builtin_frame_address'"
  msgid "invalid use of %<__builtin_va_arg_pack_len ()%>"
  msgstr "ugyldig parameter til '__builtin_frame_address'"
  
! #: builtins.cc:8385
  #, fuzzy, gcc-internal-format
  #| msgid "__builtin_longjmp second argument must be 1"
  msgid "%<__builtin_longjmp%> second argument must be 1"
  msgstr "den anden paramter til '__builtin_longjmp' skal vÃ¦re 1"
  
! #: builtins.cc:9349
  #, gcc-internal-format
  msgid "target format does not support infinity"
  msgstr "mÃ¥lprocessoren understÃ¸tter ikke uendelig"
  
! #: builtins.cc:11408
  #, fuzzy, gcc-internal-format
  #| msgid "`va_start' used in function with fixed args"
  msgid "%<va_start%> used in function with fixed arguments"
  msgstr "`va_start' benyttet i en funktion med fast antal parametre"
  
! #: builtins.cc:11416
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to function `va_start'"
  msgid "wrong number of arguments to function %<va_start%>"
  msgstr "for mange parametre til funktionen 'va_start'"
  
! #: builtins.cc:11431
  #, fuzzy, gcc-internal-format
  #| msgid "`__builtin_next_arg' called without an argument"
  msgid "%<__builtin_next_arg%> called without an argument"
  msgstr "`__builtin_next_arg' kaldt uden en parameter"
  
! #: builtins.cc:11436
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments to function %<__builtin_next_arg%>"
  msgstr "forkert antal parametre angivet til egenskaben '%s'"
  
! #: builtins.cc:11469
  #, fuzzy, gcc-internal-format
  #| msgid "second parameter of `va_start' not last named argument"
  msgid "second parameter of %<va_start%> not last named argument"
  msgstr "den anden parameter til 'va_start' er ikke den sidste navngivne parameter"
  
! #: builtins.cc:11482 c/c-parser.cc:11714
  #, gcc-internal-format
  msgid "undefined behavior when second parameter of %<va_start%> is declared with %<register%> storage"
  msgstr ""
  
! #: builtins.cc:11511
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute argument not an integer constant"
  msgid "first argument of %qD must be a pointer, second integer constant"
  msgstr "parameteren til egenskaben '%s' er ikke en heltalskonstant"
  
! #: builtins.cc:11524
  #, fuzzy, gcc-internal-format
  #| msgid "argument of `asm' is not a constant string"
  msgid "last argument of %qD is not integer constant between 0 and 3"
*************** msgstr "parameteren til 'asm' er ikke en
*** 25865,25876 ****
  msgid "cannot tail-call: %s"
  msgstr "[kan ikke finde %s]"
  
! #: calls.cc:2818
  #, gcc-internal-format
  msgid "function call has aggregate value"
  msgstr "funktionskald har en sammensat vÃ¦rdi"
  
! #: calls.cc:3561
  #, fuzzy, gcc-internal-format
  #| msgid "Pass all arguments on stack"
  msgid "passing too large argument on stack"
--- 25883,25894 ----
  msgid "cannot tail-call: %s"
  msgstr "[kan ikke finde %s]"
  
! #: calls.cc:2819
  #, gcc-internal-format
  msgid "function call has aggregate value"
  msgstr "funktionskald har en sammensat vÃ¦rdi"
  
! #: calls.cc:3562
  #, fuzzy, gcc-internal-format
  #| msgid "Pass all arguments on stack"
  msgid "passing too large argument on stack"
*************** msgstr "Overbring alle parametre pÃ¥ sta
*** 25882,26007 ****
  msgid "%<verify_marked_backedges%> failed"
  msgstr "verify_flow_info mislykkedes"
  
! #: cfgexpand.cc:2128
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%s' is too large"
  msgid "total size of local objects is too large"
  msgstr "stÃ¸rrelsen af tabellen '%s' er for stor"
  
! #: cfgexpand.cc:2131 function.cc:1016 varasm.cc:2539
  #, fuzzy, gcc-internal-format
  msgid "size of variable %q+D is too large"
  msgstr "stÃ¸rrelsen af variablen '%s' er for stor"
  
! #: cfgexpand.cc:2143
  #, fuzzy, gcc-internal-format
  #| msgid "global register variable `%s' used in nested function"
  msgid "cannot allocate stack for variable %q+D, naked function"
  msgstr "global registervariabel '%s' benyttet i indlejret funktion"
  
! #: cfgexpand.cc:3241
  #, fuzzy, gcc-internal-format
  #| msgid "too many alternatives in `asm'"
  msgid "too many alternatives in %<asm%>"
  msgstr "for mange alternativer i 'asm'"
  
! #: cfgexpand.cc:3248
  #, fuzzy, gcc-internal-format
  #| msgid "operand constraints for `asm' differ in number of alternatives"
  msgid "operand constraints for %<asm%> differ in number of alternatives"
  msgstr "operandbegrÃ¦nsninger til 'asm' har forskellige antal alternativer"
  
! #: cfgexpand.cc:3270
  #, fuzzy, gcc-internal-format
  #| msgid "asm-specifier for variable `%s' conflicts with asm clobber list"
  msgid "%<asm%> specifier for variable %qE conflicts with %<asm%> clobber list"
  msgstr "asm-anvisning for variablen '%s' strider mod asm-overskrivelsesliste"
  
  #. ??? Diagnose during gimplification?
! #: cfgexpand.cc:3301
  #, fuzzy, gcc-internal-format
  msgid "PIC register clobbered by %qs in %<asm%>"
  msgstr "ukendt registernavn '%s' i 'asm'"
  
  #. ??? Diagnose during gimplification?
! #: cfgexpand.cc:3308
  #, gcc-internal-format
  msgid "the register %qs cannot be clobbered in %<asm%> for the current target"
  msgstr ""
  
! #: cfgexpand.cc:3321
  #, gcc-internal-format
  msgid "listing the stack pointer register %qs in a clobber list is deprecated"
  msgstr ""
  
! #: cfgexpand.cc:3323
  #, gcc-internal-format
  msgid "the value of the stack pointer after an %<asm%> statement must be the same as it was before the statement"
  msgstr ""
  
! #: cfgexpand.cc:3393 varasm.cc:1718
  #, fuzzy, gcc-internal-format
  #| msgid "more than %d operands in `asm'"
  msgid "more than %d operands in %<asm%>"
  msgstr "mere end %d operander i 'asm'"
  
  #. ??? Diagnose during gimplification?
! #: cfgexpand.cc:3446
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name `%s' in `asm'"
  msgid "unknown register name %qs in %<asm%>"
  msgstr "ukendt registernavn '%s' i 'asm'"
  
! #: cfgexpand.cc:3518
  #, fuzzy, gcc-internal-format
  #| msgid "invalid Z register replacement for insn"
  msgid "invalid hard register usage between output operands"
  msgstr "ugyldig Z-registererstatning for instruktion"
  
! #: cfgexpand.cc:3545
  #, gcc-internal-format
  msgid "invalid hard register usage between output operand and matching constraint operand"
  msgstr ""
  
! #: cfgexpand.cc:3553
  #, gcc-internal-format
  msgid "invalid hard register usage between earlyclobber operand and input operand"
  msgstr ""
  
! #: cfgexpand.cc:3638 varasm.cc:1757
  #, gcc-internal-format, gfc-internal-format
  msgid "output number %d not directly addressable"
  msgstr "uddata nr. %d kan ikke adresseres direkte"
  
! #: cfgexpand.cc:3734 varasm.cc:1810
  #, fuzzy, gcc-internal-format
  #| msgid "asm operand %d probably doesn't match constraints"
  msgid "%<asm%> operand %d probably does not match constraints"
  msgstr "'asm'-operand %d passer sandsynligvis ikke til begrÃ¦nsninger"
  
! #: cfgexpand.cc:3927
  #, fuzzy, gcc-internal-format
  #| msgid "asm clobber conflict with output operand"
  msgid "%<asm%> clobber conflict with output operand"
  msgstr "asm-overskrivelse er i modstrid med uddataoperander"
  
! #: cfgexpand.cc:3932
  #, fuzzy, gcc-internal-format
  #| msgid "asm clobber conflict with input operand"
  msgid "%<asm%> clobber conflict with input operand"
  msgstr "asm-overskrivelse er i modstrid med inddataoperander"
  
! #: cfgexpand.cc:7029
  #, gcc-internal-format
  msgid "stack protector not protecting local variables: variable length buffer"
  msgstr ""
  
! #: cfgexpand.cc:7033
  #, gcc-internal-format, gfc-internal-format
  msgid "stack protector not protecting function: all local arrays are less than %d bytes long"
  msgstr ""
  
! #: cfgexpand.cc:7322
  #, fuzzy, gcc-internal-format
  #| msgid "Use alternate leaf function entries"
  msgid "patchable function entry %wu exceeds size %wu"
--- 25900,26025 ----
  msgid "%<verify_marked_backedges%> failed"
  msgstr "verify_flow_info mislykkedes"
  
! #: cfgexpand.cc:2129
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%s' is too large"
  msgid "total size of local objects is too large"
  msgstr "stÃ¸rrelsen af tabellen '%s' er for stor"
  
! #: cfgexpand.cc:2132 function.cc:1016 varasm.cc:2539
  #, fuzzy, gcc-internal-format
  msgid "size of variable %q+D is too large"
  msgstr "stÃ¸rrelsen af variablen '%s' er for stor"
  
! #: cfgexpand.cc:2144
  #, fuzzy, gcc-internal-format
  #| msgid "global register variable `%s' used in nested function"
  msgid "cannot allocate stack for variable %q+D, naked function"
  msgstr "global registervariabel '%s' benyttet i indlejret funktion"
  
! #: cfgexpand.cc:3242
  #, fuzzy, gcc-internal-format
  #| msgid "too many alternatives in `asm'"
  msgid "too many alternatives in %<asm%>"
  msgstr "for mange alternativer i 'asm'"
  
! #: cfgexpand.cc:3249
  #, fuzzy, gcc-internal-format
  #| msgid "operand constraints for `asm' differ in number of alternatives"
  msgid "operand constraints for %<asm%> differ in number of alternatives"
  msgstr "operandbegrÃ¦nsninger til 'asm' har forskellige antal alternativer"
  
! #: cfgexpand.cc:3271
  #, fuzzy, gcc-internal-format
  #| msgid "asm-specifier for variable `%s' conflicts with asm clobber list"
  msgid "%<asm%> specifier for variable %qE conflicts with %<asm%> clobber list"
  msgstr "asm-anvisning for variablen '%s' strider mod asm-overskrivelsesliste"
  
  #. ??? Diagnose during gimplification?
! #: cfgexpand.cc:3302
  #, fuzzy, gcc-internal-format
  msgid "PIC register clobbered by %qs in %<asm%>"
  msgstr "ukendt registernavn '%s' i 'asm'"
  
  #. ??? Diagnose during gimplification?
! #: cfgexpand.cc:3309
  #, gcc-internal-format
  msgid "the register %qs cannot be clobbered in %<asm%> for the current target"
  msgstr ""
  
! #: cfgexpand.cc:3322
  #, gcc-internal-format
  msgid "listing the stack pointer register %qs in a clobber list is deprecated"
  msgstr ""
  
! #: cfgexpand.cc:3324
  #, gcc-internal-format
  msgid "the value of the stack pointer after an %<asm%> statement must be the same as it was before the statement"
  msgstr ""
  
! #: cfgexpand.cc:3394 varasm.cc:1718
  #, fuzzy, gcc-internal-format
  #| msgid "more than %d operands in `asm'"
  msgid "more than %d operands in %<asm%>"
  msgstr "mere end %d operander i 'asm'"
  
  #. ??? Diagnose during gimplification?
! #: cfgexpand.cc:3447
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name `%s' in `asm'"
  msgid "unknown register name %qs in %<asm%>"
  msgstr "ukendt registernavn '%s' i 'asm'"
  
! #: cfgexpand.cc:3519
  #, fuzzy, gcc-internal-format
  #| msgid "invalid Z register replacement for insn"
  msgid "invalid hard register usage between output operands"
  msgstr "ugyldig Z-registererstatning for instruktion"
  
! #: cfgexpand.cc:3546
  #, gcc-internal-format
  msgid "invalid hard register usage between output operand and matching constraint operand"
  msgstr ""
  
! #: cfgexpand.cc:3554
  #, gcc-internal-format
  msgid "invalid hard register usage between earlyclobber operand and input operand"
  msgstr ""
  
! #: cfgexpand.cc:3639 varasm.cc:1757
  #, gcc-internal-format, gfc-internal-format
  msgid "output number %d not directly addressable"
  msgstr "uddata nr. %d kan ikke adresseres direkte"
  
! #: cfgexpand.cc:3735 varasm.cc:1810
  #, fuzzy, gcc-internal-format
  #| msgid "asm operand %d probably doesn't match constraints"
  msgid "%<asm%> operand %d probably does not match constraints"
  msgstr "'asm'-operand %d passer sandsynligvis ikke til begrÃ¦nsninger"
  
! #: cfgexpand.cc:3928
  #, fuzzy, gcc-internal-format
  #| msgid "asm clobber conflict with output operand"
  msgid "%<asm%> clobber conflict with output operand"
  msgstr "asm-overskrivelse er i modstrid med uddataoperander"
  
! #: cfgexpand.cc:3933
  #, fuzzy, gcc-internal-format
  #| msgid "asm clobber conflict with input operand"
  msgid "%<asm%> clobber conflict with input operand"
  msgstr "asm-overskrivelse er i modstrid med inddataoperander"
  
! #: cfgexpand.cc:7085
  #, gcc-internal-format
  msgid "stack protector not protecting local variables: variable length buffer"
  msgstr ""
  
! #: cfgexpand.cc:7089
  #, gcc-internal-format, gfc-internal-format
  msgid "stack protector not protecting function: all local arrays are less than %d bytes long"
  msgstr ""
  
! #: cfgexpand.cc:7378
  #, fuzzy, gcc-internal-format
  #| msgid "Use alternate leaf function entries"
  msgid "patchable function entry %wu exceeds size %wu"
*************** msgstr "basisblokkene er ikke nummeret i
*** 26585,26907 ****
  msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)"
  msgstr "antallet af basisbloknoter i instruktionskÃ¦den (%d) != n_basic_blocks (%d)"
  
! #: cgraph.cc:3266
  #, fuzzy, gcc-internal-format
  #| msgid "left shift count is negative"
  msgid "caller edge count invalid"
  msgstr "venstreskiftsantal er negativ"
  
! #: cgraph.cc:3363
  #, gcc-internal-format
  msgid "missing indirect call in speculative call sequence"
  msgstr ""
  
! #: cgraph.cc:3368
  #, gcc-internal-format
  msgid "indirect call in speculative call sequence has no speculative flag"
  msgstr ""
  
! #: cgraph.cc:3398
  #, gcc-internal-format
  msgid "speculative edges are not adjacent"
  msgstr ""
  
! #: cgraph.cc:3404
  #, gcc-internal-format, gfc-internal-format
  msgid "direct call to %s in speculative call sequence has no speculative flag"
  msgstr ""
  
! #: cgraph.cc:3410 cgraph.cc:3440
  #, gcc-internal-format, gfc-internal-format
  msgid "direct call to %s in speculative call sequence has speculative_id %i out of range"
  msgstr ""
  
! #: cgraph.cc:3417
  #, gcc-internal-format, gfc-internal-format
  msgid "duplicate direct call to %s in speculative call sequence with speculative_id %i"
  msgstr ""
  
! #: cgraph.cc:3428
  #, gcc-internal-format
  msgid "call stmt hash does not point to first direct edge of speculative call sequence"
  msgstr ""
  
! #: cgraph.cc:3447
  #, gcc-internal-format, gfc-internal-format
  msgid "duplicate reference %s in speculative call sequence with speculative_id %i"
  msgstr ""
  
! #: cgraph.cc:3460
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Missing counts for called function %s/%i"
  msgid "missing direct call for speculation %i"
  msgstr "Manglende antal for kaldt funktion %s/%i"
  
! #: cgraph.cc:3465
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "missing barrier after block %i"
  msgid "missing ref for speculation %i"
  msgstr "manglende barriere efter blok %i"
  
! #: cgraph.cc:3474
  #, gcc-internal-format, gfc-internal-format
  msgid "number of speculative targets %i mismatched with num_speculative_call_targets %i"
  msgstr ""
  
! #: cgraph.cc:3503
  #, gcc-internal-format, gfc-internal-format
  msgid "aux field set for edge %s->%s"
  msgstr ""
  
! #: cgraph.cc:3510
  #, gcc-internal-format
  msgid "cgraph count invalid"
  msgstr ""
  
! #: cgraph.cc:3515
  #, gcc-internal-format
  msgid "inline clone in same comdat group list"
  msgstr ""
  
! #: cgraph.cc:3520
  #, fuzzy, gcc-internal-format
  #| msgid "initializer element is not constant"
  msgid "inline clone count is not compatible"
  msgstr "startvÃ¦rdielement er ikke en konstant"
  
! #: cgraph.cc:3527
  #, fuzzy, gcc-internal-format
  #| msgid "%s rotate count is negative"
  msgid "tp_first_run must be non-negative"
  msgstr "%s-roteringsantal er negativt"
  
! #: cgraph.cc:3532
  #, fuzzy, gcc-internal-format
  #| msgid "no symbol table found"
  msgid "local symbols must be defined"
  msgstr "ingen symboltabel fundet"
  
! #: cgraph.cc:3537
  #, gcc-internal-format
  msgid "externally visible inline clone"
  msgstr ""
  
! #: cgraph.cc:3542
  #, gcc-internal-format
  msgid "inline clone with address taken"
  msgstr ""
  
! #: cgraph.cc:3547
  #, gcc-internal-format
  msgid "inline clone is forced to output"
  msgstr ""
  
! #: cgraph.cc:3554
  #, gcc-internal-format
  msgid "calls_comdat_local is set outside of a comdat group"
  msgstr ""
  
! #: cgraph.cc:3559
  #, gcc-internal-format
  msgid "invalid calls_comdat_local flag"
  msgstr ""
  
! #: cgraph.cc:3566
  #, fuzzy, gcc-internal-format
  #| msgid "`return' with no value, in function returning non-void"
  msgid "malloc attribute should be used for a function that returns a pointer"
  msgstr "'return' uden nogen vÃ¦rdi i en funktion der ikke returnerer void"
  
! #: cgraph.cc:3578
  #, fuzzy, gcc-internal-format
  #| msgid "target specific option mismatch"
  msgid "semantic interposition mismatch"
  msgstr "misforhold i mÃ¥lspecifikke tilvalg"
  
! #: cgraph.cc:3585
  #, gcc-internal-format, gfc-internal-format
  msgid "aux field set for indirect edge from %s"
  msgstr ""
  
! #: cgraph.cc:3591 cgraph.cc:3651
  #, fuzzy, gcc-internal-format
  #| msgid "-march=%s is not compatible with the selected ABI"
  msgid "edge count is not compatible with function count"
  msgstr "-march=%s er ikke forenelig med den valgte ABI"
  
! #: cgraph.cc:3599
  #, gcc-internal-format, gfc-internal-format
  msgid "An indirect edge from %s is not marked as indirect or has associated indirect_info, the corresponding statement is: "
  msgstr ""
  
! #: cgraph.cc:3607 cgraph.cc:3679
  #, gcc-internal-format
  msgid "edge has both call_stmt and lto_stmt_uid set"
  msgstr ""
  
! #: cgraph.cc:3619
  #, gcc-internal-format, gfc-internal-format
  msgid "comdat-local function called by %s outside its comdat"
  msgstr ""
  
! #: cgraph.cc:3629
  #, fuzzy, gcc-internal-format
  #| msgid "section pointer missing"
  msgid "inlined_to pointer is wrong"
  msgstr "sektionshenvisning mangler"
  
! #: cgraph.cc:3634
  #, fuzzy, gcc-internal-format
  #| msgid "multiple `virtual' specifiers"
  msgid "multiple inline callers"
  msgstr "mere end Ã©n 'virtual'-angivelse"
  
! #: cgraph.cc:3641
  #, gcc-internal-format
  msgid "inlined_to pointer set for noninline callers"
  msgstr ""
  
! #: cgraph.cc:3669
  #, fuzzy, gcc-internal-format
  #| msgid "left shift count is negative"
  msgid "caller edge count does not match BB count"
  msgstr "venstreskiftsantal er negativ"
  
! #: cgraph.cc:3700
  #, gcc-internal-format
  msgid "indirect call count does not match BB count"
  msgstr ""
  
! #: cgraph.cc:3717
  #, gcc-internal-format
  msgid "reference has both stmt and lto_stmt_uid set"
  msgstr ""
  
! #: cgraph.cc:3728
  #, gcc-internal-format
  msgid "inlined_to pointer is set but no predecessors found"
  msgstr ""
  
! #: cgraph.cc:3733
  #, fuzzy, gcc-internal-format
  #| msgid "invalid pointer to bit-field `%D'"
  msgid "inlined_to pointer refers to itself"
  msgstr "ugyldig henvisning til bitfeltet '%D'"
  
! #: cgraph.cc:3744
  #, gcc-internal-format
  msgid "cgraph_node has wrong clone_of"
  msgstr ""
  
! #: cgraph.cc:3757
  #, gcc-internal-format
  msgid "cgraph_node has wrong clone list"
  msgstr ""
  
! #: cgraph.cc:3763
  #, gcc-internal-format
  msgid "cgraph_node is in clone list but it is not clone"
  msgstr ""
  
! #: cgraph.cc:3768
  #, gcc-internal-format
  msgid "cgraph_node has wrong prev_clone pointer"
  msgstr ""
  
! #: cgraph.cc:3773
  #, gcc-internal-format
  msgid "double linked list of clones corrupted"
  msgstr ""
  
! #: cgraph.cc:3785
  #, gcc-internal-format
  msgid "Alias has call edges"
  msgstr ""
  
! #: cgraph.cc:3791
  #, gcc-internal-format
  msgid "Alias has non-alias reference"
  msgstr ""
  
! #: cgraph.cc:3796
  #, gcc-internal-format
  msgid "Alias has more than one alias reference"
  msgstr ""
  
! #: cgraph.cc:3803
  #, gcc-internal-format
  msgid "Analyzed alias has no reference"
  msgstr ""
  
! #: cgraph.cc:3812
  #, gcc-internal-format
  msgid "No edge out of thunk node"
  msgstr ""
  
! #: cgraph.cc:3817
  #, gcc-internal-format
  msgid "More than one edge out of thunk node"
  msgstr ""
  
! #: cgraph.cc:3822
  #, gcc-internal-format
  msgid "Thunk is not supposed to have body"
  msgstr ""
  
! #: cgraph.cc:3858
  #, gcc-internal-format
  msgid "shared call_stmt:"
  msgstr ""
  
! #: cgraph.cc:3866
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' used prior to declaration"
  msgid "edge points to wrong declaration:"
  msgstr "'%s' benyttes fÃ¸r erklÃ¦ringen"
  
! #: cgraph.cc:3875
  #, gcc-internal-format
  msgid "an indirect edge with unknown callee corresponding to a call_stmt with a known declaration:"
  msgstr ""
  
! #: cgraph.cc:3885
  #, gcc-internal-format
  msgid "missing callgraph edge for call stmt:"
  msgstr ""
  
! #: cgraph.cc:3895
  #, gcc-internal-format
  msgid "reference to dead statement"
  msgstr ""
  
! #: cgraph.cc:3908
  #, gcc-internal-format, gfc-internal-format
  msgid "edge %s->%s has no corresponding call_stmt"
  msgstr ""
  
! #: cgraph.cc:3920
  #, gcc-internal-format, gfc-internal-format
  msgid "an indirect edge from %s has no corresponding call_stmt"
  msgstr ""
  
! #: cgraph.cc:3939 cgraph.cc:3952
  #, gcc-internal-format
  msgid "missing origin for a node in a nested list"
  msgstr ""
  
! #: cgraph.cc:3944
  #, fuzzy, gcc-internal-format
  #| msgid "cast from pointer to integer of different size"
  msgid "origin points to a different parent"
  msgstr "typeomtvingelse fra henvisning til heltal af en anden stÃ¸rrelse"
  
! #: cgraph.cc:3960
  #, fuzzy, gcc-internal-format
  #| msgid "verify_flow_info failed"
  msgid "verify_cgraph_node failed"
  msgstr "verify_flow_info mislykkedes"
  
! #: cgraph.cc:4082 varpool.cc:304
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "string section missing"
  msgid "%s: section %s.%d is missing"
--- 26603,26925 ----
  msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)"
  msgstr "antallet af basisbloknoter i instruktionskÃ¦den (%d) != n_basic_blocks (%d)"
  
! #: cgraph.cc:3279
  #, fuzzy, gcc-internal-format
  #| msgid "left shift count is negative"
  msgid "caller edge count invalid"
  msgstr "venstreskiftsantal er negativ"
  
! #: cgraph.cc:3376
  #, gcc-internal-format
  msgid "missing indirect call in speculative call sequence"
  msgstr ""
  
! #: cgraph.cc:3381
  #, gcc-internal-format
  msgid "indirect call in speculative call sequence has no speculative flag"
  msgstr ""
  
! #: cgraph.cc:3411
  #, gcc-internal-format
  msgid "speculative edges are not adjacent"
  msgstr ""
  
! #: cgraph.cc:3417
  #, gcc-internal-format, gfc-internal-format
  msgid "direct call to %s in speculative call sequence has no speculative flag"
  msgstr ""
  
! #: cgraph.cc:3423 cgraph.cc:3453
  #, gcc-internal-format, gfc-internal-format
  msgid "direct call to %s in speculative call sequence has speculative_id %i out of range"
  msgstr ""
  
! #: cgraph.cc:3430
  #, gcc-internal-format, gfc-internal-format
  msgid "duplicate direct call to %s in speculative call sequence with speculative_id %i"
  msgstr ""
  
! #: cgraph.cc:3441
  #, gcc-internal-format
  msgid "call stmt hash does not point to first direct edge of speculative call sequence"
  msgstr ""
  
! #: cgraph.cc:3460
  #, gcc-internal-format, gfc-internal-format
  msgid "duplicate reference %s in speculative call sequence with speculative_id %i"
  msgstr ""
  
! #: cgraph.cc:3473
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Missing counts for called function %s/%i"
  msgid "missing direct call for speculation %i"
  msgstr "Manglende antal for kaldt funktion %s/%i"
  
! #: cgraph.cc:3478
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "missing barrier after block %i"
  msgid "missing ref for speculation %i"
  msgstr "manglende barriere efter blok %i"
  
! #: cgraph.cc:3487
  #, gcc-internal-format, gfc-internal-format
  msgid "number of speculative targets %i mismatched with num_speculative_call_targets %i"
  msgstr ""
  
! #: cgraph.cc:3516
  #, gcc-internal-format, gfc-internal-format
  msgid "aux field set for edge %s->%s"
  msgstr ""
  
! #: cgraph.cc:3523
  #, gcc-internal-format
  msgid "cgraph count invalid"
  msgstr ""
  
! #: cgraph.cc:3528
  #, gcc-internal-format
  msgid "inline clone in same comdat group list"
  msgstr ""
  
! #: cgraph.cc:3533
  #, fuzzy, gcc-internal-format
  #| msgid "initializer element is not constant"
  msgid "inline clone count is not compatible"
  msgstr "startvÃ¦rdielement er ikke en konstant"
  
! #: cgraph.cc:3540
  #, fuzzy, gcc-internal-format
  #| msgid "%s rotate count is negative"
  msgid "tp_first_run must be non-negative"
  msgstr "%s-roteringsantal er negativt"
  
! #: cgraph.cc:3545
  #, fuzzy, gcc-internal-format
  #| msgid "no symbol table found"
  msgid "local symbols must be defined"
  msgstr "ingen symboltabel fundet"
  
! #: cgraph.cc:3550
  #, gcc-internal-format
  msgid "externally visible inline clone"
  msgstr ""
  
! #: cgraph.cc:3555
  #, gcc-internal-format
  msgid "inline clone with address taken"
  msgstr ""
  
! #: cgraph.cc:3560
  #, gcc-internal-format
  msgid "inline clone is forced to output"
  msgstr ""
  
! #: cgraph.cc:3567
  #, gcc-internal-format
  msgid "calls_comdat_local is set outside of a comdat group"
  msgstr ""
  
! #: cgraph.cc:3572
  #, gcc-internal-format
  msgid "invalid calls_comdat_local flag"
  msgstr ""
  
! #: cgraph.cc:3579
  #, fuzzy, gcc-internal-format
  #| msgid "`return' with no value, in function returning non-void"
  msgid "malloc attribute should be used for a function that returns a pointer"
  msgstr "'return' uden nogen vÃ¦rdi i en funktion der ikke returnerer void"
  
! #: cgraph.cc:3591
  #, fuzzy, gcc-internal-format
  #| msgid "target specific option mismatch"
  msgid "semantic interposition mismatch"
  msgstr "misforhold i mÃ¥lspecifikke tilvalg"
  
! #: cgraph.cc:3598
  #, gcc-internal-format, gfc-internal-format
  msgid "aux field set for indirect edge from %s"
  msgstr ""
  
! #: cgraph.cc:3604 cgraph.cc:3664
  #, fuzzy, gcc-internal-format
  #| msgid "-march=%s is not compatible with the selected ABI"
  msgid "edge count is not compatible with function count"
  msgstr "-march=%s er ikke forenelig med den valgte ABI"
  
! #: cgraph.cc:3612
  #, gcc-internal-format, gfc-internal-format
  msgid "An indirect edge from %s is not marked as indirect or has associated indirect_info, the corresponding statement is: "
  msgstr ""
  
! #: cgraph.cc:3620 cgraph.cc:3692
  #, gcc-internal-format
  msgid "edge has both call_stmt and lto_stmt_uid set"
  msgstr ""
  
! #: cgraph.cc:3632
  #, gcc-internal-format, gfc-internal-format
  msgid "comdat-local function called by %s outside its comdat"
  msgstr ""
  
! #: cgraph.cc:3642
  #, fuzzy, gcc-internal-format
  #| msgid "section pointer missing"
  msgid "inlined_to pointer is wrong"
  msgstr "sektionshenvisning mangler"
  
! #: cgraph.cc:3647
  #, fuzzy, gcc-internal-format
  #| msgid "multiple `virtual' specifiers"
  msgid "multiple inline callers"
  msgstr "mere end Ã©n 'virtual'-angivelse"
  
! #: cgraph.cc:3654
  #, gcc-internal-format
  msgid "inlined_to pointer set for noninline callers"
  msgstr ""
  
! #: cgraph.cc:3682
  #, fuzzy, gcc-internal-format
  #| msgid "left shift count is negative"
  msgid "caller edge count does not match BB count"
  msgstr "venstreskiftsantal er negativ"
  
! #: cgraph.cc:3713
  #, gcc-internal-format
  msgid "indirect call count does not match BB count"
  msgstr ""
  
! #: cgraph.cc:3730
  #, gcc-internal-format
  msgid "reference has both stmt and lto_stmt_uid set"
  msgstr ""
  
! #: cgraph.cc:3741
  #, gcc-internal-format
  msgid "inlined_to pointer is set but no predecessors found"
  msgstr ""
  
! #: cgraph.cc:3746
  #, fuzzy, gcc-internal-format
  #| msgid "invalid pointer to bit-field `%D'"
  msgid "inlined_to pointer refers to itself"
  msgstr "ugyldig henvisning til bitfeltet '%D'"
  
! #: cgraph.cc:3757
  #, gcc-internal-format
  msgid "cgraph_node has wrong clone_of"
  msgstr ""
  
! #: cgraph.cc:3770
  #, gcc-internal-format
  msgid "cgraph_node has wrong clone list"
  msgstr ""
  
! #: cgraph.cc:3776
  #, gcc-internal-format
  msgid "cgraph_node is in clone list but it is not clone"
  msgstr ""
  
! #: cgraph.cc:3781
  #, gcc-internal-format
  msgid "cgraph_node has wrong prev_clone pointer"
  msgstr ""
  
! #: cgraph.cc:3786
  #, gcc-internal-format
  msgid "double linked list of clones corrupted"
  msgstr ""
  
! #: cgraph.cc:3798
  #, gcc-internal-format
  msgid "Alias has call edges"
  msgstr ""
  
! #: cgraph.cc:3804
  #, gcc-internal-format
  msgid "Alias has non-alias reference"
  msgstr ""
  
! #: cgraph.cc:3809
  #, gcc-internal-format
  msgid "Alias has more than one alias reference"
  msgstr ""
  
! #: cgraph.cc:3816
  #, gcc-internal-format
  msgid "Analyzed alias has no reference"
  msgstr ""
  
! #: cgraph.cc:3825
  #, gcc-internal-format
  msgid "No edge out of thunk node"
  msgstr ""
  
! #: cgraph.cc:3830
  #, gcc-internal-format
  msgid "More than one edge out of thunk node"
  msgstr ""
  
! #: cgraph.cc:3835
  #, gcc-internal-format
  msgid "Thunk is not supposed to have body"
  msgstr ""
  
! #: cgraph.cc:3871
  #, gcc-internal-format
  msgid "shared call_stmt:"
  msgstr ""
  
! #: cgraph.cc:3879
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' used prior to declaration"
  msgid "edge points to wrong declaration:"
  msgstr "'%s' benyttes fÃ¸r erklÃ¦ringen"
  
! #: cgraph.cc:3888
  #, gcc-internal-format
  msgid "an indirect edge with unknown callee corresponding to a call_stmt with a known declaration:"
  msgstr ""
  
! #: cgraph.cc:3898
  #, gcc-internal-format
  msgid "missing callgraph edge for call stmt:"
  msgstr ""
  
! #: cgraph.cc:3908
  #, gcc-internal-format
  msgid "reference to dead statement"
  msgstr ""
  
! #: cgraph.cc:3921
  #, gcc-internal-format, gfc-internal-format
  msgid "edge %s->%s has no corresponding call_stmt"
  msgstr ""
  
! #: cgraph.cc:3933
  #, gcc-internal-format, gfc-internal-format
  msgid "an indirect edge from %s has no corresponding call_stmt"
  msgstr ""
  
! #: cgraph.cc:3952 cgraph.cc:3965
  #, gcc-internal-format
  msgid "missing origin for a node in a nested list"
  msgstr ""
  
! #: cgraph.cc:3957
  #, fuzzy, gcc-internal-format
  #| msgid "cast from pointer to integer of different size"
  msgid "origin points to a different parent"
  msgstr "typeomtvingelse fra henvisning til heltal af en anden stÃ¸rrelse"
  
! #: cgraph.cc:3973
  #, fuzzy, gcc-internal-format
  #| msgid "verify_flow_info failed"
  msgid "verify_cgraph_node failed"
  msgstr "verify_flow_info mislykkedes"
  
! #: cgraph.cc:4095 varpool.cc:304
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "string section missing"
  msgid "%s: section %s.%d is missing"
*************** msgstr ""
*** 26994,27005 ****
  
  #. include_self=
  #. TODO: Add OPT_Wundefined-inline.
! #: cgraphunit.cc:1112 c/c-decl.cc:13593
  #, gcc-internal-format
  msgid "%q+F used but never defined"
  msgstr "%q+F brugt, men aldrig defineret"
  
! #: cgraphunit.cc:1114 c/c-decl.cc:13603
  #, gcc-internal-format
  msgid "%q+F declared %<static%> but never defined"
  msgstr "%q+F erklÃ¦ret %<static%>, men aldrig defineret"
--- 27012,27023 ----
  
  #. include_self=
  #. TODO: Add OPT_Wundefined-inline.
! #: cgraphunit.cc:1112 c/c-decl.cc:13597
  #, gcc-internal-format
  msgid "%q+F used but never defined"
  msgstr "%q+F brugt, men aldrig defineret"
  
! #: cgraphunit.cc:1114 c/c-decl.cc:13607
  #, gcc-internal-format
  msgid "%q+F declared %<static%> but never defined"
  msgstr "%q+F erklÃ¦ret %<static%>, men aldrig defineret"
*************** msgstr "miljÃ¸variablen DJGPP er ikke de
*** 27145,27151 ****
  msgid "ld returned %d exit status"
  msgstr "ld returnerede afslutningskoden %d"
  
! #: collect2.cc:916 gcc.cc:8378 config/nvptx/mkoffload.cc:640
  #, gcc-internal-format
  msgid "atexit failed"
  msgstr ""
--- 27163,27169 ----
  msgid "ld returned %d exit status"
  msgstr "ld returnerede afslutningskoden %d"
  
! #: collect2.cc:916 gcc.cc:8378 config/nvptx/mkoffload.cc:646
  #, gcc-internal-format
  msgid "atexit failed"
  msgstr ""
*************** msgstr "funktionen '%s' omerklÃ¦ret med
*** 27695,27701 ****
  msgid "assuming signed overflow does not occur when simplifying %<X - Y %s 0%> to %<X %s Y%>"
  msgstr ""
  
! #: ext-dce.cc:1115
  #, fuzzy, gcc-internal-format
  msgid "ext-dce disabled: %d basic blocks and %d registers; increase %<--param max-gcse-memory%> above %wu"
  msgstr "GCSE deaktiveret: %d basisblokke og %d registre"
--- 27713,27719 ----
  msgid "assuming signed overflow does not occur when simplifying %<X - Y %s 0%> to %<X %s Y%>"
  msgstr ""
  
! #: ext-dce.cc:1202
  #, fuzzy, gcc-internal-format
  msgid "ext-dce disabled: %d basic blocks and %d registers; increase %<--param max-gcse-memory%> above %wu"
  msgstr "GCSE deaktiveret: %d basisblokke og %d registre"
*************** msgstr "hÃ¸jreskiftsantal er negativ"
*** 28525,28531 ****
  msgid "flexible array member %qD does not have well defined padding bits for %qs"
  msgstr "fleksibelt tabelmedlem ikke i slutningen af struktur"
  
! #: gimple-fold.cc:4970 cp/constexpr.cc:5103
  #, gcc-internal-format
  msgid "PDP11 bit-field handling unsupported in %qs"
  msgstr ""
--- 28543,28549 ----
  msgid "flexible array member %qD does not have well defined padding bits for %qs"
  msgstr "fleksibelt tabelmedlem ikke i slutningen af struktur"
  
! #: gimple-fold.cc:4970 cp/constexpr.cc:5115
  #, gcc-internal-format
  msgid "PDP11 bit-field handling unsupported in %qs"
  msgstr ""
*************** msgstr "-mn er ikke understÃ¸ttet for Li
*** 28542,28548 ****
  msgid "%s not supported on this target"
  msgstr "Profilering er ikke understÃ¸ttet pÃ¥ mÃ¥larkitekturen."
  
! #: gimple-fold.cc:8578 gimple-fold.cc:8607
  #, gcc-internal-format, gfc-internal-format
  msgid "comparison is always %d"
  msgstr "sammenligning er altid %d"
--- 28560,28566 ----
  msgid "%s not supported on this target"
  msgstr "Profilering er ikke understÃ¸ttet pÃ¥ mÃ¥larkitekturen."
  
! #: gimple-fold.cc:8582 gimple-fold.cc:8611
  #, gcc-internal-format, gfc-internal-format
  msgid "comparison is always %d"
  msgstr "sammenligning er altid %d"
*************** msgstr ""
*** 28567,28573 ****
  msgid "reference to label %qD defined inside of %<assume%> attribute expression from outside of the attribute"
  msgstr ""
  
! #: gimple-low.cc:112 cp/name-lookup.cc:9308
  #, fuzzy, gcc-internal-format
  #| msgid "label `%D' defined but not used"
  msgid "%qD defined here"
--- 28585,28591 ----
  msgid "reference to label %qD defined inside of %<assume%> attribute expression from outside of the attribute"
  msgstr ""
  
! #: gimple-low.cc:112 cp/name-lookup.cc:9311
  #, fuzzy, gcc-internal-format
  #| msgid "label `%D' defined but not used"
  msgid "%qD defined here"
*************** msgstr "henvisning"
*** 28590,28612 ****
  msgid "function may return address of local variable"
  msgstr "funktion kan returnere adressen pÃ¥ en lokal variabel"
  
! #: gimple-ssa-isolate-paths.cc:422 c/c-typeck.cc:12879
  #, gcc-internal-format
  msgid "function returns address of local variable"
  msgstr "funktion returnerer adressen pÃ¥ en lokal variabel"
  
  #: gimple-ssa-isolate-paths.cc:425 gimple-ssa-warn-access.cc:2075
  #: gimple-ssa-warn-access.cc:3729 tree.cc:12615 tree.cc:12652 tree.cc:12693
! #: tree.cc:12726 c/c-decl.cc:10781 c/c-parser.cc:22345 c/c-parser.cc:22486
! #: c/c-typeck.cc:3673 c/c-typeck.cc:3769 c/c-typeck.cc:3781 c/c-typeck.cc:6512
! #: c/c-typeck.cc:12780 c/c-typeck.cc:12797 c/gimple-parser.cc:2660
  #: c/gimple-parser.cc:2668 cp/call.cc:8391 cp/call.cc:8474 cp/call.cc:8493
! #: cp/call.cc:10729 cp/class.cc:9468 cp/constexpr.cc:889 cp/constexpr.cc:1348
! #: cp/constexpr.cc:4511 cp/constexpr.cc:6205 cp/constexpr.cc:6584
! #: cp/cvt.cc:1110 cp/cvt.cc:1150 cp/decl.cc:9605 cp/decl2.cc:6351
! #: cp/decl2.cc:6400 cp/lambda.cc:639 cp/method.cc:1240 cp/parser.cc:23073
! #: cp/pt.cc:9266 cp/pt.cc:9936 cp/semantics.cc:2753 cp/semantics.cc:5290
! #: cp/typeck.cc:2164 cp/typeck.cc:2385 cp/typeck.cc:4570 cp/typeck.cc:10793
  #: rust/backend/rust-constexpr.cc:4407 rust/backend/rust-tree.cc:621
  #: rust/backend/rust-tree.cc:3800
  #, fuzzy, gcc-internal-format
--- 28608,28630 ----
  msgid "function may return address of local variable"
  msgstr "funktion kan returnere adressen pÃ¥ en lokal variabel"
  
! #: gimple-ssa-isolate-paths.cc:422 c/c-typeck.cc:12896
  #, gcc-internal-format
  msgid "function returns address of local variable"
  msgstr "funktion returnerer adressen pÃ¥ en lokal variabel"
  
  #: gimple-ssa-isolate-paths.cc:425 gimple-ssa-warn-access.cc:2075
  #: gimple-ssa-warn-access.cc:3729 tree.cc:12615 tree.cc:12652 tree.cc:12693
! #: tree.cc:12726 c/c-decl.cc:10785 c/c-parser.cc:22390 c/c-parser.cc:22531
! #: c/c-typeck.cc:3673 c/c-typeck.cc:3769 c/c-typeck.cc:3781 c/c-typeck.cc:6513
! #: c/c-typeck.cc:12797 c/c-typeck.cc:12814 c/gimple-parser.cc:2660
  #: c/gimple-parser.cc:2668 cp/call.cc:8391 cp/call.cc:8474 cp/call.cc:8493
! #: cp/call.cc:10729 cp/class.cc:9502 cp/constexpr.cc:889 cp/constexpr.cc:1348
! #: cp/constexpr.cc:4511 cp/constexpr.cc:6220 cp/constexpr.cc:6600
! #: cp/cvt.cc:1110 cp/cvt.cc:1150 cp/decl.cc:9603 cp/decl2.cc:6379
! #: cp/decl2.cc:6428 cp/lambda.cc:639 cp/method.cc:1240 cp/parser.cc:23077
! #: cp/pt.cc:9271 cp/pt.cc:9941 cp/semantics.cc:2753 cp/semantics.cc:5290
! #: cp/typeck.cc:2164 cp/typeck.cc:2385 cp/typeck.cc:4686 cp/typeck.cc:10909
  #: rust/backend/rust-constexpr.cc:4407 rust/backend/rust-tree.cc:621
  #: rust/backend/rust-tree.cc:3800
  #, fuzzy, gcc-internal-format
*************** msgstr "ugyldig henvisningstilstand '%s'
*** 29811,29822 ****
  #: gimple-ssa-warn-access.cc:3981 gimple-ssa-warn-access.cc:4629
  #: gimple-ssa-warn-access.cc:4632 gimple-ssa-warn-restrict.cc:1830
  #: tree-ssa-uninit.cc:924 tree-ssa-uninit.cc:1123 c/c-decl.cc:4101
! #: c/c-decl.cc:4391 c/c-typeck.cc:10377 c/c-typeck.cc:13597 cp/call.cc:8808
  #: cp/call.cc:8819 cp/class.cc:1722 cp/class.cc:3543 cp/constexpr.cc:1071
! #: cp/decl.cc:4687 cp/decl.cc:13468 cp/decl.cc:14071 cp/decl.cc:14081
! #: cp/decl.cc:15081 cp/friend.cc:407 cp/friend.cc:417 cp/init.cc:2948
  #: cp/parser.cc:3860 cp/parser.cc:4006 cp/parser.cc:4058 cp/parser.cc:7428
! #: cp/parser.cc:25737 cp/typeck.cc:5069
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "%qD declared here"
--- 29829,29840 ----
  #: gimple-ssa-warn-access.cc:3981 gimple-ssa-warn-access.cc:4629
  #: gimple-ssa-warn-access.cc:4632 gimple-ssa-warn-restrict.cc:1830
  #: tree-ssa-uninit.cc:924 tree-ssa-uninit.cc:1123 c/c-decl.cc:4101
! #: c/c-decl.cc:4391 c/c-typeck.cc:10394 c/c-typeck.cc:13614 cp/call.cc:8808
  #: cp/call.cc:8819 cp/class.cc:1722 cp/class.cc:3543 cp/constexpr.cc:1071
! #: cp/decl.cc:4685 cp/decl.cc:13466 cp/decl.cc:14069 cp/decl.cc:14079
! #: cp/decl.cc:15079 cp/friend.cc:407 cp/friend.cc:417 cp/init.cc:2948
  #: cp/parser.cc:3860 cp/parser.cc:4006 cp/parser.cc:4058 cp/parser.cc:7428
! #: cp/parser.cc:25741 cp/typeck.cc:5185
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "%qD declared here"
*************** msgstr "ingen filer angivet med -fdump-t
*** 31058,31069 ****
  msgid "mismatching definition"
  msgstr "manglende startvÃ¦rdi"
  
! #: ipa-fnsummary.cc:4845
  #, fuzzy, gcc-internal-format
  msgid "invalid fnsummary in LTO stream"
  msgstr "Ugyldig erklÃ¦ring"
  
! #: ipa-fnsummary.cc:4946
  #, gcc-internal-format
  msgid "ipa inline summary is missing in input file"
  msgstr ""
--- 31076,31087 ----
  msgid "mismatching definition"
  msgstr "manglende startvÃ¦rdi"
  
! #: ipa-fnsummary.cc:4860
  #, fuzzy, gcc-internal-format
  msgid "invalid fnsummary in LTO stream"
  msgstr "Ugyldig erklÃ¦ring"
  
! #: ipa-fnsummary.cc:4961
  #, gcc-internal-format
  msgid "ipa inline summary is missing in input file"
  msgstr ""
*************** msgstr ""
*** 31073,31079 ****
  msgid "IPA modref summary is missing in input file"
  msgstr ""
  
! #: ipa-prop.cc:4991 ipa-prop.cc:5035 ipa-prop.cc:5115 ipa-prop.cc:5167
  #, fuzzy, gcc-internal-format
  msgid "invalid jump function in LTO stream"
  msgstr "Ugyldig erklÃ¦ring"
--- 31091,31097 ----
  msgid "IPA modref summary is missing in input file"
  msgstr ""
  
! #: ipa-prop.cc:5019 ipa-prop.cc:5063 ipa-prop.cc:5143 ipa-prop.cc:5195
  #, fuzzy, gcc-internal-format
  msgid "invalid jump function in LTO stream"
  msgstr "Ugyldig erklÃ¦ring"
*************** msgstr ""
*** 31122,31133 ****
  msgid "IPA-SRA access verification failed"
  msgstr "verifikationsfejl ved PC=%d"
  
! #: ipa-sra.cc:2751
  #, gcc-internal-format
  msgid "function %qs, parameter %u, has IPA-SRA accesses which overlap"
  msgstr ""
  
! #: ipa-sra.cc:2754
  #, gcc-internal-format
  msgid "function %qs, parameter %u, is used but does not have any certain IPA-SRA access"
  msgstr ""
--- 31140,31151 ----
  msgid "IPA-SRA access verification failed"
  msgstr "verifikationsfejl ved PC=%d"
  
! #: ipa-sra.cc:2757
  #, gcc-internal-format
  msgid "function %qs, parameter %u, has IPA-SRA accesses which overlap"
  msgstr ""
  
! #: ipa-sra.cc:2760
  #, gcc-internal-format
  msgid "function %qs, parameter %u, is used but does not have any certain IPA-SRA access"
  msgstr ""
*************** msgstr "versionen er ikke understÃ¸ttet"
*** 31538,31544 ****
  msgid "tree code %qs is not supported in LTO streams"
  msgstr "-mcmodel= understÃ¸ttes ikke pÃ¥ 32 bit-systemer"
  
! #: lto-streamer-out.cc:2554
  #, gcc-internal-format
  msgid "LTO streaming of toplevel extended %<asm%> unimplemented"
  msgstr ""
--- 31556,31562 ----
  msgid "tree code %qs is not supported in LTO streams"
  msgstr "-mcmodel= understÃ¸ttes ikke pÃ¥ 32 bit-systemer"
  
! #: lto-streamer-out.cc:2555
  #, gcc-internal-format
  msgid "LTO streaming of toplevel extended %<asm%> unimplemented"
  msgstr ""
*************** msgstr ""
*** 31860,31876 ****
  msgid "%<allocate%> clause must specify an allocator here"
  msgstr ""
  
! #: omp-low.cc:2774 omp-offload.cc:1518
  #, gcc-internal-format
  msgid "%<seq%> overrides other OpenACC loop specifiers"
  msgstr ""
  
! #: omp-low.cc:2777 omp-offload.cc:1519
  #, gcc-internal-format
  msgid "%<auto%> conflicts with other OpenACC loop specifiers"
  msgstr ""
  
! #: omp-low.cc:2781 omp-offload.cc:1553
  #, gcc-internal-format
  msgid "inner loop uses same OpenACC parallelism as containing loop"
  msgstr ""
--- 31878,31894 ----
  msgid "%<allocate%> clause must specify an allocator here"
  msgstr ""
  
! #: omp-low.cc:2774 omp-offload.cc:1519
  #, gcc-internal-format
  msgid "%<seq%> overrides other OpenACC loop specifiers"
  msgstr ""
  
! #: omp-low.cc:2777 omp-offload.cc:1520
  #, gcc-internal-format
  msgid "%<auto%> conflicts with other OpenACC loop specifiers"
  msgstr ""
  
! #: omp-low.cc:2781 omp-offload.cc:1554
  #, gcc-internal-format
  msgid "inner loop uses same OpenACC parallelism as containing loop"
  msgstr ""
*************** msgstr "MCU '%s' ikke understÃ¸ttet"
*** 32200,32272 ****
  msgid "shared-memory region overflow"
  msgstr ""
  
! #: omp-offload.cc:316
  #, gcc-internal-format
  msgid "%qD specified both in declare target %<link%> and implicitly in %<to%> clauses"
  msgstr ""
  
! #: omp-offload.cc:929
  #, gcc-internal-format
  msgid "%<-fopenacc-dim%> operand is malformed at %qs"
  msgstr ""
  
! #: omp-offload.cc:981
  #, gcc-internal-format, gfc-internal-format
  msgid "region contains %s partitioned code but is not %s partitioned"
  msgstr ""
  
! #: omp-offload.cc:987
  #, gcc-internal-format, gfc-internal-format
  msgid "region is %s partitioned but does not contain %s partitioned code"
  msgstr ""
  
! #: omp-offload.cc:1477
  #, gcc-internal-format
  msgid "gang reduction on an orphan loop"
  msgstr ""
  
! #: omp-offload.cc:1551
  #, gcc-internal-format
  msgid "routine call uses same OpenACC parallelism as containing loop"
  msgstr ""
  
! #: omp-offload.cc:1555 omp-offload.cc:1587
  #, gcc-internal-format
  msgid "containing loop here"
  msgstr ""
  
! #: omp-offload.cc:1560
  #, gcc-internal-format
  msgid "routine call uses OpenACC parallelism disallowed by containing routine"
  msgstr ""
  
! #: omp-offload.cc:1562
  #, gcc-internal-format
  msgid "loop uses OpenACC parallelism disallowed by containing routine"
  msgstr ""
  
! #: omp-offload.cc:1567
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "routine %qD declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: omp-offload.cc:1580
  #, gcc-internal-format
  msgid "incorrectly nested OpenACC loop parallelism"
  msgstr ""
  
! #: omp-offload.cc:1721
  #, gcc-internal-format
  msgid "insufficient partitioning available to parallelize element loop"
  msgstr ""
  
! #: omp-offload.cc:1729
  #, gcc-internal-format
  msgid "insufficient partitioning available to parallelize tile loop"
  msgstr ""
  
! #: omp-offload.cc:1731
  #, gcc-internal-format
  msgid "insufficient partitioning available to parallelize loop"
  msgstr ""
--- 32218,32290 ----
  msgid "shared-memory region overflow"
  msgstr ""
  
! #: omp-offload.cc:317
  #, gcc-internal-format
  msgid "%qD specified both in declare target %<link%> and implicitly in %<to%> clauses"
  msgstr ""
  
! #: omp-offload.cc:930
  #, gcc-internal-format
  msgid "%<-fopenacc-dim%> operand is malformed at %qs"
  msgstr ""
  
! #: omp-offload.cc:982
  #, gcc-internal-format, gfc-internal-format
  msgid "region contains %s partitioned code but is not %s partitioned"
  msgstr ""
  
! #: omp-offload.cc:988
  #, gcc-internal-format, gfc-internal-format
  msgid "region is %s partitioned but does not contain %s partitioned code"
  msgstr ""
  
! #: omp-offload.cc:1478
  #, gcc-internal-format
  msgid "gang reduction on an orphan loop"
  msgstr ""
  
! #: omp-offload.cc:1552
  #, gcc-internal-format
  msgid "routine call uses same OpenACC parallelism as containing loop"
  msgstr ""
  
! #: omp-offload.cc:1556 omp-offload.cc:1588
  #, gcc-internal-format
  msgid "containing loop here"
  msgstr ""
  
! #: omp-offload.cc:1561
  #, gcc-internal-format
  msgid "routine call uses OpenACC parallelism disallowed by containing routine"
  msgstr ""
  
! #: omp-offload.cc:1563
  #, gcc-internal-format
  msgid "loop uses OpenACC parallelism disallowed by containing routine"
  msgstr ""
  
! #: omp-offload.cc:1568
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "routine %qD declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: omp-offload.cc:1581
  #, gcc-internal-format
  msgid "incorrectly nested OpenACC loop parallelism"
  msgstr ""
  
! #: omp-offload.cc:1722
  #, gcc-internal-format
  msgid "insufficient partitioning available to parallelize element loop"
  msgstr ""
  
! #: omp-offload.cc:1730
  #, gcc-internal-format
  msgid "insufficient partitioning available to parallelize tile loop"
  msgstr ""
  
! #: omp-offload.cc:1732
  #, gcc-internal-format
  msgid "insufficient partitioning available to parallelize loop"
  msgstr ""
*************** msgstr "UdfÃ¸r krydsspringsoptimering"
*** 32321,32327 ****
  msgid "command-line option %qs is not supported by this configuration"
  msgstr "%s understÃ¸ttes ikke af denne konfiguration"
  
! #: opts-common.cc:1463 opts.cc:2612
  #, fuzzy, gcc-internal-format
  msgid "missing argument to %qs"
  msgstr "der mangler en parameter til tilvalget '-%s'"
--- 32339,32345 ----
  msgid "command-line option %qs is not supported by this configuration"
  msgstr "%s understÃ¸ttes ikke af denne konfiguration"
  
! #: opts-common.cc:1463 opts.cc:2610
  #, fuzzy, gcc-internal-format
  msgid "missing argument to %qs"
  msgstr "der mangler en parameter til tilvalget '-%s'"
*************** msgstr "egenskaben '%s' er ikke understÃ
*** 32571,32829 ****
  msgid "%<-fsplit-stack%> is not supported by this compiler configuration"
  msgstr "%s understÃ¸ttes ikke af denne konfiguration"
  
! #: opts.cc:1284
  #, gcc-internal-format
  msgid "%<-fsanitize=pointer-compare%> must be combined with %<-fsanitize=address%> or %<-fsanitize=kernel-address%>"
  msgstr ""
  
! #: opts.cc:1288
  #, gcc-internal-format
  msgid "%<-fsanitize=pointer-subtract%> must be combined with %<-fsanitize=address%> or %<-fsanitize=kernel-address%>"
  msgstr ""
  
! #: opts.cc:1315
  #, fuzzy, gcc-internal-format
  #| msgid "-pipe is not supported"
  msgid "%<-fsanitize-recover=%s%> is not supported"
  msgstr "-pipe understÃ¸ttes ikke"
  
! #: opts.cc:1327 opts.cc:2324
  #, fuzzy, gcc-internal-format
  #| msgid "-pipe is not supported"
  msgid "%<-fsanitize-trap=%s%> is not supported"
  msgstr "-pipe understÃ¸ttes ikke"
  
! #: opts.cc:1354
  #, gcc-internal-format
  msgid "%<-fsanitize-address-use-after-scope%> requires %<-fstack-reuse=none%> option"
  msgstr ""
  
! #: opts.cc:1361
  #, fuzzy, gcc-internal-format
  #| msgid "-traditional is not supported in C++"
  msgid "transactional memory is not supported with %<-fsanitize=address%>"
  msgstr "-traditional understÃ¸ttes ikke i C++"
  
! #: opts.cc:1364
  #, fuzzy, gcc-internal-format
  #| msgid "-traditional is not supported in C++"
  msgid "transactional memory is not supported with %<-fsanitize=kernel-address%>"
  msgstr "-traditional understÃ¸ttes ikke i C++"
  
! #: opts.cc:1369
  #, fuzzy, gcc-internal-format
  #| msgid "profiling not supported with -mg\n"
  msgid "live patching (with %qs) is not supported with LTO"
  msgstr "profilgenerering understÃ¸ttes ikke med -mg\n"
  
! #: opts.cc:1374
  #, fuzzy, gcc-internal-format
  #| msgid "profiling not supported with -mg\n"
  msgid "vtable verification is not supported with LTO"
  msgstr "profilgenerering understÃ¸ttes ikke med -mg\n"
  
! #: opts.cc:1449
  #, gcc-internal-format
  msgid "variable tracking requested, but useless unless producing debug info"
  msgstr "der blev anmodt om variabelsporing, men den er nyttelÃ¸s uden fejlsÃ¸gningsinformation"
  
! #: opts.cc:1453
  #, gcc-internal-format
  msgid "variable tracking requested, but not supported by this debug format"
  msgstr "der blev anmodt om variabelsporing, men den er ikke understÃ¸ttet af dette fejlsÃ¸gningsformat"
  
! #: opts.cc:1482
  #, gcc-internal-format
  msgid "var-tracking-assignments changes selective scheduling"
  msgstr "var-tracking-assignments Ã¦ndrer selektiv planlÃ¦gning"
  
! #: opts.cc:1495
  #, gcc-internal-format
  msgid "%<-Wstrict-flex-arrays%> is ignored when %<-fstrict-flex-arrays%> is not present"
  msgstr ""
  
! #: opts.cc:1525 config/darwin.cc:3484
  #, fuzzy, gcc-internal-format
  #| msgid "-fdata-sections not supported for this target"
  msgid "%<-freorder-blocks-and-partition%> does not work with exceptions on this architecture"
  msgstr "-fdata-sections understÃ¸ttes ikke pÃ¥ mÃ¥larkitekturen"
  
! #: opts.cc:1541
  #, fuzzy, gcc-internal-format
  #| msgid "-fdata-sections not supported for this target"
  msgid "%<-freorder-blocks-and-partition%> does not support unwind info on this architecture"
  msgstr "-fdata-sections understÃ¸ttes ikke pÃ¥ mÃ¥larkitekturen"
  
! #: opts.cc:1559 config/pa/pa.cc:580
  #, fuzzy, gcc-internal-format
  #| msgid "-fdata-sections not supported for this target"
  msgid "%<-freorder-blocks-and-partition%> does not work on this architecture"
  msgstr "-fdata-sections understÃ¸ttes ikke pÃ¥ mÃ¥larkitekturen"
  
! #: opts.cc:2068
  #, gcc-internal-format
  msgid "unrecognized %<include_flags 0x%x%> passed to %<print_specific_help%>"
  msgstr ""
  
! #: opts.cc:2303
  #, gcc-internal-format
  msgid "%<-fsanitize=all%> option is not valid"
  msgstr ""
  
! #: opts.cc:2358
  #, fuzzy, gcc-internal-format
  msgid "unrecognized argument to %<-f%ssanitize%s=%> option: %q.*s; did you mean %qs?"
  msgstr "ignorerer kommandolinjetilvalget '%s'"
  
! #: opts.cc:2364
  #, fuzzy, gcc-internal-format
  msgid "unrecognized argument to %<-f%ssanitize%s=%> option: %q.*s"
  msgstr "ignorerer kommandolinjetilvalget '%s'"
  
! #: opts.cc:2399
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute directive ignored"
  msgid "%qs attribute directive ignored"
  msgstr "egenskabsdirektivet '%s' ignoreret"
  
! #: opts.cc:2423
  #, fuzzy, gcc-internal-format
  #| msgid "unrecognized section name \"%s\""
  msgid "unrecognized argument to %<-fzero-call-used-regs=%>: %qs"
  msgstr "ukendt sektionsnavn \"%s\""
  
! #: opts.cc:2447
  #, fuzzy, gcc-internal-format
  #| msgid "invalid type argument"
  msgid "invalid arguments for %<-falign-%s%> option: %qs"
  msgstr "ugyldig typeparameter"
  
! #: opts.cc:2462
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function `%s'"
  msgid "invalid number of arguments for %<-falign-%s%> option: %qs"
  msgstr "for fÃ¥ parametre til funktionen '%s'"
  
! #: opts.cc:2471
  #, fuzzy, gcc-internal-format
  #| msgid "-malign-loops=%d is not between 0 and %d"
  msgid "%<-falign-%s%> is not between 0 and %d"
  msgstr "-malign-loops=%d er ikke mellem 0 og %d"
  
! #: opts.cc:2530
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to function `%s'"
  msgid "invalid arguments for %<-fpatchable-function-entry%>"
  msgstr "for mange parametre til funktionen '%s'"
  
! #: opts.cc:2667
  #, gcc-internal-format
  msgid "%<--help%> argument %q.*s is ambiguous, please be more specific"
  msgstr ""
  
! #: opts.cc:2678
  #, fuzzy, gcc-internal-format
  msgid "unrecognized argument to %<--help=%> option: %q.*s"
  msgstr "ignorerer kommandolinjetilvalget '%s'"
  
! #: opts.cc:2858
  #, gcc-internal-format
  msgid "arguments ignored for %<-Wattributes=%>; use %<-Wno-attributes=%> instead"
  msgstr ""
  
! #: opts.cc:2864
  #, gcc-internal-format
  msgid "trailing %<,%> in arguments for %<-Wno-attributes=%>"
  msgstr ""
  
! #: opts.cc:3110
  #, fuzzy, gcc-internal-format
  #| msgid "%qE attribute cannot be specified for local variables"
  msgid "%qs option can be specified only for offload compiler"
  msgstr "%qE-attribut kan ikke angives for lokale variabler"
  
! #: opts.cc:3119
  #, fuzzy, gcc-internal-format
  #| msgid "alignment must be a small power of two, not %d"
  msgid "structure alignment must be a small power of two, not %wu"
  msgstr "justering skal vÃ¦re en lille potens af to, ikke %d"
  
! #: opts.cc:3240
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown stack check parameter %qs"
  msgstr "ukendt registernavn: %s"
  
! #: opts.cc:3292
  #, gcc-internal-format
  msgid "%<-gdwarf%s%> is ambiguous; use %<-gdwarf-%s%> for DWARF version or %<-gdwarf%> %<-g%s%> for debug level"
  msgstr ""
  
! #: opts.cc:3303
  #, fuzzy, gcc-internal-format
  #| msgid "stack limit expression is not supported"
  msgid "dwarf version %wu is not supported"
  msgstr "stakgrÃ¦nseudtryk understÃ¸ttes ikke"
  
! #: opts.cc:3340
  #, fuzzy, gcc-internal-format
  msgid "unrecognized argument to %<-flto=%> option: %qs"
  msgstr "ignorerer kommandolinjetilvalget '%s'"
  
! #: opts.cc:3540
  #, gcc-internal-format
  msgid "target system does not support debug output"
  msgstr "mÃ¥lsystemet understÃ¸tter ikke fejlfindingsuddata"
  
! #: opts.cc:3579
  #, gcc-internal-format
  msgid "debug format %qs conflicts with prior selection"
  msgstr "fejlsÃ¸gningsformatet %qs er i modstrid med tidligere valg"
  
! #: opts.cc:3603
  #, fuzzy, gcc-internal-format
  #| msgid "unrecognised debug output level %qs"
  msgid "unrecognized debug output level %qs"
  msgstr "ukendt fejlsÃ¸gningsuddataniveau %qs"
  
! #: opts.cc:3605
  #, gcc-internal-format
  msgid "debug output level %qs is too high"
  msgstr "fejlsÃ¸gningsuddataniveau %qs er for hÃ¸jt"
  
! #: opts.cc:3617
  #, fuzzy, gcc-internal-format
  #| msgid "unrecognised debug output level %qs"
  msgid "unrecognized btf debug output level %qs"
  msgstr "ukendt fejlsÃ¸gningsuddataniveau %qs"
  
! #: opts.cc:3634
  #, gcc-internal-format
  msgid "getting core file size maximum limit: %m"
  msgstr "henter maksimumbegrÃ¦nsning pÃ¥ kernefilens stÃ¸rrelse: %m"
  
! #: opts.cc:3638
  #, gcc-internal-format
  msgid "setting core file size limit to maximum: %m"
  msgstr "angiver kernefilens stÃ¸rrelsesbegrÃ¦nsning til maksimum: %m"
  
! #: opts.cc:3683
  #, gcc-internal-format, gfc-internal-format
  msgid "unrecognized gcc debugging option: %c"
  msgstr "ukendt GCC-fejlfindingstilvalg: %c"
  
! #: opts.cc:3712
  #, fuzzy, gcc-internal-format
  msgid "%<-W%serror=%s%>: no option %<-%s%>; did you mean %<-%s%>?"
  msgstr "ignorerer kommandolinjetilvalget '%s'"
  
! #: opts.cc:3716
  #, fuzzy, gcc-internal-format
  #| msgid "-Werror=%s: no option -%s"
  msgid "%<-W%serror=%s%>: no option %<-%s%>"
  msgstr "-Werror=%s: intet tilvalg -%s"
  
! #: opts.cc:3720
  #, fuzzy, gcc-internal-format
  #| msgid "\"%s\" is not a valid option to the preprocessor"
  msgid "%<-Werror=%s%>: %<-%s%> is not an option that controls warnings"
--- 32589,32847 ----
  msgid "%<-fsplit-stack%> is not supported by this compiler configuration"
  msgstr "%s understÃ¸ttes ikke af denne konfiguration"
  
! #: opts.cc:1282
  #, gcc-internal-format
  msgid "%<-fsanitize=pointer-compare%> must be combined with %<-fsanitize=address%> or %<-fsanitize=kernel-address%>"
  msgstr ""
  
! #: opts.cc:1286
  #, gcc-internal-format
  msgid "%<-fsanitize=pointer-subtract%> must be combined with %<-fsanitize=address%> or %<-fsanitize=kernel-address%>"
  msgstr ""
  
! #: opts.cc:1313
  #, fuzzy, gcc-internal-format
  #| msgid "-pipe is not supported"
  msgid "%<-fsanitize-recover=%s%> is not supported"
  msgstr "-pipe understÃ¸ttes ikke"
  
! #: opts.cc:1325 opts.cc:2322
  #, fuzzy, gcc-internal-format
  #| msgid "-pipe is not supported"
  msgid "%<-fsanitize-trap=%s%> is not supported"
  msgstr "-pipe understÃ¸ttes ikke"
  
! #: opts.cc:1352
  #, gcc-internal-format
  msgid "%<-fsanitize-address-use-after-scope%> requires %<-fstack-reuse=none%> option"
  msgstr ""
  
! #: opts.cc:1359
  #, fuzzy, gcc-internal-format
  #| msgid "-traditional is not supported in C++"
  msgid "transactional memory is not supported with %<-fsanitize=address%>"
  msgstr "-traditional understÃ¸ttes ikke i C++"
  
! #: opts.cc:1362
  #, fuzzy, gcc-internal-format
  #| msgid "-traditional is not supported in C++"
  msgid "transactional memory is not supported with %<-fsanitize=kernel-address%>"
  msgstr "-traditional understÃ¸ttes ikke i C++"
  
! #: opts.cc:1367
  #, fuzzy, gcc-internal-format
  #| msgid "profiling not supported with -mg\n"
  msgid "live patching (with %qs) is not supported with LTO"
  msgstr "profilgenerering understÃ¸ttes ikke med -mg\n"
  
! #: opts.cc:1372
  #, fuzzy, gcc-internal-format
  #| msgid "profiling not supported with -mg\n"
  msgid "vtable verification is not supported with LTO"
  msgstr "profilgenerering understÃ¸ttes ikke med -mg\n"
  
! #: opts.cc:1447
  #, gcc-internal-format
  msgid "variable tracking requested, but useless unless producing debug info"
  msgstr "der blev anmodt om variabelsporing, men den er nyttelÃ¸s uden fejlsÃ¸gningsinformation"
  
! #: opts.cc:1451
  #, gcc-internal-format
  msgid "variable tracking requested, but not supported by this debug format"
  msgstr "der blev anmodt om variabelsporing, men den er ikke understÃ¸ttet af dette fejlsÃ¸gningsformat"
  
! #: opts.cc:1480
  #, gcc-internal-format
  msgid "var-tracking-assignments changes selective scheduling"
  msgstr "var-tracking-assignments Ã¦ndrer selektiv planlÃ¦gning"
  
! #: opts.cc:1493
  #, gcc-internal-format
  msgid "%<-Wstrict-flex-arrays%> is ignored when %<-fstrict-flex-arrays%> is not present"
  msgstr ""
  
! #: opts.cc:1523 config/darwin.cc:3484
  #, fuzzy, gcc-internal-format
  #| msgid "-fdata-sections not supported for this target"
  msgid "%<-freorder-blocks-and-partition%> does not work with exceptions on this architecture"
  msgstr "-fdata-sections understÃ¸ttes ikke pÃ¥ mÃ¥larkitekturen"
  
! #: opts.cc:1539
  #, fuzzy, gcc-internal-format
  #| msgid "-fdata-sections not supported for this target"
  msgid "%<-freorder-blocks-and-partition%> does not support unwind info on this architecture"
  msgstr "-fdata-sections understÃ¸ttes ikke pÃ¥ mÃ¥larkitekturen"
  
! #: opts.cc:1557 config/pa/pa.cc:580
  #, fuzzy, gcc-internal-format
  #| msgid "-fdata-sections not supported for this target"
  msgid "%<-freorder-blocks-and-partition%> does not work on this architecture"
  msgstr "-fdata-sections understÃ¸ttes ikke pÃ¥ mÃ¥larkitekturen"
  
! #: opts.cc:2066
  #, gcc-internal-format
  msgid "unrecognized %<include_flags 0x%x%> passed to %<print_specific_help%>"
  msgstr ""
  
! #: opts.cc:2301
  #, gcc-internal-format
  msgid "%<-fsanitize=all%> option is not valid"
  msgstr ""
  
! #: opts.cc:2356
  #, fuzzy, gcc-internal-format
  msgid "unrecognized argument to %<-f%ssanitize%s=%> option: %q.*s; did you mean %qs?"
  msgstr "ignorerer kommandolinjetilvalget '%s'"
  
! #: opts.cc:2362
  #, fuzzy, gcc-internal-format
  msgid "unrecognized argument to %<-f%ssanitize%s=%> option: %q.*s"
  msgstr "ignorerer kommandolinjetilvalget '%s'"
  
! #: opts.cc:2397
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute directive ignored"
  msgid "%qs attribute directive ignored"
  msgstr "egenskabsdirektivet '%s' ignoreret"
  
! #: opts.cc:2421
  #, fuzzy, gcc-internal-format
  #| msgid "unrecognized section name \"%s\""
  msgid "unrecognized argument to %<-fzero-call-used-regs=%>: %qs"
  msgstr "ukendt sektionsnavn \"%s\""
  
! #: opts.cc:2445
  #, fuzzy, gcc-internal-format
  #| msgid "invalid type argument"
  msgid "invalid arguments for %<-falign-%s%> option: %qs"
  msgstr "ugyldig typeparameter"
  
! #: opts.cc:2460
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function `%s'"
  msgid "invalid number of arguments for %<-falign-%s%> option: %qs"
  msgstr "for fÃ¥ parametre til funktionen '%s'"
  
! #: opts.cc:2469
  #, fuzzy, gcc-internal-format
  #| msgid "-malign-loops=%d is not between 0 and %d"
  msgid "%<-falign-%s%> is not between 0 and %d"
  msgstr "-malign-loops=%d er ikke mellem 0 og %d"
  
! #: opts.cc:2528
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to function `%s'"
  msgid "invalid arguments for %<-fpatchable-function-entry%>"
  msgstr "for mange parametre til funktionen '%s'"
  
! #: opts.cc:2665
  #, gcc-internal-format
  msgid "%<--help%> argument %q.*s is ambiguous, please be more specific"
  msgstr ""
  
! #: opts.cc:2676
  #, fuzzy, gcc-internal-format
  msgid "unrecognized argument to %<--help=%> option: %q.*s"
  msgstr "ignorerer kommandolinjetilvalget '%s'"
  
! #: opts.cc:2856
  #, gcc-internal-format
  msgid "arguments ignored for %<-Wattributes=%>; use %<-Wno-attributes=%> instead"
  msgstr ""
  
! #: opts.cc:2862
  #, gcc-internal-format
  msgid "trailing %<,%> in arguments for %<-Wno-attributes=%>"
  msgstr ""
  
! #: opts.cc:3108
  #, fuzzy, gcc-internal-format
  #| msgid "%qE attribute cannot be specified for local variables"
  msgid "%qs option can be specified only for offload compiler"
  msgstr "%qE-attribut kan ikke angives for lokale variabler"
  
! #: opts.cc:3117
  #, fuzzy, gcc-internal-format
  #| msgid "alignment must be a small power of two, not %d"
  msgid "structure alignment must be a small power of two, not %wu"
  msgstr "justering skal vÃ¦re en lille potens af to, ikke %d"
  
! #: opts.cc:3238
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown stack check parameter %qs"
  msgstr "ukendt registernavn: %s"
  
! #: opts.cc:3290
  #, gcc-internal-format
  msgid "%<-gdwarf%s%> is ambiguous; use %<-gdwarf-%s%> for DWARF version or %<-gdwarf%> %<-g%s%> for debug level"
  msgstr ""
  
! #: opts.cc:3301
  #, fuzzy, gcc-internal-format
  #| msgid "stack limit expression is not supported"
  msgid "dwarf version %wu is not supported"
  msgstr "stakgrÃ¦nseudtryk understÃ¸ttes ikke"
  
! #: opts.cc:3338
  #, fuzzy, gcc-internal-format
  msgid "unrecognized argument to %<-flto=%> option: %qs"
  msgstr "ignorerer kommandolinjetilvalget '%s'"
  
! #: opts.cc:3538
  #, gcc-internal-format
  msgid "target system does not support debug output"
  msgstr "mÃ¥lsystemet understÃ¸tter ikke fejlfindingsuddata"
  
! #: opts.cc:3577
  #, gcc-internal-format
  msgid "debug format %qs conflicts with prior selection"
  msgstr "fejlsÃ¸gningsformatet %qs er i modstrid med tidligere valg"
  
! #: opts.cc:3601
  #, fuzzy, gcc-internal-format
  #| msgid "unrecognised debug output level %qs"
  msgid "unrecognized debug output level %qs"
  msgstr "ukendt fejlsÃ¸gningsuddataniveau %qs"
  
! #: opts.cc:3603
  #, gcc-internal-format
  msgid "debug output level %qs is too high"
  msgstr "fejlsÃ¸gningsuddataniveau %qs er for hÃ¸jt"
  
! #: opts.cc:3615
  #, fuzzy, gcc-internal-format
  #| msgid "unrecognised debug output level %qs"
  msgid "unrecognized btf debug output level %qs"
  msgstr "ukendt fejlsÃ¸gningsuddataniveau %qs"
  
! #: opts.cc:3632
  #, gcc-internal-format
  msgid "getting core file size maximum limit: %m"
  msgstr "henter maksimumbegrÃ¦nsning pÃ¥ kernefilens stÃ¸rrelse: %m"
  
! #: opts.cc:3636
  #, gcc-internal-format
  msgid "setting core file size limit to maximum: %m"
  msgstr "angiver kernefilens stÃ¸rrelsesbegrÃ¦nsning til maksimum: %m"
  
! #: opts.cc:3681
  #, gcc-internal-format, gfc-internal-format
  msgid "unrecognized gcc debugging option: %c"
  msgstr "ukendt GCC-fejlfindingstilvalg: %c"
  
! #: opts.cc:3710
  #, fuzzy, gcc-internal-format
  msgid "%<-W%serror=%s%>: no option %<-%s%>; did you mean %<-%s%>?"
  msgstr "ignorerer kommandolinjetilvalget '%s'"
  
! #: opts.cc:3714
  #, fuzzy, gcc-internal-format
  #| msgid "-Werror=%s: no option -%s"
  msgid "%<-W%serror=%s%>: no option %<-%s%>"
  msgstr "-Werror=%s: intet tilvalg -%s"
  
! #: opts.cc:3718
  #, fuzzy, gcc-internal-format
  #| msgid "\"%s\" is not a valid option to the preprocessor"
  msgid "%<-Werror=%s%>: %<-%s%> is not an option that controls warnings"
*************** msgstr "GenerÃ©r ikke .size-direktiver"
*** 33167,33189 ****
  msgid "unrecognized enum value: %qs"
  msgstr "ikke genkendt synlighedsvÃ¦rdi %qs"
  
! #: read-rtl-function.cc:1145 read-rtl-function.cc:1204
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "was expecting `%s'"
  msgstr "opretter %s"
  
! #: read-rtl-function.cc:1598
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "duplicate definition of class method `%s'"
  msgid "duplicate insn UID: %i"
  msgstr "mere end Ã©n definition af klassemetoden '%s'"
  
! #: read-rtl-function.cc:1659
  #, gcc-internal-format
  msgid "start/end of RTL fragment are in different files"
  msgstr ""
  
! #: read-rtl-function.cc:1665
  #, fuzzy, gcc-internal-format
  #| msgid "stack frame not a multiple of 8 bytes: %d"
  msgid "start of RTL fragment must be on an earlier line than end"
--- 33185,33207 ----
  msgid "unrecognized enum value: %qs"
  msgstr "ikke genkendt synlighedsvÃ¦rdi %qs"
  
! #: read-rtl-function.cc:1148 read-rtl-function.cc:1207
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "was expecting `%s'"
  msgstr "opretter %s"
  
! #: read-rtl-function.cc:1601
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "duplicate definition of class method `%s'"
  msgid "duplicate insn UID: %i"
  msgstr "mere end Ã©n definition af klassemetoden '%s'"
  
! #: read-rtl-function.cc:1662
  #, gcc-internal-format
  msgid "start/end of RTL fragment are in different files"
  msgstr ""
  
! #: read-rtl-function.cc:1668
  #, fuzzy, gcc-internal-format
  #| msgid "stack frame not a multiple of 8 bytes: %d"
  msgid "start of RTL fragment must be on an earlier line than end"
*************** msgstr "ugyldigt udtryk som operand"
*** 35170,35198 ****
  msgid "target does not support atomic profile update, single mode is selected"
  msgstr ""
  
! #: tree-ssa-alias.cc:4125
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid vector type for attribute `%s'"
  msgid "invalid fn spec attribute \"%s\""
  msgstr "ugyldig vektortype for egenskaben '%s'"
  
! #: tree-ssa-alias.cc:4164
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid use of `%D'"
  msgid "invalid fn spec attribute \"%s\" arg %i"
  msgstr "ugyldig brug af '%D"
  
! #: tree-ssa-ccp.cc:4595 c-family/c-common.cc:5992
  #, gcc-internal-format
  msgid "%qs pointer is null"
  msgstr ""
  
! #: tree-ssa-ccp.cc:4598 c-family/c-common.cc:5995
  #, fuzzy, gcc-internal-format
  msgid "in a call to non-static member function %qD"
  msgstr "ugyldig brug af ikke-statisk felt '%D'"
  
! #: tree-ssa-ccp.cc:4604 c-family/c-common.cc:6010
  #, gcc-internal-format, gfc-internal-format
  msgid "argument %u null where non-null expected"
  msgstr ""
--- 35188,35216 ----
  msgid "target does not support atomic profile update, single mode is selected"
  msgstr ""
  
! #: tree-ssa-alias.cc:4127
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid vector type for attribute `%s'"
  msgid "invalid fn spec attribute \"%s\""
  msgstr "ugyldig vektortype for egenskaben '%s'"
  
! #: tree-ssa-alias.cc:4166
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid use of `%D'"
  msgid "invalid fn spec attribute \"%s\" arg %i"
  msgstr "ugyldig brug af '%D"
  
! #: tree-ssa-ccp.cc:4595 c-family/c-common.cc:6013
  #, gcc-internal-format
  msgid "%qs pointer is null"
  msgstr ""
  
! #: tree-ssa-ccp.cc:4598 c-family/c-common.cc:6016
  #, fuzzy, gcc-internal-format
  msgid "in a call to non-static member function %qD"
  msgstr "ugyldig brug af ikke-statisk felt '%D'"
  
! #: tree-ssa-ccp.cc:4604 c-family/c-common.cc:6031
  #, gcc-internal-format, gfc-internal-format
  msgid "argument %u null where non-null expected"
  msgstr ""
*************** msgstr ""
*** 35203,35214 ****
  msgid "in a call to built-in function %qD"
  msgstr "for mange parametre til funktionen '%s'"
  
! #: tree-ssa-ccp.cc:4614 tree-ssa-ccp.cc:4671 c-family/c-common.cc:6014
  #, fuzzy, gcc-internal-format
  msgid "in a call to function %qD declared %qs"
  msgstr "Ugyldig erklÃ¦ring"
  
! #: tree-ssa-ccp.cc:4660 c-family/c-common.cc:6002
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "null argument where non-null required (arg %lu)"
  msgid "argument %u null where non-null expected because argument %u is nonzero"
--- 35221,35232 ----
  msgid "in a call to built-in function %qD"
  msgstr "for mange parametre til funktionen '%s'"
  
! #: tree-ssa-ccp.cc:4614 tree-ssa-ccp.cc:4671 c-family/c-common.cc:6035
  #, fuzzy, gcc-internal-format
  msgid "in a call to function %qD declared %qs"
  msgstr "Ugyldig erklÃ¦ring"
  
! #: tree-ssa-ccp.cc:4660 c-family/c-common.cc:6023
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "null argument where non-null required (arg %lu)"
  msgid "argument %u null where non-null expected because argument %u is nonzero"
*************** msgstr ""
*** 35632,35649 ****
  msgid "verify_ssa failed"
  msgstr "verify_flow_info mislykkedes"
  
! #: tree-streamer-in.cc:347
  #, fuzzy, gcc-internal-format
  #| msgid "hex escape sequence out of range"
  msgid "machine independent builtin code out of range"
  msgstr "den hexadecimale undvigesekvens er uden for det gyldige interval"
  
! #: tree-streamer-in.cc:353
  #, gcc-internal-format
  msgid "target specific builtin not available"
  msgstr ""
  
! #: tree-streamer-in.cc:726
  #, gcc-internal-format
  msgid "degree of %<poly_int%> exceeds %<NUM_POLY_INT_COEFFS%>"
  msgstr ""
--- 35650,35667 ----
  msgid "verify_ssa failed"
  msgstr "verify_flow_info mislykkedes"
  
! #: tree-streamer-in.cc:348
  #, fuzzy, gcc-internal-format
  #| msgid "hex escape sequence out of range"
  msgid "machine independent builtin code out of range"
  msgstr "den hexadecimale undvigesekvens er uden for det gyldige interval"
  
! #: tree-streamer-in.cc:354
  #, gcc-internal-format
  msgid "target specific builtin not available"
  msgstr ""
  
! #: tree-streamer-in.cc:736
  #, gcc-internal-format
  msgid "degree of %<poly_int%> exceeds %<NUM_POLY_INT_COEFFS%>"
  msgstr ""
*************** msgstr ""
*** 35674,35691 ****
  msgid "address of local variable passed to %<musttail%> call argument"
  msgstr "adresse af den lokale variabel '%D' returneret"
  
! #: tree-tailcall.cc:885 tree-tailcall.cc:914
  #, fuzzy, gcc-internal-format
  #| msgid "address of local variable `%D' returned"
  msgid "address of local variable can escape to %<musttail%> call"
  msgstr "adresse af den lokale variabel '%D' returneret"
  
! #: tree-tailcall.cc:909
  #, gcc-internal-format
  msgid "address of automatic variable %qD can escape to %<musttail%> call"
  msgstr ""
  
! #: tree-tailcall.cc:939
  #, gcc-internal-format
  msgid "address of parameter %qD can escape to %<musttail%> call"
  msgstr ""
--- 35692,35709 ----
  msgid "address of local variable passed to %<musttail%> call argument"
  msgstr "adresse af den lokale variabel '%D' returneret"
  
! #: tree-tailcall.cc:1015 tree-tailcall.cc:1044
  #, fuzzy, gcc-internal-format
  #| msgid "address of local variable `%D' returned"
  msgid "address of local variable can escape to %<musttail%> call"
  msgstr "adresse af den lokale variabel '%D' returneret"
  
! #: tree-tailcall.cc:1039
  #, gcc-internal-format
  msgid "address of automatic variable %qD can escape to %<musttail%> call"
  msgstr ""
  
! #: tree-tailcall.cc:1069
  #, gcc-internal-format
  msgid "address of parameter %qD can escape to %<musttail%> call"
  msgstr ""
*************** msgstr ""
*** 35715,35721 ****
  msgid "vector shuffling operation will be expanded piecewise"
  msgstr ""
  
! #: tree-vect-loop.cc:5115
  #, gcc-internal-format
  msgid "vectorization did not happen for a simd loop"
  msgstr ""
--- 35733,35739 ----
  msgid "vector shuffling operation will be expanded piecewise"
  msgstr ""
  
! #: tree-vect-loop.cc:5116
  #, gcc-internal-format
  msgid "vectorization did not happen for a simd loop"
  msgstr ""
*************** msgstr "trÃ¥d-lokal COMMON-data er ikke
*** 36325,36331 ****
  msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
  msgstr "%Jforespurgt justering for '%D' er stÃ¸rre end den implementerede justering pÃ¥ %d"
  
! #: varasm.cc:2513 c/c-decl.cc:5971 c/c-parser.cc:1969 m2/gm2-gcc/m2type.cc:1248
  #, fuzzy, gcc-internal-format
  #| msgid "storage size of `%D' isn't known"
  msgid "storage size of %q+D isn%'t known"
--- 36343,36349 ----
  msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
  msgstr "%Jforespurgt justering for '%D' er stÃ¸rre end den implementerede justering pÃ¥ %d"
  
! #: varasm.cc:2513 c/c-decl.cc:5971 c/c-parser.cc:2014 m2/gm2-gcc/m2type.cc:1248
  #, fuzzy, gcc-internal-format
  #| msgid "storage size of `%D' isn't known"
  msgid "storage size of %q+D isn%'t known"
*************** msgstr ""
*** 36410,36416 ****
  msgid "%qs symbol %q+D must have static linkage"
  msgstr "kan ikke erklÃ¦re medlemsfunktion '%D' til at have statisk kÃ¦dning"
  
! #: varasm.cc:6609 config/nvptx/nvptx.cc:7758
  #, fuzzy, gcc-internal-format
  #| msgid "alias definitions not supported in this configuration; ignored"
  msgid "alias definitions not supported in this configuration"
--- 36428,36434 ----
  msgid "%qs symbol %q+D must have static linkage"
  msgstr "kan ikke erklÃ¦re medlemsfunktion '%D' til at have statisk kÃ¦dning"
  
! #: varasm.cc:6609 config/nvptx/nvptx.cc:7764
  #, fuzzy, gcc-internal-format
  #| msgid "alias definitions not supported in this configuration; ignored"
  msgid "alias definitions not supported in this configuration"
*************** msgid "%qE attribute ignored for field o
*** 36603,36632 ****
  msgstr "'%s'-egenskaben ignoreret for '%s'"
  
  #: c-family/c-attribs.cc:1452 c-family/c-attribs.cc:3650
! #: c-family/c-attribs.cc:6271 ada/gcc-interface/utils.cc:7461
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute argument not a string constant"
  msgid "%qE argument not a string"
  msgstr "parameteren til egenskaben '%s' er ikke en strengkonstant"
  
! #: c-family/c-attribs.cc:1627 ada/gcc-interface/utils.cc:6947
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute ignored for `%s'"
  msgid "%qE attribute ignored because of argument %qE"
  msgstr "'%s'-egenskaben ignoreret for '%s'"
  
! #: c-family/c-attribs.cc:1648 ada/gcc-interface/utils.cc:6968
  #, fuzzy, gcc-internal-format
  msgid "ignoring attribute %qE because of excess arguments starting at %qE"
  msgstr "dataomrÃ¥det '%s' er i modstrid med tidligere erklÃ¦ring"
  
! #: c-family/c-attribs.cc:1662 ada/gcc-interface/utils.cc:6982
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute does not apply to types"
  msgid "attribute %qE does not apply to elements of non-scalar type %qT"
  msgstr "egenskaben '%s' kan ikke anvendes pÃ¥ typer"
  
! #: c-family/c-attribs.cc:1667 ada/gcc-interface/utils.cc:6987
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute does not apply to types"
  msgid "attribute %qE does not apply to fields of aggregate type %qT"
--- 36621,36650 ----
  msgstr "'%s'-egenskaben ignoreret for '%s'"
  
  #: c-family/c-attribs.cc:1452 c-family/c-attribs.cc:3650
! #: c-family/c-attribs.cc:6271 ada/gcc-interface/utils.cc:7463
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute argument not a string constant"
  msgid "%qE argument not a string"
  msgstr "parameteren til egenskaben '%s' er ikke en strengkonstant"
  
! #: c-family/c-attribs.cc:1627 ada/gcc-interface/utils.cc:6949
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute ignored for `%s'"
  msgid "%qE attribute ignored because of argument %qE"
  msgstr "'%s'-egenskaben ignoreret for '%s'"
  
! #: c-family/c-attribs.cc:1648 ada/gcc-interface/utils.cc:6970
  #, fuzzy, gcc-internal-format
  msgid "ignoring attribute %qE because of excess arguments starting at %qE"
  msgstr "dataomrÃ¥det '%s' er i modstrid med tidligere erklÃ¦ring"
  
! #: c-family/c-attribs.cc:1662 ada/gcc-interface/utils.cc:6984
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute does not apply to types"
  msgid "attribute %qE does not apply to elements of non-scalar type %qT"
  msgstr "egenskaben '%s' kan ikke anvendes pÃ¥ typer"
  
! #: c-family/c-attribs.cc:1667 ada/gcc-interface/utils.cc:6989
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute does not apply to types"
  msgid "attribute %qE does not apply to fields of aggregate type %qT"
*************** msgid "%qE attribute has no effect on un
*** 36644,36655 ****
  msgstr "'%s'-egenskaben kan kun anvendes sammen med funktioner"
  
  #: c-family/c-attribs.cc:1993 c-family/c-attribs.cc:3633
! #: ada/gcc-interface/utils.cc:7217
  #, fuzzy, gcc-internal-format
  msgid "%qE attribute ignored because %qD is not a variable"
  msgstr "'%s' brugt, men aldrig defineret"
  
! #: c-family/c-attribs.cc:1999 ada/gcc-interface/utils.cc:7223
  #, fuzzy, gcc-internal-format
  msgid "%qE attribute ignored because %qD is not a local variable"
  msgstr "'%s' brugt, men aldrig defineret"
--- 36662,36673 ----
  msgstr "'%s'-egenskaben kan kun anvendes sammen med funktioner"
  
  #: c-family/c-attribs.cc:1993 c-family/c-attribs.cc:3633
! #: ada/gcc-interface/utils.cc:7219
  #, fuzzy, gcc-internal-format
  msgid "%qE attribute ignored because %qD is not a variable"
  msgstr "'%s' brugt, men aldrig defineret"
  
! #: c-family/c-attribs.cc:1999 ada/gcc-interface/utils.cc:7225
  #, fuzzy, gcc-internal-format
  msgid "%qE attribute ignored because %qD is not a local variable"
  msgstr "'%s' brugt, men aldrig defineret"
*************** msgid "weak %q+D cannot be defined %qE"
*** 36964,36970 ****
  msgstr "'%#D' kan ikke erklÃ¦res"
  
  #: c-family/c-attribs.cc:3209 c-family/c-attribs.cc:4198
! #: ada/gcc-interface/utils.cc:7288 jit/dummy-frontend.cc:883
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute argument not a string constant"
  msgid "attribute %qE argument not a string"
--- 36982,36988 ----
  msgstr "'%#D' kan ikke erklÃ¦res"
  
  #: c-family/c-attribs.cc:3209 c-family/c-attribs.cc:4198
! #: ada/gcc-interface/utils.cc:7290 jit/dummy-frontend.cc:883
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute argument not a string constant"
  msgid "attribute %qE argument not a string"
*************** msgstr ""
*** 37085,37091 ****
  
  #: c-family/c-attribs.cc:3685 c-family/c-attribs.cc:4281
  #: c-family/c-attribs.cc:6236 c-family/c-attribs.cc:6263
! #: config/m32c/m32c.cc:2942 ada/gcc-interface/utils.cc:7447
  #, fuzzy, gcc-internal-format
  msgid "%qE attribute applies only to functions"
  msgstr "'%s'-egenskaben kan kun anvendes sammen med funktioner"
--- 37103,37109 ----
  
  #: c-family/c-attribs.cc:3685 c-family/c-attribs.cc:4281
  #: c-family/c-attribs.cc:6236 c-family/c-attribs.cc:6263
! #: config/m32c/m32c.cc:2942 ada/gcc-interface/utils.cc:7449
  #, fuzzy, gcc-internal-format
  msgid "%qE attribute applies only to functions"
  msgstr "'%s'-egenskaben kan kun anvendes sammen med funktioner"
*************** msgstr "parameteren til egenskaben '%s'
*** 37195,37201 ****
  msgid "%qE attribute argument %E is not in the range [0, %wu]"
  msgstr "3. parameter skal vÃ¦re en 4 bit-konstant uden fortegn"
  
! #: c-family/c-attribs.cc:4211 ada/gcc-interface/utils.cc:7301
  #, gcc-internal-format
  msgid "only %<inbranch%> and %<notinbranch%> flags are allowed for %<__simd__%> attribute"
  msgstr ""
--- 37213,37219 ----
  msgid "%qE attribute argument %E is not in the range [0, %wu]"
  msgstr "3. parameter skal vÃ¦re en 4 bit-konstant uden fortegn"
  
! #: c-family/c-attribs.cc:4211 ada/gcc-interface/utils.cc:7303
  #, gcc-internal-format
  msgid "only %<inbranch%> and %<notinbranch%> flags are allowed for %<__simd__%> attribute"
  msgstr ""
*************** msgstr "-march=%s er ikke forenelig med
*** 37250,37256 ****
  msgid "%qE argument is not a function"
  msgstr "ingen parametre til specifikationsfunktion"
  
! #: c-family/c-attribs.cc:4635 cp/name-lookup.cc:6573
  #, fuzzy, gcc-internal-format
  #| msgid "second token after #line is not a string"
  msgid "deprecated message is not a string"
--- 37268,37274 ----
  msgid "%qE argument is not a function"
  msgstr "ingen parametre til specifikationsfunktion"
  
! #: c-family/c-attribs.cc:4635 cp/name-lookup.cc:6576
  #, fuzzy, gcc-internal-format
  #| msgid "second token after #line is not a string"
  msgid "deprecated message is not a string"
*************** msgstr "parameteren til egenskaben '%s'
*** 37285,37296 ****
  msgid "%qE attribute argument value %qE exceeds %wu"
  msgstr "egenskaben '%s' krÃ¦ver en heltalskonstant som parameter"
  
! #: c-family/c-attribs.cc:4876 ada/gcc-interface/utils.cc:4436
  #, gcc-internal-format
  msgid "vector size not an integral multiple of component size"
  msgstr ""
  
! #: c-family/c-attribs.cc:4882 ada/gcc-interface/utils.cc:4443
  #, gcc-internal-format
  msgid "zero vector size"
  msgstr ""
--- 37303,37314 ----
  msgid "%qE attribute argument value %qE exceeds %wu"
  msgstr "egenskaben '%s' krÃ¦ver en heltalskonstant som parameter"
  
! #: c-family/c-attribs.cc:4876 ada/gcc-interface/utils.cc:4438
  #, gcc-internal-format
  msgid "vector size not an integral multiple of component size"
  msgstr ""
  
! #: c-family/c-attribs.cc:4882 ada/gcc-interface/utils.cc:4445
  #, gcc-internal-format
  msgid "zero vector size"
  msgstr ""
*************** msgstr "egenskaben '%s' krÃ¦ver en helta
*** 37478,37495 ****
  msgid "%qE attribute only applies to variadic functions"
  msgstr "egenskaben '%s' kan kun anvendes sammen med funktioner"
  
! #: c-family/c-attribs.cc:6031 ada/gcc-interface/utils.cc:6848
  #, fuzzy, gcc-internal-format
  #| msgid "requested init_priority is not an integer constant"
  msgid "requested position is not an integer constant"
  msgstr "den udbedte init_priority er ikke en heltalskonstant"
  
! #: c-family/c-attribs.cc:6039 ada/gcc-interface/utils.cc:6855
  #, gcc-internal-format
  msgid "requested position is less than zero"
  msgstr ""
  
! #: c-family/c-attribs.cc:6088 ada/gcc-interface/utils.cc:7344
  #: d/d-attribs.cc:771 jit/dummy-frontend.cc:799
  #, fuzzy, gcc-internal-format
  #| msgid "__builtin_trap not supported by this target"
--- 37496,37513 ----
  msgid "%qE attribute only applies to variadic functions"
  msgstr "egenskaben '%s' kan kun anvendes sammen med funktioner"
  
! #: c-family/c-attribs.cc:6031 ada/gcc-interface/utils.cc:6850
  #, fuzzy, gcc-internal-format
  #| msgid "requested init_priority is not an integer constant"
  msgid "requested position is not an integer constant"
  msgstr "den udbedte init_priority er ikke en heltalskonstant"
  
! #: c-family/c-attribs.cc:6039 ada/gcc-interface/utils.cc:6857
  #, gcc-internal-format
  msgid "requested position is less than zero"
  msgstr ""
  
! #: c-family/c-attribs.cc:6088 ada/gcc-interface/utils.cc:7346
  #: d/d-attribs.cc:771 jit/dummy-frontend.cc:799
  #, fuzzy, gcc-internal-format
  #| msgid "__builtin_trap not supported by this target"
*************** msgstr "__builtin_trap understÃ¸ttes ikk
*** 37505,37511 ****
  msgid "%qE attribute argument not a string constant"
  msgstr "parameteren til egenskaben '%s' er ikke en strengkonstant"
  
! #: c-family/c-attribs.cc:6288 ada/gcc-interface/utils.cc:7478
  #, fuzzy, gcc-internal-format
  msgid "unrecognized %qE attribute argument %qs"
  msgstr "ukendt registernavn '%s'"
--- 37523,37529 ----
  msgid "%qE attribute argument not a string constant"
  msgstr "parameteren til egenskaben '%s' er ikke en strengkonstant"
  
! #: c-family/c-attribs.cc:6288 ada/gcc-interface/utils.cc:7480
  #, fuzzy, gcc-internal-format
  msgid "unrecognized %qE attribute argument %qs"
  msgstr "ukendt registernavn '%s'"
*************** msgstr "henvisning af typen 'void *' ben
*** 37755,37991 ****
  msgid "pointer to a function used in arithmetic"
  msgstr "henvisning til en funktion benyttet i udregning"
  
! #: c-family/c-common.cc:3610
  #, gcc-internal-format
  msgid "enum constant in boolean context"
  msgstr ""
  
! #: c-family/c-common.cc:3640 d/d-convert.cc:149
  #, fuzzy, gcc-internal-format
  msgid "the address of %qD will always evaluate as %<true%>"
  msgstr "adressen af '%D' vil altid vÃ¦re 'true'"
  
! #: c-family/c-common.cc:3685
  #, gcc-internal-format
  msgid "%<*%> in boolean context, suggest %<&&%> instead"
  msgstr ""
  
! #: c-family/c-common.cc:3698
  #, fuzzy, gcc-internal-format
  msgid "%<<<%> in boolean context, did you mean %<<%>?"
  msgstr "'%#D' kan ikke erklÃ¦res"
  
! #: c-family/c-common.cc:3714
  #, fuzzy, gcc-internal-format
  msgid "%<?:%> using integer constants in boolean context, the expression will always evaluate to %<true%>"
  msgstr "adressen af '%D' vil altid vÃ¦re 'true'"
  
! #: c-family/c-common.cc:3723
  #, fuzzy, gcc-internal-format
  #| msgid "integer constant is too large for its type"
  msgid "%<?:%> using integer constants in boolean context"
  msgstr "heltalskonstanten er for stor for dens type"
  
! #: c-family/c-common.cc:3759
  #, fuzzy, gcc-internal-format
  msgid "the compiler can assume that the address of %qD will always evaluate to %<true%>"
  msgstr "adressen af '%D' vil altid vÃ¦re 'true'"
  
! #: c-family/c-common.cc:3795 cp/semantics.cc:1030
  #, gcc-internal-format
  msgid "suggest parentheses around assignment used as truth value"
  msgstr "foreslÃ¥r paranteser omkring tildeling der er benyttet som boolsk vÃ¦rdi"
  
! #: c-family/c-common.cc:3882 c/c-decl.cc:5028 c/c-decl.cc:7694
! #: c/c-parser.cc:4001 c/c-typeck.cc:17908
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `restrict'"
  msgid "invalid use of %<restrict%>"
  msgstr "ugyldig brug af 'restrict'"
  
! #: c-family/c-common.cc:3958
  #, fuzzy, gcc-internal-format
  #| msgid "invalid application of `sizeof' to a function type"
  msgid "invalid application of %<sizeof%> to a function type"
  msgstr "ugyldig anvendelse af 'sizeof' pÃ¥ en funktionstype"
  
! #: c-family/c-common.cc:3968
  #, fuzzy, gcc-internal-format
  #| msgid "new cannot be applied to a function type"
  msgid "ISO C++ does not permit %<alignof%> applied to a function type"
  msgstr "new kan ikke bruges pÃ¥ en funktionstype"
  
! #: c-family/c-common.cc:3971
  #, fuzzy, gcc-internal-format
  #| msgid "new cannot be applied to a function type"
  msgid "ISO C does not permit %<_Alignof%> applied to a function type"
  msgstr "new kan ikke bruges pÃ¥ en funktionstype"
  
! #: c-family/c-common.cc:3982 cp/typeck.cc:2085
  #, fuzzy, gcc-internal-format
  #| msgid "invalid application of `%s' to a void type"
  msgid "invalid application of %qs to a void type"
  msgstr "ugyldig anvendelse af '%s' pÃ¥ en void-type"
  
! #: c-family/c-common.cc:3993
  #, fuzzy, gcc-internal-format
  #| msgid "invalid application of `%s' to an incomplete type"
  msgid "invalid application of %qs to incomplete type %qT"
  msgstr "ugyldig anvendelse af '%s' pÃ¥ en ufuldstÃ¦ndig type"
  
! #: c-family/c-common.cc:4001
  #, fuzzy, gcc-internal-format
  #| msgid "invalid application of `%s' to an incomplete type"
  msgid "invalid application of %qs to array type %qT of incomplete element type"
  msgstr "ugyldig anvendelse af '%s' pÃ¥ en ufuldstÃ¦ndig type"
  
! #: c-family/c-common.cc:4053
  #, fuzzy, gcc-internal-format
  #| msgid "`__alignof' applied to a bit-field"
  msgid "%<__alignof%> applied to a bit-field"
  msgstr "'__alignof' benyttet pÃ¥ et bitfelt"
  
! #: c-family/c-common.cc:4878
  #, fuzzy, gcc-internal-format
  #| msgid "first argument to `va_arg' not of type `va_list'"
  msgid "first argument to %<va_arg%> not of type %<va_list%>"
  msgstr "den fÃ¸rste parameter til 'va_arg' er ikke af typen 'va_list'"
  
! #: c-family/c-common.cc:4998
  #, fuzzy, gcc-internal-format
  #| msgid "cannot disable built-in function `%s'"
  msgid "cannot disable built-in function %qs"
  msgstr "kan ikke deaktivere den indbyggede funktion '%s'"
  
! #: c-family/c-common.cc:5190
  #, gcc-internal-format
  msgid "pointers are not permitted as case values"
  msgstr "henvisningsvariabler er ikke tilladt som case-vÃ¦rdier"
  
! #: c-family/c-common.cc:5199
  #, fuzzy, gcc-internal-format
  msgid "range expressions in switch statements are non-standard"
  msgstr "ISO C forbyder intervaludtryk i switch-sÃ¦tninger"
  
! #: c-family/c-common.cc:5204 c-family/c-common.cc:5208
! #: c-family/c-common.cc:5213
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids range expressions in switch statements"
  msgid "ISO C does not support range expressions in switch statements before C2Y"
  msgstr "ISO C++ forbyder intervaludtryk i switch-sÃ¦tninger"
  
! #: c-family/c-common.cc:5227 c-family/c-common.cc:5244
  #, fuzzy, gcc-internal-format
  #| msgid "conversion from `%T' to `%T' is ambiguous"
  msgid "conversion of %qE to %qT in range expression changes value to %qE"
  msgstr "konvertering fra '%T' til '%T' er tvetydigt"
  
! #: c-family/c-common.cc:5263
  #, gcc-internal-format
  msgid "empty range specified"
  msgstr "tomt interval angivet"
  
! #: c-family/c-common.cc:5317
  #, gcc-internal-format
  msgid "duplicate (or overlapping) case value"
  msgstr "case-vÃ¦rdi optrÃ¦der mere end Ã©n gang (mÃ¥ske pga. intervalsammenfald)"
  
! #: c-family/c-common.cc:5319
  #, fuzzy, gcc-internal-format
  #| msgid "%Jthis is the first entry overlapping that value"
  msgid "this is the first entry overlapping that value"
  msgstr "%Jdette er det fÃ¸rste punkt som falder sammen med den vÃ¦rdi"
  
! #: c-family/c-common.cc:5323
  #, gcc-internal-format
  msgid "duplicate case value"
  msgstr "case-vÃ¦rdi optrÃ¦der mere end Ã©n gang"
  
! #: c-family/c-common.cc:5324 c-family/c-warn.cc:2662
  #, fuzzy, gcc-internal-format
  #| msgid "%Jpreviously used here"
  msgid "previously used here"
  msgstr "%Jtidligere benyttet her"
  
! #: c-family/c-common.cc:5328
  #, gcc-internal-format
  msgid "multiple default labels in one switch"
  msgstr "flere default-etiketter i Ã©n switch-konstruktion"
  
! #: c-family/c-common.cc:5330
  #, fuzzy, gcc-internal-format
  #| msgid "%Jthis is the first default label"
  msgid "this is the first default label"
  msgstr "%Jdette er den fÃ¸rste default-etiket"
  
! #: c-family/c-common.cc:5442
  #, gcc-internal-format
  msgid "taking the address of a label is non-standard"
  msgstr "at tage adressen af en etiket fÃ¸lger ikke standarden"
  
! #: c-family/c-common.cc:5627
  #, fuzzy, gcc-internal-format
  #| msgid "requested alignment is not a constant"
  msgid "requested alignment is not an integer constant"
  msgstr "angivet justering er ikke en konstant"
  
! #: c-family/c-common.cc:5635 c-family/c-common.cc:5645
  #, fuzzy, gcc-internal-format
  #| msgid "requested alignment is not a power of 2"
  msgid "requested alignment %qE is not a positive power of 2"
  msgstr "angivet justering er ikke en potens af 2"
  
! #: c-family/c-common.cc:5655
  #, fuzzy, gcc-internal-format
  #| msgid "requested alignment is too large"
  msgid "requested alignment %qE exceeds object file maximum %u"
  msgstr "angivet justering er for stor"
  
! #: c-family/c-common.cc:5663
  #, fuzzy, gcc-internal-format
  #| msgid "requested alignment is too large"
  msgid "requested alignment %qE exceeds maximum %u"
  msgstr "angivet justering er for stor"
  
! #: c-family/c-common.cc:5858
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function"
  msgid "not enough variable arguments to fit a sentinel"
  msgstr "for fÃ¥ parametre til funktionen"
  
! #: c-family/c-common.cc:5873
  #, fuzzy, gcc-internal-format
  #| msgid "Prohibit PC relative function calls"
  msgid "missing sentinel in function call"
  msgstr "Forbyd PC-relative funktionskald"
  
! #: c-family/c-common.cc:6112 c-family/c-common.cc:6165 d/d-attribs.cc:837
  #: d/d-attribs.cc:887
  #, gcc-internal-format
  msgid "bad option %qs to attribute %<optimize%>"
  msgstr ""
  
! #: c-family/c-common.cc:6116 c-family/c-common.cc:6170
  #, fuzzy, gcc-internal-format
  #| msgid "invalid operand for 'p' modifier"
  msgid "bad option %qs to pragma %<optimize%>"
  msgstr "ugyldig operand til 'p'-Ã¦ndring"
  
! #: c-family/c-common.cc:6219
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute can only be applied to class definitions"
  msgid "attribute %<fallthrough%> specified multiple times"
  msgstr "egenskaben '%s' kan kun anvendes med klassedefinitioner"
  
! #: c-family/c-common.cc:6223
  #, fuzzy, gcc-internal-format
  #| msgid "default argument given for parameter %d of `%#D'"
  msgid "%<fallthrough%> attribute specified with a parameter"
  msgstr "standardparameter givet til %d. parameter for '%#D'"
  
! #: c-family/c-common.cc:6412 c-family/c-common.cc:7430
! #: c-family/c-common.cc:7478 c-family/c-common.cc:7560
! #: c-family/c-common.cc:7646 c-family/c-common.cc:8315
  #: config/aarch64/aarch64-sve-builtins.cc:3001
  #: config/arm/arm-mve-builtins.cc:1714
  #, fuzzy, gcc-internal-format
--- 37773,38009 ----
  msgid "pointer to a function used in arithmetic"
  msgstr "henvisning til en funktion benyttet i udregning"
  
! #: c-family/c-common.cc:3631
  #, gcc-internal-format
  msgid "enum constant in boolean context"
  msgstr ""
  
! #: c-family/c-common.cc:3661 d/d-convert.cc:149
  #, fuzzy, gcc-internal-format
  msgid "the address of %qD will always evaluate as %<true%>"
  msgstr "adressen af '%D' vil altid vÃ¦re 'true'"
  
! #: c-family/c-common.cc:3706
  #, gcc-internal-format
  msgid "%<*%> in boolean context, suggest %<&&%> instead"
  msgstr ""
  
! #: c-family/c-common.cc:3719
  #, fuzzy, gcc-internal-format
  msgid "%<<<%> in boolean context, did you mean %<<%>?"
  msgstr "'%#D' kan ikke erklÃ¦res"
  
! #: c-family/c-common.cc:3735
  #, fuzzy, gcc-internal-format
  msgid "%<?:%> using integer constants in boolean context, the expression will always evaluate to %<true%>"
  msgstr "adressen af '%D' vil altid vÃ¦re 'true'"
  
! #: c-family/c-common.cc:3744
  #, fuzzy, gcc-internal-format
  #| msgid "integer constant is too large for its type"
  msgid "%<?:%> using integer constants in boolean context"
  msgstr "heltalskonstanten er for stor for dens type"
  
! #: c-family/c-common.cc:3780
  #, fuzzy, gcc-internal-format
  msgid "the compiler can assume that the address of %qD will always evaluate to %<true%>"
  msgstr "adressen af '%D' vil altid vÃ¦re 'true'"
  
! #: c-family/c-common.cc:3816 cp/semantics.cc:1030
  #, gcc-internal-format
  msgid "suggest parentheses around assignment used as truth value"
  msgstr "foreslÃ¥r paranteser omkring tildeling der er benyttet som boolsk vÃ¦rdi"
  
! #: c-family/c-common.cc:3903 c/c-decl.cc:5028 c/c-decl.cc:7694
! #: c/c-parser.cc:4046 c/c-typeck.cc:17925
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `restrict'"
  msgid "invalid use of %<restrict%>"
  msgstr "ugyldig brug af 'restrict'"
  
! #: c-family/c-common.cc:3979
  #, fuzzy, gcc-internal-format
  #| msgid "invalid application of `sizeof' to a function type"
  msgid "invalid application of %<sizeof%> to a function type"
  msgstr "ugyldig anvendelse af 'sizeof' pÃ¥ en funktionstype"
  
! #: c-family/c-common.cc:3989
  #, fuzzy, gcc-internal-format
  #| msgid "new cannot be applied to a function type"
  msgid "ISO C++ does not permit %<alignof%> applied to a function type"
  msgstr "new kan ikke bruges pÃ¥ en funktionstype"
  
! #: c-family/c-common.cc:3992
  #, fuzzy, gcc-internal-format
  #| msgid "new cannot be applied to a function type"
  msgid "ISO C does not permit %<_Alignof%> applied to a function type"
  msgstr "new kan ikke bruges pÃ¥ en funktionstype"
  
! #: c-family/c-common.cc:4003 cp/typeck.cc:2085
  #, fuzzy, gcc-internal-format
  #| msgid "invalid application of `%s' to a void type"
  msgid "invalid application of %qs to a void type"
  msgstr "ugyldig anvendelse af '%s' pÃ¥ en void-type"
  
! #: c-family/c-common.cc:4014
  #, fuzzy, gcc-internal-format
  #| msgid "invalid application of `%s' to an incomplete type"
  msgid "invalid application of %qs to incomplete type %qT"
  msgstr "ugyldig anvendelse af '%s' pÃ¥ en ufuldstÃ¦ndig type"
  
! #: c-family/c-common.cc:4022
  #, fuzzy, gcc-internal-format
  #| msgid "invalid application of `%s' to an incomplete type"
  msgid "invalid application of %qs to array type %qT of incomplete element type"
  msgstr "ugyldig anvendelse af '%s' pÃ¥ en ufuldstÃ¦ndig type"
  
! #: c-family/c-common.cc:4074
  #, fuzzy, gcc-internal-format
  #| msgid "`__alignof' applied to a bit-field"
  msgid "%<__alignof%> applied to a bit-field"
  msgstr "'__alignof' benyttet pÃ¥ et bitfelt"
  
! #: c-family/c-common.cc:4899
  #, fuzzy, gcc-internal-format
  #| msgid "first argument to `va_arg' not of type `va_list'"
  msgid "first argument to %<va_arg%> not of type %<va_list%>"
  msgstr "den fÃ¸rste parameter til 'va_arg' er ikke af typen 'va_list'"
  
! #: c-family/c-common.cc:5019
  #, fuzzy, gcc-internal-format
  #| msgid "cannot disable built-in function `%s'"
  msgid "cannot disable built-in function %qs"
  msgstr "kan ikke deaktivere den indbyggede funktion '%s'"
  
! #: c-family/c-common.cc:5211
  #, gcc-internal-format
  msgid "pointers are not permitted as case values"
  msgstr "henvisningsvariabler er ikke tilladt som case-vÃ¦rdier"
  
! #: c-family/c-common.cc:5220
  #, fuzzy, gcc-internal-format
  msgid "range expressions in switch statements are non-standard"
  msgstr "ISO C forbyder intervaludtryk i switch-sÃ¦tninger"
  
! #: c-family/c-common.cc:5225 c-family/c-common.cc:5229
! #: c-family/c-common.cc:5234
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids range expressions in switch statements"
  msgid "ISO C does not support range expressions in switch statements before C2Y"
  msgstr "ISO C++ forbyder intervaludtryk i switch-sÃ¦tninger"
  
! #: c-family/c-common.cc:5248 c-family/c-common.cc:5265
  #, fuzzy, gcc-internal-format
  #| msgid "conversion from `%T' to `%T' is ambiguous"
  msgid "conversion of %qE to %qT in range expression changes value to %qE"
  msgstr "konvertering fra '%T' til '%T' er tvetydigt"
  
! #: c-family/c-common.cc:5284
  #, gcc-internal-format
  msgid "empty range specified"
  msgstr "tomt interval angivet"
  
! #: c-family/c-common.cc:5338
  #, gcc-internal-format
  msgid "duplicate (or overlapping) case value"
  msgstr "case-vÃ¦rdi optrÃ¦der mere end Ã©n gang (mÃ¥ske pga. intervalsammenfald)"
  
! #: c-family/c-common.cc:5340
  #, fuzzy, gcc-internal-format
  #| msgid "%Jthis is the first entry overlapping that value"
  msgid "this is the first entry overlapping that value"
  msgstr "%Jdette er det fÃ¸rste punkt som falder sammen med den vÃ¦rdi"
  
! #: c-family/c-common.cc:5344
  #, gcc-internal-format
  msgid "duplicate case value"
  msgstr "case-vÃ¦rdi optrÃ¦der mere end Ã©n gang"
  
! #: c-family/c-common.cc:5345 c-family/c-warn.cc:2662
  #, fuzzy, gcc-internal-format
  #| msgid "%Jpreviously used here"
  msgid "previously used here"
  msgstr "%Jtidligere benyttet her"
  
! #: c-family/c-common.cc:5349
  #, gcc-internal-format
  msgid "multiple default labels in one switch"
  msgstr "flere default-etiketter i Ã©n switch-konstruktion"
  
! #: c-family/c-common.cc:5351
  #, fuzzy, gcc-internal-format
  #| msgid "%Jthis is the first default label"
  msgid "this is the first default label"
  msgstr "%Jdette er den fÃ¸rste default-etiket"
  
! #: c-family/c-common.cc:5463
  #, gcc-internal-format
  msgid "taking the address of a label is non-standard"
  msgstr "at tage adressen af en etiket fÃ¸lger ikke standarden"
  
! #: c-family/c-common.cc:5648
  #, fuzzy, gcc-internal-format
  #| msgid "requested alignment is not a constant"
  msgid "requested alignment is not an integer constant"
  msgstr "angivet justering er ikke en konstant"
  
! #: c-family/c-common.cc:5656 c-family/c-common.cc:5666
  #, fuzzy, gcc-internal-format
  #| msgid "requested alignment is not a power of 2"
  msgid "requested alignment %qE is not a positive power of 2"
  msgstr "angivet justering er ikke en potens af 2"
  
! #: c-family/c-common.cc:5676
  #, fuzzy, gcc-internal-format
  #| msgid "requested alignment is too large"
  msgid "requested alignment %qE exceeds object file maximum %u"
  msgstr "angivet justering er for stor"
  
! #: c-family/c-common.cc:5684
  #, fuzzy, gcc-internal-format
  #| msgid "requested alignment is too large"
  msgid "requested alignment %qE exceeds maximum %u"
  msgstr "angivet justering er for stor"
  
! #: c-family/c-common.cc:5879
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function"
  msgid "not enough variable arguments to fit a sentinel"
  msgstr "for fÃ¥ parametre til funktionen"
  
! #: c-family/c-common.cc:5894
  #, fuzzy, gcc-internal-format
  #| msgid "Prohibit PC relative function calls"
  msgid "missing sentinel in function call"
  msgstr "Forbyd PC-relative funktionskald"
  
! #: c-family/c-common.cc:6133 c-family/c-common.cc:6186 d/d-attribs.cc:837
  #: d/d-attribs.cc:887
  #, gcc-internal-format
  msgid "bad option %qs to attribute %<optimize%>"
  msgstr ""
  
! #: c-family/c-common.cc:6137 c-family/c-common.cc:6191
  #, fuzzy, gcc-internal-format
  #| msgid "invalid operand for 'p' modifier"
  msgid "bad option %qs to pragma %<optimize%>"
  msgstr "ugyldig operand til 'p'-Ã¦ndring"
  
! #: c-family/c-common.cc:6240
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute can only be applied to class definitions"
  msgid "attribute %<fallthrough%> specified multiple times"
  msgstr "egenskaben '%s' kan kun anvendes med klassedefinitioner"
  
! #: c-family/c-common.cc:6244
  #, fuzzy, gcc-internal-format
  #| msgid "default argument given for parameter %d of `%#D'"
  msgid "%<fallthrough%> attribute specified with a parameter"
  msgstr "standardparameter givet til %d. parameter for '%#D'"
  
! #: c-family/c-common.cc:6433 c-family/c-common.cc:7451
! #: c-family/c-common.cc:7499 c-family/c-common.cc:7581
! #: c-family/c-common.cc:7667 c-family/c-common.cc:8336
  #: config/aarch64/aarch64-sve-builtins.cc:3001
  #: config/arm/arm-mve-builtins.cc:1714
  #, fuzzy, gcc-internal-format
*************** msgstr "standardparameter givet til %d.
*** 37993,38000 ****
  msgid "too few arguments to function %qE"
  msgstr "for fÃ¥ parametre til funktionen"
  
! #: c-family/c-common.cc:6418 c-family/c-common.cc:7485
! #: c-family/c-common.cc:7673 c-family/c-common.cc:8317
  #: config/aarch64/aarch64-sve-builtins.cc:3003
  #: config/arm/arm-mve-builtins.cc:1716
  #, fuzzy, gcc-internal-format
--- 38011,38018 ----
  msgid "too few arguments to function %qE"
  msgstr "for fÃ¥ parametre til funktionen"
  
! #: c-family/c-common.cc:6439 c-family/c-common.cc:7506
! #: c-family/c-common.cc:7694 c-family/c-common.cc:8338
  #: config/aarch64/aarch64-sve-builtins.cc:3003
  #: config/arm/arm-mve-builtins.cc:1716
  #, fuzzy, gcc-internal-format
*************** msgstr "for fÃ¥ parametre til funktionen
*** 38002,38338 ****
  msgid "too many arguments to function %qE"
  msgstr "for mange parametre til funktionen"
  
! #: c-family/c-common.cc:6462
  #, fuzzy, gcc-internal-format
  #| msgid "third arg to `__builtin_prefetch' must be a constant"
  msgid "third argument to function %qE must be a constant integer"
  msgstr "en tredje parameter til '__builtin_prefetch' skal vÃ¦re en konstant"
  
! #: c-family/c-common.cc:6488
  #, gcc-internal-format
  msgid "second argument to function %qE must be a constant integer power of 2 between %qi and %qu bits"
  msgstr ""
  
! #: c-family/c-common.cc:6512 c-family/c-common.cc:6568
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "non-floating-point argument in call to function %qE"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c-family/c-common.cc:6541
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "non-floating-point arguments in call to function %qE"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c-family/c-common.cc:6558
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "non-const integer argument %u in call to function %qE"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c-family/c-common.cc:6587
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "non-integer argument 3 in call to function %qE"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c-family/c-common.cc:6607 c-family/c-common.cc:6673
! #: c-family/c-common.cc:6757 c-family/c-common.cc:6784
  #, gcc-internal-format
  msgid "argument %u in call to function %qE does not have integral type"
  msgstr ""
  
! #: c-family/c-common.cc:6617
  #, fuzzy, gcc-internal-format
  #| msgid "size in array new must have integral type"
  msgid "argument 3 in call to function %qE does not have pointer to integral type"
  msgstr "stÃ¸rrelse i tabel-new skal vÃ¦re en heltalstype"
  
! #: c-family/c-common.cc:6626
  #, fuzzy, gcc-internal-format
  #| msgid "argument of `asm' is not a constant string"
  msgid "argument 3 in call to function %qE has pointer to enumerated type"
  msgstr "parameteren til 'asm' er ikke en konstant streng"
  
! #: c-family/c-common.cc:6635
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "argument 3 in call to function %qE has pointer to boolean type"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c-family/c-common.cc:6644 c-family/c-common.cc:6653
! #: c-family/c-common.cc:6725 c-family/c-common.cc:6734
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "argument %u in call to function %qE has pointer to %qs type (%qT)"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c-family/c-common.cc:6682 c-family/c-common.cc:6793
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "argument %u in call to function %qE has enumerated type"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c-family/c-common.cc:6691 c-family/c-common.cc:6802
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "argument %u in call to function %qE has boolean type"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c-family/c-common.cc:6707
  #, fuzzy, gcc-internal-format
  #| msgid "size in array new must have integral type"
  msgid "argument %u in call to function %qE does not have pointer type"
  msgstr "stÃ¸rrelse i tabel-new skal vÃ¦re en heltalstype"
  
! #: c-family/c-common.cc:6716
  #, fuzzy, gcc-internal-format
  #| msgid "argument of `asm' is not a constant string"
  msgid "argument %u in call to function %qE points to incomplete type"
  msgstr "parameteren til 'asm' er ikke en konstant streng"
  
! #: c-family/c-common.cc:6770
  #, fuzzy, gcc-internal-format
  #| msgid "size in array new must have integral type"
  msgid "argument %u in call to function %qE does not have %<int%> type"
  msgstr "stÃ¸rrelse i tabel-new skal vÃ¦re en heltalstype"
  
! #: c-family/c-common.cc:6814
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "argument 1 in call to function %qE has unsigned type"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c-family/c-common.cc:6824
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "argument 1 in call to function %qE has signed type"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c-family/c-common.cc:7089 rust/backend/rust-tree.cc:3588
  #, fuzzy, gcc-internal-format
  msgid "cannot apply %<offsetof%> to static data member %qD"
  msgstr "ugyldig brug af ikke-statisk felt '%D'"
  
! #: c-family/c-common.cc:7094 rust/backend/rust-tree.cc:3593
  #, gcc-internal-format
  msgid "cannot apply %<offsetof%> when %<operator[]%> is overloaded"
  msgstr ""
  
! #: c-family/c-common.cc:7101 rust/backend/rust-tree.cc:3600
  #, gcc-internal-format
  msgid "cannot apply %<offsetof%> to a non constant address"
  msgstr ""
  
! #: c-family/c-common.cc:7114 rust/backend/rust-tree.cc:3613
  #, fuzzy, gcc-internal-format
  #| msgid "attempt to take address of bit-field structure member `%D'"
  msgid "attempt to take address of bit-field structure member %qD"
  msgstr "forsÃ¸g pÃ¥ at finde adressen af bitfeltstrukturmedlemmet '%D'"
  
! #: c-family/c-common.cc:7167 rust/backend/rust-tree.cc:3665
  #, gcc-internal-format
  msgid "index %E denotes an offset greater than size of %qT"
  msgstr ""
  
! #: c-family/c-common.cc:7344
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%s' is too large"
  msgid "size of array is too large"
  msgstr "stÃ¸rrelsen af tabellen '%s' er for stor"
  
! #: c-family/c-common.cc:7460 c-family/c-common.cc:7604
  #, fuzzy, gcc-internal-format
  #| msgid "incompatible type for argument %d of `%s'"
  msgid "operand type %qT is incompatible with argument %d of %qE"
  msgstr "typen af den %d. parameter i '%s' passer ikke"
  
! #: c-family/c-common.cc:7496
  #, fuzzy, gcc-internal-format
  #| msgid "%s makes pointer from integer without a cast"
  msgid "expecting argument of type pointer or of type integer for argument 1"
  msgstr "%s opretter en henvisningsvariabel ud fra et heltal uden en typeomtvingning"
  
! #: c-family/c-common.cc:7513
  #, fuzzy, gcc-internal-format
  #| msgid "left argument must be a slice"
  msgid "both arguments must be compatible"
  msgstr "venstre parameter skal vÃ¦re en skive"
  
! #: c-family/c-common.cc:7749
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function `%s'"
  msgid "incorrect number of arguments to function %qE"
  msgstr "for fÃ¥ parametre til funktionen '%s'"
  
! #: c-family/c-common.cc:7765
  #, fuzzy, gcc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "argument 1 of %qE must be a non-void pointer type"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: c-family/c-common.cc:7773
  #, fuzzy, gcc-internal-format
  #| msgid "argument of `asm' is not a constant string"
  msgid "argument 1 of %qE must be a pointer to a complete type"
  msgstr "parameteren til 'asm' er ikke en konstant streng"
  
! #: c-family/c-common.cc:7783
  #, fuzzy, gcc-internal-format
  #| msgid "argument of `asm' is not a constant string"
  msgid "argument 1 of %qE must be a pointer to a constant size type"
  msgstr "parameteren til 'asm' er ikke en konstant streng"
  
! #: c-family/c-common.cc:7795
  #, fuzzy, gcc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "argument 1 of %qE must be a pointer to a nonzero size object"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: c-family/c-common.cc:7817
  #, fuzzy, gcc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "argument %d of %qE must be a pointer type"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: c-family/c-common.cc:7827
  #, fuzzy, gcc-internal-format
  #| msgid "argument of `asm' is not a constant string"
  msgid "argument %d of %qE must be a pointer to a constant size type"
  msgstr "parameteren til 'asm' er ikke en konstant streng"
  
! #: c-family/c-common.cc:7836
  #, fuzzy, gcc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "argument %d of %qE must not be a pointer to a function"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: c-family/c-common.cc:7846
  #, fuzzy, gcc-internal-format
  #| msgid "in passing argument %P of `%+D'"
  msgid "size mismatch in argument %d of %qE"
  msgstr "i overbringelse af parameter %P af '%+D'"
  
! #: c-family/c-common.cc:7861
  #, fuzzy, gcc-internal-format
  #| msgid "argument of `asm' is not a constant string"
  msgid "argument %d of %qE must not be a pointer to a %<const%> type"
  msgstr "parameteren til 'asm' er ikke en konstant streng"
  
! #: c-family/c-common.cc:7867
  #, fuzzy, gcc-internal-format
  #| msgid "cast from `%T' to `%T' discards qualifiers from pointer target type"
  msgid "argument %d of %qE discards %<const%> qualifier"
  msgstr "typeomtvingning fra '%T' til '%T' kasserer modifikationer pÃ¥ henvisningsmÃ¥lets type"
  
! #: c-family/c-common.cc:7878
  #, fuzzy, gcc-internal-format
  #| msgid "argument of `asm' is not a constant string"
  msgid "argument %d of %qE must not be a pointer to a %<volatile%> type"
  msgstr "parameteren til 'asm' er ikke en konstant streng"
  
! #: c-family/c-common.cc:7884
  #, fuzzy, gcc-internal-format
  #| msgid "cast from `%T' to `%T' discards qualifiers from pointer target type"
  msgid "argument %d of %qE discards %<volatile%> qualifier"
  msgstr "typeomtvingning fra '%T' til '%T' kasserer modifikationer pÃ¥ henvisningsmÃ¥lets type"
  
! #: c-family/c-common.cc:7898
  #, gcc-internal-format
  msgid "non-integer memory model argument %d of %qE"
  msgstr ""
  
! #: c-family/c-common.cc:7913
  #, fuzzy, gcc-internal-format
  #| msgid "invalid type argument of `%s'"
  msgid "invalid memory model argument %d of %qE"
  msgstr "ugyldig typeparameter '%s'"
  
! #: c-family/c-common.cc:8554
  #, gcc-internal-format
  msgid "this target does not define a speculation barrier; your program will still execute correctly, but incorrect speculation may not be restricted"
  msgstr ""
  
! #: c-family/c-common.cc:9252
  #, fuzzy, gcc-internal-format
  #| msgid "accumulator number is out of bounds"
  msgid "index value is out of bound"
  msgstr "akkumulatortal er uden for det gyldig interval"
  
! #: c-family/c-common.cc:9298 c-family/c-common.cc:9347
! #: c-family/c-common.cc:9363
  #, gcc-internal-format
  msgid "conversion of scalar %qT to vector %qT involves truncation"
  msgstr ""
  
  #. Reject arguments that are built-in functions with
  #. no library fallback.
! #: c-family/c-common.cc:9451 d/intrinsics.cc:1459
  #: rust/backend/rust-tree.cc:3484
  #, fuzzy, gcc-internal-format
  msgid "built-in function %qE must be directly called"
  msgstr "den indbyggede funktion '%s' er erklÃ¦ret som noget der ikke er en funktion"
  
! #: c-family/c-common.cc:9471
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%D' is not an integral constant-expression"
  msgid "size of array %qE is not a constant expression"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: c-family/c-common.cc:9474
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "size of array is not a constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: c-family/c-common.cc:9478
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is negative"
  msgid "size %qE of array %qE is negative"
  msgstr "stÃ¸rrelsen af tabel er negativ"
  
! #: c-family/c-common.cc:9481
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is negative"
  msgid "size %qE of array is negative"
  msgstr "stÃ¸rrelsen af tabel er negativ"
  
! #: c-family/c-common.cc:9486
  #, fuzzy, gcc-internal-format
  #| msgid "right shift count is negative"
  msgid "size %qE of array %qE exceeds maximum object size %qE"
  msgstr "hÃ¸jreskiftsantal er negativ"
  
! #: c-family/c-common.cc:9489
  #, fuzzy, gcc-internal-format
  #| msgid "right shift count is negative"
  msgid "size %qE of array exceeds maximum object size %qE"
  msgstr "hÃ¸jreskiftsantal er negativ"
  
! #: c-family/c-common.cc:9494
  #, fuzzy, gcc-internal-format
  #| msgid "right shift count is negative"
  msgid "size of array %qE exceeds maximum object size %qE"
  msgstr "hÃ¸jreskiftsantal er negativ"
  
! #: c-family/c-common.cc:9497
  #, fuzzy, gcc-internal-format
  #| msgid "right shift count is negative"
  msgid "size of array exceeds maximum object size %qE"
  msgstr "hÃ¸jreskiftsantal er negativ"
  
! #: c-family/c-common.cc:9568
  #, gcc-internal-format
  msgid "environment variable %qs must expand to a non-negative integer less than or equal to %wd"
  msgstr ""
  
! #: c-family/c-common.cc:9855
  #, gcc-internal-format
  msgid "possible fix: take the address with %qs"
  msgstr ""
  
! #: c-family/c-common.cc:9865
  #, gcc-internal-format
  msgid "possible fix: dereference with %qs"
  msgstr ""
--- 38020,38356 ----
  msgid "too many arguments to function %qE"
  msgstr "for mange parametre til funktionen"
  
! #: c-family/c-common.cc:6483
  #, fuzzy, gcc-internal-format
  #| msgid "third arg to `__builtin_prefetch' must be a constant"
  msgid "third argument to function %qE must be a constant integer"
  msgstr "en tredje parameter til '__builtin_prefetch' skal vÃ¦re en konstant"
  
! #: c-family/c-common.cc:6509
  #, gcc-internal-format
  msgid "second argument to function %qE must be a constant integer power of 2 between %qi and %qu bits"
  msgstr ""
  
! #: c-family/c-common.cc:6533 c-family/c-common.cc:6589
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "non-floating-point argument in call to function %qE"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c-family/c-common.cc:6562
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "non-floating-point arguments in call to function %qE"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c-family/c-common.cc:6579
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "non-const integer argument %u in call to function %qE"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c-family/c-common.cc:6608
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "non-integer argument 3 in call to function %qE"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c-family/c-common.cc:6628 c-family/c-common.cc:6694
! #: c-family/c-common.cc:6778 c-family/c-common.cc:6805
  #, gcc-internal-format
  msgid "argument %u in call to function %qE does not have integral type"
  msgstr ""
  
! #: c-family/c-common.cc:6638
  #, fuzzy, gcc-internal-format
  #| msgid "size in array new must have integral type"
  msgid "argument 3 in call to function %qE does not have pointer to integral type"
  msgstr "stÃ¸rrelse i tabel-new skal vÃ¦re en heltalstype"
  
! #: c-family/c-common.cc:6647
  #, fuzzy, gcc-internal-format
  #| msgid "argument of `asm' is not a constant string"
  msgid "argument 3 in call to function %qE has pointer to enumerated type"
  msgstr "parameteren til 'asm' er ikke en konstant streng"
  
! #: c-family/c-common.cc:6656
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "argument 3 in call to function %qE has pointer to boolean type"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c-family/c-common.cc:6665 c-family/c-common.cc:6674
! #: c-family/c-common.cc:6746 c-family/c-common.cc:6755
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "argument %u in call to function %qE has pointer to %qs type (%qT)"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c-family/c-common.cc:6703 c-family/c-common.cc:6814
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "argument %u in call to function %qE has enumerated type"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c-family/c-common.cc:6712 c-family/c-common.cc:6823
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "argument %u in call to function %qE has boolean type"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c-family/c-common.cc:6728
  #, fuzzy, gcc-internal-format
  #| msgid "size in array new must have integral type"
  msgid "argument %u in call to function %qE does not have pointer type"
  msgstr "stÃ¸rrelse i tabel-new skal vÃ¦re en heltalstype"
  
! #: c-family/c-common.cc:6737
  #, fuzzy, gcc-internal-format
  #| msgid "argument of `asm' is not a constant string"
  msgid "argument %u in call to function %qE points to incomplete type"
  msgstr "parameteren til 'asm' er ikke en konstant streng"
  
! #: c-family/c-common.cc:6791
  #, fuzzy, gcc-internal-format
  #| msgid "size in array new must have integral type"
  msgid "argument %u in call to function %qE does not have %<int%> type"
  msgstr "stÃ¸rrelse i tabel-new skal vÃ¦re en heltalstype"
  
! #: c-family/c-common.cc:6835
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "argument 1 in call to function %qE has unsigned type"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c-family/c-common.cc:6845
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "argument 1 in call to function %qE has signed type"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c-family/c-common.cc:7110 rust/backend/rust-tree.cc:3588
  #, fuzzy, gcc-internal-format
  msgid "cannot apply %<offsetof%> to static data member %qD"
  msgstr "ugyldig brug af ikke-statisk felt '%D'"
  
! #: c-family/c-common.cc:7115 rust/backend/rust-tree.cc:3593
  #, gcc-internal-format
  msgid "cannot apply %<offsetof%> when %<operator[]%> is overloaded"
  msgstr ""
  
! #: c-family/c-common.cc:7122 rust/backend/rust-tree.cc:3600
  #, gcc-internal-format
  msgid "cannot apply %<offsetof%> to a non constant address"
  msgstr ""
  
! #: c-family/c-common.cc:7135 rust/backend/rust-tree.cc:3613
  #, fuzzy, gcc-internal-format
  #| msgid "attempt to take address of bit-field structure member `%D'"
  msgid "attempt to take address of bit-field structure member %qD"
  msgstr "forsÃ¸g pÃ¥ at finde adressen af bitfeltstrukturmedlemmet '%D'"
  
! #: c-family/c-common.cc:7188 rust/backend/rust-tree.cc:3665
  #, gcc-internal-format
  msgid "index %E denotes an offset greater than size of %qT"
  msgstr ""
  
! #: c-family/c-common.cc:7365
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%s' is too large"
  msgid "size of array is too large"
  msgstr "stÃ¸rrelsen af tabellen '%s' er for stor"
  
! #: c-family/c-common.cc:7481 c-family/c-common.cc:7625
  #, fuzzy, gcc-internal-format
  #| msgid "incompatible type for argument %d of `%s'"
  msgid "operand type %qT is incompatible with argument %d of %qE"
  msgstr "typen af den %d. parameter i '%s' passer ikke"
  
! #: c-family/c-common.cc:7517
  #, fuzzy, gcc-internal-format
  #| msgid "%s makes pointer from integer without a cast"
  msgid "expecting argument of type pointer or of type integer for argument 1"
  msgstr "%s opretter en henvisningsvariabel ud fra et heltal uden en typeomtvingning"
  
! #: c-family/c-common.cc:7534
  #, fuzzy, gcc-internal-format
  #| msgid "left argument must be a slice"
  msgid "both arguments must be compatible"
  msgstr "venstre parameter skal vÃ¦re en skive"
  
! #: c-family/c-common.cc:7770
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function `%s'"
  msgid "incorrect number of arguments to function %qE"
  msgstr "for fÃ¥ parametre til funktionen '%s'"
  
! #: c-family/c-common.cc:7786
  #, fuzzy, gcc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "argument 1 of %qE must be a non-void pointer type"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: c-family/c-common.cc:7794
  #, fuzzy, gcc-internal-format
  #| msgid "argument of `asm' is not a constant string"
  msgid "argument 1 of %qE must be a pointer to a complete type"
  msgstr "parameteren til 'asm' er ikke en konstant streng"
  
! #: c-family/c-common.cc:7804
  #, fuzzy, gcc-internal-format
  #| msgid "argument of `asm' is not a constant string"
  msgid "argument 1 of %qE must be a pointer to a constant size type"
  msgstr "parameteren til 'asm' er ikke en konstant streng"
  
! #: c-family/c-common.cc:7816
  #, fuzzy, gcc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "argument 1 of %qE must be a pointer to a nonzero size object"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: c-family/c-common.cc:7838
  #, fuzzy, gcc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "argument %d of %qE must be a pointer type"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: c-family/c-common.cc:7848
  #, fuzzy, gcc-internal-format
  #| msgid "argument of `asm' is not a constant string"
  msgid "argument %d of %qE must be a pointer to a constant size type"
  msgstr "parameteren til 'asm' er ikke en konstant streng"
  
! #: c-family/c-common.cc:7857
  #, fuzzy, gcc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "argument %d of %qE must not be a pointer to a function"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: c-family/c-common.cc:7867
  #, fuzzy, gcc-internal-format
  #| msgid "in passing argument %P of `%+D'"
  msgid "size mismatch in argument %d of %qE"
  msgstr "i overbringelse af parameter %P af '%+D'"
  
! #: c-family/c-common.cc:7882
  #, fuzzy, gcc-internal-format
  #| msgid "argument of `asm' is not a constant string"
  msgid "argument %d of %qE must not be a pointer to a %<const%> type"
  msgstr "parameteren til 'asm' er ikke en konstant streng"
  
! #: c-family/c-common.cc:7888
  #, fuzzy, gcc-internal-format
  #| msgid "cast from `%T' to `%T' discards qualifiers from pointer target type"
  msgid "argument %d of %qE discards %<const%> qualifier"
  msgstr "typeomtvingning fra '%T' til '%T' kasserer modifikationer pÃ¥ henvisningsmÃ¥lets type"
  
! #: c-family/c-common.cc:7899
  #, fuzzy, gcc-internal-format
  #| msgid "argument of `asm' is not a constant string"
  msgid "argument %d of %qE must not be a pointer to a %<volatile%> type"
  msgstr "parameteren til 'asm' er ikke en konstant streng"
  
! #: c-family/c-common.cc:7905
  #, fuzzy, gcc-internal-format
  #| msgid "cast from `%T' to `%T' discards qualifiers from pointer target type"
  msgid "argument %d of %qE discards %<volatile%> qualifier"
  msgstr "typeomtvingning fra '%T' til '%T' kasserer modifikationer pÃ¥ henvisningsmÃ¥lets type"
  
! #: c-family/c-common.cc:7919
  #, gcc-internal-format
  msgid "non-integer memory model argument %d of %qE"
  msgstr ""
  
! #: c-family/c-common.cc:7934
  #, fuzzy, gcc-internal-format
  #| msgid "invalid type argument of `%s'"
  msgid "invalid memory model argument %d of %qE"
  msgstr "ugyldig typeparameter '%s'"
  
! #: c-family/c-common.cc:8575
  #, gcc-internal-format
  msgid "this target does not define a speculation barrier; your program will still execute correctly, but incorrect speculation may not be restricted"
  msgstr ""
  
! #: c-family/c-common.cc:9273
  #, fuzzy, gcc-internal-format
  #| msgid "accumulator number is out of bounds"
  msgid "index value is out of bound"
  msgstr "akkumulatortal er uden for det gyldig interval"
  
! #: c-family/c-common.cc:9319 c-family/c-common.cc:9368
! #: c-family/c-common.cc:9384
  #, gcc-internal-format
  msgid "conversion of scalar %qT to vector %qT involves truncation"
  msgstr ""
  
  #. Reject arguments that are built-in functions with
  #. no library fallback.
! #: c-family/c-common.cc:9472 d/intrinsics.cc:1459
  #: rust/backend/rust-tree.cc:3484
  #, fuzzy, gcc-internal-format
  msgid "built-in function %qE must be directly called"
  msgstr "den indbyggede funktion '%s' er erklÃ¦ret som noget der ikke er en funktion"
  
! #: c-family/c-common.cc:9492
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%D' is not an integral constant-expression"
  msgid "size of array %qE is not a constant expression"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: c-family/c-common.cc:9495
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "size of array is not a constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: c-family/c-common.cc:9499
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is negative"
  msgid "size %qE of array %qE is negative"
  msgstr "stÃ¸rrelsen af tabel er negativ"
  
! #: c-family/c-common.cc:9502
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is negative"
  msgid "size %qE of array is negative"
  msgstr "stÃ¸rrelsen af tabel er negativ"
  
! #: c-family/c-common.cc:9507
  #, fuzzy, gcc-internal-format
  #| msgid "right shift count is negative"
  msgid "size %qE of array %qE exceeds maximum object size %qE"
  msgstr "hÃ¸jreskiftsantal er negativ"
  
! #: c-family/c-common.cc:9510
  #, fuzzy, gcc-internal-format
  #| msgid "right shift count is negative"
  msgid "size %qE of array exceeds maximum object size %qE"
  msgstr "hÃ¸jreskiftsantal er negativ"
  
! #: c-family/c-common.cc:9515
  #, fuzzy, gcc-internal-format
  #| msgid "right shift count is negative"
  msgid "size of array %qE exceeds maximum object size %qE"
  msgstr "hÃ¸jreskiftsantal er negativ"
  
! #: c-family/c-common.cc:9518
  #, fuzzy, gcc-internal-format
  #| msgid "right shift count is negative"
  msgid "size of array exceeds maximum object size %qE"
  msgstr "hÃ¸jreskiftsantal er negativ"
  
! #: c-family/c-common.cc:9589
  #, gcc-internal-format
  msgid "environment variable %qs must expand to a non-negative integer less than or equal to %wd"
  msgstr ""
  
! #: c-family/c-common.cc:9876
  #, gcc-internal-format
  msgid "possible fix: take the address with %qs"
  msgstr ""
  
! #: c-family/c-common.cc:9886
  #, gcc-internal-format
  msgid "possible fix: dereference with %qs"
  msgstr ""
*************** msgstr "heltalskonstanten er for stor ti
*** 39008,39014 ****
  msgid "integer constant is too large for %<_BitInt(%d)%> type"
  msgstr "heltalskonstanten er for stor til typen '%s'"
  
! #: c-family/c-lex.cc:1093 c/c-decl.cc:12949
  #, fuzzy, gcc-internal-format
  #| msgid "Profiling is not supported on this target."
  msgid "%<_BitInt(%d)%> is not supported on this target"
--- 39026,39032 ----
  msgid "integer constant is too large for %<_BitInt(%d)%> type"
  msgstr "heltalskonstanten er for stor til typen '%s'"
  
! #: c-family/c-lex.cc:1093 c/c-decl.cc:12953
  #, fuzzy, gcc-internal-format
  #| msgid "Profiling is not supported on this target."
  msgid "%<_BitInt(%d)%> is not supported on this target"
*************** msgstr "kommatalskonstant er uden for de
*** 39089,39106 ****
  msgid "repeated %<@%> before Objective-C string"
  msgstr ""
  
! #: c-family/c-lex.cc:1655 c/c-parser.cc:9675
  #, fuzzy, gcc-internal-format
  #| msgid "possible start of unterminated string literal"
  msgid "unsupported non-standard concatenation of string literals"
  msgstr "muligvis begyndelsen af uafsluttet strengkonstant"
  
! #: c-family/c-lex.cc:1691 c/c-parser.cc:9696
  #, fuzzy, gcc-internal-format
  msgid "traditional C rejects string constant concatenation"
  msgstr "traditionel C tillader ikke strengsammensÃ¦tning"
  
! #: c-family/c-omp.cc:131 cp/pt.cc:19623
  #, gcc-internal-format
  msgid "%<#pragma omp critical%> with %<hint%> clause requires a name, except when %<omp_sync_hint_none%> is used"
  msgstr ""
--- 39107,39124 ----
  msgid "repeated %<@%> before Objective-C string"
  msgstr ""
  
! #: c-family/c-lex.cc:1655 c/c-parser.cc:9720
  #, fuzzy, gcc-internal-format
  #| msgid "possible start of unterminated string literal"
  msgid "unsupported non-standard concatenation of string literals"
  msgstr "muligvis begyndelsen af uafsluttet strengkonstant"
  
! #: c-family/c-lex.cc:1691 c/c-parser.cc:9741
  #, fuzzy, gcc-internal-format
  msgid "traditional C rejects string constant concatenation"
  msgstr "traditionel C tillader ikke strengsammensÃ¦tning"
  
! #: c-family/c-omp.cc:131 cp/pt.cc:19652
  #, gcc-internal-format
  msgid "%<#pragma omp critical%> with %<hint%> clause requires a name, except when %<omp_sync_hint_none%> is used"
  msgstr ""
*************** msgstr ""
*** 39300,39318 ****
  msgid "%<inscan%> %<reduction%> clause on construct other than %<for%>, %<simd%>, %<for simd%>, %<parallel for%>, %<parallel for simd%>"
  msgstr ""
  
! #: c-family/c-omp.cc:3072 c/c-typeck.cc:17691 cp/semantics.cc:10162
  #, gcc-internal-format
  msgid "%qD specified in %<allocate%> clause but not in an explicit privatization clause"
  msgstr ""
  
! #: c-family/c-omp.cc:3164 c-family/c-omp.cc:3179 c/c-parser.cc:27067
! #: cp/parser.cc:50503
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function template"
  msgid "%qD is not a function argument"
  msgstr "'%D' er ikke en funktionsskabelon"
  
! #: c-family/c-omp.cc:3460 c/c-typeck.cc:16778 cp/semantics.cc:8752
  #, fuzzy, gcc-internal-format
  #| msgid "bit-field `%s' has invalid type"
  msgid "bit-field %qE in %qs clause"
--- 39318,39336 ----
  msgid "%<inscan%> %<reduction%> clause on construct other than %<for%>, %<simd%>, %<for simd%>, %<parallel for%>, %<parallel for simd%>"
  msgstr ""
  
! #: c-family/c-omp.cc:3072 c/c-typeck.cc:17708 cp/semantics.cc:10162
  #, gcc-internal-format
  msgid "%qD specified in %<allocate%> clause but not in an explicit privatization clause"
  msgstr ""
  
! #: c-family/c-omp.cc:3164 c-family/c-omp.cc:3179 c/c-parser.cc:27113
! #: cp/parser.cc:50562
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function template"
  msgid "%qD is not a function argument"
  msgstr "'%D' er ikke en funktionsskabelon"
  
! #: c-family/c-omp.cc:3460 c/c-typeck.cc:16795 cp/semantics.cc:8752
  #, fuzzy, gcc-internal-format
  #| msgid "bit-field `%s' has invalid type"
  msgid "bit-field %qE in %qs clause"
*************** msgstr "bitfeltet '%s' er af en ufuldstÃ
*** 39323,39330 ****
  msgid "%qE does not have a mappable type in %qs clause"
  msgstr "%qE har ikke en mappable-type i %qs-klausul"
  
! #: c-family/c-omp.cc:3476 c/c-typeck.cc:15178 c/c-typeck.cc:16867
! #: c/c-typeck.cc:17055
  #, fuzzy, gcc-internal-format
  #| msgid "bit-field `%s' has invalid type"
  msgid "%<_Atomic%> %qE in %qs clause"
--- 39341,39348 ----
  msgid "%qE does not have a mappable type in %qs clause"
  msgstr "%qE har ikke en mappable-type i %qs-klausul"
  
! #: c-family/c-omp.cc:3476 c/c-typeck.cc:15195 c/c-typeck.cc:16884
! #: c/c-typeck.cc:17072
  #, fuzzy, gcc-internal-format
  #| msgid "bit-field `%s' has invalid type"
  msgid "%<_Atomic%> %qE in %qs clause"
*************** msgstr "-Wformat-security ignoreret uden
*** 39416,39518 ****
  msgid "%<-fabi-compat-version=1%> is not supported, using =2"
  msgstr "-traditional understÃ¸ttes ikke i C++"
  
! #: c-family/c-opts.cc:1108
! #, gcc-internal-format
! msgid "%<-Wabi%> won%'t warn about anything"
! msgstr ""
! 
! #: c-family/c-opts.cc:1110
! #, gcc-internal-format
! msgid "%<-Wabi%> warns about differences from the most up-to-date ABI, which is also used by default"
! msgstr ""
! 
! #: c-family/c-opts.cc:1113
! #, gcc-internal-format
! msgid "use e.g. %<-Wabi=11%> to warn about changes from GCC 7"
! msgstr ""
  
! #: c-family/c-opts.cc:1198
  #, fuzzy, gcc-internal-format
  #| msgid "stack limits not supported on this target"
  msgid "external TLS initialization functions not supported on this target"
  msgstr "stakgrÃ¦nser understÃ¸ttes ikke pÃ¥ mÃ¥larkitekturen"
  
! #: c-family/c-opts.cc:1226
  #, fuzzy, gcc-internal-format
  #| msgid "too many filenames given.  Type %s --help for usage"
  msgid "too many filenames given; type %<%s %s%> for usage"
  msgstr "for mange filnavne angivet - vejledning i brug kan fÃ¥s med '%s --help'"
  
! #: c-family/c-opts.cc:1240
  #, fuzzy, gcc-internal-format
  msgid "opening output file %s: %m"
  msgstr "Ã¥bner uddatafilen %s"
  
! #: c-family/c-opts.cc:1258
  #, gcc-internal-format
  msgid "the %qs debug info cannot be used with pre-compiled headers"
  msgstr ""
  
! #: c-family/c-opts.cc:1424 c-family/c-opts.cc:1445
  #, fuzzy, gcc-internal-format
  msgid "opening dependency file %s: %m"
  msgstr "Ã¥bner afhÃ¦ngighedsfilen %s"
  
! #: c-family/c-opts.cc:1449
  #, gcc-internal-format
  msgid "%<-MF%> and %<-fdeps-file=%> cannot share an output file %s: %m"
  msgstr ""
  
! #: c-family/c-opts.cc:1459
  #, fuzzy, gcc-internal-format
  msgid "closing dependency file %s: %m"
  msgstr "lukker afhÃ¦ngighedsfilen %s"
  
! #: c-family/c-opts.cc:1462
  #, fuzzy, gcc-internal-format
  msgid "when writing output to %s: %m"
  msgstr "ved skrivning af uddata til %s"
  
! #: c-family/c-opts.cc:1540
  #, fuzzy, gcc-internal-format
  #| msgid "to generate dependencies you must specify either -M or -MM"
  msgid "to generate dependencies you must specify either %<-M%> or %<-MM%>"
  msgstr "for at generere afhÃ¦ngigheder skal du angive enten -M eller -MM"
  
! #: c-family/c-opts.cc:1564
  #, fuzzy, gcc-internal-format
  #| msgid "-mn is used without -mh or -ms"
  msgid "%<-MG%> may only be used with %<-M%> or %<-MM%>"
  msgstr "-mn benyttet uden -mh eller -ms"
  
! #: c-family/c-opts.cc:1597
  #, fuzzy, gcc-internal-format
  #| msgid "-mapcs-stack-check incompatible with -mno-apcs-frame"
  msgid "%<-fdirectives-only%> is incompatible with %<-Wunused-macros%>"
  msgstr "-mapcs-stack-check og -mno-apcs-frame er indbyrdes uforenelige"
  
! #: c-family/c-opts.cc:1600
  #, fuzzy, gcc-internal-format
  #| msgid "-mapcs-stack-check incompatible with -mno-apcs-frame"
  msgid "%<-fdirectives-only%> is incompatible with %<-traditional%>"
  msgstr "-mapcs-stack-check og -mno-apcs-frame er indbyrdes uforenelige"
  
! #: c-family/c-opts.cc:1702
  #, gcc-internal-format
  msgid "%<_FORTIFY_SOURCE%> is not enabled by %<-fhardened%> because optimizations are turned off"
  msgstr ""
  
! #: c-family/c-opts.cc:1706
  #, gcc-internal-format
  msgid "%<_FORTIFY_SOURCE%> is not enabled by %<-fhardened%> because it was specified in %<-D%> or %<-U%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1712
  #, gcc-internal-format
  msgid "%<_GLIBCXX_ASSERTIONS%> is not enabled by %<-fhardened%> because it was specified in %<-D%> or %<-U%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1836
  #, gcc-internal-format
  msgid "too late for # directive to set debug directory"
  msgstr ""
--- 39434,39527 ----
  msgid "%<-fabi-compat-version=1%> is not supported, using =2"
  msgstr "-traditional understÃ¸ttes ikke i C++"
  
! #: c-family/c-opts.cc:1094
! #, fuzzy, gcc-internal-format
! #| msgid "-traditional is not supported in C++"
! msgid "%<-fabi-version=%d%> is not supported, using =%d"
! msgstr "-traditional understÃ¸ttes ikke i C++"
  
! #: c-family/c-opts.cc:1200
  #, fuzzy, gcc-internal-format
  #| msgid "stack limits not supported on this target"
  msgid "external TLS initialization functions not supported on this target"
  msgstr "stakgrÃ¦nser understÃ¸ttes ikke pÃ¥ mÃ¥larkitekturen"
  
! #: c-family/c-opts.cc:1228
  #, fuzzy, gcc-internal-format
  #| msgid "too many filenames given.  Type %s --help for usage"
  msgid "too many filenames given; type %<%s %s%> for usage"
  msgstr "for mange filnavne angivet - vejledning i brug kan fÃ¥s med '%s --help'"
  
! #: c-family/c-opts.cc:1242
  #, fuzzy, gcc-internal-format
  msgid "opening output file %s: %m"
  msgstr "Ã¥bner uddatafilen %s"
  
! #: c-family/c-opts.cc:1260
  #, gcc-internal-format
  msgid "the %qs debug info cannot be used with pre-compiled headers"
  msgstr ""
  
! #: c-family/c-opts.cc:1426 c-family/c-opts.cc:1447
  #, fuzzy, gcc-internal-format
  msgid "opening dependency file %s: %m"
  msgstr "Ã¥bner afhÃ¦ngighedsfilen %s"
  
! #: c-family/c-opts.cc:1451
  #, gcc-internal-format
  msgid "%<-MF%> and %<-fdeps-file=%> cannot share an output file %s: %m"
  msgstr ""
  
! #: c-family/c-opts.cc:1461
  #, fuzzy, gcc-internal-format
  msgid "closing dependency file %s: %m"
  msgstr "lukker afhÃ¦ngighedsfilen %s"
  
! #: c-family/c-opts.cc:1464
  #, fuzzy, gcc-internal-format
  msgid "when writing output to %s: %m"
  msgstr "ved skrivning af uddata til %s"
  
! #: c-family/c-opts.cc:1542
  #, fuzzy, gcc-internal-format
  #| msgid "to generate dependencies you must specify either -M or -MM"
  msgid "to generate dependencies you must specify either %<-M%> or %<-MM%>"
  msgstr "for at generere afhÃ¦ngigheder skal du angive enten -M eller -MM"
  
! #: c-family/c-opts.cc:1566
  #, fuzzy, gcc-internal-format
  #| msgid "-mn is used without -mh or -ms"
  msgid "%<-MG%> may only be used with %<-M%> or %<-MM%>"
  msgstr "-mn benyttet uden -mh eller -ms"
  
! #: c-family/c-opts.cc:1599
  #, fuzzy, gcc-internal-format
  #| msgid "-mapcs-stack-check incompatible with -mno-apcs-frame"
  msgid "%<-fdirectives-only%> is incompatible with %<-Wunused-macros%>"
  msgstr "-mapcs-stack-check og -mno-apcs-frame er indbyrdes uforenelige"
  
! #: c-family/c-opts.cc:1602
  #, fuzzy, gcc-internal-format
  #| msgid "-mapcs-stack-check incompatible with -mno-apcs-frame"
  msgid "%<-fdirectives-only%> is incompatible with %<-traditional%>"
  msgstr "-mapcs-stack-check og -mno-apcs-frame er indbyrdes uforenelige"
  
! #: c-family/c-opts.cc:1704
  #, gcc-internal-format
  msgid "%<_FORTIFY_SOURCE%> is not enabled by %<-fhardened%> because optimizations are turned off"
  msgstr ""
  
! #: c-family/c-opts.cc:1708
  #, gcc-internal-format
  msgid "%<_FORTIFY_SOURCE%> is not enabled by %<-fhardened%> because it was specified in %<-D%> or %<-U%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1714
  #, gcc-internal-format
  msgid "%<_GLIBCXX_ASSERTIONS%> is not enabled by %<-fhardened%> because it was specified in %<-D%> or %<-U%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1838
  #, gcc-internal-format
  msgid "too late for # directive to set debug directory"
  msgstr ""
*************** msgid "wrong type argument to %s"
*** 39983,39989 ****
  msgstr "forkert parametertype til %s"
  
  #: c-family/c-warn.cc:60 c-family/c-warn.cc:73 cp/constexpr.cc:3715
! #: cp/constexpr.cc:7709 m2/gm2-gcc/m2expr.cc:965
  #: rust/backend/rust-constexpr.cc:1908 rust/backend/rust-constexpr.cc:4331
  #, gcc-internal-format
  msgid "overflow in constant expression"
--- 39992,39998 ----
  msgstr "forkert parametertype til %s"
  
  #: c-family/c-warn.cc:60 c-family/c-warn.cc:73 cp/constexpr.cc:3715
! #: cp/constexpr.cc:7725 m2/gm2-gcc/m2expr.cc:965
  #: rust/backend/rust-constexpr.cc:1908 rust/backend/rust-constexpr.cc:4331
  #, gcc-internal-format
  msgid "overflow in constant expression"
*************** msgstr "for fÃ¥ parametre til funktionen
*** 40528,40548 ****
  msgid "function %qD used as %<asm%> output"
  msgstr ""
  
! #: c-family/c-warn.cc:1914 c/c-typeck.cc:5841
  #: rust/checks/errors/rust-readonly-check.cc:103
  #, fuzzy, gcc-internal-format
  #| msgid "%s of read-only location"
  msgid "assignment of read-only location %qE"
  msgstr "%s af placering der kun mÃ¥ lÃ¦ses"
  
! #: c-family/c-warn.cc:1915 c/c-typeck.cc:5844
  #: rust/checks/errors/rust-readonly-check.cc:104
  #, fuzzy, gcc-internal-format
  #| msgid "%s of read-only location"
  msgid "increment of read-only location %qE"
  msgstr "%s af placering der kun mÃ¥ lÃ¦ses"
  
! #: c-family/c-warn.cc:1916 c/c-typeck.cc:5847
  #: rust/checks/errors/rust-readonly-check.cc:105
  #, fuzzy, gcc-internal-format
  #| msgid "%s of read-only location"
--- 40537,40557 ----
  msgid "function %qD used as %<asm%> output"
  msgstr ""
  
! #: c-family/c-warn.cc:1914 c/c-typeck.cc:5842
  #: rust/checks/errors/rust-readonly-check.cc:103
  #, fuzzy, gcc-internal-format
  #| msgid "%s of read-only location"
  msgid "assignment of read-only location %qE"
  msgstr "%s af placering der kun mÃ¥ lÃ¦ses"
  
! #: c-family/c-warn.cc:1915 c/c-typeck.cc:5845
  #: rust/checks/errors/rust-readonly-check.cc:104
  #, fuzzy, gcc-internal-format
  #| msgid "%s of read-only location"
  msgid "increment of read-only location %qE"
  msgstr "%s af placering der kun mÃ¥ lÃ¦ses"
  
! #: c-family/c-warn.cc:1916 c/c-typeck.cc:5848
  #: rust/checks/errors/rust-readonly-check.cc:105
  #, fuzzy, gcc-internal-format
  #| msgid "%s of read-only location"
*************** msgid_plural "passing argument %i to %qs
*** 40844,40850 ****
  msgstr[0] "typeomtvingning fra '%T' til '%T' kasserer modifikationer pÃ¥ henvisningsmÃ¥lets type"
  msgstr[1] "typeomtvingning fra '%T' til '%T' kasserer modifikationer pÃ¥ henvisningsmÃ¥lets type"
  
! #: c-family/c-warn.cc:2934 c/c-typeck.cc:6465 cp/call.cc:6527
  #, fuzzy, gcc-internal-format
  #| msgid "the conditional began here"
  msgid "this condition has identical branches"
--- 40853,40859 ----
  msgstr[0] "typeomtvingning fra '%T' til '%T' kasserer modifikationer pÃ¥ henvisningsmÃ¥lets type"
  msgstr[1] "typeomtvingning fra '%T' til '%T' kasserer modifikationer pÃ¥ henvisningsmÃ¥lets type"
  
! #: c-family/c-warn.cc:2934 c/c-typeck.cc:6466 cp/call.cc:6527
  #, fuzzy, gcc-internal-format
  #| msgid "the conditional began here"
  msgid "this condition has identical branches"
*************** msgstr "ukendt tilvalg -fdisable"
*** 41226,41247 ****
  msgid "unrecognized operand to %%:%<asm_auto_mfpu%>"
  msgstr "ignorerer kommandolinjetilvalget '%s'"
  
! #: common/config/avr/avr-common.cc:94
  #, gcc-internal-format
  msgid "option %<-mdouble=64%> is only available if configured %<--with-double={64|64,32|32,64}%>"
  msgstr ""
  
! #: common/config/avr/avr-common.cc:102
  #, gcc-internal-format
  msgid "option %<-mdouble=32%> is only available if configured %<--with-double={32|32,64|64,32}%>"
  msgstr ""
  
! #: common/config/avr/avr-common.cc:118
  #, gcc-internal-format
  msgid "option %<-mlong-double=64%> is only available if configured %<--with-long-double={64|64,32|32,64}%>, or %<--with-long-double=double%> together with %<--with-double={64|64,32|32,64}%>"
  msgstr ""
  
! #: common/config/avr/avr-common.cc:127
  #, gcc-internal-format
  msgid "option %<-mlong-double=32%> is only available if configured %<--with-long-double={32|32,64|64,32}%>, or %<--with-long-double=double%> together with %<--with-double={32|32,64|64,32}%>"
  msgstr ""
--- 41235,41256 ----
  msgid "unrecognized operand to %%:%<asm_auto_mfpu%>"
  msgstr "ignorerer kommandolinjetilvalget '%s'"
  
! #: common/config/avr/avr-common.cc:95
  #, gcc-internal-format
  msgid "option %<-mdouble=64%> is only available if configured %<--with-double={64|64,32|32,64}%>"
  msgstr ""
  
! #: common/config/avr/avr-common.cc:103
  #, gcc-internal-format
  msgid "option %<-mdouble=32%> is only available if configured %<--with-double={32|32,64|64,32}%>"
  msgstr ""
  
! #: common/config/avr/avr-common.cc:119
  #, gcc-internal-format
  msgid "option %<-mlong-double=64%> is only available if configured %<--with-long-double={64|64,32|32,64}%>, or %<--with-long-double=double%> together with %<--with-double={64|64,32|32,64}%>"
  msgstr ""
  
! #: common/config/avr/avr-common.cc:128
  #, gcc-internal-format
  msgid "option %<-mlong-double=32%> is only available if configured %<--with-long-double={32|32,64|64,32}%>, or %<--with-long-double=double%> together with %<--with-double={32|32,64|64,32}%>"
  msgstr ""
*************** msgstr "-mcpu=%s er ikke gyldig"
*** 41263,41316 ****
  msgid "%<-mcpu=%s%> has invalid silicon revision"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:1994
  #, fuzzy, gcc-internal-format
  #| msgid "-malign-loops is obsolete, use -falign-loops"
  msgid "%<-malign-loops%> is obsolete, use %<-falign-loops%>"
  msgstr "-malign-loops er forÃ¦ldet, benyt -falign-loops"
  
! #: common/config/i386/i386-common.cc:1997
  #, fuzzy, gcc-internal-format
  #| msgid "-malign-loops=%d is not between 0 and %d"
  msgid "%<-malign-loops=%d%> is not between 0 and %d"
  msgstr "-malign-loops=%d er ikke mellem 0 og %d"
  
! #: common/config/i386/i386-common.cc:2004
  #, fuzzy, gcc-internal-format
  #| msgid "-malign-jumps is obsolete, use -falign-jumps"
  msgid "%<-malign-jumps%> is obsolete, use %<-falign-jumps%>"
  msgstr "-malign-jumps er forÃ¦ldet, benyt -falign-jumps"
  
! #: common/config/i386/i386-common.cc:2007
  #, fuzzy, gcc-internal-format
  #| msgid "-malign-jumps=%d is not between 1 and %d"
  msgid "%<-malign-jumps=%d%> is not between 0 and %d"
  msgstr "-malign-jumps=%d er ikke mellem 1 og %d"
  
! #: common/config/i386/i386-common.cc:2015
  #, fuzzy, gcc-internal-format
  #| msgid "-malign-functions is obsolete, use -falign-functions"
  msgid "%<-malign-functions%> is obsolete, use %<-falign-functions%>"
  msgstr "-malign-functions er forÃ¦ldet, benyt -falign-functions"
  
! #: common/config/i386/i386-common.cc:2018
  #, fuzzy, gcc-internal-format
  #| msgid "-malign-functions=%d is not between 1 and %d"
  msgid "%<-malign-functions=%d%> is not between 0 and %d"
  msgstr "-malign-functions=%d er ikke mellem 1 og %d"
  
! #: common/config/i386/i386-common.cc:2027
  #, fuzzy, gcc-internal-format
  #| msgid "-mbranch-cost=%d is not between 0 and 5"
  msgid "%<-mbranch-cost=%d%> is not between 0 and 5"
  msgstr "-mbranch-cost=%d er ikke mellem 0 og 5"
  
! #: common/config/i386/i386-common.cc:2091 common/config/s390/s390-common.cc:141
  #, gcc-internal-format
  msgid "%<-fsplit-stack%> currently only supported on GNU/Linux"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2101
  #, gcc-internal-format
  msgid "%<-fsplit-stack%> requires assembler support for CFI directives"
  msgstr ""
--- 41272,41325 ----
  msgid "%<-mcpu=%s%> has invalid silicon revision"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:1993
  #, fuzzy, gcc-internal-format
  #| msgid "-malign-loops is obsolete, use -falign-loops"
  msgid "%<-malign-loops%> is obsolete, use %<-falign-loops%>"
  msgstr "-malign-loops er forÃ¦ldet, benyt -falign-loops"
  
! #: common/config/i386/i386-common.cc:1996
  #, fuzzy, gcc-internal-format
  #| msgid "-malign-loops=%d is not between 0 and %d"
  msgid "%<-malign-loops=%d%> is not between 0 and %d"
  msgstr "-malign-loops=%d er ikke mellem 0 og %d"
  
! #: common/config/i386/i386-common.cc:2003
  #, fuzzy, gcc-internal-format
  #| msgid "-malign-jumps is obsolete, use -falign-jumps"
  msgid "%<-malign-jumps%> is obsolete, use %<-falign-jumps%>"
  msgstr "-malign-jumps er forÃ¦ldet, benyt -falign-jumps"
  
! #: common/config/i386/i386-common.cc:2006
  #, fuzzy, gcc-internal-format
  #| msgid "-malign-jumps=%d is not between 1 and %d"
  msgid "%<-malign-jumps=%d%> is not between 0 and %d"
  msgstr "-malign-jumps=%d er ikke mellem 1 og %d"
  
! #: common/config/i386/i386-common.cc:2014
  #, fuzzy, gcc-internal-format
  #| msgid "-malign-functions is obsolete, use -falign-functions"
  msgid "%<-malign-functions%> is obsolete, use %<-falign-functions%>"
  msgstr "-malign-functions er forÃ¦ldet, benyt -falign-functions"
  
! #: common/config/i386/i386-common.cc:2017
  #, fuzzy, gcc-internal-format
  #| msgid "-malign-functions=%d is not between 1 and %d"
  msgid "%<-malign-functions=%d%> is not between 0 and %d"
  msgstr "-malign-functions=%d er ikke mellem 1 og %d"
  
! #: common/config/i386/i386-common.cc:2026
  #, fuzzy, gcc-internal-format
  #| msgid "-mbranch-cost=%d is not between 0 and 5"
  msgid "%<-mbranch-cost=%d%> is not between 0 and 5"
  msgstr "-mbranch-cost=%d er ikke mellem 0 og 5"
  
! #: common/config/i386/i386-common.cc:2090 common/config/s390/s390-common.cc:141
  #, gcc-internal-format
  msgid "%<-fsplit-stack%> currently only supported on GNU/Linux"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2100
  #, gcc-internal-format
  msgid "%<-fsplit-stack%> requires assembler support for CFI directives"
  msgstr ""
*************** msgstr ""
*** 41578,41642 ****
  msgid "unknown value %qs of %<-mmacosx-version-min%>"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -march="
  
! #: config/darwin-driver.cc:147
  #, gcc-internal-format
  msgid "%<sysctl%> for %<kern.osversion%> failed: %m"
  msgstr ""
  
! #: config/darwin-driver.cc:186
  #, fuzzy, gcc-internal-format
  #| msgid "collect2 version %s\n"
  msgid "could not understand %<kern.osversion%> %q.*s"
  msgstr "collect2-version %s\n"
  
! #: config/darwin-driver.cc:226
  #, fuzzy, gcc-internal-format
  #| msgid "collect2 version %s\n"
  msgid "could not understand version %qs"
  msgstr "collect2-version %s\n"
  
! #: config/darwin-driver.cc:300
  #, fuzzy, gcc-internal-format
  #| msgid "this target does not support %qs"
  msgid "this compiler does not support %qs"
  msgstr "denne mÃ¥larkitektur understÃ¸tter ikke %qs"
  
! #: config/darwin-driver.cc:326
  #, fuzzy, gcc-internal-format
  msgid "%qs is not valid for %<-mmacosx-version-min%>"
  msgstr "%s understÃ¸tter ikke %s"
  
! #: config/darwin-driver.cc:377
  #, fuzzy, gcc-internal-format
  #| msgid "this target does not support %qs"
  msgid "this compiler does not support PowerPC (%<-arch%> option ignored)"
  msgstr "denne mÃ¥larkitektur understÃ¸tter ikke %qs"
  
! #: config/darwin-driver.cc:384
  #, fuzzy, gcc-internal-format
  #| msgid "-mcpu=%s conflicts with -march=%s"
  msgid "%qs conflicts with %<-arch i386%> (%qs ignored)"
  msgstr "-mcpu=%s er i konflikt med tilvalget -march=%s"
  
! #: config/darwin-driver.cc:393
  #, fuzzy, gcc-internal-format
  #| msgid "-mcpu=%s conflicts with -march=%s"
  msgid "%<-m32%> conflicts with %<-arch x86_64%> (%<-m32%> ignored)"
  msgstr "-mcpu=%s er i konflikt med tilvalget -march=%s"
  
! #: config/darwin-driver.cc:400
  #, fuzzy, gcc-internal-format
  #| msgid "this target does not support %qs"
  msgid "this compiler does not support x86 (%<-arch%> option ignored)"
  msgstr "denne mÃ¥larkitektur understÃ¸tter ikke %qs"
  
! #: config/darwin-driver.cc:407
  #, fuzzy, gcc-internal-format
  #| msgid "-mcpu=%s conflicts with -march=%s"
  msgid "%qs conflicts with %<-arch ppc%> (%qs ignored)"
  msgstr "-mcpu=%s er i konflikt med tilvalget -march=%s"
  
! #: config/darwin-driver.cc:416
  #, fuzzy, gcc-internal-format
  #| msgid "-mcpu=%s conflicts with -march=%s"
  msgid "%<-m32%> conflicts with %<-arch ppc64%> (%<-m32%> ignored)"
--- 41587,41651 ----
  msgid "unknown value %qs of %<-mmacosx-version-min%>"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -march="
  
! #: config/darwin-driver.cc:148
  #, gcc-internal-format
  msgid "%<sysctl%> for %<kern.osversion%> failed: %m"
  msgstr ""
  
! #: config/darwin-driver.cc:188
  #, fuzzy, gcc-internal-format
  #| msgid "collect2 version %s\n"
  msgid "could not understand %<kern.osversion%> %q.*s"
  msgstr "collect2-version %s\n"
  
! #: config/darwin-driver.cc:228
  #, fuzzy, gcc-internal-format
  #| msgid "collect2 version %s\n"
  msgid "could not understand version %qs"
  msgstr "collect2-version %s\n"
  
! #: config/darwin-driver.cc:302
  #, fuzzy, gcc-internal-format
  #| msgid "this target does not support %qs"
  msgid "this compiler does not support %qs"
  msgstr "denne mÃ¥larkitektur understÃ¸tter ikke %qs"
  
! #: config/darwin-driver.cc:328
  #, fuzzy, gcc-internal-format
  msgid "%qs is not valid for %<-mmacosx-version-min%>"
  msgstr "%s understÃ¸tter ikke %s"
  
! #: config/darwin-driver.cc:379
  #, fuzzy, gcc-internal-format
  #| msgid "this target does not support %qs"
  msgid "this compiler does not support PowerPC (%<-arch%> option ignored)"
  msgstr "denne mÃ¥larkitektur understÃ¸tter ikke %qs"
  
! #: config/darwin-driver.cc:386
  #, fuzzy, gcc-internal-format
  #| msgid "-mcpu=%s conflicts with -march=%s"
  msgid "%qs conflicts with %<-arch i386%> (%qs ignored)"
  msgstr "-mcpu=%s er i konflikt med tilvalget -march=%s"
  
! #: config/darwin-driver.cc:395
  #, fuzzy, gcc-internal-format
  #| msgid "-mcpu=%s conflicts with -march=%s"
  msgid "%<-m32%> conflicts with %<-arch x86_64%> (%<-m32%> ignored)"
  msgstr "-mcpu=%s er i konflikt med tilvalget -march=%s"
  
! #: config/darwin-driver.cc:402
  #, fuzzy, gcc-internal-format
  #| msgid "this target does not support %qs"
  msgid "this compiler does not support x86 (%<-arch%> option ignored)"
  msgstr "denne mÃ¥larkitektur understÃ¸tter ikke %qs"
  
! #: config/darwin-driver.cc:409
  #, fuzzy, gcc-internal-format
  #| msgid "-mcpu=%s conflicts with -march=%s"
  msgid "%qs conflicts with %<-arch ppc%> (%qs ignored)"
  msgstr "-mcpu=%s er i konflikt med tilvalget -march=%s"
  
! #: config/darwin-driver.cc:418
  #, fuzzy, gcc-internal-format
  #| msgid "-mcpu=%s conflicts with -march=%s"
  msgid "%<-m32%> conflicts with %<-arch ppc64%> (%<-m32%> ignored)"
*************** msgstr "-g er kun understÃ¸ttet ved brug
*** 41824,41831 ****
  msgid "ACLE function %qD requires ISA extension %qs"
  msgstr "et '-ifile'-tilvalg krÃ¦ver et '-map'-tilvalg"
  
! #: config/aarch64/aarch64-builtins.cc:2540 config/aarch64/aarch64.cc:11462
! #: config/aarch64/aarch64.cc:18764 config/aarch64/aarch64.cc:19379
  #, gcc-internal-format
  msgid "you can enable %qs using the command-line option %<-march%>, or by using the %<target%> attribute or pragma"
  msgstr ""
--- 41833,41840 ----
  msgid "ACLE function %qD requires ISA extension %qs"
  msgstr "et '-ifile'-tilvalg krÃ¦ver et '-map'-tilvalg"
  
! #: config/aarch64/aarch64-builtins.cc:2540 config/aarch64/aarch64.cc:11477
! #: config/aarch64/aarch64.cc:18779 config/aarch64/aarch64.cc:19394
  #, gcc-internal-format
  msgid "you can enable %qs using the command-line option %<-march%>, or by using the %<target%> attribute or pragma"
  msgstr ""
*************** msgstr "instansvariablen '%s' er erklÃ¦r
*** 42443,42787 ****
  msgid "SVE type %qT not allowed in %<target%> device clauses"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:649
  #, fuzzy, gcc-internal-format
  #| msgid "third arg to `__builtin_prefetch' must be a constant"
  msgid "the arguments to %qE must be constant strings"
  msgstr "en tredje parameter til '__builtin_prefetch' skal vÃ¦re en konstant"
  
! #: config/aarch64/aarch64.cc:657
  #, fuzzy, gcc-internal-format
  msgid "unrecognized state string %qs"
  msgstr "ukendt registernavn '%s'"
  
! #: config/aarch64/aarch64.cc:741
  #, fuzzy, gcc-internal-format
  #| msgid "new cannot be applied to a function type"
  msgid "the %qE attribute cannot be applied to an SVE function type"
  msgstr "new kan ikke bruges pÃ¥ en funktionstype"
  
! #: config/aarch64/aarch64.cc:768
  #, gcc-internal-format
  msgid "cannot create a new %qs scope since %qs is shared with callers"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:784
  #, fuzzy, gcc-internal-format
  msgid "%qE attribute applies only to function definitions"
  msgstr "'%s'-egenskaben kan kun anvendes sammen med funktioner"
  
! #: config/aarch64/aarch64.cc:830
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "inconsistent attributes for state %qs"
  msgstr "ukendt registernavn: %s"
  
! #: config/aarch64/aarch64.cc:1327
  #, fuzzy, gcc-internal-format
  #| msgid "%s from incompatible pointer type"
  msgid "%qs is incompatible with the use of floating-point types"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: config/aarch64/aarch64.cc:1330
  #, fuzzy, gcc-internal-format
  #| msgid "%s from incompatible pointer type"
  msgid "%qs is incompatible with the use of vector types"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: config/aarch64/aarch64.cc:1334
  #, fuzzy, gcc-internal-format
  #| msgid "%s from incompatible pointer type"
  msgid "%qs feature modifier is incompatible with the use of floating-point types"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: config/aarch64/aarch64.cc:1337
  #, fuzzy, gcc-internal-format
  #| msgid "%s from incompatible pointer type"
  msgid "%qs feature modifier is incompatible with the use of vector types"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: config/aarch64/aarch64.cc:1353
  #, fuzzy, gcc-internal-format
  #| msgid "Do not use the Xtensa NSA option"
  msgid "this operation requires the SVE ISA extension"
  msgstr "Benyt ikke Xtensa-NSA-indstillingen"
  
! #: config/aarch64/aarch64.cc:1354
  #, gcc-internal-format
  msgid "you can enable SVE using the command-line option %<-march%>, or by using the %<target%> attribute or pragma"
  msgstr ""
  
  #. We can't gracefully recover at this point, so make this a
  #. fatal error.
! #: config/aarch64/aarch64.cc:6685
  #, fuzzy, gcc-internal-format
  #| msgid "use of class template `%T' as expression"
  msgid "arguments of type %qT require the SVE ISA extension"
  msgstr "brug af klasseskabelonen '%T' som udtryk"
  
! #: config/aarch64/aarch64.cc:7162
  #, fuzzy, gcc-internal-format
  #| msgid "AltiVec argument passed to unprototyped function"
  msgid "SVE type %qT cannot be passed to an unprototyped function"
  msgstr "AltiVec-parameter sendt til funktion uden prototype"
  
! #: config/aarch64/aarch64.cc:7303 config/aarch64/aarch64.cc:7382
! #: config/aarch64/aarch64.cc:21640
  #, gcc-internal-format
  msgid "parameter passing for argument of type %qT changed in GCC 13.1"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7310 config/aarch64/aarch64.cc:7389
! #: config/aarch64/aarch64.cc:21647
  #, gcc-internal-format
  msgid "parameter passing for argument of type %qT changed in GCC 14.1"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7321 config/aarch64/aarch64.cc:7399
! #: config/aarch64/aarch64.cc:21655 config/arm/arm.cc:7338
  #: config/arm/arm.cc:7368 config/arm/arm.cc:29593
  #, gcc-internal-format
  msgid "parameter passing for argument of type %qT changed in GCC 9.1"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7526
  #, fuzzy, gcc-internal-format
  #| msgid "Do not use the Xtensa NSA option"
  msgid "%qE requires the SVE ISA extension"
  msgstr "Benyt ikke Xtensa-NSA-indstillingen"
  
! #: config/aarch64/aarch64.cc:7529
  #, fuzzy, gcc-internal-format
  #| msgid "a -ifile option requires a -map option"
  msgid "calls to functions of type %qT require the SVE ISA extension"
  msgstr "et '-ifile'-tilvalg krÃ¦ver et '-map'-tilvalg"
  
! #: config/aarch64/aarch64.cc:7717
  #, gcc-internal-format
  msgid "stack probes for SVE frames"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11460
  #, fuzzy, gcc-internal-format
  #| msgid "a -ifile option requires a -map option"
  msgid "calling a streaming function requires the ISA extension %qs"
  msgstr "et '-ifile'-tilvalg krÃ¦ver et '-map'-tilvalg"
  
! #: config/aarch64/aarch64.cc:11469 config/aarch64/aarch64.cc:11473
  #, gcc-internal-format
  msgid "call to a function that shares %qs state from a function that has no %qs state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11476
  #, gcc-internal-format
  msgid "call to a function that shares SME state from a function that has no SME state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11534
  #, gcc-internal-format
  msgid "call to a function that shares state other than %qs from a function that has %qs state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11536
  #, gcc-internal-format
  msgid "use %<__arm_preserves(\"za\")%> if the callee preserves ZA"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18382
  #, gcc-internal-format
  msgid "unknown flag passed in %<-moverride=%s%> (%s)"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18426
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute ignored"
  msgid "%qs string ill-formed"
  msgstr "egenskaben '%s' ignoreret"
  
! #: config/aarch64/aarch64.cc:18482
  #, fuzzy, gcc-internal-format
  #| msgid "invalid option %s"
  msgid "invalid format for %<sve_width%>"
  msgstr "ugyldigt tilvalg %s"
  
! #: config/aarch64/aarch64.cc:18494
  #, fuzzy, gcc-internal-format
  #| msgid "invalid %h value"
  msgid "invalid %<sve_width%> value: %d"
  msgstr "ugyldig %h-vÃ¦rdi"
  
! #: config/aarch64/aarch64.cc:18514
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Invalid range %s in option %s"
  msgid "tuning string missing in option (%s)"
  msgstr "ugyldigt interval %s i tilvalg %s"
  
! #: config/aarch64/aarch64.cc:18532
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "unknown spec function `%s'"
  msgid "unknown tuning option (%s)"
  msgstr "ukendt specifikationsfunktion '%s'"
  
! #: config/aarch64/aarch64.cc:18719 config/arm/arm.cc:3223
! #: config/riscv/riscv.cc:10776
  #, gcc-internal-format
  msgid "incompatible options %<-mstack-protector-guard=global%> and %<-mstack-protector-guard-offset=%s%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18728 config/riscv/riscv.cc:10785
  #, gcc-internal-format
  msgid "both %<-mstack-protector-guard-offset%> and %<-mstack-protector-guard-reg%> must be used with %<-mstack-protector-guard=sysreg%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18736
  #, fuzzy, gcc-internal-format
  #| msgid "Specify the register allocation order"
  msgid "specify a system register with a small string length"
  msgstr "Angiv registerallokeringsordnen"
  
! #: config/aarch64/aarch64.cc:18746 config/arm/arm.cc:3235
! #: config/riscv/riscv.cc:10814 config/rs6000/rs6000.cc:4518
  #, fuzzy, gcc-internal-format
  msgid "%qs is not a valid offset in %qs"
  msgstr "%s understÃ¸tter ikke %s"
  
! #: config/aarch64/aarch64.cc:18753
  #, gcc-internal-format
  msgid "%<-fsanitize=shadow-call-stack%> requires %<-ffixed-x18%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18760
  #, fuzzy, gcc-internal-format
  #| msgid "a -ifile option requires a -map option"
  msgid "streaming functions require the ISA extension %qs"
  msgstr "et '-ifile'-tilvalg krÃ¦ver et '-map'-tilvalg"
  
! #: config/aarch64/aarch64.cc:18762
  #, gcc-internal-format
  msgid "functions with SME state require the ISA extension %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18858
  #, gcc-internal-format
  msgid "only values 12 (4 KB) and 16 (64 KB) are supported for guard size.  Given value %d (%llu KB) is out of range"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18874 config/riscv/riscv.cc:10834
  #, gcc-internal-format
  msgid "stack clash guard size %<%d%> must be equal to probing interval %<%d%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18902
  #, fuzzy, gcc-internal-format
  #| msgid "no data type for mode `%s'"
  msgid "no support for %qs without %qs"
  msgstr "ingen datatype til tilstanden '%s'"
  
! #: config/aarch64/aarch64.cc:18955
  #, fuzzy, gcc-internal-format
  #| msgid "invalid arg to `__builtin_frame_address'"
  msgid "invalid argument given to %<-mharden-sls=%>"
  msgstr "ugyldig parameter til '__builtin_frame_address'"
  
! #: config/aarch64/aarch64.cc:18966
  #, gcc-internal-format
  msgid "%qs must be by itself for %<-mharden-sls=%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18971
  #, fuzzy, gcc-internal-format
  #| msgid "invalid type argument"
  msgid "invalid argument %qs for %<-mharden-sls=%>"
  msgstr "ugyldig typeparameter"
  
! #: config/aarch64/aarch64.cc:19127
  #, fuzzy, gcc-internal-format
  #| msgid "switch -mcpu=%s conflicts with -march= switch"
  msgid "switch %<-mcpu=%s%> conflicts with %<-march=%s%> switch and resulted in options %qs being added"
  msgstr "tilvalget -mcpu=%s er i konflikt med tilvalget -march="
  
! #: config/aarch64/aarch64.cc:19194
  #, fuzzy, gcc-internal-format
  msgid "assembler does not support %<-mabi=ilp32%>"
  msgstr "%s understÃ¸tter ikke %s"
  
! #: config/aarch64/aarch64.cc:19197
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is deprecated"
  msgid "%<-mabi=ilp32%> is deprecated"
  msgstr "'%s' er forÃ¦ldet"
  
! #: config/aarch64/aarch64.cc:19203
  #, gcc-internal-format
  msgid "return address signing is only supported for %<-mabi=lp64%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19276
  #, gcc-internal-format
  msgid "code model %qs with %<-f%s%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19279
  #, fuzzy, gcc-internal-format
  #| msgid "code model %qs not supported in x32 mode"
  msgid "code model %qs not supported in ilp32 mode"
  msgstr "kodemodellen %qs er ikke understÃ¸ttet i x32-tilstand"
  
! #: config/aarch64/aarch64.cc:19377
  #, fuzzy, gcc-internal-format
  #| msgid "a -ifile option requires a -map option"
  msgid "functions with %qs state require the ISA extension %qs"
  msgstr "et '-ifile'-tilvalg krÃ¦ver et '-map'-tilvalg"
  
! #: config/aarch64/aarch64.cc:19482
  #, fuzzy, gcc-internal-format
  #| msgid "bad value (%s) for -march= switch"
  msgid "missing name in %<target(\"arch=\")%> pragma or attribute"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -march="
  
! #: config/aarch64/aarch64.cc:19485
  #, fuzzy, gcc-internal-format
  #| msgid "bad value (%s) for -march= switch"
  msgid "invalid name %qs in %<target(\"arch=\")%> pragma or attribute"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -march="
  
! #: config/aarch64/aarch64.cc:19489
  #, fuzzy, gcc-internal-format
  #| msgid "bad value (%s) for -march= switch"
  msgid "invalid feature modifier %s of value %qs in %<target()%> pragma or attribute"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -march="
  
! #: config/aarch64/aarch64.cc:19524
  #, fuzzy, gcc-internal-format
  #| msgid "bad value (%s) for -march= switch"
  msgid "missing name in %<target(\"cpu=\")%> pragma or attribute"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -march="
  
! #: config/aarch64/aarch64.cc:19527
  #, fuzzy, gcc-internal-format
  #| msgid "bad value (%s) for -march= switch"
  msgid "invalid name %qs in %<target(\"cpu=\")%> pragma or attribute"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -march="
  
! #: config/aarch64/aarch64.cc:19531 config/aarch64/aarch64.cc:19615
  #, fuzzy, gcc-internal-format
  #| msgid "bad value (%s) for -march= switch"
  msgid "invalid feature modifier %qs of value %qs in %<target()%> pragma or attribute"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -march="
  
! #: config/aarch64/aarch64.cc:19570
  #, fuzzy, gcc-internal-format
  #| msgid "bad value (%s) for -mtune= switch"
  msgid "invalid name %qs in %<target(\"tune=\")%> pragma or attribute"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -mcpu="
  
! #: config/aarch64/aarch64.cc:19611
  #, fuzzy, gcc-internal-format
  #| msgid "bad value (%s) for -march= switch"
  msgid "missing value in %<target()%> pragma or attribute"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -march="
  
! #: config/aarch64/aarch64.cc:19669 config/aarch64/aarch64.cc:19846
  #: config/loongarch/loongarch-target-attr.cc:144
  #: config/loongarch/loongarch-target-attr.cc:309
  #, fuzzy, gcc-internal-format
--- 42452,42796 ----
  msgid "SVE type %qT not allowed in %<target%> device clauses"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:650
  #, fuzzy, gcc-internal-format
  #| msgid "third arg to `__builtin_prefetch' must be a constant"
  msgid "the arguments to %qE must be constant strings"
  msgstr "en tredje parameter til '__builtin_prefetch' skal vÃ¦re en konstant"
  
! #: config/aarch64/aarch64.cc:658
  #, fuzzy, gcc-internal-format
  msgid "unrecognized state string %qs"
  msgstr "ukendt registernavn '%s'"
  
! #: config/aarch64/aarch64.cc:742
  #, fuzzy, gcc-internal-format
  #| msgid "new cannot be applied to a function type"
  msgid "the %qE attribute cannot be applied to an SVE function type"
  msgstr "new kan ikke bruges pÃ¥ en funktionstype"
  
! #: config/aarch64/aarch64.cc:769
  #, gcc-internal-format
  msgid "cannot create a new %qs scope since %qs is shared with callers"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:785
  #, fuzzy, gcc-internal-format
  msgid "%qE attribute applies only to function definitions"
  msgstr "'%s'-egenskaben kan kun anvendes sammen med funktioner"
  
! #: config/aarch64/aarch64.cc:831
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "inconsistent attributes for state %qs"
  msgstr "ukendt registernavn: %s"
  
! #: config/aarch64/aarch64.cc:1328
  #, fuzzy, gcc-internal-format
  #| msgid "%s from incompatible pointer type"
  msgid "%qs is incompatible with the use of floating-point types"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: config/aarch64/aarch64.cc:1331
  #, fuzzy, gcc-internal-format
  #| msgid "%s from incompatible pointer type"
  msgid "%qs is incompatible with the use of vector types"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: config/aarch64/aarch64.cc:1335
  #, fuzzy, gcc-internal-format
  #| msgid "%s from incompatible pointer type"
  msgid "%qs feature modifier is incompatible with the use of floating-point types"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: config/aarch64/aarch64.cc:1338
  #, fuzzy, gcc-internal-format
  #| msgid "%s from incompatible pointer type"
  msgid "%qs feature modifier is incompatible with the use of vector types"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: config/aarch64/aarch64.cc:1354
  #, fuzzy, gcc-internal-format
  #| msgid "Do not use the Xtensa NSA option"
  msgid "this operation requires the SVE ISA extension"
  msgstr "Benyt ikke Xtensa-NSA-indstillingen"
  
! #: config/aarch64/aarch64.cc:1355
  #, gcc-internal-format
  msgid "you can enable SVE using the command-line option %<-march%>, or by using the %<target%> attribute or pragma"
  msgstr ""
  
  #. We can't gracefully recover at this point, so make this a
  #. fatal error.
! #: config/aarch64/aarch64.cc:6686
  #, fuzzy, gcc-internal-format
  #| msgid "use of class template `%T' as expression"
  msgid "arguments of type %qT require the SVE ISA extension"
  msgstr "brug af klasseskabelonen '%T' som udtryk"
  
! #: config/aarch64/aarch64.cc:7163
  #, fuzzy, gcc-internal-format
  #| msgid "AltiVec argument passed to unprototyped function"
  msgid "SVE type %qT cannot be passed to an unprototyped function"
  msgstr "AltiVec-parameter sendt til funktion uden prototype"
  
! #: config/aarch64/aarch64.cc:7304 config/aarch64/aarch64.cc:7383
! #: config/aarch64/aarch64.cc:21655
  #, gcc-internal-format
  msgid "parameter passing for argument of type %qT changed in GCC 13.1"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7311 config/aarch64/aarch64.cc:7390
! #: config/aarch64/aarch64.cc:21662
  #, gcc-internal-format
  msgid "parameter passing for argument of type %qT changed in GCC 14.1"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7322 config/aarch64/aarch64.cc:7400
! #: config/aarch64/aarch64.cc:21670 config/arm/arm.cc:7338
  #: config/arm/arm.cc:7368 config/arm/arm.cc:29593
  #, gcc-internal-format
  msgid "parameter passing for argument of type %qT changed in GCC 9.1"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7527
  #, fuzzy, gcc-internal-format
  #| msgid "Do not use the Xtensa NSA option"
  msgid "%qE requires the SVE ISA extension"
  msgstr "Benyt ikke Xtensa-NSA-indstillingen"
  
! #: config/aarch64/aarch64.cc:7530
  #, fuzzy, gcc-internal-format
  #| msgid "a -ifile option requires a -map option"
  msgid "calls to functions of type %qT require the SVE ISA extension"
  msgstr "et '-ifile'-tilvalg krÃ¦ver et '-map'-tilvalg"
  
! #: config/aarch64/aarch64.cc:7718
  #, gcc-internal-format
  msgid "stack probes for SVE frames"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11475
  #, fuzzy, gcc-internal-format
  #| msgid "a -ifile option requires a -map option"
  msgid "calling a streaming function requires the ISA extension %qs"
  msgstr "et '-ifile'-tilvalg krÃ¦ver et '-map'-tilvalg"
  
! #: config/aarch64/aarch64.cc:11484 config/aarch64/aarch64.cc:11488
  #, gcc-internal-format
  msgid "call to a function that shares %qs state from a function that has no %qs state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11491
  #, gcc-internal-format
  msgid "call to a function that shares SME state from a function that has no SME state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11549
  #, gcc-internal-format
  msgid "call to a function that shares state other than %qs from a function that has %qs state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11551
  #, gcc-internal-format
  msgid "use %<__arm_preserves(\"za\")%> if the callee preserves ZA"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18397
  #, gcc-internal-format
  msgid "unknown flag passed in %<-moverride=%s%> (%s)"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18441
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute ignored"
  msgid "%qs string ill-formed"
  msgstr "egenskaben '%s' ignoreret"
  
! #: config/aarch64/aarch64.cc:18497
  #, fuzzy, gcc-internal-format
  #| msgid "invalid option %s"
  msgid "invalid format for %<sve_width%>"
  msgstr "ugyldigt tilvalg %s"
  
! #: config/aarch64/aarch64.cc:18509
  #, fuzzy, gcc-internal-format
  #| msgid "invalid %h value"
  msgid "invalid %<sve_width%> value: %d"
  msgstr "ugyldig %h-vÃ¦rdi"
  
! #: config/aarch64/aarch64.cc:18529
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Invalid range %s in option %s"
  msgid "tuning string missing in option (%s)"
  msgstr "ugyldigt interval %s i tilvalg %s"
  
! #: config/aarch64/aarch64.cc:18547
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "unknown spec function `%s'"
  msgid "unknown tuning option (%s)"
  msgstr "ukendt specifikationsfunktion '%s'"
  
! #: config/aarch64/aarch64.cc:18734 config/arm/arm.cc:3223
! #: config/riscv/riscv.cc:10785
  #, gcc-internal-format
  msgid "incompatible options %<-mstack-protector-guard=global%> and %<-mstack-protector-guard-offset=%s%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18743 config/riscv/riscv.cc:10794
  #, gcc-internal-format
  msgid "both %<-mstack-protector-guard-offset%> and %<-mstack-protector-guard-reg%> must be used with %<-mstack-protector-guard=sysreg%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18751
  #, fuzzy, gcc-internal-format
  #| msgid "Specify the register allocation order"
  msgid "specify a system register with a small string length"
  msgstr "Angiv registerallokeringsordnen"
  
! #: config/aarch64/aarch64.cc:18761 config/arm/arm.cc:3235
! #: config/riscv/riscv.cc:10823 config/rs6000/rs6000.cc:4518
  #, fuzzy, gcc-internal-format
  msgid "%qs is not a valid offset in %qs"
  msgstr "%s understÃ¸tter ikke %s"
  
! #: config/aarch64/aarch64.cc:18768
  #, gcc-internal-format
  msgid "%<-fsanitize=shadow-call-stack%> requires %<-ffixed-x18%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18775
  #, fuzzy, gcc-internal-format
  #| msgid "a -ifile option requires a -map option"
  msgid "streaming functions require the ISA extension %qs"
  msgstr "et '-ifile'-tilvalg krÃ¦ver et '-map'-tilvalg"
  
! #: config/aarch64/aarch64.cc:18777
  #, gcc-internal-format
  msgid "functions with SME state require the ISA extension %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18873
  #, gcc-internal-format
  msgid "only values 12 (4 KB) and 16 (64 KB) are supported for guard size.  Given value %d (%llu KB) is out of range"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18889 config/riscv/riscv.cc:10843
  #, gcc-internal-format
  msgid "stack clash guard size %<%d%> must be equal to probing interval %<%d%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18917
  #, fuzzy, gcc-internal-format
  #| msgid "no data type for mode `%s'"
  msgid "no support for %qs without %qs"
  msgstr "ingen datatype til tilstanden '%s'"
  
! #: config/aarch64/aarch64.cc:18970
  #, fuzzy, gcc-internal-format
  #| msgid "invalid arg to `__builtin_frame_address'"
  msgid "invalid argument given to %<-mharden-sls=%>"
  msgstr "ugyldig parameter til '__builtin_frame_address'"
  
! #: config/aarch64/aarch64.cc:18981
  #, gcc-internal-format
  msgid "%qs must be by itself for %<-mharden-sls=%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18986
  #, fuzzy, gcc-internal-format
  #| msgid "invalid type argument"
  msgid "invalid argument %qs for %<-mharden-sls=%>"
  msgstr "ugyldig typeparameter"
  
! #: config/aarch64/aarch64.cc:19142
  #, fuzzy, gcc-internal-format
  #| msgid "switch -mcpu=%s conflicts with -march= switch"
  msgid "switch %<-mcpu=%s%> conflicts with %<-march=%s%> switch and resulted in options %qs being added"
  msgstr "tilvalget -mcpu=%s er i konflikt med tilvalget -march="
  
! #: config/aarch64/aarch64.cc:19209
  #, fuzzy, gcc-internal-format
  msgid "assembler does not support %<-mabi=ilp32%>"
  msgstr "%s understÃ¸tter ikke %s"
  
! #: config/aarch64/aarch64.cc:19212
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is deprecated"
  msgid "%<-mabi=ilp32%> is deprecated"
  msgstr "'%s' er forÃ¦ldet"
  
! #: config/aarch64/aarch64.cc:19218
  #, gcc-internal-format
  msgid "return address signing is only supported for %<-mabi=lp64%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19291
  #, gcc-internal-format
  msgid "code model %qs with %<-f%s%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19294
  #, fuzzy, gcc-internal-format
  #| msgid "code model %qs not supported in x32 mode"
  msgid "code model %qs not supported in ilp32 mode"
  msgstr "kodemodellen %qs er ikke understÃ¸ttet i x32-tilstand"
  
! #: config/aarch64/aarch64.cc:19392
  #, fuzzy, gcc-internal-format
  #| msgid "a -ifile option requires a -map option"
  msgid "functions with %qs state require the ISA extension %qs"
  msgstr "et '-ifile'-tilvalg krÃ¦ver et '-map'-tilvalg"
  
! #: config/aarch64/aarch64.cc:19497
  #, fuzzy, gcc-internal-format
  #| msgid "bad value (%s) for -march= switch"
  msgid "missing name in %<target(\"arch=\")%> pragma or attribute"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -march="
  
! #: config/aarch64/aarch64.cc:19500
  #, fuzzy, gcc-internal-format
  #| msgid "bad value (%s) for -march= switch"
  msgid "invalid name %qs in %<target(\"arch=\")%> pragma or attribute"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -march="
  
! #: config/aarch64/aarch64.cc:19504
  #, fuzzy, gcc-internal-format
  #| msgid "bad value (%s) for -march= switch"
  msgid "invalid feature modifier %s of value %qs in %<target()%> pragma or attribute"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -march="
  
! #: config/aarch64/aarch64.cc:19539
  #, fuzzy, gcc-internal-format
  #| msgid "bad value (%s) for -march= switch"
  msgid "missing name in %<target(\"cpu=\")%> pragma or attribute"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -march="
  
! #: config/aarch64/aarch64.cc:19542
  #, fuzzy, gcc-internal-format
  #| msgid "bad value (%s) for -march= switch"
  msgid "invalid name %qs in %<target(\"cpu=\")%> pragma or attribute"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -march="
  
! #: config/aarch64/aarch64.cc:19546 config/aarch64/aarch64.cc:19630
  #, fuzzy, gcc-internal-format
  #| msgid "bad value (%s) for -march= switch"
  msgid "invalid feature modifier %qs of value %qs in %<target()%> pragma or attribute"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -march="
  
! #: config/aarch64/aarch64.cc:19585
  #, fuzzy, gcc-internal-format
  #| msgid "bad value (%s) for -mtune= switch"
  msgid "invalid name %qs in %<target(\"tune=\")%> pragma or attribute"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -mcpu="
  
! #: config/aarch64/aarch64.cc:19626
  #, fuzzy, gcc-internal-format
  #| msgid "bad value (%s) for -march= switch"
  msgid "missing value in %<target()%> pragma or attribute"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -march="
  
! #: config/aarch64/aarch64.cc:19684 config/aarch64/aarch64.cc:19861
  #: config/loongarch/loongarch-target-attr.cc:144
  #: config/loongarch/loongarch-target-attr.cc:309
  #, fuzzy, gcc-internal-format
*************** msgstr "ugyldig vÃ¦rdi (%s) til tilvalge
*** 42789,43007 ****
  msgid "malformed %<target()%> pragma or attribute"
  msgstr "forkert udformet specifikationsfunktionsnavn"
  
! #: config/aarch64/aarch64.cc:19715
  #, fuzzy, gcc-internal-format
  #| msgid "%s only accepts 1 argument"
  msgid "pragma or attribute %<target(\"%s\")%> does not accept an argument"
  msgstr "%s accepterer kun 1 parameter"
  
! #: config/aarch64/aarch64.cc:19723 config/i386/i386-options.cc:1315
  #: config/loongarch/loongarch-target-attr.cc:181
  #, fuzzy, gcc-internal-format
  #| msgid "target system does not support the %qs debug format"
  msgid "pragma or attribute %<target(\"%s\")%> does not allow a negated form"
  msgstr "mÃ¥larkitektursystem understÃ¸tter ikke %qs-fejlsÃ¸gningsformatet"
  
! #: config/aarch64/aarch64.cc:19777
  #: config/loongarch/loongarch-target-attr.cc:221
  #, fuzzy, gcc-internal-format
  #| msgid "\"%s\" is not defined"
  msgid "pragma or attribute %<target(\"%s=%s\")%> is not valid"
  msgstr "\"%s\" er ikke defineret"
  
! #: config/aarch64/aarch64.cc:19834 config/arm/arm.cc:33836
  #: config/loongarch/loongarch-target-attr.cc:297
  #: config/riscv/riscv-target-attr.cc:431 config/rs6000/rs6000.cc:24714
! #: config/s390/s390.cc:16661
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute argument not a string constant"
  msgid "attribute %<target%> argument not a string"
  msgstr "parameteren til egenskaben '%s' er ikke en strengkonstant"
  
! #: config/aarch64/aarch64.cc:19871
  #, gcc-internal-format
  msgid "arch extension %qs should be prefixed by %<+%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19874
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute argument not a string constant"
  msgid "pragma or attribute %<target(\"%s\")%> is not valid"
  msgstr "parameteren til egenskaben '%s' er ikke en strengkonstant"
  
! #: config/aarch64/aarch64.cc:19883
  #: config/loongarch/loongarch-target-attr.cc:332
  #, fuzzy, gcc-internal-format
  #| msgid "bad value (%s) for -march= switch"
  msgid "malformed %<target(\"%s\")%> pragma or attribute"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -march="
  
! #: config/aarch64/aarch64.cc:20101
  #, gcc-internal-format
  msgid "Function Multi Versioning support is experimental, and the behavior is likely to change"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20110 config/riscv/riscv-target-attr.cc:497
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute argument not a string constant"
  msgid "attribute %<target_version%> has multiple values"
  msgstr "parameteren til egenskaben '%s' er ikke en strengkonstant"
  
! #: config/aarch64/aarch64.cc:20118 config/riscv/riscv-target-attr.cc:505
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute argument not a string constant"
  msgid "attribute %<target_version%> argument not a string"
  msgstr "parameteren til egenskaben '%s' er ikke en strengkonstant"
  
! #: config/aarch64/aarch64.cc:20140
  #, fuzzy, gcc-internal-format
  #| msgid "bad value (%s) for -march= switch"
  msgid "missing value in %<target_version%> attribute"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -march="
  
! #: config/aarch64/aarch64.cc:20144
  #, fuzzy, gcc-internal-format
  #| msgid "bad value (%s) for -march= switch"
  msgid "invalid feature modifier %qs of value %qs in %<target_version%> attribute"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -march="
  
! #: config/aarch64/aarch64.cc:20150
  #, fuzzy, gcc-internal-format
  #| msgid "bad value (%s) for -march= switch"
  msgid "duplicate feature modifier %qs of value %qs in %<target_version%> attribute"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -march="
  
! #: config/aarch64/aarch64.cc:20736 config/i386/i386-features.cc:3911
! #: config/i386/i386-features.cc:4180 config/riscv/riscv.cc:13694
  #, fuzzy, gcc-internal-format
  #| msgid "stack limit expression is not supported"
  msgid "virtual function multiversioning not supported"
  msgstr "stakgrÃ¦nseudtryk understÃ¸ttes ikke"
  
! #: config/aarch64/aarch64.cc:20857 config/i386/i386-features.cc:4044
! #: config/riscv/riscv.cc:13819 config/rs6000/rs6000.cc:25404
  #, fuzzy, gcc-internal-format
  #| msgid "Profiling is not supported on this target."
  msgid "multiversioning needs %<ifunc%> which is not supported on this target"
  msgstr "Profilering er ikke understÃ¸ttet pÃ¥ mÃ¥larkitekturen."
  
! #: config/aarch64/aarch64.cc:22409 config/arm/arm.cc:6686
  #: config/rs6000/rs6000-call.cc:366 config/s390/s390.cc:12993
  msgid "parameter passing for argument of type %qT with %<[[no_unique_address]]%> members changed %{in GCC 10.1%}"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:22414 config/arm/arm.cc:6691
  #: config/rs6000/rs6000-call.cc:361 config/s390/s390.cc:12988
  msgid "parameter passing for argument of type %qT when C++17 is enabled changed to match C++14 %{in GCC 10.1%}"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:22419 config/arm/arm.cc:6696
  msgid "parameter passing for argument of type %qT changed %{in GCC 12.1%}"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:23825 config/aarch64/aarch64.cc:23828
  #, fuzzy, gcc-internal-format
  #| msgid "line number out of range"
  msgid "lane %wd out of range %wd - %wd"
  msgstr "linjenummer er uden for det gyldige interval"
  
! #: config/aarch64/aarch64.cc:29341 config/i386/i386.cc:25621
! #: config/i386/i386.cc:25752
  #, fuzzy, gcc-internal-format
  #| msgid "unsupported version"
  msgid "unsupported simdlen %wd"
  msgstr "versionen er ikke understÃ¸ttet"
  
! #: config/aarch64/aarch64.cc:29355
  #, fuzzy, gcc-internal-format
  #| msgid "unused arguments in $-style format"
  msgid "GCC does not currently support return type %qT for simd"
  msgstr "ubenyttede parametre i formatering med $"
  
! #: config/aarch64/aarch64.cc:29359 config/i386/i386.cc:25643
  #, fuzzy, gcc-internal-format
  #| msgid "unused arguments in $-style format"
  msgid "unsupported return type %qT for simd"
  msgstr "ubenyttede parametre i formatering med $"
  
! #: config/aarch64/aarch64.cc:29393
  #, fuzzy, gcc-internal-format
  #| msgid "unused arguments in $-style format"
  msgid "GCC does not currently support argument type %qT for simd"
  msgstr "ubenyttede parametre i formatering med $"
  
! #: config/aarch64/aarch64.cc:29397 config/i386/i386.cc:25674
  #, fuzzy, gcc-internal-format
  #| msgid "unused arguments in $-style format"
  msgid "unsupported argument type %qT for simd"
  msgstr "ubenyttede parametre i formatering med $"
  
! #: config/aarch64/aarch64.cc:29468
  #, fuzzy, gcc-internal-format
  #| msgid "The -shared option is not currently supported for VAX ELF."
  msgid "GCC does not currently support simdlen %wd for type %qT"
  msgstr "Tilvalget -shared understÃ¸ttes i Ã¸jeblikket ikke for VAX ELF."
  
! #: config/aarch64/aarch64.cc:29488
  #, fuzzy, gcc-internal-format
  #| msgid "The -shared option is not currently supported for VAX ELF."
  msgid "GCC does not currently support a simdclone with simdlens %wd and %wd for these types."
  msgstr "Tilvalget -shared understÃ¸ttes i Ã¸jeblikket ikke for VAX ELF."
  
! #: config/aarch64/aarch64.cc:29676
  #, fuzzy, gcc-internal-format
  msgid "cannot apply attribute %qs to %q+D after the function has been defined"
  msgstr "egenskaben '%s' kan kun anvendes med klassedefinitioner"
  
! #: config/aarch64/aarch64.cc:29678
  #, fuzzy, gcc-internal-format
  #| msgid "label `%D' defined but not used"
  msgid "%q+D defined here"
  msgstr "etiketten '%D' er defineret, men ikke benyttet"
  
! #: config/aarch64/aarch64.cc:30158
  #, gcc-internal-format
  msgid "non-local gotos in functions with SME state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:30467
  #, gcc-internal-format
  msgid "catching non-call exceptions in functions with SME state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:31107 config/arm/arm-mve-builtins.cc:634
  #: config/riscv/riscv-vector-builtins.cc:4493
  #, fuzzy, gcc-internal-format
  #| msgid "argument of `asm' is not a constant string"
  msgid "argument %d of %qE must be an integer constant expression"
  msgstr "parameteren til 'asm' er ikke en konstant streng"
  
! #: config/aarch64/aarch64.cc:31120
  #, fuzzy, gcc-internal-format
  #| msgid "%s with different width due to prototype"
  msgid "passing %wd to argument %d of %qE, which expects the value %wd"
  msgstr "%s med anderledes bredde pÃ¥ grund af prototypen"
  
! #: config/aarch64/aarch64.cc:31123 config/arm/arm-mve-builtins.cc:646
  #: config/riscv/riscv-vector-builtins.cc:4507
  #, fuzzy, gcc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "passing %wd to argument %d of %qE, which expects a value in the range [%wd, %wd]"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: config/aarch64/aarch64.cc:31136
  #, fuzzy, gcc-internal-format
  #| msgid "%s with different width due to prototype"
  msgid "passing %wd to argument %d of %qE, which expects either %wd or %wd"
  msgstr "%s med anderledes bredde pÃ¥ grund af prototypen"
  
! #: config/aarch64/aarch64.cc:31150 config/arm/arm-mve-builtins.cc:685
  #, fuzzy, gcc-internal-format
  #| msgid "%s with different width due to prototype"
  msgid "passing %wd to argument %d of %qE, which expects %wd, %wd, %wd or %wd"
  msgstr "%s med anderledes bredde pÃ¥ grund af prototypen"
  
! #: config/aarch64/aarch64.cc:31162 config/arm/arm-mve-builtins.cc:672
  #, fuzzy, gcc-internal-format
  #| msgid "%s with different width due to prototype"
  msgid "passing %wd to argument %d of %qE, which expects a valid %qT value"
--- 42798,43016 ----
  msgid "malformed %<target()%> pragma or attribute"
  msgstr "forkert udformet specifikationsfunktionsnavn"
  
! #: config/aarch64/aarch64.cc:19730
  #, fuzzy, gcc-internal-format
  #| msgid "%s only accepts 1 argument"
  msgid "pragma or attribute %<target(\"%s\")%> does not accept an argument"
  msgstr "%s accepterer kun 1 parameter"
  
! #: config/aarch64/aarch64.cc:19738 config/i386/i386-options.cc:1315
  #: config/loongarch/loongarch-target-attr.cc:181
  #, fuzzy, gcc-internal-format
  #| msgid "target system does not support the %qs debug format"
  msgid "pragma or attribute %<target(\"%s\")%> does not allow a negated form"
  msgstr "mÃ¥larkitektursystem understÃ¸tter ikke %qs-fejlsÃ¸gningsformatet"
  
! #: config/aarch64/aarch64.cc:19792
  #: config/loongarch/loongarch-target-attr.cc:221
  #, fuzzy, gcc-internal-format
  #| msgid "\"%s\" is not defined"
  msgid "pragma or attribute %<target(\"%s=%s\")%> is not valid"
  msgstr "\"%s\" er ikke defineret"
  
! #: config/aarch64/aarch64.cc:19849 config/arm/arm.cc:33836
  #: config/loongarch/loongarch-target-attr.cc:297
  #: config/riscv/riscv-target-attr.cc:431 config/rs6000/rs6000.cc:24714
! #: config/s390/s390.cc:16688
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute argument not a string constant"
  msgid "attribute %<target%> argument not a string"
  msgstr "parameteren til egenskaben '%s' er ikke en strengkonstant"
  
! #: config/aarch64/aarch64.cc:19886
  #, gcc-internal-format
  msgid "arch extension %qs should be prefixed by %<+%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19889
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute argument not a string constant"
  msgid "pragma or attribute %<target(\"%s\")%> is not valid"
  msgstr "parameteren til egenskaben '%s' er ikke en strengkonstant"
  
! #: config/aarch64/aarch64.cc:19898
  #: config/loongarch/loongarch-target-attr.cc:332
  #, fuzzy, gcc-internal-format
  #| msgid "bad value (%s) for -march= switch"
  msgid "malformed %<target(\"%s\")%> pragma or attribute"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -march="
  
! #: config/aarch64/aarch64.cc:20116
  #, gcc-internal-format
  msgid "Function Multi Versioning support is experimental, and the behavior is likely to change"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20125 config/riscv/riscv-target-attr.cc:497
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute argument not a string constant"
  msgid "attribute %<target_version%> has multiple values"
  msgstr "parameteren til egenskaben '%s' er ikke en strengkonstant"
  
! #: config/aarch64/aarch64.cc:20133 config/riscv/riscv-target-attr.cc:505
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute argument not a string constant"
  msgid "attribute %<target_version%> argument not a string"
  msgstr "parameteren til egenskaben '%s' er ikke en strengkonstant"
  
! #: config/aarch64/aarch64.cc:20155
  #, fuzzy, gcc-internal-format
  #| msgid "bad value (%s) for -march= switch"
  msgid "missing value in %<target_version%> attribute"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -march="
  
! #: config/aarch64/aarch64.cc:20159
  #, fuzzy, gcc-internal-format
  #| msgid "bad value (%s) for -march= switch"
  msgid "invalid feature modifier %qs of value %qs in %<target_version%> attribute"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -march="
  
! #: config/aarch64/aarch64.cc:20165
  #, fuzzy, gcc-internal-format
  #| msgid "bad value (%s) for -march= switch"
  msgid "duplicate feature modifier %qs of value %qs in %<target_version%> attribute"
  msgstr "ugyldig vÃ¦rdi (%s) til tilvalget -march="
  
! #: config/aarch64/aarch64.cc:20751 config/i386/i386-features.cc:3911
! #: config/i386/i386-features.cc:4180 config/riscv/riscv.cc:13703
  #, fuzzy, gcc-internal-format
  #| msgid "stack limit expression is not supported"
  msgid "virtual function multiversioning not supported"
  msgstr "stakgrÃ¦nseudtryk understÃ¸ttes ikke"
  
! #: config/aarch64/aarch64.cc:20872 config/i386/i386-features.cc:4044
! #: config/riscv/riscv.cc:13828 config/rs6000/rs6000.cc:25404
  #, fuzzy, gcc-internal-format
  #| msgid "Profiling is not supported on this target."
  msgid "multiversioning needs %<ifunc%> which is not supported on this target"
  msgstr "Profilering er ikke understÃ¸ttet pÃ¥ mÃ¥larkitekturen."
  
! #: config/aarch64/aarch64.cc:22424 config/arm/arm.cc:6686
  #: config/rs6000/rs6000-call.cc:366 config/s390/s390.cc:12993
  msgid "parameter passing for argument of type %qT with %<[[no_unique_address]]%> members changed %{in GCC 10.1%}"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:22429 config/arm/arm.cc:6691
  #: config/rs6000/rs6000-call.cc:361 config/s390/s390.cc:12988
  msgid "parameter passing for argument of type %qT when C++17 is enabled changed to match C++14 %{in GCC 10.1%}"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:22434 config/arm/arm.cc:6696
  msgid "parameter passing for argument of type %qT changed %{in GCC 12.1%}"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:23889 config/aarch64/aarch64.cc:23892
  #, fuzzy, gcc-internal-format
  #| msgid "line number out of range"
  msgid "lane %wd out of range %wd - %wd"
  msgstr "linjenummer er uden for det gyldige interval"
  
! #: config/aarch64/aarch64.cc:29422 config/i386/i386.cc:25619
! #: config/i386/i386.cc:25750
  #, fuzzy, gcc-internal-format
  #| msgid "unsupported version"
  msgid "unsupported simdlen %wd"
  msgstr "versionen er ikke understÃ¸ttet"
  
! #: config/aarch64/aarch64.cc:29436
  #, fuzzy, gcc-internal-format
  #| msgid "unused arguments in $-style format"
  msgid "GCC does not currently support return type %qT for simd"
  msgstr "ubenyttede parametre i formatering med $"
  
! #: config/aarch64/aarch64.cc:29440 config/i386/i386.cc:25641
  #, fuzzy, gcc-internal-format
  #| msgid "unused arguments in $-style format"
  msgid "unsupported return type %qT for simd"
  msgstr "ubenyttede parametre i formatering med $"
  
! #: config/aarch64/aarch64.cc:29474
  #, fuzzy, gcc-internal-format
  #| msgid "unused arguments in $-style format"
  msgid "GCC does not currently support argument type %qT for simd"
  msgstr "ubenyttede parametre i formatering med $"
  
! #: config/aarch64/aarch64.cc:29478 config/i386/i386.cc:25672
  #, fuzzy, gcc-internal-format
  #| msgid "unused arguments in $-style format"
  msgid "unsupported argument type %qT for simd"
  msgstr "ubenyttede parametre i formatering med $"
  
! #: config/aarch64/aarch64.cc:29549
  #, fuzzy, gcc-internal-format
  #| msgid "The -shared option is not currently supported for VAX ELF."
  msgid "GCC does not currently support simdlen %wd for type %qT"
  msgstr "Tilvalget -shared understÃ¸ttes i Ã¸jeblikket ikke for VAX ELF."
  
! #: config/aarch64/aarch64.cc:29569
  #, fuzzy, gcc-internal-format
  #| msgid "The -shared option is not currently supported for VAX ELF."
  msgid "GCC does not currently support a simdclone with simdlens %wd and %wd for these types."
  msgstr "Tilvalget -shared understÃ¸ttes i Ã¸jeblikket ikke for VAX ELF."
  
! #: config/aarch64/aarch64.cc:29757
  #, fuzzy, gcc-internal-format
  msgid "cannot apply attribute %qs to %q+D after the function has been defined"
  msgstr "egenskaben '%s' kan kun anvendes med klassedefinitioner"
  
! #: config/aarch64/aarch64.cc:29759
  #, fuzzy, gcc-internal-format
  #| msgid "label `%D' defined but not used"
  msgid "%q+D defined here"
  msgstr "etiketten '%D' er defineret, men ikke benyttet"
  
! #: config/aarch64/aarch64.cc:30239
  #, gcc-internal-format
  msgid "non-local gotos in functions with SME state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:30548
  #, gcc-internal-format
  msgid "catching non-call exceptions in functions with SME state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:31188 config/arm/arm-mve-builtins.cc:634
  #: config/riscv/riscv-vector-builtins.cc:4493
  #, fuzzy, gcc-internal-format
  #| msgid "argument of `asm' is not a constant string"
  msgid "argument %d of %qE must be an integer constant expression"
  msgstr "parameteren til 'asm' er ikke en konstant streng"
  
! #: config/aarch64/aarch64.cc:31201
  #, fuzzy, gcc-internal-format
  #| msgid "%s with different width due to prototype"
  msgid "passing %wd to argument %d of %qE, which expects the value %wd"
  msgstr "%s med anderledes bredde pÃ¥ grund af prototypen"
  
! #: config/aarch64/aarch64.cc:31204 config/arm/arm-mve-builtins.cc:646
  #: config/riscv/riscv-vector-builtins.cc:4507
  #, fuzzy, gcc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "passing %wd to argument %d of %qE, which expects a value in the range [%wd, %wd]"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: config/aarch64/aarch64.cc:31217
  #, fuzzy, gcc-internal-format
  #| msgid "%s with different width due to prototype"
  msgid "passing %wd to argument %d of %qE, which expects either %wd or %wd"
  msgstr "%s med anderledes bredde pÃ¥ grund af prototypen"
  
! #: config/aarch64/aarch64.cc:31231 config/arm/arm-mve-builtins.cc:685
  #, fuzzy, gcc-internal-format
  #| msgid "%s with different width due to prototype"
  msgid "passing %wd to argument %d of %qE, which expects %wd, %wd, %wd or %wd"
  msgstr "%s med anderledes bredde pÃ¥ grund af prototypen"
  
! #: config/aarch64/aarch64.cc:31243 config/arm/arm-mve-builtins.cc:672
  #, fuzzy, gcc-internal-format
  #| msgid "%s with different width due to prototype"
  msgid "passing %wd to argument %d of %qE, which expects a valid %qT value"
*************** msgstr "L%d-mellemlagersventetid ukendt
*** 43070,43076 ****
  msgid "bad value %qs for %<-mmemory-latency%>"
  msgstr "ugyldig vÃ¦rdi '%s' for -mmemory-latency"
  
! #: config/alpha/alpha.cc:7360 config/alpha/alpha.cc:7363 config/arc/arc.cc:6981
  #: config/arc/arc.cc:7255 config/s390/s390.cc:942
  #, gcc-internal-format
  msgid "bad builtin fcode"
--- 43079,43085 ----
  msgid "bad value %qs for %<-mmemory-latency%>"
  msgstr "ugyldig vÃ¦rdi '%s' for -mmemory-latency"
  
! #: config/alpha/alpha.cc:7357 config/alpha/alpha.cc:7360 config/arc/arc.cc:6981
  #: config/arc/arc.cc:7255 config/s390/s390.cc:942
  #, gcc-internal-format
  msgid "bad builtin fcode"
*************** msgstr "parameteren til egenskaben '%s e
*** 43209,43215 ****
  #: config/i386/i386-options.cc:3906 config/i386/i386-options.cc:3962
  #: config/i386/i386-options.cc:4013 config/i386/i386-options.cc:4050
  #: config/m68k/m68k.cc:804 config/mcore/mcore.cc:3070
! #: config/nvptx/nvptx.cc:5895 config/riscv/riscv.cc:6533
  #: config/rl78/rl78.cc:821 config/rl78/rl78.cc:890
  #: config/rs6000/rs6000.cc:20642 config/rx/rx.cc:2727 config/rx/rx.cc:2753
  #: config/s390/s390.cc:1157 config/s390/s390.cc:1247 config/sh/sh.cc:8442
--- 43218,43224 ----
  #: config/i386/i386-options.cc:3906 config/i386/i386-options.cc:3962
  #: config/i386/i386-options.cc:4013 config/i386/i386-options.cc:4050
  #: config/m68k/m68k.cc:804 config/mcore/mcore.cc:3070
! #: config/nvptx/nvptx.cc:5901 config/riscv/riscv.cc:6533
  #: config/rl78/rl78.cc:821 config/rl78/rl78.cc:890
  #: config/rs6000/rs6000.cc:20642 config/rx/rx.cc:2727 config/rx/rx.cc:2753
  #: config/s390/s390.cc:1157 config/s390/s390.cc:1247 config/sh/sh.cc:8442
*************** msgid "argument of %qE attribute ignored
*** 43370,43394 ****
  msgstr "parameteren til egenskaben '%s er ikke \"ilink1\" eller \"ilink2\""
  
  #: config/arc/arc.cc:11004 config/avr/avr.cc:11384 config/bfin/bfin.cc:4818
! #: config/mingw/winnt.cc:63 config/nvptx/nvptx.cc:5918
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute only applies to variables"
  msgid "%qE attribute only applies to variables"
  msgstr "egenskaben '%s' kan kun anvendes pÃ¥ variabler"
  
! #: config/arm/aarch-common.cc:553 config/i386/i386.cc:24288
  #, fuzzy, gcc-internal-format
  #| msgid "Statement at %0 invalid in this context"
  msgid "alternatives not allowed in %<asm%> flag output"
  msgstr "SÃ¦tning ved %0 er ugyldig i denne kontekst"
  
! #: config/arm/aarch-common.cc:614 config/i386/i386.cc:24352
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown %<asm%> flag output %qs"
  msgstr "ukendt registernavn: %s"
  
! #: config/arm/aarch-common.cc:624 config/i386/i386.cc:24381
  #, fuzzy, gcc-internal-format
  #| msgid "invalid type for make function"
  msgid "invalid type for %<asm%> flag output"
--- 43379,43403 ----
  msgstr "parameteren til egenskaben '%s er ikke \"ilink1\" eller \"ilink2\""
  
  #: config/arc/arc.cc:11004 config/avr/avr.cc:11384 config/bfin/bfin.cc:4818
! #: config/mingw/winnt.cc:63 config/nvptx/nvptx.cc:5924
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute only applies to variables"
  msgid "%qE attribute only applies to variables"
  msgstr "egenskaben '%s' kan kun anvendes pÃ¥ variabler"
  
! #: config/arm/aarch-common.cc:553 config/i386/i386.cc:24290
  #, fuzzy, gcc-internal-format
  #| msgid "Statement at %0 invalid in this context"
  msgid "alternatives not allowed in %<asm%> flag output"
  msgstr "SÃ¦tning ved %0 er ugyldig i denne kontekst"
  
! #: config/arm/aarch-common.cc:614 config/i386/i386.cc:24354
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown %<asm%> flag output %qs"
  msgstr "ukendt registernavn: %s"
  
! #: config/arm/aarch-common.cc:624 config/i386/i386.cc:24383
  #, fuzzy, gcc-internal-format
  #| msgid "invalid type for make function"
  msgid "invalid type for %<asm%> flag output"
*************** msgstr "'%s' forventer en konstant param
*** 44014,44020 ****
  msgid "supported core architectures:%s"
  msgstr "Kendte MCU-arkitekturer:"
  
! #: config/avr/avr-passes.cc:4907
  #, fuzzy, gcc-internal-format
  #| msgid "could not split insn"
  msgid "failed to split insn"
--- 44023,44029 ----
  msgid "supported core architectures:%s"
  msgstr "Kendte MCU-arkitekturer:"
  
! #: config/avr/avr-passes.cc:5038
  #, fuzzy, gcc-internal-format
  #| msgid "could not split insn"
  msgid "failed to split insn"
*************** msgstr "-pipe understÃ¸ttes ikke"
*** 44054,44066 ****
  msgid "%<-fPIE%> is not supported"
  msgstr "-pipe understÃ¸ttes ikke"
  
! #: config/avr/avr.cc:954 config/avr/avr.cc:959 config/riscv/riscv.cc:11234
  #, fuzzy, gcc-internal-format
  #| msgid "-traditional and -ansi are mutually exclusive"
  msgid "function attributes %qs and %qs are mutually exclusive"
  msgstr "-traditional og -ansi er indbyrdes uforenelige"
  
! #: config/avr/avr.cc:981 config/riscv/riscv.cc:11246
  #, fuzzy, gcc-internal-format
  #| msgid "`-%c' option must have argument"
  msgid "%qs function cannot have arguments"
--- 44063,44075 ----
  msgid "%<-fPIE%> is not supported"
  msgstr "-pipe understÃ¸ttes ikke"
  
! #: config/avr/avr.cc:954 config/avr/avr.cc:959 config/riscv/riscv.cc:11243
  #, fuzzy, gcc-internal-format
  #| msgid "-traditional and -ansi are mutually exclusive"
  msgid "function attributes %qs and %qs are mutually exclusive"
  msgstr "-traditional og -ansi er indbyrdes uforenelige"
  
! #: config/avr/avr.cc:981 config/riscv/riscv.cc:11255
  #, fuzzy, gcc-internal-format
  #| msgid "`-%c' option must have argument"
  msgid "%qs function cannot have arguments"
*************** msgstr "tilvalget '-%c' skal have en par
*** 44071,44077 ****
  msgid "method %qs has an implicit %<this%> argument"
  msgstr ""
  
! #: config/avr/avr.cc:987 config/riscv/riscv.cc:11243
  #, fuzzy, gcc-internal-format
  #| msgid "function cannot be inline"
  msgid "%qs function cannot return a value"
--- 44080,44086 ----
  msgid "method %qs has an implicit %<this%> argument"
  msgstr ""
  
! #: config/avr/avr.cc:987 config/riscv/riscv.cc:11252
  #, fuzzy, gcc-internal-format
  #| msgid "function cannot be inline"
  msgid "%qs function cannot return a value"
*************** msgstr "uforenelig egenskab '%s' ignorer
*** 44251,44285 ****
  msgid "architecture %qs supported for assembler only"
  msgstr "MCU '%s' understÃ¸ttes kun for maskinkode"
  
! #: config/avr/avr.cc:15093
  #, gcc-internal-format
  msgid "conversion from address space %qs to address space %qs"
  msgstr ""
  
! #: config/avr/avr.cc:16261 config/avr/avr.cc:16274
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "case label does not reduce to an integer constant"
  msgid "%s expects a compile time integer constant"
  msgstr "case-etiketten kan ikke reduceres til en heltalskonstant"
  
! #: config/avr/avr.cc:16289
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "`%s' attribute requires an integer constant argument"
  msgid "%s expects a compile time integer constant of 0x01, 0x7f, 0x80 or 0xfe as first argument"
  msgstr "egenskaben '%s' krÃ¦ver en heltalskonstant som parameter"
  
! #: config/avr/avr.cc:16304
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "`%s' attribute requires an integer constant argument"
  msgid "%s expects a compile time long integer constant as first argument"
  msgstr "egenskaben '%s' krÃ¦ver en heltalskonstant som parameter"
  
! #: config/avr/avr.cc:16332
  #, gcc-internal-format, gfc-internal-format
  msgid "rounding to %d bits has no effect for fixed-point value with %d fractional bits"
  msgstr ""
  
! #: config/avr/avr.cc:16341
  #, gcc-internal-format
  msgid "rounding result will always be 0"
  msgstr ""
--- 44260,44294 ----
  msgid "architecture %qs supported for assembler only"
  msgstr "MCU '%s' understÃ¸ttes kun for maskinkode"
  
! #: config/avr/avr.cc:15107
  #, gcc-internal-format
  msgid "conversion from address space %qs to address space %qs"
  msgstr ""
  
! #: config/avr/avr.cc:16275 config/avr/avr.cc:16288
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "case label does not reduce to an integer constant"
  msgid "%s expects a compile time integer constant"
  msgstr "case-etiketten kan ikke reduceres til en heltalskonstant"
  
! #: config/avr/avr.cc:16303
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "`%s' attribute requires an integer constant argument"
  msgid "%s expects a compile time integer constant of 0x01, 0x7f, 0x80 or 0xfe as first argument"
  msgstr "egenskaben '%s' krÃ¦ver en heltalskonstant som parameter"
  
! #: config/avr/avr.cc:16318
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "`%s' attribute requires an integer constant argument"
  msgid "%s expects a compile time long integer constant as first argument"
  msgstr "egenskaben '%s' krÃ¦ver en heltalskonstant som parameter"
  
! #: config/avr/avr.cc:16346
  #, gcc-internal-format, gfc-internal-format
  msgid "rounding to %d bits has no effect for fixed-point value with %d fractional bits"
  msgstr ""
  
! #: config/avr/avr.cc:16355
  #, gcc-internal-format
  msgid "rounding result will always be 0"
  msgstr ""
*************** msgstr ""
*** 44772,44778 ****
  msgid "using %<vector_length (64)%>, ignoring runtime setting"
  msgstr ""
  
! #: config/gcn/gcn.cc:6351 config/nvptx/nvptx.cc:6748
  #, gcc-internal-format
  msgid "using %<num_workers (%d)%>, ignoring %d"
  msgstr ""
--- 44781,44787 ----
  msgid "using %<vector_length (64)%>, ignoring runtime setting"
  msgstr ""
  
! #: config/gcn/gcn.cc:6351 config/nvptx/nvptx.cc:6754
  #, gcc-internal-format
  msgid "using %<num_workers (%d)%>, ignoring %d"
  msgstr ""
*************** msgstr "feltet '%s' ikke fundet"
*** 44838,44849 ****
  msgid "unrecognizable argument of option %<"
  msgstr "ignorerer kommandolinjetilvalget '%s'"
  
! #: config/gcn/mkoffload.cc:1033 config/nvptx/mkoffload.cc:722
  #, gcc-internal-format
  msgid "%<-foffload-abi-host-opts%> specified multiple times"
  msgstr ""
  
! #: config/gcn/mkoffload.cc:1090 config/nvptx/mkoffload.cc:757
  #, gcc-internal-format
  msgid "either %<-fopenacc%> or %<-fopenmp%> must be set"
  msgstr ""
--- 44847,44858 ----
  msgid "unrecognizable argument of option %<"
  msgstr "ignorerer kommandolinjetilvalget '%s'"
  
! #: config/gcn/mkoffload.cc:1033 config/nvptx/mkoffload.cc:728
  #, gcc-internal-format
  msgid "%<-foffload-abi-host-opts%> specified multiple times"
  msgstr ""
  
! #: config/gcn/mkoffload.cc:1090 config/nvptx/mkoffload.cc:763
  #, gcc-internal-format
  msgid "either %<-fopenacc%> or %<-fopenmp%> must be set"
  msgstr ""
*************** msgstr "ESA/390-arkitektur."
*** 44859,44871 ****
  msgid "cannot open %qs"
  msgstr "kan ikke Ã¥bne %s"
  
! #: config/gcn/mkoffload.cc:1327 config/nvptx/mkoffload.cc:850
  #, fuzzy, gcc-internal-format
  #| msgid "cannot open profile file %s"
  msgid "cannot open omp_requires file %qs"
  msgstr "kan ikke Ã¥ben profilefilen %s"
  
! #: config/gcn/mkoffload.cc:1331 config/nvptx/mkoffload.cc:854
  #, fuzzy, gcc-internal-format
  msgid "cannot read omp_requires file %qs"
  msgstr "kan ikke udfolde %s"
--- 44868,44880 ----
  msgid "cannot open %qs"
  msgstr "kan ikke Ã¥bne %s"
  
! #: config/gcn/mkoffload.cc:1327 config/nvptx/mkoffload.cc:856
  #, fuzzy, gcc-internal-format
  #| msgid "cannot open profile file %s"
  msgid "cannot open omp_requires file %qs"
  msgstr "kan ikke Ã¥ben profilefilen %s"
  
! #: config/gcn/mkoffload.cc:1331 config/nvptx/mkoffload.cc:860
  #, fuzzy, gcc-internal-format
  msgid "cannot read omp_requires file %qs"
  msgstr "kan ikke udfolde %s"
*************** msgstr "%qs er ikke et gyldigt tilvalg t
*** 45601,45608 ****
  msgid "%<-fcf-protection=full%> is not enabled by %<-fhardened%> because it was specified on the command line"
  msgstr ""
  
! #: config/i386/i386-options.cc:3277 config/riscv/riscv.cc:10651
! #: config/riscv/riscv.cc:10655
  #, fuzzy, gcc-internal-format
  #| msgid "-march=%s is not compatible with the selected ABI"
  msgid "%<-fcf-protection%> is not compatible with this target"
--- 45610,45617 ----
  msgid "%<-fcf-protection=full%> is not enabled by %<-fhardened%> because it was specified on the command line"
  msgstr ""
  
! #: config/i386/i386-options.cc:3277 config/riscv/riscv.cc:10660
! #: config/riscv/riscv.cc:10664
  #, fuzzy, gcc-internal-format
  #| msgid "-march=%s is not compatible with the selected ABI"
  msgid "%<-fcf-protection%> is not compatible with this target"
*************** msgstr "-mips%d understÃ¸tter ikke 64-bi
*** 45952,46027 ****
  msgid "%<-fsplit-stack%> does not support 3 register parameters"
  msgstr "-mips%d understÃ¸tter ikke 64-bit kommatalsregistre"
  
! #: config/i386/i386.cc:13437
  #, fuzzy, gcc-internal-format
  #| msgid "unsupported size for integer register"
  msgid "%<V%> modifier on non-integer register"
  msgstr "stÃ¸rrelse er ikke understÃ¸ttet for heltalsregister"
  
! #: config/i386/i386.cc:13448 config/i386/i386.cc:13462
  #, gcc-internal-format
  msgid "unsupported size for integer register"
  msgstr "stÃ¸rrelse er ikke understÃ¸ttet for heltalsregister"
  
! #: config/i386/i386.cc:13494
  #, gcc-internal-format
  msgid "extended registers have no high halves"
  msgstr "udvidede registre har ikke hÃ¸je halvdele"
  
! #: config/i386/i386.cc:13509
  #, gcc-internal-format
  msgid "unsupported operand size for extended register"
  msgstr "ikke-understÃ¸ttet operandstÃ¸rrelse for udvidede registre"
  
! #: config/i386/i386.cc:13707 config/i386/i386.cc:13709
  #, fuzzy, gcc-internal-format
  #| msgid "invalid operand type used with operand code 'Z'"
  msgid "non-integer operand used with operand code %<z%>"
  msgstr "ugyldig operandtype brugt med operandkoden Â»ZÂ«"
  
! #: config/i386/i386.cc:17917
  #, fuzzy, gcc-internal-format
  #| msgid "assignment (not initialization) in declaration"
  msgid "empty class %qT parameter passing ABI changes in %<-fabi-version=12%> (GCC 8)"
  msgstr "tildeling (ikke klargÃ¸ring) i erklÃ¦ring"
  
! #: config/i386/i386.cc:23148
  msgid "the alignment of %<_Atomic %T%> fields changed in %{GCC 11.1%}"
  msgstr ""
  
! #: config/i386/i386.cc:23235
  #, fuzzy, gcc-internal-format
  #| msgid "no low registers available for popping high registers"
  msgid "no register available for profiling %<-mcmodel=large%s%>"
  msgstr "ingen lave registre er tilgÃ¦ngelige til at modtage vÃ¦rdier fra hÃ¸je registre"
  
! #: config/i386/i386.cc:23331
  #, gcc-internal-format
  msgid "profiling %<-mcmodel=large%> with PIC is not supported"
  msgstr ""
  
! #: config/i386/i386.cc:24046
  #, gcc-internal-format
  msgid "%<__bfloat16%> is redefined from typedef %<short%> to real %<__bf16%> since GCC 13.1, be careful of implicit conversion between %<__bf16%> and %<short%>; an explicit bitcast may be needed here"
  msgstr ""
  
! #: config/i386/i386.cc:25580
  #, fuzzy, gcc-internal-format
  #| msgid "Tune alignment for the specified chip or CPU version"
  msgid "unknown architecture specific memory model"
  msgstr "FinjustÃ©r justering til en given chip- eller processorversion"
  
! #: config/i386/i386.cc:25587
  #, gcc-internal-format
  msgid "%<HLE_ACQUIRE%> not used with %<ACQUIRE%> or stronger memory model"
  msgstr ""
  
! #: config/i386/i386.cc:25594
  #, gcc-internal-format
  msgid "%<HLE_RELEASE%> not used with %<RELEASE%> or stronger memory model"
  msgstr ""
  
! #: config/i386/i386.cc:26281
  #, fuzzy, gcc-internal-format
  #| msgid "-mapcs-stack-check incompatible with -mno-apcs-frame"
  msgid "%<-fexcess-precision=16%> is not compatible with %<-mfpmath=387%>"
--- 45961,46036 ----
  msgid "%<-fsplit-stack%> does not support 3 register parameters"
  msgstr "-mips%d understÃ¸tter ikke 64-bit kommatalsregistre"
  
! #: config/i386/i386.cc:13439
  #, fuzzy, gcc-internal-format
  #| msgid "unsupported size for integer register"
  msgid "%<V%> modifier on non-integer register"
  msgstr "stÃ¸rrelse er ikke understÃ¸ttet for heltalsregister"
  
! #: config/i386/i386.cc:13450 config/i386/i386.cc:13464
  #, gcc-internal-format
  msgid "unsupported size for integer register"
  msgstr "stÃ¸rrelse er ikke understÃ¸ttet for heltalsregister"
  
! #: config/i386/i386.cc:13496
  #, gcc-internal-format
  msgid "extended registers have no high halves"
  msgstr "udvidede registre har ikke hÃ¸je halvdele"
  
! #: config/i386/i386.cc:13511
  #, gcc-internal-format
  msgid "unsupported operand size for extended register"
  msgstr "ikke-understÃ¸ttet operandstÃ¸rrelse for udvidede registre"
  
! #: config/i386/i386.cc:13709 config/i386/i386.cc:13711
  #, fuzzy, gcc-internal-format
  #| msgid "invalid operand type used with operand code 'Z'"
  msgid "non-integer operand used with operand code %<z%>"
  msgstr "ugyldig operandtype brugt med operandkoden Â»ZÂ«"
  
! #: config/i386/i386.cc:17919
  #, fuzzy, gcc-internal-format
  #| msgid "assignment (not initialization) in declaration"
  msgid "empty class %qT parameter passing ABI changes in %<-fabi-version=12%> (GCC 8)"
  msgstr "tildeling (ikke klargÃ¸ring) i erklÃ¦ring"
  
! #: config/i386/i386.cc:23150
  msgid "the alignment of %<_Atomic %T%> fields changed in %{GCC 11.1%}"
  msgstr ""
  
! #: config/i386/i386.cc:23237
  #, fuzzy, gcc-internal-format
  #| msgid "no low registers available for popping high registers"
  msgid "no register available for profiling %<-mcmodel=large%s%>"
  msgstr "ingen lave registre er tilgÃ¦ngelige til at modtage vÃ¦rdier fra hÃ¸je registre"
  
! #: config/i386/i386.cc:23333
  #, gcc-internal-format
  msgid "profiling %<-mcmodel=large%> with PIC is not supported"
  msgstr ""
  
! #: config/i386/i386.cc:24048
  #, gcc-internal-format
  msgid "%<__bfloat16%> is redefined from typedef %<short%> to real %<__bf16%> since GCC 13.1, be careful of implicit conversion between %<__bf16%> and %<short%>; an explicit bitcast may be needed here"
  msgstr ""
  
! #: config/i386/i386.cc:25578
  #, fuzzy, gcc-internal-format
  #| msgid "Tune alignment for the specified chip or CPU version"
  msgid "unknown architecture specific memory model"
  msgstr "FinjustÃ©r justering til en given chip- eller processorversion"
  
! #: config/i386/i386.cc:25585
  #, gcc-internal-format
  msgid "%<HLE_ACQUIRE%> not used with %<ACQUIRE%> or stronger memory model"
  msgstr ""
  
! #: config/i386/i386.cc:25592
  #, gcc-internal-format
  msgid "%<HLE_RELEASE%> not used with %<RELEASE%> or stronger memory model"
  msgstr ""
  
! #: config/i386/i386.cc:26279
  #, fuzzy, gcc-internal-format
  #| msgid "-mapcs-stack-check incompatible with -mno-apcs-frame"
  msgid "%<-fexcess-precision=16%> is not compatible with %<-mfpmath=387%>"
*************** msgstr "-march=%s er ikke forenelig med
*** 46231,46238 ****
  msgid "%qs cannot be used for compiling a shared library"
  msgstr "%s kan ikke bruges i asm her"
  
! #: config/loongarch/loongarch-target-attr.cc:246 config/s390/s390.cc:16727
! #: config/s390/s390.cc:16777 config/s390/s390.cc:16794
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute argument not a string constant"
  msgid "attribute %<target%> argument %qs is unknown"
--- 46240,46247 ----
  msgid "%qs cannot be used for compiling a shared library"
  msgstr "%s kan ikke bruges i asm her"
  
! #: config/loongarch/loongarch-target-attr.cc:246 config/s390/s390.cc:16754
! #: config/s390/s390.cc:16804 config/s390/s390.cc:16821
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute argument not a string constant"
  msgid "attribute %<target%> argument %qs is unknown"
*************** msgstr "interrupt_thread er kun tilgÃ¦ng
*** 46370,46376 ****
  msgid "stack limit expression is not supported"
  msgstr "stakgrÃ¦nseudtryk understÃ¸ttes ikke"
  
! #: config/m68k/m68k.cc:7175 config/s390/s390.cc:17417
  #, fuzzy, gcc-internal-format
  #| msgid "-fcheck-pointer-bounds is not supported for this target"
  msgid "%<-fexcess-precision=16%> is not supported on this target"
--- 46379,46385 ----
  msgid "stack limit expression is not supported"
  msgstr "stakgrÃ¦nseudtryk understÃ¸ttes ikke"
  
! #: config/m68k/m68k.cc:7175 config/s390/s390.cc:17444
  #, fuzzy, gcc-internal-format
  #| msgid "-fcheck-pointer-bounds is not supported for this target"
  msgid "%<-fexcess-precision=16%> is not supported on this target"
*************** msgstr "-fcheck-pointer-bounds er ikke u
*** 46382,46415 ****
  msgid "initialized variable %q+D is marked dllimport"
  msgstr "%Jvariablen '%D' med startvÃ¦rdi er markeret dllimport"
  
! #: config/microblaze/microblaze.cc:1760
  #, fuzzy, gcc-internal-format
  #| msgid "-fdata-sections not supported for this target"
  msgid "%<-fPIC%>/%<-fpic%> not supported for this target"
  msgstr "-fdata-sections understÃ¸ttes ikke pÃ¥ mÃ¥larkitekturen"
  
! #: config/microblaze/microblaze.cc:1772
  #, fuzzy, gcc-internal-format
  #| msgid "#%s with invalid argument"
  msgid "%qs is an invalid argument to %<-mcpu=%>"
  msgstr "#%s med ugyldig parameter"
  
! #: config/microblaze/microblaze.cc:1821
  #, gcc-internal-format
  msgid "%<-mxl-multiply-high%> can be used only with %<-mcpu=v6.00.a%> or greater"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1838
  #, gcc-internal-format
  msgid "%<-mxl-reorder%> can be used only with %<-mcpu=v8.30.a%> or greater"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1845
  #, gcc-internal-format
  msgid "%<-mxl-reorder%> requires %<-mxl-pattern-compare%> for %<-mcpu=v8.30.a%>"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1851
  #, gcc-internal-format
  msgid "%<-mxl-multiply-high%> requires %<-mno-xl-soft-mul%>"
  msgstr ""
--- 46391,46424 ----
  msgid "initialized variable %q+D is marked dllimport"
  msgstr "%Jvariablen '%D' med startvÃ¦rdi er markeret dllimport"
  
! #: config/microblaze/microblaze.cc:1764
  #, fuzzy, gcc-internal-format
  #| msgid "-fdata-sections not supported for this target"
  msgid "%<-fPIC%>/%<-fpic%> not supported for this target"
  msgstr "-fdata-sections understÃ¸ttes ikke pÃ¥ mÃ¥larkitekturen"
  
! #: config/microblaze/microblaze.cc:1776
  #, fuzzy, gcc-internal-format
  #| msgid "#%s with invalid argument"
  msgid "%qs is an invalid argument to %<-mcpu=%>"
  msgstr "#%s med ugyldig parameter"
  
! #: config/microblaze/microblaze.cc:1825
  #, gcc-internal-format
  msgid "%<-mxl-multiply-high%> can be used only with %<-mcpu=v6.00.a%> or greater"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1842
  #, gcc-internal-format
  msgid "%<-mxl-reorder%> can be used only with %<-mcpu=v8.30.a%> or greater"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1849
  #, gcc-internal-format
  msgid "%<-mxl-reorder%> requires %<-mxl-pattern-compare%> for %<-mcpu=v8.30.a%>"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1855
  #, gcc-internal-format
  msgid "%<-mxl-multiply-high%> requires %<-mno-xl-soft-mul%>"
  msgstr ""
*************** msgstr "Ã¥bner uddatafilen %s"
*** 47248,47297 ****
  msgid "malformed ptx file"
  msgstr "forkert udformet specifikationsfunktionsnavn"
  
! #: config/nvptx/mkoffload.cc:336
  #, gcc-internal-format
  msgid "%<omp requires reverse_offload%> requires at least %<sm_35%> for %<-foffload-options=nvptx-none=-march=%> - disabling offload-code generation for this device type"
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:420 config/nvptx/mkoffload.cc:492
  #, fuzzy, gcc-internal-format
  #| msgid "cannot find protocol declaration for `%s'"
  msgid "Cannot find function declaration for %qs"
  msgstr "kan ikke finde protokolerklÃ¦ringen af '%s'"
  
! #: config/nvptx/mkoffload.cc:592
  #, fuzzy, gcc-internal-format
  #| msgid "environment variable DJGPP not defined"
  msgid "environment variable COLLECT_GCC_OPTIONS must be set"
  msgstr "miljÃ¸variablen DJGPP er ikke defineret"
  
! #: config/nvptx/mkoffload.cc:613
  #, gcc-internal-format
  msgid "%<-foffload-abi-host-opts%> not specified."
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:644
  #, gcc-internal-format
  msgid "COLLECT_GCC must be set."
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:692
  #, fuzzy, gcc-internal-format
  #| msgid "field `%s' not found"
  msgid "offload compiler %s not found (consider using %<-B%>)"
  msgstr "feltet '%s' ikke fundet"
  
! #: config/nvptx/mkoffload.cc:715
  #, fuzzy, gcc-internal-format
  msgid "unrecognizable argument of option "
  msgstr "ignorerer kommandolinjetilvalget '%s'"
  
! #: config/nvptx/mkoffload.cc:804
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "cannot open '%s'"
  msgstr "kan ikke Ã¥bne %s"
  
! #: config/nvptx/mkoffload.cc:860
  #, fuzzy, gcc-internal-format
  #| msgid "%s:cannot open data file\n"
  msgid "cannot open intermediate ptx file"
--- 47257,47306 ----
  msgid "malformed ptx file"
  msgstr "forkert udformet specifikationsfunktionsnavn"
  
! #: config/nvptx/mkoffload.cc:339
  #, gcc-internal-format
  msgid "%<omp requires reverse_offload%> requires at least %<sm_35%> for %<-foffload-options=nvptx-none=-march=%> - disabling offload-code generation for this device type"
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:426 config/nvptx/mkoffload.cc:498
  #, fuzzy, gcc-internal-format
  #| msgid "cannot find protocol declaration for `%s'"
  msgid "Cannot find function declaration for %qs"
  msgstr "kan ikke finde protokolerklÃ¦ringen af '%s'"
  
! #: config/nvptx/mkoffload.cc:598
  #, fuzzy, gcc-internal-format
  #| msgid "environment variable DJGPP not defined"
  msgid "environment variable COLLECT_GCC_OPTIONS must be set"
  msgstr "miljÃ¸variablen DJGPP er ikke defineret"
  
! #: config/nvptx/mkoffload.cc:619
  #, gcc-internal-format
  msgid "%<-foffload-abi-host-opts%> not specified."
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:650
  #, gcc-internal-format
  msgid "COLLECT_GCC must be set."
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:698
  #, fuzzy, gcc-internal-format
  #| msgid "field `%s' not found"
  msgid "offload compiler %s not found (consider using %<-B%>)"
  msgstr "feltet '%s' ikke fundet"
  
! #: config/nvptx/mkoffload.cc:721
  #, fuzzy, gcc-internal-format
  msgid "unrecognizable argument of option "
  msgstr "ignorerer kommandolinjetilvalget '%s'"
  
! #: config/nvptx/mkoffload.cc:810
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "cannot open '%s'"
  msgstr "kan ikke Ã¥bne %s"
  
! #: config/nvptx/mkoffload.cc:866
  #, fuzzy, gcc-internal-format
  #| msgid "%s:cannot open data file\n"
  msgid "cannot open intermediate ptx file"
*************** msgstr "%s: kan ikke Ã¥bne datafil\n"
*** 47303,47388 ****
  msgid "option %s is not supported together with %<-fopenacc%>"
  msgstr "integrerede funktioner understÃ¸ttes ikke for denne returvÃ¦rditype"
  
! #: config/nvptx/nvptx.cc:342
  #, gcc-internal-format
  msgid "PTX version (%<-mptx%>) needs to be at least %s to support selected %<-misa%> (sm_%s)"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:359
  #, gcc-internal-format
  msgid "%<-march=%> must be specified"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:382
  #, fuzzy, gcc-internal-format
  #| msgid "passing floating point arguments in fp regs not yet supported"
  msgid "not generating patch area, nops not supported"
  msgstr "overbringelse af kommatalsparametre i kommatalsregistre er ikke understÃ¸ttet endnu"
  
! #: config/nvptx/nvptx.cc:479
  #, gcc-internal-format
  msgid "static initialization of variable %q+D in %<.shared%> memory is not supported"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:2409
  #, gcc-internal-format
  msgid "cannot emit unaligned pointers in ptx assembly"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:2659
  #, gcc-internal-format
  msgid "PTX does not support weak declarations (only weak definitions)"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:5900
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute requires an integer constant argument"
  msgid "%qE attribute requires a void return type"
  msgstr "egenskaben '%s' krÃ¦ver en heltalskonstant som parameter"
  
! #: config/nvptx/nvptx.cc:5923
  #, fuzzy, gcc-internal-format
  msgid "%qE attribute not allowed with auto storage class"
  msgstr "sektionsegenskaben er ikke tilladt for '%s'"
  
! #: config/nvptx/nvptx.cc:6368
  #, gcc-internal-format
  msgid "barrier value must be within [0,15]"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:6381
  #, fuzzy, gcc-internal-format
  #| msgid "left argument must be a slice"
  msgid "complement argument must be constant"
  msgstr "venstre parameter skal vÃ¦re en skive"
  
! #: config/nvptx/nvptx.cc:6721
  #, gcc-internal-format
  msgid "using %<vector_length (%d)%> due to call to vector-partitionable routine, ignoring %d"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:6729
  #, gcc-internal-format
  msgid "using %<vector_length (%d)%>, ignoring runtime setting"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:6743
  #, gcc-internal-format
  msgid "using %<vector_length (%d)%>, ignoring %d"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:7629
  #, gcc-internal-format
  msgid "variable %qD adjusted for OpenACC privatization level: %qs"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:7768
  #, fuzzy, gcc-internal-format
  #| msgid "alias definitions not supported in this configuration; ignored"
  msgid "weak alias definitions not supported in this configuration"
  msgstr "aliasdefinitioner er ikke understÃ¸ttet i denne konfiguration; ignoreret"
  
! #: config/nvptx/nvptx.cc:7781
  #, fuzzy, gcc-internal-format
  #| msgid "alias definitions not supported in this configuration; ignored"
  msgid "non-function alias definitions not supported in this configuration"
--- 47312,47397 ----
  msgid "option %s is not supported together with %<-fopenacc%>"
  msgstr "integrerede funktioner understÃ¸ttes ikke for denne returvÃ¦rditype"
  
! #: config/nvptx/nvptx.cc:348
  #, gcc-internal-format
  msgid "PTX version (%<-mptx%>) needs to be at least %s to support selected %<-misa%> (sm_%s)"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:365
  #, gcc-internal-format
  msgid "%<-march=%> must be specified"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:388
  #, fuzzy, gcc-internal-format
  #| msgid "passing floating point arguments in fp regs not yet supported"
  msgid "not generating patch area, nops not supported"
  msgstr "overbringelse af kommatalsparametre i kommatalsregistre er ikke understÃ¸ttet endnu"
  
! #: config/nvptx/nvptx.cc:485
  #, gcc-internal-format
  msgid "static initialization of variable %q+D in %<.shared%> memory is not supported"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:2415
  #, gcc-internal-format
  msgid "cannot emit unaligned pointers in ptx assembly"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:2665
  #, gcc-internal-format
  msgid "PTX does not support weak declarations (only weak definitions)"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:5906
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute requires an integer constant argument"
  msgid "%qE attribute requires a void return type"
  msgstr "egenskaben '%s' krÃ¦ver en heltalskonstant som parameter"
  
! #: config/nvptx/nvptx.cc:5929
  #, fuzzy, gcc-internal-format
  msgid "%qE attribute not allowed with auto storage class"
  msgstr "sektionsegenskaben er ikke tilladt for '%s'"
  
! #: config/nvptx/nvptx.cc:6374
  #, gcc-internal-format
  msgid "barrier value must be within [0,15]"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:6387
  #, fuzzy, gcc-internal-format
  #| msgid "left argument must be a slice"
  msgid "complement argument must be constant"
  msgstr "venstre parameter skal vÃ¦re en skive"
  
! #: config/nvptx/nvptx.cc:6727
  #, gcc-internal-format
  msgid "using %<vector_length (%d)%> due to call to vector-partitionable routine, ignoring %d"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:6735
  #, gcc-internal-format
  msgid "using %<vector_length (%d)%>, ignoring runtime setting"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:6749
  #, gcc-internal-format
  msgid "using %<vector_length (%d)%>, ignoring %d"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:7635
  #, gcc-internal-format
  msgid "variable %qD adjusted for OpenACC privatization level: %qs"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:7774
  #, fuzzy, gcc-internal-format
  #| msgid "alias definitions not supported in this configuration; ignored"
  msgid "weak alias definitions not supported in this configuration"
  msgstr "aliasdefinitioner er ikke understÃ¸ttet i denne konfiguration; ignoreret"
  
! #: config/nvptx/nvptx.cc:7787
  #, fuzzy, gcc-internal-format
  #| msgid "alias definitions not supported in this configuration; ignored"
  msgid "non-function alias definitions not supported in this configuration"
*************** msgstr "%qE-egenskaben krÃ¦ver en heltal
*** 47835,47937 ****
  msgid "invalid RVV vector size %qd, expected size is %qd based on LMUL of type and %qs"
  msgstr ""
  
! #: config/riscv/riscv.cc:10571
  #, gcc-internal-format
  msgid "%<-mdiv%> requires %<-march%> to subsume the %<M%> extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10576
  #, gcc-internal-format
  msgid "Currently the %<V%> implementation requires the %<M%> extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10636
  #, gcc-internal-format
  msgid "Current RISC-V GCC does not support VLEN greater than 4096bit for 'V' Extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10642
  #, fuzzy, gcc-internal-format
  #| msgid "target CPU does not support APCS-32"
  msgid "Current RISC-V GCC does not support RVV in big-endian mode"
  msgstr "mÃ¥lprocessoren understÃ¸tter ikke APCS-32"
  
! #: config/riscv/riscv.cc:10682 config/riscv/riscv.cc:10685
  #, fuzzy, gcc-internal-format
  #| msgid "code model %qs not supported in the %s bit mode"
  msgid "code model %qs with %qs"
  msgstr "kodemodellen %qs er ikke understÃ¸ttet i %s bit-tilstand"
  
! #: config/riscv/riscv.cc:10714
  #, gcc-internal-format
  msgid "requested ABI requires %<-march%> to subsume the %qc extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10721
  #, gcc-internal-format
  msgid "rv32e requires ilp32e ABI"
  msgstr ""
  
! #: config/riscv/riscv.cc:10723
  #, gcc-internal-format
  msgid "rv64e requires lp64e ABI"
  msgstr ""
  
! #: config/riscv/riscv.cc:10728
  #, fuzzy, gcc-internal-format
  #| msgid "%s does not support the `%%%c' %s format"
  msgid "ILP32E ABI does not support the %qc extension"
  msgstr "%s understÃ¸tter ikke '%%%c' %s-formateringen"
  
! #: config/riscv/riscv.cc:10733
  #, gcc-internal-format
  msgid "LP64E ABI is marked for deprecation in GCC"
  msgstr ""
  
! #: config/riscv/riscv.cc:10734
  msgid "if you need LP64E please notify the GCC project via %{PR116152%}"
  msgstr ""
  
! #: config/riscv/riscv.cc:10742
  #, gcc-internal-format
  msgid "z*inx requires ABI ilp32, ilp32e, lp64 or lp64e"
  msgstr ""
  
! #: config/riscv/riscv.cc:10746
  #, fuzzy, gcc-internal-format
  #| msgid "--resource requires -o"
  msgid "ABI requires %<-march=rv%d%>"
  msgstr "--resource pÃ¥krÃ¦ver -o"
  
! #: config/riscv/riscv.cc:10756
  #, fuzzy, gcc-internal-format
  #| msgid "-mpreferred-stack-boundary=%d is not between %d and 12"
  msgid "%<-mpreferred-stack-boundary=%d%> must be between %d and %d"
  msgstr "-mpreferred-stack-boundary=%d er ikke mellem %d og 12"
  
! #: config/riscv/riscv.cc:10769
  #, gcc-internal-format
  msgid "%<-mriscv-attribute%> RISC-V ELF attribute requires GNU as 2.32 [%<-mriscv-attribute%>]"
  msgstr ""
  
! #: config/riscv/riscv.cc:10796 config/rs6000/rs6000.cc:4530
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not a valid class name"
  msgid "%qs is not a valid base register in %qs"
  msgstr "'%s' er et ugyldigt klassenavn"
  
! #: config/riscv/riscv.cc:10810 config/rs6000/rs6000.cc:4513
  #, fuzzy, gcc-internal-format
  msgid "%qs is not a valid number in %qs"
  msgstr "%s understÃ¸tter ikke %s"
  
! #: config/riscv/riscv.cc:11305
  #, fuzzy, gcc-internal-format
  #| msgid "`-%c' option must have argument"
  msgid "%qs function cannot have different interrupt type"
  msgstr "tilvalget '-%c' skal have en parameter"
  
! #: config/riscv/riscv.cc:11880
  #, gcc-internal-format
  msgid "cannot allocate vl register for %qs on this target"
  msgstr ""
--- 47844,47946 ----
  msgid "invalid RVV vector size %qd, expected size is %qd based on LMUL of type and %qs"
  msgstr ""
  
! #: config/riscv/riscv.cc:10580
  #, gcc-internal-format
  msgid "%<-mdiv%> requires %<-march%> to subsume the %<M%> extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10585
  #, gcc-internal-format
  msgid "Currently the %<V%> implementation requires the %<M%> extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10645
  #, gcc-internal-format
  msgid "Current RISC-V GCC does not support VLEN greater than 4096bit for 'V' Extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10651
  #, fuzzy, gcc-internal-format
  #| msgid "target CPU does not support APCS-32"
  msgid "Current RISC-V GCC does not support RVV in big-endian mode"
  msgstr "mÃ¥lprocessoren understÃ¸tter ikke APCS-32"
  
! #: config/riscv/riscv.cc:10691 config/riscv/riscv.cc:10694
  #, fuzzy, gcc-internal-format
  #| msgid "code model %qs not supported in the %s bit mode"
  msgid "code model %qs with %qs"
  msgstr "kodemodellen %qs er ikke understÃ¸ttet i %s bit-tilstand"
  
! #: config/riscv/riscv.cc:10723
  #, gcc-internal-format
  msgid "requested ABI requires %<-march%> to subsume the %qc extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10730
  #, gcc-internal-format
  msgid "rv32e requires ilp32e ABI"
  msgstr ""
  
! #: config/riscv/riscv.cc:10732
  #, gcc-internal-format
  msgid "rv64e requires lp64e ABI"
  msgstr ""
  
! #: config/riscv/riscv.cc:10737
  #, fuzzy, gcc-internal-format
  #| msgid "%s does not support the `%%%c' %s format"
  msgid "ILP32E ABI does not support the %qc extension"
  msgstr "%s understÃ¸tter ikke '%%%c' %s-formateringen"
  
! #: config/riscv/riscv.cc:10742
  #, gcc-internal-format
  msgid "LP64E ABI is marked for deprecation in GCC"
  msgstr ""
  
! #: config/riscv/riscv.cc:10743
  msgid "if you need LP64E please notify the GCC project via %{PR116152%}"
  msgstr ""
  
! #: config/riscv/riscv.cc:10751
  #, gcc-internal-format
  msgid "z*inx requires ABI ilp32, ilp32e, lp64 or lp64e"
  msgstr ""
  
! #: config/riscv/riscv.cc:10755
  #, fuzzy, gcc-internal-format
  #| msgid "--resource requires -o"
  msgid "ABI requires %<-march=rv%d%>"
  msgstr "--resource pÃ¥krÃ¦ver -o"
  
! #: config/riscv/riscv.cc:10765
  #, fuzzy, gcc-internal-format
  #| msgid "-mpreferred-stack-boundary=%d is not between %d and 12"
  msgid "%<-mpreferred-stack-boundary=%d%> must be between %d and %d"
  msgstr "-mpreferred-stack-boundary=%d er ikke mellem %d og 12"
  
! #: config/riscv/riscv.cc:10778
  #, gcc-internal-format
  msgid "%<-mriscv-attribute%> RISC-V ELF attribute requires GNU as 2.32 [%<-mriscv-attribute%>]"
  msgstr ""
  
! #: config/riscv/riscv.cc:10805 config/rs6000/rs6000.cc:4530
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not a valid class name"
  msgid "%qs is not a valid base register in %qs"
  msgstr "'%s' er et ugyldigt klassenavn"
  
! #: config/riscv/riscv.cc:10819 config/rs6000/rs6000.cc:4513
  #, fuzzy, gcc-internal-format
  msgid "%qs is not a valid number in %qs"
  msgstr "%s understÃ¸tter ikke %s"
  
! #: config/riscv/riscv.cc:11314
  #, fuzzy, gcc-internal-format
  #| msgid "`-%c' option must have argument"
  msgid "%qs function cannot have different interrupt type"
  msgstr "tilvalget '-%c' skal have en parameter"
  
! #: config/riscv/riscv.cc:11889
  #, gcc-internal-format
  msgid "cannot allocate vl register for %qs on this target"
  msgstr ""
*************** msgstr ""
*** 48568,48585 ****
  msgid "Virtual function multiversioning not supported"
  msgstr "stakgrÃ¦nseudtryk understÃ¸ttes ikke"
  
! #: config/rs6000/rs6000.cc:28798
  #, gcc-internal-format
  msgid "the result for the xxspltidp instruction is undefined for subnormal input values"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:29276
  #, fuzzy, gcc-internal-format
  #| msgid "a -ifile option requires a -map option"
  msgid "type %<__vector_quad%> requires the %qs option"
  msgstr "et '-ifile'-tilvalg krÃ¦ver et '-map'-tilvalg"
  
! #: config/rs6000/rs6000.cc:29281
  #, fuzzy, gcc-internal-format
  #| msgid "a -ifile option requires a -map option"
  msgid "type %<__vector_pair%> requires the %qs option"
--- 48577,48594 ----
  msgid "Virtual function multiversioning not supported"
  msgstr "stakgrÃ¦nseudtryk understÃ¸ttes ikke"
  
! #: config/rs6000/rs6000.cc:28801
  #, gcc-internal-format
  msgid "the result for the xxspltidp instruction is undefined for subnormal input values"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:29279
  #, fuzzy, gcc-internal-format
  #| msgid "a -ifile option requires a -map option"
  msgid "type %<__vector_quad%> requires the %qs option"
  msgstr "et '-ifile'-tilvalg krÃ¦ver et '-map'-tilvalg"
  
! #: config/rs6000/rs6000.cc:29284
  #, fuzzy, gcc-internal-format
  #| msgid "a -ifile option requires a -map option"
  msgid "type %<__vector_pair%> requires the %qs option"
*************** msgstr ""
*** 48832,48964 ****
  msgid "nested functions cannot be profiled with %<-mfentry%> on s390"
  msgstr "funktionen '%s' kan ikke erklÃ¦res 'mutable'"
  
! #: config/s390/s390.cc:16296
  #, fuzzy, gcc-internal-format
  msgid "64-bit ABI not supported in ESA/390 mode"
  msgstr "kodemodellen %s er ikke understÃ¸ttet i PIC-tilstand"
  
! #: config/s390/s390.cc:16303
  #, gcc-internal-format
  msgid "thunk-inline is only supported with %<-mindirect-branch-jump%>"
  msgstr ""
  
! #: config/s390/s390.cc:16338
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Use hardware floating point instructions"
  msgid "hardware vector support not available on %s"
  msgstr "Benyt hardware-kommatalsinstruktioner"
  
! #: config/s390/s390.cc:16341
  #, fuzzy, gcc-internal-format
  #| msgid "Use hardware floating point instructions"
  msgid "hardware vector support not available with %<-msoft-float%>"
  msgstr "Benyt hardware-kommatalsinstruktioner"
  
! #: config/s390/s390.cc:16370
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Use hardware floating point instructions"
  msgid "hardware decimal floating-point instructions not available on %s"
  msgstr "Benyt hardware-kommatalsinstruktioner"
  
! #: config/s390/s390.cc:16374
  #, fuzzy, gcc-internal-format
  #| msgid "Use hardware floating point instructions"
  msgid "hardware decimal floating-point instructions not available in ESA/390 mode"
  msgstr "Benyt hardware-kommatalsinstruktioner"
  
! #: config/s390/s390.cc:16386
  #, gcc-internal-format
  msgid "%<-mhard-dfp%> cannot be used in conjunction with %<-msoft-float%>"
  msgstr ""
  
! #: config/s390/s390.cc:16395
  #, gcc-internal-format
  msgid "%<-mbackchain%> %<-mpacked-stack%> %<-mhard-float%> are not supported in combination"
  msgstr ""
  
! #: config/s390/s390.cc:16401
  #, gcc-internal-format
  msgid "stack size must be greater than the stack guard value"
  msgstr ""
  
! #: config/s390/s390.cc:16403
  #, gcc-internal-format
  msgid "stack size must not be greater than 64k"
  msgstr ""
  
! #: config/s390/s390.cc:16406
  #, gcc-internal-format
  msgid "%<-mstack-guard%> implies use of %<-mstack-size%>"
  msgstr ""
  
! #: config/s390/s390.cc:16419
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-prologue-check%> requires integer in range 0-4095"
  msgstr ""
  
! #: config/s390/s390.cc:16422
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-prologue-target%> requires integer in range 0-4095"
  msgstr ""
  
! #: config/s390/s390.cc:16425
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-epilogue-check%> requires integer in range 0-4095"
  msgstr ""
  
! #: config/s390/s390.cc:16428
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-epilogue-target%> requires integer in range 0-4095"
  msgstr ""
  
! #: config/s390/s390.cc:16492
  #, fuzzy, gcc-internal-format
  msgid "%<-mfentry%> is supported only for 64-bit CPUs"
  msgstr "-f%s er ikke understÃ¸ttet: ignoreret"
  
  #. argument is not a plain number
! #: config/s390/s390.cc:16528
  #, fuzzy, gcc-internal-format
  msgid "arguments to %qs should be non-negative integers"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant uden fortegn"
  
! #: config/s390/s390.cc:16535
  #, fuzzy, gcc-internal-format
  #| msgid "argument to `%s' attribute larger than %d"
  msgid "argument to %qs is too large (max. %d)"
  msgstr "parameter til egenskaben '%s' er stÃ¸rre end %d"
  
! #: config/s390/s390.cc:16566
  #, gcc-internal-format
  msgid "%<-mno-pic-data-is-text-relative%> cannot be used without %<-fpic%>/%<-fPIC%>"
  msgstr ""
  
  #. Value is not allowed for the target attribute.
! #: config/s390/s390.cc:16733
  #, fuzzy, gcc-internal-format
  #| msgid "__builtin_trap not supported by this target"
  msgid "value %qs is not supported by attribute %<target%>"
  msgstr "__builtin_trap understÃ¸ttes ikke pÃ¥ denne mÃ¥larkitektur"
  
! #: config/s390/s390.cc:17792
  #, fuzzy, gcc-internal-format
  #| msgid "invalid constant"
  msgid "invalid cc output constraint: %qs"
  msgstr "ugyldig konstant:"
  
! #: config/s390/s390.cc:17797
  #, fuzzy, gcc-internal-format
  #| msgid "inline float constants not supported on this host"
  msgid "multiple cc output constraints not supported"
  msgstr "integrerede kommatalskonstanter er ikke understÃ¸ttede pÃ¥ denne vÃ¦rt"
  
! #: config/s390/s390.cc:17802
  #, fuzzy, gcc-internal-format
  #| msgid "asm-specifier for variable `%s' conflicts with asm clobber list"
  msgid "%<asm%> specifier for cc output conflicts with %<asm%> clobber list"
  msgstr "asm-anvisning for variablen '%s' strider mod asm-overskrivelsesliste"
  
! #: config/s390/s390.cc:17808
  #, fuzzy, gcc-internal-format
  #| msgid "invalid type argument"
  msgid "invalid type for cc output constraint"
--- 48841,48973 ----
  msgid "nested functions cannot be profiled with %<-mfentry%> on s390"
  msgstr "funktionen '%s' kan ikke erklÃ¦res 'mutable'"
  
! #: config/s390/s390.cc:16323
  #, fuzzy, gcc-internal-format
  msgid "64-bit ABI not supported in ESA/390 mode"
  msgstr "kodemodellen %s er ikke understÃ¸ttet i PIC-tilstand"
  
! #: config/s390/s390.cc:16330
  #, gcc-internal-format
  msgid "thunk-inline is only supported with %<-mindirect-branch-jump%>"
  msgstr ""
  
! #: config/s390/s390.cc:16365
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Use hardware floating point instructions"
  msgid "hardware vector support not available on %s"
  msgstr "Benyt hardware-kommatalsinstruktioner"
  
! #: config/s390/s390.cc:16368
  #, fuzzy, gcc-internal-format
  #| msgid "Use hardware floating point instructions"
  msgid "hardware vector support not available with %<-msoft-float%>"
  msgstr "Benyt hardware-kommatalsinstruktioner"
  
! #: config/s390/s390.cc:16397
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Use hardware floating point instructions"
  msgid "hardware decimal floating-point instructions not available on %s"
  msgstr "Benyt hardware-kommatalsinstruktioner"
  
! #: config/s390/s390.cc:16401
  #, fuzzy, gcc-internal-format
  #| msgid "Use hardware floating point instructions"
  msgid "hardware decimal floating-point instructions not available in ESA/390 mode"
  msgstr "Benyt hardware-kommatalsinstruktioner"
  
! #: config/s390/s390.cc:16413
  #, gcc-internal-format
  msgid "%<-mhard-dfp%> cannot be used in conjunction with %<-msoft-float%>"
  msgstr ""
  
! #: config/s390/s390.cc:16422
  #, gcc-internal-format
  msgid "%<-mbackchain%> %<-mpacked-stack%> %<-mhard-float%> are not supported in combination"
  msgstr ""
  
! #: config/s390/s390.cc:16428
  #, gcc-internal-format
  msgid "stack size must be greater than the stack guard value"
  msgstr ""
  
! #: config/s390/s390.cc:16430
  #, gcc-internal-format
  msgid "stack size must not be greater than 64k"
  msgstr ""
  
! #: config/s390/s390.cc:16433
  #, gcc-internal-format
  msgid "%<-mstack-guard%> implies use of %<-mstack-size%>"
  msgstr ""
  
! #: config/s390/s390.cc:16446
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-prologue-check%> requires integer in range 0-4095"
  msgstr ""
  
! #: config/s390/s390.cc:16449
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-prologue-target%> requires integer in range 0-4095"
  msgstr ""
  
! #: config/s390/s390.cc:16452
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-epilogue-check%> requires integer in range 0-4095"
  msgstr ""
  
! #: config/s390/s390.cc:16455
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-epilogue-target%> requires integer in range 0-4095"
  msgstr ""
  
! #: config/s390/s390.cc:16519
  #, fuzzy, gcc-internal-format
  msgid "%<-mfentry%> is supported only for 64-bit CPUs"
  msgstr "-f%s er ikke understÃ¸ttet: ignoreret"
  
  #. argument is not a plain number
! #: config/s390/s390.cc:16555
  #, fuzzy, gcc-internal-format
  msgid "arguments to %qs should be non-negative integers"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant uden fortegn"
  
! #: config/s390/s390.cc:16562
  #, fuzzy, gcc-internal-format
  #| msgid "argument to `%s' attribute larger than %d"
  msgid "argument to %qs is too large (max. %d)"
  msgstr "parameter til egenskaben '%s' er stÃ¸rre end %d"
  
! #: config/s390/s390.cc:16593
  #, gcc-internal-format
  msgid "%<-mno-pic-data-is-text-relative%> cannot be used without %<-fpic%>/%<-fPIC%>"
  msgstr ""
  
  #. Value is not allowed for the target attribute.
! #: config/s390/s390.cc:16760
  #, fuzzy, gcc-internal-format
  #| msgid "__builtin_trap not supported by this target"
  msgid "value %qs is not supported by attribute %<target%>"
  msgstr "__builtin_trap understÃ¸ttes ikke pÃ¥ denne mÃ¥larkitektur"
  
! #: config/s390/s390.cc:17819
  #, fuzzy, gcc-internal-format
  #| msgid "invalid constant"
  msgid "invalid cc output constraint: %qs"
  msgstr "ugyldig konstant:"
  
! #: config/s390/s390.cc:17824
  #, fuzzy, gcc-internal-format
  #| msgid "inline float constants not supported on this host"
  msgid "multiple cc output constraints not supported"
  msgstr "integrerede kommatalskonstanter er ikke understÃ¸ttede pÃ¥ denne vÃ¦rt"
  
! #: config/s390/s390.cc:17829
  #, fuzzy, gcc-internal-format
  #| msgid "asm-specifier for variable `%s' conflicts with asm clobber list"
  msgid "%<asm%> specifier for cc output conflicts with %<asm%> clobber list"
  msgstr "asm-anvisning for variablen '%s' strider mod asm-overskrivelsesliste"
  
! #: config/s390/s390.cc:17835
  #, fuzzy, gcc-internal-format
  #| msgid "invalid type argument"
  msgid "invalid type for cc output constraint"
*************** msgstr "funktion kan ikke indbygges"
*** 49375,49449 ****
  msgid "subprogram %q+F not marked %<Inline%>"
  msgstr "parameteren '%D' erklÃ¦ret void"
  
! #: ada/gcc-interface/utils.cc:4427
  #, fuzzy, gcc-internal-format
  #| msgid "invalid vector type for attribute `%s'"
  msgid "invalid element type for attribute %qs"
  msgstr "ugyldig vektortype for egenskaben '%s'"
  
! #: ada/gcc-interface/utils.cc:4451
  #, fuzzy, gcc-internal-format
  #| msgid "number of arguments doesn't match prototype"
  msgid "number of components of vector not a power of two"
  msgstr "antallet af parametre passer ikke til prototypen"
  
! #: ada/gcc-interface/utils.cc:6705 ada/gcc-interface/utils.cc:6883
! #: ada/gcc-interface/utils.cc:7123
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute ignored"
  msgid "%qs attribute ignored"
  msgstr "egenskaben '%s' ignoreret"
  
! #: ada/gcc-interface/utils.cc:6760
  #, fuzzy, gcc-internal-format
  #| msgid "nonnull attribute without arguments on a non-prototype"
  msgid "%qs attribute without arguments on a non-prototype"
  msgstr "ikke-nul egenskab uden parametre til en ikke-prototype"
  
! #: ada/gcc-interface/utils.cc:6775
  #, fuzzy, gcc-internal-format
  #| msgid "nonnull argument has invalid operand number (arg %lu)"
  msgid "%qs argument has invalid operand number (argument %lu)"
  msgstr "ikke-nul parameter har ugyldig operandnummer (parameter %lu)"
  
! #: ada/gcc-interface/utils.cc:6797
  #, fuzzy, gcc-internal-format
  #| msgid "nonnull argument with out-of-range operand number (arg %lu, operand %lu)"
  msgid "%qs argument with out-of-range operand number (argument %lu, operand %lu)"
  msgstr "ikke-nul parameter med operandnummer uden for det gyldig interval (parameter %lu, operand %lu)"
  
! #: ada/gcc-interface/utils.cc:6806
  #, fuzzy, gcc-internal-format
  #| msgid "nonnull argument references non-pointer operand (arg %lu, operand %lu)"
  msgid "%qs argument references non-pointer operand (argument %lu, operand %lu)"
  msgstr "ikke-nul parameter refererer til ikke-henvisningsoperand (parameter %lu, operand %lu)"
  
! #: ada/gcc-interface/utils.cc:6827
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute requires an integer constant argument"
  msgid "%qs attribute requires prototypes with named arguments"
  msgstr "egenskaben '%s' krÃ¦ver en heltalskonstant som parameter"
  
! #: ada/gcc-interface/utils.cc:6836
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute only applies to functions"
  msgid "%qs attribute only applies to variadic functions"
  msgstr "egenskaben '%s' kan kun anvendes sammen med funktioner"
  
! #: ada/gcc-interface/utils.cc:7083 d/d-attribs.cc:362 d/d-attribs.cc:488
  #: rust/rust-attribs.cc:176
  #, fuzzy, gcc-internal-format
  msgid "%qE attribute has no effect"
  msgstr "%s har ingen %s"
  
! #: ada/gcc-interface/utils.cc:7418
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute only applies to variables"
  msgid "attribute %qs applies to array types only"
  msgstr "egenskaben '%s' kan kun anvendes pÃ¥ variabler"
  
! #: c/c-convert.cc:104 c/c-typeck.cc:2730 c/c-typeck.cc:14860 cp/typeck.cc:2520
! #: cp/typeck.cc:9603 cp/typeck.cc:10396 d/d-convert.cc:262
  #, gcc-internal-format
  msgid "void value not ignored as it ought to be"
  msgstr "tom vÃ¦rdi er ikke ignoreret som den burde vÃ¦re"
--- 49384,49458 ----
  msgid "subprogram %q+F not marked %<Inline%>"
  msgstr "parameteren '%D' erklÃ¦ret void"
  
! #: ada/gcc-interface/utils.cc:4429
  #, fuzzy, gcc-internal-format
  #| msgid "invalid vector type for attribute `%s'"
  msgid "invalid element type for attribute %qs"
  msgstr "ugyldig vektortype for egenskaben '%s'"
  
! #: ada/gcc-interface/utils.cc:4453
  #, fuzzy, gcc-internal-format
  #| msgid "number of arguments doesn't match prototype"
  msgid "number of components of vector not a power of two"
  msgstr "antallet af parametre passer ikke til prototypen"
  
! #: ada/gcc-interface/utils.cc:6707 ada/gcc-interface/utils.cc:6885
! #: ada/gcc-interface/utils.cc:7125
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute ignored"
  msgid "%qs attribute ignored"
  msgstr "egenskaben '%s' ignoreret"
  
! #: ada/gcc-interface/utils.cc:6762
  #, fuzzy, gcc-internal-format
  #| msgid "nonnull attribute without arguments on a non-prototype"
  msgid "%qs attribute without arguments on a non-prototype"
  msgstr "ikke-nul egenskab uden parametre til en ikke-prototype"
  
! #: ada/gcc-interface/utils.cc:6777
  #, fuzzy, gcc-internal-format
  #| msgid "nonnull argument has invalid operand number (arg %lu)"
  msgid "%qs argument has invalid operand number (argument %lu)"
  msgstr "ikke-nul parameter har ugyldig operandnummer (parameter %lu)"
  
! #: ada/gcc-interface/utils.cc:6799
  #, fuzzy, gcc-internal-format
  #| msgid "nonnull argument with out-of-range operand number (arg %lu, operand %lu)"
  msgid "%qs argument with out-of-range operand number (argument %lu, operand %lu)"
  msgstr "ikke-nul parameter med operandnummer uden for det gyldig interval (parameter %lu, operand %lu)"
  
! #: ada/gcc-interface/utils.cc:6808
  #, fuzzy, gcc-internal-format
  #| msgid "nonnull argument references non-pointer operand (arg %lu, operand %lu)"
  msgid "%qs argument references non-pointer operand (argument %lu, operand %lu)"
  msgstr "ikke-nul parameter refererer til ikke-henvisningsoperand (parameter %lu, operand %lu)"
  
! #: ada/gcc-interface/utils.cc:6829
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute requires an integer constant argument"
  msgid "%qs attribute requires prototypes with named arguments"
  msgstr "egenskaben '%s' krÃ¦ver en heltalskonstant som parameter"
  
! #: ada/gcc-interface/utils.cc:6838
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute only applies to functions"
  msgid "%qs attribute only applies to variadic functions"
  msgstr "egenskaben '%s' kan kun anvendes sammen med funktioner"
  
! #: ada/gcc-interface/utils.cc:7085 d/d-attribs.cc:362 d/d-attribs.cc:488
  #: rust/rust-attribs.cc:176
  #, fuzzy, gcc-internal-format
  msgid "%qE attribute has no effect"
  msgstr "%s har ingen %s"
  
! #: ada/gcc-interface/utils.cc:7420
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute only applies to variables"
  msgid "attribute %qs applies to array types only"
  msgstr "egenskaben '%s' kan kun anvendes pÃ¥ variabler"
  
! #: c/c-convert.cc:104 c/c-typeck.cc:2730 c/c-typeck.cc:14877 cp/typeck.cc:2520
! #: cp/typeck.cc:9719 cp/typeck.cc:10512 d/d-convert.cc:262
  #, gcc-internal-format
  msgid "void value not ignored as it ought to be"
  msgstr "tom vÃ¦rdi er ikke ignoreret som den burde vÃ¦re"
*************** msgstr ""
*** 49524,49531 ****
  msgid "underspecified declaration of %qE, which is already declared in this scope"
  msgstr "'%D' er allerede erklÃ¦ret i dette navnerum"
  
! #: c/c-decl.cc:1732 c/c-decl.cc:7925 c/c-decl.cc:8924 c/c-decl.cc:9859
! #: c/c-decl.cc:9865 c/c-decl.cc:10092
  #, fuzzy, gcc-internal-format
  msgid "originally defined here"
  msgstr "  oprindelig definition er her"
--- 49533,49540 ----
  msgid "underspecified declaration of %qE, which is already declared in this scope"
  msgstr "'%D' er allerede erklÃ¦ret i dette navnerum"
  
! #: c/c-decl.cc:1732 c/c-decl.cc:7925 c/c-decl.cc:8924 c/c-decl.cc:9862
! #: c/c-decl.cc:9868 c/c-decl.cc:10096
  #, fuzzy, gcc-internal-format
  msgid "originally defined here"
  msgstr "  oprindelig definition er her"
*************** msgstr "'%s' er ikke erklÃ¦ret (fÃ¸rst b
*** 49862,49868 ****
  msgid "each undeclared identifier is reported only once for each function it appears in"
  msgstr "(et kaldenavn der ikke er erklÃ¦ret, rapporteres kun Ã©n gang per funktion)"
  
! #: c/c-decl.cc:4055 cp/decl.cc:3632
  #, fuzzy, gcc-internal-format
  #| msgid "label %s referenced outside of any function"
  msgid "label %qE referenced outside of any function"
--- 49871,49877 ----
  msgid "each undeclared identifier is reported only once for each function it appears in"
  msgstr "(et kaldenavn der ikke er erklÃ¦ret, rapporteres kun Ã©n gang per funktion)"
  
! #: c/c-decl.cc:4055 cp/decl.cc:3630
  #, fuzzy, gcc-internal-format
  #| msgid "label %s referenced outside of any function"
  msgid "label %qE referenced outside of any function"
*************** msgstr "overlÃ¸b i konstant udtryk"
*** 49902,49908 ****
  msgid "duplicate label declaration %qE"
  msgstr "etiketten '%s' er blevet erklÃ¦ret mere end Ã©n gang"
  
! #: c/c-decl.cc:4278 cp/decl.cc:4135
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate label `%D'"
  msgid "duplicate label %qD"
--- 49911,49917 ----
  msgid "duplicate label declaration %qE"
  msgstr "etiketten '%s' er blevet erklÃ¦ret mere end Ã©n gang"
  
! #: c/c-decl.cc:4278 cp/decl.cc:4133
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate label `%D'"
  msgid "duplicate label %qD"
*************** msgstr "ubrugelig %<_Alignas%> i tom erk
*** 50087,50093 ****
  msgid "invalid use of attributes in empty declaration"
  msgstr "ugyldig brug af skabelonsnavn '%E' i erklÃ¦ring"
  
! #: c/c-decl.cc:5264 c/c-parser.cc:2513
  #, gcc-internal-format
  msgid "empty declaration"
  msgstr "tom erklÃ¦ring"
--- 50096,50102 ----
  msgid "invalid use of attributes in empty declaration"
  msgstr "ugyldig brug af skabelonsnavn '%E' i erklÃ¦ring"
  
! #: c/c-decl.cc:5264 c/c-parser.cc:2558
  #, gcc-internal-format
  msgid "empty declaration"
  msgstr "tom erklÃ¦ring"
*************** msgstr "ISO C90 understÃ¸tter ikke %<[*]
*** 50105,50116 ****
  #. C99 6.7.5.2p4
  #. A function definition isn't function prototype scope C99 6.2.1p4.
  #. C99 6.7.5.2p4
! #: c/c-decl.cc:5346 c/c-decl.cc:8448 c/c-decl.cc:10986
  #, gcc-internal-format
  msgid "%<[*]%> not allowed in other than function prototype scope"
  msgstr ""
  
! #: c/c-decl.cc:5539 cp/decl2.cc:1960 cp/name-lookup.cc:8993
  #, fuzzy, gcc-internal-format
  msgid "%<omp::%s%> not allowed to be specified in this context"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
--- 50114,50125 ----
  #. C99 6.7.5.2p4
  #. A function definition isn't function prototype scope C99 6.2.1p4.
  #. C99 6.7.5.2p4
! #: c/c-decl.cc:5346 c/c-decl.cc:8448 c/c-decl.cc:10990
  #, gcc-internal-format
  msgid "%<[*]%> not allowed in other than function prototype scope"
  msgstr ""
  
! #: c/c-decl.cc:5539 cp/decl2.cc:1960 cp/name-lookup.cc:8996
  #, fuzzy, gcc-internal-format
  msgid "%<omp::%s%> not allowed to be specified in this context"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
*************** msgstr "'%D' blev ikke erklÃ¦ret i dette
*** 50120,50126 ****
  msgid "%q+D is usually a function"
  msgstr "%q+D er normalt en funktion"
  
! #: c/c-decl.cc:5627 c/c-decl.cc:10816 cp/decl.cc:18580
  #, fuzzy, gcc-internal-format
  msgid "no previous declaration for %qD"
  msgstr "ingen tidligere erklÃ¦ring af '%s'"
--- 50129,50135 ----
  msgid "%q+D is usually a function"
  msgstr "%q+D er normalt en funktion"
  
! #: c/c-decl.cc:5627 c/c-decl.cc:10820 cp/decl.cc:18578
  #, fuzzy, gcc-internal-format
  msgid "no previous declaration for %qD"
  msgstr "ingen tidligere erklÃ¦ring af '%s'"
*************** msgstr "kan ikke anbringe et objekt med
*** 50204,50210 ****
  msgid "uninitialized %<const %D%> is invalid in C++"
  msgstr "konstant '%D' uden startvÃ¦rdi"
  
! #: c/c-decl.cc:6178 cp/decl.cc:9535
  #, gcc-internal-format
  msgid "%q+D in declare target directive does not have mappable type"
  msgstr ""
--- 50213,50219 ----
  msgid "uninitialized %<const %D%> is invalid in C++"
  msgstr "konstant '%D' uden startvÃ¦rdi"
  
! #: c/c-decl.cc:6178 cp/decl.cc:9533
  #, gcc-internal-format
  msgid "%q+D in declare target directive does not have mappable type"
  msgstr ""
*************** msgstr "'restrict' optrÃ¦der mere end Ã©
*** 50371,50377 ****
  msgid "conflicting named address spaces (%s vs %s)"
  msgstr "modstridende superklassenavn '%s'"
  
! #: c/c-decl.cc:7080 c/c-parser.cc:3794
  #, gcc-internal-format
  msgid "%<_Atomic%>-qualified array type"
  msgstr ""
--- 50380,50386 ----
  msgid "conflicting named address spaces (%s vs %s)"
  msgstr "modstridende superklassenavn '%s'"
  
! #: c/c-decl.cc:7080 c/c-parser.cc:3839
  #, gcc-internal-format
  msgid "%<_Atomic%>-qualified array type"
  msgstr ""
*************** msgstr "lagringsklasse angivet for param
*** 50424,50430 ****
  msgid "storage class specified for unnamed parameter"
  msgstr "lagringsklasse angivet for parameter '%s'"
  
! #: c/c-decl.cc:7141 cp/decl.cc:13709
  #, gcc-internal-format
  msgid "storage class specified for typename"
  msgstr "lagringsklasse angivet for typenavn"
--- 50433,50439 ----
  msgid "storage class specified for unnamed parameter"
  msgstr "lagringsklasse angivet for parameter '%s'"
  
! #: c/c-decl.cc:7141 cp/decl.cc:13707
  #, gcc-internal-format
  msgid "storage class specified for typename"
  msgstr "lagringsklasse angivet for typenavn"
*************** msgstr "typenavn er erklÃ¦ret som en fun
*** 50614,50626 ****
  msgid "function definition has qualified void return type"
  msgstr "funktiondefinition har kvalificeret void-returtype"
  
! #: c/c-decl.cc:7684 cp/decl.cc:14134
  #, gcc-internal-format
  msgid "type qualifiers ignored on function return type"
  msgstr "typemodifikationer ignoreret i funktionsreturtypen"
  
  #: c/c-decl.cc:7723 c/c-decl.cc:7891 c/c-decl.cc:7945 c/c-decl.cc:8039
! #: c/c-decl.cc:8161 c/c-parser.cc:3796
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids qualified function types"
  msgid "%<_Atomic%>-qualified function type"
--- 50623,50635 ----
  msgid "function definition has qualified void return type"
  msgstr "funktiondefinition har kvalificeret void-returtype"
  
! #: c/c-decl.cc:7684 cp/decl.cc:14132
  #, gcc-internal-format
  msgid "type qualifiers ignored on function return type"
  msgstr "typemodifikationer ignoreret i funktionsreturtypen"
  
  #: c/c-decl.cc:7723 c/c-decl.cc:7891 c/c-decl.cc:7945 c/c-decl.cc:8039
! #: c/c-decl.cc:8161 c/c-parser.cc:3841
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids qualified function types"
  msgid "%<_Atomic%>-qualified function type"
*************** msgstr "ISO C forbyder const eller volat
*** 50754,50760 ****
  msgid "a member of a structure or union cannot have a variably modified type"
  msgstr "datamedlem mÃ¥ ikke have variabelt Ã¦ndret type '%T'"
  
! #: c/c-decl.cc:7979 cp/decl.cc:12576
  #, fuzzy, gcc-internal-format
  #| msgid "variable or field declared void"
  msgid "variable or field %qE declared void"
--- 50763,50769 ----
  msgid "a member of a structure or union cannot have a variably modified type"
  msgstr "datamedlem mÃ¥ ikke have variabelt Ã¦ndret type '%T'"
  
! #: c/c-decl.cc:7979 cp/decl.cc:12574
  #, fuzzy, gcc-internal-format
  #| msgid "variable or field declared void"
  msgid "variable or field %qE declared void"
*************** msgstr "variabel eller felt '%s' erklÃ¦r
*** 50836,50848 ****
  msgid "%<constexpr%> object has variably modified type"
  msgstr "parameter mÃ¥ ikke have variabelt Ã¦ndret type '%T'"
  
! #: c/c-decl.cc:8263 c/c-parser.cc:13368
  #, fuzzy, gcc-internal-format
  #| msgid "invalid qualifiers on non-member function type"
  msgid "invalid qualifiers for %<constexpr%> object"
  msgstr "ugyldige modifikationer for ikke-medlemsfunktionstype"
  
! #: c/c-decl.cc:8269 c/c-parser.cc:13371
  #, fuzzy, gcc-internal-format
  #| msgid "invalid return type for member function `%#D'"
  msgid "invalid qualifiers for field of %<constexpr%> object"
--- 50845,50857 ----
  msgid "%<constexpr%> object has variably modified type"
  msgstr "parameter mÃ¥ ikke have variabelt Ã¦ndret type '%T'"
  
! #: c/c-decl.cc:8263 c/c-parser.cc:13413
  #, fuzzy, gcc-internal-format
  #| msgid "invalid qualifiers on non-member function type"
  msgid "invalid qualifiers for %<constexpr%> object"
  msgstr "ugyldige modifikationer for ikke-medlemsfunktionstype"
  
! #: c/c-decl.cc:8269 c/c-parser.cc:13416
  #, fuzzy, gcc-internal-format
  #| msgid "invalid return type for member function `%#D'"
  msgid "invalid qualifiers for field of %<constexpr%> object"
*************** msgstr "skabelonsparameter '%T' er en va
*** 50873,50879 ****
  msgid "object with variably modified type must have no linkage"
  msgstr ""
  
! #: c/c-decl.cc:8454 c/c-decl.cc:10790
  #, fuzzy, gcc-internal-format
  #| msgid "function declaration isn't a prototype"
  msgid "function declaration isn%'t a prototype"
--- 50882,50888 ----
  msgid "object with variably modified type must have no linkage"
  msgstr ""
  
! #: c/c-decl.cc:8454 c/c-decl.cc:10794
  #, fuzzy, gcc-internal-format
  #| msgid "function declaration isn't a prototype"
  msgid "function declaration isn%'t a prototype"
*************** msgstr "indlejret omdefinering af '%s'"
*** 50967,50984 ****
  msgid "nested redefinition of %<struct %E%>"
  msgstr "indlejret omdefinering af '%s'"
  
! #: c/c-decl.cc:8966 c/c-decl.cc:10120
  #, gcc-internal-format
  msgid "defining type in %qs expression is invalid in C++"
  msgstr ""
  
! #: c/c-decl.cc:8972 c/c-decl.cc:10126
  #, fuzzy, gcc-internal-format
  #| msgid "unknown field `%s' specified in initializer"
  msgid "%qT defined in underspecified object initializer"
  msgstr "ukendt felt '%s' angivet i startvÃ¦rdi"
  
! #: c/c-decl.cc:9036 cp/decl.cc:5719 cp/parser.cc:28813
  #, gcc-internal-format
  msgid "declaration does not declare anything"
  msgstr "erklÃ¦ring erklÃ¦rer ikke noget"
--- 50976,50993 ----
  msgid "nested redefinition of %<struct %E%>"
  msgstr "indlejret omdefinering af '%s'"
  
! #: c/c-decl.cc:8966 c/c-decl.cc:10124
  #, gcc-internal-format
  msgid "defining type in %qs expression is invalid in C++"
  msgstr ""
  
! #: c/c-decl.cc:8972 c/c-decl.cc:10130
  #, fuzzy, gcc-internal-format
  #| msgid "unknown field `%s' specified in initializer"
  msgid "%qT defined in underspecified object initializer"
  msgstr "ukendt felt '%s' angivet i startvÃ¦rdi"
  
! #: c/c-decl.cc:9036 cp/decl.cc:5717 cp/parser.cc:28867
  #, gcc-internal-format
  msgid "declaration does not declare anything"
  msgstr "erklÃ¦ring erklÃ¦rer ikke noget"
*************** msgstr "navngivne medlemmer"
*** 51044,51050 ****
  msgid "struct has no members"
  msgstr "%s har intet medlem ved navn '%s'"
  
! #: c/c-decl.cc:9640 cp/decl.cc:15166
  #, fuzzy, gcc-internal-format
  msgid "flexible array member in union is a GCC extension"
  msgstr "fleksibelt tabelmedlem i union"
--- 51053,51059 ----
  msgid "struct has no members"
  msgstr "%s har intet medlem ved navn '%s'"
  
! #: c/c-decl.cc:9640 cp/decl.cc:15164
  #, fuzzy, gcc-internal-format
  msgid "flexible array member in union is a GCC extension"
  msgstr "fleksibelt tabelmedlem i union"
*************** msgstr "fleksibelt tabelmedlem ikke i sl
*** 51059,51403 ****
  msgid "flexible array member in a struct with no named members is a GCC extension"
  msgstr "fleksibelt tabelmedlem i union"
  
! #: c/c-decl.cc:9684
  #, fuzzy, gcc-internal-format
  msgid "structure containing a flexible array member is not at the end of another structure"
  msgstr "fleksibelt tabelmedlem ikke i slutningen af struktur"
  
! #: c/c-decl.cc:9711
  #, fuzzy, gcc-internal-format
  #| msgid "%s is too large"
  msgid "type %qT is too large"
  msgstr "%s er for stor"
  
! #: c/c-decl.cc:9775
  #, fuzzy, gcc-internal-format
  msgid "type punning toggles scalar storage order"
  msgstr "ukendt registernavn '%s'"
  
! #: c/c-decl.cc:9842
  #, gcc-internal-format
  msgid "union cannot be made transparent"
  msgstr "union kan ikke ikke gÃ¸res gennemsigtig"
  
! #: c/c-decl.cc:9856
  #, fuzzy, gcc-internal-format
  msgid "redefinition of struct or union %qT with variably modified type"
  msgstr "omdefinering af '%s'"
  
! #: c/c-decl.cc:9863
  #, fuzzy, gcc-internal-format
  #| msgid "redefinition of `struct %s'"
  msgid "redefinition of struct or union %qT"
  msgstr "omdefinering af 'struct %s'"
  
! #: c/c-decl.cc:10042
  #, fuzzy, gcc-internal-format
  #| msgid "nested redefinition of `%s'"
  msgid "nested redefinition of %<enum %E%>"
  msgstr "indlejret omdefinering af '%s'"
  
! #: c/c-decl.cc:10090
  #, fuzzy, gcc-internal-format
  #| msgid "redeclaration of `enum %s'"
  msgid "redeclaration of %<enum %E%>"
  msgstr "omerklÃ¦ring af 'enum %s'"
  
! #: c/c-decl.cc:10102
  #, gcc-internal-format
  msgid "%<enum%> declared with but defined without fixed underlying type"
  msgstr ""
  
! #: c/c-decl.cc:10189 cp/decl.cc:17838 m2/gm2-gcc/m2type.cc:2088
  #, gcc-internal-format
  msgid "specified mode too small for enumerated values"
  msgstr ""
  
! #: c/c-decl.cc:10208
  #, gcc-internal-format
  msgid "enumeration values exceed range of largest integer"
  msgstr "enum-vÃ¦rdier overstige rÃ¦kkevidden af det stÃ¸rste heltal"
  
! #: c/c-decl.cc:10217
  #, fuzzy, gcc-internal-format
  #| msgid "enumeration values exceed range of largest integer"
  msgid "enumeration values exceed range of %qs"
  msgstr "enum-vÃ¦rdier overstige rÃ¦kkevidden af det stÃ¸rste heltal"
  
! #: c/c-decl.cc:10330
  #, fuzzy, gcc-internal-format
  #| msgid "nested redefinition of `%s'"
  msgid "conflicting redefinition of enum %qT"
  msgstr "indlejret omdefinering af '%s'"
  
! #: c/c-decl.cc:10363 c/c-decl.cc:10379
  #, fuzzy, gcc-internal-format
  #| msgid "enumerator value for `%s' not integer constant"
  msgid "enumerator value for %qE is not an integer constant"
  msgstr "enum-vÃ¦rdien for '%s' er ikke en heltalskonstant"
  
! #: c/c-decl.cc:10374
  #, fuzzy, gcc-internal-format
  #| msgid "enumerator value for `%s' not integer constant"
  msgid "enumerator value for %qE is not an integer constant expression"
  msgstr "enum-vÃ¦rdien for '%s' er ikke en heltalskonstant"
  
! #: c/c-decl.cc:10398
  #, gcc-internal-format
  msgid "overflow in enumeration values"
  msgstr "enum-vÃ¦rdier for store"
  
! #: c/c-decl.cc:10405
  #, fuzzy, gcc-internal-format
  #| msgid "array subscript is not an integer"
  msgid "enumerator value outside the range of underlying type"
  msgstr "tabelindeks er ikke et heltal"
  
! #: c/c-decl.cc:10422
  #, gcc-internal-format
  msgid "value of redeclared enumerator outside the range of %qT"
  msgstr ""
  
! #: c/c-decl.cc:10450
  #, fuzzy, gcc-internal-format
  #| msgid "array subscript is not an integer"
  msgid "enumerator value outside the range of %qs"
  msgstr "tabelindeks er ikke et heltal"
  
! #: c/c-decl.cc:10456
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C restricts enumerator values to range of `int'"
  msgid "ISO C restricts enumerator values to range of %<int%> before C23"
  msgstr "ISO C begrÃ¦nser enum-vÃ¦rdier til rÃ¦kkevidden af 'int'"
  
! #: c/c-decl.cc:10664 cp/decl.cc:6053 cp/decl.cc:18438
  #, fuzzy, gcc-internal-format
  msgid "inline function %qD given attribute %qs"
  msgstr "inline funktion '%s' givet egenskaben noinline"
  
! #: c/c-decl.cc:10683
  #, gcc-internal-format
  msgid "return type is an incomplete type"
  msgstr "returtypen er en ufuldstÃ¦ndig type"
  
! #: c/c-decl.cc:10695
  #, fuzzy, gcc-internal-format
  #| msgid "return type defaults to `int'"
  msgid "return type defaults to %<int%>"
  msgstr "returtypen antages at vÃ¦re 'int'"
  
! #: c/c-decl.cc:10723
  #, fuzzy, gcc-internal-format
  #| msgid "field `%s' declared as a function"
  msgid "%q+D defined as variadic function without prototype"
  msgstr "feltet '%s' er erklÃ¦ret som en funktion"
  
! #: c/c-decl.cc:10776
  #, gcc-internal-format
  msgid "ISO C23 does not allow defining parameters for function %qE declared without parameters"
  msgstr ""
  
! #: c/c-decl.cc:10799
  #, fuzzy, gcc-internal-format
  msgid "no previous prototype for %qD"
  msgstr "ingen tidligere prototype for '%s'"
  
! #: c/c-decl.cc:10808
  #, fuzzy, gcc-internal-format
  msgid "%qD was used with no prototype before its definition"
  msgstr "'%s' blev brugt uden en prototype fÃ¸r dens definition"
  
! #: c/c-decl.cc:10826
  #, fuzzy, gcc-internal-format
  msgid "%qD was used with no declaration before its definition"
  msgstr "'%s' blev brugt uden en erklÃ¦ring fÃ¸r dens definition"
  
! #: c/c-decl.cc:10845
  #, fuzzy, gcc-internal-format
  msgid "return type of %qD is not %<int%>"
  msgstr "returtypen til '%s' er ikke 'int'"
  
! #: c/c-decl.cc:10847
  #, gcc-internal-format
  msgid "%<_Atomic%>-qualified return type of %qD"
  msgstr ""
  
! #: c/c-decl.cc:10854
  #, fuzzy, gcc-internal-format
  msgid "%qD is normally a non-static function"
  msgstr "'%s' er normalt en ikke-statisk funktion"
  
! #: c/c-decl.cc:10905
  #, fuzzy, gcc-internal-format
  msgid "old-style parameter declarations in prototyped function definition"
  msgstr "kan ikke bruge '::' i parametererklÃ¦ring"
  
! #: c/c-decl.cc:10921
  #, gcc-internal-format
  msgid "traditional C rejects ISO C style function definitions"
  msgstr "traditionel C tillader ikke ISO C-functionsdefinitioner"
  
! #: c/c-decl.cc:10938
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support complex types"
  msgid "ISO C does not support omitting parameter names in function definitions before C23"
  msgstr "ISO C90 understÃ¸tter ikke komplekse typer"
  
! #: c/c-decl.cc:10978 c/c-decl.cc:10982
  #, fuzzy, gcc-internal-format
  #| msgid "traditional C rejects ISO C style function definitions"
  msgid "old-style function definition"
  msgstr "traditionel C tillader ikke ISO C-functionsdefinitioner"
  
! #: c/c-decl.cc:10995
  #, fuzzy, gcc-internal-format
  msgid "parameter name missing from parameter list"
  msgstr "parameternavn mangler fra parameterliste"
  
! #: c/c-decl.cc:11011
  #, fuzzy, gcc-internal-format
  msgid "%qD declared as a non-parameter"
  msgstr "'%D' er erklÃ¦ret som en ven"
  
! #: c/c-decl.cc:11019
  #, fuzzy, gcc-internal-format
  msgid "multiple parameters named %qD"
  msgstr "flere parametre ved navn '%s'"
  
! #: c/c-decl.cc:11028
  #, fuzzy, gcc-internal-format
  #| msgid "parameter `%D' declared void"
  msgid "parameter %qD declared with void type"
  msgstr "parameteren '%D' erklÃ¦ret void"
  
! #: c/c-decl.cc:11057 c/c-decl.cc:11062
  #, fuzzy, gcc-internal-format
  msgid "type of %qD defaults to %<int%>"
  msgstr "typen til '%s' antages at vÃ¦re 'int'"
  
! #: c/c-decl.cc:11082
  #, fuzzy, gcc-internal-format
  #| msgid "parameter has incomplete type"
  msgid "parameter %qD has incomplete type"
  msgstr "parameteren er af en ufuldstÃ¦ndig type"
  
! #: c/c-decl.cc:11089
  #, fuzzy, gcc-internal-format
  msgid "declaration for parameter %qD but no such parameter"
  msgstr "erklÃ¦ring af parameteren '%s', men ingen sÃ¥dan parameter"
  
! #: c/c-decl.cc:11142
  #, fuzzy, gcc-internal-format
  #| msgid "number of arguments doesn't match prototype"
  msgid "number of arguments doesn%'t match built-in prototype"
  msgstr "antallet af parametre passer ikke til prototypen"
  
! #: c/c-decl.cc:11153
  #, fuzzy, gcc-internal-format
  #| msgid "number of arguments doesn't match prototype"
  msgid "number of arguments doesn%'t match prototype"
  msgstr "antallet af parametre passer ikke til prototypen"
  
! #: c/c-decl.cc:11156 c/c-decl.cc:11203 c/c-decl.cc:11217
  #, fuzzy, gcc-internal-format
  msgid "prototype declaration"
  msgstr "tom erklÃ¦ring"
  
! #: c/c-decl.cc:11195
  #, fuzzy, gcc-internal-format
  msgid "promoted argument %qD doesn%'t match built-in prototype"
  msgstr "den forfremmede parameter '%s' passer ikke til prototypen"
  
! #: c/c-decl.cc:11200
  #, fuzzy, gcc-internal-format
  msgid "promoted argument %qD doesn%'t match prototype"
  msgstr "den forfremmede parameter '%s' passer ikke til prototypen"
  
! #: c/c-decl.cc:11210
  #, fuzzy, gcc-internal-format
  msgid "argument %qD doesn%'t match built-in prototype"
  msgstr "parameteren '%s' passer ikke til prototypen"
  
! #: c/c-decl.cc:11215
  #, fuzzy, gcc-internal-format
  msgid "argument %qD doesn%'t match prototype"
  msgstr "parameteren '%s' passer ikke til prototypen"
  
! #: c/c-decl.cc:11473 cp/decl.cc:19361
  #, gcc-internal-format
  msgid "no return statement in function returning non-void"
  msgstr "ingen return-sÃ¦tning i en funktion der ikke returnerer void"
  
! #: c/c-decl.cc:11492 cp/decl.cc:19432
  #, fuzzy, gcc-internal-format
  #| msgid "label `%D' defined but not used"
  msgid "parameter %qD set but not used"
  msgstr "etiketten '%D' er defineret, men ikke benyttet"
  
! #: c/c-decl.cc:11589
  #, fuzzy, gcc-internal-format
  msgid "%<for%> loop initial declarations are only allowed in C99 or C11 mode"
  msgstr "begyndelseserklÃ¦ring i 'for'-lÃ¸kke benyttet uden for C99-tilstand"
  
! #: c/c-decl.cc:11594
  #, gcc-internal-format
  msgid "use option %<-std=c99%>, %<-std=gnu99%>, %<-std=c11%> or %<-std=gnu11%> to compile your code"
  msgstr ""
  
! #: c/c-decl.cc:11601
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support %<[*]%> array declarators"
  msgid "ISO C90 does not support %<for%> loop initial declarations"
  msgstr "ISO C90 understÃ¸tter ikke %<[*]%> arrayerklÃ¦ringer"
  
! #: c/c-decl.cc:11635
  #, fuzzy, gcc-internal-format
  msgid "declaration of static variable %qD in %<for%> loop initial declaration"
  msgstr "erklÃ¦ring af '%s' der er en statisk variabel, i begyndelseserklÃ¦ring i 'for'-lÃ¸kke"
  
! #: c/c-decl.cc:11639
  #, fuzzy, gcc-internal-format
  msgid "declaration of %<extern%> variable %qD in %<for%> loop initial declaration"
  msgstr "erklÃ¦ring af '%s' der er en 'extern'-variabel, i begyndelseserklÃ¦ring i 'for'-lÃ¸kke"
  
! #: c/c-decl.cc:11646
  #, fuzzy, gcc-internal-format
  msgid "%<struct %E%> declared in %<for%> loop initial declaration"
  msgstr "'struct %s' erklÃ¦ret i begyndelseserklÃ¦ring i 'for'-lÃ¸kke"
  
! #: c/c-decl.cc:11651
  #, fuzzy, gcc-internal-format
  msgid "%<union %E%> declared in %<for%> loop initial declaration"
  msgstr "'union %s' erklÃ¦ret i begyndelseserklÃ¦ring i 'for'-lÃ¸kke"
  
! #: c/c-decl.cc:11657
  #, fuzzy, gcc-internal-format
  msgid "%<enum %E%> declared in %<for%> loop initial declaration"
  msgstr "'enum %s' erklÃ¦ret i begyndelseserklÃ¦ring i 'for'-lÃ¸kke"
  
! #: c/c-decl.cc:11661
  #, fuzzy, gcc-internal-format
  msgid "declaration of non-variable %qD in %<for%> loop initial declaration"
  msgstr "erklÃ¦ring af '%s' der ikke er en variabel, i begyndelseserklÃ¦ring i 'for'-lÃ¸kke"
  
! #: c/c-decl.cc:11961
  #, gcc-internal-format
  msgid "incompatible address space qualifiers %qs and %qs"
  msgstr ""
  
! #: c/c-decl.cc:12020 c/c-decl.cc:12027
  #, fuzzy, gcc-internal-format
  #| msgid "repeated declaration of unit `%s'"
  msgid "duplicate %qE declaration specifier"
  msgstr "gentaget erklÃ¦ring af enheden '%s'"
  
! #: c/c-decl.cc:12055 c/c-decl.cc:13176
  #, fuzzy, gcc-internal-format
  #| msgid "multiple storage classes in declaration of `%s'"
  msgid "multiple storage classes in declaration specifiers"
  msgstr "flere lagringsklasser optrÃ¦der i erklÃ¦ringen af '%s'"
  
! #: c/c-decl.cc:12057
  #, fuzzy, gcc-internal-format
  #| msgid "%s used with `%%%c' %s format"
  msgid "%qs used with %<auto%>"
--- 51068,51412 ----
  msgid "flexible array member in a struct with no named members is a GCC extension"
  msgstr "fleksibelt tabelmedlem i union"
  
! #: c/c-decl.cc:9687
  #, fuzzy, gcc-internal-format
  msgid "structure containing a flexible array member is not at the end of another structure"
  msgstr "fleksibelt tabelmedlem ikke i slutningen af struktur"
  
! #: c/c-decl.cc:9714
  #, fuzzy, gcc-internal-format
  #| msgid "%s is too large"
  msgid "type %qT is too large"
  msgstr "%s er for stor"
  
! #: c/c-decl.cc:9778
  #, fuzzy, gcc-internal-format
  msgid "type punning toggles scalar storage order"
  msgstr "ukendt registernavn '%s'"
  
! #: c/c-decl.cc:9845
  #, gcc-internal-format
  msgid "union cannot be made transparent"
  msgstr "union kan ikke ikke gÃ¸res gennemsigtig"
  
! #: c/c-decl.cc:9859
  #, fuzzy, gcc-internal-format
  msgid "redefinition of struct or union %qT with variably modified type"
  msgstr "omdefinering af '%s'"
  
! #: c/c-decl.cc:9866
  #, fuzzy, gcc-internal-format
  #| msgid "redefinition of `struct %s'"
  msgid "redefinition of struct or union %qT"
  msgstr "omdefinering af 'struct %s'"
  
! #: c/c-decl.cc:10046
  #, fuzzy, gcc-internal-format
  #| msgid "nested redefinition of `%s'"
  msgid "nested redefinition of %<enum %E%>"
  msgstr "indlejret omdefinering af '%s'"
  
! #: c/c-decl.cc:10094
  #, fuzzy, gcc-internal-format
  #| msgid "redeclaration of `enum %s'"
  msgid "redeclaration of %<enum %E%>"
  msgstr "omerklÃ¦ring af 'enum %s'"
  
! #: c/c-decl.cc:10106
  #, gcc-internal-format
  msgid "%<enum%> declared with but defined without fixed underlying type"
  msgstr ""
  
! #: c/c-decl.cc:10193 cp/decl.cc:17836 m2/gm2-gcc/m2type.cc:2088
  #, gcc-internal-format
  msgid "specified mode too small for enumerated values"
  msgstr ""
  
! #: c/c-decl.cc:10212
  #, gcc-internal-format
  msgid "enumeration values exceed range of largest integer"
  msgstr "enum-vÃ¦rdier overstige rÃ¦kkevidden af det stÃ¸rste heltal"
  
! #: c/c-decl.cc:10221
  #, fuzzy, gcc-internal-format
  #| msgid "enumeration values exceed range of largest integer"
  msgid "enumeration values exceed range of %qs"
  msgstr "enum-vÃ¦rdier overstige rÃ¦kkevidden af det stÃ¸rste heltal"
  
! #: c/c-decl.cc:10334
  #, fuzzy, gcc-internal-format
  #| msgid "nested redefinition of `%s'"
  msgid "conflicting redefinition of enum %qT"
  msgstr "indlejret omdefinering af '%s'"
  
! #: c/c-decl.cc:10367 c/c-decl.cc:10383
  #, fuzzy, gcc-internal-format
  #| msgid "enumerator value for `%s' not integer constant"
  msgid "enumerator value for %qE is not an integer constant"
  msgstr "enum-vÃ¦rdien for '%s' er ikke en heltalskonstant"
  
! #: c/c-decl.cc:10378
  #, fuzzy, gcc-internal-format
  #| msgid "enumerator value for `%s' not integer constant"
  msgid "enumerator value for %qE is not an integer constant expression"
  msgstr "enum-vÃ¦rdien for '%s' er ikke en heltalskonstant"
  
! #: c/c-decl.cc:10402
  #, gcc-internal-format
  msgid "overflow in enumeration values"
  msgstr "enum-vÃ¦rdier for store"
  
! #: c/c-decl.cc:10409
  #, fuzzy, gcc-internal-format
  #| msgid "array subscript is not an integer"
  msgid "enumerator value outside the range of underlying type"
  msgstr "tabelindeks er ikke et heltal"
  
! #: c/c-decl.cc:10426
  #, gcc-internal-format
  msgid "value of redeclared enumerator outside the range of %qT"
  msgstr ""
  
! #: c/c-decl.cc:10454
  #, fuzzy, gcc-internal-format
  #| msgid "array subscript is not an integer"
  msgid "enumerator value outside the range of %qs"
  msgstr "tabelindeks er ikke et heltal"
  
! #: c/c-decl.cc:10460
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C restricts enumerator values to range of `int'"
  msgid "ISO C restricts enumerator values to range of %<int%> before C23"
  msgstr "ISO C begrÃ¦nser enum-vÃ¦rdier til rÃ¦kkevidden af 'int'"
  
! #: c/c-decl.cc:10668 cp/decl.cc:6051 cp/decl.cc:18436
  #, fuzzy, gcc-internal-format
  msgid "inline function %qD given attribute %qs"
  msgstr "inline funktion '%s' givet egenskaben noinline"
  
! #: c/c-decl.cc:10687
  #, gcc-internal-format
  msgid "return type is an incomplete type"
  msgstr "returtypen er en ufuldstÃ¦ndig type"
  
! #: c/c-decl.cc:10699
  #, fuzzy, gcc-internal-format
  #| msgid "return type defaults to `int'"
  msgid "return type defaults to %<int%>"
  msgstr "returtypen antages at vÃ¦re 'int'"
  
! #: c/c-decl.cc:10727
  #, fuzzy, gcc-internal-format
  #| msgid "field `%s' declared as a function"
  msgid "%q+D defined as variadic function without prototype"
  msgstr "feltet '%s' er erklÃ¦ret som en funktion"
  
! #: c/c-decl.cc:10780
  #, gcc-internal-format
  msgid "ISO C23 does not allow defining parameters for function %qE declared without parameters"
  msgstr ""
  
! #: c/c-decl.cc:10803
  #, fuzzy, gcc-internal-format
  msgid "no previous prototype for %qD"
  msgstr "ingen tidligere prototype for '%s'"
  
! #: c/c-decl.cc:10812
  #, fuzzy, gcc-internal-format
  msgid "%qD was used with no prototype before its definition"
  msgstr "'%s' blev brugt uden en prototype fÃ¸r dens definition"
  
! #: c/c-decl.cc:10830
  #, fuzzy, gcc-internal-format
  msgid "%qD was used with no declaration before its definition"
  msgstr "'%s' blev brugt uden en erklÃ¦ring fÃ¸r dens definition"
  
! #: c/c-decl.cc:10849
  #, fuzzy, gcc-internal-format
  msgid "return type of %qD is not %<int%>"
  msgstr "returtypen til '%s' er ikke 'int'"
  
! #: c/c-decl.cc:10851
  #, gcc-internal-format
  msgid "%<_Atomic%>-qualified return type of %qD"
  msgstr ""
  
! #: c/c-decl.cc:10858
  #, fuzzy, gcc-internal-format
  msgid "%qD is normally a non-static function"
  msgstr "'%s' er normalt en ikke-statisk funktion"
  
! #: c/c-decl.cc:10909
  #, fuzzy, gcc-internal-format
  msgid "old-style parameter declarations in prototyped function definition"
  msgstr "kan ikke bruge '::' i parametererklÃ¦ring"
  
! #: c/c-decl.cc:10925
  #, gcc-internal-format
  msgid "traditional C rejects ISO C style function definitions"
  msgstr "traditionel C tillader ikke ISO C-functionsdefinitioner"
  
! #: c/c-decl.cc:10942
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support complex types"
  msgid "ISO C does not support omitting parameter names in function definitions before C23"
  msgstr "ISO C90 understÃ¸tter ikke komplekse typer"
  
! #: c/c-decl.cc:10982 c/c-decl.cc:10986
  #, fuzzy, gcc-internal-format
  #| msgid "traditional C rejects ISO C style function definitions"
  msgid "old-style function definition"
  msgstr "traditionel C tillader ikke ISO C-functionsdefinitioner"
  
! #: c/c-decl.cc:10999
  #, fuzzy, gcc-internal-format
  msgid "parameter name missing from parameter list"
  msgstr "parameternavn mangler fra parameterliste"
  
! #: c/c-decl.cc:11015
  #, fuzzy, gcc-internal-format
  msgid "%qD declared as a non-parameter"
  msgstr "'%D' er erklÃ¦ret som en ven"
  
! #: c/c-decl.cc:11023
  #, fuzzy, gcc-internal-format
  msgid "multiple parameters named %qD"
  msgstr "flere parametre ved navn '%s'"
  
! #: c/c-decl.cc:11032
  #, fuzzy, gcc-internal-format
  #| msgid "parameter `%D' declared void"
  msgid "parameter %qD declared with void type"
  msgstr "parameteren '%D' erklÃ¦ret void"
  
! #: c/c-decl.cc:11061 c/c-decl.cc:11066
  #, fuzzy, gcc-internal-format
  msgid "type of %qD defaults to %<int%>"
  msgstr "typen til '%s' antages at vÃ¦re 'int'"
  
! #: c/c-decl.cc:11086
  #, fuzzy, gcc-internal-format
  #| msgid "parameter has incomplete type"
  msgid "parameter %qD has incomplete type"
  msgstr "parameteren er af en ufuldstÃ¦ndig type"
  
! #: c/c-decl.cc:11093
  #, fuzzy, gcc-internal-format
  msgid "declaration for parameter %qD but no such parameter"
  msgstr "erklÃ¦ring af parameteren '%s', men ingen sÃ¥dan parameter"
  
! #: c/c-decl.cc:11146
  #, fuzzy, gcc-internal-format
  #| msgid "number of arguments doesn't match prototype"
  msgid "number of arguments doesn%'t match built-in prototype"
  msgstr "antallet af parametre passer ikke til prototypen"
  
! #: c/c-decl.cc:11157
  #, fuzzy, gcc-internal-format
  #| msgid "number of arguments doesn't match prototype"
  msgid "number of arguments doesn%'t match prototype"
  msgstr "antallet af parametre passer ikke til prototypen"
  
! #: c/c-decl.cc:11160 c/c-decl.cc:11207 c/c-decl.cc:11221
  #, fuzzy, gcc-internal-format
  msgid "prototype declaration"
  msgstr "tom erklÃ¦ring"
  
! #: c/c-decl.cc:11199
  #, fuzzy, gcc-internal-format
  msgid "promoted argument %qD doesn%'t match built-in prototype"
  msgstr "den forfremmede parameter '%s' passer ikke til prototypen"
  
! #: c/c-decl.cc:11204
  #, fuzzy, gcc-internal-format
  msgid "promoted argument %qD doesn%'t match prototype"
  msgstr "den forfremmede parameter '%s' passer ikke til prototypen"
  
! #: c/c-decl.cc:11214
  #, fuzzy, gcc-internal-format
  msgid "argument %qD doesn%'t match built-in prototype"
  msgstr "parameteren '%s' passer ikke til prototypen"
  
! #: c/c-decl.cc:11219
  #, fuzzy, gcc-internal-format
  msgid "argument %qD doesn%'t match prototype"
  msgstr "parameteren '%s' passer ikke til prototypen"
  
! #: c/c-decl.cc:11477 cp/decl.cc:19359
  #, gcc-internal-format
  msgid "no return statement in function returning non-void"
  msgstr "ingen return-sÃ¦tning i en funktion der ikke returnerer void"
  
! #: c/c-decl.cc:11496 cp/decl.cc:19430
  #, fuzzy, gcc-internal-format
  #| msgid "label `%D' defined but not used"
  msgid "parameter %qD set but not used"
  msgstr "etiketten '%D' er defineret, men ikke benyttet"
  
! #: c/c-decl.cc:11593
  #, fuzzy, gcc-internal-format
  msgid "%<for%> loop initial declarations are only allowed in C99 or C11 mode"
  msgstr "begyndelseserklÃ¦ring i 'for'-lÃ¸kke benyttet uden for C99-tilstand"
  
! #: c/c-decl.cc:11598
  #, gcc-internal-format
  msgid "use option %<-std=c99%>, %<-std=gnu99%>, %<-std=c11%> or %<-std=gnu11%> to compile your code"
  msgstr ""
  
! #: c/c-decl.cc:11605
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support %<[*]%> array declarators"
  msgid "ISO C90 does not support %<for%> loop initial declarations"
  msgstr "ISO C90 understÃ¸tter ikke %<[*]%> arrayerklÃ¦ringer"
  
! #: c/c-decl.cc:11639
  #, fuzzy, gcc-internal-format
  msgid "declaration of static variable %qD in %<for%> loop initial declaration"
  msgstr "erklÃ¦ring af '%s' der er en statisk variabel, i begyndelseserklÃ¦ring i 'for'-lÃ¸kke"
  
! #: c/c-decl.cc:11643
  #, fuzzy, gcc-internal-format
  msgid "declaration of %<extern%> variable %qD in %<for%> loop initial declaration"
  msgstr "erklÃ¦ring af '%s' der er en 'extern'-variabel, i begyndelseserklÃ¦ring i 'for'-lÃ¸kke"
  
! #: c/c-decl.cc:11650
  #, fuzzy, gcc-internal-format
  msgid "%<struct %E%> declared in %<for%> loop initial declaration"
  msgstr "'struct %s' erklÃ¦ret i begyndelseserklÃ¦ring i 'for'-lÃ¸kke"
  
! #: c/c-decl.cc:11655
  #, fuzzy, gcc-internal-format
  msgid "%<union %E%> declared in %<for%> loop initial declaration"
  msgstr "'union %s' erklÃ¦ret i begyndelseserklÃ¦ring i 'for'-lÃ¸kke"
  
! #: c/c-decl.cc:11661
  #, fuzzy, gcc-internal-format
  msgid "%<enum %E%> declared in %<for%> loop initial declaration"
  msgstr "'enum %s' erklÃ¦ret i begyndelseserklÃ¦ring i 'for'-lÃ¸kke"
  
! #: c/c-decl.cc:11665
  #, fuzzy, gcc-internal-format
  msgid "declaration of non-variable %qD in %<for%> loop initial declaration"
  msgstr "erklÃ¦ring af '%s' der ikke er en variabel, i begyndelseserklÃ¦ring i 'for'-lÃ¸kke"
  
! #: c/c-decl.cc:11965
  #, gcc-internal-format
  msgid "incompatible address space qualifiers %qs and %qs"
  msgstr ""
  
! #: c/c-decl.cc:12024 c/c-decl.cc:12031
  #, fuzzy, gcc-internal-format
  #| msgid "repeated declaration of unit `%s'"
  msgid "duplicate %qE declaration specifier"
  msgstr "gentaget erklÃ¦ring af enheden '%s'"
  
! #: c/c-decl.cc:12059 c/c-decl.cc:13180
  #, fuzzy, gcc-internal-format
  #| msgid "multiple storage classes in declaration of `%s'"
  msgid "multiple storage classes in declaration specifiers"
  msgstr "flere lagringsklasser optrÃ¦der i erklÃ¦ringen af '%s'"
  
! #: c/c-decl.cc:12061
  #, fuzzy, gcc-internal-format
  #| msgid "%s used with `%%%c' %s format"
  msgid "%qs used with %<auto%>"
*************** msgstr "%s brugt med '%%%c' %s-formateri
*** 51405,51539 ****
  
  #. auto may only be used with another storage class specifier,
  #. such as constexpr, if the type is inferred.
! #: c/c-decl.cc:12062
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' was not declared in this scope"
  msgid "%<auto%> used with %<constexpr%>"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: c/c-decl.cc:12075 c/c-decl.cc:12513 c/c-decl.cc:12971
  #, fuzzy, gcc-internal-format
  #| msgid "two or more data types in declaration of `%s'"
  msgid "two or more data types in declaration specifiers"
  msgstr "mere end Ã©n datatype i erklÃ¦ringen af '%s'"
  
! #: c/c-decl.cc:12087 cp/parser.cc:35091
  #, fuzzy, gcc-internal-format
  #| msgid "`long long long' is too long for GCC"
  msgid "%<long long long%> is too long for GCC"
  msgstr "'long long long' er for langt for GCC"
  
! #: c/c-decl.cc:12100
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support `long long'"
  msgid "ISO C90 does not support %<long long%>"
  msgstr "ISO C90 understÃ¸tter ikke 'long long'"
  
! #: c/c-decl.cc:12353 c/c-parser.cc:12542
  #, gcc-internal-format
  msgid "ISO C90 does not support complex types"
  msgstr "ISO C90 understÃ¸tter ikke komplekse typer"
  
! #: c/c-decl.cc:12407
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support saturating types"
  msgstr "ISO C understÃ¸tter ikke komplekse heltalstyper"
  
! #: c/c-decl.cc:12486 c/c-decl.cc:13111 c/c-decl.cc:13170
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `%s'"
  msgid "duplicate %qE"
  msgstr "'%s' optrÃ¦der mere end Ã©n gang"
  
! #: c/c-decl.cc:12503
  #, fuzzy, gcc-internal-format
  msgid "%qs cannot be defined via %<typedef%>"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: c/c-decl.cc:12507
  #, fuzzy, gcc-internal-format
  #| msgid "%s cannot be used in asm here"
  msgid "%qs cannot be used here"
  msgstr "%s kan ikke bruges i asm her"
  
! #: c/c-decl.cc:12560
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support %<__int%d%> types"
  msgstr "ISO C understÃ¸tter ikke komplekse heltalstyper"
  
! #: c/c-decl.cc:12582
  #, fuzzy, gcc-internal-format
  #| msgid "Profiling is not supported on this target."
  msgid "%<__int%d%> is not supported on this target"
  msgstr "Profilering er ikke understÃ¸ttet pÃ¥ mÃ¥larkitekturen."
  
! #: c/c-decl.cc:12625
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support complex types"
  msgid "ISO C90 does not support boolean types"
  msgstr "ISO C90 understÃ¸tter ikke komplekse typer"
  
! #: c/c-decl.cc:12744
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support the %<_Float%d%s%> type before C23"
  msgstr "ISO C understÃ¸tter ikke komplekse heltalstyper"
  
! #: c/c-decl.cc:12795 cp/parser.cc:20889
  #, fuzzy, gcc-internal-format
  #| msgid "Profiling is not supported on this target."
  msgid "%<_Float%d%s%> is not supported on this target"
  msgstr "Profilering er ikke understÃ¸ttet pÃ¥ mÃ¥larkitekturen."
  
! #: c/c-decl.cc:12871
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support `long long'"
  msgid "ISO C does not support decimal floating-point before C23"
  msgstr "ISO C90 understÃ¸tter ikke 'long long'"
  
! #: c/c-decl.cc:12895 c/c-decl.cc:13272 c/c-parser.cc:11443
  #, fuzzy, gcc-internal-format
  #| msgid "-fdata-sections not supported for this target"
  msgid "fixed-point types not supported for this target"
  msgstr "-fdata-sections understÃ¸ttes ikke pÃ¥ mÃ¥larkitekturen"
  
! #: c/c-decl.cc:12897
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support fixed-point types"
  msgstr "ISO C understÃ¸tter ikke komplekse heltalstyper"
  
! #: c/c-decl.cc:12926
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "%<_BitInt%> argument is not an integer constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: c/c-decl.cc:12932
  #, fuzzy, gcc-internal-format
  #| msgid "enumerator value for `%s' not integer constant"
  msgid "%<_BitInt%> argument %qE is not a positive integer constant expression"
  msgstr "enum-vÃ¦rdien for '%s' er ikke en heltalskonstant"
  
! #: c/c-decl.cc:12939
  #, gcc-internal-format
  msgid "%<_BitInt%> argument %qE is larger than %<BITINT_MAXWIDTH%> %qd"
  msgstr ""
  
! #: c/c-decl.cc:12987
  #, gcc-internal-format
  msgid "C++ lookup of %qD would return a field, not a type"
  msgstr ""
  
! #: c/c-decl.cc:13000
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' fails to be a typedef or built in type"
  msgid "%qE fails to be a typedef or built in type"
  msgstr "'%s' er hverken en typedef eller en indbygget type"
  
! #: c/c-decl.cc:13055
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not at beginning of declaration"
  msgid "%qE is not at beginning of declaration"
--- 51414,51548 ----
  
  #. auto may only be used with another storage class specifier,
  #. such as constexpr, if the type is inferred.
! #: c/c-decl.cc:12066
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' was not declared in this scope"
  msgid "%<auto%> used with %<constexpr%>"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: c/c-decl.cc:12079 c/c-decl.cc:12517 c/c-decl.cc:12975
  #, fuzzy, gcc-internal-format
  #| msgid "two or more data types in declaration of `%s'"
  msgid "two or more data types in declaration specifiers"
  msgstr "mere end Ã©n datatype i erklÃ¦ringen af '%s'"
  
! #: c/c-decl.cc:12091 cp/parser.cc:35150
  #, fuzzy, gcc-internal-format
  #| msgid "`long long long' is too long for GCC"
  msgid "%<long long long%> is too long for GCC"
  msgstr "'long long long' er for langt for GCC"
  
! #: c/c-decl.cc:12104
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support `long long'"
  msgid "ISO C90 does not support %<long long%>"
  msgstr "ISO C90 understÃ¸tter ikke 'long long'"
  
! #: c/c-decl.cc:12357 c/c-parser.cc:12587
  #, gcc-internal-format
  msgid "ISO C90 does not support complex types"
  msgstr "ISO C90 understÃ¸tter ikke komplekse typer"
  
! #: c/c-decl.cc:12411
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support saturating types"
  msgstr "ISO C understÃ¸tter ikke komplekse heltalstyper"
  
! #: c/c-decl.cc:12490 c/c-decl.cc:13115 c/c-decl.cc:13174
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `%s'"
  msgid "duplicate %qE"
  msgstr "'%s' optrÃ¦der mere end Ã©n gang"
  
! #: c/c-decl.cc:12507
  #, fuzzy, gcc-internal-format
  msgid "%qs cannot be defined via %<typedef%>"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: c/c-decl.cc:12511
  #, fuzzy, gcc-internal-format
  #| msgid "%s cannot be used in asm here"
  msgid "%qs cannot be used here"
  msgstr "%s kan ikke bruges i asm her"
  
! #: c/c-decl.cc:12564
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support %<__int%d%> types"
  msgstr "ISO C understÃ¸tter ikke komplekse heltalstyper"
  
! #: c/c-decl.cc:12586
  #, fuzzy, gcc-internal-format
  #| msgid "Profiling is not supported on this target."
  msgid "%<__int%d%> is not supported on this target"
  msgstr "Profilering er ikke understÃ¸ttet pÃ¥ mÃ¥larkitekturen."
  
! #: c/c-decl.cc:12629
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support complex types"
  msgid "ISO C90 does not support boolean types"
  msgstr "ISO C90 understÃ¸tter ikke komplekse typer"
  
! #: c/c-decl.cc:12748
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support the %<_Float%d%s%> type before C23"
  msgstr "ISO C understÃ¸tter ikke komplekse heltalstyper"
  
! #: c/c-decl.cc:12799 cp/parser.cc:20893
  #, fuzzy, gcc-internal-format
  #| msgid "Profiling is not supported on this target."
  msgid "%<_Float%d%s%> is not supported on this target"
  msgstr "Profilering er ikke understÃ¸ttet pÃ¥ mÃ¥larkitekturen."
  
! #: c/c-decl.cc:12875
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support `long long'"
  msgid "ISO C does not support decimal floating-point before C23"
  msgstr "ISO C90 understÃ¸tter ikke 'long long'"
  
! #: c/c-decl.cc:12899 c/c-decl.cc:13276 c/c-parser.cc:11488
  #, fuzzy, gcc-internal-format
  #| msgid "-fdata-sections not supported for this target"
  msgid "fixed-point types not supported for this target"
  msgstr "-fdata-sections understÃ¸ttes ikke pÃ¥ mÃ¥larkitekturen"
  
! #: c/c-decl.cc:12901
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support fixed-point types"
  msgstr "ISO C understÃ¸tter ikke komplekse heltalstyper"
  
! #: c/c-decl.cc:12930
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "%<_BitInt%> argument is not an integer constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: c/c-decl.cc:12936
  #, fuzzy, gcc-internal-format
  #| msgid "enumerator value for `%s' not integer constant"
  msgid "%<_BitInt%> argument %qE is not a positive integer constant expression"
  msgstr "enum-vÃ¦rdien for '%s' er ikke en heltalskonstant"
  
! #: c/c-decl.cc:12943
  #, gcc-internal-format
  msgid "%<_BitInt%> argument %qE is larger than %<BITINT_MAXWIDTH%> %qd"
  msgstr ""
  
! #: c/c-decl.cc:12991
  #, gcc-internal-format
  msgid "C++ lookup of %qD would return a field, not a type"
  msgstr ""
  
! #: c/c-decl.cc:13004
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' fails to be a typedef or built in type"
  msgid "%qE fails to be a typedef or built in type"
  msgstr "'%s' er hverken en typedef eller en indbygget type"
  
! #: c/c-decl.cc:13059
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not at beginning of declaration"
  msgid "%qE is not at beginning of declaration"
*************** msgstr "'%s' er ikke ved begyndelsen af
*** 51541,51726 ****
  
  #. auto may only be used with another storage class specifier,
  #. such as constexpr, if the type is inferred.
! #: c/c-decl.cc:13076 c/c-decl.cc:13153
  #, gcc-internal-format
  msgid "%qE used with %<auto%>"
  msgstr ""
  
! #: c/c-decl.cc:13078
  #, gcc-internal-format
  msgid "%qE used with %<register%>"
  msgstr ""
  
! #: c/c-decl.cc:13080 c/c-decl.cc:13149
  #, gcc-internal-format
  msgid "%qE used with %<typedef%>"
  msgstr ""
  
! #: c/c-decl.cc:13082 c/c-decl.cc:13119
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' was not declared in this scope"
  msgid "%qE used with %<constexpr%>"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: c/c-decl.cc:13096 c/c-parser.cc:3320 c/c-parser.cc:4691 c/c-parser.cc:10707
  #, fuzzy, gcc-internal-format
  #| msgid "%s does not support %s"
  msgid "ISO C99 does not support %qE"
  msgstr "%s understÃ¸tter ikke %s"
  
! #: c/c-decl.cc:13099 c/c-parser.cc:3323 c/c-parser.cc:4694 c/c-parser.cc:10710
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support `long long'"
  msgid "ISO C90 does not support %qE"
  msgstr "ISO C90 understÃ¸tter ikke 'long long'"
  
! #: c/c-decl.cc:13125
  #, fuzzy, gcc-internal-format
  #| msgid "`__thread' before `extern'"
  msgid "%<__thread%> before %<extern%>"
  msgstr "'__thread' fÃ¸r 'extern'"
  
! #: c/c-decl.cc:13134
  #, fuzzy, gcc-internal-format
  #| msgid "`__thread' before `static'"
  msgid "%<__thread%> before %<static%>"
  msgstr "'__thread' fÃ¸r 'static'"
  
! #: c/c-decl.cc:13140
  #, fuzzy, gcc-internal-format
  #| msgid "typedef declared %<auto%>"
  msgid "%<typedef%> used with %<auto%>"
  msgstr "typedef erklÃ¦ret %<auto%>"
  
! #: c/c-decl.cc:13147
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<decltype%>"
  msgid "%qE used with %<extern%>"
  msgstr "forventede %<decltype%>"
  
! #: c/c-decl.cc:13155
  #, fuzzy, gcc-internal-format
  #| msgid "%s used with `%%%c' %s format"
  msgid "%qE used with %qs"
  msgstr "%s brugt med '%%%c' %s-formatering"
  
! #: c/c-decl.cc:13168
  #, gcc-internal-format
  msgid "duplicate %<_Thread_local%> or %<__thread%>"
  msgstr ""
  
! #: c/c-decl.cc:13184
  #, fuzzy, gcc-internal-format
  #| msgid "%s used with `%%%c' %s format"
  msgid "%qs used with %qE"
  msgstr "%s brugt med '%%%c' %s-formatering"
  
! #: c/c-decl.cc:13192
  #, fuzzy, gcc-internal-format
  #| msgid "%s used with `%%%c' %s format"
  msgid "%<constexpr%> used with %qE"
  msgstr "%s brugt med '%%%c' %s-formatering"
  
! #: c/c-decl.cc:13269
  #, gcc-internal-format
  msgid "%<_Sat%> is used without %<_Fract%> or %<_Accum%>"
  msgstr ""
  
! #: c/c-decl.cc:13284
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support plain `complex' meaning `double complex'"
  msgid "ISO C does not support plain %<complex%> meaning %<double complex%>"
  msgstr "ISO C understÃ¸tter ikke at blot 'complex' betyder 'double complex'"
  
! #: c/c-decl.cc:13295
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support %<auto%> type deduction before C23"
  msgstr "ISO C understÃ¸tter ikke komplekse heltalstyper"
  
! #: c/c-decl.cc:13324
  #, gcc-internal-format
  msgid "%<__auto_type%> followed by %<[[]]%> attributes"
  msgstr ""
  
! #: c/c-decl.cc:13350 c/c-decl.cc:13366 c/c-decl.cc:13392
  #, gcc-internal-format
  msgid "ISO C does not support complex integer types"
  msgstr "ISO C understÃ¸tter ikke komplekse heltalstyper"
  
! #: c/c-decl.cc:13538
  #, fuzzy, gcc-internal-format
  #| msgid "left argument must be a slice"
  msgid "%<signed _BitInt%> argument must be at least 2"
  msgstr "venstre parameter skal vÃ¦re en skive"
  
! #: c/c-decl.cc:13547
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ does not support `long long'"
  msgid "ISO C does not support %<%s_BitInt(%d)%> before C23"
  msgstr "ISO C++ understÃ¸tter ikke 'long long'"
  
! #: c/c-decl.cc:13847 cp/semantics.cc:6784
  #, gcc-internal-format
  msgid "%<#pragma omp declare reduction%> combiner refers to variable %qD which is not %<omp_out%> nor %<omp_in%>"
  msgstr ""
  
! #: c/c-decl.cc:13851 cp/semantics.cc:6788
  #, gcc-internal-format
  msgid "%<#pragma omp declare reduction%> initializer refers to variable %qD which is not %<omp_priv%> nor %<omp_orig%>"
  msgstr ""
  
! #: c/c-decl.cc:13975
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support complex types"
  msgid "ISO C does not support %qs statement with an identifier operand before C2Y"
  msgstr "ISO C90 understÃ¸tter ikke komplekse typer"
  
! #: c/c-decl.cc:14027
  #, fuzzy, gcc-internal-format
  msgid "%<break%> statement operand %qE does not refer to a named loop or %<switch%>; did you mean %qs?"
  msgstr "'%D' erklÃ¦rer ikke en skabelonstype"
  
! #: c/c-decl.cc:14031
  #, fuzzy, gcc-internal-format
  msgid "%<continue%> statement operand %qE does not refer to a named loop; did you mean %qs?"
  msgstr "'%D' erklÃ¦rer ikke en skabelonstype"
  
! #: c/c-decl.cc:14036
  #, fuzzy, gcc-internal-format
  #| msgid "break statement not within loop or switch"
  msgid "%<break%> statement operand %qE does not refer to a named loop or %<switch%>"
  msgstr "break-sÃ¦tning befinder sig ikke i en lÃ¸kke- eller switch-konstruktion"
  
! #: c/c-decl.cc:14039
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute only applies to function types"
  msgid "%<continue%> statement operand %qE does not refer to a named loop"
  msgstr "egenskaben '%s' kan kun anvendes sammen med funktionstyper"
  
! #: c/c-decl.cc:14045
  #, gcc-internal-format
  msgid "%<continue%> statement operand %qE refers to a named %<switch%>"
  msgstr ""
  
! #: c/c-decl.cc:14047 c/c-decl.cc:14064
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' previously defined here"
  msgid "%<switch%> name defined here"
  msgstr "'%s' tidligere defineret her"
  
! #: c/c-decl.cc:14055
  #, gcc-internal-format
  msgid "%qs statement operand %qE refers to a loop outside of its body"
  msgstr ""
  
! #: c/c-decl.cc:14057
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' previously defined here"
  msgid "loop name defined here"
  msgstr "'%s' tidligere defineret her"
  
! #: c/c-decl.cc:14061
  #, gcc-internal-format
  msgid "%<break%> statement operand %qE refers to a %<switch%> outside of its body"
  msgstr ""
--- 51550,51735 ----
  
  #. auto may only be used with another storage class specifier,
  #. such as constexpr, if the type is inferred.
! #: c/c-decl.cc:13080 c/c-decl.cc:13157
  #, gcc-internal-format
  msgid "%qE used with %<auto%>"
  msgstr ""
  
! #: c/c-decl.cc:13082
  #, gcc-internal-format
  msgid "%qE used with %<register%>"
  msgstr ""
  
! #: c/c-decl.cc:13084 c/c-decl.cc:13153
  #, gcc-internal-format
  msgid "%qE used with %<typedef%>"
  msgstr ""
  
! #: c/c-decl.cc:13086 c/c-decl.cc:13123
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' was not declared in this scope"
  msgid "%qE used with %<constexpr%>"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: c/c-decl.cc:13100 c/c-parser.cc:3365 c/c-parser.cc:4736 c/c-parser.cc:10752
  #, fuzzy, gcc-internal-format
  #| msgid "%s does not support %s"
  msgid "ISO C99 does not support %qE"
  msgstr "%s understÃ¸tter ikke %s"
  
! #: c/c-decl.cc:13103 c/c-parser.cc:3368 c/c-parser.cc:4739 c/c-parser.cc:10755
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support `long long'"
  msgid "ISO C90 does not support %qE"
  msgstr "ISO C90 understÃ¸tter ikke 'long long'"
  
! #: c/c-decl.cc:13129
  #, fuzzy, gcc-internal-format
  #| msgid "`__thread' before `extern'"
  msgid "%<__thread%> before %<extern%>"
  msgstr "'__thread' fÃ¸r 'extern'"
  
! #: c/c-decl.cc:13138
  #, fuzzy, gcc-internal-format
  #| msgid "`__thread' before `static'"
  msgid "%<__thread%> before %<static%>"
  msgstr "'__thread' fÃ¸r 'static'"
  
! #: c/c-decl.cc:13144
  #, fuzzy, gcc-internal-format
  #| msgid "typedef declared %<auto%>"
  msgid "%<typedef%> used with %<auto%>"
  msgstr "typedef erklÃ¦ret %<auto%>"
  
! #: c/c-decl.cc:13151
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<decltype%>"
  msgid "%qE used with %<extern%>"
  msgstr "forventede %<decltype%>"
  
! #: c/c-decl.cc:13159
  #, fuzzy, gcc-internal-format
  #| msgid "%s used with `%%%c' %s format"
  msgid "%qE used with %qs"
  msgstr "%s brugt med '%%%c' %s-formatering"
  
! #: c/c-decl.cc:13172
  #, gcc-internal-format
  msgid "duplicate %<_Thread_local%> or %<__thread%>"
  msgstr ""
  
! #: c/c-decl.cc:13188
  #, fuzzy, gcc-internal-format
  #| msgid "%s used with `%%%c' %s format"
  msgid "%qs used with %qE"
  msgstr "%s brugt med '%%%c' %s-formatering"
  
! #: c/c-decl.cc:13196
  #, fuzzy, gcc-internal-format
  #| msgid "%s used with `%%%c' %s format"
  msgid "%<constexpr%> used with %qE"
  msgstr "%s brugt med '%%%c' %s-formatering"
  
! #: c/c-decl.cc:13273
  #, gcc-internal-format
  msgid "%<_Sat%> is used without %<_Fract%> or %<_Accum%>"
  msgstr ""
  
! #: c/c-decl.cc:13288
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support plain `complex' meaning `double complex'"
  msgid "ISO C does not support plain %<complex%> meaning %<double complex%>"
  msgstr "ISO C understÃ¸tter ikke at blot 'complex' betyder 'double complex'"
  
! #: c/c-decl.cc:13299
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support %<auto%> type deduction before C23"
  msgstr "ISO C understÃ¸tter ikke komplekse heltalstyper"
  
! #: c/c-decl.cc:13328
  #, gcc-internal-format
  msgid "%<__auto_type%> followed by %<[[]]%> attributes"
  msgstr ""
  
! #: c/c-decl.cc:13354 c/c-decl.cc:13370 c/c-decl.cc:13396
  #, gcc-internal-format
  msgid "ISO C does not support complex integer types"
  msgstr "ISO C understÃ¸tter ikke komplekse heltalstyper"
  
! #: c/c-decl.cc:13542
  #, fuzzy, gcc-internal-format
  #| msgid "left argument must be a slice"
  msgid "%<signed _BitInt%> argument must be at least 2"
  msgstr "venstre parameter skal vÃ¦re en skive"
  
! #: c/c-decl.cc:13551
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ does not support `long long'"
  msgid "ISO C does not support %<%s_BitInt(%d)%> before C23"
  msgstr "ISO C++ understÃ¸tter ikke 'long long'"
  
! #: c/c-decl.cc:13851 cp/semantics.cc:6784
  #, gcc-internal-format
  msgid "%<#pragma omp declare reduction%> combiner refers to variable %qD which is not %<omp_out%> nor %<omp_in%>"
  msgstr ""
  
! #: c/c-decl.cc:13855 cp/semantics.cc:6788
  #, gcc-internal-format
  msgid "%<#pragma omp declare reduction%> initializer refers to variable %qD which is not %<omp_priv%> nor %<omp_orig%>"
  msgstr ""
  
! #: c/c-decl.cc:13979
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support complex types"
  msgid "ISO C does not support %qs statement with an identifier operand before C2Y"
  msgstr "ISO C90 understÃ¸tter ikke komplekse typer"
  
! #: c/c-decl.cc:14031
  #, fuzzy, gcc-internal-format
  msgid "%<break%> statement operand %qE does not refer to a named loop or %<switch%>; did you mean %qs?"
  msgstr "'%D' erklÃ¦rer ikke en skabelonstype"
  
! #: c/c-decl.cc:14035
  #, fuzzy, gcc-internal-format
  msgid "%<continue%> statement operand %qE does not refer to a named loop; did you mean %qs?"
  msgstr "'%D' erklÃ¦rer ikke en skabelonstype"
  
! #: c/c-decl.cc:14040
  #, fuzzy, gcc-internal-format
  #| msgid "break statement not within loop or switch"
  msgid "%<break%> statement operand %qE does not refer to a named loop or %<switch%>"
  msgstr "break-sÃ¦tning befinder sig ikke i en lÃ¸kke- eller switch-konstruktion"
  
! #: c/c-decl.cc:14043
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute only applies to function types"
  msgid "%<continue%> statement operand %qE does not refer to a named loop"
  msgstr "egenskaben '%s' kan kun anvendes sammen med funktionstyper"
  
! #: c/c-decl.cc:14049
  #, gcc-internal-format
  msgid "%<continue%> statement operand %qE refers to a named %<switch%>"
  msgstr ""
  
! #: c/c-decl.cc:14051 c/c-decl.cc:14068
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' previously defined here"
  msgid "%<switch%> name defined here"
  msgstr "'%s' tidligere defineret her"
  
! #: c/c-decl.cc:14059
  #, gcc-internal-format
  msgid "%qs statement operand %qE refers to a loop outside of its body"
  msgstr ""
  
! #: c/c-decl.cc:14061
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' previously defined here"
  msgid "loop name defined here"
  msgstr "'%s' tidligere defineret her"
  
! #: c/c-decl.cc:14065
  #, gcc-internal-format
  msgid "%<break%> statement operand %qE refers to a %<switch%> outside of its body"
  msgstr ""
*************** msgstr ""
*** 51731,51769 ****
  msgid "%qs is a keyword with %qs onwards"
  msgstr "-frepo skal bruges med -c"
  
! #: c/c-fold.cc:392 c/c-typeck.cc:14134 cp/typeck.cc:5803
  #, fuzzy, gcc-internal-format
  #| msgid "left shift count is negative"
  msgid "left shift of negative value"
  msgstr "venstreskiftsantal er negativ"
  
! #: c/c-fold.cc:405 c/c-typeck.cc:14143 cp/typeck.cc:5811
  #, gcc-internal-format
  msgid "left shift count is negative"
  msgstr "venstreskiftsantal er negativ"
  
! #: c/c-fold.cc:406 c/c-typeck.cc:14070 cp/typeck.cc:5750
  #, gcc-internal-format
  msgid "right shift count is negative"
  msgstr "hÃ¸jreskiftsantal er negativ"
  
! #: c/c-fold.cc:416 c/c-typeck.cc:14162 cp/typeck.cc:5819
  #, gcc-internal-format
  msgid "left shift count >= width of type"
  msgstr "venstreskiftsantal er stÃ¸rre end bredden af typen"
  
! #: c/c-fold.cc:417 c/c-typeck.cc:14094 cp/typeck.cc:5761
  #, gcc-internal-format
  msgid "right shift count >= width of type"
  msgstr "hÃ¸jreskiftsantal er stÃ¸rre end bredden af typen"
  
! #: c/c-fold.cc:424 c/c-typeck.cc:14154
  #, fuzzy, gcc-internal-format
  #| msgid "left shift count >= width of type"
  msgid "left shift count >= width of vector element"
  msgstr "venstreskiftsantal er stÃ¸rre end bredden af typen"
  
! #: c/c-fold.cc:425 c/c-typeck.cc:14081
  #, fuzzy, gcc-internal-format
  #| msgid "right shift count >= width of type"
  msgid "right shift count >= width of vector element"
--- 51740,51778 ----
  msgid "%qs is a keyword with %qs onwards"
  msgstr "-frepo skal bruges med -c"
  
! #: c/c-fold.cc:392 c/c-typeck.cc:14151 cp/typeck.cc:5919
  #, fuzzy, gcc-internal-format
  #| msgid "left shift count is negative"
  msgid "left shift of negative value"
  msgstr "venstreskiftsantal er negativ"
  
! #: c/c-fold.cc:405 c/c-typeck.cc:14160 cp/typeck.cc:5927
  #, gcc-internal-format
  msgid "left shift count is negative"
  msgstr "venstreskiftsantal er negativ"
  
! #: c/c-fold.cc:406 c/c-typeck.cc:14087 cp/typeck.cc:5866
  #, gcc-internal-format
  msgid "right shift count is negative"
  msgstr "hÃ¸jreskiftsantal er negativ"
  
! #: c/c-fold.cc:416 c/c-typeck.cc:14179 cp/typeck.cc:5935
  #, gcc-internal-format
  msgid "left shift count >= width of type"
  msgstr "venstreskiftsantal er stÃ¸rre end bredden af typen"
  
! #: c/c-fold.cc:417 c/c-typeck.cc:14111 cp/typeck.cc:5877
  #, gcc-internal-format
  msgid "right shift count >= width of type"
  msgstr "hÃ¸jreskiftsantal er stÃ¸rre end bredden af typen"
  
! #: c/c-fold.cc:424 c/c-typeck.cc:14171
  #, fuzzy, gcc-internal-format
  #| msgid "left shift count >= width of type"
  msgid "left shift count >= width of vector element"
  msgstr "venstreskiftsantal er stÃ¸rre end bredden af typen"
  
! #: c/c-fold.cc:425 c/c-typeck.cc:14098
  #, fuzzy, gcc-internal-format
  #| msgid "right shift count >= width of type"
  msgid "right shift count >= width of vector element"
*************** msgstr ""
*** 51785,51926 ****
  msgid "to match this %qs"
  msgstr "  anden type her"
  
! #: c/c-parser.cc:1431 cp/parser.cc:35328
  #, fuzzy, gcc-internal-format
  #| msgid "garbage at end of #line"
  msgid "expected end of line"
  msgstr "ragelse i slutningen af #line"
  
! #: c/c-parser.cc:1950
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids an empty source file"
  msgid "ISO C forbids an empty translation unit"
  msgstr "ISO C forbyder en tom kildefil"
  
! #: c/c-parser.cc:1976 c/c-parser.cc:1985 c/c-parser.cc:27770 cp/parser.cc:51250
  #: cp/semantics.cc:4007 cp/semantics.cc:4016
  #, gcc-internal-format
  msgid "%qs without corresponding %qs"
  msgstr ""
  
! #: c/c-parser.cc:2081 c/c-parser.cc:14533
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not allow extra `;' outside of a function"
  msgid "ISO C does not allow extra %<;%> outside of a function"
  msgstr "ISO C tillader ikke ekstra ';' uden for funktioner"
  
! #: c/c-parser.cc:2165
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute only applies to variables"
  msgid "%<assume%> attribute at top level"
  msgstr "egenskaben '%s' kan kun anvendes pÃ¥ variabler"
  
! #: c/c-parser.cc:2364
  #, gcc-internal-format
  msgid "unknown type name %qE; use %<struct%> keyword to refer to the type"
  msgstr ""
  
! #: c/c-parser.cc:2372
  #, gcc-internal-format
  msgid "unknown type name %qE; use %<union%> keyword to refer to the type"
  msgstr ""
  
! #: c/c-parser.cc:2380
  #, gcc-internal-format
  msgid "unknown type name %qE; use %<enum%> keyword to refer to the type"
  msgstr ""
  
! #: c/c-parser.cc:2393 c/c-parser.cc:3588 c/c-parser.cc:5295
  #, fuzzy, gcc-internal-format
  #| msgid "'%D' has no member named '%E'"
  msgid "unknown type name %qE; did you mean %qs?"
  msgstr "'%D' har intet medlem ved navn '%E'"
  
! #: c/c-parser.cc:2397 c/c-parser.cc:3592 c/c-parser.cc:5299
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown type name %qE"
  msgstr "ukendt registernavn: %s"
  
! #: c/c-parser.cc:2424 c/c-parser.cc:15911 c/c-parser.cc:24927
! #: c/c-parser.cc:25670 c/c-parser.cc:26256 cp/parser.cc:48093
! #: cp/parser.cc:53871
  #, fuzzy, gcc-internal-format
  #| msgid "repeated declaration of unit `%s'"
  msgid "expected declaration specifiers"
  msgstr "gentaget erklÃ¦ring af enheden '%s'"
  
! #: c/c-parser.cc:2448
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' declared with an exception specification"
  msgid "%qT declared in underspecified object declaration"
  msgstr "'%D' erklÃ¦ret med en undtagelsesspecifikation"
  
! #: c/c-parser.cc:2453
  #, fuzzy, gcc-internal-format
  #| msgid "%<inline%> specified for friend class declaration"
  msgid "%qT defined in underspecified object declaration"
  msgstr "%<inline%> angivet for friend class-erklÃ¦ring"
  
! #: c/c-parser.cc:2489
  #, fuzzy, gcc-internal-format
  #| msgid "useless %qs in empty declaration"
  msgid "%qs in empty declaration"
  msgstr "ubrugelig %qs i tom erklÃ¦ring"
  
! #: c/c-parser.cc:2503
  #, fuzzy, gcc-internal-format
  msgid "%<fallthrough%> attribute at top level"
  msgstr "sektionsegenskaben er ikke tilladt for '%s'"
  
! #: c/c-parser.cc:2541 c/c-parser.cc:8296
  #, gcc-internal-format
  msgid "attribute %<musttail%> mixed with other attributes on %<return%> statement"
  msgstr ""
  
! #: c/c-parser.cc:2557 c/c-parser.cc:4483
  #, gcc-internal-format
  msgid "expected %<;%>, identifier or %<(%>"
  msgstr ""
  
! #: c/c-parser.cc:2575 cp/parser.cc:37586 cp/parser.cc:37658
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute ignored for `%s'"
  msgid "prefix attributes are ignored for methods"
  msgstr "'%s'-egenskaben ignoreret for '%s'"
  
! #: c/c-parser.cc:2610
  #, fuzzy, gcc-internal-format
  msgid "prefix attributes are ignored for implementations"
  msgstr "egenskaben '%s' kan kun anvendes med klassedefinitioner"
  
! #: c/c-parser.cc:2631
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected operand"
  msgid "unexpected attribute"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:2641 c/c-parser.cc:8316 cp/parser.cc:13359 cp/parser.cc:13620
  #, fuzzy, gcc-internal-format
  msgid "%<fallthrough%> attribute not followed by %<;%>"
  msgstr "sektionsegenskaben er ikke tilladt for '%s'"
  
! #: c/c-parser.cc:2644 c/c-parser.cc:8283 cp/cp-gimplify.cc:3684
  #, fuzzy, gcc-internal-format
  msgid "%<assume%> attribute not followed by %<;%>"
  msgstr "sektionsegenskaben er ikke tilladt for '%s'"
  
! #: c/c-parser.cc:2694
  #, gcc-internal-format
  msgid "%<__auto_type%> requires a plain identifier as declarator"
  msgstr ""
  
! #: c/c-parser.cc:2707
  #, gcc-internal-format
  msgid "%<auto%> requires a plain identifier, possibly with attributes, as declarator"
  msgstr ""
  
! #: c/c-parser.cc:2733
  #, gcc-internal-format
  msgid "data definition has no type or storage class"
  msgstr "definition af data uden angivelse af type eller lagringsklasse"
--- 51794,51935 ----
  msgid "to match this %qs"
  msgstr "  anden type her"
  
! #: c/c-parser.cc:1476 cp/parser.cc:35387
  #, fuzzy, gcc-internal-format
  #| msgid "garbage at end of #line"
  msgid "expected end of line"
  msgstr "ragelse i slutningen af #line"
  
! #: c/c-parser.cc:1995
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids an empty source file"
  msgid "ISO C forbids an empty translation unit"
  msgstr "ISO C forbyder en tom kildefil"
  
! #: c/c-parser.cc:2021 c/c-parser.cc:2030 c/c-parser.cc:27816 cp/parser.cc:51309
  #: cp/semantics.cc:4007 cp/semantics.cc:4016
  #, gcc-internal-format
  msgid "%qs without corresponding %qs"
  msgstr ""
  
! #: c/c-parser.cc:2126 c/c-parser.cc:14578
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not allow extra `;' outside of a function"
  msgid "ISO C does not allow extra %<;%> outside of a function"
  msgstr "ISO C tillader ikke ekstra ';' uden for funktioner"
  
! #: c/c-parser.cc:2210
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute only applies to variables"
  msgid "%<assume%> attribute at top level"
  msgstr "egenskaben '%s' kan kun anvendes pÃ¥ variabler"
  
! #: c/c-parser.cc:2409
  #, gcc-internal-format
  msgid "unknown type name %qE; use %<struct%> keyword to refer to the type"
  msgstr ""
  
! #: c/c-parser.cc:2417
  #, gcc-internal-format
  msgid "unknown type name %qE; use %<union%> keyword to refer to the type"
  msgstr ""
  
! #: c/c-parser.cc:2425
  #, gcc-internal-format
  msgid "unknown type name %qE; use %<enum%> keyword to refer to the type"
  msgstr ""
  
! #: c/c-parser.cc:2438 c/c-parser.cc:3633 c/c-parser.cc:5340
  #, fuzzy, gcc-internal-format
  #| msgid "'%D' has no member named '%E'"
  msgid "unknown type name %qE; did you mean %qs?"
  msgstr "'%D' har intet medlem ved navn '%E'"
  
! #: c/c-parser.cc:2442 c/c-parser.cc:3637 c/c-parser.cc:5344
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown type name %qE"
  msgstr "ukendt registernavn: %s"
  
! #: c/c-parser.cc:2469 c/c-parser.cc:15956 c/c-parser.cc:24972
! #: c/c-parser.cc:25715 c/c-parser.cc:26301 cp/parser.cc:48152
! #: cp/parser.cc:53924
  #, fuzzy, gcc-internal-format
  #| msgid "repeated declaration of unit `%s'"
  msgid "expected declaration specifiers"
  msgstr "gentaget erklÃ¦ring af enheden '%s'"
  
! #: c/c-parser.cc:2493
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' declared with an exception specification"
  msgid "%qT declared in underspecified object declaration"
  msgstr "'%D' erklÃ¦ret med en undtagelsesspecifikation"
  
! #: c/c-parser.cc:2498
  #, fuzzy, gcc-internal-format
  #| msgid "%<inline%> specified for friend class declaration"
  msgid "%qT defined in underspecified object declaration"
  msgstr "%<inline%> angivet for friend class-erklÃ¦ring"
  
! #: c/c-parser.cc:2534
  #, fuzzy, gcc-internal-format
  #| msgid "useless %qs in empty declaration"
  msgid "%qs in empty declaration"
  msgstr "ubrugelig %qs i tom erklÃ¦ring"
  
! #: c/c-parser.cc:2548
  #, fuzzy, gcc-internal-format
  msgid "%<fallthrough%> attribute at top level"
  msgstr "sektionsegenskaben er ikke tilladt for '%s'"
  
! #: c/c-parser.cc:2586 c/c-parser.cc:8341
  #, gcc-internal-format
  msgid "attribute %<musttail%> mixed with other attributes on %<return%> statement"
  msgstr ""
  
! #: c/c-parser.cc:2602 c/c-parser.cc:4528
  #, gcc-internal-format
  msgid "expected %<;%>, identifier or %<(%>"
  msgstr ""
  
! #: c/c-parser.cc:2620 cp/parser.cc:37645 cp/parser.cc:37717
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute ignored for `%s'"
  msgid "prefix attributes are ignored for methods"
  msgstr "'%s'-egenskaben ignoreret for '%s'"
  
! #: c/c-parser.cc:2655
  #, fuzzy, gcc-internal-format
  msgid "prefix attributes are ignored for implementations"
  msgstr "egenskaben '%s' kan kun anvendes med klassedefinitioner"
  
! #: c/c-parser.cc:2676
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected operand"
  msgid "unexpected attribute"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:2686 c/c-parser.cc:8361 cp/parser.cc:13361 cp/parser.cc:13622
  #, fuzzy, gcc-internal-format
  msgid "%<fallthrough%> attribute not followed by %<;%>"
  msgstr "sektionsegenskaben er ikke tilladt for '%s'"
  
! #: c/c-parser.cc:2689 c/c-parser.cc:8328 cp/cp-gimplify.cc:3689
  #, fuzzy, gcc-internal-format
  msgid "%<assume%> attribute not followed by %<;%>"
  msgstr "sektionsegenskaben er ikke tilladt for '%s'"
  
! #: c/c-parser.cc:2739
  #, gcc-internal-format
  msgid "%<__auto_type%> requires a plain identifier as declarator"
  msgstr ""
  
! #: c/c-parser.cc:2752
  #, gcc-internal-format
  msgid "%<auto%> requires a plain identifier, possibly with attributes, as declarator"
  msgstr ""
  
! #: c/c-parser.cc:2778
  #, gcc-internal-format
  msgid "data definition has no type or storage class"
  msgstr "definition af data uden angivelse af type eller lagringsklasse"
*************** msgstr "definition af data uden angivels
*** 51928,51961 ****
  #. This means there is an attribute specifier after
  #. the declarator in a function definition.  Provide
  #. some more information for the user.
! #: c/c-parser.cc:2748
  #, fuzzy, gcc-internal-format
  msgid "attributes should be specified before the declarator in a function definition"
  msgstr "en global registervariabel fÃ¸lger en funktionsdefinition"
  
! #: c/c-parser.cc:2787
  #, gcc-internal-format
  msgid "%<__auto_type%> used with a bit-field initializer"
  msgstr ""
  
! #: c/c-parser.cc:2899 c/c-parser.cc:3044
  #, fuzzy, gcc-internal-format
  #| msgid "assignment (not initialization) in declaration"
  msgid "%qs requires an initialized data declaration"
  msgstr "tildeling (ikke klargÃ¸ring) i erklÃ¦ring"
  
! #: c/c-parser.cc:2999
  #, fuzzy, gcc-internal-format
  #| msgid "-mn is used without -mh or -ms"
  msgid "%qs may only be used with a single declarator"
  msgstr "-mn benyttet uden -mh eller -ms"
  
! #: c/c-parser.cc:3031 cp/parser.cc:16635
  #, gcc-internal-format
  msgid "expected %<,%> or %<;%>"
  msgstr ""
  
! #: c/c-parser.cc:3036
  #, fuzzy, gcc-internal-format
  #| msgid "declaration does not declare anything"
  msgid "declaration in condition can only declare a single object"
--- 51937,51970 ----
  #. This means there is an attribute specifier after
  #. the declarator in a function definition.  Provide
  #. some more information for the user.
! #: c/c-parser.cc:2793
  #, fuzzy, gcc-internal-format
  msgid "attributes should be specified before the declarator in a function definition"
  msgstr "en global registervariabel fÃ¸lger en funktionsdefinition"
  
! #: c/c-parser.cc:2832
  #, gcc-internal-format
  msgid "%<__auto_type%> used with a bit-field initializer"
  msgstr ""
  
! #: c/c-parser.cc:2944 c/c-parser.cc:3089
  #, fuzzy, gcc-internal-format
  #| msgid "assignment (not initialization) in declaration"
  msgid "%qs requires an initialized data declaration"
  msgstr "tildeling (ikke klargÃ¸ring) i erklÃ¦ring"
  
! #: c/c-parser.cc:3044
  #, fuzzy, gcc-internal-format
  #| msgid "-mn is used without -mh or -ms"
  msgid "%qs may only be used with a single declarator"
  msgstr "-mn benyttet uden -mh eller -ms"
  
! #: c/c-parser.cc:3076 cp/parser.cc:16639
  #, gcc-internal-format
  msgid "expected %<,%> or %<;%>"
  msgstr ""
  
! #: c/c-parser.cc:3081
  #, fuzzy, gcc-internal-format
  #| msgid "declaration does not declare anything"
  msgid "declaration in condition can only declare a single object"
*************** msgstr "erklÃ¦ring erklÃ¦rer ikke noget"
*** 51964,52362 ****
  #. This can appear in many cases looking nothing like a
  #. function definition, so we don't give a more specific
  #. error suggesting there was one.
! #: c/c-parser.cc:3055 c/c-parser.cc:3097
  #, gcc-internal-format
  msgid "expected %<=%>, %<,%>, %<;%>, %<asm%> or %<__attribute__%>"
  msgstr ""
  
! #: c/c-parser.cc:3064
  #, gcc-internal-format
  msgid "ISO C forbids nested functions"
  msgstr "ISO C forbyder indlejrede funktioner"
  
! #: c/c-parser.cc:3346 c/c-parser.cc:9636 c/c-parser.cc:15984
! #: c/c-parser.cc:20710 cp/parser.cc:42983
  #, fuzzy, gcc-internal-format
  #| msgid "_Pragma takes a parenthesized string literal"
  msgid "expected string literal"
  msgstr "_Pragma tager en strengkonstant med paranteser omkring"
  
! #: c/c-parser.cc:3355
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support complex types"
  msgid "ISO C11 does not support omitting the string in %qE"
  msgstr "ISO C90 understÃ¸tter ikke komplekse typer"
  
! #: c/c-parser.cc:3361
  #, fuzzy, gcc-internal-format
  #| msgid "array subscript is not an integer"
  msgid "expression in static assertion is not an integer"
  msgstr "tabelindeks er ikke et heltal"
  
! #: c/c-parser.cc:3370
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "expression in static assertion is not an integer constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: c/c-parser.cc:3375
  #, fuzzy, gcc-internal-format
  #| msgid "initializer for static variable is not constant"
  msgid "expression in static assertion is not constant"
  msgstr "startvÃ¦rdien for den statiske variabel er ikke en konstant"
  
! #: c/c-parser.cc:3382
  #, gcc-internal-format
  msgid "static assertion failed: %E"
  msgstr ""
  
! #: c/c-parser.cc:3384 cp/semantics.cc:12469
  #, fuzzy, gcc-internal-format
  #| msgid "verification error at PC=%d"
  msgid "static assertion failed"
  msgstr "verifikationsfejl ved PC=%d"
  
! #: c/c-parser.cc:3764
  #, gcc-internal-format
  msgid "%<_Atomic%> in Objective-C"
  msgstr ""
  
! #: c/c-parser.cc:3767
  #, fuzzy, gcc-internal-format
  #| msgid "%s does not support the `%s' %s length modifier"
  msgid "ISO C99 does not support the %<_Atomic%> qualifier"
  msgstr "%s understÃ¸tter ikke '%s' %s-lÃ¦ngdemodifikationen"
  
! #: c/c-parser.cc:3770
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support complex types"
  msgid "ISO C90 does not support the %<_Atomic%> qualifier"
  msgstr "ISO C90 understÃ¸tter ikke komplekse typer"
  
! #: c/c-parser.cc:3798
  #, fuzzy, gcc-internal-format
  #| msgid "sizeof applied to a void type"
  msgid "%<_Atomic%> applied to a qualified type"
  msgstr "sizeof benyttet pÃ¥ en void-type"
  
! #: c/c-parser.cc:3828
  #, gcc-internal-format
  msgid "%<__GIMPLE%> only valid with %<-fgimple%>"
  msgstr ""
  
! #: c/c-parser.cc:3865
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "empty enum is invalid"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: c/c-parser.cc:3876
  #, fuzzy, gcc-internal-format
  #| msgid "cannot convert to a pointer type"
  msgid "cannot use keyword %qs as enumeration constant"
  msgstr "kan ikke konverteres til en henvisningstype"
  
  #. Otherwise, a more generic error message.
! #: c/c-parser.cc:3888 c/c-parser.cc:5120 c/c-parser.cc:5978 c/c-parser.cc:5995
! #: c/c-parser.cc:6580 c/c-parser.cc:7489 c/c-parser.cc:9503 c/c-parser.cc:9586
! #: c/c-parser.cc:10566 c/c-parser.cc:10881 c/c-parser.cc:10890
! #: c/c-parser.cc:11503 c/c-parser.cc:11791 c/c-parser.cc:11822
! #: c/c-parser.cc:13189 c/c-parser.cc:13763 c/c-parser.cc:13801
! #: c/c-parser.cc:14115 c/c-parser.cc:14166 c/c-parser.cc:14326
! #: c/c-parser.cc:14356 c/c-parser.cc:14364 c/c-parser.cc:14393
! #: c/c-parser.cc:14406 c/c-parser.cc:14712 c/c-parser.cc:14836
! #: c/c-parser.cc:15421 c/c-parser.cc:15474 c/c-parser.cc:15490
! #: c/c-parser.cc:15536 c/c-parser.cc:16557 c/c-parser.cc:16602
! #: c/c-parser.cc:19478 c/c-parser.cc:19615 c/c-parser.cc:20481
! #: c/c-parser.cc:23540 c/c-parser.cc:26738 c/c-parser.cc:26924
! #: c/gimple-parser.cc:1981 c/gimple-parser.cc:2028 cp/parser.cc:9871
! #: cp/parser.cc:35331 cp/parser.cc:38563 cp/parser.cc:41808 cp/parser.cc:42000
! #: cp/parser.cc:49790 cp/parser.cc:53098
  #, fuzzy, gcc-internal-format
  msgid "expected identifier"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:3961
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support specifying %<enum%> underlying types before C23"
  msgstr "ISO C understÃ¸tter ikke komplekse heltalstyper"
  
! #: c/c-parser.cc:3970
  #, gcc-internal-format
  msgid "%<enum%> declared both with and without fixed underlying type"
  msgstr ""
  
! #: c/c-parser.cc:3993
  #, fuzzy, gcc-internal-format
  #| msgid "no input file specified"
  msgid "no %<enum%> underlying type specified"
  msgstr "ingen inddatafiler angivet"
  
! #: c/c-parser.cc:3997
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of undefined type `%s %s'"
  msgid "invalid %<enum%> underlying type"
  msgstr "ugyldig brug af en type '%s %s' der ikke er defineret"
  
! #: c/c-parser.cc:4027
  #, fuzzy, gcc-internal-format
  #| msgid "type mismatch with previous implicit declaration"
  msgid "%<enum%> underlying type incompatible with previous declaration"
  msgstr "typen passer ikke med tidligere underforstÃ¥et erklÃ¦ring"
  
! #: c/c-parser.cc:4103 cp/parser.cc:22433
  #, gcc-internal-format
  msgid "comma at end of enumerator list"
  msgstr "komma i slutningen af enum-liste"
  
! #: c/c-parser.cc:4109 c/c-parser.cc:20758 cp/parser.cc:43046
  #: go/gofrontend/embed.cc:424
  #, gcc-internal-format
  msgid "expected %<,%> or %<}%>"
  msgstr ""
  
! #: c/c-parser.cc:4152
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids forward references to `enum' types"
  msgid "ISO C forbids forward references to %<enum%> types"
  msgstr "ISO C forbyder forhÃ¥ndsreferencer til 'enum'-typer"
  
! #: c/c-parser.cc:4277
  #, fuzzy, gcc-internal-format
  msgid "expected class name"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:4299
  #, gcc-internal-format
  msgid "extra semicolon in struct or union specified"
  msgstr "ekstra semikolon angivet i struct eller union"
  
! #: c/c-parser.cc:4328
  #, gcc-internal-format
  msgid "no semicolon at end of struct or union"
  msgstr "intet semikolon i slutningen af struct eller union"
  
! #: c/c-parser.cc:4445 c/c-parser.cc:6320
  #, gcc-internal-format
  msgid "expected specifier-qualifier-list"
  msgstr ""
  
! #: c/c-parser.cc:4456
  #, gcc-internal-format
  msgid "ISO C forbids member declarations with no members"
  msgstr "ISO C forbyder medlemserklÃ¦ringer uden medlemmer"
  
! #: c/c-parser.cc:4550
  #, gcc-internal-format
  msgid "expected %<,%>, %<;%> or %<}%>"
  msgstr ""
  
! #: c/c-parser.cc:4557
  #, gcc-internal-format
  msgid "expected %<:%>, %<,%>, %<;%>, %<}%> or %<__attribute__%>"
  msgstr ""
  
! #: c/c-parser.cc:4629
  #, fuzzy, gcc-internal-format
  msgid "%<typeof%> applied to a bit-field"
  msgstr "'sizeof' benyttet pÃ¥ et bitfelt"
  
! #: c/c-parser.cc:4951
  #, gcc-internal-format
  msgid "expected identifier or %<(%>"
  msgstr ""
  
! #: c/c-parser.cc:5013
  #, fuzzy, gcc-internal-format
  #| msgid "`static' may not be used when defining (as opposed to declaring) a static data member"
  msgid "%<static%> may not be used with an unspecified variable length array size"
  msgstr "'static' mÃ¥ ikke bruges ved definering (i modsÃ¦tning til erklÃ¦ring) af et statisk datamedlem"
  
! #: c/c-parser.cc:5021
  #, fuzzy, gcc-internal-format
  msgid "%<static%> may not be used without an array size"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: c/c-parser.cc:5181
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C requires a named argument before `...'"
  msgid "ISO C requires a named argument before %<...%> before C23"
  msgstr "ISO C pÃ¥krÃ¦ver en navngiven parameter fÃ¸r '...'"
  
! #: c/c-parser.cc:5306
  #, fuzzy, gcc-internal-format
  #| msgid "top-level declaration of `%s' specifies `auto'"
  msgid "expected declaration specifiers or %<...%>"
  msgstr "erklÃ¦ring af '%s' pÃ¥ Ã¸verste niveau angiver 'auto'"
  
! #: c/c-parser.cc:5536
  #, gcc-internal-format
  msgid "parentheses must be omitted if attribute argument list is empty"
  msgstr ""
  
! #: c/c-parser.cc:5824 cp/parser.cc:30738
  #, fuzzy, gcc-internal-format
  #| msgid "expected function"
  msgid "expected OpenMP directive name"
  msgstr "forventet funktion"
  
! #: c/c-parser.cc:5871 cp/parser.cc:30794
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<:%> or %<::%>"
  msgid "expected %<directive%> or %<sequence%>"
  msgstr "forventede %<:%> or %<::%>"
  
! #: c/c-parser.cc:6016 cp/parser.cc:30962
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute requires an integer constant argument"
  msgid "%<omp::%E%> attribute requires argument"
  msgstr "egenskaben '%s' krÃ¦ver en heltalskonstant som parameter"
  
! #: c/c-parser.cc:6032 cp/parser.cc:30978
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute requires an integer constant argument"
  msgid "%qE attribute does not take any arguments"
  msgstr "egenskaben '%s' krÃ¦ver en heltalskonstant som parameter"
  
! #: c/c-parser.cc:6153
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support %<[*]%> array declarators"
  msgid "ISO C does not support %<[[]]%> attributes before C23"
  msgstr "ISO C90 understÃ¸tter ikke %<[*]%> arrayerklÃ¦ringer"
  
! #: c/c-parser.cc:6397 c/c-parser.cc:6463 c/c-typeck.cc:9642
  #, fuzzy, gcc-internal-format
  #| msgid "variable-sized object may not be initialized"
  msgid "variable-sized object may not be initialized except with an empty initializer"
  msgstr "et objekt af variabel stÃ¸rrelse mÃ¥ ikke tildeles en startvÃ¦rdi"
  
! #: c/c-parser.cc:6455
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids empty initializer braces"
  msgid "ISO C forbids empty initializer braces before C23"
  msgstr "ISO C forbyder tom startvÃ¦rdiblok"
  
! #: c/c-parser.cc:6544
  #, fuzzy, gcc-internal-format
  #| msgid "obsolete use of designated initializer with `:'"
  msgid "obsolete use of designated initializer with %<:%>"
  msgstr "forÃ¦ldet brug af udpeget startvÃ¦rdi med ':'"
  
! #: c/c-parser.cc:6700
  #, gcc-internal-format
  msgid "ISO C forbids specifying range of elements to initialize"
  msgstr "ISO C forbyder angivelse af interval af elementer til klargÃ¸ring"
  
! #: c/c-parser.cc:6712
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 forbids specifying subobject to initialize"
  msgid "ISO C90 forbids specifying subobject to initialize"
  msgstr "ISO C89 forbyder angivelse af underobjekt til klargÃ¸ring"
  
  # RETMIG: hm, gad vide om dette er rigtigt
! #: c/c-parser.cc:6720
  #, fuzzy, gcc-internal-format
  #| msgid "obsolete use of designated initializer without `='"
  msgid "obsolete use of designated initializer without %<=%>"
  msgstr "forÃ¦ldet brug af udpeget startvÃ¦rdi uden '='"
  
! #: c/c-parser.cc:7007 cp/parser.cc:13742
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested in %<#pragma acc loop%>"
  msgstr ""
  
! #: c/c-parser.cc:7014 cp/parser.cc:13749
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested with %<ordered%> clause"
  msgstr ""
  
! #: c/c-parser.cc:7021 cp/parser.cc:13756
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested with %<reduction%> %<inscan%> clause"
  msgstr ""
  
! #: c/c-parser.cc:7028
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested in %<pragma omp tile%>"
  msgstr ""
  
! #: c/c-parser.cc:7084 c/c-parser.cc:7239 cp/parser.cc:12633 cp/parser.cc:12783
! #: cp/parser.cc:50777
  #, gcc-internal-format
  msgid "mixing OpenMP directives with attribute and pragma syntax on the same statement"
  msgstr ""
  
! #: c/c-parser.cc:7092 cp/parser.cc:12641
  #, gcc-internal-format
  msgid "OpenMP %<omp::decl%> attribute on a statement"
  msgstr ""
  
! #: c/c-parser.cc:7116 c/c-parser.cc:7337 c/c-parser.cc:27447 cp/parser.cc:12665
! #: cp/parser.cc:50757 cp/parser.cc:50896
  #, gcc-internal-format
  msgid "unknown OpenMP directive name in %qs attribute argument"
  msgstr ""
  
! #: c/c-parser.cc:7208 cp/parser.cc:12752
  #, gcc-internal-format
  msgid "OpenMP construct among %<omp::directive%> attributes requires all %<omp::directive%> attributes on the same statement to be in the same %<omp::sequence%>"
  msgstr ""
  
! #: c/c-parser.cc:7216 cp/parser.cc:12760
  #, gcc-internal-format
  msgid "multiple OpenMP standalone directives among %<omp::directive%> attributes must be all within the same %<omp::sequence%>"
  msgstr ""
  
! #: c/c-parser.cc:7228 cp/parser.cc:12772
  #, gcc-internal-format
  msgid "standalone OpenMP directives in %<omp::directive%> attribute can only appear on an empty statement"
  msgstr ""
  
! #: c/c-parser.cc:7349 cp/parser.cc:12902
  #, gcc-internal-format
  msgid "mixing OpenMP directives with attribute and pragma syntax on the same declaration"
  msgstr ""
  
! #: c/c-parser.cc:7407 cp/parser.cc:15356
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute requires an integer constant argument"
  msgid "%qs attribute does not take any arguments"
  msgstr "egenskaben '%s' krÃ¦ver en heltalskonstant som parameter"
  
! #: c/c-parser.cc:7504
  #, gcc-internal-format
  msgid "ISO C forbids label declarations"
  msgstr "ISO C forbyder etiketerklÃ¦ringer"
  
! #: c/c-parser.cc:7510 c/c-parser.cc:7702 c/c-parser.cc:7728
  #: c/gimple-parser.cc:467
  #, fuzzy, gcc-internal-format
  #| msgid "repeated declaration of automaton `%s'"
  msgid "expected declaration or statement"
  msgstr "gentaget erklÃ¦ring af automaten '%s'"
  
! #: c/c-parser.cc:7629
  #, gcc-internal-format
  msgid "a label can only be part of a statement and a declaration is not a statement"
  msgstr ""
  
! #: c/c-parser.cc:7649 c/c-parser.cc:7692
  #, fuzzy, gcc-internal-format
  msgid "ISO C90 forbids mixed declarations and code"
  msgstr "ISO C89 forbyder blandede erklÃ¦ringer og kode"
  
! #: c/c-parser.cc:7736
  #, gcc-internal-format
  msgid "expected %<}%> before %<else%>"
  msgstr ""
  
! #: c/c-parser.cc:7741 cp/parser.cc:13809
  #, gcc-internal-format
  msgid "%<else%> without a previous %<if%>"
  msgstr ""
  
! #: c/c-parser.cc:7776
  #, fuzzy, gcc-internal-format
  msgid "label at end of compound statement"
  msgstr "forÃ¦ldet brug af etiket i slutningen af sammensat sÃ¦tning"
--- 51973,52371 ----
  #. This can appear in many cases looking nothing like a
  #. function definition, so we don't give a more specific
  #. error suggesting there was one.
! #: c/c-parser.cc:3100 c/c-parser.cc:3142
  #, gcc-internal-format
  msgid "expected %<=%>, %<,%>, %<;%>, %<asm%> or %<__attribute__%>"
  msgstr ""
  
! #: c/c-parser.cc:3109
  #, gcc-internal-format
  msgid "ISO C forbids nested functions"
  msgstr "ISO C forbyder indlejrede funktioner"
  
! #: c/c-parser.cc:3391 c/c-parser.cc:9681 c/c-parser.cc:16029
! #: c/c-parser.cc:20755 cp/parser.cc:43042
  #, fuzzy, gcc-internal-format
  #| msgid "_Pragma takes a parenthesized string literal"
  msgid "expected string literal"
  msgstr "_Pragma tager en strengkonstant med paranteser omkring"
  
! #: c/c-parser.cc:3400
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support complex types"
  msgid "ISO C11 does not support omitting the string in %qE"
  msgstr "ISO C90 understÃ¸tter ikke komplekse typer"
  
! #: c/c-parser.cc:3406
  #, fuzzy, gcc-internal-format
  #| msgid "array subscript is not an integer"
  msgid "expression in static assertion is not an integer"
  msgstr "tabelindeks er ikke et heltal"
  
! #: c/c-parser.cc:3415
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "expression in static assertion is not an integer constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: c/c-parser.cc:3420
  #, fuzzy, gcc-internal-format
  #| msgid "initializer for static variable is not constant"
  msgid "expression in static assertion is not constant"
  msgstr "startvÃ¦rdien for den statiske variabel er ikke en konstant"
  
! #: c/c-parser.cc:3427
  #, gcc-internal-format
  msgid "static assertion failed: %E"
  msgstr ""
  
! #: c/c-parser.cc:3429 cp/semantics.cc:12469
  #, fuzzy, gcc-internal-format
  #| msgid "verification error at PC=%d"
  msgid "static assertion failed"
  msgstr "verifikationsfejl ved PC=%d"
  
! #: c/c-parser.cc:3809
  #, gcc-internal-format
  msgid "%<_Atomic%> in Objective-C"
  msgstr ""
  
! #: c/c-parser.cc:3812
  #, fuzzy, gcc-internal-format
  #| msgid "%s does not support the `%s' %s length modifier"
  msgid "ISO C99 does not support the %<_Atomic%> qualifier"
  msgstr "%s understÃ¸tter ikke '%s' %s-lÃ¦ngdemodifikationen"
  
! #: c/c-parser.cc:3815
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support complex types"
  msgid "ISO C90 does not support the %<_Atomic%> qualifier"
  msgstr "ISO C90 understÃ¸tter ikke komplekse typer"
  
! #: c/c-parser.cc:3843
  #, fuzzy, gcc-internal-format
  #| msgid "sizeof applied to a void type"
  msgid "%<_Atomic%> applied to a qualified type"
  msgstr "sizeof benyttet pÃ¥ en void-type"
  
! #: c/c-parser.cc:3873
  #, gcc-internal-format
  msgid "%<__GIMPLE%> only valid with %<-fgimple%>"
  msgstr ""
  
! #: c/c-parser.cc:3910
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "empty enum is invalid"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: c/c-parser.cc:3921
  #, fuzzy, gcc-internal-format
  #| msgid "cannot convert to a pointer type"
  msgid "cannot use keyword %qs as enumeration constant"
  msgstr "kan ikke konverteres til en henvisningstype"
  
  #. Otherwise, a more generic error message.
! #: c/c-parser.cc:3933 c/c-parser.cc:5165 c/c-parser.cc:6023 c/c-parser.cc:6040
! #: c/c-parser.cc:6625 c/c-parser.cc:7534 c/c-parser.cc:9548 c/c-parser.cc:9631
! #: c/c-parser.cc:10611 c/c-parser.cc:10926 c/c-parser.cc:10935
! #: c/c-parser.cc:11548 c/c-parser.cc:11836 c/c-parser.cc:11867
! #: c/c-parser.cc:13234 c/c-parser.cc:13808 c/c-parser.cc:13846
! #: c/c-parser.cc:14160 c/c-parser.cc:14211 c/c-parser.cc:14371
! #: c/c-parser.cc:14401 c/c-parser.cc:14409 c/c-parser.cc:14438
! #: c/c-parser.cc:14451 c/c-parser.cc:14757 c/c-parser.cc:14881
! #: c/c-parser.cc:15466 c/c-parser.cc:15519 c/c-parser.cc:15535
! #: c/c-parser.cc:15581 c/c-parser.cc:16602 c/c-parser.cc:16647
! #: c/c-parser.cc:19523 c/c-parser.cc:19660 c/c-parser.cc:20526
! #: c/c-parser.cc:23585 c/c-parser.cc:26783 c/c-parser.cc:26970
! #: c/gimple-parser.cc:1981 c/gimple-parser.cc:2028 cp/parser.cc:9873
! #: cp/parser.cc:35390 cp/parser.cc:38622 cp/parser.cc:41867 cp/parser.cc:42059
! #: cp/parser.cc:49849 cp/parser.cc:53151
  #, fuzzy, gcc-internal-format
  msgid "expected identifier"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:4006
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support specifying %<enum%> underlying types before C23"
  msgstr "ISO C understÃ¸tter ikke komplekse heltalstyper"
  
! #: c/c-parser.cc:4015
  #, gcc-internal-format
  msgid "%<enum%> declared both with and without fixed underlying type"
  msgstr ""
  
! #: c/c-parser.cc:4038
  #, fuzzy, gcc-internal-format
  #| msgid "no input file specified"
  msgid "no %<enum%> underlying type specified"
  msgstr "ingen inddatafiler angivet"
  
! #: c/c-parser.cc:4042
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of undefined type `%s %s'"
  msgid "invalid %<enum%> underlying type"
  msgstr "ugyldig brug af en type '%s %s' der ikke er defineret"
  
! #: c/c-parser.cc:4072
  #, fuzzy, gcc-internal-format
  #| msgid "type mismatch with previous implicit declaration"
  msgid "%<enum%> underlying type incompatible with previous declaration"
  msgstr "typen passer ikke med tidligere underforstÃ¥et erklÃ¦ring"
  
! #: c/c-parser.cc:4148 cp/parser.cc:22437
  #, gcc-internal-format
  msgid "comma at end of enumerator list"
  msgstr "komma i slutningen af enum-liste"
  
! #: c/c-parser.cc:4154 c/c-parser.cc:20803 cp/parser.cc:43105
  #: go/gofrontend/embed.cc:424
  #, gcc-internal-format
  msgid "expected %<,%> or %<}%>"
  msgstr ""
  
! #: c/c-parser.cc:4197
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids forward references to `enum' types"
  msgid "ISO C forbids forward references to %<enum%> types"
  msgstr "ISO C forbyder forhÃ¥ndsreferencer til 'enum'-typer"
  
! #: c/c-parser.cc:4322
  #, fuzzy, gcc-internal-format
  msgid "expected class name"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:4344
  #, gcc-internal-format
  msgid "extra semicolon in struct or union specified"
  msgstr "ekstra semikolon angivet i struct eller union"
  
! #: c/c-parser.cc:4373
  #, gcc-internal-format
  msgid "no semicolon at end of struct or union"
  msgstr "intet semikolon i slutningen af struct eller union"
  
! #: c/c-parser.cc:4490 c/c-parser.cc:6365
  #, gcc-internal-format
  msgid "expected specifier-qualifier-list"
  msgstr ""
  
! #: c/c-parser.cc:4501
  #, gcc-internal-format
  msgid "ISO C forbids member declarations with no members"
  msgstr "ISO C forbyder medlemserklÃ¦ringer uden medlemmer"
  
! #: c/c-parser.cc:4595
  #, gcc-internal-format
  msgid "expected %<,%>, %<;%> or %<}%>"
  msgstr ""
  
! #: c/c-parser.cc:4602
  #, gcc-internal-format
  msgid "expected %<:%>, %<,%>, %<;%>, %<}%> or %<__attribute__%>"
  msgstr ""
  
! #: c/c-parser.cc:4674
  #, fuzzy, gcc-internal-format
  msgid "%<typeof%> applied to a bit-field"
  msgstr "'sizeof' benyttet pÃ¥ et bitfelt"
  
! #: c/c-parser.cc:4996
  #, gcc-internal-format
  msgid "expected identifier or %<(%>"
  msgstr ""
  
! #: c/c-parser.cc:5058
  #, fuzzy, gcc-internal-format
  #| msgid "`static' may not be used when defining (as opposed to declaring) a static data member"
  msgid "%<static%> may not be used with an unspecified variable length array size"
  msgstr "'static' mÃ¥ ikke bruges ved definering (i modsÃ¦tning til erklÃ¦ring) af et statisk datamedlem"
  
! #: c/c-parser.cc:5066
  #, fuzzy, gcc-internal-format
  msgid "%<static%> may not be used without an array size"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: c/c-parser.cc:5226
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C requires a named argument before `...'"
  msgid "ISO C requires a named argument before %<...%> before C23"
  msgstr "ISO C pÃ¥krÃ¦ver en navngiven parameter fÃ¸r '...'"
  
! #: c/c-parser.cc:5351
  #, fuzzy, gcc-internal-format
  #| msgid "top-level declaration of `%s' specifies `auto'"
  msgid "expected declaration specifiers or %<...%>"
  msgstr "erklÃ¦ring af '%s' pÃ¥ Ã¸verste niveau angiver 'auto'"
  
! #: c/c-parser.cc:5581
  #, gcc-internal-format
  msgid "parentheses must be omitted if attribute argument list is empty"
  msgstr ""
  
! #: c/c-parser.cc:5869 cp/parser.cc:30792
  #, fuzzy, gcc-internal-format
  #| msgid "expected function"
  msgid "expected OpenMP directive name"
  msgstr "forventet funktion"
  
! #: c/c-parser.cc:5916 cp/parser.cc:30848
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<:%> or %<::%>"
  msgid "expected %<directive%> or %<sequence%>"
  msgstr "forventede %<:%> or %<::%>"
  
! #: c/c-parser.cc:6061 cp/parser.cc:31016
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute requires an integer constant argument"
  msgid "%<omp::%E%> attribute requires argument"
  msgstr "egenskaben '%s' krÃ¦ver en heltalskonstant som parameter"
  
! #: c/c-parser.cc:6077 cp/parser.cc:31032
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute requires an integer constant argument"
  msgid "%qE attribute does not take any arguments"
  msgstr "egenskaben '%s' krÃ¦ver en heltalskonstant som parameter"
  
! #: c/c-parser.cc:6198
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support %<[*]%> array declarators"
  msgid "ISO C does not support %<[[]]%> attributes before C23"
  msgstr "ISO C90 understÃ¸tter ikke %<[*]%> arrayerklÃ¦ringer"
  
! #: c/c-parser.cc:6442 c/c-parser.cc:6508 c/c-typeck.cc:9659
  #, fuzzy, gcc-internal-format
  #| msgid "variable-sized object may not be initialized"
  msgid "variable-sized object may not be initialized except with an empty initializer"
  msgstr "et objekt af variabel stÃ¸rrelse mÃ¥ ikke tildeles en startvÃ¦rdi"
  
! #: c/c-parser.cc:6500
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids empty initializer braces"
  msgid "ISO C forbids empty initializer braces before C23"
  msgstr "ISO C forbyder tom startvÃ¦rdiblok"
  
! #: c/c-parser.cc:6589
  #, fuzzy, gcc-internal-format
  #| msgid "obsolete use of designated initializer with `:'"
  msgid "obsolete use of designated initializer with %<:%>"
  msgstr "forÃ¦ldet brug af udpeget startvÃ¦rdi med ':'"
  
! #: c/c-parser.cc:6745
  #, gcc-internal-format
  msgid "ISO C forbids specifying range of elements to initialize"
  msgstr "ISO C forbyder angivelse af interval af elementer til klargÃ¸ring"
  
! #: c/c-parser.cc:6757
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 forbids specifying subobject to initialize"
  msgid "ISO C90 forbids specifying subobject to initialize"
  msgstr "ISO C89 forbyder angivelse af underobjekt til klargÃ¸ring"
  
  # RETMIG: hm, gad vide om dette er rigtigt
! #: c/c-parser.cc:6765
  #, fuzzy, gcc-internal-format
  #| msgid "obsolete use of designated initializer without `='"
  msgid "obsolete use of designated initializer without %<=%>"
  msgstr "forÃ¦ldet brug af udpeget startvÃ¦rdi uden '='"
  
! #: c/c-parser.cc:7052 cp/parser.cc:13744
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested in %<#pragma acc loop%>"
  msgstr ""
  
! #: c/c-parser.cc:7059 cp/parser.cc:13751
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested with %<ordered%> clause"
  msgstr ""
  
! #: c/c-parser.cc:7066 cp/parser.cc:13758
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested with %<reduction%> %<inscan%> clause"
  msgstr ""
  
! #: c/c-parser.cc:7073
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested in %<pragma omp tile%>"
  msgstr ""
  
! #: c/c-parser.cc:7129 c/c-parser.cc:7284 cp/parser.cc:12635 cp/parser.cc:12785
! #: cp/parser.cc:50836
  #, gcc-internal-format
  msgid "mixing OpenMP directives with attribute and pragma syntax on the same statement"
  msgstr ""
  
! #: c/c-parser.cc:7137 cp/parser.cc:12643
  #, gcc-internal-format
  msgid "OpenMP %<omp::decl%> attribute on a statement"
  msgstr ""
  
! #: c/c-parser.cc:7161 c/c-parser.cc:7382 c/c-parser.cc:27493 cp/parser.cc:12667
! #: cp/parser.cc:50816 cp/parser.cc:50955
  #, gcc-internal-format
  msgid "unknown OpenMP directive name in %qs attribute argument"
  msgstr ""
  
! #: c/c-parser.cc:7253 cp/parser.cc:12754
  #, gcc-internal-format
  msgid "OpenMP construct among %<omp::directive%> attributes requires all %<omp::directive%> attributes on the same statement to be in the same %<omp::sequence%>"
  msgstr ""
  
! #: c/c-parser.cc:7261 cp/parser.cc:12762
  #, gcc-internal-format
  msgid "multiple OpenMP standalone directives among %<omp::directive%> attributes must be all within the same %<omp::sequence%>"
  msgstr ""
  
! #: c/c-parser.cc:7273 cp/parser.cc:12774
  #, gcc-internal-format
  msgid "standalone OpenMP directives in %<omp::directive%> attribute can only appear on an empty statement"
  msgstr ""
  
! #: c/c-parser.cc:7394 cp/parser.cc:12904
  #, gcc-internal-format
  msgid "mixing OpenMP directives with attribute and pragma syntax on the same declaration"
  msgstr ""
  
! #: c/c-parser.cc:7452 cp/parser.cc:15358
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute requires an integer constant argument"
  msgid "%qs attribute does not take any arguments"
  msgstr "egenskaben '%s' krÃ¦ver en heltalskonstant som parameter"
  
! #: c/c-parser.cc:7549
  #, gcc-internal-format
  msgid "ISO C forbids label declarations"
  msgstr "ISO C forbyder etiketerklÃ¦ringer"
  
! #: c/c-parser.cc:7555 c/c-parser.cc:7747 c/c-parser.cc:7773
  #: c/gimple-parser.cc:467
  #, fuzzy, gcc-internal-format
  #| msgid "repeated declaration of automaton `%s'"
  msgid "expected declaration or statement"
  msgstr "gentaget erklÃ¦ring af automaten '%s'"
  
! #: c/c-parser.cc:7674
  #, gcc-internal-format
  msgid "a label can only be part of a statement and a declaration is not a statement"
  msgstr ""
  
! #: c/c-parser.cc:7694 c/c-parser.cc:7737
  #, fuzzy, gcc-internal-format
  msgid "ISO C90 forbids mixed declarations and code"
  msgstr "ISO C89 forbyder blandede erklÃ¦ringer og kode"
  
! #: c/c-parser.cc:7781
  #, gcc-internal-format
  msgid "expected %<}%> before %<else%>"
  msgstr ""
  
! #: c/c-parser.cc:7786 cp/parser.cc:13811
  #, gcc-internal-format
  msgid "%<else%> without a previous %<if%>"
  msgstr ""
  
! #: c/c-parser.cc:7821
  #, fuzzy, gcc-internal-format
  msgid "label at end of compound statement"
  msgstr "forÃ¦ldet brug af etiket i slutningen af sammensat sÃ¦tning"
*************** msgstr "forÃ¦ldet brug af etiket i slutn
*** 52365,52493 ****
  #. c_parser_skip_until_found stops at a closing nesting
  #. delimiter without consuming it, but here we need to consume
  #. it to proceed further.
! #: c/c-parser.cc:7833 c/c-parser.cc:7837 c/c-parser.cc:8345
! #: c/gimple-parser.cc:716 c/gimple-parser.cc:2520 cp/parser.cc:13265
  #, fuzzy, gcc-internal-format
  msgid "expected statement"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:7918
  #, gcc-internal-format
  msgid "expected %<:%> or %<...%>"
  msgstr ""
  
! #: c/c-parser.cc:7948
  #, gcc-internal-format
  msgid "GNU-style attribute between label and declaration appertains to the label"
  msgstr ""
  
! #: c/c-parser.cc:8201
  #, gcc-internal-format
  msgid "expected identifier or %<*%>"
  msgstr ""
  
! #: c/c-parser.cc:8327
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute can only be applied to class definitions"
  msgid "only attribute %<fallthrough%> or %<assume%> can be applied to a null statement"
  msgstr "egenskaben '%s' kan kun anvendes med klassedefinitioner"
  
! #: c/c-parser.cc:8437
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support if declarations before C2Y"
  msgstr "ISO C understÃ¸tter ikke komplekse heltalstyper"
  
! #: c/c-parser.cc:8459
  #, fuzzy, gcc-internal-format
  msgid "declaration in the controlling expression must have an initializer"
  msgstr "klargÃ¸ringsliste behandlet som et sammensat udtryk"
  
! #: c/c-parser.cc:8476 cp/parser.cc:5462 cp/parser.cc:16420
  #, fuzzy, gcc-internal-format
  #| msgid "empty declaration"
  msgid "expected declaration"
  msgstr "tom erklÃ¦ring"
  
! #: c/c-parser.cc:8557 cp/parser.cc:15492
  #, fuzzy, gcc-internal-format
  msgid "suggest braces around empty body in an %<if%> statement"
  msgstr "tom krop i en else-sÃ¦tning"
  
! #: c/c-parser.cc:8600 cp/parser.cc:15495
  #, fuzzy, gcc-internal-format
  #| msgid "empty body in an else-statement"
  msgid "suggest braces around empty body in an %<else%> statement"
  msgstr "tom krop i en else-sÃ¦tning"
  
! #: c/c-parser.cc:8694 cp/parser.cc:14223
  #, fuzzy, gcc-internal-format
  #| msgid "%Hsuggest explicit braces to avoid ambiguous `else'"
  msgid "suggest explicit braces to avoid ambiguous %<else%>"
  msgstr "%HforeslÃ¥r eksplicitte krÃ¸llede paranteser for at undgÃ¥ tvetydig 'else'"
  
! #: c/c-parser.cc:8812 c/c-parser.cc:8891 c/c-parser.cc:9026 cp/parser.cc:15085
  #, gcc-internal-format
  msgid "loop not permitted in intervening code in OpenMP loop body"
  msgstr ""
  
! #: c/c-parser.cc:8899
  #, gcc-internal-format
  msgid "suggest braces around empty body in %<do%> statement"
  msgstr ""
  
! #: c/c-parser.cc:9060 c/c-parser.cc:9092
  #, fuzzy, gcc-internal-format
  #| msgid "multiple declarators in template declaration"
  msgid "multiple iterating variables in fast enumeration"
  msgstr "flere erklÃ¦rerer i skabelonserklÃ¦ring"
  
! #: c/c-parser.cc:9115
  #, fuzzy, gcc-internal-format
  #| msgid "invalid register in the instruction"
  msgid "invalid iterating variable in fast enumeration"
  msgstr "ugyldigt register i instruktionen"
  
! #: c/c-parser.cc:9139 cp/parser.cc:14531
  #, gcc-internal-format
  msgid "missing loop condition in loop with %<GCC ivdep%> pragma"
  msgstr ""
  
! #: c/c-parser.cc:9145 cp/parser.cc:14537
  #, gcc-internal-format
  msgid "missing loop condition in loop with %<GCC unroll%> pragma"
  msgstr ""
  
! #: c/c-parser.cc:9186
  #, gcc-internal-format
  msgid "missing collection in fast enumeration"
  msgstr ""
  
! #: c/c-parser.cc:9335 c/c-parser.cc:9346 c/c-parser.cc:9357
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate case value"
  msgid "duplicate %<asm%> qualifier %qE"
  msgstr "case-vÃ¦rdi optrÃ¦der mere end Ã©n gang"
  
! #: c/c-parser.cc:9336 c/c-parser.cc:9347 c/c-parser.cc:9358 cp/parser.cc:23377
! #: cp/parser.cc:23395 cp/parser.cc:23410
  #, fuzzy, gcc-internal-format
  msgid "first seen here"
  msgstr "  fÃ¸rste type her"
  
! #: c/c-parser.cc:9367
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a template"
  msgid "%qE is not a valid %<asm%> qualifier"
  msgstr "'%T' er ikke en skabelon"
  
! #: c/c-parser.cc:9716 cp/parser.cc:4893
  #, fuzzy, gcc-internal-format
  #| msgid "Statement at %0 invalid in this context"
  msgid "a wide string is invalid in this context"
  msgstr "SÃ¦tning ved %0 er ugyldig i denne kontekst"
  
! #: c/c-parser.cc:9924
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids omitting the middle term of a ?: expression"
  msgid "ISO C forbids omitting the middle term of a %<?:%> expression"
--- 52374,52502 ----
  #. c_parser_skip_until_found stops at a closing nesting
  #. delimiter without consuming it, but here we need to consume
  #. it to proceed further.
! #: c/c-parser.cc:7878 c/c-parser.cc:7882 c/c-parser.cc:8390
! #: c/gimple-parser.cc:716 c/gimple-parser.cc:2520 cp/parser.cc:13267
  #, fuzzy, gcc-internal-format
  msgid "expected statement"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:7963
  #, gcc-internal-format
  msgid "expected %<:%> or %<...%>"
  msgstr ""
  
! #: c/c-parser.cc:7993
  #, gcc-internal-format
  msgid "GNU-style attribute between label and declaration appertains to the label"
  msgstr ""
  
! #: c/c-parser.cc:8246
  #, gcc-internal-format
  msgid "expected identifier or %<*%>"
  msgstr ""
  
! #: c/c-parser.cc:8372
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute can only be applied to class definitions"
  msgid "only attribute %<fallthrough%> or %<assume%> can be applied to a null statement"
  msgstr "egenskaben '%s' kan kun anvendes med klassedefinitioner"
  
! #: c/c-parser.cc:8482
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support complex integer types"
  msgid "ISO C does not support if declarations before C2Y"
  msgstr "ISO C understÃ¸tter ikke komplekse heltalstyper"
  
! #: c/c-parser.cc:8504
  #, fuzzy, gcc-internal-format
  msgid "declaration in the controlling expression must have an initializer"
  msgstr "klargÃ¸ringsliste behandlet som et sammensat udtryk"
  
! #: c/c-parser.cc:8521 cp/parser.cc:5462 cp/parser.cc:16424
  #, fuzzy, gcc-internal-format
  #| msgid "empty declaration"
  msgid "expected declaration"
  msgstr "tom erklÃ¦ring"
  
! #: c/c-parser.cc:8602 cp/parser.cc:15494
  #, fuzzy, gcc-internal-format
  msgid "suggest braces around empty body in an %<if%> statement"
  msgstr "tom krop i en else-sÃ¦tning"
  
! #: c/c-parser.cc:8645 cp/parser.cc:15497
  #, fuzzy, gcc-internal-format
  #| msgid "empty body in an else-statement"
  msgid "suggest braces around empty body in an %<else%> statement"
  msgstr "tom krop i en else-sÃ¦tning"
  
! #: c/c-parser.cc:8739 cp/parser.cc:14225
  #, fuzzy, gcc-internal-format
  #| msgid "%Hsuggest explicit braces to avoid ambiguous `else'"
  msgid "suggest explicit braces to avoid ambiguous %<else%>"
  msgstr "%HforeslÃ¥r eksplicitte krÃ¸llede paranteser for at undgÃ¥ tvetydig 'else'"
  
! #: c/c-parser.cc:8857 c/c-parser.cc:8936 c/c-parser.cc:9071 cp/parser.cc:15087
  #, gcc-internal-format
  msgid "loop not permitted in intervening code in OpenMP loop body"
  msgstr ""
  
! #: c/c-parser.cc:8944
  #, gcc-internal-format
  msgid "suggest braces around empty body in %<do%> statement"
  msgstr ""
  
! #: c/c-parser.cc:9105 c/c-parser.cc:9137
  #, fuzzy, gcc-internal-format
  #| msgid "multiple declarators in template declaration"
  msgid "multiple iterating variables in fast enumeration"
  msgstr "flere erklÃ¦rerer i skabelonserklÃ¦ring"
  
! #: c/c-parser.cc:9160
  #, fuzzy, gcc-internal-format
  #| msgid "invalid register in the instruction"
  msgid "invalid iterating variable in fast enumeration"
  msgstr "ugyldigt register i instruktionen"
  
! #: c/c-parser.cc:9184 cp/parser.cc:14533
  #, gcc-internal-format
  msgid "missing loop condition in loop with %<GCC ivdep%> pragma"
  msgstr ""
  
! #: c/c-parser.cc:9190 cp/parser.cc:14539
  #, gcc-internal-format
  msgid "missing loop condition in loop with %<GCC unroll%> pragma"
  msgstr ""
  
! #: c/c-parser.cc:9231
  #, gcc-internal-format
  msgid "missing collection in fast enumeration"
  msgstr ""
  
! #: c/c-parser.cc:9380 c/c-parser.cc:9391 c/c-parser.cc:9402
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate case value"
  msgid "duplicate %<asm%> qualifier %qE"
  msgstr "case-vÃ¦rdi optrÃ¦der mere end Ã©n gang"
  
! #: c/c-parser.cc:9381 c/c-parser.cc:9392 c/c-parser.cc:9403 cp/parser.cc:23381
! #: cp/parser.cc:23399 cp/parser.cc:23414
  #, fuzzy, gcc-internal-format
  msgid "first seen here"
  msgstr "  fÃ¸rste type her"
  
! #: c/c-parser.cc:9412
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a template"
  msgid "%qE is not a valid %<asm%> qualifier"
  msgstr "'%T' er ikke en skabelon"
  
! #: c/c-parser.cc:9761 cp/parser.cc:4893
  #, fuzzy, gcc-internal-format
  #| msgid "Statement at %0 invalid in this context"
  msgid "a wide string is invalid in this context"
  msgstr "SÃ¦tning ved %0 er ugyldig i denne kontekst"
  
! #: c/c-parser.cc:9969
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids omitting the middle term of a ?: expression"
  msgid "ISO C forbids omitting the middle term of a %<?:%> expression"
*************** msgstr "ISO C forbyder udeladelse af den
*** 52495,54017 ****
  
  #. Location of the binary operator.
  #. Quiet warning.
! #: c/c-parser.cc:10148 cp/typeck.cc:5582
  #, gcc-internal-format
  msgid "division %<sizeof (%T) / sizeof (%T)%> does not compute the number of array elements"
  msgstr ""
  
! #: c/c-parser.cc:10154 cp/typeck.cc:5587
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "first %<sizeof%> operand was declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: c/c-parser.cc:10425
  #, fuzzy, gcc-internal-format
  #| msgid "storage class specified for %s `%s'"
  msgid "storage class specifier in cast"
  msgstr "lagringsklasse angivet for %s '%s'"
  
! #: c/c-parser.cc:10428
  #, fuzzy, gcc-internal-format
  msgid "alignment specified for type name in cast"
  msgstr "justering mÃ¥ ikke angives for '%s'"
  
! #: c/c-parser.cc:10529
  #, gcc-internal-format
  msgid "traditional C rejects the unary plus operator"
  msgstr "traditionel C tillader ikke operatoren unÃ¦r plus"
  
! #: c/c-parser.cc:10659
  #, fuzzy, gcc-internal-format
  #| msgid "storage class specified for %s `%s'"
  msgid "storage class specifier in %<sizeof%>"
  msgstr "lagringsklasse angivet for %s '%s'"
  
! #: c/c-parser.cc:10662
  #, fuzzy, gcc-internal-format
  msgid "alignment specified for type name in %<sizeof%>"
  msgstr "justering mÃ¥ ikke angives for '%s'"
  
! #: c/c-parser.cc:10678
  #, fuzzy, gcc-internal-format
  #| msgid "sizeof applied to a bit-field"
  msgid "%<sizeof%> applied to a bit-field"
  msgstr "'sizeof' benyttet pÃ¥ et bitfelt"
  
! #: c/c-parser.cc:10751
  #, fuzzy, gcc-internal-format
  #| msgid "storage class specified for %s `%s'"
  msgid "storage class specifier in %qE"
  msgstr "lagringsklasse angivet for %s '%s'"
  
! #: c/c-parser.cc:10754
  #, fuzzy, gcc-internal-format
  msgid "alignment specified for type name in %qE"
  msgstr "justering mÃ¥ ikke angives for '%s'"
  
! #: c/c-parser.cc:10778
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not allow #%s"
  msgid "ISO C does not allow %<%E (expression)%>"
  msgstr "ISO C tillader ikke #%s"
  
! #: c/c-parser.cc:10931
  #, fuzzy, gcc-internal-format
  #| msgid "cannot take address of bit-field `%s'"
  msgid "cannot take address of %qs"
  msgstr "kan ikke finde adressen af bitfeltet '%s'"
  
! #: c/c-parser.cc:11038
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support complex types"
  msgid "ISO C99 does not support %<_Generic%>"
  msgstr "ISO C90 understÃ¸tter ikke komplekse typer"
  
! #: c/c-parser.cc:11041
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support complex types"
  msgid "ISO C90 does not support %<_Generic%>"
  msgstr "ISO C90 understÃ¸tter ikke komplekse typer"
  
! #: c/c-parser.cc:11052
  #, gcc-internal-format
  msgid "ISO C does not support use of type name as %<_Generic%> controlling operand before C2Y"
  msgstr ""
  
! #: c/c-parser.cc:11123
  #, fuzzy, gcc-internal-format
  #| msgid "cast specifies function type"
  msgid "ISO C does not support %<_Generic%> association with function type before C2Y"
  msgstr "typetildelingen angiver en funktionstype"
  
! #: c/c-parser.cc:11127
  #, fuzzy, gcc-internal-format
  #| msgid "expression statement has incomplete type"
  msgid "ISO C does not support %<_Generic%> association with incomplete type before C2Y"
  msgstr "udtrykket er af en ufuldstÃ¦ndig type"
  
! #: c/c-parser.cc:11132
  #, gcc-internal-format
  msgid "%<_Generic%> association has variable length type"
  msgstr ""
  
! #: c/c-parser.cc:11166
  #, gcc-internal-format
  msgid "duplicate %<default%> case in %<_Generic%>"
  msgstr ""
  
! #: c/c-parser.cc:11167
  #, gcc-internal-format
  msgid "original %<default%> is here"
  msgstr ""
  
! #: c/c-parser.cc:11175
  #, gcc-internal-format
  msgid "%<_Generic%> specifies two compatible types"
  msgstr ""
  
! #: c/c-parser.cc:11176
  #, fuzzy, gcc-internal-format
  #| msgid "incompatible types in %s"
  msgid "compatible type is here"
  msgstr "uforenelige typer i %s"
  
! #: c/c-parser.cc:11199
  #, fuzzy, gcc-internal-format
  #| msgid "Generate load/store multiple instructions"
  msgid "%<_Generic%> selector matches multiple associations"
  msgstr "GenerÃ©r flere indlÃ¦snings-/lagringsinstruktioner"
  
! #: c/c-parser.cc:11201
  #, fuzzy, gcc-internal-format
  msgid "other match is here"
  msgstr "  anden type her"
  
! #: c/c-parser.cc:11226
  #, gcc-internal-format
  msgid "%<_Generic%> selector of type %qT is not compatible with any association"
  msgstr ""
  
! #: c/c-parser.cc:11247
  #, fuzzy, gcc-internal-format
  #| msgid "first argument to __builtin_choose_expr not a constant"
  msgid "argument %u of %<__builtin_tgmath%> is not a function pointer"
  msgstr "fÃ¸rste parameter til '__builtin_choose_expr' skal vÃ¦re en konstant"
  
! #: c/c-parser.cc:11255
  #, fuzzy, gcc-internal-format
  msgid "argument %u of %<__builtin_tgmath%> is unprototyped"
  msgstr "parameteren '%s' passer ikke til prototypen"
  
! #: c/c-parser.cc:11261
  #, fuzzy, gcc-internal-format
  #| msgid "argument of `__builtin_eh_return_regno' must be constant"
  msgid "argument %u of %<__builtin_tgmath%> has variable arguments"
  msgstr "parameteren til '__builtin_eh_return_regno' skal vÃ¦re konstant"
  
! #: c/c-parser.cc:11277
  #, fuzzy, gcc-internal-format
  #| msgid "argument of `__builtin_eh_return_regno' must be constant"
  msgid "argument %u of %<__builtin_tgmath%> has no arguments"
  msgstr "parameteren til '__builtin_eh_return_regno' skal vÃ¦re konstant"
  
! #: c/c-parser.cc:11300 c/c-parser.cc:11304
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support complex types"
  msgid "ISO C does not support %qs predefined identifier"
  msgstr "ISO C90 understÃ¸tter ikke komplekse typer"
  
! #: c/c-parser.cc:11308
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support complex types"
  msgid "ISO C90 does not support %<__func__%> predefined identifier"
  msgstr "ISO C90 understÃ¸tter ikke komplekse typer"
  
! #: c/c-parser.cc:11517 c/c-parser.cc:13256 c/c-parser.cc:13278
! #: c/c-parser.cc:22957 c/gimple-parser.cc:1897 c/gimple-parser.cc:2537
! #: cp/parser.cc:44516
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "expected expression"
  msgstr "uventet adresseudtryk"
  
! #: c/c-parser.cc:11539
  #, gcc-internal-format
  msgid "braced-group within expression allowed only inside a function"
  msgstr "sÃ¦tningsblokke i udtryk er kun tilladt inde i en funktion"
  
! #: c/c-parser.cc:11554
  #, gcc-internal-format
  msgid "ISO C forbids braced-groups within expressions"
  msgstr "ISO C forbyder sÃ¦tningsblokke inden i udtryk"
  
! #: c/c-parser.cc:11665
  #, fuzzy, gcc-internal-format
  #| msgid "second parameter of `va_start' not last named argument"
  msgid "optional second parameter of %<va_start%> not last named argument"
  msgstr "den anden parameter til 'va_start' er ikke den sidste navngivne parameter"
  
! #: c/c-parser.cc:11704
  #, gcc-internal-format
  msgid "%<va_start%> macro used with additional arguments other than identifier of the last named argument"
  msgstr ""
  
! #: c/c-parser.cc:11849
  #, fuzzy, gcc-internal-format
  #| msgid "first argument to __builtin_choose_expr not a constant"
  msgid "wrong number of arguments to %<__builtin_choose_expr%>"
  msgstr "fÃ¸rste parameter til '__builtin_choose_expr' skal vÃ¦re en konstant"
  
! #: c/c-parser.cc:11865
  #, fuzzy, gcc-internal-format
  #| msgid "first argument to __builtin_choose_expr not a constant"
  msgid "first argument to %<__builtin_choose_expr%> not a constant"
  msgstr "fÃ¸rste parameter til '__builtin_choose_expr' skal vÃ¦re en konstant"
  
! #: c/c-parser.cc:11935 c/c-parser.cc:11952 c/c-parser.cc:11959
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to function `va_start'"
  msgid "too few arguments to %<__builtin_tgmath%>"
  msgstr "for mange parametre til funktionen 'va_start'"
  
! #: c/c-parser.cc:11980
  #, fuzzy, gcc-internal-format
  #| msgid "argument 1 of __builtin_spe_predicate is out of range"
  msgid "argument %u of %<__builtin_tgmath%> has wrong number of arguments"
  msgstr "1. parameter til __builtin_spe_predicate er uden for det gyldige interval"
  
! #: c/c-parser.cc:12024 c/c-parser.cc:12034
  #, gcc-internal-format
  msgid "invalid type-generic return type for argument %u of %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12056 c/c-parser.cc:12066
  #, gcc-internal-format
  msgid "invalid type-generic type for argument %u of argument %u of %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12099
  #, fuzzy, gcc-internal-format
  #| msgid "argument to `%s' attribute larger than %d"
  msgid "function arguments of %<__builtin_tgmath%> all have the same type"
  msgstr "parameter til egenskaben '%s' er stÃ¸rre end %d"
  
! #: c/c-parser.cc:12118
  #, gcc-internal-format
  msgid "function arguments of %<__builtin_tgmath%> lack type-generic parameter"
  msgstr ""
  
! #: c/c-parser.cc:12166
  #, gcc-internal-format
  msgid "duplicate type-generic parameter type for function argument %u of %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12189
  #, gcc-internal-format
  msgid "bad return type for function argument %u of %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12206
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "bad type for argument %u of function argument %u of %<__builtin_tgmath%>"
  msgstr "forkert antal parametre angivet til egenskaben '%s'"
  
! #: c/c-parser.cc:12246
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid return type for member function `%#D'"
  msgid "invalid type of argument %u of type-generic function"
  msgstr "ugyldig returtype for medlemsfunktionen '%#D'"
  
! #: c/c-parser.cc:12257
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "decimal floating-point argument %u to complex-only type-generic function"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c/c-parser.cc:12265
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "decimal floating-point argument %u to binary-only type-generic function"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c/c-parser.cc:12273 c/c-parser.cc:12303
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "both complex and decimal floating-point arguments to type-generic function"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c/c-parser.cc:12281 c/c-parser.cc:12323
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "both binary and decimal floating-point arguments to type-generic function"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c/c-parser.cc:12295
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "complex arguments must have identical types"
  msgid "complex argument %u to decimal-only type-generic function"
  msgstr "komplekse parametre skal have identiske typer"
  
! #: c/c-parser.cc:12315
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "too many arguments to function"
  msgid "binary argument %u to decimal-only type-generic function"
  msgstr "for mange parametre til funktionen"
  
! #: c/c-parser.cc:12422
  #, fuzzy, gcc-internal-format
  #| msgid "no matching function for call to `%D(%A)'"
  msgid "no matching function for type-generic call"
  msgstr "ingen passende funktion for kald til '%D(%A)'"
  
! #: c/c-parser.cc:12463
  #, gcc-internal-format
  msgid "wrong number of arguments to %<__builtin_call_with_static_chain%>"
  msgstr ""
  
! #: c/c-parser.cc:12476
  #, fuzzy, gcc-internal-format
  #| msgid "argument 1 of __builtin_altivec_predicate must be a constant"
  msgid "first argument to %<__builtin_call_with_static_chain%> must be a call expression"
  msgstr "1. parameter til __builtin_altivec_predicate skal vÃ¦re en konstant"
  
! #: c/c-parser.cc:12480
  #, fuzzy, gcc-internal-format
  #| msgid "second arg to `__builtin_prefetch' must be a constant"
  msgid "second argument to %<__builtin_call_with_static_chain%> must be a pointer type"
  msgstr "den anden parameter til '__builtin_prefetch' skal vÃ¦re en konstant"
  
! #: c/c-parser.cc:12506
  #, fuzzy, gcc-internal-format
  #| msgid "wrong type argument to bit-complement"
  msgid "wrong number of arguments to %<__builtin_complex%>"
  msgstr "forkert parametertype til bitkomplement"
  
! #: c/c-parser.cc:12528
  #, gcc-internal-format
  msgid "%<__builtin_complex%> operand not of real binary floating-point type"
  msgstr ""
  
! #: c/c-parser.cc:12537
  #, fuzzy, gcc-internal-format
  #| msgid "operands to ?: have different types"
  msgid "%<__builtin_complex%> operands of different types"
  msgstr "operander til ?: har forskellige typer"
  
! #: c/c-parser.cc:12568
  #, fuzzy, gcc-internal-format
  #| msgid "wrong type argument to bit-complement"
  msgid "wrong number of arguments to %<__builtin_counted_by_ref%>"
  msgstr "forkert parametertype til bitkomplement"
  
! #: c/c-parser.cc:12579
  #, fuzzy, gcc-internal-format
  #| msgid "third arg to `__builtin_prefetch' must be a constant"
  msgid "the argument to %<__builtin_counted_by_ref%> must be an array"
  msgstr "en tredje parameter til '__builtin_prefetch' skal vÃ¦re en konstant"
  
! #: c/c-parser.cc:12630 c/c-parser.cc:12659 cp/parser.cc:8032
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of template arguments (%d, should be %d)"
  msgid "wrong number of arguments to %<__builtin_shuffle%>"
  msgstr "forkert antal skabelonsparametre (%d, skulle vÃ¦re %d)"
  
! #: c/c-parser.cc:12830
  #, fuzzy, gcc-internal-format
  #| msgid "wrong type argument to %s"
  msgid "wrong number of arguments to %qs"
  msgstr "forkert parametertype til %s"
  
! #: c/c-parser.cc:12839 c/c-parser.cc:12919
  #, fuzzy, gcc-internal-format
  #| msgid "type to vector delete is neither pointer or array type"
  msgid "%qs operand not an integral type"
  msgstr "variablen til tabel-delete er hverken af en henvisnings- eller en tabeltype"
  
! #: c/c-parser.cc:12845 c/c-parser.cc:12925
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "argument %u in call to function %qs has enumerated type"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c/c-parser.cc:12852
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "argument %u in call to function %qs has boolean type"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c/c-parser.cc:12859
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "argument 1 in call to function %qs has signed type"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c/c-parser.cc:12867
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "argument 1 in call to function %qs has %<char%> type"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c/c-parser.cc:12941
  #, fuzzy, gcc-internal-format
  #| msgid "%s rotate count is negative"
  msgid "rotate count is negative"
  msgstr "%s-roteringsantal er negativt"
  
! #: c/c-parser.cc:13233 cp/parser.cc:6380
  #, gcc-internal-format
  msgid "%<omp_all_memory%> may only be used in OpenMP %<depend%> clause"
  msgstr ""
  
! #: c/c-parser.cc:13243
  #, fuzzy, gcc-internal-format
  #| msgid "%s does not support %s"
  msgid "ISO C does not support %qs before C23"
  msgstr "%s understÃ¸tter ikke %s"
  
! #: c/c-parser.cc:13331
  #, fuzzy, gcc-internal-format
  #| msgid "field `%D' declared static in union"
  msgid "%qT declared in %<constexpr%> compound literal"
  msgstr "feltet '%D' er erklÃ¦ret statisk i union"
  
! #: c/c-parser.cc:13336
  #, fuzzy, gcc-internal-format
  #| msgid "field `%D' declared static in union"
  msgid "%qT defined in %<constexpr%> compound literal"
  msgstr "feltet '%D' er erklÃ¦ret statisk i union"
  
! #: c/c-parser.cc:13351
  #, gcc-internal-format
  msgid "compound literal has variable size"
  msgstr ""
  
! #: c/c-parser.cc:13356
  #, fuzzy, gcc-internal-format
  #| msgid "sizeof applied to a function type"
  msgid "compound literal has function type"
  msgstr "sizeof benyttet pÃ¥ en funktionstype"
  
! #: c/c-parser.cc:13387
  #, gcc-internal-format
  msgid "compound literal qualified by address-space qualifier"
  msgstr ""
  
! #: c/c-parser.cc:13392
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 forbids compound literals"
  msgid "ISO C90 forbids compound literals"
  msgstr "ISO C89 forbyder sammensatte konstanter"
  
! #: c/c-parser.cc:13394
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 forbids compound literals"
  msgid "ISO C forbids storage class specifiers in compound literals before C23"
  msgstr "ISO C89 forbyder sammensatte konstanter"
  
! #: c/c-parser.cc:13408
  #, gcc-internal-format
  msgid "%<_Alignas%> specifiers cannot reduce alignment of compound literal"
  msgstr ""
  
! #: c/c-parser.cc:13483
  #, gcc-internal-format
  msgid "using integer absolute value function %qD when argument is of floating-point type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13488
  #, gcc-internal-format
  msgid "using integer absolute value function %qD when argument is of complex type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13496
  #, gcc-internal-format
  msgid "taking the absolute value of unsigned type %qT has no effect"
  msgstr ""
  
! #: c/c-parser.cc:13507
  #, gcc-internal-format
  msgid "using floating-point absolute value function %qD when argument is of integer type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13511
  #, gcc-internal-format
  msgid "using floating-point absolute value function %qD when argument is of decimal floating-point type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13516
  #, gcc-internal-format
  msgid "using floating-point absolute value function %qD when argument is of complex type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13529
  #, gcc-internal-format
  msgid "using complex absolute value function %qD when argument is of integer type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13533
  #, gcc-internal-format
  msgid "using complex absolute value function %qD when argument is of floating-point type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13551
  #, gcc-internal-format
  msgid "using decimal floating-point absolute value function %qD when argument is of integer type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13556
  #, gcc-internal-format
  msgid "using decimal floating-point absolute value function %qD when argument is of floating-point type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13561
  #, gcc-internal-format
  msgid "using decimal floating-point absolute value function %qD when argument is of complex type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13587
  #, gcc-internal-format
  msgid "absolute value function %qD given an argument of type %qT but has parameter of type %qT which may cause truncation of value"
  msgstr ""
  
! #: c/c-parser.cc:13717 cp/parser.cc:8468
  #, gcc-internal-format
  msgid "calls to the OpenMP runtime API are not permitted in intervening code"
  msgstr ""
  
! #: c/c-parser.cc:14137
  #, gcc-internal-format
  msgid "expected identifier or %<)%>"
  msgstr ""
  
! #: c/c-parser.cc:14233
  #, gcc-internal-format
  msgid "extra semicolon"
  msgstr ""
  
! #: c/c-parser.cc:14481
  #, fuzzy, gcc-internal-format
  #| msgid "extra semicolon in struct or union specified"
  msgid "extra semicolon in method definition specified"
  msgstr "ekstra semikolon angivet i struct eller union"
  
! #: c/c-parser.cc:14613
  #, gcc-internal-format
  msgid "method attributes must be specified at the end only"
  msgstr ""
  
! #: c/c-parser.cc:14633
  #, gcc-internal-format
  msgid "expected %<;%> or %<{%> after method attribute definition"
  msgstr ""
  
! #: c/c-parser.cc:14755
  #, fuzzy, gcc-internal-format
  #| msgid "Class or interface declaration expected"
  msgid "objective-c method declaration is expected"
  msgstr "Klasse- eller grÃ¦nsefladeerklÃ¦ring forventet"
  
! #: c/c-parser.cc:15207
  #, fuzzy, gcc-internal-format
  #| msgid "storage class specified for typename"
  msgid "no type or storage class may be specified here,"
  msgstr "lagringsklasse angivet for typenavn"
  
! #: c/c-parser.cc:15275 cp/parser.cc:38420
  #, fuzzy, gcc-internal-format
  #| msgid "readonly property can not be set"
  msgid "empty property attribute list"
  msgstr "skrivebeskyttet egenskab kan ikke angives"
  
! #: c/c-parser.cc:15289 cp/parser.cc:38433
  #, fuzzy, gcc-internal-format
  #| msgid "missing Code attribute"
  msgid "missing property attribute"
  msgstr "manglende Code-egenskab"
  
! #: c/c-parser.cc:15328
  #, fuzzy, gcc-internal-format
  #| msgid "Unknown cpu: -mcpu=%s"
  msgid "unknown property attribute %<%s%s%>"
  msgstr "Ukendt processor: -mcpu=%s"
  
! #: c/c-parser.cc:15331 cp/parser.cc:38470
  #, gcc-internal-format
  msgid "unknown property attribute"
  msgstr ""
  
! #: c/c-parser.cc:15340 cp/parser.cc:38479
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<,%> or %<)%>"
  msgid "expected %<=%> after Objective-C %qE"
  msgstr "%<,%> eller %<)%> forventet"
  
! #: c/c-parser.cc:15351 cp/parser.cc:38493
  #, fuzzy, gcc-internal-format
  #| msgid "empty body in an else-statement"
  msgid "expected %qE selector name"
  msgstr "tom krop i en else-sÃ¦tning"
  
! #: c/c-parser.cc:15367 cp/parser.cc:38512
  #, gcc-internal-format
  msgid "setter method names must terminate with %<:%>"
  msgstr ""
  
! #: c/c-parser.cc:15591 cp/semantics.cc:14071
  #, gcc-internal-format
  msgid "%<#pragma GCC unroll%> requires an assignment-expression that evaluates to a non-negative integral constant less than %u"
  msgstr ""
  
! #: c/c-parser.cc:15629 cp/parser.cc:53453
  #, gcc-internal-format
  msgid "intervening code must not contain OpenMP directives"
  msgstr ""
  
! #: c/c-parser.cc:15649 c/c-parser.cc:25667 c/c-parser.cc:25976
! #: c/c-parser.cc:26039 c/c-parser.cc:26149 cp/parser.cc:48090
! #: cp/parser.cc:48438 cp/parser.cc:48553 cp/parser.cc:48652 cp/parser.cc:53485
! #: cp/parser.cc:53501 cp/parser.cc:53517 cp/parser.cc:53533 cp/parser.cc:53550
! #: cp/parser.cc:53567 cp/parser.cc:53584 cp/parser.cc:53611 cp/parser.cc:53625
! #: cp/parser.cc:53650 cp/parser.cc:53664
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma %s%> may only be used in compound statements"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: c/c-parser.cc:15672 cp/parser.cc:53639
  #, fuzzy, gcc-internal-format
  #| msgid "#pragma once in main file"
  msgid "%<#pragma acc routine%> must be at file scope"
  msgstr "'#pragma once' i hovedfil"
  
! #: c/c-parser.cc:15771 cp/parser.cc:53769
  #, gcc-internal-format
  msgid "%<#pragma omp scan%> may only be used in a loop construct with %<inscan%> %<reduction%> clause"
  msgstr ""
  
! #: c/c-parser.cc:15778 cp/parser.cc:53775
  #, gcc-internal-format
  msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct"
  msgstr ""
  
! #: c/c-parser.cc:15790 c/c-parser.cc:15806
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma %s%> may only be used at file scope"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: c/c-parser.cc:15877 cp/parser.cc:53858
  #, gcc-internal-format
  msgid "for, while or do statement expected"
  msgstr ""
  
! #: c/c-parser.cc:15893 cp/parser.cc:53475
  #, gcc-internal-format
  msgid "%<#pragma GCC pch_preprocess%> must be first"
  msgstr ""
  
! #: c/c-parser.cc:16276 c/c-parser.cc:20196 c/c-parser.cc:22425
! #: c/c-parser.cc:22444 c/c-parser.cc:22697 c/c-parser.cc:22755
! #: c/c-parser.cc:22762 c/c-parser.cc:22769 c/c-parser.cc:27120
! #: c/c-parser.cc:28325 c/c-parser.cc:28333 c/c-parser.cc:28709
! #: c/c-parser.cc:28719 c/c-parser.cc:28813 c/c-parser.cc:28820
! #: c/c-parser.cc:28827 cp/parser.cc:38959 cp/parser.cc:42640 cp/parser.cc:44042
! #: cp/parser.cc:44079 cp/parser.cc:44268 cp/parser.cc:44331 cp/parser.cc:44338
! #: cp/parser.cc:44345 cp/parser.cc:50011 cp/parser.cc:50018 cp/parser.cc:50025
! #: cp/parser.cc:50558 cp/parser.cc:52339 cp/parser.cc:52347 cp/parser.cc:52499
! #: cp/parser.cc:52509
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %qs clauses"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:16303
  #, fuzzy, gcc-internal-format
  #| msgid "predicate must be an identifier"
  msgid "expression must be integral"
  msgstr "udsagn skal vÃ¦re et kaldenavn"
  
! #: c/c-parser.cc:16910 c/c-parser.cc:29539
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a namespace"
  msgid "%qD is not a variable"
  msgstr "'%D' er ikke et navnerum"
  
! #: c/c-parser.cc:16914 cp/semantics.cc:9112
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a pointer-to-object type"
  msgid "%qD is not a pointer variable"
  msgstr "'%T' er ikke af en henvisning til objekt-type"
  
! #: c/c-parser.cc:16956 cp/parser.cc:39850
  #, fuzzy, gcc-internal-format
  #| msgid "comparison between signed and unsigned integer expressions"
  msgid "collapse argument needs positive constant integer expression"
  msgstr "sammenlign mellem signed og unsigned heltalsudtryk"
  
! #: c/c-parser.cc:17051 cp/parser.cc:39928
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<:%> or %<::%>"
  msgid "expected %<none%> or %<present%>"
  msgstr "forventede %<:%> or %<::%>"
  
! #: c/c-parser.cc:17053 cp/parser.cc:39930
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<none%>, %<shared%>, %<private%> or %<firstprivate%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: c/c-parser.cc:17138 cp/parser.cc:40000
  #, fuzzy, gcc-internal-format
  #| msgid "']' expected, invalid type expression"
  msgid "expected constant logical expression"
  msgstr "']' forventet, ugyldigt typeudtryk"
  
! #: c/c-parser.cc:17215 cp/parser.cc:40082
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<data%>, %<update%>, %<enter%> or %<exit%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: c/c-parser.cc:17235 c/c-parser.cc:26032 c/c-parser.cc:26142
! #: cp/parser.cc:40100 cp/parser.cc:48430 cp/parser.cc:48545
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<catch%>"
  msgid "expected %<data%>"
  msgstr "forventede %<catch%>"
  
! #: c/c-parser.cc:17288 cp/parser.cc:40155
  #, gcc-internal-format
  msgid "too many %<if%> clauses with %qs modifier"
  msgstr ""
  
! #: c/c-parser.cc:17295 cp/parser.cc:40162
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<if%> clauses"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:17297 cp/parser.cc:40164
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<if%> clauses without modifier"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:17303 cp/parser.cc:40170
  #, gcc-internal-format
  msgid "if any %<if%> clause has modifier, then all %<if%> clauses have to use modifier"
  msgstr ""
  
! #: c/c-parser.cc:17408 c/c-parser.cc:17468 c/c-parser.cc:17530
! #: c/c-parser.cc:17578 c/c-parser.cc:17658 c/c-parser.cc:18055
! #: c/c-parser.cc:18137 c/c-parser.cc:18742 c/c-parser.cc:18887
! #: c/c-parser.cc:18955 c/c-parser.cc:20133
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "expected integer expression"
  msgstr "uventet adresseudtryk"
  
! #: c/c-parser.cc:17419
  #, gcc-internal-format
  msgid "%<num_threads%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:17480
  #, gcc-internal-format
  msgid "%<num_tasks%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:17542 cp/semantics.cc:9327
  #, gcc-internal-format
  msgid "%<grainsize%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:17591 cp/semantics.cc:9357
  #, fuzzy, gcc-internal-format
  #| msgid "%s rotate count is negative"
  msgid "%<priority%> value must be non-negative"
  msgstr "%s-roteringsantal er negativt"
  
! #: c/c-parser.cc:17625 cp/parser.cc:40396
  #, fuzzy, gcc-internal-format
  #| msgid "']' expected, invalid type expression"
  msgid "expected constant integer expression with valid sync-hint value"
  msgstr "']' forventet, ugyldigt typeudtryk"
  
! #: c/c-parser.cc:17697 cp/parser.cc:40466
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<alloc%>, %<to%>, %<from%>, %<tofrom%>, %<firstprivate%>, %<none%> or %<default%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: c/c-parser.cc:17765
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<scalar%>, %<aggregate%>, %<pointer%> or %<all%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: c/c-parser.cc:17842 cp/parser.cc:40618
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<defaultmap%> clauses with %qs category"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:17845 cp/parser.cc:40621
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<defaultmap%> clauses with unspecified category"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:17929 cp/semantics.cc:8181 cp/semantics.cc:8236
  #, fuzzy, gcc-internal-format
  #| msgid "predicate must be an identifier"
  msgid "%qs expression must be integral"
  msgstr "udsagn skal vÃ¦re et kaldenavn"
  
! #: c/c-parser.cc:17941 c/c-parser.cc:18064 cp/semantics.cc:8215
  #: cp/semantics.cc:8250
  #, fuzzy, gcc-internal-format
  #| msgid "%s rotate count is negative"
  msgid "%qs value must be positive"
  msgstr "%s-roteringsantal er negativt"
  
! #: c/c-parser.cc:18003 cp/parser.cc:39613
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments"
  msgid "too many %<static%> arguments"
  msgstr "for mange parametre"
  
! #: c/c-parser.cc:18037 cp/parser.cc:39646
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected operand"
  msgid "unexpected argument"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:18204 cp/semantics.cc:9543
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute argument not an integer constant"
  msgid "%<tile%> argument needs positive integral constant"
  msgstr "parameteren til egenskaben '%s' er ikke en heltalskonstant"
  
! #: c/c-parser.cc:18272 cp/parser.cc:43259
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<self%> clauses"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:18314 cp/parser.cc:40671
  #, fuzzy, gcc-internal-format
  msgid "expected %<reproducible%> or %<unconstrained%>"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:18323 c/c-parser.cc:18329 cp/parser.cc:40680
! #: cp/parser.cc:40690
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<new%>"
  msgid "expected %<concurrent%>"
  msgstr "forventede %<new%>"
  
! #: c/c-parser.cc:18365 cp/parser.cc:40730
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<teams%>, %<parallel%> or %<thread%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: c/c-parser.cc:18418 cp/parser.cc:40798
  #, fuzzy, gcc-internal-format
  #| msgid "comparison between signed and unsigned integer expressions"
  msgid "ordered argument needs positive constant integer expression"
  msgstr "sammenlign mellem signed og unsigned heltalsudtryk"
  
! #: c/c-parser.cc:18543 c/c-parser.cc:27870 cp/parser.cc:51949
  #, gcc-internal-format
  msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%> or identifier"
  msgstr ""
  
! #: c/c-parser.cc:18665 cp/parser.cc:41056
  #, gcc-internal-format
  msgid "both %<monotonic%> and %<nonmonotonic%> modifiers specified"
  msgstr ""
  
! #: c/c-parser.cc:18719 cp/parser.cc:41072
  #, gcc-internal-format
  msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
  msgstr ""
  
! #: c/c-parser.cc:18723 cp/parser.cc:41075
  #, gcc-internal-format
  msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
  msgstr ""
  
! #: c/c-parser.cc:18736 cp/semantics.cc:8297
  #, fuzzy, gcc-internal-format
  #| msgid "%s rotate count is negative"
  msgid "chunk size value must be positive"
  msgstr "%s-roteringsantal er negativt"
  
! #: c/c-parser.cc:18759 cp/parser.cc:41095
  #, fuzzy, gcc-internal-format
  msgid "invalid schedule kind"
  msgstr "ugyldig roteringsinstruktion"
  
! #: c/c-parser.cc:18898 c/c-parser.cc:18909
  #, gcc-internal-format
  msgid "%<num_teams%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:18917 cp/semantics.cc:8264
  #, gcc-internal-format
  msgid "%<num_teams%> lower bound %qE bigger than upper bound %qE"
  msgstr ""
  
! #: c/c-parser.cc:18966 cp/semantics.cc:8393
  #, gcc-internal-format
  msgid "%<thread_limit%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:19011 cp/semantics.cc:8521
  #, gcc-internal-format
  msgid "%<aligned%> clause alignment expression must be positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:19123 c/c-parser.cc:22412 cp/parser.cc:44034
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<,%> or %<)%>"
  msgid "expected %<allocator%> or %<align%>"
  msgstr "%<,%> eller %<)%> forventet"
  
! #: c/c-parser.cc:19130
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate %qs"
  msgid "duplicate %qs modifier"
  msgstr "duplikere %qs"
  
! #: c/c-parser.cc:19178 cp/semantics.cc:8654
  #, gcc-internal-format
  msgid "%<allocate%> clause allocator expression has type %qT rather than %<omp_allocator_handle_t%>"
  msgstr ""
  
! #: c/c-parser.cc:19189 cp/semantics.cc:8609 cp/semantics.cc:8625
  #, fuzzy, gcc-internal-format
  #| msgid "comparison between signed and unsigned integer expressions"
  msgid "%<allocate%> clause %<align%> modifier argument needs to be positive constant power of two integer expression"
  msgstr "sammenlign mellem signed og unsigned heltalsudtryk"
  
! #: c/c-parser.cc:19308 cp/parser.cc:41634
  #, fuzzy, gcc-internal-format
  #| msgid "multiple `virtual' specifiers"
  msgid "multiple linear modifiers"
  msgstr "mere end Ã©n 'virtual'-angivelse"
  
! #: c/c-parser.cc:19320 cp/parser.cc:41647
  #, fuzzy, gcc-internal-format
  #| msgid "multiple `virtual' specifiers"
  msgid "multiple %<step%> modifiers"
  msgstr "mere end Ã©n 'virtual'-angivelse"
  
! #: c/c-parser.cc:19328 c/c-parser.cc:19356
  #, gcc-internal-format
  msgid "%<linear%> clause step expression must be integral"
  msgstr ""
  
! #: c/c-parser.cc:19408
  #, gcc-internal-format
  msgid "%<safelen%> clause expression must be positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:19447
  #, gcc-internal-format
  msgid "%<simdlen%> clause expression must be positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:19807 cp/parser.cc:42194
  #, fuzzy, gcc-internal-format
  #| msgid "%s from incompatible pointer type"
  msgid "%<iterator%> modifier incompatible with %qs"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: c/c-parser.cc:19855 cp/parser.cc:42249 cp/parser.cc:42701 cp/parser.cc:42768
  #, fuzzy, gcc-internal-format
  #| msgid "invalid %%d operand"
  msgid "invalid depend kind"
  msgstr "ugyldig %%d-operand"
  
! #: c/c-parser.cc:19916 cp/parser.cc:42279
  #, fuzzy, gcc-internal-format
  #| msgid "invalid mask"
  msgid "invalid doacross kind"
  msgstr "ugyldig maske"
  
! #: c/c-parser.cc:19985 cp/parser.cc:42422
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<always%> modifiers"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:19995 cp/parser.cc:42435
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<close%> modifiers"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:20005 cp/parser.cc:42448
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<present%> modifiers"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:20013 cp/parser.cc:42459
  #, gcc-internal-format
  msgid "%<map%> clause with map-type modifier other than %<always%>, %<close%> or %<present%>"
  msgstr ""
  
! #: c/c-parser.cc:20051 cp/parser.cc:42499
  #, fuzzy, gcc-internal-format
  #| msgid "invalid mask"
  msgid "invalid map kind"
  msgstr "ugyldig maske"
  
! #: c/c-parser.cc:20103 cp/parser.cc:42563
  #, gcc-internal-format
  msgid "%<ancestor%> device modifier not preceded by %<requires%> directive with %<reverse_offload%> clause"
  msgstr ""
  
! #: c/c-parser.cc:20115 cp/parser.cc:42574
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<:%> or %<::%>"
  msgid "expected %<ancestor%> or %<device_num%>"
  msgstr "forventede %<:%> or %<::%>"
  
! #: c/c-parser.cc:20138 cp/semantics.cc:8418
  #, gcc-internal-format
  msgid "the %<device%> clause expression must evaluate to %<1%>"
  msgstr ""
  
! #: c/c-parser.cc:20171 cp/parser.cc:42645
  #, fuzzy, gcc-internal-format
  msgid "invalid dist_schedule kind"
  msgstr "ugyldig roteringsinstruktion"
  
! #: c/c-parser.cc:20250
  #, fuzzy, gcc-internal-format
  #| msgid "invalid rotate insn"
  msgid "invalid proc_bind kind"
  msgstr "ugyldig roteringsinstruktion"
  
! #: c/c-parser.cc:20294
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<;%>, %<,%> or %<)%>"
  msgid "expected %<host%>, %<nohost%> or %<any%>"
  msgstr "%<;%>, %<,%> eller %<)%> forventet"
  
! #: c/c-parser.cc:20400 cp/semantics.cc:9665 cp/semantics.cc:9683
  #, fuzzy, gcc-internal-format
  #| msgid "comparison between signed and unsigned integer expressions"
  msgid "%<partial%> argument needs positive constant integer expression"
  msgstr "sammenlign mellem signed og unsigned heltalsudtryk"
  
! #: c/c-parser.cc:20501 cp/semantics.cc:8837
  #, gcc-internal-format
  msgid "%<detach%> clause event handle has type %qT rather than %<omp_event_handle_t%>"
  msgstr ""
  
! #: c/c-parser.cc:20572 c/c-parser.cc:20666 cp/parser.cc:42828
! #: cp/parser.cc:42940
  #, fuzzy, gcc-internal-format
  #| msgid "invalid string literal, ignoring final '\\'"
  msgid "string literal must not contain %<\\0%>"
  msgstr "ugyldig strengkonstant, ignorerer afsluttende '\\'"
  
! #: c/c-parser.cc:20581 c/c-parser.cc:20702 cp/parser.cc:42835
! #: cp/parser.cc:42975
  #, fuzzy, gcc-internal-format
  #| msgid "undefining `%s'"
  msgid "unknown foreign runtime identifier %qs"
  msgstr "glemmer definitionen af '%s'"
  
! #: c/c-parser.cc:20596 c/c-parser.cc:20725 cp/parser.cc:42850
! #: cp/parser.cc:42997
  #, fuzzy, gcc-internal-format
  #| msgid "']' expected, invalid type expression"
  msgid "expected string literal or constant integer expression"
  msgstr "']' forventet, ugyldigt typeudtryk"
  
! #: c/c-parser.cc:20604 c/c-parser.cc:20733 cp/parser.cc:42858
! #: cp/parser.cc:43005 cp/semantics.cc:7513
  #, gcc-internal-format
  msgid "unknown foreign runtime identifier %qwd"
  msgstr ""
  
! #: c/c-parser.cc:20642 cp/parser.cc:42917
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<:%> or %<::%>"
  msgid "expected %<fr%> or %<attr%> preference selector"
  msgstr "forventede %<:%> or %<::%>"
  
! #: c/c-parser.cc:20650 cp/parser.cc:42925
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `const'"
  msgid "duplicated %<fr%> preference selector"
  msgstr "'const' optrÃ¦der mere end Ã©n gang"
  
! #: c/c-parser.cc:20676 cp/parser.cc:42949
  #, gcc-internal-format
  msgid "%<attr%> string literal must start with %<ompx_%>"
  msgstr ""
  
! #: c/c-parser.cc:20684 cp/parser.cc:42956
  #, gcc-internal-format
  msgid "%<attr%> string literal must not contain a comma"
  msgstr ""
  
! #: c/c-parser.cc:20696 cp/parser.cc:42968
  #, fuzzy, gcc-internal-format
  #| msgid "_Pragma takes a parenthesized string literal"
  msgid "non-empty string literal expected"
  msgstr "_Pragma tager en strengkonstant med paranteser omkring"
  
! #: c/c-parser.cc:20806 cp/parser.cc:43108
  #, fuzzy, gcc-internal-format
  #| msgid "multiple `virtual' specifiers"
  msgid "duplicate %<targetsync%> modifier"
  msgstr "mere end Ã©n 'virtual'-angivelse"
  
! #: c/c-parser.cc:20813 cp/parser.cc:43115
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `volatile'"
  msgid "duplicate %<target%> modifier"
  msgstr "'volatile' optrÃ¦der mere end Ã©n gang"
  
! #: c/c-parser.cc:20820 cp/parser.cc:43122
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `const'"
  msgid "duplicate %<prefer_type%> modifier"
  msgstr "'const' optrÃ¦der mere end Ã©n gang"
  
! #: c/c-parser.cc:20841 cp/parser.cc:43143
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<prefer_type%>, %<target%>, or %<targetsync%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: c/c-parser.cc:20877 c/c-parser.cc:27149 cp/parser.cc:43180
! #: cp/parser.cc:50583
  #, gcc-internal-format
  msgid "missing required %<target%> and/or %<targetsync%> modifier"
  msgstr ""
  
! #: c/c-parser.cc:21118 cp/parser.cc:43475
  #, fuzzy, gcc-internal-format
  #| msgid "Unexpected EOF while reading source file %s.\n"
  msgid "expected an OpenACC clause"
  msgstr "StÃ¸dt pÃ¥ slutningen af kildefilen %s tidligere end forventet.\n"
  
! #: c/c-parser.cc:21129 c/c-parser.cc:21526 c/c-parser.cc:29112
! #: cp/parser.cc:43486 cp/parser.cc:43939 cp/parser.cc:51427
  #, fuzzy, gcc-internal-format
  msgid "%qs is not valid for %qs"
  msgstr "%s understÃ¸tter ikke %s"
  
! #: c/c-parser.cc:21174 cp/parser.cc:43534
  #, gcc-internal-format
  msgid "clauses in %<simd%> trait should be separated by %<,%>"
  msgstr ""
  
! #: c/c-parser.cc:21327 cp/parser.cc:43727
  #, gcc-internal-format
  msgid "%qs must be the first clause of %qs"
  msgstr ""
  
! #: c/c-parser.cc:21515 cp/parser.cc:43928
  #, fuzzy, gcc-internal-format
  msgid "expected an OpenMP clause"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:21676 cp/parser.cc:49115
  #, gcc-internal-format
  msgid "no valid clauses specified in %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21686 cp/parser.cc:49125
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of \"%s\" shadows a global declaration"
  msgid "array section in %<#pragma acc declare%>"
  msgstr "erklÃ¦ring af '%s' skygger for en global erklÃ¦ring"
  
! #: c/c-parser.cc:21706 cp/parser.cc:49145
  #, fuzzy, gcc-internal-format
  msgid "%qD must be a global variable in %<#pragma acc declare link%>"
  msgstr "erklÃ¦ring af '%s' der er en 'extern'-variabel, i begyndelseserklÃ¦ring i 'for'-lÃ¸kke"
  
! #: c/c-parser.cc:21717 cp/parser.cc:49156
  #, fuzzy, gcc-internal-format
  msgid "invalid OpenACC clause at file scope"
  msgstr "skabelonsparameter '%T' er en variabelt Ã¦ndret type"
  
! #: c/c-parser.cc:21724 cp/parser.cc:49163
  #, fuzzy, gcc-internal-format
  msgid "invalid use of %<extern%> variable %qD in %<#pragma acc declare%>"
  msgstr "erklÃ¦ring af '%s' der er en 'extern'-variabel, i begyndelseserklÃ¦ring i 'for'-lÃ¸kke"
  
! #: c/c-parser.cc:21732 cp/parser.cc:49171
  #, gcc-internal-format
  msgid "invalid use of %<global%> variable %qD in %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21743 cp/parser.cc:49193
  #, fuzzy, gcc-internal-format
  msgid "%qD must be a variable declared in the same scope as %<#pragma acc declare%>"
  msgstr "erklÃ¦ring af '%s' der er en 'extern'-variabel, i begyndelseserklÃ¦ring i 'for'-lÃ¸kke"
  
! #: c/c-parser.cc:21753 cp/parser.cc:49216
  #, gcc-internal-format
  msgid "variable %qD used more than once with %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21846 cp/parser.cc:49300
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<data%> after %<#pragma acc %s%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: c/c-parser.cc:21862 cp/parser.cc:49317
  #, fuzzy, gcc-internal-format
  #| msgid "#pragma once in main file"
  msgid "%<#pragma acc %s data%> has no data movement clause"
  msgstr "'#pragma once' i hovedfil"
  
! #: c/c-parser.cc:21894 cp/parser.cc:49075
  #, gcc-internal-format
  msgid "%<host_data%> construct requires %<use_device%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22123 cp/parser.cc:3533
  #, fuzzy, gcc-internal-format
  msgid "%qE has not been declared"
  msgstr "'%#D' kan ikke erklÃ¦res"
  
! #: c/c-parser.cc:22127
  #, fuzzy, gcc-internal-format
  #| msgid "expected function"
  msgid "expected function name"
  msgstr "forventet funktion"
  
! #: c/c-parser.cc:22145 cp/parser.cc:52766
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a member template function"
  msgid "%qD does not refer to a function"
  msgstr "'%D' er ikke en medlemsskabelonfunktion"
  
! #: c/c-parser.cc:22168 c/c-parser.cc:22216 cp/parser.cc:1779
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma acc routine%> not immediately followed by function declaration or definition"
  msgstr "en global registervariabel fÃ¸lger en funktionsdefinition"
  
! #: c/c-parser.cc:22208 cp/parser.cc:52817 cp/parser.cc:52864
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma acc routine%> not immediately followed by a single function declaration or definition"
  msgstr "en global registervariabel fÃ¸lger en funktionsdefinition"
  
! #: c/c-parser.cc:22239 cp/parser.cc:52892
  #, fuzzy, gcc-internal-format
  #| msgid "braced-group within expression allowed only inside a function"
  msgid "%<#pragma acc routine%> must be applied before use"
  msgstr "sÃ¦tningsblokke i udtryk er kun tilladt inde i en funktion"
  
! #: c/c-parser.cc:22240 cp/parser.cc:52894
  #, fuzzy, gcc-internal-format
  #| msgid "braced-group within expression allowed only inside a function"
  msgid "%<#pragma acc routine%> must be applied before definition"
  msgstr "sÃ¦tningsblokke i udtryk er kun tilladt inde i en funktion"
  
! #: c/c-parser.cc:22285 cp/parser.cc:49533
  #, gcc-internal-format
  msgid "%<#pragma acc update%> must contain at least one %<device%> or %<host%> or %<self%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22343
  #, gcc-internal-format
  msgid "variable %qD used in the %<allocator%> clause must be declared before %qD"
  msgstr ""
  
! #: c/c-parser.cc:22347 c/c-parser.cc:22370
  #, fuzzy, gcc-internal-format
  #| msgid "template parameter type `%T' declared `friend'"
  msgid "to be allocated variable declared here"
  msgstr "skabelonsparametertypen '%T' erklÃ¦ret 'friend'"
  
! #: c/c-parser.cc:22365
  #, gcc-internal-format
  msgid "variable %qD used in the %<allocator%> clause must not be modified between declaration of %qD and its %<allocate%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22368
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' previously defined here"
  msgid "modified here"
  msgstr "'%s' tidligere defineret her"
  
! #: c/c-parser.cc:22436 cp/parser.cc:44054 cp/parser.cc:44069
  #, fuzzy, gcc-internal-format
  #| msgid "comparison between signed and unsigned integer expressions"
  msgid "%<align%> clause argument needs to be positive constant power of two integer expression"
  msgstr "sammenlign mellem signed og unsigned heltalsudtryk"
  
! #: c/c-parser.cc:22460
  #, gcc-internal-format
  msgid "%<allocator%> clause allocator expression has type %qT rather than %<omp_allocator_handle_t%>"
  msgstr ""
  
! #: c/c-parser.cc:22477
  #, gcc-internal-format
  msgid "function parameter %qD may not appear as list item in an %<allocate%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22484
  #, gcc-internal-format
  msgid "%<allocate%> directive must be in the same scope as %qD"
  msgstr ""
  
! #: c/c-parser.cc:22492
  #, gcc-internal-format
  msgid "%qD already appeared as list item in an %<allocate%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22501
  #, gcc-internal-format
  msgid "%<allocator%> clause required for static variable %qD"
  msgstr ""
  
! #: c/c-parser.cc:22512
  #, gcc-internal-format
  msgid "%<allocator%> clause requires a predefined allocator as %qD is static"
  msgstr ""
  
! #: c/c-parser.cc:22663 cp/parser.cc:44234
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<;%>, %<,%> or %<)%>"
  msgid "expected %<read%>, %<write%>, %<update%>, or %<capture%> clause"
  msgstr "%<;%>, %<,%> eller %<)%> forventet"
  
! #: c/c-parser.cc:22702 cp/parser.cc:44273
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<seq_cst%>, %<acquire%> or %<relaxed%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: c/c-parser.cc:22726 cp/parser.cc:44302
  #, gcc-internal-format
  msgid "expected %<read%>, %<write%>, %<update%>, %<capture%>, %<compare%>, %<weak%>, %<fail%>, %<seq_cst%>, %<acq_rel%>, %<release%>, %<relaxed%> or %<hint%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22741 cp/parser.cc:44317
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many atomic clauses"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:22748 cp/parser.cc:44324
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many memory order clauses"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:22786 c/c-parser.cc:22793 cp/parser.cc:44362
! #: cp/parser.cc:44369
  #, fuzzy, gcc-internal-format
  #| msgid "%s from incompatible pointer type"
  msgid "%qs clause is incompatible with %<read%> or %<write%> clauses"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: c/c-parser.cc:22799 c/c-parser.cc:22804 cp/parser.cc:44375
! #: cp/parser.cc:44380
  #, fuzzy, gcc-internal-format
  #| msgid "--resource requires -o"
  msgid "%qs clause requires %qs clause"
  msgstr "--resource pÃ¥krÃ¦ver -o"
  
! #: c/c-parser.cc:22827 cp/parser.cc:44403
  #, gcc-internal-format
  msgid "%<#pragma omp atomic write%> incompatible with %<acquire%> clause implicitly provided by a %<requires%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22838 cp/parser.cc:44414
  #, gcc-internal-format
  msgid "%<#pragma omp atomic read%> incompatible with %<release%> clause implicitly provided by a %<requires%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22870 cp/parser.cc:44446
  #, gcc-internal-format
  msgid "%<#pragma omp atomic read%> incompatible with %<release%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22880 cp/parser.cc:44456
  #, gcc-internal-format
  msgid "%<#pragma omp atomic write%> incompatible with %<acquire%> clause"
  msgstr ""
  
! #: c/c-parser.cc:23001 cp/parser.cc:44556
  #, fuzzy, gcc-internal-format
  msgid "expected %<==%> comparison in %<if%> condition"
  msgstr "'%s' er erklÃ¦ret inline efter dens definition"
  
! #: c/c-parser.cc:23008 cp/parser.cc:44563
  #, gcc-internal-format
  msgid "expected %<==%>, %<<%> or %<>%> comparison in %<if%> condition"
  msgstr ""
  
! #: c/c-parser.cc:23081 cp/parser.cc:44628 cp/parser.cc:44911 cp/parser.cc:45005
! #: cp/parser.cc:45023
  #, fuzzy, gcc-internal-format
  #| msgid "invalid #pragma %s"
  msgid "invalid form of %<#pragma omp atomic compare%>"
  msgstr "ugyldig #pragma %s"
  
! #: c/c-parser.cc:23092 cp/parser.cc:44639
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<delete%>"
  msgid "unexpected %<else%>"
  msgstr "forventede %<delete%>"
  
! #: c/c-parser.cc:23152 cp/parser.cc:45078
  #, fuzzy, gcc-internal-format
  #| msgid "invalid #pragma %s"
  msgid "invalid form of %<pragma omp atomic compare%>"
  msgstr "ugyldig #pragma %s"
  
! #: c/c-parser.cc:23423 cp/parser.cc:44932 cp/parser.cc:44958
  #, fuzzy, gcc-internal-format
  #| msgid "invalid #pragma %s"
  msgid "invalid form of %<#pragma omp atomic%>"
  msgstr "ugyldig #pragma %s"
  
! #: c/c-parser.cc:23427 cp/parser.cc:44998 cp/parser.cc:45032
  #, fuzzy, gcc-internal-format
  #| msgid "invalid operand for 'p' modifier"
  msgid "invalid operator for %<#pragma omp atomic%>"
  msgstr "ugyldig operand til 'p'-Ã¦ndring"
  
! #: c/c-parser.cc:23478 cp/parser.cc:45067
  #, gcc-internal-format
  msgid "%<weak%> clause requires atomic equality comparison"
  msgstr ""
  
! #: c/c-parser.cc:23484 cp/semantics.cc:11909 cp/semantics.cc:11919
  #, gcc-internal-format
  msgid "%<#pragma omp atomic capture%> uses two different expressions for memory"
  msgstr ""
  
! #: c/c-parser.cc:23587 cp/semantics.cc:11996
  #, fuzzy, gcc-internal-format
  msgid "%<depobj%> expression is not lvalue expression"
  msgstr "stÃ¸rrelsen af medlemmet '%D' er ikke konstant"
  
! #: c/c-parser.cc:23630
  #, fuzzy, gcc-internal-format
  msgid "%<destroy%> expression is not lvalue expression"
  msgstr "stÃ¸rrelsen af medlemmet '%D' er ikke konstant"
  
! #: c/c-parser.cc:23636 cp/parser.cc:45220
  #, gcc-internal-format
  msgid "the %<destroy%> expression %qE should be the same as the %<depobj%> argument %qE"
  msgstr ""
  
! #: c/c-parser.cc:23667 cp/parser.cc:45256
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<in%>, %<out%>, %<inout%>, %<mutexinoutset%> or %<inoutset%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: c/c-parser.cc:23679 cp/parser.cc:45272
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<;%>, %<,%> or %<)%>"
  msgid "expected %<depend%>, %<destroy%> or %<update%> clause"
  msgstr "%<;%>, %<,%> eller %<)%> forventet"
  
! #: c/c-parser.cc:23720 cp/parser.cc:45310
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<seq_cst%>, %<acq_rel%>, %<release%> or %<acquire%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: c/c-parser.cc:23728 cp/parser.cc:45318
  #, gcc-internal-format
  msgid "%<flush%> list specified together with memory order clause"
  msgstr ""
  
! #: c/c-parser.cc:23733
  #, gcc-internal-format
  msgid "expected %<(%> or end of line"
  msgstr ""
  
! #: c/c-parser.cc:23804 cp/parser.cc:46039
  #, gcc-internal-format
  msgid "%<[[omp::directive(%s)]]%> must be the only specified attribute on a statement"
  msgstr ""
  
! #: c/c-parser.cc:23871 cp/parser.cc:46108
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma omp scan%> with zero preceding executable statements"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: c/c-parser.cc:23905 cp/parser.cc:46141
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<:%> or %<::%>"
  msgid "expected %<inclusive%> or %<exclusive%> clause"
  msgstr "forventede %<:%> or %<::%>"
  
! #: c/c-parser.cc:23910 cp/parser.cc:46147
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<#pragma omp section%> or %<}%>"
  msgid "expected %<#pragma omp scan%>"
  msgstr "%<#pragma omp section%> eller %<}%> forventet"
  
! #: c/c-parser.cc:23919 cp/parser.cc:46156
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma omp scan%> with zero succeeding executable statements"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: c/c-parser.cc:23944 cp/parser.cc:46179
  #, fuzzy, gcc-internal-format
  #| msgid "')' or term expected"
  msgid "for statement expected"
--- 52504,54026 ----
  
  #. Location of the binary operator.
  #. Quiet warning.
! #: c/c-parser.cc:10193 cp/typeck.cc:5698
  #, gcc-internal-format
  msgid "division %<sizeof (%T) / sizeof (%T)%> does not compute the number of array elements"
  msgstr ""
  
! #: c/c-parser.cc:10199 cp/typeck.cc:5703
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "first %<sizeof%> operand was declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: c/c-parser.cc:10470
  #, fuzzy, gcc-internal-format
  #| msgid "storage class specified for %s `%s'"
  msgid "storage class specifier in cast"
  msgstr "lagringsklasse angivet for %s '%s'"
  
! #: c/c-parser.cc:10473
  #, fuzzy, gcc-internal-format
  msgid "alignment specified for type name in cast"
  msgstr "justering mÃ¥ ikke angives for '%s'"
  
! #: c/c-parser.cc:10574
  #, gcc-internal-format
  msgid "traditional C rejects the unary plus operator"
  msgstr "traditionel C tillader ikke operatoren unÃ¦r plus"
  
! #: c/c-parser.cc:10704
  #, fuzzy, gcc-internal-format
  #| msgid "storage class specified for %s `%s'"
  msgid "storage class specifier in %<sizeof%>"
  msgstr "lagringsklasse angivet for %s '%s'"
  
! #: c/c-parser.cc:10707
  #, fuzzy, gcc-internal-format
  msgid "alignment specified for type name in %<sizeof%>"
  msgstr "justering mÃ¥ ikke angives for '%s'"
  
! #: c/c-parser.cc:10723
  #, fuzzy, gcc-internal-format
  #| msgid "sizeof applied to a bit-field"
  msgid "%<sizeof%> applied to a bit-field"
  msgstr "'sizeof' benyttet pÃ¥ et bitfelt"
  
! #: c/c-parser.cc:10796
  #, fuzzy, gcc-internal-format
  #| msgid "storage class specified for %s `%s'"
  msgid "storage class specifier in %qE"
  msgstr "lagringsklasse angivet for %s '%s'"
  
! #: c/c-parser.cc:10799
  #, fuzzy, gcc-internal-format
  msgid "alignment specified for type name in %qE"
  msgstr "justering mÃ¥ ikke angives for '%s'"
  
! #: c/c-parser.cc:10823
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not allow #%s"
  msgid "ISO C does not allow %<%E (expression)%>"
  msgstr "ISO C tillader ikke #%s"
  
! #: c/c-parser.cc:10976
  #, fuzzy, gcc-internal-format
  #| msgid "cannot take address of bit-field `%s'"
  msgid "cannot take address of %qs"
  msgstr "kan ikke finde adressen af bitfeltet '%s'"
  
! #: c/c-parser.cc:11083
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support complex types"
  msgid "ISO C99 does not support %<_Generic%>"
  msgstr "ISO C90 understÃ¸tter ikke komplekse typer"
  
! #: c/c-parser.cc:11086
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support complex types"
  msgid "ISO C90 does not support %<_Generic%>"
  msgstr "ISO C90 understÃ¸tter ikke komplekse typer"
  
! #: c/c-parser.cc:11097
  #, gcc-internal-format
  msgid "ISO C does not support use of type name as %<_Generic%> controlling operand before C2Y"
  msgstr ""
  
! #: c/c-parser.cc:11168
  #, fuzzy, gcc-internal-format
  #| msgid "cast specifies function type"
  msgid "ISO C does not support %<_Generic%> association with function type before C2Y"
  msgstr "typetildelingen angiver en funktionstype"
  
! #: c/c-parser.cc:11172
  #, fuzzy, gcc-internal-format
  #| msgid "expression statement has incomplete type"
  msgid "ISO C does not support %<_Generic%> association with incomplete type before C2Y"
  msgstr "udtrykket er af en ufuldstÃ¦ndig type"
  
! #: c/c-parser.cc:11177
  #, gcc-internal-format
  msgid "%<_Generic%> association has variable length type"
  msgstr ""
  
! #: c/c-parser.cc:11211
  #, gcc-internal-format
  msgid "duplicate %<default%> case in %<_Generic%>"
  msgstr ""
  
! #: c/c-parser.cc:11212
  #, gcc-internal-format
  msgid "original %<default%> is here"
  msgstr ""
  
! #: c/c-parser.cc:11220
  #, gcc-internal-format
  msgid "%<_Generic%> specifies two compatible types"
  msgstr ""
  
! #: c/c-parser.cc:11221
  #, fuzzy, gcc-internal-format
  #| msgid "incompatible types in %s"
  msgid "compatible type is here"
  msgstr "uforenelige typer i %s"
  
! #: c/c-parser.cc:11244
  #, fuzzy, gcc-internal-format
  #| msgid "Generate load/store multiple instructions"
  msgid "%<_Generic%> selector matches multiple associations"
  msgstr "GenerÃ©r flere indlÃ¦snings-/lagringsinstruktioner"
  
! #: c/c-parser.cc:11246
  #, fuzzy, gcc-internal-format
  msgid "other match is here"
  msgstr "  anden type her"
  
! #: c/c-parser.cc:11271
  #, gcc-internal-format
  msgid "%<_Generic%> selector of type %qT is not compatible with any association"
  msgstr ""
  
! #: c/c-parser.cc:11292
  #, fuzzy, gcc-internal-format
  #| msgid "first argument to __builtin_choose_expr not a constant"
  msgid "argument %u of %<__builtin_tgmath%> is not a function pointer"
  msgstr "fÃ¸rste parameter til '__builtin_choose_expr' skal vÃ¦re en konstant"
  
! #: c/c-parser.cc:11300
  #, fuzzy, gcc-internal-format
  msgid "argument %u of %<__builtin_tgmath%> is unprototyped"
  msgstr "parameteren '%s' passer ikke til prototypen"
  
! #: c/c-parser.cc:11306
  #, fuzzy, gcc-internal-format
  #| msgid "argument of `__builtin_eh_return_regno' must be constant"
  msgid "argument %u of %<__builtin_tgmath%> has variable arguments"
  msgstr "parameteren til '__builtin_eh_return_regno' skal vÃ¦re konstant"
  
! #: c/c-parser.cc:11322
  #, fuzzy, gcc-internal-format
  #| msgid "argument of `__builtin_eh_return_regno' must be constant"
  msgid "argument %u of %<__builtin_tgmath%> has no arguments"
  msgstr "parameteren til '__builtin_eh_return_regno' skal vÃ¦re konstant"
  
! #: c/c-parser.cc:11345 c/c-parser.cc:11349
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support complex types"
  msgid "ISO C does not support %qs predefined identifier"
  msgstr "ISO C90 understÃ¸tter ikke komplekse typer"
  
! #: c/c-parser.cc:11353
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support complex types"
  msgid "ISO C90 does not support %<__func__%> predefined identifier"
  msgstr "ISO C90 understÃ¸tter ikke komplekse typer"
  
! #: c/c-parser.cc:11562 c/c-parser.cc:13301 c/c-parser.cc:13323
! #: c/c-parser.cc:23002 c/gimple-parser.cc:1897 c/gimple-parser.cc:2537
! #: cp/parser.cc:44575
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "expected expression"
  msgstr "uventet adresseudtryk"
  
! #: c/c-parser.cc:11584
  #, gcc-internal-format
  msgid "braced-group within expression allowed only inside a function"
  msgstr "sÃ¦tningsblokke i udtryk er kun tilladt inde i en funktion"
  
! #: c/c-parser.cc:11599
  #, gcc-internal-format
  msgid "ISO C forbids braced-groups within expressions"
  msgstr "ISO C forbyder sÃ¦tningsblokke inden i udtryk"
  
! #: c/c-parser.cc:11710
  #, fuzzy, gcc-internal-format
  #| msgid "second parameter of `va_start' not last named argument"
  msgid "optional second parameter of %<va_start%> not last named argument"
  msgstr "den anden parameter til 'va_start' er ikke den sidste navngivne parameter"
  
! #: c/c-parser.cc:11749
  #, gcc-internal-format
  msgid "%<va_start%> macro used with additional arguments other than identifier of the last named argument"
  msgstr ""
  
! #: c/c-parser.cc:11894
  #, fuzzy, gcc-internal-format
  #| msgid "first argument to __builtin_choose_expr not a constant"
  msgid "wrong number of arguments to %<__builtin_choose_expr%>"
  msgstr "fÃ¸rste parameter til '__builtin_choose_expr' skal vÃ¦re en konstant"
  
! #: c/c-parser.cc:11910
  #, fuzzy, gcc-internal-format
  #| msgid "first argument to __builtin_choose_expr not a constant"
  msgid "first argument to %<__builtin_choose_expr%> not a constant"
  msgstr "fÃ¸rste parameter til '__builtin_choose_expr' skal vÃ¦re en konstant"
  
! #: c/c-parser.cc:11980 c/c-parser.cc:11997 c/c-parser.cc:12004
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to function `va_start'"
  msgid "too few arguments to %<__builtin_tgmath%>"
  msgstr "for mange parametre til funktionen 'va_start'"
  
! #: c/c-parser.cc:12025
  #, fuzzy, gcc-internal-format
  #| msgid "argument 1 of __builtin_spe_predicate is out of range"
  msgid "argument %u of %<__builtin_tgmath%> has wrong number of arguments"
  msgstr "1. parameter til __builtin_spe_predicate er uden for det gyldige interval"
  
! #: c/c-parser.cc:12069 c/c-parser.cc:12079
  #, gcc-internal-format
  msgid "invalid type-generic return type for argument %u of %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12101 c/c-parser.cc:12111
  #, gcc-internal-format
  msgid "invalid type-generic type for argument %u of argument %u of %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12144
  #, fuzzy, gcc-internal-format
  #| msgid "argument to `%s' attribute larger than %d"
  msgid "function arguments of %<__builtin_tgmath%> all have the same type"
  msgstr "parameter til egenskaben '%s' er stÃ¸rre end %d"
  
! #: c/c-parser.cc:12163
  #, gcc-internal-format
  msgid "function arguments of %<__builtin_tgmath%> lack type-generic parameter"
  msgstr ""
  
! #: c/c-parser.cc:12211
  #, gcc-internal-format
  msgid "duplicate type-generic parameter type for function argument %u of %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12234
  #, gcc-internal-format
  msgid "bad return type for function argument %u of %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12251
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "bad type for argument %u of function argument %u of %<__builtin_tgmath%>"
  msgstr "forkert antal parametre angivet til egenskaben '%s'"
  
! #: c/c-parser.cc:12291
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid return type for member function `%#D'"
  msgid "invalid type of argument %u of type-generic function"
  msgstr "ugyldig returtype for medlemsfunktionen '%#D'"
  
! #: c/c-parser.cc:12302
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "decimal floating-point argument %u to complex-only type-generic function"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c/c-parser.cc:12310
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "decimal floating-point argument %u to binary-only type-generic function"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c/c-parser.cc:12318 c/c-parser.cc:12348
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "both complex and decimal floating-point arguments to type-generic function"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c/c-parser.cc:12326 c/c-parser.cc:12368
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "both binary and decimal floating-point arguments to type-generic function"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c/c-parser.cc:12340
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "complex arguments must have identical types"
  msgid "complex argument %u to decimal-only type-generic function"
  msgstr "komplekse parametre skal have identiske typer"
  
! #: c/c-parser.cc:12360
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "too many arguments to function"
  msgid "binary argument %u to decimal-only type-generic function"
  msgstr "for mange parametre til funktionen"
  
! #: c/c-parser.cc:12467
  #, fuzzy, gcc-internal-format
  #| msgid "no matching function for call to `%D(%A)'"
  msgid "no matching function for type-generic call"
  msgstr "ingen passende funktion for kald til '%D(%A)'"
  
! #: c/c-parser.cc:12508
  #, gcc-internal-format
  msgid "wrong number of arguments to %<__builtin_call_with_static_chain%>"
  msgstr ""
  
! #: c/c-parser.cc:12521
  #, fuzzy, gcc-internal-format
  #| msgid "argument 1 of __builtin_altivec_predicate must be a constant"
  msgid "first argument to %<__builtin_call_with_static_chain%> must be a call expression"
  msgstr "1. parameter til __builtin_altivec_predicate skal vÃ¦re en konstant"
  
! #: c/c-parser.cc:12525
  #, fuzzy, gcc-internal-format
  #| msgid "second arg to `__builtin_prefetch' must be a constant"
  msgid "second argument to %<__builtin_call_with_static_chain%> must be a pointer type"
  msgstr "den anden parameter til '__builtin_prefetch' skal vÃ¦re en konstant"
  
! #: c/c-parser.cc:12551
  #, fuzzy, gcc-internal-format
  #| msgid "wrong type argument to bit-complement"
  msgid "wrong number of arguments to %<__builtin_complex%>"
  msgstr "forkert parametertype til bitkomplement"
  
! #: c/c-parser.cc:12573
  #, gcc-internal-format
  msgid "%<__builtin_complex%> operand not of real binary floating-point type"
  msgstr ""
  
! #: c/c-parser.cc:12582
  #, fuzzy, gcc-internal-format
  #| msgid "operands to ?: have different types"
  msgid "%<__builtin_complex%> operands of different types"
  msgstr "operander til ?: har forskellige typer"
  
! #: c/c-parser.cc:12613
  #, fuzzy, gcc-internal-format
  #| msgid "wrong type argument to bit-complement"
  msgid "wrong number of arguments to %<__builtin_counted_by_ref%>"
  msgstr "forkert parametertype til bitkomplement"
  
! #: c/c-parser.cc:12624
  #, fuzzy, gcc-internal-format
  #| msgid "third arg to `__builtin_prefetch' must be a constant"
  msgid "the argument to %<__builtin_counted_by_ref%> must be an array"
  msgstr "en tredje parameter til '__builtin_prefetch' skal vÃ¦re en konstant"
  
! #: c/c-parser.cc:12675 c/c-parser.cc:12704 cp/parser.cc:8032
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of template arguments (%d, should be %d)"
  msgid "wrong number of arguments to %<__builtin_shuffle%>"
  msgstr "forkert antal skabelonsparametre (%d, skulle vÃ¦re %d)"
  
! #: c/c-parser.cc:12875
  #, fuzzy, gcc-internal-format
  #| msgid "wrong type argument to %s"
  msgid "wrong number of arguments to %qs"
  msgstr "forkert parametertype til %s"
  
! #: c/c-parser.cc:12884 c/c-parser.cc:12964
  #, fuzzy, gcc-internal-format
  #| msgid "type to vector delete is neither pointer or array type"
  msgid "%qs operand not an integral type"
  msgstr "variablen til tabel-delete er hverken af en henvisnings- eller en tabeltype"
  
! #: c/c-parser.cc:12890 c/c-parser.cc:12970
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "argument %u in call to function %qs has enumerated type"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c/c-parser.cc:12897
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "argument %u in call to function %qs has boolean type"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c/c-parser.cc:12904
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "argument 1 in call to function %qs has signed type"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c/c-parser.cc:12912
  #, fuzzy, gcc-internal-format
  #| msgid "non-floating-point argument to function `%s'"
  msgid "argument 1 in call to function %qs has %<char%> type"
  msgstr "parameter der ikke er et kommatal, til funktionen '%s'"
  
! #: c/c-parser.cc:12986
  #, fuzzy, gcc-internal-format
  #| msgid "%s rotate count is negative"
  msgid "rotate count is negative"
  msgstr "%s-roteringsantal er negativt"
  
! #: c/c-parser.cc:13278 cp/parser.cc:6380
  #, gcc-internal-format
  msgid "%<omp_all_memory%> may only be used in OpenMP %<depend%> clause"
  msgstr ""
  
! #: c/c-parser.cc:13288
  #, fuzzy, gcc-internal-format
  #| msgid "%s does not support %s"
  msgid "ISO C does not support %qs before C23"
  msgstr "%s understÃ¸tter ikke %s"
  
! #: c/c-parser.cc:13376
  #, fuzzy, gcc-internal-format
  #| msgid "field `%D' declared static in union"
  msgid "%qT declared in %<constexpr%> compound literal"
  msgstr "feltet '%D' er erklÃ¦ret statisk i union"
  
! #: c/c-parser.cc:13381
  #, fuzzy, gcc-internal-format
  #| msgid "field `%D' declared static in union"
  msgid "%qT defined in %<constexpr%> compound literal"
  msgstr "feltet '%D' er erklÃ¦ret statisk i union"
  
! #: c/c-parser.cc:13396
  #, gcc-internal-format
  msgid "compound literal has variable size"
  msgstr ""
  
! #: c/c-parser.cc:13401
  #, fuzzy, gcc-internal-format
  #| msgid "sizeof applied to a function type"
  msgid "compound literal has function type"
  msgstr "sizeof benyttet pÃ¥ en funktionstype"
  
! #: c/c-parser.cc:13432
  #, gcc-internal-format
  msgid "compound literal qualified by address-space qualifier"
  msgstr ""
  
! #: c/c-parser.cc:13437
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 forbids compound literals"
  msgid "ISO C90 forbids compound literals"
  msgstr "ISO C89 forbyder sammensatte konstanter"
  
! #: c/c-parser.cc:13439
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 forbids compound literals"
  msgid "ISO C forbids storage class specifiers in compound literals before C23"
  msgstr "ISO C89 forbyder sammensatte konstanter"
  
! #: c/c-parser.cc:13453
  #, gcc-internal-format
  msgid "%<_Alignas%> specifiers cannot reduce alignment of compound literal"
  msgstr ""
  
! #: c/c-parser.cc:13528
  #, gcc-internal-format
  msgid "using integer absolute value function %qD when argument is of floating-point type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13533
  #, gcc-internal-format
  msgid "using integer absolute value function %qD when argument is of complex type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13541
  #, gcc-internal-format
  msgid "taking the absolute value of unsigned type %qT has no effect"
  msgstr ""
  
! #: c/c-parser.cc:13552
  #, gcc-internal-format
  msgid "using floating-point absolute value function %qD when argument is of integer type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13556
  #, gcc-internal-format
  msgid "using floating-point absolute value function %qD when argument is of decimal floating-point type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13561
  #, gcc-internal-format
  msgid "using floating-point absolute value function %qD when argument is of complex type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13574
  #, gcc-internal-format
  msgid "using complex absolute value function %qD when argument is of integer type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13578
  #, gcc-internal-format
  msgid "using complex absolute value function %qD when argument is of floating-point type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13596
  #, gcc-internal-format
  msgid "using decimal floating-point absolute value function %qD when argument is of integer type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13601
  #, gcc-internal-format
  msgid "using decimal floating-point absolute value function %qD when argument is of floating-point type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13606
  #, gcc-internal-format
  msgid "using decimal floating-point absolute value function %qD when argument is of complex type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13632
  #, gcc-internal-format
  msgid "absolute value function %qD given an argument of type %qT but has parameter of type %qT which may cause truncation of value"
  msgstr ""
  
! #: c/c-parser.cc:13762 cp/parser.cc:8468
  #, gcc-internal-format
  msgid "calls to the OpenMP runtime API are not permitted in intervening code"
  msgstr ""
  
! #: c/c-parser.cc:14182
  #, gcc-internal-format
  msgid "expected identifier or %<)%>"
  msgstr ""
  
! #: c/c-parser.cc:14278
  #, gcc-internal-format
  msgid "extra semicolon"
  msgstr ""
  
! #: c/c-parser.cc:14526
  #, fuzzy, gcc-internal-format
  #| msgid "extra semicolon in struct or union specified"
  msgid "extra semicolon in method definition specified"
  msgstr "ekstra semikolon angivet i struct eller union"
  
! #: c/c-parser.cc:14658
  #, gcc-internal-format
  msgid "method attributes must be specified at the end only"
  msgstr ""
  
! #: c/c-parser.cc:14678
  #, gcc-internal-format
  msgid "expected %<;%> or %<{%> after method attribute definition"
  msgstr ""
  
! #: c/c-parser.cc:14800
  #, fuzzy, gcc-internal-format
  #| msgid "Class or interface declaration expected"
  msgid "objective-c method declaration is expected"
  msgstr "Klasse- eller grÃ¦nsefladeerklÃ¦ring forventet"
  
! #: c/c-parser.cc:15252
  #, fuzzy, gcc-internal-format
  #| msgid "storage class specified for typename"
  msgid "no type or storage class may be specified here,"
  msgstr "lagringsklasse angivet for typenavn"
  
! #: c/c-parser.cc:15320 cp/parser.cc:38479
  #, fuzzy, gcc-internal-format
  #| msgid "readonly property can not be set"
  msgid "empty property attribute list"
  msgstr "skrivebeskyttet egenskab kan ikke angives"
  
! #: c/c-parser.cc:15334 cp/parser.cc:38492
  #, fuzzy, gcc-internal-format
  #| msgid "missing Code attribute"
  msgid "missing property attribute"
  msgstr "manglende Code-egenskab"
  
! #: c/c-parser.cc:15373
  #, fuzzy, gcc-internal-format
  #| msgid "Unknown cpu: -mcpu=%s"
  msgid "unknown property attribute %<%s%s%>"
  msgstr "Ukendt processor: -mcpu=%s"
  
! #: c/c-parser.cc:15376 cp/parser.cc:38529
  #, gcc-internal-format
  msgid "unknown property attribute"
  msgstr ""
  
! #: c/c-parser.cc:15385 cp/parser.cc:38538
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<,%> or %<)%>"
  msgid "expected %<=%> after Objective-C %qE"
  msgstr "%<,%> eller %<)%> forventet"
  
! #: c/c-parser.cc:15396 cp/parser.cc:38552
  #, fuzzy, gcc-internal-format
  #| msgid "empty body in an else-statement"
  msgid "expected %qE selector name"
  msgstr "tom krop i en else-sÃ¦tning"
  
! #: c/c-parser.cc:15412 cp/parser.cc:38571
  #, gcc-internal-format
  msgid "setter method names must terminate with %<:%>"
  msgstr ""
  
! #: c/c-parser.cc:15636 cp/semantics.cc:14071
  #, gcc-internal-format
  msgid "%<#pragma GCC unroll%> requires an assignment-expression that evaluates to a non-negative integral constant less than %u"
  msgstr ""
  
! #: c/c-parser.cc:15674 cp/parser.cc:53506
  #, gcc-internal-format
  msgid "intervening code must not contain OpenMP directives"
  msgstr ""
  
! #: c/c-parser.cc:15694 c/c-parser.cc:25712 c/c-parser.cc:26021
! #: c/c-parser.cc:26084 c/c-parser.cc:26194 cp/parser.cc:48149
! #: cp/parser.cc:48497 cp/parser.cc:48612 cp/parser.cc:48711 cp/parser.cc:53538
! #: cp/parser.cc:53554 cp/parser.cc:53570 cp/parser.cc:53586 cp/parser.cc:53603
! #: cp/parser.cc:53620 cp/parser.cc:53637 cp/parser.cc:53664 cp/parser.cc:53678
! #: cp/parser.cc:53703 cp/parser.cc:53717
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma %s%> may only be used in compound statements"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: c/c-parser.cc:15717 cp/parser.cc:53692
  #, fuzzy, gcc-internal-format
  #| msgid "#pragma once in main file"
  msgid "%<#pragma acc routine%> must be at file scope"
  msgstr "'#pragma once' i hovedfil"
  
! #: c/c-parser.cc:15816 cp/parser.cc:53822
  #, gcc-internal-format
  msgid "%<#pragma omp scan%> may only be used in a loop construct with %<inscan%> %<reduction%> clause"
  msgstr ""
  
! #: c/c-parser.cc:15823 cp/parser.cc:53828
  #, gcc-internal-format
  msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct"
  msgstr ""
  
! #: c/c-parser.cc:15835 c/c-parser.cc:15851
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma %s%> may only be used at file scope"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: c/c-parser.cc:15922 cp/parser.cc:53911
  #, gcc-internal-format
  msgid "for, while or do statement expected"
  msgstr ""
  
! #: c/c-parser.cc:15938 cp/parser.cc:53528
  #, gcc-internal-format
  msgid "%<#pragma GCC pch_preprocess%> must be first"
  msgstr ""
  
! #: c/c-parser.cc:16321 c/c-parser.cc:20241 c/c-parser.cc:22470
! #: c/c-parser.cc:22489 c/c-parser.cc:22742 c/c-parser.cc:22800
! #: c/c-parser.cc:22807 c/c-parser.cc:22814 c/c-parser.cc:27166
! #: c/c-parser.cc:28371 c/c-parser.cc:28379 c/c-parser.cc:28755
! #: c/c-parser.cc:28765 c/c-parser.cc:28859 c/c-parser.cc:28866
! #: c/c-parser.cc:28873 cp/parser.cc:39018 cp/parser.cc:42699 cp/parser.cc:44101
! #: cp/parser.cc:44138 cp/parser.cc:44327 cp/parser.cc:44390 cp/parser.cc:44397
! #: cp/parser.cc:44404 cp/parser.cc:50070 cp/parser.cc:50077 cp/parser.cc:50084
! #: cp/parser.cc:50617 cp/parser.cc:52392 cp/parser.cc:52400 cp/parser.cc:52552
! #: cp/parser.cc:52562
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %qs clauses"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:16348
  #, fuzzy, gcc-internal-format
  #| msgid "predicate must be an identifier"
  msgid "expression must be integral"
  msgstr "udsagn skal vÃ¦re et kaldenavn"
  
! #: c/c-parser.cc:16955 c/c-parser.cc:29582
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a namespace"
  msgid "%qD is not a variable"
  msgstr "'%D' er ikke et navnerum"
  
! #: c/c-parser.cc:16959 cp/semantics.cc:9112
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a pointer-to-object type"
  msgid "%qD is not a pointer variable"
  msgstr "'%T' er ikke af en henvisning til objekt-type"
  
! #: c/c-parser.cc:17001 cp/parser.cc:39909
  #, fuzzy, gcc-internal-format
  #| msgid "comparison between signed and unsigned integer expressions"
  msgid "collapse argument needs positive constant integer expression"
  msgstr "sammenlign mellem signed og unsigned heltalsudtryk"
  
! #: c/c-parser.cc:17096 cp/parser.cc:39987
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<:%> or %<::%>"
  msgid "expected %<none%> or %<present%>"
  msgstr "forventede %<:%> or %<::%>"
  
! #: c/c-parser.cc:17098 cp/parser.cc:39989
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<none%>, %<shared%>, %<private%> or %<firstprivate%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: c/c-parser.cc:17183 cp/parser.cc:40059
  #, fuzzy, gcc-internal-format
  #| msgid "']' expected, invalid type expression"
  msgid "expected constant logical expression"
  msgstr "']' forventet, ugyldigt typeudtryk"
  
! #: c/c-parser.cc:17260 cp/parser.cc:40141
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<data%>, %<update%>, %<enter%> or %<exit%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: c/c-parser.cc:17280 c/c-parser.cc:26077 c/c-parser.cc:26187
! #: cp/parser.cc:40159 cp/parser.cc:48489 cp/parser.cc:48604
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<catch%>"
  msgid "expected %<data%>"
  msgstr "forventede %<catch%>"
  
! #: c/c-parser.cc:17333 cp/parser.cc:40214
  #, gcc-internal-format
  msgid "too many %<if%> clauses with %qs modifier"
  msgstr ""
  
! #: c/c-parser.cc:17340 cp/parser.cc:40221
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<if%> clauses"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:17342 cp/parser.cc:40223
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<if%> clauses without modifier"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:17348 cp/parser.cc:40229
  #, gcc-internal-format
  msgid "if any %<if%> clause has modifier, then all %<if%> clauses have to use modifier"
  msgstr ""
  
! #: c/c-parser.cc:17453 c/c-parser.cc:17513 c/c-parser.cc:17575
! #: c/c-parser.cc:17623 c/c-parser.cc:17703 c/c-parser.cc:18100
! #: c/c-parser.cc:18182 c/c-parser.cc:18787 c/c-parser.cc:18932
! #: c/c-parser.cc:19000 c/c-parser.cc:20178
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "expected integer expression"
  msgstr "uventet adresseudtryk"
  
! #: c/c-parser.cc:17464
  #, gcc-internal-format
  msgid "%<num_threads%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:17525
  #, gcc-internal-format
  msgid "%<num_tasks%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:17587 cp/semantics.cc:9327
  #, gcc-internal-format
  msgid "%<grainsize%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:17636 cp/semantics.cc:9357
  #, fuzzy, gcc-internal-format
  #| msgid "%s rotate count is negative"
  msgid "%<priority%> value must be non-negative"
  msgstr "%s-roteringsantal er negativt"
  
! #: c/c-parser.cc:17670 cp/parser.cc:40455
  #, fuzzy, gcc-internal-format
  #| msgid "']' expected, invalid type expression"
  msgid "expected constant integer expression with valid sync-hint value"
  msgstr "']' forventet, ugyldigt typeudtryk"
  
! #: c/c-parser.cc:17742 cp/parser.cc:40525
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<alloc%>, %<to%>, %<from%>, %<tofrom%>, %<firstprivate%>, %<none%> or %<default%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: c/c-parser.cc:17810
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<scalar%>, %<aggregate%>, %<pointer%> or %<all%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: c/c-parser.cc:17887 cp/parser.cc:40677
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<defaultmap%> clauses with %qs category"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:17890 cp/parser.cc:40680
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<defaultmap%> clauses with unspecified category"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:17974 cp/semantics.cc:8181 cp/semantics.cc:8236
  #, fuzzy, gcc-internal-format
  #| msgid "predicate must be an identifier"
  msgid "%qs expression must be integral"
  msgstr "udsagn skal vÃ¦re et kaldenavn"
  
! #: c/c-parser.cc:17986 c/c-parser.cc:18109 cp/semantics.cc:8215
  #: cp/semantics.cc:8250
  #, fuzzy, gcc-internal-format
  #| msgid "%s rotate count is negative"
  msgid "%qs value must be positive"
  msgstr "%s-roteringsantal er negativt"
  
! #: c/c-parser.cc:18048 cp/parser.cc:39672
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments"
  msgid "too many %<static%> arguments"
  msgstr "for mange parametre"
  
! #: c/c-parser.cc:18082 cp/parser.cc:39705
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected operand"
  msgid "unexpected argument"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:18249 cp/semantics.cc:9543
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute argument not an integer constant"
  msgid "%<tile%> argument needs positive integral constant"
  msgstr "parameteren til egenskaben '%s' er ikke en heltalskonstant"
  
! #: c/c-parser.cc:18317 cp/parser.cc:43318
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<self%> clauses"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:18359 cp/parser.cc:40730
  #, fuzzy, gcc-internal-format
  msgid "expected %<reproducible%> or %<unconstrained%>"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:18368 c/c-parser.cc:18374 cp/parser.cc:40739
! #: cp/parser.cc:40749
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<new%>"
  msgid "expected %<concurrent%>"
  msgstr "forventede %<new%>"
  
! #: c/c-parser.cc:18410 cp/parser.cc:40789
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<teams%>, %<parallel%> or %<thread%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: c/c-parser.cc:18463 cp/parser.cc:40857
  #, fuzzy, gcc-internal-format
  #| msgid "comparison between signed and unsigned integer expressions"
  msgid "ordered argument needs positive constant integer expression"
  msgstr "sammenlign mellem signed og unsigned heltalsudtryk"
  
! #: c/c-parser.cc:18588 c/c-parser.cc:27916 cp/parser.cc:52002
  #, gcc-internal-format
  msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%> or identifier"
  msgstr ""
  
! #: c/c-parser.cc:18710 cp/parser.cc:41115
  #, gcc-internal-format
  msgid "both %<monotonic%> and %<nonmonotonic%> modifiers specified"
  msgstr ""
  
! #: c/c-parser.cc:18764 cp/parser.cc:41131
  #, gcc-internal-format
  msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
  msgstr ""
  
! #: c/c-parser.cc:18768 cp/parser.cc:41134
  #, gcc-internal-format
  msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
  msgstr ""
  
! #: c/c-parser.cc:18781 cp/semantics.cc:8297
  #, fuzzy, gcc-internal-format
  #| msgid "%s rotate count is negative"
  msgid "chunk size value must be positive"
  msgstr "%s-roteringsantal er negativt"
  
! #: c/c-parser.cc:18804 cp/parser.cc:41154
  #, fuzzy, gcc-internal-format
  msgid "invalid schedule kind"
  msgstr "ugyldig roteringsinstruktion"
  
! #: c/c-parser.cc:18943 c/c-parser.cc:18954
  #, gcc-internal-format
  msgid "%<num_teams%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:18962 cp/semantics.cc:8264
  #, gcc-internal-format
  msgid "%<num_teams%> lower bound %qE bigger than upper bound %qE"
  msgstr ""
  
! #: c/c-parser.cc:19011 cp/semantics.cc:8393
  #, gcc-internal-format
  msgid "%<thread_limit%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:19056 cp/semantics.cc:8521
  #, gcc-internal-format
  msgid "%<aligned%> clause alignment expression must be positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:19168 c/c-parser.cc:22457 cp/parser.cc:44093
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<,%> or %<)%>"
  msgid "expected %<allocator%> or %<align%>"
  msgstr "%<,%> eller %<)%> forventet"
  
! #: c/c-parser.cc:19175
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate %qs"
  msgid "duplicate %qs modifier"
  msgstr "duplikere %qs"
  
! #: c/c-parser.cc:19223 cp/semantics.cc:8654
  #, gcc-internal-format
  msgid "%<allocate%> clause allocator expression has type %qT rather than %<omp_allocator_handle_t%>"
  msgstr ""
  
! #: c/c-parser.cc:19234 cp/semantics.cc:8609 cp/semantics.cc:8625
  #, fuzzy, gcc-internal-format
  #| msgid "comparison between signed and unsigned integer expressions"
  msgid "%<allocate%> clause %<align%> modifier argument needs to be positive constant power of two integer expression"
  msgstr "sammenlign mellem signed og unsigned heltalsudtryk"
  
! #: c/c-parser.cc:19353 cp/parser.cc:41693
  #, fuzzy, gcc-internal-format
  #| msgid "multiple `virtual' specifiers"
  msgid "multiple linear modifiers"
  msgstr "mere end Ã©n 'virtual'-angivelse"
  
! #: c/c-parser.cc:19365 cp/parser.cc:41706
  #, fuzzy, gcc-internal-format
  #| msgid "multiple `virtual' specifiers"
  msgid "multiple %<step%> modifiers"
  msgstr "mere end Ã©n 'virtual'-angivelse"
  
! #: c/c-parser.cc:19373 c/c-parser.cc:19401
  #, gcc-internal-format
  msgid "%<linear%> clause step expression must be integral"
  msgstr ""
  
! #: c/c-parser.cc:19453
  #, gcc-internal-format
  msgid "%<safelen%> clause expression must be positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:19492
  #, gcc-internal-format
  msgid "%<simdlen%> clause expression must be positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:19852 cp/parser.cc:42253
  #, fuzzy, gcc-internal-format
  #| msgid "%s from incompatible pointer type"
  msgid "%<iterator%> modifier incompatible with %qs"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: c/c-parser.cc:19900 cp/parser.cc:42308 cp/parser.cc:42760 cp/parser.cc:42827
  #, fuzzy, gcc-internal-format
  #| msgid "invalid %%d operand"
  msgid "invalid depend kind"
  msgstr "ugyldig %%d-operand"
  
! #: c/c-parser.cc:19961 cp/parser.cc:42338
  #, fuzzy, gcc-internal-format
  #| msgid "invalid mask"
  msgid "invalid doacross kind"
  msgstr "ugyldig maske"
  
! #: c/c-parser.cc:20030 cp/parser.cc:42481
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<always%> modifiers"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:20040 cp/parser.cc:42494
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<close%> modifiers"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:20050 cp/parser.cc:42507
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<present%> modifiers"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:20058 cp/parser.cc:42518
  #, gcc-internal-format
  msgid "%<map%> clause with map-type modifier other than %<always%>, %<close%> or %<present%>"
  msgstr ""
  
! #: c/c-parser.cc:20096 cp/parser.cc:42558
  #, fuzzy, gcc-internal-format
  #| msgid "invalid mask"
  msgid "invalid map kind"
  msgstr "ugyldig maske"
  
! #: c/c-parser.cc:20148 cp/parser.cc:42622
  #, gcc-internal-format
  msgid "%<ancestor%> device modifier not preceded by %<requires%> directive with %<reverse_offload%> clause"
  msgstr ""
  
! #: c/c-parser.cc:20160 cp/parser.cc:42633
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<:%> or %<::%>"
  msgid "expected %<ancestor%> or %<device_num%>"
  msgstr "forventede %<:%> or %<::%>"
  
! #: c/c-parser.cc:20183 cp/semantics.cc:8418
  #, gcc-internal-format
  msgid "the %<device%> clause expression must evaluate to %<1%>"
  msgstr ""
  
! #: c/c-parser.cc:20216 cp/parser.cc:42704
  #, fuzzy, gcc-internal-format
  msgid "invalid dist_schedule kind"
  msgstr "ugyldig roteringsinstruktion"
  
! #: c/c-parser.cc:20295
  #, fuzzy, gcc-internal-format
  #| msgid "invalid rotate insn"
  msgid "invalid proc_bind kind"
  msgstr "ugyldig roteringsinstruktion"
  
! #: c/c-parser.cc:20339
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<;%>, %<,%> or %<)%>"
  msgid "expected %<host%>, %<nohost%> or %<any%>"
  msgstr "%<;%>, %<,%> eller %<)%> forventet"
  
! #: c/c-parser.cc:20445 cp/semantics.cc:9665 cp/semantics.cc:9683
  #, fuzzy, gcc-internal-format
  #| msgid "comparison between signed and unsigned integer expressions"
  msgid "%<partial%> argument needs positive constant integer expression"
  msgstr "sammenlign mellem signed og unsigned heltalsudtryk"
  
! #: c/c-parser.cc:20546 cp/semantics.cc:8837
  #, gcc-internal-format
  msgid "%<detach%> clause event handle has type %qT rather than %<omp_event_handle_t%>"
  msgstr ""
  
! #: c/c-parser.cc:20617 c/c-parser.cc:20711 cp/parser.cc:42887
! #: cp/parser.cc:42999
  #, fuzzy, gcc-internal-format
  #| msgid "invalid string literal, ignoring final '\\'"
  msgid "string literal must not contain %<\\0%>"
  msgstr "ugyldig strengkonstant, ignorerer afsluttende '\\'"
  
! #: c/c-parser.cc:20626 c/c-parser.cc:20747 cp/parser.cc:42894
! #: cp/parser.cc:43034
  #, fuzzy, gcc-internal-format
  #| msgid "undefining `%s'"
  msgid "unknown foreign runtime identifier %qs"
  msgstr "glemmer definitionen af '%s'"
  
! #: c/c-parser.cc:20641 c/c-parser.cc:20770 cp/parser.cc:42909
! #: cp/parser.cc:43056
  #, fuzzy, gcc-internal-format
  #| msgid "']' expected, invalid type expression"
  msgid "expected string literal or constant integer expression"
  msgstr "']' forventet, ugyldigt typeudtryk"
  
! #: c/c-parser.cc:20649 c/c-parser.cc:20778 cp/parser.cc:42917
! #: cp/parser.cc:43064 cp/semantics.cc:7513
  #, gcc-internal-format
  msgid "unknown foreign runtime identifier %qwd"
  msgstr ""
  
! #: c/c-parser.cc:20687 cp/parser.cc:42976
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<:%> or %<::%>"
  msgid "expected %<fr%> or %<attr%> preference selector"
  msgstr "forventede %<:%> or %<::%>"
  
! #: c/c-parser.cc:20695 cp/parser.cc:42984
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `const'"
  msgid "duplicated %<fr%> preference selector"
  msgstr "'const' optrÃ¦der mere end Ã©n gang"
  
! #: c/c-parser.cc:20721 cp/parser.cc:43008
  #, gcc-internal-format
  msgid "%<attr%> string literal must start with %<ompx_%>"
  msgstr ""
  
! #: c/c-parser.cc:20729 cp/parser.cc:43015
  #, gcc-internal-format
  msgid "%<attr%> string literal must not contain a comma"
  msgstr ""
  
! #: c/c-parser.cc:20741 cp/parser.cc:43027
  #, fuzzy, gcc-internal-format
  #| msgid "_Pragma takes a parenthesized string literal"
  msgid "non-empty string literal expected"
  msgstr "_Pragma tager en strengkonstant med paranteser omkring"
  
! #: c/c-parser.cc:20851 cp/parser.cc:43167
  #, fuzzy, gcc-internal-format
  #| msgid "multiple `virtual' specifiers"
  msgid "duplicate %<targetsync%> modifier"
  msgstr "mere end Ã©n 'virtual'-angivelse"
  
! #: c/c-parser.cc:20858 cp/parser.cc:43174
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `volatile'"
  msgid "duplicate %<target%> modifier"
  msgstr "'volatile' optrÃ¦der mere end Ã©n gang"
  
! #: c/c-parser.cc:20865 cp/parser.cc:43181
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `const'"
  msgid "duplicate %<prefer_type%> modifier"
  msgstr "'const' optrÃ¦der mere end Ã©n gang"
  
! #: c/c-parser.cc:20886 cp/parser.cc:43202
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<prefer_type%>, %<target%>, or %<targetsync%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: c/c-parser.cc:20922 c/c-parser.cc:27195 cp/parser.cc:43239
! #: cp/parser.cc:50642
  #, gcc-internal-format
  msgid "missing required %<target%> and/or %<targetsync%> modifier"
  msgstr ""
  
! #: c/c-parser.cc:21163 cp/parser.cc:43534
  #, fuzzy, gcc-internal-format
  #| msgid "Unexpected EOF while reading source file %s.\n"
  msgid "expected an OpenACC clause"
  msgstr "StÃ¸dt pÃ¥ slutningen af kildefilen %s tidligere end forventet.\n"
  
! #: c/c-parser.cc:21174 c/c-parser.cc:21571 c/c-parser.cc:29156
! #: cp/parser.cc:43545 cp/parser.cc:43998 cp/parser.cc:51484
  #, fuzzy, gcc-internal-format
  msgid "%qs is not valid for %qs"
  msgstr "%s understÃ¸tter ikke %s"
  
! #: c/c-parser.cc:21219 cp/parser.cc:43593
  #, gcc-internal-format
  msgid "clauses in %<simd%> trait should be separated by %<,%>"
  msgstr ""
  
! #: c/c-parser.cc:21372 cp/parser.cc:43786
  #, gcc-internal-format
  msgid "%qs must be the first clause of %qs"
  msgstr ""
  
! #: c/c-parser.cc:21560 cp/parser.cc:43987
  #, fuzzy, gcc-internal-format
  msgid "expected an OpenMP clause"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:21721 cp/parser.cc:49174
  #, gcc-internal-format
  msgid "no valid clauses specified in %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21731 cp/parser.cc:49184
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of \"%s\" shadows a global declaration"
  msgid "array section in %<#pragma acc declare%>"
  msgstr "erklÃ¦ring af '%s' skygger for en global erklÃ¦ring"
  
! #: c/c-parser.cc:21751 cp/parser.cc:49204
  #, fuzzy, gcc-internal-format
  msgid "%qD must be a global variable in %<#pragma acc declare link%>"
  msgstr "erklÃ¦ring af '%s' der er en 'extern'-variabel, i begyndelseserklÃ¦ring i 'for'-lÃ¸kke"
  
! #: c/c-parser.cc:21762 cp/parser.cc:49215
  #, fuzzy, gcc-internal-format
  msgid "invalid OpenACC clause at file scope"
  msgstr "skabelonsparameter '%T' er en variabelt Ã¦ndret type"
  
! #: c/c-parser.cc:21769 cp/parser.cc:49222
  #, fuzzy, gcc-internal-format
  msgid "invalid use of %<extern%> variable %qD in %<#pragma acc declare%>"
  msgstr "erklÃ¦ring af '%s' der er en 'extern'-variabel, i begyndelseserklÃ¦ring i 'for'-lÃ¸kke"
  
! #: c/c-parser.cc:21777 cp/parser.cc:49230
  #, gcc-internal-format
  msgid "invalid use of %<global%> variable %qD in %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21788 cp/parser.cc:49252
  #, fuzzy, gcc-internal-format
  msgid "%qD must be a variable declared in the same scope as %<#pragma acc declare%>"
  msgstr "erklÃ¦ring af '%s' der er en 'extern'-variabel, i begyndelseserklÃ¦ring i 'for'-lÃ¸kke"
  
! #: c/c-parser.cc:21798 cp/parser.cc:49275
  #, gcc-internal-format
  msgid "variable %qD used more than once with %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21891 cp/parser.cc:49359
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<data%> after %<#pragma acc %s%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: c/c-parser.cc:21907 cp/parser.cc:49376
  #, fuzzy, gcc-internal-format
  #| msgid "#pragma once in main file"
  msgid "%<#pragma acc %s data%> has no data movement clause"
  msgstr "'#pragma once' i hovedfil"
  
! #: c/c-parser.cc:21939 cp/parser.cc:49134
  #, gcc-internal-format
  msgid "%<host_data%> construct requires %<use_device%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22168 cp/parser.cc:3533
  #, fuzzy, gcc-internal-format
  msgid "%qE has not been declared"
  msgstr "'%#D' kan ikke erklÃ¦res"
  
! #: c/c-parser.cc:22172
  #, fuzzy, gcc-internal-format
  #| msgid "expected function"
  msgid "expected function name"
  msgstr "forventet funktion"
  
! #: c/c-parser.cc:22190 cp/parser.cc:52819
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a member template function"
  msgid "%qD does not refer to a function"
  msgstr "'%D' er ikke en medlemsskabelonfunktion"
  
! #: c/c-parser.cc:22213 c/c-parser.cc:22261 cp/parser.cc:1779
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma acc routine%> not immediately followed by function declaration or definition"
  msgstr "en global registervariabel fÃ¸lger en funktionsdefinition"
  
! #: c/c-parser.cc:22253 cp/parser.cc:52870 cp/parser.cc:52917
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma acc routine%> not immediately followed by a single function declaration or definition"
  msgstr "en global registervariabel fÃ¸lger en funktionsdefinition"
  
! #: c/c-parser.cc:22284 cp/parser.cc:52945
  #, fuzzy, gcc-internal-format
  #| msgid "braced-group within expression allowed only inside a function"
  msgid "%<#pragma acc routine%> must be applied before use"
  msgstr "sÃ¦tningsblokke i udtryk er kun tilladt inde i en funktion"
  
! #: c/c-parser.cc:22285 cp/parser.cc:52947
  #, fuzzy, gcc-internal-format
  #| msgid "braced-group within expression allowed only inside a function"
  msgid "%<#pragma acc routine%> must be applied before definition"
  msgstr "sÃ¦tningsblokke i udtryk er kun tilladt inde i en funktion"
  
! #: c/c-parser.cc:22330 cp/parser.cc:49592
  #, gcc-internal-format
  msgid "%<#pragma acc update%> must contain at least one %<device%> or %<host%> or %<self%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22388
  #, gcc-internal-format
  msgid "variable %qD used in the %<allocator%> clause must be declared before %qD"
  msgstr ""
  
! #: c/c-parser.cc:22392 c/c-parser.cc:22415
  #, fuzzy, gcc-internal-format
  #| msgid "template parameter type `%T' declared `friend'"
  msgid "to be allocated variable declared here"
  msgstr "skabelonsparametertypen '%T' erklÃ¦ret 'friend'"
  
! #: c/c-parser.cc:22410
  #, gcc-internal-format
  msgid "variable %qD used in the %<allocator%> clause must not be modified between declaration of %qD and its %<allocate%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22413
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' previously defined here"
  msgid "modified here"
  msgstr "'%s' tidligere defineret her"
  
! #: c/c-parser.cc:22481 cp/parser.cc:44113 cp/parser.cc:44128
  #, fuzzy, gcc-internal-format
  #| msgid "comparison between signed and unsigned integer expressions"
  msgid "%<align%> clause argument needs to be positive constant power of two integer expression"
  msgstr "sammenlign mellem signed og unsigned heltalsudtryk"
  
! #: c/c-parser.cc:22505
  #, gcc-internal-format
  msgid "%<allocator%> clause allocator expression has type %qT rather than %<omp_allocator_handle_t%>"
  msgstr ""
  
! #: c/c-parser.cc:22522
  #, gcc-internal-format
  msgid "function parameter %qD may not appear as list item in an %<allocate%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22529
  #, gcc-internal-format
  msgid "%<allocate%> directive must be in the same scope as %qD"
  msgstr ""
  
! #: c/c-parser.cc:22537
  #, gcc-internal-format
  msgid "%qD already appeared as list item in an %<allocate%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22546
  #, gcc-internal-format
  msgid "%<allocator%> clause required for static variable %qD"
  msgstr ""
  
! #: c/c-parser.cc:22557
  #, gcc-internal-format
  msgid "%<allocator%> clause requires a predefined allocator as %qD is static"
  msgstr ""
  
! #: c/c-parser.cc:22708 cp/parser.cc:44293
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<;%>, %<,%> or %<)%>"
  msgid "expected %<read%>, %<write%>, %<update%>, or %<capture%> clause"
  msgstr "%<;%>, %<,%> eller %<)%> forventet"
  
! #: c/c-parser.cc:22747 cp/parser.cc:44332
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<seq_cst%>, %<acquire%> or %<relaxed%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: c/c-parser.cc:22771 cp/parser.cc:44361
  #, gcc-internal-format
  msgid "expected %<read%>, %<write%>, %<update%>, %<capture%>, %<compare%>, %<weak%>, %<fail%>, %<seq_cst%>, %<acq_rel%>, %<release%>, %<relaxed%> or %<hint%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22786 cp/parser.cc:44376
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many atomic clauses"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:22793 cp/parser.cc:44383
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many memory order clauses"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:22831 c/c-parser.cc:22838 cp/parser.cc:44421
! #: cp/parser.cc:44428
  #, fuzzy, gcc-internal-format
  #| msgid "%s from incompatible pointer type"
  msgid "%qs clause is incompatible with %<read%> or %<write%> clauses"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: c/c-parser.cc:22844 c/c-parser.cc:22849 cp/parser.cc:44434
! #: cp/parser.cc:44439
  #, fuzzy, gcc-internal-format
  #| msgid "--resource requires -o"
  msgid "%qs clause requires %qs clause"
  msgstr "--resource pÃ¥krÃ¦ver -o"
  
! #: c/c-parser.cc:22872 cp/parser.cc:44462
  #, gcc-internal-format
  msgid "%<#pragma omp atomic write%> incompatible with %<acquire%> clause implicitly provided by a %<requires%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22883 cp/parser.cc:44473
  #, gcc-internal-format
  msgid "%<#pragma omp atomic read%> incompatible with %<release%> clause implicitly provided by a %<requires%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22915 cp/parser.cc:44505
  #, gcc-internal-format
  msgid "%<#pragma omp atomic read%> incompatible with %<release%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22925 cp/parser.cc:44515
  #, gcc-internal-format
  msgid "%<#pragma omp atomic write%> incompatible with %<acquire%> clause"
  msgstr ""
  
! #: c/c-parser.cc:23046 cp/parser.cc:44615
  #, fuzzy, gcc-internal-format
  msgid "expected %<==%> comparison in %<if%> condition"
  msgstr "'%s' er erklÃ¦ret inline efter dens definition"
  
! #: c/c-parser.cc:23053 cp/parser.cc:44622
  #, gcc-internal-format
  msgid "expected %<==%>, %<<%> or %<>%> comparison in %<if%> condition"
  msgstr ""
  
! #: c/c-parser.cc:23126 cp/parser.cc:44687 cp/parser.cc:44970 cp/parser.cc:45064
! #: cp/parser.cc:45082
  #, fuzzy, gcc-internal-format
  #| msgid "invalid #pragma %s"
  msgid "invalid form of %<#pragma omp atomic compare%>"
  msgstr "ugyldig #pragma %s"
  
! #: c/c-parser.cc:23137 cp/parser.cc:44698
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<delete%>"
  msgid "unexpected %<else%>"
  msgstr "forventede %<delete%>"
  
! #: c/c-parser.cc:23197 cp/parser.cc:45137
  #, fuzzy, gcc-internal-format
  #| msgid "invalid #pragma %s"
  msgid "invalid form of %<pragma omp atomic compare%>"
  msgstr "ugyldig #pragma %s"
  
! #: c/c-parser.cc:23468 cp/parser.cc:44991 cp/parser.cc:45017
  #, fuzzy, gcc-internal-format
  #| msgid "invalid #pragma %s"
  msgid "invalid form of %<#pragma omp atomic%>"
  msgstr "ugyldig #pragma %s"
  
! #: c/c-parser.cc:23472 cp/parser.cc:45057 cp/parser.cc:45091
  #, fuzzy, gcc-internal-format
  #| msgid "invalid operand for 'p' modifier"
  msgid "invalid operator for %<#pragma omp atomic%>"
  msgstr "ugyldig operand til 'p'-Ã¦ndring"
  
! #: c/c-parser.cc:23523 cp/parser.cc:45126
  #, gcc-internal-format
  msgid "%<weak%> clause requires atomic equality comparison"
  msgstr ""
  
! #: c/c-parser.cc:23529 cp/semantics.cc:11909 cp/semantics.cc:11919
  #, gcc-internal-format
  msgid "%<#pragma omp atomic capture%> uses two different expressions for memory"
  msgstr ""
  
! #: c/c-parser.cc:23632 cp/semantics.cc:11996
  #, fuzzy, gcc-internal-format
  msgid "%<depobj%> expression is not lvalue expression"
  msgstr "stÃ¸rrelsen af medlemmet '%D' er ikke konstant"
  
! #: c/c-parser.cc:23675
  #, fuzzy, gcc-internal-format
  msgid "%<destroy%> expression is not lvalue expression"
  msgstr "stÃ¸rrelsen af medlemmet '%D' er ikke konstant"
  
! #: c/c-parser.cc:23681 cp/parser.cc:45279
  #, gcc-internal-format
  msgid "the %<destroy%> expression %qE should be the same as the %<depobj%> argument %qE"
  msgstr ""
  
! #: c/c-parser.cc:23712 cp/parser.cc:45315
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<in%>, %<out%>, %<inout%>, %<mutexinoutset%> or %<inoutset%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: c/c-parser.cc:23724 cp/parser.cc:45331
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<;%>, %<,%> or %<)%>"
  msgid "expected %<depend%>, %<destroy%> or %<update%> clause"
  msgstr "%<;%>, %<,%> eller %<)%> forventet"
  
! #: c/c-parser.cc:23765 cp/parser.cc:45369
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<seq_cst%>, %<acq_rel%>, %<release%> or %<acquire%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: c/c-parser.cc:23773 cp/parser.cc:45377
  #, gcc-internal-format
  msgid "%<flush%> list specified together with memory order clause"
  msgstr ""
  
! #: c/c-parser.cc:23778
  #, gcc-internal-format
  msgid "expected %<(%> or end of line"
  msgstr ""
  
! #: c/c-parser.cc:23849 cp/parser.cc:46098
  #, gcc-internal-format
  msgid "%<[[omp::directive(%s)]]%> must be the only specified attribute on a statement"
  msgstr ""
  
! #: c/c-parser.cc:23916 cp/parser.cc:46167
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma omp scan%> with zero preceding executable statements"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: c/c-parser.cc:23950 cp/parser.cc:46200
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<:%> or %<::%>"
  msgid "expected %<inclusive%> or %<exclusive%> clause"
  msgstr "forventede %<:%> or %<::%>"
  
! #: c/c-parser.cc:23955 cp/parser.cc:46206
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<#pragma omp section%> or %<}%>"
  msgid "expected %<#pragma omp scan%>"
  msgstr "%<#pragma omp section%> eller %<}%> forventet"
  
! #: c/c-parser.cc:23964 cp/parser.cc:46215
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma omp scan%> with zero succeeding executable statements"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: c/c-parser.cc:23989 cp/parser.cc:46238
  #, fuzzy, gcc-internal-format
  #| msgid "')' or term expected"
  msgid "for statement expected"
*************** msgstr "')' eller term forventet"
*** 54020,54628 ****
  #. Don't call cp_parser_error here since it overrides the
  #. provided message with a more confusing one if there was
  #. a bad pragma or attribute directive.
! #: c/c-parser.cc:23973 cp/parser.cc:46201 cp/parser.cc:46203 cp/parser.cc:46388
  #, fuzzy, gcc-internal-format
  #| msgid "')' or term expected"
  msgid "loop nest expected"
  msgstr "')' eller term forventet"
  
! #: c/c-parser.cc:24025 cp/parser.cc:46276
  #, gcc-internal-format
  msgid "attributes other than OpenMP directives are not allowed on %<for%> in loop nest"
  msgstr ""
  
! #: c/c-parser.cc:24054 cp/parser.cc:46307
  #, gcc-internal-format
  msgid "%<unroll%> construct with %<partial%> clause generates just one loop with canonical form but %d loops are needed"
  msgstr ""
  
! #: c/c-parser.cc:24065 cp/parser.cc:46318
  #, gcc-internal-format
  msgid "generated loop of %<unroll%> construct without %<partial%> clause does not have canonical form"
  msgstr ""
  
! #: c/c-parser.cc:24088 cp/parser.cc:46344
  #, gcc-internal-format
  msgid "%<tile%> construct generates %d loops with canonical form but %d loops are needed"
  msgstr ""
  
! #: c/c-parser.cc:24099 cp/parser.cc:46355
  #, gcc-internal-format
  msgid "expected %<for%> loop or OpenMP loop transformation construct"
  msgstr ""
  
! #: c/c-parser.cc:24187 cp/semantics.cc:11471 cp/semantics.cc:11564
  #, fuzzy, gcc-internal-format
  #| msgid "repeated declaration of automaton `%s'"
  msgid "expected iteration declaration or initialization"
  msgstr "gentaget erklÃ¦ring af automaten '%s'"
  
! #: c/c-parser.cc:24276 c/c-parser.cc:24291 cp/parser.cc:46682
! #: cp/parser.cc:46697
  #, fuzzy, gcc-internal-format
  #| msgid "not enough arguments"
  msgid "not enough nested loops"
  msgstr "ikke nok parametre"
  
! #: c/c-parser.cc:24394 cp/parser.cc:46982
  #, gcc-internal-format
  msgid "%<ordered%> clause parameter is less than %<collapse%>"
  msgstr ""
  
! #: c/c-parser.cc:24517 cp/parser.cc:46517 cp/parser.cc:46560 cp/pt.cc:18586
  #, gcc-internal-format
  msgid "iteration variable %qD should not be firstprivate"
  msgstr ""
  
! #: c/c-parser.cc:24951 cp/parser.cc:47528
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma omp ordered%> with %qs clause may only be used in compound statements"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: c/c-parser.cc:25167 cp/parser.cc:47734
  #, gcc-internal-format
  msgid "expected %<for%> after %qs"
  msgstr ""
  
! #: c/c-parser.cc:25380 c/c-parser.cc:25388
  #, fuzzy, gcc-internal-format
  #| msgid "expected function"
  msgid "expected a function name"
  msgstr "forventet funktion"
  
! #: c/c-parser.cc:25401 cp/parser.cc:50217
  #, fuzzy, gcc-internal-format
  #| msgid "expected function"
  msgid "expected target-function call"
  msgstr "forventet funktion"
  
! #: c/c-parser.cc:25471
  #, gcc-internal-format
  msgid "%<#pragma omp dispatch%> must be followed by a function call with optional assignment"
  msgstr ""
  
! #: c/c-parser.cc:25658 cp/parser.cc:48081
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected operand"
  msgid "expected %<point%>"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:25925 cp/parser.cc:48368
  #, gcc-internal-format
  msgid "%<#pragma omp target data%> with map-type other than %<to%>, %<from%>, %<tofrom%> or %<alloc%> on %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:25941 cp/parser.cc:48384
  #, gcc-internal-format
  msgid "%<#pragma omp target data%> must contain at least one %<map%>, %<use_device_ptr%> or %<use_device_addr%> clause"
  msgstr ""
  
! #: c/c-parser.cc:25989 cp/parser.cc:48665
  #, gcc-internal-format
  msgid "%<#pragma omp target update%> must contain at least one %<from%> or %<to%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:26091 cp/parser.cc:48491
  #, gcc-internal-format
  msgid "%<#pragma omp target enter data%> with map-type other than %<to%>, %<tofrom%> or %<alloc%> on %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26103 cp/parser.cc:48503
  #, gcc-internal-format
  msgid "%<#pragma omp target enter data%> must contain at least one %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26202 cp/parser.cc:48608
  #, gcc-internal-format
  msgid "%<#pragma omp target exit data%> with map-type other than %<from%>, %<tofrom%>, %<release%> or %<delete%> on %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26215 cp/parser.cc:48621
  #, gcc-internal-format
  msgid "%<#pragma omp target exit data%> must contain at least one %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26460 cp/semantics.cc:10974
  #, gcc-internal-format
  msgid "%<#pragma omp target%> with map-type other than %<to%>, %<from%>, %<tofrom%> or %<alloc%> on %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26521
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma omp declare %s%> must be followed by function declaration or definition or another %<#pragma omp declare %s%>"
  msgstr "en global registervariabel fÃ¸lger en funktionsdefinition"
  
! #: c/c-parser.cc:26572 c/c-parser.cc:26610
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma omp declare %s%> must be followed by function declaration or definition"
  msgstr "en global registervariabel fÃ¸lger en funktionsdefinition"
  
! #: c/c-parser.cc:26643 cp/parser.cc:49677
  #, fuzzy, gcc-internal-format
  #| msgid "empty body in an else-statement"
  msgid "expected trait selector name"
  msgstr "tom krop i en else-sÃ¦tning"
  
! #: c/c-parser.cc:26655 cp/parser.cc:49691
  #, fuzzy, gcc-internal-format
  #| msgid "unknown value %qs for -mtune"
  msgid "unknown selector %qs for context selector set %qs"
  msgstr "ukendt vÃ¦rdi %qs for -mtune"
  
! #: c/c-parser.cc:26683 cp/parser.cc:49720
  #, fuzzy, gcc-internal-format
  #| msgid "incomplete type `%T' does not have member `%D'"
  msgid "selector %qs does not accept any properties"
  msgstr "ufuldstÃ¦ndig type '%T' har ikke medlemmet '%D'"
  
! #: c/c-parser.cc:26705 cp/parser.cc:49752
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' can only be specified inside a class"
  msgid "%<score%> cannot be specified in traits in the %qs trait-selector-set"
  msgstr "'%D' kan kun angives inden i en klasse"
  
! #: c/c-parser.cc:26714 cp/parser.cc:49762 cp/pt.cc:18254
  #, fuzzy, gcc-internal-format
  msgid "%<score%> argument must be constant integer expression"
  msgstr "klargÃ¸ringsliste behandlet som et sammensat udtryk"
  
! #: c/c-parser.cc:26717 cp/parser.cc:49765 cp/pt.cc:18261
  #, fuzzy, gcc-internal-format
  #| msgid "%s rotate count is negative"
  msgid "%<score%> argument must be non-negative"
  msgstr "%s-roteringsantal er negativt"
  
! #: c/c-parser.cc:26758 cp/parser.cc:49811
  #, fuzzy, gcc-internal-format
  #| msgid "_Pragma takes a parenthesized string literal"
  msgid "expected identifier or string literal"
  msgstr "_Pragma tager en strengkonstant med paranteser omkring"
  
! #: c/c-parser.cc:26781 cp/parser.cc:49841 cp/pt.cc:18278
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "property must be integer expression"
  msgstr "uventet adresseudtryk"
  
! #: c/c-parser.cc:26794 cp/parser.cc:49852
  #, gcc-internal-format
  msgid "properties for %<simd%> selector may not be specified in %<metadirective%>"
  msgstr ""
  
! #: c/c-parser.cc:26815 cp/parser.cc:49868 fortran/openmp.cc:6534
  #, fuzzy, gcc-internal-format
  #| msgid "code model `large' not supported yet"
  msgid "%<requires%> selector is not supported yet"
  msgstr "kodemodellen 'large' er ikke understÃ¸ttet endnu"
  
! #: c/c-parser.cc:26874 cp/parser.cc:49931
  #, fuzzy, gcc-internal-format
  #| msgid "empty body in an else-statement"
  msgid "expected context selector set name"
  msgstr "tom krop i en else-sÃ¦tning"
  
! #: c/c-parser.cc:26986 cp/parser.cc:50435
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<;%>, %<,%> or %<)%>"
  msgid "expected %<match%>, %<adjust_args%> or %<append_args%> clause"
  msgstr "%<;%>, %<,%> eller %<)%> forventet"
  
! #: c/c-parser.cc:27002 cp/parser.cc:50448
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<match%> clauses"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:27013
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function,"
  msgid "variant %qD is not a function"
  msgstr "'%s' er ikke en funktion,"
  
! #: c/c-parser.cc:27028 cp/decl.cc:8621
  #, gcc-internal-format
  msgid "variant %qD is a built-in"
  msgstr ""
  
! #: c/c-parser.cc:27074 cp/parser.cc:50510
  #, fuzzy, gcc-internal-format
  #| msgid "%s used with `%%%c' %s format"
  msgid "%qD is specified more than once"
  msgstr "%s brugt med '%%%c' %s-formatering"
  
! #: c/c-parser.cc:27081
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a pointer-to-object type"
  msgid "%qD is not of pointer type"
  msgstr "'%T' er ikke af en henvisning til objekt-type"
  
! #: c/c-parser.cc:27101 cp/parser.cc:50543
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<:%> or %<::%>"
  msgid "expected %<nothing%> or %<need_device_ptr%>"
  msgstr "forventede %<:%> or %<::%>"
  
! #: c/c-parser.cc:27104
  #, fuzzy, gcc-internal-format
  msgid "%<need_device_addr%> is not valid for C"
  msgstr "%s understÃ¸tter ikke %s"
  
! #: c/c-parser.cc:27111 cp/parser.cc:50550
  #, gcc-internal-format
  msgid "expected %<nothing%> or %<need_device_ptr%> followed by %<:%>"
  msgstr ""
  
! #: c/c-parser.cc:27131 cp/parser.cc:50567
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected operand"
  msgid "expected %<interop%>"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:27229 cp/decl.cc:8603
  #, fuzzy, gcc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "argument %d of %qD must be of %<omp_interop_t%>"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: c/c-parser.cc:27231 cp/decl.cc:8500 cp/decl.cc:8606
  #, fuzzy, gcc-internal-format
  #| msgid "long and short specified together for `%s'"
  msgid "%<append_args%> specified here"
  msgstr "long og short er begge angivet for '%s'"
  
! #: c/c-parser.cc:27277 cp/decl.cc:8612
  #, fuzzy, gcc-internal-format
  #| msgid "-f%s and -msdata=%s are incompatible"
  msgid "variant %qD and base %qD have incompatible types"
  msgstr "-f%s og -msdata=%s er indbyrdes uforenelige"
  
! #: c/c-parser.cc:27302 cp/parser.cc:50635
  #, gcc-internal-format
  msgid "an %qs clause requires a %<match%> clause"
  msgstr ""
  
! #: c/c-parser.cc:27315
  #, gcc-internal-format
  msgid "an %qs clause can only be specified if the %<dispatch%> selector of the %<construct%> selector set appears in the %<match%> clause"
  msgstr ""
  
! #: c/c-parser.cc:27358
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma omp declare %s%> not immediately followed by a function declaration or definition"
  msgstr "en global registervariabel fÃ¸lger en funktionsdefinition"
  
! #: c/c-parser.cc:27366 cp/parser.cc:50680
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma omp declare %s%> not immediately followed by a single function declaration or definition"
  msgstr "en global registervariabel fÃ¸lger en funktionsdefinition"
  
! #: c/c-parser.cc:27573 cp/parser.cc:50969
  #, gcc-internal-format
  msgid "%qD specified both in declare target %<link%> and %qs clauses"
  msgstr ""
  
! #: c/c-parser.cc:27577 cp/parser.cc:50973
  #, gcc-internal-format
  msgid "%qD specified both in declare target %<link%> and %<to%> or %<enter%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:27637 cp/parser.cc:51106
  #, gcc-internal-format
  msgid "directive with only %<device_type%> or %<indirect%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:27640 cp/parser.cc:51109
  #, gcc-internal-format
  msgid "%<device_type%> clause must specify 'any' when used with an %<indirect%> clause"
  msgstr ""
  
! #: c/c-parser.cc:27689 c/c-parser.cc:27731 cp/parser.cc:51164
! #: cp/parser.cc:51211
  #, fuzzy, gcc-internal-format
  msgid "expected %<target%>"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:27703 cp/parser.cc:51177
  #, fuzzy, gcc-internal-format
  msgid "expected %<declare target%> or %<assumes%>"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:27738 cp/parser.cc:51218
  #, gcc-internal-format
  msgid "%<#pragma omp end declare target%> without corresponding %<#pragma omp declare target%> or %<#pragma omp begin declare target%>"
  msgstr ""
  
! #: c/c-parser.cc:27749 c/c-parser.cc:27780 cp/parser.cc:51229
! #: cp/parser.cc:51260
  #, gcc-internal-format
  msgid "%qs in attribute syntax terminated with %qs in pragma syntax"
  msgstr ""
  
! #: c/c-parser.cc:27756 c/c-parser.cc:27785 cp/parser.cc:51236
! #: cp/parser.cc:51265
  #, fuzzy, gcc-internal-format
  #| msgid "argument to `%s' attribute larger than %d"
  msgid "%qs in pragma syntax terminated with %qs in attribute syntax"
  msgstr "parameter til egenskaben '%s' er stÃ¸rre end %d"
  
! #: c/c-parser.cc:27793 cp/parser.cc:51273
  #, fuzzy, gcc-internal-format
  msgid "expected %<declare%> or %<assumes%>"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:27820
  #, gcc-internal-format
  msgid "%<#pragma omp declare reduction%> not at file or block scope"
  msgstr ""
  
! #: c/c-parser.cc:27897
  #, gcc-internal-format
  msgid "predeclared arithmetic type in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:27901
  #, gcc-internal-format
  msgid "function or array type in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:27904
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of \"%s\" shadows a global declaration"
  msgid "%<_Atomic%> qualified type in %<#pragma omp declare reduction%>"
  msgstr "erklÃ¦ring af '%s' skygger for en global erklÃ¦ring"
  
! #: c/c-parser.cc:27907
  #, gcc-internal-format
  msgid "const, volatile or restrict qualified type in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:27915
  #, gcc-internal-format
  msgid "redeclaration of %qs %<#pragma omp declare reduction%> for type %qT"
  msgstr ""
  
! #: c/c-parser.cc:27924
  #, gcc-internal-format
  msgid "previous %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:28045
  #, gcc-internal-format
  msgid "expected %<omp_priv%> or function-name"
  msgstr ""
  
! #: c/c-parser.cc:28056
  #, fuzzy, gcc-internal-format
  msgid "expected function-name %<(%>"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:28075
  #, gcc-internal-format
  msgid "one of the initializer call arguments should be %<&omp_priv%>"
  msgstr ""
  
! #: c/c-parser.cc:28209 cp/parser.cc:52195
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<simd%>, %<reduction%>, %<target%> or %<variant%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: c/c-parser.cc:28280 cp/parser.cc:52288
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<acq_rel%>, %<acquire%>, %<relaxed%>, %<release%> or %<seq_cst%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: c/c-parser.cc:28309 cp/parser.cc:52323
  #, gcc-internal-format
  msgid "expected %<unified_address%>, %<unified_shared_memory%>, %<self_maps%>, %<dynamic_allocators%>, %<reverse_offload%> or %<atomic_default_mem_order%> clause"
  msgstr ""
  
! #: c/c-parser.cc:28328 cp/parser.cc:52342
  #, gcc-internal-format
  msgid "%qs clause used lexically after first target construct or offloading API"
  msgstr ""
  
! #: c/c-parser.cc:28340 cp/parser.cc:52354
  #, gcc-internal-format
  msgid "more than one %<atomic_default_mem_order%> clause in a single compilation unit"
  msgstr ""
  
! #: c/c-parser.cc:28349 cp/parser.cc:52363
  #, gcc-internal-format
  msgid "%<atomic_default_mem_order%> clause used lexically after first %<atomic%> construct without memory order clause"
  msgstr ""
  
! #: c/c-parser.cc:28363 cp/parser.cc:52377
  #, gcc-internal-format
  msgid "%<pragma omp requires%> requires at least one clause"
  msgstr ""
  
! #: c/c-parser.cc:28382
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids qualified function types"
  msgid "zero sized type %qT in %<reduction%> clause"
  msgstr "ISO C forbyder funktionsreturtype med modifikationer"
  
! #: c/c-parser.cc:28388
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids qualified function types"
  msgid "variable sized type %qT in %<reduction%> clause"
  msgstr "ISO C forbyder funktionsreturtype med modifikationer"
  
! #: c/c-parser.cc:28506 cp/parser.cc:48884
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<while%>"
  msgid "expected %<sizes%>"
  msgstr "%<while%> forventet"
  
! #: c/c-parser.cc:28535 cp/semantics.cc:9567 cp/semantics.cc:9584
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute argument not an integer constant"
  msgid "%<sizes%> argument needs positive integral constant"
  msgstr "parameteren til egenskaben '%s' er ikke en heltalskonstant"
  
! #: c/c-parser.cc:28651 cp/parser.cc:52434
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<;%>, %<,%> or %<)%>"
  msgid "expected %<at%>, %<severity%> or %<message%> clause"
  msgstr "%<;%>, %<,%> eller %<)%> forventet"
  
! #: c/c-parser.cc:28684 cp/parser.cc:52469
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<,%> or %<)%>"
  msgid "expected %qs or %qs"
  msgstr "%<,%> eller %<)%> forventet"
  
! #: c/c-parser.cc:28741 cp/parser.cc:52531
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma omp error%> with %<at(execution)%> clause may only be used in compound statements"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: c/c-parser.cc:28764 cp/parser.cc:52558
  #, gcc-internal-format
  msgid "%<pragma omp error%> encountered: %s"
  msgstr ""
  
! #: c/c-parser.cc:28767 cp/parser.cc:52561
  #, gcc-internal-format
  msgid "%<pragma omp error%> encountered"
  msgstr ""
  
! #: c/c-parser.cc:28794 cp/parser.cc:49992
  #, gcc-internal-format
  msgid "expected at least one assumption clause"
  msgstr ""
  
! #: c/c-parser.cc:28880 c/c-parser.cc:29181 cp/parser.cc:50078
! #: cp/parser.cc:51497 cp/parser.cc:51525
  #, fuzzy, gcc-internal-format
  #| msgid "expected function"
  msgid "expected directive name"
  msgstr "forventet funktion"
  
! #: c/c-parser.cc:28891 cp/parser.cc:50089
  #, gcc-internal-format
  msgid "invalid OpenMP directive name in %qs clause argument: declarative, informational, and meta directives not permitted"
  msgstr ""
  
! #: c/c-parser.cc:28899 cp/parser.cc:50097
  #, gcc-internal-format
  msgid "unknown OpenMP directive name in %qs clause argument"
  msgstr ""
  
! #: c/c-parser.cc:28906 cp/parser.cc:50104
  #, gcc-internal-format
  msgid "%<%s%s%s%s%s%> directive mentioned in both %<absent%> and %<contains%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:28917 cp/parser.cc:50115
  #, gcc-internal-format
  msgid "%<%s%s%s%s%s%> directive mentioned multiple times in %qs clauses"
  msgstr ""
  
! #: c/c-parser.cc:28940 cp/parser.cc:50142
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown assumption clause %qs"
  msgstr "ukendt registernavn: %s"
  
! #: c/c-parser.cc:28953 cp/parser.cc:50152
  #, fuzzy, gcc-internal-format
  #| msgid "expected function"
  msgid "expected assumption clause"
  msgstr "forventet funktion"
  
! #: c/c-parser.cc:29082 cp/parser.cc:51395
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<;%>, %<,%> or %<)%>"
  msgid "expected %<when%>, %<otherwise%>, or %<default%> clause"
  msgstr "%<;%>, %<,%> eller %<)%> forventet"
  
! #: c/c-parser.cc:29096 cp/parser.cc:51410
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<otherwise%> or %<default%> clauses in %<metadirective%>"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:29105 cp/parser.cc:51420
  #, gcc-internal-format
  msgid "%<otherwise%> or %<default%> clause must appear last in %<metadirective%>"
  msgstr ""
  
! #: c/c-parser.cc:29195 cp/parser.cc:51511
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown directive name"
  msgstr "ukendt registernavn: %s"
  
! #: c/c-parser.cc:29210 cp/parser.cc:51531
  #, gcc-internal-format
  msgid "metadirectives cannot be used as variants of a %<metadirective%>"
  msgstr ""
  
! #: c/c-parser.cc:29216 cp/parser.cc:51537
  #, gcc-internal-format
  msgid "declarative directive variants of a %<metadirective%> are not supported"
  msgstr ""
  
! #: c/c-parser.cc:29541 cp/semantics.cc:10340
  #, gcc-internal-format
  msgid "%qE declared %<threadprivate%> after first use"
  msgstr ""
  
! #: c/c-parser.cc:29543 cp/semantics.cc:10342
  #, gcc-internal-format
  msgid "automatic variable %qE cannot be %<threadprivate%>"
  msgstr ""
  
! #: c/c-parser.cc:29547 cp/semantics.cc:10344
  #, fuzzy, gcc-internal-format
  msgid "%<threadprivate%> %qE has incomplete type"
  msgstr "parameteren er af en ufuldstÃ¦ndig type"
  
! #: c/c-parser.cc:29727 cp/parser.cc:53320
  #, gcc-internal-format
  msgid "%<__transaction_cancel%> without transactional memory support enabled"
  msgstr ""
  
! #: c/c-parser.cc:29733 cp/parser.cc:53326
  #, gcc-internal-format
  msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
  msgstr ""
  
! #: c/c-parser.cc:29742
  #, fuzzy, gcc-internal-format
  #| msgid "%<transaction_may_cancel_outer%> function call not within outer transaction or %<transaction_may_cancel_outer%>"
  msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%> or a %<transaction_may_cancel_outer%> function"
  msgstr "%<transaction_may_cancel_outer%> funktionskald er ikke inden for ydre transaktion eller %<transaction_may_cancel_outer%>"
  
! #: c/c-parser.cc:29750 cp/parser.cc:53344
  #, gcc-internal-format
  msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
  msgstr ""
  
! #: c/c-parser.cc:29843
  #, fuzzy, gcc-internal-format
  #| msgid "error closing %s: %m"
  msgid "no closing brace"
--- 54029,54637 ----
  #. Don't call cp_parser_error here since it overrides the
  #. provided message with a more confusing one if there was
  #. a bad pragma or attribute directive.
! #: c/c-parser.cc:24018 cp/parser.cc:46260 cp/parser.cc:46262 cp/parser.cc:46447
  #, fuzzy, gcc-internal-format
  #| msgid "')' or term expected"
  msgid "loop nest expected"
  msgstr "')' eller term forventet"
  
! #: c/c-parser.cc:24070 cp/parser.cc:46335
  #, gcc-internal-format
  msgid "attributes other than OpenMP directives are not allowed on %<for%> in loop nest"
  msgstr ""
  
! #: c/c-parser.cc:24099 cp/parser.cc:46366
  #, gcc-internal-format
  msgid "%<unroll%> construct with %<partial%> clause generates just one loop with canonical form but %d loops are needed"
  msgstr ""
  
! #: c/c-parser.cc:24110 cp/parser.cc:46377
  #, gcc-internal-format
  msgid "generated loop of %<unroll%> construct without %<partial%> clause does not have canonical form"
  msgstr ""
  
! #: c/c-parser.cc:24133 cp/parser.cc:46403
  #, gcc-internal-format
  msgid "%<tile%> construct generates %d loops with canonical form but %d loops are needed"
  msgstr ""
  
! #: c/c-parser.cc:24144 cp/parser.cc:46414
  #, gcc-internal-format
  msgid "expected %<for%> loop or OpenMP loop transformation construct"
  msgstr ""
  
! #: c/c-parser.cc:24232 cp/semantics.cc:11471 cp/semantics.cc:11564
  #, fuzzy, gcc-internal-format
  #| msgid "repeated declaration of automaton `%s'"
  msgid "expected iteration declaration or initialization"
  msgstr "gentaget erklÃ¦ring af automaten '%s'"
  
! #: c/c-parser.cc:24321 c/c-parser.cc:24336 cp/parser.cc:46741
! #: cp/parser.cc:46756
  #, fuzzy, gcc-internal-format
  #| msgid "not enough arguments"
  msgid "not enough nested loops"
  msgstr "ikke nok parametre"
  
! #: c/c-parser.cc:24439 cp/parser.cc:47041
  #, gcc-internal-format
  msgid "%<ordered%> clause parameter is less than %<collapse%>"
  msgstr ""
  
! #: c/c-parser.cc:24562 cp/parser.cc:46576 cp/parser.cc:46619 cp/pt.cc:18615
  #, gcc-internal-format
  msgid "iteration variable %qD should not be firstprivate"
  msgstr ""
  
! #: c/c-parser.cc:24996 cp/parser.cc:47587
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma omp ordered%> with %qs clause may only be used in compound statements"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: c/c-parser.cc:25212 cp/parser.cc:47793
  #, gcc-internal-format
  msgid "expected %<for%> after %qs"
  msgstr ""
  
! #: c/c-parser.cc:25425 c/c-parser.cc:25433
  #, fuzzy, gcc-internal-format
  #| msgid "expected function"
  msgid "expected a function name"
  msgstr "forventet funktion"
  
! #: c/c-parser.cc:25446 cp/parser.cc:50276
  #, fuzzy, gcc-internal-format
  #| msgid "expected function"
  msgid "expected target-function call"
  msgstr "forventet funktion"
  
! #: c/c-parser.cc:25516
  #, gcc-internal-format
  msgid "%<#pragma omp dispatch%> must be followed by a function call with optional assignment"
  msgstr ""
  
! #: c/c-parser.cc:25703 cp/parser.cc:48140
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected operand"
  msgid "expected %<point%>"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:25970 cp/parser.cc:48427
  #, gcc-internal-format
  msgid "%<#pragma omp target data%> with map-type other than %<to%>, %<from%>, %<tofrom%> or %<alloc%> on %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:25986 cp/parser.cc:48443
  #, gcc-internal-format
  msgid "%<#pragma omp target data%> must contain at least one %<map%>, %<use_device_ptr%> or %<use_device_addr%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26034 cp/parser.cc:48724
  #, gcc-internal-format
  msgid "%<#pragma omp target update%> must contain at least one %<from%> or %<to%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:26136 cp/parser.cc:48550
  #, gcc-internal-format
  msgid "%<#pragma omp target enter data%> with map-type other than %<to%>, %<tofrom%> or %<alloc%> on %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26148 cp/parser.cc:48562
  #, gcc-internal-format
  msgid "%<#pragma omp target enter data%> must contain at least one %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26247 cp/parser.cc:48667
  #, gcc-internal-format
  msgid "%<#pragma omp target exit data%> with map-type other than %<from%>, %<tofrom%>, %<release%> or %<delete%> on %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26260 cp/parser.cc:48680
  #, gcc-internal-format
  msgid "%<#pragma omp target exit data%> must contain at least one %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26505 cp/semantics.cc:10974
  #, gcc-internal-format
  msgid "%<#pragma omp target%> with map-type other than %<to%>, %<from%>, %<tofrom%> or %<alloc%> on %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26566
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma omp declare %s%> must be followed by function declaration or definition or another %<#pragma omp declare %s%>"
  msgstr "en global registervariabel fÃ¸lger en funktionsdefinition"
  
! #: c/c-parser.cc:26617 c/c-parser.cc:26655
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma omp declare %s%> must be followed by function declaration or definition"
  msgstr "en global registervariabel fÃ¸lger en funktionsdefinition"
  
! #: c/c-parser.cc:26688 cp/parser.cc:49736
  #, fuzzy, gcc-internal-format
  #| msgid "empty body in an else-statement"
  msgid "expected trait selector name"
  msgstr "tom krop i en else-sÃ¦tning"
  
! #: c/c-parser.cc:26700 cp/parser.cc:49750
  #, fuzzy, gcc-internal-format
  #| msgid "unknown value %qs for -mtune"
  msgid "unknown selector %qs for context selector set %qs"
  msgstr "ukendt vÃ¦rdi %qs for -mtune"
  
! #: c/c-parser.cc:26728 cp/parser.cc:49779
  #, fuzzy, gcc-internal-format
  #| msgid "incomplete type `%T' does not have member `%D'"
  msgid "selector %qs does not accept any properties"
  msgstr "ufuldstÃ¦ndig type '%T' har ikke medlemmet '%D'"
  
! #: c/c-parser.cc:26750 cp/parser.cc:49811
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' can only be specified inside a class"
  msgid "%<score%> cannot be specified in traits in the %qs trait-selector-set"
  msgstr "'%D' kan kun angives inden i en klasse"
  
! #: c/c-parser.cc:26759 cp/parser.cc:49821 cp/pt.cc:18283
  #, fuzzy, gcc-internal-format
  msgid "%<score%> argument must be constant integer expression"
  msgstr "klargÃ¸ringsliste behandlet som et sammensat udtryk"
  
! #: c/c-parser.cc:26762 cp/parser.cc:49824 cp/pt.cc:18290
  #, fuzzy, gcc-internal-format
  #| msgid "%s rotate count is negative"
  msgid "%<score%> argument must be non-negative"
  msgstr "%s-roteringsantal er negativt"
  
! #: c/c-parser.cc:26803 cp/parser.cc:49870
  #, fuzzy, gcc-internal-format
  #| msgid "_Pragma takes a parenthesized string literal"
  msgid "expected identifier or string literal"
  msgstr "_Pragma tager en strengkonstant med paranteser omkring"
  
! #: c/c-parser.cc:26827 cp/parser.cc:49900 cp/pt.cc:18307
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "property must be integer expression"
  msgstr "uventet adresseudtryk"
  
! #: c/c-parser.cc:26837 cp/parser.cc:49911
  #, gcc-internal-format
  msgid "properties for %<simd%> selector may not be specified in %<metadirective%>"
  msgstr ""
  
! #: c/c-parser.cc:26858 cp/parser.cc:49927 fortran/openmp.cc:6534
  #, fuzzy, gcc-internal-format
  #| msgid "code model `large' not supported yet"
  msgid "%<requires%> selector is not supported yet"
  msgstr "kodemodellen 'large' er ikke understÃ¸ttet endnu"
  
! #: c/c-parser.cc:26917 cp/parser.cc:49990
  #, fuzzy, gcc-internal-format
  #| msgid "empty body in an else-statement"
  msgid "expected context selector set name"
  msgstr "tom krop i en else-sÃ¦tning"
  
! #: c/c-parser.cc:27032 cp/parser.cc:50494
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<;%>, %<,%> or %<)%>"
  msgid "expected %<match%>, %<adjust_args%> or %<append_args%> clause"
  msgstr "%<;%>, %<,%> eller %<)%> forventet"
  
! #: c/c-parser.cc:27048 cp/parser.cc:50507
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<match%> clauses"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:27059
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function,"
  msgid "variant %qD is not a function"
  msgstr "'%s' er ikke en funktion,"
  
! #: c/c-parser.cc:27074 cp/decl.cc:8619
  #, gcc-internal-format
  msgid "variant %qD is a built-in"
  msgstr ""
  
! #: c/c-parser.cc:27120 cp/parser.cc:50569
  #, fuzzy, gcc-internal-format
  #| msgid "%s used with `%%%c' %s format"
  msgid "%qD is specified more than once"
  msgstr "%s brugt med '%%%c' %s-formatering"
  
! #: c/c-parser.cc:27127
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a pointer-to-object type"
  msgid "%qD is not of pointer type"
  msgstr "'%T' er ikke af en henvisning til objekt-type"
  
! #: c/c-parser.cc:27147 cp/parser.cc:50602
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<:%> or %<::%>"
  msgid "expected %<nothing%> or %<need_device_ptr%>"
  msgstr "forventede %<:%> or %<::%>"
  
! #: c/c-parser.cc:27150
  #, fuzzy, gcc-internal-format
  msgid "%<need_device_addr%> is not valid for C"
  msgstr "%s understÃ¸tter ikke %s"
  
! #: c/c-parser.cc:27157 cp/parser.cc:50609
  #, gcc-internal-format
  msgid "expected %<nothing%> or %<need_device_ptr%> followed by %<:%>"
  msgstr ""
  
! #: c/c-parser.cc:27177 cp/parser.cc:50626
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected operand"
  msgid "expected %<interop%>"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:27275 cp/decl.cc:8601
  #, fuzzy, gcc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "argument %d of %qD must be of %<omp_interop_t%>"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: c/c-parser.cc:27277 cp/decl.cc:8498 cp/decl.cc:8604
  #, fuzzy, gcc-internal-format
  #| msgid "long and short specified together for `%s'"
  msgid "%<append_args%> specified here"
  msgstr "long og short er begge angivet for '%s'"
  
! #: c/c-parser.cc:27323 cp/decl.cc:8610
  #, fuzzy, gcc-internal-format
  #| msgid "-f%s and -msdata=%s are incompatible"
  msgid "variant %qD and base %qD have incompatible types"
  msgstr "-f%s og -msdata=%s er indbyrdes uforenelige"
  
! #: c/c-parser.cc:27348 cp/parser.cc:50694
  #, gcc-internal-format
  msgid "an %qs clause requires a %<match%> clause"
  msgstr ""
  
! #: c/c-parser.cc:27361
  #, gcc-internal-format
  msgid "an %qs clause can only be specified if the %<dispatch%> selector of the %<construct%> selector set appears in the %<match%> clause"
  msgstr ""
  
! #: c/c-parser.cc:27404
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma omp declare %s%> not immediately followed by a function declaration or definition"
  msgstr "en global registervariabel fÃ¸lger en funktionsdefinition"
  
! #: c/c-parser.cc:27412 cp/parser.cc:50739
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma omp declare %s%> not immediately followed by a single function declaration or definition"
  msgstr "en global registervariabel fÃ¸lger en funktionsdefinition"
  
! #: c/c-parser.cc:27619 cp/parser.cc:51028
  #, gcc-internal-format
  msgid "%qD specified both in declare target %<link%> and %qs clauses"
  msgstr ""
  
! #: c/c-parser.cc:27623 cp/parser.cc:51032
  #, gcc-internal-format
  msgid "%qD specified both in declare target %<link%> and %<to%> or %<enter%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:27683 cp/parser.cc:51165
  #, gcc-internal-format
  msgid "directive with only %<device_type%> or %<indirect%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:27686 cp/parser.cc:51168
  #, gcc-internal-format
  msgid "%<device_type%> clause must specify 'any' when used with an %<indirect%> clause"
  msgstr ""
  
! #: c/c-parser.cc:27735 c/c-parser.cc:27777 cp/parser.cc:51223
! #: cp/parser.cc:51270
  #, fuzzy, gcc-internal-format
  msgid "expected %<target%>"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:27749 cp/parser.cc:51236
  #, fuzzy, gcc-internal-format
  msgid "expected %<declare target%> or %<assumes%>"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:27784 cp/parser.cc:51277
  #, gcc-internal-format
  msgid "%<#pragma omp end declare target%> without corresponding %<#pragma omp declare target%> or %<#pragma omp begin declare target%>"
  msgstr ""
  
! #: c/c-parser.cc:27795 c/c-parser.cc:27826 cp/parser.cc:51288
! #: cp/parser.cc:51319
  #, gcc-internal-format
  msgid "%qs in attribute syntax terminated with %qs in pragma syntax"
  msgstr ""
  
! #: c/c-parser.cc:27802 c/c-parser.cc:27831 cp/parser.cc:51295
! #: cp/parser.cc:51324
  #, fuzzy, gcc-internal-format
  #| msgid "argument to `%s' attribute larger than %d"
  msgid "%qs in pragma syntax terminated with %qs in attribute syntax"
  msgstr "parameter til egenskaben '%s' er stÃ¸rre end %d"
  
! #: c/c-parser.cc:27839 cp/parser.cc:51332
  #, fuzzy, gcc-internal-format
  msgid "expected %<declare%> or %<assumes%>"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:27866
  #, gcc-internal-format
  msgid "%<#pragma omp declare reduction%> not at file or block scope"
  msgstr ""
  
! #: c/c-parser.cc:27943
  #, gcc-internal-format
  msgid "predeclared arithmetic type in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:27947
  #, gcc-internal-format
  msgid "function or array type in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:27950
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of \"%s\" shadows a global declaration"
  msgid "%<_Atomic%> qualified type in %<#pragma omp declare reduction%>"
  msgstr "erklÃ¦ring af '%s' skygger for en global erklÃ¦ring"
  
! #: c/c-parser.cc:27953
  #, gcc-internal-format
  msgid "const, volatile or restrict qualified type in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:27961
  #, gcc-internal-format
  msgid "redeclaration of %qs %<#pragma omp declare reduction%> for type %qT"
  msgstr ""
  
! #: c/c-parser.cc:27970
  #, gcc-internal-format
  msgid "previous %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:28091
  #, gcc-internal-format
  msgid "expected %<omp_priv%> or function-name"
  msgstr ""
  
! #: c/c-parser.cc:28102
  #, fuzzy, gcc-internal-format
  msgid "expected function-name %<(%>"
  msgstr "uventet operand"
  
! #: c/c-parser.cc:28121
  #, gcc-internal-format
  msgid "one of the initializer call arguments should be %<&omp_priv%>"
  msgstr ""
  
! #: c/c-parser.cc:28255 cp/parser.cc:52248
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<simd%>, %<reduction%>, %<target%> or %<variant%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: c/c-parser.cc:28326 cp/parser.cc:52341
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<acq_rel%>, %<acquire%>, %<relaxed%>, %<release%> or %<seq_cst%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: c/c-parser.cc:28355 cp/parser.cc:52376
  #, gcc-internal-format
  msgid "expected %<unified_address%>, %<unified_shared_memory%>, %<self_maps%>, %<dynamic_allocators%>, %<reverse_offload%> or %<atomic_default_mem_order%> clause"
  msgstr ""
  
! #: c/c-parser.cc:28374 cp/parser.cc:52395
  #, gcc-internal-format
  msgid "%qs clause used lexically after first target construct or offloading API"
  msgstr ""
  
! #: c/c-parser.cc:28386 cp/parser.cc:52407
  #, gcc-internal-format
  msgid "more than one %<atomic_default_mem_order%> clause in a single compilation unit"
  msgstr ""
  
! #: c/c-parser.cc:28395 cp/parser.cc:52416
  #, gcc-internal-format
  msgid "%<atomic_default_mem_order%> clause used lexically after first %<atomic%> construct without memory order clause"
  msgstr ""
  
! #: c/c-parser.cc:28409 cp/parser.cc:52430
  #, gcc-internal-format
  msgid "%<pragma omp requires%> requires at least one clause"
  msgstr ""
  
! #: c/c-parser.cc:28428
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids qualified function types"
  msgid "zero sized type %qT in %<reduction%> clause"
  msgstr "ISO C forbyder funktionsreturtype med modifikationer"
  
! #: c/c-parser.cc:28434
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids qualified function types"
  msgid "variable sized type %qT in %<reduction%> clause"
  msgstr "ISO C forbyder funktionsreturtype med modifikationer"
  
! #: c/c-parser.cc:28552 cp/parser.cc:48943
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<while%>"
  msgid "expected %<sizes%>"
  msgstr "%<while%> forventet"
  
! #: c/c-parser.cc:28581 cp/semantics.cc:9567 cp/semantics.cc:9584
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute argument not an integer constant"
  msgid "%<sizes%> argument needs positive integral constant"
  msgstr "parameteren til egenskaben '%s' er ikke en heltalskonstant"
  
! #: c/c-parser.cc:28697 cp/parser.cc:52487
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<;%>, %<,%> or %<)%>"
  msgid "expected %<at%>, %<severity%> or %<message%> clause"
  msgstr "%<;%>, %<,%> eller %<)%> forventet"
  
! #: c/c-parser.cc:28730 cp/parser.cc:52522
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<,%> or %<)%>"
  msgid "expected %qs or %qs"
  msgstr "%<,%> eller %<)%> forventet"
  
! #: c/c-parser.cc:28787 cp/parser.cc:52584
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma omp error%> with %<at(execution)%> clause may only be used in compound statements"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: c/c-parser.cc:28810 cp/parser.cc:52611
  #, gcc-internal-format
  msgid "%<pragma omp error%> encountered: %s"
  msgstr ""
  
! #: c/c-parser.cc:28813 cp/parser.cc:52614
  #, gcc-internal-format
  msgid "%<pragma omp error%> encountered"
  msgstr ""
  
! #: c/c-parser.cc:28840 cp/parser.cc:50051
  #, gcc-internal-format
  msgid "expected at least one assumption clause"
  msgstr ""
  
! #: c/c-parser.cc:28926 c/c-parser.cc:29224 cp/parser.cc:50137
! #: cp/parser.cc:51553 cp/parser.cc:51580
  #, fuzzy, gcc-internal-format
  #| msgid "expected function"
  msgid "expected directive name"
  msgstr "forventet funktion"
  
! #: c/c-parser.cc:28937 cp/parser.cc:50148
  #, gcc-internal-format
  msgid "invalid OpenMP directive name in %qs clause argument: declarative, informational, and meta directives not permitted"
  msgstr ""
  
! #: c/c-parser.cc:28945 cp/parser.cc:50156
  #, gcc-internal-format
  msgid "unknown OpenMP directive name in %qs clause argument"
  msgstr ""
  
! #: c/c-parser.cc:28952 cp/parser.cc:50163
  #, gcc-internal-format
  msgid "%<%s%s%s%s%s%> directive mentioned in both %<absent%> and %<contains%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:28963 cp/parser.cc:50174
  #, gcc-internal-format
  msgid "%<%s%s%s%s%s%> directive mentioned multiple times in %qs clauses"
  msgstr ""
  
! #: c/c-parser.cc:28986 cp/parser.cc:50201
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown assumption clause %qs"
  msgstr "ukendt registernavn: %s"
  
! #: c/c-parser.cc:28999 cp/parser.cc:50211
  #, fuzzy, gcc-internal-format
  #| msgid "expected function"
  msgid "expected assumption clause"
  msgstr "forventet funktion"
  
! #: c/c-parser.cc:29128 cp/parser.cc:51454
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<;%>, %<,%> or %<)%>"
  msgid "expected %<when%>, %<otherwise%>, or %<default%> clause"
  msgstr "%<;%>, %<,%> eller %<)%> forventet"
  
! #: c/c-parser.cc:29142 cp/parser.cc:51469
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<otherwise%> or %<default%> clauses in %<metadirective%>"
  msgstr "for mange inddatafiler"
  
! #: c/c-parser.cc:29150 cp/parser.cc:51478
  #, gcc-internal-format
  msgid "%<otherwise%> or %<default%> clause must appear last in %<metadirective%>"
  msgstr ""
  
! #: c/c-parser.cc:29237 cp/parser.cc:51566
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown directive name"
  msgstr "ukendt registernavn: %s"
  
! #: c/c-parser.cc:29252 cp/parser.cc:51586
  #, gcc-internal-format
  msgid "metadirectives cannot be used as variants of a %<metadirective%>"
  msgstr ""
  
! #: c/c-parser.cc:29258 cp/parser.cc:51592
  #, gcc-internal-format
  msgid "declarative directive variants of a %<metadirective%> are not supported"
  msgstr ""
  
! #: c/c-parser.cc:29584 cp/semantics.cc:10340
  #, gcc-internal-format
  msgid "%qE declared %<threadprivate%> after first use"
  msgstr ""
  
! #: c/c-parser.cc:29586 cp/semantics.cc:10342
  #, gcc-internal-format
  msgid "automatic variable %qE cannot be %<threadprivate%>"
  msgstr ""
  
! #: c/c-parser.cc:29590 cp/semantics.cc:10344
  #, fuzzy, gcc-internal-format
  msgid "%<threadprivate%> %qE has incomplete type"
  msgstr "parameteren er af en ufuldstÃ¦ndig type"
  
! #: c/c-parser.cc:29770 cp/parser.cc:53373
  #, gcc-internal-format
  msgid "%<__transaction_cancel%> without transactional memory support enabled"
  msgstr ""
  
! #: c/c-parser.cc:29776 cp/parser.cc:53379
  #, gcc-internal-format
  msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
  msgstr ""
  
! #: c/c-parser.cc:29785
  #, fuzzy, gcc-internal-format
  #| msgid "%<transaction_may_cancel_outer%> function call not within outer transaction or %<transaction_may_cancel_outer%>"
  msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%> or a %<transaction_may_cancel_outer%> function"
  msgstr "%<transaction_may_cancel_outer%> funktionskald er ikke inden for ydre transaktion eller %<transaction_may_cancel_outer%>"
  
! #: c/c-parser.cc:29793 cp/parser.cc:53397
  #, gcc-internal-format
  msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
  msgstr ""
  
! #: c/c-parser.cc:29886
  #, fuzzy, gcc-internal-format
  #| msgid "error closing %s: %m"
  msgid "no closing brace"
*************** msgstr "fejl ved lukning af %s: %m"
*** 54634,54640 ****
  msgid "%qD has an incomplete type %qT"
  msgstr "'%s' er af en ufuldstÃ¦ndig type"
  
! #: c/c-typeck.cc:252 c/c-typeck.cc:12542 c/c-typeck.cc:12617 cp/call.cc:5062
  #, gcc-internal-format
  msgid "invalid use of void expression"
  msgstr "ugyldig brug af void-udtryk"
--- 54643,54649 ----
  msgid "%qD has an incomplete type %qT"
  msgstr "'%s' er af en ufuldstÃ¦ndig type"
  
! #: c/c-typeck.cc:252 c/c-typeck.cc:12559 c/c-typeck.cc:12634 cp/call.cc:5062
  #, gcc-internal-format
  msgid "invalid use of void expression"
  msgstr "ugyldig brug af void-udtryk"
*************** msgstr "en funktions returtype kan ikke
*** 54724,54736 ****
  msgid "converting an array compound literal to a pointer leads to a dangling pointer in C++"
  msgstr ""
  
! #: c/c-typeck.cc:3109 c/c-typeck.cc:10693
  #, fuzzy, gcc-internal-format
  #| msgid "'%D' has no member named '%E'"
  msgid "%qT has no member named %qE; did you mean %qE?"
  msgstr "'%D' har intet medlem ved navn '%E'"
  
! #: c/c-typeck.cc:3113 c/c-typeck.cc:10697
  #, fuzzy, gcc-internal-format
  #| msgid "'%D' has no member named '%E'"
  msgid "%qT has no member named %qE"
--- 54733,54745 ----
  msgid "converting an array compound literal to a pointer leads to a dangling pointer in C++"
  msgstr ""
  
! #: c/c-typeck.cc:3109 c/c-typeck.cc:10710
  #, fuzzy, gcc-internal-format
  #| msgid "'%D' has no member named '%E'"
  msgid "%qT has no member named %qE; did you mean %qE?"
  msgstr "'%D' har intet medlem ved navn '%E'"
  
! #: c/c-typeck.cc:3113 c/c-typeck.cc:10714
  #, fuzzy, gcc-internal-format
  #| msgid "'%D' has no member named '%E'"
  msgid "%qT has no member named %qE"
*************** msgstr "forsÃ¸g pÃ¥ at fÃ¸lge en 'void *
*** 54775,54781 ****
  msgid "subscripted value is neither array nor pointer nor vector"
  msgstr "vÃ¦rdien der er pÃ¥fÃ¸rt et indeks, er hverken en tabel eller en henvisningsvariabel"
  
! #: c/c-typeck.cc:3324 cp/typeck.cc:4035 cp/typeck.cc:4130
  #, gcc-internal-format
  msgid "array subscript is not an integer"
  msgstr "tabelindeks er ikke et heltal"
--- 54784,54790 ----
  msgid "subscripted value is neither array nor pointer nor vector"
  msgstr "vÃ¦rdien der er pÃ¥fÃ¸rt et indeks, er hverken en tabel eller en henvisningsvariabel"
  
! #: c/c-typeck.cc:3324 cp/typeck.cc:4151 cp/typeck.cc:4246
  #, gcc-internal-format
  msgid "array subscript is not an integer"
  msgstr "tabelindeks er ikke et heltal"
*************** msgstr "for mange parametre til funktion
*** 54934,55078 ****
  msgid "too many arguments to built-in function %qE expecting %d"
  msgstr "for mange parametre til funktionen"
  
! #: c/c-typeck.cc:4351
  #, gcc-internal-format
  msgid "ISO C23 does not allow arguments for method %qE declared without parameters"
  msgstr ""
  
! #: c/c-typeck.cc:4356
  #, gcc-internal-format
  msgid "ISO C23 does not allow arguments for function %qE declared without parameters"
  msgstr ""
  
! #: c/c-typeck.cc:4432
  #, gcc-internal-format
  msgid "implicit conversion from %qT to %qT when passing argument to function"
  msgstr ""
  
! #: c/c-typeck.cc:4513
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function"
  msgid "too few arguments to function %qE; expected at least %i, have %i"
  msgstr "for fÃ¥ parametre til funktionen"
  
! #: c/c-typeck.cc:4514
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function"
  msgid "too few arguments to function %qE; expected %i, have %i"
  msgstr "for fÃ¥ parametre til funktionen"
  
! #: c/c-typeck.cc:4528
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function"
  msgid "too few arguments to built-in function %qE expecting %u"
  msgstr "for fÃ¥ parametre til funktionen"
  
! #: c/c-typeck.cc:4706 c/c-typeck.cc:4734 cp/typeck.cc:5849 cp/typeck.cc:6137
  #, fuzzy, gcc-internal-format
  #| msgid "%Jweak declaration of '%D' after first use results in unspecified behavior"
  msgid "comparison with string literal results in unspecified behavior"
  msgstr "%Jsvag erklÃ¦ring af '%D' efter fÃ¸rste brug resulterer i ikke-defineret opfÃ¸rsel"
  
! #: c/c-typeck.cc:4714 c/c-typeck.cc:4725 cp/typeck.cc:5886 cp/typeck.cc:5910
  #, fuzzy, gcc-internal-format
  #| msgid "comparison between pointer and integer"
  msgid "comparison between pointer and zero character constant"
  msgstr "sammenligning mellem henvisningsvariabel og heltal"
  
! #: c/c-typeck.cc:4717 c/c-typeck.cc:4728 cp/typeck.cc:5889 cp/typeck.cc:5913
  #, fuzzy, gcc-internal-format
  #| msgid "casting `%T' to `%T' does not dereference pointer"
  msgid "did you mean to dereference the pointer?"
  msgstr "typeomtvingning af '%T' til '%T' fÃ¸lger ikke henvisning"
  
! #: c/c-typeck.cc:4746 c/c-typeck.cc:4753 c/c-typeck.cc:6130 c/c-typeck.cc:6135
! #: c/c-typeck.cc:8683 cp/tree.cc:6464
  #, fuzzy, gcc-internal-format
  #| msgid "two `u's in integer constant"
  msgid "zero as null pointer constant"
  msgstr "to 'u'-endelser i heltalskonstant"
  
! #: c/c-typeck.cc:4774
  #, fuzzy, gcc-internal-format
  #| msgid "comparison between `%#T' and `%#T'"
  msgid "comparison between %qT and %qT"
  msgstr "sammenligning mellem '%#T' og '%#T'"
  
! #: c/c-typeck.cc:4833
  #, fuzzy, gcc-internal-format
  #| msgid "pointer of type `void *' used in subtraction"
  msgid "pointer of type %<void *%> used in subtraction"
  msgstr "henvisning af typen 'void *' benyttet i subtraktion"
  
! #: c/c-typeck.cc:4836
  #, gcc-internal-format
  msgid "pointer to a function used in subtraction"
  msgstr "henvisning til en funktion benyttet i subtraktion"
  
! #: c/c-typeck.cc:4870
  #, gcc-internal-format
  msgid "arithmetic on pointer to an incomplete type"
  msgstr "beregninger udfÃ¸rt pÃ¥ en henvisning til en ufuldstÃ¦ndig type"
  
! #: c/c-typeck.cc:4879 cp/typeck.cc:6937
  #, fuzzy, gcc-internal-format
  #| msgid "arithmetic on pointer to an incomplete type"
  msgid "arithmetic on pointer to an empty aggregate"
  msgstr "beregninger udfÃ¸rt pÃ¥ en henvisning til en ufuldstÃ¦ndig type"
  
! #: c/c-typeck.cc:5328
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "%<~%> on a boolean expression"
  msgstr "uventet adresseudtryk"
  
! #: c/c-typeck.cc:5332
  #, gcc-internal-format
  msgid "did you mean to use logical not?"
  msgstr ""
  
! #: c/c-typeck.cc:5342
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support `~' for complex conjugation"
  msgid "ISO C does not support %<~%> for complex conjugation"
  msgstr "ISO C understÃ¸tter ikke '~' til compleks-konjugering"
  
! #: c/c-typeck.cc:5366
  #, fuzzy, gcc-internal-format
  #| msgid "wrong type argument to abs"
  msgid "wrong type argument to absu"
  msgstr "forkert parametertype til abs"
  
! #: c/c-typeck.cc:5392
  #, gcc-internal-format
  msgid "wrong type argument to unary exclamation mark"
  msgstr "forkert parametertype til unÃ¦rt udrÃ¥bstegn"
  
! #: c/c-typeck.cc:5450
  #, fuzzy, gcc-internal-format
  #| msgid "enumeration value `%s' not handled in switch"
  msgid "increment of enumeration value is invalid in C++"
  msgstr "enum-vÃ¦rdien '%s' hÃ¥ndteres ikke i switch-sÃ¦tning"
  
! #: c/c-typeck.cc:5453
  #, fuzzy, gcc-internal-format
  #| msgid "enumeration value `%s' not handled in switch"
  msgid "decrement of enumeration value is invalid in C++"
  msgstr "enum-vÃ¦rdien '%s' hÃ¥ndteres ikke i switch-sÃ¦tning"
  
! #: c/c-typeck.cc:5460
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "increment of a boolean expression"
  msgstr "uventet adresseudtryk"
  
! #: c/c-typeck.cc:5463
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "decrement of a boolean expression"
  msgstr "uventet adresseudtryk"
  
! #: c/c-typeck.cc:5479
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support `++' and `--' on complex types"
  msgid "ISO C does not support %<++%> and %<--%> on complex types before C2Y"
--- 54943,55087 ----
  msgid "too many arguments to built-in function %qE expecting %d"
  msgstr "for mange parametre til funktionen"
  
! #: c/c-typeck.cc:4352
  #, gcc-internal-format
  msgid "ISO C23 does not allow arguments for method %qE declared without parameters"
  msgstr ""
  
! #: c/c-typeck.cc:4357
  #, gcc-internal-format
  msgid "ISO C23 does not allow arguments for function %qE declared without parameters"
  msgstr ""
  
! #: c/c-typeck.cc:4433
  #, gcc-internal-format
  msgid "implicit conversion from %qT to %qT when passing argument to function"
  msgstr ""
  
! #: c/c-typeck.cc:4514
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function"
  msgid "too few arguments to function %qE; expected at least %i, have %i"
  msgstr "for fÃ¥ parametre til funktionen"
  
! #: c/c-typeck.cc:4515
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function"
  msgid "too few arguments to function %qE; expected %i, have %i"
  msgstr "for fÃ¥ parametre til funktionen"
  
! #: c/c-typeck.cc:4529
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function"
  msgid "too few arguments to built-in function %qE expecting %u"
  msgstr "for fÃ¥ parametre til funktionen"
  
! #: c/c-typeck.cc:4707 c/c-typeck.cc:4735 cp/typeck.cc:5965 cp/typeck.cc:6253
  #, fuzzy, gcc-internal-format
  #| msgid "%Jweak declaration of '%D' after first use results in unspecified behavior"
  msgid "comparison with string literal results in unspecified behavior"
  msgstr "%Jsvag erklÃ¦ring af '%D' efter fÃ¸rste brug resulterer i ikke-defineret opfÃ¸rsel"
  
! #: c/c-typeck.cc:4715 c/c-typeck.cc:4726 cp/typeck.cc:6002 cp/typeck.cc:6026
  #, fuzzy, gcc-internal-format
  #| msgid "comparison between pointer and integer"
  msgid "comparison between pointer and zero character constant"
  msgstr "sammenligning mellem henvisningsvariabel og heltal"
  
! #: c/c-typeck.cc:4718 c/c-typeck.cc:4729 cp/typeck.cc:6005 cp/typeck.cc:6029
  #, fuzzy, gcc-internal-format
  #| msgid "casting `%T' to `%T' does not dereference pointer"
  msgid "did you mean to dereference the pointer?"
  msgstr "typeomtvingning af '%T' til '%T' fÃ¸lger ikke henvisning"
  
! #: c/c-typeck.cc:4747 c/c-typeck.cc:4754 c/c-typeck.cc:6131 c/c-typeck.cc:6136
! #: c/c-typeck.cc:8684 cp/tree.cc:6464
  #, fuzzy, gcc-internal-format
  #| msgid "two `u's in integer constant"
  msgid "zero as null pointer constant"
  msgstr "to 'u'-endelser i heltalskonstant"
  
! #: c/c-typeck.cc:4775
  #, fuzzy, gcc-internal-format
  #| msgid "comparison between `%#T' and `%#T'"
  msgid "comparison between %qT and %qT"
  msgstr "sammenligning mellem '%#T' og '%#T'"
  
! #: c/c-typeck.cc:4834
  #, fuzzy, gcc-internal-format
  #| msgid "pointer of type `void *' used in subtraction"
  msgid "pointer of type %<void *%> used in subtraction"
  msgstr "henvisning af typen 'void *' benyttet i subtraktion"
  
! #: c/c-typeck.cc:4837
  #, gcc-internal-format
  msgid "pointer to a function used in subtraction"
  msgstr "henvisning til en funktion benyttet i subtraktion"
  
! #: c/c-typeck.cc:4871
  #, gcc-internal-format
  msgid "arithmetic on pointer to an incomplete type"
  msgstr "beregninger udfÃ¸rt pÃ¥ en henvisning til en ufuldstÃ¦ndig type"
  
! #: c/c-typeck.cc:4880 cp/typeck.cc:7053
  #, fuzzy, gcc-internal-format
  #| msgid "arithmetic on pointer to an incomplete type"
  msgid "arithmetic on pointer to an empty aggregate"
  msgstr "beregninger udfÃ¸rt pÃ¥ en henvisning til en ufuldstÃ¦ndig type"
  
! #: c/c-typeck.cc:5329
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "%<~%> on a boolean expression"
  msgstr "uventet adresseudtryk"
  
! #: c/c-typeck.cc:5333
  #, gcc-internal-format
  msgid "did you mean to use logical not?"
  msgstr ""
  
! #: c/c-typeck.cc:5343
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support `~' for complex conjugation"
  msgid "ISO C does not support %<~%> for complex conjugation"
  msgstr "ISO C understÃ¸tter ikke '~' til compleks-konjugering"
  
! #: c/c-typeck.cc:5367
  #, fuzzy, gcc-internal-format
  #| msgid "wrong type argument to abs"
  msgid "wrong type argument to absu"
  msgstr "forkert parametertype til abs"
  
! #: c/c-typeck.cc:5393
  #, gcc-internal-format
  msgid "wrong type argument to unary exclamation mark"
  msgstr "forkert parametertype til unÃ¦rt udrÃ¥bstegn"
  
! #: c/c-typeck.cc:5451
  #, fuzzy, gcc-internal-format
  #| msgid "enumeration value `%s' not handled in switch"
  msgid "increment of enumeration value is invalid in C++"
  msgstr "enum-vÃ¦rdien '%s' hÃ¥ndteres ikke i switch-sÃ¦tning"
  
! #: c/c-typeck.cc:5454
  #, fuzzy, gcc-internal-format
  #| msgid "enumeration value `%s' not handled in switch"
  msgid "decrement of enumeration value is invalid in C++"
  msgstr "enum-vÃ¦rdien '%s' hÃ¥ndteres ikke i switch-sÃ¦tning"
  
! #: c/c-typeck.cc:5461
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "increment of a boolean expression"
  msgstr "uventet adresseudtryk"
  
! #: c/c-typeck.cc:5464
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "decrement of a boolean expression"
  msgstr "uventet adresseudtryk"
  
! #: c/c-typeck.cc:5480
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support `++' and `--' on complex types"
  msgid "ISO C does not support %<++%> and %<--%> on complex types before C2Y"
*************** msgstr "ISO C understÃ¸tter ikke '++' og
*** 55080,56575 ****
  
  # man kan ikke stikke en forÃ¸gelse (++) en type som parameter, 'type
  # argument' skal opfattes pÃ¥ en anden mÃ¥de
! #: c/c-typeck.cc:5506 c/c-typeck.cc:5540
  #, gcc-internal-format
  msgid "wrong type argument to increment"
  msgstr "forkert parametertype til forÃ¸gelse"
  
! #: c/c-typeck.cc:5508 c/c-typeck.cc:5543
  #, gcc-internal-format
  msgid "wrong type argument to decrement"
  msgstr "forkert parametertype til formindskelse"
  
! #: c/c-typeck.cc:5528
  #, fuzzy, gcc-internal-format
  #| msgid "arithmetic on pointer to an incomplete type"
  msgid "increment of pointer to an incomplete type %qT"
  msgstr "beregninger udfÃ¸rt pÃ¥ en henvisning til en ufuldstÃ¦ndig type"
  
! #: c/c-typeck.cc:5532
  #, fuzzy, gcc-internal-format
  #| msgid "arithmetic on pointer to an incomplete type"
  msgid "decrement of pointer to an incomplete type %qT"
  msgstr "beregninger udfÃ¸rt pÃ¥ en henvisning til en ufuldstÃ¦ndig type"
  
! #: c/c-typeck.cc:5640
  #, fuzzy, gcc-internal-format
  #| msgid "taking address of temporary"
  msgid "taking address of expression of type %<void%>"
  msgstr "tager adressen pÃ¥ midlertidig variabel"
  
! #: c/c-typeck.cc:5703 c/c-typeck.cc:5899
  #, fuzzy, gcc-internal-format
  #| msgid "cannot take address of bit-field `%s'"
  msgid "cannot take address of bit-field %qD"
  msgstr "kan ikke finde adressen af bitfeltet '%s'"
  
! #: c/c-typeck.cc:5717
  #, fuzzy, gcc-internal-format
  #| msgid "cannot take the address of an unaligned member"
  msgid "cannot take address of scalar with reverse storage order"
  msgstr "kan ikke tage adressen af et ikke-justeret medlem"
  
! #: c/c-typeck.cc:5725
  #, fuzzy, gcc-internal-format
  #| msgid "address of register variable `%s' requested"
  msgid "address of array with reverse scalar storage order requested"
  msgstr "forespÃ¸rgsel efter adressen af registervariablen '%s'"
  
! #: c/c-typeck.cc:5914
  #, fuzzy, gcc-internal-format
  #| msgid "address of register variable `%s' requested"
  msgid "address of register compound literal requested"
  msgstr "forespÃ¸rgsel efter adressen af registervariablen '%s'"
  
! #: c/c-typeck.cc:5935
  #, fuzzy, gcc-internal-format
  #| msgid "global register variable `%s' used in nested function"
  msgid "global register variable %qD used in nested function"
  msgstr "global registervariabel '%s' benyttet i indlejret funktion"
  
! #: c/c-typeck.cc:5938
  #, fuzzy, gcc-internal-format
  #| msgid "register variable `%s' used in nested function"
  msgid "register variable %qD used in nested function"
  msgstr "registervariabel '%s' benyttet i indlejret funktion"
  
! #: c/c-typeck.cc:5943
  #, fuzzy, gcc-internal-format
  #| msgid "address of global register variable `%s' requested"
  msgid "address of global register variable %qD requested"
  msgstr "forespÃ¸rgsel efter adressen af den globale registervariabel '%s'"
  
! #: c/c-typeck.cc:5945 d/d-codegen.cc:761
  #, fuzzy, gcc-internal-format
  #| msgid "address of register variable `%s' requested"
  msgid "address of register variable %qD requested"
  msgstr "forespÃ¸rgsel efter adressen af registervariablen '%s'"
  
! #: c/c-typeck.cc:6084
  #, fuzzy, gcc-internal-format
  #| msgid "type mismatch in conditional expression"
  msgid "non-lvalue array in conditional expression"
  msgstr "typerne i betingelsesudtrykket passer ikke sammen"
  
! #: c/c-typeck.cc:6180
  #, gcc-internal-format
  msgid "implicit conversion from %qT to %qT to match other result of conditional"
  msgstr ""
  
! #: c/c-typeck.cc:6239 c/c-typeck.cc:6245
  #, gcc-internal-format
  msgid "operand of %<?:%> changes signedness from %qT to %qT due to unsignedness of other operand"
  msgstr ""
  
! #: c/c-typeck.cc:6262
  #, gcc-internal-format
  msgid "ISO C forbids conditional expr with only one void side"
  msgstr "ISO C forbyder betingede udtryk med kun Ã©n tom side"
  
! #: c/c-typeck.cc:6279
  #, fuzzy, gcc-internal-format
  #| msgid "pointer type mismatch in conditional expression"
  msgid "pointers to disjoint address spaces used in conditional expression"
  msgstr "henvisningstyperne i betingelsesudtrykket passer ikke sammen"
  
! #: c/c-typeck.cc:6303
  #, fuzzy, gcc-internal-format
  #| msgid "pointer type mismatch in conditional expression"
  msgid "pointer to array loses qualifier in conditional expression"
  msgstr "henvisningstyperne i betingelsesudtrykket passer ikke sammen"
  
! #: c/c-typeck.cc:6307
  #, fuzzy, gcc-internal-format
  #| msgid "pointer type mismatch in conditional expression"
  msgid "pointer to array loses qualifier in conditional expression in ISO C before C23"
  msgstr "henvisningstyperne i betingelsesudtrykket passer ikke sammen"
  
! #: c/c-typeck.cc:6312
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids conditional expr between `void *' and function pointer"
  msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
  msgstr "ISO C++ forbyder betinget udtryk mellem 'void *' og funktionshenvisning"
  
! #: c/c-typeck.cc:6334
  #, gcc-internal-format
  msgid "pointer type mismatch in conditional expression"
  msgstr "henvisningstyperne i betingelsesudtrykket passer ikke sammen"
  
! #: c/c-typeck.cc:6337
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "first expression has type %qT"
  msgstr "uventet adresseudtryk"
  
! #: c/c-typeck.cc:6338
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "second expression has type %qT"
  msgstr "uventet adresseudtryk"
  
! #: c/c-typeck.cc:6349 c/c-typeck.cc:6362
  #, gcc-internal-format
  msgid "pointer/integer type mismatch in conditional expression"
  msgstr "henvisnings- og heltalstype i betingelsesudtrykket passer ikke sammen"
  
! #: c/c-typeck.cc:6389
  #, gcc-internal-format
  msgid "type mismatch in conditional expression"
  msgstr "typerne i betingelsesudtrykket passer ikke sammen"
  
! #: c/c-typeck.cc:6505
  #, fuzzy, gcc-internal-format
  #| msgid "%Hignoring return value of `%D', declared with attribute warn_unused_result"
  msgid "ignoring return value of %qD, declared with attribute %<nodiscard%>: %E"
  msgstr "%Hignorerer returvÃ¦rdi for '%D' erklÃ¦ret med egenskaben warn_unused_result"
  
! #: c/c-typeck.cc:6509
  #, fuzzy, gcc-internal-format
  #| msgid "%Hignoring return value of `%D', declared with attribute warn_unused_result"
  msgid "ignoring return value of %qD, declared with attribute %<nodiscard%>"
  msgstr "%Hignorerer returvÃ¦rdi for '%D' erklÃ¦ret med egenskaben warn_unused_result"
  
! #: c/c-typeck.cc:6528
  #, fuzzy, gcc-internal-format
  #| msgid "%Hignoring return value of `%D', declared with attribute warn_unused_result"
  msgid "ignoring return value of type %qT, declared with attribute %<nodiscard%>: %E"
  msgstr "%Hignorerer returvÃ¦rdi for '%D' erklÃ¦ret med egenskaben warn_unused_result"
  
! #: c/c-typeck.cc:6533
  #, fuzzy, gcc-internal-format
  #| msgid "%Hignoring return value of `%D', declared with attribute warn_unused_result"
  msgid "ignoring return value of type %qT, declared with attribute %<nodiscard%>"
  msgstr "%Hignorerer returvÃ¦rdi for '%D' erklÃ¦ret med egenskaben warn_unused_result"
  
! #: c/c-typeck.cc:6542 cp/cvt.cc:1132 rust/backend/rust-tree.cc:640
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "in call to %qD, declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: c/c-typeck.cc:6591
  #, gcc-internal-format
  msgid "left-hand operand of comma expression has no effect"
  msgstr "venstreoperanden til kommaudtrykket har ingen virkning"
  
! #: c/c-typeck.cc:6609 c/c-typeck.cc:13209
  #, fuzzy, gcc-internal-format
  #| msgid "left-hand operand of comma expression has no effect"
  msgid "right-hand operand of comma expression has no effect"
  msgstr "venstreoperanden til kommaudtrykket har ingen virkning"
  
! #: c/c-typeck.cc:6680
  #, fuzzy
  #| msgid "cast adds new qualifiers to function type"
  msgid "cast adds %q#v qualifier to function type"
  msgstr "typeomtvingning tilfÃ¸jer modifikationer til en funktionstype"
  
! #: c/c-typeck.cc:6686
  #, fuzzy
  #| msgid "cast discards qualifiers from pointer target type"
  msgid "cast discards %qv qualifier from pointer target type"
  msgstr "typeomtvingelse kasserer modifikationer pÃ¥ henvisningsmÃ¥lets type"
  
! #: c/c-typeck.cc:6721
  #, gcc-internal-format
  msgid "to be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualified"
  msgstr ""
  
! #: c/c-typeck.cc:6818
  #, gcc-internal-format
  msgid "cast specifies array type"
  msgstr "typetildelingen angiver en tabeltype"
  
! #: c/c-typeck.cc:6824
  #, gcc-internal-format
  msgid "cast specifies function type"
  msgstr "typetildelingen angiver en funktionstype"
  
! #: c/c-typeck.cc:6839
  #, gcc-internal-format
  msgid "ISO C forbids casting nonscalar to the same type"
  msgstr "ISO C forbyder omtvingelse af ikke-skalar til den samme type"
  
! #: c/c-typeck.cc:6843
  #, fuzzy, gcc-internal-format
  msgid "useless cast to type %qT"
  msgstr "skabelonsparameter '%T' benytter lokal type '%T'"
  
! #: c/c-typeck.cc:6863
  #, gcc-internal-format
  msgid "ISO C forbids casts to union type"
  msgstr "ISO C forbyder omtvingelse til uniontype"
  
! #: c/c-typeck.cc:6873
  #, gcc-internal-format
  msgid "cast to union type from type not present in union"
  msgstr "typetildeling til en uniontype fra en type der ikke findes i union'en"
  
! #: c/c-typeck.cc:6908
  #, fuzzy, gcc-internal-format
  #| msgid "comparison of distinct pointer types lacks a cast"
  msgid "cast to %qs address space pointer from disjoint generic address space pointer"
  msgstr "sammenligning med forskellige henvisningstyper mangler en typeomtvingelse"
  
! #: c/c-typeck.cc:6913
  #, fuzzy, gcc-internal-format
  #| msgid "comparison of distinct pointer types lacks a cast"
  msgid "cast to generic address space pointer from disjoint %qs address space pointer"
  msgstr "sammenligning med forskellige henvisningstyper mangler en typeomtvingelse"
  
! #: c/c-typeck.cc:6918
  #, fuzzy, gcc-internal-format
  #| msgid "comparison of distinct pointer types lacks a cast"
  msgid "cast to %qs address space pointer from disjoint %qs address space pointer"
  msgstr "sammenligning med forskellige henvisningstyper mangler en typeomtvingelse"
  
! #: c/c-typeck.cc:6951
  #, gcc-internal-format
  msgid "cast increases required alignment of target type"
  msgstr "typeomtvingelse forÃ¸ger den pÃ¥krÃ¦vne justering af mÃ¥ltypen"
  
! #: c/c-typeck.cc:6963
  #, gcc-internal-format
  msgid "cast from pointer to integer of different size"
  msgstr "typeomtvingelse fra henvisning til heltal af en anden stÃ¸rrelse"
  
! #: c/c-typeck.cc:6968
  #, gcc-internal-format
  msgid "cast from function call of type %qT to non-matching type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:6978 cp/typeck.cc:9383
  #, gcc-internal-format
  msgid "cast to pointer from integer of different size"
  msgstr "typeomtvingelse fra heltal til henvisning af en anden stÃ¸rrelse"
  
! #: c/c-typeck.cc:6992
  #, fuzzy, gcc-internal-format
  msgid "ISO C forbids conversion of function pointer to object pointer type"
  msgstr "ISO C forbyder sammenligning af 'void *' med funktionshenvisning"
  
! #: c/c-typeck.cc:7001
  #, fuzzy, gcc-internal-format
  msgid "ISO C forbids conversion of object pointer to function pointer type"
  msgstr "ISO C forbyder sammenligning af 'void *' med funktionshenvisning"
  
! #: c/c-typeck.cc:7011
  #, fuzzy, gcc-internal-format
  #| msgid "can%'t convert from incomplete type %qT to %qT"
  msgid "cast between incompatible function types from %qT to %qT"
  msgstr "kan ikke konvertere fra ufuldstÃ¦ndig type %qT til %qT"
  
! #: c/c-typeck.cc:7126
  #, gcc-internal-format
  msgid "defining a type in a cast is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7168
  #, fuzzy, gcc-internal-format
  #| msgid "assignment suppression"
  msgid "assignment to expression with array type"
  msgstr "tildelingsundertrykkelse"
  
! #: c/c-typeck.cc:7294
  #, gcc-internal-format
  msgid "enum conversion in assignment is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7496 c/c-typeck.cc:7515 c/c-typeck.cc:7572
  #, fuzzy, gcc-internal-format
  #| msgid "(near initialization for `%s')"
  msgid "(near initialization for %qs)"
  msgstr "(i nÃ¦rheden af klargÃ¸ringen af '%s')"
  
! #: c/c-typeck.cc:7588
  #, fuzzy, gcc-internal-format
  #| msgid "char-array initialized from wide string"
  msgid "array initialized from parenthesized string constant"
  msgstr "char-tabel fÃ¥r tildelt startvÃ¦rdi fra en bred streng"
  
! #: c/c-typeck.cc:7638
  #, fuzzy
  #| msgid "argument missing after %s"
  msgid "expected %e but argument is of type %e"
  msgstr "en parameter mangler efter %s"
  
! #: c/c-typeck.cc:7672
  #, gcc-internal-format
  msgid "%qD argument %d type is %qT where %qT is expected in a call to built-in function declared without prototype"
  msgstr ""
  
! #: c/c-typeck.cc:7675
  #, gcc-internal-format
  msgid "%qD argument %d promotes to %qT where %qT is expected in a call to built-in function declared without prototype"
  msgstr ""
  
! #: c/c-typeck.cc:7680
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "built-in %qD declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: c/c-typeck.cc:7737 c/c-typeck.cc:8645
  #, fuzzy
  #| msgid "  `%#D' declared here"
  msgid "%e declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: c/c-typeck.cc:7930
  #, gcc-internal-format
  msgid "enum conversion when passing argument %d of %qE is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7935
  #, gcc-internal-format
  msgid "expected %qT but argument is of type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:7939
  #, fuzzy, gcc-internal-format
  msgid "enum conversion from %qT to %qT in assignment is invalid in C++"
  msgstr "konvertering fra NaN til unsigned int"
  
! #: c/c-typeck.cc:7944
  #, fuzzy, gcc-internal-format
  #| msgid "cannot convert `%T' to `%T' in %s"
  msgid "enum conversion from %qT to %qT in initialization is invalid in C++"
  msgstr "kan ikke konvertere '%T' til '%T' i %s"
  
! #: c/c-typeck.cc:7949
  #, fuzzy, gcc-internal-format
  msgid "enum conversion from %qT to %qT in return is invalid in C++"
  msgstr "konvertering fra NaN til unsigned int"
  
! #: c/c-typeck.cc:7967
  #, fuzzy, gcc-internal-format
  #| msgid "conversion from `%#T' to `%#T'"
  msgid "implicit conversion from %qT to %qT"
  msgstr "konvertering fra '%#T' til '%#T'"
  
! #: c/c-typeck.cc:8149 c/c-typeck.cc:8548
  #, fuzzy
  #| msgid "%s makes qualified function pointer from unqualified"
  msgid "passing argument %d of %qE makes %q#v qualified function pointer from unqualified"
  msgstr "%s opretter en funktionshenvisning med modifikationer fra Ã©n uden"
  
! #: c/c-typeck.cc:8152 c/c-typeck.cc:8551
  #, fuzzy
  #| msgid "%s makes qualified function pointer from unqualified"
  msgid "assignment makes %q#v qualified function pointer from unqualified"
  msgstr "%s opretter en funktionshenvisning med modifikationer fra Ã©n uden"
  
! #: c/c-typeck.cc:8155 c/c-typeck.cc:8553
  #, fuzzy
  #| msgid "%s makes qualified function pointer from unqualified"
  msgid "initialization makes %q#v qualified function pointer from unqualified"
  msgstr "%s opretter en funktionshenvisning med modifikationer fra Ã©n uden"
  
! #: c/c-typeck.cc:8158 c/c-typeck.cc:8555
  #, fuzzy
  #| msgid "%s makes qualified function pointer from unqualified"
  msgid "return makes %q#v qualified function pointer from unqualified"
  msgstr "%s opretter en funktionshenvisning med modifikationer fra Ã©n uden"
  
! #: c/c-typeck.cc:8166 c/c-typeck.cc:8438 c/c-typeck.cc:8481
  #, fuzzy
  #| msgid "cast from `%T' to `%T' discards qualifiers from pointer target type"
  msgid "passing argument %d of %qE discards %qv qualifier from pointer target type"
  msgstr "typeomtvingning fra '%T' til '%T' kasserer modifikationer pÃ¥ henvisningsmÃ¥lets type"
  
! #: c/c-typeck.cc:8168 c/c-typeck.cc:8440 c/c-typeck.cc:8483
  #, fuzzy
  #| msgid "cast discards qualifiers from pointer target type"
  msgid "assignment discards %qv qualifier from pointer target type"
  msgstr "typeomtvingelse kasserer modifikationer pÃ¥ henvisningsmÃ¥lets type"
  
! #: c/c-typeck.cc:8170 c/c-typeck.cc:8442 c/c-typeck.cc:8485
  #, fuzzy
  #| msgid "cast discards qualifiers from pointer target type"
  msgid "initialization discards %qv qualifier from pointer target type"
  msgstr "typeomtvingelse kasserer modifikationer pÃ¥ henvisningsmÃ¥lets type"
  
! #: c/c-typeck.cc:8172 c/c-typeck.cc:8444 c/c-typeck.cc:8487
  #, fuzzy
  #| msgid "cast discards qualifiers from pointer target type"
  msgid "return discards %qv qualifier from pointer target type"
  msgstr "typeomtvingelse kasserer modifikationer pÃ¥ henvisningsmÃ¥lets type"
  
! #: c/c-typeck.cc:8181
  #, gcc-internal-format
  msgid "ISO C prohibits argument conversion to union type"
  msgstr "ISO C forbyder parameterkonvertering til uniontype"
  
! #: c/c-typeck.cc:8249
  #, fuzzy, gcc-internal-format
  msgid "request for implicit conversion from %qT to %qT not permitted in C++"
  msgstr "konvertering fra NaN til unsigned int"
  
! #: c/c-typeck.cc:8276
  #, fuzzy, gcc-internal-format
  #| msgid "passing arg %d of pointer to function"
  msgid "passing argument %d of %qE from pointer to non-enclosed address space"
  msgstr "videregiver den %d. parameter af henvisning til funktion"
  
! #: c/c-typeck.cc:8287
  #, fuzzy, gcc-internal-format
  #| msgid "cast from pointer to integer of different size"
  msgid "assignment from pointer to non-enclosed address space"
  msgstr "typeomtvingelse fra henvisning til heltal af en anden stÃ¸rrelse"
  
! #: c/c-typeck.cc:8298
  #, gcc-internal-format
  msgid "initialization from pointer to non-enclosed address space"
  msgstr ""
  
! #: c/c-typeck.cc:8308
  #, gcc-internal-format
  msgid "return from pointer to non-enclosed address space"
  msgstr ""
  
! #: c/c-typeck.cc:8324
  #, fuzzy, gcc-internal-format
  #| msgid "  expected a type, got `%E'"
  msgid "expected %qT but pointer is of type %qT"
  msgstr "  forventede en type, modtog '%E'"
  
! #: c/c-typeck.cc:8339
  #, fuzzy, gcc-internal-format
  #| msgid "function might be possible candidate for `%s' format attribute"
  msgid "argument %d of %qE might be a candidate for a format attribute"
  msgstr "funktion er en mulig kandidat til '%s'-formateringsegenskab"
  
! #: c/c-typeck.cc:8345
  #, fuzzy, gcc-internal-format
  #| msgid "Warn about functions which might be candidates for format attributes"
  msgid "assignment left-hand side might be a candidate for a format attribute"
  msgstr "Advar om funktioner som kan vÃ¦re kandidater til formateringsegenskaber"
  
! #: c/c-typeck.cc:8351
  #, fuzzy, gcc-internal-format
  #| msgid "function might be possible candidate for `%s' format attribute"
  msgid "initialization left-hand side might be a candidate for a format attribute"
  msgstr "funktion er en mulig kandidat til '%s'-formateringsegenskab"
  
! #: c/c-typeck.cc:8356 cp/typeck.cc:10559
  #, fuzzy, gcc-internal-format
  #| msgid "function might be possible candidate for `%s' format attribute"
  msgid "return type might be a candidate for a format attribute"
  msgstr "funktion er en mulig kandidat til '%s'-formateringsegenskab"
  
! #: c/c-typeck.cc:8380
  #, fuzzy, gcc-internal-format
  #| msgid "%s from incompatible pointer type"
  msgid "passing argument %d of %qE from incompatible scalar storage order"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: c/c-typeck.cc:8390
  #, fuzzy, gcc-internal-format
  #| msgid "%s from incompatible pointer type"
  msgid "assignment to %qT from pointer type %qT with incompatible scalar storage order"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: c/c-typeck.cc:8400
  #, fuzzy, gcc-internal-format
  #| msgid "%s from incompatible pointer type"
  msgid "initialization of %qT from pointer type %qT with incompatible scalar storage order"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: c/c-typeck.cc:8405
  #, fuzzy, gcc-internal-format
  #| msgid "return-statement with a value, in function declared with a void return type"
  msgid "returning %qT from pointer type with incompatible scalar storage order %qT"
  msgstr "return-sÃ¦tning med en vÃ¦rdi i en funktion der er erklÃ¦ret med en void returtype"
  
! #: c/c-typeck.cc:8455
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids %s between function pointer and `void *'"
  msgid "ISO C forbids passing argument %d of %qE between function pointer and %<void *%>"
  msgstr "ISO C forbyder %s mellem funktionshenvisning og 'void *'"
  
! #: c/c-typeck.cc:8458
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids %s between function pointer and `void *'"
  msgid "ISO C forbids assignment between function pointer and %<void *%>"
  msgstr "ISO C forbyder %s mellem funktionshenvisning og 'void *'"
  
! #: c/c-typeck.cc:8460
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids %s between function pointer and `void *'"
  msgid "ISO C forbids initialization between function pointer and %<void *%>"
  msgstr "ISO C forbyder %s mellem funktionshenvisning og 'void *'"
  
! #: c/c-typeck.cc:8462
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids %s between function pointer and `void *'"
  msgid "ISO C forbids return between function pointer and %<void *%>"
  msgstr "ISO C forbyder %s mellem funktionshenvisning og 'void *'"
  
! #: c/c-typeck.cc:8492
  #, gcc-internal-format
  msgid "array with qualifier on the element is not qualified before C23"
  msgstr ""
  
! #: c/c-typeck.cc:8510
  #, fuzzy, gcc-internal-format
  #| msgid "pointer targets in %s differ in signedness"
  msgid "pointer targets in passing argument %d of %qE differ in signedness"
  msgstr "fortegnene i henvisningsmÃ¥l i %s er forskellige"
  
! #: c/c-typeck.cc:8518
  #, fuzzy, gcc-internal-format
  #| msgid "pointer targets in %s differ in signedness"
  msgid "pointer targets in assignment from %qT to %qT differ in signedness"
  msgstr "fortegnene i henvisningsmÃ¥l i %s er forskellige"
  
! #: c/c-typeck.cc:8524
  #, fuzzy, gcc-internal-format
  #| msgid "pointer targets in %s differ in signedness"
  msgid "pointer targets in initialization of %qT from %qT differ in signedness"
  msgstr "fortegnene i henvisningsmÃ¥l i %s er forskellige"
  
! #: c/c-typeck.cc:8529
  #, fuzzy, gcc-internal-format
  #| msgid "pointer targets in %s differ in signedness"
  msgid "pointer targets in returning %qT from a function with return type %qT differ in signedness"
  msgstr "fortegnene i henvisningsmÃ¥l i %s er forskellige"
  
! #: c/c-typeck.cc:8576
  #, fuzzy, gcc-internal-format
  #| msgid "%s from incompatible pointer type"
  msgid "passing argument %d of %qE from incompatible pointer type"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: c/c-typeck.cc:8587
  #, fuzzy
  #| msgid "%s from incompatible pointer type"
  msgid "assignment to %e from pointer to %qD with incompatible type %e"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: c/c-typeck.cc:8593
  #, fuzzy
  #| msgid "%s from incompatible pointer type"
  msgid "assignment to %e from incompatible pointer type %e"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: c/c-typeck.cc:8602
  #, fuzzy
  #| msgid "%s from incompatible pointer type"
  msgid "initialization of %e from pointer to %qD with incompatible type %e"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: c/c-typeck.cc:8608
  #, fuzzy
  #| msgid "%s from incompatible pointer type"
  msgid "initialization of %e from incompatible pointer type %e"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: c/c-typeck.cc:8616
  #, fuzzy
  #| msgid "return-statement with a value, in function declared with a void return type"
  msgid "returning pointer to %qD of type %e from a function with incompatible type %e"
  msgstr "return-sÃ¦tning med en vÃ¦rdi i en funktion der er erklÃ¦ret med en void returtype"
  
! #: c/c-typeck.cc:8622
  #, fuzzy
  #| msgid "return-statement with a value, in function declared with a void return type"
  msgid "returning %e from a function with incompatible return type %e"
  msgstr "return-sÃ¦tning med en vÃ¦rdi i en funktion der er erklÃ¦ret med en void returtype"
  
! #: c/c-typeck.cc:8698
  #, fuzzy, gcc-internal-format
  #| msgid "%s makes pointer from integer without a cast"
  msgid "passing argument %d of %qE makes pointer from integer without a cast"
  msgstr "%s opretter en henvisningsvariabel ud fra et heltal uden en typeomtvingning"
  
! #: c/c-typeck.cc:8708
  #, fuzzy, gcc-internal-format
  #| msgid "%s makes pointer from integer without a cast"
  msgid "assignment to %qT from %qT makes pointer from integer without a cast"
  msgstr "%s opretter en henvisningsvariabel ud fra et heltal uden en typeomtvingning"
  
! #: c/c-typeck.cc:8714
  #, fuzzy, gcc-internal-format
  #| msgid "%s makes pointer from integer without a cast"
  msgid "initialization of %qT from %qT makes pointer from integer without a cast"
  msgstr "%s opretter en henvisningsvariabel ud fra et heltal uden en typeomtvingning"
  
! #: c/c-typeck.cc:8719
  #, fuzzy, gcc-internal-format
  #| msgid "%s makes pointer from integer without a cast"
  msgid "returning %qT from a function with return type %qT makes pointer from integer without a cast"
  msgstr "%s opretter en henvisningsvariabel ud fra et heltal uden en typeomtvingning"
  
! #: c/c-typeck.cc:8741
  #, fuzzy, gcc-internal-format
  #| msgid "%s makes integer from pointer without a cast"
  msgid "passing argument %d of %qE makes integer from pointer without a cast"
  msgstr "%s opretter et heltal ud fra en henvisningsvariabel uden en typeomtvingning"
  
! #: c/c-typeck.cc:8751
  #, fuzzy, gcc-internal-format
  #| msgid "%s makes integer from pointer without a cast"
  msgid "assignment to %qT from %qT makes integer from pointer without a cast"
  msgstr "%s opretter et heltal ud fra en henvisningsvariabel uden en typeomtvingning"
  
! #: c/c-typeck.cc:8757
  #, fuzzy, gcc-internal-format
  #| msgid "%s makes integer from pointer without a cast"
  msgid "initialization of %qT from %qT makes integer from pointer without a cast"
  msgstr "%s opretter et heltal ud fra en henvisningsvariabel uden en typeomtvingning"
  
! #: c/c-typeck.cc:8761
  #, fuzzy, gcc-internal-format
  #| msgid "%s makes integer from pointer without a cast"
  msgid "returning %qT from a function with return type %qT makes integer from pointer without a cast"
  msgstr "%s opretter et heltal ud fra en henvisningsvariabel uden en typeomtvingning"
  
! #: c/c-typeck.cc:8794
  #, fuzzy, gcc-internal-format
  #| msgid "incompatible type for argument %d of `%s'"
  msgid "incompatible type for argument %d of %qE"
  msgstr "typen af den %d. parameter i '%s' passer ikke"
  
! #: c/c-typeck.cc:8805
  #, fuzzy, gcc-internal-format
  #| msgid "incompatible types in assignment of `%T' to `%T'"
  msgid "incompatible types when assigning to type %qT from type %qT"
  msgstr "uforenelige typer i tildeling af '%T' til '%T'"
  
! #: c/c-typeck.cc:8816
  #, fuzzy, gcc-internal-format
  #| msgid "incompatible types in assignment of `%T' to `%T'"
  msgid "incompatible types when initializing type %qT using type %qT"
  msgstr "uforenelige typer i tildeling af '%T' til '%T'"
  
! #: c/c-typeck.cc:8826
  #, gcc-internal-format
  msgid "incompatible types when returning type %qT but %qT was expected"
  msgstr ""
  
  # 'automatic aggregate' betyder automatisk allokerede variabler, dvs.
  # ganske almindelige lokale variabler (kan evt. erklÃ¦res med 'auto')
! #: c/c-typeck.cc:8906
  #, gcc-internal-format
  msgid "traditional C rejects automatic aggregate initialization"
  msgstr "traditionel C forbyder klargÃ¸ring af auto-variabler af sammensatte typer"
  
! #: c/c-typeck.cc:9148
  #, gcc-internal-format
  msgid "%<constexpr%> pointer initializer is not null"
  msgstr ""
  
! #: c/c-typeck.cc:9156
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "%<constexpr%> integer initializer is not an integer constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: c/c-typeck.cc:9159 c/c-typeck.cc:9221 c/c-typeck.cc:9374
! #, fuzzy, gcc-internal-format
! msgid "%<constexpr%> initializer not representable in type of object"
! msgstr "navnerum '%D' ikke tilladt i using-erklÃ¦ring"
! 
! #: c/c-typeck.cc:9169
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "%<constexpr%> initializer is not an arithmetic constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: c/c-typeck.cc:9186
  #, gcc-internal-format
  msgid "%<constexpr%> initializer for a real type is of complex type"
  msgstr ""
  
! #: c/c-typeck.cc:9195
  #, gcc-internal-format
  msgid "%<constexpr%> initializer for a binary floating-point type is of decimal type"
  msgstr ""
  
! #: c/c-typeck.cc:9339 c/c-typeck.cc:10307 cp/typeck2.cc:1241
  #, gcc-internal-format
  msgid "initialization of a flexible array member"
  msgstr "klargÃ¸ring af fleksibelt tabelmedlem"
  
! #: c/c-typeck.cc:9355 cp/typeck2.cc:1258
  #, fuzzy, gcc-internal-format
  #| msgid "%s from incompatible pointer type"
  msgid "cannot initialize array of %qT from a string literal with type array of %qT"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: c/c-typeck.cc:9401
  #, fuzzy, gcc-internal-format
  #| msgid "initializer-string for array of chars is too long"
  msgid "initializer-string for array of %qT is too long (%wu chars into %wu available)"
  msgstr "startvÃ¦rdistrengen til char-tabellen er for lang"
  
! #: c/c-typeck.cc:9406
  #, fuzzy, gcc-internal-format
  #| msgid "initializer-string for array of chars is too long"
  msgid "initializer-string for array of %qT is too long for C++ (%wu chars into %wu available)"
  msgstr "startvÃ¦rdistrengen til char-tabellen er for lang"
  
! #: c/c-typeck.cc:9413
  #, gcc-internal-format
  msgid "initializer-string for array of %qT truncates NUL terminator but destination lacks %qs attribute (%wu chars into %wu available)"
  msgstr ""
  
! #: c/c-typeck.cc:9425
  #, fuzzy, gcc-internal-format
  #| msgid "char-array initialized from wide string"
  msgid "array of inappropriate type initialized from string constant"
  msgstr "char-tabel fÃ¥r tildelt startvÃ¦rdi fra en bred streng"
  
! #: c/c-typeck.cc:9493 cp/typeck.cc:2556
  #, gcc-internal-format
  msgid "invalid use of non-lvalue array"
  msgstr "ugyldig brug af en tabel der ikke kan optrÃ¦de som en venstrevÃ¦rdi"
  
! #: c/c-typeck.cc:9507 c/c-typeck.cc:9647 c/c-typeck.cc:10401
  #, gcc-internal-format
  msgid "invalid initializer"
  msgstr "ugyldig startvÃ¦rdi"
  
! #: c/c-typeck.cc:9519 c/c-typeck.cc:9543 c/c-typeck.cc:9546 c/c-typeck.cc:9554
! #: c/c-typeck.cc:9616 c/c-typeck.cc:11384 c/c-typeck.cc:11468
  #, gcc-internal-format
  msgid "initializer element is not constant"
  msgstr "startvÃ¦rdielement er ikke en konstant"
  
! #: c/c-typeck.cc:9528
  #, gcc-internal-format
  msgid "array initialized from non-constant array expression"
  msgstr "tabel fÃ¥r tildelt en startvÃ¦rdi fra et tabeludtryk der ikke er konstant"
  
! #: c/c-typeck.cc:9559 c/c-typeck.cc:9629 c/c-typeck.cc:11478
  #, fuzzy, gcc-internal-format
  #| msgid "initializer element is not constant"
  msgid "initializer element is not a constant expression"
  msgstr "startvÃ¦rdielement er ikke en konstant"
  
! #: c/c-typeck.cc:9581 cp/typeck2.cc:1340
  #, fuzzy, gcc-internal-format
  #| msgid "conversion from `%T' to `%T' discards qualifiers"
  msgid "conversion from %qT to %qT changes value from %qd to %qd"
  msgstr "konvertering fra '%T' til '%T' forkaster modifikationer"
  
! #: c/c-typeck.cc:9623 c/c-typeck.cc:11473
  #, gcc-internal-format
  msgid "initializer element is not computable at load time"
  msgstr "startvÃ¦rdielement kan ikke beregnes ved indlÃ¦sningstidspunktet"
  
! #: c/c-typeck.cc:9929 cp/decl.cc:7906
  #, fuzzy, gcc-internal-format
  msgid "opaque vector types cannot be initialized"
  msgstr "objekt af typen '%T' med variabel stÃ¸rrelse mÃ¥ ikke tildeles en startvÃ¦rdi"
  
! #: c/c-typeck.cc:10155
  #, gcc-internal-format
  msgid "extra brace group at end of initializer"
  msgstr "overskydende krÃ¸llede paranteser ved slutningen af startvÃ¦rdien"
  
! #: c/c-typeck.cc:10239
  #, gcc-internal-format
  msgid "braces around scalar initializer"
  msgstr "krÃ¸llede paranteser omkring skalarstartvÃ¦rdi"
  
  # RETMIG: eller er det fleksibel tabel-medlem
! #: c/c-typeck.cc:10309 c/c-typeck.cc:10313 c/c-typeck.cc:12076
! #: c/c-typeck.cc:12201 cp/typeck2.cc:1268 cp/typeck2.cc:1621
  #, gcc-internal-format
  msgid "initialization of flexible array member in a nested context"
  msgstr "klargÃ¸ring af fleksibelt tabelmedlem i en indlejret kontekst"
  
! #: c/c-typeck.cc:10350
  #, gcc-internal-format
  msgid "missing braces around initializer"
  msgstr "krÃ¸llede paranteser mangler omkring startvÃ¦rdien"
  
! #: c/c-typeck.cc:10373
  #, fuzzy, gcc-internal-format
  #| msgid "missing initializer for member `%D'"
  msgid "missing initializer for field %qD of %qT"
  msgstr "manglende startvÃ¦rdi for medlemmet '%D'"
  
! #: c/c-typeck.cc:10413
  #, gcc-internal-format
  msgid "extra elements in scalar initializer"
  msgstr "overskydende elementer i skalarstarvÃ¦rdi"
  
! #: c/c-typeck.cc:10535 c/c-typeck.cc:10617
  #, gcc-internal-format
  msgid "array index in non-array initializer"
  msgstr "tabelindeks i en startvÃ¦rdi der ikke er en tabel"
  
  # RETMIG: record?
! #: c/c-typeck.cc:10540 c/c-typeck.cc:10679
  #, gcc-internal-format
  msgid "field name not in record or union initializer"
  msgstr "feltnavn ikke i struktur- eller union-startvÃ¦rdi"
  
! #: c/c-typeck.cc:10590
  #, fuzzy, gcc-internal-format
  #| msgid "array index in initializer exceeds array bounds"
  msgid "array index in initializer not of integer type"
  msgstr "tabelindeks i startvÃ¦rdi overskrider tabelgrÃ¦nser"
  
! #: c/c-typeck.cc:10599 c/c-typeck.cc:10608
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "array index in initializer is not an integer constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: c/c-typeck.cc:10613 c/c-typeck.cc:10615
  #, gcc-internal-format
  msgid "nonconstant array index in initializer"
  msgstr "tabelindekset i startvÃ¦rdien er ikke en konstant"
  
! #: c/c-typeck.cc:10619 c/c-typeck.cc:10622
  #, gcc-internal-format
  msgid "array index in initializer exceeds array bounds"
  msgstr "tabelindeks i startvÃ¦rdi overskrider tabelgrÃ¦nser"
  
! #: c/c-typeck.cc:10641
  #, gcc-internal-format
  msgid "empty index range in initializer"
  msgstr "tomt indeksinterval i startvÃ¦rdi"
  
! #: c/c-typeck.cc:10650
  #, gcc-internal-format
  msgid "array index range in initializer exceeds array bounds"
  msgstr "tabelindeksinterval i startvÃ¦rdi overskrider tabelgrÃ¦nser"
  
! #: c/c-typeck.cc:10784 c/c-typeck.cc:10839 c/c-typeck.cc:10880
! #: c/c-typeck.cc:10940 c/c-typeck.cc:10987 c/c-typeck.cc:11575
  #, fuzzy, gcc-internal-format
  #| msgid "initialized field with side-effects overwritten"
  msgid "initialized field overwritten"
  msgstr "klargjort felt med bivirkninger overskrevet"
  
! #: c/c-typeck.cc:10875 c/c-typeck.cc:10936 c/c-typeck.cc:10983
! #: c/c-typeck.cc:11572
  #, gcc-internal-format
  msgid "initialized field with side-effects overwritten"
  msgstr "klargjort felt med bivirkninger overskrevet"
  
! #: c/c-typeck.cc:11500
  #, gcc-internal-format
  msgid "enum conversion in initialization is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:11946
  #, fuzzy, gcc-internal-format
  #| msgid "excess elements in union initializer"
  msgid "excess elements in %qT initializer"
  msgstr "for mange elementer i union-startvÃ¦rdi"
  
! #: c/c-typeck.cc:11958 c/c-typeck.cc:12035
  #, gcc-internal-format
  msgid "excess elements in struct initializer"
  msgstr "for mange elementer i struct-startvÃ¦rdi"
  
! #: c/c-typeck.cc:11979
  #, gcc-internal-format
  msgid "positional initialization of field in %<struct%> declared with %<designated_init%> attribute"
  msgstr ""
  
! #: c/c-typeck.cc:12050 c/c-typeck.cc:12176 cp/typeck2.cc:1245
  #, gcc-internal-format
  msgid "non-static initialization of a flexible array member"
  msgstr "ikke-statisk klargÃ¸ring af fleksibelt tabelmedlem"
  
! #: c/c-typeck.cc:12146
  #, gcc-internal-format
  msgid "excess elements in union initializer"
  msgstr "for mange elementer i union-startvÃ¦rdi"
  
! #: c/c-typeck.cc:12168
  #, gcc-internal-format
  msgid "traditional C rejects initialization of unions"
  msgstr "traditionel C forbyder tildeling af startvÃ¦rdi til unioner"
  
! #: c/c-typeck.cc:12267
  #, gcc-internal-format
  msgid "excess elements in array initializer"
  msgstr "for mange elementer i tabelstartvÃ¦rdi"
  
! #: c/c-typeck.cc:12344 c/c-typeck.cc:12346
  #, gcc-internal-format
  msgid "excess elements in vector initializer"
  msgstr "for mange elementer i vektorstartvÃ¦rdi"
  
! #: c/c-typeck.cc:12380
  #, gcc-internal-format
  msgid "excess elements in scalar initializer"
  msgstr "for mange elementer i skalarstartvÃ¦rdi"
  
! #: c/c-typeck.cc:12547 c/c-typeck.cc:12623 cp/semantics.cc:2346
  #: cp/semantics.cc:2455
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not allow extra `;' outside of a function"
  msgid "constraint allows registers outside of a function"
  msgstr "ISO C tillader ikke ekstra ';' uden for funktioner"
  
! #: c/c-typeck.cc:12559 cp/semantics.cc:2358
  #, fuzzy, gcc-internal-format
  #| msgid "variable-size type declared outside of any function"
  msgid "side-effects in output operand outside of a function"
  msgstr "en type med en variabel stÃ¸rrelse er erklÃ¦ret uden for en funktion"
  
! #: c/c-typeck.cc:12570 cp/semantics.cc:2374
  #, fuzzy, gcc-internal-format
  #| msgid "output operand %d must use %<&%> constraint"
  msgid "output operand outside of a function is not constant"
  msgstr "uddataoperand %d skal bruge %<&%>-begrÃ¦nsningen"
  
! #: c/c-typeck.cc:12578 c/c-typeck.cc:12668 cp/semantics.cc:2385
  #: cp/semantics.cc:2518
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' cannot be used as a function"
  msgid "%<-%> modifier used inside of a function"
  msgstr "'%E' kan ikke bruges som en funktion"
  
! #: c/c-typeck.cc:12636 cp/semantics.cc:2468
  #, fuzzy, gcc-internal-format
  msgid "%<:%> constraint operand is not address of a function or non-automatic variable"
  msgstr "'%s'-egenskaben kan kun anvendes sammen med funktioner"
  
! #: c/c-typeck.cc:12649 cp/semantics.cc:2481
  #, fuzzy, gcc-internal-format
  #| msgid "variable-size type declared outside of any function"
  msgid "side-effects in input operand outside of a function"
  msgstr "en type med en variabel stÃ¸rrelse er erklÃ¦ret uden for en funktion"
  
! #: c/c-typeck.cc:12660 cp/semantics.cc:2496 cp/semantics.cc:2510
  #, fuzzy, gcc-internal-format
  #| msgid "%J'%D' is not defined outside of function scope"
  msgid "input operand outside of a function is not constant"
  msgstr "%J'%D' er ikke defineret uden for funktionsvirkefelt"
  
! #: c/c-typeck.cc:12712
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids `goto *expr;'"
  msgid "ISO C forbids %<goto *expr;%>"
  msgstr "ISO C forbyder 'goto *udtryk;'"
  
! #: c/c-typeck.cc:12718
  #, fuzzy, gcc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "computed goto must be pointer type"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: c/c-typeck.cc:12748 c/gimple-parser.cc:2648 cp/typeck.cc:11159
  #, fuzzy, gcc-internal-format
  #| msgid "function declared `noreturn' has a `return' statement"
  msgid "function declared %<noreturn%> has a %<return%> statement"
  msgstr "funktion der er erklÃ¦ret 'noreturn' har en 'return'-sÃ¦tning"
  
! #: c/c-typeck.cc:12777
  #, fuzzy, gcc-internal-format
  #| msgid "`return' with no value, in function returning non-void"
  msgid "%<return%> with no value, in function returning non-void"
  msgstr "'return' uden nogen vÃ¦rdi i en funktion der ikke returnerer void"
  
! #: c/c-typeck.cc:12790 c/gimple-parser.cc:2658
  #, fuzzy, gcc-internal-format
  #| msgid "`return' with a value, in function returning void"
  msgid "%<return%> with a value, in function returning void"
  msgstr "'return' med en vÃ¦rdi i en funktion der returnerer void"
  
! #: c/c-typeck.cc:12793
  #, fuzzy, gcc-internal-format
  #| msgid "`return' with a value, in function returning void"
  msgid "ISO C forbids %<return%> with expression, in function returning void"
  msgstr "'return' med en vÃ¦rdi i en funktion der returnerer void"
  
! #: c/c-typeck.cc:12875
  #, fuzzy, gcc-internal-format
  #| msgid "function returns address of local variable"
  msgid "function returns address of label"
  msgstr "funktion returnerer adressen pÃ¥ en lokal variabel"
  
! #: c/c-typeck.cc:12966 cp/semantics.cc:1921
  #, gcc-internal-format
  msgid "switch quantity not an integer"
  msgstr "switch-stÃ¸rrelsen er ikke et heltal"
  
! #: c/c-typeck.cc:12991
  #, fuzzy, gcc-internal-format
  #| msgid "`long' switch expression not converted to `int' in ISO C"
  msgid "%<long%> switch expression not converted to %<int%> in ISO C"
  msgstr "'long'-udtryk i switch konverteres ikke til 'int' i ISO C"
  
! #: c/c-typeck.cc:13029 c/c-typeck.cc:13037
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "case label is not an integer constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: c/c-typeck.cc:13043 cp/parser.cc:13521
  #, gcc-internal-format
  msgid "case label not within a switch statement"
  msgstr "case-etiket befinder sig ikke inden i en switch-sÃ¦tning"
  
! #: c/c-typeck.cc:13045
  #, fuzzy, gcc-internal-format
  #| msgid "`default' label not within a switch statement"
  msgid "%<default%> label not within a switch statement"
  msgstr "'default'-etiket befinder sig ikke inden i en switch-sÃ¦tning"
  
! #: c/c-typeck.cc:13121 cp/parser.cc:15291
  #, gcc-internal-format
  msgid "break statement not within loop or switch"
  msgstr "break-sÃ¦tning befinder sig ikke i en lÃ¸kke- eller switch-konstruktion"
  
! #: c/c-typeck.cc:13124 c/c-typeck.cc:13144 cp/decl.cc:4107 cp/parser.cc:15301
! #: cp/parser.cc:15322
  #, gcc-internal-format
  msgid "invalid exit from OpenMP structured block"
  msgstr ""
  
! #: c/c-typeck.cc:13127 cp/parser.cc:15304
  #, fuzzy, gcc-internal-format
  #| msgid "break statement not within loop or switch"
  msgid "break statement used with OpenMP for loop"
  msgstr "break-sÃ¦tning befinder sig ikke i en lÃ¸kke- eller switch-konstruktion"
  
! #: c/c-typeck.cc:13141 cp/parser.cc:15314
  #, gcc-internal-format
  msgid "continue statement not within a loop"
  msgstr "continue-sÃ¦tning befinder sig ikke i en lÃ¸kke"
  
! #: c/c-typeck.cc:13191 cp/cp-gimplify.cc:277
  #, fuzzy, gcc-internal-format
  #| msgid "%Hstatement with no effect"
  msgid "statement with no effect"
  msgstr "%HsÃ¦tning uden nogen virkning"
  
! #: c/c-typeck.cc:13235
  #, gcc-internal-format
  msgid "expression statement has incomplete type"
  msgstr "udtrykket er af en ufuldstÃ¦ndig type"
  
! #: c/c-typeck.cc:13526
  #, gcc-internal-format
  msgid "the comparison will always evaluate as %<false%> for the pointer operand in %qE must not be NULL"
  msgstr ""
  
! #: c/c-typeck.cc:13531
  #, gcc-internal-format
  msgid "the comparison will always evaluate as %<true%> for the pointer operand in %qE must not be NULL"
  msgstr ""
  
! #: c/c-typeck.cc:13549 c/c-typeck.cc:13587
  #, fuzzy, gcc-internal-format
  msgid "the comparison will always evaluate as %<false%> for the address of %qE will never be NULL"
  msgstr "adressen af '%D' vil altid vÃ¦re 'true'"
  
! #: c/c-typeck.cc:13554 c/c-typeck.cc:13592
  #, fuzzy, gcc-internal-format
  msgid "the comparison will always evaluate as %<true%> for the address of %qE will never be NULL"
  msgstr "adressen af '%D' vil altid vÃ¦re 'true'"
  
! #: c/c-typeck.cc:14184 c/c-typeck.cc:14348 cp/typeck.cc:6163
  #, fuzzy, gcc-internal-format
  #| msgid "operands to ?: have different types"
  msgid "comparing vectors with different element types"
  msgstr "operander til ?: har forskellige typer"
  
! #: c/c-typeck.cc:14192 c/c-typeck.cc:14356 cp/typeck.cc:6177
  #, fuzzy, gcc-internal-format
  #| msgid "operand constraints for `asm' differ in number of alternatives"
  msgid "comparing vectors with different number of elements"
  msgstr "operandbegrÃ¦nsninger til 'asm' har forskellige antal alternativer"
  
! #: c/c-typeck.cc:14207 c/c-typeck.cc:14371 cp/typeck.cc:6195
  #, fuzzy, gcc-internal-format
  #| msgid "comparison between types `%#T' and `%#T'"
  msgid "comparison between types %qT and %qT"
  msgstr "sammenligning mellem typerne '%#T' og '%#T'"
  
! #: c/c-typeck.cc:14217 c/c-typeck.cc:14381 cp/typeck.cc:6212
  #, gcc-internal-format
  msgid "could not find an integer type of the same size as %qT"
  msgstr ""
  
! #: c/c-typeck.cc:14231 cp/typeck.cc:5838
  #, fuzzy, gcc-internal-format
  #| msgid "comparing floating point with == or != is unsafe"
  msgid "comparing floating-point with %<==%> or %<!=%> is unsafe"
  msgstr "sammenligning af kommatal med == eller != er ikke sikkert"
  
! #: c/c-typeck.cc:14270 c/c-typeck.cc:14422
  #, fuzzy, gcc-internal-format
  #| msgid "comparison of distinct pointer types lacks a cast"
  msgid "comparison of pointers to disjoint address spaces"
  msgstr "sammenligning med forskellige henvisningstyper mangler en typeomtvingelse"
  
! #: c/c-typeck.cc:14277 c/c-typeck.cc:14283
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids comparison of `void *' with function pointer"
  msgid "ISO C forbids comparison of %<void *%> with function pointer"
  msgstr "ISO C forbyder sammenligning af 'void *' med funktionshenvisning"
  
! #: c/c-typeck.cc:14290 c/c-typeck.cc:14432
  #, gcc-internal-format
  msgid "comparison of distinct pointer types lacks a cast"
  msgstr "sammenligning med forskellige henvisningstyper mangler en typeomtvingelse"
  
! #: c/c-typeck.cc:14303 c/c-typeck.cc:14309 c/c-typeck.cc:14459
! #: c/c-typeck.cc:14465
  #, gcc-internal-format
  msgid "comparison between pointer and integer"
  msgstr "sammenligning mellem henvisningsvariabel og heltal"
  
! #: c/c-typeck.cc:14410
  #, gcc-internal-format
  msgid "comparison of complete and incomplete pointers"
  msgstr "sammenligning mellem en fuldstÃ¦ndig og ufuldstÃ¦ndig henvisning"
  
! #: c/c-typeck.cc:14412
  #, gcc-internal-format
  msgid "ISO C forbids ordered comparisons of pointers to functions"
  msgstr "ISO C forbyder ordnede sammenligninger af henvisninger til funktioner"
  
! #: c/c-typeck.cc:14417
  #, fuzzy, gcc-internal-format
  #| msgid "ordered comparison of pointer with integer zero"
  msgid "ordered comparison of pointer with null pointer"
  msgstr "ordnet sammenligning af henvisning med heltallet nul"
  
! #: c/c-typeck.cc:14440 c/c-typeck.cc:14443 c/c-typeck.cc:14450
! #: c/c-typeck.cc:14453
  #, gcc-internal-format
  msgid "ordered comparison of pointer with integer zero"
  msgstr "ordnet sammenligning af henvisning med heltallet nul"
  
! #: c/c-typeck.cc:14530
  #, gcc-internal-format
  msgid "implicit conversion from %qT to %qT to match other operand of binary expression"
  msgstr ""
  
! #: c/c-typeck.cc:14848
  #, fuzzy, gcc-internal-format
  #| msgid "array type value used where scalar is required"
  msgid "used array that cannot be converted to pointer where scalar is required"
  msgstr "vÃ¦rdi af tabeltype angivet hvor skalar er pÃ¥krÃ¦vet"
  
! #: c/c-typeck.cc:14852
  #, fuzzy, gcc-internal-format
  #| msgid "struct type value used where scalar is required"
  msgid "used struct type value where scalar is required"
  msgstr "vÃ¦rdi af struct-type angivet hvor skalar er pÃ¥krÃ¦vet"
  
! #: c/c-typeck.cc:14856
  #, fuzzy, gcc-internal-format
  #| msgid "union type value used where scalar is required"
  msgid "used union type value where scalar is required"
  msgstr "vÃ¦rdi af union-type angivet hvor skalar er pÃ¥krÃ¦vet"
  
! #: c/c-typeck.cc:14872
  #, fuzzy, gcc-internal-format
  #| msgid "struct type value used where scalar is required"
  msgid "used vector type where scalar is required"
  msgstr "vÃ¦rdi af struct-type angivet hvor skalar er pÃ¥krÃ¦vet"
  
! #: c/c-typeck.cc:15075 cp/semantics.cc:12069
  #, gcc-internal-format
  msgid "%<#pragma omp cancel%> must specify one of %<parallel%>, %<for%>, %<sections%> or %<taskgroup%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:15086 c/c-typeck.cc:15096 cp/semantics.cc:12080
  #: cp/semantics.cc:12090
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "expected %<cancel%> %<if%> clause modifier"
  msgstr "for mange inddatafiler"
  
! #: c/c-typeck.cc:15131 cp/semantics.cc:12125
  #, gcc-internal-format
  msgid "%<#pragma omp cancellation point%> must specify one of %<parallel%>, %<for%>, %<sections%> or %<taskgroup%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:15199 cp/semantics.cc:5948 cp/semantics.cc:9059
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not a valid class name"
  msgid "%qD is not a variable in %qs clause"
  msgstr "'%s' er et ugyldigt klassenavn"
  
! #: c/c-typeck.cc:15203 c/c-typeck.cc:17020 cp/semantics.cc:5952
  #: cp/semantics.cc:9063
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not a valid class name"
  msgid "%qE is not a variable in %qs clause"
  msgstr "'%s' er et ugyldigt klassenavn"
  
! #: c/c-typeck.cc:15211
  #, fuzzy, gcc-internal-format
  #| msgid "bit-field `%s' has invalid type"
  msgid "%<_Atomic%> %qD in %qs clause"
  msgstr "bitfeltet '%s' er af en ufuldstÃ¦ndig type"
  
! #: c/c-typeck.cc:15221 c/c-typeck.cc:17027 c/c-typeck.cc:17181
  #: cp/semantics.cc:5961 cp/semantics.cc:9070 cp/semantics.cc:9259
  #, gcc-internal-format
  msgid "%qD is threadprivate variable in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15258 cp/semantics.cc:5995
  #, fuzzy, gcc-internal-format
  #| msgid "size in array new must have integral type"
  msgid "low bound %qE of array section does not have integral type"
  msgstr "stÃ¸rrelse i tabel-new skal vÃ¦re en heltalstype"
  
! #: c/c-typeck.cc:15265 cp/semantics.cc:6002
  #, fuzzy, gcc-internal-format
  #| msgid "size in array new must have integral type"
  msgid "length %qE of array section does not have integral type"
  msgstr "stÃ¸rrelse i tabel-new skal vÃ¦re en heltalstype"
  
! #: c/c-typeck.cc:15288 cp/semantics.cc:6035
  #, fuzzy, gcc-internal-format
  #| msgid "Unexpected EOF while reading source file %s.\n"
  msgid "expected single pointer in %qs clause"
  msgstr "StÃ¸dt pÃ¥ slutningen af kildefilen %s tidligere end forventet.\n"
  
! #: c/c-typeck.cc:15306 c/c-typeck.cc:15373 c/c-typeck.cc:15666
  #: cp/semantics.cc:6053 cp/semantics.cc:6120
  #, fuzzy, gcc-internal-format
  msgid "zero length array section in %qs clause"
  msgstr "Intern oversÃ¦tterfejl i %s ved %s:%d."
  
! #: c/c-typeck.cc:15325 cp/semantics.cc:6072
  #, gcc-internal-format
  msgid "for unknown bound array type length expression must be specified"
  msgstr ""
  
! #: c/c-typeck.cc:15333 cp/semantics.cc:6080
  #, gcc-internal-format
  msgid "negative low bound in array section in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15342 c/c-typeck.cc:15466 cp/semantics.cc:6089
  #: cp/semantics.cc:6213
  #, gcc-internal-format
  msgid "negative length in array section in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15359 cp/semantics.cc:6106
  #, gcc-internal-format
  msgid "low bound %qE above array section size in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15402 cp/semantics.cc:6149
  #, gcc-internal-format
  msgid "length %qE above array section size in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15417 cp/semantics.cc:6164
  #, gcc-internal-format
  msgid "high bound %qE above array section size in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15454 cp/semantics.cc:6201
  #, fuzzy, gcc-internal-format
  #| msgid "predicate must be an identifier"
  msgid "for array function parameter length expression must be specified"
  msgstr "udsagn skal vÃ¦re et kaldenavn"
  
! #: c/c-typeck.cc:15458 cp/semantics.cc:6205
  #, gcc-internal-format
  msgid "for pointer type length expression must be specified"
  msgstr ""
  
! #: c/c-typeck.cc:15486 c/c-typeck.cc:15605 cp/semantics.cc:6232
  #: cp/semantics.cc:6368
  #, gcc-internal-format
  msgid "array section is not contiguous in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15496 cp/semantics.cc:6242
  #, fuzzy, gcc-internal-format
  #| msgid "type to vector delete is neither pointer or array type"
  msgid "%qE does not have pointer or array type"
  msgstr "variablen til tabel-delete er hverken af en henvisnings- eller en tabeltype"
  
! #: c/c-typeck.cc:15872 cp/semantics.cc:7305
  #, fuzzy, gcc-internal-format
  #| msgid "throwing NULL, which has integral, not pointer type"
  msgid "iterator %qD has neither integral nor pointer type"
  msgstr "kaster NULL som har en heltals-, ikke en henvisningstype"
  
! #: c/c-typeck.cc:15879
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids qualified function types"
  msgid "iterator %qD has %<_Atomic%> qualified type"
  msgstr "ISO C forbyder funktionsreturtype med modifikationer"
  
! #: c/c-typeck.cc:15885 cp/semantics.cc:7312
  #, fuzzy, gcc-internal-format
  #| msgid "parameter has incomplete type"
  msgid "iterator %qD has const qualified type"
  msgstr "parameteren er af en ufuldstÃ¦ndig type"
  
! #: c/c-typeck.cc:15898 cp/semantics.cc:7328
  #, fuzzy, gcc-internal-format
  #| msgid "bit-field `%#D' with non-integral type"
  msgid "iterator step with non-integral type"
  msgstr "bitfelt '%#D' med en ikke-heltalstype"
  
! #: c/c-typeck.cc:15918 cp/semantics.cc:7364
  #, gcc-internal-format
  msgid "iterator %qD has zero step"
  msgstr ""
  
! #: c/c-typeck.cc:15945
  #, gcc-internal-format
  msgid "type of iterator %qD refers to outer iterator %qD"
  msgstr ""
  
! #: c/c-typeck.cc:15952 cp/semantics.cc:7398
  #, fuzzy, gcc-internal-format
  #| msgid "invalid vector type for attribute `%s'"
  msgid "begin expression refers to outer iterator %qD"
  msgstr "ugyldig vektortype for egenskaben '%s'"
  
! #: c/c-typeck.cc:15958 cp/semantics.cc:7404
  #, fuzzy, gcc-internal-format
  #| msgid "invalid vector type for attribute `%s'"
  msgid "end expression refers to outer iterator %qD"
  msgstr "ugyldig vektortype for egenskaben '%s'"
  
! #: c/c-typeck.cc:15964 cp/semantics.cc:7410
  #, fuzzy, gcc-internal-format
  #| msgid "invalid vector type for attribute `%s'"
  msgid "step expression refers to outer iterator %qD"
  msgstr "ugyldig vektortype for egenskaben '%s'"
  
! #: c/c-typeck.cc:16001 cp/semantics.cc:7458
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected operand"
  msgid "expected pointer in %qs clause"
  msgstr "uventet operand"
  
! #: c/c-typeck.cc:16104 cp/semantics.cc:7624
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids qualified function types"
  msgid "%<inscan%> and non-%<inscan%> %<reduction%> clauses on the same construct"
  msgstr "ISO C forbyder funktionsreturtype med modifikationer"
  
! #: c/c-typeck.cc:16126 cp/semantics.cc:7644
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids qualified function types"
  msgid "%<inscan%> %<reduction%> clause with array section"
  msgstr "ISO C forbyder funktionsreturtype med modifikationer"
  
! #: c/c-typeck.cc:16152 c/c-typeck.cc:16162
  #, fuzzy, gcc-internal-format
  #| msgid "type to vector delete is neither pointer or array type"
  msgid "%qD in %<reduction%> clause is a zero size array"
  msgstr "variablen til tabel-delete er hverken af en henvisnings- eller en tabeltype"
  
! #: c/c-typeck.cc:16182
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids qualified function types"
  msgid "%<_Atomic%> %qE in %<reduction%> clause"
  msgstr "ISO C forbyder funktionsreturtype med modifikationer"
  
! #: c/c-typeck.cc:16194
  #, fuzzy, gcc-internal-format
  #| msgid "bit-field `%s' has invalid type"
  msgid "zero sized type %qT in %qs clause"
  msgstr "bitfeltet '%s' er af en ufuldstÃ¦ndig type"
  
! #: c/c-typeck.cc:16202
  #, fuzzy, gcc-internal-format
  #| msgid "bit-field `%s' has invalid type"
  msgid "variable sized type %qT in %qs clause"
  msgstr "bitfeltet '%s' er af en ufuldstÃ¦ndig type"
  
! #: c/c-typeck.cc:16246
  #, fuzzy, gcc-internal-format
  #| msgid "invalid return type for function `%#D'"
  msgid "%qE has invalid type for %<reduction(%s)%>"
  msgstr "ugyldig returtype for funktionen '%#D'"
  
! #: c/c-typeck.cc:16255 cp/semantics.cc:7197
  #, fuzzy, gcc-internal-format
  msgid "user defined reduction not found for %qE"
  msgstr "brug af '%D' er tvetydigt"
  
! #: c/c-typeck.cc:16343
  #, gcc-internal-format
  msgid "variable length element type in array %<reduction%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16361 c/c-typeck.cc:17275 cp/semantics.cc:9943
  #, gcc-internal-format
  msgid "%<nowait%> clause must not be used together with %<copyprivate%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16373 cp/semantics.cc:10011
  #, gcc-internal-format
  msgid "%qE must be %<threadprivate%> for %<copyin%>"
  msgstr ""
  
! #: c/c-typeck.cc:16388 cp/semantics.cc:7687
  #, gcc-internal-format
  msgid "modifier should not be specified in %<linear%> clause on %<simd%> or %<for%> constructs when not using OpenMP 5.2 modifiers"
  msgstr ""
  
! #: c/c-typeck.cc:16397
  #, gcc-internal-format
  msgid "linear clause applied to non-integral non-pointer variable with type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:16405
  #, gcc-internal-format
  msgid "%<_Atomic%> %qD in %<linear%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16424 cp/semantics.cc:7771
  #, fuzzy, gcc-internal-format
  #| msgid "type to vector delete is neither pointer or array type"
  msgid "%<linear%> clause step %qE is neither constant nor a parameter"
  msgstr "variablen til tabel-delete er hverken af en henvisnings- eller en tabeltype"
  
! #: c/c-typeck.cc:16454 c/c-typeck.cc:17175 c/c-typeck.cc:17446
  #: cp/semantics.cc:7858 cp/semantics.cc:9253 cp/semantics.cc:9644
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not a valid class name"
  msgid "%qE is not a variable in clause %qs"
  msgstr "'%s' er et ugyldigt klassenavn"
  
! #: c/c-typeck.cc:16471 cp/semantics.cc:7876
  #, fuzzy, gcc-internal-format
  #| msgid "%qD appears more than once in motion clauses"
  msgid "%qD appears more than once in data-sharing clauses"
  msgstr "%qD fremgÃ¥r mere end en gang i motion-klausuller"
  
! #: c/c-typeck.cc:16482 cp/semantics.cc:7887
  #, gcc-internal-format
  msgid "%qD appears more than once in reduction clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16496 c/c-typeck.cc:16566 c/c-typeck.cc:16601
  #, gcc-internal-format
  msgid "%qE appears more than once in data clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16506 c/c-typeck.cc:16574 c/c-typeck.cc:16923
! #: c/c-typeck.cc:17075 c/c-typeck.cc:17083 c/c-typeck.cc:17099
! #: c/c-typeck.cc:17108 c/c-typeck.cc:17116 cp/semantics.cc:7901
  #: cp/semantics.cc:7911 cp/semantics.cc:8004 cp/semantics.cc:8012
  #: cp/semantics.cc:8059 cp/semantics.cc:8941 cp/semantics.cc:9131
  #: cp/semantics.cc:9139 cp/semantics.cc:9159 cp/semantics.cc:9168
--- 55089,56584 ----
  
  # man kan ikke stikke en forÃ¸gelse (++) en type som parameter, 'type
  # argument' skal opfattes pÃ¥ en anden mÃ¥de
! #: c/c-typeck.cc:5507 c/c-typeck.cc:5541
  #, gcc-internal-format
  msgid "wrong type argument to increment"
  msgstr "forkert parametertype til forÃ¸gelse"
  
! #: c/c-typeck.cc:5509 c/c-typeck.cc:5544
  #, gcc-internal-format
  msgid "wrong type argument to decrement"
  msgstr "forkert parametertype til formindskelse"
  
! #: c/c-typeck.cc:5529
  #, fuzzy, gcc-internal-format
  #| msgid "arithmetic on pointer to an incomplete type"
  msgid "increment of pointer to an incomplete type %qT"
  msgstr "beregninger udfÃ¸rt pÃ¥ en henvisning til en ufuldstÃ¦ndig type"
  
! #: c/c-typeck.cc:5533
  #, fuzzy, gcc-internal-format
  #| msgid "arithmetic on pointer to an incomplete type"
  msgid "decrement of pointer to an incomplete type %qT"
  msgstr "beregninger udfÃ¸rt pÃ¥ en henvisning til en ufuldstÃ¦ndig type"
  
! #: c/c-typeck.cc:5641
  #, fuzzy, gcc-internal-format
  #| msgid "taking address of temporary"
  msgid "taking address of expression of type %<void%>"
  msgstr "tager adressen pÃ¥ midlertidig variabel"
  
! #: c/c-typeck.cc:5704 c/c-typeck.cc:5900
  #, fuzzy, gcc-internal-format
  #| msgid "cannot take address of bit-field `%s'"
  msgid "cannot take address of bit-field %qD"
  msgstr "kan ikke finde adressen af bitfeltet '%s'"
  
! #: c/c-typeck.cc:5718
  #, fuzzy, gcc-internal-format
  #| msgid "cannot take the address of an unaligned member"
  msgid "cannot take address of scalar with reverse storage order"
  msgstr "kan ikke tage adressen af et ikke-justeret medlem"
  
! #: c/c-typeck.cc:5726
  #, fuzzy, gcc-internal-format
  #| msgid "address of register variable `%s' requested"
  msgid "address of array with reverse scalar storage order requested"
  msgstr "forespÃ¸rgsel efter adressen af registervariablen '%s'"
  
! #: c/c-typeck.cc:5915
  #, fuzzy, gcc-internal-format
  #| msgid "address of register variable `%s' requested"
  msgid "address of register compound literal requested"
  msgstr "forespÃ¸rgsel efter adressen af registervariablen '%s'"
  
! #: c/c-typeck.cc:5936
  #, fuzzy, gcc-internal-format
  #| msgid "global register variable `%s' used in nested function"
  msgid "global register variable %qD used in nested function"
  msgstr "global registervariabel '%s' benyttet i indlejret funktion"
  
! #: c/c-typeck.cc:5939
  #, fuzzy, gcc-internal-format
  #| msgid "register variable `%s' used in nested function"
  msgid "register variable %qD used in nested function"
  msgstr "registervariabel '%s' benyttet i indlejret funktion"
  
! #: c/c-typeck.cc:5944
  #, fuzzy, gcc-internal-format
  #| msgid "address of global register variable `%s' requested"
  msgid "address of global register variable %qD requested"
  msgstr "forespÃ¸rgsel efter adressen af den globale registervariabel '%s'"
  
! #: c/c-typeck.cc:5946 d/d-codegen.cc:761
  #, fuzzy, gcc-internal-format
  #| msgid "address of register variable `%s' requested"
  msgid "address of register variable %qD requested"
  msgstr "forespÃ¸rgsel efter adressen af registervariablen '%s'"
  
! #: c/c-typeck.cc:6085
  #, fuzzy, gcc-internal-format
  #| msgid "type mismatch in conditional expression"
  msgid "non-lvalue array in conditional expression"
  msgstr "typerne i betingelsesudtrykket passer ikke sammen"
  
! #: c/c-typeck.cc:6181
  #, gcc-internal-format
  msgid "implicit conversion from %qT to %qT to match other result of conditional"
  msgstr ""
  
! #: c/c-typeck.cc:6240 c/c-typeck.cc:6246
  #, gcc-internal-format
  msgid "operand of %<?:%> changes signedness from %qT to %qT due to unsignedness of other operand"
  msgstr ""
  
! #: c/c-typeck.cc:6263
  #, gcc-internal-format
  msgid "ISO C forbids conditional expr with only one void side"
  msgstr "ISO C forbyder betingede udtryk med kun Ã©n tom side"
  
! #: c/c-typeck.cc:6280
  #, fuzzy, gcc-internal-format
  #| msgid "pointer type mismatch in conditional expression"
  msgid "pointers to disjoint address spaces used in conditional expression"
  msgstr "henvisningstyperne i betingelsesudtrykket passer ikke sammen"
  
! #: c/c-typeck.cc:6304
  #, fuzzy, gcc-internal-format
  #| msgid "pointer type mismatch in conditional expression"
  msgid "pointer to array loses qualifier in conditional expression"
  msgstr "henvisningstyperne i betingelsesudtrykket passer ikke sammen"
  
! #: c/c-typeck.cc:6308
  #, fuzzy, gcc-internal-format
  #| msgid "pointer type mismatch in conditional expression"
  msgid "pointer to array loses qualifier in conditional expression in ISO C before C23"
  msgstr "henvisningstyperne i betingelsesudtrykket passer ikke sammen"
  
! #: c/c-typeck.cc:6313
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids conditional expr between `void *' and function pointer"
  msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
  msgstr "ISO C++ forbyder betinget udtryk mellem 'void *' og funktionshenvisning"
  
! #: c/c-typeck.cc:6335
  #, gcc-internal-format
  msgid "pointer type mismatch in conditional expression"
  msgstr "henvisningstyperne i betingelsesudtrykket passer ikke sammen"
  
! #: c/c-typeck.cc:6338
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "first expression has type %qT"
  msgstr "uventet adresseudtryk"
  
! #: c/c-typeck.cc:6339
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "second expression has type %qT"
  msgstr "uventet adresseudtryk"
  
! #: c/c-typeck.cc:6350 c/c-typeck.cc:6363
  #, gcc-internal-format
  msgid "pointer/integer type mismatch in conditional expression"
  msgstr "henvisnings- og heltalstype i betingelsesudtrykket passer ikke sammen"
  
! #: c/c-typeck.cc:6390
  #, gcc-internal-format
  msgid "type mismatch in conditional expression"
  msgstr "typerne i betingelsesudtrykket passer ikke sammen"
  
! #: c/c-typeck.cc:6506
  #, fuzzy, gcc-internal-format
  #| msgid "%Hignoring return value of `%D', declared with attribute warn_unused_result"
  msgid "ignoring return value of %qD, declared with attribute %<nodiscard%>: %E"
  msgstr "%Hignorerer returvÃ¦rdi for '%D' erklÃ¦ret med egenskaben warn_unused_result"
  
! #: c/c-typeck.cc:6510
  #, fuzzy, gcc-internal-format
  #| msgid "%Hignoring return value of `%D', declared with attribute warn_unused_result"
  msgid "ignoring return value of %qD, declared with attribute %<nodiscard%>"
  msgstr "%Hignorerer returvÃ¦rdi for '%D' erklÃ¦ret med egenskaben warn_unused_result"
  
! #: c/c-typeck.cc:6529
  #, fuzzy, gcc-internal-format
  #| msgid "%Hignoring return value of `%D', declared with attribute warn_unused_result"
  msgid "ignoring return value of type %qT, declared with attribute %<nodiscard%>: %E"
  msgstr "%Hignorerer returvÃ¦rdi for '%D' erklÃ¦ret med egenskaben warn_unused_result"
  
! #: c/c-typeck.cc:6534
  #, fuzzy, gcc-internal-format
  #| msgid "%Hignoring return value of `%D', declared with attribute warn_unused_result"
  msgid "ignoring return value of type %qT, declared with attribute %<nodiscard%>"
  msgstr "%Hignorerer returvÃ¦rdi for '%D' erklÃ¦ret med egenskaben warn_unused_result"
  
! #: c/c-typeck.cc:6543 cp/cvt.cc:1132 rust/backend/rust-tree.cc:640
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "in call to %qD, declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: c/c-typeck.cc:6592
  #, gcc-internal-format
  msgid "left-hand operand of comma expression has no effect"
  msgstr "venstreoperanden til kommaudtrykket har ingen virkning"
  
! #: c/c-typeck.cc:6610 c/c-typeck.cc:13226
  #, fuzzy, gcc-internal-format
  #| msgid "left-hand operand of comma expression has no effect"
  msgid "right-hand operand of comma expression has no effect"
  msgstr "venstreoperanden til kommaudtrykket har ingen virkning"
  
! #: c/c-typeck.cc:6681
  #, fuzzy
  #| msgid "cast adds new qualifiers to function type"
  msgid "cast adds %q#v qualifier to function type"
  msgstr "typeomtvingning tilfÃ¸jer modifikationer til en funktionstype"
  
! #: c/c-typeck.cc:6687
  #, fuzzy
  #| msgid "cast discards qualifiers from pointer target type"
  msgid "cast discards %qv qualifier from pointer target type"
  msgstr "typeomtvingelse kasserer modifikationer pÃ¥ henvisningsmÃ¥lets type"
  
! #: c/c-typeck.cc:6722
  #, gcc-internal-format
  msgid "to be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualified"
  msgstr ""
  
! #: c/c-typeck.cc:6819
  #, gcc-internal-format
  msgid "cast specifies array type"
  msgstr "typetildelingen angiver en tabeltype"
  
! #: c/c-typeck.cc:6825
  #, gcc-internal-format
  msgid "cast specifies function type"
  msgstr "typetildelingen angiver en funktionstype"
  
! #: c/c-typeck.cc:6840
  #, gcc-internal-format
  msgid "ISO C forbids casting nonscalar to the same type"
  msgstr "ISO C forbyder omtvingelse af ikke-skalar til den samme type"
  
! #: c/c-typeck.cc:6844
  #, fuzzy, gcc-internal-format
  msgid "useless cast to type %qT"
  msgstr "skabelonsparameter '%T' benytter lokal type '%T'"
  
! #: c/c-typeck.cc:6864
  #, gcc-internal-format
  msgid "ISO C forbids casts to union type"
  msgstr "ISO C forbyder omtvingelse til uniontype"
  
! #: c/c-typeck.cc:6874
  #, gcc-internal-format
  msgid "cast to union type from type not present in union"
  msgstr "typetildeling til en uniontype fra en type der ikke findes i union'en"
  
! #: c/c-typeck.cc:6909
  #, fuzzy, gcc-internal-format
  #| msgid "comparison of distinct pointer types lacks a cast"
  msgid "cast to %qs address space pointer from disjoint generic address space pointer"
  msgstr "sammenligning med forskellige henvisningstyper mangler en typeomtvingelse"
  
! #: c/c-typeck.cc:6914
  #, fuzzy, gcc-internal-format
  #| msgid "comparison of distinct pointer types lacks a cast"
  msgid "cast to generic address space pointer from disjoint %qs address space pointer"
  msgstr "sammenligning med forskellige henvisningstyper mangler en typeomtvingelse"
  
! #: c/c-typeck.cc:6919
  #, fuzzy, gcc-internal-format
  #| msgid "comparison of distinct pointer types lacks a cast"
  msgid "cast to %qs address space pointer from disjoint %qs address space pointer"
  msgstr "sammenligning med forskellige henvisningstyper mangler en typeomtvingelse"
  
! #: c/c-typeck.cc:6952
  #, gcc-internal-format
  msgid "cast increases required alignment of target type"
  msgstr "typeomtvingelse forÃ¸ger den pÃ¥krÃ¦vne justering af mÃ¥ltypen"
  
! #: c/c-typeck.cc:6964
  #, gcc-internal-format
  msgid "cast from pointer to integer of different size"
  msgstr "typeomtvingelse fra henvisning til heltal af en anden stÃ¸rrelse"
  
! #: c/c-typeck.cc:6969
  #, gcc-internal-format
  msgid "cast from function call of type %qT to non-matching type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:6979 cp/typeck.cc:9499
  #, gcc-internal-format
  msgid "cast to pointer from integer of different size"
  msgstr "typeomtvingelse fra heltal til henvisning af en anden stÃ¸rrelse"
  
! #: c/c-typeck.cc:6993
  #, fuzzy, gcc-internal-format
  msgid "ISO C forbids conversion of function pointer to object pointer type"
  msgstr "ISO C forbyder sammenligning af 'void *' med funktionshenvisning"
  
! #: c/c-typeck.cc:7002
  #, fuzzy, gcc-internal-format
  msgid "ISO C forbids conversion of object pointer to function pointer type"
  msgstr "ISO C forbyder sammenligning af 'void *' med funktionshenvisning"
  
! #: c/c-typeck.cc:7012
  #, fuzzy, gcc-internal-format
  #| msgid "can%'t convert from incomplete type %qT to %qT"
  msgid "cast between incompatible function types from %qT to %qT"
  msgstr "kan ikke konvertere fra ufuldstÃ¦ndig type %qT til %qT"
  
! #: c/c-typeck.cc:7127
  #, gcc-internal-format
  msgid "defining a type in a cast is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7169
  #, fuzzy, gcc-internal-format
  #| msgid "assignment suppression"
  msgid "assignment to expression with array type"
  msgstr "tildelingsundertrykkelse"
  
! #: c/c-typeck.cc:7295
  #, gcc-internal-format
  msgid "enum conversion in assignment is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7497 c/c-typeck.cc:7516 c/c-typeck.cc:7573
  #, fuzzy, gcc-internal-format
  #| msgid "(near initialization for `%s')"
  msgid "(near initialization for %qs)"
  msgstr "(i nÃ¦rheden af klargÃ¸ringen af '%s')"
  
! #: c/c-typeck.cc:7589
  #, fuzzy, gcc-internal-format
  #| msgid "char-array initialized from wide string"
  msgid "array initialized from parenthesized string constant"
  msgstr "char-tabel fÃ¥r tildelt startvÃ¦rdi fra en bred streng"
  
! #: c/c-typeck.cc:7639
  #, fuzzy
  #| msgid "argument missing after %s"
  msgid "expected %e but argument is of type %e"
  msgstr "en parameter mangler efter %s"
  
! #: c/c-typeck.cc:7673
  #, gcc-internal-format
  msgid "%qD argument %d type is %qT where %qT is expected in a call to built-in function declared without prototype"
  msgstr ""
  
! #: c/c-typeck.cc:7676
  #, gcc-internal-format
  msgid "%qD argument %d promotes to %qT where %qT is expected in a call to built-in function declared without prototype"
  msgstr ""
  
! #: c/c-typeck.cc:7681
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "built-in %qD declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: c/c-typeck.cc:7738 c/c-typeck.cc:8646
  #, fuzzy
  #| msgid "  `%#D' declared here"
  msgid "%e declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: c/c-typeck.cc:7931
  #, gcc-internal-format
  msgid "enum conversion when passing argument %d of %qE is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7936
  #, gcc-internal-format
  msgid "expected %qT but argument is of type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:7940
  #, fuzzy, gcc-internal-format
  msgid "enum conversion from %qT to %qT in assignment is invalid in C++"
  msgstr "konvertering fra NaN til unsigned int"
  
! #: c/c-typeck.cc:7945
  #, fuzzy, gcc-internal-format
  #| msgid "cannot convert `%T' to `%T' in %s"
  msgid "enum conversion from %qT to %qT in initialization is invalid in C++"
  msgstr "kan ikke konvertere '%T' til '%T' i %s"
  
! #: c/c-typeck.cc:7950
  #, fuzzy, gcc-internal-format
  msgid "enum conversion from %qT to %qT in return is invalid in C++"
  msgstr "konvertering fra NaN til unsigned int"
  
! #: c/c-typeck.cc:7968
  #, fuzzy, gcc-internal-format
  #| msgid "conversion from `%#T' to `%#T'"
  msgid "implicit conversion from %qT to %qT"
  msgstr "konvertering fra '%#T' til '%#T'"
  
! #: c/c-typeck.cc:8150 c/c-typeck.cc:8549
  #, fuzzy
  #| msgid "%s makes qualified function pointer from unqualified"
  msgid "passing argument %d of %qE makes %q#v qualified function pointer from unqualified"
  msgstr "%s opretter en funktionshenvisning med modifikationer fra Ã©n uden"
  
! #: c/c-typeck.cc:8153 c/c-typeck.cc:8552
  #, fuzzy
  #| msgid "%s makes qualified function pointer from unqualified"
  msgid "assignment makes %q#v qualified function pointer from unqualified"
  msgstr "%s opretter en funktionshenvisning med modifikationer fra Ã©n uden"
  
! #: c/c-typeck.cc:8156 c/c-typeck.cc:8554
  #, fuzzy
  #| msgid "%s makes qualified function pointer from unqualified"
  msgid "initialization makes %q#v qualified function pointer from unqualified"
  msgstr "%s opretter en funktionshenvisning med modifikationer fra Ã©n uden"
  
! #: c/c-typeck.cc:8159 c/c-typeck.cc:8556
  #, fuzzy
  #| msgid "%s makes qualified function pointer from unqualified"
  msgid "return makes %q#v qualified function pointer from unqualified"
  msgstr "%s opretter en funktionshenvisning med modifikationer fra Ã©n uden"
  
! #: c/c-typeck.cc:8167 c/c-typeck.cc:8439 c/c-typeck.cc:8482
  #, fuzzy
  #| msgid "cast from `%T' to `%T' discards qualifiers from pointer target type"
  msgid "passing argument %d of %qE discards %qv qualifier from pointer target type"
  msgstr "typeomtvingning fra '%T' til '%T' kasserer modifikationer pÃ¥ henvisningsmÃ¥lets type"
  
! #: c/c-typeck.cc:8169 c/c-typeck.cc:8441 c/c-typeck.cc:8484
  #, fuzzy
  #| msgid "cast discards qualifiers from pointer target type"
  msgid "assignment discards %qv qualifier from pointer target type"
  msgstr "typeomtvingelse kasserer modifikationer pÃ¥ henvisningsmÃ¥lets type"
  
! #: c/c-typeck.cc:8171 c/c-typeck.cc:8443 c/c-typeck.cc:8486
  #, fuzzy
  #| msgid "cast discards qualifiers from pointer target type"
  msgid "initialization discards %qv qualifier from pointer target type"
  msgstr "typeomtvingelse kasserer modifikationer pÃ¥ henvisningsmÃ¥lets type"
  
! #: c/c-typeck.cc:8173 c/c-typeck.cc:8445 c/c-typeck.cc:8488
  #, fuzzy
  #| msgid "cast discards qualifiers from pointer target type"
  msgid "return discards %qv qualifier from pointer target type"
  msgstr "typeomtvingelse kasserer modifikationer pÃ¥ henvisningsmÃ¥lets type"
  
! #: c/c-typeck.cc:8182
  #, gcc-internal-format
  msgid "ISO C prohibits argument conversion to union type"
  msgstr "ISO C forbyder parameterkonvertering til uniontype"
  
! #: c/c-typeck.cc:8250
  #, fuzzy, gcc-internal-format
  msgid "request for implicit conversion from %qT to %qT not permitted in C++"
  msgstr "konvertering fra NaN til unsigned int"
  
! #: c/c-typeck.cc:8277
  #, fuzzy, gcc-internal-format
  #| msgid "passing arg %d of pointer to function"
  msgid "passing argument %d of %qE from pointer to non-enclosed address space"
  msgstr "videregiver den %d. parameter af henvisning til funktion"
  
! #: c/c-typeck.cc:8288
  #, fuzzy, gcc-internal-format
  #| msgid "cast from pointer to integer of different size"
  msgid "assignment from pointer to non-enclosed address space"
  msgstr "typeomtvingelse fra henvisning til heltal af en anden stÃ¸rrelse"
  
! #: c/c-typeck.cc:8299
  #, gcc-internal-format
  msgid "initialization from pointer to non-enclosed address space"
  msgstr ""
  
! #: c/c-typeck.cc:8309
  #, gcc-internal-format
  msgid "return from pointer to non-enclosed address space"
  msgstr ""
  
! #: c/c-typeck.cc:8325
  #, fuzzy, gcc-internal-format
  #| msgid "  expected a type, got `%E'"
  msgid "expected %qT but pointer is of type %qT"
  msgstr "  forventede en type, modtog '%E'"
  
! #: c/c-typeck.cc:8340
  #, fuzzy, gcc-internal-format
  #| msgid "function might be possible candidate for `%s' format attribute"
  msgid "argument %d of %qE might be a candidate for a format attribute"
  msgstr "funktion er en mulig kandidat til '%s'-formateringsegenskab"
  
! #: c/c-typeck.cc:8346
  #, fuzzy, gcc-internal-format
  #| msgid "Warn about functions which might be candidates for format attributes"
  msgid "assignment left-hand side might be a candidate for a format attribute"
  msgstr "Advar om funktioner som kan vÃ¦re kandidater til formateringsegenskaber"
  
! #: c/c-typeck.cc:8352
  #, fuzzy, gcc-internal-format
  #| msgid "function might be possible candidate for `%s' format attribute"
  msgid "initialization left-hand side might be a candidate for a format attribute"
  msgstr "funktion er en mulig kandidat til '%s'-formateringsegenskab"
  
! #: c/c-typeck.cc:8357 cp/typeck.cc:10675
  #, fuzzy, gcc-internal-format
  #| msgid "function might be possible candidate for `%s' format attribute"
  msgid "return type might be a candidate for a format attribute"
  msgstr "funktion er en mulig kandidat til '%s'-formateringsegenskab"
  
! #: c/c-typeck.cc:8381
  #, fuzzy, gcc-internal-format
  #| msgid "%s from incompatible pointer type"
  msgid "passing argument %d of %qE from incompatible scalar storage order"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: c/c-typeck.cc:8391
  #, fuzzy, gcc-internal-format
  #| msgid "%s from incompatible pointer type"
  msgid "assignment to %qT from pointer type %qT with incompatible scalar storage order"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: c/c-typeck.cc:8401
  #, fuzzy, gcc-internal-format
  #| msgid "%s from incompatible pointer type"
  msgid "initialization of %qT from pointer type %qT with incompatible scalar storage order"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: c/c-typeck.cc:8406
  #, fuzzy, gcc-internal-format
  #| msgid "return-statement with a value, in function declared with a void return type"
  msgid "returning %qT from pointer type with incompatible scalar storage order %qT"
  msgstr "return-sÃ¦tning med en vÃ¦rdi i en funktion der er erklÃ¦ret med en void returtype"
  
! #: c/c-typeck.cc:8456
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids %s between function pointer and `void *'"
  msgid "ISO C forbids passing argument %d of %qE between function pointer and %<void *%>"
  msgstr "ISO C forbyder %s mellem funktionshenvisning og 'void *'"
  
! #: c/c-typeck.cc:8459
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids %s between function pointer and `void *'"
  msgid "ISO C forbids assignment between function pointer and %<void *%>"
  msgstr "ISO C forbyder %s mellem funktionshenvisning og 'void *'"
  
! #: c/c-typeck.cc:8461
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids %s between function pointer and `void *'"
  msgid "ISO C forbids initialization between function pointer and %<void *%>"
  msgstr "ISO C forbyder %s mellem funktionshenvisning og 'void *'"
  
! #: c/c-typeck.cc:8463
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids %s between function pointer and `void *'"
  msgid "ISO C forbids return between function pointer and %<void *%>"
  msgstr "ISO C forbyder %s mellem funktionshenvisning og 'void *'"
  
! #: c/c-typeck.cc:8493
  #, gcc-internal-format
  msgid "array with qualifier on the element is not qualified before C23"
  msgstr ""
  
! #: c/c-typeck.cc:8511
  #, fuzzy, gcc-internal-format
  #| msgid "pointer targets in %s differ in signedness"
  msgid "pointer targets in passing argument %d of %qE differ in signedness"
  msgstr "fortegnene i henvisningsmÃ¥l i %s er forskellige"
  
! #: c/c-typeck.cc:8519
  #, fuzzy, gcc-internal-format
  #| msgid "pointer targets in %s differ in signedness"
  msgid "pointer targets in assignment from %qT to %qT differ in signedness"
  msgstr "fortegnene i henvisningsmÃ¥l i %s er forskellige"
  
! #: c/c-typeck.cc:8525
  #, fuzzy, gcc-internal-format
  #| msgid "pointer targets in %s differ in signedness"
  msgid "pointer targets in initialization of %qT from %qT differ in signedness"
  msgstr "fortegnene i henvisningsmÃ¥l i %s er forskellige"
  
! #: c/c-typeck.cc:8530
  #, fuzzy, gcc-internal-format
  #| msgid "pointer targets in %s differ in signedness"
  msgid "pointer targets in returning %qT from a function with return type %qT differ in signedness"
  msgstr "fortegnene i henvisningsmÃ¥l i %s er forskellige"
  
! #: c/c-typeck.cc:8577
  #, fuzzy, gcc-internal-format
  #| msgid "%s from incompatible pointer type"
  msgid "passing argument %d of %qE from incompatible pointer type"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: c/c-typeck.cc:8588
  #, fuzzy
  #| msgid "%s from incompatible pointer type"
  msgid "assignment to %e from pointer to %qD with incompatible type %e"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: c/c-typeck.cc:8594
  #, fuzzy
  #| msgid "%s from incompatible pointer type"
  msgid "assignment to %e from incompatible pointer type %e"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: c/c-typeck.cc:8603
  #, fuzzy
  #| msgid "%s from incompatible pointer type"
  msgid "initialization of %e from pointer to %qD with incompatible type %e"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: c/c-typeck.cc:8609
  #, fuzzy
  #| msgid "%s from incompatible pointer type"
  msgid "initialization of %e from incompatible pointer type %e"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: c/c-typeck.cc:8617
  #, fuzzy
  #| msgid "return-statement with a value, in function declared with a void return type"
  msgid "returning pointer to %qD of type %e from a function with incompatible type %e"
  msgstr "return-sÃ¦tning med en vÃ¦rdi i en funktion der er erklÃ¦ret med en void returtype"
  
! #: c/c-typeck.cc:8623
  #, fuzzy
  #| msgid "return-statement with a value, in function declared with a void return type"
  msgid "returning %e from a function with incompatible return type %e"
  msgstr "return-sÃ¦tning med en vÃ¦rdi i en funktion der er erklÃ¦ret med en void returtype"
  
! #: c/c-typeck.cc:8699
  #, fuzzy, gcc-internal-format
  #| msgid "%s makes pointer from integer without a cast"
  msgid "passing argument %d of %qE makes pointer from integer without a cast"
  msgstr "%s opretter en henvisningsvariabel ud fra et heltal uden en typeomtvingning"
  
! #: c/c-typeck.cc:8709
  #, fuzzy, gcc-internal-format
  #| msgid "%s makes pointer from integer without a cast"
  msgid "assignment to %qT from %qT makes pointer from integer without a cast"
  msgstr "%s opretter en henvisningsvariabel ud fra et heltal uden en typeomtvingning"
  
! #: c/c-typeck.cc:8715
  #, fuzzy, gcc-internal-format
  #| msgid "%s makes pointer from integer without a cast"
  msgid "initialization of %qT from %qT makes pointer from integer without a cast"
  msgstr "%s opretter en henvisningsvariabel ud fra et heltal uden en typeomtvingning"
  
! #: c/c-typeck.cc:8720
  #, fuzzy, gcc-internal-format
  #| msgid "%s makes pointer from integer without a cast"
  msgid "returning %qT from a function with return type %qT makes pointer from integer without a cast"
  msgstr "%s opretter en henvisningsvariabel ud fra et heltal uden en typeomtvingning"
  
! #: c/c-typeck.cc:8742
  #, fuzzy, gcc-internal-format
  #| msgid "%s makes integer from pointer without a cast"
  msgid "passing argument %d of %qE makes integer from pointer without a cast"
  msgstr "%s opretter et heltal ud fra en henvisningsvariabel uden en typeomtvingning"
  
! #: c/c-typeck.cc:8752
  #, fuzzy, gcc-internal-format
  #| msgid "%s makes integer from pointer without a cast"
  msgid "assignment to %qT from %qT makes integer from pointer without a cast"
  msgstr "%s opretter et heltal ud fra en henvisningsvariabel uden en typeomtvingning"
  
! #: c/c-typeck.cc:8758
  #, fuzzy, gcc-internal-format
  #| msgid "%s makes integer from pointer without a cast"
  msgid "initialization of %qT from %qT makes integer from pointer without a cast"
  msgstr "%s opretter et heltal ud fra en henvisningsvariabel uden en typeomtvingning"
  
! #: c/c-typeck.cc:8762
  #, fuzzy, gcc-internal-format
  #| msgid "%s makes integer from pointer without a cast"
  msgid "returning %qT from a function with return type %qT makes integer from pointer without a cast"
  msgstr "%s opretter et heltal ud fra en henvisningsvariabel uden en typeomtvingning"
  
! #: c/c-typeck.cc:8795
  #, fuzzy, gcc-internal-format
  #| msgid "incompatible type for argument %d of `%s'"
  msgid "incompatible type for argument %d of %qE"
  msgstr "typen af den %d. parameter i '%s' passer ikke"
  
! #: c/c-typeck.cc:8806
  #, fuzzy, gcc-internal-format
  #| msgid "incompatible types in assignment of `%T' to `%T'"
  msgid "incompatible types when assigning to type %qT from type %qT"
  msgstr "uforenelige typer i tildeling af '%T' til '%T'"
  
! #: c/c-typeck.cc:8817
  #, fuzzy, gcc-internal-format
  #| msgid "incompatible types in assignment of `%T' to `%T'"
  msgid "incompatible types when initializing type %qT using type %qT"
  msgstr "uforenelige typer i tildeling af '%T' til '%T'"
  
! #: c/c-typeck.cc:8827
  #, gcc-internal-format
  msgid "incompatible types when returning type %qT but %qT was expected"
  msgstr ""
  
  # 'automatic aggregate' betyder automatisk allokerede variabler, dvs.
  # ganske almindelige lokale variabler (kan evt. erklÃ¦res med 'auto')
! #: c/c-typeck.cc:8907
  #, gcc-internal-format
  msgid "traditional C rejects automatic aggregate initialization"
  msgstr "traditionel C forbyder klargÃ¸ring af auto-variabler af sammensatte typer"
  
! #: c/c-typeck.cc:9149
  #, gcc-internal-format
  msgid "%<constexpr%> pointer initializer is not null"
  msgstr ""
  
! #: c/c-typeck.cc:9166 c/c-typeck.cc:9176 c/c-typeck.cc:9238 c/c-typeck.cc:9391
! #, fuzzy, gcc-internal-format
! msgid "%<constexpr%> initializer not representable in type of object"
! msgstr "navnerum '%D' ikke tilladt i using-erklÃ¦ring"
! 
! #: c/c-typeck.cc:9172
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "%<constexpr%> integer initializer is not an integer constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: c/c-typeck.cc:9186
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "%<constexpr%> initializer is not an arithmetic constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: c/c-typeck.cc:9203
  #, gcc-internal-format
  msgid "%<constexpr%> initializer for a real type is of complex type"
  msgstr ""
  
! #: c/c-typeck.cc:9212
  #, gcc-internal-format
  msgid "%<constexpr%> initializer for a binary floating-point type is of decimal type"
  msgstr ""
  
! #: c/c-typeck.cc:9356 c/c-typeck.cc:10324 cp/typeck2.cc:1241
  #, gcc-internal-format
  msgid "initialization of a flexible array member"
  msgstr "klargÃ¸ring af fleksibelt tabelmedlem"
  
! #: c/c-typeck.cc:9372 cp/typeck2.cc:1258
  #, fuzzy, gcc-internal-format
  #| msgid "%s from incompatible pointer type"
  msgid "cannot initialize array of %qT from a string literal with type array of %qT"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: c/c-typeck.cc:9418
  #, fuzzy, gcc-internal-format
  #| msgid "initializer-string for array of chars is too long"
  msgid "initializer-string for array of %qT is too long (%wu chars into %wu available)"
  msgstr "startvÃ¦rdistrengen til char-tabellen er for lang"
  
! #: c/c-typeck.cc:9423
  #, fuzzy, gcc-internal-format
  #| msgid "initializer-string for array of chars is too long"
  msgid "initializer-string for array of %qT is too long for C++ (%wu chars into %wu available)"
  msgstr "startvÃ¦rdistrengen til char-tabellen er for lang"
  
! #: c/c-typeck.cc:9430
  #, gcc-internal-format
  msgid "initializer-string for array of %qT truncates NUL terminator but destination lacks %qs attribute (%wu chars into %wu available)"
  msgstr ""
  
! #: c/c-typeck.cc:9442
  #, fuzzy, gcc-internal-format
  #| msgid "char-array initialized from wide string"
  msgid "array of inappropriate type initialized from string constant"
  msgstr "char-tabel fÃ¥r tildelt startvÃ¦rdi fra en bred streng"
  
! #: c/c-typeck.cc:9510 cp/typeck.cc:2556
  #, gcc-internal-format
  msgid "invalid use of non-lvalue array"
  msgstr "ugyldig brug af en tabel der ikke kan optrÃ¦de som en venstrevÃ¦rdi"
  
! #: c/c-typeck.cc:9524 c/c-typeck.cc:9664 c/c-typeck.cc:10418
  #, gcc-internal-format
  msgid "invalid initializer"
  msgstr "ugyldig startvÃ¦rdi"
  
! #: c/c-typeck.cc:9536 c/c-typeck.cc:9560 c/c-typeck.cc:9563 c/c-typeck.cc:9571
! #: c/c-typeck.cc:9633 c/c-typeck.cc:11401 c/c-typeck.cc:11485
  #, gcc-internal-format
  msgid "initializer element is not constant"
  msgstr "startvÃ¦rdielement er ikke en konstant"
  
! #: c/c-typeck.cc:9545
  #, gcc-internal-format
  msgid "array initialized from non-constant array expression"
  msgstr "tabel fÃ¥r tildelt en startvÃ¦rdi fra et tabeludtryk der ikke er konstant"
  
! #: c/c-typeck.cc:9576 c/c-typeck.cc:9646 c/c-typeck.cc:11495
  #, fuzzy, gcc-internal-format
  #| msgid "initializer element is not constant"
  msgid "initializer element is not a constant expression"
  msgstr "startvÃ¦rdielement er ikke en konstant"
  
! #: c/c-typeck.cc:9598 cp/typeck2.cc:1340
  #, fuzzy, gcc-internal-format
  #| msgid "conversion from `%T' to `%T' discards qualifiers"
  msgid "conversion from %qT to %qT changes value from %qd to %qd"
  msgstr "konvertering fra '%T' til '%T' forkaster modifikationer"
  
! #: c/c-typeck.cc:9640 c/c-typeck.cc:11490
  #, gcc-internal-format
  msgid "initializer element is not computable at load time"
  msgstr "startvÃ¦rdielement kan ikke beregnes ved indlÃ¦sningstidspunktet"
  
! #: c/c-typeck.cc:9946 cp/decl.cc:7904
  #, fuzzy, gcc-internal-format
  msgid "opaque vector types cannot be initialized"
  msgstr "objekt af typen '%T' med variabel stÃ¸rrelse mÃ¥ ikke tildeles en startvÃ¦rdi"
  
! #: c/c-typeck.cc:10172
  #, gcc-internal-format
  msgid "extra brace group at end of initializer"
  msgstr "overskydende krÃ¸llede paranteser ved slutningen af startvÃ¦rdien"
  
! #: c/c-typeck.cc:10256
  #, gcc-internal-format
  msgid "braces around scalar initializer"
  msgstr "krÃ¸llede paranteser omkring skalarstartvÃ¦rdi"
  
  # RETMIG: eller er det fleksibel tabel-medlem
! #: c/c-typeck.cc:10326 c/c-typeck.cc:10330 c/c-typeck.cc:12093
! #: c/c-typeck.cc:12218 cp/typeck2.cc:1268 cp/typeck2.cc:1621
  #, gcc-internal-format
  msgid "initialization of flexible array member in a nested context"
  msgstr "klargÃ¸ring af fleksibelt tabelmedlem i en indlejret kontekst"
  
! #: c/c-typeck.cc:10367
  #, gcc-internal-format
  msgid "missing braces around initializer"
  msgstr "krÃ¸llede paranteser mangler omkring startvÃ¦rdien"
  
! #: c/c-typeck.cc:10390
  #, fuzzy, gcc-internal-format
  #| msgid "missing initializer for member `%D'"
  msgid "missing initializer for field %qD of %qT"
  msgstr "manglende startvÃ¦rdi for medlemmet '%D'"
  
! #: c/c-typeck.cc:10430
  #, gcc-internal-format
  msgid "extra elements in scalar initializer"
  msgstr "overskydende elementer i skalarstarvÃ¦rdi"
  
! #: c/c-typeck.cc:10552 c/c-typeck.cc:10634
  #, gcc-internal-format
  msgid "array index in non-array initializer"
  msgstr "tabelindeks i en startvÃ¦rdi der ikke er en tabel"
  
  # RETMIG: record?
! #: c/c-typeck.cc:10557 c/c-typeck.cc:10696
  #, gcc-internal-format
  msgid "field name not in record or union initializer"
  msgstr "feltnavn ikke i struktur- eller union-startvÃ¦rdi"
  
! #: c/c-typeck.cc:10607
  #, fuzzy, gcc-internal-format
  #| msgid "array index in initializer exceeds array bounds"
  msgid "array index in initializer not of integer type"
  msgstr "tabelindeks i startvÃ¦rdi overskrider tabelgrÃ¦nser"
  
! #: c/c-typeck.cc:10616 c/c-typeck.cc:10625
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "array index in initializer is not an integer constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: c/c-typeck.cc:10630 c/c-typeck.cc:10632
  #, gcc-internal-format
  msgid "nonconstant array index in initializer"
  msgstr "tabelindekset i startvÃ¦rdien er ikke en konstant"
  
! #: c/c-typeck.cc:10636 c/c-typeck.cc:10639
  #, gcc-internal-format
  msgid "array index in initializer exceeds array bounds"
  msgstr "tabelindeks i startvÃ¦rdi overskrider tabelgrÃ¦nser"
  
! #: c/c-typeck.cc:10658
  #, gcc-internal-format
  msgid "empty index range in initializer"
  msgstr "tomt indeksinterval i startvÃ¦rdi"
  
! #: c/c-typeck.cc:10667
  #, gcc-internal-format
  msgid "array index range in initializer exceeds array bounds"
  msgstr "tabelindeksinterval i startvÃ¦rdi overskrider tabelgrÃ¦nser"
  
! #: c/c-typeck.cc:10801 c/c-typeck.cc:10856 c/c-typeck.cc:10897
! #: c/c-typeck.cc:10957 c/c-typeck.cc:11004 c/c-typeck.cc:11592
  #, fuzzy, gcc-internal-format
  #| msgid "initialized field with side-effects overwritten"
  msgid "initialized field overwritten"
  msgstr "klargjort felt med bivirkninger overskrevet"
  
! #: c/c-typeck.cc:10892 c/c-typeck.cc:10953 c/c-typeck.cc:11000
! #: c/c-typeck.cc:11589
  #, gcc-internal-format
  msgid "initialized field with side-effects overwritten"
  msgstr "klargjort felt med bivirkninger overskrevet"
  
! #: c/c-typeck.cc:11517
  #, gcc-internal-format
  msgid "enum conversion in initialization is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:11963
  #, fuzzy, gcc-internal-format
  #| msgid "excess elements in union initializer"
  msgid "excess elements in %qT initializer"
  msgstr "for mange elementer i union-startvÃ¦rdi"
  
! #: c/c-typeck.cc:11975 c/c-typeck.cc:12052
  #, gcc-internal-format
  msgid "excess elements in struct initializer"
  msgstr "for mange elementer i struct-startvÃ¦rdi"
  
! #: c/c-typeck.cc:11996
  #, gcc-internal-format
  msgid "positional initialization of field in %<struct%> declared with %<designated_init%> attribute"
  msgstr ""
  
! #: c/c-typeck.cc:12067 c/c-typeck.cc:12193 cp/typeck2.cc:1245
  #, gcc-internal-format
  msgid "non-static initialization of a flexible array member"
  msgstr "ikke-statisk klargÃ¸ring af fleksibelt tabelmedlem"
  
! #: c/c-typeck.cc:12163
  #, gcc-internal-format
  msgid "excess elements in union initializer"
  msgstr "for mange elementer i union-startvÃ¦rdi"
  
! #: c/c-typeck.cc:12185
  #, gcc-internal-format
  msgid "traditional C rejects initialization of unions"
  msgstr "traditionel C forbyder tildeling af startvÃ¦rdi til unioner"
  
! #: c/c-typeck.cc:12284
  #, gcc-internal-format
  msgid "excess elements in array initializer"
  msgstr "for mange elementer i tabelstartvÃ¦rdi"
  
! #: c/c-typeck.cc:12361 c/c-typeck.cc:12363
  #, gcc-internal-format
  msgid "excess elements in vector initializer"
  msgstr "for mange elementer i vektorstartvÃ¦rdi"
  
! #: c/c-typeck.cc:12397
  #, gcc-internal-format
  msgid "excess elements in scalar initializer"
  msgstr "for mange elementer i skalarstartvÃ¦rdi"
  
! #: c/c-typeck.cc:12564 c/c-typeck.cc:12640 cp/semantics.cc:2346
  #: cp/semantics.cc:2455
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not allow extra `;' outside of a function"
  msgid "constraint allows registers outside of a function"
  msgstr "ISO C tillader ikke ekstra ';' uden for funktioner"
  
! #: c/c-typeck.cc:12576 cp/semantics.cc:2358
  #, fuzzy, gcc-internal-format
  #| msgid "variable-size type declared outside of any function"
  msgid "side-effects in output operand outside of a function"
  msgstr "en type med en variabel stÃ¸rrelse er erklÃ¦ret uden for en funktion"
  
! #: c/c-typeck.cc:12587 cp/semantics.cc:2374
  #, fuzzy, gcc-internal-format
  #| msgid "output operand %d must use %<&%> constraint"
  msgid "output operand outside of a function is not constant"
  msgstr "uddataoperand %d skal bruge %<&%>-begrÃ¦nsningen"
  
! #: c/c-typeck.cc:12595 c/c-typeck.cc:12685 cp/semantics.cc:2385
  #: cp/semantics.cc:2518
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' cannot be used as a function"
  msgid "%<-%> modifier used inside of a function"
  msgstr "'%E' kan ikke bruges som en funktion"
  
! #: c/c-typeck.cc:12653 cp/semantics.cc:2468
  #, fuzzy, gcc-internal-format
  msgid "%<:%> constraint operand is not address of a function or non-automatic variable"
  msgstr "'%s'-egenskaben kan kun anvendes sammen med funktioner"
  
! #: c/c-typeck.cc:12666 cp/semantics.cc:2481
  #, fuzzy, gcc-internal-format
  #| msgid "variable-size type declared outside of any function"
  msgid "side-effects in input operand outside of a function"
  msgstr "en type med en variabel stÃ¸rrelse er erklÃ¦ret uden for en funktion"
  
! #: c/c-typeck.cc:12677 cp/semantics.cc:2496 cp/semantics.cc:2510
  #, fuzzy, gcc-internal-format
  #| msgid "%J'%D' is not defined outside of function scope"
  msgid "input operand outside of a function is not constant"
  msgstr "%J'%D' er ikke defineret uden for funktionsvirkefelt"
  
! #: c/c-typeck.cc:12729
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids `goto *expr;'"
  msgid "ISO C forbids %<goto *expr;%>"
  msgstr "ISO C forbyder 'goto *udtryk;'"
  
! #: c/c-typeck.cc:12735
  #, fuzzy, gcc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "computed goto must be pointer type"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: c/c-typeck.cc:12765 c/gimple-parser.cc:2648 cp/typeck.cc:11275
  #, fuzzy, gcc-internal-format
  #| msgid "function declared `noreturn' has a `return' statement"
  msgid "function declared %<noreturn%> has a %<return%> statement"
  msgstr "funktion der er erklÃ¦ret 'noreturn' har en 'return'-sÃ¦tning"
  
! #: c/c-typeck.cc:12794
  #, fuzzy, gcc-internal-format
  #| msgid "`return' with no value, in function returning non-void"
  msgid "%<return%> with no value, in function returning non-void"
  msgstr "'return' uden nogen vÃ¦rdi i en funktion der ikke returnerer void"
  
! #: c/c-typeck.cc:12807 c/gimple-parser.cc:2658
  #, fuzzy, gcc-internal-format
  #| msgid "`return' with a value, in function returning void"
  msgid "%<return%> with a value, in function returning void"
  msgstr "'return' med en vÃ¦rdi i en funktion der returnerer void"
  
! #: c/c-typeck.cc:12810
  #, fuzzy, gcc-internal-format
  #| msgid "`return' with a value, in function returning void"
  msgid "ISO C forbids %<return%> with expression, in function returning void"
  msgstr "'return' med en vÃ¦rdi i en funktion der returnerer void"
  
! #: c/c-typeck.cc:12892
  #, fuzzy, gcc-internal-format
  #| msgid "function returns address of local variable"
  msgid "function returns address of label"
  msgstr "funktion returnerer adressen pÃ¥ en lokal variabel"
  
! #: c/c-typeck.cc:12983 cp/semantics.cc:1921
  #, gcc-internal-format
  msgid "switch quantity not an integer"
  msgstr "switch-stÃ¸rrelsen er ikke et heltal"
  
! #: c/c-typeck.cc:13008
  #, fuzzy, gcc-internal-format
  #| msgid "`long' switch expression not converted to `int' in ISO C"
  msgid "%<long%> switch expression not converted to %<int%> in ISO C"
  msgstr "'long'-udtryk i switch konverteres ikke til 'int' i ISO C"
  
! #: c/c-typeck.cc:13046 c/c-typeck.cc:13054
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "case label is not an integer constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: c/c-typeck.cc:13060 cp/parser.cc:13523
  #, gcc-internal-format
  msgid "case label not within a switch statement"
  msgstr "case-etiket befinder sig ikke inden i en switch-sÃ¦tning"
  
! #: c/c-typeck.cc:13062
  #, fuzzy, gcc-internal-format
  #| msgid "`default' label not within a switch statement"
  msgid "%<default%> label not within a switch statement"
  msgstr "'default'-etiket befinder sig ikke inden i en switch-sÃ¦tning"
  
! #: c/c-typeck.cc:13138 cp/parser.cc:15293
  #, gcc-internal-format
  msgid "break statement not within loop or switch"
  msgstr "break-sÃ¦tning befinder sig ikke i en lÃ¸kke- eller switch-konstruktion"
  
! #: c/c-typeck.cc:13141 c/c-typeck.cc:13161 cp/decl.cc:4105 cp/parser.cc:15303
! #: cp/parser.cc:15324
  #, gcc-internal-format
  msgid "invalid exit from OpenMP structured block"
  msgstr ""
  
! #: c/c-typeck.cc:13144 cp/parser.cc:15306
  #, fuzzy, gcc-internal-format
  #| msgid "break statement not within loop or switch"
  msgid "break statement used with OpenMP for loop"
  msgstr "break-sÃ¦tning befinder sig ikke i en lÃ¸kke- eller switch-konstruktion"
  
! #: c/c-typeck.cc:13158 cp/parser.cc:15316
  #, gcc-internal-format
  msgid "continue statement not within a loop"
  msgstr "continue-sÃ¦tning befinder sig ikke i en lÃ¸kke"
  
! #: c/c-typeck.cc:13208 cp/cp-gimplify.cc:277
  #, fuzzy, gcc-internal-format
  #| msgid "%Hstatement with no effect"
  msgid "statement with no effect"
  msgstr "%HsÃ¦tning uden nogen virkning"
  
! #: c/c-typeck.cc:13252
  #, gcc-internal-format
  msgid "expression statement has incomplete type"
  msgstr "udtrykket er af en ufuldstÃ¦ndig type"
  
! #: c/c-typeck.cc:13543
  #, gcc-internal-format
  msgid "the comparison will always evaluate as %<false%> for the pointer operand in %qE must not be NULL"
  msgstr ""
  
! #: c/c-typeck.cc:13548
  #, gcc-internal-format
  msgid "the comparison will always evaluate as %<true%> for the pointer operand in %qE must not be NULL"
  msgstr ""
  
! #: c/c-typeck.cc:13566 c/c-typeck.cc:13604
  #, fuzzy, gcc-internal-format
  msgid "the comparison will always evaluate as %<false%> for the address of %qE will never be NULL"
  msgstr "adressen af '%D' vil altid vÃ¦re 'true'"
  
! #: c/c-typeck.cc:13571 c/c-typeck.cc:13609
  #, fuzzy, gcc-internal-format
  msgid "the comparison will always evaluate as %<true%> for the address of %qE will never be NULL"
  msgstr "adressen af '%D' vil altid vÃ¦re 'true'"
  
! #: c/c-typeck.cc:14201 c/c-typeck.cc:14365 cp/typeck.cc:6279
  #, fuzzy, gcc-internal-format
  #| msgid "operands to ?: have different types"
  msgid "comparing vectors with different element types"
  msgstr "operander til ?: har forskellige typer"
  
! #: c/c-typeck.cc:14209 c/c-typeck.cc:14373 cp/typeck.cc:6293
  #, fuzzy, gcc-internal-format
  #| msgid "operand constraints for `asm' differ in number of alternatives"
  msgid "comparing vectors with different number of elements"
  msgstr "operandbegrÃ¦nsninger til 'asm' har forskellige antal alternativer"
  
! #: c/c-typeck.cc:14224 c/c-typeck.cc:14388 cp/typeck.cc:6311
  #, fuzzy, gcc-internal-format
  #| msgid "comparison between types `%#T' and `%#T'"
  msgid "comparison between types %qT and %qT"
  msgstr "sammenligning mellem typerne '%#T' og '%#T'"
  
! #: c/c-typeck.cc:14234 c/c-typeck.cc:14398 cp/typeck.cc:6328
  #, gcc-internal-format
  msgid "could not find an integer type of the same size as %qT"
  msgstr ""
  
! #: c/c-typeck.cc:14248 cp/typeck.cc:5954
  #, fuzzy, gcc-internal-format
  #| msgid "comparing floating point with == or != is unsafe"
  msgid "comparing floating-point with %<==%> or %<!=%> is unsafe"
  msgstr "sammenligning af kommatal med == eller != er ikke sikkert"
  
! #: c/c-typeck.cc:14287 c/c-typeck.cc:14439
  #, fuzzy, gcc-internal-format
  #| msgid "comparison of distinct pointer types lacks a cast"
  msgid "comparison of pointers to disjoint address spaces"
  msgstr "sammenligning med forskellige henvisningstyper mangler en typeomtvingelse"
  
! #: c/c-typeck.cc:14294 c/c-typeck.cc:14300
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids comparison of `void *' with function pointer"
  msgid "ISO C forbids comparison of %<void *%> with function pointer"
  msgstr "ISO C forbyder sammenligning af 'void *' med funktionshenvisning"
  
! #: c/c-typeck.cc:14307 c/c-typeck.cc:14449
  #, gcc-internal-format
  msgid "comparison of distinct pointer types lacks a cast"
  msgstr "sammenligning med forskellige henvisningstyper mangler en typeomtvingelse"
  
! #: c/c-typeck.cc:14320 c/c-typeck.cc:14326 c/c-typeck.cc:14476
! #: c/c-typeck.cc:14482
  #, gcc-internal-format
  msgid "comparison between pointer and integer"
  msgstr "sammenligning mellem henvisningsvariabel og heltal"
  
! #: c/c-typeck.cc:14427
  #, gcc-internal-format
  msgid "comparison of complete and incomplete pointers"
  msgstr "sammenligning mellem en fuldstÃ¦ndig og ufuldstÃ¦ndig henvisning"
  
! #: c/c-typeck.cc:14429
  #, gcc-internal-format
  msgid "ISO C forbids ordered comparisons of pointers to functions"
  msgstr "ISO C forbyder ordnede sammenligninger af henvisninger til funktioner"
  
! #: c/c-typeck.cc:14434
  #, fuzzy, gcc-internal-format
  #| msgid "ordered comparison of pointer with integer zero"
  msgid "ordered comparison of pointer with null pointer"
  msgstr "ordnet sammenligning af henvisning med heltallet nul"
  
! #: c/c-typeck.cc:14457 c/c-typeck.cc:14460 c/c-typeck.cc:14467
! #: c/c-typeck.cc:14470
  #, gcc-internal-format
  msgid "ordered comparison of pointer with integer zero"
  msgstr "ordnet sammenligning af henvisning med heltallet nul"
  
! #: c/c-typeck.cc:14547
  #, gcc-internal-format
  msgid "implicit conversion from %qT to %qT to match other operand of binary expression"
  msgstr ""
  
! #: c/c-typeck.cc:14865
  #, fuzzy, gcc-internal-format
  #| msgid "array type value used where scalar is required"
  msgid "used array that cannot be converted to pointer where scalar is required"
  msgstr "vÃ¦rdi af tabeltype angivet hvor skalar er pÃ¥krÃ¦vet"
  
! #: c/c-typeck.cc:14869
  #, fuzzy, gcc-internal-format
  #| msgid "struct type value used where scalar is required"
  msgid "used struct type value where scalar is required"
  msgstr "vÃ¦rdi af struct-type angivet hvor skalar er pÃ¥krÃ¦vet"
  
! #: c/c-typeck.cc:14873
  #, fuzzy, gcc-internal-format
  #| msgid "union type value used where scalar is required"
  msgid "used union type value where scalar is required"
  msgstr "vÃ¦rdi af union-type angivet hvor skalar er pÃ¥krÃ¦vet"
  
! #: c/c-typeck.cc:14889
  #, fuzzy, gcc-internal-format
  #| msgid "struct type value used where scalar is required"
  msgid "used vector type where scalar is required"
  msgstr "vÃ¦rdi af struct-type angivet hvor skalar er pÃ¥krÃ¦vet"
  
! #: c/c-typeck.cc:15092 cp/semantics.cc:12069
  #, gcc-internal-format
  msgid "%<#pragma omp cancel%> must specify one of %<parallel%>, %<for%>, %<sections%> or %<taskgroup%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:15103 c/c-typeck.cc:15113 cp/semantics.cc:12080
  #: cp/semantics.cc:12090
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "expected %<cancel%> %<if%> clause modifier"
  msgstr "for mange inddatafiler"
  
! #: c/c-typeck.cc:15148 cp/semantics.cc:12125
  #, gcc-internal-format
  msgid "%<#pragma omp cancellation point%> must specify one of %<parallel%>, %<for%>, %<sections%> or %<taskgroup%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:15216 cp/semantics.cc:5948 cp/semantics.cc:9059
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not a valid class name"
  msgid "%qD is not a variable in %qs clause"
  msgstr "'%s' er et ugyldigt klassenavn"
  
! #: c/c-typeck.cc:15220 c/c-typeck.cc:17037 cp/semantics.cc:5952
  #: cp/semantics.cc:9063
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not a valid class name"
  msgid "%qE is not a variable in %qs clause"
  msgstr "'%s' er et ugyldigt klassenavn"
  
! #: c/c-typeck.cc:15228
  #, fuzzy, gcc-internal-format
  #| msgid "bit-field `%s' has invalid type"
  msgid "%<_Atomic%> %qD in %qs clause"
  msgstr "bitfeltet '%s' er af en ufuldstÃ¦ndig type"
  
! #: c/c-typeck.cc:15238 c/c-typeck.cc:17044 c/c-typeck.cc:17198
  #: cp/semantics.cc:5961 cp/semantics.cc:9070 cp/semantics.cc:9259
  #, gcc-internal-format
  msgid "%qD is threadprivate variable in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15275 cp/semantics.cc:5995
  #, fuzzy, gcc-internal-format
  #| msgid "size in array new must have integral type"
  msgid "low bound %qE of array section does not have integral type"
  msgstr "stÃ¸rrelse i tabel-new skal vÃ¦re en heltalstype"
  
! #: c/c-typeck.cc:15282 cp/semantics.cc:6002
  #, fuzzy, gcc-internal-format
  #| msgid "size in array new must have integral type"
  msgid "length %qE of array section does not have integral type"
  msgstr "stÃ¸rrelse i tabel-new skal vÃ¦re en heltalstype"
  
! #: c/c-typeck.cc:15305 cp/semantics.cc:6035
  #, fuzzy, gcc-internal-format
  #| msgid "Unexpected EOF while reading source file %s.\n"
  msgid "expected single pointer in %qs clause"
  msgstr "StÃ¸dt pÃ¥ slutningen af kildefilen %s tidligere end forventet.\n"
  
! #: c/c-typeck.cc:15323 c/c-typeck.cc:15390 c/c-typeck.cc:15683
  #: cp/semantics.cc:6053 cp/semantics.cc:6120
  #, fuzzy, gcc-internal-format
  msgid "zero length array section in %qs clause"
  msgstr "Intern oversÃ¦tterfejl i %s ved %s:%d."
  
! #: c/c-typeck.cc:15342 cp/semantics.cc:6072
  #, gcc-internal-format
  msgid "for unknown bound array type length expression must be specified"
  msgstr ""
  
! #: c/c-typeck.cc:15350 cp/semantics.cc:6080
  #, gcc-internal-format
  msgid "negative low bound in array section in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15359 c/c-typeck.cc:15483 cp/semantics.cc:6089
  #: cp/semantics.cc:6213
  #, gcc-internal-format
  msgid "negative length in array section in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15376 cp/semantics.cc:6106
  #, gcc-internal-format
  msgid "low bound %qE above array section size in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15419 cp/semantics.cc:6149
  #, gcc-internal-format
  msgid "length %qE above array section size in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15434 cp/semantics.cc:6164
  #, gcc-internal-format
  msgid "high bound %qE above array section size in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15471 cp/semantics.cc:6201
  #, fuzzy, gcc-internal-format
  #| msgid "predicate must be an identifier"
  msgid "for array function parameter length expression must be specified"
  msgstr "udsagn skal vÃ¦re et kaldenavn"
  
! #: c/c-typeck.cc:15475 cp/semantics.cc:6205
  #, gcc-internal-format
  msgid "for pointer type length expression must be specified"
  msgstr ""
  
! #: c/c-typeck.cc:15503 c/c-typeck.cc:15622 cp/semantics.cc:6232
  #: cp/semantics.cc:6368
  #, gcc-internal-format
  msgid "array section is not contiguous in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15513 cp/semantics.cc:6242
  #, fuzzy, gcc-internal-format
  #| msgid "type to vector delete is neither pointer or array type"
  msgid "%qE does not have pointer or array type"
  msgstr "variablen til tabel-delete er hverken af en henvisnings- eller en tabeltype"
  
! #: c/c-typeck.cc:15889 cp/semantics.cc:7305
  #, fuzzy, gcc-internal-format
  #| msgid "throwing NULL, which has integral, not pointer type"
  msgid "iterator %qD has neither integral nor pointer type"
  msgstr "kaster NULL som har en heltals-, ikke en henvisningstype"
  
! #: c/c-typeck.cc:15896
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids qualified function types"
  msgid "iterator %qD has %<_Atomic%> qualified type"
  msgstr "ISO C forbyder funktionsreturtype med modifikationer"
  
! #: c/c-typeck.cc:15902 cp/semantics.cc:7312
  #, fuzzy, gcc-internal-format
  #| msgid "parameter has incomplete type"
  msgid "iterator %qD has const qualified type"
  msgstr "parameteren er af en ufuldstÃ¦ndig type"
  
! #: c/c-typeck.cc:15915 cp/semantics.cc:7328
  #, fuzzy, gcc-internal-format
  #| msgid "bit-field `%#D' with non-integral type"
  msgid "iterator step with non-integral type"
  msgstr "bitfelt '%#D' med en ikke-heltalstype"
  
! #: c/c-typeck.cc:15935 cp/semantics.cc:7364
  #, gcc-internal-format
  msgid "iterator %qD has zero step"
  msgstr ""
  
! #: c/c-typeck.cc:15962
  #, gcc-internal-format
  msgid "type of iterator %qD refers to outer iterator %qD"
  msgstr ""
  
! #: c/c-typeck.cc:15969 cp/semantics.cc:7398
  #, fuzzy, gcc-internal-format
  #| msgid "invalid vector type for attribute `%s'"
  msgid "begin expression refers to outer iterator %qD"
  msgstr "ugyldig vektortype for egenskaben '%s'"
  
! #: c/c-typeck.cc:15975 cp/semantics.cc:7404
  #, fuzzy, gcc-internal-format
  #| msgid "invalid vector type for attribute `%s'"
  msgid "end expression refers to outer iterator %qD"
  msgstr "ugyldig vektortype for egenskaben '%s'"
  
! #: c/c-typeck.cc:15981 cp/semantics.cc:7410
  #, fuzzy, gcc-internal-format
  #| msgid "invalid vector type for attribute `%s'"
  msgid "step expression refers to outer iterator %qD"
  msgstr "ugyldig vektortype for egenskaben '%s'"
  
! #: c/c-typeck.cc:16018 cp/semantics.cc:7458
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected operand"
  msgid "expected pointer in %qs clause"
  msgstr "uventet operand"
  
! #: c/c-typeck.cc:16121 cp/semantics.cc:7624
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids qualified function types"
  msgid "%<inscan%> and non-%<inscan%> %<reduction%> clauses on the same construct"
  msgstr "ISO C forbyder funktionsreturtype med modifikationer"
  
! #: c/c-typeck.cc:16143 cp/semantics.cc:7644
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids qualified function types"
  msgid "%<inscan%> %<reduction%> clause with array section"
  msgstr "ISO C forbyder funktionsreturtype med modifikationer"
  
! #: c/c-typeck.cc:16169 c/c-typeck.cc:16179
  #, fuzzy, gcc-internal-format
  #| msgid "type to vector delete is neither pointer or array type"
  msgid "%qD in %<reduction%> clause is a zero size array"
  msgstr "variablen til tabel-delete er hverken af en henvisnings- eller en tabeltype"
  
! #: c/c-typeck.cc:16199
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids qualified function types"
  msgid "%<_Atomic%> %qE in %<reduction%> clause"
  msgstr "ISO C forbyder funktionsreturtype med modifikationer"
  
! #: c/c-typeck.cc:16211
  #, fuzzy, gcc-internal-format
  #| msgid "bit-field `%s' has invalid type"
  msgid "zero sized type %qT in %qs clause"
  msgstr "bitfeltet '%s' er af en ufuldstÃ¦ndig type"
  
! #: c/c-typeck.cc:16219
  #, fuzzy, gcc-internal-format
  #| msgid "bit-field `%s' has invalid type"
  msgid "variable sized type %qT in %qs clause"
  msgstr "bitfeltet '%s' er af en ufuldstÃ¦ndig type"
  
! #: c/c-typeck.cc:16263
  #, fuzzy, gcc-internal-format
  #| msgid "invalid return type for function `%#D'"
  msgid "%qE has invalid type for %<reduction(%s)%>"
  msgstr "ugyldig returtype for funktionen '%#D'"
  
! #: c/c-typeck.cc:16272 cp/semantics.cc:7197
  #, fuzzy, gcc-internal-format
  msgid "user defined reduction not found for %qE"
  msgstr "brug af '%D' er tvetydigt"
  
! #: c/c-typeck.cc:16360
  #, gcc-internal-format
  msgid "variable length element type in array %<reduction%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16378 c/c-typeck.cc:17292 cp/semantics.cc:9943
  #, gcc-internal-format
  msgid "%<nowait%> clause must not be used together with %<copyprivate%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16390 cp/semantics.cc:10011
  #, gcc-internal-format
  msgid "%qE must be %<threadprivate%> for %<copyin%>"
  msgstr ""
  
! #: c/c-typeck.cc:16405 cp/semantics.cc:7687
  #, gcc-internal-format
  msgid "modifier should not be specified in %<linear%> clause on %<simd%> or %<for%> constructs when not using OpenMP 5.2 modifiers"
  msgstr ""
  
! #: c/c-typeck.cc:16414
  #, gcc-internal-format
  msgid "linear clause applied to non-integral non-pointer variable with type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:16422
  #, gcc-internal-format
  msgid "%<_Atomic%> %qD in %<linear%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16441 cp/semantics.cc:7771
  #, fuzzy, gcc-internal-format
  #| msgid "type to vector delete is neither pointer or array type"
  msgid "%<linear%> clause step %qE is neither constant nor a parameter"
  msgstr "variablen til tabel-delete er hverken af en henvisnings- eller en tabeltype"
  
! #: c/c-typeck.cc:16471 c/c-typeck.cc:17192 c/c-typeck.cc:17463
  #: cp/semantics.cc:7858 cp/semantics.cc:9253 cp/semantics.cc:9644
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not a valid class name"
  msgid "%qE is not a variable in clause %qs"
  msgstr "'%s' er et ugyldigt klassenavn"
  
! #: c/c-typeck.cc:16488 cp/semantics.cc:7876
  #, fuzzy, gcc-internal-format
  #| msgid "%qD appears more than once in motion clauses"
  msgid "%qD appears more than once in data-sharing clauses"
  msgstr "%qD fremgÃ¥r mere end en gang i motion-klausuller"
  
! #: c/c-typeck.cc:16499 cp/semantics.cc:7887
  #, gcc-internal-format
  msgid "%qD appears more than once in reduction clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16513 c/c-typeck.cc:16583 c/c-typeck.cc:16618
  #, gcc-internal-format
  msgid "%qE appears more than once in data clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16523 c/c-typeck.cc:16591 c/c-typeck.cc:16940
! #: c/c-typeck.cc:17092 c/c-typeck.cc:17100 c/c-typeck.cc:17116
! #: c/c-typeck.cc:17125 c/c-typeck.cc:17133 cp/semantics.cc:7901
  #: cp/semantics.cc:7911 cp/semantics.cc:8004 cp/semantics.cc:8012
  #: cp/semantics.cc:8059 cp/semantics.cc:8941 cp/semantics.cc:9131
  #: cp/semantics.cc:9139 cp/semantics.cc:9159 cp/semantics.cc:9168
*************** msgstr ""
*** 56578,56854 ****
  msgid "%qD appears more than once in data clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16509 c/c-typeck.cc:16580 c/c-typeck.cc:17119
  #: cp/semantics.cc:7914 cp/semantics.cc:8018 cp/semantics.cc:9179
  #, gcc-internal-format
  msgid "%qD appears both in data and map clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16554 cp/semantics.cc:7991
  #, fuzzy, gcc-internal-format
  #| msgid "instance variable `%s' is declared private"
  msgid "%qE is not a variable in clause %<firstprivate%>"
  msgstr "instansvariablen '%s' er erklÃ¦ret privat"
  
! #: c/c-typeck.cc:16594 cp/semantics.cc:8051
  #, fuzzy, gcc-internal-format
  #| msgid "instance variable `%s' is declared private"
  msgid "%qE is not a variable in clause %<lastprivate%>"
  msgstr "instansvariablen '%s' er erklÃ¦ret privat"
  
! #: c/c-typeck.cc:16613 cp/semantics.cc:8473
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not a valid class name"
  msgid "%qE is not a variable in %<aligned%> clause"
  msgstr "'%s' er et ugyldigt klassenavn"
  
! #: c/c-typeck.cc:16620
  #, fuzzy, gcc-internal-format
  #| msgid "type to vector delete is neither pointer or array type"
  msgid "%qE in %<aligned%> clause is neither a pointer nor an array"
  msgstr "variablen til tabel-delete er hverken af en henvisnings- eller en tabeltype"
  
! #: c/c-typeck.cc:16627
  #, gcc-internal-format
  msgid "%<_Atomic%> %qD in %<aligned%> clause"
  msgstr "%<_Atomic%> %qD i %<aligned%>-klausul"
  
! #: c/c-typeck.cc:16634
  #, gcc-internal-format
  msgid "%qE appears more than once in %<aligned%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16647 cp/semantics.cc:8542
  #, fuzzy, gcc-internal-format
  #| msgid "%qE is not a variable in %<depend%> clause"
  msgid "%qE is not a variable in %<nontemporal%> clause"
  msgstr "%qE er ikke en variable i %<depend%>-klausul"
  
! #: c/c-typeck.cc:16653
  #, fuzzy, gcc-internal-format
  #| msgid "%qD appears more than once in map clauses"
  msgid "%qE appears more than once in %<nontemporal%> clauses"
  msgstr "%qD fremgÃ¥r mere end en gang i map-klausuller"
  
! #: c/c-typeck.cc:16666 cp/semantics.cc:8581
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not a valid class name"
  msgid "%qE is not a variable in %<allocate%> clause"
  msgstr "'%s' er et ugyldigt klassenavn"
  
! #: c/c-typeck.cc:16672
  #, fuzzy, gcc-internal-format
  #| msgid "%qD appears more than once in map clauses"
  msgid "%qE appears more than once in %<allocate%> clauses"
  msgstr "%qD fremgÃ¥r mere end en gang i map-klausuller"
  
! #: c/c-typeck.cc:16744 cp/semantics.cc:8709
  #, gcc-internal-format
  msgid "%<depend%> clause with %<depobj%> dependence type on array section"
  msgstr ""
  
! #: c/c-typeck.cc:16759 cp/semantics.cc:8724
  #, gcc-internal-format
  msgid "%<omp_all_memory%> used with %<depend%> kind other than %<out%> or %<inout%>"
  msgstr ""
  
! #: c/c-typeck.cc:16767 cp/semantics.cc:8742
  #, fuzzy, gcc-internal-format
  #| msgid "%qE is not a variable in %<depend%> clause"
  msgid "%qE is not lvalue expression nor array section in %qs clause"
  msgstr "%qE er ikke en variable i %<depend%>-klausul"
  
! #: c/c-typeck.cc:16788 cp/semantics.cc:8764
  #, gcc-internal-format
  msgid "%qE does not have %<omp_depend_t%> type in %<depend%> clause with %<depobj%> dependence type"
  msgstr ""
  
! #: c/c-typeck.cc:16798 cp/semantics.cc:8776
  #, gcc-internal-format
  msgid "%qE should not have %<omp_depend_t%> type in %<depend%> clause with dependence type other than %<depobj%>"
  msgstr ""
  
! #: c/c-typeck.cc:16859 cp/semantics.cc:8876
  #, gcc-internal-format
  msgid "array section does not have mappable type in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:16879 c/c-typeck.cc:16955 c/c-typeck.cc:16991
  #: cp/semantics.cc:8896 cp/semantics.cc:8975 cp/semantics.cc:9011
  #, fuzzy, gcc-internal-format
  #| msgid "unused arguments in $-style format"
  msgid "unsupported map expression %qE"
  msgstr "ubenyttede parametre i formatering med $"
  
! #: c/c-typeck.cc:16919 c/c-typeck.cc:17096 cp/semantics.cc:8937
  #: cp/semantics.cc:9156
  #, gcc-internal-format
  msgid "%qD appears more than once in motion clauses"
  msgstr "%qD fremgÃ¥r mere end en gang i motion-klausuller"
  
! #: c/c-typeck.cc:16927 c/c-typeck.cc:17102 cp/semantics.cc:8945
  #: cp/semantics.cc:9162
  #, gcc-internal-format
  msgid "%qD appears more than once in map clauses"
  msgstr "%qD fremgÃ¥r mere end en gang i map-klausuller"
  
! #: c/c-typeck.cc:17046 c/c-typeck.cc:17188 cp/semantics.cc:9099
  #: cp/semantics.cc:9267
  #, gcc-internal-format
  msgid "%qD does not have a mappable type in %qs clause"
  msgstr "%qD har ikke en mappable-type i %qs-klausul"
  
! #: c/c-typeck.cc:17171 cp/semantics.cc:9248
  #, gcc-internal-format
  msgid "%qE is neither a variable nor a function name in clause %qs"
  msgstr "%qE er hverken en variabel eller et funktionsnavn i klausul %qs"
  
! #: c/c-typeck.cc:17197 cp/semantics.cc:9279
  #, gcc-internal-format
  msgid "%qE appears more than once on the same %<declare target%> directive"
  msgstr ""
  
! #: c/c-typeck.cc:17211 cp/semantics.cc:9295
  #, gcc-internal-format
  msgid "%qD is not an argument in %<uniform%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17214 cp/semantics.cc:9298
  #, gcc-internal-format
  msgid "%qE is not an argument in %<uniform%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17233
  #, fuzzy, gcc-internal-format
  #| msgid "base operand of `->' is not a pointer"
  msgid "%qs variable is not a pointer"
  msgstr "grundoperanden til '->' er ikke en henvisning"
  
! #: c/c-typeck.cc:17240
  #, fuzzy, gcc-internal-format
  #| msgid "type to vector delete is neither pointer or array type"
  msgid "%qs variable is neither a pointer nor an array"
  msgstr "variablen til tabel-delete er hverken af en henvisnings- eller en tabeltype"
  
! #: c/c-typeck.cc:17288 c/c-typeck.cc:17393 cp/semantics.cc:9894
  #, gcc-internal-format
  msgid "%<order%> clause must not be used together with %<ordered%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17308 cp/semantics.cc:8816
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %qs clauses on a task construct"
  msgstr "for mange inddatafiler"
  
! #: c/c-typeck.cc:17429 cp/semantics.cc:9612
  #, gcc-internal-format
  msgid "%<inbranch%> clause is incompatible with %<notinbranch%>"
  msgstr ""
  
! #: c/c-typeck.cc:17464 cp/semantics.cc:9706
  #, fuzzy, gcc-internal-format
  #| msgid "%qD appears more than once in motion clauses"
  msgid "%qD appears more than once in action clauses"
  msgstr "%qD fremgÃ¥r mere end en gang i motion-klausuller"
  
! #: c/c-typeck.cc:17475 cp/semantics.cc:9720
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must take `void'"
  msgid "%qD must be of %<omp_interop_t%>"
  msgstr "'%D' skal tage mod 'void'"
  
! #: c/c-typeck.cc:17484 cp/semantics.cc:9729
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function,"
  msgid "%qD shall not be const"
  msgstr "'%s' er ikke en funktion,"
  
! #: c/c-typeck.cc:17533 cp/semantics.cc:10082
  #, gcc-internal-format
  msgid "%qE is predetermined %qs for %qs"
  msgstr ""
  
! #: c/c-typeck.cc:17543
  #, gcc-internal-format
  msgid "%<const%> qualified %qE may appear only in %<shared%> or %<firstprivate%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:17574 cp/semantics.cc:9835
  #, gcc-internal-format
  msgid "%<simdlen%> clause value is bigger than %<safelen%> clause value"
  msgstr ""
  
! #: c/c-typeck.cc:17586 cp/semantics.cc:9848
  #, gcc-internal-format
  msgid "%<nonmonotonic%> schedule modifier specified together with %<ordered%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17597 c/c-typeck.cc:17605 cp/semantics.cc:9857
  #: cp/semantics.cc:9886
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids qualified function types"
  msgid "%qs clause specified together with %<inscan%> %<reduction%> clause"
  msgstr "ISO C forbyder funktionsreturtype med modifikationer"
  
! #: c/c-typeck.cc:17653 cp/semantics.cc:9815
  #, gcc-internal-format
  msgid "%<linear%> clause step is a parameter %qD not specified in %<uniform%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17704 cp/semantics.cc:9865
  #, gcc-internal-format
  msgid "%<nogroup%> clause must not be used together with %<reduction%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17712 cp/semantics.cc:9876
  #, gcc-internal-format
  msgid "%<grainsize%> clause must not be used together with %<num_tasks%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17720 cp/semantics.cc:9932
  #, gcc-internal-format
  msgid "%<full%> clause must not be used together with %<partial%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17730 cp/semantics.cc:9905
  #, gcc-internal-format
  msgid "%<detach%> clause must not be used together with %<mergeable%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17748 cp/semantics.cc:10107
  #, gcc-internal-format
  msgid "the event handle of a %<detach%> clause should not be in a data-sharing clause"
  msgstr ""
  
! #: c/c-typeck.cc:17766 cp/semantics.cc:10178
  #, gcc-internal-format
  msgid "%<depend%> clause requires action clauses with %<targetsync%> interop-type"
  msgstr ""
  
! #: c/c-typeck.cc:17770 cp/semantics.cc:10182
  #, gcc-internal-format
  msgid "%<init%> clause lacks the %<targetsync%> modifier"
  msgstr ""
  
! #: c/c-typeck.cc:17942
  #, gcc-internal-format
  msgid "cannot use %<va_arg%> with reverse storage order"
  msgstr ""
  
! #: c/c-typeck.cc:17947
  #, fuzzy, gcc-internal-format
  #| msgid "first argument to `va_arg' not of type `va_list'"
  msgid "second argument to %<va_arg%> is of incomplete type %qT"
  msgstr "den fÃ¸rste parameter til 'va_arg' er ikke af typen 'va_list'"
  
! #: c/c-typeck.cc:17953
  #, fuzzy, gcc-internal-format
  #| msgid "first argument to `va_arg' not of type `va_list'"
  msgid "second argument to %<va_arg%> is a function type %qT"
  msgstr "den fÃ¸rste parameter til 'va_arg' er ikke af typen 'va_list'"
  
! #: c/c-typeck.cc:17959
  #, gcc-internal-format
  msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
  msgstr ""
--- 56587,56863 ----
  msgid "%qD appears more than once in data clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16526 c/c-typeck.cc:16597 c/c-typeck.cc:17136
  #: cp/semantics.cc:7914 cp/semantics.cc:8018 cp/semantics.cc:9179
  #, gcc-internal-format
  msgid "%qD appears both in data and map clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16571 cp/semantics.cc:7991
  #, fuzzy, gcc-internal-format
  #| msgid "instance variable `%s' is declared private"
  msgid "%qE is not a variable in clause %<firstprivate%>"
  msgstr "instansvariablen '%s' er erklÃ¦ret privat"
  
! #: c/c-typeck.cc:16611 cp/semantics.cc:8051
  #, fuzzy, gcc-internal-format
  #| msgid "instance variable `%s' is declared private"
  msgid "%qE is not a variable in clause %<lastprivate%>"
  msgstr "instansvariablen '%s' er erklÃ¦ret privat"
  
! #: c/c-typeck.cc:16630 cp/semantics.cc:8473
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not a valid class name"
  msgid "%qE is not a variable in %<aligned%> clause"
  msgstr "'%s' er et ugyldigt klassenavn"
  
! #: c/c-typeck.cc:16637
  #, fuzzy, gcc-internal-format
  #| msgid "type to vector delete is neither pointer or array type"
  msgid "%qE in %<aligned%> clause is neither a pointer nor an array"
  msgstr "variablen til tabel-delete er hverken af en henvisnings- eller en tabeltype"
  
! #: c/c-typeck.cc:16644
  #, gcc-internal-format
  msgid "%<_Atomic%> %qD in %<aligned%> clause"
  msgstr "%<_Atomic%> %qD i %<aligned%>-klausul"
  
! #: c/c-typeck.cc:16651
  #, gcc-internal-format
  msgid "%qE appears more than once in %<aligned%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16664 cp/semantics.cc:8542
  #, fuzzy, gcc-internal-format
  #| msgid "%qE is not a variable in %<depend%> clause"
  msgid "%qE is not a variable in %<nontemporal%> clause"
  msgstr "%qE er ikke en variable i %<depend%>-klausul"
  
! #: c/c-typeck.cc:16670
  #, fuzzy, gcc-internal-format
  #| msgid "%qD appears more than once in map clauses"
  msgid "%qE appears more than once in %<nontemporal%> clauses"
  msgstr "%qD fremgÃ¥r mere end en gang i map-klausuller"
  
! #: c/c-typeck.cc:16683 cp/semantics.cc:8581
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not a valid class name"
  msgid "%qE is not a variable in %<allocate%> clause"
  msgstr "'%s' er et ugyldigt klassenavn"
  
! #: c/c-typeck.cc:16689
  #, fuzzy, gcc-internal-format
  #| msgid "%qD appears more than once in map clauses"
  msgid "%qE appears more than once in %<allocate%> clauses"
  msgstr "%qD fremgÃ¥r mere end en gang i map-klausuller"
  
! #: c/c-typeck.cc:16761 cp/semantics.cc:8709
  #, gcc-internal-format
  msgid "%<depend%> clause with %<depobj%> dependence type on array section"
  msgstr ""
  
! #: c/c-typeck.cc:16776 cp/semantics.cc:8724
  #, gcc-internal-format
  msgid "%<omp_all_memory%> used with %<depend%> kind other than %<out%> or %<inout%>"
  msgstr ""
  
! #: c/c-typeck.cc:16784 cp/semantics.cc:8742
  #, fuzzy, gcc-internal-format
  #| msgid "%qE is not a variable in %<depend%> clause"
  msgid "%qE is not lvalue expression nor array section in %qs clause"
  msgstr "%qE er ikke en variable i %<depend%>-klausul"
  
! #: c/c-typeck.cc:16805 cp/semantics.cc:8764
  #, gcc-internal-format
  msgid "%qE does not have %<omp_depend_t%> type in %<depend%> clause with %<depobj%> dependence type"
  msgstr ""
  
! #: c/c-typeck.cc:16815 cp/semantics.cc:8776
  #, gcc-internal-format
  msgid "%qE should not have %<omp_depend_t%> type in %<depend%> clause with dependence type other than %<depobj%>"
  msgstr ""
  
! #: c/c-typeck.cc:16876 cp/semantics.cc:8876
  #, gcc-internal-format
  msgid "array section does not have mappable type in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:16896 c/c-typeck.cc:16972 c/c-typeck.cc:17008
  #: cp/semantics.cc:8896 cp/semantics.cc:8975 cp/semantics.cc:9011
  #, fuzzy, gcc-internal-format
  #| msgid "unused arguments in $-style format"
  msgid "unsupported map expression %qE"
  msgstr "ubenyttede parametre i formatering med $"
  
! #: c/c-typeck.cc:16936 c/c-typeck.cc:17113 cp/semantics.cc:8937
  #: cp/semantics.cc:9156
  #, gcc-internal-format
  msgid "%qD appears more than once in motion clauses"
  msgstr "%qD fremgÃ¥r mere end en gang i motion-klausuller"
  
! #: c/c-typeck.cc:16944 c/c-typeck.cc:17119 cp/semantics.cc:8945
  #: cp/semantics.cc:9162
  #, gcc-internal-format
  msgid "%qD appears more than once in map clauses"
  msgstr "%qD fremgÃ¥r mere end en gang i map-klausuller"
  
! #: c/c-typeck.cc:17063 c/c-typeck.cc:17205 cp/semantics.cc:9099
  #: cp/semantics.cc:9267
  #, gcc-internal-format
  msgid "%qD does not have a mappable type in %qs clause"
  msgstr "%qD har ikke en mappable-type i %qs-klausul"
  
! #: c/c-typeck.cc:17188 cp/semantics.cc:9248
  #, gcc-internal-format
  msgid "%qE is neither a variable nor a function name in clause %qs"
  msgstr "%qE er hverken en variabel eller et funktionsnavn i klausul %qs"
  
! #: c/c-typeck.cc:17214 cp/semantics.cc:9279
  #, gcc-internal-format
  msgid "%qE appears more than once on the same %<declare target%> directive"
  msgstr ""
  
! #: c/c-typeck.cc:17228 cp/semantics.cc:9295
  #, gcc-internal-format
  msgid "%qD is not an argument in %<uniform%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17231 cp/semantics.cc:9298
  #, gcc-internal-format
  msgid "%qE is not an argument in %<uniform%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17250
  #, fuzzy, gcc-internal-format
  #| msgid "base operand of `->' is not a pointer"
  msgid "%qs variable is not a pointer"
  msgstr "grundoperanden til '->' er ikke en henvisning"
  
! #: c/c-typeck.cc:17257
  #, fuzzy, gcc-internal-format
  #| msgid "type to vector delete is neither pointer or array type"
  msgid "%qs variable is neither a pointer nor an array"
  msgstr "variablen til tabel-delete er hverken af en henvisnings- eller en tabeltype"
  
! #: c/c-typeck.cc:17305 c/c-typeck.cc:17410 cp/semantics.cc:9894
  #, gcc-internal-format
  msgid "%<order%> clause must not be used together with %<ordered%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17325 cp/semantics.cc:8816
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %qs clauses on a task construct"
  msgstr "for mange inddatafiler"
  
! #: c/c-typeck.cc:17446 cp/semantics.cc:9612
  #, gcc-internal-format
  msgid "%<inbranch%> clause is incompatible with %<notinbranch%>"
  msgstr ""
  
! #: c/c-typeck.cc:17481 cp/semantics.cc:9706
  #, fuzzy, gcc-internal-format
  #| msgid "%qD appears more than once in motion clauses"
  msgid "%qD appears more than once in action clauses"
  msgstr "%qD fremgÃ¥r mere end en gang i motion-klausuller"
  
! #: c/c-typeck.cc:17492 cp/semantics.cc:9720
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must take `void'"
  msgid "%qD must be of %<omp_interop_t%>"
  msgstr "'%D' skal tage mod 'void'"
  
! #: c/c-typeck.cc:17501 cp/semantics.cc:9729
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function,"
  msgid "%qD shall not be const"
  msgstr "'%s' er ikke en funktion,"
  
! #: c/c-typeck.cc:17550 cp/semantics.cc:10082
  #, gcc-internal-format
  msgid "%qE is predetermined %qs for %qs"
  msgstr ""
  
! #: c/c-typeck.cc:17560
  #, gcc-internal-format
  msgid "%<const%> qualified %qE may appear only in %<shared%> or %<firstprivate%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:17591 cp/semantics.cc:9835
  #, gcc-internal-format
  msgid "%<simdlen%> clause value is bigger than %<safelen%> clause value"
  msgstr ""
  
! #: c/c-typeck.cc:17603 cp/semantics.cc:9848
  #, gcc-internal-format
  msgid "%<nonmonotonic%> schedule modifier specified together with %<ordered%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17614 c/c-typeck.cc:17622 cp/semantics.cc:9857
  #: cp/semantics.cc:9886
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids qualified function types"
  msgid "%qs clause specified together with %<inscan%> %<reduction%> clause"
  msgstr "ISO C forbyder funktionsreturtype med modifikationer"
  
! #: c/c-typeck.cc:17670 cp/semantics.cc:9815
  #, gcc-internal-format
  msgid "%<linear%> clause step is a parameter %qD not specified in %<uniform%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17721 cp/semantics.cc:9865
  #, gcc-internal-format
  msgid "%<nogroup%> clause must not be used together with %<reduction%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17729 cp/semantics.cc:9876
  #, gcc-internal-format
  msgid "%<grainsize%> clause must not be used together with %<num_tasks%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17737 cp/semantics.cc:9932
  #, gcc-internal-format
  msgid "%<full%> clause must not be used together with %<partial%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17747 cp/semantics.cc:9905
  #, gcc-internal-format
  msgid "%<detach%> clause must not be used together with %<mergeable%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17765 cp/semantics.cc:10107
  #, gcc-internal-format
  msgid "the event handle of a %<detach%> clause should not be in a data-sharing clause"
  msgstr ""
  
! #: c/c-typeck.cc:17783 cp/semantics.cc:10178
  #, gcc-internal-format
  msgid "%<depend%> clause requires action clauses with %<targetsync%> interop-type"
  msgstr ""
  
! #: c/c-typeck.cc:17787 cp/semantics.cc:10182
  #, gcc-internal-format
  msgid "%<init%> clause lacks the %<targetsync%> modifier"
  msgstr ""
  
! #: c/c-typeck.cc:17959
  #, gcc-internal-format
  msgid "cannot use %<va_arg%> with reverse storage order"
  msgstr ""
  
! #: c/c-typeck.cc:17964
  #, fuzzy, gcc-internal-format
  #| msgid "first argument to `va_arg' not of type `va_list'"
  msgid "second argument to %<va_arg%> is of incomplete type %qT"
  msgstr "den fÃ¸rste parameter til 'va_arg' er ikke af typen 'va_list'"
  
! #: c/c-typeck.cc:17970
  #, fuzzy, gcc-internal-format
  #| msgid "first argument to `va_arg' not of type `va_list'"
  msgid "second argument to %<va_arg%> is a function type %qT"
  msgstr "den fÃ¸rste parameter til 'va_arg' er ikke af typen 'va_list'"
  
! #: c/c-typeck.cc:17976
  #, gcc-internal-format
  msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
  msgstr ""
*************** msgstr "uventet operand"
*** 57097,57450 ****
  msgid "expected case label"
  msgstr "forventet etiket"
  
! #: cobol/cdf-copy.cc:109
  msgid "REPLACING %zu characters exceeds system capacity'%s'"
  msgstr ""
  
! #: cobol/cobol1.cc:275
  #, gcc-internal-format
  msgid "COBOL requires a 64-bit configuration"
  msgstr ""
  
! #: cobol/cobol1.cc:326
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Creating '%s'\n"
  msgid "exception '%s'"
  msgstr "Opretter Â»%sÂ«.\n"
  
! #: cobol/cobol1.cc:408
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Could not open source file %s.\n"
  msgid "could not execute preprocessor %s"
  msgstr "Kunne ikke Ã¥bne kildefilen %s.\n"
  
! #: cobol/cobol1.cc:413
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "could not find specs file %s\n"
  msgid "could not include %s"
  msgstr "kunne ikke finde specifikationsfilen %s\n"
  
  #. This isn't right.  All OPT_main should be replaced
! #: cobol/cobol1.cc:419
  #, gcc-internal-format
  msgid "We should never see a non-equal dash-main in cobol1.c"
  msgstr ""
  
! #: cobol/except.cc:53
! msgid "no such exception: 0x%04x"
  msgstr ""
  
! #: cobol/genapi.cc:332
  #, gcc-internal-format
  msgid "Probable cause: it was referenced without being defined."
  msgstr ""
  
! #: cobol/genapi.cc:571
  #, gcc-internal-format
! msgid "Nice try, but you can't fire me. I quit!"
  msgstr ""
  
! #: cobol/genapi.cc:1486
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "%qE does not have a mappable type in %qs clause"
! msgid "%s(): Knows not the variable type %s for %s"
  msgstr "%qE har ikke en mappable-type i %qs-klausul"
  
! #: cobol/genapi.cc:2176
! #, gcc-internal-format, gfc-internal-format
! msgid "I don't know how to MOVE an alphabetical string to %s(%s) \n"
  msgstr ""
  
! #: cobol/genapi.cc:2244
! #, gcc-internal-format, gfc-internal-format
! msgid "%s(): field->type %s must be literal or alphanumeric"
  msgstr ""
  
! #: cobol/genapi.cc:5728
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "%s: invalid file name: %s\n"
! msgid "%s(): Invalid field type %s:"
  msgstr "%s: ugyldigt filnavn: %s\n"
  
! #: cobol/genapi.cc:6929 cobol/genapi.cc:6935 cobol/genapi.cc:6941
! #, gcc-internal-format, gfc-internal-format
! msgid "parser_logop() was called with variable %s on line %d, which is not a FldConditional\n"
  msgstr ""
  
! #: cobol/genapi.cc:7048 cobol/genapi.cc:7112
! #, gcc-internal-format, gfc-internal-format
! msgid "parser_relop() was called with variable %s, which is not a FldConditional\n"
  msgstr ""
  
! #: cobol/genapi.cc:7158
! #, gcc-internal-format, gfc-internal-format
! msgid "parser_if() was called with variable %s, which is not a FldConditional\n"
  msgstr ""
  
! #: cobol/genapi.cc:7411
! #, gcc-internal-format, gfc-internal-format
! msgid "###### candidate %s has unimplemented CVT_type %d(%s)\n"
  msgstr ""
  
! #: cobol/genapi.cc:7422
! #, gcc-internal-format, gfc-internal-format
! msgid "###### unknown setop_t code %d\n"
  msgstr ""
  
! #: cobol/genapi.cc:7618
! msgid "%s:%d: %zu exceeds MAXIMUM_UNTILS of %d, line %d"
  msgstr ""
  
! #: cobol/genapi.cc:8624
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d: ignoring subscripts"
  msgstr ""
  
! #: cobol/genapi.cc:8846 cobol/genapi.cc:9306
  #, gcc-internal-format, gfc-internal-format
! msgid "%s(): called with NULL *file"
  msgstr ""
  
! #: cobol/genapi.cc:8971
! #, gcc-internal-format, gfc-internal-format
! msgid "%s:%d file %s access mode is 'file_inaccessible_e' in %s"
  msgstr ""
  
! #: cobol/genapi.cc:9044
  #, gcc-internal-format
! msgid "parser_file_open called with NULL *file"
  msgstr ""
  
! #: cobol/genapi.cc:9049
! #, gcc-internal-format, gfc-internal-format
! msgid "parser_file_open for %s called with NULL var_decl_node"
  msgstr ""
  
! #: cobol/genapi.cc:9054
  #, gcc-internal-format, gfc-internal-format
  msgid "EXTEND can only be used where %s is ACCESS MODE SEQUENTIAL"
  msgstr ""
  
! #: cobol/genapi.cc:9122
  #, gcc-internal-format
! msgid "parser_file_close called with NULL *file"
  msgstr ""
  
! #: cobol/genapi.cc:9127
! #, gcc-internal-format, gfc-internal-format
! msgid "parser_file_close for %s called with NULL file->var_decl_node"
  msgstr ""
  
! #: cobol/genapi.cc:9180
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d file %s 'where' is zero in %s"
  msgstr ""
  
! #: cobol/genapi.cc:9190
  #, gcc-internal-format
! msgid "parser_file_read called with NULL *file"
  msgstr ""
  
! #: cobol/genapi.cc:9195
! #, gcc-internal-format, gfc-internal-format
! msgid "parser_file_read for %s called with NULL file->var_decl_node"
  msgstr ""
  
! #: cobol/genapi.cc:9200
  #, gcc-internal-format
! msgid "parser_file_read called with NULL *field"
  msgstr ""
  
! #: cobol/genapi.cc:9205
! #, gcc-internal-format, gfc-internal-format
! msgid "parser_file_read for %s called with NULL field->var_decl_node"
  msgstr ""
  
! #: cobol/genapi.cc:9210
! #, gcc-internal-format, gfc-internal-format
! msgid "%s:%d file %s is RELATIVE/SEQUENTIAL, but 'where' >= 0"
  msgstr ""
  
! #: cobol/genapi.cc:9219
! #, gcc-internal-format, gfc-internal-format
! msgid "%s:%d file %s is RELATIVE/RANDOM, but 'where' < 0"
  msgstr ""
  
! #: cobol/genapi.cc:9262
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d file %s 'sequentially' is %d in %s"
  msgstr ""
  
! #: cobol/genapi.cc:9311
! #, gcc-internal-format, gfc-internal-format
! msgid "%s(): for %s called with NULL file->var_decl_node"
  msgstr ""
  
! #: cobol/genapi.cc:9317
  #, gcc-internal-format, gfc-internal-format
! msgid "%s(): called with NULL *field"
  msgstr ""
  
! #: cobol/genapi.cc:9322
! #, gcc-internal-format, gfc-internal-format
! msgid "%s(): for %s called with NULL field->var_decl_node"
  msgstr ""
  
! #: cobol/genapi.cc:9457
! #, gcc-internal-format, gfc-internal-format
! msgid "%s:%d file %s is INDEXED/SEQUENTIAL, but 'sequentially' is false"
  msgstr ""
  
! #: cobol/genapi.cc:11122
  #, gcc-internal-format, gfc-internal-format
! msgid "%s(): asked to sort %s, but it's not a table"
  msgstr ""
  
  #. Having both or neither violates SORT syntax
! #: cobol/genapi.cc:11250
  #, gcc-internal-format, gfc-internal-format
! msgid "%s(): syntax error -- both (or neither) USING and input-proc are specified"
  msgstr ""
  
! #: cobol/genapi.cc:11379
  #, gcc-internal-format, gfc-internal-format
! msgid "%s(): syntax error -- both (or neither) GIVING and output-proc are specified"
  msgstr ""
  
! #: cobol/genapi.cc:11786
  #, gcc-internal-format, gfc-internal-format
! msgid "%s(): syntax error -- both (or neither) files and output-proc are specified"
  msgstr ""
  
! #: cobol/genapi.cc:12187
  #, gcc-internal-format
  msgid "CALL USING BY CONTENT <temporary> would require REPOSITORY PROTOTYPES."
  msgstr ""
  
! #: cobol/genapi.cc:12439
! #, gcc-internal-format, gfc-internal-format
! msgid "%s(): What in the name of Nero's fiddle are we doing here?"
! msgstr ""
  
! #: cobol/genapi.cc:13948
! #, gcc-internal-format, gfc-internal-format
! msgid "In parser_move(%s to %s), the move of FldLiteralN to %s hasn't been implemented"
  msgstr ""
  
! #: cobol/genapi.cc:14184
! #, gcc-internal-format, gfc-internal-format
! msgid "In mh_dest_is_float(%s to %s), the move of %s to %s hasn't been implemented"
  msgstr ""
  
! #: cobol/genapi.cc:16279
  #, gcc-internal-format, gfc-internal-format
  msgid "LEVEL 01 (%s) OCCURS has insufficient data.memsize"
  msgstr ""
  
! #: cobol/genapi.cc:16351
  #, gcc-internal-format
! msgid "parser_symbol_add() was called with a NULL new_var\n"
  msgstr ""
  
! #: cobol/genapi.cc:16379
! msgid "%s(): %2.2d %s is a table, but it improperly has a capacity of zero"
  msgstr ""
  
! #: cobol/genapi.cc:16419
  #, gcc-internal-format, gfc-internal-format
! msgid "parser_symbol_add(): %s is its own ancestor"
  msgstr ""
  
! #: cobol/genapi.cc:16425
! msgid "parser_symbol_add(): %2.2d %s has null ancestor"
  msgstr ""
  
! #: cobol/genapi.cc:16433
! #, gcc-internal-format, gfc-internal-format
! msgid "parser_symbol_add( %s ) improperly has a non-null var_decl_node\n"
  msgstr ""
  
! #: cobol/genapi.cc:16638
! msgid "%s(): %2.2d %s<%s> improperly has a data.capacity of zero"
  msgstr ""
  
! #: cobol/gengen.cc:363
  #, gcc-internal-format
! msgid "The given type is not NULL, and that's just not fair"
  msgstr ""
  
! #: cobol/gengen.cc:372
  #, gcc-internal-format
! msgid "The given type is not a DECL or a TYPE"
  msgstr ""
  
! #: cobol/gengen.cc:416
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "unknown register name: %s"
  msgid "Unknown type %d"
  msgstr "ukendt registernavn: %s"
  
! #: cobol/gengen.cc:2941
  #, gcc-internal-format
! msgid "Residual context count!"
  msgstr ""
  
! #: cobol/genmath.cc:1392
! #, gcc-internal-format, gfc-internal-format
! msgid "parser_op() doesn't know how to evaluate \"%s = %s %c %s\"\n"
  msgstr ""
  
! #: cobol/genutil.cc:322 cobol/genutil.cc:601
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "Too many subscripts"
  msgstr "for mange inddatafiler"
  
! #: cobol/lexio.cc:1490
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "%s:%d:   instantiated from `%s'\n"
! msgid "%s pid %d terminated by %s"
  msgstr "%s:%d:   instantieret fra '%s'\n"
  
! #: cobol/lexio.cc:1495
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "%s: %s exited with status %d\n"
  msgid "%s exited with status %d"
  msgstr "%s: %s afsluttede med status %d\n"
  
! #: cobol/symbols.cc:450
  msgid "%s:%d: LblNone '%s' has parent #%zu"
  msgstr ""
  
! #: cobol/symbols.cc:1907
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "%s rotate count is negative"
  msgid "%s: key must be field"
  msgstr "%s-roteringsantal er negativt"
  
! #: cobol/symbols.cc:3709 cobol/symbols.cc:3816 cobol/symbols.cc:3846
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "%s: would convert file `%s'\n"
  msgid "%s:%d: could not add '%s'"
  msgstr "%s: ville omdanne filen '%s'\n"
  
! #: cobol/util.cc:1108
  #, gcc-internal-format, gfc-internal-format
  msgid "logic error: MOVE %s %s invalid type:"
  msgstr ""
  
! #: cobol/util.cc:1705
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "%s: compiling `%s'\n"
  msgid "%s: regcomp: %s"
  msgstr "%s: oversÃ¦tter '%s'\n"
  
! #: cobol/util.cc:1815
  #, gcc-internal-format, gfc-internal-format
  msgid "logic error: missing inode for %s"
  msgstr ""
  
! #: cobol/util.cc:2141
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "collect: recompiling %s\n"
  msgid "failed compiling %s"
--- 57106,57515 ----
  msgid "expected case label"
  msgstr "forventet etiket"
  
! #: cobol/cdf-copy.cc:108
  msgid "REPLACING %zu characters exceeds system capacity'%s'"
  msgstr ""
  
! #: cobol/cobol1.cc:274
  #, gcc-internal-format
  msgid "COBOL requires a 64-bit configuration"
  msgstr ""
  
! #: cobol/cobol1.cc:325
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Creating '%s'\n"
  msgid "exception '%s'"
  msgstr "Opretter Â»%sÂ«.\n"
  
! #: cobol/cobol1.cc:414
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Could not open source file %s.\n"
  msgid "could not execute preprocessor %s"
  msgstr "Kunne ikke Ã¥bne kildefilen %s.\n"
  
! #: cobol/cobol1.cc:420
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "could not find specs file %s\n"
  msgid "could not include %s"
  msgstr "kunne ikke finde specifikationsfilen %s\n"
  
  #. This isn't right.  All OPT_main should be replaced
! #: cobol/cobol1.cc:426
  #, gcc-internal-format
  msgid "We should never see a non-equal dash-main in cobol1.c"
  msgstr ""
  
! #: cobol/except.cc:54
! #, gcc-internal-format
! msgid "no such exception: 0x%x"
  msgstr ""
  
! #: cobol/genapi.cc:354
  #, gcc-internal-format
  msgid "Probable cause: it was referenced without being defined."
  msgstr ""
  
! #: cobol/genapi.cc:600
  #, gcc-internal-format
! msgid "Nice try, but you cannot fire me."
  msgstr ""
  
! #: cobol/genapi.cc:1214
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "%qD should be initialized"
! msgid "%s should not be null"
! msgstr "%qD skal tildeles en startvÃ¦rdi"
! 
! #: cobol/genapi.cc:1792
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "%qE does not have a mappable type in %qs clause"
! msgid "%s: Knows not the variable type %s for %s"
  msgstr "%qE har ikke en mappable-type i %qs-klausul"
  
! #: cobol/genapi.cc:2481
! #, gcc-internal-format
! msgid "I don%'t know how to MOVE an alphabetical string to %s(%s)"
  msgstr ""
  
! #: cobol/genapi.cc:2549
! #, gcc-internal-format
! msgid "%s: %<field->type%> %s must be literal or alphanumeric"
  msgstr ""
  
! #: cobol/genapi.cc:4460
! #, fuzzy, gcc-internal-format
! #| msgid "Missing comma in FORMAT statement at %0"
! msgid "Not valid for ACCEPT statement."
! msgstr "Manglende komma i FORMAT-sÃ¦tning ved %0"
! 
! #: cobol/genapi.cc:5488
! #, gcc-internal-format
! msgid "Attempting to send to an input device."
! msgstr ""
! 
! #: cobol/genapi.cc:5511
! #, fuzzy, gcc-internal-format
! #| msgid "Missing comma in FORMAT statement at %0"
! msgid "Not valid for DISPLAY statement."
! msgstr "Manglende komma i FORMAT-sÃ¦tning ved %0"
! 
! #: cobol/genapi.cc:6412
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "%s: invalid file name: %s\n"
! msgid "%s: Invalid field type %s:"
  msgstr "%s: ugyldigt filnavn: %s\n"
  
! #: cobol/genapi.cc:7622 cobol/genapi.cc:7628 cobol/genapi.cc:7634
! #, gcc-internal-format
! msgid "%<parser_logop()%> was called with variable %s on line %d, which is not a FldConditional"
  msgstr ""
  
! #: cobol/genapi.cc:7741
! #, gcc-internal-format
! msgid "%<parser_relop%> was called with variable %qs, which is not a FldConditional"
  msgstr ""
  
! #: cobol/genapi.cc:7805
! #, gcc-internal-format
! msgid "%<parser_relop()%> was called with variable %s, which is not a FldConditional"
  msgstr ""
  
! #: cobol/genapi.cc:7851
! #, gcc-internal-format
! msgid "%<parser_if()%> was called with variable %s, which is not a FldConditional"
  msgstr ""
  
! #: cobol/genapi.cc:8116
! #, gcc-internal-format
! msgid "candidate %s has unimplemented %<CVT_type%> %d(%s)"
  msgstr ""
  
! #: cobol/genapi.cc:8127
! #, fuzzy, gcc-internal-format
! #| msgid "unknown machine mode `%s'"
! msgid "unknown %<setop_t%> code %d"
! msgstr "ukendt maskintilstand '%s'"
! 
! #: cobol/genapi.cc:8315
! #, gcc-internal-format
! msgid "%s:%d: %u exceeds %<MAXIMUM_UNTILS%> of %d, line %d"
  msgstr ""
  
! #: cobol/genapi.cc:9324
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d: ignoring subscripts"
  msgstr ""
  
! #: cobol/genapi.cc:9538 cobol/genapi.cc:10006
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: called with NULL *file"
  msgstr ""
  
! #: cobol/genapi.cc:9663
! #, gcc-internal-format
! msgid "%s:%d file %s access mode is %<file_inaccessible_e%> in %s"
  msgstr ""
  
! #: cobol/genapi.cc:9737
  #, gcc-internal-format
! msgid "%<parser_file_open%> called with NULL *file"
  msgstr ""
  
! #: cobol/genapi.cc:9742
! #, gcc-internal-format
! msgid "%<parser_file_open%> for %s called with NULL %<var_decl_node%>"
  msgstr ""
  
! #: cobol/genapi.cc:9748
  #, gcc-internal-format, gfc-internal-format
  msgid "EXTEND can only be used where %s is ACCESS MODE SEQUENTIAL"
  msgstr ""
  
! #: cobol/genapi.cc:9817
  #, gcc-internal-format
! msgid "%<parser_file_close%> called with NULL *file"
  msgstr ""
  
! #: cobol/genapi.cc:9822
! #, gcc-internal-format
! msgid "%<parser_file_close%> for %s called with NULL %<file->var_decl_node%>"
  msgstr ""
  
! #: cobol/genapi.cc:9877
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d file %s 'where' is zero in %s"
  msgstr ""
  
! #: cobol/genapi.cc:9887
  #, gcc-internal-format
! msgid "%<parser_file_read%> called with NULL *file"
  msgstr ""
  
! #: cobol/genapi.cc:9892
! #, gcc-internal-format
! msgid "%<parser_file_read%> for %s called with NULL %<file->var_decl_node%>"
  msgstr ""
  
! #: cobol/genapi.cc:9898
  #, gcc-internal-format
! msgid "%<parser_file_read%> called with NULL *field"
  msgstr ""
  
! #: cobol/genapi.cc:9903
! #, gcc-internal-format
! msgid "%<parser_file_read%> for %s called with NULL %<field->var_decl_node%>"
  msgstr ""
  
! #: cobol/genapi.cc:9909
! #, gcc-internal-format
! msgid "%s:%d file %s is RELATIVE/SEQUENTIAL, but %<where >= 0%>"
  msgstr ""
  
! #: cobol/genapi.cc:9918
! #, gcc-internal-format
! msgid "%s:%d file %s is RELATIVE/RANDOM, but %<where < 0%>"
  msgstr ""
  
! #: cobol/genapi.cc:9962
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d file %s 'sequentially' is %d in %s"
  msgstr ""
  
! #: cobol/genapi.cc:10011
! #, gcc-internal-format
! msgid "%s: for %s called with NULL %<file->var_decl_node%>"
  msgstr ""
  
! #: cobol/genapi.cc:10017
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: called with NULL *field"
  msgstr ""
  
! #: cobol/genapi.cc:10022
! #, gcc-internal-format
! msgid "%s: for %s called with NULL %<field->var_decl_node%>"
  msgstr ""
  
! #: cobol/genapi.cc:10107
! #, gcc-internal-format
! msgid "The file pointer should not be null"
  msgstr ""
  
! #: cobol/genapi.cc:10161
  #, gcc-internal-format, gfc-internal-format
! msgid "%s:%d file %s is INDEXED/SEQUENTIAL, but 'sequentially' is false"
  msgstr ""
  
+ #: cobol/genapi.cc:11881
+ #, fuzzy, gcc-internal-format, gfc-internal-format
+ msgid "%s: asked to sort %s, which is not a table"
+ msgstr "unavngiven klargÃ¸ring af '%T' som ikke har nogen stamklasser"
+ 
  #. Having both or neither violates SORT syntax
! #: cobol/genapi.cc:12013
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: syntax error: both (or neither) USING and input-proc are specified"
  msgstr ""
  
! #: cobol/genapi.cc:12147
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: syntax error: both (or neither) GIVING and output-proc are specified"
  msgstr ""
  
! #: cobol/genapi.cc:12569
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: syntax error: both (or neither) files and output-proc are specified"
  msgstr ""
  
! #: cobol/genapi.cc:12973
  #, gcc-internal-format
  msgid "CALL USING BY CONTENT <temporary> would require REPOSITORY PROTOTYPES."
  msgstr ""
  
! #: cobol/genapi.cc:13264
! #, fuzzy, gcc-internal-format, gfc-internal-format
! msgid "%s: What in the name of Nero are we doing here?"
! msgstr "PlanlÃ¦g ikke begyndelsen og slutningen af proceduren"
  
! #: cobol/genapi.cc:14560
! #, gcc-internal-format
! msgid "In %<parser_move(%s to %s)%>, the move of FldLiteralN to %s is unimplemented"
  msgstr ""
  
! #: cobol/genapi.cc:14796
! #, gcc-internal-format
! msgid "In %<mh_dest_is_float%>(%s to %s), the move of %s to %s is unimplemented"
  msgstr ""
  
! #: cobol/genapi.cc:16918
  #, gcc-internal-format, gfc-internal-format
  msgid "LEVEL 01 (%s) OCCURS has insufficient data.memsize"
  msgstr ""
  
! #: cobol/genapi.cc:16990
  #, gcc-internal-format
! msgid "%<parser_symbol_add()%> was called with a NULL %<new_var%>"
  msgstr ""
  
! #: cobol/genapi.cc:17020
! #, gcc-internal-format, gfc-internal-format
! msgid "%s: %d %s is a table, but it improperly has a capacity of zero"
  msgstr ""
  
! #: cobol/genapi.cc:17060
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: %s is its own ancestor"
  msgstr ""
  
! #: cobol/genapi.cc:17065
! #, gcc-internal-format
! msgid "%s: %d %qs has NULL ancestor"
  msgstr ""
  
! #: cobol/genapi.cc:17072
! #, gcc-internal-format
! msgid "%s(%s) improperly has a non-null %<var_decl_node%>"
  msgstr ""
  
! #: cobol/genapi.cc:17267
! #, gcc-internal-format, gfc-internal-format
! msgid "%s: %d %s<%s> improperly has a data.capacity of zero"
  msgstr ""
  
! #: cobol/genapi.cc:17334
  #, gcc-internal-format
! msgid "%<bytes_to_allocate%> is zero for %s (symbol number "
  msgstr ""
  
! #: cobol/gengen.cc:360
  #, gcc-internal-format
! msgid "The given type is NULL, and that is just not fair"
  msgstr ""
  
! #: cobol/gengen.cc:369
! #, fuzzy, gcc-internal-format
! #| msgid "empty declaration"
! msgid "The given type is not a declaration or a TYPE"
! msgstr "tom erklÃ¦ring"
! 
! #: cobol/gengen.cc:413
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "unknown register name: %s"
  msgid "Unknown type %d"
  msgstr "ukendt registernavn: %s"
  
! #: cobol/gengen.cc:482
  #, gcc-internal-format
! msgid "Attempting an assignment of differing types."
  msgstr ""
  
! #: cobol/gengen.cc:2893
! #, gcc-internal-format
! msgid "Residual context count"
  msgstr ""
  
! #: cobol/genmath.cc:1385
! #, gcc-internal-format
! msgid "%<parser_op()%> doesn%'t know how to evaluate %<%s = %s %c %s%>"
! msgstr ""
! 
! #: cobol/genutil.cc:596
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "Too many subscripts"
  msgstr "for mange inddatafiler"
  
! #: cobol/genutil.cc:761
! #, fuzzy, gcc-internal-format
! #| msgid "cannot read LTO mode table from %s"
! msgid "cannot get %<float%> value from %s"
! msgstr "kan ikke lÃ¦se LTO-tilstandstabel fra %s"
! 
! #: cobol/lexio.cc:1581
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "%s:%d:   instantiated from `%s'\n"
! msgid "%s pid %ld terminated by %s"
  msgstr "%s:%d:   instantieret fra '%s'\n"
  
! #: cobol/lexio.cc:1586
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "%s: %s exited with status %d\n"
  msgid "%s exited with status %d"
  msgstr "%s: %s afsluttede med status %d\n"
  
! #: cobol/symbols.cc:418
  msgid "%s:%d: LblNone '%s' has parent #%zu"
  msgstr ""
  
! #: cobol/symbols.cc:1901
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "%s rotate count is negative"
  msgid "%s: key must be field"
  msgstr "%s-roteringsantal er negativt"
  
! #: cobol/symbols.cc:3712 cobol/symbols.cc:3815 cobol/symbols.cc:3845
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "%s: would convert file `%s'\n"
  msgid "%s:%d: could not add '%s'"
  msgstr "%s: ville omdanne filen '%s'\n"
  
! #: cobol/util.cc:1276
  #, gcc-internal-format, gfc-internal-format
  msgid "logic error: MOVE %s %s invalid type:"
  msgstr ""
  
! #: cobol/util.cc:1873
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "%s: compiling `%s'\n"
  msgid "%s: regcomp: %s"
  msgstr "%s: oversÃ¦tter '%s'\n"
  
! #: cobol/util.cc:2022
  #, gcc-internal-format, gfc-internal-format
  msgid "logic error: missing inode for %s"
  msgstr ""
  
! #: cobol/util.cc:2430
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "collect: recompiling %s\n"
  msgid "failed compiling %s"
*************** msgstr "ingen passende 'operator delete'
*** 57930,57936 ****
  msgid "%q#D is private within this context"
  msgstr "i denne kontekst"
  
! #: cp/call.cc:8377 cp/decl.cc:9615
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "declared private here"
--- 57995,58001 ----
  msgid "%q#D is private within this context"
  msgstr "i denne kontekst"
  
! #: cp/call.cc:8377 cp/decl.cc:9613
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "declared private here"
*************** msgstr "  '%#D' erklÃ¦ret her"
*** 57942,57948 ****
  msgid "%q#D is protected within this context"
  msgstr "i denne kontekst"
  
! #: cp/call.cc:8383 cp/decl.cc:9616
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "declared protected here"
--- 58007,58013 ----
  msgid "%q#D is protected within this context"
  msgstr "i denne kontekst"
  
! #: cp/call.cc:8383 cp/decl.cc:9614
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "declared protected here"
*************** msgstr "parameter der ikke er et kommata
*** 58309,58315 ****
  msgid "constructor delegates to itself"
  msgstr "konstruktionsfunktioner kan ikke erklÃ¦res virtual"
  
! #: cp/call.cc:11805 cp/typeck.cc:10490
  #, fuzzy
  #| msgid "cannot convert `%T' to `%T' in %s"
  msgid "cannot convert %qH to %qI"
--- 58374,58380 ----
  msgid "constructor delegates to itself"
  msgstr "konstruktionsfunktioner kan ikke erklÃ¦res virtual"
  
! #: cp/call.cc:11805 cp/typeck.cc:10606
  #, fuzzy
  #| msgid "cannot convert `%T' to `%T' in %s"
  msgid "cannot convert %qH to %qI"
*************** msgstr "ingen passende funktion for kald
*** 58331,58337 ****
  msgid "call to non-function %qD"
  msgstr "kald af ikke-funktion '%D'"
  
! #: cp/call.cc:11947 cp/pt.cc:17467 cp/typeck.cc:3508
  #, fuzzy, gcc-internal-format
  #| msgid "cannot call destructor `%T::~%T' without object"
  msgid "cannot call constructor %<%T::%D%> directly"
--- 58396,58402 ----
  msgid "call to non-function %qD"
  msgstr "kald af ikke-funktion '%D'"
  
! #: cp/call.cc:11947 cp/pt.cc:17496 cp/typeck.cc:3508
  #, fuzzy, gcc-internal-format
  #| msgid "cannot call destructor `%T::~%T' without object"
  msgid "cannot call constructor %<%T::%D%> directly"
*************** msgid "%q#D cannot be overloaded with %q
*** 58511,58518 ****
  msgstr "'%#D' og '%#D' kan ikke flertydiggÃ¸res"
  
  # hÃ¦nger sammen med nÃ¦ste tekst
! #: cp/class.cc:1461 cp/decl.cc:1946 cp/decl.cc:1958 cp/decl.cc:1984
! #: cp/decl.cc:2006 cp/name-lookup.cc:2918 cp/name-lookup.cc:3235
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration `%D'"
  msgid "previous declaration %q#D"
--- 58576,58583 ----
  msgstr "'%#D' og '%#D' kan ikke flertydiggÃ¸res"
  
  # hÃ¦nger sammen med nÃ¦ste tekst
! #: cp/class.cc:1461 cp/decl.cc:1944 cp/decl.cc:1956 cp/decl.cc:1982
! #: cp/decl.cc:2004 cp/name-lookup.cc:2918 cp/name-lookup.cc:3235
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration `%D'"
  msgid "previous declaration %q#D"
*************** msgstr "ugyldig tildeling af startvÃ¦rdi
*** 58890,59107 ****
  msgid "  non-static data member %qD has volatile type"
  msgstr "'%T' har intet ikke-statisk medlem ved navn '%D'"
  
! #: cp/class.cc:6466
  #, fuzzy, gcc-internal-format
  #| msgid "base class `%#T' has a non-virtual destructor"
  msgid "base class %q#T has accessible non-virtual destructor"
  msgstr "stamklassen '%#T' har en ikke-virtuel destruktionsfunktion"
  
! #: cp/class.cc:6495
  #, fuzzy, gcc-internal-format
  #| msgid "non-static reference `%#D' in class without a constructor"
  msgid "non-static reference %q#D in class without a constructor"
  msgstr "ikke-statisk reference '%#D' i klasse uden en konstruktionsfunktion"
  
! #: cp/class.cc:6501
  #, fuzzy, gcc-internal-format
  #| msgid "non-static const member `%#D' in class without a constructor"
  msgid "non-static const member %q#D in class without a constructor"
  msgstr "ikke-statisk konstant medlem '%#D' i klasse uden en konstruktionsfunktion"
  
! #: cp/class.cc:6834
  #, gcc-internal-format
  msgid "offset of %qT base class for %<-std=c++14%> and up changes in %<-fabi-version=17%> (GCC 12)"
  msgstr ""
  
! #: cp/class.cc:6838
  #, fuzzy, gcc-internal-format
  #| msgid "assignment (not initialization) in declaration"
  msgid "offset of %qD for %<-std=c++14%> and up changes in %<-fabi-version=17%> (GCC 12)"
  msgstr "tildeling (ikke klargÃ¸ring) i erklÃ¦ring"
  
! #: cp/class.cc:6878
  #, fuzzy, gcc-internal-format
  #| msgid "direct base `%T' inaccessible in `%T' due to ambiguity"
  msgid "direct base %qT inaccessible in %qT due to ambiguity"
  msgstr "direkte stamklasse '%T' er ikke tilgÃ¦ngelig i '%T' pÃ¥ grund af tvetydighed"
  
! #: cp/class.cc:6890
  #, fuzzy, gcc-internal-format
  #| msgid "virtual base `%T' inaccessible in `%T' due to ambiguity"
  msgid "virtual base %qT inaccessible in %qT due to ambiguity"
  msgstr "virtuel stamklasse '%T' er ikke tilgÃ¦ngelig i '%T' pÃ¥ grund af tvetydighed"
  
! #: cp/class.cc:7132
  #, fuzzy, gcc-internal-format
  #| msgid "offset of `%D' is not ABI-compliant and may change in a future version of GCC"
  msgid "offset of %qD is not ABI-compliant and may change in a future version of GCC"
  msgstr "afsÃ¦ttet for '%D' fÃ¸lger ikke ABI'en og kan Ã¦ndre sig i en fremtidig version af GCC"
  
! #: cp/class.cc:7328
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%s' is too large"
  msgid "size of type %qT is too large (%qE bytes)"
  msgstr "stÃ¸rrelsen af tabellen '%s' er for stor"
  
! #: cp/class.cc:7649
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of %<...%> with non-slice"
  msgid "invalid use of %q#T with a zero-size array in %q#D"
  msgstr "ugyldig brug af %<...%> med ikke-skive"
  
! #: cp/class.cc:7650
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of structure with flexible array member"
  msgid "invalid use of %q#T with a flexible array member in %q#T"
  msgstr "ugyldig brug af struktur med fleksibelt tabelmedlem"
  
! #: cp/class.cc:7655
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "array member %q#D declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/class.cc:7684
  #, fuzzy, gcc-internal-format
  msgid "zero-size array member %qD not at end of %q#T"
  msgstr "fleksibelt tabelmedlem ikke i slutningen af struktur"
  
! #: cp/class.cc:7686
  #, fuzzy, gcc-internal-format
  msgid "zero-size array member %qD in an otherwise empty %q#T"
  msgstr "fleksibelt tabelmedlem i ellers tom struktur"
  
! #: cp/class.cc:7695 cp/class.cc:7730
  #, fuzzy, gcc-internal-format
  #| msgid "redefinition of `%#T'"
  msgid "in the definition of %q#T"
  msgstr "omdefinering af '%#T'"
  
! #: cp/class.cc:7703
  #, fuzzy, gcc-internal-format
  msgid "flexible array member %qD not at end of %q#T"
  msgstr "fleksibelt tabelmedlem ikke i slutningen af struktur"
  
! #: cp/class.cc:7705
  #, fuzzy, gcc-internal-format
  msgid "flexible array member %qD in an otherwise empty %q#T is a GCC extension"
  msgstr "fleksibelt tabelmedlem i ellers tom struktur"
  
! #: cp/class.cc:7728
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "next member %q#D declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/class.cc:7840 cp/decl.cc:18273 cp/parser.cc:28411
  #, fuzzy, gcc-internal-format
  #| msgid "redefinition of `%#T'"
  msgid "redefinition of %q#T"
  msgstr "omdefinering af '%#T'"
  
! #: cp/class.cc:7987
  #, fuzzy, gcc-internal-format
  #| msgid "`%#T' has virtual functions but non-virtual destructor"
  msgid "%q#T has virtual functions and accessible non-virtual destructor"
  msgstr "'%#T' har virtuelle funktioner, men ikke-virtuel destruktionsfunktion"
  
! #: cp/class.cc:8015
  #, fuzzy, gcc-internal-format
  #| msgid "class `%T' does not have any field named `%D'"
  msgid "type transparent %q#T does not have any fields"
  msgstr "klassen '%T' har ikke et felt ved navn '%D'"
  
! #: cp/class.cc:8021
  #, gcc-internal-format
  msgid "type transparent class %qT has base classes"
  msgstr ""
  
! #: cp/class.cc:8025
  #, fuzzy, gcc-internal-format
  msgid "type transparent class %qT has virtual functions"
  msgstr "  eftersom typen '%T' har abstrakte virtuelle funktioner"
  
! #: cp/class.cc:8031
  #, gcc-internal-format
  msgid "type transparent %q#T cannot be made transparent because the type of the first field has a different ABI from the class overall"
  msgstr ""
  
! #: cp/class.cc:8202
  #, fuzzy, gcc-internal-format
  #| msgid "brace-enclosed initializer used to initialize `%T'"
  msgid "definition of %qD does not match %<#include <initializer_list>%>"
  msgstr "startvÃ¦rdi i krÃ¸llede paranteser benyttet til at klargÃ¸re '%T'"
  
! #: cp/class.cc:8213
  #, gcc-internal-format
  msgid "trying to finish struct, but kicked out due to previous parse errors"
  msgstr "forsÃ¸gte at afslutte struct, men blev stoppet af tidligere fortolkningsfejl"
  
! #: cp/class.cc:8720
  #, fuzzy, gcc-internal-format
  #| msgid "language string `\"%s\"' not recognized"
  msgid "language string %<\"%E\"%> not recognized"
  msgstr "sprogstrengen '\"%s\"' ikke genkendt"
  
! #: cp/class.cc:8810
  #, fuzzy, gcc-internal-format
  #| msgid "cannot resolve overloaded function `%D' based on conversion to type `%T'"
  msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
  msgstr "kan ikke benytte den flertydiggjorte funktion '%D' baseret pÃ¥ konvertering til typen '%T'"
  
! #: cp/class.cc:8976
  #, fuzzy, gcc-internal-format
  #| msgid "no matches converting function `%D' to type `%#T'"
  msgid "no matches converting function %qD to type %q#T"
  msgstr "ingen passende ved konvertering af funktionen '%D' til typen '%#T'"
  
! #: cp/class.cc:9004
  #, fuzzy, gcc-internal-format
  #| msgid "converting overloaded function `%D' to type `%#T' is ambiguous"
  msgid "converting overloaded function %qD to type %q#T is ambiguous"
  msgstr "konvertering af den flertydiggjorte funktion '%D' til typen '%T' er tvetydig"
  
! #: cp/class.cc:9046
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to explicit object member function."
  msgstr "ISO C++ forbyder at tage adressen pÃ¥ en ikke-modificeret, ikke-statisk medlemsfunktion for at danne en henvisning til medlemsfunktion; brug '&%T::%D'"
  
! #: cp/class.cc:9051
  #, fuzzy, gcc-internal-format
  #| msgid "(a pointer to member can only be formed with `&%E')"
  msgid "a pointer to explicit object member function can only be formed with %<&%E%>"
  msgstr "(en henvisning til medlem kan kun dannes med '&%E')"
  
! #: cp/class.cc:9061
  #, fuzzy, gcc-internal-format
  #| msgid "assuming pointer to member `%D'"
  msgid "assuming pointer to member %qD"
  msgstr "antager henvisning til medlemmet '%D'"
  
! #: cp/class.cc:9064
  #, fuzzy, gcc-internal-format
  #| msgid "(a pointer to member can only be formed with `&%E')"
  msgid "(a pointer to member can only be formed with %<&%E%>)"
  msgstr "(en henvisning til medlem kan kun dannes med '&%E')"
  
! #: cp/class.cc:9143
  #, gcc-internal-format
  msgid "not enough type information"
  msgstr "ikke tilstrÃ¦kkelig information om typen"
  
! #: cp/class.cc:9163
  #, fuzzy, gcc-internal-format
  #| msgid "cannot convert `%E' from type `%T' to type `%T'"
  msgid "cannot convert %qE from type %qT to type %qT"
  msgstr "kan ikke konvertere '%E' fra typen '%T' til typen '%T'"
  
! #: cp/class.cc:9464
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%s' shadows a member of `this'"
  msgid "declaration of %q#D changes meaning of %qD"
  msgstr "erklÃ¦ring af '%s' skygger for et medlem af 'this'"
  
! #: cp/class.cc:9467
  #, fuzzy, gcc-internal-format
  #| msgid "redeclared here as `%#D'"
  msgid "used here to mean %q#D"
--- 58955,59182 ----
  msgid "  non-static data member %qD has volatile type"
  msgstr "'%T' har intet ikke-statisk medlem ved navn '%D'"
  
! #: cp/class.cc:6478
  #, fuzzy, gcc-internal-format
  #| msgid "base class `%#T' has a non-virtual destructor"
  msgid "base class %q#T has accessible non-virtual destructor"
  msgstr "stamklassen '%#T' har en ikke-virtuel destruktionsfunktion"
  
! #: cp/class.cc:6507
  #, fuzzy, gcc-internal-format
  #| msgid "non-static reference `%#D' in class without a constructor"
  msgid "non-static reference %q#D in class without a constructor"
  msgstr "ikke-statisk reference '%#D' i klasse uden en konstruktionsfunktion"
  
! #: cp/class.cc:6513
  #, fuzzy, gcc-internal-format
  #| msgid "non-static const member `%#D' in class without a constructor"
  msgid "non-static const member %q#D in class without a constructor"
  msgstr "ikke-statisk konstant medlem '%#D' i klasse uden en konstruktionsfunktion"
  
! #: cp/class.cc:6853
  #, gcc-internal-format
  msgid "offset of %qT base class for %<-std=c++14%> and up changes in %<-fabi-version=17%> (GCC 12)"
  msgstr ""
  
! #: cp/class.cc:6858
! #, gcc-internal-format
! msgid "offset of %qT base class for %<-std=c++20%> and up changes in %<-fabi-version=21%> (GCC 16)"
! msgstr ""
! 
! #: cp/class.cc:6866
  #, fuzzy, gcc-internal-format
  #| msgid "assignment (not initialization) in declaration"
  msgid "offset of %qD for %<-std=c++14%> and up changes in %<-fabi-version=17%> (GCC 12)"
  msgstr "tildeling (ikke klargÃ¸ring) i erklÃ¦ring"
  
! #: cp/class.cc:6871
! #, gcc-internal-format
! msgid "offset of %qD for %<-std=c++20%> and up changes in %<-fabi-version=21%> (GCC 16)"
! msgstr ""
! 
! #: cp/class.cc:6912
  #, fuzzy, gcc-internal-format
  #| msgid "direct base `%T' inaccessible in `%T' due to ambiguity"
  msgid "direct base %qT inaccessible in %qT due to ambiguity"
  msgstr "direkte stamklasse '%T' er ikke tilgÃ¦ngelig i '%T' pÃ¥ grund af tvetydighed"
  
! #: cp/class.cc:6924
  #, fuzzy, gcc-internal-format
  #| msgid "virtual base `%T' inaccessible in `%T' due to ambiguity"
  msgid "virtual base %qT inaccessible in %qT due to ambiguity"
  msgstr "virtuel stamklasse '%T' er ikke tilgÃ¦ngelig i '%T' pÃ¥ grund af tvetydighed"
  
! #: cp/class.cc:7166
  #, fuzzy, gcc-internal-format
  #| msgid "offset of `%D' is not ABI-compliant and may change in a future version of GCC"
  msgid "offset of %qD is not ABI-compliant and may change in a future version of GCC"
  msgstr "afsÃ¦ttet for '%D' fÃ¸lger ikke ABI'en og kan Ã¦ndre sig i en fremtidig version af GCC"
  
! #: cp/class.cc:7362
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%s' is too large"
  msgid "size of type %qT is too large (%qE bytes)"
  msgstr "stÃ¸rrelsen af tabellen '%s' er for stor"
  
! #: cp/class.cc:7683
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of %<...%> with non-slice"
  msgid "invalid use of %q#T with a zero-size array in %q#D"
  msgstr "ugyldig brug af %<...%> med ikke-skive"
  
! #: cp/class.cc:7684
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of structure with flexible array member"
  msgid "invalid use of %q#T with a flexible array member in %q#T"
  msgstr "ugyldig brug af struktur med fleksibelt tabelmedlem"
  
! #: cp/class.cc:7689
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "array member %q#D declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/class.cc:7718
  #, fuzzy, gcc-internal-format
  msgid "zero-size array member %qD not at end of %q#T"
  msgstr "fleksibelt tabelmedlem ikke i slutningen af struktur"
  
! #: cp/class.cc:7720
  #, fuzzy, gcc-internal-format
  msgid "zero-size array member %qD in an otherwise empty %q#T"
  msgstr "fleksibelt tabelmedlem i ellers tom struktur"
  
! #: cp/class.cc:7729 cp/class.cc:7764
  #, fuzzy, gcc-internal-format
  #| msgid "redefinition of `%#T'"
  msgid "in the definition of %q#T"
  msgstr "omdefinering af '%#T'"
  
! #: cp/class.cc:7737
  #, fuzzy, gcc-internal-format
  msgid "flexible array member %qD not at end of %q#T"
  msgstr "fleksibelt tabelmedlem ikke i slutningen af struktur"
  
! #: cp/class.cc:7739
  #, fuzzy, gcc-internal-format
  msgid "flexible array member %qD in an otherwise empty %q#T is a GCC extension"
  msgstr "fleksibelt tabelmedlem i ellers tom struktur"
  
! #: cp/class.cc:7762
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "next member %q#D declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/class.cc:7874 cp/decl.cc:18271 cp/parser.cc:28464
  #, fuzzy, gcc-internal-format
  #| msgid "redefinition of `%#T'"
  msgid "redefinition of %q#T"
  msgstr "omdefinering af '%#T'"
  
! #: cp/class.cc:8021
  #, fuzzy, gcc-internal-format
  #| msgid "`%#T' has virtual functions but non-virtual destructor"
  msgid "%q#T has virtual functions and accessible non-virtual destructor"
  msgstr "'%#T' har virtuelle funktioner, men ikke-virtuel destruktionsfunktion"
  
! #: cp/class.cc:8049
  #, fuzzy, gcc-internal-format
  #| msgid "class `%T' does not have any field named `%D'"
  msgid "type transparent %q#T does not have any fields"
  msgstr "klassen '%T' har ikke et felt ved navn '%D'"
  
! #: cp/class.cc:8055
  #, gcc-internal-format
  msgid "type transparent class %qT has base classes"
  msgstr ""
  
! #: cp/class.cc:8059
  #, fuzzy, gcc-internal-format
  msgid "type transparent class %qT has virtual functions"
  msgstr "  eftersom typen '%T' har abstrakte virtuelle funktioner"
  
! #: cp/class.cc:8065
  #, gcc-internal-format
  msgid "type transparent %q#T cannot be made transparent because the type of the first field has a different ABI from the class overall"
  msgstr ""
  
! #: cp/class.cc:8236
  #, fuzzy, gcc-internal-format
  #| msgid "brace-enclosed initializer used to initialize `%T'"
  msgid "definition of %qD does not match %<#include <initializer_list>%>"
  msgstr "startvÃ¦rdi i krÃ¸llede paranteser benyttet til at klargÃ¸re '%T'"
  
! #: cp/class.cc:8247
  #, gcc-internal-format
  msgid "trying to finish struct, but kicked out due to previous parse errors"
  msgstr "forsÃ¸gte at afslutte struct, men blev stoppet af tidligere fortolkningsfejl"
  
! #: cp/class.cc:8754
  #, fuzzy, gcc-internal-format
  #| msgid "language string `\"%s\"' not recognized"
  msgid "language string %<\"%E\"%> not recognized"
  msgstr "sprogstrengen '\"%s\"' ikke genkendt"
  
! #: cp/class.cc:8844
  #, fuzzy, gcc-internal-format
  #| msgid "cannot resolve overloaded function `%D' based on conversion to type `%T'"
  msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
  msgstr "kan ikke benytte den flertydiggjorte funktion '%D' baseret pÃ¥ konvertering til typen '%T'"
  
! #: cp/class.cc:9010
  #, fuzzy, gcc-internal-format
  #| msgid "no matches converting function `%D' to type `%#T'"
  msgid "no matches converting function %qD to type %q#T"
  msgstr "ingen passende ved konvertering af funktionen '%D' til typen '%#T'"
  
! #: cp/class.cc:9038
  #, fuzzy, gcc-internal-format
  #| msgid "converting overloaded function `%D' to type `%#T' is ambiguous"
  msgid "converting overloaded function %qD to type %q#T is ambiguous"
  msgstr "konvertering af den flertydiggjorte funktion '%D' til typen '%T' er tvetydig"
  
! #: cp/class.cc:9080
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to explicit object member function."
  msgstr "ISO C++ forbyder at tage adressen pÃ¥ en ikke-modificeret, ikke-statisk medlemsfunktion for at danne en henvisning til medlemsfunktion; brug '&%T::%D'"
  
! #: cp/class.cc:9085
  #, fuzzy, gcc-internal-format
  #| msgid "(a pointer to member can only be formed with `&%E')"
  msgid "a pointer to explicit object member function can only be formed with %<&%E%>"
  msgstr "(en henvisning til medlem kan kun dannes med '&%E')"
  
! #: cp/class.cc:9095
  #, fuzzy, gcc-internal-format
  #| msgid "assuming pointer to member `%D'"
  msgid "assuming pointer to member %qD"
  msgstr "antager henvisning til medlemmet '%D'"
  
! #: cp/class.cc:9098
  #, fuzzy, gcc-internal-format
  #| msgid "(a pointer to member can only be formed with `&%E')"
  msgid "(a pointer to member can only be formed with %<&%E%>)"
  msgstr "(en henvisning til medlem kan kun dannes med '&%E')"
  
! #: cp/class.cc:9177
  #, gcc-internal-format
  msgid "not enough type information"
  msgstr "ikke tilstrÃ¦kkelig information om typen"
  
! #: cp/class.cc:9197
  #, fuzzy, gcc-internal-format
  #| msgid "cannot convert `%E' from type `%T' to type `%T'"
  msgid "cannot convert %qE from type %qT to type %qT"
  msgstr "kan ikke konvertere '%E' fra typen '%T' til typen '%T'"
  
! #: cp/class.cc:9498
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%s' shadows a member of `this'"
  msgid "declaration of %q#D changes meaning of %qD"
  msgstr "erklÃ¦ring af '%s' skygger for et medlem af 'this'"
  
! #: cp/class.cc:9501
  #, fuzzy, gcc-internal-format
  #| msgid "redeclared here as `%#D'"
  msgid "used here to mean %q#D"
*************** msgstr "ugyldig returtype for medlemsfun
*** 59143,59149 ****
  msgid "lambdas are implicitly %<constexpr%> only in C++17 and later"
  msgstr ""
  
! #: cp/constexpr.cc:270 cp/decl.cc:15267
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<constexpr%> destructors only available with %<-std=c++20%> or %<-std=gnu++20%>"
--- 59218,59224 ----
  msgid "lambdas are implicitly %<constexpr%> only in C++17 and later"
  msgstr ""
  
! #: cp/constexpr.cc:270 cp/decl.cc:15265
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<constexpr%> destructors only available with %<-std=c++20%> or %<-std=gnu++20%>"
*************** msgstr ""
*** 59191,59197 ****
  msgid "%qD is not usable as a %<constexpr%> function because:"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:1347 cp/constexpr.cc:6580
  #, gcc-internal-format
  msgid "destroying %qE outside its lifetime"
  msgstr ""
--- 59266,59272 ----
  msgid "%qD is not usable as a %<constexpr%> function because:"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:1347 cp/constexpr.cc:6596
  #, gcc-internal-format
  msgid "destroying %qE outside its lifetime"
  msgstr ""
*************** msgid "%q+E is not a constant expression
*** 59211,59223 ****
  msgstr "Manglende eller ugyldigt konstant udtryk"
  
  #: cp/constexpr.cc:1897 cp/constexpr.cc:2796 cp/constexpr.cc:3080
! #: cp/constexpr.cc:10113 rust/backend/rust-constexpr.cc:5789
  #, fuzzy, gcc-internal-format
  #| msgid "call to non-function `%D'"
  msgid "call to non-%<constexpr%> function %qD"
  msgstr "kald af ikke-funktion '%D'"
  
! #: cp/constexpr.cc:1944 cp/constexpr.cc:6138 cp/constexpr.cc:8586
  #: rust/backend/rust-constexpr.cc:875 rust/backend/rust-constexpr.cc:2494
  #, fuzzy, gcc-internal-format
  #| msgid "dereferencing `void *' pointer"
--- 59286,59298 ----
  msgstr "Manglende eller ugyldigt konstant udtryk"
  
  #: cp/constexpr.cc:1897 cp/constexpr.cc:2796 cp/constexpr.cc:3080
! #: cp/constexpr.cc:10135 rust/backend/rust-constexpr.cc:5789
  #, fuzzy, gcc-internal-format
  #| msgid "call to non-function `%D'"
  msgid "call to non-%<constexpr%> function %qD"
  msgstr "kald af ikke-funktion '%D'"
  
! #: cp/constexpr.cc:1944 cp/constexpr.cc:6153 cp/constexpr.cc:8608
  #: rust/backend/rust-constexpr.cc:875 rust/backend/rust-constexpr.cc:2494
  #, fuzzy, gcc-internal-format
  #| msgid "dereferencing `void *' pointer"
*************** msgstr "brugerdefineret '%D' evaluerer a
*** 59241,59247 ****
  msgid "failed %<assume%> attribute assumption"
  msgstr ""
  
! #: cp/constexpr.cc:2249 cp/constexpr.cc:10077
  #: rust/backend/rust-constexpr.cc:5758
  #, fuzzy, gcc-internal-format
  #| msgid "call to non-function `%D'"
--- 59316,59322 ----
  msgid "failed %<assume%> attribute assumption"
  msgstr ""
  
! #: cp/constexpr.cc:2249 cp/constexpr.cc:10099
  #: rust/backend/rust-constexpr.cc:5758
  #, fuzzy, gcc-internal-format
  #| msgid "call to non-function `%D'"
*************** msgstr "manglende startvÃ¦rdi for medlem
*** 59448,59458 ****
  msgid "dereferencing a null pointer in %qE"
  msgstr "forsÃ¸g pÃ¥ at fÃ¸lge en 'void *'-henvisning"
  
! #: cp/constexpr.cc:4797 cp/constexpr.cc:4913 cp/constexpr.cc:4925
! #: cp/constexpr.cc:7761 cp/constexpr.cc:7892 cp/constexpr.cc:10027
! #: rust/backend/rust-constexpr.cc:1738 rust/backend/rust-constexpr.cc:1983
! #: rust/backend/rust-constexpr.cc:2225 rust/backend/rust-constexpr.cc:4743
! #: rust/backend/rust-constexpr.cc:5712
  #, fuzzy, gcc-internal-format
  #| msgid "Missing or invalid constant expression"
  msgid "%qE is not a constant expression"
--- 59523,59533 ----
  msgid "dereferencing a null pointer in %qE"
  msgstr "forsÃ¸g pÃ¥ at fÃ¸lge en 'void *'-henvisning"
  
! #: cp/constexpr.cc:4797 cp/constexpr.cc:4925 cp/constexpr.cc:4937
! #: cp/constexpr.cc:7777 cp/constexpr.cc:7908 cp/constexpr.cc:10049
! #: cp/constexpr.cc:11043 rust/backend/rust-constexpr.cc:1738
! #: rust/backend/rust-constexpr.cc:1983 rust/backend/rust-constexpr.cc:2225
! #: rust/backend/rust-constexpr.cc:4743 rust/backend/rust-constexpr.cc:5712
  #, fuzzy, gcc-internal-format
  #| msgid "Missing or invalid constant expression"
  msgid "%qE is not a constant expression"
*************** msgstr "Manglende eller ugyldigt konstan
*** 59463,59955 ****
  msgid "mutable %qD is not usable in a constant expression"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:4837 cp/constexpr.cc:4873 cp/constexpr.cc:6748
  #: rust/backend/rust-constexpr.cc:1774 rust/backend/rust-constexpr.cc:1797
  #, fuzzy, gcc-internal-format
  #| msgid "missing initializer for member `%D'"
  msgid "accessing uninitialized member %qD"
  msgstr "manglende startvÃ¦rdi for medlemmet '%D'"
  
! #: cp/constexpr.cc:4839 cp/constexpr.cc:4852 cp/constexpr.cc:6743
  #: rust/backend/rust-constexpr.cc:1776
  #, gcc-internal-format
  msgid "accessing %qD member instead of initialized %qD member in constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:4991
  #, fuzzy, gcc-internal-format
  #| msgid "Missing or invalid constant expression"
  msgid "%qs is not a constant expression because %qT is a union type"
  msgstr "Manglende eller ugyldigt konstant udtryk"
  
! #: cp/constexpr.cc:4994
  #, fuzzy, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a union type"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:5005
  #, fuzzy, gcc-internal-format
  msgid "%qs is not a constant expression because %qT is a pointer type"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:5008
  #, fuzzy, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a pointer type"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:5019
  #, fuzzy, gcc-internal-format
  msgid "%qs is not a constant expression because %qT is a reference type"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:5022
  #, fuzzy, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a reference type"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:5033
  #, fuzzy, gcc-internal-format
  msgid "%qs is not a constant expression because %qT is a pointer to member type"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:5037
  #, fuzzy, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a pointer to member type"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:5048
  #, fuzzy, gcc-internal-format
  #| msgid "Missing or invalid constant expression"
  msgid "%qs is not a constant expression because %qT is volatile"
  msgstr "Manglende eller ugyldigt konstant udtryk"
  
! #: cp/constexpr.cc:5051
  #, fuzzy, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a volatile subobject"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:5206
  #, fuzzy, gcc-internal-format
  #| msgid "nested functions not supported on this target"
  msgid "%qs cannot be constant evaluated on the target"
  msgstr "-indlejrede funktioner er ikke understÃ¸ttet pÃ¥ denne mÃ¥larkitektur"
  
! #: cp/constexpr.cc:5215 cp/constexpr.cc:5225
  #, gcc-internal-format
  msgid "%qs cannot be constant evaluated because the type is too large"
  msgstr ""
  
! #: cp/constexpr.cc:5245
  #, gcc-internal-format
  msgid "%qs cannot be constant evaluated because the argument cannot be encoded"
  msgstr ""
  
! #: cp/constexpr.cc:5291
  #, fuzzy, gcc-internal-format
  #| msgid "missing initializer for member `%D'"
  msgid "%qs accessing uninitialized byte at offset %d"
  msgstr "manglende startvÃ¦rdi for medlemmet '%D'"
  
! #: cp/constexpr.cc:5303
  #, gcc-internal-format
  msgid "%qs cannot be constant evaluated because the argument cannot be interpreted"
  msgstr ""
  
! #: cp/constexpr.cc:6158 rust/backend/rust-constexpr.cc:895
  #, fuzzy, gcc-internal-format
  #| msgid "Missing or invalid constant expression"
  msgid "accessing value of %qE through a %qT glvalue in a constant expression"
  msgstr "Manglende eller ugyldigt konstant udtryk"
  
  #. Provide a more accurate message for deleted variables.
! #: cp/constexpr.cc:6198 cp/constexpr.cc:6231
  #, fuzzy, gcc-internal-format
  #| msgid "overflow in constant expression"
  msgid "use of allocated storage after deallocation in a constant expression"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:6200 cp/constexpr.cc:6226 cp/constexpr.cc:6233
! #: cp/constexpr.cc:6575
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "allocated here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/constexpr.cc:6204
  #, gcc-internal-format
  msgid "accessing %qE outside its lifetime"
  msgstr ""
  
! #: cp/constexpr.cc:6224
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%D' is not an integral constant-expression"
  msgid "the content of uninitialized storage is not usable in a constant expression"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:6236 rust/backend/rust-constexpr.cc:4041
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%D' is not an integral constant-expression"
  msgid "the value of %qD is not usable in a constant expression"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:6244
  #, fuzzy, gcc-internal-format
  #| msgid "excess elements in union initializer"
  msgid "%qD used in its own initializer"
  msgstr "for mange elementer i union-startvÃ¦rdi"
  
! #: cp/constexpr.cc:6249
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function,"
  msgid "%q#D is not const"
  msgstr "'%s' er ikke en funktion,"
  
! #: cp/constexpr.cc:6252
  #, fuzzy, gcc-internal-format
  #| msgid "`%+#D' is private"
  msgid "%q#D is volatile"
  msgstr "'%+#D' er privat"
  
! #: cp/constexpr.cc:6257 cp/constexpr.cc:6264
  #, fuzzy, gcc-internal-format
  msgid "%qD was not initialized with a constant expression"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:6270
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' was not declared in this scope"
  msgid "%qD was not declared %<constexpr%>"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: cp/constexpr.cc:6273
  #, fuzzy, gcc-internal-format
  msgid "%qD does not have integral or enumeration type"
  msgstr "stÃ¸rrelse i tabel-new skal vÃ¦re en heltalstype"
  
! #: cp/constexpr.cc:6573
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "modification of allocated storage after deallocation is not a constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:6582
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "modification of %qE outside its lifetime is not a constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:6589
  #, fuzzy, gcc-internal-format
  msgid "destroying %qE from outside current evaluation is not a constant expression"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:6592
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "modification of %qE from outside current evaluation is not a constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:6723
  #, fuzzy, gcc-internal-format
  #| msgid "overflow in constant expression"
  msgid "change of the active member of a union from %qD to %qD is not a constant expression before C++20"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:6752
  #, gcc-internal-format
  msgid "%qD does not implicitly begin its lifetime because %qT does not have a non-deleted trivial default constructor, use %<std::construct_at%> instead"
  msgstr ""
  
! #: cp/constexpr.cc:6759
  #, gcc-internal-format
  msgid "initializing %qD requires a member access expression as the left operand of the assignment"
  msgstr ""
  
! #: cp/constexpr.cc:6771 rust/backend/rust-constexpr.cc:2820
  #, fuzzy, gcc-internal-format
  #| msgid "cannot convert `%T' to `%T' in %s"
  msgid "change of the active member of a union from %qD to %qD during initialization"
  msgstr "kan ikke konvertere '%T' til '%T' i %s"
  
! #: cp/constexpr.cc:7223 cp/constexpr.cc:8928 cp/constexpr.cc:8940
  #: rust/backend/rust-constexpr.cc:4668
  #, fuzzy, gcc-internal-format
  msgid "statement is not a constant expression"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:7430 rust/backend/rust-constexpr.cc:4933
  #, fuzzy, gcc-internal-format
  #| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating `%D'"
  msgid "%<constexpr%> loop iteration count exceeds limit of %d (use %<-fconstexpr-loop-limit=%> to increase the limit)"
  msgstr "skabelonsinstantieringsdybden overskrider maksimum pÃ¥ %d (benyt -ftemplate-depth-NN for at forÃ¸ge maksimum) ved instantiering af '%D'"
  
! #: cp/constexpr.cc:7539 rust/backend/rust-constexpr.cc:999
  #, fuzzy, gcc-internal-format
  #| msgid "initializer element is not constant"
  msgid "inline assembly is not a constant expression"
  msgstr "startvÃ¦rdielement er ikke en konstant"
  
! #: cp/constexpr.cc:7541 rust/backend/rust-constexpr.cc:1000
  #, gcc-internal-format
  msgid "only unevaluated inline assembly is allowed in a %<constexpr%> function in C++20"
  msgstr ""
  
! #: cp/constexpr.cc:7560
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `%D'"
  msgid "use of %qD"
  msgstr "ugyldig brug af '%D"
  
! #: cp/constexpr.cc:7564
  #, gcc-internal-format
  msgid "its value can vary between compiler versions or with different %<-mtune%> or %<-mcpu%> flags"
  msgstr ""
  
! #: cp/constexpr.cc:7566
  #, gcc-internal-format
  msgid "if this use is part of a public ABI, change it to instead use a constant variable you define"
  msgstr ""
  
! #: cp/constexpr.cc:7568
  #, gcc-internal-format, gfc-internal-format
  msgid "the default value for the current CPU tuning is %d bytes"
  msgstr ""
  
! #: cp/constexpr.cc:7570
  #, gcc-internal-format
  msgid "you can stabilize this value with %<--param hardware_destructive_interference_size=%d%>, or disable this warning with %<-Wno-interference-size%>"
  msgstr ""
  
! #: cp/constexpr.cc:7723
  #, fuzzy, gcc-internal-format
  #| msgid "Missing or invalid constant expression"
  msgid "value %qE of type %qT is not a constant expression"
  msgstr "Manglende eller ugyldigt konstant udtryk"
  
! #: cp/constexpr.cc:7736
  #, fuzzy, gcc-internal-format
  #| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating `%D'"
  msgid "%<constexpr%> evaluation operation count exceeds limit of %wd (use %<-fconstexpr-ops-limit=%> to increase the limit)"
  msgstr "skabelonsinstantieringsdybden overskrider maksimum pÃ¥ %d (benyt -ftemplate-depth-NN for at forÃ¸ge maksimum) ved instantiering af '%D'"
  
! #: cp/constexpr.cc:7922
  #, gcc-internal-format
  msgid "control passes through definition of %qD with thread storage duration"
  msgstr ""
  
! #: cp/constexpr.cc:7925
  #, gcc-internal-format
  msgid "control passes through definition of %qD with static storage duration"
  msgstr ""
  
! #: cp/constexpr.cc:7990 cp/constexpr.cc:10723
  #: rust/backend/rust-constexpr.cc:2056 rust/backend/rust-constexpr.cc:6206
  #, fuzzy, gcc-internal-format
  #| msgid "enumeral and non-enumeral type in conditional expression"
  msgid "temporary of non-literal type %qT in a constant expression"
  msgstr "enum- og ikke enum-type i betinget udtryk"
  
! #: cp/constexpr.cc:8448 cp/constexpr.cc:10228
  #, fuzzy, gcc-internal-format
  msgid "%<reinterpret_cast%> is not a constant expression"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:8479 rust/backend/rust-constexpr.cc:2461
  #, fuzzy, gcc-internal-format
  msgid "conversion from pointer type %qT to arithmetic type %qT in a constant expression"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:8531
  #, gcc-internal-format
  msgid "cast from %qT is not allowed in a constant expression because pointed-to type %qT is not similar to %qT"
  msgstr ""
  
! #: cp/constexpr.cc:8541
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "pointed-to object declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/constexpr.cc:8549
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%D' is not an integral constant-expression"
  msgid "cast from %qT is not allowed in a constant expression before C++26"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:8563
  #, fuzzy, gcc-internal-format
  msgid "%qE is not a constant expression when the class %qT is still incomplete"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:8603 rust/backend/rust-constexpr.cc:2506
  #, fuzzy, gcc-internal-format
  msgid "%<reinterpret_cast<%T>(%E)%> is not a constant expression"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:8741 cp/constexpr.cc:10535 cp/constexpr.cc:10946
  #: rust/backend/rust-constexpr.cc:6100 rust/backend/rust-constexpr.cc:6415
  #, fuzzy, gcc-internal-format
  msgid "expression %qE is not a constant expression"
  msgstr "stÃ¸rrelsen af medlemmet '%D' er ikke konstant"
  
! #: cp/constexpr.cc:8785 cp/constexpr.cc:10987
  #, fuzzy, gcc-internal-format
  #| msgid "Missing or invalid constant expression"
  msgid "%<goto%> is not a constant expression"
  msgstr "Manglende eller ugyldigt konstant udtryk"
  
! #: cp/constexpr.cc:8843
  #, fuzzy, gcc-internal-format
  msgid "contract predicate is false in constant expression"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:8878
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "address of a call to %qs is not a constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:8943
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "unexpected expression %qE of kind %s"
  msgstr "uventet adresseudtryk"
  
! #: cp/constexpr.cc:9242 rust/backend/rust-constexpr.cc:5158
  #, gcc-internal-format
  msgid "%qE is not a constant expression because it refers to mutable subobjects of %qT"
  msgstr ""
  
! #: cp/constexpr.cc:9250 rust/backend/rust-constexpr.cc:5167
  #, fuzzy, gcc-internal-format
  msgid "%qE is not a constant expression because it refers to an incompletely initialized variable"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:9266 rust/backend/rust-constexpr.cc:5183
  #, fuzzy, gcc-internal-format
  msgid "%qE is not a constant expression because it refers to a result of %<operator new%>"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:9277 rust/backend/rust-constexpr.cc:5195
  #, fuzzy, gcc-internal-format
  msgid "%qE is not a constant expression because allocated storage has not been deallocated"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:9297 rust/backend/rust-constexpr.cc:5213
  #, gcc-internal-format
  msgid "immediate evaluation returns address of immediate function %qD"
  msgstr ""
  
! #: cp/constexpr.cc:9301
  #, fuzzy, gcc-internal-format
  #| msgid "%s cannot resolve address of overloaded function"
  msgid "constant evaluation returns address of immediate function %qD"
  msgstr "%s kan ikke finde adressen af flertydiggjort funktion"
  
! #: cp/constexpr.cc:9336
  #, fuzzy, gcc-internal-format
  msgid "%qE is not a constant expression because it initializes a %qT rather than %qT"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:9964 rust/backend/rust-constexpr.cc:5667
  #, fuzzy, gcc-internal-format
  #| msgid "invalid reinterpret_cast of an rvalue expression of type `%T' to type `%T'"
  msgid "lvalue-to-rvalue conversion of a volatile lvalue %qE with type %qT"
  msgstr "ugyldig reinterpret_cast af et hÃ¸jrevÃ¦rdiudtryk fra typen '%T' til typen '%T'"
  
! #: cp/constexpr.cc:10193
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "lambda capture of %qE is not a constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:10196
  #, gcc-internal-format
  msgid "because it is used as a glvalue"
  msgstr ""
  
! #: cp/constexpr.cc:10252 rust/backend/rust-constexpr.cc:5893
  #, fuzzy, gcc-internal-format
  #| msgid "invalid reinterpret_cast from type `%T' to type `%T'"
  msgid "%<reinterpret_cast%> from integer to pointer"
  msgstr "ugyldig reinterpret_cast fra typen '%T' til typen '%T'"
  
! #: cp/constexpr.cc:10286 rust/backend/rust-constexpr.cc:5921
  #, gcc-internal-format
  msgid "address-of an object %qE with thread local or automatic storage is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:10470
  #, fuzzy, gcc-internal-format
  #| msgid "overflow in constant expression"
  msgid "lambda-expression is not a constant expression before C++17"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:10482
  #, fuzzy, gcc-internal-format
  #| msgid "overflow in constant expression"
  msgid "new-expression is not a constant expression before C++20"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:10549
  #, fuzzy, gcc-internal-format
  #| msgid "virtual functions cannot be friends"
  msgid "virtual functions cannot be %<constexpr%> before C++20"
  msgstr "en virtuel funktion kan ikke erklÃ¦res som friend"
  
! #: cp/constexpr.cc:10565
  #, fuzzy, gcc-internal-format
  #| msgid "Missing or invalid constant expression"
  msgid "%<typeid%> is not a constant expression because %qE is of polymorphic type"
  msgstr "Manglende eller ugyldigt konstant udtryk"
  
! #: cp/constexpr.cc:10629
  #, fuzzy, gcc-internal-format
  msgid "cast to non-integral type %qT in a constant expression"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:10687
  #, fuzzy, gcc-internal-format
  #| msgid "field `%D' declared static in union"
  msgid "%qD defined %<thread_local%> in %<constexpr%> context"
  msgstr "feltet '%D' er erklÃ¦ret statisk i union"
  
! #: cp/constexpr.cc:10695
  #, fuzzy, gcc-internal-format
  #| msgid "field `%D' declared static in union"
  msgid "%qD defined %<static%> in %<constexpr%> context"
  msgstr "feltet '%D' er erklÃ¦ret statisk i union"
  
! #: cp/constexpr.cc:10773 rust/backend/rust-constexpr.cc:6251
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "division by zero is not a constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:10874 rust/backend/rust-constexpr.cc:6349
  #, fuzzy, gcc-internal-format
  msgid "%<delete[]%> is not a constant expression"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:10943
  #, fuzzy, gcc-internal-format
  #| msgid "overflow in constant expression"
  msgid "neither branch of %<if%> is a constant expression"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:10956
  #, fuzzy, gcc-internal-format
  #| msgid "nonconstant array index in initializer"
  msgid "non-constant array initialization"
  msgstr "tabelindekset i startvÃ¦rdien er ikke en konstant"
  
! #: cp/constexpr.cc:11004
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "label definition in %<constexpr%> function only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/constexpr.cc:11040 rust/backend/rust-constexpr.cc:6438
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "unexpected type for `id' (%s)"
  msgid "unexpected AST of kind %s"
--- 59538,60030 ----
  msgid "mutable %qD is not usable in a constant expression"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:4837 cp/constexpr.cc:4873 cp/constexpr.cc:6764
  #: rust/backend/rust-constexpr.cc:1774 rust/backend/rust-constexpr.cc:1797
  #, fuzzy, gcc-internal-format
  #| msgid "missing initializer for member `%D'"
  msgid "accessing uninitialized member %qD"
  msgstr "manglende startvÃ¦rdi for medlemmet '%D'"
  
! #: cp/constexpr.cc:4839 cp/constexpr.cc:4852 cp/constexpr.cc:6759
  #: rust/backend/rust-constexpr.cc:1776
  #, gcc-internal-format
  msgid "accessing %qD member instead of initialized %qD member in constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:5003
  #, fuzzy, gcc-internal-format
  #| msgid "Missing or invalid constant expression"
  msgid "%qs is not a constant expression because %qT is a union type"
  msgstr "Manglende eller ugyldigt konstant udtryk"
  
! #: cp/constexpr.cc:5006
  #, fuzzy, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a union type"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:5017
  #, fuzzy, gcc-internal-format
  msgid "%qs is not a constant expression because %qT is a pointer type"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:5020
  #, fuzzy, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a pointer type"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:5031
  #, fuzzy, gcc-internal-format
  msgid "%qs is not a constant expression because %qT is a reference type"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:5034
  #, fuzzy, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a reference type"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:5045
  #, fuzzy, gcc-internal-format
  msgid "%qs is not a constant expression because %qT is a pointer to member type"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:5049
  #, fuzzy, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a pointer to member type"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:5060
  #, fuzzy, gcc-internal-format
  #| msgid "Missing or invalid constant expression"
  msgid "%qs is not a constant expression because %qT is volatile"
  msgstr "Manglende eller ugyldigt konstant udtryk"
  
! #: cp/constexpr.cc:5063
  #, fuzzy, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a volatile subobject"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:5218
  #, fuzzy, gcc-internal-format
  #| msgid "nested functions not supported on this target"
  msgid "%qs cannot be constant evaluated on the target"
  msgstr "-indlejrede funktioner er ikke understÃ¸ttet pÃ¥ denne mÃ¥larkitektur"
  
! #: cp/constexpr.cc:5227 cp/constexpr.cc:5237
  #, gcc-internal-format
  msgid "%qs cannot be constant evaluated because the type is too large"
  msgstr ""
  
! #: cp/constexpr.cc:5257
  #, gcc-internal-format
  msgid "%qs cannot be constant evaluated because the argument cannot be encoded"
  msgstr ""
  
! #: cp/constexpr.cc:5303
  #, fuzzy, gcc-internal-format
  #| msgid "missing initializer for member `%D'"
  msgid "%qs accessing uninitialized byte at offset %d"
  msgstr "manglende startvÃ¦rdi for medlemmet '%D'"
  
! #: cp/constexpr.cc:5315
  #, gcc-internal-format
  msgid "%qs cannot be constant evaluated because the argument cannot be interpreted"
  msgstr ""
  
! #: cp/constexpr.cc:6173 rust/backend/rust-constexpr.cc:895
  #, fuzzy, gcc-internal-format
  #| msgid "Missing or invalid constant expression"
  msgid "accessing value of %qE through a %qT glvalue in a constant expression"
  msgstr "Manglende eller ugyldigt konstant udtryk"
  
  #. Provide a more accurate message for deleted variables.
! #: cp/constexpr.cc:6213 cp/constexpr.cc:6246
  #, fuzzy, gcc-internal-format
  #| msgid "overflow in constant expression"
  msgid "use of allocated storage after deallocation in a constant expression"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:6215 cp/constexpr.cc:6241 cp/constexpr.cc:6248
! #: cp/constexpr.cc:6591
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "allocated here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/constexpr.cc:6219
  #, gcc-internal-format
  msgid "accessing %qE outside its lifetime"
  msgstr ""
  
! #: cp/constexpr.cc:6239
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%D' is not an integral constant-expression"
  msgid "the content of uninitialized storage is not usable in a constant expression"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:6251 rust/backend/rust-constexpr.cc:4041
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%D' is not an integral constant-expression"
  msgid "the value of %qD is not usable in a constant expression"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:6259
  #, fuzzy, gcc-internal-format
  #| msgid "excess elements in union initializer"
  msgid "%qD used in its own initializer"
  msgstr "for mange elementer i union-startvÃ¦rdi"
  
! #: cp/constexpr.cc:6264
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function,"
  msgid "%q#D is not const"
  msgstr "'%s' er ikke en funktion,"
  
! #: cp/constexpr.cc:6267
  #, fuzzy, gcc-internal-format
  #| msgid "`%+#D' is private"
  msgid "%q#D is volatile"
  msgstr "'%+#D' er privat"
  
! #: cp/constexpr.cc:6272 cp/constexpr.cc:6279
  #, fuzzy, gcc-internal-format
  msgid "%qD was not initialized with a constant expression"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:6285
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' was not declared in this scope"
  msgid "%qD was not declared %<constexpr%>"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: cp/constexpr.cc:6288
  #, fuzzy, gcc-internal-format
  msgid "%qD does not have integral or enumeration type"
  msgstr "stÃ¸rrelse i tabel-new skal vÃ¦re en heltalstype"
  
! #: cp/constexpr.cc:6589
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "modification of allocated storage after deallocation is not a constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:6598
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "modification of %qE outside its lifetime is not a constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:6605
  #, fuzzy, gcc-internal-format
  msgid "destroying %qE from outside current evaluation is not a constant expression"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:6608
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "modification of %qE from outside current evaluation is not a constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:6739
  #, fuzzy, gcc-internal-format
  #| msgid "overflow in constant expression"
  msgid "change of the active member of a union from %qD to %qD is not a constant expression before C++20"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:6768
  #, gcc-internal-format
  msgid "%qD does not implicitly begin its lifetime because %qT does not have a non-deleted trivial default constructor, use %<std::construct_at%> instead"
  msgstr ""
  
! #: cp/constexpr.cc:6775
  #, gcc-internal-format
  msgid "initializing %qD requires a member access expression as the left operand of the assignment"
  msgstr ""
  
! #: cp/constexpr.cc:6787 rust/backend/rust-constexpr.cc:2820
  #, fuzzy, gcc-internal-format
  #| msgid "cannot convert `%T' to `%T' in %s"
  msgid "change of the active member of a union from %qD to %qD during initialization"
  msgstr "kan ikke konvertere '%T' til '%T' i %s"
  
! #: cp/constexpr.cc:7239 cp/constexpr.cc:8950 cp/constexpr.cc:8962
  #: rust/backend/rust-constexpr.cc:4668
  #, fuzzy, gcc-internal-format
  msgid "statement is not a constant expression"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:7446 rust/backend/rust-constexpr.cc:4933
  #, fuzzy, gcc-internal-format
  #| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating `%D'"
  msgid "%<constexpr%> loop iteration count exceeds limit of %d (use %<-fconstexpr-loop-limit=%> to increase the limit)"
  msgstr "skabelonsinstantieringsdybden overskrider maksimum pÃ¥ %d (benyt -ftemplate-depth-NN for at forÃ¸ge maksimum) ved instantiering af '%D'"
  
! #: cp/constexpr.cc:7555 rust/backend/rust-constexpr.cc:999
  #, fuzzy, gcc-internal-format
  #| msgid "initializer element is not constant"
  msgid "inline assembly is not a constant expression"
  msgstr "startvÃ¦rdielement er ikke en konstant"
  
! #: cp/constexpr.cc:7557 rust/backend/rust-constexpr.cc:1000
  #, gcc-internal-format
  msgid "only unevaluated inline assembly is allowed in a %<constexpr%> function in C++20"
  msgstr ""
  
! #: cp/constexpr.cc:7576
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `%D'"
  msgid "use of %qD"
  msgstr "ugyldig brug af '%D"
  
! #: cp/constexpr.cc:7580
  #, gcc-internal-format
  msgid "its value can vary between compiler versions or with different %<-mtune%> or %<-mcpu%> flags"
  msgstr ""
  
! #: cp/constexpr.cc:7582
  #, gcc-internal-format
  msgid "if this use is part of a public ABI, change it to instead use a constant variable you define"
  msgstr ""
  
! #: cp/constexpr.cc:7584
  #, gcc-internal-format, gfc-internal-format
  msgid "the default value for the current CPU tuning is %d bytes"
  msgstr ""
  
! #: cp/constexpr.cc:7586
  #, gcc-internal-format
  msgid "you can stabilize this value with %<--param hardware_destructive_interference_size=%d%>, or disable this warning with %<-Wno-interference-size%>"
  msgstr ""
  
! #: cp/constexpr.cc:7739
  #, fuzzy, gcc-internal-format
  #| msgid "Missing or invalid constant expression"
  msgid "value %qE of type %qT is not a constant expression"
  msgstr "Manglende eller ugyldigt konstant udtryk"
  
! #: cp/constexpr.cc:7752
  #, fuzzy, gcc-internal-format
  #| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating `%D'"
  msgid "%<constexpr%> evaluation operation count exceeds limit of %wd (use %<-fconstexpr-ops-limit=%> to increase the limit)"
  msgstr "skabelonsinstantieringsdybden overskrider maksimum pÃ¥ %d (benyt -ftemplate-depth-NN for at forÃ¸ge maksimum) ved instantiering af '%D'"
  
! #: cp/constexpr.cc:7938
  #, gcc-internal-format
  msgid "control passes through definition of %qD with thread storage duration"
  msgstr ""
  
! #: cp/constexpr.cc:7941
  #, gcc-internal-format
  msgid "control passes through definition of %qD with static storage duration"
  msgstr ""
  
! #: cp/constexpr.cc:8006 cp/constexpr.cc:10745
  #: rust/backend/rust-constexpr.cc:2056 rust/backend/rust-constexpr.cc:6206
  #, fuzzy, gcc-internal-format
  #| msgid "enumeral and non-enumeral type in conditional expression"
  msgid "temporary of non-literal type %qT in a constant expression"
  msgstr "enum- og ikke enum-type i betinget udtryk"
  
! #: cp/constexpr.cc:8470 cp/constexpr.cc:10250
  #, fuzzy, gcc-internal-format
  msgid "%<reinterpret_cast%> is not a constant expression"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:8501 rust/backend/rust-constexpr.cc:2461
  #, fuzzy, gcc-internal-format
  msgid "conversion from pointer type %qT to arithmetic type %qT in a constant expression"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:8553
  #, gcc-internal-format
  msgid "cast from %qT is not allowed in a constant expression because pointed-to type %qT is not similar to %qT"
  msgstr ""
  
! #: cp/constexpr.cc:8563
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "pointed-to object declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/constexpr.cc:8571
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%D' is not an integral constant-expression"
  msgid "cast from %qT is not allowed in a constant expression before C++26"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:8585
  #, fuzzy, gcc-internal-format
  msgid "%qE is not a constant expression when the class %qT is still incomplete"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:8625 rust/backend/rust-constexpr.cc:2506
  #, fuzzy, gcc-internal-format
  msgid "%<reinterpret_cast<%T>(%E)%> is not a constant expression"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:8763 cp/constexpr.cc:10557 cp/constexpr.cc:10968
  #: rust/backend/rust-constexpr.cc:6100 rust/backend/rust-constexpr.cc:6415
  #, fuzzy, gcc-internal-format
  msgid "expression %qE is not a constant expression"
  msgstr "stÃ¸rrelsen af medlemmet '%D' er ikke konstant"
  
! #: cp/constexpr.cc:8807 cp/constexpr.cc:11009
  #, fuzzy, gcc-internal-format
  #| msgid "Missing or invalid constant expression"
  msgid "%<goto%> is not a constant expression"
  msgstr "Manglende eller ugyldigt konstant udtryk"
  
! #: cp/constexpr.cc:8865
  #, fuzzy, gcc-internal-format
  msgid "contract predicate is false in constant expression"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:8900
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "address of a call to %qs is not a constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:8965
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "unexpected expression %qE of kind %s"
  msgstr "uventet adresseudtryk"
  
! #: cp/constexpr.cc:9264 rust/backend/rust-constexpr.cc:5158
  #, gcc-internal-format
  msgid "%qE is not a constant expression because it refers to mutable subobjects of %qT"
  msgstr ""
  
! #: cp/constexpr.cc:9272 rust/backend/rust-constexpr.cc:5167
  #, fuzzy, gcc-internal-format
  msgid "%qE is not a constant expression because it refers to an incompletely initialized variable"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:9288 rust/backend/rust-constexpr.cc:5183
  #, fuzzy, gcc-internal-format
  msgid "%qE is not a constant expression because it refers to a result of %<operator new%>"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:9299 rust/backend/rust-constexpr.cc:5195
  #, fuzzy, gcc-internal-format
  msgid "%qE is not a constant expression because allocated storage has not been deallocated"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:9319 rust/backend/rust-constexpr.cc:5213
  #, gcc-internal-format
  msgid "immediate evaluation returns address of immediate function %qD"
  msgstr ""
  
! #: cp/constexpr.cc:9323
  #, fuzzy, gcc-internal-format
  #| msgid "%s cannot resolve address of overloaded function"
  msgid "constant evaluation returns address of immediate function %qD"
  msgstr "%s kan ikke finde adressen af flertydiggjort funktion"
  
! #: cp/constexpr.cc:9358
  #, fuzzy, gcc-internal-format
  msgid "%qE is not a constant expression because it initializes a %qT rather than %qT"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:9986 rust/backend/rust-constexpr.cc:5667
  #, fuzzy, gcc-internal-format
  #| msgid "invalid reinterpret_cast of an rvalue expression of type `%T' to type `%T'"
  msgid "lvalue-to-rvalue conversion of a volatile lvalue %qE with type %qT"
  msgstr "ugyldig reinterpret_cast af et hÃ¸jrevÃ¦rdiudtryk fra typen '%T' til typen '%T'"
  
! #: cp/constexpr.cc:10215
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "lambda capture of %qE is not a constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:10218
  #, gcc-internal-format
  msgid "because it is used as a glvalue"
  msgstr ""
  
! #: cp/constexpr.cc:10274 rust/backend/rust-constexpr.cc:5893
  #, fuzzy, gcc-internal-format
  #| msgid "invalid reinterpret_cast from type `%T' to type `%T'"
  msgid "%<reinterpret_cast%> from integer to pointer"
  msgstr "ugyldig reinterpret_cast fra typen '%T' til typen '%T'"
  
! #: cp/constexpr.cc:10308 rust/backend/rust-constexpr.cc:5921
  #, gcc-internal-format
  msgid "address-of an object %qE with thread local or automatic storage is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:10492
  #, fuzzy, gcc-internal-format
  #| msgid "overflow in constant expression"
  msgid "lambda-expression is not a constant expression before C++17"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:10504
  #, fuzzy, gcc-internal-format
  #| msgid "overflow in constant expression"
  msgid "new-expression is not a constant expression before C++20"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:10571
  #, fuzzy, gcc-internal-format
  #| msgid "virtual functions cannot be friends"
  msgid "virtual functions cannot be %<constexpr%> before C++20"
  msgstr "en virtuel funktion kan ikke erklÃ¦res som friend"
  
! #: cp/constexpr.cc:10587
  #, fuzzy, gcc-internal-format
  #| msgid "Missing or invalid constant expression"
  msgid "%<typeid%> is not a constant expression because %qE is of polymorphic type"
  msgstr "Manglende eller ugyldigt konstant udtryk"
  
! #: cp/constexpr.cc:10651
  #, fuzzy, gcc-internal-format
  msgid "cast to non-integral type %qT in a constant expression"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:10709
  #, fuzzy, gcc-internal-format
  #| msgid "field `%D' declared static in union"
  msgid "%qD defined %<thread_local%> in %<constexpr%> context"
  msgstr "feltet '%D' er erklÃ¦ret statisk i union"
  
! #: cp/constexpr.cc:10717
  #, fuzzy, gcc-internal-format
  #| msgid "field `%D' declared static in union"
  msgid "%qD defined %<static%> in %<constexpr%> context"
  msgstr "feltet '%D' er erklÃ¦ret statisk i union"
  
! #: cp/constexpr.cc:10795 rust/backend/rust-constexpr.cc:6251
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "division by zero is not a constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: cp/constexpr.cc:10896 rust/backend/rust-constexpr.cc:6349
  #, fuzzy, gcc-internal-format
  msgid "%<delete[]%> is not a constant expression"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:10965
  #, fuzzy, gcc-internal-format
  #| msgid "overflow in constant expression"
  msgid "neither branch of %<if%> is a constant expression"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/constexpr.cc:10978
  #, fuzzy, gcc-internal-format
  #| msgid "nonconstant array index in initializer"
  msgid "non-constant array initialization"
  msgstr "tabelindekset i startvÃ¦rdien er ikke en konstant"
  
! #: cp/constexpr.cc:11026
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "label definition in %<constexpr%> function only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/constexpr.cc:11065 rust/backend/rust-constexpr.cc:6438
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "unexpected type for `id' (%s)"
  msgid "unexpected AST of kind %s"
*************** msgstr "  oprindelig definition er her"
*** 60612,60738 ****
  msgid "declaration adds contracts to %q#D"
  msgstr "global erklÃ¦ring '%#D'"
  
! #: cp/coroutines.cc:427
  #, gcc-internal-format
  msgid "coroutines require a traits template; cannot find %<%E::%E%>"
  msgstr ""
  
! #: cp/coroutines.cc:429
  #, gcc-internal-format
  msgid "perhaps %<#include <coroutine>%> is missing"
  msgstr ""
  
  # at oversÃ¦tte inline med et udsagnsord her bliver vist for tvetydigt
! #: cp/coroutines.cc:484
  #, fuzzy, gcc-internal-format
  #| msgid "cannot inline function `main'"
  msgid "cannot instantiate %<coroutine traits%>"
  msgstr "funktionen 'main' kan ikke vÃ¦re inline"
  
! #: cp/coroutines.cc:506
  #, gcc-internal-format
  msgid "coroutines require a handle class template; cannot find %<%E::%E%>"
  msgstr ""
  
! #: cp/coroutines.cc:534
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must be a nonstatic member function"
  msgid "%qE must be a non-overloaded method"
  msgstr "'%D' skal vÃ¦re en ikke-statisk medlemsfunktion"
  
! #: cp/coroutines.cc:547
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must take exactly two arguments"
  msgid "%qE must take no arguments"
  msgstr "'%s' skal tage mod to parametre"
  
! #: cp/coroutines.cc:554 cp/coroutines.cc:599
  #, fuzzy, gcc-internal-format
  #| msgid "`main' must return `int'"
  msgid "%qE must return %qT, not %qT"
  msgstr "'main' skal returnere typen 'int'"
  
! #: cp/coroutines.cc:581
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must be a nonstatic member function"
  msgid "%qE must be a non-overloaded static function"
  msgstr "'%D' skal vÃ¦re en ikke-statisk medlemsfunktion"
  
! #: cp/coroutines.cc:592
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must take `void'"
  msgid "%qE must take a single %qT"
  msgstr "'%D' skal tage mod 'void'"
  
! #: cp/coroutines.cc:621
  #, gcc-internal-format
  msgid "cannot instantiate a %<coroutine handle%> for promise type %qT"
  msgstr ""
  
! #: cp/coroutines.cc:736
  #, fuzzy, gcc-internal-format
  #| msgid "unable to find a register to spill in class `%s'"
  msgid "unable to find the promise type for this coroutine"
  msgstr "kan ikke finde et register at bortÃ¸dsle i klassen '%s'"
  
! #: cp/coroutines.cc:756
  #, gcc-internal-format
  msgid "the coroutine promise type %qT declares both %<return_value%> and %<return_void%>"
  msgstr ""
  
! #: cp/coroutines.cc:760
  #, fuzzy, gcc-internal-format
  #| msgid "%qD target declared here"
  msgid "%<return_void%> declared here"
  msgstr "%qD-mÃ¥l erklÃ¦ret her"
  
! #: cp/coroutines.cc:919 cp/coroutines.cc:997 cp/coroutines.cc:4553
  #, fuzzy, gcc-internal-format
  #| msgid "no type named `%#T' in `%#T'"
  msgid "no member named %qE in %qT"
  msgstr "ingen type ved navn '%#T' i '%#T'"
  
! #: cp/coroutines.cc:1012
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' cannot be used as a function"
  msgid "%qs cannot be used outside a function"
  msgstr "'%E' kan ikke bruges som en funktion"
  
  #. [basic.start.main] 3. The function main shall not be a coroutine.
! #: cp/coroutines.cc:1020
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' cannot be used as a function"
  msgid "%qs cannot be used in the %<main%> function"
  msgstr "'%E' kan ikke bruges som en funktion"
  
  #. [dcl.constexpr] 3.3 it shall not be a coroutine.
! #: cp/coroutines.cc:1031
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' cannot be used as a function"
  msgid "%qs cannot be used in a %<constexpr%> function"
  msgstr "'%E' kan ikke bruges som en funktion"
  
! #: cp/coroutines.cc:1042
  #, fuzzy, gcc-internal-format
  #| msgid "virtual functions cannot be friends"
  msgid "%qs cannot be used in a function with a deduced return type"
  msgstr "en virtuel funktion kan ikke erklÃ¦res som friend"
  
! #: cp/coroutines.cc:1053
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' cannot be used as a function"
  msgid "%qs cannot be used in a varargs function"
  msgstr "'%E' kan ikke bruges som en funktion"
  
  #. [class.ctor] 7. a constructor shall not be a coroutine.
! #: cp/coroutines.cc:1060
  #, fuzzy, gcc-internal-format
  #| msgid "%s cannot be used in asm here"
  msgid "%qs cannot be used in a constructor"
  msgstr "%s kan ikke bruges i asm her"
  
  #. [class.dtor] 21. a destructor shall not be a coroutine.
! #: cp/coroutines.cc:1067
  #, fuzzy, gcc-internal-format
  #| msgid "%s cannot be used in asm here"
  msgid "%qs cannot be used in a destructor"
--- 60687,60813 ----
  msgid "declaration adds contracts to %q#D"
  msgstr "global erklÃ¦ring '%#D'"
  
! #: cp/coroutines.cc:507
  #, gcc-internal-format
  msgid "coroutines require a traits template; cannot find %<%E::%E%>"
  msgstr ""
  
! #: cp/coroutines.cc:509
  #, gcc-internal-format
  msgid "perhaps %<#include <coroutine>%> is missing"
  msgstr ""
  
  # at oversÃ¦tte inline med et udsagnsord her bliver vist for tvetydigt
! #: cp/coroutines.cc:564
  #, fuzzy, gcc-internal-format
  #| msgid "cannot inline function `main'"
  msgid "cannot instantiate %<coroutine traits%>"
  msgstr "funktionen 'main' kan ikke vÃ¦re inline"
  
! #: cp/coroutines.cc:586
  #, gcc-internal-format
  msgid "coroutines require a handle class template; cannot find %<%E::%E%>"
  msgstr ""
  
! #: cp/coroutines.cc:614
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must be a nonstatic member function"
  msgid "%qE must be a non-overloaded method"
  msgstr "'%D' skal vÃ¦re en ikke-statisk medlemsfunktion"
  
! #: cp/coroutines.cc:627
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must take exactly two arguments"
  msgid "%qE must take no arguments"
  msgstr "'%s' skal tage mod to parametre"
  
! #: cp/coroutines.cc:634 cp/coroutines.cc:679
  #, fuzzy, gcc-internal-format
  #| msgid "`main' must return `int'"
  msgid "%qE must return %qT, not %qT"
  msgstr "'main' skal returnere typen 'int'"
  
! #: cp/coroutines.cc:661
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must be a nonstatic member function"
  msgid "%qE must be a non-overloaded static function"
  msgstr "'%D' skal vÃ¦re en ikke-statisk medlemsfunktion"
  
! #: cp/coroutines.cc:672
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must take `void'"
  msgid "%qE must take a single %qT"
  msgstr "'%D' skal tage mod 'void'"
  
! #: cp/coroutines.cc:701
  #, gcc-internal-format
  msgid "cannot instantiate a %<coroutine handle%> for promise type %qT"
  msgstr ""
  
! #: cp/coroutines.cc:816
  #, fuzzy, gcc-internal-format
  #| msgid "unable to find a register to spill in class `%s'"
  msgid "unable to find the promise type for this coroutine"
  msgstr "kan ikke finde et register at bortÃ¸dsle i klassen '%s'"
  
! #: cp/coroutines.cc:836
  #, gcc-internal-format
  msgid "the coroutine promise type %qT declares both %<return_value%> and %<return_void%>"
  msgstr ""
  
! #: cp/coroutines.cc:840
  #, fuzzy, gcc-internal-format
  #| msgid "%qD target declared here"
  msgid "%<return_void%> declared here"
  msgstr "%qD-mÃ¥l erklÃ¦ret her"
  
! #: cp/coroutines.cc:999 cp/coroutines.cc:1077 cp/coroutines.cc:4711
  #, fuzzy, gcc-internal-format
  #| msgid "no type named `%#T' in `%#T'"
  msgid "no member named %qE in %qT"
  msgstr "ingen type ved navn '%#T' i '%#T'"
  
! #: cp/coroutines.cc:1092
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' cannot be used as a function"
  msgid "%qs cannot be used outside a function"
  msgstr "'%E' kan ikke bruges som en funktion"
  
  #. [basic.start.main] 3. The function main shall not be a coroutine.
! #: cp/coroutines.cc:1100
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' cannot be used as a function"
  msgid "%qs cannot be used in the %<main%> function"
  msgstr "'%E' kan ikke bruges som en funktion"
  
  #. [dcl.constexpr] 3.3 it shall not be a coroutine.
! #: cp/coroutines.cc:1111
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' cannot be used as a function"
  msgid "%qs cannot be used in a %<constexpr%> function"
  msgstr "'%E' kan ikke bruges som en funktion"
  
! #: cp/coroutines.cc:1122
  #, fuzzy, gcc-internal-format
  #| msgid "virtual functions cannot be friends"
  msgid "%qs cannot be used in a function with a deduced return type"
  msgstr "en virtuel funktion kan ikke erklÃ¦res som friend"
  
! #: cp/coroutines.cc:1133
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' cannot be used as a function"
  msgid "%qs cannot be used in a varargs function"
  msgstr "'%E' kan ikke bruges som en funktion"
  
  #. [class.ctor] 7. a constructor shall not be a coroutine.
! #: cp/coroutines.cc:1140
  #, fuzzy, gcc-internal-format
  #| msgid "%s cannot be used in asm here"
  msgid "%qs cannot be used in a constructor"
  msgstr "%s kan ikke bruges i asm her"
  
  #. [class.dtor] 21. a destructor shall not be a coroutine.
! #: cp/coroutines.cc:1147
  #, fuzzy, gcc-internal-format
  #| msgid "%s cannot be used in asm here"
  msgid "%qs cannot be used in a destructor"
*************** msgstr "%s kan ikke bruges i asm her"
*** 60741,60841 ****
  #. TODO: record or extract positions of returns (and the first coro
  #. keyword) so that we can add notes to the diagnostic about where
  #. the bad keyword is and what made the function into a coro.
! #: cp/coroutines.cc:1098
  #, fuzzy, gcc-internal-format
  msgid "a %<return%> statement is not allowed in coroutine; did you mean %<co_return%>?"
  msgstr "'return' uden nogen vÃ¦rdi i en funktion der ikke returnerer void"
  
! #: cp/coroutines.cc:1150
  #, fuzzy, gcc-internal-format
  msgid "the expression %qE is required to be non-throwing"
  msgstr "stÃ¸rrelsen af medlemmet '%D' er ikke konstant"
  
! #: cp/coroutines.cc:1152
  #, gcc-internal-format
  msgid "must be declared with %<noexcept(true)%>"
  msgstr ""
  
! #: cp/coroutines.cc:1280
  #, fuzzy, gcc-internal-format
  #| msgid "qualified type `%T' does not match destructor name `~%T'"
  msgid "awaitable type %qT is not a structure"
  msgstr "den modificerede type '%T' passer ikke til destruktionsfunktionsnavnet '~%T'"
  
! #: cp/coroutines.cc:1374
  #, gcc-internal-format
  msgid "%<await_suspend%> must return %<void%>, %<bool%> or a coroutine handle"
  msgstr ""
  
! #: cp/coroutines.cc:1723
  #, fuzzy, gcc-internal-format
  #| msgid "function declared `noreturn' has a `return' statement"
  msgid "function declared %<noreturn%> has a %<co_return%> statement"
  msgstr "funktion der er erklÃ¦ret 'noreturn' har en 'return'-sÃ¦tning"
  
! #: cp/coroutines.cc:1760
  #, fuzzy, gcc-internal-format
  #| msgid "third arg to `__builtin_prefetch' must be a constant"
  msgid "the align argument to %<__builtin_coro_promise%> must be a constant"
  msgstr "en tredje parameter til '__builtin_prefetch' skal vÃ¦re en konstant"
  
! #: cp/coroutines.cc:1770
  #, fuzzy, gcc-internal-format
  #| msgid "third arg to `__builtin_prefetch' must be a constant"
  msgid "the direction argument to %<__builtin_coro_promise%> must be a constant"
  msgstr "en tredje parameter til '__builtin_prefetch' skal vÃ¦re en konstant"
  
! #: cp/coroutines.cc:2267
  #, fuzzy, gcc-internal-format
  msgid "no suspend point info for %qD"
  msgstr "ingen tidligere prototype for '%s'"
  
! #: cp/coroutines.cc:2829
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `%s'"
  msgid "duplicate info for %qE"
  msgstr "'%s' optrÃ¦der mere end Ã©n gang"
  
! #: cp/coroutines.cc:3958
  #, fuzzy, gcc-internal-format
  #| msgid "pointers are not permitted as case values"
  msgid "await expressions are not permitted in handlers"
  msgstr "henvisningsvariabler er ikke tilladt som case-vÃ¦rdier"
  
! #: cp/coroutines.cc:4183
  #, fuzzy, gcc-internal-format
  #| msgid "Warn when a variable is unused"
  msgid "variable length arrays are not yet supported in coroutines"
  msgstr "Advar nÃ¥r en variabel ikke benyttes"
  
! #: cp/coroutines.cc:4701
  #, gcc-internal-format
  msgid "%qE is provided by %qT but is not usable with the function signature %qD"
  msgstr ""
  
! #: cp/coroutines.cc:4708
  #, gcc-internal-format
  msgid "%qE is provided by %qT but %qE is not marked %<throw()%> or %<noexcept%>"
  msgstr ""
  
! #: cp/coroutines.cc:4713
  #, gcc-internal-format
  msgid "%qE is marked %<throw()%> or %<noexcept%> but no usable %<get_return_object_on_allocation_failure%> is provided by %qT"
  msgstr ""
  
  #. Something is seriously wrong, punt.
! #: cp/coroutines.cc:4744
  #, gcc-internal-format
  msgid "%qE is provided by %qT but %<std::nothrow%> cannot be found"
  msgstr ""
  
! #: cp/coroutines.cc:4840
  #, fuzzy, gcc-internal-format
  #| msgid "%J'%D' is not defined outside of function scope"
  msgid "%qE is provided by %qT but is not usable with the function %qD"
  msgstr "%J'%D' er ikke defineret uden for funktionsvirkefelt"
  
! #: cp/coroutines.cc:5146
  #, gcc-internal-format
  msgid "no viable conversion from %<void%> provided by %<get_return_object%> to return type %qT"
  msgstr ""
--- 60816,60933 ----
  #. TODO: record or extract positions of returns (and the first coro
  #. keyword) so that we can add notes to the diagnostic about where
  #. the bad keyword is and what made the function into a coro.
! #: cp/coroutines.cc:1178
  #, fuzzy, gcc-internal-format
  msgid "a %<return%> statement is not allowed in coroutine; did you mean %<co_return%>?"
  msgstr "'return' uden nogen vÃ¦rdi i en funktion der ikke returnerer void"
  
! #: cp/coroutines.cc:1230
  #, fuzzy, gcc-internal-format
  msgid "the expression %qE is required to be non-throwing"
  msgstr "stÃ¸rrelsen af medlemmet '%D' er ikke konstant"
  
! #: cp/coroutines.cc:1232
  #, gcc-internal-format
  msgid "must be declared with %<noexcept(true)%>"
  msgstr ""
  
! #: cp/coroutines.cc:1361 cp/coroutines.cc:1364
! #, fuzzy, gcc-internal-format
! #| msgid "qualified type `%T' does not match destructor name `~%T'"
! msgid "%qs awaitable type %qT is not a structure"
! msgstr "den modificerede type '%T' passer ikke til destruktionsfunktionsnavnet '~%T'"
! 
! #: cp/coroutines.cc:1367
  #, fuzzy, gcc-internal-format
  #| msgid "qualified type `%T' does not match destructor name `~%T'"
  msgid "awaitable type %qT is not a structure"
  msgstr "den modificerede type '%T' passer ikke til destruktionsfunktionsnavnet '~%T'"
  
! #: cp/coroutines.cc:1460
  #, gcc-internal-format
  msgid "%<await_suspend%> must return %<void%>, %<bool%> or a coroutine handle"
  msgstr ""
  
! #: cp/coroutines.cc:1552 cp/coroutines.cc:1638
! #, fuzzy, gcc-internal-format
! #| msgid "%s cannot be used in asm here"
! msgid "%qs cannot be used in an unevaluated context"
! msgstr "%s kan ikke bruges i asm her"
! 
! #: cp/coroutines.cc:1821
  #, fuzzy, gcc-internal-format
  #| msgid "function declared `noreturn' has a `return' statement"
  msgid "function declared %<noreturn%> has a %<co_return%> statement"
  msgstr "funktion der er erklÃ¦ret 'noreturn' har en 'return'-sÃ¦tning"
  
! #: cp/coroutines.cc:1858
  #, fuzzy, gcc-internal-format
  #| msgid "third arg to `__builtin_prefetch' must be a constant"
  msgid "the align argument to %<__builtin_coro_promise%> must be a constant"
  msgstr "en tredje parameter til '__builtin_prefetch' skal vÃ¦re en konstant"
  
! #: cp/coroutines.cc:1868
  #, fuzzy, gcc-internal-format
  #| msgid "third arg to `__builtin_prefetch' must be a constant"
  msgid "the direction argument to %<__builtin_coro_promise%> must be a constant"
  msgstr "en tredje parameter til '__builtin_prefetch' skal vÃ¦re en konstant"
  
! #: cp/coroutines.cc:2387
  #, fuzzy, gcc-internal-format
  msgid "no suspend point info for %qD"
  msgstr "ingen tidligere prototype for '%s'"
  
! #: cp/coroutines.cc:2960
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate `%s'"
  msgid "duplicate info for %qE"
  msgstr "'%s' optrÃ¦der mere end Ã©n gang"
  
! #: cp/coroutines.cc:3618
! #, gcc-internal-format
! msgid "assumption ignored because it contains an await-expression"
! msgstr ""
! 
! #: cp/coroutines.cc:4125
  #, fuzzy, gcc-internal-format
  #| msgid "pointers are not permitted as case values"
  msgid "await expressions are not permitted in handlers"
  msgstr "henvisningsvariabler er ikke tilladt som case-vÃ¦rdier"
  
! #: cp/coroutines.cc:4342
  #, fuzzy, gcc-internal-format
  #| msgid "Warn when a variable is unused"
  msgid "variable length arrays are not yet supported in coroutines"
  msgstr "Advar nÃ¥r en variabel ikke benyttes"
  
! #: cp/coroutines.cc:4864
  #, gcc-internal-format
  msgid "%qE is provided by %qT but is not usable with the function signature %qD"
  msgstr ""
  
! #: cp/coroutines.cc:4871
  #, gcc-internal-format
  msgid "%qE is provided by %qT but %qE is not marked %<throw()%> or %<noexcept%>"
  msgstr ""
  
! #: cp/coroutines.cc:4876
  #, gcc-internal-format
  msgid "%qE is marked %<throw()%> or %<noexcept%> but no usable %<get_return_object_on_allocation_failure%> is provided by %qT"
  msgstr ""
  
  #. Something is seriously wrong, punt.
! #: cp/coroutines.cc:4907
  #, gcc-internal-format
  msgid "%qE is provided by %qT but %<std::nothrow%> cannot be found"
  msgstr ""
  
! #: cp/coroutines.cc:5003
  #, fuzzy, gcc-internal-format
  #| msgid "%J'%D' is not defined outside of function scope"
  msgid "%qE is provided by %qT but is not usable with the function %qD"
  msgstr "%J'%D' er ikke defineret uden for funktionsvirkefelt"
  
! #: cp/coroutines.cc:5277
  #, gcc-internal-format
  msgid "no viable conversion from %<void%> provided by %<get_return_object%> to return type %qT"
  msgstr ""
*************** msgstr "tager adressen pÃ¥ en destruktio
*** 60868,60932 ****
  msgid "call to consteval function %qE is not a constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: cp/cp-gimplify.cc:2050
  #, fuzzy, gcc-internal-format
  msgid "%<throw%> will always call %<terminate%>"
  msgstr "adressen af '%D' vil altid vÃ¦re 'true'"
  
! #: cp/cp-gimplify.cc:2053
  #, fuzzy, gcc-internal-format
  #| msgid "destructors may not be `%s'"
  msgid "in C++11 destructors default to %<noexcept%>"
  msgstr "destruktionsfunktioner mÃ¥ ikke vÃ¦re '%s'"
  
! #: cp/cp-gimplify.cc:2065
  #, gcc-internal-format
  msgid "in C++11 this %<throw%> will call %<terminate%> because destructors default to %<noexcept%>"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3650
  #, fuzzy, gcc-internal-format
  #| msgid "storage class `%D' applied to template instantiation"
  msgid "ignoring attribute %qE after earlier %qE"
  msgstr "lagringsklasse '%D' anvendt pÃ¥ skabelonsinstantiering"
  
! #: cp/cp-gimplify.cc:3693
  #, fuzzy, gcc-internal-format
  #| msgid "invalid argument of %qE attribute"
  msgid "pack expansion of %qE attribute"
  msgstr "ugyldig parameter for egenskaben %qE"
  
! #: cp/cp-gimplify.cc:3696
  #, fuzzy, gcc-internal-format
  #| msgid "Invalid expression statement"
  msgid "use fold expression in the attribute argument instead"
  msgstr "Ugyldig udtrykssÃ¦tning"
  
! #: cp/cp-gimplify.cc:3735 cp/cp-gimplify.cc:3747 cp/decl.cc:4511
  #: cp/method.cc:990
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a template"
  msgid "%qD is not a type"
  msgstr "'%T' er ikke en skabelon"
  
! #: cp/cp-gimplify.cc:3753
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a class or union type"
  msgid "%qD is not a class type"
  msgstr "'%T' er ikke af en klasse- eller union-type"
  
! #: cp/cp-gimplify.cc:3770
  #, fuzzy, gcc-internal-format
  #| msgid "type to vector delete is neither pointer or array type"
  msgid "%qD does not have %<const char *%> type"
  msgstr "variablen til tabel-delete er hverken af en henvisnings- eller en tabeltype"
  
! #: cp/cp-gimplify.cc:3780
  #, fuzzy, gcc-internal-format
  msgid "%qD does not have integral type"
  msgstr "stÃ¸rrelse i tabel-new skal vÃ¦re en heltalstype"
  
! #: cp/cp-gimplify.cc:3792
  #, gcc-internal-format
  msgid "%<std::source_location::__impl%> does not contain only non-static data members %<_M_file_name%>, %<_M_function_name%>, %<_M_line%> and %<_M_column%>"
  msgstr ""
--- 60960,61024 ----
  msgid "call to consteval function %qE is not a constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: cp/cp-gimplify.cc:2055
  #, fuzzy, gcc-internal-format
  msgid "%<throw%> will always call %<terminate%>"
  msgstr "adressen af '%D' vil altid vÃ¦re 'true'"
  
! #: cp/cp-gimplify.cc:2058
  #, fuzzy, gcc-internal-format
  #| msgid "destructors may not be `%s'"
  msgid "in C++11 destructors default to %<noexcept%>"
  msgstr "destruktionsfunktioner mÃ¥ ikke vÃ¦re '%s'"
  
! #: cp/cp-gimplify.cc:2070
  #, gcc-internal-format
  msgid "in C++11 this %<throw%> will call %<terminate%> because destructors default to %<noexcept%>"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3655
  #, fuzzy, gcc-internal-format
  #| msgid "storage class `%D' applied to template instantiation"
  msgid "ignoring attribute %qE after earlier %qE"
  msgstr "lagringsklasse '%D' anvendt pÃ¥ skabelonsinstantiering"
  
! #: cp/cp-gimplify.cc:3698
  #, fuzzy, gcc-internal-format
  #| msgid "invalid argument of %qE attribute"
  msgid "pack expansion of %qE attribute"
  msgstr "ugyldig parameter for egenskaben %qE"
  
! #: cp/cp-gimplify.cc:3701
  #, fuzzy, gcc-internal-format
  #| msgid "Invalid expression statement"
  msgid "use fold expression in the attribute argument instead"
  msgstr "Ugyldig udtrykssÃ¦tning"
  
! #: cp/cp-gimplify.cc:3740 cp/cp-gimplify.cc:3752 cp/decl.cc:4509
  #: cp/method.cc:990
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a template"
  msgid "%qD is not a type"
  msgstr "'%T' er ikke en skabelon"
  
! #: cp/cp-gimplify.cc:3758
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a class or union type"
  msgid "%qD is not a class type"
  msgstr "'%T' er ikke af en klasse- eller union-type"
  
! #: cp/cp-gimplify.cc:3775
  #, fuzzy, gcc-internal-format
  #| msgid "type to vector delete is neither pointer or array type"
  msgid "%qD does not have %<const char *%> type"
  msgstr "variablen til tabel-delete er hverken af en henvisnings- eller en tabeltype"
  
! #: cp/cp-gimplify.cc:3785
  #, fuzzy, gcc-internal-format
  msgid "%qD does not have integral type"
  msgstr "stÃ¸rrelse i tabel-new skal vÃ¦re en heltalstype"
  
! #: cp/cp-gimplify.cc:3797
  #, gcc-internal-format
  msgid "%<std::source_location::__impl%> does not contain only non-static data members %<_M_file_name%>, %<_M_function_name%>, %<_M_line%> and %<_M_column%>"
  msgstr ""
*************** msgstr "ugyldig const_cast af en hÃ¸jrev
*** 60975,60981 ****
  msgid "conversion from %qH to %qI discards qualifiers"
  msgstr "konvertering fra '%T' til '%T' forkaster modifikationer"
  
! #: cp/cvt.cc:499 cp/typeck.cc:8914
  #, fuzzy, gcc-internal-format
  #| msgid "casting `%T' to `%T' does not dereference pointer"
  msgid "casting %qT to %qT does not dereference pointer"
--- 61067,61073 ----
  msgid "conversion from %qH to %qI discards qualifiers"
  msgstr "konvertering fra '%T' til '%T' forkaster modifikationer"
  
! #: cp/cvt.cc:499 cp/typeck.cc:9030
  #, fuzzy, gcc-internal-format
  #| msgid "casting `%T' to `%T' does not dereference pointer"
  msgid "casting %qT to %qT does not dereference pointer"
*************** msgstr "ubrugt variabel '%s'"
*** 61380,61702 ****
  msgid "structured binding declaration set but not used"
  msgstr ""
  
! #: cp/decl.cc:905
  #, fuzzy, gcc-internal-format
  #| msgid "%q+F declared %<static%> but never defined"
  msgid "%qF declared %<static%> but never defined"
  msgstr "%q+F erklÃ¦ret %<static%>, men aldrig defineret"
  
! #: cp/decl.cc:912
  #, fuzzy, gcc-internal-format
  #| msgid "environment variable DJGPP not defined"
  msgid "odr-used inline variable %qD is not defined"
  msgstr "miljÃ¸variablen DJGPP er ikke defineret"
  
! #: cp/decl.cc:1357
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' was declared `extern' and later `static'"
  msgid "%qD was declared %<extern%> and later %<static%>"
  msgstr "'%s' blev erklÃ¦ret 'extern' og derefter 'static'"
  
! #: cp/decl.cc:1397
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%F' throws different exceptions"
  msgid "declaration of %qF has a different exception specifier"
  msgstr "erklÃ¦ring af '%F' kaster forskellige undtagelser"
  
! #: cp/decl.cc:1427
  #, fuzzy, gcc-internal-format
  #| msgid "than previous declaration `%F'"
  msgid "from previous declaration %qF"
  msgstr "end tidligere erklÃ¦ring '%F'"
  
! #: cp/decl.cc:1488
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%D' as %s"
  msgid "redeclaration %qD differs in %qs from previous declaration"
  msgstr "erklÃ¦ring af '%D' som %s"
  
  # hÃ¦nger sammen med nÃ¦ste tekst
! #: cp/decl.cc:1492 cp/decl.cc:17249
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration `%D'"
  msgid "previous declaration %qD"
  msgstr "tidligere erklÃ¦ring '%D'"
  
! #: cp/decl.cc:1513
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' cannot have default arguments"
  msgid "redeclaration of %q#D may not have default arguments"
  msgstr "'%D' kan ikke have standardparametre"
  
! #: cp/decl.cc:1542
  #, fuzzy, gcc-internal-format
  #| msgid "friend declaration `%#D' declares a non-template function"
  msgid "friend declaration of %q#D specifies default arguments and isn%'t the only declaration"
  msgstr "friend-erklÃ¦ring '%#D' erklÃ¦rer en ikke-skabelonsfunktion"
  
! #: cp/decl.cc:1545
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration of `%D'"
  msgid "previous declaration of %q#D"
  msgstr "'%D' er tidligere erklÃ¦ret"
  
! #: cp/decl.cc:1598
  #, fuzzy, gcc-internal-format
  #| msgid "ambiguates old declaration `%#D'"
  msgid "ambiguating new declaration %q+#D"
  msgstr "tvetydiggÃ¸r tidligere erklÃ¦ring '%#D'"
  
! #: cp/decl.cc:1600 cp/decl.cc:2027
  #, fuzzy, gcc-internal-format
  #| msgid "global declaration `%#D'"
  msgid "old declaration %q#D"
  msgstr "global erklÃ¦ring '%#D'"
  
! #: cp/decl.cc:1640
  #, fuzzy, gcc-internal-format
  #| msgid "redefinition of default argument for `%#D'"
  msgid "redefinition of default argument for %q+#D"
  msgstr "omdefinering af standardparameter for '%#D'"
  
! #: cp/decl.cc:1642
  #, fuzzy, gcc-internal-format
  msgid "original definition appeared here"
  msgstr "  oprindelig definition er her"
  
! #: cp/decl.cc:1708
  #, fuzzy, gcc-internal-format
  msgid "built-in function %qD declared as non-function"
  msgstr "den indbyggede funktion '%s' er erklÃ¦ret som noget der ikke er en funktion"
  
  # shadowing betyder at en funktion har samme navn og dermed skjuler en anden
! #: cp/decl.cc:1721 cp/decl.cc:1847
  #, fuzzy, gcc-internal-format
  msgid "shadowing built-in function %q#D"
  msgstr "skygger for den indbyggede funktion '%s'"
  
! #: cp/decl.cc:1722 cp/decl.cc:1848
  #, fuzzy, gcc-internal-format
  #| msgid "shadowing library function `%s'"
  msgid "shadowing library function %q#D"
  msgstr "skygger for biblioteksfunktionen '%s'"
  
! #: cp/decl.cc:1730
  #, fuzzy, gcc-internal-format
  #| msgid "library function `%#D' redeclared as non-function `%#D'"
  msgid "library function %q#D redeclared as non-function %q#D"
  msgstr "biblioteksfunktionen '%#D' er omerklÃ¦ret som '%#D' der ikke er en funktion"
  
! #: cp/decl.cc:1734 cp/decl.cc:1795
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with built-in declaration `%#D'"
  msgid "declaration of %q#D conflicts with built-in declaration %q#D"
  msgstr "strider mod indbygget erklÃ¦ring '%#D'"
  
! #: cp/decl.cc:1822
  #, fuzzy, gcc-internal-format
  #| msgid "ambiguates built-in declaration `%#D'"
  msgid "definition of %q#D ambiguates built-in declaration %q#D"
  msgstr "tvetydiggÃ¸r indbygget erklÃ¦ring '%#D'"
  
! #: cp/decl.cc:1828 cp/decl.cc:1842
  #, fuzzy, gcc-internal-format
  #| msgid "ambiguates built-in declaration `%#D'"
  msgid "new declaration %q#D ambiguates built-in declaration %q#D"
  msgstr "tvetydiggÃ¸r indbygget erklÃ¦ring '%#D'"
  
! #: cp/decl.cc:1832
  #, fuzzy, gcc-internal-format
  #| msgid "semicolon missing after %s declaration"
  msgid "ignoring the %q#D declaration"
  msgstr "semikolon mangler efter %s-erklÃ¦ring"
  
! #: cp/decl.cc:1937
  #, fuzzy, gcc-internal-format
  msgid "literal operator %q#D conflicts with raw literal operator"
  msgstr "dataomrÃ¥det '%s' er i modstrid med tidligere erklÃ¦ring"
  
! #: cp/decl.cc:1941
  #, gcc-internal-format
  msgid "raw literal operator %q#D conflicts with literal operator template"
  msgstr ""
  
! #: cp/decl.cc:1957
  #, fuzzy, gcc-internal-format
  #| msgid "`%#D' redeclared as different kind of symbol"
  msgid "%q#D redeclared as different kind of entity"
  msgstr "'%#D' omerklÃ¦ret som en anden form for symbol"
  
! #: cp/decl.cc:1982
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of template `%#D'"
  msgid "conflicting declaration of template %q#D"
  msgstr "erklÃ¦ring af skabelon '%#D'"
  
! #: cp/decl.cc:2003
  #, fuzzy, gcc-internal-format
  #| msgid "implicit declaration of function `%#D'"
  msgid "conflicting declaration of C function %q#D"
  msgstr "underforstÃ¥et erklÃ¦ring af funktionen '%#D'"
  
! #: cp/decl.cc:2025
  #, fuzzy, gcc-internal-format
  #| msgid "ambiguates old declaration `%#D'"
  msgid "ambiguating new declaration of %q#D"
  msgstr "tvetydiggÃ¸r tidligere erklÃ¦ring '%#D'"
  
! #: cp/decl.cc:2036
  #, fuzzy, gcc-internal-format
  msgid "conflicting declaration %q#D"
  msgstr "modstridende erklÃ¦ringer af '%s'"
  
! #: cp/decl.cc:2038
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration of `%#D'"
  msgid "previous declaration as %q#D"
  msgstr "tidligere erklÃ¦ring af '%#D'"
  
! #: cp/decl.cc:2049
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of \"%s\" shadows a global declaration"
  msgid "redeclaration of %<pragma omp declare reduction%>"
  msgstr "erklÃ¦ring af '%s' skygger for en global erklÃ¦ring"
  
! #: cp/decl.cc:2051
  #, fuzzy, gcc-internal-format
  #| msgid "previous non-function declaration `%#D'"
  msgid "previous %<pragma omp declare reduction%> declaration"
  msgstr "tidligere ikke-funktionserklÃ¦ring '%#D'"
  
! #: cp/decl.cc:2109
  #, fuzzy, gcc-internal-format
  #| msgid "`%#D' previously defined here"
  msgid "%q#D previously defined here"
  msgstr "'%#D' tidligere defineret her"
  
! #: cp/decl.cc:2110 cp/name-lookup.cc:3388 cp/name-lookup.cc:3426
  #: cp/name-lookup.cc:3452
  #, fuzzy, gcc-internal-format
  #| msgid "`%#D' previously declared here"
  msgid "%q#D previously declared here"
  msgstr "'%#D' tidligere erklÃ¦ret her"
  
! #: cp/decl.cc:2118
  #, fuzzy, gcc-internal-format
  #| msgid "method definition not in class context"
  msgid "parameter declaration is not name-independent"
  msgstr "metodedefinitionen optrÃ¦der ikke i en klassekontekst"
  
! #: cp/decl.cc:2123
  #, gcc-internal-format
  msgid "structured binding at namespace scope is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2127
  #, fuzzy, gcc-internal-format
  #| msgid "constructors cannot be declared virtual"
  msgid "static structured binding is not name-independent"
  msgstr "konstruktionsfunktioner kan ikke erklÃ¦res virtual"
  
! #: cp/decl.cc:2131
  #, fuzzy, gcc-internal-format
  #| msgid "constructors cannot be declared virtual"
  msgid "extern structured binding is not name-independent"
  msgstr "konstruktionsfunktioner kan ikke erklÃ¦res virtual"
  
! #: cp/decl.cc:2138
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids static data member `%D' with same name as enclosing class"
  msgid "static data member is not name-independent"
  msgstr "ISO C++ forbyder statisk datamedlem '%D' med samme navn som den omgivende klasse"
  
! #: cp/decl.cc:2141
  #, gcc-internal-format
  msgid "variable at namespace scope is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2144
  #, fuzzy, gcc-internal-format
  #| msgid "Main variant is not defined"
  msgid "static variable is not name-independent"
  msgstr "Hovedvariant er ikke defineret"
  
! #: cp/decl.cc:2147
  #, fuzzy, gcc-internal-format
  #| msgid "environment variable DJGPP not defined"
  msgid "extern variable is not name-independent"
  msgstr "miljÃ¸variablen DJGPP er ikke defineret"
  
! #: cp/decl.cc:2159
  #, fuzzy, gcc-internal-format
  #| msgid "prototype for `%#D'"
  msgid "prototype specified for %q#D"
  msgstr "prototypen for '%#D'"
  
! #: cp/decl.cc:2161
  #, fuzzy, gcc-internal-format
  #| msgid "non-prototype definition here"
  msgid "previous non-prototype definition here"
  msgstr "definition uden prototype her"
  
! #: cp/decl.cc:2201
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with new declaration with %L linkage"
  msgid "conflicting declaration of %q#D with %qL linkage"
  msgstr "strider mod ny erklÃ¦ring af med %L-kÃ¦dning"
  
! #: cp/decl.cc:2204
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration of `%#D' with %L linkage"
  msgid "previous declaration with %qL linkage"
  msgstr "tidligere erklÃ¦ring af '%#D' med %L-kÃ¦dning"
  
! #: cp/decl.cc:2253 cp/decl.cc:2263
  #, fuzzy, gcc-internal-format
  #| msgid "default argument given for parameter %d of `%#D'"
  msgid "default argument given for parameter %d of %q#D"
  msgstr "standardparameter givet til %d. parameter for '%#D'"
  
! #: cp/decl.cc:2256 cp/decl.cc:2266
  #, fuzzy, gcc-internal-format
  #| msgid "after previous specification in `%#D'"
  msgid "previous specification in %q#D here"
  msgstr "efter tidligere specifikation i '%#D'"
  
! #: cp/decl.cc:2321 cp/decl.cc:17267
  #, fuzzy, gcc-internal-format
  msgid "conflicting exporting for declaration %qD"
  msgstr "modstridende erklÃ¦ringer af '%s'"
  
! #: cp/decl.cc:2323 cp/decl.cc:17269
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' previously declared here"
  msgid "previously declared here without exporting"
  msgstr "'%s' tidligere erklÃ¦ret her"
  
! #: cp/decl.cc:2353
  #, fuzzy, gcc-internal-format
  msgid "previous definition of %qD here"
  msgstr "tidligere definition her"
  
! #: cp/decl.cc:2354
  #, fuzzy, gcc-internal-format
  msgid "previous declaration of %qD here"
  msgstr "tidligere erklÃ¦ring af '%#D' her"
  
! #: cp/decl.cc:2369
  #, fuzzy, gcc-internal-format
  #| msgid "function `%D' declared virtual inside a union"
  msgid "function %qD declared %<[[noreturn]]%> but its first declaration was not"
  msgstr "funktionen '%D' erklÃ¦ret virtual inden i en union"
  
! #: cp/decl.cc:2416
  #, fuzzy, gcc-internal-format
  #| msgid "redundant redeclaration of `%D' in same scope"
  msgid "redundant redeclaration of %qD in same scope"
  msgstr "overflÃ¸dig omerklÃ¦ring af '%D' i samme virkefelt"
  
! #: cp/decl.cc:2432
  #, fuzzy, gcc-internal-format
  #| msgid "nested redefinition of `%s'"
  msgid "deleted definition of %qD is not first declaration"
--- 61472,61794 ----
  msgid "structured binding declaration set but not used"
  msgstr ""
  
! #: cp/decl.cc:903
  #, fuzzy, gcc-internal-format
  #| msgid "%q+F declared %<static%> but never defined"
  msgid "%qF declared %<static%> but never defined"
  msgstr "%q+F erklÃ¦ret %<static%>, men aldrig defineret"
  
! #: cp/decl.cc:910
  #, fuzzy, gcc-internal-format
  #| msgid "environment variable DJGPP not defined"
  msgid "odr-used inline variable %qD is not defined"
  msgstr "miljÃ¸variablen DJGPP er ikke defineret"
  
! #: cp/decl.cc:1355
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' was declared `extern' and later `static'"
  msgid "%qD was declared %<extern%> and later %<static%>"
  msgstr "'%s' blev erklÃ¦ret 'extern' og derefter 'static'"
  
! #: cp/decl.cc:1395
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%F' throws different exceptions"
  msgid "declaration of %qF has a different exception specifier"
  msgstr "erklÃ¦ring af '%F' kaster forskellige undtagelser"
  
! #: cp/decl.cc:1425
  #, fuzzy, gcc-internal-format
  #| msgid "than previous declaration `%F'"
  msgid "from previous declaration %qF"
  msgstr "end tidligere erklÃ¦ring '%F'"
  
! #: cp/decl.cc:1486
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%D' as %s"
  msgid "redeclaration %qD differs in %qs from previous declaration"
  msgstr "erklÃ¦ring af '%D' som %s"
  
  # hÃ¦nger sammen med nÃ¦ste tekst
! #: cp/decl.cc:1490 cp/decl.cc:17247
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration `%D'"
  msgid "previous declaration %qD"
  msgstr "tidligere erklÃ¦ring '%D'"
  
! #: cp/decl.cc:1511
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' cannot have default arguments"
  msgid "redeclaration of %q#D may not have default arguments"
  msgstr "'%D' kan ikke have standardparametre"
  
! #: cp/decl.cc:1540
  #, fuzzy, gcc-internal-format
  #| msgid "friend declaration `%#D' declares a non-template function"
  msgid "friend declaration of %q#D specifies default arguments and isn%'t the only declaration"
  msgstr "friend-erklÃ¦ring '%#D' erklÃ¦rer en ikke-skabelonsfunktion"
  
! #: cp/decl.cc:1543
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration of `%D'"
  msgid "previous declaration of %q#D"
  msgstr "'%D' er tidligere erklÃ¦ret"
  
! #: cp/decl.cc:1596
  #, fuzzy, gcc-internal-format
  #| msgid "ambiguates old declaration `%#D'"
  msgid "ambiguating new declaration %q+#D"
  msgstr "tvetydiggÃ¸r tidligere erklÃ¦ring '%#D'"
  
! #: cp/decl.cc:1598 cp/decl.cc:2025
  #, fuzzy, gcc-internal-format
  #| msgid "global declaration `%#D'"
  msgid "old declaration %q#D"
  msgstr "global erklÃ¦ring '%#D'"
  
! #: cp/decl.cc:1638
  #, fuzzy, gcc-internal-format
  #| msgid "redefinition of default argument for `%#D'"
  msgid "redefinition of default argument for %q+#D"
  msgstr "omdefinering af standardparameter for '%#D'"
  
! #: cp/decl.cc:1640
  #, fuzzy, gcc-internal-format
  msgid "original definition appeared here"
  msgstr "  oprindelig definition er her"
  
! #: cp/decl.cc:1706
  #, fuzzy, gcc-internal-format
  msgid "built-in function %qD declared as non-function"
  msgstr "den indbyggede funktion '%s' er erklÃ¦ret som noget der ikke er en funktion"
  
  # shadowing betyder at en funktion har samme navn og dermed skjuler en anden
! #: cp/decl.cc:1719 cp/decl.cc:1845
  #, fuzzy, gcc-internal-format
  msgid "shadowing built-in function %q#D"
  msgstr "skygger for den indbyggede funktion '%s'"
  
! #: cp/decl.cc:1720 cp/decl.cc:1846
  #, fuzzy, gcc-internal-format
  #| msgid "shadowing library function `%s'"
  msgid "shadowing library function %q#D"
  msgstr "skygger for biblioteksfunktionen '%s'"
  
! #: cp/decl.cc:1728
  #, fuzzy, gcc-internal-format
  #| msgid "library function `%#D' redeclared as non-function `%#D'"
  msgid "library function %q#D redeclared as non-function %q#D"
  msgstr "biblioteksfunktionen '%#D' er omerklÃ¦ret som '%#D' der ikke er en funktion"
  
! #: cp/decl.cc:1732 cp/decl.cc:1793
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with built-in declaration `%#D'"
  msgid "declaration of %q#D conflicts with built-in declaration %q#D"
  msgstr "strider mod indbygget erklÃ¦ring '%#D'"
  
! #: cp/decl.cc:1820
  #, fuzzy, gcc-internal-format
  #| msgid "ambiguates built-in declaration `%#D'"
  msgid "definition of %q#D ambiguates built-in declaration %q#D"
  msgstr "tvetydiggÃ¸r indbygget erklÃ¦ring '%#D'"
  
! #: cp/decl.cc:1826 cp/decl.cc:1840
  #, fuzzy, gcc-internal-format
  #| msgid "ambiguates built-in declaration `%#D'"
  msgid "new declaration %q#D ambiguates built-in declaration %q#D"
  msgstr "tvetydiggÃ¸r indbygget erklÃ¦ring '%#D'"
  
! #: cp/decl.cc:1830
  #, fuzzy, gcc-internal-format
  #| msgid "semicolon missing after %s declaration"
  msgid "ignoring the %q#D declaration"
  msgstr "semikolon mangler efter %s-erklÃ¦ring"
  
! #: cp/decl.cc:1935
  #, fuzzy, gcc-internal-format
  msgid "literal operator %q#D conflicts with raw literal operator"
  msgstr "dataomrÃ¥det '%s' er i modstrid med tidligere erklÃ¦ring"
  
! #: cp/decl.cc:1939
  #, gcc-internal-format
  msgid "raw literal operator %q#D conflicts with literal operator template"
  msgstr ""
  
! #: cp/decl.cc:1955
  #, fuzzy, gcc-internal-format
  #| msgid "`%#D' redeclared as different kind of symbol"
  msgid "%q#D redeclared as different kind of entity"
  msgstr "'%#D' omerklÃ¦ret som en anden form for symbol"
  
! #: cp/decl.cc:1980
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of template `%#D'"
  msgid "conflicting declaration of template %q#D"
  msgstr "erklÃ¦ring af skabelon '%#D'"
  
! #: cp/decl.cc:2001
  #, fuzzy, gcc-internal-format
  #| msgid "implicit declaration of function `%#D'"
  msgid "conflicting declaration of C function %q#D"
  msgstr "underforstÃ¥et erklÃ¦ring af funktionen '%#D'"
  
! #: cp/decl.cc:2023
  #, fuzzy, gcc-internal-format
  #| msgid "ambiguates old declaration `%#D'"
  msgid "ambiguating new declaration of %q#D"
  msgstr "tvetydiggÃ¸r tidligere erklÃ¦ring '%#D'"
  
! #: cp/decl.cc:2034
  #, fuzzy, gcc-internal-format
  msgid "conflicting declaration %q#D"
  msgstr "modstridende erklÃ¦ringer af '%s'"
  
! #: cp/decl.cc:2036
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration of `%#D'"
  msgid "previous declaration as %q#D"
  msgstr "tidligere erklÃ¦ring af '%#D'"
  
! #: cp/decl.cc:2047
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of \"%s\" shadows a global declaration"
  msgid "redeclaration of %<pragma omp declare reduction%>"
  msgstr "erklÃ¦ring af '%s' skygger for en global erklÃ¦ring"
  
! #: cp/decl.cc:2049
  #, fuzzy, gcc-internal-format
  #| msgid "previous non-function declaration `%#D'"
  msgid "previous %<pragma omp declare reduction%> declaration"
  msgstr "tidligere ikke-funktionserklÃ¦ring '%#D'"
  
! #: cp/decl.cc:2107
  #, fuzzy, gcc-internal-format
  #| msgid "`%#D' previously defined here"
  msgid "%q#D previously defined here"
  msgstr "'%#D' tidligere defineret her"
  
! #: cp/decl.cc:2108 cp/name-lookup.cc:3388 cp/name-lookup.cc:3426
  #: cp/name-lookup.cc:3452
  #, fuzzy, gcc-internal-format
  #| msgid "`%#D' previously declared here"
  msgid "%q#D previously declared here"
  msgstr "'%#D' tidligere erklÃ¦ret her"
  
! #: cp/decl.cc:2116
  #, fuzzy, gcc-internal-format
  #| msgid "method definition not in class context"
  msgid "parameter declaration is not name-independent"
  msgstr "metodedefinitionen optrÃ¦der ikke i en klassekontekst"
  
! #: cp/decl.cc:2121
  #, gcc-internal-format
  msgid "structured binding at namespace scope is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2125
  #, fuzzy, gcc-internal-format
  #| msgid "constructors cannot be declared virtual"
  msgid "static structured binding is not name-independent"
  msgstr "konstruktionsfunktioner kan ikke erklÃ¦res virtual"
  
! #: cp/decl.cc:2129
  #, fuzzy, gcc-internal-format
  #| msgid "constructors cannot be declared virtual"
  msgid "extern structured binding is not name-independent"
  msgstr "konstruktionsfunktioner kan ikke erklÃ¦res virtual"
  
! #: cp/decl.cc:2136
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids static data member `%D' with same name as enclosing class"
  msgid "static data member is not name-independent"
  msgstr "ISO C++ forbyder statisk datamedlem '%D' med samme navn som den omgivende klasse"
  
! #: cp/decl.cc:2139
  #, gcc-internal-format
  msgid "variable at namespace scope is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2142
  #, fuzzy, gcc-internal-format
  #| msgid "Main variant is not defined"
  msgid "static variable is not name-independent"
  msgstr "Hovedvariant er ikke defineret"
  
! #: cp/decl.cc:2145
  #, fuzzy, gcc-internal-format
  #| msgid "environment variable DJGPP not defined"
  msgid "extern variable is not name-independent"
  msgstr "miljÃ¸variablen DJGPP er ikke defineret"
  
! #: cp/decl.cc:2157
  #, fuzzy, gcc-internal-format
  #| msgid "prototype for `%#D'"
  msgid "prototype specified for %q#D"
  msgstr "prototypen for '%#D'"
  
! #: cp/decl.cc:2159
  #, fuzzy, gcc-internal-format
  #| msgid "non-prototype definition here"
  msgid "previous non-prototype definition here"
  msgstr "definition uden prototype her"
  
! #: cp/decl.cc:2199
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with new declaration with %L linkage"
  msgid "conflicting declaration of %q#D with %qL linkage"
  msgstr "strider mod ny erklÃ¦ring af med %L-kÃ¦dning"
  
! #: cp/decl.cc:2202
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration of `%#D' with %L linkage"
  msgid "previous declaration with %qL linkage"
  msgstr "tidligere erklÃ¦ring af '%#D' med %L-kÃ¦dning"
  
! #: cp/decl.cc:2251 cp/decl.cc:2261
  #, fuzzy, gcc-internal-format
  #| msgid "default argument given for parameter %d of `%#D'"
  msgid "default argument given for parameter %d of %q#D"
  msgstr "standardparameter givet til %d. parameter for '%#D'"
  
! #: cp/decl.cc:2254 cp/decl.cc:2264
  #, fuzzy, gcc-internal-format
  #| msgid "after previous specification in `%#D'"
  msgid "previous specification in %q#D here"
  msgstr "efter tidligere specifikation i '%#D'"
  
! #: cp/decl.cc:2319 cp/decl.cc:17265
  #, fuzzy, gcc-internal-format
  msgid "conflicting exporting for declaration %qD"
  msgstr "modstridende erklÃ¦ringer af '%s'"
  
! #: cp/decl.cc:2321 cp/decl.cc:17267
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' previously declared here"
  msgid "previously declared here without exporting"
  msgstr "'%s' tidligere erklÃ¦ret her"
  
! #: cp/decl.cc:2351
  #, fuzzy, gcc-internal-format
  msgid "previous definition of %qD here"
  msgstr "tidligere definition her"
  
! #: cp/decl.cc:2352
  #, fuzzy, gcc-internal-format
  msgid "previous declaration of %qD here"
  msgstr "tidligere erklÃ¦ring af '%#D' her"
  
! #: cp/decl.cc:2367
  #, fuzzy, gcc-internal-format
  #| msgid "function `%D' declared virtual inside a union"
  msgid "function %qD declared %<[[noreturn]]%> but its first declaration was not"
  msgstr "funktionen '%D' erklÃ¦ret virtual inden i en union"
  
! #: cp/decl.cc:2414
  #, fuzzy, gcc-internal-format
  #| msgid "redundant redeclaration of `%D' in same scope"
  msgid "redundant redeclaration of %qD in same scope"
  msgstr "overflÃ¸dig omerklÃ¦ring af '%D' i samme virkefelt"
  
! #: cp/decl.cc:2430
  #, fuzzy, gcc-internal-format
  #| msgid "nested redefinition of `%s'"
  msgid "deleted definition of %qD is not first declaration"
*************** msgstr "indlejret omdefinering af '%s'"
*** 61710,61757 ****
  #. that specialization that would cause an implicit
  #. instantiation to take place, in every translation unit in
  #. which such a use occurs.
! #: cp/decl.cc:2949
  #, fuzzy, gcc-internal-format
  #| msgid "explicit specialization of %D after first use"
  msgid "explicit specialization of %qD after first use"
  msgstr "eksplicit specialisering af %D efter fÃ¸rste brug"
  
! #: cp/decl.cc:3131
  #, fuzzy, gcc-internal-format
  msgid "%qD: visibility attribute ignored because it conflicts with previous declaration"
  msgstr "dataomrÃ¥det '%s' er i modstrid med tidligere erklÃ¦ring"
  
  #. Reject two definitions.
! #: cp/decl.cc:3409 cp/decl.cc:3438 cp/decl.cc:3476 cp/decl.cc:3493
! #: cp/decl.cc:3592
  #, fuzzy, gcc-internal-format
  #| msgid "redefinition of `%#T'"
  msgid "redefinition of %q#D"
  msgstr "omdefinering af '%#T'"
  
! #: cp/decl.cc:3425
  #, fuzzy, gcc-internal-format
  #| msgid "`%#D' conflicts with previous using declaration `%#D'"
  msgid "%qD conflicts with used function"
  msgstr "'%#D' strider mod tidligere using-erklÃ¦ring '%#D'"
  
! #: cp/decl.cc:3435
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' not declared"
  msgid "%q#D not declared in class"
  msgstr "'%D' ikke erklÃ¦ret"
  
! #: cp/decl.cc:3449 cp/decl.cc:3503
  #, gcc-internal-format
  msgid "%q+D redeclared inline with %<gnu_inline%> attribute"
  msgstr ""
  
! #: cp/decl.cc:3452 cp/decl.cc:3506
  #, gcc-internal-format
  msgid "%q+D redeclared inline without %<gnu_inline%> attribute"
  msgstr ""
  
! #: cp/decl.cc:3462
  #, gcc-internal-format
  msgid "comparison operator %q+D defaulted after its first declaration"
  msgstr ""
--- 61802,61849 ----
  #. that specialization that would cause an implicit
  #. instantiation to take place, in every translation unit in
  #. which such a use occurs.
! #: cp/decl.cc:2947
  #, fuzzy, gcc-internal-format
  #| msgid "explicit specialization of %D after first use"
  msgid "explicit specialization of %qD after first use"
  msgstr "eksplicit specialisering af %D efter fÃ¸rste brug"
  
! #: cp/decl.cc:3129
  #, fuzzy, gcc-internal-format
  msgid "%qD: visibility attribute ignored because it conflicts with previous declaration"
  msgstr "dataomrÃ¥det '%s' er i modstrid med tidligere erklÃ¦ring"
  
  #. Reject two definitions.
! #: cp/decl.cc:3407 cp/decl.cc:3436 cp/decl.cc:3474 cp/decl.cc:3491
! #: cp/decl.cc:3590
  #, fuzzy, gcc-internal-format
  #| msgid "redefinition of `%#T'"
  msgid "redefinition of %q#D"
  msgstr "omdefinering af '%#T'"
  
! #: cp/decl.cc:3423
  #, fuzzy, gcc-internal-format
  #| msgid "`%#D' conflicts with previous using declaration `%#D'"
  msgid "%qD conflicts with used function"
  msgstr "'%#D' strider mod tidligere using-erklÃ¦ring '%#D'"
  
! #: cp/decl.cc:3433
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' not declared"
  msgid "%q#D not declared in class"
  msgstr "'%D' ikke erklÃ¦ret"
  
! #: cp/decl.cc:3447 cp/decl.cc:3501
  #, gcc-internal-format
  msgid "%q+D redeclared inline with %<gnu_inline%> attribute"
  msgstr ""
  
! #: cp/decl.cc:3450 cp/decl.cc:3504
  #, gcc-internal-format
  msgid "%q+D redeclared inline without %<gnu_inline%> attribute"
  msgstr ""
  
! #: cp/decl.cc:3460
  #, gcc-internal-format
  msgid "comparison operator %q+D defaulted after its first declaration"
  msgstr ""
*************** msgstr ""
*** 61759,61780 ****
  #. is_primary=
  #. is_partial=
  #. is_friend_decl=
! #: cp/decl.cc:3523
  #, gcc-internal-format
  msgid "redeclaration of friend %q#D may not have default template arguments"
  msgstr ""
  
! #: cp/decl.cc:3538
  #, fuzzy, gcc-internal-format
  msgid "thread-local declaration of %q#D follows non-thread-local declaration"
  msgstr "trÃ¥dlokal erklÃ¦ring af '%s' fÃ¸lger ikke-trÃ¥dlokal erklÃ¦ring"
  
! #: cp/decl.cc:3541
  #, fuzzy, gcc-internal-format
  msgid "non-thread-local declaration of %q#D follows thread-local declaration"
  msgstr "ikke-trÃ¥dlokal erklÃ¦ring af '%s' fÃ¸lger trÃ¥dlokal erklÃ¦ring"
  
! #: cp/decl.cc:3556 cp/decl.cc:3600 cp/name-lookup.cc:2913
  #: cp/name-lookup.cc:3420 cp/name-lookup.cc:3423 cp/name-lookup.cc:3446
  #: cp/name-lookup.cc:3449
  #, fuzzy, gcc-internal-format
--- 61851,61872 ----
  #. is_primary=
  #. is_partial=
  #. is_friend_decl=
! #: cp/decl.cc:3521
  #, gcc-internal-format
  msgid "redeclaration of friend %q#D may not have default template arguments"
  msgstr ""
  
! #: cp/decl.cc:3536
  #, fuzzy, gcc-internal-format
  msgid "thread-local declaration of %q#D follows non-thread-local declaration"
  msgstr "trÃ¥dlokal erklÃ¦ring af '%s' fÃ¸lger ikke-trÃ¥dlokal erklÃ¦ring"
  
! #: cp/decl.cc:3539
  #, fuzzy, gcc-internal-format
  msgid "non-thread-local declaration of %q#D follows thread-local declaration"
  msgstr "ikke-trÃ¥dlokal erklÃ¦ring af '%s' fÃ¸lger trÃ¥dlokal erklÃ¦ring"
  
! #: cp/decl.cc:3554 cp/decl.cc:3598 cp/name-lookup.cc:2913
  #: cp/name-lookup.cc:3420 cp/name-lookup.cc:3423 cp/name-lookup.cc:3446
  #: cp/name-lookup.cc:3449
  #, fuzzy, gcc-internal-format
*************** msgstr "ikke-trÃ¥dlokal erklÃ¦ring af '%
*** 61782,62544 ****
  msgid "redeclaration of %q#D"
  msgstr "omerklÃ¦ring af '%#D'"
  
! #: cp/decl.cc:3583
  #, fuzzy, gcc-internal-format
  #| msgid "redundant redeclaration of `%s' in same scope"
  msgid "redundant redeclaration of %<constexpr%> static data member %qD"
  msgstr "overflÃ¸dig omerklÃ¦ring af '%s' i samme virkefelt"
  
! #: cp/decl.cc:3652
  #, gcc-internal-format
  msgid "local label %qE conflicts with existing label"
  msgstr ""
  
! #: cp/decl.cc:3653
  #, fuzzy, gcc-internal-format
  #| msgid "a previous local"
  msgid "previous label"
  msgstr "en tidligere lokal variabel"
  
! #: cp/decl.cc:3743
  #, gcc-internal-format
  msgid "jump to label %qD"
  msgstr "spring til etiketten %qD"
  
! #: cp/decl.cc:3744
  #, gcc-internal-format
  msgid "jump to case label"
  msgstr "spring til case-etiket"
  
! #: cp/decl.cc:3748
  #, gcc-internal-format
  msgid "  as a possible target of computed goto"
  msgstr ""
  
! #: cp/decl.cc:3750
  #, gcc-internal-format
  msgid "  from here"
  msgstr "  herfra"
  
! #: cp/decl.cc:3779 cp/decl.cc:4018
  #, gcc-internal-format
  msgid "  exits OpenMP structured block"
  msgstr ""
  
! #: cp/decl.cc:3804
  #, fuzzy, gcc-internal-format
  #| msgid "  crosses initialization of `%#D'"
  msgid "  crosses initialization of %q#D"
  msgstr "  krydser klargÃ¸ring af '%#D'"
  
! #: cp/decl.cc:3816 cp/decl.cc:3984
  #, fuzzy, gcc-internal-format
  #| msgid "  enters try block"
  msgid "  enters %<try%> block"
  msgstr "  gÃ¥r ind i try-blok"
  
! #: cp/decl.cc:3822 cp/decl.cc:3973 cp/decl.cc:3986
  #, fuzzy, gcc-internal-format
  #| msgid "  enters catch block"
  msgid "  enters %<catch%> block"
  msgstr "  gÃ¥r ind i catch-blok"
  
! #: cp/decl.cc:3828 cp/decl.cc:4000
  #, fuzzy, gcc-internal-format
  #| msgid "  enters try block"
  msgid "  enters OpenMP structured block"
  msgstr "  gÃ¥r ind i try-blok"
  
! #: cp/decl.cc:3834 cp/decl.cc:3988
  #, gcc-internal-format
  msgid "  enters synchronized or atomic statement"
  msgstr ""
  
! #: cp/decl.cc:3840 cp/decl.cc:3994
  #, fuzzy, gcc-internal-format
  #| msgid "overflow in constant expression"
  msgid "  enters statement expression"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/decl.cc:3847 cp/decl.cc:3990
  #, fuzzy, gcc-internal-format
  msgid "  enters %<constexpr if%> statement"
  msgstr "uventet operand"
  
! #: cp/decl.cc:3853 cp/decl.cc:3992
  #, fuzzy, gcc-internal-format
  msgid "  enters %<consteval if%> statement"
  msgstr "uventet operand"
  
! #: cp/decl.cc:3884 cp/decl.cc:4058
  #, fuzzy, gcc-internal-format
  #| msgid "%s does not support %s"
  msgid "  does not destroy %qD"
  msgstr "%s understÃ¸tter ikke %s"
  
! #: cp/decl.cc:3886 cp/decl.cc:4042
  #, fuzzy, gcc-internal-format
  msgid "  does not clean up handled exception"
  msgstr "stÃ¸rrelse i tabel-new skal vÃ¦re en heltalstype"
  
! #: cp/decl.cc:3978
  #, fuzzy, gcc-internal-format
  #| msgid "  skips initialization of `%#D'"
  msgid "  skips initialization of %q#D"
  msgstr "  springer over klargÃ¸ring af '%#D'"
  
! #: cp/decl.cc:4518 cp/parser.cc:7467
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' used without template parameters"
  msgid "%qD used without template arguments"
  msgstr "'%D' benyttet uden skabelonsparametre"
  
! #: cp/decl.cc:4524
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function template"
  msgid "%qD is a function, not a type"
  msgstr "'%D' er ikke en funktionsskabelon"
  
! #: cp/decl.cc:4535
  #, fuzzy, gcc-internal-format
  #| msgid "`%#T' is not a template"
  msgid "%q#T is not a class"
  msgstr "'%#T' er ikke en skabelon"
  
! #: cp/decl.cc:4574 cp/decl.cc:4675
  #, fuzzy, gcc-internal-format
  #| msgid "no class template named `%#T' in `%#T'"
  msgid "no class template named %q#T in %q#T"
  msgstr "ingen klasseskabelon ved navn '%#T' i '%#T'"
  
! #: cp/decl.cc:4575
  #, fuzzy, gcc-internal-format
  #| msgid "no type named `%#T' in `%#T'"
  msgid "no type named %q#T in %q#T"
  msgstr "ingen type ved navn '%#T' i '%#T'"
  
! #: cp/decl.cc:4589
  #, fuzzy, gcc-internal-format
  #| msgid "call of `(%T) (%A)' is ambiguous"
  msgid "lookup of %qT in %qT is ambiguous"
  msgstr "kald af '(%T) (%A)' er tvetydigt"
  
! #: cp/decl.cc:4598
  #, gcc-internal-format
  msgid "%<typename %T::%D%> names %q#T, which is not a class template"
  msgstr ""
  
! #: cp/decl.cc:4611
  #, fuzzy, gcc-internal-format
  #| msgid "`%D::%D' is not a template"
  msgid "%<typename %T::%D%> names %q#D, which is not a type"
  msgstr "'%D::%D' er ikke en skabelon"
  
! #: cp/decl.cc:4685
  #, fuzzy, gcc-internal-format
  #| msgid "template parameters cannot be friends"
  msgid "template parameters do not match template %qD"
  msgstr "skabelonsparametre kan ikke vÃ¦re venner"
  
! #: cp/decl.cc:5163
  #, fuzzy, gcc-internal-format
  #| msgid "-falign-labels=%d is not supported"
  msgid "%<-faligned-new=%d%> is not a power of two"
  msgstr "-falign-labels=%d understÃ¸ttes ikke"
  
! #: cp/decl.cc:5218
  #, gcc-internal-format
  msgid "%<--param destructive-interference-size=%d%> is less than %d"
  msgstr ""
  
! #: cp/decl.cc:5222
  #, gcc-internal-format
  msgid "%<--param destructive-interference-size=%d%> is less than %<--param l1-cache-line-size=%d%>"
  msgstr ""
  
! #: cp/decl.cc:5235
  #, gcc-internal-format
  msgid "%<--param constructive-interference-size=%d%> is less than %d"
  msgstr ""
  
! #: cp/decl.cc:5240
  #, gcc-internal-format
  msgid "%<--param constructive-interference-size=%d%> is greater than %<--param l1-cache-line-size=%d%>"
  msgstr ""
  
! #: cp/decl.cc:5567
  #, fuzzy, gcc-internal-format
  #| msgid "`%#D' invalid; an anonymous union can only have non-static data members"
  msgid "%q#D invalid; an anonymous union may only have public non-static data members"
  msgstr "'%#D' er ugyldig; en anonym union kan kun have ikke-statiske datamedlemmer"
  
! #: cp/decl.cc:5577 cp/parser.cc:24254
  #, fuzzy, gcc-internal-format
  #| msgid "-traditional is deprecated and may be removed"
  msgid "this flexibility is deprecated and will be removed"
  msgstr "-traditional er forÃ¦ldet og kan blive fjernet"
  
! #: cp/decl.cc:5606
  #, fuzzy, gcc-internal-format
  #| msgid "anonymous struct not inside named type"
  msgid "anonymous struct with base classes"
  msgstr "anonym struct er ikke inden i en navngiven type"
  
! #: cp/decl.cc:5618
  #, fuzzy, gcc-internal-format
  #| msgid "member %#D' with constructor not allowed in anonymous aggregate"
  msgid "member %q+#D with constructor not allowed in anonymous aggregate"
  msgstr "medlemmet '%#D' med konstruktionsfunktion er ikke tilladt i anonym sammensat type"
  
! #: cp/decl.cc:5621
  #, fuzzy, gcc-internal-format
  #| msgid "member %#D' with destructor not allowed in anonymous aggregate"
  msgid "member %q+#D with destructor not allowed in anonymous aggregate"
  msgstr "medlemmet '%#D' med destruktionsfunktion er ikke tilladt i anonym sammensat type"
  
! #: cp/decl.cc:5624
  #, fuzzy, gcc-internal-format
  #| msgid "member %#D' with copy assignment operator not allowed in anonymous aggregate"
  msgid "member %q+#D with copy assignment operator not allowed in anonymous aggregate"
  msgstr "medlemmet '%#D' med kopitildelingsoperator er ikke tilladt i anonym sammensat type"
  
! #: cp/decl.cc:5643
  #, fuzzy, gcc-internal-format
  #| msgid "forward declaration of `%#T'"
  msgid "attribute ignored in declaration of %q#T"
  msgstr "forhÃ¥ndserklÃ¦ring af '%#T'"
  
! #: cp/decl.cc:5646
  #, gcc-internal-format
  msgid "attribute for %q#T must follow the %qs keyword"
  msgstr ""
  
! #: cp/decl.cc:5688
  #, gcc-internal-format
  msgid "multiple types in one declaration"
  msgstr "flere typer i Ã©n erklÃ¦ring"
  
! #: cp/decl.cc:5693
  #, fuzzy, gcc-internal-format
  #| msgid "redeclaration of C++ built-in type `%T'"
  msgid "redeclaration of C++ built-in type %qT"
  msgstr "omerklÃ¦ring af indbygget type i C++ '%T'"
  
! #: cp/decl.cc:5710
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' can only be specified for objects and functions"
  msgid "%<auto%> can only be specified for variables or function declarations"
  msgstr "'%D' kan kun angives for objekter og funktioner"
  
! #: cp/decl.cc:5743
  #, gcc-internal-format
  msgid "missing type-name in typedef-declaration"
  msgstr "manglende typenavn i typedef-erklÃ¦ring"
  
! #: cp/decl.cc:5751
  #, gcc-internal-format
  msgid "ISO C++ prohibits anonymous structs"
  msgstr "ISO C++ forbyder anonyme strukturer"
  
! #: cp/decl.cc:5758
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' can only be specified for functions"
  msgid "%<inline%> can only be specified for functions"
  msgstr "'%D' kan kun angives for funktioner"
  
! #: cp/decl.cc:5761
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' can only be specified for functions"
  msgid "%<virtual%> can only be specified for functions"
  msgstr "'%D' kan kun angives for funktioner"
  
! #: cp/decl.cc:5766
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' can only be specified inside a class"
  msgid "%<friend%> can only be specified inside a class"
  msgstr "'%D' kan kun angives inden i en klasse"
  
! #: cp/decl.cc:5769
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' can only be specified for constructors"
  msgid "%<explicit%> can only be specified for constructors"
  msgstr "'%D' kan kun angives for konstruktionsfunktioner"
  
! #: cp/decl.cc:5772
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' can only be specified for objects and functions"
  msgid "a storage class can only be specified for objects and functions"
  msgstr "'%D' kan kun angives for objekter og funktioner"
  
! #: cp/decl.cc:5776
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' can only be specified for objects and functions"
  msgid "%<const%> can only be specified for objects and functions"
  msgstr "'%D' kan kun angives for objekter og funktioner"
  
! #: cp/decl.cc:5780
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' can only be specified for objects and functions"
  msgid "%<volatile%> can only be specified for objects and functions"
  msgstr "'%D' kan kun angives for objekter og funktioner"
  
! #: cp/decl.cc:5784
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' can only be specified for objects and functions"
  msgid "%<__restrict%> can only be specified for objects and functions"
  msgstr "'%D' kan kun angives for objekter og funktioner"
  
! #: cp/decl.cc:5788
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' can only be specified for objects and functions"
  msgid "%<__thread%> can only be specified for objects and functions"
  msgstr "'%D' kan kun angives for objekter og funktioner"
  
! #: cp/decl.cc:5792
  #, fuzzy, gcc-internal-format
  #| msgid "type defaults to `int' in declaration of `%s'"
  msgid "%<typedef%> was ignored in this declaration"
  msgstr "typen antages at vÃ¦re 'int' i erklÃ¦ringen af '%s'"
  
! #: cp/decl.cc:5795 cp/decl.cc:5798 cp/decl.cc:5801
  #, fuzzy, gcc-internal-format
  msgid "%qs cannot be used for type declarations"
  msgstr "tom erklÃ¦ring"
  
! #: cp/decl.cc:5824
  #, fuzzy, gcc-internal-format
  #| msgid "template parameter list used in explicit instantiation"
  msgid "attribute ignored in explicit instantiation %q#T"
  msgstr "skabelonsparameterliste benyttet i eksplicit instantiering"
  
! #: cp/decl.cc:5827
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute can only be applied to class definitions"
  msgid "no attribute can be applied to an explicit instantiation"
  msgstr "egenskaben '%s' kan kun anvendes med klassedefinitioner"
  
! #: cp/decl.cc:5840 cp/decl.cc:13780 cp/decl.cc:15427 cp/parser.cc:16037
! #: cp/parser.cc:21975 cp/parser.cc:28867
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute ignored"
  msgid "attribute ignored"
  msgstr "egenskaben '%s' ignoreret"
  
! #: cp/decl.cc:5842 cp/decl.cc:13781
  #, gcc-internal-format
  msgid "an attribute that appertains to a type-specifier is ignored"
  msgstr ""
  
! #: cp/decl.cc:5917
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute can only be applied to class definitions"
  msgid "ignoring attributes applied to class type %qT outside of definition"
  msgstr "egenskaben '%s' kan kun anvendes med klassedefinitioner"
  
  #. A template type parameter or other dependent type.
! #: cp/decl.cc:5921
  #, gcc-internal-format
  msgid "ignoring attributes applied to dependent type %qT without an associated declaration"
  msgstr ""
  
  # init dÃ¦kker over vÃ¦rditildeling her - samme for de nÃ¦ste mange
! #: cp/decl.cc:5987 cp/decl2.cc:1069 cp/decl2.cc:1271
  #, fuzzy, gcc-internal-format
  #| msgid "typedef `%D' is initialized (use __typeof__ instead)"
  msgid "typedef %qD is initialized (use %qs instead)"
  msgstr "typedef '%D' bliver tildelt en vÃ¦rdi (benyt __typeof__ i stedet)"
  
! #: cp/decl.cc:6000
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%#D' has `extern' and is initialized"
  msgid "declaration of %q#D has %<extern%> and is initialized"
  msgstr "erklÃ¦ringen af '%#D' indeholder 'extern' og variablen bliver tildelt en startvÃ¦rdi"
  
! #: cp/decl.cc:6038
  #, fuzzy, gcc-internal-format
  msgid "definition of %q#D is marked %<dllimport%>"
  msgstr "'auto' er pÃ¥hÃ¦ftet funktionsdefinitionen"
  
! #: cp/decl.cc:6065
  #, fuzzy, gcc-internal-format
  msgid "%q+#D is not a static data member of %q#T"
  msgstr "'%#D' er ikke et statisk medlem af '%#T'"
  
! #: cp/decl.cc:6074
  #, fuzzy, gcc-internal-format
  #| msgid "template declaration of `%#D'"
  msgid "non-member-template declaration of %qD"
  msgstr "skabelonserklÃ¦ring af '%#D'"
  
! #: cp/decl.cc:6075
  #, fuzzy, gcc-internal-format
  #| msgid "invalid member template declaration `%D'"
  msgid "does not match member template declaration here"
  msgstr "ugyldig medlemsskabelonerklÃ¦ring '%D'"
  
! #: cp/decl.cc:6087
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ does not permit `%T::%D' to be defined as `%T::%D'"
  msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
  msgstr "ISO C++ tillader ikke '%T::%D' at blive defineret som '%T::%D'"
  
! #: cp/decl.cc:6099
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate initialization of %D"
  msgid "duplicate initialization of %qD"
  msgstr "%D tildelt startvÃ¦rdi mere end Ã©n gang"
  
! #: cp/decl.cc:6149 cp/decl.cc:6153
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%#D' outside of class is not definition"
  msgid "declaration of %q#D outside of class is not definition"
  msgstr "erklÃ¦ring af '%#D' uden for en klasse er ikke en definition"
  
! #: cp/decl.cc:6171
  #, gcc-internal-format
  msgid "block-scope extern declaration %q#D must not be attached to a named module"
  msgstr ""
  
! #: cp/decl.cc:6207
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%qD defined %<thread_local%> in %qs function only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/decl.cc:6213
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%qD defined %<static%> in %qs function only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/decl.cc:6279
  #, fuzzy, gcc-internal-format
  #| msgid "variable `%#D' has initializer but incomplete type"
  msgid "variable %q#D has initializer but incomplete type"
  msgstr "variablen '%#D' bliver tildelt en startvÃ¦rdi, men er af en ufuldstÃ¦ndig type"
  
! #: cp/decl.cc:6288 cp/decl.cc:7763
  #, fuzzy, gcc-internal-format
  #| msgid "elements of array `%#D' have incomplete type"
  msgid "elements of array %q#D have incomplete type"
  msgstr "elementer i tabellen '%#D' er af en ufuldstÃ¦ndig type"
  
! #: cp/decl.cc:6299
  #, fuzzy, gcc-internal-format
  #| msgid "aggregate `%#D' has incomplete type and cannot be defined"
  msgid "aggregate %q#D has incomplete type and cannot be defined"
  msgstr "den sammensatte type '%#D' er af en ufuldstÃ¦ndig type og kan ikke defineres"
  
! #: cp/decl.cc:6369
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' declared as reference but not initialized"
  msgid "%qD declared as reference but not initialized"
  msgstr "'%D' erklÃ¦ret som en reference, men bliver ikke tildelt en startvÃ¦rdi"
  
! #: cp/decl.cc:6452
  #, gcc-internal-format
  msgid "name used in a GNU-style designated initializer for an array"
  msgstr ""
  
! #: cp/decl.cc:6458
  #, gcc-internal-format
  msgid "name %qD used in a GNU-style designated initializer for an array"
  msgstr ""
  
! #: cp/decl.cc:6477
  #, gcc-internal-format
  msgid "non-trivial designated initializers not supported"
  msgstr "ikke-trivielle udpegede startvÃ¦rdier er ikke understÃ¸ttet"
  
! #: cp/decl.cc:6481
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%D' is not an integral constant-expression"
  msgid "C99 designator %qE is not an integral constant-expression"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/decl.cc:6546
  #, gcc-internal-format
  msgid "initializer fails to determine size of %qD"
  msgstr "startvÃ¦rdien giver ikke stÃ¸rrelsen af %qD"
  
! #: cp/decl.cc:6553
  #, gcc-internal-format
  msgid "array size missing in %qD"
  msgstr "tabelstÃ¸rrelsen mangler i %qD"
  
! #: cp/decl.cc:6565
  #, gcc-internal-format
  msgid "zero-size array %qD"
  msgstr "nulstÃ¸rrelsestabel %qD"
  
! #: cp/decl.cc:6605
  #, gcc-internal-format
  msgid "storage size of %qD isn%'t known"
  msgstr "lagringsstÃ¸rrelsen af %qD er ikke kendt"
  
! #: cp/decl.cc:6630
  #, fuzzy, gcc-internal-format
  #| msgid "storage size of `%D' isn't constant"
  msgid "storage size of %qD isn%'t constant"
  msgstr "lagringsstÃ¸rrelsen af '%D' er ikke konstant"
  
! #: cp/decl.cc:6732
  #, fuzzy, gcc-internal-format
  #| msgid "sorry: semantics of inline function static data `%#D' are wrong (you'll wind up with multiple copies)"
  msgid "sorry: semantics of inline variable %q#D are wrong (you%'ll wind up with multiple copies)"
  msgstr "semantikken for indlejret funktionsstatisk data '%#D' er forkert (du ender med flere kopier)"
  
! #: cp/decl.cc:6736
  #, fuzzy, gcc-internal-format
  #| msgid "sorry: semantics of inline function static data `%#D' are wrong (you'll wind up with multiple copies)"
  msgid "sorry: semantics of inline function static data %q#D are wrong (you%'ll wind up with multiple copies)"
  msgstr "semantikken for indlejret funktionsstatisk data '%#D' er forkert (du ender med flere kopier)"
  
! #: cp/decl.cc:6743
  #, fuzzy, gcc-internal-format
  msgid "you can work around this by removing the initializer"
  msgstr "  du kan arbejde dig rundt om dette ved at fjerne startvÃ¦rdien"
  
! #: cp/decl.cc:6786 rust/backend/rust-tree.cc:3265
  #, fuzzy, gcc-internal-format
  #| msgid "uninitialized const `%D'"
  msgid "uninitialized %<const %D%>"
  msgstr "konstant '%D' uden startvÃ¦rdi"
  
! #: cp/decl.cc:6793 rust/backend/rust-tree.cc:3272
  #, fuzzy, gcc-internal-format
  #| msgid "register variable `%s' used in nested function"
  msgid "uninitialized variable %qD in %<constexpr%> function"
  msgstr "registervariabel '%s' benyttet i indlejret funktion"
  
! #: cp/decl.cc:6802 rust/backend/rust-tree.cc:3281
  #, fuzzy, gcc-internal-format
  #| msgid "register variable `%s' used in nested function"
  msgid "uninitialized variable %qD in %<constexpr%> context"
  msgstr "registervariabel '%s' benyttet i indlejret funktion"
  
! #: cp/decl.cc:6810
  #, fuzzy, gcc-internal-format
  msgid "%q#T has no user-provided default constructor"
  msgstr "typen '%T' har ingen destruktionsfunktion"
  
! #: cp/decl.cc:6814
  #, gcc-internal-format
  msgid "constructor is not user-provided because it is explicitly defaulted in the class body"
  msgstr ""
  
! #: cp/decl.cc:6817
  #, gcc-internal-format
  msgid "and the implicitly-defined constructor does not initialize %q#D"
  msgstr ""
  
! #: cp/decl.cc:7117
  #, fuzzy, gcc-internal-format
  #| msgid "invalid initializer for virtual method `%D'"
  msgid "invalid type %qT as initializer for a vector of type %qT"
  msgstr "ugyldig startvÃ¦rdi til virtuel medlemsfunktion '%D'"
  
! #: cp/decl.cc:7189
  #, fuzzy, gcc-internal-format
  #| msgid "initializer for `%T' must be brace-enclosed"
  msgid "initializer for %qT must be brace-enclosed"
  msgstr "startvÃ¦rdi for '%T' skal vÃ¦re indesluttet i krÃ¸llede paranteser"
  
! #: cp/decl.cc:7234
  #, gcc-internal-format
  msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
  msgstr ""
  
! #: cp/decl.cc:7251 cp/init.cc:3424 cp/search.cc:1244
  #, fuzzy, gcc-internal-format
  #| msgid "request for member `%D' is ambiguous"
  msgid "request for member %qD is ambiguous"
  msgstr "forespÃ¸rgsel efter medlemmet '%D' er tvetydigt"
  
! #: cp/decl.cc:7256
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' has no non-static data member named `%D'"
  msgid "%qT has no non-static data member named %qD"
  msgstr "'%T' har intet ikke-statisk medlem ved navn '%D'"
  
! #: cp/decl.cc:7281
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a member of `%T'"
  msgid "%qD is not a direct member of %qT"
  msgstr "'%D' er ikke et medlem af '%T'"
  
! #: cp/decl.cc:7337
  #, fuzzy, gcc-internal-format
  #| msgid "invalid initializer"
  msgid "invalid initializer for %q#D"
  msgstr "ugyldig startvÃ¦rdi"
  
! #: cp/decl.cc:7391
  #, fuzzy, gcc-internal-format
  #| msgid "excess elements in aggregate initializer"
  msgid "C99 designator %qE outside aggregate initializer"
  msgstr "for mange elementer i startvÃ¦rdi til sammensat type"
  
! #: cp/decl.cc:7430 cp/decl.cc:7721 cp/typeck2.cc:1634 cp/typeck2.cc:1969
  #: cp/typeck2.cc:2017 cp/typeck2.cc:2064
  #, gcc-internal-format
  msgid "too many initializers for %qT"
  msgstr "for mange startvÃ¦rdier for %qT"
  
! #: cp/decl.cc:7473
  #, fuzzy, gcc-internal-format
  #| msgid "braces around scalar initializer for `%T'"
  msgid "braces around scalar initializer for type %qT"
  msgstr "krÃ¸llede paranteser omkring skalarstartvÃ¦rdi for '%T'"
  
! #: cp/decl.cc:7483
  #, fuzzy, gcc-internal-format
  #| msgid "braces around scalar initializer for `%T'"
  msgid "too many braces around scalar initializer for type %qT"
  msgstr "krÃ¸llede paranteser omkring skalarstartvÃ¦rdi for '%T'"
  
! #: cp/decl.cc:7617
  #, fuzzy, gcc-internal-format
  #| msgid "missing braces around initializer"
  msgid "missing braces around initializer for %qT"
  msgstr "krÃ¸llede paranteser mangler omkring startvÃ¦rdien"
  
! #: cp/decl.cc:7751
  #, fuzzy, gcc-internal-format
  #| msgid "dereferencing pointer to incomplete type"
  msgid "structured binding has incomplete type %qT"
  msgstr "forsÃ¸g pÃ¥ at fÃ¸lge en henvisning til en variabel af en ufuldstÃ¦ndig type"
  
! #: cp/decl.cc:7765
  #, fuzzy, gcc-internal-format
  #| msgid "elements of array `%#D' have incomplete type"
  msgid "elements of array %q#T have incomplete type"
  msgstr "elementer i tabellen '%#D' er af en ufuldstÃ¦ndig type"
  
! #: cp/decl.cc:7778
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 forbids compound literals"
  msgid "variable-sized compound literal"
  msgstr "ISO C89 forbyder sammensatte konstanter"
  
! #: cp/decl.cc:7834
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' has incomplete type"
  msgid "%q#D has incomplete type"
  msgstr "'%D' er af en ufuldstÃ¦ndig type"
  
! #: cp/decl.cc:7855
  #, fuzzy, gcc-internal-format
  #| msgid "excess elements in union initializer"
  msgid "scalar object %qD requires one element in initializer"
  msgstr "for mange elementer i union-startvÃ¦rdi"
  
! #: cp/decl.cc:7900
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must be initialized by constructor, not by `{...}'"
  msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
  msgstr "'%D' skal klargÃ¸res af en konstruktionsfunktion, ikke af '{...}'"
  
! #: cp/decl.cc:8043
  #, fuzzy, gcc-internal-format
  #| msgid "_Pragma takes a parenthesized string literal"
  msgid "array %qD initialized by parenthesized string literal %qE"
  msgstr "_Pragma tager en strengkonstant med paranteser omkring"
  
! #: cp/decl.cc:8083
  #, gcc-internal-format
  msgid "initializer invalid for static member with constructor"
  msgstr "tildeling af startvÃ¦rdi er ugyldig for statisk medlem med konstruktionsfunktion"
  
! #: cp/decl.cc:8085
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids in-class initialization of non-const static member `%D'"
  msgid "non-constant in-class initialization invalid for static member %qD"
  msgstr "ISO C++ forbyder tildeling af startvÃ¦rdi i klasse til ikke-konstant statisk medlem '%D'"
  
! #: cp/decl.cc:8088
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids in-class initialization of non-const static member `%D'"
  msgid "non-constant in-class initialization invalid for non-inline static member %qD"
  msgstr "ISO C++ forbyder tildeling af startvÃ¦rdi i klasse til ikke-konstant statisk medlem '%D'"
  
! #: cp/decl.cc:8093
  #, gcc-internal-format
  msgid "(an out of class initialization is required)"
  msgstr "(en klargÃ¸ring uden for klassens erklÃ¦ring er nÃ¸dvendig)"
  
! #: cp/decl.cc:8295
  #, fuzzy, gcc-internal-format
  #| msgid "member `%D' with uninitialized const fields"
  msgid "reference %qD is initialized with itself"
  msgstr "medlem '%D' med konstante felter uden startvÃ¦rdi"
  
! #: cp/decl.cc:8497
  #, fuzzy, gcc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "argument %d of %qE must be of %<omp_interop_t%>"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: cp/decl.cc:8668
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not at beginning of declaration"
  msgid "could not find variant declaration"
  msgstr "'%s' er ikke ved begyndelsen af erklÃ¦ringen"
  
! #: cp/decl.cc:8692
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to %s `%+#D'"
  msgid "%<declare variant%> on constructor %qD"
  msgstr "for fÃ¥ parametre til %s '%+#D'"
  
! #: cp/decl.cc:8697
  #, fuzzy, gcc-internal-format
  msgid "%<declare variant%> on destructor %qD"
  msgstr "using-erklÃ¦ring for destruktionsfunktion"
  
! #: cp/decl.cc:8702
  #, gcc-internal-format
  msgid "%<declare variant%> on defaulted %qD"
  msgstr ""
  
! #: cp/decl.cc:8707
  #, gcc-internal-format
  msgid "%<declare variant%> on deleted %qD"
  msgstr ""
  
! #: cp/decl.cc:8712
  #, gcc-internal-format
  msgid "%<declare variant%> on virtual %qD"
  msgstr ""
  
! #: cp/decl.cc:8777
  #, gcc-internal-format
  msgid "assignment (not initialization) in declaration"
  msgstr "tildeling (ikke klargÃ¸ring) i erklÃ¦ring"
  
! #: cp/decl.cc:8798 cp/decl.cc:15827
  #, gcc-internal-format
  msgid "ISO C++17 does not allow %<register%> storage class specifier"
  msgstr "ISO C++17 tillader ikke %<register%>-lagerklasseangivelse"
  
! #: cp/decl.cc:8802 cp/decl.cc:15831
  #, fuzzy, gcc-internal-format
  #| msgid "storage class specified for %s `%s'"
  msgid "%<register%> storage class specifier used"
  msgstr "lagringsklasse angivet for %s '%s'"
  
! #: cp/decl.cc:8847 cp/decl.cc:15794
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%#D' has `extern' and is initialized"
  msgid "declaration of %q#D has no initializer"
  msgstr "erklÃ¦ringen af '%#D' indeholder 'extern' og variablen bliver tildelt en startvÃ¦rdi"
  
! #: cp/decl.cc:8883
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of member (did you forget the `&' ?)"
  msgid "initializer for %<decltype(auto) %D%> has function type; did you forget the %<()%>?"
  msgstr "ugyldig brug af medlem (glemte du en '&'?)"
  
! #: cp/decl.cc:8895
  #, fuzzy, gcc-internal-format
  #| msgid "return type `%#T' is incomplete"
  msgid "deduced type %qT for %qD is incomplete"
--- 61874,62636 ----
  msgid "redeclaration of %q#D"
  msgstr "omerklÃ¦ring af '%#D'"
  
! #: cp/decl.cc:3581
  #, fuzzy, gcc-internal-format
  #| msgid "redundant redeclaration of `%s' in same scope"
  msgid "redundant redeclaration of %<constexpr%> static data member %qD"
  msgstr "overflÃ¸dig omerklÃ¦ring af '%s' i samme virkefelt"
  
! #: cp/decl.cc:3650
  #, gcc-internal-format
  msgid "local label %qE conflicts with existing label"
  msgstr ""
  
! #: cp/decl.cc:3651
  #, fuzzy, gcc-internal-format
  #| msgid "a previous local"
  msgid "previous label"
  msgstr "en tidligere lokal variabel"
  
! #: cp/decl.cc:3741
  #, gcc-internal-format
  msgid "jump to label %qD"
  msgstr "spring til etiketten %qD"
  
! #: cp/decl.cc:3742
  #, gcc-internal-format
  msgid "jump to case label"
  msgstr "spring til case-etiket"
  
! #: cp/decl.cc:3746
  #, gcc-internal-format
  msgid "  as a possible target of computed goto"
  msgstr ""
  
! #: cp/decl.cc:3748
  #, gcc-internal-format
  msgid "  from here"
  msgstr "  herfra"
  
! #: cp/decl.cc:3777 cp/decl.cc:4016
  #, gcc-internal-format
  msgid "  exits OpenMP structured block"
  msgstr ""
  
! #: cp/decl.cc:3802
  #, fuzzy, gcc-internal-format
  #| msgid "  crosses initialization of `%#D'"
  msgid "  crosses initialization of %q#D"
  msgstr "  krydser klargÃ¸ring af '%#D'"
  
! #: cp/decl.cc:3814 cp/decl.cc:3982
  #, fuzzy, gcc-internal-format
  #| msgid "  enters try block"
  msgid "  enters %<try%> block"
  msgstr "  gÃ¥r ind i try-blok"
  
! #: cp/decl.cc:3820 cp/decl.cc:3971 cp/decl.cc:3984
  #, fuzzy, gcc-internal-format
  #| msgid "  enters catch block"
  msgid "  enters %<catch%> block"
  msgstr "  gÃ¥r ind i catch-blok"
  
! #: cp/decl.cc:3826 cp/decl.cc:3998
  #, fuzzy, gcc-internal-format
  #| msgid "  enters try block"
  msgid "  enters OpenMP structured block"
  msgstr "  gÃ¥r ind i try-blok"
  
! #: cp/decl.cc:3832 cp/decl.cc:3986
  #, gcc-internal-format
  msgid "  enters synchronized or atomic statement"
  msgstr ""
  
! #: cp/decl.cc:3838 cp/decl.cc:3992
  #, fuzzy, gcc-internal-format
  #| msgid "overflow in constant expression"
  msgid "  enters statement expression"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/decl.cc:3845 cp/decl.cc:3988
  #, fuzzy, gcc-internal-format
  msgid "  enters %<constexpr if%> statement"
  msgstr "uventet operand"
  
! #: cp/decl.cc:3851 cp/decl.cc:3990
  #, fuzzy, gcc-internal-format
  msgid "  enters %<consteval if%> statement"
  msgstr "uventet operand"
  
! #: cp/decl.cc:3882 cp/decl.cc:4056
  #, fuzzy, gcc-internal-format
  #| msgid "%s does not support %s"
  msgid "  does not destroy %qD"
  msgstr "%s understÃ¸tter ikke %s"
  
! #: cp/decl.cc:3884 cp/decl.cc:4040
  #, fuzzy, gcc-internal-format
  msgid "  does not clean up handled exception"
  msgstr "stÃ¸rrelse i tabel-new skal vÃ¦re en heltalstype"
  
! #: cp/decl.cc:3976
  #, fuzzy, gcc-internal-format
  #| msgid "  skips initialization of `%#D'"
  msgid "  skips initialization of %q#D"
  msgstr "  springer over klargÃ¸ring af '%#D'"
  
! #: cp/decl.cc:4516 cp/parser.cc:7467
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' used without template parameters"
  msgid "%qD used without template arguments"
  msgstr "'%D' benyttet uden skabelonsparametre"
  
! #: cp/decl.cc:4522
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function template"
  msgid "%qD is a function, not a type"
  msgstr "'%D' er ikke en funktionsskabelon"
  
! #: cp/decl.cc:4533
  #, fuzzy, gcc-internal-format
  #| msgid "`%#T' is not a template"
  msgid "%q#T is not a class"
  msgstr "'%#T' er ikke en skabelon"
  
! #: cp/decl.cc:4572 cp/decl.cc:4673
  #, fuzzy, gcc-internal-format
  #| msgid "no class template named `%#T' in `%#T'"
  msgid "no class template named %q#T in %q#T"
  msgstr "ingen klasseskabelon ved navn '%#T' i '%#T'"
  
! #: cp/decl.cc:4573
  #, fuzzy, gcc-internal-format
  #| msgid "no type named `%#T' in `%#T'"
  msgid "no type named %q#T in %q#T"
  msgstr "ingen type ved navn '%#T' i '%#T'"
  
! #: cp/decl.cc:4587
  #, fuzzy, gcc-internal-format
  #| msgid "call of `(%T) (%A)' is ambiguous"
  msgid "lookup of %qT in %qT is ambiguous"
  msgstr "kald af '(%T) (%A)' er tvetydigt"
  
! #: cp/decl.cc:4596
  #, gcc-internal-format
  msgid "%<typename %T::%D%> names %q#T, which is not a class template"
  msgstr ""
  
! #: cp/decl.cc:4609
  #, fuzzy, gcc-internal-format
  #| msgid "`%D::%D' is not a template"
  msgid "%<typename %T::%D%> names %q#D, which is not a type"
  msgstr "'%D::%D' er ikke en skabelon"
  
! #: cp/decl.cc:4683
  #, fuzzy, gcc-internal-format
  #| msgid "template parameters cannot be friends"
  msgid "template parameters do not match template %qD"
  msgstr "skabelonsparametre kan ikke vÃ¦re venner"
  
! #: cp/decl.cc:5161
  #, fuzzy, gcc-internal-format
  #| msgid "-falign-labels=%d is not supported"
  msgid "%<-faligned-new=%d%> is not a power of two"
  msgstr "-falign-labels=%d understÃ¸ttes ikke"
  
! #: cp/decl.cc:5216
  #, gcc-internal-format
  msgid "%<--param destructive-interference-size=%d%> is less than %d"
  msgstr ""
  
! #: cp/decl.cc:5220
  #, gcc-internal-format
  msgid "%<--param destructive-interference-size=%d%> is less than %<--param l1-cache-line-size=%d%>"
  msgstr ""
  
! #: cp/decl.cc:5233
  #, gcc-internal-format
  msgid "%<--param constructive-interference-size=%d%> is less than %d"
  msgstr ""
  
! #: cp/decl.cc:5238
  #, gcc-internal-format
  msgid "%<--param constructive-interference-size=%d%> is greater than %<--param l1-cache-line-size=%d%>"
  msgstr ""
  
! #: cp/decl.cc:5565
  #, fuzzy, gcc-internal-format
  #| msgid "`%#D' invalid; an anonymous union can only have non-static data members"
  msgid "%q#D invalid; an anonymous union may only have public non-static data members"
  msgstr "'%#D' er ugyldig; en anonym union kan kun have ikke-statiske datamedlemmer"
  
! #: cp/decl.cc:5575 cp/parser.cc:24258
  #, fuzzy, gcc-internal-format
  #| msgid "-traditional is deprecated and may be removed"
  msgid "this flexibility is deprecated and will be removed"
  msgstr "-traditional er forÃ¦ldet og kan blive fjernet"
  
! #: cp/decl.cc:5604
  #, fuzzy, gcc-internal-format
  #| msgid "anonymous struct not inside named type"
  msgid "anonymous struct with base classes"
  msgstr "anonym struct er ikke inden i en navngiven type"
  
! #: cp/decl.cc:5616
  #, fuzzy, gcc-internal-format
  #| msgid "member %#D' with constructor not allowed in anonymous aggregate"
  msgid "member %q+#D with constructor not allowed in anonymous aggregate"
  msgstr "medlemmet '%#D' med konstruktionsfunktion er ikke tilladt i anonym sammensat type"
  
! #: cp/decl.cc:5619
  #, fuzzy, gcc-internal-format
  #| msgid "member %#D' with destructor not allowed in anonymous aggregate"
  msgid "member %q+#D with destructor not allowed in anonymous aggregate"
  msgstr "medlemmet '%#D' med destruktionsfunktion er ikke tilladt i anonym sammensat type"
  
! #: cp/decl.cc:5622
  #, fuzzy, gcc-internal-format
  #| msgid "member %#D' with copy assignment operator not allowed in anonymous aggregate"
  msgid "member %q+#D with copy assignment operator not allowed in anonymous aggregate"
  msgstr "medlemmet '%#D' med kopitildelingsoperator er ikke tilladt i anonym sammensat type"
  
! #: cp/decl.cc:5641
  #, fuzzy, gcc-internal-format
  #| msgid "forward declaration of `%#T'"
  msgid "attribute ignored in declaration of %q#T"
  msgstr "forhÃ¥ndserklÃ¦ring af '%#T'"
  
! #: cp/decl.cc:5644
  #, gcc-internal-format
  msgid "attribute for %q#T must follow the %qs keyword"
  msgstr ""
  
! #: cp/decl.cc:5686
  #, gcc-internal-format
  msgid "multiple types in one declaration"
  msgstr "flere typer i Ã©n erklÃ¦ring"
  
! #: cp/decl.cc:5691
  #, fuzzy, gcc-internal-format
  #| msgid "redeclaration of C++ built-in type `%T'"
  msgid "redeclaration of C++ built-in type %qT"
  msgstr "omerklÃ¦ring af indbygget type i C++ '%T'"
  
! #: cp/decl.cc:5708
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' can only be specified for objects and functions"
  msgid "%<auto%> can only be specified for variables or function declarations"
  msgstr "'%D' kan kun angives for objekter og funktioner"
  
! #: cp/decl.cc:5741
  #, gcc-internal-format
  msgid "missing type-name in typedef-declaration"
  msgstr "manglende typenavn i typedef-erklÃ¦ring"
  
! #: cp/decl.cc:5749
  #, gcc-internal-format
  msgid "ISO C++ prohibits anonymous structs"
  msgstr "ISO C++ forbyder anonyme strukturer"
  
! #: cp/decl.cc:5756
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' can only be specified for functions"
  msgid "%<inline%> can only be specified for functions"
  msgstr "'%D' kan kun angives for funktioner"
  
! #: cp/decl.cc:5759
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' can only be specified for functions"
  msgid "%<virtual%> can only be specified for functions"
  msgstr "'%D' kan kun angives for funktioner"
  
! #: cp/decl.cc:5764
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' can only be specified inside a class"
  msgid "%<friend%> can only be specified inside a class"
  msgstr "'%D' kan kun angives inden i en klasse"
  
! #: cp/decl.cc:5767
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' can only be specified for constructors"
  msgid "%<explicit%> can only be specified for constructors"
  msgstr "'%D' kan kun angives for konstruktionsfunktioner"
  
! #: cp/decl.cc:5770
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' can only be specified for objects and functions"
  msgid "a storage class can only be specified for objects and functions"
  msgstr "'%D' kan kun angives for objekter og funktioner"
  
! #: cp/decl.cc:5774
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' can only be specified for objects and functions"
  msgid "%<const%> can only be specified for objects and functions"
  msgstr "'%D' kan kun angives for objekter og funktioner"
  
! #: cp/decl.cc:5778
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' can only be specified for objects and functions"
  msgid "%<volatile%> can only be specified for objects and functions"
  msgstr "'%D' kan kun angives for objekter og funktioner"
  
! #: cp/decl.cc:5782
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' can only be specified for objects and functions"
  msgid "%<__restrict%> can only be specified for objects and functions"
  msgstr "'%D' kan kun angives for objekter og funktioner"
  
! #: cp/decl.cc:5786
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' can only be specified for objects and functions"
  msgid "%<__thread%> can only be specified for objects and functions"
  msgstr "'%D' kan kun angives for objekter og funktioner"
  
! #: cp/decl.cc:5790
  #, fuzzy, gcc-internal-format
  #| msgid "type defaults to `int' in declaration of `%s'"
  msgid "%<typedef%> was ignored in this declaration"
  msgstr "typen antages at vÃ¦re 'int' i erklÃ¦ringen af '%s'"
  
! #: cp/decl.cc:5793 cp/decl.cc:5796 cp/decl.cc:5799
  #, fuzzy, gcc-internal-format
  msgid "%qs cannot be used for type declarations"
  msgstr "tom erklÃ¦ring"
  
! #: cp/decl.cc:5822
  #, fuzzy, gcc-internal-format
  #| msgid "template parameter list used in explicit instantiation"
  msgid "attribute ignored in explicit instantiation %q#T"
  msgstr "skabelonsparameterliste benyttet i eksplicit instantiering"
  
! #: cp/decl.cc:5825
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute can only be applied to class definitions"
  msgid "no attribute can be applied to an explicit instantiation"
  msgstr "egenskaben '%s' kan kun anvendes med klassedefinitioner"
  
! #: cp/decl.cc:5838 cp/decl.cc:13778 cp/decl.cc:15425 cp/parser.cc:16040
! #: cp/parser.cc:21979 cp/parser.cc:28921
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute ignored"
  msgid "attribute ignored"
  msgstr "egenskaben '%s' ignoreret"
  
! #: cp/decl.cc:5840 cp/decl.cc:13779
  #, gcc-internal-format
  msgid "an attribute that appertains to a type-specifier is ignored"
  msgstr ""
  
! #: cp/decl.cc:5915
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute can only be applied to class definitions"
  msgid "ignoring attributes applied to class type %qT outside of definition"
  msgstr "egenskaben '%s' kan kun anvendes med klassedefinitioner"
  
  #. A template type parameter or other dependent type.
! #: cp/decl.cc:5919
  #, gcc-internal-format
  msgid "ignoring attributes applied to dependent type %qT without an associated declaration"
  msgstr ""
  
  # init dÃ¦kker over vÃ¦rditildeling her - samme for de nÃ¦ste mange
! #: cp/decl.cc:5985 cp/decl2.cc:1069 cp/decl2.cc:1271
  #, fuzzy, gcc-internal-format
  #| msgid "typedef `%D' is initialized (use __typeof__ instead)"
  msgid "typedef %qD is initialized (use %qs instead)"
  msgstr "typedef '%D' bliver tildelt en vÃ¦rdi (benyt __typeof__ i stedet)"
  
! #: cp/decl.cc:5998
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%#D' has `extern' and is initialized"
  msgid "declaration of %q#D has %<extern%> and is initialized"
  msgstr "erklÃ¦ringen af '%#D' indeholder 'extern' og variablen bliver tildelt en startvÃ¦rdi"
  
! #: cp/decl.cc:6036
  #, fuzzy, gcc-internal-format
  msgid "definition of %q#D is marked %<dllimport%>"
  msgstr "'auto' er pÃ¥hÃ¦ftet funktionsdefinitionen"
  
! #: cp/decl.cc:6063
  #, fuzzy, gcc-internal-format
  msgid "%q+#D is not a static data member of %q#T"
  msgstr "'%#D' er ikke et statisk medlem af '%#T'"
  
! #: cp/decl.cc:6072
  #, fuzzy, gcc-internal-format
  #| msgid "template declaration of `%#D'"
  msgid "non-member-template declaration of %qD"
  msgstr "skabelonserklÃ¦ring af '%#D'"
  
! #: cp/decl.cc:6073
  #, fuzzy, gcc-internal-format
  #| msgid "invalid member template declaration `%D'"
  msgid "does not match member template declaration here"
  msgstr "ugyldig medlemsskabelonerklÃ¦ring '%D'"
  
! #: cp/decl.cc:6085
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ does not permit `%T::%D' to be defined as `%T::%D'"
  msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
  msgstr "ISO C++ tillader ikke '%T::%D' at blive defineret som '%T::%D'"
  
! #: cp/decl.cc:6097
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate initialization of %D"
  msgid "duplicate initialization of %qD"
  msgstr "%D tildelt startvÃ¦rdi mere end Ã©n gang"
  
! #: cp/decl.cc:6147 cp/decl.cc:6151
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%#D' outside of class is not definition"
  msgid "declaration of %q#D outside of class is not definition"
  msgstr "erklÃ¦ring af '%#D' uden for en klasse er ikke en definition"
  
! #: cp/decl.cc:6169
  #, gcc-internal-format
  msgid "block-scope extern declaration %q#D must not be attached to a named module"
  msgstr ""
  
! #: cp/decl.cc:6205
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%qD defined %<thread_local%> in %qs function only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/decl.cc:6211
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%qD defined %<static%> in %qs function only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/decl.cc:6277
  #, fuzzy, gcc-internal-format
  #| msgid "variable `%#D' has initializer but incomplete type"
  msgid "variable %q#D has initializer but incomplete type"
  msgstr "variablen '%#D' bliver tildelt en startvÃ¦rdi, men er af en ufuldstÃ¦ndig type"
  
! #: cp/decl.cc:6286 cp/decl.cc:7761
  #, fuzzy, gcc-internal-format
  #| msgid "elements of array `%#D' have incomplete type"
  msgid "elements of array %q#D have incomplete type"
  msgstr "elementer i tabellen '%#D' er af en ufuldstÃ¦ndig type"
  
! #: cp/decl.cc:6297
  #, fuzzy, gcc-internal-format
  #| msgid "aggregate `%#D' has incomplete type and cannot be defined"
  msgid "aggregate %q#D has incomplete type and cannot be defined"
  msgstr "den sammensatte type '%#D' er af en ufuldstÃ¦ndig type og kan ikke defineres"
  
! #: cp/decl.cc:6367
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' declared as reference but not initialized"
  msgid "%qD declared as reference but not initialized"
  msgstr "'%D' erklÃ¦ret som en reference, men bliver ikke tildelt en startvÃ¦rdi"
  
! #: cp/decl.cc:6450
  #, gcc-internal-format
  msgid "name used in a GNU-style designated initializer for an array"
  msgstr ""
  
! #: cp/decl.cc:6456
  #, gcc-internal-format
  msgid "name %qD used in a GNU-style designated initializer for an array"
  msgstr ""
  
! #: cp/decl.cc:6475
  #, gcc-internal-format
  msgid "non-trivial designated initializers not supported"
  msgstr "ikke-trivielle udpegede startvÃ¦rdier er ikke understÃ¸ttet"
  
! #: cp/decl.cc:6479
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%D' is not an integral constant-expression"
  msgid "C99 designator %qE is not an integral constant-expression"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/decl.cc:6544
  #, gcc-internal-format
  msgid "initializer fails to determine size of %qD"
  msgstr "startvÃ¦rdien giver ikke stÃ¸rrelsen af %qD"
  
! #: cp/decl.cc:6551
  #, gcc-internal-format
  msgid "array size missing in %qD"
  msgstr "tabelstÃ¸rrelsen mangler i %qD"
  
! #: cp/decl.cc:6563
  #, gcc-internal-format
  msgid "zero-size array %qD"
  msgstr "nulstÃ¸rrelsestabel %qD"
  
! #: cp/decl.cc:6603
  #, gcc-internal-format
  msgid "storage size of %qD isn%'t known"
  msgstr "lagringsstÃ¸rrelsen af %qD er ikke kendt"
  
! #: cp/decl.cc:6628
  #, fuzzy, gcc-internal-format
  #| msgid "storage size of `%D' isn't constant"
  msgid "storage size of %qD isn%'t constant"
  msgstr "lagringsstÃ¸rrelsen af '%D' er ikke konstant"
  
! #: cp/decl.cc:6730
  #, fuzzy, gcc-internal-format
  #| msgid "sorry: semantics of inline function static data `%#D' are wrong (you'll wind up with multiple copies)"
  msgid "sorry: semantics of inline variable %q#D are wrong (you%'ll wind up with multiple copies)"
  msgstr "semantikken for indlejret funktionsstatisk data '%#D' er forkert (du ender med flere kopier)"
  
! #: cp/decl.cc:6734
  #, fuzzy, gcc-internal-format
  #| msgid "sorry: semantics of inline function static data `%#D' are wrong (you'll wind up with multiple copies)"
  msgid "sorry: semantics of inline function static data %q#D are wrong (you%'ll wind up with multiple copies)"
  msgstr "semantikken for indlejret funktionsstatisk data '%#D' er forkert (du ender med flere kopier)"
  
! #: cp/decl.cc:6741
  #, fuzzy, gcc-internal-format
  msgid "you can work around this by removing the initializer"
  msgstr "  du kan arbejde dig rundt om dette ved at fjerne startvÃ¦rdien"
  
! #: cp/decl.cc:6784 rust/backend/rust-tree.cc:3265
  #, fuzzy, gcc-internal-format
  #| msgid "uninitialized const `%D'"
  msgid "uninitialized %<const %D%>"
  msgstr "konstant '%D' uden startvÃ¦rdi"
  
! #: cp/decl.cc:6791 rust/backend/rust-tree.cc:3272
  #, fuzzy, gcc-internal-format
  #| msgid "register variable `%s' used in nested function"
  msgid "uninitialized variable %qD in %<constexpr%> function"
  msgstr "registervariabel '%s' benyttet i indlejret funktion"
  
! #: cp/decl.cc:6800 rust/backend/rust-tree.cc:3281
  #, fuzzy, gcc-internal-format
  #| msgid "register variable `%s' used in nested function"
  msgid "uninitialized variable %qD in %<constexpr%> context"
  msgstr "registervariabel '%s' benyttet i indlejret funktion"
  
! #: cp/decl.cc:6808
  #, fuzzy, gcc-internal-format
  msgid "%q#T has no user-provided default constructor"
  msgstr "typen '%T' har ingen destruktionsfunktion"
  
! #: cp/decl.cc:6812
  #, gcc-internal-format
  msgid "constructor is not user-provided because it is explicitly defaulted in the class body"
  msgstr ""
  
! #: cp/decl.cc:6815
  #, gcc-internal-format
  msgid "and the implicitly-defined constructor does not initialize %q#D"
  msgstr ""
  
! #: cp/decl.cc:7115
  #, fuzzy, gcc-internal-format
  #| msgid "invalid initializer for virtual method `%D'"
  msgid "invalid type %qT as initializer for a vector of type %qT"
  msgstr "ugyldig startvÃ¦rdi til virtuel medlemsfunktion '%D'"
  
! #: cp/decl.cc:7187
  #, fuzzy, gcc-internal-format
  #| msgid "initializer for `%T' must be brace-enclosed"
  msgid "initializer for %qT must be brace-enclosed"
  msgstr "startvÃ¦rdi for '%T' skal vÃ¦re indesluttet i krÃ¸llede paranteser"
  
! #: cp/decl.cc:7232
  #, gcc-internal-format
  msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
  msgstr ""
  
! #: cp/decl.cc:7249 cp/init.cc:3424 cp/search.cc:1244
  #, fuzzy, gcc-internal-format
  #| msgid "request for member `%D' is ambiguous"
  msgid "request for member %qD is ambiguous"
  msgstr "forespÃ¸rgsel efter medlemmet '%D' er tvetydigt"
  
! #: cp/decl.cc:7254
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' has no non-static data member named `%D'"
  msgid "%qT has no non-static data member named %qD"
  msgstr "'%T' har intet ikke-statisk medlem ved navn '%D'"
  
! #: cp/decl.cc:7279
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a member of `%T'"
  msgid "%qD is not a direct member of %qT"
  msgstr "'%D' er ikke et medlem af '%T'"
  
! #: cp/decl.cc:7335
  #, fuzzy, gcc-internal-format
  #| msgid "invalid initializer"
  msgid "invalid initializer for %q#D"
  msgstr "ugyldig startvÃ¦rdi"
  
! #: cp/decl.cc:7389
  #, fuzzy, gcc-internal-format
  #| msgid "excess elements in aggregate initializer"
  msgid "C99 designator %qE outside aggregate initializer"
  msgstr "for mange elementer i startvÃ¦rdi til sammensat type"
  
! #: cp/decl.cc:7428 cp/decl.cc:7719 cp/typeck2.cc:1634 cp/typeck2.cc:1969
  #: cp/typeck2.cc:2017 cp/typeck2.cc:2064
  #, gcc-internal-format
  msgid "too many initializers for %qT"
  msgstr "for mange startvÃ¦rdier for %qT"
  
! #: cp/decl.cc:7471
  #, fuzzy, gcc-internal-format
  #| msgid "braces around scalar initializer for `%T'"
  msgid "braces around scalar initializer for type %qT"
  msgstr "krÃ¸llede paranteser omkring skalarstartvÃ¦rdi for '%T'"
  
! #: cp/decl.cc:7481
  #, fuzzy, gcc-internal-format
  #| msgid "braces around scalar initializer for `%T'"
  msgid "too many braces around scalar initializer for type %qT"
  msgstr "krÃ¸llede paranteser omkring skalarstartvÃ¦rdi for '%T'"
  
! #: cp/decl.cc:7615
  #, fuzzy, gcc-internal-format
  #| msgid "missing braces around initializer"
  msgid "missing braces around initializer for %qT"
  msgstr "krÃ¸llede paranteser mangler omkring startvÃ¦rdien"
  
! #: cp/decl.cc:7749
  #, fuzzy, gcc-internal-format
  #| msgid "dereferencing pointer to incomplete type"
  msgid "structured binding has incomplete type %qT"
  msgstr "forsÃ¸g pÃ¥ at fÃ¸lge en henvisning til en variabel af en ufuldstÃ¦ndig type"
  
! #: cp/decl.cc:7763
  #, fuzzy, gcc-internal-format
  #| msgid "elements of array `%#D' have incomplete type"
  msgid "elements of array %q#T have incomplete type"
  msgstr "elementer i tabellen '%#D' er af en ufuldstÃ¦ndig type"
  
! #: cp/decl.cc:7776
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C89 forbids compound literals"
  msgid "variable-sized compound literal"
  msgstr "ISO C89 forbyder sammensatte konstanter"
  
! #: cp/decl.cc:7832
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' has incomplete type"
  msgid "%q#D has incomplete type"
  msgstr "'%D' er af en ufuldstÃ¦ndig type"
  
! #: cp/decl.cc:7853
  #, fuzzy, gcc-internal-format
  #| msgid "excess elements in union initializer"
  msgid "scalar object %qD requires one element in initializer"
  msgstr "for mange elementer i union-startvÃ¦rdi"
  
! #: cp/decl.cc:7898
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must be initialized by constructor, not by `{...}'"
  msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
  msgstr "'%D' skal klargÃ¸res af en konstruktionsfunktion, ikke af '{...}'"
  
! #: cp/decl.cc:8041
  #, fuzzy, gcc-internal-format
  #| msgid "_Pragma takes a parenthesized string literal"
  msgid "array %qD initialized by parenthesized string literal %qE"
  msgstr "_Pragma tager en strengkonstant med paranteser omkring"
  
! #: cp/decl.cc:8081
  #, gcc-internal-format
  msgid "initializer invalid for static member with constructor"
  msgstr "tildeling af startvÃ¦rdi er ugyldig for statisk medlem med konstruktionsfunktion"
  
! #: cp/decl.cc:8083
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids in-class initialization of non-const static member `%D'"
  msgid "non-constant in-class initialization invalid for static member %qD"
  msgstr "ISO C++ forbyder tildeling af startvÃ¦rdi i klasse til ikke-konstant statisk medlem '%D'"
  
! #: cp/decl.cc:8086
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids in-class initialization of non-const static member `%D'"
  msgid "non-constant in-class initialization invalid for non-inline static member %qD"
  msgstr "ISO C++ forbyder tildeling af startvÃ¦rdi i klasse til ikke-konstant statisk medlem '%D'"
  
! #: cp/decl.cc:8091
  #, gcc-internal-format
  msgid "(an out of class initialization is required)"
  msgstr "(en klargÃ¸ring uden for klassens erklÃ¦ring er nÃ¸dvendig)"
  
! #: cp/decl.cc:8293
  #, fuzzy, gcc-internal-format
  #| msgid "member `%D' with uninitialized const fields"
  msgid "reference %qD is initialized with itself"
  msgstr "medlem '%D' med konstante felter uden startvÃ¦rdi"
  
! #: cp/decl.cc:8495
  #, fuzzy, gcc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "argument %d of %qE must be of %<omp_interop_t%>"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: cp/decl.cc:8666
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not at beginning of declaration"
  msgid "could not find variant declaration"
  msgstr "'%s' er ikke ved begyndelsen af erklÃ¦ringen"
  
! #: cp/decl.cc:8690
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to %s `%+#D'"
  msgid "%<declare variant%> on constructor %qD"
  msgstr "for fÃ¥ parametre til %s '%+#D'"
  
! #: cp/decl.cc:8695
  #, fuzzy, gcc-internal-format
  msgid "%<declare variant%> on destructor %qD"
  msgstr "using-erklÃ¦ring for destruktionsfunktion"
  
! #: cp/decl.cc:8700
  #, gcc-internal-format
  msgid "%<declare variant%> on defaulted %qD"
  msgstr ""
  
! #: cp/decl.cc:8705
  #, gcc-internal-format
  msgid "%<declare variant%> on deleted %qD"
  msgstr ""
  
! #: cp/decl.cc:8710
  #, gcc-internal-format
  msgid "%<declare variant%> on virtual %qD"
  msgstr ""
  
! #: cp/decl.cc:8775
  #, gcc-internal-format
  msgid "assignment (not initialization) in declaration"
  msgstr "tildeling (ikke klargÃ¸ring) i erklÃ¦ring"
  
! #: cp/decl.cc:8796 cp/decl.cc:15825
  #, gcc-internal-format
  msgid "ISO C++17 does not allow %<register%> storage class specifier"
  msgstr "ISO C++17 tillader ikke %<register%>-lagerklasseangivelse"
  
! #: cp/decl.cc:8800 cp/decl.cc:15829
  #, fuzzy, gcc-internal-format
  #| msgid "storage class specified for %s `%s'"
  msgid "%<register%> storage class specifier used"
  msgstr "lagringsklasse angivet for %s '%s'"
  
! #: cp/decl.cc:8845 cp/decl.cc:15792
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%#D' has `extern' and is initialized"
  msgid "declaration of %q#D has no initializer"
  msgstr "erklÃ¦ringen af '%#D' indeholder 'extern' og variablen bliver tildelt en startvÃ¦rdi"
  
! #: cp/decl.cc:8881
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of member (did you forget the `&' ?)"
  msgid "initializer for %<decltype(auto) %D%> has function type; did you forget the %<()%>?"
  msgstr "ugyldig brug af medlem (glemte du en '&'?)"
  
! #: cp/decl.cc:8893
  #, fuzzy, gcc-internal-format
  #| msgid "return type `%#T' is incomplete"
  msgid "deduced type %qT for %qD is incomplete"
*************** msgstr "returtype '%#T' er ufuldstÃ¦ndig
*** 62546,62639 ****
  
  #. [basic.start.main]/3: A program that defines main as deleted
  #. is ill-formed.
! #: cp/decl.cc:8946
  #, fuzzy, gcc-internal-format
  #| msgid "`%#D' cannot be declared"
  msgid "%<::main%> cannot be deleted"
  msgstr "'%#D' kan ikke erklÃ¦res"
  
! #: cp/decl.cc:9100
  #, fuzzy, gcc-internal-format
  #| msgid "shadowing previous type declaration of `%#D'"
  msgid "shadowing previous type declaration of %q#D"
  msgstr "skygger for tidligere typeerklÃ¦ring af '%#D'"
  
! #: cp/decl.cc:9143
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute only applies to variables"
  msgid "%<constinit%> can only be applied to a variable with static or thread storage duration"
  msgstr "egenskaben '%s' kan kun anvendes pÃ¥ variabler"
  
! #: cp/decl.cc:9351
  #, fuzzy, gcc-internal-format
  #| msgid "function `%#D' is initialized like a variable"
  msgid "function %q#D is initialized like a variable"
  msgstr "funktionen '%#D' bliver tildelt en startvÃ¦rdi som en variabel"
  
! #: cp/decl.cc:9583
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare bit-field `%D' with function type"
  msgid "cannot decompose lambda closure type %qT"
  msgstr "kan ikke erklÃ¦re bitfelt '%D' med funktionstype"
  
! #: cp/decl.cc:9584
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "lambda declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/decl.cc:9600
  #, fuzzy, gcc-internal-format
  #| msgid "  cannot use obsolete binding at `%D' because it has a destructor"
  msgid "cannot decompose class type %qT because it has an anonymous struct member"
  msgstr "  kan ikke bruge forÃ¦ldet binding til '%D' fordi den har en destruktionsfunktion"
  
! #: cp/decl.cc:9603
  #, gcc-internal-format
  msgid "cannot decompose class type %qT because it has an anonymous union member"
  msgstr ""
  
! #: cp/decl.cc:9611
  #, fuzzy, gcc-internal-format
  #| msgid "creating pointer to member of non-class type `%T'"
  msgid "cannot decompose inaccessible member %qD of %qT"
  msgstr "opretter henvisning til medlem af typen '%T' der ikke er en klasse"
  
! #: cp/decl.cc:9634
  #, fuzzy, gcc-internal-format
  #| msgid "no sclass for %s stab (0x%x)\n"
  msgid "in base class of %qT"
  msgstr "ingen sclass for %s stab (0x%x)\n"
  
! #: cp/decl.cc:9641
  #, gcc-internal-format
  msgid "cannot decompose class type %qT: both it and its base class %qT have non-static data members"
  msgstr ""
  
! #: cp/decl.cc:9650
  #, gcc-internal-format
  msgid "cannot decompose class type %qT: its base classes %qT and %qT have non-static data members"
  msgstr ""
  
! #: cp/decl.cc:9888
  #, fuzzy, gcc-internal-format
  #| msgid "dereferencing pointer to incomplete type"
  msgid "structured binding refers to incomplete type %qT"
  msgstr "forsÃ¸g pÃ¥ at fÃ¸lge en henvisning til en variabel af en ufuldstÃ¦ndig type"
  
! #: cp/decl.cc:9904
  #, fuzzy, gcc-internal-format
  #| msgid "invalid initializer for bit string"
  msgid "array initializer for structured binding declaration in condition"
  msgstr "ugyldig startvÃ¦rdi til bitstreng"
  
! #: cp/decl.cc:9910
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 forbids variable-size array `%s'"
  msgid "cannot decompose variable length array %qT"
  msgstr "ISO C90 forbyder tabellen '%s' med variabel stÃ¸rrelse"
  
! #: cp/decl.cc:9920 cp/decl.cc:10000
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "storage class specified for structure field `%s'"
  msgid "%u name provided for structured binding"
--- 62638,62731 ----
  
  #. [basic.start.main]/3: A program that defines main as deleted
  #. is ill-formed.
! #: cp/decl.cc:8944
  #, fuzzy, gcc-internal-format
  #| msgid "`%#D' cannot be declared"
  msgid "%<::main%> cannot be deleted"
  msgstr "'%#D' kan ikke erklÃ¦res"
  
! #: cp/decl.cc:9098
  #, fuzzy, gcc-internal-format
  #| msgid "shadowing previous type declaration of `%#D'"
  msgid "shadowing previous type declaration of %q#D"
  msgstr "skygger for tidligere typeerklÃ¦ring af '%#D'"
  
! #: cp/decl.cc:9141
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute only applies to variables"
  msgid "%<constinit%> can only be applied to a variable with static or thread storage duration"
  msgstr "egenskaben '%s' kan kun anvendes pÃ¥ variabler"
  
! #: cp/decl.cc:9349
  #, fuzzy, gcc-internal-format
  #| msgid "function `%#D' is initialized like a variable"
  msgid "function %q#D is initialized like a variable"
  msgstr "funktionen '%#D' bliver tildelt en startvÃ¦rdi som en variabel"
  
! #: cp/decl.cc:9581
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare bit-field `%D' with function type"
  msgid "cannot decompose lambda closure type %qT"
  msgstr "kan ikke erklÃ¦re bitfelt '%D' med funktionstype"
  
! #: cp/decl.cc:9582
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "lambda declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/decl.cc:9598
  #, fuzzy, gcc-internal-format
  #| msgid "  cannot use obsolete binding at `%D' because it has a destructor"
  msgid "cannot decompose class type %qT because it has an anonymous struct member"
  msgstr "  kan ikke bruge forÃ¦ldet binding til '%D' fordi den har en destruktionsfunktion"
  
! #: cp/decl.cc:9601
  #, gcc-internal-format
  msgid "cannot decompose class type %qT because it has an anonymous union member"
  msgstr ""
  
! #: cp/decl.cc:9609
  #, fuzzy, gcc-internal-format
  #| msgid "creating pointer to member of non-class type `%T'"
  msgid "cannot decompose inaccessible member %qD of %qT"
  msgstr "opretter henvisning til medlem af typen '%T' der ikke er en klasse"
  
! #: cp/decl.cc:9632
  #, fuzzy, gcc-internal-format
  #| msgid "no sclass for %s stab (0x%x)\n"
  msgid "in base class of %qT"
  msgstr "ingen sclass for %s stab (0x%x)\n"
  
! #: cp/decl.cc:9639
  #, gcc-internal-format
  msgid "cannot decompose class type %qT: both it and its base class %qT have non-static data members"
  msgstr ""
  
! #: cp/decl.cc:9648
  #, gcc-internal-format
  msgid "cannot decompose class type %qT: its base classes %qT and %qT have non-static data members"
  msgstr ""
  
! #: cp/decl.cc:9886
  #, fuzzy, gcc-internal-format
  #| msgid "dereferencing pointer to incomplete type"
  msgid "structured binding refers to incomplete type %qT"
  msgstr "forsÃ¸g pÃ¥ at fÃ¸lge en henvisning til en variabel af en ufuldstÃ¦ndig type"
  
! #: cp/decl.cc:9902
  #, fuzzy, gcc-internal-format
  #| msgid "invalid initializer for bit string"
  msgid "array initializer for structured binding declaration in condition"
  msgstr "ugyldig startvÃ¦rdi til bitstreng"
  
! #: cp/decl.cc:9908
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 forbids variable-size array `%s'"
  msgid "cannot decompose variable length array %qT"
  msgstr "ISO C90 forbyder tabellen '%s' med variabel stÃ¸rrelse"
  
! #: cp/decl.cc:9918 cp/decl.cc:9998
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "storage class specified for structure field `%s'"
  msgid "%u name provided for structured binding"
*************** msgid_plural "%u names provided for stru
*** 62641,64650 ****
  msgstr[0] "lagringsklasse angivet for strukturfelt '%s'"
  msgstr[1] "lagringsklasse angivet for strukturfelt '%s'"
  
! #: cp/decl.cc:9924
  #, gcc-internal-format, gfc-internal-format
  msgid "only %u name provided for structured binding"
  msgid_plural "only %u names provided for structured binding"
  msgstr[0] ""
  msgstr[1] ""
  
! #: cp/decl.cc:9927
  #, gcc-internal-format
  msgid "while %qT decomposes into %wu element"
  msgid_plural "while %qT decomposes into %wu elements"
  msgstr[0] ""
  msgstr[1] ""
  
! #: cp/decl.cc:9968
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 forbids variable-size array `%s'"
  msgid "cannot decompose variable length vector %qT"
  msgstr "ISO C90 forbyder tabellen '%s' med variabel stÃ¸rrelse"
  
! #: cp/decl.cc:9992
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "%<std::tuple_size<%T>::value%> is not an integral constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: cp/decl.cc:10002
  #, gcc-internal-format
  msgid "while %qT decomposes into %E elements"
  msgstr ""
  
! #: cp/decl.cc:10049
  #, gcc-internal-format
  msgid "%<std::tuple_element<%u, %T>::type%> is %<void%>"
  msgstr ""
  
! #: cp/decl.cc:10055
  #, fuzzy, gcc-internal-format
  #| msgid "invalid vector type for attribute `%s'"
  msgid "in initialization of structured binding variable %qD"
  msgstr "ugyldig vektortype for egenskaben '%s'"
  
! #: cp/decl.cc:10084
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare bit-field `%D' with function type"
  msgid "cannot decompose union type %qT"
  msgstr "kan ikke erklÃ¦re bitfelt '%D' med funktionstype"
  
! #: cp/decl.cc:10089
  #, fuzzy, gcc-internal-format
  #| msgid "creating pointer to member of non-class type `%T'"
  msgid "cannot decompose non-array non-class type %qT"
  msgstr "opretter henvisning til medlem af typen '%T' der ikke er en klasse"
  
! #: cp/decl.cc:10095
  #, fuzzy, gcc-internal-format
  #| msgid "dereferencing pointer to incomplete type"
  msgid "structured binding refers to incomplete class type %qT"
  msgstr "forsÃ¸g pÃ¥ at fÃ¸lge en henvisning til en variabel af en ufuldstÃ¦ndig type"
  
! #: cp/decl.cc:10104
  #, fuzzy, gcc-internal-format
  msgid "cannot decompose class type %qT without non-static data members"
  msgstr "ugyldig brug af ikke-statisk felt '%D'"
  
! #: cp/decl.cc:10600
  #, gcc-internal-format
  msgid "non-local variable %qD declared %<__thread%> needs dynamic initialization"
  msgstr ""
  
! #: cp/decl.cc:10603
  #, gcc-internal-format
  msgid "non-local variable %qD declared %<__thread%> has a non-trivial destructor"
  msgstr ""
  
! #: cp/decl.cc:10608
  #, gcc-internal-format
  msgid "C++11 %<thread_local%> allows dynamic initialization and destruction"
  msgstr ""
  
! #: cp/decl.cc:10827
  #, fuzzy, gcc-internal-format
  #| msgid "initializer fails to determine size of `%D'"
  msgid "initializer fails to determine size of %qT"
  msgstr "startvÃ¦rdien giver ikke stÃ¸rrelsen af '%D'"
  
! #: cp/decl.cc:10831
  #, fuzzy, gcc-internal-format
  #| msgid "array size missing in `%D'"
  msgid "array size missing in %qT"
  msgstr "tabelstÃ¸rrelsen mangler i '%D'"
  
! #: cp/decl.cc:10834
  #, fuzzy, gcc-internal-format
  #| msgid "zero-size array `%D'"
  msgid "zero-size array %qT"
  msgstr "nulstÃ¸rrelsestabel '%D'"
  
! #: cp/decl.cc:10850
  #, fuzzy, gcc-internal-format
  #| msgid "destructor for alien class `%T' cannot be a member"
  msgid "destructor for alien class %qT cannot be a member"
  msgstr "destruktionsfunktionen for den fremmede klasse '%T' kan ikke vÃ¦re et medlem"
  
! #: cp/decl.cc:10852
  #, fuzzy, gcc-internal-format
  #| msgid "constructor for alien class `%T' cannot be a member"
  msgid "constructor for alien class %qT cannot be a member"
  msgstr "konstruktionsfunktionen for den fremmede klasse '%T' kan ikke vÃ¦re et medlem"
  
! #: cp/decl.cc:10878
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' declared as a `virtual' %s"
  msgid "%qD declared as a %<virtual%> variable"
  msgstr "'%D' erklÃ¦ret som 'virtual' %s"
  
  # %s bliver omsat til typen
! #: cp/decl.cc:10880
  #, fuzzy, gcc-internal-format
  #| msgid "`const' and `volatile' function specifiers on `%D' invalid in %s declaration"
  msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in variable declaration"
  msgstr "'const'- og 'volatile'-funktionsangivelser til '%D' er ugyldigt i erklÃ¦ring af %s"
  
! #: cp/decl.cc:10886
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' declared as a `virtual' %s"
  msgid "%qD declared as a %<virtual%> parameter"
  msgstr "'%D' erklÃ¦ret som 'virtual' %s"
  
! #: cp/decl.cc:10889
  #, fuzzy, gcc-internal-format
  msgid "%qD declared as an %<inline%> parameter"
  msgstr "'%D' er erklÃ¦ret som en ven"
  
  # %s bliver omsat til typen
! #: cp/decl.cc:10891
  #, fuzzy, gcc-internal-format
  #| msgid "`const' and `volatile' function specifiers on `%D' invalid in %s declaration"
  msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter declaration"
  msgstr "'const'- og 'volatile'-funktionsangivelser til '%D' er ugyldigt i erklÃ¦ring af %s"
  
! #: cp/decl.cc:10897
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' declared as a `virtual' %s"
  msgid "%qD declared as a %<virtual%> type"
  msgstr "'%D' erklÃ¦ret som 'virtual' %s"
  
! #: cp/decl.cc:10900
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' declared as an `inline' %s"
  msgid "%qD declared as an %<inline%> type"
  msgstr "'%D' erklÃ¦ret som 'inline' %s"
  
  # %s bliver omsat til typen
! #: cp/decl.cc:10902
  #, fuzzy, gcc-internal-format
  #| msgid "`const' and `volatile' function specifiers on `%D' invalid in %s declaration"
  msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in type declaration"
  msgstr "'const'- og 'volatile'-funktionsangivelser til '%D' er ugyldigt i erklÃ¦ring af %s"
  
! #: cp/decl.cc:10908
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' declared as a `virtual' %s"
  msgid "%qD declared as a %<virtual%> field"
  msgstr "'%D' erklÃ¦ret som 'virtual' %s"
  
! #: cp/decl.cc:10911
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' declared as an `inline' %s"
  msgid "%qD declared as an %<inline%> field"
  msgstr "'%D' erklÃ¦ret som 'inline' %s"
  
  # %s bliver omsat til typen
! #: cp/decl.cc:10913
  #, fuzzy, gcc-internal-format
  #| msgid "`const' and `volatile' function specifiers on `%D' invalid in %s declaration"
  msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in field declaration"
  msgstr "'const'- og 'volatile'-funktionsangivelser til '%D' er ugyldigt i erklÃ¦ring af %s"
  
! #: cp/decl.cc:10920
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' declared as a friend"
  msgid "%q+D declared as a friend"
  msgstr "'%D' er erklÃ¦ret som en ven"
  
! #: cp/decl.cc:10927
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' declared with an exception specification"
  msgid "%q+D declared with an exception specification"
  msgstr "'%D' erklÃ¦ret med en undtagelsesspecifikation"
  
! #: cp/decl.cc:10959
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%D' not in a namespace surrounding `%D'"
  msgid "definition of %qD is not in namespace enclosing %qT"
  msgstr "erklÃ¦ring af '%D' er ikke i et navnerum der omgiver '%D'"
  
! #: cp/decl.cc:10999
  #, fuzzy, gcc-internal-format
  #| msgid "static member function `%#D' declared with type qualifiers"
  msgid "static member function %q#D declared with type qualifiers"
  msgstr "statisk medlemsfunktion '%#D' erklÃ¦ret med typemodifikationer"
  
! #: cp/decl.cc:11075
  #, fuzzy, gcc-internal-format
  msgid "function concepts are no longer supported"
  msgstr "--driver understÃ¸ttes ikke lÃ¦ngere"
  
! #: cp/decl.cc:11113
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a member template function"
  msgid "constraints on a non-templated function"
  msgstr "'%D' er ikke en medlemsskabelonfunktion"
  
! #: cp/decl.cc:11115
  #, fuzzy, gcc-internal-format
  #| msgid "friend declaration not in class definition"
  msgid "constrained non-template friend declaration must be a definition"
  msgstr "friend-erklÃ¦ringen er ikke i klassedefinitionen"
  
! #: cp/decl.cc:11122
  #, gcc-internal-format
  msgid "friend function template with constraints that depend on outer template parameters must be a definition"
  msgstr ""
  
! #: cp/decl.cc:11174
  #, fuzzy, gcc-internal-format
  #| msgid "defining explicit specialization `%D' in friend declaration"
  msgid "defining explicit specialization %qD in friend declaration"
  msgstr "definering af eksplicit specialisering '%D' i friend-erklÃ¦ring"
  
! #: cp/decl.cc:11185
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of template-id `%D' in declaration of primary template"
  msgid "invalid use of template-id %qD in declaration of primary template"
  msgstr "ugyldig brug af skabelons-id '%D' i erklÃ¦ring af primÃ¦r skabelon"
  
! #: cp/decl.cc:11203
  #, fuzzy, gcc-internal-format
  #| msgid "default arguments are not allowed in declaration of friend template specialization `%D'"
  msgid "default arguments are not allowed in declaration of friend template specialization %qD"
  msgstr "standardparametre er ikke tilladt i erklÃ¦ring af venneskabelonsspecialisering '%D'"
  
! #: cp/decl.cc:11212
  #, fuzzy, gcc-internal-format
  #| msgid "`inline' is not allowed in declaration of friend template specialization `%D'"
  msgid "%<inline%> is not allowed in declaration of friend template specialization %qD"
  msgstr "'inline' er ikke tilladt i erklÃ¦ring venneskabelonsspecialisering '%D'"
  
  #. diagnostic_option_id=
! #: cp/decl.cc:11243
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%#D' outside of class is not definition"
  msgid "friend declaration of %qD specifies default arguments and isn%'t a definition"
  msgstr "erklÃ¦ring af '%#D' uden for en klasse er ikke en definition"
  
! #: cp/decl.cc:11285
  #, gcc-internal-format
  msgid "cannot declare %<::main%> to be a template"
  msgstr "kan ikke erklÃ¦re %<::main%> som en skabelon"
  
! #: cp/decl.cc:11288
  #, gcc-internal-format
  msgid "cannot declare %<::main%> to be inline"
  msgstr "kan ikke erklÃ¦re %<::main%> som indlejret"
  
! #: cp/decl.cc:11291 cp/decl.cc:11294
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare `::main' to be static"
  msgid "cannot declare %<::main%> to be %qs"
  msgstr "kan ikke erklÃ¦re '::main' som statisk"
  
! #: cp/decl.cc:11296
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare `::main' to be static"
  msgid "cannot declare %<::main%> to be static"
  msgstr "kan ikke erklÃ¦re '::main' som statisk"
  
! #: cp/decl.cc:11298
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare `::main' to be static"
  msgid "cannot declare %<::main%> with a linkage specification"
  msgstr "kan ikke erklÃ¦re '::main' som statisk"
  
! #: cp/decl.cc:11301
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare %<::main%> to be a template"
  msgid "cannot attach %<::main%> to a named module"
  msgstr "kan ikke erklÃ¦re %<::main%> som en skabelon"
  
! #: cp/decl.cc:11360
  #, fuzzy, gcc-internal-format
  #| msgid "%smember function `%D' cannot have `%T' method qualifier"
  msgid "non-member function %qD cannot have cv-qualifier"
  msgstr "%smedlemsfunktion '%D' kan ikke have metodemodifikationen '%T'"
  
! #: cp/decl.cc:11362
  #, fuzzy, gcc-internal-format
  #| msgid "%smember function `%D' cannot have `%T' method qualifier"
  msgid "static member function %qD cannot have cv-qualifier"
  msgstr "%smedlemsfunktion '%D' kan ikke have metodemodifikationen '%T'"
  
! #: cp/decl.cc:11363
  #, fuzzy, gcc-internal-format
  #| msgid "%smember function `%D' cannot have `%T' method qualifier"
  msgid "explicit object member function %qD cannot have cv-qualifier"
  msgstr "%smedlemsfunktion '%D' kan ikke have metodemodifikationen '%T'"
  
! #: cp/decl.cc:11368
  #, fuzzy, gcc-internal-format
  #| msgid "%smember function `%D' cannot have `%T' method qualifier"
  msgid "non-member function %qD cannot have ref-qualifier"
  msgstr "%smedlemsfunktion '%D' kan ikke have metodemodifikationen '%T'"
  
! #: cp/decl.cc:11370
  #, fuzzy, gcc-internal-format
  #| msgid "%smember function `%D' cannot have `%T' method qualifier"
  msgid "static member function %qD cannot have ref-qualifier"
  msgstr "%smedlemsfunktion '%D' kan ikke have metodemodifikationen '%T'"
  
! #: cp/decl.cc:11371
  #, fuzzy, gcc-internal-format
  #| msgid "%smember function `%D' cannot have `%T' method qualifier"
  msgid "explicit object member function %qD cannot have ref-qualifier"
  msgstr "%smedlemsfunktion '%D' kan ikke have metodemodifikationen '%T'"
  
! #: cp/decl.cc:11377 cp/decl.cc:14310 cp/decl.cc:14320 cp/parser.cc:12368
  #, fuzzy, gcc-internal-format
  #| msgid "template parameter type `%T' declared `friend'"
  msgid "explicit object parameter declared here"
  msgstr "skabelonsparametertypen '%T' erklÃ¦ret 'friend'"
  
! #: cp/decl.cc:11390
  #, fuzzy, gcc-internal-format
  #| msgid "specialization of %D after instantiation"
  msgid "deduction guide %qD must be declared in the same scope as %qT"
  msgstr "specialisering af '%D' efter instantiering"
  
! #: cp/decl.cc:11392 cp/decl.cc:11401 cp/typeck.cc:4667
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "  declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/decl.cc:11399
  #, fuzzy, gcc-internal-format
  #| msgid "specialization of %D after instantiation"
  msgid "deduction guide %qD must have the same access as %qT"
  msgstr "specialisering af '%D' efter instantiering"
  
! #: cp/decl.cc:11405
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%D' as non-function"
  msgid "deduction guide %qD must not have a function body"
  msgstr "erklÃ¦ring af '%D' som ikke-funktion"
  
! #: cp/decl.cc:11419
  #, fuzzy, gcc-internal-format
  #| msgid "template with C linkage"
  msgid "literal operator with C linkage"
  msgstr "skabelon med C-kÃ¦dning"
  
! #: cp/decl.cc:11429
  #, fuzzy, gcc-internal-format
  #| msgid "#%s with invalid argument"
  msgid "%qD has invalid argument list"
  msgstr "#%s med ugyldig parameter"
  
! #: cp/decl.cc:11437
  #, gcc-internal-format
  msgid "integer suffix %qs shadowed by implementation"
  msgstr ""
  
! #: cp/decl.cc:11443
  #, gcc-internal-format
  msgid "floating-point suffix %qs shadowed by implementation"
  msgstr ""
  
! #: cp/decl.cc:11450
  #, gcc-internal-format
  msgid "literal operator suffixes not preceded by %<_%> are reserved for future standardization"
  msgstr ""
  
! #: cp/decl.cc:11455
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must be a nonstatic member function"
  msgid "%qD must be a non-member function"
  msgstr "'%D' skal vÃ¦re en ikke-statisk medlemsfunktion"
  
! #: cp/decl.cc:11540
  #, fuzzy, gcc-internal-format
  #| msgid "`main' must return `int'"
  msgid "%<::main%> must return %<int%>"
  msgstr "'main' skal returnere typen 'int'"
  
! #: cp/decl.cc:11580
  #, fuzzy, gcc-internal-format
  #| msgid "definition of implicitly-declared `%D'"
  msgid "definition of implicitly-declared %qD"
  msgstr "definition af underforstÃ¥et-erklÃ¦ret '%D'"
  
! #: cp/decl.cc:11586
  #, fuzzy, gcc-internal-format
  #| msgid "definition of implicitly-declared `%D'"
  msgid "definition of explicitly-defaulted %q+D"
  msgstr "definition af underforstÃ¥et-erklÃ¦ret '%D'"
  
! #: cp/decl.cc:11588
  #, fuzzy, gcc-internal-format
  #| msgid "`%#D' previously defined here"
  msgid "%q#D explicitly defaulted here"
  msgstr "'%#D' tidligere defineret her"
  
! #: cp/decl.cc:11605
  #, fuzzy, gcc-internal-format
  #| msgid "no `%#D' member function declared in class `%T'"
  msgid "no %q#D member function declared in class %qT"
  msgstr "ingen medlemsfunktion '%#D' erklÃ¦ret i klassen '%T'"
  
! #: cp/decl.cc:11802
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare `::main' to be a template"
  msgid "cannot declare %<::main%> to be a global variable"
  msgstr "kan ikke erklÃ¦re '::main' som en skabelon"
  
! #: cp/decl.cc:11805
  #, gcc-internal-format
  msgid "an entity named %<main%> cannot be declared with C language linkage"
  msgstr ""
  
! #: cp/decl.cc:11814
  #, fuzzy, gcc-internal-format
  #| msgid "destructors may not be `%s'"
  msgid "a non-template variable cannot be %<concept%>"
  msgstr "destruktionsfunktioner mÃ¥ ikke vÃ¦re '%s'"
  
! #: cp/decl.cc:11817
  #, fuzzy, gcc-internal-format
  #| msgid "specialization of %D after instantiation"
  msgid "concept must be defined at namespace scope"
  msgstr "specialisering af '%D' efter instantiering"
  
! #: cp/decl.cc:11820
  #, fuzzy, gcc-internal-format
  msgid "variable concepts are no longer supported"
  msgstr "--driver understÃ¸ttes ikke lÃ¦ngere"
  
! #: cp/decl.cc:11941
  #, fuzzy, gcc-internal-format
  #| msgid "invalid in-class initialization of static data member of non-integral type `%T'"
  msgid "in-class initialization of static data member %q#D of incomplete type"
  msgstr "ugyldig tildeling af startvÃ¦rdi i klasse til statisk datamedlem af en ikke-heltalstype '%T'"
  
! #: cp/decl.cc:11945
  #, fuzzy, gcc-internal-format
  #| msgid "invalid in-class initialization of static data member of non-integral type `%T'"
  msgid "%<constexpr%> needed for in-class initialization of static data member %q#D of non-integral type"
  msgstr "ugyldig tildeling af startvÃ¦rdi i klasse til statisk datamedlem af en ikke-heltalstype '%T'"
  
! #: cp/decl.cc:11949
  #, fuzzy, gcc-internal-format
  #| msgid "invalid in-class initialization of static data member of non-integral type `%T'"
  msgid "in-class initialization of static data member %q#D of non-literal type"
  msgstr "ugyldig tildeling af startvÃ¦rdi i klasse til statisk datamedlem af en ikke-heltalstype '%T'"
  
! #: cp/decl.cc:11960
  #, fuzzy, gcc-internal-format
  #| msgid "invalid in-class initialization of static data member of non-integral type `%T'"
  msgid "invalid in-class initialization of static data member of non-integral type %qT"
  msgstr "ugyldig tildeling af startvÃ¦rdi i klasse til statisk datamedlem af en ikke-heltalstype '%T'"
  
! #: cp/decl.cc:11965
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids in-class initialization of non-const static member `%D'"
  msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
  msgstr "ISO C++ forbyder tildeling af startvÃ¦rdi i klasse til ikke-konstant statisk medlem '%D'"
  
! #: cp/decl.cc:11970
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids initialization of member constant `%D' of non-integral type `%T'"
  msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT"
  msgstr "ISO C++ forbyder tildeling af startvÃ¦rdi til medlemskonstant '%D' af en ikke-heltallig type"
  
! #: cp/decl.cc:12082
  #, fuzzy, gcc-internal-format
  msgid "size of array %qD has non-integral type %qT"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af en heltalstype"
  
! #: cp/decl.cc:12085
  #, fuzzy, gcc-internal-format
  msgid "size of array has non-integral type %qT"
  msgstr "stÃ¸rrelsen af tabel er ikke af en heltalstype"
  
! #: cp/decl.cc:12116 cp/decl.cc:12188
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%D' is not an integral constant-expression"
  msgid "size of array %qD is not an integral constant-expression"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/decl.cc:12120 cp/decl.cc:12191
  #, gcc-internal-format
  msgid "size of array is not an integral constant-expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: cp/decl.cc:12171
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids zero-size array `%D'"
  msgid "ISO C++ forbids zero-size array %qD"
  msgstr "ISO C++ forbyder tabellen '%D' med stÃ¸rrelsen nul"
  
! #: cp/decl.cc:12174
  #, gcc-internal-format
  msgid "ISO C++ forbids zero-size array"
  msgstr "ISO C++ forbyder tabel med stÃ¸rrelsen nul"
  
! #: cp/decl.cc:12198
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids variable-size array `%D'"
  msgid "ISO C++ forbids variable length array %qD"
  msgstr "ISO C++ forbyder tabellen '%D' med variabel stÃ¸rrelse"
  
! #: cp/decl.cc:12201
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids variable-size array"
  msgid "ISO C++ forbids variable length array"
  msgstr "ISO C++ forbyder tabel med variabel stÃ¸rrelse"
  
! #: cp/decl.cc:12207
  #, gcc-internal-format
  msgid "variable length array %qD is used"
  msgstr ""
  
! #: cp/decl.cc:12210
  #, gcc-internal-format
  msgid "variable length array is used"
  msgstr ""
  
! #: cp/decl.cc:12262
  #, gcc-internal-format
  msgid "overflow in array dimension"
  msgstr "tabeldimension for stor"
  
! #: cp/decl.cc:12322
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' declared as a friend"
  msgid "%qD declared as array of template placeholder type %qT"
  msgstr "'%D' er erklÃ¦ret som en ven"
  
! #: cp/decl.cc:12325
  #, fuzzy, gcc-internal-format
  #| msgid "creating pointer to member reference type `%T'"
  msgid "creating array of template placeholder type %qT"
  msgstr "opretter henvisning til medlemsreference af typen '%T'"
  
! #: cp/decl.cc:12335
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%s' as array of voids"
  msgid "declaration of %qD as array of void"
  msgstr "'%s' erklÃ¦ret som en tabel af void"
  
! #: cp/decl.cc:12337
  #, fuzzy, gcc-internal-format
  #| msgid "creating array of `%T'"
  msgid "creating array of void"
  msgstr "opretter tabel af '%T'"
  
! #: cp/decl.cc:12342
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%s' as array of functions"
  msgid "declaration of %qD as array of functions"
  msgstr "'%s' erklÃ¦ret som en tabel af funktioner"
  
! #: cp/decl.cc:12344
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%s' as array of functions"
  msgid "creating array of functions"
  msgstr "'%s' erklÃ¦ret som en tabel af funktioner"
  
! #: cp/decl.cc:12349
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%s' as array of functions"
  msgid "declaration of %qD as array of references"
  msgstr "'%s' erklÃ¦ret som en tabel af funktioner"
  
! #: cp/decl.cc:12351
  #, fuzzy, gcc-internal-format
  #| msgid "creating array of `%T'"
  msgid "creating array of references"
  msgstr "opretter tabel af '%T'"
  
! #: cp/decl.cc:12356
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%s' as array of functions"
  msgid "declaration of %qD as array of function members"
  msgstr "'%s' erklÃ¦ret som en tabel af funktioner"
  
! #: cp/decl.cc:12359
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%s' as array of functions"
  msgid "creating array of function members"
  msgstr "'%s' erklÃ¦ret som en tabel af funktioner"
  
! #: cp/decl.cc:12377
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%D' as multidimensional array must have bounds for all dimensions except the first"
  msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first"
  msgstr "erklÃ¦ring af '%D' som flerdimensional tabel skal have grÃ¦nser for alle dimensioner pÃ¥nÃ¦r den fÃ¸rste"
  
! #: cp/decl.cc:12381
  #, gcc-internal-format
  msgid "multidimensional array must have bounds for all dimensions except the first"
  msgstr "flerdimensional tabel skal have grÃ¦nser for alle dimensioner pÃ¥nÃ¦r den fÃ¸rste"
  
! #: cp/decl.cc:12395
  #, fuzzy, gcc-internal-format
  #| msgid "Warn when a variable is unused"
  msgid "variable-length array of %<auto%>"
  msgstr "Advar nÃ¥r en variabel ikke benyttes"
  
! #: cp/decl.cc:12493
  #, gcc-internal-format
  msgid "return type specification for constructor invalid"
  msgstr "angivelse af returneringstypen til konstruktionsfunktion er ugyldigt"
  
! #: cp/decl.cc:12496
  #, fuzzy, gcc-internal-format
  #| msgid "qualifiers are not allowed on declaration of `operator %T'"
  msgid "qualifiers are not allowed on constructor declaration"
  msgstr "modifikationer er ikke tilladt i erklÃ¦ring af 'operator %T'"
  
! #: cp/decl.cc:12507
  #, gcc-internal-format
  msgid "return type specification for destructor invalid"
  msgstr "angivelse af returneringstypen til destruktionsfunktion er ugyldigt"
  
! #: cp/decl.cc:12510
  #, fuzzy, gcc-internal-format
  #| msgid "qualifiers are not allowed on declaration of `operator %T'"
  msgid "qualifiers are not allowed on destructor declaration"
  msgstr "modifikationer er ikke tilladt i erklÃ¦ring af 'operator %T'"
  
! #: cp/decl.cc:12523
  #, fuzzy, gcc-internal-format
  #| msgid "return type specified for `operator %T'"
  msgid "return type specified for %<operator %T%>"
  msgstr "returtype angivet for 'operator %T'"
  
! #: cp/decl.cc:12526
  #, fuzzy, gcc-internal-format
  #| msgid "qualifiers are not allowed on declaration of `operator %T'"
  msgid "qualifiers are not allowed on declaration of %<operator %T%>"
  msgstr "modifikationer er ikke tilladt i erklÃ¦ring af 'operator %T'"
  
! #: cp/decl.cc:12535
  #, fuzzy, gcc-internal-format
  #| msgid "return type specification for destructor invalid"
  msgid "return type specified for deduction guide"
  msgstr "angivelse af returneringstypen til destruktionsfunktion er ugyldigt"
  
! #: cp/decl.cc:12538
  #, fuzzy, gcc-internal-format
  #| msgid "qualifiers are not allowed on declaration of `operator %T'"
  msgid "qualifiers are not allowed on declaration of deduction guide"
  msgstr "modifikationer er ikke tilladt i erklÃ¦ring af 'operator %T'"
  
! #: cp/decl.cc:12542
  #, fuzzy, gcc-internal-format
  msgid "template template parameter %qT in declaration of deduction guide"
  msgstr "modstridende erklÃ¦ringer af '%s'"
  
! #: cp/decl.cc:12551
  #, fuzzy, gcc-internal-format
  msgid "%<decl-specifier%> in declaration of deduction guide"
  msgstr "modstridende erklÃ¦ringer af '%s'"
  
! #: cp/decl.cc:12572
  #, gcc-internal-format
  msgid "unnamed variable or field declared void"
  msgstr "unavngiven variabel eller felt erklÃ¦ret void"
  
! #: cp/decl.cc:12580
  #, gcc-internal-format
  msgid "variable or field declared void"
  msgstr "variabel eller felt erklÃ¦ret void"
  
! #: cp/decl.cc:12595
  #, fuzzy, gcc-internal-format
  #| msgid "storage class `inline' invalid for function `%s' declared out of global scope"
  msgid "%<inline%> specifier invalid for variable %qD declared at block scope"
  msgstr "lagringsklassen 'inline' er ugyldig for funktionen '%s' erklÃ¦ret uden for det globale virkefelt"
  
! #: cp/decl.cc:12600
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "inline variables are only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/decl.cc:12656
  #, fuzzy, gcc-internal-format
  #| msgid "%s as integer rather than floating due to prototype"
  msgid "%qT as type rather than plain %<decltype(auto)%>"
  msgstr "%s som heltal i stedet for kommatal pÃ¥ grund af prototypen"
  
! #: cp/decl.cc:12662
  #, fuzzy, gcc-internal-format
  #| msgid "destructors may not be `%s'"
  msgid "%<decltype(auto)%> cannot be cv-qualified"
  msgstr "destruktionsfunktioner mÃ¥ ikke vÃ¦re '%s'"
  
! #: cp/decl.cc:12683
  #, fuzzy
  #| msgid "signed and unsigned given together for `%s'"
  msgid "%e and %e specified together"
  msgstr "signed og unsigned er begge angivet for '%s'"
  
! #: cp/decl.cc:12895
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of member `%D'"
  msgid "invalid use of qualified-name %<::%D%>"
  msgstr "ugyldig brug af medlemmet '%D'"
  
! #: cp/decl.cc:12898 cp/decl.cc:12920
  #, fuzzy, gcc-internal-format
  #| msgid "invalid definition of qualified type `%T'"
  msgid "invalid use of qualified-name %<%T::%D%>"
  msgstr "ugyldig definition af modificeret type '%T'"
  
! #: cp/decl.cc:12901
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of member `%D'"
  msgid "invalid use of qualified-name %<%D::%D%>"
  msgstr "ugyldig brug af medlemmet '%D'"
  
! #: cp/decl.cc:12911
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a class or namespace"
  msgid "%q#T is not a class or namespace"
  msgstr "'%T' er ikke en klasse eller et navnerum"
  
! #: cp/decl.cc:12935
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%D' as non-function"
  msgid "declaration of %qE as non-function"
  msgstr "erklÃ¦ring af '%D' som ikke-funktion"
  
! #: cp/decl.cc:12942
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%D' as non-function"
  msgid "declaration of %qE as non-member"
  msgstr "erklÃ¦ring af '%D' som ikke-funktion"
  
! #: cp/decl.cc:12970
  #, fuzzy, gcc-internal-format
  #| msgid "declarator-id missing; using reserved word `%D'"
  msgid "declarator-id missing; using reserved word %qD"
  msgstr "erklÃ¦rer-id mangler; bruger reserveret ord '%D'"
  
! #: cp/decl.cc:13021
  #, fuzzy, gcc-internal-format
  #| msgid "function definition declared `register'"
  msgid "function definition does not declare parameters"
  msgstr "'register' er pÃ¥hÃ¦ftet funktionsdefinitionen"
  
! #: cp/decl.cc:13029 cp/decl.cc:13038 cp/decl.cc:15034
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%D' as non-function"
  msgid "declaration of %qD as non-function"
  msgstr "erklÃ¦ring af '%D' som ikke-funktion"
  
! #: cp/decl.cc:13046
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%D' as %s"
  msgid "declaration of %qD as %<typedef%>"
  msgstr "erklÃ¦ring af '%D' som %s"
  
! #: cp/decl.cc:13051
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%#D' shadows a parameter"
  msgid "declaration of %qD as parameter"
  msgstr "erklÃ¦ring af '%#D' skygger for en parameter"
  
! #: cp/decl.cc:13086
  #, fuzzy, gcc-internal-format
  #| msgid "both long and short specified for `%s'"
  msgid "both %qs and %qs specified"
  msgstr "bÃ¥de long og short er angivet for '%s'"
  
! #: cp/decl.cc:13093 cp/decl.cc:13100 cp/decl.cc:13107 cp/decl.cc:13114
  #, fuzzy, gcc-internal-format
  msgid "%qs cannot appear in a typedef declaration"
  msgstr "navnerum '%D' ikke tilladt i using-erklÃ¦ring"
  
! #: cp/decl.cc:13125
  #, gcc-internal-format
  msgid "can use at most one of the %<constinit%> and %<constexpr%> specifiers"
  msgstr ""
  
! #: cp/decl.cc:13135
  #, fuzzy, gcc-internal-format
  #| msgid "two or more data types in declaration of `%s'"
  msgid "two or more data types in declaration of %qs"
  msgstr "mere end Ã©n datatype i erklÃ¦ringen af '%s'"
  
! #: cp/decl.cc:13189
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support plain `complex' meaning `double complex'"
  msgid "ISO C++ does not support plain %<complex%> meaning %<double complex%>"
  msgstr "ISO C understÃ¸tter ikke at blot 'complex' betyder 'double complex'"
  
! #: cp/decl.cc:13239 cp/decl.cc:13243 cp/decl.cc:13246
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids declaration of `%s' with no type"
  msgid "ISO C++ forbids declaration of %qs with no type"
  msgstr "ISO C++ forbyder erklÃ¦ring af '%s' uden en type"
  
! #: cp/decl.cc:13263
  #, fuzzy, gcc-internal-format
  #| msgid "__builtin_trap not supported by this target"
  msgid "%<__int%d%> is not supported by this target"
  msgstr "__builtin_trap understÃ¸ttes ikke pÃ¥ denne mÃ¥larkitektur"
  
! #: cp/decl.cc:13271
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ does not support `long long'"
  msgid "ISO C++ does not support %<__int%d%> for %qs"
  msgstr "ISO C++ understÃ¸tter ikke 'long long'"
  
! #: cp/decl.cc:13334
  #, fuzzy, gcc-internal-format
  #| msgid "%s used with `%%%c' %s format"
  msgid "%qs specified with %qT"
  msgstr "%s brugt med '%%%c' %s-formatering"
  
! #: cp/decl.cc:13341
  #, fuzzy, gcc-internal-format
  #| msgid "%s used with `%%%c' %s format"
  msgid "%qs specified with typedef-name %qD"
  msgstr "%s brugt med '%%%c' %s-formatering"
  
! #: cp/decl.cc:13350
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<decltype%>"
  msgid "%qs specified with %<decltype%>"
  msgstr "forventede %<decltype%>"
  
! #: cp/decl.cc:13352
  #, fuzzy, gcc-internal-format
  #| msgid "%s used with `%%%c' %s format"
  msgid "%qs specified with %<typeof%>"
  msgstr "%s brugt med '%%%c' %s-formatering"
  
! #: cp/decl.cc:13421
  #, fuzzy, gcc-internal-format
  #| msgid "complex invalid for `%s'"
  msgid "complex invalid for %qs"
  msgstr "complex ugyldig for '%s'"
  
! #: cp/decl.cc:13465
  #, gcc-internal-format
  msgid "missing template argument list after %qE; for deduction, template placeholder must be followed by a simple declarator-id"
  msgstr ""
  
! #: cp/decl.cc:13491
  #, fuzzy, gcc-internal-format
  #| msgid "member `%D' cannot be declared both virtual and static"
  msgid "member %qD cannot be declared both %<virtual%> and %<static%>"
  msgstr "medlemmet '%D' kan ikke afklÃ¦res bÃ¥de virtual og static"
  
! #: cp/decl.cc:13500
  #, fuzzy, gcc-internal-format
  #| msgid "member `%D' cannot be declared both virtual and static"
  msgid "member %qD can be declared both %<virtual%> and %<constexpr%> only in %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "medlemmet '%D' kan ikke afklÃ¦res bÃ¥de virtual og static"
  
! #: cp/decl.cc:13513
  #, gcc-internal-format
  msgid "typedef declaration invalid in parameter declaration"
  msgstr "typedef-erklÃ¦ringer er ugyldig i parametererklÃ¦ringer"
  
! #: cp/decl.cc:13520
  #, fuzzy, gcc-internal-format
  #| msgid "storage class specified for parameter `%s'"
  msgid "storage class specified for template parameter %qs"
  msgstr "lagringsklasse angivet for parameter '%s'"
  
! #: cp/decl.cc:13530 cp/decl.cc:13707
  #, fuzzy, gcc-internal-format
  #| msgid "storage class specified for parameter `%s'"
  msgid "storage class specified for parameter %qs"
  msgstr "lagringsklasse angivet for parameter '%s'"
  
! #: cp/decl.cc:13538 cp/decl.cc:13547 cp/decl.cc:13553 cp/decl.cc:13559
  #, fuzzy, gcc-internal-format
  #| msgid "template parameters cannot be friends"
  msgid "a parameter cannot be declared %qs"
  msgstr "skabelonsparametre kan ikke vÃ¦re venner"
  
! #: cp/decl.cc:13569
  #, fuzzy, gcc-internal-format
  #| msgid "virtual outside class declaration"
  msgid "%<virtual%> outside class declaration"
  msgstr "virtual angivet uden for klasseerklÃ¦ring"
  
! #: cp/decl.cc:13579 cp/decl.cc:13582 cp/decl.cc:13584 cp/decl.cc:13587
! #: cp/decl.cc:13597 cp/decl.cc:13607 cp/decl.cc:13617 cp/decl.cc:13621
  #, fuzzy, gcc-internal-format
  #| msgid "forward declaration of `%#T'"
  msgid "structured binding declaration cannot be %qs"
  msgstr "forhÃ¥ndserklÃ¦ring af '%#T'"
  
! #: cp/decl.cc:13591 cp/decl.cc:13613
  #, fuzzy, gcc-internal-format
  #| msgid "constructors cannot be declared virtual"
  msgid "structured binding declaration can be %qs only in %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "konstruktionsfunktioner kan ikke erklÃ¦res virtual"
  
! #: cp/decl.cc:13601
  #, fuzzy, gcc-internal-format
  msgid "%<volatile%>-qualified structured binding is deprecated"
  msgstr "Ugyldig erklÃ¦ring"
  
! #: cp/decl.cc:13625
  #, fuzzy, gcc-internal-format
  #| msgid "function `%s' cannot be declared `mutable'"
  msgid "structured binding declaration cannot be C++98 %<auto%>"
  msgstr "funktionen '%s' kan ikke erklÃ¦res 'mutable'"
  
! #: cp/decl.cc:13637
  #, fuzzy, gcc-internal-format
  #| msgid "function `%D' cannot be declared friend"
  msgid "structured binding declaration cannot have type %qT"
  msgstr "funktionen '%D' kan ikke erklÃ¦res friend"
  
! #: cp/decl.cc:13640
  #, gcc-internal-format
  msgid "type must be cv-qualified %<auto%> or reference to cv-qualified %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:13648
  #, fuzzy, gcc-internal-format
  #| msgid "function `%D' cannot be declared friend"
  msgid "structured binding declaration cannot have constrained %<auto%> type %qT"
  msgstr "funktionen '%D' kan ikke erklÃ¦res friend"
  
! #: cp/decl.cc:13679
  #, fuzzy, gcc-internal-format
  #| msgid "multiple storage classes in declaration of `%s'"
  msgid "multiple storage classes in declaration of %qs"
  msgstr "flere lagringsklasser optrÃ¦der i erklÃ¦ringen af '%s'"
  
! #: cp/decl.cc:13705
  #, fuzzy, gcc-internal-format
  #| msgid "storage class specified for %s `%s'"
  msgid "storage class specified for %qs"
  msgstr "lagringsklasse angivet for %s '%s'"
  
! #: cp/decl.cc:13719
  #, fuzzy, gcc-internal-format
  #| msgid "nested function `%s' declared `extern'"
  msgid "nested function %qs declared %<extern%>"
  msgstr "indlejret funktion '%s' er erklÃ¦ret 'extern'"
  
! #: cp/decl.cc:13724
  #, fuzzy, gcc-internal-format
  #| msgid "top-level declaration of `%s' specifies `auto'"
  msgid "top-level declaration of %qs specifies %<auto%>"
  msgstr "erklÃ¦ring af '%s' pÃ¥ Ã¸verste niveau angiver 'auto'"
  
! #: cp/decl.cc:13732
  #, fuzzy, gcc-internal-format
  #| msgid "function-scope `%s' implicitly auto and declared `__thread'"
  msgid "function-scope %qs implicitly auto and declared %<__thread%>"
  msgstr "'%s' i funktionsvirkefelt underforstÃ¥et auto og erklÃ¦ret '__thread'"
  
! #: cp/decl.cc:13746
  #, gcc-internal-format
  msgid "storage class specifiers invalid in friend function declarations"
  msgstr "lagringsklasseanvisninger er ugyldige i vennefunktionserklÃ¦ringer"
  
! #: cp/decl.cc:13852
  #, fuzzy, gcc-internal-format
  #| msgid "multiple storage classes in declaration of `%s'"
  msgid "unnecessary parentheses in declaration of %qs"
  msgstr "flere lagringsklasser optrÃ¦der i erklÃ¦ringen af '%s'"
  
! #: cp/decl.cc:13858
  #, fuzzy, gcc-internal-format
  msgid "remove parentheses"
  msgstr "uventet operand"
  
! #: cp/decl.cc:13925
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "explicit object member function only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/decl.cc:13939
  #, fuzzy, gcc-internal-format
  #| msgid "function cannot be inline"
  msgid "a function type cannot have an explicit object parameter"
  msgstr "funktion kan ikke indbygges"
  
! #: cp/decl.cc:13945
  #, fuzzy, gcc-internal-format
  #| msgid "virtual functions cannot be friends"
  msgid "a pointer to function type cannot have an explicit object parameter"
  msgstr "en virtuel funktion kan ikke erklÃ¦res som friend"
  
! #: cp/decl.cc:13949
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' is not a valid template argument"
  msgid "a pointer to member function type cannot have an explicit object parameter"
  msgstr "'%E' er ikke en gyldig skabelonsparameter"
  
! #: cp/decl.cc:13957
  #, gcc-internal-format
  msgid "the type of a pointer to explicit object member function is a regular pointer to function type"
  msgstr ""
  
! #: cp/decl.cc:13961
  #, gcc-internal-format
  msgid "the type of an explicit object member function is a regular function type"
  msgstr ""
  
! #: cp/decl.cc:13982
  #, gcc-internal-format
  msgid "only the first parameter of a member function can be declared as an explicit object parameter"
  msgstr ""
  
! #: cp/decl.cc:13987
  #, fuzzy, gcc-internal-format
  #| msgid "template parameter type `%T' declared `friend'"
  msgid "valid explicit object parameter declared here"
  msgstr "skabelonsparametertypen '%T' erklÃ¦ret 'friend'"
  
! #: cp/decl.cc:13991
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute requires an integer constant argument"
  msgid "requires-clause on return type"
  msgstr "egenskaben '%s' krÃ¦ver en heltalskonstant som parameter"
  
! #: cp/decl.cc:14012
  #, gcc-internal-format
  msgid "%qs function uses %<auto%> type specifier without trailing return type"
  msgstr ""
  
! #: cp/decl.cc:14016
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "deduced return type only available with %<-std=c++14%> or %<-std=gnu++14%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/decl.cc:14021
  #, fuzzy, gcc-internal-format
  #| msgid "virtual functions cannot be friends"
  msgid "virtual function cannot have deduced return type"
  msgstr "en virtuel funktion kan ikke erklÃ¦res som friend"
  
! #: cp/decl.cc:14028
  #, gcc-internal-format
  msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:14037
  #, gcc-internal-format
  msgid "%qs function with trailing return type has %<decltype(auto)%> as its type rather than plain %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:14042
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `%D'"
  msgid "invalid use of %<decltype(auto)%>"
  msgstr "ugyldig brug af '%D"
  
! #: cp/decl.cc:14049
  #, gcc-internal-format
  msgid "%qs function with trailing return type has constrained %<auto%> type specifier rather than plain %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:14055
  #, fuzzy, gcc-internal-format
  msgid "invalid use of constrained %<auto%> type"
  msgstr "ugyldig brug af ikke-statisk felt '%D'"
  
! #: cp/decl.cc:14067
  #, fuzzy, gcc-internal-format
  #| msgid "type qualifiers ignored on function return type"
  msgid "deduced class type %qD in function return type"
  msgstr "typemodifikationer ignoreret i funktionsreturtypen"
  
! #: cp/decl.cc:14077
  #, fuzzy, gcc-internal-format
  #| msgid "virtual functions cannot be friends"
  msgid "deduction guide for %qT must have trailing return type"
  msgstr "en virtuel funktion kan ikke erklÃ¦res som friend"
  
! #: cp/decl.cc:14090
  #, gcc-internal-format
  msgid "trailing return type %qT of deduction guide is not a specialization of %qT"
  msgstr ""
  
! #: cp/decl.cc:14104
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "trailing return type only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/decl.cc:14107
  #, gcc-internal-format
  msgid "%qs function with trailing return type not declared with %<auto%> type specifier"
  msgstr ""
  
! #: cp/decl.cc:14114
  #, fuzzy, gcc-internal-format
  #| msgid "virtual functions cannot be friends"
  msgid "a conversion function cannot have a trailing return type"
  msgstr "en virtuel funktion kan ikke erklÃ¦res som friend"
  
! #: cp/decl.cc:14140
  #, gcc-internal-format
  msgid "%<volatile%>-qualified return type is deprecated"
  msgstr ""
  
! #: cp/decl.cc:14152
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' declared as function returning a function"
  msgid "%qs declared as function returning a function"
  msgstr "'%s' er erklÃ¦ret som en funktion der returnerer en funktion"
  
! #: cp/decl.cc:14158
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' declared as function returning an array"
  msgid "%qs declared as function returning an array"
  msgstr "'%s' er erklÃ¦ret som en funktion der returnerer en tabel"
  
! #: cp/decl.cc:14165
  #, gcc-internal-format
  msgid "%<constinit%> on function return type is not allowed"
  msgstr ""
  
! #: cp/decl.cc:14198
  #, gcc-internal-format
  msgid "destructor cannot be static member function"
  msgstr "destruktionsfunktionen kan ikke vÃ¦re en statisk medlemsfunktion"
  
! #: cp/decl.cc:14200
  #, gcc-internal-format
  msgid "constructor cannot be static member function"
  msgstr "konstruktionsfunktionen kan ikke vÃ¦re en statisk medlemsfunktion"
  
! #: cp/decl.cc:14205
  #, fuzzy, gcc-internal-format
  #| msgid "destructors may not be `%s'"
  msgid "destructors may not be cv-qualified"
  msgstr "destruktionsfunktioner mÃ¥ ikke vÃ¦re '%s'"
  
! #: cp/decl.cc:14206
  #, fuzzy, gcc-internal-format
  #| msgid "constructors may not be `%s'"
  msgid "constructors may not be cv-qualified"
  msgstr "konstruktionsfunktioner mÃ¥ ikke vÃ¦re '%s'"
  
! #: cp/decl.cc:14214
  #, fuzzy, gcc-internal-format
  #| msgid "destructors may not be `%s'"
  msgid "destructors may not be ref-qualified"
  msgstr "destruktionsfunktioner mÃ¥ ikke vÃ¦re '%s'"
  
! #: cp/decl.cc:14215
  #, fuzzy, gcc-internal-format
  #| msgid "destructors may not be `%s'"
  msgid "constructors may not be ref-qualified"
  msgstr "destruktionsfunktioner mÃ¥ ikke vÃ¦re '%s'"
  
! #: cp/decl.cc:14233
  #, fuzzy, gcc-internal-format
  #| msgid "constructors cannot be declared virtual"
  msgid "constructors cannot be declared %<virtual%>"
  msgstr "konstruktionsfunktioner kan ikke erklÃ¦res virtual"
  
! #: cp/decl.cc:14250
  #, gcc-internal-format
  msgid "virtual functions cannot be friends"
  msgstr "en virtuel funktion kan ikke erklÃ¦res som friend"
  
! #: cp/decl.cc:14255
  #, gcc-internal-format
  msgid "friend declaration not in class definition"
  msgstr "friend-erklÃ¦ringen er ikke i klassedefinitionen"
  
! #: cp/decl.cc:14259
  #, fuzzy, gcc-internal-format
  #| msgid "can't define friend function `%s' in a local class definition"
  msgid "cannot define friend function %qs in a local class definition"
  msgstr "kan ikke definere vennefunktion '%s' i en lokal klassedefinition"
  
! #: cp/decl.cc:14269
  #, gcc-internal-format
  msgid "friend function definition %qs cannot have a name qualified with %<::%>"
  msgstr ""
  
! #: cp/decl.cc:14273
  #, gcc-internal-format
  msgid "friend function definition %qs cannot have a name qualified with %<%D::%>"
  msgstr ""
  
! #: cp/decl.cc:14299
  #, fuzzy, gcc-internal-format
  #| msgid "%smember function `%D' cannot have `%T' method qualifier"
  msgid "a non-member function cannot have an explicit object parameter"
  msgstr "%smedlemsfunktion '%D' kan ikke have metodemodifikationen '%T'"
  
! #: cp/decl.cc:14307
  #, fuzzy, gcc-internal-format
  #| msgid "%smember function `%D' cannot have `%T' method qualifier"
  msgid "an explicit object member function cannot be %<virtual%>"
  msgstr "%smedlemsfunktion '%D' kan ikke have metodemodifikationen '%T'"
  
! #: cp/decl.cc:14317
  #, fuzzy, gcc-internal-format
  #| msgid "constructors cannot be declared virtual"
  msgid "an explicit object member function cannot be %<static%>"
  msgstr "konstruktionsfunktioner kan ikke erklÃ¦res virtual"
  
! #: cp/decl.cc:14326
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must be a nonstatic member function"
  msgid "%qD cannot be an explicit object member function"
  msgstr "'%D' skal vÃ¦re en ikke-statisk medlemsfunktion"
  
! #: cp/decl.cc:14349
  #, gcc-internal-format
  msgid "destructors may not have parameters"
  msgstr "destruktionsfunktioner mÃ¥ ikke have parametre"
  
! #: cp/decl.cc:14407
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare pointer to `%#T'"
  msgid "cannot declare pointer to %q#T"
  msgstr "kan ikke erklÃ¦re henvisning til '%#T'"
  
! #: cp/decl.cc:14420 cp/decl.cc:14427
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare reference to `%#T'"
  msgid "cannot declare reference to %q#T"
  msgstr "kan ikke erklÃ¦re reference til '%#T'"
  
! #: cp/decl.cc:14429
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare pointer to `%#T' member"
  msgid "cannot declare pointer to %q#T member"
  msgstr "kan ikke erklÃ¦re henvisning til medlemmet '%#T'"
  
! #: cp/decl.cc:14458
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare references to references"
  msgid "cannot declare reference to qualified function type %qT"
  msgstr "kan ikke erklÃ¦re referencer til referencer"
  
! #: cp/decl.cc:14459
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare bit-field `%D' with function type"
  msgid "cannot declare pointer to qualified function type %qT"
  msgstr "kan ikke erklÃ¦re bitfelt '%D' med funktionstype"
  
! #: cp/decl.cc:14532
  #, gcc-internal-format
  msgid "cannot declare reference to %q#T, which is not a typedef or a template type argument"
  msgstr ""
  
! #: cp/decl.cc:14611
  #, fuzzy, gcc-internal-format
  #| msgid "template-id `%D' used as a declarator"
  msgid "template-id %qD used as a declarator"
  msgstr "skabelons-id '%D' benyttet som erklÃ¦rer"
  
! #: cp/decl.cc:14637
  #, gcc-internal-format
  msgid "member functions are implicitly friends of their class"
  msgstr "medlemsfunktioner er underforstÃ¥et venner af deres klasse"
  
! #: cp/decl.cc:14642
  #, fuzzy, gcc-internal-format
  #| msgid "extra qualification `%T::' on member `%s' ignored"
  msgid "extra qualification %<%T::%> on member %qs"
  msgstr "ekstra modifikation '%T::' af medlemmet '%s' ignoreret"
  
! #: cp/decl.cc:14672
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare member function `%T::%s' within `%T'"
  msgid "cannot define member function %<%T::%s%> within %qT"
  msgstr "kan ikke erklÃ¦re medlemsfunktion '%T::%s' inde i '%T'"
  
! #: cp/decl.cc:14674
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare member function `%T::%s' within `%T'"
  msgid "cannot declare member function %<%T::%s%> within %qT"
  msgstr "kan ikke erklÃ¦re medlemsfunktion '%T::%s' inde i '%T'"
  
! #: cp/decl.cc:14682
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare member `%T::%s' within `%T'"
  msgid "cannot declare member %<%T::%s%> within %qT"
  msgstr "kan ikke erklÃ¦re medlem '%T::%s' inde i '%T'"
  
! #: cp/decl.cc:14722
  #, fuzzy, gcc-internal-format
  #| msgid "data member `%D' cannot be a member template"
  msgid "non-parameter %qs cannot be a parameter pack"
  msgstr "datamedlem '%D' kan ikke vÃ¦re en medlemsskabelon"
  
! #: cp/decl.cc:14731
  #, fuzzy, gcc-internal-format
  #| msgid "data member may not have variably modified type `%T'"
  msgid "data member may not have variably modified type %qT"
  msgstr "datamedlem mÃ¥ ikke have variabelt Ã¦ndret type '%T'"
  
! #: cp/decl.cc:14734
  #, fuzzy, gcc-internal-format
  #| msgid "parameter may not have variably modified type `%T'"
  msgid "parameter may not have variably modified type %qT"
  msgstr "parameter mÃ¥ ikke have variabelt Ã¦ndret type '%T'"
  
! #: cp/decl.cc:14745
  #, fuzzy, gcc-internal-format
  #| msgid "virtual outside class declaration"
  msgid "%<explicit%> outside class declaration"
  msgstr "virtual angivet uden for klasseerklÃ¦ring"
  
! #: cp/decl.cc:14748
  #, fuzzy, gcc-internal-format
  #| msgid "defining explicit specialization `%D' in friend declaration"
  msgid "%<explicit%> in friend declaration"
  msgstr "definering af eksplicit specialisering '%D' i friend-erklÃ¦ring"
  
! #: cp/decl.cc:14751
  #, fuzzy, gcc-internal-format
  #| msgid "only declarations of constructors can be `explicit'"
  msgid "only declarations of constructors and conversion operators can be %<explicit%>"
  msgstr "kun erklÃ¦ringer af konstruktionsfunktioner kan vÃ¦re 'explicit'"
  
! #: cp/decl.cc:14761
  #, fuzzy, gcc-internal-format
  #| msgid "non-member `%s' cannot be declared `mutable'"
  msgid "non-member %qs cannot be declared %<mutable%>"
  msgstr "'%s' som ikke er medlem, kan ikke erklÃ¦res 'mutable'"
  
! #: cp/decl.cc:14768
  #, fuzzy, gcc-internal-format
  #| msgid "non-object member `%s' cannot be declared `mutable'"
  msgid "non-object member %qs cannot be declared %<mutable%>"
  msgstr "'%s' som ikke er objektmedlem, kan ikke erklÃ¦res 'mutable'"
  
! #: cp/decl.cc:14774
  #, fuzzy, gcc-internal-format
  #| msgid "function `%s' cannot be declared `mutable'"
  msgid "function %qs cannot be declared %<mutable%>"
  msgstr "funktionen '%s' kan ikke erklÃ¦res 'mutable'"
  
! #: cp/decl.cc:14780
  #, fuzzy, gcc-internal-format
  #| msgid "static `%s' cannot be declared `mutable'"
  msgid "%<static%> %qs cannot be declared %<mutable%>"
  msgstr "static '%s' kan ikke erklÃ¦res 'mutable'"
  
! #: cp/decl.cc:14786
  #, fuzzy, gcc-internal-format
  #| msgid "const `%s' cannot be declared `mutable'"
  msgid "%<const%> %qs cannot be declared %<mutable%>"
  msgstr "const '%s' kan ikke erklÃ¦res 'mutable'"
  
! #: cp/decl.cc:14792
  #, gcc-internal-format
  msgid "reference %qs cannot be declared %<mutable%>"
  msgstr "referencen %qs kan ikke erklÃ¦res %<mutable%>"
  
! #: cp/decl.cc:14808
  #, fuzzy, gcc-internal-format
  msgid "typedef may not be a function definition"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/decl.cc:14811
  #, fuzzy, gcc-internal-format
  msgid "typedef may not be a member function definition"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/decl.cc:14837
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not at beginning of declaration"
  msgid "%<auto%> not allowed in alias declaration"
  msgstr "'%s' er ikke ved begyndelsen af erklÃ¦ringen"
  
! #: cp/decl.cc:14840
  #, gcc-internal-format
  msgid "typedef declared %<auto%>"
  msgstr "typedef erklÃ¦ret %<auto%>"
  
! #: cp/decl.cc:14845
  #, gcc-internal-format
  msgid "requires-clause on typedef"
  msgstr ""
  
! #: cp/decl.cc:14849
  #, gcc-internal-format
  msgid "typedef name may not be a nested-name-specifier"
  msgstr "typedef-navn kan ikke vÃ¦re en indlejret-navn-specifikation"
  
! #: cp/decl.cc:14875
  #, gcc-internal-format
  msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
  msgstr "ISO C++ forbyder indlejret type %qD med samme navn som den omgivende klasse"
  
! #: cp/decl.cc:14964
  #, gcc-internal-format
  msgid "%<inline%> specified for friend class declaration"
  msgstr "%<inline%> angivet for friend class-erklÃ¦ring"
  
! #: cp/decl.cc:14972
  #, gcc-internal-format
  msgid "template parameters cannot be friends"
  msgstr "skabelonsparametre kan ikke vÃ¦re venner"
  
! #: cp/decl.cc:14974
  #, gcc-internal-format
  msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
  msgstr "friend-erklÃ¦ring krÃ¦ver klasseangivelse, dvs. %<friend class %T::%D%>"
  
! #: cp/decl.cc:14978
  #, gcc-internal-format
  msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
  msgstr "friend-erklÃ¦ring krÃ¦ver klasseangivelse, dvs. %<friend %#T%>"
  
! #: cp/decl.cc:14991
  #, gcc-internal-format
  msgid "trying to make class %qT a friend of global scope"
  msgstr "forsÃ¸g pÃ¥ at gÃ¸re klassen %qT til ven af det globale virkningsfelt"
  
! #: cp/decl.cc:15011
  #, gcc-internal-format
  msgid "invalid qualifiers on non-member function type"
  msgstr "ugyldige modifikationer for ikke-medlemsfunktionstype"
  
! #: cp/decl.cc:15015
  #, gcc-internal-format
  msgid "requires-clause on type-id"
  msgstr ""
  
! #: cp/decl.cc:15025
  #, fuzzy, gcc-internal-format
  #| msgid "abstract declarator `%T' used as declaration"
  msgid "abstract declarator %qT used as declaration"
  msgstr "abstrakt erklÃ¦rer '%T' benyttet som erklÃ¦ring"
  
! #: cp/decl.cc:15040
  #, fuzzy, gcc-internal-format
  #| msgid "invalid cast to function type `%T'"
  msgid "requires-clause on declaration of non-function type %qT"
  msgstr "ugyldig omtvingelse til funktionstypen '%T'"
  
! #: cp/decl.cc:15059
  #, fuzzy, gcc-internal-format
  #| msgid "cannot use `::' in parameter declaration"
  msgid "cannot use %<::%> in parameter declaration"
  msgstr "kan ikke bruge '::' i parametererklÃ¦ring"
  
! #: cp/decl.cc:15069 cp/parser.cc:21410
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare parameter `%D' to be of type `%T'"
  msgid "cannot declare a parameter with %<decltype(auto)%>"
  msgstr "kan ikke erklÃ¦re parameteren '%D' til at vÃ¦re af typen '%T'"
  
! #: cp/decl.cc:15076
  #, gcc-internal-format
  msgid "missing template argument list after %qE; template placeholder not permitted in parameter"
  msgstr ""
  
! #: cp/decl.cc:15079
  #, gcc-internal-format
  msgid "or use %<auto%> for an abbreviated function template"
  msgstr ""
  
! #: cp/decl.cc:15085 cp/parser.cc:26076
  #, fuzzy, gcc-internal-format
  msgid "%<auto%> parameter not permitted in this context"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: cp/decl.cc:15095
  #, fuzzy, gcc-internal-format
  #| msgid "parameter `%D' declared void"
  msgid "parameter declared %<auto%>"
  msgstr "parameteren '%D' erklÃ¦ret void"
  
! #: cp/decl.cc:15149 cp/parser.cc:3855
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of template-name '%E' in a declarator"
  msgid "invalid use of template-name %qE without an argument list"
  msgstr "ugyldig brug af skabelonsnavn '%E' i erklÃ¦ring"
  
! #: cp/decl.cc:15153
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' has no non-static data member named `%D'"
  msgid "non-static data member declared with placeholder %qT"
  msgstr "'%T' har intet ikke-statisk medlem ved navn '%D'"
  
! #: cp/decl.cc:15173
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support flexible array members"
  msgid "ISO C++ forbids flexible array member %qs"
  msgstr "ISO C90 understÃ¸tter ikke fleksible tabelmedlemmer"
  
! #: cp/decl.cc:15176
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support flexible array members"
  msgid "ISO C++ forbids flexible array members"
  msgstr "ISO C90 understÃ¸tter ikke fleksible tabelmedlemmer"
  
  #. Something like struct S { int N::j; };
! #: cp/decl.cc:15192
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `::'"
  msgid "invalid use of %<::%>"
  msgstr "ugyldig brug af '::'"
  
! #: cp/decl.cc:15213
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of C function `%#D' conflicts with"
  msgid "declaration of function %qD in invalid context"
  msgstr "erklÃ¦ring af C-funktionen '%#D' strider mod"
  
! #: cp/decl.cc:15223
  #, fuzzy, gcc-internal-format
  #| msgid "function `%D' declared virtual inside a union"
  msgid "function %qD declared %<virtual%> inside a union"
  msgstr "funktionen '%D' erklÃ¦ret virtual inden i en union"
  
! #: cp/decl.cc:15233
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' cannot be declared virtual, since it is always static"
  msgid "%qD cannot be declared %<virtual%>, since it is always static"
  msgstr "'%D' kan ikke erklÃ¦res virtual eftersom den altid er statisk"
  
! #: cp/decl.cc:15247
  #, fuzzy, gcc-internal-format
  #| msgid "qualifiers are not allowed on declaration of `operator %T'"
  msgid "expected qualified name in friend declaration for destructor %qD"
  msgstr "modifikationer er ikke tilladt i erklÃ¦ring af 'operator %T'"
  
! #: cp/decl.cc:15254
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%s' shadows a member of `this'"
  msgid "declaration of %qD as member of %qT"
  msgstr "erklÃ¦ring af '%s' skygger for et medlem af 'this'"
  
! #: cp/decl.cc:15261 cp/decl.cc:15274
  #, fuzzy, gcc-internal-format
  #| msgid "destructors may not be `%s'"
  msgid "a destructor cannot be %qs"
  msgstr "destruktionsfunktioner mÃ¥ ikke vÃ¦re '%s'"
  
! #: cp/decl.cc:15280
  #, fuzzy, gcc-internal-format
  #| msgid "qualifiers are not allowed on declaration of `operator %T'"
  msgid "expected qualified name in friend declaration for constructor %qD"
  msgstr "modifikationer er ikke tilladt i erklÃ¦ring af 'operator %T'"
  
! #: cp/decl.cc:15289
  #, fuzzy, gcc-internal-format
  #| msgid "destructors may not be `%s'"
  msgid "a constructor cannot be %<concept%>"
  msgstr "destruktionsfunktioner mÃ¥ ikke vÃ¦re '%s'"
  
! #: cp/decl.cc:15295
  #, fuzzy, gcc-internal-format
  #| msgid "constructor cannot be static member function"
  msgid "a concept cannot be a member function"
  msgstr "konstruktionsfunktionen kan ikke vÃ¦re en statisk medlemsfunktion"
  
! #: cp/decl.cc:15303 cp/decl.cc:15662
  #, fuzzy, gcc-internal-format
  msgid "%qD cannot be %qs"
  msgstr "kan ikke Ã¥bne %s"
  
! #: cp/decl.cc:15313
  #, fuzzy, gcc-internal-format
  #| msgid "specialization of implicitly-declared special member function"
  msgid "specialization of variable template %qD declared as function"
  msgstr "specialisering af underforstÃ¥et erklÃ¦ret speciel medlemsfunktion"
  
! #: cp/decl.cc:15316
  #, fuzzy, gcc-internal-format
  #| msgid "variable or field declared void"
  msgid "variable template declared here"
  msgstr "variabel eller felt erklÃ¦ret void"
  
! #: cp/decl.cc:15381
  #, fuzzy, gcc-internal-format
  #| msgid "field `%D' has incomplete type"
  msgid "field %qD has incomplete type %qT"
  msgstr "feltet '%D' er af en ufuldstÃ¦ndig type"
  
! #: cp/decl.cc:15386
  #, fuzzy, gcc-internal-format
  #| msgid "name `%T' has incomplete type"
  msgid "name %qT has incomplete type"
  msgstr "navnet '%T' er af en ufuldstÃ¦ndig type"
  
! #: cp/decl.cc:15406
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is neither function nor member function; cannot be declared friend"
  msgid "%qE is neither function nor member function; cannot be declared friend"
  msgstr "'%s' er hverken en almindelig funktion eller en medlemsfunktion; kan ikke erklÃ¦res som friend"
  
! #: cp/decl.cc:15409
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is neither function nor member function; cannot be declared friend"
  msgid "unnamed field is neither function nor member function; cannot be declared friend"
  msgstr "'%s' er hverken en almindelig funktion eller en medlemsfunktion; kan ikke erklÃ¦res som friend"
  
! #: cp/decl.cc:15428 cp/parser.cc:21976 cp/parser.cc:28868
  #, gcc-internal-format
  msgid "an attribute that appertains to a friend declaration that is not a definition is ignored"
  msgstr ""
  
! #: cp/decl.cc:15478 cp/decl.cc:15489
  #, fuzzy, gcc-internal-format
  #| msgid "static member `%D' declared `register'"
  msgid "static data member %qE declared %qs"
  msgstr "statisk medlem '%D' erklÃ¦ret 'register'"
  
! #: cp/decl.cc:15483
  #, fuzzy, gcc-internal-format
  #| msgid "invalid in-class initialization of static data member of non-integral type `%T'"
  msgid "%<constexpr%> static data member %qD must have an initializer"
  msgstr "ugyldig tildeling af startvÃ¦rdi i klasse til statisk datamedlem af en ikke-heltalstype '%T'"
  
! #: cp/decl.cc:15526 cp/decl.cc:15534 cp/decl.cc:15541 cp/decl.cc:15548
  #, fuzzy, gcc-internal-format
  #| msgid "static member `%D' declared `register'"
  msgid "non-static data member %qE declared %qs"
  msgstr "statisk medlem '%D' erklÃ¦ret 'register'"
  
! #: cp/decl.cc:15600
  #, fuzzy, gcc-internal-format
  #| msgid "storage class `auto' invalid for function `%s'"
  msgid "storage class %<auto%> invalid for function %qs"
  msgstr "lagringsklassen 'auto' er ugyldig for funktionen '%s'"
  
! #: cp/decl.cc:15603
  #, fuzzy, gcc-internal-format
  #| msgid "storage class `register' invalid for function `%s'"
  msgid "storage class %<register%> invalid for function %qs"
  msgstr "lagringsklassen 'register' er ugyldig for funktionen '%s'"
  
! #: cp/decl.cc:15609
  #, fuzzy, gcc-internal-format
  #| msgid "storage class `__thread' invalid for function `%s'"
  msgid "storage class %<__thread%> invalid for function %qs"
  msgstr "lagringsklassen '__thread' er ugyldig for funktionen '%s'"
  
! #: cp/decl.cc:15613
  #, fuzzy, gcc-internal-format
  #| msgid "storage class `__thread' invalid for function `%s'"
  msgid "storage class %<thread_local%> invalid for function %qs"
  msgstr "lagringsklassen '__thread' er ugyldig for funktionen '%s'"
  
! #: cp/decl.cc:15618
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' can only be specified for functions"
  msgid "%<constinit%> specifier invalid for function %qs"
  msgstr "'%D' kan kun angives for funktioner"
  
! #: cp/decl.cc:15621
  #, fuzzy, gcc-internal-format
  #| msgid "type specifier `%s' not allowed after struct or class"
  msgid "virt-specifiers in %qs not allowed outside a class definition"
  msgstr "typeangivelsen '%s' er ikke tilladt efter struct eller class"
  
! #: cp/decl.cc:15633
  #, fuzzy, gcc-internal-format
  #| msgid "storage class `inline' invalid for function `%s' declared out of global scope"
  msgid "%<static%> specifier invalid for function %qs declared out of global scope"
  msgstr "lagringsklassen 'inline' er ugyldig for funktionen '%s' erklÃ¦ret uden for det globale virkefelt"
  
! #: cp/decl.cc:15637
  #, fuzzy, gcc-internal-format
  #| msgid "storage class `inline' invalid for function `%s' declared out of global scope"
  msgid "%<inline%> specifier invalid for function %qs declared out of global scope"
  msgstr "lagringsklassen 'inline' er ugyldig for funktionen '%s' erklÃ¦ret uden for det globale virkefelt"
  
! #: cp/decl.cc:15645
  #, fuzzy, gcc-internal-format
  #| msgid "virtual non-class function `%s'"
  msgid "virtual non-class function %qs"
  msgstr "virtuel funktion '%s' tilhÃ¸rer ikke en klasse"
  
! #: cp/decl.cc:15652
  #, fuzzy, gcc-internal-format
  #| msgid "method definition not in class context"
  msgid "%qs defined in a non-class scope"
  msgstr "metodedefinitionen optrÃ¦der ikke i en klassekontekst"
  
! #: cp/decl.cc:15653
  #, fuzzy, gcc-internal-format
  #| msgid "using-declaration for non-member at class scope"
  msgid "%qs declared in a non-class scope"
  msgstr "using-erklÃ¦ring for ikke-medlem ved klassevirkefelt"
  
! #: cp/decl.cc:15696
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare member function `%D' to have static linkage"
  msgid "cannot declare member function %qD to have static linkage"
  msgstr "kan ikke erklÃ¦re medlemsfunktion '%D' til at have statisk kÃ¦dning"
  
! #: cp/decl.cc:15705
  #, gcc-internal-format
  msgid "cannot declare static function inside another function"
  msgstr "kan ikke erklÃ¦re en funktion for static inden i en anden funktion"
  
! #: cp/decl.cc:15746
  #, fuzzy, gcc-internal-format
  #| msgid "`static' may not be used when defining (as opposed to declaring) a static data member"
  msgid "%<static%> may not be used when defining (as opposed to declaring) a static data member"
  msgstr "'static' mÃ¥ ikke bruges ved definering (i modsÃ¦tning til erklÃ¦ring) af et statisk datamedlem"
  
! #: cp/decl.cc:15753
  #, fuzzy, gcc-internal-format
  #| msgid "static member `%D' declared `register'"
  msgid "static member %qD declared %<register%>"
  msgstr "statisk medlem '%D' erklÃ¦ret 'register'"
  
! #: cp/decl.cc:15759
  #, fuzzy, gcc-internal-format
  #| msgid "cannot explicitly declare member `%#D' to have extern linkage"
  msgid "cannot explicitly declare member %q#D to have extern linkage"
  msgstr "kan ikke eksplicit erklÃ¦re medlemmet '%#D' til at have extern-kÃ¦dning"
  
! #: cp/decl.cc:15767
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%#D' outside of class is not definition"
  msgid "declaration of %<constexpr%> variable %qD is not a definition"
  msgstr "erklÃ¦ring af '%#D' uden for en klasse er ikke en definition"
  
! #: cp/decl.cc:15774
  #, fuzzy, gcc-internal-format
  #| msgid "template parameters cannot be friends"
  msgid "a variable cannot be declared %<consteval%>"
  msgstr "skabelonsparametre kan ikke vÃ¦re venner"
  
! #: cp/decl.cc:15806
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' initialized and declared `extern'"
  msgid "%qs initialized and declared %<extern%>"
  msgstr "'%s' bliver tildelt en startvÃ¦rdi og er samtidig erklÃ¦ret 'extern'"
  
! #: cp/decl.cc:15811
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' has both `extern' and initializer"
  msgid "%qs has both %<extern%> and initializer"
  msgstr "'%s' er erklÃ¦ret 'extern', men bliver tildelt en startvÃ¦rdi"
  
! #: cp/decl.cc:16013
  #, fuzzy, gcc-internal-format
  #| msgid "default argument `%E' uses local variable `%D'"
  msgid "default argument %qE uses %qD"
  msgstr "standardparameter '%E' bruger lokal variabel '%D'"
  
! #: cp/decl.cc:16016
  #, fuzzy, gcc-internal-format
  #| msgid "default argument `%E' uses local variable `%D'"
  msgid "default argument %qE uses local variable %qD"
  msgstr "standardparameter '%E' bruger lokal variabel '%D'"
  
! #: cp/decl.cc:16143
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `virtual' in template declaration of `%#D'"
  msgid "invalid use of cv-qualified type %qT in parameter declaration"
  msgstr "ugyldig brug af 'virtual' i skabelonserklÃ¦ring af '%#D'"
  
! #: cp/decl.cc:16147
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of template-name '%E' in a declarator"
  msgid "invalid use of type %<void%> in parameter declaration"
  msgstr "ugyldig brug af skabelonsnavn '%E' i erklÃ¦ring"
  
! #: cp/decl.cc:16176
  #, fuzzy, gcc-internal-format
  #| msgid "invalid parameter type `%T'"
  msgid "%<volatile%>-qualified parameter is deprecated"
  msgstr "ugyldig parametertype '%T'"
  
! #: cp/decl.cc:16184
  #, fuzzy, gcc-internal-format
  #| msgid "parameter `%D' invalidly declared method type"
  msgid "parameter %qD invalidly declared method type"
  msgstr "parameteren '%D' er pÃ¥ ugyldig vis erklÃ¦ret som af en medlemsfunktionstype"
  
! #: cp/decl.cc:16209
  #, fuzzy, gcc-internal-format
  #| msgid "parameter `%D' includes %s to array of unknown bound `%T'"
  msgid "parameter %qD includes pointer to array of unknown bound %qT"
  msgstr "parameteren '%D' inkluderer %s til tabel med ukendt grÃ¦nse '%T'"
  
! #: cp/decl.cc:16211
  #, fuzzy, gcc-internal-format
  #| msgid "parameter `%D' includes %s to array of unknown bound `%T'"
  msgid "parameter %qD includes reference to array of unknown bound %qT"
  msgstr "parameteren '%D' inkluderer %s til tabel med ukendt grÃ¦nse '%T'"
  
! #: cp/decl.cc:16494
  #, fuzzy, gcc-internal-format
  #| msgid "invalid constructor; you probably meant `%T (const %T&)'"
  msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
  msgstr "ugyldig konstruktionsfunktion; du mente sandsynligvis '%T (const %T&)'"
  
! #: cp/decl.cc:16573
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' was not declared in this scope"
  msgid "%qD may not be declared within a namespace"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: cp/decl.cc:16580
  #, fuzzy, gcc-internal-format
  msgid "%qD may not be declared as static"
  msgstr "'%#D' kan ikke erklÃ¦res"
  
! #: cp/decl.cc:16638
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must be a nonstatic member function"
  msgid "%qD must be a non-static member function"
  msgstr "'%D' skal vÃ¦re en ikke-statisk medlemsfunktion"
  
! #: cp/decl.cc:16646
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must be a nonstatic member function"
  msgid "%qD must be a member function"
  msgstr "'%D' skal vÃ¦re en ikke-statisk medlemsfunktion"
  
! #: cp/decl.cc:16654
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "%qD may be a static member function only with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/decl.cc:16664
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must be either a non-static member function or a non-member function"
  msgid "%qD must be either a non-static member function or a non-member function"
  msgstr "'%D' skal enten vÃ¦re en ikke-statisk medlemsfunktion eller ikke en medlemsfunktion"
  
! #: cp/decl.cc:16674
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must have an argument of class or enumerated type"
  msgid "%qD must have an argument of class or enumerated type"
  msgstr "'%D' skal have en parameter af en klasse- eller enum-type"
  
  #. 13.4.0.3
! #: cp/decl.cc:16705
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ prohibits overloading operator ?:"
  msgid "ISO C++ prohibits overloading %<operator ?:%>"
  msgstr "ISO C++ forbyder flertydiggÃ¸relse af operatoren ?:"
  
! #: cp/decl.cc:16715
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must take either one or two arguments"
  msgid "%qD must not have variable number of arguments"
  msgstr "'%D' skal tage mod Ã©n eller to parametre"
  
! #: cp/decl.cc:16741
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must take either zero or one argument"
  msgid "%qD must have either zero or one argument"
  msgstr "'%D' skal tage mod nul eller Ã©n parameter"
  
! #: cp/decl.cc:16742
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must take either one or two arguments"
  msgid "%qD must have either one or two arguments"
  msgstr "'%D' skal tage mod Ã©n eller to parametre"
  
! #: cp/decl.cc:16754
  #, fuzzy, gcc-internal-format
  #| msgid "postfix `%D' must take `int' as its argument"
  msgid "postfix %qD must have %<int%> as its argument"
  msgstr "postfiks '%D' skal tage mod 'int' som parameter"
  
! #: cp/decl.cc:16755
  #, fuzzy, gcc-internal-format
  #| msgid "postfix `%D' must take `int' as its second argument"
  msgid "postfix %qD must have %<int%> as its second argument"
  msgstr "postfiks '%D' skal tage mod 'int' som den anden parameter"
  
! #: cp/decl.cc:16766
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must take exactly two arguments"
  msgid "%qD must have no arguments"
  msgstr "'%s' skal tage mod to parametre"
  
! #: cp/decl.cc:16767 cp/decl.cc:16777
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must take exactly one argument"
  msgid "%qD must have exactly one argument"
  msgstr "'%s' skal tage mod Ã©n parameter"
  
! #: cp/decl.cc:16778
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must take exactly two arguments"
  msgid "%qD must have exactly two arguments"
  msgstr "'%s' skal tage mod to parametre"
  
! #: cp/decl.cc:16793
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' cannot have default arguments"
  msgid "%qD cannot have default arguments"
  msgstr "'%D' kan ikke have standardparametre"
  
! #: cp/decl.cc:16817
  #, fuzzy, gcc-internal-format
  #| msgid "conversion to %s%s will never use a type conversion operator"
  msgid "converting %qT to %<void%> will never use a type conversion operator"
  msgstr "konvertering til %s%s vil aldrig bruge en typekonverteringsoperator"
  
! #: cp/decl.cc:16824
  #, fuzzy, gcc-internal-format
  #| msgid "conversion to %s%s will never use a type conversion operator"
  msgid "converting %qT to a reference to the same type will never use a type conversion operator"
  msgstr "konvertering til %s%s vil aldrig bruge en typekonverteringsoperator"
  
! #: cp/decl.cc:16826
  #, fuzzy, gcc-internal-format
  #| msgid "conversion to %s%s will never use a type conversion operator"
  msgid "converting %qT to the same type will never use a type conversion operator"
  msgstr "konvertering til %s%s vil aldrig bruge en typekonverteringsoperator"
  
! #: cp/decl.cc:16835
  #, fuzzy, gcc-internal-format
  #| msgid "conversion to %s%s will never use a type conversion operator"
  msgid "converting %qT to a reference to a base class %qT will never use a type conversion operator"
  msgstr "konvertering til %s%s vil aldrig bruge en typekonverteringsoperator"
  
! #: cp/decl.cc:16837
  #, fuzzy, gcc-internal-format
  #| msgid "conversion to %s%s will never use a type conversion operator"
  msgid "converting %qT to a base class %qT will never use a type conversion operator"
  msgstr "konvertering til %s%s vil aldrig bruge en typekonverteringsoperator"
  
! #: cp/decl.cc:16853
  #, fuzzy, gcc-internal-format
  #| msgid "user-defined `%D' always evaluates both arguments"
  msgid "user-defined %qD always evaluates both arguments"
  msgstr "brugerdefineret '%D' evaluerer altid begge parametre"
  
! #: cp/decl.cc:16872
  #, fuzzy, gcc-internal-format
  #| msgid "prefix `%D' should return `%T'"
  msgid "prefix %qD should return %qT"
  msgstr "prÃ¦fiks '%D' skal returnere '%T'"
  
! #: cp/decl.cc:16879
  #, fuzzy, gcc-internal-format
  #| msgid "postfix `%D' should return `%T'"
  msgid "postfix %qD should return %qT"
  msgstr "postfiks '%D' skal returnere '%T'"
  
! #: cp/decl.cc:16891
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' should return by value"
  msgid "%qD should return by value"
  msgstr "'%D' skal returnere pr. vÃ¦rdi (ikke reference)"
  
! #: cp/decl.cc:16946
  #, fuzzy, gcc-internal-format
  #| msgid "using template type parameter `%T' after `%s'"
  msgid "using template type parameter %qT after %qs"
  msgstr "bruger skabelonstypeparameter '%D' efter '%s'"
  
! #: cp/decl.cc:16970
  #, fuzzy, gcc-internal-format
  #| msgid "ambiguous template specialization `%D' for `%+D'"
  msgid "using alias template specialization %qT after %qs"
  msgstr "tvetydig skabelonsspecialisering '%D' for '%+D'"
  
! #: cp/decl.cc:16973
  #, fuzzy, gcc-internal-format
  #| msgid "using typedef-name `%D' after `%s'"
  msgid "using typedef-name %qD after %qs"
  msgstr "bruger typedef-navn '%D' efter '%s'"
  
! #: cp/decl.cc:16975
  #, fuzzy, gcc-internal-format
  msgid "%qD has a previous declaration here"
  msgstr "tidligere erklÃ¦ring som '%#D'"
  
! #: cp/decl.cc:16984
  #, fuzzy, gcc-internal-format
  msgid "%qT referred to as %qs"
  msgstr "'%#D' omerklÃ¦ret som %C"
  
! #: cp/decl.cc:16985 cp/decl.cc:16993
  #, fuzzy, gcc-internal-format
  msgid "%qT has a previous declaration here"
  msgstr "dette er en tidligere erklÃ¦ring"
  
! #: cp/decl.cc:16992
  #, fuzzy, gcc-internal-format
  msgid "%qT referred to as enum"
  msgstr "'%#D' omerklÃ¦ret som %C"
--- 62733,64742 ----
  msgstr[0] "lagringsklasse angivet for strukturfelt '%s'"
  msgstr[1] "lagringsklasse angivet for strukturfelt '%s'"
  
! #: cp/decl.cc:9922
  #, gcc-internal-format, gfc-internal-format
  msgid "only %u name provided for structured binding"
  msgid_plural "only %u names provided for structured binding"
  msgstr[0] ""
  msgstr[1] ""
  
! #: cp/decl.cc:9925
  #, gcc-internal-format
  msgid "while %qT decomposes into %wu element"
  msgid_plural "while %qT decomposes into %wu elements"
  msgstr[0] ""
  msgstr[1] ""
  
! #: cp/decl.cc:9966
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 forbids variable-size array `%s'"
  msgid "cannot decompose variable length vector %qT"
  msgstr "ISO C90 forbyder tabellen '%s' med variabel stÃ¸rrelse"
  
! #: cp/decl.cc:9990
  #, fuzzy, gcc-internal-format
  #| msgid "size of array is not an integral constant-expression"
  msgid "%<std::tuple_size<%T>::value%> is not an integral constant expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: cp/decl.cc:10000
  #, gcc-internal-format
  msgid "while %qT decomposes into %E elements"
  msgstr ""
  
! #: cp/decl.cc:10047
  #, gcc-internal-format
  msgid "%<std::tuple_element<%u, %T>::type%> is %<void%>"
  msgstr ""
  
! #: cp/decl.cc:10053
  #, fuzzy, gcc-internal-format
  #| msgid "invalid vector type for attribute `%s'"
  msgid "in initialization of structured binding variable %qD"
  msgstr "ugyldig vektortype for egenskaben '%s'"
  
! #: cp/decl.cc:10082
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare bit-field `%D' with function type"
  msgid "cannot decompose union type %qT"
  msgstr "kan ikke erklÃ¦re bitfelt '%D' med funktionstype"
  
! #: cp/decl.cc:10087
  #, fuzzy, gcc-internal-format
  #| msgid "creating pointer to member of non-class type `%T'"
  msgid "cannot decompose non-array non-class type %qT"
  msgstr "opretter henvisning til medlem af typen '%T' der ikke er en klasse"
  
! #: cp/decl.cc:10093
  #, fuzzy, gcc-internal-format
  #| msgid "dereferencing pointer to incomplete type"
  msgid "structured binding refers to incomplete class type %qT"
  msgstr "forsÃ¸g pÃ¥ at fÃ¸lge en henvisning til en variabel af en ufuldstÃ¦ndig type"
  
! #: cp/decl.cc:10102
  #, fuzzy, gcc-internal-format
  msgid "cannot decompose class type %qT without non-static data members"
  msgstr "ugyldig brug af ikke-statisk felt '%D'"
  
! #: cp/decl.cc:10598
  #, gcc-internal-format
  msgid "non-local variable %qD declared %<__thread%> needs dynamic initialization"
  msgstr ""
  
! #: cp/decl.cc:10601
  #, gcc-internal-format
  msgid "non-local variable %qD declared %<__thread%> has a non-trivial destructor"
  msgstr ""
  
! #: cp/decl.cc:10606
  #, gcc-internal-format
  msgid "C++11 %<thread_local%> allows dynamic initialization and destruction"
  msgstr ""
  
! #: cp/decl.cc:10825
  #, fuzzy, gcc-internal-format
  #| msgid "initializer fails to determine size of `%D'"
  msgid "initializer fails to determine size of %qT"
  msgstr "startvÃ¦rdien giver ikke stÃ¸rrelsen af '%D'"
  
! #: cp/decl.cc:10829
  #, fuzzy, gcc-internal-format
  #| msgid "array size missing in `%D'"
  msgid "array size missing in %qT"
  msgstr "tabelstÃ¸rrelsen mangler i '%D'"
  
! #: cp/decl.cc:10832
  #, fuzzy, gcc-internal-format
  #| msgid "zero-size array `%D'"
  msgid "zero-size array %qT"
  msgstr "nulstÃ¸rrelsestabel '%D'"
  
! #: cp/decl.cc:10848
  #, fuzzy, gcc-internal-format
  #| msgid "destructor for alien class `%T' cannot be a member"
  msgid "destructor for alien class %qT cannot be a member"
  msgstr "destruktionsfunktionen for den fremmede klasse '%T' kan ikke vÃ¦re et medlem"
  
! #: cp/decl.cc:10850
  #, fuzzy, gcc-internal-format
  #| msgid "constructor for alien class `%T' cannot be a member"
  msgid "constructor for alien class %qT cannot be a member"
  msgstr "konstruktionsfunktionen for den fremmede klasse '%T' kan ikke vÃ¦re et medlem"
  
! #: cp/decl.cc:10876
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' declared as a `virtual' %s"
  msgid "%qD declared as a %<virtual%> variable"
  msgstr "'%D' erklÃ¦ret som 'virtual' %s"
  
  # %s bliver omsat til typen
! #: cp/decl.cc:10878
  #, fuzzy, gcc-internal-format
  #| msgid "`const' and `volatile' function specifiers on `%D' invalid in %s declaration"
  msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in variable declaration"
  msgstr "'const'- og 'volatile'-funktionsangivelser til '%D' er ugyldigt i erklÃ¦ring af %s"
  
! #: cp/decl.cc:10884
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' declared as a `virtual' %s"
  msgid "%qD declared as a %<virtual%> parameter"
  msgstr "'%D' erklÃ¦ret som 'virtual' %s"
  
! #: cp/decl.cc:10887
  #, fuzzy, gcc-internal-format
  msgid "%qD declared as an %<inline%> parameter"
  msgstr "'%D' er erklÃ¦ret som en ven"
  
  # %s bliver omsat til typen
! #: cp/decl.cc:10889
  #, fuzzy, gcc-internal-format
  #| msgid "`const' and `volatile' function specifiers on `%D' invalid in %s declaration"
  msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter declaration"
  msgstr "'const'- og 'volatile'-funktionsangivelser til '%D' er ugyldigt i erklÃ¦ring af %s"
  
! #: cp/decl.cc:10895
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' declared as a `virtual' %s"
  msgid "%qD declared as a %<virtual%> type"
  msgstr "'%D' erklÃ¦ret som 'virtual' %s"
  
! #: cp/decl.cc:10898
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' declared as an `inline' %s"
  msgid "%qD declared as an %<inline%> type"
  msgstr "'%D' erklÃ¦ret som 'inline' %s"
  
  # %s bliver omsat til typen
! #: cp/decl.cc:10900
  #, fuzzy, gcc-internal-format
  #| msgid "`const' and `volatile' function specifiers on `%D' invalid in %s declaration"
  msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in type declaration"
  msgstr "'const'- og 'volatile'-funktionsangivelser til '%D' er ugyldigt i erklÃ¦ring af %s"
  
! #: cp/decl.cc:10906
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' declared as a `virtual' %s"
  msgid "%qD declared as a %<virtual%> field"
  msgstr "'%D' erklÃ¦ret som 'virtual' %s"
  
! #: cp/decl.cc:10909
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' declared as an `inline' %s"
  msgid "%qD declared as an %<inline%> field"
  msgstr "'%D' erklÃ¦ret som 'inline' %s"
  
  # %s bliver omsat til typen
! #: cp/decl.cc:10911
  #, fuzzy, gcc-internal-format
  #| msgid "`const' and `volatile' function specifiers on `%D' invalid in %s declaration"
  msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in field declaration"
  msgstr "'const'- og 'volatile'-funktionsangivelser til '%D' er ugyldigt i erklÃ¦ring af %s"
  
! #: cp/decl.cc:10918
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' declared as a friend"
  msgid "%q+D declared as a friend"
  msgstr "'%D' er erklÃ¦ret som en ven"
  
! #: cp/decl.cc:10925
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' declared with an exception specification"
  msgid "%q+D declared with an exception specification"
  msgstr "'%D' erklÃ¦ret med en undtagelsesspecifikation"
  
! #: cp/decl.cc:10957
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%D' not in a namespace surrounding `%D'"
  msgid "definition of %qD is not in namespace enclosing %qT"
  msgstr "erklÃ¦ring af '%D' er ikke i et navnerum der omgiver '%D'"
  
! #: cp/decl.cc:10997
  #, fuzzy, gcc-internal-format
  #| msgid "static member function `%#D' declared with type qualifiers"
  msgid "static member function %q#D declared with type qualifiers"
  msgstr "statisk medlemsfunktion '%#D' erklÃ¦ret med typemodifikationer"
  
! #: cp/decl.cc:11073
  #, fuzzy, gcc-internal-format
  msgid "function concepts are no longer supported"
  msgstr "--driver understÃ¸ttes ikke lÃ¦ngere"
  
! #: cp/decl.cc:11111
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a member template function"
  msgid "constraints on a non-templated function"
  msgstr "'%D' er ikke en medlemsskabelonfunktion"
  
! #: cp/decl.cc:11113
  #, fuzzy, gcc-internal-format
  #| msgid "friend declaration not in class definition"
  msgid "constrained non-template friend declaration must be a definition"
  msgstr "friend-erklÃ¦ringen er ikke i klassedefinitionen"
  
! #: cp/decl.cc:11120
  #, gcc-internal-format
  msgid "friend function template with constraints that depend on outer template parameters must be a definition"
  msgstr ""
  
! #: cp/decl.cc:11172
  #, fuzzy, gcc-internal-format
  #| msgid "defining explicit specialization `%D' in friend declaration"
  msgid "defining explicit specialization %qD in friend declaration"
  msgstr "definering af eksplicit specialisering '%D' i friend-erklÃ¦ring"
  
! #: cp/decl.cc:11183
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of template-id `%D' in declaration of primary template"
  msgid "invalid use of template-id %qD in declaration of primary template"
  msgstr "ugyldig brug af skabelons-id '%D' i erklÃ¦ring af primÃ¦r skabelon"
  
! #: cp/decl.cc:11201
  #, fuzzy, gcc-internal-format
  #| msgid "default arguments are not allowed in declaration of friend template specialization `%D'"
  msgid "default arguments are not allowed in declaration of friend template specialization %qD"
  msgstr "standardparametre er ikke tilladt i erklÃ¦ring af venneskabelonsspecialisering '%D'"
  
! #: cp/decl.cc:11210
  #, fuzzy, gcc-internal-format
  #| msgid "`inline' is not allowed in declaration of friend template specialization `%D'"
  msgid "%<inline%> is not allowed in declaration of friend template specialization %qD"
  msgstr "'inline' er ikke tilladt i erklÃ¦ring venneskabelonsspecialisering '%D'"
  
  #. diagnostic_option_id=
! #: cp/decl.cc:11241
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%#D' outside of class is not definition"
  msgid "friend declaration of %qD specifies default arguments and isn%'t a definition"
  msgstr "erklÃ¦ring af '%#D' uden for en klasse er ikke en definition"
  
! #: cp/decl.cc:11283
  #, gcc-internal-format
  msgid "cannot declare %<::main%> to be a template"
  msgstr "kan ikke erklÃ¦re %<::main%> som en skabelon"
  
! #: cp/decl.cc:11286
  #, gcc-internal-format
  msgid "cannot declare %<::main%> to be inline"
  msgstr "kan ikke erklÃ¦re %<::main%> som indlejret"
  
! #: cp/decl.cc:11289 cp/decl.cc:11292
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare `::main' to be static"
  msgid "cannot declare %<::main%> to be %qs"
  msgstr "kan ikke erklÃ¦re '::main' som statisk"
  
! #: cp/decl.cc:11294
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare `::main' to be static"
  msgid "cannot declare %<::main%> to be static"
  msgstr "kan ikke erklÃ¦re '::main' som statisk"
  
! #: cp/decl.cc:11296
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare `::main' to be static"
  msgid "cannot declare %<::main%> with a linkage specification"
  msgstr "kan ikke erklÃ¦re '::main' som statisk"
  
! #: cp/decl.cc:11299
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare %<::main%> to be a template"
  msgid "cannot attach %<::main%> to a named module"
  msgstr "kan ikke erklÃ¦re %<::main%> som en skabelon"
  
! #: cp/decl.cc:11358
  #, fuzzy, gcc-internal-format
  #| msgid "%smember function `%D' cannot have `%T' method qualifier"
  msgid "non-member function %qD cannot have cv-qualifier"
  msgstr "%smedlemsfunktion '%D' kan ikke have metodemodifikationen '%T'"
  
! #: cp/decl.cc:11360
  #, fuzzy, gcc-internal-format
  #| msgid "%smember function `%D' cannot have `%T' method qualifier"
  msgid "static member function %qD cannot have cv-qualifier"
  msgstr "%smedlemsfunktion '%D' kan ikke have metodemodifikationen '%T'"
  
! #: cp/decl.cc:11361
  #, fuzzy, gcc-internal-format
  #| msgid "%smember function `%D' cannot have `%T' method qualifier"
  msgid "explicit object member function %qD cannot have cv-qualifier"
  msgstr "%smedlemsfunktion '%D' kan ikke have metodemodifikationen '%T'"
  
! #: cp/decl.cc:11366
  #, fuzzy, gcc-internal-format
  #| msgid "%smember function `%D' cannot have `%T' method qualifier"
  msgid "non-member function %qD cannot have ref-qualifier"
  msgstr "%smedlemsfunktion '%D' kan ikke have metodemodifikationen '%T'"
  
! #: cp/decl.cc:11368
  #, fuzzy, gcc-internal-format
  #| msgid "%smember function `%D' cannot have `%T' method qualifier"
  msgid "static member function %qD cannot have ref-qualifier"
  msgstr "%smedlemsfunktion '%D' kan ikke have metodemodifikationen '%T'"
  
! #: cp/decl.cc:11369
  #, fuzzy, gcc-internal-format
  #| msgid "%smember function `%D' cannot have `%T' method qualifier"
  msgid "explicit object member function %qD cannot have ref-qualifier"
  msgstr "%smedlemsfunktion '%D' kan ikke have metodemodifikationen '%T'"
  
! #: cp/decl.cc:11375 cp/decl.cc:14308 cp/decl.cc:14318 cp/parser.cc:12370
  #, fuzzy, gcc-internal-format
  #| msgid "template parameter type `%T' declared `friend'"
  msgid "explicit object parameter declared here"
  msgstr "skabelonsparametertypen '%T' erklÃ¦ret 'friend'"
  
! #: cp/decl.cc:11388
  #, fuzzy, gcc-internal-format
  #| msgid "specialization of %D after instantiation"
  msgid "deduction guide %qD must be declared in the same scope as %qT"
  msgstr "specialisering af '%D' efter instantiering"
  
! #: cp/decl.cc:11390 cp/decl.cc:11399 cp/typeck.cc:4783
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "  declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/decl.cc:11397
  #, fuzzy, gcc-internal-format
  #| msgid "specialization of %D after instantiation"
  msgid "deduction guide %qD must have the same access as %qT"
  msgstr "specialisering af '%D' efter instantiering"
  
! #: cp/decl.cc:11403
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%D' as non-function"
  msgid "deduction guide %qD must not have a function body"
  msgstr "erklÃ¦ring af '%D' som ikke-funktion"
  
! #: cp/decl.cc:11417
  #, fuzzy, gcc-internal-format
  #| msgid "template with C linkage"
  msgid "literal operator with C linkage"
  msgstr "skabelon med C-kÃ¦dning"
  
! #: cp/decl.cc:11427
  #, fuzzy, gcc-internal-format
  #| msgid "#%s with invalid argument"
  msgid "%qD has invalid argument list"
  msgstr "#%s med ugyldig parameter"
  
! #: cp/decl.cc:11435
  #, gcc-internal-format
  msgid "integer suffix %qs shadowed by implementation"
  msgstr ""
  
! #: cp/decl.cc:11441
  #, gcc-internal-format
  msgid "floating-point suffix %qs shadowed by implementation"
  msgstr ""
  
! #: cp/decl.cc:11448
  #, gcc-internal-format
  msgid "literal operator suffixes not preceded by %<_%> are reserved for future standardization"
  msgstr ""
  
! #: cp/decl.cc:11453
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must be a nonstatic member function"
  msgid "%qD must be a non-member function"
  msgstr "'%D' skal vÃ¦re en ikke-statisk medlemsfunktion"
  
! #: cp/decl.cc:11538
  #, fuzzy, gcc-internal-format
  #| msgid "`main' must return `int'"
  msgid "%<::main%> must return %<int%>"
  msgstr "'main' skal returnere typen 'int'"
  
! #: cp/decl.cc:11578
  #, fuzzy, gcc-internal-format
  #| msgid "definition of implicitly-declared `%D'"
  msgid "definition of implicitly-declared %qD"
  msgstr "definition af underforstÃ¥et-erklÃ¦ret '%D'"
  
! #: cp/decl.cc:11584
  #, fuzzy, gcc-internal-format
  #| msgid "definition of implicitly-declared `%D'"
  msgid "definition of explicitly-defaulted %q+D"
  msgstr "definition af underforstÃ¥et-erklÃ¦ret '%D'"
  
! #: cp/decl.cc:11586
  #, fuzzy, gcc-internal-format
  #| msgid "`%#D' previously defined here"
  msgid "%q#D explicitly defaulted here"
  msgstr "'%#D' tidligere defineret her"
  
! #: cp/decl.cc:11603
  #, fuzzy, gcc-internal-format
  #| msgid "no `%#D' member function declared in class `%T'"
  msgid "no %q#D member function declared in class %qT"
  msgstr "ingen medlemsfunktion '%#D' erklÃ¦ret i klassen '%T'"
  
! #: cp/decl.cc:11800
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare `::main' to be a template"
  msgid "cannot declare %<::main%> to be a global variable"
  msgstr "kan ikke erklÃ¦re '::main' som en skabelon"
  
! #: cp/decl.cc:11803
  #, gcc-internal-format
  msgid "an entity named %<main%> cannot be declared with C language linkage"
  msgstr ""
  
! #: cp/decl.cc:11812
  #, fuzzy, gcc-internal-format
  #| msgid "destructors may not be `%s'"
  msgid "a non-template variable cannot be %<concept%>"
  msgstr "destruktionsfunktioner mÃ¥ ikke vÃ¦re '%s'"
  
! #: cp/decl.cc:11815
  #, fuzzy, gcc-internal-format
  #| msgid "specialization of %D after instantiation"
  msgid "concept must be defined at namespace scope"
  msgstr "specialisering af '%D' efter instantiering"
  
! #: cp/decl.cc:11818
  #, fuzzy, gcc-internal-format
  msgid "variable concepts are no longer supported"
  msgstr "--driver understÃ¸ttes ikke lÃ¦ngere"
  
! #: cp/decl.cc:11939
  #, fuzzy, gcc-internal-format
  #| msgid "invalid in-class initialization of static data member of non-integral type `%T'"
  msgid "in-class initialization of static data member %q#D of incomplete type"
  msgstr "ugyldig tildeling af startvÃ¦rdi i klasse til statisk datamedlem af en ikke-heltalstype '%T'"
  
! #: cp/decl.cc:11943
  #, fuzzy, gcc-internal-format
  #| msgid "invalid in-class initialization of static data member of non-integral type `%T'"
  msgid "%<constexpr%> needed for in-class initialization of static data member %q#D of non-integral type"
  msgstr "ugyldig tildeling af startvÃ¦rdi i klasse til statisk datamedlem af en ikke-heltalstype '%T'"
  
! #: cp/decl.cc:11947
  #, fuzzy, gcc-internal-format
  #| msgid "invalid in-class initialization of static data member of non-integral type `%T'"
  msgid "in-class initialization of static data member %q#D of non-literal type"
  msgstr "ugyldig tildeling af startvÃ¦rdi i klasse til statisk datamedlem af en ikke-heltalstype '%T'"
  
! #: cp/decl.cc:11958
  #, fuzzy, gcc-internal-format
  #| msgid "invalid in-class initialization of static data member of non-integral type `%T'"
  msgid "invalid in-class initialization of static data member of non-integral type %qT"
  msgstr "ugyldig tildeling af startvÃ¦rdi i klasse til statisk datamedlem af en ikke-heltalstype '%T'"
  
! #: cp/decl.cc:11963
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids in-class initialization of non-const static member `%D'"
  msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
  msgstr "ISO C++ forbyder tildeling af startvÃ¦rdi i klasse til ikke-konstant statisk medlem '%D'"
  
! #: cp/decl.cc:11968
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids initialization of member constant `%D' of non-integral type `%T'"
  msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT"
  msgstr "ISO C++ forbyder tildeling af startvÃ¦rdi til medlemskonstant '%D' af en ikke-heltallig type"
  
! #: cp/decl.cc:12080
  #, fuzzy, gcc-internal-format
  msgid "size of array %qD has non-integral type %qT"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af en heltalstype"
  
! #: cp/decl.cc:12083
  #, fuzzy, gcc-internal-format
  msgid "size of array has non-integral type %qT"
  msgstr "stÃ¸rrelsen af tabel er ikke af en heltalstype"
  
! #: cp/decl.cc:12114 cp/decl.cc:12186
  #, fuzzy, gcc-internal-format
  #| msgid "size of array `%D' is not an integral constant-expression"
  msgid "size of array %qD is not an integral constant-expression"
  msgstr "stÃ¸rrelsen af tabellen '%D' er ikke af et heltalligt konstantudtryk"
  
! #: cp/decl.cc:12118 cp/decl.cc:12189
  #, gcc-internal-format
  msgid "size of array is not an integral constant-expression"
  msgstr "stÃ¸rrelsen af tabel er ikke af et heltalligt konstantudtryk"
  
! #: cp/decl.cc:12169
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids zero-size array `%D'"
  msgid "ISO C++ forbids zero-size array %qD"
  msgstr "ISO C++ forbyder tabellen '%D' med stÃ¸rrelsen nul"
  
! #: cp/decl.cc:12172
  #, gcc-internal-format
  msgid "ISO C++ forbids zero-size array"
  msgstr "ISO C++ forbyder tabel med stÃ¸rrelsen nul"
  
! #: cp/decl.cc:12196
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids variable-size array `%D'"
  msgid "ISO C++ forbids variable length array %qD"
  msgstr "ISO C++ forbyder tabellen '%D' med variabel stÃ¸rrelse"
  
! #: cp/decl.cc:12199
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids variable-size array"
  msgid "ISO C++ forbids variable length array"
  msgstr "ISO C++ forbyder tabel med variabel stÃ¸rrelse"
  
! #: cp/decl.cc:12205
  #, gcc-internal-format
  msgid "variable length array %qD is used"
  msgstr ""
  
! #: cp/decl.cc:12208
  #, gcc-internal-format
  msgid "variable length array is used"
  msgstr ""
  
! #: cp/decl.cc:12260
  #, gcc-internal-format
  msgid "overflow in array dimension"
  msgstr "tabeldimension for stor"
  
! #: cp/decl.cc:12320
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' declared as a friend"
  msgid "%qD declared as array of template placeholder type %qT"
  msgstr "'%D' er erklÃ¦ret som en ven"
  
! #: cp/decl.cc:12323
  #, fuzzy, gcc-internal-format
  #| msgid "creating pointer to member reference type `%T'"
  msgid "creating array of template placeholder type %qT"
  msgstr "opretter henvisning til medlemsreference af typen '%T'"
  
! #: cp/decl.cc:12333
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%s' as array of voids"
  msgid "declaration of %qD as array of void"
  msgstr "'%s' erklÃ¦ret som en tabel af void"
  
! #: cp/decl.cc:12335
  #, fuzzy, gcc-internal-format
  #| msgid "creating array of `%T'"
  msgid "creating array of void"
  msgstr "opretter tabel af '%T'"
  
! #: cp/decl.cc:12340
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%s' as array of functions"
  msgid "declaration of %qD as array of functions"
  msgstr "'%s' erklÃ¦ret som en tabel af funktioner"
  
! #: cp/decl.cc:12342
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%s' as array of functions"
  msgid "creating array of functions"
  msgstr "'%s' erklÃ¦ret som en tabel af funktioner"
  
! #: cp/decl.cc:12347
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%s' as array of functions"
  msgid "declaration of %qD as array of references"
  msgstr "'%s' erklÃ¦ret som en tabel af funktioner"
  
! #: cp/decl.cc:12349
  #, fuzzy, gcc-internal-format
  #| msgid "creating array of `%T'"
  msgid "creating array of references"
  msgstr "opretter tabel af '%T'"
  
! #: cp/decl.cc:12354
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%s' as array of functions"
  msgid "declaration of %qD as array of function members"
  msgstr "'%s' erklÃ¦ret som en tabel af funktioner"
  
! #: cp/decl.cc:12357
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%s' as array of functions"
  msgid "creating array of function members"
  msgstr "'%s' erklÃ¦ret som en tabel af funktioner"
  
! #: cp/decl.cc:12375
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%D' as multidimensional array must have bounds for all dimensions except the first"
  msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first"
  msgstr "erklÃ¦ring af '%D' som flerdimensional tabel skal have grÃ¦nser for alle dimensioner pÃ¥nÃ¦r den fÃ¸rste"
  
! #: cp/decl.cc:12379
  #, gcc-internal-format
  msgid "multidimensional array must have bounds for all dimensions except the first"
  msgstr "flerdimensional tabel skal have grÃ¦nser for alle dimensioner pÃ¥nÃ¦r den fÃ¸rste"
  
! #: cp/decl.cc:12393
  #, fuzzy, gcc-internal-format
  #| msgid "Warn when a variable is unused"
  msgid "variable-length array of %<auto%>"
  msgstr "Advar nÃ¥r en variabel ikke benyttes"
  
! #: cp/decl.cc:12491
  #, gcc-internal-format
  msgid "return type specification for constructor invalid"
  msgstr "angivelse af returneringstypen til konstruktionsfunktion er ugyldigt"
  
! #: cp/decl.cc:12494
  #, fuzzy, gcc-internal-format
  #| msgid "qualifiers are not allowed on declaration of `operator %T'"
  msgid "qualifiers are not allowed on constructor declaration"
  msgstr "modifikationer er ikke tilladt i erklÃ¦ring af 'operator %T'"
  
! #: cp/decl.cc:12505
  #, gcc-internal-format
  msgid "return type specification for destructor invalid"
  msgstr "angivelse af returneringstypen til destruktionsfunktion er ugyldigt"
  
! #: cp/decl.cc:12508
  #, fuzzy, gcc-internal-format
  #| msgid "qualifiers are not allowed on declaration of `operator %T'"
  msgid "qualifiers are not allowed on destructor declaration"
  msgstr "modifikationer er ikke tilladt i erklÃ¦ring af 'operator %T'"
  
! #: cp/decl.cc:12521
  #, fuzzy, gcc-internal-format
  #| msgid "return type specified for `operator %T'"
  msgid "return type specified for %<operator %T%>"
  msgstr "returtype angivet for 'operator %T'"
  
! #: cp/decl.cc:12524
  #, fuzzy, gcc-internal-format
  #| msgid "qualifiers are not allowed on declaration of `operator %T'"
  msgid "qualifiers are not allowed on declaration of %<operator %T%>"
  msgstr "modifikationer er ikke tilladt i erklÃ¦ring af 'operator %T'"
  
! #: cp/decl.cc:12533
  #, fuzzy, gcc-internal-format
  #| msgid "return type specification for destructor invalid"
  msgid "return type specified for deduction guide"
  msgstr "angivelse af returneringstypen til destruktionsfunktion er ugyldigt"
  
! #: cp/decl.cc:12536
  #, fuzzy, gcc-internal-format
  #| msgid "qualifiers are not allowed on declaration of `operator %T'"
  msgid "qualifiers are not allowed on declaration of deduction guide"
  msgstr "modifikationer er ikke tilladt i erklÃ¦ring af 'operator %T'"
  
! #: cp/decl.cc:12540
  #, fuzzy, gcc-internal-format
  msgid "template template parameter %qT in declaration of deduction guide"
  msgstr "modstridende erklÃ¦ringer af '%s'"
  
! #: cp/decl.cc:12549
  #, fuzzy, gcc-internal-format
  msgid "%<decl-specifier%> in declaration of deduction guide"
  msgstr "modstridende erklÃ¦ringer af '%s'"
  
! #: cp/decl.cc:12570
  #, gcc-internal-format
  msgid "unnamed variable or field declared void"
  msgstr "unavngiven variabel eller felt erklÃ¦ret void"
  
! #: cp/decl.cc:12578
  #, gcc-internal-format
  msgid "variable or field declared void"
  msgstr "variabel eller felt erklÃ¦ret void"
  
! #: cp/decl.cc:12593
  #, fuzzy, gcc-internal-format
  #| msgid "storage class `inline' invalid for function `%s' declared out of global scope"
  msgid "%<inline%> specifier invalid for variable %qD declared at block scope"
  msgstr "lagringsklassen 'inline' er ugyldig for funktionen '%s' erklÃ¦ret uden for det globale virkefelt"
  
! #: cp/decl.cc:12598
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "inline variables are only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/decl.cc:12654
  #, fuzzy, gcc-internal-format
  #| msgid "%s as integer rather than floating due to prototype"
  msgid "%qT as type rather than plain %<decltype(auto)%>"
  msgstr "%s som heltal i stedet for kommatal pÃ¥ grund af prototypen"
  
! #: cp/decl.cc:12660
  #, fuzzy, gcc-internal-format
  #| msgid "destructors may not be `%s'"
  msgid "%<decltype(auto)%> cannot be cv-qualified"
  msgstr "destruktionsfunktioner mÃ¥ ikke vÃ¦re '%s'"
  
! #: cp/decl.cc:12681
  #, fuzzy
  #| msgid "signed and unsigned given together for `%s'"
  msgid "%e and %e specified together"
  msgstr "signed og unsigned er begge angivet for '%s'"
  
! #: cp/decl.cc:12893
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of member `%D'"
  msgid "invalid use of qualified-name %<::%D%>"
  msgstr "ugyldig brug af medlemmet '%D'"
  
! #: cp/decl.cc:12896 cp/decl.cc:12918
  #, fuzzy, gcc-internal-format
  #| msgid "invalid definition of qualified type `%T'"
  msgid "invalid use of qualified-name %<%T::%D%>"
  msgstr "ugyldig definition af modificeret type '%T'"
  
! #: cp/decl.cc:12899
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of member `%D'"
  msgid "invalid use of qualified-name %<%D::%D%>"
  msgstr "ugyldig brug af medlemmet '%D'"
  
! #: cp/decl.cc:12909
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a class or namespace"
  msgid "%q#T is not a class or namespace"
  msgstr "'%T' er ikke en klasse eller et navnerum"
  
! #: cp/decl.cc:12933
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%D' as non-function"
  msgid "declaration of %qE as non-function"
  msgstr "erklÃ¦ring af '%D' som ikke-funktion"
  
! #: cp/decl.cc:12940
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%D' as non-function"
  msgid "declaration of %qE as non-member"
  msgstr "erklÃ¦ring af '%D' som ikke-funktion"
  
! #: cp/decl.cc:12968
  #, fuzzy, gcc-internal-format
  #| msgid "declarator-id missing; using reserved word `%D'"
  msgid "declarator-id missing; using reserved word %qD"
  msgstr "erklÃ¦rer-id mangler; bruger reserveret ord '%D'"
  
! #: cp/decl.cc:13019
  #, fuzzy, gcc-internal-format
  #| msgid "function definition declared `register'"
  msgid "function definition does not declare parameters"
  msgstr "'register' er pÃ¥hÃ¦ftet funktionsdefinitionen"
  
! #: cp/decl.cc:13027 cp/decl.cc:13036 cp/decl.cc:15032
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%D' as non-function"
  msgid "declaration of %qD as non-function"
  msgstr "erklÃ¦ring af '%D' som ikke-funktion"
  
! #: cp/decl.cc:13044
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%D' as %s"
  msgid "declaration of %qD as %<typedef%>"
  msgstr "erklÃ¦ring af '%D' som %s"
  
! #: cp/decl.cc:13049
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%#D' shadows a parameter"
  msgid "declaration of %qD as parameter"
  msgstr "erklÃ¦ring af '%#D' skygger for en parameter"
  
! #: cp/decl.cc:13084
  #, fuzzy, gcc-internal-format
  #| msgid "both long and short specified for `%s'"
  msgid "both %qs and %qs specified"
  msgstr "bÃ¥de long og short er angivet for '%s'"
  
! #: cp/decl.cc:13091 cp/decl.cc:13098 cp/decl.cc:13105 cp/decl.cc:13112
  #, fuzzy, gcc-internal-format
  msgid "%qs cannot appear in a typedef declaration"
  msgstr "navnerum '%D' ikke tilladt i using-erklÃ¦ring"
  
! #: cp/decl.cc:13123
  #, gcc-internal-format
  msgid "can use at most one of the %<constinit%> and %<constexpr%> specifiers"
  msgstr ""
  
! #: cp/decl.cc:13133
  #, fuzzy, gcc-internal-format
  #| msgid "two or more data types in declaration of `%s'"
  msgid "two or more data types in declaration of %qs"
  msgstr "mere end Ã©n datatype i erklÃ¦ringen af '%s'"
  
! #: cp/decl.cc:13187
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not support plain `complex' meaning `double complex'"
  msgid "ISO C++ does not support plain %<complex%> meaning %<double complex%>"
  msgstr "ISO C understÃ¸tter ikke at blot 'complex' betyder 'double complex'"
  
! #: cp/decl.cc:13237 cp/decl.cc:13241 cp/decl.cc:13244
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids declaration of `%s' with no type"
  msgid "ISO C++ forbids declaration of %qs with no type"
  msgstr "ISO C++ forbyder erklÃ¦ring af '%s' uden en type"
  
! #: cp/decl.cc:13261
  #, fuzzy, gcc-internal-format
  #| msgid "__builtin_trap not supported by this target"
  msgid "%<__int%d%> is not supported by this target"
  msgstr "__builtin_trap understÃ¸ttes ikke pÃ¥ denne mÃ¥larkitektur"
  
! #: cp/decl.cc:13269
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ does not support `long long'"
  msgid "ISO C++ does not support %<__int%d%> for %qs"
  msgstr "ISO C++ understÃ¸tter ikke 'long long'"
  
! #: cp/decl.cc:13332
  #, fuzzy, gcc-internal-format
  #| msgid "%s used with `%%%c' %s format"
  msgid "%qs specified with %qT"
  msgstr "%s brugt med '%%%c' %s-formatering"
  
! #: cp/decl.cc:13339
  #, fuzzy, gcc-internal-format
  #| msgid "%s used with `%%%c' %s format"
  msgid "%qs specified with typedef-name %qD"
  msgstr "%s brugt med '%%%c' %s-formatering"
  
! #: cp/decl.cc:13348
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<decltype%>"
  msgid "%qs specified with %<decltype%>"
  msgstr "forventede %<decltype%>"
  
! #: cp/decl.cc:13350
  #, fuzzy, gcc-internal-format
  #| msgid "%s used with `%%%c' %s format"
  msgid "%qs specified with %<typeof%>"
  msgstr "%s brugt med '%%%c' %s-formatering"
  
! #: cp/decl.cc:13419
  #, fuzzy, gcc-internal-format
  #| msgid "complex invalid for `%s'"
  msgid "complex invalid for %qs"
  msgstr "complex ugyldig for '%s'"
  
! #: cp/decl.cc:13463
  #, gcc-internal-format
  msgid "missing template argument list after %qE; for deduction, template placeholder must be followed by a simple declarator-id"
  msgstr ""
  
! #: cp/decl.cc:13489
  #, fuzzy, gcc-internal-format
  #| msgid "member `%D' cannot be declared both virtual and static"
  msgid "member %qD cannot be declared both %<virtual%> and %<static%>"
  msgstr "medlemmet '%D' kan ikke afklÃ¦res bÃ¥de virtual og static"
  
! #: cp/decl.cc:13498
  #, fuzzy, gcc-internal-format
  #| msgid "member `%D' cannot be declared both virtual and static"
  msgid "member %qD can be declared both %<virtual%> and %<constexpr%> only in %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "medlemmet '%D' kan ikke afklÃ¦res bÃ¥de virtual og static"
  
! #: cp/decl.cc:13511
  #, gcc-internal-format
  msgid "typedef declaration invalid in parameter declaration"
  msgstr "typedef-erklÃ¦ringer er ugyldig i parametererklÃ¦ringer"
  
! #: cp/decl.cc:13518
  #, fuzzy, gcc-internal-format
  #| msgid "storage class specified for parameter `%s'"
  msgid "storage class specified for template parameter %qs"
  msgstr "lagringsklasse angivet for parameter '%s'"
  
! #: cp/decl.cc:13528 cp/decl.cc:13705
  #, fuzzy, gcc-internal-format
  #| msgid "storage class specified for parameter `%s'"
  msgid "storage class specified for parameter %qs"
  msgstr "lagringsklasse angivet for parameter '%s'"
  
! #: cp/decl.cc:13536 cp/decl.cc:13545 cp/decl.cc:13551 cp/decl.cc:13557
  #, fuzzy, gcc-internal-format
  #| msgid "template parameters cannot be friends"
  msgid "a parameter cannot be declared %qs"
  msgstr "skabelonsparametre kan ikke vÃ¦re venner"
  
! #: cp/decl.cc:13567
  #, fuzzy, gcc-internal-format
  #| msgid "virtual outside class declaration"
  msgid "%<virtual%> outside class declaration"
  msgstr "virtual angivet uden for klasseerklÃ¦ring"
  
! #: cp/decl.cc:13577 cp/decl.cc:13580 cp/decl.cc:13582 cp/decl.cc:13585
! #: cp/decl.cc:13595 cp/decl.cc:13605 cp/decl.cc:13615 cp/decl.cc:13619
  #, fuzzy, gcc-internal-format
  #| msgid "forward declaration of `%#T'"
  msgid "structured binding declaration cannot be %qs"
  msgstr "forhÃ¥ndserklÃ¦ring af '%#T'"
  
! #: cp/decl.cc:13589 cp/decl.cc:13611
  #, fuzzy, gcc-internal-format
  #| msgid "constructors cannot be declared virtual"
  msgid "structured binding declaration can be %qs only in %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "konstruktionsfunktioner kan ikke erklÃ¦res virtual"
  
! #: cp/decl.cc:13599
  #, fuzzy, gcc-internal-format
  msgid "%<volatile%>-qualified structured binding is deprecated"
  msgstr "Ugyldig erklÃ¦ring"
  
! #: cp/decl.cc:13623
  #, fuzzy, gcc-internal-format
  #| msgid "function `%s' cannot be declared `mutable'"
  msgid "structured binding declaration cannot be C++98 %<auto%>"
  msgstr "funktionen '%s' kan ikke erklÃ¦res 'mutable'"
  
! #: cp/decl.cc:13635
  #, fuzzy, gcc-internal-format
  #| msgid "function `%D' cannot be declared friend"
  msgid "structured binding declaration cannot have type %qT"
  msgstr "funktionen '%D' kan ikke erklÃ¦res friend"
  
! #: cp/decl.cc:13638
  #, gcc-internal-format
  msgid "type must be cv-qualified %<auto%> or reference to cv-qualified %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:13646
  #, fuzzy, gcc-internal-format
  #| msgid "function `%D' cannot be declared friend"
  msgid "structured binding declaration cannot have constrained %<auto%> type %qT"
  msgstr "funktionen '%D' kan ikke erklÃ¦res friend"
  
! #: cp/decl.cc:13677
  #, fuzzy, gcc-internal-format
  #| msgid "multiple storage classes in declaration of `%s'"
  msgid "multiple storage classes in declaration of %qs"
  msgstr "flere lagringsklasser optrÃ¦der i erklÃ¦ringen af '%s'"
  
! #: cp/decl.cc:13703
  #, fuzzy, gcc-internal-format
  #| msgid "storage class specified for %s `%s'"
  msgid "storage class specified for %qs"
  msgstr "lagringsklasse angivet for %s '%s'"
  
! #: cp/decl.cc:13717
  #, fuzzy, gcc-internal-format
  #| msgid "nested function `%s' declared `extern'"
  msgid "nested function %qs declared %<extern%>"
  msgstr "indlejret funktion '%s' er erklÃ¦ret 'extern'"
  
! #: cp/decl.cc:13722
  #, fuzzy, gcc-internal-format
  #| msgid "top-level declaration of `%s' specifies `auto'"
  msgid "top-level declaration of %qs specifies %<auto%>"
  msgstr "erklÃ¦ring af '%s' pÃ¥ Ã¸verste niveau angiver 'auto'"
  
! #: cp/decl.cc:13730
  #, fuzzy, gcc-internal-format
  #| msgid "function-scope `%s' implicitly auto and declared `__thread'"
  msgid "function-scope %qs implicitly auto and declared %<__thread%>"
  msgstr "'%s' i funktionsvirkefelt underforstÃ¥et auto og erklÃ¦ret '__thread'"
  
! #: cp/decl.cc:13744
  #, gcc-internal-format
  msgid "storage class specifiers invalid in friend function declarations"
  msgstr "lagringsklasseanvisninger er ugyldige i vennefunktionserklÃ¦ringer"
  
! #: cp/decl.cc:13850
  #, fuzzy, gcc-internal-format
  #| msgid "multiple storage classes in declaration of `%s'"
  msgid "unnecessary parentheses in declaration of %qs"
  msgstr "flere lagringsklasser optrÃ¦der i erklÃ¦ringen af '%s'"
  
! #: cp/decl.cc:13856
  #, fuzzy, gcc-internal-format
  msgid "remove parentheses"
  msgstr "uventet operand"
  
! #: cp/decl.cc:13923
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "explicit object member function only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/decl.cc:13937
  #, fuzzy, gcc-internal-format
  #| msgid "function cannot be inline"
  msgid "a function type cannot have an explicit object parameter"
  msgstr "funktion kan ikke indbygges"
  
! #: cp/decl.cc:13943
  #, fuzzy, gcc-internal-format
  #| msgid "virtual functions cannot be friends"
  msgid "a pointer to function type cannot have an explicit object parameter"
  msgstr "en virtuel funktion kan ikke erklÃ¦res som friend"
  
! #: cp/decl.cc:13947
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' is not a valid template argument"
  msgid "a pointer to member function type cannot have an explicit object parameter"
  msgstr "'%E' er ikke en gyldig skabelonsparameter"
  
! #: cp/decl.cc:13955
  #, gcc-internal-format
  msgid "the type of a pointer to explicit object member function is a regular pointer to function type"
  msgstr ""
  
! #: cp/decl.cc:13959
  #, gcc-internal-format
  msgid "the type of an explicit object member function is a regular function type"
  msgstr ""
  
! #: cp/decl.cc:13980
  #, gcc-internal-format
  msgid "only the first parameter of a member function can be declared as an explicit object parameter"
  msgstr ""
  
! #: cp/decl.cc:13985
  #, fuzzy, gcc-internal-format
  #| msgid "template parameter type `%T' declared `friend'"
  msgid "valid explicit object parameter declared here"
  msgstr "skabelonsparametertypen '%T' erklÃ¦ret 'friend'"
  
! #: cp/decl.cc:13989
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute requires an integer constant argument"
  msgid "requires-clause on return type"
  msgstr "egenskaben '%s' krÃ¦ver en heltalskonstant som parameter"
  
! #: cp/decl.cc:14010
  #, gcc-internal-format
  msgid "%qs function uses %<auto%> type specifier without trailing return type"
  msgstr ""
  
! #: cp/decl.cc:14014
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "deduced return type only available with %<-std=c++14%> or %<-std=gnu++14%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/decl.cc:14019
  #, fuzzy, gcc-internal-format
  #| msgid "virtual functions cannot be friends"
  msgid "virtual function cannot have deduced return type"
  msgstr "en virtuel funktion kan ikke erklÃ¦res som friend"
  
! #: cp/decl.cc:14026
  #, gcc-internal-format
  msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:14035
  #, gcc-internal-format
  msgid "%qs function with trailing return type has %<decltype(auto)%> as its type rather than plain %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:14040
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `%D'"
  msgid "invalid use of %<decltype(auto)%>"
  msgstr "ugyldig brug af '%D"
  
! #: cp/decl.cc:14047
  #, gcc-internal-format
  msgid "%qs function with trailing return type has constrained %<auto%> type specifier rather than plain %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:14053
  #, fuzzy, gcc-internal-format
  msgid "invalid use of constrained %<auto%> type"
  msgstr "ugyldig brug af ikke-statisk felt '%D'"
  
! #: cp/decl.cc:14065
  #, fuzzy, gcc-internal-format
  #| msgid "type qualifiers ignored on function return type"
  msgid "deduced class type %qD in function return type"
  msgstr "typemodifikationer ignoreret i funktionsreturtypen"
  
! #: cp/decl.cc:14075
  #, fuzzy, gcc-internal-format
  #| msgid "virtual functions cannot be friends"
  msgid "deduction guide for %qT must have trailing return type"
  msgstr "en virtuel funktion kan ikke erklÃ¦res som friend"
  
! #: cp/decl.cc:14088
  #, gcc-internal-format
  msgid "trailing return type %qT of deduction guide is not a specialization of %qT"
  msgstr ""
  
! #: cp/decl.cc:14102
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "trailing return type only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/decl.cc:14105
  #, gcc-internal-format
  msgid "%qs function with trailing return type not declared with %<auto%> type specifier"
  msgstr ""
  
! #: cp/decl.cc:14112
  #, fuzzy, gcc-internal-format
  #| msgid "virtual functions cannot be friends"
  msgid "a conversion function cannot have a trailing return type"
  msgstr "en virtuel funktion kan ikke erklÃ¦res som friend"
  
! #: cp/decl.cc:14138
  #, gcc-internal-format
  msgid "%<volatile%>-qualified return type is deprecated"
  msgstr ""
  
! #: cp/decl.cc:14150
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' declared as function returning a function"
  msgid "%qs declared as function returning a function"
  msgstr "'%s' er erklÃ¦ret som en funktion der returnerer en funktion"
  
! #: cp/decl.cc:14156
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' declared as function returning an array"
  msgid "%qs declared as function returning an array"
  msgstr "'%s' er erklÃ¦ret som en funktion der returnerer en tabel"
  
! #: cp/decl.cc:14163
  #, gcc-internal-format
  msgid "%<constinit%> on function return type is not allowed"
  msgstr ""
  
! #: cp/decl.cc:14196
  #, gcc-internal-format
  msgid "destructor cannot be static member function"
  msgstr "destruktionsfunktionen kan ikke vÃ¦re en statisk medlemsfunktion"
  
! #: cp/decl.cc:14198
  #, gcc-internal-format
  msgid "constructor cannot be static member function"
  msgstr "konstruktionsfunktionen kan ikke vÃ¦re en statisk medlemsfunktion"
  
! #: cp/decl.cc:14203
  #, fuzzy, gcc-internal-format
  #| msgid "destructors may not be `%s'"
  msgid "destructors may not be cv-qualified"
  msgstr "destruktionsfunktioner mÃ¥ ikke vÃ¦re '%s'"
  
! #: cp/decl.cc:14204
  #, fuzzy, gcc-internal-format
  #| msgid "constructors may not be `%s'"
  msgid "constructors may not be cv-qualified"
  msgstr "konstruktionsfunktioner mÃ¥ ikke vÃ¦re '%s'"
  
! #: cp/decl.cc:14212
  #, fuzzy, gcc-internal-format
  #| msgid "destructors may not be `%s'"
  msgid "destructors may not be ref-qualified"
  msgstr "destruktionsfunktioner mÃ¥ ikke vÃ¦re '%s'"
  
! #: cp/decl.cc:14213
  #, fuzzy, gcc-internal-format
  #| msgid "destructors may not be `%s'"
  msgid "constructors may not be ref-qualified"
  msgstr "destruktionsfunktioner mÃ¥ ikke vÃ¦re '%s'"
  
! #: cp/decl.cc:14231
  #, fuzzy, gcc-internal-format
  #| msgid "constructors cannot be declared virtual"
  msgid "constructors cannot be declared %<virtual%>"
  msgstr "konstruktionsfunktioner kan ikke erklÃ¦res virtual"
  
! #: cp/decl.cc:14248
  #, gcc-internal-format
  msgid "virtual functions cannot be friends"
  msgstr "en virtuel funktion kan ikke erklÃ¦res som friend"
  
! #: cp/decl.cc:14253
  #, gcc-internal-format
  msgid "friend declaration not in class definition"
  msgstr "friend-erklÃ¦ringen er ikke i klassedefinitionen"
  
! #: cp/decl.cc:14257
  #, fuzzy, gcc-internal-format
  #| msgid "can't define friend function `%s' in a local class definition"
  msgid "cannot define friend function %qs in a local class definition"
  msgstr "kan ikke definere vennefunktion '%s' i en lokal klassedefinition"
  
! #: cp/decl.cc:14267
  #, gcc-internal-format
  msgid "friend function definition %qs cannot have a name qualified with %<::%>"
  msgstr ""
  
! #: cp/decl.cc:14271
  #, gcc-internal-format
  msgid "friend function definition %qs cannot have a name qualified with %<%D::%>"
  msgstr ""
  
! #: cp/decl.cc:14297
  #, fuzzy, gcc-internal-format
  #| msgid "%smember function `%D' cannot have `%T' method qualifier"
  msgid "a non-member function cannot have an explicit object parameter"
  msgstr "%smedlemsfunktion '%D' kan ikke have metodemodifikationen '%T'"
  
! #: cp/decl.cc:14305
  #, fuzzy, gcc-internal-format
  #| msgid "%smember function `%D' cannot have `%T' method qualifier"
  msgid "an explicit object member function cannot be %<virtual%>"
  msgstr "%smedlemsfunktion '%D' kan ikke have metodemodifikationen '%T'"
  
! #: cp/decl.cc:14315
  #, fuzzy, gcc-internal-format
  #| msgid "constructors cannot be declared virtual"
  msgid "an explicit object member function cannot be %<static%>"
  msgstr "konstruktionsfunktioner kan ikke erklÃ¦res virtual"
  
! #: cp/decl.cc:14324
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must be a nonstatic member function"
  msgid "%qD cannot be an explicit object member function"
  msgstr "'%D' skal vÃ¦re en ikke-statisk medlemsfunktion"
  
! #: cp/decl.cc:14347
  #, gcc-internal-format
  msgid "destructors may not have parameters"
  msgstr "destruktionsfunktioner mÃ¥ ikke have parametre"
  
! #: cp/decl.cc:14405
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare pointer to `%#T'"
  msgid "cannot declare pointer to %q#T"
  msgstr "kan ikke erklÃ¦re henvisning til '%#T'"
  
! #: cp/decl.cc:14418 cp/decl.cc:14425
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare reference to `%#T'"
  msgid "cannot declare reference to %q#T"
  msgstr "kan ikke erklÃ¦re reference til '%#T'"
  
! #: cp/decl.cc:14427
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare pointer to `%#T' member"
  msgid "cannot declare pointer to %q#T member"
  msgstr "kan ikke erklÃ¦re henvisning til medlemmet '%#T'"
  
! #: cp/decl.cc:14456
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare references to references"
  msgid "cannot declare reference to qualified function type %qT"
  msgstr "kan ikke erklÃ¦re referencer til referencer"
  
! #: cp/decl.cc:14457
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare bit-field `%D' with function type"
  msgid "cannot declare pointer to qualified function type %qT"
  msgstr "kan ikke erklÃ¦re bitfelt '%D' med funktionstype"
  
! #: cp/decl.cc:14530
  #, gcc-internal-format
  msgid "cannot declare reference to %q#T, which is not a typedef or a template type argument"
  msgstr ""
  
! #: cp/decl.cc:14609
  #, fuzzy, gcc-internal-format
  #| msgid "template-id `%D' used as a declarator"
  msgid "template-id %qD used as a declarator"
  msgstr "skabelons-id '%D' benyttet som erklÃ¦rer"
  
! #: cp/decl.cc:14635
  #, gcc-internal-format
  msgid "member functions are implicitly friends of their class"
  msgstr "medlemsfunktioner er underforstÃ¥et venner af deres klasse"
  
! #: cp/decl.cc:14640
  #, fuzzy, gcc-internal-format
  #| msgid "extra qualification `%T::' on member `%s' ignored"
  msgid "extra qualification %<%T::%> on member %qs"
  msgstr "ekstra modifikation '%T::' af medlemmet '%s' ignoreret"
  
! #: cp/decl.cc:14670
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare member function `%T::%s' within `%T'"
  msgid "cannot define member function %<%T::%s%> within %qT"
  msgstr "kan ikke erklÃ¦re medlemsfunktion '%T::%s' inde i '%T'"
  
! #: cp/decl.cc:14672
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare member function `%T::%s' within `%T'"
  msgid "cannot declare member function %<%T::%s%> within %qT"
  msgstr "kan ikke erklÃ¦re medlemsfunktion '%T::%s' inde i '%T'"
  
! #: cp/decl.cc:14680
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare member `%T::%s' within `%T'"
  msgid "cannot declare member %<%T::%s%> within %qT"
  msgstr "kan ikke erklÃ¦re medlem '%T::%s' inde i '%T'"
  
! #: cp/decl.cc:14720
  #, fuzzy, gcc-internal-format
  #| msgid "data member `%D' cannot be a member template"
  msgid "non-parameter %qs cannot be a parameter pack"
  msgstr "datamedlem '%D' kan ikke vÃ¦re en medlemsskabelon"
  
! #: cp/decl.cc:14729
  #, fuzzy, gcc-internal-format
  #| msgid "data member may not have variably modified type `%T'"
  msgid "data member may not have variably modified type %qT"
  msgstr "datamedlem mÃ¥ ikke have variabelt Ã¦ndret type '%T'"
  
! #: cp/decl.cc:14732
  #, fuzzy, gcc-internal-format
  #| msgid "parameter may not have variably modified type `%T'"
  msgid "parameter may not have variably modified type %qT"
  msgstr "parameter mÃ¥ ikke have variabelt Ã¦ndret type '%T'"
  
! #: cp/decl.cc:14743
  #, fuzzy, gcc-internal-format
  #| msgid "virtual outside class declaration"
  msgid "%<explicit%> outside class declaration"
  msgstr "virtual angivet uden for klasseerklÃ¦ring"
  
! #: cp/decl.cc:14746
  #, fuzzy, gcc-internal-format
  #| msgid "defining explicit specialization `%D' in friend declaration"
  msgid "%<explicit%> in friend declaration"
  msgstr "definering af eksplicit specialisering '%D' i friend-erklÃ¦ring"
  
! #: cp/decl.cc:14749
  #, fuzzy, gcc-internal-format
  #| msgid "only declarations of constructors can be `explicit'"
  msgid "only declarations of constructors and conversion operators can be %<explicit%>"
  msgstr "kun erklÃ¦ringer af konstruktionsfunktioner kan vÃ¦re 'explicit'"
  
! #: cp/decl.cc:14759
  #, fuzzy, gcc-internal-format
  #| msgid "non-member `%s' cannot be declared `mutable'"
  msgid "non-member %qs cannot be declared %<mutable%>"
  msgstr "'%s' som ikke er medlem, kan ikke erklÃ¦res 'mutable'"
  
! #: cp/decl.cc:14766
  #, fuzzy, gcc-internal-format
  #| msgid "non-object member `%s' cannot be declared `mutable'"
  msgid "non-object member %qs cannot be declared %<mutable%>"
  msgstr "'%s' som ikke er objektmedlem, kan ikke erklÃ¦res 'mutable'"
  
! #: cp/decl.cc:14772
  #, fuzzy, gcc-internal-format
  #| msgid "function `%s' cannot be declared `mutable'"
  msgid "function %qs cannot be declared %<mutable%>"
  msgstr "funktionen '%s' kan ikke erklÃ¦res 'mutable'"
  
! #: cp/decl.cc:14778
  #, fuzzy, gcc-internal-format
  #| msgid "static `%s' cannot be declared `mutable'"
  msgid "%<static%> %qs cannot be declared %<mutable%>"
  msgstr "static '%s' kan ikke erklÃ¦res 'mutable'"
  
! #: cp/decl.cc:14784
  #, fuzzy, gcc-internal-format
  #| msgid "const `%s' cannot be declared `mutable'"
  msgid "%<const%> %qs cannot be declared %<mutable%>"
  msgstr "const '%s' kan ikke erklÃ¦res 'mutable'"
  
! #: cp/decl.cc:14790
  #, gcc-internal-format
  msgid "reference %qs cannot be declared %<mutable%>"
  msgstr "referencen %qs kan ikke erklÃ¦res %<mutable%>"
  
! #: cp/decl.cc:14806
  #, fuzzy, gcc-internal-format
  msgid "typedef may not be a function definition"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/decl.cc:14809
  #, fuzzy, gcc-internal-format
  msgid "typedef may not be a member function definition"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/decl.cc:14835
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not at beginning of declaration"
  msgid "%<auto%> not allowed in alias declaration"
  msgstr "'%s' er ikke ved begyndelsen af erklÃ¦ringen"
  
! #: cp/decl.cc:14838
  #, gcc-internal-format
  msgid "typedef declared %<auto%>"
  msgstr "typedef erklÃ¦ret %<auto%>"
  
! #: cp/decl.cc:14843
  #, gcc-internal-format
  msgid "requires-clause on typedef"
  msgstr ""
  
! #: cp/decl.cc:14847
  #, gcc-internal-format
  msgid "typedef name may not be a nested-name-specifier"
  msgstr "typedef-navn kan ikke vÃ¦re en indlejret-navn-specifikation"
  
! #: cp/decl.cc:14873
  #, gcc-internal-format
  msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
  msgstr "ISO C++ forbyder indlejret type %qD med samme navn som den omgivende klasse"
  
! #: cp/decl.cc:14962
  #, gcc-internal-format
  msgid "%<inline%> specified for friend class declaration"
  msgstr "%<inline%> angivet for friend class-erklÃ¦ring"
  
! #: cp/decl.cc:14970
  #, gcc-internal-format
  msgid "template parameters cannot be friends"
  msgstr "skabelonsparametre kan ikke vÃ¦re venner"
  
! #: cp/decl.cc:14972
  #, gcc-internal-format
  msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
  msgstr "friend-erklÃ¦ring krÃ¦ver klasseangivelse, dvs. %<friend class %T::%D%>"
  
! #: cp/decl.cc:14976
  #, gcc-internal-format
  msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
  msgstr "friend-erklÃ¦ring krÃ¦ver klasseangivelse, dvs. %<friend %#T%>"
  
! #: cp/decl.cc:14989
  #, gcc-internal-format
  msgid "trying to make class %qT a friend of global scope"
  msgstr "forsÃ¸g pÃ¥ at gÃ¸re klassen %qT til ven af det globale virkningsfelt"
  
! #: cp/decl.cc:15009
  #, gcc-internal-format
  msgid "invalid qualifiers on non-member function type"
  msgstr "ugyldige modifikationer for ikke-medlemsfunktionstype"
  
! #: cp/decl.cc:15013
  #, gcc-internal-format
  msgid "requires-clause on type-id"
  msgstr ""
  
! #: cp/decl.cc:15023
  #, fuzzy, gcc-internal-format
  #| msgid "abstract declarator `%T' used as declaration"
  msgid "abstract declarator %qT used as declaration"
  msgstr "abstrakt erklÃ¦rer '%T' benyttet som erklÃ¦ring"
  
! #: cp/decl.cc:15038
  #, fuzzy, gcc-internal-format
  #| msgid "invalid cast to function type `%T'"
  msgid "requires-clause on declaration of non-function type %qT"
  msgstr "ugyldig omtvingelse til funktionstypen '%T'"
  
! #: cp/decl.cc:15057
  #, fuzzy, gcc-internal-format
  #| msgid "cannot use `::' in parameter declaration"
  msgid "cannot use %<::%> in parameter declaration"
  msgstr "kan ikke bruge '::' i parametererklÃ¦ring"
  
! #: cp/decl.cc:15067 cp/parser.cc:21414
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare parameter `%D' to be of type `%T'"
  msgid "cannot declare a parameter with %<decltype(auto)%>"
  msgstr "kan ikke erklÃ¦re parameteren '%D' til at vÃ¦re af typen '%T'"
  
! #: cp/decl.cc:15074
  #, gcc-internal-format
  msgid "missing template argument list after %qE; template placeholder not permitted in parameter"
  msgstr ""
  
! #: cp/decl.cc:15077
  #, gcc-internal-format
  msgid "or use %<auto%> for an abbreviated function template"
  msgstr ""
  
! #: cp/decl.cc:15083 cp/parser.cc:26080
  #, fuzzy, gcc-internal-format
  msgid "%<auto%> parameter not permitted in this context"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: cp/decl.cc:15093
  #, fuzzy, gcc-internal-format
  #| msgid "parameter `%D' declared void"
  msgid "parameter declared %<auto%>"
  msgstr "parameteren '%D' erklÃ¦ret void"
  
! #: cp/decl.cc:15147 cp/parser.cc:3855
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of template-name '%E' in a declarator"
  msgid "invalid use of template-name %qE without an argument list"
  msgstr "ugyldig brug af skabelonsnavn '%E' i erklÃ¦ring"
  
! #: cp/decl.cc:15151
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' has no non-static data member named `%D'"
  msgid "non-static data member declared with placeholder %qT"
  msgstr "'%T' har intet ikke-statisk medlem ved navn '%D'"
  
! #: cp/decl.cc:15171
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support flexible array members"
  msgid "ISO C++ forbids flexible array member %qs"
  msgstr "ISO C90 understÃ¸tter ikke fleksible tabelmedlemmer"
  
! #: cp/decl.cc:15174
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C90 does not support flexible array members"
  msgid "ISO C++ forbids flexible array members"
  msgstr "ISO C90 understÃ¸tter ikke fleksible tabelmedlemmer"
  
  #. Something like struct S { int N::j; };
! #: cp/decl.cc:15190
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `::'"
  msgid "invalid use of %<::%>"
  msgstr "ugyldig brug af '::'"
  
! #: cp/decl.cc:15211
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of C function `%#D' conflicts with"
  msgid "declaration of function %qD in invalid context"
  msgstr "erklÃ¦ring af C-funktionen '%#D' strider mod"
  
! #: cp/decl.cc:15221
  #, fuzzy, gcc-internal-format
  #| msgid "function `%D' declared virtual inside a union"
  msgid "function %qD declared %<virtual%> inside a union"
  msgstr "funktionen '%D' erklÃ¦ret virtual inden i en union"
  
! #: cp/decl.cc:15231
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' cannot be declared virtual, since it is always static"
  msgid "%qD cannot be declared %<virtual%>, since it is always static"
  msgstr "'%D' kan ikke erklÃ¦res virtual eftersom den altid er statisk"
  
! #: cp/decl.cc:15245
  #, fuzzy, gcc-internal-format
  #| msgid "qualifiers are not allowed on declaration of `operator %T'"
  msgid "expected qualified name in friend declaration for destructor %qD"
  msgstr "modifikationer er ikke tilladt i erklÃ¦ring af 'operator %T'"
  
! #: cp/decl.cc:15252
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%s' shadows a member of `this'"
  msgid "declaration of %qD as member of %qT"
  msgstr "erklÃ¦ring af '%s' skygger for et medlem af 'this'"
  
! #: cp/decl.cc:15259 cp/decl.cc:15272
  #, fuzzy, gcc-internal-format
  #| msgid "destructors may not be `%s'"
  msgid "a destructor cannot be %qs"
  msgstr "destruktionsfunktioner mÃ¥ ikke vÃ¦re '%s'"
  
! #: cp/decl.cc:15278
  #, fuzzy, gcc-internal-format
  #| msgid "qualifiers are not allowed on declaration of `operator %T'"
  msgid "expected qualified name in friend declaration for constructor %qD"
  msgstr "modifikationer er ikke tilladt i erklÃ¦ring af 'operator %T'"
  
! #: cp/decl.cc:15287
  #, fuzzy, gcc-internal-format
  #| msgid "destructors may not be `%s'"
  msgid "a constructor cannot be %<concept%>"
  msgstr "destruktionsfunktioner mÃ¥ ikke vÃ¦re '%s'"
  
! #: cp/decl.cc:15293
  #, fuzzy, gcc-internal-format
  #| msgid "constructor cannot be static member function"
  msgid "a concept cannot be a member function"
  msgstr "konstruktionsfunktionen kan ikke vÃ¦re en statisk medlemsfunktion"
  
! #: cp/decl.cc:15301 cp/decl.cc:15660
  #, fuzzy, gcc-internal-format
  msgid "%qD cannot be %qs"
  msgstr "kan ikke Ã¥bne %s"
  
! #: cp/decl.cc:15311
  #, fuzzy, gcc-internal-format
  #| msgid "specialization of implicitly-declared special member function"
  msgid "specialization of variable template %qD declared as function"
  msgstr "specialisering af underforstÃ¥et erklÃ¦ret speciel medlemsfunktion"
  
! #: cp/decl.cc:15314
  #, fuzzy, gcc-internal-format
  #| msgid "variable or field declared void"
  msgid "variable template declared here"
  msgstr "variabel eller felt erklÃ¦ret void"
  
! #: cp/decl.cc:15379
  #, fuzzy, gcc-internal-format
  #| msgid "field `%D' has incomplete type"
  msgid "field %qD has incomplete type %qT"
  msgstr "feltet '%D' er af en ufuldstÃ¦ndig type"
  
! #: cp/decl.cc:15384
  #, fuzzy, gcc-internal-format
  #| msgid "name `%T' has incomplete type"
  msgid "name %qT has incomplete type"
  msgstr "navnet '%T' er af en ufuldstÃ¦ndig type"
  
! #: cp/decl.cc:15404
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is neither function nor member function; cannot be declared friend"
  msgid "%qE is neither function nor member function; cannot be declared friend"
  msgstr "'%s' er hverken en almindelig funktion eller en medlemsfunktion; kan ikke erklÃ¦res som friend"
  
! #: cp/decl.cc:15407
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is neither function nor member function; cannot be declared friend"
  msgid "unnamed field is neither function nor member function; cannot be declared friend"
  msgstr "'%s' er hverken en almindelig funktion eller en medlemsfunktion; kan ikke erklÃ¦res som friend"
  
! #: cp/decl.cc:15426 cp/parser.cc:21980 cp/parser.cc:28922
  #, gcc-internal-format
  msgid "an attribute that appertains to a friend declaration that is not a definition is ignored"
  msgstr ""
  
! #: cp/decl.cc:15476 cp/decl.cc:15487
  #, fuzzy, gcc-internal-format
  #| msgid "static member `%D' declared `register'"
  msgid "static data member %qE declared %qs"
  msgstr "statisk medlem '%D' erklÃ¦ret 'register'"
  
! #: cp/decl.cc:15481
  #, fuzzy, gcc-internal-format
  #| msgid "invalid in-class initialization of static data member of non-integral type `%T'"
  msgid "%<constexpr%> static data member %qD must have an initializer"
  msgstr "ugyldig tildeling af startvÃ¦rdi i klasse til statisk datamedlem af en ikke-heltalstype '%T'"
  
! #: cp/decl.cc:15524 cp/decl.cc:15532 cp/decl.cc:15539 cp/decl.cc:15546
  #, fuzzy, gcc-internal-format
  #| msgid "static member `%D' declared `register'"
  msgid "non-static data member %qE declared %qs"
  msgstr "statisk medlem '%D' erklÃ¦ret 'register'"
  
! #: cp/decl.cc:15598
  #, fuzzy, gcc-internal-format
  #| msgid "storage class `auto' invalid for function `%s'"
  msgid "storage class %<auto%> invalid for function %qs"
  msgstr "lagringsklassen 'auto' er ugyldig for funktionen '%s'"
  
! #: cp/decl.cc:15601
  #, fuzzy, gcc-internal-format
  #| msgid "storage class `register' invalid for function `%s'"
  msgid "storage class %<register%> invalid for function %qs"
  msgstr "lagringsklassen 'register' er ugyldig for funktionen '%s'"
  
! #: cp/decl.cc:15607
  #, fuzzy, gcc-internal-format
  #| msgid "storage class `__thread' invalid for function `%s'"
  msgid "storage class %<__thread%> invalid for function %qs"
  msgstr "lagringsklassen '__thread' er ugyldig for funktionen '%s'"
  
! #: cp/decl.cc:15611
  #, fuzzy, gcc-internal-format
  #| msgid "storage class `__thread' invalid for function `%s'"
  msgid "storage class %<thread_local%> invalid for function %qs"
  msgstr "lagringsklassen '__thread' er ugyldig for funktionen '%s'"
  
! #: cp/decl.cc:15616
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' can only be specified for functions"
  msgid "%<constinit%> specifier invalid for function %qs"
  msgstr "'%D' kan kun angives for funktioner"
  
! #: cp/decl.cc:15619
  #, fuzzy, gcc-internal-format
  #| msgid "type specifier `%s' not allowed after struct or class"
  msgid "virt-specifiers in %qs not allowed outside a class definition"
  msgstr "typeangivelsen '%s' er ikke tilladt efter struct eller class"
  
! #: cp/decl.cc:15631
  #, fuzzy, gcc-internal-format
  #| msgid "storage class `inline' invalid for function `%s' declared out of global scope"
  msgid "%<static%> specifier invalid for function %qs declared out of global scope"
  msgstr "lagringsklassen 'inline' er ugyldig for funktionen '%s' erklÃ¦ret uden for det globale virkefelt"
  
! #: cp/decl.cc:15635
  #, fuzzy, gcc-internal-format
  #| msgid "storage class `inline' invalid for function `%s' declared out of global scope"
  msgid "%<inline%> specifier invalid for function %qs declared out of global scope"
  msgstr "lagringsklassen 'inline' er ugyldig for funktionen '%s' erklÃ¦ret uden for det globale virkefelt"
  
! #: cp/decl.cc:15643
  #, fuzzy, gcc-internal-format
  #| msgid "virtual non-class function `%s'"
  msgid "virtual non-class function %qs"
  msgstr "virtuel funktion '%s' tilhÃ¸rer ikke en klasse"
  
! #: cp/decl.cc:15650
  #, fuzzy, gcc-internal-format
  #| msgid "method definition not in class context"
  msgid "%qs defined in a non-class scope"
  msgstr "metodedefinitionen optrÃ¦der ikke i en klassekontekst"
  
! #: cp/decl.cc:15651
  #, fuzzy, gcc-internal-format
  #| msgid "using-declaration for non-member at class scope"
  msgid "%qs declared in a non-class scope"
  msgstr "using-erklÃ¦ring for ikke-medlem ved klassevirkefelt"
  
! #: cp/decl.cc:15694
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare member function `%D' to have static linkage"
  msgid "cannot declare member function %qD to have static linkage"
  msgstr "kan ikke erklÃ¦re medlemsfunktion '%D' til at have statisk kÃ¦dning"
  
! #: cp/decl.cc:15703
  #, gcc-internal-format
  msgid "cannot declare static function inside another function"
  msgstr "kan ikke erklÃ¦re en funktion for static inden i en anden funktion"
  
! #: cp/decl.cc:15744
  #, fuzzy, gcc-internal-format
  #| msgid "`static' may not be used when defining (as opposed to declaring) a static data member"
  msgid "%<static%> may not be used when defining (as opposed to declaring) a static data member"
  msgstr "'static' mÃ¥ ikke bruges ved definering (i modsÃ¦tning til erklÃ¦ring) af et statisk datamedlem"
  
! #: cp/decl.cc:15751
  #, fuzzy, gcc-internal-format
  #| msgid "static member `%D' declared `register'"
  msgid "static member %qD declared %<register%>"
  msgstr "statisk medlem '%D' erklÃ¦ret 'register'"
  
! #: cp/decl.cc:15757
  #, fuzzy, gcc-internal-format
  #| msgid "cannot explicitly declare member `%#D' to have extern linkage"
  msgid "cannot explicitly declare member %q#D to have extern linkage"
  msgstr "kan ikke eksplicit erklÃ¦re medlemmet '%#D' til at have extern-kÃ¦dning"
  
! #: cp/decl.cc:15765
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%#D' outside of class is not definition"
  msgid "declaration of %<constexpr%> variable %qD is not a definition"
  msgstr "erklÃ¦ring af '%#D' uden for en klasse er ikke en definition"
  
! #: cp/decl.cc:15772
  #, fuzzy, gcc-internal-format
  #| msgid "template parameters cannot be friends"
  msgid "a variable cannot be declared %<consteval%>"
  msgstr "skabelonsparametre kan ikke vÃ¦re venner"
  
! #: cp/decl.cc:15804
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' initialized and declared `extern'"
  msgid "%qs initialized and declared %<extern%>"
  msgstr "'%s' bliver tildelt en startvÃ¦rdi og er samtidig erklÃ¦ret 'extern'"
  
! #: cp/decl.cc:15809
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' has both `extern' and initializer"
  msgid "%qs has both %<extern%> and initializer"
  msgstr "'%s' er erklÃ¦ret 'extern', men bliver tildelt en startvÃ¦rdi"
  
! #: cp/decl.cc:16011
  #, fuzzy, gcc-internal-format
  #| msgid "default argument `%E' uses local variable `%D'"
  msgid "default argument %qE uses %qD"
  msgstr "standardparameter '%E' bruger lokal variabel '%D'"
  
! #: cp/decl.cc:16014
  #, fuzzy, gcc-internal-format
  #| msgid "default argument `%E' uses local variable `%D'"
  msgid "default argument %qE uses local variable %qD"
  msgstr "standardparameter '%E' bruger lokal variabel '%D'"
  
! #: cp/decl.cc:16141
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `virtual' in template declaration of `%#D'"
  msgid "invalid use of cv-qualified type %qT in parameter declaration"
  msgstr "ugyldig brug af 'virtual' i skabelonserklÃ¦ring af '%#D'"
  
! #: cp/decl.cc:16145
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of template-name '%E' in a declarator"
  msgid "invalid use of type %<void%> in parameter declaration"
  msgstr "ugyldig brug af skabelonsnavn '%E' i erklÃ¦ring"
  
! #: cp/decl.cc:16174
  #, fuzzy, gcc-internal-format
  #| msgid "invalid parameter type `%T'"
  msgid "%<volatile%>-qualified parameter is deprecated"
  msgstr "ugyldig parametertype '%T'"
  
! #: cp/decl.cc:16182
  #, fuzzy, gcc-internal-format
  #| msgid "parameter `%D' invalidly declared method type"
  msgid "parameter %qD invalidly declared method type"
  msgstr "parameteren '%D' er pÃ¥ ugyldig vis erklÃ¦ret som af en medlemsfunktionstype"
  
! #: cp/decl.cc:16207
  #, fuzzy, gcc-internal-format
  #| msgid "parameter `%D' includes %s to array of unknown bound `%T'"
  msgid "parameter %qD includes pointer to array of unknown bound %qT"
  msgstr "parameteren '%D' inkluderer %s til tabel med ukendt grÃ¦nse '%T'"
  
! #: cp/decl.cc:16209
  #, fuzzy, gcc-internal-format
  #| msgid "parameter `%D' includes %s to array of unknown bound `%T'"
  msgid "parameter %qD includes reference to array of unknown bound %qT"
  msgstr "parameteren '%D' inkluderer %s til tabel med ukendt grÃ¦nse '%T'"
  
! #: cp/decl.cc:16492
  #, fuzzy, gcc-internal-format
  #| msgid "invalid constructor; you probably meant `%T (const %T&)'"
  msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
  msgstr "ugyldig konstruktionsfunktion; du mente sandsynligvis '%T (const %T&)'"
  
! #: cp/decl.cc:16571
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' was not declared in this scope"
  msgid "%qD may not be declared within a namespace"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: cp/decl.cc:16578
  #, fuzzy, gcc-internal-format
  msgid "%qD may not be declared as static"
  msgstr "'%#D' kan ikke erklÃ¦res"
  
! #: cp/decl.cc:16636
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must be a nonstatic member function"
  msgid "%qD must be a non-static member function"
  msgstr "'%D' skal vÃ¦re en ikke-statisk medlemsfunktion"
  
! #: cp/decl.cc:16644
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must be a nonstatic member function"
  msgid "%qD must be a member function"
  msgstr "'%D' skal vÃ¦re en ikke-statisk medlemsfunktion"
  
! #: cp/decl.cc:16652
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "%qD may be a static member function only with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/decl.cc:16662
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must be either a non-static member function or a non-member function"
  msgid "%qD must be either a non-static member function or a non-member function"
  msgstr "'%D' skal enten vÃ¦re en ikke-statisk medlemsfunktion eller ikke en medlemsfunktion"
  
! #: cp/decl.cc:16672
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must have an argument of class or enumerated type"
  msgid "%qD must have an argument of class or enumerated type"
  msgstr "'%D' skal have en parameter af en klasse- eller enum-type"
  
  #. 13.4.0.3
! #: cp/decl.cc:16703
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ prohibits overloading operator ?:"
  msgid "ISO C++ prohibits overloading %<operator ?:%>"
  msgstr "ISO C++ forbyder flertydiggÃ¸relse af operatoren ?:"
  
! #: cp/decl.cc:16713
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must take either one or two arguments"
  msgid "%qD must not have variable number of arguments"
  msgstr "'%D' skal tage mod Ã©n eller to parametre"
  
! #: cp/decl.cc:16739
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must take either zero or one argument"
  msgid "%qD must have either zero or one argument"
  msgstr "'%D' skal tage mod nul eller Ã©n parameter"
  
! #: cp/decl.cc:16740
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must take either one or two arguments"
  msgid "%qD must have either one or two arguments"
  msgstr "'%D' skal tage mod Ã©n eller to parametre"
  
! #: cp/decl.cc:16752
  #, fuzzy, gcc-internal-format
  #| msgid "postfix `%D' must take `int' as its argument"
  msgid "postfix %qD must have %<int%> as its argument"
  msgstr "postfiks '%D' skal tage mod 'int' som parameter"
  
! #: cp/decl.cc:16753
  #, fuzzy, gcc-internal-format
  #| msgid "postfix `%D' must take `int' as its second argument"
  msgid "postfix %qD must have %<int%> as its second argument"
  msgstr "postfiks '%D' skal tage mod 'int' som den anden parameter"
  
! #: cp/decl.cc:16764
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must take exactly two arguments"
  msgid "%qD must have no arguments"
  msgstr "'%s' skal tage mod to parametre"
  
! #: cp/decl.cc:16765 cp/decl.cc:16775
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must take exactly one argument"
  msgid "%qD must have exactly one argument"
  msgstr "'%s' skal tage mod Ã©n parameter"
  
! #: cp/decl.cc:16776
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must take exactly two arguments"
  msgid "%qD must have exactly two arguments"
  msgstr "'%s' skal tage mod to parametre"
  
! #: cp/decl.cc:16791
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' cannot have default arguments"
  msgid "%qD cannot have default arguments"
  msgstr "'%D' kan ikke have standardparametre"
  
! #: cp/decl.cc:16815
  #, fuzzy, gcc-internal-format
  #| msgid "conversion to %s%s will never use a type conversion operator"
  msgid "converting %qT to %<void%> will never use a type conversion operator"
  msgstr "konvertering til %s%s vil aldrig bruge en typekonverteringsoperator"
  
! #: cp/decl.cc:16822
  #, fuzzy, gcc-internal-format
  #| msgid "conversion to %s%s will never use a type conversion operator"
  msgid "converting %qT to a reference to the same type will never use a type conversion operator"
  msgstr "konvertering til %s%s vil aldrig bruge en typekonverteringsoperator"
  
! #: cp/decl.cc:16824
  #, fuzzy, gcc-internal-format
  #| msgid "conversion to %s%s will never use a type conversion operator"
  msgid "converting %qT to the same type will never use a type conversion operator"
  msgstr "konvertering til %s%s vil aldrig bruge en typekonverteringsoperator"
  
! #: cp/decl.cc:16833
  #, fuzzy, gcc-internal-format
  #| msgid "conversion to %s%s will never use a type conversion operator"
  msgid "converting %qT to a reference to a base class %qT will never use a type conversion operator"
  msgstr "konvertering til %s%s vil aldrig bruge en typekonverteringsoperator"
  
! #: cp/decl.cc:16835
  #, fuzzy, gcc-internal-format
  #| msgid "conversion to %s%s will never use a type conversion operator"
  msgid "converting %qT to a base class %qT will never use a type conversion operator"
  msgstr "konvertering til %s%s vil aldrig bruge en typekonverteringsoperator"
  
! #: cp/decl.cc:16851
  #, fuzzy, gcc-internal-format
  #| msgid "user-defined `%D' always evaluates both arguments"
  msgid "user-defined %qD always evaluates both arguments"
  msgstr "brugerdefineret '%D' evaluerer altid begge parametre"
  
! #: cp/decl.cc:16870
  #, fuzzy, gcc-internal-format
  #| msgid "prefix `%D' should return `%T'"
  msgid "prefix %qD should return %qT"
  msgstr "prÃ¦fiks '%D' skal returnere '%T'"
  
! #: cp/decl.cc:16877
  #, fuzzy, gcc-internal-format
  #| msgid "postfix `%D' should return `%T'"
  msgid "postfix %qD should return %qT"
  msgstr "postfiks '%D' skal returnere '%T'"
  
! #: cp/decl.cc:16889
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' should return by value"
  msgid "%qD should return by value"
  msgstr "'%D' skal returnere pr. vÃ¦rdi (ikke reference)"
  
! #: cp/decl.cc:16944
  #, fuzzy, gcc-internal-format
  #| msgid "using template type parameter `%T' after `%s'"
  msgid "using template type parameter %qT after %qs"
  msgstr "bruger skabelonstypeparameter '%D' efter '%s'"
  
! #: cp/decl.cc:16968
  #, fuzzy, gcc-internal-format
  #| msgid "ambiguous template specialization `%D' for `%+D'"
  msgid "using alias template specialization %qT after %qs"
  msgstr "tvetydig skabelonsspecialisering '%D' for '%+D'"
  
! #: cp/decl.cc:16971
  #, fuzzy, gcc-internal-format
  #| msgid "using typedef-name `%D' after `%s'"
  msgid "using typedef-name %qD after %qs"
  msgstr "bruger typedef-navn '%D' efter '%s'"
  
! #: cp/decl.cc:16973
  #, fuzzy, gcc-internal-format
  msgid "%qD has a previous declaration here"
  msgstr "tidligere erklÃ¦ring som '%#D'"
  
! #: cp/decl.cc:16982
  #, fuzzy, gcc-internal-format
  msgid "%qT referred to as %qs"
  msgstr "'%#D' omerklÃ¦ret som %C"
  
! #: cp/decl.cc:16983 cp/decl.cc:16991
  #, fuzzy, gcc-internal-format
  msgid "%qT has a previous declaration here"
  msgstr "dette er en tidligere erklÃ¦ring"
  
! #: cp/decl.cc:16990
  #, fuzzy, gcc-internal-format
  msgid "%qT referred to as enum"
  msgstr "'%#D' omerklÃ¦ret som %C"
*************** msgstr "'%#D' omerklÃ¦ret som %C"
*** 64656,64764 ****
  #. void f(class C);		// No template header here
  #.
  #. then the required template argument is missing.
! #: cp/decl.cc:17007
  #, fuzzy, gcc-internal-format
  msgid "template argument required for %<%s %T%>"
  msgstr "skabelonsparameter er pÃ¥krÃ¦vet for '%T'"
  
! #: cp/decl.cc:17050 cp/name-lookup.cc:6234 cp/name-lookup.cc:6367
! #: cp/parser.cc:7477 cp/parser.cc:33034
  #, fuzzy, gcc-internal-format
  msgid "reference to %qD is ambiguous"
  msgstr "brug af '%D' er tvetydigt"
  
! #: cp/decl.cc:17060
  #, fuzzy, gcc-internal-format
  msgid "class template %qD redeclared as non-template"
  msgstr "ikke-skabelon benyttet som skabelon"
  
! #: cp/decl.cc:17082 cp/name-lookup.cc:5923
  #, gcc-internal-format
  msgid "%qD has the same name as the class in which it is declared"
  msgstr ""
  
! #: cp/decl.cc:17111 cp/friend.cc:318 cp/parser.cc:3680 cp/parser.cc:7181
! #: cp/pt.cc:10128
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a template"
  msgid "%qT is not a template"
  msgstr "'%T' er ikke en skabelon"
  
! #: cp/decl.cc:17116
  #, gcc-internal-format
  msgid "perhaps you want to explicitly add %<%T::%>"
  msgstr ""
  
! #: cp/decl.cc:17221
  #, fuzzy, gcc-internal-format
  #| msgid "use of enum `%#D' without previous declaration"
  msgid "use of enum %q#D without previous declaration"
  msgstr "brug af enum '%#D' uden tidligere erklÃ¦ring"
  
! #: cp/decl.cc:17248
  #, fuzzy, gcc-internal-format
  #| msgid "friend declaration `%#D' declares a non-template function"
  msgid "redeclaration of %qT as a non-template"
  msgstr "friend-erklÃ¦ring '%#D' erklÃ¦rer en ikke-skabelonsfunktion"
  
! #: cp/decl.cc:17385
  #, fuzzy, gcc-internal-format
  #| msgid "derived union `%T' invalid"
  msgid "derived union %qT invalid"
  msgstr "nedarvet union '%T' ugyldig"
  
! #: cp/decl.cc:17392
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is already defined in the class %T"
  msgid "%qT defined with multiple direct bases"
  msgstr "'%D' er allerede defineret i klassen '%T'"
  
! #: cp/decl.cc:17403
  #, fuzzy, gcc-internal-format
  #| msgid "type `%D' is not a direct or virtual base of `%T'"
  msgid "%qT defined with direct virtual base"
  msgstr "typen '%D' er ikke en direkte eller en virtuel stamklasse til '%T'"
  
! #: cp/decl.cc:17428
  #, fuzzy, gcc-internal-format
  #| msgid "base type `%T' fails to be a struct or class type"
  msgid "base type %qT fails to be a struct or class type"
  msgstr "stamklassetype '%T' er hverken en struct- eller class-type"
  
! #: cp/decl.cc:17458
  #, fuzzy, gcc-internal-format
  #| msgid "recursive type `%T' undefined"
  msgid "recursive type %qT undefined"
  msgstr "rekursiv type '%T' ikke defineret"
  
! #: cp/decl.cc:17460
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate base type `%T' invalid"
  msgid "duplicate base type %qT invalid"
  msgstr "stamklassetype '%T' optrÃ¦der mere end Ã©n gang"
  
! #: cp/decl.cc:17618
  #, gcc-internal-format
  msgid "scoped/unscoped mismatch in enum %q#T"
  msgstr ""
  
! #: cp/decl.cc:17621 cp/decl.cc:17630 cp/decl.cc:17641 cp/decl.cc:18242
! #: cp/parser.cc:22331
  #, fuzzy, gcc-internal-format
  msgid "previous definition here"
  msgstr "tidligere definition her"
  
! #: cp/decl.cc:17627
  #, gcc-internal-format
  msgid "underlying type mismatch in enum %q#T"
  msgstr ""
  
! #: cp/decl.cc:17638
  #, gcc-internal-format
  msgid "different underlying type in enum %q#T"
  msgstr ""
  
! #: cp/decl.cc:17713
  #, fuzzy, gcc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "underlying type %qT of %qT must be an integral type"
--- 64748,64856 ----
  #. void f(class C);		// No template header here
  #.
  #. then the required template argument is missing.
! #: cp/decl.cc:17005
  #, fuzzy, gcc-internal-format
  msgid "template argument required for %<%s %T%>"
  msgstr "skabelonsparameter er pÃ¥krÃ¦vet for '%T'"
  
! #: cp/decl.cc:17048 cp/name-lookup.cc:6237 cp/name-lookup.cc:6370
! #: cp/parser.cc:7477 cp/parser.cc:33093
  #, fuzzy, gcc-internal-format
  msgid "reference to %qD is ambiguous"
  msgstr "brug af '%D' er tvetydigt"
  
! #: cp/decl.cc:17058
  #, fuzzy, gcc-internal-format
  msgid "class template %qD redeclared as non-template"
  msgstr "ikke-skabelon benyttet som skabelon"
  
! #: cp/decl.cc:17080 cp/name-lookup.cc:5926
  #, gcc-internal-format
  msgid "%qD has the same name as the class in which it is declared"
  msgstr ""
  
! #: cp/decl.cc:17109 cp/friend.cc:318 cp/parser.cc:3680 cp/parser.cc:7181
! #: cp/pt.cc:10141
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a template"
  msgid "%qT is not a template"
  msgstr "'%T' er ikke en skabelon"
  
! #: cp/decl.cc:17114
  #, gcc-internal-format
  msgid "perhaps you want to explicitly add %<%T::%>"
  msgstr ""
  
! #: cp/decl.cc:17219
  #, fuzzy, gcc-internal-format
  #| msgid "use of enum `%#D' without previous declaration"
  msgid "use of enum %q#D without previous declaration"
  msgstr "brug af enum '%#D' uden tidligere erklÃ¦ring"
  
! #: cp/decl.cc:17246
  #, fuzzy, gcc-internal-format
  #| msgid "friend declaration `%#D' declares a non-template function"
  msgid "redeclaration of %qT as a non-template"
  msgstr "friend-erklÃ¦ring '%#D' erklÃ¦rer en ikke-skabelonsfunktion"
  
! #: cp/decl.cc:17383
  #, fuzzy, gcc-internal-format
  #| msgid "derived union `%T' invalid"
  msgid "derived union %qT invalid"
  msgstr "nedarvet union '%T' ugyldig"
  
! #: cp/decl.cc:17390
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is already defined in the class %T"
  msgid "%qT defined with multiple direct bases"
  msgstr "'%D' er allerede defineret i klassen '%T'"
  
! #: cp/decl.cc:17401
  #, fuzzy, gcc-internal-format
  #| msgid "type `%D' is not a direct or virtual base of `%T'"
  msgid "%qT defined with direct virtual base"
  msgstr "typen '%D' er ikke en direkte eller en virtuel stamklasse til '%T'"
  
! #: cp/decl.cc:17426
  #, fuzzy, gcc-internal-format
  #| msgid "base type `%T' fails to be a struct or class type"
  msgid "base type %qT fails to be a struct or class type"
  msgstr "stamklassetype '%T' er hverken en struct- eller class-type"
  
! #: cp/decl.cc:17456
  #, fuzzy, gcc-internal-format
  #| msgid "recursive type `%T' undefined"
  msgid "recursive type %qT undefined"
  msgstr "rekursiv type '%T' ikke defineret"
  
! #: cp/decl.cc:17458
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate base type `%T' invalid"
  msgid "duplicate base type %qT invalid"
  msgstr "stamklassetype '%T' optrÃ¦der mere end Ã©n gang"
  
! #: cp/decl.cc:17616
  #, gcc-internal-format
  msgid "scoped/unscoped mismatch in enum %q#T"
  msgstr ""
  
! #: cp/decl.cc:17619 cp/decl.cc:17628 cp/decl.cc:17639 cp/decl.cc:18240
! #: cp/parser.cc:22335
  #, fuzzy, gcc-internal-format
  msgid "previous definition here"
  msgstr "tidligere definition her"
  
! #: cp/decl.cc:17625
  #, gcc-internal-format
  msgid "underlying type mismatch in enum %q#T"
  msgstr ""
  
! #: cp/decl.cc:17636
  #, gcc-internal-format
  msgid "different underlying type in enum %q#T"
  msgstr ""
  
! #: cp/decl.cc:17711
  #, fuzzy, gcc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "underlying type %qT of %qT must be an integral type"
*************** msgstr "parameter til '%s' skal vÃ¦re en
*** 64768,64860 ****
  #.
  #. IF no integral type can represent all the enumerator values, the
  #. enumeration is ill-formed.
! #: cp/decl.cc:17862
  #, gcc-internal-format
  msgid "no integral type can represent all of the enumerator values for %qT"
  msgstr ""
  
! #: cp/decl.cc:18049
  #, fuzzy, gcc-internal-format
  #| msgid "enumerator value for `%s' not integer constant"
  msgid "enumerator value for %qD must have integral or unscoped enumeration type"
  msgstr "enum-vÃ¦rdien for '%s' er ikke en heltalskonstant"
  
! #: cp/decl.cc:18059
  #, fuzzy, gcc-internal-format
  #| msgid "enumerator value for `%s' not integer constant"
  msgid "enumerator value for %qD is not an integer constant"
  msgstr "enum-vÃ¦rdien for '%s' er ikke en heltalskonstant"
  
! #: cp/decl.cc:18108
  #, gcc-internal-format
  msgid "incremented enumerator value is too large for %<unsigned long%>"
  msgstr ""
  
! #: cp/decl.cc:18109
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C restricts enumerator values to range of `int'"
  msgid "incremented enumerator value is too large for %<long%>"
  msgstr "ISO C begrÃ¦nser enum-vÃ¦rdier til rÃ¦kkevidden af 'int'"
  
! #: cp/decl.cc:18120
  #, fuzzy, gcc-internal-format
  #| msgid "overflow in enumeration values at `%D'"
  msgid "overflow in enumeration values at %qD"
  msgstr "enum-vÃ¦rdier for store ved '%D'"
  
! #: cp/decl.cc:18140
  #, fuzzy, gcc-internal-format
  #| msgid "array subscript is not an integer"
  msgid "enumerator value %qE is outside the range of underlying type %qT"
  msgstr "tabelindeks er ikke et heltal"
  
! #: cp/decl.cc:18240 cp/parser.cc:22329
  #, gcc-internal-format
  msgid "multiple definition of %q#T"
  msgstr "flere definitioner af %q#T"
  
! #: cp/decl.cc:18314
  #, fuzzy, gcc-internal-format
  #| msgid "return type `%#T' is incomplete"
  msgid "return type %q#T is incomplete"
  msgstr "returtype '%#T' er ufuldstÃ¦ndig"
  
! #: cp/decl.cc:18481 cp/typeck.cc:11344
  #, fuzzy, gcc-internal-format
  #| msgid "`operator=' should return a reference to `*this'"
  msgid "%<operator=%> should return a reference to %<*this%>"
  msgstr "'operator=' bÃ¸r returnere en reference til '*this'"
  
! #: cp/decl.cc:19300
  #, fuzzy, gcc-internal-format
  #| msgid "no return statement in function returning non-void"
  msgid "no return statements in function returning %qT"
  msgstr "ingen return-sÃ¦tning i en funktion der ikke returnerer void"
  
! #: cp/decl.cc:19302 cp/typeck.cc:11222
  #, gcc-internal-format
  msgid "only plain %<auto%> return type can be deduced to %<void%>"
  msgstr ""
  
! #: cp/decl.cc:19358
  #, fuzzy, gcc-internal-format
  #| msgid "no return statement in function returning non-void"
  msgid "no return statement in %<constexpr%> function returning non-void"
  msgstr "ingen return-sÃ¦tning i en funktion der ikke returnerer void"
  
! #: cp/decl.cc:19549
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is already defined in class `%T'"
  msgid "%qD is already defined in class %qT"
  msgstr "'%D' er allerede defineret i klassen '%T'"
  
! #: cp/decl.cc:19947
  #, fuzzy, gcc-internal-format
  #| msgid "error closing %s: %m"
  msgid "using %qs"
  msgstr "fejl ved lukning af %s: %m"
  
! #: cp/decl.cc:19959
  #, gcc-internal-format
  msgid "use of %qD before deduction of %<auto%>"
  msgstr ""
--- 64860,64952 ----
  #.
  #. IF no integral type can represent all the enumerator values, the
  #. enumeration is ill-formed.
! #: cp/decl.cc:17860
  #, gcc-internal-format
  msgid "no integral type can represent all of the enumerator values for %qT"
  msgstr ""
  
! #: cp/decl.cc:18047
  #, fuzzy, gcc-internal-format
  #| msgid "enumerator value for `%s' not integer constant"
  msgid "enumerator value for %qD must have integral or unscoped enumeration type"
  msgstr "enum-vÃ¦rdien for '%s' er ikke en heltalskonstant"
  
! #: cp/decl.cc:18057
  #, fuzzy, gcc-internal-format
  #| msgid "enumerator value for `%s' not integer constant"
  msgid "enumerator value for %qD is not an integer constant"
  msgstr "enum-vÃ¦rdien for '%s' er ikke en heltalskonstant"
  
! #: cp/decl.cc:18106
  #, gcc-internal-format
  msgid "incremented enumerator value is too large for %<unsigned long%>"
  msgstr ""
  
! #: cp/decl.cc:18107
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C restricts enumerator values to range of `int'"
  msgid "incremented enumerator value is too large for %<long%>"
  msgstr "ISO C begrÃ¦nser enum-vÃ¦rdier til rÃ¦kkevidden af 'int'"
  
! #: cp/decl.cc:18118
  #, fuzzy, gcc-internal-format
  #| msgid "overflow in enumeration values at `%D'"
  msgid "overflow in enumeration values at %qD"
  msgstr "enum-vÃ¦rdier for store ved '%D'"
  
! #: cp/decl.cc:18138
  #, fuzzy, gcc-internal-format
  #| msgid "array subscript is not an integer"
  msgid "enumerator value %qE is outside the range of underlying type %qT"
  msgstr "tabelindeks er ikke et heltal"
  
! #: cp/decl.cc:18238 cp/parser.cc:22333
  #, gcc-internal-format
  msgid "multiple definition of %q#T"
  msgstr "flere definitioner af %q#T"
  
! #: cp/decl.cc:18312
  #, fuzzy, gcc-internal-format
  #| msgid "return type `%#T' is incomplete"
  msgid "return type %q#T is incomplete"
  msgstr "returtype '%#T' er ufuldstÃ¦ndig"
  
! #: cp/decl.cc:18479 cp/typeck.cc:11460
  #, fuzzy, gcc-internal-format
  #| msgid "`operator=' should return a reference to `*this'"
  msgid "%<operator=%> should return a reference to %<*this%>"
  msgstr "'operator=' bÃ¸r returnere en reference til '*this'"
  
! #: cp/decl.cc:19298
  #, fuzzy, gcc-internal-format
  #| msgid "no return statement in function returning non-void"
  msgid "no return statements in function returning %qT"
  msgstr "ingen return-sÃ¦tning i en funktion der ikke returnerer void"
  
! #: cp/decl.cc:19300 cp/typeck.cc:11338
  #, gcc-internal-format
  msgid "only plain %<auto%> return type can be deduced to %<void%>"
  msgstr ""
  
! #: cp/decl.cc:19356
  #, fuzzy, gcc-internal-format
  #| msgid "no return statement in function returning non-void"
  msgid "no return statement in %<constexpr%> function returning non-void"
  msgstr "ingen return-sÃ¦tning i en funktion der ikke returnerer void"
  
! #: cp/decl.cc:19547
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is already defined in class `%T'"
  msgid "%qD is already defined in class %qT"
  msgstr "'%D' er allerede defineret i klassen '%T'"
  
! #: cp/decl.cc:19945
  #, fuzzy, gcc-internal-format
  #| msgid "error closing %s: %m"
  msgid "using %qs"
  msgstr "fejl ved lukning af %s: %m"
  
! #: cp/decl.cc:19957
  #, gcc-internal-format
  msgid "use of %qD before deduction of %<auto%>"
  msgstr ""
*************** msgstr ""
*** 65190,65202 ****
  msgid "%qT declared with greater visibility than its base %qT"
  msgstr ""
  
! #: cp/decl2.cc:5117
  #, fuzzy, gcc-internal-format
  #| msgid "%J'%F' declared `static' but never defined"
  msgid "%q#D, declared using an unnamed type, is used but never defined"
  msgstr "%J'%F' erklÃ¦ret 'static', men aldrig defineret"
  
! #: cp/decl2.cc:5121
  #, fuzzy, gcc-internal-format
  #| msgid "%J'%F' declared `static' but never defined"
  msgid "%q#D, declared using an unnamed type, is used but not defined"
--- 65282,65294 ----
  msgid "%qT declared with greater visibility than its base %qT"
  msgstr ""
  
! #: cp/decl2.cc:5122
  #, fuzzy, gcc-internal-format
  #| msgid "%J'%F' declared `static' but never defined"
  msgid "%q#D, declared using an unnamed type, is used but never defined"
  msgstr "%J'%F' erklÃ¦ret 'static', men aldrig defineret"
  
! #: cp/decl2.cc:5126
  #, fuzzy, gcc-internal-format
  #| msgid "%J'%F' declared `static' but never defined"
  msgid "%q#D, declared using an unnamed type, is used but not defined"
*************** msgstr "%J'%F' erklÃ¦ret 'static', men a
*** 65206,65629 ****
  #. no linkage can only be used to declare extern "C"
  #. entities.  Since it's not always an error in the
  #. ISO C++ 90 Standard, we only issue a warning.
! #: cp/decl2.cc:5131
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration of `%#D' with %L linkage"
  msgid "unnamed type with no linkage used to declare variable %q#D with linkage"
  msgstr "tidligere erklÃ¦ring af '%#D' med %L-kÃ¦dning"
  
! #: cp/decl2.cc:5135
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration of `%#D' with %L linkage"
  msgid "unnamed type with no linkage used to declare function %q#D with linkage"
  msgstr "tidligere erklÃ¦ring af '%#D' med %L-kÃ¦dning"
  
! #: cp/decl2.cc:5139
  #, fuzzy, gcc-internal-format
  #| msgid "`%#D' does not refer to the unqualified type, so it is not used for linkage"
  msgid "%q#D does not refer to the unqualified type, so it is not used for linkage"
  msgstr "'%#D' refererer ikke til den ikkemodificerede type, so den bruges ikke til sammenkÃ¦dning"
  
! #: cp/decl2.cc:5157
  #, fuzzy, gcc-internal-format
  #| msgid "%J'%F' declared `static' but never defined"
  msgid "%q#D, declared using local type %qT, is used but never defined"
  msgstr "%J'%F' erklÃ¦ret 'static', men aldrig defineret"
  
! #: cp/decl2.cc:5161
  #, fuzzy, gcc-internal-format
  #| msgid "%J'%F' declared `static' but never defined"
  msgid "%q#D, declared using local type %qT, is used but not defined here"
  msgstr "%J'%F' erklÃ¦ret 'static', men aldrig defineret"
  
! #: cp/decl2.cc:5169
  #, gcc-internal-format
  msgid "type %qT with no linkage used to declare variable %q#D with linkage"
  msgstr ""
  
! #: cp/decl2.cc:5172
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration of `%#D' with %L linkage"
  msgid "type %qT with no linkage used to declare function %q#D with linkage"
  msgstr "tidligere erklÃ¦ring af '%#D' med %L-kÃ¦dning"
  
! #: cp/decl2.cc:5377
  #, fuzzy, gcc-internal-format
  msgid "mangling of %q#D as %qE conflicts with a previous mangle"
  msgstr "strider mod tidligere erklÃ¦ring '%#D'"
  
  # hÃ¦nger sammen med nÃ¦ste tekst
! #: cp/decl2.cc:5380
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration `%D'"
  msgid "previous mangling %q#D"
  msgstr "tidligere erklÃ¦ring '%D'"
  
! #: cp/decl2.cc:5382
  #, gcc-internal-format
  msgid "a later %<-fabi-version=%> (or =0) avoids this error with a change in mangling"
  msgstr ""
  
! #: cp/decl2.cc:5454 cp/decl2.cc:5457
  #, gcc-internal-format
  msgid "the program should also define %qD"
  msgstr ""
  
! #: cp/decl2.cc:5820
  #, fuzzy, gcc-internal-format
  #| msgid "inline function `%D' used but never defined"
  msgid "inline function %qD used but never defined"
  msgstr "indbygget funktion '%D' benyttet, men aldrig defineret"
  
! #: cp/decl2.cc:6058
  #, fuzzy, gcc-internal-format
  #| msgid "default argument missing for parameter %P of `%+#D'"
  msgid "default argument missing for parameter %P of %q#D"
  msgstr "standardparameter mangler for parameter %P  i '%+#D'"
  
! #: cp/decl2.cc:6063
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' cannot have default arguments"
  msgid "...following parameter %P which has a default argument"
  msgstr "'%D' kan ikke have standardparametre"
  
! #: cp/decl2.cc:6186
  #, fuzzy, gcc-internal-format
  #| msgid "class %qE is deprecated"
  msgid "implicitly-declared %qD is deprecated"
  msgstr "klassen %qE er forÃ¦ldet"
  
! #: cp/decl2.cc:6190
  #, gcc-internal-format
  msgid "because %qT has user-provided %qD"
  msgstr ""
  
  #. We mark a lambda conversion op as deleted if we can't
  #. generate it properly; see maybe_add_lambda_conv_op.
! #: cp/decl2.cc:6336
  #, fuzzy, gcc-internal-format
  #| msgid "converting NULL to non-pointer type"
  msgid "converting lambda that uses %<...%> to function pointer"
  msgstr "konverterer NULL til en ikke-henvisningstype"
  
! #: cp/decl2.cc:6345
  #, fuzzy, gcc-internal-format
  #| msgid "sizeof applied to a function type"
  msgid "use of deleted function %qD: %s"
  msgstr "sizeof benyttet pÃ¥ en funktionstype"
  
! #: cp/decl2.cc:6349
  #, fuzzy, gcc-internal-format
  #| msgid "sizeof applied to a function type"
  msgid "use of deleted function %qD"
  msgstr "sizeof benyttet pÃ¥ en funktionstype"
  
! #: cp/decl2.cc:6397
  #, fuzzy, gcc-internal-format
  msgid "use of function %qD with unsatisfied constraints"
  msgstr "'%#D' omerklÃ¦ret som en anden form for symbol"
  
! #: cp/decl2.cc:6436
  #, fuzzy, gcc-internal-format
  #| msgid "use of template qualifier outside template"
  msgid "use of built-in parameter pack %qD outside of a template"
  msgstr "brug af skabelonsmodifikation uden for skabelon"
  
! #: cp/error.cc:3791
  #, fuzzy
  #| msgid "    inlined from %qs at %r%s:%d:%d%R"
  msgid "    inlined from %qD at %r%s:%d:%d%R"
  msgstr "    indlejret fra %qs ved %r%s:%d:%d%R"
  
! #: cp/error.cc:3796
  #, fuzzy
  #| msgid "    inlined from %qs at %r%s:%d%R"
  msgid "    inlined from %qD at %r%s:%d%R"
  msgstr "    indlejret fra %qs ved %r%s:%d%R"
  
! #: cp/error.cc:3802
  #, fuzzy, gcc-internal-format
  #| msgid "    inlined from %qs"
  msgid "    inlined from %qD"
  msgstr "    indlejret fra %qs"
  
! #: cp/error.cc:3828
  #, fuzzy, gcc-internal-format
  #| msgid "In member function `%s':"
  msgid "In static member function %qD"
  msgstr "I medlemsfunktionen '%s':"
  
! #: cp/error.cc:3830
  #, fuzzy, gcc-internal-format
  #| msgid "In construct"
  msgid "In copy constructor %qD"
  msgstr "I konstruktionen"
  
! #: cp/error.cc:3832
  #, fuzzy, gcc-internal-format
  #| msgid "In construct"
  msgid "In constructor %qD"
  msgstr "I konstruktionen"
  
! #: cp/error.cc:3834
  #, fuzzy, gcc-internal-format
  #| msgid "In construct"
  msgid "In destructor %qD"
  msgstr "I konstruktionen"
  
! #: cp/error.cc:3836
  #, fuzzy, gcc-internal-format
  #| msgid "In function"
  msgid "In lambda function"
  msgstr "I funktionen"
  
! #: cp/error.cc:3838
  #, fuzzy, gcc-internal-format
  #| msgid "In member function `%s':"
  msgid "In explicit object member function %qD"
  msgstr "I medlemsfunktionen '%s':"
  
! #: cp/error.cc:3840
  #, fuzzy, gcc-internal-format
  #| msgid "In member function %qs"
  msgid "In member function %qD"
  msgstr "I medlemsfunktionen %qs"
  
! #: cp/error.cc:3843
  #, fuzzy, gcc-internal-format
  #| msgid "In function %qs"
  msgid "In function %qD"
  msgstr "I funktionen %qs"
  
! #: cp/error.cc:3870
  #, fuzzy
  #| msgid "%s: In instantiation of `%s':\n"
  msgid "%s%s%sIn substitution of %qS:\n"
  msgstr "%s: i instantiering af '%s':\n"
  
! #: cp/error.cc:3871
  #, fuzzy, gcc-internal-format
  #| msgid "%s: In instantiation of `%s':\n"
  msgid "%s%s%sIn instantiation of %q#D:\n"
  msgstr "%s: i instantiering af '%s':\n"
  
! #: cp/error.cc:3891
  msgid "%r%s:%d:%d:%R   "
  msgstr ""
  
! #: cp/error.cc:3894
  msgid "%r%s:%d:%R   "
  msgstr ""
  
! #: cp/error.cc:3987
  msgid "recursively required by substitution of %qS\n"
  msgstr ""
  
! #: cp/error.cc:3988
  msgid "required by substitution of %qS\n"
  msgstr ""
  
! #: cp/error.cc:3993
  #, gcc-internal-format
  msgid "recursively required from %q#D\n"
  msgstr ""
  
! #: cp/error.cc:3994
  #, gcc-internal-format
  msgid "required from %q#D\n"
  msgstr ""
  
! #: cp/error.cc:4001
  #, fuzzy, gcc-internal-format
  #| msgid "called from here"
  msgid "recursively required from here\n"
  msgstr "kaldt herfra"
  
! #: cp/error.cc:4002
  #, fuzzy, gcc-internal-format
  #| msgid "called from here"
  msgid "required from here\n"
  msgstr "kaldt herfra"
  
! #: cp/error.cc:4052
  #, gcc-internal-format, gfc-internal-format
  msgid "[ skipping %d instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]\n"
  msgstr ""
  
! #: cp/error.cc:4104
  #, fuzzy, gcc-internal-format
  #| msgid "no args to macro `%s'"
  msgid "in %<constexpr%> expansion of %qs"
  msgstr "ingen parametre givet til makroen '%s'"
  
! #: cp/error.cc:4117
  #, gcc-internal-format
  msgid "required by the constraints of %q#D\n"
  msgstr ""
  
! #: cp/error.cc:4132
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration of `%D'"
  msgid "required for the satisfaction of %qE"
  msgstr "'%D' er tidligere erklÃ¦ret"
  
! #: cp/error.cc:4154
  #, fuzzy, gcc-internal-format
  #| msgid "-c or -S required for Ada"
  msgid "required for constraint satisfaction\n"
  msgstr "-c eller -S krÃ¦ves til Ada"
  
! #: cp/error.cc:4185
  #, gcc-internal-format
  msgid "in requirements with "
  msgstr ""
  
! #: cp/error.cc:4186
  #, fuzzy, gcc-internal-format
  #| msgid "no arguments"
  msgid "in requirements "
  msgstr "ingen parametre"
  
! #: cp/error.cc:4304
  #, fuzzy, gcc-internal-format
  #| msgid "no arguments"
  msgid "(no argument)"
  msgstr "ingen parametre"
  
! #: cp/error.cc:4398
  #, gcc-internal-format
  msgid "[...]"
  msgstr ""
  
! #: cp/error.cc:4750
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "extended initializer lists only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/error.cc:4755
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "explicit conversion operators only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/error.cc:4760
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "variadic templates only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/error.cc:4765
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "lambda expressions only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/error.cc:4770
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "C++11 auto only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/error.cc:4775
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "scoped enums only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/error.cc:4780
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "defaulted and deleted functions only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/error.cc:4786
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "inline namespaces only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/error.cc:4791
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "override controls (override/final) only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/error.cc:4796
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "non-static data member initializers only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/error.cc:4801
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "user-defined literals only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/error.cc:4806
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "delegating constructors only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/error.cc:4811
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "inheriting constructors only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/error.cc:4817
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "C++11 attributes only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/error.cc:4822
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "ref-qualifiers only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/error.cc:4875
  #, fuzzy, gcc-internal-format
  msgid "incomplete type %qT used in nested name specifier"
  msgstr "ufuldstÃ¦ndig type '%T' kan ikke bruges til at navngive et virkefelt"
  
! #: cp/error.cc:4880
  #, fuzzy, gcc-internal-format
  msgid "reference to %<%T::%D%> is ambiguous"
  msgstr "brug af '%D' er tvetydigt"
  
! #: cp/error.cc:4895
  #, fuzzy, gcc-internal-format
  #| msgid "'%D' has no member named '%E'"
  msgid "%qD is not a member of %qT; did you mean %qs?"
  msgstr "'%D' har intet medlem ved navn '%E'"
  
! #: cp/error.cc:4899 cp/typeck.cc:2897
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a member of `%T'"
  msgid "%qD is not a member of %qT"
  msgstr "'%D' er ikke et medlem af '%T'"
  
! #: cp/error.cc:4921
  #, fuzzy, gcc-internal-format
  #| msgid "'%D' has no member named '%E'"
  msgid "%qD is not a member of %qD; did you mean %qs?"
  msgstr "'%D' har intet medlem ved navn '%E'"
  
! #: cp/error.cc:4925 cp/typeck.cc:3492
  #, fuzzy, gcc-internal-format
  msgid "%qD is not a member of %qD"
  msgstr "'%D' er ikke et medlem af '%T'"
  
! #: cp/error.cc:4936
  #, fuzzy, gcc-internal-format
  msgid "%<::%D%> has not been declared; did you mean %qs?"
  msgstr "'%#D' kan ikke erklÃ¦res"
  
! #: cp/error.cc:4940
  #, fuzzy, gcc-internal-format
  msgid "%<::%D%> has not been declared"
  msgstr "'%#D' kan ikke erklÃ¦res"
--- 65298,65721 ----
  #. no linkage can only be used to declare extern "C"
  #. entities.  Since it's not always an error in the
  #. ISO C++ 90 Standard, we only issue a warning.
! #: cp/decl2.cc:5136
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration of `%#D' with %L linkage"
  msgid "unnamed type with no linkage used to declare variable %q#D with linkage"
  msgstr "tidligere erklÃ¦ring af '%#D' med %L-kÃ¦dning"
  
! #: cp/decl2.cc:5140
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration of `%#D' with %L linkage"
  msgid "unnamed type with no linkage used to declare function %q#D with linkage"
  msgstr "tidligere erklÃ¦ring af '%#D' med %L-kÃ¦dning"
  
! #: cp/decl2.cc:5144
  #, fuzzy, gcc-internal-format
  #| msgid "`%#D' does not refer to the unqualified type, so it is not used for linkage"
  msgid "%q#D does not refer to the unqualified type, so it is not used for linkage"
  msgstr "'%#D' refererer ikke til den ikkemodificerede type, so den bruges ikke til sammenkÃ¦dning"
  
! #: cp/decl2.cc:5162
  #, fuzzy, gcc-internal-format
  #| msgid "%J'%F' declared `static' but never defined"
  msgid "%q#D, declared using local type %qT, is used but never defined"
  msgstr "%J'%F' erklÃ¦ret 'static', men aldrig defineret"
  
! #: cp/decl2.cc:5166
  #, fuzzy, gcc-internal-format
  #| msgid "%J'%F' declared `static' but never defined"
  msgid "%q#D, declared using local type %qT, is used but not defined here"
  msgstr "%J'%F' erklÃ¦ret 'static', men aldrig defineret"
  
! #: cp/decl2.cc:5174
  #, gcc-internal-format
  msgid "type %qT with no linkage used to declare variable %q#D with linkage"
  msgstr ""
  
! #: cp/decl2.cc:5177
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration of `%#D' with %L linkage"
  msgid "type %qT with no linkage used to declare function %q#D with linkage"
  msgstr "tidligere erklÃ¦ring af '%#D' med %L-kÃ¦dning"
  
! #: cp/decl2.cc:5382
  #, fuzzy, gcc-internal-format
  msgid "mangling of %q#D as %qE conflicts with a previous mangle"
  msgstr "strider mod tidligere erklÃ¦ring '%#D'"
  
  # hÃ¦nger sammen med nÃ¦ste tekst
! #: cp/decl2.cc:5385
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration `%D'"
  msgid "previous mangling %q#D"
  msgstr "tidligere erklÃ¦ring '%D'"
  
! #: cp/decl2.cc:5387
  #, gcc-internal-format
  msgid "a later %<-fabi-version=%> (or =0) avoids this error with a change in mangling"
  msgstr ""
  
! #: cp/decl2.cc:5459 cp/decl2.cc:5462
  #, gcc-internal-format
  msgid "the program should also define %qD"
  msgstr ""
  
! #: cp/decl2.cc:5825
  #, fuzzy, gcc-internal-format
  #| msgid "inline function `%D' used but never defined"
  msgid "inline function %qD used but never defined"
  msgstr "indbygget funktion '%D' benyttet, men aldrig defineret"
  
! #: cp/decl2.cc:6059
  #, fuzzy, gcc-internal-format
  #| msgid "default argument missing for parameter %P of `%+#D'"
  msgid "default argument missing for parameter %P of %q#D"
  msgstr "standardparameter mangler for parameter %P  i '%+#D'"
  
! #: cp/decl2.cc:6064
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' cannot have default arguments"
  msgid "...following parameter %P which has a default argument"
  msgstr "'%D' kan ikke have standardparametre"
  
! #: cp/decl2.cc:6187
  #, fuzzy, gcc-internal-format
  #| msgid "class %qE is deprecated"
  msgid "implicitly-declared %qD is deprecated"
  msgstr "klassen %qE er forÃ¦ldet"
  
! #: cp/decl2.cc:6191
  #, gcc-internal-format
  msgid "because %qT has user-provided %qD"
  msgstr ""
  
  #. We mark a lambda conversion op as deleted if we can't
  #. generate it properly; see maybe_add_lambda_conv_op.
! #: cp/decl2.cc:6364
  #, fuzzy, gcc-internal-format
  #| msgid "converting NULL to non-pointer type"
  msgid "converting lambda that uses %<...%> to function pointer"
  msgstr "konverterer NULL til en ikke-henvisningstype"
  
! #: cp/decl2.cc:6373
  #, fuzzy, gcc-internal-format
  #| msgid "sizeof applied to a function type"
  msgid "use of deleted function %qD: %s"
  msgstr "sizeof benyttet pÃ¥ en funktionstype"
  
! #: cp/decl2.cc:6377
  #, fuzzy, gcc-internal-format
  #| msgid "sizeof applied to a function type"
  msgid "use of deleted function %qD"
  msgstr "sizeof benyttet pÃ¥ en funktionstype"
  
! #: cp/decl2.cc:6425
  #, fuzzy, gcc-internal-format
  msgid "use of function %qD with unsatisfied constraints"
  msgstr "'%#D' omerklÃ¦ret som en anden form for symbol"
  
! #: cp/decl2.cc:6464
  #, fuzzy, gcc-internal-format
  #| msgid "use of template qualifier outside template"
  msgid "use of built-in parameter pack %qD outside of a template"
  msgstr "brug af skabelonsmodifikation uden for skabelon"
  
! #: cp/error.cc:3812
  #, fuzzy
  #| msgid "    inlined from %qs at %r%s:%d:%d%R"
  msgid "    inlined from %qD at %r%s:%d:%d%R"
  msgstr "    indlejret fra %qs ved %r%s:%d:%d%R"
  
! #: cp/error.cc:3817
  #, fuzzy
  #| msgid "    inlined from %qs at %r%s:%d%R"
  msgid "    inlined from %qD at %r%s:%d%R"
  msgstr "    indlejret fra %qs ved %r%s:%d%R"
  
! #: cp/error.cc:3823
  #, fuzzy, gcc-internal-format
  #| msgid "    inlined from %qs"
  msgid "    inlined from %qD"
  msgstr "    indlejret fra %qs"
  
! #: cp/error.cc:3849
  #, fuzzy, gcc-internal-format
  #| msgid "In member function `%s':"
  msgid "In static member function %qD"
  msgstr "I medlemsfunktionen '%s':"
  
! #: cp/error.cc:3851
  #, fuzzy, gcc-internal-format
  #| msgid "In construct"
  msgid "In copy constructor %qD"
  msgstr "I konstruktionen"
  
! #: cp/error.cc:3853
  #, fuzzy, gcc-internal-format
  #| msgid "In construct"
  msgid "In constructor %qD"
  msgstr "I konstruktionen"
  
! #: cp/error.cc:3855
  #, fuzzy, gcc-internal-format
  #| msgid "In construct"
  msgid "In destructor %qD"
  msgstr "I konstruktionen"
  
! #: cp/error.cc:3857
  #, fuzzy, gcc-internal-format
  #| msgid "In function"
  msgid "In lambda function"
  msgstr "I funktionen"
  
! #: cp/error.cc:3859
  #, fuzzy, gcc-internal-format
  #| msgid "In member function `%s':"
  msgid "In explicit object member function %qD"
  msgstr "I medlemsfunktionen '%s':"
  
! #: cp/error.cc:3861
  #, fuzzy, gcc-internal-format
  #| msgid "In member function %qs"
  msgid "In member function %qD"
  msgstr "I medlemsfunktionen %qs"
  
! #: cp/error.cc:3864
  #, fuzzy, gcc-internal-format
  #| msgid "In function %qs"
  msgid "In function %qD"
  msgstr "I funktionen %qs"
  
! #: cp/error.cc:3891
  #, fuzzy
  #| msgid "%s: In instantiation of `%s':\n"
  msgid "%s%s%sIn substitution of %qS:\n"
  msgstr "%s: i instantiering af '%s':\n"
  
! #: cp/error.cc:3892
  #, fuzzy, gcc-internal-format
  #| msgid "%s: In instantiation of `%s':\n"
  msgid "%s%s%sIn instantiation of %q#D:\n"
  msgstr "%s: i instantiering af '%s':\n"
  
! #: cp/error.cc:3912
  msgid "%r%s:%d:%d:%R   "
  msgstr ""
  
! #: cp/error.cc:3915
  msgid "%r%s:%d:%R   "
  msgstr ""
  
! #: cp/error.cc:4008
  msgid "recursively required by substitution of %qS\n"
  msgstr ""
  
! #: cp/error.cc:4009
  msgid "required by substitution of %qS\n"
  msgstr ""
  
! #: cp/error.cc:4014
  #, gcc-internal-format
  msgid "recursively required from %q#D\n"
  msgstr ""
  
! #: cp/error.cc:4015
  #, gcc-internal-format
  msgid "required from %q#D\n"
  msgstr ""
  
! #: cp/error.cc:4022
  #, fuzzy, gcc-internal-format
  #| msgid "called from here"
  msgid "recursively required from here\n"
  msgstr "kaldt herfra"
  
! #: cp/error.cc:4023
  #, fuzzy, gcc-internal-format
  #| msgid "called from here"
  msgid "required from here\n"
  msgstr "kaldt herfra"
  
! #: cp/error.cc:4073
  #, gcc-internal-format, gfc-internal-format
  msgid "[ skipping %d instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]\n"
  msgstr ""
  
! #: cp/error.cc:4125
  #, fuzzy, gcc-internal-format
  #| msgid "no args to macro `%s'"
  msgid "in %<constexpr%> expansion of %qs"
  msgstr "ingen parametre givet til makroen '%s'"
  
! #: cp/error.cc:4138
  #, gcc-internal-format
  msgid "required by the constraints of %q#D\n"
  msgstr ""
  
! #: cp/error.cc:4153
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration of `%D'"
  msgid "required for the satisfaction of %qE"
  msgstr "'%D' er tidligere erklÃ¦ret"
  
! #: cp/error.cc:4175
  #, fuzzy, gcc-internal-format
  #| msgid "-c or -S required for Ada"
  msgid "required for constraint satisfaction\n"
  msgstr "-c eller -S krÃ¦ves til Ada"
  
! #: cp/error.cc:4206
  #, gcc-internal-format
  msgid "in requirements with "
  msgstr ""
  
! #: cp/error.cc:4207
  #, fuzzy, gcc-internal-format
  #| msgid "no arguments"
  msgid "in requirements "
  msgstr "ingen parametre"
  
! #: cp/error.cc:4325
  #, fuzzy, gcc-internal-format
  #| msgid "no arguments"
  msgid "(no argument)"
  msgstr "ingen parametre"
  
! #: cp/error.cc:4419
  #, gcc-internal-format
  msgid "[...]"
  msgstr ""
  
! #: cp/error.cc:4771
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "extended initializer lists only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/error.cc:4776
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "explicit conversion operators only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/error.cc:4781
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "variadic templates only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/error.cc:4786
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "lambda expressions only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/error.cc:4791
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "C++11 auto only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/error.cc:4796
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "scoped enums only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/error.cc:4801
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "defaulted and deleted functions only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/error.cc:4807
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "inline namespaces only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/error.cc:4812
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "override controls (override/final) only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/error.cc:4817
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "non-static data member initializers only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/error.cc:4822
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "user-defined literals only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/error.cc:4827
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "delegating constructors only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/error.cc:4832
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "inheriting constructors only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/error.cc:4838
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "C++11 attributes only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/error.cc:4843
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "ref-qualifiers only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/error.cc:4896
  #, fuzzy, gcc-internal-format
  msgid "incomplete type %qT used in nested name specifier"
  msgstr "ufuldstÃ¦ndig type '%T' kan ikke bruges til at navngive et virkefelt"
  
! #: cp/error.cc:4901
  #, fuzzy, gcc-internal-format
  msgid "reference to %<%T::%D%> is ambiguous"
  msgstr "brug af '%D' er tvetydigt"
  
! #: cp/error.cc:4916
  #, fuzzy, gcc-internal-format
  #| msgid "'%D' has no member named '%E'"
  msgid "%qD is not a member of %qT; did you mean %qs?"
  msgstr "'%D' har intet medlem ved navn '%E'"
  
! #: cp/error.cc:4920 cp/typeck.cc:2897
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a member of `%T'"
  msgid "%qD is not a member of %qT"
  msgstr "'%D' er ikke et medlem af '%T'"
  
! #: cp/error.cc:4942
  #, fuzzy, gcc-internal-format
  #| msgid "'%D' has no member named '%E'"
  msgid "%qD is not a member of %qD; did you mean %qs?"
  msgstr "'%D' har intet medlem ved navn '%E'"
  
! #: cp/error.cc:4946 cp/typeck.cc:3492
  #, fuzzy, gcc-internal-format
  msgid "%qD is not a member of %qD"
  msgstr "'%D' er ikke et medlem af '%T'"
  
! #: cp/error.cc:4957
  #, fuzzy, gcc-internal-format
  msgid "%<::%D%> has not been declared; did you mean %qs?"
  msgstr "'%#D' kan ikke erklÃ¦res"
  
! #: cp/error.cc:4961
  #, fuzzy, gcc-internal-format
  msgid "%<::%D%> has not been declared"
  msgstr "'%#D' kan ikke erklÃ¦res"
*************** msgstr "'%D' bÃ¸r blive klargjort i medl
*** 65880,65899 ****
  msgid "invalid initializer for array member %q#D"
  msgstr "ugyldig startvÃ¦rdi til virtuel medlemsfunktion '%D'"
  
! #: cp/init.cc:1158 cp/init.cc:1184 cp/init.cc:2781 cp/method.cc:2648
  #, fuzzy, gcc-internal-format
  #| msgid "uninitialized const member `%D'"
  msgid "uninitialized const member in %q#T"
  msgstr "konstant medlem '%D' uden startvÃ¦rdi"
  
  #: cp/init.cc:1160 cp/init.cc:1178 cp/init.cc:1186 cp/init.cc:2765
! #: cp/init.cc:2794 cp/method.cc:2651 cp/method.cc:2662
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' will be initialized after"
  msgid "%q#D should be initialized"
  msgstr "'%D' vil blive klargjort efter"
  
! #: cp/init.cc:1176 cp/init.cc:2752 cp/method.cc:2659
  #, fuzzy, gcc-internal-format
  #| msgid "uninitialized reference member `%D'"
  msgid "uninitialized reference member in %q#T"
--- 65972,65991 ----
  msgid "invalid initializer for array member %q#D"
  msgstr "ugyldig startvÃ¦rdi til virtuel medlemsfunktion '%D'"
  
! #: cp/init.cc:1158 cp/init.cc:1184 cp/init.cc:2781 cp/method.cc:2649
  #, fuzzy, gcc-internal-format
  #| msgid "uninitialized const member `%D'"
  msgid "uninitialized const member in %q#T"
  msgstr "konstant medlem '%D' uden startvÃ¦rdi"
  
  #: cp/init.cc:1160 cp/init.cc:1178 cp/init.cc:1186 cp/init.cc:2765
! #: cp/init.cc:2794 cp/method.cc:2652 cp/method.cc:2663
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' will be initialized after"
  msgid "%q#D should be initialized"
  msgstr "'%D' vil blive klargjort efter"
  
! #: cp/init.cc:1176 cp/init.cc:2752 cp/method.cc:2660
  #, fuzzy, gcc-internal-format
  #| msgid "uninitialized reference member `%D'"
  msgid "uninitialized reference member in %q#T"
*************** msgstr ""
*** 66293,66305 ****
  msgid "%<this%> was not captured for this lambda function"
  msgstr ""
  
! #: cp/lambda.cc:1581
  #, fuzzy, gcc-internal-format
  #| msgid "assignment (not initialization) in declaration"
  msgid "the mangled name of %qT changed in %<-fabi-version=20%> (GCC 15.1)"
  msgstr "tildeling (ikke klargÃ¸ring) i erklÃ¦ring"
  
! #: cp/lambda.cc:1585
  #, fuzzy, gcc-internal-format
  #| msgid "assignment (not initialization) in declaration"
  msgid "the mangled name of %qT changes in %<-fabi-version=20%> (GCC 15.1)"
--- 66385,66397 ----
  msgid "%<this%> was not captured for this lambda function"
  msgstr ""
  
! #: cp/lambda.cc:1578
  #, fuzzy, gcc-internal-format
  #| msgid "assignment (not initialization) in declaration"
  msgid "the mangled name of %qT changed in %<-fabi-version=20%> (GCC 15.1)"
  msgstr "tildeling (ikke klargÃ¸ring) i erklÃ¦ring"
  
! #: cp/lambda.cc:1582
  #, fuzzy, gcc-internal-format
  #| msgid "assignment (not initialization) in declaration"
  msgid "the mangled name of %qT changes in %<-fabi-version=20%> (GCC 15.1)"
*************** msgstr ""
*** 66449,66461 ****
  msgid "mapper exit status %d"
  msgstr "ld returnerede afslutningskoden %d"
  
! #: cp/method.cc:867 cp/method.cc:2601
  #, fuzzy, gcc-internal-format
  #| msgid "non-static const member `%#D', can't use default assignment operator"
  msgid "non-static const member %q#D, cannot use default assignment operator"
  msgstr "ikke-statisk konstant medlem '%#D' kan ikke bruge standardtildelingsoperatoren"
  
! #: cp/method.cc:873 cp/method.cc:2607
  #, fuzzy, gcc-internal-format
  #| msgid "non-static reference member `%#D', can't use default assignment operator"
  msgid "non-static reference member %q#D, cannot use default assignment operator"
--- 66541,66553 ----
  msgid "mapper exit status %d"
  msgstr "ld returnerede afslutningskoden %d"
  
! #: cp/method.cc:867 cp/method.cc:2602
  #, fuzzy, gcc-internal-format
  #| msgid "non-static const member `%#D', can't use default assignment operator"
  msgid "non-static const member %q#D, cannot use default assignment operator"
  msgstr "ikke-statisk konstant medlem '%#D' kan ikke bruge standardtildelingsoperatoren"
  
! #: cp/method.cc:873 cp/method.cc:2608
  #, fuzzy, gcc-internal-format
  #| msgid "non-static reference member `%#D', can't use default assignment operator"
  msgid "non-static reference member %q#D, cannot use default assignment operator"
*************** msgstr "'%E' er ikke en gyldig skabelons
*** 66583,66707 ****
  msgid "first argument type %qT of a pointer to member must be a class type or a pointer to a class type"
  msgstr ""
  
! #: cp/method.cc:2524
  #, gcc-internal-format
  msgid "union member %q+D with non-trivial %qD"
  msgstr ""
  
! #: cp/method.cc:2535
  #, fuzzy, gcc-internal-format
  #| msgid "Only constructors can invoke constructors"
  msgid "defaulted destructor calls non-%<constexpr%> %qD"
  msgstr "Kun konstruktionsfunktioner kan kalde konstruktionsfunktioner"
  
! #: cp/method.cc:2536
  #, fuzzy, gcc-internal-format
  #| msgid "Only constructors can invoke constructors"
  msgid "defaulted constructor calls non-%<constexpr%> %qD"
  msgstr "Kun konstruktionsfunktioner kan kalde konstruktionsfunktioner"
  
! #: cp/method.cc:2624
  #, gcc-internal-format
  msgid "initializer for %q#D is invalid"
  msgstr "startvÃ¦rdi for %q#D er ugyldig"
  
! #: cp/method.cc:2681
  #, fuzzy, gcc-internal-format
  #| msgid "(use `=' to initialize static data members)"
  msgid "defaulted default constructor does not initialize %q#D"
  msgstr "(brug '=' for at klargÃ¸re statiske datamedlemmer)"
  
! #: cp/method.cc:2692
  #, fuzzy, gcc-internal-format
  #| msgid "creating pointer to member reference type `%T'"
  msgid "copying non-static data member %q#D of rvalue reference type"
  msgstr "opretter henvisning til medlemsreference af typen '%T'"
  
  #. A trivial constructor doesn't have any NSDMI.
! #: cp/method.cc:2910
  #, fuzzy, gcc-internal-format
  #| msgid "(use `=' to initialize static data members)"
  msgid "defaulted default constructor does not initialize any non-static data member"
  msgstr "(brug '=' for at klargÃ¸re statiske datamedlemmer)"
  
! #: cp/method.cc:2954
  #, gcc-internal-format
  msgid "defaulted move assignment for %qT calls a non-trivial move assignment operator for virtual base %qT"
  msgstr ""
  
! #: cp/method.cc:3086
  #, gcc-internal-format
  msgid "a lambda closure type has a deleted default constructor"
  msgstr ""
  
! #: cp/method.cc:3089
  #, gcc-internal-format
  msgid "a lambda closure type has a deleted copy assignment operator"
  msgstr ""
  
! #: cp/method.cc:3098
  #, gcc-internal-format
  msgid "%q#D is implicitly declared as deleted because %qT declares a move constructor or move assignment operator"
  msgstr ""
  
! #: cp/method.cc:3109
  #, gcc-internal-format
  msgid "%q#D inherits from multiple base subobjects"
  msgstr ""
  
! #: cp/method.cc:3117 cp/method.cc:3141
  #, gcc-internal-format
  msgid "%q#D is implicitly deleted because the default definition would be ill-formed:"
  msgstr ""
  
! #: cp/method.cc:3150
  msgid "%q#F is implicitly deleted because its exception-specification does not match the implicit exception-specification %qX"
  msgstr ""
  
! #: cp/method.cc:3573
  #, gcc-internal-format
  msgid "explicitly defaulted copy constructor is implicitly deleted because its declared type does not match the type of an implicit copy constructor"
  msgstr ""
  
! #: cp/method.cc:3578
  #, gcc-internal-format
  msgid "explicitly defaulted move constructor is implicitly deleted because its declared type does not match the type of an implicit move constructor"
  msgstr ""
  
! #: cp/method.cc:3583
  #, gcc-internal-format
  msgid "explicitly defaulted copy assignment operator is implicitly deleted because its declared type does not match the type of an implicit copy assignment operator"
  msgstr ""
  
! #: cp/method.cc:3588
  #, gcc-internal-format
  msgid "explicitly defaulted move assignment operator is implicitly deleted because its declared type does not match the type of an implicit move assignment operator"
  msgstr ""
  
! #: cp/method.cc:3597
  #, fuzzy, gcc-internal-format
  #| msgid "cast does not match function type"
  msgid "expected signature: %qD"
  msgstr "typeomtvingelse passer ikke til funktionstype"
  
! #: cp/method.cc:3695
  #, gcc-internal-format
  msgid "explicitly defaulted function %q+D cannot be declared %qs because the implicit declaration is not %qs:"
  msgstr ""
  
! #: cp/method.cc:3715
  #, fuzzy, gcc-internal-format
  #| msgid "template parameters cannot be friends"
  msgid "a template cannot be defaulted"
  msgstr "skabelonsparametre kan ikke vÃ¦re venner"
  
! #: cp/method.cc:3754
  #, fuzzy, gcc-internal-format
  #| msgid "`%#D' cannot be declared"
  msgid "%qD cannot be defaulted"
  msgstr "'%#D' kan ikke erklÃ¦res"
  
! #: cp/method.cc:3763
  #, fuzzy, gcc-internal-format
  msgid "defaulted function %q+D with default argument"
  msgstr "%Hslutningen af filen lÃ¦st inden i standardparameter"
--- 66675,66799 ----
  msgid "first argument type %qT of a pointer to member must be a class type or a pointer to a class type"
  msgstr ""
  
! #: cp/method.cc:2525
  #, gcc-internal-format
  msgid "union member %q+D with non-trivial %qD"
  msgstr ""
  
! #: cp/method.cc:2536
  #, fuzzy, gcc-internal-format
  #| msgid "Only constructors can invoke constructors"
  msgid "defaulted destructor calls non-%<constexpr%> %qD"
  msgstr "Kun konstruktionsfunktioner kan kalde konstruktionsfunktioner"
  
! #: cp/method.cc:2537
  #, fuzzy, gcc-internal-format
  #| msgid "Only constructors can invoke constructors"
  msgid "defaulted constructor calls non-%<constexpr%> %qD"
  msgstr "Kun konstruktionsfunktioner kan kalde konstruktionsfunktioner"
  
! #: cp/method.cc:2625
  #, gcc-internal-format
  msgid "initializer for %q#D is invalid"
  msgstr "startvÃ¦rdi for %q#D er ugyldig"
  
! #: cp/method.cc:2682
  #, fuzzy, gcc-internal-format
  #| msgid "(use `=' to initialize static data members)"
  msgid "defaulted default constructor does not initialize %q#D"
  msgstr "(brug '=' for at klargÃ¸re statiske datamedlemmer)"
  
! #: cp/method.cc:2693
  #, fuzzy, gcc-internal-format
  #| msgid "creating pointer to member reference type `%T'"
  msgid "copying non-static data member %q#D of rvalue reference type"
  msgstr "opretter henvisning til medlemsreference af typen '%T'"
  
  #. A trivial constructor doesn't have any NSDMI.
! #: cp/method.cc:2911
  #, fuzzy, gcc-internal-format
  #| msgid "(use `=' to initialize static data members)"
  msgid "defaulted default constructor does not initialize any non-static data member"
  msgstr "(brug '=' for at klargÃ¸re statiske datamedlemmer)"
  
! #: cp/method.cc:2955
  #, gcc-internal-format
  msgid "defaulted move assignment for %qT calls a non-trivial move assignment operator for virtual base %qT"
  msgstr ""
  
! #: cp/method.cc:3087
  #, gcc-internal-format
  msgid "a lambda closure type has a deleted default constructor"
  msgstr ""
  
! #: cp/method.cc:3090
  #, gcc-internal-format
  msgid "a lambda closure type has a deleted copy assignment operator"
  msgstr ""
  
! #: cp/method.cc:3099
  #, gcc-internal-format
  msgid "%q#D is implicitly declared as deleted because %qT declares a move constructor or move assignment operator"
  msgstr ""
  
! #: cp/method.cc:3110
  #, gcc-internal-format
  msgid "%q#D inherits from multiple base subobjects"
  msgstr ""
  
! #: cp/method.cc:3118 cp/method.cc:3142
  #, gcc-internal-format
  msgid "%q#D is implicitly deleted because the default definition would be ill-formed:"
  msgstr ""
  
! #: cp/method.cc:3151
  msgid "%q#F is implicitly deleted because its exception-specification does not match the implicit exception-specification %qX"
  msgstr ""
  
! #: cp/method.cc:3574
  #, gcc-internal-format
  msgid "explicitly defaulted copy constructor is implicitly deleted because its declared type does not match the type of an implicit copy constructor"
  msgstr ""
  
! #: cp/method.cc:3579
  #, gcc-internal-format
  msgid "explicitly defaulted move constructor is implicitly deleted because its declared type does not match the type of an implicit move constructor"
  msgstr ""
  
! #: cp/method.cc:3584
  #, gcc-internal-format
  msgid "explicitly defaulted copy assignment operator is implicitly deleted because its declared type does not match the type of an implicit copy assignment operator"
  msgstr ""
  
! #: cp/method.cc:3589
  #, gcc-internal-format
  msgid "explicitly defaulted move assignment operator is implicitly deleted because its declared type does not match the type of an implicit move assignment operator"
  msgstr ""
  
! #: cp/method.cc:3598
  #, fuzzy, gcc-internal-format
  #| msgid "cast does not match function type"
  msgid "expected signature: %qD"
  msgstr "typeomtvingelse passer ikke til funktionstype"
  
! #: cp/method.cc:3696
  #, gcc-internal-format
  msgid "explicitly defaulted function %q+D cannot be declared %qs because the implicit declaration is not %qs:"
  msgstr ""
  
! #: cp/method.cc:3716
  #, fuzzy, gcc-internal-format
  #| msgid "template parameters cannot be friends"
  msgid "a template cannot be defaulted"
  msgstr "skabelonsparametre kan ikke vÃ¦re venner"
  
! #: cp/method.cc:3755
  #, fuzzy, gcc-internal-format
  #| msgid "`%#D' cannot be declared"
  msgid "%qD cannot be defaulted"
  msgstr "'%#D' kan ikke erklÃ¦res"
  
! #: cp/method.cc:3764
  #, fuzzy, gcc-internal-format
  msgid "defaulted function %q+D with default argument"
  msgstr "%Hslutningen af filen lÃ¦st inden i standardparameter"
*************** msgstr ""
*** 66739,67207 ****
  msgid "unable to represent further imported source locations"
  msgstr ""
  
! #: cp/module.cc:12044
  #, gcc-internal-format
  msgid "mismatching abi tags for %qD with tags %qE"
  msgstr ""
  
! #: cp/module.cc:12048
  #, gcc-internal-format
  msgid "mismatching abi tags for %qD with no tags"
  msgstr ""
  
! #: cp/module.cc:12051
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration of `%#D'"
  msgid "existing declaration here with tags %qE"
  msgstr "tidligere erklÃ¦ring af '%#D'"
  
! #: cp/module.cc:12054
  #, fuzzy, gcc-internal-format
  msgid "existing declaration here with no tags"
  msgstr "tidligere erklÃ¦ring af '%#D' med %L-kÃ¦dning"
  
! #: cp/module.cc:12105 cp/module.cc:12229
  #, fuzzy, gcc-internal-format
  msgid "conflicting type for imported declaration %#qD"
  msgstr "modstridende erklÃ¦ringer af '%s'"
  
! #: cp/module.cc:12114
  #, fuzzy, gcc-internal-format
  msgid "conflicting language linkage for imported declaration %#qD"
  msgstr "modstridende erklÃ¦ringer af '%s'"
  
! #: cp/module.cc:12126
  #, fuzzy, gcc-internal-format
  msgid "conflicting argument list for imported declaration %#qD"
  msgstr "modstridende erklÃ¦ringer af '%s'"
  
! #: cp/module.cc:12133
  #, fuzzy, gcc-internal-format
  msgid "conflicting argument types for imported declaration %#qD"
  msgstr "modstridende erklÃ¦ringer af '%s'"
  
! #: cp/module.cc:12171
  #, fuzzy, gcc-internal-format
  msgid "conflicting %<noexcept%> specifier for imported declaration %#qD"
  msgstr "modstridende erklÃ¦ringer af '%s'"
  
! #: cp/module.cc:12189
  #, fuzzy, gcc-internal-format
  #| msgid "conflicting return type specified for `%#D'"
  msgid "conflicting deduced return type for imported declaration %#qD"
  msgstr "modstridende returtyper angivet for '%#D'"
  
! #: cp/module.cc:12204
  #, fuzzy, gcc-internal-format
  msgid "conflicting %<constexpr%> for imported declaration %#qD"
  msgstr "modstridende erklÃ¦ringer af '%s'"
  
! #: cp/module.cc:12220
  #, fuzzy, gcc-internal-format
  msgid "conflicting imported declaration %q#D"
  msgstr "modstridende erklÃ¦ringer af '%s'"
  
! #: cp/module.cc:12246
  #, fuzzy, gcc-internal-format
  #| msgid "in declaration `%D'"
  msgid "existing declaration %#qD"
  msgstr "i erklÃ¦ringen '%D'"
  
! #: cp/module.cc:12349
  #, fuzzy, gcc-internal-format
  #| msgid "no default argument for `%D'"
  msgid "conflicting default argument for %#qD"
  msgstr "ingen standardparameter til '%D'"
  
! #: cp/module.cc:12351 cp/module.cc:12378
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "existing default declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/module.cc:12375
  #, fuzzy, gcc-internal-format
  #| msgid "default argument missing for parameter %P of `%+#D'"
  msgid "conflicting default argument for parameter %P of %#qD"
  msgstr "standardparameter mangler for parameter %P  i '%+#D'"
  
! #: cp/module.cc:13434
  #, fuzzy, gcc-internal-format
  #| msgid "extern declaration of `%#D' doesn't match"
  msgid "definition of %qD does not match"
  msgstr "extern-erklÃ¦ring af '%#D' passer ikke med"
  
! #: cp/module.cc:13436
  #, fuzzy, gcc-internal-format
  #| msgid "missing initializer"
  msgid "existing definition %qD"
  msgstr "manglende startvÃ¦rdi"
  
! #: cp/module.cc:13448
  #, fuzzy, gcc-internal-format
  #| msgid "extern declaration of `%#D' doesn't match"
  msgid "enumerator %qD does not match ..."
  msgstr "extern-erklÃ¦ring af '%#D' passer ikke med"
  
! #: cp/module.cc:13450
  #, fuzzy, gcc-internal-format
  #| msgid "redeclaration of `enum %s'"
  msgid "... this enumerator %qD"
  msgstr "omerklÃ¦ring af 'enum %s'"
  
! #: cp/module.cc:13456
  #, gcc-internal-format
  msgid "additional enumerators beginning with %qD"
  msgstr ""
  
! #: cp/module.cc:13460
  #, gcc-internal-format
  msgid "enumeration range differs"
  msgstr ""
  
! #: cp/module.cc:13673
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' is not of type `%T'"
  msgid "%qD is an alias of TU-local type %qT"
  msgstr "'%E' er ikke af typen '%T'"
  
! #: cp/module.cc:13691
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of template `%#D'"
  msgid "%qD is a specialization of TU-local template %qD"
  msgstr "erklÃ¦ring af skabelon '%#D'"
  
! #: cp/module.cc:13715
  #, fuzzy, gcc-internal-format
  #| msgid "%qD redeclared with different access"
  msgid "%qD declared with internal linkage"
  msgstr "%qD omerklÃ¦ret med anden adgang"
  
! #: cp/module.cc:13733
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' was not declared in this scope"
  msgid "%qD has no linkage and is declared in an anonymous namespace"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: cp/module.cc:13745
  #, fuzzy, gcc-internal-format
  msgid "%qD has no linkage and is declared within TU-local entity %qT"
  msgstr "'%#D' kan ikke erklÃ¦res"
  
! #: cp/module.cc:13756
  #, fuzzy, gcc-internal-format
  msgid "%qD has no linkage and is declared within TU-local entity %qD"
  msgstr "'%#D' kan ikke erklÃ¦res"
  
! #: cp/module.cc:13788
  #, gcc-internal-format
  msgid "%qT has no name and cannot be differentiated from similar lambdas in other TUs"
  msgstr ""
  
! #: cp/module.cc:13797
  #, gcc-internal-format
  msgid "%qT has no name and is not defined within a class, function, or initializer"
  msgstr ""
  
! #: cp/module.cc:13833
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' used without template parameters"
  msgid "%qD has TU-local template argument %qD"
  msgstr "'%D' benyttet uden skabelonsparametre"
  
! #: cp/module.cc:13845
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' is not a valid template argument"
  msgid "%qD has TU-local template argument %qT"
  msgstr "'%E' er ikke en gyldig skabelonsparameter"
  
! #: cp/module.cc:13897
  #, gcc-internal-format
  msgid "%qD refers to TU-local object %qD"
  msgstr ""
  
! #: cp/module.cc:13899
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a member template function"
  msgid "%qD refers to TU-local function %qD"
  msgstr "'%D' er ikke en medlemsskabelonfunktion"
  
! #: cp/module.cc:15021
  #, gcc-internal-format
  msgid "%qD exposes TU-local entity %qD"
  msgstr ""
  
! #: cp/module.cc:15032
  #, gcc-internal-format
  msgid "%qD is declared %<constexpr%> and is initialized to a TU-local value"
  msgstr ""
  
! #: cp/module.cc:15070
  #, gcc-internal-format
  msgid "%qD refers to TU-local entity %qD and cannot be instantiated in other TUs"
  msgstr ""
  
! #: cp/module.cc:15667
  #, fuzzy, gcc-internal-format
  #| msgid "redefinition of default argument for `%#D'"
  msgid "recursive lazy load"
  msgstr "omdefinering af standardparameter for '%#D'"
  
! #: cp/module.cc:15687
  #, gcc-internal-format
  msgid "cannot import module in its own purview"
  msgstr ""
  
! #: cp/module.cc:15688 cp/module.cc:21270
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "module %qs declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/module.cc:16037
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%s' as array of voids"
  msgid "indirect import %qs is not already loaded"
  msgstr "'%s' erklÃ¦ret som en tabel af void"
  
! #: cp/module.cc:16043
  #, gcc-internal-format
  msgid "import %qs has CRC mismatch"
  msgstr ""
  
! #: cp/module.cc:18810
  #, gcc-internal-format
  msgid "not exporting %<#define %E%> as it is a keyword"
  msgstr ""
  
! #: cp/module.cc:19050
  #, fuzzy, gcc-internal-format
  msgid "macro definitions of %qE corrupted"
  msgstr "tidligere definition her"
  
! #: cp/module.cc:19075 cp/module.cc:19078
  #, fuzzy, gcc-internal-format
  #| msgid "inconsistent instance variable specification"
  msgid "inconsistent imported macro definition %qE"
  msgstr "inkonsistent instansvariabelangivelse"
  
! #: cp/module.cc:19084
  #, gcc-internal-format
  msgid "%<#undef %E%>"
  msgstr ""
  
! #: cp/module.cc:19086
  #, gcc-internal-format
  msgid "%<#define %s%>"
  msgstr ""
  
! #: cp/module.cc:19418
  #, fuzzy, gcc-internal-format
  #| msgid "%s: can't delete file `%s': %s\n"
  msgid "compiled module file is %qs"
  msgstr "%s: kan ikke slette filen '%s': %s\n"
  
! #: cp/module.cc:19456 cp/module.cc:19461
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Display the compiler's version"
  msgid "compiled module is %sversion %s"
  msgstr "Vis oversÃ¦tterens version"
  
! #: cp/module.cc:19467
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "collect2 version %s\n"
  msgid "compiler is %sversion %s%s%s"
  msgstr "collect2-version %s\n"
  
! #: cp/module.cc:19497
  #, fuzzy, gcc-internal-format
  #| msgid "no symbol table found"
  msgid "module %qs found"
  msgstr "ingen symboltabel fundet"
  
! #: cp/module.cc:19499
  #, gcc-internal-format
  msgid "header module expected, module %qs found"
  msgstr ""
  
! #: cp/module.cc:19500
  #, gcc-internal-format
  msgid "module %qs expected, header module found"
  msgstr ""
  
! #: cp/module.cc:19515
  #, gcc-internal-format
  msgid "module %qs CRC mismatch"
  msgstr ""
  
! #: cp/module.cc:19529
  #, gcc-internal-format
  msgid "target & host is %qs:%qs, expected %qs:%qs"
  msgstr ""
  
! #: cp/module.cc:19541
  #, gcc-internal-format
  msgid "language dialect differs %qs, expected %qs"
  msgstr ""
  
! #: cp/module.cc:19561
  #, gcc-internal-format
  msgid "module contains OpenMP, use %<-fopenmp%> to enable"
  msgstr ""
  
! #: cp/module.cc:19563
  #, gcc-internal-format
  msgid "module contains OpenMP, use %<-fopenmp%> or %<-fopenmp-simd%> to enable"
  msgstr ""
  
! #: cp/module.cc:19566
  #, gcc-internal-format
  msgid "module contains OpenACC, use %<-fopenacc%> to enable"
  msgstr ""
  
! #: cp/module.cc:19584
  #, fuzzy, gcc-internal-format
  #| msgid "function attribute mismatch"
  msgid "fixed tree mismatch"
  msgstr "forskellige funktionsattributter"
  
! #: cp/module.cc:19675
  #, fuzzy, gcc-internal-format
  #| msgid "stack limit expression is not supported"
  msgid "interface partition is not exported"
  msgstr "stakgrÃ¦nseudtryk understÃ¸ttes ikke"
  
! #: cp/module.cc:20232
  #, gcc-internal-format, gfc-internal-format
  msgid "failed to read compiled module cluster %u: %s"
  msgstr ""
  
! #: cp/module.cc:20271
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "failed to find class '%s'"
  msgid "failed to read compiled module: %s"
  msgstr "kunne ikke finde klassen '%s'"
  
! #: cp/module.cc:20281
  #, gcc-internal-format
  msgid "consider using %<-fno-module-lazy%>, increasing %<-param-lazy-modules=%u%> value, or increasing the per-process file descriptor limit"
  msgstr ""
  
! #: cp/module.cc:20286
  #, gcc-internal-format
  msgid "imports must be built before being imported"
  msgstr ""
  
! #: cp/module.cc:20289
  #, gcc-internal-format
  msgid "returning to the gate for a mechanical issue"
  msgstr ""
  
! #: cp/module.cc:20610
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with built-in declaration `%#D'"
  msgid "declaring %qD in module %qs conflicts with builtin in global module"
  msgstr "strider mod indbygget erklÃ¦ring '%#D'"
  
! #: cp/module.cc:20613
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with built-in declaration `%#D'"
  msgid "declaration %qD conflicts with builtin"
  msgstr "strider mod indbygget erklÃ¦ring '%#D'"
  
! #: cp/module.cc:20619
  #, fuzzy, gcc-internal-format
  #| msgid "asm declaration conflicts with previous rename"
  msgid "redeclaring %qD in module %qs conflicts with import"
  msgstr "asm-erklÃ¦ring er i konflikt med tidligere omdÃ¸belse"
  
! #: cp/module.cc:20622
  #, gcc-internal-format
  msgid "redeclaring %qD in global module conflicts with import"
  msgstr ""
  
! #: cp/module.cc:20627
  #, gcc-internal-format
  msgid "import declared attached to module %qs"
  msgstr ""
  
! #: cp/module.cc:20631
  #, gcc-internal-format
  msgid "import declared in global module"
  msgstr ""
  
! #: cp/module.cc:20637
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of template `%#D'"
  msgid "conflicting declaration of %qD in module %qs"
  msgstr "erklÃ¦ring af skabelon '%#D'"
  
! #: cp/module.cc:20640
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with new declaration with %L linkage"
  msgid "conflicting declaration of %qD in global module"
  msgstr "strider mod ny erklÃ¦ring af med %L-kÃ¦dning"
  
! #: cp/module.cc:20645
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' previously declared here"
  msgid "previously declared in module %qs"
  msgstr "'%s' tidligere erklÃ¦ret her"
  
! #: cp/module.cc:20649
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' previously declared here"
  msgid "previously declared in global module"
  msgstr "'%s' tidligere erklÃ¦ret her"
  
! #: cp/module.cc:20788
  #, gcc-internal-format
  msgid "external linkage definition of %qD in header module must be declared %<inline%>"
  msgstr ""
  
! #: cp/module.cc:20803
  #, fuzzy, gcc-internal-format
  #| msgid "friend declaration `%#D' declares a non-template function"
  msgid "exporting declaration %qD declared in unnamed namespace"
  msgstr "friend-erklÃ¦ring '%#D' erklÃ¦rer en ikke-skabelonsfunktion"
  
! #: cp/module.cc:20810
  #, fuzzy, gcc-internal-format
  msgid "exporting declaration %qD with internal linkage"
  msgstr "tidligere erklÃ¦ring af '%#D' med %L-kÃ¦dning"
  
! #: cp/module.cc:20963
  #, fuzzy, gcc-internal-format
  #| msgid "creating %s"
  msgid "reading CMI %qs"
  msgstr "opretter %s"
  
! #: cp/module.cc:21114
  #, gcc-internal-format
  msgid "failed to load binding %<%E%s%E%>"
  msgstr ""
  
! #: cp/module.cc:21115
  #, gcc-internal-format
  msgid "failed to load binding %<%E%s%E@%s%>"
  msgstr ""
  
! #: cp/module.cc:21122
  #, gcc-internal-format
  msgid "during load of binding %<%E%s%E%>"
  msgstr ""
  
! #: cp/module.cc:21123
  #, gcc-internal-format
  msgid "during load of binding %<%E%s%E@%s%>"
  msgstr ""
  
! #: cp/module.cc:21185
  #, gcc-internal-format
  msgid "failed to load pendings for %<%E%s%E%>"
  msgstr ""
  
! #: cp/module.cc:21189
  #, fuzzy, gcc-internal-format
  #| msgid "Unknown cpu: -mcpu=%s"
  msgid "during load of pendings for %<%E%s%E%>"
--- 66831,67315 ----
  msgid "unable to represent further imported source locations"
  msgstr ""
  
! #: cp/module.cc:6549
! #, fuzzy, gcc-internal-format
! #| msgid "target attribute is not supported on this machine"
! msgid "%<target%> attribute currently unsupported in modules"
! msgstr "mÃ¥larkitekturegenskab er ikke understÃ¸ttet pÃ¥ denne maskine"
! 
! #: cp/module.cc:6552
! #, fuzzy, gcc-internal-format
! msgid "%<optimize%> attribute currently unsupported in modules"
! msgstr "sektionsegenskaber understÃ¸ttes ikke pÃ¥ denne mÃ¥larkitektur"
! 
! #: cp/module.cc:12100
  #, gcc-internal-format
  msgid "mismatching abi tags for %qD with tags %qE"
  msgstr ""
  
! #: cp/module.cc:12104
  #, gcc-internal-format
  msgid "mismatching abi tags for %qD with no tags"
  msgstr ""
  
! #: cp/module.cc:12107
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration of `%#D'"
  msgid "existing declaration here with tags %qE"
  msgstr "tidligere erklÃ¦ring af '%#D'"
  
! #: cp/module.cc:12110
  #, fuzzy, gcc-internal-format
  msgid "existing declaration here with no tags"
  msgstr "tidligere erklÃ¦ring af '%#D' med %L-kÃ¦dning"
  
! #: cp/module.cc:12161 cp/module.cc:12285
  #, fuzzy, gcc-internal-format
  msgid "conflicting type for imported declaration %#qD"
  msgstr "modstridende erklÃ¦ringer af '%s'"
  
! #: cp/module.cc:12170
  #, fuzzy, gcc-internal-format
  msgid "conflicting language linkage for imported declaration %#qD"
  msgstr "modstridende erklÃ¦ringer af '%s'"
  
! #: cp/module.cc:12182
  #, fuzzy, gcc-internal-format
  msgid "conflicting argument list for imported declaration %#qD"
  msgstr "modstridende erklÃ¦ringer af '%s'"
  
! #: cp/module.cc:12189
  #, fuzzy, gcc-internal-format
  msgid "conflicting argument types for imported declaration %#qD"
  msgstr "modstridende erklÃ¦ringer af '%s'"
  
! #: cp/module.cc:12227
  #, fuzzy, gcc-internal-format
  msgid "conflicting %<noexcept%> specifier for imported declaration %#qD"
  msgstr "modstridende erklÃ¦ringer af '%s'"
  
! #: cp/module.cc:12245
  #, fuzzy, gcc-internal-format
  #| msgid "conflicting return type specified for `%#D'"
  msgid "conflicting deduced return type for imported declaration %#qD"
  msgstr "modstridende returtyper angivet for '%#D'"
  
! #: cp/module.cc:12260
  #, fuzzy, gcc-internal-format
  msgid "conflicting %<constexpr%> for imported declaration %#qD"
  msgstr "modstridende erklÃ¦ringer af '%s'"
  
! #: cp/module.cc:12276
  #, fuzzy, gcc-internal-format
  msgid "conflicting imported declaration %q#D"
  msgstr "modstridende erklÃ¦ringer af '%s'"
  
! #: cp/module.cc:12302
  #, fuzzy, gcc-internal-format
  #| msgid "in declaration `%D'"
  msgid "existing declaration %#qD"
  msgstr "i erklÃ¦ringen '%D'"
  
! #: cp/module.cc:12405
  #, fuzzy, gcc-internal-format
  #| msgid "no default argument for `%D'"
  msgid "conflicting default argument for %#qD"
  msgstr "ingen standardparameter til '%D'"
  
! #: cp/module.cc:12407 cp/module.cc:12434
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "existing default declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/module.cc:12431
  #, fuzzy, gcc-internal-format
  #| msgid "default argument missing for parameter %P of `%+#D'"
  msgid "conflicting default argument for parameter %P of %#qD"
  msgstr "standardparameter mangler for parameter %P  i '%+#D'"
  
! #: cp/module.cc:13494
  #, fuzzy, gcc-internal-format
  #| msgid "extern declaration of `%#D' doesn't match"
  msgid "definition of %qD does not match"
  msgstr "extern-erklÃ¦ring af '%#D' passer ikke med"
  
! #: cp/module.cc:13496
  #, fuzzy, gcc-internal-format
  #| msgid "missing initializer"
  msgid "existing definition %qD"
  msgstr "manglende startvÃ¦rdi"
  
! #: cp/module.cc:13508
  #, fuzzy, gcc-internal-format
  #| msgid "extern declaration of `%#D' doesn't match"
  msgid "enumerator %qD does not match ..."
  msgstr "extern-erklÃ¦ring af '%#D' passer ikke med"
  
! #: cp/module.cc:13510
  #, fuzzy, gcc-internal-format
  #| msgid "redeclaration of `enum %s'"
  msgid "... this enumerator %qD"
  msgstr "omerklÃ¦ring af 'enum %s'"
  
! #: cp/module.cc:13516
  #, gcc-internal-format
  msgid "additional enumerators beginning with %qD"
  msgstr ""
  
! #: cp/module.cc:13520
  #, gcc-internal-format
  msgid "enumeration range differs"
  msgstr ""
  
! #: cp/module.cc:13733
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' is not of type `%T'"
  msgid "%qD is an alias of TU-local type %qT"
  msgstr "'%E' er ikke af typen '%T'"
  
! #: cp/module.cc:13751
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of template `%#D'"
  msgid "%qD is a specialization of TU-local template %qD"
  msgstr "erklÃ¦ring af skabelon '%#D'"
  
! #: cp/module.cc:13775
  #, fuzzy, gcc-internal-format
  #| msgid "%qD redeclared with different access"
  msgid "%qD declared with internal linkage"
  msgstr "%qD omerklÃ¦ret med anden adgang"
  
! #: cp/module.cc:13793
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' was not declared in this scope"
  msgid "%qD has no linkage and is declared in an anonymous namespace"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: cp/module.cc:13805
  #, fuzzy, gcc-internal-format
  msgid "%qD has no linkage and is declared within TU-local entity %qT"
  msgstr "'%#D' kan ikke erklÃ¦res"
  
! #: cp/module.cc:13816
  #, fuzzy, gcc-internal-format
  msgid "%qD has no linkage and is declared within TU-local entity %qD"
  msgstr "'%#D' kan ikke erklÃ¦res"
  
! #: cp/module.cc:13848
  #, gcc-internal-format
  msgid "%qT has no name and cannot be differentiated from similar lambdas in other TUs"
  msgstr ""
  
! #: cp/module.cc:13857
  #, gcc-internal-format
  msgid "%qT has no name and is not defined within a class, function, or initializer"
  msgstr ""
  
! #: cp/module.cc:13893
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' used without template parameters"
  msgid "%qD has TU-local template argument %qD"
  msgstr "'%D' benyttet uden skabelonsparametre"
  
! #: cp/module.cc:13905
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' is not a valid template argument"
  msgid "%qD has TU-local template argument %qT"
  msgstr "'%E' er ikke en gyldig skabelonsparameter"
  
! #: cp/module.cc:13957
  #, gcc-internal-format
  msgid "%qD refers to TU-local object %qD"
  msgstr ""
  
! #: cp/module.cc:13959
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a member template function"
  msgid "%qD refers to TU-local function %qD"
  msgstr "'%D' er ikke en medlemsskabelonfunktion"
  
! #: cp/module.cc:15089
  #, gcc-internal-format
  msgid "%qD exposes TU-local entity %qD"
  msgstr ""
  
! #: cp/module.cc:15104
  #, gcc-internal-format
  msgid "%qD is declared %<constexpr%> and is initialized to a TU-local value"
  msgstr ""
  
! #: cp/module.cc:15111
! #, gcc-internal-format
! msgid "%qD is a reference declared %<inline%> and is constant-initialized to a TU-local value"
! msgstr ""
! 
! #: cp/module.cc:15150
  #, gcc-internal-format
  msgid "%qD refers to TU-local entity %qD and cannot be instantiated in other TUs"
  msgstr ""
  
! #: cp/module.cc:15747
  #, fuzzy, gcc-internal-format
  #| msgid "redefinition of default argument for `%#D'"
  msgid "recursive lazy load"
  msgstr "omdefinering af standardparameter for '%#D'"
  
! #: cp/module.cc:15767
  #, gcc-internal-format
  msgid "cannot import module in its own purview"
  msgstr ""
  
! #: cp/module.cc:15768 cp/module.cc:21350
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "module %qs declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/module.cc:16117
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%s' as array of voids"
  msgid "indirect import %qs is not already loaded"
  msgstr "'%s' erklÃ¦ret som en tabel af void"
  
! #: cp/module.cc:16123
  #, gcc-internal-format
  msgid "import %qs has CRC mismatch"
  msgstr ""
  
! #: cp/module.cc:18890
  #, gcc-internal-format
  msgid "not exporting %<#define %E%> as it is a keyword"
  msgstr ""
  
! #: cp/module.cc:19130
  #, fuzzy, gcc-internal-format
  msgid "macro definitions of %qE corrupted"
  msgstr "tidligere definition her"
  
! #: cp/module.cc:19155 cp/module.cc:19158
  #, fuzzy, gcc-internal-format
  #| msgid "inconsistent instance variable specification"
  msgid "inconsistent imported macro definition %qE"
  msgstr "inkonsistent instansvariabelangivelse"
  
! #: cp/module.cc:19164
  #, gcc-internal-format
  msgid "%<#undef %E%>"
  msgstr ""
  
! #: cp/module.cc:19166
  #, gcc-internal-format
  msgid "%<#define %s%>"
  msgstr ""
  
! #: cp/module.cc:19498
  #, fuzzy, gcc-internal-format
  #| msgid "%s: can't delete file `%s': %s\n"
  msgid "compiled module file is %qs"
  msgstr "%s: kan ikke slette filen '%s': %s\n"
  
! #: cp/module.cc:19536 cp/module.cc:19541
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Display the compiler's version"
  msgid "compiled module is %sversion %s"
  msgstr "Vis oversÃ¦tterens version"
  
! #: cp/module.cc:19547
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "collect2 version %s\n"
  msgid "compiler is %sversion %s%s%s"
  msgstr "collect2-version %s\n"
  
! #: cp/module.cc:19577
  #, fuzzy, gcc-internal-format
  #| msgid "no symbol table found"
  msgid "module %qs found"
  msgstr "ingen symboltabel fundet"
  
! #: cp/module.cc:19579
  #, gcc-internal-format
  msgid "header module expected, module %qs found"
  msgstr ""
  
! #: cp/module.cc:19580
  #, gcc-internal-format
  msgid "module %qs expected, header module found"
  msgstr ""
  
! #: cp/module.cc:19595
  #, gcc-internal-format
  msgid "module %qs CRC mismatch"
  msgstr ""
  
! #: cp/module.cc:19609
  #, gcc-internal-format
  msgid "target & host is %qs:%qs, expected %qs:%qs"
  msgstr ""
  
! #: cp/module.cc:19621
  #, gcc-internal-format
  msgid "language dialect differs %qs, expected %qs"
  msgstr ""
  
! #: cp/module.cc:19641
  #, gcc-internal-format
  msgid "module contains OpenMP, use %<-fopenmp%> to enable"
  msgstr ""
  
! #: cp/module.cc:19643
  #, gcc-internal-format
  msgid "module contains OpenMP, use %<-fopenmp%> or %<-fopenmp-simd%> to enable"
  msgstr ""
  
! #: cp/module.cc:19646
  #, gcc-internal-format
  msgid "module contains OpenACC, use %<-fopenacc%> to enable"
  msgstr ""
  
! #: cp/module.cc:19664
  #, fuzzy, gcc-internal-format
  #| msgid "function attribute mismatch"
  msgid "fixed tree mismatch"
  msgstr "forskellige funktionsattributter"
  
! #: cp/module.cc:19755
  #, fuzzy, gcc-internal-format
  #| msgid "stack limit expression is not supported"
  msgid "interface partition is not exported"
  msgstr "stakgrÃ¦nseudtryk understÃ¸ttes ikke"
  
! #: cp/module.cc:20312
  #, gcc-internal-format, gfc-internal-format
  msgid "failed to read compiled module cluster %u: %s"
  msgstr ""
  
! #: cp/module.cc:20351
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "failed to find class '%s'"
  msgid "failed to read compiled module: %s"
  msgstr "kunne ikke finde klassen '%s'"
  
! #: cp/module.cc:20361
  #, gcc-internal-format
  msgid "consider using %<-fno-module-lazy%>, increasing %<-param-lazy-modules=%u%> value, or increasing the per-process file descriptor limit"
  msgstr ""
  
! #: cp/module.cc:20366
  #, gcc-internal-format
  msgid "imports must be built before being imported"
  msgstr ""
  
! #: cp/module.cc:20369
  #, gcc-internal-format
  msgid "returning to the gate for a mechanical issue"
  msgstr ""
  
! #: cp/module.cc:20690
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with built-in declaration `%#D'"
  msgid "declaring %qD in module %qs conflicts with builtin in global module"
  msgstr "strider mod indbygget erklÃ¦ring '%#D'"
  
! #: cp/module.cc:20693
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with built-in declaration `%#D'"
  msgid "declaration %qD conflicts with builtin"
  msgstr "strider mod indbygget erklÃ¦ring '%#D'"
  
! #: cp/module.cc:20699
  #, fuzzy, gcc-internal-format
  #| msgid "asm declaration conflicts with previous rename"
  msgid "redeclaring %qD in module %qs conflicts with import"
  msgstr "asm-erklÃ¦ring er i konflikt med tidligere omdÃ¸belse"
  
! #: cp/module.cc:20702
  #, gcc-internal-format
  msgid "redeclaring %qD in global module conflicts with import"
  msgstr ""
  
! #: cp/module.cc:20707
  #, gcc-internal-format
  msgid "import declared attached to module %qs"
  msgstr ""
  
! #: cp/module.cc:20711
  #, gcc-internal-format
  msgid "import declared in global module"
  msgstr ""
  
! #: cp/module.cc:20717
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of template `%#D'"
  msgid "conflicting declaration of %qD in module %qs"
  msgstr "erklÃ¦ring af skabelon '%#D'"
  
! #: cp/module.cc:20720
  #, fuzzy, gcc-internal-format
  #| msgid "conflicts with new declaration with %L linkage"
  msgid "conflicting declaration of %qD in global module"
  msgstr "strider mod ny erklÃ¦ring af med %L-kÃ¦dning"
  
! #: cp/module.cc:20725
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' previously declared here"
  msgid "previously declared in module %qs"
  msgstr "'%s' tidligere erklÃ¦ret her"
  
! #: cp/module.cc:20729
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' previously declared here"
  msgid "previously declared in global module"
  msgstr "'%s' tidligere erklÃ¦ret her"
  
! #: cp/module.cc:20868
  #, gcc-internal-format
  msgid "external linkage definition of %qD in header module must be declared %<inline%>"
  msgstr ""
  
! #: cp/module.cc:20883
  #, fuzzy, gcc-internal-format
  #| msgid "friend declaration `%#D' declares a non-template function"
  msgid "exporting declaration %qD declared in unnamed namespace"
  msgstr "friend-erklÃ¦ring '%#D' erklÃ¦rer en ikke-skabelonsfunktion"
  
! #: cp/module.cc:20890
  #, fuzzy, gcc-internal-format
  msgid "exporting declaration %qD with internal linkage"
  msgstr "tidligere erklÃ¦ring af '%#D' med %L-kÃ¦dning"
  
! #: cp/module.cc:21043
  #, fuzzy, gcc-internal-format
  #| msgid "creating %s"
  msgid "reading CMI %qs"
  msgstr "opretter %s"
  
! #: cp/module.cc:21194
  #, gcc-internal-format
  msgid "failed to load binding %<%E%s%E%>"
  msgstr ""
  
! #: cp/module.cc:21195
  #, gcc-internal-format
  msgid "failed to load binding %<%E%s%E@%s%>"
  msgstr ""
  
! #: cp/module.cc:21202
  #, gcc-internal-format
  msgid "during load of binding %<%E%s%E%>"
  msgstr ""
  
! #: cp/module.cc:21203
  #, gcc-internal-format
  msgid "during load of binding %<%E%s%E@%s%>"
  msgstr ""
  
! #: cp/module.cc:21265
  #, gcc-internal-format
  msgid "failed to load pendings for %<%E%s%E%>"
  msgstr ""
  
! #: cp/module.cc:21269
  #, fuzzy, gcc-internal-format
  #| msgid "Unknown cpu: -mcpu=%s"
  msgid "during load of pendings for %<%E%s%E%>"
*************** msgstr "Ukendt processor: -mcpu=%s"
*** 67214,67324 ****
  #. module, so we don't want to confuse things by having to think
  #. about whether 'extern "C++" { import foo; }' puts foo's
  #. contents into the global module all of a sudden.
! #: cp/module.cc:21234
  #, gcc-internal-format
  msgid "import of named module %qs inside language-linkage block"
  msgstr ""
  
! #: cp/module.cc:21265
  #, fuzzy, gcc-internal-format
  #| msgid "Symbols have a leading underscore"
  msgid "module already declared"
  msgstr "Symboler har en indledende understreg"
  
! #: cp/module.cc:21266
  #, fuzzy, gcc-internal-format
  #| msgid "Symbols have a leading underscore"
  msgid "module already imported"
  msgstr "Symboler har en indledende understreg"
  
! #: cp/module.cc:21271
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "module %qs imported here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/module.cc:21479
  #, gcc-internal-format
  msgid "mismatching compiled module interface: had %qs, got %qs"
  msgstr ""
  
! #: cp/module.cc:21485
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "unknown punctuation '%c'"
  msgid "unknown compiled module interface: %s"
  msgstr "ukendt tegnsÃ¦tning Â»%cÂ«"
  
! #: cp/module.cc:21529
  #, gcc-internal-format
  msgid "cannot determine %<#include%> translation of %s: %s"
  msgstr ""
  
! #: cp/module.cc:21547
  #, gcc-internal-format
  msgid "include %qs translated to import"
  msgstr ""
  
! #: cp/module.cc:21548
  #, gcc-internal-format
  msgid "include %qs processed textually"
  msgstr ""
  
! #: cp/module.cc:21908
  #, fuzzy, gcc-internal-format
  #| msgid "while writing precompiled header"
  msgid "C++ modules are incompatible with precompiled headers"
  msgstr "under skrivning af prÃ¦oversat inkluderingsfil"
  
! #: cp/module.cc:21912
  #, fuzzy, gcc-internal-format
  msgid "C++ modules are incompatible with traditional preprocessing"
  msgstr "AktivÃ©r stakprÃ¸vning"
  
! #: cp/module.cc:21944 cp/module.cc:21973
  #, fuzzy, gcc-internal-format
  #| msgid "invalid --param value %qs"
  msgid "invalid header name %qs"
  msgstr "ugyldig Â»--paramÂ«-vÃ¦rdi %qs"
  
! #: cp/module.cc:21983
  #, fuzzy, gcc-internal-format
  #| msgid "invalid macro name `%s'"
  msgid "invalid module name %qs"
  msgstr "ugyldigt makronavn '%s'"
  
! #: cp/module.cc:22183
  #, gcc-internal-format
  msgid "%<-fmodule-only%> used for non-interface"
  msgstr ""
  
! #: cp/module.cc:22223
  #, fuzzy, gcc-internal-format
  msgid "writing CMI %qs"
  msgstr "fejl ved skrivning til %s"
  
! #: cp/module.cc:22238
  #, gcc-internal-format
  msgid "not writing module %qs due to errors in template bodies"
  msgstr ""
  
! #: cp/module.cc:22241
  #, gcc-internal-format
  msgid "enable %<-Wtemplate-body%> for more details"
  msgstr ""
  
! #: cp/module.cc:22243
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "first error in %qD appeared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/module.cc:22307
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "failed to find class '%s'"
  msgid "failed to write compiled module: %s"
  msgstr "kunne ikke finde klassen '%s'"
  
! #: cp/module.cc:22404
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown header kind %qs"
--- 67322,67432 ----
  #. module, so we don't want to confuse things by having to think
  #. about whether 'extern "C++" { import foo; }' puts foo's
  #. contents into the global module all of a sudden.
! #: cp/module.cc:21314
  #, gcc-internal-format
  msgid "import of named module %qs inside language-linkage block"
  msgstr ""
  
! #: cp/module.cc:21345
  #, fuzzy, gcc-internal-format
  #| msgid "Symbols have a leading underscore"
  msgid "module already declared"
  msgstr "Symboler har en indledende understreg"
  
! #: cp/module.cc:21346
  #, fuzzy, gcc-internal-format
  #| msgid "Symbols have a leading underscore"
  msgid "module already imported"
  msgstr "Symboler har en indledende understreg"
  
! #: cp/module.cc:21351
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "module %qs imported here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/module.cc:21559
  #, gcc-internal-format
  msgid "mismatching compiled module interface: had %qs, got %qs"
  msgstr ""
  
! #: cp/module.cc:21565
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "unknown punctuation '%c'"
  msgid "unknown compiled module interface: %s"
  msgstr "ukendt tegnsÃ¦tning Â»%cÂ«"
  
! #: cp/module.cc:21609
  #, gcc-internal-format
  msgid "cannot determine %<#include%> translation of %s: %s"
  msgstr ""
  
! #: cp/module.cc:21627
  #, gcc-internal-format
  msgid "include %qs translated to import"
  msgstr ""
  
! #: cp/module.cc:21628
  #, gcc-internal-format
  msgid "include %qs processed textually"
  msgstr ""
  
! #: cp/module.cc:21988
  #, fuzzy, gcc-internal-format
  #| msgid "while writing precompiled header"
  msgid "C++ modules are incompatible with precompiled headers"
  msgstr "under skrivning af prÃ¦oversat inkluderingsfil"
  
! #: cp/module.cc:21992
  #, fuzzy, gcc-internal-format
  msgid "C++ modules are incompatible with traditional preprocessing"
  msgstr "AktivÃ©r stakprÃ¸vning"
  
! #: cp/module.cc:22024 cp/module.cc:22053
  #, fuzzy, gcc-internal-format
  #| msgid "invalid --param value %qs"
  msgid "invalid header name %qs"
  msgstr "ugyldig Â»--paramÂ«-vÃ¦rdi %qs"
  
! #: cp/module.cc:22063
  #, fuzzy, gcc-internal-format
  #| msgid "invalid macro name `%s'"
  msgid "invalid module name %qs"
  msgstr "ugyldigt makronavn '%s'"
  
! #: cp/module.cc:22263
  #, gcc-internal-format
  msgid "%<-fmodule-only%> used for non-interface"
  msgstr ""
  
! #: cp/module.cc:22303
  #, fuzzy, gcc-internal-format
  msgid "writing CMI %qs"
  msgstr "fejl ved skrivning til %s"
  
! #: cp/module.cc:22318
  #, gcc-internal-format
  msgid "not writing module %qs due to errors in template bodies"
  msgstr ""
  
! #: cp/module.cc:22321
  #, gcc-internal-format
  msgid "enable %<-Wtemplate-body%> for more details"
  msgstr ""
  
! #: cp/module.cc:22323
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "first error in %qD appeared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/module.cc:22387
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "failed to find class '%s'"
  msgid "failed to write compiled module: %s"
  msgstr "kunne ikke finde klassen '%s'"
  
! #: cp/module.cc:22484
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown header kind %qs"
*************** msgstr "erklÃ¦ring af '%s' skygger for e
*** 67381,67656 ****
  msgid "friend declaration %qD in local class without prior local declaration"
  msgstr "friend-erklÃ¦ringen er ikke i klassedefinitionen"
  
! #: cp/name-lookup.cc:4653
  #, fuzzy, gcc-internal-format
  msgid "%s %<%s(%E)%> %p %d"
  msgstr "%s: %s: "
  
! #: cp/name-lookup.cc:4656
  #, fuzzy, gcc-internal-format
  msgid "%s %s %p %d"
  msgstr "%s: %s: "
  
! #: cp/name-lookup.cc:5252
  #, gcc-internal-format
  msgid "exporting %q#D that does not have external linkage"
  msgstr ""
  
! #: cp/name-lookup.cc:5256
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "%q#D declared here with no linkage"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/name-lookup.cc:5259
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' undeclared here (not in a function)"
  msgid "%q#D declared here with internal linkage"
  msgstr "'%s' ikke erklÃ¦ret her (ikke i en funktion)"
  
! #: cp/name-lookup.cc:5262
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "%q#D declared here with module linkage"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/name-lookup.cc:6070
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' names constructor"
  msgid "%<%T%s%D%> names destructor"
  msgstr "'%D' navngiver en konstruktionsfunktion"
  
! #: cp/name-lookup.cc:6086
  #, gcc-internal-format
  msgid "using-declaration for non-member at class scope"
  msgstr "using-erklÃ¦ring for ikke-medlem ved klassevirkefelt"
  
! #: cp/name-lookup.cc:6094
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<using%> with enumeration scope %q#T only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/name-lookup.cc:6110 cp/pt.cc:18933
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a class or namespace"
  msgid "%qT is not a class, namespace, or enumeration"
  msgstr "'%T' er ikke en klasse eller et navnerum"
  
! #: cp/name-lookup.cc:6120
  #, fuzzy, gcc-internal-format
  msgid "non-member using-declaration names constructor of %qT"
  msgstr "using-erklÃ¦ring for destruktionsfunktion"
  
! #: cp/name-lookup.cc:6131 cp/name-lookup.cc:6204
  #, fuzzy, gcc-internal-format
  #| msgid "using-declaration for non-member at class scope"
  msgid "using-declaration for member at non-class scope"
  msgstr "using-erklÃ¦ring for ikke-medlem ved klassevirkefelt"
  
! #: cp/name-lookup.cc:6154
  #, fuzzy, gcc-internal-format
  #| msgid "type `%D' is not a direct base of `%T'"
  msgid "%qT is not a direct base of %qT"
  msgstr "typen '%D' er ikke en direkte stamklasse til '%T'"
  
! #: cp/name-lookup.cc:6214
  #, gcc-internal-format
  msgid "did you mean %<using enum %T::%D%>?"
  msgstr ""
  
! #: cp/name-lookup.cc:6226
  #, fuzzy, gcc-internal-format
  msgid "%qD has not been declared in %qD"
  msgstr "'%#D' kan ikke erklÃ¦res"
  
! #: cp/name-lookup.cc:6241
  #, fuzzy, gcc-internal-format
  msgid "using-declaration may not name namespace %qD"
  msgstr "using-erklÃ¦ring for destruktionsfunktion"
  
! #: cp/name-lookup.cc:6252
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' names constructor"
  msgid "%<%T::%D%> names constructor in %qT"
  msgstr "'%D' navngiver en konstruktionsfunktion"
  
! #: cp/name-lookup.cc:6345
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%D' not in a namespace surrounding `%D'"
  msgid "declaration of %qD not in a namespace surrounding %qD"
  msgstr "erklÃ¦ring af '%D' er ikke i et navnerum der omgiver '%D'"
  
! #: cp/name-lookup.cc:6387
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate type qualifiers in %s declaration"
  msgid "explicit qualification in declaration of %qD"
  msgstr "dobbelte typemodifikationer i %s-erklÃ¦ring"
  
! #: cp/name-lookup.cc:6397
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' should have been declared inside `%D'"
  msgid "%qD should have been declared inside %qD"
  msgstr "'%D' skulle have vÃ¦ret erklÃ¦ret inden i '%D'"
  
! #: cp/name-lookup.cc:6467
  #, fuzzy, gcc-internal-format
  msgid "%qD has not been declared within %qD"
  msgstr "'%#D' kan ikke erklÃ¦res"
  
! #: cp/name-lookup.cc:6469
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' declared as a friend"
  msgid "only here as a %<friend%>"
  msgstr "'%D' er erklÃ¦ret som en ven"
  
! #: cp/name-lookup.cc:6523
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute requires an integer constant argument"
  msgid "%qD attribute requires a single NTBS argument"
  msgstr "egenskaben '%s' krÃ¦ver en heltalskonstant som parameter"
  
! #: cp/name-lookup.cc:6530
  #, gcc-internal-format
  msgid "%qD attribute is meaningless since members of the anonymous namespace get local symbols"
  msgstr ""
  
! #: cp/name-lookup.cc:6540 cp/name-lookup.cc:6567
  #, gcc-internal-format
  msgid "ignoring %qD attribute on anonymous namespace"
  msgstr ""
  
! #: cp/name-lookup.cc:6546
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute only applies to variables"
  msgid "ignoring %qD attribute on non-inline namespace"
  msgstr "egenskaben '%s' kan kun anvendes pÃ¥ variabler"
  
! #: cp/name-lookup.cc:6583 cp/name-lookup.cc:9004
  #, fuzzy, gcc-internal-format
  msgid "%qD attribute directive ignored"
  msgstr "egenskabsdirektivet '%s' ignoreret"
  
! #: cp/name-lookup.cc:6912
  #, gcc-internal-format
  msgid "maximum limit of %d namespaces searched for %qE"
  msgstr ""
  
! #: cp/name-lookup.cc:6964
  #, gcc-internal-format
  msgid "suggested alternative:"
  msgid_plural "suggested alternatives:"
  msgstr[0] ""
  msgstr[1] ""
  
! #: cp/name-lookup.cc:6970
  #, gcc-internal-format
  msgid "  %qE"
  msgstr ""
  
! #: cp/name-lookup.cc:7295
  #, gcc-internal-format
  msgid "%<std::%s%> is defined in header %qs; this is probably fixable by adding %<#include %s%>"
  msgstr ""
  
! #: cp/name-lookup.cc:7301
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not a valid class name"
  msgid "%<std::%s%> is only available from %s onwards"
  msgstr "'%s' er et ugyldigt klassenavn"
  
! #: cp/name-lookup.cc:7739
  #, fuzzy, gcc-internal-format
  #| msgid "`%#D' cannot be declared"
  msgid "the macro %qs had not yet been defined"
  msgstr "'%#D' kan ikke erklÃ¦res"
  
! #: cp/name-lookup.cc:7742
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' previously defined here"
  msgid "it was later defined here"
  msgstr "'%s' tidligere defineret her"
  
! #: cp/name-lookup.cc:8538
  #, fuzzy, gcc-internal-format
  #| msgid "brace-enclosed initializer used to initialize `%T'"
  msgid "declaration of %<std::initializer_list%> does not match %<#include <initializer_list>%>, isn%'t a template"
  msgstr "startvÃ¦rdi i krÃ¸llede paranteser benyttet til at klargÃ¸re '%T'"
  
! #: cp/name-lookup.cc:8976
  #, fuzzy, gcc-internal-format
  #| msgid "switch \"%s\" is no longer supported"
  msgid "%<strong%> using directive no longer supported"
  msgstr "tilvalget '%s' understÃ¸ttes ikke lÃ¦ngere"
  
! #: cp/name-lookup.cc:8979
  #, fuzzy, gcc-internal-format
  msgid "you can use an inline namespace instead"
  msgstr "Angiv klassesti (forÃ¦ldet: benyt --classpath i stedet)"
  
! #: cp/name-lookup.cc:8998
  #, fuzzy, gcc-internal-format
  msgid "%<omp::%E%> not allowed to be specified in this context"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
  #. We only allow depth 255.
! #: cp/name-lookup.cc:9090
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "`%D' was not declared in this scope"
  msgid "cannot nest more than %d namespaces"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: cp/name-lookup.cc:9192
  #, fuzzy, gcc-internal-format
  #| msgid "use of `%D' is ambiguous"
  msgid "%<namespace %E%> is ambiguous"
  msgstr "brug af '%D' er tvetydigt"
  
! #: cp/name-lookup.cc:9208
  #, fuzzy, gcc-internal-format
  #| msgid "namespace alias `%D' not allowed here, assuming `%D'"
  msgid "namespace alias %qD not allowed here, assuming %qD"
  msgstr "navnerumsalias '%D' er ikke tilladt her, antager '%D'"
  
! #: cp/name-lookup.cc:9291
  #, fuzzy, gcc-internal-format
  msgid "exporting namespace %qD with internal linkage"
  msgstr "tidligere erklÃ¦ring af '%#D' med %L-kÃ¦dning"
  
! #: cp/name-lookup.cc:9293
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' was not declared in this scope"
  msgid "%qD has internal linkage because it was declared in an unnamed namespace"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: cp/name-lookup.cc:9297
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<namespace%>"
  msgid "exporting unnamed namespace"
  msgstr "forventede %<namespace%>"
  
! #: cp/name-lookup.cc:9307
  #, fuzzy, gcc-internal-format
  msgid "inline namespace must be specified at initial definition"
  msgstr "sektionsegenskaben kan ikke angives for lokale variabler"
  
! #: cp/name-lookup.cc:9357
  #, fuzzy, gcc-internal-format
  #| msgid "`%#D' conflicts with previous using declaration `%#D'"
  msgid "%s namespace %qD conflicts with reachable definition"
  msgstr "'%#D' strider mod tidligere using-erklÃ¦ring '%#D'"
  
! #: cp/name-lookup.cc:9359
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "reachable %s definition here"
  msgstr "tidligere definition her"
  
! #: cp/name-lookup.cc:9402
  #, gcc-internal-format
  msgid "XXX entering %<pop_everything ()%>"
  msgstr ""
  
! #: cp/name-lookup.cc:9411
  #, gcc-internal-format
  msgid "XXX leaving %<pop_everything ()%>"
  msgstr ""
--- 67489,67764 ----
  msgid "friend declaration %qD in local class without prior local declaration"
  msgstr "friend-erklÃ¦ringen er ikke i klassedefinitionen"
  
! #: cp/name-lookup.cc:4656
  #, fuzzy, gcc-internal-format
  msgid "%s %<%s(%E)%> %p %d"
  msgstr "%s: %s: "
  
! #: cp/name-lookup.cc:4659
  #, fuzzy, gcc-internal-format
  msgid "%s %s %p %d"
  msgstr "%s: %s: "
  
! #: cp/name-lookup.cc:5255
  #, gcc-internal-format
  msgid "exporting %q#D that does not have external linkage"
  msgstr ""
  
! #: cp/name-lookup.cc:5259
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "%q#D declared here with no linkage"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/name-lookup.cc:5262
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' undeclared here (not in a function)"
  msgid "%q#D declared here with internal linkage"
  msgstr "'%s' ikke erklÃ¦ret her (ikke i en funktion)"
  
! #: cp/name-lookup.cc:5265
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "%q#D declared here with module linkage"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/name-lookup.cc:6073
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' names constructor"
  msgid "%<%T%s%D%> names destructor"
  msgstr "'%D' navngiver en konstruktionsfunktion"
  
! #: cp/name-lookup.cc:6089
  #, gcc-internal-format
  msgid "using-declaration for non-member at class scope"
  msgstr "using-erklÃ¦ring for ikke-medlem ved klassevirkefelt"
  
! #: cp/name-lookup.cc:6097
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<using%> with enumeration scope %q#T only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/name-lookup.cc:6113 cp/pt.cc:18962
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a class or namespace"
  msgid "%qT is not a class, namespace, or enumeration"
  msgstr "'%T' er ikke en klasse eller et navnerum"
  
! #: cp/name-lookup.cc:6123
  #, fuzzy, gcc-internal-format
  msgid "non-member using-declaration names constructor of %qT"
  msgstr "using-erklÃ¦ring for destruktionsfunktion"
  
! #: cp/name-lookup.cc:6134 cp/name-lookup.cc:6207
  #, fuzzy, gcc-internal-format
  #| msgid "using-declaration for non-member at class scope"
  msgid "using-declaration for member at non-class scope"
  msgstr "using-erklÃ¦ring for ikke-medlem ved klassevirkefelt"
  
! #: cp/name-lookup.cc:6157
  #, fuzzy, gcc-internal-format
  #| msgid "type `%D' is not a direct base of `%T'"
  msgid "%qT is not a direct base of %qT"
  msgstr "typen '%D' er ikke en direkte stamklasse til '%T'"
  
! #: cp/name-lookup.cc:6217
  #, gcc-internal-format
  msgid "did you mean %<using enum %T::%D%>?"
  msgstr ""
  
! #: cp/name-lookup.cc:6229
  #, fuzzy, gcc-internal-format
  msgid "%qD has not been declared in %qD"
  msgstr "'%#D' kan ikke erklÃ¦res"
  
! #: cp/name-lookup.cc:6244
  #, fuzzy, gcc-internal-format
  msgid "using-declaration may not name namespace %qD"
  msgstr "using-erklÃ¦ring for destruktionsfunktion"
  
! #: cp/name-lookup.cc:6255
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' names constructor"
  msgid "%<%T::%D%> names constructor in %qT"
  msgstr "'%D' navngiver en konstruktionsfunktion"
  
! #: cp/name-lookup.cc:6348
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%D' not in a namespace surrounding `%D'"
  msgid "declaration of %qD not in a namespace surrounding %qD"
  msgstr "erklÃ¦ring af '%D' er ikke i et navnerum der omgiver '%D'"
  
! #: cp/name-lookup.cc:6390
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate type qualifiers in %s declaration"
  msgid "explicit qualification in declaration of %qD"
  msgstr "dobbelte typemodifikationer i %s-erklÃ¦ring"
  
! #: cp/name-lookup.cc:6400
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' should have been declared inside `%D'"
  msgid "%qD should have been declared inside %qD"
  msgstr "'%D' skulle have vÃ¦ret erklÃ¦ret inden i '%D'"
  
! #: cp/name-lookup.cc:6470
  #, fuzzy, gcc-internal-format
  msgid "%qD has not been declared within %qD"
  msgstr "'%#D' kan ikke erklÃ¦res"
  
! #: cp/name-lookup.cc:6472
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' declared as a friend"
  msgid "only here as a %<friend%>"
  msgstr "'%D' er erklÃ¦ret som en ven"
  
! #: cp/name-lookup.cc:6526
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute requires an integer constant argument"
  msgid "%qD attribute requires a single NTBS argument"
  msgstr "egenskaben '%s' krÃ¦ver en heltalskonstant som parameter"
  
! #: cp/name-lookup.cc:6533
  #, gcc-internal-format
  msgid "%qD attribute is meaningless since members of the anonymous namespace get local symbols"
  msgstr ""
  
! #: cp/name-lookup.cc:6543 cp/name-lookup.cc:6570
  #, gcc-internal-format
  msgid "ignoring %qD attribute on anonymous namespace"
  msgstr ""
  
! #: cp/name-lookup.cc:6549
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute only applies to variables"
  msgid "ignoring %qD attribute on non-inline namespace"
  msgstr "egenskaben '%s' kan kun anvendes pÃ¥ variabler"
  
! #: cp/name-lookup.cc:6586 cp/name-lookup.cc:9007
  #, fuzzy, gcc-internal-format
  msgid "%qD attribute directive ignored"
  msgstr "egenskabsdirektivet '%s' ignoreret"
  
! #: cp/name-lookup.cc:6915
  #, gcc-internal-format
  msgid "maximum limit of %d namespaces searched for %qE"
  msgstr ""
  
! #: cp/name-lookup.cc:6967
  #, gcc-internal-format
  msgid "suggested alternative:"
  msgid_plural "suggested alternatives:"
  msgstr[0] ""
  msgstr[1] ""
  
! #: cp/name-lookup.cc:6973
  #, gcc-internal-format
  msgid "  %qE"
  msgstr ""
  
! #: cp/name-lookup.cc:7298
  #, gcc-internal-format
  msgid "%<std::%s%> is defined in header %qs; this is probably fixable by adding %<#include %s%>"
  msgstr ""
  
! #: cp/name-lookup.cc:7304
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not a valid class name"
  msgid "%<std::%s%> is only available from %s onwards"
  msgstr "'%s' er et ugyldigt klassenavn"
  
! #: cp/name-lookup.cc:7742
  #, fuzzy, gcc-internal-format
  #| msgid "`%#D' cannot be declared"
  msgid "the macro %qs had not yet been defined"
  msgstr "'%#D' kan ikke erklÃ¦res"
  
! #: cp/name-lookup.cc:7745
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' previously defined here"
  msgid "it was later defined here"
  msgstr "'%s' tidligere defineret her"
  
! #: cp/name-lookup.cc:8541
  #, fuzzy, gcc-internal-format
  #| msgid "brace-enclosed initializer used to initialize `%T'"
  msgid "declaration of %<std::initializer_list%> does not match %<#include <initializer_list>%>, isn%'t a template"
  msgstr "startvÃ¦rdi i krÃ¸llede paranteser benyttet til at klargÃ¸re '%T'"
  
! #: cp/name-lookup.cc:8979
  #, fuzzy, gcc-internal-format
  #| msgid "switch \"%s\" is no longer supported"
  msgid "%<strong%> using directive no longer supported"
  msgstr "tilvalget '%s' understÃ¸ttes ikke lÃ¦ngere"
  
! #: cp/name-lookup.cc:8982
  #, fuzzy, gcc-internal-format
  msgid "you can use an inline namespace instead"
  msgstr "Angiv klassesti (forÃ¦ldet: benyt --classpath i stedet)"
  
! #: cp/name-lookup.cc:9001
  #, fuzzy, gcc-internal-format
  msgid "%<omp::%E%> not allowed to be specified in this context"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
  #. We only allow depth 255.
! #: cp/name-lookup.cc:9093
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "`%D' was not declared in this scope"
  msgid "cannot nest more than %d namespaces"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: cp/name-lookup.cc:9195
  #, fuzzy, gcc-internal-format
  #| msgid "use of `%D' is ambiguous"
  msgid "%<namespace %E%> is ambiguous"
  msgstr "brug af '%D' er tvetydigt"
  
! #: cp/name-lookup.cc:9211
  #, fuzzy, gcc-internal-format
  #| msgid "namespace alias `%D' not allowed here, assuming `%D'"
  msgid "namespace alias %qD not allowed here, assuming %qD"
  msgstr "navnerumsalias '%D' er ikke tilladt her, antager '%D'"
  
! #: cp/name-lookup.cc:9294
  #, fuzzy, gcc-internal-format
  msgid "exporting namespace %qD with internal linkage"
  msgstr "tidligere erklÃ¦ring af '%#D' med %L-kÃ¦dning"
  
! #: cp/name-lookup.cc:9296
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' was not declared in this scope"
  msgid "%qD has internal linkage because it was declared in an unnamed namespace"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: cp/name-lookup.cc:9300
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<namespace%>"
  msgid "exporting unnamed namespace"
  msgstr "forventede %<namespace%>"
  
! #: cp/name-lookup.cc:9310
  #, fuzzy, gcc-internal-format
  msgid "inline namespace must be specified at initial definition"
  msgstr "sektionsegenskaben kan ikke angives for lokale variabler"
  
! #: cp/name-lookup.cc:9360
  #, fuzzy, gcc-internal-format
  #| msgid "`%#D' conflicts with previous using declaration `%#D'"
  msgid "%s namespace %qD conflicts with reachable definition"
  msgstr "'%#D' strider mod tidligere using-erklÃ¦ring '%#D'"
  
! #: cp/name-lookup.cc:9362
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "reachable %s definition here"
  msgstr "tidligere definition her"
  
! #: cp/name-lookup.cc:9405
  #, gcc-internal-format
  msgid "XXX entering %<pop_everything ()%>"
  msgstr ""
  
! #: cp/name-lookup.cc:9414
  #, gcc-internal-format
  msgid "XXX leaving %<pop_everything ()%>"
  msgstr ""
*************** msgstr "kaldenavnet '%s' er i modstrid m
*** 67676,67682 ****
  msgid "%<LEXER_DEBUGGING_ENABLED_P%> is not set to true"
  msgstr ""
  
! #: cp/parser.cc:1724 cp/parser.cc:49645
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma omp declare %s%> not immediately followed by function declaration or definition"
  msgstr "en global registervariabel fÃ¸lger en funktionsdefinition"
--- 67784,67790 ----
  msgid "%<LEXER_DEBUGGING_ENABLED_P%> is not set to true"
  msgstr ""
  
! #: cp/parser.cc:1724 cp/parser.cc:49704
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma omp declare %s%> not immediately followed by function declaration or definition"
  msgstr "en global registervariabel fÃ¸lger en funktionsdefinition"
*************** msgstr "'%#D' kan ikke erklÃ¦res"
*** 67724,67730 ****
  msgid "request for member %qE in non-class type %qT"
  msgstr "forespÃ¸rgsel efter medlemmet '%D' i '%E' som er af en ikke-klassetype '%T'"
  
! #: cp/parser.cc:3517 cp/parser.cc:22267
  #, fuzzy, gcc-internal-format
  msgid "%<%T::%E%> has not been declared"
  msgstr "'%#D' kan ikke erklÃ¦res"
--- 67832,67838 ----
  msgid "request for member %qE in non-class type %qT"
  msgstr "forespÃ¸rgsel efter medlemmet '%D' i '%E' som er af en ikke-klassetype '%T'"
  
! #: cp/parser.cc:3517 cp/parser.cc:22271
  #, fuzzy, gcc-internal-format
  msgid "%<%T::%E%> has not been declared"
  msgstr "'%#D' kan ikke erklÃ¦res"
*************** msgstr "skabelonsparameter %d er ugyldig
*** 67966,67972 ****
  msgid "%<concept%> only available with %<-std=c++20%> or %<-fconcepts%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:3922 cp/parser.cc:32272
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<requires%> only available with %<-std=c++20%> or %<-fconcepts%>"
--- 68074,68080 ----
  msgid "%<concept%> only available with %<-std=c++20%> or %<-fconcepts%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:3922 cp/parser.cc:32331
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<requires%> only available with %<-std=c++20%> or %<-fconcepts%>"
*************** msgstr "skabelonsparameter %d er ugyldig
*** 68226,68232 ****
  msgid "template-id not allowed for destructor in C++20"
  msgstr "modifikationer er ikke tilladt i erklÃ¦ring af 'operator %T'"
  
! #: cp/parser.cc:6989 cp/parser.cc:33504
  #, gcc-internal-format
  msgid "remove the %qs"
  msgstr ""
--- 68334,68340 ----
  msgid "template-id not allowed for destructor in C++20"
  msgstr "modifikationer er ikke tilladt i erklÃ¦ring af 'operator %T'"
  
! #: cp/parser.cc:6989 cp/parser.cc:33563
  #, gcc-internal-format
  msgid "remove the %qs"
  msgstr ""
*************** msgstr "erklÃ¦ring af '%s' skygger for e
*** 68242,68248 ****
  msgid "typedef-name %qD used as destructor declarator"
  msgstr "skabelons-id '%D' benyttet som erklÃ¦rer"
  
! #: cp/parser.cc:7155 cp/parser.cc:24869
  #, gcc-internal-format
  msgid "expected unqualified-id"
  msgstr ""
--- 68350,68356 ----
  msgid "typedef-name %qD used as destructor declarator"
  msgstr "skabelons-id '%D' benyttet som erklÃ¦rer"
  
! #: cp/parser.cc:7155 cp/parser.cc:24873
  #, gcc-internal-format
  msgid "expected unqualified-id"
  msgstr ""
*************** msgstr "ufuldstÃ¦ndig type '%T' kan ikke
*** 68284,68290 ****
  msgid "expected nested-name-specifier"
  msgstr "uventet operand"
  
! #: cp/parser.cc:7808 cp/parser.cc:10516
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in casts"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
--- 68392,68398 ----
  msgid "expected nested-name-specifier"
  msgstr "uventet operand"
  
! #: cp/parser.cc:7808 cp/parser.cc:10518
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in casts"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
*************** msgstr "new kan ikke bruges pÃ¥ en refer
*** 68300,68306 ****
  msgid "wrong number of arguments to %<__builtin_addressof%>"
  msgstr "forkert antal skabelonsparametre (%d, skulle vÃ¦re %d)"
  
! #: cp/parser.cc:8002 cp/pt.cc:21522
  #, fuzzy, gcc-internal-format
  #| msgid "wrong type argument to bit-complement"
  msgid "wrong number of arguments to %<__builtin_launder%>"
--- 68408,68414 ----
  msgid "wrong number of arguments to %<__builtin_addressof%>"
  msgstr "forkert antal skabelonsparametre (%d, skulle vÃ¦re %d)"
  
! #: cp/parser.cc:8002 cp/pt.cc:21551
  #, fuzzy, gcc-internal-format
  #| msgid "wrong type argument to bit-complement"
  msgid "wrong number of arguments to %<__builtin_launder%>"
*************** msgstr "forkert antal skabelonsparametre
*** 68318,68334 ****
  msgid "wrong number of arguments to %<__builtin_shufflevector%>"
  msgstr "forkert antal skabelonsparametre (%d, skulle vÃ¦re %d)"
  
! #: cp/parser.cc:8069 cp/pt.cc:21637
  #, gcc-internal-format
  msgid "call to %<__builtin_operator_new%> does not select replaceable global allocation function"
  msgstr ""
  
! #: cp/parser.cc:8073 cp/pt.cc:21641
  #, gcc-internal-format
  msgid "call to %<__builtin_operator_delete%> does not select replaceable global deallocation function"
  msgstr ""
  
! #: cp/parser.cc:8078 cp/pt.cc:21646
  #, fuzzy, gcc-internal-format
  msgid "selected function declared here"
  msgstr "Ugyldig erklÃ¦ring"
--- 68426,68442 ----
  msgid "wrong number of arguments to %<__builtin_shufflevector%>"
  msgstr "forkert antal skabelonsparametre (%d, skulle vÃ¦re %d)"
  
! #: cp/parser.cc:8069 cp/pt.cc:21666
  #, gcc-internal-format
  msgid "call to %<__builtin_operator_new%> does not select replaceable global allocation function"
  msgstr ""
  
! #: cp/parser.cc:8073 cp/pt.cc:21670
  #, gcc-internal-format
  msgid "call to %<__builtin_operator_delete%> does not select replaceable global deallocation function"
  msgstr ""
  
! #: cp/parser.cc:8078 cp/pt.cc:21675
  #, fuzzy, gcc-internal-format
  msgid "selected function declared here"
  msgstr "Ugyldig erklÃ¦ring"
*************** msgstr ""
*** 68375,69848 ****
  msgid "ISO C++ does not allow %<alignof%> with a non-type"
  msgstr "ISO C++ tillader ikke %<alignof%> med en ikke-type"
  
! #: cp/parser.cc:9507
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in %<noexcept%> expressions"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:9566
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' cannot have default arguments"
  msgid "%<co_await%> cannot be used in default arguments"
  msgstr "'%D' kan ikke have standardparametre"
  
! #: cp/parser.cc:9791 cp/parser.cc:34822
  #, fuzzy, gcc-internal-format
  #| msgid "types may not be defined in a new-expression"
  msgid "types may not be defined in %qs expressions"
  msgstr "typer kan ikke defineres i et nyt udtryk"
  
! #: cp/parser.cc:9856
  #, gcc-internal-format
  msgid "%<__builtin_has_attribute%> with dependent argument not supported yet"
  msgstr ""
  
! #: cp/parser.cc:9942
  #, gcc-internal-format
  msgid "types may not be defined in a new-expression"
  msgstr "typer kan ikke defineres i et nyt udtryk"
  
! #: cp/parser.cc:9960
  #, fuzzy, gcc-internal-format
  msgid "array bound forbidden after parenthesized type-id"
  msgstr "egenskaber i parametertabelerklÃ¦ring ignoreret"
  
! #: cp/parser.cc:9962
  #, gcc-internal-format
  msgid "try removing the parentheses around the type-id"
  msgstr ""
  
! #: cp/parser.cc:9995
  #, gcc-internal-format
  msgid "initialization of new-expression for type %<auto%> requires exactly one element"
  msgstr ""
  
! #: cp/parser.cc:10040
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "expected expression-list or type-id"
  msgstr "uventet adresseudtryk"
  
! #: cp/parser.cc:10069
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in a new-type-id"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:10117
  #, fuzzy, gcc-internal-format
  #| msgid "storage class `%D' applied to template instantiation"
  msgid "attributes ignored on outermost array type in new expression"
  msgstr "lagringsklasse '%D' anvendt pÃ¥ skabelonsinstantiering"
  
! #: cp/parser.cc:10213
  #, fuzzy, gcc-internal-format
  msgid "expression in new-declarator must have integral or enumeration type"
  msgstr "stÃ¸rrelse i tabel-new skal vÃ¦re en heltalstype"
  
! #: cp/parser.cc:10619
  #, fuzzy, gcc-internal-format
  #| msgid "use of old-style cast"
  msgid "use of old-style cast to %q#T"
  msgstr "brug af Ã¦ldre type typeomtvingning"
  
! #: cp/parser.cc:10769
  #, gcc-internal-format
  msgid "%<>>%> operator is treated as two right angle brackets in C++11"
  msgstr ""
  
! #: cp/parser.cc:10772
  #, fuzzy, gcc-internal-format
  #| msgid "suggest parentheses around && within ||"
  msgid "suggest parentheses around %<>>%> expression"
  msgstr "foreslÃ¥r paranteser omkring && inden i ||"
  
! #: cp/parser.cc:10998
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ does not allow ?: with omitted middle operand"
  msgid "ISO C++ does not allow %<?:%> with omitted middle operand"
  msgstr "ISO C++ tillader ikke ?: med udeladt midter operand"
  
! #: cp/parser.cc:11322
  #, fuzzy, gcc-internal-format
  msgid "top-level comma expression in array subscript is deprecated"
  msgstr "ISO C forbyder brug af typeomtvingningsudtryk som venstrevÃ¦rdier"
  
! #: cp/parser.cc:11470
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined within %<__builtin_offsetof%>"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:11604
  #, gcc-internal-format
  msgid "trailing argument to %<__type_pack_element%> is not a type"
  msgstr ""
  
! #: cp/parser.cc:11704
  #, fuzzy, gcc-internal-format
  #| msgid "Invalid expression statement"
  msgid "lambda-expression in template parameter type"
  msgstr "Ugyldig udtrykssÃ¦tning"
  
! #: cp/parser.cc:11714
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "lambda-expression in unevaluated context only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:11724
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "lambda-expression in template-argument only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:11898
  #, gcc-internal-format
  msgid "non-local lambda expression cannot have a capture-default"
  msgstr ""
  
! #: cp/parser.cc:11921
  #, gcc-internal-format
  msgid "expected end of capture-list"
  msgstr ""
  
! #: cp/parser.cc:11937
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "explicit by-copy capture of %<this%> with by-copy capture default only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/parser.cc:11943 cp/parser.cc:11965 cp/parser.cc:12163
  #, gcc-internal-format
  msgid "already captured %qD in lambda expression"
  msgstr ""
  
! #: cp/parser.cc:11959
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "%<*this%> capture only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/parser.cc:11979
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare %s to references"
  msgid "%<this%> cannot be captured by reference"
  msgstr "kan ikke erklÃ¦re %s til referencer"
  
! #: cp/parser.cc:11999
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "pack init-capture only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/parser.cc:12010
  #, gcc-internal-format
  msgid "%<&%> should come before %<...%>"
  msgstr ""
  
! #: cp/parser.cc:12040
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "lambda capture initializers only available with %<-std=c++14%> or %<-std=gnu++14%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/parser.cc:12049
  #, fuzzy, gcc-internal-format
  #| msgid "non-empty initializer for array of empty elements"
  msgid "empty initializer for lambda init-capture"
  msgstr "en startvÃ¦rdi der ikke er tom, tildeles til en tabel med tomme elementer"
  
! #: cp/parser.cc:12074
  #, fuzzy, gcc-internal-format
  #| msgid "%s of read-only variable `%s'"
  msgid "capture of non-variable %qE"
  msgstr "%s af variablen '%s' der kun mÃ¥ lÃ¦ses"
  
! #: cp/parser.cc:12078 cp/parser.cc:12089 cp/semantics.cc:4618
  #: cp/semantics.cc:4634
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "%q#D declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/parser.cc:12085
  #, gcc-internal-format
  msgid "capture of variable %qD with non-automatic storage duration"
  msgstr ""
  
! #: cp/parser.cc:12123
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<...%> in lambda capture"
  msgstr "for mange inddatafiler"
  
! #: cp/parser.cc:12134
  #, gcc-internal-format
  msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
  msgstr ""
  
! #: cp/parser.cc:12139
  #, gcc-internal-format
  msgid "explicit by-reference capture of %qD redundant with by-reference capture default"
  msgstr ""
  
! #: cp/parser.cc:12221
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "lambda templates are only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:12275
  #, fuzzy, gcc-internal-format
  #| msgid "default argument given for parameter %d of `%#D'"
  msgid "default argument specified for lambda parameter"
  msgstr "standardparameter givet til %d. parameter for '%#D'"
  
! #: cp/parser.cc:12298
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "parameter declaration before lambda declaration specifiers only optional with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:12328 cp/pt.cc:14987
  #, gcc-internal-format
  msgid "a lambda with captures may not have an explicit object parameter of an unrelated type"
  msgstr ""
  
! #: cp/parser.cc:12341
  #, fuzzy, gcc-internal-format
  #| msgid "default argument given for parameter %d of `%#D'"
  msgid "%<mutable%> lambda specifier with explicit object parameter"
  msgstr "standardparameter givet til %d. parameter for '%#D'"
  
! #: cp/parser.cc:12350
  #, gcc-internal-format
  msgid "the passed in closure object will not be mutated because it is taken by value"
  msgstr ""
  
! #: cp/parser.cc:12354
  #, gcc-internal-format
  msgid "declare the explicit object parameter as non-const reference instead"
  msgstr ""
  
! #: cp/parser.cc:12358
  #, gcc-internal-format
  msgid "explicit object parameter is already a mutable reference"
  msgstr ""
  
! #: cp/parser.cc:12365
  #, fuzzy, gcc-internal-format
  #| msgid "default argument given for parameter %d of `%#D'"
  msgid "%<static%> lambda specifier with explicit object parameter"
  msgstr "standardparameter givet til %d. parameter for '%#D'"
  
! #: cp/parser.cc:12383
  #, gcc-internal-format
  msgid "%<static%> lambda specifier with lambda capture"
  msgstr ""
  
! #: cp/parser.cc:12395
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "parameter declaration before lambda transaction qualifier only optional with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/parser.cc:12408
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "parameter declaration before lambda exception specification only optional with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:12426
  #, gcc-internal-format
  msgid "parameter declaration before lambda trailing return type only optional with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:12468
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<constexpr%> lambda only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:13029
  #, fuzzy, gcc-internal-format
  #| msgid "function cannot be inline"
  msgid "preconditions cannot be statements"
  msgstr "funktion kan ikke indbygges"
  
! #: cp/parser.cc:13032
  #, fuzzy, gcc-internal-format
  #| msgid "function cannot be inline"
  msgid "postconditions cannot be statements"
  msgstr "funktion kan ikke indbygges"
  
! #: cp/parser.cc:13037
  #, fuzzy, gcc-internal-format
  msgid "assertions must be followed by %<;%>"
  msgstr "sektionsegenskaben er ikke tilladt for '%s'"
  
! #: cp/parser.cc:13202
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "label at end of compound statement only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:13382 cp/parser.cc:13627
  #, fuzzy, gcc-internal-format
  msgid "attributes at the beginning of statement are ignored"
  msgstr "egenskaber i parametertabelerklÃ¦ring ignoreret"
  
! #: cp/parser.cc:13453
  #, fuzzy, gcc-internal-format
  #| msgid "empty body in an else-statement"
  msgid "expected labeled-statement"
  msgstr "tom krop i en else-sÃ¦tning"
  
! #: cp/parser.cc:13502
  #, fuzzy, gcc-internal-format
  #| msgid "case label `%E' not within a switch statement"
  msgid "case label %qE not within a switch statement"
  msgstr "case-etiket '%E' befinder sig ikke inden i en switch-sÃ¦tning"
  
! #: cp/parser.cc:13635
  #, gcc-internal-format
  msgid "need %<typename%> before %qE because %qT is a dependent scope"
  msgstr ""
  
  #. A::A a;
! #: cp/parser.cc:13641
  #, fuzzy, gcc-internal-format
  msgid "%qE names the constructor, not the type"
  msgstr "'%D' erklÃ¦rer ikke en skabelonstype"
  
! #: cp/parser.cc:13699
  #, fuzzy, gcc-internal-format
  #| msgid "In statement function"
  msgid "compound-statement in %<constexpr%> function"
  msgstr "I sÃ¦tningsfunktion"
  
! #: cp/parser.cc:13763
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested with %<tile%> directive"
  msgstr ""
  
! #: cp/parser.cc:13968
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<if constexpr%> only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:13990
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<if consteval%> only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:14015 cp/parser.cc:14050
  #, fuzzy, gcc-internal-format
  #| msgid "invalid lvalue in asm statement"
  msgid "%<if consteval%> requires compound statement"
  msgstr "ugyldig venstrevÃ¦rdi i asm-sÃ¦tning"
  
! #: cp/parser.cc:14092
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "init-statement in selection statements only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:14260 cp/parser.cc:35334
  #, fuzzy, gcc-internal-format
  #| msgid "empty body in an else-statement"
  msgid "expected selection-statement"
  msgstr "tom krop i en else-sÃ¦tning"
  
! #: cp/parser.cc:14301
  #, fuzzy, gcc-internal-format
  #| msgid "function returns an aggregate"
  msgid "condition declares an array"
  msgstr "funktion returnerer en vÃ¦rdi af en sammensat type"
  
! #: cp/parser.cc:14303
  #, fuzzy, gcc-internal-format
  #| msgid "field `%s' declared as a function"
  msgid "condition declares a function"
  msgstr "feltet '%s' er erklÃ¦ret som en funktion"
  
! #: cp/parser.cc:14344
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in conditions"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
  #. Anything else is an error.
! #: cp/parser.cc:14446 cp/parser.cc:24109 cp/parser.cc:26828
  #, fuzzy, gcc-internal-format
  #| msgid "empty scalar initializer"
  msgid "expected initializer"
  msgstr "tom skalarstartvÃ¦rdi"
  
! #: cp/parser.cc:14496
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "range-based %<for%> loops with initializer only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/parser.cc:14758
  #, gcc-internal-format
  msgid "loop variable %qD of type %qT binds to a temporary constructed from type %qT"
  msgstr ""
  
  #. rval
! #: cp/parser.cc:14765
  #, gcc-internal-format
  msgid "use non-reference type %qT to make the copy explicit or %qT to prevent copying"
  msgstr ""
  
! #: cp/parser.cc:14791
  #, fuzzy, gcc-internal-format
  #| msgid "sizeof applied to a function type"
  msgid "loop variable %qD creates a copy from type %qT"
  msgstr "sizeof benyttet pÃ¥ en funktionstype"
  
! #: cp/parser.cc:14796
  #, gcc-internal-format
  msgid "use reference type to prevent copying"
  msgstr ""
  
! #: cp/parser.cc:14935
  #, fuzzy, gcc-internal-format
  #| msgid "expression statement has incomplete type"
  msgid "range-based %<for%> expression of type %qT has incomplete type"
  msgstr "udtrykket er af en ufuldstÃ¦ndig type"
  
! #: cp/parser.cc:15019
  #, gcc-internal-format
  msgid "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
  msgstr ""
  
! #: cp/parser.cc:15171 cp/parser.cc:35337
  #, fuzzy, gcc-internal-format
  msgid "expected iteration-statement"
  msgstr "uventet operand"
  
! #: cp/parser.cc:15216
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "alias-declaration in init-statement only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:15233
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "range-based %<for%> loops only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/parser.cc:15395
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<goto%> in %<constexpr%> function only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
  #. Issue a warning about this use of a GNU extension.
! #: cp/parser.cc:15404
  #, gcc-internal-format
  msgid "ISO C++ forbids computed gotos"
  msgstr "ISO C++ forbyder beregnede goto'er"
  
! #: cp/parser.cc:15423 cp/parser.cc:35340
  #, fuzzy, gcc-internal-format
  msgid "expected jump-statement"
  msgstr "uventet operand"
  
! #: cp/parser.cc:15598
  #, fuzzy, gcc-internal-format
  #| msgid "empty declaration"
  msgid "expected module-partition"
  msgstr "tom erklÃ¦ring"
  
! #: cp/parser.cc:15600
  #, fuzzy, gcc-internal-format
  msgid "expected module-name"
  msgstr "uventet operand"
  
! #: cp/parser.cc:15642
  #, fuzzy, gcc-internal-format
  #| msgid "method definition not in class context"
  msgid "module-declaration not permitted in header-unit"
  msgstr "metodedefinitionen optrÃ¦der ikke i en klassekontekst"
  
! #: cp/parser.cc:15648
  #, fuzzy, gcc-internal-format
  #| msgid "using-declaration for non-member at class scope"
  msgid "module-declaration must be at global scope"
  msgstr "using-erklÃ¦ring for ikke-medlem ved klassevirkefelt"
  
! #: cp/parser.cc:15649
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' previously defined here"
  msgid "scope opened here"
  msgstr "'%s' tidligere defineret her"
  
! #: cp/parser.cc:15675
  #, fuzzy, gcc-internal-format
  #| msgid "no arguments"
  msgid "private module fragment"
  msgstr "ingen parametre"
  
! #: cp/parser.cc:15679
  #, gcc-internal-format
  msgid "private module fragment only permitted in purview of module interface or partition"
  msgstr ""
  
  #. Neither the first declaration, nor in a GMF.
! #: cp/parser.cc:15685
  #, gcc-internal-format
  msgid "module-declaration only permitted as first declaration, or ending a global module fragment"
  msgstr ""
  
! #: cp/parser.cc:15726
  #, gcc-internal-format
  msgid "post-module-declaration imports must be contiguous"
  msgstr ""
  
! #: cp/parser.cc:15728 cp/parser.cc:15737
  #, gcc-internal-format
  msgid "perhaps insert a line break after %<import%>, or other disambiguation, to prevent this being considered a module control-line"
  msgstr ""
  
! #: cp/parser.cc:15736
  #, fuzzy, gcc-internal-format
  #| msgid "using-declaration for non-member at class scope"
  msgid "import-declaration must be at global scope"
  msgstr "using-erklÃ¦ring for ikke-medlem ved klassevirkefelt"
  
! #: cp/parser.cc:15760
  #, gcc-internal-format
  msgid "import specifying a module-partition must appear after a named module-declaration"
  msgstr ""
  
! #: cp/parser.cc:15781
  #, gcc-internal-format
  msgid "post-module-declaration imports must not be include-translated"
  msgstr ""
  
! #: cp/parser.cc:15784
  #, gcc-internal-format
  msgid "post-module-declaration imports must not be from header inclusion"
  msgstr ""
  
! #: cp/parser.cc:15805
  #, gcc-internal-format
  msgid "%qE may only occur after a module interface declaration"
  msgstr ""
  
! #: cp/parser.cc:15813
  #, fuzzy, gcc-internal-format
  msgid "%qE may only occur once in an export declaration"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:15834
  #, gcc-internal-format
  msgid "%<export%> not part of following module-directive"
  msgstr ""
  
! #: cp/parser.cc:15873
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not allow extra `;' outside of a function"
  msgid "extra %<;%> outside of a function only allowed in C++11"
  msgstr "ISO C tillader ikke ekstra ';' uden for funktioner"
  
! #: cp/parser.cc:15876
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not allow extra `;' outside of a function"
  msgid "extra %<;%> outside of a function"
  msgstr "ISO C tillader ikke ekstra ';' uden for funktioner"
  
! #: cp/parser.cc:15885
  #, gcc-internal-format
  msgid "extra %<;%> inside a struct only allowed in C++11"
  msgstr ""
  
! #: cp/parser.cc:15887
  #, gcc-internal-format
  msgid "extra %<;%> inside a struct"
  msgstr ""
  
! #: cp/parser.cc:15895
  #, fuzzy, gcc-internal-format
  msgid "extra %<;%> after in-class function definition"
  msgstr "'%s' er erklÃ¦ret inline efter dens definition"
  
! #: cp/parser.cc:16065
  #, fuzzy, gcc-internal-format
  msgid "attributes are not permitted in this position"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: cp/parser.cc:16069
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute ignored"
  msgid "attributes may be inserted here"
  msgstr "egenskaben '%s' ignoreret"
  
! #: cp/parser.cc:16109
  #, fuzzy, gcc-internal-format
  #| msgid "explicit specialization of non-template `%T'"
  msgid "explicit specializations are not permitted here"
  msgstr "eksplicit specialisering af '%T' der ikke er en skabelon"
  
! #: cp/parser.cc:16111 cp/parser.cc:28251
  #, gcc-internal-format
  msgid "a specialization is always exported alongside its primary template"
  msgstr ""
  
! #: cp/parser.cc:16124
  #, fuzzy, gcc-internal-format
  #| msgid "explicit instantiation of non-template `%#D'"
  msgid "explicit instantiations are not permitted here"
  msgstr "eksplicit instantiering af ikke-skabelon '%#D'"
  
! #: cp/parser.cc:16140
  #, fuzzy, gcc-internal-format
  msgid "export-declarations are not permitted here"
  msgstr "  oprindelig definition er her"
  
! #: cp/parser.cc:16311
  #, gcc-internal-format
  msgid "%<__label__%> not at the beginning of a block"
  msgstr ""
  
! #: cp/parser.cc:16557
  #, gcc-internal-format
  msgid "non-variable %qD in declaration with more than one declarator with placeholder type"
  msgstr ""
  
! #: cp/parser.cc:16576
  #, gcc-internal-format
  msgid "inconsistent deduction for %qT: %qT and then %qT"
  msgstr ""
  
! #: cp/parser.cc:16597
  #, gcc-internal-format
  msgid "mixing declarations and function-definitions is forbidden"
  msgstr ""
  
! #: cp/parser.cc:16622
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in a for-range-declaration"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:16679
  #, gcc-internal-format
  msgid "initializer in range-based %<for%> loop"
  msgstr ""
  
! #: cp/parser.cc:16682
  #, fuzzy, gcc-internal-format
  #| msgid "multiple declarations `%T' and `%T'"
  msgid "multiple declarations in range-based %<for%> loop"
  msgstr "flere erklÃ¦ringer '%T' og '%T'"
  
! #: cp/parser.cc:16722
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "structured bindings with attributed identifiers only available with %<-std=c++2c%> or %<-std=gnu++2c%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:16759
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "structured bindings in conditions only available with %<-std=c++2c%> or %<-std=gnu++2c%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:16763
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "structured bindings only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:16820
  #, fuzzy, gcc-internal-format
  #| msgid "empty declaration"
  msgid "empty structured binding declaration"
  msgstr "tom erklÃ¦ring"
  
! #: cp/parser.cc:16838
  #, fuzzy, gcc-internal-format
  #| msgid "invalid initializer for bit string"
  msgid "invalid initializer for structured binding declaration"
  msgstr "ugyldig startvÃ¦rdi til bitstreng"
  
! #: cp/parser.cc:17033
  #, fuzzy, gcc-internal-format
  #| msgid "storage class specifiers invalid in parameter declarations"
  msgid "%<this%> must be the first specifier in a parameter declaration"
  msgstr "lagringsklasseanvisninger er ugyldige i parametererklÃ¦ringer"
  
! #: cp/parser.cc:17056
  #, gcc-internal-format
  msgid "%<friend%> used outside of class"
  msgstr ""
  
! #: cp/parser.cc:17094
  #, fuzzy, gcc-internal-format
  msgid "the %<bool%> keyword is not allowed in a C++20 concept definition"
  msgstr "en global registervariabel fÃ¸lger en funktionsdefinition"
  
! #: cp/parser.cc:17097
  #, gcc-internal-format
  msgid "C++20 concept definition syntax is %<concept <name> = <expr>%>"
  msgstr ""
  
! #: cp/parser.cc:17148
  #, fuzzy, gcc-internal-format
  #| msgid "section type conflict with %qD"
  msgid "%<typedef%> specifier conflicts with %qs"
  msgstr "afsnitstypekonflikt med %qD"
  
! #: cp/parser.cc:17174
  #, gcc-internal-format
  msgid "%<auto%> changes meaning in C++11; please remove it"
  msgstr ""
  
! #: cp/parser.cc:17210
  #, fuzzy, gcc-internal-format
  #| msgid "storage class specifiers invalid in friend function declarations"
  msgid "%qD invalid in condition"
  msgstr "lagringsklasseanvisninger er ugyldige i vennefunktionserklÃ¦ringer"
  
! #: cp/parser.cc:17219
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' invalid in `%#T'"
  msgid "%qD invalid in lambda"
  msgstr "'%D' ugyldig i '%#T'"
  
! #: cp/parser.cc:17223
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%qD only valid in lambda with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:17305
  #, fuzzy, gcc-internal-format
  #| msgid "storage class specifiers invalid in friend function declarations"
  msgid "type-specifier invalid in lambda"
  msgstr "lagringsklasseanvisninger er ugyldige i vennefunktionserklÃ¦ringer"
  
! #: cp/parser.cc:17318
  #, gcc-internal-format
  msgid "standard attributes in middle of decl-specifiers"
  msgstr ""
  
! #: cp/parser.cc:17320
  #, gcc-internal-format
  msgid "standard attributes must precede the decl-specifiers to apply to the declaration, or follow them to apply to the type"
  msgstr ""
  
! #: cp/parser.cc:17335
  #, fuzzy, gcc-internal-format
  msgid "class definition may not be declared a friend"
  msgstr "funktionen '%D' kan ikke erklÃ¦res friend"
  
! #: cp/parser.cc:17408 cp/parser.cc:29436
  #, gcc-internal-format
  msgid "templates may not be %<virtual%>"
  msgstr ""
  
! #: cp/parser.cc:17427
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in explicit-specifier"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:17431
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<explicit(bool)%> only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:17499
  #, fuzzy, gcc-internal-format
  #| msgid "invalid base-class specification"
  msgid "invalid linkage-specification"
  msgstr "ugyldig stamklasseangivelse"
  
! #: cp/parser.cc:17606
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "%<static_assert%> without a message only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/parser.cc:17636
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "%<static_assert%> with non-string message only available with %<-std=c++2c%> or %<-std=gnu++2c%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/parser.cc:17840
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<decltype(auto)%> type specifier only available with %<-std=c++14%> or %<-std=gnu++14%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:17853
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in %<decltype%> expressions"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:18029
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in a conversion-type-id"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:18058
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of void expression"
  msgid "invalid use of %<auto%> in conversion operator"
  msgstr "ugyldig brug af void-udtryk"
  
! #: cp/parser.cc:18062
  #, gcc-internal-format
  msgid "use of %<auto%> in member template conversion operator can never be deduced"
  msgstr ""
  
! #: cp/parser.cc:18146
  #, fuzzy, gcc-internal-format
  #| msgid "only constructors take base initializers"
  msgid "only constructors take member initializers"
  msgstr "kun konstruktionsfunktioner har stamklasseklargÃ¸ringer"
  
! #: cp/parser.cc:18173
  #, fuzzy, gcc-internal-format
  #| msgid "missing initializer for member `%D'"
  msgid "cannot expand initializer for member %qD"
  msgstr "manglende startvÃ¦rdi for medlemmet '%D'"
  
! #: cp/parser.cc:18185 cp/pt.cc:28283
  #, gcc-internal-format
  msgid "mem-initializer for %qD follows constructor delegation"
  msgstr ""
  
! #: cp/parser.cc:18197 cp/pt.cc:28295
  #, gcc-internal-format
  msgid "constructor delegation follows mem-initializer for %qD"
  msgstr ""
  
! #: cp/parser.cc:18249
  #, fuzzy, gcc-internal-format
  msgid "anachronistic old-style base class initializer"
  msgstr "forÃ¦ldet stamklasseklargÃ¸ring"
  
! #: cp/parser.cc:18337
  #, gcc-internal-format
  msgid "keyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)"
  msgstr ""
  
! #: cp/parser.cc:18749
  #, gcc-internal-format
  msgid "space between quotes and suffix is deprecated in C++23"
  msgstr ""
  
! #: cp/parser.cc:18755
  #, gcc-internal-format
  msgid "unexpected keyword; remove space between quotes and suffix identifier"
  msgstr ""
  
! #: cp/parser.cc:18761
  #, fuzzy, gcc-internal-format
  #| msgid "predicate must be an identifier"
  msgid "expected suffix identifier"
  msgstr "udsagn skal vÃ¦re et kaldenavn"
  
! #: cp/parser.cc:18770
  #, gcc-internal-format
  msgid "expected empty string after %<operator%> keyword"
  msgstr ""
  
! #: cp/parser.cc:18776
  #, fuzzy, gcc-internal-format
  #| msgid "invalid type modifier within pointer declarator"
  msgid "invalid encoding prefix in literal operator"
  msgstr "ugyldig typemodifikation i erklÃ¦ring af henvisning"
  
! #: cp/parser.cc:18810
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected operand"
  msgid "expected operator"
  msgstr "uventet operand"
  
! #: cp/parser.cc:18857
  #, fuzzy, gcc-internal-format
  #| msgid "keyword `export' not implemented, and will be ignored"
  msgid "keyword %<export%> not implemented, and will be ignored"
  msgstr "det reserverede ord 'export' er ikke implementeret og vil blive ignoreret"
  
! #: cp/parser.cc:18859
  #, fuzzy, gcc-internal-format
  #| msgid "keyword `export' not implemented, and will be ignored"
  msgid "keyword %<export%> is deprecated, and is ignored"
  msgstr "det reserverede ord 'export' er ikke implementeret og vil blive ignoreret"
  
! #: cp/parser.cc:18861
  #, gcc-internal-format
  msgid "keyword %<export%> is enabled with %<-fmodules%>"
  msgstr ""
  
! #: cp/parser.cc:18966
  #, fuzzy, gcc-internal-format
  #| msgid "invalid catch parameter"
  msgid "invalid constrained type parameter"
  msgstr "ugyldig catch-parameter"
  
! #: cp/parser.cc:18974
  #, fuzzy, gcc-internal-format
  #| msgid "invalid catch parameter"
  msgid "cv-qualified type parameter"
  msgstr "ugyldig catch-parameter"
  
! #: cp/parser.cc:19090
  #, fuzzy, gcc-internal-format
  msgid "invalid use of %<auto%> in default template argument"
  msgstr "ugyldig standardparameter i skabelon"
  
! #: cp/parser.cc:19326 cp/parser.cc:19412 cp/parser.cc:26576
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' cannot have default arguments"
  msgid "template parameter pack %qD cannot have a default argument"
  msgstr "'%D' kan ikke have standardparametre"
  
! #: cp/parser.cc:19330 cp/parser.cc:19416
  #, fuzzy, gcc-internal-format
  #| msgid "template parameters cannot be friends"
  msgid "template parameter packs cannot have default arguments"
  msgstr "skabelonsparametre kan ikke vÃ¦re venner"
  
! #: cp/parser.cc:19483
  #, fuzzy, gcc-internal-format
  msgid "expected template-id"
  msgstr "uventet operand"
  
! #: cp/parser.cc:19546
  #, fuzzy, gcc-internal-format
  msgid "%<<::%> cannot begin a template-argument list"
  msgstr "objektet '%E' kan ikke bruges som skabelonsparameter"
  
! #: cp/parser.cc:19550
  #, gcc-internal-format
  msgid "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>"
  msgstr ""
  
! #: cp/parser.cc:19554
  #, gcc-internal-format
  msgid "(if you use %<-fpermissive%> or %<-std=c++11%>, or %<-std=gnu++11%> G++ will accept your code)"
  msgstr ""
  
! #: cp/parser.cc:19585
  #, fuzzy, gcc-internal-format
  msgid "invalid template-argument-list"
  msgstr "ugyldig standardparameter i skabelon"
  
! #: cp/parser.cc:19586
  #, gcc-internal-format
  msgid "function name as the left hand operand of %<<%> is ill-formed in C++20; wrap the function name in %<()%>"
  msgstr ""
  
! #: cp/parser.cc:19593
  #, fuzzy, gcc-internal-format
  msgid "expected %<(%> after template-argument-list"
  msgstr "uventet operand"
  
! #: cp/parser.cc:19699
  #, fuzzy, gcc-internal-format
  msgid "parse error in template argument list"
  msgstr "objektet '%E' kan ikke bruges som skabelonsparameter"
  
  #. The name does not name a template.
! #: cp/parser.cc:19784 cp/parser.cc:19976 cp/parser.cc:20185
  #, fuzzy, gcc-internal-format
  msgid "expected template-name"
  msgstr "uventet operand"
  
! #: cp/parser.cc:19832
  #, fuzzy, gcc-internal-format
  msgid "non-template %qD used as template"
  msgstr "ikke-skabelon benyttet som skabelon"
  
! #: cp/parser.cc:19834
  #, fuzzy, gcc-internal-format
  msgid "use %<%T::template %D%> to indicate that it is a template"
  msgstr "skabelons-id '%D' i erklÃ¦ring af primÃ¦r skabelon"
  
! #: cp/parser.cc:20049
  #, gcc-internal-format
  msgid "expected parameter pack before %<...%>"
  msgstr ""
  
! #: cp/parser.cc:20150 cp/parser.cc:20168 cp/parser.cc:20344
  #, fuzzy, gcc-internal-format
  msgid "expected template-argument"
  msgstr "uventet operand"
  
! #: cp/parser.cc:20315
  #, fuzzy, gcc-internal-format
  msgid "invalid non-type template argument"
  msgstr "ugyldig standardparameter i skabelon"
  
! #: cp/parser.cc:20453
  #, fuzzy, gcc-internal-format
  #| msgid "explicit instantiation of `%#D' after"
  msgid "explicit instantiation shall not use %<inline%> specifier"
  msgstr "eksplicit instantiering af '%#D' efter"
  
! #: cp/parser.cc:20457
  #, fuzzy, gcc-internal-format
  #| msgid "explicit instantiation of `%#D' after"
  msgid "explicit instantiation shall not use %<constexpr%> specifier"
  msgstr "eksplicit instantiering af '%#D' efter"
  
! #: cp/parser.cc:20461
  #, fuzzy, gcc-internal-format
  #| msgid "explicit instantiation of `%#D' after"
  msgid "explicit instantiation shall not use %<consteval%> specifier"
  msgstr "eksplicit instantiering af '%#D' efter"
  
! #: cp/parser.cc:20522
  #, gcc-internal-format
  msgid "template specialization with C linkage"
  msgstr "skabelonsspecialisering med C-kÃ¦dning"
  
! #: cp/parser.cc:20751
  #, fuzzy, gcc-internal-format
  #| msgid "sigof type specifier"
  msgid "expected type specifier"
  msgstr "sigof-typeangivelse"
  
! #: cp/parser.cc:20951
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids forward parameter declarations"
  msgid "use of %<auto%> in lambda parameter declaration only available with %<-std=c++14%> or %<-std=gnu++14%>"
  msgstr "ISO C forbyder forhÃ¥ndsparametererklÃ¦ringer"
  
! #: cp/parser.cc:20957
  #, fuzzy, gcc-internal-format
  msgid "use of %<auto%> in template argument"
  msgstr "ugyldig standardparameter i skabelon"
  
! #: cp/parser.cc:20960
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids forward parameter declarations"
  msgid "use of %<auto%> in parameter declaration only available with %<-std=c++20%> or %<-fconcepts%>"
  msgstr "ISO C forbyder forhÃ¥ndsparametererklÃ¦ringer"
  
! #: cp/parser.cc:20964
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids forward parameter declarations"
  msgid "use of %<auto%> in parameter declaration only available with %<-std=c++14%> or %<-std=gnu++14%>"
  msgstr "ISO C forbyder forhÃ¥ndsparametererklÃ¦ringer"
  
! #: cp/parser.cc:21118
  #, gcc-internal-format
  msgid "expected template-id for type"
  msgstr "forventet skabelon-id for typen"
  
! #: cp/parser.cc:21259
  #, gcc-internal-format
  msgid "expected type-name"
  msgstr "forventet type-navn"
  
! #: cp/parser.cc:21343
  #, fuzzy, gcc-internal-format
  msgid "%qE does not constrain a type"
  msgstr "'%D' erklÃ¦rer ikke en skabelonstype"
  
! #: cp/parser.cc:21344
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' previously defined here"
  msgid "concept defined here"
  msgstr "'%s' tidligere defineret her"
  
! #: cp/parser.cc:21375
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `%D'"
  msgid "invalid use of concept-name %qD"
  msgstr "ugyldig brug af '%D"
  
! #: cp/parser.cc:21391
  #, fuzzy, gcc-internal-format
  msgid "expected %<auto%> or %<decltype(auto)%> after %qE"
  msgstr "uventet operand"
  
! #: cp/parser.cc:21398
  #, gcc-internal-format
  msgid "unexpected placeholder in constrained result type"
  msgstr ""
  
! #: cp/parser.cc:21639
  #, gcc-internal-format
  msgid "elaborated-type-specifier for a scoped enum must not use the %qD keyword"
  msgstr ""
  
! #: cp/parser.cc:21715
  #, fuzzy, gcc-internal-format
  #| msgid "typedef name may not be a nested-name-specifier"
  msgid "%<template%> must follow a nested-name-specifier"
  msgstr "typedef-navn kan ikke vÃ¦re en indlejret-navn-specifikation"
  
! #: cp/parser.cc:21877
  #, fuzzy, gcc-internal-format
  #| msgid "declaration does not declare anything"
  msgid "declaration %qD does not declare anything"
  msgstr "erklÃ¦ring erklÃ¦rer ikke noget"
  
! #: cp/parser.cc:21965
  #, fuzzy, gcc-internal-format
  #| msgid "invalid operation on uninstantiated type"
  msgid "attributes ignored on uninstantiated type"
  msgstr "ugyldig operation pÃ¥ uudskiftet type"
  
! #: cp/parser.cc:21971
  #, fuzzy, gcc-internal-format
  #| msgid "storage class `%D' applied to template instantiation"
  msgid "attributes ignored on template instantiation"
  msgstr "lagringsklasse '%D' anvendt pÃ¥ skabelonsinstantiering"
  
! #: cp/parser.cc:21983
  #, gcc-internal-format
  msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration"
  msgstr ""
  
! #: cp/parser.cc:22124
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function template"
  msgid "%qD is an enumeration template"
  msgstr "'%D' er ikke en funktionsskabelon"
  
! #: cp/parser.cc:22135
  #, fuzzy, gcc-internal-format
  msgid "%qD does not name an enumeration in %qT"
  msgstr "stÃ¸rrelse i tabel-new skal vÃ¦re en heltalstype"
  
! #: cp/parser.cc:22150
  #, fuzzy, gcc-internal-format
  #| msgid "Min/max instructions not allowed"
  msgid "unnamed scoped enum is not allowed"
  msgstr "Min/max-instruktioner ikke tilladt"
  
! #: cp/parser.cc:22168
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in enum-base"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:22214
  #, gcc-internal-format
  msgid "declaration of enumeration with fixed underlying type and no enumerator list is only permitted as a standalone declaration"
  msgstr ""
  
! #: cp/parser.cc:22218
  #, gcc-internal-format
  msgid "expected %<;%> or %<{%>"
  msgstr ""
  
! #: cp/parser.cc:22261
  #, fuzzy, gcc-internal-format
  #| msgid "Enable automatic template instantiation"
  msgid "cannot add an enumerator list to a template instantiation"
  msgstr "AktivÃ©r automatisk skabelonsinstantiering"
  
! #: cp/parser.cc:22275
  #, fuzzy, gcc-internal-format
  msgid "nested name specifier %qT for enum declaration does not name a class or namespace"
  msgstr "friend-erklÃ¦ringen er ikke i klassedefinitionen"
  
! #: cp/parser.cc:22287 cp/parser.cc:28220
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%D' in `%D' which does not enclose `%D'"
  msgid "declaration of %qD in namespace %qD which does not enclose %qD"
  msgstr "erklÃ¦ring af '%D' i '%D' som ikke omgiver '%D'"
  
! #: cp/parser.cc:22292 cp/parser.cc:28225
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%D' in `%D' which does not enclose `%D'"
  msgid "declaration of %qD in %qD which does not enclose %qD"
  msgstr "erklÃ¦ring af '%D' i '%D' som ikke omgiver '%D'"
  
! #: cp/parser.cc:22304 cp/parser.cc:28238
  #, gcc-internal-format
  msgid "extra qualification not allowed"
  msgstr "ekstra kvalifikation er ikke tilladt"
  
! #: cp/parser.cc:22344
  #, gcc-internal-format
  msgid "ISO C++ forbids empty unnamed enum"
  msgstr "ISO C++ forbyder tomme unavngivet enum"
  
! #: cp/parser.cc:22368
  #, gcc-internal-format
  msgid "opaque-enum-specifier without name"
  msgstr ""
  
! #: cp/parser.cc:22371
  #, gcc-internal-format
  msgid "opaque-enum-specifier must use a simple identifier"
  msgstr ""
  
! #: cp/parser.cc:22492
  #, gcc-internal-format
  msgid "unexpanded parameter pack in enumerator in lambda"
  msgstr ""
  
! #: cp/parser.cc:22567
  #, fuzzy, gcc-internal-format
  msgid "%qD is not a namespace-name; did you mean %qs?"
  msgstr "'%D' erklÃ¦rer ikke en skabelonstype"
  
! #: cp/parser.cc:22571
  #, gcc-internal-format
  msgid "%qD is not a namespace-name"
  msgstr "%qD er ikke et navnerum-navn"
  
! #: cp/parser.cc:22575
  #, gcc-internal-format
  msgid "expected namespace-name"
  msgstr "forventet navnerum-navn"
  
! #: cp/parser.cc:22636
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "nested inline namespace definitions only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:22648
  #, gcc-internal-format
  msgid "standard attributes on namespaces must precede the namespace name"
  msgstr ""
  
! #: cp/parser.cc:22667
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "nested namespace definitions only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:22677
  #, fuzzy, gcc-internal-format
  msgid "nested namespace name required"
  msgstr "uventet operand"
  
! #: cp/parser.cc:22682
  #, gcc-internal-format
  msgid "namespace name required"
  msgstr "navnerumnavn krÃ¦vet"
  
! #: cp/parser.cc:22686
  #, fuzzy, gcc-internal-format
  #| msgid "Min/max instructions not allowed"
  msgid "a nested namespace definition cannot have attributes"
  msgstr "Min/max-instruktioner ikke tilladt"
  
! #: cp/parser.cc:22689
  #, fuzzy, gcc-internal-format
  #| msgid "function with nested functions cannot be inline"
  msgid "a nested namespace definition cannot be inline"
  msgstr "funktion med indlejrede funktioner kan ikke indbygges"
  
! #: cp/parser.cc:22696
  #, fuzzy, gcc-internal-format
  #| msgid "namespace `%T' undeclared"
  msgid "namespace %qD entered"
  msgstr "navnerummet '%T' er ikke erklÃ¦ret"
  
! #: cp/parser.cc:22752
  #, fuzzy, gcc-internal-format
  #| msgid "Min/max instructions not allowed"
  msgid "%<namespace%> definition is not allowed here"
  msgstr "Min/max-instruktioner ikke tilladt"
  
! #: cp/parser.cc:22934
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "pack expansion in using-declaration only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:22978
  #, fuzzy, gcc-internal-format
  msgid "a template-id may not appear in a using-declaration"
  msgstr "navnerum '%D' ikke tilladt i using-erklÃ¦ring"
  
! #: cp/parser.cc:22996
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "comma-separated list in using-declaration only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:23006
  #, gcc-internal-format
  msgid "access declarations are deprecated in favor of using-declarations; suggestion: add the %<using%> keyword"
  msgstr ""
  
! #: cp/parser.cc:23052
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<using enum%> only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:23055
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of undefined type `%#T'"
  msgid "%<using enum%> of dependent type %qT"
  msgstr "ugyldig brug af en ikke-defineret type '%#T'"
  
! #: cp/parser.cc:23057
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a template type"
  msgid "%<using enum%> of non-enumeration type %q#T"
  msgstr "'%T' er ikke en skabelonstype"
  
! #: cp/parser.cc:23059
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of incomplete typedef `%s'"
  msgid "%<using enum%> of incomplete type %qT"
  msgstr "ugyldig brug af ufuldstÃ¦ndig typedef '%s'"
  
! #: cp/parser.cc:23061
  #, gcc-internal-format
  msgid "%<using enum%> of %qT before its enum-specifier"
  msgstr ""
  
! #: cp/parser.cc:23071
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration `%#D' here"
  msgid "opaque-enum-declaration here"
  msgstr "tidligere erklÃ¦ring af '%#D' her"
  
! #: cp/parser.cc:23141
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in alias template declarations"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:23293
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected multiplicative operand"
  msgid "expected string-literal or constexpr in parentheses"
  msgstr "uventet multiplikativ operand"
  
! #: cp/parser.cc:23354
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<asm%> in %<constexpr%> function only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:23375 cp/parser.cc:23393 cp/parser.cc:23408
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate case value"
  msgid "duplicate %<asm%> qualifier %qT"
  msgstr "case-vÃ¦rdi optrÃ¦der mere end Ã©n gang"
  
! #: cp/parser.cc:23382
  #, fuzzy, gcc-internal-format
  #| msgid "%J'%D' is not defined outside of function scope"
  msgid "%<asm%> qualifier %qT ignored outside of function body"
  msgstr "%J'%D' er ikke defineret uden for funktionsvirkefelt"
  
! #: cp/parser.cc:23421
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a namespace"
  msgid "%qT is not an %<asm%> qualifier"
  msgstr "'%T' er ikke et navnerum"
  
! #: cp/parser.cc:23437
  #, fuzzy, gcc-internal-format
  #| msgid "use of %s from containing function"
  msgid "%<asm%> qualifier outside of function body"
  msgstr "brug af %s fra indeholdende funktion"
  
! #: cp/parser.cc:23587
  #, fuzzy, gcc-internal-format
  #| msgid "forward declaration of `%#T'"
  msgid "attributes ignored on %<asm%> declaration"
  msgstr "forhÃ¥ndserklÃ¦ring af '%#T'"
  
! #: cp/parser.cc:23678
  #, fuzzy, gcc-internal-format
  #| msgid "parameter names (without types) in function declaration"
  msgid "empty parentheses were disambiguated as a function declaration"
  msgstr "parameternavne (uden typer) i funktionserklÃ¦ringen"
  
! #: cp/parser.cc:23689
  #, fuzzy, gcc-internal-format
  msgid "remove parentheses to default-initialize a variable"
  msgstr "egenskaber i parametertabelerklÃ¦ring ignoreret"
  
! #: cp/parser.cc:23694
  #, gcc-internal-format
  msgid "or replace parentheses with braces to aggregate-initialize a variable"
  msgstr ""
  
! #: cp/parser.cc:23697
  #, gcc-internal-format
  msgid "or replace parentheses with braces to value-initialize a variable"
  msgstr ""
  
! #: cp/parser.cc:23714 cp/parser.cc:23739
  #, fuzzy, gcc-internal-format
  #| msgid "parameter names (without types) in function declaration"
  msgid "parentheses were disambiguated as a function declaration"
  msgstr "parameternavne (uden typer) i funktionserklÃ¦ringen"
  
! #: cp/parser.cc:23726 cp/parser.cc:23747
  #, gcc-internal-format
  msgid "replace parentheses with braces to declare a variable"
  msgstr ""
  
! #: cp/parser.cc:23733
  #, fuzzy, gcc-internal-format
  msgid "add parentheses to declare a variable"
  msgstr "funktionen '%s' omerklÃ¦ret som inline"
  
! #: cp/parser.cc:23980
  #, gcc-internal-format
  msgid "a function-definition is not allowed here"
  msgstr "en funktionsdefinition er ikke tilladt her"
  
! #: cp/parser.cc:23991
  #, fuzzy, gcc-internal-format
  msgid "an %<asm%> specification is not allowed on a function-definition"
  msgstr "en global registervariabel fÃ¸lger en funktionsdefinition"
  
! #: cp/parser.cc:23995
  #, fuzzy, gcc-internal-format
  msgid "attributes are not allowed on a function-definition"
  msgstr "en global registervariabel fÃ¸lger en funktionsdefinition"
  
! #: cp/parser.cc:24046
  #, gcc-internal-format
  msgid "expected constructor, destructor, or type conversion"
  msgstr ""
  
! #: cp/parser.cc:24204
  #, fuzzy, gcc-internal-format
  #| msgid "initializer specified for non-member function `%D'"
  msgid "initializer provided for function"
  msgstr "startvÃ¦rdi angivet for ikke-medlemsfunktion '%D'"
  
! #: cp/parser.cc:24249
  #, fuzzy, gcc-internal-format
  msgid "attributes after parenthesized initializer ignored"
  msgstr "egenskaber i parametertabelerklÃ¦ring ignoreret"
  
! #: cp/parser.cc:24261
  #, fuzzy, gcc-internal-format
  msgid "non-function %qD declared as implicit template"
  msgstr "funktionen '%s' omerklÃ¦ret som inline"
  
! #: cp/parser.cc:24790
  #, fuzzy, gcc-internal-format
  #| msgid "array subscript is not an integer"
  msgid "array bound is not an integer constant"
  msgstr "tabelindeks er ikke et heltal"
  
! #: cp/parser.cc:24915
  #, fuzzy, gcc-internal-format
  #| msgid "creating pointer to member reference type `%T'"
  msgid "cannot define member of dependent typedef %qT"
  msgstr "opretter henvisning til medlemsreference af typen '%T'"
  
! #: cp/parser.cc:24919
  #, fuzzy, gcc-internal-format
  #| msgid "`%D::%D' is not a template"
  msgid "%<%T::%E%> is not a type"
--- 68483,69956 ----
  msgid "ISO C++ does not allow %<alignof%> with a non-type"
  msgstr "ISO C++ tillader ikke %<alignof%> med en ikke-type"
  
! #: cp/parser.cc:9509
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in %<noexcept%> expressions"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:9568
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' cannot have default arguments"
  msgid "%<co_await%> cannot be used in default arguments"
  msgstr "'%D' kan ikke have standardparametre"
  
! #: cp/parser.cc:9793 cp/parser.cc:34881
  #, fuzzy, gcc-internal-format
  #| msgid "types may not be defined in a new-expression"
  msgid "types may not be defined in %qs expressions"
  msgstr "typer kan ikke defineres i et nyt udtryk"
  
! #: cp/parser.cc:9858
  #, gcc-internal-format
  msgid "%<__builtin_has_attribute%> with dependent argument not supported yet"
  msgstr ""
  
! #: cp/parser.cc:9944
  #, gcc-internal-format
  msgid "types may not be defined in a new-expression"
  msgstr "typer kan ikke defineres i et nyt udtryk"
  
! #: cp/parser.cc:9962
  #, fuzzy, gcc-internal-format
  msgid "array bound forbidden after parenthesized type-id"
  msgstr "egenskaber i parametertabelerklÃ¦ring ignoreret"
  
! #: cp/parser.cc:9964
  #, gcc-internal-format
  msgid "try removing the parentheses around the type-id"
  msgstr ""
  
! #: cp/parser.cc:9997
  #, gcc-internal-format
  msgid "initialization of new-expression for type %<auto%> requires exactly one element"
  msgstr ""
  
! #: cp/parser.cc:10042
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "expected expression-list or type-id"
  msgstr "uventet adresseudtryk"
  
! #: cp/parser.cc:10071
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in a new-type-id"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:10119
  #, fuzzy, gcc-internal-format
  #| msgid "storage class `%D' applied to template instantiation"
  msgid "attributes ignored on outermost array type in new expression"
  msgstr "lagringsklasse '%D' anvendt pÃ¥ skabelonsinstantiering"
  
! #: cp/parser.cc:10215
  #, fuzzy, gcc-internal-format
  msgid "expression in new-declarator must have integral or enumeration type"
  msgstr "stÃ¸rrelse i tabel-new skal vÃ¦re en heltalstype"
  
! #: cp/parser.cc:10621
  #, fuzzy, gcc-internal-format
  #| msgid "use of old-style cast"
  msgid "use of old-style cast to %q#T"
  msgstr "brug af Ã¦ldre type typeomtvingning"
  
! #: cp/parser.cc:10771
  #, gcc-internal-format
  msgid "%<>>%> operator is treated as two right angle brackets in C++11"
  msgstr ""
  
! #: cp/parser.cc:10774
  #, fuzzy, gcc-internal-format
  #| msgid "suggest parentheses around && within ||"
  msgid "suggest parentheses around %<>>%> expression"
  msgstr "foreslÃ¥r paranteser omkring && inden i ||"
  
! #: cp/parser.cc:11000
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ does not allow ?: with omitted middle operand"
  msgid "ISO C++ does not allow %<?:%> with omitted middle operand"
  msgstr "ISO C++ tillader ikke ?: med udeladt midter operand"
  
! #: cp/parser.cc:11324
  #, fuzzy, gcc-internal-format
  msgid "top-level comma expression in array subscript is deprecated"
  msgstr "ISO C forbyder brug af typeomtvingningsudtryk som venstrevÃ¦rdier"
  
! #: cp/parser.cc:11472
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined within %<__builtin_offsetof%>"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:11606
  #, gcc-internal-format
  msgid "trailing argument to %<__type_pack_element%> is not a type"
  msgstr ""
  
! #: cp/parser.cc:11706
  #, fuzzy, gcc-internal-format
  #| msgid "Invalid expression statement"
  msgid "lambda-expression in template parameter type"
  msgstr "Ugyldig udtrykssÃ¦tning"
  
! #: cp/parser.cc:11716
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "lambda-expression in unevaluated context only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:11726
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "lambda-expression in template-argument only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:11900
  #, gcc-internal-format
  msgid "non-local lambda expression cannot have a capture-default"
  msgstr ""
  
! #: cp/parser.cc:11923
  #, gcc-internal-format
  msgid "expected end of capture-list"
  msgstr ""
  
! #: cp/parser.cc:11939
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "explicit by-copy capture of %<this%> with by-copy capture default only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/parser.cc:11945 cp/parser.cc:11967 cp/parser.cc:12165
  #, gcc-internal-format
  msgid "already captured %qD in lambda expression"
  msgstr ""
  
! #: cp/parser.cc:11961
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "%<*this%> capture only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/parser.cc:11981
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare %s to references"
  msgid "%<this%> cannot be captured by reference"
  msgstr "kan ikke erklÃ¦re %s til referencer"
  
! #: cp/parser.cc:12001
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "pack init-capture only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/parser.cc:12012
  #, gcc-internal-format
  msgid "%<&%> should come before %<...%>"
  msgstr ""
  
! #: cp/parser.cc:12042
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "lambda capture initializers only available with %<-std=c++14%> or %<-std=gnu++14%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/parser.cc:12051
  #, fuzzy, gcc-internal-format
  #| msgid "non-empty initializer for array of empty elements"
  msgid "empty initializer for lambda init-capture"
  msgstr "en startvÃ¦rdi der ikke er tom, tildeles til en tabel med tomme elementer"
  
! #: cp/parser.cc:12076
  #, fuzzy, gcc-internal-format
  #| msgid "%s of read-only variable `%s'"
  msgid "capture of non-variable %qE"
  msgstr "%s af variablen '%s' der kun mÃ¥ lÃ¦ses"
  
! #: cp/parser.cc:12080 cp/parser.cc:12091 cp/semantics.cc:4618
  #: cp/semantics.cc:4634
  #, fuzzy, gcc-internal-format
  #| msgid "  `%#D' declared here"
  msgid "%q#D declared here"
  msgstr "  '%#D' erklÃ¦ret her"
  
! #: cp/parser.cc:12087
  #, gcc-internal-format
  msgid "capture of variable %qD with non-automatic storage duration"
  msgstr ""
  
! #: cp/parser.cc:12125
  #, fuzzy, gcc-internal-format
  #| msgid "too many input files"
  msgid "too many %<...%> in lambda capture"
  msgstr "for mange inddatafiler"
  
! #: cp/parser.cc:12136
  #, gcc-internal-format
  msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
  msgstr ""
  
! #: cp/parser.cc:12141
  #, gcc-internal-format
  msgid "explicit by-reference capture of %qD redundant with by-reference capture default"
  msgstr ""
  
! #: cp/parser.cc:12223
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "lambda templates are only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:12277
  #, fuzzy, gcc-internal-format
  #| msgid "default argument given for parameter %d of `%#D'"
  msgid "default argument specified for lambda parameter"
  msgstr "standardparameter givet til %d. parameter for '%#D'"
  
! #: cp/parser.cc:12300
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "parameter declaration before lambda declaration specifiers only optional with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:12330 cp/pt.cc:15002
  #, gcc-internal-format
  msgid "a lambda with captures may not have an explicit object parameter of an unrelated type"
  msgstr ""
  
! #: cp/parser.cc:12343
  #, fuzzy, gcc-internal-format
  #| msgid "default argument given for parameter %d of `%#D'"
  msgid "%<mutable%> lambda specifier with explicit object parameter"
  msgstr "standardparameter givet til %d. parameter for '%#D'"
  
! #: cp/parser.cc:12352
  #, gcc-internal-format
  msgid "the passed in closure object will not be mutated because it is taken by value"
  msgstr ""
  
! #: cp/parser.cc:12356
  #, gcc-internal-format
  msgid "declare the explicit object parameter as non-const reference instead"
  msgstr ""
  
! #: cp/parser.cc:12360
  #, gcc-internal-format
  msgid "explicit object parameter is already a mutable reference"
  msgstr ""
  
! #: cp/parser.cc:12367
  #, fuzzy, gcc-internal-format
  #| msgid "default argument given for parameter %d of `%#D'"
  msgid "%<static%> lambda specifier with explicit object parameter"
  msgstr "standardparameter givet til %d. parameter for '%#D'"
  
! #: cp/parser.cc:12385
  #, gcc-internal-format
  msgid "%<static%> lambda specifier with lambda capture"
  msgstr ""
  
! #: cp/parser.cc:12397
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "parameter declaration before lambda transaction qualifier only optional with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/parser.cc:12410
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "parameter declaration before lambda exception specification only optional with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:12428
  #, gcc-internal-format
  msgid "parameter declaration before lambda trailing return type only optional with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:12470
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<constexpr%> lambda only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:13031
  #, fuzzy, gcc-internal-format
  #| msgid "function cannot be inline"
  msgid "preconditions cannot be statements"
  msgstr "funktion kan ikke indbygges"
  
! #: cp/parser.cc:13034
  #, fuzzy, gcc-internal-format
  #| msgid "function cannot be inline"
  msgid "postconditions cannot be statements"
  msgstr "funktion kan ikke indbygges"
  
! #: cp/parser.cc:13039
  #, fuzzy, gcc-internal-format
  msgid "assertions must be followed by %<;%>"
  msgstr "sektionsegenskaben er ikke tilladt for '%s'"
  
! #: cp/parser.cc:13204
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "label at end of compound statement only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:13384 cp/parser.cc:13629
  #, fuzzy, gcc-internal-format
  msgid "attributes at the beginning of statement are ignored"
  msgstr "egenskaber i parametertabelerklÃ¦ring ignoreret"
  
! #: cp/parser.cc:13455
  #, fuzzy, gcc-internal-format
  #| msgid "empty body in an else-statement"
  msgid "expected labeled-statement"
  msgstr "tom krop i en else-sÃ¦tning"
  
! #: cp/parser.cc:13504
  #, fuzzy, gcc-internal-format
  #| msgid "case label `%E' not within a switch statement"
  msgid "case label %qE not within a switch statement"
  msgstr "case-etiket '%E' befinder sig ikke inden i en switch-sÃ¦tning"
  
! #: cp/parser.cc:13637
  #, gcc-internal-format
  msgid "need %<typename%> before %qE because %qT is a dependent scope"
  msgstr ""
  
  #. A::A a;
! #: cp/parser.cc:13643
  #, fuzzy, gcc-internal-format
  msgid "%qE names the constructor, not the type"
  msgstr "'%D' erklÃ¦rer ikke en skabelonstype"
  
! #: cp/parser.cc:13701
  #, fuzzy, gcc-internal-format
  #| msgid "In statement function"
  msgid "compound-statement in %<constexpr%> function"
  msgstr "I sÃ¦tningsfunktion"
  
! #: cp/parser.cc:13765
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested with %<tile%> directive"
  msgstr ""
  
! #: cp/parser.cc:13970
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<if constexpr%> only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:13992
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<if consteval%> only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:14017 cp/parser.cc:14052
  #, fuzzy, gcc-internal-format
  #| msgid "invalid lvalue in asm statement"
  msgid "%<if consteval%> requires compound statement"
  msgstr "ugyldig venstrevÃ¦rdi i asm-sÃ¦tning"
  
! #: cp/parser.cc:14094
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "init-statement in selection statements only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:14262 cp/parser.cc:35393
  #, fuzzy, gcc-internal-format
  #| msgid "empty body in an else-statement"
  msgid "expected selection-statement"
  msgstr "tom krop i en else-sÃ¦tning"
  
! #: cp/parser.cc:14303
  #, fuzzy, gcc-internal-format
  #| msgid "function returns an aggregate"
  msgid "condition declares an array"
  msgstr "funktion returnerer en vÃ¦rdi af en sammensat type"
  
! #: cp/parser.cc:14305
  #, fuzzy, gcc-internal-format
  #| msgid "field `%s' declared as a function"
  msgid "condition declares a function"
  msgstr "feltet '%s' er erklÃ¦ret som en funktion"
  
! #: cp/parser.cc:14346
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in conditions"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
  #. Anything else is an error.
! #: cp/parser.cc:14448 cp/parser.cc:24113 cp/parser.cc:26832
  #, fuzzy, gcc-internal-format
  #| msgid "empty scalar initializer"
  msgid "expected initializer"
  msgstr "tom skalarstartvÃ¦rdi"
  
! #: cp/parser.cc:14498
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "range-based %<for%> loops with initializer only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/parser.cc:14760
  #, gcc-internal-format
  msgid "loop variable %qD of type %qT binds to a temporary constructed from type %qT"
  msgstr ""
  
  #. rval
! #: cp/parser.cc:14767
  #, gcc-internal-format
  msgid "use non-reference type %qT to make the copy explicit or %qT to prevent copying"
  msgstr ""
  
! #: cp/parser.cc:14793
  #, fuzzy, gcc-internal-format
  #| msgid "sizeof applied to a function type"
  msgid "loop variable %qD creates a copy from type %qT"
  msgstr "sizeof benyttet pÃ¥ en funktionstype"
  
! #: cp/parser.cc:14798
  #, gcc-internal-format
  msgid "use reference type to prevent copying"
  msgstr ""
  
! #: cp/parser.cc:14937
  #, fuzzy, gcc-internal-format
  #| msgid "expression statement has incomplete type"
  msgid "range-based %<for%> expression of type %qT has incomplete type"
  msgstr "udtrykket er af en ufuldstÃ¦ndig type"
  
! #: cp/parser.cc:15021
  #, gcc-internal-format
  msgid "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
  msgstr ""
  
! #: cp/parser.cc:15173 cp/parser.cc:35396
  #, fuzzy, gcc-internal-format
  msgid "expected iteration-statement"
  msgstr "uventet operand"
  
! #: cp/parser.cc:15218
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "alias-declaration in init-statement only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:15235
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "range-based %<for%> loops only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/parser.cc:15397
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<goto%> in %<constexpr%> function only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
  #. Issue a warning about this use of a GNU extension.
! #: cp/parser.cc:15406
  #, gcc-internal-format
  msgid "ISO C++ forbids computed gotos"
  msgstr "ISO C++ forbyder beregnede goto'er"
  
! #: cp/parser.cc:15425 cp/parser.cc:35399
  #, fuzzy, gcc-internal-format
  msgid "expected jump-statement"
  msgstr "uventet operand"
  
! #: cp/parser.cc:15600
  #, fuzzy, gcc-internal-format
  #| msgid "empty declaration"
  msgid "expected module-partition"
  msgstr "tom erklÃ¦ring"
  
! #: cp/parser.cc:15602
  #, fuzzy, gcc-internal-format
  msgid "expected module-name"
  msgstr "uventet operand"
  
! #: cp/parser.cc:15644
  #, fuzzy, gcc-internal-format
  #| msgid "method definition not in class context"
  msgid "module-declaration not permitted in header-unit"
  msgstr "metodedefinitionen optrÃ¦der ikke i en klassekontekst"
  
! #: cp/parser.cc:15650
  #, fuzzy, gcc-internal-format
  #| msgid "using-declaration for non-member at class scope"
  msgid "module-declaration must be at global scope"
  msgstr "using-erklÃ¦ring for ikke-medlem ved klassevirkefelt"
  
! #: cp/parser.cc:15651
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' previously defined here"
  msgid "scope opened here"
  msgstr "'%s' tidligere defineret her"
  
! #: cp/parser.cc:15677
  #, fuzzy, gcc-internal-format
  #| msgid "no arguments"
  msgid "private module fragment"
  msgstr "ingen parametre"
  
! #: cp/parser.cc:15681
  #, gcc-internal-format
  msgid "private module fragment only permitted in purview of module interface or partition"
  msgstr ""
  
  #. Neither the first declaration, nor in a GMF.
! #: cp/parser.cc:15687
  #, gcc-internal-format
  msgid "module-declaration only permitted as first declaration, or ending a global module fragment"
  msgstr ""
  
! #: cp/parser.cc:15728
  #, gcc-internal-format
  msgid "post-module-declaration imports must be contiguous"
  msgstr ""
  
! #: cp/parser.cc:15730 cp/parser.cc:15739
  #, gcc-internal-format
  msgid "perhaps insert a line break after %<import%>, or other disambiguation, to prevent this being considered a module control-line"
  msgstr ""
  
! #: cp/parser.cc:15738
  #, fuzzy, gcc-internal-format
  #| msgid "using-declaration for non-member at class scope"
  msgid "import-declaration must be at global scope"
  msgstr "using-erklÃ¦ring for ikke-medlem ved klassevirkefelt"
  
! #: cp/parser.cc:15762
  #, gcc-internal-format
  msgid "import specifying a module-partition must appear after a named module-declaration"
  msgstr ""
  
! #: cp/parser.cc:15783
  #, gcc-internal-format
  msgid "post-module-declaration imports must not be include-translated"
  msgstr ""
  
! #: cp/parser.cc:15786
  #, gcc-internal-format
  msgid "post-module-declaration imports must not be from header inclusion"
  msgstr ""
  
! #: cp/parser.cc:15807
  #, gcc-internal-format
  msgid "%qE may only occur after a module interface declaration"
  msgstr ""
  
! #: cp/parser.cc:15815
  #, fuzzy, gcc-internal-format
  msgid "%qE may only occur once in an export declaration"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:15836
  #, gcc-internal-format
  msgid "%<export%> not part of following module-directive"
  msgstr ""
  
! #: cp/parser.cc:15875
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not allow extra `;' outside of a function"
  msgid "extra %<;%> outside of a function only allowed in C++11"
  msgstr "ISO C tillader ikke ekstra ';' uden for funktioner"
  
! #: cp/parser.cc:15878
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C does not allow extra `;' outside of a function"
  msgid "extra %<;%> outside of a function"
  msgstr "ISO C tillader ikke ekstra ';' uden for funktioner"
  
! #: cp/parser.cc:15887
  #, gcc-internal-format
  msgid "extra %<;%> inside a struct only allowed in C++11"
  msgstr ""
  
! #: cp/parser.cc:15889
  #, gcc-internal-format
  msgid "extra %<;%> inside a struct"
  msgstr ""
  
! #: cp/parser.cc:15897
  #, fuzzy, gcc-internal-format
  msgid "extra %<;%> after in-class function definition"
  msgstr "'%s' er erklÃ¦ret inline efter dens definition"
  
! #: cp/parser.cc:16068
  #, fuzzy, gcc-internal-format
  msgid "attributes are not permitted in this position"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: cp/parser.cc:16072
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute ignored"
  msgid "attributes may be inserted here"
  msgstr "egenskaben '%s' ignoreret"
  
! #: cp/parser.cc:16112
  #, fuzzy, gcc-internal-format
  #| msgid "explicit specialization of non-template `%T'"
  msgid "explicit specializations are not permitted here"
  msgstr "eksplicit specialisering af '%T' der ikke er en skabelon"
  
! #: cp/parser.cc:16114 cp/parser.cc:28304
  #, gcc-internal-format
  msgid "a specialization is always exported alongside its primary template"
  msgstr ""
  
! #: cp/parser.cc:16127
  #, fuzzy, gcc-internal-format
  #| msgid "explicit instantiation of non-template `%#D'"
  msgid "explicit instantiations are not permitted here"
  msgstr "eksplicit instantiering af ikke-skabelon '%#D'"
  
! #: cp/parser.cc:16143
  #, fuzzy, gcc-internal-format
  msgid "export-declarations are not permitted here"
  msgstr "  oprindelig definition er her"
  
! #: cp/parser.cc:16315
  #, gcc-internal-format
  msgid "%<__label__%> not at the beginning of a block"
  msgstr ""
  
! #: cp/parser.cc:16561
  #, gcc-internal-format
  msgid "non-variable %qD in declaration with more than one declarator with placeholder type"
  msgstr ""
  
! #: cp/parser.cc:16580
  #, gcc-internal-format
  msgid "inconsistent deduction for %qT: %qT and then %qT"
  msgstr ""
  
! #: cp/parser.cc:16601
  #, gcc-internal-format
  msgid "mixing declarations and function-definitions is forbidden"
  msgstr ""
  
! #: cp/parser.cc:16626
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in a for-range-declaration"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:16683
  #, gcc-internal-format
  msgid "initializer in range-based %<for%> loop"
  msgstr ""
  
! #: cp/parser.cc:16686
  #, fuzzy, gcc-internal-format
  #| msgid "multiple declarations `%T' and `%T'"
  msgid "multiple declarations in range-based %<for%> loop"
  msgstr "flere erklÃ¦ringer '%T' og '%T'"
  
! #: cp/parser.cc:16726
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "structured bindings with attributed identifiers only available with %<-std=c++2c%> or %<-std=gnu++2c%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:16763
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "structured bindings in conditions only available with %<-std=c++2c%> or %<-std=gnu++2c%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:16767
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "structured bindings only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:16824
  #, fuzzy, gcc-internal-format
  #| msgid "empty declaration"
  msgid "empty structured binding declaration"
  msgstr "tom erklÃ¦ring"
  
! #: cp/parser.cc:16842
  #, fuzzy, gcc-internal-format
  #| msgid "invalid initializer for bit string"
  msgid "invalid initializer for structured binding declaration"
  msgstr "ugyldig startvÃ¦rdi til bitstreng"
  
! #: cp/parser.cc:17037
  #, fuzzy, gcc-internal-format
  #| msgid "storage class specifiers invalid in parameter declarations"
  msgid "%<this%> must be the first specifier in a parameter declaration"
  msgstr "lagringsklasseanvisninger er ugyldige i parametererklÃ¦ringer"
  
! #: cp/parser.cc:17060
  #, gcc-internal-format
  msgid "%<friend%> used outside of class"
  msgstr ""
  
! #: cp/parser.cc:17098
  #, fuzzy, gcc-internal-format
  msgid "the %<bool%> keyword is not allowed in a C++20 concept definition"
  msgstr "en global registervariabel fÃ¸lger en funktionsdefinition"
  
! #: cp/parser.cc:17101
  #, gcc-internal-format
  msgid "C++20 concept definition syntax is %<concept <name> = <expr>%>"
  msgstr ""
  
! #: cp/parser.cc:17152
  #, fuzzy, gcc-internal-format
  #| msgid "section type conflict with %qD"
  msgid "%<typedef%> specifier conflicts with %qs"
  msgstr "afsnitstypekonflikt med %qD"
  
! #: cp/parser.cc:17178
  #, gcc-internal-format
  msgid "%<auto%> changes meaning in C++11; please remove it"
  msgstr ""
  
! #: cp/parser.cc:17214
  #, fuzzy, gcc-internal-format
  #| msgid "storage class specifiers invalid in friend function declarations"
  msgid "%qD invalid in condition"
  msgstr "lagringsklasseanvisninger er ugyldige i vennefunktionserklÃ¦ringer"
  
! #: cp/parser.cc:17223
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' invalid in `%#T'"
  msgid "%qD invalid in lambda"
  msgstr "'%D' ugyldig i '%#T'"
  
! #: cp/parser.cc:17227
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%qD only valid in lambda with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:17309
  #, fuzzy, gcc-internal-format
  #| msgid "storage class specifiers invalid in friend function declarations"
  msgid "type-specifier invalid in lambda"
  msgstr "lagringsklasseanvisninger er ugyldige i vennefunktionserklÃ¦ringer"
  
! #: cp/parser.cc:17322
  #, gcc-internal-format
  msgid "standard attributes in middle of decl-specifiers"
  msgstr ""
  
! #: cp/parser.cc:17324
  #, gcc-internal-format
  msgid "standard attributes must precede the decl-specifiers to apply to the declaration, or follow them to apply to the type"
  msgstr ""
  
! #: cp/parser.cc:17339
  #, fuzzy, gcc-internal-format
  msgid "class definition may not be declared a friend"
  msgstr "funktionen '%D' kan ikke erklÃ¦res friend"
  
! #: cp/parser.cc:17412 cp/parser.cc:29490
  #, gcc-internal-format
  msgid "templates may not be %<virtual%>"
  msgstr ""
  
! #: cp/parser.cc:17431
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in explicit-specifier"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:17435
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<explicit(bool)%> only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:17503
  #, fuzzy, gcc-internal-format
  #| msgid "invalid base-class specification"
  msgid "invalid linkage-specification"
  msgstr "ugyldig stamklasseangivelse"
  
! #: cp/parser.cc:17610
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "%<static_assert%> without a message only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/parser.cc:17640
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "%<static_assert%> with non-string message only available with %<-std=c++2c%> or %<-std=gnu++2c%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/parser.cc:17844
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<decltype(auto)%> type specifier only available with %<-std=c++14%> or %<-std=gnu++14%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:17857
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in %<decltype%> expressions"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:18033
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in a conversion-type-id"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:18062
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of void expression"
  msgid "invalid use of %<auto%> in conversion operator"
  msgstr "ugyldig brug af void-udtryk"
  
! #: cp/parser.cc:18066
  #, gcc-internal-format
  msgid "use of %<auto%> in member template conversion operator can never be deduced"
  msgstr ""
  
! #: cp/parser.cc:18150
  #, fuzzy, gcc-internal-format
  #| msgid "only constructors take base initializers"
  msgid "only constructors take member initializers"
  msgstr "kun konstruktionsfunktioner har stamklasseklargÃ¸ringer"
  
! #: cp/parser.cc:18177
  #, fuzzy, gcc-internal-format
  #| msgid "missing initializer for member `%D'"
  msgid "cannot expand initializer for member %qD"
  msgstr "manglende startvÃ¦rdi for medlemmet '%D'"
  
! #: cp/parser.cc:18189 cp/pt.cc:28313
  #, gcc-internal-format
  msgid "mem-initializer for %qD follows constructor delegation"
  msgstr ""
  
! #: cp/parser.cc:18201 cp/pt.cc:28325
  #, gcc-internal-format
  msgid "constructor delegation follows mem-initializer for %qD"
  msgstr ""
  
! #: cp/parser.cc:18253
  #, fuzzy, gcc-internal-format
  msgid "anachronistic old-style base class initializer"
  msgstr "forÃ¦ldet stamklasseklargÃ¸ring"
  
! #: cp/parser.cc:18341
  #, gcc-internal-format
  msgid "keyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)"
  msgstr ""
  
! #: cp/parser.cc:18753
  #, gcc-internal-format
  msgid "space between quotes and suffix is deprecated in C++23"
  msgstr ""
  
! #: cp/parser.cc:18759
  #, gcc-internal-format
  msgid "unexpected keyword; remove space between quotes and suffix identifier"
  msgstr ""
  
! #: cp/parser.cc:18765
  #, fuzzy, gcc-internal-format
  #| msgid "predicate must be an identifier"
  msgid "expected suffix identifier"
  msgstr "udsagn skal vÃ¦re et kaldenavn"
  
! #: cp/parser.cc:18774
  #, gcc-internal-format
  msgid "expected empty string after %<operator%> keyword"
  msgstr ""
  
! #: cp/parser.cc:18780
  #, fuzzy, gcc-internal-format
  #| msgid "invalid type modifier within pointer declarator"
  msgid "invalid encoding prefix in literal operator"
  msgstr "ugyldig typemodifikation i erklÃ¦ring af henvisning"
  
! #: cp/parser.cc:18814
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected operand"
  msgid "expected operator"
  msgstr "uventet operand"
  
! #: cp/parser.cc:18861
  #, fuzzy, gcc-internal-format
  #| msgid "keyword `export' not implemented, and will be ignored"
  msgid "keyword %<export%> not implemented, and will be ignored"
  msgstr "det reserverede ord 'export' er ikke implementeret og vil blive ignoreret"
  
! #: cp/parser.cc:18863
  #, fuzzy, gcc-internal-format
  #| msgid "keyword `export' not implemented, and will be ignored"
  msgid "keyword %<export%> is deprecated, and is ignored"
  msgstr "det reserverede ord 'export' er ikke implementeret og vil blive ignoreret"
  
! #: cp/parser.cc:18865
  #, gcc-internal-format
  msgid "keyword %<export%> is enabled with %<-fmodules%>"
  msgstr ""
  
! #: cp/parser.cc:18970
  #, fuzzy, gcc-internal-format
  #| msgid "invalid catch parameter"
  msgid "invalid constrained type parameter"
  msgstr "ugyldig catch-parameter"
  
! #: cp/parser.cc:18978
  #, fuzzy, gcc-internal-format
  #| msgid "invalid catch parameter"
  msgid "cv-qualified type parameter"
  msgstr "ugyldig catch-parameter"
  
! #: cp/parser.cc:19094
  #, fuzzy, gcc-internal-format
  msgid "invalid use of %<auto%> in default template argument"
  msgstr "ugyldig standardparameter i skabelon"
  
! #: cp/parser.cc:19330 cp/parser.cc:19416 cp/parser.cc:26580
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' cannot have default arguments"
  msgid "template parameter pack %qD cannot have a default argument"
  msgstr "'%D' kan ikke have standardparametre"
  
! #: cp/parser.cc:19334 cp/parser.cc:19420
  #, fuzzy, gcc-internal-format
  #| msgid "template parameters cannot be friends"
  msgid "template parameter packs cannot have default arguments"
  msgstr "skabelonsparametre kan ikke vÃ¦re venner"
  
! #: cp/parser.cc:19487
  #, fuzzy, gcc-internal-format
  msgid "expected template-id"
  msgstr "uventet operand"
  
! #: cp/parser.cc:19550
  #, fuzzy, gcc-internal-format
  msgid "%<<::%> cannot begin a template-argument list"
  msgstr "objektet '%E' kan ikke bruges som skabelonsparameter"
  
! #: cp/parser.cc:19554
  #, gcc-internal-format
  msgid "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>"
  msgstr ""
  
! #: cp/parser.cc:19558
  #, gcc-internal-format
  msgid "(if you use %<-fpermissive%> or %<-std=c++11%>, or %<-std=gnu++11%> G++ will accept your code)"
  msgstr ""
  
! #: cp/parser.cc:19589
  #, fuzzy, gcc-internal-format
  msgid "invalid template-argument-list"
  msgstr "ugyldig standardparameter i skabelon"
  
! #: cp/parser.cc:19590
  #, gcc-internal-format
  msgid "function name as the left hand operand of %<<%> is ill-formed in C++20; wrap the function name in %<()%>"
  msgstr ""
  
! #: cp/parser.cc:19597
  #, fuzzy, gcc-internal-format
  msgid "expected %<(%> after template-argument-list"
  msgstr "uventet operand"
  
! #: cp/parser.cc:19703
  #, fuzzy, gcc-internal-format
  msgid "parse error in template argument list"
  msgstr "objektet '%E' kan ikke bruges som skabelonsparameter"
  
  #. The name does not name a template.
! #: cp/parser.cc:19788 cp/parser.cc:19980 cp/parser.cc:20189
  #, fuzzy, gcc-internal-format
  msgid "expected template-name"
  msgstr "uventet operand"
  
! #: cp/parser.cc:19836
  #, fuzzy, gcc-internal-format
  msgid "non-template %qD used as template"
  msgstr "ikke-skabelon benyttet som skabelon"
  
! #: cp/parser.cc:19838
  #, fuzzy, gcc-internal-format
  msgid "use %<%T::template %D%> to indicate that it is a template"
  msgstr "skabelons-id '%D' i erklÃ¦ring af primÃ¦r skabelon"
  
! #: cp/parser.cc:20053
  #, gcc-internal-format
  msgid "expected parameter pack before %<...%>"
  msgstr ""
  
! #: cp/parser.cc:20154 cp/parser.cc:20172 cp/parser.cc:20348
  #, fuzzy, gcc-internal-format
  msgid "expected template-argument"
  msgstr "uventet operand"
  
! #: cp/parser.cc:20319
  #, fuzzy, gcc-internal-format
  msgid "invalid non-type template argument"
  msgstr "ugyldig standardparameter i skabelon"
  
! #: cp/parser.cc:20457
  #, fuzzy, gcc-internal-format
  #| msgid "explicit instantiation of `%#D' after"
  msgid "explicit instantiation shall not use %<inline%> specifier"
  msgstr "eksplicit instantiering af '%#D' efter"
  
! #: cp/parser.cc:20461
  #, fuzzy, gcc-internal-format
  #| msgid "explicit instantiation of `%#D' after"
  msgid "explicit instantiation shall not use %<constexpr%> specifier"
  msgstr "eksplicit instantiering af '%#D' efter"
  
! #: cp/parser.cc:20465
  #, fuzzy, gcc-internal-format
  #| msgid "explicit instantiation of `%#D' after"
  msgid "explicit instantiation shall not use %<consteval%> specifier"
  msgstr "eksplicit instantiering af '%#D' efter"
  
! #: cp/parser.cc:20526
  #, gcc-internal-format
  msgid "template specialization with C linkage"
  msgstr "skabelonsspecialisering med C-kÃ¦dning"
  
! #: cp/parser.cc:20755
  #, fuzzy, gcc-internal-format
  #| msgid "sigof type specifier"
  msgid "expected type specifier"
  msgstr "sigof-typeangivelse"
  
! #: cp/parser.cc:20955
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids forward parameter declarations"
  msgid "use of %<auto%> in lambda parameter declaration only available with %<-std=c++14%> or %<-std=gnu++14%>"
  msgstr "ISO C forbyder forhÃ¥ndsparametererklÃ¦ringer"
  
! #: cp/parser.cc:20961
  #, fuzzy, gcc-internal-format
  msgid "use of %<auto%> in template argument"
  msgstr "ugyldig standardparameter i skabelon"
  
! #: cp/parser.cc:20964
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids forward parameter declarations"
  msgid "use of %<auto%> in parameter declaration only available with %<-std=c++20%> or %<-fconcepts%>"
  msgstr "ISO C forbyder forhÃ¥ndsparametererklÃ¦ringer"
  
! #: cp/parser.cc:20968
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids forward parameter declarations"
  msgid "use of %<auto%> in parameter declaration only available with %<-std=c++14%> or %<-std=gnu++14%>"
  msgstr "ISO C forbyder forhÃ¥ndsparametererklÃ¦ringer"
  
! #: cp/parser.cc:21122
  #, gcc-internal-format
  msgid "expected template-id for type"
  msgstr "forventet skabelon-id for typen"
  
! #: cp/parser.cc:21263
  #, gcc-internal-format
  msgid "expected type-name"
  msgstr "forventet type-navn"
  
! #: cp/parser.cc:21347
  #, fuzzy, gcc-internal-format
  msgid "%qE does not constrain a type"
  msgstr "'%D' erklÃ¦rer ikke en skabelonstype"
  
! #: cp/parser.cc:21348
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' previously defined here"
  msgid "concept defined here"
  msgstr "'%s' tidligere defineret her"
  
! #: cp/parser.cc:21379
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `%D'"
  msgid "invalid use of concept-name %qD"
  msgstr "ugyldig brug af '%D"
  
! #: cp/parser.cc:21395
  #, fuzzy, gcc-internal-format
  msgid "expected %<auto%> or %<decltype(auto)%> after %qE"
  msgstr "uventet operand"
  
! #: cp/parser.cc:21402
  #, gcc-internal-format
  msgid "unexpected placeholder in constrained result type"
  msgstr ""
  
! #: cp/parser.cc:21643
  #, gcc-internal-format
  msgid "elaborated-type-specifier for a scoped enum must not use the %qD keyword"
  msgstr ""
  
! #: cp/parser.cc:21719
  #, fuzzy, gcc-internal-format
  #| msgid "typedef name may not be a nested-name-specifier"
  msgid "%<template%> must follow a nested-name-specifier"
  msgstr "typedef-navn kan ikke vÃ¦re en indlejret-navn-specifikation"
  
! #: cp/parser.cc:21881
  #, fuzzy, gcc-internal-format
  #| msgid "declaration does not declare anything"
  msgid "declaration %qD does not declare anything"
  msgstr "erklÃ¦ring erklÃ¦rer ikke noget"
  
! #: cp/parser.cc:21969
  #, fuzzy, gcc-internal-format
  #| msgid "invalid operation on uninstantiated type"
  msgid "attributes ignored on uninstantiated type"
  msgstr "ugyldig operation pÃ¥ uudskiftet type"
  
! #: cp/parser.cc:21975
  #, fuzzy, gcc-internal-format
  #| msgid "storage class `%D' applied to template instantiation"
  msgid "attributes ignored on template instantiation"
  msgstr "lagringsklasse '%D' anvendt pÃ¥ skabelonsinstantiering"
  
! #: cp/parser.cc:21987
  #, gcc-internal-format
  msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration"
  msgstr ""
  
! #: cp/parser.cc:22128
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function template"
  msgid "%qD is an enumeration template"
  msgstr "'%D' er ikke en funktionsskabelon"
  
! #: cp/parser.cc:22139
  #, fuzzy, gcc-internal-format
  msgid "%qD does not name an enumeration in %qT"
  msgstr "stÃ¸rrelse i tabel-new skal vÃ¦re en heltalstype"
  
! #: cp/parser.cc:22154
  #, fuzzy, gcc-internal-format
  #| msgid "Min/max instructions not allowed"
  msgid "unnamed scoped enum is not allowed"
  msgstr "Min/max-instruktioner ikke tilladt"
  
! #: cp/parser.cc:22172
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in enum-base"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:22218
  #, gcc-internal-format
  msgid "declaration of enumeration with fixed underlying type and no enumerator list is only permitted as a standalone declaration"
  msgstr ""
  
! #: cp/parser.cc:22222
  #, gcc-internal-format
  msgid "expected %<;%> or %<{%>"
  msgstr ""
  
! #: cp/parser.cc:22265
  #, fuzzy, gcc-internal-format
  #| msgid "Enable automatic template instantiation"
  msgid "cannot add an enumerator list to a template instantiation"
  msgstr "AktivÃ©r automatisk skabelonsinstantiering"
  
! #: cp/parser.cc:22279
  #, fuzzy, gcc-internal-format
  msgid "nested name specifier %qT for enum declaration does not name a class or namespace"
  msgstr "friend-erklÃ¦ringen er ikke i klassedefinitionen"
  
! #: cp/parser.cc:22291 cp/parser.cc:28273
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%D' in `%D' which does not enclose `%D'"
  msgid "declaration of %qD in namespace %qD which does not enclose %qD"
  msgstr "erklÃ¦ring af '%D' i '%D' som ikke omgiver '%D'"
  
! #: cp/parser.cc:22296 cp/parser.cc:28278
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%D' in `%D' which does not enclose `%D'"
  msgid "declaration of %qD in %qD which does not enclose %qD"
  msgstr "erklÃ¦ring af '%D' i '%D' som ikke omgiver '%D'"
  
! #: cp/parser.cc:22308 cp/parser.cc:28291
  #, gcc-internal-format
  msgid "extra qualification not allowed"
  msgstr "ekstra kvalifikation er ikke tilladt"
  
! #: cp/parser.cc:22348
  #, gcc-internal-format
  msgid "ISO C++ forbids empty unnamed enum"
  msgstr "ISO C++ forbyder tomme unavngivet enum"
  
! #: cp/parser.cc:22372
  #, gcc-internal-format
  msgid "opaque-enum-specifier without name"
  msgstr ""
  
! #: cp/parser.cc:22375
  #, gcc-internal-format
  msgid "opaque-enum-specifier must use a simple identifier"
  msgstr ""
  
! #: cp/parser.cc:22496
  #, gcc-internal-format
  msgid "unexpanded parameter pack in enumerator in lambda"
  msgstr ""
  
! #: cp/parser.cc:22571
  #, fuzzy, gcc-internal-format
  msgid "%qD is not a namespace-name; did you mean %qs?"
  msgstr "'%D' erklÃ¦rer ikke en skabelonstype"
  
! #: cp/parser.cc:22575
  #, gcc-internal-format
  msgid "%qD is not a namespace-name"
  msgstr "%qD er ikke et navnerum-navn"
  
! #: cp/parser.cc:22579
  #, gcc-internal-format
  msgid "expected namespace-name"
  msgstr "forventet navnerum-navn"
  
! #: cp/parser.cc:22640
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "nested inline namespace definitions only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:22652
  #, gcc-internal-format
  msgid "standard attributes on namespaces must precede the namespace name"
  msgstr ""
  
! #: cp/parser.cc:22671
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "nested namespace definitions only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:22681
  #, fuzzy, gcc-internal-format
  msgid "nested namespace name required"
  msgstr "uventet operand"
  
! #: cp/parser.cc:22686
  #, gcc-internal-format
  msgid "namespace name required"
  msgstr "navnerumnavn krÃ¦vet"
  
! #: cp/parser.cc:22690
  #, fuzzy, gcc-internal-format
  #| msgid "Min/max instructions not allowed"
  msgid "a nested namespace definition cannot have attributes"
  msgstr "Min/max-instruktioner ikke tilladt"
  
! #: cp/parser.cc:22693
  #, fuzzy, gcc-internal-format
  #| msgid "function with nested functions cannot be inline"
  msgid "a nested namespace definition cannot be inline"
  msgstr "funktion med indlejrede funktioner kan ikke indbygges"
  
! #: cp/parser.cc:22700
  #, fuzzy, gcc-internal-format
  #| msgid "namespace `%T' undeclared"
  msgid "namespace %qD entered"
  msgstr "navnerummet '%T' er ikke erklÃ¦ret"
  
! #: cp/parser.cc:22756
  #, fuzzy, gcc-internal-format
  #| msgid "Min/max instructions not allowed"
  msgid "%<namespace%> definition is not allowed here"
  msgstr "Min/max-instruktioner ikke tilladt"
  
! #: cp/parser.cc:22938
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "pack expansion in using-declaration only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:22982
  #, fuzzy, gcc-internal-format
  msgid "a template-id may not appear in a using-declaration"
  msgstr "navnerum '%D' ikke tilladt i using-erklÃ¦ring"
  
! #: cp/parser.cc:23000
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "comma-separated list in using-declaration only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:23010
  #, gcc-internal-format
  msgid "access declarations are deprecated in favor of using-declarations; suggestion: add the %<using%> keyword"
  msgstr ""
  
! #: cp/parser.cc:23056
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<using enum%> only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:23059
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of undefined type `%#T'"
  msgid "%<using enum%> of dependent type %qT"
  msgstr "ugyldig brug af en ikke-defineret type '%#T'"
  
! #: cp/parser.cc:23061
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a template type"
  msgid "%<using enum%> of non-enumeration type %q#T"
  msgstr "'%T' er ikke en skabelonstype"
  
! #: cp/parser.cc:23063
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of incomplete typedef `%s'"
  msgid "%<using enum%> of incomplete type %qT"
  msgstr "ugyldig brug af ufuldstÃ¦ndig typedef '%s'"
  
! #: cp/parser.cc:23065
  #, gcc-internal-format
  msgid "%<using enum%> of %qT before its enum-specifier"
  msgstr ""
  
! #: cp/parser.cc:23075
  #, fuzzy, gcc-internal-format
  #| msgid "previous declaration `%#D' here"
  msgid "opaque-enum-declaration here"
  msgstr "tidligere erklÃ¦ring af '%#D' her"
  
! #: cp/parser.cc:23145
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in alias template declarations"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:23297
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected multiplicative operand"
  msgid "expected string-literal or constexpr in parentheses"
  msgstr "uventet multiplikativ operand"
  
! #: cp/parser.cc:23358
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<asm%> in %<constexpr%> function only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:23379 cp/parser.cc:23397 cp/parser.cc:23412
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate case value"
  msgid "duplicate %<asm%> qualifier %qT"
  msgstr "case-vÃ¦rdi optrÃ¦der mere end Ã©n gang"
  
! #: cp/parser.cc:23386
  #, fuzzy, gcc-internal-format
  #| msgid "%J'%D' is not defined outside of function scope"
  msgid "%<asm%> qualifier %qT ignored outside of function body"
  msgstr "%J'%D' er ikke defineret uden for funktionsvirkefelt"
  
! #: cp/parser.cc:23425
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a namespace"
  msgid "%qT is not an %<asm%> qualifier"
  msgstr "'%T' er ikke et navnerum"
  
! #: cp/parser.cc:23441
  #, fuzzy, gcc-internal-format
  #| msgid "use of %s from containing function"
  msgid "%<asm%> qualifier outside of function body"
  msgstr "brug af %s fra indeholdende funktion"
  
! #: cp/parser.cc:23591
  #, fuzzy, gcc-internal-format
  #| msgid "forward declaration of `%#T'"
  msgid "attributes ignored on %<asm%> declaration"
  msgstr "forhÃ¥ndserklÃ¦ring af '%#T'"
  
! #: cp/parser.cc:23682
  #, fuzzy, gcc-internal-format
  #| msgid "parameter names (without types) in function declaration"
  msgid "empty parentheses were disambiguated as a function declaration"
  msgstr "parameternavne (uden typer) i funktionserklÃ¦ringen"
  
! #: cp/parser.cc:23693
  #, fuzzy, gcc-internal-format
  msgid "remove parentheses to default-initialize a variable"
  msgstr "egenskaber i parametertabelerklÃ¦ring ignoreret"
  
! #: cp/parser.cc:23698
  #, gcc-internal-format
  msgid "or replace parentheses with braces to aggregate-initialize a variable"
  msgstr ""
  
! #: cp/parser.cc:23701
  #, gcc-internal-format
  msgid "or replace parentheses with braces to value-initialize a variable"
  msgstr ""
  
! #: cp/parser.cc:23718 cp/parser.cc:23743
  #, fuzzy, gcc-internal-format
  #| msgid "parameter names (without types) in function declaration"
  msgid "parentheses were disambiguated as a function declaration"
  msgstr "parameternavne (uden typer) i funktionserklÃ¦ringen"
  
! #: cp/parser.cc:23730 cp/parser.cc:23751
  #, gcc-internal-format
  msgid "replace parentheses with braces to declare a variable"
  msgstr ""
  
! #: cp/parser.cc:23737
  #, fuzzy, gcc-internal-format
  msgid "add parentheses to declare a variable"
  msgstr "funktionen '%s' omerklÃ¦ret som inline"
  
! #: cp/parser.cc:23984
  #, gcc-internal-format
  msgid "a function-definition is not allowed here"
  msgstr "en funktionsdefinition er ikke tilladt her"
  
! #: cp/parser.cc:23995
  #, fuzzy, gcc-internal-format
  msgid "an %<asm%> specification is not allowed on a function-definition"
  msgstr "en global registervariabel fÃ¸lger en funktionsdefinition"
  
! #: cp/parser.cc:23999
  #, fuzzy, gcc-internal-format
  msgid "attributes are not allowed on a function-definition"
  msgstr "en global registervariabel fÃ¸lger en funktionsdefinition"
  
! #: cp/parser.cc:24050
  #, gcc-internal-format
  msgid "expected constructor, destructor, or type conversion"
  msgstr ""
  
! #: cp/parser.cc:24208
  #, fuzzy, gcc-internal-format
  #| msgid "initializer specified for non-member function `%D'"
  msgid "initializer provided for function"
  msgstr "startvÃ¦rdi angivet for ikke-medlemsfunktion '%D'"
  
! #: cp/parser.cc:24253
  #, fuzzy, gcc-internal-format
  msgid "attributes after parenthesized initializer ignored"
  msgstr "egenskaber i parametertabelerklÃ¦ring ignoreret"
  
! #: cp/parser.cc:24265
  #, fuzzy, gcc-internal-format
  msgid "non-function %qD declared as implicit template"
  msgstr "funktionen '%s' omerklÃ¦ret som inline"
  
! #: cp/parser.cc:24794
  #, fuzzy, gcc-internal-format
  #| msgid "array subscript is not an integer"
  msgid "array bound is not an integer constant"
  msgstr "tabelindeks er ikke et heltal"
  
! #: cp/parser.cc:24919
  #, fuzzy, gcc-internal-format
  #| msgid "creating pointer to member reference type `%T'"
  msgid "cannot define member of dependent typedef %qT"
  msgstr "opretter henvisning til medlemsreference af typen '%T'"
  
! #: cp/parser.cc:24923
  #, fuzzy, gcc-internal-format
  #| msgid "`%D::%D' is not a template"
  msgid "%<%T::%E%> is not a type"
*************** msgstr "'%D::%D' er ikke en skabelon"
*** 69852,70148 ****
  #. here because we do not have enough
  #. information about its original syntactic
  #. form.
! #: cp/parser.cc:24948
  #, gcc-internal-format
  msgid "invalid declarator"
  msgstr "ugyldig erklÃ¦rer"
  
! #: cp/parser.cc:24957
  #, fuzzy, gcc-internal-format
  msgid "invalid use of constructor as a template"
  msgstr "ugyldig brug af ikke-statisk felt '%D'"
  
! #: cp/parser.cc:24959
  #, gcc-internal-format
  msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name"
  msgstr ""
  
  #. But declarations with qualified-ids can't appear in a
  #. function.
! #: cp/parser.cc:25074
  #, fuzzy, gcc-internal-format
  #| msgid "Invalid declaration"
  msgid "qualified-id in declaration"
  msgstr "Ugyldig erklÃ¦ring"
  
! #: cp/parser.cc:25099
  #, fuzzy, gcc-internal-format
  #| msgid "empty declaration"
  msgid "expected declarator"
  msgstr "tom erklÃ¦ring"
  
! #: cp/parser.cc:25220
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is a namespace"
  msgid "%qD is a namespace"
  msgstr "'%D' er et navnerum"
  
! #: cp/parser.cc:25222
  #, fuzzy, gcc-internal-format
  #| msgid "creating pointer to member of non-class type `%T'"
  msgid "cannot form pointer to member of non-class %q#T"
  msgstr "opretter henvisning til medlem af typen '%T' der ikke er en klasse"
  
! #: cp/parser.cc:25243
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected operand"
  msgid "expected ptr-operator"
  msgstr "uventet operand"
  
! #: cp/parser.cc:25304
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate case value"
  msgid "duplicate cv-qualifier"
  msgstr "case-vÃ¦rdi optrÃ¦der mere end Ã©n gang"
  
! #: cp/parser.cc:25358
  #, fuzzy, gcc-internal-format
  #| msgid "multiple `virtual' specifiers"
  msgid "multiple ref-qualifiers"
  msgstr "mere end Ã©n 'virtual'-angivelse"
  
! #: cp/parser.cc:25395
  #, fuzzy, gcc-internal-format
  #| msgid "--resource requires -o"
  msgid "%qE requires %<-fgnu-tm%>"
  msgstr "--resource pÃ¥krÃ¦ver -o"
  
! #: cp/parser.cc:25453
  #, fuzzy, gcc-internal-format
  #| msgid "multiple `virtual' specifiers"
  msgid "duplicate virt-specifier"
  msgstr "mere end Ã©n 'virtual'-angivelse"
  
! #: cp/parser.cc:25735
  #, fuzzy, gcc-internal-format
  msgid "missing template arguments after %qE"
  msgstr "skabelonsparameter er pÃ¥krÃ¦vet for '%T'"
  
! #: cp/parser.cc:25741
  #, fuzzy, gcc-internal-format
  msgid "%qT not permitted in template argument"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:25744 cp/typeck2.cc:337 cp/typeck2.cc:383 cp/typeck2.cc:2519
  #: rust/backend/rust-tree.cc:3896
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `%T'"
  msgid "invalid use of %qT"
  msgstr "ugyldig brug af '%T'"
  
! #: cp/parser.cc:25770
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in template arguments"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:25779
  #, fuzzy, gcc-internal-format
  msgid "invalid use of %<auto%> in template argument"
  msgstr "ugyldig standardparameter i skabelon"
  
! #: cp/parser.cc:25900
  #, fuzzy, gcc-internal-format
  msgid "expected type-specifier"
  msgstr "uventet operand"
  
! #: cp/parser.cc:26047
  #, gcc-internal-format
  msgid "omission of %<,%> before varargs %<...%> is deprecated in C++26"
  msgstr ""
  
! #: cp/parser.cc:26254
  #, gcc-internal-format
  msgid "expected %<,%> or %<...%>"
  msgstr "forventede %<,%> eller %<...%>"
  
! #: cp/parser.cc:26332
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in parameter types"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:26456
  #, fuzzy, gcc-internal-format
  #| msgid "storage class specifiers invalid in parameter declarations"
  msgid "%<this%> specifier in template parameter declaration"
  msgstr "lagringsklasseanvisninger er ugyldige i parametererklÃ¦ringer"
  
! #: cp/parser.cc:26459
  #, gcc-internal-format
  msgid "%<this%> specifier in a requires-expression parameter"
  msgstr ""
  
! #: cp/parser.cc:26519
  #, fuzzy, gcc-internal-format
  #| msgid "data member `%D' cannot be a member template"
  msgid "an explicit object parameter cannot be a function parameter pack"
  msgstr "datamedlem '%D' kan ikke vÃ¦re en medlemsskabelon"
  
! #: cp/parser.cc:26560
  #, fuzzy, gcc-internal-format
  msgid "default arguments are only permitted for function parameters"
  msgstr "standardparameter givet til %d. parameter for '%#D'"
  
! #: cp/parser.cc:26578
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' cannot have default arguments"
  msgid "parameter pack %qD cannot have a default argument"
  msgstr "'%D' kan ikke have standardparametre"
  
! #: cp/parser.cc:26584
  #, fuzzy, gcc-internal-format
  #| msgid "template parameters cannot be friends"
  msgid "template parameter pack cannot have a default argument"
  msgstr "skabelonsparametre kan ikke vÃ¦re venner"
  
! #: cp/parser.cc:26586
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' cannot have default arguments"
  msgid "parameter pack cannot have a default argument"
  msgstr "'%D' kan ikke have standardparametre"
  
! #: cp/parser.cc:26609
  #, fuzzy, gcc-internal-format
  #| msgid "template parameters cannot be friends"
  msgid "an explicit object parameter may not have a default argument"
  msgstr "skabelonsparametre kan ikke vÃ¦re venner"
  
! #: cp/parser.cc:26733
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "function-try-block body of %<constexpr%> constructor only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/parser.cc:26737
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "function-try-block body of %<constexpr%> function only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:26924
  #, gcc-internal-format
  msgid "probably missing a comma or an operator before"
  msgstr ""
  
! #: cp/parser.cc:27086
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "C++ designated initializers only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/parser.cc:27108
  #, gcc-internal-format
  msgid "ISO C++ does not allow GNU designated initializers"
  msgstr "ISO C++ tillader ikke GNU-udpegede startvÃ¦rdier"
  
! #: cp/parser.cc:27146
  #, gcc-internal-format
  msgid "ISO C++ does not allow C99 designated initializers"
  msgstr "ISO C++ tillader ikke C99-udpegede startvÃ¦rdier"
  
! #: cp/parser.cc:27160
  #, gcc-internal-format
  msgid "either all initializer clauses should be designated or none of them should be"
  msgstr ""
  
! #: cp/parser.cc:27200
  #, gcc-internal-format
  msgid "%<...%> not allowed in designated initializer list"
  msgstr "%<...%> er ikke tilladt i udpegede startvÃ¦rdiliste"
  
! #: cp/parser.cc:27251
  #, gcc-internal-format
  msgid "%<.%s%> designator used multiple times in the same initializer list"
  msgstr ""
  
! #: cp/parser.cc:27307 cp/parser.cc:27442
  #, gcc-internal-format
  msgid "expected class-name"
  msgstr "forventet klasse-navn"
  
! #: cp/parser.cc:27699
  #, fuzzy, gcc-internal-format
  msgid "expected %<;%> after class definition"
  msgstr "'%s' er erklÃ¦ret inline efter dens definition"
  
! #: cp/parser.cc:27702
  #, gcc-internal-format
  msgid "expected %<;%> after struct definition"
  msgstr ""
  
! #: cp/parser.cc:27705
  #, fuzzy, gcc-internal-format
  msgid "expected %<;%> after union definition"
  msgstr "'%s' er erklÃ¦ret inline efter dens definition"
  
! #: cp/parser.cc:28162
  #, gcc-internal-format
  msgid "expected %<{%> or %<:%>"
  msgstr "forventede %<{%> eller %<:%>"
  
! #: cp/parser.cc:28173
! #, fuzzy, gcc-internal-format
! #| msgid "cannot find file for class %s"
! msgid "cannot specify %<override%> for a class"
! msgstr "kan ikke finde filen for klassen %s"
! 
! #: cp/parser.cc:28181
  #, gcc-internal-format
  msgid "global qualification of class name is invalid"
  msgstr ""
  
! #: cp/parser.cc:28188
  #, fuzzy, gcc-internal-format
  msgid "qualified name does not name a class"
  msgstr "friend-erklÃ¦ringen er ikke i klassedefinitionen"
  
! #: cp/parser.cc:28200
  #, fuzzy, gcc-internal-format
  msgid "keyword %<template%> not allowed in class-head-name"
  msgstr "bruger 'typename' uden for en skabelon"
  
! #: cp/parser.cc:28206
  #, fuzzy, gcc-internal-format
  #| msgid "invalid redeclaration of `%D'"
  msgid "invalid class name in declaration of %qD"
  msgstr "ugyldig omerklÃ¦ring af '%D'"
  
! #: cp/parser.cc:28249
  #, fuzzy, gcc-internal-format
  #| msgid "defining explicit specialization `%D' in friend declaration"
  msgid "declaration of partial specialization in unbraced export-declaration"
  msgstr "definering af eksplicit specialisering '%D' i friend-erklÃ¦ring"
  
! #: cp/parser.cc:28275
  #, gcc-internal-format
  msgid "an explicit instantiation cannot have a definition; use %<template <>%> to declare a specialization"
  msgstr ""
  
! #: cp/parser.cc:28282
  #, fuzzy, gcc-internal-format
  msgid "an explicit specialization must be preceded by %<template <>%>"
  msgstr "eksplicit specialisering fÃ¸lger ikke efter 'template <>'"
  
! #: cp/parser.cc:28315
  #, fuzzy, gcc-internal-format
  msgid "function template %qD redeclared as a class template"
  msgstr "ikke-skabelon benyttet som skabelon"
  
! #: cp/parser.cc:28348
  #, gcc-internal-format
  msgid "could not resolve typename type"
  msgstr ""
  
! #: cp/parser.cc:28413
  #, fuzzy, gcc-internal-format
  #| msgid "previous definition of `%#T'"
  msgid "previous definition of %q#T"
--- 69960,70250 ----
  #. here because we do not have enough
  #. information about its original syntactic
  #. form.
! #: cp/parser.cc:24952
  #, gcc-internal-format
  msgid "invalid declarator"
  msgstr "ugyldig erklÃ¦rer"
  
! #: cp/parser.cc:24961
  #, fuzzy, gcc-internal-format
  msgid "invalid use of constructor as a template"
  msgstr "ugyldig brug af ikke-statisk felt '%D'"
  
! #: cp/parser.cc:24963
  #, gcc-internal-format
  msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name"
  msgstr ""
  
  #. But declarations with qualified-ids can't appear in a
  #. function.
! #: cp/parser.cc:25078
  #, fuzzy, gcc-internal-format
  #| msgid "Invalid declaration"
  msgid "qualified-id in declaration"
  msgstr "Ugyldig erklÃ¦ring"
  
! #: cp/parser.cc:25103
  #, fuzzy, gcc-internal-format
  #| msgid "empty declaration"
  msgid "expected declarator"
  msgstr "tom erklÃ¦ring"
  
! #: cp/parser.cc:25224
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is a namespace"
  msgid "%qD is a namespace"
  msgstr "'%D' er et navnerum"
  
! #: cp/parser.cc:25226
  #, fuzzy, gcc-internal-format
  #| msgid "creating pointer to member of non-class type `%T'"
  msgid "cannot form pointer to member of non-class %q#T"
  msgstr "opretter henvisning til medlem af typen '%T' der ikke er en klasse"
  
! #: cp/parser.cc:25247
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected operand"
  msgid "expected ptr-operator"
  msgstr "uventet operand"
  
! #: cp/parser.cc:25308
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate case value"
  msgid "duplicate cv-qualifier"
  msgstr "case-vÃ¦rdi optrÃ¦der mere end Ã©n gang"
  
! #: cp/parser.cc:25362
  #, fuzzy, gcc-internal-format
  #| msgid "multiple `virtual' specifiers"
  msgid "multiple ref-qualifiers"
  msgstr "mere end Ã©n 'virtual'-angivelse"
  
! #: cp/parser.cc:25399
  #, fuzzy, gcc-internal-format
  #| msgid "--resource requires -o"
  msgid "%qE requires %<-fgnu-tm%>"
  msgstr "--resource pÃ¥krÃ¦ver -o"
  
! #: cp/parser.cc:25457 cp/parser.cc:28009
  #, fuzzy, gcc-internal-format
  #| msgid "multiple `virtual' specifiers"
  msgid "duplicate virt-specifier"
  msgstr "mere end Ã©n 'virtual'-angivelse"
  
! #: cp/parser.cc:25739
  #, fuzzy, gcc-internal-format
  msgid "missing template arguments after %qE"
  msgstr "skabelonsparameter er pÃ¥krÃ¦vet for '%T'"
  
! #: cp/parser.cc:25745
  #, fuzzy, gcc-internal-format
  msgid "%qT not permitted in template argument"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:25748 cp/typeck2.cc:337 cp/typeck2.cc:383 cp/typeck2.cc:2519
  #: rust/backend/rust-tree.cc:3896
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `%T'"
  msgid "invalid use of %qT"
  msgstr "ugyldig brug af '%T'"
  
! #: cp/parser.cc:25774
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in template arguments"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:25783
  #, fuzzy, gcc-internal-format
  msgid "invalid use of %<auto%> in template argument"
  msgstr "ugyldig standardparameter i skabelon"
  
! #: cp/parser.cc:25904
  #, fuzzy, gcc-internal-format
  msgid "expected type-specifier"
  msgstr "uventet operand"
  
! #: cp/parser.cc:26051
  #, gcc-internal-format
  msgid "omission of %<,%> before varargs %<...%> is deprecated in C++26"
  msgstr ""
  
! #: cp/parser.cc:26258
  #, gcc-internal-format
  msgid "expected %<,%> or %<...%>"
  msgstr "forventede %<,%> eller %<...%>"
  
! #: cp/parser.cc:26336
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in parameter types"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:26460
  #, fuzzy, gcc-internal-format
  #| msgid "storage class specifiers invalid in parameter declarations"
  msgid "%<this%> specifier in template parameter declaration"
  msgstr "lagringsklasseanvisninger er ugyldige i parametererklÃ¦ringer"
  
! #: cp/parser.cc:26463
  #, gcc-internal-format
  msgid "%<this%> specifier in a requires-expression parameter"
  msgstr ""
  
! #: cp/parser.cc:26523
  #, fuzzy, gcc-internal-format
  #| msgid "data member `%D' cannot be a member template"
  msgid "an explicit object parameter cannot be a function parameter pack"
  msgstr "datamedlem '%D' kan ikke vÃ¦re en medlemsskabelon"
  
! #: cp/parser.cc:26564
  #, fuzzy, gcc-internal-format
  msgid "default arguments are only permitted for function parameters"
  msgstr "standardparameter givet til %d. parameter for '%#D'"
  
! #: cp/parser.cc:26582
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' cannot have default arguments"
  msgid "parameter pack %qD cannot have a default argument"
  msgstr "'%D' kan ikke have standardparametre"
  
! #: cp/parser.cc:26588
  #, fuzzy, gcc-internal-format
  #| msgid "template parameters cannot be friends"
  msgid "template parameter pack cannot have a default argument"
  msgstr "skabelonsparametre kan ikke vÃ¦re venner"
  
! #: cp/parser.cc:26590
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' cannot have default arguments"
  msgid "parameter pack cannot have a default argument"
  msgstr "'%D' kan ikke have standardparametre"
  
! #: cp/parser.cc:26613
  #, fuzzy, gcc-internal-format
  #| msgid "template parameters cannot be friends"
  msgid "an explicit object parameter may not have a default argument"
  msgstr "skabelonsparametre kan ikke vÃ¦re venner"
  
! #: cp/parser.cc:26737
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "function-try-block body of %<constexpr%> constructor only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/parser.cc:26741
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "function-try-block body of %<constexpr%> function only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:26928
  #, gcc-internal-format
  msgid "probably missing a comma or an operator before"
  msgstr ""
  
! #: cp/parser.cc:27090
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "C++ designated initializers only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/parser.cc:27112
  #, gcc-internal-format
  msgid "ISO C++ does not allow GNU designated initializers"
  msgstr "ISO C++ tillader ikke GNU-udpegede startvÃ¦rdier"
  
! #: cp/parser.cc:27150
  #, gcc-internal-format
  msgid "ISO C++ does not allow C99 designated initializers"
  msgstr "ISO C++ tillader ikke C99-udpegede startvÃ¦rdier"
  
! #: cp/parser.cc:27164
  #, gcc-internal-format
  msgid "either all initializer clauses should be designated or none of them should be"
  msgstr ""
  
! #: cp/parser.cc:27204
  #, gcc-internal-format
  msgid "%<...%> not allowed in designated initializer list"
  msgstr "%<...%> er ikke tilladt i udpegede startvÃ¦rdiliste"
  
! #: cp/parser.cc:27255
  #, gcc-internal-format
  msgid "%<.%s%> designator used multiple times in the same initializer list"
  msgstr ""
  
! #: cp/parser.cc:27311 cp/parser.cc:27446
  #, gcc-internal-format
  msgid "expected class-name"
  msgstr "forventet klasse-navn"
  
! #: cp/parser.cc:27703
  #, fuzzy, gcc-internal-format
  msgid "expected %<;%> after class definition"
  msgstr "'%s' er erklÃ¦ret inline efter dens definition"
  
! #: cp/parser.cc:27706
  #, gcc-internal-format
  msgid "expected %<;%> after struct definition"
  msgstr ""
  
! #: cp/parser.cc:27709
  #, fuzzy, gcc-internal-format
  msgid "expected %<;%> after union definition"
  msgstr "'%s' er erklÃ¦ret inline efter dens definition"
  
! #: cp/parser.cc:28222
  #, gcc-internal-format
  msgid "expected %<{%> or %<:%>"
  msgstr "forventede %<{%> eller %<:%>"
  
! #: cp/parser.cc:28234
  #, gcc-internal-format
  msgid "global qualification of class name is invalid"
  msgstr ""
  
! #: cp/parser.cc:28241
  #, fuzzy, gcc-internal-format
  msgid "qualified name does not name a class"
  msgstr "friend-erklÃ¦ringen er ikke i klassedefinitionen"
  
! #: cp/parser.cc:28253
  #, fuzzy, gcc-internal-format
  msgid "keyword %<template%> not allowed in class-head-name"
  msgstr "bruger 'typename' uden for en skabelon"
  
! #: cp/parser.cc:28259
  #, fuzzy, gcc-internal-format
  #| msgid "invalid redeclaration of `%D'"
  msgid "invalid class name in declaration of %qD"
  msgstr "ugyldig omerklÃ¦ring af '%D'"
  
! #: cp/parser.cc:28302
  #, fuzzy, gcc-internal-format
  #| msgid "defining explicit specialization `%D' in friend declaration"
  msgid "declaration of partial specialization in unbraced export-declaration"
  msgstr "definering af eksplicit specialisering '%D' i friend-erklÃ¦ring"
  
! #: cp/parser.cc:28328
  #, gcc-internal-format
  msgid "an explicit instantiation cannot have a definition; use %<template <>%> to declare a specialization"
  msgstr ""
  
! #: cp/parser.cc:28335
  #, fuzzy, gcc-internal-format
  msgid "an explicit specialization must be preceded by %<template <>%>"
  msgstr "eksplicit specialisering fÃ¸lger ikke efter 'template <>'"
  
! #: cp/parser.cc:28368
  #, fuzzy, gcc-internal-format
  msgid "function template %qD redeclared as a class template"
  msgstr "ikke-skabelon benyttet som skabelon"
  
! #: cp/parser.cc:28401
  #, gcc-internal-format
  msgid "could not resolve typename type"
  msgstr ""
  
! #: cp/parser.cc:28466
  #, fuzzy, gcc-internal-format
  #| msgid "previous definition of `%#T'"
  msgid "previous definition of %q#T"
*************** msgstr "tidligere definition af '%#T'"
*** 70151,70436 ****
  #. In a lambda this should work, but doesn't currently.
  #. We're in a lambda, but it isn't the innermost class.
  #. This should work, but currently doesn't.
! #: cp/parser.cc:28427 cp/pt.cc:4367
  #, gcc-internal-format
  msgid "unexpanded parameter pack in local class in lambda"
  msgstr ""
  
! #: cp/parser.cc:28533 cp/parser.cc:35343
  #, fuzzy, gcc-internal-format
  msgid "expected class-key"
  msgstr "uventet operand"
  
! #: cp/parser.cc:28558
  #, gcc-internal-format
  msgid "ISO C++ forbids typename key in template template parameter; use %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:28562
  #, fuzzy, gcc-internal-format
  msgid "expected %<class%> or %<typename%>"
  msgstr "uventet operand"
  
! #: cp/parser.cc:28831
  #, gcc-internal-format
  msgid "in C++03 a class-key must be used when declaring a friend"
  msgstr ""
  
! #: cp/parser.cc:28837
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "variadic friends or friend type declarations with multiple types only available with %<-std=c++2c%> or %<-std=gnu++2c%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:28878
  #, fuzzy, gcc-internal-format
  msgid "friend declaration does not name a class or function"
  msgstr "friend-erklÃ¦ringen er ikke i klassedefinitionen"
  
! #: cp/parser.cc:28918
  #, gcc-internal-format
  msgid "a storage class on an anonymous aggregate in class scope is not allowed"
  msgstr ""
  
! #: cp/parser.cc:29021
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "default member initializers for bit-fields only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/parser.cc:29028
  #, fuzzy, gcc-internal-format
  #| msgid "`__alignof' applied to a bit-field"
  msgid "default member initializer for unnamed bit-field"
  msgstr "'__alignof' benyttet pÃ¥ et bitfelt"
  
! #: cp/parser.cc:29041
  #, gcc-internal-format
  msgid "ISO C++ allows bit-field attributes only before the %<:%> token"
  msgstr ""
  
! #: cp/parser.cc:29222
  #, fuzzy, gcc-internal-format
  #| msgid "bit-field `%#D' with non-integral type"
  msgid "bit-field %qD has non-integral type %qT"
  msgstr "bitfelt '%#D' med en ikke-heltalstype"
  
! #: cp/parser.cc:29250
  #, gcc-internal-format
  msgid "pure-specifier on function-definition"
  msgstr ""
  
! #: cp/parser.cc:29320
  #, gcc-internal-format
  msgid "stray %<,%> at end of member declaration"
  msgstr ""
  
! #: cp/parser.cc:29334
  #, gcc-internal-format
  msgid "expected %<;%> at end of member declaration"
  msgstr ""
  
! #: cp/parser.cc:29407
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<delete%> reason only available with %<-std=c++2c%> or %<-std=gnu++2c%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:29430
  #, gcc-internal-format
  msgid "invalid pure specifier (only %<= 0%> is allowed)"
  msgstr ""
  
! #: cp/parser.cc:29465
  #, fuzzy, gcc-internal-format
  #| msgid "brace-enclosed initializer used to initialize `%T'"
  msgid "a brace-enclosed initializer is not allowed here"
  msgstr "startvÃ¦rdi i krÃ¸llede paranteser benyttet til at klargÃ¸re '%T'"
  
! #: cp/parser.cc:29596
  #, fuzzy, gcc-internal-format
  msgid "attributes on base specifiers are ignored"
  msgstr "sektionsegenskaben kan ikke angives for lokale variabler"
  
! #: cp/parser.cc:29611
  #, gcc-internal-format
  msgid "%<virtual%> specified more than once in base-specifier"
  msgstr ""
  
! #: cp/parser.cc:29631
  #, gcc-internal-format
  msgid "more than one access specifier in base-specifier"
  msgstr ""
  
! #: cp/parser.cc:29655
  #, fuzzy, gcc-internal-format
  msgid "keyword %<typename%> not allowed outside of templates"
  msgstr "bruger 'typename' uden for en skabelon"
  
! #: cp/parser.cc:29658
  #, fuzzy, gcc-internal-format
  msgid "keyword %<typename%> not allowed in this context (the base class is implicitly a type)"
  msgstr "bruger 'typename' uden for en skabelon"
  
! #: cp/parser.cc:29860 cp/parser.cc:29954
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in an exception-specification"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:29962
  #, fuzzy, gcc-internal-format
  msgid "ISO C++17 does not allow dynamic exception specifications"
  msgstr "GenerÃ©r ikke kode til at kontrollere undtagelsesspecifikationer"
  
! #: cp/parser.cc:29968
  #, gcc-internal-format
  msgid "dynamic exception specifications are deprecated in C++11"
  msgstr ""
  
! #: cp/parser.cc:30012
  #, gcc-internal-format
  msgid "invalid use of %<auto%> in exception-specification"
  msgstr "ugyldig brug af %<auto%> i undtagelsesspecifikation"
  
! #: cp/parser.cc:30053
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<try%> in %<constexpr%> function only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:30165
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in exception-declarations"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:30200
  #, fuzzy, gcc-internal-format
  #| msgid "%<inline%> in empty declaration"
  msgid "%<alignas%> on exception declaration"
  msgstr "%<inline%>i tom erklÃ¦ring"
  
! #: cp/parser.cc:30279
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' cannot have default arguments"
  msgid "%<co_yield%> cannot be used in default arguments"
  msgstr "'%D' kan ikke have standardparametre"
  
! #: cp/parser.cc:30747
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute argument not a string constant"
  msgid "expected attribute argument as balanced token sequence"
  msgstr "parameteren til egenskaben '%s' er ikke en strengkonstant"
  
! #: cp/parser.cc:30893
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute only applies to variables"
  msgid "attribute using prefix used together with scoped attribute token"
  msgstr "egenskaben '%s' kan kun anvendes pÃ¥ variabler"
  
! #: cp/parser.cc:30907
  #, gcc-internal-format
  msgid "expected an identifier for the attribute name"
  msgstr ""
  
  #. e.g. [[attr()]].
! #: cp/parser.cc:31049
  #, gcc-internal-format
  msgid "parentheses must be omitted if %qE attribute argument list is empty"
  msgstr ""
  
! #: cp/parser.cc:31084
  #, fuzzy, gcc-internal-format
  msgid "attribute %qs specified multiple times"
  msgstr "sektionsegenskaben kan ikke angives for lokale variabler"
  
! #: cp/parser.cc:31126
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected operand"
  msgid "expected attribute before %<...%>"
  msgstr "uventet operand"
  
! #: cp/parser.cc:31129
  #, fuzzy, gcc-internal-format
  #| msgid "data member `%D' cannot be a member template"
  msgid "attribute with no arguments contains no parameter packs"
  msgstr "datamedlem '%D' kan ikke vÃ¦re en medlemsskabelon"
  
! #: cp/parser.cc:31175
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected operand"
  msgid "expected contract-role"
  msgstr "uventet operand"
  
  #. We got some other token other than a ':'.
! #: cp/parser.cc:31256
  #, fuzzy, gcc-internal-format
  #| msgid "expected template-id for type"
  msgid "expected contract semantic or level"
  msgstr "forventet skabelon-id for typen"
  
! #: cp/parser.cc:31266
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected contract level: %<default%>, %<audit%>, or %<axiom%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: cp/parser.cc:31276
  #, fuzzy, gcc-internal-format
  msgid "invalid use of contract role for explicit semantic"
  msgstr "ugyldig brug af ikke-statisk felt '%D'"
  
! #: cp/parser.cc:31413
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids forward parameter declarations"
  msgid "contracts are only available with %<-fcontracts%>"
  msgstr "ISO C forbyder forhÃ¥ndsparametererklÃ¦ringer"
  
! #: cp/parser.cc:31572
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "attribute using prefix only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:31933 cp/parser.cc:31942
  #, fuzzy, gcc-internal-format
  #| msgid "predicate must be an identifier"
  msgid "expression must be enclosed in parentheses"
  msgstr "udsagn skal vÃ¦re et kaldenavn"
  
! #: cp/parser.cc:32289
  #, gcc-internal-format
  msgid "missing additional %<requires%> to start a requires-expression"
  msgstr ""
  
! #: cp/parser.cc:32530
  #, gcc-internal-format
  msgid "testing if a concept-id is a valid expression; add %<requires%> to check satisfaction"
  msgstr ""
  
! #: cp/parser.cc:32668
  #, fuzzy, gcc-internal-format
  #| msgid "asm template is not a string constant"
  msgid "result type is not a plain type-constraint"
  msgstr "asm-sÃ¦tning er ikke en strengkonstant"
  
! #: cp/parser.cc:32676
  #, fuzzy, gcc-internal-format
  #| msgid "requested alignment is not a constant"
  msgid "return-type-requirement is not a type-constraint"
  msgstr "angivet justering er ikke en konstant"
  
! #: cp/parser.cc:33195
  #, gcc-internal-format
  msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
  msgstr ""
  
! #: cp/parser.cc:33200
  #, fuzzy, gcc-internal-format
  #| msgid "invalid redeclaration of `%D'"
  msgid "invalid declaration of %<%T::%E%>"
  msgstr "ugyldig omerklÃ¦ring af '%D'"
  
! #: cp/parser.cc:33204
  #, fuzzy, gcc-internal-format
  msgid "too few template-parameter-lists"
  msgstr "for fÃ¥ skabelonsparameterlister angivet i erklÃ¦ring af '%D'"
--- 70253,70538 ----
  #. In a lambda this should work, but doesn't currently.
  #. We're in a lambda, but it isn't the innermost class.
  #. This should work, but currently doesn't.
! #: cp/parser.cc:28480 cp/pt.cc:4367
  #, gcc-internal-format
  msgid "unexpanded parameter pack in local class in lambda"
  msgstr ""
  
! #: cp/parser.cc:28586 cp/parser.cc:35402
  #, fuzzy, gcc-internal-format
  msgid "expected class-key"
  msgstr "uventet operand"
  
! #: cp/parser.cc:28611
  #, gcc-internal-format
  msgid "ISO C++ forbids typename key in template template parameter; use %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:28615
  #, fuzzy, gcc-internal-format
  msgid "expected %<class%> or %<typename%>"
  msgstr "uventet operand"
  
! #: cp/parser.cc:28885
  #, gcc-internal-format
  msgid "in C++03 a class-key must be used when declaring a friend"
  msgstr ""
  
! #: cp/parser.cc:28891
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "variadic friends or friend type declarations with multiple types only available with %<-std=c++2c%> or %<-std=gnu++2c%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:28932
  #, fuzzy, gcc-internal-format
  msgid "friend declaration does not name a class or function"
  msgstr "friend-erklÃ¦ringen er ikke i klassedefinitionen"
  
! #: cp/parser.cc:28972
  #, gcc-internal-format
  msgid "a storage class on an anonymous aggregate in class scope is not allowed"
  msgstr ""
  
! #: cp/parser.cc:29075
  #, fuzzy, gcc-internal-format
  #| msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
  msgid "default member initializers for bit-fields only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "ikkestatisk datamedlemsstartvÃ¦rdier er kun tilgÃ¦ngelige med -std=c++11 eller -std=gnu++11"
  
! #: cp/parser.cc:29082
  #, fuzzy, gcc-internal-format
  #| msgid "`__alignof' applied to a bit-field"
  msgid "default member initializer for unnamed bit-field"
  msgstr "'__alignof' benyttet pÃ¥ et bitfelt"
  
! #: cp/parser.cc:29095
  #, gcc-internal-format
  msgid "ISO C++ allows bit-field attributes only before the %<:%> token"
  msgstr ""
  
! #: cp/parser.cc:29276
  #, fuzzy, gcc-internal-format
  #| msgid "bit-field `%#D' with non-integral type"
  msgid "bit-field %qD has non-integral type %qT"
  msgstr "bitfelt '%#D' med en ikke-heltalstype"
  
! #: cp/parser.cc:29304
  #, gcc-internal-format
  msgid "pure-specifier on function-definition"
  msgstr ""
  
! #: cp/parser.cc:29374
  #, gcc-internal-format
  msgid "stray %<,%> at end of member declaration"
  msgstr ""
  
! #: cp/parser.cc:29388
  #, gcc-internal-format
  msgid "expected %<;%> at end of member declaration"
  msgstr ""
  
! #: cp/parser.cc:29461
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<delete%> reason only available with %<-std=c++2c%> or %<-std=gnu++2c%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:29484
  #, gcc-internal-format
  msgid "invalid pure specifier (only %<= 0%> is allowed)"
  msgstr ""
  
! #: cp/parser.cc:29519
  #, fuzzy, gcc-internal-format
  #| msgid "brace-enclosed initializer used to initialize `%T'"
  msgid "a brace-enclosed initializer is not allowed here"
  msgstr "startvÃ¦rdi i krÃ¸llede paranteser benyttet til at klargÃ¸re '%T'"
  
! #: cp/parser.cc:29650
  #, fuzzy, gcc-internal-format
  msgid "attributes on base specifiers are ignored"
  msgstr "sektionsegenskaben kan ikke angives for lokale variabler"
  
! #: cp/parser.cc:29665
  #, gcc-internal-format
  msgid "%<virtual%> specified more than once in base-specifier"
  msgstr ""
  
! #: cp/parser.cc:29685
  #, gcc-internal-format
  msgid "more than one access specifier in base-specifier"
  msgstr ""
  
! #: cp/parser.cc:29709
  #, fuzzy, gcc-internal-format
  msgid "keyword %<typename%> not allowed outside of templates"
  msgstr "bruger 'typename' uden for en skabelon"
  
! #: cp/parser.cc:29712
  #, fuzzy, gcc-internal-format
  msgid "keyword %<typename%> not allowed in this context (the base class is implicitly a type)"
  msgstr "bruger 'typename' uden for en skabelon"
  
! #: cp/parser.cc:29914 cp/parser.cc:30008
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in an exception-specification"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:30016
  #, fuzzy, gcc-internal-format
  msgid "ISO C++17 does not allow dynamic exception specifications"
  msgstr "GenerÃ©r ikke kode til at kontrollere undtagelsesspecifikationer"
  
! #: cp/parser.cc:30022
  #, gcc-internal-format
  msgid "dynamic exception specifications are deprecated in C++11"
  msgstr ""
  
! #: cp/parser.cc:30066
  #, gcc-internal-format
  msgid "invalid use of %<auto%> in exception-specification"
  msgstr "ugyldig brug af %<auto%> i undtagelsesspecifikation"
  
! #: cp/parser.cc:30107
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%<try%> in %<constexpr%> function only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:30219
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in exception-declarations"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:30254
  #, fuzzy, gcc-internal-format
  #| msgid "%<inline%> in empty declaration"
  msgid "%<alignas%> on exception declaration"
  msgstr "%<inline%>i tom erklÃ¦ring"
  
! #: cp/parser.cc:30333
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' cannot have default arguments"
  msgid "%<co_yield%> cannot be used in default arguments"
  msgstr "'%D' kan ikke have standardparametre"
  
! #: cp/parser.cc:30801
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute argument not a string constant"
  msgid "expected attribute argument as balanced token sequence"
  msgstr "parameteren til egenskaben '%s' er ikke en strengkonstant"
  
! #: cp/parser.cc:30947
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute only applies to variables"
  msgid "attribute using prefix used together with scoped attribute token"
  msgstr "egenskaben '%s' kan kun anvendes pÃ¥ variabler"
  
! #: cp/parser.cc:30961
  #, gcc-internal-format
  msgid "expected an identifier for the attribute name"
  msgstr ""
  
  #. e.g. [[attr()]].
! #: cp/parser.cc:31103
  #, gcc-internal-format
  msgid "parentheses must be omitted if %qE attribute argument list is empty"
  msgstr ""
  
! #: cp/parser.cc:31138
  #, fuzzy, gcc-internal-format
  msgid "attribute %qs specified multiple times"
  msgstr "sektionsegenskaben kan ikke angives for lokale variabler"
  
! #: cp/parser.cc:31180
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected operand"
  msgid "expected attribute before %<...%>"
  msgstr "uventet operand"
  
! #: cp/parser.cc:31183
  #, fuzzy, gcc-internal-format
  #| msgid "data member `%D' cannot be a member template"
  msgid "attribute with no arguments contains no parameter packs"
  msgstr "datamedlem '%D' kan ikke vÃ¦re en medlemsskabelon"
  
! #: cp/parser.cc:31229
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected operand"
  msgid "expected contract-role"
  msgstr "uventet operand"
  
  #. We got some other token other than a ':'.
! #: cp/parser.cc:31310
  #, fuzzy, gcc-internal-format
  #| msgid "expected template-id for type"
  msgid "expected contract semantic or level"
  msgstr "forventet skabelon-id for typen"
  
! #: cp/parser.cc:31320
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected contract level: %<default%>, %<audit%>, or %<axiom%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: cp/parser.cc:31330
  #, fuzzy, gcc-internal-format
  msgid "invalid use of contract role for explicit semantic"
  msgstr "ugyldig brug af ikke-statisk felt '%D'"
  
! #: cp/parser.cc:31467
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids forward parameter declarations"
  msgid "contracts are only available with %<-fcontracts%>"
  msgstr "ISO C forbyder forhÃ¥ndsparametererklÃ¦ringer"
  
! #: cp/parser.cc:31626
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "attribute using prefix only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/parser.cc:31992 cp/parser.cc:32001
  #, fuzzy, gcc-internal-format
  #| msgid "predicate must be an identifier"
  msgid "expression must be enclosed in parentheses"
  msgstr "udsagn skal vÃ¦re et kaldenavn"
  
! #: cp/parser.cc:32348
  #, gcc-internal-format
  msgid "missing additional %<requires%> to start a requires-expression"
  msgstr ""
  
! #: cp/parser.cc:32589
  #, gcc-internal-format
  msgid "testing if a concept-id is a valid expression; add %<requires%> to check satisfaction"
  msgstr ""
  
! #: cp/parser.cc:32727
  #, fuzzy, gcc-internal-format
  #| msgid "asm template is not a string constant"
  msgid "result type is not a plain type-constraint"
  msgstr "asm-sÃ¦tning er ikke en strengkonstant"
  
! #: cp/parser.cc:32735
  #, fuzzy, gcc-internal-format
  #| msgid "requested alignment is not a constant"
  msgid "return-type-requirement is not a type-constraint"
  msgstr "angivet justering er ikke en konstant"
  
! #: cp/parser.cc:33254
  #, gcc-internal-format
  msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
  msgstr ""
  
! #: cp/parser.cc:33259
  #, fuzzy, gcc-internal-format
  #| msgid "invalid redeclaration of `%D'"
  msgid "invalid declaration of %<%T::%E%>"
  msgstr "ugyldig omerklÃ¦ring af '%D'"
  
! #: cp/parser.cc:33263
  #, fuzzy, gcc-internal-format
  msgid "too few template-parameter-lists"
  msgstr "for fÃ¥ skabelonsparameterlister angivet i erklÃ¦ring af '%D'"
*************** msgstr "for fÃ¥ skabelonsparameterlister
*** 70439,70891 ****
  #. something like:
  #.
  #. template <class T> template <class U> void S::f();
! #: cp/parser.cc:33211
  #, fuzzy, gcc-internal-format
  msgid "too many template-parameter-lists"
  msgstr "for mange skabelonsparameterlister angivet i erklÃ¦ring af '%D'"
  
! #: cp/parser.cc:33503
  #, fuzzy, gcc-internal-format
  #| msgid "qualifiers are not allowed on declaration of `operator %T'"
  msgid "template-id not allowed for constructor in C++20"
  msgstr "modifikationer er ikke tilladt i erklÃ¦ring af 'operator %T'"
  
! #: cp/parser.cc:33614
  #, fuzzy, gcc-internal-format
  msgid "named return values are no longer supported"
  msgstr "--driver understÃ¸ttes ikke lÃ¦ngere"
  
! #: cp/parser.cc:33791
  #, gcc-internal-format
  msgid "ISO C++ did not adopt string literal operator templates taking an argument pack of characters"
  msgstr ""
  
! #: cp/parser.cc:33800
  #, gcc-internal-format
  msgid "literal operator template %qD has invalid parameter list; expected non-type template parameter pack %<<char...>%> or single non-type parameter of class type"
  msgstr ""
  
! #: cp/parser.cc:33806
  #, gcc-internal-format
  msgid "literal operator template %qD has invalid parameter list; expected non-type template parameter pack %<<char...>%>"
  msgstr ""
  
! #: cp/parser.cc:33846
  #, fuzzy, gcc-internal-format
  #| msgid "invalid declaration of member template `%#D' in local class"
  msgid "invalid declaration of member template in local class"
  msgstr "ugyldig erklÃ¦ring af medlemsskabelon '%#D' i lokal klasse"
  
! #: cp/parser.cc:33856
  #, gcc-internal-format
  msgid "template with C linkage"
  msgstr "skabelon med C-kÃ¦dning"
  
! #: cp/parser.cc:33876
  #, fuzzy, gcc-internal-format
  #| msgid "explicit specialization here"
  msgid "invalid explicit specialization"
  msgstr "eksplicit specialisering her"
  
! #: cp/parser.cc:33986
  #, fuzzy, gcc-internal-format
  #| msgid "template declaration of `%#D'"
  msgid "template declaration of %<typedef%>"
  msgstr "skabelonserklÃ¦ring af '%#D'"
  
! #: cp/parser.cc:34037
  #, fuzzy, gcc-internal-format
  #| msgid "declaration does not declare anything"
  msgid "a class template declaration must not declare anything else"
  msgstr "erklÃ¦ring erklÃ¦rer ikke noget"
  
! #: cp/parser.cc:34089
  #, fuzzy, gcc-internal-format
  #| msgid "explicit specialization here"
  msgid "explicit template specialization cannot have a storage class"
  msgstr "eksplicit specialisering her"
  
! #: cp/parser.cc:34408
  #, fuzzy, gcc-internal-format
  msgid "%<>>%> should be %<> >%> within a nested template argument list"
  msgstr "'>>' skulle have vÃ¦ret '> >' i skabelonsklassenavn"
  
! #: cp/parser.cc:34421
  #, fuzzy, gcc-internal-format
  msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
  msgstr "'>>' skulle have vÃ¦ret '> >' i skabelonsklassenavn"
  
! #: cp/parser.cc:34452
  #, fuzzy, gcc-internal-format
  msgid "%qs should be %qs to terminate a template argument list"
  msgstr "'>>' skulle have vÃ¦ret '> >' i skabelonsklassenavn"
  
! #: cp/parser.cc:34769
  #, gcc-internal-format
  msgid "%<sizeof...%> argument must be surrounded by parentheses"
  msgstr ""
  
! #: cp/parser.cc:34944
  #, fuzzy, gcc-internal-format
  #| msgid "invalid base-class specification"
  msgid "invalid use of %qD in linkage specification"
  msgstr "ugyldig stamklasseangivelse"
  
! #: cp/parser.cc:34956
  #, fuzzy, gcc-internal-format
  #| msgid "multiple `virtual' specifiers"
  msgid "duplicate %qD specifier"
  msgstr "mere end Ã©n 'virtual'-angivelse"
  
! #: cp/parser.cc:34959
  #, fuzzy, gcc-internal-format
  #| msgid "section type conflict with %qD"
  msgid "%qD specifier conflicts with %qs"
  msgstr "afsnitstypekonflikt med %qD"
  
! #: cp/parser.cc:34971
  #, gcc-internal-format
  msgid "%<__thread%> before %qD"
  msgstr "%<__thread%> fÃ¸r %qD"
  
! #: cp/parser.cc:34988
  #, fuzzy, gcc-internal-format
  #| msgid "%s used with `%%%c' %s format"
  msgid "%qD specifier conflicts with %<typedef%>"
  msgstr "%s brugt med '%%%c' %s-formatering"
  
! #: cp/parser.cc:35097
  #, gcc-internal-format
  msgid "ISO C++ 1998 does not support %<long long%>"
  msgstr "ISO C++ 1998 understÃ¸tter ikke %<long long%>"
  
! #: cp/parser.cc:35108
  #, gcc-internal-format
  msgid "both %<__thread%> and %<thread_local%> specified"
  msgstr ""
  
! #: cp/parser.cc:35113
  #, gcc-internal-format
  msgid "duplicate %qD"
  msgstr "duplikere %qD"
  
! #: cp/parser.cc:35142
  #, gcc-internal-format
  msgid "duplicate %qs"
  msgstr "duplikere %qs"
  
! #: cp/parser.cc:35194
  #, gcc-internal-format
  msgid "expected %<new%>"
  msgstr "forventede %<new%>"
  
! #: cp/parser.cc:35197
  #, gcc-internal-format
  msgid "expected %<delete%>"
  msgstr "forventede %<delete%>"
  
! #: cp/parser.cc:35200
  #, gcc-internal-format
  msgid "expected %<return%>"
  msgstr "forventede %<return%>"
  
! #: cp/parser.cc:35206
  #, gcc-internal-format
  msgid "expected %<extern%>"
  msgstr "forventede %<extern%>"
  
! #: cp/parser.cc:35209
  #, gcc-internal-format
  msgid "expected %<static_assert%>"
  msgstr "forventede %<static_assert%>"
  
! #: cp/parser.cc:35212
  #, gcc-internal-format
  msgid "expected %<decltype%>"
  msgstr "forventede %<decltype%>"
  
! #: cp/parser.cc:35215
  #, gcc-internal-format
  msgid "expected %<operator%>"
  msgstr "forventede %<operator%>"
  
! #: cp/parser.cc:35218
  #, gcc-internal-format
  msgid "expected %<class%>"
  msgstr "forventede %<class%>"
  
! #: cp/parser.cc:35221
  #, gcc-internal-format
  msgid "expected %<template%>"
  msgstr "forventede %<template%>"
  
! #: cp/parser.cc:35224
  #, gcc-internal-format
  msgid "expected %<namespace%>"
  msgstr "forventede %<namespace%>"
  
! #: cp/parser.cc:35227
  #, gcc-internal-format
  msgid "expected %<using%>"
  msgstr "forventede %<using%>"
  
! #: cp/parser.cc:35230
  #, gcc-internal-format
  msgid "expected %<asm%>"
  msgstr "forventede %<asm%>"
  
! #: cp/parser.cc:35233
  #, gcc-internal-format
  msgid "expected %<try%>"
  msgstr "forventede %<try%>"
  
! #: cp/parser.cc:35236
  #, gcc-internal-format
  msgid "expected %<catch%>"
  msgstr "forventede %<catch%>"
  
! #: cp/parser.cc:35239
  #, gcc-internal-format
  msgid "expected %<throw%>"
  msgstr "forventede %<throw%>"
  
! #: cp/parser.cc:35242
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<catch%>"
  msgid "expected %<auto%>"
  msgstr "forventede %<catch%>"
  
! #: cp/parser.cc:35245
  #, gcc-internal-format
  msgid "expected %<__label__%>"
  msgstr "forventede %<__label__%>"
  
! #: cp/parser.cc:35248
  #, gcc-internal-format
  msgid "expected %<@try%>"
  msgstr "forventede %<@try%>"
  
! #: cp/parser.cc:35251
  #, gcc-internal-format
  msgid "expected %<@synchronized%>"
  msgstr "forventede %<@synchronized%>"
  
! #: cp/parser.cc:35254
  #, gcc-internal-format
  msgid "expected %<@throw%>"
  msgstr "forventede %<@throw%>"
  
! #: cp/parser.cc:35257
  #, gcc-internal-format
  msgid "expected %<__transaction_atomic%>"
  msgstr "forventede %<__transaction_atomic%>"
  
! #: cp/parser.cc:35260
  #, gcc-internal-format
  msgid "expected %<__transaction_relaxed%>"
  msgstr "forventede %<__transaction_relaxed%>"
  
! #: cp/parser.cc:35263
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<@end%>"
  msgid "expected %<co_yield%>"
  msgstr "%<@end%> forventet"
  
! #: cp/parser.cc:35295
  #, gcc-internal-format
  msgid "expected %<::%>"
  msgstr "forventede %<::%>"
  
! #: cp/parser.cc:35307
  #, gcc-internal-format
  msgid "expected %<...%>"
  msgstr "forventede %<...%>"
  
! #: cp/parser.cc:35310
  #, gcc-internal-format
  msgid "expected %<*%>"
  msgstr "forventede %<*%>"
  
! #: cp/parser.cc:35313
  #, gcc-internal-format
  msgid "expected %<~%>"
  msgstr "forventede %<~%>"
  
! #: cp/parser.cc:35319
  #, gcc-internal-format
  msgid "expected %<:%> or %<::%>"
  msgstr "forventede %<:%> or %<::%>"
  
! #: cp/parser.cc:35346
  #, gcc-internal-format
  msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: cp/parser.cc:35681
  #, gcc-internal-format
  msgid "redundant enum-key %<enum%s%> in reference to %q#T"
  msgstr ""
  
! #: cp/parser.cc:35833
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' tag used in naming `%#T'"
  msgid "%qs tag used in naming %q#T"
  msgstr "'%s'-mÃ¦rke benyttet i navngivning af '%#T'"
  
! #: cp/parser.cc:35838
  #, gcc-internal-format
  msgid "%q#T was previously declared here"
  msgstr "%q#T var tidligere erklÃ¦ret her"
  
! #: cp/parser.cc:35959
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare reference to `%#T'"
  msgid "redundant class-key %qs in reference to %q#T"
  msgstr "kan ikke erklÃ¦re reference til '%#T'"
  
! #: cp/parser.cc:36117 cp/parser.cc:36151
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' not declared"
  msgid "%qT declared with a mismatched class-key %qs"
  msgstr "'%D' ikke erklÃ¦ret"
  
! #: cp/parser.cc:36124 cp/parser.cc:36157
  #, gcc-internal-format
  msgid "remove the class-key or replace it with %qs"
  msgstr ""
  
! #: cp/parser.cc:36125 cp/parser.cc:36158
  #, fuzzy, gcc-internal-format
  msgid "replace the class-key with %qs"
  msgstr "uventet operand"
  
! #: cp/parser.cc:36132
  #, fuzzy, gcc-internal-format
  #| msgid "label `%D' defined but not used"
  msgid "%qT defined as %qs here"
  msgstr "etiketten '%D' er defineret, men ikke benyttet"
  
! #: cp/parser.cc:36133
  #, fuzzy, gcc-internal-format
  #| msgid "  first declared as `%#D' here"
  msgid "%qT first declared as %qs here"
  msgstr "  fÃ¸rst erklÃ¦ret som '%#D' her"
  
! #: cp/parser.cc:36216
  #, gcc-internal-format
  msgid "%qD redeclared with different access"
  msgstr "%qD omerklÃ¦ret med anden adgang"
  
! #: cp/parser.cc:36237
  #, gcc-internal-format
  msgid "in C++98 %<template%> (as a disambiguator) is only allowed within templates"
  msgstr ""
  
! #: cp/parser.cc:36486
  #, fuzzy, gcc-internal-format
  msgid "file ends in default argument"
  msgstr "%Hslutningen af filen lÃ¦st inden i standardparameter"
  
! #: cp/parser.cc:36727 cp/parser.cc:38039 cp/parser.cc:38228
  #, gcc-internal-format
  msgid "misplaced %<@%D%> Objective-C++ construct"
  msgstr ""
  
! #: cp/parser.cc:36798
  #, gcc-internal-format
  msgid "objective-c++ message receiver expected"
  msgstr ""
  
! #: cp/parser.cc:36872
  #, gcc-internal-format
  msgid "objective-c++ message argument(s) are expected"
  msgstr ""
  
! #: cp/parser.cc:36903
  #, gcc-internal-format
  msgid "%<@encode%> must specify a type as an argument"
  msgstr ""
  
! #: cp/parser.cc:37307
  #, gcc-internal-format
  msgid "invalid Objective-C++ selector name"
  msgstr ""
  
! #: cp/parser.cc:37382 cp/parser.cc:37400
  #, fuzzy, gcc-internal-format
  #| msgid "Class or interface declaration expected"
  msgid "objective-c++ method declaration is expected"
  msgstr "Klasse- eller grÃ¦nsefladeerklÃ¦ring forventet"
  
! #: cp/parser.cc:37394 cp/parser.cc:37460
  #, fuzzy, gcc-internal-format
  msgid "method attributes must be specified at the end"
  msgstr "sektionsegenskaben kan ikke angives for lokale variabler"
  
! #: cp/parser.cc:37503
  #, gcc-internal-format
  msgid "stray %qs between Objective-C++ methods"
  msgstr ""
  
! #: cp/parser.cc:37700 cp/parser.cc:37707 cp/parser.cc:37714
  #, fuzzy, gcc-internal-format
  #| msgid "invalid register name `%s' for register variable"
  msgid "invalid type for instance variable"
  msgstr "ugyldigt registernavn '%s' for registervariabel"
  
! #: cp/parser.cc:37831
  #, fuzzy, gcc-internal-format
  #| msgid "Identifier expected"
  msgid "identifier expected after %<@protocol%>"
  msgstr "Kaldenavn forventet"
  
! #: cp/parser.cc:38004
  #, gcc-internal-format
  msgid "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
  msgstr ""
  
! #: cp/parser.cc:38011
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute ignored for `%s'"
  msgid "prefix attributes are ignored before %<@%D%>"
  msgstr "'%s'-egenskaben ignoreret for '%s'"
  
! #: cp/parser.cc:38291 cp/parser.cc:38298 cp/parser.cc:38305
  #, fuzzy, gcc-internal-format
  #| msgid "invalid type argument"
  msgid "invalid type for property"
  msgstr "ugyldig typeparameter"
  
! #: cp/parser.cc:38467
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown property attribute %qE"
  msgstr "ukendt registernavn: %s"
  
! #: cp/parser.cc:39765
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "expected integer expression list"
  msgstr "uventet adresseudtryk"
  
! #: cp/parser.cc:39782
  #, gcc-internal-format
  msgid "%<wait%> expression must be integral"
  msgstr ""
  
! #: cp/parser.cc:40538
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<scalar%>, %<aggregate%>, %<all%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: cp/parser.cc:40929
  #, fuzzy, gcc-internal-format
  #| msgid "invalid identifier `%s'"
  msgid "invalid reduction-identifier"
  msgstr "ugyldigt kaldenavn '%s'"
  
! #: cp/parser.cc:41990
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in iterator type"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
--- 70541,70993 ----
  #. something like:
  #.
  #. template <class T> template <class U> void S::f();
! #: cp/parser.cc:33270
  #, fuzzy, gcc-internal-format
  msgid "too many template-parameter-lists"
  msgstr "for mange skabelonsparameterlister angivet i erklÃ¦ring af '%D'"
  
! #: cp/parser.cc:33562
  #, fuzzy, gcc-internal-format
  #| msgid "qualifiers are not allowed on declaration of `operator %T'"
  msgid "template-id not allowed for constructor in C++20"
  msgstr "modifikationer er ikke tilladt i erklÃ¦ring af 'operator %T'"
  
! #: cp/parser.cc:33673
  #, fuzzy, gcc-internal-format
  msgid "named return values are no longer supported"
  msgstr "--driver understÃ¸ttes ikke lÃ¦ngere"
  
! #: cp/parser.cc:33850
  #, gcc-internal-format
  msgid "ISO C++ did not adopt string literal operator templates taking an argument pack of characters"
  msgstr ""
  
! #: cp/parser.cc:33859
  #, gcc-internal-format
  msgid "literal operator template %qD has invalid parameter list; expected non-type template parameter pack %<<char...>%> or single non-type parameter of class type"
  msgstr ""
  
! #: cp/parser.cc:33865
  #, gcc-internal-format
  msgid "literal operator template %qD has invalid parameter list; expected non-type template parameter pack %<<char...>%>"
  msgstr ""
  
! #: cp/parser.cc:33905
  #, fuzzy, gcc-internal-format
  #| msgid "invalid declaration of member template `%#D' in local class"
  msgid "invalid declaration of member template in local class"
  msgstr "ugyldig erklÃ¦ring af medlemsskabelon '%#D' i lokal klasse"
  
! #: cp/parser.cc:33915
  #, gcc-internal-format
  msgid "template with C linkage"
  msgstr "skabelon med C-kÃ¦dning"
  
! #: cp/parser.cc:33935
  #, fuzzy, gcc-internal-format
  #| msgid "explicit specialization here"
  msgid "invalid explicit specialization"
  msgstr "eksplicit specialisering her"
  
! #: cp/parser.cc:34045
  #, fuzzy, gcc-internal-format
  #| msgid "template declaration of `%#D'"
  msgid "template declaration of %<typedef%>"
  msgstr "skabelonserklÃ¦ring af '%#D'"
  
! #: cp/parser.cc:34096
  #, fuzzy, gcc-internal-format
  #| msgid "declaration does not declare anything"
  msgid "a class template declaration must not declare anything else"
  msgstr "erklÃ¦ring erklÃ¦rer ikke noget"
  
! #: cp/parser.cc:34148
  #, fuzzy, gcc-internal-format
  #| msgid "explicit specialization here"
  msgid "explicit template specialization cannot have a storage class"
  msgstr "eksplicit specialisering her"
  
! #: cp/parser.cc:34467
  #, fuzzy, gcc-internal-format
  msgid "%<>>%> should be %<> >%> within a nested template argument list"
  msgstr "'>>' skulle have vÃ¦ret '> >' i skabelonsklassenavn"
  
! #: cp/parser.cc:34480
  #, fuzzy, gcc-internal-format
  msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
  msgstr "'>>' skulle have vÃ¦ret '> >' i skabelonsklassenavn"
  
! #: cp/parser.cc:34511
  #, fuzzy, gcc-internal-format
  msgid "%qs should be %qs to terminate a template argument list"
  msgstr "'>>' skulle have vÃ¦ret '> >' i skabelonsklassenavn"
  
! #: cp/parser.cc:34828
  #, gcc-internal-format
  msgid "%<sizeof...%> argument must be surrounded by parentheses"
  msgstr ""
  
! #: cp/parser.cc:35003
  #, fuzzy, gcc-internal-format
  #| msgid "invalid base-class specification"
  msgid "invalid use of %qD in linkage specification"
  msgstr "ugyldig stamklasseangivelse"
  
! #: cp/parser.cc:35015
  #, fuzzy, gcc-internal-format
  #| msgid "multiple `virtual' specifiers"
  msgid "duplicate %qD specifier"
  msgstr "mere end Ã©n 'virtual'-angivelse"
  
! #: cp/parser.cc:35018
  #, fuzzy, gcc-internal-format
  #| msgid "section type conflict with %qD"
  msgid "%qD specifier conflicts with %qs"
  msgstr "afsnitstypekonflikt med %qD"
  
! #: cp/parser.cc:35030
  #, gcc-internal-format
  msgid "%<__thread%> before %qD"
  msgstr "%<__thread%> fÃ¸r %qD"
  
! #: cp/parser.cc:35047
  #, fuzzy, gcc-internal-format
  #| msgid "%s used with `%%%c' %s format"
  msgid "%qD specifier conflicts with %<typedef%>"
  msgstr "%s brugt med '%%%c' %s-formatering"
  
! #: cp/parser.cc:35156
  #, gcc-internal-format
  msgid "ISO C++ 1998 does not support %<long long%>"
  msgstr "ISO C++ 1998 understÃ¸tter ikke %<long long%>"
  
! #: cp/parser.cc:35167
  #, gcc-internal-format
  msgid "both %<__thread%> and %<thread_local%> specified"
  msgstr ""
  
! #: cp/parser.cc:35172
  #, gcc-internal-format
  msgid "duplicate %qD"
  msgstr "duplikere %qD"
  
! #: cp/parser.cc:35201
  #, gcc-internal-format
  msgid "duplicate %qs"
  msgstr "duplikere %qs"
  
! #: cp/parser.cc:35253
  #, gcc-internal-format
  msgid "expected %<new%>"
  msgstr "forventede %<new%>"
  
! #: cp/parser.cc:35256
  #, gcc-internal-format
  msgid "expected %<delete%>"
  msgstr "forventede %<delete%>"
  
! #: cp/parser.cc:35259
  #, gcc-internal-format
  msgid "expected %<return%>"
  msgstr "forventede %<return%>"
  
! #: cp/parser.cc:35265
  #, gcc-internal-format
  msgid "expected %<extern%>"
  msgstr "forventede %<extern%>"
  
! #: cp/parser.cc:35268
  #, gcc-internal-format
  msgid "expected %<static_assert%>"
  msgstr "forventede %<static_assert%>"
  
! #: cp/parser.cc:35271
  #, gcc-internal-format
  msgid "expected %<decltype%>"
  msgstr "forventede %<decltype%>"
  
! #: cp/parser.cc:35274
  #, gcc-internal-format
  msgid "expected %<operator%>"
  msgstr "forventede %<operator%>"
  
! #: cp/parser.cc:35277
  #, gcc-internal-format
  msgid "expected %<class%>"
  msgstr "forventede %<class%>"
  
! #: cp/parser.cc:35280
  #, gcc-internal-format
  msgid "expected %<template%>"
  msgstr "forventede %<template%>"
  
! #: cp/parser.cc:35283
  #, gcc-internal-format
  msgid "expected %<namespace%>"
  msgstr "forventede %<namespace%>"
  
! #: cp/parser.cc:35286
  #, gcc-internal-format
  msgid "expected %<using%>"
  msgstr "forventede %<using%>"
  
! #: cp/parser.cc:35289
  #, gcc-internal-format
  msgid "expected %<asm%>"
  msgstr "forventede %<asm%>"
  
! #: cp/parser.cc:35292
  #, gcc-internal-format
  msgid "expected %<try%>"
  msgstr "forventede %<try%>"
  
! #: cp/parser.cc:35295
  #, gcc-internal-format
  msgid "expected %<catch%>"
  msgstr "forventede %<catch%>"
  
! #: cp/parser.cc:35298
  #, gcc-internal-format
  msgid "expected %<throw%>"
  msgstr "forventede %<throw%>"
  
! #: cp/parser.cc:35301
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<catch%>"
  msgid "expected %<auto%>"
  msgstr "forventede %<catch%>"
  
! #: cp/parser.cc:35304
  #, gcc-internal-format
  msgid "expected %<__label__%>"
  msgstr "forventede %<__label__%>"
  
! #: cp/parser.cc:35307
  #, gcc-internal-format
  msgid "expected %<@try%>"
  msgstr "forventede %<@try%>"
  
! #: cp/parser.cc:35310
  #, gcc-internal-format
  msgid "expected %<@synchronized%>"
  msgstr "forventede %<@synchronized%>"
  
! #: cp/parser.cc:35313
  #, gcc-internal-format
  msgid "expected %<@throw%>"
  msgstr "forventede %<@throw%>"
  
! #: cp/parser.cc:35316
  #, gcc-internal-format
  msgid "expected %<__transaction_atomic%>"
  msgstr "forventede %<__transaction_atomic%>"
  
! #: cp/parser.cc:35319
  #, gcc-internal-format
  msgid "expected %<__transaction_relaxed%>"
  msgstr "forventede %<__transaction_relaxed%>"
  
! #: cp/parser.cc:35322
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<@end%>"
  msgid "expected %<co_yield%>"
  msgstr "%<@end%> forventet"
  
! #: cp/parser.cc:35354
  #, gcc-internal-format
  msgid "expected %<::%>"
  msgstr "forventede %<::%>"
  
! #: cp/parser.cc:35366
  #, gcc-internal-format
  msgid "expected %<...%>"
  msgstr "forventede %<...%>"
  
! #: cp/parser.cc:35369
  #, gcc-internal-format
  msgid "expected %<*%>"
  msgstr "forventede %<*%>"
  
! #: cp/parser.cc:35372
  #, gcc-internal-format
  msgid "expected %<~%>"
  msgstr "forventede %<~%>"
  
! #: cp/parser.cc:35378
  #, gcc-internal-format
  msgid "expected %<:%> or %<::%>"
  msgstr "forventede %<:%> or %<::%>"
  
! #: cp/parser.cc:35405
  #, gcc-internal-format
  msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: cp/parser.cc:35740
  #, gcc-internal-format
  msgid "redundant enum-key %<enum%s%> in reference to %q#T"
  msgstr ""
  
! #: cp/parser.cc:35892
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' tag used in naming `%#T'"
  msgid "%qs tag used in naming %q#T"
  msgstr "'%s'-mÃ¦rke benyttet i navngivning af '%#T'"
  
! #: cp/parser.cc:35897
  #, gcc-internal-format
  msgid "%q#T was previously declared here"
  msgstr "%q#T var tidligere erklÃ¦ret her"
  
! #: cp/parser.cc:36018
  #, fuzzy, gcc-internal-format
  #| msgid "cannot declare reference to `%#T'"
  msgid "redundant class-key %qs in reference to %q#T"
  msgstr "kan ikke erklÃ¦re reference til '%#T'"
  
! #: cp/parser.cc:36176 cp/parser.cc:36210
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' not declared"
  msgid "%qT declared with a mismatched class-key %qs"
  msgstr "'%D' ikke erklÃ¦ret"
  
! #: cp/parser.cc:36183 cp/parser.cc:36216
  #, gcc-internal-format
  msgid "remove the class-key or replace it with %qs"
  msgstr ""
  
! #: cp/parser.cc:36184 cp/parser.cc:36217
  #, fuzzy, gcc-internal-format
  msgid "replace the class-key with %qs"
  msgstr "uventet operand"
  
! #: cp/parser.cc:36191
  #, fuzzy, gcc-internal-format
  #| msgid "label `%D' defined but not used"
  msgid "%qT defined as %qs here"
  msgstr "etiketten '%D' er defineret, men ikke benyttet"
  
! #: cp/parser.cc:36192
  #, fuzzy, gcc-internal-format
  #| msgid "  first declared as `%#D' here"
  msgid "%qT first declared as %qs here"
  msgstr "  fÃ¸rst erklÃ¦ret som '%#D' her"
  
! #: cp/parser.cc:36275
  #, gcc-internal-format
  msgid "%qD redeclared with different access"
  msgstr "%qD omerklÃ¦ret med anden adgang"
  
! #: cp/parser.cc:36296
  #, gcc-internal-format
  msgid "in C++98 %<template%> (as a disambiguator) is only allowed within templates"
  msgstr ""
  
! #: cp/parser.cc:36545
  #, fuzzy, gcc-internal-format
  msgid "file ends in default argument"
  msgstr "%Hslutningen af filen lÃ¦st inden i standardparameter"
  
! #: cp/parser.cc:36786 cp/parser.cc:38098 cp/parser.cc:38287
  #, gcc-internal-format
  msgid "misplaced %<@%D%> Objective-C++ construct"
  msgstr ""
  
! #: cp/parser.cc:36857
  #, gcc-internal-format
  msgid "objective-c++ message receiver expected"
  msgstr ""
  
! #: cp/parser.cc:36931
  #, gcc-internal-format
  msgid "objective-c++ message argument(s) are expected"
  msgstr ""
  
! #: cp/parser.cc:36962
  #, gcc-internal-format
  msgid "%<@encode%> must specify a type as an argument"
  msgstr ""
  
! #: cp/parser.cc:37366
  #, gcc-internal-format
  msgid "invalid Objective-C++ selector name"
  msgstr ""
  
! #: cp/parser.cc:37441 cp/parser.cc:37459
  #, fuzzy, gcc-internal-format
  #| msgid "Class or interface declaration expected"
  msgid "objective-c++ method declaration is expected"
  msgstr "Klasse- eller grÃ¦nsefladeerklÃ¦ring forventet"
  
! #: cp/parser.cc:37453 cp/parser.cc:37519
  #, fuzzy, gcc-internal-format
  msgid "method attributes must be specified at the end"
  msgstr "sektionsegenskaben kan ikke angives for lokale variabler"
  
! #: cp/parser.cc:37562
  #, gcc-internal-format
  msgid "stray %qs between Objective-C++ methods"
  msgstr ""
  
! #: cp/parser.cc:37759 cp/parser.cc:37766 cp/parser.cc:37773
  #, fuzzy, gcc-internal-format
  #| msgid "invalid register name `%s' for register variable"
  msgid "invalid type for instance variable"
  msgstr "ugyldigt registernavn '%s' for registervariabel"
  
! #: cp/parser.cc:37890
  #, fuzzy, gcc-internal-format
  #| msgid "Identifier expected"
  msgid "identifier expected after %<@protocol%>"
  msgstr "Kaldenavn forventet"
  
! #: cp/parser.cc:38063
  #, gcc-internal-format
  msgid "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
  msgstr ""
  
! #: cp/parser.cc:38070
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' attribute ignored for `%s'"
  msgid "prefix attributes are ignored before %<@%D%>"
  msgstr "'%s'-egenskaben ignoreret for '%s'"
  
! #: cp/parser.cc:38350 cp/parser.cc:38357 cp/parser.cc:38364
  #, fuzzy, gcc-internal-format
  #| msgid "invalid type argument"
  msgid "invalid type for property"
  msgstr "ugyldig typeparameter"
  
! #: cp/parser.cc:38526
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "unknown property attribute %qE"
  msgstr "ukendt registernavn: %s"
  
! #: cp/parser.cc:39824
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "expected integer expression list"
  msgstr "uventet adresseudtryk"
  
! #: cp/parser.cc:39841
  #, gcc-internal-format
  msgid "%<wait%> expression must be integral"
  msgstr ""
  
! #: cp/parser.cc:40597
  #, fuzzy, gcc-internal-format
  #| msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgid "expected %<scalar%>, %<aggregate%>, %<all%>"
  msgstr "forventede %<class%>, %<typename%>, eller %<template%>"
  
! #: cp/parser.cc:40988
  #, fuzzy, gcc-internal-format
  #| msgid "invalid identifier `%s'"
  msgid "invalid reduction-identifier"
  msgstr "ugyldigt kaldenavn '%s'"
  
! #: cp/parser.cc:42049
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in iterator type"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
*************** msgstr "new kan ikke bruges pÃ¥ en refer
*** 70894,71071 ****
  #. check above and add one in semantics.cc (to properly handle templates).
  #. Base this on the allocator/align modifiers check for the 'allocate' clause
  #. in semantics.cc's finish_omp_clauses.
! #: cp/parser.cc:44102
  #, fuzzy, gcc-internal-format
  #| msgid "#pragma vtable no longer supported"
  msgid "%<#pragma omp allocate%> not yet supported"
  msgstr "'#pragma vtable' understÃ¸ttes ikke lÃ¦ngere"
  
! #: cp/parser.cc:45553
  #, gcc-internal-format
  msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
  msgstr ""
  
! #: cp/parser.cc:46484
  #, fuzzy, gcc-internal-format
  msgid "%<ordered%> clause with parameter on range-based %<for%> loop"
  msgstr "typedef-navn kan ikke klassemodificeres"
  
! #: cp/parser.cc:46566 cp/pt.cc:18593
  #, fuzzy, gcc-internal-format
  #| msgid "register variable `%s' used in nested function"
  msgid "iteration variable %qD should not be reduction"
  msgstr "registervariabel '%s' benyttet i indlejret funktion"
  
! #: cp/parser.cc:49607
  #, gcc-internal-format
  msgid "%<#pragma omp declare %s%> followed by %<#pragma omp declare %s%>"
  msgstr ""
  
! #: cp/parser.cc:50294
  #, gcc-internal-format
  msgid "%<#pragma omp dispatch%> must be followed by a direct function call with optional assignment"
  msgstr ""
  
! #: cp/parser.cc:50521
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a pointer-to-object type"
  msgid "%qD is not a C pointer"
  msgstr "'%T' er ikke af en henvisning til objekt-type"
  
! #: cp/parser.cc:50647
  #, gcc-internal-format
  msgid "an %qs clause can only be specified if the %<dispatch%> selector of the construct selector set appears in the %<match%> clause"
  msgstr ""
  
! #: cp/parser.cc:50768
  #, gcc-internal-format
  msgid "OpenMP directive other than %<declare simd%> or %<declare variant%> appertains to a declaration"
  msgstr ""
  
! #: cp/parser.cc:51822
  #, fuzzy, gcc-internal-format
  #| msgid "invalid initializer"
  msgid "invalid initializer clause"
  msgstr "ugyldig startvÃ¦rdi"
  
! #: cp/parser.cc:51853
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected side-effects in address"
  msgid "expected id-expression (arguments)"
  msgstr "uventede bivirkninger i adresse"
  
! #: cp/parser.cc:51865
  #, gcc-internal-format
  msgid "one of the initializer call arguments should be %<omp_priv%> or %<&omp_priv%>"
  msgstr ""
  
! #: cp/parser.cc:51968
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in declare reduction type list"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:51988 cp/semantics.cc:6841
  #, gcc-internal-format
  msgid "predeclared arithmetic type %qT in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: cp/parser.cc:51992 cp/semantics.cc:6849
  #, gcc-internal-format
  msgid "function or array type %qT in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: cp/parser.cc:51995 cp/pt.cc:14880 cp/semantics.cc:6855
  #, gcc-internal-format
  msgid "reference type %qT in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: cp/parser.cc:51998 cp/semantics.cc:6861
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of \"%s\" shadows a global declaration"
  msgid "%<const%>, %<volatile%> or %<__restrict%>-qualified type %qT in %<#pragma omp declare reduction%>"
  msgstr "erklÃ¦ring af '%s' skygger for en global erklÃ¦ring"
  
! #: cp/parser.cc:52749
  #, gcc-internal-format
  msgid "%<#pragma acc routine%> names a set of overloads"
  msgstr ""
  
! #: cp/parser.cc:52759
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a member template function"
  msgid "%qD does not refer to a namespace scope function"
  msgstr "'%D' er ikke en medlemsskabelonfunktion"
  
! #: cp/parser.cc:52929 cp/parser.cc:53464
  #, fuzzy, gcc-internal-format
  #| msgid "In statement function"
  msgid "OpenMP directives may not appear in %<constexpr%> functions"
  msgstr "I sÃ¦tningsfunktion"
  
  #. cancel-and-throw is unimplemented.
! #: cp/parser.cc:53140
  #, gcc-internal-format
  msgid "%<atomic_cancel%>"
  msgstr ""
  
! #: cp/parser.cc:53187 cp/semantics.cc:12154
  #, gcc-internal-format
  msgid "%<__transaction_relaxed%> without transactional memory support enabled"
  msgstr ""
  
! #: cp/parser.cc:53189 cp/semantics.cc:12156
  #, gcc-internal-format
  msgid "%<__transaction_atomic%> without transactional memory support enabled"
  msgstr ""
  
! #: cp/parser.cc:53335
  #, gcc-internal-format
  msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
  msgstr ""
  
! #: cp/parser.cc:53338
  #, gcc-internal-format
  msgid "  or a %<transaction_may_cancel_outer%> function"
  msgstr ""
  
! #: cp/parser.cc:53385
  #, fuzzy, gcc-internal-format
  #| msgid "malformed #pragma map, ignored"
  msgid "malformed %<#pragma GCC pch_preprocess%>"
  msgstr "forkert udformet '#pragma map' - ignoreret"
  
! #: cp/parser.cc:53714
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma omp requires%> may only be used at file or namespace scope"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: cp/parser.cc:53725
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma omp assumes%> may only be used at file or namespace scope"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: cp/parser.cc:53812
  #, fuzzy, gcc-internal-format
  #| msgid "braced-group within expression allowed only inside a function"
  msgid "%<#pragma GCC %s%> must be inside a function"
  msgstr "sÃ¦tningsblokke i udtryk er kun tilladt inde i en funktion"
  
! #: cp/parser.cc:53954
  #, fuzzy, gcc-internal-format
  msgid "multi-source compilation not implemented for C++"
  msgstr "profilering understÃ¸ttes ikke endnu"
  
! #: cp/parser.cc:53991
  #, fuzzy, gcc-internal-format
  msgid "placeholder type not allowed in this context"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: cp/parser.cc:54200
  #, gcc-internal-format
  msgid "implicit templates may not be %<virtual%>"
  msgstr ""
  
! #: cp/parser.cc:54256
  #, gcc-internal-format
  msgid "%<extern \"C\"%> linkage started here"
  msgstr ""
--- 70996,71173 ----
  #. check above and add one in semantics.cc (to properly handle templates).
  #. Base this on the allocator/align modifiers check for the 'allocate' clause
  #. in semantics.cc's finish_omp_clauses.
! #: cp/parser.cc:44161
  #, fuzzy, gcc-internal-format
  #| msgid "#pragma vtable no longer supported"
  msgid "%<#pragma omp allocate%> not yet supported"
  msgstr "'#pragma vtable' understÃ¸ttes ikke lÃ¦ngere"
  
! #: cp/parser.cc:45612
  #, gcc-internal-format
  msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
  msgstr ""
  
! #: cp/parser.cc:46543
  #, fuzzy, gcc-internal-format
  msgid "%<ordered%> clause with parameter on range-based %<for%> loop"
  msgstr "typedef-navn kan ikke klassemodificeres"
  
! #: cp/parser.cc:46625 cp/pt.cc:18622
  #, fuzzy, gcc-internal-format
  #| msgid "register variable `%s' used in nested function"
  msgid "iteration variable %qD should not be reduction"
  msgstr "registervariabel '%s' benyttet i indlejret funktion"
  
! #: cp/parser.cc:49666
  #, gcc-internal-format
  msgid "%<#pragma omp declare %s%> followed by %<#pragma omp declare %s%>"
  msgstr ""
  
! #: cp/parser.cc:50353
  #, gcc-internal-format
  msgid "%<#pragma omp dispatch%> must be followed by a direct function call with optional assignment"
  msgstr ""
  
! #: cp/parser.cc:50580
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a pointer-to-object type"
  msgid "%qD is not a C pointer"
  msgstr "'%T' er ikke af en henvisning til objekt-type"
  
! #: cp/parser.cc:50706
  #, gcc-internal-format
  msgid "an %qs clause can only be specified if the %<dispatch%> selector of the construct selector set appears in the %<match%> clause"
  msgstr ""
  
! #: cp/parser.cc:50827
  #, gcc-internal-format
  msgid "OpenMP directive other than %<declare simd%> or %<declare variant%> appertains to a declaration"
  msgstr ""
  
! #: cp/parser.cc:51875
  #, fuzzy, gcc-internal-format
  #| msgid "invalid initializer"
  msgid "invalid initializer clause"
  msgstr "ugyldig startvÃ¦rdi"
  
! #: cp/parser.cc:51906
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected side-effects in address"
  msgid "expected id-expression (arguments)"
  msgstr "uventede bivirkninger i adresse"
  
! #: cp/parser.cc:51918
  #, gcc-internal-format
  msgid "one of the initializer call arguments should be %<omp_priv%> or %<&omp_priv%>"
  msgstr ""
  
! #: cp/parser.cc:52021
  #, fuzzy, gcc-internal-format
  msgid "types may not be defined in declare reduction type list"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/parser.cc:52041 cp/semantics.cc:6841
  #, gcc-internal-format
  msgid "predeclared arithmetic type %qT in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: cp/parser.cc:52045 cp/semantics.cc:6849
  #, gcc-internal-format
  msgid "function or array type %qT in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: cp/parser.cc:52048 cp/pt.cc:14893 cp/semantics.cc:6855
  #, gcc-internal-format
  msgid "reference type %qT in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: cp/parser.cc:52051 cp/semantics.cc:6861
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of \"%s\" shadows a global declaration"
  msgid "%<const%>, %<volatile%> or %<__restrict%>-qualified type %qT in %<#pragma omp declare reduction%>"
  msgstr "erklÃ¦ring af '%s' skygger for en global erklÃ¦ring"
  
! #: cp/parser.cc:52802
  #, gcc-internal-format
  msgid "%<#pragma acc routine%> names a set of overloads"
  msgstr ""
  
! #: cp/parser.cc:52812
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a member template function"
  msgid "%qD does not refer to a namespace scope function"
  msgstr "'%D' er ikke en medlemsskabelonfunktion"
  
! #: cp/parser.cc:52982 cp/parser.cc:53517
  #, fuzzy, gcc-internal-format
  #| msgid "In statement function"
  msgid "OpenMP directives may not appear in %<constexpr%> functions"
  msgstr "I sÃ¦tningsfunktion"
  
  #. cancel-and-throw is unimplemented.
! #: cp/parser.cc:53193
  #, gcc-internal-format
  msgid "%<atomic_cancel%>"
  msgstr ""
  
! #: cp/parser.cc:53240 cp/semantics.cc:12154
  #, gcc-internal-format
  msgid "%<__transaction_relaxed%> without transactional memory support enabled"
  msgstr ""
  
! #: cp/parser.cc:53242 cp/semantics.cc:12156
  #, gcc-internal-format
  msgid "%<__transaction_atomic%> without transactional memory support enabled"
  msgstr ""
  
! #: cp/parser.cc:53388
  #, gcc-internal-format
  msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
  msgstr ""
  
! #: cp/parser.cc:53391
  #, gcc-internal-format
  msgid "  or a %<transaction_may_cancel_outer%> function"
  msgstr ""
  
! #: cp/parser.cc:53438
  #, fuzzy, gcc-internal-format
  #| msgid "malformed #pragma map, ignored"
  msgid "malformed %<#pragma GCC pch_preprocess%>"
  msgstr "forkert udformet '#pragma map' - ignoreret"
  
! #: cp/parser.cc:53767
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma omp requires%> may only be used at file or namespace scope"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: cp/parser.cc:53778
  #, fuzzy, gcc-internal-format
  msgid "%<#pragma omp assumes%> may only be used at file or namespace scope"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: cp/parser.cc:53865
  #, fuzzy, gcc-internal-format
  #| msgid "braced-group within expression allowed only inside a function"
  msgid "%<#pragma GCC %s%> must be inside a function"
  msgstr "sÃ¦tningsblokke i udtryk er kun tilladt inde i en funktion"
  
! #: cp/parser.cc:54007
  #, fuzzy, gcc-internal-format
  msgid "multi-source compilation not implemented for C++"
  msgstr "profilering understÃ¸ttes ikke endnu"
  
! #: cp/parser.cc:54044
  #, fuzzy, gcc-internal-format
  msgid "placeholder type not allowed in this context"
  msgstr "'%D' blev ikke erklÃ¦ret i dette virkefelt"
  
! #: cp/parser.cc:54253
  #, gcc-internal-format
  msgid "implicit templates may not be %<virtual%>"
  msgstr ""
  
! #: cp/parser.cc:54309
  #, gcc-internal-format
  msgid "%<extern \"C\"%> linkage started here"
  msgstr ""
*************** msgstr "strengkonstanten %E er ikke en g
*** 71852,72157 ****
  msgid "%qE is not a valid template argument for %qT because it is not the address of a variable"
  msgstr "strengkonstanten %E er ikke en gyldig skabelonsparameter fordi den er adressen af et objekt med statisk kÃ¦dning"
  
! #: cp/pt.cc:7549
  #, fuzzy, gcc-internal-format
  #| msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
  msgid "%qE is not a valid template argument for type %qT because string literals can never be used in this context"
  msgstr "strengkonstanten %E er ikke en gyldig skabelonsparameter fordi den er adressen af et objekt med statisk kÃ¦dning"
  
! #: cp/pt.cc:7714
  #, fuzzy, gcc-internal-format
  msgid "in template argument for type %qT"
  msgstr "skabelonsparameter er pÃ¥krÃ¦vet for '%T'"
  
! #: cp/pt.cc:7728
  #, fuzzy, gcc-internal-format
  msgid "template argument %qE for type %qT not a compile-time constant"
  msgstr "skabelonsparameter er pÃ¥krÃ¦vet for '%T'"
  
! #: cp/pt.cc:7814
  #, gcc-internal-format
  msgid "%qE is not a valid template argument for type %qT because of conflicts in cv-qualification"
  msgstr ""
  
! #: cp/pt.cc:7822
  #, fuzzy, gcc-internal-format
  #| msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
  msgid "%qE is not a valid template argument for type %qT because it is not an lvalue"
  msgstr "strengkonstanten %E er ikke en gyldig skabelonsparameter fordi den er adressen af et objekt med statisk kÃ¦dning"
  
! #: cp/pt.cc:7840
  #, gcc-internal-format
  msgid "%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address"
  msgstr ""
  
! #: cp/pt.cc:7900
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' is not a valid template argument"
  msgid "%qE is not a valid template argument for type %qT because it is a pointer"
  msgstr "'%E' er ikke en gyldig skabelonsparameter"
  
! #: cp/pt.cc:7902
  #, gcc-internal-format
  msgid "try using %qE instead"
  msgstr ""
  
! #: cp/pt.cc:7956
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' is not a valid template argument"
  msgid "%qE is not a valid template argument for type %qT because it is of type %qT"
  msgstr "'%E' er ikke en gyldig skabelonsparameter"
  
! #: cp/pt.cc:8547
  #, gcc-internal-format
  msgid "ignoring attributes on template argument %qT"
  msgstr ""
  
! #: cp/pt.cc:8563
  #, fuzzy, gcc-internal-format
  #| msgid "storage class `%D' applied to template instantiation"
  msgid "ignoring attributes in template argument %qE"
  msgstr "lagringsklasse '%D' anvendt pÃ¥ skabelonsinstantiering"
  
! #: cp/pt.cc:8693
  #, fuzzy, gcc-internal-format
  msgid "injected-class-name %qD used as template template argument"
  msgstr "ugyldig standardparameter i skabelon"
  
! #: cp/pt.cc:8722
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `restrict'"
  msgid "invalid use of destructor %qE as a type"
  msgstr "ugyldig brug af 'restrict'"
  
! #: cp/pt.cc:8727
  #, fuzzy, gcc-internal-format
  #| msgid "to refer to a type member of a template parameter, use `typename %E'"
  msgid "to refer to a type member of a template parameter, use %<typename %E%>"
  msgstr "benyt 'typename %E' for at referere til et typemedlem af en skabelonsparameter"
  
! #: cp/pt.cc:8744 cp/pt.cc:8779 cp/pt.cc:8830
  #, fuzzy, gcc-internal-format
  #| msgid "type/value mismatch at argument %d in template parameter list for `%D'"
  msgid "type/value mismatch at argument %d in template parameter list for %qD"
  msgstr "type/vÃ¦rdi-konflikt ved %d. parameter i skabelonsparameterliste for '%D'"
  
! #: cp/pt.cc:8752
  #, fuzzy, gcc-internal-format
  #| msgid "  expected a constant of type `%T', got `%T'"
  msgid "  expected a constant of type %qT, got %qT"
  msgstr "  forventede en konstant af typen '%T', modtog '%T'"
  
! #: cp/pt.cc:8760
  #, fuzzy, gcc-internal-format
  #| msgid "default argument for parameter of type `%T' has type `%T'"
  msgid "  ambiguous template argument for non-type template parameter is treated as function type"
  msgstr "standardparameter for parameter af typen '%T' har typen '%T'"
  
! #: cp/pt.cc:8766
  #, fuzzy, gcc-internal-format
  msgid "  expected a class template, got %qE"
  msgstr "  forventede en klasseskabelon, modtog '%T'"
  
! #: cp/pt.cc:8769
  #, fuzzy, gcc-internal-format
  #| msgid "  expected a type, got `%E'"
  msgid "  expected a type, got %qE"
  msgstr "  forventede en type, modtog '%E'"
  
! #: cp/pt.cc:8784
  #, fuzzy, gcc-internal-format
  #| msgid "  expected a type, got `%T'"
  msgid "  expected a type, got %qT"
  msgstr "  forventede en type, modtog '%T'"
  
! #: cp/pt.cc:8787
  #, fuzzy, gcc-internal-format
  #| msgid "  expected a class template, got `%T'"
  msgid "  expected a class template, got %qT"
  msgstr "  forventede en klasseskabelon, modtog '%T'"
  
! #: cp/pt.cc:8834
  #, fuzzy, gcc-internal-format
  #| msgid "  expected a template of type `%D', got `%D'"
  msgid "  expected a template of type %qD, got %qT"
  msgstr "  forventede en skabelon af typen '%D', modtog '%D'"
  
! #: cp/pt.cc:8849
  #, fuzzy, gcc-internal-format
  #| msgid "type/value mismatch at argument %d in template parameter list for `%D'"
  msgid "constraint mismatch at argument %d in template parameter list for %qD"
  msgstr "type/vÃ¦rdi-konflikt ved %d. parameter i skabelonsparameterliste for '%D'"
  
! #: cp/pt.cc:8852
  #, fuzzy, gcc-internal-format
  #| msgid "  expected a type, got `%E'"
  msgid "  expected %qD but got %qD"
  msgstr "  forventede en type, modtog '%E'"
  
! #: cp/pt.cc:8940
  #, fuzzy, gcc-internal-format
  #| msgid "could not convert template argument `%E' to `%T'"
  msgid "could not convert template argument %qE from %qT to %qT"
  msgstr "kunne ikke konvertere skabelonsparameteren '%E' til '%T'"
  
! #: cp/pt.cc:9068 cp/pt.cc:9404
  #, gcc-internal-format, gfc-internal-format
  msgid "template argument %d is invalid"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/pt.cc:9083 cp/pt.cc:9229
  #, gcc-internal-format, gfc-internal-format
  msgid "wrong number of template arguments (%d, should be %d)"
  msgstr "forkert antal skabelonsparametre (%d, skulle vÃ¦re %d)"
  
! #: cp/pt.cc:9225
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "wrong number of template arguments (%d, should be %d)"
  msgid "wrong number of template arguments (%d, should be at least %d)"
  msgstr "forkert antal skabelonsparametre (%d, skulle vÃ¦re %d)"
  
! #: cp/pt.cc:9234
  #, fuzzy, gcc-internal-format
  #| msgid "provided for `%D'"
  msgid "provided for %qD"
  msgstr "angivet for '%D'"
  
! #: cp/pt.cc:9260
  #, gcc-internal-format
  msgid "pack expansion argument for non-pack parameter %qD of alias template %qD"
  msgstr ""
  
! #: cp/pt.cc:9264
  #, fuzzy, gcc-internal-format
  #| msgid "default argument given for parameter %d of `%#D'"
  msgid "pack expansion argument for non-pack parameter %qD of concept %qD"
  msgstr "standardparameter givet til %d. parameter for '%#D'"
  
! #: cp/pt.cc:9365
  #, gcc-internal-format
  msgid "so any instantiation with a non-empty parameter pack would be ill-formed"
  msgstr ""
  
! #: cp/pt.cc:9934
  #, gcc-internal-format
  msgid "instantiation exposes TU-local entity %qD"
  msgstr ""
  
! #: cp/pt.cc:9953
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function template"
  msgid "%q#D is not a function template"
  msgstr "'%D' er ikke en funktionsskabelon"
  
! #: cp/pt.cc:10140
  #, fuzzy, gcc-internal-format
  #| msgid "non-template type `%T' used as a template"
  msgid "non-template type %qT used as a template"
  msgstr "ikke-skabelonstype '%T' benyttet som skabelon"
  
! #: cp/pt.cc:10142
  #, fuzzy, gcc-internal-format
  #| msgid "for template declaration `%D'"
  msgid "for template declaration %q+D"
  msgstr "til skabelonserklÃ¦ring '%D'"
  
! #: cp/pt.cc:10311 cp/pt.cc:22841
  #, fuzzy, gcc-internal-format
  #| msgid "internal gcc abort"
  msgid "template constraint failure for %qD"
  msgstr "intern GCC-afbrydelse"
  
! #: cp/pt.cc:10661
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a template"
  msgid "use of invalid variable template %qE"
  msgstr "'%T' er ikke en skabelon"
  
! #: cp/pt.cc:11392
  #, fuzzy, gcc-internal-format
  #| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating `%D'"
  msgid "template instantiation depth exceeds maximum of %d (use %<-ftemplate-depth=%> to increase the maximum)"
  msgstr "skabelonsinstantieringsdybden overskrider maksimum pÃ¥ %d (benyt -ftemplate-depth-NN for at forÃ¸ge maksimum) ved instantiering af '%D'"
  
! #: cp/pt.cc:12216
  #, fuzzy, gcc-internal-format
  #| msgid "comparison between signed and unsigned integer expressions"
  msgid "score argument must be constant integer expression"
  msgstr "sammenlign mellem signed og unsigned heltalsudtryk"
  
! #: cp/pt.cc:12225
  #, fuzzy, gcc-internal-format
  #| msgid "%s rotate count is negative"
  msgid "score argument must be non-negative"
  msgstr "%s-roteringsantal er negativt"
  
! #: cp/pt.cc:12252
  #, fuzzy, gcc-internal-format
  msgid "property must be constant integer expression or string literal"
  msgstr "klargÃ¸ringsliste behandlet som et sammensat udtryk"
  
! #: cp/pt.cc:12256
  #, fuzzy, gcc-internal-format
  #| msgid "']' expected, invalid type expression"
  msgid "property must be constant integer expression"
  msgstr "']' forventet, ugyldigt typeudtryk"
  
! #: cp/pt.cc:12484
  #, fuzzy, gcc-internal-format
  #| msgid "  in instantiation of template `%T'"
  msgid "instantiating erroneous template"
  msgstr "  i instantiering af skabelonen '%T'"
  
! #: cp/pt.cc:12485
  #, fuzzy, gcc-internal-format
  msgid "first error appeared here"
  msgstr "  fÃ¸rste type her"
  
! #: cp/pt.cc:12836
  #, fuzzy, gcc-internal-format
  msgid "flexible array member %qD in union"
  msgstr "fleksibelt tabelmedlem i union"
  
! #: cp/pt.cc:13355
  #, gcc-internal-format
  msgid "fold of empty expansion over %O"
  msgstr ""
  
! #: cp/pt.cc:13826
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not at beginning of declaration"
  msgid "%qE is not the entire pattern of the pack expansion"
  msgstr "'%s' er ikke ved begyndelsen af erklÃ¦ringen"
  
! #: cp/pt.cc:13914
  #, gcc-internal-format
  msgid "mismatched argument pack lengths while expanding %qT"
  msgstr ""
  
! #: cp/pt.cc:13917
  #, gcc-internal-format
  msgid "mismatched argument pack lengths while expanding %qE"
  msgstr ""
  
! #: cp/pt.cc:14102
  #, fuzzy, gcc-internal-format
  #| msgid "Cannot read function profile from %s."
  msgid "cannot index an empty pack"
  msgstr "kan ikke lÃ¦se funktionsprofil fra %s."
  
! #: cp/pt.cc:14553
  #, fuzzy, gcc-internal-format
  #| msgid "redefinition of default argument for `%#D'"
  msgid "  when instantiating default argument for call to %qD"
  msgstr "omdefinering af standardparameter for '%#D'"
  
! #: cp/pt.cc:14650
  #, fuzzy, gcc-internal-format
  #| msgid "creating pointer to member function of non-class type `%T'"
  msgid "creating pointer to member function of non-class type %qT"
  msgstr "opretter henvisning til medlemsfunktion af typen '%T' der ikke er en klasse"
  
! #: cp/pt.cc:15640
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "comparison between types `%#T' and `%#T'"
  msgid "mismatched argument pack lengths (%d vs %d)"
--- 71954,72259 ----
  msgid "%qE is not a valid template argument for %qT because it is not the address of a variable"
  msgstr "strengkonstanten %E er ikke en gyldig skabelonsparameter fordi den er adressen af et objekt med statisk kÃ¦dning"
  
! #: cp/pt.cc:7554
  #, fuzzy, gcc-internal-format
  #| msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
  msgid "%qE is not a valid template argument for type %qT because string literals can never be used in this context"
  msgstr "strengkonstanten %E er ikke en gyldig skabelonsparameter fordi den er adressen af et objekt med statisk kÃ¦dning"
  
! #: cp/pt.cc:7719
  #, fuzzy, gcc-internal-format
  msgid "in template argument for type %qT"
  msgstr "skabelonsparameter er pÃ¥krÃ¦vet for '%T'"
  
! #: cp/pt.cc:7733
  #, fuzzy, gcc-internal-format
  msgid "template argument %qE for type %qT not a compile-time constant"
  msgstr "skabelonsparameter er pÃ¥krÃ¦vet for '%T'"
  
! #: cp/pt.cc:7819
  #, gcc-internal-format
  msgid "%qE is not a valid template argument for type %qT because of conflicts in cv-qualification"
  msgstr ""
  
! #: cp/pt.cc:7827
  #, fuzzy, gcc-internal-format
  #| msgid "string literal %E is not a valid template argument because it is the address of an object with static linkage"
  msgid "%qE is not a valid template argument for type %qT because it is not an lvalue"
  msgstr "strengkonstanten %E er ikke en gyldig skabelonsparameter fordi den er adressen af et objekt med statisk kÃ¦dning"
  
! #: cp/pt.cc:7845
  #, gcc-internal-format
  msgid "%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address"
  msgstr ""
  
! #: cp/pt.cc:7905
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' is not a valid template argument"
  msgid "%qE is not a valid template argument for type %qT because it is a pointer"
  msgstr "'%E' er ikke en gyldig skabelonsparameter"
  
! #: cp/pt.cc:7907
  #, gcc-internal-format
  msgid "try using %qE instead"
  msgstr ""
  
! #: cp/pt.cc:7961
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' is not a valid template argument"
  msgid "%qE is not a valid template argument for type %qT because it is of type %qT"
  msgstr "'%E' er ikke en gyldig skabelonsparameter"
  
! #: cp/pt.cc:8552
  #, gcc-internal-format
  msgid "ignoring attributes on template argument %qT"
  msgstr ""
  
! #: cp/pt.cc:8568
  #, fuzzy, gcc-internal-format
  #| msgid "storage class `%D' applied to template instantiation"
  msgid "ignoring attributes in template argument %qE"
  msgstr "lagringsklasse '%D' anvendt pÃ¥ skabelonsinstantiering"
  
! #: cp/pt.cc:8698
  #, fuzzy, gcc-internal-format
  msgid "injected-class-name %qD used as template template argument"
  msgstr "ugyldig standardparameter i skabelon"
  
! #: cp/pt.cc:8727
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of `restrict'"
  msgid "invalid use of destructor %qE as a type"
  msgstr "ugyldig brug af 'restrict'"
  
! #: cp/pt.cc:8732
  #, fuzzy, gcc-internal-format
  #| msgid "to refer to a type member of a template parameter, use `typename %E'"
  msgid "to refer to a type member of a template parameter, use %<typename %E%>"
  msgstr "benyt 'typename %E' for at referere til et typemedlem af en skabelonsparameter"
  
! #: cp/pt.cc:8749 cp/pt.cc:8784 cp/pt.cc:8835
  #, fuzzy, gcc-internal-format
  #| msgid "type/value mismatch at argument %d in template parameter list for `%D'"
  msgid "type/value mismatch at argument %d in template parameter list for %qD"
  msgstr "type/vÃ¦rdi-konflikt ved %d. parameter i skabelonsparameterliste for '%D'"
  
! #: cp/pt.cc:8757
  #, fuzzy, gcc-internal-format
  #| msgid "  expected a constant of type `%T', got `%T'"
  msgid "  expected a constant of type %qT, got %qT"
  msgstr "  forventede en konstant af typen '%T', modtog '%T'"
  
! #: cp/pt.cc:8765
  #, fuzzy, gcc-internal-format
  #| msgid "default argument for parameter of type `%T' has type `%T'"
  msgid "  ambiguous template argument for non-type template parameter is treated as function type"
  msgstr "standardparameter for parameter af typen '%T' har typen '%T'"
  
! #: cp/pt.cc:8771
  #, fuzzy, gcc-internal-format
  msgid "  expected a class template, got %qE"
  msgstr "  forventede en klasseskabelon, modtog '%T'"
  
! #: cp/pt.cc:8774
  #, fuzzy, gcc-internal-format
  #| msgid "  expected a type, got `%E'"
  msgid "  expected a type, got %qE"
  msgstr "  forventede en type, modtog '%E'"
  
! #: cp/pt.cc:8789
  #, fuzzy, gcc-internal-format
  #| msgid "  expected a type, got `%T'"
  msgid "  expected a type, got %qT"
  msgstr "  forventede en type, modtog '%T'"
  
! #: cp/pt.cc:8792
  #, fuzzy, gcc-internal-format
  #| msgid "  expected a class template, got `%T'"
  msgid "  expected a class template, got %qT"
  msgstr "  forventede en klasseskabelon, modtog '%T'"
  
! #: cp/pt.cc:8839
  #, fuzzy, gcc-internal-format
  #| msgid "  expected a template of type `%D', got `%D'"
  msgid "  expected a template of type %qD, got %qT"
  msgstr "  forventede en skabelon af typen '%D', modtog '%D'"
  
! #: cp/pt.cc:8854
  #, fuzzy, gcc-internal-format
  #| msgid "type/value mismatch at argument %d in template parameter list for `%D'"
  msgid "constraint mismatch at argument %d in template parameter list for %qD"
  msgstr "type/vÃ¦rdi-konflikt ved %d. parameter i skabelonsparameterliste for '%D'"
  
! #: cp/pt.cc:8857
  #, fuzzy, gcc-internal-format
  #| msgid "  expected a type, got `%E'"
  msgid "  expected %qD but got %qD"
  msgstr "  forventede en type, modtog '%E'"
  
! #: cp/pt.cc:8945
  #, fuzzy, gcc-internal-format
  #| msgid "could not convert template argument `%E' to `%T'"
  msgid "could not convert template argument %qE from %qT to %qT"
  msgstr "kunne ikke konvertere skabelonsparameteren '%E' til '%T'"
  
! #: cp/pt.cc:9073 cp/pt.cc:9409
  #, gcc-internal-format, gfc-internal-format
  msgid "template argument %d is invalid"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/pt.cc:9088 cp/pt.cc:9234
  #, gcc-internal-format, gfc-internal-format
  msgid "wrong number of template arguments (%d, should be %d)"
  msgstr "forkert antal skabelonsparametre (%d, skulle vÃ¦re %d)"
  
! #: cp/pt.cc:9230
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "wrong number of template arguments (%d, should be %d)"
  msgid "wrong number of template arguments (%d, should be at least %d)"
  msgstr "forkert antal skabelonsparametre (%d, skulle vÃ¦re %d)"
  
! #: cp/pt.cc:9239
  #, fuzzy, gcc-internal-format
  #| msgid "provided for `%D'"
  msgid "provided for %qD"
  msgstr "angivet for '%D'"
  
! #: cp/pt.cc:9265
  #, gcc-internal-format
  msgid "pack expansion argument for non-pack parameter %qD of alias template %qD"
  msgstr ""
  
! #: cp/pt.cc:9269
  #, fuzzy, gcc-internal-format
  #| msgid "default argument given for parameter %d of `%#D'"
  msgid "pack expansion argument for non-pack parameter %qD of concept %qD"
  msgstr "standardparameter givet til %d. parameter for '%#D'"
  
! #: cp/pt.cc:9370
  #, gcc-internal-format
  msgid "so any instantiation with a non-empty parameter pack would be ill-formed"
  msgstr ""
  
! #: cp/pt.cc:9939
  #, gcc-internal-format
  msgid "instantiation exposes TU-local entity %qD"
  msgstr ""
  
! #: cp/pt.cc:9958
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function template"
  msgid "%q#D is not a function template"
  msgstr "'%D' er ikke en funktionsskabelon"
  
! #: cp/pt.cc:10153
  #, fuzzy, gcc-internal-format
  #| msgid "non-template type `%T' used as a template"
  msgid "non-template type %qT used as a template"
  msgstr "ikke-skabelonstype '%T' benyttet som skabelon"
  
! #: cp/pt.cc:10155
  #, fuzzy, gcc-internal-format
  #| msgid "for template declaration `%D'"
  msgid "for template declaration %q+D"
  msgstr "til skabelonserklÃ¦ring '%D'"
  
! #: cp/pt.cc:10324 cp/pt.cc:22870
  #, fuzzy, gcc-internal-format
  #| msgid "internal gcc abort"
  msgid "template constraint failure for %qD"
  msgstr "intern GCC-afbrydelse"
  
! #: cp/pt.cc:10674
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a template"
  msgid "use of invalid variable template %qE"
  msgstr "'%T' er ikke en skabelon"
  
! #: cp/pt.cc:11405
  #, fuzzy, gcc-internal-format
  #| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating `%D'"
  msgid "template instantiation depth exceeds maximum of %d (use %<-ftemplate-depth=%> to increase the maximum)"
  msgstr "skabelonsinstantieringsdybden overskrider maksimum pÃ¥ %d (benyt -ftemplate-depth-NN for at forÃ¸ge maksimum) ved instantiering af '%D'"
  
! #: cp/pt.cc:12229
  #, fuzzy, gcc-internal-format
  #| msgid "comparison between signed and unsigned integer expressions"
  msgid "score argument must be constant integer expression"
  msgstr "sammenlign mellem signed og unsigned heltalsudtryk"
  
! #: cp/pt.cc:12238
  #, fuzzy, gcc-internal-format
  #| msgid "%s rotate count is negative"
  msgid "score argument must be non-negative"
  msgstr "%s-roteringsantal er negativt"
  
! #: cp/pt.cc:12265
  #, fuzzy, gcc-internal-format
  msgid "property must be constant integer expression or string literal"
  msgstr "klargÃ¸ringsliste behandlet som et sammensat udtryk"
  
! #: cp/pt.cc:12269
  #, fuzzy, gcc-internal-format
  #| msgid "']' expected, invalid type expression"
  msgid "property must be constant integer expression"
  msgstr "']' forventet, ugyldigt typeudtryk"
  
! #: cp/pt.cc:12497
  #, fuzzy, gcc-internal-format
  #| msgid "  in instantiation of template `%T'"
  msgid "instantiating erroneous template"
  msgstr "  i instantiering af skabelonen '%T'"
  
! #: cp/pt.cc:12498
  #, fuzzy, gcc-internal-format
  msgid "first error appeared here"
  msgstr "  fÃ¸rste type her"
  
! #: cp/pt.cc:12849
  #, fuzzy, gcc-internal-format
  msgid "flexible array member %qD in union"
  msgstr "fleksibelt tabelmedlem i union"
  
! #: cp/pt.cc:13368
  #, gcc-internal-format
  msgid "fold of empty expansion over %O"
  msgstr ""
  
! #: cp/pt.cc:13839
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is not at beginning of declaration"
  msgid "%qE is not the entire pattern of the pack expansion"
  msgstr "'%s' er ikke ved begyndelsen af erklÃ¦ringen"
  
! #: cp/pt.cc:13927
  #, gcc-internal-format
  msgid "mismatched argument pack lengths while expanding %qT"
  msgstr ""
  
! #: cp/pt.cc:13930
  #, gcc-internal-format
  msgid "mismatched argument pack lengths while expanding %qE"
  msgstr ""
  
! #: cp/pt.cc:14115
  #, fuzzy, gcc-internal-format
  #| msgid "Cannot read function profile from %s."
  msgid "cannot index an empty pack"
  msgstr "kan ikke lÃ¦se funktionsprofil fra %s."
  
! #: cp/pt.cc:14566
  #, fuzzy, gcc-internal-format
  #| msgid "redefinition of default argument for `%#D'"
  msgid "  when instantiating default argument for call to %qD"
  msgstr "omdefinering af standardparameter for '%#D'"
  
! #: cp/pt.cc:14663
  #, fuzzy, gcc-internal-format
  #| msgid "creating pointer to member function of non-class type `%T'"
  msgid "creating pointer to member function of non-class type %qT"
  msgstr "opretter henvisning til medlemsfunktion af typen '%T' der ikke er en klasse"
  
! #: cp/pt.cc:15663
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "comparison between types `%#T' and `%#T'"
  msgid "mismatched argument pack lengths (%d vs %d)"
*************** msgstr "sammenligning mellem typerne '%#
*** 72170,72514 ****
  #.
  #. is an attempt to declare a variable with function
  #. type.
! #: cp/pt.cc:15828
  #, fuzzy, gcc-internal-format
  #| msgid "sizeof applied to a function type"
  msgid "variable %qD has function type"
  msgstr "sizeof benyttet pÃ¥ en funktionstype"
  
! #: cp/pt.cc:16034
  #, fuzzy, gcc-internal-format
  #| msgid "invalid parameter type `%T'"
  msgid "invalid parameter type %qT"
  msgstr "ugyldig parametertype '%T'"
  
! #: cp/pt.cc:16036
  #, fuzzy, gcc-internal-format
  #| msgid "in declaration `%D'"
  msgid "in declaration %q+D"
  msgstr "i erklÃ¦ringen '%D'"
  
! #: cp/pt.cc:16163
  #, fuzzy, gcc-internal-format
  #| msgid "function returns an aggregate"
  msgid "function returning an array"
  msgstr "funktion returnerer en vÃ¦rdi af en sammensat type"
  
! #: cp/pt.cc:16165
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' declared as function returning a function"
  msgid "function returning a function"
  msgstr "'%s' er erklÃ¦ret som en funktion der returnerer en funktion"
  
! #: cp/pt.cc:16896
  #, gcc-internal-format
  msgid "forming reference to void"
  msgstr "danner reference til void"
  
! #: cp/pt.cc:16898
  #, fuzzy, gcc-internal-format
  #| msgid "forming %s to reference type `%T'"
  msgid "forming pointer to reference type %qT"
  msgstr "danner %s til referencetypen '%T'"
  
! #: cp/pt.cc:16900
  #, fuzzy, gcc-internal-format
  #| msgid "forming %s to reference type `%T'"
  msgid "forming reference to reference type %qT"
  msgstr "danner %s til referencetypen '%T'"
  
! #: cp/pt.cc:16913
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids qualified function types"
  msgid "forming pointer to qualified function type %qT"
  msgstr "ISO C forbyder funktionsreturtype med modifikationer"
  
! #: cp/pt.cc:16916
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids qualified function types"
  msgid "forming reference to qualified function type %qT"
  msgstr "ISO C forbyder funktionsreturtype med modifikationer"
  
! #: cp/pt.cc:16969
  #, fuzzy, gcc-internal-format
  #| msgid "creating pointer to member of non-class type `%T'"
  msgid "creating pointer to member of non-class type %qT"
  msgstr "opretter henvisning til medlem af typen '%T' der ikke er en klasse"
  
! #: cp/pt.cc:16975
  #, fuzzy, gcc-internal-format
  #| msgid "creating pointer to member reference type `%T'"
  msgid "creating pointer to member reference type %qT"
  msgstr "opretter henvisning til medlemsreference af typen '%T'"
  
! #: cp/pt.cc:16981
  #, fuzzy, gcc-internal-format
  #| msgid "creating pointer to member reference type `%T'"
  msgid "creating pointer to member of type void"
  msgstr "opretter henvisning til medlemsreference af typen '%T'"
  
! #: cp/pt.cc:17050
  #, fuzzy, gcc-internal-format
  #| msgid "creating array of `%T'"
  msgid "creating array of %qT"
  msgstr "opretter tabel af '%T'"
  
! #: cp/pt.cc:17091
  #, fuzzy, gcc-internal-format
  msgid "%qD expanded to more than one element"
  msgstr "tabellen '%s' antages kun at have Ã©t element"
  
! #: cp/pt.cc:17098
  #, gcc-internal-format
  msgid "%qD is instantiated for an empty pack"
  msgstr ""
  
! #: cp/pt.cc:17119
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a class, struct, or union type"
  msgid "%qT is not a class, struct, or union type"
  msgstr "'%T' er ikke en class-, struct- eller union-type"
  
! #: cp/pt.cc:17159
  #, gcc-internal-format
  msgid "%qT resolves to %qT, which is not an enumeration type"
  msgstr ""
  
! #: cp/pt.cc:17167
  #, fuzzy, gcc-internal-format
  msgid "%qT resolves to %qT, which is not a class type"
  msgstr "unavngiven klargÃ¸ring af '%T' som ikke har nogen stamklasser"
  
! #: cp/pt.cc:17290
  #, fuzzy, gcc-internal-format
  #| msgid "use of `%s' in template"
  msgid "use of %qs in template"
  msgstr "brug af '%s' i skabelon"
  
! #: cp/pt.cc:17609
  #, fuzzy, gcc-internal-format
  #| msgid "qualified type `%T' does not match destructor name `~%T'"
  msgid "qualifying type %qT does not match destructor name ~%qT"
  msgstr "den modificerede type '%T' passer ikke til destruktionsfunktionsnavnet '~%T'"
  
! #: cp/pt.cc:17625
  #, fuzzy, gcc-internal-format
  msgid "dependent-name %qE is parsed as a non-type, but instantiation yields a type"
  msgstr "'%D' benyttes som en type, men er ikke defineret som en type"
  
! #: cp/pt.cc:17627
  #, fuzzy, gcc-internal-format
  msgid "say %<typename %E%> if a type is meant"
  msgstr "  (benyt 'typename %T::%D' hvis det er hvad du mener)"
  
! #: cp/pt.cc:17711
  #, fuzzy, gcc-internal-format
  #| msgid "initializer element is not constant"
  msgid "initializer for %q#D expands to an empty list of expressions"
  msgstr "startvÃ¦rdielement er ikke en konstant"
  
! #: cp/pt.cc:19980 cp/pt.cc:22201
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of void expression"
  msgid "invalid use of pack expansion expression"
  msgstr "ugyldig brug af void-udtryk"
  
! #: cp/pt.cc:19984 cp/pt.cc:22205
  #, gcc-internal-format
  msgid "use %<...%> to expand argument pack"
  msgstr ""
  
! #: cp/pt.cc:20131
  #, fuzzy, gcc-internal-format
  #| msgid "non-empty initializer for array of empty elements"
  msgid "empty initializer in lambda init-capture"
  msgstr "en startvÃ¦rdi der ikke er tom, tildeles til en tabel med tomme elementer"
  
! #: cp/pt.cc:21437
  #, gcc-internal-format
  msgid "%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"
  msgstr ""
  
! #: cp/pt.cc:21472
  #, gcc-internal-format
  msgid "declarations in dependent base %qT are not found by unqualified lookup"
  msgstr ""
  
! #: cp/pt.cc:21477
  #, gcc-internal-format
  msgid "use %<this->%D%> instead"
  msgstr ""
  
! #: cp/pt.cc:21480
  #, gcc-internal-format
  msgid "use %<%T::%D%> instead"
  msgstr ""
  
! #: cp/pt.cc:21485
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' undeclared here (not in a function)"
  msgid "%qD declared here, later in the translation unit"
  msgstr "'%s' ikke erklÃ¦ret her (ikke i en funktion)"
  
! #: cp/pt.cc:21536
  #, fuzzy, gcc-internal-format
  #| msgid "first argument to __builtin_choose_expr not a constant"
  msgid "wrong number of arguments to %<__builtin_convertvector%>"
  msgstr "fÃ¸rste parameter til '__builtin_choose_expr' skal vÃ¦re en konstant"
  
! #: cp/pt.cc:21563
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments to %<assume%> attribute"
  msgstr "forkert antal parametre angivet til egenskaben '%s'"
  
! #: cp/pt.cc:21802
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a class or namespace"
  msgid "%qT is not a class or namespace"
  msgstr "'%T' er ikke en klasse eller et navnerum"
  
! #: cp/pt.cc:21805
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a class or namespace"
  msgid "%qD is not a class or namespace"
  msgstr "'%T' er ikke en klasse eller et navnerum"
  
! #: cp/pt.cc:22121
  #, fuzzy, gcc-internal-format
  #| msgid "missing static field `%s'"
  msgid "using invalid field %qD"
  msgstr "manglende statisk felt '%s'"
  
! #: cp/pt.cc:22471
  #, fuzzy, gcc-internal-format
  msgid "%qT is/uses unnamed type"
  msgstr "skabelonsparameter '%T' benytter anonym type"
  
! #: cp/pt.cc:22473
  #, fuzzy, gcc-internal-format
  #| msgid "default argument for `%#D' has type `%T'"
  msgid "template argument for %qD uses local type %qT"
  msgstr "standardparameter for '%#D' har typen '%T'"
  
! #: cp/pt.cc:22483
  #, fuzzy, gcc-internal-format
  msgid "%qT is a variably modified type"
  msgstr "skabelonsparameter '%T' er en variabelt Ã¦ndret type"
  
! #: cp/pt.cc:22498
  #, fuzzy, gcc-internal-format
  msgid "integral expression %qE is not constant"
  msgstr "stÃ¸rrelsen af medlemmet '%D' er ikke konstant"
  
! #: cp/pt.cc:22516
  #, fuzzy, gcc-internal-format
  #| msgid "  trying to instantiate `%D'"
  msgid "  trying to instantiate %qD"
  msgstr "  ved forsÃ¸g pÃ¥ at instantiere '%D'"
  
! #: cp/pt.cc:26953
  #, fuzzy, gcc-internal-format
  #| msgid "ambiguous class template instantiation for `%#T'"
  msgid "ambiguous template instantiation for %q#T"
  msgstr "tvetydig klasseskabelonsinstantiering for '%#T'"
  
! #: cp/pt.cc:26955
  #, fuzzy, gcc-internal-format
  #| msgid "ambiguous class template instantiation for `%#T'"
  msgid "ambiguous template instantiation for %q#D"
  msgstr "tvetydig klasseskabelonsinstantiering for '%#T'"
  
! #: cp/pt.cc:26961
  #, fuzzy
  #| msgid "%s %+#D"
  msgid "%s %#qS"
  msgstr "%s %+#D"
  
! #: cp/pt.cc:26988 cp/pt.cc:27075
  #, fuzzy, gcc-internal-format
  #| msgid "explicit instantiation of non-template `%#D'"
  msgid "explicit instantiation of non-template %q#D"
  msgstr "eksplicit instantiering af ikke-skabelon '%#D'"
  
! #: cp/pt.cc:27007
  #, fuzzy, gcc-internal-format
  msgid "%qD is not a static data member of a class template"
  msgstr "'%#D' er ikke et statisk medlem af '%#T'"
  
! #: cp/pt.cc:27013 cp/pt.cc:27070
  #, fuzzy, gcc-internal-format
  #| msgid "no matching template for `%D' found"
  msgid "no matching template for %qD found"
  msgstr "ingen passende skabelon for '%D' fundet"
  
! #: cp/pt.cc:27018
  #, fuzzy, gcc-internal-format
  #| msgid "explicit instantiation of non-template type `%T'"
  msgid "type %qT for explicit instantiation %qD does not match declared type %qT"
  msgstr "eksplicit instantiering af '%T' der ikke er en skabelonstype"
  
! #: cp/pt.cc:27026
  #, fuzzy, gcc-internal-format
  #| msgid "explicit instantiation of `%#D'"
  msgid "explicit instantiation of %q#D"
  msgstr "eksplicit instantiering af '%#D'"
  
! #: cp/pt.cc:27062
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate explicit instantiation of `%#D'"
  msgid "duplicate explicit instantiation of %q#D"
  msgstr "'%#D' er blevet eksplicit instantieret mere end Ã©n gang"
  
! #: cp/pt.cc:27085 cp/pt.cc:27152
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids the use of `extern' on explicit instantiations"
  msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
  msgstr "ISO C++ forbyder brugen af 'extern' ved eksplicitte instantieringer"
  
! #: cp/pt.cc:27090 cp/pt.cc:27167
  #, fuzzy, gcc-internal-format
  #| msgid "storage class `%D' applied to template instantiation"
  msgid "storage class %qD applied to template instantiation"
  msgstr "lagringsklasse '%D' anvendt pÃ¥ skabelonsinstantiering"
  
! #: cp/pt.cc:27124
  #, fuzzy, gcc-internal-format
  #| msgid "explicit instantiation of non-template `%#D'"
  msgid "explicit instantiation of non-class template %qD"
  msgstr "eksplicit instantiering af ikke-skabelon '%#D'"
  
! #: cp/pt.cc:27127
  #, fuzzy, gcc-internal-format
  #| msgid "explicit instantiation of non-template type `%T'"
  msgid "explicit instantiation of non-template type %qT"
  msgstr "eksplicit instantiering af '%T' der ikke er en skabelonstype"
  
! #: cp/pt.cc:27136
  #, fuzzy, gcc-internal-format
  #| msgid "explicit instantiation of `%#T' before definition of template"
  msgid "explicit instantiation of %q#T before definition of template"
  msgstr "eksplicit instantiering af '%T' fÃ¸r definering af skabelonen"
  
! #: cp/pt.cc:27157
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids the use of `%s' on explicit instantiations"
  msgid "ISO C++ forbids the use of %qE on explicit instantiations"
  msgstr "ISO C++ forbyder brugen af '%s ved eksplicitte instantieringer"
  
! #: cp/pt.cc:27197
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate explicit instantiation of `%#T'"
  msgid "duplicate explicit instantiation of %q#T"
  msgstr "'%#T' er blevet eksplicit instantieret mere end Ã©n gang"
  
! #: cp/pt.cc:27527
  #, fuzzy, gcc-internal-format
  #| msgid "explicit specialization of %D after first use"
  msgid "exception specification of %qD depends on itself"
  msgstr "eksplicit specialisering af %D efter fÃ¸rste brug"
  
! #: cp/pt.cc:27533
  #, fuzzy, gcc-internal-format
  #| msgid "type specifier `%s' not allowed after struct or class"
  msgid "exception specification of %qD is not available until end of class definition"
--- 72272,72616 ----
  #.
  #. is an attempt to declare a variable with function
  #. type.
! #: cp/pt.cc:15851
  #, fuzzy, gcc-internal-format
  #| msgid "sizeof applied to a function type"
  msgid "variable %qD has function type"
  msgstr "sizeof benyttet pÃ¥ en funktionstype"
  
! #: cp/pt.cc:16057
  #, fuzzy, gcc-internal-format
  #| msgid "invalid parameter type `%T'"
  msgid "invalid parameter type %qT"
  msgstr "ugyldig parametertype '%T'"
  
! #: cp/pt.cc:16059
  #, fuzzy, gcc-internal-format
  #| msgid "in declaration `%D'"
  msgid "in declaration %q+D"
  msgstr "i erklÃ¦ringen '%D'"
  
! #: cp/pt.cc:16186
  #, fuzzy, gcc-internal-format
  #| msgid "function returns an aggregate"
  msgid "function returning an array"
  msgstr "funktion returnerer en vÃ¦rdi af en sammensat type"
  
! #: cp/pt.cc:16188
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' declared as function returning a function"
  msgid "function returning a function"
  msgstr "'%s' er erklÃ¦ret som en funktion der returnerer en funktion"
  
! #: cp/pt.cc:16919
  #, gcc-internal-format
  msgid "forming reference to void"
  msgstr "danner reference til void"
  
! #: cp/pt.cc:16921
  #, fuzzy, gcc-internal-format
  #| msgid "forming %s to reference type `%T'"
  msgid "forming pointer to reference type %qT"
  msgstr "danner %s til referencetypen '%T'"
  
! #: cp/pt.cc:16923
  #, fuzzy, gcc-internal-format
  #| msgid "forming %s to reference type `%T'"
  msgid "forming reference to reference type %qT"
  msgstr "danner %s til referencetypen '%T'"
  
! #: cp/pt.cc:16936
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids qualified function types"
  msgid "forming pointer to qualified function type %qT"
  msgstr "ISO C forbyder funktionsreturtype med modifikationer"
  
! #: cp/pt.cc:16939
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids qualified function types"
  msgid "forming reference to qualified function type %qT"
  msgstr "ISO C forbyder funktionsreturtype med modifikationer"
  
! #: cp/pt.cc:16992
  #, fuzzy, gcc-internal-format
  #| msgid "creating pointer to member of non-class type `%T'"
  msgid "creating pointer to member of non-class type %qT"
  msgstr "opretter henvisning til medlem af typen '%T' der ikke er en klasse"
  
! #: cp/pt.cc:16998
  #, fuzzy, gcc-internal-format
  #| msgid "creating pointer to member reference type `%T'"
  msgid "creating pointer to member reference type %qT"
  msgstr "opretter henvisning til medlemsreference af typen '%T'"
  
! #: cp/pt.cc:17004
  #, fuzzy, gcc-internal-format
  #| msgid "creating pointer to member reference type `%T'"
  msgid "creating pointer to member of type void"
  msgstr "opretter henvisning til medlemsreference af typen '%T'"
  
! #: cp/pt.cc:17073
  #, fuzzy, gcc-internal-format
  #| msgid "creating array of `%T'"
  msgid "creating array of %qT"
  msgstr "opretter tabel af '%T'"
  
! #: cp/pt.cc:17114
  #, fuzzy, gcc-internal-format
  msgid "%qD expanded to more than one element"
  msgstr "tabellen '%s' antages kun at have Ã©t element"
  
! #: cp/pt.cc:17121
  #, gcc-internal-format
  msgid "%qD is instantiated for an empty pack"
  msgstr ""
  
! #: cp/pt.cc:17142
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a class, struct, or union type"
  msgid "%qT is not a class, struct, or union type"
  msgstr "'%T' er ikke en class-, struct- eller union-type"
  
! #: cp/pt.cc:17182
  #, gcc-internal-format
  msgid "%qT resolves to %qT, which is not an enumeration type"
  msgstr ""
  
! #: cp/pt.cc:17190
  #, fuzzy, gcc-internal-format
  msgid "%qT resolves to %qT, which is not a class type"
  msgstr "unavngiven klargÃ¸ring af '%T' som ikke har nogen stamklasser"
  
! #: cp/pt.cc:17319
  #, fuzzy, gcc-internal-format
  #| msgid "use of `%s' in template"
  msgid "use of %qs in template"
  msgstr "brug af '%s' i skabelon"
  
! #: cp/pt.cc:17638
  #, fuzzy, gcc-internal-format
  #| msgid "qualified type `%T' does not match destructor name `~%T'"
  msgid "qualifying type %qT does not match destructor name ~%qT"
  msgstr "den modificerede type '%T' passer ikke til destruktionsfunktionsnavnet '~%T'"
  
! #: cp/pt.cc:17654
  #, fuzzy, gcc-internal-format
  msgid "dependent-name %qE is parsed as a non-type, but instantiation yields a type"
  msgstr "'%D' benyttes som en type, men er ikke defineret som en type"
  
! #: cp/pt.cc:17656
  #, fuzzy, gcc-internal-format
  msgid "say %<typename %E%> if a type is meant"
  msgstr "  (benyt 'typename %T::%D' hvis det er hvad du mener)"
  
! #: cp/pt.cc:17740
  #, fuzzy, gcc-internal-format
  #| msgid "initializer element is not constant"
  msgid "initializer for %q#D expands to an empty list of expressions"
  msgstr "startvÃ¦rdielement er ikke en konstant"
  
! #: cp/pt.cc:20009 cp/pt.cc:22230
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of void expression"
  msgid "invalid use of pack expansion expression"
  msgstr "ugyldig brug af void-udtryk"
  
! #: cp/pt.cc:20013 cp/pt.cc:22234
  #, gcc-internal-format
  msgid "use %<...%> to expand argument pack"
  msgstr ""
  
! #: cp/pt.cc:20160
  #, fuzzy, gcc-internal-format
  #| msgid "non-empty initializer for array of empty elements"
  msgid "empty initializer in lambda init-capture"
  msgstr "en startvÃ¦rdi der ikke er tom, tildeles til en tabel med tomme elementer"
  
! #: cp/pt.cc:21466
  #, gcc-internal-format
  msgid "%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation"
  msgstr ""
  
! #: cp/pt.cc:21501
  #, gcc-internal-format
  msgid "declarations in dependent base %qT are not found by unqualified lookup"
  msgstr ""
  
! #: cp/pt.cc:21506
  #, gcc-internal-format
  msgid "use %<this->%D%> instead"
  msgstr ""
  
! #: cp/pt.cc:21509
  #, gcc-internal-format
  msgid "use %<%T::%D%> instead"
  msgstr ""
  
! #: cp/pt.cc:21514
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' undeclared here (not in a function)"
  msgid "%qD declared here, later in the translation unit"
  msgstr "'%s' ikke erklÃ¦ret her (ikke i en funktion)"
  
! #: cp/pt.cc:21565
  #, fuzzy, gcc-internal-format
  #| msgid "first argument to __builtin_choose_expr not a constant"
  msgid "wrong number of arguments to %<__builtin_convertvector%>"
  msgstr "fÃ¸rste parameter til '__builtin_choose_expr' skal vÃ¦re en konstant"
  
! #: cp/pt.cc:21592
  #, fuzzy, gcc-internal-format
  #| msgid "wrong number of arguments specified for `%s' attribute"
  msgid "wrong number of arguments to %<assume%> attribute"
  msgstr "forkert antal parametre angivet til egenskaben '%s'"
  
! #: cp/pt.cc:21831
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a class or namespace"
  msgid "%qT is not a class or namespace"
  msgstr "'%T' er ikke en klasse eller et navnerum"
  
! #: cp/pt.cc:21834
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a class or namespace"
  msgid "%qD is not a class or namespace"
  msgstr "'%T' er ikke en klasse eller et navnerum"
  
! #: cp/pt.cc:22150
  #, fuzzy, gcc-internal-format
  #| msgid "missing static field `%s'"
  msgid "using invalid field %qD"
  msgstr "manglende statisk felt '%s'"
  
! #: cp/pt.cc:22500
  #, fuzzy, gcc-internal-format
  msgid "%qT is/uses unnamed type"
  msgstr "skabelonsparameter '%T' benytter anonym type"
  
! #: cp/pt.cc:22502
  #, fuzzy, gcc-internal-format
  #| msgid "default argument for `%#D' has type `%T'"
  msgid "template argument for %qD uses local type %qT"
  msgstr "standardparameter for '%#D' har typen '%T'"
  
! #: cp/pt.cc:22512
  #, fuzzy, gcc-internal-format
  msgid "%qT is a variably modified type"
  msgstr "skabelonsparameter '%T' er en variabelt Ã¦ndret type"
  
! #: cp/pt.cc:22527
  #, fuzzy, gcc-internal-format
  msgid "integral expression %qE is not constant"
  msgstr "stÃ¸rrelsen af medlemmet '%D' er ikke konstant"
  
! #: cp/pt.cc:22545
  #, fuzzy, gcc-internal-format
  #| msgid "  trying to instantiate `%D'"
  msgid "  trying to instantiate %qD"
  msgstr "  ved forsÃ¸g pÃ¥ at instantiere '%D'"
  
! #: cp/pt.cc:26983
  #, fuzzy, gcc-internal-format
  #| msgid "ambiguous class template instantiation for `%#T'"
  msgid "ambiguous template instantiation for %q#T"
  msgstr "tvetydig klasseskabelonsinstantiering for '%#T'"
  
! #: cp/pt.cc:26985
  #, fuzzy, gcc-internal-format
  #| msgid "ambiguous class template instantiation for `%#T'"
  msgid "ambiguous template instantiation for %q#D"
  msgstr "tvetydig klasseskabelonsinstantiering for '%#T'"
  
! #: cp/pt.cc:26991
  #, fuzzy
  #| msgid "%s %+#D"
  msgid "%s %#qS"
  msgstr "%s %+#D"
  
! #: cp/pt.cc:27018 cp/pt.cc:27105
  #, fuzzy, gcc-internal-format
  #| msgid "explicit instantiation of non-template `%#D'"
  msgid "explicit instantiation of non-template %q#D"
  msgstr "eksplicit instantiering af ikke-skabelon '%#D'"
  
! #: cp/pt.cc:27037
  #, fuzzy, gcc-internal-format
  msgid "%qD is not a static data member of a class template"
  msgstr "'%#D' er ikke et statisk medlem af '%#T'"
  
! #: cp/pt.cc:27043 cp/pt.cc:27100
  #, fuzzy, gcc-internal-format
  #| msgid "no matching template for `%D' found"
  msgid "no matching template for %qD found"
  msgstr "ingen passende skabelon for '%D' fundet"
  
! #: cp/pt.cc:27048
  #, fuzzy, gcc-internal-format
  #| msgid "explicit instantiation of non-template type `%T'"
  msgid "type %qT for explicit instantiation %qD does not match declared type %qT"
  msgstr "eksplicit instantiering af '%T' der ikke er en skabelonstype"
  
! #: cp/pt.cc:27056
  #, fuzzy, gcc-internal-format
  #| msgid "explicit instantiation of `%#D'"
  msgid "explicit instantiation of %q#D"
  msgstr "eksplicit instantiering af '%#D'"
  
! #: cp/pt.cc:27092
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate explicit instantiation of `%#D'"
  msgid "duplicate explicit instantiation of %q#D"
  msgstr "'%#D' er blevet eksplicit instantieret mere end Ã©n gang"
  
! #: cp/pt.cc:27115 cp/pt.cc:27182
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids the use of `extern' on explicit instantiations"
  msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
  msgstr "ISO C++ forbyder brugen af 'extern' ved eksplicitte instantieringer"
  
! #: cp/pt.cc:27120 cp/pt.cc:27197
  #, fuzzy, gcc-internal-format
  #| msgid "storage class `%D' applied to template instantiation"
  msgid "storage class %qD applied to template instantiation"
  msgstr "lagringsklasse '%D' anvendt pÃ¥ skabelonsinstantiering"
  
! #: cp/pt.cc:27154
  #, fuzzy, gcc-internal-format
  #| msgid "explicit instantiation of non-template `%#D'"
  msgid "explicit instantiation of non-class template %qD"
  msgstr "eksplicit instantiering af ikke-skabelon '%#D'"
  
! #: cp/pt.cc:27157
  #, fuzzy, gcc-internal-format
  #| msgid "explicit instantiation of non-template type `%T'"
  msgid "explicit instantiation of non-template type %qT"
  msgstr "eksplicit instantiering af '%T' der ikke er en skabelonstype"
  
! #: cp/pt.cc:27166
  #, fuzzy, gcc-internal-format
  #| msgid "explicit instantiation of `%#T' before definition of template"
  msgid "explicit instantiation of %q#T before definition of template"
  msgstr "eksplicit instantiering af '%T' fÃ¸r definering af skabelonen"
  
! #: cp/pt.cc:27187
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids the use of `%s' on explicit instantiations"
  msgid "ISO C++ forbids the use of %qE on explicit instantiations"
  msgstr "ISO C++ forbyder brugen af '%s ved eksplicitte instantieringer"
  
! #: cp/pt.cc:27227
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate explicit instantiation of `%#T'"
  msgid "duplicate explicit instantiation of %q#T"
  msgstr "'%#T' er blevet eksplicit instantieret mere end Ã©n gang"
  
! #: cp/pt.cc:27557
  #, fuzzy, gcc-internal-format
  #| msgid "explicit specialization of %D after first use"
  msgid "exception specification of %qD depends on itself"
  msgstr "eksplicit specialisering af %D efter fÃ¸rste brug"
  
! #: cp/pt.cc:27563
  #, fuzzy, gcc-internal-format
  #| msgid "type specifier `%s' not allowed after struct or class"
  msgid "exception specification of %qD is not available until end of class definition"
*************** msgstr "typeangivelsen '%s' er ikke till
*** 72521,72697 ****
  #. member function or static data member of a class template
  #. shall be present in every translation unit in which it is
  #. explicitly instantiated.
! #: cp/pt.cc:28009
  #, fuzzy, gcc-internal-format
  #| msgid "explicit instantiation of `%D' but no definition available"
  msgid "explicit instantiation of %qD but no definition available"
  msgstr "eksplicit instantiering af '%D', men ingen definition tilgÃ¦ngelig"
  
! #: cp/pt.cc:28055
  #, fuzzy, gcc-internal-format
  #| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating `%D'"
  msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use %<-ftemplate-depth=%> to increase the maximum)"
  msgstr "skabelonsinstantieringsdybden overskrider maksimum pÃ¥ %d (benyt -ftemplate-depth-NN for at forÃ¸ge maksimum) ved instantiering af '%D'"
  
! #: cp/pt.cc:28430
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "non-type template parameters of deduced class type only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/pt.cc:28460
  #, fuzzy, gcc-internal-format
  #| msgid "`%#T' is not a valid type for a template constant parameter"
  msgid "%qT is not a valid type for a template non-type parameter because it is not structural"
  msgstr "'%#T' er ikke en gyldig type for en skabelonsparameterkonstant "
  
! #: cp/pt.cc:28469
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "non-type template parameters of class type only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/pt.cc:28477
  #, fuzzy, gcc-internal-format
  #| msgid "invalid catch parameter"
  msgid "invalid template non-type parameter"
  msgstr "ugyldig catch-parameter"
  
! #: cp/pt.cc:28479
  #, fuzzy, gcc-internal-format
  #| msgid "`%#T' is not a valid type for a template constant parameter"
  msgid "%q#T is not a valid type for a template non-type parameter"
  msgstr "'%#T' er ikke en gyldig type for en skabelonsparameterkonstant "
  
! #: cp/pt.cc:29942
  #, fuzzy, gcc-internal-format
  msgid "keyword %<template%> not allowed in declarator-id"
  msgstr "bruger 'typename' uden for en skabelon"
  
! #: cp/pt.cc:30127
  #, fuzzy, gcc-internal-format
  #| msgid "constructor cannot be static member function"
  msgid "a concept cannot be constrained"
  msgstr "konstruktionsfunktionen kan ikke vÃ¦re en statisk medlemsfunktion"
  
! #: cp/pt.cc:30136
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a namespace"
  msgid "concept %qE not in namespace scope"
  msgstr "'%T' er ikke et navnerum"
  
! #: cp/pt.cc:30142
  #, fuzzy, gcc-internal-format
  #| msgid "definition of `%#T' inside template parameter list"
  msgid "concept %qE has multiple template parameter lists"
  msgstr "definition af '%#T' inden i skabelonsparameterliste"
  
! #: cp/pt.cc:30186
  #, fuzzy, gcc-internal-format
  #| msgid "brace-enclosed initializer used to initialize `%T'"
  msgid "deducing from brace-enclosed initializer list requires %<#include <initializer_list>%>"
  msgstr "startvÃ¦rdi i krÃ¸llede paranteser benyttet til at klargÃ¸re '%T'"
  
! #: cp/pt.cc:31457
  #, fuzzy, gcc-internal-format
  msgid "non-deducible template %qT used without template arguments"
  msgstr "ikke-skabelon benyttet som skabelon"
  
! #: cp/pt.cc:31470
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "alias template deduction only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/pt.cc:31476
  #, fuzzy, gcc-internal-format
  #| msgid "#include nested too deeply"
  msgid "use %qD directly instead"
  msgstr "#include indlejret for dybt"
  
! #: cp/pt.cc:31604
  #, gcc-internal-format
  msgid "cannot deduce template arguments for copy-initialization of %qT, as it has no non-explicit deduction guides or user-declared constructors"
  msgstr ""
  
! #: cp/pt.cc:31611
  #, fuzzy, gcc-internal-format
  msgid "cannot deduce template arguments of %qT, as it has no viable deduction guides"
  msgstr "skabelonsparameter er pÃ¥krÃ¦vet for '%T'"
  
! #: cp/pt.cc:31624
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "class template argument deduction failed:"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/pt.cc:31627
  #, fuzzy, gcc-internal-format
  #| msgid "function not considered for inlining"
  msgid "explicit deduction guides not considered for copy-initialization"
  msgstr "funktion overvejes ikke for indbygning"
  
! #: cp/pt.cc:31642
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "class template argument deduction for %qT failed: explicit deduction guide selected in copy-list-initialization"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/pt.cc:31646
  #, fuzzy, gcc-internal-format
  msgid "explicit deduction guide declared here"
  msgstr "Ugyldig erklÃ¦ring"
  
! #: cp/pt.cc:31661
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%qT may not intend to support class template argument deduction"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/pt.cc:31663
  #, gcc-internal-format
  msgid "add a deduction guide to suppress this warning"
  msgstr ""
  
! #: cp/pt.cc:31786
  #, gcc-internal-format
  msgid "direct-list-initialization of %<auto%> requires exactly one element"
  msgstr ""
  
! #: cp/pt.cc:31789
  #, gcc-internal-format
  msgid "for deduction to %<std::initializer_list%>, use copy-list-initialization (i.e. add %<=%> before the %<{%>)"
  msgstr ""
  
! #: cp/pt.cc:31849
  #, fuzzy, gcc-internal-format
  #| msgid "Invalid method declaration, return type required"
  msgid "unable to deduce lambda return type from %qE"
  msgstr "Ugyldig metodeerklÃ¦ring, returtype pÃ¥krÃ¦vet"
  
! #: cp/pt.cc:31852
  #, gcc-internal-format
  msgid "unable to deduce %qT from %qE"
  msgstr ""
  
! #: cp/pt.cc:31927
  #, gcc-internal-format
  msgid "placeholder constraints not satisfied"
  msgstr ""
  
! #: cp/pt.cc:31931
  #, fuzzy, gcc-internal-format
  #| msgid "insn does not satisfy its constraints:"
  msgid "deduced initializer does not satisfy placeholder constraints"
  msgstr "instruktion tilfredsstiller ikke sine begrÃ¦nsninger:"
  
! #: cp/pt.cc:31935
  #, fuzzy, gcc-internal-format
  #| msgid "insn does not satisfy its constraints:"
  msgid "deduced return type does not satisfy placeholder constraints"
  msgstr "instruktion tilfredsstiller ikke sine begrÃ¦nsninger:"
  
! #: cp/pt.cc:31939
  #, fuzzy, gcc-internal-format
  #| msgid "insn does not satisfy its constraints:"
  msgid "deduced expression type does not satisfy placeholder constraints"
--- 72623,72799 ----
  #. member function or static data member of a class template
  #. shall be present in every translation unit in which it is
  #. explicitly instantiated.
! #: cp/pt.cc:28039
  #, fuzzy, gcc-internal-format
  #| msgid "explicit instantiation of `%D' but no definition available"
  msgid "explicit instantiation of %qD but no definition available"
  msgstr "eksplicit instantiering af '%D', men ingen definition tilgÃ¦ngelig"
  
! #: cp/pt.cc:28085
  #, fuzzy, gcc-internal-format
  #| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating `%D'"
  msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use %<-ftemplate-depth=%> to increase the maximum)"
  msgstr "skabelonsinstantieringsdybden overskrider maksimum pÃ¥ %d (benyt -ftemplate-depth-NN for at forÃ¸ge maksimum) ved instantiering af '%D'"
  
! #: cp/pt.cc:28460
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "non-type template parameters of deduced class type only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/pt.cc:28490
  #, fuzzy, gcc-internal-format
  #| msgid "`%#T' is not a valid type for a template constant parameter"
  msgid "%qT is not a valid type for a template non-type parameter because it is not structural"
  msgstr "'%#T' er ikke en gyldig type for en skabelonsparameterkonstant "
  
! #: cp/pt.cc:28499
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "non-type template parameters of class type only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/pt.cc:28507
  #, fuzzy, gcc-internal-format
  #| msgid "invalid catch parameter"
  msgid "invalid template non-type parameter"
  msgstr "ugyldig catch-parameter"
  
! #: cp/pt.cc:28509
  #, fuzzy, gcc-internal-format
  #| msgid "`%#T' is not a valid type for a template constant parameter"
  msgid "%q#T is not a valid type for a template non-type parameter"
  msgstr "'%#T' er ikke en gyldig type for en skabelonsparameterkonstant "
  
! #: cp/pt.cc:29972
  #, fuzzy, gcc-internal-format
  msgid "keyword %<template%> not allowed in declarator-id"
  msgstr "bruger 'typename' uden for en skabelon"
  
! #: cp/pt.cc:30157
  #, fuzzy, gcc-internal-format
  #| msgid "constructor cannot be static member function"
  msgid "a concept cannot be constrained"
  msgstr "konstruktionsfunktionen kan ikke vÃ¦re en statisk medlemsfunktion"
  
! #: cp/pt.cc:30166
  #, fuzzy, gcc-internal-format
  #| msgid "`%T' is not a namespace"
  msgid "concept %qE not in namespace scope"
  msgstr "'%T' er ikke et navnerum"
  
! #: cp/pt.cc:30172
  #, fuzzy, gcc-internal-format
  #| msgid "definition of `%#T' inside template parameter list"
  msgid "concept %qE has multiple template parameter lists"
  msgstr "definition af '%#T' inden i skabelonsparameterliste"
  
! #: cp/pt.cc:30216
  #, fuzzy, gcc-internal-format
  #| msgid "brace-enclosed initializer used to initialize `%T'"
  msgid "deducing from brace-enclosed initializer list requires %<#include <initializer_list>%>"
  msgstr "startvÃ¦rdi i krÃ¸llede paranteser benyttet til at klargÃ¸re '%T'"
  
! #: cp/pt.cc:31487
  #, fuzzy, gcc-internal-format
  msgid "non-deducible template %qT used without template arguments"
  msgstr "ikke-skabelon benyttet som skabelon"
  
! #: cp/pt.cc:31500
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "alias template deduction only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/pt.cc:31506
  #, fuzzy, gcc-internal-format
  #| msgid "#include nested too deeply"
  msgid "use %qD directly instead"
  msgstr "#include indlejret for dybt"
  
! #: cp/pt.cc:31634
  #, gcc-internal-format
  msgid "cannot deduce template arguments for copy-initialization of %qT, as it has no non-explicit deduction guides or user-declared constructors"
  msgstr ""
  
! #: cp/pt.cc:31641
  #, fuzzy, gcc-internal-format
  msgid "cannot deduce template arguments of %qT, as it has no viable deduction guides"
  msgstr "skabelonsparameter er pÃ¥krÃ¦vet for '%T'"
  
! #: cp/pt.cc:31654
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "class template argument deduction failed:"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/pt.cc:31657
  #, fuzzy, gcc-internal-format
  #| msgid "function not considered for inlining"
  msgid "explicit deduction guides not considered for copy-initialization"
  msgstr "funktion overvejes ikke for indbygning"
  
! #: cp/pt.cc:31672
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "class template argument deduction for %qT failed: explicit deduction guide selected in copy-list-initialization"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/pt.cc:31676
  #, fuzzy, gcc-internal-format
  msgid "explicit deduction guide declared here"
  msgstr "Ugyldig erklÃ¦ring"
  
! #: cp/pt.cc:31691
  #, fuzzy, gcc-internal-format
  #| msgid "template argument %d is invalid"
  msgid "%qT may not intend to support class template argument deduction"
  msgstr "skabelonsparameter %d er ugyldig"
  
! #: cp/pt.cc:31693
  #, gcc-internal-format
  msgid "add a deduction guide to suppress this warning"
  msgstr ""
  
! #: cp/pt.cc:31816
  #, gcc-internal-format
  msgid "direct-list-initialization of %<auto%> requires exactly one element"
  msgstr ""
  
! #: cp/pt.cc:31819
  #, gcc-internal-format
  msgid "for deduction to %<std::initializer_list%>, use copy-list-initialization (i.e. add %<=%> before the %<{%>)"
  msgstr ""
  
! #: cp/pt.cc:31879
  #, fuzzy, gcc-internal-format
  #| msgid "Invalid method declaration, return type required"
  msgid "unable to deduce lambda return type from %qE"
  msgstr "Ugyldig metodeerklÃ¦ring, returtype pÃ¥krÃ¦vet"
  
! #: cp/pt.cc:31882
  #, gcc-internal-format
  msgid "unable to deduce %qT from %qE"
  msgstr ""
  
! #: cp/pt.cc:31957
  #, gcc-internal-format
  msgid "placeholder constraints not satisfied"
  msgstr ""
  
! #: cp/pt.cc:31961
  #, fuzzy, gcc-internal-format
  #| msgid "insn does not satisfy its constraints:"
  msgid "deduced initializer does not satisfy placeholder constraints"
  msgstr "instruktion tilfredsstiller ikke sine begrÃ¦nsninger:"
  
! #: cp/pt.cc:31965
  #, fuzzy, gcc-internal-format
  #| msgid "insn does not satisfy its constraints:"
  msgid "deduced return type does not satisfy placeholder constraints"
  msgstr "instruktion tilfredsstiller ikke sine begrÃ¦nsninger:"
  
! #: cp/pt.cc:31969
  #, fuzzy, gcc-internal-format
  #| msgid "insn does not satisfy its constraints:"
  msgid "deduced expression type does not satisfy placeholder constraints"
*************** msgstr "'#include <typeinfo>' er nÃ¸dven
*** 72715,72739 ****
  msgid "cannot create type information for type %qT because it involves types of variable size"
  msgstr "kan ikke oprette typeinformation for typen '%T' fordi dens stÃ¸rrelse er variabel"
  
! #: cp/rtti.cc:520
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids qualified function types"
  msgid "%<typeid%> of qualified function type %qT"
  msgstr "ISO C forbyder funktionsreturtype med modifikationer"
  
! #: cp/rtti.cc:710 cp/rtti.cc:726
  #, fuzzy, gcc-internal-format
  #| msgid "dynamic_cast of `%#D' to `%#T' can never succeed"
  msgid "%<dynamic_cast<%#T>(%#D)%> can never succeed"
  msgstr "dynamic_cast af '%#D' til '%#T' kan aldrig lykkes"
  
! #: cp/rtti.cc:738
  #, fuzzy, gcc-internal-format
  #| msgid "cannot use typeid with -fno-rtti"
  msgid "%<dynamic_cast%> not permitted with %<-fno-rtti%>"
  msgstr "kan ikke bruge typeid med -fno-rtti"
  
! #: cp/rtti.cc:820
  #, fuzzy, gcc-internal-format
  #| msgid "cannot dynamic_cast `%E' (of type `%#T') to type `%#T' (%s)"
  msgid "cannot %<dynamic_cast%> %qE (of type %q#T) to type %q#T (%s)"
--- 72817,72841 ----
  msgid "cannot create type information for type %qT because it involves types of variable size"
  msgstr "kan ikke oprette typeinformation for typen '%T' fordi dens stÃ¸rrelse er variabel"
  
! #: cp/rtti.cc:521
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C forbids qualified function types"
  msgid "%<typeid%> of qualified function type %qT"
  msgstr "ISO C forbyder funktionsreturtype med modifikationer"
  
! #: cp/rtti.cc:711 cp/rtti.cc:727
  #, fuzzy, gcc-internal-format
  #| msgid "dynamic_cast of `%#D' to `%#T' can never succeed"
  msgid "%<dynamic_cast<%#T>(%#D)%> can never succeed"
  msgstr "dynamic_cast af '%#D' til '%#T' kan aldrig lykkes"
  
! #: cp/rtti.cc:739
  #, fuzzy, gcc-internal-format
  #| msgid "cannot use typeid with -fno-rtti"
  msgid "%<dynamic_cast%> not permitted with %<-fno-rtti%>"
  msgstr "kan ikke bruge typeid med -fno-rtti"
  
! #: cp/rtti.cc:821
  #, fuzzy, gcc-internal-format
  #| msgid "cannot dynamic_cast `%E' (of type `%#T') to type `%#T' (%s)"
  msgid "cannot %<dynamic_cast%> %qE (of type %q#T) to type %q#T (%s)"
*************** msgstr ""
*** 74119,74969 ****
  msgid "subscript missing in array reference"
  msgstr "indeks mangler i tabelopslag"
  
! #: cp/typeck.cc:4084
  #, fuzzy, gcc-internal-format
  #| msgid "subscripting array declared `register'"
  msgid "subscripting array declared %<register%>"
  msgstr "indeksering af tabel som er erklÃ¦ret 'register'"
  
! #: cp/typeck.cc:4124
  #, gcc-internal-format
  msgid "subscripted value is neither array nor pointer"
  msgstr "vÃ¦rdien der er pÃ¥fÃ¸rt et indeks, er hverken en tabel eller en henvisningsvariabel"
  
! #: cp/typeck.cc:4196
  #, fuzzy, gcc-internal-format
  #| msgid "object missing in use of `%E'"
  msgid "object missing in use of %qE"
  msgstr "objekt mangler i brug af '%E'"
  
! #: cp/typeck.cc:4447
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids calling `::main' from within program"
  msgid "ISO C++ forbids calling %<::main%> from within program"
  msgstr "ISO C++ forbyder kald af '::main' inde fra programmet"
  
! #: cp/typeck.cc:4468
  #, fuzzy, gcc-internal-format
  #| msgid "must use .* or ->* to call pointer-to-member function in `%E (...)'"
  msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>"
  msgstr "brug .* eller ->* i kald af henvisning til medlemsfunktion i '%E (...)'"
  
! #: cp/typeck.cc:4485
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' cannot be used as a function"
  msgid "%qE cannot be used as a function"
  msgstr "'%E' kan ikke bruges som en funktion"
  
! #: cp/typeck.cc:4488
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' cannot be used as a function"
  msgid "%qD cannot be used as a function"
  msgstr "'%E' kan ikke bruges som en funktion"
  
! #: cp/typeck.cc:4491
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' cannot be used as a function"
  msgid "expression cannot be used as a function"
  msgstr "'%E' kan ikke bruges som en funktion"
  
! #: cp/typeck.cc:4553
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to %s `%+#D'"
  msgid "too many arguments to constructor %q#D"
  msgstr "for mange parametre til %s '%+#D'"
  
! #: cp/typeck.cc:4554
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to %s `%+#D'"
  msgid "too few arguments to constructor %q#D"
  msgstr "for fÃ¥ parametre til %s '%+#D'"
  
! #: cp/typeck.cc:4559
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to function"
  msgid "too many arguments to member function %q#D"
  msgstr "for mange parametre til funktionen"
  
! #: cp/typeck.cc:4560
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function"
  msgid "too few arguments to member function %q#D"
  msgstr "for fÃ¥ parametre til funktionen"
  
! #: cp/typeck.cc:4566
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to function"
  msgid "too many arguments to function %q#D"
  msgstr "for mange parametre til funktionen"
  
! #: cp/typeck.cc:4567
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function"
  msgid "too few arguments to function %q#D"
  msgstr "for fÃ¥ parametre til funktionen"
  
! #: cp/typeck.cc:4577
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to %s `%+#D'"
  msgid "too many arguments to method %q#D"
  msgstr "for mange parametre til %s '%+#D'"
  
! #: cp/typeck.cc:4578
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to %s `%+#D'"
  msgid "too few arguments to method %q#D"
  msgstr "for fÃ¥ parametre til %s '%+#D'"
  
! #: cp/typeck.cc:4581
  #, gcc-internal-format
  msgid "too many arguments to function"
  msgstr "for mange parametre til funktionen"
  
! #: cp/typeck.cc:4582
  #, gcc-internal-format
  msgid "too few arguments to function"
  msgstr "for fÃ¥ parametre til funktionen"
  
! #: cp/typeck.cc:4664
  #, fuzzy, gcc-internal-format
  msgid "parameter %P of %qD has incomplete type %qT"
  msgstr "parameteren '%s' er af en ufuldstÃ¦ndig type"
  
! #: cp/typeck.cc:4670
  #, fuzzy, gcc-internal-format
  msgid "parameter %P has incomplete type %qT"
  msgstr "parameteren er af en ufuldstÃ¦ndig type"
  
! #: cp/typeck.cc:4984
  #, fuzzy, gcc-internal-format
  msgid "the address %qE will never be NULL"
  msgstr "adressen af '%D' vil altid vÃ¦re 'true'"
  
! #: cp/typeck.cc:5031
  #, fuzzy, gcc-internal-format
  msgid "the address of %qD will never be NULL"
  msgstr "adressen af '%D' vil altid vÃ¦re 'true'"
  
! #: cp/typeck.cc:5046
  #, fuzzy, gcc-internal-format
  msgid "the compiler can assume that the address of %qE will never be NULL"
  msgstr "adressen af '%D' vil altid vÃ¦re 'true'"
  
! #: cp/typeck.cc:5049
  #, gcc-internal-format
  msgid "comparing the result of pointer addition %qE and NULL"
  msgstr ""
  
! #: cp/typeck.cc:5064
  #, fuzzy, gcc-internal-format
  msgid "the compiler can assume that the address of %qD will never be NULL"
  msgstr "adressen af '%D' vil altid vÃ¦re 'true'"
  
! #: cp/typeck.cc:5123
  #, fuzzy, gcc-internal-format
  #| msgid "operands to ?: have different types"
  msgid "bitwise operation between different enumeration types %qT and %qT"
  msgstr "operander til ?: har forskellige typer"
  
! #: cp/typeck.cc:5126
  #, fuzzy, gcc-internal-format
  #| msgid "%s between distinct pointer types `%T' and `%T' lacks a cast"
  msgid "bitwise operation between different enumeration types %qT and %qT is deprecated"
  msgstr "%s mellem forskellige henvisningstyper '%T' og '%T' mangler en typeomtvingelse"
  
! #: cp/typeck.cc:5132
  #, fuzzy, gcc-internal-format
  #| msgid "operands to ?: have different types"
  msgid "arithmetic between different enumeration types %qT and %qT"
  msgstr "operander til ?: har forskellige typer"
  
! #: cp/typeck.cc:5135
  #, fuzzy, gcc-internal-format
  #| msgid "%s between distinct pointer types `%T' and `%T' lacks a cast"
  msgid "arithmetic between different enumeration types %qT and %qT is deprecated"
  msgstr "%s mellem forskellige henvisningstyper '%T' og '%T' mangler en typeomtvingelse"
  
! #: cp/typeck.cc:5172
  #, fuzzy, gcc-internal-format
  #| msgid "complex arguments must have floating-point type"
  msgid "comparison of enumeration type %qT with floating-point type %qT"
  msgstr "komplekse parametre skal have kommatalstype"
  
! #: cp/typeck.cc:5175
  #, fuzzy, gcc-internal-format
  #| msgid "%s from incompatible pointer type"
  msgid "comparison of floating-point type %qT with enumeration type %qT"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: cp/typeck.cc:5178
  #, gcc-internal-format
  msgid "comparison of enumeration type %qT with floating-point type %qT is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5182
  #, fuzzy, gcc-internal-format
  msgid "comparison of floating-point type %qT with enumeration type %qT is deprecated"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/typeck.cc:5191
  #, gcc-internal-format
  msgid "arithmetic between enumeration type %qT and floating-point type %qT"
  msgstr ""
  
! #: cp/typeck.cc:5194
  #, fuzzy, gcc-internal-format
  #| msgid "incompatible types in assignment of `%T' to `%T'"
  msgid "arithmetic between floating-point type %qT and enumeration type %qT"
  msgstr "uforenelige typer i tildeling af '%T' til '%T'"
  
! #: cp/typeck.cc:5197
  #, gcc-internal-format
  msgid "arithmetic between enumeration type %qT and floating-point type %qT is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5201
  #, gcc-internal-format
  msgid "arithmetic between floating-point type %qT and enumeration type %qT is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5336 cp/typeck.cc:5348
  #, fuzzy, gcc-internal-format
  #| msgid "assuming cast to type `%T' from overloaded function"
  msgid "assuming cast to type %qT from overloaded function"
  msgstr "antager typeomtvingning til typen '%T' fra flertydig funktion"
  
! #: cp/typeck.cc:5462
  #, gcc-internal-format
  msgid "NULL used in arithmetic"
  msgstr "NULL benyttet i udregning"
  
! #: cp/typeck.cc:5929 cp/typeck.cc:5938 cp/typeck.cc:6244 cp/typeck.cc:6253
  #, gcc-internal-format
  msgid "ISO C++ forbids comparison between pointer and integer"
  msgstr "ISO C++ forbyder sammenligning mellem henvisningsvariabel og heltal"
  
! #: cp/typeck.cc:6165 cp/typeck.cc:6179
  #, gcc-internal-format
  msgid "operand types are %qT and %qT"
  msgstr ""
  
! #: cp/typeck.cc:6202
  #, gcc-internal-format
  msgid "three-way comparison of vectors"
  msgstr ""
  
! #: cp/typeck.cc:6236
  #, fuzzy, gcc-internal-format
  #| msgid "ordered comparison of pointer with integer zero"
  msgid "ordered comparison of pointer with integer zero (%qT and %qT)"
  msgstr "ordnet sammenligning af henvisning med heltallet nul"
  
! #: cp/typeck.cc:6283
  #, fuzzy, gcc-internal-format
  #| msgid "unordered comparison on non-floating point argument"
  msgid "unordered comparison on non-floating-point argument"
  msgstr "uordnet sammenligning af ikke-kommatalsparameter"
  
! #: cp/typeck.cc:6349
  #, fuzzy
  msgid "implicit conversion from %qH to %qI to match other operand of binary expression"
  msgstr "konvertering fra NaN til unsigned int"
  
! #: cp/typeck.cc:6458
  #, fuzzy, gcc-internal-format
  #| msgid "invalid operands of types `%T' and `%T' to binary `%O'"
  msgid "invalid operands of types %qT and %qT to binary %qO"
  msgstr "ugyldige operander af typerne '%T' og '%T' til binÃ¦r '%O'"
  
! #: cp/typeck.cc:6859
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids using pointer of type `void *' in subtraction"
  msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
  msgstr "ISO C++ forbyder brug af henvisning af typen 'void *' i fratrÃ¦kning"
  
! #: cp/typeck.cc:6867
  #, gcc-internal-format
  msgid "ISO C++ forbids using pointer to a function in subtraction"
  msgstr "ISO C++ forbyder brug af henvisning til funktion i fratrÃ¦kning"
  
! #: cp/typeck.cc:6875
  #, gcc-internal-format
  msgid "ISO C++ forbids using pointer to a method in subtraction"
  msgstr "ISO C++ forbyder brug af henvisning til medlemsfunktion i fratrÃ¦kning"
  
! #: cp/typeck.cc:6928
  #, gcc-internal-format
  msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
  msgstr "ugyldig brug af en henvisning til en ufuldstÃ¦ndig type i henvisningsberegning"
  
! #: cp/typeck.cc:7005
  #, fuzzy, gcc-internal-format
  #| msgid "taking address of destructor"
  msgid "taking address of constructor %qD"
  msgstr "tager adressen pÃ¥ en destruktionsfunktion"
  
! #: cp/typeck.cc:7006
  #, fuzzy, gcc-internal-format
  #| msgid "taking address of destructor"
  msgid "taking address of destructor %qD"
  msgstr "tager adressen pÃ¥ en destruktionsfunktion"
  
! #: cp/typeck.cc:7023
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of '%E' to form a pointer-to-member-function.  Use a qualified-id."
  msgid "invalid use of %qE to form a pointer-to-member-function"
  msgstr "ugyldig brug af '%E' til at danne en henvisning til medlemsfunktion; benyt et kaldenavn med klasseprÃ¦fiks"
  
! #: cp/typeck.cc:7026
  #, gcc-internal-format
  msgid "  a qualified-id is required"
  msgstr ""
  
! #: cp/typeck.cc:7033
  #, fuzzy, gcc-internal-format
  #| msgid "parenthesis around '%E' cannot be used to form a pointer-to-member-function"
  msgid "parentheses around %qE cannot be used to form a pointer-to-member-function"
  msgstr "paranteser omkring '%E' kan ikke bruges til at danne en henvisning til medlemsfunktion"
  
! #: cp/typeck.cc:7228
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function.  Say %<&%T::%D%>"
  msgstr "ISO C++ forbyder at tage adressen pÃ¥ en ikke-modificeret, ikke-statisk medlemsfunktion for at danne en henvisning til medlemsfunktion; brug '&%T::%D'"
  
! #: cp/typeck.cc:7234
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to explicit object member function"
  msgstr "ISO C++ forbyder at tage adressen pÃ¥ en ikke-modificeret, ikke-statisk medlemsfunktion for at danne en henvisning til medlemsfunktion; brug '&%T::%D'"
  
! #: cp/typeck.cc:7240
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function.  Say `&%T::%D'"
  msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function.  Say %<&%T::%D%>"
  msgstr "ISO C++ forbyder at tage adressen pÃ¥ en bundet medlemsfunktion for at danne en henvisning til medlemsfunktion; brug '&%T::%D'"
  
! #: cp/typeck.cc:7246
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function.  Say `&%T::%D'"
  msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to explicit object member function"
  msgstr "ISO C++ forbyder at tage adressen pÃ¥ en bundet medlemsfunktion for at danne en henvisning til medlemsfunktion; brug '&%T::%D'"
  
! #: cp/typeck.cc:7251
  #, fuzzy, gcc-internal-format
  #| msgid "(a pointer to member can only be formed with `&%E')"
  msgid "a pointer to explicit object member function can only be formed with %<&%T::%D%>"
  msgstr "(en henvisning til medlem kan kun dannes med '&%E')"
  
  #. Make this a permerror because we used to accept it.
! #: cp/typeck.cc:7284
  #, fuzzy, gcc-internal-format
  #| msgid "taking address of temporary"
  msgid "taking address of rvalue"
  msgstr "tager adressen pÃ¥ midlertidig variabel"
  
! #: cp/typeck.cc:7301
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids taking address of function `::main'"
  msgid "ISO C++ forbids taking address of function %<::main%>"
  msgstr "ISO C++ forbyder at tage adressen pÃ¥ funktionen '::main'"
  
! #: cp/typeck.cc:7359
  #, fuzzy, gcc-internal-format
  #| msgid "cannot create pointer to reference member `%D'"
  msgid "cannot create pointer to reference member %qD"
  msgstr "kan ikke oprette henvisning til reference medlemmet '%D'"
  
! #: cp/typeck.cc:7394 cp/typeck.cc:7976 rust/backend/rust-tree.cc:4701
  #, fuzzy, gcc-internal-format
  #| msgid "cannot take address of bit-field `%s'"
  msgid "attempt to take address of bit-field"
  msgstr "kan ikke finde adressen af bitfeltet '%s'"
  
! #: cp/typeck.cc:7561
  #, fuzzy, gcc-internal-format
  #| msgid "taking address of temporary"
  msgid "%<~%> on an expression of type %<bool%>"
  msgstr "tager adressen pÃ¥ midlertidig variabel"
  
! #: cp/typeck.cc:7562
  #, gcc-internal-format
  msgid "did you mean to use logical not (%<!%>)?"
  msgstr ""
  
! #: cp/typeck.cc:7695
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids %sing an enum"
  msgid "ISO C++ forbids incrementing an enum"
  msgstr "ISO C++ forbyder %s af en enum"
  
! #: cp/typeck.cc:7696
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids %sing an enum"
  msgid "ISO C++ forbids decrementing an enum"
  msgstr "ISO C++ forbyder %s af en enum"
  
! #: cp/typeck.cc:7712
  #, fuzzy, gcc-internal-format
  #| msgid "cannot %s a pointer to incomplete type `%T'"
  msgid "cannot increment a pointer to incomplete type %qT"
  msgstr "kan ikke %s en henvisning til en ufuldstÃ¦ndig type '%T'"
  
! #: cp/typeck.cc:7714
  #, fuzzy, gcc-internal-format
  #| msgid "cannot %s a pointer to incomplete type `%T'"
  msgid "cannot decrement a pointer to incomplete type %qT"
  msgstr "kan ikke %s en henvisning til en ufuldstÃ¦ndig type '%T'"
  
! #: cp/typeck.cc:7726
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids %sing a pointer of type `%T'"
  msgid "ISO C++ forbids incrementing a pointer of type %qT"
  msgstr "ISO C++ forbyder %s af en henvisning af typen '%T'"
  
! #: cp/typeck.cc:7728
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids %sing a pointer of type `%T'"
  msgid "ISO C++ forbids decrementing a pointer of type %qT"
  msgstr "ISO C++ forbyder %s af en henvisning af typen '%T'"
  
! #: cp/typeck.cc:7768
  #, fuzzy, gcc-internal-format
  msgid "%qs expression of %<volatile%>-qualified type is deprecated"
  msgstr "ISO C forbyder brug af typeomtvingningsudtryk som venstrevÃ¦rdier"
  
! #: cp/typeck.cc:7781
  #, gcc-internal-format
  msgid "use of an operand of type %qT in %<operator--%> is forbidden"
  msgstr ""
  
! #: cp/typeck.cc:7791
  #, gcc-internal-format
  msgid "use of an operand of type %qT in %<operator++%> is forbidden in C++17"
  msgstr ""
  
! #: cp/typeck.cc:7799
  #, gcc-internal-format
  msgid "use of an operand of type %qT in %<operator++%> is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:7988 rust/backend/rust-tree.cc:4713
  #, fuzzy, gcc-internal-format
  #| msgid "cannot take the address of `this', which is an rvalue expression"
  msgid "cannot take the address of %<this%>, which is an rvalue expression"
  msgstr "kan ikke tage adressen af 'this' som er et hÃ¸jrevÃ¦rdiudtryk"
  
! #: cp/typeck.cc:8010 d/d-codegen.cc:759 rust/backend/rust-tree.cc:4732
  #, fuzzy, gcc-internal-format
  #| msgid "address of register variable `%s' requested"
  msgid "address of explicit register variable %qD requested"
  msgstr "forespÃ¸rgsel efter adressen af registervariablen '%s'"
  
! #: cp/typeck.cc:8015 rust/backend/rust-tree.cc:4739
  #, fuzzy, gcc-internal-format
  #| msgid "address requested for `%D', which is declared `register'"
  msgid "address requested for %qD, which is declared %<register%>"
  msgstr "adresse forespurgt for '%D' som er erklÃ¦ret 'register'"
  
! #: cp/typeck.cc:8086
  #, gcc-internal-format
  msgid "list-initializer for non-class type must not be parenthesized"
  msgstr ""
  
! #: cp/typeck.cc:8098
  #, fuzzy, gcc-internal-format
  msgid "expression list treated as compound expression in initializer"
  msgstr "klargÃ¸ringsliste behandlet som et sammensat udtryk"
  
! #: cp/typeck.cc:8102
  #, fuzzy, gcc-internal-format
  msgid "expression list treated as compound expression in mem-initializer"
  msgstr "klargÃ¸ringsliste behandlet som et sammensat udtryk"
  
! #: cp/typeck.cc:8106
  #, fuzzy, gcc-internal-format
  msgid "expression list treated as compound expression in functional cast"
  msgstr "klargÃ¸ringsliste behandlet som et sammensat udtryk"
  
! #: cp/typeck.cc:8144
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "%s expression list treated as compound expression"
  msgstr "klargÃ¸ringsliste behandlet som et sammensat udtryk"
  
! #: cp/typeck.cc:8247
  #, gcc-internal-format
  msgid "no context to resolve type of %qE"
  msgstr ""
  
! #: cp/typeck.cc:8284
  #, fuzzy, gcc-internal-format
  msgid "cast from type %qT to type %qT casts away qualifiers"
  msgstr "static_cast fra typen '%T' til typen '%T' fjerner konstanthed"
  
! #: cp/typeck.cc:8290
  #, fuzzy, gcc-internal-format
  msgid "%<static_cast%> from type %qT to type %qT casts away qualifiers"
  msgstr "static_cast fra typen '%T' til typen '%T' fjerner konstanthed"
  
! #: cp/typeck.cc:8297
  #, fuzzy, gcc-internal-format
  #| msgid "reinterpret_cast from `%T' to `%T' casts away const (or volatile)"
  msgid "%<reinterpret_cast%> from type %qT to type %qT casts away qualifiers"
  msgstr "reinterpret_cast fra '%T' til '%T' fjerner const (eller volatile)"
  
! #: cp/typeck.cc:8323
  #, fuzzy, gcc-internal-format
  msgid "useless cast to type %q#T"
  msgstr "skabelonsparameter '%T' benytter lokal type '%T'"
  
! #: cp/typeck.cc:8337
  #, fuzzy, gcc-internal-format
  #| msgid "type qualifiers ignored on function return type"
  msgid "type qualifiers ignored on cast result type"
  msgstr "typemodifikationer ignoreret i funktionsreturtypen"
  
! #: cp/typeck.cc:8786
  #, fuzzy, gcc-internal-format
  #| msgid "invalid static_cast from type `%T' to type `%T'"
  msgid "invalid %<static_cast%> from type %qT to type %qT"
  msgstr "ugyldig static_cast fra typen '%T' til typen '%T'"
  
! #: cp/typeck.cc:8792 cp/typeck.cc:8798 cp/typeck.cc:10522
  #, fuzzy, gcc-internal-format
  #| msgid "return type `%#T' is incomplete"
  msgid "class type %qT is incomplete"
  msgstr "returtype '%#T' er ufuldstÃ¦ndig"
  
! #: cp/typeck.cc:8826
  #, fuzzy
  #| msgid "converting from `%T' to `%T'"
  msgid "converting from %qH to %qI"
  msgstr "konvertering fra '%T' til '%T'"
  
! #: cp/typeck.cc:8901
  #, fuzzy, gcc-internal-format
  #| msgid "invalid reinterpret_cast of an rvalue expression of type `%T' to type `%T'"
  msgid "invalid cast of a prvalue expression of type %qT to type %qT"
  msgstr "ugyldig reinterpret_cast af et hÃ¸jrevÃ¦rdiudtryk fra typen '%T' til typen '%T'"
  
! #: cp/typeck.cc:8971
  #, fuzzy
  #| msgid "reinterpret_cast from `%T' to `%T' loses precision"
  msgid "cast from %qH to %qI loses precision"
  msgstr "reinterpret_cast fra '%T' til '%T' mister prÃ¦cision"
  
! #: cp/typeck.cc:8996
  msgid "cast between incompatible function types from %qH to %qI"
  msgstr ""
  
! #: cp/typeck.cc:9007
  #, fuzzy
  msgid "cast between incompatible pointer to member types from %qH to %qI"
  msgstr "%s mellem forskellige henvisningstyper '%T' og '%T' mangler en typeomtvingelse"
  
! #: cp/typeck.cc:9028 cp/typeck.cc:9218
  #, fuzzy
  #| msgid "cast from `%T' to `%T' increases required alignment of target type"
  msgid "cast from %qH to %qI increases required alignment of target type"
  msgstr "typeomtvingning fra '%T' til '%T' forÃ¸ger den pÃ¥krÃ¦vede justering af mÃ¥lets type"
  
! #: cp/typeck.cc:9045
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids casting between pointer-to-function and pointer-to-object"
  msgid "casting between pointer-to-function and pointer-to-object is conditionally-supported"
  msgstr "ISO C++ forbyder sammenligninger mellem henvisning til funktion og henvisning til objekt"
  
! #: cp/typeck.cc:9059
  #, fuzzy, gcc-internal-format
  #| msgid "invalid const_cast from type `%T' to type `%T'"
  msgid "invalid cast from type %qT to type %qT"
  msgstr "ugyldig const_cast fra typen '%T' til typen '%T'"
  
! #: cp/typeck.cc:9132
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of const_cast with type `%T', which is not a pointer, reference, nor a pointer-to-data-member type"
  msgid "invalid use of %<const_cast%> with type %qT, which is not a pointer, reference, nor a pointer-to-data-member type"
  msgstr "ugyldig brug af const_cast med typen '%T' som ikke er en henvisnings-, reference- eller en henvisning til datamedlem-type"
  
! #: cp/typeck.cc:9141
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of const_cast with type `%T', which is a pointer or reference to a function type"
  msgid "invalid use of %<const_cast%> with type %qT, which is a pointer or reference to a function type"
  msgstr "ugyldig brug af const_cast med typen '%T' som er en henvisning eller reference til funktion"
  
! #: cp/typeck.cc:9183
  #, fuzzy, gcc-internal-format
  #| msgid "invalid const_cast of an rvalue of type `%T' to type `%T'"
  msgid "invalid %<const_cast%> of an rvalue of type %qT to type %qT"
  msgstr "ugyldig const_cast af en hÃ¸jrevÃ¦rdi fra typen '%T' til typen '%T'"
  
! #: cp/typeck.cc:9253
  #, fuzzy, gcc-internal-format
  #| msgid "invalid const_cast from type `%T' to type `%T'"
  msgid "invalid %<const_cast%> from type %qT to type %qT"
  msgstr "ugyldig const_cast fra typen '%T' til typen '%T'"
  
! #: cp/typeck.cc:9354 cp/typeck.cc:9363
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids casting to an array type `%T'"
  msgid "ISO C++ forbids casting to an array type %qT"
  msgstr "ISO C++ forbyder omtvingelse af typen til en tabeltype '%T'"
  
! #: cp/typeck.cc:9372
  #, fuzzy, gcc-internal-format
  #| msgid "invalid cast to function type `%T'"
  msgid "invalid cast to function type %qT"
  msgstr "ugyldig omtvingelse til funktionstypen '%T'"
  
! #: cp/typeck.cc:9488
  #, fuzzy, gcc-internal-format
  #| msgid "cannot convert `%E' from type `%T' to type `%T'"
  msgid "moving %qE of type %qT to itself"
  msgstr "kan ikke konvertere '%E' fra typen '%T' til typen '%T'"
  
! #: cp/typeck.cc:9753
  #, fuzzy, gcc-internal-format
  #| msgid "  in evaluation of `%Q(%#T, %#T)'"
  msgid "  in evaluation of %<%Q(%#T, %#T)%>"
  msgstr "  i evaluering af '%Q(%#T, %#T)'"
  
! #: cp/typeck.cc:9814
  #, fuzzy, gcc-internal-format
  #| msgid "nonconstant array index in initializer"
  msgid "assigning to an array from an initializer list"
  msgstr "tabelindekset i startvÃ¦rdien er ikke en konstant"
  
! #: cp/typeck.cc:9841
  #, fuzzy, gcc-internal-format
  #| msgid "incompatible types in assignment of `%T' to `%T'"
  msgid "incompatible types in assignment of %qT to %qT"
  msgstr "uforenelige typer i tildeling af '%T' til '%T'"
  
! #: cp/typeck.cc:9857
  #, fuzzy, gcc-internal-format
  #| msgid "bad array initializer"
  msgid "array used as initializer"
  msgstr "ugyldig tildeling af startvÃ¦rdi til tabel"
  
! #: cp/typeck.cc:9859
  #, fuzzy, gcc-internal-format
  #| msgid "invalid lvalue in assignment"
  msgid "invalid array assignment"
  msgstr "ugyldig venstrevÃ¦rdi i tildeling"
  
! #: cp/typeck.cc:9995
  #, gcc-internal-format
  msgid "   in pointer to member function conversion"
  msgstr "   i henvisning til medlemsfunktion-omdannelse"
  
! #: cp/typeck.cc:10009
  #, fuzzy, gcc-internal-format
  msgid "pointer to member conversion via virtual base %qT"
  msgstr "henvisning til medlem-omdannelse via den virtuelle stamklasse '%T' af '%T'"
  
! #: cp/typeck.cc:10057 cp/typeck.cc:10076
  #, gcc-internal-format
  msgid "   in pointer to member conversion"
  msgstr "   i henvisning til medlem-omdannelse"
  
! #: cp/typeck.cc:10157
  #, fuzzy, gcc-internal-format
  #| msgid "invalid conversion to type `%T' from type `%T'"
  msgid "invalid conversion to type %qT from type %qT"
  msgstr "ugyldig omdannelse til typen '%T' fra typen '%T'"
  
! #: cp/typeck.cc:10481
  #, fuzzy
  #| msgid "cannot convert `%T' to `%T' for argument `%P' to `%D'"
  msgid "cannot convert %qH to %qI in default argument"
  msgstr "kan ikke konvertere '%T' til '%T' for parameter '%P' til '%D'"
  
! #: cp/typeck.cc:10486
  #, fuzzy
  #| msgid "cannot convert `%T' to `%T' in %s"
  msgid "cannot convert %qH to %qI in argument passing"
  msgstr "kan ikke konvertere '%T' til '%T' i %s"
  
! #: cp/typeck.cc:10495
  #, fuzzy
  #| msgid "cannot convert `%T' to `%T' in %s"
  msgid "cannot convert %qH to %qI in initialization"
  msgstr "kan ikke konvertere '%T' til '%T' i %s"
  
! #: cp/typeck.cc:10499
  #, fuzzy
  #| msgid "cannot convert `%T' to `%T' in %s"
  msgid "cannot convert %qH to %qI in return"
  msgstr "kan ikke konvertere '%T' til '%T' i %s"
  
! #: cp/typeck.cc:10504
  #, fuzzy
  #| msgid "cannot convert `%T' to `%T' in %s"
  msgid "cannot convert %qH to %qI in assignment"
  msgstr "kan ikke konvertere '%T' til '%T' i %s"
  
! #: cp/typeck.cc:10540
  #, fuzzy, gcc-internal-format
  #| msgid "Warn about functions which might be candidates for format attributes"
  msgid "parameter %qP of %qD might be a candidate for a format attribute"
  msgstr "Advar om funktioner som kan vÃ¦re kandidater til formateringsegenskaber"
  
! #: cp/typeck.cc:10544
  #, fuzzy, gcc-internal-format
  #| msgid "function might be possible candidate for `%s' format attribute"
  msgid "parameter might be a candidate for a format attribute"
  msgstr "funktion er en mulig kandidat til '%s'-formateringsegenskab"
  
! #: cp/typeck.cc:10549
  #, fuzzy, gcc-internal-format
  #| msgid "Warn about functions which might be candidates for format attributes"
  msgid "target of conversion might be a candidate for a format attribute"
  msgstr "Advar om funktioner som kan vÃ¦re kandidater til formateringsegenskaber"
  
! #: cp/typeck.cc:10554
  #, fuzzy, gcc-internal-format
  #| msgid "function might be possible candidate for `%s' format attribute"
  msgid "target of initialization might be a candidate for a format attribute"
  msgstr "funktion er en mulig kandidat til '%s'-formateringsegenskab"
  
! #: cp/typeck.cc:10564
  #, fuzzy, gcc-internal-format
  #| msgid "function might be possible candidate for `%s' format attribute"
  msgid "left-hand side of assignment might be a candidate for a format attribute"
  msgstr "funktion er en mulig kandidat til '%s'-formateringsegenskab"
  
! #: cp/typeck.cc:10650
  #, fuzzy, gcc-internal-format
  #| msgid "in passing argument %P of `%+D'"
  msgid "in passing argument %P of %qD"
  msgstr "i overbringelse af parameter %P af '%+D'"
  
! #: cp/typeck.cc:10734
  #, gcc-internal-format
  msgid "returning reference to temporary"
  msgstr "returnerer reference til midlertidig variabel"
  
! #: cp/typeck.cc:10737
  #, fuzzy, gcc-internal-format
  #| msgid "returning reference to temporary"
  msgid "returning pointer to temporary"
  msgstr "returnerer reference til midlertidig variabel"
  
! #: cp/typeck.cc:10740
  #, gcc-internal-format
  msgid "returning temporary %<initializer_list%> does not extend the lifetime of the underlying array"
  msgstr ""
  
! #: cp/typeck.cc:10775
  #, fuzzy, gcc-internal-format
  #| msgid "reference to local variable `%D' returned"
  msgid "reference to local variable %qD returned"
  msgstr "reference til den lokale variabel '%D' returneret"
  
! #: cp/typeck.cc:10779
  #, gcc-internal-format
  msgid "returning local %<initializer_list%> variable %qD does not extend the lifetime of the underlying array"
  msgstr ""
  
! #: cp/typeck.cc:10785
  #, fuzzy, gcc-internal-format
  #| msgid "address of local variable `%D' returned"
  msgid "address of label %qD returned"
  msgstr "adresse af den lokale variabel '%D' returneret"
  
! #: cp/typeck.cc:10789
  #, fuzzy, gcc-internal-format
  #| msgid "address of local variable `%D' returned"
  msgid "address of local variable %qD returned"
  msgstr "adresse af den lokale variabel '%D' returneret"
  
! #: cp/typeck.cc:11049
  #, gcc-internal-format
  msgid "moving a temporary object prevents copy elision"
  msgstr ""
  
! #: cp/typeck.cc:11050 cp/typeck.cc:11066 cp/typeck.cc:11091 cp/typeck.cc:11128
  #, gcc-internal-format
  msgid "remove %<std::move%> call"
  msgstr ""
  
! #: cp/typeck.cc:11064
  #, gcc-internal-format
  msgid "moving a local object in a return statement prevents copy elision"
  msgstr ""
  
! #: cp/typeck.cc:11090 cp/typeck.cc:11125
  #, fuzzy, gcc-internal-format
  #| msgid "too many 'l' suffixes in integer constant"
  msgid "redundant move in return statement"
  msgstr "for mange 'l'-endelser i heltalskonstant"
  
! #: cp/typeck.cc:11127
  #, fuzzy, gcc-internal-format
  #| msgid "too many 'l' suffixes in integer constant"
  msgid "redundant move in initialization"
  msgstr "for mange 'l'-endelser i heltalskonstant"
  
! #: cp/typeck.cc:11165
  #, gcc-internal-format
  msgid "returning a value from a destructor"
  msgstr "returnerer en vÃ¦rdi fra en destruktionsfunktion"
  
  #. If a return statement appears in a handler of the
  #. function-try-block of a constructor, the program is ill-formed.
! #: cp/typeck.cc:11177
  #, gcc-internal-format
  msgid "cannot return from a handler of a function-try-block of a constructor"
  msgstr "kan ikke returnere fra en hÃ¥ndtering af en funktions-try-blok i en konstruktionsfunktion"
  
  #. You can't return a value from a constructor.
! #: cp/typeck.cc:11180
  #, gcc-internal-format
  msgid "returning a value from a constructor"
  msgstr "returnerer en vÃ¦rdi fra en konstruktionsfunktion"
  
! #: cp/typeck.cc:11220 cp/typeck.cc:11266
  #, fuzzy, gcc-internal-format
  msgid "return-statement with no value, in function returning %qT"
  msgstr "'return' uden nogen vÃ¦rdi i en funktion der ikke returnerer void"
  
! #: cp/typeck.cc:11228
  #, fuzzy, gcc-internal-format
  #| msgid "missing initializer"
  msgid "returning initializer list"
  msgstr "manglende startvÃ¦rdi"
  
! #: cp/typeck.cc:11247
  #, fuzzy, gcc-internal-format
  msgid "inconsistent types %qT and %qT deduced for lambda return type"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/typeck.cc:11250
  #, gcc-internal-format
  msgid "inconsistent deduction for auto return type: %qT and then %qT"
  msgstr ""
  
! #: cp/typeck.cc:11287
  #, fuzzy, gcc-internal-format
  msgid "return-statement with a value, in function returning %qT"
  msgstr "'return' uden nogen vÃ¦rdi i en funktion der ikke returnerer void"
  
! #: cp/typeck.cc:11316
  #, fuzzy, gcc-internal-format
  #| msgid "`operator new' must not return NULL unless it is declared `throw()' (or -fcheck-new is in effect)"
  msgid "%<operator new%> must not return NULL unless it is declared %<throw()%> (or %<-fcheck-new%> is in effect)"
  msgstr "'operator new' mÃ¥ ikke returnere NULL medmindre den er erklÃ¦ret 'throw()' (eller -fcheck-new er benyttet)"
  
! #: cp/typeck.cc:11405
  #, fuzzy, gcc-internal-format
  #| msgid "invalid covariant return type for `%#D'"
  msgid "not eliding copy on return from %qD"
  msgstr "ugyldig kovariant returneringstype for '%#D'"
  
! #: cp/typeck.cc:11417
  #, gcc-internal-format
  msgid "not eliding copy on return in %qD"
  msgstr ""
  
! #: cp/typeck.cc:11997
  #, fuzzy, gcc-internal-format
  #| msgid "invalid %%s value"
  msgid "using rvalue as lvalue"
--- 74221,75071 ----
  msgid "subscript missing in array reference"
  msgstr "indeks mangler i tabelopslag"
  
! #: cp/typeck.cc:4200
  #, fuzzy, gcc-internal-format
  #| msgid "subscripting array declared `register'"
  msgid "subscripting array declared %<register%>"
  msgstr "indeksering af tabel som er erklÃ¦ret 'register'"
  
! #: cp/typeck.cc:4240
  #, gcc-internal-format
  msgid "subscripted value is neither array nor pointer"
  msgstr "vÃ¦rdien der er pÃ¥fÃ¸rt et indeks, er hverken en tabel eller en henvisningsvariabel"
  
! #: cp/typeck.cc:4312
  #, fuzzy, gcc-internal-format
  #| msgid "object missing in use of `%E'"
  msgid "object missing in use of %qE"
  msgstr "objekt mangler i brug af '%E'"
  
! #: cp/typeck.cc:4563
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids calling `::main' from within program"
  msgid "ISO C++ forbids calling %<::main%> from within program"
  msgstr "ISO C++ forbyder kald af '::main' inde fra programmet"
  
! #: cp/typeck.cc:4584
  #, fuzzy, gcc-internal-format
  #| msgid "must use .* or ->* to call pointer-to-member function in `%E (...)'"
  msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>"
  msgstr "brug .* eller ->* i kald af henvisning til medlemsfunktion i '%E (...)'"
  
! #: cp/typeck.cc:4601
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' cannot be used as a function"
  msgid "%qE cannot be used as a function"
  msgstr "'%E' kan ikke bruges som en funktion"
  
! #: cp/typeck.cc:4604
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' cannot be used as a function"
  msgid "%qD cannot be used as a function"
  msgstr "'%E' kan ikke bruges som en funktion"
  
! #: cp/typeck.cc:4607
  #, fuzzy, gcc-internal-format
  #| msgid "`%E' cannot be used as a function"
  msgid "expression cannot be used as a function"
  msgstr "'%E' kan ikke bruges som en funktion"
  
! #: cp/typeck.cc:4669
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to %s `%+#D'"
  msgid "too many arguments to constructor %q#D"
  msgstr "for mange parametre til %s '%+#D'"
  
! #: cp/typeck.cc:4670
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to %s `%+#D'"
  msgid "too few arguments to constructor %q#D"
  msgstr "for fÃ¥ parametre til %s '%+#D'"
  
! #: cp/typeck.cc:4675
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to function"
  msgid "too many arguments to member function %q#D"
  msgstr "for mange parametre til funktionen"
  
! #: cp/typeck.cc:4676
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function"
  msgid "too few arguments to member function %q#D"
  msgstr "for fÃ¥ parametre til funktionen"
  
! #: cp/typeck.cc:4682
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to function"
  msgid "too many arguments to function %q#D"
  msgstr "for mange parametre til funktionen"
  
! #: cp/typeck.cc:4683
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to function"
  msgid "too few arguments to function %q#D"
  msgstr "for fÃ¥ parametre til funktionen"
  
! #: cp/typeck.cc:4693
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to %s `%+#D'"
  msgid "too many arguments to method %q#D"
  msgstr "for mange parametre til %s '%+#D'"
  
! #: cp/typeck.cc:4694
  #, fuzzy, gcc-internal-format
  #| msgid "too few arguments to %s `%+#D'"
  msgid "too few arguments to method %q#D"
  msgstr "for fÃ¥ parametre til %s '%+#D'"
  
! #: cp/typeck.cc:4697
  #, gcc-internal-format
  msgid "too many arguments to function"
  msgstr "for mange parametre til funktionen"
  
! #: cp/typeck.cc:4698
  #, gcc-internal-format
  msgid "too few arguments to function"
  msgstr "for fÃ¥ parametre til funktionen"
  
! #: cp/typeck.cc:4780
  #, fuzzy, gcc-internal-format
  msgid "parameter %P of %qD has incomplete type %qT"
  msgstr "parameteren '%s' er af en ufuldstÃ¦ndig type"
  
! #: cp/typeck.cc:4786
  #, fuzzy, gcc-internal-format
  msgid "parameter %P has incomplete type %qT"
  msgstr "parameteren er af en ufuldstÃ¦ndig type"
  
! #: cp/typeck.cc:5100
  #, fuzzy, gcc-internal-format
  msgid "the address %qE will never be NULL"
  msgstr "adressen af '%D' vil altid vÃ¦re 'true'"
  
! #: cp/typeck.cc:5147
  #, fuzzy, gcc-internal-format
  msgid "the address of %qD will never be NULL"
  msgstr "adressen af '%D' vil altid vÃ¦re 'true'"
  
! #: cp/typeck.cc:5162
  #, fuzzy, gcc-internal-format
  msgid "the compiler can assume that the address of %qE will never be NULL"
  msgstr "adressen af '%D' vil altid vÃ¦re 'true'"
  
! #: cp/typeck.cc:5165
  #, gcc-internal-format
  msgid "comparing the result of pointer addition %qE and NULL"
  msgstr ""
  
! #: cp/typeck.cc:5180
  #, fuzzy, gcc-internal-format
  msgid "the compiler can assume that the address of %qD will never be NULL"
  msgstr "adressen af '%D' vil altid vÃ¦re 'true'"
  
! #: cp/typeck.cc:5239
  #, fuzzy, gcc-internal-format
  #| msgid "operands to ?: have different types"
  msgid "bitwise operation between different enumeration types %qT and %qT"
  msgstr "operander til ?: har forskellige typer"
  
! #: cp/typeck.cc:5242
  #, fuzzy, gcc-internal-format
  #| msgid "%s between distinct pointer types `%T' and `%T' lacks a cast"
  msgid "bitwise operation between different enumeration types %qT and %qT is deprecated"
  msgstr "%s mellem forskellige henvisningstyper '%T' og '%T' mangler en typeomtvingelse"
  
! #: cp/typeck.cc:5248
  #, fuzzy, gcc-internal-format
  #| msgid "operands to ?: have different types"
  msgid "arithmetic between different enumeration types %qT and %qT"
  msgstr "operander til ?: har forskellige typer"
  
! #: cp/typeck.cc:5251
  #, fuzzy, gcc-internal-format
  #| msgid "%s between distinct pointer types `%T' and `%T' lacks a cast"
  msgid "arithmetic between different enumeration types %qT and %qT is deprecated"
  msgstr "%s mellem forskellige henvisningstyper '%T' og '%T' mangler en typeomtvingelse"
  
! #: cp/typeck.cc:5288
  #, fuzzy, gcc-internal-format
  #| msgid "complex arguments must have floating-point type"
  msgid "comparison of enumeration type %qT with floating-point type %qT"
  msgstr "komplekse parametre skal have kommatalstype"
  
! #: cp/typeck.cc:5291
  #, fuzzy, gcc-internal-format
  #| msgid "%s from incompatible pointer type"
  msgid "comparison of floating-point type %qT with enumeration type %qT"
  msgstr "%s fra en henvisningstype der ikke er forenelig med mÃ¥lets"
  
! #: cp/typeck.cc:5294
  #, gcc-internal-format
  msgid "comparison of enumeration type %qT with floating-point type %qT is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5298
  #, fuzzy, gcc-internal-format
  msgid "comparison of floating-point type %qT with enumeration type %qT is deprecated"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: cp/typeck.cc:5307
  #, gcc-internal-format
  msgid "arithmetic between enumeration type %qT and floating-point type %qT"
  msgstr ""
  
! #: cp/typeck.cc:5310
  #, fuzzy, gcc-internal-format
  #| msgid "incompatible types in assignment of `%T' to `%T'"
  msgid "arithmetic between floating-point type %qT and enumeration type %qT"
  msgstr "uforenelige typer i tildeling af '%T' til '%T'"
  
! #: cp/typeck.cc:5313
  #, gcc-internal-format
  msgid "arithmetic between enumeration type %qT and floating-point type %qT is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5317
  #, gcc-internal-format
  msgid "arithmetic between floating-point type %qT and enumeration type %qT is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5452 cp/typeck.cc:5464
  #, fuzzy, gcc-internal-format
  #| msgid "assuming cast to type `%T' from overloaded function"
  msgid "assuming cast to type %qT from overloaded function"
  msgstr "antager typeomtvingning til typen '%T' fra flertydig funktion"
  
! #: cp/typeck.cc:5578
  #, gcc-internal-format
  msgid "NULL used in arithmetic"
  msgstr "NULL benyttet i udregning"
  
! #: cp/typeck.cc:6045 cp/typeck.cc:6054 cp/typeck.cc:6360 cp/typeck.cc:6369
  #, gcc-internal-format
  msgid "ISO C++ forbids comparison between pointer and integer"
  msgstr "ISO C++ forbyder sammenligning mellem henvisningsvariabel og heltal"
  
! #: cp/typeck.cc:6281 cp/typeck.cc:6295
  #, gcc-internal-format
  msgid "operand types are %qT and %qT"
  msgstr ""
  
! #: cp/typeck.cc:6318
  #, gcc-internal-format
  msgid "three-way comparison of vectors"
  msgstr ""
  
! #: cp/typeck.cc:6352
  #, fuzzy, gcc-internal-format
  #| msgid "ordered comparison of pointer with integer zero"
  msgid "ordered comparison of pointer with integer zero (%qT and %qT)"
  msgstr "ordnet sammenligning af henvisning med heltallet nul"
  
! #: cp/typeck.cc:6399
  #, fuzzy, gcc-internal-format
  #| msgid "unordered comparison on non-floating point argument"
  msgid "unordered comparison on non-floating-point argument"
  msgstr "uordnet sammenligning af ikke-kommatalsparameter"
  
! #: cp/typeck.cc:6465
  #, fuzzy
  msgid "implicit conversion from %qH to %qI to match other operand of binary expression"
  msgstr "konvertering fra NaN til unsigned int"
  
! #: cp/typeck.cc:6574
  #, fuzzy, gcc-internal-format
  #| msgid "invalid operands of types `%T' and `%T' to binary `%O'"
  msgid "invalid operands of types %qT and %qT to binary %qO"
  msgstr "ugyldige operander af typerne '%T' og '%T' til binÃ¦r '%O'"
  
! #: cp/typeck.cc:6975
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids using pointer of type `void *' in subtraction"
  msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
  msgstr "ISO C++ forbyder brug af henvisning af typen 'void *' i fratrÃ¦kning"
  
! #: cp/typeck.cc:6983
  #, gcc-internal-format
  msgid "ISO C++ forbids using pointer to a function in subtraction"
  msgstr "ISO C++ forbyder brug af henvisning til funktion i fratrÃ¦kning"
  
! #: cp/typeck.cc:6991
  #, gcc-internal-format
  msgid "ISO C++ forbids using pointer to a method in subtraction"
  msgstr "ISO C++ forbyder brug af henvisning til medlemsfunktion i fratrÃ¦kning"
  
! #: cp/typeck.cc:7044
  #, gcc-internal-format
  msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
  msgstr "ugyldig brug af en henvisning til en ufuldstÃ¦ndig type i henvisningsberegning"
  
! #: cp/typeck.cc:7121
  #, fuzzy, gcc-internal-format
  #| msgid "taking address of destructor"
  msgid "taking address of constructor %qD"
  msgstr "tager adressen pÃ¥ en destruktionsfunktion"
  
! #: cp/typeck.cc:7122
  #, fuzzy, gcc-internal-format
  #| msgid "taking address of destructor"
  msgid "taking address of destructor %qD"
  msgstr "tager adressen pÃ¥ en destruktionsfunktion"
  
! #: cp/typeck.cc:7139
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of '%E' to form a pointer-to-member-function.  Use a qualified-id."
  msgid "invalid use of %qE to form a pointer-to-member-function"
  msgstr "ugyldig brug af '%E' til at danne en henvisning til medlemsfunktion; benyt et kaldenavn med klasseprÃ¦fiks"
  
! #: cp/typeck.cc:7142
  #, gcc-internal-format
  msgid "  a qualified-id is required"
  msgstr ""
  
! #: cp/typeck.cc:7149
  #, fuzzy, gcc-internal-format
  #| msgid "parenthesis around '%E' cannot be used to form a pointer-to-member-function"
  msgid "parentheses around %qE cannot be used to form a pointer-to-member-function"
  msgstr "paranteser omkring '%E' kan ikke bruges til at danne en henvisning til medlemsfunktion"
  
! #: cp/typeck.cc:7344
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function.  Say %<&%T::%D%>"
  msgstr "ISO C++ forbyder at tage adressen pÃ¥ en ikke-modificeret, ikke-statisk medlemsfunktion for at danne en henvisning til medlemsfunktion; brug '&%T::%D'"
  
! #: cp/typeck.cc:7350
  #, fuzzy, gcc-internal-format
  msgid "ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to explicit object member function"
  msgstr "ISO C++ forbyder at tage adressen pÃ¥ en ikke-modificeret, ikke-statisk medlemsfunktion for at danne en henvisning til medlemsfunktion; brug '&%T::%D'"
  
! #: cp/typeck.cc:7356
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function.  Say `&%T::%D'"
  msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function.  Say %<&%T::%D%>"
  msgstr "ISO C++ forbyder at tage adressen pÃ¥ en bundet medlemsfunktion for at danne en henvisning til medlemsfunktion; brug '&%T::%D'"
  
! #: cp/typeck.cc:7362
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function.  Say `&%T::%D'"
  msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to explicit object member function"
  msgstr "ISO C++ forbyder at tage adressen pÃ¥ en bundet medlemsfunktion for at danne en henvisning til medlemsfunktion; brug '&%T::%D'"
  
! #: cp/typeck.cc:7367
  #, fuzzy, gcc-internal-format
  #| msgid "(a pointer to member can only be formed with `&%E')"
  msgid "a pointer to explicit object member function can only be formed with %<&%T::%D%>"
  msgstr "(en henvisning til medlem kan kun dannes med '&%E')"
  
  #. Make this a permerror because we used to accept it.
! #: cp/typeck.cc:7400
  #, fuzzy, gcc-internal-format
  #| msgid "taking address of temporary"
  msgid "taking address of rvalue"
  msgstr "tager adressen pÃ¥ midlertidig variabel"
  
! #: cp/typeck.cc:7417
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids taking address of function `::main'"
  msgid "ISO C++ forbids taking address of function %<::main%>"
  msgstr "ISO C++ forbyder at tage adressen pÃ¥ funktionen '::main'"
  
! #: cp/typeck.cc:7475
  #, fuzzy, gcc-internal-format
  #| msgid "cannot create pointer to reference member `%D'"
  msgid "cannot create pointer to reference member %qD"
  msgstr "kan ikke oprette henvisning til reference medlemmet '%D'"
  
! #: cp/typeck.cc:7510 cp/typeck.cc:8092 rust/backend/rust-tree.cc:4701
  #, fuzzy, gcc-internal-format
  #| msgid "cannot take address of bit-field `%s'"
  msgid "attempt to take address of bit-field"
  msgstr "kan ikke finde adressen af bitfeltet '%s'"
  
! #: cp/typeck.cc:7677
  #, fuzzy, gcc-internal-format
  #| msgid "taking address of temporary"
  msgid "%<~%> on an expression of type %<bool%>"
  msgstr "tager adressen pÃ¥ midlertidig variabel"
  
! #: cp/typeck.cc:7678
  #, gcc-internal-format
  msgid "did you mean to use logical not (%<!%>)?"
  msgstr ""
  
! #: cp/typeck.cc:7811
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids %sing an enum"
  msgid "ISO C++ forbids incrementing an enum"
  msgstr "ISO C++ forbyder %s af en enum"
  
! #: cp/typeck.cc:7812
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids %sing an enum"
  msgid "ISO C++ forbids decrementing an enum"
  msgstr "ISO C++ forbyder %s af en enum"
  
! #: cp/typeck.cc:7828
  #, fuzzy, gcc-internal-format
  #| msgid "cannot %s a pointer to incomplete type `%T'"
  msgid "cannot increment a pointer to incomplete type %qT"
  msgstr "kan ikke %s en henvisning til en ufuldstÃ¦ndig type '%T'"
  
! #: cp/typeck.cc:7830
  #, fuzzy, gcc-internal-format
  #| msgid "cannot %s a pointer to incomplete type `%T'"
  msgid "cannot decrement a pointer to incomplete type %qT"
  msgstr "kan ikke %s en henvisning til en ufuldstÃ¦ndig type '%T'"
  
! #: cp/typeck.cc:7842
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids %sing a pointer of type `%T'"
  msgid "ISO C++ forbids incrementing a pointer of type %qT"
  msgstr "ISO C++ forbyder %s af en henvisning af typen '%T'"
  
! #: cp/typeck.cc:7844
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids %sing a pointer of type `%T'"
  msgid "ISO C++ forbids decrementing a pointer of type %qT"
  msgstr "ISO C++ forbyder %s af en henvisning af typen '%T'"
  
! #: cp/typeck.cc:7884
  #, fuzzy, gcc-internal-format
  msgid "%qs expression of %<volatile%>-qualified type is deprecated"
  msgstr "ISO C forbyder brug af typeomtvingningsudtryk som venstrevÃ¦rdier"
  
! #: cp/typeck.cc:7897
  #, gcc-internal-format
  msgid "use of an operand of type %qT in %<operator--%> is forbidden"
  msgstr ""
  
! #: cp/typeck.cc:7907
  #, gcc-internal-format
  msgid "use of an operand of type %qT in %<operator++%> is forbidden in C++17"
  msgstr ""
  
! #: cp/typeck.cc:7915
  #, gcc-internal-format
  msgid "use of an operand of type %qT in %<operator++%> is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:8104 rust/backend/rust-tree.cc:4713
  #, fuzzy, gcc-internal-format
  #| msgid "cannot take the address of `this', which is an rvalue expression"
  msgid "cannot take the address of %<this%>, which is an rvalue expression"
  msgstr "kan ikke tage adressen af 'this' som er et hÃ¸jrevÃ¦rdiudtryk"
  
! #: cp/typeck.cc:8126 d/d-codegen.cc:759 rust/backend/rust-tree.cc:4732
  #, fuzzy, gcc-internal-format
  #| msgid "address of register variable `%s' requested"
  msgid "address of explicit register variable %qD requested"
  msgstr "forespÃ¸rgsel efter adressen af registervariablen '%s'"
  
! #: cp/typeck.cc:8131 rust/backend/rust-tree.cc:4739
  #, fuzzy, gcc-internal-format
  #| msgid "address requested for `%D', which is declared `register'"
  msgid "address requested for %qD, which is declared %<register%>"
  msgstr "adresse forespurgt for '%D' som er erklÃ¦ret 'register'"
  
! #: cp/typeck.cc:8202
  #, gcc-internal-format
  msgid "list-initializer for non-class type must not be parenthesized"
  msgstr ""
  
! #: cp/typeck.cc:8214
  #, fuzzy, gcc-internal-format
  msgid "expression list treated as compound expression in initializer"
  msgstr "klargÃ¸ringsliste behandlet som et sammensat udtryk"
  
! #: cp/typeck.cc:8218
  #, fuzzy, gcc-internal-format
  msgid "expression list treated as compound expression in mem-initializer"
  msgstr "klargÃ¸ringsliste behandlet som et sammensat udtryk"
  
! #: cp/typeck.cc:8222
  #, fuzzy, gcc-internal-format
  msgid "expression list treated as compound expression in functional cast"
  msgstr "klargÃ¸ringsliste behandlet som et sammensat udtryk"
  
! #: cp/typeck.cc:8260
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "%s expression list treated as compound expression"
  msgstr "klargÃ¸ringsliste behandlet som et sammensat udtryk"
  
! #: cp/typeck.cc:8363
  #, gcc-internal-format
  msgid "no context to resolve type of %qE"
  msgstr ""
  
! #: cp/typeck.cc:8400
  #, fuzzy, gcc-internal-format
  msgid "cast from type %qT to type %qT casts away qualifiers"
  msgstr "static_cast fra typen '%T' til typen '%T' fjerner konstanthed"
  
! #: cp/typeck.cc:8406
  #, fuzzy, gcc-internal-format
  msgid "%<static_cast%> from type %qT to type %qT casts away qualifiers"
  msgstr "static_cast fra typen '%T' til typen '%T' fjerner konstanthed"
  
! #: cp/typeck.cc:8413
  #, fuzzy, gcc-internal-format
  #| msgid "reinterpret_cast from `%T' to `%T' casts away const (or volatile)"
  msgid "%<reinterpret_cast%> from type %qT to type %qT casts away qualifiers"
  msgstr "reinterpret_cast fra '%T' til '%T' fjerner const (eller volatile)"
  
! #: cp/typeck.cc:8439
  #, fuzzy, gcc-internal-format
  msgid "useless cast to type %q#T"
  msgstr "skabelonsparameter '%T' benytter lokal type '%T'"
  
! #: cp/typeck.cc:8453
  #, fuzzy, gcc-internal-format
  #| msgid "type qualifiers ignored on function return type"
  msgid "type qualifiers ignored on cast result type"
  msgstr "typemodifikationer ignoreret i funktionsreturtypen"
  
! #: cp/typeck.cc:8902
  #, fuzzy, gcc-internal-format
  #| msgid "invalid static_cast from type `%T' to type `%T'"
  msgid "invalid %<static_cast%> from type %qT to type %qT"
  msgstr "ugyldig static_cast fra typen '%T' til typen '%T'"
  
! #: cp/typeck.cc:8908 cp/typeck.cc:8914 cp/typeck.cc:10638
  #, fuzzy, gcc-internal-format
  #| msgid "return type `%#T' is incomplete"
  msgid "class type %qT is incomplete"
  msgstr "returtype '%#T' er ufuldstÃ¦ndig"
  
! #: cp/typeck.cc:8942
  #, fuzzy
  #| msgid "converting from `%T' to `%T'"
  msgid "converting from %qH to %qI"
  msgstr "konvertering fra '%T' til '%T'"
  
! #: cp/typeck.cc:9017
  #, fuzzy, gcc-internal-format
  #| msgid "invalid reinterpret_cast of an rvalue expression of type `%T' to type `%T'"
  msgid "invalid cast of a prvalue expression of type %qT to type %qT"
  msgstr "ugyldig reinterpret_cast af et hÃ¸jrevÃ¦rdiudtryk fra typen '%T' til typen '%T'"
  
! #: cp/typeck.cc:9087
  #, fuzzy
  #| msgid "reinterpret_cast from `%T' to `%T' loses precision"
  msgid "cast from %qH to %qI loses precision"
  msgstr "reinterpret_cast fra '%T' til '%T' mister prÃ¦cision"
  
! #: cp/typeck.cc:9112
  msgid "cast between incompatible function types from %qH to %qI"
  msgstr ""
  
! #: cp/typeck.cc:9123
  #, fuzzy
  msgid "cast between incompatible pointer to member types from %qH to %qI"
  msgstr "%s mellem forskellige henvisningstyper '%T' og '%T' mangler en typeomtvingelse"
  
! #: cp/typeck.cc:9144 cp/typeck.cc:9334
  #, fuzzy
  #| msgid "cast from `%T' to `%T' increases required alignment of target type"
  msgid "cast from %qH to %qI increases required alignment of target type"
  msgstr "typeomtvingning fra '%T' til '%T' forÃ¸ger den pÃ¥krÃ¦vede justering af mÃ¥lets type"
  
! #: cp/typeck.cc:9161
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids casting between pointer-to-function and pointer-to-object"
  msgid "casting between pointer-to-function and pointer-to-object is conditionally-supported"
  msgstr "ISO C++ forbyder sammenligninger mellem henvisning til funktion og henvisning til objekt"
  
! #: cp/typeck.cc:9175
  #, fuzzy, gcc-internal-format
  #| msgid "invalid const_cast from type `%T' to type `%T'"
  msgid "invalid cast from type %qT to type %qT"
  msgstr "ugyldig const_cast fra typen '%T' til typen '%T'"
  
! #: cp/typeck.cc:9248
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of const_cast with type `%T', which is not a pointer, reference, nor a pointer-to-data-member type"
  msgid "invalid use of %<const_cast%> with type %qT, which is not a pointer, reference, nor a pointer-to-data-member type"
  msgstr "ugyldig brug af const_cast med typen '%T' som ikke er en henvisnings-, reference- eller en henvisning til datamedlem-type"
  
! #: cp/typeck.cc:9257
  #, fuzzy, gcc-internal-format
  #| msgid "invalid use of const_cast with type `%T', which is a pointer or reference to a function type"
  msgid "invalid use of %<const_cast%> with type %qT, which is a pointer or reference to a function type"
  msgstr "ugyldig brug af const_cast med typen '%T' som er en henvisning eller reference til funktion"
  
! #: cp/typeck.cc:9299
  #, fuzzy, gcc-internal-format
  #| msgid "invalid const_cast of an rvalue of type `%T' to type `%T'"
  msgid "invalid %<const_cast%> of an rvalue of type %qT to type %qT"
  msgstr "ugyldig const_cast af en hÃ¸jrevÃ¦rdi fra typen '%T' til typen '%T'"
  
! #: cp/typeck.cc:9369
  #, fuzzy, gcc-internal-format
  #| msgid "invalid const_cast from type `%T' to type `%T'"
  msgid "invalid %<const_cast%> from type %qT to type %qT"
  msgstr "ugyldig const_cast fra typen '%T' til typen '%T'"
  
! #: cp/typeck.cc:9470 cp/typeck.cc:9479
  #, fuzzy, gcc-internal-format
  #| msgid "ISO C++ forbids casting to an array type `%T'"
  msgid "ISO C++ forbids casting to an array type %qT"
  msgstr "ISO C++ forbyder omtvingelse af typen til en tabeltype '%T'"
  
! #: cp/typeck.cc:9488
  #, fuzzy, gcc-internal-format
  #| msgid "invalid cast to function type `%T'"
  msgid "invalid cast to function type %qT"
  msgstr "ugyldig omtvingelse til funktionstypen '%T'"
  
! #: cp/typeck.cc:9604
  #, fuzzy, gcc-internal-format
  #| msgid "cannot convert `%E' from type `%T' to type `%T'"
  msgid "moving %qE of type %qT to itself"
  msgstr "kan ikke konvertere '%E' fra typen '%T' til typen '%T'"
  
! #: cp/typeck.cc:9869
  #, fuzzy, gcc-internal-format
  #| msgid "  in evaluation of `%Q(%#T, %#T)'"
  msgid "  in evaluation of %<%Q(%#T, %#T)%>"
  msgstr "  i evaluering af '%Q(%#T, %#T)'"
  
! #: cp/typeck.cc:9930
  #, fuzzy, gcc-internal-format
  #| msgid "nonconstant array index in initializer"
  msgid "assigning to an array from an initializer list"
  msgstr "tabelindekset i startvÃ¦rdien er ikke en konstant"
  
! #: cp/typeck.cc:9957
  #, fuzzy, gcc-internal-format
  #| msgid "incompatible types in assignment of `%T' to `%T'"
  msgid "incompatible types in assignment of %qT to %qT"
  msgstr "uforenelige typer i tildeling af '%T' til '%T'"
  
! #: cp/typeck.cc:9973
  #, fuzzy, gcc-internal-format
  #| msgid "bad array initializer"
  msgid "array used as initializer"
  msgstr "ugyldig tildeling af startvÃ¦rdi til tabel"
  
! #: cp/typeck.cc:9975
  #, fuzzy, gcc-internal-format
  #| msgid "invalid lvalue in assignment"
  msgid "invalid array assignment"
  msgstr "ugyldig venstrevÃ¦rdi i tildeling"
  
! #: cp/typeck.cc:10111
  #, gcc-internal-format
  msgid "   in pointer to member function conversion"
  msgstr "   i henvisning til medlemsfunktion-omdannelse"
  
! #: cp/typeck.cc:10125
  #, fuzzy, gcc-internal-format
  msgid "pointer to member conversion via virtual base %qT"
  msgstr "henvisning til medlem-omdannelse via den virtuelle stamklasse '%T' af '%T'"
  
! #: cp/typeck.cc:10173 cp/typeck.cc:10192
  #, gcc-internal-format
  msgid "   in pointer to member conversion"
  msgstr "   i henvisning til medlem-omdannelse"
  
! #: cp/typeck.cc:10273
  #, fuzzy, gcc-internal-format
  #| msgid "invalid conversion to type `%T' from type `%T'"
  msgid "invalid conversion to type %qT from type %qT"
  msgstr "ugyldig omdannelse til typen '%T' fra typen '%T'"
  
! #: cp/typeck.cc:10597
  #, fuzzy
  #| msgid "cannot convert `%T' to `%T' for argument `%P' to `%D'"
  msgid "cannot convert %qH to %qI in default argument"
  msgstr "kan ikke konvertere '%T' til '%T' for parameter '%P' til '%D'"
  
! #: cp/typeck.cc:10602
  #, fuzzy
  #| msgid "cannot convert `%T' to `%T' in %s"
  msgid "cannot convert %qH to %qI in argument passing"
  msgstr "kan ikke konvertere '%T' til '%T' i %s"
  
! #: cp/typeck.cc:10611
  #, fuzzy
  #| msgid "cannot convert `%T' to `%T' in %s"
  msgid "cannot convert %qH to %qI in initialization"
  msgstr "kan ikke konvertere '%T' til '%T' i %s"
  
! #: cp/typeck.cc:10615
  #, fuzzy
  #| msgid "cannot convert `%T' to `%T' in %s"
  msgid "cannot convert %qH to %qI in return"
  msgstr "kan ikke konvertere '%T' til '%T' i %s"
  
! #: cp/typeck.cc:10620
  #, fuzzy
  #| msgid "cannot convert `%T' to `%T' in %s"
  msgid "cannot convert %qH to %qI in assignment"
  msgstr "kan ikke konvertere '%T' til '%T' i %s"
  
! #: cp/typeck.cc:10656
  #, fuzzy, gcc-internal-format
  #| msgid "Warn about functions which might be candidates for format attributes"
  msgid "parameter %qP of %qD might be a candidate for a format attribute"
  msgstr "Advar om funktioner som kan vÃ¦re kandidater til formateringsegenskaber"
  
! #: cp/typeck.cc:10660
  #, fuzzy, gcc-internal-format
  #| msgid "function might be possible candidate for `%s' format attribute"
  msgid "parameter might be a candidate for a format attribute"
  msgstr "funktion er en mulig kandidat til '%s'-formateringsegenskab"
  
! #: cp/typeck.cc:10665
  #, fuzzy, gcc-internal-format
  #| msgid "Warn about functions which might be candidates for format attributes"
  msgid "target of conversion might be a candidate for a format attribute"
  msgstr "Advar om funktioner som kan vÃ¦re kandidater til formateringsegenskaber"
  
! #: cp/typeck.cc:10670
  #, fuzzy, gcc-internal-format
  #| msgid "function might be possible candidate for `%s' format attribute"
  msgid "target of initialization might be a candidate for a format attribute"
  msgstr "funktion er en mulig kandidat til '%s'-formateringsegenskab"
  
! #: cp/typeck.cc:10680
  #, fuzzy, gcc-internal-format
  #| msgid "function might be possible candidate for `%s' format attribute"
  msgid "left-hand side of assignment might be a candidate for a format attribute"
  msgstr "funktion er en mulig kandidat til '%s'-formateringsegenskab"
  
! #: cp/typeck.cc:10766
  #, fuzzy, gcc-internal-format
  #| msgid "in passing argument %P of `%+D'"
  msgid "in passing argument %P of %qD"
  msgstr "i overbringelse af parameter %P af '%+D'"
  
! #: cp/typeck.cc:10850
  #, gcc-internal-format
  msgid "returning reference to temporary"
  msgstr "returnerer reference til midlertidig variabel"
  
! #: cp/typeck.cc:10853
  #, fuzzy, gcc-internal-format
  #| msgid "returning reference to temporary"
  msgid "returning pointer to temporary"
  msgstr "returnerer reference til midlertidig variabel"
  
! #: cp/typeck.cc:10856
  #, gcc-internal-format
  msgid "returning temporary %<initializer_list%> does not extend the lifetime of the underlying array"
  msgstr ""
  
! #: cp/typeck.cc:10891
  #, fuzzy, gcc-internal-format
  #| msgid "reference to local variable `%D' returned"
  msgid "reference to local variable %qD returned"
  msgstr "reference til den lokale variabel '%D' returneret"
  
! #: cp/typeck.cc:10895
  #, gcc-internal-format
  msgid "returning local %<initializer_list%> variable %qD does not extend the lifetime of the underlying array"
  msgstr ""
  
! #: cp/typeck.cc:10901
  #, fuzzy, gcc-internal-format
  #| msgid "address of local variable `%D' returned"
  msgid "address of label %qD returned"
  msgstr "adresse af den lokale variabel '%D' returneret"
  
! #: cp/typeck.cc:10905
  #, fuzzy, gcc-internal-format
  #| msgid "address of local variable `%D' returned"
  msgid "address of local variable %qD returned"
  msgstr "adresse af den lokale variabel '%D' returneret"
  
! #: cp/typeck.cc:11165
  #, gcc-internal-format
  msgid "moving a temporary object prevents copy elision"
  msgstr ""
  
! #: cp/typeck.cc:11166 cp/typeck.cc:11182 cp/typeck.cc:11207 cp/typeck.cc:11244
  #, gcc-internal-format
  msgid "remove %<std::move%> call"
  msgstr ""
  
! #: cp/typeck.cc:11180
  #, gcc-internal-format
  msgid "moving a local object in a return statement prevents copy elision"
  msgstr ""
  
! #: cp/typeck.cc:11206 cp/typeck.cc:11241
  #, fuzzy, gcc-internal-format
  #| msgid "too many 'l' suffixes in integer constant"
  msgid "redundant move in return statement"
  msgstr "for mange 'l'-endelser i heltalskonstant"
  
! #: cp/typeck.cc:11243
  #, fuzzy, gcc-internal-format
  #| msgid "too many 'l' suffixes in integer constant"
  msgid "redundant move in initialization"
  msgstr "for mange 'l'-endelser i heltalskonstant"
  
! #: cp/typeck.cc:11281
  #, gcc-internal-format
  msgid "returning a value from a destructor"
  msgstr "returnerer en vÃ¦rdi fra en destruktionsfunktion"
  
  #. If a return statement appears in a handler of the
  #. function-try-block of a constructor, the program is ill-formed.
! #: cp/typeck.cc:11293
  #, gcc-internal-format
  msgid "cannot return from a handler of a function-try-block of a constructor"
  msgstr "kan ikke returnere fra en hÃ¥ndtering af en funktions-try-blok i en konstruktionsfunktion"
  
  #. You can't return a value from a constructor.
! #: cp/typeck.cc:11296
  #, gcc-internal-format
  msgid "returning a value from a constructor"
  msgstr "returnerer en vÃ¦rdi fra en konstruktionsfunktion"
  
! #: cp/typeck.cc:11336 cp/typeck.cc:11382
  #, fuzzy, gcc-internal-format
  msgid "return-statement with no value, in function returning %qT"
  msgstr "'return' uden nogen vÃ¦rdi i en funktion der ikke returnerer void"
  
! #: cp/typeck.cc:11344
  #, fuzzy, gcc-internal-format
  #| msgid "missing initializer"
  msgid "returning initializer list"
  msgstr "manglende startvÃ¦rdi"
  
! #: cp/typeck.cc:11363
  #, fuzzy, gcc-internal-format
  msgid "inconsistent types %qT and %qT deduced for lambda return type"
  msgstr "new kan ikke bruges pÃ¥ en referencetype"
  
! #: cp/typeck.cc:11366
  #, gcc-internal-format
  msgid "inconsistent deduction for auto return type: %qT and then %qT"
  msgstr ""
  
! #: cp/typeck.cc:11403
  #, fuzzy, gcc-internal-format
  msgid "return-statement with a value, in function returning %qT"
  msgstr "'return' uden nogen vÃ¦rdi i en funktion der ikke returnerer void"
  
! #: cp/typeck.cc:11432
  #, fuzzy, gcc-internal-format
  #| msgid "`operator new' must not return NULL unless it is declared `throw()' (or -fcheck-new is in effect)"
  msgid "%<operator new%> must not return NULL unless it is declared %<throw()%> (or %<-fcheck-new%> is in effect)"
  msgstr "'operator new' mÃ¥ ikke returnere NULL medmindre den er erklÃ¦ret 'throw()' (eller -fcheck-new er benyttet)"
  
! #: cp/typeck.cc:11521
  #, fuzzy, gcc-internal-format
  #| msgid "invalid covariant return type for `%#D'"
  msgid "not eliding copy on return from %qD"
  msgstr "ugyldig kovariant returneringstype for '%#D'"
  
! #: cp/typeck.cc:11533
  #, gcc-internal-format
  msgid "not eliding copy on return in %qD"
  msgstr ""
  
! #: cp/typeck.cc:12119
  #, fuzzy, gcc-internal-format
  #| msgid "invalid %%s value"
  msgid "using rvalue as lvalue"
*************** msgid "Array reference at %C cannot have
*** 76211,76219 ****
  msgstr ""
  
  #: fortran/array.cc:335 fortran/array.cc:805 fortran/check.cc:3813
! #: fortran/check.cc:6539 fortran/check.cc:6582 fortran/check.cc:6624
! #: fortran/check.cc:6651 fortran/check.cc:6914 fortran/match.cc:1859
! #: fortran/match.cc:3656 fortran/match.cc:3998 fortran/match.cc:4194
  #: fortran/simplify.cc:3099 fortran/simplify.cc:3129 fortran/simplify.cc:6736
  #: fortran/simplify.cc:9043
  #, gcc-internal-format
--- 76313,76321 ----
  msgstr ""
  
  #: fortran/array.cc:335 fortran/array.cc:805 fortran/check.cc:3813
! #: fortran/check.cc:6610 fortran/check.cc:6653 fortran/check.cc:6695
! #: fortran/check.cc:6722 fortran/check.cc:6985 fortran/match.cc:1859
! #: fortran/match.cc:3657 fortran/match.cc:3999 fortran/match.cc:4195
  #: fortran/simplify.cc:3099 fortran/simplify.cc:3129 fortran/simplify.cc:6736
  #: fortran/simplify.cc:9043
  #, gcc-internal-format
*************** msgstr ""
*** 76379,76385 ****
  msgid "Array constructor including type specification at %C"
  msgstr ""
  
! #: fortran/array.cc:1372 fortran/match.cc:4630
  #, gcc-internal-format, gfc-internal-format
  msgid "Type-spec at %L cannot contain a deferred type parameter"
  msgstr ""
--- 76481,76487 ----
  msgid "Array constructor including type specification at %C"
  msgstr ""
  
! #: fortran/array.cc:1372 fortran/match.cc:4631
  #, gcc-internal-format, gfc-internal-format
  msgid "Type-spec at %L cannot contain a deferred type parameter"
  msgstr ""
*************** msgstr "datamedlem '%D' kan ikke vÃ¦re e
*** 76501,76507 ****
  msgid "Arguments of %qs at %L and %L cannot both be BOZ literal constants"
  msgstr "1. parameter til __builtin_spe_predicate skal vÃ¦re en konstant"
  
! #: fortran/check.cc:123 fortran/resolve.cc:12344
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid suffix on integer constant"
  msgid "Invalid use of BOZ literal constant at %L"
--- 76603,76609 ----
  msgid "Arguments of %qs at %L and %L cannot both be BOZ literal constants"
  msgstr "1. parameter til __builtin_spe_predicate skal vÃ¦re en konstant"
  
! #: fortran/check.cc:123 fortran/resolve.cc:12334
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid suffix on integer constant"
  msgid "Invalid use of BOZ literal constant at %L"
*************** msgstr ""
*** 76587,76593 ****
  msgid "%qs argument of %qs intrinsic at %L must be INTEGER or PROCEDURE"
  msgstr ""
  
! #: fortran/check.cc:742 fortran/check.cc:8216
  #, fuzzy, gcc-internal-format
  #| msgid "argument 1 of __builtin_spe_predicate must be a constant"
  msgid "%qs argument of %qs intrinsic at %L must be a constant"
--- 76689,76695 ----
  msgid "%qs argument of %qs intrinsic at %L must be INTEGER or PROCEDURE"
  msgstr ""
  
! #: fortran/check.cc:742 fortran/check.cc:8287
  #, fuzzy, gcc-internal-format
  #| msgid "argument 1 of __builtin_spe_predicate must be a constant"
  msgid "%qs argument of %qs intrinsic at %L must be a constant"
*************** msgstr "RETURN-sÃ¦tning ved %0 ugyldig i
*** 76991,76998 ****
  
  #: fortran/check.cc:2727 fortran/check.cc:3454 fortran/check.cc:3537
  #: fortran/check.cc:3799 fortran/check.cc:3847 fortran/check.cc:5515
! #: fortran/check.cc:5639 fortran/check.cc:5717 fortran/check.cc:6900
! #: fortran/check.cc:7031
  #, gcc-internal-format
  msgid "%qs intrinsic with KIND argument at %L"
  msgstr ""
--- 77093,77100 ----
  
  #: fortran/check.cc:2727 fortran/check.cc:3454 fortran/check.cc:3537
  #: fortran/check.cc:3799 fortran/check.cc:3847 fortran/check.cc:5515
! #: fortran/check.cc:5639 fortran/check.cc:5717 fortran/check.cc:6971
! #: fortran/check.cc:7102
  #, gcc-internal-format
  msgid "%qs intrinsic with KIND argument at %L"
  msgstr ""
*************** msgstr "parameter til egenskaben '%s' er
*** 77185,77191 ****
  msgid "%qs argument of %qs intrinsic at %L must be INTEGER or UNSIGNED"
  msgstr "1. parameter til __builtin_spe_predicate skal vÃ¦re en konstant"
  
! #: fortran/check.cc:4577 fortran/check.cc:8136 fortran/check.cc:8151
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must be INTEGER"
  msgstr ""
--- 77287,77293 ----
  msgid "%qs argument of %qs intrinsic at %L must be INTEGER or UNSIGNED"
  msgstr "1. parameter til __builtin_spe_predicate skal vÃ¦re en konstant"
  
! #: fortran/check.cc:4577 fortran/check.cc:8207 fortran/check.cc:8222
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must be INTEGER"
  msgstr ""
*************** msgstr ""
*** 77241,77247 ****
  msgid "%qs argument of %qs intrinsic at %L shall appear only if %qs is of type REAL and %qs is of type INTEGER or UNSIGNED"
  msgstr "parameter til egenskaben '%s' er stÃ¸rre end %d"
  
! #: fortran/check.cc:4984 fortran/check.cc:6978
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must provide at least as many elements as there are .TRUE. values in %qs (%ld/%d)"
  msgstr ""
--- 77343,77349 ----
  msgid "%qs argument of %qs intrinsic at %L shall appear only if %qs is of type REAL and %qs is of type INTEGER or UNSIGNED"
  msgstr "parameter til egenskaben '%s' er stÃ¸rre end %d"
  
! #: fortran/check.cc:4984 fortran/check.cc:7049
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must provide at least as many elements as there are .TRUE. values in %qs (%ld/%d)"
  msgstr ""
*************** msgstr ""
*** 77364,77375 ****
  msgid "%<source%> argument of %<shape%> intrinsic at %L must not be an assumed size array"
  msgstr ""
  
! #: fortran/check.cc:5735 fortran/check.cc:8196
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L shall not be a procedure"
  msgstr ""
  
! #: fortran/check.cc:5751 fortran/check.cc:5897 fortran/check.cc:8188
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L shall not be TYPE(*)"
  msgstr ""
--- 77466,77477 ----
  msgid "%<source%> argument of %<shape%> intrinsic at %L must not be an assumed size array"
  msgstr ""
  
! #: fortran/check.cc:5735 fortran/check.cc:8267
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L shall not be a procedure"
  msgstr ""
  
! #: fortran/check.cc:5751 fortran/check.cc:5897 fortran/check.cc:8259
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L shall not be TYPE(*)"
  msgstr ""
*************** msgstr ""
*** 77389,77734 ****
  msgid "%qs argument of %qs intrinsic at %L must be an interoperable data entity: %s"
  msgstr ""
  
! #: fortran/check.cc:5927
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument C_PTR_1 at %L to C_ASSOCIATED shall have the type TYPE(C_PTR) or TYPE(C_FUNPTR)"
  msgstr ""
  
! #: fortran/check.cc:5941
  #, gcc-internal-format, gfc-internal-format
! msgid "Argument C_PTR_2 at %L to C_ASSOCIATED shall have the same type as C_PTR_1: %s instead of %s"
  msgstr ""
  
! #: fortran/check.cc:5965
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument CPTR at %L to C_F_POINTER shall have the type TYPE(C_PTR)"
  msgstr ""
  
! #: fortran/check.cc:5977
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument FPTR at %L to C_F_POINTER must be a pointer"
  msgstr ""
  
! #: fortran/check.cc:5984
  #, gcc-internal-format, gfc-internal-format
  msgid "FPTR argument at %L to C_F_POINTER shall not be polymorphic"
  msgstr ""
  
! #: fortran/check.cc:5991
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument FPTR at %L to C_F_POINTER shall not be coindexed"
  msgstr ""
  
! #: fortran/check.cc:5998
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected SHAPE argument at %L to C_F_POINTER with scalar FPTR"
  msgstr ""
  
! #: fortran/check.cc:6004
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected SHAPE argument to C_F_POINTER with array FPTR at %L"
  msgstr ""
  
! #: fortran/check.cc:6023
  #, gcc-internal-format, gfc-internal-format
  msgid "SHAPE argument at %L to C_F_POINTER must have the same size as the RANK of FPTR"
  msgstr ""
  
! #: fortran/check.cc:6033
  #, gcc-internal-format, gfc-internal-format
  msgid "Polymorphic FPTR at %L to C_F_POINTER"
  msgstr ""
  
! #: fortran/check.cc:6039
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "`%D' is not a function template"
  msgid "FPTR argument to C_F_POINTER at %L is a function returning a pointer"
  msgstr "'%D' er ikke en funktionsskabelon"
  
! #: fortran/check.cc:6046
  #, gcc-internal-format, gfc-internal-format
  msgid "Noninteroperable array FPTR argument to C_F_POINTER at %L: %s"
  msgstr ""
  
! #: fortran/check.cc:6062
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument CPTR at %L to C_F_PROCPOINTER shall have the type TYPE(C_FUNPTR)"
  msgstr ""
  
! #: fortran/check.cc:6074
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument FPTR at %L to C_F_PROCPOINTER shall be a procedure pointer"
  msgstr ""
  
! #: fortran/check.cc:6081
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument FPTR at %L to C_F_PROCPOINTER shall not be coindexed"
  msgstr ""
  
! #: fortran/check.cc:6087
  #, gcc-internal-format, gfc-internal-format
  msgid "Noninteroperable procedure pointer at %L to C_F_PROCPOINTER"
  msgstr ""
  
! #: fortran/check.cc:6101
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_FUNLOC shall not be coindexed"
  msgstr ""
  
! #: fortran/check.cc:6113
  #, gcc-internal-format
  msgid "Function result %qs at %L is invalid as X argument to C_FUNLOC"
  msgstr ""
  
! #: fortran/check.cc:6120
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_FUNLOC shall be a procedure or a procedure pointer"
  msgstr ""
  
! #: fortran/check.cc:6126
  #, gcc-internal-format, gfc-internal-format
  msgid "Noninteroperable procedure at %L to C_FUNLOC"
  msgstr ""
  
! #: fortran/check.cc:6140
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_LOC shall not be coindexed"
  msgstr ""
  
! #: fortran/check.cc:6146
  #, gcc-internal-format, gfc-internal-format
  msgid "X argument at %L to C_LOC shall not be polymorphic"
  msgstr ""
  
! #: fortran/check.cc:6157
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_LOC shall have either the POINTER or the TARGET attribute"
  msgstr ""
  
! #: fortran/check.cc:6165
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_LOC shall be not be a zero-sized string"
  msgstr ""
  
! #: fortran/check.cc:6174
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument at %L to C_LOC shall not be polymorphic"
  msgstr ""
  
! #: fortran/check.cc:6181
  #, gcc-internal-format, gfc-internal-format
  msgid "Noninteroperable array at %L as argument to C_LOC: %s"
  msgstr ""
  
! #: fortran/check.cc:6192
  #, gcc-internal-format, gfc-internal-format
  msgid "Array of interoperable type at %L to C_LOC which is nonallocatable and neither assumed size nor explicit size"
  msgstr ""
  
! #: fortran/check.cc:6197
  #, gcc-internal-format, gfc-internal-format
  msgid "Array section at %L to C_LOC"
  msgstr ""
  
! #: fortran/check.cc:6225
  #, gcc-internal-format, gfc-internal-format
  msgid "non double precision REAL argument to %s intrinsic at %L"
  msgstr ""
  
! #: fortran/check.cc:6241
  #, fuzzy, gcc-internal-format
  #| msgid "argument to `%s' attribute larger than %d"
  msgid "%qs argument of %qs intrinsic at %L must be less than rank %d"
  msgstr "parameter til egenskaben '%s' er stÃ¸rre end %d"
  
! #: fortran/check.cc:6260
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L is not a valid dimension index"
  msgstr ""
  
! #: fortran/check.cc:6284
  #, fuzzy, gcc-internal-format
  #| msgid "argument to `%s' attribute larger than %d"
  msgid "%qs argument of %qs intrinsic at %L must have length at least 1"
  msgstr "parameter til egenskaben '%s' er stÃ¸rre end %d"
  
! #: fortran/check.cc:6548
  #, gcc-internal-format, gfc-internal-format
  msgid "%s argument to IMAGE_INDEX must be a rank one array at %L"
  msgstr ""
  
! #: fortran/check.cc:6555
  #, gcc-internal-format, gfc-internal-format
  msgid "Type of %s argument of IMAGE_INDEX at %L shall be INTEGER"
  msgstr ""
  
! #: fortran/check.cc:6564
  #, gcc-internal-format, gfc-internal-format
  msgid "The number of array elements of the SUB argument to IMAGE_INDEX at %L shall be %d (corank) not %d"
  msgstr ""
  
! #: fortran/check.cc:6597
  #, gcc-internal-format, gfc-internal-format
  msgid "DISTANCE= argument to NUM_IMAGES at %L"
  msgstr ""
  
! #: fortran/check.cc:6610
  #, gcc-internal-format, gfc-internal-format
  msgid "FAILED= argument to NUM_IMAGES at %L"
  msgstr ""
  
! #: fortran/check.cc:6634
  #, gcc-internal-format, gfc-internal-format
  msgid "TEAM argument at %L to the intrinsic TEAM_NUMBER shall be of type TEAM_TYPE"
  msgstr ""
  
! #: fortran/check.cc:6660
  #, gcc-internal-format, gfc-internal-format
  msgid "DIM argument without COARRAY argument not allowed for THIS_IMAGE intrinsic at %L"
  msgstr ""
  
! #: fortran/check.cc:6667
  #, gcc-internal-format, gfc-internal-format
  msgid "The DISTANCE argument may not be specified together with the COARRAY or DIM argument in intrinsic at %L"
  msgstr ""
  
! #: fortran/check.cc:6678
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected DIM argument with noncoarray argument at %L"
  msgstr ""
  
! #: fortran/check.cc:6696
  #, gcc-internal-format, gfc-internal-format
  msgid "DISTANCE= argument to THIS_IMAGE at %L"
  msgstr ""
  
! #: fortran/check.cc:6754
  #, gcc-internal-format
  msgid "%<MOLD%> argument of %<TRANSFER%> intrinsic at %L is an array and shall not have storage size 0 when %<SOURCE%> argument has size greater than 0"
  msgstr ""
  
! #: fortran/check.cc:6806
  #, fuzzy, gcc-internal-format
  #| msgid "argument 1 of __builtin_spe_predicate must be a constant"
  msgid "%<SOURCE%> argument of %<TRANSFER%> intrinsic at %L must not be a %s"
  msgstr "1. parameter til __builtin_spe_predicate skal vÃ¦re en konstant"
  
! #: fortran/check.cc:6825
  #, fuzzy, gcc-internal-format
  #| msgid "argument 1 of __builtin_spe_predicate must be a constant"
  msgid "%<MOLD%> argument of %<TRANSFER%> intrinsic at %L must not be a %s"
  msgstr "1. parameter til __builtin_spe_predicate skal vÃ¦re en konstant"
  
! #: fortran/check.cc:6833
  #, gcc-internal-format
  msgid "%<MOLD%> argument of %<TRANSFER%> intrinsic at %L must not be %s"
  msgstr ""
  
! #: fortran/check.cc:6868
  msgid "Intrinsic TRANSFER at %L has partly undefined result: source size %zd < result size %zd"
  msgstr ""
  
! #: fortran/check.cc:6992
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must have the same rank as %qs or be a scalar"
  msgstr ""
  
! #: fortran/check.cc:7005
  #, gcc-internal-format
  msgid "%qs and %qs arguments of %qs intrinsic at %L must have identical shape."
  msgstr ""
  
! #: fortran/check.cc:7141
  #, gcc-internal-format, gfc-internal-format
  msgid "VALUES argument of DATE_AND_TIME at %L has non-default kind"
  msgstr ""
  
! #: fortran/check.cc:7153
  #, gcc-internal-format, gfc-internal-format
  msgid "VALUES argument of DATE_AND_TIME at %L must have a decimal exponent range of at least four"
  msgstr ""
  
! #: fortran/check.cc:7308 fortran/check.cc:7344
  #, gcc-internal-format
  msgid "Size of %qs argument of %qs intrinsic at %L too small (%i/%i)"
  msgstr ""
  
! #: fortran/check.cc:7355
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "too many arguments to %s `%+#D'"
  msgid "Too many arguments to %s at %L"
  msgstr "for mange parametre til %s '%+#D'"
  
! #: fortran/check.cc:7373
  #, gcc-internal-format
  msgid "fe_runtime_error string must be null terminated"
  msgstr ""
  
! #: fortran/check.cc:7385
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "wrong number of template arguments (%d, should be %d)"
  msgid "fe_runtime_error: Wrong number of arguments (%d instead of %d)"
  msgstr "forkert antal skabelonsparametre (%d, skulle vÃ¦re %d)"
  
! #: fortran/check.cc:7427
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT argument to SYSTEM_CLOCK at %L has non-default kind"
  msgstr ""
  
! #: fortran/check.cc:7434
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT argument to SYSTEM_CLOCK at %L with kind smaller than default integer"
  msgstr ""
  
! #: fortran/check.cc:7455
  #, gcc-internal-format, gfc-internal-format
  msgid "Real COUNT_RATE argument to SYSTEM_CLOCK at %L"
  msgstr ""
  
! #: fortran/check.cc:7465
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT_RATE argument to SYSTEM_CLOCK at %L has non-default kind"
  msgstr ""
  
! #: fortran/check.cc:7472
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT_RATE argument to SYSTEM_CLOCK at %L with kind smaller than default integer"
  msgstr ""
  
! #: fortran/check.cc:7492
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT_MAX argument to SYSTEM_CLOCK at %L has non-default kind"
  msgstr ""
  
! #: fortran/check.cc:7502
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT_MAX argument to SYSTEM_CLOCK at %L with kind smaller than default integer"
  msgstr ""
  
! #: fortran/check.cc:7517 fortran/check.cc:7524
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "different type"
  msgid "integer arguments to SYSTEM_CLOCK at %L with different kind parameters"
  msgstr "anden type"
  
! #: fortran/check.cc:7738
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must be of a kind not wider than the default kind (%d)"
  msgstr ""
  
! #: fortran/check.cc:7920
  #, fuzzy, gcc-internal-format
  #| msgid "argument 1 of __builtin_spe_predicate must be a constant"
  msgid "Actual argument at %L of %qs intrinsic shall be an associated pointer"
  msgstr "1. parameter til __builtin_spe_predicate skal vÃ¦re en konstant"
  
! #: fortran/check.cc:8109 fortran/check.cc:8120
  #, fuzzy, gcc-internal-format
  #| msgid "argument 1 of __builtin_spe_predicate must be a constant"
  msgid "%qs argument of %qs intrinsic at %L must be INTEGER, LOGICAL, or a BOZ literal constant"
  msgstr "1. parameter til __builtin_spe_predicate skal vÃ¦re en konstant"
  
! #: fortran/check.cc:8180
  #, gcc-internal-format, gfc-internal-format
  msgid "Intrinsic function NULL at %L cannot be an actual argument to STORAGE_SIZE, because it returns a disassociated pointer"
  msgstr ""
--- 77491,77836 ----
  msgid "%qs argument of %qs intrinsic at %L must be an interoperable data entity: %s"
  msgstr ""
  
! #: fortran/check.cc:5949
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument C_PTR_1 at %L to C_ASSOCIATED shall have the type TYPE(C_PTR) or TYPE(C_FUNPTR)"
  msgstr ""
  
! #: fortran/check.cc:6003
  #, gcc-internal-format, gfc-internal-format
! msgid "Argument C_PTR_2 at %L to C_ASSOCIATED shall have the same type as C_PTR_1, found %s instead of %s"
  msgstr ""
  
! #: fortran/check.cc:6036
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument CPTR at %L to C_F_POINTER shall have the type TYPE(C_PTR)"
  msgstr ""
  
! #: fortran/check.cc:6048
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument FPTR at %L to C_F_POINTER must be a pointer"
  msgstr ""
  
! #: fortran/check.cc:6055
  #, gcc-internal-format, gfc-internal-format
  msgid "FPTR argument at %L to C_F_POINTER shall not be polymorphic"
  msgstr ""
  
! #: fortran/check.cc:6062
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument FPTR at %L to C_F_POINTER shall not be coindexed"
  msgstr ""
  
! #: fortran/check.cc:6069
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected SHAPE argument at %L to C_F_POINTER with scalar FPTR"
  msgstr ""
  
! #: fortran/check.cc:6075
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected SHAPE argument to C_F_POINTER with array FPTR at %L"
  msgstr ""
  
! #: fortran/check.cc:6094
  #, gcc-internal-format, gfc-internal-format
  msgid "SHAPE argument at %L to C_F_POINTER must have the same size as the RANK of FPTR"
  msgstr ""
  
! #: fortran/check.cc:6104
  #, gcc-internal-format, gfc-internal-format
  msgid "Polymorphic FPTR at %L to C_F_POINTER"
  msgstr ""
  
! #: fortran/check.cc:6110
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "`%D' is not a function template"
  msgid "FPTR argument to C_F_POINTER at %L is a function returning a pointer"
  msgstr "'%D' er ikke en funktionsskabelon"
  
! #: fortran/check.cc:6117
  #, gcc-internal-format, gfc-internal-format
  msgid "Noninteroperable array FPTR argument to C_F_POINTER at %L: %s"
  msgstr ""
  
! #: fortran/check.cc:6133
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument CPTR at %L to C_F_PROCPOINTER shall have the type TYPE(C_FUNPTR)"
  msgstr ""
  
! #: fortran/check.cc:6145
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument FPTR at %L to C_F_PROCPOINTER shall be a procedure pointer"
  msgstr ""
  
! #: fortran/check.cc:6152
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument FPTR at %L to C_F_PROCPOINTER shall not be coindexed"
  msgstr ""
  
! #: fortran/check.cc:6158
  #, gcc-internal-format, gfc-internal-format
  msgid "Noninteroperable procedure pointer at %L to C_F_PROCPOINTER"
  msgstr ""
  
! #: fortran/check.cc:6172
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_FUNLOC shall not be coindexed"
  msgstr ""
  
! #: fortran/check.cc:6184
  #, gcc-internal-format
  msgid "Function result %qs at %L is invalid as X argument to C_FUNLOC"
  msgstr ""
  
! #: fortran/check.cc:6191
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_FUNLOC shall be a procedure or a procedure pointer"
  msgstr ""
  
! #: fortran/check.cc:6197
  #, gcc-internal-format, gfc-internal-format
  msgid "Noninteroperable procedure at %L to C_FUNLOC"
  msgstr ""
  
! #: fortran/check.cc:6211
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_LOC shall not be coindexed"
  msgstr ""
  
! #: fortran/check.cc:6217
  #, gcc-internal-format, gfc-internal-format
  msgid "X argument at %L to C_LOC shall not be polymorphic"
  msgstr ""
  
! #: fortran/check.cc:6228
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_LOC shall have either the POINTER or the TARGET attribute"
  msgstr ""
  
! #: fortran/check.cc:6236
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_LOC shall be not be a zero-sized string"
  msgstr ""
  
! #: fortran/check.cc:6245
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument at %L to C_LOC shall not be polymorphic"
  msgstr ""
  
! #: fortran/check.cc:6252
  #, gcc-internal-format, gfc-internal-format
  msgid "Noninteroperable array at %L as argument to C_LOC: %s"
  msgstr ""
  
! #: fortran/check.cc:6263
  #, gcc-internal-format, gfc-internal-format
  msgid "Array of interoperable type at %L to C_LOC which is nonallocatable and neither assumed size nor explicit size"
  msgstr ""
  
! #: fortran/check.cc:6268
  #, gcc-internal-format, gfc-internal-format
  msgid "Array section at %L to C_LOC"
  msgstr ""
  
! #: fortran/check.cc:6296
  #, gcc-internal-format, gfc-internal-format
  msgid "non double precision REAL argument to %s intrinsic at %L"
  msgstr ""
  
! #: fortran/check.cc:6312
  #, fuzzy, gcc-internal-format
  #| msgid "argument to `%s' attribute larger than %d"
  msgid "%qs argument of %qs intrinsic at %L must be less than rank %d"
  msgstr "parameter til egenskaben '%s' er stÃ¸rre end %d"
  
! #: fortran/check.cc:6331
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L is not a valid dimension index"
  msgstr ""
  
! #: fortran/check.cc:6355
  #, fuzzy, gcc-internal-format
  #| msgid "argument to `%s' attribute larger than %d"
  msgid "%qs argument of %qs intrinsic at %L must have length at least 1"
  msgstr "parameter til egenskaben '%s' er stÃ¸rre end %d"
  
! #: fortran/check.cc:6619
  #, gcc-internal-format, gfc-internal-format
  msgid "%s argument to IMAGE_INDEX must be a rank one array at %L"
  msgstr ""
  
! #: fortran/check.cc:6626
  #, gcc-internal-format, gfc-internal-format
  msgid "Type of %s argument of IMAGE_INDEX at %L shall be INTEGER"
  msgstr ""
  
! #: fortran/check.cc:6635
  #, gcc-internal-format, gfc-internal-format
  msgid "The number of array elements of the SUB argument to IMAGE_INDEX at %L shall be %d (corank) not %d"
  msgstr ""
  
! #: fortran/check.cc:6668
  #, gcc-internal-format, gfc-internal-format
  msgid "DISTANCE= argument to NUM_IMAGES at %L"
  msgstr ""
  
! #: fortran/check.cc:6681
  #, gcc-internal-format, gfc-internal-format
  msgid "FAILED= argument to NUM_IMAGES at %L"
  msgstr ""
  
! #: fortran/check.cc:6705
  #, gcc-internal-format, gfc-internal-format
  msgid "TEAM argument at %L to the intrinsic TEAM_NUMBER shall be of type TEAM_TYPE"
  msgstr ""
  
! #: fortran/check.cc:6731
  #, gcc-internal-format, gfc-internal-format
  msgid "DIM argument without COARRAY argument not allowed for THIS_IMAGE intrinsic at %L"
  msgstr ""
  
! #: fortran/check.cc:6738
  #, gcc-internal-format, gfc-internal-format
  msgid "The DISTANCE argument may not be specified together with the COARRAY or DIM argument in intrinsic at %L"
  msgstr ""
  
! #: fortran/check.cc:6749
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected DIM argument with noncoarray argument at %L"
  msgstr ""
  
! #: fortran/check.cc:6767
  #, gcc-internal-format, gfc-internal-format
  msgid "DISTANCE= argument to THIS_IMAGE at %L"
  msgstr ""
  
! #: fortran/check.cc:6825
  #, gcc-internal-format
  msgid "%<MOLD%> argument of %<TRANSFER%> intrinsic at %L is an array and shall not have storage size 0 when %<SOURCE%> argument has size greater than 0"
  msgstr ""
  
! #: fortran/check.cc:6877
  #, fuzzy, gcc-internal-format
  #| msgid "argument 1 of __builtin_spe_predicate must be a constant"
  msgid "%<SOURCE%> argument of %<TRANSFER%> intrinsic at %L must not be a %s"
  msgstr "1. parameter til __builtin_spe_predicate skal vÃ¦re en konstant"
  
! #: fortran/check.cc:6896
  #, fuzzy, gcc-internal-format
  #| msgid "argument 1 of __builtin_spe_predicate must be a constant"
  msgid "%<MOLD%> argument of %<TRANSFER%> intrinsic at %L must not be a %s"
  msgstr "1. parameter til __builtin_spe_predicate skal vÃ¦re en konstant"
  
! #: fortran/check.cc:6904
  #, gcc-internal-format
  msgid "%<MOLD%> argument of %<TRANSFER%> intrinsic at %L must not be %s"
  msgstr ""
  
! #: fortran/check.cc:6939
  msgid "Intrinsic TRANSFER at %L has partly undefined result: source size %zd < result size %zd"
  msgstr ""
  
! #: fortran/check.cc:7063
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must have the same rank as %qs or be a scalar"
  msgstr ""
  
! #: fortran/check.cc:7076
  #, gcc-internal-format
  msgid "%qs and %qs arguments of %qs intrinsic at %L must have identical shape."
  msgstr ""
  
! #: fortran/check.cc:7212
  #, gcc-internal-format, gfc-internal-format
  msgid "VALUES argument of DATE_AND_TIME at %L has non-default kind"
  msgstr ""
  
! #: fortran/check.cc:7224
  #, gcc-internal-format, gfc-internal-format
  msgid "VALUES argument of DATE_AND_TIME at %L must have a decimal exponent range of at least four"
  msgstr ""
  
! #: fortran/check.cc:7379 fortran/check.cc:7415
  #, gcc-internal-format
  msgid "Size of %qs argument of %qs intrinsic at %L too small (%i/%i)"
  msgstr ""
  
! #: fortran/check.cc:7426
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "too many arguments to %s `%+#D'"
  msgid "Too many arguments to %s at %L"
  msgstr "for mange parametre til %s '%+#D'"
  
! #: fortran/check.cc:7444
  #, gcc-internal-format
  msgid "fe_runtime_error string must be null terminated"
  msgstr ""
  
! #: fortran/check.cc:7456
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "wrong number of template arguments (%d, should be %d)"
  msgid "fe_runtime_error: Wrong number of arguments (%d instead of %d)"
  msgstr "forkert antal skabelonsparametre (%d, skulle vÃ¦re %d)"
  
! #: fortran/check.cc:7498
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT argument to SYSTEM_CLOCK at %L has non-default kind"
  msgstr ""
  
! #: fortran/check.cc:7505
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT argument to SYSTEM_CLOCK at %L with kind smaller than default integer"
  msgstr ""
  
! #: fortran/check.cc:7526
  #, gcc-internal-format, gfc-internal-format
  msgid "Real COUNT_RATE argument to SYSTEM_CLOCK at %L"
  msgstr ""
  
! #: fortran/check.cc:7536
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT_RATE argument to SYSTEM_CLOCK at %L has non-default kind"
  msgstr ""
  
! #: fortran/check.cc:7543
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT_RATE argument to SYSTEM_CLOCK at %L with kind smaller than default integer"
  msgstr ""
  
! #: fortran/check.cc:7563
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT_MAX argument to SYSTEM_CLOCK at %L has non-default kind"
  msgstr ""
  
! #: fortran/check.cc:7573
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT_MAX argument to SYSTEM_CLOCK at %L with kind smaller than default integer"
  msgstr ""
  
! #: fortran/check.cc:7588 fortran/check.cc:7595
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "different type"
  msgid "integer arguments to SYSTEM_CLOCK at %L with different kind parameters"
  msgstr "anden type"
  
! #: fortran/check.cc:7809
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must be of a kind not wider than the default kind (%d)"
  msgstr ""
  
! #: fortran/check.cc:7991
  #, fuzzy, gcc-internal-format
  #| msgid "argument 1 of __builtin_spe_predicate must be a constant"
  msgid "Actual argument at %L of %qs intrinsic shall be an associated pointer"
  msgstr "1. parameter til __builtin_spe_predicate skal vÃ¦re en konstant"
  
! #: fortran/check.cc:8180 fortran/check.cc:8191
  #, fuzzy, gcc-internal-format
  #| msgid "argument 1 of __builtin_spe_predicate must be a constant"
  msgid "%qs argument of %qs intrinsic at %L must be INTEGER, LOGICAL, or a BOZ literal constant"
  msgstr "1. parameter til __builtin_spe_predicate skal vÃ¦re en konstant"
  
! #: fortran/check.cc:8251
  #, gcc-internal-format, gfc-internal-format
  msgid "Intrinsic function NULL at %L cannot be an actual argument to STORAGE_SIZE, because it returns a disassociated pointer"
  msgstr ""
*************** msgstr ""
*** 77740,77746 ****
  msgid "Maximum extension level reached with type %qs at %L"
  msgstr ""
  
! #: fortran/class.cc:3123 fortran/class.cc:3197
  #, gcc-internal-format
  msgid "%qs of %qs is PRIVATE at %L"
  msgstr ""
--- 77842,77848 ----
  msgid "Maximum extension level reached with type %qs at %L"
  msgstr ""
  
! #: fortran/class.cc:3127 fortran/class.cc:3201
  #, gcc-internal-format
  msgid "%qs of %qs is PRIVATE at %L"
  msgstr ""
*************** msgstr ""
*** 77786,77797 ****
  msgid "Initialization string at %L was truncated to fit the variable (%wd/%wd)"
  msgstr ""
  
! #: fortran/data.cc:220 fortran/resolve.cc:5604
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring start index at %L is less than one"
  msgstr ""
  
! #: fortran/data.cc:226 fortran/resolve.cc:5634
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring end index at %L exceeds the string length"
  msgstr ""
--- 77888,77899 ----
  msgid "Initialization string at %L was truncated to fit the variable (%wd/%wd)"
  msgstr ""
  
! #: fortran/data.cc:220 fortran/resolve.cc:5577
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring start index at %L is less than one"
  msgstr ""
  
! #: fortran/data.cc:226 fortran/resolve.cc:5607
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring end index at %L exceeds the string length"
  msgstr ""
*************** msgstr ""
*** 77813,77819 ****
  msgid "Data element above array upper bound at %L"
  msgstr "Nulelement ved %0 for tabelreference ved %1"
  
! #: fortran/data.cc:390 fortran/data.cc:620
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate initialization of %D"
  msgid "re-initialization of %qs at %L"
--- 77915,77921 ----
  msgid "Data element above array upper bound at %L"
  msgstr "Nulelement ved %0 for tabelreference ved %1"
  
! #: fortran/data.cc:390 fortran/data.cc:626
  #, fuzzy, gcc-internal-format
  #| msgid "duplicate initialization of %D"
  msgid "re-initialization of %qs at %L"
*************** msgstr ""
*** 77834,77846 ****
  msgid "LEN or KIND inquiry ref in DATA statement at %L"
  msgstr "Mystisk tal i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/data.cc:643
  #, gcc-internal-format
  msgid "Nonpointer object %qs with default initialization shall not appear in a DATA statement at %L"
  msgstr ""
  
! #: fortran/data.cc:703 fortran/data.cc:722 fortran/data.cc:736
! #: fortran/data.cc:762 fortran/data.cc:909
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%#D'"
  msgid "Simplification error"
--- 77936,77948 ----
  msgid "LEN or KIND inquiry ref in DATA statement at %L"
  msgstr "Mystisk tal i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/data.cc:649
  #, gcc-internal-format
  msgid "Nonpointer object %qs with default initialization shall not appear in a DATA statement at %L"
  msgstr ""
  
! #: fortran/data.cc:709 fortran/data.cc:728 fortran/data.cc:742
! #: fortran/data.cc:768 fortran/data.cc:915
  #, fuzzy, gcc-internal-format
  #| msgid "declaration of `%#D'"
  msgid "Simplification error"
*************** msgstr ""
*** 77990,77996 ****
  msgid "deferred type parameter at %C"
  msgstr ""
  
! #: fortran/decl.cc:1166 fortran/resolve.cc:14157
  #, gcc-internal-format, gfc-internal-format
  msgid "Scalar INTEGER expression expected at %L"
  msgstr ""
--- 78092,78098 ----
  msgid "deferred type parameter at %C"
  msgstr ""
  
! #: fortran/decl.cc:1166 fortran/resolve.cc:14147
  #, gcc-internal-format, gfc-internal-format
  msgid "Scalar INTEGER expression expected at %L"
  msgstr ""
*************** msgstr ""
*** 79928,79939 ****
  msgid "are_identical_variables: Bad type"
  msgstr ""
  
! #: fortran/dependency.cc:1021
  #, gcc-internal-format, gfc-internal-format
  msgid "INTENT(%s) actual argument at %L might interfere with actual argument at %L."
  msgstr ""
  
! #: fortran/dependency.cc:1326
  #, gcc-internal-format
  msgid "gfc_check_dependency: expecting an EXPR_VARIABLE"
  msgstr ""
--- 80030,80041 ----
  msgid "are_identical_variables: Bad type"
  msgstr ""
  
! #: fortran/dependency.cc:1025
  #, gcc-internal-format, gfc-internal-format
  msgid "INTENT(%s) actual argument at %L might interfere with actual argument at %L."
  msgstr ""
  
! #: fortran/dependency.cc:1330
  #, gcc-internal-format
  msgid "gfc_check_dependency: expecting an EXPR_VARIABLE"
  msgstr ""
*************** msgstr "show_expr(): Ved ikke hvordan ud
*** 79968,79974 ****
  msgid "show_code_node(): Bad statement code"
  msgstr ""
  
! #: fortran/dump-parse-tree.cc:4356 fortran/dump-parse-tree.cc:4450
  #, fuzzy, gcc-internal-format
  #| msgid "cannot convert to a pointer type"
  msgid "Cannot convert %qs to interoperable type at %L"
--- 80070,80076 ----
  msgid "show_code_node(): Bad statement code"
  msgstr ""
  
! #: fortran/dump-parse-tree.cc:4358 fortran/dump-parse-tree.cc:4453
  #, fuzzy, gcc-internal-format
  #| msgid "cannot convert to a pointer type"
  msgid "Cannot convert %qs to interoperable type at %L"
*************** msgstr "heltalsoverlÃ¸b i udtryk"
*** 80013,80476 ****
  msgid "gfc_is_constant_expr(): Unknown expression type"
  msgstr ""
  
! #: fortran/expr.cc:1338
  #, gcc-internal-format
  msgid "simplify_intrinsic_op(): Bad operator"
  msgstr ""
  
! #: fortran/expr.cc:1444
  #, gcc-internal-format, gfc-internal-format
  msgid "Index in dimension %d is out of bounds at %L"
  msgstr ""
  
! #: fortran/expr.cc:1643 fortran/expr.cc:1694
  #, gcc-internal-format, gfc-internal-format
  msgid "index in dimension %d is out of bounds at %L"
  msgstr ""
  
! #: fortran/expr.cc:1769
  #, gcc-internal-format
  msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit.  See %<-fmax-array-constructor%> option"
  msgstr ""
  
! #: fortran/expr.cc:1780
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Error in array constructor referenced at %L"
  msgstr "\"%s\" mÃ¥ ikke optrÃ¦de i makroparameterliste"
  
! #: fortran/expr.cc:1890 fortran/primary.cc:2521 fortran/primary.cc:2698
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "LEN part_ref at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/expr.cc:1915 fortran/primary.cc:2516 fortran/primary.cc:2713
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid parameter `%s'"
  msgid "KIND part_ref at %C"
  msgstr "ugyldig parameter '%s'"
  
! #: fortran/expr.cc:1926
  #, gcc-internal-format, gfc-internal-format
  msgid "RE part_ref at %C"
  msgstr ""
  
! #: fortran/expr.cc:1938
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Missing comma in FORMAT statement at %0"
  msgid "IM part_ref at %C"
  msgstr "Manglende komma i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/expr.cc:2592
  #, gcc-internal-format, gfc-internal-format
  msgid "elemental function arguments at %C are not compliant"
  msgstr ""
  
! #: fortran/expr.cc:2636
  #, gcc-internal-format, gfc-internal-format
  msgid "Numeric or CHARACTER operands are required in expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:2661
  #, gcc-internal-format, gfc-internal-format
  msgid "Concatenation operator in expression at %L must have two CHARACTER operands"
  msgstr ""
  
! #: fortran/expr.cc:2668
  #, gcc-internal-format, gfc-internal-format
  msgid "Concat operator at %L must concatenate strings of the same kind"
  msgstr ""
  
! #: fortran/expr.cc:2678
  #, gcc-internal-format, gfc-internal-format
  msgid ".NOT. operator in expression at %L must have a LOGICAL operand"
  msgstr ""
  
! #: fortran/expr.cc:2694
  #, gcc-internal-format, gfc-internal-format
  msgid "LOGICAL operands are required in expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:2705
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Missing operand for operator at %1 at end of expression at %0"
  msgid "Only intrinsic operators can be used in expression at %L"
  msgstr "Manglende operand for operator ved %1 i slutningen af udtryk ved %0"
  
! #: fortran/expr.cc:2713
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Missing operand for operator at %1 at end of expression at %0"
  msgid "Numeric operands are required in expression at %L"
  msgstr "Manglende operand for operator ved %1 i slutningen af udtryk ved %0"
  
! #: fortran/expr.cc:2736
  #, gcc-internal-format
  msgid "Invalid initialization expression for ALLOCATABLE component %qs in structure constructor at %L"
  msgstr ""
  
! #: fortran/expr.cc:2873
  #, gcc-internal-format
  msgid "Assumed or deferred character length variable %qs in constant expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:2957
  #, gcc-internal-format
  msgid "transformational intrinsic %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:2988
  #, gcc-internal-format, gfc-internal-format
  msgid "Evaluation of nonstandard initialization expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:3065 fortran/resolve.cc:2890
  #, gcc-internal-format
  msgid "Function %qs in initialization expression at %L must be an intrinsic function"
  msgstr ""
  
! #: fortran/expr.cc:3077
  #, gcc-internal-format
  msgid "Intrinsic function %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3116
  #, gcc-internal-format
  msgid "PARAMETER %qs is used at %L before its definition is complete"
  msgstr ""
  
! #: fortran/expr.cc:3136
  #, gcc-internal-format
  msgid "Assumed size array %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3142
  #, gcc-internal-format
  msgid "Assumed shape array %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3151
  #, fuzzy, gcc-internal-format
  #| msgid "initialization of new expression with `='"
  msgid "Assumed-shape array %qs at %L is not permitted in an initialization expression"
  msgstr "tildeling af startvÃ¦rdi til new-udtryk med '='"
  
! #: fortran/expr.cc:3155
  #, gcc-internal-format
  msgid "Deferred array %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3161
  #, gcc-internal-format
  msgid "Array %qs at %L is a variable, which does not reduce to a constant expression"
  msgstr ""
  
! #: fortran/expr.cc:3167
  #, fuzzy, gcc-internal-format
  #| msgid "initialization of new expression with `='"
  msgid "Assumed-rank array %qs at %L is not permitted in an initialization expression"
  msgstr "tildeling af startvÃ¦rdi til new-udtryk med '='"
  
! #: fortran/expr.cc:3177
  #, gcc-internal-format
  msgid "Parameter %qs at %L has not been declared or is a variable, which does not reduce to a constant expression"
  msgstr ""
  
! #: fortran/expr.cc:3231
  #, gcc-internal-format
  msgid "check_init_expr(): Unknown expression type"
  msgstr ""
  
! #: fortran/expr.cc:3371
  #, fuzzy, gcc-internal-format
  #| msgid "constructor cannot be static member function"
  msgid "Specification function %qs at %L cannot be a statement function"
  msgstr "konstruktionsfunktionen kan ikke vÃ¦re en statisk medlemsfunktion"
  
! #: fortran/expr.cc:3378
  #, gcc-internal-format
  msgid "Specification function %qs at %L cannot be an internal function"
  msgstr ""
  
! #: fortran/expr.cc:3385
  #, gcc-internal-format
  msgid "Specification function %qs at %L must be PURE"
  msgstr ""
  
! #: fortran/expr.cc:3393
  #, fuzzy, gcc-internal-format
  #| msgid "constructor cannot be static member function"
  msgid "Specification function %qs at %L cannot be RECURSIVE"
  msgstr "konstruktionsfunktionen kan ikke vÃ¦re en statisk medlemsfunktion"
  
! #: fortran/expr.cc:3540
  #, fuzzy, gcc-internal-format
  #| msgid "double quoted strings not allowed in #if expressions"
  msgid "Dummy argument %qs not allowed in expression at %L"
  msgstr "strenge med dobbelte anfÃ¸rselstegn er ikke tilladte i #if-udtryk"
  
! #: fortran/expr.cc:3548
  #, gcc-internal-format
  msgid "Dummy argument %qs at %L cannot be OPTIONAL"
  msgstr ""
  
! #: fortran/expr.cc:3555
  #, gcc-internal-format
  msgid "Dummy argument %qs at %L cannot be INTENT(OUT)"
  msgstr ""
  
! #: fortran/expr.cc:3577
  #, fuzzy, gcc-internal-format
  msgid "Variable %qs cannot appear in the expression at %L"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: fortran/expr.cc:3608
  #, gcc-internal-format
  msgid "check_restricted(): Unknown expression type"
  msgstr ""
  
! #: fortran/expr.cc:3628
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression at %L must be of INTEGER type, found %s"
  msgstr ""
  
! #: fortran/expr.cc:3640
  #, gcc-internal-format
  msgid "Function %qs at %L must be PURE"
  msgstr "Funktion %qs ved %L skal vÃ¦re PURE"
  
! #: fortran/expr.cc:3649
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression at %L must be scalar"
  msgstr ""
  
  #. Reject truncation.
! #: fortran/expr.cc:3681
  #, gcc-internal-format, gfc-internal-format
  msgid "optype_msgid overflow: %d"
  msgstr ""
  
! #: fortran/expr.cc:3685
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible ranks in %s (%d and %d) at %L"
  msgstr ""
  
! #: fortran/expr.cc:3699
  #, gcc-internal-format, gfc-internal-format
  msgid "Different shape for %s at %L on dimension %d (%d and %d)"
  msgstr ""
  
! #: fortran/expr.cc:3747
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to a LEN or KIND part_ref at %L is not allowed"
  msgstr ""
  
! #: fortran/expr.cc:3803
  #, gcc-internal-format
  msgid "%qs at %L is not a VALUE"
  msgstr "%qs ved %L er ikke en VÃ†RDI"
  
! #: fortran/expr.cc:3814
  #, gcc-internal-format, gfc-internal-format
  msgid "Illegal assignment to external procedure at %L"
  msgstr ""
  
! #: fortran/expr.cc:3822
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "incompatible types in assignment of `%T' to `%T'"
  msgid "Incompatible ranks %d and %d in assignment at %L"
  msgstr "uforenelige typer i tildeling af '%T' til '%T'"
  
! #: fortran/expr.cc:3829
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "incompatible types in assignment of `%T' to `%T'"
  msgid "Variable type is UNKNOWN in assignment at %L"
  msgstr "uforenelige typer i tildeling af '%T' til '%T'"
  
! #: fortran/expr.cc:3841
  #, gcc-internal-format, gfc-internal-format
  msgid "NULL appears on right-hand side in assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:3851
  #, gcc-internal-format, gfc-internal-format
  msgid "POINTER-valued function appears on right-hand side of assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:3894
  #, gcc-internal-format
  msgid "BOZ literal constant near %L cannot be assigned to a %qs variable"
  msgstr ""
  
! #: fortran/expr.cc:3901
  #, gcc-internal-format, gfc-internal-format
  msgid "The assignment to a KIND or LEN component of a parameterized type at %L is not allowed"
  msgstr ""
  
! #: fortran/expr.cc:3932
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible types in DATA statement at %L; attempted conversion of %s to %s"
  msgstr ""
  
! #: fortran/expr.cc:3976
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target is not a POINTER at %L"
  msgstr ""
  
! #: fortran/expr.cc:3984
  #, gcc-internal-format
  msgid "%qs in the pointer assignment at %L cannot be an l-value since it is a procedure"
  msgstr ""
  
! #: fortran/expr.cc:4008
  #, gcc-internal-format
  msgid "Expected bounds specification for %qs at %L"
  msgstr ""
  
! #: fortran/expr.cc:4013
  #, fuzzy, gcc-internal-format
  #| msgid "Array or substring specification for `%A' out of range in statement at %0"
  msgid "Bounds specification for %qs in pointer assignment at %L"
  msgstr "Tabel- eller understrengsangivelse for '%A' er uden for det gyldige interval i sÃ¦tning ved %0"
  
! #: fortran/expr.cc:4042
  #, gcc-internal-format, gfc-internal-format
  msgid "Stride must not be present at %L"
  msgstr ""
  
! #: fortran/expr.cc:4048 fortran/expr.cc:4068
  #, gcc-internal-format
  msgid "Rank remapping requires a list of %<lower-bound : upper-bound%> specifications at %L"
  msgstr ""
  
! #: fortran/expr.cc:4056 fortran/expr.cc:4075
  #, gcc-internal-format
  msgid "Expected list of %<lower-bound :%> or list of %<lower-bound : upper-bound%> specifications at %L"
  msgstr ""
  
! #: fortran/expr.cc:4102
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer object at %L shall not have a coindex"
  msgstr ""
  
! #: fortran/expr.cc:4123
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid lvalue in assignment"
  msgid "Invalid procedure pointer assignment at %L"
  msgstr "ugyldig venstrevÃ¦rdi i tildeling"
  
! #: fortran/expr.cc:4148
  #, gcc-internal-format
  msgid "Function result %qs is invalid as proc-target in procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4157
  #, gcc-internal-format
  msgid "Abstract interface %qs is invalid in procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4167
  #, fuzzy, gcc-internal-format
  #| msgid "Statement at %0 invalid in context established by statement at %1"
  msgid "Statement function %qs is invalid in procedure pointer assignment at %L"
  msgstr "SÃ¦tning ved %0 er ugyldig i den kontekst der er etableret af sÃ¦tning ved %1"
  
! #: fortran/expr.cc:4173
  #, gcc-internal-format
  msgid "Internal procedure %qs is invalid in procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4180
  #, gcc-internal-format
  msgid "Intrinsic %qs at %L is invalid in procedure pointer assignment"
  msgstr ""
  
! #: fortran/expr.cc:4188
  #, gcc-internal-format
  msgid "Nonintrinsic elemental procedure %qs is invalid in procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4211
  #, gcc-internal-format, gfc-internal-format
  msgid "Mismatch in the procedure pointer assignment at %L: mismatch in the calling convention"
  msgstr ""
  
! #: fortran/expr.cc:4264
  #, fuzzy, gcc-internal-format
  #| msgid "invalid lvalue in assignment"
  msgid "Interface mismatch in procedure pointer assignment at %L: %qs is not a subroutine"
  msgstr "ugyldig venstrevÃ¦rdi i tildeling"
  
! #: fortran/expr.cc:4274 fortran/expr.cc:4289
  #, gcc-internal-format
  msgid "Explicit interface required for component %qs at %L: %s"
  msgstr ""
  
! #: fortran/expr.cc:4280 fortran/expr.cc:4295 fortran/resolve.cc:2764
  #, gcc-internal-format
  msgid "Explicit interface required for %qs at %L: %s"
  msgstr ""
  
! #: fortran/expr.cc:4307
  #, gcc-internal-format, gfc-internal-format
  msgid "Interface mismatch in procedure pointer assignment at %L: %s"
  msgstr ""
  
! #: fortran/expr.cc:4316
  #, gcc-internal-format
  msgid "Procedure pointer target %qs at %L must be either an intrinsic, host or use associated, referenced or have the EXTERNAL attribute"
  msgstr ""
  
! #: fortran/expr.cc:4329
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target cannot be a constant at %L"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: fortran/expr.cc:4343
  #, gcc-internal-format, gfc-internal-format
  msgid "Data-pointer-object at %L must be unlimited polymorphic, or of a type with the BIND or SEQUENCE attribute, to be compatible with an unlimited polymorphic target"
  msgstr ""
  
! #: fortran/expr.cc:4348
  #, gcc-internal-format, gfc-internal-format
  msgid "Different types in pointer assignment at %L; attempted assignment of %s to %s"
  msgstr ""
  
! #: fortran/expr.cc:4356
  #, gcc-internal-format, gfc-internal-format
  msgid "Different kind type parameters in pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4363
  #, gcc-internal-format, gfc-internal-format
  msgid "Different ranks in pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4384
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank remapping target is smaller than size of the pointer (%ld < %ld) at %L"
  msgstr ""
  
! #: fortran/expr.cc:4400
  #, gcc-internal-format, gfc-internal-format
  msgid "The assumed rank target at %L is an experimental F202y feature. Use option -std=f202y to enable"
  msgstr ""
  
! #: fortran/expr.cc:4412
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank remapping target must be rank 1 or simply contiguous at %L"
  msgstr ""
  
! #: fortran/expr.cc:4416
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank remapping target is not rank 1 at %L"
  msgstr ""
  
! #: fortran/expr.cc:4423
  #, gcc-internal-format, gfc-internal-format
  msgid "The data-target at %L is an assumed rank object and so the data-pointer-object %s must have a bounds remapping list (list of lbound:ubound for each dimension)"
  msgstr ""
  
! #: fortran/expr.cc:4432
  #, gcc-internal-format, gfc-internal-format
  msgid "The assumed rank data-target at %L must be contiguous"
  msgstr ""
--- 80115,80578 ----
  msgid "gfc_is_constant_expr(): Unknown expression type"
  msgstr ""
  
! #: fortran/expr.cc:1339
  #, gcc-internal-format
  msgid "simplify_intrinsic_op(): Bad operator"
  msgstr ""
  
! #: fortran/expr.cc:1445
  #, gcc-internal-format, gfc-internal-format
  msgid "Index in dimension %d is out of bounds at %L"
  msgstr ""
  
! #: fortran/expr.cc:1644 fortran/expr.cc:1695
  #, gcc-internal-format, gfc-internal-format
  msgid "index in dimension %d is out of bounds at %L"
  msgstr ""
  
! #: fortran/expr.cc:1770
  #, gcc-internal-format
  msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit.  See %<-fmax-array-constructor%> option"
  msgstr ""
  
! #: fortran/expr.cc:1781
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Error in array constructor referenced at %L"
  msgstr "\"%s\" mÃ¥ ikke optrÃ¦de i makroparameterliste"
  
! #: fortran/expr.cc:1945 fortran/primary.cc:2554 fortran/primary.cc:2739
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "LEN part_ref at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/expr.cc:1992 fortran/primary.cc:2549 fortran/primary.cc:2754
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid parameter `%s'"
  msgid "KIND part_ref at %C"
  msgstr "ugyldig parameter '%s'"
  
! #: fortran/expr.cc:2003
  #, gcc-internal-format, gfc-internal-format
  msgid "RE part_ref at %C"
  msgstr ""
  
! #: fortran/expr.cc:2028
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Missing comma in FORMAT statement at %0"
  msgid "IM part_ref at %C"
  msgstr "Manglende komma i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/expr.cc:2696
  #, gcc-internal-format, gfc-internal-format
  msgid "elemental function arguments at %C are not compliant"
  msgstr ""
  
! #: fortran/expr.cc:2740
  #, gcc-internal-format, gfc-internal-format
  msgid "Numeric or CHARACTER operands are required in expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:2765
  #, gcc-internal-format, gfc-internal-format
  msgid "Concatenation operator in expression at %L must have two CHARACTER operands"
  msgstr ""
  
! #: fortran/expr.cc:2772
  #, gcc-internal-format, gfc-internal-format
  msgid "Concat operator at %L must concatenate strings of the same kind"
  msgstr ""
  
! #: fortran/expr.cc:2782
  #, gcc-internal-format, gfc-internal-format
  msgid ".NOT. operator in expression at %L must have a LOGICAL operand"
  msgstr ""
  
! #: fortran/expr.cc:2798
  #, gcc-internal-format, gfc-internal-format
  msgid "LOGICAL operands are required in expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:2809
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Missing operand for operator at %1 at end of expression at %0"
  msgid "Only intrinsic operators can be used in expression at %L"
  msgstr "Manglende operand for operator ved %1 i slutningen af udtryk ved %0"
  
! #: fortran/expr.cc:2817
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Missing operand for operator at %1 at end of expression at %0"
  msgid "Numeric operands are required in expression at %L"
  msgstr "Manglende operand for operator ved %1 i slutningen af udtryk ved %0"
  
! #: fortran/expr.cc:2840
  #, gcc-internal-format
  msgid "Invalid initialization expression for ALLOCATABLE component %qs in structure constructor at %L"
  msgstr ""
  
! #: fortran/expr.cc:2977
  #, gcc-internal-format
  msgid "Assumed or deferred character length variable %qs in constant expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:3061
  #, gcc-internal-format
  msgid "transformational intrinsic %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3092
  #, gcc-internal-format, gfc-internal-format
  msgid "Evaluation of nonstandard initialization expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:3169 fortran/resolve.cc:2891
  #, gcc-internal-format
  msgid "Function %qs in initialization expression at %L must be an intrinsic function"
  msgstr ""
  
! #: fortran/expr.cc:3181
  #, gcc-internal-format
  msgid "Intrinsic function %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3220
  #, gcc-internal-format
  msgid "PARAMETER %qs is used at %L before its definition is complete"
  msgstr ""
  
! #: fortran/expr.cc:3240
  #, gcc-internal-format
  msgid "Assumed size array %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3246
  #, gcc-internal-format
  msgid "Assumed shape array %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3255
  #, fuzzy, gcc-internal-format
  #| msgid "initialization of new expression with `='"
  msgid "Assumed-shape array %qs at %L is not permitted in an initialization expression"
  msgstr "tildeling af startvÃ¦rdi til new-udtryk med '='"
  
! #: fortran/expr.cc:3259
  #, gcc-internal-format
  msgid "Deferred array %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3265
  #, gcc-internal-format
  msgid "Array %qs at %L is a variable, which does not reduce to a constant expression"
  msgstr ""
  
! #: fortran/expr.cc:3271
  #, fuzzy, gcc-internal-format
  #| msgid "initialization of new expression with `='"
  msgid "Assumed-rank array %qs at %L is not permitted in an initialization expression"
  msgstr "tildeling af startvÃ¦rdi til new-udtryk med '='"
  
! #: fortran/expr.cc:3281
  #, gcc-internal-format
  msgid "Parameter %qs at %L has not been declared or is a variable, which does not reduce to a constant expression"
  msgstr ""
  
! #: fortran/expr.cc:3335
  #, gcc-internal-format
  msgid "check_init_expr(): Unknown expression type"
  msgstr ""
  
! #: fortran/expr.cc:3475
  #, fuzzy, gcc-internal-format
  #| msgid "constructor cannot be static member function"
  msgid "Specification function %qs at %L cannot be a statement function"
  msgstr "konstruktionsfunktionen kan ikke vÃ¦re en statisk medlemsfunktion"
  
! #: fortran/expr.cc:3482
  #, gcc-internal-format
  msgid "Specification function %qs at %L cannot be an internal function"
  msgstr ""
  
! #: fortran/expr.cc:3489
  #, gcc-internal-format
  msgid "Specification function %qs at %L must be PURE"
  msgstr ""
  
! #: fortran/expr.cc:3497
  #, fuzzy, gcc-internal-format
  #| msgid "constructor cannot be static member function"
  msgid "Specification function %qs at %L cannot be RECURSIVE"
  msgstr "konstruktionsfunktionen kan ikke vÃ¦re en statisk medlemsfunktion"
  
! #: fortran/expr.cc:3644
  #, fuzzy, gcc-internal-format
  #| msgid "double quoted strings not allowed in #if expressions"
  msgid "Dummy argument %qs not allowed in expression at %L"
  msgstr "strenge med dobbelte anfÃ¸rselstegn er ikke tilladte i #if-udtryk"
  
! #: fortran/expr.cc:3652
  #, gcc-internal-format
  msgid "Dummy argument %qs at %L cannot be OPTIONAL"
  msgstr ""
  
! #: fortran/expr.cc:3659
  #, gcc-internal-format
  msgid "Dummy argument %qs at %L cannot be INTENT(OUT)"
  msgstr ""
  
! #: fortran/expr.cc:3681
  #, fuzzy, gcc-internal-format
  msgid "Variable %qs cannot appear in the expression at %L"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: fortran/expr.cc:3712
  #, gcc-internal-format
  msgid "check_restricted(): Unknown expression type"
  msgstr ""
  
! #: fortran/expr.cc:3732
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression at %L must be of INTEGER type, found %s"
  msgstr ""
  
! #: fortran/expr.cc:3744
  #, gcc-internal-format
  msgid "Function %qs at %L must be PURE"
  msgstr "Funktion %qs ved %L skal vÃ¦re PURE"
  
! #: fortran/expr.cc:3753
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression at %L must be scalar"
  msgstr ""
  
  #. Reject truncation.
! #: fortran/expr.cc:3785
  #, gcc-internal-format, gfc-internal-format
  msgid "optype_msgid overflow: %d"
  msgstr ""
  
! #: fortran/expr.cc:3789
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible ranks in %s (%d and %d) at %L"
  msgstr ""
  
! #: fortran/expr.cc:3803
  #, gcc-internal-format, gfc-internal-format
  msgid "Different shape for %s at %L on dimension %d (%d and %d)"
  msgstr ""
  
! #: fortran/expr.cc:3851
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to a LEN or KIND part_ref at %L is not allowed"
  msgstr ""
  
! #: fortran/expr.cc:3907
  #, gcc-internal-format
  msgid "%qs at %L is not a VALUE"
  msgstr "%qs ved %L er ikke en VÃ†RDI"
  
! #: fortran/expr.cc:3918
  #, gcc-internal-format, gfc-internal-format
  msgid "Illegal assignment to external procedure at %L"
  msgstr ""
  
! #: fortran/expr.cc:3926
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "incompatible types in assignment of `%T' to `%T'"
  msgid "Incompatible ranks %d and %d in assignment at %L"
  msgstr "uforenelige typer i tildeling af '%T' til '%T'"
  
! #: fortran/expr.cc:3933
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "incompatible types in assignment of `%T' to `%T'"
  msgid "Variable type is UNKNOWN in assignment at %L"
  msgstr "uforenelige typer i tildeling af '%T' til '%T'"
  
! #: fortran/expr.cc:3945
  #, gcc-internal-format, gfc-internal-format
  msgid "NULL appears on right-hand side in assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:3955
  #, gcc-internal-format, gfc-internal-format
  msgid "POINTER-valued function appears on right-hand side of assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:3998
  #, gcc-internal-format
  msgid "BOZ literal constant near %L cannot be assigned to a %qs variable"
  msgstr ""
  
! #: fortran/expr.cc:4005
  #, gcc-internal-format, gfc-internal-format
  msgid "The assignment to a KIND or LEN component of a parameterized type at %L is not allowed"
  msgstr ""
  
! #: fortran/expr.cc:4036
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible types in DATA statement at %L; attempted conversion of %s to %s"
  msgstr ""
  
! #: fortran/expr.cc:4080
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target is not a POINTER at %L"
  msgstr ""
  
! #: fortran/expr.cc:4088
  #, gcc-internal-format
  msgid "%qs in the pointer assignment at %L cannot be an l-value since it is a procedure"
  msgstr ""
  
! #: fortran/expr.cc:4112
  #, gcc-internal-format
  msgid "Expected bounds specification for %qs at %L"
  msgstr ""
  
! #: fortran/expr.cc:4117
  #, fuzzy, gcc-internal-format
  #| msgid "Array or substring specification for `%A' out of range in statement at %0"
  msgid "Bounds specification for %qs in pointer assignment at %L"
  msgstr "Tabel- eller understrengsangivelse for '%A' er uden for det gyldige interval i sÃ¦tning ved %0"
  
! #: fortran/expr.cc:4146
  #, gcc-internal-format, gfc-internal-format
  msgid "Stride must not be present at %L"
  msgstr ""
  
! #: fortran/expr.cc:4152 fortran/expr.cc:4172
  #, gcc-internal-format
  msgid "Rank remapping requires a list of %<lower-bound : upper-bound%> specifications at %L"
  msgstr ""
  
! #: fortran/expr.cc:4160 fortran/expr.cc:4179
  #, gcc-internal-format
  msgid "Expected list of %<lower-bound :%> or list of %<lower-bound : upper-bound%> specifications at %L"
  msgstr ""
  
! #: fortran/expr.cc:4206
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer object at %L shall not have a coindex"
  msgstr ""
  
! #: fortran/expr.cc:4227
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid lvalue in assignment"
  msgid "Invalid procedure pointer assignment at %L"
  msgstr "ugyldig venstrevÃ¦rdi i tildeling"
  
! #: fortran/expr.cc:4252
  #, gcc-internal-format
  msgid "Function result %qs is invalid as proc-target in procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4261
  #, gcc-internal-format
  msgid "Abstract interface %qs is invalid in procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4271
  #, fuzzy, gcc-internal-format
  #| msgid "Statement at %0 invalid in context established by statement at %1"
  msgid "Statement function %qs is invalid in procedure pointer assignment at %L"
  msgstr "SÃ¦tning ved %0 er ugyldig i den kontekst der er etableret af sÃ¦tning ved %1"
  
! #: fortran/expr.cc:4277
  #, gcc-internal-format
  msgid "Internal procedure %qs is invalid in procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4284
  #, gcc-internal-format
  msgid "Intrinsic %qs at %L is invalid in procedure pointer assignment"
  msgstr ""
  
! #: fortran/expr.cc:4292
  #, gcc-internal-format
  msgid "Nonintrinsic elemental procedure %qs is invalid in procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4315
  #, gcc-internal-format, gfc-internal-format
  msgid "Mismatch in the procedure pointer assignment at %L: mismatch in the calling convention"
  msgstr ""
  
! #: fortran/expr.cc:4368
  #, fuzzy, gcc-internal-format
  #| msgid "invalid lvalue in assignment"
  msgid "Interface mismatch in procedure pointer assignment at %L: %qs is not a subroutine"
  msgstr "ugyldig venstrevÃ¦rdi i tildeling"
  
! #: fortran/expr.cc:4378 fortran/expr.cc:4393
  #, gcc-internal-format
  msgid "Explicit interface required for component %qs at %L: %s"
  msgstr ""
  
! #: fortran/expr.cc:4384 fortran/expr.cc:4399 fortran/resolve.cc:2765
  #, gcc-internal-format
  msgid "Explicit interface required for %qs at %L: %s"
  msgstr ""
  
! #: fortran/expr.cc:4411
  #, gcc-internal-format, gfc-internal-format
  msgid "Interface mismatch in procedure pointer assignment at %L: %s"
  msgstr ""
  
! #: fortran/expr.cc:4420
  #, gcc-internal-format
  msgid "Procedure pointer target %qs at %L must be either an intrinsic, host or use associated, referenced or have the EXTERNAL attribute"
  msgstr ""
  
! #: fortran/expr.cc:4433
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target cannot be a constant at %L"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: fortran/expr.cc:4447
  #, gcc-internal-format, gfc-internal-format
  msgid "Data-pointer-object at %L must be unlimited polymorphic, or of a type with the BIND or SEQUENCE attribute, to be compatible with an unlimited polymorphic target"
  msgstr ""
  
! #: fortran/expr.cc:4452
  #, gcc-internal-format, gfc-internal-format
  msgid "Different types in pointer assignment at %L; attempted assignment of %s to %s"
  msgstr ""
  
! #: fortran/expr.cc:4460
  #, gcc-internal-format, gfc-internal-format
  msgid "Different kind type parameters in pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4467
  #, gcc-internal-format, gfc-internal-format
  msgid "Different ranks in pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4488
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank remapping target is smaller than size of the pointer (%ld < %ld) at %L"
  msgstr ""
  
! #: fortran/expr.cc:4504
  #, gcc-internal-format, gfc-internal-format
  msgid "The assumed rank target at %L is an experimental F202y feature. Use option -std=f202y to enable"
  msgstr ""
  
! #: fortran/expr.cc:4516
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank remapping target must be rank 1 or simply contiguous at %L"
  msgstr ""
  
! #: fortran/expr.cc:4520
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank remapping target is not rank 1 at %L"
  msgstr ""
  
! #: fortran/expr.cc:4527
  #, gcc-internal-format, gfc-internal-format
  msgid "The data-target at %L is an assumed rank object and so the data-pointer-object %s must have a bounds remapping list (list of lbound:ubound for each dimension)"
  msgstr ""
  
! #: fortran/expr.cc:4536
  #, gcc-internal-format, gfc-internal-format
  msgid "The assumed rank data-target at %L must be contiguous"
  msgstr ""
*************** msgstr ""
*** 80478,80673 ****
  #. The test above might need to be extend when F08, Note 5.4 has to be
  #. interpreted in the way that target and pointer with the same coindex
  #. are allowed.
! #: fortran/expr.cc:4456 fortran/expr.cc:4582
  #, gcc-internal-format, gfc-internal-format
  msgid "Data target at %L shall not have a coindex"
  msgstr ""
  
! #: fortran/expr.cc:4459
  #, gcc-internal-format, gfc-internal-format
  msgid "Target expression in pointer assignment at %L must deliver a pointer result"
  msgstr ""
  
! #: fortran/expr.cc:4473
  #, gcc-internal-format, gfc-internal-format
  msgid "Zero-sized array detected at %L where an entity with the TARGET attribute is expected"
  msgstr ""
  
! #: fortran/expr.cc:4479 fortran/expr.cc:4494
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "pointer/integer type mismatch in conditional expression"
  msgid "Pointer assignment target in initialization expression does not have the TARGET attribute at %L"
  msgstr "henvisnings- og heltalstype i betingelsesudtrykket passer ikke sammen"
  
! #: fortran/expr.cc:4510
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Missing or invalid constant expression"
  msgid "Every subscript of target specification at %L must be a constant expression"
  msgstr "Manglende eller ugyldigt konstant udtryk"
  
! #: fortran/expr.cc:4521
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring starting and ending points of target specification at %L must be constant expressions"
  msgstr ""
  
! #: fortran/expr.cc:4537
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target is neither TARGET nor POINTER at %L"
  msgstr ""
  
! #: fortran/expr.cc:4552
  #, gcc-internal-format, gfc-internal-format
  msgid "Bad target in pointer assignment in PURE procedure at %L"
  msgstr ""
  
! #: fortran/expr.cc:4561
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment with vector subscript on rhs at %L"
  msgstr ""
  
! #: fortran/expr.cc:4569
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target has PROTECTED attribute at %L"
  msgstr ""
  
! #: fortran/expr.cc:4597 fortran/expr.cc:4602
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to contiguous pointer from non-contiguous target at %L"
  msgstr ""
  
! #: fortran/expr.cc:4642
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer at %L in pointer assignment might outlive the pointer target"
  msgstr ""
  
! #: fortran/expr.cc:4722 fortran/resolve.cc:1573
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer initialization target at %L must not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/expr.cc:4728
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer initialization target at %L must have the TARGET attribute"
  msgstr ""
  
! #: fortran/expr.cc:4743 fortran/resolve.cc:1579
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer initialization target at %L must have the SAVE attribute"
  msgstr ""
  
! #: fortran/expr.cc:4755
  #, gcc-internal-format, gfc-internal-format
  msgid "Procedure pointer initialization target at %L may not be a procedure pointer"
  msgstr ""
  
! #: fortran/expr.cc:4761
  #, fuzzy, gcc-internal-format
  #| msgid "Statement at %0 invalid in context established by statement at %1"
  msgid "Internal procedure %qs is invalid in procedure pointer initialization at %L"
  msgstr "SÃ¦tning ved %0 er ugyldig i den kontekst der er etableret af sÃ¦tning ved %1"
  
! #: fortran/expr.cc:4768
  #, fuzzy, gcc-internal-format
  #| msgid "Statement at %0 invalid in context established by statement at %1"
  msgid "Dummy procedure %qs is invalid in procedure pointer initialization at %L"
  msgstr "SÃ¦tning ved %0 er ugyldig i den kontekst der er etableret af sÃ¦tning ved %1"
  
! #: fortran/expr.cc:5252
  #, gcc-internal-format
  msgid "generate_isocbinding_initializer(): bad iso_c_binding type, expected %<c_ptr%> or %<c_funptr%>"
  msgstr ""
  
! #: fortran/expr.cc:6385
  #, gcc-internal-format, gfc-internal-format
  msgid "Fortran 2008: Pointer functions in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6393
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-variable expression in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6401
  #, gcc-internal-format
  msgid "Named constant %qs in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6412
  #, gcc-internal-format
  msgid "%qs in variable definition context (%s) at %L is not a variable"
  msgstr ""
  
! #: fortran/expr.cc:6423
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-POINTER in pointer association context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6432
  #, gcc-internal-format, gfc-internal-format
  msgid "Type inaccessible in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6445
  #, gcc-internal-format, gfc-internal-format
  msgid "LOCK_TYPE in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6458
  #, gcc-internal-format, gfc-internal-format
  msgid "LOCK_EVENT in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6489
  #, fuzzy, gcc-internal-format
  msgid "%qs parameter inquiry for %qs in variable definition context (%s) at %L"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: fortran/expr.cc:6506
  #, gcc-internal-format
  msgid "Dummy argument %qs with INTENT(IN) in pointer association context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6516
  #, gcc-internal-format
  msgid "Dummy argument %qs with INTENT(IN) in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6532
  #, fuzzy, gcc-internal-format
  msgid "Variable %qs is PROTECTED and cannot appear in a pointer association context (%s) at %L"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: fortran/expr.cc:6540
  #, fuzzy, gcc-internal-format
  msgid "Variable %qs is PROTECTED and cannot appear in a variable definition context (%s) at %L"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: fortran/expr.cc:6555
  #, fuzzy, gcc-internal-format
  msgid "Variable %qs cannot appear in a variable definition context (%s) at %L in PURE procedure"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: fortran/expr.cc:6615 fortran/expr.cc:6636
  #, gcc-internal-format
  msgid "%qs at %L associated to vector-indexed target cannot be used in a variable definition context (%s)"
  msgstr ""
  
! #: fortran/expr.cc:6620
  #, gcc-internal-format
  msgid "%qs at %L associated to expression cannot be used in a variable definition context (%s)"
  msgstr ""
  
! #: fortran/expr.cc:6629
  #, gcc-internal-format
  msgid "%qs at %L associated to pointer function target being used in a variable definition context (%s)"
  msgstr ""
  
! #: fortran/expr.cc:6648
  #, gcc-internal-format
  msgid "Associate-name %qs cannot appear in a variable definition context (%s) at %L because its target at %L cannot, either"
  msgstr ""
  
! #: fortran/expr.cc:6690
  #, gcc-internal-format, gfc-internal-format
  msgid "Elements with the same value at %L and %L in vector subscript in a variable definition context (%s)"
  msgstr ""
--- 80580,80775 ----
  #. The test above might need to be extend when F08, Note 5.4 has to be
  #. interpreted in the way that target and pointer with the same coindex
  #. are allowed.
! #: fortran/expr.cc:4560 fortran/expr.cc:4686
  #, gcc-internal-format, gfc-internal-format
  msgid "Data target at %L shall not have a coindex"
  msgstr ""
  
! #: fortran/expr.cc:4563
  #, gcc-internal-format, gfc-internal-format
  msgid "Target expression in pointer assignment at %L must deliver a pointer result"
  msgstr ""
  
! #: fortran/expr.cc:4577
  #, gcc-internal-format, gfc-internal-format
  msgid "Zero-sized array detected at %L where an entity with the TARGET attribute is expected"
  msgstr ""
  
! #: fortran/expr.cc:4583 fortran/expr.cc:4598
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "pointer/integer type mismatch in conditional expression"
  msgid "Pointer assignment target in initialization expression does not have the TARGET attribute at %L"
  msgstr "henvisnings- og heltalstype i betingelsesudtrykket passer ikke sammen"
  
! #: fortran/expr.cc:4614
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Missing or invalid constant expression"
  msgid "Every subscript of target specification at %L must be a constant expression"
  msgstr "Manglende eller ugyldigt konstant udtryk"
  
! #: fortran/expr.cc:4625
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring starting and ending points of target specification at %L must be constant expressions"
  msgstr ""
  
! #: fortran/expr.cc:4641
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target is neither TARGET nor POINTER at %L"
  msgstr ""
  
! #: fortran/expr.cc:4656
  #, gcc-internal-format, gfc-internal-format
  msgid "Bad target in pointer assignment in PURE procedure at %L"
  msgstr ""
  
! #: fortran/expr.cc:4665
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment with vector subscript on rhs at %L"
  msgstr ""
  
! #: fortran/expr.cc:4673
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target has PROTECTED attribute at %L"
  msgstr ""
  
! #: fortran/expr.cc:4701 fortran/expr.cc:4706
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to contiguous pointer from non-contiguous target at %L"
  msgstr ""
  
! #: fortran/expr.cc:4746
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer at %L in pointer assignment might outlive the pointer target"
  msgstr ""
  
! #: fortran/expr.cc:4826 fortran/resolve.cc:1574
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer initialization target at %L must not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/expr.cc:4832
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer initialization target at %L must have the TARGET attribute"
  msgstr ""
  
! #: fortran/expr.cc:4847 fortran/resolve.cc:1580
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer initialization target at %L must have the SAVE attribute"
  msgstr ""
  
! #: fortran/expr.cc:4859
  #, gcc-internal-format, gfc-internal-format
  msgid "Procedure pointer initialization target at %L may not be a procedure pointer"
  msgstr ""
  
! #: fortran/expr.cc:4865
  #, fuzzy, gcc-internal-format
  #| msgid "Statement at %0 invalid in context established by statement at %1"
  msgid "Internal procedure %qs is invalid in procedure pointer initialization at %L"
  msgstr "SÃ¦tning ved %0 er ugyldig i den kontekst der er etableret af sÃ¦tning ved %1"
  
! #: fortran/expr.cc:4872
  #, fuzzy, gcc-internal-format
  #| msgid "Statement at %0 invalid in context established by statement at %1"
  msgid "Dummy procedure %qs is invalid in procedure pointer initialization at %L"
  msgstr "SÃ¦tning ved %0 er ugyldig i den kontekst der er etableret af sÃ¦tning ved %1"
  
! #: fortran/expr.cc:5356
  #, gcc-internal-format
  msgid "generate_isocbinding_initializer(): bad iso_c_binding type, expected %<c_ptr%> or %<c_funptr%>"
  msgstr ""
  
! #: fortran/expr.cc:6489
  #, gcc-internal-format, gfc-internal-format
  msgid "Fortran 2008: Pointer functions in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6497
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-variable expression in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6505
  #, gcc-internal-format
  msgid "Named constant %qs in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6516
  #, gcc-internal-format
  msgid "%qs in variable definition context (%s) at %L is not a variable"
  msgstr ""
  
! #: fortran/expr.cc:6527
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-POINTER in pointer association context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6536
  #, gcc-internal-format, gfc-internal-format
  msgid "Type inaccessible in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6549
  #, gcc-internal-format, gfc-internal-format
  msgid "LOCK_TYPE in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6562
  #, gcc-internal-format, gfc-internal-format
  msgid "LOCK_EVENT in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6593
  #, fuzzy, gcc-internal-format
  msgid "%qs parameter inquiry for %qs in variable definition context (%s) at %L"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: fortran/expr.cc:6610
  #, gcc-internal-format
  msgid "Dummy argument %qs with INTENT(IN) in pointer association context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6620
  #, gcc-internal-format
  msgid "Dummy argument %qs with INTENT(IN) in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6636
  #, fuzzy, gcc-internal-format
  msgid "Variable %qs is PROTECTED and cannot appear in a pointer association context (%s) at %L"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: fortran/expr.cc:6644
  #, fuzzy, gcc-internal-format
  msgid "Variable %qs is PROTECTED and cannot appear in a variable definition context (%s) at %L"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: fortran/expr.cc:6659
  #, fuzzy, gcc-internal-format
  msgid "Variable %qs cannot appear in a variable definition context (%s) at %L in PURE procedure"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: fortran/expr.cc:6719 fortran/expr.cc:6740
  #, gcc-internal-format
  msgid "%qs at %L associated to vector-indexed target cannot be used in a variable definition context (%s)"
  msgstr ""
  
! #: fortran/expr.cc:6724
  #, gcc-internal-format
  msgid "%qs at %L associated to expression cannot be used in a variable definition context (%s)"
  msgstr ""
  
! #: fortran/expr.cc:6733
  #, gcc-internal-format
  msgid "%qs at %L associated to pointer function target being used in a variable definition context (%s)"
  msgstr ""
  
! #: fortran/expr.cc:6752
  #, gcc-internal-format
  msgid "Associate-name %qs cannot appear in a variable definition context (%s) at %L because its target at %L cannot, either"
  msgstr ""
  
! #: fortran/expr.cc:6794
  #, gcc-internal-format, gfc-internal-format
  msgid "Elements with the same value at %L and %L in vector subscript in a variable definition context (%s)"
  msgstr ""
*************** msgid "Illegal id in copy_walk_reduction
*** 80690,80697 ****
  msgstr ""
  
  #: fortran/frontend-passes.cc:874 fortran/trans-array.cc:1565
! #: fortran/trans-array.cc:7434 fortran/trans-array.cc:9248
! #: fortran/trans-intrinsic.cc:8577
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "creating array of `%T'"
  msgid "Creating array temporary at %L"
--- 80792,80799 ----
  msgstr ""
  
  #: fortran/frontend-passes.cc:874 fortran/trans-array.cc:1565
! #: fortran/trans-array.cc:7436 fortran/trans-array.cc:9250
! #: fortran/trans-intrinsic.cc:8556
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "creating array of `%T'"
  msgid "Creating array temporary at %L"
*************** msgstr ""
*** 80865,81677 ****
  msgid "Expecting %<END INTERFACE OPERATOR (.%s.)%> at %C"
  msgstr ""
  
! #: fortran/interface.cc:458
  #, gcc-internal-format
  msgid "Expecting %<END INTERFACE %s%> at %C"
  msgstr ""
  
! #: fortran/interface.cc:655
  #, gcc-internal-format
  msgid "gfc_compare_derived_types: invalid derived type"
  msgstr ""
  
! #: fortran/interface.cc:943
  #, gcc-internal-format, gfc-internal-format
  msgid "Alternate return cannot appear in operator interface at %L"
  msgstr ""
  
! #: fortran/interface.cc:972
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment operator interface at %L must have two arguments"
  msgstr ""
  
! #: fortran/interface.cc:975
  #, gcc-internal-format, gfc-internal-format
  msgid "Operator interface at %L has the wrong number of arguments"
  msgstr ""
  
! #: fortran/interface.cc:988
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment operator interface at %L must be a SUBROUTINE"
  msgstr ""
  
! #: fortran/interface.cc:1006
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment operator interface at %L must not redefine an INTRINSIC type assignment"
  msgstr ""
  
! #: fortran/interface.cc:1015
  #, gcc-internal-format, gfc-internal-format
  msgid "Intrinsic operator interface at %L must be a FUNCTION"
  msgstr ""
  
! #: fortran/interface.cc:1026
  #, gcc-internal-format, gfc-internal-format
  msgid "First argument of defined assignment at %L must be INTENT(OUT) or INTENT(INOUT)"
  msgstr ""
  
! #: fortran/interface.cc:1033
  #, gcc-internal-format, gfc-internal-format
  msgid "Second argument of defined assignment at %L must be INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:1042 fortran/resolve.cc:19136
  #, gcc-internal-format, gfc-internal-format
  msgid "First argument of operator interface at %L must be INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:1049 fortran/resolve.cc:19154
  #, gcc-internal-format, gfc-internal-format
  msgid "Second argument of operator interface at %L must be INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:1154
  #, gcc-internal-format, gfc-internal-format
  msgid "Operator interface at %L conflicts with intrinsic interface"
  msgstr ""
  
! #: fortran/interface.cc:1518 fortran/interface.cc:1590
  #, gcc-internal-format, gfc-internal-format
  msgid "check_dummy_characteristics: Unexpected result %i of gfc_dep_compare_expr"
  msgstr ""
  
! #: fortran/interface.cc:1715
  #, gcc-internal-format, gfc-internal-format
  msgid "Possible character length mismatch in function result between %L and %L"
  msgstr ""
  
! #: fortran/interface.cc:1724
  #, gcc-internal-format, gfc-internal-format
  msgid "check_result_characteristics (1): Unexpected result %i of gfc_dep_compare_expr"
  msgstr ""
  
! #: fortran/interface.cc:1771
  #, gcc-internal-format, gfc-internal-format
  msgid "check_result_characteristics (2): Unexpected result %i of gfc_dep_compare_expr"
  msgstr ""
  
! #: fortran/interface.cc:1968
  #, fuzzy, gcc-internal-format
  #| msgid "External procedure `%A' is passed as actual argument at %0 but not explicitly declared EXTERNAL"
  msgid "Procedure %qs in %s at %L has no explicit interface; did you mean %qs?"
  msgstr "Ekstern procedure '%A' er overbragt som faktisk parameter ved %0, men ikke eksplicit erklÃ¦ret EXTERNAL"
  
! #: fortran/interface.cc:1973
  #, gcc-internal-format
  msgid "Procedure %qs in %s at %L has no explicit interface"
  msgstr ""
  
! #: fortran/interface.cc:1977
  #, gcc-internal-format
  msgid "Procedure %qs in %s at %L is neither function nor subroutine; did you mean %qs?"
  msgstr ""
  
! #: fortran/interface.cc:1981
  #, gcc-internal-format
  msgid "Procedure %qs in %s at %L is neither function nor subroutine"
  msgstr ""
  
! #: fortran/interface.cc:1993
  #, gcc-internal-format, gfc-internal-format
  msgid "In %s at %L procedures must be either all SUBROUTINEs or all FUNCTIONs"
  msgstr ""
  
! #: fortran/interface.cc:1997
  #, gcc-internal-format, gfc-internal-format
  msgid "In %s at %L procedures must be all FUNCTIONs as the generic name is also the name of a derived type"
  msgstr ""
  
! #: fortran/interface.cc:2005
  #, gcc-internal-format
  msgid "Internal procedure %qs in %s at %L"
  msgstr ""
  
! #: fortran/interface.cc:2062 fortran/interface.cc:2067
  #, fuzzy, gcc-internal-format
  #| msgid "conversion from NaN to int"
  msgid "Ambiguous interfaces in %s for %qs at %L and %qs at %L"
  msgstr "konvertering fra NaN til int"
  
! #: fortran/interface.cc:2072
  #, fuzzy, gcc-internal-format
  #| msgid "reference `%s' is ambiguous: appears in interface `%s' and interface `%s'"
  msgid "Although not referenced, %qs has ambiguous interfaces at %L"
  msgstr "reference '%s' er tvetydig: den optrÃ¦der i grÃ¦nsefladen '%s' og grÃ¦nsefladen '%s'"
  
! #: fortran/interface.cc:2110
  #, gcc-internal-format
  msgid "%qs at %L is not a module procedure"
  msgstr ""
  
! #: fortran/interface.cc:2315
  #, gcc-internal-format
  msgid "The assumed-rank array at %L requires that the dummy argument %qs has assumed-rank"
  msgstr ""
  
! #: fortran/interface.cc:2318
  #, gcc-internal-format
  msgid "Rank mismatch in argument %qs at %L (scalar and rank-%d)"
  msgstr ""
  
! #: fortran/interface.cc:2321
  #, gcc-internal-format
  msgid "Rank mismatch in argument %qs at %L (rank-%d and scalar)"
  msgstr ""
  
! #: fortran/interface.cc:2324
  #, gcc-internal-format
  msgid "Rank mismatch in argument %qs at %L (rank-%d and rank-%d)"
  msgstr ""
  
! #: fortran/interface.cc:2336
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank mismatch between actual argument at %L and actual argument at %L (scalar and rank-%d)"
  msgstr ""
  
! #: fortran/interface.cc:2340
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank mismatch between actual argument at %L and actual argument at %L (rank-%d and scalar)"
  msgstr ""
  
! #: fortran/interface.cc:2344
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank mismatch between actual argument at %L and actual argument at %L (rank-%d and rank-%d)"
  msgstr ""
  
! #: fortran/interface.cc:2468
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid type argument of `%s'"
  msgid "Invalid procedure argument at %L"
  msgstr "ugyldig typeparameter '%s'"
  
! #: fortran/interface.cc:2480 fortran/interface.cc:2496
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid lvalue in assignment"
  msgid "Interface mismatch in dummy procedure at %L conflicts with %L: %s"
  msgstr "ugyldig venstrevÃ¦rdi i tildeling"
  
! #: fortran/interface.cc:2484 fortran/interface.cc:2500
! #: fortran/interface.cc:2590
  #, gcc-internal-format
  msgid "Interface mismatch in dummy procedure %qs at %L: %s"
  msgstr ""
  
! #: fortran/interface.cc:2519
  #, gcc-internal-format
  msgid "Passing global subroutine %qs declared at %L as function at %L"
  msgstr ""
  
! #: fortran/interface.cc:2526
  #, fuzzy, gcc-internal-format
  #| msgid "Return values of functions in FPU registers"
  msgid "Passing global function %qs declared at %L as subroutine at %L"
  msgstr "ReturnÃ©r vÃ¦rdier fra funktioner i fpu-registre"
  
! #: fortran/interface.cc:2539
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "data member `%D' cannot be a member template"
  msgid "Mismatch between subroutine and function at %L"
  msgstr "datamedlem '%D' kan ikke vÃ¦re en medlemsskabelon"
  
! #: fortran/interface.cc:2548
  #, fuzzy, gcc-internal-format
  #| msgid "Return values of functions in FPU registers"
  msgid "Type mismatch at %L passing global function %qs declared at %L (%s/%s)"
  msgstr "ReturnÃ©r vÃ¦rdier fra funktioner i fpu-registre"
  
! #: fortran/interface.cc:2601
  #, gcc-internal-format
  msgid "Actual argument to contiguous pointer dummy %qs at %L must be simply contiguous"
  msgstr ""
  
! #: fortran/interface.cc:2624
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "type/value mismatch at argument %d in template parameter list for `%D'"
  msgid "Type mismatch between actual argument at %L and actual argument at %L (%s/%s)."
  msgstr "type/vÃ¦rdi-konflikt ved %d. parameter i skabelonsparameterliste for '%D'"
  
! #: fortran/interface.cc:2634
  #, fuzzy, gcc-internal-format
  #| msgid "type/value mismatch at argument %d in template parameter list for `%D'"
  msgid "Type mismatch in argument %qs at %L; passed %s to %s"
  msgstr "type/vÃ¦rdi-konflikt ved %d. parameter i skabelonsparameterliste for '%D'"
  
! #: fortran/interface.cc:2644
  #, gcc-internal-format
  msgid "Assumed-type actual argument at %L requires that dummy argument %qs is of assumed type"
  msgstr ""
  
! #: fortran/interface.cc:2658
  #, gcc-internal-format
  msgid "Assumed-type actual argument at %L corresponding to assumed-rank dummy argument %qs must be assumed-shape or assumed-rank"
  msgstr ""
  
! #: fortran/interface.cc:2675
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must be polymorphic"
  msgstr ""
  
! #: fortran/interface.cc:2685
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must have the same declared type"
  msgstr ""
  
! #: fortran/interface.cc:2700
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must be unlimited polymorphic since the formal argument is a pointer or allocatable unlimited polymorphic entity [F2008: 12.5.2.5]"
  msgstr ""
  
! #: fortran/interface.cc:2716
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must be a coarray"
  msgstr ""
  
! #: fortran/interface.cc:2738
  #, gcc-internal-format
  msgid "Corank mismatch in argument %qs at %L (%d and %d)"
  msgstr ""
  
! #: fortran/interface.cc:2756
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must be simply contiguous or an element of such an array"
  msgstr ""
  
! #: fortran/interface.cc:2771
  #, gcc-internal-format
  msgid "Actual argument to non-INTENT(INOUT) dummy %qs at %L, which is LOCK_TYPE or has a LOCK_TYPE component"
  msgstr ""
  
! #: fortran/interface.cc:2786
  #, gcc-internal-format
  msgid "Actual argument to non-INTENT(INOUT) dummy %qs at %L, which is EVENT_TYPE or has a EVENT_TYPE component"
  msgstr ""
  
! #: fortran/interface.cc:2805
  #, gcc-internal-format
  msgid "Dummy argument %qs has to be a pointer, assumed-shape or assumed-rank array without CONTIGUOUS attribute - as actual argument at %L is not simply contiguous and both are ASYNCHRONOUS or VOLATILE"
  msgstr ""
  
! #: fortran/interface.cc:2818
  #, gcc-internal-format
  msgid "Passing coarray at %L to allocatable, noncoarray, INTENT(OUT) dummy argument %qs"
  msgstr ""
  
! #: fortran/interface.cc:2825
  #, gcc-internal-format
  msgid "Passing coarray at %L to allocatable, noncoarray dummy argument %qs, which is invalid if the allocation status is modified"
  msgstr ""
  
! #: fortran/interface.cc:2912
  #, gcc-internal-format
  msgid "Polymorphic scalar passed to array dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:2923
  #, gcc-internal-format, gfc-internal-format
  msgid "Element of assumed-shape or pointer array as actual argument at %L cannot correspond to actual argument at %L"
  msgstr ""
  
! #: fortran/interface.cc:2928
  #, gcc-internal-format
  msgid "Element of assumed-shape or pointer array passed to array dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:2941
  #, gcc-internal-format
  msgid "Extension: Scalar non-default-kind, non-C_CHAR-kind CHARACTER actual argument with array dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:2949
  #, gcc-internal-format
  msgid "Fortran 2003: Scalar CHARACTER actual argument with array dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3338
  #, fuzzy, gcc-internal-format
  #| msgid "constructor cannot be static member function"
  msgid "Keyword argument %qs at %L is invalid in a statement function"
  msgstr "konstruktionsfunktionen kan ikke vÃ¦re en statisk medlemsfunktion"
  
! #: fortran/interface.cc:3361
  #, fuzzy, gcc-internal-format
  #| msgid "invalid argument of `%s' attribute"
  msgid "Keyword argument %qs at %L is not in the procedure; did you mean %qs?"
  msgstr "ugyldig parameter til egenskaben '%s'"
  
! #: fortran/interface.cc:3365
  #, gcc-internal-format
  msgid "Keyword argument %qs at %L is not in the procedure"
  msgstr ""
  
! #: fortran/interface.cc:3374
  #, gcc-internal-format
  msgid "Keyword argument %qs at %L is already associated with another actual argument"
  msgstr ""
  
! #: fortran/interface.cc:3384
  #, gcc-internal-format, gfc-internal-format
  msgid "More actual than formal arguments in procedure call at %L"
  msgstr ""
  
! #: fortran/interface.cc:3397
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Alternate return specifier at %0 invalid within a function"
  msgid "Missing alternate return specifier in subroutine call at %L"
  msgstr "Alternativ returangivelse ved %0 er ugyldig inden i en funktion"
  
! #: fortran/interface.cc:3415
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Alternate return specifier at %0 invalid within a function"
  msgid "Unexpected alternate return specifier in subroutine call at %L"
  msgstr "Alternativ returangivelse ved %0 er ugyldig inden i en funktion"
  
! #: fortran/interface.cc:3438
  #, gcc-internal-format
  msgid "Intrinsic %<NULL()%> without %<MOLD%> argument at %L passed to assumed-rank dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3451
  #, gcc-internal-format
  msgid "The assumed-size dummy %qs is being passed at %L to an assumed-rank dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3462
  #, gcc-internal-format
  msgid "Intrinsic %<NULL()%> without %<MOLD%> argument at %L passed to assumed-length dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3502
  #, gcc-internal-format
  msgid "Unexpected NULL() intrinsic at %L to dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3505
  #, gcc-internal-format
  msgid "Fortran 2008: Null pointer at %L to non-pointer dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3531
  #, gcc-internal-format, gfc-internal-format
  msgid "Actual argument at %L to assumed-type dummy has type parameters or is of derived type with type-bound or FINAL procedures"
  msgstr ""
  
! #: fortran/interface.cc:3543
  #, gcc-internal-format, gfc-internal-format
  msgid "Unlimited polymorphic actual argument at %L is not matched with either an unlimited polymorphic or assumed type dummy argument"
  msgstr ""
  
! #: fortran/interface.cc:3567
  #, gcc-internal-format
  msgid "Character length mismatch (%ld/%ld) between actual argument and pointer or allocatable dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3574
  #, gcc-internal-format
  msgid "Character length mismatch (%ld/%ld) between actual argument and assumed-shape dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3589
  #, gcc-internal-format
  msgid "Actual argument at %L to allocatable or pointer dummy argument %qs must have a deferred length type parameter if and only if the dummy has one"
  msgstr ""
  
! #: fortran/interface.cc:3612
  #, gcc-internal-format
  msgid "Character length of actual argument shorter than of dummy argument %qs (%lu/%lu) at %L"
  msgstr ""
  
! #: fortran/interface.cc:3622 fortran/interface.cc:3627
  #, gcc-internal-format
  msgid "Actual argument contains too few elements for dummy argument %qs (%lu/%lu) at %L"
  msgstr ""
  
! #: fortran/interface.cc:3653
  #, gcc-internal-format
  msgid "Expected a procedure pointer for argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3670
  #, gcc-internal-format
  msgid "Expected a procedure for argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3737
  #, gcc-internal-format
  msgid "Actual argument for %qs cannot be an assumed-size array at %L"
  msgstr ""
  
! #: fortran/interface.cc:3766
  #, gcc-internal-format
  msgid "Actual argument to assumed-rank INTENT(OUT) dummy %qs at %L cannot be of unknown size"
  msgstr ""
  
! #: fortran/interface.cc:3781
  #, fuzzy, gcc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "Actual argument for %qs at %L must be a pointer"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: fortran/interface.cc:3790
  #, gcc-internal-format
  msgid "Fortran 2008: Non-pointer actual argument at %L to pointer dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3799
  #, gcc-internal-format
  msgid "Actual argument for %qs at %L must be a pointer or a valid target for the dummy pointer in a pointer assignment statement"
  msgstr ""
  
! #: fortran/interface.cc:3813
  #, gcc-internal-format
  msgid "Coindexed actual argument at %L to pointer dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3827
  #, gcc-internal-format
  msgid "Coindexed actual argument at %L to allocatable dummy %qs requires INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:3842
  #, gcc-internal-format
  msgid "Coindexed ASYNCHRONOUS or VOLATILE actual argument at %L requires that dummy %qs has neither ASYNCHRONOUS nor VOLATILE"
  msgstr ""
  
! #: fortran/interface.cc:3857
  #, gcc-internal-format
  msgid "Coindexed actual argument at %L with allocatable ultimate component to dummy %qs requires either VALUE or INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:3870
  #, gcc-internal-format
  msgid "Actual CLASS array argument for %qs must be a full array at %L"
  msgstr ""
  
! #: fortran/interface.cc:3881
  #, gcc-internal-format
  msgid "Actual argument for %qs must be ALLOCATABLE at %L"
  msgstr ""
  
! #: fortran/interface.cc:3892
  #, gcc-internal-format
  msgid "Actual argument for %qs at %L is a function result and the dummy argument is ALLOCATABLE"
  msgstr ""
  
! #: fortran/interface.cc:3930
  #, gcc-internal-format
  msgid "Array-section actual argument with vector subscripts at %L is incompatible with INTENT(OUT), INTENT(INOUT), VOLATILE or ASYNCHRONOUS attribute of the dummy argument %qs"
  msgstr ""
  
! #: fortran/interface.cc:3950
  #, gcc-internal-format
  msgid "Assumed-shape actual argument at %L is incompatible with the non-assumed-shape dummy argument %qs due to VOLATILE attribute"
  msgstr ""
  
! #: fortran/interface.cc:3968
  #, gcc-internal-format
  msgid "Array-section actual argument at %L is incompatible with the non-assumed-shape dummy argument %qs due to VOLATILE attribute"
  msgstr ""
  
! #: fortran/interface.cc:3989
  #, gcc-internal-format
  msgid "Pointer-array actual argument at %L requires an assumed-shape or pointer-array dummy argument %qs due to VOLATILE attribute"
  msgstr ""
  
! #: fortran/interface.cc:4017
  #, gcc-internal-format, gfc-internal-format
  msgid "Missing alternate return spec in subroutine call at %L"
  msgstr ""
  
! #: fortran/interface.cc:4030
  #, fuzzy, gcc-internal-format
  #| msgid "Missing value at %1 for real-number exponent at %0"
  msgid "Missing actual argument for argument %qs at %L"
  msgstr "Manglende vÃ¦rdi ved %1 for reel eksponent ved %0"
  
! #: fortran/interface.cc:4158
  #, gcc-internal-format
  msgid "compare_actual_expr(): Bad component code"
  msgstr ""
  
! #: fortran/interface.cc:4187
  #, gcc-internal-format
  msgid "check_some_aliasing(): List mismatch"
  msgstr ""
  
! #: fortran/interface.cc:4213
  #, gcc-internal-format
  msgid "check_some_aliasing(): corrupted data"
  msgstr ""
  
! #: fortran/interface.cc:4223
  #, gcc-internal-format
  msgid "Same actual argument associated with INTENT(%s) argument %qs and INTENT(%s) argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:4253
  #, gcc-internal-format
  msgid "check_intents(): List mismatch"
  msgstr ""
  
! #: fortran/interface.cc:4273
  #, gcc-internal-format, gfc-internal-format
  msgid "Procedure argument at %L is local to a PURE procedure and has the POINTER attribute"
  msgstr ""
  
! #: fortran/interface.cc:4285
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed actual argument at %L in PURE procedure is passed to an INTENT(%s) argument"
  msgstr ""
  
! #: fortran/interface.cc:4295
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed actual argument at %L in PURE procedure is passed to a POINTER dummy argument"
  msgstr ""
  
! #: fortran/interface.cc:4306
  #, gcc-internal-format
  msgid "Coindexed polymorphic actual argument at %L is passed polymorphic dummy argument %qs"
  msgstr ""
  
! #: fortran/interface.cc:4348
  #, fuzzy, gcc-internal-format
  #| msgid "External procedure `%A' is passed as actual argument at %0 but not explicitly declared EXTERNAL"
  msgid "Procedure %qs called at %L is not explicitly declared; did you mean %qs?"
  msgstr "Ekstern procedure '%A' er overbragt som faktisk parameter ved %0, men ikke eksplicit erklÃ¦ret EXTERNAL"
  
! #: fortran/interface.cc:4352 fortran/interface.cc:4362
  #, fuzzy, gcc-internal-format
  #| msgid "External procedure `%A' is passed as actual argument at %0 but not explicitly declared EXTERNAL"
  msgid "Procedure %qs called at %L is not explicitly declared"
  msgstr "Ekstern procedure '%A' er overbragt som faktisk parameter ved %0, men ikke eksplicit erklÃ¦ret EXTERNAL"
  
! #: fortran/interface.cc:4358
  #, gcc-internal-format
  msgid "Procedure %qs called with an implicit interface at %L"
  msgstr ""
  
! #: fortran/interface.cc:4371
  #, gcc-internal-format
  msgid "The pointer object %qs at %L must have an explicit function interface or be declared as array"
  msgstr ""
  
! #: fortran/interface.cc:4379
  #, gcc-internal-format
  msgid "The allocatable object %qs at %L must have an explicit function interface or be declared as array"
  msgstr ""
  
! #: fortran/interface.cc:4387
  #, gcc-internal-format
  msgid "Allocatable function %qs at %L must have an explicit function interface"
  msgstr ""
  
! #: fortran/interface.cc:4404
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid option argument `%s'"
  msgid "Explicit interface required for polymorphic argument at %L"
  msgstr "ugyldig tilvalgsparameter '%s'"
  
! #: fortran/interface.cc:4413
  #, gcc-internal-format
  msgid "Keyword argument requires explicit interface for procedure %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:4422
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type argument %s at %L requires an explicit interface"
  msgstr ""
  
! #: fortran/interface.cc:4437
  #, gcc-internal-format
  msgid "Actual argument of LOCK_TYPE or with LOCK_TYPE component at %L requires an explicit interface for procedure %qs"
  msgstr ""
  
! #: fortran/interface.cc:4452
  #, gcc-internal-format
  msgid "Actual argument of EVENT_TYPE or with EVENT_TYPE component at %L requires an explicit interface for procedure %qs"
  msgstr ""
  
! #: fortran/interface.cc:4462
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD argument to NULL required at %L"
  msgstr ""
  
! #: fortran/interface.cc:4470
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Intrinsic `%A' is passed as actual argument at %0 but not explicitly declared INTRINSIC"
  msgid "Passing intrinsic NULL as actual argument at %L requires an explicit interface"
  msgstr "Indbygget '%A' er overbragt som faktisk parameter ved %0, men ikke eksplicit erklÃ¦ret INTRINSIC"
  
! #: fortran/interface.cc:4480
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank argument requires an explicit interface at %L"
  msgstr ""
  
! #: fortran/interface.cc:4522
  #, gcc-internal-format
  msgid "Procedure pointer component %qs called with an implicit interface at %L"
  msgstr ""
  
! #: fortran/interface.cc:4533
  #, gcc-internal-format
  msgid "Keyword argument requires explicit interface for procedure pointer component %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:4618
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD= required in NULL() argument at %L: Ambiguity between specific functions %s and %s"
  msgstr ""
  
! #: fortran/interface.cc:4688
  #, fuzzy, gcc-internal-format
  #| msgid "failed to find class '%s'"
  msgid "Unable to find symbol %qs"
  msgstr "kunne ikke finde klassen '%s'"
  
! #: fortran/interface.cc:5072
  #, gcc-internal-format
  msgid "Entity %qs at %L is already present in the interface"
  msgstr ""
  
! #: fortran/interface.cc:5189
  #, fuzzy, gcc-internal-format
  #| msgid "internal error - too many interface type"
  msgid "gfc_add_interface(): Bad interface type"
  msgstr "intern fejl - for mange grÃ¦nsefladetyper"
  
! #: fortran/interface.cc:5283
  #, fuzzy, gcc-internal-format
  msgid "Cannot overwrite GENERIC %qs at %L"
  msgstr "kunne ikke konvertere '%E' til '%T'"
  
! #: fortran/interface.cc:5295
  #, gcc-internal-format
  msgid "%qs at %L overrides a procedure binding declared NON_OVERRIDABLE"
  msgstr ""
  
! #: fortran/interface.cc:5303
  #, gcc-internal-format
  msgid "%qs at %L must not be DEFERRED as it overrides a non-DEFERRED binding"
  msgstr ""
  
! #: fortran/interface.cc:5311
  #, gcc-internal-format
  msgid "%qs at %L overrides a PURE procedure and must also be PURE"
  msgstr ""
  
! #: fortran/interface.cc:5320
  #, gcc-internal-format
  msgid "%qs at %L overrides an ELEMENTAL procedure and must also be ELEMENTAL"
  msgstr ""
  
! #: fortran/interface.cc:5326
  #, gcc-internal-format
  msgid "%qs at %L overrides a non-ELEMENTAL procedure and must not be ELEMENTAL, either"
  msgstr ""
  
! #: fortran/interface.cc:5335
  #, gcc-internal-format
  msgid "%qs at %L overrides a SUBROUTINE and must also be a SUBROUTINE"
  msgstr ""
  
! #: fortran/interface.cc:5346
  #, gcc-internal-format
  msgid "%qs at %L overrides a FUNCTION and must also be a FUNCTION"
  msgstr ""
  
! #: fortran/interface.cc:5354
  #, gcc-internal-format
  msgid "Result mismatch for the overriding procedure %qs at %L: %s"
  msgstr ""
  
! #: fortran/interface.cc:5365
  #, gcc-internal-format
  msgid "%qs at %L overrides a PUBLIC procedure and must not be PRIVATE"
  msgstr ""
  
! #: fortran/interface.cc:5395
  #, gcc-internal-format
  msgid "Dummy argument %qs of %qs at %L should be named %qs as to match the corresponding argument of the overridden procedure"
  msgstr ""
  
! #: fortran/interface.cc:5406
  #, gcc-internal-format
  msgid "Argument mismatch for the overriding procedure %qs at %L: %s"
  msgstr ""
  
! #: fortran/interface.cc:5415
  #, gcc-internal-format
  msgid "%qs at %L must have the same number of formal arguments as the overridden procedure"
  msgstr ""
  
! #: fortran/interface.cc:5424
  #, gcc-internal-format
  msgid "%qs at %L overrides a NOPASS binding and must also be NOPASS"
  msgstr ""
  
! #: fortran/interface.cc:5435
  #, gcc-internal-format
  msgid "%qs at %L overrides a binding with PASS and must also be PASS"
  msgstr ""
  
! #: fortran/interface.cc:5442
  #, gcc-internal-format
  msgid "Passed-object dummy argument of %qs at %L must be at the same position as the passed-object dummy argument of the overridden procedure"
  msgstr ""
  
! #: fortran/interface.cc:5463
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "`%D' is not a member of type `%T'"
  msgid "DTIO dummy argument at %L must be of type %s"
  msgstr "'%D' er ikke et medlem af typen '%T'"
  
! #: fortran/interface.cc:5470
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "accumulator number is out of bounds"
  msgid "DTIO dummy argument at %L must be of KIND = %d"
  msgstr "akkumulatortal er uden for det gyldig interval"
  
! #: fortran/interface.cc:5477
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "DTIO dummy argument at %L must be a scalar"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: fortran/interface.cc:5481
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO dummy argument at %L must be an ASSUMED SHAPE ARRAY"
  msgstr ""
  
! #: fortran/interface.cc:5485
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Return values of functions in FPU registers"
  msgid "DTIO character argument at %L must have assumed length"
  msgstr "ReturnÃ©r vÃ¦rdier fra funktioner i fpu-registre"
  
! #: fortran/interface.cc:5489
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "complex arguments must have identical types"
  msgid "DTIO dummy argument at %L must have INTENT %s"
  msgstr "komplekse parametre skal have identiske typer"
  
! #: fortran/interface.cc:5547 fortran/interface.cc:5593
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "SAVE statement or attribute at %1 cannot be specified along with SAVE statement or attribute at %0"
  msgid "Alternate return at %L is not permitted in a DTIO procedure"
  msgstr "SAVE-sÃ¦tning eller -egenskab ved %1 kan ikke angives sammen med SAVE-sÃ¦tning eller -egenskab ved %0"
  
! #: fortran/interface.cc:5559
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must take exactly one argument"
  msgid "DTIO procedure %qs at %L must be a subroutine"
  msgstr "'%s' skal tage mod Ã©n parameter"
  
! #: fortran/interface.cc:5571
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to %s `%+#D'"
  msgid "Too few dummy arguments in DTIO procedure %qs at %L"
  msgstr "for mange parametre til %s '%+#D'"
  
! #: fortran/interface.cc:5578
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to %s `%+#D'"
  msgid "Too many dummy arguments in DTIO procedure %qs at %L"
--- 80967,81779 ----
  msgid "Expecting %<END INTERFACE OPERATOR (.%s.)%> at %C"
  msgstr ""
  
! #: fortran/interface.cc:468
  #, gcc-internal-format
  msgid "Expecting %<END INTERFACE %s%> at %C"
  msgstr ""
  
! #: fortran/interface.cc:664
  #, gcc-internal-format
  msgid "gfc_compare_derived_types: invalid derived type"
  msgstr ""
  
! #: fortran/interface.cc:952
  #, gcc-internal-format, gfc-internal-format
  msgid "Alternate return cannot appear in operator interface at %L"
  msgstr ""
  
! #: fortran/interface.cc:981
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment operator interface at %L must have two arguments"
  msgstr ""
  
! #: fortran/interface.cc:984
  #, gcc-internal-format, gfc-internal-format
  msgid "Operator interface at %L has the wrong number of arguments"
  msgstr ""
  
! #: fortran/interface.cc:997
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment operator interface at %L must be a SUBROUTINE"
  msgstr ""
  
! #: fortran/interface.cc:1015
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment operator interface at %L must not redefine an INTRINSIC type assignment"
  msgstr ""
  
! #: fortran/interface.cc:1024
  #, gcc-internal-format, gfc-internal-format
  msgid "Intrinsic operator interface at %L must be a FUNCTION"
  msgstr ""
  
! #: fortran/interface.cc:1035
  #, gcc-internal-format, gfc-internal-format
  msgid "First argument of defined assignment at %L must be INTENT(OUT) or INTENT(INOUT)"
  msgstr ""
  
! #: fortran/interface.cc:1042
  #, gcc-internal-format, gfc-internal-format
  msgid "Second argument of defined assignment at %L must be INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:1051 fortran/resolve.cc:19136
  #, gcc-internal-format, gfc-internal-format
  msgid "First argument of operator interface at %L must be INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:1058 fortran/resolve.cc:19154
  #, gcc-internal-format, gfc-internal-format
  msgid "Second argument of operator interface at %L must be INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:1163
  #, gcc-internal-format, gfc-internal-format
  msgid "Operator interface at %L conflicts with intrinsic interface"
  msgstr ""
  
! #: fortran/interface.cc:1532 fortran/interface.cc:1604
  #, gcc-internal-format, gfc-internal-format
  msgid "check_dummy_characteristics: Unexpected result %i of gfc_dep_compare_expr"
  msgstr ""
  
! #: fortran/interface.cc:1729
  #, gcc-internal-format, gfc-internal-format
  msgid "Possible character length mismatch in function result between %L and %L"
  msgstr ""
  
! #: fortran/interface.cc:1738
  #, gcc-internal-format, gfc-internal-format
  msgid "check_result_characteristics (1): Unexpected result %i of gfc_dep_compare_expr"
  msgstr ""
  
! #: fortran/interface.cc:1785
  #, gcc-internal-format, gfc-internal-format
  msgid "check_result_characteristics (2): Unexpected result %i of gfc_dep_compare_expr"
  msgstr ""
  
! #: fortran/interface.cc:1982
  #, fuzzy, gcc-internal-format
  #| msgid "External procedure `%A' is passed as actual argument at %0 but not explicitly declared EXTERNAL"
  msgid "Procedure %qs in %s at %L has no explicit interface; did you mean %qs?"
  msgstr "Ekstern procedure '%A' er overbragt som faktisk parameter ved %0, men ikke eksplicit erklÃ¦ret EXTERNAL"
  
! #: fortran/interface.cc:1987
  #, gcc-internal-format
  msgid "Procedure %qs in %s at %L has no explicit interface"
  msgstr ""
  
! #: fortran/interface.cc:1991
  #, gcc-internal-format
  msgid "Procedure %qs in %s at %L is neither function nor subroutine; did you mean %qs?"
  msgstr ""
  
! #: fortran/interface.cc:1995
  #, gcc-internal-format
  msgid "Procedure %qs in %s at %L is neither function nor subroutine"
  msgstr ""
  
! #: fortran/interface.cc:2007
  #, gcc-internal-format, gfc-internal-format
  msgid "In %s at %L procedures must be either all SUBROUTINEs or all FUNCTIONs"
  msgstr ""
  
! #: fortran/interface.cc:2011
  #, gcc-internal-format, gfc-internal-format
  msgid "In %s at %L procedures must be all FUNCTIONs as the generic name is also the name of a derived type"
  msgstr ""
  
! #: fortran/interface.cc:2019
  #, gcc-internal-format
  msgid "Internal procedure %qs in %s at %L"
  msgstr ""
  
! #: fortran/interface.cc:2076 fortran/interface.cc:2081
  #, fuzzy, gcc-internal-format
  #| msgid "conversion from NaN to int"
  msgid "Ambiguous interfaces in %s for %qs at %L and %qs at %L"
  msgstr "konvertering fra NaN til int"
  
! #: fortran/interface.cc:2086
  #, fuzzy, gcc-internal-format
  #| msgid "reference `%s' is ambiguous: appears in interface `%s' and interface `%s'"
  msgid "Although not referenced, %qs has ambiguous interfaces at %L"
  msgstr "reference '%s' er tvetydig: den optrÃ¦der i grÃ¦nsefladen '%s' og grÃ¦nsefladen '%s'"
  
! #: fortran/interface.cc:2124
  #, gcc-internal-format
  msgid "%qs at %L is not a module procedure"
  msgstr ""
  
! #: fortran/interface.cc:2329
  #, gcc-internal-format
  msgid "The assumed-rank array at %L requires that the dummy argument %qs has assumed-rank"
  msgstr ""
  
! #: fortran/interface.cc:2332
  #, gcc-internal-format
  msgid "Rank mismatch in argument %qs at %L (scalar and rank-%d)"
  msgstr ""
  
! #: fortran/interface.cc:2335
  #, gcc-internal-format
  msgid "Rank mismatch in argument %qs at %L (rank-%d and scalar)"
  msgstr ""
  
! #: fortran/interface.cc:2338
  #, gcc-internal-format
  msgid "Rank mismatch in argument %qs at %L (rank-%d and rank-%d)"
  msgstr ""
  
! #: fortran/interface.cc:2350
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank mismatch between actual argument at %L and actual argument at %L (scalar and rank-%d)"
  msgstr ""
  
! #: fortran/interface.cc:2354
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank mismatch between actual argument at %L and actual argument at %L (rank-%d and scalar)"
  msgstr ""
  
! #: fortran/interface.cc:2358
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank mismatch between actual argument at %L and actual argument at %L (rank-%d and rank-%d)"
  msgstr ""
  
! #: fortran/interface.cc:2482
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid type argument of `%s'"
  msgid "Invalid procedure argument at %L"
  msgstr "ugyldig typeparameter '%s'"
  
! #: fortran/interface.cc:2494 fortran/interface.cc:2510
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid lvalue in assignment"
  msgid "Interface mismatch in dummy procedure at %L conflicts with %L: %s"
  msgstr "ugyldig venstrevÃ¦rdi i tildeling"
  
! #: fortran/interface.cc:2498 fortran/interface.cc:2514
! #: fortran/interface.cc:2611
  #, gcc-internal-format
  msgid "Interface mismatch in dummy procedure %qs at %L: %s"
  msgstr ""
  
! #: fortran/interface.cc:2533
  #, gcc-internal-format
  msgid "Passing global subroutine %qs declared at %L as function at %L"
  msgstr ""
  
! #: fortran/interface.cc:2540
  #, fuzzy, gcc-internal-format
  #| msgid "Return values of functions in FPU registers"
  msgid "Passing global function %qs declared at %L as subroutine at %L"
  msgstr "ReturnÃ©r vÃ¦rdier fra funktioner i fpu-registre"
  
! #: fortran/interface.cc:2553
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "data member `%D' cannot be a member template"
  msgid "Mismatch between subroutine and function at %L"
  msgstr "datamedlem '%D' kan ikke vÃ¦re en medlemsskabelon"
  
! #: fortran/interface.cc:2569
  #, fuzzy, gcc-internal-format
  #| msgid "Return values of functions in FPU registers"
  msgid "Type mismatch at %L passing global function %qs declared at %L (%s/%s)"
  msgstr "ReturnÃ©r vÃ¦rdier fra funktioner i fpu-registre"
  
! #: fortran/interface.cc:2622
  #, gcc-internal-format
  msgid "Actual argument to contiguous pointer dummy %qs at %L must be simply contiguous"
  msgstr ""
  
! #: fortran/interface.cc:2645
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "type/value mismatch at argument %d in template parameter list for `%D'"
  msgid "Type mismatch between actual argument at %L and actual argument at %L (%s/%s)."
  msgstr "type/vÃ¦rdi-konflikt ved %d. parameter i skabelonsparameterliste for '%D'"
  
! #: fortran/interface.cc:2655
  #, fuzzy, gcc-internal-format
  #| msgid "type/value mismatch at argument %d in template parameter list for `%D'"
  msgid "Type mismatch in argument %qs at %L; passed %s to %s"
  msgstr "type/vÃ¦rdi-konflikt ved %d. parameter i skabelonsparameterliste for '%D'"
  
! #: fortran/interface.cc:2665
  #, gcc-internal-format
  msgid "Assumed-type actual argument at %L requires that dummy argument %qs is of assumed type"
  msgstr ""
  
! #: fortran/interface.cc:2679
  #, gcc-internal-format
  msgid "Assumed-type actual argument at %L corresponding to assumed-rank dummy argument %qs must be assumed-shape or assumed-rank"
  msgstr ""
  
! #: fortran/interface.cc:2696
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must be polymorphic"
  msgstr ""
  
! #: fortran/interface.cc:2706
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must have the same declared type"
  msgstr ""
  
! #: fortran/interface.cc:2721
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must be unlimited polymorphic since the formal argument is a pointer or allocatable unlimited polymorphic entity [F2008: 12.5.2.5]"
  msgstr ""
  
! #: fortran/interface.cc:2737
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must be a coarray"
  msgstr ""
  
! #: fortran/interface.cc:2759
  #, gcc-internal-format
  msgid "Corank mismatch in argument %qs at %L (%d and %d)"
  msgstr ""
  
! #: fortran/interface.cc:2777
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must be simply contiguous or an element of such an array"
  msgstr ""
  
! #: fortran/interface.cc:2792
  #, gcc-internal-format
  msgid "Actual argument to non-INTENT(INOUT) dummy %qs at %L, which is LOCK_TYPE or has a LOCK_TYPE component"
  msgstr ""
  
! #: fortran/interface.cc:2807
  #, gcc-internal-format
  msgid "Actual argument to non-INTENT(INOUT) dummy %qs at %L, which is EVENT_TYPE or has a EVENT_TYPE component"
  msgstr ""
  
! #: fortran/interface.cc:2826
  #, gcc-internal-format
  msgid "Dummy argument %qs has to be a pointer, assumed-shape or assumed-rank array without CONTIGUOUS attribute - as actual argument at %L is not simply contiguous and both are ASYNCHRONOUS or VOLATILE"
  msgstr ""
  
! #: fortran/interface.cc:2839
  #, gcc-internal-format
  msgid "Passing coarray at %L to allocatable, noncoarray, INTENT(OUT) dummy argument %qs"
  msgstr ""
  
! #: fortran/interface.cc:2846
  #, gcc-internal-format
  msgid "Passing coarray at %L to allocatable, noncoarray dummy argument %qs, which is invalid if the allocation status is modified"
  msgstr ""
  
! #: fortran/interface.cc:2933
  #, gcc-internal-format
  msgid "Polymorphic scalar passed to array dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:2944
  #, gcc-internal-format, gfc-internal-format
  msgid "Element of assumed-shape or pointer array as actual argument at %L cannot correspond to actual argument at %L"
  msgstr ""
  
! #: fortran/interface.cc:2949
  #, gcc-internal-format
  msgid "Element of assumed-shape or pointer array passed to array dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:2962
  #, gcc-internal-format
  msgid "Extension: Scalar non-default-kind, non-C_CHAR-kind CHARACTER actual argument with array dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:2970
  #, gcc-internal-format
  msgid "Fortran 2003: Scalar CHARACTER actual argument with array dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3359
  #, fuzzy, gcc-internal-format
  #| msgid "constructor cannot be static member function"
  msgid "Keyword argument %qs at %L is invalid in a statement function"
  msgstr "konstruktionsfunktionen kan ikke vÃ¦re en statisk medlemsfunktion"
  
! #: fortran/interface.cc:3382
  #, fuzzy, gcc-internal-format
  #| msgid "invalid argument of `%s' attribute"
  msgid "Keyword argument %qs at %L is not in the procedure; did you mean %qs?"
  msgstr "ugyldig parameter til egenskaben '%s'"
  
! #: fortran/interface.cc:3386
  #, gcc-internal-format
  msgid "Keyword argument %qs at %L is not in the procedure"
  msgstr ""
  
! #: fortran/interface.cc:3395
  #, gcc-internal-format
  msgid "Keyword argument %qs at %L is already associated with another actual argument"
  msgstr ""
  
! #: fortran/interface.cc:3405
  #, gcc-internal-format, gfc-internal-format
  msgid "More actual than formal arguments in procedure call at %L"
  msgstr ""
  
! #: fortran/interface.cc:3418
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Alternate return specifier at %0 invalid within a function"
  msgid "Missing alternate return specifier in subroutine call at %L"
  msgstr "Alternativ returangivelse ved %0 er ugyldig inden i en funktion"
  
! #: fortran/interface.cc:3436
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Alternate return specifier at %0 invalid within a function"
  msgid "Unexpected alternate return specifier in subroutine call at %L"
  msgstr "Alternativ returangivelse ved %0 er ugyldig inden i en funktion"
  
! #: fortran/interface.cc:3459
  #, gcc-internal-format
  msgid "Intrinsic %<NULL()%> without %<MOLD%> argument at %L passed to assumed-rank dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3472
  #, gcc-internal-format
  msgid "The assumed-size dummy %qs is being passed at %L to an assumed-rank dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3483
  #, gcc-internal-format
  msgid "Intrinsic %<NULL()%> without %<MOLD%> argument at %L passed to assumed-length dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3523
  #, gcc-internal-format
  msgid "Unexpected NULL() intrinsic at %L to dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3526
  #, gcc-internal-format
  msgid "Fortran 2008: Null pointer at %L to non-pointer dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3552
  #, gcc-internal-format, gfc-internal-format
  msgid "Actual argument at %L to assumed-type dummy has type parameters or is of derived type with type-bound or FINAL procedures"
  msgstr ""
  
! #: fortran/interface.cc:3564
  #, gcc-internal-format, gfc-internal-format
  msgid "Unlimited polymorphic actual argument at %L is not matched with either an unlimited polymorphic or assumed type dummy argument"
  msgstr ""
  
! #: fortran/interface.cc:3588
  #, gcc-internal-format
  msgid "Character length mismatch (%ld/%ld) between actual argument and pointer or allocatable dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3595
  #, gcc-internal-format
  msgid "Character length mismatch (%ld/%ld) between actual argument and assumed-shape dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3610
  #, gcc-internal-format
  msgid "Actual argument at %L to allocatable or pointer dummy argument %qs must have a deferred length type parameter if and only if the dummy has one"
  msgstr ""
  
! #: fortran/interface.cc:3633
  #, gcc-internal-format
  msgid "Character length of actual argument shorter than of dummy argument %qs (%lu/%lu) at %L"
  msgstr ""
  
! #: fortran/interface.cc:3643 fortran/interface.cc:3648
  #, gcc-internal-format
  msgid "Actual argument contains too few elements for dummy argument %qs (%lu/%lu) at %L"
  msgstr ""
  
! #: fortran/interface.cc:3674
  #, gcc-internal-format
  msgid "Expected a procedure pointer for argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3691
  #, gcc-internal-format
  msgid "Expected a procedure for argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3758
  #, gcc-internal-format
  msgid "Actual argument for %qs cannot be an assumed-size array at %L"
  msgstr ""
  
! #: fortran/interface.cc:3787
  #, gcc-internal-format
  msgid "Actual argument to assumed-rank INTENT(OUT) dummy %qs at %L cannot be of unknown size"
  msgstr ""
  
! #: fortran/interface.cc:3802
  #, fuzzy, gcc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "Actual argument for %qs at %L must be a pointer"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: fortran/interface.cc:3811
  #, gcc-internal-format
  msgid "Fortran 2008: Non-pointer actual argument at %L to pointer dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3820
  #, gcc-internal-format
  msgid "Actual argument for %qs at %L must be a pointer or a valid target for the dummy pointer in a pointer assignment statement"
  msgstr ""
  
! #: fortran/interface.cc:3834
  #, gcc-internal-format
  msgid "Coindexed actual argument at %L to pointer dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3848
  #, gcc-internal-format
  msgid "Coindexed actual argument at %L to allocatable dummy %qs requires INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:3863
  #, gcc-internal-format
  msgid "Coindexed ASYNCHRONOUS or VOLATILE actual argument at %L requires that dummy %qs has neither ASYNCHRONOUS nor VOLATILE"
  msgstr ""
  
! #: fortran/interface.cc:3878
  #, gcc-internal-format
  msgid "Coindexed actual argument at %L with allocatable ultimate component to dummy %qs requires either VALUE or INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:3891
  #, gcc-internal-format
  msgid "Actual CLASS array argument for %qs must be a full array at %L"
  msgstr ""
  
! #: fortran/interface.cc:3902
  #, gcc-internal-format
  msgid "Actual argument for %qs must be ALLOCATABLE at %L"
  msgstr ""
  
! #: fortran/interface.cc:3913
  #, gcc-internal-format
  msgid "Actual argument for %qs at %L is a function result and the dummy argument is ALLOCATABLE"
  msgstr ""
  
! #: fortran/interface.cc:3951
  #, gcc-internal-format
  msgid "Array-section actual argument with vector subscripts at %L is incompatible with INTENT(OUT), INTENT(INOUT), VOLATILE or ASYNCHRONOUS attribute of the dummy argument %qs"
  msgstr ""
  
! #: fortran/interface.cc:3971
  #, gcc-internal-format
  msgid "Assumed-shape actual argument at %L is incompatible with the non-assumed-shape dummy argument %qs due to VOLATILE attribute"
  msgstr ""
  
! #: fortran/interface.cc:3989
  #, gcc-internal-format
  msgid "Array-section actual argument at %L is incompatible with the non-assumed-shape dummy argument %qs due to VOLATILE attribute"
  msgstr ""
  
! #: fortran/interface.cc:4010
  #, gcc-internal-format
  msgid "Pointer-array actual argument at %L requires an assumed-shape or pointer-array dummy argument %qs due to VOLATILE attribute"
  msgstr ""
  
! #: fortran/interface.cc:4038
  #, gcc-internal-format, gfc-internal-format
  msgid "Missing alternate return spec in subroutine call at %L"
  msgstr ""
  
! #: fortran/interface.cc:4051
  #, fuzzy, gcc-internal-format
  #| msgid "Missing value at %1 for real-number exponent at %0"
  msgid "Missing actual argument for argument %qs at %L"
  msgstr "Manglende vÃ¦rdi ved %1 for reel eksponent ved %0"
  
! #: fortran/interface.cc:4179
  #, gcc-internal-format
  msgid "compare_actual_expr(): Bad component code"
  msgstr ""
  
! #: fortran/interface.cc:4208
  #, gcc-internal-format
  msgid "check_some_aliasing(): List mismatch"
  msgstr ""
  
! #: fortran/interface.cc:4234
  #, gcc-internal-format
  msgid "check_some_aliasing(): corrupted data"
  msgstr ""
  
! #: fortran/interface.cc:4244
  #, gcc-internal-format
  msgid "Same actual argument associated with INTENT(%s) argument %qs and INTENT(%s) argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:4274
  #, gcc-internal-format
  msgid "check_intents(): List mismatch"
  msgstr ""
  
! #: fortran/interface.cc:4294
  #, gcc-internal-format, gfc-internal-format
  msgid "Procedure argument at %L is local to a PURE procedure and has the POINTER attribute"
  msgstr ""
  
! #: fortran/interface.cc:4306
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed actual argument at %L in PURE procedure is passed to an INTENT(%s) argument"
  msgstr ""
  
! #: fortran/interface.cc:4316
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed actual argument at %L in PURE procedure is passed to a POINTER dummy argument"
  msgstr ""
  
! #: fortran/interface.cc:4327
  #, gcc-internal-format
  msgid "Coindexed polymorphic actual argument at %L is passed polymorphic dummy argument %qs"
  msgstr ""
  
! #: fortran/interface.cc:4369
  #, fuzzy, gcc-internal-format
  #| msgid "External procedure `%A' is passed as actual argument at %0 but not explicitly declared EXTERNAL"
  msgid "Procedure %qs called at %L is not explicitly declared; did you mean %qs?"
  msgstr "Ekstern procedure '%A' er overbragt som faktisk parameter ved %0, men ikke eksplicit erklÃ¦ret EXTERNAL"
  
! #: fortran/interface.cc:4373 fortran/interface.cc:4383
  #, fuzzy, gcc-internal-format
  #| msgid "External procedure `%A' is passed as actual argument at %0 but not explicitly declared EXTERNAL"
  msgid "Procedure %qs called at %L is not explicitly declared"
  msgstr "Ekstern procedure '%A' er overbragt som faktisk parameter ved %0, men ikke eksplicit erklÃ¦ret EXTERNAL"
  
! #: fortran/interface.cc:4379
  #, gcc-internal-format
  msgid "Procedure %qs called with an implicit interface at %L"
  msgstr ""
  
! #: fortran/interface.cc:4392
  #, gcc-internal-format
  msgid "The pointer object %qs at %L must have an explicit function interface or be declared as array"
  msgstr ""
  
! #: fortran/interface.cc:4400
  #, gcc-internal-format
  msgid "The allocatable object %qs at %L must have an explicit function interface or be declared as array"
  msgstr ""
  
! #: fortran/interface.cc:4408
  #, gcc-internal-format
  msgid "Allocatable function %qs at %L must have an explicit function interface"
  msgstr ""
  
! #: fortran/interface.cc:4425
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid option argument `%s'"
  msgid "Explicit interface required for polymorphic argument at %L"
  msgstr "ugyldig tilvalgsparameter '%s'"
  
! #: fortran/interface.cc:4434
  #, gcc-internal-format
  msgid "Keyword argument requires explicit interface for procedure %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:4443
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type argument %s at %L requires an explicit interface"
  msgstr ""
  
! #: fortran/interface.cc:4458
  #, gcc-internal-format
  msgid "Actual argument of LOCK_TYPE or with LOCK_TYPE component at %L requires an explicit interface for procedure %qs"
  msgstr ""
  
! #: fortran/interface.cc:4473
  #, gcc-internal-format
  msgid "Actual argument of EVENT_TYPE or with EVENT_TYPE component at %L requires an explicit interface for procedure %qs"
  msgstr ""
  
! #: fortran/interface.cc:4483
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD argument to NULL required at %L"
  msgstr ""
  
! #: fortran/interface.cc:4491
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Intrinsic `%A' is passed as actual argument at %0 but not explicitly declared INTRINSIC"
  msgid "Passing intrinsic NULL as actual argument at %L requires an explicit interface"
  msgstr "Indbygget '%A' er overbragt som faktisk parameter ved %0, men ikke eksplicit erklÃ¦ret INTRINSIC"
  
! #: fortran/interface.cc:4501
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank argument requires an explicit interface at %L"
  msgstr ""
  
! #: fortran/interface.cc:4543
  #, gcc-internal-format
  msgid "Procedure pointer component %qs called with an implicit interface at %L"
  msgstr ""
  
! #: fortran/interface.cc:4554
  #, gcc-internal-format
  msgid "Keyword argument requires explicit interface for procedure pointer component %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:4639
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD= required in NULL() argument at %L: Ambiguity between specific functions %s and %s"
  msgstr ""
  
! #: fortran/interface.cc:4709
  #, fuzzy, gcc-internal-format
  #| msgid "failed to find class '%s'"
  msgid "Unable to find symbol %qs"
  msgstr "kunne ikke finde klassen '%s'"
  
! #: fortran/interface.cc:5100
  #, gcc-internal-format
  msgid "Entity %qs at %L is already present in the interface"
  msgstr ""
  
! #: fortran/interface.cc:5217
  #, fuzzy, gcc-internal-format
  #| msgid "internal error - too many interface type"
  msgid "gfc_add_interface(): Bad interface type"
  msgstr "intern fejl - for mange grÃ¦nsefladetyper"
  
! #: fortran/interface.cc:5311
  #, fuzzy, gcc-internal-format
  msgid "Cannot overwrite GENERIC %qs at %L"
  msgstr "kunne ikke konvertere '%E' til '%T'"
  
! #: fortran/interface.cc:5323
  #, gcc-internal-format
  msgid "%qs at %L overrides a procedure binding declared NON_OVERRIDABLE"
  msgstr ""
  
! #: fortran/interface.cc:5331
  #, gcc-internal-format
  msgid "%qs at %L must not be DEFERRED as it overrides a non-DEFERRED binding"
  msgstr ""
  
! #: fortran/interface.cc:5339
  #, gcc-internal-format
  msgid "%qs at %L overrides a PURE procedure and must also be PURE"
  msgstr ""
  
! #: fortran/interface.cc:5348
  #, gcc-internal-format
  msgid "%qs at %L overrides an ELEMENTAL procedure and must also be ELEMENTAL"
  msgstr ""
  
! #: fortran/interface.cc:5354
  #, gcc-internal-format
  msgid "%qs at %L overrides a non-ELEMENTAL procedure and must not be ELEMENTAL, either"
  msgstr ""
  
! #: fortran/interface.cc:5363
  #, gcc-internal-format
  msgid "%qs at %L overrides a SUBROUTINE and must also be a SUBROUTINE"
  msgstr ""
  
! #: fortran/interface.cc:5374
  #, gcc-internal-format
  msgid "%qs at %L overrides a FUNCTION and must also be a FUNCTION"
  msgstr ""
  
! #: fortran/interface.cc:5382
  #, gcc-internal-format
  msgid "Result mismatch for the overriding procedure %qs at %L: %s"
  msgstr ""
  
! #: fortran/interface.cc:5393
  #, gcc-internal-format
  msgid "%qs at %L overrides a PUBLIC procedure and must not be PRIVATE"
  msgstr ""
  
! #: fortran/interface.cc:5423
  #, gcc-internal-format
  msgid "Dummy argument %qs of %qs at %L should be named %qs as to match the corresponding argument of the overridden procedure"
  msgstr ""
  
! #: fortran/interface.cc:5434
  #, gcc-internal-format
  msgid "Argument mismatch for the overriding procedure %qs at %L: %s"
  msgstr ""
  
! #: fortran/interface.cc:5443
  #, gcc-internal-format
  msgid "%qs at %L must have the same number of formal arguments as the overridden procedure"
  msgstr ""
  
! #: fortran/interface.cc:5452
  #, gcc-internal-format
  msgid "%qs at %L overrides a NOPASS binding and must also be NOPASS"
  msgstr ""
  
! #: fortran/interface.cc:5463
  #, gcc-internal-format
  msgid "%qs at %L overrides a binding with PASS and must also be PASS"
  msgstr ""
  
! #: fortran/interface.cc:5470
  #, gcc-internal-format
  msgid "Passed-object dummy argument of %qs at %L must be at the same position as the passed-object dummy argument of the overridden procedure"
  msgstr ""
  
! #: fortran/interface.cc:5491
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "`%D' is not a member of type `%T'"
  msgid "DTIO dummy argument at %L must be of type %s"
  msgstr "'%D' er ikke et medlem af typen '%T'"
  
! #: fortran/interface.cc:5498
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "accumulator number is out of bounds"
  msgid "DTIO dummy argument at %L must be of KIND = %d"
  msgstr "akkumulatortal er uden for det gyldig interval"
  
! #: fortran/interface.cc:5505
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "DTIO dummy argument at %L must be a scalar"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: fortran/interface.cc:5509
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO dummy argument at %L must be an ASSUMED SHAPE ARRAY"
  msgstr ""
  
! #: fortran/interface.cc:5513
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Return values of functions in FPU registers"
  msgid "DTIO character argument at %L must have assumed length"
  msgstr "ReturnÃ©r vÃ¦rdier fra funktioner i fpu-registre"
  
! #: fortran/interface.cc:5517
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "complex arguments must have identical types"
  msgid "DTIO dummy argument at %L must have INTENT %s"
  msgstr "komplekse parametre skal have identiske typer"
  
! #: fortran/interface.cc:5575 fortran/interface.cc:5621
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "SAVE statement or attribute at %1 cannot be specified along with SAVE statement or attribute at %0"
  msgid "Alternate return at %L is not permitted in a DTIO procedure"
  msgstr "SAVE-sÃ¦tning eller -egenskab ved %1 kan ikke angives sammen med SAVE-sÃ¦tning eller -egenskab ved %0"
  
! #: fortran/interface.cc:5587
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' must take exactly one argument"
  msgid "DTIO procedure %qs at %L must be a subroutine"
  msgstr "'%s' skal tage mod Ã©n parameter"
  
! #: fortran/interface.cc:5599
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to %s `%+#D'"
  msgid "Too few dummy arguments in DTIO procedure %qs at %L"
  msgstr "for mange parametre til %s '%+#D'"
  
! #: fortran/interface.cc:5606
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to %s `%+#D'"
  msgid "Too many dummy arguments in DTIO procedure %qs at %L"
*************** msgstr "konvertering fra NaN til int"
*** 81874,81880 ****
  #. Use of -fdec-char-conversions allows assignment of character data
  #. to non-character variables.  This not permitted for nonconstant
  #. strings.
! #: fortran/intrinsic.cc:5573 fortran/resolve.cc:12312
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Cannot convert %s to %s at %L"
  msgstr "kunne ikke konvertere '%E' til '%T'"
--- 81976,81982 ----
  #. Use of -fdec-char-conversions allows assignment of character data
  #. to non-character variables.  This not permitted for nonconstant
  #. strings.
! #: fortran/intrinsic.cc:5573 fortran/resolve.cc:12302
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Cannot convert %s to %s at %L"
  msgstr "kunne ikke konvertere '%E' til '%T'"
*************** msgstr "ukendt formateringsanvisning"
*** 82078,82640 ****
  msgid "The H format specifier at %L is a Fortran 95 deleted feature"
  msgstr ""
  
! #: fortran/io.cc:1231 fortran/io.cc:1293
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Missing class name"
! msgid "Missing comma at %L"
  msgstr "Manglende klassenavn"
  
! #: fortran/io.cc:1349
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Extraneous comma in FORMAT statement at %0"
  msgid "Extraneous characters in format at %L"
  msgstr "Ekstra komma i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/io.cc:1371
  #, gcc-internal-format, gfc-internal-format
  msgid "Format statement in module main block at %C"
  msgstr ""
  
! #: fortran/io.cc:1380
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "RETURN statement at %0 invalid within a main program unit"
  msgid "FORMAT statement at %C cannot appear within an INTERFACE"
  msgstr "RETURN-sÃ¦tning ved %0 ugyldig inden i en hovedprogramenhed"
  
! #: fortran/io.cc:1386
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Missing formal parameter term"
  msgid "Missing format label at %C"
  msgstr "Manglende formel parameterterm"
  
! #: fortran/io.cc:1441 fortran/io.cc:1472 fortran/io.cc:1552
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid base-class specification"
  msgid "Invalid value for %s specification at %C"
  msgstr "ugyldig stamklasseangivelse"
  
! #: fortran/io.cc:1447 fortran/io.cc:1478 fortran/io.cc:1634 fortran/io.cc:1647
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "after previous specification in `%#D'"
  msgid "Duplicate %s specification at %C"
  msgstr "efter tidligere specifikation i '%#D'"
  
! #: fortran/io.cc:1489
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s cannot be INTENT(IN) at %C"
  msgstr ""
  
! #: fortran/io.cc:1497
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s cannot be assigned in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:1527
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Extraneous comma in FORMAT statement at %0"
  msgid "Expecting a variable at %L"
  msgstr "Ekstra komma i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/io.cc:1558
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "duplicate label declaration `%s'"
  msgid "Duplicate %s label specification at %C"
  msgstr "etiketten '%s' er blevet erklÃ¦ret mere end Ã©n gang"
  
! #: fortran/io.cc:1578 fortran/io.cc:1595 fortran/io.cc:1616
  #, gcc-internal-format
  msgid "%s at %C is a DEC extension, enable with %<-fdec%>"
  msgstr ""
  
! #: fortran/io.cc:1669
  #, gcc-internal-format, gfc-internal-format
  msgid "Constant expression in FORMAT tag at %L must be of type default CHARACTER"
  msgstr ""
  
! #: fortran/io.cc:1694
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "data member `%D' cannot be a member template"
  msgid "FORMAT tag at %L cannot be a zero-sized array"
  msgstr "datamedlem '%D' kan ikke vÃ¦re en medlemsskabelon"
  
! #: fortran/io.cc:1735
  #, gcc-internal-format, gfc-internal-format
  msgid "FORMAT tag at %L must be of type default-kind CHARACTER or of INTEGER"
  msgstr ""
  
! #: fortran/io.cc:1741
  #, gcc-internal-format, gfc-internal-format
  msgid "ASSIGNED variable in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1746
  #, gcc-internal-format
  msgid "Variable %qs at %L has not been assigned a format label"
  msgstr ""
  
! #: fortran/io.cc:1753
  #, gcc-internal-format
  msgid "Scalar %qs in FORMAT tag at %L is not an ASSIGNED variable"
  msgstr ""
  
! #: fortran/io.cc:1768
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character non-Hollerith in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1772
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1778
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character assumed shape array element in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1785
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character assumed size array element in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1792
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character pointer array element in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1818
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "`%D' is not a member of type `%T'"
  msgid "%s tag at %L must be of type %s"
  msgstr "'%D' er ikke et medlem af typen '%T'"
  
! #: fortran/io.cc:1825
  #, gcc-internal-format, gfc-internal-format
  msgid "%s tag at %L must be a character string of default kind"
  msgstr ""
  
! #: fortran/io.cc:1832
  #, gcc-internal-format, gfc-internal-format
  msgid "%s tag at %L must be scalar"
  msgstr ""
  
! #: fortran/io.cc:1838
  #, gcc-internal-format, gfc-internal-format
  msgid "IOMSG tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1846
  #, gcc-internal-format, gfc-internal-format
  msgid "Fortran 95 requires default INTEGER in %s tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1855
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-default LOGICAL kind in %s tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1862
  #, gcc-internal-format, gfc-internal-format
  msgid "NEWUNIT specifier at %L"
  msgstr ""
  
! #: fortran/io.cc:1880
  #, gcc-internal-format, gfc-internal-format
  msgid "CONVERT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:2096
  #, fuzzy, gcc-internal-format
  #| msgid "Missing %A specifier in statement at %0"
  msgid "Fortran 2003: %s specifier in %s statement at %L has value %qs"
  msgstr "Manglende %A-angivelse i sÃ¦tning ved %0"
  
! #: fortran/io.cc:2104 fortran/io.cc:2131
  #, fuzzy, gcc-internal-format
  #| msgid "Missing %A specifier in statement at %0"
  msgid "%s specifier in %s statement at %L has value %qs"
  msgstr "Manglende %A-angivelse i sÃ¦tning ved %0"
  
! #: fortran/io.cc:2123
  #, fuzzy, gcc-internal-format
  #| msgid "Missing %A specifier in statement at %0"
  msgid "Extension: %s specifier in %s statement at %L has value %qs"
  msgstr "Manglende %A-angivelse i sÃ¦tning ved %0"
  
! #: fortran/io.cc:2145 fortran/io.cc:2153
  #, fuzzy, gcc-internal-format
  #| msgid "Missing %A specifier in statement at %0"
  msgid "%s specifier in %s statement at %L has invalid value %qs"
  msgstr "Manglende %A-angivelse i sÃ¦tning ved %0"
  
! #: fortran/io.cc:2210
  #, gcc-internal-format, gfc-internal-format
  msgid "ACTION type conflicts with READONLY specifier at %L"
  msgstr ""
  
! #: fortran/io.cc:2226
  #, gcc-internal-format, gfc-internal-format
  msgid "ASYNCHRONOUS= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2245 fortran/io.cc:3919
  #, gcc-internal-format, gfc-internal-format
  msgid "BLANK= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2273 fortran/io.cc:3897
  #, gcc-internal-format, gfc-internal-format
  msgid "DECIMAL= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2305
  #, gcc-internal-format, gfc-internal-format
  msgid "ENCODING= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2356 fortran/io.cc:3964
  #, gcc-internal-format, gfc-internal-format
  msgid "ROUND= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2386
  #, gcc-internal-format, gfc-internal-format
  msgid "SIGN= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2407
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "expression statement has incomplete type"
  msgid "RECL in OPEN statement at %L must be positive"
  msgstr "udtrykket er af en ufuldstÃ¦ndig type"
  
! #: fortran/io.cc:2432
  #, gcc-internal-format
  msgid "The STATUS specified in OPEN statement at %L is %qs and no FILE specifier is present"
  msgstr ""
  
! #: fortran/io.cc:2443
  #, gcc-internal-format, gfc-internal-format
  msgid "The STATUS specified in OPEN statement at %L cannot have the value SCRATCH if a FILE specifier is present"
  msgstr ""
  
! #: fortran/io.cc:2454
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "No UNIT= specifier in I/O control list at %0"
  msgid "UNIT specifier not allowed with NEWUNIT at %L"
  msgstr "Inge UNIT=-angivelse i I/O-kontrolliste ved %0"
  
! #: fortran/io.cc:2465
  #, gcc-internal-format, gfc-internal-format
  msgid "NEWUNIT specifier must have FILE= or STATUS='scratch' at %L"
  msgstr ""
  
! #: fortran/io.cc:2472
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "complex arguments must have identical types"
  msgid "OPEN statement at %L must have UNIT or NEWUNIT specified"
  msgstr "komplekse parametre skal have identiske typer"
  
! #: fortran/io.cc:2507
  #, gcc-internal-format, gfc-internal-format
  msgid "%sspecifier at %L not allowed in OPEN statement for unformatted I/O"
  msgstr ""
  
! #: fortran/io.cc:2515
  #, gcc-internal-format, gfc-internal-format
  msgid "RECL specifier not allowed in OPEN statement at %L for stream I/O"
  msgstr ""
  
! #: fortran/io.cc:2528
  #, gcc-internal-format, gfc-internal-format
  msgid "POSITION specifier in OPEN statement at %L only allowed for stream or sequential ACCESS"
  msgstr ""
  
! #: fortran/io.cc:2581
  #, gcc-internal-format, gfc-internal-format
  msgid "OPEN statement not allowed in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:2689
  #, gcc-internal-format, gfc-internal-format
  msgid "CLOSE statement not allowed in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:2715
  #, gcc-internal-format, gfc-internal-format
  msgid "CLOSE statement at %L requires a UNIT number"
  msgstr ""
  
! #: fortran/io.cc:2723
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT number in CLOSE statement at %L must be non-negative"
  msgstr ""
  
! #: fortran/io.cc:2846 fortran/match.cc:3471
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement not allowed in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:2876
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Spurious number in FORMAT statement at %0"
  msgid "UNIT number missing in statement at %L"
  msgstr "Mystisk tal i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/io.cc:2887 fortran/io.cc:3377
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT number in statement at %L must be non-negative"
  msgstr ""
  
! #: fortran/io.cc:2920
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "FLUSH statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/io.cc:2961
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Missing formal parameter term"
  msgid "Missing format with default unit at %C"
  msgstr "Manglende formel parameterterm"
  
! #: fortran/io.cc:2981
  #, gcc-internal-format, gfc-internal-format
  msgid "Duplicate UNIT specification at %C"
  msgstr ""
  
! #: fortran/io.cc:3055
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "parse error in method specification"
  msgid "Duplicate format specification at %C"
  msgstr "tolkningsfejl i medlemsfunktionsangivelsen"
  
! #: fortran/io.cc:3096
  #, gcc-internal-format
  msgid "Symbol %qs in namelist %qs is INTENT(IN) at %C"
  msgstr ""
  
! #: fortran/io.cc:3132
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "duplicate initialization of %D"
  msgid "Duplicate NML specification at %C"
  msgstr "%D tildelt startvÃ¦rdi mere end Ã©n gang"
  
! #: fortran/io.cc:3141
  #, gcc-internal-format
  msgid "Symbol %qs at %C must be a NAMELIST group name"
  msgstr ""
  
! #: fortran/io.cc:3207
  #, gcc-internal-format, gfc-internal-format
  msgid "END tag at %C not allowed in output statement"
  msgstr ""
  
! #: fortran/io.cc:3303
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported FORMAT specifier at %0"
  msgid "UNIT not specified at %L"
  msgstr "Ikke-understÃ¸ttet FORMAT-angivelse ved %0"
  
! #: fortran/io.cc:3310
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT specification at %L must not be a character PARAMETER"
  msgstr ""
  
! #: fortran/io.cc:3323
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT specification at %L must be an INTEGER expression or a CHARACTER variable"
  msgstr ""
  
! #: fortran/io.cc:3345
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid form of WRITE statement at %L, UNIT required"
  msgstr ""
  
! #: fortran/io.cc:3356
  #, gcc-internal-format, gfc-internal-format
  msgid "Internal unit with vector subscript at %L"
  msgstr ""
  
! #: fortran/io.cc:3370
  #, gcc-internal-format, gfc-internal-format
  msgid "External IO UNIT cannot be an array at %L"
  msgstr ""
  
! #: fortran/io.cc:3400
  #, gcc-internal-format
  msgid "NAMELIST %qs in READ statement at %L contains the symbol %qs which may not appear in a variable definition context"
  msgstr ""
  
! #: fortran/io.cc:3412
  #, gcc-internal-format
  msgid "NAMELIST object %qs in namelist %qs at %L is polymorphic and requires a defined input/output procedure"
  msgstr ""
  
! #: fortran/io.cc:3422 fortran/resolve.cc:16941
  #, gcc-internal-format
  msgid "NAMELIST object %qs in namelist %qs at %L with ALLOCATABLE or POINTER components"
  msgstr ""
  
! #: fortran/io.cc:3430
  #, gcc-internal-format
  msgid "NAMELIST object %qs in namelist %qs at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedure"
  msgstr ""
  
! #: fortran/io.cc:3441
  #, gcc-internal-format, gfc-internal-format
  msgid "Comma before i/o item list at %L"
  msgstr ""
  
! #: fortran/io.cc:3451
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "label `%D' used but not defined"
  msgid "ERR tag label %d at %L not defined"
  msgstr "etiketten '%D' er benyttet, men ikke defineret"
  
! #: fortran/io.cc:3463
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "label `%D' used but not defined"
  msgid "END tag label %d at %L not defined"
  msgstr "etiketten '%D' er benyttet, men ikke defineret"
  
! #: fortran/io.cc:3475
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "label `%D' used but not defined"
  msgid "EOR tag label %d at %L not defined"
  msgstr "etiketten '%D' er benyttet, men ikke defineret"
  
! #: fortran/io.cc:3485
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "label `%D' used but not defined"
  msgid "FORMAT label %d at %L not defined"
  msgstr "etiketten '%D' er benyttet, men ikke defineret"
  
! #: fortran/io.cc:3516
  #, gcc-internal-format
  msgid "io_kind_name(): bad I/O-kind"
  msgstr ""
  
! #: fortran/io.cc:3605
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in I/O iterator at %C"
  msgstr "\"%s\" mÃ¥ ikke optrÃ¦de i makroparameterliste"
  
! #: fortran/io.cc:3637
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Extraneous comma in FORMAT statement at %0"
  msgid "Expecting variable in READ statement at %C"
  msgstr "Ekstra komma i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/io.cc:3643
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Extraneous comma in FORMAT statement at %0"
  msgid "Expecting variable or io-implied-do in READ statement at %L"
  msgstr "Ekstra komma i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/io.cc:3652
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting variable or io-implied-do at %L"
  msgstr ""
  
! #: fortran/io.cc:3661
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Invalid expression statement"
  msgid "Expected expression in %s statement at %C"
  msgstr "Ugyldig udtrykssÃ¦tning"
  
! #: fortran/io.cc:3666
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "RETURN statement at %0 invalid within a main program unit"
  msgid "BOZ literal constant at %L cannot appear in an output IO list"
  msgstr "RETURN-sÃ¦tning ved %0 ugyldig inden i en hovedprogramenhed"
  
! #: fortran/io.cc:3814
  #, gcc-internal-format, gfc-internal-format
  msgid "Internal file at %L with namelist"
  msgstr ""
  
! #: fortran/io.cc:3829
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "RETURN statement at %0 invalid within a main program unit"
  msgid "IO UNIT in %s statement at %L must be an internal file in a PURE procedure"
  msgstr "RETURN-sÃ¦tning ved %0 ugyldig inden i en hovedprogramenhed"
  
! #: fortran/io.cc:3942
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "asm not allowed in atomic transaction"
  msgid "PAD= at %L not allowed in Fortran 95"
  msgstr "asm er ikke tilladt i atomar transaktion"
  
! #: fortran/io.cc:4011
  #, gcc-internal-format, gfc-internal-format
  msgid "DELIM= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:4185
  #, gcc-internal-format, gfc-internal-format
  msgid "PRINT namelist at %C is an extension"
  msgstr ""
  
! #: fortran/io.cc:4207
  #, gcc-internal-format, gfc-internal-format
  msgid "Comma after * at %C not allowed without I/O list"
  msgstr ""
  
! #: fortran/io.cc:4380
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Extraneous comma in FORMAT statement at %0"
  msgid "Expected comma in I/O list at %C"
  msgstr "Ekstra komma i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/io.cc:4447
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "RETURN statement at %0 invalid within a main program unit"
  msgid "PRINT statement at %C not allowed within PURE procedure"
  msgstr "RETURN-sÃ¦tning ved %0 ugyldig inden i en hovedprogramenhed"
  
! #: fortran/io.cc:4609
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "NULL() near %L cannot appear in INQUIRE statement"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: fortran/io.cc:4621 fortran/io.cc:4683
  #, gcc-internal-format, gfc-internal-format
  msgid "INQUIRE statement not allowed in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:4649
  #, gcc-internal-format, gfc-internal-format
  msgid "IOLENGTH tag invalid in INQUIRE statement at %C"
  msgstr ""
  
! #: fortran/io.cc:4659 fortran/trans-io.cc:1364
  #, gcc-internal-format, gfc-internal-format
  msgid "INQUIRE statement at %L cannot contain both FILE and UNIT specifiers"
  msgstr ""
  
! #: fortran/io.cc:4666
  #, gcc-internal-format, gfc-internal-format
  msgid "INQUIRE statement at %L requires either FILE or UNIT specifier"
  msgstr ""
  
! #: fortran/io.cc:4676
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Spurious number in FORMAT statement at %0"
  msgid "UNIT number in INQUIRE statement at %L cannot be %d"
  msgstr "Mystisk tal i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/io.cc:4691
  #, gcc-internal-format, gfc-internal-format
  msgid "INQUIRE statement at %L requires a PENDING= specifier with the ID= specifier"
  msgstr ""
  
! #: fortran/io.cc:4867
  #, gcc-internal-format, gfc-internal-format
  msgid "WAIT at %C not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:4873
  #, gcc-internal-format, gfc-internal-format
  msgid "WAIT statement not allowed in PURE procedure at %C"
  msgstr ""
--- 82180,82742 ----
  msgid "The H format specifier at %L is a Fortran 95 deleted feature"
  msgstr ""
  
! #: fortran/io.cc:1232 fortran/io.cc:1295
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Missing class name"
! msgid "Missing comma in FORMAT string at %L"
  msgstr "Manglende klassenavn"
  
! #: fortran/io.cc:1351
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Extraneous comma in FORMAT statement at %0"
  msgid "Extraneous characters in format at %L"
  msgstr "Ekstra komma i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/io.cc:1373
  #, gcc-internal-format, gfc-internal-format
  msgid "Format statement in module main block at %C"
  msgstr ""
  
! #: fortran/io.cc:1382
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "RETURN statement at %0 invalid within a main program unit"
  msgid "FORMAT statement at %C cannot appear within an INTERFACE"
  msgstr "RETURN-sÃ¦tning ved %0 ugyldig inden i en hovedprogramenhed"
  
! #: fortran/io.cc:1388
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Missing formal parameter term"
  msgid "Missing format label at %C"
  msgstr "Manglende formel parameterterm"
  
! #: fortran/io.cc:1443 fortran/io.cc:1474 fortran/io.cc:1554
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid base-class specification"
  msgid "Invalid value for %s specification at %C"
  msgstr "ugyldig stamklasseangivelse"
  
! #: fortran/io.cc:1449 fortran/io.cc:1480 fortran/io.cc:1636 fortran/io.cc:1649
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "after previous specification in `%#D'"
  msgid "Duplicate %s specification at %C"
  msgstr "efter tidligere specifikation i '%#D'"
  
! #: fortran/io.cc:1491
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s cannot be INTENT(IN) at %C"
  msgstr ""
  
! #: fortran/io.cc:1499
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s cannot be assigned in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:1529
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Extraneous comma in FORMAT statement at %0"
  msgid "Expecting a variable at %L"
  msgstr "Ekstra komma i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/io.cc:1560
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "duplicate label declaration `%s'"
  msgid "Duplicate %s label specification at %C"
  msgstr "etiketten '%s' er blevet erklÃ¦ret mere end Ã©n gang"
  
! #: fortran/io.cc:1580 fortran/io.cc:1597 fortran/io.cc:1618
  #, gcc-internal-format
  msgid "%s at %C is a DEC extension, enable with %<-fdec%>"
  msgstr ""
  
! #: fortran/io.cc:1671
  #, gcc-internal-format, gfc-internal-format
  msgid "Constant expression in FORMAT tag at %L must be of type default CHARACTER"
  msgstr ""
  
! #: fortran/io.cc:1696
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "data member `%D' cannot be a member template"
  msgid "FORMAT tag at %L cannot be a zero-sized array"
  msgstr "datamedlem '%D' kan ikke vÃ¦re en medlemsskabelon"
  
! #: fortran/io.cc:1737
  #, gcc-internal-format, gfc-internal-format
  msgid "FORMAT tag at %L must be of type default-kind CHARACTER or of INTEGER"
  msgstr ""
  
! #: fortran/io.cc:1743
  #, gcc-internal-format, gfc-internal-format
  msgid "ASSIGNED variable in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1748
  #, gcc-internal-format
  msgid "Variable %qs at %L has not been assigned a format label"
  msgstr ""
  
! #: fortran/io.cc:1755
  #, gcc-internal-format
  msgid "Scalar %qs in FORMAT tag at %L is not an ASSIGNED variable"
  msgstr ""
  
! #: fortran/io.cc:1770
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character non-Hollerith in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1774
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1780
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character assumed shape array element in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1787
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character assumed size array element in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1794
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character pointer array element in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1820
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "`%D' is not a member of type `%T'"
  msgid "%s tag at %L must be of type %s"
  msgstr "'%D' er ikke et medlem af typen '%T'"
  
! #: fortran/io.cc:1827
  #, gcc-internal-format, gfc-internal-format
  msgid "%s tag at %L must be a character string of default kind"
  msgstr ""
  
! #: fortran/io.cc:1834
  #, gcc-internal-format, gfc-internal-format
  msgid "%s tag at %L must be scalar"
  msgstr ""
  
! #: fortran/io.cc:1840
  #, gcc-internal-format, gfc-internal-format
  msgid "IOMSG tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1848
  #, gcc-internal-format, gfc-internal-format
  msgid "Fortran 95 requires default INTEGER in %s tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1857
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-default LOGICAL kind in %s tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1864
  #, gcc-internal-format, gfc-internal-format
  msgid "NEWUNIT specifier at %L"
  msgstr ""
  
! #: fortran/io.cc:1882
  #, gcc-internal-format, gfc-internal-format
  msgid "CONVERT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:2098
  #, fuzzy, gcc-internal-format
  #| msgid "Missing %A specifier in statement at %0"
  msgid "Fortran 2003: %s specifier in %s statement at %L has value %qs"
  msgstr "Manglende %A-angivelse i sÃ¦tning ved %0"
  
! #: fortran/io.cc:2106 fortran/io.cc:2133
  #, fuzzy, gcc-internal-format
  #| msgid "Missing %A specifier in statement at %0"
  msgid "%s specifier in %s statement at %L has value %qs"
  msgstr "Manglende %A-angivelse i sÃ¦tning ved %0"
  
! #: fortran/io.cc:2125
  #, fuzzy, gcc-internal-format
  #| msgid "Missing %A specifier in statement at %0"
  msgid "Extension: %s specifier in %s statement at %L has value %qs"
  msgstr "Manglende %A-angivelse i sÃ¦tning ved %0"
  
! #: fortran/io.cc:2147 fortran/io.cc:2155
  #, fuzzy, gcc-internal-format
  #| msgid "Missing %A specifier in statement at %0"
  msgid "%s specifier in %s statement at %L has invalid value %qs"
  msgstr "Manglende %A-angivelse i sÃ¦tning ved %0"
  
! #: fortran/io.cc:2212
  #, gcc-internal-format, gfc-internal-format
  msgid "ACTION type conflicts with READONLY specifier at %L"
  msgstr ""
  
! #: fortran/io.cc:2228
  #, gcc-internal-format, gfc-internal-format
  msgid "ASYNCHRONOUS= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2247 fortran/io.cc:3921
  #, gcc-internal-format, gfc-internal-format
  msgid "BLANK= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2275 fortran/io.cc:3899
  #, gcc-internal-format, gfc-internal-format
  msgid "DECIMAL= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2307
  #, gcc-internal-format, gfc-internal-format
  msgid "ENCODING= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2358 fortran/io.cc:3966
  #, gcc-internal-format, gfc-internal-format
  msgid "ROUND= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2388
  #, gcc-internal-format, gfc-internal-format
  msgid "SIGN= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2409
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "expression statement has incomplete type"
  msgid "RECL in OPEN statement at %L must be positive"
  msgstr "udtrykket er af en ufuldstÃ¦ndig type"
  
! #: fortran/io.cc:2434
  #, gcc-internal-format
  msgid "The STATUS specified in OPEN statement at %L is %qs and no FILE specifier is present"
  msgstr ""
  
! #: fortran/io.cc:2445
  #, gcc-internal-format, gfc-internal-format
  msgid "The STATUS specified in OPEN statement at %L cannot have the value SCRATCH if a FILE specifier is present"
  msgstr ""
  
! #: fortran/io.cc:2456
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "No UNIT= specifier in I/O control list at %0"
  msgid "UNIT specifier not allowed with NEWUNIT at %L"
  msgstr "Inge UNIT=-angivelse i I/O-kontrolliste ved %0"
  
! #: fortran/io.cc:2467
  #, gcc-internal-format, gfc-internal-format
  msgid "NEWUNIT specifier must have FILE= or STATUS='scratch' at %L"
  msgstr ""
  
! #: fortran/io.cc:2474
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "complex arguments must have identical types"
  msgid "OPEN statement at %L must have UNIT or NEWUNIT specified"
  msgstr "komplekse parametre skal have identiske typer"
  
! #: fortran/io.cc:2509
  #, gcc-internal-format, gfc-internal-format
  msgid "%sspecifier at %L not allowed in OPEN statement for unformatted I/O"
  msgstr ""
  
! #: fortran/io.cc:2517
  #, gcc-internal-format, gfc-internal-format
  msgid "RECL specifier not allowed in OPEN statement at %L for stream I/O"
  msgstr ""
  
! #: fortran/io.cc:2530
  #, gcc-internal-format, gfc-internal-format
  msgid "POSITION specifier in OPEN statement at %L only allowed for stream or sequential ACCESS"
  msgstr ""
  
! #: fortran/io.cc:2583
  #, gcc-internal-format, gfc-internal-format
  msgid "OPEN statement not allowed in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:2691
  #, gcc-internal-format, gfc-internal-format
  msgid "CLOSE statement not allowed in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:2717
  #, gcc-internal-format, gfc-internal-format
  msgid "CLOSE statement at %L requires a UNIT number"
  msgstr ""
  
! #: fortran/io.cc:2725
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT number in CLOSE statement at %L must be non-negative"
  msgstr ""
  
! #: fortran/io.cc:2848 fortran/match.cc:3472
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement not allowed in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:2878
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Spurious number in FORMAT statement at %0"
  msgid "UNIT number missing in statement at %L"
  msgstr "Mystisk tal i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/io.cc:2889 fortran/io.cc:3379
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT number in statement at %L must be non-negative"
  msgstr ""
  
! #: fortran/io.cc:2922
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "FLUSH statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/io.cc:2963
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Missing formal parameter term"
  msgid "Missing format with default unit at %C"
  msgstr "Manglende formel parameterterm"
  
! #: fortran/io.cc:2983
  #, gcc-internal-format, gfc-internal-format
  msgid "Duplicate UNIT specification at %C"
  msgstr ""
  
! #: fortran/io.cc:3057
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "parse error in method specification"
  msgid "Duplicate format specification at %C"
  msgstr "tolkningsfejl i medlemsfunktionsangivelsen"
  
! #: fortran/io.cc:3098
  #, gcc-internal-format
  msgid "Symbol %qs in namelist %qs is INTENT(IN) at %C"
  msgstr ""
  
! #: fortran/io.cc:3134
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "duplicate initialization of %D"
  msgid "Duplicate NML specification at %C"
  msgstr "%D tildelt startvÃ¦rdi mere end Ã©n gang"
  
! #: fortran/io.cc:3143
  #, gcc-internal-format
  msgid "Symbol %qs at %C must be a NAMELIST group name"
  msgstr ""
  
! #: fortran/io.cc:3209
  #, gcc-internal-format, gfc-internal-format
  msgid "END tag at %C not allowed in output statement"
  msgstr ""
  
! #: fortran/io.cc:3305
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported FORMAT specifier at %0"
  msgid "UNIT not specified at %L"
  msgstr "Ikke-understÃ¸ttet FORMAT-angivelse ved %0"
  
! #: fortran/io.cc:3312
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT specification at %L must not be a character PARAMETER"
  msgstr ""
  
! #: fortran/io.cc:3325
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT specification at %L must be an INTEGER expression or a CHARACTER variable"
  msgstr ""
  
! #: fortran/io.cc:3347
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid form of WRITE statement at %L, UNIT required"
  msgstr ""
  
! #: fortran/io.cc:3358
  #, gcc-internal-format, gfc-internal-format
  msgid "Internal unit with vector subscript at %L"
  msgstr ""
  
! #: fortran/io.cc:3372
  #, gcc-internal-format, gfc-internal-format
  msgid "External IO UNIT cannot be an array at %L"
  msgstr ""
  
! #: fortran/io.cc:3402
  #, gcc-internal-format
  msgid "NAMELIST %qs in READ statement at %L contains the symbol %qs which may not appear in a variable definition context"
  msgstr ""
  
! #: fortran/io.cc:3414
  #, gcc-internal-format
  msgid "NAMELIST object %qs in namelist %qs at %L is polymorphic and requires a defined input/output procedure"
  msgstr ""
  
! #: fortran/io.cc:3424 fortran/resolve.cc:16931
  #, gcc-internal-format
  msgid "NAMELIST object %qs in namelist %qs at %L with ALLOCATABLE or POINTER components"
  msgstr ""
  
! #: fortran/io.cc:3432
  #, gcc-internal-format
  msgid "NAMELIST object %qs in namelist %qs at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedure"
  msgstr ""
  
! #: fortran/io.cc:3443
  #, gcc-internal-format, gfc-internal-format
  msgid "Comma before i/o item list at %L"
  msgstr ""
  
! #: fortran/io.cc:3453
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "label `%D' used but not defined"
  msgid "ERR tag label %d at %L not defined"
  msgstr "etiketten '%D' er benyttet, men ikke defineret"
  
! #: fortran/io.cc:3465
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "label `%D' used but not defined"
  msgid "END tag label %d at %L not defined"
  msgstr "etiketten '%D' er benyttet, men ikke defineret"
  
! #: fortran/io.cc:3477
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "label `%D' used but not defined"
  msgid "EOR tag label %d at %L not defined"
  msgstr "etiketten '%D' er benyttet, men ikke defineret"
  
! #: fortran/io.cc:3487
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "label `%D' used but not defined"
  msgid "FORMAT label %d at %L not defined"
  msgstr "etiketten '%D' er benyttet, men ikke defineret"
  
! #: fortran/io.cc:3518
  #, gcc-internal-format
  msgid "io_kind_name(): bad I/O-kind"
  msgstr ""
  
! #: fortran/io.cc:3607
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in I/O iterator at %C"
  msgstr "\"%s\" mÃ¥ ikke optrÃ¦de i makroparameterliste"
  
! #: fortran/io.cc:3639
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Extraneous comma in FORMAT statement at %0"
  msgid "Expecting variable in READ statement at %C"
  msgstr "Ekstra komma i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/io.cc:3645
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Extraneous comma in FORMAT statement at %0"
  msgid "Expecting variable or io-implied-do in READ statement at %L"
  msgstr "Ekstra komma i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/io.cc:3654
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting variable or io-implied-do at %L"
  msgstr ""
  
! #: fortran/io.cc:3663
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Invalid expression statement"
  msgid "Expected expression in %s statement at %C"
  msgstr "Ugyldig udtrykssÃ¦tning"
  
! #: fortran/io.cc:3668
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "RETURN statement at %0 invalid within a main program unit"
  msgid "BOZ literal constant at %L cannot appear in an output IO list"
  msgstr "RETURN-sÃ¦tning ved %0 ugyldig inden i en hovedprogramenhed"
  
! #: fortran/io.cc:3816
  #, gcc-internal-format, gfc-internal-format
  msgid "Internal file at %L with namelist"
  msgstr ""
  
! #: fortran/io.cc:3831
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "RETURN statement at %0 invalid within a main program unit"
  msgid "IO UNIT in %s statement at %L must be an internal file in a PURE procedure"
  msgstr "RETURN-sÃ¦tning ved %0 ugyldig inden i en hovedprogramenhed"
  
! #: fortran/io.cc:3944
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "asm not allowed in atomic transaction"
  msgid "PAD= at %L not allowed in Fortran 95"
  msgstr "asm er ikke tilladt i atomar transaktion"
  
! #: fortran/io.cc:4013
  #, gcc-internal-format, gfc-internal-format
  msgid "DELIM= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:4187
  #, gcc-internal-format, gfc-internal-format
  msgid "PRINT namelist at %C is an extension"
  msgstr ""
  
! #: fortran/io.cc:4209
  #, gcc-internal-format, gfc-internal-format
  msgid "Comma after * at %C not allowed without I/O list"
  msgstr ""
  
! #: fortran/io.cc:4382
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Extraneous comma in FORMAT statement at %0"
  msgid "Expected comma in I/O list at %C"
  msgstr "Ekstra komma i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/io.cc:4449
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "RETURN statement at %0 invalid within a main program unit"
  msgid "PRINT statement at %C not allowed within PURE procedure"
  msgstr "RETURN-sÃ¦tning ved %0 ugyldig inden i en hovedprogramenhed"
  
! #: fortran/io.cc:4611
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "NULL() near %L cannot appear in INQUIRE statement"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: fortran/io.cc:4623 fortran/io.cc:4685
  #, gcc-internal-format, gfc-internal-format
  msgid "INQUIRE statement not allowed in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:4651
  #, gcc-internal-format, gfc-internal-format
  msgid "IOLENGTH tag invalid in INQUIRE statement at %C"
  msgstr ""
  
! #: fortran/io.cc:4661 fortran/trans-io.cc:1364
  #, gcc-internal-format, gfc-internal-format
  msgid "INQUIRE statement at %L cannot contain both FILE and UNIT specifiers"
  msgstr ""
  
! #: fortran/io.cc:4668
  #, gcc-internal-format, gfc-internal-format
  msgid "INQUIRE statement at %L requires either FILE or UNIT specifier"
  msgstr ""
  
! #: fortran/io.cc:4678
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Spurious number in FORMAT statement at %0"
  msgid "UNIT number in INQUIRE statement at %L cannot be %d"
  msgstr "Mystisk tal i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/io.cc:4693
  #, gcc-internal-format, gfc-internal-format
  msgid "INQUIRE statement at %L requires a PENDING= specifier with the ID= specifier"
  msgstr ""
  
! #: fortran/io.cc:4869
  #, gcc-internal-format, gfc-internal-format
  msgid "WAIT at %C not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:4875
  #, gcc-internal-format, gfc-internal-format
  msgid "WAIT statement not allowed in PURE procedure at %C"
  msgstr ""
*************** msgstr "PROCEDURE-liste ved %C"
*** 82999,83522 ****
  msgid "Locality spec at %L"
  msgstr "ugyldig typeparameter"
  
! #: fortran/match.cc:3112
  #, gcc-internal-format
  msgid "Name %qs in %s statement at %C is unknown"
  msgstr ""
  
! #: fortran/match.cc:3120
  #, gcc-internal-format
  msgid "Name %qs in %s statement at %C is not a construct name"
  msgstr ""
  
! #: fortran/match.cc:3132
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C leaves CRITICAL construct"
  msgstr ""
  
  #. F2008, C821 & C845.
! #: fortran/match.cc:3140
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C leaves DO CONCURRENT construct"
  msgstr ""
  
! #: fortran/match.cc:3152
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Statement at %0 invalid in this context"
  msgid "%s statement at %C is not within a construct"
  msgstr "SÃ¦tning ved %0 er ugyldig i denne kontekst"
  
! #: fortran/match.cc:3155
  #, fuzzy, gcc-internal-format
  #| msgid "Statement at %0 invalid in this context"
  msgid "%s statement at %C is not within construct %qs"
  msgstr "SÃ¦tning ved %0 er ugyldig i denne kontekst"
  
! #: fortran/match.cc:3181
  #, gcc-internal-format
  msgid "CYCLE statement at %C is not applicable to non-loop construct %qs"
  msgstr ""
  
! #: fortran/match.cc:3186
  #, gcc-internal-format, gfc-internal-format
  msgid "EXIT statement with no do-construct-name at %C"
  msgstr ""
  
! #: fortran/match.cc:3192
  #, fuzzy, gcc-internal-format
  #| msgid "Statement at %0 follows ELSE block for IF construct at %1"
  msgid "%s statement at %C is not applicable to construct %qs"
  msgstr "SÃ¦tning ved %0 fÃ¸lger ELSE-blok for IF-konstruktion ved %1"
  
! #: fortran/match.cc:3200
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C leaving OpenACC structured block"
  msgstr ""
  
! #: fortran/match.cc:3201
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "  enters try block"
  msgid "%s statement at %C leaving OpenMP structured block"
  msgstr "  gÃ¥r ind i try-blok"
  
! #: fortran/match.cc:3241
  #, gcc-internal-format, gfc-internal-format
  msgid "EXIT statement at %C terminating !$ACC LOOP loop"
  msgstr ""
  
! #: fortran/match.cc:3247
  #, gcc-internal-format, gfc-internal-format
  msgid "CYCLE statement at %C to non-innermost tiled !$ACC LOOP loop"
  msgstr ""
  
! #: fortran/match.cc:3249
  #, gcc-internal-format, gfc-internal-format
  msgid "CYCLE statement at %C to non-innermost collapsed !$ACC LOOP loop"
  msgstr ""
  
! #: fortran/match.cc:3296
  #, gcc-internal-format, gfc-internal-format
  msgid "EXIT statement at %C terminating !$OMP DO loop"
  msgstr ""
  
! #: fortran/match.cc:3301
  #, gcc-internal-format, gfc-internal-format
  msgid "CYCLE statement at %C to non-innermost collapsed !$OMP DO loop"
  msgstr ""
  
! #: fortran/match.cc:3406
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid lvalue in asm statement"
  msgid "Blank required in %s statement near %C"
  msgstr "ugyldig venstrevÃ¦rdi i asm-sÃ¦tning"
  
! #: fortran/match.cc:3429
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "%s rotate count is negative"
  msgid "STOP code at %C cannot be negative"
  msgstr "%s-roteringsantal er negativt"
  
! #: fortran/match.cc:3435
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %C contains too many digits"
  msgstr ""
  
! #: fortran/match.cc:3451
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported FORMAT specifier at %0"
  msgid "QUIET= specifier for %s at %L"
  msgstr "Ikke-understÃ¸ttet FORMAT-angivelse ved %0"
  
! #: fortran/match.cc:3465
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C in PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:3481
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement STOP at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:3486
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement STOP at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:3498
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be a scalar CHARACTER constant or digit[digit[digit[digit[digit]]]]"
  msgstr ""
  
! #: fortran/match.cc:3510
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "use of class template `%T' as expression"
  msgid "STOP code at %L must be a scalar default CHARACTER or INTEGER constant expression"
  msgstr "brug af klasseskabelonen '%T' som udtryk"
  
! #: fortran/match.cc:3517
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be either INTEGER or CHARACTER type"
  msgstr ""
  
! #: fortran/match.cc:3524
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be scalar"
  msgstr ""
  
! #: fortran/match.cc:3531
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be default character KIND=%d"
  msgstr ""
  
! #: fortran/match.cc:3538
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be default integer KIND=%d"
  msgstr ""
  
! #: fortran/match.cc:3550 fortran/resolve.cc:13453
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "QUIET specifier at %L must be a scalar LOGICAL"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: fortran/match.cc:3600
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "PAUSE statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:3621
  #, gcc-internal-format, gfc-internal-format
  msgid "ERROR STOP statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3647
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "RETURN statement at %0 invalid within a main program unit"
  msgid "Image control statement EVENT %s at %C in PURE procedure"
  msgstr "RETURN-sÃ¦tning ved %0 ugyldig inden i en hovedprogramenhed"
  
! #: fortran/match.cc:3662
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement EVENT %s at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:3669
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement EVENT %s at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:3699 fortran/match.cc:4041 fortran/match.cc:4253
! #: fortran/match.cc:4805 fortran/match.cc:5177
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant STAT tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:3720 fortran/match.cc:4062 fortran/match.cc:4273
! #: fortran/match.cc:4837 fortran/match.cc:5202
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant ERRMSG tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:3741
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant UNTIL_COUNT tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:3807
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "EVENT POST statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:3817
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "EVENT WAIT statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:3829
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "FAIL IMAGE statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:3853
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Missing comma in FORMAT statement at %0"
  msgid "FORM TEAM statement at %C"
  msgstr "Manglende komma i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:3892
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "CHANGE TEAM statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:3922
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "END TEAM statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:3946
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "SYNC TEAM statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:3989
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement %s at %C in PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:4004
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement %s at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:4011
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement %s at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:4083
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant ACQUIRED_LOCK tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:4148
  #, gcc-internal-format, gfc-internal-format
  msgid "LOCK statement at %C"
  msgstr ""
  
! #: fortran/match.cc:4158
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "UNLOCK statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:4183
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement SYNC at %C in PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:4189
  #, gcc-internal-format, gfc-internal-format
  msgid "SYNC statement at %C"
  msgstr ""
  
! #: fortran/match.cc:4201
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement SYNC at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:4207
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement SYNC at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:4387
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "In statement function"
  msgid "ASSIGN statement at %C"
  msgstr "I sÃ¦tningsfunktion"
  
! #: fortran/match.cc:4431
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Spurious sign in FORMAT statement at %0"
  msgid "Assigned GOTO statement at %C"
  msgstr "Mystisk fortegn i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:4475 fortran/match.cc:4526
  #, gcc-internal-format, gfc-internal-format
  msgid "Statement label list in GOTO at %C cannot be empty"
  msgstr ""
  
! #: fortran/match.cc:4536
  #, gcc-internal-format, gfc-internal-format
  msgid "Computed GOTO at %C"
  msgstr ""
  
! #: fortran/match.cc:4611
  #, gcc-internal-format, gfc-internal-format
  msgid "Error in type-spec at %L"
  msgstr ""
  
! #: fortran/match.cc:4624
  #, gcc-internal-format, gfc-internal-format
  msgid "typespec in ALLOCATE at %L"
  msgstr ""
  
! #: fortran/match.cc:4647
  #, gcc-internal-format, gfc-internal-format
  msgid "The type parameter spec list in the type-spec at %L cannot contain DEFERRED parameters"
  msgstr ""
  
! #: fortran/match.cc:4677 fortran/match.cc:5115
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "Unexpected constant at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:4687
  #, gcc-internal-format, gfc-internal-format
  msgid "Bad allocate-object at %C for a PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:4702
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible allocate-object at %C for CHARACTER type-spec at %L"
  msgstr ""
  
! #: fortran/match.cc:4724
  #, gcc-internal-format, gfc-internal-format
  msgid "ALLOCATE of coarray at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:4729
  #, gcc-internal-format, gfc-internal-format
  msgid "ALLOCATE of coarray at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:4751
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L is neither a data pointer nor an allocatable variable"
  msgstr ""
  
! #: fortran/match.cc:4763
  #, gcc-internal-format, gfc-internal-format
  msgid "Type of entity at %L is type incompatible with typespec"
  msgstr ""
  
! #: fortran/match.cc:4771
  #, gcc-internal-format, gfc-internal-format
  msgid "Kind type parameter for entity at %L differs from the kind type parameter of the typespec"
  msgstr ""
  
! #: fortran/match.cc:4788
  #, gcc-internal-format, gfc-internal-format
  msgid "Shape specification for allocatable scalar at %C"
  msgstr ""
  
! #: fortran/match.cc:4815
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "data member `%D' cannot be a member template"
  msgid "STAT tag at %L cannot be a constant"
  msgstr "datamedlem '%D' kan ikke vÃ¦re en medlemsskabelon"
  
! #: fortran/match.cc:4831
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG tag at %L"
  msgstr ""
  
! #: fortran/match.cc:4854
  #, gcc-internal-format, gfc-internal-format
  msgid "SOURCE tag at %L"
  msgstr ""
  
! #: fortran/match.cc:4860
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant SOURCE tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:4867
  #, gcc-internal-format, gfc-internal-format
  msgid "SOURCE tag at %L conflicts with the typespec at %L"
  msgstr ""
  
! #: fortran/match.cc:4873
  #, gcc-internal-format, gfc-internal-format
  msgid "SOURCE tag at %L with more than a single allocate object"
  msgstr ""
  
! #: fortran/match.cc:4891
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD tag at %L"
  msgstr ""
  
! #: fortran/match.cc:4897
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant MOLD tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:4904
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD tag at %L conflicts with the typespec at %L"
  msgstr ""
  
! #: fortran/match.cc:4930
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD tag at %L conflicts with SOURCE tag at %L"
  msgstr ""
  
! #: fortran/match.cc:4938
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L with a deferred type parameter requires either a type-spec or SOURCE tag or a MOLD tag"
  msgstr ""
  
! #: fortran/match.cc:4950
  #, gcc-internal-format, gfc-internal-format
  msgid "Unlimited polymorphic allocate-object at %L requires either a type-spec or SOURCE tag or a MOLD tag"
  msgstr ""
  
! #: fortran/match.cc:5017
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer object at %C shall not be coindexed"
  msgstr ""
  
! #: fortran/match.cc:5032
  #, gcc-internal-format, gfc-internal-format
  msgid "NULLIFY does not allow bounds remapping for pointer object at %C"
  msgstr ""
  
! #: fortran/match.cc:5127
  #, gcc-internal-format, gfc-internal-format
  msgid "Illegal allocate-object at %C for a PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:5137
  #, gcc-internal-format, gfc-internal-format
  msgid "DEALLOCATE of coarray at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:5144
  #, gcc-internal-format, gfc-internal-format
  msgid "DEALLOCATE of coarray at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:5160
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %C is not a nonprocedure pointer nor an allocatable variable"
  msgstr ""
  
! #: fortran/match.cc:5197
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG at %L"
  msgstr ""
  
! #: fortran/match.cc:5254
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement RETURN at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:5260
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement RETURN at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:5269
  #, gcc-internal-format, gfc-internal-format
  msgid "Alternate RETURN statement at %C is only allowed within a SUBROUTINE"
  msgstr ""
  
! #: fortran/match.cc:5300
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "RETURN statement at %0 invalid within a main program unit"
  msgid "RETURN statement in main program at %C"
  msgstr "RETURN-sÃ¦tning ved %0 ugyldig inden i en hovedprogramenhed"
  
! #: fortran/match.cc:5328
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Expected component reference at %C"
  msgstr "objekt mangler i brug af '%E'"
  
! #: fortran/match.cc:5337
  #, gcc-internal-format, gfc-internal-format
  msgid "Junk after CALL at %C"
  msgstr ""
  
! #: fortran/match.cc:5348
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected type-bound procedure or procedure pointer component at %C"
  msgstr ""
  
! #: fortran/match.cc:5446
  #, gcc-internal-format, gfc-internal-format
  msgid "A BOZ literal constant at %L cannot appear as an actual argument in a subroutine reference"
  msgstr ""
  
! #: fortran/match.cc:5587
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in common block name at %C"
  msgstr "\"%s\" mÃ¥ ikke optrÃ¦de i makroparameterliste"
--- 83101,83624 ----
  msgid "Locality spec at %L"
  msgstr "ugyldig typeparameter"
  
! #: fortran/match.cc:3113
  #, gcc-internal-format
  msgid "Name %qs in %s statement at %C is unknown"
  msgstr ""
  
! #: fortran/match.cc:3121
  #, gcc-internal-format
  msgid "Name %qs in %s statement at %C is not a construct name"
  msgstr ""
  
! #: fortran/match.cc:3133
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C leaves CRITICAL construct"
  msgstr ""
  
  #. F2008, C821 & C845.
! #: fortran/match.cc:3141
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C leaves DO CONCURRENT construct"
  msgstr ""
  
! #: fortran/match.cc:3153
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Statement at %0 invalid in this context"
  msgid "%s statement at %C is not within a construct"
  msgstr "SÃ¦tning ved %0 er ugyldig i denne kontekst"
  
! #: fortran/match.cc:3156
  #, fuzzy, gcc-internal-format
  #| msgid "Statement at %0 invalid in this context"
  msgid "%s statement at %C is not within construct %qs"
  msgstr "SÃ¦tning ved %0 er ugyldig i denne kontekst"
  
! #: fortran/match.cc:3182
  #, gcc-internal-format
  msgid "CYCLE statement at %C is not applicable to non-loop construct %qs"
  msgstr ""
  
! #: fortran/match.cc:3187
  #, gcc-internal-format, gfc-internal-format
  msgid "EXIT statement with no do-construct-name at %C"
  msgstr ""
  
! #: fortran/match.cc:3193
  #, fuzzy, gcc-internal-format
  #| msgid "Statement at %0 follows ELSE block for IF construct at %1"
  msgid "%s statement at %C is not applicable to construct %qs"
  msgstr "SÃ¦tning ved %0 fÃ¸lger ELSE-blok for IF-konstruktion ved %1"
  
! #: fortran/match.cc:3201
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C leaving OpenACC structured block"
  msgstr ""
  
! #: fortran/match.cc:3202
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "  enters try block"
  msgid "%s statement at %C leaving OpenMP structured block"
  msgstr "  gÃ¥r ind i try-blok"
  
! #: fortran/match.cc:3242
  #, gcc-internal-format, gfc-internal-format
  msgid "EXIT statement at %C terminating !$ACC LOOP loop"
  msgstr ""
  
! #: fortran/match.cc:3248
  #, gcc-internal-format, gfc-internal-format
  msgid "CYCLE statement at %C to non-innermost tiled !$ACC LOOP loop"
  msgstr ""
  
! #: fortran/match.cc:3250
  #, gcc-internal-format, gfc-internal-format
  msgid "CYCLE statement at %C to non-innermost collapsed !$ACC LOOP loop"
  msgstr ""
  
! #: fortran/match.cc:3297
  #, gcc-internal-format, gfc-internal-format
  msgid "EXIT statement at %C terminating !$OMP DO loop"
  msgstr ""
  
! #: fortran/match.cc:3302
  #, gcc-internal-format, gfc-internal-format
  msgid "CYCLE statement at %C to non-innermost collapsed !$OMP DO loop"
  msgstr ""
  
! #: fortran/match.cc:3407
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid lvalue in asm statement"
  msgid "Blank required in %s statement near %C"
  msgstr "ugyldig venstrevÃ¦rdi i asm-sÃ¦tning"
  
! #: fortran/match.cc:3430
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "%s rotate count is negative"
  msgid "STOP code at %C cannot be negative"
  msgstr "%s-roteringsantal er negativt"
  
! #: fortran/match.cc:3436
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %C contains too many digits"
  msgstr ""
  
! #: fortran/match.cc:3452
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported FORMAT specifier at %0"
  msgid "QUIET= specifier for %s at %L"
  msgstr "Ikke-understÃ¸ttet FORMAT-angivelse ved %0"
  
! #: fortran/match.cc:3466
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C in PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:3482
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement STOP at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:3487
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement STOP at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:3499
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be a scalar CHARACTER constant or digit[digit[digit[digit[digit]]]]"
  msgstr ""
  
! #: fortran/match.cc:3511
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "use of class template `%T' as expression"
  msgid "STOP code at %L must be a scalar default CHARACTER or INTEGER constant expression"
  msgstr "brug af klasseskabelonen '%T' som udtryk"
  
! #: fortran/match.cc:3518
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be either INTEGER or CHARACTER type"
  msgstr ""
  
! #: fortran/match.cc:3525
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be scalar"
  msgstr ""
  
! #: fortran/match.cc:3532
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be default character KIND=%d"
  msgstr ""
  
! #: fortran/match.cc:3539
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be default integer KIND=%d"
  msgstr ""
  
! #: fortran/match.cc:3551 fortran/resolve.cc:13443
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "QUIET specifier at %L must be a scalar LOGICAL"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: fortran/match.cc:3601
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "PAUSE statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:3622
  #, gcc-internal-format, gfc-internal-format
  msgid "ERROR STOP statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3648
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "RETURN statement at %0 invalid within a main program unit"
  msgid "Image control statement EVENT %s at %C in PURE procedure"
  msgstr "RETURN-sÃ¦tning ved %0 ugyldig inden i en hovedprogramenhed"
  
! #: fortran/match.cc:3663
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement EVENT %s at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:3670
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement EVENT %s at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:3700 fortran/match.cc:4042 fortran/match.cc:4254
! #: fortran/match.cc:4806 fortran/match.cc:5178
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant STAT tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:3721 fortran/match.cc:4063 fortran/match.cc:4274
! #: fortran/match.cc:4838 fortran/match.cc:5203
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant ERRMSG tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:3742
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant UNTIL_COUNT tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:3808
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "EVENT POST statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:3818
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "EVENT WAIT statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:3830
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "FAIL IMAGE statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:3854
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Missing comma in FORMAT statement at %0"
  msgid "FORM TEAM statement at %C"
  msgstr "Manglende komma i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:3893
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "CHANGE TEAM statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:3923
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "END TEAM statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:3947
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "SYNC TEAM statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:3990
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement %s at %C in PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:4005
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement %s at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:4012
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement %s at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:4084
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant ACQUIRED_LOCK tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:4149
  #, gcc-internal-format, gfc-internal-format
  msgid "LOCK statement at %C"
  msgstr ""
  
! #: fortran/match.cc:4159
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "UNLOCK statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:4184
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement SYNC at %C in PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:4190
  #, gcc-internal-format, gfc-internal-format
  msgid "SYNC statement at %C"
  msgstr ""
  
! #: fortran/match.cc:4202
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement SYNC at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:4208
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement SYNC at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:4388
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "In statement function"
  msgid "ASSIGN statement at %C"
  msgstr "I sÃ¦tningsfunktion"
  
! #: fortran/match.cc:4432
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Spurious sign in FORMAT statement at %0"
  msgid "Assigned GOTO statement at %C"
  msgstr "Mystisk fortegn i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:4476 fortran/match.cc:4527
  #, gcc-internal-format, gfc-internal-format
  msgid "Statement label list in GOTO at %C cannot be empty"
  msgstr ""
  
! #: fortran/match.cc:4537
  #, gcc-internal-format, gfc-internal-format
  msgid "Computed GOTO at %C"
  msgstr ""
  
! #: fortran/match.cc:4612
  #, gcc-internal-format, gfc-internal-format
  msgid "Error in type-spec at %L"
  msgstr ""
  
! #: fortran/match.cc:4625
  #, gcc-internal-format, gfc-internal-format
  msgid "typespec in ALLOCATE at %L"
  msgstr ""
  
! #: fortran/match.cc:4648
  #, gcc-internal-format, gfc-internal-format
  msgid "The type parameter spec list in the type-spec at %L cannot contain DEFERRED parameters"
  msgstr ""
  
! #: fortran/match.cc:4678 fortran/match.cc:5116
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "Unexpected constant at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:4688
  #, gcc-internal-format, gfc-internal-format
  msgid "Bad allocate-object at %C for a PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:4703
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible allocate-object at %C for CHARACTER type-spec at %L"
  msgstr ""
  
! #: fortran/match.cc:4725
  #, gcc-internal-format, gfc-internal-format
  msgid "ALLOCATE of coarray at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:4730
  #, gcc-internal-format, gfc-internal-format
  msgid "ALLOCATE of coarray at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:4752
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L is neither a data pointer nor an allocatable variable"
  msgstr ""
  
! #: fortran/match.cc:4764
  #, gcc-internal-format, gfc-internal-format
  msgid "Type of entity at %L is type incompatible with typespec"
  msgstr ""
  
! #: fortran/match.cc:4772
  #, gcc-internal-format, gfc-internal-format
  msgid "Kind type parameter for entity at %L differs from the kind type parameter of the typespec"
  msgstr ""
  
! #: fortran/match.cc:4789
  #, gcc-internal-format, gfc-internal-format
  msgid "Shape specification for allocatable scalar at %C"
  msgstr ""
  
! #: fortran/match.cc:4816
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "data member `%D' cannot be a member template"
  msgid "STAT tag at %L cannot be a constant"
  msgstr "datamedlem '%D' kan ikke vÃ¦re en medlemsskabelon"
  
! #: fortran/match.cc:4832
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG tag at %L"
  msgstr ""
  
! #: fortran/match.cc:4855
  #, gcc-internal-format, gfc-internal-format
  msgid "SOURCE tag at %L"
  msgstr ""
  
! #: fortran/match.cc:4861
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant SOURCE tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:4868
  #, gcc-internal-format, gfc-internal-format
  msgid "SOURCE tag at %L conflicts with the typespec at %L"
  msgstr ""
  
! #: fortran/match.cc:4874
  #, gcc-internal-format, gfc-internal-format
  msgid "SOURCE tag at %L with more than a single allocate object"
  msgstr ""
  
! #: fortran/match.cc:4892
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD tag at %L"
  msgstr ""
  
! #: fortran/match.cc:4898
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant MOLD tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:4905
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD tag at %L conflicts with the typespec at %L"
  msgstr ""
  
! #: fortran/match.cc:4931
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD tag at %L conflicts with SOURCE tag at %L"
  msgstr ""
  
! #: fortran/match.cc:4939
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L with a deferred type parameter requires either a type-spec or SOURCE tag or a MOLD tag"
  msgstr ""
  
! #: fortran/match.cc:4951
  #, gcc-internal-format, gfc-internal-format
  msgid "Unlimited polymorphic allocate-object at %L requires either a type-spec or SOURCE tag or a MOLD tag"
  msgstr ""
  
! #: fortran/match.cc:5018
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer object at %C shall not be coindexed"
  msgstr ""
  
! #: fortran/match.cc:5033
  #, gcc-internal-format, gfc-internal-format
  msgid "NULLIFY does not allow bounds remapping for pointer object at %C"
  msgstr ""
  
! #: fortran/match.cc:5128
  #, gcc-internal-format, gfc-internal-format
  msgid "Illegal allocate-object at %C for a PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:5138
  #, gcc-internal-format, gfc-internal-format
  msgid "DEALLOCATE of coarray at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:5145
  #, gcc-internal-format, gfc-internal-format
  msgid "DEALLOCATE of coarray at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:5161
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %C is not a nonprocedure pointer nor an allocatable variable"
  msgstr ""
  
! #: fortran/match.cc:5198
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG at %L"
  msgstr ""
  
! #: fortran/match.cc:5255
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement RETURN at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:5261
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement RETURN at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:5270
  #, gcc-internal-format, gfc-internal-format
  msgid "Alternate RETURN statement at %C is only allowed within a SUBROUTINE"
  msgstr ""
  
! #: fortran/match.cc:5301
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "RETURN statement at %0 invalid within a main program unit"
  msgid "RETURN statement in main program at %C"
  msgstr "RETURN-sÃ¦tning ved %0 ugyldig inden i en hovedprogramenhed"
  
! #: fortran/match.cc:5329
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Expected component reference at %C"
  msgstr "objekt mangler i brug af '%E'"
  
! #: fortran/match.cc:5338
  #, gcc-internal-format, gfc-internal-format
  msgid "Junk after CALL at %C"
  msgstr ""
  
! #: fortran/match.cc:5349
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected type-bound procedure or procedure pointer component at %C"
  msgstr ""
  
! #: fortran/match.cc:5447
  #, gcc-internal-format, gfc-internal-format
  msgid "A BOZ literal constant at %L cannot appear as an actual argument in a subroutine reference"
  msgstr ""
  
! #: fortran/match.cc:5588
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in common block name at %C"
  msgstr "\"%s\" mÃ¥ ikke optrÃ¦de i makroparameterliste"
*************** msgstr "\"%s\" mÃ¥ ikke optrÃ¦de i makro
*** 83524,83587 ****
  #. If we find an error, just print it and continue,
  #. cause it's just semantic, and we can see if there
  #. are more errors.
! #: fortran/match.cc:5662
  #, gcc-internal-format
  msgid "Variable %qs at %L in common block %qs at %C must be declared with a C interoperable kind since common block %qs is bind(c)"
  msgstr ""
  
! #: fortran/match.cc:5671
  #, gcc-internal-format
  msgid "Variable %qs in common block %qs at %C cannot be bind(c) since it is not global"
  msgstr ""
  
! #: fortran/match.cc:5678
  #, gcc-internal-format
  msgid "Symbol %qs at %C is already in a COMMON block"
  msgstr ""
  
! #: fortran/match.cc:5686
  #, gcc-internal-format
  msgid "Initialized symbol %qs at %C can only be COMMON in BLOCK DATA"
  msgstr ""
  
! #: fortran/match.cc:5697
  #, gcc-internal-format
  msgid "Symbol %qs at %C is USE associated from module %qs and cannot occur in COMMON"
  msgstr ""
  
! #: fortran/match.cc:5712
  #, gcc-internal-format
  msgid "Array specification for symbol %qs in COMMON at %C must be explicit"
  msgstr ""
  
! #: fortran/match.cc:5719
  #, fuzzy, gcc-internal-format
  #| msgid "data member `%D' cannot be a member template"
  msgid "Symbol %qs in COMMON at %C cannot be a coarray"
  msgstr "datamedlem '%D' kan ikke vÃ¦re en medlemsskabelon"
  
! #: fortran/match.cc:5729
  #, gcc-internal-format
  msgid "Symbol %qs in COMMON at %C cannot be a POINTER array"
  msgstr ""
  
! #: fortran/match.cc:5775
  #, gcc-internal-format
  msgid "Symbol %qs, in COMMON block %qs at %C is being indirectly equivalenced to another COMMON block %qs"
  msgstr ""
  
! #: fortran/match.cc:5837
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "In construct"
  msgid "BLOCK DATA construct at %L"
  msgstr "I konstruktionen"
  
! #: fortran/match.cc:5950
  #, gcc-internal-format
  msgid "Namelist group name %qs at %C already has a basic type of %s"
  msgstr ""
  
! #: fortran/match.cc:5960
  #, gcc-internal-format
  msgid "Namelist group name %qs at %C already is USE associated and cannot be respecified."
  msgstr ""
--- 83626,83689 ----
  #. If we find an error, just print it and continue,
  #. cause it's just semantic, and we can see if there
  #. are more errors.
! #: fortran/match.cc:5663
  #, gcc-internal-format
  msgid "Variable %qs at %L in common block %qs at %C must be declared with a C interoperable kind since common block %qs is bind(c)"
  msgstr ""
  
! #: fortran/match.cc:5672
  #, gcc-internal-format
  msgid "Variable %qs in common block %qs at %C cannot be bind(c) since it is not global"
  msgstr ""
  
! #: fortran/match.cc:5679
  #, gcc-internal-format
  msgid "Symbol %qs at %C is already in a COMMON block"
  msgstr ""
  
! #: fortran/match.cc:5687
  #, gcc-internal-format
  msgid "Initialized symbol %qs at %C can only be COMMON in BLOCK DATA"
  msgstr ""
  
! #: fortran/match.cc:5698
  #, gcc-internal-format
  msgid "Symbol %qs at %C is USE associated from module %qs and cannot occur in COMMON"
  msgstr ""
  
! #: fortran/match.cc:5713
  #, gcc-internal-format
  msgid "Array specification for symbol %qs in COMMON at %C must be explicit"
  msgstr ""
  
! #: fortran/match.cc:5720
  #, fuzzy, gcc-internal-format
  #| msgid "data member `%D' cannot be a member template"
  msgid "Symbol %qs in COMMON at %C cannot be a coarray"
  msgstr "datamedlem '%D' kan ikke vÃ¦re en medlemsskabelon"
  
! #: fortran/match.cc:5730
  #, gcc-internal-format
  msgid "Symbol %qs in COMMON at %C cannot be a POINTER array"
  msgstr ""
  
! #: fortran/match.cc:5776
  #, gcc-internal-format
  msgid "Symbol %qs, in COMMON block %qs at %C is being indirectly equivalenced to another COMMON block %qs"
  msgstr ""
  
! #: fortran/match.cc:5838
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "In construct"
  msgid "BLOCK DATA construct at %L"
  msgstr "I konstruktionen"
  
! #: fortran/match.cc:5951
  #, gcc-internal-format
  msgid "Namelist group name %qs at %C already has a basic type of %s"
  msgstr ""
  
! #: fortran/match.cc:5961
  #, gcc-internal-format
  msgid "Namelist group name %qs at %C already is USE associated and cannot be respecified."
  msgstr ""
*************** msgstr ""
*** 83589,83795 ****
  #. It is required that members of a namelist be declared
  #. before the namelist.  We check this by checking if the
  #. symbol has a defined type for IMPLICIT NONE.
! #: fortran/match.cc:5985
  #, gcc-internal-format
  msgid "Symbol %qs in namelist %qs at %C must be declared before the namelist is declared."
  msgstr ""
  
! #: fortran/match.cc:6005
  #, gcc-internal-format
  msgid "Derived type %qs at %L conflicts with namelist object %qs at %C"
  msgstr ""
  
! #: fortran/match.cc:6025
  #, gcc-internal-format
  msgid "Assumed size array %qs in namelist %qs at %C is not allowed"
  msgstr ""
  
! #: fortran/match.cc:6168
  #, gcc-internal-format, gfc-internal-format
  msgid "Derived type component %C is not a permitted EQUIVALENCE member"
  msgstr ""
  
! #: fortran/match.cc:6176
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference in EQUIVALENCE at %C cannot be an array section"
  msgstr ""
  
! #: fortran/match.cc:6209
  #, gcc-internal-format, gfc-internal-format
  msgid "EQUIVALENCE at %C requires two or more objects"
  msgstr ""
  
! #: fortran/match.cc:6223
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Attempt to extend COMMON area beyond its starting point via EQUIVALENCE of `%A'"
  msgid "Attempt to indirectly overlap COMMON blocks %s and %s by EQUIVALENCE at %C"
  msgstr "ForsÃ¸g pÃ¥ at udvide COMMON-omrÃ¥de over dets begyndelsespunkt vha. EQUIVALENCE '%A'"
  
! #: fortran/match.cc:6236
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting a comma in EQUIVALENCE at %C"
  msgstr ""
  
! #: fortran/match.cc:6241
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "EQUIVALENCE statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:6334
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Invalid use of statement function argument at %L"
  msgstr "ugyldig brug af ikke-statisk felt '%D'"
  
! #: fortran/match.cc:6401
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Statement function `%A' defined at %0 is not used"
  msgid "Statement function at %L is recursive"
  msgstr "SÃ¦tningsfunktion '%A' defineret ved %0, men er ikke brugt"
  
! #: fortran/match.cc:6407
  #, fuzzy, gcc-internal-format
  #| msgid "Statement function `%A' defined at %0 is not used"
  msgid "Statement function %qs at %L conflicts with function name"
  msgstr "SÃ¦tningsfunktion '%A' defineret ved %0, men er ikke brugt"
  
! #: fortran/match.cc:6421
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "RETURN statement at %0 invalid within a main program unit"
  msgid "Statement function at %L cannot appear within an INTERFACE"
  msgstr "RETURN-sÃ¦tning ved %0 ugyldig inden i en hovedprogramenhed"
  
! #: fortran/match.cc:6426
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "In statement function"
  msgid "Statement function at %C"
  msgstr "I sÃ¦tningsfunktion"
  
! #: fortran/match.cc:6553 fortran/match.cc:6571 fortran/match.cc:6592
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "expression statement has incomplete type"
  msgid "Expression in CASE selector at %L cannot be %s"
  msgstr "udtrykket er af en ufuldstÃ¦ndig type"
  
! #: fortran/match.cc:6602 fortran/match.cc:6608
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "expression statement has incomplete type"
  msgid "Expression in CASE selector at %L must be scalar"
  msgstr "udtrykket er af en ufuldstÃ¦ndig type"
  
! #: fortran/match.cc:6617
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "initialization of new expression with `='"
  msgid "Expected initialization expression in CASE at %C"
  msgstr "tildeling af startvÃ¦rdi til new-udtryk med '='"
  
! #: fortran/match.cc:6649
  #, gcc-internal-format
  msgid "Expected block name %qs of SELECT construct at %C"
  msgstr ""
  
! #: fortran/match.cc:7029
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "RETURN statement at %0 invalid within a main program unit"
  msgid "SELECT TYPE at %C cannot appear in this scope"
  msgstr "RETURN-sÃ¦tning ved %0 ugyldig inden i en hovedprogramenhed"
  
! #: fortran/match.cc:7057
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Spurious number in FORMAT statement at %0"
  msgid "parse error in SELECT TYPE statement at %C"
  msgstr "Mystisk tal i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:7082
  #, gcc-internal-format, gfc-internal-format
  msgid "Selector in SELECT TYPE at %C is not a named variable; use associate-name=>"
  msgstr ""
  
! #: fortran/match.cc:7270
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "SELECT RANK statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:7311 fortran/match.cc:7365
  #, gcc-internal-format, gfc-internal-format
  msgid "The SELECT RANK selector at %C must be an assumed rank variable"
  msgstr ""
  
! #: fortran/match.cc:7375
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Spurious number in FORMAT statement at %0"
  msgid "parse error in SELECT RANK statement at %C"
  msgstr "Mystisk tal i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:7411
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "Unexpected CASE statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:7463
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "parse error in method specification"
  msgid "Syntax error in CASE specification at %C"
  msgstr "tolkningsfejl i medlemsfunktionsangivelsen"
  
! #: fortran/match.cc:7481
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "Unexpected TYPE IS statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:7513
  #, gcc-internal-format, gfc-internal-format
  msgid "The type-spec shall not specify a sequence derived type or a type with the BIND attribute in SELECT TYPE at %C [F2003:C815]"
  msgstr ""
  
! #: fortran/match.cc:7524
  #, gcc-internal-format, gfc-internal-format
  msgid "All the LEN type parameters in the TYPE IS statement at %C must be ASSUMED"
  msgstr ""
  
! #: fortran/match.cc:7535
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "parse error in method specification"
  msgid "Syntax error in TYPE IS specification at %C"
  msgstr "tolkningsfejl i medlemsfunktionsangivelsen"
  
! #: fortran/match.cc:7611
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "parse error in method specification"
  msgid "Syntax error in CLASS IS specification at %C"
  msgstr "tolkningsfejl i medlemsfunktionsangivelsen"
  
! #: fortran/match.cc:7631
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "Unexpected RANK statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:7677
  #, gcc-internal-format, gfc-internal-format
  msgid "The SELECT RANK CASE expression at %C must be a scalar, integer constant"
  msgstr ""
  
! #: fortran/match.cc:7686
  #, gcc-internal-format, gfc-internal-format
  msgid "The value of the SELECT RANK CASE expression at %C must not be less than zero or greater than %d"
  msgstr ""
  
! #: fortran/match.cc:7713
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "parse error in method specification"
  msgid "Syntax error in RANK specification at %C"
  msgstr "tolkningsfejl i medlemsfunktionsangivelsen"
  
! #: fortran/match.cc:7835
  #, gcc-internal-format, gfc-internal-format
  msgid "ELSEWHERE statement at %C not enclosed in WHERE block"
  msgstr ""
  
! #: fortran/match.cc:7873
  #, gcc-internal-format
  msgid "Label %qs at %C doesn't match WHERE label %qs"
  msgstr ""
--- 83691,83897 ----
  #. It is required that members of a namelist be declared
  #. before the namelist.  We check this by checking if the
  #. symbol has a defined type for IMPLICIT NONE.
! #: fortran/match.cc:5986
  #, gcc-internal-format
  msgid "Symbol %qs in namelist %qs at %C must be declared before the namelist is declared."
  msgstr ""
  
! #: fortran/match.cc:6006
  #, gcc-internal-format
  msgid "Derived type %qs at %L conflicts with namelist object %qs at %C"
  msgstr ""
  
! #: fortran/match.cc:6026
  #, gcc-internal-format
  msgid "Assumed size array %qs in namelist %qs at %C is not allowed"
  msgstr ""
  
! #: fortran/match.cc:6169
  #, gcc-internal-format, gfc-internal-format
  msgid "Derived type component %C is not a permitted EQUIVALENCE member"
  msgstr ""
  
! #: fortran/match.cc:6177
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference in EQUIVALENCE at %C cannot be an array section"
  msgstr ""
  
! #: fortran/match.cc:6210
  #, gcc-internal-format, gfc-internal-format
  msgid "EQUIVALENCE at %C requires two or more objects"
  msgstr ""
  
! #: fortran/match.cc:6224
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Attempt to extend COMMON area beyond its starting point via EQUIVALENCE of `%A'"
  msgid "Attempt to indirectly overlap COMMON blocks %s and %s by EQUIVALENCE at %C"
  msgstr "ForsÃ¸g pÃ¥ at udvide COMMON-omrÃ¥de over dets begyndelsespunkt vha. EQUIVALENCE '%A'"
  
! #: fortran/match.cc:6237
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting a comma in EQUIVALENCE at %C"
  msgstr ""
  
! #: fortran/match.cc:6242
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "EQUIVALENCE statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:6335
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Invalid use of statement function argument at %L"
  msgstr "ugyldig brug af ikke-statisk felt '%D'"
  
! #: fortran/match.cc:6402
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Statement function `%A' defined at %0 is not used"
  msgid "Statement function at %L is recursive"
  msgstr "SÃ¦tningsfunktion '%A' defineret ved %0, men er ikke brugt"
  
! #: fortran/match.cc:6408
  #, fuzzy, gcc-internal-format
  #| msgid "Statement function `%A' defined at %0 is not used"
  msgid "Statement function %qs at %L conflicts with function name"
  msgstr "SÃ¦tningsfunktion '%A' defineret ved %0, men er ikke brugt"
  
! #: fortran/match.cc:6422
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "RETURN statement at %0 invalid within a main program unit"
  msgid "Statement function at %L cannot appear within an INTERFACE"
  msgstr "RETURN-sÃ¦tning ved %0 ugyldig inden i en hovedprogramenhed"
  
! #: fortran/match.cc:6427
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "In statement function"
  msgid "Statement function at %C"
  msgstr "I sÃ¦tningsfunktion"
  
! #: fortran/match.cc:6554 fortran/match.cc:6572 fortran/match.cc:6593
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "expression statement has incomplete type"
  msgid "Expression in CASE selector at %L cannot be %s"
  msgstr "udtrykket er af en ufuldstÃ¦ndig type"
  
! #: fortran/match.cc:6603 fortran/match.cc:6609
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "expression statement has incomplete type"
  msgid "Expression in CASE selector at %L must be scalar"
  msgstr "udtrykket er af en ufuldstÃ¦ndig type"
  
! #: fortran/match.cc:6618
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "initialization of new expression with `='"
  msgid "Expected initialization expression in CASE at %C"
  msgstr "tildeling af startvÃ¦rdi til new-udtryk med '='"
  
! #: fortran/match.cc:6650
  #, gcc-internal-format
  msgid "Expected block name %qs of SELECT construct at %C"
  msgstr ""
  
! #: fortran/match.cc:7030
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "RETURN statement at %0 invalid within a main program unit"
  msgid "SELECT TYPE at %C cannot appear in this scope"
  msgstr "RETURN-sÃ¦tning ved %0 ugyldig inden i en hovedprogramenhed"
  
! #: fortran/match.cc:7058
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Spurious number in FORMAT statement at %0"
  msgid "parse error in SELECT TYPE statement at %C"
  msgstr "Mystisk tal i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:7083
  #, gcc-internal-format, gfc-internal-format
  msgid "Selector in SELECT TYPE at %C is not a named variable; use associate-name=>"
  msgstr ""
  
! #: fortran/match.cc:7271
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "SELECT RANK statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:7312 fortran/match.cc:7366
  #, gcc-internal-format, gfc-internal-format
  msgid "The SELECT RANK selector at %C must be an assumed rank variable"
  msgstr ""
  
! #: fortran/match.cc:7376
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Spurious number in FORMAT statement at %0"
  msgid "parse error in SELECT RANK statement at %C"
  msgstr "Mystisk tal i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:7412
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "Unexpected CASE statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:7464
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "parse error in method specification"
  msgid "Syntax error in CASE specification at %C"
  msgstr "tolkningsfejl i medlemsfunktionsangivelsen"
  
! #: fortran/match.cc:7482
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "Unexpected TYPE IS statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:7514
  #, gcc-internal-format, gfc-internal-format
  msgid "The type-spec shall not specify a sequence derived type or a type with the BIND attribute in SELECT TYPE at %C [F2003:C815]"
  msgstr ""
  
! #: fortran/match.cc:7525
  #, gcc-internal-format, gfc-internal-format
  msgid "All the LEN type parameters in the TYPE IS statement at %C must be ASSUMED"
  msgstr ""
  
! #: fortran/match.cc:7536
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "parse error in method specification"
  msgid "Syntax error in TYPE IS specification at %C"
  msgstr "tolkningsfejl i medlemsfunktionsangivelsen"
  
! #: fortran/match.cc:7612
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "parse error in method specification"
  msgid "Syntax error in CLASS IS specification at %C"
  msgstr "tolkningsfejl i medlemsfunktionsangivelsen"
  
! #: fortran/match.cc:7632
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "Unexpected RANK statement at %C"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/match.cc:7678
  #, gcc-internal-format, gfc-internal-format
  msgid "The SELECT RANK CASE expression at %C must be a scalar, integer constant"
  msgstr ""
  
! #: fortran/match.cc:7687
  #, gcc-internal-format, gfc-internal-format
  msgid "The value of the SELECT RANK CASE expression at %C must not be less than zero or greater than %d"
  msgstr ""
  
! #: fortran/match.cc:7714
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "parse error in method specification"
  msgid "Syntax error in RANK specification at %C"
  msgstr "tolkningsfejl i medlemsfunktionsangivelsen"
  
! #: fortran/match.cc:7836
  #, gcc-internal-format, gfc-internal-format
  msgid "ELSEWHERE statement at %C not enclosed in WHERE block"
  msgstr ""
  
! #: fortran/match.cc:7874
  #, gcc-internal-format
  msgid "Label %qs at %C doesn't match WHERE label %qs"
  msgstr ""
*************** msgstr ""
*** 83834,83845 ****
  msgid "gfc_basic_typename(): Undefined type"
  msgstr ""
  
! #: fortran/misc.cc:218
  #, gcc-internal-format
  msgid "gfc_typename(): Undefined type"
  msgstr ""
  
! #: fortran/misc.cc:322
  #, gcc-internal-format
  msgid "gfc_code2string(): Bad code"
  msgstr ""
--- 83936,83947 ----
  msgid "gfc_basic_typename(): Undefined type"
  msgstr ""
  
! #: fortran/misc.cc:221
  #, gcc-internal-format
  msgid "gfc_typename(): Undefined type"
  msgstr ""
  
! #: fortran/misc.cc:325
  #, gcc-internal-format
  msgid "gfc_code2string(): Bad code"
  msgstr ""
*************** msgstr ""
*** 85481,85488 ****
  msgid "ORDER clause must not be used together with ORDERED at %L"
  msgstr ""
  
! #: fortran/openmp.cc:8630 fortran/openmp.cc:8641 fortran/resolve.cc:12090
! #: fortran/resolve.cc:13699
  #, gcc-internal-format, gfc-internal-format
  msgid "IF clause at %L requires a scalar LOGICAL expression"
  msgstr ""
--- 85583,85590 ----
  msgid "ORDER clause must not be used together with ORDERED at %L"
  msgstr ""
  
! #: fortran/openmp.cc:8630 fortran/openmp.cc:8641 fortran/resolve.cc:12080
! #: fortran/resolve.cc:13689
  #, gcc-internal-format, gfc-internal-format
  msgid "IF clause at %L requires a scalar LOGICAL expression"
  msgstr ""
*************** msgstr "Symboler har en indledende under
*** 85626,85632 ****
  msgid "%qs appears more than once in %<allocate%> at %L"
  msgstr "%qD fremgÃ¥r mere end en gang i map-klausuller"
  
! #: fortran/openmp.cc:9216 fortran/trans-openmp.cc:8309
  #, gcc-internal-format
  msgid "%qs specified in %<allocate%> clause at %L but not in an explicit privatization clause"
  msgstr ""
--- 85728,85734 ----
  msgid "%qs appears more than once in %<allocate%> at %L"
  msgstr "%qD fremgÃ¥r mere end en gang i map-klausuller"
  
! #: fortran/openmp.cc:9216 fortran/trans-openmp.cc:8329
  #, gcc-internal-format
  msgid "%qs specified in %<allocate%> clause at %L but not in an explicit privatization clause"
  msgstr ""
*************** msgstr "umuligt symbol i makroparameterl
*** 87477,87709 ****
  msgid "Syntax error in argument list at %C"
  msgstr "\"%s\" mÃ¥ ikke optrÃ¦de i makroparameterliste"
  
! #: fortran/primary.cc:2108
! #, gcc-internal-format
! msgid "extend_ref(): Bad tail"
! msgstr ""
! 
! #: fortran/primary.cc:2210
  #, gcc-internal-format
  msgid "Array section designator, e.g. %<(:)%>, is required besides the coarray designator %<[...]%> at %C"
  msgstr ""
  
! #: fortran/primary.cc:2218
  #, gcc-internal-format
  msgid "Coarray designator at %C but %qs is not a coarray"
  msgstr ""
  
! #: fortran/primary.cc:2461
  #, gcc-internal-format
  msgid "Symbol %qs at %C has no IMPLICIT type"
  msgstr ""
  
! #: fortran/primary.cc:2468
  #, gcc-internal-format
  msgid "Unexpected %<%c%> for nonderived-type variable %qs at %C"
  msgstr ""
  
! #: fortran/primary.cc:2489
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected structure component name at %C"
  msgstr ""
  
! #: fortran/primary.cc:2510 fortran/primary.cc:2685
  #, gcc-internal-format, gfc-internal-format
  msgid "RE or IM part_ref at %C"
  msgstr ""
  
! #: fortran/primary.cc:2562 fortran/primary.cc:2690
  #, gcc-internal-format, gfc-internal-format
  msgid "The RE or IM part_ref at %C must be applied to a COMPLEX expression"
  msgstr ""
  
! #: fortran/primary.cc:2569 fortran/primary.cc:2703
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "use of class template `%T' as expression"
  msgid "The LEN part_ref at %C must be applied to a CHARACTER expression"
  msgstr "brug af klasseskabelonen '%T' som udtryk"
  
! #: fortran/primary.cc:2628
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument missing after %s"
  msgid "Expected argument list at %C"
  msgstr "en parameter mangler efter %s"
  
! #: fortran/primary.cc:2646
  #, gcc-internal-format
  msgid "%qs at %C is not an inquiry reference to an intrinsic type component %qs"
  msgstr ""
  
! #: fortran/primary.cc:2649
  #, gcc-internal-format
  msgid "%qs at %C is not an inquiry reference to an intrinsic type component"
  msgstr ""
  
! #: fortran/primary.cc:2719
  #, gcc-internal-format, gfc-internal-format
  msgid "The KIND part_ref at %C must be applied to an expression of intrinsic type"
  msgstr ""
  
! #: fortran/primary.cc:2747
  #, gcc-internal-format
  msgid "Procedure pointer component %qs requires an argument list at %C"
  msgstr ""
  
! #: fortran/primary.cc:2833
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "array subscript has type `char'"
  msgid "Unexpected array/substring ref at %C"
  msgstr "tabelindeks er af typen 'char'"
  
! #: fortran/primary.cc:2855
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "forming %s to reference type `%T'"
  msgid "Nonpolymorphic reference to abstract type at %C"
  msgstr "danner %s til referencetypen '%T'"
  
! #: fortran/primary.cc:2862
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed procedure-pointer component at %C"
  msgstr ""
  
! #: fortran/primary.cc:2900
  #, gcc-internal-format
  msgid "gfc_variable_attr(): Expression isn't a variable"
  msgstr ""
  
! #: fortran/primary.cc:3118
  #, gcc-internal-format
  msgid "gfc_caf_attr(): Expression isn't a variable"
  msgstr ""
  
! #: fortran/primary.cc:3175
  #, fuzzy, gcc-internal-format
  #| msgid "subscript missing in array reference"
  msgid "gfc_caf_attr(): Bad array reference"
  msgstr "indeks mangler i tabelopslag"
  
! #: fortran/primary.cc:3354
  #, gcc-internal-format
  msgid "No initializer for allocatable component %qs given in the structure constructor at %C"
  msgstr ""
  
! #: fortran/primary.cc:3365
  #, gcc-internal-format, gfc-internal-format
  msgid "Structure constructor with missing optional arguments at %C"
  msgstr ""
  
! #: fortran/primary.cc:3374
  #, gcc-internal-format
  msgid "No initializer for component %qs given in the structure constructor at %C"
  msgstr ""
  
! #: fortran/primary.cc:3422
  #, fuzzy, gcc-internal-format
  msgid "Cannot construct ABSTRACT type %qs at %L"
  msgstr "kunne ikke konvertere '%E' til '%T'"
  
! #: fortran/primary.cc:3442
  #, gcc-internal-format, gfc-internal-format
  msgid "Structure constructor with named arguments at %C"
  msgstr ""
  
! #: fortran/primary.cc:3457
  #, gcc-internal-format, gfc-internal-format
  msgid "Component initializer without name after component named %s at %L"
  msgstr ""
  
! #: fortran/primary.cc:3462
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "too many arguments to %s `%+#D'"
  msgid "Too many components in structure constructor at %L"
  msgstr "for mange parametre til %s '%+#D'"
  
! #: fortran/primary.cc:3521
  msgid "CHARACTER expression will be truncated in constructor (%td/%td) at %L"
  msgstr ""
  
! #: fortran/primary.cc:3539
  #, fuzzy, gcc-internal-format
  #| msgid "Label %A already defined at %1 when redefined at %0"
  msgid "Component %qs is initialized twice in the structure constructor at %L"
  msgstr "Etiket %A er allerede defineret ved %1 ved omdefinering ved %0"
  
! #: fortran/primary.cc:3551
  #, gcc-internal-format
  msgid "Coindexed expression to pointer component %qs in structure constructor at %L"
  msgstr ""
  
! #: fortran/primary.cc:3605
  #, gcc-internal-format
  msgid "component %qs at %L has already been set by a parent derived type constructor"
  msgstr ""
  
! #: fortran/primary.cc:3768
  #, gcc-internal-format, gfc-internal-format
  msgid "%%LOC() as an rvalue at %C"
  msgstr ""
  
! #: fortran/primary.cc:3827
  #, gcc-internal-format
  msgid "%qs at %C is the name of a recursive function and so refers to the result variable. Use an explicit RESULT variable for direct recursion (12.5.2.1)"
  msgstr ""
  
! #: fortran/primary.cc:3858 fortran/primary.cc:4265
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "floating point overflow in expression"
  msgid "Symbol at %C is not appropriate for an expression"
  msgstr "kommatalsoverlÃ¸b i udtryk"
  
! #: fortran/primary.cc:3963
  #, gcc-internal-format
  msgid "Unexpected use of subroutine name %qs at %C"
  msgstr ""
  
! #: fortran/primary.cc:3995
  #, fuzzy, gcc-internal-format
  #| msgid "Statement function `%A' defined at %0 is not used"
  msgid "Statement function %qs requires argument list at %C"
  msgstr "SÃ¦tningsfunktion '%A' defineret ved %0, men er ikke brugt"
  
! #: fortran/primary.cc:3998
  #, fuzzy, gcc-internal-format
  #| msgid "%s: option `%s' requires an argument\n"
  msgid "Function %qs requires an argument list at %C"
  msgstr "%s: tilvalget '%s' skal have en parameter\n"
  
! #: fortran/primary.cc:4053
  #, fuzzy, gcc-internal-format
  msgid "Missing argument to %qs at %C"
  msgstr "der mangler en parameter til tilvalget '-%s'"
  
! #: fortran/primary.cc:4066
  #, gcc-internal-format, gfc-internal-format
  msgid "The leftmost part-ref in a data-ref cannot be a function reference at %C"
  msgstr ""
  
! #: fortran/primary.cc:4221
  #, fuzzy, gcc-internal-format
  msgid "Missing argument list in function %qs at %C"
  msgstr "der mangler en parameter til tilvalget '-%s'"
  
! #: fortran/primary.cc:4337
  #, fuzzy, gcc-internal-format
  #| msgid "\"%s\" cannot be used as a macro name as it is an operator in C++"
  msgid "Derived type %qs cannot be used as a variable at %C"
  msgstr "\"%s\" kan ikke bruges som et makronavn da det er en operator i C++"
  
! #: fortran/primary.cc:4378
  #, gcc-internal-format, gfc-internal-format
  msgid "Named constant at %C in an EQUIVALENCE"
  msgstr ""
  
! #: fortran/primary.cc:4383
  #, fuzzy, gcc-internal-format
  #| msgid "Spurious sign in FORMAT statement at %0"
  msgid "PARAMETER %qs shall not appear in a DATA statement at %C"
  msgstr "Mystisk fortegn i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/primary.cc:4419
  #, fuzzy, gcc-internal-format
  #| msgid "\"%s\" is not a valid filename"
  msgid "%qs at %C is not a variable"
--- 87579,87806 ----
  msgid "Syntax error in argument list at %C"
  msgstr "\"%s\" mÃ¥ ikke optrÃ¦de i makroparameterliste"
  
! #: fortran/primary.cc:2218
  #, gcc-internal-format
  msgid "Array section designator, e.g. %<(:)%>, is required besides the coarray designator %<[...]%> at %C"
  msgstr ""
  
! #: fortran/primary.cc:2226
  #, gcc-internal-format
  msgid "Coarray designator at %C but %qs is not a coarray"
  msgstr ""
  
! #: fortran/primary.cc:2483
  #, gcc-internal-format
  msgid "Symbol %qs at %C has no IMPLICIT type"
  msgstr ""
  
! #: fortran/primary.cc:2490
  #, gcc-internal-format
  msgid "Unexpected %<%c%> for nonderived-type variable %qs at %C"
  msgstr ""
  
! #: fortran/primary.cc:2512
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected structure component name at %C"
  msgstr ""
  
! #: fortran/primary.cc:2543 fortran/primary.cc:2726
  #, gcc-internal-format, gfc-internal-format
  msgid "RE or IM part_ref at %C"
  msgstr ""
  
! #: fortran/primary.cc:2595 fortran/primary.cc:2731
  #, gcc-internal-format, gfc-internal-format
  msgid "The RE or IM part_ref at %C must be applied to a COMPLEX expression"
  msgstr ""
  
! #: fortran/primary.cc:2602 fortran/primary.cc:2744
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "use of class template `%T' as expression"
  msgid "The LEN part_ref at %C must be applied to a CHARACTER expression"
  msgstr "brug af klasseskabelonen '%T' som udtryk"
  
! #: fortran/primary.cc:2661
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument missing after %s"
  msgid "Expected argument list at %C"
  msgstr "en parameter mangler efter %s"
  
! #: fortran/primary.cc:2679
  #, gcc-internal-format
  msgid "%qs at %C is not an inquiry reference to an intrinsic type component %qs"
  msgstr ""
  
! #: fortran/primary.cc:2682
  #, gcc-internal-format
  msgid "%qs at %C is not an inquiry reference to an intrinsic type component"
  msgstr ""
  
! #: fortran/primary.cc:2760
  #, gcc-internal-format, gfc-internal-format
  msgid "The KIND part_ref at %C must be applied to an expression of intrinsic type"
  msgstr ""
  
! #: fortran/primary.cc:2788
  #, gcc-internal-format
  msgid "Procedure pointer component %qs requires an argument list at %C"
  msgstr ""
  
! #: fortran/primary.cc:2875
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "array subscript has type `char'"
  msgid "Unexpected array/substring ref at %C"
  msgstr "tabelindeks er af typen 'char'"
  
! #: fortran/primary.cc:2897
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "forming %s to reference type `%T'"
  msgid "Nonpolymorphic reference to abstract type at %C"
  msgstr "danner %s til referencetypen '%T'"
  
! #: fortran/primary.cc:2904
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed procedure-pointer component at %C"
  msgstr ""
  
! #: fortran/primary.cc:2943
  #, gcc-internal-format
  msgid "gfc_variable_attr(): Expression isn't a variable"
  msgstr ""
  
! #: fortran/primary.cc:3165
  #, gcc-internal-format
  msgid "gfc_caf_attr(): Expression isn't a variable"
  msgstr ""
  
! #: fortran/primary.cc:3222
  #, fuzzy, gcc-internal-format
  #| msgid "subscript missing in array reference"
  msgid "gfc_caf_attr(): Bad array reference"
  msgstr "indeks mangler i tabelopslag"
  
! #: fortran/primary.cc:3401
  #, gcc-internal-format
  msgid "No initializer for allocatable component %qs given in the structure constructor at %C"
  msgstr ""
  
! #: fortran/primary.cc:3412
  #, gcc-internal-format, gfc-internal-format
  msgid "Structure constructor with missing optional arguments at %C"
  msgstr ""
  
! #: fortran/primary.cc:3421
  #, gcc-internal-format
  msgid "No initializer for component %qs given in the structure constructor at %C"
  msgstr ""
  
! #: fortran/primary.cc:3469
  #, fuzzy, gcc-internal-format
  msgid "Cannot construct ABSTRACT type %qs at %L"
  msgstr "kunne ikke konvertere '%E' til '%T'"
  
! #: fortran/primary.cc:3489
  #, gcc-internal-format, gfc-internal-format
  msgid "Structure constructor with named arguments at %C"
  msgstr ""
  
! #: fortran/primary.cc:3504
  #, gcc-internal-format, gfc-internal-format
  msgid "Component initializer without name after component named %s at %L"
  msgstr ""
  
! #: fortran/primary.cc:3509
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "too many arguments to %s `%+#D'"
  msgid "Too many components in structure constructor at %L"
  msgstr "for mange parametre til %s '%+#D'"
  
! #: fortran/primary.cc:3568
  msgid "CHARACTER expression will be truncated in constructor (%td/%td) at %L"
  msgstr ""
  
! #: fortran/primary.cc:3586
  #, fuzzy, gcc-internal-format
  #| msgid "Label %A already defined at %1 when redefined at %0"
  msgid "Component %qs is initialized twice in the structure constructor at %L"
  msgstr "Etiket %A er allerede defineret ved %1 ved omdefinering ved %0"
  
! #: fortran/primary.cc:3598
  #, gcc-internal-format
  msgid "Coindexed expression to pointer component %qs in structure constructor at %L"
  msgstr ""
  
! #: fortran/primary.cc:3652
  #, gcc-internal-format
  msgid "component %qs at %L has already been set by a parent derived type constructor"
  msgstr ""
  
! #: fortran/primary.cc:3815
  #, gcc-internal-format, gfc-internal-format
  msgid "%%LOC() as an rvalue at %C"
  msgstr ""
  
! #: fortran/primary.cc:3874
  #, gcc-internal-format
  msgid "%qs at %C is the name of a recursive function and so refers to the result variable. Use an explicit RESULT variable for direct recursion (12.5.2.1)"
  msgstr ""
  
! #: fortran/primary.cc:3905 fortran/primary.cc:4312
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "floating point overflow in expression"
  msgid "Symbol at %C is not appropriate for an expression"
  msgstr "kommatalsoverlÃ¸b i udtryk"
  
! #: fortran/primary.cc:4010
  #, gcc-internal-format
  msgid "Unexpected use of subroutine name %qs at %C"
  msgstr ""
  
! #: fortran/primary.cc:4042
  #, fuzzy, gcc-internal-format
  #| msgid "Statement function `%A' defined at %0 is not used"
  msgid "Statement function %qs requires argument list at %C"
  msgstr "SÃ¦tningsfunktion '%A' defineret ved %0, men er ikke brugt"
  
! #: fortran/primary.cc:4045
  #, fuzzy, gcc-internal-format
  #| msgid "%s: option `%s' requires an argument\n"
  msgid "Function %qs requires an argument list at %C"
  msgstr "%s: tilvalget '%s' skal have en parameter\n"
  
! #: fortran/primary.cc:4100
  #, fuzzy, gcc-internal-format
  msgid "Missing argument to %qs at %C"
  msgstr "der mangler en parameter til tilvalget '-%s'"
  
! #: fortran/primary.cc:4113
  #, gcc-internal-format, gfc-internal-format
  msgid "The leftmost part-ref in a data-ref cannot be a function reference at %C"
  msgstr ""
  
! #: fortran/primary.cc:4268
  #, fuzzy, gcc-internal-format
  msgid "Missing argument list in function %qs at %C"
  msgstr "der mangler en parameter til tilvalget '-%s'"
  
! #: fortran/primary.cc:4394
  #, fuzzy, gcc-internal-format
  #| msgid "\"%s\" cannot be used as a macro name as it is an operator in C++"
  msgid "Derived type %qs cannot be used as a variable at %C"
  msgstr "\"%s\" kan ikke bruges som et makronavn da det er en operator i C++"
  
! #: fortran/primary.cc:4435
  #, gcc-internal-format, gfc-internal-format
  msgid "Named constant at %C in an EQUIVALENCE"
  msgstr ""
  
! #: fortran/primary.cc:4440
  #, fuzzy, gcc-internal-format
  #| msgid "Spurious sign in FORMAT statement at %0"
  msgid "PARAMETER %qs shall not appear in a DATA statement at %C"
  msgstr "Mystisk fortegn i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/primary.cc:4476
  #, fuzzy, gcc-internal-format
  #| msgid "\"%s\" is not a valid filename"
  msgid "%qs at %C is not a variable"
*************** msgstr "Nulparameter ved %0 for sÃ¦tning
*** 87840,88796 ****
  msgid "Character-valued argument %qs of statement function at %L must have constant length"
  msgstr ""
  
! #: fortran/resolve.cc:578
  #, fuzzy, gcc-internal-format
  msgid "Contained procedure %qs at %L has the same name as its encompassing procedure"
  msgstr "PlanlÃ¦g ikke begyndelsen og slutningen af proceduren"
  
! #: fortran/resolve.cc:598
  #, gcc-internal-format
  msgid "Contained function %qs at %L has no IMPLICIT type"
  msgstr ""
  
! #: fortran/resolve.cc:601
  #, gcc-internal-format
  msgid "Result %qs of contained function %qs at %L has no IMPLICIT type"
  msgstr ""
  
! #: fortran/resolve.cc:627
  #, gcc-internal-format
  msgid "Character-valued module procedure %qs at %L must not be assumed length"
  msgstr ""
  
! #: fortran/resolve.cc:629
  #, fuzzy, gcc-internal-format
  #| msgid "Return values of functions in FPU registers"
  msgid "Character-valued internal function %qs at %L must not be assumed length"
  msgstr "ReturnÃ©r vÃ¦rdier fra funktioner i fpu-registre"
  
! #: fortran/resolve.cc:802
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "inconsistent instance variable specification"
  msgid "Function %s at %L has entries with mismatched array specifications"
  msgstr "inkonsistent instansvariabelangivelse"
  
! #: fortran/resolve.cc:813
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "inconsistent instance variable specification"
  msgid "Function %s at %L has entry %s with mismatched characteristics"
  msgstr "inkonsistent instansvariabelangivelse"
  
! #: fortran/resolve.cc:828
  #, gcc-internal-format, gfc-internal-format
  msgid "Function %s at %L with entries returning variables of different string lengths"
  msgstr ""
  
! #: fortran/resolve.cc:860
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "data member `%D' cannot be a member template"
  msgid "FUNCTION result %s cannot be an array in FUNCTION %s at %L"
  msgstr "datamedlem '%D' kan ikke vÃ¦re en medlemsskabelon"
  
! #: fortran/resolve.cc:864
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "data member `%D' cannot be a member template"
  msgid "ENTRY result %s cannot be an array in FUNCTION %s at %L"
  msgstr "datamedlem '%D' kan ikke vÃ¦re en medlemsskabelon"
  
! #: fortran/resolve.cc:871
  #, gcc-internal-format, gfc-internal-format
  msgid "FUNCTION result %s cannot be a POINTER in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:875
  #, gcc-internal-format, gfc-internal-format
  msgid "ENTRY result %s cannot be a POINTER in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:882
  #, gcc-internal-format, gfc-internal-format
  msgid "FUNCTION result %s cannot be ALLOCATABLE in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:886
  #, gcc-internal-format, gfc-internal-format
  msgid "ENTRY result %s cannot be ALLOCATABLE in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:924
  #, gcc-internal-format, gfc-internal-format
  msgid "FUNCTION result %s cannot be of type %s in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:929
  #, gcc-internal-format, gfc-internal-format
  msgid "ENTRY result %s cannot be of type %s in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:980
  #, fuzzy, gcc-internal-format
  #| msgid "RETURN statement at %0 invalid within a main program unit"
  msgid "Global entity %qs at %L cannot appear in a COMMON block at %L"
  msgstr "RETURN-sÃ¦tning ved %0 ugyldig inden i en hovedprogramenhed"
  
! #: fortran/resolve.cc:984
  #, fuzzy, gcc-internal-format
  #| msgid "RETURN statement at %0 invalid within a main program unit"
  msgid "Global entity %qs at %L cannot appear in a COMMON block"
  msgstr "RETURN-sÃ¦tning ved %0 ugyldig inden i en hovedprogramenhed"
  
! #: fortran/resolve.cc:994
  #, gcc-internal-format, gfc-internal-format
  msgid "COMMON block at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1001
  #, gcc-internal-format
  msgid "Variable %qs at %L is in COMMON but only in BLOCK DATA initialization is allowed"
  msgstr ""
  
! #: fortran/resolve.cc:1005
  #, gcc-internal-format
  msgid "Initialized variable %qs at %L is in a blank COMMON but initialization is only allowed in named common blocks"
  msgstr ""
  
! #: fortran/resolve.cc:1012
  #, gcc-internal-format
  msgid "%qs at %L cannot appear in COMMON [F2008:C5100]"
  msgstr ""
  
! #: fortran/resolve.cc:1017
  #, fuzzy, gcc-internal-format
  msgid "Automatic object %qs at %L cannot appear in COMMON at %L"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: fortran/resolve.cc:1029
  #, gcc-internal-format
  msgid "Derived type variable %qs in COMMON at %L has neither the SEQUENCE nor the BIND(C) attribute"
  msgstr ""
  
! #: fortran/resolve.cc:1033
  #, gcc-internal-format
  msgid "Derived type variable %qs in COMMON at %L has an ultimate component that is allocatable"
  msgstr ""
  
! #: fortran/resolve.cc:1037
  #, gcc-internal-format
  msgid "Derived type variable %qs in COMMON at %L may not have default initializer"
  msgstr ""
  
! #: fortran/resolve.cc:1081
  #, gcc-internal-format
  msgid "In Fortran 2003 COMMON %qs block at %L is a global identifier and must thus have the same binding name as the same-named COMMON block at %L: %s vs %s"
  msgstr ""
  
! #: fortran/resolve.cc:1095
  #, gcc-internal-format
  msgid "COMMON block %qs at %L uses the same global identifier as entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1103
  #, gcc-internal-format
  msgid "Fortran 2008: COMMON block %qs with binding label at %L sharing the identifier with global non-COMMON-block entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1125
  #, gcc-internal-format
  msgid "COMMON block at %L with binding label %qs uses the same global identifier as entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1146
  #, gcc-internal-format
  msgid "COMMON block %qs at %L is used as PARAMETER at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1150
  #, fuzzy, gcc-internal-format
  #| msgid "CLASS variable %qs at %L cannot have the PARAMETER attribute"
  msgid "COMMON block %qs at %L cannot have the EXTERNAL attribute"
  msgstr "CLASS-variablen %qs ved %L kan ikke have PARAMETER-attributten"
  
! #: fortran/resolve.cc:1154
  #, gcc-internal-format
  msgid "COMMON block %qs at %L is also an intrinsic procedure"
  msgstr ""
  
! #: fortran/resolve.cc:1158
  #, gcc-internal-format
  msgid "COMMON block %qs at %L that is also a function result"
  msgstr ""
  
! #: fortran/resolve.cc:1163
  #, gcc-internal-format
  msgid "COMMON block %qs at %L that is also a global procedure"
  msgstr ""
  
! #: fortran/resolve.cc:1230
  #, gcc-internal-format
  msgid "The KIND parameter %qs in the PDT constructor at %C has no value"
  msgstr ""
  
! #: fortran/resolve.cc:1373
  #, gcc-internal-format, gfc-internal-format
  msgid "The rank of the element in the structure constructor at %L does not match that of the component (%d/%d)"
  msgstr ""
  
! #: fortran/resolve.cc:1394
  #, gcc-internal-format
  msgid "The element in the structure constructor at %L, for pointer component %qs, is %s but should be %s"
  msgstr ""
  
! #: fortran/resolve.cc:1429
  #, gcc-internal-format
  msgid "Unequal character lengths (%wd/%wd) for pointer component %qs in constructor at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1475
  #, gcc-internal-format
  msgid "The NULL in the structure constructor at %L is being applied to component %qs, which is neither a POINTER nor ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:1509
  #, gcc-internal-format
  msgid "Interface mismatch for procedure-pointer component %qs in structure constructor at %L: %s"
  msgstr ""
  
! #: fortran/resolve.cc:1528
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to %s `%+#D'"
  msgid "Bad array spec of component %qs referenced in structure constructor at %L"
  msgstr "for mange parametre til %s '%+#D'"
  
! #: fortran/resolve.cc:1541
  #, gcc-internal-format
  msgid "The shape of component %qs in the structure constructor at %L differs from the shape of the declared component for dimension %d (%ld/%ld)"
  msgstr ""
  
! #: fortran/resolve.cc:1562
  #, gcc-internal-format
  msgid "The element in the structure constructor at %L, for pointer component %qs should be a POINTER or a TARGET"
  msgstr ""
  
! #: fortran/resolve.cc:1589
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target at %L has a vector subscript"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: fortran/resolve.cc:1601
  #, gcc-internal-format
  msgid "Invalid expression in the structure constructor for pointer component %qs at %L in PURE procedure"
  msgstr ""
  
! #: fortran/resolve.cc:1727
  #, gcc-internal-format
  msgid "The upper bound in the last dimension must appear in the reference to the assumed size array %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1789
  #, fuzzy, gcc-internal-format
  #| msgid "use of `%D' is ambiguous"
  msgid "%qs at %L is ambiguous"
  msgstr "brug af '%D' er tvetydigt"
  
! #: fortran/resolve.cc:1793
  #, gcc-internal-format
  msgid "GENERIC procedure %qs is not allowed as an actual argument at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1914
  #, gcc-internal-format
  msgid "Type specified for intrinsic function %qs at %L is ignored"
  msgstr ""
  
! #: fortran/resolve.cc:1927
  #, gcc-internal-format
  msgid "Intrinsic subroutine %qs at %L shall not have a type specifier"
  msgstr ""
  
! #: fortran/resolve.cc:1938
  #, gcc-internal-format
  msgid "%qs declared INTRINSIC at %L does not exist"
  msgstr ""
  
! #: fortran/resolve.cc:1951
  #, gcc-internal-format
  msgid "The intrinsic %qs declared INTRINSIC at %L is not available in the current standard settings but %s. Use an appropriate %<-std=*%> option or enable %<-fall-intrinsics%> in order to use it."
  msgstr ""
  
! #: fortran/resolve.cc:1989
  #, gcc-internal-format
  msgid "Non-RECURSIVE procedure %qs from module %qs is possibly calling itself recursively in procedure %qs.  Declare it RECURSIVE or use %<-frecursive%>"
  msgstr ""
  
! #: fortran/resolve.cc:1994 fortran/resolve.cc:7179
  #, gcc-internal-format
  msgid "Non-RECURSIVE procedure %qs at %L is possibly calling itself recursively.  Declare it RECURSIVE or use %<-frecursive%>"
  msgstr ""
  
! #: fortran/resolve.cc:2053 fortran/resolve.cc:11603 fortran/resolve.cc:13626
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Label %A already defined at %1 when redefined at %0"
  msgid "Label %d referenced at %L is never defined"
  msgstr "Etiket %A er allerede defineret ved %1 ved omdefinering ved %0"
  
! #: fortran/resolve.cc:2085
  #, fuzzy, gcc-internal-format
  #| msgid "External procedure `%A' is passed as actual argument at %0 but not explicitly declared EXTERNAL"
  msgid "Derived type %qs is used as an actual argument at %L"
  msgstr "Ekstern procedure '%A' er overbragt som faktisk parameter ved %0, men ikke eksplicit erklÃ¦ret EXTERNAL"
  
! #: fortran/resolve.cc:2103
  #, fuzzy, gcc-internal-format
  #| msgid "Statement function `%A' defined at %0 is not used"
  msgid "Statement function %qs at %L is not allowed as an actual argument"
  msgstr "SÃ¦tningsfunktion '%A' defineret ved %0, men er ikke brugt"
  
! #: fortran/resolve.cc:2111
  #, gcc-internal-format
  msgid "Intrinsic %qs at %L is not allowed as an actual argument"
  msgstr ""
  
! #: fortran/resolve.cc:2118
  #, fuzzy, gcc-internal-format
  #| msgid "External procedure `%A' is passed as actual argument at %0 but not explicitly declared EXTERNAL"
  msgid "Internal procedure %qs is used as actual argument at %L"
  msgstr "Ekstern procedure '%A' er overbragt som faktisk parameter ved %0, men ikke eksplicit erklÃ¦ret EXTERNAL"
  
! #: fortran/resolve.cc:2126
  #, gcc-internal-format
  msgid "ELEMENTAL non-INTRINSIC procedure %qs is not allowed as an actual argument at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2153
  #, gcc-internal-format
  msgid "Unable to find a specific INTRINSIC procedure for the reference %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2175
  #, fuzzy, gcc-internal-format
  #| msgid "use of `%D' is ambiguous"
  msgid "Symbol %qs at %L is ambiguous"
  msgstr "brug af '%D' er tvetydigt"
  
! #: fortran/resolve.cc:2239
  #, gcc-internal-format, gfc-internal-format
  msgid "By-value argument at %L is not of numeric type"
  msgstr ""
  
! #: fortran/resolve.cc:2246
  #, gcc-internal-format, gfc-internal-format
  msgid "By-value argument at %L cannot be an array or an array section"
  msgstr ""
  
! #: fortran/resolve.cc:2260
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Statement at %0 invalid in this context"
  msgid "By-value argument at %L is not allowed in this context"
  msgstr "SÃ¦tning ved %0 er ugyldig i denne kontekst"
  
! #: fortran/resolve.cc:2272
  #, gcc-internal-format, gfc-internal-format
  msgid "Passing internal procedure at %L by location not allowed"
  msgstr ""
  
! #: fortran/resolve.cc:2283
  #, gcc-internal-format
  msgid "ELEMENTAL procedure pointer component %qs is not allowed as an actual argument at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2292
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed actual argument at %L with ultimate pointer component"
  msgstr ""
  
! #: fortran/resolve.cc:2442
  #, gcc-internal-format
  msgid "%qs at %L is an array and OPTIONAL; If it is not present, then it cannot be the actual argument of an ELEMENTAL procedure unless there is a non-optional argument with the same rank (Fortran 2018, 15.5.2.12)"
  msgstr ""
  
! #: fortran/resolve.cc:2481
  #, gcc-internal-format
  msgid "Actual argument at %L for INTENT(%s) dummy %qs of ELEMENTAL subroutine %qs is a scalar, but another actual argument is an array"
  msgstr ""
  
! #: fortran/resolve.cc:2755
  #, gcc-internal-format
  msgid "Return type mismatch of function %qs at %L (%s/%s)"
  msgstr ""
  
! #: fortran/resolve.cc:2782
  #, fuzzy, gcc-internal-format
  #| msgid "invalid lvalue in assignment"
  msgid "Interface mismatch in global procedure %qs at %L: %s"
  msgstr "ugyldig venstrevÃ¦rdi i tildeling"
  
! #: fortran/resolve.cc:2894
  #, gcc-internal-format
  msgid "There is no specific function for the generic %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2914
  #, gcc-internal-format
  msgid "Generic function %qs at %L is not consistent with a specific intrinsic interface"
  msgstr ""
  
! #: fortran/resolve.cc:2952
  #, gcc-internal-format
  msgid "Function %qs at %L is INTRINSIC but is not compatible with an intrinsic"
  msgstr ""
  
! #: fortran/resolve.cc:3013
  #, gcc-internal-format
  msgid "Unable to resolve the specific function %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3090
  #, gcc-internal-format
  msgid "Missing explicit declaration with EXTERNAL attribute for symbol %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3125
  #, fuzzy, gcc-internal-format
  msgid "Function %qs at %L has no IMPLICIT type; did you mean %qs?"
  msgstr "'%D' erklÃ¦rer ikke en skabelonstype"
  
! #: fortran/resolve.cc:3129 fortran/resolve.cc:19066
  #, gcc-internal-format
  msgid "Function %qs at %L has no IMPLICIT type"
  msgstr ""
  
! #: fortran/resolve.cc:3283
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "No calls in function %s\n"
  msgid "Reference to impure function at %L inside a DO CONCURRENT"
  msgstr "Ingen kald i funktionen %s\n"
  
! #: fortran/resolve.cc:3294
  #, gcc-internal-format
  msgid "Reference to impure function %qs at %L inside a FORALL %s"
  msgstr ""
  
! #: fortran/resolve.cc:3301
  #, gcc-internal-format
  msgid "Reference to impure function %qs at %L inside a DO CONCURRENT %s"
  msgstr ""
  
! #: fortran/resolve.cc:3308
  #, gcc-internal-format
  msgid "Reference to impure function %qs at %L within a PURE procedure"
  msgstr ""
  
! #: fortran/resolve.cc:3375
  #, fuzzy, gcc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "Unexpected junk after %qs at %L"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/resolve.cc:3386
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function,"
  msgid "%qs at %L is not a function"
  msgstr "'%s' er ikke en funktion,"
  
! #: fortran/resolve.cc:3394 fortran/resolve.cc:3966
  #, gcc-internal-format
  msgid "ABSTRACT INTERFACE %qs must not be referenced at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3406
  #, gcc-internal-format
  msgid "ABSTRACT INTERFACE %qs at %L must not have an assumed character length result (F2008: C418)"
  msgstr ""
  
  #. Internal procedures are taken care of in resolve_contained_fntype.
! #: fortran/resolve.cc:3449
  #, gcc-internal-format
  msgid "Function %qs is declared CHARACTER(*) and cannot be used at %L since it is not a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:3470
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Different argument lists in external dummy function %s at %L and %L"
  msgstr "der mangler en parameter til tilvalget '-%s'"
  
! #: fortran/resolve.cc:3509
  #, fuzzy, gcc-internal-format
  #| msgid "sizeof applied to a function type"
  msgid "resolve_function(): bad function type"
  msgstr "sizeof benyttet pÃ¥ en funktionstype"
  
! #: fortran/resolve.cc:3523
  #, gcc-internal-format, gfc-internal-format
  msgid "A BOZ literal constant at %L cannot appear as an actual argument in a function reference"
  msgstr ""
  
! #: fortran/resolve.cc:3539
  #, gcc-internal-format
  msgid "User defined non-ELEMENTAL function %qs at %L not allowed in WORKSHARE construct"
  msgstr ""
  
! #: fortran/resolve.cc:3601
  #, gcc-internal-format
  msgid "ENTRY %qs at %L cannot be called recursively, as function %qs is not RECURSIVE"
  msgstr ""
  
! #: fortran/resolve.cc:3605
  #, gcc-internal-format
  msgid "Function %qs at %L cannot be called recursively, as it is not RECURSIVE"
  msgstr ""
  
! #: fortran/resolve.cc:3663
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is deprecated"
  msgid "Using function %qs at %L is deprecated"
  msgstr "'%s' er forÃ¦ldet"
  
! #: fortran/resolve.cc:3701
  #, gcc-internal-format, gfc-internal-format
  msgid "Subroutine call at %L in a DO CONCURRENT block is not PURE"
  msgstr ""
  
! #: fortran/resolve.cc:3710
  #, gcc-internal-format
  msgid "Subroutine call to %qs in FORALL block at %L is not PURE"
  msgstr ""
  
! #: fortran/resolve.cc:3716
  #, gcc-internal-format
  msgid "Subroutine call to %qs in DO CONCURRENT block at %L is not PURE"
  msgstr ""
  
! #: fortran/resolve.cc:3722
  #, gcc-internal-format
  msgid "Subroutine call to %qs at %L is not PURE"
  msgstr ""
  
! #: fortran/resolve.cc:3790
  #, gcc-internal-format
  msgid "There is no specific subroutine for the generic %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3799
  #, gcc-internal-format
  msgid "Generic subroutine %qs at %L is not consistent with an intrinsic subroutine interface"
  msgstr ""
  
! #: fortran/resolve.cc:3834
  #, gcc-internal-format
  msgid "Subroutine %qs at %L is INTRINSIC but is not compatible with an intrinsic"
  msgstr ""
  
! #: fortran/resolve.cc:3879
  #, gcc-internal-format
  msgid "Unable to resolve the specific subroutine %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3937
  #, gcc-internal-format
  msgid "%qs at %L has a type, which is not consistent with the CALL at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3976
  #, gcc-internal-format
  msgid "ENTRY %qs at %L cannot be called recursively, as subroutine %qs is not RECURSIVE"
  msgstr ""
  
! #: fortran/resolve.cc:3980
  #, gcc-internal-format
  msgid "SUBROUTINE %qs at %L cannot be called recursively, as it is not RECURSIVE"
  msgstr ""
  
! #: fortran/resolve.cc:4031
  #, gcc-internal-format, gfc-internal-format
  msgid "Different argument lists in external dummy subroutine %s at %L and %L"
  msgstr ""
  
! #: fortran/resolve.cc:4062
  #, fuzzy, gcc-internal-format
  #| msgid "cast does not match function type"
  msgid "resolve_subroutine(): bad function type"
  msgstr "typeomtvingelse passer ikke til funktionstype"
  
! #: fortran/resolve.cc:4079
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is deprecated"
  msgid "Using subroutine %qs at %L is deprecated"
  msgstr "'%s' er forÃ¦ldet"
  
! #: fortran/resolve.cc:4106
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "shared and mdll are not compatible"
  msgid "Shapes for operands at %L and %L are not conformable"
  msgstr "shared og mdll er indbyrdes uforenelige"
  
! #: fortran/resolve.cc:4158
  #, gcc-internal-format
  msgid "logical_to_bitwise(): Bad intrinsic"
  msgstr ""
  
! #: fortran/resolve.cc:4261
  #, fuzzy, gcc-internal-format
  #| msgid "Return values of functions in FPU registers"
  msgid "Impure function %qs at %L might not be evaluated"
  msgstr "ReturnÃ©r vÃ¦rdier fra funktioner i fpu-registre"
  
! #: fortran/resolve.cc:4265
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Warn when an inlined function cannot be inlined"
  msgid "Impure function at %L might not be evaluated"
  msgstr "Advar nÃ¥r en inline funktion ikke kan indbygges"
  
! #: fortran/resolve.cc:4360
  #, gcc-internal-format
  msgid "BOZ literal constant at %L cannot be an operand of unary operator %qs"
  msgstr ""
  
! #: fortran/resolve.cc:4368
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "comparison of unsigned expression >= 0 is always true"
  msgid "Negation of unsigned expression at %L not permitted "
  msgstr "sammenligning med unsigned udtryk >= 0 er altid sand"
  
! #: fortran/resolve.cc:4389
  #, gcc-internal-format
  msgid "Operands at %L and %L cannot appear as operands of binary operator %qs"
  msgstr ""
  
! #: fortran/resolve.cc:4399
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid type argument"
  msgid "Invalid context for NULL() pointer at %L"
  msgstr "ugyldig typeparameter"
  
! #: fortran/resolve.cc:4417
  #, gcc-internal-format
  msgid "Operand of unary numeric operator %qs at %L is %s"
  msgstr ""
  
! #: fortran/resolve.cc:4432 fortran/resolve.cc:4466
  #, gcc-internal-format
  msgid "Operands of binary numeric operator %qs at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4446 fortran/resolve.cc:4635 fortran/resolve.cc:4804
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "inconsistent operand constraints in an `asm'"
  msgid "Inconsistent ranks for operator at %L and %L"
  msgstr "inkonsistente operandbegrÃ¦sninger i 'asm'"
  
! #: fortran/resolve.cc:4458
  #, gcc-internal-format
  msgid "Unexpected derived-type entities in binary intrinsic numeric operator %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:4482
  #, gcc-internal-format, gfc-internal-format
  msgid "Operands of string concatenation operator at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4525
  #, gcc-internal-format
  msgid "Operands of logical operator %qs at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4548
  #, gcc-internal-format, gfc-internal-format
  msgid "Operand of .not. operator at %L is %s"
  msgstr ""
  
! #: fortran/resolve.cc:4563
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "`%V' qualifiers cannot be applied to `%T'"
  msgid "COMPLEX quantities cannot be compared at %L"
  msgstr "modifikationerne '%V' kan ikke anvendes pÃ¥ '%T'"
  
! #: fortran/resolve.cc:4593 fortran/resolve.cc:4608
  #, gcc-internal-format, gfc-internal-format
  msgid "BOZ literal constant near %L cannot appear as an operand of a relational operator"
  msgstr ""
  
! #: fortran/resolve.cc:4643
  #, gcc-internal-format, gfc-internal-format
  msgid "Inconsistent types for operator at %L and %L: %s and %s"
  msgstr ""
  
! #: fortran/resolve.cc:4667
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid string constant `%E'"
  msgid "Equality comparison for %s at %L"
  msgstr "ugyldig strengkonstant '%E'"
  
! #: fortran/resolve.cc:4669
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid string constant `%E'"
  msgid "Inequality comparison for %s at %L"
  msgstr "ugyldig strengkonstant '%E'"
  
! #: fortran/resolve.cc:4682
  #, gcc-internal-format, gfc-internal-format
  msgid "Logicals at %L must be compared with %s instead of %s"
  msgstr ""
  
! #: fortran/resolve.cc:4690
  #, gcc-internal-format
  msgid "Operands of comparison operator %qs at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4705
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "Unknown operator %qs at %L; did you mean %qs?"
  msgstr "ukendt registernavn: %s"
  
! #: fortran/resolve.cc:4708
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "Unknown operator %qs at %L"
  msgstr "ukendt registernavn: %s"
  
! #: fortran/resolve.cc:4713
  #, gcc-internal-format
  msgid "Operand of user operator %qs at %L is %s"
  msgstr ""
  
! #: fortran/resolve.cc:4720
  #, gcc-internal-format
  msgid "Operands of user operator %qs at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4734
  #, gcc-internal-format
  msgid "resolve_operator(): Bad intrinsic"
  msgstr ""
  
! #: fortran/resolve.cc:4832
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "inconsistent operand constraints in an `asm'"
! msgid "Inconsistent coranks for operator at %L and %L"
! msgstr "inkonsistente operandbegrÃ¦sninger i 'asm'"
! 
! #: fortran/resolve.cc:5031
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference at %L is out of bounds (%ld < %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5036
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference at %L is out of bounds (%ld < %ld) in codimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5046
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference at %L is out of bounds (%ld > %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5051
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference at %L is out of bounds (%ld > %ld) in codimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5072
  #, gcc-internal-format, gfc-internal-format
  msgid "Illegal stride of zero at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5089
  #, gcc-internal-format, gfc-internal-format
  msgid "Lower array reference at %L is out of bounds (%ld < %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5097
  #, gcc-internal-format, gfc-internal-format
  msgid "Lower array reference at %L is out of bounds (%ld > %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5113
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper array reference at %L is out of bounds (%ld < %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5122
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper array reference at %L is out of bounds (%ld > %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5138
  #, fuzzy, gcc-internal-format
  #| msgid "subscript missing in array reference"
  msgid "check_dimension(): Bad array reference"
  msgstr "indeks mangler i tabelopslag"
  
! #: fortran/resolve.cc:5161
  #, gcc-internal-format, gfc-internal-format
  msgid "Rightmost upper bound of assumed size array section not specified at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5171
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank mismatch in array reference at %L (%d/%d)"
  msgstr ""
  
! #: fortran/resolve.cc:5179
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindex rank mismatch in array reference at %L (%d/%d)"
  msgstr ""
  
! #: fortran/resolve.cc:5195
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindex of codimension %d must be a scalar at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5223
  #, gcc-internal-format, gfc-internal-format
  msgid "Array index at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5229
  #, gcc-internal-format, gfc-internal-format
  msgid "Array index at %L must be of INTEGER type, found %s"
  msgstr ""
  
! #: fortran/resolve.cc:5235
  #, gcc-internal-format, gfc-internal-format
  msgid "REAL array index at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5275
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "Argument dim at %L must be scalar"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: fortran/resolve.cc:5282
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument dim at %L must be of INTEGER type"
  msgstr ""
  
! #: fortran/resolve.cc:5343
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Null element at %0 for array reference at %1"
  msgid "Invalid array reference of a non-array entity at %L"
  msgstr "Nulelement ved %0 for tabelreference ved %1"
  
! #: fortran/resolve.cc:5358
  #, gcc-internal-format
  msgid "find_array_spec(): unused as(1)"
  msgstr ""
  
! #: fortran/resolve.cc:5370
  #, gcc-internal-format
  msgid "find_array_spec(): unused as(2)"
  msgstr ""
  
! #: fortran/resolve.cc:5415
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Array `%A' at %0 is too large to handle"
  msgid "Array index at %L is an array of rank %d"
  msgstr "Tabellen '%A' ved %0 er for stor til at hÃ¥ndtere"
  
! #: fortran/resolve.cc:5506
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "TEAM_NUMBER argument at %L must be scalar"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: fortran/resolve.cc:5513
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "`%D' is not a member of type `%T'"
  msgid "TEAM_NUMBER argument at %L must be of INTEGER type, found %s"
  msgstr "'%D' er ikke et medlem af typen '%T'"
  
! #: fortran/resolve.cc:5527
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "TEAM argument at %L must be scalar"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: fortran/resolve.cc:5536
  #, gcc-internal-format, gfc-internal-format
  msgid "TEAM argument at %L must be of TEAM_TYPE from the intrinsic module ISO_FORTRAN_ENV, found %s"
  msgstr ""
  
! #: fortran/resolve.cc:5550
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "STAT argument at %L must be scalar"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: fortran/resolve.cc:5557
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "`%D' is not a member of type `%T'"
  msgid "STAT argument at %L must be of INTEGER type, found %s"
  msgstr "'%D' er ikke et medlem af typen '%T'"
  
! #: fortran/resolve.cc:5566
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument 1 of __builtin_spe_predicate must be a constant"
  msgid "STAT's expression at %L must be a variable"
  msgstr "1. parameter til __builtin_spe_predicate skal vÃ¦re en konstant"
  
! #: fortran/resolve.cc:5588
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring start index at %L must be of type INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:5595
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring start index at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5617
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring end index at %L must be of type INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:5624
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Substring begin/end point at %0 out of defined range"
  msgid "Substring end index at %L must be scalar"
  msgstr "Understrengs begyndelses-/slutpunkt ved %0 er uden for det definerede interval"
  
! #: fortran/resolve.cc:5644
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "requested alignment is too large"
  msgid "Substring end index at %L is too large"
  msgstr "angivet justering er for stor"
  
! #: fortran/resolve.cc:5835
  #, gcc-internal-format
  msgid "resolve_ref(): Bad array reference"
  msgstr ""
  
! #: fortran/resolve.cc:5849
  #, gcc-internal-format, gfc-internal-format
  msgid "Component to the right of a part reference with nonzero rank must not have the POINTER attribute at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5859
  #, gcc-internal-format, gfc-internal-format
  msgid "Component to the right of a part reference with nonzero rank must not have the ALLOCATABLE attribute at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5907
  #, gcc-internal-format, gfc-internal-format
  msgid "Two or more part references with nonzero rank must not be specified at %L"
  msgstr ""
  
! #: fortran/resolve.cc:6019
  #, gcc-internal-format
  msgid "gfc_expression_rank(): Two array specs"
  msgstr ""
  
! #: fortran/resolve.cc:6048
  #, fuzzy, gcc-internal-format
  #| msgid "ambiguous conversion for array subscript"
  msgid "Illegal coarray index"
  msgstr "tvetydig konvertering af tabelindeks"
  
! #: fortran/resolve.cc:6096
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute may only be used as actual argument"
  msgstr ""
  
! #: fortran/resolve.cc:6106
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L may only be used as actual argument"
  msgstr ""
--- 87937,88887 ----
  msgid "Character-valued argument %qs of statement function at %L must have constant length"
  msgstr ""
  
! #: fortran/resolve.cc:579
  #, fuzzy, gcc-internal-format
  msgid "Contained procedure %qs at %L has the same name as its encompassing procedure"
  msgstr "PlanlÃ¦g ikke begyndelsen og slutningen af proceduren"
  
! #: fortran/resolve.cc:599
  #, gcc-internal-format
  msgid "Contained function %qs at %L has no IMPLICIT type"
  msgstr ""
  
! #: fortran/resolve.cc:602
  #, gcc-internal-format
  msgid "Result %qs of contained function %qs at %L has no IMPLICIT type"
  msgstr ""
  
! #: fortran/resolve.cc:628
  #, gcc-internal-format
  msgid "Character-valued module procedure %qs at %L must not be assumed length"
  msgstr ""
  
! #: fortran/resolve.cc:630
  #, fuzzy, gcc-internal-format
  #| msgid "Return values of functions in FPU registers"
  msgid "Character-valued internal function %qs at %L must not be assumed length"
  msgstr "ReturnÃ©r vÃ¦rdier fra funktioner i fpu-registre"
  
! #: fortran/resolve.cc:803
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "inconsistent instance variable specification"
  msgid "Function %s at %L has entries with mismatched array specifications"
  msgstr "inkonsistent instansvariabelangivelse"
  
! #: fortran/resolve.cc:814
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "inconsistent instance variable specification"
  msgid "Function %s at %L has entry %s with mismatched characteristics"
  msgstr "inkonsistent instansvariabelangivelse"
  
! #: fortran/resolve.cc:829
  #, gcc-internal-format, gfc-internal-format
  msgid "Function %s at %L with entries returning variables of different string lengths"
  msgstr ""
  
! #: fortran/resolve.cc:861
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "data member `%D' cannot be a member template"
  msgid "FUNCTION result %s cannot be an array in FUNCTION %s at %L"
  msgstr "datamedlem '%D' kan ikke vÃ¦re en medlemsskabelon"
  
! #: fortran/resolve.cc:865
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "data member `%D' cannot be a member template"
  msgid "ENTRY result %s cannot be an array in FUNCTION %s at %L"
  msgstr "datamedlem '%D' kan ikke vÃ¦re en medlemsskabelon"
  
! #: fortran/resolve.cc:872
  #, gcc-internal-format, gfc-internal-format
  msgid "FUNCTION result %s cannot be a POINTER in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:876
  #, gcc-internal-format, gfc-internal-format
  msgid "ENTRY result %s cannot be a POINTER in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:883
  #, gcc-internal-format, gfc-internal-format
  msgid "FUNCTION result %s cannot be ALLOCATABLE in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:887
  #, gcc-internal-format, gfc-internal-format
  msgid "ENTRY result %s cannot be ALLOCATABLE in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:925
  #, gcc-internal-format, gfc-internal-format
  msgid "FUNCTION result %s cannot be of type %s in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:930
  #, gcc-internal-format, gfc-internal-format
  msgid "ENTRY result %s cannot be of type %s in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:981
  #, fuzzy, gcc-internal-format
  #| msgid "RETURN statement at %0 invalid within a main program unit"
  msgid "Global entity %qs at %L cannot appear in a COMMON block at %L"
  msgstr "RETURN-sÃ¦tning ved %0 ugyldig inden i en hovedprogramenhed"
  
! #: fortran/resolve.cc:985
  #, fuzzy, gcc-internal-format
  #| msgid "RETURN statement at %0 invalid within a main program unit"
  msgid "Global entity %qs at %L cannot appear in a COMMON block"
  msgstr "RETURN-sÃ¦tning ved %0 ugyldig inden i en hovedprogramenhed"
  
! #: fortran/resolve.cc:995
  #, gcc-internal-format, gfc-internal-format
  msgid "COMMON block at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1002
  #, gcc-internal-format
  msgid "Variable %qs at %L is in COMMON but only in BLOCK DATA initialization is allowed"
  msgstr ""
  
! #: fortran/resolve.cc:1006
  #, gcc-internal-format
  msgid "Initialized variable %qs at %L is in a blank COMMON but initialization is only allowed in named common blocks"
  msgstr ""
  
! #: fortran/resolve.cc:1013
  #, gcc-internal-format
  msgid "%qs at %L cannot appear in COMMON [F2008:C5100]"
  msgstr ""
  
! #: fortran/resolve.cc:1018
  #, fuzzy, gcc-internal-format
  msgid "Automatic object %qs at %L cannot appear in COMMON at %L"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: fortran/resolve.cc:1030
  #, gcc-internal-format
  msgid "Derived type variable %qs in COMMON at %L has neither the SEQUENCE nor the BIND(C) attribute"
  msgstr ""
  
! #: fortran/resolve.cc:1034
  #, gcc-internal-format
  msgid "Derived type variable %qs in COMMON at %L has an ultimate component that is allocatable"
  msgstr ""
  
! #: fortran/resolve.cc:1038
  #, gcc-internal-format
  msgid "Derived type variable %qs in COMMON at %L may not have default initializer"
  msgstr ""
  
! #: fortran/resolve.cc:1082
  #, gcc-internal-format
  msgid "In Fortran 2003 COMMON %qs block at %L is a global identifier and must thus have the same binding name as the same-named COMMON block at %L: %s vs %s"
  msgstr ""
  
! #: fortran/resolve.cc:1096
  #, gcc-internal-format
  msgid "COMMON block %qs at %L uses the same global identifier as entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1104
  #, gcc-internal-format
  msgid "Fortran 2008: COMMON block %qs with binding label at %L sharing the identifier with global non-COMMON-block entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1126
  #, gcc-internal-format
  msgid "COMMON block at %L with binding label %qs uses the same global identifier as entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1147
  #, gcc-internal-format
  msgid "COMMON block %qs at %L is used as PARAMETER at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1151
  #, fuzzy, gcc-internal-format
  #| msgid "CLASS variable %qs at %L cannot have the PARAMETER attribute"
  msgid "COMMON block %qs at %L cannot have the EXTERNAL attribute"
  msgstr "CLASS-variablen %qs ved %L kan ikke have PARAMETER-attributten"
  
! #: fortran/resolve.cc:1155
  #, gcc-internal-format
  msgid "COMMON block %qs at %L is also an intrinsic procedure"
  msgstr ""
  
! #: fortran/resolve.cc:1159
  #, gcc-internal-format
  msgid "COMMON block %qs at %L that is also a function result"
  msgstr ""
  
! #: fortran/resolve.cc:1164
  #, gcc-internal-format
  msgid "COMMON block %qs at %L that is also a global procedure"
  msgstr ""
  
! #: fortran/resolve.cc:1231
  #, gcc-internal-format
  msgid "The KIND parameter %qs in the PDT constructor at %C has no value"
  msgstr ""
  
! #: fortran/resolve.cc:1374
  #, gcc-internal-format, gfc-internal-format
  msgid "The rank of the element in the structure constructor at %L does not match that of the component (%d/%d)"
  msgstr ""
  
! #: fortran/resolve.cc:1395
  #, gcc-internal-format
  msgid "The element in the structure constructor at %L, for pointer component %qs, is %s but should be %s"
  msgstr ""
  
! #: fortran/resolve.cc:1430
  #, gcc-internal-format
  msgid "Unequal character lengths (%wd/%wd) for pointer component %qs in constructor at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1476
  #, gcc-internal-format
  msgid "The NULL in the structure constructor at %L is being applied to component %qs, which is neither a POINTER nor ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:1510
  #, gcc-internal-format
  msgid "Interface mismatch for procedure-pointer component %qs in structure constructor at %L: %s"
  msgstr ""
  
! #: fortran/resolve.cc:1529
  #, fuzzy, gcc-internal-format
  #| msgid "too many arguments to %s `%+#D'"
  msgid "Bad array spec of component %qs referenced in structure constructor at %L"
  msgstr "for mange parametre til %s '%+#D'"
  
! #: fortran/resolve.cc:1542
  #, gcc-internal-format
  msgid "The shape of component %qs in the structure constructor at %L differs from the shape of the declared component for dimension %d (%ld/%ld)"
  msgstr ""
  
! #: fortran/resolve.cc:1563
  #, gcc-internal-format
  msgid "The element in the structure constructor at %L, for pointer component %qs should be a POINTER or a TARGET"
  msgstr ""
  
! #: fortran/resolve.cc:1590
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target at %L has a vector subscript"
  msgstr "overlÃ¸b i konstant udtryk"
  
! #: fortran/resolve.cc:1602
  #, gcc-internal-format
  msgid "Invalid expression in the structure constructor for pointer component %qs at %L in PURE procedure"
  msgstr ""
  
! #: fortran/resolve.cc:1728
  #, gcc-internal-format
  msgid "The upper bound in the last dimension must appear in the reference to the assumed size array %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1790
  #, fuzzy, gcc-internal-format
  #| msgid "use of `%D' is ambiguous"
  msgid "%qs at %L is ambiguous"
  msgstr "brug af '%D' er tvetydigt"
  
! #: fortran/resolve.cc:1794
  #, gcc-internal-format
  msgid "GENERIC procedure %qs is not allowed as an actual argument at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1915
  #, gcc-internal-format
  msgid "Type specified for intrinsic function %qs at %L is ignored"
  msgstr ""
  
! #: fortran/resolve.cc:1928
  #, gcc-internal-format
  msgid "Intrinsic subroutine %qs at %L shall not have a type specifier"
  msgstr ""
  
! #: fortran/resolve.cc:1939
  #, gcc-internal-format
  msgid "%qs declared INTRINSIC at %L does not exist"
  msgstr ""
  
! #: fortran/resolve.cc:1952
  #, gcc-internal-format
  msgid "The intrinsic %qs declared INTRINSIC at %L is not available in the current standard settings but %s. Use an appropriate %<-std=*%> option or enable %<-fall-intrinsics%> in order to use it."
  msgstr ""
  
! #: fortran/resolve.cc:1990
  #, gcc-internal-format
  msgid "Non-RECURSIVE procedure %qs from module %qs is possibly calling itself recursively in procedure %qs.  Declare it RECURSIVE or use %<-frecursive%>"
  msgstr ""
  
! #: fortran/resolve.cc:1995 fortran/resolve.cc:7152
  #, gcc-internal-format
  msgid "Non-RECURSIVE procedure %qs at %L is possibly calling itself recursively.  Declare it RECURSIVE or use %<-frecursive%>"
  msgstr ""
  
! #: fortran/resolve.cc:2054 fortran/resolve.cc:11593 fortran/resolve.cc:13616
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Label %A already defined at %1 when redefined at %0"
  msgid "Label %d referenced at %L is never defined"
  msgstr "Etiket %A er allerede defineret ved %1 ved omdefinering ved %0"
  
! #: fortran/resolve.cc:2086
  #, fuzzy, gcc-internal-format
  #| msgid "External procedure `%A' is passed as actual argument at %0 but not explicitly declared EXTERNAL"
  msgid "Derived type %qs is used as an actual argument at %L"
  msgstr "Ekstern procedure '%A' er overbragt som faktisk parameter ved %0, men ikke eksplicit erklÃ¦ret EXTERNAL"
  
! #: fortran/resolve.cc:2104
  #, fuzzy, gcc-internal-format
  #| msgid "Statement function `%A' defined at %0 is not used"
  msgid "Statement function %qs at %L is not allowed as an actual argument"
  msgstr "SÃ¦tningsfunktion '%A' defineret ved %0, men er ikke brugt"
  
! #: fortran/resolve.cc:2112
  #, gcc-internal-format
  msgid "Intrinsic %qs at %L is not allowed as an actual argument"
  msgstr ""
  
! #: fortran/resolve.cc:2119
  #, fuzzy, gcc-internal-format
  #| msgid "External procedure `%A' is passed as actual argument at %0 but not explicitly declared EXTERNAL"
  msgid "Internal procedure %qs is used as actual argument at %L"
  msgstr "Ekstern procedure '%A' er overbragt som faktisk parameter ved %0, men ikke eksplicit erklÃ¦ret EXTERNAL"
  
! #: fortran/resolve.cc:2127
  #, gcc-internal-format
  msgid "ELEMENTAL non-INTRINSIC procedure %qs is not allowed as an actual argument at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2154
  #, gcc-internal-format
  msgid "Unable to find a specific INTRINSIC procedure for the reference %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2176
  #, fuzzy, gcc-internal-format
  #| msgid "use of `%D' is ambiguous"
  msgid "Symbol %qs at %L is ambiguous"
  msgstr "brug af '%D' er tvetydigt"
  
! #: fortran/resolve.cc:2240
  #, gcc-internal-format, gfc-internal-format
  msgid "By-value argument at %L is not of numeric type"
  msgstr ""
  
! #: fortran/resolve.cc:2247
  #, gcc-internal-format, gfc-internal-format
  msgid "By-value argument at %L cannot be an array or an array section"
  msgstr ""
  
! #: fortran/resolve.cc:2261
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Statement at %0 invalid in this context"
  msgid "By-value argument at %L is not allowed in this context"
  msgstr "SÃ¦tning ved %0 er ugyldig i denne kontekst"
  
! #: fortran/resolve.cc:2273
  #, gcc-internal-format, gfc-internal-format
  msgid "Passing internal procedure at %L by location not allowed"
  msgstr ""
  
! #: fortran/resolve.cc:2284
  #, gcc-internal-format
  msgid "ELEMENTAL procedure pointer component %qs is not allowed as an actual argument at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2293
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed actual argument at %L with ultimate pointer component"
  msgstr ""
  
! #: fortran/resolve.cc:2443
  #, gcc-internal-format
  msgid "%qs at %L is an array and OPTIONAL; If it is not present, then it cannot be the actual argument of an ELEMENTAL procedure unless there is a non-optional argument with the same rank (Fortran 2018, 15.5.2.12)"
  msgstr ""
  
! #: fortran/resolve.cc:2482
  #, gcc-internal-format
  msgid "Actual argument at %L for INTENT(%s) dummy %qs of ELEMENTAL subroutine %qs is a scalar, but another actual argument is an array"
  msgstr ""
  
! #: fortran/resolve.cc:2756
  #, gcc-internal-format
  msgid "Return type mismatch of function %qs at %L (%s/%s)"
  msgstr ""
  
! #: fortran/resolve.cc:2783
  #, fuzzy, gcc-internal-format
  #| msgid "invalid lvalue in assignment"
  msgid "Interface mismatch in global procedure %qs at %L: %s"
  msgstr "ugyldig venstrevÃ¦rdi i tildeling"
  
! #: fortran/resolve.cc:2895
  #, gcc-internal-format
  msgid "There is no specific function for the generic %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2915
  #, gcc-internal-format
  msgid "Generic function %qs at %L is not consistent with a specific intrinsic interface"
  msgstr ""
  
! #: fortran/resolve.cc:2953
  #, gcc-internal-format
  msgid "Function %qs at %L is INTRINSIC but is not compatible with an intrinsic"
  msgstr ""
  
! #: fortran/resolve.cc:3014
  #, gcc-internal-format
  msgid "Unable to resolve the specific function %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3091
  #, gcc-internal-format
  msgid "Missing explicit declaration with EXTERNAL attribute for symbol %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3126
  #, fuzzy, gcc-internal-format
  msgid "Function %qs at %L has no IMPLICIT type; did you mean %qs?"
  msgstr "'%D' erklÃ¦rer ikke en skabelonstype"
  
! #: fortran/resolve.cc:3130 fortran/resolve.cc:19066
  #, gcc-internal-format
  msgid "Function %qs at %L has no IMPLICIT type"
  msgstr ""
  
! #: fortran/resolve.cc:3284
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "No calls in function %s\n"
  msgid "Reference to impure function at %L inside a DO CONCURRENT"
  msgstr "Ingen kald i funktionen %s\n"
  
! #: fortran/resolve.cc:3295
  #, gcc-internal-format
  msgid "Reference to impure function %qs at %L inside a FORALL %s"
  msgstr ""
  
! #: fortran/resolve.cc:3302
  #, gcc-internal-format
  msgid "Reference to impure function %qs at %L inside a DO CONCURRENT %s"
  msgstr ""
  
! #: fortran/resolve.cc:3309
  #, gcc-internal-format
  msgid "Reference to impure function %qs at %L within a PURE procedure"
  msgstr ""
  
! #: fortran/resolve.cc:3376
  #, fuzzy, gcc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "Unexpected junk after %qs at %L"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/resolve.cc:3387
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function,"
  msgid "%qs at %L is not a function"
  msgstr "'%s' er ikke en funktion,"
  
! #: fortran/resolve.cc:3395 fortran/resolve.cc:3967
  #, gcc-internal-format
  msgid "ABSTRACT INTERFACE %qs must not be referenced at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3407
  #, gcc-internal-format
  msgid "ABSTRACT INTERFACE %qs at %L must not have an assumed character length result (F2008: C418)"
  msgstr ""
  
  #. Internal procedures are taken care of in resolve_contained_fntype.
! #: fortran/resolve.cc:3450
  #, gcc-internal-format
  msgid "Function %qs is declared CHARACTER(*) and cannot be used at %L since it is not a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:3471
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Different argument lists in external dummy function %s at %L and %L"
  msgstr "der mangler en parameter til tilvalget '-%s'"
  
! #: fortran/resolve.cc:3510
  #, fuzzy, gcc-internal-format
  #| msgid "sizeof applied to a function type"
  msgid "resolve_function(): bad function type"
  msgstr "sizeof benyttet pÃ¥ en funktionstype"
  
! #: fortran/resolve.cc:3524
  #, gcc-internal-format, gfc-internal-format
  msgid "A BOZ literal constant at %L cannot appear as an actual argument in a function reference"
  msgstr ""
  
! #: fortran/resolve.cc:3540
  #, gcc-internal-format
  msgid "User defined non-ELEMENTAL function %qs at %L not allowed in WORKSHARE construct"
  msgstr ""
  
! #: fortran/resolve.cc:3602
  #, gcc-internal-format
  msgid "ENTRY %qs at %L cannot be called recursively, as function %qs is not RECURSIVE"
  msgstr ""
  
! #: fortran/resolve.cc:3606
  #, gcc-internal-format
  msgid "Function %qs at %L cannot be called recursively, as it is not RECURSIVE"
  msgstr ""
  
! #: fortran/resolve.cc:3664
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is deprecated"
  msgid "Using function %qs at %L is deprecated"
  msgstr "'%s' er forÃ¦ldet"
  
! #: fortran/resolve.cc:3702
  #, gcc-internal-format, gfc-internal-format
  msgid "Subroutine call at %L in a DO CONCURRENT block is not PURE"
  msgstr ""
  
! #: fortran/resolve.cc:3711
  #, gcc-internal-format
  msgid "Subroutine call to %qs in FORALL block at %L is not PURE"
  msgstr ""
  
! #: fortran/resolve.cc:3717
  #, gcc-internal-format
  msgid "Subroutine call to %qs in DO CONCURRENT block at %L is not PURE"
  msgstr ""
  
! #: fortran/resolve.cc:3723
  #, gcc-internal-format
  msgid "Subroutine call to %qs at %L is not PURE"
  msgstr ""
  
! #: fortran/resolve.cc:3791
  #, gcc-internal-format
  msgid "There is no specific subroutine for the generic %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3800
  #, gcc-internal-format
  msgid "Generic subroutine %qs at %L is not consistent with an intrinsic subroutine interface"
  msgstr ""
  
! #: fortran/resolve.cc:3835
  #, gcc-internal-format
  msgid "Subroutine %qs at %L is INTRINSIC but is not compatible with an intrinsic"
  msgstr ""
  
! #: fortran/resolve.cc:3880
  #, gcc-internal-format
  msgid "Unable to resolve the specific subroutine %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3938
  #, gcc-internal-format
  msgid "%qs at %L has a type, which is not consistent with the CALL at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3977
  #, gcc-internal-format
  msgid "ENTRY %qs at %L cannot be called recursively, as subroutine %qs is not RECURSIVE"
  msgstr ""
  
! #: fortran/resolve.cc:3981
  #, gcc-internal-format
  msgid "SUBROUTINE %qs at %L cannot be called recursively, as it is not RECURSIVE"
  msgstr ""
  
! #: fortran/resolve.cc:4032
  #, gcc-internal-format, gfc-internal-format
  msgid "Different argument lists in external dummy subroutine %s at %L and %L"
  msgstr ""
  
! #: fortran/resolve.cc:4063
  #, fuzzy, gcc-internal-format
  #| msgid "cast does not match function type"
  msgid "resolve_subroutine(): bad function type"
  msgstr "typeomtvingelse passer ikke til funktionstype"
  
! #: fortran/resolve.cc:4080
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is deprecated"
  msgid "Using subroutine %qs at %L is deprecated"
  msgstr "'%s' er forÃ¦ldet"
  
! #: fortran/resolve.cc:4107
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "shared and mdll are not compatible"
  msgid "Shapes for operands at %L and %L are not conformable"
  msgstr "shared og mdll er indbyrdes uforenelige"
  
! #: fortran/resolve.cc:4159
  #, gcc-internal-format
  msgid "logical_to_bitwise(): Bad intrinsic"
  msgstr ""
  
! #: fortran/resolve.cc:4262
  #, fuzzy, gcc-internal-format
  #| msgid "Return values of functions in FPU registers"
  msgid "Impure function %qs at %L might not be evaluated"
  msgstr "ReturnÃ©r vÃ¦rdier fra funktioner i fpu-registre"
  
! #: fortran/resolve.cc:4266
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Warn when an inlined function cannot be inlined"
  msgid "Impure function at %L might not be evaluated"
  msgstr "Advar nÃ¥r en inline funktion ikke kan indbygges"
  
! #: fortran/resolve.cc:4361
  #, gcc-internal-format
  msgid "BOZ literal constant at %L cannot be an operand of unary operator %qs"
  msgstr ""
  
! #: fortran/resolve.cc:4369
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "comparison of unsigned expression >= 0 is always true"
  msgid "Negation of unsigned expression at %L not permitted "
  msgstr "sammenligning med unsigned udtryk >= 0 er altid sand"
  
! #: fortran/resolve.cc:4390
  #, gcc-internal-format
  msgid "Operands at %L and %L cannot appear as operands of binary operator %qs"
  msgstr ""
  
! #: fortran/resolve.cc:4400
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid type argument"
  msgid "Invalid context for NULL() pointer at %L"
  msgstr "ugyldig typeparameter"
  
! #: fortran/resolve.cc:4418
  #, gcc-internal-format
  msgid "Operand of unary numeric operator %qs at %L is %s"
  msgstr ""
  
! #: fortran/resolve.cc:4433 fortran/resolve.cc:4467
  #, gcc-internal-format
  msgid "Operands of binary numeric operator %qs at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4447 fortran/resolve.cc:4636 fortran/resolve.cc:4805
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "inconsistent operand constraints in an `asm'"
  msgid "Inconsistent ranks for operator at %L and %L"
  msgstr "inkonsistente operandbegrÃ¦sninger i 'asm'"
  
! #: fortran/resolve.cc:4459
  #, gcc-internal-format
  msgid "Unexpected derived-type entities in binary intrinsic numeric operator %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:4483
  #, gcc-internal-format, gfc-internal-format
  msgid "Operands of string concatenation operator at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4526
  #, gcc-internal-format
  msgid "Operands of logical operator %qs at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4549
  #, gcc-internal-format, gfc-internal-format
  msgid "Operand of .not. operator at %L is %s"
  msgstr ""
  
! #: fortran/resolve.cc:4564
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "`%V' qualifiers cannot be applied to `%T'"
  msgid "COMPLEX quantities cannot be compared at %L"
  msgstr "modifikationerne '%V' kan ikke anvendes pÃ¥ '%T'"
  
! #: fortran/resolve.cc:4594 fortran/resolve.cc:4609
  #, gcc-internal-format, gfc-internal-format
  msgid "BOZ literal constant near %L cannot appear as an operand of a relational operator"
  msgstr ""
  
! #: fortran/resolve.cc:4644
  #, gcc-internal-format, gfc-internal-format
  msgid "Inconsistent types for operator at %L and %L: %s and %s"
  msgstr ""
  
! #: fortran/resolve.cc:4668
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid string constant `%E'"
  msgid "Equality comparison for %s at %L"
  msgstr "ugyldig strengkonstant '%E'"
  
! #: fortran/resolve.cc:4670
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid string constant `%E'"
  msgid "Inequality comparison for %s at %L"
  msgstr "ugyldig strengkonstant '%E'"
  
! #: fortran/resolve.cc:4683
  #, gcc-internal-format, gfc-internal-format
  msgid "Logicals at %L must be compared with %s instead of %s"
  msgstr ""
  
! #: fortran/resolve.cc:4691
  #, gcc-internal-format
  msgid "Operands of comparison operator %qs at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4706
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "Unknown operator %qs at %L; did you mean %qs?"
  msgstr "ukendt registernavn: %s"
  
! #: fortran/resolve.cc:4709
  #, fuzzy, gcc-internal-format
  #| msgid "unknown register name: %s"
  msgid "Unknown operator %qs at %L"
  msgstr "ukendt registernavn: %s"
  
! #: fortran/resolve.cc:4714
  #, gcc-internal-format
  msgid "Operand of user operator %qs at %L is %s"
  msgstr ""
  
! #: fortran/resolve.cc:4721
  #, gcc-internal-format
  msgid "Operands of user operator %qs at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4735
  #, gcc-internal-format
  msgid "resolve_operator(): Bad intrinsic"
  msgstr ""
  
! #: fortran/resolve.cc:5004
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference at %L is out of bounds (%ld < %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5009
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference at %L is out of bounds (%ld < %ld) in codimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5019
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference at %L is out of bounds (%ld > %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5024
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference at %L is out of bounds (%ld > %ld) in codimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5045
  #, gcc-internal-format, gfc-internal-format
  msgid "Illegal stride of zero at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5062
  #, gcc-internal-format, gfc-internal-format
  msgid "Lower array reference at %L is out of bounds (%ld < %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5070
  #, gcc-internal-format, gfc-internal-format
  msgid "Lower array reference at %L is out of bounds (%ld > %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5086
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper array reference at %L is out of bounds (%ld < %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5095
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper array reference at %L is out of bounds (%ld > %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5111
  #, fuzzy, gcc-internal-format
  #| msgid "subscript missing in array reference"
  msgid "check_dimension(): Bad array reference"
  msgstr "indeks mangler i tabelopslag"
  
! #: fortran/resolve.cc:5134
  #, gcc-internal-format, gfc-internal-format
  msgid "Rightmost upper bound of assumed size array section not specified at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5144
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank mismatch in array reference at %L (%d/%d)"
  msgstr ""
  
! #: fortran/resolve.cc:5152
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindex rank mismatch in array reference at %L (%d/%d)"
  msgstr ""
  
! #: fortran/resolve.cc:5168
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindex of codimension %d must be a scalar at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5196
  #, gcc-internal-format, gfc-internal-format
  msgid "Array index at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5202
  #, gcc-internal-format, gfc-internal-format
  msgid "Array index at %L must be of INTEGER type, found %s"
  msgstr ""
  
! #: fortran/resolve.cc:5208
  #, gcc-internal-format, gfc-internal-format
  msgid "REAL array index at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5248
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "Argument dim at %L must be scalar"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: fortran/resolve.cc:5255
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument dim at %L must be of INTEGER type"
  msgstr ""
  
! #: fortran/resolve.cc:5316
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Null element at %0 for array reference at %1"
  msgid "Invalid array reference of a non-array entity at %L"
  msgstr "Nulelement ved %0 for tabelreference ved %1"
  
! #: fortran/resolve.cc:5331
  #, gcc-internal-format
  msgid "find_array_spec(): unused as(1)"
  msgstr ""
  
! #: fortran/resolve.cc:5343
  #, gcc-internal-format
  msgid "find_array_spec(): unused as(2)"
  msgstr ""
  
! #: fortran/resolve.cc:5388
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Array `%A' at %0 is too large to handle"
  msgid "Array index at %L is an array of rank %d"
  msgstr "Tabellen '%A' ved %0 er for stor til at hÃ¥ndtere"
  
! #: fortran/resolve.cc:5479
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "TEAM_NUMBER argument at %L must be scalar"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: fortran/resolve.cc:5486
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "`%D' is not a member of type `%T'"
  msgid "TEAM_NUMBER argument at %L must be of INTEGER type, found %s"
  msgstr "'%D' er ikke et medlem af typen '%T'"
  
! #: fortran/resolve.cc:5500
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "TEAM argument at %L must be scalar"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: fortran/resolve.cc:5509
  #, gcc-internal-format, gfc-internal-format
  msgid "TEAM argument at %L must be of TEAM_TYPE from the intrinsic module ISO_FORTRAN_ENV, found %s"
  msgstr ""
  
! #: fortran/resolve.cc:5523
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "STAT argument at %L must be scalar"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: fortran/resolve.cc:5530
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "`%D' is not a member of type `%T'"
  msgid "STAT argument at %L must be of INTEGER type, found %s"
  msgstr "'%D' er ikke et medlem af typen '%T'"
  
! #: fortran/resolve.cc:5539
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument 1 of __builtin_spe_predicate must be a constant"
  msgid "STAT's expression at %L must be a variable"
  msgstr "1. parameter til __builtin_spe_predicate skal vÃ¦re en konstant"
  
! #: fortran/resolve.cc:5561
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring start index at %L must be of type INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:5568
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring start index at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5590
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring end index at %L must be of type INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:5597
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Substring begin/end point at %0 out of defined range"
  msgid "Substring end index at %L must be scalar"
  msgstr "Understrengs begyndelses-/slutpunkt ved %0 er uden for det definerede interval"
  
! #: fortran/resolve.cc:5617
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "requested alignment is too large"
  msgid "Substring end index at %L is too large"
  msgstr "angivet justering er for stor"
  
! #: fortran/resolve.cc:5808
  #, gcc-internal-format
  msgid "resolve_ref(): Bad array reference"
  msgstr ""
  
! #: fortran/resolve.cc:5822
  #, gcc-internal-format, gfc-internal-format
  msgid "Component to the right of a part reference with nonzero rank must not have the POINTER attribute at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5832
  #, gcc-internal-format, gfc-internal-format
  msgid "Component to the right of a part reference with nonzero rank must not have the ALLOCATABLE attribute at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5880
  #, gcc-internal-format, gfc-internal-format
  msgid "Two or more part references with nonzero rank must not be specified at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5992
  #, gcc-internal-format
  msgid "gfc_expression_rank(): Two array specs"
  msgstr ""
  
! #: fortran/resolve.cc:6021
  #, fuzzy, gcc-internal-format
  #| msgid "ambiguous conversion for array subscript"
  msgid "Illegal coarray index"
  msgstr "tvetydig konvertering af tabelindeks"
  
! #: fortran/resolve.cc:6069
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute may only be used as actual argument"
  msgstr ""
  
! #: fortran/resolve.cc:6079
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L may only be used as actual argument"
  msgstr ""
*************** msgstr ""
*** 88799,88810 ****
  #. for all inquiry functions in resolve_function; the reason is
  #. that the function-name resolution happens too late in that
  #. function.
! #: fortran/resolve.cc:6116
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L as actual argument to an inquiry function shall be the first argument"
  msgstr ""
  
! #: fortran/resolve.cc:6137
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank variable %s at %L may only be used as actual argument"
  msgstr ""
--- 88890,88901 ----
  #. for all inquiry functions in resolve_function; the reason is
  #. that the function-name resolution happens too late in that
  #. function.
! #: fortran/resolve.cc:6089
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L as actual argument to an inquiry function shall be the first argument"
  msgstr ""
  
! #: fortran/resolve.cc:6110
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank variable %s at %L may only be used as actual argument"
  msgstr ""
*************** msgstr ""
*** 88813,89236 ****
  #. for all inquiry functions in resolve_function; the reason is
  #. that the function-name resolution happens too late in that
  #. function.
! #: fortran/resolve.cc:6147
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank variable %s at %L as actual argument to an inquiry function shall be the first argument"
  msgstr ""
  
! #: fortran/resolve.cc:6158
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute shall not have a subobject reference"
  msgstr ""
  
! #: fortran/resolve.cc:6167
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L shall not have a subobject reference"
  msgstr ""
  
! #: fortran/resolve.cc:6184
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank variable %s at %L shall not have a subobject reference"
  msgstr ""
  
! #: fortran/resolve.cc:6245
  #, fuzzy, gcc-internal-format
  #| msgid "Null element at %0 for array reference at %1"
  msgid "Scalar variable %qs has an array reference at %L"
  msgstr "Nulelement ved %0 for tabelreference ved %1"
  
! #: fortran/resolve.cc:6401
  #, gcc-internal-format
  msgid "Variable %qs, used in a specification expression, is referenced at %L before the ENTRY statement in which it is a parameter"
  msgstr ""
  
! #: fortran/resolve.cc:6406
  #, gcc-internal-format
  msgid "Variable %qs is used at %L before the ENTRY statement in which it is a parameter"
  msgstr ""
  
! #: fortran/resolve.cc:6480
  #, gcc-internal-format, gfc-internal-format
  msgid "Polymorphic subobject of coindexed object at %L"
  msgstr ""
  
! #: fortran/resolve.cc:6493
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed object with polymorphic allocatable subcomponent at %L"
  msgstr ""
  
! #: fortran/resolve.cc:6506
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is deprecated"
  msgid "Using variable %qs at %L is deprecated"
  msgstr "'%s' er forÃ¦ldet"
  
! #: fortran/resolve.cc:6562 fortran/resolve.cc:6650 fortran/resolve.cc:6674
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Null element at %0 for array reference at %1"
  msgid "Invalid array reference at %L"
  msgstr "Nulelement ved %0 for tabelreference ved %1"
  
! #: fortran/resolve.cc:6759
  #, gcc-internal-format
  msgid "%qs at %L is host associated at %L into a contained procedure with an internal procedure of the same name"
  msgstr ""
  
! #: fortran/resolve.cc:6938 fortran/resolve.cc:7090
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "duplicate initialization of %D"
  msgid "Error in typebound call at %L"
  msgstr "%D tildelt startvÃ¦rdi mere end Ã©n gang"
  
! #: fortran/resolve.cc:7054
  #, gcc-internal-format, gfc-internal-format
  msgid "Passed-object at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:7061
  #, gcc-internal-format
  msgid "Base object for procedure-pointer component call at %L is of ABSTRACT type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:7100
  #, gcc-internal-format
  msgid "Base object for type-bound procedure call at %L is of ABSTRACT type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:7109
  #, gcc-internal-format, gfc-internal-format
  msgid "Base object for NOPASS type-bound procedure call at %L must be scalar"
  msgstr ""
  
  #. Nothing matching found!
! #: fortran/resolve.cc:7304
  #, gcc-internal-format
  msgid "Found no matching specific binding for the call to the GENERIC %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:7338
  #, gcc-internal-format
  msgid "%qs at %L should be a SUBROUTINE"
  msgstr ""
  
! #: fortran/resolve.cc:7391
  #, gcc-internal-format
  msgid "%qs at %L should be a FUNCTION"
  msgstr ""
  
! #: fortran/resolve.cc:7932
  #, gcc-internal-format
  msgid "gfc_resolve_expr(): Bad expression type"
  msgstr ""
  
! #: fortran/resolve.cc:7965
  #, gcc-internal-format, gfc-internal-format
  msgid "%s at %L must be a scalar"
  msgstr ""
  
! #: fortran/resolve.cc:7975
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "\"%s\" after # is not a positive integer"
  msgid "%s at %L must be integer"
  msgstr "\"%s\" efter # er ikke et positivt heltal"
  
! #: fortran/resolve.cc:7979 fortran/resolve.cc:7986
  #, gcc-internal-format, gfc-internal-format
  msgid "%s at %L must be INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:8041
  #, gcc-internal-format, gfc-internal-format
  msgid "Step expression in DO loop at %L cannot be zero"
  msgstr ""
  
! #: fortran/resolve.cc:8064
  #, gcc-internal-format, gfc-internal-format
  msgid "DO loop at %L will be executed zero times"
  msgstr ""
  
! #: fortran/resolve.cc:8081
  #, gcc-internal-format, gfc-internal-format
  msgid "DO loop at %L is undefined as it overflows"
  msgstr ""
  
! #: fortran/resolve.cc:8087
  #, gcc-internal-format, gfc-internal-format
  msgid "DO loop at %L is undefined as it underflows"
  msgstr ""
  
! #: fortran/resolve.cc:8147
  #, gcc-internal-format
  msgid "Variable %qs referenced in concurrent-header at %L must not appear in LOCAL locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8183
  #, gcc-internal-format
  msgid "Variable %qs at %L not specified in a locality spec of DO CONCURRENT at %L but required due to DEFAULT (NONE)"
  msgstr ""
  
! #: fortran/resolve.cc:8235
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Extraneous comma in FORMAT statement at %0"
  msgid "Expected variable name in %s locality spec at %L"
  msgstr "Ekstra komma i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/resolve.cc:8244
  #, fuzzy, gcc-internal-format
  #| msgid "Label %A already defined at %1 when redefined at %0"
  msgid "Variable %qs at %L has already been specified in a locality-spec"
  msgstr "Etiket %A er allerede defineret ved %1 ved omdefinering ved %0"
  
! #: fortran/resolve.cc:8254
  #, fuzzy, gcc-internal-format
  #| msgid "SAVE statement or attribute at %1 cannot be specified along with SAVE statement or attribute at %0"
  msgid "Index variable %qs at %L cannot be specified in a locality-spec"
  msgstr "SAVE-sÃ¦tning eller -egenskab ved %1 kan ikke angives sammen med SAVE-sÃ¦tning eller -egenskab ved %0"
  
! #: fortran/resolve.cc:8267
  #, gcc-internal-format
  msgid "OPTIONAL attribute not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8274
  #, fuzzy, gcc-internal-format
  msgid "Assumed-size array not permitted for %qs in %s locality-spec at %L"
  msgstr "Intern oversÃ¦tterfejl i %s ved %s:%d."
  
! #: fortran/resolve.cc:8287
  #, gcc-internal-format
  msgid "ALLOCATABLE attribute not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8292
  #, gcc-internal-format
  msgid "Nonpointer polymorphic dummy argument not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8297
  #, fuzzy, gcc-internal-format
  msgid "Coarray not permitted for %qs in %s locality-spec at %L"
  msgstr "%s understÃ¸ttes ikke af denne konfiguration"
  
! #: fortran/resolve.cc:8303
  #, gcc-internal-format
  msgid "Finalizable type not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8308
  #, gcc-internal-format
  msgid "Type with ultimate allocatable component not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8316
  #, gcc-internal-format
  msgid "ASYNCHRONOUS attribute not permitted for %qs in REDUCE locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8320
  #, gcc-internal-format
  msgid "VOLATILE attribute not permitted for %qs in REDUCE locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8374
  #, gcc-internal-format
  msgid "Expected numeric type for %qs in REDUCE at %L, got %s"
  msgstr ""
  
! #: fortran/resolve.cc:8383
  #, gcc-internal-format
  msgid "Expected logical type for %qs in REDUCE at %L, got %qs"
  msgstr ""
  
! #: fortran/resolve.cc:8401
  #, gcc-internal-format
  msgid "Expected INTEGER, REAL or CHARACTER type for %qs in REDUCE with MIN/MAX at %L, got %s"
  msgstr ""
  
! #: fortran/resolve.cc:8410
  #, gcc-internal-format
  msgid "Expected integer type for %qs in REDUCE with IAND/IOR/IEOR at %L, got %s"
  msgstr ""
  
! #: fortran/resolve.cc:8448
  #, fuzzy, gcc-internal-format
  #| msgid "label `%D' defined but not used"
  msgid "Variable %qs in locality-spec at %L is not used"
  msgstr "etiketten '%D' er defineret, men ikke benyttet"
  
! #: fortran/resolve.cc:8479
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL index-name at %L must be a scalar INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:8484
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL start expression at %L must be a scalar INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:8491
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL end expression at %L must be a scalar INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:8499
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL stride expression at %L must be a scalar %s"
  msgstr ""
  
! #: fortran/resolve.cc:8504
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL stride expression at %L cannot be zero"
  msgstr ""
  
! #: fortran/resolve.cc:8517
  #, gcc-internal-format
  msgid "FORALL index %qs may not appear in triplet specification at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8622 fortran/resolve.cc:8928
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
  msgstr ""
  
! #: fortran/resolve.cc:8630 fortran/resolve.cc:8891
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed allocatable object at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8748
  #, gcc-internal-format, gfc-internal-format
  msgid "Source-expr at %L must be scalar or have the same rank as the allocate-object at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8779
  #, gcc-internal-format, gfc-internal-format
  msgid "Source-expr at %L and allocate-object at %L must have the same shape"
  msgstr ""
  
! #: fortran/resolve.cc:8943
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Missing operand for operator at %1 at end of expression at %0"
  msgid "The intrinsic NULL cannot be used as source-expr at %L"
  msgstr "Manglende operand for operator ved %1 i slutningen af udtryk ved %0"
  
! #: fortran/resolve.cc:8951
  #, gcc-internal-format, gfc-internal-format
  msgid "Type of entity at %L is type incompatible with source-expr at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8963
  #, gcc-internal-format, gfc-internal-format
  msgid "The allocate-object at %L and the source-expr at %L shall have the same kind type parameter"
  msgstr ""
  
! #: fortran/resolve.cc:8977
  #, gcc-internal-format, gfc-internal-format
  msgid "The source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:9002
  #, gcc-internal-format, gfc-internal-format
  msgid "The source-expr at %L shall neither be of type EVENT_TYPE nor have a EVENT_TYPE component if allocate-object at %L is a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:9015
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr"
  msgstr ""
  
! #: fortran/resolve.cc:9029
  #, gcc-internal-format
  msgid "The type parameter in ALLOCATE statement with type-spec shall be an asterisk as allocate object %qs at %L is a dummy argument with assumed type parameter"
  msgstr ""
  
! #: fortran/resolve.cc:9049
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocating %s at %L with type-spec requires the same character-length parameter as in the declaration"
  msgstr ""
  
! #: fortran/resolve.cc:9133 fortran/resolve.cc:9148
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Array or substring specification for `%A' out of range in statement at %0"
  msgid "Array specification required in ALLOCATE statement at %L"
  msgstr "Tabel- eller understrengsangivelse for '%A' er uden for det gyldige interval i sÃ¦tning ved %0"
  
! #: fortran/resolve.cc:9140
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Array or substring specification for `%A' out of range in statement at %0"
  msgid "Array specification or array-valued SOURCE= expression required in ALLOCATE statement at %L"
  msgstr "Tabel- eller understrengsangivelse for '%A' er uden for det gyldige interval i sÃ¦tning ved %0"
  
! #: fortran/resolve.cc:9165
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Array or substring specification for `%A' out of range in statement at %0"
  msgid "Coarray specification required in ALLOCATE statement at %L"
  msgstr "Tabel- eller understrengsangivelse for '%A' er uden for det gyldige interval i sÃ¦tning ved %0"
  
! #: fortran/resolve.cc:9175 fortran/resolve.cc:9277
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "No label definition for FORMAT statement at %0"
  msgid "Bad coarray specification in ALLOCATE statement at %L"
  msgstr "Ingen etiketdefinition for FORMAT-sÃ¦tning ved %0"
  
! #: fortran/resolve.cc:9181
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper cobound is less than lower cobound at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9193
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper cobound is less than lower cobound of 1 at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9204 fortran/resolve.cc:9232
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "No label definition for FORMAT statement at %0"
  msgid "Bad array specification in ALLOCATE statement at %L"
  msgstr "Ingen etiketdefinition for FORMAT-sÃ¦tning ved %0"
  
! #: fortran/resolve.cc:9251
  #, gcc-internal-format
  msgid "%qs must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated"
  msgstr ""
  
! #: fortran/resolve.cc:9266
  #, fuzzy, gcc-internal-format
  #| msgid "No label definition for FORMAT statement at %0"
  msgid "Expected %<*%> in coindex specification in ALLOCATE statement at %L"
  msgstr "Ingen etiketdefinition for FORMAT-sÃ¦tning ved %0"
  
! #: fortran/resolve.cc:9308
  #, gcc-internal-format, gfc-internal-format
  msgid "Stat-variable at %L must be a scalar INTEGER variable"
  msgstr ""
  
! #: fortran/resolve.cc:9337
  #, gcc-internal-format, gfc-internal-format
  msgid "Stat-variable at %L shall not be %sd within the same %s statement"
  msgstr ""
  
! #: fortran/resolve.cc:9350
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG at %L is useless without a STAT tag"
  msgstr ""
  
! #: fortran/resolve.cc:9364
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG variable at %L shall be a scalar default CHARACTER variable"
  msgstr ""
  
! #: fortran/resolve.cc:9393
  #, gcc-internal-format, gfc-internal-format
  msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
  msgstr ""
  
! #: fortran/resolve.cc:9425
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L also appears at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9431 fortran/resolve.cc:9437
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L is subobject of object at %L"
  msgstr ""
--- 88904,89332 ----
  #. for all inquiry functions in resolve_function; the reason is
  #. that the function-name resolution happens too late in that
  #. function.
! #: fortran/resolve.cc:6120
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank variable %s at %L as actual argument to an inquiry function shall be the first argument"
  msgstr ""
  
! #: fortran/resolve.cc:6131
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute shall not have a subobject reference"
  msgstr ""
  
! #: fortran/resolve.cc:6140
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L shall not have a subobject reference"
  msgstr ""
  
! #: fortran/resolve.cc:6157
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank variable %s at %L shall not have a subobject reference"
  msgstr ""
  
! #: fortran/resolve.cc:6218
  #, fuzzy, gcc-internal-format
  #| msgid "Null element at %0 for array reference at %1"
  msgid "Scalar variable %qs has an array reference at %L"
  msgstr "Nulelement ved %0 for tabelreference ved %1"
  
! #: fortran/resolve.cc:6374
  #, gcc-internal-format
  msgid "Variable %qs, used in a specification expression, is referenced at %L before the ENTRY statement in which it is a parameter"
  msgstr ""
  
! #: fortran/resolve.cc:6379
  #, gcc-internal-format
  msgid "Variable %qs is used at %L before the ENTRY statement in which it is a parameter"
  msgstr ""
  
! #: fortran/resolve.cc:6453
  #, gcc-internal-format, gfc-internal-format
  msgid "Polymorphic subobject of coindexed object at %L"
  msgstr ""
  
! #: fortran/resolve.cc:6466
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed object with polymorphic allocatable subcomponent at %L"
  msgstr ""
  
! #: fortran/resolve.cc:6479
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' is deprecated"
  msgid "Using variable %qs at %L is deprecated"
  msgstr "'%s' er forÃ¦ldet"
  
! #: fortran/resolve.cc:6535 fortran/resolve.cc:6623 fortran/resolve.cc:6647
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Null element at %0 for array reference at %1"
  msgid "Invalid array reference at %L"
  msgstr "Nulelement ved %0 for tabelreference ved %1"
  
! #: fortran/resolve.cc:6732
  #, gcc-internal-format
  msgid "%qs at %L is host associated at %L into a contained procedure with an internal procedure of the same name"
  msgstr ""
  
! #: fortran/resolve.cc:6911 fortran/resolve.cc:7063
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "duplicate initialization of %D"
  msgid "Error in typebound call at %L"
  msgstr "%D tildelt startvÃ¦rdi mere end Ã©n gang"
  
! #: fortran/resolve.cc:7027
  #, gcc-internal-format, gfc-internal-format
  msgid "Passed-object at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:7034
  #, gcc-internal-format
  msgid "Base object for procedure-pointer component call at %L is of ABSTRACT type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:7073
  #, gcc-internal-format
  msgid "Base object for type-bound procedure call at %L is of ABSTRACT type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:7082
  #, gcc-internal-format, gfc-internal-format
  msgid "Base object for NOPASS type-bound procedure call at %L must be scalar"
  msgstr ""
  
  #. Nothing matching found!
! #: fortran/resolve.cc:7277
  #, gcc-internal-format
  msgid "Found no matching specific binding for the call to the GENERIC %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:7311
  #, gcc-internal-format
  msgid "%qs at %L should be a SUBROUTINE"
  msgstr ""
  
! #: fortran/resolve.cc:7364
  #, gcc-internal-format
  msgid "%qs at %L should be a FUNCTION"
  msgstr ""
  
! #: fortran/resolve.cc:7905
  #, gcc-internal-format
  msgid "gfc_resolve_expr(): Bad expression type"
  msgstr ""
  
! #: fortran/resolve.cc:7938
  #, gcc-internal-format, gfc-internal-format
  msgid "%s at %L must be a scalar"
  msgstr ""
  
! #: fortran/resolve.cc:7948
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "\"%s\" after # is not a positive integer"
  msgid "%s at %L must be integer"
  msgstr "\"%s\" efter # er ikke et positivt heltal"
  
! #: fortran/resolve.cc:7952 fortran/resolve.cc:7959
  #, gcc-internal-format, gfc-internal-format
  msgid "%s at %L must be INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:8014
  #, gcc-internal-format, gfc-internal-format
  msgid "Step expression in DO loop at %L cannot be zero"
  msgstr ""
  
! #: fortran/resolve.cc:8037
  #, gcc-internal-format, gfc-internal-format
  msgid "DO loop at %L will be executed zero times"
  msgstr ""
  
! #: fortran/resolve.cc:8054
  #, gcc-internal-format, gfc-internal-format
  msgid "DO loop at %L is undefined as it overflows"
  msgstr ""
  
! #: fortran/resolve.cc:8060
  #, gcc-internal-format, gfc-internal-format
  msgid "DO loop at %L is undefined as it underflows"
  msgstr ""
  
! #: fortran/resolve.cc:8120
  #, gcc-internal-format
  msgid "Variable %qs referenced in concurrent-header at %L must not appear in LOCAL locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8156
  #, gcc-internal-format
  msgid "Variable %qs at %L not specified in a locality spec of DO CONCURRENT at %L but required due to DEFAULT (NONE)"
  msgstr ""
  
! #: fortran/resolve.cc:8208
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Extraneous comma in FORMAT statement at %0"
  msgid "Expected variable name in %s locality spec at %L"
  msgstr "Ekstra komma i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/resolve.cc:8217
  #, fuzzy, gcc-internal-format
  #| msgid "Label %A already defined at %1 when redefined at %0"
  msgid "Variable %qs at %L has already been specified in a locality-spec"
  msgstr "Etiket %A er allerede defineret ved %1 ved omdefinering ved %0"
  
! #: fortran/resolve.cc:8227
  #, fuzzy, gcc-internal-format
  #| msgid "SAVE statement or attribute at %1 cannot be specified along with SAVE statement or attribute at %0"
  msgid "Index variable %qs at %L cannot be specified in a locality-spec"
  msgstr "SAVE-sÃ¦tning eller -egenskab ved %1 kan ikke angives sammen med SAVE-sÃ¦tning eller -egenskab ved %0"
  
! #: fortran/resolve.cc:8240
  #, gcc-internal-format
  msgid "OPTIONAL attribute not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8247
  #, fuzzy, gcc-internal-format
  msgid "Assumed-size array not permitted for %qs in %s locality-spec at %L"
  msgstr "Intern oversÃ¦tterfejl i %s ved %s:%d."
  
! #: fortran/resolve.cc:8260
  #, gcc-internal-format
  msgid "ALLOCATABLE attribute not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8265
  #, gcc-internal-format
  msgid "Nonpointer polymorphic dummy argument not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8270
  #, fuzzy, gcc-internal-format
  msgid "Coarray not permitted for %qs in %s locality-spec at %L"
  msgstr "%s understÃ¸ttes ikke af denne konfiguration"
  
! #: fortran/resolve.cc:8276
  #, gcc-internal-format
  msgid "Finalizable type not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8281
  #, gcc-internal-format
  msgid "Type with ultimate allocatable component not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8289
  #, gcc-internal-format
  msgid "ASYNCHRONOUS attribute not permitted for %qs in REDUCE locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8293
  #, gcc-internal-format
  msgid "VOLATILE attribute not permitted for %qs in REDUCE locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8347
  #, gcc-internal-format
  msgid "Expected numeric type for %qs in REDUCE at %L, got %s"
  msgstr ""
  
! #: fortran/resolve.cc:8356
  #, gcc-internal-format
  msgid "Expected logical type for %qs in REDUCE at %L, got %qs"
  msgstr ""
  
! #: fortran/resolve.cc:8374
  #, gcc-internal-format
  msgid "Expected INTEGER, REAL or CHARACTER type for %qs in REDUCE with MIN/MAX at %L, got %s"
  msgstr ""
  
! #: fortran/resolve.cc:8383
  #, gcc-internal-format
  msgid "Expected integer type for %qs in REDUCE with IAND/IOR/IEOR at %L, got %s"
  msgstr ""
  
! #: fortran/resolve.cc:8421
  #, fuzzy, gcc-internal-format
  #| msgid "label `%D' defined but not used"
  msgid "Variable %qs in locality-spec at %L is not used"
  msgstr "etiketten '%D' er defineret, men ikke benyttet"
  
! #: fortran/resolve.cc:8452
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL index-name at %L must be a scalar INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:8457
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL start expression at %L must be a scalar INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:8464
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL end expression at %L must be a scalar INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:8472
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL stride expression at %L must be a scalar %s"
  msgstr ""
  
! #: fortran/resolve.cc:8477
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL stride expression at %L cannot be zero"
  msgstr ""
  
! #: fortran/resolve.cc:8490
  #, gcc-internal-format
  msgid "FORALL index %qs may not appear in triplet specification at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8595 fortran/resolve.cc:8918
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
  msgstr ""
  
! #: fortran/resolve.cc:8603 fortran/resolve.cc:8881
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed allocatable object at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8727
! #, gcc-internal-format, gfc-internal-format
! msgid "Allocate-object at %L has rank %d but MOLD= expression at %L has rank %d"
! msgstr ""
! 
! #: fortran/resolve.cc:8738
  #, gcc-internal-format, gfc-internal-format
  msgid "Source-expr at %L must be scalar or have the same rank as the allocate-object at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8769
  #, gcc-internal-format, gfc-internal-format
  msgid "Source-expr at %L and allocate-object at %L must have the same shape"
  msgstr ""
  
! #: fortran/resolve.cc:8933
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Missing operand for operator at %1 at end of expression at %0"
  msgid "The intrinsic NULL cannot be used as source-expr at %L"
  msgstr "Manglende operand for operator ved %1 i slutningen af udtryk ved %0"
  
! #: fortran/resolve.cc:8941
  #, gcc-internal-format, gfc-internal-format
  msgid "Type of entity at %L is type incompatible with source-expr at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8953
  #, gcc-internal-format, gfc-internal-format
  msgid "The allocate-object at %L and the source-expr at %L shall have the same kind type parameter"
  msgstr ""
  
! #: fortran/resolve.cc:8967
  #, gcc-internal-format, gfc-internal-format
  msgid "The source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:8992
  #, gcc-internal-format, gfc-internal-format
  msgid "The source-expr at %L shall neither be of type EVENT_TYPE nor have a EVENT_TYPE component if allocate-object at %L is a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:9005
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr"
  msgstr ""
  
! #: fortran/resolve.cc:9019
  #, gcc-internal-format
  msgid "The type parameter in ALLOCATE statement with type-spec shall be an asterisk as allocate object %qs at %L is a dummy argument with assumed type parameter"
  msgstr ""
  
! #: fortran/resolve.cc:9039
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocating %s at %L with type-spec requires the same character-length parameter as in the declaration"
  msgstr ""
  
! #: fortran/resolve.cc:9123 fortran/resolve.cc:9138
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Array or substring specification for `%A' out of range in statement at %0"
  msgid "Array specification required in ALLOCATE statement at %L"
  msgstr "Tabel- eller understrengsangivelse for '%A' er uden for det gyldige interval i sÃ¦tning ved %0"
  
! #: fortran/resolve.cc:9130
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Array or substring specification for `%A' out of range in statement at %0"
  msgid "Array specification or array-valued SOURCE= expression required in ALLOCATE statement at %L"
  msgstr "Tabel- eller understrengsangivelse for '%A' er uden for det gyldige interval i sÃ¦tning ved %0"
  
! #: fortran/resolve.cc:9155
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Array or substring specification for `%A' out of range in statement at %0"
  msgid "Coarray specification required in ALLOCATE statement at %L"
  msgstr "Tabel- eller understrengsangivelse for '%A' er uden for det gyldige interval i sÃ¦tning ved %0"
  
! #: fortran/resolve.cc:9165 fortran/resolve.cc:9267
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "No label definition for FORMAT statement at %0"
  msgid "Bad coarray specification in ALLOCATE statement at %L"
  msgstr "Ingen etiketdefinition for FORMAT-sÃ¦tning ved %0"
  
! #: fortran/resolve.cc:9171
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper cobound is less than lower cobound at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9183
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper cobound is less than lower cobound of 1 at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9194 fortran/resolve.cc:9222
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "No label definition for FORMAT statement at %0"
  msgid "Bad array specification in ALLOCATE statement at %L"
  msgstr "Ingen etiketdefinition for FORMAT-sÃ¦tning ved %0"
  
! #: fortran/resolve.cc:9241
  #, gcc-internal-format
  msgid "%qs must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated"
  msgstr ""
  
! #: fortran/resolve.cc:9256
  #, fuzzy, gcc-internal-format
  #| msgid "No label definition for FORMAT statement at %0"
  msgid "Expected %<*%> in coindex specification in ALLOCATE statement at %L"
  msgstr "Ingen etiketdefinition for FORMAT-sÃ¦tning ved %0"
  
! #: fortran/resolve.cc:9298
  #, gcc-internal-format, gfc-internal-format
  msgid "Stat-variable at %L must be a scalar INTEGER variable"
  msgstr ""
  
! #: fortran/resolve.cc:9327
  #, gcc-internal-format, gfc-internal-format
  msgid "Stat-variable at %L shall not be %sd within the same %s statement"
  msgstr ""
  
! #: fortran/resolve.cc:9340
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG at %L is useless without a STAT tag"
  msgstr ""
  
! #: fortran/resolve.cc:9354
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG variable at %L shall be a scalar default CHARACTER variable"
  msgstr ""
  
! #: fortran/resolve.cc:9383
  #, gcc-internal-format, gfc-internal-format
  msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
  msgstr ""
  
! #: fortran/resolve.cc:9415
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L also appears at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9421 fortran/resolve.cc:9427
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L is subobject of object at %L"
  msgstr ""
*************** msgstr ""
*** 89239,89534 ****
  #. element in the list.  Either way, we must
  #. issue an error and get the next case from P.
  #. FIXME: Sort P and Q by line number.
! #: fortran/resolve.cc:9665
  #, gcc-internal-format, gfc-internal-format
  msgid "CASE label at %L overlaps with CASE label at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9716
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "expression statement has incomplete type"
  msgid "Expression in CASE statement at %L must be of type %s"
  msgstr "udtrykket er af en ufuldstÃ¦ndig type"
  
! #: fortran/resolve.cc:9727
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE statement at %L must be of kind %d"
  msgstr ""
  
! #: fortran/resolve.cc:9740
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE statement at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:9786
  #, gcc-internal-format, gfc-internal-format
  msgid "Selection expression in computed GOTO statement at %L must be a scalar integer expression"
  msgstr ""
  
! #: fortran/resolve.cc:9807
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of SELECT statement at %L cannot be %s"
  msgstr ""
  
! #: fortran/resolve.cc:9817
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of SELECT statement at %L must be a scalar expression"
  msgstr ""
  
! #: fortran/resolve.cc:9835 fortran/resolve.cc:9843
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE statement at %L is not in the range of %s"
  msgstr ""
  
! #: fortran/resolve.cc:9905 fortran/resolve.cc:10739
  #, gcc-internal-format, gfc-internal-format
  msgid "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9931
  #, gcc-internal-format, gfc-internal-format
  msgid "Logical range in CASE statement at %L is not allowed"
  msgstr ""
  
! #: fortran/resolve.cc:9944
  #, gcc-internal-format, gfc-internal-format
  msgid "Constant logical value in CASE statement is repeated at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9959
  #, gcc-internal-format, gfc-internal-format
  msgid "Range specification at %L can never be matched"
  msgstr ""
  
! #: fortran/resolve.cc:10062
  #, gcc-internal-format, gfc-internal-format
  msgid "Logical SELECT CASE block at %L has more that two cases"
  msgstr ""
  
! #: fortran/resolve.cc:10124
  #, gcc-internal-format, gfc-internal-format
  msgid "(F202y)Missing or invalid bound in ASSOCIATE rank remapping of associate name %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10140
  #, gcc-internal-format
  msgid "Associating entity %qs at %L is a procedure pointer"
  msgstr ""
  
! #: fortran/resolve.cc:10149
  #, fuzzy, gcc-internal-format
  #| msgid "\"%s\" cannot be used as a macro name as it is an operator in C++"
  msgid "Derived type %qs cannot be used as a variable at %L"
  msgstr "\"%s\" kan ikke bruges som et makronavn da det er en operator i C++"
  
! #: fortran/resolve.cc:10166
  #, gcc-internal-format
  msgid "Associating entity %qs at %L is a procedure name"
  msgstr ""
  
! #: fortran/resolve.cc:10182
  #, gcc-internal-format, gfc-internal-format
  msgid "Associating selector-expression at %L yields a procedure"
  msgstr ""
  
! #: fortran/resolve.cc:10236
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "expression statement has incomplete type"
  msgid "Selector at %L cannot be NULL()"
  msgstr "udtrykket er af en ufuldstÃ¦ndig type"
  
! #: fortran/resolve.cc:10241
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "parameter `%s' has incomplete type"
  msgid "Selector at %L has no type"
  msgstr "parameteren '%s' er af en ufuldstÃ¦ndig type"
  
! #: fortran/resolve.cc:10300
  #, gcc-internal-format
  msgid "Associate-name %qs at %L is used as array"
  msgstr ""
  
! #: fortran/resolve.cc:10311
  #, gcc-internal-format, gfc-internal-format
  msgid "CLASS selector at %L needs a temporary which is not yet implemented"
  msgstr ""
  
! #: fortran/resolve.cc:10598
  #, gcc-internal-format, gfc-internal-format
  msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10647 fortran/resolve.cc:10659
  #, gcc-internal-format, gfc-internal-format
  msgid "Selector at %L must not be coindexed"
  msgstr ""
  
! #: fortran/resolve.cc:10688
  #, gcc-internal-format, gfc-internal-format
  msgid "TYPE IS at %L overlaps with TYPE IS at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10701
  #, gcc-internal-format
  msgid "Derived type %qs at %L must be extensible"
  msgstr ""
  
! #: fortran/resolve.cc:10714
  #, gcc-internal-format
  msgid "Derived type %qs at %L must be an extension of %qs"
  msgstr ""
  
! #: fortran/resolve.cc:10717
  #, gcc-internal-format
  msgid "Unexpected intrinsic type %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10727
  #, gcc-internal-format, gfc-internal-format
  msgid "The type-spec at %L shall specify that each length type parameter is assumed"
  msgstr ""
  
! #: fortran/resolve.cc:10978
  #, gcc-internal-format, gfc-internal-format
  msgid "Double CLASS IS block in SELECT TYPE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11111
  #, gcc-internal-format, gfc-internal-format
  msgid "RANK DEFAULT at %L is repeated at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11120
  #, gcc-internal-format, gfc-internal-format
  msgid "RANK (*) at %L is repeated at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11123
  #, gcc-internal-format, gfc-internal-format
  msgid "RANK (%i) at %L is repeated at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11133
  #, gcc-internal-format, gfc-internal-format
  msgid "RANK (*) at %L cannot be used with the pointer or allocatable selector at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11242
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid context for NULL () intrinsic at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11296
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "`%D' must take exactly one argument"
  msgid "DTIO %s procedure at %L must be recursive"
  msgstr "'%s' skal tage mod Ã©n parameter"
  
! #: fortran/resolve.cc:11306
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedure"
  msgstr ""
  
! #: fortran/resolve.cc:11319
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedure"
  msgstr ""
  
! #: fortran/resolve.cc:11328
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot have procedure pointer components"
  msgstr ""
  
! #: fortran/resolve.cc:11335
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedure"
  msgstr ""
  
! #: fortran/resolve.cc:11346
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot have PRIVATE components"
  msgstr ""
  
! #: fortran/resolve.cc:11352
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot have PRIVATE components unless it is processed by a defined input/output procedure"
  msgstr ""
  
! #: fortran/resolve.cc:11370
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot be a full reference to an assumed-size array"
  msgstr ""
  
! #: fortran/resolve.cc:11421
  #, gcc-internal-format, gfc-internal-format
  msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
  msgstr ""
  
! #: fortran/resolve.cc:11431
  #, gcc-internal-format, gfc-internal-format
  msgid "Event variable at %L must be a scalar of type EVENT_TYPE"
  msgstr ""
  
! #: fortran/resolve.cc:11435
  #, gcc-internal-format, gfc-internal-format
  msgid "Event variable argument at %L must be a coarray or coindexed"
  msgstr ""
  
! #: fortran/resolve.cc:11438
  #, gcc-internal-format, gfc-internal-format
  msgid "Event variable argument at %L must be a coarray but not coindexed"
  msgstr ""
  
! #: fortran/resolve.cc:11445 fortran/resolve.cc:11567
  #, gcc-internal-format, gfc-internal-format
  msgid "STAT= argument at %L must be a scalar INTEGER variable"
  msgstr ""
  
! #: fortran/resolve.cc:11457 fortran/resolve.cc:11579
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
  msgstr ""
  
! #: fortran/resolve.cc:11469
  #, gcc-internal-format, gfc-internal-format
  msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
  msgstr ""
  
! #: fortran/resolve.cc:11482
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "use of class template `%T' as expression"
  msgid "UNTIL_COUNT= argument at %L must be a scalar INTEGER expression"
  msgstr "brug af klasseskabelonen '%T' som udtryk"
  
! #: fortran/resolve.cc:11543
  #, gcc-internal-format, gfc-internal-format
  msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
  msgstr ""
  
! #: fortran/resolve.cc:11547 fortran/resolve.cc:11557
  #, gcc-internal-format, gfc-internal-format
  msgid "Imageset argument at %L must between 1 and num_images()"
  msgstr ""
  
! #: fortran/resolve.cc:11610
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Statement at %0 invalid in context established by statement at %1"
  msgid "Statement at %L is not a valid branch target statement for the branch statement at %L"
  msgstr "SÃ¦tning ved %0 er ugyldig i den kontekst der er etableret af sÃ¦tning ved %1"
  
! #: fortran/resolve.cc:11620
  #, gcc-internal-format, gfc-internal-format
  msgid "Branch at %L may result in an infinite loop"
  msgstr ""
  
  #. Note: A label at END CRITICAL does not leave the CRITICAL
  #. construct as END CRITICAL is still part of it.
! #: fortran/resolve.cc:11637 fortran/resolve.cc:11660
  #, gcc-internal-format, gfc-internal-format
  msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11641 fortran/resolve.cc:11666
  #, gcc-internal-format, gfc-internal-format
  msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
  msgstr ""
--- 89335,89630 ----
  #. element in the list.  Either way, we must
  #. issue an error and get the next case from P.
  #. FIXME: Sort P and Q by line number.
! #: fortran/resolve.cc:9655
  #, gcc-internal-format, gfc-internal-format
  msgid "CASE label at %L overlaps with CASE label at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9706
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "expression statement has incomplete type"
  msgid "Expression in CASE statement at %L must be of type %s"
  msgstr "udtrykket er af en ufuldstÃ¦ndig type"
  
! #: fortran/resolve.cc:9717
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE statement at %L must be of kind %d"
  msgstr ""
  
! #: fortran/resolve.cc:9730
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE statement at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:9776
  #, gcc-internal-format, gfc-internal-format
  msgid "Selection expression in computed GOTO statement at %L must be a scalar integer expression"
  msgstr ""
  
! #: fortran/resolve.cc:9797
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of SELECT statement at %L cannot be %s"
  msgstr ""
  
! #: fortran/resolve.cc:9807
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of SELECT statement at %L must be a scalar expression"
  msgstr ""
  
! #: fortran/resolve.cc:9825 fortran/resolve.cc:9833
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE statement at %L is not in the range of %s"
  msgstr ""
  
! #: fortran/resolve.cc:9895 fortran/resolve.cc:10729
  #, gcc-internal-format, gfc-internal-format
  msgid "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9921
  #, gcc-internal-format, gfc-internal-format
  msgid "Logical range in CASE statement at %L is not allowed"
  msgstr ""
  
! #: fortran/resolve.cc:9934
  #, gcc-internal-format, gfc-internal-format
  msgid "Constant logical value in CASE statement is repeated at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9949
  #, gcc-internal-format, gfc-internal-format
  msgid "Range specification at %L can never be matched"
  msgstr ""
  
! #: fortran/resolve.cc:10052
  #, gcc-internal-format, gfc-internal-format
  msgid "Logical SELECT CASE block at %L has more that two cases"
  msgstr ""
  
! #: fortran/resolve.cc:10114
  #, gcc-internal-format, gfc-internal-format
  msgid "(F202y)Missing or invalid bound in ASSOCIATE rank remapping of associate name %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10130
  #, gcc-internal-format
  msgid "Associating entity %qs at %L is a procedure pointer"
  msgstr ""
  
! #: fortran/resolve.cc:10139
  #, fuzzy, gcc-internal-format
  #| msgid "\"%s\" cannot be used as a macro name as it is an operator in C++"
  msgid "Derived type %qs cannot be used as a variable at %L"
  msgstr "\"%s\" kan ikke bruges som et makronavn da det er en operator i C++"
  
! #: fortran/resolve.cc:10156
  #, gcc-internal-format
  msgid "Associating entity %qs at %L is a procedure name"
  msgstr ""
  
! #: fortran/resolve.cc:10172
  #, gcc-internal-format, gfc-internal-format
  msgid "Associating selector-expression at %L yields a procedure"
  msgstr ""
  
! #: fortran/resolve.cc:10226
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "expression statement has incomplete type"
  msgid "Selector at %L cannot be NULL()"
  msgstr "udtrykket er af en ufuldstÃ¦ndig type"
  
! #: fortran/resolve.cc:10231
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "parameter `%s' has incomplete type"
  msgid "Selector at %L has no type"
  msgstr "parameteren '%s' er af en ufuldstÃ¦ndig type"
  
! #: fortran/resolve.cc:10290
  #, gcc-internal-format
  msgid "Associate-name %qs at %L is used as array"
  msgstr ""
  
! #: fortran/resolve.cc:10301
  #, gcc-internal-format, gfc-internal-format
  msgid "CLASS selector at %L needs a temporary which is not yet implemented"
  msgstr ""
  
! #: fortran/resolve.cc:10588
  #, gcc-internal-format, gfc-internal-format
  msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10637 fortran/resolve.cc:10649
  #, gcc-internal-format, gfc-internal-format
  msgid "Selector at %L must not be coindexed"
  msgstr ""
  
! #: fortran/resolve.cc:10678
  #, gcc-internal-format, gfc-internal-format
  msgid "TYPE IS at %L overlaps with TYPE IS at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10691
  #, gcc-internal-format
  msgid "Derived type %qs at %L must be extensible"
  msgstr ""
  
! #: fortran/resolve.cc:10704
  #, gcc-internal-format
  msgid "Derived type %qs at %L must be an extension of %qs"
  msgstr ""
  
! #: fortran/resolve.cc:10707
  #, gcc-internal-format
  msgid "Unexpected intrinsic type %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10717
  #, gcc-internal-format, gfc-internal-format
  msgid "The type-spec at %L shall specify that each length type parameter is assumed"
  msgstr ""
  
! #: fortran/resolve.cc:10968
  #, gcc-internal-format, gfc-internal-format
  msgid "Double CLASS IS block in SELECT TYPE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11101
  #, gcc-internal-format, gfc-internal-format
  msgid "RANK DEFAULT at %L is repeated at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11110
  #, gcc-internal-format, gfc-internal-format
  msgid "RANK (*) at %L is repeated at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11113
  #, gcc-internal-format, gfc-internal-format
  msgid "RANK (%i) at %L is repeated at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11123
  #, gcc-internal-format, gfc-internal-format
  msgid "RANK (*) at %L cannot be used with the pointer or allocatable selector at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11232
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid context for NULL () intrinsic at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11286
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "`%D' must take exactly one argument"
  msgid "DTIO %s procedure at %L must be recursive"
  msgstr "'%s' skal tage mod Ã©n parameter"
  
! #: fortran/resolve.cc:11296
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedure"
  msgstr ""
  
! #: fortran/resolve.cc:11309
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedure"
  msgstr ""
  
! #: fortran/resolve.cc:11318
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot have procedure pointer components"
  msgstr ""
  
! #: fortran/resolve.cc:11325
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedure"
  msgstr ""
  
! #: fortran/resolve.cc:11336
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot have PRIVATE components"
  msgstr ""
  
! #: fortran/resolve.cc:11342
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot have PRIVATE components unless it is processed by a defined input/output procedure"
  msgstr ""
  
! #: fortran/resolve.cc:11360
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot be a full reference to an assumed-size array"
  msgstr ""
  
! #: fortran/resolve.cc:11411
  #, gcc-internal-format, gfc-internal-format
  msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
  msgstr ""
  
! #: fortran/resolve.cc:11421
  #, gcc-internal-format, gfc-internal-format
  msgid "Event variable at %L must be a scalar of type EVENT_TYPE"
  msgstr ""
  
! #: fortran/resolve.cc:11425
  #, gcc-internal-format, gfc-internal-format
  msgid "Event variable argument at %L must be a coarray or coindexed"
  msgstr ""
  
! #: fortran/resolve.cc:11428
  #, gcc-internal-format, gfc-internal-format
  msgid "Event variable argument at %L must be a coarray but not coindexed"
  msgstr ""
  
! #: fortran/resolve.cc:11435 fortran/resolve.cc:11557
  #, gcc-internal-format, gfc-internal-format
  msgid "STAT= argument at %L must be a scalar INTEGER variable"
  msgstr ""
  
! #: fortran/resolve.cc:11447 fortran/resolve.cc:11569
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
  msgstr ""
  
! #: fortran/resolve.cc:11459
  #, gcc-internal-format, gfc-internal-format
  msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
  msgstr ""
  
! #: fortran/resolve.cc:11472
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "use of class template `%T' as expression"
  msgid "UNTIL_COUNT= argument at %L must be a scalar INTEGER expression"
  msgstr "brug af klasseskabelonen '%T' som udtryk"
  
! #: fortran/resolve.cc:11533
  #, gcc-internal-format, gfc-internal-format
  msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
  msgstr ""
  
! #: fortran/resolve.cc:11537 fortran/resolve.cc:11547
  #, gcc-internal-format, gfc-internal-format
  msgid "Imageset argument at %L must between 1 and num_images()"
  msgstr ""
  
! #: fortran/resolve.cc:11600
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Statement at %0 invalid in context established by statement at %1"
  msgid "Statement at %L is not a valid branch target statement for the branch statement at %L"
  msgstr "SÃ¦tning ved %0 er ugyldig i den kontekst der er etableret af sÃ¦tning ved %1"
  
! #: fortran/resolve.cc:11610
  #, gcc-internal-format, gfc-internal-format
  msgid "Branch at %L may result in an infinite loop"
  msgstr ""
  
  #. Note: A label at END CRITICAL does not leave the CRITICAL
  #. construct as END CRITICAL is still part of it.
! #: fortran/resolve.cc:11627 fortran/resolve.cc:11650
  #, gcc-internal-format, gfc-internal-format
  msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11631 fortran/resolve.cc:11656
  #, gcc-internal-format, gfc-internal-format
  msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
  msgstr ""
*************** msgstr ""
*** 89536,89761 ****
  #. The label is not in an enclosing block, so illegal.  This was
  #. allowed in Fortran 66, so we allow it as extension.  No
  #. further checks are necessary in this case.
! #: fortran/resolve.cc:11681
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Statement at %0 invalid in context established by statement at %1"
  msgid "Label at %L is not in the same block as the GOTO statement at %L"
  msgstr "SÃ¦tning ved %0 er ugyldig i den kontekst der er etableret af sÃ¦tning ved %1"
  
! #: fortran/resolve.cc:11753
  #, gcc-internal-format, gfc-internal-format
  msgid "WHERE mask at %L has inconsistent shape"
  msgstr ""
  
! #: fortran/resolve.cc:11769
  #, gcc-internal-format, gfc-internal-format
  msgid "WHERE assignment target at %L has inconsistent shape"
  msgstr ""
  
! #: fortran/resolve.cc:11782 fortran/resolve.cc:11874
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11792 fortran/resolve.cc:11884
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "Unsupported statement inside WHERE at %L"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/resolve.cc:11823
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to a FORALL index variable at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11832
  #, gcc-internal-format
  msgid "The FORALL with index %qs is not used on the left side of the assignment at %L and so might cause multiple assignment to this object"
  msgstr ""
  
! #: fortran/resolve.cc:11989
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "In construct"
  msgid "FORALL construct at %L"
  msgstr "I konstruktionen"
  
! #: fortran/resolve.cc:12010
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL index-name at %L must be a scalar variable of type integer"
  msgstr ""
  
! #: fortran/resolve.cc:12020
  #, gcc-internal-format, gfc-internal-format
  msgid "An outer FORALL construct already has an index with this name %L"
  msgstr ""
  
! #: fortran/resolve.cc:12098
  #, gcc-internal-format, gfc-internal-format
  msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
  msgstr ""
  
! #: fortran/resolve.cc:12219
  #, gcc-internal-format
  msgid "gfc_resolve_blocks(): Bad block type"
  msgstr ""
  
! #: fortran/resolve.cc:12299
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable in the ordinary assignment at %L is a procedure pointer component"
  msgstr ""
  
! #: fortran/resolve.cc:12319
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Cannot assign %s to %s at %L"
  msgstr "kunne ikke konvertere '%E' til '%T'"
  
! #: fortran/resolve.cc:12367
  #, gcc-internal-format
  msgid "CHARACTER expression will be truncated in assignment (%wd/%wd) at %L"
  msgstr ""
  
! #: fortran/resolve.cc:12399
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedure"
  msgstr ""
  
  #. F2008, C1283 (4).
! #: fortran/resolve.cc:12405
  #, gcc-internal-format, gfc-internal-format
  msgid "In a pure subprogram an INTENT(IN) dummy argument shall not be used as the expr at %L of an intrinsic assignment statement in which the variable is of a derived type if the derived type has a pointer component at any level of component selection."
  msgstr ""
  
! #: fortran/resolve.cc:12417
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to coindexed variable at %L in a PURE procedure"
  msgstr ""
  
! #: fortran/resolve.cc:12449
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to polymorphic coarray at %L is not permitted"
  msgstr ""
  
! #: fortran/resolve.cc:12453
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to an allocatable polymorphic variable at %L"
  msgstr ""
  
! #: fortran/resolve.cc:12458
  #, gcc-internal-format
  msgid "Assignment to an allocatable polymorphic variable at %L requires %<-frealloc-lhs%>"
  msgstr ""
  
! #: fortran/resolve.cc:12465
  #, gcc-internal-format
  msgid "Nonallocatable variable must not be polymorphic in intrinsic assignment at %L - check that there is a matching specific subroutine for %<=%> operator"
  msgstr ""
  
! #: fortran/resolve.cc:12476
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed variable must not have an allocatable ultimate component in assignment at %L"
  msgstr ""
  
! #: fortran/resolve.cc:12865
  #, gcc-internal-format, gfc-internal-format
  msgid "TODO: type-bound defined assignment(s) at %L not done because multiple part array references would occur in intermediate expressions."
  msgstr ""
  
  #. Even if standard does not support this feature, continue to build
  #. the two statements to avoid upsetting frontend_passes.c.
! #: fortran/resolve.cc:13179
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid lvalue in assignment"
  msgid "Pointer procedure assignment at %L"
  msgstr "ugyldig venstrevÃ¦rdi i tildeling"
  
! #: fortran/resolve.cc:13191
  #, gcc-internal-format, gfc-internal-format
  msgid "The function result on the lhs of the assignment at %L must have the pointer attribute."
  msgstr ""
  
! #: fortran/resolve.cc:13287
  #, fuzzy, gcc-internal-format
  #| msgid "use of class template `%T' as expression"
  msgid "TEAM argument to %qs at %L must be a scalar expression of type TEAM_TYPE"
  msgstr "brug af klasseskabelonen '%T' som udtryk"
  
! #: fortran/resolve.cc:13486
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "use of class template `%T' as expression"
  msgid "TEAM NUMBER argument to FORM TEAM at %L must be a scalar INTEGER"
  msgstr "brug af klasseskabelonen '%T' som udtryk"
  
! #: fortran/resolve.cc:13522
  #, gcc-internal-format, gfc-internal-format
  msgid "ASSIGNED GOTO statement at %L requires a scalar INTEGER variable"
  msgstr ""
  
! #: fortran/resolve.cc:13526
  #, gcc-internal-format
  msgid "Variable %qs has not been assigned a target label at %L"
  msgstr ""
  
! #: fortran/resolve.cc:13537
  #, gcc-internal-format, gfc-internal-format
  msgid "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
  msgstr ""
  
! #: fortran/resolve.cc:13593
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "initialization of new expression with `='"
  msgid "Expected intrinsic assignment in OMP WORKSHARE at %L"
  msgstr "tildeling af startvÃ¦rdi til new-udtryk med '='"
  
! #: fortran/resolve.cc:13635
  #, gcc-internal-format, gfc-internal-format
  msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
  msgstr ""
  
! #: fortran/resolve.cc:13682
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid string constant `%E'"
  msgid "Invalid NULL at %L"
  msgstr "ugyldig strengkonstant '%E'"
  
! #: fortran/resolve.cc:13686
  #, gcc-internal-format, gfc-internal-format
  msgid "Arithmetic IF statement at %L requires a scalar REAL or INTEGER expression"
  msgstr ""
  
! #: fortran/resolve.cc:13747
  #, gcc-internal-format
  msgid "gfc_resolve_code(): No expression on DO WHILE"
  msgstr ""
  
! #: fortran/resolve.cc:13752
  #, gcc-internal-format, gfc-internal-format
  msgid "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
  msgstr ""
  
! #: fortran/resolve.cc:13836
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
  msgstr ""
  
! #: fortran/resolve.cc:13948
  #, gcc-internal-format
  msgid "gfc_resolve_code(): Bad statement code"
  msgstr ""
  
! #: fortran/resolve.cc:13969
  #, fuzzy, gcc-internal-format
  #| msgid "parameter `%s' declared void"
  msgid "Using parameter %qs declared at %L is deprecated"
  msgstr "parameteren '%s' erklÃ¦ret void"
  
! #: fortran/resolve.cc:14065
  #, gcc-internal-format
  msgid "Variable %qs with binding label %qs at %L uses the same global identifier as entity at %L"
  msgstr ""
  
  #. This can only happen if the variable is defined in a module - if it
  #. isn't the same module, reject it.
! #: fortran/resolve.cc:14079
  #, gcc-internal-format
  msgid "Variable %qs from module %qs with binding label %qs at %L uses the same global identifier as entity at %L from module %qs"
  msgstr ""
--- 89632,89857 ----
  #. The label is not in an enclosing block, so illegal.  This was
  #. allowed in Fortran 66, so we allow it as extension.  No
  #. further checks are necessary in this case.
! #: fortran/resolve.cc:11671
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Statement at %0 invalid in context established by statement at %1"
  msgid "Label at %L is not in the same block as the GOTO statement at %L"
  msgstr "SÃ¦tning ved %0 er ugyldig i den kontekst der er etableret af sÃ¦tning ved %1"
  
! #: fortran/resolve.cc:11743
  #, gcc-internal-format, gfc-internal-format
  msgid "WHERE mask at %L has inconsistent shape"
  msgstr ""
  
! #: fortran/resolve.cc:11759
  #, gcc-internal-format, gfc-internal-format
  msgid "WHERE assignment target at %L has inconsistent shape"
  msgstr ""
  
! #: fortran/resolve.cc:11772 fortran/resolve.cc:11864
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11782 fortran/resolve.cc:11874
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Unsupported VXT statement at %0"
  msgid "Unsupported statement inside WHERE at %L"
  msgstr "Ikke-understÃ¸ttet VXT-sÃ¦tning ved %0"
  
! #: fortran/resolve.cc:11813
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to a FORALL index variable at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11822
  #, gcc-internal-format
  msgid "The FORALL with index %qs is not used on the left side of the assignment at %L and so might cause multiple assignment to this object"
  msgstr ""
  
! #: fortran/resolve.cc:11979
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "In construct"
  msgid "FORALL construct at %L"
  msgstr "I konstruktionen"
  
! #: fortran/resolve.cc:12000
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL index-name at %L must be a scalar variable of type integer"
  msgstr ""
  
! #: fortran/resolve.cc:12010
  #, gcc-internal-format, gfc-internal-format
  msgid "An outer FORALL construct already has an index with this name %L"
  msgstr ""
  
! #: fortran/resolve.cc:12088
  #, gcc-internal-format, gfc-internal-format
  msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
  msgstr ""
  
! #: fortran/resolve.cc:12209
  #, gcc-internal-format
  msgid "gfc_resolve_blocks(): Bad block type"
  msgstr ""
  
! #: fortran/resolve.cc:12289
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable in the ordinary assignment at %L is a procedure pointer component"
  msgstr ""
  
! #: fortran/resolve.cc:12309
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "Cannot assign %s to %s at %L"
  msgstr "kunne ikke konvertere '%E' til '%T'"
  
! #: fortran/resolve.cc:12357
  #, gcc-internal-format
  msgid "CHARACTER expression will be truncated in assignment (%wd/%wd) at %L"
  msgstr ""
  
! #: fortran/resolve.cc:12389
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedure"
  msgstr ""
  
  #. F2008, C1283 (4).
! #: fortran/resolve.cc:12395
  #, gcc-internal-format, gfc-internal-format
  msgid "In a pure subprogram an INTENT(IN) dummy argument shall not be used as the expr at %L of an intrinsic assignment statement in which the variable is of a derived type if the derived type has a pointer component at any level of component selection."
  msgstr ""
  
! #: fortran/resolve.cc:12407
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to coindexed variable at %L in a PURE procedure"
  msgstr ""
  
! #: fortran/resolve.cc:12439
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to polymorphic coarray at %L is not permitted"
  msgstr ""
  
! #: fortran/resolve.cc:12443
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to an allocatable polymorphic variable at %L"
  msgstr ""
  
! #: fortran/resolve.cc:12448
  #, gcc-internal-format
  msgid "Assignment to an allocatable polymorphic variable at %L requires %<-frealloc-lhs%>"
  msgstr ""
  
! #: fortran/resolve.cc:12455
  #, gcc-internal-format
  msgid "Nonallocatable variable must not be polymorphic in intrinsic assignment at %L - check that there is a matching specific subroutine for %<=%> operator"
  msgstr ""
  
! #: fortran/resolve.cc:12466
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed variable must not have an allocatable ultimate component in assignment at %L"
  msgstr ""
  
! #: fortran/resolve.cc:12855
  #, gcc-internal-format, gfc-internal-format
  msgid "TODO: type-bound defined assignment(s) at %L not done because multiple part array references would occur in intermediate expressions."
  msgstr ""
  
  #. Even if standard does not support this feature, continue to build
  #. the two statements to avoid upsetting frontend_passes.c.
! #: fortran/resolve.cc:13169
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid lvalue in assignment"
  msgid "Pointer procedure assignment at %L"
  msgstr "ugyldig venstrevÃ¦rdi i tildeling"
  
! #: fortran/resolve.cc:13181
  #, gcc-internal-format, gfc-internal-format
  msgid "The function result on the lhs of the assignment at %L must have the pointer attribute."
  msgstr ""
  
! #: fortran/resolve.cc:13277
  #, fuzzy, gcc-internal-format
  #| msgid "use of class template `%T' as expression"
  msgid "TEAM argument to %qs at %L must be a scalar expression of type TEAM_TYPE"
  msgstr "brug af klasseskabelonen '%T' som udtryk"
  
! #: fortran/resolve.cc:13476
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "use of class template `%T' as expression"
  msgid "TEAM NUMBER argument to FORM TEAM at %L must be a scalar INTEGER"
  msgstr "brug af klasseskabelonen '%T' som udtryk"
  
! #: fortran/resolve.cc:13512
  #, gcc-internal-format, gfc-internal-format
  msgid "ASSIGNED GOTO statement at %L requires a scalar INTEGER variable"
  msgstr ""
  
! #: fortran/resolve.cc:13516
  #, gcc-internal-format
  msgid "Variable %qs has not been assigned a target label at %L"
  msgstr ""
  
! #: fortran/resolve.cc:13527
  #, gcc-internal-format, gfc-internal-format
  msgid "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
  msgstr ""
  
! #: fortran/resolve.cc:13583
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "initialization of new expression with `='"
  msgid "Expected intrinsic assignment in OMP WORKSHARE at %L"
  msgstr "tildeling af startvÃ¦rdi til new-udtryk med '='"
  
! #: fortran/resolve.cc:13625
  #, gcc-internal-format, gfc-internal-format
  msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
  msgstr ""
  
! #: fortran/resolve.cc:13672
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "invalid string constant `%E'"
  msgid "Invalid NULL at %L"
  msgstr "ugyldig strengkonstant '%E'"
  
! #: fortran/resolve.cc:13676
  #, gcc-internal-format, gfc-internal-format
  msgid "Arithmetic IF statement at %L requires a scalar REAL or INTEGER expression"
  msgstr ""
  
! #: fortran/resolve.cc:13737
  #, gcc-internal-format
  msgid "gfc_resolve_code(): No expression on DO WHILE"
  msgstr ""
  
! #: fortran/resolve.cc:13742
  #, gcc-internal-format, gfc-internal-format
  msgid "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
  msgstr ""
  
! #: fortran/resolve.cc:13826
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
  msgstr ""
  
! #: fortran/resolve.cc:13938
  #, gcc-internal-format
  msgid "gfc_resolve_code(): Bad statement code"
  msgstr ""
  
! #: fortran/resolve.cc:13959
  #, fuzzy, gcc-internal-format
  #| msgid "parameter `%s' declared void"
  msgid "Using parameter %qs declared at %L is deprecated"
  msgstr "parameteren '%s' erklÃ¦ret void"
  
! #: fortran/resolve.cc:14055
  #, gcc-internal-format
  msgid "Variable %qs with binding label %qs at %L uses the same global identifier as entity at %L"
  msgstr ""
  
  #. This can only happen if the variable is defined in a module - if it
  #. isn't the same module, reject it.
! #: fortran/resolve.cc:14069
  #, gcc-internal-format
  msgid "Variable %qs from module %qs with binding label %qs at %L uses the same global identifier as entity at %L from module %qs"
  msgstr ""
*************** msgstr ""
*** 89763,89825 ****
  #. Print an error if the procedure is defined multiple times; we have to
  #. exclude references to the same procedure via module association or
  #. multiple checks for the same procedure.
! #: fortran/resolve.cc:14098
  #, gcc-internal-format
  msgid "Procedure %qs with binding label %qs at %L uses the same global identifier as entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14184
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Integer at %0 too large"
  msgid "String length at %L is too large"
  msgstr "Heltal ved %0 for stort"
  
! #: fortran/resolve.cc:14422
  #, gcc-internal-format
  msgid "Allocatable array %qs at %L must have a deferred shape or assumed rank"
  msgstr ""
  
! #: fortran/resolve.cc:14426
  #, gcc-internal-format
  msgid "Scalar object %qs at %L may not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:14434
  #, gcc-internal-format
  msgid "Array pointer %qs at %L must have a deferred shape or assumed rank"
  msgstr ""
  
! #: fortran/resolve.cc:14445
  #, gcc-internal-format
  msgid "Array %qs at %L cannot have a deferred shape"
  msgstr ""
  
! #: fortran/resolve.cc:14463
  #, gcc-internal-format
  msgid "Type %qs of CLASS variable %qs at %L is not extensible"
  msgstr ""
  
! #: fortran/resolve.cc:14477
  #, gcc-internal-format
  msgid "CLASS variable %qs at %L must be dummy, allocatable or pointer"
  msgstr ""
  
! #: fortran/resolve.cc:14510
  #, gcc-internal-format
  msgid "The type %qs cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14532
  #, gcc-internal-format
  msgid "Implied SAVE for module variable %qs at %L, needed due to the default initialization"
  msgstr ""
  
! #: fortran/resolve.cc:14565
  #, gcc-internal-format
  msgid "Entity %qs at %L has a deferred type parameter and requires either the POINTER or ALLOCATABLE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:14579
  #, fuzzy, gcc-internal-format
  #| msgid "CLASS variable %qs at %L cannot have the PARAMETER attribute"
  msgid "Automatic object %qs at %L cannot have the SAVE attribute"
--- 89859,89921 ----
  #. Print an error if the procedure is defined multiple times; we have to
  #. exclude references to the same procedure via module association or
  #. multiple checks for the same procedure.
! #: fortran/resolve.cc:14088
  #, gcc-internal-format
  msgid "Procedure %qs with binding label %qs at %L uses the same global identifier as entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14174
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Integer at %0 too large"
  msgid "String length at %L is too large"
  msgstr "Heltal ved %0 for stort"
  
! #: fortran/resolve.cc:14412
  #, gcc-internal-format
  msgid "Allocatable array %qs at %L must have a deferred shape or assumed rank"
  msgstr ""
  
! #: fortran/resolve.cc:14416
  #, gcc-internal-format
  msgid "Scalar object %qs at %L may not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:14424
  #, gcc-internal-format
  msgid "Array pointer %qs at %L must have a deferred shape or assumed rank"
  msgstr ""
  
! #: fortran/resolve.cc:14435
  #, gcc-internal-format
  msgid "Array %qs at %L cannot have a deferred shape"
  msgstr ""
  
! #: fortran/resolve.cc:14453
  #, gcc-internal-format
  msgid "Type %qs of CLASS variable %qs at %L is not extensible"
  msgstr ""
  
! #: fortran/resolve.cc:14467
  #, gcc-internal-format
  msgid "CLASS variable %qs at %L must be dummy, allocatable or pointer"
  msgstr ""
  
! #: fortran/resolve.cc:14500
  #, gcc-internal-format
  msgid "The type %qs cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14522
  #, gcc-internal-format
  msgid "Implied SAVE for module variable %qs at %L, needed due to the default initialization"
  msgstr ""
  
! #: fortran/resolve.cc:14555
  #, gcc-internal-format
  msgid "Entity %qs at %L has a deferred type parameter and requires either the POINTER or ALLOCATABLE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:14569
  #, fuzzy, gcc-internal-format
  #| msgid "CLASS variable %qs at %L cannot have the PARAMETER attribute"
  msgid "Automatic object %qs at %L cannot have the SAVE attribute"
*************** msgstr "CLASS-variablen %qs ved %L kan i
*** 89827,90669 ****
  
  #. F08:C541. The shape of an array defined in a main program or module
  #. * needs to be constant.
! #: fortran/resolve.cc:14601
  #, gcc-internal-format
  msgid "The module or main program array %qs at %L must have constant shape"
  msgstr ""
  
! #: fortran/resolve.cc:14626
  #, gcc-internal-format, gfc-internal-format
  msgid "Entity with assumed character length at %L must be a dummy argument or a PARAMETER"
  msgstr ""
  
! #: fortran/resolve.cc:14647
  #, gcc-internal-format
  msgid "%qs at %L must have constant character length in this context"
  msgstr ""
  
! #: fortran/resolve.cc:14654
  #, gcc-internal-format
  msgid "COMMON variable %qs at %L must have constant character length"
  msgstr ""
  
! #: fortran/resolve.cc:14702
  #, fuzzy, gcc-internal-format
  msgid "Allocatable %qs at %L cannot have an initializer"
  msgstr "slutfeltet '%s' bliver mÃ¥ske ikke klargjort"
  
! #: fortran/resolve.cc:14705
  #, fuzzy, gcc-internal-format
  msgid "External %qs at %L cannot have an initializer"
  msgstr "slutfeltet '%s' bliver mÃ¥ske ikke klargjort"
  
! #: fortran/resolve.cc:14708
  #, fuzzy, gcc-internal-format
  msgid "Dummy %qs at %L cannot have an initializer"
  msgstr "slutfeltet '%s' bliver mÃ¥ske ikke klargjort"
  
! #: fortran/resolve.cc:14711
  #, fuzzy, gcc-internal-format
  msgid "Intrinsic %qs at %L cannot have an initializer"
  msgstr "slutfeltet '%s' bliver mÃ¥ske ikke klargjort"
  
! #: fortran/resolve.cc:14714
  #, fuzzy, gcc-internal-format
  msgid "Function result %qs at %L cannot have an initializer"
  msgstr "slutfeltet '%s' bliver mÃ¥ske ikke klargjort"
  
! #: fortran/resolve.cc:14717
  #, gcc-internal-format
  msgid "Automatic array %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14759
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "fstat %s"
  msgid "%s at %L"
  msgstr "fejl ved egenskabsundersÃ¸gelse af filen %s"
  
! #: fortran/resolve.cc:14791
  #, gcc-internal-format
  msgid "Character-valued statement function %qs at %L must have constant length"
  msgstr ""
  
! #: fortran/resolve.cc:14814
  #, gcc-internal-format
  msgid "%qs is of a PRIVATE type and cannot be a dummy argument of %qs, which is PUBLIC at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14836
  #, gcc-internal-format
  msgid "Procedure %qs in PUBLIC interface %qs at %L takes dummy arguments of %qs which is PRIVATE"
  msgstr ""
  
! #: fortran/resolve.cc:14854
  #, fuzzy, gcc-internal-format
  #| msgid "function cannot be inline"
  msgid "Function %qs at %L cannot have an initializer"
  msgstr "funktion kan ikke indbygges"
  
! #: fortran/resolve.cc:14866
  #, fuzzy, gcc-internal-format
  #| msgid "variable-sized object of type `%T' may not be initialized"
  msgid "External object %qs at %L may not have an initializer"
  msgstr "objekt af typen '%T' med variabel stÃ¸rrelse mÃ¥ ikke tildeles en startvÃ¦rdi"
  
! #: fortran/resolve.cc:14876
  #, gcc-internal-format
  msgid "ELEMENTAL function %qs at %L must have a scalar result"
  msgstr ""
  
! #: fortran/resolve.cc:14886
  #, gcc-internal-format
  msgid "Statement function %qs at %L may not have pointer or allocatable attribute"
  msgstr ""
  
! #: fortran/resolve.cc:14905
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L cannot be array-valued"
  msgstr ""
  
! #: fortran/resolve.cc:14909
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L cannot be pointer-valued"
  msgstr ""
  
! #: fortran/resolve.cc:14913
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L cannot be pure"
  msgstr ""
  
! #: fortran/resolve.cc:14917
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L cannot be recursive"
  msgstr ""
  
! #: fortran/resolve.cc:14930
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14941
  #, gcc-internal-format
  msgid "Procedure pointer %qs at %L shall not be elemental"
  msgstr ""
  
! #: fortran/resolve.cc:14947
  #, gcc-internal-format
  msgid "Dummy procedure %qs at %L shall not be elemental"
  msgstr ""
  
! #: fortran/resolve.cc:14967
  #, gcc-internal-format
  msgid "Function result variable %qs at %L of elemental function %qs shall not have an ALLOCATABLE or POINTER attribute"
  msgstr ""
  
! #: fortran/resolve.cc:15024
  #, gcc-internal-format
  msgid "PROCEDURE attribute conflicts with SAVE attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15030
  #, gcc-internal-format
  msgid "PROCEDURE attribute conflicts with INTENT attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15036
  #, gcc-internal-format
  msgid "PROCEDURE attribute conflicts with RESULT attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15044
  #, gcc-internal-format
  msgid "EXTERNAL attribute conflicts with FUNCTION attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15050
  #, gcc-internal-format
  msgid "Procedure pointer result %qs at %L is missing the pointer attribute"
  msgstr ""
  
! #: fortran/resolve.cc:15093
  #, gcc-internal-format, gfc-internal-format
  msgid "Mismatch in ELEMENTAL attribute between MODULE PROCEDURE at %L and its interface in %s"
  msgstr ""
  
! #: fortran/resolve.cc:15101
  #, gcc-internal-format, gfc-internal-format
  msgid "Mismatch in PURE attribute between MODULE PROCEDURE at %L and its interface in %s"
  msgstr ""
  
! #: fortran/resolve.cc:15109
  #, gcc-internal-format, gfc-internal-format
  msgid "Mismatch in RECURSIVE attribute between MODULE PROCEDURE at %L and its interface in %s"
  msgstr ""
  
! #: fortran/resolve.cc:15118
  #, gcc-internal-format
  msgid "%s between the MODULE PROCEDURE declaration in MODULE %qs and the declaration at %L in (SUB)MODULE %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15142
  #, fuzzy, gcc-internal-format
  #| msgid "constructor cannot be static member function"
  msgid "Interface of %qs at %L must be explicit"
  msgstr "konstruktionsfunktionen kan ikke vÃ¦re en statisk medlemsfunktion"
  
! #: fortran/resolve.cc:15212
  #, gcc-internal-format
  msgid "FINAL procedure %qs at %L is not a SUBROUTINE"
  msgstr ""
  
! #: fortran/resolve.cc:15221
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "`%D' must take exactly one argument"
  msgid "FINAL procedure at %L must have exactly one argument"
  msgstr "'%s' skal tage mod Ã©n parameter"
  
! #: fortran/resolve.cc:15229 fortran/resolve.cc:15246
  #, gcc-internal-format
  msgid "Argument of FINAL procedure at %L must be of type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15237
  #, gcc-internal-format, gfc-internal-format
  msgid "FINAL procedure at %L with assumed rank argument must be the only finalizer with the same kind/type (F2018: C790)"
  msgstr ""
  
! #: fortran/resolve.cc:15254
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of FINAL procedure at %L must not be a POINTER"
  msgstr ""
  
! #: fortran/resolve.cc:15260
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:15266
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
  msgstr ""
  
! #: fortran/resolve.cc:15274
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
  msgstr ""
  
! #: fortran/resolve.cc:15283
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
  msgstr ""
  
! #: fortran/resolve.cc:15305
  #, gcc-internal-format
  msgid "FINAL procedure %qs declared at %L has the same rank (%d) as %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15342
  #, gcc-internal-format
  msgid "Only array FINAL procedures declared for derived type %qs defined at %L, suggest also scalar one unless an assumed rank finalizer has been declared"
  msgstr ""
  
! #: fortran/resolve.cc:15383
  #, gcc-internal-format
  msgid "%qs and %qs cannot be mixed FUNCTION/SUBROUTINE for GENERIC %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15419
  #, gcc-internal-format
  msgid "%qs and %qs for GENERIC %qs at %L are ambiguous"
  msgstr ""
  
! #: fortran/resolve.cc:15478
  #, gcc-internal-format
  msgid "Undefined specific binding %qs as target of GENERIC %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15490
  #, gcc-internal-format
  msgid "GENERIC %qs at %L must target a specific binding, %qs is GENERIC, too"
  msgstr ""
  
! #: fortran/resolve.cc:15518
  #, gcc-internal-format
  msgid "GENERIC %qs at %L cannot overwrite specific binding with the same name"
  msgstr ""
  
! #: fortran/resolve.cc:15574
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "expression statement has incomplete type"
  msgid "Type-bound operator at %L cannot be NOPASS"
  msgstr "udtrykket er af en ufuldstÃ¦ndig type"
  
! #: fortran/resolve.cc:15786
  #, gcc-internal-format
  msgid "%qs must be a module procedure or an external procedure with an explicit interface at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15829
  #, gcc-internal-format
  msgid "Procedure %qs with PASS(%s) at %L has no argument %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15843
  #, gcc-internal-format
  msgid "Procedure %qs with PASS at %L must have at least one argument"
  msgstr ""
  
! #: fortran/resolve.cc:15857 fortran/resolve.cc:16399
  #, gcc-internal-format
  msgid "Non-polymorphic passed-object dummy argument of %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15866
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L must be of the derived-type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15876
  #, fuzzy, gcc-internal-format
  #| msgid "argument to `%s' attribute larger than %d"
  msgid "Argument %qs of %qs with PASS(%s) at %L must be of the parametric derived-type %qs"
  msgstr "parameter til egenskaben '%s' er stÃ¸rre end %d"
  
! #: fortran/resolve.cc:15918
  #, gcc-internal-format
  msgid "All LEN type parameters of the passed dummy argument %qs of %qs at %L must be ASSUMED."
  msgstr ""
  
! #: fortran/resolve.cc:15928
  #, gcc-internal-format
  msgid "Passed-object dummy argument of %qs at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:15934
  #, gcc-internal-format
  msgid "Passed-object dummy argument of %qs at %L must not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:15940
  #, gcc-internal-format
  msgid "Passed-object dummy argument of %qs at %L must not be POINTER"
  msgstr ""
  
! #: fortran/resolve.cc:15969
  #, gcc-internal-format
  msgid "Procedure %qs at %L has the same name as a component of %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15979
  #, gcc-internal-format
  msgid "Procedure %qs at %L has the same name as an inherited component of %qs"
  msgstr ""
  
! #: fortran/resolve.cc:16074
  #, gcc-internal-format
  msgid "Derived-type %qs declared at %L must be ABSTRACT because %qs is DEFERRED and not overridden"
  msgstr ""
  
! #: fortran/resolve.cc:16179
  #, gcc-internal-format
  msgid "Coarray component %qs at %L must be allocatable with deferred shape"
  msgstr ""
  
! #: fortran/resolve.cc:16188
  #, gcc-internal-format
  msgid "Component %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:16198
  #, gcc-internal-format
  msgid "Component %qs at %L with coarray component shall be a nonpointer, nonallocatable scalar"
  msgstr ""
  
! #: fortran/resolve.cc:16223
  #, gcc-internal-format
  msgid "Component %qs at %L has the CONTIGUOUS attribute but is not an array pointer"
  msgstr ""
  
! #: fortran/resolve.cc:16234
  #, fuzzy, gcc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "Component %qs of BIND(C) type at %L must have length one"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: fortran/resolve.cc:16332
  #, gcc-internal-format
  msgid "Procedure pointer component %qs with PASS(%s) at %L has no argument %qs"
  msgstr ""
  
! #: fortran/resolve.cc:16346
  #, gcc-internal-format
  msgid "Procedure pointer component %qs with PASS at %L must have at least one argument"
  msgstr ""
  
! #: fortran/resolve.cc:16362
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L must be of the derived type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:16372
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:16381
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L may not have the POINTER attribute"
  msgstr ""
  
! #: fortran/resolve.cc:16390
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L may not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:16432
  #, gcc-internal-format
  msgid "Component %qs of %qs at %L has the same name as an inherited type-bound procedure"
  msgstr ""
  
! #: fortran/resolve.cc:16445
  #, gcc-internal-format
  msgid "Character length of component %qs needs to be a constant specification expression at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16456
  #, gcc-internal-format
  msgid "Character length expression of component %qs at %L must be of INTEGER type, found %s"
  msgstr ""
  
! #: fortran/resolve.cc:16469
  #, gcc-internal-format
  msgid "Character component %qs of %qs at %L with deferred length must be a POINTER or ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:16502
  #, gcc-internal-format
  msgid "the component %qs is a PRIVATE type and cannot be a component of %qs, which is PUBLIC at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16510
  #, gcc-internal-format, gfc-internal-format
  msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
  msgstr ""
  
! #: fortran/resolve.cc:16519
  #, gcc-internal-format, gfc-internal-format
  msgid "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:16605
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "initialization of new expression with `='"
  msgid "Conflicting initializers in union at %L and %L"
  msgstr "tildeling af startvÃ¦rdi til new-udtryk med '='"
  
! #: fortran/resolve.cc:16697
  #, gcc-internal-format
  msgid "As extending type %qs at %L has a coarray component, parent type %qs shall also have one"
  msgstr ""
  
! #: fortran/resolve.cc:16710
  #, gcc-internal-format
  msgid "Non-extensible derived-type %qs at %L must not be ABSTRACT"
  msgstr ""
  
! #: fortran/resolve.cc:16780
  #, gcc-internal-format
  msgid "Parameterized type %qs does not have a component corresponding to parameter %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16812
  #, gcc-internal-format
  msgid "Generic name %qs of function %qs at %L being the same name as derived type at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16826
  #, fuzzy, gcc-internal-format
  msgid "Derived type %qs at %L has not been declared"
  msgstr "'%#D' kan ikke erklÃ¦res"
  
! #: fortran/resolve.cc:16894
  #, gcc-internal-format
  msgid "Assumed size array %qs in namelist %qs at %L is not allowed"
  msgstr ""
  
! #: fortran/resolve.cc:16900
  #, gcc-internal-format
  msgid "NAMELIST array object %qs with assumed shape in namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16906
  #, gcc-internal-format
  msgid "NAMELIST array object %qs with nonconstant shape in namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16914
  #, gcc-internal-format
  msgid "NAMELIST object %qs with nonconstant character length in namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16931
  #, gcc-internal-format
  msgid "NAMELIST object %qs was declared PRIVATE and cannot be member of PUBLIC namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16953
  #, gcc-internal-format
  msgid "NAMELIST object %qs has use-associated PRIVATE components and cannot be member of namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16964
  #, gcc-internal-format
  msgid "NAMELIST object %qs has PRIVATE components and cannot be a member of PUBLIC namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16991
  #, gcc-internal-format
  msgid "PROCEDURE attribute conflicts with NAMELIST attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17010
  #, gcc-internal-format
  msgid "Parameter array %qs at %L cannot be automatic or of deferred shape"
  msgstr ""
  
! #: fortran/resolve.cc:17026
  #, gcc-internal-format
  msgid "Implicitly typed PARAMETER %qs at %L doesn't match a later IMPLICIT type"
  msgstr ""
  
! #: fortran/resolve.cc:17037
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible derived type in PARAMETER at %L"
  msgstr "uforenelig afledt type i PARAMETER ved %L"
  
! #: fortran/resolve.cc:17045
  #, gcc-internal-format
  msgid "CLASS variable %qs at %L cannot have the PARAMETER attribute"
  msgstr "CLASS-variablen %qs ved %L kan ikke have PARAMETER-attributten"
  
! #: fortran/resolve.cc:17097
  #, gcc-internal-format
  msgid "Entity %qs at %L has a deferred LEN parameter %qs and requires either the POINTER or ALLOCATABLE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17109
  #, gcc-internal-format
  msgid "The AUTOMATIC object %qs at %L must not have the SAVE attribute or be a variable declared in the main program, a module or a submodule(F08/C513)"
  msgstr ""
  
! #: fortran/resolve.cc:17116
  #, gcc-internal-format
  msgid "The object %qs at %L with ASSUMED type parameters must be a dummy or a SELECT TYPE selector(F08/4.2)"
  msgstr ""
  
! #: fortran/resolve.cc:17175
  #, gcc-internal-format, gfc-internal-format
  msgid "Sorry, allocatable/pointer components in polymorphic (CLASS) type coarrays at %L are unsupported"
  msgstr ""
  
! #: fortran/resolve.cc:17188
  #, gcc-internal-format
  msgid "%<omp_all_memory%>, declared at %L, may only be used in the OpenMP DEPEND clause"
  msgstr ""
  
! #: fortran/resolve.cc:17253
  #, gcc-internal-format, gfc-internal-format
  msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17256
  #, gcc-internal-format, gfc-internal-format
  msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17362
  #, gcc-internal-format
  msgid "%qs at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape or assumed-rank array"
  msgstr ""
  
! #: fortran/resolve.cc:17383
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "No specification for implied-DO iterator `%A' at %0"
  msgid "Bad specification for assumed size array at %L"
  msgstr "Ingen angivelse af underforstÃ¥et DO-iterator '%A' ved %0"
  
! #: fortran/resolve.cc:17397
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed size array at %L must be a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17400
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed shape array at %L must be a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17412
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank array at %L must be a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17419
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank array at %L may not have the VALUE or CODIMENSION attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17432
  #, gcc-internal-format, gfc-internal-format
  msgid "Symbol at %L is not a DUMMY variable"
  msgstr ""
  
! #: fortran/resolve.cc:17438
  #, gcc-internal-format
  msgid "%qs at %L cannot have the VALUE attribute because it is not a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17448
  #, gcc-internal-format
  msgid "Character dummy variable %qs at %L with VALUE attribute must have constant length"
  msgstr ""
  
! #: fortran/resolve.cc:17457
  #, gcc-internal-format
  msgid "C interoperable character dummy variable %qs at %L with VALUE attribute must have length one"
  msgstr ""
  
! #: fortran/resolve.cc:17470 fortran/resolve.cc:17647
  #, gcc-internal-format
  msgid "The derived type %qs at %L is of type %qs, which has not been defined"
  msgstr ""
  
! #: fortran/resolve.cc:17484
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute shall be a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17493
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute shall be of type TYPE(*) or of an numeric intrinsic type"
  msgstr ""
  
! #: fortran/resolve.cc:17502
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute may not have the ALLOCATABLE, CODIMENSION, POINTER or VALUE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17510
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute may not have the INTENT(OUT) attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17517
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute shall either be a scalar or an assumed-size array"
  msgstr ""
  
! #: fortran/resolve.cc:17537
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed type of variable %s at %L is only permitted for dummy variables"
  msgstr ""
  
! #: fortran/resolve.cc:17544
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L may not have the ALLOCATABLE, CODIMENSION, POINTER or VALUE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17551
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L may not have the INTENT(OUT) attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17558
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L shall not be an explicit-shape array"
  msgstr ""
  
! #: fortran/resolve.cc:17584
  #, gcc-internal-format
  msgid "Variable %qs at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scope"
  msgstr ""
  
! #: fortran/resolve.cc:17594
  #, fuzzy, gcc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "BIND(C) Variable %qs at %L must have length one"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: fortran/resolve.cc:17673
  #, gcc-internal-format
  msgid "PUBLIC %s %qs at %L of PRIVATE derived type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:17688
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:17701
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L of type EVENT_TYPE or with subcomponent of type EVENT_TYPE must be a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:17719
  #, gcc-internal-format
  msgid "The INTENT(OUT) dummy argument %qs at %L is ASSUMED SIZE and so cannot have a default initializer"
  msgstr ""
  
! #: fortran/resolve.cc:17731
  #, gcc-internal-format
  msgid "Dummy argument %qs at %L of LOCK_TYPE shall not be INTENT(OUT)"
  msgstr ""
  
! #: fortran/resolve.cc:17740
  #, gcc-internal-format
  msgid "Dummy argument %qs at %L of EVENT_TYPE shall not be INTENT(OUT)"
  msgstr ""
  
! #: fortran/resolve.cc:17753
  #, gcc-internal-format
  msgid "Function result %qs at %L shall not be a coarray or have a coarray component"
  msgstr ""
  
! #: fortran/resolve.cc:17762
  #, gcc-internal-format
  msgid "Variable %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:17775
  #, gcc-internal-format
  msgid "Variable %qs at %L with coarray component shall be a nonpointer, nonallocatable scalar, which is not a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:17791
  #, gcc-internal-format
  msgid "Variable %qs at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17799
  #, gcc-internal-format
  msgid "Coarray variable %qs at %L shall not have codimensions with deferred shape without allocatable"
  msgstr ""
  
! #: fortran/resolve.cc:17807
  #, gcc-internal-format
  msgid "Allocatable coarray variable %qs at %L must have deferred shape"
  msgstr ""
  
! #: fortran/resolve.cc:17820
  #, gcc-internal-format
  msgid "Variable %qs at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray components"
  msgstr ""
  
! #: fortran/resolve.cc:17829
  #, gcc-internal-format
  msgid "Coarray dummy variable %qs at %L not allowed in BIND(C) procedure %qs"
  msgstr ""
  
! #: fortran/resolve.cc:17845
  #, gcc-internal-format
  msgid "LOGICAL dummy argument %qs at %L with non-C_Bool kind in BIND(C) procedure %qs"
  msgstr ""
  
! #: fortran/resolve.cc:17851
  #, gcc-internal-format
  msgid "LOGICAL result variable %qs at %L with non-C_Bool kind in BIND(C) procedure %qs"
  msgstr ""
  
! #: fortran/resolve.cc:17876
  #, fuzzy, gcc-internal-format
  #| msgid "data member `%D' cannot be a member template"
  msgid "Namelist %qs cannot be an argument to subroutine or function at %L"
  msgstr "datamedlem '%D' kan ikke vÃ¦re en medlemsskabelon"
  
! #: fortran/resolve.cc:17936
  #, gcc-internal-format, gfc-internal-format
  msgid "Threadprivate at %L isn't SAVEd"
  msgstr ""
  
! #: fortran/resolve.cc:17948
  #, gcc-internal-format
  msgid "!$OMP DECLARE TARGET variable %qs at %L isn't SAVEd"
  msgstr ""
  
! #: fortran/resolve.cc:18059
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Extraneous comma in FORMAT statement at %0"
  msgid "Expecting definable entity near %L"
  msgstr "Ekstra komma i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/resolve.cc:18067
  #, gcc-internal-format
  msgid "BLOCK DATA element %qs at %L must be in COMMON"
  msgstr ""
  
! #: fortran/resolve.cc:18074
  #, gcc-internal-format
  msgid "DATA array %qs at %L must be specified in a previous declaration"
  msgstr ""
  
! #: fortran/resolve.cc:18081
  #, gcc-internal-format
  msgid "DATA element %qs at %L cannot have a coindex"
  msgstr ""
  
! #: fortran/resolve.cc:18097
  #, gcc-internal-format
  msgid "DATA element %qs at %L is a pointer and so must be a full array"
  msgstr ""
  
! #: fortran/resolve.cc:18104
  #, gcc-internal-format, gfc-internal-format
  msgid "DATA object near %L has the pointer attribute and the corresponding DATA value is not a valid initial-data-target"
  msgstr ""
  
! #: fortran/resolve.cc:18113
  #, fuzzy, gcc-internal-format
  #| msgid "CLASS variable %qs at %L cannot have the PARAMETER attribute"
  msgid "DATA element %qs at %L cannot have the ALLOCATABLE attribute"
  msgstr "CLASS-variablen %qs ved %L kan ikke have PARAMETER-attributten"
  
! #: fortran/resolve.cc:18175
  #, gcc-internal-format, gfc-internal-format
  msgid "Nonconstant array section at %L in DATA statement"
  msgstr ""
  
! #: fortran/resolve.cc:18188
  #, gcc-internal-format, gfc-internal-format
  msgid "DATA statement at %L has more variables than values"
  msgstr ""
  
! #: fortran/resolve.cc:18264
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "nonconstant array index in initializer"
  msgid "Non-constant character length at %L in DATA statement"
  msgstr "tabelindekset i startvÃ¦rdien er ikke en konstant"
  
! #: fortran/resolve.cc:18292
  #, gcc-internal-format, gfc-internal-format
  msgid "start of implied-do loop at %L could not be simplified to a constant value"
  msgstr ""
  
! #: fortran/resolve.cc:18300
  #, gcc-internal-format, gfc-internal-format
  msgid "end of implied-do loop at %L could not be simplified to a constant value"
  msgstr ""
  
! #: fortran/resolve.cc:18308
  #, gcc-internal-format, gfc-internal-format
  msgid "step of implied-do loop at %L could not be simplified to a constant value"
  msgstr ""
  
! #: fortran/resolve.cc:18315
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "step of implied-do loop at %L shall not be zero"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: fortran/resolve.cc:18440
  #, gcc-internal-format, gfc-internal-format
  msgid "DATA statement at %L has more values than variables"
  msgstr ""
--- 89923,90765 ----
  
  #. F08:C541. The shape of an array defined in a main program or module
  #. * needs to be constant.
! #: fortran/resolve.cc:14591
  #, gcc-internal-format
  msgid "The module or main program array %qs at %L must have constant shape"
  msgstr ""
  
! #: fortran/resolve.cc:14616
  #, gcc-internal-format, gfc-internal-format
  msgid "Entity with assumed character length at %L must be a dummy argument or a PARAMETER"
  msgstr ""
  
! #: fortran/resolve.cc:14637
  #, gcc-internal-format
  msgid "%qs at %L must have constant character length in this context"
  msgstr ""
  
! #: fortran/resolve.cc:14644
  #, gcc-internal-format
  msgid "COMMON variable %qs at %L must have constant character length"
  msgstr ""
  
! #: fortran/resolve.cc:14692
  #, fuzzy, gcc-internal-format
  msgid "Allocatable %qs at %L cannot have an initializer"
  msgstr "slutfeltet '%s' bliver mÃ¥ske ikke klargjort"
  
! #: fortran/resolve.cc:14695
  #, fuzzy, gcc-internal-format
  msgid "External %qs at %L cannot have an initializer"
  msgstr "slutfeltet '%s' bliver mÃ¥ske ikke klargjort"
  
! #: fortran/resolve.cc:14698
  #, fuzzy, gcc-internal-format
  msgid "Dummy %qs at %L cannot have an initializer"
  msgstr "slutfeltet '%s' bliver mÃ¥ske ikke klargjort"
  
! #: fortran/resolve.cc:14701
  #, fuzzy, gcc-internal-format
  msgid "Intrinsic %qs at %L cannot have an initializer"
  msgstr "slutfeltet '%s' bliver mÃ¥ske ikke klargjort"
  
! #: fortran/resolve.cc:14704
  #, fuzzy, gcc-internal-format
  msgid "Function result %qs at %L cannot have an initializer"
  msgstr "slutfeltet '%s' bliver mÃ¥ske ikke klargjort"
  
! #: fortran/resolve.cc:14707
  #, gcc-internal-format
  msgid "Automatic array %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14749
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "fstat %s"
  msgid "%s at %L"
  msgstr "fejl ved egenskabsundersÃ¸gelse af filen %s"
  
! #: fortran/resolve.cc:14781
  #, gcc-internal-format
  msgid "Character-valued statement function %qs at %L must have constant length"
  msgstr ""
  
! #: fortran/resolve.cc:14804
  #, gcc-internal-format
  msgid "%qs is of a PRIVATE type and cannot be a dummy argument of %qs, which is PUBLIC at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14826
  #, gcc-internal-format
  msgid "Procedure %qs in PUBLIC interface %qs at %L takes dummy arguments of %qs which is PRIVATE"
  msgstr ""
  
! #: fortran/resolve.cc:14844
  #, fuzzy, gcc-internal-format
  #| msgid "function cannot be inline"
  msgid "Function %qs at %L cannot have an initializer"
  msgstr "funktion kan ikke indbygges"
  
! #: fortran/resolve.cc:14856
  #, fuzzy, gcc-internal-format
  #| msgid "variable-sized object of type `%T' may not be initialized"
  msgid "External object %qs at %L may not have an initializer"
  msgstr "objekt af typen '%T' med variabel stÃ¸rrelse mÃ¥ ikke tildeles en startvÃ¦rdi"
  
! #: fortran/resolve.cc:14866
  #, gcc-internal-format
  msgid "ELEMENTAL function %qs at %L must have a scalar result"
  msgstr ""
  
! #: fortran/resolve.cc:14876
  #, gcc-internal-format
  msgid "Statement function %qs at %L may not have pointer or allocatable attribute"
  msgstr ""
  
! #: fortran/resolve.cc:14895
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L cannot be array-valued"
  msgstr ""
  
! #: fortran/resolve.cc:14899
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L cannot be pointer-valued"
  msgstr ""
  
! #: fortran/resolve.cc:14903
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L cannot be pure"
  msgstr ""
  
! #: fortran/resolve.cc:14907
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L cannot be recursive"
  msgstr ""
  
! #: fortran/resolve.cc:14920
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14931
  #, gcc-internal-format
  msgid "Procedure pointer %qs at %L shall not be elemental"
  msgstr ""
  
! #: fortran/resolve.cc:14937
  #, gcc-internal-format
  msgid "Dummy procedure %qs at %L shall not be elemental"
  msgstr ""
  
! #: fortran/resolve.cc:14957
  #, gcc-internal-format
  msgid "Function result variable %qs at %L of elemental function %qs shall not have an ALLOCATABLE or POINTER attribute"
  msgstr ""
  
! #: fortran/resolve.cc:15014
  #, gcc-internal-format
  msgid "PROCEDURE attribute conflicts with SAVE attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15020
  #, gcc-internal-format
  msgid "PROCEDURE attribute conflicts with INTENT attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15026
  #, gcc-internal-format
  msgid "PROCEDURE attribute conflicts with RESULT attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15034
  #, gcc-internal-format
  msgid "EXTERNAL attribute conflicts with FUNCTION attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15040
  #, gcc-internal-format
  msgid "Procedure pointer result %qs at %L is missing the pointer attribute"
  msgstr ""
  
! #: fortran/resolve.cc:15083
  #, gcc-internal-format, gfc-internal-format
  msgid "Mismatch in ELEMENTAL attribute between MODULE PROCEDURE at %L and its interface in %s"
  msgstr ""
  
! #: fortran/resolve.cc:15091
  #, gcc-internal-format, gfc-internal-format
  msgid "Mismatch in PURE attribute between MODULE PROCEDURE at %L and its interface in %s"
  msgstr ""
  
! #: fortran/resolve.cc:15099
  #, gcc-internal-format, gfc-internal-format
  msgid "Mismatch in RECURSIVE attribute between MODULE PROCEDURE at %L and its interface in %s"
  msgstr ""
  
! #: fortran/resolve.cc:15108
  #, gcc-internal-format
  msgid "%s between the MODULE PROCEDURE declaration in MODULE %qs and the declaration at %L in (SUB)MODULE %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15132
  #, fuzzy, gcc-internal-format
  #| msgid "constructor cannot be static member function"
  msgid "Interface of %qs at %L must be explicit"
  msgstr "konstruktionsfunktionen kan ikke vÃ¦re en statisk medlemsfunktion"
  
! #: fortran/resolve.cc:15202
  #, gcc-internal-format
  msgid "FINAL procedure %qs at %L is not a SUBROUTINE"
  msgstr ""
  
! #: fortran/resolve.cc:15211
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "`%D' must take exactly one argument"
  msgid "FINAL procedure at %L must have exactly one argument"
  msgstr "'%s' skal tage mod Ã©n parameter"
  
! #: fortran/resolve.cc:15219 fortran/resolve.cc:15236
  #, gcc-internal-format
  msgid "Argument of FINAL procedure at %L must be of type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15227
  #, gcc-internal-format, gfc-internal-format
  msgid "FINAL procedure at %L with assumed rank argument must be the only finalizer with the same kind/type (F2018: C790)"
  msgstr ""
  
! #: fortran/resolve.cc:15244
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of FINAL procedure at %L must not be a POINTER"
  msgstr ""
  
! #: fortran/resolve.cc:15250
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:15256
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
  msgstr ""
  
! #: fortran/resolve.cc:15264
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
  msgstr ""
  
! #: fortran/resolve.cc:15273
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
  msgstr ""
  
! #: fortran/resolve.cc:15295
  #, gcc-internal-format
  msgid "FINAL procedure %qs declared at %L has the same rank (%d) as %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15332
  #, gcc-internal-format
  msgid "Only array FINAL procedures declared for derived type %qs defined at %L, suggest also scalar one unless an assumed rank finalizer has been declared"
  msgstr ""
  
! #: fortran/resolve.cc:15373
  #, gcc-internal-format
  msgid "%qs and %qs cannot be mixed FUNCTION/SUBROUTINE for GENERIC %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15409
  #, gcc-internal-format
  msgid "%qs and %qs for GENERIC %qs at %L are ambiguous"
  msgstr ""
  
! #: fortran/resolve.cc:15468
  #, gcc-internal-format
  msgid "Undefined specific binding %qs as target of GENERIC %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15480
  #, gcc-internal-format
  msgid "GENERIC %qs at %L must target a specific binding, %qs is GENERIC, too"
  msgstr ""
  
! #: fortran/resolve.cc:15508
  #, gcc-internal-format
  msgid "GENERIC %qs at %L cannot overwrite specific binding with the same name"
  msgstr ""
  
! #: fortran/resolve.cc:15564
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "expression statement has incomplete type"
  msgid "Type-bound operator at %L cannot be NOPASS"
  msgstr "udtrykket er af en ufuldstÃ¦ndig type"
  
! #: fortran/resolve.cc:15776
  #, gcc-internal-format
  msgid "%qs must be a module procedure or an external procedure with an explicit interface at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15819
  #, gcc-internal-format
  msgid "Procedure %qs with PASS(%s) at %L has no argument %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15833
  #, gcc-internal-format
  msgid "Procedure %qs with PASS at %L must have at least one argument"
  msgstr ""
  
! #: fortran/resolve.cc:15847 fortran/resolve.cc:16389
  #, gcc-internal-format
  msgid "Non-polymorphic passed-object dummy argument of %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15856
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L must be of the derived-type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15866
  #, fuzzy, gcc-internal-format
  #| msgid "argument to `%s' attribute larger than %d"
  msgid "Argument %qs of %qs with PASS(%s) at %L must be of the parametric derived-type %qs"
  msgstr "parameter til egenskaben '%s' er stÃ¸rre end %d"
  
! #: fortran/resolve.cc:15908
  #, gcc-internal-format
  msgid "All LEN type parameters of the passed dummy argument %qs of %qs at %L must be ASSUMED."
  msgstr ""
  
! #: fortran/resolve.cc:15918
  #, gcc-internal-format
  msgid "Passed-object dummy argument of %qs at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:15924
  #, gcc-internal-format
  msgid "Passed-object dummy argument of %qs at %L must not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:15930
  #, gcc-internal-format
  msgid "Passed-object dummy argument of %qs at %L must not be POINTER"
  msgstr ""
  
! #: fortran/resolve.cc:15959
  #, gcc-internal-format
  msgid "Procedure %qs at %L has the same name as a component of %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15969
  #, gcc-internal-format
  msgid "Procedure %qs at %L has the same name as an inherited component of %qs"
  msgstr ""
  
! #: fortran/resolve.cc:16064
  #, gcc-internal-format
  msgid "Derived-type %qs declared at %L must be ABSTRACT because %qs is DEFERRED and not overridden"
  msgstr ""
  
! #: fortran/resolve.cc:16169
  #, gcc-internal-format
  msgid "Coarray component %qs at %L must be allocatable with deferred shape"
  msgstr ""
  
! #: fortran/resolve.cc:16178
  #, gcc-internal-format
  msgid "Component %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:16188
  #, gcc-internal-format
  msgid "Component %qs at %L with coarray component shall be a nonpointer, nonallocatable scalar"
  msgstr ""
  
! #: fortran/resolve.cc:16213
  #, gcc-internal-format
  msgid "Component %qs at %L has the CONTIGUOUS attribute but is not an array pointer"
  msgstr ""
  
! #: fortran/resolve.cc:16224
  #, fuzzy, gcc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "Component %qs of BIND(C) type at %L must have length one"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: fortran/resolve.cc:16322
  #, gcc-internal-format
  msgid "Procedure pointer component %qs with PASS(%s) at %L has no argument %qs"
  msgstr ""
  
! #: fortran/resolve.cc:16336
  #, gcc-internal-format
  msgid "Procedure pointer component %qs with PASS at %L must have at least one argument"
  msgstr ""
  
! #: fortran/resolve.cc:16352
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L must be of the derived type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:16362
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:16371
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L may not have the POINTER attribute"
  msgstr ""
  
! #: fortran/resolve.cc:16380
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L may not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:16422
  #, gcc-internal-format
  msgid "Component %qs of %qs at %L has the same name as an inherited type-bound procedure"
  msgstr ""
  
! #: fortran/resolve.cc:16435
  #, gcc-internal-format
  msgid "Character length of component %qs needs to be a constant specification expression at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16446
  #, gcc-internal-format
  msgid "Character length expression of component %qs at %L must be of INTEGER type, found %s"
  msgstr ""
  
! #: fortran/resolve.cc:16459
  #, gcc-internal-format
  msgid "Character component %qs of %qs at %L with deferred length must be a POINTER or ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:16492
  #, gcc-internal-format
  msgid "the component %qs is a PRIVATE type and cannot be a component of %qs, which is PUBLIC at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16500
  #, gcc-internal-format, gfc-internal-format
  msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
  msgstr ""
  
! #: fortran/resolve.cc:16509
  #, gcc-internal-format, gfc-internal-format
  msgid "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:16595
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "initialization of new expression with `='"
  msgid "Conflicting initializers in union at %L and %L"
  msgstr "tildeling af startvÃ¦rdi til new-udtryk med '='"
  
! #: fortran/resolve.cc:16687
  #, gcc-internal-format
  msgid "As extending type %qs at %L has a coarray component, parent type %qs shall also have one"
  msgstr ""
  
! #: fortran/resolve.cc:16700
  #, gcc-internal-format
  msgid "Non-extensible derived-type %qs at %L must not be ABSTRACT"
  msgstr ""
  
! #: fortran/resolve.cc:16770
  #, gcc-internal-format
  msgid "Parameterized type %qs does not have a component corresponding to parameter %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16802
  #, gcc-internal-format
  msgid "Generic name %qs of function %qs at %L being the same name as derived type at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16816
  #, fuzzy, gcc-internal-format
  msgid "Derived type %qs at %L has not been declared"
  msgstr "'%#D' kan ikke erklÃ¦res"
  
! #: fortran/resolve.cc:16884
  #, gcc-internal-format
  msgid "Assumed size array %qs in namelist %qs at %L is not allowed"
  msgstr ""
  
! #: fortran/resolve.cc:16890
  #, gcc-internal-format
  msgid "NAMELIST array object %qs with assumed shape in namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16896
  #, gcc-internal-format
  msgid "NAMELIST array object %qs with nonconstant shape in namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16904
  #, gcc-internal-format
  msgid "NAMELIST object %qs with nonconstant character length in namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16921
  #, gcc-internal-format
  msgid "NAMELIST object %qs was declared PRIVATE and cannot be member of PUBLIC namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16943
  #, gcc-internal-format
  msgid "NAMELIST object %qs has use-associated PRIVATE components and cannot be member of namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16954
  #, gcc-internal-format
  msgid "NAMELIST object %qs has PRIVATE components and cannot be a member of PUBLIC namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16981
  #, gcc-internal-format
  msgid "PROCEDURE attribute conflicts with NAMELIST attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17000
  #, gcc-internal-format
  msgid "Parameter array %qs at %L cannot be automatic or of deferred shape"
  msgstr ""
  
! #: fortran/resolve.cc:17016
  #, gcc-internal-format
  msgid "Implicitly typed PARAMETER %qs at %L doesn't match a later IMPLICIT type"
  msgstr ""
  
! #: fortran/resolve.cc:17027
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible derived type in PARAMETER at %L"
  msgstr "uforenelig afledt type i PARAMETER ved %L"
  
! #: fortran/resolve.cc:17035
  #, gcc-internal-format
  msgid "CLASS variable %qs at %L cannot have the PARAMETER attribute"
  msgstr "CLASS-variablen %qs ved %L kan ikke have PARAMETER-attributten"
  
! #: fortran/resolve.cc:17087
  #, gcc-internal-format
  msgid "Entity %qs at %L has a deferred LEN parameter %qs and requires either the POINTER or ALLOCATABLE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17099
  #, gcc-internal-format
  msgid "The AUTOMATIC object %qs at %L must not have the SAVE attribute or be a variable declared in the main program, a module or a submodule(F08/C513)"
  msgstr ""
  
! #: fortran/resolve.cc:17106
  #, gcc-internal-format
  msgid "The object %qs at %L with ASSUMED type parameters must be a dummy or a SELECT TYPE selector(F08/4.2)"
  msgstr ""
  
! #: fortran/resolve.cc:17165
  #, gcc-internal-format, gfc-internal-format
  msgid "Sorry, allocatable/pointer components in polymorphic (CLASS) type coarrays at %L are unsupported"
  msgstr ""
  
! #: fortran/resolve.cc:17178
  #, gcc-internal-format
  msgid "%<omp_all_memory%>, declared at %L, may only be used in the OpenMP DEPEND clause"
  msgstr ""
  
! #: fortran/resolve.cc:17243
  #, gcc-internal-format, gfc-internal-format
  msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17246
  #, gcc-internal-format, gfc-internal-format
  msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17352
  #, gcc-internal-format
  msgid "%qs at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape or assumed-rank array"
  msgstr ""
  
! #: fortran/resolve.cc:17373
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "No specification for implied-DO iterator `%A' at %0"
  msgid "Bad specification for assumed size array at %L"
  msgstr "Ingen angivelse af underforstÃ¥et DO-iterator '%A' ved %0"
  
! #: fortran/resolve.cc:17387
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed size array at %L must be a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17390
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed shape array at %L must be a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17402
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank array at %L must be a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17409
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank array at %L may not have the VALUE or CODIMENSION attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17422
  #, gcc-internal-format, gfc-internal-format
  msgid "Symbol at %L is not a DUMMY variable"
  msgstr ""
  
! #: fortran/resolve.cc:17428
  #, gcc-internal-format
  msgid "%qs at %L cannot have the VALUE attribute because it is not a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17438
  #, gcc-internal-format
  msgid "Character dummy variable %qs at %L with VALUE attribute must have constant length"
  msgstr ""
  
! #: fortran/resolve.cc:17447
  #, gcc-internal-format
  msgid "C interoperable character dummy variable %qs at %L with VALUE attribute must have length one"
  msgstr ""
  
! #: fortran/resolve.cc:17460 fortran/resolve.cc:17637
  #, gcc-internal-format
  msgid "The derived type %qs at %L is of type %qs, which has not been defined"
  msgstr ""
  
! #: fortran/resolve.cc:17474
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute shall be a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17483
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute shall be of type TYPE(*) or of an numeric intrinsic type"
  msgstr ""
  
! #: fortran/resolve.cc:17492
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute may not have the ALLOCATABLE, CODIMENSION, POINTER or VALUE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17500
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute may not have the INTENT(OUT) attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17507
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute shall either be a scalar or an assumed-size array"
  msgstr ""
  
! #: fortran/resolve.cc:17527
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed type of variable %s at %L is only permitted for dummy variables"
  msgstr ""
  
! #: fortran/resolve.cc:17534
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L may not have the ALLOCATABLE, CODIMENSION, POINTER or VALUE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17541
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L may not have the INTENT(OUT) attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17548
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L shall not be an explicit-shape array"
  msgstr ""
  
! #: fortran/resolve.cc:17574
  #, gcc-internal-format
  msgid "Variable %qs at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scope"
  msgstr ""
  
! #: fortran/resolve.cc:17584
  #, fuzzy, gcc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "BIND(C) Variable %qs at %L must have length one"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: fortran/resolve.cc:17663
  #, gcc-internal-format
  msgid "PUBLIC %s %qs at %L of PRIVATE derived type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:17678
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:17691
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L of type EVENT_TYPE or with subcomponent of type EVENT_TYPE must be a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:17709
  #, gcc-internal-format
  msgid "The INTENT(OUT) dummy argument %qs at %L is ASSUMED SIZE and so cannot have a default initializer"
  msgstr ""
  
! #: fortran/resolve.cc:17721
  #, gcc-internal-format
  msgid "Dummy argument %qs at %L of LOCK_TYPE shall not be INTENT(OUT)"
  msgstr ""
  
! #: fortran/resolve.cc:17730
  #, gcc-internal-format
  msgid "Dummy argument %qs at %L of EVENT_TYPE shall not be INTENT(OUT)"
  msgstr ""
  
! #: fortran/resolve.cc:17743
  #, gcc-internal-format
  msgid "Function result %qs at %L shall not be a coarray or have a coarray component"
  msgstr ""
  
! #: fortran/resolve.cc:17752
  #, gcc-internal-format
  msgid "Variable %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:17765
  #, gcc-internal-format
  msgid "Variable %qs at %L with coarray component shall be a nonpointer, nonallocatable scalar, which is not a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:17781
  #, gcc-internal-format
  msgid "Variable %qs at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17789
  #, gcc-internal-format
  msgid "Coarray variable %qs at %L shall not have codimensions with deferred shape without allocatable"
  msgstr ""
  
! #: fortran/resolve.cc:17797
  #, gcc-internal-format
  msgid "Allocatable coarray variable %qs at %L must have deferred shape"
  msgstr ""
  
! #: fortran/resolve.cc:17810
  #, gcc-internal-format
  msgid "Variable %qs at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray components"
  msgstr ""
  
! #: fortran/resolve.cc:17819
  #, gcc-internal-format
  msgid "Coarray dummy variable %qs at %L not allowed in BIND(C) procedure %qs"
  msgstr ""
  
! #: fortran/resolve.cc:17835
  #, gcc-internal-format
  msgid "LOGICAL dummy argument %qs at %L with non-C_Bool kind in BIND(C) procedure %qs"
  msgstr ""
  
! #: fortran/resolve.cc:17841
  #, gcc-internal-format
  msgid "LOGICAL result variable %qs at %L with non-C_Bool kind in BIND(C) procedure %qs"
  msgstr ""
  
! #: fortran/resolve.cc:17866
  #, fuzzy, gcc-internal-format
  #| msgid "data member `%D' cannot be a member template"
  msgid "Namelist %qs cannot be an argument to subroutine or function at %L"
  msgstr "datamedlem '%D' kan ikke vÃ¦re en medlemsskabelon"
  
! #: fortran/resolve.cc:17926
  #, gcc-internal-format, gfc-internal-format
  msgid "Threadprivate at %L isn't SAVEd"
  msgstr ""
  
! #: fortran/resolve.cc:17938
  #, gcc-internal-format
  msgid "!$OMP DECLARE TARGET variable %qs at %L isn't SAVEd"
  msgstr ""
  
! #: fortran/resolve.cc:18049
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Extraneous comma in FORMAT statement at %0"
  msgid "Expecting definable entity near %L"
  msgstr "Ekstra komma i FORMAT-sÃ¦tning ved %0"
  
! #: fortran/resolve.cc:18057
  #, gcc-internal-format
  msgid "BLOCK DATA element %qs at %L must be in COMMON"
  msgstr ""
  
! #: fortran/resolve.cc:18064
  #, gcc-internal-format
  msgid "DATA array %qs at %L must be specified in a previous declaration"
  msgstr ""
  
! #: fortran/resolve.cc:18071
  #, gcc-internal-format
  msgid "DATA element %qs at %L cannot have a coindex"
  msgstr ""
  
! #: fortran/resolve.cc:18087
  #, gcc-internal-format
  msgid "DATA element %qs at %L is a pointer and so must be a full array"
  msgstr ""
  
! #: fortran/resolve.cc:18094
  #, gcc-internal-format, gfc-internal-format
  msgid "DATA object near %L has the pointer attribute and the corresponding DATA value is not a valid initial-data-target"
  msgstr ""
  
! #: fortran/resolve.cc:18103
  #, fuzzy, gcc-internal-format
  #| msgid "CLASS variable %qs at %L cannot have the PARAMETER attribute"
  msgid "DATA element %qs at %L cannot have the ALLOCATABLE attribute"
  msgstr "CLASS-variablen %qs ved %L kan ikke have PARAMETER-attributten"
  
! #: fortran/resolve.cc:18165
  #, gcc-internal-format, gfc-internal-format
  msgid "Nonconstant array section at %L in DATA statement"
  msgstr ""
  
! #: fortran/resolve.cc:18178
  #, gcc-internal-format, gfc-internal-format
  msgid "DATA statement at %L has more variables than values"
  msgstr ""
  
! #: fortran/resolve.cc:18254
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "nonconstant array index in initializer"
  msgid "Non-constant character length at %L in DATA statement"
  msgstr "tabelindekset i startvÃ¦rdien er ikke en konstant"
  
! #: fortran/resolve.cc:18282
  #, gcc-internal-format, gfc-internal-format
  msgid "start of implied-do loop at %L could not be simplified to a constant value"
  msgstr ""
  
! #: fortran/resolve.cc:18290
  #, gcc-internal-format, gfc-internal-format
  msgid "end of implied-do loop at %L could not be simplified to a constant value"
  msgstr ""
  
! #: fortran/resolve.cc:18298
  #, gcc-internal-format, gfc-internal-format
  msgid "step of implied-do loop at %L could not be simplified to a constant value"
  msgstr ""
  
! #: fortran/resolve.cc:18305
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument 3 of `%s' must be a 2-bit literal"
  msgid "step of implied-do loop at %L shall not be zero"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant"
  
! #: fortran/resolve.cc:18430
  #, gcc-internal-format, gfc-internal-format
  msgid "DATA statement at %L has more values than variables"
  msgstr ""
*************** msgstr ""
*** 91751,91774 ****
  msgid "Overlapping unequal initializers in EQUIVALENCE at %C"
  msgstr ""
  
! #: fortran/trans-array.cc:2466 fortran/trans-expr.cc:10439
  #, gcc-internal-format, gfc-internal-format
  msgid "The structure constructor at %L has been finalized. This feature was removed by f08/0011. Use -std=f2018 or -std=gnu to eliminate the finalization."
  msgstr ""
  
  #. Problems occur when we get something like
  #. integer :: a(lots) = (/(i, i=1, lots)/)
! #: fortran/trans-array.cc:6838
  #, gcc-internal-format
  msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See %<-fmax-array-constructor%> option"
  msgstr ""
  
! #: fortran/trans-array.cc:9244
  #, gcc-internal-format
  msgid "Creating array temporary at %L for argument %qs"
  msgstr ""
  
! #: fortran/trans-array.cc:12704
  #, gcc-internal-format, gfc-internal-format
  msgid "bad expression type during walk (%d)"
  msgstr ""
--- 91847,91870 ----
  msgid "Overlapping unequal initializers in EQUIVALENCE at %C"
  msgstr ""
  
! #: fortran/trans-array.cc:2469 fortran/trans-expr.cc:10450
  #, gcc-internal-format, gfc-internal-format
  msgid "The structure constructor at %L has been finalized. This feature was removed by f08/0011. Use -std=f2018 or -std=gnu to eliminate the finalization."
  msgstr ""
  
  #. Problems occur when we get something like
  #. integer :: a(lots) = (/(i, i=1, lots)/)
! #: fortran/trans-array.cc:6840
  #, gcc-internal-format
  msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See %<-fmax-array-constructor%> option"
  msgstr ""
  
! #: fortran/trans-array.cc:9246
  #, gcc-internal-format
  msgid "Creating array temporary at %L for argument %qs"
  msgstr ""
  
! #: fortran/trans-array.cc:12706
  #, gcc-internal-format, gfc-internal-format
  msgid "bad expression type during walk (%d)"
  msgstr ""
*************** msgstr "ReturnÃ©r vÃ¦rdier fra funktione
*** 91958,91964 ****
  msgid "Sorry, !$ACC DECLARE at %L is not allowed in BLOCK construct"
  msgstr ""
  
! #: fortran/trans-decl.cc:7199 fortran/trans-expr.cc:6117
  #, fuzzy, gcc-internal-format
  #| msgid "DW_LOC_OP %s not implemented\n"
  msgid "Unsigned not yet implemented"
--- 92054,92060 ----
  msgid "Sorry, !$ACC DECLARE at %L is not allowed in BLOCK construct"
  msgstr ""
  
! #: fortran/trans-decl.cc:7199 fortran/trans-expr.cc:6127
  #, fuzzy, gcc-internal-format
  #| msgid "DW_LOC_OP %s not implemented\n"
  msgid "Unsigned not yet implemented"
*************** msgstr ""
*** 91990,92008 ****
  msgid "Sorry, coindexed access to an unlimited polymorphic component at %L is not supported"
  msgstr ""
  
! #: fortran/trans-expr.cc:4279
  #, fuzzy, gcc-internal-format
  #| msgid "unknown insn mode"
  msgid "Unknown intrinsic op"
  msgstr "ukendt instruktionstilstand"
  
! #: fortran/trans-expr.cc:5865
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "too few arguments to function `%s'"
  msgid "Unknown argument list function at %L"
  msgstr "for fÃ¥ parametre til funktionen '%s'"
  
! #: fortran/trans-expr.cc:11037
  #, gcc-internal-format, gfc-internal-format
  msgid "If bounds remapping is specified at %L, the pointer target shall not be NULL"
  msgstr ""
--- 92086,92104 ----
  msgid "Sorry, coindexed access to an unlimited polymorphic component at %L is not supported"
  msgstr ""
  
! #: fortran/trans-expr.cc:4289
  #, fuzzy, gcc-internal-format
  #| msgid "unknown insn mode"
  msgid "Unknown intrinsic op"
  msgstr "ukendt instruktionstilstand"
  
! #: fortran/trans-expr.cc:5875
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "too few arguments to function `%s'"
  msgid "Unknown argument list function at %L"
  msgstr "for fÃ¥ parametre til funktionen '%s'"
  
! #: fortran/trans-expr.cc:11050
  #, gcc-internal-format, gfc-internal-format
  msgid "If bounds remapping is specified at %L, the pointer target shall not be NULL"
  msgstr ""
*************** msgstr ""
*** 92018,92029 ****
  msgid "%<dim%> argument of %s intrinsic at %L is not a valid dimension index"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12709 fortran/trans-stmt.cc:1107
  #, gcc-internal-format, gfc-internal-format
  msgid "Sorry, the event component of derived type at %L is not yet supported"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12716
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "environment variable DJGPP not defined"
  msgid "The event variable at %L shall not be coindexed"
--- 92114,92125 ----
  msgid "%<dim%> argument of %s intrinsic at %L is not a valid dimension index"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12688 fortran/trans-stmt.cc:1107
  #, gcc-internal-format, gfc-internal-format
  msgid "Sorry, the event component of derived type at %L is not yet supported"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12695
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "environment variable DJGPP not defined"
  msgid "The event variable at %L shall not be coindexed"
*************** msgstr ""
*** 92061,92242 ****
  msgid "Mapping of polymorphic list item %qD is unspecified behavior"
  msgstr ""
  
! #: fortran/trans-openmp.cc:4176
  #, fuzzy, gcc-internal-format
  #| msgid "no arguments"
  msgid "optional class parameter"
  msgstr "ingen parametre"
  
! #: fortran/trans-openmp.cc:4640
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "unhandled expression type"
  msgstr "uventet adresseudtryk"
  
! #: fortran/trans-openmp.cc:4949
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "unhandled expression"
  msgstr "uventet adresseudtryk"
  
! #: fortran/trans-openmp.cc:5072
  #, gcc-internal-format
  msgid "%<uses_allocators%> clause with traits and memory spaces"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6050
  #, gcc-internal-format
  msgid "%<!$OMP %s%> at %L requires %<-fopenmp-allocators%>"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6053
  #, gcc-internal-format
  msgid "All files that might deallocate such a variable must be compiled with %<-fopenmp-allocators%>"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6056
  #, gcc-internal-format
  msgid "This includes explicit DEALLOCATE, reallocation on intrinsic assignment, INTENT(OUT) for allocatable dummy arguments, and reallocation of allocatable components allocated with an OpenMP allocator"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6633 fortran/trans-openmp.cc:6653
  #, gcc-internal-format
  msgid "non-rectangular loop nest with non-constant step for %qs"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6655
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' previously defined here"
  msgid "Used here"
  msgstr "'%s' tidligere defineret her"
  
! #: fortran/trans-openmp.cc:9221
  #, gcc-internal-format
  msgid "gfc_trans_omp_workshare(): Bad statement code"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9631
  #, gcc-internal-format
  msgid "The base name for %<declare variant%> must be specified at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9642
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "The base name at %L does not match the name of the current procedure"
  msgstr "PlanlÃ¦g ikke begyndelsen og slutningen af proceduren"
  
! #: fortran/trans-openmp.cc:9645
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument to `%s' must be a 2-bit unsigned literal"
  msgid "The base name at %L must not be an entry name"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant uden fortegn"
  
! #: fortran/trans-openmp.cc:9648
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument to `%s' must be a 2-bit unsigned literal"
  msgid "The base name at %L must not be a generic name"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant uden fortegn"
  
! #: fortran/trans-openmp.cc:9651
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument to `%s' must be a 2-bit unsigned literal"
  msgid "The base name at %L must not be a procedure pointer"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant uden fortegn"
  
! #: fortran/trans-openmp.cc:9654
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "`%D' must take exactly one argument"
  msgid "The base procedure at %L must have an explicit interface"
  msgstr "'%s' skal tage mod Ã©n parameter"
  
! #: fortran/trans-openmp.cc:9690
  #, fuzzy, gcc-internal-format
  #| msgid "failed to find class '%s'"
! msgid "Cannot find symbol %qs"
  msgstr "kunne ikke finde klassen '%s'"
  
! #: fortran/trans-openmp.cc:9702
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function,"
  msgid "variant %qs at %L is not a function or subroutine"
  msgstr "'%s' er ikke en funktion,"
  
! #: fortran/trans-openmp.cc:9744
  #, fuzzy, gcc-internal-format
  #| msgid "-f%s and -msdata=%s are incompatible"
  msgid "variant %qs and base %qs at %L have incompatible types: %s"
  msgstr "-f%s og -msdata=%s er indbyrdes uforenelige"
  
! #: fortran/trans-openmp.cc:9750
  #, gcc-internal-format
  msgid "%<append_args%> clause implies that %qs has %d dummy arguments of integer type with %<omp_interop_kind%> kind"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9776
  #, gcc-internal-format
  msgid "%qs at %L must be a nonpointer, nonallocatable scalar integer dummy argument of %<omp_interop_kind%> kind as it utilized with the %<append_args%> clause at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9786
  #, gcc-internal-format
  msgid "%qs at %L with OPTIONAL attribute not support when utilized with the %<append_args%> clause at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9796
  #, gcc-internal-format
  msgid "%qs at %L has %d but requires %d %<omp_interop_kind%> kind dummy arguments as it is utilized with the %<append_args%> clause at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9811
  #, gcc-internal-format
  msgid "the %qs clause can only be specified if the %<dispatch%> selector of the construct selector set appears in the %<match%> clause at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9912 fortran/trans-openmp.cc:9951
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument missing after %s"
  msgid "Expected positive argument index at %L"
  msgstr "en parameter mangler efter %s"
  
! #: fortran/trans-openmp.cc:9923
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Array `%A' at %0 is too large to handle"
  msgid "Argument index at %L exceeds number of arguments %d"
  msgstr "Tabellen '%A' ved %0 er for stor til at hÃ¥ndtere"
  
! #: fortran/trans-openmp.cc:9961
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper argument index smaller than lower one at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9987
  #, fuzzy, gcc-internal-format
  #| msgid "Alternate return specifier at %0 invalid within a main program unit"
  msgid "List item %qs at %L, declared at %L, is not a dummy argument"
  msgstr "Alternativ returangivelse ved %0 er ugyldig inden i en hovedprogramenhed"
  
! #: fortran/trans-openmp.cc:10001
  #, fuzzy, gcc-internal-format
  #| msgid "Null argument at %0 for statement function reference at %1"
  msgid "Argument %qs at %L to list item in %<need_device_ptr%> at %L must be a scalar of TYPE(C_PTR)"
  msgstr "Nulparameter ved %0 for sÃ¦tningsfunktionsreference ved %1"
  
! #: fortran/trans-openmp.cc:10008
  #, gcc-internal-format
  msgid "Consider using %<need_device_addr%> instead"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10015
  #, gcc-internal-format
  msgid "Argument %qs at %L to list item in %<need_device_addr%> at %L must not have the VALUE attribute"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10024
  #, gcc-internal-format
  msgid "%qs at %L is specified more than once"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10041
  #, fuzzy, gcc-internal-format
  #| msgid "-pipe is not supported"
  msgid "%<need_device_addr%> not yet supported"
--- 92157,92338 ----
  msgid "Mapping of polymorphic list item %qD is unspecified behavior"
  msgstr ""
  
! #: fortran/trans-openmp.cc:4196
  #, fuzzy, gcc-internal-format
  #| msgid "no arguments"
  msgid "optional class parameter"
  msgstr "ingen parametre"
  
! #: fortran/trans-openmp.cc:4660
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "unhandled expression type"
  msgstr "uventet adresseudtryk"
  
! #: fortran/trans-openmp.cc:4969
  #, fuzzy, gcc-internal-format
  #| msgid "unexpected address expression"
  msgid "unhandled expression"
  msgstr "uventet adresseudtryk"
  
! #: fortran/trans-openmp.cc:5092
  #, gcc-internal-format
  msgid "%<uses_allocators%> clause with traits and memory spaces"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6070
  #, gcc-internal-format
  msgid "%<!$OMP %s%> at %L requires %<-fopenmp-allocators%>"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6073
  #, gcc-internal-format
  msgid "All files that might deallocate such a variable must be compiled with %<-fopenmp-allocators%>"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6076
  #, gcc-internal-format
  msgid "This includes explicit DEALLOCATE, reallocation on intrinsic assignment, INTENT(OUT) for allocatable dummy arguments, and reallocation of allocatable components allocated with an OpenMP allocator"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6653 fortran/trans-openmp.cc:6673
  #, gcc-internal-format
  msgid "non-rectangular loop nest with non-constant step for %qs"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6675
  #, fuzzy, gcc-internal-format
  #| msgid "`%s' previously defined here"
  msgid "Used here"
  msgstr "'%s' tidligere defineret her"
  
! #: fortran/trans-openmp.cc:9241
  #, gcc-internal-format
  msgid "gfc_trans_omp_workshare(): Bad statement code"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9651
  #, gcc-internal-format
  msgid "The base name for %<declare variant%> must be specified at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9662
  #, fuzzy, gcc-internal-format, gfc-internal-format
  msgid "The base name at %L does not match the name of the current procedure"
  msgstr "PlanlÃ¦g ikke begyndelsen og slutningen af proceduren"
  
! #: fortran/trans-openmp.cc:9665
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument to `%s' must be a 2-bit unsigned literal"
  msgid "The base name at %L must not be an entry name"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant uden fortegn"
  
! #: fortran/trans-openmp.cc:9668
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument to `%s' must be a 2-bit unsigned literal"
  msgid "The base name at %L must not be a generic name"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant uden fortegn"
  
! #: fortran/trans-openmp.cc:9671
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument to `%s' must be a 2-bit unsigned literal"
  msgid "The base name at %L must not be a procedure pointer"
  msgstr "parameter til '%s' skal vÃ¦re en 2 bit-konstant uden fortegn"
  
! #: fortran/trans-openmp.cc:9674
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "`%D' must take exactly one argument"
  msgid "The base procedure at %L must have an explicit interface"
  msgstr "'%s' skal tage mod Ã©n parameter"
  
! #: fortran/trans-openmp.cc:9710
  #, fuzzy, gcc-internal-format
  #| msgid "failed to find class '%s'"
! msgid "Cannot find symbol %qs at %L"
  msgstr "kunne ikke finde klassen '%s'"
  
! #: fortran/trans-openmp.cc:9723
  #, fuzzy, gcc-internal-format
  #| msgid "`%D' is not a function,"
  msgid "variant %qs at %L is not a function or subroutine"
  msgstr "'%s' er ikke en funktion,"
  
! #: fortran/trans-openmp.cc:9765
  #, fuzzy, gcc-internal-format
  #| msgid "-f%s and -msdata=%s are incompatible"
  msgid "variant %qs and base %qs at %L have incompatible types: %s"
  msgstr "-f%s og -msdata=%s er indbyrdes uforenelige"
  
! #: fortran/trans-openmp.cc:9771
  #, gcc-internal-format
  msgid "%<append_args%> clause implies that %qs has %d dummy arguments of integer type with %<omp_interop_kind%> kind"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9797
  #, gcc-internal-format
  msgid "%qs at %L must be a nonpointer, nonallocatable scalar integer dummy argument of %<omp_interop_kind%> kind as it utilized with the %<append_args%> clause at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9807
  #, gcc-internal-format
  msgid "%qs at %L with OPTIONAL attribute not support when utilized with the %<append_args%> clause at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9817
  #, gcc-internal-format
  msgid "%qs at %L has %d but requires %d %<omp_interop_kind%> kind dummy arguments as it is utilized with the %<append_args%> clause at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9832
  #, gcc-internal-format
  msgid "the %qs clause can only be specified if the %<dispatch%> selector of the construct selector set appears in the %<match%> clause at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9933 fortran/trans-openmp.cc:9972
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "argument missing after %s"
  msgid "Expected positive argument index at %L"
  msgstr "en parameter mangler efter %s"
  
! #: fortran/trans-openmp.cc:9944
  #, fuzzy, gcc-internal-format, gfc-internal-format
  #| msgid "Array `%A' at %0 is too large to handle"
  msgid "Argument index at %L exceeds number of arguments %d"
  msgstr "Tabellen '%A' ved %0 er for stor til at hÃ¥ndtere"
  
! #: fortran/trans-openmp.cc:9982
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper argument index smaller than lower one at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10008
  #, fuzzy, gcc-internal-format
  #| msgid "Alternate return specifier at %0 invalid within a main program unit"
  msgid "List item %qs at %L, declared at %L, is not a dummy argument"
  msgstr "Alternativ returangivelse ved %0 er ugyldig inden i en hovedprogramenhed"
  
! #: fortran/trans-openmp.cc:10022
  #, fuzzy, gcc-internal-format
  #| msgid "Null argument at %0 for statement function reference at %1"
  msgid "Argument %qs at %L to list item in %<need_device_ptr%> at %L must be a scalar of TYPE(C_PTR)"
  msgstr "Nulparameter ved %0 for sÃ¦tningsfunktionsreference ved %1"
  
! #: fortran/trans-openmp.cc:10029
  #, gcc-internal-format
  msgid "Consider using %<need_device_addr%> instead"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10036
  #, gcc-internal-format
  msgid "Argument %qs at %L to list item in %<need_device_addr%> at %L must not have the VALUE attribute"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10045
  #, gcc-internal-format
  msgid "%qs at %L is specified more than once"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10062
  #, fuzzy, gcc-internal-format
  #| msgid "-pipe is not supported"
  msgid "%<need_device_addr%> not yet supported"
*************** msgid "unused name %qE"
*** 94112,94118 ****
  msgstr "ubenyttet parameter '%s'"
  
  #: rust/resolve/rust-ast-resolve-expr.cc:134
! #: rust/resolve/rust-late-name-resolver-2.0.cc:268
  #, gcc-internal-format, gfc-internal-format
  msgid "are you trying to break %s? how dare you?"
  msgstr ""
--- 94208,94214 ----
  msgstr "ubenyttet parameter '%s'"
  
  #: rust/resolve/rust-ast-resolve-expr.cc:134
! #: rust/resolve/rust-late-name-resolver-2.0.cc:270
  #, gcc-internal-format, gfc-internal-format
  msgid "are you trying to break %s? how dare you?"
  msgstr ""
*************** msgstr ""
*** 96236,96241 ****
--- 96332,96342 ----
  #~ msgstr "ugyldig operation pÃ¥ uudskiftet type"
  
  #, fuzzy, gcc-internal-format
+ #~| msgid "cannot find file for class %s"
+ #~ msgid "cannot specify %<override%> for a class"
+ #~ msgstr "kan ikke finde filen for klassen %s"
+ 
+ #, fuzzy, gcc-internal-format
  #~ msgid "a requires expression cannot appear outside a template"
  #~ msgstr "overlÃ¸b i konstant udtryk"
  
*************** msgstr ""
*** 105020,105025 ****
--- 105121,105129 ----
  #~ msgid "%s: illegal option -- %c\n"
  #~ msgstr "%s: ugyldigt tilvalg -- %c\n"
  
+ #~ msgid "%s: invalid option -- %c\n"
+ #~ msgstr "%s: ugyldigt tilvalg -- %c\n"
+ 
  #~ msgid "%s: option requires an argument -- %c\n"
  #~ msgstr "%s: tilvalget skal have en parameter -- %c\n"
  
diff -Nrcpad gcc-15.2.0/gcc/po/de.gmo gcc-15.3.0/gcc/po/de.gmo
*** gcc-15.2.0/gcc/po/de.gmo	Fri Aug  8 07:10:00 2025
--- gcc-15.3.0/gcc/po/de.gmo	Fri Jun 12 06:28:38 2026
***************
*** 1,1856 ****
! Þ•¯B”ñX+ÐŽÑŽ¨ÓŽ-|�1ª�Ü� ñ��Û&�+‘0.‘K_‘«‘Á‘
! Í‘Ø‘Hî‘H7’€’”“ª”<³”Bð”R3•>†•@Å•9–C@–F„–5Ë–I—K—!`—$‚—§—!¼—$Þ— ˜"$˜+G˜s˜z˜-�˜#¯˜”Ó˜h™ˆ™Ž™­™(Ç™1ð™A"š'dšŒš¤š¿šÜšñš›&›>›&Z›$�›¦›Ä›Û›û›[œ]pœÎœéœ�"�=�Z�y�“�©�Å�Ú�$ö�ž ;ž#\ž!€ž"¢žÅžãžúž'Ÿ(@Ÿ+iŸ)•Ÿ$¿Ÿ'äŸ* 7 %V 1| ® *Ë -ö &$¡)K¡u¡,•¡#Â¡Fæ¡Q-¢5¢]µ¢w£r‹£Aþ£K@¤,Œ¤N¹¤@¥�I¥BÚ¥O¦Lm¦Rº¦;
§8I§>‚§IÁ§I¨BU¨~˜¨?©DW©Eœ©@â©C#ªEgª7­ª�åªCs«=·«Bõ«E8¬~~¬6ý¬{4­B°­?ó­‰3®9½®P÷®CH¯FŒ¯sÓ¯EG°C�°QÑ°N#±�r±G²ŒK²OØ²R(³C{³Q¿³N´F`´9§´=á´=µ4]µP’µMãµE1¶Bw¶Gº¶I·HL·B•·=Ø·7¸6N¹*…¹°¹ Í¹Yî¹-Hº'vºEžº
! äº'ïº8»>P»�»(¡»/Ê»ú»+¼Z/¼lŠ¼+÷¼=#½)a½ ‹½¬½;¼½Eø½%>¾d¾{¾#”¾#¸¾Ü¾ ó¾¿)2¿\¿|¿$—¿$¼¿*á¿*À7ÀRÀ mÀŽÀ¨À´À#ÅÀéÀ8Á;9ÁEuÁ‘»ÁMÂ1lÂ.žÂÍÂ0ëÂLÃ7iÃG¡Ã$éÃÄ*-ÄEXÄEžÄläÄQÅ3mÅ@¡ÅâÅ5úÅ0Æ9ÆPÆ oÆ&�ÆJ·Æ8ÇU;Ç‘Ç:°ÇëÇþÇ-È?ÈINÈ˜È@žÈ/ßÈ@É;PÉ#ŒÉZ°ÉcÊOoÊl¿Ê8,ËdeËTÊËvÌ9–ÌfÐÌQ7ÍK‰ÍLÕÍS"Î^vÎDÕÎ4ÏQOÏQ¡ÏHóÏ5<ÐHrÐI»ÐYÑ,_Ñ*ŒÑ6·ÑAîÑ30ÒLdÒ¤±Ò�VÓ·æÓVžÔrõÔihÕWÒÕX*Ö—ƒÖ‘×c­×=ØOØeØ6uØ¬Ø!ÌØ#îØ#Ù6Ù.IÙxÙ •Ù¶ÙÉÙ9ÛÙ;ÚQÚ!lÚVŽÚ3åÚ;Û"UÛ"xÛn›Û3
! Ü>ÜXÜ-gÜ6•Ü,ÌÜ3ùÜ<-Ý/jÝ>šÝ-ÙÝJÞ2RÞ8…Þ/¾Þ&îÞ6ß,LßPyßHÊß8à-LàxzàeóàBYá?œáFÜá3#â9Wâ2‘â-Äâ0òâ_#ãVƒãZÚãE5äA{ä½ä*ÕäCåHDåF�åJÔå@æp`æGÑæEçA_çq¡çgès{èiïèAYéQ›éwíé[eêbÁêY$ëi~ëoèë<Xì\•ìUòìHí[ÈíO$îDtî^¹î>ï?WïN—ï;æïo"ðp’ðJñlNñI»ñ{òR�òkÔòK@ó?ŒóQÌóMô_lôIÌô7õ9Nõ&ˆõ9¯õ7éõ6!öXö
xö<†ö(Ãö*ìö:÷:R÷#�÷W±÷G	øYQøZ«ø\ù¬cùÌú^Ýún<ûf«ûvüe‰üuïü\eýlÂýJ/þ:zþLµþžÿ¾¡ÿW`g¸_ o€^ðnOU¾e)z%¤|ÊœGFäV+N‚^ÑM0]~DÜT! v!—7¹Fñ 8:Y&”4»ð-		7	#S	 w	˜	.±	0à	7
! !I
! fk
! 4Ò
! =LEN’Eá?'<g8¤4ÝN
@a
-¢
(Ð
,ù
&& Mn‰0žHÏ(SA?•_Õ=5[s<Ï?$/d#”:¸]ó$Q&v-�?Ë64B4w2¬-ß5
ˆCPÌ'3Ey?™8Ù1-_5z*°RÛj.&™&À%ç*
O8>ˆ7Ç6ÿ;6fr9Ù;@O9�<Ê5B=;€+¼Bè7+FcFª1ñ?#;cRŸ0ò4#1X=Š%È>î;-pi!Ú%üA" 9d 'ž +Æ 5ò T(!,}!:ª!)å!J"?Z"(š"0Ã">ô"<3#Up#PÆ#H$.`$;�$gË$Š3%)¾%*è%4&<H&-…&G³&/û&+'F'8a'8š'RÓ'@&(Tg(E¼(U)EX)Mž)*ì)'*8?*Zx*4Ó*&+v/+l¦+m,B�,9Ä,=þ,7<-Zt-NÏ-8.@W.A˜.?Ú.h/&ƒ/5ª/yà/mZ0QÈ0818S13Œ1jÀ1n+24š2)Ï21ù29+3e3?|3>¼3Hû3hD4;­4Hé4\25!�5<±56î55%6,[64ˆ67½6:õ6;07!l7:Ž76É7=85>8jt8ß8'ý8Q%9:w9<²90ï94 :,U:4‚:,·:<ä:;!;+];‰;5§;!Ý;*ÿ;6*<2a<*”<6¿<Lö<]C=V¡=Rø==K>X‰>/â>4?4G?,|?Q©?=û?&9@&`@2‡@3º@ºî@:©ATäA+9B4eB4šB>ÏB0C-?CFmCE´C3úC/.D/^D@ŽD)ÏD)ùD#E=EFWEEžE<äE3!FKUF!¡F\ÃF! G-BG-pGCžG.âGFHXH8uH,®H@ÛHBI>_IfžIEJ!KJ!mJ'�JB·J5úJ90K@jKB«KjîK(YL3‚L1¶L:èLb#M1†M.¸M8çM5 N;VN/’N/ÂN/òN/"O+RO*~O©OJÈOP°1P­âP1�QÇÂQDŠR*ÏR*úR/%SMUS3£S4×S@T0MT@~T?¿T:ÿT;:U8vU&¯U-ÖU,V'1V(YV)‚VW¬V4W(9W"bW#…WB©W2ìW5X1UX‡X)žX1ÈX=úX?8YDxYE½YDZEHZ2ŽZ_ÁZ)![:K[8†[<¿[/ü[/,\"\\*\Iª\4ô\C)]Hm]1¶]3è]^-4^Cb^:¦^2á^-_OB_(’_=»_ù_1`J`$i`2Ž`Á`Ø`õ`Ua-ja.˜a7Ça3ÿa?3b?sb1³bbåb1Hc:zc0µc+æcAd.Td*ƒd2®d%ád2e1:e0le9�e1×e2	f1<f+nf,šf3Çf.ûfD*g7og$§g+ÌgøgNh;ch6Ÿh'ÖhUþhKTiG ièi8ÿi;8j9tja®j9kNJkB™kBÜk0l�Pl@álB"m;emJ¡m^ìm^Knªn-Én'÷nLoDlo7±o+éo$p0:p*kpA–p6Øp3q$Cq6hq*Ÿq.Êq9ùq3r,Sr0€r5±r,çr.s0Cs%ts7šs&ÒsCùs:=txtN•t/ät6uCKu@�u%ÐuBöu$9v^vK|v*Èv'óvw'9w0aw’w"­w?Ðw x#1x0Ux(†x?¯xFïx:6y/qy$¡yaÆyY(z.‚ze±z1{3I{H}{+Æ{"ò{1|>G|4†|)»|4å|$}/?}9o}1©}ÀÛ}5œ~<Ò~EMU@£Dä1)€P[€‚¬€V/�4†�E»�G‚9I‚Kƒ‚VÏ‚L&ƒ/sƒ1£ƒEÕƒ6„3R„@†„eÇ„?-…/m…=�…iÛ…LE†C’†5Ö†X‡<e‡C¢‡3æ‡0ˆ7KˆƒˆEšˆ2àˆ+‰+?‰>k‰-ª‰>Ø‰Š6ŠUŠ<mŠEªŠ<ðŠ;-‹Ei‹F¯‹6ö‹I-ŒSwŒXËŒ7$�W\�.´�>ã�"Ž&>ŽeŽ~Ž$�Ž#ÂŽ8æŽT�-t�m¢�\�2m�Z �7û�]3‘5‘‘EÇ‘Q
’B_’c¢’i“mp“Þ“'ý“+%”,Q”@~”*¿”Xê”4C•)x•6¢•9Ù•*–L>–*‹–6¶–*í–C—F\—?£—Xã—@<˜!}˜*Ÿ˜%Ê˜ð˜@™C™oU™0Å™1ö™E(š3nš5¢š(Øš)›0+›M\› ª›!Ë›Bí›!0œBRœF•œ8Üœg�`}�KÞ�U*žL€ž_ÍžJ-Ÿ;xŸ.´Ÿ/ãŸ8 L 0g 0˜ @É ,
! ¡R7¡VŠ¡Qá¡U3¢9‰¢)Ã¢Qí¢l?£a¬£A¤4P¤2…¤Z¸¤P¥id¥tÎ¥"C¦Mf¦<´¦Bñ¦=4§Gr§Kº§n¨`u¨/Ö¨-©=4©r©9Ž©VÈ©4ª0Tª?…ªAÅªT«?\«Cœ«,à«U
¬4c¬W˜¬/ð¬& ­$G­"l­%�­"µ­:Ø­G®)[®X…®/Þ®¯H-¯)v¯J ¯Bë¯1.°Q`°.²°/á°N±E`±K¦±ò±O²Ha²Fª²Eñ²87³Hp³1¹³,ë³"´8;´=t´@²´?ó´23µ3fµ"šµ&½µIäµ1.¶#`¶C„¶eÈ¶&.·/U·4…·.º·&é·+¸:<¸w¸E‰¸/Ï¸ ÿ¸A ¹b¹&€¹'§¹(Ï¹#ø¹+º&Hº7oºB§ºHêº(3»Y\»%¶»=Ü»H¼)c¼$�¼%²¼:Ø¼]½7q½$©½<Î½6¾GB¾,Š¾G·¾*ÿ¾,*¿8W¿<�¿1Í¿.ÿ¿.ÀNNÀ1�ÀJÏÀEÁ0`Á€‘ÁlÂ2Âj²ÂIÃOgÃ5·Ã@íÃ..Ä^]Ä+¼ÄBèÄ5+Å(aÅfŠÅkñÅ|]Æ>ÚÆ2ÇMLÇ'šÇ"ÂÇ&åÇ<È+IÈ#uÈ™È¸ÈUØÈ_.É^ŽÉMíÉE;Ê8�Ê-ºÊ;èÊG$ËlË,ŠË'·Ë&ßËTÌ.[ÌFŠÌKÑÌMÍ)kÍ!•ÍG·Í$ÿÍ9$Î$^Î&ƒÎ5ªÎ>àÎKÏ¢kÏ'Ð76Ð7nÐ5¦Ð?ÜÐLÑFiÑJ°ÑPûÑLÒ\Ò(xÒ5¡Ò3×ÒiÓ%uÓ?›ÓÛÓêÓ	Ô$Ô4?ÔtÔƒÔB ÔLãÔB0Õ6sÕ,ªÕ=×Õ^ÖbtÖ™×Ö’q×zØYØIÙØO#Ù?sÙE³ÙùÙ Ú$2Ú4WÚ(ŒÚ'µÚ:ÝÚJÛ/cÛ+“Û,¿Û)ìÛ,ÜDCÜ1ˆÜ9ºÜAôÜ*6Ý3aÝ8•ÝÎÝJìÝK7Þ©ƒÞ6-ß<dß'¡ß-ÉßE÷ßK=àH‰à/ÒàHáKáKeáS±á.âJ4â@â!ÀâBââ8%ã3^ã3’ãRÆã(ä#Bä-fä:”ä/ÏäWÿäIWå0¡åJÒå`æZ~æ?ÙæXç-rçX çKùçSEè~™è”é0­éEÞé.$ê;Sê:�êÊê?çê3'ë2[ë<Žë,Ëë5øëk.ì*šì1Åìw÷ì3oí2£í,Öí7î3;î'oî(—î^Àî=ï=]ïC›ïGßïo'ð5—ð0Íð;þð(:ñ<cñ3 ñ(Ôñ?ýñ+=ò5iò4Ÿò2Ôò,ó'4óD\ó5¡ó)×ó(ô%*ô2PôQƒôoÕôIEõ)�õ!¹õXÛõ(4ö]ö+|öJ¨ö)óö:÷3X÷=Œ÷!Ê÷9ì÷p&ø8—ø/Ðø$ù%%ù+KùEwù\½ùbú2}ú[°ú[û-hû(–û¿û"Øû/ûû%+ü6Qü/ˆü#¸ü/Üü<ý.Iý0xý7©ý$áý5þ3<þ9pþ=ªþGèþ0ÿ*Pÿ%{ÿ¡ÿ¼ÿ'Úÿ@CIZlw,ä*/<,l™¶Ç
! ã#î*.=l(&¨"ÏJò=\u+•FÁMJVj¡N([„+¤pÐA#S%w4�Òãþ+9e?€=À>þA=vöF	SZ	/®	-Þ	
! *
! @H
! ‰
!  �
! ¾
! :Õ
! 99J"„3§!Ûý)*@0k9œ#Ö$úA
a
"{
#ž
-Â
3ð
/$T,f<“FÐ*2.]+Œ4¸7íS%Gy:Á%ü!"*Do‹,¨-Õ5œ9ªÖJ�KÌ¨¸ÁXzfÓK:L†´Ó¨ˆ\1dŽ<óÄ0¸õd®l€€=>?(~1§2Ù5,B*o2š)Í,÷/$oTkÄ00Xa]ºa $z Ÿ W¿ -!#E!Ei!F¯!4ö!F+"/r"D¢".ç"$#V;#’#*­#Ø#0ê#=$Y$ q$!’$ ´$1Õ$D%EL% ’%D³%{ø%0t&6¥&)Ü&#''*'"R'&u'œ'#¼''à'"(6+(-b(�(0¢("Ó("ö(/)]I)5§)cÝ)A*Z*0k*Kœ*'è*/+.@+o+‘�+'!, I,0j,%›,ZÁ,5-<R-�-&¯-3Ö-O
! .FZ.&¡.&È.ï.#
/1/N/m/H…/Î/[ì/<H0=…0=Ã0 1$"1:G11‚10´1Bå1;(2?d2?¤2ä2ý23130D34u3`ª3S4_4$~4£4#Á4'å4$
5256Q5Dˆ5Í5 ë56646%S6y6%ˆ6®6$Å6ê6
! 7!"7D7c7‚7-�7Ë7-æ7%8:8.V8…8£83Ã8÷8
9,9]>9œ9+²9,Þ9/:#;:0_:/�:#À:ä:,;0;D;,c;F�;@×;?<6X<?�<VÏ<K&=Wr=<Ê=>">64>k>A‹>+Í>+ù>%?8?O?-i?.—?6Æ?=ý?P;@Œ@!ª@*Ì@-÷@.%A6TA=‹A.ÉA/øA7(B>`BRŸB\òBcOC9³C=íC+D!ID(kDL”DHáD *E5KE)�E)«E"ÕE#øEF.7FfFKvFSÂFYGJpG@»GqüGnH+�HG¹H>I@@I��IYJºlJ]'K‚…KRL2[LTŽL,ãL-M5>M<tMR±M$N()N=RNI�N#ÚN!þN. O>OOŽO¥O;¿O(ûO$PY?P.™PMÈP=QNTQ.£Q+ÒQ2þQ51R-gR5•R8ËR0S55S@kSK¬SNøS7GT8T;¸T3ôT;(U>dU6£UGÚU@"VPcVU´Vb
! W4mW7¢WCÚWFX(eX ŽX‚¯X‚2YµYCÎYZ1Z#QZ(uZ0žZ5ÏZ[["*["M[}p[5î[2$\ W\)x\j¢\6
]4D]y]F—]GÞ]O&^^v^~Õ^VT_?«_Oë_Q;`M�`NÛ`3*a>^aK�a9éaE#bGib8±bPêbC;cJc1Êc2üc5/d*ed)�dCºdfþd_eeÅe1äef0f<Of-Œf6ºf2ñf1$g3Vg5Šg7Àg2øg'+hISh-�h4Ëh6i)7i&ai$ˆiJ­iNøiPGj>˜j[×j@3k%tk5škEÐk,l1Cl%ulG›lQãlA5m)wm#¡m!Åm0çmLn,en%’n.¸n1çn2oGLoK”o,àoM
p,[p;ˆpXÄp=q<[qO˜qZèq<Cr.€r5¯r8år<s*[s†s)¦s%Ðs)ös) tJtct}t<™t3Öt0
! u;uGQu9™u3Óu4v-<vjv+ˆv"´vQ×v1)wA[wU�w(ów!x,>xkx/Šx*ºxEåxB+y7ny/¦yKÖy'"z2Jz=}zB»z@þz7?{-w{-¥{3Ó{.|(6|(_|*ˆ|@³|+ô|8 }.Y})ˆ}1²}Gä}K,~Jx~3Ã~,÷~K$&p,—"Ä=ç,%€'R€1z€>¬€#ë€'�97�0q�'¢�3Ê�!þ�- ‚.N‚5}‚0³‚/ä‚(ƒ1=ƒ)oƒ*™ƒ3ÄƒOøƒ6H„ „0 „2Ñ„-… 2…?S…+“….¿…-î…+†H† Z†{†\™†/ö†'&‡N‡+g‡,“‡5À‡1ö‡+(ˆ*Tˆˆ*–ˆ'Áˆ$éˆ*‰09‰(j‰“‰,­‰]Ú‰;8Š_tŠ0ÔŠ)‹ /‹2P‹Eƒ‹)É‹<ó‹"0Œ'SŒ{ŒY–Œ-ðŒ+�J�\�vr�;é�F%ŽlŽ„Ž¤Ž-ÀŽ îŽS�Mc�R±�Z�O_�G¯�÷�
‘$‘XD‘1�‘\Ï‘L,’Iy’MÃ’K“Z]“k¸“K$”Zp”dË”+0•,\•/‰•#¹•0Ý•/–#>–-b–,�–&½–ä–<û–8—.O—3~—+²—IÞ— (˜;I˜H…˜>Î˜H
™V™i™€™š™¸™7Ø™0š?Aš�š, š#Íš,ñš›;›V›'q›™›±›)Î›"ø›4œ$Pœ8uœ®œ(ÇœfðœW�+t�J �;ë�$'žCLž<�ž5Íž*Ÿ..Ÿ]ŸFwŸ-¾ŸìŸ" i( ’ +¥ >Ñ '¡:8¡s¡Š¡¦¡¿¡Ú¡ô¡5¢=<¢)z¢¤¢º¢Õ¢ð¢0£0<£m£.£1®£1à£,¤6?¤Cv¤º¤-Ò¤0¥01¥$b¥&‡¥G®¥2ö¥')¦Q¦Ep¦-¶¦'ä¦5§4B§.w§<¦§Kã§#/¨S¨.o¨Nž¨Kí¨+9©e©…©A¤©æ©"ª)ªBªbª-zª)¨ªÒª)òª« 7«#X«|«’«V­«¬$$¬I¬2h¬›¬?´¬&ô¬­2­.J­5y­¯­_Ê­'*®R®,o®9œ®*Ö®+¯-¯1¯Q¯-n¯Aœ¯"Þ¯"°$°GA°D‰°)Î°Eø°">±/a±0‘±GÂ±
! ²!%²G²g²"‡²1ª²6Ü²$³88³8q³dª³O´=_´C�´Há´,*µBWµ.šµ4Éµ7þµ36¶@j¶;«¶Hç¶T0·G…·?Í·W
¸Ee¸;«¸5ç¸A¹W_¹6·¹9î¹;(ºTdº4¹º6îº4%»LZ»8§»<à»=¼>[¼?š¼ZÚ¼I5½A½=Á½6ÿ½66¾:m¾4¨¾@Ý¾I¿<h¿N¥¿?ô¿Q4À8†ÀB¿ÀKÁuNÁ5ÄÁsúÁOnÂO¾ÂIÃ8XÃ9‘Ã<ËÃFÄ:OÄFŠÄGÑÄGÅIaÅ*«Å=ÖÅ/Æ.DÆAsÆµÆDÑÆHÇ“_Ç&óÇWÈ`rÈbÓÈ/6ÉLfÉ‚³ÉA6Ê=xÊl¶ÊV#Ë)zËf¤ËÌÎ"ÌiñÌ[ÍtÍ#�Í%´ÍoÚÍ%JÎžpÎ)Ï59ÏHoÏ¸Ï=ÖÏSÐEhÐ:®Ð<éÐ>&Ñ:eÑ> Ñ=ßÑOÒ@mÒE®Ò*ôÒÓ >ÓH_Óa¨Ó7
! ÔBÔ)bÔŒÔ)¢ÔBÌÔBÕ:RÕ'�Õ0µÕ6æÕ2Ö*PÖ*{ÖG¦ÖKîÖ>:×.y×%¨×2Î×:Ø:<Ø1wØ(©ØÒØ.êØ#Ù"=Ù;`Ù(œÙ+ÅÙ%ñÙ:Ú)RÚ=|Ú0ºÚëÚB
! ÛHMÛR–ÛGéÛt1Ü,¦Ü0ÓÜ/Ý.4Ý"cÝ+†Ý-²Ý+àÝ~Þ�‹Þ!ß =ß&^ßÂ…ß¡HàWêàIBá Œá ­á%Îá+ôá' â#Hâ$lâ‘â+±â1Ýâ/ã?ã;_ã
! ›ãI¦ãAðã"2ä1Uä"‡äFªädñäUVåi¬åPægæ'sæ›æ®æ3¿æ4óæ\(çO…ç5Õç{èK‡è<Óèé6)é`é<qéP®é?ÿé1?ê'qê#™êO½ê+
ë&9ë'`ë•ˆë!ì8@ìmyì4çì(í<Eí(‚í«í*¼í-çíPîhfîÏî:áî3ï$Pï9uï/¯ïßï8üï05ð-fðC”ð'ØðRñNSñD¢ñFçñB.òJqòH¼ò>ó@Dó<…ó8Âóûóô0ô?LôDŒô'Ñô@ùô :õ@[õ œõ-½õëõö*$ö+Oö{ö ˜öa¹ö$÷#@÷3d÷*˜÷-Ã÷#ñ÷ø.3ø-bø�øU©øAÿøAù,[ù&ˆùB¯ù¢òù"•ú+¸ú+äú+û<û-ZûXˆû+áû5
ü#Cügüp�üòü'ý:ý#Vý'zý¢ý¸ýOÔý!$þ"Fþ3iþM�þ ëþ5ÿGBÿ9ŠÿÄÿ%Øÿþÿo&‰5°æ÷-=7V,Ž »+Ü'"0!S5u$«Ð<ì7),a5Ž@ÄKNQ# Ä!ä%#,PPV¡/ø(Hf#}0¡>Ò(')Pz–³Ê!Üþ./:^Q™ë			1=	#o	0“	&Ä	
ë	ù	
  
! 
! 
! .!
! P
! X
! `
! $t
! >™
! 0Ø
! #	>-=l-ª=Ø1H(O,x¥±ºØ2áK
K`
C¬
ð
9
! 2D9w<±î÷9Ng�#šO¾.5=9s5­ãfø'_8‡!À;â<0[4Œ>Á/K2b*•.À)ï&'@&h&�%¶#Ü'%((N w$˜ ½"Þ,2.a�* ,Ë.ø$'L*eX�Aé1+]u)‘»-ÛA	JK^–?õ?5)u8Ÿ3Ø5YBaœ6þ<5Dr2·Jê-5Fc4ª-ß4
/Br4’/Ç÷6ôI> Y 8y 0² 3ã 7!>O!$Ž!5³!,é!.",E"1r"3¤"2Ø"#6'#1^#$�#0µ#Bæ#)$70$h$ˆ$¤$#¸$Ü$ ü$+%I%P%a%r%†%˜%«%Ã%ß%ÿ%&%&:<&)w& ¡&Â&Já&C,'Cp'9´'î'+(:7(,r(Ÿ(½(4Ú(2)1B)Lt)JÁ)K*X*p*(�*,¹*Tæ*;+B+,I+
! v+�+(š+:Ã+þ+7,(S,|,$œ,$Á,æ,#ü,5 -V-j-z-)—-(Á-#ê-8.@G.1ˆ.6º.0ñ.#"//F/v/�/«/Ë/ç/'ð/0620
i0!w0 ™0'º0 â0$10(1Y1
t1 ‚1£1º1Ð1é122-02"^2!�2)£2CÍ2P3b3d3m3v3$33¤3Ø3ô3.41C4:u4>°4ï4555#5,5!55W5s5€5‰5–5Ÿ5¨5"±5Ô5Ý5ù56V6A]6BŸ6~â6°a7L8g_8Ç8{ç8gc9ŒË9UX:-®:GÜ:$;6D;n{;<ê;5'<,]<Š< <‰¬<^6=r•=o>x>
–>*¤><Ï>.?;?W?5t?
ª?€¸?9@/?@’o@(A++A.WA+†A-²A�àA]qB^ÏBZ.Cc‰C^íC€LDjÍDQ8E|ŠEnF3vFAªFkìF5XG'ŽG7¶G.îG5H3SH8‡H.ÀHïH[I“gIŒûIWˆJcàJGDKJŒKG×K©L+ÉL1õLJ'M5rM:¨M$ãM N¯)N+ÙNOO9OoRO)ÂO³ìO4 PNÕP.$Q>SQ<’QeÏQ;5R‘qR:S“>S'ÒSEúSW@T>˜TS×TY+UL…ULÒU¢V?ÂV@WQCW8•WbÎWB1XQtXEÆXOYs\YqÐYeBZa¨ZP
! [³[[P\Š`\lë\„X]VÝ]<4^5q^=§^¦å^|Œ_‰	`d“`}ø`qvaAèaK*b<vb0³b-äb8cLKcQ˜cBêcG-dQudHÇdIeZZeZµeLfV]fH´fDýfJBg?�g=ÍgBh�NhCÐhDi7Yi6‘iDÈiA
j*OjGzjMÂj�k9’kKÌk;l?TlE”l5ÚlHmbYm{¼mJ8nbƒnYænA@o9‚o1¼oBîoÑ1prqNvq9Åq6ÿqZ6r9‘riËr]5sX“s;ìsE(tQnt@Àt2uF4uX{ubÔuU7v[�v‡évMqwa¿w@!xVbx;¹xóõxYéyFCzHŠzSÓzN'{Hv{@¿{$|@%|Wf|9¾|Pø|lI}\¶}B~„V~TÛ~P0I�FËN€a€Hf�G¯�~÷�yv‚Lð‚`=ƒ:žƒbÙƒ@<„S}„RÑ„>$…:c…dž…Q†'U†*}†C¨†/ì†A‡L^‡6«‡Râ‡E5ˆC{ˆB¿ˆ_‰6b‰+™‰?Å‰@Š=FŠ:„ŠA¿ŠC‹GE‹2�‹7À‹?ø‹B8ŒZ{Œ^ÖŒL5�Z‚�@Ý�+Ž;JŽ.†Ž+µŽ°áŽI’�CÜ�) �MJ�7˜�7Ð�+‘A4‘Jv‘*Á‘*ì‘,’(D’7m’¥’1Ã’=õ’O3“*ƒ“r®“V!”x”y“”%
•I3•‹}•;	–TE–Oš–"ê–H
—DV—5›—[Ñ—K-˜By˜Q¼˜?™KN™?š™Ú™7÷™8/šuhšLÞši+›=•›:Ó›$œA3œ7uœ3­œ,áœ!�=0�#n�J’�IÝ�Q'ž-yž+§ž,ÓžUŸ³VŸs
!  q~ ‡ð þx¡ow¢yç¢Wa£V¹£Y¤#j¤BŽ¤UÑ¤Z'¥H‚¥¶Ë¥‚¦#š¦¾¦#×¦6û¦[2§>Ž§Í§Ââ§4¥¨?Ú¨©3&©Z©(f©�©0¨©Ù©4÷©!,ª"Nªqª!}ª
! Ÿªªª¹ªÍªÚªñª««!«	7«A«Q«`«l«‚«Ž«©«Ä«×«ä«ñ«¬¬(¬	;¬E¬R¬b¬r¬	…¬
! �¬%š¬XÀ¬Z­[t­\Ð­J-®Vx®NÏ®"¯7A¯Oy¯'É¯6ñ¯6(°U_°Jµ°3±F4±{±9˜±Ò±[ê±3F²z²“²°²@Ä²B³?H³-ˆ³0¶³Gç³G/´Ew´5½´,ó´ µ?7µ3wµc«µ5¶0E¶Ev¶)¼¶5æ¶P·Xm·Æ·+Ö·0¸H3¸\|¸$Ù¸+þ¸:*¹e¹A|¹@¾¹%ÿ¹%º?ºJ\º§º-ÄºPòºSC»w—»C¼'S¼7{¼5³¼?é¼=)½7g½:Ÿ½AÚ½G¾1d¾.–¾)Å¾:ï¾"*¿ M¿/n¿Hž¿Jç¿'2À>ZÀ™ÀEÁŽ_ÁyîÁPhÂX¹Â/ÃyBÃ=¼Ã1úÃq,ÄožÄ.Å0=ÅUnÅŸÄÅ=dÆU¢ÆOøÆgHÇe°ÇVÈWmÈWÅÈEÉBcÉJ¦É)ñÉ:Ê"VÊ)yÊ|£Ê Ël3Ë Ëâ¹ËBœÌ7ßÌ)Í#AÍeÍzÍ�Í¤Í'¹ÍáÍÿÍÎ$Î=Î+]Î#‰Î­Î/ÍÎ%ýÎ"#ÏFÏdÏ(~Ïh§Ï%ÐV6Ð]�ÐHëÐJ4Ñ0ÑF°Ñd÷Ñ?\ÒmœÒl
! ÓIwÓHÁÓC
! ÔHNÔG—ÔBßÔO"Õ(rÕK›Õ2çÕ6ÖlQÖe¾ÖM$×er×WØ×80Ø?iØU©ØmÿØ3mÙ2¡Ù*ÔÙ4ÿÙQ4Ú#†Ú+ªÚ1ÖÚ'Û50ÛVfÛm½Û{+Ü@§ÜnèÜ+WÝƒÝF¡Ý*èÝ'Þ&;Þ'bÞ@ŠÞ9ËÞSß#Yß!}ßJŸß>êßZ)à.„à³à%ÑàD÷àK<áˆá;¦á:âá^âK|â?Èâã;(ã0dã$•ã<ºã÷ã(ä<ä$ZäFä%Æä6ìä6#å)ZåV„åNÛåX*æGƒæ4Ëætç@uç:¶çñç9èOKèF›è/âè#é26é1iéH›é>äéh#ê1Œê/¾êMîêg<ë_¤ë\ìUaì>·ìJöìGAíG‰íRÑí6$î+[î.‡îh¶îOïKoï8»ïCôïS8ðdŒðQñð;CñBñIÂñXò\eò4Âò9÷òC1ó=uóC³ó6÷ó1.ô7`ôH˜ô3áô=õOSõ0£õ0Ôõ*ö!0ö3Rö<†ö*Ãö)îöP÷6i÷/ ÷0Ð÷/ø/1ø0aø8’ø5Ëø9ù9;ù6uù7¬ù.äù9ú-Mú:{ú<¶ú/óú>#û+bû(Žû.·û+æû8üBKü:ŽüÉüJçü2ýiGý±ý'Åýíýnþvþo‘þ,ÿM.ÿ
|ÿHŠ	-Ó	7	79	>q	G°	4ø	=-	Ok	»	;×	(	3<	 p	‘	m¯	'	;E	B�	9Ä	0þ	D/	Bt	D·	Bü	G?	G‡	?Ï		-	bJ	P­	6þ	55		5k		C¡		*å		[
! 	8l
! 	{¥
! 	¨!	XÊ	%#	I	$g	GŒ	)Ô	8þ	;7
	Rs
	+Æ
	9ò
	),	7V	RŽ	:á	A	8^	%—	)½	)ç	t	0†	3·	8ë	.$	9S	n�	Kü	%H	n	&Š	1±	7ã	?	%[	%�	$§	TÌ	2!	ÕT	**	1U	K‡	DÓ	A	+Z	&†	%­	$Ó	?ø	/8	h	J„	#Ï	.ó	1"	•T	tê	H_	9¨	[â	<>	G{	*Ã	)î	X	<q	#®	(Ò	/û	N+	Gz	)Â	Nì	2;	Mn	)¼	2æ	;	;U	1‘	Ã	0Ö	G	YO	´©	k^ 	:Ê 	M!	S!	Hl!	1µ!	dç!	BL"	C�"	{Ó"	RO#	N¢#	Bñ#	)4$	1^$	y�$	V
! %	=a%	SŸ%	Zó%	dN&	d³&	E'	B^'	C¡'	Cå'	)(	@:(	
{(	&‰(	3°(	Jä(	1/)	>a)	< )	BÝ)	1 *	6R*	'‰*	8±*	3ê*	8+	7W+	+�+	,»+	4è+	8,	9V,	S�,	>ä,	#-	'>-	,f-	;“-	4Ï-	B.	kG.	2³.	:æ.	*!/	/L/	%|/	¢/	!»/	Ý/	ù/	0	+.0	Z0	 x0	/™0	É0	
è0	:ö0	G11	Fy1	@À1	2	&2	@2	.[2	Š2	6 2	2×2	D
! 3	O3	l3	:�3	F¼3	E4	CI4	@�4	=Î4	J5	>W5	E–5	Ü5	Q\6	A®6	`ð6	'Q7	y7	;˜7	Ô7	;ä7	 8	18	@8	_8	.t8	£8	½8	I×8	<!9	5^9	5”9	3Ê9	þ9	(:	5G:	}:	*™:	#Ä:	è:	ñ:	þ:	.;	.L;	0{;	8¬;	å;	<	#<	EA<	N‡<	GÖ<	=	F7=	@~=	>¿=	<þ=	&;>	<b>	5Ÿ>	=Õ>	?	B3?	$v?	[›?	A÷?	_9@	c™@	Dý@	MBA	G�A	_ØA	88B	+qB	.�B	ÌB	èB	úB	C	5C	"SC	"vC	"™C	¼C	>ÔC	6D	.JD	\yD	9ÖD	KE	R\E	2¯E	5âE	;F	8TF	J�F	IØF	D"G	MgG	GµG	AýG	J?H	+ŠH	Y¶H	>I	HOI	9˜I	0ÒI	FJ	/JJ	,zJ	4§J	ÜJ	øJ	7K	DLK	E‘K	A×K	)L	CL	6cL	8šL	.ÓL	3M	66M	CmM	±M	<ÇM	>N	,CN	3pN	%¤N	>ÊN	<	O	FO	_O	]O	YÝO	Y7P	T‘P	%æP	9Q	5FQ	1|Q	5®Q	6äQ	FR	!bR	„R	Y—R	WñR	=IS	+‡S	+³S	/ßS	?T	AOT	‘T	¬T	ÇT	MÙT	o'U	9—U	KÑU	=V	O[V	>«V	PêV	8;W	tW	-“W	,ÁW	îW	<X	ADX	@†X	>ÇX	<Y	CY	5aY	8—Y	<ÐY	
Z	@&Z	+gZ	.“Z	ÂZ	:ßZ	7[	R[	2p[	(£[	Ì[	.ì[	\	!9\	+[\	+‡\	/³\	(ã\	2]	@?]	€]	!—]	7¹]	Eñ]	7^	
P^	^^	 m^	Ž^	£^	1Á^	1ó^	!%_	!G_	i_	"…_	¨_	f·_	(`	#G`	k`	 Š`	1«`	Ý`	%ê`	%a	(6a	_a	3{a	0¯a	*àa	)b	>5b	`tb	6Õb	?c	GLc	H”c	ZÝc	¯8d	Tèd	Q=e	T�e	fäe	oKf	V»f	Wg	1jg	Sœg	Gðg	F8h	Gh	QÇh	Li	$fi	#‹i	%¯i	*Õi	>j	?j	*Uj	€j	/™j	)Éj	8ój	C,k	pk	1Šk	7¼k	Eôk	7:l	:rl	^­l	m	5+m	5am	?—m	B×m	"n	0=n	6nn	v¥n	Wo	Uto	LÊo	4p	tLp	?Áp	"q	n$q	L“q	@àq	T!r	+vr	V¢r	Yùr	0Ss	 „s	¥s	8ºs	!ós	:t	_Pt	°t	Ít	 êt	u	*u	O?u	M�u	(Ýu	v	v	3v	Jv	 jv	!‹v	!­v	#Ïv	#óv	-w	Ew	\w	vw	)�w	X¹w	]x	Zpx	,Ëx	9øx	*2y	4]y	1’y	vÄy	r;z	L®z	Kûz	WG{	BŸ{	kâ{	EN|	Q”|	8æ|	=}	¡]}	 ÿ}	Q ~	/ò~	A"	jd	fÏ	36€	2j€	.�€	<Ì€		�	?�	K]�	$©�	(Î�	+÷�	E#‚	i‚	.~‚	*­‚	!Ø‚	6ú‚	71ƒ	#iƒ	c�ƒ	Oñƒ	7A„	#y„	7�„	#Õ„	9ù„	%3…	9Y…	%“…	K¹…	7†	9=†	%w†	K�†	_é†	KI‡	7•‡	^Í‡	r,ˆ	QŸˆ	eñˆ	OW‰	c§‰	)Š	<5Š	)rŠ	)œŠ	)ÆŠ	'ðŠ	B‹	[‹	*x‹	'£‹	'Ë‹	+ó‹	>Œ	I^Œ	"¨Œ	:ËŒ	G�	HN�	F—�	Þ�	;þ�	1:Ž	BlŽ	2¯Ž	MâŽ	C0�	+t�	ú �	›‘	'·‘	-ß‘	7
’	¯E’	 õ’	“	k5“	:¡“	¹Ü“	G–”	?Þ”	1•	9P•	?Š•	1Ê•	1ü•	[.–	!Š–	#¬–	OÐ–	) —	 J—	Jk—	0¶—	;ç—	##˜	'G˜	*o˜	:š˜	>Õ˜	#™	O8™	%ˆ™	?®™	*î™	:š	>Tš	“š	<«š	èš	0›	.2›	a›	#}›	¡›	°›	/Ï›	:ÿ›	O:œ	?Šœ	+Êœ	7öœ	@.�	,o�	<œ�	?Ù�	qž	9‹ž	6Åž	7üž	34Ÿ	3hŸ	%œŸ	ÂŸ	-ÔŸ	2 	(5 	>^ 	5� 	?Ó 	=¡	=Q¡	&�¡	L¶¡	Q¢	RU¢	K¨¢	Rô¢	*G£	.r£	5¡£	=×£	#¤	P9¤	<Š¤	&Ç¤	&î¤	L¥	b¥	*€¥	+«¥	)×¥	¦	L¦	9d¦	ž¦	%³¦	)Ù¦	6§	*:§	8e§	.ž§	,Í§	-ú§	-(¨	6V¨	�¨	*¬¨	*×¨	$©	3'©	O[©	*«©	OÖ©	l&ª	y“ª	u
«	:ƒ«	u¾«	D4¬	 y¬	'­	ˆB­	°Ë­	„|®	¬¯	¦®¯	ÎU°	)$±	hN±	4·±	Iì±	)6²	Z`²	7»²	3ó²	#'³	K³	J\³	(§³	"Ð³	"ó³	"´	 9´	 Z´	 {´	$œ´	$Á´	$æ´	"µ	".µ	"Qµ	)tµ	,žµ	)Ëµ	'õµ	9¶	OW¶	?§¶	,ç¶	*·	2?·	)r·	3œ·	3Ð·	R¸	4W¸	?Œ¸	lÌ¸	L9¹	K†¹	dÒ¹	?7º	Wwº	9Ïº	0	»	=:»	4x»	:­»	^è»	XG¼	n ¼	Y½	Wi½	\Á½	J¾	[i¾	DÅ¾	E
! ¿	vP¿	#Ç¿	$ë¿	#À	!4À	1VÀ	‰ˆÀ	Â	×"Ã	@úÃ	(;Ä	:dÄ	@ŸÄ	CàÄ	E$Å	jÅ	:ŠÅ	+ÅÅ	8ñÅ	M*Æ	SxÆ	kÌÆ	8Ç	MSÇ	:¡Ç	^ÜÇ	R;È	OŽÈ	ÞÈ	-ýÈ	C+É	FoÉ	g¶É	fÊ	^…Ê	PäÊ	X5Ë	(ŽË	=·Ë	MõË	 CÌ	dÌ	8€Ì	?¹Ì	BùÌ	<Í	SÍ	<gÍ	'¤Í	*ÌÍ	“÷Í	Z‹Î	PæÎ	"7Ï	8ZÏ	D“Ï	 ØÏ	2ùÏ	V,Ð	3ƒÐ	$·Ð	7ÜÐ	Ñ	;4Ñ	.pÑ	%ŸÑ	ÅÑ	ßÑ	*öÑ	:!Ò	*\Ò	q‡Ò	8ùÒ	.2Ó	DaÓ	q¦Ó	9Ô	"RÔ	JuÔ	9ÀÔ	8úÔ	3Õ	,NÕ	{Õ	2”Õ	5ÇÕ	9ýÕ	:7Ö	*rÖ	 �Ö	!¾Ö	!àÖ	6×	D9×	4~×	,³×	*à×	1Ø	=Ø	]Ø	;xØ	6´Ø	3ëØ	.Ù	$NÙ	,sÙ	? Ù	-àÙ	,Ú	9;Ú	auÚ	<×Ú	=Û	eRÛ	:¸Û	HóÛ	,<Ü	-iÜ	X—Ü	.ðÜ	Ý	$<Ý	>aÝ	* Ý	ËÝ	 éÝ	
! Þ	FÞ	4dÞ	4™Þ	ÎÞ	#æÞ	
! ß	)"ß	'Lß	&tß	&›ß	+Âß	Cîß	'2à	'Zà	3‚à	4¶à	4ëà	3 á	"Tá	Bwá	?ºá	%úá	  â	BAâ	7„â	3¼â	6ðâ	4'ã	F\ã	O£ã	Fóã	{:ä	:¶ä	'ñä	å	C5å	@yå	#ºå	Þå	6ùå	.0æ	4_æ	)”æ	¾æ	Çæ	*×æ	.ç	+1ç	7]ç	c•ç	?ùç	>9è	Axè	Âºè	2}é	v°é	L'ê	Ltê	LÁê	9ë	0Hë	Hyë	@Âë	=ì	>Aì	!€ì	_¢ì	Ií	FLí	N“í	?âí	""î	TEî	šî	¹î	AÓî	:ï	>Pï	�ï	 ªï	(Ëï	)ôï	"ð	Að	_ð	&zð	I¡ð	?ëð	8+ñ	*dñ	(�ñ	¸ñ	Óñ	òñ	&ò	&6ò	5]ò	 “ò	0´ò	-åò	(ó	<ó	&Uó	+|ó	'¨ó	!Ðó	òó	!ô	!4ô	-Vô	(„ô	*­ô	"Øô	ûô	õ	&;õ	"bõ	)…õ	,¯õ	 Üõ	,ýõ	+*ö	+Vö	#‚ö	$¦ö	'Ëö	*óö	)÷	2H÷	0{÷	¬÷	GÈ÷	+ø	3<ø	8pø	/©ø	QÙø	›+ù	"Çù	Aêù	1,ú	-^ú	)Œú	:¶ú	Fñú	68û	Poû	?Àû	Tü	ŽUü	:äü	=ý	5]ý	)“ý	½ý	+Öý	-þ	"0þ	NSþ	P¢þ	$óþ	:ÿ	8Sÿ	7Œÿ	9Äÿ	þÿ	<
! 7Q
! ?‰
! 5É
! 9ÿ
! 39
! 4m
! 9¢
! <Ü
! 6
! 8P
! A‰
! ;Ë
! 7
! G?
! %‡
! ­
! )Ç
! ,ñ
! 5
! "T
! .w
! ¦
! "Â
! å
! *ò
! 
! .
! B>
! :�
! ¼
! ×
! í
! 
! M#
! 0q
! .¢
! .Ñ
! $
! :%
! 
`
! An
! a°
! +
! m>
! R¬
! mÿ
! ^m	
! cÌ	
! B0
  
! s
  
! �
  
! 0ª
  
! 0Û
  
! 0
! 6=
! St
! È
! ã
! i
! *j
! )•
! 1¿
! -ñ
! /
! )O
! Ly
! ,Æ
! bó
! EV
! (œ
! dÅ
! o*
! Bš
! Ý
! 1ð
! *"
! *M
! Ix
! Â
! >â
! ?!
! Oa
! I±
! û
! >
! ŠY
! 2ä
! 0
! 7H
! 6€
! 7·
! -ï
! ]
! 0{
! ¬
! ¾
! ,Ý
! &
! 
! )1
! $[
! Q€
! Ò
! ñ
!  
! 72
! %j
! (�
! (¹
! $â
! 
! '&
! !N
!  p
! %‘
! /·
! ç
! 
!  
! 1<
! &n
! !•
! (·
! :à
! -
! I
! 2h
! $›
! .À
! (ï
! 
! >8
! !w
! /™
! 9É
! /
! %3
! 8Y
! 5’
! È
! /Ø
! 
!  &
! *G
! "r
! (•
! !¾
! 7à
! )
! %B
! %h
! Ž
! ª
! +Ê
! "ö
!  
! #8 
! -\ 
! *Š 
! $µ 
! )Ú 
! /!
! 4!
! 'T!
! |!
! (š!
! CÃ!
! 9"
! A"
! ]"
! ?w"
! !·"
! 0Ù"
  $
! #
! /#
! ,N#
! #{#
! ;Ÿ#
! +Û#
! $
! v$
! ^”$
! eó$
! MY%
! §%
! ;Æ%
! 2&
! *5&
! )`&
! Š&
! )¤&
! &Î&
!  õ&
! 8'
! !O'
! :q'
! ¬'
! Ë'
! /à'
! <(
! 7M(
! '…(
! ­(
! 1Í(
! (ÿ(
! 7()
! 4`)
! •)
! *°)
! >Û)
! ?*
! TZ*
! !¯*
! $Ñ*
! ö*
! +
! 80+
! Ei+
! 6¯+
! Hæ+
! w/,
! —§,
! x?-
! «¸-
! d.
! tä.
! WY/
! ‚±/
! h40
! †�0
! ¥$1
! ¬Ê1
! ww2
! (ï2
! 3
! U83
! 0Ž3
! .¿3
! 3î3
! 1"4
! LT4
! 2¡4
! -Ô4
! :5
! O=5
! )�5
! O·5
! K6
! 9S6
! $�6
! =²6
! %ð6
! 7
! 047
! .e7
! 9”7
! Î7
! í7
! 
! 8
! $8
! ?8
! W8
! Fr8
! "¹8
! =Ü8
! $9
! !?9
! &a9
! ;ˆ9
! (Ä9
! 7í9
! #%:
! /I:
! Ny:
! È:
! æ:
! ;
! #;
! 2B;
! 1u;
! §;
! +¾;
! ê;
! )<
! #*<
! 3N<
! !‚<
! *¤<
! 1Ï<
! &=
! (=
! 1F=
! Vx=
!  Ï=
! 0ð=
! 0!>
! <R>
! �>
! @¥>
! 0æ>
! ?
! 24?
! ,g?
!  ”?
! (µ?
! ,Þ?
! 7@
! #C@
! 0g@
! ˜@
! Ê¶@
! #�A
! c¥A
! _	B
! `iB
! 4ÊB
! 6ÿB
! ¢6C
! 8ÙC
! ,D
! 7?D
! wD
! —D
! -¯D
! +ÝD
! ¾	E
! >ÈE
! ÛF
! vãF
! <ZG
! 7—G
! dÏG
!  4H
! =UH
! -“H
! 'ÁH
! (éH
! cI
! .vI
! t¥I
! ‰J
! !¤J
! 3ÆJ
! ;úJ
! 16K
! 0hK
! $™K
! '¾K
! "æK
! 	L
!  $L
! 6EL
! !|L
! !žL
! 6ÀL
! "÷L
! )M
! 'DM
! ,lM
! -™M
! ÇM
! æM
! lýM
! ;jN
! 9¦N
! @àN
! Y!O
! /{O
!  «O
! -ÌO
! rúO
! QmP
! ;¿P
! (ûP
! $Q
! >Q
! EZQ
! : Q
! (ÛQ
! R
! .R
! jHR
! g³R
! 4S
! <PS
! R�S
! +àS
!  T
! ?-T
! #mT
! C‘T
! ÕT
! ÛT
! =öT
! 4U
! +MU
! %yU
! ŸU
! ¸U
! ÖU
! "öU
! -V
! GV
! fV
! 9†V
! MÀV
! W
! AW
! <VW
! 8“W
! KÌW
! IX
! !bX
! X„X
! EÝX
! #Y
! 6Y
! IY
! *gY
! ’Y
! ±Y
! ÆY
! ÛY
! .ùY
! C(Z
! lZ
! �Z
! ŸZ
! ½Z
! (ÛZ
! [
! .[
! H[
! I^[
! ¨[
! /¾[
! #î[
! =\
! P\
! +e\
! $‘\
! ,¶\
! `ã\
! (D]
! Nm]
! 4¼]
! 0ñ]
! "^
! -9^
! 2g^
! "š^
! +½^
! Jé^
! ,4_
! a_
! U}_
! 0Ó_
! F`
! $K`
! ]p`
! 1Î`
! 3a
! 94a
! =na
! *¬a
! 4×a
! <b
! ;Ib
! N…b
! ‰Ôb
! C^c
! #¢c
! +Æc
! 3òc
! 0&d
! 'Wd
! d
! %Ÿd
! +Åd
! 5ñd
! 'e
! De
! %ce
! ‰e
! §e
! Âe
! âe
!  þe
! f
! *;f
! 1ff
! 0˜f
! +Éf
! Cõf
!  9g
! "Zg
! E}g
! ]Ãg
! f!h
! .ˆh
! -·h
! -åh
! 9i
! 1Mi
! .i
! %®i
! 0Ôi
! )j
! 0/j
! `j
! :yj
! 2´j
! çj
! (k
! 0*k
! [k
! !lk
! KŽk
! \Úk
! 7l
! HOl
! 4˜l
! )Íl
! ÷l
! `m
! 6rm
! $©m
! 
Îm
! 5Üm
! 1n
! &Dn
! "kn
! Žn
! 2£n
! &Ön
! ýn
! /o
! ?Ho
! =ˆo
! $Æo
! ëo
! 'ûo
! ?#p
! cp
! 'ƒp
! B«p
! îp
! q
! 3(q
! 0\q
! .�q
! $¼q
! /áq
! <r
! 1Nr
! €r
! “r
! &°r
! 5×r
! 
s
! "(s
! &Ks
! *rs
! )�s
! ;Çs
! t
! K"t
! -nt
! 7œt
! :Ôt
! 3u
! -Cu
! 1qu
! 2£u
! Öu
! .öu
! 0%v
! <Vv
! 5“v
! 5Év
! 1ÿv
! /1w
! -aw
! �w
! *©w
! ,Ôw
! ;x
! )=x
! qgx
! OÙx
! .)y
! $Xy
! ?}y
! -½y
! )ëy
! 5z
! VKz
! %¢z
! YÈz
! "{
! $={
! +b{
! 7Ž{
! /Æ{
! Fö{
! -=|
! @k|
! 4¬|
! qá|
! !S}
! u}
! ‹}
! 4¢}
! >×}
! 0~
! AG~
! =‰~
! 6Ç~
! -þ~
! 2,
! _
! !y
! 8›
! 6Ô
! -€
! E9€
! €
! [š€
! ;ö€
! D2�
! w�
! 9��
! HÉ�
! :‚
! 7M‚
! :…‚
! 7À‚
! <ø‚
! 65ƒ
! =lƒ
! ;ªƒ
! :æƒ
! <!„
! F^„
! *¥„
! Ð„
! +í„
! *…
! D…
! &P…
! 6w…
! '®…
! @Ö…
! $†
! O<†
! =Œ†
! =Ê†
! ?‡
! H‡
! (`‡
! J‰‡
! >Ô‡
! 2ˆ
! AFˆ
! ;ˆˆ
! &Äˆ
! Zëˆ
! ?F‰
! m†‰
! %ô‰
! „Š
! UŸŠ
! CõŠ
! 99‹
! ;s‹
! `¯‹
! Œ
! s!�
! \•�
! (ò�
! �Ž
! 1©Ž
! 2ÛŽ
! 2�
! FA�
! 0ˆ�
! 3¹�
! 6í�
! *$�
! 'O�
! ?w�
! 8·�
! <ð�
! +-‘
! >Y‘
! ?˜‘
! 3Ø‘
! R’
! !_’
! x�’
! Dú’
! 9?“
! Iy“
! 9Ã“
! ý“
! !”
! 
=”
! 
K”
! 3Y”
! H�”
! 'Ö”
! /þ”
! G.•
! -v•
! '¤•
! :Ì•
! G–
! O–
! Mo–
! _½–
! ,—
! BJ—
! >�—
! NÌ—
! W˜
! s˜
! 4‡˜
! .¼˜
! >ë˜
! L*™
! Sw™
! oË™
! /;š
! >kš
! Kªš
! Jöš
! ~A›
! UÀ›
! 9œ
! 7Pœ
! 7ˆœ
! ?Àœ
! Z�
! "[�
! Z~�
! \Ù�
! ‰6ž
! #Àž
! äž
! 
ùž
! FŸ
! ENŸ
! 4”Ÿ
! ÉŸ
! @ßŸ
! @  
! 0a 
! ’ 
! :¡ 
! IÜ 
! >&¡
! Ce¡
! 2©¡
! ,Ü¡
! @	¢
! DJ¢
! C�¢
! 9Ó¢
! J
£
! 8X£
! ‘£
! ¯£
! É£
! )ß£
! 	¤
! #¤
! -?¤
! m¤
! ƒ¤
! &Ÿ¤
! 4Æ¤
! 4û¤
! 40¥
! %e¥
! 0‹¥
! 0¼¥
! 0í¥
! F¦
! +e¦
! F‘¦
! 0Ø¦
! &	§
! $0§
! BU§
! .˜§
! Ç§
! &à§
! ¨
! ¨
! 1¨
! I¨
! ]¨
! )r¨
! œ¨
! °¨
! Ä¨
! -Ú¨
! ©
! ©
! 62©
! i©
! |©
! �©
! ¬©
! À©
! Ó©
! ç©
! ª
! ª
! 6ª
! Mª
! mª
! „ª
! ¤ª
! »ª
! Øª
! ìª
! L«
! :R«
! D�«
! BÒ«
! E¬
! /[¬
! L‹¬
! 8Ø¬
! 4­
! /F­
! -v­
! H¤­
! Ií­
! M7®
! M…®
! ¹Ó®
! #�¯
! ±¯
! Ë¯
! å¯
! ÿ¯
! $°
! 4?°
! &t°
! /›°
! 2Ë°
! ;þ°
! :±
! &T±
! {±
! *•±
! 9À±
! Mú±
! 0H²
! 0y²
! ,ª²
! ×²
! õ²
! !³
! 6³
! V³
! q³
! ‹³
! ¥³
! ¿³
! Ù³
! ù³
! ´
! /´
! J´
! 8e´
! ž´
! 8¹´
! ò´
! 
µ
! (µ
! Cµ
! !^µ
! €µ
! ™µ
! µµ
! .Ðµ
! ÿµ
! ¶
! 7¶
! #S¶
! ,w¶
! 4¤¶
! ;Ù¶
! ·
! #2·
! *V·
! )�·
! A«·
! 2í·
! ' ¸
! "H¸
! "k¸
! ;Ž¸
! 0Ê¸
!  û¸
! "¹
! !?¹
! !a¹
! $ƒ¹
! $¨¹
! 9Í¹
! 6º
! =>º
! A|º
! /¾º
! -îº
! 1»
! EN»
! :”»
! 0Ï»
! n¼
! 5o¼
! 0¥¼
! <Ö¼
! E½
! ,Y½
! 3†½
! >º½
! 4ù½
! :.¾
! 4i¾
! Lž¾
! ë¾
! '	¿
! #1¿
! 'U¿
! =}¿
! #»¿
! (ß¿
! .À
! 97À
! )qÀ
! 6›À
! -ÒÀ
! >Á
! 2?Á
! 0rÁ
! 0£Á
! +ÔÁ
! /Â
! /0Â
! /`Â
! ,�Â
! $½Â
! âÂ
! ]Ã
! ^Ã
! 6vÃ
! A­Ã
! @ïÃ
! 0Ä
! @NÄ
! ;�Ä
! DËÄ
! #Å
! >4Å
! AsÅ
! 7µÅ
! :íÅ
! 2(Æ
! 5[Æ
! 2‘Æ
! ÄÆ
! KàÆ
! N,Ç
! {Ç
! ˜Ç
! µÇ
! *ÒÇ
! -ýÇ
! 6+È
! 'bÈ
! ŠÈ
! Q¦È
! øÈ
! 'É
! ;É
! VÉ
! -qÉ
! (ŸÉ
! ,ÈÉ
! ,õÉ
! ,"Ê
! )OÊ
! yÊ
! ,”Ê
! 6ÁÊ
! 'øÊ
! L Ë
! LmË
! <ºË
! <÷Ë
! B4Ì
! +wÌ
! )£Ì
! ÍÌ
! 1ìÌ
! .Í
! .MÍ
! L|Í
! kÉÍ
! 5Ï
!  UÏ
! 6vÏ
! J­Ï
! XøÏ
! (QÐ
! 'zÐ
! ¢Ð
! )½Ð
! @çÐ
! 4(Ñ
! I]Ñ
! U§Ñ
! CýÑ
! &AÒ
! VhÒ
! ¿Ò
! \ÎÒ
! P+Ó
! P|Ó
! UÍÓ
! !#Ô
! +EÔ
! AqÔ
! 9³Ô
! íÔ
! 7
! Õ
! =BÕ
! 9€Õ
! 1ºÕ
! &ìÕ
! ¡Ö
! BµÖ
! #øÖ
! :×
! 7W×
! }�×
! <
Ø
! GJØ
! >’Ø
! ¯ÑØ
! :�Ù
! ¼Ù
! CÕÙ
! NÚ
! jhÚ
! ;ÓÚ
! Û
! /Û
! 8>Û
! wÛ
! ;–Û
! ÒÛ
! ïÛ
! Ü
! 4'Ü
! L\Ü
! M©Ü
! -÷Ü
! %Ý
! D7Ý
! "|Ý
! DŸÝ
! äÝ
! :ûÝ
! 6Þ
! <MÞ
! DŠÞ
! LÏÞ
! >ß
! 5[ß
! :‘ß
! 6Ìß
! Ià
! CMà
! E‘à
! +×à
! +á
! L/á
! )|á
! 2¦á
! KÙá
! J%â
! Jpâ
! /»â
! ëâ
! +ûâ
! "'ã
! FJã
! (‘ã
! 6ºã
! =ñã
! =/ä
! 3mä
! D¡ä
! 5æä
! Må
! Ojå
! (ºå
! 9ãå
! 4æ
! %Ræ
! 0xæ
! J©æ
! ,ôæ
! 8!ç
! (Zç
! 1ƒç
! Rµç
! Cè
! HLè
! '•è
! F½è
! 9é
! V>é
! •é
! D³é
! 'øé
! @ ê
! .aê
! 0�ê
! !Áê
! <ãê
! F ë
! 6gë
! .žë
! CÍë
! Cì
! 1Uì
! ,‡ì
! 2´ì
! Dçì
!  ,í
! 1Mí
! í
! =ží
! :Üí
! Pî
! &hî
! <�î
! 8Ìî
! Fï
! -Lï
! zï
! !˜ï
! 1ºï
! 9ìï
! @&ð
! Ngð
! +¶ð
! Eâð
! ?(ñ
! ]hñ
! 9Æñ
! 2ò
! 23ò
! 2fò
! N™ò
! Pèò
! >9ó
! >xó
! ,·ó
! Eäó
! H*ô
! Esô
! 0¹ô
! 6êô
! ,!õ
! 6Nõ
! U…õ
! !Ûõ
! ýõ
! aö
! U~ö
! 3Ôö
! /÷
! 28÷
! $k÷
! "�÷
! )³÷
! &Ý÷
! Fø
! 2Kø
! $~ø
! N£ø
! Aòø
! ?4ù
! 5tù
! rªù
! tú
! •’ú
! –(û
! —¿û
! 9Wü
! c‘ü
! Gõü
! ?=ý
! :}ý
! 8¸ý
! %ñý
! )þ
! Aþ
! #aþ
! #…þ
! -©þ
! ‰×þ
! =aÿ
! 9Ÿÿ
! 3Ùÿ
! M
K[W§2ÿ%2&X;:»&öUs&�&·/Þ2/A8q4ª!ß+2--`%Ž)´%Þ&+2H/{«&Æ,í.aIŒ«L8S…TÙj.4™'ÎöŠ	¡	2½	Qð	B
! 2K
! 2~
! .±
! 'à
! %D2c–-³2á72L=8½8ö=/
8m
6¦
;Ý
49N4ˆ9½4÷E,7r-ªSØ.,1[�#¥2É.ü*+FVK�IéI3E}GÃH‹TÔ)0C,tc¡F¾L•P¡öòDé.AY&k’¨¸ÈÛòK		U_OuÅã,ý'*@R,“[À0*MLx-Å+ó.@N>�5Î,71iX‚<Û,?Er…søTlsÁt5 ¦ª FQ!"˜!8»!7ô!1,"<^"B›"TÞ"C3#Gw#N¿#.$=$=W$m•$/%/3%Nc%#²%aÖ%68&Yo&ZÉ& $' E'!f'@ˆ'_É'/)((Y(k‚(-î())F).b)M‘)Iß)2)*F\*E£*8é*C"+yf+rà+0S,!„,#¦,AÊ,U-Bb-c¥-	.+!.KM.M™.9ç.+!/M/>g/3¦/&Ú/$0Y&03€0A´04ö0Q+1<}16º1'ñ1)2C2!]2"2G¢2Kê2763)n3*˜3$Ã3$è3#
4$14$V4#{4‹Ÿ4:+58f5JŸ5;ê5W&6U~6Ô6.ò6>!78`74™7WÎ7*&8MQ83Ÿ8vÓ8?J95Š9@À96:>8:rw:aê:gL;4´;-é;:<BR<@•<"Ö<0ù<*=$==b=3€= ´=NÕ=,$>Q>n>/Ž>1¾>8ð>-)?+W?(ƒ?<¬?&é?'@-8@0f@a—@'ù@4!A%VA'|A&¤A^ËA.*B3YB,�BºBCÔBAC5ZC �C*±CÜCúC+D<AD*~D©D)ÁD0ëD(E/EECuE<¹E"öE
! F$F=FJFVFbF,nF$›FÀF ÖF÷F G/7G3gG›G.¯G)ÞG?HHHC\HM H=îH2,IE_ID¥IVêI,AJ'nJY–J4ðJ,%K0RK0ƒK=´K0òK:#L1^L9�L2ÊL1ýL;/M1kM3�M5ÑM1N29N@lN1­N?ßNJO6jOD¡O8æO<P>\P=›P3ÙP9
Q:GQR‚QCÕQ7R:QR;ŒR6ÈR1ÿRE1SAwSQ¹S_TWkTOÃTHU \U8}U8¶U-ïU(V/FVvV2‰V¼VHÕV9WEXW)žWÈW4ÝW3XNFX1•XOÇX*Y8BY6{Y3²Y2æY0Z/JZ)zZ#¤Z*ÈZ-óZ*![-L[@z[!»[Ý[<ø[5\-G\2u\?¨\.è\]'6](^]4‡]Ø¼]Ð•^4f_5›_MÑ_`4`!M`;o`:«`Cæ`5*a&`a ‡a¨a'Ça*ïa%b*@b$kbA�bCÒbc<6c%sc3™c/Íc[ýc<Yd7–d&ÎdIõd+?e]keÉecÝe_Af6¡f7Øf4g5Eg){g3¥g3Ùg2
hI@hŠh¢h%ºhàh
ùh'i-/i&]i„iO¤iHôiH=j†j•j#¤jNÈj9kHQkHškJãkH.lwl*Žl%¹l,ßlm1,m)^m-ˆm,¶m,ãm<n9Mn&‡n/®n=Þn&o%Co7io5¡o<×o"pJ7pm‚pðpFq$Kqpq.q0®qWßq7r=Gr…r9¢rOÜr,sHs gs]ˆs!æs+t4t:PtT‹t!àtuu%7u]u<}uVºu$v6vuRvgÈvD0w:uw!°wXÒw*+x-Vx„x#¤x&ÈxQïx!Ay0cy<”y<Ñy&z<5zRrz;Åz>{t@{yµ{@/|8p|l©|9}3P}U„}9Ú}B~cW~m»~?)GiX±3
! €G>€J†€TÑ€E&�;l�D¨�Yí�pG‚"¸‚‹Û‚3gƒa›ƒEýƒCC„8‡„KÀ„@…>M…FŒ…GÓ…G†;c†EŸ†Gå†Y-‡?‡‡?Ç‡jˆKrˆ§¾ˆ[f‰lÂ‰4/ŠOdŠE´ŠOúŠiJ‹[´‹LŒ']Œs…Œ]ùŒDW�:œ�8×�FŽaWŽs¹Ž�-�K¯�Sû�WO�2§�FÚ�8!‘ŒZ‘Žç‘‰v’†“H‡“NÐ“=”i]”7Ç”Yÿ”uY•vÏ•)F–)p–<š–I×–9!—G[—£—,º—ç—ÿ—?˜^^˜=½˜]û˜@Y™dš™Cÿ™JCš'Žš_¶š�›.¤›)Ó›Vý›@TœQ•œVçœU>�=”�VÒ�a)ž3‹ž)¿ž$éž)Ÿ?8Ÿ.xŸ(§Ÿ%ÐŸhöŸ*_ 0Š .» 6ê ;!¡+]¡‰¡:§¡8â¡)¢-E¢'s¢›¢%¯¢%Õ¢Oû¢IK£%•£»£&Ö£4ý£#2¤2V¤‰¤7¦¤?Þ¤/¥@N¥1�¥Á¥(á¥
! ¦Z¦Zt¦FÏ¦#§‰:§OÄ§9¨$N¨.s¨¢¨&¼¨?ã¨.#©SR©0¦©8×©5ªBFªr‰ªBüªF?«^†«då«‚J¬fÍ¬P4­Z…­Kà­,®;D®;€®B¼®5ÿ®+5¯4a¯-–¯<Ä¯<°>°3U°H‰°*Ò°ý°2±(H±-q±Ÿ±1»±@í±9.²>h²I§²?ñ²+1³6]³)”³L¾³E´Q´
h´Vv´1Í´8ÿ´<8µ&uµ(œµBÅµ<¶RE¶8˜¶SÑ¶1%·4W·Œ·2¦·Ù·3õ·()¸+R¸~¸	‹¸•¸¤¸·¸Ë¸å¸Uú¸IP¹š¹¯¹4Ä¹Iù¹4CºExº6¾º5õºv+»‘¢»34¼=h¼<¦¼!ã¼/½75½5m½;£½(ß½d¾:m¾.¨¾9×¾6¿CH¿@Œ¿AÍ¿EÀ•UÀýëÀîéÁûØÂìÔÃ!ÁÄ3ãÄ+Å1CÅ!uÅ9—Å=ÑÅ5Æ,EÆ;rÆU®Æ1Ç\6ÇU“Ç/éÇ*È(DÈ!mÈ;�È.ËÈúÈ\É;iÉL¥É)òÉ1Ê7NÊL†Ê4ÓÊ3Ë4<Ë1qË>£ËBâË[%ÌZ�ÌcÜÌW@ÍA˜Í\ÚÍe7Î?�Î8ÝÎ2Ï0IÏBzÏ-½Ï;ëÏ9'Ð;aÐ4�ÐHÒÐ"ÑO>ÑOŽÑ8ÞÑÒ(,Ò$UÒ zÒ›Ò4ºÒ&ïÒ;Ó)RÓj|ÓFçÓ“.Ô$ÂÔ8çÔ8 Õ%YÕIÕ)ÉÕLóÕV@Ö—Ö©Ö.»Ö0êÖM×Hi×N²×-ØO/ØcØNãØ™2ÙDÌÙxÚjŠÚ‡õÚN}Û_ÌÛ;,ÜHhÜI±ÜAûÜ%=Ý1cÝ(•ÝF¾Ý7Þ3=Þ0qÞ9¢Þ-ÜÞ;
! ß:Fß:�ß•¼ßBRáZ•áðáCâVRâa©âWã8cãCœãRàãH3å2|å¯å<Áå2þå%1æ;Wæ“æ&ªæ!ÑæVóæ#Jçnç*Œç8·çƒðçbtè	×è`áè`Bé£é:¸éBóé16êOhê7¸ê$ðê4ëJë5dë5šëÐëAíë$/ì=Tì8’ì)Ëì*õì í;=íyí�íªíÁíáí+íí'î*Aî-lîšî+±î>ÝîBï_ï|ï;›ï(×ïCð%Dð9jðF¤ð5ëð8!ñ8Zñ2“ñWÆñò'ò$4ò7Yò#‘ò#µòMÙò7'ó9_ó7™ó8Ñó.
! ô@9ôBzô<½ô@úô>;õzõ�õ6©õ>àõö;9öuö>�öUÎö/$÷-T÷L‚÷*Ï÷:ú÷5ø.Mø7|øk´øg ù¢ˆùj+ûB–û-ÙûUü"]ü"€ü)£ü.Íü3üü0ý;Hý"„ý†§ý8.þAgþ=©þPçþJ8ÿzƒÿPþÿ>O>Ž8ÍNMU{£\$|E¡-ç-EC@‰0Ê)û*%3P6„.»@êF+FrB¹Aü.>#mY‘ëL3PW„0Ü
'(5P-†(´+Ý,		06	%g	9�	Ç	Ý	%õ	5
! Q
! k
! Z…
! Aà
! )"GLG”%ÜC)F2p £0Ä.õH$
4m
¢
$½
,â
):9&t/›AË4
>B<�3¾(ò)&E%l;’SÎ;"^Ef6¬4ã7_P=°0î5DU`šŒû‹ˆ7@LB�;Ð+-8"f{‰4/%d=ŠUÈ;/Z7Š4Â.÷@&:gG¢pê+[(‡J°‚û6~µAÑOgc5ËzJ|1Ç<ù&65]“³±?e4¥"Ú)ý,' 4T B‰ *Ì 0÷ P(!8y!I²!,ü!0)";Z"F–"1Ý"I#5Y#H�#5Ø#[$3j$Fž$<å$O"%Yr%=Ì%5
! &Z@&S›&2ï&("'=K'‰'^¡'G(?H(Oˆ(GØ(! )LB)C�)�Ó) U*v*s‘*$+O*+Lz+8Ç+\,],$v,›,5·,#í,1-vC-$º-ß-û-#.B;.$~.%£.6É./"/[B/0ž/;Ï/00-<0.j0™0!·0LÙ0 &1$G1l1„1–1?­1>í1>,2>k2?ª2>ê2<)3=f3<¤3-á3A4@Q4?’4Ò44í4g"5:Š5=Å5&6&*6DQ6F–6JÝ6N(7@w7F¸78ÿ7P88H‰8EÒ829"K9n99Ž9.È9'÷9*:>J:9‰:5Ã:6ù:;0;.l;[›;Z÷;ZR<9­<8ç<8 =.Y=8ˆ=TÁ=)>K@>?Œ>Ì>+ê>?.-?&\?'ƒ?;«?;ç?#@">@.a@�@°@Î@8ë@9$A4^A,“AYÀA-B8HB;�BD½B1C4C'SC {CœC »CÜC%ûC#!D&ED@lD9­D>çD9&E1`Ee’EdøE«]FM	G9WG&‘G^¸GaHyH.“H.ÂH-ñH-IMI*\I&‡I*®I>ÙI/J,HJ1uJ/§J$×J;üJ68K!oK@‘K2ÒK&L,,L>YL1˜L6ÊL2M34M0hM>™MØM÷MEN4UNNŠN?ÙN:O1TO†O% O&ÆO!íOP(.P6WP ŽP>¯P.îPDQ"bQ1…Q%·Q4ÝQ2R<ERN‚R7ÑR*	S,4S"aS „S¥S7¿SG÷S3?T&sT&šT:ÁTBüTA?Uo�U)ñU
V<)VBfV3©VIÝVG'WoW-‹W>¹W6øW</X.lX:›X#ÖXOúX=JY>ˆY7ÇY%ÿY#%Z(IZ>rZ:±ZìZ6[(?[@h[©[2º[8í[&\@\.O\~\2’\Å\-à\3]'B](j]%“]&¹]7à]5^5N^"„^#§^
Ë^*Ù^6_;_-V_"„_(§_XÐ_Q)`1{`/­`8Ý`a5aEQaI—a9áa.b'Jb*rb>�b9Üb5cLcfc^{c)Úc
ddBd
ad
od }d)žd%ÈdCîd:2e(me3–eÊe8çe6 f7Wf.�f0¾f-ïf“gc±gh2h;Fh,‚h3¯h'ãh>i>Ji>‰iÈi*âi
jr j/“j!Ãj$åj9
! kDk9_k2™kÌk%àklYlyl™l$´lKÙl<%m”bmO÷m;Gn2ƒn1¶n\èn-Eo-so-¡oÏo4äo<pVp8gpI p(êpHqA\qDžq7ãq*r.Fr3urD©r4îr#s6sOsfs!�s£s,¾s�ësEyt¿t=Ùt4u2Lu2u1²ueäu3Jv3~v3²vgæv>Nw|�wU
! x�`x
! þx	zO"z1rz1¤z0Öz0{#8{M\{ª{0Ä{4õ{3*|0^|/�|$¿|*ä|@}>P}A�}9Ñ}6~%B~8h~:¡~Ü~2ñ~U$‚z=ý?;€={€ ¹€NÚ€2)�=\�"š�ã½�<¡‚GÞ‚I&ƒYpƒEÊƒb„`s„TÔ„Q)…X{…GÔ…<†SY†E­†Dó†#8‡ \‡D}‡SÂ‡4ˆ?Kˆ?‹ˆ-ËˆNùˆ`H‰D©‰Pî‰W?Š;—Š)ÓŠ$ýŠb"‹…‹1š‹DÌ‹hŒzŒ6”ŒËŒ*ÛŒ� $�UE�+›�VÇ�)ŽHHŽ2‘Ž6ÄŽûŽc�>�>¾�1ý�)/�?Y�P™�$ê�[‘@k‘^¬‘W’9c’�’/»’#ë’)“B9“7|“@´“ªõ“ ”(¸”#á”3•>9•(x•#¡•#Å•,é•<–>S–3’–7Æ–Sþ–AR—”—¬— Ì—2í— ˜$>˜1c˜$•˜'º˜@â˜C#™µg™5š¬Sš¬›N­›5ü›<2œQoœ!Áœ"ãœ?�&F�Jm�4¸�,í�Až<\ž™ž5µžAëžU-Ÿ9ƒŸA½ŸJÿŸGJ 3’ Æ :ß %¡@¡C^¡5¢¡2Ø¡'¢B3¢=v¢´¢/Ï¢;ÿ¢†;£ŠÂ£eM¤*³¤Þ¤$ø¤0¥?N¥_Ž¥ î¥C¦.S¦ ‚¦=£¦;á¦0§@N§*�§Aº§Îü§LË¨I©:b©(�©?Æ©8ª2?ªIrª]¼ªS«Cn«C²«ö«5¬3L¬&€¬1§¬(Ù¬)­,,­3Y­*�­_¸­g®Q€®AÒ®P¯"e¯>ˆ¯3Ç¯8û¯;4°8p°7©°8á°9±8T±8�±=Æ±:²B?²)‚²3¬²4à²/³8E³ ~³Ÿ³6¹³6ð³4'´4\´8‘´(Ê´4ó´6(µ'_µ2‡µ3ºµ4îµ;#¶_¶A¶GÁ¶N	·NX·V§·^þ·c]¸iÁ¸h+¹k”¹hºhiºÒºR»Ò»�R¼�Ô¼V½rÖ½wI¾vÁ¾8¿‹¸¿DÀ~ÄÀ€CÁÄÁƒDÂwÈÂw@Ãs¸Ãx,Äs¥ÄuÅ9�Å7ÉÅ5ÆA7ÆCyÆ6½Æ7ôÆ3,Ç9`ÇšÇ7¹Ç6ñÇ5(È5^È”È3°È9äÈ3É?RÉ3’É$ÆÉ8ëÉ5$Ê8ZÊ4“Ê:ÈÊ7Ë8;Ë6tË3«Ë&ßËÌ#Ì(AÌ$jÌ*�Ì-ºÌ5èÌ_ÍH~Í2ÇÍ-úÍ-(Î.VÎA…ÎIÇÎYÏ/kÏu›ÏSÐ5eÐ›Ð6»Ð/òÐ"Ñ(;Ñ\dÑ0ÁÑ:òÑ*-Ò0XÒ[‰ÒEåÒ+ÓE>ÓG„Ó'ÌÓ&ôÓÔ!7Ô.YÔ1ˆÔ%ºÔ0àÔMÕ-_Õ�Õ.«Õ2ÚÕ-
Ö#;ÖL_Ö7¬Ö0äÖ%×8;×?t×?´×ô×VØKiØ?µØ4õØ.*ÙRYÙ.¬Ù+ÛÙ6Ú4>Ú5sÚ,©ÚGÖÚIÛ3hÛbœÛ1ÿÛ$1ÜBVÜ™Ü³ÜÊÜ(ÞÜ,ÝH4Ý/}Ý.­Ý0ÜÝ+
Þ.9Þ,hÞ,•Þ"ÂÞ2åÞ,ß)Eß(oß+˜ß,Äß&ñß*à+Cà+oà%›à"Áà"äà#á&+á7Rá-Šá6¸á*ïá,â*Gâ)râ)œâ(Æâ$ïâ&ã);ã-eã+“ã%¿ã(åã5ä#Dä'hä4�ä'Åä&íä å+5åaå2€å4³å0èå1æ?Kæ;‹æZÇæR"ç^uçPÔç@%è\fè"ÃèKæèH2é<{é)¸é âé+ê//êS_ê'³êÛêïê…ë<•ë:Òë4
ì)Bì#lìs�ìíª"í[ÍîK)ïuï1‹ï½ïØï÷ïð1ðPð*\ðp‡ð4øðW-ñ=…ñ:Ãñ?þñ;>ò�zòYóHeó=®ógìó„TôNÙô[(õY„õ<Þõ<ö>XöU—öaíöAO÷@‘÷JÒ÷@øX^øy·ø@1ùCrù(¶ùHßù?(úXhúiÁúT+û:€ûO»ûMüJYüa¤ü[ýWbý>ºýVùý„Pþ5Õþ0ÿ_<ÿ=œÿ9ÚÿR
Mg
Dµ
.ú
3)
-]
=‹
8É
Y
G\
=¤
kâ
qN
)À
2ê
h
>†
cÅ
ž)
fÈ
«/
·Û
Ç“
Ç[
=#	
Ea	
;§	
Xã	
:<
! 
iw
! 
aá
! 
JC
SŽ
Dâ
3'
B[
/ž
.Î
*ý
((

8Q

4Š

)¿

7é

+!
(M
+v
-¢
]Ð
Š.
n¹
h(
g‘
?ù
h9
W¢
4ú
&/
MV
Õ¤
¼z
67
Hn
L·
Z
C_
‚£
ƒ&
Oª
2ú
4-
Qb
o´
=$
Ab
7¤
†Ü
5c
t™
-
;<
0x
v©
N 
Lo
a¼
T
Gs
,»
vè
B_
]¢
5
S6
TŠ
8ß
-
2F
Iy
NÃ
\ 
‡o 
V÷ 
ZN!
y©!
p#"
D”"
ZÙ"
N4#
Cƒ#
YÇ#
O!$
?q$
:±$
?ì$
<,%
Ji%
J´%
0ÿ%
>0&
—o&
2'
f:'
_¡'
D(
F(
AL)
cŽ)
iò)
/\*
JŒ*
I×*
I!+
vk+
Xâ+
Y;,
›•,
T1.
?†.
bÆ.
K)/
Cu/
C¹/
7ý/
É50
Èÿ0
aÈ1
X*2
\ƒ2
—à2
[x3
’Ô3
‘g4
�ù4
kŠ5
:ö5
d16
d–6
Åû6
7Á7
Kù7
dE8
Gª8
Fò8
ž99
ŽØ9
’g:
]ú:
)X;
 ‚;
£;
g¾;
/&<
V<
\k<
~È<
‰G=
Ñ=
ì=
>
1>
/J>
>z>
4¹>
¢î>
‘?
}@
:�@
“Ê@
A^A
O A
qðA
|bB
1ßB
™C
V«C
JD
PMD
VžD
LõD
{BE
.¾E
fíE
STF
B¨F
YëF
`EG
"¦G
RÉG
QH
7nH
9¦H
\àH
A=I
ÃI
˜CJ
ÜJ
,ñJ
9K
‘XK
?êK
y*L
v¤L
XM
ktM
HàM
P)N
 zN
&›N
MÂN
/O
;@O
8|O
µO
ÇO
<çO
U$P
zP
?™P
?ÙP
7Q
;QQ
"�Q
Z°Q
BR
+NR
%zR
" R
$ÃR
.èR
3S
'KS
sS
/’S
2ÂS
2õS
((T
4QT
,†T
³T
pÇT
38U
NlU
7»U
EóU
C9V
}V
I�V
/çV
/W
.GW
HvW
-¿W
1íW
2X
<RX
�X
,®X
'ÛX
6Y
=:Y
"xY
›Y
2¹Y
ìY
,Z
l8Z
]¥Z
.[
)2[
)\[
†[
I¥[
Pï[
:@\
6{\
C²\
6ö\
;-]
Fi]
N°]
4ÿ]
;4^
\p^
 Í^
9î^
@(_
7i_
Y¡_
'û_
:#`
X^`
*·`
â`
8ý`
?6a
3va
ªa
9Ãa
3ýa
31b
&eb
NŒb
:Ûb
-c
Dc
n[c
?Êc
)
! d
I4d
~d
/˜d
Èd
1Üd
3e
"Be
+ee
&‘e
%¸e
Þe
=ýe
S;f
z�f
)
! g
/4g
Rdg
S·g
8h
Dh
/[h
+‹h
6·h
9îh
(i
/Fi
+vi
1¢i
-Ôi
0j
'3j
8[j
,”j
Áj
6áj
k
 7k
Xk
.gk
–k
¶k
?Ök
"l
Q9l
>‹l
$Êl
+ïl
2m
,Nm
[{m
O×m
#'n
@Kn
Œn
O¦n
Mön
-Do
ro
6�o
Ço
>ào
Kp
#kp
2�p
)Âp
3ìp
0 q
&Qq
2xq
=«q
3éq
0r
1Nr
2€r
³r
)Ór
-ýr
-+s
,Ys
0†s
·s
-Ís
4ûs
=0t
Mnt
1¼t
ît
+	u
(5u
&^u
&…u
*¬u
$×u
5üu
2v
,Jv
,wv
¤v
¹v
-Ôv
 w
#w
~3w
c²w
$x
;x
-Vx
,„x
5±x
çx
!y
:"y
$]y
‚y
	Ÿy
&©y
!Ðy
(òy
!z
==z
/{z
1«z
Ýz
Cýz
CA{
#…{
=©{
"ç{
1
! |
H<|
H…|
9Î|
.}
37}
�k}
/û}
+~
'H~
5p~
2¦~
=Ù~
 
G8
:€
»
ŠÙ
Xd€
½€
Ö€
æ€
ö€
>�
$E�
j�
=ˆ�
$Æ�
ë�
F‚
(L‚
(u‚
ž‚
«‚
¸‚
>È‚
$ƒ
,ƒ
Jƒ
bƒ
|ƒ
”ƒ
°ƒ
Êƒ
Dàƒ
*%„
/P„
	€„
-Š„
B¸„
û„
$…
03…
*d…
�…
!«…
GÍ…
F†
G\†
5¤†
)Ú†
‡
* ‡
.K‡
Cz‡
¾‡
$Ô‡
ù‡
 ˆ
4ˆ
"Oˆ
Irˆ
I¼ˆ
;‰
IB‰
!Œ‰
8®‰
1ç‰
0Š
7JŠ
&‚Š
,©Š
&ÖŠ
ýŠ
‹
85‹
1n‹
 ‹
¼‹
-×‹
-Œ
,3Œ
8`Œ
=™Œ
=×Œ
=�
=S�
‘�
��
)½�
%ç�
)
Ž
27Ž
jŽ
1‚Ž
´Ž
¤ÌŽ
Wq�
:É�
1�
/6�
8f�
8Ÿ�
-Ø�
9‘
@‘
^‘
2w‘
‹ª‘
¢6’
1Ù’
“
7&“
C^“
¢“
Â“
=á“
”
o.”
2ž”
1Ñ”
H•
L•
@e•
"¦•
#É•
(í•
&–
-=–
\k–
:È–
1—
;5—
/q—
¡—
%½—
0ã—
'˜
"<˜
/_˜
�˜
¯˜
Ë˜
/Ý˜

™
,™
D™
fa™
 È™
'é™
š
.š
Iš
/Zš
4Šš
)¿š
4éš
›
@;›
|›
/�›
"½›
"à›
2œ
D6œ
!{œ
+�œ
,Éœ
öœ
4�
J�
>^�
4��
#Ò�
+ö�
9"ž
*\ž
c‡ž
ëž
!	Ÿ
:+Ÿ
fŸ
~Ÿ
'šŸ
?ÂŸ
 
  
7 
W 
Zv 
ZÑ 
y,¡
z¦¡
%!¢
>G¢
†¢
.Ÿ¢
!Î¢
Hð¢
!9£
3[£
+�£
1»£
Cí£
C1¤
 u¤
2–¤
3É¤
#ý¤
!¥
G:¥
m‚¥
jð¥
[¦
:q¦
"¬¦
Ï¦
2æ¦
4§
(N§
w§
$”§
¹§
PÉ§
9¨
!T¨
,v¨
A£¨
0å¨
 ©
7©
W©
w©
•©
¨©
»©
?Ù©
Bª
'\ª
(„ª
­ª
1Éª
ûª
«
57«
Em«
³«
>Ñ«
>¬
2O¬
5‚¬
6¸¬
?ï¬
*/­
>Z­
4™­
Î­
*é­
1®
³F®
Uú®
3P¯
:„¯
B¿¯
°
-°
5F°
)|°
%¦°
Ì°
9è°
0"±
9S±
	�±
Y—±
sñ±
se²
PÙ²
:*³
De³
4ª³
Aß³
"!´
£D´
,è´
-µ
Cµ
‚Zµ
&Ýµ
0¶
(5¶
&^¶
ƒ…¶
D	·
N·
*d·
#�·
³·
;É·
Z¸
`¸
v¸
@�¸
FÐ¸
¹
30¹
(d¹
�¹
$ª¹
Ï¹
)í¹
,º
(Dº
mº
+‡º
+³º
Dßº
B$»
Jg»
p²»
J#¼
in¼
FØ¼
@½
7`½
{˜½
3¾
gH¾
Q°¾
b¿
Že¿
xô¿
PmÀ
F¾À
fÁ
hlÁ
mÕÁ
JCÂ
mŽÂ
oüÂ
KlÃ
L¸Ã
GÄ
nMÄ
X¼Ä
2Å
yHÅ
7ÂÅ
=úÅ
O8Æ
uˆÆ
_þÆ
k^Ç
/ÊÇ
WúÇ
WRÈ
*ªÈ
PÕÈ
_&É
N†É
YÕÉ
{/Ê
^«Ê
\
! Ë
sgË
TÛË
Q0Ì
G‚Ì
fÊÌ
_1Í
R‘Í
&äÍ
6Î
.BÎ
[qÎ
JÍÎ
3Ï
WLÏ
d¤Ï
,	Ð
u6Ð
_¬Ð
zÑ
‡Ñ
N¢Ñ
%ñÑ
9Ò
<QÒ
.ŽÒ
$½Ò
6âÒ
2Ó
4LÓ
'�Ó
5©Ó
3ßÓ
#Ô
,7Ô
GdÔ
<¬Ô
GéÔ
V1Õ
VˆÕ
VßÕ
V6Ö
W�Ö
UåÖ
D;×
R€×
DÓ×
DØ
D]Ø
D¢Ø
DçØ
F,Ù
LsÙ
1ÀÙ
6òÙ
6)Ú
a`Ú
:ÂÚ
&ýÚ
;$Û
4`Û
•Û
W´Û
SÜ
5`Ü
]–Ü
HôÜ
g=Ý
Ÿ¥Ý
IEÞ
)�Þ
R¹Þ
3ß
5@ß
1vß
*¨ß
0Óß
5à
b:à
7�à
VÕà
A,á
>ná
P­á
Nþá
?Mâ
\�â
5êâ
> ã
g_ã
;Çã
Eä
dIä
Y®ä
Hå
GQå
g™å
Xæ
PZæ
H«æ
Iôæ
:>ç
>yç
L¸ç
Tè
_Zè
Fºè
lé
^né
>Íé
Iê
PVê
F§ê
Rîê
NAë
r�ë
Oì
`Sì
S´ì
Cí
ILí
Y–í
Jðí
:;î
Zvî
?Ñî
Aï
?Sï
A“ï
8Õï
.ð
:=ð
1xð
=ªð
)èð
ñ
q,ñ
Ežñ
;äñ
N ò
„oò
Sôò
UHó
1žó
”Ðó
5eô
8›ô
(Ôô
>ýô
@<õ
F}õ
CÄõ
Cö
CLö
C�ö
1Ôö
0÷
17÷
%i÷
`�÷
~ð÷
9oø
X©ø
'ù
I*ù
Jtù
K¿ù
Mú
IYú
T£ú
Eøú
:>û
/yû
:©û
-äû
9ü
!Lü
*nü
d™ü
)þü
N(ý
&wý
$žý
@Ãý
0þ
H5þ
W~þ
+Öþ
=ÿ
A@ÿ
3‚ÿ
5¶ÿ
Sìÿ
>@10±â%4'I\#¦9ÊiGn.¶-å58I=‚dÀ2%cXR¼0<@7}5µ7ë(#aLI®AøP:j‹;ö(2J[2¦8Ù2	'E	=m	Q«	Qý	/O
! 3
! +³
! "ß
! }‚€n-rb `
/d
E”
8Ú
:SN5¢ZØQ3K…°Ñ+‚"®PÑ_"*‚7­-å. B}c&á3"<;_6›Ò@ì<-9jE¤.êN!hCŠ9Î3H<…¥?Ä,41YfHÀO	;Y$•‚º:=,x;¥;á<EZ1 :Ò&
N4,ƒh°ixƒ7ü^4G“ÛEâ7(N`O¯(ÿD( Bm V° Y!Ga!;©!(å!B"RQ"H¤"+í"2#7L#E„#BÊ#J
$qX$QÊ$O%Hl%,µ%/â%'&%:&G`&?¨&Eè&%.' T'4u'Pª';û'37(Fk(T²(E)AM)O�)2ß)B*UU*4«*4à*i++$š+#¿+5ã+,%7,I],E§,-í,�-;©-Oå-V5..Œ.=».Cù.B=/K€/OÌ/r0%�0Tµ00
! 1U;13‘1Å1:å1= 2)^22ˆ2»29Ø2330F3Pw3cÈ3;,4>h4?§4@ç4G(53p5>¤5kã5vO6&Æ64í63"7V7:v77±7Vé7]@8Rž8>ñ8609(g90�9+Á98í9/&:>V:0•:FÆ:L
;SZ;J®;@ù;\:<I—<2á<A=4V=9‹=ZÅ=b >@ƒ>CÄ>%?/.?K^?>ª?‹é?Ku@NÁ@>AgOA(·AVàA%7B*]B‰ˆBC5CBPCD“CÄØCë�DQ‰EÝÛE¦¹FË`HT,JT�JAÖJIK+bK„ŽK‘L0¥L€ÖLqWM:ÉM6NJ;N †Nä'OPT,P*�P#¬P!ÐPIòP\<Qg™Q$R^&R'…R.­RÜR"üR!S!AS"cS"†S3©S"ÝS)TI*T4tT4©TNÞTK-UUyU®ÏUª~VJ)WQtX;ÆX0Y+3Y;_Y:›Y2ÖY/	Z)9Z"cZ!†Zž¨Z-G[8u[g®[9\xP\)É\6ó\U*]T€]Õ]$Û]
^^^	.^
! 8^	C^M^OO^Ÿ^0·^>è^B'_bj_;Í_7	`%A`g`#‡`G«`8ó`,a7GaNaBÎa6b8Hb)�bL«b<øb75cUmcNÃcEd8Xd.‘d4Àd>õd-4e"beW…eLÝeP*fC{fJ¿fB
! gIMg?—gG×gh3>h3rhB¦h?éh=)i9giB¡iMäiF2jGyjAÁjSk+WkVƒk(Úk.l&2lYl{ol+ëlhm(€m)©m1ÓmMn"Sn1vn-¨n?Ön8o1Oo1�og³o%p"ApEdp%ªp#Ðp%ôptq.�q*¾q2éqHrDer%ªrÐr)ër8s8Ns1‡s5¹s<ïsA,tFnt!µt3×t1u=u5[u&‘u9¸u>òu’1vBÄv8w=@w.~w*­wØw;öw92xHlx9µx2ïx*"y\My8ªyBãy1&z5Xz8Žz2Çzúz2þz51{Og{Z·{|#+|'O|&w|.ž|BÍ|;}4L}5�}8·}/ð}% ~$F~%k~/‘~(Á~)ê~#)8)b-ŒºÏ>Þ€]7€L•€)â€�/ �!P�#r�K–�(â�*‚6‚N‚$f‚)‹‚)µ‚.ß‚@ƒ‚Oƒ~Òƒ)Q„A{„c½„A!…9c…4�…XÒ…;+†3g†8›†CÔ†N‡Hg‡D°‡cõ‡7Yˆ8‘ˆ@Êˆ<‰>H‰G‡‰3Ï‰7Š[;Šm—Š<‹B‹
N‹.\‹$‹‹[°‹	Œ?ŒiVŒ1ÀŒ&òŒ"�<�S\�M°�.þ�--Ž)[Ž!…Ž7§Ž(ßŽ;�8D�:}�9¸�Hò�';�7c�/›�/Ë�2û�>.‘<m‘)ª‘9Ô‘/’<>’?{’6»’2ò’?%“@e“!¦“FÈ“9”&I”4p”!¥” Ç”è”<•?•.Z•%‰•¯•+¼•dè•\M–ª–·–)Ö–4—-5—0c—/”—8Ä—/ý—9-˜?g˜8§˜>à˜?™>_™4ž™7Ó™AšVMš=¤š4âš7›(O›Gx›4À›:õ›A0œ=rœ3°œ,äœ:�4L�†��nž9wžA±ž,óžQ Ÿ2rŸ4¥Ÿ4ÚŸ2 B 1[ 6� ;Ä <¡!=¡$_¡I„¡>Î¡A
¢O¢,l¢"™¢*¼¢ç¢"£;#£_£$£T¤£:ù£!4¤$V¤2{¤5®¤Rä¤27¥<j¥=§¥Eå¥?+¦*k¦T–¦7ë¦##§G§'f§.Ž§m½§y+¨s¥¨n©zˆ©tªoxª{èªud«hÚ«tC¬n¸¬y'­v¡­w®x�®q	¯?{¯6»¯2ò¯O%°:u°G°°)ø°("±!K±(m±&–±0½±Sî±:B²'}²!¥²AÇ².	³)8³2b³y•³w´(‡´*°´,Û´Iµ3Rµ0†µ'·µ=ßµ=¶[¶s¶
�¶:�¶HØ¶C!·Qe·C··Qû·*M¸%x¸%ž¸+Ä¸+ð¸)¹&F¹m¹9…¹¿¹1Ð¹&º&)º_Pº@°º-ñº<»'\»'„»/¬»@Ü».¼$L¼5q¼4§¼4Ü¼A½S½;s½<¯½Dì½,1¾^¾7k¾(£¾-Ì¾*ú¾-%¿S¿n¿ˆ¿A¢¿/ä¿/À1DÀMvÀNÄÀ0Á2DÁ0wÁ7¨Á9àÁ!Â!<ÂH^ÂA§Â*éÂÃ!3ÃUÃ?oÃ&¯Ã*ÖÃ"Ä$Ä$@ÄNeÄ
´Ä.ÂÄ
! ñÄ.üÄ:+Å)fÅ5�ÅcÆÅE*ÆApÆ ²ÆÓÆ,îÆ$Ç"@Ç.cÇ%’Ç%¸Ç$ÞÇÈ2È>MÈDŒÈDÑÈNÉ(eÉ/ŽÉ¾ÉÔÉëÉ2ÊL4Ê�ÊT ÊLõÊUBËC˜ËÜË	òË3üË@0Ì'qÌ4™Ì.ÎÌ;ýÌ$9Í+^Í/ŠÍ
ºÍ@ÈÍ 	Î;*Î$fÎ9‹Î(ÅÎ7îÎ;&ÏEbÏ2¨ÏJÛÏ,&Ð*SÐ6~Ð2µÐ0èÐ0Ñ;JÑ#†Ñ?ªÑ<êÑ'ÒEBÒRˆÒVÛÒ22Ó)eÓ%�Ó&µÓ:ÜÓ)Ô$AÔ=fÔ[¤Ô6ÕV7ÕNŽÕLÝÕL*ÖVwÖCÎÖL×&_×†×.œ×Ë×(Ý×0ØM7Ø@…Ø/ÆØ:öØ71Ù2iÙ3œÙ-ÐÙ4þÙ)3ÚQ]Ú<¯Ú,ìÚ)Û0CÛtÛH”Û)ÝÛOÜMWÜ/¥Ü2ÕÜ-Ý6Ý'TÝ|Ý/—Ý%ÇÝ8íÝ3&ÞZÞHxÞÁÞÍÞêÞ%ß-ß%?ß"eß&ˆß(¯ß$Øßýßà à2àEà$Tàyà%Šà/°à%àà,á,3á.`á,�á,¼á,éá,â*Câ&nâ/•âÅâÎâÕâ(áâ%
! ã"0ãSãrã‘ã7žã@Öãä'äH0äyä$˜ä"½ä/àä+å&<å'cå(‹å-´å#âå$æ/+æ/[æ‹æ£æ(»æäæ¦ç#«ç"Ïç5òçH(èqè:Žè/Éè'ùè!é0=é$né%“é+¹é/åé'ê(=ê fê+‡ê³ê!Èêêêë4(ë-]ë8‹ë/ÄëWôë9Lì4†ì»ì8Íì)í,0í']í(…í®íÌíèí+î63îjî,„î+±îAÝîOïoïJxï9Ãïýïð8ðRðrð8�ð€Èð0Iñ;zñ¶ñ)Ññ=ûñ!9ò>[òIšò/äòJóY_ó¹ó!Øóúó=ô Xô-yô§ôÃô)Ùô)õ-õLõ/gõ.—õ$Æõ@ëõ-,ö-Zö.ˆö4·öLìö<9÷Lv÷EÃ÷@	øSJø-žøLÌø3ùMù(gùY�ùFêù,1ú(^úN‡ú#Öú$úú$û*Dû,oûBœûßû;ïû+ü.8ü güGˆüZÐü.+ý(ZýDƒý1Èý6úý31þ3eþ5™þ=ÏþJ
ÿ*Xÿ"ƒÿ0¦ÿ×ÿòÿ8
! #Cg „:¥)à;
! 0F,w"¤*Ç*òO^mYÌ&2PCO”-ä/NBN‘Và;76s2ªÝ&û"9;u†7 7Ø3D%[0�²Í@â)#MgŸ²ÅáDõA:	@|	-½	>ë	k*
! >–
! ;Õ
! D2V<‰DÆE3QM…EÓ*

D
R
_
Vl
hÃ
,J<Z$—"¼9ß%*?.j(™)Â)ì72N3�.µ/ä,0A3r;¦]âF@P‡FØ* JAkI­K÷#CFg®>Ì#+/.[Š,ª1×)	.3@b&£!Ê8ì;%<a,ž,Ëø!4-N'|-¤+Ò#þ+"NNH�;æC"SfLº.i6b JDN “ ´#Õ ù>-Y'‡V¯#1**\&‡&®6ÕCEP)–2À>ó/2 >b 4¡ +Ö 4!97!8q!3ª!Þ!%ý!5#" Y"Tz"7Ï"6#7>#v#I�#HÙ#?"$\b$Z¿$/%(J%-s%¡%*Á%+ì%1&‰J&MÔ&-"',P'+}' ©'=Ê'3(-<(Tj('¿('ç(9)3I)$})$¢).Ç)ö)
*((*<Q*Ž*'©*Ñ*å*ø*+'+G+"d+;‡+=Ã+,6,)N,<x,(µ,'Þ,/-16-h-#ˆ-¬--Ê-'ø-) .#J.'n.1–.È.?ã.K#/o/'�/>·/ö/09)0@c08¤0#Ý01111@1_1r15ƒ1%¹1!ß12 2=2!W2y2i•23ÿ2)33]3"p3“3$¬3!Ñ3ó3 41246d41›4/Í4Fý4ED5hŠ5)ó5362Q6#„6G¨6'ð6.70G7-x7>¦7å7-ú7(8$C88h8B¡8*ä89(9NA9"�9"³9)Ö9:;:*S:*~:©:<Ã:(;0);-Z;'ˆ;&°;"×;-ú;E(<En<.´<(ã<&=03==d=3¢=AÖ=&>?>2]>�>¤>º>:Ô>$?4?6K?‚?¢?&Â?é?;@QA@2“@,Æ@1ó@0%A(VA/A4¯A*äAB%(B)NB)xB8¢B8ÛBAC4VC@‹C$ÌCñCgDBvD-¹D<çD.$E4SE0ˆE¹EÓEIðEM:F$ˆFM­F6ûF.2G1aG/“G#ÃGTçG8<H uH'–H¾H8ÚHPI0dI•I ªIËI(êI0JLDJ`‘JlòJ'_K&‡KI®K*øK#L+BLNnLN½L$M%1M&WM~M!”M$¶MÛM1ôM&N>NYN+rN+žN-ÊN5øN-.OD\O5¡O-×O)Po/P[ŸPûP6QOQ"oQ8’Q	ËQÕQ!æQR'R8R@UR(–R*¿R/êR(SCS`S'xS< SÝS/òS!"T5DT8zT³T`ÓT@4U>uU6´U>ëU!*V8LV)…V¯VÌV8èV5!W.WW3†W ºWÛWBúWL=X&ŠX6±XèX4Y5;Y$qY–Y1®Y<àY;Z.YZBˆZAËZ5
[1C[?u[Mµ[?\MC\F‘\1Ø\L
! ]LW]<¤]<á]>^]^>q^C°^ô^._/;_k_=„_Â_Þ_qþ_.p`Ÿ`B¼`$ÿ`9$a/^a+ŽaLºaHbEPbA–bØbMðb">c"ac1„c'¶c5Þc,dAd"WdCzd1¾d"ðde*(e'Se!{e�e»e5×e!
f3/f8cfNœfXëfODg]”gOòg]Bh4 hmÕh7Ci@{i/¼i8ìi:%j7`j8˜j$Ñjöj0k/Dk,tk*¡k(Ìk=õk%3l5Yl)�l%¹l:ßl+m4Fm9{m9µm,ïm$n(An+jn –n/·n.çn$o;oZoAuo$·o:Üo9pQp…dp2êp3q2QqO„qÔq"ôqr41r>fr<¥rDâr&'s%Ns=ts)²s1Üs/t6>t2ut1¨t2ÚtV
udu3~u>²uMñu=?v9}vM·v1wV7w@Žw)Ïw1ùw1+xE]x£x'½x,åxy62y+iy2•yUÈy(zGGz>�zAÎz+{$<{%a{‡{&œ{$Ã{2è{/|1K|+}|,©|EÖ|E}(b}B‹}LÎ}~;~.X~=‡~'Å~4í~"3=8q8ª7ã+€6G€-~€P¬€ký€&i�.��A¿�.‚.0‚1_‚:‘‚:Ì‚9ƒ+Aƒ.mƒ<œƒ)Ùƒ„C!„'e„@�„DÎ„@…LT…5¡…B×…a†(|†;¥†Dá†L&‡[s‡XÏ‡I(ˆ#rˆT–ˆ&ëˆ‰7-‰<e‰9¢‰JÜ‰,'ŠNTŠ+£Š<ÏŠI‹BV‹<™‹Ö‹í‹+
Œ9Œ,YŒL†ŒPÓŒ;$�c`� Ä�,å� Ž*3Ž-^Ž/ŒŽ%¼Ž7âŽ!�/<�l�6Œ�Ã�&Ü�1�5�"S�v�@‹�\Ì�D)‘`n‘.Ï‘þ‘#’ @’+a’�’)­’)×’““8“X“-m“ ›“#¼“-à“”-”
:”-H”3v”+ª”\Ö”$3•4X•*�•5¸•5î•0$–U–6k–"¢–Å–á–/þ–.—9E—0—'°—-Ø—,˜73˜k˜'‡˜8¯˜#è˜4™<A™5~™´™,Å™1ò™/$š+Tš3€šN´š0›g4›œ›«›#Æ›+ê›9œPœ/Vœ"†œ
! ©œ´œG¼œH�4M�&‚�)©�"Ó�%ö�3žHPž9™žBÓž=ŸJTŸjŸŸ'
!  *2 <] 5š &Ð 6÷ '.¡V¡/j¡/š¡1Ê¡Jü¡>G¢D†¢!Ë¢/í¢(£)F£#p£#”£a¸£"¤=¤4]¤>’¤5Ñ¤.¥/6¥*f¥&‘¥+¸¥(ä¥$
¦a2¦"”¦ ·¦6Ø¦F§zV§.Ñ§Z¨C[¨DŸ¨Fä¨B+©An©.°©*ß©F
! ª0QªG‚ª.ÊªDùª
>«L«b«Cz«¾«!Ö«ø«0¬I¬+c¬.�¬#¾¬!â¬-­$2­$W­#|­. ­@Ï­<®<M®JŠ®&Õ®Vü®=S¯4‘¯1Æ¯6ø¯//°T_°´°,Ò°?ÿ°/?±0o±1 ±/Ò±5²V8²<�²QÌ²0³aO³U±³k´Es´J¹´?µ$DµiµF‰µPÐµ0!¶"R¶Du¶Vº¶1·6C·Lz·0Ç·-ø·;&¸cb¸Æ¸ä¸ñ¸+¹7.¹:f¹1¡¹8Ó¹&º73º*kº1–º:Èº »@$»3e»'™»%Á»$ç»;¼.H¼6w¼;®¼+ê¼N½2e½5˜½Î½ä½þ½¾.¾D¾iY¾mÃ¾K1¿1}¿"¯¿Ò¿ í¿À#+ÀCOÀB“ÀÖÀïÀD	Á:NÁF‰Á!ÐÁ!òÁ,Â.AÂTpÂ8ÅÂDþÂKCÃ#�Ã‹³Ã*?Ä+jÄ*–Ä*ÁÄìÄ1Å'>ÅFfÅ=­Å#ëÅ$Æ#4Æ£XÆüÆÇ+ÇGÇ#bÇ(†ÇE¯Ç(õÇ È9?ÈyÈ˜È´ÈÎÈçÈ&þÈ%É47ÉFlÉQ³ÉCÊIÊ(`Ê;‰ÊÅÊ6åÊ ËM=Ë@‹Ë#ÌËTðËEÌ-VÌ,„Ì±Ì*ËÌ/öÌ&Í$@ÍeÍ„Í)¢Í1ÌÍ;þÍ,:Î0gÎ˜Î/·Î&çÎ)Ï28Ï3kÏTŸÏ2ôÏ'Ð6ÐRÐ+hÐ"”Ð·Ð×Ð÷Ð*Ñ"6ÑYÑpÑ!ŽÑ°Ñ
ÇÑÕÑ
íÑûÑ#Ò
7ÒEÒ%\Ò‚Ò¢Ò·Ò&ÎÒ?õÒ5ÓQÓ(nÓO—Ó(çÓ(ÔK9Ô…ÔœÔ¼Ô ÓÔ7ôÔ-,ÕZÕnÕŽÕ¤ÕJºÕVÖ\Ö%uÖ›ÖE·Ö(ýÖ&×!:×$\×&�×"¨×Ë×8ë×F$ØRkØ¾ØPØØN)Ù*xÙ0£Ù/ÔÙ3Ú,8ÚeÚ!tÚ0–ÚMÇÚHÛ0^Û�Û$®ÛÓÛ4îÛ#Ü+7Ü+cÜ�Ü ©ÜÊÜMãÜ1Ý9CÝ:}ÝE¸Ý<þÝ;Þ
! QÞ \Þ)}Þ(§Þ!ÐÞ>òÞ1ßNßlß$‚ß+§ß$Óß*øß+#àOà5nà*¤àJÏàTáoáŠá
Ÿá#­á/ÑáWâ8Yâ"’âµâÆâØâðâ+ÿâ5+ãHaã!ªãÌã çã?äCHä;Œä/Èä3øäA,ånå3…å*¹åCäå<(æ9eæŸæ+¹æ&åæ*ç27ç!jç@Œç3ÍçHè3Jè>~è)½è5çè0é8Né8‡éXÀé$ê4>ê&sê5šê5Ðêëë&!ë'Hëpë…ë-—ëÅëÝë+åë*ì<ì[ì{ìRŠì-Ýì;í;Gí'ƒí'«í7Óí0îM<î"Šî$­î%Òî%øî$ï%Cï iï$Šï¯ïËï&åï'ð4ðSðkð „ð1¥ð1×ð 	ñ*ñ9ñ)Wñ�ñ+�ñ¼ñÑñïñþñò+òO:òŠò™ò±òËòãòûòó2óAóRóaóvóŽó¨ó8Áóúó
! ô%ô&?ô%fô+Œô¸ô9Ðô
! õ#)õMõ\õ$kõ�õ:¥õ.àõ>öNö]öoöŠöžö°ö¿öÎö!åö"÷J*÷[u÷#Ñ÷'õ÷ø3.øbø1tøa¦ø*ù3ùFù"Yù1|ù®ùÄùÜù*îù4ú*Nú#yú�ú³ú5Çú&ýú$ûx6û¯û!Ãûåû=ü/>ü(nüF—ü.Þü
ý"ý<=ý=zý¸ýÏý àý>þ+@þ=lþGªþ&òþÿ/ÿ7Bÿ�zÿ?.X‡+›:Ç=0@;q­ÀÛ.ï4GšXó67=uˆ—¬ÄÓè5&Ls‘§(Â'ë33G{�$©Îâ00?p�  Á+Ú!;-W-…³'Î6ö!-$Ot�¢»×í		+	?	R	*f	?‘	$Ñ	ö	.
! >
! ,U
! 4‚
! "·
! (Ú
! =#Ae|‘!¦È*è'R?’0ªÛø

!
#;
_
z
“
¥
¼
Ù
ò
"	,@Zw”%±+×) E*f0‘Âß÷!%6<\™®ÈÜô)&;bu+†²ÑíA@E†£»%Ö!ü010b“6«Eâ(3@@tµÐî	<S"p“«¾ÖîR
! 1]D�8Ô 
/.8^x—FPW/¨TØ&-@T•³<Ò9UITŸ0ô+%/Q<�<¾9û.5<d=¡Vß:6'q8™,Ò@ÿ2@4s6¨,ß2.?DnU³+	 /5 +e <‘ �Î �l!fú!�a"�ÿ"9�#4Ç#*ü#2'$7Z$/’$-Â$ð$`%^m%_Ì%:,&+g&Q“&'å&^
'Cl'0°'Dá'.&(AU(=—(AÕ(*)B)H^)(§)bÐ)3*QJ*&œ*>Ã*+1+'M+Bu+O¸+B,K,.k,š,1¶,!è,7
! -'B-Uj-$À-å-*.+.K..[.,Š.6·.î.
/&*/Q/f/ƒ/—/#²/%Ö/"ü/0=0]0!|0$ž0&Ã0/ê001-K1"y1#œ18À1!ù12:02#k2Q�2Qá2?33s30�3/¾3/î344:40o42 42Ó435
:5
H5/V5>†5#Å5"é5!6 .6O6-m6&›66Â6ù677<7X7v7•7«7Ë78ë7$8B82`80“84Ä83ù8-9 <9O]9­9Í9í9 	:**:U:(s:@œ:PÝ::.;4i;.ž;`Í;.< H<i<‡<=Ÿ<Ý<÷<=:=BW=4š=Ï=Aã==%>/c>&“>Iº>G?"L?,o?Jœ?1ç?*@&D@k@#…@*©@"Ô@D÷@@<A5}A4³A4èA&BIDB)ŽB¸BGØB: C[ChC8pC@©CêCjDFpD&·DBÞD4!EVEmE`‹EìE@ùE#:F3^F’FG™F3áF)G@?G!€G3¢G7ÖG6H9EH<H+¼HèH)I.0I%_I0…I'¶IÞIøIJ!(JJJ/YJ5‰J6¿J@öJ87K*pK0›K;ÌK2L6;L$rL$—L/¼L!ìL M)/M)YM)ƒM-­M$ÛMNwN›—N03OdO €O8¡OEÚO@ P3aP4•PÊP*âPV
QMdQ:²QCíQI1RG{RgÃR+SCS&aSˆS ¨SIÉSDT,XT,…T!²TFÔTFU^bUFÁU@VQIVc›VfÿVWfWA¾W9XT:XJ�XHÚX0#Y+TY:€Y#»Y#ßY+Zo/Z>ŸZPÞZA/[Fq[3¸[6ì[-#\Q\!m\-�\)½\'ç\<]9L]%†])¬](Ö] ÿ]/ ^2P^(ƒ^$¬^[Ñ^--_-[_O‰_hÙ_$B`5g`�`´`?Ò`;aNaOaa8±a=êaC(blb'‹b8³bìb
! c!&c*Hcsc4‘cÆc4æc1d,MdQzd=Ìd/
! e3:e<nek«ehf!€f6¢f6Ùf g01g1bg”g
! §gB²gDõg):h;dha hUiXi^si^Òi:1j"lj(�j'¸j"àj!k!%k Gk!hk"Šk+­k%Ùk)ÿk$)l#Nl+rl0žlÏlìl/m"8m[m&zm"¡m#Äm7èm& n/Gnwn&–n½n$×nün$o#=o$ao&†o-­o'Ûo1p5p#Rp#vpšp·pÖp!ñp$q$8q-]q+‹q·q!Öq!øq0r)Kr(uržr¸r:Ôr-s.=sls0‚s/³sCãs-'t4Ut6Št*Át6ìt##u#Gu1ku7�uÕu.òu"!vJDv@�v+Ðv;üv48w6mw6¤w(Ûwx-	x57x4mx*¢xTÍx "y#Cy gy.ˆy)·y$áy$z'+zSzOkzb»z/{\N{-«{@Ù{|65|el|XÒ|?+}=k}L©}-ö}.$~<S~=�~,Î~,û~2(4[N�(ßE€DN€E“€IÙ€F#�Dj�>¯�Bî�h1‚=š‚3Ø‚CƒSPƒ,¤ƒ,Ñƒ"þƒ!„<„'U„$}„@¢„6ã„K…Cf…Eª…Gð…H8†L�†/Î†4þ†P3‡H„‡LÍ‡LˆOgˆ6·ˆ;îˆ*‰H‰f‰!€‰>¢‰á‰û‰Š(ŠDŠ`Š|Š:•Š>ÐŠ-‹:=‹Ox‹HÈ‹EŒ#WŒO{ŒHËŒE�$Z�7�S·�YŽZeŽcÀŽD$�bi�*Ì�)÷�#!�/E�;u�%±�×�æ�&‘ )‘8J‘Qƒ‘*Õ‘=’>’+J’ v’)—’<Á’!þ’ “90“8j“,£“[Ð“W,”K„”AÐ”A•1T•,†•2³•-æ•"–7–&Q–5x–+®–Ú–)ò–—3—H—[—y—�—¨— Â—!ã— ˜!&˜ H˜!i˜‹˜«˜Ë˜4ë˜ ™>™O™!e™‡™¡™E´™Fú™BAš!„š+¦š+Òšþš ›:?›sz›1î›P œ@qœ:²œ1íœ�a?�(¡�(Ê�ó�#ž(7ž`ž&ž)¦ž.Ðž'ÿž'Ÿ;BŸ<~Ÿ?»ŸEûŸA )` &Š ,± 1Þ  ¡%1¡W¡Jp¡%»¡0á¡=¢*P¢,{¢'¨¢.Ð¢=ÿ¢H=£†£) £'Ê£ò£-¤'0¤&X¤¤'š¤Â¤%â¤-¥+6¥5b¥6˜¥!Ï¥ñ¥0¦B¦+\¦.ˆ¦#·¦!Û¦-ý¦$+§$P§#u§*™§6Ä§?û§3;¨,o¨6œ¨Ó¨+ï¨:©BV©-™©.Ç©5ö©),ª/Vª4†ªU»ª[«\m«eÊ«F0¬dw¬aÜ¬g>­h¦­q®R�®pÔ®YE¯Ÿ¯8»¯.ô¯#°N2° �°]¢°"±>#±-b±9�±IÊ±E²6Z²B‘²HÔ²H³Rf³)¹³Cã³;'´Oc´G³´Fû´+Bµnµ/Œµ%¼µ-âµ0¶2A¶#t¶˜¶7µ¶+í¶*·*D·@o·S°·<¸A¸*a¸*Œ¸9·¸<ñ¸'.¹6V¹!�¹-¯¹1Ý¹4º&DºNkºVºº»N‘»Zà»Q;¼?�¼Í¼:í¼,(½$U½&z½ ¡½Â½Iâ½=,¾/j¾"š¾(½¾'æ¾*¿89¿Hr¿K»¿3À;À#WÀ,{À5¨À#ÞÀ;Á<>Á;{Á<·ÁIôÁ<>Â){Â%¥Â3ËÂ7ÿÂ!7ÃYÃwÃ/‹Ã3»Ã3ïÃ/#Ä5SÄ‰Ä-¢Ä"ÐÄ&óÄÅ;3Å4oÅ¤Å7³Å.ëÅDÆ$_Æ)„Æ&®Æ)ÕÆ0ÿÆ10Ç bÇ)ƒÇ­Ç‚ÈÇ;KÈI‡È5ÑÈ?É7GÉ<ÉF¼É6Ê?:Ê8zÊ³Ê)ÌÊöÊ=Ë9SË-�Ë'»Ë?ãË8#Ì#\Ì<€Ì1½Ì
ïÌDýÌBÍ&ZÍ*�Í'¬ÍÔÍ>îÍ-Î>JÎ ‰Î;ªÎ:æÎ!Ï18Ï-jÏ(˜Ï[ÁÏ3Ð.QÐ@€ÐEÁÐUÑ3]Ñ.‘Ñ(ÀÑ*éÑÒ$Ò8ÒJÒ^ÒrÒ„Ò˜ÒªÒ¼ÒÎÒßÒñÒÓÓ&Ó8ÓJÓ\ÓnÓ€Ó”Ó¦Ó¸ÓÊÓÜÓîÓÔÔ&Ô:ÔLÔ^ÔoÔ�Ô“Ô¥Ô·ÔÉÔÛÔïÔÕÕ)Õ;ÕMÕ_Õ/qÕ¡Õ³ÕÊÕCáÕC%ÖiÖ‚Ö0™Ö;ÊÖ ×1'×Y×Sy×hÍ×]6Øh”ØýØ!Ù;ÙKÙ3jÙžÙ¾ÙÔÙèÙÿÙ#Ú$>ÚscÚb×Ú(:ÛOcÛ³ÛÍÛëÛ#üÛ  Ü/AÜ6qÜ!¨ÜÊÜKéÜ5Ý'EÝ'mÝ'•Ý½ÝØÝíÝÞ1$Þ5VÞ3ŒÞ0ÀÞ4ñÞ/&ß)VßG€ß1Èß7úß#2à*Và�à1žàÐàeìàfRá+¹áåá!â!&âHâgâ%â(¥âÎâîâ0ã41ãfãã �ã¾ã*Òã&ýã$äAä&aä&ˆä&¯ä<Öä'å!;å!]å(å¨å/¾å&îå%æ&;æ"bæ*…æ+°æ)Üæ&ç3-çaç~ç/�ç)¿ç"éç.è0;è"lè�è£è:Ãè3þè2é#Pé"téC—éAÛé.ê.Lê+{ê*§ê!Òê&ôê!ëA=ë?ë,¿ë,ìë)ì(Cì,lì&™ì'Àìèì!í5&í\í:oí.ªí(Ùíî1îHîcî8yî&²î-Ùî,ï04ï/eï*•ïÀï"àï#ð+'ð$Sð%xð)žðÈð1èðñ!8ñ+Zñ1†ñ2¸ñ(ëñ-ò,BòMoòI½òLóTó%só™ó.¹ó&èó-ô =ô^ôAsôµô.ÉôøôJõRcõ3¶õêõö(ö(=ö2fö$™öN¾ö
÷$*÷TO÷K¤÷ð÷øø)<ø+fø6’ø
Éø.×ø#ù*ù$Hù#mù‘ù+¯ù#Ûùÿùúú'6ú ^ú ú' úÈú;àú:û;Wû1“û(Åû"îû"üN4ü:ƒü@¾üÿüý9ýIýcý{ý•ý#²ýÖýóý þ /þ Pþ qþ ’þ ³þ Ôþ õþ ÿ 7ÿ Xÿyÿ—ÿ#®ÿ"Òÿõÿ1H*f)‘)»å!=YpŒ£Ãßû3O#k �0°$á%%,3R†£.»êü +4`7}/µå"# <]'} ¥ÆÝ%ø%0D+u4¡.Ö2$8]w)”¾(Ý%,)?6i% ÆBÜ=	$]	)‚	¬	Â	"×	#ú	&
!  E
! %f
! #Œ
! #°
! #Ô
! ø
! +AB<„!Á8ã$ A*b+�2¹7ì/$
$T
*y
%¤
"Ê
'í
=4r!Œ4®HãP,,}ª)À-ê&'?g‡§+½/é.4H2},°_Ýq=!¯AÑAU)q$›*À.ë82S†+™7Åý>&6eDœ2á,A(`.‰.¸ç((02Y=Œ!Ê'ì'$<7a#™%½6ã99T3Ž@Â37)W)�-«5Ù!(1ZOy(É(ò&B3_.“*ÂAí9/i5}L³/!0RCq1µ/ç.(Fo‡ %·&Ý ) I ^ +{ /§ × .è Q!Hi!4²!:ç!7""Z"t"7�"'¹"1á".#.B#(q#1š#+Ì#.ø#+'$%S$2y$¬$$Ç$ì$!þ$\ %E}%)Ã%<í%9*&d&)ƒ&"­&Ð&ã&õ&"''6'-^'*Œ'+·')ã''
(%5( [(|(œ(#¼("à($)"()K)+k)(—)!À)â)%*%(*%N*(t*&�*'Ä*'ì*'+%<+0b+0“+7Ä+3ü+10,fb,VÉ,5 -#V-z-š-º-(Ñ-)ú-*$.,O.+|."¨.YË.5%/a[/a½/R02r0¥0Iº0N15S1K‰1,Õ1]2_`2;À2<ü293'Y3�3*œ3'Ç3Cï3334:g4"¢4<Å4-5/05`5{5_™5Lù5,F6Hs61¼6î6 ý6!7+@7l7‰73¦7HÚ7#81787i8¡8¶8 Æ8ç8!9')9,Q9~95�9Ã9&Û96:H9:H‚:OË:';-C;tq;=æ;F$<9k<W¥<qý<œo=>2,>_>7v>+®>0Ú>-?9?Y?y?1—?2É?ü?5@*R@+}@%©@!Ï@/ñ@$!A;FA.‚A>±A#ðA?B#TB!xB0šB1ËB&ýB/$C4TC2‰C2¼C8ïC/(DHXD¡D¸D:ËD>E.EELtE/ÁE&ñE$FC=F4�F:¶F3ñF)%G@OG&�G$·G$ÜG-H&/H$VHB{HH¾H-I"5I$XI}IšI.¶IåI!J"%J.HJ3wJ(«J)ÔJ/þJ.K%JKpK,ŽK»K$ÖKûK$L&;L0bL&“L8ºL)óLBM'`M$ˆM/­M7ÝM/N#EN!iN!‹N$­N.ÒN O*"OBMO�O!£OÅOEâOh(P-‘P¿P8ËPQQ$=QbQ{Q.‘QÀQ ÚQûQ,R-FR/tR)¤R5ÎR6S/;S"kS8ŽS?ÇS)T*1T2\T9�TÉTæTJU)PU*zU2¥U9ØU*V+=V3iV:�VØV(êV<W6PW@‡W2ÈWMûW?IX?‰X1ÉX9ûX=5YhsY=ÜY5Z5PZ%†Z ¬ZNÍZ.[6K[0‚[)³[)Ý[P\%X\2~\+±\Ý\1ô\'&]@N]I�],Ù]&^)-^?W^6—^@Î^._3>_,r_)Ÿ_(É_0ò_:#`.^`&�`<´`"ñ`aJ.aCyaK½aK	bfUb*¼bDçb>,cFkc+²c4Þc4d,Hd,ud4¢d&×d)þd*(e$Se7xe°eÇe)Úe"f='f.ef0”f0Åföf`
! gzkg4ægnh.Šh>¹h"øhAi]iJuiÀi!ßi)j%+j%Qjwj&‹j²j Ðj!ñjk k(3k&\kƒk™k­kÍk/èkl1lEl2bl(•l"¾l8ál9m!Tmvm…m›m7¯m6çmn-n@n4Pn…n*¡nÌnên%o&'oNoio:ˆoÃo!âoxpY}p×p$òp q(8q1aq-“q8ÁqQúqOLr9œrGÖr&sAEsP‡s0ØsE	tQOt
¡t%¯t|Õt{RuDÎuv+v(Dvmv~v—v¯v4ÇvGüv2Dw$ww*œw/ÇwZ÷w RxNsxMÂxy0/yB`y £yAÄy/z06z0gzK˜z!äz"{"){L{k{%ˆ{%®{Ô{ð{f|wn|,æ|1}%E}k}2‡}(º}+ã}+~&;~+b~Ž~)¦~-Ð~0þ~/%I0o  ¾Dß$€1<€'n€.–€2Å€!ø€#�4>�$s�E˜�4Þ�(‚j<‚2§‚)Ú‚@ƒEƒBbƒQ¥ƒK÷ƒBC„ †„5§„"Ý„<…T=…+’…¾…2Ô…†3†+S†B†+Â†"î†"‡O4‡D„‡=É‡ˆ/ ˆPˆ6eˆ.œˆ1Ëˆ#ýˆ!‰ 6‰W‰1w‰…©‰ˆ/Š$¸Š ÝŠþŠ/‹'>‹'f‹Ž‹8«‹=ä‹-"ŒZPŒ7«ŒQãŒS5�‰�¨�"Á�$ä�#	Ž'-Ž0UŽ(†Ž)¯Ž9ÙŽ�'�;�O�c�-u�8£�Ü�'û�G#�k�!„�%¦�-Ì�ú�‘'(‘P‘]‘8|‘ µ‘$Ö‘#û‘’0’!@’ b’.ƒ’²’Ì’5è’“:“1I“5{“-±“ß“ö“*”7”/F”Cv”3º”Cî”#2•5V•
Œ•,š•"Ç•/ê•.–5I–+–4«–;à–+—*H—3s—"§—&Ê—ñ—^˜*k˜V–˜#í˜#™"5™"X™{™›™'¹™á™(ÿ™8(šaš@xš2¹š.ìš&›B›#\›"€›-£›,Ñ›þ›œ;œ/Vœ,†œ(³œ5ÜœW�j�7‡�'¿�ç�ž ž$8ž]ž+}ž9©žãž*Ÿ,+Ÿ,XŸ4…Ÿ"ºŸCÝŸ&! 8H A� Ã 'á %	¡./¡/^¡@Ž¡$Ï¡Aô¡K6¢5‚¢¸¢×¢'ö¢!£L@£V�£Eä£+*¤,V¤ƒ¤MŸ¤Bí¤,0¥4]¥:’¥7Í¥;¦5A¦!w¦3™¦4Í¦.§B1§t§�§.®§+Ý§0	¨":¨+]¨9‰¨IÃ¨I
©.W©*†©-±©0ß©1ª5Bª&xª'Ÿª(Çª/ðª4 «)U«,«¬«8Å«6þ«'5¬(]¬&†¬­¬¼¬=Ì¬(
! ­33­;g­D£­Fè­'/®4W®ZŒ®9ç®4!¯8V¯H�¯!Ø¯(ú¯E#°Ei°¯°Á°)ß°1	±2;±an±iÐ±S:²Ž²(«²&Ô²:û²@6³1w³R©³Nü³+K´3w´#«´*Ï´#ú´!µ+@µ5lµ¢µ·µÖµîµ/
! ¶0:¶/k¶-›¶.É¶7ø¶0·5·<·U·h·u·KŽ·CÚ·¸54¸,j¸<—¸1Ô¸z¹†�¹1ºP:ºe‹º*ñº2»9O»L‰»HÖ»¼5¼L¼"i¼\Œ¼3é¼7½*U½.€½'¯½,×½¾¾"<¾<_¾1œ¾4Î¾
¿+¿	=¿G¿5f¿#œ¿-À¿î¿PÀLWÀ[¤À5Á6ÁKÁBiÁ?¬Á:ìÁ9'Â.aÂ=�ÂMÎÂ9ÃoVÃRÆÃNÄ;hÄZ¤Ä&ÿÄD&ÅBkÅ>®ÅOíÅ*=ÆNhÆ·Æ:ÑÆ]ÇPjÇ@»ÇEüÇlBÈ5¯È1åÈ)ÉAÉ2^É"‘É´ÉÇÉ!ÚÉüÉÊ7Ê$RÊ/wÊ/§Ê/×Ê/Ë37Ë8kË3¤Ë8ØË+Ì3=Ì+qÌ3�ÌAÑÌ@Í:TÍ9�Í9ÉÍ;Î;?Î3{Î3¯ÎHãÎ&,ÏSÏ%oÏ6•Ï3ÌÏYÐ<ZÐ8—ÐÐÐ3îÐF"Ñ*iÑF”ÑDÛÑ. Ò-OÒ!}Ò(ŸÒHÈÒFÓ.XÓ+‡ÓQ³Ó%ÔD+Ô}pÔ-îÔYÕYvÕ<ÐÕ¶
Ö¶ÄÖ={×2¹×Fì×'3Ø)[Ø)…Ø+¯Ø6ÛØ6ÙIÙiÙ‚Ù”ÙA­Ù,ïÙÚE6ÚA|Ú4¾Ú9óÚ;-Û/iÛ=™Û/×ÛkÜsÜ#‰Ü­Ü"ÊÜíÜ.Ý!6ÝXÝ!qÝ“Ý"©Ý"ÌÝïÝ=ÞEÞ_ÞvÞ
ŠÞ.˜ÞHÇÞwß!ˆßBªßFíßQ4àS†à>Úà2á LáBmá3°á<äá*!â Lâmâ)�â+·â%ãâ%	ã4/ã0dã•ã©ãÅã?åãD%äjä%‰ä(¯ä'ØäEå)Få4på*¥å7Ðåæ$æ@æY[æSµæ,	çH6çAçZÁçè<è&Sèzè•èD¨èHíè-6é6dé5›éÑé(ñé'ê
Bê7Pêˆê$¥ê+Êê%öê"ë-?ë%më!“ë<µë>òë,1ì^ì,{ì¨ì@Çì'í 0ípQíqÂín4îo£î-ïAï1]ï5�ï*Åï7ðï=(ðEfð1¬ðLÞðL+ñ-xñ*¦ñBÑñ>ò>Sò=’ò=Ðògóivó_àó9@ô"zôŒ�ô"*õ#MõJqõC¼õ?öM@ö8ŽöBÇö&
! ÷*1÷*\÷%‡÷(­÷=Ö÷'ø6<ø(sø'œø=Äø<ùG?ùU‡ù9ÝùJú@bú3£ú/×ú+ûU3û¿‰û‰Iü7Óü.ý†:ý8Áý3úý4.þ cþ_„þ=äþZ"ÿ4}ÿ ²ÿ_ÓÿJ3J~?ÉE	KOR›Fîb54˜4Í;K>PŠAÛW?uAµA÷A9X{XÔL-LzVÇVEuL»NQWH©>òB1	Ct	<¸	Võ	PL
! K�
! Ké
! M5]ƒ]áE?B…PÈW
`q
BÒ
>.TOƒBÓKJbK­KùJEK�5Ü7JJJ•9à9ATE–QÜD.Ds@¸�ù:ŠJÅH^YV¸#V3-Š¸ÏÖ.ï	&+0}\vÚJQ+œ	ÈÒ%Þ,n1v mu…dûl`8Í:;A<}:ºLõ%B&h;�>Ë
! *!2To<€½Ð!î-.>+m™(·8à< BV F™ Bà Z#!+~!(ª!)Ó!:ý!N8"E‡"(Í"1ö"N(#<w#/´#ä#/û#6+$cb$+Æ$6ò$C)%6m%7¤%)Ü%;&BB&…&;š&&Ö&\ý&Z'"x''›'>Ã'A(*D((o(2˜(AË(>
)#L)-p)4ž)Ó)"ñ)Q*@f*B§*1ê*4+Q+'l+'”+	¼+Æ+"á+D,@I,Š,.§,Ö,,ó,1 -)R-+|-"¨-*Ë-5ö-,.C.X.r.h‹.ô./ +/1L/1~/ °/Ñ/î/*060 R0s0%�0µ0Î0)ê01341h1w1&Ž1µ1#Ì1ð1z
! 2b…2(è203#B31f3"˜3+»3ç3*4$+4!P4r4Š4¨4½4Ò4&è45R'5/z5:ª5*å546.E6)t6?ž6IÞ6)(72R7…76¢76Ù7 8
187?8.w8B¦8Jé849bM9.°91ß9@:@R:“:²:QÎ:1 ;4R;4‡;+¼;,è;,<>B<#�<(¥<KÎ<$=?=Z=8v=¯=>Å=N>MS>3¡>@Õ>?3?D?)d?(Ž?@·?%ø?+@J@2`@+“@+¿@$ë@6AGA5cA<™A<ÖA4B7HB€B/ŸB5ÏBAC7GC%C>¥CPäCa5D%—DB½DEE9E%VE-|E+ªE6ÖE-
F.;F-jF(˜F)ÁF1ëFG8-GfGG*’G`½G>HE]H$£HÈH1×H	I=IZInI†I,£IÐIðI:JKJ1hJšJ4°J0åJ8KJOK%šK%ÀK/æK&LC=L&�L&¨LÏL éLD
! MOMmM}ML•M6âM3NAMN$�N´NÒNïNOO*.OYO#xO?œOÜO0ùO8*P,cP2�P ÃP"äP?QGQ,gQE”Q!ÚQ(üQ8%R,^R,‹R$¸RÝR-ûR)SRESf˜S(ÿS7(T!`T‚T#¢T=ÆTAUFUD_U2¤U$×UWüU;TV>�V>ÏVDW9SW-�W3»WBïW2X4PX)…X¯X!ÉXëX3þX2Y+AYmYŠY( YÉY5ßYZD4Z=yZ]·Z#[C9[,}[<ª[6ç[;\6Z\n‘\>]*?]6j]4¡]IÖ]% ^'F^.n^ �^$¾^-ã^!_&3_ Z_${_% _$Æ_ë_ÿ_`7`T`s`Ž`(©`%Ò`0ø`!)a"Ka'na(–a>¿a:þa59b:ob4ªbEßb*%c)Pc;zc6¶c+íc1d=Kd‰d¨djÇd2e!Re7te!¬eÎeìe1f06f)gf)‘f»fÛfòf
g1*g8\g9•g0Ïghh=$h\bh\¿hJi$gi#Œi°ifËiM2j€j Ÿj]Àj,k1Kk0}k+®kÚk ÷kMl-flI”lhÞl2Gmzm!Šm"¬m,Ïmüm4nOn*hn “nO´noFo=eo£o½o$Öo$ûo8 p^Yp(¸p(áp.
! q%9q7_q3—qCËq1r4Ar!vrJ˜r&ãr5
! s@s5_s
! •s: s=Ûs/t*ItttS†tCÚt%u2Du#wu›u'»u-ãuNv<`v4�v7Òv^
! wiwVˆw6ßwRxˆix8òx1+y#]y#�y¥yBÁy@z0Ez9vz&°z4×z${31{6e{%œ{-Â{?ð{0|C|&]|„|+¤|1Ð|0}3}:Q})Œ})¶}(à}(	~#2~V~&v~=�~%Û~),+(X-�+¯Û ø€+9€e€"z€�€¯€
! Ç€Ò€ð€�(�$E�)j�.”�$Ã�(è�(‚:‚(Y‚6‚‚3¹‚3í‚4!ƒ:Vƒ?‘ƒ4Ñƒ	„%„'6„-^„5Œ„!Â„1ä„…)4…^…#p…5”…8Ê…5†+9†8e†1ž†%Ð†&ö†‡.;‡j‡8‰‡-Â‡'ð‡*ˆ4Cˆxˆ$“ˆ(¸ˆ5áˆ#‰);‰)e‰*�‰!º‰"Ü‰"ÿ‰."ŠQŠlŠ!‡ŠH©Š/òŠM"‹@p‹±‹Æ‹eÝ‹YCŒ&�ŒÄŒ ÜŒýŒ"�S<���­�'Ê�)ò�Ž6;Ž.rŽ¡ŽÀŽßŽþŽ�?.�Gn�?¶�*ö�!!�C�#R� v�*—�)Â�,ì�4‘)N‘$x‘=�‘<Û‘=’.V’1…’)·’1á’4“,H“'u“3�“BÑ“4”7I”/�”:±”2ì”4•.T•#ƒ•0§•3Ø•?–BL–4�–œÄ–Ba—&¤—UË—E!˜5g˜4�˜)Ò˜)ü˜-&™"T™@w™8¸™"ñ™9š!NšFpš$·š*Üš+›3›-I›'w›)Ÿ›É›Eå›M+œUyœFÏœ0�&G�5n�'¤�5Ì�žž:žYžbvžhÙž7BŸ0zŸu«ŸA! 9c J� 0è 7¡Q¡3i¡&�¡-Ä¡(ò¡ ¢&<¢ c¢„¢V�¢ô¢£*£:F£0�£'²£#Ú£*þ£9)¤Mc¤!±¤'Ó¤'û¤9#¥3]¥4‘¥;Æ¥1¦M4¦'‚¦6ª¦/á¦2§2D§,w§I¤§/î§3¨R¨g¨3{¨/¯¨3ß¨7©3K©©)Ÿ©)É©+ó©/ª2Oª$‚ª-§ª%Õªûª«J:«@…«$Æ«!ë«)
¬#7¬ [¬0|¬4­¬Hâ¬(+­T­k­„­'™­Á­1Ö­®)$®(N®Zw®&Ò®Bù®+<¯"h¯‹¯Ÿ¯µ¯9Ñ¯S°_°2o°6¢°=Ù°T±,l±7™±HÑ±3²/N²*~²6©²0à²X³Jj³fµ³8´U´%q´,—´$Ä´.é´9µ(Rµ({µ~¤µH#¶4l¶9¡¶7Û¶=·3Q·/…·4µ·.ê·.¸4H¸.}¸.¬¸,Û¸9¹9B¹9|¹:¶¹9ñ¹:+º9fº9 ºWÚºW2».Š»¹»Î»_î»7N¼$†¼!«¼"Í¼&ð¼0½)H½r½Ž½­½.À½*ï½,¾ G¾0h¾#™¾=½¾û¾<¿.S¿)‚¿5¬¿*â¿
À-ÀGIÀ3‘À+ÅÀ!ñÀ Á-4ÁObÁ²Á<ËÁ-Â*6Â$aÂ7†Â.¾Â(íÂ.Ã-EÃsÃ7ƒÃ.»Ã/êÃFÄ3aÄ'•Ä;½Ä"ùÄ+Å3HÅ@|ÅD½Å%Æ(Æ+HÆ3tÆ¨ÆÂÆØÆóÆ>Ç0RÇ-ƒÇ(±Ç<ÚÇÈ#5È#YÈ}È(šÈfÃÈ¡*ÉÌÉ$åÉ†
! Ê6‘ÊMÈÊ:Ë6QË6ˆË/¿Ë%ïË-Ì<CÌ5€Ì&¶Ì7ÝÌAÍGWÍŸÍ@·Í$øÍ2Î0PÎ/�Î±Î ÅÎ:æÎ!Ï*8ÏUcÏO¹ÏA	ÐPKÐ7œÐ=ÔÐ[ÑDnÑV³Ñ;
! Ò$FÒ3kÒ5ŸÒ0ÕÒ6Ó@=Ó?~ÓD¾Ó@Ô;DÔ…€Ô…Õ;ŒÕÈÕÜÕñÕÖÖ/ÖBÖWÖkÖ€Ö”Ö©Ö¿ÖÓÖéÖ××*×;×U×j×€×–×©×¼×9Ô×ƒØL’Ø ßØ–€ÙVÚMnÚQ¼ÚDÛ(SÛ(|Û"¥Û3ÈÛdüÛ3aÜ)•Ü%¿Ü=åÜH#ÝClÝ>°Ý=ïÝ?-Þ-mÞ(›ÞBÄÞHß7PßˆßZ¦ß`àYbà_¼àPáBmáB°á[óá8Oâ\ˆâbåâ\HãX¥ãKþãNJäQ™äJëä86åGoå2·å$êåNæ)^æ1ˆæºæ-Ùæiç>qç?°çFðç+7è4cè0˜è0Éè1úèF,é9sé%­é!Óé+õé+!ê+Mê,yê+¦ê+Òê,þê,+ë*Xëƒë,¡ë&ÎëKõëKAìU�ìBãìB&íaií{ËíAGî7‰î`Áî4"ï]Wï&µïMÜï"*ðOMðO�ðOíð'=ñ)eñ)�ñ)¹ñFãñH*òWsò&Ëò/òò "ó)CóPmóX¾óGô@_ô- ô.Îô9ýôA7õ^yõIØõ7"öiZölÄö-1÷5_÷;•÷9Ñ÷Uø5aøQ—øˆéø!rù?”ù5Ôù?
! ú=JúDˆú7Íú-û"3ûAVû=˜û%Öû1üû2.ü6aü.˜ü2ÇüWúüRýaý.�ý°ý<Âý2ÿý-2þ-`þŽþ�®þ <ÿ]ÿ2zÿ­ÿ(ÌÿEõÿE;$�M¦0ô.%HTG�å3>9&xXŸBø;FM#”1¸#ê')67`%˜¾*Ü"!*7L@„)Å ï6 GRh/»(ë"7#Uy"–1¹9ë%)=(g�B«Hî7	$V	{	•	³	(È	 ñ	
! %
! E
! 1c
! +•
! /Á
! /ñ
! (!8J&ƒª#É"í8I*d!�6±è*
6+
*b
2�
$À
å
5S)h,’0¿7ð!(#J0n&Ÿ#ÆFê;1/mA�@ß3 /T(„8­!æM6V8�.Æ3õ-)MW4¥:Ú@JVK¡;í,)AVH˜>áU &v'�LÅHU[F±Cø@<=}8»Oô-Dr6�0Ä3õ/)Y8o0¨DÙ1$PHu<¾;ûE70}‡®]6n”}Y�nÛTJKŸNëO: 7Š IÂ ,!09!j!.†!.µ!8ä!'"&E"+l"%˜">¾"Yý"bW##º#HÞ#('$$P$/u$¥$4»$Mð$‚>%Á%-à%C&CR&-–&Ä&-â&!' 2' S'&t'›'¹'-Ù'5(.=(%l(’(¦(¹('Ð(ø()0$)0U)†)›)»)"Ú)'ý)%*HC*(Œ*3µ*1é*3+5O+…+/¥+Õ+Fì+(3,)\,1†,8¸,+ñ,)-AG-+‰-/µ-6å-..œ.+Ë.0÷.(/(C/)l/*–/-Á/*ï/,0G0e0"„0 §0È0Þ0õ0A1 R1Es1#¹1 Ý17þ1,62(c24Œ2Á2(Û2/3/43.d3“3²3%Í3=ó34144f4+›43Ç40û43,5,`5)�57·56ï5!&6&H67o6%§62Í6.7)/7+Y7.…76´7ë748;8,Y8-†8´8"Ê8/í8?9+]9B‰92Ì96ÿ96:4V:F‹:'Ò:ú:!;!3;%U;{;7�;2Ç;4ú;>/<5n<1¤<"Ö<%ù<1=.Q=€=&œ=!Ã=å=>^>x>3”>%È>0î>J?1j?2œ?(Ï?ø?@#@=@L@@j@C«@Nï@N>A�A7¡AÙA'îA'B(>B$gB>ŒB=ËB)	CE3CyC‘C!­CÏCáCôC1D=D]D"}D D%¹D6ßDE<-EjE„E™E³E,ÎE&ûE""FHEF3ŽF/ÂFUòF&HGLoG3¼GYðG8JH3ƒH4·H ìH
I I5I&PI*wI&¢I*ÉI,ôI.!JPJnJŽJ9§JCáJ)%KOKiK€K"›K¾K7ÞK4LJKL–L´L1ÊL.üL*+M:VM ‘M²MÏMíMNN,8NeN5}N.³NâN%O/(O0XO‰O¨OÂOßOìO-P"1P-TP,‚P&¯P'ÖP+þP*QBQTQrQ‡Q¡QºQ,ÍQ5úQ0RHR*eR)�R4ºRïR!S.S/IS*yS)¤SÎSOíS=T*UT!€T$¢T$ÇTìT#U+UJUcU$�U¦UÀUÚUùU V13V7eV�VI·V8W:W!FW#hW&ŒW³W%ÓWùW5XJX(`X@‰XBÊXA
Y OYpY �Y-±Y<ßY!Z1>ZpZ�Z¬Z!ÇZPéZ6:[<q["®[.Ñ[\G\Gg\'¯\-×\3] 9]Z](w]% ]1Æ]#ø]5^*R^'}^$¥^'Ê^3ò^J&_>q_%°_+Ö_`"`$1`V`!k`A�`EÏ`Da'Za‚ax�a›b}²b0c-Ec#sc2—c:ÊcMd/Sd8ƒd7¼d'ôd(e?Ee.…eK´e2f$3fZXf8³f#ìfg,gIg%gg7�g&Åg,ìg-h!Gh ih6ŠhÁh+àhi*iIigi‚i!¡i,Ãiði#j(jJFj=‘j2Ïj=k2@kBsk7¶k=îk,l<5lArl´l/Ñlmm&9m-`m&Žmµm!Õm÷mnB1n"tn—n¶n9Õn4o5Dozo$Žo!³o.ÕoGp$Lpqp ‰p%ªp)Ðpúpq-2q`qq&“qºqÊq%ßqr"r7rhKr>´rórsP#s9ts9®s*ès>tERt?˜tzØt#Su8wu-°uDÞu>#v1bv”v­vÆvÖvòvw.w!Lw/nw žw6¿w)öw5 xNVx¥x·xf×xK>y_Šy]êy$Hz.mz9œz2Öz<	{;F{G‚{
! Ê{'Õ{
! ý{|]|&}|1¤|DÖ|=}EY}<Ÿ}0Ü}8
~KF~K’~'Þ~?Fb-‚0°$áE€0L€}€)›€&Å€ì€!ÿ€\!�%~�<¤�(á�j
! ‚Gu‚9½‚÷‚/ƒ.>ƒ)mƒ)—ƒ Áƒâƒüƒ4„&J„+q„*�„(È„Fñ„08…Li…4¶…ë…'ú…U"†)x†6¢†)Ù†6‡	:‡*D‡o‡0�‡1À‡Uò‡NHˆ!—ˆ2¹ˆìˆ]ÿˆd]‰]Â‰V ŠUwŠdÍŠU2‹Nˆ‹U×‹-ŒGEŒ�Œ+¢ŒÎŒ*åŒ/�+@�/l� œ�P½�/Ž/>Ž,nŽ&›Ž9ÂŽ$üŽ!�*9�&d�-‹�@¹�-ú�@(�8i�K¢�8î�K'‘s‘1’‘-Ä‘+ò‘’.:’(i’’’T¦’2û’2.“a“p“3‹“7¿“ ÷“)”+B”*n”5™”Ï”1Ø”$
! •!/•,Q•<~•U»•!–B3–=v–F´–:û–6—0U—u†—#ü— ˜?>˜:~˜F¹˜=™I>™|ˆ™=š7CšC{šT¿šZ›[o›dË›E0œcvœoÚœ9J�3„�)¸�!â�ž:"ž:]ž[˜ž#ôžŸ=8ŸvŸ/ŽŸ%¾ŸäŸ 1$ IV C  Dä %)¡[O¡!«¡Í¡Mí¡M;¢G‰¢IÑ¢K£?g£#§£%Ë£4ñ£w&¤2ž¤IÑ¤¥0/¥`¥z¥:˜¥1Ó¥_¦(e¦&Ž¦/µ¦+å¦F§-X§+†§@²§<ó§80¨5i¨6Ÿ¨Ö¨ò¨5©,E©2r©?¥©å©ÿ©7ªBOª,’ª'¿ª6çª+«+J«6v«?­«)í«2¬7J¬/‚¬²¬Ç¬!Ù¬'û¬(#­QL­ž­-¾­=ì­#*®!N®5p®)¦®%Ð®.ö®/%¯0U¯†¯.¥¯6Ô¯#°/°B°3a°6•°+Ì°'ø°) ± J±Ak±"­±(Ð±ù±²"²-.²\²	k²Au²·²Ê²:ê²%³OD³'”³&¼³ã³?´C´%a´L‡´Ô´ê´µ0&µWµ†\µãµmôµ«b¶Z·&i·%�·#¶·BÚ·C¸Ka¸V­¸v¹{¹R‹¹;Þ¹Kº*fºM‘ºßºóº*»$9»*^»"‰»<¬»8é» "¼$C¼"h¼&‹¼²¼Ë¼*ë¼5½.L½0{½4¬½8á½A¾6\¾2“¾8Æ¾9ÿ¾29¿2l¿8Ÿ¿1Ø¿ 
! À<+À2hÀ>›À5ÚÀ>Á)OÁ0yÁ"ªÁÍÁçÁÂ%Â"DÂ gÂ ˆÂ-©Â"×Â!úÂÃ%6Ã%\Ãk‚ÃkîÃkZÄqÆÄR8Å�‹Å'Æ4DÆJyÆXÄÆ/ÇMÇ]Ç'{Ç £Ç+ÄÇ!ðÇÈ#ÈAÈ^ÈvÈ“È§È5»È-ñÈÉ+É7ÉCË½EË¼Ì¹ÀÌzÍ “Í´Í
! ÊÍ1ÕÎ2ÏR:Ï�Ï¢Ï®ÏºÏYÒÏY,ÐL†ÐJÓÑÓK'ÓLsÓZÀÓ=ÔIYÔ;£ÔKßÔX+Õ=„ÕPÂÕÖ$*Ö'OÖwÖ$ŽÖ'³Ö&ÛÖ&×.)×X×_×*f×+‘×›½×2YØŒØ’Ø¬Ø&ËØ2òØ4%Ù(ZÙƒÙšÙ¸ÙØÙïÙÚ&Ú?Ú%\Ú"‚Ú¥ÚÂÚØÚ÷ÚjÛl{Û3èÛÜ9Ü'XÜ€Ü  ÜÁÜÙÜîÜÝ'Ý%@Ý!fÝ-ˆÝ*¶Ý*áÝ;Þ%HÞnÞ ˆÞ0©Þ7ÚÞ;ß;Nß/ŠßKºßKà%Rà1xà3ªà$Þà>á3Bá6vá3­áááCÿá)CâZmâ}Èâ9Fã\€ã‚Ýãv`äA×äQå1kå�åBæÞ`æL?ç`Œç]íçdKè>°è;ïèB+éMnéQ¼éPê_êEßêA%ëRgë9ºëTôëNIì5˜ì�ÎìM\í7ªíBâíE%î†kî9òî’,ïF¿ï>ðŒEð9Òð‚ñF�ñMÖñx$òF�òFäòN+óQzó ÌóSmô¢ÁôOdõM´õ[ö^^öO½öI
÷AW÷>™÷>Ø÷@ø|XøSÕøK)ùTuùFÊùMúP_ú:°úGëú43û:hü5£ü(Ùü&ýc)ý8�ý.ÆýNõýDþ+Pþ8|þCµþùþ)
ÿ07ÿ	hÿ9rÿ\¬ÿr	;|J¸8)<fGxQÀ)<R$l$‘¶*Î ù6%Qw(”(½/æ2"I"l �°
! ÊÕ$é8'@`J¡¡ìŽ;¬;è$6DV{BÒO*e'�)¸Hâ>+	tj	ß	9ÿ	M9
! &‡
! >®
! í
! ö
!  "/'RKz<Ær vA—Ùë6ý4
[E
¡
O§
8÷
I0>z1¹\ëvHZ¿l=‡yÅV?‰–> {_VÛP2XƒVÜl3F 7ç\Z|h×>@VRÖa),‹0¸@éO*IzPÄÍ¶ãéš‡„˜£¥cIe­­¦Ávh@ß  7 6G ~ *ž ,É ,ö #!>7!v!!”!¶!Ð!?ä!B$"g""�"q¤"=#CT#3˜#9Ì#k$5r$*¨$Ó$Kâ$>.%5m%A£%Då%=*&Dh&8­&Yæ&9@'Bz'9½'-÷'@%(1f(J˜(Wã(B;)7~)�¶)g8*H *Gé*N1+8€+=¹+=÷+G5,<},lº,]'-d…-Lê-N7.†.5ž.kÔ.W@/V˜/Fï/J60ƒ�0V1U\1K²1„þ1lƒ2xð2vi3Aà3\"4�4_
5hm5cÖ5r:6y­6]'7h…7[î7}J8cÈ8W,9l„9oñ9Ca:B¥:Wè:B@;yƒ;sý;Pq<oÂ<O2=~‚=Z>n\>FË>K?L^?Y«?n@]t@EÒ@?A/XACˆA>ÌA<B"HB
kB@yB5ºB5ðBH&CFoC)¶CeàCQFDs˜DnE{{Eì÷EäF€óG‘tH~I”…I�J ªJ}KKŽÉKXXLD±LföLÒ]Mô0Ns%O„™OqP‚�P‚Q“–Qp*R�›RFSBdSˆ§Sª0TNÛT_*UUŠUfàU]GVn¥VKW\`W"½W#àWeXrjX!ÝX:ÿX.:Y;iY¥Y2½YðY%Z!4ZVZ1nZ5 Z>ÖZ([w>[<¶[>ó[T2\[‡\_ã\PC]G”]MÜ]6*^[a^?½^-ý^++_-W_5…_»_+Û_`=`M[`9©`]ã`AAa`ƒa@äa^%b?„bÄbRÞb91c&kcA’cfÔc ;dF\d8£d?Üd:e8We8�e6Ée1f92f˜lf\g*bg5�g+ÃgJïgB:h!}h>Ÿh!ÞhUi0ViR‡iqÚi*Lj-wj,¥j+Òj_þjB^kA¡k8ãkClk`lAÌlCmJRm=�mFÛm7"nLZn?§n8çnR o;soL¯oVüo<SpB�p?Ópbq6vq:­q<èq;%r)ar@‹r=Ìru
! s"€s&£sCÊsAt(Pt,yt@¦tXçt7@u;xu+´uQàuH2v9{v8µvBîvC1wZuwWÐwS(x3|x@°xqñx�cy+ñy0z2NzM�z1ÏzR{0T{!…{!§{>É{C|lL|H¹|X}L[}Z¨}Q~GU~1�~.Ï~:þ~c9?� Ý�þs€€tô€Ii�:³�>î�=-‚ak‚YÍ‚8'ƒI`ƒJªƒGõƒp=„'®„:Ö„„…r–…j	†Ht†?½†>ý†s<‡w°‡<(ˆ/eˆ:•ˆLÐˆ‰I9‰Tƒ‰dØ‰{=ŠD¹ŠdþŠxc‹+Ü‹JŒTSŒ7¨Œ8àŒG�=a�?Ÿ�@ß�% Ž<FŽHƒŽOÌŽG�¦d��3(�X\�=µ�Aó�65‘9l‘2¦‘9Ù‘2’CF’<Š’3Ç’!û’:“"X“3{“H¯“Kø“1D”8v”U¯”s•py•kê•DV–^›–4ú–:/—9j—1¤—eÖ—C<˜-€˜-®˜<Ü˜?™ÉY™D#šdhš1Íš9ÿš:9›Kt›4À›5õ›J+œIvœCÀœ7�7<�Ot�0Ä�-õ�#žBžJ_žIªžEôž7:ŸPrŸ2ÃŸaöŸ%X 3~ 1² Sä 28¡Mk¡¹¡<Ö¡4¢CH¢EŒ¢GÒ¢o£TŠ£)ß£)	¤/3¤Mc¤B±¤?ô¤C4¥Ex¥s¾¥)2¦>\¦M›¦Eé¦x/§5¨§3Þ§I¨F\¨L£¨Dð¨D5©Dz©D¿©3ª08ª!iªC‹ª!ÏªÔñªÃÆ«7Š¬ÛÂ¬Qž­.ð­.®9N®]ˆ®5æ®:¯KW¯.£¯JÒ¯G°@e°@¦°=ç°(%±/N±1~±,°±.Ý±.²W;²8“²)Ì²(ö²'³?G³8‡³7À³:ø³3´;M´2‰´C¼´JµUKµV¡µUøµVN¶4¥¶hÚ¶4C·Gx·EÀ·?¸2F¸2y¸+¬¸.Ø¸R¹5Z¹L�¹JÝ¹5(º7^º!–º:¸ºGóºJ;»8†»6¿»lö»4c¼C˜¼Ü¼1ü¼.½,N½9{½µ½&Ë½$ò½\¾2t¾0§¾4Ø¾8
¿MF¿O”¿3ä¿bÀ;{À>·À,öÀ-#Á?QÁ1‘Á(ÃÁ8ìÁ,%Â2RÂ5…Â4»Â<ðÂ5-Ã2cÃ5–Ã*ÌÃ9÷Ã/1Ä0aÄB’Ä>ÕÄ#Å*8Å!cÅM…Å9ÓÅ>
Æ1LÆe~ÆXäÆT=Ç’ÇTªÇTÿÇTTÈO©ÈTùÈcNÉS²ÉSÊ8ZÊŸ“ÊJ3ËI~Ë9ÈËXÌa[Ìa½ÌÍ1=Í&oÍa–ÍKøÍPDÎD•Î=ÚÎIÏCbÏZ¦ÏOÐLQÐ=žÐOÜÐC,ÑGpÑR¸Ñ8ÒEDÒIŠÒNÔÒE#ÓGiÓI±Ó>ûÓP:Ô0‹ÔM¼ÔE
! Õ"PÕWsÕ;ËÕKÖbSÖ\¶Ö&×C:×%~×*¤×NÏ×,Ø(KØ'tØ4œØ.ÑØÙ"ÙC>Ù#‚Ù'¦Ù4ÎÙ/ÚA3ÚGuÚ9½Ú8÷Ú00ÛlaÛhÎÛ77ÜpoÜ.àÜ3ÝKCÝ*�Ý#ºÝ2ÞÝCÞ8UÞ-ŽÞ=¼Þ#úÞ/ßCNß?’ßÏÒß9¢à7ÜàBáRWáCªáEîá:4â\oâŒÌâ`Yã;ºãQöãRHä>›äTÚäa/åT‘å7æå,æJKæC–æ>ÚæIçicçDÍç:èFMès”èNéSWé@«éZìéEGêK�êBÙê9ëAVë˜ëM±ë5ÿë35ì4iìLžì*ëìDí[íwí“íB¨í`ëíELîB’î_Õîa5ï>—ïSÖï]*ðeˆð?îðq.ñ: ñDÛñ ò/8òhòò#žò#ÂòFæòQ-ó5ó�µókFô7²ô[êôGFõlŽõ>ûõW:ö’öN÷la÷tÎ÷yCø"½ø/àø#ù#4ùLXù:¥ùjàù:Kú0†ú@·ú<øú05ûSfû/ºûLêû57üQmüW¿üEý\]ý@ºý'ûý.#þ'Rþzþ@”þÕþ…çþ5mÿ7£ÿMÛÿF)Fp;·.ó@"Vc$º,ßG,TG�PÉCr^qÑ`Cl¤t††r
5€5¶6ì<#!`>‚>ÁIFJU‘ZçTB	Z—	?ò	,2
! ]_
! v½
! i4EžFä3+d_WÄx
�•
#&RJG�MåG3O{PË�€ª1+7]F•Ü=üe:> 0ßDXUj®^Kx+Äfð7WW�0ç(*A&l'“%»Gá\)2†]¹8$PMu(ÃKìF81K±,ý-*`XQ¹Q"]f€RçP:S‹AßX!4z4¯äCOHF˜Nß=.9l&¦0ÍOþ7N #† Kª pö ,g!3”!6È!5ÿ!(5".^"H�"Ö"Qè";:#,v#M£#)ñ#.$+J$2v$#©$1Í$.ÿ$C.%Kr%N¾%*
&l8&$¥&BÊ&T
'0b'(“'*¼';ç'm#(3‘(&Å(?ì(A,)Mn)5¼)Lò)2?*4r*9§*Gá*9)+4c+ ˜+S¹+4
,`B,R£,1ö,�(-�ª-3,.s`.kÔ.Q@/I’/QÜ/0.0n_04Î0R16V1(�1{¶1�22•Â2MX38¦3cß3.C4)r4'œ4@Ä4,5'25Z5%y5aŸ5e6ƒg6Që6P=7>Ž7.Í77ü7L48�8/¡8)Ñ80û8j,93—9RË9Q:Pp:1Á:#ó:S;(k;E”;(Ú;*<A.<Np<Y¿<·='Ñ=9ù=93>=m>I«>Rõ>MH?U–?]ì?J@Z@-v@6¤@=Û@~A*˜A@ÃABB2BMB=hB¦BµBNÒBV!COxC9ÈC@DICDl�DqúD¸lEœ%F•ÂFxXGeÑGa7HH™HPâH3IKI"jI9�I/ÇI'÷I?JP_J0°J/áJ?K,QK+~KBªK5íK8#LJ\L6§L4ÞL;M%OMPuM^ÆMÂ%NEèNL.O.{O5ªOOàOP0PN�P:ÐPNQZQPxQ]ÉQ7'RP_R@°R$ñRLS?cSA£S6åS]T/zT'ªTGÒT>U/YUw‰UYV=[Vd™VwþVWvW=ÎWdX%qX^—XVöX^MY”¬Y—AZ1ÙZC[?O[I�[EÙ[&\HF\B�\0Ò\:]1>]?p]s°]0$^CU^€™^<_4W_0Œ_;½_5ù_)/`)Y`jƒ`Dî`G3aJ{aLÆa’bD¦b8ëbJ$c3ocC£c>çc6&dH]d2¦d:Ùd0e;Ee.�e+°eJÜe;'f0cf+”f1Àf@òf`3g„”gPh.jh(™hkÂh-.i"\i1iC±i/õiE%j9kj>¥j$äjD	kNk<Îk0l(<l*el,�lJ½lnmxwm=ðmm.nmœn4
! o,?olo"…o5¨o/Þo;p?Jp(Šp6³pBêp2-q5`q=–q&Ôq=ûq89rArrE´rCúr)>s4hs,�s+Êsös)tE>t„tŠt›t…¸t6>u4uu@ªu8ëu $vEv ]v
! ~v*‰v1´v3ævw./w*^w&‰w\°w9
xGx#ex)‰xO³xOy^Syz²yH-z-vz¤z/Äzmôzb{+z{-¦{KÔ{ |2|"R|!u|&—| ¾|Wß|W7}Q�}Sá}r5~ ¨~KÉ~Y2o7¢!ÚüJ€g€(}€¦€J½€F�BO�%’�4¸�!í�"‚+2‚8^‚9—‚AÑ‚'ƒ,;ƒKhƒ´ƒ(Óƒ7üƒ/4„9d„6ž„Õ„.é„@…QY…%«…6Ñ…F†&O†8v†9¯†\é†PF‡G—‡0ß‡ ˆ81ˆ(jˆ“ˆ8°ˆ9éˆC#‰Æg‰Ö.Š[‹\a‹Î¾‹Ê�ŒzX�ŠÓ�\^Ž]»ŽÔ�¼î�h«�f‘I{‘ÐÅ‘¸–’fO“d¶“Œ”>¨”Fç”7.•-f•.”•2Ã•(ö•&–6F–,}–*ª–,Õ–�—�“—9˜aO˜f±˜v™6�™%Æ™`ì™2Mš%€šL¦šWóš?K›[‹›:ç›U"œ0xœ4©œeÞœ)D�/n�ž�3¶�Jê� 5ž,Vž&ƒž ªž8ËžVŸH[Ÿ.¤ŸOÓŸš# 6¾ <õ /2¡'b¡,Š¡&·¡,Þ¡"¢&.¢+U¢%�¢<§¢5ä¢£82£6k£'¢£5Ê£k¤;l¤q¨¤#¥>¥9Q¥X‹¥&ä¥.¦-:¦h¦ ƒ¦)$§N§8l§)¥§hÏ§>8¨Dw¨,¼¨1é¨:©UV©L¬©(ù©("ª$Kª'pª˜ª ´ªÕªLòª ?«]`«M¾«N¬N[¬,ª¬,×¬E­2J­7}­@µ­7ö­G.®Gv®¾®Ù®ñ®¯9+¯De¯jª¯e°&{°-¢° Ð°'ñ°+±*E± p±I‘±UÛ±!1²#S²w²ˆ²&�²*Ä²ï²3³9³2O³'‚³ª³%Â³è³´&´.C´r´.�´%¾´ ä´1µ7µ$Tµ;yµµµËµêµhûµd¶-{¶.©¶1Ø¶*
! ·25·1h·%š·"À·,ã·¸*¸EI¸M�¸CÝ¸B!¹8d¹E�¹_ã¹QCº`•º@öº7»P»:i»¤»V¿»2¼4I¼~¼—¼.´¼Hã¼I,½Sv½YÊ½X$¾,}¾/ª¾?Ú¾A¿B\¿LŸ¿Rì¿B?ÀC‚ÀMÆÀSÁghÁwÐÁHÂFÈÂCÃ!SÃ(uÃ1žÃiÐÃ[:Ä'–ÄC¾Ä0Å/3Å"cÅ$†Å«Å0ËÅüÅhÆqyÆ{ëÆegÇCÍÇxÈ(ŠÈ1³ÈKåÈC1ÉIuÉÞ¿ÉsžÊæË�ùË¾ŠÌdIÍ5®Í\äÍ1AÎ2sÎ<¦ÎBãÎ^&Ï$…Ï)ªÏJÔÏaÐ+�Ð)­Ð2×ÐO
! ÑZÑtÑ?”Ñ.ÔÑÒg Ò5ˆÒa¾ÒQ ÓYrÓ@ÌÓ9
ÔLGÔK”ÔMàÔ\.Õ[‹Õ]çÕKEÖ]‘ÖdïÖtT×IÉ×RØQfØS¸ØbÙaoÙcÑÙZ5ÚA�ÚaÒÚ_4Ûl”ÛLÜ\NÜ\«ÜlÝ4uÝ,ªÝ‹×ÝcÞãÞIß#Lß/pß* ß,Ëß6øßF/àvà�à+¢à7Îà™áJ á5ëá !â4Bâwwâ:ïâ7*ãbãd~ãeããoIäj¹äŒ$åu±åF'æWnæSÆæXçYsç:ÍçDè]MèC«èMïèO=éI�éX×éG0êYxê-Òê6ë17ë-ië%—ë@½ë}þë]|ìÚì6úì#1í Uí\víEÓí<î9Vî6�î?Çî>ïJFï@‘ï5ÒïOð7Xð8�ðBÉð*ñ/7ñ1gñe™ñhÿñjhòUÓò})ó[§ó1ô=5ôOsô'Ãô.ëô&õFAõVˆõFßõ1&ö Xö"yö@œöSÝö;1÷'m÷0•÷9Æ÷:øV;øY’ø1ìø[ù-zùF¨ùnïùL^úE«ú^ñú_PûI°û5úû>0ü@oüD°ü/õü %ý/Fý2vý'©ý.Ñýþþ2þGQþ@™þ8Úþÿ=/ÿ8mÿ1¦ÿ4Øÿ3
A,a#Ž^²BLTf¡/?84x!­DÏF][M¹F;NUŠ7à8SQA¥RçI:2„,·5ä;-V+„6°=ç2%8X,‘4¾6óY*	W„	YÜ	=6
! 8t
! Q­
! +ÿ
! 2+^I~9È,5/Le0²+ã@
1P
'‚
=ª
'è
55FL|8É7?:?z0º1ë:ZX:³%î95NF„,ËHø;A;};¹7õ-#Eib†.é#<+V.‚2±?ä/$4T!‰)«2Õ).25a-—Å,àd
6rZ©7(< e3†Eº.=/)m/—$Çgì'T.|«¼�Ñ:S]Žì'/4L�c¡CVI_ VPW¨¾,ÏXü4UXŠPãL4 M� MÏ a!ƒ!P"hT"a½"*#.J#1y#*«#2Ö#1	$%;$2a$,”$)Á$ë$H%P% j%:‹%,Æ%Hó% <&K]&d©&O'X^'·'Ð'í',	(06(>g(4¦(GÛ(##)/G)+w)6£)$Ú)#ÿ)!#**E*p*#Œ*,°*%Ý*7+';+Hc+¬+8Ç+o,&p,7—,SÏ,B#--f-I”-DÞ-;#.%_.9….¿.^Ú.79/#q/%•/…»/A0:X0Q“07å0K1i1„1¤1Á1à1þ1?2>T27“2Ë2â2334<32q3¤39¸3Bò3I54@4AÀ4K5 N58o5A¨5Fê55164g6Dœ63á6=7*S7P~7/Ï7-ÿ7=-83k83Ÿ8FÓ8U9'p9˜91¸9^ê9hI:5²:&è:&;O6;!†;,¨;Õ;'ñ;<G1</y<#©<+Í<ù<*=A=`=v=]�="î='>9>2V> ‰>aª>/?<?R?8i?8¢?6Û?x@9‹@'Å@3í@?!A7aA/™AÉA(ÍA/öA8&BL_B%¬B%ÒBøBNCNgC-¶CTäC99D3sD4§DXÜD&5E2\E$�E$´E+ÙE<F:BF6}FD´FAùFl;GW¨GDHZEHQ H2òHL%I6rI>©I?èI?(JKhJE´JPúJZKKO¦KIöKb@LO£LEóL?9MOyM\ÉMB&NFiNF°N_÷N>WOA–O<ØOSPEiPI¯PIùPJCQGŽQcÖQQ:RFŒRIÓRBS?`SE S;æSN"T]qTGÏTMULeU]²UBVLSV[ VwüVEtW}ºWX8XR‘XdäXAIYB‹YBÎYPZCbZM¦ZQôZLF[Z“[<î[V+\3‚\,¶\=ã\!]L?]PŒ]ªÝ]-ˆ^j¶^o!_x‘_7
! `MB`Ž�`;aK[ac§a^b3jbmžbcØ&cjÿcjd„d"¢d#Ådƒéd!meÅ�e.Uf6„fJ»f"gD)g\ngTËgG hKhhI´hCþhKBiKŽi^ÚiU9jM�j2Ýj$k&5kM\krªk1l Ol'pl˜l3´lLèlL5mC‚m%Æm1ìm:n5Yn5�n5Åndûnj`oRËoIp3hp9œpBÖpCqT]q5²q'èq?r4Pr3…rU¹r9s8Is9‚sE¼s)tG,t3tt!¨tUÊtj u_‹uOëur;v2®v6áv4w3Mw(�w1ªw;Üw6x«Ox˜ûx8”y2Íy0zð1zÉ"{_ì{ML|#š|¾|/Ù|4	}.>}2m}2 }$Ó}-ø}4&~4[~!�~=²~ð~TPX'©2Ñ*€N/€d~€Yã€q=�X¯�‚2‚G‚Y‚Ej‚9°‚sê‚T^ƒ8³ƒœìƒX‰„Vâ„9…<S…�…V¡…Lø…BE†6ˆ†/¿†#ï†k‡/‡*¯‡+Ú‡§ˆ!®ˆKÐˆ�‰;ž‰0Ú‰SŠ3_Š“Š7§ŠAßŠg!‹�‰‹Œ;*ŒDfŒ5«Œ?áŒ3!�U�?t�;´�=ð�W.Ž*†Žn±ŽP �Aq�E³�Cù�M=�G‹�:Ó�<‘:K‘9†‘À‘"Ù‘ü‘\’Hr’+»’Bç’"*“DM“$’“*·“â“”A”+Z”#†”3ª”sÞ”+R•+~•=ª•3è•:–+W–#ƒ–>§–2æ–—T4—G‰—.Ñ—-˜-.˜C\˜¶ ˜!W™/y™/©™/Ù™,	š<6š_sš8ÓšE›'R›!z›zœ›)œ5Aœwœ)’œ?¼œ üœ�[<�&˜�)¿�7é�K!ž'mž>•žIÔž9ŸXŸ9lŸ)¦Ÿ‰ÐŸ2Z >� Ì Þ 7ù  1¡7R¡2Š¡%½¡/ã¡+¢7?¢6w¢:®¢&é¢£?-£=m£C«£Kï£];¤d™¤tþ¤(s¥ œ¥½¥#Ý¥(¦[*¦h†¦.ï¦§=§Z§"p§:“§^Î§#-¨,Q¨5~¨/´¨)ä¨©)©*?©j©…©( ©6É©Lª!Mªoª‰ª6¥ª'Üª2«'7«
_«m«~«�«…«=ž«Ü«ä«ì«(¬:)¬<d¬&¡¬FÈ¬B­2R­B…­6È­ÿ­.®@5®v®‚®@‹®Ì®>Ø®]¯]u¯TÓ¯+(°AT°K–°Râ°U5±	‹± •±R¶±	²%²@²'_²Y‡²4á²;³<R³<�³Ì³gâ³0J´C{´2¿´Mò´K@µCŒµ;Ðµ=¶J¶1f¶˜¶3±¶;å¶?!·:a·7œ·8Ô·7
¸7E¸6}¸4´¸8é¸6"¹9Y¹1“¹5Å¹1û¹3-º=aºCŸº0ãº/»1D»3v»9ª»#ä»¼4%¼^Z¼M¹¼H½P½!p½/’½%Â½<è½Q%¾Zw¾VÒ¾9)¿9c¿3�¿EÑ¿6À:NÀ_‰ÀgéÀFQÁU˜ÁkîÁDZÂbŸÂ:ÃY=Ã>—Ã4ÖÃ=ÄBIÄ*ŒÄD·ÄDüÄ(AÅ9jÅ&¤ÅËÆ!éÆ@Ç4LÇ=�Ç=¿Ç=ýÇ$;È5`È8–È6ÏÈ3É8:É:sÉ9®ÉèÉ>Ê<DÊ+�Ê2­ÊOàÊ	0Ë4:Ë)oË)™ËÃËÙË#ùË)Ì8GÌ€Ì‡ÌšÌ*­ÌØÌëÌÍÍ 8ÍYÍlÍ‚Í=œÍ,ÚÍ"Î*ÎIGÎP‘ÎTâÎJ7Ï-‚Ï<°ÏKíÏ=9Ð.wÐ-¦ÐEÔÐCÑB^Ñ]¡Ñ[ÿÑ\[Ò¸Ò*ÕÒ3Ó04Ó^eÓÄÓËÓ7ÒÓ
! 
! ÔÔ.1ÔS`Ô-´ÔFâÔ:)Õ/dÕ/”Õ0ÄÕõÕ*ÖN>Ö�Ö¢Ö²Ö0ÏÖ9×4:×Io×Q¹×BØGNØA–Ø4ØØ/
Ù.=Ù+lÙ#˜Ù"¼ÙßÙ8èÙ*!ÚGLÚ
”Ú)¢Ú)ÌÚ3öÚ)*Û-TÛE‚Û-ÈÛöÛ$Ü,ÜKÜiÜÜœÜ#¯Ü1ÓÜ(Ý3.Ý;bÝZžÝXùÝRÞUÞgÞyÞ,‹Þ7¸ÞðÞ*ß5;ß2qß=¤ß=âß" àCàUàgàyà‹à'�à Åàæàùàáá0áBá&Tá{á �á®áÀágÄáQ,âQ~â‰ÐâÒZãO-äu}ä#óä˜åƒ°åµ4æ`êæ2KçQ~ç#ÐçDôç‡9è:ÁèBüè=?é}é“é¡œéi>êv¨ê’ë#²ëÖë1æë>ì>Wì –ì%·ì7Ýì
! íˆ í©íA¯í®ñí* î-Ëî0ùî-*ï/Xïšˆïa#ðe…ð]ëðmIña·ñŽòk¨ò[ó�póqòóLdôN±ô‡õDˆõ-Íõ>ûõ::ö:uöN°öDÿö-D÷&r÷}™÷“ø²«øT^ùn³ùO"úVrúmÉú½7û6õû=,üTjü?¿ü@ÿü1@ý-rýÖ ý8wþ*°þ Ûþ#üþ‡ ÿ6¨ÿÁßÿ>¡Và87Np<¿rüGo¼·Ct±¸/jhšnPrUÃhZ‚SÝ™10ËPüTMB¢råQX	gª	T
! `g
! iÈ
! p2p£eQzÍÌTš
šï
Šš
! c¥L	;VE’¸Øš‘¹,hæšO|êKg[³E6U<ŒPÉWRrKÅL[^MºZbcaÆM(ivOàE0OvFÆ<
EJ��MOlG¼DTIEž3äYQr�Ä8UMŽAÜE Ed 8ª Pã W4!”Œ!M!"so"dã"JH#D“#9Ø#=$P$„Q%MÖ%:$&6_&b–&@ù&v:'p±'l"(>�(ZÎ(Q))H{)?Ä)W*b\*c¿*b#+k†+›ò+TŽ,Fã,S*-\~-KÛ-ü'.^$/Kƒ/RÏ/T"0Ww0MÏ0F1#d1Wˆ1dà1BE2Jˆ2ŠÓ2r^3AÑ3ž4b²4V5cl5dÐ5f56œ6I 7Gê7’28�Å8ZG9[¢9Cþ9`B:H£:Wì:VD;G›;Cã;q'<Z™<+ô<3 =FT=8›=VÔ=X+>>„>MÃ>T?Of?B¶?dù?F^@5¥@DÛ@P A`qAJÒAVBXtBOÍB?C7]CE•C?ÛCdDs€DTôD‚IEEÌE/FEBF8ˆF5ÁF¤÷FFœG<ãG+ HKLHB˜HPÛH,,IRYIV¬I0J04J2eJ.˜JBÇJ.
! KC9KA}Kg¿K0'L}XLdÖL$;M˜`M&ùMS N£tNMObfO`ÉO$*PKOPX›P9ôP^.QW�QKåQY1RM‹RTÙRG.S+vS?¢SOâSŒ2TQ¿TbUDtU^¹U,VJEV4�V3ÅV7ùV/1WEaW(§WnÐWS?XZ“X8îX4'Y9\Yp–YÍZ„ÕZZ[ŸÚ[z\[™]lõ]cb^\Æ^\#_/€_B°_dó_eX``¾`×a÷a#b;b&Tb7{b^³bDcWcòmc?`dQ dòd?þd>e.Je*yeC¤e0èeKf6ef4œfÑf.Úf	gg%g
:gHg`grgzg)ƒg­gµgÆgÖgâgügh,hHhYhehrhƒh–h³hÊhÖhçhýhi.i:i*Misxiqìia^jkÀjr,kiŸke	l&ol>–lYÕl+/m8[m8”mqÍmb?nD¢nYçnAoL_o¬o_Åo<%pbp!|pžpE²pDøpD=q=‚q6ÀqV÷q\Nr^«rA
! s/Ls|sE“s>Ùs}t9–t4ÐtEu+Ku>wu\¶uevyv-‰v2·vYêvlDw%±w@×wDx]xHuxF¾x-y3yNyJky¶y4ÔyU	zZ_z�ºzL<{*‰{;´{<ð{C-|Dq|8¶|;ï|E+}Qq}KÃ}5~:E~Q€~8Ò~6IBHŒJÕ( €OI€’™€S,�µ€��6‚WÄ‚kƒ<ˆƒ“ÅƒKY„9¥„�ß„a…:á…7†gT†®¼†Ik‡aµ‡]ˆwuˆuíˆ_c‰bÃ‰t&Š[›ŠV÷ŠXN‹?§‹Nç‹36Œ6jŒ„¡Œ&�uA�&·�õÞ�VÔŽU+�:��4¼�ñ���%4�8Z�.“�Â�É�.á�%‘-6‘&d‘/‹‘A»‘+ý‘')’Q’o’&�’q´’(&“bO“p²“R#”Jv”>Á”Q•vR•KÉ•‚–€˜–Q—Pk—N¼—J˜RV˜L©˜Qö˜,H™Qu™7Ç™=ÿ™=šy½š^7›m–›jœ9oœ>©œ[èœ~D�/Ã�/ó�4#ž2Xž`‹ž)ìž6Ÿ6MŸ'„Ÿ2¬ŸNßŸ|. —« VC¡nš¡=	¢+G¢\s¢5Ð¢4£6;£7r£Cª£Pî£s?¤&³¤$Ú¤Pÿ¤>P¥A�¥%Ñ¥2÷¥ *¦NK¦^š¦ù¦H§J`§i«§]¨Ls¨(À¨Dé¨5.©0d©C•©Ù©F÷©,>ª4kªZ ª.ûª8*«?c«-£«WÑ«q)¬e›¬L­6N­……­C®IO®0™®8Ê®i¯Vm¯1Ä¯-ö¯M$°?r°n²°S!±gu±6Ý±7²\L²x©²g"³kŠ³Uö³DL´I‘´HÛ´H$µ]mµ:Ëµ0¶07¶qh¶QÚ¶M,·=z·K¸·T¸lY¸WÆ¸@¹F_¹M¦¹\ô¹[Qº:­ºAèºF*»Eq»I·»<¼6>¼=u¼O³¼;½F?½N†½8Õ½4¾*C¾$n¾8“¾FÌ¾4¿+H¿Yt¿DÎ¿6À7JÀ7‚À6ºÀ7ñÀ9)Á5cÁ>™Á>ØÁ;Â9SÂ1�ÂH¿Â0Ã@9ÃBzÃ7½ÃDõÃ+:Ä+fÄ1’Ä.ÄÄAóÄP5Å2†Å!¹ÅVÛÅ2ÆˆLÆÕÆ3êÆÇŽ:ÇÉÇŽåÇ3tÈM¨È²öÈN©Ë0øË=)Ì=gÌA¥ÌOçÌ+7Í7cÍT›ÍðÍG
Î)UÎ4Î!´Î&ÖÎwýÎ(uÏFžÏHåÏ<.Ð8kÐL¤ÐLñÐL>ÑL‹ÑZØÑZ3Ò?ŽÒ)ÎÒøÒbÓK{Ó=ÇÓ4Ô3:ÔEnÔ1´Ô^æÔ@EÕ„†Õ©ÖdµÖ%×!@×%b×Xˆ×+á×F
ØFTØ[›Ø(÷ØG Ù-hÙ4–ÙPËÙ@ÚN]Ú9¬Ú'æÚ+Û4:Û{oÛ1ëÛ3Ü<QÜ4ŽÜ0ÃÜ›ôÜh�Ý5ùÝ'/Þ/WÞI‡ÞAÑÞLß1`ß9’ß8Ìß�à<‡àÄàJÛáM&âYtâWÎâ^&ã>…ã(Äã<íã,*ä@Wäa˜äúäVå+nå2šå5ÍåŸæŒ£æF0çGwçh¿çM(èOvè2Æè2ùèV,é=ƒéÁé#àé7ê[<êZ˜ê1óêX%ë<~ë[»ë4ì=LìKŠìKÖì@"ící8yíJ²ísýíæqî}XïHÖïXðxðO˜ð<èðn%ñV”ñPëñˆ<ò]ÅòX#óP|ó8Íó=ôŸDôPäôM5õoƒõióõl]önÊöL9÷T†÷OÛ÷J+ø vøQ—øéø.þøD-ùYrù8ÌùUúI[úh¥ú4û;Cû+û9«û4åûBü?]ü.�ü0Ìü>ýüE<ýB‚ýZÅýQ þrþ8�þ2ÈþWûþASÿF•ÿ{Üÿ7XM�0ÞG>W1–:È4481mDŸ6ä12M#€¤@³XôNMAœÞ-÷%1AsDŠ<Ï^(k”G«_ó^SQ²MJR[�OùQI	Š›	V&
! Y}
! ƒ×
! 4[ �H±úE
! Pm#€¤<¾û
Y:
@”
GÕ
@6^%•/»:ë &.G&v�­'¿=ç?%Ae8§#à"QBP”Nå 4NUK¤IðK:8†@¿2<3 pF‘5ØeVt„Ë‹P_ÜR<U�~å0d-•CÃ&9L6^(•(¾(ç':87s.«_Ú@:S{aÏF1<xGµ@ýS>R’LåV2L‰JÖS!.ui¤P M_ 7­ 9å I!;i!N¥!9ô!."E"6b"C™"EÝ"H##*l# —#<¸#>õ#54$9j$=¤$Râ$5%>L%F‹%/Ò%5&)8&Jb&J­&ø&!'r9'W¬'n(us(+é(>);T);�);Ì);*WD*'œ*Ä*eØ*Y>+=˜+>Ö+7,9M,J‡,BÒ,-0-L-Va-‚¸-B;._~.FÞ.g%/G�/hÕ/>>0$}02¢01Õ01N!1Kp1O¼1J2MW2$¥29Ê293[>3!š3Q¼3S4Wb4,º4Oç4L75+„55°55æ506>M6/Œ6.¼69ë6:%74`78•7FÎ7U8)k8=•8HÓ8T9)q90›9"Ì97ï9%':6M:?„:CÄ:.;:7;*r;3�; Ñ;ò;5r<4¨</Ý<-
=@;=|=/‘=/Á=Bñ=,4>2a>3”>-È> ö><?gT?F¼?U@NY@Q¨@aú@ã\A[@BWœBYôBrNCyÁC_;DW›D1óDV%EN|EIËEHFR^F_±F)G(;G,dG=‘G]ÏG-H6EH"|HQŸH*ñHJILgI´I4ÏI:JG?J7‡J?¿JbÿJ!bK>„K>ÃKLLNOL'žL6ÆL<ýL„:Mc¿M`#NY„N<ÞNŒOJ¨O*óO‚PM¡PHïPc8Q-œQ_ÊQr*RB�R)àR
! S> S(_S@ˆS[ÉS%TET%eT#‹T¯ToÉTf9U- UÎUåUýU V!6V"XV"{V$žV$ÃV0èVW7WUW2rWr¥WkX_„X6äX=Y/YY>‰Y9ÈYwZszZKîZP:[g‹[Mó[vA\G¸\[]<\]A™]±Û]°�^O>_1Ž_LÀ_g
`cu`9Ù`4a7HaL€aÍaJåaJ0b+{b8§b2àbZcnc=„c(Âc&ëcDdJWd0¢dwÓd_KeJ«e0öeJ'f0rfH£f2ìfHg2hg]›gGùgHAh2Šhb½h} i]žiGüixDj“½jiQk„»k`@lƒ¡l2%mAXm2šm2Ím2n03nKdn°n;În%
! o%0o;VoE’oTØo'-pBUpQ˜pRêpQ=q)�qZ¹q6rYKr5¥rPÛrF,s4ss€¨s)v)Fv(pvB™vÛÜv ¸wÙwtøw9mxÖ§x\~yCÛy>zL^zO«z1ûz5-{}c{&á{5|Y>|0˜|2É|Oü|?L}BŒ}(Ï},ø}/%~HU~Dž~$ã~Q*ZH…+ÎDú@?€€€B˜€Û€8ô€5-�c�(�¨�)½�?ç�B'‚_j‚AÊ‚5ƒ@BƒDƒƒ1Èƒ@úƒR;„‚Ž„?…BQ…8”…2Í…2†,3†`†/r†4¢†/×†@‡FH‡S�‡Fã‡F*ˆ-qˆYŸˆ]ùˆTW‰M¬‰Yú‰1TŠ5†ŠE¼ŠO‹.R‹Y�‹HÛ‹)$Œ)NŒYxŒÒŒ6ñŒ6(�,_�Œ�N¤�Gó�;Ž,QŽ*~Ž9©Ž/ãŽ<�2P�/ƒ�/³�4ã�>�W�2w�4ª�.ß�<‘^K‘*ª‘cÕ‘z9’ˆ´’„=“EÂ“„”L�”™Ú”<t•á±•$“–�¸—ÐF˜™Fš;b›}ž›NœSkœ:¿œrúœAm�=¯�(í�žW+ž(ƒž"¬ž"Ïž"òž Ÿ 6Ÿ WŸ$xŸ$�Ÿ$ÂŸ"çŸ"
!  "- )P 4z 1¯ /á C¡UU¡C«¡2ï¡4"¢>W¢1–¢DÈ¢D
£ZR£7­£Få£w,¤P¤¤Oõ¤wE¥H½¥[¦Gb¦8ª¦@ã¦:$§C_§m£§a¨~s¨]ò¨dP©aµ©XªopªLàªM-«„{«(¬()¬(R¬({¬7¤¬ÏÜ¬¬®Ð°¯Q�°*Ó°?þ°F>±K…±PÑ± "²7C²-{²8©²Zâ²W=³p•³´P$´Gu´n½´b,µ`�µ#ðµ<¶NQ¶I ¶{ê¶nf·fÕ·b<¸`Ÿ¸-¹W.¹^†¹'å¹$
ºE2ºTxºJÍº»5»GO»*—»2Â»¡õ»p—¼g½)p½?š½NÚ½$)¾:N¾`‰¾,ê¾¿17¿i¿C„¿3È¿0ü¿-ÀKÀ9fÀ= À;ÞÀÁ4šÁ)ÏÁQùÁ“KÂDßÂ-$ÃXRÃI«ÃPõÃFÄ/fÄ–Ä=²Ä;ðÄ=,ÅAjÅ-¬Å$ÚÅ ÿÅ  ÆJAÆFŒÆ?ÓÆ'Ç1;Ç=mÇ-«Ç*ÙÇAÈ9FÈ.€È2¯È(âÈ;ÉMGÉ)•É-¿É9íÉq'Ê@™ÊHÚÊn#ËA’ËSÔË=(Ì1fÌd˜Ì=ýÌ#;Í4_ÍC”Í<ØÍÎ 3ÎTÎVlÎ8ÃÎ1üÎ+.Ï+ZÏ+†Ï4²Ï,çÏ*Ð!?Ð,aÐPŽÐ4ßÐ,Ñ<AÑE~Ñ5ÄÑ5úÑ)0ÒJZÒJ¥Ò2ðÒ6#ÓHZÓ=£ÓAáÓF#Ô;jÔC¦ÔZêÔQEÕ¤—Õ:<ÖCwÖ$»ÖOàÖS0×(„×"­×5Ð×8Ø8?Ø1xØªØ·Ø2ÊØ5ýØ23Ù@fÙp§ÙDÚC]ÚL¡ÚÆîÚ7µÛ�íÛJoÜMºÜ[ÝCdÝ3¨ÝMÜÝC*Þ?nÞ?®Þ1îÞa ßM‚ßJÐßGàBcà$¦à`Ëà),á!Vá[xáGÔáHâ%eâ*‹â;¶â2òâ)%ã&Oã1vã0¨ãYÙãO3äHƒäLÌä,åFåbå‚å$Ÿå&Äå>ëå *æ0Kæ-|æ(ªæÓæ'íæ+ç'Aç!iç ‹ç!¬ç!Îç-ðç&è&Eè"lè#�è#³è*×è"é)%é,Oé%|é3¢é6Öé6
ê Dê$eê)Šê+´ê)àê5
! ë0@ëqëG�ë+Õë4ì=6ì.tì`£ì§í¬íEËíBî>Tî:“îKÎîWï>rïX±ï@
! ðWKð–£ðI:ñ=„ñ>Âñ0ò2ò'Lò1tò#¦ò[Êò`&ó(‡óC°ó>ôó;3ôBoô²ôIÉôDõPXõF©õJðõC;öFöJÆöM÷F_÷I¦÷Uð÷KFøC’øMÖø%$ùJù.eù-”ù6Âù#ùù3úQú#nú
’ú) úÊúãúHóú@<û}û™û®ûÎûTîû5Cü/yü,©ü$ÖüKûüGýGVýgžý+þd2þq—þ‹	ÿd•ÿcúÿ@^&Ÿ Æ>ç?&6f6�eÔ$:'_ˆ‡1/B9r-¬9Ú7tL7ÁfùO`.°†ßifUÐn&=•	2Ó	0
! ^7
! &–
! S½
! Y[kWÇ,?L Œ3-
/a
F‘
FØ
<8\„•Fau/•0Å*ö'!dI*®Ù!ù7+S-K­*ù$)C!m �$°8Õ'.%V8|'µ*Ý4A=7-·@å*&>Q3�'ÄPì%=FcEª6ð%'?MI�×@ì$-'R;z'¶VÞ+5Da2¦.Ù. 7+X4„,¹%æ&>34r)§3Ñ>/D-t,¢1ÏTLV£ ÀMá#/?S1“Å2ä#K;*‡²†ÌkS z¿ _:!#š!S¾!H"/["/‹"#»"5ß",#B#Eb#(¨#;Ñ#+
$%9$=_$M�$=ë$))%$S%4x%0­%@Þ%+&K&1k&K�&Lé&Y6'*�'/»'!ë'"
(90(Lj(M·(`)rf)›Ù)xu*»î*Šª+u5,c«,t-m„-�ò-œ�.Ê-/‹ø/3„0'¸0tà0CU15™1?Ï192\I2=¦2;ä2K 3bl32Ï3d4Tg4E¼4$5J'53r5%¦5NÌ586WT6(¬6!Õ6÷6737CP7N”7,ã7M85^8/”89Ä8Qþ81P9;‚90¾98ï9](:"†:%©:#Ï:"ó:B;;Y;•;A°;ò;3<(C<5l<#¢</Æ<Gö<.>=%m==“=cÑ=*5>=`>8ž>D×>?O:?<Š?-Ç?Aõ?;7@-s@5¡@9×@AA.SA2‚A.µAùäA#ÞBqCptCoåC.UD>„D£ÃD9gE'¡E4ÉE4þE3F7OF%‡FÍ­F9{GþµG„´H=9IIwIZÁI4JHQJ3šJ(ÎJ)÷Jq!K.“K|ÂK¤?L*äLIMNYM;¨M>äM-#N1QN/ƒN'³N2ÛNQO.`O'�O,·O+äO1P7BP1zP/¬P'ÜPQs$Q;˜Q8ÔQ@
RjNRA¹R'ûR?#SqcSaÕSM7T%…T«TÇTAãTK%U1qU£U>¸Ut÷UvlV>ãVA"W\dW,ÁW'îWDX$[XS€XÔX%ÛXKY$MY8rY&«Y!ÒY(ôY9Z3WZ,‹Z(¸Z.áZF[†W[Þ[Sç[L;\8ˆ\NÁ\U](f]d�]Vô]K^a^w^*–^Á^à^ö^ _0-_I^_¨_ ¾_ ß_ `-!`O`+e`‘`K¨`ô`0a&<a?ca£a3¹a)ía4beLb-²bZàbA;c=}c»c5×c@
d%Nd3tdW¨d:e;e\We3´eTèe-=fdkf>Ðf7g>GgI†g7Ðg?h>HhH‡hPÐh–!iB¸i'ûi*#j0Nj*j+ªj%Öj,üj()k3Rk†k¤k¿k!ßkl"lAlZlxl.•l3Äl6øl /mGPm"˜m'»mOãm^3ng’n7ún-2o7`o>˜o@×o3p$Lp/qp(¡p/Êpúp<q8Mq†q(¡q2Êqýq rG0rqxrêrMsFVs/�sÍseäs=Jt%ˆt
®t?¼t0üt'-uUutu5�u*Æuñu1	vF;vD‚v)Çvñv'wM/w }w(žwDÇwx+x5Jx.€x4¯x$äx/	yB9y1|y®y Áy$ây;zCz%\z)‚z*¬z+×z={%A{Mg{8µ{Cî{E2|=x|>¶|:õ|30} d}4…}1º}=ì}:*~3e~2™~8Ì~6<VSXªA€+E€zq€Xì€2E�%x�Fž�4å�*‚;E‚t�‚(ö‚hƒˆƒ'¨ƒ8Ðƒ>	„9H„`‚„.ã„M…3`…z”… †0†G†4_†D”†2Ù†2‡E?‡8…‡2¾‡3ñ‡%ˆ&@ˆDgˆ1¬ˆ;ÞˆJ‰(e‰rŽ‰?ŠUAŠ—Š9°ŠYêŠ=D‹=‚‹=À‹=þ‹K<Œ:ˆŒFÃŒA
! �>L�E‹�rÑ�*DŽ&oŽ+–Ž,ÂŽïŽ'�@.�1o�D¡�*æ�Y�Ik�Eµ�Sû�O‘.g‘Y–‘Eð‘96’Pp’BÁ’7“_<“;œ“�Ø“!f”�ˆ”x•H’•CÛ•K–uk–Fá–‹(˜g´˜ ™§=™>å™L$š7qše©šP›&`›K‡›:Ó› œL/œ<|œd¹œ0�BO�D’�:×�Wž!jžyŒžIŸ:PŸJ‹Ÿ;ÖŸ" !5 
W 
e 8s N¬ ,û 0(¡UY¡4¯¡+ä¡<¢[M¢"©¢UÌ¢r"£0•£HÆ£I¤hY¤Â¤B¥=[¥4™¥GÎ¥W¦\n¦yË¦=E§Iƒ§WÍ§V%¨~|¨Rû¨RN©R¡©;ô©X0ªi‰ª:óªb.«d‘«§ö«/ž¬Î¬ê¬Sý¬SQ­I¥­ï­E®@L®:�®È®BÙ®N¯Gk¯L³¯9°':°@b°D£°Cè°;,±Uh±9¾±ø±²,²+B²n²‰²@¦²ç²ý²$³5?³5u³5«³(á³4
! ´7?´2w´Pª´:û´_6µ4–µ1Ëµ(ýµK&¶5r¶¨¶1Á¶ó¶
! ··5·I·/^·Ž·£···1Í·ÿ·¸9)¸c¸v¸‰¸¨¸¼¸Ï¸ã¸¹!¹6¹!M¹o¹!†¹¨¹¿¹Þ¹ò¹Fº7RºlŠºk÷ºGc»0«»]Ü»N:¼>‰¼:È¼'½K+½Uw½\Í½V*¾©�¾+¿J¿d¿~¿˜¿,®¿>Û¿.À5IÀ(ÀG¨ÀðÀ'Á3Á,NÁ;{Á\·Á0Â0EÂ+vÂ¢Â!ÁÂ"ãÂÃ%ÃEÃdÃƒÃ¢ÃÁÃàÃúÃÄ.Ä1NÄ€Ä1 ÄÒÄòÄÅ2Å RÅsÅ‹Å¦Å5ÅÅûÅÆ9Æ&XÆ1Æ6±ÆJèÆ&3Ç/ZÇ+ŠÇ,¶ÇJãÇ0.È)_È#‰È#­ÈBÑÈ1É FÉ$gÉ&ŒÉ&³É)ÚÉ)ÊA.Ê2pÊN£ÊKòÊ->Ë-lË-šËNÈË5Ì4MÌ~‚ÌAÍ>CÍ8‚ÍL»Í<Î6EÎ8|Î:µÎ=ðÎ@.ÏVoÏ1ÆÏ7øÏ.0Ð/_Ð:�Ð$ÊÐ)ïÐ4ÑANÑ/�Ñ?ÀÑ3ÒF4Ò;{Ò:·Ò:òÒ5-Ó9cÓ9�Ó9×Ó6Ô.HÔwÔk“ÔÿÔ3ÕCKÕM�Õ$ÝÕ8Ö3;ÖOoÖ ¿ÖCàÖC$×Ah×Aª×<ì×<)Ø?fØ¦Øm½Ø�+Ù­ÙÊÙçÙCÚ9HÚ9‚Ú3¼ÚðÚqÛ�Û#ŸÛÃÛ ÙÛ5úÛ00Ü4aÜ4–Ü4ËÜ1Ý2Ý1NÝ;€Ý(¼ÝVåÝ[<Þ<˜ÞAÕÞDß?\ß'œß+Äß*ðß-à8IàU‚à‡Øà#`â$„â3©âRÝân0ã#Ÿã3Ãã÷ã!
äE/ä<uä^²äoåF�å&ÈåHïå8æaGæ_©æa	çekç'Ñç5ùçJ/è?zèºèFØèMéAmé6¯é%æé¹êZÆê$!ë?Fë:†ëžÁëR`ìy³ìQ-íÌí>Lî‹îK¥îZñîuLïLÂï!ð1ðA@ð"‚ð[¥ðññ;ñ;VñY’ñ]ìñ1Jò|òH�ò%ØòAþò@óBXó›óE²ó^øóBWôPšô7ëô>#õ8bõQ›õHíõJ6ö2�ö(´öUÝö+3÷3_÷i“÷Lý÷RJø9�ø×ø0ïø, ù[Mù$©ù@Îù?ú?Oú0�úDÀú1ûF7ûN~û.Íû3üû80ü"iü:ŒüTÇü0ý8Mý&†ý/­ýXÝýM6þK„þ+ÐþGüþ7DÿW|ÿÔÿIôÿ%>Ad=¦Bä.'<VJ“;Þ3ENI”=Þ37PGˆ#Ð2ô)'IQD›Zà,;>hG§Oï5?&u*œ2Ç;úG6_~-ÞT9au›H	4Z	9�	7É	T
! VV
! >­
! @ì
! /-R]Q°NLQ<ž,Û8
WA
+™
"Å
[è
XDE�.ã6.I.x,§(Ô\ý4Z,�Z¼WJoCº�þ Ž·/«çÍ“Haxª>#QbO´I(N,w(¤,Í!ú0œM:ê;%IaX«Wj\4Ç'ü($EMv“(
! W3‹+ª*Ö88:4sI¨Eò+82dC—7Û)-='k(“¼8Û4 I *d 5� 7Å {ý šy!\"Zq"ZÌ"…'#8­#3æ#.$ºI$'%A,%\n%
! Ë%@Ö%<&1T&-†&´&%Ò&!ø&5'%P'-v'9¤'>Þ'8(DV(>›(CÚ(H)Bg)=ª)Aè);**@f*;§*@ã*:$+K_+E«+Lñ+c>,.¢,3Ñ,-3!-4U-4Š-1¿-Sñ-UE.^›.Pú.QK/W�/†õ/O|0XÌ0%1BE1>ˆ1xÇ1K@2ÒŒ2«_3G4)S4c}5á5ô5
6'6G6a6q6�6”6«6\Â67(7`A7!¢7Ä73à748KI85•8jË8469/k9Q›91í97:;W:=“::Ñ:N;9[;:•;1Ð;]<2`<7“<HË<�=”¥=\:>Š—>™"?»¼?Kx@)Ä@9î@9(A9bAGœAKäA_0BO�B\àBW=C3•CÉCDæCz+D6¦D>ÝDXE;uEk±E?Fz]F]ØF*6G*aG+ŒGN¸GhH.pH3ŸHŽÓH*bI5�I ÃIEäIW*Jj‚JWíJZEKN KJïKX:L~“L}M:�M$ËM&ðMLNhdNDÍNyOŒO(¥OWÎO\&PFƒP3ÊP!þPH Q;iQ2¥Q+ØQ]R:bRI�R=çR^%SF„S@ËS/T1<TnT$ˆT!­TJÏTPUBkU'®U/ÖU*V*1V)\V*†V*±V)ÜV™WK WAìWR.XA�XfÃXd*Y,�Y9¼YEöY@<Z@}Zj¾Z,)[UV[=¬[Šê[Ru\HÈ\I]=[]I™]�ã]{q^lí^GZ_1¢_>Ô_G`F[`(¢`9Ë`a/aMa6la!£a]Åa/#bSb"sb/–b8ÆbAÿb=Ac-c-­cFÛc'"d'Jd-rd0 d]Ñd,/e=\e'še+Âe'îebf6yfC°f1ôf&gEDgNŠg;Ùg)h1?h#qh•h+´hGàh4(i#]i5�i@·i-øiO&jJvj=Áj+ÿj
! +k6kOk	\kfkrk7~k+¶kâk'ÿk%'l'Ml=ul=³lñl2m-AmCom³mHÈm^n[pn<ÌnM	oRWoaªo8p5Epn{p:êp2%q6Xq6�qDÆq6r@Br;ƒr@¿r7s78sAps7²s9ês;$t7`t8˜tFÑt7uFPuV—u<îuC+v?ovB¯vHòvC;w<wB¼wCÿw]CxH¡x<êx?'y<gy<¤y7áyGzCazW¥zlýzhj{UÓ{Z)|%„|Gª|Gò|1:},l}5™}Ï}Cã}'~VB~K™~Gå~,-Z6p5§NÝ5,€Qb€4´€Lé€D6�9{�3µ�1é�/‚;K‚/‡‚;·‚4ó‚-(ƒ0VƒB‡ƒ$ÊƒïƒC
„Q„3c„@—„RØ„M+…*y….¤…/Ó…4†8†ýS‡FQˆ>˜ˆo×ˆG‰g‰(…‰:®‰9é‰E#Š:iŠ'¤Š!ÌŠîŠ(‹+7‹&c‹+Š‹$¶‹FÛ‹N"Œ+qŒH�Œ6æŒ?�7]�‚•�NŽ<gŽ0¤ŽYÕŽ./�`^�¿�oÑ�oA�3±�;å�<!‘C^‘4¢‘A×‘<’*V’M�’%Ï’%õ’,“H“_“/q“9¡“/Û“!”U-”Sƒ”S×”+•:•#I•Xm•>Æ•]–]c–_Á–V!—x—'�—&·—9Þ—0˜3I˜9}˜0·˜0è˜/™MI™J—™&â™-	š@7š"xš"›š;¾š<úšI7›#�›V¥›zü›wœR�œ)àœ
! �;�?X�e˜�þ�Qž`žF}ždÄž )Ÿ2JŸ.}Ÿ]¬Ÿ&
!  :1 l HŒ [Õ  1¡'R¡z¡+˜¡%Ä¡Oê¡x:¢,³¢&à¢›£}££L!¤Ln¤?»¤kû¤;g¥<£¥-à¥1¦*@¦nk¦+Ú¦I§TP§_¥§5¨A;¨i}¨Mç¨H5©”~©‰ªD�ª>âªx!«?š«RÚ«×-¬E­NK­vš­z®FŒ®GÓ®a¯6}¯I´¯Vþ¯U°kÕ°DA±W†±`Þ±–?²%Ö²¨ü²>¥³oä³[T´S°´9µW>µK–µ;âµC¶€b¶Nã¶H2·k{·^ç·�F¸FÖ¸R¹fp¹O×¹ê'ºc»vv»7í»i%¼F�¼lÖ¼™C½mÝ½YK¾(¥¾™Î¾Œh¿dõ¿GZÀB¢ÀGåÀo-Á�ÁœÂWºÂrÃj…ÃDðÃY5Ä7�Ä…ÇÄ‡MÅ…ÕÅž[ÆRúÆoMÇD½ÇpÈRsÈ`ÆÈ„'Éˆ¬É95Ê.oÊCžÊnâÊCQË^•Ë9ôËH.Ì!wÌ(™ÌjÂÌ�-ÍU¯ÍrÎUxÎhÎÎB7ÏXzÏ%ÓÏfùÏ¬`Ð8
Ñ4FÑ^{ÑFÚÑY!Ò^{ÒlÚÒEGÓL�ÓgÚÓ4BÔ*wÔ%¢Ô*ÈÔEóÔ&9Õ*`Õ*‹Õp¶Õ+'Ö/SÖ6ƒÖIºÖI×-N×"|×7Ÿ×8××+Ø4<Ø"qØ”Ø-«Ø ÙØ^úØKYÙ%¥ÙËÙ,èÙ9Ú.OÚ?~Ú¾Ú7ÝÚRÛ0hÛJ™Û-äÛÜ)1Ü[ÜWlÜWÄÜJÝ$gÝŠŒÝYÞ=qÞ5¯ÞCåÞ4)ß)^ßEˆß5Îß\à;aà=�à>ÛàAáv\áEÓáEâh_âxÈâŒAãnÎãW=äm•äJåNåCkåB¯åOòåHBæ7‹æEÃæ>	çCHçRŒçßç4õçX*è1ƒèµè=Òè,é5=éséJ’éGÝéK%êNqêSÀêCë)Xë6‚ë-¹ë\çëLDì‘ì©ìn¶ì9%í?_íBŸí(âí.î`:îK›îfçîANïn�ï?ÿïA?ð�ð<�ð$ÚðKÿð9Kñ1…ñ
·ñÅñÔñçñò*òIòheò[Îò*óHóEaóM§ó<õóI2ô?|ô6¼ô‘óô¼…õ7Bö]zö`Øö)9÷8c÷Oœ÷5ì÷G"ø)jøp”øHù3NùK‚ùNÎùMúDkúD°ú<õú¶2û éû
! ýþ;ÿK1j(œ@Å+C2?v8¶-ï;_Y;¹hõX^2·,ê+)C>m1¬ÞvðNgb¶AF[T¢f÷C^E¢@è8)@bK£bï`R	l³	] 
! J~
! bÉ
! n,H›2ä46LBƒ*Æ?ñE1
Iw
=Á
fÿ
$fh‹kôP`±4Å9ú 4$U>z,¹Wæ*>niSØÖ,=@AG‚)ÊVô-KOyYÉ#:6Q5ˆT¾Sig0ÑYs\RÐ¦#GÊ�v –]®gEtSºTMc)±;Û/_GB§7ê7"AZ5œNÒ7!AY“›V/!\†!ã!T"[X"i´"t#H“#IÜ#V&$f}%6ä%&K0&7|&-´&Oâ& 2'+S'''Y§''(%)(1O(7�(�¹(ƒI)
! Í)xØ)wQ*É*Hç*G0+8x+R±+?,+D,Bp,#³,?×,?-"W-Pz-+Ë-M÷-AE..‡..¶.å.I/L/c//!—/¹/9Æ/$0.%03T0ˆ0+Ÿ0FË0H1$[1#€1E¤1+ê1G2'^2;†2IÂ2H3GU3G�36å3n4‹4¥4-·4<å4*"5*M5Kx5;Ä5=6B>6N�6=Ð6F7HU7Bž7Fá7D(8m8„8CŸ8Eã8)9AC9…9J 9eë97Q:.‰:J¸:8;;<;x;-�;J»;€<|‡<ï=nô>Jc?9®?Xè?$A@$f@+‹@0·@?è@%(A;NA.ŠA©¹ANcBU²BQCVZC[±C“
D_¡DYE[[ET·EmFIzF‰ÄFSNG2¢GQÕG0'H/XHFˆHOÏH;I1[I8�I<ÆIHJALJKŽJLÚJC'KEkKC±K;õK)1Lc[L¿L^ÞLB=MW€M=ØM!N*8N?cN6£N3ÚN3O2BO:uO,°OMÝO!+P"MP5pPM¦P#ôP!Qj:QA¥Q,çQORQdR+¶RSâR*6S>aSA S6âS4TXNT=§T!åT'U-/U*]U@ˆU%ÉU2ïU@"V.cV;’V=ÎV4W.AW4pW#¥W'ÉWHñW�:Xl¼X)YL1Y/~Y6®Y3åYZZ:tZ-¯Z/ÝZ?
[oM[©½[¨g\:]BK]DŽ]AÓ]/^-E^&s^Šš^%_9_3M_(�_?ª_mê_DX`7�`@Õ`>a6UaCŒa:Ða_bkb3ëb.cBNc‘‘cF#djdV‰dkàdeLe=²e‡ðe_xf2Øf7g(Cg5lg ¢g³ÃgGwh8¿h-øh=&i5diGšiOâi'2j<ZjZ—jMòjU@k2–k6ÉkFlMGl;•lSÑlG%mXmmAÆmln;unL±n<þnM;o^‰o?èo6(po_pQÏp3!q'Uq?}q½qiÔqR>rA‘rPÓrG$s lsQ�sEßsŸ%t Åtæt}u0ƒu^´ucv1wv]©vw1!wSwapw'ÒwAúw‹<x'Èxðxy"*y^My.¬y3ÛyBz,Rzzižz4{G={@…{5Æ{=ü{#:|'^|a†|&è|*}:}U}h}D}CÄ}C~CL~D�~CÕ~AB[Až/àO€U`€@¶€÷€D�uU�?Ë�=‚(I‚-r‚U ‚Wö‚[Nƒ_ªƒQ
! „W\„I´„aþ„Y`…Vº…4†$F†-k†H™†0â†'‡0;‡Dl‡?±‡;ñ‡;-ˆGiˆ,±ˆYÞˆX8‰X‘‰=ê‰<(Š<eŠ0¢ŠJÓŠ_‹2~‹U±‹KŒ"SŒ1vŒ!¨Œ4ÊŒ-ÿŒ--�A[�A�� ß�#Ž7$Ž(\Ž…Ž$¥Ž=ÊŽ?�8H�)��x«�/$�>T�E“�JÙ�8$‘!]‘.‘'®‘)Ö‘+’%,’,R’*’=ª’Lè’E5“I{“EÅ“B”hN”i·”Ý!•Sÿ•>S–3’–tÆ–};—¹—9×—9˜8K˜8„˜½˜5Ô˜1
! ™0<™Lm™;º™9ö™80š?iš2©šUÜš=2›'p›F˜›;ß›0œ6LœHƒœ=Ìœ?
! �)J�(t�3��;Ñ� 
ž(.žQWžE©žOïžH?ŸFˆŸAÏŸ /0 /` &� #· 2Û 7¡,F¡Ms¡;Á¡Jý¡0H¢>y¢-¸¢>æ¢8%£@^£SŸ£Jó£3>¤/r¤'¢¤>Ê¤#	¥A-¥To¥>Ä¥9¦0=¦Qn¦OÀ¦M§€^§<ß§
¨G*¨Lr¨6¿¨]ö¨PT©¥©EÂ©8ª=Aª<ª3¼ª>ðª%/«XU«L®«Lû«JH¬,“¬&À¬0ç¬H­Ia­«­<É­*®J1®|®A�®<Ò®¯-¯0?¯$p¯2•¯È¯3ã¯?°*W°+‚°+®°,Ú°;±<C±?€±%À±,æ±
²4!²<V²“²5±²(ç²*³g;³I£³5í³6#´@Z´!›´½´^Ú´W9µH‘µ0Úµ'¶03¶Ld¶G±¶?ù¶9·T·ej·2Ð·¸¸K'¸s¸†¸(™¸7Â¸'ú¸E"¹?h¹)¨¹9Ò¹ ºB-º@pºM±º6ÿº36»-j»Å˜»^¼"Þ¼½6½$T½=y½*·½Aâ½J$¾Fo¾*¶¾3á¾¿Š,¿;·¿)ó¿5ÀLSÀ ÀE¾À2Á7Á*TÁ&Á\¦Á&Â*Â+IÂVuÂ<ÌÂž	Ã[¨Ã8Ä:=Ä+xÄi¤Ä1Å1@Å1rÅ¤Å=¿ÅHýÅFÆ7^Æh–Æ3ÿÆX3ÇVŒÇYãÇV=È2”È6ÇÈGþÈKFÉ@’ÉÓÉ-ìÉÊ"8Ê'[Ê ƒÊ'¤ÊzÌÊIGË‘ËE©Ë<ïË=,Ì=jÌ<¨ÌgåÌCMÍC‘Í@ÕÍgÎH~Î~ÇÎ]FÏ¸¤Ï!]ÐÑ\•ÑJòÑJ=ÒIˆÒIÒÒ3ÓZPÓ(«Ó3ÔÓ9ÔABÔH„ÔHÍÔ,Õ(CÕAlÕP®ÕVÿÕBVÖN™Ö.èÖL×Gd×%¬×<Ò×vØ�†ØKÙMbÙD°Ù.õÙN$ÚCsÚX·Ú,Û=ÛOCÜG“Ü_ÛÜ^;ÝNšÝtéÝp^ÞhÏÞd8ßl�ßc
! àInàh¸àU!áSwá'Ëá#óáLâ`dâ;ÅâDãBFã0‰ãWºã‡ä<šäW×ä\/å:Œå&Çåîåaæmæ2‚æYµæç�ç?«çëç3øç),è6VèU�è0ãè^é3séc§é7ê8Cê |êo�êI
ëIWëI¡ë,ëëDìo]ì*ÍìkøìGdíz¬í_'î>‡î"Æî4éî4ï SïKtï:ÀïMûïÇIðñ:%ñ!`ñ8‚ñ:»ñ,öñ#ò?ò#[ò3ò=³ò7ñòY)óPƒó:Ôóô(ôHô3bô–ô+®ô(Úô,õ)0õ?ZõBšõÑÝõA¯ö–ñö•ˆ÷Lø3køWŸøQ÷ø2Iù6|ùO³ù6úZ:ú@•ú0ÖúKûISû�û7½ûKõûNAüA�üGÒüQýLlý5¹ýïýF	þ&PþwþE—þ8Ýþ9ÿ*Pÿ>{ÿ:ºÿõÿ:FO –¦7‡Þ5fœ'º0âMca'ÅRí3@'t?œ>Ü3MO(�EÆê_÷ZWD²1÷L)Av?¸ZøiS	a½	F
! Gf
! '®
! LÖ
! H#2l<Ÿ6ÜD>X@—:Øj
’~
^SpWÄ+LH:•DÐGD]C¢DæE+DqD¶IûFENŒ2Û?@N>�DÎ!5=PBŽ;Ñ@
?N*Ž@¹Bú5=>s?²?òG2(zM£SñZEZ bûj^oÉu9t¯w$tœtˆ†ˆˆ˜Š!Š¬ˆ7~Àƒ? ‚Ã ‹F!—Ò!‹j"Šö"Œ�#‹$�š$‚*%‚­%~0&ƒ¯&~3'€²'E3(Cy(A½(Iÿ(KI)=•)CÓ):*@R*“*>³*Bò*A5+<w+´+:Ñ+G,?T,G”,:Ü,+-DC-Aˆ-?Ê-@
! .FK.C’.DÖ.B/?^/(ž/Ç/å/*0//0/_02�0=Â0s1Ht14½1/ò1/"20R2Dƒ2YÈ2b"30…3�¶3dD4:©4$ä4;	57E5}5/œ5hÌ5;56Oq6/Á6;ñ6c-7W‘7é7X8K[8)§8(Ñ8ú8$9;=92y9)¬93Ö9Z
! :3e: ™:4º::ï:4*;)_;_‰;Bé;5,<)b<:Œ<DÇ<F= S=xt=Oí=O=>7�>1Å>a÷>3Y?9�?;Ç?J@KN@0š@JË@ZABqA[´A+B&<BOcB³BÐBèB.þB1-CN_C5®C0äC1D,GD/tD-¤D-ÒD#E3$E-XE*†E)±E,ÛE-F(6F)_F,‰F,¶F&ãF#
! G".G"QG'tG=œG-ÚG=H,FH,sH, H*ÍH*øH)#I%MI'sI*›I.ÆI,õI&"J)IJ4sJ$¨J&ÍJ+ôJ- K(NKwK0—KÈK:èK;#L:_L0šLIËLEMg[MVÃMaNS|NIÐNdO%OR¥OOøODHP,�P*ºP-åP1QfEQ)¬QÖQ%óQ©R<ÃRIS8JS1ƒS.µSˆäS-mT¡›T`=VFžVåV5ýV3W PWqW)ŽW$¸W	ÝW@çW}(XN¦XtõXSjY=¾Y@üY==Z�{ZZ[Qt[;Æ[y\˜|\Y]eo]bÕ]B8^U{^GÑ^__my_Cç_@+`\l`OÉ`da}~aJüaTGb*œbRÇbGccbczÆcsAd@µdUödNLeL›erèec[f`¿f@ geag“Çg@[h<œh~ÙhDXi>�iPÜiv-jA¤j4æj2k0NkCk@ÃkqlƒvlCúll>mw«m&#n9Jng„nEìna2o¾”o–SpÄêp°¯qÉ`r×*s;tE>tB„t`Çt@(ukiu_ÕuX5v`ŽvMïv==we{w1áw-x)Ax.kx<šx;×x*y:>y,yy(¦y5Ïy3z|9zš¶zŠQ{„Ü{ƒa|Qå|q7}W©}E~7G~I~æÉ~Ú°J‹€cÖ€N:�e‰�?ï� /‚¨Ð‚^yƒ^ØƒP7„]ˆ„“æ„<z…@·…@ø…¡9†FÛ†o"‡/’‡BÂ‡EˆŒKˆ_Øˆ^8‰R—‰Xê‰ACŠ1…Šƒ·ŠE;‹Œ�‹BŒXQŒkªŒD�7[�:“�\Î�S+ŽZŽŽÚŽXi�^Â�l!��Ž�W‘ah‘RÊ‘H’`f’NÇ’7“WN“=¦“Kä“l0”^�”=ü”S:•¯Ž•C>–|‚–gÿ–Qg—X¹—>™|Q™pÎ™%?šLešM²šF›�G›[å›pAœõ²œX¨žRŸ‚TŸL×ŸI$ Fn Lµ ë¡êî¡eÙ¢n?£Z®£”	¤tž¤Ž¥Ž¢¥Ž1¦…À¦GF§eŽ§cô§×X¨;0©bl©kÏ©V;ª@’ª¥Óª§y«­!¬jÏ¬$:­_­|­]”­Gò­:®mZ® È®•i¯ÿ¯°:°:U°6�°ZÇ°="±ª`±Ž²Œš²G'³¨o³R´^k´wÊ´�Bµ5Ðµ­¶f´¶J·Mf·m´·Z"¸}¸@ý¸u>¹f´¹Gº]cºdÁº,&»hS»W¼»A¼CV¼hš¼=½ÜA½œ¾»¾6Õ¾I¿¶V¿G
À™UÀ�ïÀ`qÁ|ÒÁOOÂSŸÂ óÂ.ÃZCÃ<žÃHÛÃE$ÄjÄ$}ÄA¢ÄoäÄTÅdsÅ[ØÅC4ÆIxÆ3ÂÆköÆQbÇ>´Ç6óÇ&*È1QÈ4ƒÈ5¸È+îÈ!É3<É2pÉA£É*åÉ4Ê/EÊ$uÊšÊ1Ë\LËH©Ë_òËZRÌ%­Ì\ÓÌ90Í8jÍ9£ÍoÝÍ6MÎ„Î:Ï@?Ï)€Ï5ªÏ1àÏ@ÐKSÐ+ŸÐ+ËÐ5÷Ð#-ÑHQÑnšÑs	ÒC}Ò1ÁÒ1óÒ"%ÓZHÓa£Ó6Ô;<ÔFxÔ;¿Ô@ûÔg<ÕK¤ÕAðÕH2Öb{Ö!ÞÖI×FJ×?‘×^Ñ×+0ØD\Ø_¡Ø4Ù6ÙISÙM�Ù?ëÙ +Ú;LÚ8ˆÚ5ÁÚ&÷ÚUÛ:tÛ3¯ÛãÛ~ûÛDzÜ2¿ÜRòÜ%EÝ<kÝ¨Ý<ÃÝBÞ+CÞ;oÞ/«Þ.ÛÞ'
! ßD2ßSwß‰Ëß(Uà0~àR¯àdáDgá¬á4Æá*ûá<&â;câŸâ4¿â-ôâ5"ã/Xã2ˆã)»ãBåã.(ä!Wä;yä µä"Öäùä8
! å#Cå!gåE‰å$ÏåWôåLLæ/™æ-Éæ1÷æ/)çbYçT¼ç&èN8è‡èe¤èR
! é5]é“é/±éáéHøéNAê)�ê?ºê6úê@1ë=rë/°ë;àëJì<gì8¤ì:Ýì?í(Xí3�í:µí:ðí6+î6bî™î4´î2éî=ïRZï>­ïìï9ð9Að&{ð&¢ð5Éð(ÿð9(ñbñ1~ñ1°ñâñò1"ò#Tò xò‚™òwó&”ó»ó-Õó*ô;.ôjô2€ô>³ô1òô*$õOõ.^õ+�õ-¹õ/çõLö,dö1‘ö$ÃöPèöK9÷,…÷D²÷*÷÷6"øRYøR¬øBÿø5Bù;xù®´ù1cú•ú(µúIÞúF(ûFoû'¶ûJÞûI)ü&sü·šüORý¢ýÁý×ýíýDþ$Hþ/mþ@�þ.Þþ
ÿK*ÿ.vÿ2¥ÿØÿëÿþÿD$Y/~®Ìé#+FRe3¸9ì&:6iqÛ/ûD+4p$¥4ÊRÿORL¢Cï/3!c-…1³8å+5a!|ž2ºJíJ8GƒWË&#9J6„3»3ï'#	.K	'z	!¢	Ä	CÝ	?!
! a
! ~
! =ž
! <Ü
! *MDH’HÛH$Hm¶$È(í'
8>
8w
$°
EÕ
$Ä@sCy6½?ôI4I~1ÈIú$DiE† Ì»m<)&f>�VÌ&#-JKxÄ~ÙQXHªOó CKd)°(Ú%0),Zj‡Bò>5:t7¯#çBGN=–-Ô7):$d‰; (Ü)'/nW,Æ3ó&'0N%1¥3×%,1%^E„%Ê0ð(!.J4y@®+ï43P+„9°êP GX ;  6Ü D!=X!¡–!)8""b";…"Á"Ú";÷"U3# ‰#&ª#$Ñ##ö#v$v‘$}%~†%-&L3&!€&-¢&"Ð&]ó&)Q'K{',Ç';ô'`0(N‘(#à(=);B))~)¨)oÆ)Œ6*{Ã*?+E[+*¡+%Ì+Nò+3A,(u,ž,*½,è,U-OW-&§-7Î-a.2h.&›.(Â.&ë./1/F/[/Mz/?È/70?@0!€0*¢0Í0é0C1PH1*™1JÄ1J2+Z26†28½2wö27n3D¦3?ë3%+4:Q46Œ4ÅÃ4V‰5<à5F6Pd6"µ65Ø6M7=\7(š7$Ã7Hè7:18Nl8»8{Ê8yF9yÀ9_::Lš:Rç:A:;L|;1É;¸û;>´<?ó<03=¶d=/>GK>0“>/Ä>¡ô>M–?ä?'ú?%"@H@D_@j¤@A*AKCAF�AÖA>ðA,/B!\B)~B"¨B.ËB1úB-,CZC0yC5ªCSàC[4DQ�DâDWbEoºES*F?~F6¾FõF>uGr´G\'Hr„H¤÷H€œIUJIsJ†½J‹DKƒÐKNTLˆ£L’,MJ¿MQ
! NJ\Nu§N^O4|O�±O43PFhPX¯P�Qn–QvR6|R`³R_S*tSTŸStôS\iToÆT|6Ug³U[VxwVVðV^GWI¦WsðWgdXTÌX-!Y@OY3�YYÄYTZ8sZd¬Zo[,�[u®[€$\�¥\&C]bj]*Í]Oø]LH^@•^+Ö^=_8@_/y_&©_9Ð_O
! `)Z`D„`sÉ`8=aQvagÈag0bg˜bfcpgcrØcWKd_£dWeW[eW³eWfWcfc»fcgCƒgAÇg@	hwJhCÂh+iK2i;~i$ºilßiELj;’jˆÎjTWk¬k¼,l`él1Jmb|mDßmM$n5rn6¨n:ßn=o|XoKÕoh!pIŠpDÔpXq\rqKÏqdrN€rXÏr”(sV½sStkhtfÔth;u^¤u‹vt�vNwKSwYŸwHùwCBx{†xXy}[yXÙyp2zf£zJ
! {XU{^®{X
|df|[Ë|r'}Wš}‚ò}bu~PØ~S)`}OÞD.€^s€GÒ€E�E`�F¦�>í�/,‚<\‚?™‚;Ù‚(ƒ>ƒt^ƒKÓƒK„Vk„•Â„nX…vÇ…O>†›Ž†4*‡G_‡.§‡KÖ‡k"ˆFŽˆRÕˆM(‰Mv‰MÄ‰EŠ3XŠ3ŒŠ,ÀŠcíŠƒQ‹DÕ‹GŒ+bŒPŽŒQßŒR1�T„�PÙ�[*ŽJ†Ž:ÑŽ/�9<�2v�A©�$ë�-�s>�*²�XÝ�+6‘%b‘Lˆ‘<Õ‘i’d|’Aá’=#“La“I®“Dø“a=”>Ÿ”9Þ”J•"c•/†•5¶•Vì•)C–Cm–l±–]—3|—2°—Dã—D(˜Mm˜ƒ»˜=?™‡}™eš4kš@ š;ášA›C_›.£›€Ò›\SœO°œR�tS�IÈ�.žOAž;‘žEÍž8Ÿ@LŸC�ŸhÑŸV: 6‘ DÈ $
¡%2¡�X¡™æ¡n€¢4ï¢n$£g“£7û£q3¤<¥¤Iâ¤R,¥>¥i¾¥a(¦OŠ¦ÍÚ¦.¨§+×§C¨jG¨>²¨6ñ¨9(©0b©#“©’·©,Jª<wª.´ªIãªA-«%o«T•«Jê«G5¬J}¬=È¬a­*h­T“­@è­H)®Hr®$»®.à®V¯=f¯B¤¯~ç¯cf°ZÊ°G%±)m±¤—±><²6{²A²²Aô²O6³\†³Aã³K%´?q´]±´EµkUµ�Áµ”Q¶Gæ¶m.·Sœ·Bð·W3¹C‹¹_Ï¹f/º/–ºRÆº`»_z»KÚ»Q&¼Jx¼7Ã¼Qû¼nM½[¼½C¾C\¾K ¾Jì¾E7¿]}¿”Û¿mpÀ_ÞÀa>Á7 ÁLØÁ:%Â(`ÂO‰ÂEÙÂNÃ:nÃ(©Ã4ÒÃpÄQxÄ7ÊÄ\Åg_ÅNÇÅ8ÆZOÆ;ªÆEæÆh,Ç7•Ç>ÍÇoÈ+|È&¨È)ÏÈHùÈ!BÉ/dÉW”ÉgìÉ?TÊ©”Ê<>Ëh{ËiäË4NÌ[ƒÌPßÌK0Ík|ÍoèÍˆXÎ:áÎiÏ0†Ï_·ÏCÐ,[ÐEˆÐLÎÐ9ÑHUÑ/žÑFÎÑBÒ:XÒc“Òf÷ÒR^ÓC±Ó1õÓI'ÔdqÔCÖÔRÕqmÕ‡ßÕ8gÖG ÖCèÖ0,×A]×=Ÿ×kÝ×dIØd®ØOÙ?cÙ4£ÙGØÙ9 Ú@ZÚ;›ÚA×ÚBÛH\ÛU¥ÛiûÛZeÜOÀÜoÝ^€Ý;ßÝNÞWjÞIÂÞTßwaß_Ùß[9à*•à;ÀàJüàPGá¨˜á@AâB‚âLÅâdã*wãT¢ã(÷ã/ ä§Päøä>å`?åX åÒùåþÌæ}ËçëIè5é.Dëtsí[èíJDîV�î+æî¯ï¼Âï;ð™»ð‰Uñ<ßñ]òPzò¸Ëò\„ó&áô]õ4fõ+›õ*ÇõNòõsAönµö%$÷\J÷(§÷(Ð÷ù÷ ø8øXø xø ™ø-ºø'èø*ù\;ù0˜ù0Éù^úù]Yúc·úÌûÆèûž¯üaNþC°þ3ôþ5(ÿB^ÿA¡ÿ6ãÿ;*V$�%¦ÎÌ8›TÔŠ)T´’	.œ>Ëe
! ppá&ç#3
! S^n~Z�ÜBùG<_„}ä@bD£+è,+AYmDÇ"	M/	h}	Xæ	E?
! =…
! /Ã
! Wó
! =K7‰`Ái"QŒQÞ?0
Dp
Pµ
80?epYÖ[0NŒTÛP0V�IØG"(jK“>ßPJoBº<ý\:d—]ü\ZY·s:…lÀ6-?d7¤Ü¢õ3˜~Ì9K:…DÀS-Y7‡4¿VôJK5–5Ìq*t)ŸMÉ'&?+fŒ’L/l@œOÝO-:}+¸4äB=\7š8ÒD MP cž 7!.:!.i!/˜!BÈ!/"K;"W‡"½ß"E�#Gã#S+$P$.Ð$!ÿ$A!%Ac%S¥%Bù%=<&4z&f¯&F'=]'?›'=Û'B(<\(™(AŸ(Dá(U&)`|)Ý)3ü)10*0b*8“*HÌ*B+?X+9˜+AÒ+2,&G,'n,(–,1¿,*ñ,+-&H-.o-0ž-0Ï-..M-.{.i“.fý.&d/‹/7¢/*Ú/&0],0%Š0*°0Û0ö0.1-C1-q11Ÿ1DÑ1�2‹¤2103Gb3iª3W4Dl4@±4cò4IV5C 5Fä5U+6b�6dä6WI7€¡7@"8Ac8E¥8?ë8A+9]m9@Ë9H:lU:yÂ:F<;
ƒ;‘;%¡;'Ç;mï;"]<@€<|Á<B>=4�=!¶=Ø=hó=^\>>»>8ú>83?!l?SŽ?6â?L@If@4°@3å@GA1aAE“A7ÙA3B6EB=|BEºB,CB-C7pCC¨CFìC;3D7oDP§DWøDPEPpEBÁE(F:-F hF‰F©FEÃF 	G2*G']G…G<’GiÏGa9H›H ¨H1ÉH=ûH39I1mI0ŸI9ÐI0
! J:;J@vJ<·J7ôJ7,K5dK9šK1ÔKALYHLF¢L=éL:'M2bMR•M9èMH"NFkN>²N;ñN0-O@^O=ŸOœÝOzzPAõPG7Q.QX®QAR<IR:†RNÁR#S54SFjSD±SCöS4:T+oT=›TEÙT?U_U:}U$¸U0ÝUV2+VK^V#ªV%ÎVZôV>OW)ŽW ¸W=ÙW@X\XX<µXEòXL8YG…YKÍY=Z_WZ=·Z%õZ[.:[1i[r›[€\s�\z]ˆ~]{^{ƒ^‰ÿ^|‰_t`‚{`uþ`vtaëa‡kbˆób�|cDþcHCd4ŒdTÁd5eLLe2™e.Ìe%ûe-!f(Of9xff²fJg,dg0‘gUÂg5h*Nh>yhƒ¸h‰<i1Æi5øi7.jZfj7Áj8ùj,2kC_kA£kåkýklG+lTsl=ÈlJm=QmJ�m Úm'ûm'#n)Kn0unB¦n&énoC.oro4‚o'·o7ßompV…p.ÜpEq0Qq0‚q9³qBíq30r)dr@Žr6Ïr;sHBs!‹sX­s?tdFt2«t
Þt9ìt)&u8Pu7‰u3Áuõuv*vHDv2�v3Àv7ôvU,wJ‚w4Íw6x39x;mx=©xçxyH!y?jy.ªy/Ùy)	z#3zGWz"Ÿz,Âz3ïz#{,?{[l{È{,Ø{	|0|7@|%x|=ž|ƒÜ|9`}Pš}#ë}~7*~4b~/—~?Ç~0.8.g–.¯;Þb€^}€UÜ€"2�/U�…�¤�Ã�?á�|!‚&ž‚qÅ‚h7ƒ‚ ƒc#„‡„
! œ„/§„@×„+…<D…0�…A²….ô…5#†/Y†‰†Nœ†(ë†H‡0]‡AŽ‡*Ð‡<û‡@8ˆWyˆ/ÑˆZ‰7\‰8”‰4Í‰DŠ1GŠ9yŠC³Š/÷ŠE'‹8m‹#¦‹RÊ‹ZŒfxŒ4ßŒ,�0A�5r�D¨�3í�-!ŽYOŽk©ŽJ�u`�UÖ�],�IŠ�\Ô�D1‘Kv‘#Â‘æ‘5û‘1’*I’2t’R§’_ú’.Z“4‰“6¾“>õ“:4”9o”2©”1Ü”\•Ik•-µ•+ã•/–(?–Uh–*¾–cé–RM—8 —;Ù—!˜.7˜8f˜Ÿ˜/º˜0ê˜<™@X™!™™X»™š"$š!Gš-iš—š0¯š'àš,›-5›)c›�›§›Â›Ý›õ›+œ0œ,Iœ;vœ0²œ;ãœ;�=[�;™�;Õ�;ž;Mž;‰ž/Åž8õž.ŸBŸIŸ/]Ÿ-�Ÿ,»Ÿ(èŸ( : >L H‹ Ô 
í Oû (K¡+t¡) ¡6Ê¡2¢+4¢.`¢/�¢4¿¢*ô¢+£6K£3‚£¶£Ó£1ð£;"¤½^¤,¥!I¥Dk¥J°¥$û¥D ¦0e¦'–¦,¾¦-ë¦5§6O§<†§@Ã§8¨9=¨1w¨<©¨%æ¨,©9© W©/x©3¨©QÜ©1.ªZ`ª?»ª<ûª8«AI«'‹«5³«&é«&¬7¬V¬!q¬4“¬<È¬­* ­)K­Ou­\Å­"®i+®C•®'Ù®¯"¯'B¯"j¯6�¯¢Ä¯7g°KŸ°!ë°<
±JJ±,•±DÂ±[²2c²\–²jó²@^³>Ÿ³?Þ³J´.i´<˜´Õ´õ´>µ2Sµ †µ"§µ6Êµ5¶/7¶Jg¶.²¶5á¶6·9N·Sˆ·CÜ·S ¸Lt¸GÁ¸k	¹4u¹Lª¹.÷¹$&º0Kºs|ºpðº<a»Až»cà»3D¼4x¼4­¼@â¼6#½NZ½©½^¿½¾@.¾%o¾M•¾Tã¾*8¿-c¿G‘¿;Ù¿<À<RÀ;�À>ËÀ=
! ÁGHÁ-�Á$¾Á0ãÁÂ4Â>OÂ4ŽÂ%ÃÂ=éÂ>'Ã:fÃN¡ÃDðÃ15Ä,gÄ6”Ä1ËÄhýÄ^fÅYÅÅÆ.Æ_GÆ\§Æ0Ç15Ç`gÇ^ÈÇg'È>�È>ÎÈ<
É JÉ+kÉ—ÉLµÉÊ"Ê<9Ê<vÊ8³Ê#ìÊ7Ë:HË*ƒË%®ËcÔË:8Ì*sÌžÌ*»ÌæÌÍ%"ÍHÍIgÍC±ÍMõÍ?CÎMƒÎŽÑÎM`ÏE®Ï]ôÏARÐD”ÐTÙÐS.Ñ>‚ÑtÁÑX6Ò>�ÒÎÒÛÒçÒXóÒnLÓ»ÓÚÓSëÓ;?Ô9{ÔKµÔDÕHFÕ9�Õ9ÉÕ6Ö6:ÖPqÖ@ÂÖD×;H×?„×<Ä×@ØIBØLŒØ}ÙØaWÙq¹Ùa+Ú>�Ú3ÌÚIÛZJÛ\¥Û9Ü^<Ü2›ÜLÎÜ:Ý:VÝ<‘Ý.ÎÝ?ýÝF=Þ9„ÞA¾Þ_ß?`ß0 ßQÑßO#àPsà<Äà<á(>á,gá*”á@¿á7â>8â=wâ7µâ:íâb(ã^‹ãQêãO<ähŒälõä=bå~ å‚æ`¢æ^ç5bç-˜ç4Æç2ûçV.è8…è:¾è`ùè/Zé<Šé4Çé.üé0+ê@\êN�êKìê/8ë=hëH¦ë9ïëH)ìArì6´ìIëìL5íF‚íAÉí,î48îImî.·îhæîKOïJ›ïEæï!,ðXNðU§ðMýð}KñsÉñA=ò7ò?·ò,÷ò=$ó5bóB˜ó°Ûó_ŒôBìô>/õ=nõ7¬õVäõH;ö?„öiÄö6.÷6e÷Oœ÷>ì÷-+ø6YøE�ø%Öø)üø=&ùLdù)±ùBÛù"ú!Aúcú-‚ú.°ú+ßú<ûYHûD¢û%çû9
ü=GüS…ü8Ùü8ýBKý8Žý7Çý5ÿý.5þ<dþ<¡þ9Þþ?ÿ@Xÿ?™ÿ+ÙÿSeY*¿3êR&q'˜UÀQQh6ºñ1"C0f"—"ºOÝ>-7l+¤9Ð*
! .5-dv’>	5H ~2Ÿ'Ò0ú,+,X7…9½S÷BKEŽSÔ\(	t…	=ú	I8
! I‚
! 6Ì
! V8ZB“DÖAR]°DÍ/
:B
U}
MÓ
!!)C)m^—8ö8/6h'ŸLÇ::O*ŠQµ8R@B“?Ö?7VFŽSÕS)L}<Ê:DB\‡NäS3*‡-²Jà$+'P+xX¤<ý':Eb9¨9â0 M:nY©@5D0z3«1ß./@+p)œ&Æ*í<AUH—Eà;&Hb3«ßþI~1ÈGú7B9z3´!è%
! F0Nw-ÆNô:C 6~ Bµ 9ø -2!V`!A·!#ù!4"(R"<{"Z¸"4#%H#1n#/ #9Ð#A
! $VL$`£$s%8x%&±%IØ%*"&M&+l&N˜&Nç&$6'%['$�'¦''½'%å'(9((b(z(š(#º(1Þ(0)9A);{)M·)=*3C*4w*…¬*c2+!–+D¸+(ý+)&,BP,	“,�,<µ,<ò,/-*@-Wk-%Ã-5é-6.3V.Š.¦.+½.Aé.+/1@//r/F¢/Ié/#30eW0G½0I1@O1I�10Ú1R2)^2ˆ2(¥2<Î2936E3:|3 ·3Ø3U÷3jM4&¸4"ß454!59V5(�5¹51Ð5M6KP69œ6HÖ6G7@g7=¨7<æ7I#8<m8Iª8Vô80K9`|9jÝ9EH:DŽ:gÓ:;;GR;Cš;Þ;/ú;0*<[<Er<"¸<&Û<€=6ƒ=!º=PÜ=,->RZ>.­>1Ü>P?L_?J¬?F÷?>@iY@*Ã@.î@FA2dA9—A4ÑAB1BJPB3›B@ÏB CH1C5zC)°C"ÚCýC6D&SD1zDH¬DYõDlOEE¼ERFEUFR›F2îFƒ!GE¥GJëGF6H;}H?¹HDùHD>I*ƒI%®I@ÔI7J2MJ5€J.¶JPåJ-6KBdK1§K%ÙKDÿK6DL@{LG¼LGM;LM7ˆM3ÀM7ôM*,N7WN;�N/ËN(ûN$$O`IO7ªOLâOK/P{P®ŒP1;Q1mQ1ŸQYÑQ)+R/UR…R> RTßRR4S[‡S:ãS9TCXT1œTBÎT0U>BU5�U;·U>óUy2V"¬VJÏVIWVdWJ»WFXVMX?¤XfäXKKY;—Y9ÓY2
ZO@Z$�Z:µZ5ðZ$&[<K[Aˆ[9Ê[a\1f\N˜\Lç\J4];]0»]1ì]^+<^1h^2š^AÍ^1_6A_=x_P¶_T`3\`V�`jç`Rara/�aFÀa)b:1blb3ˆb7¼b7ôb:,c4gc/œc1ÌcLþcmKd8¹d2òdG%e1me-Ÿe9Íe>f>FfG…f0Íf4þfH3g)|g'¦gGÎg*hMAhO�hKßhT+i:€iC»ilÿi+lj@˜jNÙjU(kb~k_ákRAl'”li¼l*&mQmEmmF³m=úmW8n.�nw¿n/7oFgo^®oP
pI^p'¨p0Ðp<q#>q8bqZ›qWöqFNr^•r2ôrK's/ss:£sEÞs>$t4ctC˜t4ÜtDu0Vu<‡u%Äu8êu?#v4cv#˜v&¼v_ãvvCwXºwzx;Žx,Êx4÷x1,yI^y-¨y<Öy8z+Lz'xz) z#Êz3îz"{2?{=r{/°{à{ì{Aø{W:|1’|XÄ|&}6D}1{}=­}=ë}:)~d~=~(½~!æ~ 3)]Ey:¿0ú.+€9Z€C”€Ø€<÷€[4�8��WÉ�K!‚<m‚ª‚2¼‚Fï‚C6ƒ/zƒ<ªƒ\çƒ2D„lw„'ä„%…-2…3`…>”…Ó…8ß…"†
! ;†F†XX†Y±†D‡8P‡!‰‡)«‡Õ‡0ó‡W$ˆA|ˆB¾ˆ?‰UA‰m—‰+Š21ŠGdŠ9¬Š.æŠA‹/W‹‡‹8œ‹8Õ‹AŒKPŒ@œŒOÝŒ#-�3Q�,…�,²�'ß�#Žj+Ž&–Ž!½Ž6ßŽA�7X�7��7È�2�.3�Fb�,©�'Ö�kþ�&j‘%‘‘@·‘Jø‘ŽC’3Ò’c“Pj“Z»“U”Nl”J»”3•.:•Wi•>Á•O–9P–SŠ–Þ–î–!—S0—„—)ž—&È—?ï—/˜;M˜9‰˜7Ã˜2û˜B.™3q™1¥™1×™9	šHCšKŒšIØšR"›/u›f¥›Qœ;^œ9šœ@Ôœ7�gM�"µ�2Ø�Gž5Sž@‰ž1Êž0üž8-Ÿ[fŸ=ÂŸ[ 6\ i“ iý tg¡VÜ¡N3¢O‚¢/Ò¢)£P,£T}£>Ò£8¤QJ¤[œ¤9ø¤=2¥Up¥3Æ¥.ú¥H)¦or¦*â¦
§§>5§Mt§CÂ§2¨59¨+o¨@›¨2Ü¨-©E=©(ƒ©C¬©;ð©-,ª(Zª,ƒªO°ª2«<3«Ap«;²«Rî«=A¬?¬¿¬$×¬/ü¬,­F­(a­rŠ­ƒý­Y�®9Û®(¯$>¯)c¯#�¯)±¯PÛ¯G,°#t°#˜°s¼°K0±W|±Ô±ò±-².?²fn²CÕ²S³Wm³0Å³¹ö³.°´4ß´@µ7Uµ"�µ8°µ0éµM¶Kh¶/´¶0ä¶*·±@·%ò·¸-¸H¸"b¸2…¸M¸¸(¹(/¹7X¹ �¹±¹Ñ¹ ñ¹º+1º#]º?�ºYÁºm»C‰»Í»'å»=
¼)K¼<u¼(²¼[Û¼C7½${½R ½ó½0¾H8¾*�¾*¬¾5×¾
¿+)¿*U¿&€¿1§¿8Ù¿BÀ:UÀ+�À+¼À@èÀ7)Á$aÁG†Á@ÎÁaÂ?qÂ±Â,ÀÂíÂ-Ã#1Ã#UÃ#yÃ�Ã*±Ã&ÜÃÄ!Ä%<ÄbÄ
yÄ‡Ä
£Ä±Ä'ÈÄ
ðÄþÄ0Å JÅkÅÅ'šÅIÂÅÆ(Æ'GÆ\oÆ*ÌÆ*÷ÆM"ÇpÇ �Ç±ÇÈÇ<æÇ2#ÈVÈiÈ&ˆÈ¯ÈPÆÈXÉpÉ#�É±ÉCËÉ0Ê@Ê!UÊ$wÊ5œÊ)ÒÊ.üÊ9+ËFeËV¬Ë Ìc$ÌvˆÌ;ÿÌ0;Í@lÍD­Í8òÍ+Î2KÎ<~ÎI»ÎsÏ8yÏ#²Ï$ÖÏûÏ7ÐNÐ3hÐ3œÐÐÐ%ïÐ)Ñr?Ñ²ÑAÄÑ<ÒECÒ@‰ÒÊÒäÒ&ðÒ:Ó5RÓ#ˆÓL¬Ó ùÓ&ÔAÔ)_Ô0‰Ô,ºÔ-çÔ9Õ)OÕ<yÕ3¶ÕUêÕs@Ö´ÖÉÖßÖ$îÖ0×bD×D§×'ì×Ø%Ø7ØLØ/[ØF‹Ø\ÒØ2/ÙbÙ)€ÙBªÙHíÙB6Ú1yÚ7«ÚKãÚ/ÛLKÛC˜Û\ÜÛ=9ÜSwÜ&ËÜ4òÜ5'Ý9]ÝI—Ý+áÝ\
Þ5jÞ_ Þ5ß=6ß@tßTµß3
! à;>à;zàH¶à%ÿà7%á']á3…á4¹áîá!õáAâ4YâŽâªâ<Èâ&ã,ã=5ã0sã¤ãÃãããYóã@MäCŽäCÒä:å-QåSå2ÓåFæ,Mæ.zæ/©æ0Ùæ/
! ç/:ç1jç(œçÅçåç)è,+è.Xè‡è)¡è1Ëè2ýè20écé€é�é+­éÙé,èéê+êJêYêoê‰êQ˜êêêùêë/ëIëcë }ëžë­ë¾ëÍëãëýëì:4ìoìì'Žì(¶ì%ßì-í3í=Mí ‹í%¬íÒíáí9ðí*î<@î>}îP¼î
ïï.ïIï]ïoï~ï�ï!¤ï"ÆïLéï]6ð%”ð)ºðäð@õð6ñ2Hña{ñ.Ýñòò$2ò2WòŠò ò¸ò0Êò6ûò,2ó%_ó…ó›óB¯ó(òóôw-ô¥ô#¹ôÝôCùô0=õ*nõH™õ2âõö*ö?FöJ†öÑöèö"ùö@÷-]÷@‹÷JÌ÷(ø@øVø8iøª¢øKMù0™ùÊù/Þù<ú?Kú2‹ú=¾úüúû*û0>ûoû…û˜û§©ûQü8düC�üáüôüýý3ýBýXýtýAƒý%Åý"ëýþ'þ'Fþ%nþ5”þCÊþÿ%$ÿ)Jÿtÿ!’ÿ´ÿ3Åÿ3ùÿ- $C 2h › :¶ ñ 
!  " *> *i ” (­ 8Ö  (- V %q )— Á Þ ö $ 3 B W r +‡ A³ 5õ + ?F † =¡ 3ß & -: =h %¦ Ì ã  # ": /] � ¡ V¿ ( C? "ƒ ¦ º Ì -å  ( B T  k )Œ ¶ &Ë ò 	 !	 @	 _	 -~	 4¬	 á	 ú	 
!  &&
!  4M
!  2‚
!  µ
!  Ò
!  ë
!   % *B Mm » Î è ý / E ^ %p #– º <Ê 
 !&
 H
 H^
 G§
 ï
 
!  " '? *g ’ X¥ Xþ W -u N£ ò ; EL ’ ¬ É ã ø  #, *P { • § Á Ý jû ?f I¦ Eð 16 -h C– �Ú W\ ]´ 9 WL 4¤ WÙ .1 !` >‚ BÁ ` ie 8Ï 1 3: :n :© 7ä 2 FO D– \Û F8 / E¯ /õ W% 9} :· Dò 47 Nl 8» Fô j; 1¦ 3Ø - B: ¿} ¯= qí Ç_  ­'! IÕ! 8" ,X" 6…" Z¼" 8# 8P# #‰# Œ­# u:$ v°$ 4'% (\% \…% 1â% c& Dx& 4½& Fò& 49' Rn' JÁ' R( 4_( ”( T²( +) q3) ¥) Y¼) /* :F* !�* 7£* +Û* T+ V\+ H³+ 0ü+ E-, ,s, F , -ç, G- =]- k›- /. +7. 3c. )—. Á. 7Ù. >/ >P/ $�/ )´/ *Þ/ "	0 .,0 "[0 %~0 #¤0 %È0 2î0 -!1 6O1 )†1 (°1 +Ù1 <2 CB2 A†2 8È2 ,3 9.3 Sh3 1¼3 %î3 X4 1m4 ZŸ4 Zú4 QU5 §5 A½5 @ÿ5 @@6 ,�6 5®6 4ä6 67 6P7 7‡7 ¿7 
Ø7 /æ7 >8 2U8 'ˆ8 '°8  Ø8 #ù8 79 2U9 \ˆ9 å9 
! û9 : ": =: Z: x: )Š: )´: KÞ: (*; S; 6s; Gª; Kò; :>< y< †< e¥< = += K= #g= 7‹=  Ã= ,ä= O> Va> B¸> 9û> ;5? sq? å? %@ "*@ 0M@ H~@ Ç@ ä@ ú@ CA KVA ?¢A %âA :B 6CB 9zB /´B IäB L.C #{C 1ŸC XÑC 8*D /cD 7“D $ËD *ðD :E (VE ;E 7»E 7óE 6+F ;bF 4žF RÓF :&G &aG MˆG :ÖG H H V'H D~H ÃH uãH MYI $§I CÌI 8J IJ aJ g€J èJ OõJ 'EK 6mK ¤K R«K 8þK ,7L XdL *½L ?èL >(M CgM >«M CêM 6.N %eN -‹N 9¹N 'óN ;O )WO #�O ¥O ÂO !àO P /P IDP NŽP XÝP 86Q *oQ 0šQ ;ËQ CR GKR (“R (¼R 5åR %S $AS ,fS ,“S ,ÀS 0íS 'T #FT ›jT ÂU =ÉU V  #V CDV CˆV LÌV >W 9XW ’W -®W ZÜW P7X CˆX LÌX \Y ZvY xÑY JZ fZ 2…Z #¸Z +ÜZ [[ Ud[ 1º[ ;ì[ #(\ JL\ U—\ sí\ Ta] b¶] U^ oo^ xß^ XX_ U±_ C` bK` X®` \a Cda 0¨a >Ùa &b *?b 7jb ‡¢b J*c Vuc DÌc Rd 5dd >šd >Ùd !e *:e 1ee 0—e &Èe Kïe >;f (zf ,£f +Ðf #üf . g :Og >Šg /Ég ˆùg H‚h 4Ëh `i pai 0Òi Cj #Gj &kj A’j =Ôj k ^%k E„k VÊk S!l $ul 2šl ;Íl 	m %m 2Em 8xm ±m =Ðm 0n 7?n Mwn 1Ån e÷n A]o :Ÿo NÚo P)p ~zp {ùp &uq ?œq <Üq .r 4Hr 3}r ±r 
! Är MÏr Os 9ms K§s …ós byt Üt o÷t dgu =Ìu "
! v 4-v 'bv "Šv !­v !Ïv  ñv !w "4w <Ww 6”w )Ëw $õw #x +>x Ajx ¬x Éx /åx "y 8y &Wy 3~y #²y 7Öy &z /5z ez &„z «z $Åz êz 5{ #<{ $`{ &…{ -¬{ 'Ú{ 1| 4| #Q| #u| ™| ¶| Õ| !ð| $} $7} -\} +Š} ¶} !Õ} !÷} 0~ (J~ (s~ œ~ ¸~ :Õ~ - .> m @ˆ ?É Y	€ 4c€ C˜€ 8Ü€ (� 5>� (t� (�� .Æ� Yõ� ?O‚ 9�‚ )É‚ Jó‚ @>ƒ 9ƒ G¹ƒ D„ HF„ G�„ (×„ … :… C@… >„… :Ã… mþ… #l† -�† $¾† .ã† 7‡ /J‡ /z‡ &ª‡ Ñ‡ oé‡ sYˆ =Íˆ —‰ <£‰ Wà‰  8Š BYŠ qœŠ c‹ Cr‹ G¶‹ Sþ‹ 5RŒ :ˆŒ ;ÃŒ <ÿŒ G<� A„� PÆ� RŽ UjŽ 2ÀŽ JóŽ I>� Fˆ� NÏ� G� If� ?°� Qð� qB‘ B´‘ C÷‘ T;’ Z�’ 2ë’ 2“ ,Q“ *~“ "©“ 5Ì“ 4” G7” L” gÌ” P4• P…• TÖ• U+– b�– Dä– I)— ]s— TÑ— X&˜ T˜ WÔ˜ H,™ Mu™ Ã™ &ã™ 
! š !(š @Jš ‹š «š Àš àš ›  › "@› <c› J › Më› >9œ Zxœ cÓœ J7� %‚� Z¨� Sž JWž &¢ž 8Éž XŸ i[Ÿ jÅŸ o0  O   oð  9`¡ 2š¡ 'Í¡ @õ¡ P6¢ &‡¢ ®¢ .Â¢ <ñ¢ %.£ IT£ až£ <¤ ==¤ {¤ BŠ¤  Í¤ (î¤ B¥ "Z¥ }¥ UŽ¥ <ä¥ 7!¦ cY¦ ]½¦ T§ Ap§ K²§ Cþ§ >B¨ =�¨ 7¿¨ ,÷¨  $© <E© G‚© 8Ê© ª ,ª Lª gª #‚ª "¦ª Éª Ýª úª  « !;«  ]« !~«   « !Á« ã« ¬ #¬ >C¬ &‚¬ ©¬ »¬  Ò¬ ó¬ ­ _!­ `�­ eâ­  H® Ci® C­® )ñ® -¯ >I¯ €ˆ¯ .	° V8° B�° BÒ° 6± &L± ms± .á± *² ';² %c² *‰² "´² &×² )þ² 1(³ 'Z³ ‚³ :¡³ >Ü³ H´ Cd´ /¨´ 1Ø´ .
! µ -9µ Agµ !©µ ,Ëµ øµ S¶ 'c¶ 7‹¶ NÃ¶ -· 3@· Bt· 3·· Jë· Y6¸ �¸ *©¸ 3Ô¸ ¹ .¹ &H¹ )o¹ ™¹ '²¹ Ú¹ 'ú¹ 2"º 4Uº 4Šº I¿º )	» #3» ?W» —» 8²» 9ë» 4%¼ /Z¼ ?Š¼ 0Ê¼ .û¼ .*½ 4Y½ 5Ž½ >Ä½ ?¾ 7C¾ 1{¾ $­¾ <Ò¾ C¿ QS¿ <¥¿ Dâ¿ 8'À /`À @�À :ÑÀ VÁ gcÁ hËÁ m4Â M¢Â mðÂ c^Ã tÂÃ u7Ä z­Ä Z(Å zƒÅ cþÅ bÆ CÆ 0ÃÆ ôÆ MÇ #NÇ drÇ "×Ç =úÇ +8È ;dÈ ? È VàÈ 57É BmÉ g°É eÊ \~Ê .ÛÊ J
! Ë HUË OžË PîË J?Ì /ŠÌ #ºÌ 6ÞÌ 5Í ;KÍ 4‡Í <¼Í *ùÍ $Î <DÎ 2�Î 1´Î 1æÎ DÏ N]Ï B¬Ï 'ïÏ -Ð 2EÐ AxÐ DºÐ 5ÿÐ A5Ñ ,wÑ 6¤Ñ ;ÛÑ =Ò 2UÒ jˆÒ sóÒ žgÓ tÔ n{Ô aêÔ HLÕ &•Õ D¼Õ -Ö $/Ö 7TÖ 1ŒÖ 0¾Ö FïÖ R6× 9‰× 3Ã× 7÷× 6/Ø 7fØ IžØ OèØ Q8Ù DŠÙ ,ÏÙ 4üÙ =1Ú FoÚ /¶Ú RæÚ J9Û J„Û NÏÛ \Ü K{Ü 2ÇÜ 1úÜ ;,Ý EhÝ 2®Ý 1áÝ Þ @3Þ DtÞ D¹Þ @þÞ F?ß !†ß >¨ß (çß (à %9à G_à >§à æà Gùà :Aá M|á -Êá 2øá *+â 2Vâ 4‰â .¾â +íâ <ã Vã ˆvã >ÿã Z>ä :™ä SÔä H(å Rqå SÄå 7æ @Pæ 9‘æ Ëæ 8çæ ! ç 9Bç 5|ç 4²ç 'çç Nè K^è -ªè PØè 8)é bé Fré ¹é *Òé /ýé ,-ê Zê Euê »ê DÖê &ë ;Bë @~ë ¿ë ?Øë 5ì .Nì Y}ì @×ì >í IWí G¡í Xéí ?Bî 7‚î Aºî 'üî $ï 8ï Pï eï }ï •ï ªï Âï ×ï ìï ð ð ,ð Að Vð kð €ð •ð ªð ¿ð Ôð ìð ñ ñ +ñ @ñ Uñ mñ ‚ñ —ñ ¯ñ Äñ Ùñ îñ ò ò -ò Bò Wò lò „ò ™ò ®ò Çò Üò ñò ó 5ó Ró gó ‚ó F�ó Fäó +ô Hô 1eô A—ô "Ùô 2üô '/õ ^Wõ ~¶õ d5ö ošö 
! ÷ +*÷ V÷ !l÷ ;Ž÷ -Ê÷ ø÷ ø )ø Dø &dø 7‹ø „Ãø zHù 4Ãù _øù Xú "wú !šú '¼ú 'äú 7û >Dû 'ƒû $«û _Ðû 0ü 1Cü 1uü 1§ü Ùü ÷ü  ý 7ý 9Vý ;�ý 6Ìý 3þ <7þ 0tþ 1¥þ M×þ ;%ÿ 9aÿ 4›ÿ /Ðÿ !!7"!!Z!x|!yõ!+o!"›!&¾!&å!$!1!-O!4}!'²!Ú!4ï!8$!]!.w!)¦!$Ð!0õ!0&!'W!+!-«!0Ù!,
! !H7!-€!)®!'Ø!.!/!1H!&z!.¡!4Ð!%!7+!9c!5�!(Ó!=ü! :![!>p!4¯!&ä!4	!=@	!&~	!¥	!#Á	!Få	!?,
! !l
! !%†
! !$¬
! !AÑ
! !?!+S!/!,¯!+Ü!&!-/!$]!@‚!>Ã!*
!.-
!+\
!*ˆ
!,³
!.à
!/!?!%_!?…!Å!BÜ!6!2V!‰!:¦! á!!=!(\!=…!3Ã!8÷!60!3g!(›!'Ä!%ì!0!/C!0s!3¤!$Ø!>ý! <!$]!4‚!7·!4ï!.$!5S!4‰!U¾!O!Ud!º!%Ù!*ÿ!2*!*]!2ˆ!%»!á!Rû!N!1n!$ ![Å!n!!D�!Õ!ð!/!/5!6e!+œ!lÈ!5!(R!_{!PÛ!,!"G!$j!1�!3Á!Aõ!7!6K!+‚!&®!&Õ!$ü! !!-B!(p!™!²!Ã!)à!'
! !'2!3Z!Ž!B¨!Aë!B-!2p!/£!%Ó!*ù!U$ !<z !Q· ! 	!!!*!!L!!"`!!ƒ!! Ÿ!!!À!!*â!!!
"!!/"!+Q"!+}"!+©"!+Õ"!+#!+-#!+Y#!+…#!+±#!+Ý#!+	$!$5$!Z$!+u$!(¡$!/Ê$!!ú$!%!%9%!5_%!4•%!4Ê%!%ÿ%!!%&!!G&!!i&!‹&!!¨&!Ê&!%ç&!!
'!!/'!!Q'!!s'!!•'!!·'!)Ù'!%(!;)(!*e(!(�(!+¹(!<å(!"")!E)!:b)!"�)!À)!$Ú)!0ÿ)!'0*!KX*!6¤*!Û*!,ø*!%+!"A+!'d+!4Œ+!(Á+!ê+! ,!$(,!/M,!8},!2¶,!>é,!6(-!D_-!)¤-!Î-! ì-!2
.!"@.!1c.!*•.!À.!)Þ.!</!7E/!}/!R’/!Må/!+30!+_0!‹0!¦0!3Ã0!+÷0!+#1!"O1!(r1!)›1!&Å1!-ì1!!2!<2!S2!Rp2!MÃ2!%3!F73!-~3!¬3!À3! à3!#4!5%4!&[4!-‚4!;°4!,ì4!$5!*>5!&i5!B�5! Ó5!2ô5!<'6!Qd6!X¶6!*7!:7!(U7!,~7!*«7!%Ö7!"ü7!+8! K8!6l8!:£8!9Þ8!>9!;W9!6“9!gÊ9!v2:!,©:!LÖ:!L#;!&p;!:—;!6Ò;!8	<!<B<!A<!>Á<!=!;=!GZ=!¢=!"À=!Pã=!F4>!X{>!AÔ>!7?!.N?!3}?!:±?!Gì?!.4@!:c@!3ž@!?Ò@!KA!/^A!1ŽA!1ÀA!0òA!B#B!1fB!3˜B!9ÌB!MC!MTC!E¢C!AèC!C*D!/nD!=žD!<ÜD!>E!FXE!-ŸE!3ÍE!*F!b,F!:�F!:ÊF!8G!)>G!?hG!H¨G!9ñG!V+H!E‚H!!ÈH!>êH!Y)I!>ƒI!-ÂI!(ðI!AJ!G[J!7£J!/ÛJ!*K!6K!QK!nK!'ˆK!(°K!ÙK!4÷K!,L!GL!0dL!3•L!ÉL!.àL!aM!YqM!:ËM!<N!9CN!}N!�N!6­N!.äN!8O!1LO!-~O!-¬O!8ÚO!3P!1GP!/yP!-©P!:×P!Q!/2Q!bQ!2sQ!j¦Q!TR!,fR!E“R!PÙR!*S!'HS!*pS!›S!±S!$ÆS!)ëS!.T!4DT!1yT!2«T!0ÞT!.U!,>U!'kU!&“U!&ºU!*áU!)V!+6V!)bV!&ŒV!2³V!/æV!(W!&?W!,fW!,“W!,ÀW!/íW!-X!.KX!.zX!.©X!.ØX!=Y!BEY!AˆY!IÊY!EZ!|ZZ!b×Z!B:[!+}[!*©[!*Ô[!ÿ[!9\!:R\!;�\!0É\!>ú\!$9]!q^]!=Ð]!^!Ž^!c_!5r_!¨_!IÃ_!\
`!8j`!N£`!)ò`!aa!i~a!9èa!1"b!6Tb!4‹b!Àb!/Ùb!,	c!C6c!@zc!K»c!+d!E3d!Byd!:¼d!!÷d!&e!d@e!]¥e!4f!S8f!4Œf!Áf!"Òf!&õf!0g!Mg!mg!4Šg!K¿g!h!=*h!5hh!žh!¹h!$Íh!#òh!%i!4<i!4qi!¦i!=¸i!öi!2j!9Ij!`ƒj!Zäj!^?k!:žk!5Ùk!}l!F�l!WÔl!C,m!fpm!y×m!¥Qn! ÷n!Do!]o!?}o!+½o!3éo!Dp!(bp!'‹p!.³p!;âp!?q!^q!@}q!(¾q!+çq!6r!2Jr!:}r!*¸r!Rãr!96s!Hps!+¹s!Cås!#)t!/Mt!A}t!B¿t!7u!@:u!E{u!CÁu!Cv!IIv!@“v![Ôv!$0w!Uw!Mtw!WÂw!4x!gOx!@·x!7øx!50y!Pfy!D·y!<üy!?9z!;yz!Lµz!,{!./{!+^{!8Š{!4Ã{!,ø{!A%|!Fg|!E®|!%ô|!(}!C}!4^}!?“}!'Ó}!*û}!/&~!7V~!=Ž~!/Ì~!0ü~!<-!"j!.�!$¼!4á!!€!,8€!!e€!-‡€!-µ€!=ã€!/!�!@Q�!6’�!OÉ�!4‚!-N‚!8|‚!@µ‚!=ö‚!14ƒ!(fƒ!"�ƒ!*²ƒ!6Ýƒ!&„!2;„!Hn„!·„!/É„!+ù„!Q%…!hw…!;à…!†!I.†!x†!,‘†!3¾†!"ò†!‡!72‡!j‡! ˆ‡!©‡!,Ç‡!-ô‡!:"ˆ!5]ˆ!?“ˆ!?Óˆ!5‰!1I‰!B{‰!E¾‰!IŠ!JNŠ!T™Š!UîŠ!?D‹!=„‹!fÂ‹!B)Œ!ClŒ!M°Œ!SþŒ!CR�!4–�!>Ë�!T
! Ž!"_Ž!0‚Ž!4³Ž!<èŽ!@%�!4f�!J›�!Dæ�!?+�!3k�!@Ÿ�!Rà�!n3‘!C¢‘!Dæ‘!G+’!-s’!7¡’!NÙ’!-(“!9V“!8�“!2É“!2ü“!Q/”!-�”!<¯”!0ì”!•!8=•!5v•!Q¬•!Lþ•!4K–!4€–!/µ–!Aå–!2'—!KZ—!2¦—!6Ù—!/˜!5@˜!/v˜!3¦˜!;Ú˜!;™!%R™!Vx™!"Ï™! ò™!hš!U|š!XÒš!X+›!v„›!4û›!O0œ!N€œ!QÏœ!1!�!6S�!6Š�!+Á�!+í�!6ž!(Pž!3yž!0­ž!%Þž!LŸ!QŸ!hŸ!+|Ÿ!$¨Ÿ!>ÍŸ!3 !9@ !9z !´ !dÐ !}5¡!5³¡!|é¡!?f¢!M¦¢!*ô¢!A£!a£!G}£!/Å£!.õ£!7$¤!6\¤!?“¤!Ó¤!+ñ¤!¥!"3¥!#V¥!z¥!�¥!,¤¥!&Ñ¥!ø¥!$¦!+7¦!c¦!3‚¦!¶¦!Ò¦!ç¦!A§!4B§!&w§!@ž§!Aß§!"!¨!D¨!W¨!o¨!<ƒ¨!;À¨!
ü¨!
! ©!"©!74©!#l©!C�©! Ô©!õ©!'ª!&7ª!^ª!yª!G˜ª!!àª!!«!�$«!]¦«!¬!#¬!$C¬!(h¬!5‘¬!-Ç¬!Sõ¬!ZI­!`¤­!D®!XJ®!*£®!ZÎ®!Y)¯!1ƒ¯!Nµ¯!W°!\°!8l°!Œ¥°!�2±!YÀ±!²!!2²!(T²!}²!#�²!"´²!"×²!Hú²!]C³!F¡³!)è³!;´!FN´!i•´! ÿ´!Y µ!Tzµ!!Ïµ!4ñµ!L&¶!/s¶!b£¶!L·!SS·!A§·!Ré·!%<¸!(b¸!%‹¸!!±¸!(Ó¸!%ü¸!+"¹!N¹!l¹!yƒ¹!‘ý¹!4�º!;Äº!*»!+»!8I»!0‚»!'³»!<Û»!,¼!2E¼!(x¼!-¡¼!,Ï¼!3ü¼!0½!)P½!<z½!$·½!,Ü½!T	¾!^¾!4t¾!+©¾!.Õ¾!&¿!"+¿!#N¿!=r¿!;°¿!Sì¿!K@À!-ŒÀ!…ºÀ!?@Á!0€Á!J±Á!#üÁ!f Â!Z‡Â!TâÂ!X7Ã!�Ã!7¯Ã!4çÃ!FÄ!]cÄ!6ÁÄ!øÄ!>Å!RÅ!KrÅ!.¾Å!EíÅ!.3Æ!-bÆ!7�Æ!gÈÆ!\0Ç!Q�Ç!(ßÇ!1È!:È!?QÈ!2‘È!7ÄÈ!,üÈ!)É!?É!_É!7~É!�¶É!’FÊ!+ÙÊ!(Ë!.Ë!@EË!4†Ë!4»Ë!1ðË!<"Ì!^_Ì!B¾Ì!jÍ!HlÍ!YµÍ!bÎ!.rÎ!¡Î!+¼Î!-èÎ!,Ï!5CÏ!9yÏ!5³Ï!4éÏ!BÐ!aÐ!uÐ!‰Ð!�Ð!±Ð!?ÃÐ!8Ñ!#<Ñ!+`Ñ!VŒÑ!ãÑ!$Ò!2(Ò!3[Ò!�Ò!%¨Ò!1ÎÒ!Ó!+Ó!A<Ó!"~Ó!(¡Ó!,ÊÓ!)÷Ó!!Ô!(5Ô!&^Ô!(…Ô!®Ô!ÍÔ!EíÔ!3Õ!SÕ!4fÕ!9›Õ!/ÕÕ!Ö!%!Ö!5GÖ!}Ö!@’Ö!@ÓÖ!;×!MP×!*ž×!IÉ×!Ø!B0Ø!4sØ!S¨Ø!6üØ!=3Ù!2qÙ!;¤Ù!BàÙ!2#Ú!2VÚ!7‰Ú!)ÁÚ!+ëÚ!Û!p7Û!)¨Û!_ÒÛ!#2Ü!#VÜ!#zÜ!#žÜ!$ÂÜ!!çÜ!&	Ý!/0Ý!.`Ý!K�Ý!ÛÝ!môÝ!=bÞ!8 Þ!4ÙÞ!ß!(,ß!)Uß!3ß!6³ß!&êß!0à!Bà!8_à!;˜à!>Ôà!=á![Qá!#­á!HÑá!8â!$Sâ!&xâ!1Ÿâ!5Ñâ!0ã!<8ã!Juã!-Àã!;îã!=*ä!=hä!E¦ä!0ìä!Då!3bå!D–å!EÛå!(!æ!'Jæ!'ræ!6šæ!7Ñæ!P	ç!0Zç!B‹ç!\Îç!@+è!$lè!$‘è!)¶è!$àè!\é!Tbé!\·é!3ê!,Hê!uê!X“ê!Xìê!0Eë!Avë!G¸ë!Hì!=Iì!?‡ì!"Çì!4êì!5í!5Uí!R‹í!Þí!&þí!4%î!5Zî!8�î!%Éî!/ïî!Bï!Kbï!K®ï!?úï!(:ð!<cð!; ð!=Üð!Mñ!(hñ!6‘ñ!2Èñ!=ûñ!C9ò!7}ò!0µò!æò!Pó!NSó!-¢ó!.Ðó!,ÿó!,ô!?ô!>Rô!,‘ô!4¾ô!Dóô!a8õ!Ušõ!4ðõ!<%ö!lbö!AÏö!=÷!8O÷!^ˆ÷!)ç÷!-ø!I?ø!I‰ø!Óø! çø!.ù!<7ù!2tù!h§ù!vú!R‡ú!!Úú!(üú!-%û!KSû!QŸû!Tñû!bFü!^©ü!Aý!/Jý! zý!,›ý!<Èý!;þ!4Aþ!Cvþ!ºþ!$Ðþ!'õþ!ÿ!<7ÿ!=tÿ!B²ÿ!Cõÿ!?9"Iy"Ã"Ë"×"ë""""p2"H£"ì";"/@"Mp"4¾"Šó"ž~"6"ZT"l¯"0"8M"J†"TÑ"P&"w"‘"#ª"*Î"lù"2f"<™"+Ö"-",0"*]"ˆ" ¡"%Â"Kè"?4	"@t	"µ	"6Ç	"	þ	"#
! "8,
! "<e
! "B¢
! "å
! "["Y`"gº"@""c"!y"C›"Aß"R!
">t
"1³
"Lå
"]2"/�"zÀ"];"Y™"Fó"`:")›"OÅ"J"E`"d¦"1"W="•"Gµ"bý"x`"SÙ"N-"�|"?"5Z"4�" Å"Eæ",,"&Y")€":ª":å"# "3D",x":¥":à":"9V">�"=Ï">
"CL"4�">Å"4">9"Gx"SÀ"A"@V"@—"EØ"E";d"; "QÜ")."-X"7†"4¾"6ó"s*"Iž"9è""">B"n�"2ð"C# "Ag ".© "-Ø "*!"71!"Ti!"U¾!"9""6N""_…"",å""R#"�e#"6ó#"g*$"g’$"Gú$"ÅB%"Å&"HÎ&"1'"NI'"0˜'"2É'"*ü'"+'("@S("@”("&Õ("ü(")"()"VD)":›)"*Ö)"i*"uk*"Cá*"C%+"Hi+"0²+"<ã+"/ ,"~P,"Ï,"#ã,"'-"(/-"#X-":|-"'·-""ß-"'."*."1D."1v."¨."OÅ." /"6/"O/"j/"@y/"Yº/"“0"(¨0"]Ñ0"Z/1"rŠ1"xý1"Av2"5¸2"#î2"@3"7S3"?‹3".Ë3"*ú3"%4"(D4"0m4"3ž4"&Ò4";ù4"<55"r5"†5"  5"AÁ5"H6"L6"'l6"/”6",Ä6"Hñ6"3:7"Sn7"-Â7"6ð7"'8"G8"g8"^†8"bå8"=H9"T†9"MÛ9"_):"#‰:"­:"%Ã:"'é:";"K&;"Rr;"6Å;"@ü;"?=<"}<")�<"(Ç<"ð<"?="-A="+o="3›="+Ï="(û="0$>"!U>"(w>"D >"Få>"5,?"b?"5‚?"-¸?"?æ?".&@"'U@"l}@"pê@"u[A"zÑA"0LB"!}B"9ŸB";ÙB"%C"3;C"@oC"?°C"2ðC"K#D"KoD".»D".êD"XE"SrE"SÆE"RF"RmF"‘ÀF"RG"mÒG"P@H"4‘H"�ÆH")dI"0ŽI"\¿I"VJ"TsJ"]ÈJ"G&K"HnK",·K",äK"0L"%BL"9hL"N¢L"8ñL"G*M"9rM"8¬M"NåM"M4N"X‚N"fÛN"JBO"[�O"QéO"D;P"@€P"<ÁP"YþP"ÈXQ"�!R"5±R"1çR"˜S"=²S"DðS"N5T" „T"_¥T"TU"lZU"BÇU"&
! V"q1V"T£V"TøV"LMW"PšW"]ëW"hIX"T²X"oY"AwY"E¹Y"JÿY"\JZ"c§Z"R["v^["MÕ["R#\"Kv\"cÂ\"k&]"k’]"oþ]"en^"sÔ^"uH_"Y¾_"n`"e‡`"hí`"dVa"J»a"Pb"QWb"M©b"h÷b"g`c"_Èc"j(d"e“d"xùd"|re"]ïe"VMf"[¤f"dg"geg"SÍg"J!h"6lh"X£h"Küh"VHi"TŸi"Vôi"WKj"T£j"Wøj"PPk"K¡k"Oík"P=l">Žl">Íl"Um"Vbm"i¹m"h#n"hŒn"Lõn"äBo"N'p"cvp"\Úp"z7q"q²q"0$r"pUr">Ær"s"s"%s"ABs"„s"‘s". s"�Ïs"‰`t"Pêt"0;u"lu"yu"*ˆu"2³u"væu"}]v"sÛv"zOw"jÊw"q5x"F§x":îx"D)y"Eny"F´y"Nûy"3Jz"5~z"I´z"Nþz"2M{"€{"2‡{""º{"Ý{"Fì{"3|".C|",r|"3Ÿ|"3Ó|"+}""3}")V}"3€}"7´}"Pì}"V=~"Y”~"oî~"*^"+‰"1µ"Dç"V,€"Kƒ€"/Ï€":ÿ€"V:�"8‘�"+Ê�"ö�"3‚"6I‚"y€‚"5ú‚"<0ƒ"Cmƒ"<±ƒ"5îƒ"+$„":P„"A‹„"Í„"Râ„"$5…"rZ…" Í…"+î…"1†"=L†"@Š†"9Ë†"(‡"6.‡"Oe‡"Mµ‡".ˆ"02ˆ"8cˆ""œˆ",¿ˆ"Qìˆ"@>‰"A‰"7Á‰":ù‰""4Š"'WŠ"'Š"§Š"³Š"-ÐŠ"KþŠ"FJ‹"‘‹"%¨‹"#Î‹".ò‹"8!Œ"/ZŒ"3ŠŒ"3¾Œ",òŒ":�"Z�"r�"ˆ�"§�"uÁ�"7Ž"VŽ""qŽ"4”Ž"4ÉŽ""þŽ"!�"@�")_�"‰�"&§�"Î�"%ì�"�",�")J�"%t�"4š�"Ï�"å�"(‘"+‘"%<‘"b‘"Š{‘"h’",o’"2œ’"#Ï’"3ó’""'“"0J“"{“""’“"#µ“"Ù“"ø“"”"+”"B”"Y”"'w”"Ÿ”"r·”"?*•"Cj•";®•"Eê•"60–".g–"G––"TÞ–"-3—"9a—"#›—"@¿—"7˜"-8˜"f˜"Bu˜"7¸˜"‡ð˜"Xx™""Ñ™"sô™"6hš"9Ÿš"CÙš"J›""h›" ‹›"\¬›"?	œ"AIœ">‹œ"3Êœ"6þœ":5�"Xp�"/É�"+ù�"_%ž",…ž"²ž""Íž"<ðž"-Ÿ"ABŸ"V„Ÿ"SÛŸ"8/ "Eh "® "Ë "'ã "5¡"4A¡"Uv¡",Ì¡"0ù¡":*¢"Ye¢"?¿¢"=ÿ¢"(=£";f£"¢£"=¾£"Dü£"GA¤"<‰¤"=Æ¤".¥"W3¥"6‹¥"NÂ¥"H¦")Z¦"G„¦"_Ì¦"s,§"+ §"KÌ§" ¨" 9¨"%Z¨""€¨";£¨"=ß¨"M©"?k©"=«©"=é©"2'ª"3Zª"=Žª"Ìª"Cáª"$%«"J«"%d«"zŠ«"B¬"IH¬"'’¬"º¬"4Ì¬"­"C­"Y­"w­""Ž­".±­"à­"ý­"F®"a®"2®"²®"BÉ®"=¯"@J¯"O‹¯"#Û¯"/ÿ¯"</°"(l°"D•°"*Ú°"(±"!.±""P±"Ls±"!À±"â±"ù±"N²"@c²";¤²"Qà²"&2³"Y³"x³"–³"¬³"Â³".Ø³" ´"3(´"S\´"°´"-Î´"<ü´"59µ"?oµ"*¯µ"-Úµ"@¶"!I¶">k¶"Nª¶",ù¶"/&·"TV·"7«·"5ã·"&¸"@¸",`¸",�¸"Rº¸"u
¹"/ƒ¹"4³¹"/è¹"-º"'Fº"Pnº"Q¿º"»"?-»"7m»"+¥»"qÑ»"AC¼"F…¼"FÌ¼"J½">^½";�½"7Ù½"V¾"h¾"7ˆ¾".À¾"*ï¾"/¿"J¿"`e¿"Æ¿"CØ¿"-À",JÀ"/wÀ"§À"UÁÀ"$Á"N<Á"B‹Á"_ÎÁ"(.Â"HWÂ"1 Â"GÒÂ"GÃ"HbÃ"@«Ã"ŠìÃ"NwÄ"8ÆÄ"GÿÄ"9GÅ"Z�Å")ÜÅ",Æ"13Æ""eÆ"*ˆÆ"1³Æ""åÆ"&Ç"%/Ç"0UÇ"0†Ç"!·Ç"ÙÇ"ïÇ"	È"=
È"&KÈ"rÈ"�È",¨È"6ÕÈ"0É"!=É""_É"'‚É"0ªÉ"GÛÉ"C#Ê">gÊ"B¦Ê":éÊ"<$Ë"2aË"+”Ë"HÀË"4	Ì"<>Ì"6{Ì"M²Ì"#Í"$$Í"uIÍ"+¿Í"ëÍ"6Î"&BÎ""iÎ"ŒÎ"7§Î"6ßÎ"+Ï".BÏ"1qÏ"£Ï"½Ï"0ÜÏ"4
Ð";BÐ";~Ð"8ºÐ"óÐ"
! Ñ"E!Ñ"gÑ"çÑ"VgÒ",¾Ò""ëÒ")Ó"|8Ó"SµÓ"2	Ô"1<Ô"unÔ"PäÔ"B5Õ"AxÕ"5ºÕ"+ðÕ".Ö"^KÖ"5ªÖ"TàÖ"n5×"5¤×"Ú×"#ì×"'Ø"18Ø" jØ"5‹Ø"ÁØ"0ÝØ""Ù"S1Ù"…Ù"b¥Ù"VÚ"_Ú"~Ú" ˜Ú" ¹Ú"IÚÚ"a$Û"+†Û"9²Û"?ìÛ"5,Ü"HbÜ"=«Ü"QéÜ"D;Ý";€Ý",¼Ý"déÝ"/NÞ"<~Þ"!»Þ"XÝÞ"
! 6ß":Aß"=|ß",ºß"*çß"$à"„7à"U¼à"\á"Aoá"*±á"#Üá"9â"1:â"Rlâ"E¿â"9ã"A?ã"b�ã"#äã"bä"9kä"X¥ä"ˆþä"D‡å"<Ìå"(	æ"(2æ" [æ"V|æ"UÓæ"A)ç"Ekç"+±ç"?Ýç"/è"9Mè"A‡è"(Éè".òè"K!é"mé"!ˆé"1ªé"*Üé"+ê"23ê"2fê"™ê"=¹ê"*÷ê"0"ë"/Së"4ƒë"*¸ë"*ãë">ì"FMì"/”ì":Äì"=ÿì",=í"5jí"5 í"Öí"(õí"(î"4Gî"!|î"#žî""Âî"åî"ï""ï"7ï"!Wï".yï"¨ï":Æï"?ð"5Að"9wð"9±ð"/ëð"9ñ"DUñ"3šñ"<Îñ"<ò"HHò"Q‘ò"Lãò"0ó"%=ó"'có"3‹ó"@¿ó"&ô"@'ô""hô"5‹ô"Áô")Öô"Kõ";Lõ"Kˆõ"5Ôõ";
! ö"<Fö"-ƒö"*±ö""Üö"3ÿö"!3÷"@U÷"9–÷"-Ð÷"/þ÷"7.ø"fø"5€ø"1¶ø"?èø".(ù"-Wù"9…ù"6¿ù"*öù"+!ú"&Mú"8tú"­ú"Éú"-åú"Jû"2^û"g‘û"Pùû"Jü"^ü"qtü"^æü"0Eý"vý"!�ý"¯ý"(Íý"Yöý"Pþ"oþ".�þ"/¾þ"îþ"H
ÿ"*Vÿ"+�ÿ"+­ÿ"+Ùÿ"+#1#MQ#PŸ#Hð#=9#6w#®#0Ç# ø#-#+G#0s#Q¤#-ö#&$#DK#B�#DÓ#B#A[#C�#Rá#Q4#S†#0Ú#?#DK#H�#GÙ#I!#Wk#YÃ#?#1]##�#B³#Rö#RI	#bœ	#-ÿ	#Ÿ-
! #FÍ
! #.#`C#B¤#2ç#1#5L#(‚#-«#(Ù#J
#AM
##�
#?³
#.ó
#U"#&x#;Ÿ#<Û##;.#1j#1œ#Î#Nê#V9#S�#Fä#6+#0b#A“#.Õ#C#H#&f#*�#¸#oØ#pH#8¹#3ò#”&#P»#9#^F#:¥#Dà#%#:A#%|#3¢#2Ö#+	#15#"g#Š#^ # ÿ#( #$I#Bn#1±#1ã#.#2D#Aw#\¹#)#-@#2n#?¡#?á#A!#Bc#:¦#dá#.F#7u#3­#6á#6#BO#_’#=ò#B0#s#$ˆ#7­#3å#7#;Q#8�#Æ#+ã#+ #*; #.f #4• #&Ê #3ñ #&%!#L!##l!#N�!#Fß!#+&"#&R"#.y"#*¨"#%Ó"#8ù"#<2##\o##4Ì##$#$#;$#3U$#‰$#6£$#$Ú$#8ÿ$#48%#km%#-Ù%#Q&#4Y&#3Ž&#Â&#â&##ü&#A '#[b'#¾'#AË'#E
(#IS(#a�(#Kÿ(#XK)#^¤)#D*#GH*#4�*#DÅ*#=
! +#dH+#T­+#s,#Bv,#"¹,#0Ü,#7
-#E-#4b-#8—-#(Ð-#6ù-#‹0.#E¼.#D/#LG/#J”/#aß/#bA0#1¤0#0Ö0#01#081#0i1#&š1#0Á1#%ò1#52#5N2#M„2#5Ò2#43#5=3#4s3#4¨3#_Ý3#_=4#0�4#Î4#"ì4#‡5#F—5#$Þ5#)6#$-6#%R6#(x6#-¡6#*Ï6#!ú6#7#707#@h7#4©7#'Þ7#<8#(C8#Il8#+¶8#Jâ8#?-9#4m9#F¢9#*é9#!:#(6:#S_:#6³:#/ê:#*;#)E;#5o;#v¥;#$<#JA<#?Œ<#?Ì<#%=#:2=#)m=#*—=#5Â=#@ø=#9>#=F>#-„>#.²>#[á>#:=?#+x?#S¤?#"ø?#-@#;I@#E…@#FË@#8A#'KA#*sA#0žA##ÏA#óA#B#!'B#GIB#6‘B#3ÈB#*üB#I'C#qC#/‹C##»C#ßC#.üC#x+D#Ù¤D#~E#%—E#†½E#=DF#N‚F#:ÑF#6G#=CG#4�G#1¶G#0èG#AH#;[H#/—H#<ÇH#DI#UII#ŸI#=¶I#(ôI#3J#7QJ#6‰J#ÀJ#(ÔJ#DýJ#BK#,[K#tˆK#SýK#QQL#R£L#=öL#D4M#lyM#HæM#\/N#HŒN# ÕN#.öN#6%O#1\O#2ŽO#KÁO#H
P#SVP#@ªP#7ëP#‘#Q#‘µQ#SGR#›R#¸R#ÖR#óR#S#/S#KS#iS#†S#¤S#ÁS#ßS#þS#T#:T#ZT#wT#“T#ªT#ÊT#èT#U#&U#BU#^U#C}U#›ÁU#T]V#Ã²V#¶vW#^-X#[ŒX#YèX#MBY#$�Y#$µY# ÚY#7ûY#a3Z#4•Z#(ÊZ#$óZ#I[#Kb[#K®[#Kú[#BF\#A‰\#;Ë\#.]#K6]#M‚]#:Ð]##^#a/^#d‘^#`ö^#cW_#V»_#E`#EX`#dž`#Aa#sEa#t¹a#k.b#gšb#Sc#PVc#b§c#W
! d#Bbd#N¥d#+ôd#) e#[Je#.¦e#,Õe#/f#/2f#pbf#BÓf#Eg#N\g#6«g#8âg#2h#2Nh#2�h#K´h#Mi#'Ni#)vi#1 i#1Òi#1j#26j#1ij#1›j#1Íj#1ÿj#*1k#'\k#/„k#&´k#[Ûk#U7l#_�l#Qíl#K?m#m‹m#†ùm#O€n#CÐn#po#4…o#pºo#&+p#XRp#'«p#iÓp#i=q#i§q#(r#2:r#2mr#2 r#MÓr#O!s#jqs#,Üs#0	t#':t#+bt#TŽt#jãt#`Nu#C¯u#.óu#6"v#;Yv#@•v#dÖv#M;w#<‰w#`Æw#‚'x#+ªx#@Öx#Ey#D]y#b¢y#9z#X?z#ˆ˜z#&!{#DH{#:�{#DÈ{#B
|#KP|#Gœ|#Aä|#&&}#KM}#H™}#%â}#7~#5@~#>v~#2µ~#=è~#i&#�# ¢#:Ã#þ#?€#5S€#1‰€#1»€##í€#©�#"»�#+Þ�#0
! ‚#);‚#.e‚#I”‚#IÞ‚#$(ƒ#TMƒ#2¢ƒ#;Õƒ#M„#R_„# ²„#3Ó„#A…#0I…#pz…#Pë…#"<†#V_†##¶†#1Ú†##‡#+0‡#-\‡#=Š‡#)È‡#!ò‡#%ˆ#&:ˆ#%aˆ#?‡ˆ#JÇˆ#-‰#%@‰#8f‰#!Ÿ‰#RÁ‰#?Š#(TŠ#"}Š#  Š#'ÁŠ#éŠ#&	‹#20‹#@c‹#¤‹#-½‹#*ë‹#Œ#F2Œ#MyŒ#!ÇŒ#(éŒ#�#-�#K�#-a�# ��#°�# Ã�#ä�#5Ž#;9Ž#*uŽ#1 Ž#*ÒŽ#@ýŽ#(>�# g�#%ˆ�#$®�#>Ó�#�#,/�#$\�#=��#¿�#9Ù�#E‘#;Y‘#L•‘#%â‘# ’#)’#-A’#%o’#•’#:±’#1ì’#2“#7Q“# ‰“#$ª“#/Ï“#'ÿ“#('”#_P”#F°”#4÷”#V,•#_ƒ•#Dã•#@(–#-i–#F—–#!Þ–#d—#Be—#=¨—#4æ—#@˜#8\˜#V•˜#=ì˜#<*™#Rg™#Wº™#Sš#?fš#1¦š#QØš#X*›#Qƒ›#eÕ›#-;œ#'iœ#L‘œ#HÞœ#U'�#F}�#CÄ�#@ž#=Iž#8‡ž#OÀž#4Ÿ#EŸ#IbŸ#A¬Ÿ#HîŸ#/7 #g #D� #AÆ #@¡#XI¡#*¢¡#YÍ¡#@'¢#Mh¢#V¶¢#9
£#šG£#kâ£#‚N¤#£Ñ¤#ku¥#uá¥#_W¦#U·¦#O
§#_]§#C½§#j¨#0l¨#(�¨#!Æ¨#.è¨#.©#EF©#1Œ©#0¾©#3ï©#'#ª#BKª#qŽª#}«#"~«#N¡«#&ð«#'¬#6?¬#v¬#C‹¬#KÏ¬#„­#" ­#0Ã­#Jô­#K?®#*‹®#¶®#0Ð®#.¯#-0¯#-^¯#3Œ¯#)À¯#*ê¯#2°#9H°#.‚°#*±°#Ü°#ó°#±#@±#Z±#s±#0�±#7Á±#ù±#%²#$<²#$a²#%†²#%¬²#UÒ²#/(³#?X³#;˜³#;Ô³#7´#*H´#7s´#«´#VÅ´#2µ#1Oµ#9�µ#>»µ#2úµ#=-¶#Ik¶#5µ¶#4ë¶#: ·#~[·#&Ú·#+¸#3-¸#3a¸#A•¸#B×¸#C¹#F^¹#C¥¹#Eé¹#6/º#7fº#;žº#!Úº#.üº#/+»#3[»#M�»#&Ý»#I¼#)N¼#&x¼#OŸ¼#9ï¼#1)½#9[½##•½#G¹½#N¾#BP¾#4“¾#È¾#,ä¾#2¿#WD¿#@œ¿#@Ý¿#:À#AYÀ#D›À#FàÀ#>'Á#=fÁ#C¤Á#CèÁ#7,Â#3dÂ#?˜Â#1ØÂ#=
! Ã#:HÃ#3ƒÃ#6·Ã#;îÃ#I*Ä##tÄ#G˜Ä#)àÄ#:
! Å#8EÅ#~Å#$�Å#AÂÅ#MÆ#?RÆ#^’Æ#>ñÆ#M0Ç#0~Ç#;¯Ç#RëÇ#6>È#'uÈ#0�È#4ÎÈ#8É#!<É#D^É#?£É#AãÉ#Y%Ê#GÊ#DÇÊ#0Ë#<=Ë#-zË#*¨Ë#%ÓË#5ùË#$/Ì#TÌ#sÌ#p“Ì#)Í#A.Í#:pÍ#I«Í#\õÍ#BRÎ#8•Î#,ÎÎ#ûÎ#Ï#4Ï#PÏ#%gÏ#Y�Ï#OçÏ#Z7Ð#Z’Ð#íÐ#;Ñ#?Ñ#(UÑ#!~Ñ#4 Ñ#$ÕÑ#AúÑ#B<Ò#)Ò#g©Ò#(Ó#:Ó#$UÓ#zÓ#ŽÓ#£Ó#8¼Ó#0õÓ#&Ô#$EÔ#jÔ#'ƒÔ#<«Ô#èÔ#AÕ#"CÕ#fÕ#}Õ#"˜Õ#8»Õ#2ôÕ#0'Ö#[XÖ#A´Ö#?öÖ#j6×#-¡×#XÏ×#<(Ø#geØ#GÍØ#6Ù#7LÙ#+„Ù#°Ù#ÏÙ#"èÙ#)Ú#25Ú#.hÚ#4—Ú#6ÌÚ#6Û##:Û#,^Û#‹Û#5¨Û#AÞÛ#- Ü#NÜ#nÜ#!ˆÜ#+ªÜ#'ÖÜ#@þÜ#>?Ý#l~Ý#1ëÝ#Þ#78Þ#4pÞ#2¥Þ#BØÞ#,ß#%Hß#nß#Žß#§ß#"Àß#4ãß#(à#=Aà#7à#+·à#-ãà#3á#/Eá#"uá#˜á#³á#Ñá#âá#8üá#/5â#;eâ#*¡â#+Ìâ#,øâ#/%ã#Uã#oã#.ˆã#·ã#Ïã# ìã#
ä#8$ä#?]ä#�ä#&¸ä#.ßä#,å#6;å# rå#%“å#¹å#5×å#3
æ#2Aæ#$tæ#e™æ#ÿæ#.ç#-Jç#,xç#,¥ç# Òç#)óç#$è#Bè#"]è#'€è#¨è#%Åè#"ëè#é##*é#6Né#>…é#%Äé#Uêé#;@ê#|ê#.Žê#)½ê#)çê#$ë#'6ë#^ë#9~ë#¸ë#)Ñë#_ûë#a[ì#`½ì#$í##Cí#$gí#1Œí#H¾í#*î#B2î#&uî#œî#&·î#+Þî#j
! ï#?uï#Dµï#>úï#69ð#2pð#X£ð#Xüð#5Uñ#)‹ñ#4µñ# êñ#4ò#=@ò#9~ò#S¸ò#Có#RPó#H£ó#Cìó#=0ô#@nô#N¯ô#_þô#N^õ#<­õ#;êõ#&ö#27ö#4jö#Ÿö##µö#?Ùö#O÷#Bi÷#)¬÷#Ö÷#¢ó÷#¼–ø#¤Sù#øù#>ú#4Jú#4ú#;´ú#Mðú#1>û#Bpû#B³û#$öû#'ü#=Cü#1�ü#I³ü#5ýü#'3ý#i[ý#:Åý# þ#!þ#Aþ#\þ#%tþ#7šþ#&Òþ#-ùþ#.'ÿ#Vÿ#vÿ#;•ÿ#Ñÿ#:îÿ#")$%L$%r$)˜$Â$!á$=$A$*Y$-„$Y²$J$AW$J™$Aä$Q&$Hx$RÁ$
$C"$Lf$³$8Ó$%$&2$.Y$9ˆ$.Â$'ñ$)$#C$&g$\Ž$&ë$%$&8$H_$A¨$<ê$'$0D$+u$>¡$Oà$/0	$`	$(€	$1©	$'Û	$
! $
! $/:
! $j
! $�
! $+™
! $Å
! $Ü
! $1ø
! $$*$"O$!r$v”$J$&V$ }$^ž$Cý$FA
$6ˆ
$g¿
$_'$U‡$ŒÝ$.j$T™$;î$T*$[$@Û$"$?$]$"{$$ž$$Ã$$è$(
$Q6$<ˆ$OÅ$<$AR$p”$$2$rR$bÅ$k($j”$+ÿ$9+$Ae$=§$Då$H*$Ps$Ä$.×$$$v8$3¯$=ã$a!$Eƒ$NÉ$E$:^$G™$~á$~`$0ß$C$&T$*{$3¦$AÚ$1$VN$B¥$6è$5$<U$’$0°$oá$:Q$BŒ$5Ï$„ $^Š $Ié $%3!$AY!$@›!$.Ü!$,"$#8"$\"$|"$4›"$'Ð"$0ø"$6)#$4`#$P•#$8æ#$S$$:s$$®$$6Æ$$qý$$8o%$I¨%$8ò%$I+&$u&$<ˆ&$(Å&$Gî&$;6'$}r'$…ð'$,v($K£($ï($‡)$�“)$…$*$rª*$†+$�¤+${5,$w±,$w)-$#¡-$pÅ-$6.$:V.$ ‘.$-².$:à.$1/$EM/$(“/$c¼/$Q 0$Jr0$<½0$/ú0$A*1$/l1$œ1$-¸1$,æ1$,2$>@2$,2$>¬2$4ë2$F 3$4g3$Fœ3$$ã3$64$9?4$/y4$©4$0È4$/ù4$)5$^B5$0¡5$8Ò5$6$6$876$Tp6$%Å6$*ë6$27$)I7$2s7$¦7$<¯7$*ì7$'8$7?8$Ew8$S½8$#9$`59$G–9$KÞ9$<*:$g:$;…:$Á:$&A;$*h;$`“;$Vô;$`K<$b¬<$W=$•g=$Fý=$:D>$Q>$[Ñ>$l-?$mš?$r@$R{@$rÎ@$‡AA$_ÉA$8)B$0bB$)“B$&½B$HäB$A-C$moC$.ÝC$*D$K7D$ƒD$5ŸD$,ÕD$0E$!3E$MUE$O£E$RóE$?FF$-†F$r´F$$'G$+LG$`xG$[ÙG$K5H$S�H$UÕH$E+I$*qI$+œI$?ÈI$‚J$@‹J$MÌJ$K$64K$$kK$�K$F°K$A÷K$n9L$,¨L$/ÕL$4M$,:M$XgM$)ÀM$,êM$AN$7YN$3‘N$9ÅN$AÿN$AO$]O$6yO$:°O$8ëO$?$P$*dP$(�P$H¸P$SQ$=UQ$8“Q$GÌQ$<R$<QR$GŽR$PÖR$:'S$CbS$H¦S$@ïS$0T$ET$'\T$.„T$+³T$dßT$,DU$=qU$N¯U$#þU$!"V$ADV$3†V$%ºV$0àV$3W$AEW$*‡W$@²W$>óW$/2X$bX$$xX$8�X$?ÖX$;Y$0RY$:ƒY$,¾Y$SëY$(?Z$,hZ$•Z$ªZ$ÀZ$BÍZ$[$	$[$@.[$o[$2…[$M¸[$)\$[0\$3Œ\$5À\$"ö\$N]$&h]$(�]$R¸]$^$'&^$*N^$4y^$®^$‹²^$>_$pX_$ÈÉ_$j’`$&ý`$%$a$#Ja$ena$fÔa$p;b$l¬b$Žc$¨c$vÁc$>8d$Twd$,Ìd$Wùd$Qe$oe$)Œe$,¶e$9ãe$;f$MYf$I§f$%ñf$+g$&Cg$?jg$'ªg$%Òg$9øg$<2h$3oh$6£h$:Úh$>i$FTi$;›i$7×i$>j$?Nj$8Žj$7Çj$=ÿj$C=k$%�k$A§k$7ék$O!l$9ql$D«l$:ðl$4+m$;`m$œm$»m$"Ûm$*þm$')n$+Qn$+}n$5©n$)ßn$(	o$"2o$-Uo$)ƒo$p­o$op$oŽp$rþp$hqq$ŸÚq$9zr$@´r$cõr$fYs$2Às$ós$t$*t$+Jt$.vt$$¥t$Êt$Ýt$ût$u$&1u$Xu$su$6Žu$BÅu$v$v$ÓÈä]B
=Š=
! Ø*A:ÖÀ-£'´BË°á,X9b1ä0¤)-):!yÅ)¶–0Ê+ø"'l.GÃÅG<®$ÆÔ4â~í%:&¹ (”S7ù#÷ëô4!¤
! 7a4ŒS*J-­(wÅ	@â'¬?÷-RS=Ý#ž.N
0x?Ø+Á+g¹?¼	q>ò()‘:å/,‰A97@áÇ}6¸/=L*»	"xAi*Ï<¬-0B=¾?îAö	É $4*<q^<þ2šuœ‹›KAÿ!—@œòL%à3B@È6{*7=B“Ä?Ñw@!&Ù)ÉÜ&¾v1!?J1’ å.%r!F$ð@Ú;õ"«ò>I‚F>Ú"3ZpL3šm1I9ó9"9hî'¿ÍÓ0Y8Š%6O:P‘+fPB;0ƒ9à1S"„;Ù#Í¼ú(ê6Ãí+]ˆµ9Ÿ4Q<8§#¶%m</z.3Ú8|�ß5QµÙuB…`6ƒ0Ñ>¬.g8ü$ !¬!²Š>|Š
!  T3Ç"ÒˆG›,­B.÷)|‚?9¢´BÉÈ*Oá6U	J‹¢/‡‚-àŒ12N¯´4«#1H8×æ	"',fAÑ1�,>
&
ï8k+¡)LA°Ø.\<=™> "u?t
=­>6Åê+î!;4ó�Š=ª[L8ó<¥?~ž<ca9‹(|Ãï©R8]AÏt@4y ,
! ¨<5+¶‰+Ey?=á;”AŽ&ž6W@~÷
}<',#a]¿;‡Ê8Š-ä8K<Ÿ
0#‹¬)1Že?:0-!+G[$f9µ\.U$2‚Ô>'w
! d(;>Sb@B,Þ Î
¼(#•3œ�(j$�.…-.;©@R¹òBÿ+û")l2^7ãÂ(5©0/	®«*têßL3°ÌÇY"±1€Ã,ì%;J;ï,|3«,[0€#.M
"/6(BD3ô

! <QÀ‚&’?Œ=¯ç(ô;'65'¸
! ¤Rµ3?*W=Õ9[
! 9Ÿ “¼@b;E	=4ŠKB$I¢%ÿ7Ž‹	Ñ2\ã–Bþ ò¦‚ß	h#™#X¸?M `y/V+€	#Ä1/á~j!3ê	A?+
! ¾û+5èƒ		A°ÞA¼7#ABs*6–$é0~/»ˆ)<<@Tcs*›=~1°9­(�3|7yAžÒ%W6À<¬"j�ùh� c?�@ô;/Ê‘éAòÖÏÃ3º+a6$•	Cý!A%….+ŠW5j2š§ûl>13œâ?‡:Ù2Ÿ/€3:ûA6ä?’2À­9—1³:»0>$ÅDÒ?à8î7—-H"�9Ü+$7u·øAíä1÷>ÌýÓÞ Øˆ'õ;3²#à.{
! ‚'U./%Á,:Ó4P6É<Ä/ O	)#q€�Aé#'0Œ<+ß’.ŸUswm7”3²	Á.Zû(é ma/n6µ=+4Ó¿%ƒ
! ¤?:•Ð0=
•.9a6¦i@Å&BØéÇ9T"Í ©³ƒ�;~:	ù7Ÿ@k.¿A O b'ð0c
! ";�Õ5(%
Á:Ôo)ý2Lö/µ-·é!C/i$Î¼.Uã-Ø€Q#ü+äòh%ñû< ?0ò:Ð›.×{$‚>ô"áÝZ2•ó'.=ì¥�%nBó.R0bÞ5“+	 ;B%:8ª"ê1Å*õ88e0è6«-û3«2J)ì7Áž85©+á/*{=˜A[/±v	í,êýkjñ#Ù)<ô=°,D@@º.,*?+$rØ!x$Ù0Œ$Ç½
}>ì:’>- w+ã3Z[@Ï*¡£[ÁÜ$Â%Ë0Ù—6©8�2Ù2­;d;,ì3]-É(´ N=:	Fv$=Ê1<_*	Ý7&6÷23®i2¾5¢B\:­)¯-Æ*‰µØ¹/]6ÿ@C#ý“?û¹&<y+9|
! ?4%$ðOOByš)$ú.-Z7€‘8÷8ûç:Z‚Ã5Ã.Ð´&˜	B€QBkF,ƒ?Ó%Æ&ý8"„@Ó9È	Ä2O'Ë(N:ê.ö&s Øq?hGí>ºo$5¡;"<ÞSR%œŒ† @,†4&2lB9W #ŸZÈ.ï"Â>#"»9Â4(ñ@‚Br’58%!1ã87	í#t%ÁŠ‹.6à
! Ær-(†+á=½-
! B/¿8%è õŠJ7Ì'?††Ûš\u%Î/]=e#N#ñ4e1 …6÷2S§<ö(ƒ6/«»+:¹;K6 ã3‡AÏ,5D?&ž9¬j6Ù7¸Â0ÿ"Ê5J.¥ÏÂ?·><		"4À;(>B<S9,í&›'b<Ð;V=2@x- !Ua-Àdš<4Bü¥(nH3¢ =¬	Ñ$ž2…;G)•Ö?µÚ=E.³g~S4B­'2Œ.Û(U<Ñ™,¦0T5š"O¯ï0{.	ï¿10v."25Œ;?Þ'�0ñy#¶)¸–)À
! /2ø9Ì9&5BÕ]Ú3@5
! s)û7 !}ì/ó¡{*8R<>3¾0q),—³DIT ‘hAR&ˆ9þ"õ#,†AÂ)…Ô	¾j&è.Ã(%Ë�	u-,nF(}c'
! U;©1åyÄ0­
¾ýŸ:q(è+x2¬€1d"õ)†?ÅÙ8-4«,!@Ô×/U |%2Â*4-ºt7�"J2l³‘?,>–=×A…	¾
;Æ ô2Ò!�ª*~?½à9ó=`:$&£4;*%-&›vAJ!…5+´®=Ðù%9°-”	Z#:!‘&ŸY?l¢_6üØ
! œÝ<€=18=6w%5ô"7
! Z 1 BÂ;
,õp%-Î½%'Íð·=A-+ë8\!o† l)$Ö2£&Â�52->ÊpA	–K>Ï%¡%(µ8ð+!,	';zv{%ÔA~Ç@n¶8�:
! ‡%}9Ë�?64£Aú;y7A
! VAÐ�-¡Ç4R;èÈ4Äš,V)9Ö@dL9Ó
Aþ1eAT+B'}@Æ.ki(Ÿ1Ó
! ¡Ù/ 
ö¼%®#ï6Ñ
! fâØ!ÔÝ;û+=‡è0•63 wùÕ3Tÿ>¨?*§
¿=C9J¿	P;)u@y@Ý+Î2b#J›â=¹ë‰&Â> U�>
! Ü%Aƒº$r)y"Õ¬QPÐ?<#2�4£(o?Ÿ3�2m2î(Ü<|" ¯(=;%q5¿ò*�/ˆÏ$?»ù+$™˜¯+«4t"¼>å?™Ì.©=C!è4Û=˜  0
*d<ê ˆ˜§4¯
! 7ê�BRAÑ�V 7�*F2ž	92Q2˜X.Ì6É7ZÁ8¬Š	i1p$í¦
! ìn¯0%
v#¸E'ð
)@{,Œ7 T>É¨¼ú:Ë.ÔË‹PJ	l(¼,PÁ6*ƒ8ù[X30Ù')bøÓµ�ýA‰
Á4"i+35GA?è-~¡6k7¶„Ã'â*;yB1'›;|0=-š å(�P¡:×_>ÃÝ#@@‰Ïü
†:ž!'Í†@cu(Ú$kô5€=ŠYx·€½&tä<’(#^Ä=	¸6¶A~÷¡ÿ·,–B5$Lp+\G@—* Á$x)‚+Ž(eÏù'ï7Ï	¥®>“äl-1O
¶æ	'ƒBººòÛ"4A[7Œ(3­A“"m=ÿ*<Ú‘
ž@&q=ƒ
Ñ2N&%Þø-ÿ8ÐÜ/~¦.R›·%©É	Y0Ë.Y/ë6À5u~@üá!9BFšB™
! ‚U0|9¤2Å/ˆÑw(2Ê	ª/?éþ!4‘]‹@ù
FA?é+™®&c(³AÀ6%Vp2?:·?Ø27s&s1Ë@�*4Ë<L+BcAc wm”"ò14m+²7¿,Bç.Z‚/1J$%™
àA~-õ‘0‚ø	5þ-}=Û
]Â¡»a!
]="M	“+É%%5ÜA¡S:€/'¡;>(E‹5w.Ë%R,L2ç&gSÂ-&#lÏ(üúœ
…j5™™2¨ 	'³ëÔ)‚ØD¥@ï’BÃ¤,lí5µ1Ú&í!K9'!¿A×>F
e¢”>T1ê4xÞ1a<QK7‰
! ÷aE>Ð:Èª%ø;q*+/#ÿ&2–”Á'½5ò‰¹'{#J B4r+M-™‰'¸ã¿$ÿÄ 5Ý:­!“%¿5^3<A6à\Š'b9X,5É6¿š.Æ:-,Y,œ54
ü%f7'¡
C[Á,+)¦4@Nþ˜Ë;B‹*%–%Ö4è& [ W;Ñ:E!!
Ÿ<Œ5^@1)ó%‰/ŽDü(¡@|-%ï©4t$yº)Vùõ:@¾#ä>^
	¨6.ŠE;ç¹.8;£ËZB‹³cÙ9ŒAn=4#ª&'ý6¶!&BçAê&0Æ˜˜(J@L'ÝÅOB? 8ù
!  ¥+¯Ö B÷&p&·6u,d?Jp>€/á/h*ú3º4F1â3=A!2f>Ç ó"@8ká'\Bt	|ì‰-A“(H&`%çõ=# 6"]	=3[<BÖy5;O-–/Þr"A,8Õ*À'.œ"Âj@â-…
Œ0Ž@33	D‰�@04ë†õ
	&�Bö+BT;Ã#>/‡(5Š,€B
ËÈ… ˜(*=ó¿>!Æ	tw$Ì3Ï'ÄL R$ÉA@‚è94.Ê·Ö58ö¯¨8#¸íF=;&E
! ù1z`=´$½¨ïí;1pB†$+d4f>ÖO97+÷3^"
ó:l}ý8Ž%H;;!"¿3I
°)“ñ&r"
‘³Ï�'*Ç 'Ém.¸&ð?øë9äx:M'T9E6>99°.%‰Wù:d¸486®.>=4	<uj=|ÖAÑ&Ó)`(üô'W%_8r?ú;­ Zc<†!ƒ2ì)¦,Ó2÷_#0N �
‚$A®	%
! A	-Bè
! 
! ).ê>€“(9)gBË#/7�8Zt
! Á?6<.5Ÿ=ö9·
! 7À’#z&Õ1æ@T³í$+„ V9O@ˆ-Ö‘51,‹=Í”î+
âóLS@iBk"Gh>�<Ö(í„*„?~5GB8ø •&ø½!Ç“&Ú?Ü#jû™“6Ž	ÙW,Ž5³(ç
˜4)‰7;-iy4Òk0
%i=%³€<ÕÓŽ
(=[BÅéš;%?`wšž0µf\A(�Ä"€ù)˜Ù;5ï@^ò7ž1•J:»µ#x0É9b8/'	.B*â#|0&½-u�'ÿ\£%Þ)p,«@#ç1F:ä_4
! ·êé"\#I:g9jÞ3­=Þ&5õ"ä‚MÐ(e4H=n›	W)[2)4G,Üë0|<Ü	'=Ý ‚�;« È×7W3[?é3Ê‰Ú>¿(36È}¾&m×¦¢Ò$À#W+9=N&"%³U6(%Ï9¤>óxn&ÇË1Ñ†qN8Ä#Ý
! oÿ(mä,†2*2Ù453Þz'ô»Á@‚2áè'@Í"%á6Á=î5M ô#Y$Õô&²² Ë6½\+M$}4| Á(t!-hC	.fÕ;W*37.7ú±3è$É,p¤4�>,06&B
! 
! 'M=04291·+å!Å9U':3L&³
! ñ$Ö�×;£l/�AH
§S²t3*)�å™5r8Å.áA&Á;K"»6 (1è:4Žñ(SÏ0¢#@)
h8$�É=ª ö3W#ßX
! [
! ™.(% @<%0.ÄE<·6¿0— §·:b8PA¤*½?$±&î-9Ç3/™b7®ë«/P'¸)Ñ%�;†
š=#%tÈ&å#‡*;	a;Â".%Œ:�%z,¦%ßŒ2º6<ŸA­8´Ò3!“ õ1b/)3ˆ6+¶7ê5»(Ó,ï�6!%ÝÓ=Ï
! :[ªÙÁ)‡8-Â1z8ø@º(5?£39@s7„7�­Ù¿26a.'òü02*H/1e';7:5¬Ö=ð5ª<½8ì1§M#‡B¯ƒV10Ø/2/x*‹8þÄ-¯){×?«?ß;
! gA…$¢4'Æ6ÓAÝ>­<ä5\
! >Aj#…0¥#£B!Å
¦u=ž7E+“;	œ�$pë%ÿU1?"w&¼-_yÀ$½‡3_ò;"6*|íAŸ>h”1ZI#&8ü:#<›?—)PB07,Ô*I"!D>E$Ÿ&§9:y÷+¦Y;+J8Y1Í6éí<4Õ :L=´0Œ	jBÀÊ.Nêƒ#}ê]·!+b6*?&{•²-'oxÇ+%K2�ª…BÊ*S$%ð4X-%AS»N04;>s(�·@�<à(¦œÔ1•ÝA;2e+a1=Ú:]"ÎH;^y2Å�"Ã&g8�$Ž.i	K'\Ÿ%Ì5v-Íý)r-P%	È2ú1ãª?€)ý4ˆ1­'ý	È<¯Ô7Ê23¹ ä&ž)ð3L?Z�9Ê€0«
! 	xåë4ú)$É:Å#ì;Ü1ÿî>’=¹<×1å;\@9®(j"0*,~$PÑ0@3.Í5s#ône,l™ÎŽ¥]¨)˜8æ0!z(7÷Å@W';¼rÌ4„÷6v,þ:¬:'"	ù$ó+hù;¨7+(r$A!F+x3Â­3@?Í;v,,%W6,–:Z.ë'i©ü>w=Ê!ƒ»".A¿,¢?’ù#/ð«Uî�6·d0…+¶-…A6AÊ"34u4„8Ì÷$"®(ñèO#úS+"±Ø=æão·•?þÐ*n
! ãõ/Ã_"šó¢IZ:Û5š8”;â1¹%/D4 •;º?§&Œ
! Y(409V¿X,I4k1•¥&þ+4­@	/„
! ˜&–fg†/ç@‚ñ"£
! n-w³•þ'S�
! ™)2¶É`.šu#×›ç4á0C6ßA*+ÛzHi>+¦9g˜BK5O£-¯<“'ô.ž?
ƒóý<¿Aè,£0‹¹3»3…%c3,1»)
! !=V	ÐÌàeznAåè;ª <¤	
! RB“=1
! d	¹:[(úiÆwÁµ"¹}Â.,X¬%8
õ<IA�?Ï×3V4C&$!Y^+ŽÃégª#^:GÎ"‚5f1þ,5×ˆ"¢ûí7i6ÑÿR8¹'&{V3,`&
5ë
! Ô0M@®A±2Ô,re>»NÎ1º5,~(cÓT#Í=Ö;�*É"ý‚A·Í1‘
! ›8]'Ÿá$G!0:K³	q$} á	•!Ì	!}!•+þAR#½#ÅA
7I%°$Ò"Ôæ O–4�5.3ú8¥,o6C¹â)@1 -ö8ë*ß0q\2>4,þ/ÄÎ=<6zßº!Ç/å¹2WKÌ)
¼¢:"óAI?y4…#•§!(uóc1'—%Ã
! ¼$#?5 Z .@˜|)&4mA#Â6‰#9GZ
! -ÂÑ6¤87´©@U£
! ¥²àæ+`R5—*Ê(—	Õ.À ]:‡‹2n(Ã ç �Å;):-n50Vî%Þi=ÃL;™5-jo!³0'S3®,aÍ%NÉ3í
*ç73BÕ@£6
! ê$‹WA‘9£ŸØ)1>àsj'*$={g
! Ý4)þÏ-f3Û
! €,fêac"¦X!9ù*#.ã
! w¡]#¨ç>í@òG>ñ²+ÈÛOú? =1:]4¥6Ÿ;.`$7§|b)I'x/JB¨9îcM0�žÝ9y®O$Ô:‡A½.>›è<*!@V,½6½â#å«ÐÚ#�#ð)I�0Ô+Ç�,5%Ð(¯.9�»A¡+ÕÁã4Î!ŸÅË&I)¯€Æ =ä™-8‹Q<@¾>}	á®Ø(t6B�+ì»8\škÑ4ã#r
±}@+Š$�_ãó/:€Aì*ù@U
À2/–	l?üAæ'Ž,ú1¤u0z4g)+>’<s%T	Œ4›7c@EÛÀ®µ2£)õA¡G99«1-í3’0BŽ6ÓÚB‘Ô-'€-ô(o4V
Öh+ÜR+6¢.(Ad3É*/Öþ)?-O!y8Æ½|¯	Ç!ÁÐTK[5w063x,ì€'Ï)Ú%HC>˜$Ø"^=7:…7;A#«	7o&33£¶+B´\p'28˜0�	6·=þrÓ;µ;[�#e4)�#sdÔ` DvÊ -‚:çf-¿<R:¡@<A>/8ï!yÿ0 "
! 
€'f;¸;~.c=#1±¼i&Æw>d9
T²±@Ôqã1³é(z¾(Ó*Ï5øéõ@7?|;<-
Ö.&	’3rß"}8•7z$µ…<Õï>•*Ä/"‹6,ö<(*'4o3aA+?Ù,D+¶ÊH7y	.3,<ÛÙ*6ù?·j?ç0¤J0‰ ™.Ÿ(ÌÒ&Ö"©!—+qÞ-·
«+Ak™)~9ÙgÌ“�9g}?Š.­
8h5j("@è5$*£f
! Ã*#•9*‘4Ví¸ Ì>.¼/k#G1„6D.‡8 ù›

¼5¸%)ÛÚÂ y!0J<¶2cÁ&À
Þ<0j
9à;[B¡'ä6ÿ'F"Ç))x1¢ÈÃr’4Á±
Õ>�û6É/“Ÿ0ã%°L	d†3¨÷0dø6MÒ->:&
! Å=59�Jé6o&TÅd3(Êë’-’äT½0•¢0G0ü'?
! M1z3Ö(÷Ap5U&#+Gõ7†"Æ7¿&oG50 2²)$Ê|.y:„"m$Öñ)¼Ñ-ôu"ž+“$îE4Ñ"2¨	>ë#5f&CÑÃ7$©L:g1Ê“­SÈA`5{3˜=0 Ò
! ¦->™~	·þ(ÍÏWeg-
(MDd5gÞ˜<Dv1?¹5©å@»l<.n©&|¬þ
f!µ>Ç­é$å<W?ä $Ý
):V<!ÿv4s37¿6§%2"²
! 	+<(	 vÆ0É0ª¦^,.³8Ä
:Ó8h=%ô8ð:+¿/¥2t0Z%ô*Ù6›3Xp×=ëªË:9-YÕ-|àá+´2³•-ˆ:ðpl	û(’8
tþ8�*Ù…?”0¶?lÔy[.uÁj%�˜žga#ó5(4/.48-;» % ,&ü <Á
! -6Èz;m9öó,T
! #	ÿ$¬a@1""É&12;¾$Å‰*Y36Ðb%//˜6ß
! ×¯AÒYÉ;MÁ6–/>ð&-d$1qf*×@ª6.)½ÖÙÞ+É5!':²ô,Æ'&Ø,)6m>‰6µ”};¤¡*Cß' P7B)žŒ‡@
! 8,›¶œBÌ!T£2³7Tîú  :é!;Ð'±.•2Ýg$Q&j/
! h((¥ò=ä*‰;<5â�g
´§(Ž3[+:’uuº2Ì1�
ñ	úo•s€8*±Âå'ÎãvQ!µ
D!÷	s$/õh	R<X)	÷'#
ô2=W02G(;:#f6ß+o9	-z4Êú‹&×(Å_x&ø!6?Ü‰¡™1ü;,
@i?Ÿ :*3ºë	U4u&�:i>8G#
–9™$Dy
Éê
! Â70­J4¨.ú!j	Œ/o>Bð<¢
! Û9K,`f2~#I‹5l,ç2ô=ß“‰-Ú]è©>Ô^öAS
ß/-	·&8Ò r•>³<MF¶?Ñ?Ôä"È7—5pn%ö:�<(Áð	e-b 0ö%51y&�›$T4Þ;¦+a(ô°»1ñ=6>ä%E÷¦	O3)Ï; &/	0*v!ðŒ >&3æÎ(„=ªñ1É@1±!bM"v"CåXT0®!ìA¥m<7ª\)Q;å½Ì!s/f%U%»6°5B öª+n$¾[s-½a? 7OžNuð9¦="â{ÍÔ(š>Ì+*;%˜1~ å8™<œ/7º) /u:G4Û4Û:G;–i,—X%Ê=¬3K
Â¶Õ
! ž'â5##Š?×˜4n9÷#¸,å“	;'o2&!
! ìÇ¡‘7Ú:¨tè1ƒT/w+*¯¿ôo/R
! P%S –"É4Æ›*sw¤<� 	÷@/&P2‘/Ô!;e8ï@#
! .ã¦?¨ê,†67�)= ¸ý¨A)'3¥<â@!Â"Ù:µ%§(.‰Ë:½,�#¡1Òˆ
ƒ1qï=ùAEpo9/"3Hd#ò"›1c4˜>�A+>4É¼:¤-•0\.<-*×È¡-ú(8Ð,*L>Óºß(Ø8
Ñ1Iø/Ü˜"pá2f<^6l8~=ã?©;ú'xÛ6®Ë"ö1`”ÙA¤<y)XB²@‹-1 €
! Ñw	òA� N@Ét`'h2wÔ4¿ß9÷:²³;ù/št<Â¤Å:N,E t&#.&2¯G
! ß3â+GÂA%4Õ:OjŒ<N	)Ý^/{;ŠJ’�"ç‚®-¡"/Ac!³6+Þ9Ž'³.Þ.	@3-I
! Q?»œAo°*O>«áõ
! æ2Ã9p7Æò8ÛíO1¬å&¹HAò0	Ñøbß<)X·/u�(Î7þÏ?‘/}
¬4p/#‹'!	-" ¨+�r<3Ð5>b
! ä‰ÚÈ"},["ˆ
! 1Ð1¥)# •%£.M
! Ì>g+ÿÍ—8'>‹Ai7„/°+�B­øÝK'‘,omy*Ì=,·44=Î
! Ðè¢@ž/h•j«BZ-£*8�@Ë0én3„V?}#k,“¥7s+–8b4I3³/¡&H1BNÚ(™=ï)I+Anä:ª
Âù&Äû
! )Áæ¬9%Îè)WT”	7Ð Šu6#6EÏ|/Q4øÐÛ!Ú7
! 3å
æ—;/ÖE99#$ö>Ê7o.«@²!/~,Jâ,g âè=3¯w<±>)þ—=MJ+1ç6ý1#A~6Bã‰BÜ)Tm
! 7)màˆ+œ_,š_=kË7«"’ñ',(06Ož@„

! �%W\© «
\ðìñø&ˆøÐu2J*r(¬t
! Q´Ð&?BWüì:qc­f&+ÃN'–ÒAE½v<õ!! ëá>š5£>p3ªe‡1Fq�6í:ëW–6Í+BX9$à)Á Y*›a>-£
3Ÿ+D�-&0;’$U"Á2Ê0§ ³v8=9oÉ#;¼Q	æõ6L)0T<`0<LßÏ"v,; 0™;#Éƒé=ïsÃ;!¦'J±:¼ÚÚ@Z'C<û,ÿAÛ7,?}/

,600»>£9H%x.‘:n‹
! >
§<«p9,$„B,+ß‘n?oY‡2-$È1²¢2£6½æ/Í-)$Ç?_:EV%’'¦(l7m¦1×Ó1îÎa%­¡(E0T?B]*æ�*‡©6õ3c.-3lA-/+ó1-5~
! f:_
á4àŠbp³3
! �c-©)*:@6ó?W!u].	õD"8É*Ÿ!0(–f_3ð/þ¦Ï6Ñ8‡½.ô0ŒÑž9Š28{(/?Š½§5©'�9?ò¿9t=¿G:Cãûû&>	�ì)¤æ
}%Dˆµ'¨o{Ñ*
! ?ãÛ¡%9;?#BQ(äZ
–â@î
=@u3P†%ªØ$Z«!ß�"ë>s6$…'n"Ÿ7ÞS2:_‡ÈÆ)áz_%¼=¸A-ü8óÍ.'
! !B©/¯¨,2
! K4&d246Q:«ig{¬(¹6;
! *±/b-5Ÿ1!0E%}88$q.@.Í9Î$sò“3n;é 3Ä
! Èvm4·	I‹.>m+?š
#M6+è	ó”2D
! Â2÷.F5�-Á9¿/BÂÐèp*1$cõ2ó4©«c*�7ð1þ*Š
¬ D i$åƒ:•#V1‡V:·.+Aß=î<3"$ý=92C>–>a	–� Ð7,¨'+&,5â�ˆ/+9�=
! Ø'žz!Y:Q>qI0ëƒ7:}1ª'Z\0o@&<ì$^, iJ¹Ô6Ò<§1¶@K&e*'uÇ$=7ú"]@é
•
œ-õ,SWðBÑ#*éQ8%3NW	õ3=·0E–:Ê<Ã £q#‚0=ÝØ&‰&!Ø?s'?ð'!4Àr0N1äÅ3j,&"u6ö2öé0ì@Ï:Y'·o(ÉAe;ì&Ž2Ùœ'D<¹iB*®;×	õ7�3Ä¬7vF4Œ†7�Aa=š?
9 %ª,”‘®UÐR"‚VBí4!<?È8V2Œ}(22Fˆy6)§Á1H#Æ"Ú	©%)‰52h0rŒ
„â&„½$�#\é5#y(‘>*{Ýd!E.@5R@—³'~ì	u9`KX?)¤(‡ÙÂ�>²,v3n©ýæ"A79]f'óóË=š
I*év)9Î¹	zA_&;`+—/
x#®I&‚0½	"6s=¶=_ A±;'ƒ+Þçv)lc9‚	¾'Ò1î-
À4Ì0”-(o¸&Ä*Í0i'Q5æ
! #,’/ûK3X*âý-M(îr<0‹%¬¢Þ{.'7	3·<,S-¬Ê/ß F!Ñ+w9#eç#($yÝ,è•…õ³Í*¯«AYûÇ¸0�‰³%¡ Ãî.:'áAâ;ƒp+å‚?t.^¤
q{µ7"5U=æá¢-)>eø<ØY@=x=Ñ 
'ùY¼Stæ7�P1=&ˆ${é4æ%à=B*21ÍŒK8°:|#�A7¸:‹â˜9S1Ä*Ä)‹P¥Eè®[6:A<>wu5,¹%ý$»#0m;&‚9�æ.”89'µÆ´°%D<†;;O*&Ô	Ñ)Ç'æ$sB¤i5¢’%órf#¡u+t
! ê(Š&;€
`¾<´@1'?(Ì+v½9ÈF¢s8H4§,©:�] „ò.Ž—û7$�>1È ª18¢=ýì8Ú"¬À›6þ3Ý6�&Eª5¶'äƒ.q4ÓVQM*Ý’›Fg"&<gÎ*Î,I¤A1º vj ³5ŸÕ%Ü8@¥:Žæ2©R3Ì'?@ë.,íòõ;ß5p>‚#œ0v+Ù>U!å>/
! ÕÞ/<Ã…&~6{œ)•)W)†
! /
! Á?t?º7“2�+…U?Ë2N.Ô
! WéŒ6&q½>¡
! <4$k3o;‹Z)k:ý/Å6‚!��h&=0i	b,@'×)98‚.ó!½
! ×F
! Ð4Aœ,ìf?Ö9*$é8Š"•5i?ðt>Ž=Ä:FD9§ç	k9ƒÒ2ß�2"8À,¥-  [+Í ³69Cç/¿µC?C Aä3Ñ5þ@®0È
Øÿ€ð"µD*¥†oö'ØÖ+æ)²=´8+‹)µ.0sA,ÓÉ0æ,ú7Iè9Kƒ,î¥
ö0S/Ô-F#S#8»j3g2îÎ00¨å=Ö+7Ä.i<„>Í»,-²"L
ŒdQ¯:ïÑ;5žû-.å Ö0y3fã;å)@Ô"-:Ý'T-1;�1Ä1µ¡=Åt5Øô-ôÞ#V-‡D7å3‡-¹5léÆ<A×ïA	U)B–(°A‘Ù\í61RŒ%xöI7h8‹<f,ô4«#€p5úÏA]Â
! ´?N6N)´(71­\„¦&HUÌs"›@7‹#E Ü
! ?3Ã$f âkë&•,|@á)')C%+!-B÷<HÝ†.Ý3ý(Æ„.†MBªT*n|$í>6~º=}]<×'93
! 3;ó¬#Q�&(ö(4ß”ÒZ("OË×C;>7p<m((!5â6Ë*­ì|³$ 9Mñ3/—:¸j)Zi@A�3€$ï™&±9÷ î'nû
¿­Bæg&r/#9Ê#¹*Ì9
! Ì
)Û%\>QY+n=õƒ"k´Ø, †(×´H	Ì	µq6Àè? &T

è";<Ñ!Olî*Ø:Ø¿Q@±¶»zW4ƒ@í?ùÃ%f4"+<â'ÿ2Šr~'¸w/0(&‘A>Ü¸<ë/ñ,\	ŸBî&Ã<´/`,Ç7=s@M�@É%E	×9¾/B$.Ü4˜	I=±42T'P5íb\ÑAÐ@8º˜& 5*Ü(0{6dBˆ\ú+ð
! :)ÇD(O_Š@L°/¯*#:R2÷/Í#à<3v'ø#Ô=‹b€>�ü"Ö8m?P/¾TW.V7Ó 6«Ý1*l@ó(;¬=ý7¢Q�.O.i/<Mñ)/Ú<ì ©’²;z"ÍÚ6‡éb
y6æ4ý:*+"æ17>9_2;ˆ›>Q
! ¢$ “¢;ð~?!g!Í
p=U9S¡Z?ú#Ù5Ñ�8 É+Ó?Ò#ýÐh
! �0œ(ª‘"/ž
! ñü ¤=¦’Iq à&"µ0œ<É?+¨{0\N(»$ç9Þ@`1"Y šçöÁ0ð!0FÛ	f)Ô<B	è„)“ðË96Ó+DW<Ç8!,'Û>‡yÁË?_-Ý%.„5e².>*òç–&w8³"2#r6+¦/3%Y4—
! µ~"%#Ì&¨…h�:p�0W[Ä(;.ò'{]S
!  ÿ4>˜ñ%Z"2!é> C)81b=:(†ìu*óÂX?°üø:Æ/o*µÆå
! ð8k/!2g735:¨1#˜<Œ5
K	×4 )ˆö†¢"¤:à0ªAP8+íà?N2P"

! =&*–Â	>0-÷=[750)¤6Í'3+7Ù@{&Û&�¼
! à6i’7þ�A*+Hþ;á7Q*Ð3„²>Öî§h=÷ü@M/Pù5t�^}3¡	>%vN+6V‰8Í1œÞ8ü‡#Úk'5?¿#66#	<„,2ç	€4	Ä%À¾:-§:Û<	5+m6}'´3V
! —!Ô2î ã(÷;o%‹_9]P$n*Ù
! @2 
! ñHÔ¦!h–Ú ¾*–
ÍÌë¨(º5l¿l+v4é('�Ì@‘% Ç	]5w'ö0
! /
Á¾7F%.0e.jøä@Ø•'s<gD+"O*N3è/^%E	(/ÜRþ5î`>«7®
z?A¿ïm%ð%è8‚�/¾Ž;‚0ü4y“<ø$uœ4ï:¶cTA64À!‹O4�8jAD0]d+7'Ð)ã)(Æ!™Ò*<°8,7÷">B·)&ß,a&–ã7nkAv?Ò<†T=&n!¿7§3ô@F3=s(Ã=Ñ0Ë·é¥A-Ž*X=¹6: Àv(ê'Æ-?@µ	„<o5¶û0¤~62æ<1AX'€5C3á>Ãb
! È+2Aœ†(¸7‹Ì7=L>Áó
;ßy™² @i#´
! ‡<§	}'2b&`!v9"=z2E'�ù,Æ>VðP*�Å4O6È=[4*+—%n42/9š40¢*�&ö5X>µxd>T:õ?7È5³1j
=*‘~:g(+D'7o8C’'-2	;4Ž8ë=ÞI>I!.°6¦6£»
! ›!¡4>1C0%7‡Ç(�I,¹+xâ ÷!4wœº&UPË[Ù:Ÿ
  
! ÍŸ,ä	„û—9ý 	µš$b	¯5„2Èþ¢kW}6:+B8 .æ9×�
M)ƒ!Ô®4(>u$H_ù0*B±T(b.Y{8° 4+q:@&.2µ
! ¸@m¥0‘	ùH <*]0|:”!G:_1 'Öµ5´
ý!5!ÕAÍ!&I°…3z<-[ -\°™-“*î8š*Eã0@(€ø*ñæ6E8l6ç!Ó!—q#87&Ûv:Ü»Æå$r/7@û>§An)îm”,úBBŠA'Û@3$
H9é,¨
‹;))~B”6.÷*_,Ã>‚;yy,¼=á@.Ú/à%†'î:›bp
! *4¥=(+8ë,:/¡93'·A>(7.)2t/â
! A	‘!¬$ö’á#!¯2¢
â%
! B‹/v•û.æYn8Ðð`ð.¬í/å7ç"°ZAÂS)41“
! $2%j@%ì4P3C9	H…:p"05ƒ(8BÆ1Ç0!Ö4k&„üý×Ïò6'¥;š1þä@Ü,&¼F6$-ï	‰-’œ=O<2&½;¡7Å
! B#"7u5¾+\7˜7Õ"C5IÛ5,)œ¥7úå1Êó+š7z#4(Ð
! ¨>Õäf/Vd›9 ñ;„+¼48-:%ò@dÝÜœ
! �#0"î=V>q£ž;{l9&]/H?>Ó("#©?78,áj…X©$Ê)¡­0>Ô%¼'01È(K)æÛg5&ª-Œ-v%Ô>™hA$a
! zý?H@"-Ü3Ö%?N}"‘\RžBë�›2Àt&`‚,ÏÃ?uÓÍ>3%9)ŠD;°#¨Ê-@Å)*S'}AÎd®+eº>¿ÃYAã>�6{@«5TfR
! 1+_//%;W²?9(:*5ð; $F&5¡>Ã6g.Ú%¯9Â@29%1uÒ¡Ó©7À?¿T<ÜÚ3¨
! ª:‹H=4ø(g,D-}Ø§/4µÅ5&}	
! çc…~)ï'!A&ö7±™	¨5K4õ$ð!Ï.ÖµAå%â9"r*é3?5¾;Æ@Ò+972>x>##(9}Bg0aærAô�Ó:y1Ï7Û3†09UÄ31�!Ç	1G
�?¨™@7¯»%dA#&~Ç1m0€ò6ZM:$%
! ·8ß1ö!#	ž"½)W
! h7šP
6!?%~!ÒA*¹VáÄ>z1W
! /2 áŠ­$Hñ;;>r=ƒõX$\‘+[:N$49@>¾s7£·1]¢ˆ%ª'àI6æÅ2¦ Ü>5)™*–Ô `7Øm32¯By9äc;WB9Èß%d Aoþ?n7s±/¹A—"
! Ç%v+>”)6�">.9Ò†;�8 ?O8À	\-:™BBL6í2¸72ß*¦\$¦A¬ò
¹‡Ö:u�>ƒAÎA9H:9»…$ë3†8ö¿@À/�@¸9“
Ð,Ù AïA3ú0�!ü2~%È-<:J
¥/dŒ'hÂ!*#/³‘3Ø6Ê4)789ÇH8_=("
! #çÆ([)¤77õ?Ý@œƒ-È&)æ0)'á
ÿ3lÉ8U)ÛP0Ê<!<0žó>+[3ƒ¸(@	M:¹8Ó!µÆ5á.-34Þ6¿ç±>*¨$$z*ÿ%¼"X@¯Ž†ãqBò$Î&b‹˜X0c
! Ë)o$.5(^¾bæ�›Bvy¶
‰(:Ø7µ“4pG3a‰%¹â
*LFê½Ž-ì6K%T7…"8(ÞR=Ä	ã)¨;ÒR(3"S,ß]$
!JÙ!Ž0)á)î?5#¸É°U:º147�Z+$0?$ºï:ä-$÷Dê)h)²3Š6{
Ž7Ÿÿä#È%Í›Ò#(|5�ü@*à-g<€?21	õ	«5†z0­-…@ã¤8#á;+{pŸ r;n,Û¢>A½Â8"}0S?/�7> Õ4Ñ3ï�/1 )…ø8»:1¥3–‹`é—3`v66)z-0é99ý,6=å ú%¸>›<P+æ¡,2B]Ä8¥ò!á­;B<4b+R-h6®7Ï ó ü¸"&ó7mtò²`j4X8Ü;±�>;”
œ9šæ?ø?È<Äçy$.×WU¹ô9Í:#3>?Va‘)©8Yf>A),ë:9md/S6Fƒ».
! ¤;&1£e(7‹l c'¨!þIÃ-Žt2BÐ	Š:O(‡5w·7Y=Þ0Ôøú
”
&<DA
! 7�9
e9/ã [(-‘Áë1¯
$;ê!±<H
! t9 ú'»2¼
7J>Ö,�
õ�;¾’!k4�Ž’"ä4²'Ø‡4`	s	´å5n[!É*�+s#s;x«3` 5™A�íF®ƒ>“Æ´k1/¾õ>?,P!=ˆ	ºAà:Å(å2Š§.b?g#Y&äMè!Ý8/tZEé?i,Ê6Ù"ê"Bû	Ž12$
! ÊB"K˜*´# �;�E:$*(jŠ/ñQ4&a	ß7?—!=Z5¯ (<áŸ:;>E!%-—0ß?>E1¡?kòbÙ3…>Îë<¡<Î¥È�4Ò• �,G=
+((
! 2œr
! Ü+=lp(3í9ÿ-Í7>68¸.5±8	Á
°!AB
! 4Î.{9êû%ù6ê:\%�œ!)éA%§x7¦3:©3ƒ´:k%8â0q!,/$`­=SA¸	Ž)ë-»;AlI~K«”*B1kŒ)¦C"$wò—;ð,”Ý65J'q9O-ˆ8	#Q$u1>
! ;V6L(é*¹.Ê¶(Û*àZ92Ê;±5C¹1CB6+å(°2d7Ú1<Ôl}B-û'Åª¡A:2ÁøÜUVŽp
íÔ&×5¦Ê’,ó?Ù´7'A.ñ@H:""*÷%ª7ª¾	x Ö
É<¾8Œ&®äA2$ßG2“ÓÞ?æ&á?G51C1K*â¹-) ßxç±¿;~0'ç?Ú'$8=€Bå,C¦8_€z˜)Ç‚
! œ !°;Ÿ*»7˜?�ô>c
! Ù47 ,0A&wº%è0µ@ï+ç'„A«)2®®¤"µ&I¾ ¯#
! ˜ Ž+1@<6#A9*×$,ÿ9‰>ó¨A¡2òZ!aäÄ9v;I£5/]¹7"»- O"z6a
i%„4¨ÐbÂ›0+,"Æ£:z=¸±3H,q	 8¿
! ™3±"&$Ï,ù=Þ,¹973þ™4©*W1X:–ù ƒ5C
YÕ<Ò	»!Ò(º8'+<ù8,O%Í¾6Ó�)«(›#bº/^*ã:È'G*0dÚr&@ÿ,	 4Ñä¥Ã@C31G.“$	ãþ
! Â$
_<#;!½@k*Ï3mk?ªø.“v‰"Ÿ-¶ŠlE2r9BÛ—ø¢(?4²0.8~ÁÛ,4A/|³&É'úŠ=5<=ŽzÊ$ÿ6-_	zºÚ+Í­ÚJ/Ð2e®©<¹4³;=I�!œÛ. Ï;	,Â#š%@ŸD%<Ôð2G'r@c8*N*ü5Øð "%=”m×/@ê@ÅS%Ü
w,
‡/ê])/5�Xˆ \Z/
! Ù72s2!\ À*T''Åñ9õ4B ‡c%Lš:4;°=§0R./m!ƒ%É°<|8B-Œm©(r3Y,=ð- (ò)å#´	§Bê?®@
! w7OA¤3«9ƒ�9«
! gâ<÷ø4{16ž?Ý	H6K]
ÔÒ
Ó"3¥>þÆùh$±-øÈ+ºß2-Ü(ó#Q˜+ª	¥9•,Ù$ß!*/A'H)80;¼*ïj$K;Ú
c–-G7ˆ>ð’	ã&°4§@…M<Ã#èA&-Ð8ð*{ò0¶.ûSBç£"Q,ï$¢ü`*¥'@9zƒºì-ýçf÷?úY®!‘(:jq'¨:„8ô á*#
ß1-,Ž<29.ˆ0ÑÐ-²5)!<%ÿÊ9áä
ê
! h;ÌD)ŸBÈ)0�B¬;ö²
?)"ˆ.°+Ìh,Í8.-U3¶
! H"*,ß8BÝŸ'þ9Ã!<)	‰=í
!  ;÷¬; }þ#Y<‹1é„0ü%x!@s|><N5
.ü&™!2
&={&\6>@ùw/
! (P“�>çÐ9Ž"1BK10¡$ÎFí""`´­6NNí.Í$É!ù�5­· *$6zè@ä=³>“.AÊ%.4Ÿ	Û'ˆ7,@S0¡[¸$>"¯'™+7 L¥*	$ˆ'R9Î8"þwâ;h10,cÑ†5â4áSï1ž ¨†Í°…*ˆÆœ9‡63úŒë
ï'à#n<œ7a8Í.x:s›%7û5ã	¶;
! >ëF@æÿ	U@ Gub!8=Ü¯7Å'èé.Að=Šl
! ¹
20…-rßT
! Ø	‡õ+|
?ò<è@£�Zž-»&¿î6°3'm*öt8å4o:‹:é0'
%Ó+}:¾=�&¢G5"mmÙ	<Ë4¬<ã­&$†f.Ñt,;$>WQ3A .#Ï3°š0Œ>ð(r'6“!�°7Q.ˆ3(´-k;&(?Î3Ì2D&`�È0 /AhÊ�z9Æ
º%j"C'¨0´={L""1�%›(!$uA°&$Ç6..YD7•"'::l0­&W$,
]->>k'B:	Ì‘.;…�&?Ù(k(IÖ>ˆ.fñ ¿p"57‚)Á4/(^4C
! Ë8)µ?ã
! :0�:VÛ2%!‡'E?Æ#ƒò5ã43«>è("iæA0<s.Ô3ˆ4Ú,Y,;ˆ±'é;q3Â&S-]?¬À)}.Ó6<pŒ"r79&4<oBT4›&‘J5ùC:¦;q;9A)W
8>×®6™%ï<Ïh<M.9>0Ò4v>Sz	Ã+èž-§Õ‰4½‰<«=V0z+@:!LB(“D#%8z8V*ÇN�Z>à$BÈÊ,†J%!+�7é)»Ÿ2Ñ\2)Îä.w!ëA÷t„ë+ç
! I8¤3ëQ)^¸
¹0[½§"›/?y“BŽø&‚ì
! ‚7†„#2	š÷5)_7Šô7àC$÷1k5a <:@gë#0$n'#¥·«i!K0t+—�	µ*#.1¦2¹0™3öP>Œ	8í(³$ª&8<?@›^9…»'ã²2t ‚áß
! ¥
! 
! Æ?§>‚=¤7Î4Òž4-¿´"'<l/3z@ Š9/^Œ,f	¼2y>8!„%ä)fSgñ!>8—2úRµ,ø"/uq5u8?/W ¯1Ë "8?‚6
! i4ð�©,n181Nù"
X4™'ëÌ:—#¯8
! ôÔ"~.4>Áý"=�4/J<;Ýé¬Õ–#==Þ=eqõ=ä+÷
54lF.ðÌ Õ!ÌP9ö,¿?Å7W-55Ì#`µ(Ä'çJ?[uf$	6­:
	Ó&Q+´\"Qõ0øq0#ž ¿ 4œ;ÙûPS7@f¤/²d^!kBÿÿ^­²JBÒþ6ŠÔø'3ÎD5ü?—@3ˆ<Æ96?u;Î:a.<9Ô
4íþx&U;_ê—]&90d)ä'Áö€Õ=<&²"t9›ü6,?).+@©0-0�0µAfY9p!A<n>K-ô:›×-§I(<Ÿ$¯,ü$v&Š
! RŽ:<l1­.Ï&75Ÿ6¡!ƒ'Ð* ¶|/07n2=	ï&„i0b@@
! n0– ê>Ù?U|'ç&><ø× JD	•4¾o?:ßÒ~[At)[9š&;@*2'5ˆ,Öx"f"îB·;*1QA5;ô3½4Uà+3!ËÂÐ#ê0
! $3$b%ždn:¼8¦)xBº-Ô7«23û û1Í<‹a†6�$Š7Ê:†=c6_3ñ?7%ï>BX¾9G$*Ôp:!*hæŽB[!1©‘Bý16ã¶0,�X(£8�
! Y6é-"Ä<ì"�-Dñ
! 8¼+µõ9D/õ8ú>x)TtÑ74:Ê>A6¼–5¢œ?·"å4àÅ!”&a®³2Ò8èa,7Õ?Þ>ˆ!Ÿ"OªÐ.0+~”'6/´6äÎ#¾¢6‡	ù&Í?Å&¢!å^BžÒ¦@|g:#È:i©9ˆ@Â/Ú
! ° 7^¨À>dL-s,ú6ëv
@þù	?'ì
þE5ÁÔ+}œ#Ô#È¬Ù.à$¯&#”…(ë sâ?p¤)d-÷9ü3^%�pÖ)t:¹š!(í-®8…ñ2("1?=Á#“Wï/!Za"!L±ñ-42=ƒob(NBô
! ÿ#??Ú5Ý-Ü™"®¤9¼!•$hø2ÿ�$'$O0Z&a'B!0žRY‰.¯3õ×8_;{?\9º@/6öK#å 5Ó5d;?+ã=¦¶43S;èí ì7ÿ’î$A>`B(JÈ
! u'±?tÖ6G øø3JÅ
±~<7.
>%M�?.	Â@�ã
'^Ay;ñš^z-—
! R¸+P
! 
! Oþ%Ú=i~2œ@l*‚@·$í7«47!˜I;&A(03ž>�hCÎ@‡9¯%±)žA® È6´ê-i8Ø55B?°(Yì)*Ä
¸2!6ó;aµ ‰2Æý9vðÙ=Q"ëm"äê/Xï*Ý*‚ €"„á(Pb57«L_ª2þ›Ð ó,BÕ,@%—#¾"Ùx,œ H*‡[1`4Ö¹B&ëK!À—0œ(Ç-@@Ñ'zÙ
D8¥@Ê'w(	9#â$‚lÅ O5N	V»/±	 C,î9ôó³ABj0¹$G„(Ç*CŠ;#Õv
! %Žþ>š+ö$²jß>d
’)¯?Ó.æ*q+s?ÃÝ=³??§šùïXAh-"!ÀÅž5FBþ$Ö#u
! ÒhJ¢Hn!ï?ç%”'‡ _Å'ä!Û½'Ûe':”)_BP>T2A7Ð%.ó@Ã…=ÿ*1D=ê=<\£=	É.XúóD QP,n@
1Œ+’î)ß)0?õ ";:XÄ 
! §F'²!¼&j�¤+¬+ÇA;T>;ï%ðH'±0Ù<ÛÏ4Ò)àí"ö#e+'¥ôÔ$ÿ:ÿ</;(·•&7	É
R1l!ü± å	¢9Æ4è
š�1‚3j*"B1u.ýof»4aø$Ò;oü.ü1“/ý%$‡
¼©Â	€;~‘;/É)û2šAQ
&./»h.-2„1±rD²A¯#¡h>Å>d*@«f8d�@4c‘ }Æ=çÍç‚1f+%"Rt;™-Ø^4'É£='-)¤«´Î ¼)AÛA/"+¬ì�)R"'$×\=5&ä$ã/ž=Ø™Žè3õ<U*˜)]9‚8g=ŒÜ:?C•=é„L§$gâ8&Ab" 'ˆ?°!<@à5¶5Ÿ5�×<¬'Z =¥$CÜ9t˜5¾,´'À§7u/¥B×,R7_#)sÿ
! 	“9.í$:K=÷`3w4"¡Bi‰ È@½3@²d–+T7âÎ÷,M4î%p8ï
\&`eA3^£R=®:Ÿ|%’1@/…TB=ÀÛn‹í,ý>ä8­%ìe*N9Ý&Š(Ëªå)¥"G'ì -*>Šú	ó)¿:í	Ë8!Z¬BÈî@&
! @Þ
! >´¶/s:è–?«<ß;,
<½<ð&!A�
t-0ÖâF’*3"83Ž	:¤!5=$è-_>2a>ÒSæŽ�(Ÿ
! Ä´>dœ
(3Øœ%w‰)î;ÝÉ%¤5wDºÔ;[-t1Î)æ5§=Î%ý*œ"„„k	•1& 5e«9Í/¾)v7ñ!t ½jv=Ó$ö;SM5ß@3'24Ö<K
! è>±„$°Ñ2(Ç�=,8f(|+ZÎ?7²éI f""$³@?8%4è§í"¢(ð˜ž# 
! â"#H5)ì#—&":©	
! +Ù—$$îI<©#@;c4*$#î
ùÎ
! ’6z%Ý	Vßí'¡3j2/ÉŸ$
! ,�(°¦¨2�˜,–Ò9œ$0Õ$†9G	å2!Ú?48.À+.1'8ýƒ8‰4(‹,ªBÚ)› .‰›I?š@
Y>³3
/@�0ñK(k<–,Š*6"³=•<¼ÙM%�9~k+0¦'¸5Õ8Ú!Œ*}´%‘<]
! ¶9¡»¯4ÌÃ½£p8{:á1Q
>2?/Úžƒ$£;.?<xü\&ˆ�Þ%H%’
! z5×.J´ð6ÉÍ)6q?;‡;H2ºà4n™:³ ­4®2<k:	<n	p4ï4úm:�<²Z9
! 5ÐË	È‹9ã@ë!/ô<°	sê“
! %d*þp†*Õ3$?#3)¼‡,Ü0¬6Y7Yÿ	9µ4Ž!v–Ç§e:ý'®8)5«:,Ø>q‹í8!úV3Ó'%'Ý"ö.úc'äY&²:’>ê<-Å%ÊAh3‘'u R!s!ú-V.a:…8±A¹>¦:T!e¢Ú1|º*Ò3�~lá Ú|	9w!ö?	”:=�$d
³F˜
¸´!�Z31S>d
! ó	(?1¼ �(*	' ¤~7		a0…›|›-8­,….<nþJ2ê
¡e	6²b
À"(=Þ/¨œ>&,>0b$/6.?\',2.#,‹ fV@stF;
3¬
#4‰1ò&+G@2/7ÞÃ"ö›AÒ7×2r9‡Œ$@—?	(
! òA

û4L€+F?)†`? ,¡D
‡=ý;ˆx!Ãß¼Z*?s
! X	_$€]3K¼)8>ÿ?÷(¶)(#S}$<!U/}5ôÄ–@iÔ?L<j8A#P«Û+08E¦
3ôê¯T9¥12J3<e7 ÷:ü-è#¡¯$OÝ5©â:^å:v5µ<úRVÜe
y1�=d.÷
! 02	•
! xÅ+©B£;«'.ê41ÿr ùÈ!L!¥+Z<ú<4
! ~*º�ì• ¨O&ƒ<{á|A<W7¤'—7|!Ä0¢rLI2P<�¯G˜!3-À7°ñp)'BI-žŽí³-õ%.2Àá8q-‹*‡7†	Ñ/¤9 «.m@Õ#ÓOaŠ)+r.µ
! kW(ŸUAæ](tBO=‡0ã2ë.ÉŽš' ýp;ú,ˆ±ìñ8ó3’J,V#�.}„!qñ])ñ/Ï%ó,=X1u7Ä˜#ÅqBì6ÕAö"s5Íe!Pœ2Œ
! ñ)œ.)5'/°F)ýìî¦$hBØ4!A&˜3�2/-¸=#-
¼<´;AA"À¾^>€355CÕùŠ9&?`8“-SÇ84ò1&ÙBy+;û‡)q;/*Q95 O<B".§6€á%.œ:—c#Þ M;:¯!ïÇ;‚÷Þí*2%î2AóRÂcù‘0â˜×

Õ&‚(	!„&
! ¸L€aF£?£8ôz5
! G¨3�*zB—BÁ%È9à8‹$z:Ã4ÿ 39£!�
! �4(c	i-ªï`³+Y2¶�.e&ˆ§ò/´+K/“Ç=E,h#+
! �X=?ÄB>ÿ;’0Ã�+¼1(H-»€$1N!xð wAm²*N<)1âÂ'Ô.L!°ï™R:²;é
! 0/“)åz?<§6@‰V5±Q7µ61964ôË,~£+}Õ(¼Ë+‘#ê2¶é%ÔÄ+G6ª='	ß4¸/�J(H!õø%2ß)é:@ö=ä9ï2æ-”$þ.
! 5WQê4[	nXß.ƒ/¼ô/PÜÕ'Ø3á&«‰7¦)j"1z/kF-&AYB´A¨%	êÖš„	Ë'†
! VD1§2À:·Y×À +³9ç-ý
! 76^=� â7™ C)Ñd6(`"ß?.ô)Ïµ)º:?^a 1Š!—!8À3Ð!çC*„t(§Õ7¿)¬’
ã6ë2t£J"Ì,æ>&Åµ/û/'@­<k::/cº9ü*œ3@"Ì*?2
�A„9,h¿
T/
! w"R'ØX‰3±`AK$±(ME#h9‰@à,*Ü2�G	\|,ƒ=7­5b:@4ÿ»=¼v ‘:
! 3*^(™( ?ªAv0Ñ.¹(È3y$'‰?×0£ë"_ðÔ'êOL+ ç8#94h?	Èw‰9EÒƒ4E
·*Ð/¡8ý
*.·3K-%Üh3ì5‘¤$ó$I€2¹9ó&”e%@ny¤0k0¹h/à9b00$Ã	ö-–<�� 7&>ñ9›
! ‰[É
! /$Ã:4V/á`E@z<`-ó*Xµ¶*C8T,U[&MÉ1Ã
,"à>79+:»?2c_?t¤&Þ
8%î1e2`Â<'
! @ß:2¡#ü¨‰nÐ+å"M7\4°…1³,ó“>Œ…{'´’;°
®
! D,F>&”L0+-$n$ßcB(�B×‹>ç@1
! ?©}*Ê•e;Û?ü±-Z,ÄÑ5>ç:)	Ù³4ø3/.kC!¢8™Ê=8½:5g%1-Í»Û-n.Aw6¼™8áñ3Rô-Pñ*)%4Û .*
! À9—µ!Ù%e¡d'D¨&¨Û$2{$_>¶ï9`@%N48
! 8*˜3Œ#Ö1ØÅ-^'�F7²$â>íâøY|"|*É-Ç<ÿ55Il
 Â
hP=º'ˆl$¶ë!²8ñ.î3EBœ6äé/¶&/<Ì%,ì+·2‡!÷4þ-/r	—¯>rÝ
! ¾H!}m³b±2x²ž('�š2«F8NB:¢A¶#16WÕÛ	�8ÃF/á#nö@È,ý5/	
®Ÿ?z)†1PQ@o0¦7i
�7|	5	q1nA,0P¾8%ÜS·…ÈY-¦€(M,!7ûë$kG+Ï‡ì9™/�6ÝU
! 	€.2JÙ@@%S	¨4z‰:à(11q%½¦8ƒÞ=!d4^ 1(me11–qÎ7*�
! °0Å1>È/h:Ò.ù!%.Ûê%3Í3p%ü¾e ˆ;\3Ë¤–3ë#È#¼0H+e)ô%-ü,K8á9)
! ×­2Ê^´X¥%=^8‹3‚|¥8éŠ#Ï"r ŽA¤#¹7l&7<4Ú4]1®/²ˆY.Ì<…5áà7Zö ™Š8Lc¤�+î"œåP."üJ"a!)�…42ïf
›5½×C{7„™jÞ4¡¯/I/Ø0æ!K)FºÀ.(,.Û"�!!<¸ˆ�:Õ+ùa)�!ê9;#šT.i“5Ç=‘$ÁÐQÈ?49ñ+*\*ì!²¦
! )ì<¾,M3u!Ç9Žð#®$58‚*3#Ë
! ¢	i9Ÿ5C=‚4A5d1w5å*¸O
! (Aº;Êƒ[`
! e”&/#r*§*›U„¯Kˆ*Ø,Æä
! &e@Q	%²ç3$*@4äaB¤ o=Œ7BW&Þ=,š3Ü?Î;l,Ä=y&Hï Ÿ.­@•@Œ.:'	½ú\, *™?È$½+�6@Æ×*ç(8'†x+e5×:^-®'’8Z$wB4@
&<@³#øœå9á3‚%|4c7Ì
! e=Õ°@$9'ºœ=>
>W"è*LB–.Û#”Á!¹ 7fý²9”?|dÙp#ÏX#Iwz7ê3Ä3õsÎMA^^0¸3¹)T5ýùÜ6ÿàBê-q2»U##7Üû5(*.À@¤|Û0Ã/ 4-Êx‘ Ÿ?Ø#ÑÓ	óØ
‘Ä�Ùæ;O=$#z #	V;•(Þ*´>ñð‹B,,ê;4§†)i»@-w?-+Ÿ
‰0/‚Ñ=(áØ%š	ð¯*‘6ò 2;)Æ˜:qÊ?‘@=.À&v¨ ^Ô8´.=†e<Ä5!O®5i£@{:<.u>ž,H$º0×!gÏ=Ï#àÌ7„µ=Í{4Öv@K3Õè2«Š+Ù+†YuXu32'ª;/¥+kº3ùB9–¹,Ó?T%�c #&–2Ê¨"öP-r1ß&‰!m#z27�	ö0…–×#›''®L4Ý?>”hz
! ù8::k.9
B.!.Ç
! úC2X&$'â(--±+%Ï>(ÐAK?õ;YU É>”5àÅ<ñAŸ8€9Ñ"í6œ*<.±}S5±(~;Î>&G-Í@"‡} 4157;+k$æ›Ë	/,t6…/·Ó/ˆ±6w)z>Ø-îˆmc/š<"·Éž×"g@]2þ	o	Ç">82s9Ý/<$”9,Äx@_”Ó öÔ9mÖ$T6oú
! XbË3cAR/¯€!Ò>$Æ;¸-/!9Œ@6ã"¡/�v¶>Ü ²þ8èDM;á:N"Qœ&Ç‡+±$A8C+J=@`=)l;ÞZ4x5ÓoAa2´è%º
! C ¢Ó76®9Z= ¸x378¹
! ­	ÛD2”
! ¸y¦<"wû88(|=U2¦Bw2ƒÎ<ù2ø1(µ}
! Œ!Rn#½j:[	ú$¾W>Õ)Q9e6º,X ‡>%ùš/ÿ)„[$ó2Œ � -7:åoH¨I9.:¸Ê
Å=fm/$$�G(¨í4™e$171ûqÁ>Œ3�5§±?†Nñ>~&ã'a	<2€ '.DÞï
! @-‚³*a7è(6�5
Ó;—(£/{Þ!=dZB�ÕpÃA»
à'ùA=Ÿ9,ô�7²P
-#ï3^*Ê
! š
! 
-²%�@K‰?ì9¡.~5ø1¬ý >·9=Ö);
! ¿+“AŒU5%,öd%Õ0/1Scö
! C{{"ò
{ KMp6834c0B;=U8¤b,A.W? “X+L Æ+Ô5Ö3r2î/ÕS.Æ,Ä4•+ís°ù.ö!+À1á
! ©5¦ 0º5‡*Ñ	û9êz=é2ú4 
w3@¸#³]+ÅÑÈ©Å"†>n+¡5Qê=»^1C-Ä&ê@B—
¥4?´,ëo r44%ý7ÚÎ'_(v/\(A4pŒ7d8ü³
Ç30-m)“8l*"x8€+¯g*yZ6^)>94ÿ-k®º­*Ê_@Œ9_'�3WBfAª?T)ªò-6ý3S&|?ô8	]8ZÝ&N” ž*ÕZ@¤òe3¸*‚ª$ù9ò¦5Š Î#´[#k)‡?ç$;V>$# @ŠBU-¾6!ŒÔ^E*%€7y
! V	ôŸï:·5¿fa¶ß#k¼Ñ@Ä=ª†<ÎAD6%'Þo©AãA
! :¬2�)@=q:c
V(n
ï5GWG•ÇðÐ>%é+º#H)ÙÐ6œL,Ï„^5/×Å8ì2!“:%+(
! æ;Â'5�1”;R>Ã¾!];x<ž5A0Ó'Q1¨5–„2i.¨#Ð	ë@9:W9×B3?"ü:(q/›$€›+öiÜ>Ç…)µ+,Òƒù¼?^&6>»5åvB¥K+V,û)Ã?rØ@m	–B!(,3¥%Ç>!L5Å0ú@³
 £$ÎÕj:ê*”\1?ÒË6çÃ2-	¯˜6%%)$[8›)¯0°AËä; xK¾*@ú=)=ÊHD:ç=[>C7q:¢Ûž.'#)tAé1",a+¯€&C'ƒG™%6ÿÒ@EM8K*�x'Þ2Š3i2}7g(-à�d:bØ;‘0˜Iû:È$_ü;(N<'h2,<Ö'Õ‡5Ëj+y.$>³,“”9E+7”6ð>Ë
! -S-à´*õ&800÷/E½Á-^;²’Æ
! ½/tì.ô$û"‹" N7Þ.~A÷$(ü9þ6	&+
žä+7q,4pº
îÇ,X3NAž&0#û!3ñ
! eBMŠ4`2¿APK@Ÿ¬0b{<¶,-¶:Ë/Ï@ö)f•ÿgà!<É$†&—++­#í1:÷7M>¥L#*o
ø
ô	A+ö@a9Tù÷Ê&3&C@«0ô6ü7uÝ€63ý&@¬J‡&”<ù(Ã1=2NÆ5+Î�1
4÷%Bw�8Ôl1U@mÌ²4ø	Xs0•/Æíõed6/joF0ŽƒÄ;¬@ü<VXÓ\ j<H.Á*:A/)�™2Ðp0O)v*�b>›¼;Mî4>’ù>ç’@”+q7*-•,4òp1A´<p3Z	*&•2-F_ü
! G"]–ã.”@¸3Â5P#Ý)£Ä‘-.
! r5£1È¯=¤%�þ¤Î6#š(<45 +›ü)J6ç+¸1§%“EC4ËhP.ö’c%©
ì¹@T&Å.%ï©9]7(x¯½(úÍ
! !!š@{!Â:,Ò
J3B6„-Á3ÝÚ^	60Íg?�ËV.!õ¶,`‰…20á<˜'—4À:3e.3Æ2Ì-K-1P4?û+Þ$#×&U’E7/Q%)ÃÜ!¿­1ˆ#q
! 3âAA*•žI$Âq
9(ëJAQÒý<WT@tçg'Û8jL(+¶#—§)ÉÛC'5<X<+ØA"Aå-R)Ü.ð7Ø /_qAî
! ·>8Ò>Þ"×%¿.s>Ã0 û@0Øæt?Mò[,õ*k
! B§+a%«6äw
B�êüå2š	{Bé7½2j&.é& c,ß9=X7‚ç*1„ý:%ã<Œg4>’&)
Ñ,—AsbO;O2Å,¬1~ÝÁ/3AJ$¤1E&À%g0Ðì;ö*‘B7M9$?‚<ž$|A´5½•:9~
u<Q=(o
! ñ#>Â,52¾@H(”0	*Ÿ*9�Gb][6ý+Ú¶	ë)ªÊQ¶6¥5Ÿ_.<	'1I¨=�IB:6;˜%o-Þ+4ñ0e¬Aq<1.ý.M	Ö
! ª;±#¯"ª
! Ï4¼ë]1“,÷ä/À=(1ñg7
ê8C.½ã$Öˆ2Ë-#00l"f@Ã;+Ä6b2ü/‘ì‘2Œ8½ «;Ö-{>¤.ˆ,-5Ð"+#&&"X63„Ç5û?aÒÁ_0X5^#�,—.u¶=w;Ì¼7U+;S!¦ë:ÎX
šc>{A-i;Ž$Rl]>]%¶ƒÈ;»<
¬8¯;|1=b*X2’Íÿ/^h'ôŠ+Ž¯)oŽ?•BÇ
ò#­
! O«<ó8“/¢
! +B+÷˜;O²/c5>o':)ü1>61¶ UÞÛ1°o#ö
Ä$¾4š6…,Î>x>Õ6ßÆA²e#-ôaë;ï(Ãf;|¨*A»*?U5Ç2þ4–*r^Q/
! ¤–î0ès
-6í)@z+÷­
"§-Í&x6Ìª. ë5)4:**02_
! Û)Ã);8<
t4!5kN%N?ú:Y
! °'§'­ñ
�ò3€:ÓdŽ9^@a*‹?Í4M+
%'g•A´8®)w Np x#Ò*ÂÛ]…4¥Þ`G©ï8�=Ú5.%ÓÎ57�*UF Ë©6½761Az
5¯6×
! ¶3s�2¾£,–1$·'19³g/¤Ý}+ƒ;¢-®%�r>õ(§8.$Y61%ÌAÏ�?^]êu˜266;™0¬&R6Ž>”%LB¤Kk=*éÃw1’Ë5/! N/Õ€%M‡.ð$s`9Á(õ�ŠŸ#%e/’9¨I1ˆAª3	2Â9ÖÄ@¨$/{	$\/‹0N>Ë!à ¨=e“7ƒ9-¬
É= AW Z;g>Àm5ÃÀ”0¶1îrB¾3‰Y
B21;ð~3gâ8ü=ƒ*±*›"r%Ž ”.y'©î`k†-x\8ò2®29<á5� ü$ÿ¬-Ž�!,U>©
! Ž’:M8¶âûlà2£#Ó>×6Ú
�'&L/*8Ðyy=Ùâ2‘9?í0˜D-Ò'¸Ý$L7è2Ü-Tk@rÑ6§Ú*‹
>Ü<ã,øQ. Rš#•ÍA’#4ç<)ƒ&*#>9-9K¹"y©£	L}/±,ýE-¬2õ')_Ø9ðA”7™}ð:ã[ ü!¢<JŒ?¸'Î	Õ	à+£ã5	Ã8»?Â3]#;-Ä,5L1›:x	,hÁ5
«8Ÿ‘À�¶¥!l4÷=1\;}-ø=Q'Å@)¨MÜ'ã*®3E
! Ï8¥s©"ïý`A”o¢7œ1ÊV'›i•Õ�	Ç: ¾ªDüø+ŽK—d=»7r:Æ8æ`#Y)j
! o+A¾`;Û/#§£4ø)Ç#s1Fe~>¸P
! N
:¿£<¬<ª9(9Î`/”(À0+‡À`c$J¥	š9ÍT$$¶,¨/ú&Þ�7š-Ü�
! ´Y’Š1-%ñF7(ÇV$Ÿ#‘* 5$U(¨Ìõ˜ò,ÿ1 
85zp-´)&ñ<fBˆQ0b3;Ž/m,j.t'A2,P&¾p?Ìx4BÌœ—>qÅæ(‹úA.6A_“Ú.–Ó~k-m-3>>�&Ûø7V&L@$)
Ñ
%´)9{?ˆ(R4.Ö²6	º(
§-Y#š%.Ÿ<c&
2L
! {5­?Äòž¬5Ú-tß-‹4J&ª()01
Yù-l#ñ5(;I­­†g)Ý2ÊU,‘1o,·(#8Ý0å0G8J
! _A	÷
! |6œ	Ü7 BÈ>7E3´91&¾™Ô@®�'�.26'9uÒ/SA;m½=Á+1!¨Bq)C(ÏŒ¹(KKj7í=ØÖ/^?;ü#ÎÏ½(ó
! Bj-
! ƒ&18¥ ú/Ûe"×*ã6ŒB.[*æ8²<¸@%:2{+Ð
 (WË‘P@Í2¹¦*Ó@d@"jÛðˆBåAê�%
A16:.¯@óŸP 
”/%‹!ž:èm&M2…§�<Š0<1˜P?íöÝY!õ.Â#'],!'/aFk 3.c+ó0å§?ÿQ6-†B·&hF! ¾?g6Ì$n/l%÷³Vp	»mÐ
Šü8R
Ì;ÉÂ+�â!º´1	0w:Ñ9º	t#5@Ë^5¥	;@0Uà"þ=Ú0o$92‰,ÇË�UBÒ=x
! v2�t*U,ç)h".A�âI5di
! s4ø$)9Á<{"4k2|2ÚØ1P�4Ï+¿*}&y%îÝÝ.p—k
x;ð	Î?xÞ(¿!Ó<ï-74 <Š®BÀ©2�y£Í(¢%%:B»”#q8m8Vd,­£Ü¥a3&ù/r#¢+�-¬>’2%(?&D
9%n
! ,1u
Ë>°
! Tw#…
! �'�/%k6E(®µ�&ážº<'"Y5�=»=X�5A=ä2æ:b$[W/Å?A(ëm
vûzMi:4å¸ä(g
! &b+2_“03

Â=ÿß
±‚©!‚6rÜ".ã!0})°"¸€@IŠ<=/½A;'+ì,�74Ú—,7Až

! 6ˆ=ƒ)¥/úÜ=÷=;{)ïé<„&âß#§/±ƒx9!"�à<¸8àÍ,V"ãE32¤?’]À8Õ
x(
#k8,�:’AP)˜@VR+{9‡’­/ì”=¿Y¶Ì(SI/.ê8g3¼9·a5œ8G?5i)Ë¡•Ÿ)f8@¿¹L$7Ù-‹+j+Ç?5A‘=!å„3
! -…l‰š8�‰bBâ	1*û# V8­L_7q";6î#^.Tr,è7%>£/¸—†0§;<[«%—6 R*"<´X;éÜó=!
! �'Yvå6G¢'6j8{2l¹ä7MUG&ª%&H<‚"ø
! Æ%&?è†ûÂ:æ3+.Vw’+6ÚŒê*A®<O[=…ä -<!
Â"/>›4ô?Ó#{-…9?ý &:Ó_<®™9�:
0¢,EAG/ìe
! PO? ÕL.>ˆ5ËÏ2×A1%<s`Õ/¹!Ü*1‡7&Â7 Û; %<ª0_É2Ñ(mB»ž*rÁA:;=+à*‚<ô10>â;3ì=º
Zò
! ®ò?k!Ö‹7NE?N-Ï1^2\?ÅµÖ7}Õ‡é'•8 º"§
! ;
•Ž#ñ¢5Á	Ó6©²1<
! c$AÕ2
! B5S2_+ž3¡0˜.6Ôœ38°1y0ç5f0"?¦&î,A0"Í*�ôAõwøY.;”>õ5¦"÷$#ŒÌ8Ó-|1 3½1èò(O/â.&@­"¦Rú*Ïò+à/7ªZ E/Á[
ŽŒ-%.p.îºRB3a(8*Ë$h
n"J9H0˜/Z8á"*7°æÞ
2¤¦G-Ð=Ò:„:)\5F	$6
�$K:½*¼­+�iÆ3·Ê 2Þ::Z<¢)n™7$"¼
! ;v™—'¯
±R		4:7)*'·#.“1¶"6à	¦>x
'§¥<A9;•· \^
! ¼6g	Ñ/:x%…
5¦;ê79lÈ)?Qˆšþ7/Wmþ‚
*‘=ûäR+€ùDB$)¡€*Ä7¬,Ù11Ö!2 Éì'‡
! 6-jò%Nø,»Í	C@v´9"ÜK³!¾
! F�Ý!+L#Ä(@¢1(,�Ê3P	 .?.)
?
;œ�
c2ú9Ð<Ï*0@©-¼#ÿ=L¢BèÂL¬
! ó/(	Š5u	;9ý#6
! ·‡"˜Ö
°>|(ÞCì0ñ
$A9+.¬ß6#=ÚÌ˜
! KQ ¢&8AÇ&í¾¦ASÏ
û*Ç
! ¿-¢2U¥.l5B$¾-‰$Ê-P:’ò9ý0‘¥÷;1ñë(«$8F*–!˜-O+ô!N;.B!B¬Ð$Øª)ø0DÿÚ)]!�
! ˆ!:1],!-á-?J°?44r³)	N=rR?}‹m'ö4¸!åì@¹#ž%7=à@Ü5ÄA›H>â*j9j>Î¼A˜Ë
i Ü$spX/Ç._5„'�1—
i"œ*Þ7Ý
ÙLh?|z(5ª@ó-Ìøg;Ì"/ýËAa$­7Á"+œ+û!P×+ƒ3l3ë6®?l=Ì?	?'X¥î	,£ |>Æ7®*CAl9+º|Búñ6:è56ìv5oÆ
! H!Oy<î,*Ò9£í$9!h [2«‰ÿ!­M&{æ#À(/!Ð36)²&q&i¬/€S((
^$ù<Z03?K ¾AÜ@N
! óÊ@BA0Þ£7æ=ÜI@›@¿4þ<n Î->!X"Ï!µ5ë?òg"$·ô¨-—–'H±=Ò,B)Î+m FÁ7j;ý5�@C5Ý68S<Gÿ
\( Ö&�D$Fo"°þ&±
! à \
m…79[;ü	æÕ0'¦#5žôÆ4u)~Ž
! „=VÕ=$*)0*
ºR#`2.i3�-=ä�,ê#ÑZ1a`)ºø>SêAú2/>“@8û;Nù3ã=A×$þ0OH8ÀA‰	0.î2+b=ò	_!4?ñ/u‡/7ôë7 ¶<Fé	–7ï.û$j1`<&w*/“# F9‹Àc)E=Q-Dc @Š8à³y-¸þ7~4ûëª8	ó6pB{‘['h4Q:îæ8!ø5W9îo1k>iAã9f==Ž61À"¤‰5"‹I.…ç,ÿ.Ü²©,,¶$å¼&[%¼_)�ÿŠMN\š:£.=ãi#ö›J%*¾2ƒ âfd&õ“é@ñ:Â¿"àh!N–;"†#,†ª4à
ì(Ô/y�/±7,¦,9&¶H5bAå+Å$€û<;,=“þK.c:�<Ä!¤@*XF+!b!Æ4Ž¢–1$V!#E"o<ïw¾%O72
! ‡$„)}2›E)¤¾1ý@›
:=I	+%:]Ó3:zÌ–A{/­t3ç&;…!ñ7ò4"";}Æ$Y%6X®"˜ˆÄÚl'.íU7¼3™61õ3ÁÛâÒ6vö
! õÝ(—<¾²(N·<ï#0Õ"w-Æ©$3Þ	š#¤BY	ØîÒ5Bú5Ó38T'�3¦f5°/Òè:B80û=ù412æç;A"Ï/©2�º:Ö*1¿'�/ÏQF<ž(XŽ41W2EHB*'J?ô+Ò05:o7µ:vS8	ƒ_,'Ù&©.¡:)<72·�	&9'”B-8G%¢3K–Æžß$fs@$¹=P(=?GÝ—$
p@Ø½"ö6(ã+ãl:`
�)êemÖ	ô©Œi4 dÑ<}$Îï<J#ÚA0;Å»�4¾.W8Äõ-T8â/Bï;H.Î9~+sB/"Jì?ÉÚ9ã? 9:>¨@û
! 1ç*ª>:Ø<|&FÚ2[Ñ;¯”4µ$«À¢þì>¹4UgO,R ½ˆ&9û#+M!]H~88.*¬*ÀÖ*OÜ†,Ï!:«&¸¬·-nÄ”TAxM‰ª!%1±%#67-�(?°HÉM?‰+Mú>W:ø–
! ®1"%±¼-?'(àÌ/íh@q@D
  
  
  /* WARNING: Because of differing arguments to an external
--- 1,1846 ----
! Þ•¿BÿX,�	�¨�-´�1â�‘ )‘J‘Û^‘+:’0f’K—’ã’ù’
! ““H&“Ho“¸“Ì”â•<ë•B(–Rk–>¾–@ý–9>—Cx—F¼—5˜I9˜ƒ˜!˜˜$º˜ß˜!ô˜$™ ;™"\™+™«™²™-¹™#ç™”š šÀšÆšåš(ÿš1(›AZ›'œ›Ä›Ü›÷›œ)œCœ^œvœ&’œ$¹œÞœüœ�3�[L�]¨�ž!ž=ž"Ržuž’ž±žËžážýžŸ$.ŸSŸ sŸ#”Ÿ!¸Ÿ"ÚŸýŸ 2 'P (x +¡ )Í $÷ '¡*D¡o¡%Ž¡1´¡æ¡*¢-.¢&\¢)ƒ¢­¢,Í¢#ú¢F£Qe£5·£]í£wK¤rÃ¤A6¥Kx¥,Ä¥Nñ¥@@¦��¦B§OU§L¥§Rò§;E¨8�¨>º¨Iù¨IC©B�©~Ð©?OªD�ªEÔª@«C[«EŸ«7å«�¬C«¬=ï¬B-­Ep­~¶­65®{l®Bè®?+¯‰k¯9õ¯P/°C€°FÄ°s±E±CÅ±Q	²N[²�ª²G;³Œƒ³O´R`´C³´Q÷´NIµF˜µ9ßµ=¶=W¶4•¶PÊ¶M·Ei·B¯·Gò·I:¸H„¸BÍ¸=¹7N¹6†º*½ºèº »Y&»-€»'®»EÖ»
! ¼''¼8O¼>ˆ¼Ç¼(Ù¼/½2½+;½Zg½lÂ½+/¾=[¾)™¾ Ã¾ä¾;ô¾E0¿%v¿œ¿³¿#Ì¿#ð¿À +ÀLÀ)jÀ”À´À$ÏÀ$ôÀ*Á*DÁoÁŠÁ ¥ÁÆÁàÁìÁ#ýÁ!Â88Â;qÂE­Â‘óÂ…Ã1¤Ã.ÖÃÄ0#ÄLTÄ7¡ÄGÙÄ$!ÅFÅ*eÅE�ÅEÖÅlÆ‰Æ3¥Æ@ÙÆÇ52ÇhÇqÇˆÇ §Ç&ÈÇJïÇ8:ÈUsÈÉÈ:èÈ#É6É-IÉwÉI†ÉÐÉ@ÖÉ/Ê@GÊ;ˆÊ#ÄÊZèÊcCËO§Ël÷Ë8dÌd�ÌTÍvWÍ9ÎÍfÎQoÎKÁÎL
ÏSZÏ^®ÏD
Ð4RÐQ‡ÐQÙÐH+Ñ5tÑHªÑIóÑY=Ò,—Ò*ÄÒ6ïÒA&Ó3hÓLœÓ¤éÓ�ŽÔ·ÕVÖÕr-Öi ÖW
! ×Xb×—»×‘SØcåØ=IÙ‡Ù�Ù!­Ù#ÏÙ#óÙÚ.*ÚYÚ vÚ—ÚªÚ9¼Ú;öÚ2Û!MÛVoÛ3ÆÛ;úÛ"6Ü"YÜn|Ü3ëÜÝ9Ý-HÝ6vÝ,­Ý3ÚÝ<Þ/KÞ>{Þ-ºÞJèÞ23ß8fß/Ÿß&Ïß6öß,-àPZàH«à8ôà--áx[áeÔáB:â?}âF½â3ã98ã2rã-¥ã0Óã_äVdäZ»äEåA\åžå*¶åCáåH%æFnæJµæ@çpAçG²çEúçA@èq‚ègôès\éiÐéA:êQ|êwÎê[Fëb¢ëYìi_ìoÉì<9í\víUÓí)î[©îOïDUï^šï>ùï?8ðNxð;ÇðoñpsñJäñl/òIœò{æòRbókµóK!ô?môQ­ôMÿô_MõI­õ7÷õ9/ö&iö9�ö7Êö6÷9÷
Y÷<g÷(¤÷*Í÷:ø÷:3ø#nøW’øGêøY2ùZŒù\çù¬DúÌñú^¾ûnüfŒüvóüejýuÐý\Fþl£þJÿ:[ÿL–ÿžãÿ¾‚WAg™_oa^Ñn0UŸeõ)[%…|«œ(FÅVNc^²M]_D½T W!x7šFÒ 	::	&u	4œ	Ñ	-ê	
! #4
!  X
! y
! .’
! 0Á
! 7ò
! !*fL4³=èL&NsEÂ?
<H
8…
4¾
Nó
@B-ƒ(±,Ú& .Oj0H°(ùS"?v_¶=[T<°í?/E#u:™&Ô-û?)6i4 4Õ2
! -=5kˆ¡P*'{3£×?÷87p1‹½5Ø0*?Rjj½&(&O%v*œOÇ>7V6Ž;Åf9h;¢@Þ9<Y5–BÌ;+KBw7ºFòF91€?²;òR.0�4²1ç=%W>};¼pø!i %‹ A± 9ó '-!+U!5�!T·!,":9")t"Jž"?é"()#0R#>ƒ#<Â#Uÿ#PU$H¦$.ï$;%gZ%ŠÂ%)M&*w&4¢&<×&-'GB'/Š'º'Õ'8ð'8)(Rb(@µ(Tö(EK)U‘)Eç)M-**{*'¦*8Î*Z+4b+&—+v¾+l5,m¢,B-9S-=�-7Ë-Z.N^.8­.@æ.A'/?i/h©/&0590yo0mé0QW18©18â132jO2nº24)3)^31ˆ39º3ô3?4>K4HŠ4hÓ4;<5Hx5\Á5!6<@66}65´6,ê6477L7:„7;¿7!û7:86X8=�85Í8j9n9'Œ9Q´9::<A:0~:4¯:,ä:4;,F;<s;;°;+ì;<56<!l<*Ž<6¹<2ð<*#=6N=L…=]Ò=V0>R‡>=Ú>X?/q?4¡?4Ö?,@Q8@=Š@&È@&ï@2A3IAº}A:8BTsB+ÈB4ôB4)C>^C0�C-ÎCFüCECD3‰D/½D/íD@E)^E)ˆE²EÌEFæEE-F<sF3°FKäF!0G\RG!¯G-ÑG-ÿGC-H.qHF HçH8I,=I@jIB«I>îIf-JE”J!ÚJ!üJ'KBFK5‰K9¿K@ùKB:Lj}L(èL3M1EM:wMb²M1N.GN8vN5¯N;åN/!O/QO/�O/±O+áO*
P8PJWP¢P°ÀP­qQ1RÇQRDS*^S*‰S/´SMäS32T4fT@›T0ÜT@
U?NU:ŽU;ÉU8V&>V-eV,“V'ÀV(èV)WW;W4“W(ÈW"ñW#XB8X2{X5®X1äXY)-Y1WY=‰Y?ÇYDZELZD’ZE×Z2[_P[)°[:Ú[8\<N\/‹\/»\"ë\*]I9]4ƒ]C¸]Hü]1E^3w^«^-Ã^Cñ^:5_2p_-£_OÑ_(!`=J`ˆ`1§`Ù`$ø`2aPaga„aU£a-ùa.'b7Vb3Žb?Âb?c1Bcbtc1×c:	d0Dd+udA¡d.ãd*e2=e%pe2–e1Ée0ûe9,f1ff2˜f1Ëf+ýf,)g3Vg.ŠgD¹g7þg$6h+[h‡hN£h;òh6.i'eiU�iKãiG/jwj8Žj;Çj9ka=k9ŸkNÙkB(lBkl0®l�ßl@pmB±m;ômJ0n^{n^Ún9o-Xo'†oL®oDûo7@p+xp$¤p0Ép*úpA%q6gq3žq$Òq6÷q*.r.Yr9ˆrÂr,âr0s5@s,vs.£s0Òs%t7)t&atCˆt:ÌtuN$u/su6£uCÚu@v%_vB…v$ÈvívKw*Ww'‚wªw'Èw0ðw!x"<x?_x Ÿx#Àx0äx(y?>yF~y:Åy/z$0zaUzY·z.{e@{1¦{3Ø{H|+U|"�|1¤|>Ö|4})J}4t}$©}/Î}9þ}18~Àj~5+<aEžMä@2€Ds€1¸€Pê€‚;�V¾�4‚EJ‚G�‚9Ø‚KƒV^ƒLµƒ/„12„Ed„6ª„3á„@…eV…?¼…/ü…=,†ij†LÔ†C!‡5e‡X›‡<ô‡C1ˆ3uˆ0©ˆ7Úˆ‰E)‰2o‰+¢‰+Î‰>ú‰-9Š>gŠ¦ŠÅŠäŠ<üŠE9‹<‹;¼‹Eø‹F>Œ6…ŒI¼ŒS�XZ�7³�Wë�.CŽ>rŽ±Ž&ÍŽôŽ
�$,�#Q�8u�T®�-�m1�\Ÿ�2ü�Z/‘7Š‘]Â‘5 ’EV’Qœ’Bî’c1“i•“mÿ“m”'Œ”+´”,à”@
•*N•Xy•4Ò•)–61–9h–*¢–LÍ–*—6E—*|—C§—Fë—?2˜Xr˜@Ë˜!™*.™%Y™™@‘™Ò™oä™0Tš1…šE·š3ýš51›(g›)�›0º›Më› 9œ!ZœB|œ!¿œBáœF$�8k�g¤�`žKmžU¹žLŸ_\ŸJ¼Ÿ; 4C .x /§ 8× ¡0+¡0\¡@�¡,Î¡Rû¡VN¢Q¥¢U÷¢9M£)‡£Q±£l¤ap¤AÒ¤4¥2I¥Z|¥P×¥i(¦t’¦"§M*§<x§Bµ§=ø§G6¨K~¨nÊ¨`9©/š©-Ê©=ø©6ª9RªVŒª4ãª0«?I«A‰«TË«? ¬C`¬,¤¬UÑ¬4'­W\­/´­&ä­$®"0®%S®"y®:œ®G×®)¯XI¯/¢¯Ò¯Hñ¯):°Jd°B¯°1ò°Q$±.v±/¥±NÕ±E$²Kj²¶²OÕ²H%³Fn³Eµ³8û³H4´1}´,¯´"Ü´8ÿ´=8µ@vµ?·µ2÷µ3*¶"^¶&�¶I¨¶1ò¶#$·CH·eŒ·&ò·/¸4I¸.~¸&­¸+Ô¸:¹;¹EM¹/“¹ Ã¹Aä¹&º&Dº'kº(“º#¼º+àº&»73»Bk»H®»(÷»Y ¼%z¼= ¼HÞ¼)'½$Q½%v½:œ½]×½75¾$m¾<’¾6Ï¾G¿,N¿G{¿*Ã¿,î¿8À<TÀ1‘À.ÃÀòÀNÁ1aÁJ“ÁEÞÁ0$Â€UÂlÖÂ2CÃjvÃIáÃO+Ä5{Ä@±Ä.òÄ^!Å+€ÅB¬Å5ïÅ(%ÆfNÆkµÆ|!Ç>žÇ2ÝÇMÈ'^È"†È&©È<ÐÈ+
É#9É]É|ÉUœÉ_òÉ^RÊM±ÊEÿÊ8EË-~Ë;¬ËGèË0Ì,NÌ'{Ì&£ÌTÊÌ.ÍFNÍK•ÍMáÍ)/Î!YÎG{Î$ÃÎ9èÎ$"Ï&GÏ5nÏ>¤ÏKãÏ¢/Ð'ÒÐ7úÐ72Ñ5jÑ? ÑLàÑF-ÒJtÒP¿ÒÓ Ó(<Ó5eÓ3›ÓiÏÓ%9Ô?_ÔŸÔ®ÔÍÔèÔ4Õ8ÕGÕ7dÕBœÕLßÕB,Ö6oÖ,¦Ö=ÓÖ^×bp×™Ó×’mØzÙY{ÙIÕÙOÚ,oÚEœÚ+âÚ>Û,MÛ+zÛE¦ÛDìÛJ1ÜX|Ü?ÕÜLÝMbÝ:°Ý?ëÝE+ÞqÞ ‰Þ$ªÞ4ÏÞ(ß'-ß:UßJ�ß/Ûß+à,7à)dà,ŽàD»à1á92áAlá*®á3Ùá8
âFâJdâK¯â©ûâ6¥ã<Üã'ä-AäEoäKµäHå/JåHzåÃåKÝåS)æ.}æJ¬æ@÷æ!8çBZç8�ç3Öç3
! èR>è(‘è#ºè-Þè:é/GéWwéIÏé0êJJê`•êZöê?QëX‘ë-êëXìKqìS½ì~í”�í0%îEVî.œî;Ëî:ïBï?_ï3Ÿï2Óï<ð,Cð5pð5¦ðkÜð*Hñ1sñw¥ñ3ò2Qò,„ò7±ò3éò'ó(Eó^nó=Íó=ôCIôG�ôoÕô5Eõ0{õ;¬õ(èõ<ö3Nö(‚ö?«ö+ëö5÷4M÷2‚÷,µ÷'â÷D
! ø5Oø)…ø(¯ø%Øø2þøQ1ùoƒùIóù)=ú!gúX‰ú(âúû+*ûJVû)¡û:Ëû3ü=:ü!xü9šüpÔü8Eý/~ý$®ý%Óý+ùýE%þ\kþbÈþ2+ÿ[^ÿ[ºÿ-(Dm"†/©%Ù6ÿ/6#f/Š<º.÷0&7W$�5´3ê9=XG–Þ*þ%)Oj'ˆ@°ñ÷l%,’*¿/ê,Gdu
! ‘#œ*À.ë(-&V"}J ë
! #+CFoM¶J	jO	Nº	(	
! 2
! +R
! p~
! ï
! #%%4K€‘¬Ê+ç?.=n>¬Aëv-
¤
FÁ
S/\-ŒºØ@ö7 Kl:ƒ9¾9ø"23U!‰«)Ä*î09J#„$¨AÍ")#L-p3ž/Ò,<AF~Å*à.+:4f7›SÓG':o%ª!Ð*ò9,V-ƒ5±œçª„J/Kz¨Æ¸oX(f�KèL4´�¨6\ßd<<¡ÄÞ¸£d\lÁ€. =¯ >í (,!1U!2‡!5º!,ð!*"2H"){",¥"/Ò"o#kr#0Þ#X$]h$aÆ$$(%M%Wm%-Å%#ó%E&F]&4¤&FÙ&/ 'DP'.•'$Ä'Vé'@(*[(†(0˜(=É() )!@) b)1ƒ)Dµ)Eú) @*Da*{¦*0"+6S+)Š+#´+'Ø+",&#,J,#j,'Ž,"¶,6Ù,-->-0P-"�-"¤-/Ç-]÷-5U.c‹.ï./0/KJ/'–//¾/.î/0‘=0'Ï0 ÷001%I1Zo15Ê1<2=2&]23„2O¸2F3&O3&v3�3#»3ß3ü34H34|4[š4<ö4=35=q5 ¯5$Ð5:õ51060b6B“6;Ö6?7?R7’7«7Á7ß7Vò70I84z8`¯8S9d9$ƒ9¨9#Æ9'ê9$:7:6V:D�:Ò: ð:;#;9;%X;~;%�;³;$Ê;ï;<!'<I<h<‡<-¢<Ð<-ë<%=?=.[=Š=¨=3È=ü=>1>]C>¡>+·>,ã>/?#@?0d?/•?#Å?é?,@5@I@,h@F•@@Ü@?A6]A?”AVÔAK+BWwB<ÏBC'C69CpCA�C+ÒC+þC*D=DTD-nD.œD6ËD=EP@E‘E!¯E*ÑE-üE.*F6YF=�F.ÎF/ýF7-G>eGR¤G\÷GcTH9¸H=òH0I!NI(pIL™IHæI /J5PJ)†J)°J"ÚJ#ýJ!K.<KkKK{KSÇKYLJuL@ÀLqMsM+’MG¾M>N@EN�†NYOºqO],P‚ŠPR
Q2`QT“Q,èQ-R5CR<yRR¶R$	S(.S=WSI•S#ßS!T.%T>TT“TªT;ÄT(U)UYDU.žUMÍU=VNYV.¨V+×V2W56W-lW5šW8ÐW0	X5:X@pXK±XNýX7LY8„Y;½Y3ùY;-Z>iZ6¨ZGßZ@'[Ph[U¹[b\4r\7§\Cß\F#](j] “]‚´]‚7^º^CÓ^_6_#V_(z_0£_5Ô_
! ` `"/`"R`}u`5ó`2)a \a)}aj§a6b4Ib~bFœbGãbO+c^{c~ÚcVYd?°dOðdQ@eM’eNàe3/f>cfK¢f9îfE(gGng8¶gPïgC@hJ„h1Ïh2i54i*ji)•iC¿ifj_jjÊj1éjk5k<Tk-‘k6¿k2ök1)l3[l5�l7Ål2ýl'0mIXm-¢m4Ðm6n)<n&fn$�nJ²nNýnPLo>�o[Üo@8p%yp5ŸpEÕp,q1Hq%zqG qQèqA:r)|r#¦r!Êr0ìrLs,js%—s.½s1ìs2tGQtK™t,åtMu,`u;�uXÉu="v<`vO�vZív<Hw.…w5´w8êw<#x*`x‹x)«x%Õx)ûx)%yOyhy‚y<žy3Ûy0z@zGVz9žz3Øz4{-A{o{+�{"¹{QÜ{1.|A`|U¢|(ø|!!},C}p}/�}*¿}Eê}B0~7s~/«~KÛ~''2O=‚BÀ@€7D€-|€-ª€3Ø€.�(;�(d�*��@¸�+ù�8%‚.^‚)�‚1·‚Gé‚K1ƒJ}ƒ3Èƒ,üƒK)„&u„,œ„"É„=ì„,*…'W…1…>±…#ð…'†9<†0v†'§†3Ï†!‡-%‡.S‡5‚‡0¸‡/é‡(ˆ1Bˆ)tˆ*žˆ3ÉˆOýˆ6M‰ „‰0¥‰2Ö‰-	Š 7Š?XŠ+˜Š.ÄŠ-óŠ+!‹M‹ _‹€‹\ž‹/û‹'+ŒSŒ+lŒ,˜Œ5ÅŒ1ûŒ+-�*Y�„�*›�'Æ�$î�*Ž0>Ž(oŽ˜Ž,²Ž]ßŽ;=�_y�0Ù�)
! � 4�2U�Eˆ�)Î�<ø�"5‘'X‘€‘Y›‘-õ‘+#’O’a’vw’;î’F*“q“‰“©“-Å“ ó“S”Mh”R¶”Z	•Od•G´•ü•–$$–XI–1¢–\Ô–L1—I~—MÈ—K˜Zb˜k½˜K)™Zu™dÐ™+5š,aš/Žš#¾š0âš/›#C›-g›,•›&Â›é›<œ=œ.Tœ3ƒœ+·œIãœ -�;N�HŠ�>Ó�Hž[žnž…žŸž½ž7Ýž0Ÿ?FŸ†Ÿ,¥Ÿ#ÒŸ,öŸ# @ [ 'v ž ¶ )Ó "ý 4 ¡$U¡8z¡³¡(Ì¡fõ¡\¢+y¢J¥¢;ð¢$,£CQ£<•£5Ò£*¤.3¤b¤F|¤-Ã¤ñ¤"
! ¥i-¥—¥+ª¥>Ö¥'¦:=¦x¦�¦«¦Ä¦ß¦ù¦5§=A§)§©§¿§Ú§õ§0¨0A¨r¨.„¨1³¨1å¨,©6D©C{©¿©-×©0ª06ª$gª&ŒªG³ª2ûª'.«V«Eu«-»«'é«5¬4G¬.|¬<«¬Kè¬#4­X­.t­N£­Kò­+>®j®Š®A©®ë®"¯.¯G¯g¯-¯)­¯×¯)÷¯!° <°#]°�°—°V²°	±$)±N±2m± ±?¹±&ù± ²7².O²5~²´²_Ï²'/³W³,t³9¡³*Û³+´2´6´V´-s´A¡´"ã´"µ)µGFµDŽµ)ÓµEýµ"C¶/f¶0–¶GÇ¶·!*·L·l·"Œ·1¯·6á·$¸8=¸8v¸d¯¸O¹=d¹C¢¹Hæ¹,/ºB\º.Ÿº4Îº7»3;»@o»;°»Hì»T5¼GŠ¼?Ò¼W½Ej½;°½5ì½A"¾Wd¾6¼¾9ó¾;-¿Ti¿4¾¿6ó¿4*ÀL_À8¬À<åÀ="Á>`Á?ŸÁZßÁI:ÂA„Â=ÆÂ6Ã6;Ã:rÃ4­Ã@âÃI#Ä<mÄNªÄ?ùÄQ9Å8‹ÅBÄÅKÆuSÆ5ÉÆsÿÆOsÇOÃÇIÈ8]È9–È<ÐÈF
É:TÉF�ÉGÖÉGÊIfÊ*°Ê=ÛÊ/Ë.IËAxËºËDÖËHÌ“dÌ&øÌWÍ`wÍbØÍ/;ÎLkÎ‚¸ÎA;Ï=}Ïl»ÏV(Ð)Ðf©ÐÑÎ'ÑiöÑ`ÒyÒ#•Ò%¹ÒoßÒ%OÓžuÓ)Ô5>ÔHtÔ½Ô=ÛÔSÕEmÕ:³Õ<îÕ>+Ö:jÖ>¥Ö=äÖO"×@r×E³×*ù×$Ø CØHdØa­Ø7ÙGÙ)gÙ‘Ù)§ÙBÑÙBÚ:WÚ'’Ú0ºÚ6ëÚ2"Û)UÛ*Û*ªÛGÕÛKÜ>iÜ.¨Ü%×Ü2ýÜ:0Ý:kÝ1¦Ý(ØÝÞ.Þ#HÞ"lÞ;�Þ(ËÞ,ôÞ+!ß%Mß:sß)®ß=Øß0àGàBfàH©àRòàGEát�á,â0/â/`â.�â"¿â+ââ-ã+<ã~hã�çã!wä ™ä&ºäÂáä¡¤åWFæIžæ èæ 	ç%*ç+Pç'|ç#¤ç$Èçíç+
è19è/kè›è;»è
! ÷èIéALé"Žé1±é"ãéFêdMêU²êiëPrëÃë'Ïë÷ë
! ì3ì4Oì\„ìOáì51í{gíKãí</îlî6…î¼î<ÍîP
! ï?[ï1›ï'Íï#õïOð+ið&•ð'¼ð•äð!zñ8œñmÕñ4Cò(xò<¡ò(Þòó*ó-CóPqóhÂó+ô:=ô3xô$¬ô9Ñô/õ;õ8Xõ0‘õ-ÂõCðõ'4öR\öN¯öDþöFC÷BŠ÷JÍ÷Hø>aø@ ø<áø8ùWùnùŒù?¨ùDèù'-ú@Uú –ú@·ú øú-ûGûgû*€û+«û×û ôûaü$wü#œü3Àü*ôü-ý#Mýqý.�ý-¾ýìýUþA[þ�þ,·þ&äþBÿ¢Nÿ"ñÿ++@+l˜-¶Xä+=5i#ŸÃpÝN'n–#²'ÖþO0!€"¢3ÅMù G5hGž9æ %4Zou&å5BS-k™7²,ê +8'd"Œ!¯5Ñ$,<H7…,½5ê@ 	Ka	N­	#ü	 
! !@
! %b
! #ˆ
! P¬
! Vý
! /T„¤Â#Ù0ý>.m(ƒ)¬Öò
&
!8
Z
p
.‹
:º
Qõ
Ge{1™#Ë0ï& 
GUfim.}¬´¼$Ð>õ04#e>‰=È-=41r¤(«,Ô
42=KpK¼CL9f2 9Ó<
JS9pªÃÝ#öO.j5™9Ï5	?fT'»8ã!;><z0·4è>\/w§2¾*ñ.)K&u'œ&Ä&ë%#8'\%„(ª Ó$ô ":,]2Š½Ý*ü,'.T$ƒ¨*ÁXìAE1‡¹Ñ)í-7AeJ§^ò?Q?‘)Ñ8û34 5h Yž aø 6Z!<‘!DÎ!2"JF"-‘"F¿"4#-;#4i#/ž#Î#4î#/#$S$6o$ô¦$›%¶%Ì%8ì%0%&3V&7Š&>Â&$'5&',\'.‰',¸'1å'3(2K(~(6š(1Ñ($)0()BY)œ)7£)Û)û)*#+*O* o*+�*¼*Ã*Ô*å*ù*++6+R+r+…+˜+:¯+)ê+ ,5,JT,CŸ,2ã,-.-(N-6w-®->Ë-4
! .,?.Tl.Á.È.,Ï.ü.
! /"/)=/g//€/(°/*Ù/:0?0[0v07“0(Ë0ô0413I1$}1$¢1Ç1#Ý15272K2[2)x2H¢2Fë2G23(z3#£3:Ç3@43C48w43°4#ä4/585R5#m5‘5'š5Â56Ü5
6!!6 C6'd6 Œ6$­60Ò67
7 ,7M7d7z7“7­7¼7-Ú7"8!+8)M8Cw8P»8999 9$)93N9‚9ž9.¾91í9::>Z:™:²:»:Ä:Í:Ö:!ß:;;*;3;@;I;R;"[;~;‡;£;¬;V°;A<BI<~Œ<°=L¼=g	>q>{‘>g
?Œu?U@-X@G†@Î@6î@n%A<”A5ÑA,B4BJB‰VB^àBr?Co²C"D
@D*ND<yD.¶DåDE5E
TE€bEãE/éE’F(¬F+ÕF.G+0G-\G�ŠG]H^yHZØHc3I^—I€öIjwJQâJ|4Kn±K3 LATLk–L5M'8M7`M.˜M5ÇM3ýM81N.jN™N[µN“OŒ¥OW2PcŠPGîPJ6QG�Q©ÉQ+sR1ŸRJÑR5S:RS$�S ²S¯ÓS+ƒT¯TÉTãToüT)lU³–U4JVNV.ÎV>ýV<<WeyW;ßW‘X:­X“èX'|YE¤YWêY>BZS�ZYÕZL/[L|[¢É[?l\@¬\Qí\8?]bx]BÛ]Q^Ep^O¶^s_qz_eì_aR`P´`³aP¹aŠ
! bl•b„cV‡c<Þc5d=Qd¦�d|6e‰³ed=f}¢fq gA’gKÔg< h0]h-Žh8¼hLõhQBiB”iG×iQjHqjIºjZkZ_kLºkVlH^lD§lJìl?7m=wmBµm�ømCznD¾n7o6;oDroA·o*ùoG$pMlp�ºp9<qKvq;Âq?þqE>r5„rHºrbs{fsJâsb-tY�tAêt9,u1fuB˜uÑÛur­vN w9ow6©wZàw9;xiux]ßxX=y;–yEÒyQz@jz2«zFÞzX%{b~{Uá{[7|‡“|M}ai}@Ë}V~;c~óŸ~Y“FíH4€S}€NÑ€H �@i�$ª�@Ï�W‚9h‚P¢‚ló‚\`ƒB½ƒ„„T…„PÚ„I+…Fu…N¼…†H‡GY‡~¡‡y ˆLšˆ`çˆ:H‰bƒ‰@æ‰S'ŠR{Š>ÎŠ:
‹dH‹Q­‹'ÿ‹*'ŒCRŒ/–ŒAÆŒL�6U�RŒ�Eß�C%ŽBiŽ_¬Ž6�+C�?o�@¯�=ð�:.�Ai�C«�Gï�27‘7j‘?¢‘Bâ‘Z%’^€’Lß’Z,“@‡“+È“;ô“.0”+_”°‹”I<•C†•)Ê•Mô•7B–7z–+²–AÞ–J —*k—*–—,Á—(î—7˜O˜1m˜=Ÿ˜OÝ˜*-™rX™VË™"šy=š%·šIÝš‹'›;³›Tï›ODœ"”œH·œD�5E�[{�K×�B#žQfž?¸žKøž?DŸ„Ÿ7¡Ÿ8ÙŸu Lˆ iÕ =?¡:}¡$¸¡AÝ¡7¢3W¢,‹¢!¸¢=Ú¢#£J<£I‡£QÑ£-#¤+Q¤,}¤Uª¤³¥s´¥q(¦‡š¦þ"§o!¨y‘¨W©Vc©Yº©#ªB8ªU{ªZÑªH,«¶u«,¬#D¬h¬#�¬6¥¬[Ü¬>8­w­ÂŒ­4O®?„®Ä®3Ð®¯(¯9¯0R¯ƒ¯4¡¯!Ö¯"ø¯°!'°
! I°T°c°w°„°›°®°¶°!¿°	á°ë°û°
! ±±,±8±S±n±�±Ž±›±«±½±Ò±	å±ï±ü±²²	/²
! 9²%D²Xj²ZÃ²[³\z³J×³V"´Ny´"È´7ë´O#µ'sµ6›µ6ÒµU	¶J_¶3ª¶FÞ¶%·9B·|·[”·3ð·$¸=¸Z¸@n¸B¯¸?ò¸-2¹0`¹G‘¹GÙ¹E!º5gº,�ºÊº?áº3!»cU»5¹»0ï»E ¼)f¼5�¼PÆ¼X½p½+€½0¬½HÝ½\&¾$ƒ¾+¨¾:Ô¾¿A&¿@h¿%©¿Ï¿é¿JÀQÀ-nÀPœÀSíÀwAÁC¹Á'ýÁ7%Â5]Â?“Â=ÓÂ7Ã:IÃA„ÃGÆÃ1Ä.@Ä)oÄ:™Ä"ÔÄ ÷Ä/ÅHHÅJ‘Å'ÜÅ>ÆCÆEÃÆŽ	Çy˜ÇPÈXcÈ/¼ÈyìÈ=fÉ1¤ÉqÖÉoHÊ.¸Ê0çÊUËŸnË=ÌULÌO¢ÌgòÌeZÍVÀÍWÎWoÎEÇÎB
ÏJPÏ)›Ï:ÅÏ"Ð)#Ð|MÐÊÐlÝÐJÑâcÑBFÒ7‰Ò)ÁÒ#ëÒÓ$Ó9ÓNÓ'cÓ‹Ó©Ó°Ó$ÂÓçÓ+Ô#3ÔWÔ/wÔ%§Ô"ÍÔðÔÕ((ÕhQÕ%ºÕVàÕ]7ÖH•ÖJÞÖ0)×FZ×d¡×?ØmFØl´ØI!ÙHkÙC´ÙHøÙGAÚB‰ÚOÌÚ(ÛHEÛKŽÛ2ÚÛ6
ÜlDÜe±ÜMÝeeÝWËÝ8#Þ?\ÞUœÞmòÞ3`ß2”ß*Çß4òßQ'à#yà+�à1Éà'ûà5#áVYám°á{â@šânÛâ+JãvãF”ã*Ûã'ä&.ä'Uä@}ä9¾äSøä#Lå!påJ’å>ÝåZæ.wæ¦æ%ÄæDêæK/ç{ç;™ç:Õç^èKoè?»èûè;é0Wé$ˆé<­éêé(ê/ê$MêFrê%¹ê6ßê6ë)MëVwëNÎëXìGvì4¾ìtóì@hí:©íäí9îO>îFŽî/Õî#ï2)ï1\ïHŽï>×ïhð1ð/±ðMáðg/ñ_—ñ\÷ñUTò>ªòJéòG4óG|óRÄó6ô+Nô.zôh©ôOõKbõ8®õCçõS+ödöQäö;6÷Br÷Iµ÷Xÿ÷bXø4»ø9ðøC*ù=nùC¬ù6ðù1'ú7YúH‘ú3Úú=ûOLû0œû0Íû*þû!)ü3Kü<ü*¼ü)çüPý6bý/™ý0Éý/úý/*þ0Zþ8‹þ5Äþ9úþ94ÿ6nÿ7¥ÿ.Ýÿ9	-F	:t	<¯	/ì	>	+[	(‡	.°	+ß	8	BD	:‡	Â	Jà	+	i@	ª	'¾	æ	n	o	oŠ	,ú	M'	
u	Hƒ	-Ì	7ú	72	>j	G©	4ñ	=&		Od		´		;Ð		(
! 	35
! 	 i
! 	Š
! 	m¨
! 	'	;>	Bz	9½	0÷	D(	Bm	D°	Bõ	G8
	G€
	?È
		&	bC	P¦	6÷	5.	5d	Cš	*Þ	[		8e	{ž	¨	XÃ	%	B	$`	G…	)Í	8÷	;0	Rl	+¿	9ë	)%	7O	R‡	:Ú	A	8W	%�	)¶	)à	t
! 	0	3°	8ä	.	9L	n†	Kõ	%A	g	&ƒ	1ª	7Ü	?	%T	%z	$ 	TÅ	2	ÕM	*#	1N	K€	DÌ	A	+S	&	%¦	$Ì	?ñ	/1	a	J}	#È	.ì	1	•M	tã	HX	9¡	[Û	<7 	Gt 	*¼ 	)ç 	X!	<j!	#§!	(Ë!	/ô!	N$"	Gs"	)»"	Nå"	24#	Mg#	)µ#	2ß#	;$	;N$	1Š$	¼$	0Ï$	G%	YH%	´¢%	kW&	:Ã&	Mþ&	L'	He'	1®'	dà'	BE(	Cˆ(	{Ì(	RH)	N›)	Bê)	)-*	1W*	y‰*	V+	=Z+	S˜+	Zì+	dG,	d¬,	E-	BW-	Cš-	CÞ-	".	@3.	
t.	&‚.	3©.	JÝ.	1(/	>Z/	<™/	BÖ/	,0	1F0	6x0	&¯0	'Ö0	8þ0	371	8k1	7¤1	+Ü1	,2	452	8j2	9£2	SÝ2	>13	p3	'‹3	,³3	;à3	44	BQ4	k”4	25	:35	*n5	/™5	%É5	ï5	!6	*6	F6	b6	+{6	§6	 Å6	/æ6	7	
57	:C7	G~7	FÆ7	@
8	N8	&f8	�8	.¨8	×8	6í8	2$9	DW9	œ9	¹9	:Î9	F	:	EP:	C–:	@Ú:	=;	JY;	>¤;	Eã;	)<	Q©<	Aû<	`==	'ž=	Æ=	;å=	!>	;1>	m>	~>	�>	¬>	.Á>	ð>	
! ?	I$?	<n?	5«?	5á?	3@	K@	(k@	5”@	Ê@	*æ@	#A	5A	>A	KA	.jA	.™A	0ÈA	8ùA	2B	RB	pB	EŽB	NÔB	G#C	kC	F„C	@ËC	>D	<KD	&ˆD	<¯D	5ìD	="E	`E	B€E	$ÃE	[èE	ADF	_†F	cæF	DJG	M�G	GÝG	_%H	8…H	+¾H	.êH	I	5I	GI	YI	5jI	" I	"ÃI	"æI		J	>!J	6`J	.—J	\ÆJ	9#K	K]K	R©K	2üK	5/L	;eL	8¡L	JÚL	I%M	DoM	M´M	GN	AJN	JŒN	+×N	YO	>]O	HœO	9åO	0P	FPP	/—P	,ÇP	ôP	4Q	=Q	YQ	7uQ	D­Q	EòQ	A8R	)zR	¤R	6ÄR	8ûR	.4S	3cS	6—S	CÎS	T	<(T	>eT	,¤T	3ÑT	%U	>+U	<jU	§U	ÀU	]àU	Y>V	Y˜V	TòV	%GW	9mW	5§W	1ÝW	5X	6EX	F|X	!ÃX	åX	YøX	WRY	=ªY	+èY	+Z	/@Z	?pZ	A°Z	òZ	
[	([	M:[	oˆ[	9ø[	K2\	=~\	O¼\	>]	PK]	8œ]	Õ]	-ô]	,"^	O^	<h^	A¥^	@ç^	>(_	<g_	¤_	5Â_	8ø_	<1`	n`	@‡`	+È`	.ô`	#a	:@a	7{a	³a	2Ña	(b	-b	.Mb	|b	!šb	+¼b	+èb	/c	(Dc	2mc	@ c	ác	!þc	7 d	EXd	žd	
·d	Åd	 Ôd	õd	
! e	1(e	1Ze	!Œe	!®e	Ðe	"ìe	f	ff	(…f	#®f	Òf	 ñf	1g	Dg	%Qg	%wg	(�g	Æg	3âg	0h	*Gh	)rh	>œh	`Ûh	6<i	?si	G³i	Hûi	ZDj	¯Ÿj	TOk	Q¤k	Tök	fKl	o²l	V"m	Wym	1Ñm	Sn	GWn	FŸn	Gæn	Q.o	L€o	$Ío	#òo	%p	*<p	>gp	¦p	*¼p	çp	/q	)0q	8Zq	C“q	×q	1ñq	7#r	E[r	7¡r	:Ùr	^s	ss	5’s	5Ès	?þs	B>t	"�t	0¤t	6Õt	vu	Wƒu	UÛu	L1v	4~v	t³v	?(w	"hw	n‹w	Lúw	@Gx	Tˆx	+Ýx	V	y	Y`y	0ºy	 ëy	z	8!z	!Zz	:|z	_·z	{	4{	 Q{	r{	‘{	O¦{	Mö{	(D|	m|	ƒ|	š|	±|	 Ñ|	!ò|	!}	#6}	#Z}	-~}	¬}	Ã}	Ý}	)ö}	X ~	]y~	Z×~	,2	9_	*™	4Ä	1ù	v+€	r¢€	L�	Kb�	W®�	B‚	kI‚	Eµ‚	Qû‚	8Mƒ	=†ƒ	¡Äƒ	 f„	Q…	/Y…	A‰…	jË…	f6†	3�†	2Ñ†	.‡	<3‡	p‡	?„‡	KÄ‡	$ˆ	(5ˆ	+^ˆ	EŠˆ	Ðˆ	.åˆ	*‰	!?‰	6a‰	7˜‰	#Ð‰	cô‰	OXŠ	7¨Š	#àŠ	7‹	#<‹	9`‹	%š‹	9À‹	%ú‹	K Œ	7lŒ	9¤Œ	%ÞŒ	K�	_P�	K°�	7ü�	^4Ž	r“Ž	Q�	eX�	O¾�	c�	)r�	<œ�	)Ù�	)‘	)-‘	'W‘	B‘	Â‘	*ß‘	'
! ’	'2’	+Z’	>†’	IÅ’	"“	:2“	Gm“	Hµ“	Fþ“	E”	;e”	1¡”	BÓ”	2•	MI•	C—•	+Û•	ú–	˜	'˜	-F˜	7t˜	¯¬˜	 \™	}™	kœ™	:š	¹Cš	Gýš	?E›	1…›	9·›	?ñ›	11œ	1cœ	[•œ	!ñœ	#�	O7�	)‡�	 ±�	JÒ�	0ž	;Nž	#Šž	'®ž	*Öž	:Ÿ	><Ÿ	#{Ÿ	OŸŸ	%ïŸ	? 	*U 	:€ 	>» 	ú 	<¡	O¡	0h¡	.™¡	È¡	#ä¡	¢	¢	/6¢	:f¢	O¡¢	?ñ¢	+1£	7]£	@•£	,Ö£	<¤	?@¤	q€¤	9ò¤	6,¥	7c¥	3›¥	3Ï¥	%¦	)¦	-;¦	2i¦	(œ¦	>Å¦	5§	?:§	=z§	=¸§	&ö§	L¨	Qj¨	R¼¨	K©	R[©	*®©	.Ù©	5ª	=>ª	#|ª	P ª	<ñª	&.«	&U«	L|«	É«	*ç«	+¬	)>¬	h¬	L~¬	9Ë¬	­	%­	)@­	6j­	*¡­	8Ì­	.®	,4®	-a®	-�®	6½®	ô®	*¯	*>¯	$i¯	3Ž¯	OÂ¯	*°	O=°	l�°	yú°	ut±	:ê±	u%²	D›²	 à²	'�³	ˆ©³	°2´	„ã´	¬hµ	¦¶	Î¼¶	)‹·	hµ·	4¸	IS¸	)�¸	ZÇ¸	7"¹	3Z¹	#Ž¹	²¹	JÃ¹	(º	"7º	"Zº	"}º	  º	 Áº	 âº	$»	$(»	$M»	"r»	"•»	"¸»	)Û»	,¼	)2¼	'\¼	9„¼	O¾¼	?½	,N½	*{½	2¦½	)Ù½	3¾	37¾	Rk¾	4¾¾	?ó¾	l3¿	L ¿	Kí¿	d9À	?žÀ	WÞÀ	96Á	0pÁ	=¡Á	4ßÁ	:Â	^OÂ	X®Â	nÃ	YvÃ	WÐÃ	\(Ä	J…Ä	[ÐÄ	D,Å	EqÅ	v·Å	#.Æ	$RÆ	#wÆ	!›Æ	1½Æ	‰ïÆ	yÈ	×‰É	@aÊ	(¢Ê	:ËÊ	@Ë	CGË	E‹Ë	ÑË	:ñË	+,Ì	8XÌ	M‘Ì	SßÌ	k3Í	ŸÍ	MºÍ	:Î	^CÎ	R¢Î	OõÎ	EÏ	-dÏ	C’Ï	FÖÏ	gÐ	f…Ð	^ìÐ	PKÑ	XœÑ	(õÑ	=Ò	M\Ò	 ªÒ	ËÒ	8çÒ	? Ó	B`Ó	£Ó	ºÓ	<ÎÓ	'Ô	*3Ô	“^Ô	ZòÔ	PMÕ	"žÕ	8ÁÕ	DúÕ	 ?Ö	2`Ö	V“Ö	3êÖ	$×	7C×	{×	;›×	.××	%Ø	,Ø	FØ	*]Ø	:ˆØ	*ÃØ	qîØ	8`Ù	.™Ù	DÈÙ	q
Ú	9Ú	"¹Ú	JÜÚ	9'Û	8aÛ	šÛ	,µÛ	âÛ	2ûÛ	5.Ü	9dÜ	:žÜ	*ÙÜ	 Ý	!%Ý	!GÝ	6iÝ	D Ý	4åÝ	,Þ	*GÞ	1rÞ	¤Þ	ÄÞ	;ßÞ	6ß	3Rß	.†ß	$µß	,Úß	?à	-Gà	,uà	9¢à	aÜà	<>á	={á	e¹á	:â	HZâ	,£â	-Ðâ	Xþâ	.Wã	†ã	$£ã	>Èã	*ä	2ä	 Pä	qä	F„ä	4Ëä	4å	5å	#Må	qå	)‰å	'³å	&Ûå	&æ	+)æ	CUæ	'™æ	'Áæ	3éæ	4ç	4Rç	3‡ç	"»ç	BÞç	?!è	%aè	 ‡è	B¨è	7ëè	3#é	6Wé	4Žé	FÃé	O
! ê	FZê	{¡ê	:ë	'Xë	€ë	Cœë	@àë	#!ì	Eì	6`ì	.—ì	4Æì	)ûì	%í	
! .í	*9í	.dí	+“í	7¿í	c÷í	?[î	>›î	AÚî	Âï	2ßï	vð	L‰ð	LÖð	L#ñ	9pñ	0ªñ	HÛñ	@$ò	=eò	>£ò	!âò	_ó	Idó	F®ó	Nõó	?Dô	"„ô	T§ô	üô	õ	A5õ	:wõ	>²õ	ñõ	 ö	(-ö	)Vö	"€ö	£ö	Áö	&Üö	I÷	?M÷	8�÷	*Æ÷	(ñ÷	ø	5ø	Tø	&qø	&˜ø	5¿ø	 õø	0ù	-Gù	(uù	žù	&·ù	+Þù	'
! ú	!2ú	Tú	!tú	!–ú	-¸ú	(æú	*û	":û	]û	}û	&�û	"Äû	)çû	,ü	 >ü	,_ü	+Œü	+¸ü	#äü	$ý	'-ý	*Uý	)€ý	2ªý	0Ýý	þ	G*þ	+rþ	3žþ	8Òþ	/ÿ	Q;ÿ	›�ÿ	")
! AL
! 1Ž
! -À
! )î
! :
! FS
! 6š
! PÑ
! ?"
! Tb
! Ž·
! :F
! =�
! 5¿
! )õ
! 
! +8
! -d
! "’
! Nµ
! P
! $U
! :z
! 8µ
! 7î
! 9&
! `
! <v
! 7³
! ?ë
! 5+
! 9a
! 3›
! 4Ï
! 9
! <>
! 6{
! 8²
! Aë
! ;-	
! 7i	
! G¡	
! %é	
! 
  
! ))
  
! ,S
  
! 5€
  
! "¶
  
! .Ù
  
! 
! "$
! G
! *T
! 
! �
! B 
! :ã
! 
! 9
! O
! j
! M…
! 0Ó
! .
! .3
! $b
! :‡
! 
Â
! AÐ
! a
! +t
! m 
! R
! ma
! ^Ï
! c.
! B’
! Õ
! ï
! 0
! 0=
! 0n
! 6Ÿ
! SÖ
! *
! E
! ib
! *Ì
! )÷
! 1!
! -S
! /�
! )±
! LÛ
! ,(
! bU
! E¸
! (þ
! d'
! oŒ
! Bü
! ?
! 1R
! *„
! *¯
! IÚ
! $
! >D
! ?ƒ
! OÃ
! I
! ]
! >|
! Š»
! 2F
! 0y
! 7ª
! 6â
! 7
! -Q
! ]
! 0Ý
! 
!  
! ,?
! &l
! )“
! $½
! Qâ
! 4
! S
!  s
! 7”
! %Ì
! (ò
! (
! $D
! i
! 'ˆ
! !°
!  Ò
! %ó
! / 
! I 
! d 
! ‚ 
! 1ž 
! &Ð 
! !÷ 
! (!
! :B!
! -}!
! «!
! 2Ê!
! $ý!
! .""
! (Q"
! z"
! >š"
! !Ù"
! /û"
! 9+#
! /e#
! %•#
! 8»#
! 5ô#
! *$
! /:$
! j$
!  ˆ$
! *©$
! "Ô$
! (÷$
! ! %
! 7B%
! )z%
! %¤%
! %Ê%
! ð%
! &
! +,&
! "X&
! {&
! #š&
! -¾&
! *ì&
! $'
! )<'
! /f'
! –'
! '¶'
! Þ'
! (ü'
! C%(
! 9i(
! £(
! ¿(
! ?Ù(
! !)
! 0;)
! $l)
! ‘)
! ,°)
! #Ý)
! ;*
! +=*
! i*
! v*
! ^ö*
! eU+
! M»+
! 	,
! ;(,
! 2d,
! *—,
! )Â,
! ì,
! )-
! &0-
!  W-
! 8x-
! !±-
! :Ó-
! .
! -.
! /B.
! <r.
! 7¯.
! 'ç.
! /
! 1//
! (a/
! 7Š/
! 4Â/
! ÷/
! *0
! >=0
! ?|0
! T¼0
! !1
! $31
! X1
! w1
! 8’1
! EË1
! 62
! HH2
! w‘2
! —	3
! x¡3
! «4
! Æ4
! tF5
! W»5
! ‚6
! h–6
! †ÿ6
! ¥†7
! ¬,8
! wÙ8
! (Q9
! z9
! Uš9
! 0ð9
! .!:
! 3P:
! 1„:
! L¶:
! 2;
! -6;
! :d;
! OŸ;
! )ï;
! O<
! Ki<
! 9µ<
! $ï<
! ==
! %R=
! x=
! 0–=
! .Ç=
! 9ö=
! 0>
! O>
! l>
! †>
! ¡>
! ¹>
! FÔ>
! "?
! =>?
! $|?
! !¡?
! &Ã?
! ;ê?
! (&@
! 7O@
! #‡@
! /«@
! NÛ@
! *A
! HA
! bA
! #€A
! 2¤A
! 1×A
! 	B
! + B
! LB
! )bB
! #ŒB
! 3°B
! !äB
! *C
! 11C
! &cC
! ŠC
! 1¨C
! VÚC
!  1D
! 0RD
! 0ƒD
! <´D
! ñD
! @E
! 0HE
! yE
! 2–E
! ,ÉE
!  öE
! (F
! ,@F
! 7mF
! #¥F
! 0ÉF
! úF
! ÊG
! #ãG
! cH
! _kH
! `ËH
! 4,I
! 6aI
! ¢˜I
! 8;J
! ,tJ
! 7¡J
! ÙJ
! ùJ
! -K
! +?K
! ¾kK
! >*L
! ÛiL
! vEM
! <¼M
! 7ùM
! d1N
!  –N
! =·N
! -õN
! '#O
! (KO
! ctO
! .ØO
! tP
! ‰|P
! !Q
! 3(Q
! ;\Q
! 1˜Q
! 0ÊQ
! $ûQ
! ' R
! "HR
! kR
!  †R
! 6§R
! !ÞR
! !S
! 6"S
! "YS
! )|S
! '¦S
! ,ÎS
! -ûS
! )T
! HT
! l_T
! ;ÌT
! 9U
! @BU
! YƒU
! /ÝU
!  
V
! -.V
! r\V
! QÏV
! ;!W
! (]W
! †W
!  W
! E¼W
! :X
! (=X
! fX
! .{X
! jªX
! gY
! 4}Y
! <²Y
! RïY
! +BZ
!  nZ
! ?�Z
! #ÏZ
! CóZ
! 7[
! =[
! =X[
! –[
! +¯[
! %Û[
! \
! \
! 8\
! "X\
! -{\
! ©\
! È\
! 9è\
! M"]
! p]
! Av]
! <¸]
! 8õ]
! K.^
! Iz^
! !Ä^
! Xæ^
! E?_
! …_
! ˜_
! «_
! *É_
! ô_
! `
! (`
! =`
! .[`
! CŠ`
! Î`
! ã`
! a
! a
! (=a
! fa
! .{a
! ªa
! IÀa
! 
! b
! / b
! #Pb
! =tb
! ²b
! +Çb
! $ób
! ,c
! `Ec
! (¦c
! NÏc
! 4d
! 0Sd
! „d
! -›d
! 2Éd
! "üd
! +e
! JKe
! ,–e
! Ãe
! Uße
! 05f
! Fff
! $­f
! ]Òf
! 10g
! 3bg
! 9–g
! =Ðg
! *h
! 49h
! <nh
! ;«h
! Nçh
! ‰6i
! CÀi
! #j
! +(j
! 3Tj
! 0ˆj
! '¹j
! áj
! %k
! +'k
! 5Sk
! ‰k
! ¦k
! %Åk
! ëk
! 	l
! $l
! Dl
!  `l
! �l
! *�l
! 1Èl
! 0úl
! ++m
! CWm
!  ›m
! "¼m
! Eßm
! ]%n
! fƒn
! .ên
! -o
! -Go
! 9uo
! 1¯o
! .áo
! %p
! 06p
! )gp
! 0‘p
! Âp
! :Ûp
! 2q
! Iq
! (cq
! 0Œq
! ½q
! !Îq
! Kðq
! \<r
! ™r
! H±r
! 4úr
! )/s
! Ys
! `ss
! 6Ôs
! $t
! 
0t
! 5>t
! 1tt
! &¦t
! "Ít
! ðt
! 2u
! &8u
! _u
! /zu
! ?ªu
! =êu
! $(v
! Mv
! ']v
! ?…v
! Åv
! 'åv
! B
w
! Pw
! mw
! 3Šw
! 0¾w
! .ïw
! $x
! /Cx
! <sx
! 1°x
! âx
! õx
! &y
! 59y
! oy
! "Šy
! &­y
! *Ôy
! )ÿy
! ;)z
! ez
! K„z
! -Ðz
! 7þz
! :6{
! 3q{
! -¥{
! 1Ó{
! 2|
! 8|
! .X|
! 0‡|
! <¸|
! 5õ|
! 5+}
! 1a}
! /“}
! -Ã}
! ñ}
! *~
! ,6~
! ;c~
! )Ÿ~
! qÉ~
! O;
! .‹
! $º
! ?ß
! -€
! )M€
! 5w€
! V­€
! %�
! Y*�
! „�
! $Ÿ�
! +Ä�
! 7ð�
! /(‚
! FX‚
! -Ÿ‚
! @Í‚
! 4ƒ
! qCƒ
! !µƒ
! ×ƒ
! íƒ
! 4„
! >9„
! 0x„
! A©„
! =ë„
! 6)…
! -`…
! 2Ž…
! Á…
! !Û…
! 8ý…
! 66†
! -m†
! E›†
! á†
! [ü†
! ;X‡
! D”‡
! Ù‡
! 9ñ‡
! H+ˆ
! :tˆ
! 7¯ˆ
! :çˆ
! 7"‰
! <Z‰
! 6—‰
! =Î‰
! ;Š
! :HŠ
! <ƒŠ
! FÀŠ
! *‹
! 2‹
! +O‹
! *{‹
! ¦‹
! &²‹
! 6Ù‹
! 'Œ
! @8Œ
! $yŒ
! OžŒ
! =îŒ
! =,�
! ?j�
! ª�
! (Â�
! Jë�
! >6Ž
! 2uŽ
! A¨Ž
! ;êŽ
! &&�
! ZM�
! ?¨�
! mè�
! %V�
! „|�
! U‘
! CW‘
! 9›‘
! ;Õ‘
! `’
! r’
! sƒ“
! \÷“
! (T”
! �}”
! 1•
! 2=•
! 2p•
! F£•
! 0ê•
! 3–
! 6O–
! *†–
! '±–
! ?Ù–
! 8—
! <R—
! +�—
! >»—
! ?ú—
! 3:˜
! Rn˜
! !Á˜
! xã˜
! D\™
! 9¡™
! IÛ™
! 9%š
! _š
! !}š
! 
Ÿš
! 
­š
! 3»š
! Hïš
! '8›
! /`›
! G�›
! -Ø›
! 'œ
! :.œ
! Giœ
! ±œ
! MÑœ
! _�
! ,�
! B¬�
! >ï�
! N.ž
! W}ž
! Õž
! 4éž
! .Ÿ
! >MŸ
! LŒŸ
! SÙŸ
! o- 
! /� 
! >Í 
! K¡
! JX¡
! ~£¡
! U"¢
! 9x¢
! 7²¢
! 7ê¢
! ?"£
! Zb£
! "½£
! Zà£
! \;¤
! ‰˜¤
! #"¥
! F¥
! 
[¥
! Fi¥
! E°¥
! 4ö¥
! +¦
! @A¦
! @‚¦
! 0Ã¦
! ô¦
! :§
! I>§
! >ˆ§
! CÇ§
! 2¨
! ,>¨
! @k¨
! D¬¨
! Cñ¨
! 95©
! Jo©
! 8º©
! ó©
! ª
! +ª
! )Aª
! kª
! …ª
! -¡ª
! Ïª
! åª
! &«
! 4(«
! 4]«
! 4’«
! %Ç«
! 0í«
! 0¬
! 0O¬
! F€¬
! +Ç¬
! Fó¬
! 0:­
! &k­
! $’­
! B·­
! .ú­
! )®
! &B®
! i®
! €®
! “®
! «®
! ¿®
! )Ô®
! þ®
! ¯
! &¯
! -<¯
! j¯
! ¯
! 6”¯
! Ë¯
! Þ¯
! ñ¯
! °
! "°
! 5°
! I°
! e°
! x°
! ˜°
! ¯°
! Ï°
! æ°
! ±
! ±
! :±
! N±
! Lg±
! :´±
! Dï±
! B4²
! Ew²
! /½²
! Lí²
! 8:³
! 4s³
! /¨³
! -Ø³
! H´
! IO´
! M™´
! Mç´
! ¹5µ
! #ïµ
! ¶
! -¶
! G¶
! a¶
! $|¶
! 4¡¶
! &Ö¶
! /ý¶
! 2-·
! ;`·
! œ·
! &¶·
! Ý·
! *÷·
! 9"¸
! M\¸
! 0ª¸
! 0Û¸
! ,¹
! 9¹
! W¹
! !v¹
! ˜¹
! ¸¹
! Ó¹
! í¹
! º
! !º
! ;º
! [º
! vº
! ‘º
! ¬º
! 8Çº
! »
! 8»
! T»
! o»
! Š»
! ¥»
! !À»
! â»
! û»
! ¼
! .2¼
! a¼
! }¼
! ™¼
! #µ¼
! ,Ù¼
! 4½
! ;;½
! w½
! #”½
! *¸½
! )ã½
! A
¾
! 2O¾
! '‚¾
! "ª¾
! "Í¾
! ;ð¾
! 0,¿
!  ]¿
! "~¿
! !¡¿
! !Ã¿
! $å¿
  $
! À
! 9/À
! 6iÀ
! = À
! AÞÀ
! / Á
! -PÁ
! 1~Á
! E°Á
! :öÁ
! 01Â
! nbÂ
! 5ÑÂ
! 0Ã
! <8Ã
! EuÃ
! ,»Ã
! 3èÃ
! >Ä
! 4[Ä
! :�Ä
! 4ËÄ
! LÅ
! MÅ
! 'kÅ
! #“Å
! '·Å
! =ßÅ
! #Æ
! (AÆ
! .jÆ
! 9™Æ
! )ÓÆ
! 6ýÆ
! -4Ç
! >bÇ
! 2¡Ç
! 0ÔÇ
! 0È
! +6È
! /bÈ
! /’È
! /ÂÈ
! ,òÈ
! $É
! DÉ
! ]bÉ
! ÀÉ
! 6ØÉ
! AÊ
! @QÊ
! ’Ê
! @°Ê
! ;ñÊ
! D-Ë
! #rË
! >–Ë
! AÕË
! 7Ì
! :OÌ
! 2ŠÌ
! 5½Ì
! 2óÌ
! &Í
! KBÍ
! NŽÍ
! ÝÍ
! úÍ
! Î
! *4Î
! -_Î
! 6�Î
! 'ÄÎ
! ìÎ
! QÏ
! ZÏ
! 'uÏ
! �Ï
! ¸Ï
! -ÓÏ
! (Ð
! ,*Ð
! ,WÐ
! ,„Ð
! )±Ð
! ÛÐ
! ,öÐ
! 6#Ñ
! 'ZÑ
! L‚Ñ
! LÏÑ
! <Ò
! <YÒ
! B–Ò
! +ÙÒ
! )Ó
! /Ó
! 1NÓ
! .€Ó
! .¯Ó
! LÞÓ
! k+Ô
! —Õ
!  ·Õ
! 6ØÕ
! JÖ
! XZÖ
! (³Ö
! 'ÜÖ
! ×
! )×
! @I×
! 4Š×
! I¿×
! U	Ø
! C_Ø
! &£Ø
! VÊØ
! !Ù
! \0Ù
! P�Ù
! PÞÙ
! U/Ú
! !…Ú
! +§Ú
! AÓÚ
! 9Û
! OÛ
! 7lÛ
! =¤Û
! 9âÛ
! 1Ü
! &NÜ
! ¡uÜ
! BÝ
! #ZÝ
! :~Ý
! 7¹Ý
! }ñÝ
! <oÞ
! G¬Þ
! >ôÞ
! ¯3ß
! :ãß
! à
! C7à
! N{à
! jÊà
! :5á
! pá
! �á
! 8Ÿá
! Øá
! ;÷á
! 3â
! Pâ
! mâ
! 4ˆâ
! L½â
! M
! ã
! -Xã
! †ã
! D˜ã
! "Ýã
! Dä
! Eä
! :\ä
! —ä
! <®ä
! Dëä
! L0å
! >}å
! 5¼å
! :òå
! 6-æ
! Idæ
! C®æ
! Eòæ
! +8ç
! +dç
! L�ç
! )Ýç
! 2è
! K:è
! J†è
! JÑè
! /é
! Lé
! +\é
! "ˆé
! F«é
! (òé
! 6ê
! =Rê
! =�ê
! 3Îê
! Dë
! 5Gë
! M}ë
! OËë
! (ì
! 9Dì
! 4~ì
! %³ì
! 0Ùì
! J
! í
! ,Uí
! 8‚í
! (»í
! 1äí
! Rî
! Ciî
! H­î
! 'öî
! Fï
! 9eï
! VŸï
! öï
! Dð
! 'Yð
! @�ð
! .Âð
! 0ñð
! !"ñ
! <Dñ
! F�ñ
! 6Èñ
! .ÿñ
! C.ò
! Crò
! 1¶ò
! ,èò
! 2ó
! DHó
!  �ó
! 1®ó
! àó
! =ÿó
! :=ô
! Pxô
! &Éô
! <ðô
! 8-õ
! Ffõ
! -­õ
! Ûõ
! !ùõ
! 1ö
! 9Mö
! @‡ö
! NÈö
! +÷
! EC÷
! ?‰÷
! ]É÷
! 9'ø
! 2aø
! 2”ø
! 2Çø
! Núø
! PIù
! >šù
! >Ùù
! ,ú
! EEú
! H‹ú
! EÔú
! 0û
! 6Kû
! ,‚û
! 6¯û
! Uæû
! !<ü
! ^ü
! a}ü
! Ußü
! 35ý
! /iý
! 2™ý
! $Ìý
! "ñý
! )þ
! &>þ
! Feþ
! 2¬þ
! $ßþ
! Nÿ
! ASÿ
! ?•ÿ
! 5Õÿ
! rt~•ó–‰— 9¸còGV?ž:Þ8%R)x¢#Â#æ-
! ‰8=Â93:MnK¼W2`%“&¹;à:&WU~Ô&ñ&	/?	2o	/¢	8Ò	4
! !@
! +b
! 2Ž
! -Á
! %ï
! )%?&eŒ2©/Ü&',N.{aªŒ
L™
Sæ
T:j�4ú'/WŠw2QQ£2¬2ß.'Ai%¥2Ä÷-2B7u2­=à88W=�8Î6;>4z9¯4é94XE�7Ó-S9.�1¼î#2*.]*ŒF·KþIJI”EÞG$lHìT5Š0¤,ÕHLKc˜Fü¾C•P˜öéDà%8P&b‰Ÿ¯¿Òé	 
!    > ,X '… @­ ,î [!0w!*¨!LÓ!- "+N"@z">»"5ú",0#7]#•#X®#<$,D$?q$r±$s$%T˜%sí%ta&¦Ö&F}'"Ä'8ç'7 (1X(<Š(BÇ(T
! )C_)G£)Në).:*i*=ƒ*mÁ*//+/_+N�+#Þ+a,6d,Y›,Zõ, P- q-!’-@´-_õ-/U.(….k®.-/)H/r/.Ž/M½/I02U0Fˆ0EÏ081CN1y’1r202!°2#Ò2Aö2U83BŽ3cÑ354+M4Ky4MÅ495+M5y5>“53Ò5&6$-6YR63¬6Aà64"7QW7<©76æ7'8)E8o8!‰8"«8GÎ8K97b9)š9*Ä9$ï9$:#9:$]:$‚:#§:‹Ë::W;8’;JË;;<WR<Uª<=.=>M=8Œ=4Å=Wú=*R>M}>3Ë>vÿ>?v?5¶?@ì?6-@>d@r£@aAgxA4àA-B:CBB~B@ÁB"C0%CVC$iCŽC3¬C àCND,PD}DšD/ºD1êD8E-UE+ƒE(¯E<ØE&F'<F-dF0’FaÃF'%G4MG%‚G'¨G&ÐG^÷G.VH3…H,¹HæHCIADI5†I ¼I*ÝIJ&J+AJ<mJ*ªJÕJ)íJ0K(HK/qKC¡K<åK""L
! ELPLiLvL‚LŽL,šL$ÇLìL M#M BM/cM3“MÇM.ÛM)
! N?4NtNCˆNMÌN=O2XOE‹ODÑOVP,mP'šPYÂP4Q,QQ0~Q0¯Q=àQ0R:OR1ŠR9¼R2öR1)S;[S1—S3ÉS5ýS13T2eT@˜T1ÙT?UJKU6–UDÍU8V<KV>ˆV=ÇV3W99W:sWR®WCX7EX:}X;¸X6ôX1+YE]YA£YQåY_7ZW—ZOïZH?[ ˆ[8©[8â[-\(I\/r\¢\2µ\è\H]9J]E„])Ê]ô]4	^3>^Nr^1Á^Oó^*C_8n_6§_3Þ_2`0E`/v`)¦`#Ð`*ô`-a*Ma-xa@¦a!ça	b<$bab-sb2¡b?Ôb.cCc'bc(Šc4³cØècÐÁd4’e5ÇeMýeKf`f!yf;›f:×fCg5Vg&Œg ³gÔg'óg*h%Fh*lh$—hA¼hCþhBi<bi%Ÿi3Åi/ùi[)j<…j7Âj&újI!k+kk]—kõkc	l_ml6Íl7m4<m5qm)§m3Ñm3n29nIln¶nÎn%æno
%o'3o-[o&‰o°oOÐoH pHip²pÁp#ÐpNôp9CqH}qHÆqJrHZr£r*ºr%år,s8s1Xs)Šs-´s,âs,t<<t9yt&³t/Út=
! u&Hu%ou7•u5Íu<v"@vJcvm®vwF0w$wwœw.«w0ÚwWxcx=sx±x9ÎxOyXyty “y]´y!z+4z`z:|zT·z!{.{H{%c{‰{<©{Væ{$=|b|u~|gô|D\}:¡}!Ü}Xþ}*W~-‚~°~#Ð~&ô~Q!m0�<À<ý&:€<a€Rž€;ñ€>-�tl�yá�@[‚8œ‚lÕ‚9Bƒ3|ƒT°ƒU„9[„B•„cØ„m<…?ª…Gê…X2†3‹†G¿†J‡TR‡E§‡;í‡D)ˆYnˆpÈˆ"9‰‹\‰3è‰aŠE~ŠCÄŠ8‹KA‹@�‹>Î‹F
ŒGTŒGœŒ;äŒE �Gf�Y®�?Ž?HŽjˆŽKóŽ§?�[ç�lC�4°�Oå�E5‘O{‘iË‘[5’L‘’'Þ’s“]z“DØ“:”8X”F‘”aØ”s:•�®•K0–S|–WÐ–2(—F[—8¢—ŒÛ—Žh˜‰÷˜†�™HšNQš= šiÞš7H›Y€›uÚ›vPœ)Çœ)ñœ<�IX�9¢�GÜ�$ž,;žhž€ž?Ÿž^ßž=>Ÿ]|Ÿ@ÚŸd C€ JÄ '¡_7¡�—¡.%¢)T¢V~¢@Õ¢Q£Vh£U¿£=¤VS¤aª¤3¥)@¥$j¥)�¥?¹¥.ù¥((¦%Q¦hw¦*à¦0§.<§6k§;¢§+Þ§
! ¨:(¨8c¨)œ¨-Æ¨'ô¨$©%A©%g©O�©IÝ©%'ªMª&hª4�ª#Äª2èª«78«?p«/°«@à«1!¬S¬(s¬œ¬Z«¬Z­Fa­#¨­‰Ì­OV®9¦®$à®.¯4¯&N¯?u¯.µ¯Sä¯08°8i°5¢°BØ°r±BŽ±FÑ±^²dw²‚Ü²f_³PÆ³Z´Kr´¾´;Ö´;µBNµ5‘µ+Çµ4óµ-(¶<V¶<“¶Ð¶3ç¶H·*d·�·2§·(Ú·-¸1¸1M¸@¸9À¸>ú¸I9¹?ƒ¹+Ã¹6ï¹)&ºLPºE�ºãº
úºV»1_»8‘»<Ê»&¼(.¼BW¼<š¼R×¼8*½Sc½1·½4é½¾28¾k¾3‡¾!»¾+Ý¾	¿	¿ ¿/¿B¿V¿p¿U…¿IÛ¿%À:À4OÀI„À4ÎÀEÁ6IÁ5€Áv¶Á‘-Â3¿Â=óÂ<1Ã!nÃ/�Ã7ÀÃ5øÃ;.Ä(jÄd“Ä:øÄ.3Å9bÅ6œÅCÓÅ@ÆAXÆEšÆ•àÆývÇîtÈûcÉì_Ê!LË3nË+¢Ë1ÎË!Ì9"Ì=\Ì5šÌ,ÐÌ;ýÌU9Í1�Í\ÁÍUÎ/tÎ*¤Î(ÏÎ!øÎ;Ï.VÏ…Ï—Ï ·Ï\ØÏ;5ÐLqÐ)¾Ð1èÐ7ÑLRÑ4ŸÑ3ÔÑ4Ò1=Ò>oÒB®Ò[ñÒZMÓc¨ÓWÔAdÔ\¦ÔeÕ?iÕ8©Õ2âÕ0ÖBFÖ-‰Ö;·Ö9óÖ;-×4i×Hž×"ç×O
! ØOZØ8ªØãØ(øØ$!Ù FÙgÙ4†Ù&»Ù;âÙ)ÚjHÚF³Ú“úÚ$ŽÛ8³Û8ìÛ%%ÜIKÜ)•ÜL¿ÜVÝcÝuÝ.‡Ý0¶ÝMçÝH5ÞN~Þ-ÍÞOûÞcKßN¯ß™þßD˜àxÝàjVá‡ÁáNIâ_˜â;øâH4ãI}ãAÇã%	ä1/ä(aäFŠä7Ñä3	å0=å9nå-¨å;Öå:æ:Mæ•ˆæBèZaè6¼èóèCéVUéa¬éWê8fêCŸêRãêH6ì2ì²ì<Äì2í%4í;Zí–í&­í!ÔíVöí#Mîqî*�î8ºîƒóîbwï	Úï`äï`Eð¦ð:»ðBöð19ñOkñ7»ñ$óñ4òMò5gò5�òÓòAðò$2ó=Wó8•ó)Îó*øó#ô;@ô|ô’ô­ôÄôäô+ðô'õ*Dõ-oõ�õ+´õ>àõBöböö;žö(ÚöC÷%G÷9m÷F§÷5î÷8$ø8]ø2–øWÉø!ù*ù$7ù7\ù#”ù#¸ùMÜù7*ú9bú7œú8Ôú.
û@<ûB}û<Àû@ýû>>ü}ü’ü6¬ü>ãü"ý;<ýxý>’ýUÑý/'þ-WþL…þ*Òþ:ýþ8ÿ.Pÿ7ÿk·ÿg#¢‹j.B™-ÜU
! "`"ƒ)¦.Ð3ÿ3;K"‡†ª81Aj=¬PêJ;z†P>R>‘8ÐN	MX{¦\"	$	E¤	-ê	-
! EF
! @Œ
! 0Í
! )þ
! *(3S6‡.¾@íF.FuB¼Aÿ.A
#p
Y”
î
L3SW‡0ß'+5S-‰(·+à,09%j9�Êà%ø5TnZˆAã)%GOG—%ßC)I2s ¦0Ç.øH'4p¥$À,å):<&w/žAÎ4>E<„3Á(õ)&H%o;•SÑ;%aEi6¯4æ7_S=³0ñ5"DX`�Œþ‹‹7@OB�;Ó+-;"i{Œ42%g=�UË;!/]7�4Å.ú@) :j G¥ pí +^!(Š!J³!‚þ!6�"¸"AÔ"O#gf#5Î#z$J$1Ê$<ü$&9%5`%–%³´%?h&4¨&"Ý&)',*'4W'BŒ'*Ï'0ú'P+(8|(Iµ(,ÿ(0,);])F™)1à)I*5\*H’*5Û*[+3m+F¡+<è+O%,Yu,=Ï,5
-ZC-Sž-2ò-(%.=N.Œ.^¤.G/?K/O‹/GÛ/!#0LE0C’0�Ö0 X1y1s”1$2O-2L}28Ê2\3`3$y3ž35º3#ð314vF4$½4â4þ4#5B>5$�5%¦56Ì56""6[E60¡6;Ò607-?7.m7œ7!º7LÜ7 )8$J8o8‡8™8?°8>ð8>/9>n9?­9>í9<,:=i:<§:-ä:A;@T;?•;Õ;4ð;g%<:�<=È<&=&-=DT=F™=Jà=N+>@z>F»>8?P;?HŒ?EÕ?2@"N@q@9‘@.Ë@'ú@*"A>MA9ŒA5ÆA6üA;3B.oB[žBZúBZUC9°C8êC8#D.\D8‹DTÄD)EKCE?�EÏE+íEF.0F&_F'†F;®F;êF&G"AG.dG“G³GÑG8îG9'H4aH,–HYÃH-I8KI;„IDÀI1J7J'VJ ~JŸJ ¾JßJ%þJ#$K&HK@oK9°K>êK9)L1cLe•LdûL«`MMN9ZN&”N^»NaO|O.–O.ÅO-ôO-"PPP*_P&ŠP*±P>ÜP/Q,KQ1xQ/ªQ$ÚQ;ÿQ6;R!rR@”R2ÕR&S,/S>\S1›S6ÍS2T37T0kT>œTÛTúTEU4WUNŒU?ÛU:V1VVˆV%¢V&ÈV!ïVW(0W6YW �W>±W.ðWDX"dX1‡X%¹X4ßX2Y<GYN„Y7ÓY*Z,6Z"cZ †Z§Z7ÁZGùZ3A[&u[&œ[:Ã[Bþ[AA\oƒ\)ó\
]<+]Bh]3«]Iß]G)^q^-�^>»^6ú^<1_.n_:�_#Ø_Oü_=L`>Š`7É`%a#'a(Ka>ta:³aîa6
! b(Ab@jb«b2¼b8ïb(cBc.Qc€c2”cÇc-âc3d'Dd(ld%•d&»d7âd5e5Pe"†e#©e
Íe*Ûe6f=f-Xf"†f(©fXÒfQ+g1}g/¯g8ßgh7hEShI™h9ãh.i'Li*ti>Ÿi9Þi5jNjhj^}j)Üj
kkB k
ck
qk k) k%ÊkCðk:4l(ol3˜lÌl8él6"m7Ym.‘m0Àm-ñm“nc³no4o;Ho,„o3±o'åo>
p>Lp>‹pÊp*äpqr"q/•q!Åq$çq9rFr9ar2›rÎr%ârsY!s{s›s$¶sKÛs<'t”dtOùt;Iu2…u1¸u\êu-Gv-uv-£vÑv4æv<wXw8iwI¢w(ìwHxA^xD x7åx*y.Hy3wyD«y4ðy%z8zQzhz!ƒz¥z,Àz�ízE{{Á{=Û{4|2N|2�|1´|eæ|3L}3€}3´}gè}>P~|�~U�b
! €�O$�1t�1¦�0Ø�0	‚#:‚M^‚¬‚0Æ‚4÷‚3,ƒ0`ƒ/‘ƒ$Áƒ*æƒ@„>R„A‘„9Ó„6
…%D…8j…:£…Þ…2ó…U&†‚|†=ÿ†?=‡=}‡ »‡NÜ‡2+ˆ=^ˆ"œˆã¿ˆ<£‰Gà‰I(ŠYrŠEÌŠb‹`u‹TÖ‹Q+ŒX}ŒGÖŒ<�S[�E¯�Dõ�#:Ž ^ŽDŽSÄŽ4�?M�?��-Í�Nû�`J�D«�Pð�WA‘;™‘)Õ‘$ÿ‘b$’‡’1œ’DÎ’h“|“6–“Í“*Ý“” &”UG”+�”VÉ”) •HJ•2“•6Æ•ý•c–>�–>À–1ÿ–)1—?[—P›—$ì—[˜@m˜^®˜W
™9e™Ÿ™/½™#í™)šB;š7~š@¶šª÷š¢›(º›#ã›3œ>;œ(zœ#£œ#Çœ,ëœ<�>U�3”�7È�SžATž–ž®ž Îž2ïž"Ÿ$@Ÿ1eŸ$—Ÿ'¼Ÿ@äŸC% µi 5¡¬U¡¬¢N¯¢5þ¢<4£Qq£!Ã£"å£?¤&H¤Jo¤4º¤,ï¤A¥<^¥›¥5·¥Aí¥U/¦9…¦A¿¦J§GL§3”§È§:á§%¨B¨C`¨5¤¨2Ú¨'
©B5©=x©¶©/Ñ©;ª†=ªŠÄªeO«*µ«à«$ú«0¬?P¬_�¬ ð¬C­.U­ „­=¥­;ã­0®@P®*‘®A¼®Îþ®LÍ¯I°:d°(Ÿ°?È°8±2A±It±]¾±S²Cp²C´²ø²5³3N³&‚³1©³(Û³)´,.´3[´*�´_º´gµQ‚µAÔµP¶"g¶>Š¶3É¶8ý¶;6·8r·7«·8ã·9¸8V¸8�¸=È¸:¹BA¹)„¹3®¹4â¹/º8Gº €º¡º6»º6òº4)»4^»8“»(Ì»4õ»6*¼'a¼2‰¼3¼¼4ð¼;%½a½A�½GÃ½N¾NZ¾V©¾^¿c_¿iÃ¿h-Àk–ÀhÁhkÁÔÁTÂÔÂ�TÃ�ÖÃXÄrØÄwKÅvÃÅ:Æ‹ºÆFÇ~ÆÇ€EÈÆÈƒFÉwÊÉwBÊsºÊx.Ës§ËuÌ9‘Ì7ËÌ5ÍA9ÍC{Í6¿Í7öÍ3.Î9bÎœÎ7»Î6óÎ5*Ï5`Ï–Ï3²Ï9æÏ3 Ð?TÐ3”Ð$ÈÐ8íÐ5&Ñ8\Ñ4•Ñ:ÊÑ7Ò8=Ò6vÒ3­Ò&áÒÓ%Ó(CÓ$lÓ*‘Ó-¼Ó5êÓ_ ÔH€Ô2ÉÔ-üÔ-*Õ.XÕA‡ÕIÉÕYÖ/mÖu�ÖS×5g×�×6½×/ô×$Ø(=Ø\fØ0ÃØ:ôØ*/Ù0ZÙ[‹ÙEçÙ-ÚE@ÚG†Ú'ÎÚ&öÚÛ!9Û.[Û1ŠÛ%¼Û0âÛMÜ-aÜ�Ü.­Ü2ÜÜ-Ý#=ÝLaÝ7®Ý0æÝ%Þ8=Þ?vÞ?¶ÞöÞVßKkß?·ß4÷ß.,àR[à.®à+Ýà6	á4@á5uá,«áGØáI â3jâbžâ1ã$3ãBXã›ãµãÌã(àã,	äH6ä/ä.¯ä0Þä+å.;å,jå,—å"Äå2çå,æ)Gæ(qæ+šæ,Ææ&óæ*ç+Eç+qç%�ç"Ãç"æç#	è&-è7Tè-Œè6ºè*ñè,é*Ié)té)žé(Èé$ñé&ê)=ê-gê+•ê%Áê(çê5ë#Fë'jë4’ë'Çë&ïë ì+7ìcì2‚ì4µì0êì1í?Mí;�íZÉíR$î^wîPÖî@'ï\hï"ÅïKèïH4ð<}ð)ºð äð+ñ/1ñSañ'µñÝñññ…ò<—ò:Ôò4ó)Dó#nós’óôª$ô[ÏõK+öwö1�ö¿öÚöùö÷3÷R÷*^÷p‰÷4ú÷W/ø=‡ø:Åø?ù;@ù�|ùY
úHgú=°úgîú„VûNÛû[*üY†ü<àü<ý>ZýU™ýaïýAQþ@“þJÔþ@ÿX`ÿy¹ÿ@3
Ct
(¸
Há
?*
Xj
iÃ
T-
:‚
O½
M

J[
a¦
[
Wd
>¼
Vû
„R
5×
0

_>
=ž
9Ü
R
Mi
D·
.ü
3+
-_
=�
8Ë
Y	
G^	
=¦	
kä	
qP
! 
)Â
! 
2ì
! 
h
>ˆ
cÇ
ž+
fÊ
«1

·Ý

Ç•
Ç]
=%
Ec
;©
Xå
:>
iy
aã
JE
S�
Dä
3)
B]
/ 
#Ð
.ô
*#
(N
8w
4°
)å
7
+G
(s
+œ
-È
]ö
ŠT
nß
hN
g·
?
h_
WÈ
1 
-R
M€
ÕÎ
¼¤
6a
H˜
Lá
Z.
C‰
‚Í
ƒP
OÔ
2$
4W
QŒ
oÞ
=N
AŒ
7Î
† 
5� 
tÃ 
-8!
;f!
0¢!
vÓ!
NJ"
L™"
aæ"
TH#
G�#
,å#
v$
B‰$
]Ì$
5*%
S`%
T´%
8	&
-B&
2p&
I£&
Ní&
\<'
‡™'
V!(
Zx(
yÓ(
pM)
D¾)
Z*
N^*
C­*
Yñ*
OK+
?›+
:Û+
?,
<V,
J“,
JÞ,
0)-
>Z-
—™-
21.
fd.
_Ë.
D+/
p/
Av0
c¸0
i1
/†1
J¶1
I2
IK2
v•2
X3
Ye3
›¿3
T[5
?°5
bð5
KS6
CŸ6
Cã6
7'7
É_7
È)8
aò8
XT9
\­9
—
! :
[¢:
’þ:
‘‘;
�#<
k´<
: =
d[=
dÀ=
Å%>
7ë>
K#?
do?
GÔ?
F@
žc@
ŽA
’‘A
]$B
)‚B
 ¬B
ÍB
gèB
/PC
€C
\•C
~òC
‰qD
ûD
E
,E
1BE
/tE
>¤E
4ãE
¢F
»F
};G
:¹G
“ôG
AˆH
OÊH
qI
|ŒI
1	J
™;J
VÕJ
J,K
PwK
VÈK
LL
{lL
.èL
fM
S~M
BÒM
YN
`oN
"ÐN
RóN
QFO
7˜O
9ÐO
\
! P
AgP
Ã©P
˜mQ
R
,R
9HR
‘‚R
?S
yTS
vÎS
XET
kžT
H
! U
PSU
 ¤U
&ÅU
MìU
/:V
;jV
8¦V
ßV
ñV
<W
UNW
¤W
?ÃW
?X
7CX
;{X
"·X
ZÚX
B5Y
+xY
%¤Y
"ÊY
$íY
.Z
3AZ
'uZ
�Z
/¼Z
2ìZ
2[
(R[
4{[
,°[
Ý[
pñ[
3b\
N–\
7å\
E]
Cc]
§]
IÇ]
/^
/A^
.q^
H ^
-é^
1_
2I_
<|_
¹_
,Ø_
'`
6-`
=d`
"¢`
Å`
2ã`
a
,5a
lba
]Ïa
.-b
)\b
)†b
°b
IÏb
Pc
:jc
6¥c
CÜc
6 d
;Wd
F“d
NÚd
4)e
;^e
\še
 ÷e
9f
@Rf
7“f
YËf
'%g
:Mg
Xˆg
*ág
h
8'h
?`h
3 h
Ôh
9íh
3'i
3[i
&�i
N¶i
:j
-@j
nj
n…j
?ôj
)4k
I^k
¨k
/Âk
òk
1l
38l
"ll
+�l
&»l
%âl
m
='m
Sem
z¹m
)4n
/^n
RŽn
Sán
85o
no
/…o
+µo
6áo
9p
Rp
/pp
+ p
1Ìp
-þp
0,q
']q
8…q
,¾q
ëq
6r
Br
 ar
‚r
.‘r
Àr
àr
?s
"@s
Qcs
>µs
$ôs
+t
2Et
,xt
[¥t
Ou
#Qu
@uu
¶u
OÐu
M v
-nv
œv
6ºv
ñv
>
! w
KIw
#•w
2¹w
)ìw
3x
0Jx
&{x
2¢x
=Õx
3y
0Gy
1xy
2ªy
Ýy
)ýy
-'z
-Uz
,ƒz
0°z
áz
-÷z
4%{
=Z{
M˜{
1æ{
|
+3|
(_|
&ˆ|
&¯|
*Ö|
$}
5&}
\}
,t}
,¡}
Î}
ã}
-þ}
 ,~
M~
~]~
cÜ~
$@
e
-€
,®
5Û
€
!*€
:L€
$‡€
¬€
	É€
&Ó€
!ú€
(�
!E�
=g�
/¥�
1Õ�
‚
C'‚
Ck‚
#¯‚
=Ó‚
"ƒ
14ƒ
Hfƒ
H¯ƒ
9øƒ
.2„
3a„
�•„
/%…
U…
'r…
5š…
2Ð…
=†
 A†
Gb†
:ª†
å†
Š‡
XŽ‡
ç‡
ˆ
ˆ
 ˆ
>0ˆ
$oˆ
”ˆ
=²ˆ
$ðˆ
‰
F/‰
(v‰
(Ÿ‰
È‰
Õ‰
â‰
>ò‰
$1Š
VŠ
tŠ
ŒŠ
¦Š
¾Š
ÚŠ
ôŠ
D
! ‹
*O‹
/z‹
	ª‹
-´‹
Bâ‹
%Œ
$8Œ
0]Œ
*ŽŒ
¹Œ
!ÕŒ
G÷Œ
F?�
G†�
5Î�
)Ž
.Ž
*JŽ
.uŽ
C¤Ž
èŽ
$þŽ
#�
 =�
^�
"y�
Iœ�
Iæ�
;0�
Il�
!¶�
8Ø�
1‘
0C‘
7t‘
&¬‘
,Ó‘
&’
'’
G’
8_’
1˜’
Ê’
æ’
-“
-/“
,]“
8Š“
=Ã“
=”
=?”
=}”
»”
Ç”
)ç”
%•
)7•
2a•
”•
1¬•
Þ•
¤ö•
W›–
:ó–
1.—
/`—
8�—
8É—
-˜
90˜
j˜
ˆ˜
2¡˜
‹Ô˜
¢`™
1š
5š
7Pš
Cˆš
Ìš
ìš
=›
I›
oX›
2È›
1û›
H-œ
vœ
@�œ
"Ðœ
#óœ
(�
&@�
-g�
\•�
:ò�
1-ž
;_ž
/›ž
Ëž
%çž
0
Ÿ
'>Ÿ
"fŸ
/‰Ÿ
¹Ÿ
ÙŸ
õŸ
/ 
7 
V 
n 
f‹ 
 ò 
'¡
;¡
X¡
s¡
/„¡
4´¡
)é¡
4¢
H¢
@e¢
¦¢
/·¢
"ç¢
"
! £
2-£
D`£
!¥£
+Ç£
,ó£
 ¤
4?¤
t¤
>ˆ¤
4Ç¤
#ü¤
+ ¥
9L¥
*†¥
c±¥
¦
!3¦
:U¦
�¦
¨¦
'Ä¦
?ì¦
,§
 @§
a§
�§
Z §
Zû§
yV¨
zÐ¨
%K©
>q©
°©
.É©
!ø©
Hª
!cª
3…ª
+¹ª
1åª
C«
C[«
 Ÿ«
2À«
3ó«
#'¬
K¬
Gd¬
m¬¬
j­
…­
:›­
"Ö­
ù­
2®
4C®
(x®
¡®
$¾®
ã®
Pó®
9D¯
!~¯
, ¯
AÍ¯
0°
 @°
a°
�°
¡°
¿°
Ò°
å°
?±
BC±
'†±
(®±
×±
1ó±
%²
E²
5a²
E—²
Ý²
>û²
>:³
2y³
5¬³
6â³
?´
*Y´
>„´
4Ã´
ø´
*µ
1>µ
³pµ
U$¶
3z¶
:®¶
Bé¶
,·
-B·
5p·
)¦·
%Ð·
ö·
9¸
0L¸
9}¸
	·¸
YÁ¸
s¹
s�¹
Pº
:Tº
D�º
4Ôº
A	»
"K»
£n»
,¼
-?¼
m¼
‚„¼
&½
0.½
(_½
&ˆ½
ƒ¯½
D3¾
x¾
*Ž¾
#¹¾
Ý¾
;ó¾
Z/¿
Š¿
 ¿
@¹¿
Fú¿
AÀ
3ZÀ
(ŽÀ
·À
$ÔÀ
ùÀ
)Á
,AÁ
(nÁ
—Á
+±Á
+ÝÁ
D	Â
BNÂ
J‘Â
pÜÂ
JMÃ
i˜Ã
FÄ
@IÄ
7ŠÄ
{ÂÄ
3>Å
grÅ
QÚÅ
b,Æ
Ž�Æ
xÇ
P—Ç
FèÇ
f/È
h–È
mÿÈ
JmÉ
m¸É
o&Ê
K–Ê
LâÊ
G/Ë
nwË
XæË
2?Ì
yrÌ
7ìÌ
=$Í
ObÍ
u²Í
_(Î
kˆÎ
/ôÎ
W$Ï
W|Ï
*ÔÏ
PÿÏ
_PÐ
N°Ð
YÿÐ
{YÑ
^ÕÑ
\4Ò
s‘Ò
TÓ
QZÓ
G¬Ó
fôÓ
_[Ô
R»Ô
&Õ
65Õ
.lÕ
[›Õ
J÷Õ
3BÖ
WvÖ
dÎÖ
,3×
u`×
_Ö×
z6Ø
±Ø
NÌØ
%Ù
9AÙ
<{Ù
.¸Ù
$çÙ
6Ú
2CÚ
4vÚ
'«Ú
5ÓÚ
3	Û
#=Û
,aÛ
GŽÛ
<ÖÛ
GÜ
V[Ü
V²Ü
V	Ý
V`Ý
W·Ý
UÞ
DeÞ
RªÞ
DýÞ
DBß
D‡ß
DÌß
Dà
FVà
L�à
1êà
6á
6Sá
aŠá
:ìá
&'â
;Nâ
4Šâ
¿â
WÞâ
S6ã
5Šã
]Àã
Hä
ggä
ŸÏä
Ioå
)¹å
Rãå
36æ
5jæ
1 æ
*Òæ
0ýæ
5.ç
bdç
7Çç
Vÿç
AVè
>˜è
P×è
N(é
?wé
\·é
5ê
>Jê
g‰ê
;ñê
E-ë
dsë
YØë
H2ì
G{ì
gÃì
X+í
P„í
HÕí
Iî
:hî
>£î
Lâî
T/ï
_„ï
Fäï
l+ð
^˜ð
>÷ð
I6ñ
P€ñ
FÑñ
Rò
Nkò
rºò
O-ó
`}ó
SÞó
C2ô
Ivô
YÀô
Jõ
:eõ
Z õ
?ûõ
A;ö
?}ö
A½ö
8ÿö
.8÷
:g÷
1¢÷
=Ô÷
)ø
<ø
qVø
EÈø
;ù
NJù
„™ù
Sú
Urú
1Èú
”úú
5�û
8Åû
(þû
>'ü
@fü
F§ü
Cîü
C2ý
Cvý
Cºý
1þý
00þ
1aþ
%“þ
`¹þ
~ÿ
9™ÿ
XÓÿ
',ITJžKéM5IƒTÍE":h/£:Ó-9<!v*˜dÃ)(NR&¡$È@í0.H_W¨+=,Aj3¬5àS>j1©0Û%+4QI†#Ð9ôi.	G˜	.à	-
! 5=
! 8s
! =¬
! dê
! 2Oc‚Ræ09<j7§5ß7
(M
av
IØ
A"Pdjµ; (\J…2Ð82<'o=—QÕQ'/y3©+Ý"	},‚ªn--œbÊ`-/ŽE¾8:=Sx5ÌZQ]K¯°û+¬"ØPû_L*¬7×-.= l}�&32"f;‰6Åü@<W9”EÎ.NC!’C´9ø32Hf¯Ï?î,.4[Y�HêO3;ƒ$¿‚ä:g ,¢ ;Ï ;!<G!E„!1Ê!:ü!&7"N^",­"hÚ"iC#x­#7&$^^$G½$%E&7R&NŠ&OÙ&()'DR'B—'VÚ'Y1(G‹(;Ó(()B8)R{)HÎ)+*2C*7v*E®*Bô*J7+q‚+Qô+OF,H–,,ß,/-'<-%d-GŠ-?Ò-E.%X. ~.4Ÿ.PÔ.;%/3a/F•/TÜ/E10Aw0O¹02	1B<1U14Õ14
! 2i?2©2$Ä2#é25
3C3%a3I‡3EÑ3-4�E4;Ó4O5V_5.¶5=å5C#6Bg6Kª6Oö6rF7%¹7Tß7048Ue83»8ï8:9=J9)ˆ92²9å99:3<:0p:P¡:cò:;V;>’;?Ñ;@<GR<3š<>Î<k
=vy=&ð=4>3L>€>: >7Û>V?]j?RÈ?>@6Z@(‘@0º@+ë@8A/PA>€A0¿AFðAL7BS„BJØB@#C\dCIÁC2DA>D4€D9µDZïDbJE@­ECîE%2F/XFKˆF>ÔF‹GKŸGNëG>:HgyH(áHV
! I%aI*‡I‰²I<J5DJBzJD½JÄKëÇKQ³LÝM¦ãMËŠOTVQT«QARIBR+ŒR„¸R‘=S0ÏS€Tq�T:óT6.UJeU °UäQV6WTVW*«W#ÖW!úWIX\fXgÃX$+Y^PY'¯Y.×YZ"&Z!IZ!kZ"�Z"°Z3ÓZ"[)*[IT[4ž[4Ó[N\KW\U£\®ù\ª¨]JS^Qž_;ð_0,`+]`;‰`:Å`2a/3a)ca"�a!°ažÒa-qb8ŸbgØb9@cxzc)óc6dUTdTªdÿd$e
*e8eGe	Xe
! be	meweOyeÉe0áe>fBQfb”f;÷f73g%kg‘g#±gGÕg8hVh7qhN©hBøh6;i8ri)«iLÕi<"j7_jU—jNíjE<k8‚k.»k4êk>l-^l"ŒlW¯lLmPTmC¥mJémB4nIwn?ÁnGoIo3ho3œoBÐo?p=Sp9‘pBËpMqF\qG£qAëqS-r+�rV­r(s.-s&\sƒs{™s+thAt(ªt)Ót1ýtM/u"}u1 u-Òu?v8@v1yv1«vgÝv%Ew"kwEŽw%Ôw#úw%xtDx.¹x*èx2yHFyD�y%Ôyúy)z8?z8xz1±z5ãz<{AV{F˜{!ß{3|15|g|5…|&»|9â|>}’[}Bî}81~=j~.¨~*×~; 9\H–9ß2€*L€\w€8Ô€B
�1P�5‚�8¸�2ñ�$‚2(‚5[‚O‘‚Zá‚<ƒ#Uƒ'yƒ&¡ƒ.ÈƒB÷ƒ;:„4v„5«„8á„/…%J…$p…%•…/»…(ë…)†#>†)b†)Œ†-¶†ä†ù†>‡G‡]a‡L¿‡)ˆ6ˆ/Jˆ!zˆ#œˆKÀˆ(‰*5‰`‰x‰$�‰)µ‰)ß‰.	Š@8Š‚yŠ~üŠ){‹A¥‹cç‹AKŒ9�Œ4ÇŒXüŒ;U�3‘�8Å�Cþ�NBŽH‘ŽDÚŽc�7ƒ�8»�@ô�<5�>r�G±�3ù�7-‘[e‘mÁ‘</’l’
x’.†’$µ’[Ú’	6“?@“i€“1ê“&”"C”f”S†”MÚ”.(•-W•)…•!¯•7Ñ•(	–;2–8n–:§–9â–H—'e—7�—/Å—/õ—2%˜>X˜<—˜)Ô˜9þ˜/8™<h™?¥™6å™2š?Oš@�š!ÐšFòš99›&s›4š›!Ï› ñ›œ<,œiœ.„œ%³œÙœ+æœd�\w�Ô�á�)ž4*ž-_ž0�ž/¾ž8îž/'Ÿ9WŸ?‘Ÿ8ÑŸ>
!  ?I >‰ 4È 7ý A5¡Vw¡=Î¡4¢7A¢(y¢G¢¢4ê¢:£AZ£=œ£3Ú£,¤:;¤4v¤†«¤n2¥9¡¥AÛ¥,¦QJ¦2œ¦4Ï¦4§29§l§1…§6·§;î§<*¨!g¨$‰¨I®¨>ø¨A7©y©,–©"Ã©*æ©ª"*ª;Mª‰ª$©ªTÎª:#«!^«$€«2¥«5Ø«R¬2a¬<”¬=Ñ¬E­?U­*•­TÀ­7®#M®q®'�®.¸®mç®yU¯sÏ¯nC°z²°t-±o¢±{²uŽ²h³tm³nâ³yQ´vË´wBµxºµq3¶?¥¶6å¶2·OO·:Ÿ·GÚ·)"¸(L¸!u¸(—¸&À¸0ç¸S¹:l¹'§¹!Ï¹Añ¹.3º)bº2Œºy¿ºw9»(±»*Ú»,¼I2¼3|¼0°¼'á¼=	½=G½…½�½
¹½:Ç½H¾CK¾Q�¾Cá¾Q%¿*w¿%¢¿%È¿+î¿+À)FÀ&pÀ—À9¯ÀéÀ1úÀ&,Á&SÁ_zÁ@ÚÁ-Â<IÂ'†Â'®Â/ÖÂ@Ã.GÃ$vÃ5›Ã4ÑÃ4ÄA;Ä}Ä;�Ä<ÙÄDÅ,[ÅˆÅ7•Å(ÍÅ-öÅ*$Æ-OÆ}Æ˜Æ²ÆAÌÆ/Ç/>Ç1nÇM ÇNîÇ0=È2nÈ0¡È7ÒÈ9
! É!DÉ!fÉHˆÉAÑÉ*Ê>Ê!]ÊÊ?™Ê&ÙÊ*Ë"+ËNË$jËN�Ë
ÞË.ìË
! Ì.&Ì:UÌ)�Ì5ºÌcðÌETÍAšÍ ÜÍýÍ,Î$EÎ"jÎ.�Î%¼Î%âÎ$Ï-Ï2DÏ>wÏD¶ÏDûÏN@Ð(�Ð/¸ÐèÐþÐÑ2+ÑL^Ñ«ÑTÊÑLÒUlÒCÂÒ:ÓAÓ	WÓ3aÓ@•Ó'ÖÓ4þÓ.3Ô;bÔ$žÔ+ÃÔ/ïÔ
Õ@-Õ nÕ;�Õ$ËÕ9ðÕ(*Ö7SÖ;‹ÖEÇÖ2
×J@×,‹×*¸×6ã×2Ø0MØ0~Ø;¯Ø#ëØ?Ù<OÙŒÙE§ÙRíÙV@Ú2—Ú)ÊÚ%ôÚ&Û:AÛ)|Û$¦Û=ËÛ[	Ü6eÜVœÜNóÜLBÝL�ÝVÜÝC3ÞLwÞ&ÄÞëÞ.ß0ß(Bß0kßMœß@êß/+à:[à7–à2Îà3á-5á4cá)˜áQÂá<â,Qâ)~â0¨âÙâHùâ)BãOlãM¼ã/
! ä2:ä-mä›ä'¹äáä/üä%,å8Rå3‹å¿åHÝå&æ2æOæ%læ’æ%¤æ"Êæ&íæ(ç$=çbçsç…ç—çªç$¹çÞç%ïç/è%Eè,kè,˜è.Åè,ôè,!é,Né,{é*¨é&Óé/úé*ê3ê:ê(Fê%oê"•ê¸ê×êöê7ë@;ë|ëŒëH•ëÞë$ýë""ì/Eì+uì&¡ì'Èì(ðì-í#Gí$kí/�í/Àíðíî( îIî¦iî#ï"4ï5WïH�ïÖï:óï/.ð'^ð†ð0¢ð$Óð%øð+ñ/Jñ'zñ(¢ñ Ëñ+ìñò!-òOòmò4�ò-Âò8ðò/)óWYó9±ó4ëó ô82ô)kô,•ô'Âô(êôõ1õMõ+lõ6˜õÏõ,éõ+öABöO„öÔöJÝö9(÷b÷�÷�÷·÷×÷8ô÷€-ø0®ø;ßøù)6ù=`ù!žù>ÀùIÿù/IúJyúYÄúû!=û_û=û ½û-Þûü(ü)>ü)hü’ü±ü/Ìü.üü$+ý@Pý-‘ý-¿ý.íý4þLQþ<žþLÛþE(ÿ@nÿS¯ÿ-L13~²(ÌYõFO,–(ÃNì#;$_$„*©,ÔBD;T�.� ÌGíZ5.�(¿Dè1-6_3–3Ê5þ=4Jr*½"è0<W8o#¨Ì é:
! )E;o0«,Ü"		*,	*W	O‚	^Ò	Y1
! ‹
! —
! P¨
! Où
! -I/wN§NöVE;œ6Ø2
B
&`
‡
9 
Ú
ë
77=3u©%À0æ2@G)ˆ²Ìä*FDZAŸ@á-">Pk�>û;:Dv2»<îD+Ep3¶MêE8*~
©2·ê÷Vh[Äâ<ò$/"T9w%±*×.(1)Z)„7®2æ3.M/|,¬0Ù3
! ;>]zFØPFp*· âAIEK�#ÛFÿF>d#£+Ç.ó",B1o)¡.Ë@ú&;!b8„;½<ù,6,c�!ªÌ-æ' -< +j #– +º Næ H5!;~!Cº!Sþ!LR".Ÿ"iÎ"b8#J›#Dæ# +$ L$#m$ ‘$>²$-ñ$'%VG%#ž%1Â%*ô%&&&F&6m&C¤&Eè&).'2X'>‹'/Ê'>ú'49(+n(4š(9Ï(8	)3B)v)%•)5») ñ)T*7g*6Ÿ*7Ö*+I'+Hq+?º+\ú+ZW,/²,(â,--9-*Y-+„-1°-‰â-Ml.-º.,è.+/ A/=b/3 /-Ô/T0'W0'09§03á0$1$:1._1Ž1¥1(À1<é1&2'A2i2}2�2 2¿2ß2"ü2;3=[3™36¯3)æ3<4(M4'v4/ž41Î4"5#5#C5g5-…5'³5)Û5#6')61Q6ƒ6?ž6KÞ6*7'J7>r7±7Ê79ä7@88_8#˜8¼8Ì8ì8û89-95>9%t9!š9¼9 ×9ø9!:4:iP:3º:)î:;"+;N;$g;!Œ;®; Ì;1í;6<1V</ˆ<F¸<Eÿ<hE=)®=3Ø=2>#?>Gc>.«>0Ú>-?>9?x?-�?»?$Ö?8û?B4@*w@¢@»@NÔ@"#A"FA)iA“A;ªA*æA*B<B<VB(“B0¼B-íB'C&CC"jC-�CE»CED.GD(vD&ŸD0ÆD=÷D35EAiE&«EÒE2ðE#F7FMF:gF$¢FÇF6ÞFG5G&UG|G;˜GQÔG2&H,YH1†H0¸H(éH/I4BI*wI¢I%»I)áI)J85J8nJA§J4éJ@K$_K„Kg¡KB	L-LL<zL.·L4æL0MLMfMIƒMMÍM$NM@N6ŽN.ÅN1ôN/&O#VOTzO8ÏO P')PQP8mPP¦P0÷P(Q =Q^Q(}Q0¦QL×Q`$Rl…R'òR&SIAS*‹S¶S+ÕSNTNPT$ŸT%ÄT&êTU!'U$IUnU1‡U¹UÑUìU+V+1V-]V5‹V-ÁVDïV54W-jW)˜WoÂW[2XŽX6«XâX"Y8%Y	^YhY!yY›YºYËY@èY()Z*RZ/}Z(­ZÖZóZ'[<3[p[/…[!µ[5×[8
\F\`f\@Ç\>]6G]>~]!½]8ß])^B^_^8{^5´^.ê^3_ M_n_B�_LÐ_&`6D`{`4™`5Î`$a)a1Aa<sa;°a.ìaBbA^b5 b1Öb?cMHc?–cMÖcF$d1kdL�dLêd<7e<te>±eðe>fCCf‡f.Ÿf/Îfþf=gUgqgq‘g.h2hBOh$’h9·h/ñh+!iLMiHšiEãiA)jkjMƒj"Ñj"ôj1k'Ik5qk,§kÔk"êkC
l1Ql"ƒl¦l*»l'æl!m0mNm5jm! m3Âm8ömN/nX~nO×n]'oO…o]Õo43pmhp7Öp@q/Oq8q:¸q7óq8+r$dr‰r0¦r/×r,s*4s(_s=ˆs%Æs5ìs)"t%Lt:rt+­t4Ùt9u9Hu,‚u$¯u(Ôu+ýu )v/Jv.zv$©vÎvívAw$Jw:ow9ªwäw…÷w2}x3°x2äxOygy"‡yªy4Äy>ùy<8zDuz&ºz%áz={)E{1o{/¡{6Ñ{2|1;|2m|V |÷|3}>E}M„}=Ò}9~MJ~1˜~VÊ~@!)b1Œ1¾Eð6€'P€,x€¥€6Å€+ü€2(�U[�(±�GÚ�>"‚Aa‚+£‚$Ï‚%ô‚ƒ&/ƒ$Vƒ2{ƒ/®ƒ1Þƒ+„,<„Ei„E¯„(õ„B…La…®…Î….ë…=†'X†4€†µ†3Ð†8‡8=‡7v‡+®‡6Ú‡-ˆP?ˆk�ˆ&üˆ.#‰AR‰.”‰.Ã‰1ò‰:$Š:_Š9šŠ+ÔŠ.‹</‹)l‹–‹C´‹'ø‹@ ŒDaŒ@¦ŒLçŒ54�Bj�a­�(Ž;8ŽDtŽL¹Ž[�Xb�I»�#�T)�&~�¥�7À�<ø�95‘Jo‘,º‘Nç‘+6’<b’IŸ’Bé’<,“i“€“+ “Ì“,ì“L”Pf”;·”có” W•,x• ¥•*Æ•-ñ•/–%O–7u–!­–/Ï–ÿ–6—V—&o—1–—È—"æ—	˜@˜\_˜D¼˜`™.b™‘™#¯™ Ó™+ô™ š)@š)jš”š°šËšëš-› .›#O›-s›¡›À›
Í›-Û›3	œ+=œ\iœ$Æœ4ëœ* �5K�5��0·�è�6þ�"5žXžtž/‘žÁž9Øž0Ÿ'CŸ-kŸ,™Ÿ7ÆŸþŸ' 8B #{ 4Ÿ <Ô 5¡G¡,X¡1…¡/·¡+ç¡3¢NG¢0–¢gÇ¢/£>£#Y£+}£9©£ã£/é£"¤
! <¤G¤GO¤H—¤4à¤&¥)<¥"f¥%‰¥3¯¥Hã¥9,¦Bf¦=©¦Jç¦j2§'�§*Å§<ð§5-¨&c¨6Š¨'Á¨é¨/ý¨/-©1]©J�©>Ú©Dª!^ª/€ª(°ª)Ùª#«#'«aK«"­«Ð«4ð«>%¬5d¬.š¬/É¬*ù¬&$­+K­(w­$ ­aÅ­"'® J®6k®F¢®zé®.d¯Z“¯Cî¯D2°Fw°B¾°A±.C±*r±F�±0ä±G².]²DŒ²
Ñ²ß²õ²C
³Q³!i³‹³0«³Ü³+ö³."´#Q´!u´-—´$Å´$ê´#µ.3µ@bµ<£µ<àµJ¶&h¶V�¶=æ¶4$·1Y·6‹·/Â·Tò·G¸,e¸?’¸/Ò¸0¹13¹/e¹5•¹VË¹<"ºQ_º0±ºaâºUD»kš»E¼JL¼?—¼$×¼ü¼F½Pc½0´½"å½D¾VM¾1¤¾6Ö¾L
¿0Z¿-‹¿;¹¿cõ¿YÀwÀ„À+•À7ÁÀ:ùÀ14Á8fÁ&ŸÁ7ÆÁ*þÁ1)Â:[Â –Â@·Â3øÂ',Ã%TÃ$zÃ;ŸÃ.ÛÃ6
! Ä;AÄ+}ÄN©Ä2øÄ5+ÅaÅwÅ‘Å­ÅÁÅ×ÅiìÅmVÆKÄÆ1Ç"BÇeÇ €Ç¡Ç#¾ÇCâÇB&ÈiÈ‚ÈDœÈ:áÈFÉ!cÉ!…É,§É.ÔÉTÊ8XÊD‘ÊKÖÊ#"Ë‹FË*ÒË+ýË*)Ì*TÌÌ1ŸÌ'ÑÌFùÌ=@Í#~Í$¢Í#ÇÍ£ëÍ�Î¨Î¾ÎÚÎ#õÎ(ÏEBÏ(ˆÏ ±Ï9ÒÏÐ+ÐGÐaÐzÐ&‘Ð¸Ð4ÊÐFÿÐQFÑC˜ÑÜÑ(óÑ;ÒXÒ6xÒ ¯ÒMÐÒ@Ó#_ÓTƒÓØÓ-éÓ,ÔDÔ*^Ô/‰Ô¹Ô$ÓÔøÔÕ)5Õ1_Õ;‘Õ,ÍÕ0úÕ+Ö/JÖ&zÖ)¡Ö2ËÖ3þÖT2×2‡×º×É×å×+û×"'ØJØjØŠØ*žØ"ÉØìØÙ!!ÙCÙ
ZÙhÙ
€ÙŽÙ#¦Ù
ÊÙØÙ%ïÙÚ5ÚJÚ&aÚ?ˆÚÈÚäÚ(ÛO*Û(zÛ(£ÛKÌÛÜ/ÜOÜ fÜ7‡Ü-¿ÜíÜÝ!Ý7ÝJMÝV˜ÝïÝ%Þ.ÞEJÞ(�Þ¹Þ!ÍÞ$ïÞ&ß";ß^ß8~ßF·ßRþßQàPkàN¼à*á06á/gá3—á,Ëáøá!â0)âMZâH¨â0ñâ"ã$Aãfã4�ã¶ã+Êã+öã"ä <ä]äMväÄä9Öä:åEKå<‘åÎå
! äå ïå)æ(:æ!cæ>…æÄæáæÿæ$ç+:ç$fç*‹ç+¶çâç5è*7èJbèT­èéé
2é#@é/déW”é8ìé"%êHêYêkêƒê+’ê5¾êHôê!=ë_ë zë?›ëCÛë;ì/[ì3‹ìA¿ìí3í*LíCwí<»í9øí2î+Lî&xî*Ÿî2Êî!ýî@ï3`ïH”ï3Ýï>ð)Pð5zð0°ð8áð8ñXSñ$¬ñ4Ññ&ò5-ò5cò™òŸò&´ò'Ûòóó-*óXópó+xó*¤óÏóîóôRô-pô;žô;Úô'õ'>õ7fõ0žõMÏõ"ö$@ö%eö%‹ö$±ö%Öö üö$÷B÷^÷&x÷'Ÿ÷Ç÷æ÷þ÷ ø18ø1jø œø½øÌø)êøù+#ùOùdù‚ù‘ù¦ù¾ùOÍùú,úDú^úvúŽú¦úÅúÔúåúôú	û!û;û8Tû�û�û%¬û&Òû%ùû+üKü9cü�ü#¼üàüïü$þü#ý:8ý.sý>¢ýáýðýþþ1þCþRþaþ!xþ"šþJ½þ[ÿ#dÿ'ˆÿ°ÿ3Áÿõÿ1a9*›ÆÙ"ì1AWo*�4¬*á#0F5Z&�·xÉB!Vx=“/Ñ(F*.q µ<Ð=
Kb s>”+Ó=ÿG=&…¬Â7Õ�
?«.ë+.:Z=•0Ó;	@	S	n	.‚	±	Ç	Ú	šë	†
! 6™
! 7Ð
! *?Wf{š5©&ß$:(U'~3¦3Ú
"
$<
a
u
”
0¡
0Ò
 3T+m™´Î-ê-F'a6‰!À$â 5Nj€™­¾Òå*ù?$$d‰.¢Ñ,è4"J(m=–#Ôø$!9[*{¦ºRÒ%0=n‹ ´#Îò
&8Ol…"œ¿Óí
! '%D+j–«¼ Ø*ù0$UrŠ™´%É<ï,A[o‡¦¼&Îõ+Ed€A–@Ø6N%i!�±0Ä0õ&6>Eu»3Ó@Hc�œ±Ïæ"&>Qi�R�1ðD"8g  /Á8ñx*F£Pê/; Tk &À @ç (!F!<e!9¢!UÜ!T2"0‡"+¸"/ä"<#<Q#9Ž#.È#<÷#=4$Vr$:É$'%8,%,e%@’%2Ó%4&6;&,r&2Ÿ&.Ò&D'UF'+œ'/È'+ø'<$(�a(�ÿ(f�)�ô)�’*9 +4Z+*�+2º+7í+/%,-U,ƒ,`Ÿ,^-__-:¿-+ú-Q&.'x.^ .Cÿ.0C/Dt/.¹/Aè/=*0Ah0*ª0Õ0Hñ0(:1bc1QÆ1&2>?2~21—2'É2Bñ2O43B„3Ç3.ç34124!d47†4'¾4Uæ4$<5a5*|5§5Ç5.×5,6636j6‰6&¦6Í6â6ÿ67#.7%R7"x7›7¹7Ù7!ø7$8&?8/f80–8-Ç8"õ8#98<9!u9—9:¬9#ç9Q:Q]:?¯:ï:0	;/:;/j;š;4¶;0ë;2<2O<3‚<
¶<
Ä</Ò<>=#A="e=!ˆ= ª=Ë=-é=&>6>>u>�>›>¸>Ô>ò>?'?G?8g? ?¾?2Ü?0@4@@3u@©@ ¸@OÙ@)AIAiA …A*¦AÑA(ïA@BPYB:ªB4åB.C`ICªC ÄCåCD=DYDsDƒD:˜DBÓD4EKEA_E=¡E/ßE&FI6FG€F"ÈF,ëFJG1cG*•G&ÀGçG#H*%H"PHDsH@¸H5ùH4/I4dI&™IIÀI)
! J4JGTJ:œJ×JäJ8ìJ@%KfKj�KFìK&3LBZL4�LÒLéL`MhM@uM#¶M3ÚMNGN3]N)‘N@»N!üN3O7RO6ŠO9ÁO<ûO+8PdP)‚P.¬P%ÛP0Q'2QZQtQˆQ!¤QÆQ/ÕQ5R6;R@rR8³R*ìR0S;HS2„S6·S$îS$T/8T!hT ŠT)«T)ÕT)ÿT-)U$WU|Uw›U›V0¯VàV üV8WEVW@œW3ÝW4XFX*^XV‰XMàX:.YCiYI­YG÷Yg?Z§Z¿Z&ÝZ[ $[IE[D�[,Ô[,\!.\FP\F—\^Þ\F=]@„]QÅ]c^f{^Wâ^A:_9|_T¶_J`HV`0Ÿ`+Ð`:ü`#7a#[a+ao«a>bPZbA«bFíb34c6hc-ŸcÍc!éc-d)9d'cd<‹d9Èd%e)(e(Re {e/œe2Ìe(ÿe$(f[Mf-©f-×fOghUg$¾g5ãgh0h?Nh;ŽhÊhOÝh8-i=fiC¤ièi'j8/jhj†j!¢j*Äjïj4
kBk4bk1—k,ÉkQök=Hl/†l3¶l<êlk'mh“m!üm6n6Un Œn0­n1Þno
! #oB.oDqo)¶o;àoapU~pÔp^ïp^Nq:­q"èq(r'4r"\r!r!¡r Ãr!är"s+)s%Us){s$¥s#Ês+îs0tKtht/„t"´t×t&öt"u#@u7du&œu/Ãuóu&v9v$Svxv$”v#¹v$Ýv&w-)w'Ww1w±w#Îw#òwx3xRx!mx$�x$´x-Ùx+y3y!Ry!ty0–y)Çy(ñyz4z:Pz-‹z.¹zèz0þz//{C_{-£{4Ñ{6|*=|6h|#Ÿ|#Ã|1ç|7}Q}.n}"�}JÀ}@~+L~;x~4´~6é~6 (W€-…5³4é*€TI€ ž€#¿€ ã€.�)3�$]�$‚�'§�Ï�Oç�b7‚/š‚\Ê‚-'ƒ@Uƒ–ƒ6±ƒeèƒXN„?§„=ç„L%…-r…. …<Ï…=†,J†,w†2¤†4×†N‡([‡E„‡DÊ‡EˆIUˆFŸˆDæˆ>+‰Bj‰h­‰=Š3TŠCˆŠSÌŠ, ‹,M‹"z‹�‹¸‹'Ñ‹$ù‹@Œ6_ŒK–ŒCâŒE&�Gl�H´�Lý�/JŽ4zŽP¯ŽH�LI�L–�Oã�63�;j�¦�Ä�â�!ü�>‘]‘w‘ˆ‘¤‘À‘Ü‘ø‘:’>L’-‹’:¹’Oô’HD“E�“#Ó“O÷“HG”E�”$Ö”7û”S3•Y‡•Zá•c<–D –bå–*H—)s—#�—/Á—;ñ—%-˜S˜b˜&~˜ ¥˜8Æ˜Qÿ˜*Q™=|™º™+Æ™ ò™)š<=š!zšœš9¬š8æš,›[L›W¨›KœALœAŽœ1Ðœ,�2/�-b�"��³�&Í�5ô�+*žVž)nž˜ž¯žÄž×žõž	Ÿ$Ÿ >Ÿ!_Ÿ �Ÿ!¢Ÿ ÄŸ!åŸ ' G 4g œ º Ë !á ¡¡E0¡Fv¡B½¡!¢+"¢+N¢z¢ š¢:»¢sö¢1j£Pœ£@í£:.¤1i¤›¤a»¤(¥(F¥o¥#�¥(³¥Ü¥&û¥)"¦.L¦'{¦£¦;¾¦<ú¦?7§Ew§½§)Ü§&¨,-¨1Z¨ Œ¨%­¨Ó¨Jì¨%7©0]©=Ž©*Ì©,÷©'$ª.Lª={ªH¹ª«)«'F«n«-~«'¬«&Ô«û«'¬>¬%^¬-„¬+²¬5Þ¬6­!K­m­0�­¾­+Ø­.®#3®!W®-y®$§®$Ì®#ñ®*¯6@¯?w¯3·¯,ë¯6°O°+k°:—°BÒ°-±.C±5r±)¨±/Ò±4²U7²[�²\é²eF³F¬³dó³aX´gº´h"µq‹µRýµpP¶YÁ¶·87·.p·Ÿ·N®· ý·]¸"|¸>Ÿ¸-Þ¸9¹IF¹E�¹6Ö¹B
ºHPºH™ºRâº)5»C_»;£»Oß»G/¼Fw¼+¾¼ê¼/½%8½-^½0Œ½2½½#ð½¾71¾+i¾*•¾*À¾@ë¾S,¿<€¿½¿*Ý¿*À93À<mÀ'ªÀ6ÒÀ!	Á-+Á1YÁ4‹Á&ÀÁNçÁV6Â�ÂN
ÃZ\ÃQ·Ã?	ÄIÄ:iÄ,¤Ä$ÑÄ&öÄ Å>ÅI^Å=¨Å/æÅ"Æ(9Æ'bÆ*ŠÆ8µÆHîÆK7Ç3ƒÇ·Ç#ÓÇ,÷Ç5$È#ZÈ;~È<ºÈ;÷È<3ÉIpÉ<ºÉ)÷É%!Ê3GÊ7{Ê!³ÊÕÊóÊ/Ë37Ë3kË/ŸË5ÏËÌ-Ì"LÌ&oÌ–Ì;¯Ì4ëÌ Í7/Í.gÍD–Í$ÛÍ)Î&*Î)QÎ0{Î1¬Î ÞÎ)ÿÎ)Ï‚DÏ;ÇÏIÐ5MÐ?ƒÐ7ÃÐ<ûÐF8Ñ6Ñ?¶Ñ8öÑ/Ò)HÒrÒ=‘Ò9ÏÒ-	Ó'7Ó?_Ó8ŸÓ#ØÓ<üÓ19Ô
kÔDyÔ¾Ô&ÖÔ*ýÔ'(ÕPÕ>jÕ©Õ>ÆÕ Ö;&Ö:bÖ�Ö1´Ö-æÖ(×[=×3™×.Í×@ü×E=ØUƒØ3ÙØ.
Ù(<Ù*eÙ�Ù Ù´ÙÆÙÚÙîÙÚÚ&Ú8ÚJÚ[ÚmÚÚ�Ú¢Ú´ÚÆÚØÚêÚüÚÛ"Û4ÛFÛXÛjÛ~Û�Û¢Û¶ÛÈÛÚÛëÛýÛÜ!Ü3ÜEÜWÜkÜ}Ü�Ü¥Ü·ÜÉÜÛÜ/íÜÝ/ÝFÝC]ÝC¡ÝåÝþÝ0Þ;FÞ ‚Þ1£ÞÕÞSõÞhIß]²ßhàyà!•à·àÇà3æàá:áPádá{á#–á$ºásßábSâ(¶âOßâ/ãIãgã#xã œã/½ã6íã!$äFäKeä±ä'Áä'éä'å9åTåiåˆå1 å5Òå3æ0<æ4mæ/¢æ)ÒæGüæ1Dç7vç#®ç*Òçýç1èLèehèfÎè+5éaé!€é!¢éÄéãé%ûé(!êJêjê0|ê4­êâêûê ë:ë*Në&yë ë½ë&Ýë&ì&+ì<Rì'�ì!·ì!Ùì(ûì$í/:í&jí%‘í&·í"Þí*î+,î)Xî&‚î3©îÝîúî/ï);ï"eï.ˆï0·ï"èïðð:?ð3zð®ð#Ìð"ððCñAWñ.™ñ.Èñ+÷ñ*#ò!Nò&pò!—òA¹ò?ûò,;ó,hó)•ó(¿ó,èó&ô'<ôdô!€ô5¢ôØô:ëô.&õ(Uõ~õ1’õÄõßõ8õõ&.ö-Uö,ƒö0°ö/áö*÷<÷"\÷#÷+£÷$Ï÷%ô÷)øDø1dø–ø!´ø+Öø1ù24ù(gù-�ù,¾ùMëùI9úLƒúÐú%ïúû.5û&dû-‹û ¹ûÚûAïû1ü.EütüJ”üRßü32ýfý~ý(�ý(¹ý2âý$þN:þ‰þ$¦þTËþK ÿlÿ€ÿ›ÿ)¸ÿ+âÿ6
E.S#‚¦$Ä#é
++#W{Œ™'² Ú û'D;\:˜;Ó1(A"j"�N°:ÿ@:{—µÅß÷#.Ro Š « Ì í  / P q ’ ³ Ôõ#*"Nq‘­Ä*â)
)7a��¹Õì		?	[	w	“	¯	Ë	#ç	 
! 0,
! $]
! %‚
! %¨
! 3Î
! .7fx �+°Ü7ù/1a"|Ÿ ¸Ù'ù !
B
Y
%t
%š
0À
+ñ
4.R2�$´Ùó):(Y%‚¨)»6å%BBX=›$Ù)þ(>"S#v&š Á%â##,#Pt“§A¾<!=8_$˜ ½*Þ+	257h/ $Ð*õ% "F'i‘=°î!4*H_P¨,ù&)<-f&”'»ã#+9/e.•4Ä2ù,,_Yq¹!+AMA�Ñ)í$*<.g8–2Ï+7AyŒ>¢6áD2],�½(Ü..4c(ƒ(¬2Õ=!F'h'�$¸7Ý# %9 6_ 9– 9Ð 3
! !@>!3!³!)Ó!)ý!-'"5U"!‹"(­"Ö"Oõ"(E#(n#&—#¾#3Û#.$*>$Ai$9«$å$5ù$L/%/|%!¬%Î%Cí%11&/c&.“&(Â&ë&''%3'&Y'€')›'Å'Ú'+÷'/#(S(.d(Q“(Hå(4.):c)7ž)Ö)ð)7ý)'5*1]*.�*.¾*(í*1++H+.t++£+%Ï+2õ+(,$C,h,!z,\œ,Eù,)?-<i-9¦-à-)ÿ-").L._.q."�.'².-Ú.*/+3/)_/'‰/%±/ ×/ø/0#80"\0$0"¤0Ç0+ç0(1!<1^1%~1%¤1%Ê1(ð1&2'@2'h2'�2%¸20Þ2037@33x31¬3fÞ3VE45œ4#Ò4ö4565(M5)v5* 5,Ë5+ø5"$6YG65¡6a×6a97R›72î7!8I68N€85Ï8K9,Q9]~9_Ü9;<:<x:µ:'Õ:ý:*;'C;Ck;3¯;:ã;"<<A<-~</¬<Ü<÷<_=Lu=,Â=Hï=18>j> y>!š>+¼>è>?3"?HV?Ÿ?1³?7å?@2@ B@c@!ƒ@'¥@,Í@ú@5	A?A&WA6~AHµAHþAOGB'—B-¿BtíB=bCF C9çCW!DqyDœëDˆE2¨EÛE7òE+*F0VF-‡FµFÕFõF1G2EGxG5˜G*ÎG+ùG%%H!KH/mH$�H;ÂH.þH>-I#lI?�I#ÐI!ôI0J1GJ&yJ/ J4ÐJ2K28K8kK/¤KHÔKL4L:GL>‚L.ÁLLðL/=M&mM$”MC¹M4ýM:2N3mN)¡N@ËN&O$3O$XO-}O&«O$ÒOB÷OH:P-ƒP"±P$ÔPùPQ.2QaQ!Q"¡Q.ÄQ3óQ('R)PR/zRªR%ÆRìR,
! S7S$RSwS$’S&·S0ÞS&T86T)oTB™T'ÜT$U/)U7YU/‘U#ÁU!åU!V$)V.NV }V*žVBÉVW!WAWE^Wh¤W-
X;X8GX€X™X$¹XÞX÷X.
Y<Y VYwY,•Y-ÂY/ðY) Z5JZ6€Z/·Z"çZ8
! [?C[)ƒ[*­[2Ø[9\E\b\J�\)Ì\*ö\2!]9T]*Ž]+¹]3å]:^T^(f^<�^6Ì^@_2D_Mw_?Å_?`1E`9w`=±`hï`=Xa5–a5Ìa%b (bNIb.˜b6Çb0þb)/c)YcPƒc%Ôc2úc+-dYd1pd'¢d@ÊdIe,Ue&‚e)©e?Óe6f@Jf.‹f3ºf,îf)g(Eg0ng:Ÿg.Úg&	h<0h"mh�hJªhCõhK9iK…ifÑi*8jDcj>¨jFçj+.k4Zk4�k,Äk,ñk4l&Sl)zl*¤l$Ïl7ôl,mCm)Vm"€m=£m.ám0n0Anrn`†nzçn4bon—o.p>5p"tpA—pÙpJñp<q![q)}q%§q%Íqóq&r.r Lr!mr�rœr(¯r&Ørÿrs)sIs/ds”s­sÁs2Þs(t":t8]t9–t!Ðtòtuu7+u6cušu©u¼u4Ìuv*vHvfv%}v&£vÊvåv:w?w!^wx€wYùwSx$nx “x(´x1Ýx-y8=yQvyOÈy9zGRz&šzAÁzP{0T{E…{QË{
|%+||Q|{Î|DJ}�}§}(À}é}ú}~+~4C~Gx~2À~$ó~*/CZs ÎNïM>€Œ€0«€BÜ€ �A@�/‚�0²�0ã�K‚!`‚"‚‚"¥‚È‚ç‚%ƒ%*ƒPƒlƒfƒƒwêƒ,b„1�„%Á„ç„2…(6…+_…+‹…&·…+Þ…
! †)"†-L†0z†«†%Å†0ë†‡ :‡D[‡ ‡1¸‡'ê‡.ˆ2Aˆ!tˆ#–ˆ4ºˆ$ïˆE‰4Z‰(�‰j¸‰2#Š)VŠ@€ŠÁŠBÞŠQ!‹Ks‹B¿‹ Œ5#Œ"YŒ<|ŒT¹Œ+�:�2P�ƒ�3›�+Ï�Bû�+>Ž"jŽ"�ŽO°ŽD�=E�ƒ�/œ�Ì�6á�.�1G�#y��� ²�Ó�1ó�…%‘ˆ«‘$4’ Y’z’/Š’'º’'â’
! “8'“=`“-ž“ZÌ“7'”Q_”S±”•$•"=•$`•#…•'©•0Ñ•(–)+–9U–�–£–·–Ë–ß–-ñ–8—X—'w—GŸ—ç—!˜%"˜-H˜v˜Š˜'¤˜Ì˜Ù˜8ø˜ 1™$R™#w™›™¬™!¼™ Þ™.ÿ™.šHš5dššš¶š1Åš5÷š--›[›r›*ˆ›³›/Â›Cò›36œCjœ#®œ5Òœ
�,�"C�/f�.–�5Å�+û�4'ž;\ž+˜ž*Äž3ïž"#Ÿ&FŸmŸ^ˆŸ*çŸV #i #� "± "Ô ÷ ¡'5¡]¡({¡8¤¡Ý¡@ô¡25¢.h¢&—¢¾¢#Ö¢"ú¢-£,K£x£—£µ£/Ð£,¤(-¤5V¤WŒ¤ä¤7¥'9¥a¥{¥ ‘¥$²¥×¥+÷¥9#¦]¦*z¦,¥¦,Ò¦4ÿ¦"4§CW§&›§8Â§Aû§=¨'[¨%ƒ¨.©¨/Ø¨@©$I©An©K°©5ü©2ªQª'pª!˜ªLºªV«E^«+¤«,Ð«ý«M¬Bg¬,ª¬4×¬:­7G­;­5»­!ñ­3®4G®.|®B«®î®
! ¯.(¯+W¯0ƒ¯"´¯+×¯9°I=°I‡°.Ñ°*±-+±0Y±1Š±5¼±&ò±'²(A²/j²4š²)Ï²,ù²&³8?³6x³'¯³(×³&´'´6´=F´(„´3­´;á´DµFbµ'©µ4ÑµZ¶9a¶4›¶8Ð¶H	·!R·(t·E�·Eã·)¸;¸)Y¸1ƒ¸2µ¸aè¸iJ¹S´¹º(%º&Nº:uº@°º1ñºR#»Nv»+Å»3ñ»#%¼*I¼#t¼!˜¼+º¼5æ¼½1½P½h½/„½0´½/å½-¾.C¾7r¾ª¾¯¾¶¾Ï¾â¾ï¾K¿CT¿˜¿5®¿,ä¿<À1NÀz€À†ûÀ1‚ÁP´ÁeÂ*kÂ2–Â9ÉÂLÃHPÃ™Ã¯ÃÆÃ"ãÃ\Ä3cÄ7—Ä*ÏÄ.úÄ')Å,QÅ~Å˜Å"¶Å<ÙÅ1Æ4HÆ
}Æ+‹Æ	·ÆÁÆ5àÆ#Ç-:ÇhÇP€ÇPÑÇL"È[oÈ[ËÈ5'É]ÉrÉB�É?ÓÉ:Ê9NÊ.ˆÊ=·ÊMõÊ9CËo}ËRíËN@Ì;�ÌZËÌ&&ÍDMÍB’Í>ÕÍOÎ*dÎN�ÎÞÎ:øÎ]3ÏP‘Ï@âÏE#ÐliÐ5ÖÐ1Ñ)>ÑhÑ2…Ñ"¸ÑÛÑîÑ!Ò#ÒBÒ^Ò$yÒ/žÒ/ÎÒ/þÒ/.Ó3^Ó8’Ó3ËÓ8ÿÓ+8Ô3dÔ+˜Ô3ÄÔAøÔ@:Õ:{Õ9¶Õ9ðÕ;*Ö;fÖ3¢Ö3ÖÖH
! ×&S×z×%–×6¼×3ó×Y'Ø<�Ø8¾Ø÷Ø3ÙFIÙ*�ÙF»ÙDÚ.GÚ-vÚ!¤Ú(ÆÚHïÚF8Û.Û+®ÛQÚÛ%,ÜDRÜ}—Ü-ÝYCÝY�Ý<÷Ý¶4Þ¶ëÞ=¢ß2àßFà'Zà)‚à)¬à+Öà6á69ápá�á©á»áAÔá,âCâE]âA£â4åâ9ã;Tã/�ã=Àã/þãk.äšä#°äÔä"ñäå..å!]åå!˜åºå"Ðå"óåæ=.ælæ†æ�æ
±æ.¿æHîæw7ç!¯çBÑçFèQ[èS­è>é2@é séB”é3×é<ê*Hê sê”ê)´ê+Þê%
! ë%0ë4Vë0‹ë¼ëÐëìë?ìDLì‘ì%°ì(Öì'ÿìE'í)mí4—í*Ìí7÷í/îKîgîY‚îSÜî,0ïH]ïA¦ïZèïCðcð&zð¡ð¼ðDÏðHñ-]ñ6‹ñ5Âñøñ(ò'Aò
iò7wò¯ò$Ìò+ñò%ó"Có-fó%”ó!ºó<Üó>ô,Xô…ô,¢ôÏô@îô'/õ Wõpxõqéõn[öoÊö-:÷h÷1„÷5¶÷*ì÷7ø=OøE�ø1ÓøLùLRù-Ÿù*ÍùBøù>;ú>zú=¹ú=÷úg5ûi�û_ü9gü"¡üŒÄü"Qý#týJ˜ýCãý?'þMgþ8µþBîþ&1ÿ*Xÿ*ƒÿ%®ÿUÔÿ¿*‰ê7t.¬†Û8b3›4Ï _%=…ZÃ4 S_tJÔJ?jEªKðR<F�bÖ494n;£KßP+A|W¾?	AV	A˜	AÚ	X
! Xu
! LÎ
! LVhV¿EL\N©QøHJ
>“
BÒ
C<YV–PíK>KŠMÖ]$]‚EàB&PiWº`Bs>¶.õO$BtK·JKNKšJæK15}7³JëJ69�9»AõE7Q}DÏD@Y�š:+JfH±^úVY#°VÔ-+Ypw.�¿	Ç+Ñ}ýv{Jò+=	is%,¥nÒvAm¸u&dœl 8n :§ ;â <!:[!L–!%ã!&	";0">l"«"Ë"!Ó"õ"#<!#^#q#!�#-±#.ß#+$:$(X$8�$<º$B÷$F:%B�%ZÄ%+&(K&)t&:ž&NÙ&E('(n'1—'NÉ'<(/U(…(/œ(6Ì(c)+g)6“)CÊ)6*7E*)}*;§*Bã*&+;;+&w+\ž+û+",'<,>d,A£,*å,(-29-Al->®-#í--.4?.t."’.Qµ.@/BH/1‹/4½/ò/'
0'50	]0g0"‚0D¥0@ê0+1.H1w1,”11Á1)ó1+2"I2*l25—2Í2ä2ù23h,3•3²3 Ì31í314 Q4r4�4*¬4×4 ó45%05V5o5)‹5µ53Õ5	66&/6V6#m6‘6z«6b&7(‰70²7#ã718"98+\8ˆ8*¡8$Ì8!ñ89+9I9^9s9&‰9°9RÈ9/::K:*†:4±:.æ:);??;I;)É;2ó;&<6C<6z< ±<
Ò<7à<.=BG=JŠ=Õ=bî=.Q>1€>@²>@ó>4?S?Qo?1Á?4ó?4(@+]@,‰@,¶@>ã@#"A(FAKoA$»AàAûA8BPB>fBN¥BMôB3BC@vC·CÔCåC)D(/D@XD%™D+¿DëD2E+4E+`E$ŒE6±EèE5F<:F<wF4´F7éF!G/@G5pGA¦G7èG% H>FHP…HaÖH%8IB^I¡I»IÚI%÷I-J+KJ6wJ-®J.ÜJ-K(9K)bK1ŒK¾K8ÎKL L*3L`^L>¿LEþL$DMiM1xMªM=½MûMN'N,DNqN‘N:±NìN1	O;O4QO0†O8·OJðO%;P%aP/‡P&·PCÞP&"Q&IQpQ ŠQD«QðQRRL6R6ƒR3ºRAîR$0SUSsS�S¥SºS*ÏSúS#T?=T}T0šT8ËT,U21U dU"…U?¨UèU,VE5V!{V(�V8ÆV,ÿV,,W$YW~W-œWÊWRæWf9X( X7ÉX!Y#Y#CY=gYA¥YçYDZ2EZ$xZW�Z;õZ>1[>p[D¯[9ô[-.\3\\B�\Ó\4ñ\)&]P]!j]Œ]3Ÿ]Ó]+â]^+^(A^j^5€^¶^DÕ^=_]X_#¶_CÚ_,`<K`6ˆ`;¿`6û`n2a>¡a*àa6b4BbIwb%Áb'çb.c >c$_c-„c!²c&Ôc ûc$d%Ad$gdŒd d´d7½dõde/e(Je%se0™e!Êe"ìe'f(7f>`f:Ÿf5Úf:g4KgE€g*Æg)ñg;h6Wh+Žh1ºh=ìh*iIijhiÓi!ói7j!Mjoj�j1¥j0×j)k)2k\k|k“k®k1Ëk8ýk96l0pl¡l³l=Ål\m\`mJ½m$n#-nQnflnMÓn!o @o]ao,¿o1ìo0p+Op{p ˜pM¹p-qI5qhq2èqr!+r"Mr,pr�r4»rðr*	s 4sOUs¥sF¿s=tDt^t$wt$œt8Át^út(Yu(‚u.«u%Úu7v38vClv1°v4âv!wJ9w&„w5«wáw5x
! 6x:Ax=|x/ºx*êxyS'yC{y%¿y2åy#z<z'\z-„zN²z<{4>{7s{^«{
! |V)|6€|R·|ˆ
! }8“}1Ì}#þ}#"~F~Bb~@¥~0æ~9&Q4x$­3Ò6€%=€-c€?‘€Ñ€ä€&þ€%�+E�1q�0£�Ô�:ò�)-‚)W‚(�‚(ª‚#Ó‚÷‚&ƒ=>ƒ%|ƒ)¢ƒ,Ìƒ(ùƒ-"„+P„|„ ™„º„+Ú„…"…>…P…
! h…s…‘…©…É…$æ…)†.5†$d†(‰†(²†Û†(ú†6#‡3Z‡3Ž‡4Â‡:÷‡?2ˆ4rˆ	§ˆ%±ˆ'×ˆ-ÿˆ5-‰!c‰1…‰·‰)Õ‰ÿ‰#Š55Š8kŠ5¤Š+ÚŠ8‹1?‹%q‹&—‹¾‹.Ü‹Œ8*Œ-cŒ'‘Œ*¹Œ4äŒ�$4�(Y�5‚�#¸�)Ü�)Ž*0Ž![Ž"}Ž" Ž.ÃŽòŽ
�!(�HJ�/“�MÃ�@�R�g�e~�Yä�&>‘e‘ }‘ž‘"º‘SÝ‘1’N’'k’)“’½’6Ü’.“B“a“€“Ÿ“¾“?Ï“G”?W”*—”!Â”ä”#ó” •*8•)c•,�•4º•)ï•$–=>–<|–=¹–.÷–1&—)X—1‚—4´—,é—'˜3>˜Br˜4µ˜7ê˜/"™:R™2�™4À™.õ™#$š0Hš3yš?­šBíš40›œe›Bœ&EœUlœEÂœ5�4>�)s�)��-Ç�"õ�@ž8Yž"’ž9µž!ïžFŸ$XŸ*}Ÿ+¨ŸÔŸ-êŸ' )@ j E† MÌ U¡Fp¡0·¡&è¡5¢'E¢5m¢£¢¼¢Û¢ú¢b£hz£7ã£0¤uL¤AÂ¤9¥J>¥0‰¥7º¥ò¥3
! ¦&>¦-e¦(“¦ ¼¦&Ý¦ §%§V>§•§­§Ë§:ç§0"¨'S¨#{¨*Ÿ¨9Ê¨M©!R©'t©'œ©9Ä©3þ©42ª;gª1£ªMÕª'#«6K«/‚«2²«2å«,¬IE¬/�¬3¿¬ó¬­3­/P­3€­7´­3ì­ ®)@®)j®+”®/À®2ð®$#¯-H¯%v¯œ¯»¯JÛ¯@&°$g°!Œ°)®°#Ø° ü°0±4N±Hƒ±(Ì±õ±²%²':²b²1w²©²)Å²(ï²Z³&s³Bš³+Ý³"	´,´@´V´9r´S¬´µ2µ6Cµ=zµT¸µ,
¶7:¶Hr¶3»¶/ï¶*·6J·0�·X²·J¸fV¸8½¸ö¸%¹,8¹$e¹.Š¹9¹¹(ó¹(º~EºHÄº4
»9B»7|»=´»3ò»/&¼4V¼.‹¼.º¼4é¼.½.M½,|½9©½9ã½9¾:W¾9’¾:Ì¾9¿9A¿W{¿WÓ¿.+ÀZÀoÀ_�À7ïÀ$'Á!LÁ"nÁ&‘Á0¸Á)éÁÂ/ÂNÂ.aÂ*�Â,»Â èÂ0	Ã#:Ã=^ÃœÃ<·Ã.ôÃ)#Ä5MÄ*ƒÄ®ÄÎÄGêÄ32Å+fÅ!’Å ´Å-ÕÅOÆSÆ<lÆ-©Æ*×Æ$Ç7'Ç._Ç(ŽÇ.·Ç-æÇÈ7$È.\È/‹ÈF»È3É'6É;^É"šÉ+½É3éÉ@ÊD^Ê%£ÊÉÊ+éÊ3ËIËcËyË”Ë>´Ë0óË-$Ì(RÌ<{Ì¸Ì#ÖÌ#úÌÍ(;ÍfdÍ¡ËÍmÎ$†Î†«Î62ÏMiÏ:·Ï6òÏ6)Ð/`Ð%�Ð-¶Ð<äÐ5!Ñ&WÑ7~ÑA¶ÑGøÑ@Ò@XÒ$™Ò2¾Ò0ñÒ/"ÓRÓ fÓ:‡ÓÂÓ*ÙÓUÔOZÔAªÔPìÔ7=Õ=uÕ[³ÕDÖVTÖ;«Ö$çÖ3×5@×0v×6§×@Þ×?ØD_Ø@¤Ø;åØ…!Ù…§Ù;-ÚiÚ}Ú’Ú¦Ú¼ÚÐÚãÚøÚÛ!Û5ÛJÛ`ÛtÛŠÛ¤Û¸ÛËÛÜÛöÛÜ!Ü7ÜJÜ]Ü9uÜƒ¯ÜL3Ý €Ý–!ÞV¸ÞMßQ]ßD¯ß(ôß(à"Fà3iàd�à3á)6á%`á=†áHÄáC
â>Qâ=�â?Îâ-ã(<ãBeãH¨ã7ñã)äZGä`¢äYå_]åP½åBæBQæ[”æ8ðæ\)çb†ç\éçXFèKŸèNëèQ:éJŒé8×éGê2Xê$‹êN°ê)ÿê1)ë[ë-zëi¨ë>ì?QìF‘ì+Øì4í09í0jí1›íFÍí9î%Nî!tî+–î+Âî+îî,ï+Gï+sï,Ÿï,Ìï*ùï$ð,Bð&oðK–ðKâðU.ñB„ñBÇña
! ò{lòAèò7*ó`bó4Ãó]øó&VôM}ô"ËôOîôO>õOŽõ'Þõ)ö)0ö)ZöF„öHËöW÷&l÷/“÷ Ã÷)ä÷PøX_øG¸ø@ù-Aù.où9žùAØù^úIyú7Ãúiûúleû-Òû5ü;6ü5rü9¨üUâü58ýQnýˆÀý!Iþ?kþ5«þ?áþ=!ÿD_ÿ7¤ÿ-Üÿ"
! A-=o%­1Ó268.o2žWÑ)8.X‡<™2Ö-	-7e�… 42Q„(£EÌE$XM}0Ë.üH+Gt¼3Ü>&OXvBÏF$#k1�#Á'å)
	77	%o	•	*³	"Þ	!
! 7#
! @[
! )œ
!  Æ
! 6ç
!  R?/’(Â"ë#,P"m1�9Âü)
(>
g
B‚
HÅ
$-RlŠ(Ÿ Èéü1:+l/˜/È(ø8!&Z�# "Ä8ç *;!f6ˆ¿*×6*92d$—¼Úï*)?,i0–7Ç!ÿ#!0E&v#�FÁ;/DAt@¶3÷/+([8„!½Mß6-8d.�3Ì-M.4|:±@ìJ-Kx;Ä,A-Ho>¸U÷&M'tLœHéU2FˆCÏ@=T8’OË-I6d0›3Ì/08F0D°1õ$' HL <• ;Ò E!0T!‡…!]
"nk"}Ú"YX#n²#T!$Kv$NÂ$O%7a%I™%,ã%0&A&.]&.Œ&8»&'ô&&'+C'%o'>•'YÔ'b.(#‘(Hµ((þ($')/L)|)4’)MÇ)‚*˜*-·*Cå*C)+-m+›+-¹+!ç+ 	, *,&K,r,�,-°,5Þ,.-%C-i-}-�-'§-Ï-ã-0û-0,.].r.’."±.'Ô.ü.H/(c/3Œ/1À/3ò/5&0\0/|0¬0FÃ0(
! 1)311]18�1+È1)ô1A2+`2/Œ26¼2ó2.s3+¢30Î3ÿ3(4)C4*m4-˜4*Æ4,ñ45<5"[5 ~5Ÿ5µ5Ì5Aç5 )6EJ6#�6 ´67Õ6,
7(:74c7˜7(²7/Û7/8.;8j8‰8%¤8=Ê8494=9+r93ž90Ò93:,7:)d:7Ž:6Æ:!ý:&;7F;%~;2¤;.×;)<+0<.\<6‹<Â<4Ý<=,0=-]=‹="¡=/Ä=?ô=+4>B`>2£>6Ö>
?4-?Fb?'©?Ñ?!è?!
! @%,@R@7f@2ž@4Ñ@>A5EA1{A"­A%ÐA1öA.(BWB&sB!šB¼BØB^ðBOC3kC%ŸC0ÅCJöC1AD2sD(¦DÏDæDúDE#E@AEC‚ENÆENFdF7xF°F'ÅF'íF(G$>G>cG=¢G)àGE
! HPHhH!„H¦H¸HËH1âHI4I"TIwI%�I6¶IíI<JAJ[JpJŠJ,¥J&ÒJ"ùJHK3eK/™KUÉK&LLFL3“LYÇL8!M3ZM4ŽM ÃMäM÷MN&'N*NN&yN* N,ËN.øN'OEOeO�O9šOCÔO)PBP\PsP"ŽP±P7ÑP4	QJ>Q‰Q§Q1½Q.ïQ*R:IR „R¥RÂRàRöRS,+SXS5pS.¦SÕS%õS/T0KT|T›TµTÒTßT-öT"$U-GU,uU&¢U'ÉU+ñUV5VGVeVzV”V­V,ÀV5íV#W;W*XW)ƒW4­WâW!ÿW!X/<X*lX)—XÁXOàX0Y*HY!sY$•Y$ºYßY#úYZ=ZVZ$tZ™Z³ZÍZìZ [1&[7X[�[Iª[8ô[-\!9\#[\&\¦\%Æ\ì\5]=](S]@|]B½]A^ B^c^ ƒ^-¤^<Ò^!_11_c_ƒ_Ÿ_!º_PÜ_6-`<d`"¡`.Ä`ó`GaGZa'¢a-Êa3øa ,bMb(jb%“b1¹b#ëb5c*Ec'pc$˜c'½c3åcJd>dd%£d+Édõd"e$$eIe!^eA€eEÂeDf'Mfufx�f›	g}¥g#h-8h#fh2Šh:½hMøh/Fi8vi7¯i'çi(j?8j.xjK§j2ój$&kZKk8¦k#ßkll<l%Zl7€l&¸l,ßl-m!:m \m6}m´m+Ómÿmn<nZnun!”n,¶nãn#÷noJ9o=„o2Âo=õo23pBfp7©p=ápq<(qAeq§q/Äqôqr&,r-Sr&�r¨r!ÈrêrsB$s"gsŠs©s9Ès4t57tmt$�t!¦t.ÈtG÷t$?udu |u%�u)Ãuíu
! v-%vSvrv&†v­v½v%Òvøvw*wh>w>§wæwÿwPx9gx9¡x*Ûx>yEEy?‹yzËy#Fz8jz-£zDÑz>{1U{‡{ {¹{É{å{|!|!?|/a| ‘|)²|5Ü|N}a}s}f“}Kú}_F~]¦~$.)9X2’<Å;€G>€
! †€'‘€
! ¹€Ä€]Û€&9�1`�D’�=×�E‚<[‚0˜‚8É‚KƒKNƒ'šƒ?Âƒ„„->„0l„$�„EÂ„0…9…)W…&�…¨…!»…\Ý…%:†<`†(�†jÆ†G1‡9y‡³‡/Ê‡.ú‡))ˆ)Sˆ }ˆžˆ¸ˆ4Ñˆ&‰+-‰*Y‰(„‰F­‰0ô‰L%Š4rŠ§Š'¶ŠUÞŠ)4‹6^‹)•‹6¿‹	ö‹*Œ+Œ0KŒ1|ŒU®ŒN�!S�2u�¨�]»�dŽ]~ŽVÜŽU3�d‰�Uî�ND�U“�é�G‘I‘+^‘Š‘*¡‘/Ì‘+ü‘/(’ X’Py’/Ê’/ú’,*“&W“9~“$¸“Ý“*õ“& ”-G”@u”-¶”@ä”8%•K^•8ª•Kã•/–1N–-€–+®–Ú–.ö–(%—N—Tb—2·—2ê—˜,˜3G˜7{˜ ³˜)Ô˜+þ˜**™5U™‹™1”™$Æ™!ë™,
š<:šUwš!ÍšBïš=2›Fp›:·›ò›0œuBœ#¸œÜœ?úœ::�Fu�=¼�Iú�|Dž=Áž7ÿžC7ŸT{ŸZÐŸ[+ d‡ Eì c2¡o–¡9¢3@¢)t¢!ž¢À¢:Þ¢:£[T£#°£Ô£=ô£2¤/J¤%z¤ ¤À¤1à¤I¥C\¥D ¥%å¥[¦!g¦‰¦M©¦M÷¦GE§I�§K×§?#¨#c¨%‡¨4­¨wâ¨2Z©I�©×©0ë©ª6ª:Tª1�ª_Áª(!«&J«/q«+¡«FÍ«-¬+B¬@n¬<¯¬8ì¬5%­6[­’­®­5Ë­,®2.®?a®¡®»®7Ó®B¯,N¯'{¯6£¯+Ú¯+°62°?i°)©°2Ó°7±/>±n±ƒ±!•±'·±(ß±Q²Z²-z²=¨²#æ²!
! ³5,³)b³%Œ³.²³/á³0´B´.a´6�´#Ç´ë´þ´3µ6Qµ+ˆµ'´µ)Üµ ¶A'¶"i¶(Œ¶µ¶Ç¶Þ¶-ê¶·	'·A1·s·†·:¦·á·O¸'P¸&x¸Ÿ¸?¿¸ÿ¸%¹LC¹�¹¦¹Ä¹0â¹º†ºŸºm°º«»ZÊ»&%¼%L¼#r¼B–¼CÙ¼K½Vi½vÀ½7¾RG¾;š¾KÖ¾*"¿MM¿›¿¯¿*Ê¿$õ¿*À"EÀ<hÀ8¥À ÞÀ$ÿÀ"$Á&GÁnÁ‡Á*§Á5ÒÁ.Â07Â4hÂ8�ÂAÖÂ6Ã2OÃ8‚Ã9»Ã2õÃ2(Ä8[Ä1”Ä ÆÄ<çÄ2$Å>WÅ5–Å>ÌÅ)Æ05Æ"fÆ‰Æ£Æ¾Æ%ÚÆ"Ç #Ç DÇ-eÇ"“Ç!¶ÇØÇ%òÇ%Èk>ÈkªÈkÉq‚ÉRôÉ�GÊ'ØÊ4ËJ5ËX€Ë/ÙË	ÌÌ'7Ì _Ì+€Ì!¬ÌÎÌßÌýÌÍ2ÍOÍcÍ5wÍ-­ÍÛÍçÍóÍÿÏÁÐ¼ÃÐ¹€Ñ:Ò SÒtÒ&ŠÒ1±Ó2ãÓRÔiÔ~ÔŠÔ–ÔY®ÔYÕLbÕJ¯Öú×KØLOØZœØ=÷ØI5Ù;ÙK»ÙXÚ=`ÚPžÚïÚ$Û'+ÛSÛ$jÛ'�Û&·Û&ÞÛ.Ü4Ü;Ü*BÜ+mÜ›™Ü25ÝhÝnÝˆÝ&§Ý2ÎÝ4Þ(6Þ_ÞvÞ”Þ´ÞËÞäÞßß%8ß"^ß�ßžß´ßÓßjìßlWà3Äàøàá'4á\á |á�áµáÊáçáâ%â!Bâ-dâ*’â*½â;èâ%$ãJã dã0…ã7¶ã;îã;*ä/fäK–äKâä%.å1Tå3†å$ºå>ßå3æ6Ræ3‰æ½æCÛæ)çZIç}¤ç9"è\\è‚¹èv<éA³éQõé1GêyêBùêÞ<ëLì`hì]Éìd'í>Œí;ËíBîMJîQ˜îPêî;ïE»ïAðRCð9–ðTÐðN%ñ5tñ�ªñM8ò7†òB¾òEó†Gó9Îó’ôF›ô>âôŒ!õ9®õ‚èõFköM²öŒ÷F�÷FÔ÷NøQjø ¼øS]ù¢±ùOTúM¤ú[òú^NûO­ûIýûAGü>‰ü>Èü@ý|HýSÅýKþTeþFºþMÿPOÿ: ÿGÛÿ4#:X5“(É&òc8}.¶Nå4+@8lC¥é)ý0'	X9b\œrù;lJ¨8ó),VGhQ°),B$\$�¦*¾ é6
! %Ag(„(­/Ö2	"9	"\	 	 	
! º	Å	$Ù	þ	8
! @P
! J‘
! ¡Ü
! ~;œ;Ø64VkBÂO
*U
'€
)¨
HÒ
>tZÏ9ïM)&w>žÝæ þ"'BKj<¶ró fA‡ÉÛ6í$[5‘O—8çI >j1©\Ûv8Z¯l
! =wyµV/‰†>{OVËP"XsVÌl#F�7×\ZlhÇ>0VoRÆa,{0¨@ÙOIjP´Í¶ÓéŠ‡t ˜ü £•!c9"e�"­#¦±#vX$BÏ$%+%*;%,f%,“%À%>Ô%&!1&S&m&?�&BÁ&'"'qA'=³'Cñ'35(9i(k£(5)*E)p)K)>Ë)5
! *A@*D‚*=Ç*D+8J+Yƒ+9Ý+B,9Z,-”,@Â,1-J5-W€-BØ-7.�S.gÕ.H=/G†/NÎ/80=V0=”0GÒ0<1lW1]Ä1d"2L‡2NÔ2#35;3kq3WÝ3V54FŒ4JÓ4ƒ5V¢5Uù5KO6„›6l 7x�7v8A}8\¿8�9_ª9h
! :cs:r×:yJ;]Ä;h"<[‹<}ç<ce=WÉ=l!>oŽ>Cþ>BB?W…?BÝ?y @sš@PAo_AOÏA~BZžBnùBFhCK¯CLûCYHDn¢D]EEoE?µE/õEC%F>iF<¨F"åF
G@G5WG5�GHÃGFH)SHe}HQãHs5In©I{Jì”J�K€�L‘M~£M”"N�·N GO}èOŽfPXõPDNQf“QÒúQôÍRsÂS„6Tq»T‚-U‚°U“3VpÇV�8WFºWBXˆDXªÍXNxY_ÇYU'Zf}Z]äZnB[K±[\ý["Z\#}\e¡\r]!z]:œ].×];^B^2Z^�^%«^!Ñ^ó^1_5=_>s_(²_wÛ_<S`>�`TÏ`[$a_€aPàaG1bMyb6Çb[þb?Zc-šc+Èc-ôc5"dXd+xd¤d=ºdMød9Fe]€eAÞe` f@�f^Âf?!gagR{g9Îg&hA/hFqh8¸h?ñh:1i8li8¥i6Þi1j9Gj˜�j\k*wk5¢k+ØkJlBOl!’l>´l!ólUmPkm0¼mRímq@n*²n-Ýn,o+8o_doBÄoAp8IpC‚pkÆpA2qCtqJ¸q=rFAr7ˆrLÀr?
s8MsR†s;ÙsLtVbt<¹tBöt?9ubyu6Üu:v<Nv;‹v)Çv@ñv=2wupw"æw&	xC0xAtx(¶x,ßx@yXMy7¦y;Þy+zQFzH˜z9áz8{BT{C—{ZÛ{W6|SŽ|3â|@}qW}�É}+W~0ƒ~2´~Mç~15Rg0º!ë!
€>/€Cn€l²€H�Xh�LÁ�Z‚Qi‚G»‚1ƒ.5ƒ:dƒcŸƒ?„ C„�d„sæ„tZ…IÏ…:†>T†=“†aÑ†Y3‡8�‡IÆ‡JˆG[ˆp£ˆ'‰:<‰„w‰rü‰joŠHÚŠ?#‹>c‹s¢‹wŒ<ŽŒ/ËŒ:ûŒL6�ƒ�IŸ�Té�d>Žz£ŽD�dc�xÈ�+A�Jm�T¸�7
‘8E‘G~‘=Æ‘?’@D’%…’<«’Hè’O1“G�“¦É“p”3�”XÁ”=•AX•6š•9Ñ•2–9>–2x–C«–<ï–3,—!`—:‚—"½—3à—H˜K]˜1©˜8Û˜U™sj™pÞ™kOšD»š^›4_›:”›9Ï›1	œe;œC¡œ-åœ-�<A�?~�É¾�DˆždÍž12Ÿ9dŸ:žŸKÙŸ4% 5Z J� IÛ C%¡7i¡7¡¡OÙ¡0)¢-Z¢ˆ¢§¢JÄ¢I£EY£7Ÿ£P×£2(¤a[¤%½¤3ã¤1¥SI¥2�¥MÐ¥¦<;¦4x¦C­¦Eñ¦G7§o§Tï§)D¨)n¨/˜¨MÈ¨B©?Y©C™©EÝ©s#ª)—ª>ÁªM«EN«x”«5
¬3C¬Iw¬FÁ¬L­DU­Dš­Dß­D$®3i®0�®!Î®Cð®!4¯ÔV¯Ã+°7ï°Û'±Q².U².„²9³²]í²5K³:�³K¼³.´J7´G‚´@Ê´@µ=Lµ(Šµ/³µ1ãµ,¶.B¶.q¶W ¶8ø¶)1·([·'„·?¬·8ì·7%¸:]¸˜¸;²¸2î¸C!¹Je¹U°¹VºU]ºV³º4
! »h?»4¨»GÝ»E%¼?k¼2«¼2Þ¼+½.=½Rl½5¿½Lõ½JB¾5�¾7Ã¾!û¾:¿GX¿J ¿8ë¿6$Àl[À4ÈÀCýÀAÁ1aÁ“Á,³Á9àÁÂ&0Â$WÂ\|Â2ÙÂ0Ã4=Ã8rÃM«ÃOùÃ3IÄb}Ä;àÄ>Å,[Å-ˆÅ?¶Å1öÅ((Æ8QÆ,ŠÆ2·Æ5êÆ4 Ç<UÇ5’Ç2ÈÇ5ûÇ*1È9\È/–È0ÆÈB÷È>:É#yÉ*�É!ÈÉMêÉ98Ê>rÊ1±ÊeãÊXIËT¢Ë÷ËSÌVcÌTºÌLÍT\Íc±ÍSÎSiÎ8½ÎŸöÎJ–ÏIáÏ9+ÐXeÐa¾Ða Ñ‚Ñ1 Ñ&ÒÑaùÑK[ÒP§ÒDøÒ==ÓI{ÓCÅÓZ	ÔOdÔL´Ô=ÕO?ÕC�ÕGÓÕRÖ8nÖE§ÖIíÖN7×E†×GÌ×IØ>^ØP�Ø0îØMÙEmÙ"³ÙWÖÙ;.ÚKjÚb¶Ú\Û&vÛC�Û%áÛ*ÜN2Ü,�Ü(®Ü'×Ü4ÿÜ.4ÝcÝ"~ÝC¡Ý#åÝ'	Þ41Þ/fÞA–ÞGØÞ9 ß8Zß0“ßlÄßh1à7šàpÒà.Cá3ráK¦á*òá#â2AâCtâ8¸â-ñâ=ã#]ã/�ãC±ã?õãÏ5ä9å7?åBwåRºåC
æEQæ:—æ\ÒæŒ/ç`¼ç;èQYèR«è>þèT=éa’éTôé7Iê,�êJ®êCùê>=ëI|ëiÆëD0ì:uìF°ìs÷ìNkíSºí@îZOîEªîKðîB<ï9ïA¹ïûïMð5bð3˜ð4ÌðLñ*NñDyñ¾ñÚñöñBò`NòE¯òBõò_8óa˜ó>úóS9ô]�ôeëô?Qõq‘õ:öD>öƒö/›öËöâö#÷#%÷FI÷Q�÷5â÷�øk©ø7ù[MùG©ùlñù>^úW�úõúNuûlÄût1üy¦ü" ý/Cý#sý#—ýL»ý:þjCþ:®þ0éþ@ÿ<[ÿ0˜ÿSÉÿ/LM5šQÐW"Ez\À@'^.†'µÝ@÷8…J5Ð7M>FŒFÓ;.V@…VÆ$,BGo,·GäP,C}rÁq4`¦l	tt	†é	rp
! 5ã
! E5_6•<Ì!	>+>jI©FóU:
Z�
Të
Z@?›,Û]vfiÝEGF�3ÔdWmxÅ�>#ÏRóGFMŽGÜO$Pt�Å€S1Ô7F>…=¥eã>I0ˆD¹XþjW^ÂK!+mf™7W80�(Á*ê&'<%dGŠ\Ò2/]b8À$ùM(lK•Fá1(KZ,¦-Ó`QbQ´" f) R� Pã S4!Aˆ!XÊ!4#"4X"�"C­"Oñ"FA#Nˆ#=×#9$&O$0v$O§$7÷$#/%KS%pŸ%,&3=&6q&5¨&(Þ&.'H6''Q‘';ã',(ML()š(.Ä(+ó(2)#R)1v).¨)C×)K*Ng**¶*lá*$N+Bs+T¶+0,(<,*e,;�,mÌ,3:-&n-?•-AÕ-M.5e.L›.2è.4/9P/GŠ/9Ò/40 A0Sb04¶0`ë0RL11Ÿ1�Ñ1�S23Õ2s	3k}3Qé3I;4Q…40×4n54w5R¬56ÿ5(66{_6�Û6•k7M88O8cˆ8.ì8)9'E9@m9,®9'Û9:%":aH:eª:ƒ;Q”;Pæ;>7<.v<7¥<LÝ<*=/J=)z=0¤=jÕ=3@>Rt>QÇ>P?1j?#œ?SÀ?(@E=@(ƒ@*¬@A×@NAYhA·ÂA'zB9¢B9ÜB=CITCRžCMñCU?D]•DóDE-E6ME=„E~ÂE*AF@lF­F¼FÛFöF=GOG^G@{GN¼GVHObH9²H@ìHI-IlwIqäI¸VJœK•¬KxBLe»La!M=ƒMVÁM<NOUN=¥N<ãNV OUwO[ÍOi)PP“P]äP^BQK¡QHíQP6R‡RŸR"¾R:áR/S'LS?tSP´S0T/6T?fT,¦T+ÓTBÿT5BU8xUJ±U6üU43V;hV%¤VPÊV^WÂzWE=XLƒX.ÐX5ÿXO5YP…YNÖY:%ZN`Z¯ZPÍZ][7|[P´[@\$F\Lk\?¸\Aø\6:]]q]/Ï]'ÿ]G'^>o^/®^wÞ^YV_=°_dî_wS`WË`=#adaa%Æa^ìaVKb^¢b”c—–c1.dC`d?¤dIädE.e&teH›eBäe0'f:Xf1“f>Åf?gsDg0¸gCég€-h<®h4ëh0 i;Qi5�i)Ãi+íijjD„jGÉjJkL\k’©kD<l8�lJºl3mC9m>}m6¼mHóm2<n:on0ªn;Ûn.o+FoJro;½o0ùo+*p1Vp@ˆp`Ép„*qP¯q.r(/rkXr-Är"òr1sCGs/‹sE»s9t>;t$ztDŸtät<du0¡u(Òu*ûu,&vJSvnžvx
w=†wmÄwm2x4 x,Õxy"y5>y/ty;¤y?ày( z6IzB€z2Ãz5öz=,{&j{=‘{8Ï{A|EJ|C�|)Ô|4þ|,3}+`}Œ})ª}EÔ}~ ~1~…N~6Ô~4@@8� ºÛ ó
! €*€1J€3|€°€.Å€*ô€&�\F�9£�Ý�#û�)‚OI‚O™‚^é‚zHƒHÃƒ-„:„/Z„mŠ„ø„+…-<…Kj…¶…È…"è…!†)-† W†Wx†WÐ†Q(‡Sz‡rÎ‡ AˆKbˆY®ˆ2‰7;‰!s‰•‰Jµ‰Š(Š?ŠJVŠF¡ŠBèŠ%+‹4Q‹!†‹"¨‹+Ë‹8÷‹90ŒAjŒ'¬Œ,ÔŒK�M�(l�7•�/Í�9ý�67ŽnŽ.‚Ž@±ŽQòŽ%D�6j�F¡�&è�8�9H�\‚�Pß�G0‘0x‘ ©‘8Ê‘(’,’8I’9‚’C¼’Æ“ÖÇ“[ž”\ú”ÎW•Ê&–zñ–Šl—\÷—]T˜Ô²˜¼‡™hDšf­šI›Ð^›¸/œfèœdO�Œ´�>AžF€ž7Çž-ÿž.-Ÿ2\Ÿ(�Ÿ&¸Ÿ6ßŸ, *C ,n �› �,¡9®¡aè¡fJ¢v±¢6(£%_£`…£2æ£%¤L?¤WŒ¤?ä¤[$¥:€¥U»¥0¦4B¦ew¦)Ý¦/§7§3O§Jƒ§ Î§,ï§&¨ C¨8d¨V�¨Hô¨.=©Ol©š¼©6Wª<Žª/Ëª'ûª,#«&P«,w«"¤«&Ç«+î«%¬<@¬5}¬³¬8Ë¬6­';­5c­k™­;®qA®#³®×®9ê®X$¯&}¯.¤¯-Ó¯° °)½°ç°8±)>±hh±>Ñ±D²-U²1ƒ²:µ²Uð²LF³(“³(¼³$å³'
! ´2´ N´o´LŒ´ Ù´]ú´MXµN¦µNõµ,D¶,q¶Ež¶2ä¶7·@O·7�·GÈ·G¸X¸s¸‹¸«¸aÅ¸9'¹Da¹j¦¹eº&wº-žº Ìº'íº+»*A» l»I�»U×»!-¼#O¼s¼„¼&™¼*À¼ë¼3½5½2K½'~½¦½%¾½ä½¾"¾.?¾n¾.‹¾%º¾ à¾1¿3¿$P¿;u¿±¿Ç¿æ¿h÷¿`À-wÀ.¥À1ÔÀ*Á21Á1dÁ%–Á"¼Á,ßÁÂ&ÂEEÂM‹ÂCÙÂBÃ8`ÃE™Ã_ßÃQ?Ä`‘Ä@òÄ3ÅLÅ:eÅ ÅV»Å2Æ4EÆzÆ“Æ.°ÆHßÆI(ÇSrÇYÆÇX È,yÈ/¦È?ÖÈAÉBXÉL›ÉRèÉB;ÊC~ÊMÂÊSËgdËwÌËDÌFÄÌCÍ!OÍ(qÍ1šÍiÌÍ[6Î'’ÎCºÎ0þÎ//Ï"_Ï$‚Ï§Ï0ÇÏøÏhÐquÐ{çÐecÑCÉÑx
Ò(†Ò1¯ÒKáÒC-ÓIqÓÞ»ÓsšÔæÕ�õÕ¾†ÖdE×5ª×\à×1=Ø2oØ<¢ØBßØ^"Ù$�Ù)¦ÙJÐÙaÚ+}Ú)©Ú2ÓÚOÛVÛpÛ?�Û.ÐÛÿÛgÜ5„ÜaºÜQÝYnÝ@ÈÝ9	ÞLCÞK�ÞMÜÞ\*ß[‡ß]ãßKAà]�àdëàtPáIÅáRâQbâS´âbãakãcÍãZ1äAŒäaÎä_0ål�åLýå\Jæ\§ælç4qç,¦ç‹Óç_èßèIþè#Hé/lé*œé,Çé6ôéF+êrêŒê+žê7Êê™ëJœë5çë ì4>ìwsì:ëì7&í^ídzíeßíoEîjµîŒ ïu­ïF#ðWjðSÂðXñYoñ:ÉñDò]IòC§òMëòO9óI‰óXÓóG,ôYtô-Îô6üô13õ-eõ%“õ@¹õ}úõ]xöÖö6öö#-÷ Q÷\r÷EÏ÷<ø9Rø6Œø?Ãø>ùJBù@�ù5ÎùOú7Tú8ŒúBÅú*û/3û1cûe•ûhûûjdüUÏü}%ý[£ý1ÿý=1þOoþ'¿þ.çþ&ÿF=ÿV„ÿFÛÿ1" T"u@˜SÙ;-'i0‘9Â:üV7YŽ1è[-vF¤nëLZE§^í_LI¬5ö>,@kD¬/ñ !/B2r'¥.Íü.GM@•8Ö	=+	8i	1¢	4Ô	3	
! =
! ,]
! #Š
! ^®
! B
LPf�/?44t!©DËF
]W
Mµ
F;JU†7Ü8SMA¡RãI62€,³5à;-R+€6¬=ã2!8T,�4º6ïY&W€YØ=28pQ©+û2'ZIz9Ä,þ5+La0®+ß@1L'~=¦'ä55BLx8Å7þ?6?v0¶1ç:ZT:¯%ê95JF€,ÇHô;=;y;µ7ñ)#Aeb‚.å#8+R.~2­?à/ 4P!…)§2Ñ) .. 5] -“ Á ,Ü d	!6n!Z¥!7"(8" a"3‚"E¶".ü"=+#)i#/“#$Ã#gè#'P$.x$§$¸$�Í$:O%]Š%è%'&+&4H&}&c�&C'VE'_œ'Vü'PS(¤(º(,Ë(Xø(4Q)X†)Pß)L0*M}*MË*a+ƒ{+Pÿ+hP,a¹,*-.F-1u-*§-2Ò-1.%7.2].,�.)½.ç.H/L/ f/:‡/,Â/Hï/ 80KY0d¥0O
! 1XZ1³1Ì1é1,2022>c24¢2G×2#3/C3+s36Ÿ3$Ö3#û3!4*A4l4#ˆ4,¬4%Ù47ÿ4'75H_5¨58Ã5oü5&l67“6SË6B7-b7I�7DÚ7;8%[89�8»8^Ö8759#m9%‘9…·9=::T:Q�:7á:K;e;€; ;½;Ü;ú;?<>P<7�<Ç<Þ<ü<=48=2m= =9´=Bî=I1>@{>A¼>Kþ> J?8k?A¤?Fæ?5-@4c@D˜@3Ý@=A*OAPzA/ËA-ûA=)B3gB3›BFÏBUC'lC”C1´C^æChED5®D&äD&EO2E!‚E,¤EÑE'íEFG-F/uF#¥F+ÉFõF*G=G\GrG]ŒG"êG'
H5H2RH …Ha¦H/I8INI8eI8žI6×IxJ9‡J'ÁJ3éJ?K7]K/•KÅK(ÉK/òK8"LL[L%¨L%ÎLôLNMNcM-²MTàM95N3oN4£NXØN&1O2XO$‹O$°O+ÕO<P:>P6yPD°PAõPl7QW¤QDüQZARQœR2îRL!S6nS>¥S?äS?$TKdTE°TPöTZGUO¢UIòUb<VOŸVEïV?5WOuW\ÅWB"XFeXF¬X_óX>SYA’Y<ÔYSZEeZI«ZIõZJ?[GŠ[cÒ[Q6\Fˆ\IÏ\B]?\]Eœ];â]N^]m^GË^M_La_]®_B`LO`[œ`wø`Epa}¶aX4bR�bdàbAEcB‡cBÊcP
dC^dM¢dQðdLBeZ�e<êeV'f3~f,²f=ßfgL;gPˆgªÙg-„hj²hoix�i7jM>jŽŒj;kKWkc£k^l3flmšlmØ"mjûmfn€n"žn#Ánƒån!ioÅ‹o.Qp6€pJ·p"qD%q\jqTÇqGrKdrI°rCúrK>sKŠs^ÖsU5tM‹t2Ùt$u&1uMXur¦u1v Kv'lv”v3°vLävL1wC~w%Âw1èw:x5Ux=‹x5Éx5ÿxd5yjšyRzIXz3¢z9ÖzB{CS{T—{5ì{'"|?J|4Š|3¿|Uó|9I}<ƒ}8À}9ù}E3~)y~G£~3ë~!UAj—_€Ob€r²€2%�6X�4��3Ä�(ø�1!‚;S‚6�‚«Æ‚˜rƒ8„2D„0w„ð¨„É™…_c†MÃ†#‡5‡/P‡4€‡.µ‡2ä‡2ˆ$Jˆ-oˆ4�ˆ4Òˆ!‰=)‰g‰Tz‰PÏ‰' Š2HŠ*{ŠN¦ŠdõŠYZ‹q´‹X&ŒŒ2‹Œ¾ŒÐŒEáŒ9'�sa�TÕ�8*ŽœcŽX�VY�°�<Ê��V�Lo�B¼�6ÿ�/6‘#f‘kŠ‘/ö‘*&’+Q’§}’!%“KG“�““;”0Q”S‚”3Ö”
! •7•AV•g˜•�–�–;¡–HÝ–9&—?`—3 —Ô—?ó—;3˜=o˜W­˜*™k0™Pœ™Aí™E/šCušM¹šG›:O›<Š›:Ç›9œ<œ"Uœxœ\‘œHîœ+7�Bc�"¦�DÉ�$ž*3ž^ž~žA”ž+Öž#Ÿ3&ŸsZŸ+ÎŸ+úŸ=& 3d :˜ +Ó #ÿ >#¡2b¡•¡T°¡G¢.M¢-|¢-ª¢CØ¢¶£!Ó£/õ£/%¤/U¤,…¤<²¤_ï¤8O¥Eˆ¥'Î¥!ö¥z¦)“¦5½¦ó¦)§?8§ x§™§c¸§&¨)C¨7m¨K¥¨'ñ¨>©IX©9¢©Ü©9ð©)*ª‰Tª2Þª>«P«b«7}« µ«7Ö«2¬%A¬/g¬+—¬7Ã¬6û¬:2­&m­”­?±­=ñ­C/®Ks®]¿®d¯t‚¯(÷¯  °A°#a°(…°[®°h
! ±.s±¢±Á±Þ±"ô±:²^R²#±²,Õ²5³/8³)h³’³­³*Ã³î³	´($´6M´L„´!Ñ´ó´
µ6)µ'`µ2ˆµ'»µ
ãµñµ¶¶	¶="¶`¶h¶p¶(„¶:­¶<è¶&%·FL·B“·2Ö·B	¸6L¸ƒ¸.Š¸@¹¸ú¸¹@¹P¹>\¹]›¹]ù¹TWº+¬ºAØºK»Rf»U¹»	¼ ¼R:¼�¼©¼Ä¼'ã¼Y½4e½;š½<Ö½<¾P¾gf¾0Î¾Cÿ¾2C¿Mv¿KÄ¿CÀ;TÀ=�ÀÎÀ1êÀÁ35Á;iÁ?¥Á:åÁ7 Â8XÂ7‘Â7ÉÂ6Ã48Ã8mÃ6¦Ã9ÝÃ1Ä5IÄ1Ä3±Ä=åÄC#Å0gÅ/˜Å1ÈÅ3úÅ9.Æ#hÆŒÆ4©Æ^ÞÆM=ÇH‹ÇÔÇ!ôÇ/È%FÈ<lÈQ©ÈZûÈVVÉ9­É9çÉ3!ÊEUÊ6›Ê:ÒÊ_
ËgmËFÕËUÌkrÌDÞÌb#Í:†ÍYÁÍ>Î4ZÎ=�ÎBÍÎ*ÏD;ÏD€Ï)ÅÏ9ïÏ&)ÐPÑ&nÑ!•Ñ@·Ñ4øÑ=-Ò=kÒ=©Ò$çÒ5Ó8BÓ6{Ó3²Ó8æÓ:Ô9ZÔ”Ô>±Ô<ðÔ+-Õ2YÕOŒÕ	ÜÕ4æÕ)Ö)EÖoÖ…Ö#¥Ö)ÉÖ8óÖ,×3×F×*Y×„×—×®×Ç× ä×ØØ.Ø=HØ,†Ø"³ØÖØIóØP=ÙCŽÙÒÙ*ïÙ3ÚGNÚ-–ÚOÄÚEÛ0ZÛ^‹ÛêÛñÛ7øÛ+0Ü
! \Ü+gÜ:“ÜÎÜ@êÜ.+Ý;ZÝS–Ý,êÝ+Þ-CÞFqÞ:¸Þ/óÞE#ßDiß,®ß0Ûßà**àNUà¤à¹àÉà0æàYáWqáXÉá9"â4\âK‘âQÝâD/ãItãD¾ã4ä/8ä.hä+—ä'Ãäëä8ôä*-åGXå
 å)®å)Øå3æ)6æ-`æEŽæ-Ôæç$ç8çWçuç‹ç¨ç#»ç1ßç(è3:è;nèZªèXé^éaésé…é,—é7Äéüé*ê5Gê2}ê=°ê=îê",ëOëaësë…ë—ë'©ë Ñëòëìì*ì<ìNì&`ì‡ì ™ìºìÌìgÐìQ8íQŠí‰ÜíÒfîO9ïu‰ï#ÿï˜#ðƒ¼ð²@ñ`óñ2TòQ‡ò#ÙòDýò‡Bó>Êó@	ô=Jôˆôžô¡§ôiIõv³õ’*ö#½öáö1ñö>#÷>b÷ ¡÷%Â÷7è÷
!  øˆ+ø´øAºø®üø*«ù-Öù0ú-5ú/cúš“úa.ûe�û]öûmTüaÂüŽ$ýk³ý[þ�{þqýþLoÿT¼ÿ‡D™-ÞJ:W:’NÍD-a&�}¶“4²ÈT{nÐO?V�mæ½T6=IT‡?Ü@1]-�Ö½8”	*Í	$ø	#
! ‡A
! 6É
! ¾>¿Vþ8UNŽ<Ýr
G�
¶Õ
CŒ²Ð/ƒh³nP‹UÜh2Z›Sö™J0äPTfB»vþQugÇT/`„tåpZpËe<Q¢ÍôTÂš²š2cÍL1;~Eº¸š¹¹Thšw|K�[ÛE7 6} <´ Pñ WB!Rš!Kí!L9"[†"Mâ"Z0#b‹#aî#MP$iž$O%EX%Ož%Fî%<5&Er&�¸&MF'O”'Gä'D,(Tq(EÆ(3)Y@)Qš)�ì)8}*M¶*A+EF+EŒ+8Ò+P,W\,”´,MI-s—-d.Jp.D».9/=:/x/„y0Mþ0:L16‡1b¾1@!2vb2pÙ2lJ3>·3Zö3QQ4H£4?ì4W,5b„5cç5bK6k®6›7T¶7\8Sh8\¼8K9üe9^b:KÁ:R
;T`;Wµ;M
<F[<#¢<VÆ<d=B‚=JÅ=Š>r›>A?žP?bï?VR@c©@d
AfrAÙAIÝBG'C’oC�DZ„D[ßDC;E`EHàEW)FV�FGØFC GqdGZÖG+1H3]HF‘H8ØHVIXhI>ÁIMJTNJO£JBóJd6KF›K5âKDLP]L`®LJMVZMX±MO
! N?ZN7šNEÒN?OdXOs½OT1P‚†PE	Q/OQEQ<ÅQ5R¤8RFÝR<$S+aSK�SBÙSPT,mTRšTVíT0DU0uU2¦U.ÙUBV.KVCzVA¾VgW0hW}™WdX$|X˜¡X&:YSaY£µYMYZb§Z`
! [$k[K�[XÜ[95\^o\WÎ\K&]Yr]MÌ]T^Go^+·^?ã^O#_Œs_Q`bR`Dµ`^ú`,YaJ†a4Ña3b7:b/rbE¢b(èbncS€cZÔc8/d4hd9�dp×dÍHe„f›fŸg»g[Úhl6ic£i\j\dj/ÁjBñjd4ke™k[ÿk×[l3m#Smwm&�m7·m^ïmDNn“nò©n?œoQÜo.p?:pzp.†p*µpCàp0$qKUq6¡q4Øq
r.rErQrar
vr„rœr®r¶r)¿rérñrsss8sLshs„s•s¡s®s¿sÒsïstt#t9tPtjtvt*‰ts´tq(uašuküurhviÛveEw&«wFÒwYx+sx8Ÿx8ØxqybƒyDæyY+z…zL£zðz_	{<i{¦{!À{â{Eö{D<|D�|=Æ|6}V;}\’}^ï}AN~/�~À~E×~>}\9Ú4€EI€+�€>»€\ú€eW�½�-Í�2û�[.‚lŠ‚%÷‚@ƒD^ƒ£ƒH»ƒF„-K„y„”„J±„ü„4…UO…Z¥…�†L‚†*Ï†;ú†<6‡Cs‡D·‡8ü‡;5ˆEqˆQ·ˆK	‰5U‰:‹‰QÆ‰8Š6QŠIˆŠHÒŠJ‹(f‹O�‹’ß‹SrŒµÆŒ�|�W
! ŽkbŽ<ÎŽ“�KŸ�9ë��%�§�:'‘7b‘gš‘®’I±’aû’]]“w»“u3”_©”b	•tl•[á•V=–X”–?í–N-—3|—6°—„ç—l˜u‡˜&ý˜õ$™VšUqš:Çš4›7›Q›k›%…›8«›.ä›œœ.2œ%aœ-‡œ&µœ/ÜœA�+N�'z�¢�À�&Þ�qž(wžb žpŸRtŸJÇŸ> QQ v£ K¡‚f¡€é¡Qj¢P¼¢N
£J\£R§£Lú£QG¤,™¤JÆ¤Q¥7c¥=›¥Ù¥yY¦^Ó¦m2§j §9¨>E¨[„¨~à¨/_©/�©4¿©2ô©`'ª)ˆª6²ª6éª' «2H«N{«|Ê«—G¬Vß¬n6­=¥­+ã­\®5l®4¢®6×®7¯CF¯PŠ¯sÛ¯&O°$v°P›°>ì°A+±%m±2“± Æ±Nç±^6²•²H³²Jü²iG³]±³L´(\´D…´5Ê´0µC1µuµF“µ,Úµ4¶Z<¶.—¶8Æ¶?ÿ¶-?·Wm·qÅ·e7¸P�¸6î¸…%¹C«¹Iï¹09º8jºi£ºV
»1d»-–»MÄ»?¼nR¼SÁ¼g½6}½7´½\ì½xI¾gÂ¾k*¿U–¿Dì¿I1ÀH{ÀHÄÀ]
Á:kÁ0¦Á0×ÁqÂQzÂMÌÂ=ÃKXÃT¤ÃlùÃWfÄ@¾ÄFÿÄMFÅ\”ÅdñÅ:VÆA‘ÆFÓÆEÇI`Ç<ªÇ6çÇ=ÈO\È;¬ÈFèÈN/É8~É4·É*ìÉ$Ê8<ÊFuÊ4¼Ê+ñÊYËDwË6¼Ë7óË7+Ì6cÌ7šÌ9ÒÌ5Í>BÍ>�Í;ÀÍ9üÍ16ÎHhÎ0±Î@âÎB#Ï7fÏDžÏ+ãÏ+Ð1;Ð.mÐAœÐPÞÐ2/Ñ!bÑV„ÑÛÑˆõÑ~Ò3“ÒÇÒŽãÒrÓŽŽÓ3ÔMQÔ²ŸÔNR×0¡×=Ò×=ØANØO�Ø+àØ7ÙTDÙ™ÙG·Ù)ÿÙ4)Ú!^Ú&€Úw§Ú(ÛFHÛH�Û<ØÛ8ÜLNÜL›ÜLèÜL5ÝZ‚ÝZÝÝ?8Þ)xÞ¢ÞbÂÞK%ß=qß4¯ß3äßEà1^à^�à@ïà„0á©µád_â%Äâ!êâ%ãX2ã+‹ãF·ãFþã[Eä(¡äGÊä-å4@åPuå@ÆåNæ9Væ'�æ+¸æ4äæ{ç3•ç5Éç<ÿç4<è0qè›¢èh>é5§é'Ýé/êI5êAêLÁê1ë9@ë8zë�³ë<5ìrìJ‰íMÔíY"îW|î^Ôî>3ï(rï<›ï,Øï@ðaFð¨ðVÅð+ñ2Hñ5{ñŸ±ñŒQòFÞòG%ólmóMÚóO(ô2xô2«ôVÞô=5õsõ#’õ7¶õ[îõZJö1¥öX×ö<0÷[m÷4É÷=þ÷K<øKˆø@Ôøù8+ùJdùs¯ùê#ú}ûHŒûXÕû.üONü<žünÛüVJýP¡ýˆòý]{þXÙþP2ÿ8ƒÿ=¼ÿŸúÿPšMëo9i©ln€LïT<O‘Já ,QMŸ.´DãY(8‚U»Ih[=Ä4;77s+«9×4BF?‰.É0ø>)	Eh	B®	Zñ	QL
! ž
! 8»
! 2ô
! W'AFÁ{7„M¼0
! 
G;
>ƒ
1Â
:ô
4/4d1™DË61G2y#¬Ð@ßX NyAÈ
! -#Q1mŸD¶<û^8(—ÀG×_^QÞM0J~[ÉO%QuŠÇVRY©ƒ4‡ ¼HÝ&E6|™#¬Ð<ê'GYf@ÀG@I6Š%Á/ç: R.s&¢ÉÙ'ë=?QA‘8Ó#0NQnPÀN `N�KÐIKf8²@ë2, <_  œ F½ 5!e:!V !„÷!‹|"_#Rh#U»#~$0�$-Á$Cï$3%R%e%x%6Š%(Á%(ê%(&'<&:d&7Ÿ&.×&_'@f'S§'aû'F](<¤(Gá(@))Sj)R¾)L*V^*Lµ*J+SM+.¡+iÐ+P:,M‹,7Ù,9-IK-;•-NÑ- .95.o.†.6£.CÚ.E/Hd/*­/ Ø/<ù/>605u09«0=å0R#1v1>�1FÌ1/25C2)y2J£2Jî293!X3rz3Wí3nE4u´4+*5>V5;•5;Ñ5;
6;I6W…6'Ý67e7Y7=Ù7>87V89Ž8JÈ8B9V9q9�9V¢9‚ù9B|:_¿:F;gf;GÎ;h<><$¾<2ã<1=H=Nb=K±=Oý=JM>M˜>$æ>9?9E?[?!Û?Qý?SO@W£@,û@O(ALxA+ÅA5ñA5'B0]B>ŽB/ÍB.ýB9,C:fC4¡C8ÖCFDUVD0¬D=ÝDHETdE)¹E0ãE"F77F%oF6•F?ÌFCG.PG:G*ºG3åG Hq:H5¬H4âH/I-GI@uI¶I/ËI/ûIB+J,nJ2›J3ÎJ-K 0K<QKgŽKFöKU=LN“LQâLa4Mã–M[zNWÖNY.OrˆOyûO_uPWÕP1-QV_QN¶QIRHORR˜R_ëR)KS(uS,žS=ËS]	TgT6T"¶TQÙT*+UJVUL¡UîU4	V:>VGyV7ÁV?ùVb9W!œW>¾W>ýWL<XN‰X'ØX6Y<7Y„tYcùY`]ZY¾Z<[ŒU[Jâ[*-\‚X\MÛ\H)]cr]-Ö]_^rd^B×^)_D_>Z_(™_@Â_[`_``%Ÿ`#Å`é`oafsa-Úabb7b Ob!pb"’b"µb$Øb$ýb0"cScqc�c2¬crßckRd_¾d6e=Ue/“e>Ãe9fw<fs´fK(gPtggÅgM-hv{hGòh[:i<–iAÓi±j°ÇjOxk1ÈkLúkgGlc¯l9m4Mm7‚mLºmnJnJjn+µn8án2oZMo¨o=¾o(üo&%pDLpJ‘p0Üpw
q_…qJåq00rJar0¬rHÝr2&sHYs2¢s]ÕsG3tH{t2Ätb÷t}Zu]ØuG6vx~v“÷vi‹w„õw`zxƒÛx2_yA’y2Ôy2z2:z0mzKžzêz;{%D{%j{;�{EÌ{T|'g|B�|QÒ|R$}Qw})É}Zó}6N~Y…~5ß~PFf4­€âc‚)€‚(ª‚BÓ‚Ûƒ òƒ„t2„9§„Öá„\¸…C†>Y†L˜†Oå†15‡5g‡}�‡&ˆ5BˆYxˆ0Òˆ2‰O6‰?†‰BÆ‰(	Š,2Š/_ŠH�ŠDØŠ$‹QB‹*”‹H¿‹+ŒD4Œ@yŒºŒBÒŒ�8.�5g���(¹�â�)÷�?!ŽBaŽ_¤ŽA�5F�@|�D½�1�@4�Ru�‚È�?K‘B‹‘8Î‘2’2:’,m’š’/¬’4Ü’/“@A“F‚“SÉ“F”Fd”-«”YÙ”]3•T‘•Mæ•Y4–1Ž–5À–Eö–O<—.Œ—Y»—H˜)^˜)ˆ˜Y²˜™6+™6b™,™™Æ™NÞ™G-šuš,‹š*¸š9ãš/›<M›2Š›/½›/í›4œ>Rœ‘œ2±œ4äœ.�<H�k…�*ñ�cžz€žˆûž„„ŸE	 „O LÔ ™!¡<»¡áø¡$Ú¢�ÿ£Ð�¤^¥Fb¦;©§}å§Nc¨S²¨:©rA©A´©=ö©(4ª]ªWrª,Êª&÷ª&«&E«$l«$‘«$¶«(Û«(¬(-¬&V¬&}¬&¤¬-Ë¬8ù¬52­/h­C˜­UÜ­C2®2v®4©®>Þ®1¯DO¯D”¯ZÙ¯74°Fl°w³°P+±O|±wÌ±HD²[�²Gé²81³@j³:«³Cæ³m*´a˜´~ú´]yµd×µa<¶Xž¶o÷¶Lg·M´·„¸(‡¸(°¸(Ù¸(¹7+¹Ïc¹3»Ð7¼Q½*Z½?…½FÅ½K¾PX¾ ©¾7Ê¾-¿80¿Zi¿WÄ¿pÀ�ÀP«ÀGüÀnDÁb³Á`Â#wÂ@›ÂNÜÂI+Ã{uÃnñÃf`ÄbÇÄ`*Å-‹ÅW¹Å^Æ'pÆ$˜ÆE½ÆTÇJXÇ£ÇÀÇGÚÇ*"È2MÈ¡€Èp"Ég“É)ûÉ?%ÊNeÊ$´Ê:ÙÊ`Ë,uË"¢Ë4ÅËúËCÌ3YÌ0�Ì¾ÌÜÌ9÷Ì=1Í;oÍ«Í4+Î)`ÎQŠÎ“ÜÎDpÏ-µÏXãÏI<ÐP†Ð×Ð/÷Ð'Ñ=CÑ;�Ñ=½ÑAûÑ-=Ò$kÒ �Ò ±ÒJÒÒFÓ?dÓ'¤Ó1ÌÓ=þÓ-<Ô*jÔA•Ô9×Ô.Õ2@Õ(sÕ;œÕMØÕ)&Ö-PÖ9~Öq¸Ö@*×Hk×r´×A'ØSiØ=½Ø1ûØm-Ù=›Ù#ÙÙ4ýÙC2Ú<vÚ³Ú ÑÚòÚV
! Û8aÛ1šÛ+ÌÛ+øÛ+$Ü4PÜ,…Ü*²Ü!ÝÜ,ÿÜP,Ý4}Ý,²Ý@ßÝE Þ5fÞ5œÞ)ÒÞJüÞJGß2’ß6ÅßHüß=EàAƒàFÅà;áCHá^ŒáQëá¤=â:ââCã$aãO†ãSÖã(*ä"Sä5vä8¬ä8åä1åPå]å2lå5Ÿå2Õå@æpIæDºæCÿæLCçÆ�ç7Wè��èJéM\é[ªéCê3JêM~êCÌê?ë?Pë1�ëaÂëM$ìJrìG½ìBí$Hí`mí)Îí!øí[îGvîH¾î%ï*-ï;Xï2”ï)Çï&ñï1ð0JðY{ðOÕðH%ñLnñ,»ñèñò$ò$Aò&fò>�ò Ìò0íò-ó(Lóuó'�ó+·ó'ãó!ô -ô!Nô!pô-’ô&Àô&çô"õ#1õ#Uõ*yõ"¤õ)Çõ,ñõ%ö3Dö6xö6¯ö æö$÷),÷+V÷)‚÷5¬÷0â÷øG/ø+wø4£ø=Øø.ùaEù§§ùOúEnúB´ú>÷ú:6ûKqûW½û>üXTü@­üWîü–FýIÝý='þ>eþ0¤þÕþ'ïþ1ÿ#Iÿ[mÿ`Éÿ(*CS>—;ÖBUIlD¶PûFLJ“CÞF"JiM´FIIU“KéC5My%Çí.-76e#œ3Àô#
5)Cm†H–@ß <QqT‘5æ/	,L	$y	Kž	ê	Gù	gA
! +©
! dÕ
! q:‹¬d8c�B
&D
 k
>Œ
?Ë
66Biy$ã'ˆ01¹/ë9-U9ƒ7½tõ7jj¢O
.]†ŒiU}nÓ=B2€0³^ä&CSjY¾[Wt,Ì?ù 93Ú/F>F…<Ì8	„BFÇ"/B0r*£'Îdö*[†!¦7È+-,KZ*¦Ñ)ð! <$]8‚»'Û% 8) 'b *Š 4µ Aê 7,!-d!@’!*Ó!>þ!3="'q"P™"%ê"F#EW#6�#%Ô#?ú#I:$„$@™$$Ú$'ÿ$;'%'c%V‹%+â%D&2S&.†&.µ& ä&+'41',f'(“'&¼'>ã'4"()W(3�(>µ(/ô(-$),R)1)X±)L
! *W* t*M•*#ã*?+1G+y+2˜+#Ë+Kï+*;,f,Š€,k-~w-_ö-#V.Sz.HÎ.///G/#w/5›/,Ñ/þ/E0(d0;�0+É0%õ0=1MY1=§1)å1$24420i2@š2+Û231'3KY3L¥3Yò3*L4/w4!§4"É49ì4L&5Ms5`Á5r"6›•6x17»ª7Šf8uñ8cg9tË9m@:�®:œL;Êé;‹´<3@='t=tœ=C>5U>?‹>9Ë>\?=b?; ?KÜ?b(@2‹@d¾@T#AExA$¾AJãA3.B%bBNˆB8×BWC(hC!‘C³CÐCïCCDNPD,ŸDMÌD5E/PE9€EUºE1F;BF0~F8¯F]èF"FG%iG#�G"³GBÖG;HUHApH²H3ÏH(I5,I#bI/†IG¶I.þI%-J=SJc‘J*õJ= K8^KD—KÜKOúK<JL-‡LAµL;÷L-3M5aM9—MAÑM.N2BN.uNù¤N#žOqÂOp4Po¥P.Q>DQ£ƒQ9'R'aR4‰R4¾RóR7S%GSÍmS9;TþuTˆtU=ýUI;VZ…V4àVHW3^W(’W)»WqåW.WX|†X¤Y*¨YIÓYNZ;lZ>¨Z-çZ1[/G['w[2Ÿ[QÒ[.$\'S\,{\+¨\1Ô\7]1>]/p]' ]È]sè];\^8˜^@Ñ^j_A}_'¿_?ç_q'`a™`Mû`%Iaoa‹aA§aKéa15bgb>|bt»bv0c>§cCæc\*d,‡d'´dDÜd(!eSJeže%¥eKËe$f8<f&uf!œf(¾f9çf3!g,Ug(‚g.«gFÚg†!h¨hS±hLi8RiN‹iUÚi(0jdYjV¾jk+kAk*`k‹kªkÀk Ök1÷kI)lsl ‰l ªl Ël-ìlm+0m\mKsm¿m0Öm&n?.nnn3„n)¸n4âneo-}oZ«oAp=Hp†p5¢p@Øp%q3?qWsq:Ëqr\"r3rT³r-sd6s>›s7Ús>tIQt7›t?Ót>uHRuP›u–ìuBƒv'Æv*îv0w*Jw+uw%¡w,Çw(ôw3xQxoxŠx!ªxÌx"éxy%yCy.`y3�y6Ãy úyGz"cz'†zO®z^þzg]{7Å{-ý{7+|>c|@¢|3ã|$}/<}(l}/•}Å}<Û}8~Q~(l~2•~È~ Ú~Gû~qCµMÓF!€/h€˜€e¯€=�%S�
y�?‡�0Ç�'ø� ‚?‚5[‚*‘‚¼‚1Ô‚FƒDMƒ)’ƒ¼ƒ'ÒƒMúƒ H„(i„D’„×„ö„5….K…4z…$¯…/Ô…B†1G†y† Œ†$­†;Ò†‡%'‡*M‡*x‡+£‡=Ï‡%
ˆM3ˆ8�ˆCºˆEþˆ=D‰>‚‰:Á‰3ü‰ 0Š4QŠ1†Š=¸Š:öŠ31‹2e‹8˜‹6Ñ‹ŒVŒXvŒAÏŒ+�z=�X¸�2Ž%DŽFjŽ4±Ž*æŽ;�tM�(Â�hë�T�'t�8œ�>Õ�9‘`N‘.¯‘MÞ‘3,’z`’ Û’ü’“4+“D`“2¥“2Ø“E”8Q”2Š”3½”ñ”&•D3•1x•;ª•Jæ•(1–rZ–?Í–U
—c—9|—Y¶—=˜=N˜=Œ˜=Ê˜K™:T™F�™AÖ™>šEWšr�š*›&;›+b›,Ž›»›'Ò›=ú›18œDjœ*¯œYÚœI4�E~�SÄ�ž.0žY_žE¹ž9ÿžP9ŸBŠŸ7ÍŸ_ ;e �¡ !/¡�Q¡xâ¡H[¢C¤¢Kè¢u4£Fª£‹ñ¤g}¥ å¥«¦>²¦Lñ¦7>§ev§TÜ§&1¨KX¨:¤¨ ß¨L©<M©aŠ©0ì©BªD`ª:¥ªWàª!8«yZ«IÔ«:¬JY¬;¤¬"à¬!­
%­
3­8A­Nz­,É­0ö­U'®4}®+²®<Þ®[¯"w¯Uš¯rð¯0c°H”°IÝ°h'±�±²=)²4g²Gœ²Wä²\<³y™³=´IQ´W›´Vó´~JµRÉµR¶Ro¶;Â¶Xþ¶iW·:Á·bü·d_¸§Ä¸/l¹œ¹¸¹SË¹SºIsº½ºEÔº@»:[»–»B§»Nê»G9¼L�¼9Î¼'½@0½Dq½C¶½;ú½U6¾9Œ¾Æ¾ß¾ú¾+¿<¿W¿@t¿µ¿Ë¿$è¿5
À5CÀ5yÀ(¯À4ØÀ7
Á2EÁOxÁ:ÈÁ_Â4cÂ1˜Â(ÊÂKóÂ5?ÃuÃ1ŽÃÀÃ×ÃêÃÄÄ/+Ä[ÄpÄ„Ä1šÄÌÄáÄ9öÄ0ÅCÅVÅuÅ‰ÅœÅ°ÅÎÅ!áÅÆ!Æ<Æ!SÆuÆŒÆ«Æ¿ÆFØÆ7ÇlWÇkÄÇG0È0xÈ]©ÈNÉ>VÉ:•É'ÐÉKøÉUDÊ\šÊV÷Ê©NËøËÌ1ÌKÌeÌ,{Ì>¨Ì.çÌ5Í(LÍGuÍ½Í'ØÍÎ,Î;HÎ\„Î0áÎ0Ï+CÏoÏ!ŽÏ"°ÏÓÏòÏÐ1ÐPÐoÐŽÐ­ÐÇÐáÐûÐ1ÑMÑ1mÑŸÑ¿ÑßÑÿÑ Ò@ÒXÒsÒ5’ÒÈÒçÒÓ&%Ó1LÓ6~ÓJµÓ&Ô/'Ô+WÔ,ƒÔJ°Ô0ûÔ),Õ#VÕ#zÕBžÕ1áÕ Ö$4Ö&YÖ&€Ö)§Ö)ÑÖAûÖ2=×Np×K¿×-Ø-9Ø-gØN•Ø5äØ4ÙOÙAÏÙ>Ú8PÚL‰Ú<ÖÚ6Û8JÛ:ƒÛ=¾Û@üÛZ=Ü1˜Ü7ÊÜ.Ý/1Ý:aÝ$œÝ)ÁÝ4ëÝA Þ/bÞ?’Þ3ÒÞFß;Mß:‰ß:Äß5ÿß95à9oà9©à6ãà.áIákeáÑá3éáCâMaâ$¯â8Ôâ3
ãOAã ‘ãC²ãCöãA:äA|ä<¾ä<ûä?8åxåm�å�ýåæœæ¹æCÖæ9ç9Tç<Žç'Ëçqóçeè#ƒè§è ½è5Þè0é4Eé4zé4¯é1äéê12ê;dê( êVÉê[ ë<|ëA¹ëDûë?@ì'€ì+¨ì*Ôì-ÿì8-íUfí�¼í#Lï$pï3•ïRÉïnð#‹ð3¯ðãð!ùðEñ<añ^žñoýñFmò&´òHÛò$óa3ó_•óaõóeWô'½ô5åôJõ?fõ¦õFÄõMöAYö6›ö%Òö¹øöZ²÷$
ø?2ø:rø¢­øRPùy£ùQúÌoú><û{ûK•ûZáûu<üK²ü!þü ýA/ý"qý[”ýðý
þ*þ;EþY�þ]Ûþ19ÿkÿH~ÿ%ÇÿAíÿ/BGŠE¡^çBFP‰7Ú>8QQŠHÜJ%2p(£UÌ+"3Ni‚LìR99ŒÆ0Þ,[<$˜@½?þ?>0~D¯1ôF&Nm.¼3ë8	"X	:{	T¶	0
! 8<
! &u
! /œ
! XÌ
! M%Ks+¿Gë73WkÃIã%-
AS
=•
BÓ
.<EJ‚;Í3	E=Iƒ=Í37?Gw#¿2ã)I@DŠZÏ,*>WG–OÞ5.&d*‹2¶;éG%_m-ÍTû9PuŠH4I9~7¸TðVE>œ@Û/RLQŸNñL@<�,Ê8÷W0+ˆ"´[×X3EŒ.Ò6.8.g,–(Ã\ì4I,~Z«WJ^C©�í }· «Ö Í‚!HP"x™">#QQ#O£#Ió#(=$,f$(“$,¼$!é$0%œ<%:Ù%;&IP&Xš&Wó&jK'4¶''ë'((E<(v‚((ù(W")z)+™)*Å)8ð)8)*4b*I—*Eá*+'+2S+C†+7Ê+),-,,'Z,(‚,«,8Ê,4-8-*S-5~-7´-{ì-šh.\/Z`/Z»/…08œ0/Õ0.1º41'ï1A2\Y2
! ¶2@Á2<31?3-q3Ÿ3%½3!ã354%;4-a49�4>É485DA5>†5CÅ5H	6BR6=•6AÓ6;7@Q7;’7@Î7:8KJ8E–8LÜ8c)9.�93¼9ð93:4@:4u:1ª:SÜ:U0;^†;På;Q6<Wˆ<†à<Og=X·=>B0>>s>Y²>]?xj?Kã?Ò/@«AG®A)öAc C„C—C°C'ÂCêCDD$D7DNDeDnD!‡D©D3ÅD4ùDK.E5zEj°E4F/PFQ€F1ÒF7G=<G:zGNµG9H:>H1yH]«H2	I7<IHtI�½I”NJ\ãJŠ@K™ËK»eLK!M)mM9—M9ÑM9NGENK�N_ÙNO9O\‰OWæO3>PrPD�PzÔP6OQ>†QXÅQ;RkZR?ÆRzS]�S*ßS*
! T+5TNaTh°T.U3HUŽ|U*V56V lVE�V[ÓVj/WWšWZòWNMXJœXXçX~@Y}¿Y:=Z$xZ&�ZLÄZh[Dz[y¿[9\(R\W{\\Ó\F0]3w]!«]HÍ];^2R^+…^]±^:_IJ_=”_^Ò_F1`@x`/¹`1é`a$5a!ZaJ|aPÇaBb'[b/ƒb*³b*Þb)	c*3c*^c)‰c™³cKMdA™dRÛdA.efped×e,<f9ifE£f@éf@*gjkg,ÖgUh=YhŠ—hR"iHuiI¾i=jIFj��j{klškGl1Ol>�lGÀlFm(Om9xm²m/Êmúm6n!Pn]rn/Ðno" o/Co8soA¬o=îo-,p-ZpFˆp(Ïp'øp- q0Nq]q,Ýq=
! r'Hr+pr'œrbÄr6'sC^s1¢sÔsEòsN8t;‡t)Ãt1ít#uCu+buGŽu4Öu#v5/v@ev-¦vOÔvJ$w=ow+­w
! Ùwäwýw	
! xx x7,x+dx�x'­x%Õx'ûx=#y=ayŸy2¼y-ïyCzazHvz^¿z[{<z{M·{R|aX|8º|5ó|n)}B˜}:Û}>~>U~P”~>å~H$?mL­?ú?:€Iz€?Ä€A�CF�?Š�@Ê�N‚?Z‚Rš‚bí‚DPƒK•ƒGáƒJ)„Lt„KÁ„D
…FR…G™…]á…L?†DŒ†GÑ†D‡D^‡?£‡Oã‡K3ˆ[ˆxÛˆlT‰]Á‰`Š%€ŠG¦ŠGîŠ16‹,h‹5•‹Ë‹Cß‹#ŒV>ŒK•ŒGáŒ,)�V�6l�5£�NÙ�5(ŽQ^Ž4°ŽLåŽD2�9w�3±�1å�/�;G�/ƒ�;³�4ï�-$‘0R‘Bƒ‘$Æ‘ë‘C	’M’3_’@“’RÔ’M'“*u“2 “3Ó“8”@”ý[•FY–> –oß–O—o—(�—:¶—9ñ—E+˜:q˜'¬˜!Ô˜ö˜(™+?™&k™+’™$¾™Fã™N*š+yšH¥š6îš?%›7e›‚�›N œ<oœ0¬œYÝœ.7�`f�Ç�oÙ�oIž3¹ž;íž<)ŸCfŸ4ªŸAßŸ<! *^ M‰ %× %ý ,#¡P¡g¡/y¡9©¡/ã¡!¢U5¢S‹¢Sß¢3£B£#Q£Xu£>Î£]
¤]k¤_É¤V)¥€¥'—¥&¿¥9æ¥0 ¦3Q¦9…¦0¿¦0ð¦/!§MQ§JŸ§&ê§-¨@?¨"€¨"£¨;Æ¨<©I?©#‰©V­©zªªR•ª)èª«;$«?`«e «¬Q¬h¬F…¬dÌ¬ 1­2R­.…­]´­&®:9®t®H”®[Ý® 9¯'Z¯‚¯+ ¯%Ì¯Oò¯xB°,»°&è°›±}«±L)²Lv²?Ã²k³;o³<«³-è³1´*H´ns´+â´IµTXµ_­µ5
¶AC¶i…¶Mï¶H=·”†·‰¸D¥¸>ê¸x)¹?¢¹Râ¹h5º×žºEv»N¼»v¼z‚¼Fý¼GD½aŒ½6î½I%¾Vo¾Æ¾kF¿D²¿W÷¿`OÀ–°À%GÁ¨mÁ>ÂoUÂ[ÅÂS!Ã9uÃW¯ÃKÄ?SÄG“Ä€ÛÄN\ÅH«ÅkôÅ^`Æ�¿ÆFOÇR–ÇféÇOPÈì Èc�ÉvñÉ7hÊi ÊF
! ËiQË™»ËmUÌYÃÌ(Í™FÍŒàÍdmÎGÒÎBÏG]Ïo¥ÏÐœ•ÐW2ÑrŠÑjýÑDhÒY­Ò7Ó…?Ó‡ÅÓ…MÔžÓÔRrÕoÅÕD5ÖpzÖRëÖ`>×„Ÿ×ˆ$Ø9­Ø.çØCÙnZÙCÉÙ^
Ú9lÚH¦Ú!ïÚ(Ûj:Û�¥ÛU'Ür}ÜVðÜhGÝB°ÝXóÝ%LÞfrÞ¬ÙÞ8†ß4¿ß^ôßFSàYšà^ôàlSáEÀáLâgSâ4»â*ðâ%ã*AãElã&²ã*Ùã*äp/ä+ ä/Ìä6üäI3åI}å-Çå"õå7æ8Pæ+‰æ4µæ"êæ,
ç-:ç hç^‰çKèç%4èZè,wè9¤è.Þè?
éMé7léR¤é0÷éJ(ê-sê¡ê)ÀêêêWûêWSëJ«ë$öëŠìY¦ì=í5>íCtí4¸í)ííEî5]î\“î;ðî=,ï>jïA©ïvëïEbðE¨ðhîðxWñŒÐñn]òWÌòm$óJ’óÝóCúóB>ôO�ôHÑô7õERõ>˜õC×õRönö4„öX¹ö1÷D÷=a÷,Ÿ÷5Ì÷øJ!øGløK´øNùSOùC£ù)çù6ú-Hú\vúLÓú û8ûnEû9´û?îûB.ü(qü.šü`ÉüK*ýfvýAÝýnþ?ŽþAÎþÿ<,ÿ$iÿKŽÿ1Úÿ1
>L[nŒ*¥ÐeìXR«ÉEâM(<vI³?ý6=‘t¼7Ã]û`Y)º8äO5mG£)ëpH†3ÏKNOMžDìD1	<v	¶³	 j
! ‹�¼
Ì1ë(@F+‡C³?÷87-p;ž_Ú;:hvXß28,k+˜)Ä>î1-_0q1¢vÔNKbšAýF?J†fÑC8E|@Â8@<K}bÉ`,l�]úJXb£nHu2¾4ñ6&B]* ?ËEIQ=›fÙ$@hekÎP:‹4Ÿ9Ô $/>T,“WÀ* nC S² Ö!=Ý!@"G\")¤"VÎ"-%#OS#Y£#ý#$6+$5b$T˜$Sí$iA%0«%YÜ%s6&Rª&¦ý&G¤'�ì'vz(–ñ(]ˆ)gæ)EN*S”*Tè*M=+)‹+;µ+/ñ+_!,B�,7Ä,7ü,A4-5v-N¬-7û-A3.“u.V	0\`0Z½01T81[�1ié1tS2HÈ2I3V[3f²465P5Ke57±5-é5O6 g6+ˆ6'´6YÜ6(67%_71…77·7�ï7ƒ8
! 9x9w‡9ÿ9H:Gf:8®:Rç:?:;+z;B¦;#é;?
<?M<"�<P°<+=M-=A{=.½=.ì=>I8>‚>™>µ>!Í>ï>9ü>$6?.[?3Š?¾?+Õ?F@HH@$‘@#¶@EÚ@+ AGLA'”A;¼AIøAHBBG‹BGÓB6CnRCÁCÛC-íC<D*XD*ƒDK®D;úD=6EBtEN·E=FFDFH‹FBÔFFGD^G£GºGCÕGEH_HAyH»HJÖHe!I7‡I.¿IJîI89J;rJ®J-ÃJKñJ€=K|¾Kï;Ln+NJšN9åNXO(xO(¡O/ÊO4úOG/P%wP;�P.ÙP©QN²QURQWRV©R[S“\S_ðSYPT[ªTTUm[UIÉU‰VS�V2ñVQ$W0vW/§WF×WOX;nX1ªX8ÜX<YHRYA›YKÝYL)ZCvZEºZC[;D[)€[cª[\^-\BŒ\WÏ\=']!e]*‡]?²]6ò]3)^3]^2‘^:Ä^,ÿ^M,_!z_"œ_5¿_Mõ_#C`!g`j‰`Aô`,6aOcaQ³a+bS1b*…b>°bAïb61c4hcX�c=öc!4d'Vd-~d*¬d@×d%e2>e@qe.²e;áe=f4[f.�f4¿f#ôf'gH@g…‰glh|hL„h/Ñh6i38iZli:Çi-j/0j?`jo j©k¨ºk:clBžlDálA&m/hm-˜m&ÆmŠímxnŒn3 n(Ôn?ýnm=oD«o7ðo@(p>ip6¨pCßp:#q_^q¾q3>r.rrB¡r™ärF~sÅsVäsk;te§t=
u‡KucÓu27v7jv(¢v5Ëv w³"wGÖw8x-Wx=…x5ÃxGùxOAy'‘y<¹yZöyMQzUŸz2õz6({F_{M¦{;ô{S0|G„|XÌ|A%}lg};Ô}L~<]~Mš~^è~?G6‡o¾Q.€3€€'´€?Ü€�i3�R��Að�P2‚Gƒ‚ Ë‚Qì‚E>ƒŸ„ƒ $„E„}d„0â„^…cr…5Ö…]†j†1„†¶†aÓ†'5‡A]‡‹Ÿ‡'+ˆSˆsˆ"�ˆ^°ˆ.‰3>‰Br‰+µ‰á‰iŠ4jŠKŸŠ@ëŠ5,‹=b‹# ‹'Ä‹aì‹&NŒ*uŒ Œ»ŒÎŒDåŒC*�Cn�C²�Dö�C;ŽAŽBÁŽA�/F�Ov�UÆ�@�]�Dv�u»�?1‘=q‘(¯‘-Ø‘U’W\’[´’_“Qp“WÂ“I”ad”YÆ”V •4w•$¬•-Ñ•Hÿ•0H–'y–0¡–DÒ–?—;W—;“—GÏ—,˜YD˜Xž˜X÷˜=P™<Ž™<Ë™0šJ9š_„š2äšU›Km›"¹›1Ü›!œ40œ-eœ-“œAÁœA� E�#f�7Š�(Â�ë�$ž=0ž?nž8®ž)çžxŸ/ŠŸ>ºŸEùŸJ? 8Š !Ã .å '¡)<¡+f¡%’¡,¸¡*å¡=¢LN¢E›¢Iá¢E+£Bq£h´£i¤Ý‡¤Se¥>¹¥3ø¥t,¦}¡¦§9=§9w§8±§8ê§#¨5:¨1p¨0¢¨LÓ¨; ©9\©8–©?Ï©2ªUBª=˜ª'ÖªFþª;E«0�«6²«Ié«>3¬?r¬)²¬(Ü¬3­;9­ u­'–­Q¾­E®OV®H¦®Fï®A6¯x¯/—¯/Ç¯&÷¯#°2B°7u°,­°MÚ°;(±Jd±0¯±>à±-²>M²8Œ²@Å²S³JZ³3¥³/Ù³'	´>1´#p´A”´TÖ´B+µ9nµ0¨µQÙµO+¶M{¶€É¶<J·
‡·G•·LÝ·6*¸]a¸P¿¸¹E-¹8s¹=¬¹<ê¹3'º>[º%šºXÀºL»Lf»J³»,þ»&+¼0R¼Hƒ¼IÌ¼½<4½*q½Jœ½ç½Aû½<=¾z¾˜¾0ª¾$Û¾2¿3¿3N¿?‚¿*Â¿+í¿+À,EÀ;rÀ<®À?ëÀ%+Á,QÁ
~Á4ŒÁ<ÁÁþÁ5Â(RÂ*{Âg¦ÂIÃ5XÃ6ŽÃ@ÅÃ!Ä(Ä^EÄW¤ÄHüÄ0EÅ'vÅ0žÅLÏÅGÆ?dÆ¤Æ¿ÆeÕÆ2;ÇnÇ�ÇO’ÇâÇùÇ,È7=È'uÈE�È?ãÈ)#É9MÉ!‡ÉB©É@ìÉM-Ê6{Ê3²Ê-æÊÅËÚË"ZÌ}Ì6™Ì$ÐÌ=õÌ*3ÍA^ÍJ ÍFëÍ*2Î3]Î‘ÎŠ¨Î;3Ï)oÏ5™ÏLÏÏÐE:Ð2€Ð³Ð*ÐÐ&ûÐ\"Ñ&Ñ¦Ñ+ÅÑVñÑ<HÒž…Ò[$Ó8€Ó:¹Ó+ôÓi Ô1ŠÔ1¼Ô1îÔ Õ=;ÕHyÕÂÕ7ÚÕhÖ3{ÖX¯ÖV×Y_×V¹×2Ø6CØGzØKÂØ@ÙOÙ-hÙ–Ù"´Ù'×Ù ÿÙ' ÚzHÚIÃÚ
ÛE%Û<kÛ=¨Û=æÛ<$ÜgaÜCÉÜC
Ý@QÝg’ÝHúÝ~CÞ]ÂÞ¸ ß!Ùßûà\áJnáJ¹áIâINâ3˜âZÌâ('ã3Pã9„ãA¾ãHäHIä,’ä(¿äAèäP*åV{åBÒåNæ.dæL“æGàæ%(ç<Nçv‹ç�èK’èMÞèD,é.qéR éCóéX7ê,�ê½êOÃëGì_[ì^»ìNítiípÞíhOîd¸îlïcŠïIîïh8ðU¡ðS÷ð'Kñ#sñL—ñ`äñ;EòD�òBÆò0	óW:ó‡’ó<ôWWô\¯ô:õ&Gõnõa‹õíõ2öY5ö�ö÷?+÷k÷3x÷)¬÷6Ö÷U
ø0cø^”ø3óøc'ù7‹ù8Ãù üùtúI’úIÜúI&û,pûD�ûoâû*Rük}üGéüz1ý_¬ý>þ"Kþ4nþ4£þ ØþKùþ:EÿN€ÿÇÏÿ—:«!æ8:A,|©Å#á3=97wY¯P	:Z•®Î3è+4(`,‰)¶CàF$ÑkA=–•L¬3ùW-Q…2×6
! 	OA	6‘	ZÈ	@#
! 0d
! K•
! Iá
! +7KKƒNÏAG`Q¨Lú5G
}
F—
&Þ
E%8k9¤*Þ>	:Hƒ:¢FÝ $¦Å‡l5ô*'H0pM¡cï'SR{3Î'?*>j3©MÝ(+ETêš_…ZåD@1…L·A?FZ†iáaKF­Gô'<LdH±2ú<-6jD¡>æ@%:fj¡’^ŸSþWR+ªLÖ:#D^G£DëC0 Dt E¹ Dÿ DD!I‰!FÓ!N"2i"?œ"@Ü">#D\#!¡#Ã#=Þ#B$;_$@›$?Ü$*%@G%Bˆ%5Ë%>&?@&?€&GÀ&('M1'S'ZÓ'Z.(b‰(jì(oW)uÇ)t=*w²*t*+tŸ+ˆ,ˆ�,ˆ&-Š¯-Š:.ˆÅ.~N/ƒÍ/‚Q0‹Ô0—`1‹ø1Š„2Œ3‹œ3�(4‚¸4‚;5~¾5ƒ=6~Á6€@7EÁ7C8AK8I�8K×8=#9Ca9:¥9@à9!:>A:B€:AÃ:<;B;:_;Gš;?â;G"<:j<+¥<DÑ<A=?X=@˜=FÙ=C >Dd>B©>?ì>(,?U?s?*’?/½?/í?2@=P@sŽ@HA4KA/€A/°A0àADBYVBb°B0C�DCdÒC:7D$rD;—D7ÓDE/*EhZE?ÃESF/WF;‡FcÃFW'GGX˜GKñG)=H(gH�H$®H;ÓH2I)BI3lIZ I3ûI /J4PJ:…J4ÀJ)õJ_KBK5ÂK)øK:"LD]LF¢L éLx
! MOƒMOÓM7#N1[Na�N3ïN9#O;]OJ™OKäO00PJaPZ¬PBQ[JQ+¦Q&ÒQOùQIRfR‚R.œR1ËRNýR5LS0‚S1³S,åS/T-BT-pT#žT3ÂT-öT*$U)OU,yU-¦U(ÔU)ýU,'V,TV&�V#¨V"ÌV"ïV'W=:W-xW=¦W,äW,X,>X*kX*–X)ÁX%ëX'Y*9Y.dY,“Y&ÀY)çY4Z$FZ&kZ+’Z-¾Z(ìZ[05[f[:†[;Á[:ý[08\Ii\E³\gù\Va]a¸]S^In^d¸^%_RC_O–_Dæ_,+`*X`-ƒ`1±`fã`)Jata%‘a©·a<abIžb8èb1!c.Scˆ‚c-d¡9d`ÛeF<fƒf5›fÑf îfg),g$Vg	{g@…g}ÆgNDht“hSi=\i@ši=Ûi�jZ·jQk;dky k˜lY³le
mbsmBÖmUnGon_·nmoC…o@Éo\
! pOgpd·p}qJšqTåq*:rRerG¸rcszdssßs@StU”tNêtL9ur†ucùu`]v@¾veÿv“ew@ùw<:x‚wxDúx>?yP~yvÏyAFz4ˆz2½z0ðzC!{@e{u¦{ƒ|C |lä|wQ}*É}=ô}g2~Eš~aà~¾B–€Ä˜€°]�É‚×Ø‚;°ƒEìƒB2„`u„@Ö„k…_ƒ…Xã…`<†M�†=ë†e)‡1�‡4Á‡-ö‡)$ˆ.Nˆ<}ˆ;ºˆ*öˆ:!‰,\‰(‰‰5²‰3è‰|Šš™ŠŠ4‹„¿‹ƒDŒQÈŒq�WŒ�Bä�>'ŽIfŽæ°ŽÚ—�Jr�c½�N!‘ep‘?Ö‘ ’¨·’^`“^¿“P”]o”“Í”<a•@ž•@ß•¡ –FÂ–o	—/y—B©—Eì—Œ2˜_¿˜^™R~™XÑ™A*š1lšƒžšE"›Œh›Bõ›X8œk‘œDýœ7B�:z�\µ�SžZfžŽÁžXPŸ^©Ÿl �u W÷ aO¡R±¡H¢`M¢N®¢7ý¢W5£=�£KË£l¤^„¤=ã¤S!¥¯u¥C%¦|i¦gæ¦QN§X §>ù¨|8©pµ©%&ªLLªM™ªFçª�.«[Ì«p(¬õ™¬X�®Rè®‚;¯L¾¯I°FU°Lœ°ëé°êÕ±eÀ²n&³Z•³”ð³t…´Žú´Ž‰µŽ¶…§¶G-·eu·cÛ·×?¸;¹bS¹k¶¹V"º@yº¥ºº§`»­¼j¶¼$!½F½c½]{½GÙ½!¾mA¾ ¯¾•P¿æ¿À!À:<À6wÀZ®À=	ÁªGÁŽòÁŒ�ÂGÃ°VÃRÄ^ZÄw¹Ä�1Å5¿Å­õÅf£ÆJ
! ÇMUÇm£ÇZÈlÈ@ìÈu-Éf£ÉG
! Ê]RÊd°Ê,ËhBËW«ËAÌCEÌh‰Ì=òÌÜ0Íœ
ÎªÎ6ÄÎQûÎ¶MÏGÐ™LÐ�æÐ`hÑ|ÉÑOFÒS–Ò êÒ.Ó^:Ó@™ÓLÚÓI'ÔqÔ$„ÔA©ÔoëÔ[ÕdzÕ[ßÕC;ÖIÖ3ÉÖkýÖQi×>»×6ú×&1Ø1XØ4ŠØ5¿Ø+õØ!!Ù3CÙ2wÙAªÙ*ìÙ4Ú/LÚ$|Ú¡Ú1!Û\SÛH°Û_ùÛZYÜ%´Ü\ÚÜ97Ý8qÝ9ªÝsäÝ6XÞ�Þ:ß@Jß)‹ß5µß1ëß@àK^à+ªà+Öà5á#8áH\án¥ásâCˆâ1Ìâ1þâ"0ãZSãa®ã6ä;GäFƒä;Êä@ågGåK¯åAûåH=æb†æ!éæIçFUç?œç^Üç+;èDgè_¬è4éAéI^éM¨é?öé 6ê;Wê8“ê5Ìê&ëU)ë:ë3ºëîë~ìD…ì2ÊìRýì%Pí<ví³í<ÎíBî+Nî;zî/¶î.æî'ïD=ïW‚ï‰Úï(dð0�ðR¾ðdñDvñ»ñ4Õñ*
! ò<5ò;rò®ò4Îò-ó51ó/gó2—ó)ÊóBôó.7ô!fô;ˆô Äô"åôõ8õ#Rõ!võE˜õ$ÞõWöL[ö/¨ö-Øö1÷/8÷bh÷TË÷& øNGø–øe³øRù5lù¢ù/ÀùðùHúNPú)Ÿú?Éú6	û@@û=�û/¿û;ïûJ+ü<vü8³ü:ìü?'ý(gý3�ý:Äý:ÿý6:þ6qþ¨þ4Ãþ2øþ=+ÿRiÿ>¼ÿûÿ99P&Š&±5Ø(97q1�1¿ñ11#c ‡‚¨w+&£Ê-ä*;=y2�BÂ1*7b.q+ -Ì/úL*,w1¤$ÖPûKL,˜DÅ*
! 65RlR¿B	5U	;‹	®Ç	1v
! ¨
! (È
! Iñ
! F;F‚'ÉJñI<&†·­Oe
µ
Ô
ê
D$[/€@°.ñ K=.‰2¸ëþD'$l/‘Áßü#>YRx3Ë9ÿ9:Ii„î/D>4ƒ$¸4ÝROeLµC/F!v-˜1Æ8ø1+Ht!�±2ÍJJKG–WÞ&69]6—3Î3'6.^'�!µ×Cð?4t‘=±<ï*,MWH¥HîH7H€É$Û(')8Q8Š$ÃEè$.ÄSsCŒ6Ð? IG I‘ 1Û I
!$W!|!E™! ß!»€"<<#&y#> #Vß#&6$-]$K‹$×$~ì$Qk%H½%O& V&Kw&)Ã&(í&%'0<',m'jš'B(>H(:‡(7Â(#ú(B)Ga)=©)-ç)7*)M*$w*œ*;³*(ï*)+'B+nj+,Ù+3,&:,0a,%’,1¸,3ê,%-,D-%q-E—-%Ý-0.(4..].4Œ.@Á.+/4./3c/+—/9Ã/ý/T0Go0;·06ó0D*1=o1¡­1)O2"y2;œ2Ø2ñ2;3UJ3  3&Á3$è3#
4v14v¨4�5‚¡5-$6LR6!Ÿ6-Á6"ï6]7)p7Kš7,æ7;8`O8N°8#ÿ8=#9;a9)�9Ç9oå9ŒU:{â:^;Ez;*À;%ë;N<3`<(”<½<*Ü<=U =Ov=&Æ=7í=a%>2‡>&º>(á>&
! ?1?P?e?z?M™??ç?7'@?_@!Ÿ@*Á@ì@AC#APgA*¸AJãAJ.B+yB6¥B8ÜBwC7�CDÅC?
! D%JD:pD6«DÅâDV¨E<ÿEF<FPƒF"ÔF5÷FM-G={G(¹G$âGHH:PHN‹HÚH{éHyeIyßI_YJL¹JRKAYKL›K1èK¸L>ÓL?M0RM¶ƒM/:NGjN0²N/ãN¡OMµOP'P%APgPD~PjÃP.QIQKbQF®QõQBR0RR%ƒR-©R&×R2þR51S1gS"™S4¼S5ñSS'T[{TQ×T)UW©UoVSqV?ÅV6W<W>¼WrûW\nXrËX¤>Y€ãYUdZIºZ†[‹‹[ƒ\N›\ˆê\’s]J^QQ^J£^uî^^d_4Ã_�ø_4z`F¯`Xö`�OanÝavLb6Ãb`úb_[c*»cTæct;d\°do
e|}egúe[bfx¾fV7g^ŽgIígs7hg«hTi-hi@–i3×iYjTej8ºjdójoXk,Èkuõk€kl�ìl&Šmb±m*nO?nL�n@Ün+o=Io8‡o/Ào&ðo9pOQp)¡pDËpsq8„qQ½qgrgwrgßrfGsp®srtW’t_êtWJuW¢uWúuWRvWªvcwJfwC±wAõw@7xwxxCðx+4yK`y;¬y$èyl
zEzz;ÀzˆüzT…{ƒÚ{¼^|`}1|}f®}D~MZ~5¨~6Þ~:=P|ŽK€hW€IÀ€D
! �XO�\¨�K‚dQ‚N¶‚Xƒ”^ƒVóƒSJ„kž„f
! …hq…^Ú…‹9†tÅ†N:‡K‰‡YÕ‡H/ˆCxˆ{¼ˆX8‰}‘‰XŠphŠfÙŠJ@‹X‹‹^ä‹XCŒdœŒ[�r]�WÐ�‚(Žb«ŽP�S_�`³�O�Dd�^©�G‘EP‘E–‘FÜ‘>#’/b’<’’?Ï’;“(K“t“z”“K”K[”V§”•þ”n”•v–Oz–šÊ–4e—Gš—.â—K˜k]˜FÉ˜R™Mc™M±™Mÿ™EMš3“š3Çš,ûšc(›‡Œ›DœGYœ+¡œPÍœQ�Rp�TÃ�Pž[ižJÅž:Ÿ/KŸ9{Ÿ2µŸAèŸ$* -O s} *ñ X¡+u¡%¡¡LÇ¡<¢iQ¢d»¢A £=b£L £Ií£D7¤a|¤>Þ¤9¥JW¥"¢¥/Å¥5õ¥V+¦)‚¦C¬¦|ð¦]m§3Ë§2ÿ§D2¨Dw¨M¼¨ƒ
! ©=Ž©‡Ì©eTª4ºª@ïª;0«Al«C®«.ò«€!¬\¢¬Oÿ¬RO­t¢­I®.a®O�®;à®E¯8b¯@›¯CÜ¯i °VŠ°6á°D±$]±%‚±�¨±™6²nÐ²4?³nt³gã³7K´qƒ´<õ´L2µRµ>Òµi¶a{¶OÝ¶Í-·.û·+*¸CV¸jš¸>¹6D¹9{¹0µ¹#æ¹Œ
! º,—º<Äº.»I0»Az»%¼»Tâ»J7¼G‚¼TÊ¼=½a]½*¿½Tê½@?¾H€¾HÉ¾$¿.7¿Vf¿=½¿Bû¿~>Àc½ÀZ!ÁG|Á)ÄÁ¤îÁ>“Â6ÒÂA	ÃAKÃO�Ã\ÝÃA:ÄK|Ä?ÈÄ]ÅEfÅk¬Å�Æ”¨ÆF=Çl„ÇSñÇFEÈWŒÉCäÉ_(ÊfˆÊ/ïÊRË`rË_ÓËK3ÌQÌJÑÌ7ÍQTÍn¦Í[ÎCqÎCµÎKùÎJEÏE�Ï]ÖÏ¨4ÐmÝÐ_KÑa«Ñ7
ÒLEÒ:’Ò(ÍÒOöÒEFÓNŒÓ3ÛÓ(Ô58ÔpnÔQßÔ71Õ\iÕgÆÕN.Ö8}ÖZ¶Ö;×EM×h“×;ü×B8Øo{Ø+ëØ&Ù)>ÙHhÙ!±Ù/ÓÙWÚh[Ú?ÄÚ©Û<®ÛhëÛiTÜ4¾Ü[óÜPOÝK ÝkìÝoXÞˆÈÞ:QßiŒß0öß_'àC‡à,ËàEøàL>á9‹áHÅá/âF>âB…â:ÈâbãefãcÌãC0ä1täI¦ädðäCUåR™åˆìå‡uæ8ýæG6çC~ç0ÂçAóç=5èksè]ßèd=éO¢é?òé42êGgê9¯ê@éê;*ëAfëZ¨ëHìULìi¢ìZíOgío·í^'î;†îRÂîWïImïT·ïwð_„ð[äð*@ñ;kñJ§ñPòñ¨Cò@ìòB-óLpód½ó*"ôTMô(¢ô/Ëô¯ûô«õ>³õ`òõXSöÒ¬öþ÷}~øëüøèù.÷ût&þ_›þJûþVFÿ+�ÿ¯Éÿ¼y;6™r‰<–aÓP5¸†\?&œ]Ã4!+V*‚N­sünp%ß\(b(‹´ Òó	 3	 T	-u	'£	*Ë	\ö	0S
! 0„
! ^µ
! ]crÌÖÆ£žj
a	Ck3¯5ãBA\6ž;Õ*$<%aÎ‡8VT�ŠäTo’Ä.W>†eÅp+œ&¢ÉÞî
! )9Z<—B´G÷_?}Ÿ@D^+£,Ï+üY(D‚"ÇMêh8X¡Eú=@/~W®=7D`|iÝQGQ™?ëD+Pp8Á0úe+Y‘[ëNG T– Pë V<!I“!GÝ!(%"KN">š"PÙ"J*#Bu#<¸#\õ#dR$]·$\%Yr%sÌ%:@&l{&6è&?'7_'—'¢°'3S(~‡(9):@)D{)SÀ)-*7B*4z*V¯*J+5Q+5‡+q½+*/,)Z,M„,'Ò,&ú,+!-ŒM-LÚ-/'.@W.O˜.Oè.:8/+s/4Ÿ/BÔ/=07U08�0DÆ0M1cY17½1.õ1.$2/S2Bƒ2/Æ2Kö2WB3½š3EX4Gž4Sæ4P:5.‹5!º5AÜ5A6S`6B´6=÷6457fj7FÑ7=8?V8=–8BÔ8<9T9AZ9Dœ9Uá9`7:˜:3·:1ë:0;8N;H‡;BÐ;?<9S<A�<2Ï<&=')=(Q=1z=*¬=+×=&>.*>0Y>0Š>»>Ò>Mè>6?iN?f¸?&@F@7]@*•@&À@]ç@%EA*kA–A±A.ÏA-þA-,B1ZBDŒB�ÑB‹_C1ëCGDieDWÏDD'E@lEc­EIFC[FFŸFUæFb<GdŸGWH€\H@ÝHAIE`I?¦IAæI](J@†JHÇJlKy}KF÷K
>LLL%\L'‚LmªL"M@;M||MBùM4<N!qN“Nh®N^O>vO8µO8îO!'PSIP6�PLÔPI!Q4kQ3 QGÔQ1RENR7”R3ÌR6S=7SEuS,»SBèS7+TCcTF§T;îT7*UPbUW³UVP+VB|V(¿V:èV #WDWdWE~W ÄW2åW'X@X<MXiŠXaôXVY cY1„Y=¶Y3ôY1(Z0ZZ9‹Z0ÅZ:öZ@1[<r[7¯[7ç[5\9U\1�\AÁ\Y]F]]=¤]:â]2^RP^9£^HÝ^F&_>m_;¬_0è_@`=Z`œ˜`z5aA°aGòa.:bXibAÂb<c:AcN|c#Ëc5ïcF%dDldC±d4õd+*e=VeE”e?Úef:8f$sf0˜fÉf2æfKg#eg%‰gZ¯g>
! h)Ih sh=”h@Òh\i<piE­iLóiG@jKˆj=Ôj_k=rk%°kÖk.õk1$lrVl€ÉlsJmz¾mˆ9n{Ân{>o‰ºo|DptÁp‚6qu¹qv/r¦r‡&sˆ®s�7tD¹tHþt4GuT|u5ÑuLv2Tv.‡v%¶v-Üv(
! w93wfmwJÔw,x0LxU}x5Óx*	y>4yƒsy‰÷y1�z5³z7ézZ!{7|{8´{,í{C|A^| |¸|Ô|Gæ|T.}=ƒ}JÁ}=~JJ~ •~'¶~'Þ~)00Ba&¤ËCé-€4=€'r€7š€mÒ€V@�.—�EÆ�0‚0=‚9n‚B¨‚3ë‚)ƒ@Iƒ6Šƒ;ÁƒHýƒ!F„Xh„?Á„d…2f…
™…9§…)á…8†7D†3|†°†Ë†å†Hÿ†2H‡3{‡7¯‡Uç‡J=ˆ4ˆˆ6½ˆ3ôˆ;(‰=d‰¢‰¾‰HÜ‰?%Š.eŠ/”Š)ÄŠ#îŠG‹"Z‹,}‹3ª‹Þ‹,ú‹['ŒƒŒ,“Œ	ÀŒ0ÊŒ7ûŒ%3�=Y�ƒ—�9ŽPUŽ#¦ŽÊŽ7åŽ4�/R�?‚�0Â�.ó�."�Q�.j�;™�bÕ�^8‘U—‘"í‘/’@’_’~’?œ’|Ü’&Y“q€“hò“‚[”cÞ”9B•|•
! ‘•/œ•@Ì•+
–<9–0v–A§–.é–5—/N—~—N‘—(à—H	˜0R˜Aƒ˜*Å˜<ð˜@-™Wn™/Æ™Zö™7Qš8‰š4ÂšD÷š1<›9n›C¨›/ì›Eœ8bœ#›œR¿œZ�fm�4Ô�,	ž06ž5gžD�ž3âž-ŸYDŸkžŸJ
!  uU UË ]!¡I¡\É¡D&¢Kk¢#·¢Û¢5ð¢&£*>£2i£Rœ£_ï£.O¤4~¤6³¤>ê¤:)¥9d¥2ž¥1Ñ¥\¦I`¦-ª¦+Ø¦/§(4§U]§*³§cÞ§RB¨8•¨;Î¨!
! ©.,©8[©”©/¯©0ß©<ª@Mª!ŽªX°ª	«"«!<«-^«Œ«0¤«(Õ«,þ«.+¬*Z¬…¬Ÿ¬º¬Õ¬í¬+ü¬(­,A­;n­0ª­;Û­;®=S®;‘®;Í®;	¯;E¯;�¯/½¯8í¯&°:°A°/U°-…°,³°(à°(	±2±>D±Hƒ±Ì±
å±Oó±(C²+l²)˜²6Â²2ù²+,³.X³/‡³4·³*ì³+´6C´3z´®´Ë´1è´;µ½Vµ,¶!A¶Dc¶J¨¶$ó¶D·0]·'Ž·,¶·-ã·5¸6G¸<~¸@»¸8ü¸95¹1o¹<¡¹%Þ¹,º1º Oº/pº3 ºQÔº1&»ZX»?³»<ó»0¼AA¼'ƒ¼5«¼&á¼&½/½N½!i½4‹½<À½ý½*¾)C¾Om¾\½¾¿i#¿C�¿'Ñ¿ù¿"À':À"bÀ6…À¢¼À7_ÁK—Á!ãÁ<ÂJBÂ,�ÂDºÂ[ÿÂ2[Ã\ŽÃjëÃ@VÄ>—Ä?ÖÄJÅ.aÅ<�ÅÍÅíÅ>Æ2KÆ ~Æ"ŸÆ6ÂÆ5ùÆ//ÇJ_Ç.ªÇ5ÙÇ6È9FÈS€ÈCÔÈSÉLlÉG¹ÉkÊ4mÊL¢Ê.ïÊ$Ë0CËstËpèË<YÌA–ÌcØÌ3<Í4pÍ4¥Í@ÚÍ6ÎNRÎ¡Î^·ÎÏ@&Ï%gÏM�ÏTÛÏ*0Ð-[ÐG‰Ð;ÑÐ<
Ñ<JÑ;‡Ñ>ÃÑ=ÒG@Ò-ˆÒ$¶Ò0ÛÒÓ,Ó>GÓ4†Ó%»Ó=áÓ>Ô:^ÔN™ÔDèÔ1-Õ,_Õ6ŒÕ1ÃÕhõÕ^^ÖY½Ö×&×_?×\Ÿ×0ü×1-Ø`_Ø^ÀØgÙ>‡Ù>ÆÙ<Ú BÚ+cÚ�ÚL­ÚúÚ"Û<1Û<nÛ8«Û#äÛ7Ü:@Ü*{Ü%¦ÜcÌÜ:0Ý*kÝ–Ý*³ÝÞÝüÝ%Þ@ÞI_ÞC©ÞMíÞ?;ßM{ßŽÉßMXàE¦à]ìàAJáDŒáTÑáS&â>zât¹âX.ã>‡ãÆãCÓãä#äX/änˆä÷äåS'å;{å9·åKñåD=æH‚æ9Ëæ9ç6?ç6vçP­ç@þçD?è;„è?Àè<é@=éI~éLÈé}êa“êqõêagë>Éë3ìI<ìZ†ì\áì9>í^xí2×íL
! î:Wî:’î<Íî.
! ï?9ïFyï9ÀïAúï_<ð?œð0ÜðQ
ñO_ñP¯ñ<ò<=ò(zò,£ò*Ðò@ûò7<ó>tó=³ó7ñó:)ôbdô^ÇôQ&õOxõhÈõl1ö=žö~Üö‚[÷`Þ÷^?ø5žø-Ôø4ù27ùVjù8Áù:úù`5ú/–ú<Æú4û.8û0gû@˜ûNÙûK(ü/tü=¤üHâü9+ýHeýA®ý6ðýI'þLqþF¾þAÿ,Gÿ4tÿI©ÿ.óÿh"K‹J×E"!hXŠUãM9}‡sAy7»?ó,3=`5žBÔ°_ÈB(>k=ª7èV Hw?Ài6j6¡OØ>(	-g	6•	EÌ	%
! )8
! =b
! L 
! )í
! B"Z!}Ÿ-¾.ì+<GY„DÞ%#
9I
=ƒ
SÁ
88NB‡8Ê3775o.¥<Ô<9N?ˆ@È?	+ISueÉ*/3ZRŽ&á'U0Q†QØ6*a1�"³0Ö""*OM>�7Ü+9@*z.¥-Ôv>y5¸ î2'B0j,›,È7õ9-SgB»EþSD\˜tõ=jI¨Iò6<VsBÊD
ARR”çD/I:yU´M
! !X)z)¤^Î8- 8f 6Ÿ 'Ö Lþ :K!:†!*Á!Qì!8>"Rw"BÊ"?
#?M#7�#FÅ#S$S`$L´$<%:>%Dy%\¾%N&Sj&*¾&-é&J'$b''‡'+¯'XÛ'<4('q(E™(9ß(9)0S) „):¥)Yà)@:*5{*0±*3â*1+.H+/w++§+)Ó+&ý+*$,<O,AŒ,HÎ,E-;]-H™-3â-.5.Iµ.1ÿ.G1/7y/9±/3ë/!0%A0Fg0N®0-ý0N+1:z16µ1Bì19/2-i2V—2Aî2#034T3(‰3<²3Zï34J4%41¥4/×495AA5Vƒ5`Ú5s;68¯6&è6I7*Y7„7+£7NÏ7N8$m8%’8$¸8Ý8'ô8%9B99_9™9±9Ñ9#ñ91:0G:9x:;²:Mî:=<;3z;4®;…ã;ci<!Í<Dï<(4=)]=B‡=	Ê=Ô=<ì=<)>f>*w>W¢>%ú>5 ?6V?3�?Á?Ý?+ô?A @b@1w@/©@FÙ@I A#jAeŽAGôAI<B@†BIÇB0CRBC)•C¿C(ÜC<D9BD6|D:³D îDEU.Ej„E&ïE"F9F4XF9�F(ÇFðF1GL9GK†G9ÒGHHGUH@�H=ÞH<IIYI<£IIàIV*J0�J`²JjKE~KDÄKg	LqLGˆLCÐLM/0M0`M‘ME¨M"îM&N€8N6¹N!ðNPO,cOR�O.ãO1PPDPL•PJâPF-QtQi�Q*ùQ.$RFSR2šR9ÍR4S<S1TSJ†S3ÑS@T FTHgT5°T)æT"U3U6RU&‰U1°UHâUY+Vl…VEòVR8WE‹WRÑW2$XƒWXEÛXJ!YHlY;µY?ñYD1ZDvZ*»Z%æZ@[7M[2…[5¸[.î[P\-n\Bœ\1ß\%]D7]6|]@³]Gô]G<^;„^7À^3ø^7,_*d_7�_;Ç_/`(3`$\``�`7â`LaKga³a®Äa1sb1¥b1×bY	c)cc/�c½c>ØcTdRld[¿d:e9VeC�e1ÔeBf0If>zf5¹f;ïf>+gyjg"ägJhIRhVœhJóhF>iV…i?ÜifjKƒj;Ïj9k2EkOxk$Èk:ík5(l$^l<ƒlAÀl9ma<m1žmNÐmLnJln;·n0ón1$oVo+to1 o2ÒoAp1Gp6yp=°pPîpT?q3”qVÈqjrŠrªr/ÈrFør)?s:is¤s3Às7ôs7,t:dt4Ÿt/Ôt1uL6umƒu8ñu2*vG]v1¥v-×v9w>?w>~wG½w0x46xHkx)´x'ÞxGy*NyMyyOÇyKzTcz:¸zCózl7{+¤{@Ð{N|U`|b¶|_}Ry}'Ì}iô}*^~‰~E¥~Fë~=2Wp.Èw÷/o€FŸ€^æ€PE�I–�'à�0‚<9‚#v‚8š‚ZÓ‚W.ƒF†ƒ^Íƒ2,„K_„/«„:Û„E…>\…4›…CÐ…4†DI†0Ž†<¿†%ü†8"‡?[‡4›‡#Ð‡&ô‡_ˆv{ˆXòˆzK‰;Æ‰,Š4/Š1dŠI–Š-àŠ<‹8K‹+„‹'°‹)Ø‹#Œ3&ŒZŒ2wŒ=ªŒ/èŒ�$�A0�Wr�1Ê�Xü�&UŽ6|Ž1³Ž=åŽ=#�:a�œ�=·�(õ�!� @�3a�•�E±�:÷�02‘.c‘9’‘CÌ‘’</’[l’8È’W“KY“<¥“â“2ô“F'”Cn”/²”<â”\•2|•l¯•'–%D–-j–3˜–>Ì–—8—"P—
! s—~—X�—Yé—DC˜8ˆ˜!Á˜)ã˜
™0+™W\™A´™Bö™?9šUyšmÏš+=›2i›Gœ›9ä›.œAMœ/�œ¿œ8Ôœ8
�AF�Kˆ�@Ô�Ož#ež3‰ž,½ž,êž'Ÿ#?ŸjcŸ&ÎŸ!õŸ6 AN 7� 7È 7¡28¡.k¡Fš¡,á¡'¢k6¢&¢¢%É¢@ï¢J0£Ž{£3
! ¤c>¤P¢¤Zó¤UN¥N¤¥Jó¥3>¦.r¦W¡¦>ù¦O8§9ˆ§SÂ§¨&¨!F¨Sh¨¼¨)Ö¨&©?'©g©;…©9Á©7û©23ªBfª3©ª1Ýª1«9A«H{«KÄ«I¬RZ¬/­¬fÝ¬QD­;–­9Ò­@®7M®g…®"í®2¯GC¯5‹¯@Á¯1°04°8e°[ž°=ú°[8±6”±iË±i5²tŸ²V³Nk³Oº³/
! ´):´Pd´Tµ´>
! µ8IµQ‚µ[Ôµ90¶=j¶U¨¶3þ¶.2·Ha·oª·*¸E¸T¸>m¸M¬¸Cú¸2>¹5q¹+§¹@Ó¹2º-GºEuº(»ºCäº;(»-d»(’»,»»Oè»28¼<k¼A¨¼;ê¼R&½=y½?·½÷½$¾/4¾d¾~¾(™¾rÂ¾ƒ5¿Y¹¿9À(MÀ$vÀ)›À#ÅÀ)éÀPÁGdÁ#¬Á#ÐÁsôÁKhÂW´ÂÃ*Ã-IÃ.wÃf¦ÃC
ÄSQÄW¥Ä0ýÄ¶.Å.åÅ4Æ@IÆ7ŠÆ"ÂÆ8åÆ0ÇMOÇK�Ç/éÇ0È*JÈ±uÈ%'ÉMÉbÉ}É"—É2ºÉMíÉ(;Ê(dÊ7�Ê ÅÊæÊË &ËGË+fË#’Ë?¶ËYöËmPÌC¾ÌÍ'Í=BÍ)€Í<ªÍ(çÍ[ÎClÎ$°ÎRÕÎ(Ï0<ÏHmÏ*¶Ï*áÏ5ÐBÐ+^Ð*ŠÐ&µÐ1ÜÐ8ÑBGÑ:ŠÑ+ÅÑ+ñÑ@Ò7^Ò$–ÒG»Ò@ÓaDÓ?¦ÓæÓ,õÓ"Ô-8Ô#fÔ#ŠÔ#®ÔÒÔ*æÔ&Õ8Õ!OÕ%qÕ—Õ
®Õ¼Õ
ØÕæÕ'ýÕ
%Ö3Ö0NÖ Ö Ö´Ö'ÏÖI÷ÖA×]×'|×\¤×*Ø*,ØMWØ¥Ø ÅØæØýØ<Ù2XÙ‹ÙžÙ&½ÙäÙPûÙXLÚ¥Ú#ÂÚæÚCÛ0DÛuÛ!ŠÛ$¬Û5ÑÛ)Ü.1Ü9`ÜFšÜVáÜ 8ÝcYÝv½Ý;4Þ0pÞ@¡ÞDâÞ8'ß`ß2€ß<³ßIðßs:à9®à#èà$á1á7Lá„á3žá3Òáâ%%â)KâruâèâAúâ<<ãEyã@¿ãää&&ä:Mä5ˆä#¾äLâä /å&Påwå)•å0¿å,ðå-æ9Kæ)…æ<¯æ3ìæU çsvçêçÿçè$$è0IèbzèDÝè'"éJé[émé‚é/‘éFÁé\ê2eê˜ê)¶êBàêH#ëBlë1¯ë7áëKìeìL�ìCÎì\í=oíS­í&î4(î5]î9“îIÍî+ï\Cï5 ï_Öï56ð=lð@ªðTëð3@ñ;tñ;°ñHìñ%5ò7[ò'“ò3»ò4ïò$ó!+óAMó4�óÄóàó<þó&;ôbô=kô0©ôÚôùôõY)õ@ƒõCÄõCö:Lö-‡öSµö2	÷F<÷,ƒ÷.°÷/ß÷0ø/@ø/pø1 ø(Òøûøù)7ù,aù.Žù½ù)×ù1ú23ú2fú™ú¶úÅú+ãúû,ûKûaû€û�û¥û¿ûQÎû ü/üIüeüü™ü ³üÔüãüôüýý3ýOý:jý¥ýµý'Äý(ìý%þ-;þiþ=ƒþ Áþ%âþÿÿ9&ÿ`ÿ<vÿ>³ÿPòÿC R d  “ ¥ ´ Ã !Ú "ü L ]l %Ê )ð  @+ l 2~ a± . B U $h 2� À Ö î 0 61 ,h %• » Ñ Bå (( Q wc Û #ï  C/ 0s *¤ HÏ 2 K ` ?| J¼   "/ @R -“ @Á J	 (M	 v	 Œ	 8Ÿ	 ªØ	 Kƒ
!  0Ï
!   / <D ?� 2Á =ô 2 E ` 0t ¥ » Î §ß ‡
 8š
 CÓ
  * 9 O i x Ž ª A¹ %û "! D ] '| %¤ 5Ê C D %Z )€ ª !È ê 3û 3/ c $y 2ž Ñ :ì ' @ X *t *Ÿ Ê (ã 8 E (c Œ %§ )Í ÷  , $D i x � ¨ +½ Aé 5+ a ?| ¼ =× 3 &I -p =ž %Ü   7 #L "p /“ Ã × Võ (L Cu "¹ Ü ð  - I ^ x Š  ¡ )Â ì & ( < W v • -´ 4â  0 B &\ 4ƒ 2¸ ë  ! 6 %R *x M£ ñ   3 /K { ” %¦ #Ì ð < = !\ ~ H” GÝ % @ X 'u *� È XÛ X4  �  -«  NÙ  (! ;F! E‚! È! â! ÿ! " ." L" #b" *†" ±" Ë" Ý" ÷" # j1# ?œ# IÜ# E&$ 1l$ -ž$ CÌ$ �% W’% ]ê% 9H& W‚& 4Ú& W' .g' !–' >¸' B÷' `:( i›( 8) 1>) 3p) :¤) :ß) 7* 2R* F…* DÌ* \+ Fn+ /µ+ Eå+ /+, W[, 9³, :í, D(- 4m- N¢- 8ñ- F*. jq. 1Ü. 3/ -B/ Bp/ ¿³/ ¯s0 q#1 Ç•1 ­]2 I3 8U3 ,Ž3 6»3 Zò3 8M4 3†4 #º4 ŒÞ4 uk5 vá5 4X6 (�6 \¶6 17 cE7 D©7 4î7 F#8 4j8 RŸ8 Jò8 R=9 4�9 Å9 Tã9 +8: qd: YÖ: /0; :`; !›; 7½; +õ; T!< Vv< HÍ< 0= EG= ,�= Fº= -> G/> =w> kµ> /!? +Q? 3}? )±? Û? 7ó? >+@ >j@ $©@ )Î@ *ø@ "#A .FA "uA %˜A #¾A %âA 2B -;B 6iB ) B (ÊB +óB <C C\C A C 8âC ,D 9HD S‚D 1ÖD %E X.E 1‡E Z¹E ZF QoF ÁF A×F @G @ZG ,›G 5ÈG 4þG 63H 6jH 7¡H ÙH 
òH /I >0I 2oI '¢I 'ÊI  òI #J 77J 2oJ \¢J ÿJ 
! K  K <K WK tK ’K )¤K )ÎK KøK (DL mL 6�L GÄL KM :XM “M  M e¿M %N EN eN #�N 7¥N  ÝN ,þN O+O V{O BÒO 9P ;OP s‹P ÿP %Q "DQ 0gQ H˜Q áQ þQ R C,R KpR ?¼R %üR :"S 6]S 9”S /ÎS IþS LHT #•T 1¹T XëT 8DU /}U 7­U $åU *
! V :5V (pV ;™V 7ÕV 7
W 6EW ;|W 4¸W RíW :@X &{X M¢X :ðX +Y 8Y VAY D˜Y ÝY uýY MsZ $ÁZ CæZ 8*[ c[ {[ gš[ \ O\ '_\ 6‡\ ¾\ RÅ\ 8] ,Q] X~] *×] ?^ >B^ C�^ >Å^ C_ 6H_ %_ -¥_ 9Ó_ '
` ;5` )q` #›` ¿` Ü` !ú` a /.a I^a N¨a X÷a 8Pb *‰b 0´b ;åb C!c Gec (­c (Öc 5ÿc %5d $[d ,€d ,­d ,Úd 0e '8e #`e ›„e Â f =ãf !g  =g C^g C¢g Læg >3h 9rh ¬h -Èh Zöh PQi C¢i Læi \3j Z�j xëj dk €k 2Ÿk #Òk +ök ["l U~l 1Ôl ;m #Bm Jfm U±m sn T{n bÐn U3o o‰o xùo Xrp UËp C!q beq XÈq \!r C~r 0Âr >ór &2s *Ys 7„s ‡¼s JDt V�t Dæt R+u 5~u >´u >óu !2v *Tv 1v 0±v &âv K	w >Uw (”w ,½w +êw #x .:x :ix >¤x /ãx ˆy Hœy 4åy `z p{z 0ìz C{ #a{ &…{ A¬{ =î{ ,| ^?| Ež| Vä| S;} $�} 2´} ;ç} #~ ?~ 2_~ 8’~ Ë~ =ê~ 0( 7Y M‘ 1ß e€ Aw€ :¹€ Nô€ PC� ~”� {‚ &�‚ ?¶‚ <ö‚ .3ƒ 4bƒ 3—ƒ Ëƒ 
! Þƒ Méƒ O7„ 9‡„ KÁ„ …
… b“… ö… o† d�† =æ† "$‡ 4G‡ '|‡ "¤‡ !Ç‡ !é‡  ˆ !,ˆ "Nˆ <qˆ 6®ˆ )åˆ $‰ #4‰ +X‰ A„‰ Æ‰ ã‰ /ÿ‰ "/Š RŠ &qŠ 3˜Š #ÌŠ 7ðŠ &(‹ /O‹ ‹ &ž‹ Å‹ $ß‹ Œ 5 Œ #VŒ $zŒ &ŸŒ -ÆŒ 'ôŒ 1� N� #k� #�� ³� Ð� ï� !
! Ž $,Ž $QŽ -vŽ +¤Ž ÐŽ !ïŽ !� 03� 6d� (›� Ä� à� :ý� -8� .f� •� @°� ?ñ� Y1‘ 4‹‘ CÀ‘ 8’ (=’ 5f’ (œ’ (Å’ .î’ Y“ ?w“ 9·“ )ñ“ J” @f” 9§” Gá” D)• Hn• G·• (ÿ• (– :-– Ch– >¬– :ë– m&— #”— -¸— $æ— .˜ 7:˜ /r˜ /¢˜ &Ò˜ ù˜ o™ s�™ =õ™ —3š <Ëš W›  `› B�› qÄ› c6œ Cšœ GÞœ S&� 5z� :°� ;ë� <'ž Gdž A¬ž Pîž R?Ÿ U’Ÿ 2èŸ J  If  F°  N÷  GF¡ IŽ¡ ?Ø¡ Q¢ qj¢ BÜ¢ C£ Tc£ Z¸£ 2¤ 2F¤ ,y¤ *¦¤ "Ñ¤ 5ô¤ 4*¥ G_¥ L§¥ gô¥ P\¦ P­¦ Tþ¦ US§ b©§ D¨ IQ¨ ]›¨ Tù¨ XN© T§© Wü© HTª M�ª ëª &« 2« !P« @r« ³« Ó« è« ¬ (¬ H¬ "h¬ <‹¬ JÈ¬ M­ >a­ Z ­ cû­ J_® %ª® ZÐ® S+¯ J¯ &Ê¯ 8ñ¯ X*° iƒ° jí° oX± OÈ± o² 9ˆ² 2Â² 'õ² @³ P^³ &¯³ Ö³ .ê³ <´ %V´ F|´ aÃ´ <%µ =bµ  µ B¯µ  òµ (¶ B<¶ "¶ ¢¶ U³¶ <	· 7F· c~· ]â· T@¸ A•¸ K×¸ C#¹ >g¹ =¦¹ 7ä¹ ,º  Iº <jº G§º 8ïº (» ,D» q» Œ» #§» "Ë» î» ¼ ¼  ?¼ !`¼  ‚¼ !£¼  Å¼ !æ¼ ½ (½ H½ >h½ &§½ Î½ à½  ÷½ ¾ 3¾ _F¾ `¦¾ e¿  m¿ CŽ¿ CÒ¿ )À -@À >nÀ €­À ..Á V]Á B´Á B÷Á 6:Â &qÂ m˜Â .Ã *5Ã '`Ã %ˆÃ *®Ã "ÙÃ &üÃ )#Ä 1MÄ 'Ä §Ä :ÆÄ >Å H@Å C‰Å /ÍÅ 1ýÅ ./Æ -^Æ AŒÆ !ÎÆ ,ðÆ Ç S4Ç 'ˆÇ 7°Ç NèÇ -7È 3eÈ B™È 3ÜÈ JÉ Y[É µÉ *ÎÉ 3ùÉ -Ê .>Ê &mÊ )”Ê ¾Ê '×Ê ÿÊ 'Ë 2GË 4zË 4¯Ë IäË ).Ì #XÌ ?|Ì ¼Ì 8×Ì 9Í 4JÍ /Í ?¯Í 0ïÍ . Î .OÎ 4~Î 5³Î >éÎ ?(Ï 7hÏ 1 Ï $ÒÏ <÷Ï C4Ð QxÐ <ÊÐ DÑ 8LÑ /…Ñ @µÑ :öÑ V1Ò gˆÒ hðÒ mYÓ MÇÓ mÔ cƒÔ tçÔ u\Õ zÒÕ ZMÖ z¨Ö c#× ‡× C¤× 0è× Ø M%Ø #sØ d—Ø "üØ =Ù +]Ù ;‰Ù ?ÅÙ VÚ 5\Ú B’Ú gÕÚ e=Û \£Û .Ü J/Ü HzÜ OÃÜ PÝ JdÝ /¯Ý #ßÝ 6Þ 5:Þ ;pÞ 4¬Þ <áÞ *ß Iß <iß 2¦ß 1Ùß 1à D=à N‚à BÑà 'á -<á 2já A�á Dßá 5$â AZâ ,œâ 6Éâ ;ã =<ã 2zã j­ã sä žŒä t+å n å aæ Hqæ &ºæ Dáæ -&ç $Tç 7yç 1±ç 0ãç Fè R[è 9®è 3èè 7é 6Té 7‹é IÃé O
ê Q]ê D¯ê ,ôê 4!ë =Vë F”ë /Ûë Rì J^ì J©ì Nôì \Cí K í 2ìí 1î ;Qî E�î 2Óî 1ï 8ï @Xï D™ï DÞï @#ð Fdð !«ð >Íð (ñ (5ñ %^ñ G„ñ >Ìñ ò Gò :fò M¡ò -ïò 2ó *Pó 2{ó 4®ó .ãó +ô <>ô {ô ˆ›ô >$õ Zcõ :¾õ Sùõ HMö R–ö Séö 7=÷ @u÷ 9¶÷ ð÷ 8ø !Eø 9gø 5¡ø 4×ø 'ù N4ù Kƒù -Ïù Pýù 8Nú ‡ú F—ú Þú *÷ú /"û ,Rû û Ešû àû Dûû &@ü ;gü @£ü äü ?ýü 5=ý .sý Y¢ý @üý >=þ I|þ GÆþ Xÿ ?gÿ 7§ÿ Aßÿ '!!I!]!u!Š!¢!º!Ï!ç!ü!!&!<!Q!f!{!�!¥!º!Ï!ä!ù!!&!;!P!e!z!’!§!¼!Ô!é!þ!!(!=!R!g!|!‘!©!¾!Ó!ì!!!+!5A!w!Œ!§!FÂ!F	!P!m!1Š!A¼!"þ!2!!'T!^|!~Û!dZ!o¿!/!+O!{!!‘!;³!-ï!	!7	!N	!i	!&‰	!7°	!„è	!zm
! !4è
! !_!}!"œ!!¿!'á!'	!71!>i!'¨!$Ð!_õ!U
!1h
!1š
!1Ì
!þ
!! ;!\!9{!;µ!6ñ!3(!<\!0™!1Ê!Mü!;J!8†!4¿!/ô!!$!7F!!~!x !y!+“!"¿!&â!&	!$0!U!-s!4¡!'Ö!þ!4!8H!�!.›!)Ê!$ô!0!0J!'{!+£!-Ï!0ý!,.!H[!-¤!)Ò!'ü!.$!S!1l!&ž!.Å!4ô!%)!7O!9‡!5Á!(÷!= ! ^!!>”!4Ó!&!4/!=d!&¢!É!#å!F	!?P!�!%ª!$Ð!Aõ!?7!+w!/£!,Ó!+!&,!-S!$�!@¦!>ç!*&!.Q!+€!*¬!,×!.!/3!c!%ƒ!?©!é!B !6C !2z !­ !:Ê ! !!&!!=B!!(€!!=©!!3ç!!8"!6T"!3‹"!(¿"!'è"!%#!06#!/g#!0—#!3È#!$ü#!>!$! `$!$�$!4¦$!7Û$!4%!.H%!5w%!4­%!Uâ%!O8&!Uˆ&!Þ&!%ý&!*#'!2N'!*�'!2¬'!%ß'!(!R(!r(!0’(!$Ã(![è(!nD)!D³)!ø)!*!/(*!/X*!6ˆ*!+¿*!lë*!X+!(u+!_ž+!Pþ+!O,!"j,!$�,!1²,!3ä,!A-!Z-!6n-!+¥-!&Ñ-!&ø-!$.! D.!-e.!(“.!¼.!Õ.!æ.!)/!'-/!'U/!3}/!±/!BË/!A0!BP0!2“0!/Æ0!%ö0!*1!UG1!<�1!QÚ1! ,2!!M2!o2!"ƒ2!¦2! Â2!!ã2!*3!!03!!R3!+t3!+ 3!+Ì3!+ø3!+$4!+P4!+|4!+¨4!+Ô4!+5!+,5!$X5!}5!+˜5!(Ä5!/í5!!6!?6!%\6!5‚6!4¸6!4í6!%"7!!H7!!j7!!Œ7!®7!!Ë7!í7!%
! 8!!08!!R8!!t8!!–8!!¸8!!Ú8!)ü8!%&9!;L9!*ˆ9!(³9!+Ü9!<:!"E:!h:!:…:!"À:!ã:!$ý:!0";!'S;!K{;!6Ç;!þ;!,<!H<!"d<!'‡<!4¯<!(ä<!
=! *=!$K=!/p=!8 =!2Ù=!>>!6K>!D‚>!)Ç>!ñ>! ?!20?!"c?!1†?!*¸?!ã?!)@!<+@!7h@! @!Rµ@!MA!+VA!+‚A!®A!ÉA!3æA!+B!+FB!"rB!(•B!)¾B!&èB!-C!!=C!_C!vC!R“C!MæC!%4D!FZD!-¡D!ÏD!ãD! E!#$E!5HE!&~E!-¥E!;ÓE!,F!$<F!*aF!&ŒF!B³F! öF!2G!<JG!Q‡G!XÙG!*2H!]H!(xH!,¡H!*ÎH!%ùH!"I!+BI! nI!6�I!:ÆI!9J!>;J!;zJ!6¶J!gíJ!vUK!,ÌK!LùK!LFL!&“L!:ºL!6õL!8,M!<eM!A¢M!>äM!#N!;AN!G}N!ÅN!"ãN!PO!FWO!XžO!A÷O!79P!.qP!3 P!:ÔP!GQ!.WQ!:†Q!3ÁQ!?õQ!K5R!/�R!1±R!1ãR!0S!BFS!1‰S!3»S!9ïS!M)T!MwT!EÅT!AU!CMU!/‘U!=ÁU!<ÿU!><V!F{V!-ÂV!3ðV!*$W!bOW!:²W!:íW!8(X!)aX!?‹X!HËX!9Y!VNY!E¥Y!!ëY!>
Z!YLZ!>¦Z!-åZ!([!A<[!G~[!7Æ[!/þ[!*.\!Y\!t\!‘\!'«\!(Ó\!ü\!4]!O]!j]!0‡]!3¸]!ì]!.^!a2^!Y”^!:î^!<)_!9f_! _!À_!6Ð_!.`!86`!1o`!-¡`!-Ï`!8ý`!36a!1ja!/œa!-Ìa!:úa!5b!/Ub!…b!2–b!jÉb!T4c!,‰c!E¶c!Püc!Md!'kd!*“d!¾d!Ôd!$éd!)e!.8e!4ge!1œe!2Îe!0f!.2f!,af!'Žf!&¶f!&Ýf!*g!)/g!+Yg!)…g!&¯g!2Ög!/	h!(9h!&bh!,‰h!,¶h!,ãh!/i!-@i!.ni!.�i!.Ìi!.ûi!=*j!Bhj!A«j!Iíj!E7k!|}k!búk!B]l!+ l!*Ìl!*÷l!"m!9;m!:um!;°m!0ìm!>n!$\n!q�n!=ón!1o!±o!c1p!5•p!Ëp!Iæp!\0q!8�q!NÆq!)r!a?r!i¡r!9s!1Es!6ws!4®s!ãs!/üs!,,t!CYt!@�t!KÞt!+*u!EVu!Bœu!:ßu!!v!&<v!dcv!]Èv!4&w!S[w!4¯w!äw!"õw!&x!0?x!px!�x!4­x!Kâx!.y!=My!5‹y!Áy!Üy!$ðy!#z!%9z!4_z!4”z!Éz!=Ûz!{!29{!9l{!`¦{!Z|!^b|!:Á|!0ü|!-}!F­}!Wô}!CL~!f�~!y÷~!¥q! €!D8€!}€!?�€!+Ý€!3	�!D=�!(‚�!'«�!.Ó�!;‚!?>‚!~‚!@�‚!(Þ‚!+ƒ!63ƒ!2jƒ!:�ƒ!*Øƒ!Q„!9U„!H�„!+Ø„!C…!#H…!/l…!Aœ…!BÞ…!7!†!@Y†!Eš†!Cà†!C$‡!Ih‡!@²‡![ó‡!$Oˆ!tˆ!M“ˆ!Wáˆ!49‰!gn‰!@Ö‰!7Š!5OŠ!P…Š!DÖŠ!<‹!?X‹!;˜‹!LÔ‹!,!Œ!.NŒ!+}Œ!8©Œ!4âŒ!,�!AD�!F†�!EÍ�!%Ž!(9Ž!bŽ!4}Ž!?²Ž!'òŽ!*�!/E�!7u�!=­�!/ë�!0�!<L�!"‰�!.¬�!$Û�!4‘!!5‘!,W‘!!„‘!-¦‘!-Ô‘!=’!/@’!@p’!6±’!Oè’!48“!-m“!8›“!@Ô“!=”!1S”!(…”!"®”!*Ñ”!6ü”!&3•!2Z•!H�•!Ö•!/è•!+–!QD–!h––!;ÿ–!;—!IM—!——!,°—!3Ý—!"˜!4˜!7Q˜!‰˜! §˜!È˜!,æ˜!-™!:A™!5|™!?²™!?ò™!52š!1hš!Bšš!EÝš!I#›!Jm›!T¸›!U
œ!?cœ!=£œ!fáœ!BH�!C‹�!MÏ�!Sž!Cqž!4µž!>êž!T)Ÿ!"~Ÿ!0¡Ÿ!4ÒŸ!< !@D !4… !Jº !D¡!?J¡!3Š¡!@¾¡!Rÿ¡!nR¢!CÁ¢!D£!GJ£!-’£!7À£!Nø£!-G¤!9u¤!8¯¤!2è¤!2¥!QN¥!- ¥!<Î¥!0¦!<¦!8\¦!5•¦!QË¦!L§!4j§!4Ÿ§!/Ô§!A¨!2F¨!Ky¨!2Å¨!6ø¨!//©!5_©!/•©!3Å©!;ù©!;5ª!%qª!V—ª!"îª! «!h2«!U›«!Xñ«!XJ¬!v£¬!4­!OO­!NŸ­!Qî­!1@®!6r®!6©®!+à®!+¯!78¯!(p¯!3™¯!0Í¯!%þ¯!L$°!q°!ˆ°!+œ°!$È°!>í°!3,±!9`±!9š±!Ô±!dð±!}U²!5Ó²!|	³!?†³!MÆ³!*´!A?´!�´!G�´!/å´!.µ!7Dµ!6|µ!?³µ!óµ!+¶!=¶!"S¶!#v¶!š¶!°¶!,Ä¶!&ñ¶!·!$2·!+W·!ƒ·!3¢·!Ö·!ò·!¸!A ¸!4b¸!&—¸!@¾¸!Aÿ¸!"A¹!d¹!w¹!�¹!<£¹!;à¹!
º!*º!Bº!7Tº!#Œº!C°º! ôº!»!'/»!&W»!~»!™»!G¸»!!¼!!"¼!�D¼!]Æ¼!$½!#?½!$c½!(ˆ½!5±½!-ç½!S¾!Zi¾!`Ä¾!D%¿!Xj¿!*Ã¿!Zî¿!YIÀ!1£À!NÕÀ!W$Á!|Á!8ŒÁ!ŒÅÁ!�RÂ!YàÂ!:Ã!!RÃ!(tÃ!�Ã!#°Ã!"ÔÃ!"÷Ã!HÄ!]cÄ!FÁÄ!)Å!;2Å!FnÅ!iµÅ! Æ!Y@Æ!TšÆ!!ïÆ!4Ç!LFÇ!/“Ç!bÃÇ!L&È!SsÈ!AÇÈ!R	É!%\É!(‚É!%«É!!ÑÉ!(óÉ!%Ê!+BÊ!nÊ!ŒÊ!y£Ê!‘Ë!4¯Ë!;äË!* Ì!KÌ!8iÌ!0¢Ì!'ÓÌ!<ûÌ!,8Í!2eÍ!(˜Í!-ÁÍ!,ïÍ!3Î!PÎ!)pÎ!<šÎ!$×Î!,üÎ!T)Ï!~Ï!4”Ï!+ÉÏ!.õÏ!&$Ð!"KÐ!#nÐ!=’Ð!;ÐÐ!SÑ!K`Ñ!-¬Ñ!…ÚÑ!?`Ò!0 Ò!JÑÒ!#Ó!f@Ó!Z§Ó!TÔ!XWÔ!°Ô!7ÏÔ!4Õ!F<Õ!]ƒÕ!6áÕ!Ö!>3Ö!rÖ!K’Ö!.ÞÖ!E
×!.S×!-‚×!7°×!gè×!\PØ!Q­Ø!(ÿØ!1(Ù!ZÙ!?qÙ!2±Ù!7äÙ!,Ú!IÚ!_Ú!Ú!7žÚ!�ÖÚ!’fÛ!+ùÛ!(%Ü!NÜ!@eÜ!4¦Ü!4ÛÜ!1Ý!<BÝ!^Ý!BÞÝ!j!Þ!HŒÞ!YÕÞ!b/ß!.’ß!Áß!+Üß!-à!,6à!5cà!9™à!5Óà!4	á!B>á!�á!•á!©á!½á!Ñá!?ãá!8#â!#\â!+€â!V¬â!ã!$#ã!2Hã!3{ã!¯ã!%Èã!1îã! ä!+0ä!A\ä!"žä!(Áä!,êä!)å!Aå!(Uå!&~å!(¥å!Îå!íå!E
æ!Sæ!sæ!4†æ!9»æ!/õæ!%ç!%Aç!5gç!�ç!@²ç!@óç!;4è!Mpè!*¾è!Iéè!3é!BPé!4“é!SÈé!6ê!=Sê!2‘ê!;Äê!Bë!2Cë!2vë!7©ë!)áë!+ì!7ì!pWì!)Èì!_òì!#Rí!#ví!#ší!#¾í!$âí!!î!&)î!/Pî!.€î!K¯î!ûî!mï!=‚ï!8Àï!4ùï!.ð!(Jð!)sð!3�ð!6Ñð!&ñ!0/ñ!`ñ!8}ñ!;¶ñ!>òñ!=1ò![oò!#Ëò!Hïò!88ó!$qó!&–ó!1½ó!5ïó!0%ô!<Vô!J“ô!-Þô!;õ!=Hõ!=†õ!EÄõ!0
! ö!D;ö!3€ö!D´ö!Eùö!(?÷!'h÷!'�÷!6¸÷!7ï÷!P'ø!0xø!B©ø!\ìø!@Iù!$Šù!$¯ù!)Ôù!$þù!\#ú!T€ú!\Õú!32û!,fû!“û!X±û!X
! ü!0cü!A”ü!GÖü!Hý!=gý!?¥ý!"åý!4þ!5=þ!5sþ!R©þ!üþ!&ÿ!4Cÿ!5xÿ!8®ÿ!%çÿ!/
"B="K€"KÌ"?"(X"<�";¾"=ú"M8"(†"6¯"2æ"="CW"7›"0Ó""P "Nq"-À".î","J"]">p",¯"4Ü"D"aV"U¸"4"<C"l€"Aí"=/"8m"^¦")	"-/	"I]	"I§	"ñ	" 
! ".&
! "<U
! "2’
! "hÅ
! "v."R¥"!ø"("-C"Kq"Q½"T
"bd
"^Ç
"A&"/h" ˜",¹"<æ";#"4_"C”"Ø"$î"'";"<U"=’"BÐ"C"?W"I—"á"é"õ"	"!""-"pP"HÁ"
! ";""/^"MŽ"4Ü"Š"žœ"6;"Zr"lÍ"0:"8k"J¤"Tï"PD"•"¯"#È"*ì"l"2„"<·"+ô"- ",N"*{"¦" ¿"%à"K"?R"@’"Ó"6å"	"#&"8J"<ƒ"BÀ""[""[~"YÚ"g4"gœ"@"E"!["C}"AÁ"R">V"1•"LÇ"] "/r "z¢ "]!"Y{!"FÕ!"`"")}""O§""J÷""EB#"dˆ#"1í#"W$"w$"G—$"bß$"xB%"S»%"N&"�^&"?ü&"5<'"4r'" §'"EÈ'",("&;(")b(":Œ(":Ç("#)"3&)",Z)":‡)":Â)":ý)"98*">r*"=±*">ï*"C.+"4r+">§+"4æ+">,"GZ,"S¢,"Aö,"@8-"@y-"Eº-"E.";F.";‚."Q¾.")/"-:/"7h/"4 /"6Õ/"s0"I€0"9Ê0"1">$1"nc1"2Ò1"C2"AI2".‹2"-º2"*è2"73"TK3"U 3"9ö3"604"_g4",Ç4"Rô4"�G5"6Õ5"g6"gt6"GÜ6"Å$7"Åê7"H°8"1ù8"N+9"0z9"2«9"*Þ9"+	:"@5:"@v:"&·:"Þ:"ö:"
! ;"V&;":};"*¸;"iã;"uM<"CÃ<"C="HK="0”="<Å="/>"~2>"±>"#Å>"'é>"(?"#:?":^?"'™?""Á?"'ä?"@"1&@"1X@"Š@"O§@" ÷@"A"1A"LA"@[A"YœA"“öA"(ŠB"]³B"ZC"rlC"xßC"AXD"5šD"#ÐD"@ôD"75E"?mE".­E"*ÜE"F"(&F"0OF"3€F"&´F";ÛF"<G"TG"hG" ‚G"A£G"HåG".H"'NH"/vH",¦H"HÓH"3I"SPI"-¤I"6ÒI"	J")J"IJ"^hJ"bÇJ"=*K"ThK"M½K"_L"#kL"�L"%¥L"'ËL"óL"KM"RTM"6§M"@ÞM"?N"_N")N"(©N"ÒN"?ãN"-#O"+QO"3}O"+±O"(ÝO"0P"!7P"(YP"D‚P"FÇP"5Q"DQ"5dQ"-šQ"?ÈQ".R"'7R"l_R"pÌR"u=S"z³S"0.T"!_T"9�T";»T"%÷T"3U"@QU"?’U"2ÒU"KV"KQV".�V".ÌV"XûV"STW"S¨W"RüW"ROX"‘¢X"4Y"m´Y"P"Z"4sZ"�¨Z")F["0p["\¡["Vþ["TU\"]ª\"G]"HP]",™]",Æ]"0ó]"%$^"YJ^"È¤^"�m_"5ý_"13`"˜e`"=þ`"D<a"N�a" Ða"_ña"XQb"lªb"Bc"&Zc"q�c"Tóc"THd"L�d"Pêd"];e"h™e"Tf"oWf"AÇf"E	g"JOg"\šg"c÷g"R[h"v®h"M%i"Rsi"KÆi"cj"kvj"kâj"oNk"e¾k"s$l"u˜l"Ym"nhm"e×m"h=n"d¦n"Jo"PVo"Q§o"Mùo"hGp"g°p"_q"jxq"eãq"xIr"|Âr"]?s"V�s"[ôs"dPt"gµt"Su"Jqu"6¼u"Xóu"KLv"V˜v"Tïv"VDw"W›w"Tów"WHx"P x"Kñx"O=y"P�y">Þy">z"U\z"V²z"i	{"hs{"hÜ{"LE|"ä’|"Nw}"cÆ}"\*~"z‡~"q"0t"p¥">€"U€"n€"u€"A’€"Ô€"á€".ð€"��"‰°�"P:‚"0‹‚"¼‚"É‚"*Ø‚"2ƒ"v6ƒ"}­ƒ"s+„"zŸ„"j…"q……"F÷…":>†"Dy†"E¾†"F‡"NK‡"3š‡"5Î‡"Iˆ"NNˆ"2�ˆ"Ðˆ"2×ˆ""
! ‰"-‰"F<‰"ƒ‰".“‰",Â‰"3ï‰"3#Š"+WŠ""ƒŠ")¦Š"3ÐŠ"7‹"P<‹"V�‹"Yä‹"o>Œ"*®Œ"+ÙŒ"1�"D7�"V|�"KÓ�"/Ž":OŽ"VŠŽ"8áŽ"+�"F�"3e�"6™�"yÐ�"5J�"<€�"C½�"<‘"5>‘"+t‘": ‘"AÛ‘"’"R2’"$…’"rª’" “"+>“"1j“"=œ“"AÚ“"9”"(V”"6”"O¶”"M•".T•"0ƒ•"8´•""í•",–"Q=–"@�–"AÐ–"7—":J—""…—"'¨—"'Ð—"ø—"˜"-!˜"KO˜"F›˜"â˜"%ù˜"#™".C™"8r™"/«™"3Û™"3š",Cš";pš"¬š"Äš"Úš"ùš"u›"‰›"¨›""Ã›"4æ›"4œ""Pœ"sœ"’œ")±œ"Ûœ"&ùœ" �"%>�"d�"~�")œ�"%Æ�"4ì�"!ž"7ž"(Tž"}ž"%Žž"´ž"ŠÍž"hXŸ",ÁŸ"2îŸ"#! "3E ""y "0œ "Í ""ä "#¡"+¡"J¡"`¡"}¡"”¡"«¡"'É¡"ñ¡"r	¢"?|¢"C¼¢";£"E<£"6‚£".¹£"Gè£"T0¤"-…¤"9³¤"#í¤"@¥"7R¥"-Š¥"¸¥"BÇ¥"7
! ¦"‡B¦"XÊ¦""#§"sF§"6º§"9ñ§"C+¨"Jo¨""º¨" Ý¨"\þ¨"?[©"A›©">Ý©"3ª"6Pª":‡ª"XÂª"/«"+K«"_w«",×«"¬""¬"<B¬"¬"A”¬"VÖ¬"S-­"8�­"Eº­"®"®"'5®"5]®"4“®"UÈ®",¯"0K¯":|¯"Y·¯"?°"=Q°"(�°";¸°"ô°"=±"DN±"G“±"<Û±"=²".V²"W…²"6Ý²"N³"Hc³")¬³"GÖ³"_´"s~´"+ò´"Kµ" jµ" ‹µ"%¬µ""Òµ";õµ"=1¶"Mo¶"?½¶"=ý¶"=;·"2y·"3¬·"=à·"¸"C3¸"$w¸"œ¸"%¶¸"zÜ¸"BW¹"Iš¹"'ä¹"º"4º"Sº"Cgº"«º"Éº""àº".»"2»"O»"Fl»"³»"3Ñ»"¼"B¼"=_¼"@�¼"OÞ¼"#.½"/R½"<‚½"(¿½"Dè½"*-¾"(X¾"!�¾""£¾"LÆ¾"!¿"5¿"L¿"Ng¿"@¶¿";÷¿"Q3À"&…À"¬À"ËÀ"éÀ"ÿÀ"Á".+Á" ZÁ"3{Á"S¯Á"Â"-!Â"<OÂ"5ŒÂ"?ÂÂ"*Ã"--Ã"@[Ã"!œÃ">¾Ã"NýÃ",LÄ"/yÄ"T©Ä"7þÄ"56Å"&lÅ"“Å",³Å",àÅ"R
Æ"u`Æ"/ÖÆ"4Ç"/;Ç"-kÇ"'™Ç"PÁÇ"QÈ"dÈ"?€È"7ÀÈ"+øÈ"q$É"A–É"FØÉ"FÊ"JfÊ">±Ê";ðÊ"7,Ë"VdË"»Ë"7ÛË".Ì"*BÌ"/mÌ"�Ì"`¸Ì"Í"C+Í"-oÍ",�Í"/ÊÍ"úÍ"UÎ"$jÎ"N�Î"BÞÎ"_!Ï"(�Ï"HªÏ"1óÏ"G%Ð"GmÐ"HµÐ"@þÐ"Š?Ñ"NÊÑ"8Ò"GRÒ"9šÒ"ZÔÒ")/Ó",YÓ"1†Ó""¸Ó"*ÛÓ"1Ô""8Ô"&[Ô"%‚Ô"0¨Ô"0ÙÔ"!
! Õ",Õ"BÕ"	VÕ"=`Õ"&žÕ"ÅÕ"àÕ",ûÕ"6(Ö"0_Ö"!�Ö""²Ö"'ÕÖ"0ýÖ"G.×"Cv×">º×"Bù×":<Ø"<wØ"2´Ø"+çØ"HÙ"4\Ù"<‘Ù"6ÎÙ"MÚ"#SÚ"$wÚ"uœÚ"+Û">Û"6^Û"&•Û""¼Û"ßÛ"7úÛ"62Ü"+iÜ".•Ü"1ÄÜ"öÜ"Ý"0/Ý"4`Ý";•Ý";ÑÝ"8
Þ"FÞ"]Þ"EtÞ"ºÞ":ß"Vºß",à"">à")aà"|‹à"Sá"2\á"1�á"uÁá"P7â"Bˆâ"AËâ"5
ã"+Cã".oã"^žã"5ýã"T3ä"nˆä"5÷ä"-å"#?å"'cå"1‹å" ½å"5Þå"æ"00æ""aæ"S„æ"Øæ"bøæ"V[ç"²ç"Ñç" ëç" è"I-è"awè"+Ùè"9é"??é"5é"Hµé"=þé"Q<ê"DŽê";Óê",ë"d<ë"/¡ë"<Ñë"!ì"X0ì"
! ‰ì":”ì"=Ïì",
í"*:í"$eí"„Ší"Uî"\eî"AÂî"*ï"#/ï"9Sï"1�ï"R¿ï"Eð"9Xð"A’ð"bÔð"#7ñ"b[ñ"9¾ñ"Xøñ"ˆQò"DÚò"<ó"(\ó"(…ó" ®ó"VÏó"U&ô"A|ô"E¾ô"+õ"?0õ"/põ"9 õ"AÚõ"(ö".Eö"Ktö"Àö"!Ûö"1ýö"*/÷"+Z÷"2†÷"2¹÷"ì÷"=ø"*Jø"0uø"/¦ø"4Öø"*ù"*6ù">aù"F ù"/çù":ú"=Rú",�ú"5½ú"5óú")û"(Hû"(qû"4šû"!Ïû"#ñû""ü"8ü"Wü""gü"Šü"!ªü".Ìü"ûü":ý"?Tý"5”ý"9Êý"9þ"/>þ"9nþ"D¨þ"3íþ"<!ÿ"<^ÿ"H›ÿ"Qäÿ"L6#ƒ#%�#'¶#3Þ#@#&S#@z#"»#5Þ##))#KS#;Ÿ#KÛ#5'#;]#<™#-Ö#*#"/#3R#!†#@¨#9é#-##/Q#7�#¹#5Ó#1	#?;#.{#-ª#9Ø#6#*I#+t#& #8Ç###-8#Jf#2±#gä#PL	#�	#±	#qÇ	#^9
! #0˜
! #É
! #!à
! ##( #YI#£#Â#.â#/#A#H`#*©#+Ô#+
#+,
#+X
#„
#M¤
#Pò
#HC#=Œ#6Ê##0# K#-l#+š#0Æ#Q÷#-I#&w#Dž#Bã#D&#Bk#A®#Cð#R4#Q‡#SÙ#0-#?^#Dž#Hã#G,#It#W¾#Y#?p#1°##â#B#RI#Rœ#bï#-R#Ÿ€#F #.g#`–#B÷#2:#1m#5Ÿ#(Õ#-þ#(,#JU#A ##â#?#.F#Uu#&Ë#;ò#<.#k#;�#1½#1ï#!#N=#VŒ#Sã#F7#6~#0µ#Aæ#.(#CW#›#&¹#*à# #o+ #p› #8!#3E!#”y!#P"#9_"#^™"#:ø"#D3##x##:”##%Ï##3õ##2)$#+\$#1ˆ$#"º$#Ý$#^ó$# R%#(s%#$œ%#BÁ%#1&#16&#.h&#2—&#AÊ&#\'#)i'#-“'#2Á'#?ô'#?4(#At(#B¶(#:ù(#d4)#.™)#7È)#3*#64*#6k*#B¢*#_å*#=E+#Bƒ+#Æ+#$Û+#7,#38,#7l,#;¤,#8à,#-#+6-#+b-#*Ž-#.¹-#4è-#&.#3D.#&x.#Ÿ.##¿.#Nã.#F2/#+y/#&¥/#.Ì/#*û/#%&0#8L0#<…0#\Â0#41#T1#p1#Ž1#3¨1#Ü1#6ö1#$-2#8R2#4‹2#kÀ2#-,3#QZ3#4¬3#3á3#4#54##O4#As4#[µ4#5#A5#E`5#I¦5#að5#KR6#Xž6#^÷6#DV7#G›7#4ã7#D8#=]8#d›8#T9#sU9#BÉ9#":#0/:#7`:#˜:#4µ:#8ê:#(#;#6L;#‹ƒ;#E<#DU<#Lš<#Jç<#a2=#b”=#1÷=#0)>#0Z>#0‹>#0¼>#&í>#0?#%E?#5k?#5¡?#M×?#5%@#4[@#5�@#4Æ@#4û@#_0A#_�A#0ðA#!B#"?B#‡bB#FêB#$1C#)VC#$€C#%¥C#(ËC#-ôC#*"D#!MD#oD#7ƒD#@»D#4üD#'1E#<YE#(–E#I¿E#+	F#K5F#?�F#4ÁF#FöF#*=G#!hG#(ŠG#S³G#6H#/>H#*nH#)™H#5ÃH#vùH#$pI#J•I#?àI#? J#%`J#:†J#)ÁJ#*ëJ#5K#@LK#�K#=šK#-ØK#.L#[5L#:‘L#+ÌL#SøL#"LM#-oM#;�M#EÙM#FN#8fN#'ŸN#*ÇN#0òN###O#GO#_O#!{O#G�O#6åO#3P#*PP#I{P#ÅP#/ßP##Q#3Q#.PQ#xQ#ÙøQ#ÒR#%ëR#†S#=˜S#NÖS#:%T#6`T#=—T#4ÕT#1
! U#0<U#AmU#;¯U#/ëU#<V#DXV#U�V#óV#=
! W#(HW#3qW#7¥W#6ÝW#X#((X#DQX#–X#,¯X#tÜX#SQY#Q¥Y#R÷Y#=JZ#DˆZ#lÍZ#H:[#\ƒ[#Hà[# )\#.J\#6y\#1°\#2â\#K]#Ha]#Sª]#@þ]#7?^#‘w^#‘	_#S›_#ï_#`#*`#G`#f`#ƒ`#Ÿ`#½`#Ú`#ø`#a#3a#Ra#oa#Ža#®a#Ëa#ça#þa#b#<b#[b#zb#–b#²b#CÑb#›c#T±c#Ãd#¶Êd#^�e#[àe#Y<f#M–f#$äf#$	g# .g#7Og#a‡g#4ég#(h#$Gh#Ilh#K¶h#Ki#KNi#Bši#AÝi#;j#.[j#KŠj#MÖj#:$k##_k#aƒk#dåk#`Jl#c«l#Vm#Efm#E¬m#dòm#AWn#s™n#t
o#k‚o#gîo#SVp#Pªp#bûp#W^q#B¶q#Nùq#+Hr#)tr#[žr#.úr#,)s#/Vs#/†s#p¶s#B't#Ejt#N°t#6ÿt#86u#2ou#2¢u#2Õu#Kv#MTv#'¢v#)Êv#1ôv#1&w#1Xw#2Šw#1½w#1ïw#1!x#1Sx#*…x#'°x#/Øx#&y#[/y#U‹y#_áy#QAz#K“z#mßz#†M{#OÔ{#C$|#ph|#4Ù|#p}#&}#X¦}#'ÿ}#i'~#i‘~#iû~#(e#2Ž#2Á#2ô#M'€#Ou€#jÅ€#,0�#0]�#'Ž�#+¶�#Tâ�#j7‚#`¢‚#Cƒ#.Gƒ#6vƒ#;­ƒ#@éƒ#d*„#M�„#<Ý„#`…#‚{…#+þ…#@*†#Ek†#B±†#Dô†#b9‡#9œ‡#XÖ‡#ˆ/ˆ#&¸ˆ#Dßˆ#:$‰#D_‰#B¤‰#Kç‰#G3Š#A{Š#&½Š#PäŠ#H5‹#%~‹#7¤‹#5Ü‹#>Œ#2QŒ#=„Œ#iÂŒ#,�# >�#:_�#š�#?¯�#5ï�#1%Ž#1WŽ##‰Ž#©­Ž#"W�#+z�#0¦�#)×�#.�#I0�#Iz�#$Ä�#Té�#2>‘#;q‘#M­‘#Rû‘# N’#3o’#A£’#0å’#p“#P‡“#"Ø“#Vû“##R”#1v”##¨”#+Ì”#-ø”#=&•#)d•#!Ž•#%°•#&Ö•#%ý•#?#–#Jc–#-®–#%Ü–#8—#!;—#R]—#?°—#(ð—#"˜# <˜#']˜#…˜#&¥˜#2Ì˜#@ÿ˜#@™#-Y™#*‡™#²™#FÎ™#Mš#!cš#(…š#®š#Éš#çš#-ýš# +›#L›# _›#€›#5Ÿ›#;Õ›#*œ#1<œ#*nœ#@™œ#(Úœ# �#%$�#$J�#>o�#®�#,Ë�#$ø�#=ž#[ž#9už#E¯ž#;õž#L1Ÿ#%~Ÿ# ¤Ÿ#ÅŸ#-ÝŸ#% #1 #:M #1ˆ #2º #7í # %¡#$F¡#/k¡#'›¡#(Ã¡#_ì¡#FL¢#4“¢#VÈ¢#_£#D£#@Ä£#-¤#F3¤#!z¤#dœ¤#B¥#=D¥#4‚¥#@·¥#8ø¥#V1¦#=ˆ¦#<Æ¦#R§#WV§#S®§#?¨#1B¨#Qt¨#XÆ¨#Q©#eq©#-×©#'ª#L-ª#Hzª#UÃª#F«#C`«#@¤«#=å«#8#¬#O\¬#4¬¬#á¬#Iþ¬#AH­#HŠ­#/Ó­#®#D®#Ab®#@¤®#Xå®#*>¯#Yi¯#@Ã¯#M°#VR°#9©°#žã°#k‚±#‚î±#£q²#k³#u�³#_÷³#UW´#O­´#_ý´#C]µ#j¡µ#0¶#(=¶#!f¶#.ˆ¶#.·¶#Eæ¶#1,·#0^·#3�·#'Ã·#Bë·#q.¸#} ¸#"¹#NA¹#&�¹#'·¹#6ß¹#º#C+º#Koº#„»º#"@»#0c»#J”»#Kß»#*+¼#V¼#0p¼#.¡¼#-Ð¼#-þ¼#3,½#)`½#*Š½#2µ½#9è½#."¾#*Q¾#|¾#“¾#¤¾#@¹¾#ú¾#¿#00¿#7a¿#™¿#%¶¿#$Ü¿#$À#%&À#%LÀ#UrÀ#/ÈÀ#?øÀ#;8Á#;tÁ#7°Á#*èÁ#7Â#KÂ#VeÂ#2¼Â#1ïÂ#9!Ã#>[Ã#2šÃ#=ÍÃ#IÄ#5UÄ#4‹Ä#:ÀÄ#~ûÄ#&zÅ#+¡Å#3ÍÅ#3Æ#A5Æ#BwÆ#CºÆ#FþÆ#CEÇ#E‰Ç#6ÏÇ#7È#;>È#!zÈ#.œÈ#/ËÈ#3ûÈ#M/É#&}É#I¤É#)îÉ#&Ê#O?Ê#9�Ê#1ÉÊ#9ûÊ##5Ë#GYË#N¡Ë#BðË#43Ì#hÌ#,„Ì#2±Ì#WäÌ#@<Í#@}Í#:¾Í#AùÍ#D;Î#F€Î#>ÇÎ#=Ï#CDÏ#CˆÏ#7ÌÏ#3Ð#?8Ð#1xÐ#=ªÐ#:èÐ#3#Ñ#6WÑ#;ŽÑ#IÊÑ##Ò#G8Ò#)€Ò#:ªÒ#8åÒ#Ó#$=Ó#AbÓ#M¤Ó#?òÓ#^2Ô#>‘Ô#MÐÔ#0Õ#;OÕ#R‹Õ#6ÞÕ#'Ö#0=Ö#4nÖ#8£Ö#!ÜÖ#DþÖ#?C×#Aƒ×#YÅ×#GØ#DgØ#0¬Ø#<ÝØ#-Ù#*HÙ#%sÙ#5™Ù#$ÏÙ#ôÙ#Ú#p3Ú#)¤Ú#AÎÚ#:Û#IKÛ#\•Û#BòÛ#85Ü#,nÜ#›Ü#µÜ#ÔÜ#ðÜ#%Ý#Y-Ý#O‡Ý#Z×Ý#Z2Þ#�Þ#;£Þ#ßÞ#(õÞ#!ß#4@ß#$uß#Ašß#BÜß#)à#gIà#(±à#Úà#$õà#á#.á#Cá#8\á#0•á#Æá#$åá#
! â#'#â#<Kâ#ˆâ#A¡â#"ãâ#ã#ã#"8ã#7[ã#2“ã#0Æã#[÷ã#ASä#?•ä#jÕä#-@å#Xnå#<Çå#gæ#Glæ#6´æ#7ëæ#+#ç#Oç#nç#"‡ç#)ªç#2Ôç#.è#46è#6kè#6¢è##Ùè#,ýè#,*é#Wé#5té#Aªé#-ìé#ê#:ê#!Tê#+vê#'¢ê#@Êê#>ë#lJë#1·ë#éë#7ì#4<ì#2qì#B¤ì#,çì#%í#:í#Zí#sí#"Œí#4¯í#(äí#=
î#7Kî#+ƒî#-¯î#3Ýî#/ï#"Aï#dï#ï#�ï#®ï#8Èï#/ð#;1ð#*mð#+˜ð#,Äð#/ñð#!ñ#;ñ#.Tñ#ƒñ#›ñ# ¸ñ#Ùñ#8ðñ#?)ò#iò#&„ò#.«ò#,Úò#6ó# >ó#%_ó#…ó#5£ó#3Ùó#2
ô#$@ô#eeô#Ëô#.çô#-õ#,Dõ#,qõ# žõ#)¿õ#$éõ#ö#")ö#'Lö#tö#%‘ö#"·ö#Úö##öö#6÷#>Q÷#%�÷#U¶÷#;ø#Hø#.Zø#)‰ø#(³ø#$Üø#'ù#)ù#9Iù#ƒù#)œù#_Æù#a&ú#`ˆú#$éú##û#$2û#1Wû#H‰û#*Òû#Býû#&@ü#gü#&‚ü#+©ü#jÕü#?@ý#D€ý#>Åý#6þ#2;þ#Xnþ#XÇþ#5 ÿ#)Vÿ#4€ÿ# µÿ#4Öÿ#=$9I$Sƒ$C×$R$Hn$C·$=û$@9$Nz$_É$N)$<x$;µ$ñ$2$45$j$#€$?¤$Oä$B4$)w$¡$¢¾$¼a$¤$Ã$>Ö$4$4J$;$M»$1		$B;	$B~	$$Á	$'æ	$=
! $1L
! $I~
! $5È
! $'þ
! $i&$:�$ Ë$ì$$'$%?$7e$&�$-Ä$.ò$!
$A
$;`
$œ
$:¹
$"ô
$%$%=$)c$�$!¬$=Î$$*$$-O$Y}$J×$A"$Jd$A¯$Qñ$HC$RŒ$
ß$Cí$L1$~$8ž$%×$&ý$.$$9S$.�$'¼$)ä$#$&2$\Y$&¶$%Ý$&$H*$As$<µ$ò$0$+@$>l$O«$/û$+$(K$1t$'¦$Î$ç$/$5$L$+d$�$§$1Ã$$õ$"$!=$v_$JÖ$&!$ H$^i$CÈ$F$6S$gŠ$_ò$UR$Œ¨$.5$Td$;¹$Tõ$[J$@¦$"ç$
! $($"F$$i$$Ž$$³$(Ø$Q $<S $<� $AÍ $p!$€!$2š!$rÍ!$b@"$k£"$j#$+z#$9¦#$Aà#$="$$D`$$H¥$$Pî$$?%$.R%$�%$”%$v³%$3*&$=^&$aœ&$Eþ&$ND'$E“'$:Ù'$G($~\($~Û($0Z)$C‹)$&Ï)$*ö)$3!*$AU*$1—*$VÉ*$B +$6c+$5š+$<Ð+$
,$0+,$o\,$:Ì,$B-$5J-$„€-$^.$Id.$%®.$AÔ.$@/$.W/$,†/$#³/$×/$÷/$40$'K0$0s0$6¤0$4Û0$P1$8a1$Sš1$:î1$)2$6A2$qx2$8ê2$I#3$8m3$I¦3$ð3$<4$(@4$Gi4$;±4$}í4$…k5$,ñ5$K6$j6$‡†6$�7$…Ÿ7$r%8$†˜8$�9${°9$w,:$w¤:$#;$p@;$±;$:Ñ;$ <$--<$:[<$1–<$EÈ<$(=$c7=$Q›=$Jí=$<8>$/u>$A¥>$/ç>$?$-3?$,a?$,Ž?$>»?$,ú?$>'@$4f@$F›@$4â@$FA$$^A$6ƒA$9ºA$/ôA$$B$0CB$/tB$¤B$^½B$0C$8MC$†C$“C$8²C$TëC$%@D$*fD$2‘D$)ÄD$2îD$!E$<*E$*gE$'’E$7ºE$EòE$S8F$#ŒF$`°F$GG$KYG$<¥G$âG$;H$<H$&¼H$*ãH$`I$VoI$`ÆI$b'J$WŠJ$•âJ$FxK$:¿K$QúK$[LL$l¨L$mM$rƒM$RöM$rIN$‡¼N$_DO$8¤O$0ÝO$)P$&8P$H_P$A¨P$mêP$.XQ$*‡Q$K²Q$þQ$5R$,PR$0}R$!®R$MÐR$OS$RnS$?ÁS$-T$r/T$$¢T$+ÇT$`óT$[TU$K°U$SüU$UPV$E¦V$*ìV$+W$?CW$‚ƒW$@X$MGX$•X$6¯X$$æX$Y$F+Y$ArY$n´Y$,#Z$/PZ$4€Z$,µZ$XâZ$);[$,e[$A’[$7Ô[$3\$9@\$Az\$¼\$Ø\$6ô\$:+]$8f]$?Ÿ]$*ß]$(
! ^$H3^$S|^$=Ð^$8_$GG_$<�_$<Ì_$G	`$PQ`$:¢`$CÝ`$H!a$@ja$«a$Àa$'×a$.ÿa$+.b$dZb$,¿b$=ìb$N*c$#yc$!�c$A¿c$3d$%5d$0[d$3Œd$AÀd$*e$@-e$>ne$/­e$Ýe$$óe$8f$?Qf$;‘f$0Íf$:þf$,9g$Sfg$(ºg$,ãg$h$%h$;h$BHh$‹h$	Ÿh$@©h$êh$2i$M3i$)�i$[«i$3j$5;j$"qj$N”j$&ãj$(
! k$R3k$†k$'¡k$*Ék$4ôk$)l$‹-l$¹l$pÓl$ÈDm$j
n$&xn$%Ÿn$#Ån$eén$fOo$p¶o$l'p$Ž”p$#q$v<q$>³q$Tòq$,Gr$Wtr$Ìr$êr$)s$,1s$9^s$;˜s$MÔs$I"t$%lt$+’t$&¾t$?åt$'%u$%Mu$9su$<­u$3êu$6v$:Uv$>�v$FÏv$;w$7Rw$>Šw$?Éw$8	x$7Bx$=zx$C¸x$%üx$A"y$7dy$Oœy$9ìy$D&z$:kz$4¦z$;Ûz${$6{$"V{$*y{$'¤{$+Ì{$+ø{$5$|$)Z|$(„|$"­|$-Ð|$)þ|$p(}$o™}$o	~$ry~$hì~$ŸU$9õ$@/€$cp€$fÔ€$2;�$n�$}�$*š�$+Å�$.ñ�$$ ‚$E‚$X‚$v‚$“‚$&¬‚$Ó‚$î‚$6	ƒ$B@ƒ$ƒƒ$Œƒ$f/J ž:g(F
R7~!–’7)¬>¸ëg/Ôï(û*¨;†@ }'ò*Ôi,c0(*qA\;–(ÖBd2¼<Ÿ9C/}R#evŸ=Z?8&G/ŒR
! {Í
†?X­^ç»0~(¬š,ia	G-÷C=&~è;d*975u)lr6ô3Æ
Tá#
! 'd00T1<ü/KÌð.€é?4Ÿ+-Ø8¯™©>t;”,ˆ6ªû&^7n<„à*©={
! Q<¡o2S.‰Q
M4D.=“Á0)¸E?ôF79I);Ñ%<â!B5‰€/í
! Ï!m	}(€
! <-»#.[b0	5p3 zÀŽ
<0‹@læ>òA75Y «7Š’_%~–7Ð"˜-ÔË�	15±*Ý(9*-8ø8Uê	çI;P3+${Á@-ìz$Ë:S5Å0Ý7uý'Sß+$Î3¿8_m!3�å­-bBðâ >W ¢%Ê536RÅíÍ0@³£=‘? ¼�- K<#0Ü%Ø<´f%“í))¶ Z@F±…".ÎÄ$õ|'k0ù>ý8
! þn5p7®=è6µ=µ%™>Ó–R#~%ã9¼}!™´½;—{+—)ð´u2(pÂ(r˜2	M=Ç‹5í(aAB>'ó2Ïs"s<cI/¹ ƒ1àm9º@@>�%êZ3]&¢9âp/²°.Å9(Ñ6n"óÏ5ª
! /=@ S$459>8¼>Å&�6æ°3ù7¶;‰5ª@Â0»!BH0f|@¡@Ú403Š:3‘=•-eÇÐ �Ö;ñ¶d5_6a¸�<Ø?O;í o#µø×c*9Î¶>û	—·>l5²#-�:às&+2Ý*û%8
! -lø'�"v,(^,/5×F²Aÿ;!.úÙô.·N3:|-Ž<@¬B3ô:¥ðF3)=�ù"·ßà,Å¼QŠT7ä,w/ë­!=‘ Ü œ@	Àñ±@/šI1½#S2È l>=
! À?\9Õn!¸9y;>:TÁ$&•B~2Á$�(´x;(_+j2Y
š;ñü!†Äý:6>
’Ûý%2
! 41Më4ºAÍ…8¾'¶Ç31íÇ&"þÓ+5™*Ÿ¾	,'[7NP0eÕš¶ê¾*5:Ká-(Á>8ò/ÝGBZt¸-$
*	«ñ3,°B=í2Ú61µ¬¦LBi'&),"æ9b­9¿›AQ1�B¼-1+p'$é
¥ š5ì	“)ó&à
r;×\)Î =Ý9m?Ãk¬|m,}Ú'—</¨/ t-ƒ
! ”&g7Á¯N@1±;œ	„~^:Þ7I-°A^ãÿ4ƒ8ú9Ì1†˜M(�7¹.(o-§*88!«;R#§�hAµ	¼!¢.È"|;Q! /T?È—,2sö1>=ã»(€
ã]%ö-‡(�:3ß6Êz
! F=Í!5Æ-Í5¥P ‹)*6nz"è394!…¨‰#5¾@¶<ù!�:ï=F?†7z'?¯
`'V3Ê@&U<S0ò#j:‰Ä~T+~%‘&itK Ñ&)éøú÷
c1íM ­	‚&})¹,Õ!W@Ñ¡UqJê3Ã8÷-q^)©„#f&š2~Aé¤©&À%¤î.N©k/2ÖØ5ñ`Ô$Ý>w%?8K�'ú=ÐÚ~
J8 (m2?�7Œ'ð”$€5Š6§›¯@Ñ#Ò5…
! ËAµ+D**ÖEL’(† úo7¦1ƒ.�	ø=f'%:¾6‡$?Éœø!ªÇƒZób=24 6�EÃ4Ïx.Z.žž%
J
! ê&Þ&`s*5Œ	Ž:Ëë:O@*›"œ\AŸ<ôÀ¸2ˆ3£X=VÊèò¦·,q=þá_*d˜.>!á•$wIG?Y)È¾L?ò-
?™ /•9‹6¨+‰0o¨:¨},·Š?Ñ+Ôà3çž6UÖ#¨³)&;
7�>Ð4àQ,d.PZ(Ú†<;9?[)*�æ8s?AÀ§ÇAÛ
! †(0¼2ô
! "2Be>‘	#ƒ{hF.L0Ø6Q>�¾§
n‰}$—@î®T'F ¥"!Ç6‚7�?zAà/D$2.å	¢:c ô!ý0ªú<.0lŒu9Î‡ADBÉ»RJ78Ç=‹'² Þþx³?0{>º&4AY,î#ê'b#vþúk2þ?Â<U¯51â6(- D-ÆçA±:<ô÷,Ê
pN..²%{:)	E%
! k/j5;A8cA2Û.d)f@óß5ƒ!2�)”4$k(ä4å4ˆ0â%â&$#32¢Ÿ0.ö/…#2Pð1ê¾Å/W�0à=‹>¯6+*7˜úÂ
! w"â
! Ó)¤4e¸6l#z€<Ú3JS=>Ë«>d%,"0†Ù3¾Aç!í5e!�ƒ8}.¢V0A%“i6Ÿ[Ö
î,:sµ>Ê3:è<?¢#½´ö:ì©0¬Î
! ß,|ˆBÈ8�](e
!  `+j÷7¥B.�,÷?7­BÇ,O‚?ôG†*g>7 }1“–È)z(A
¨kŒ)…;ÿ@*Ÿ&BC�¸ÀÐA;-Y
! Ö'4[@Úhi+õÏ�u+ù	#ï-ýƒ="›¶5)d´’"6î"Ê.^	I@9%‡1T±-¦8÷ï?ÓíôÀ�;º6m<Ó¸š(,w
8Ž;+?.„=ëe%1B©±%/Ù!¦A+"ñ/@ˆ;•
! ®	h/Ã4/²<_��-ó×-eÃ*`ŠK1œBeÎ;x4>� b7Á/é%Ä"†=!\cåŸæ+BÙ,%:2®,9>!1�,47Hqn8Š%Ý	e#ÿ8¬&j>Bî7�@“”+Ü
! ñQW?É6ô<r˜;9A5$:€2Ý'	Æ(6Ð=-=±?å{9¡o*Ó>y95$W.;±)wüe<PAAó'½:’"=G68*L25F'!
! J?²0-ã$ƒ4ªB’/è6©@Ž	Aï/¹í.}›b!€:'kA=<Ÿó<#É&*Ki
! ?<G×4º4XZ A(Q	ì@·^ZF*G!¨4$
! Ý‰Ö {#×	h&8/=œP+ß9±ô)7BK>h:@õAD0kY[1 '©7ó1
! %j@.:õ{„&äñ6üÉ:ËÝ·39ù'|0(6«0/ pç+/4îö
! IOÌK-Õ„•È>„@T"k7ãõž>r»ñA¶rÏ&v=«í#è7'/°?X.¼§>¹
*äX@q.Ü0y"B ‰Oºjù/Ý m6<
! -?u|°"Š1•:ÇAB9Ú/ç""·K+] †9&p)i"�G8.Œ5+èÎ$!=ªG&WB+€#§o@9_"g-œ7q!œ^6~T)HÐ»</Ÿ úô	Ÿ-ßE
¯/$3>¶B]?ÖL/‚\N9v:ð-“��m1!¿Þy3¸,¹5É?ÿ36À�Ù?G0J)"\èÎ6f+Ž. ÷'['ôŸ
Ï"]Z0÷):>-BÆê+`)4\ú âÇq<¿":Ý&?!ýG1L=À>&ŸO1S�!`7vî
½w .?/U7Â5!AËë@F-•‡†µ5»£0Ê¢"ä“
W"$dBp„6¯	�¨Æ$h@FÃ1“I5…9˜‚/?L{ˆ"aš+Ì××8i1Â
¸?Ó�#þi‹!Ÿ']$¤
‹84-•"Ø#/8511“ Ú8È0¢*›*D�4ýAÏ,¬æå0@t6€à²>N?p6x,.BäY”5ž0)‚'n=ê1ÆS334‰@K8ƒ9ï´?«¾:BB&n;o%V7“8_	„(A	.kÄ!¨áT¿\@#>²(Šç
! q6Àzˆ8ô1‹Ñ‚6Â‡Ð#À
-²x‘c-;LY‘j4ßk 8R.
,f~:ß1V:Ää)ˆ9&&£5¼p-ÓA– �> /&5Ù"ºE.4;@<|b5‘%M{6±2åM+—'ì7ˆ+þA ð í7¦”6*q1dD+èäÒ?B6å!±('
"D5%]3–#\1í*w)h	A=ú,ç614Vn�9+"Y*Õ"«8³1[5ìO-3+(	>Œ*ð;wž÷2«’š	¿2
! )Î	ƒ(·Õ;i¼Õì&®éè*KÊg­Ÿ)%€R=¦‡Ô;åðÖ=¾þ>v@Œg&ð“7ª1KB‰;”6b@"›1Wz/t>ÀS.2à:T	ì�6uüj=ëåv;Ä
Ò.­"s+£X>†¡+¨%
! %3q
! 7a†2F¿A7õ´@]�(…S"¹"
./˜
g!3Ñvò5-
¤*$P:�$ž!ß“‹Á5'¼BØøˆô>ë—"v$¬Ø6+`ìc>s�)�ïwòÛ°M5¦:Û,}#8Í …Aˆ~-ø7lh$‘ñBò€;ð=J/Ã¬@6'²{?”=s¦5
0õ<s0„5iA,Þù$±BÀ(
™=I6—
! T£(“¦nBä9S63(2"1û'¸(¢-.È5cË#ÿ¶’)&Z%ô+ÖÐ>‹
! à>´-Ä>a8_1ôB"F)/N2ð,ò:;Ñ:÷5å
! å@ö#1/â/í;¸,îñTïa GâM6Y“QÂ1I&]-úp
à3Ñ=à'w>ý|Az-óSû,á¯AÙ'62ÌâÉþ@
1Ò<Ó=Œò$h
;ŸAÂ#ˆ%a|
! ”l°C0`%ØK Ó<q¹:¼Î=ç§
! 6¥;#( %"f"‰-1Ý$.¯9ê6i˜~*o
! �&;5l+">%%/²ÚÜ9Í3'94©
61Ñ^1)+!j#oÌ’š5Þ9"šÉ-Ñ6-v¬1¯º¹-†3²‰¬B$Ao=˜	Ÿ2)@˜'–;O!¶�5D)cA&OoqŸ3h9îè5h3
[?Æ7¸Ûþ%ß5Ô›C�+u=3ÃG+é,„)U?''-Fº'’<A%S)�«C2ï­A/…›:¥Vì3ˆ
! lB+,á5)oD7òôt45=ð“,Ä.5t$–RG3j"x&é6o)b%OªÅ«3–8Ç*^€=Ë ®%).7
! ’4©8æ®3 AÒ	¿B•%&*X88½	E:	?¬°y<Ðá�	`¾M—ú4ÉN81¨!#9$$Ý6Ñ>} $B8Ø†5Y8 hJoB”#¡%:*e0Nñ?k.'%D>´ÊI»ß"¡AÜAÔ
! S4Ì	˜ÚA²
! 2z26,\Ûþ/†-U&ù9Ó¸)Â sB»5A©”ß~$¸ßå+i?á“3GÃ×@tž0gÏ'‘6äLª=,>Nv"ç#W,A5Q»	®Á!E/Êÿ >4)ý"ò2ÈéÜ¥7A3*1Œ=!$I,™]6Œ.—=.
! @ó Ÿ	Ï:3ôÀ5
'È—Ü…+#¥L(I¢
! ©?Øª2Ù!p$>BÃ
€:Ê&µ9W<á,™¯'73E1—K=&<Ø3Tp=/&ÀU'S<<%·&£ÜÂ2,/v3bÃ9›=í1( i4»>
+ ">–Û$
! 67IBõ7c;,E®êC140„/v#¦4È5=R:Ã)s).-è80¼@KòŽ=Ñ¼,¢$ç#?)-'I8"h_ñ—!-Aé˜Bø0~:&CA’ë3Yù?A6X Îé }@\*øÉ/';%ˆaŠd#¨¹MCÕ5+7žá(}-W;²7=|
æƒ'7ÚÇ2ˆÐ:_A…„9ŠÖ’äT*`4<Ç
u:%âY>5�¤?$õ)™49Ö*Rú?` 5;Öör	<?Bï.=?û
´/b){0M&eAf:{5‹	ˆ'@ï6!B:Ø4s8©ˆ*î�
ü44ŠE"ƒ-#g¼.O6äéÖ3ï3Ñ8��3´]P'2½:Mõ
! ’¤n]*‹46´(^;! Ò9/7M2 G7�Ç;'X
è>P(ñ.i#‚443¸õ!+5£?Ÿ,¼$*Š+™ý)9‡9÷Û(~›�;«$[!»+>©j9â:V$� &>ï….‚080>U>s!šB-JÇ	w3l<|
! +×0¬?°1Pq2£'ô4g0"l®'ÿ6b<”R"�›§9O>V%âV­”'~°Sì.Œ;!>|˜@É“? ­07šL)×"7O{8’ 4.ù1C ÓQ)Ï2<6>:Ü#ÛËâŽ7¬!«f1Îå*+Å— Ü[= )&z,8<)‹0·*F7Ä%ï<)ïJ	‡ï;à‹Éœ87²+Ö&²–B¾1S;<c.¤5!5éü-è?H7ð0×ˆ-o!,A7°@
5ðv/)8#C&›@ä;55å´;v˜â0¡9�"ZnA1+î<#ë¯0v
’&Éìq+Dù%¥-O4#[#z>á6á82DsÅ6Êh)
! Ï<£-¶.y8»ýæ›#»B] G=Ë4Œ%·0ä<È+ r@$ö
“#
! Á�$1q´=6,²=046´%áŽÂQb)1¥?ÁAt –ŒÝ2n)÷/'ž3ä
�-„$#.²þ,@
/ªBÇ9/-Z$y=*58Á0öü “- 67:°`,L4³&¼6Z?6Bß<½<p!÷
! W-Fz6
=“5`1ƒ3¬*�9ºh=ÝÆ1A
! +˜	Ñ>%R§Ñ^+Ë!¥k'»/T@`x­/@"Z
! µ'a00‘í3&ã	öÄ9Ü«b"ñ"*¤3Ú
é*¶@×+´F<�2%ø,ã
¦B+~†ó
! ƒlA4"l'õ@ç Þ#Õ %*ì*cŒŸ#Ý= n!d4A€%û(þäó_:7$#î&Ï$X(ðx#�+ˆ>$%è.{(Ô
 ÿ4<
! ˜0&!/?$7�>X*Š,Š ‚G#	,ª6J3ù–:2@R+¥8h'Ò34”
! ÇÈ>mß3L,Æ34< B!Ò% wû<d’>is…B!)R:@q**8
! _?P?õ&B¦04BÚŸDB	*&ÎXÃ6ò<Šõ#æê®>>Èú�-6©"jß?Ä;6¢V9n&ó("E×O?¸*ÿ0AÝ
Þ*	-Ù Í?Z-Z.éâ(R'f
Fî±#2
! (›%+Æ*ù6#5Å
! 6B‘
! À"92 w,ŸE-ÃA'Â
šo>Ï	Î<Ž’æ,å'o&?.ó	Ì4_¦9Ú=’"•6ø+6MsÔÈ7F2¤†UCJ#§(.×p5�5™3‚3®°8Ž&‚1#wÕ,êé>ü$5Ë&#
<g5›9¤"?&_/�¹d1.�~<W_<
! 7í)8:+…5
! *Š”ËÊ$…®)ˆ	i;�)¡L#Z'z{‰=îà^ï.$­'ó9mvÕ	A¹j%‚,õ è#`* Z(K6û/—jÂ)zL@2z¯(|"Ç)1=Ž8°Ó7
3V<Ë7–	,-"ïAæA>x3Ø;Q/Å'þ7Y3Ô.ªFÜ!å{.e‹î?»%^
! ½JBÔ\(d(Ò=V1ú%=äArã	7Koõ8
Û;+=.TAœ"XÝ<„:ç2™7‚¸
[4ö8v1Þ8Þ;œ1"‚	Õ9h	ø<Ý?ø	ß!x8·“/	r@
>Ì"¤ÒÀ½8ý@#>7.Ô‚
! R/ÄÍ%Q]@X3S[‘$q6æõ9w65Ïž&®Ñ@ì<üˆ?_=±<

I(¢/„È‹ž~ÄÃ	d÷;LÍ#ö)*ô6 ¿?Ú.õ6yù# 9*ð"ô:Þ?W#}?š#ÍJÌ:ÿ$J+?¹$C)à+m…7Ó%TZ6à0¹;b.>ú@Ö©<Ü >+G‹7á1à/$ »¬=\.ÊR¨5æ5}
! >�˜8‡ ã¥&?òú&$%=ï<"ñ-•4V[zÏˆã#
 
! í< $Æòò1pî6«B840(9y/!%U)!V? !w+ôAæ.:
! íœ?u<Ú?3f>Óá
! ‰E>©è%
! ,‹%¿<c<G@÷>Î.ÅYA=%Ð
! á+ß
! ‰3ù%4ï”##ØMÀ,2î)Š
õ2Eä$Î"&,S?û@4Øˆ422€‹©
! \	M<92±>l�$‡_›€÷&P"-Ì*ñã2P1\`@‘4W$°‚©ç4ù@Ë/ä0Š2¨,Ù
!  >Ø.�75øAk/9¯AD2ïsü?pwx…=ýzXÚ|�\&Û)‘ª
! ª8:0Ç8ï)Ï‘ê*á¡»4p@oõ*Âý¯%o<·�*µ
+A^<}D3ù ‡<\¹ï'Í
! U+»$�8¸%/%�ÅA+¬ö$å-­oä@À'/$2Õ'
! #^B�?²@r)X)Ú&2“¨*†1OK)N<?t;;*Ò6U#„2AGdº3ó0,Â8pÒ2é†6ü0�&«<Ù-Ô1³"Ö:^2ý-`<9Ñ(Ââm-;	)>€R>‰R+L(«n-> ýV4… µÕ.s1±,À%Î¥Uj	ØÔ)96¢=9"À35Ý-ô"6Õ)-=b
! Î ç,ƒ#m?'ã>xï2 A	»º-(c+š?Ú�¦M	é­5Ó$-VB>?é.Ð3?•.Ö0"A/¹Ë%,mz&%�
Ô@23;ˆ°¿=¥4%Q%Å=[A½ÞNÁ<þ#e/ÓÙ%tAÎ(
ý>ï$ùV'›;Ö4�0×/çüŸ@?‰00%SÄ—
€3Bø@•—µ>uPè9XAr æ ö;	WŒ<´.
"È3"!çce6›.½?œ2·#ó7â¤$ü<îÞ"=0§;.9ß÷ss+Ë
m5c:
[	sƒ,=�3 .ò=–Aß*_32…?h.³)*Bv2“
! }X686ô@4<�2	®i´2#</£q0ô7 $H!n‹!ç9Ç5›.G’5ã!%28ì%‡žõ&B ƒÓ-ƒU Á4#@|U…*¾ô4q4yB8
,.¶9+±,ð‚Ðë<�R?êú3C´û0Û]˜+�¤!v*öK(V¤ –„¬AS)/C:çÚ$AÆ)(% #~ •ü¤;Á¶…0ž/l&O—C?:8XmÙ>HŽ#ÿ^±	¾%Yâ1*,`Ò(°š"5¶ ª02-¸#±—Ž
! [/­þT4Ò,‡S;°M: >�ÃA@ß$()Ä¤.˜3àË9%â7•¯$¢?ùA›”÷ `.dþÒ±\,±$D:' G&-éî*²^j<4É=g"…-H,¼º+ž	
)j(Ø¢•*Ú) 
! 
:”e.C9ô2†41…="ö72„r#å1aBZ°9lÖë I7€ ma§	(«0ð*Ý8s!*.eAi,ø _Bèê9r
ø5s2¿k Ñ
Bk1;<!æ<Ø&‘)�.‰¡1�Që.r7·	%U
Ì?Þ
q·u$ª+Ë	û8±8ÍM%*Í4(Ÿ1b*m<…%R-gñ?©¼?ý=#üB 1ú&ª4Û>"™@Zß s9)n	9‰+
! "Ì=‹9i/)::DwÁ%o+$.+@P;ð+©->(”/Bù5¯†$À;°�Ü?b-Ù’Üb;–%54é+Ÿÿ'u2ºN7œA·6`/=ù½6ÈAÍ1r4•7=(Ì3#H4lk¿Û6®»@"wA˜)I^ä
! Å<—:+5—Gâ)ŒF
!  Ì@O<™
! •'‚B¨1Ž$S	L";AY'Ÿ>?Ð,”BŠ!…nÛ7~8�4/	_-× n+Wž2†â6‹vl*¬7 –‘#ý
! Ø
! p<'ò$}==ûÇr¸°)X	4@@¶	L!ë#ñÅ1‘:ÀA¥Ê 1N
! íŠBY¦'™Ìg2#
! .@YÊ,Éä6 <@†,‘lÚ@>â2y'*>º´1É@5	'?%jå=CX¡û ‡Bb7&7ï"3[,G,TV	$k?ü)¸˜J
•¯m@2¹8K4#€>»)¶Aç7g@¢'%*u+O¡;’.|_—*Æ`
Ç<±7º?]?ò"JÙ²Û	=×%"#Ž8ËX/D4
  
! ´&FC>£)5W2Ù”eÒO[ã²)@–@žÒÎ;.$’¨ °´?)2++;˜ÏÐ%V>?x¼%À:a5<E	/Q(Û#/œ,uH+.&”>¼1V.€@é=Ü9-Aöv23[(Q|74*+Ž37“<3yâD1½7è (,G	@GF5œ’Ñ÷Jr%Óq#˜"ïAAl;½*ñ>ÿæ46{*Ì<dA_9&	·5+3+)ð%ß
çç	rÖ×Ô"Sµ¦t±'V6á }ô(°2º	Æ<~&|6‡.Á4ë&1«S8� Žé-’Ë<Ùì
Þ/ï,1þ:7’3=Ñ)cò'Š.±€Anœ;g“6Ó6cÔ4+!ø€&èæ
! §==Ô'Ù2-)]#U@�¸1JÕ2¹¼)·'ëj$4'ª	Qvã)•w1c2f(¤2Ð®",ZÂR0]¾)_ œk
! h`6'‰}<ž?
! #³$ç“^4ƒ'®2.�™20u%ÿ
! U
=@ ™$“<¦k “\22?%E,y
! ò9 5¡ôÄ:\'�R ?"¼=C7-BAä—Œ¡
ŽH
! 3x'ò;û¶£!u:Ña&×î(1��è$‡;#ã6’,Ë(‘'�„cU-Hñç‡�wh@a
! C";œ.oÇ:9ò½;¬"^->Aî,±1g?L	M9Z2"759`	œÈ1Bf7/¼8¯Š(1w@ýÙ(Öî$ã.ý‰�=õ*µÀ6/Bœ7µAXS:æ73@~)P€,ì,×€8ÝA$z3*©C¿§3	ÛMD&3˜ó;P¥0Ò#0'Ù5/œ=(!	‹=ä ÚA@d$h,³A$y¾;aï–M;.Ï'~;Ð³×;U,Q3n1¼*-¡"›D È
! H¤8
N#Û10=1_,QB)P8…ÿ==·(Ù;¥�67@(8º1%å| ÿ-$³
! –1&Òè†"þíV?
! k÷`=À
! (:®@3î!
,
S,×,@3Õu�s(1¢p1'²ö!dŒy7éæ‘
Ç4Q#}Ï�3¥>Ò'À.¶6ñs-m®£(		&7	ä.w8×,X!?åøEh“Aÿ#&v8òv6$´)œ!«4€¼ÿ2š8r6æ5e5Ú5_'-&ð3¸È¸&}ª27•	ÎÃ?¿vI'2à�?6C!³9«Ü'@'¦6i‡5À3{AÕ«#Ç@½°|3³¹5B¢j€—#TÂüì?óÐ'Öj?õÕá¿:Ý!ŽÕ%„0Šœ9>
!;ä–<66g)0*fì-h>“:)"¢ A q#û.ø&7e=!N*í8\-€ š3ü+	-TD=ÿ5ÁÜEt<�"?**™'¼Š	2�.úVn]AÉ
! H�X'Èš1…#z
_¶&Ð*¾Úè
O€=BðF;‰ö<?JÌ‹ÊA÷”;ý,€Ià
! ‰B½ ø"´!ü=ø;4&ß:—.+9ì+D/0Ô<võZ"î’%AÚ¡	.=K?ˆÈ.–+`þ¶2Š3Ø9Bß;(;Ó$L3Î>‹êiL9¯�Ax
ƒ60<å?Ré2Ë-ð!n2±½(á*Þ%ú5f¼ ÖÑ{;«šò0õn:¼†/†[ U†jGSg$¹7ê2)›+bà1Á2Šx+(© Ê*R5(Ë.ë;ù4`"—%á.c:p4É=N98É2î5 ²"1Y6‡;æ#9ÝÈ6Bµ¥<¯ú:Ð0Û2u
! í&Ñ,c,¸N%é)ú.i[>³B?Å"u,³!c&,+öé"Ò\
! š!­?¯º¾a)JAª7 x<A
! Á‰ëˆS+ù=3ò?�%(3òÎ530@Ö>i.c8‘åAf WzÇ$´!T!ˆ@šo0`ö@$4-+&:9�&�
! 'S~þ'Ó
&ò
^$%­%;@Ž2û>9N*Ð¿6Œ(;&Au5¥9 +ý+˜%p3›4\4œ¤/<L~ÛÃ3Ø"È*ÿ:ÔLŸ/+!¬'‰6Hÿî’!c?#-"ÿŽA=)ÙÂ!-`-’2RB/­)A½A¡#,(Dz4ß-ÍM#Žs$A¬4–6ÂÕ1"
! 0œ3g%“$»&W0Š0…
£>­0ü
! ·)fB°š>5>WÏ8
›ì:%$ç0'8;:Ì0l1tY1ù+ù.
! ö(Ð.“ª;{7„3…1«
! 1ûA‹©1w<‡	N ¹0rx1 p
! Y5í¬:7b"‘»:~'…(
Š”¢(æ/
! )@Û9¬#à$À#¬Q8å:ñ9³49Ä(pÂ$H2†4á4å) Í�#à20(#2#T/N
šÚ-üÍ.õ$_&$!Í>Üò¿ú>Ã<ž™!y0¸ÿ(4Ž"öp0£'ÇÊ»À0£2y,n'ƒâ"<±+™—AT0w€"8ø?fá"\5ºŽ/õ·y$û+Ò-1*5
´3c�h;ÖŸ5-;QÓ&�Fï5"ž,l¥ªÏ>ù:¹Û0%2(D&-,É4~%‚…¿14x2õ;c6÷+™,ð/–°ÀW6`o@\y(&%(ú-Þ ¹¸0�1Ø)>As,à!qA-}Ú	¤7ø6òÒN,¨'óë
ãt,"5ygŸMÜ?+'·ë3TB¬2a9€B‡
Ö*1‚)ºùAg#u;D·@Ñ‡0}%Û4j'1	 Š7LA?B•>
! Û<6®
! Ë2
£+·-N®k?]6†µ²3.<m>8‡!_4?1Í;,&j)²�
1':¶g:#0&Ø7>à#,!Å	v›6.¦Z!l4º<+=H3°<:%ôDy($"Ì%õù�4×=þ5Û&£4�"“*' .u#$2/t›'vj³,™
=0¿,!*ó%:çþ*83ê;´>= 2ô=Š}Ø=e?�%ï-@¯8T,l=À9º;C§›Ž-Ì/;=E*ÓÊ%EÔ3³e;Á8�áõ.ˆI"#=ã;ú+v	( d>é§1Í¦?3 m,9hl->3°
†?¨&{2Ê,-†&7 g9¶8N>Î%Q9±"ÅL£•@Lµ7"3†	1%E7å/.�&@z?T=5U*¢.w&®;­3éÌˆ †?À/3x÷8ã@NÁK#j0cî1šè,î/
! @€1˜f@{d#i	j ¢©ö¡Ò/@±º$ƒ&²ó­t7¨¨3<'3J@?74Âü¸Ò~:Kx)¾ÅüC(S„µ"É
! fp*)�;
! 
¥/Ý¥%K	äjëOf2‹]D5Þ(÷"Š²1À7\6N:$íE$*/C,©49J1DÃ# @°B'
! sGc(¦?k
1;¦ÞzjÄ1/1=+q $1¬:•, l:£9ô8mî5I9´ò
! ¸;iB @K}”Š-Ì'ÈJ(R!ß4`(À@ªŽ@N0”Ò7sr8
! Òr{Bœ6Ø(R,kÃ;
ú1�9a<ý7'Õ˜=ÿ{=Ñ*N'k+d! ·ú8Ðž*™]<T;d3QªA^07CQ?Š*½-K¯BÙ9Å?Aì/¥'**ã6‹+ì#³'¼1Ad,�+c
å¦·ªuÕ	$:(¨.^­+~+º
~‰™8j7*1(­Z•À	å#>/ú7ˆ#éxË;v7&Êj,ˆ³28%Š%‡f4+®-á>¦Î@±»'‰
ãó){ñj¥5u(31Æ=#)$o8Â'Ý8+.)�!4È-0}õ-ä2l);¸X‘;þ8É%ß <MÙ>Ik3,<Å¼+ätu33k#x!ß..]
§/ó%O,q:-PµSg,�)p$f<]8œ8(ñ2Ùy#@7¥:.~D%
%<$P!Þ›?HO:pA
Ea	‹AÉ9^åsû4ë.¬		Ù4$U=àà&Ü 	7Ë0† ˆ/¨Bx-¾=çÑ-ë>
	(Æ!ÚÏ+½,&
H?Â"p|o6Ú,|1;ï)ö=§:8E8Œ
Õ>hý¿*b3…™�
ˆ=lþ7yÂ9>-ð7u ;
! í$b	ÈÄ0âh%#9%BÜ)ºí…6ÄžD—$Ð¥))5‡Ü/j6´$¿8
! ô,7%t¿ê 6ú«-µ!à6@,B†
! ÄÏ;Ÿ8ø£;÷)z	ã!ú*¾$‡&"Œ2ë8œ+b(ÙÖ6t8Y&M
Ëœ
¢;û'.r+ö0Ž¡81–?`!¸B»*ÖÒ Ã"!-æu$&.u1m@v'´!Ñàé„‚¨¬$:!Ã>f;¡Õ-3/ò8Ý:ûÕA*G2v'3Ó2=(¿	žó@W
! E&6
¢	;ë0š$Œ¯.Ã0o$3i(”2^É_
! Z L+„,®Ò}‡3î 5¢3º&‚"t*\"h
! ª.Ôü@N6�)£#T<9ï4ì#"<P=|¼	0B?=· ],
-¼0�20.Ù1D(%
! YÇ>-IÒáA!Œ=¾
! r59\<õ:¶#C5Ð7Î3	­1‚=1.Ä=q;…;&úR<ý<¡(=5ˆ0¢+�¦7³+4X;ó3º9ˆ8@ƒ5¯U°?
TJ4Jl	#i=Z*.50N¬œ'±3×û�+3¹Ah!Á´é'Ñ.Þ£
! Ü÷ñ°5é4º.Ç•›•>Ñ0¤+—5–è2>™"F1¤9N$…=ï%°ºÒ*ãÑ€	1	8Ê±÷ú2¾Ô…">J-Yƒ/k5™#Ì;$'AN13.C­,(=w’#3B®1(¨0:.»ª 3ÞX1³)Ó»*!Ü*3ù3y5›H+#B*
! $-3#
! ÷3T”_ÖÖY+156×íb�	ù°:�&]>&;Ù.n
E6!»ú:á)¯
¿#ô/d7O3“Yÿ,~.Ä6	%e"RA@I=>v-è@x:m¶Ë 0C
! ¸:s¦–3Èk1%½Í+îAÓ0¡Ó4Æ'Õ?Ëà9µR(ê%a#j3-Í/æ1,éu-™­2k=ã¡,…<+ê)J=3,rF4ó4W0ÖQ6Ð½•(0¿'ÕÈ(¼9°š4%l+:Î/.('±0>r
! 	ÿ?6&-Ý4m"G.9=È
! MãAŽKI2*‰4ôA‘7­$:?/®)<¡$“Ò0{&½úE/¡)»Ò%�@;�ví!G:|.
! ƒ:k4«%/ìx6(Bó´	2…,i8<}	¤
�²%_',ú$BþBšK;_8‡-%é
! Æç1D<>§8Ý%B%Î
¢nŽ419�6<&H.^c=m
! #@q
:•8æ(ö6i<–,µÐ'ò4ò:û8$Y½)Y7}9Œ:®8º2E9‰!Ä<=ê»52�8š@ÞAæÄ5Ê2~;ª ²4ã4›&¨2E'/Ío	@É(00%3u/?®B'+0¯&$é¥òW÷@©)U$8š
—$,@Ö"5ï‹$ÊvB6"Ï.¹6ù
CÐ‡#Lß%¼Ô0!ô9;$€-ñ!¼Q@Æ„½0Õ(M@ÙAãò,ýi
»ì19-ŒžÚ+…3L7'Æ4æû'	5>�º/^8•7¦p75 1+K3ŽÉ,[(]2L><,%Ç3'5#³7U¾,Ê#X&Ïè'-I<]n”8fš·2œ µ6V=©+Ã2&$Bx0å8ì=Ò4&¦+é@ó"ª5;'#I?÷ì6j7
! ×?¹
! ŸAAÝIÑ">>Æ	Y;$=®7ª+³;H£qAôw$&2é<¤Û‡%H6	!VË'Ya>á�H\>yZÞï5¤/¤x7Y!IÅ5’*ˆ!Ð	§(´
! )V(rº,¢0�p.e'V	Å2Y%å_2úÒÓá³\Â&6)Œ/Y4#×)µ?#ºBu{-Ž<>I
|=AR$y%~#æ®È;÷1c962@T!:À!m%Œ+õ]/‚%H9ø4�9J=u ƒë20#`0O	77©		R@ ?ß@NÝ=f6	6w'ü>¿@
ôu¥-*G‡G0î!BÃkOB
c	<#õ	<*Á650S%ò$ø~7*-*^<a!:š=û¤K.6/-˜
! Ê)LŠ&ä" @N	™£%T9t%Û^% )AD"O=„"<Ì²@ÁÉ:$ö3ÚrZ9üA5n0~1Í3%Òƒ
š;/ž-xb2vÙÒf­ð'ÿUc¶+›7#�/)Ça
ø9«²2Î®#–ëÖŸ�:£.!:/×2ï¤-v¯-j
! §@
! 9€?e‡@e9×í?ÿb8Ï9ä™ß	1E2�Ë$V¥	Ë!÷ë,	<³´^#S¬8á<86ž(O$Ú1‹
! .�$Ò :Ù4â-t(Ì6,qA->:Ù¦$=:Û5,Ø`9ëè¯xª3è/'ÿ4<
! zB#5æ*ï0Ÿ)[$‘>òÛA ·4¢ì0X“õ?1 èux	¶.å,ÊYd'ó#Ó[*/G'Í$f\à)w7ð�")NBD	m3>˜Èg „?q>iR>ÔÄw‹
98>@G95@ó&áF!7+™«.‡//ŸŒ!¯+>&ç:Í<š&n9ù‰:<&«�3»n9 );Â;õ"¼&µ Ö<ÆàÑ
! *¹!´•!`Bkãfj=[÷#g28�(ox³3ã;?=/CB„>³	š*µ2œ4
ä3r=À‡8�y
]‹;B5–9Ã=Ó1Ì+¦"7¥)Ê1—>0KÐ*/i7Q|‰9<ÝÉÈ™9-.<<v?º>x>I
! <„
#&šÈ$Å>Z9];9Ÿ4 BÂ=‡2È<9,{$6)P7r¢¶é3Qž;çY¬Ñ•50qÂ.¨³µ0C;1¿.;1U;6(@Ô/µk&W1ã%[ñ'$wƒ7·/
! 1	/�A¾.ü}BMB#;˜ æÝ@È,.†&&übx	GÍ,˜>J’K:ê=Bå(œb
Þ-ïp>H³ƒ=šCLú	{<èˆ«,F,ÏÕ�i9 /Î‘x"ó8ôW3ö§4ç=J×‚ ð(ù2Á1UŽ>ñ:;;ôµF@ØØ2F:+
!  76 t¾?Ü7u˜,DU™A»=Ù¾2€Ø1o5êýH&Û)8ß'ñ,üø.­Ôhß K9†ƒ8k:m0²/·3ú~Q"Ûs.¦ þT
Ø­C#LD'(L;6+0  4¨7„4*(²*Ü:Î:Í2!Ç'ë65ðê<J*I:S!‚?Åá'�8ºB,¶§x*{	yß£<{¨›>žy\:(<>@=ý*\2k#Œ9ÍÇI*öÏ)f=Ñ	Ác©E5ü&º8?-•13=Ú‘Ä
!  Bß0,;�(”ÊpBe4�/Ñ ;¥=Xœ4'&ÐÊ<<(N=XEBÝ‡,Aí	_Ûó÷(íF/y*¾BV;Ü]7‰Û"ÄAþ;‡4 ,£8Ü4½á;»1Üt'ç^·q’Š>t?Á3A4V)È&z&?]1?@ÀŒ
! ³Ž56#m!6Éì$é;”:9.q?7F$Ê"(Y ãè�¦ï	9%÷#2 "l
! )ó5<õr-@()7-ÌŒ#‚#�&93Ë,ö22w827¼Â¼Ù#,+:H<¡?É7I‚À*‰2”1=âF…ä¢2H'n/u"‰ *
�� !³0ñ4£&7÷‚$œ› :�! 'g&A¸3å
z;3–>c$·\
! m'k*¶=`}ç>9ñ0êKAo×X%:¾Õ7&%Ý*2<Œ1I!©;úŽ*ˆì9ø3Ñ<C
ü,Èã<,šÁ7÷KV0ñ;’!9Ä+¬6`%<‰/Y/þ!ý4'}/eê@4c!¤	»AV@*0„£"Ùèì/“7ð*Á,¾”*
~@f3Ê?À<r.šf"‹%„(3!Â9mA
! ö �Aï@Î:;3¡<�g=š ä �ó=p	=:´¯m:Ø
! R|)�,Z=·+h4âöª?!#02W.m3¢<¤b&åe•Z²!ñ=É*4
! I8Ú0�;®A5"]`B}:œz.º#œ0q(x=(@C8H(rb>4>–-é|3ÈÑÑAÝ8dd=åà.Ã,î!nhÙ…i$i:ž&:ä&.+3"gß#?	ÕŸa)
æS#ò%Ë™=A0z1
a(Ô&:Ç#	pÞÄ#” ìI	hu˜y
! ¢51Ÿ%*û# :ö>lb9’:)[±®$¶*<2xÙ+|1Õ@¿&t+ˆ¤B©.Œ"õ=(†Bl6=;Â6Ç?û<ŠÐ8”?î>ÛÙT
çØo
°6½/@/*$z·'ÞÁ²
! ç'¡-�R;Óp;%!yARé&jBÑ*ë0†
Ï1ê!"N/À4<;[Q5­*¨Â>n$¯,@£Ê+u61:1H8u7YX€g	7z+,¤>ûÇµ=û3�iÍþ;) ±
! ±EDA9;4W
Æ‚+ @Ó8J&;"Y3.ˆŽ!`5G
Pâ1
! ä8ù)MÅj;ô%z:è’
! QëA†%ÉAŸ(´„
! £Ã+V0(<ñ)ÞõzÍ&:8†<[%ù§6;ÚÝ0K7Ê>ò+yÝÝ€4¶0"*=©:²5º*@Ü>6Ž1½5¿4&Õ0›P6ÉO/7#	¢6#49(¤,2"ä:ôc!Ö(95ì!€6^(6¿!M/ø;!ÅS*ç<˜/Òj¼˜AîO)/A†AŸ"þ›û6FÛ/z9!*�8(}A['Æ/É!`g˜·¥>1i2Ç7Ž.Ï0�2+¢>aÏ(ƒ0—(Á K2œ<9Þ:¤;;%'P,Z[3÷%I3`)‘­8Æö"È9ÇË5s@y Œ-P>¡3X‰".ö%”A,@
! ñ�,û5}#;?ƒ@‘+G„cÂà‰-z*6AB 2'¥,ÿ/a0o u.Ë
	Õ/*[2Hâ
‡®@ò4ý!£/bH/,)$X
! …:B.ð4k;(™+mb÷.
! ˜?r)).1Vé?¯)L-í"—Bh8«:Ú]O$ª)¸\5�=Ds
! ‰)í0.X.R9eg
! p:7
+?v+Å.?'—:r({
¤w
B/áÈ
M$2'ÿ$å>$>oÉ­Æ#<¬6w*²¢7P)ã
! ‘!2Õ÷ÄUú
! 2Ñ;#O5§#‹	‚>
! 6E U‚X…¸8ß/e	«6:-Ë+N(Ï3ÔAm=r¬/ao'@8ÃìÜ$A=2”˜<Ò;%Zê5Ž›
! Ž'¯üÇ%MÔ>3š._ÿì+˜
! 6/í=û"$R†;O==$ac)8q™.­.èZ+NM†#«|BK&b+Ò
! M!Àº9’	4­9_æ=¨<7WÍ“`2zg6É.'Bf$’	s=[ñ5­;œˆ8í>ð?:r"â@Wy>Û3§$v!æ-D
ëá%àz„-ó.,L$Î*!$Ù·FA²B¸ù<"9_`&Y=ç-’0àµ?½ŽAƒU5U%Ñ2Š$(3ƒ>Ç¹B+/~?°;BúGK$²:ò MÓ’;Æ;^9«*º:È#É	Dø3�ù7*;?<­&Õ$þ&Iå3·.¥6šíA9ùq)óu!!%	š!M/
Ä)¡B%æ,5
! êž Â£ ^—±Í8H:Â¹4°7ƒ%½":Ý3ã&v&m4§L>0®<×
! É5¯<y?¬0ž'>@!/
<Ãw(Ü$ÛÂWø(b�E#Þ'Âˆ,�S1h'×#‘5éóM¬ë•ç*hÿ	l"‹2Àçj/ò@q9(¾7ø7ì#1H-Y[&B<ÄÏ´B_
! t@Ccð‡«=a6Š8ü(·%7)Æ?	k­605ôÁ)4ðö©6S@"/@y6ƒ}(
! =8]r7£:G!Î@:oW43$î8DÖ?ÈWª/¯Ù	#¿û¢@L*Ð$�™B99'4Î|,®9H+#3J –1Š)"}%!@	)RG�«?t2…ÙLÏZ»4)¨ŽBœ*.Ô	%>Ðä|<½.2Š#-%\Ñ7Ab/b4�@
  ï+ø
µ4eg@ß%5@øˆ&-“ý2A‰8�;Z4 %ûÐJ0bB9xB¤0Ò
­>f	§#ô*wœâ*qã5Š'ì1@'ž@º
! }Ï7Š;5)=í+‚!ÎY2<$—&ÛÐ-nâ3k<|h'�	�+‰˜1UÆ‰’%ªÉ8Á#=1Òf	R¬;U$äw¼Œ\ä':ñ7>J¹>33�84–ä-Â”F8&å7ìAˆjÆ.SB  5Ô=ü"„šÃ­Ÿ$‰"-½4â4<B
! T$
! 8'û;Úu_9ú~,L#/¡k$p(¦&áG;Õ
! øž)ÿ1LA/ØT±˜«/87®6Ÿ*f4,€&@,ô50®¾c(æs
ÿ*³[-?%0®.P/y[Žº‹9h ¸@A.·?"<Ø>H
! é8ï#W+'Ö	¼
! o=ì:×:½m+ê/!/g�2¨3ú0áÅ#à@�áA¨6/R37�Ó]	Ä6Ó"ÄF>Ì35G>ƒ,p‡=#%B)ª@be)U20=o;Ú¬º=ƒ!ádÃ7¬5æÇHë§0·£Ö$ÁAP8ä!Ô2®$‡»3–c/©T%¤::<p-ž@éå&ñ02å¿7Â+�ø%êÞ™<9ë²\&Ô516¿].´	=?‘Ä�#Qþ.ùª:ñ4W5üÄº%6$1¢.­(+v%?à
.M>><¿
! (â.ä	iKÿ7S&Í@(}2
! =“R%C4¬¸7z!™FýŒ7²-68cx/ˆ1&j!ÀæU1zcBÓ³
*Ì
”(ž
w"ã/X7y&?ô?HþŠP4>>5Ñ!G
! •ªž›Ö@íð*W¸w	'³*–)½>ðAP2¯40C,	h‚<ë
! ìØ,É [:23¢Ï6â;Ý+ä5Ï;‹/Ü;*5€7ÆAÀ£$�ÅAqý1•î'éD¿5'ð
! gÔ7Y?FÂ«AIcöÔ9¹*Õ=ê"Á?‰¯>¹M*y)x
! :Éœ%ð>5&ã—v9Í§5ÍAe2Y? ±=`;A5Ÿ:OA—+%ÅÞ‹31)
_QAº(æ?ê (í´"'ö<Ÿ'6œ&X5Þ5Å
—þí%ª(.
BŒ685W=UBø2Ð3Ía'a3í@rï
�ŸÔ*-Ê=n&1zÌ÷		
! ½1â%Ë	Ú7ç);2kö=¨B'~ö?:Y#^>T3e8©N"Á*C>õ4;d²	|8¨4à&Ô?O*,¬	ù=Þ¥<;ô+ù—+ïUÓ'š<÷$6<ƒ2â³?(�áC �ië/Ã Øt	Æ¹+!7Ûf-i.Æ &”Z<A\+m#?;û=ó+›	t1ž1ÛË1†.æ4-Ã Ó*ñ7·Bz1º-#+*I.k9ŸX4s÷*ƒ´¦.-°'Š<n•r,Ñæ¯Skvã:ßA¢Œ>‰A¾Ñ"á2À-�x@0¹'@jx/25x4×92=ˆ),(³%S>�1<Ç<1ýF	B‚(s3!Æ#@†0ž5õ'ÀÃYó!8	Î1T.¾F&�2’@01p8l?l/²ó?.Ž8<©BÛ@‚=�¸4è)þ˜EÞ	
! ïn?Ü18
ö*o»	ÿ½3ì 2š<.§
! 3Z;dí>ç"¤5)š/ð&¥3Û=ÃÛ©Q4y	8&9“9’+'Q‚n3¹2Î'l@Ó)7W98173ª ä(¿9J.Þ1Â3*I4_ó6gB6#$<¦#ê,4r$’Á
=ö5]4´9Ä&,ûd�n©>°&h<•0¨)…	ç3
ŽÌd	±AÝu4æ2Ç¾ù«+4,®+<+	«}56½öâý¢B½B	ž
! ½ü	y:U
! à(F9D?±>x#™=Ÿ+Ò&«xå¡=£3ñ™è&¡d8	'—t,7d�%LÆ�$!Ð9µ#
! á„ê
! À2û$j&dq<%Ó(Á'�¦*D2~± Ð/Ì( (J6¬)ŸrÉ3³ß¸Aò¨!Ó/3
! ö,8È4©*Hét
`4¾&AË=dÀ'q3øÿ/ü#?Ç+-C2.Ì>Ÿ;[+¶-$G(ØP$õ"Lw.q/{*‡:Ï4÷:®+åÌ&ë)”.4	Ë‘87ÆOs(™:»^QÁ
! †.A*ÎAÈ=—?Û%Ù/o;¦,”—ÍÄ7AGAì(î×A£=+3£ÑoA‚#+Ýó
×s'&4—-5:J!>(�â++K¸<6s/NŸ~	P@Ý3-
! ùT6U0,D
! ý4H=Ë
! ³µ0[1-4íé1�8n};:@s¯
[;½"ôB7«5Ü-#AVç;_@½9×
8¿
/3�#
Fë=â“BT-›(¥Ø%€(2w:æ
q8°"Ý5î=H
Ž×C''\‡	�>2à-~/ñ1^xë;79$h÷A ,E(4=+Î/µÂÊ+ñ¢~4ä�1š%3b:æ;}Öy3ŠAE<(/¡}:=O#®
ï0På"è<=C<¨>@0Ü"Ö2à˜!8‡9q@».š72JÓ:T>m8Š9
ŸaA#Ú“ù;60 m;‘K*iÄ43ª£ã030£äùÃ;¦>F	•¨	ƒ
! A¸rU4G%m$‡)|4]Ð)#õÁ	ö(ã ©)3è8¬-k%`$^3O06!5?U	û%u¡ @"3:"a$n7`�:pvÞ‰<Zv 
põ'*Í)ßW)ß„7ñ8'¿Y1�._…¾58BP&Ç0K`Ñ?@‘>s	sý ¡�=+n,?J>îa.fŒg8y-çI>n#·Ú-9M8é¦Ã@¤)J<k"à%úa:³<·[!''n%_Ô%ÇÒ/? ‰1lM,N+®*\
ý-
ß
-<“0Ì>'
(9
! )Ú*k­NÆsÇ+µ#P<ï>ï�. #M.…Ù>�6	;6-ã=%Æ]³�#"ì8|%§‹Ç(=üaß(8;!œÎ–=©?Šä9ò°>ÊRÚ
! ï
! Þ=)
! ÂA` BèAþd;`{µ)?.ë+T1Ú%g*‡/
û:%7/ŠK"†Ð¯5L
]BZ><¾01Ä'W8y@%@*
! m©9¯3@AV#‡¶e ÔtÏjI;Ìe
! ò@?5JÐ&Å%¥!û
ÿ9žOw2-Ò3–
|*y�ñ$Œe,n6<5m�âçB›)>¬2~50E3Ð6ý/
$zR6hBö	«J@>*m¤Aó0%á:¦-@&î0¨@Ü& AÌ³þŽr*##9B�4$#+u?¹)i*X9á:¡Ô6—@¦@P
<ë5%#£*˜&i&à°T#º+8:AÇ/w?Ž+ý3
h(’:õ-_NA
! V ˜.£@œ:…6Pñ¼(?,!§*n
! *ã>>S9³/;âë!7¾-/P*o#.A=¾"*7£A¹°@�«SˆEµ:K°(g<Ú 6=ð$�0¸$¡—‹ mN @•/„8T5*ñ#ý\3ÿ3ý¯†J2-0çÆu8ò(ë	ë38Œ8•ÃÖ7l9	Ø:t/ô$ŸBzPÅ%?i”!qw;9î;!8¯7—5
! w5"Bë'"	y!Â3år?-&hÕØ*ý&‘»9¹.Â7§'y4Å†X"D;#9S6äl,÷8<xµ<*å<“.À#:ˆ2Ù
Þ+”8•A¥AJw-,*É$jma@g§-8„"r1Lº!S7ÕI$8?Ó
! è1$])W>º¦¿=‘9V8Xô7a7`|&ÏÝ"9(¡¤
! «
ÄÁ;J'?	ˆ$êv
! ä7F%€¾-œU"Ë6
! µ*×&VÁ&›0Q-…šAç.HÄJç%¥Z¡4�=ƒBžAþ
Ø/UÒ)¥=
 A@)‰K@sÊõ+V5ÉV{4*"¿/-:Ù<d@1fA»"´+ý®‰	Âû>)B­@`×'Š"=&� ‚A²"%t,&R1;þw6n‘{Ö8ƒþ4W„'Á(²6t
! 6ØAh*,0µ8ß%xAP.è0Xà|5îJ%¤ž=�/ô#m
T§))ì@g'9,
! �
! ,*Øfú"o*%ð+â>;8ö+P:í!<¿|	àr8†)tŽ§!Ã·9Ò>¶(Ê6a¿l Æ,¶¯*‹R)/ïT
&ä=)¡&;/:#BÞ6ÐÒN5n(D@þ+Ô(ŒO W(;!ÿ)"qE„;Ú;ë!Q‰@!ë1Q ’ºÛA)P-;´Ð+h1‹ò	oùžo.»*#œ<ºø
! )B1ç�@ ²í/­q'¡
! <ì++êë?mµ@Ó0	]0íÙ¢U›
Ë@¬3)|Dú!2*2Ì,€o/!(ä%R:p0g;ˆã,5D# &½&Á=Ï Iî:=ÿ%ð	­Ã'ÅE>O&Qd.2/6pY"9¦Ù¸'ºÊ:³(ÖAÖ,žW+X?*®'	ÚÀÅ,%0.æ@¶[ÕŒ,¼#�/ð1›Ä@5*«'ÿà™1ÿ>F±.G �<71È&aRN;#�@¥(¤#8){Qdò{>*Á§B»*º,=›$ï&<;Ü&«@	"v4Ó,uAX$ZŽ9û2±4B^ Pç
—å$õj$×;S(Ó z<Ê/I#´5¼ *{)Àß)é7J:©õ3ÒZY.á£9‹-,,»
�*2$Ó@Ý.Ù¸2õ(j™;F(Ä2qf;UË*KV&t:ê.çÄ, !PAÚ"Ž; ³Æ ù0E!ß2³|:”
ê?�=†'°
! ’×6ˆž9WZ	R5ž+!Ðñt"id¯+(¶3d/ñ<´9(o"o(«91Y:KS-¬<Ì#<^@32”Ã%êò.e�O.»;Ä?*?DÀOK%[6m/g.C(7\B¾+À8Ä-—0H:„ùN!è+‚
-${Z57¶,ô&Ò$Ò"ÃŸ!Z
p9,Rk�^
9<	la"£¹€Í�&qó,™8s%î2¸+ôé$1@/#Ûè4f,â=8'Æ@6f
! ¯\=[.ø$ï!òýX‡*MA²?·~¯=×*C+²p%©ÍP!K"$c4©/ÅtÀ='?ü.RŸ6 5F3ó*ÿ&ž7´Bu'ø1ý.k	�1¹9•W�
! °4-6WR/*%-•,Q0:9)
ä>wAt
! ™±&<»HBÿ.18
! :6$y�0<ó;ò&ÍR	“+ƒº5I¢†B
úi-f¡'ð#W7‹4—;5M>;i3�%ñÚ(@Ô„¥
! }3œ 9á?–`8´<b,÷=ê4I#ü'œ+‘.*/0Ñ5È:4÷9$+ë
<:Í¦æ•„.Ì3È‚Ê-N{H5w4Ÿj
Z/I=-›GÖ1A«9y2…š-›B¦þ0ri0Ö.¹"¶bA.a1ƒ�×.¤vY
;G51ÐÔdÚ,(å$ø:*.2_5,+¥S
,$.{ (!)	Û'#B9
! ¯P"Â*Ó	a¤y=Áõ¬2Ÿãa*–Nc%Ñ«´4±5Î4”"Ñ$ÄY@Ñx$–*óqÚ>­ã8uám~9Fä2&x5æ	½`:‡Cn¾&_;8Ó;Aœ#›-¬+).I+Sz VR0Ö!‹1«11ÏAŒ
×s?."M1Æþ:Õ:Q£
Œóó>ŸŠmBÿÖ-i1�'ÝAB2m7O7Û>+Ã>X'PeR4¨‘/\f�3‹¶ñ N¡u@ÝÕ<µ/cA’6j1>ù8×1Þ0
! Ö,3n>Ž{"g’${‹¿>7*¹ºæ)9ä69I–"c3ì;Ü\%eù
! (”™FÛ1
! ;ÛÁ¯Œ O"71ÿê-#/C1'ñ)>
! uë&"ƒE,*&å6|(µ3yBÉ7'ËòÃ(üœ>Ž×‹?ìõÙ&”¢)�0‘0&(É¥28Œ&»-¬.„É+a5»,"0ï1ã'0:|?�‡"f›,
! Ei5¤¨
œ59#´6ê]!4¦=ª-!§h2 ?><üÌâƒq>,.Á9¦/)!¢Èl%7_#¿+¹Ìe7™(­
! ˜Ðß-í
j<o4n¸"Yb.›2|A;É?^5�!7(ˆÌ.¡u&ä—	çç3ÿ
é	“%
¶Ô³-{/-*F&€!	‰$¤(§AI%‘q-?¡:q	]B=7¢')Œ$]™ö4¹3 B+BË–0]^®B£O2Y9€¶�4k,¦.,]5‘-L ),l™#³Æ"BA×Ý;9œ1Ýq&h€7Œ#Tî4?LÜ(ïÄd ^y†Ñ9—1
%Þ"7Ã¶å5Üº\ä*+¨Â	@1>7ƒ)ó$-n Ú9%6ù&p&Š‚2€*8/6ñ"&ü;½˜7UƒA2õÈz )fc5b6x%V*ü3&+t&—2�A41&+7O	3ûŠ¦3_54•<[Þ,™8;÷51Æ>0+þ)Hõ>¬
! b÷®5/;S/¶:Î(¼"ð57§"ƒv)}š¹âQ
! 5“@~>±P5bž?2·8Ô7„�7à;}8'#®/–4T:“!d4ÏƒCý;Ï?U(¾Ä½µ)ÃAá!ÎØ0ä1í%8Æ0«.ˆ4ªíK,†˜* +’=‘2˜óO'XB^îÜEh0
! %	_½%]-—7sT>s>Í6®3J¼¨Ž•
ì]˜4Þ>.“=×3ú?ß³V
„ Ú#B(|�‚;6(ÙaÒAJì'G"±4�/Ë8§+
! ð:46V+
! {@\0<ø}&ó0LH>/n@B5E;¡/å2jW�±w�Ê	9èL5ã3a:	‚-�?¾>8B±@ÔÌ ;ž.¶#¯B C3Ø‚“¹/N:üÂ¹(:Wƒ:E-ë¡Ú!Å!"?]7M7¿0:1’
Ê!*›ƒ´0!Ê9&=+‘K;H*N-L"\7Éì™/7õ1ÿ"
! mÃZ7º@?98k@Ç®?fˆ<Ä?‡+4}0�B(ú)”7ê8ë-¤,c@©(U9µ�BÍ'«ã-€K';>î1¶g?0.&>$´7!"Al¦
! S<9"6a2ÌM0Ë—,›×>09Í	
@EA$/ 
�ð@L6°!§%ö­øa3±..€.d&-5  4]"?—8:%¶?cå;M+IÝ,×‘8ö,õù¤<0>"Íÿ+:5Œ\“3`˜<Ú2V
! 5©²J" å%éŸ.Ý)<¶)e@¤x4Ç x§¸/·9
¼7/x}
! e 0;x=Ø 9_)jÉy+±•;4&~W	;¦:ü#ü6�<}*w
! {§rÔ,„%èðÎ0Õ
®A¦2·/ù,Ø$±#Ù8îÕ*Q7(+'Š5ÎŠ/Ó?49X8}Ó9,|=:š
! ]H$¥è÷07Ä	µ,‹"$…gZŒ$tvÆ%®tÓ¬,M"2ý?£ß‘Bá7•=•+4,¬a%° ):e(GB4ùá=Èq,&³‰?}6‰9–5DL((N&l
 )]9„** �(Z&‡ -f0‚þ-2Q:¼3þ$Ó¶$[)àç8a;yí9D‰*Æ
! Ö
! Îþ3®\bVñ*A:T'û,
! 'ItWBÁP6[
! d"Í()2Ak,-«.¸!©$(d+PM'ž÷!î3Š@Ìã*Ð@êÓ
 kB!É,‰.k/"4tBJ,™82t9]à
è(è"ÂÍ&¬
F�Ø!9ž"Ål3®ðe!+73.© íA&»V‰
6\8e1ú
 `
! ø$)[„&J;bo3=,³#s¿-²'Ïz9=><Ù$/
! í6Ýš0–!ê(0""¡ŠÀ/6.:!h-4g'#'¹(g0z›/±!
! o&|=¦	�û1Å+¿ 
Íû7"Ûk8‡"š6ß»:(‰±/H¬²·:–2f†>F6Ô(×: ¶%Êñ+é(*ÿA=@ÊÅe=—6Ó#0;)è	7,¨9Uf!©#  ÿ!²)'…>�„+l
! Ñ_wô'á<¼©í"n/.6� ˜#‚%O(>Â?.âu#ký80Y$¨A��0€=4¤?+=mº”<Ò:‘)r2ž4ÝVAþ
! °?Ô:ç&*)ú6·!b M*9èëè�<!€"S ¤ZA0H"ÅT¹u>'5N0,Ø
(ß8Ú:SAZ)qB9&ŽÁ+ Ä/ÞÁ:s2¦( 7ã)þ“'ë7ÄiÔG²z8…<1	j>e-¢A
–$Es4™6Õ3ê$¶'<,�¨84AŽ(Ÿ¢‘?×(æ!î%Æ�'Âû!%Þwúf)û
! †:U/– „!*!Â@žboX0à?yŽ%iÿ0 �@–vAÜ>·A˜5M=pìò>2A©3ZÉ1BÿÃªÇ.-	äÇœ)«!I:“Ð2,78=D8|2�#¤'Dá&?,Ì£70!Í74:*>	c'¨ª"¯ îÚ
! '!"ó&F0³;ä/n,:,H	%R*)7zã+¡5@"/¥àð6vp"+U3&n*ªÅ.M)ž$�µr	;³5Êï=>	µ$ó •(*%¿(x�ý£³8ò!µ$r:ä#«"×5¾(«½+Ò÷/å¶®&/(èEÔ‘1Á-²$v0vöW:Á@ÕL8mœ/Õ",�ô�);È	u/
èóÔC6)(Ð?64¤1ª$à8uB57¦ú¡7R&È@;ð2+§^!Nã°E+qè=Å$5½<3‹é!/¶!·!÷4)Ô!¤4t0??ø+¼5»?2!™?ž8WÖb.3©r/¥^w\’AÎ9™5à0p$2BÌBJ|$’8°/ÌÀ 0v5éAˆ5˜ðá>Ie&Î2¹&
4§?þ"½.SÁ=”™%ø—Ó·7
! Í=‹*Ö•/AL'&9Á"Ê[9gÅ1$ê6õ
÷-	M38""{h?½@X-ü
ó:,�$=”±
26Ù61>2$úÿ"+Ó38-Ð2}+‚1‡>Ÿ
! /4Û8�|/BY-«$ø_$ç?f37q!26	ø@4‰>H)ã+îU3ö.þ<¾ˆÞ@{9¿ý(±È2$¥$,j<•#û-»-#$0”%/µ*:*4ù*Ü56	0�ÅAt#&%¦<'ã1v>�ë^+ÌŽ<Ò,1Õõ5í¢.|ÇËŽ6~Bi@H#æ:^Ao1à452€¼Ï/Ó2O‘ûU:"'À+;	ÜË3e:­
! 	Þä+‚8ù¼'Ê4—3Ì¹1nÅ:4J"K!„B÷?,©2Š;ß^6¿µÛ-D+š9cƒ+,Ò@ì4*§HA;‹h2äb'i%ýœ:‰,Ì)�yø*ÄZK4Ê;9¿;œ(¸	&»
! '-G)D�9Ï
ƒ?Á.ó¸$ 	 &7~°a4†³O8F‰'¦1Þ
øoI¿£2Ð!±6­ÁìÅÕ+é5£1•?+öÂ%€$¹µ(@-Ô12¿ç(À&FÍ-6;Ž)Al7.Ú/¬'”¡Ld
£6T×$æ;l83ç§2+ëò7zBƒ,o:ô-¯2Ä½
! d
! Èí4M½s;é‚Þ)Þ0MÃ.Ä�'5úû­:02>"7ë(Cü1¥+X#µ–Z	gðÜ‘8 /2Õ7�1j'ù5³M13#-VÄ8˜9º¦
p@L*RX2À–x¡*éî+É)t&,5¾#g
Hè{3;0~Î&8€(>,¾
! WâA]}Ë�ó-¥‚ê#¬Ïú90´,­<¸<ƒ<�3ª©1'<Ñ'~t:D›<‡'Õ#êV—/>V1v.
! /º0 A"
! ¹	Ô>÷«&CÆ8í-[¤=‹.lm(e*‚^Ý…2æ%UZ#
y1&0C=	»y1ª’1k)¨$�Q=´;eL1d#&Ë>gA Ç-^.=$ø)R2Q&;þ9¹8BÅ4û=9¡.!A’Dè!Î?$…$?[0\Ó{	6É§o?|[Q*?–Ù#í:æ'æ6‡<"@4%û?é#5>2Ô´3¯1Þ%
[ª*(
ë*#*	ø/p'l’]<”9�51…!ê-È/áÅ)­
²)Ó.»¿z7£,[<û[Ì5d?¡.'3¤P&î'C%Ï·"é:"4\0%ú;
! BExær<Kú4® ë$oÐ)pÏðL6¯#ÕÆ9@¨v<A>Ý/ø%˜$$Ü=Ã%1L<‘�?¢Ð
¡óà"z
+à¬(K
‡6’BPÉ
r3:?0Å-q7ò¥*Ö+C	Â,*+—#/Bû9h6�BÑž»2wÅï­ •	qŠ°-w0²8Ù0·$OiOVh+.7,Sý7’Ã²
1ö),#x4þ „EI?›Ø@Sm”-ñ	P	êNA)È¤ê¸=O%eB•”3½
Ì-E0›8Ë)ç¡.2
7A:BÍv¿%U:fq5f#eÙ*m&ì)_(/ÔfõÚ<å9» ¢¯/7;G*¥�{ì™ïý
§&û!¼AØ'??`>Y$5m*¤F ¶"…#ªh5¦ç¡>P 8R8z	Èè:BuÂÎ)!;Z:˜&"
! Ü.z5•Ã5p2A}
>#Í§¨X.°,â$Ë&
! Q$tk!t)ê¯;ÆÏ}=
Öˆ:[
°ü‹B8—4ü9®:ì2ûs:†,1Yd®uÇ#‚/+Ë	•,ñ
ì-Jb"v)<É>ÛK 

(8H;_7ª#&• ¨?Ð;`Aa,‚*'b™Â:Æ9Êìf½G$¨÷b1Ì9î4:ls7{
! ž/µBÕº'"Â X?4$'ò3æ²,lKÜ8Ã$r&Ó56?{à O@öž‚B$ö&‡�.j+z)1.#L
! 
! §.W*2Ö)³.³ {+C<ÊÌ÷‰
! ï8P¬ …"EF"ç“2S<ì5`î	ƒ$‰7€!³$¾h#ÉZ2P
! Õ&�2›9:{R
¯‹<?T 9å½?î9\‹(3þê
8+æç5Ü,§7|Ž,ë0$?gÆ@â8¹@ª9id<$3µp?ìº7]'ñA"�40ˆ
J¶1“!Ù*Î+ô;Ž?ö8M
! )6P%	1'7aÅ,t)&
! šÜ@‘A.8742>+üÙ7“4°0¼
o) 
! @Ð 3¦!^"Ÿ@–-'Q;
%)Ø	‘(a+]:ä?ê=?7ê0Ä3¬jz%L.·NCp+ã"}ø>B;47!Aç/­“1)ŒA½îÙ’9µ �|\ 
! #H$;ã°*
! !,Ÿ7¯?w!SÍ)×ý5n4^0í,µ.ÛC..*^&~3y$Ö%VÌÁÐ1·
9'4„<’'åðe�<Œ(
!¨-	!v(‡^*y¿Çþ	À$ÝU!ös68o‰&we3„c#nö<4%ØsÃ:Q7Ž5ðl( ; íØ‘!ˆ.�BTg3©Qâ#7´
–.
>Û+y4þ2*;+<-´:}7_0k-Î!1‡?ìü%0
[¿N3²;ø§ ý@ÁÍ"�-ª
ô*ÃØ-�:ys5<ø£Bœó/a-)0:§³6B9Ý 2©
ä
! &X+á3&6œ
! õˆ‚3zË6QÙ@¥É<H!«l$ž#á[821"A4á@X<G4”)°$­t3ú'I44=	GÔ-…/Õ6lB0öÎ7F™0™Þ3pe+W%$Øc	Ñ44™$+…'ã(x?¸.]+�¿Ü2X,o9Ž0^'l1�x;N)¾3–HX©$	B{%‚%rŠc·;3ˆ7O<ë"%}4Z,Î\!.$Åð<¨n1BlÔ#tb?Û
†+Î8_ão,y»7¾øÀ)Ê–5!A1š'ü5ùt*Aç$&×<Ù>.U1-_>„Q« É¼†8f8F#¸5¬%¯:pÏ%ô>:€0T¨¾
m_Öü*	¨b-9�!ò\$j8öà<Ïü8!&›3J9:„ßÿ<³:7?N‡74hMp,Q"ð
*3�,!ŒÕ²9þ1¬y‹	?>/ ú#D,2,Ê8. ?Óˆ'ù3{Ã
! “"h|9[Å*94„
ï:X4…4ÞWÑ/r9'Û*Vó2Õa=®þ=º"h¿^?1�
! ±%j*Õ8GEB£´	~
! ª,O^Ú»8
B³¾<gƒ;>®Oi Òf?ê7c;V-Ú¹=µ;93á
¬7o‡Ò+Ó!nN®!M+ŒŒ?(.‰='e'dª<È? *�5�9n-ŠÍ:i2:[;>€QO+Hò“1Ë)/>
A0ý9Ç!g1â# T8<B³@´A[ï9ô Þ
! `3ìÈ%Ù=u
f9×èè©A>!!bÄ ]
! ‰%
!  %d:­7Ù)o<
„AV,E)|[ß=@_úAÚ‚08g86:4YB48ü~0ª20ªA,gÅ3T2œœ<¢1uã ":4&0$Ã&Q+0?Þ.‘3\‡ �@¥@vèÌ"%_.W'Ó½2
! X:
! iõGwB÷)r0æÜ6í6M-�z0T&_!*6ƒ	g4O
--Å7D9‘¼4î-¿ÛK
! 06Ä-<b>Õ¾/‡
! â'@5Ý#~Æ5Ü	@'WA<§	:�'t0´';A1?3ïˆ)åžB¾"¢!‹&×7×7‚.Ì7$6}¢
q"w=Êû#;B¹dÃõ,l0,Ê—9â<¶7["Ò;©!Â;T(Ü<�-æÇ5þ�ô
^=	š:¿5”
! 0E4´Á8!0¾4	+@@%»6ÒP‚8.½¸Œ´Î0-j9012	Y+&¶
! êAÝ�7ÐÛ:Š\/¹#”wü�
´#{Äy.{'ÖªOñÜ‚50¦%h7‚*ÓÂz#;ù(å)Ò8,?3<˜Q2
AhÆ1"2*oœÄæ$„	°ü*£m }>³
(?7"?ãUA€$¿3a%
”+¢,Ã/Í*6&ßë9òâ,Ã0$BÎ5ž"1kâ9ï7qÕ˜(�åÝ
! ³²&S'¯!Ë­·<}"­#=P#k¡!‘"'i9	WAØØm×ñ@7<–'6É;G®U."ŠB•3¼:Y(y/Ï‰(›C;Ë?—b˜:¢8ÎÕ4å|#þ)v­I Sk–A-!µE§<à	Y0B@'²˜rB¨U8<—ÿe;ž¢žÊ	uh,þ/]3
ü?_€+“>ÍIA2;ƒ.6©5µ&t.ˆ(#7Z1n.#!`?¸cÆ+ý7Ê
! 8<Ü‚ r…@ö9á/89§Nh+®('=?É
‹,ý#`ùÉ#¯;6¶h(§¹":·=/É0�"¼Û D!‹+ü:d•2–
! #6ã%A,íÿ&	.ÐßÚšøç@!?ƒ"«)™-†âDtk°#:¢&a$í'?*ª&fZ#„¡0
! 7Ì$½'Y	p q%Æ&Ù63•þ6[4ß&2%VN4-2	%9Ø+t˜68>q$Ê'V"ß¡9ÏJE¡5ú/ÖTA3˜C*t%
! ­4:6]…)_
Ô/e!%+é/ã7Ü3^(–�$H@"()F3Q'%;~"·(n(b$	#Õ¼/	
LÅ(
! 5Æ6�l-3AX*.a&9/�¦Ò1•+Ð5ý	’k>u0K/¥Ü6¶Æ:Ã»äW	j-m)�=$9óÔ `ÕW!¨=Î&Ñ'O"¿Z</•&’?C-G¢óA¯
! h"¹%Þ2Å@è-€':*4@YC‘Þ<­¸šB©%V!/¤@–½!u*×!	é0¢šG<¸Œ@˜\Öd5^ª!?Ü©â8,J>%S
! ¾)`d9Ù:8A·²0÷	©'-„å.h!2“=¤?
! î&™)îl2Pûd%±'û­32)/r>ùô0&Û!›-+,�@:Bf5€B‚:r!+&'©,0ž<’
9&/ÿàA\#+jA9‘/4 �¸Ñ°	È! -$+/`5@
! P9|+/ß>(5sð9Ñ;T³>j.ø-¥€9§70Íš'(ö'»+‘*Ü
±:72§¼;gŠ4`#¸
! Œ29	ùÃÁrA¾1¦-f*Š=Î/¢6*0BI)Ÿ?	Á7,)¢ ¹?×f.+
‹;®01É">{—+ê
ï(¶&¡),4ÍÔ8%.‹#F+e:ð
! <¦)Ì
! X)=/H/Â-Ø÷¡2Æ",78$	¾9Í9¥.jØ¶àà7Ð<g%&@	µ
! 'É79Ï„1Þý5-¥
þ(_7V#á$¹$l$Œd-.OÎ-ý6½2ˆßÅ8ƒ @ãL%÷<(ô.6¾8Ž Y<Á6=¢´*­=¤¹¥#t!=#¥Rà5K=ˆA†e
]=¤,%!³=i°+•)ÿ^f‚@X!#FBŒBñ(x ÒCr' ;ö	A­($c.	›!pxÊ({,ñ&€)Ç
! �(Œ5=6š){1
â	?25‘,t= ”@sA0Tê±B¨"'–'&™|"-;;9"ù�;|ê:
	Å;°«“	½a/Á¯"i)Ÿ8¼P>”D6VWJ$íÞt5Æ2Ì!K5žcw ‹BË"¶
k6¾ Œ08â5¨
! ?Û¢4{!	E
! §Dî
! ÚÕEc7_87‹:ë?s ¿$¥1šO(9ú(’<æ&-J8Þ*5À16@Â4.%Æü2¸V/76ûæ"U6á	~65/¬9”0@œM3g+Ê7·
! añ
! !,�*T
! ßµS†!ð2ßŠ
! ýº)¶4±
¿)l!ÑÌ8±69ÐÞ$…c"Þ!›5”	¬o-ÝH (È'H½=d6Kl.z5Ö9�ì"öA�
! |4	�*:/£ûåá0;õ%´8 'A´ ¦;(C$…&ñ6%½$)Ý1È�«(Å -Ï@ð8î)9P'À Ðüá9Ã!áÜ]wŒ3õ/5$*O
! AN‘@$@Ÿ‡,Ø Ü+$é,6Ñ3*:§,º*G9›‰ =÷6(\Û?i>"
i!Ç8>�*š�5ð)|��>¡,s£	Çè
! E=¤6x(ËPBF8@.¬k#µ186«	ò6“&¼-@S8	@-58:åÎ#ï*)ÊÞ4%›ò)Ýµ-H1‡(Èå Xé95£'ÌAL:v<è@B0¨
! ’-É'ê>YÍ
! V2™&ù-'0 ›².�B(+œ$£^/Ø¸ œ!\¾ªÏ=ó	°=i/B	1,'üø-°!|!N!ØAIÅ¥-.#ã?û)Ô+«ZB�<%Ï*S�Ç1Ô4¹ðâb	?:ÜQ.¦Q‹5.q±9Ç"e$ú6MI0ß7}p~=¯x9Ï@+Ñ<ÿõ£Ï-��!Ï
! Ê0ñ%¿Ö/ë%(w9:&£BBÑ1H%®4ž'Ïª%-¡6
ª>4Á Z8á%¼8z=¼7ø26C@Ÿ¹<U“;â?b(R¼5Ã-Ï#*B#>)ï ¨(˜1ÿ[BK0Ëc
! Â!3Ë	J5œ-¾·1s#ü7Ò-7Ç(#aÖ5ý$ReK‘<¥L&«2"@A?=!Qu	–/Ì2¶/º  �ƒz@æ3p#M?AŽb¸>p-("þ'“(\?ƒ*}Ž¾3+u2
5Ð(Æÿ1(uõ0„PÆ˜=ˆgÒ!Þ§=ÿÂ/Î,¹a?6Gw#m.ô¨#~"Ä*Þ›$,M*<¤&í2‚9'0O9¤%ª'ø#Í'|>½.4Å¾!î@W&­ì>Œ4»a$`:#£--Œ�A3-1!æ#9(4g!Eò2E@÷Ï%8§~æ0²ì
! õ¹)6W/…–&rê4( 81%â°%™	
  
  
  /* WARNING: Because of differing arguments to an external
*************** write_c_file - output name is %s, prefix
*** 1996,2023 ****
   No options with the desired characteristics were found
   None found.  Use --help=%s to show *all* the options supported by the %s front-end.
   [see %<-fallow-invalid-boz%>] because all of its copy and move constructors are deleted candidate 1: %q#F candidate 2: %q#F conflicting code gen style switches are used declared here the expression has a constant value but is not a C++ constant-expression zstd!$ACC LOOP %s loops don't form rectangular iteration space at %L!$ACC LOOP cannot be a DO CONCURRENT loop at %L!$ACC LOOP cannot be a DO WHILE or DO without loop control at %L!$ACC LOOP iteration variable must be of type integer at %L!$ACC ROUTINE already applied at %C!$ACC ROUTINE with GANG, WORKER, or VECTOR clause is not permitted in PURE procedure at %C!$ACC at %C starts a commented line as it neither is followed by a space nor is a continuation line!$OMP ASSUMES at %C must be in the specification part of a subprogram or module!$OMP ATOMIC CAPTURE capture statement reads from different variable than update statement writes into at %L!$OMP ATOMIC READ at %L incompatible with RELEASE clause!$OMP ATOMIC READ at %L incompatible with RELEASE clause implicitly provided by a REQUIRES directive!$OMP ATOMIC READ statement must read from a scalar variable of intrinsic type at %L!$OMP ATOMIC UPDATE at %L with FAIL clause requires either the COMPARE clause or using the intrinsic MIN/MAX procedure!$OMP ATOMIC WRITE at %L incompatible with ACQUIRE clause!$OMP ATOMIC WRITE at %L incompatible with ACQUIRES clause implicitly provided by a REQUIRES directive!$OMP ATOMIC assignment intrinsic IAND, IOR or IEOR must have two arguments at %L!$OMP ATOMIC assignment intrinsic must be MIN, MAX, IAND, IOR or IEOR at %L!$OMP ATOMIC assignment must be var = var op expr or var = expr op var at %L!$OMP ATOMIC assignment must have an operator or intrinsic on right hand side at %L!$OMP ATOMIC assignment operator must be binary +, *, -, /, .AND., .OR., .EQV. or .NEQV. at %L!$OMP ATOMIC at %L with %s clause is incompatible with READ or WRITE!$OMP ATOMIC at %L with %s clause requires %s clause!$OMP ATOMIC capture-statement must set a scalar variable of intrinsic type at %L!$OMP ATOMIC capture-statement requires a scalar variable of intrinsic type at %L!$OMP ATOMIC intrinsic arguments except one must not reference %qs at %L!$OMP ATOMIC intrinsic arguments must be scalar at %L!$OMP ATOMIC statement must assign an expression of intrinsic type at %L!$OMP ATOMIC statement must set a scalar variable of intrinsic type at %L!$OMP ATOMIC var = var op expr not mathematically equivalent to var = var op (expr) at %L!$OMP ATOMIC with ALLOCATABLE variable at %L!$OMP DECLARE REDUCTION %s not found at %L!$OMP DECLARE REDUCTION %s not found for type %s at %L!$OMP DECLARE SIMD should refer to containing procedure %qs at %L!$OMP DECLARE TARGET variable %qs at %L isn't SAVEd!$OMP REQUIRES at %C must appear in the specification part of a program unit!$OMP REQUIRES clause %<atomic_default_mem_order(%s)%> specified at %L overrides a previous %<atomic_default_mem_order(%s)%> (which might be through using a module)!$OMP REQUIRES clause %<atomic_default_mem_order(%s)%> specified via module %qs use at %L but same clause is not specified for the program unit!$OMP REQUIRES clause %<atomic_default_mem_order(%s)%> specified via module %qs use at %L overrides a previous %<atomic_default_mem_order(%s)%> (which might be through using a module)!$OMP REQUIRES clause %qs specified at %L comes after using a device construct/routine!$OMP REQUIRES clause %qs specified via module %qs use at %L but same clause is not specified for the program unit!$OMP REQUIRES clause %qs specified via module %qs use at %L comes after using a device construct/routine!$OMP SCAN at %L with zero executable statements in preceding structured block sequence!$OMP SCAN at %L with zero executable statements in succeeding structured block sequence!$OMP TARGET region at %L with a nested TEAMS at %L may not contain any other statement, declaration or directive outside of the single TEAMS construct!$OMP TARGET region at %L with a nested TEAMS may not contain any other statement, declaration or directive outside of the single TEAMS construct!$OMP at %C starts a commented line as it neither is followed by a space nor is a continuation line"::" was expected after module nature at %C but was not found"USE :: module" at %C# %s %.2f %.2f
- ###### candidate %s has unimplemented CVT_type %d(%s)
- ###### unknown setop_t code %d
  #embed <...> search starts here:
  #include "..." search starts here:
  #include <...> search starts here:
! $ descriptor at %L$ should be the last specifier in format at %L$OMP ERROR encountered at %L$OMP ERROR encountered at %L: %s%#qT declared here%#qT defined here%%:%<canon_for_mlib%> takes 1 or more pairs of parameters%%:%<target_mode_check%> takes an even number of parameters%%LOC() as an rvalue at %C%%a requires an address of memory%%d, %%e, %%f, %%g operand modifiers are for memory references or constant values only%+qD causes a section type conflict for section %qs%+qD causes a section type conflict with %qD in section %qs%+qD declared %qE after being used%+qD declared %qs after being used%+qD without %<retain%> attribute and %qD with %<retain%> attribute are placed in a section with the same name%<!$OMP %s%> at %L requires %<-fopenmp-allocators%>%<!%> not valid in GIMPLE%<#define %s%>%<#pragma %s%> may only be used at file scope%<#pragma %s%> may only be used in compound statements%<#pragma GCC %s%> must be inside a function%<#pragma GCC aarch64%> requires a string parameter%<#pragma GCC arm "arm_mve.h"%> requires a boolean parameter%<#pragma GCC arm%> requires a string parameter%<#pragma GCC memregs%> must precede any function declarations%<#pragma GCC memregs%> takes a number [0-16]%<#pragma GCC optimize (string [,string]...)%> does not have a final %<)%>%<#pragma GCC optimize%> is not a string or number%<#pragma GCC optimize%> is not allowed inside functions%<#pragma GCC optimize%> string is badly formed%<#pragma GCC option%> is not a string%<#pragma GCC option%> is not allowed inside functions%<#pragma GCC pch_preprocess%> must be first%<#pragma GCC pop_options%> without a corresponding %<#pragma GCC push_options%>%<#pragma GCC target (string [,string]...)%> does not have a final %<)%>%<#pragma GCC target%> is not supported for this machine%<#pragma GCC target%> string is badly formed%<#pragma GCC unroll%> requires an assignment-expression that evaluates to a non-negative integral constant less than %u%<#pragma GCC visibility push()%> must specify %<default%>, %<internal%>, %<hidden%> or %<protected%>%<#pragma GCC visibility%> must be followed by %<push%> or %<pop%>%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported for C++%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported on this target%<#pragma acc %s data%> has no data movement clause%<#pragma acc routine%> must be applied before definition%<#pragma acc routine%> must be applied before use%<#pragma acc routine%> must be at file scope%<#pragma acc routine%> names a set of overloads%<#pragma acc routine%> not immediately followed by a single function declaration or definition%<#pragma acc routine%> not immediately followed by function declaration or definition%<#pragma acc update%> must contain at least one %<device%> or %<host%> or %<self%> clause%<#pragma align%> must appear before the declaration of %qD, ignoring%<#pragma implementation%> for %qs appears after file is included%<#pragma message: %s%>%<#pragma omp allocate%> not yet supported%<#pragma omp assumes%> may only be used at file or namespace scope%<#pragma omp atomic capture%> uses two different expressions for memory%<#pragma omp atomic capture%> uses two different variables for memory%<#pragma omp atomic compare capture%> with non-integral comparison result%<#pragma omp atomic read%> incompatible with %<release%> clause%<#pragma omp atomic read%> incompatible with %<release%> clause implicitly provided by a %<requires%> directive%<#pragma omp atomic update%> uses two different expressions for memory%<#pragma omp atomic update%> uses two different variables for memory%<#pragma omp atomic write%> incompatible with %<acquire%> clause%<#pragma omp atomic write%> incompatible with %<acquire%> clause implicitly provided by a %<requires%> directive%<#pragma omp cancel%> must specify one of %<parallel%>, %<for%>, %<sections%> or %<taskgroup%> clauses%<#pragma omp cancellation point%> must specify one of %<parallel%>, %<for%>, %<sections%> or %<taskgroup%> clauses%<#pragma omp critical%> with %<hint%> clause requires a name, except when %<omp_sync_hint_none%> is used%<#pragma omp declare %s%> followed by %<#pragma omp declare %s%>%<#pragma omp declare %s%> must be followed by function declaration or definition%<#pragma omp declare %s%> must be followed by function declaration or definition or another %<#pragma omp declare %s%>%<#pragma omp declare %s%> not immediately followed by a function declaration or definition%<#pragma omp declare %s%> not immediately followed by a single function declaration or definition%<#pragma omp declare %s%> not immediately followed by function declaration or definition%<#pragma omp declare reduction%> combiner refers to variable %qD which is not %<omp_out%> nor %<omp_in%>%<#pragma omp declare reduction%> initializer refers to variable %qD which is not %<omp_priv%> nor %<omp_orig%>%<#pragma omp declare reduction%> not at file or block scope%<#pragma omp dispatch%> must be followed by a direct function call with optional assignment%<#pragma omp dispatch%> must be followed by a function call with optional assignment%<#pragma omp end declare target%> without corresponding %<#pragma omp declare target%> or %<#pragma omp begin declare target%>%<#pragma omp error%> with %<at(execution)%> clause may only be used in compound statements%<#pragma omp ordered%> with %qs clause may only be used in compound statements%<#pragma omp requires%> may only be used at file or namespace scope%<#pragma omp scan%> may only be used in a loop construct with %<inscan%> %<reduction%> clause%<#pragma omp scan%> with zero preceding executable statements%<#pragma omp scan%> with zero succeeding executable statements%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct%<#pragma omp simd%> used with class iteration variable %qE%<#pragma omp target data%> must contain at least one %<map%>, %<use_device_ptr%> or %<use_device_addr%> clause%<#pragma omp target data%> with map-type other than %<to%>, %<from%>, %<tofrom%> or %<alloc%> on %<map%> clause%<#pragma omp target enter data%> must contain at least one %<map%> clause%<#pragma omp target enter data%> with map-type other than %<to%>, %<tofrom%> or %<alloc%> on %<map%> clause%<#pragma omp target exit data%> must contain at least one %<map%> clause%<#pragma omp target exit data%> with map-type other than %<from%>, %<tofrom%>, %<release%> or %<delete%> on %<map%> clause%<#pragma omp target update%> must contain at least one %<from%> or %<to%> clauses%<#pragma omp target%> with map-type other than %<to%>, %<from%>, %<tofrom%> or %<alloc%> on %<map%> clause%<#pragma pack (pop)%> encountered without matching %<#pragma pack (push)%>%<#pragma pack%> has no effect with %<-fpack-struct%> - ignored%<#pragma pack(pop, %E)%> encountered without matching %<#pragma pack(push, %E)%>%<#pragma redefine_extname%> ignored due to conflict with %<asm%> declaration%<#pragma redefine_extname%> ignored due to conflict with previous %<#pragma redefine_extname%>%<#pragma redefine_extname%> ignored due to conflict with previous rename%<#pragma riscv intrinsic%> requires a string parameter%<#pragma scalar_storage_order%> is not supported for C++%<#pragma vtable%> no longer supported%<#pragma weak%> declaration of %q+D not allowed, ignored%<#pragma%> GHS endXXX does not match previous startXXX%<#pragma%> GHS endXXX found without previous startXXX%<#pragma%> is not allowed here%<#undef %E%>%<$%>operand number used after format without operand number%<%%%> constraint used with last operand%<%%%c%> yields only last 2 digits of year%<%%%c%> yields only last 2 digits of year in some locales%<%.*s%> directive argument is not a nul-terminated string%<%.*s%> directive argument is null%<%.*s%> directive output between %wu and %wu bytes causes result to exceed %<INT_MAX%>%<%.*s%> directive output between %wu and %wu bytes exceeds %<INT_MAX%>%<%.*s%> directive output between %wu and %wu bytes exceeds minimum required size of 4095%<%.*s%> directive output between %wu and %wu bytes may cause result to exceed %<INT_MAX%>%<%.*s%> directive output between %wu and %wu bytes may exceed minimum required size of 4095%<%.*s%> directive output may be truncated writing %wu byte into a region of size %wu%<%.*s%> directive output may be truncated writing %wu bytes into a region of size %wu%<%.*s%> directive output may be truncated writing %wu byte into a region of size between %wu and %wu%<%.*s%> directive output may be truncated writing %wu bytes into a region of size between %wu and %wu%<%.*s%> directive output may be truncated writing %wu or more bytes into a region of size %wu%<%.*s%> directive output may be truncated writing %wu or more bytes into a region of size between %wu and %wu%<%.*s%> directive output may be truncated writing between %wu and %wu bytes into a region of size %wu%<%.*s%> directive output may be truncated writing between %wu and %wu bytes into a region of size between %wu and %wu%<%.*s%> directive output may be truncated writing likely %wu or more bytes into a region of size %wu%<%.*s%> directive output may be truncated writing likely %wu or more bytes into a region of size between %wu and %wu%<%.*s%> directive output may be truncated writing up to %wu bytes into a region of size %wu%<%.*s%> directive output may be truncated writing up to %wu bytes into a region of size between %wu and %wu%<%.*s%> directive output of %wu bytes causes result to exceed %<INT_MAX%>%<%.*s%> directive output of %wu bytes exceeds %<INT_MAX%>%<%.*s%> directive output of %wu bytes exceeds minimum required size of 4095%<%.*s%> directive output truncated writing %wu byte into a region of size %wu%<%.*s%> directive output truncated writing %wu bytes into a region of size %wu%<%.*s%> directive output truncated writing %wu byte into a region of size between %wu and %wu%<%.*s%> directive output truncated writing %wu bytes into a region of size between %wu and %wu%<%.*s%> directive output truncated writing %wu or more bytes into a region of size %wu%<%.*s%> directive output truncated writing %wu or more bytes into a region of size between %wu and %wu%<%.*s%> directive output truncated writing between %wu and %wu bytes into a region of size %wu%<%.*s%> directive output truncated writing between %wu and %wu bytes into a region of size between %wu and %wu%<%.*s%> directive output truncated writing likely %wu or more bytes into a region of size %wu%<%.*s%> directive output truncated writing likely %wu or more bytes into a region of size between %wu and %wu%<%.*s%> directive output truncated writing up to %wu bytes into a region of size %wu%<%.*s%> directive output truncated writing up to %wu bytes into a region of size between %wu and %wu%<%.*s%> directive precision out of range%<%.*s%> directive width out of range%<%.*s%> directive writing %wu byte into a region of size %wu%<%.*s%> directive writing %wu bytes into a region of size %wu%<%.*s%> directive writing %wu byte into a region of size between %wu and %wu%<%.*s%> directive writing %wu bytes into a region of size between %wu and %wu%<%.*s%> directive writing %wu or more bytes into a region of size %wu%<%.*s%> directive writing %wu or more bytes into a region of size between %wu and %wu%<%.*s%> directive writing between %wu and %wu bytes into a region of size %wu%<%.*s%> directive writing between %wu and %wu bytes into a region of size between %wu and %wu%<%.*s%> directive writing likely %wu or more bytes into a region of size %wu%<%.*s%> directive writing likely %wu or more bytes into a region of size between %wu and %wu%<%.*s%> directive writing up to %wu bytes into a region of size %wu%<%.*s%> directive writing up to %wu bytes into a region of size between %wu and %wu%<%D::%D%> is not a class member%<%D::%D%> is not a member of %qT%<%E (%E)%> attribute ignored on functions declared %qs%<%E (%E)%> attribute ignored with deallocation functions declared %qs%<%E::%E%> has not been declared%<%E::%E%> has not been declared; did you mean %<%E::%s%>?%<%E::%E%> is not a class or namespace%<%E::%E%> is not a class, namespace, or enumeration%<%E::%E%> is not a type%<%E::%E%> scoped attribute directive ignored%<%T%s%D%> names destructor%<%T::%D%> names constructor in %qT%<%T::%E%> has not been declared%<%T::%E%> is not a type%<%T::%E%> names the constructor, not the type%<%c%> is not a valid character in an identifier%<%c%> is not a valid first character for an identifier%<%c%E%> not found in protocol(s)%<%s %E%> declared inside parameter list will not be visible outside of this definition or declaration%<%s %s%> construct not closely nested inside of %qs%<%s + %s%> at %L must be less than or equal to BIT_SIZE(%qs)%<%s taskgroup%> construct not closely nested inside of %<taskgroup%> region%<%s%s%>: expected KEY=VALUE-style parameter for format %qs after %qs; got %qs%<%s%s%>: missing required key %qs for format %qs; try %<%s%s:%s=%s%>%<%s%s%>: unexpected value %qs for key %qs; expected %qs or %qs%<%s%s%>: unexpected value %qs for key %qs; known values: %e%<%s%s%>: unknown key %qs for format %qs; known keys: %e%<%s%s%>: unrecognized format %qs; known formats: %e%<%s%s%s%s%s%> directive mentioned in both %<absent%> and %<contains%> clauses%<%s%s%s%s%s%> directive mentioned multiple times in %qs clauses%<%s(%s)%> is only allowed in %<omp ordered%>%<%s=%s%> and %<%s-%s%> are incompatible%<&%> constraint used with no register class%<&%> not allowed by itself in line %d%<&%> should come before %<...%>%<&&%> not valid in GIMPLE%<)%> expected at %C%<*%> in boolean context, suggest %<&&%> instead%<*this%> capture only available with %<-std=c++17%> or %<-std=gnu++17%>%<-%> modifier used inside of a function%<-%s%> conflicts with the other architecture options, which specify a %s processor%<--help%> argument %q.*s is ambiguous, please be more specific%<--param constructive-interference-size=%d%> is greater than %<--param l1-cache-line-size=%d%>%<--param constructive-interference-size=%d%> is less than %d%<--param destructive-interference-size=%d%> is less than %<--param l1-cache-line-size=%d%>%<--param destructive-interference-size=%d%> is less than %d%<-I-%> specified twice%<-MF%> and %<-fdeps-file=%> cannot share an output file %s: %m%<-MG%> may only be used with %<-M%> or %<-MM%>%<-W%serror=%s%>: no option %<-%s%>%<-W%serror=%s%>: no option %<-%s%>; did you mean %<-%s%>?%<-Wabi%> warns about differences from the most up-to-date ABI, which is also used by default%<-Wabi%> won%'t warn about anything%<-Wabi=1%> is not supported, using =2%<-Werror=%> argument %qs is not valid for %s%<-Werror=%s%>: %<-%s%> is not an option that controls warnings%<-Wformat-contains-nul%> ignored without %<-Wformat%>%<-Wformat-extra-args%> ignored without %<-Wformat%>%<-Wformat-nonliteral%> ignored without %<-Wformat%>%<-Wformat-security%> ignored without %<-Wformat%>%<-Wformat-y2k%> ignored without %<-Wformat%>%<-Wformat-zero-length%> ignored without %<-Wformat%>%<-Wmisleading-indentation%> is disabled from this point onwards, since column-tracking was disabled due to the size of the code/headers%<-Wstrict-flex-arrays%> is ignored when %<-fstrict-flex-arrays%> is not present%<-f%s%> and %<%s=%s%> are incompatible%<-f%s%> is not supported with CONST16 instructions%<-f%s%> not supported: ignored%<-f%sleading-underscore%> not supported on this target machine%<-fPIC%> and %<-fpic%> are not supported on this target%<-fPIC%> is not supported%<-fPIC%>/%<-fpic%> not supported for this target%<-fPIE%> is not supported%<-fabi-compat-version=1%> is not supported, using =2%<-fabi-version=1%> is no longer supported%<-fabi-version=12%> (GCC 8.1) accidentally changes the calling convention for %qT%<-fabi-version=13%> (GCC 8.2) fixes the calling convention for %qT, which was accidentally changed in 8.1%<-falign-%s%> is not between 0 and %d%<-falign-labels=%d%> is not supported%<-falign-loops=%d%> is not supported%<-faligned-new=%d%> is not a power of two%<-fasan-shadow-offset%> should only be used with %<-fsanitize=kernel-address%>%<-fassociative-math%> disabled; other options take precedence%<-fcall-saved-REG%> is not supported for out registers%<-fcf-protection%> is not compatible with this target%<-fcf-protection=branch%> is not supported for this target%<-fcf-protection=full%> is not enabled by %<-fhardened%> because it was specified on the command line%<-fcf-protection=full%> is not supported for this target%<-fcf-protection=return%> is not supported for this target%<-fcontract-assumption-mode=%> cannot be mixed with p1332/p1429%<-fcontract-assumption-mode=%> must be %<on%> or %<off%>%<-fcontract-build-level=%> cannot be mixed with p1332/p1429%<-fcontract-build-level=%> must be off|default|audit%<-fcontract-continuation-mode=%> cannot be mixed with p1332/p1429%<-fcontract-continuation-mode=%> must be %<on%> or %<off%>%<-fcontract-level=%> too many custom roles%<-fcontract-role=%> cannot be mixed with std/p1429 contract flags%<-fcontract-role=%> must be in the form role:semantics%<-fcontract-role=%> semantics must include default,audit,axiom values%<-fcontract-semantic=%> cannot be mixed with std/p1332 contract flags%<-fcontract-semantic=%> cannot find default role%<-fcontract-semantic=%> level must be default, audit, or axiom%<-fcontract-semantic=%> must be in the form level:semantic%<-fconvert=r16_ieee%> or %<-fconvert=r16_ibm%> not supported on this architecture%<-fd-lines-as-code%> has no effect in free form%<-fd-lines-as-comments%> has no effect in free form%<-fdata-sections%> not supported for this target%<-fdbg-cnt=%s:%d-%d%> has smaller upper limit than the lower%<-fdeps-format=%> unknown format %qs%<-fdirectives-only%> is incompatible with %<-Wunused-macros%>%<-fdirectives-only%> is incompatible with %<-traditional%>%<-femit-struct-debug-detailed=dir:...%> must allow at least as much as %<-femit-struct-debug-detailed=ind:...%>%<-fexcess-precision=16%> for Ada%<-fexcess-precision=16%> for Fortran%<-fexcess-precision=16%> is not compatible with %<-mfpmath=387%>%<-fexcess-precision=16%> is not supported on this target%<-fexcess-precision=standard%> for Ada%<-fexcess-precision=standard%> for Fortran%<-ffunction-sections%> not supported for this target%<-fhandle-exceptions%> has been renamed %<-fexceptions%> (and is now on by default)%<-fhardened%> not supported for this target%<-fimplicit-constexpr%> only affects %<inline%> functions%<-fipa-modref%> is incompatible with %qs%<-fipa-reorder-for-locality%> is incompatible with an explicit %qs option%<-flinker-output=rel%> and %<-fltrans%> are mutually exclusive%<-fmodule-only%> used for non-interface%<-fmoduleinfo%> is not supported on this target%<-fno-fat-lto-objects%> are supported only with linker plugin%<-fno-gnu89-inline%> is only supported in GNU99 or C99 mode%<-fobjc-abi-version%> %d is not supported for 32 bit targets with %<-fnext-runtime%>%<-fobjc-abi-version%> 2 must be used for 64 bit targets with %<-fnext-runtime%>%<-fobjc-exceptions%> is required to enable Objective-C exception syntax%<-fobjc-gc%> is ignored for %<-fgnu-runtime%>%<-fobjc-sjlj-exceptions%> is ignored for %<-fgnu-runtime%>%<-fobjc-sjlj-exceptions%> is ignored for %<-fnext-runtime%> when %<-fobjc-abi-version%> greater than 1%<-fobjc-sjlj-exceptions%> is the only supported exceptions system for %<-fnext-runtime%> with %<-fobjc-abi-version%> argument less than 2%<-foffload-abi-host-opts%> not specified%<-foffload-abi-host-opts%> not specified.%<-foffload-abi-host-opts%> specified multiple times%<-fonly=%> argument is different from first input file name%<-fopenacc-dim%> operand is malformed at %qs%<-fpic%> and %<-fPIC%> not supported without %<-mdsbt%> on this target%<-fpic%> and %<-mapcs-reent%> are incompatible%<-fpic%> is not supported%<-fpie%> is not supported%<-fprefetch-loop-arrays%> is not supported with %<-Os%>%<-fprefetch-loop-arrays%> not supported for this target%<-fprefetch-loop-arrays%> not supported for this target (try %<-march%> switches)%<-frecord-gcc-switches%> is not supported by the current target%<-freorder-blocks-and-partition%> does not support unwind info on this architecture%<-freorder-blocks-and-partition%> does not work on this architecture%<-freorder-blocks-and-partition%> does not work with exceptions on this architecture%<-freorder-blocks-and-partition%> not supported on this architecture%<-fsanitize-address-use-after-scope%> requires %<-fstack-reuse=none%> option%<-fsanitize-recover=%s%> is not supported%<-fsanitize-trap=%s%> is not supported%<-fsanitize=%s%> is incompatible with %<-fsanitize=%s%>%<-fsanitize=address%> and %<-fsanitize=kernel-address%> are not supported for this target%<-fsanitize=address%> not supported for this target%<-fsanitize=all%> option is not valid%<-fsanitize=kernel-address%> with stack protection is not supported without %<-fasan-shadow-offset=%> for this target%<-fsanitize=pointer-compare%> must be combined with %<-fsanitize=address%> or %<-fsanitize=kernel-address%>%<-fsanitize=pointer-subtract%> must be combined with %<-fsanitize=address%> or %<-fsanitize=kernel-address%>%<-fsanitize=shadow-call-stack%> not supported in current platform%<-fsanitize=shadow-call-stack%> requires %<-ffixed-x18%>%<-fsanitize=shadow-call-stack%> requires %<-fno-exceptions%>%<-fsplit-stack%> currently only supported on GNU/Linux%<-fsplit-stack%> currently only supported on PowerPC64 GNU/Linux with glibc-2.18 or later%<-fsplit-stack%> does not support 2 register parameters for a nested function%<-fsplit-stack%> does not support 3 register parameters%<-fsplit-stack%> does not support fastcall with nested function%<-fsplit-stack%> is not supported by this compiler configuration%<-fsplit-stack%> requires assembler support for CFI directives%<-fstack-check=%> and %<-fstack-clash-protection%> are mutually exclusive; disabling %<-fstack-check=%>%<-fstack-check=specific%> for Thumb-1%<-fstack-check=specific%> not implemented for MIPS16%<-fstack-clash-protection%> is not enabled by %<-fhardened%> because %<-fstack-check%> was specified on the command line%<-fstack-clash-protection%> is not supported on targets where the stack grows from lower to higher addresses%<-fstack-limit-%> options are ignored with %<-mfdpic%>; use %<-mstack-check-l1%>%<-fstack-limit-%> options are not supported on this cpu%<-fstack-protector%> does not work on this architecture%<-fstack-protector%> not supported for this target%<-fstack-protector-strong%> is not enabled by %<-fhardened%> because it was specified on the command line%<-ftrivial-auto-var-init=zero%> is not enabled by %<-fhardened%> because it was specified on the command line%<-fuse-cxa-atexit%> is not supported for msp430-elf%<-fuse-linker-plugin%>, but %s not found%<-fwpa%> and %<-fltrans%> are mutually exclusive%<-g%> is only supported when using GAS on this processor%<-g%> option disabled%<-g%> with %<-mno-apcs-frame%> may not give sensible debugging%<-g3%> is not supported by the debug linker in use (set to 2)%<-gas-locview-support%> is forced disabled without %<-gas-loc-support%>%<-gdwarf%s%> is ambiguous; use %<-gdwarf-%s%> for DWARF version or %<-gdwarf%> %<-g%s%> for debug level%<-gdwarf-6%> is output as version 5 with incompatibilities%<-ginline-points%> is forced disabled without %<-gstatement-frontiers%>%<-ginternal-reset-location-views%> is forced disabled without %<-gvariable-location-views%>%<-gnat%> misspelled as %<-gant%>%<-gsplit-dwarf%> is not supported on this platform, ignored%<-gsplit-dwarf%> is not supported with LTO, disabling%<-iplugindir%> option not passed from the gcc driver%<-m%s%> not supported in this configuration%<-m%s%> overrides %<-m%s=%s%>, adjusting ABI to %qs%<-m%s=%s%> conflicts with %qs, which requires %<%s%s%>%<-m32%> conflicts with %<-arch ppc64%> (%<-m32%> ignored)%<-m32%> conflicts with %<-arch x86_64%> (%<-m32%> ignored)%<-m64%> requires a PowerPC64 cpu%<-m96bit-long-double%> is not compatible with this target%<-mabi=%s%> not supported with %<-fsanitize=address%>%<-mabi=%s%> not supported with %<-fsanitize=kernel-address%>%<-mabi=%s%> not supported with %<-fsanitize=thread%>%<-mabi=2fp+%> option only support when FPU available, must be enable %<-mext-fpu-sp%> or %<-mext-fpu-dp%>%<-mabi=ilp32%> is deprecated%<-mabi=ms%> not supported with X32 ABI%<-maix64%> required: 64-bit computation with 32-bit addressing not yet supported%<-maix64%> requires PowerPC64 architecture remain enabled%<-malign-functions%> is obsolete, use %<-falign-functions%>%<-malign-functions=%d%> is not between 0 and %d%<-malign-jumps%> is obsolete, use %<-falign-jumps%>%<-malign-jumps=%d%> is not between 0 and %d%<-malign-loops%> is obsolete, use %<-falign-loops%>%<-malign-loops=%d%> is not between 0 and %d%<-mapcs-stack-check%> incompatible with %<-mno-apcs-frame%>%<-mapx-features=%> option is not supported for 32-bit code%<-mapxf%> is not supported for 32-bit code%<-march=%> must be specified%<-march=%s%> is not compatible with the selected ABI%<-march=%s%> requires %<-mfp32%>%<-march=%s%>: %s must separate with %<_%>%<-march=%s%>: ISA string must begin with rv32 or rv64%<-march=%s%>: Not single-letter extension. %<%c%>%<-march=%s%>: expect number after %<%dp%>%<-march=%s%>: extension %qs appear more than one time%<-march=%s%>: extension %qs is unsupported standard single letter extension%<-march=%s%>: extension %qs starts with 's' but is unsupported standard supervisor extension%<-march=%s%>: extension %qs starts with 'x' but is unsupported non-standard extension%<-march=%s%>: extension %qs starts with 'z' but is unsupported standard extension%<-march=%s%>: first ISA subset must be %<e%>, %<i%> or %<g%>%<-march=%s%>: for %<%s%dp%dp?%>, version number with more than 2 level is not supported%<-march=%s%>: h extension requires i extension%<-march=%s%>: i, e or g must be the first extension%<-march=%s%>: name of %s must be more than 1 letter%<-march=%s%>: rv%de is not a valid base ISA%<-march=%s%>: xtheadvector conflicts with vector extension or its sub-extensions%<-march=%s%>: z*inx conflicts with floating-point extensions%<-march=%s%>: zcd conflicts with zcmp%<-march=%s%>: zcd conflicts with zcmt%<-march=%s%>: zcf extension supports in rv32 only%<-masm=intel%> not supported in this configuration%<-mavx10.1%> is aliased to 512 bit since GCC14.3 and GCC15.1 while %<-mavx10.1-256%> and %<-mavx10.1-512%> will be deprecated in GCC 16 due to all machines 512 bit vector size supported%<-max-stackframe=%d%> is not usable, not between 0 and %d%<-mbackchain%> %<-mpacked-stack%> %<-mhard-float%> are not supported in combination%<-mbranch-cost=%d%> is not between 0 and 5%<-mcall-aixdesc%> incompatible with %<-mabi=elfv2%>%<-mcall-ms2sysv-xlogues%> is not compatible with %s%<-mcall-ms2sysv-xlogues%> isn%'t currently supported with SEH%<-mcmodel%> incompatible with other toc options%<-mcmodel=%> is not supported in 32-bit mode%<-mcode-region=either%> requires the large memory model (%<-mlarge%>)%<-mcode-region=upper%> requires the large memory model (%<-mlarge%>)%<-mcorea%> and %<-mcoreb%> cannot be used together%<-mcorea%> should be used with %<-mmulticore%>%<-mcoreb%> should be used with %<-mmulticore%>%<-mcpu=%> is deprecated; use %<-mtune=%> or %<-march=%> instead%<-mcpu=%s%> conflicts with %<-march=%s%>%<-mcpu=%s%> has invalid silicon revision%<-mcpu=%s%> is not valid%<-mcpu=%s%>: unknown CPU%<-mdata-region=either%> requires the large memory model (%<-mlarge%>)%<-mdata-region=upper%> requires the large memory model (%<-mlarge%>)%<-mdiv%> requires %<-march%> to subsume the %<M%> extension%<-mdouble-float%> ignored without %<-mhard-float%>%<-mdynamic-no-pic%> overrides %<-fpic%>, %<-fPIC%>, %<-fpie%> or %<-fPIE%>%<-mes0%> can only be used with C%<-mevex512%> will be deprecated in GCC 16 due to all machines 512 bit vector size supported%<-mexr%> is used without %<-ms%>%<-mexr%> is used without %<-ms%> or %<-msx%>%<-mfdivdu%> ignored without %<-mhard-float%>%<-mfdpic%> is not supported, please use a bfin-linux-uclibc target%<-mfentry%> is supported only for 64-bit CPUs%<-mfentry%> isn%'t supported for 32-bit in combination with %<-fpic%>%<-mfloat-abi=hard%> and VFP%<-mfloat-abi=hard%>: selected architecture lacks an FPU%<-mfpxx%> can only be used with the o32 ABI%<-mfunction-return%> and %<-fcf-protection%> are not compatible%<-mfunction-return=%s%> and %<-mcmodel=large%> are not compatible%<-mfused-madd%> is deprecated; use %<-ffp-contract=%> instead%<-mgp32%> and %<-mfp64%> can only be combined if the target supports the mfhc1 and mthc1 instructions%<-mgp32%> and %<-mfp64%> can only be combined when using the o32 ABI%<-mgp32%> used with a 64-bit ABI%<-mgp64%> used with a 32-bit ABI%<-mgp64%> used with a 32-bit processor%<-mhard-dfp%> cannot be used in conjunction with %<-msoft-float%>%<-mhard-float%> is not supported by the selected CPU%<-mincoming-stack-boundary=%d%> is not between %d and 12%<-mindirect-branch%> and %<-fcf-protection%> are not compatible%<-mindirect-branch=%s%> and %<-mcmodel=large%> are not compatible%<-mintel-syntax%> and %<-mno-intel-syntax%> are deprecated; use %<-masm=intel%> and %<-masm=att%> instead%<-mips3d%> requires %<-mpaired-single%>%<-misr-secure=%d%> argument not in between 0 and 3%<-misr-vector-size=%d%> argument must be 4 or 16%<-mlam=%> option: [u48|u57] not supported for 32-bit code%<-mlam=u48%> is not compatible with Hardware-assisted AddressSanitizer, override to %<-mlam=u57%>%<-mlarge%> requires a 430X-compatible %<-mmcu=%>%<-mlong-double-64%> not allowed with %<-m64%>%<-mloongson-ext2%> must be used with %<-mloongson-ext%>%<-mloongson-mmi%> must be used with %<-mhard-float%>%<-mmsa%> must be used with %<-mfp64%> and %<-mhard-float%>%<-mmul=g13%> cannot be used with %<-mcpu=g10%>%<-mmul=g13%> cannot be used with %<-mcpu=g14%>%<-mmul=g14%> cannot be used with %<-mcpu=g10%>%<-mmul=g14%> cannot be used with %<-mcpu=g13%>%<-mmulticore%> can only be used with BF561%<-mn%> is not supported for linux targets%<-mno-%s%> turns off %<-m%s%>%<-mno-allow-string-insns%> forbids the generation of the RMPA instruction%<-mno-altivec%> disables vsx%<-mno-avx10.1-256, -mno-avx10.1-512%> cannot disable AVX512 instructions when %<-mavx512XXX%> in GCC 15, behavior will change to it will disable all the instructions in GCC 16%<-mno-avx512XXX%> cannot disable AVX10 instructions when AVX10 is available in GCC 15, behavior will change to it will disable that part of AVX512 instructions since GCC 16%<-mno-dpfp-lrsr%> supported only with %<-mdpfp%>%<-mno-evex512%> or %<-mno-avx512XXX%> cannot disable AVX10 instructions when AVX10.1-512 is available in GCC 15, behavior will change to it will disable that part of AVX512 instructions since GCC 16%<-mno-exr%> is valid only with %<-ms%> or %<-msx%> - option ignored%<-mno-fentry%> isn%'t compatible with SEH%<-mno-gpopt%> needs %<-mexplicit-relocs%>%<-mno-mpy%> supported only for ARC700 or ARCv2%<-mno-pic-data-is-text-relative%> cannot be used without %<-fpic%>/%<-fPIC%>%<-mnop-mcount%> is not compatible with this target%<-mnop-mcount%> is not implemented for %<-fno-plt%>%<-mpcrel%> %<-fPIC%> is not currently supported on selected cpu%<-mpic-register=%> is useless without %<-fpic%>%<-mpic-symbol-stubs%> is not required for 64-bit code (ignored)%<-mpreferred-stack-boundary%> is not supported for this target%<-mpreferred-stack-boundary=%d%> is not between %d and %d%<-mpreferred-stack-boundary=%d%> must be between %d and %d%<-mquad-memory%> is not available in little endian mode%<-mquad-memory%> requires 64-bit mode%<-mquad-memory-atomic%> requires 64-bit mode%<-mregparm%> is ignored for Intel MCU psABI%<-mregparm%> is ignored in 64-bit mode%<-mregparm=%d%> is not between 0 and %d%<-mrelax%> is only supported for RTP PIC%<-mriscv-attribute%> RISC-V ELF attribute requires GNU as 2.32 [%<-mriscv-attribute%>]%<-mrop-protect%> requires %<-mcpu=power8%> or later%<-mrop-protect%> requires the ELFv2 ABI%<-mrtd%> is ignored in 64bit mode%<-ms2600%> is used without %<-ms%>%<-mshared-library-id=%> specified without %<-mid-shared-library%>%<-mshared-library-id=%s%> is not between 0 and %d%<-msmart%> is incompatible with %<-mhigh-registers%>%<-mspfp_fast%> not available on ARC600 or ARC601%<-msse5%> was removed%<-msseregparm%> used without SSE enabled%<-mstack-guard%> implies use of %<-mstack-size%>%<-mstack-protector-guard=tls%> needs a hardware TLS register%<-mstringop-strategy=rep_8byte%> not supported for 32-bit code%<-mtpf-trace-hook-epilogue-check%> requires integer in range 0-4095%<-mtpf-trace-hook-epilogue-target%> requires integer in range 0-4095%<-mtpf-trace-hook-prologue-check%> requires integer in range 0-4095%<-mtpf-trace-hook-prologue-target%> requires integer in range 0-4095%<-mtune=%> expects mn10300, am33, am33-2, or am34%<-mtune=x86-64%> is deprecated; use %<-mtune=k8%> or %<-mtune=generic%> instead as appropriate%<-muintr%> not supported for 32-bit code%<-mvrsave=no%> is deprecated; use %<-mno-vrsave%> instead%<-mvrsave=yes%> is deprecated; use %<-mvrsave%> instead%<-mvsx%> and %<-mavoid-indexed-addresses%> are incompatible%<-mvsx%> and %<-mno-altivec%> are incompatible%<-mvsx%> and %<-msoft-float%> are incompatible%<-mvsx%> needs indexed addressing%<-mvsx%> requires hardware floating-point%<-mxl-multiply-high%> can be used only with %<-mcpu=v6.00.a%> or greater%<-mxl-multiply-high%> requires %<-mno-xl-soft-mul%>%<-mxl-reorder%> can be used only with %<-mcpu=v8.30.a%> or greater%<-mxl-reorder%> requires %<-mxl-pattern-compare%> for %<-mcpu=v8.30.a%>%<-mxnack=on%> is incompatible with %<-march=%s%>%<-pipe%> ignored because %<-save-temps%> specified%<-pipe%> not supported%<-x %s%> after last input file has no effect%<.%s%> designator used multiple times in the same initializer list%<...%> handler must be the last handler for its try block%<...%> not allowed in designated initializer list%<:%> constraint mixed with other constraints%<:%> constraint operand is not address of a function or non-automatic variable%<:%> constraint used for output operand%<::%> needed in PROCEDURE binding with explicit target at %C%<::%D%> has not been declared%<::%D%> has not been declared; did you mean %qs?%<::%E%> has not been declared%<::%E%> is not a class or namespace%<::%E%> is not a class, namespace, or enumeration%<::%E%> is not a type%<::main%> cannot be deleted%<::main%> must return %<int%>%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>%<<::%> cannot begin a template-argument list%<<<%> in boolean context, did you mean %<<%>?%<=%>options missing after %<-foffload-options=%>target%<=> target%> is invalid for DEFERRED binding at %C%<>>%> operator is treated as two right angle brackets in C++11%<>>%> should be %<> >%> within a nested template argument list%<?:%> using integer constants in boolean context%<?:%> using integer constants in boolean context, the expression will always evaluate to %<true%>%<@catch%> parameter cannot be protocol-qualified%<@catch%> parameter is not a known Objective-C class type%<@dynamic%> is not available in Objective-C 1.0%<@dynamic%> not in @implementation context%<@dynamic%> requires the @interface of the class to be available%<@encode%> must specify a type as an argument%<@end%> missing in implementation context%<@end%> must appear in an @implementation context%<@interface%> of class %qE not found%<@optional%> is allowed in @protocol context only%<@optional%> is not available in Objective-C 1.0%<@package%> is not available in Objective-C 1.0%<@package%> presently has the same effect as %<@public%>%<@property%> is not available in Objective-C 1.0%<@required%> is allowed in @protocol context only%<@required%> is not available in Objective-C 1.0%<@synchronized%> argument is not an object%<@synthesize%> cannot be used in categories%<@synthesize%> is not available in Objective-C 1.0%<@synthesize%> not in @implementation context%<@synthesize%> requires the @interface of the class to be available%<@throw%> (rethrow) used outside of a %<@catch%> block%<@throw%> argument is not an object%<@try%> without %<@catch%> or %<@finally%>%<COLLECT_GCC%> must be set%<CPU_TYPE%> and %<MPY_TYPE%> column headings are missing from %<devices.csv%>%<CPU_TYPE%> column heading is missing from %<devices.csv%>%<CTABLE_ENTRY%> base address is not a multiple of 256%<CTABLE_ENTRY%> index %wd is not valid%<DEFERRED_INIT%> calls should have same constant size for the first argument and LHS%<DETACH%> clause at %L must not be used together with %<MERGEABLE%> clause%<FULL%> clause at %C must not be used together with %<PARTIAL%> clause%<G0%> in format at %L%<GCC ivdep%> directive not at the start of a loop at %C%<GCC novector%> directive not at the start of a loop at %C%<GCC unroll%> directive not at the start of a loop at %C%<GCC unroll%> directive requires a non-negative integral constant less than or equal to %u at %C%<GCC vector%> directive not at the start of a loop at %C%<GRAINSIZE%> clause at %L must not be used together with %<NUM_TASKS%> clause%<HLE_ACQUIRE%> not used with %<ACQUIRE%> or stronger memory model%<HLE_RELEASE%> not used with %<RELEASE%> or stronger memory model%<LEXER_DEBUGGING_ENABLED_P%> is not set to true%<MOLD%> argument of %<TRANSFER%> intrinsic at %L is an array and shall not have storage size 0 when %<SOURCE%> argument has size greater than 0%<MOLD%> argument of %<TRANSFER%> intrinsic at %L must not be %s%<MOLD%> argument of %<TRANSFER%> intrinsic at %L must not be a %s%<MPY_TYPE%> column heading is missing from %<devices.csv%>%<OMP DISPATCH%> directive at %L cannot be followed by a procedure pointer%<OMP DISPATCH%> directive at %L must be followed by a procedure call with optional assignment%<OMP DISPATCH%> directive must be followed by a procedure call with optional assignment at %C%<PRINT_OPERAND%> null pointer%<PRINT_OPERAND%>: Unknown punctuation %<%c%>%<PRINT_OPERAND_ADDRESS%>, null pointer%<REDUCTION%> clause at %L must not be used together with %<NOGROUP%> clause%<SOURCE%> argument of %<TRANSFER%> intrinsic at %L must not be a %s%<TREE_PURPOSE%> is non-NULL in %<TYPE_ARG_TYPES%> list%<TYPE_ARRAY_MAX_SIZE%> not %<INTEGER_CST%>%<TYPE_BINFO%> is not %<TREE_BINFO%>%<TYPE_BINFO%> type is not %<TYPE_MAIN_VARIANT%>%<TYPE_CACHED_VALUES%> is not %<TREE_VEC%>%<TYPE_CACHED_VALUES_P%> is %i while %<TYPE_CACHED_VALUES%> is %p%<TYPE_CACHED_VALUES_P%> is set while it should not be%<TYPE_CANONICAL%> has different %<TYPE_CANONICAL%>%<TYPE_CANONICAL%> is not compatible%<TYPE_CANONICAL%> of main variant is not main variant%<TYPE_FIELDS%> defined in incomplete type%<TYPE_LANG_SLOT_1 (binfo)%> field is non-NULL%<TYPE_MAIN_VARIANT%> has different %<TYPE_MAIN_VARIANT%>%<TYPE_MAX_VALUE_RAW%> non-NULL%<TYPE_METHOD_BASETYPE%> is not main variant%<TYPE_METHOD_BASETYPE%> is not record nor union%<TYPE_MODE%> of %<TYPE_CANONICAL%> is not compatible%<TYPE_NEXT_PTR_TO%> is not %<POINTER_TYPE%>%<TYPE_NEXT_REF_TO%> is not %<REFERENCE_TYPE%>%<TYPE_OFFSET_BASETYPE%> is not record nor union%<TYPE_VALUES_RAW%> field is non-NULL%<TYPE_VFIELD%> is not %<FIELD_DECL%> nor %<TREE_LIST%>%<V%> modifier on non-integer register%<[%E] =%> used in a GNU-style designated initializer for class %qT%<[*]%> not allowed in other than function prototype scope%<[*]%> not in a declaration%<[[omp::directive(%s)]]%> must be the only specified attribute on a statement%<[super ...]%> must appear in a method context%<_Alignas%> specifiers cannot reduce alignment of %qE%<_Alignas%> specifiers cannot reduce alignment of compound literal%<_Alignas%> specifiers cannot reduce alignment of unnamed field%<_Atomic%> %qD in %<aligned%> clause%<_Atomic%> %qD in %<firstprivate%> clause on %<target%> construct%<_Atomic%> %qD in %<linear%> clause%<_Atomic%> %qD in %qs clause%<_Atomic%> %qD in implicit %<firstprivate%> clause on %<target%> construct%<_Atomic%> %qD in implicit %<map%> clause%<_Atomic%> %qE in %<reduction%> clause%<_Atomic%> %qE in %qs clause%<_Atomic%> applied to a qualified type%<_Atomic%> expression in %<#pragma omp atomic%>%<_Atomic%> in Objective-C%<_Atomic%> iteration variable %qE%<_Atomic%> qualified type in %<#pragma omp declare reduction%>%<_Atomic%>-qualified array type%<_Atomic%>-qualified function type%<_Atomic%>-qualified parameter type %qT of %q+D%<_Atomic%>-qualified return type of %qD%<_BitInt%> argument %qE is larger than %<BITINT_MAXWIDTH%> %qd%<_BitInt%> argument %qE is not a positive integer constant expression%<_BitInt%> argument is not an integer constant expression%<_BitInt(%d)%> is not supported on this target%<_Complex _BitInt(%d)%> unsupported%<_FORTIFY_SOURCE%> is not enabled by %<-fhardened%> because it was specified in %<-D%> or %<-U%>%<_FORTIFY_SOURCE%> is not enabled by %<-fhardened%> because optimizations are turned off%<_Float%d%s%> is not supported on this target%<_GLIBCXX_ASSERTIONS%> is not enabled by %<-fhardened%> because it was specified in %<-D%> or %<-U%>%<_Generic%> association has variable length type%<_Generic%> selector matches multiple associations%<_Generic%> selector of type %qT is not compatible with any association%<_Generic%> specifies two compatible types%<_Noreturn%> in empty declaration%<_Sat%> is used without %<_Fract%> or %<_Accum%>%<__BELOW100__%> attribute not allowed with auto storage class%<__BELOW100__%> attribute only applies to variables%<__GIMPLE%> only valid with %<-fgimple%>%<__RTL%> function cannot be compiled with %<-flto%>%<__alignof%> applied to a bit-field%<__auto_type%> followed by %<[[]]%> attributes%<__auto_type%> requires a plain identifier as declarator%<__auto_type%> used with a bit-field initializer%<__bfloat16%> is redefined from typedef %<short%> to real %<__bf16%> since GCC 13.1, be careful of implicit conversion between %<__bf16%> and %<short%>; an explicit bitcast may be needed here%<__builtin_arc_aligned%> with non-constant alignment%<__builtin_bit_cast%> destination type %qT is an array type%<__builtin_bit_cast%> destination type %qT is not trivially copyable%<__builtin_bit_cast%> source size %qE not equal to destination type size %qE%<__builtin_bit_cast%> source type %qT is not trivially copyable%<__builtin_complex%> operand not of real binary floating-point type%<__builtin_complex%> operands of different types%<__builtin_convertvector%> first argument must be an integer or floating vector%<__builtin_convertvector%> number of elements of the first argument vector and the second argument vector type should be the same%<__builtin_convertvector%> second argument must be an integer or floating vector type%<__builtin_eh_return%> not supported on this target%<__builtin_has_attribute%> with dependent argument not supported yet%<__builtin_is_corresponding_member%> argument is not pointer to member%<__builtin_is_corresponding_member%> needs two arguments%<__builtin_is_corresponding_member%> not well defined for anonymous unions%<__builtin_is_pointer_interconvertible_with_class%> argument is not pointer to member%<__builtin_is_pointer_interconvertible_with_class%> needs a single argument%<__builtin_longjmp%> second argument must be 1%<__builtin_next_arg%> called without an argument%<__builtin_rx_%s%> takes %<C%>, %<Z%>, %<S%>, %<O%>, %<I%>, or %<U%>%<__builtin_saveregs%> not supported by this subtarget%<__builtin_saveregs%> not supported by this target%<__builtin_set_thread_pointer%> is not supported on this target%<__builtin_shuffle%> argument vector(s) inner type must have the same size as inner type of the mask%<__builtin_shuffle%> argument vectors must be of the same type%<__builtin_shuffle%> arguments must be vectors%<__builtin_shuffle%> last argument must be an integer vector%<__builtin_shuffle%> number of elements of the argument vector(s) and the mask vector should be the same%<__builtin_shufflevector%> argument vectors must have the same element type%<__builtin_shufflevector%> arguments must be constant size vectors%<__builtin_shufflevector%> arguments must be vectors%<__builtin_shufflevector%> must specify a result with a power of two number of elements%<__builtin_thread_pointer%> is not supported on this target%<__builtin_unreachable%> or %<__builtin_trap%> call with arguments%<__delay_cycles%> is limited to 32-bit loop counts%<__delay_cycles%> only takes constant arguments%<__delay_cycles%> only takes non-negative cycle counts%<__fp16%> and no ldrh%<__gcc_host_wide_int__%> is not defined as %<long%> or %<long long%>%<__gcc_host_wide_int__%> is not defined as a type%<__int%d%> is not supported by this target%<__int%d%> is not supported on this target%<__label__%> declarations are only allowed in function scopes%<__label__%> not at the beginning of a block%<__restrict%> can only be specified for objects and functions%<__thread%> before %<extern%>%<__thread%> before %<static%>%<__thread%> before %qD%<__thread%> can only be specified for objects and functions%<__transaction_atomic%> without transactional memory support enabled%<__transaction_cancel%> not within %<__transaction_atomic%>%<__transaction_cancel%> within a %<__transaction_relaxed%>%<__transaction_cancel%> without transactional memory support enabled%<__transaction_relaxed%> without transactional memory support enabled%<a%d%> argument of %qs intrinsic at %L must be %s(%d)%<a1%> argument of %qs intrinsic at %L must be INTEGER, REAL or CHARACTER%<a1%> argument of %qs intrinsic at %L must be INTEGER, REAL, CHARACTER or UNSIGNED%<acc update%> must contain at least one %<device%> or %<host%> or %<self%> clause at %L%<alias%> attribute ignored because function is defined%<align%> clause argument needs to be positive constant power of two integer expression%<alignas%> argument has non-integral type %qT%<alignas%> in empty declaration with %<enum%> underlying type%<alignas%> on a type alias%<alignas%> on a type other than class%<alignas%> on bit-field%<alignas%> on enumerated type%<alignas%> on exception declaration%<alignas%> on function declaration%<aligned%> clause alignment expression must be integral%<aligned%> clause alignment expression must be positive constant integer expression%<alloca%> is not yet supported in coroutines%<allocate%> clause %<align%> modifier argument needs to be positive constant power of two integer expression%<allocate%> clause allocator expression has type %qT rather than %<omp_allocator_handle_t%>%<allocate%> clause must specify an allocator here%<allocate%> directive for %qD inside a target region must specify an %<allocator%> clause%<allocate%> directive must be in the same scope as %qD%<allocator%> clause allocator expression has type %qT rather than %<omp_allocator_handle_t%>%<allocator%> clause required for static variable %qD%<allocator%> clause requires a predefined allocator as %qD is static%<always_inline%> function might not be inlinable unless also declared %<inline%>%<amdgpu_hsa_kernel%> attribute requires string constant arguments%<ancestor%> device modifier not preceded by %<requires%> directive with %<reverse_offload%> clause%<ancestor%> device modifier not preceded by %<requires%> directive with %<reverse_offload%> clause at %C%<append_args%> clause implies that %qs has %d dummy arguments of integer type with %<omp_interop_kind%> kind%<append_args%> specified here%<asm goto%> with complex typed outputs%<asm%> clobber conflict with input operand%<asm%> clobber conflict with output operand%<asm%> declaration ignored due to conflict with previous rename%<asm%> flags not supported in thumb1 mode%<asm%> in %<constexpr%> function only available with %<-std=c++20%> or %<-std=gnu++20%>%<asm%> not allowed in %<transaction_safe%> function%<asm%> not allowed in atomic transaction%<asm%> operand %d probably does not match constraints%<asm%> operand constraint incompatible with operand size%<asm%> operand has impossible constraints%<asm%> operand has impossible constraints or there are not enough registers%<asm%> operand requires impossible reload%<asm%> qualifier %qT ignored outside of function body%<asm%> qualifier outside of function body%<asm%> specifier for cc output conflicts with %<asm%> clobber list%<asm%> specifier for variable %qE conflicts with %<asm%> clobber list%<asm%> specifiers are not permitted on non-static data members%<assign%> can be unsafe for Objective-C objects; please state explicitly if you need it%<assign%> property %qs is using bit-field instance variable %qs%<assume%> attribute at top level%<assume%> attribute not followed by %<;%>%<async%> expression must be integral%<atexit%> failed%<atomic%> property %qs is using bit-field instance variable %qs%<atomic_cancel%>%<atomic_default_mem_order%> clause used lexically after first %<atomic%> construct without memory order clause%<attr%> string literal must not contain a comma%<attr%> string literal must start with %<ompx_%>%<auto%> can only be specified for variables or function declarations%<auto%> changes meaning in C++11; please remove it%<auto%> conflicts with other OpenACC loop specifiers%<auto%> in file-scope empty declaration%<auto%> not allowed in alias declaration%<auto%> parameter not permitted in this context%<auto%> requires a plain identifier, possibly with attributes, as declarator%<auto%> used with %<constexpr%>%<auto(x)%> cannot be constrained%<auto(x)%> only available with %<-std=c++23%> or %<-std=gnu++23%>%<auto{x}%> cannot be constrained%<auto{x}%> only available with %<-std=c++23%> or %<-std=gnu++23%>%<await_suspend%> must return %<void%>, %<bool%> or a coroutine handle%<bank_switch%> has no effect on non-interrupt functions%<bf16%> or %<BF16%> suffix on floating constant only available with %<-std=c++23%> or %<-std=gnu++23%>%<bind%> clause not specified on a %<loop%> construct not nested inside another OpenMP construct%<bind(parallel)%> on a %<loop%> construct nested inside %<simd%> construct%<bind(teams)%> on a %<loop%> region not strictly nested inside of a %<teams%> region%<break%> statement operand %qE does not refer to a named loop or %<switch%>%<break%> statement operand %qE does not refer to a named loop or %<switch%>; did you mean %qs?%<break%> statement operand %qE refers to a %<switch%> outside of its body%<builtin_return_address%> contains only 2 bytes of address%<cancel for%> inside %<nowait%> for construct%<cancel for%> inside %<ordered%> for construct%<cancel sections%> inside %<nowait%> sections construct%<catch%> is not supported%<co_await%> cannot be used in default arguments%<co_yield%> cannot be used in default arguments%<concept%> only available with %<-std=c++20%> or %<-fconcepts%>%<const%> %qs cannot be declared %<mutable%>%<const%> and %<volatile%> function specifiers on %qD invalid in field declaration%<const%> and %<volatile%> function specifiers on %qD invalid in parameter declaration%<const%> and %<volatile%> function specifiers on %qD invalid in type declaration%<const%> and %<volatile%> function specifiers on %qD invalid in variable declaration%<const%> can only be specified for objects and functions%<const%> qualified %<depobj%> expression%<const%> qualified %qE may appear only in %<shared%> or %<firstprivate%> clauses%<const%> qualified %qE without %<mutable%> member may appear only in %<shared%> or %<firstprivate%> clauses%<const%>, %<volatile%> or %<__restrict%>-qualified type %qT in %<#pragma omp declare reduction%>%<consteval%> function %q+D overriding non-%<consteval%> function%<constexpr%> call flows off the end of the function%<constexpr%> constructor does not have empty body%<constexpr%> constructor for union %qT must initialize exactly one non-static data member%<constexpr%> destructors only available with %<-std=c++20%> or %<-std=gnu++20%>%<constexpr%> evaluation depth exceeds maximum of %d (use %<-fconstexpr-depth=%> to increase the maximum)%<constexpr%> evaluation operation count exceeds limit of %wd (use %<-fconstexpr-ops-limit=%> to increase the limit)%<constexpr%> in empty declaration%<constexpr%> initializer for a binary floating-point type is of decimal type%<constexpr%> initializer for a real type is of complex type%<constexpr%> initializer is not an arithmetic constant expression%<constexpr%> initializer not representable in type of object%<constexpr%> integer initializer is not an integer constant expression%<constexpr%> lambda only available with %<-std=c++17%> or %<-std=gnu++17%>%<constexpr%> loop iteration count exceeds limit of %d (use %<-fconstexpr-loop-limit=%> to increase the limit)%<constexpr%> needed for in-class initialization of static data member %q#D of non-integral type%<constexpr%> object has variably modified type%<constexpr%> pointer initializer is not null%<constexpr%> static data member %qD must have an initializer%<constexpr%> used with %qE%<constexpr%> variable %qD has variably-modified type %qT%<constinit%> can only be applied to a variable with static or thread storage duration%<constinit%> on function return type is not allowed%<constinit%> specifier invalid for function %qs%<constinit%> variable %qD does not have a constant initializer%<continue%> statement operand %qE does not refer to a named loop%<continue%> statement operand %qE does not refer to a named loop; did you mean %qs?%<continue%> statement operand %qE refers to a named %<switch%>%<counted_by%> argument %qE conflicts with previous declaration %qE%<counted_by%> argument is not an identifier%<critical%> region may not be nested inside a %<critical%> region with the same name%<decl-specifier%> in declaration of deduction guide%<declare %s%> directive not immediately followed by function declaration or definition%<declare variant%> candidate %qD declared here%<declare variant%> on constructor %qD%<declare variant%> on defaulted %qD%<declare variant%> on deleted %qD%<declare variant%> on destructor %qD%<declare variant%> on virtual %qD%<decltype%> cannot resolve address of overloaded function%<decltype%> evaluates to %qT, which is not a class or enumeration type%<decltype(auto)%> cannot be cv-qualified%<decltype(auto)%> type specifier only available with %<-std=c++14%> or %<-std=gnu++14%>%<default%> label not within a switch statement%<default%> target was not set%<delete%> reason only available with %<-std=c++2c%> or %<-std=gnu++2c%>%<delete[]%> is not a constant expression%<depend%> clause requires action clauses with %<targetsync%> interop-type%<depend%> clause with %<depobj%> dependence type on array section%<depend(%s)%> is only allowed in %<omp ordered%>%<depobj%> dependence type specified in %<depend%> clause on %<depobj%> construct%<depobj%> expression is not lvalue expression%<destroy%> expression is not lvalue expression%<detach%> clause event handle has type %qT rather than %<omp_event_handle_t%>%<detach%> clause must not be used together with %<mergeable%> clause%<device%> clause with %<ancestor%> is only allowed on %<target%> construct%<device%> id must be integral%<device_type%> clause must specify 'any' when used with an %<indirect%> clause%<dim%> argument of %qs intrinsic at %L is not a valid codimension index%<dim%> argument of %qs intrinsic at %L is not a valid dimension index%<dim%> argument of %s intrinsic at %L is not a valid dimension index%<dist_schedule%> chunk size expression must be integral%<distribute%> region must be strictly nested inside %<teams%> construct%<dynamic_cast%> not permitted with %<-fno-rtti%>%<dynamic_cast<%#T>(%#D)%> can never succeed%<else%> without a previous %<if%>%<enum %E%> declared in %<for%> loop initial declaration%<enum%> declared both with and without fixed underlying type%<enum%> declared with but defined without fixed underlying type%<enum%> underlying type incompatible with previous declaration%<enum%> underlying type may not be specified here%<explicit%> can only be specified for constructors%<explicit%> in friend declaration%<explicit%> outside class declaration%<explicit(bool)%> only available with %<-std=c++20%> or %<-std=gnu++20%>%<export%> not part of following module-directive%<extern "C"%> linkage started here%<externally_visible%> attribute have effect only on public objects%<f%d%> or %<F%d%> suffix on floating constant only available with %<-std=c++23%> or %<-std=gnu++23%>%<fallthrough%> attribute at top level%<fallthrough%> attribute not followed by %<;%>%<fallthrough%> attribute specified with a parameter%<fast_interrupt%> attribute directive ignored%<filter%> expression must be integral%<flatten%> attribute is ignored on aliases%<flush%> list specified together with memory order clause%<fopen%>: %s: %m%<for%> loop initial declarations are only allowed in C99 or C11 mode%<friend%> can only be specified inside a class%<friend%> used outside of class%<full%> clause must not be used together with %<partial%> clause%<function_profiler%> support%<function_profiler%> support for MMIX%<gang%> loop in %<gang-single%> region%<gang%> num expression must be integral%<gang%> num value must be positive%<gang%> static expression must be integral%<gang%> static value must be positive%<generic%> CPU can be used only for %<-mtune=%> switch%<generic%> CPU can be used only for %<target("tune=")%> attribute%<getter%> attribute of property %qD conflicts with previous declaration%<gnu_inline%> attribute present on %q+D%<goto%> in %<constexpr%> function only available with %<-std=c++23%> or %<-std=gnu++23%>%<goto%> is not a constant expression%<gp_offset%> (%ld) or %<end_offset%> (%ld) is less than zero%<grainsize%> clause must not be used together with %<num_tasks%> clause%<grainsize%> expression must be integral%<grainsize%> value must be positive%<h%> applied to non-register operand%<hard-float%> MIPS16 code for ABIs other than o32 and o64%<has_device_addr%> for %qD does not imply %<is_device_ptr%> required for %<need_device_ptr%>%<hint%> expression must be constant integer expression%<hint%> expression must be integral%<host_data%> construct at %L requires %<use_device%> clause%<host_data%> construct requires %<use_device%> clause%<if consteval%> only available with %<-std=c++23%> or %<-std=gnu++23%>%<if consteval%> requires compound statement%<if constexpr%> only available with %<-std=c++17%> or %<-std=gnu++17%>%<ifunc%> resolver for %qD must return %qT%<ifunc%> resolver for %qD should return %qT%<inbranch%> clause is incompatible with %<notinbranch%>%<indirect_call%> attribute cannot apply for static function%<init%> clause lacks the %<targetsync%> modifier%<inline%> can only be specified for functions%<inline%> in empty declaration%<inline%> is not allowed in declaration of friend template specialization %qD%<inline%> specified for friend class declaration%<inline%> specifier invalid for function %qs declared out of global scope%<inline%> specifier invalid for variable %qD declared at block scope%<inscan%> %<reduction%> clause on %qs construct%<inscan%> %<reduction%> clause on construct other than %<for%>, %<simd%>, %<for simd%>, %<parallel for%>, %<parallel for simd%>%<inscan%> %<reduction%> clause used together with %<linear%> clause for a variable other than loop iterator%<inscan%> %<reduction%> clause with array section%<inscan%> REDUCTION clause on construct other than DO, SIMD, DO SIMD, PARALLEL DO, PARALLEL DO SIMD at %L%<inscan%> and non-%<inscan%> %<reduction%> clauses on the same construct%<inscan%> and non-%<inscan%> %<reduction%> clauses on the same construct at %L%<intel%> CPU can be used only for %<-mtune=%> switch%<intel%> CPU can be used only for %<target("tune=")%> attribute%<interrupt_thread%> is available only on fido%<is_device_ptr%> for %qD does not imply %<has_device_addr%> required for %<need_device_addr%>%<iterator%> modifier incompatible with %qs%<iterator%> modifier may not be specified on %<depobj%> construct%<l1-cache-size%> parameter is not a power of two: %d%<lang_*%> check: failed in %s, at %s:%d%<lastprivate%> clause on a %<loop%> construct refers to a variable %qD which is not the loop iterator%<linear%> clause for variable other than loop iterator specified on construct combined with %<distribute%>%<linear%> clause may not be specified together with %<ordered%> clause if stand-alone %<ordered%> construct is nested in it%<linear%> clause step %qE is neither constant nor a parameter%<linear%> clause step expression must be integral%<linear%> clause step is a parameter %qD not specified in %<uniform%> clause%<location_t%> is not defined as a type%<locus%> is not defined as a type%<long long long%> is too long for GCC%<long%> switch expression not converted to %<int%> in ISO C%<lp_array%> does not match %<region_tree%>%<lp_array%> is corrupted for lp %i%<lto_obj_file_open()%> failed%<main%> declared %<_Noreturn%>%<map%> clause with map-type modifier other than %<always%>, %<close%> or %<present%>%<memset%> used with constant zero length parameter; this could be due to transposed parameters%<memset%> used with length equal to number of elements without multiplication by element size%<ms_hook_prologue%> attribute is not compatible with %<-mfentry%> for 32-bit%<ms_hook_prologue%> attribute is not compatible with nested function%<msp430_select_hwmult_lib%> needs one or more arguments%<msp430_set_driver_var%> expects 2 arguments%<mutable%> lambda specifier with explicit object parameter%<mutexinoutset%> kind in %<depend%> clause on a %<taskwait%> construct%<namespace %E%> is ambiguous%<namespace%> definition is not allowed here%<need_device_addr%> is not valid for C%<need_device_addr%> not yet supported%<new%> of %<initializer_list%> does not extend the lifetime of the underlying array%<new%> of type %qT with extended alignment %d%<nogroup%> clause must not be used together with %<reduction%> clause%<nonatomic%> attribute of property %qD conflicts with previous declaration%<nonmonotonic%> schedule modifier specified together with %<ordered%> clause%<nonnull%> argument %qD compared to NULL%<noreturn%> function does return%<nowait%> clause must not be used together with %<copyprivate%> clause%<num_tasks%> value must be positive%<num_teams%> lower bound %qE bigger than upper bound %qE%<num_teams%> value must be positive%<num_threads%> value must be positive%<object.TypeInfo%> cannot be used with %<-fno-rtti%>%<object.TypeInfo%> could not be found, but is implicitly used%<offsetof%> within non-standard-layout type %qT is conditionally-supported%<omp requires reverse_offload%> requires at least %<sm_35%> for %<-foffload-options=nvptx-none=-march=%> - disabling offload-code generation for this device type%<omp::%E%> attribute requires argument%<omp::%E%> not allowed to be specified in this context%<omp::%s%> not allowed to be specified in this context%<omp_all_memory%> at %L not permitted in this clause%<omp_all_memory%> may only be used in OpenMP %<depend%> clause%<omp_all_memory%> used with %<depend%> kind other than %<out%> or %<inout%>%<omp_all_memory%> used with DEPEND kind other than OUT or INOUT at %C%<omp_all_memory%> used with dependence-type other than OUT or INOUT at %L%<omp_all_memory%>, declared at %L, may only be used in the OpenMP DEPEND clause%<operator %s%>%<operator %s%> in %<%s%E%>%<operator delete%> must return type %qT%<operator delete%> takes type %qT as first parameter%<operator delete[]%> cannot be a destroying delete%<operator new%> must not return NULL unless it is declared %<throw()%> (or %<-fcheck-new%> is in effect)%<operator new%> must return type %qT%<operator new%> takes type %<size_t%> (%qT) as first parameter%<operator%s%>%<operator%s%> in %<%E %s %E%>%<operator%s%> in %<%E%s%>%<operator%s%> in %<%s%E%>%<operator=%> should return a reference to %<*this%>%<operator[]%>%<operator[]%> in %<%E[%E]%>%<order%> clause must not be used together with %<ordered%> clause%<ordered simd threads%> must be closely nested inside of %<%s simd%> region%<ordered%> %<simd%> must be closely nested inside %<simd%> region%<ordered%> clause parameter is less than %<collapse%>%<ordered%> clause used with generated loops%<ordered%> clause with parameter on range-based %<for%> loop%<ordered%> construct with %<depend%> clause must be closely nested inside an %<ordered%> loop%<ordered%> construct with %qs clause must be closely nested inside a loop with %<ordered%> clause%<ordered%> construct without %<doacross%> or %<depend%> clauses binds to loop where %<collapse%> argument %wd is different from %<ordered%> argument %wd%<ordered%> construct without %<doacross%> or %<depend%> clauses must not have the same binding region as %<ordered%> construct with those clauses%<ordered%> region may not be closely nested inside of %<critical%>, %<ordered%>, explicit %<task%> or %<taskloop%> region%<ordered%> region must be closely nested inside a loop region with an %<ordered%> clause%<otherwise%> or %<default%> clause must appear last in %<metadirective%>%<otherwise%> or %<default%> clause must appear last in %<metadirective%> at %C%<partial%> argument needs positive constant integer expression%<pch_preprocess%> pragma should only be used with %<-fpreprocessed%>%<pex_init%> failed: %m%<pragma omp error%> encountered%<pragma omp error%> encountered: %s%<pragma omp requires%> requires at least one clause%<priority%> expression must be integral%<priority%> value must be non-negative%<readonly%> attribute conflicts with %<setter%> attribute%<readonly%> attribute of property %qD conflicts with previous declaration%<region_array%> does not match %<region_tree%>%<region_array%> is corrupted for region %i%<register%> in file-scope empty declaration%<register%> storage class specifier used%<reinterpret_cast%> from integer to pointer%<reinterpret_cast%> from type %qT to type %qT casts away qualifiers%<reinterpret_cast%> is not a constant expression%<reinterpret_cast<%T>(%E)%> is not a constant expression%<requires%> only available with %<-std=c++20%> or %<-fconcepts%>%<requires%> selector is not supported yet%<return%> with a value, in function returning void%<return%> with no value, in function returning non-void%<return_void%> declared here%<safelen%> clause expression must be positive constant integer expression%<scalar_storage_order%> is not supported because endianness is not uniform%<scope%> region may not be closely nested inside of work-sharing, %<loop%>, explicit %<task%>, %<taskloop%>, %<critical%>, %<ordered%>, %<master%>, or %<masked%> region%<score%> argument must be constant integer expression%<score%> argument must be constant integer expression at %C%<score%> argument must be non-negative%<score%> argument must be non-negative at %C%<score%> cannot be specified in traits in the %qs trait-selector-set%<score%> cannot be specified in traits in the %qs trait-selector-set at %C%<section("%s")%> attribute on main function inhibits %<-mno-call-main%>%<seq%> overrides other OpenACC loop specifiers%<setter%> attribute of property %qD conflicts with previous declaration%<setter%> specified here%<shape%> argument of %<reshape%> intrinsic at %L has more than %d elements%<shape%> argument of %<reshape%> intrinsic at %L must be an array of constant size%<signed _BitInt%> argument must be at least 2%<simdlen%> clause expression must be positive constant integer expression%<simdlen%> clause value is bigger than %<safelen%> clause value%<sizeof%> applied to a bit-field%<sizeof%> on array function parameter %qE will return size of %qT%<sizeof...%> argument must be surrounded by parentheses%<sizes%> argument needs positive integral constant%<soft-float%> and long-double-128 are incompatible%<source%> argument of %<shape%> intrinsic at %L must not be an assumed size array%<stack_offset%> must be a multiple of 4%<stack_offset%> must be at least 4%<static%> %qs cannot be declared %<mutable%>%<static%> lambda specifier with explicit object parameter%<static%> lambda specifier with lambda capture%<static%> may not be used when defining (as opposed to declaring) a static data member%<static%> may not be used with an unspecified variable length array size%<static%> may not be used without an array size%<static%> specifier invalid for function %qs declared out of global scope%<static_assert%> with non-string message only available with %<-std=c++2c%> or %<-std=gnu++2c%>%<static_assert%> without a message only available with %<-std=c++17%> or %<-std=gnu++17%>%<static_cast%> from type %qT to type %qT casts away qualifiers%<std::%s%> is defined in header %qs; this is probably fixable by adding %<#include %s%>%<std::%s%> is only available from %s onwards%<std::is_constant_evaluated%> always evaluates to false in a non-%<constexpr%> function%<std::is_constant_evaluated%> always evaluates to true in %<if constexpr%>%<std::is_constant_evaluated%> always evaluates to true in a %<consteval%> function%<std::is_constant_evaluated%> evaluates to true when checking if trivially empty iteration statement is trivial infinite loop%<std::source_location::__impl%> does not contain only non-static data members %<_M_file_name%>, %<_M_function_name%>, %<_M_line%> and %<_M_column%>%<std::tuple_element<%u, %T>::type%> is %<void%>%<std::tuple_size<%T>::value%> is not an integral constant expression%<strong%> using directive no longer supported%<strub%> mode %qE selected for %qD, when %qE was requested%<struct %E%> declared in %<for%> loop initial declaration%<switch%> name defined here%<symver%> attribute argument %qs must contain one or two %<@%>%<symver%> attribute argument not a string constant%<symver%> attribute is only applicable to symbols%<symver%> attribute only applies to functions and variables%<sysctl%> for %<kern.osversion%> failed: %m%<target%> attribute is not supported on this machine%<target%> construct with nested %<teams%> construct contains directives outside of the %<teams%> construct%<target("rtd")%> is ignored in 64bit mode%<target("sseregparm")%> used without SSE enabled%<target("tune=x86-64")%> is deprecated; use %<target("tune=k8")%> or %<target("tune=generic")%> instead as appropriate%<target()%> attribute: arch appears more than once%<target()%> attribute: cpu appears more than once%<target()%> attribute: invalid priority %qs%<target()%> attribute: priority appears more than once%<target()%> attribute: tune appears more than once%<target()%> attribute: unknown CPU %qs%<target()%> attribute: unknown TUNE %qs%<target_clones%> attribute needs GLIBC (2.23 and newer) that exports hardware capability bits%<target_device%> selector set inside of %<target%> directive%<target_version%> attribute is not supported on this machine%<task%> reduction modifier on a construct with a %<nowait%> clause%<taskwait%> construct with %<nowait%> clause but no %<depend%> clauses%<teams%> construct must be closely nested inside of %<target%> construct or not nested in any OpenMP construct%<template%> keyword not permitted in destructor name%<template%> must follow a nested-name-specifier%<this%> allowed in OpenMP only in %<declare simd%> clauses%<this%> cannot be captured by reference%<this%> is unavailable for explicit object member functions%<this%> is unavailable for static member functions%<this%> may not be used in this context%<this%> must be the first specifier in a parameter declaration%<this%> not allowed in %<allocate%> clause%<this%> specifier in a requires-expression parameter%<this%> specifier in template parameter declaration%<this%> was not captured for this lambda function%<thread_limit%> expression must be integral%<thread_limit%> value must be positive%<threadprivate%> %qD is not file, namespace or block scope variable%<threadprivate%> %qE directive not in %qT definition%<threadprivate%> %qE has incomplete type%<throw%> will always call %<terminate%>%<tile%> argument needs integral type%<tile%> argument needs positive integral constant%<tile%> construct generates %d loops with canonical form but %d loops are needed%<transaction_may_cancel_outer%> function call not within outer transaction or %<transaction_may_cancel_outer%>%<transaction_safe_dynamic%> may only be specified for a virtual function%<tree%> is not defined as a pointer type%<tree%> is not defined as a type%<try%> in %<constexpr%> function only available with %<-std=c++20%> or %<-std=gnu++20%>%<typedef%> specifier conflicts with %qs%<typedef%> used with %<auto%>%<typedef%> was ignored in this declaration%<typeid%> is not a constant expression because %qE is of polymorphic type%<typeid%> of qualified function type %qT%<typeid%> operator cannot appear in a constant-expression%<typename %T::%D%> names %q#D, which is not a type%<typename %T::%D%> names %q#T, which is not a class template%<typeof%> applied to a bit-field%<union %E%> declared in %<for%> loop initial declaration%<unroll%> construct with %<partial%> clause generates just one loop with canonical form but %d loops are needed%<uses_allocators%> clause with traits and memory spaces%<using enum%> of %qT before its enum-specifier%<using enum%> of dependent type %qT%<using enum%> of incomplete type %qT%<using enum%> of non-enumeration type %q#T%<using enum%> only available with %<-std=c++20%> or %<-std=gnu++20%>%<using%> with enumeration scope %q#T only available with %<-std=c++20%> or %<-std=gnu++20%>%<va_start%> macro used with additional arguments other than identifier of the last named argument%<va_start%> used in function with fixed arguments%<vec_lvsl%> is deprecated for little endian; use assignment for unaligned loads and stores%<vec_lvsr%> is deprecated for little endian; use assignment for unaligned loads and stores%<vector%> length expression must be integral%<vector%> length value must be positive%<verify_gimple%> failed%<verify_marked_backedges%> failed%<virtual%> can only be specified for functions%<virtual%> outside class declaration%<virtual%> specified more than once in base-specifier%<void%> as only parameter may not be qualified%<void%> must be the only parameter%<void%> must be the only parameter and unnamed%<volatile%> can only be specified for objects and functions%<volatile%>-qualified parameter is deprecated%<volatile%>-qualified return type is deprecated%<volatile%>-qualified structured binding is deprecated%<wait%> expression must be integral%<warn_if_not_aligned%> may not be specified for %q+D%<weak%> clause requires atomic equality comparison%<weakref%> attribute ignored because function is defined%<weakref%> attribute ignored because variable is initialized%<weakref%> attribute should be accompanied with an %<alias%> attribute%<weakref%> cannot be versioned%<worker%> num expression must be integral%<worker%> num value must be positive%<||%> not valid in GIMPLE%<~%> on a boolean expression%<~%> on an expression of type %<bool%>%<~auto%> only available with %<-std=c++14%> or %<-std=gnu++14%>%@ %e%@ %e (depth %i)%@ %e (fndecl %qs, depth %i)%d bytes of gang-private data-share memory exhausted (increase with %<-mgang-private-size=%d%>, for example)%d constructor found
  %d constructors found
  %d destructor found
  %d destructors found
  %d exits recorded for loop %d (having %d exits)%d frame table found
  %d frame tables found
! %e and %e specified together%e declared here%i-bit mode not compiled in%llu bytes%q#D cannot be overloaded with %q#D%q#D conflicts with a previous declaration%q#D conflicts with version inherited from %qT%q#D declared here%q#D declared here with internal linkage%q#D declared here with module linkage%q#D declared here with no linkage%q#D does not refer to the unqualified type, so it is not used for linkage%q#D explicitly defaulted here%q#D has incomplete type%q#D hides constructor for %q#D%q#D inherits from multiple base subobjects%q#D invalid; an anonymous union can only have non-static data members%q#D invalid; an anonymous union may only have public non-static data members%q#D is a static data member; it can only be initialized at its definition%q#D is implicitly declared as deleted because %qT declares a move constructor or move assignment operator%q#D is implicitly deleted because the default definition would be ill-formed:%q#D is inaccessible within this context%q#D is not a function template%q#D is not a non-static data member of %qT%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address%q#D is not const%q#D is private within this context%q#D is protected within this context%q#D is public, but requires an existing %q#T object%q#D is volatile%q#D not declared in class%q#D previously declared here%q#D previously defined here%q#D redeclared as different kind of entity%q#D should be initialized%q#D, declared using an unnamed type, is used but never defined%q#D, declared using an unnamed type, is used but not defined%q#D, declared using local type %qT, is used but never defined%q#D, declared using local type %qT, is used but not defined here%q#F is implicitly deleted because its exception-specification does not match the implicit exception-specification %qX%q#T has no member named %qE%q#T has no member named %qE; did you mean %q#D? (accessible via %q#D)%q#T has no member named %qE; did you mean %q#D? (not accessible from this context)%q#T has no member named %qE; did you mean %qE?%q#T has no user-provided default constructor%q#T has pointer data members%q#T has virtual base classes%q#T has virtual functions and accessible non-virtual destructor%q#T is not a class%q#T is not a class or namespace%q#T is not a template%q#T is not a valid type for a template non-type parameter%q#T only defines a private destructor and has no friends%q#T only defines private constructors and has no friends%q#T used where a %qT was expected%q#T used where a floating-point value was expected%q#T was previously declared here%q+#D cannot be declared%q+#D is not a static data member of %q#T%q+#D marked %<final%>, but is not virtual%q+#D marked %<override%>, but does not override%q+D alias between function and variable is not supported%q+D aliased to external symbol %qE%q+D aliased to undefined symbol %qE%q+D already declared with dllexport attribute: dllimport ignored%q+D declared as a friend%q+D declared as variadic function%q+D declared weak after being used%q+D declared with an exception specification%q+D defined as variadic function without prototype%q+D defined both normally and as %qE attribute%q+D defined here%q+D has incompatible attributes %qs and %qs%q+D in declare target directive does not have mappable type%q+D is static but declared in inline function %qD which is not static%q+D is usually a function%q+D offset %E in %qT isn%'t aligned to %u%q+D offset %E in %qT may not be aligned to %u%q+D redeclared as different kind of symbol%q+D redeclared inline with %<gnu_inline%> attribute%q+D redeclared inline without %<gnu_inline%> attribute%q+D redeclared without dllimport attribute after being referenced with dll linkage%q+D redeclared without dllimport attribute: previous dllimport ignored%q+D static data member inside of declare target directive%q+D takes only zero or two arguments%q+E is not a constant expression%q+F declared %<static%> but never defined%q+F used but never defined%q+T is not literal because:%qD accessing %E byte in a region of size %E%qD accessing %E bytes in a region of size %E%qD accessing %E or more bytes in a region of size %E%qD accessing %wu byte at offsets %s and %s may overlap %wu byte at offset %s%qD accessing %wu bytes at offsets %s and %s may overlap %wu byte at offset %s%qD accessing %wu byte at offsets %s and %s may overlap up to %wu bytes at offset %s%qD accessing %wu bytes at offsets %s and %s may overlap up to %wu bytes at offset %s%qD accessing %wu byte at offsets %s and %s overlaps %wu byte at offset %s%qD accessing %wu byte at offsets %s and %s overlaps %wu bytes at offset %s%qD accessing %wu byte at offsets %s and %s overlaps %wu or more bytes at offset %s%qD accessing %wu bytes at offsets %s and %s overlaps %wu or more bytes at offset %s%qD accessing %wu byte at offsets %s and %s overlaps between %wu and %wu bytes at offset %s%qD accessing %wu bytes at offsets %s and %s overlaps between %wu and %wu bytes at offset %s%qD accessing %wu byte may overlap %wu byte%qD accessing %wu bytes may overlap %wu byte%qD accessing %wu byte may overlap up to %wu bytes%qD accessing %wu bytes may overlap up to %wu bytes%qD accessing %wu bytes at offsets %s and %s overlaps %wu byte at offset %s%qD accessing %wu bytes at offsets %s and %s overlaps %wu bytes at offset %s%qD accessing %wu or more bytes at offsets %s and %s may overlap %wu byte at offset %s%qD accessing %wu or more bytes at offsets %s and %s may overlap up to %wu bytes at offset %s%qD accessing %wu or more bytes at offsets %s and %s overlaps %wu byte at offset %s%qD accessing %wu or more bytes at offsets %s and %s overlaps %wu bytes at offset %s%qD accessing %wu or more bytes at offsets %s and %s overlaps %wu or more bytes at offset %s%qD accessing %wu or more bytes at offsets %s and %s overlaps between %wu and %wu bytes at offset %s%qD accessing between %E and %E bytes in a region of size %E%qD accessing between %wu and %wu bytes at offsets %s and %s may overlap %wu byte at offset %s%qD accessing between %wu and %wu bytes at offsets %s and %s may overlap up to %wu bytes at offset %s%qD accessing between %wu and %wu bytes at offsets %s and %s overlaps %wu byte at offset %s%qD accessing between %wu and %wu bytes at offsets %s and %s overlaps %wu bytes at offset %s%qD accessing between %wu and %wu bytes at offsets %s and %s overlaps %wu or more bytes at offset %s%qD accessing between %wu and %wu bytes at offsets %s and %s overlaps between %wu and %wu bytes at offset %s%qD accessing between %wu and %wu bytes may overlap %wu byte%qD accessing between %wu and %wu bytes may overlap up to %wu bytes%qD alias between functions of incompatible types %qT and %qT%qD already appeared as list item in an %<allocate%> directive%qD appears both in data and map clauses%qD appears more than once in %<aligned%> clauses%qD appears more than once in %<allocate%> clauses%qD appears more than once in %<nontemporal%> clauses%qD appears more than once in action clauses%qD appears more than once in data clauses%qD appears more than once in data-sharing clauses%qD appears more than once in map clauses%qD appears more than once in motion clauses%qD appears more than once in reduction clauses%qD argument %d promotes to %qT where %qT is expected in a call to built-in function declared without prototype%qD argument %d type is %qT where %qT is expected in a call to built-in function declared without prototype%qD argument %i declared attribute %<nonstring%>%qD argument %i declared attribute %<nonstring%> is smaller than the specified bound %wu%qD argument %i declared attribute %<nonstring%> is smaller than the specified bound [%E, %E]%qD argument %i declared attribute %<nonstring%> may be smaller than the specified bound [%E, %E]%qD argument missing terminating nul%qD attribute directive ignored%qD attribute is meaningless since members of the anonymous namespace get local symbols%qD attribute requires a single NTBS argument%qD called in a constant expression%qD called in a constant expression before its definition is complete%qD called on a pointer passed to mismatched reallocation function %qD%qD called on a pointer to an unallocated object %qE%qD called on pointer %qE passed to mismatched allocation function %qD%qD called on pointer %qE with nonzero offset%s%qD called on pointer returned from a mismatched allocation function%qD called on pointer to an unallocated object%qD called on unallocated object %qD%qD calls %<setjmp%> or similar, %<-fharden-control-flow-redundancy%> is not supported%qD can be marked override%qD cannot appear in a constant-expression%qD cannot be %qs%qD cannot be an explicit object member function%qD cannot be declared %<virtual%>, since it is always static%qD cannot be defaulted%qD cannot be used as a function%qD cannot have default arguments%qD changed semantics in GCC 4.4%qD clearing an object of non-trivial type %#qT%s%qD clearing an object of type %#qT containing a pointer-to-member%s%qD clearing an object of type %#qT with no trivial copy-assignment%s%qD conflicts with used function%qD copying an object of non-trivial type %#qT from an array of %#qT%qD copying an object of type %#qT with %qs member %qD from an array of %#qT; use assignment or copy-initialization instead%qD declared %<static%> in %<constexpr%> context%qD declared %<thread_local%> in %<constexpr%> context%qD declared %<transaction_safe_dynamic%>%qD declared as a %<virtual%> field%qD declared as a %<virtual%> parameter%qD declared as a %<virtual%> type%qD declared as a %<virtual%> variable%qD declared as a non-parameter%qD declared as an %<inline%> field%qD declared as an %<inline%> parameter%qD declared as an %<inline%> type%qD declared as array of template placeholder type %qT%qD declared as reference but not initialized%qD declared here%qD declared here, later in the translation unit%qD declared weak after being used%qD declared with internal linkage%qD defined %<static%> in %<constexpr%> context%qD defined %<static%> in %qs function only available with %<-std=c++23%> or %<-std=gnu++23%>%qD defined %<thread_local%> in %<constexpr%> context%qD defined %<thread_local%> in %qs function only available with %<-std=c++23%> or %<-std=gnu++23%>%qD defined but not used%qD defined here%qD destination unchanged after copying no bytes%qD destination unchanged after copying no bytes from a string of length %E%qD does not have %<const char *%> type%qD does not have a mappable type in %qs clause%qD does not have integral or enumeration type%qD does not have integral type%qD does not implicitly begin its lifetime because %qT does not have a non-deleted trivial default constructor, use %<std::construct_at%> instead%qD does not name an enumeration in %qT%qD does not refer to a function%qD does not refer to a namespace scope function%qD expanded to more than one element%qD expecting %E byte in a region of size %E%qD expecting %E bytes in a region of size %E%qD expecting %E or more bytes in a region of size %E%qD expecting between %E and %E bytes in a region of size %E%qD exposes TU-local entity %qD%qD forming offset %s is out of bounds%qD forming offset %s is out of the bounds [0, %wu]%qD forming offset %s is out of the bounds [0, %wu] of object %qD with type %qT%qD forming offset %s is out of the bounds of object %qD with type %qT%qD has TU-local template argument %qD%qD has TU-local template argument %qT%qD has a non-structural type%qD has a previous declaration here%qD has already been defined%qD has an incomplete type %qT%qD has incomplete type%qD has internal linkage because it was declared in an unnamed namespace%qD has invalid argument list%qD has more than %u blocks, the requested maximum for %<-fharden-control-flow-redundancy%>%qD has no linkage and is declared in an anonymous namespace%qD has no linkage and is declared within TU-local entity %qD%qD has no linkage and is declared within TU-local entity %qT%qD has not been declared in %qD%qD has not been declared within %qD%qD has the same name as the class in which it is declared%qD has too many arguments for internal %<strub%>%qD in %<reduction%> clause is a zero size array%qD inherits the %E ABI tag that %qT (used in its return type) has%qD inherits the %E ABI tag that %qT (used in its type) has%qD invalid in %q#T because of local member %q#D with same name%qD invalid in %q#T because of local method %q#D with same name%qD invalid in condition%qD invalid in lambda%qD is a function, not a type%qD is a namespace%qD is a specialization of TU-local template %qD%qD is a usual (non-placement) deallocation function%qD is a usual (non-placement) deallocation function in C++14 (or with %<-fsized-deallocation%>)%qD is a virtual function but only a direct call is allowed in a dispatch construct%qD is already a friend of %qT%qD is already a friend of class %qT%qD is already defined in %qT%qD is already defined in class %qT%qD is already defined in the class %qT%qD is an alias of TU-local type %qT%qD is an enumeration template%qD is both a direct base and an indirect virtual base%qD is declared %<constexpr%> and is initialized to a TU-local value%qD is declared in header %qs%qD is defined with tls model %s%qD is deprecated%qD is deprecated: %s%qD is initialized with itself%qD is instantiated for an empty pack%qD is mutable%qD is normally a non-static function%qD is not a C pointer%qD is not a class or alias template%qD is not a class or namespace%qD is not a class type%qD is not a direct member of %qT%qD is not a function argument%qD is not a function template%qD is not a member of %qD%qD is not a member of %qD; did you mean %qs?%qD is not a member of %qT%qD is not a member of %qT; did you mean %qs?%qD is not a member template function%qD is not a namespace-name%qD is not a namespace-name; did you mean %qs?%qD is not a pointer variable%qD is not a static data member%qD is not a static data member of a class template%qD is not a template%qD is not a template function%qD is not a type%qD is not a valid template argument because %qD is a variable, not the address of a variable%qD is not a variable%qD is not a variable in %<aligned%> clause%qD is not a variable in %<allocate%> clause%qD is not a variable in %<nontemporal%> clause%qD is not a variable in %qs clause%qD is not a variable in clause %<firstprivate%>%qD is not a variable in clause %<lastprivate%>%qD is not a variable in clause %qs%qD is not a variable template%qD is not an argument in %<uniform%> clause%qD is not captured%qD is not compatible with %qD%qD is not defined outside of function scope%qD is not eligible for %<strub%> because %<-fsplit-stack%> is enabled%qD is not eligible for %<strub%> because of attribute %<noipa%>%qD is not eligible for %<strub%> because of attribute %<simd%>%qD is not eligible for %<strub%> on the target system%qD is not eligible for internal %<strub%> because it calls %qD%qD is not eligible for internal %<strub%> because it contains a non-local goto target%qD is not eligible for internal %<strub%> because of attribute %<noclone%>%qD is not eligible for internal %<strub%> because the address of a local label escapes%qD is not lvalue expression nor array section in %qs clause%qD is not of pointer type%qD is not public%qD is not usable as a %<constexpr%> function because:%qD is specified more than once%qD is static but used in inline function %qD which is not static%qD is threadprivate variable in %qs clause%qD is too small to hold all values of %q#T%qD is unavailable%qD is unavailable: %s%qD is used uninitialized%qD may access %E byte in a region of size %E%qD may access %E bytes in a region of size %E%qD may access %E or more bytes in a region of size %E%qD may access between %E and %E bytes in a region of size %E%qD may be a static member function only with %<-std=c++23%> or %<-std=gnu++23%>%qD may be used uninitialized%qD may not be declared as static%qD may not be declared within a namespace%qD may read %E byte from a region of size %E%qD may read %E bytes from a region of size %E%qD may read %E or more bytes from a region of size %E%qD may read between %E and %E bytes from a region of size %E%qD may write %E byte into a region of size %E%qD may write %E bytes into a region of size %E%qD may write %E or more bytes into a region of size %E%qD may write between %E and %E bytes into a region of size %E%qD moving an object of non-trivial type %#qT and size %E into a region of size %E%qD moving an object of non-trivially copyable type %#qT; use %<new%> and %<delete%> instead%qD moving an object of type %#qT with deleted copy constructor; use %<new%> and %<delete%> instead%qD moving an object of type %#qT with deleted destructor%qD must be a global variable in %<#pragma acc declare link%>%qD must be a member function%qD must be a non-member function%qD must be a non-static member function%qD must be a variable declared in the same scope as %<#pragma acc declare%>%qD must be either a non-static member function or a non-member function%qD must be of %<omp_interop_t%>%qD must have an argument of class or enumerated type%qD must have either one or two arguments%qD must have either zero or one argument%qD must have exactly one argument%qD must have exactly two arguments%qD must have no arguments%qD must not have variable number of arguments%qD not defined%qD of a string of length %wu and an array of size %wu evaluates to nonzero%qD of a string of length %wu or more and an array of size %wu evaluates to nonzero%qD of a string of length %wu, an array of size %wu and bound of %wu evaluates to nonzero%qD of strings of length %wu and %wu and bound of %wu evaluates to nonzero%qD offset %s from the object at %qE is out of the bounds of %qT%qD offset %s from the object at %qE is out of the bounds of referenced subobject %qD with type %qT at offset %wi%qD offset %s is out of bounds%qD offset %s is out of the bounds [0, %wu]%qD offset %s is out of the bounds [0, %wu] of object %qD with type %qT%qD offset %s is out of the bounds of object %qD with type %qT%qD only valid in lambda with %<-std=c++23%> or %<-std=gnu++23%>%qD output may be truncated copying %E byte from a string of length %wu%qD output may be truncated copying %E bytes from a string of length %wu%qD output may be truncated copying between %wu and %wu bytes from a string of length %wu%qD output truncated before terminating nul copying %E byte from a string of the same length%qD output truncated before terminating nul copying %E bytes from a string of the same length%qD output truncated before terminating nul copying as many bytes from a string as its length%qD output truncated copying %E byte from a string of length %wu%qD output truncated copying %E bytes from a string of length %wu%qD output truncated copying between %wu and %wu bytes from a string of length %wu%qD pointer overflow between offset %s and size %s%qD pointer overflow between offset %s and size %s accessing array %qD with type %qT%qD reading %E byte from a region of size %E%qD reading %E bytes from a region of size %E%qD reading %E or more bytes from a region of size %E%qD reading between %E and %E bytes from a region of size %E%qD receives nonlocal gotos, %<-fharden-control-flow-redundancy%> is not supported%qD redeclared with different access%qD redeclared with different visibility%qD referenced in target region does not have a mappable type%qD refers to TU-local entity %qD and cannot be instantiated in other TUs%qD refers to TU-local function %qD%qD refers to TU-local object %qD%qD renamed after being referenced in assembly%qD requires %<strub%>, but no viable %<strub%> mode was found%qD shall not be const%qD should be initialized%qD should be initialized in the member initialization list%qD should have been declared inside %qD%qD should return by value%qD sizes specified with %<sizeof%> in the earlier argument and not in the later argument%qD source argument is the same as destination%qD specified both in declare target %<link%> and %<to%> or %<enter%> clauses%qD specified both in declare target %<link%> and %qs clauses%qD specified both in declare target %<link%> and implicitly in %<to%> clauses%qD specified bound %E equals destination size%qD specified bound %E equals source length%qD specified bound %E exceeds destination size %E%qD specified bound %E exceeds maximum object size %E%qD specified bound %E exceeds source size %E%qD specified bound %E may exceed destination size %E%qD specified bound %E may exceed maximum object size %E%qD specified bound %E may exceed source size %E%qD specified bound %s exceeds maximum object size %E%qD specified bound %s exceeds the size %E of unterminated array%qD specified bound %s exceeds the size of at most %E of unterminated array%qD specified bound %s may exceed the size of at most %E of unterminated array%qD specified bound %wu exceeds maximum object size %wu%qD specified bound [%E, %E] exceeds destination size %E%qD specified bound [%E, %E] exceeds maximum object size %E%qD specified bound [%E, %E] exceeds source size %E%qD specified bound [%E, %E] may exceed destination size %E%qD specified bound [%E, %E] may exceed maximum object size %E%qD specified bound [%E, %E] may exceed source size %E%qD specified bound between %wu and %wu exceeds maximum object size %wu%qD specified bound depends on the length of the source argument%qD specified in %<allocate%> clause but not in an explicit privatization clause%qD specified in %<inscan%> %<reduction%> clause but not in %<scan%> directive clause%qD specified in %qs clause but not in %<inscan%> %<reduction%> clause on the containing construct%qD specified size %E exceeds maximum object size %E%qD specified size %E may exceed maximum object size %E%qD specified size between %E and %E exceeds maximum object size %E%qD specified size between %E and %E may exceed maximum object size %E%qD specifier conflicts with %<typedef%>%qD specifier conflicts with %qs%qD specifies less restrictive attribute than its target %qD: %e%qD specifies less restrictive attributes than its target %qD: %e%qD specifies more restrictive attribute than its target %qD: %e%qD specifies more restrictive attributes than its target %qD: %e%qD target declared here%qD used as a variant with incompatible %<construct%> selector sets%qD used before its definition%qD used in its own initializer%qD used without template arguments%qD violates the C++ One Definition Rule%qD was declared %<extern%> and later %<static%>%qD was declared %qs which implies default visibility%qD was declared here%qD was hidden%qD was not declared %<constexpr%>%qD was not declared in this scope%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation%qD was not declared in this scope; did you mean %qs?%qD was not initialized with a constant expression%qD was previously declared here%qD was promoted to an immediate function%qD was promoted to an immediate function because its body contains an immediate-escalating expression %qE%qD was used with no declaration before its definition%qD was used with no prototype before its definition%qD will be initialized after%qD writing %E byte into a region of size %E overflows the destination%qD writing %E bytes into a region of size %E overflows the destination%qD writing %E or more bytes into a region of size %E overflows the destination%qD writing %wu byte into a region of size %wu%qD writing %wu bytes into a region of size %wu%qD writing %wu byte into a region of size between %wu and %wu%qD writing %wu bytes into a region of size between %wu and %wu%qD writing between %E and %E bytes into a region of size %E overflows the destination%qD writing between %wu and %wu bytes into a region of size %wu%qD writing between %wu and %wu bytes into a region of size between %wu and %wu%qD writing one too many bytes into a region of a size that depends on %<strlen%>%qD writing to an object of a non-trivial type %#qT leaves %wu byte unchanged%qD writing to an object of a non-trivial type %#qT leaves %wu bytes unchanged%qD writing to an object of non-trivial type %#qT%s%qD writing to an object of non-trivially copyable type %#qT%s%qD writing to an object of type %#qT containing a pointer to data member%s%qD writing to an object of type %#qT with %qs member %qD%qD writing to an object of type %#qT with no trivial copy-assignment%qD writing to an object of type %#qT with no trivial copy-assignment%s%qD writing to an object with a deleted copy constructor%qD: visibility attribute ignored because it conflicts with previous declaration%qE 2.95 vtable-compatibility attribute applies only to C++ classes%qE 2.95 vtable-compatibility attribute applies only when compiling a kext%qE appears more than once in %<aligned%> clauses%qE appears more than once in %<allocate%> clauses%qE appears more than once in %<nontemporal%> clauses%qE appears more than once in data clauses%qE appears more than once in map clauses%qE appears more than once on the same %<declare target%> directive%qE argument %Z may overlap destination object %qE%qE arguments %Z may overlap destination object %qE%qE argument %Z overlaps destination object %qE%qE arguments %Z overlap destination object %qE%qE argument is not a function%qE argument must be one of %qs, %qs, %qs, or %qs%qE argument not a string%qE argument not an identifier%qE arguments %Z and maybe %Z overlap destination object %qE%qE attribute address out of range 0x%x%s0x%x%qE attribute allows only an integer constant argument%qE attribute applied to %qD with void return type%qE attribute applied to %qT after its definition%qE attribute applied to extern "C" declaration %qD%qE attribute applied to non-class, non-enum type %qT%qE attribute applied to non-function, non-variable %qD%qE attribute applies only to function definitions%qE attribute applies only to functions%qE attribute applies only to initialized variables with external linkage%qE attribute argument %E is not a power of 2%qE attribute argument %E is not an integer constant%qE attribute argument %E is not in the range [0, %wu]%qE attribute argument %E is not positive%qE attribute argument %i has type %qT%qE attribute argument %i is invalid%qE attribute argument %i value %qE does not refer to a function parameter%qE attribute argument %i value %qE does not refer to a variable argument list%qE attribute argument %i value %qE exceeds the number of function parameters %u%qE attribute argument %i value %qE is not an integer constant%qE attribute argument %i value %qE refers to a variadic function parameter of unknown type%qE attribute argument %i value %qE refers to parameter type %qT%qE attribute argument %qE exceeds %u%qE attribute argument %qE is not an integer constant%qE attribute argument %qE is not an integer constant between 0 and 3%qE attribute argument %qE is not recognized%qE attribute argument 1 does not name a function%qE attribute argument 1 is ambiguous%qE attribute argument 1 must take a pointer type as its first argument%qE attribute argument 1 must take a pointer type as its first argument; have %qT%qE attribute argument cannot be a constant arithmetic expression%qE attribute argument cannot be a string%qE attribute argument has type %qT%qE attribute argument is invalid%qE attribute argument must be a string constant%qE attribute argument must be an expression that evaluates to true or false%qE attribute argument not a string constant%qE attribute argument not an integer%qE attribute argument not an integer constant%qE attribute argument should be between 0 to 255%qE attribute argument should be between 18 to 255%qE attribute argument value %qE does not refer to a function parameter%qE attribute argument value %qE does not refer to a variable argument list%qE attribute argument value %qE exceeds %wu%qE attribute argument value %qE exceeds the number of function parameters %u%qE attribute argument value %qE is negative%qE attribute argument value %qE is not an integer constant%qE attribute argument value %qE refers to a variadic function parameter of unknown type%qE attribute argument value %qE refers to parameter type %qT%qE attribute can only be applied to functions or parameters%qE attribute can only be applied to functions or to class or enumeration types%qE attribute can only be applied to functions or to structure, union or enumeration types%qE attribute can only be applied to non-static data members%qE attribute cannot be applied to a bit-field%qE attribute cannot be specified for local variables%qE attribute cannot be specified for register variables%qE attribute cannot be specified for thread-local variables%qE attribute conflicts with %qE attribute%qE attribute directive ignored%qE attribute does not apply to functions%qE attribute does not apply to types%qE attribute does not take any arguments%qE attribute doesn%'t apply to functions%qE attribute duplicated%qE attribute follows %qE%qE attribute has no effect%qE attribute has no effect on functions with static linkage%qE attribute has no effect on unit local functions%qE attribute have effect only on public objects%qE attribute ignored%qE attribute ignored because %qD does not have thread storage duration%qE attribute ignored because %qD is not a local variable%qE attribute ignored because %qD is not a variable%qE attribute ignored because %qT is already defined%qE attribute ignored because of argument %qE%qE attribute ignored for %qE%qE attribute ignored for field of type %qT%qE attribute ignored for type %qT%qE attribute ignored on a declaration of a different kind than referenced symbol%qE attribute ignored on a function returning %qT%qE attribute ignored on a redeclaration of the referenced symbol%qE attribute ignored on functions returning %qT; valid only for pointer return types%qE attribute ignored on non-class types%qE attribute ignored on non-enum%qE attribute ignored on objects of type %qT%qE attribute ignored on types%qE attribute ignored without %<-mcmse%> option%qE attribute ignored without %<-mistack%>%qE attribute ignored.  Large memory model (%<-mlarge%>) is required.%qE attribute ignored. Use %<-fcf-protection%> option to enable it%qE attribute ignored; field must be a function pointer%qE attribute ignored; valid only for functions%qE attribute ignored; valid only for functions and function pointer fields%qE attribute is for pointer types only%qE attribute is not allowed for a non-array field%qE attribute is not allowed for a non-field declaration %q+D%qE attribute is not allowed for a non-flexible array member field%qE attribute is not supported because endianness is not uniform%qE attribute is not supported for C++ for now, ignored%qE attribute is not supported for R8C target%qE attribute is only applicable on functions%qE attribute is only valid for Objective-C objects%qE attribute is only valid on %<struct%> type%qE attribute is specific to ELF targets%qE attribute is supported only for SH2A%qE attribute is used for non-class method%qE attribute may be put on a typedef only; attribute is ignored%qE attribute may not be specified for %q+D%qE attribute may not be specified for a non-array field%qE attribute must appear before %qs attribute%qE attribute must apply to a declaration%qE attribute not allowed with auto storage class%qE attribute not available to functions that return value on the stack%qE attribute not available to functions with arguments passed on the stack%qE attribute not available to functions with variable number of arguments%qE attribute on a function not returning a pointer%qE attribute on function returning %<void%>%qE attribute on function type without pointer arguments returning %<void%>%qE attribute on non-volatile variable%qE attribute only affects top level objects%qE attribute only applies to SH2A%qE attribute only applies to base type of a function pointer%qE attribute only applies to function types%qE attribute only applies to functions%qE attribute only applies to interrupt functions%qE attribute only applies to structure, union and class types%qE attribute only applies to types%qE attribute only applies to variables%qE attribute only applies to variables in static storage%qE attribute only applies to variadic functions%qE attribute only available for 32-bit%qE attribute only supported for reduced Tiny cores%qE attribute only supported in C%qE attribute only supported on boolean types%qE attribute only supported on integral types%qE attribute only supported on non-mask vector types%qE attribute only valid for ARC EM architecture%qE attribute only valid for ARCv2 architecture%qE attribute requires a string argument%qE attribute requires a string constant argument%qE attribute requires a void return type%qE attribute requires an integer argument%qE attribute requires an integer constant argument%qE attribute requires different values for %<false%> and %<true%> for type %qT%qE attribute requires prototypes with named arguments%qE attribute takes no arguments%qE attribute with unsupported boolean precision%qE attribute without arguments on a non-prototype%qE cannot be applied to non-pointer type %qT%qE cannot be used as a function%qE cannot be used as a member pointer, since it is of type %qT%qE cannot have both %qs and %qs attributes%qE declared %<threadprivate%> after first use%qE declared as function returning a function%qE declared as function returning an array%qE declared here%qE defined as wrong kind of tag%qE does not constrain a type%qE does not have %<omp_depend_t%> type in %<depend%> clause with %<depobj%> dependence type%qE does not have a mappable type in %qs clause%qE does not have pointer or array type%qE does not name a type%qE does not name a type; did you mean %qs?%qE does not satisfy return-type-requirement%qE does not satisfy return-type-requirement, because%qE does not support 32-bit sign-extended offsets%qE does not support 32-bit vector type %qT%qE does not support sign-extended offsets%qE evaluates to false%qE fails to be a typedef or built in type%qE has both %<extern%> and initializer%qE has const type for %<reduction%>%qE has invalid type for %<reduction(%s)%>%qE has no form that takes %qT and %qT arguments%qE has no form that takes %qT arguments%qE has not been declared%qE has not been declared; did you mean %qs?%qE implies default visibility, but %qD has already been declared with a different visibility%qE in %<aligned%> clause is neither a pointer nor an array%qE in %<aligned%> clause is neither a pointer nor an array nor a reference to pointer or array%qE in %<reduction%> clause is a zero size array%qE in %q#T does not name a template type%qE in %q#T does not name a type%qE in namespace %qE does not name a template type%qE in namespace %qE does not name a template type; did you mean %qs?%qE in namespace %qE does not name a type%qE in namespace %qE does not name a type; did you mean %qs?%qE incompatible attribute ignored%qE initialized and declared %<extern%>%qE is a member of a union%qE is a pointer to pointer; did you mean to dereference it before applying %<->%> to it?%qE is a pointer; did you mean to use %<->%>?%qE is an unrecognized format function type%qE is deprecated%qE is deprecated: %s%qE is marked %<throw()%> or %<noexcept%> but no usable %<get_return_object_on_allocation_failure%> is provided by %qT%qE is neither a variable nor a function name in clause %qs%qE is neither function nor member function; cannot be declared friend%qE is not %<noexcept%>%qE is not a class or namespace%qE is not a class template%qE is not a class, namespace, or enumeration%qE is not a constant expression%qE is not a constant expression because allocated storage has not been deallocated%qE is not a constant expression because it initializes a %qT rather than %qT%qE is not a constant expression because it refers to a result of %<operator new%>%qE is not a constant expression because it refers to an incompletely initialized variable%qE is not a constant expression because it refers to mutable subobjects of %qT%qE is not a constant expression when the class %qT is still incomplete%qE is not a template%qE is not a type%qE is not a valid %<asm%> qualifier%qE is not a valid template argument for %qT because it is not the address of a variable%qE is not a valid template argument for type %qT%qE is not a valid template argument for type %qT because %qD does not have external linkage%qE is not a valid template argument for type %qT because %qD has no linkage%qE is not a valid template argument for type %qT because it is a pointer%qE is not a valid template argument for type %qT because it is not an lvalue%qE is not a valid template argument for type %qT because it is of type %qT%qE is not a valid template argument for type %qT because of conflicts in cv-qualification%qE is not a valid template argument for type %qT because string literals can never be used in this context%qE is not a valid template argument of type %qT because %qD has no linkage%qE is not a valid template argument of type %qT because %qE is not a variable or function%qE is not a valid template argument of type %qT in C++98 because %qD does not have external linkage%qE is not a variable in %<aligned%> clause%qE is not a variable in %<allocate%> clause%qE is not a variable in %<nontemporal%> clause%qE is not a variable in %qs clause%qE is not a variable in clause %<firstprivate%>%qE is not a variable in clause %<lastprivate%>%qE is not a variable in clause %qs%qE is not an Objective-C class name or alias%qE is not an argument in %<uniform%> clause%qE is not at beginning of declaration%qE is not initialized%qE is not lvalue expression nor array section in %qs clause%qE is not of type %qT%qE is not recognized as a module control-line%qE is not the entire pattern of the pack expansion%qE is only allowed in Objective-C dialects%qE is only applicable to Objective-C class interfaces, attribute ignored%qE is predetermined %qs for %qs%qE is provided by %qT but %<std::nothrow%> cannot be found%qE is provided by %qT but %qE is not marked %<throw()%> or %<noexcept%>%qE is provided by %qT but is not usable with the function %qD%qE is provided by %qT but is not usable with the function signature %qD%qE is unavailable%qE is unavailable: %s%qE is used uninitialized%qE may be used uninitialized%qE may not respond to %<%c%E%>%qE may only occur after a module interface declaration%qE may only occur once in an export declaration%qE may write a terminating nul past the end of the destination%qE missing template arguments%qE must be %<threadprivate%> for %<copyin%>%qE must be a non-overloaded method%qE must be a non-overloaded static function%qE must return %qT, not %qT%qE must take a single %qT%qE must take no arguments%qE names the constructor, not the type%qE needs isa option %s%qE needs unknown isa option%qE not specified in enclosing %<target%>%qE not specified in enclosing %qs%qE not specified in enclosing OpenACC %qs construct%qE on %<case%> or %<default%> label%qE on a type other than class or enumeration definition%qE on unnamed bit-field%qE output %wu byte%qE output %wu bytes%qE output %wu byte into a destination of size %wu%qE output %wu bytes into a destination of size %wu%qE output %wu or more bytes%qE output %wu or more bytes (assuming %wu)%qE output %wu or more bytes (assuming %wu) into a destination of size %wu%qE output %wu or more bytes into a destination of size %wu%qE output between %wu and %wu bytes%qE output between %wu and %wu bytes into a destination of size %wu%qE output may be truncated before the last format character%qE output truncated before the last format character%qE redeclared as different kind of symbol%qE redeclared with conflicting %qs attributes%qE requires %<-fgnu-tm%>%qE requires a %<declare%> directive for use in a %<routine%> function%qE requires a vector base and a scalar index%qE requires an argument%qE requires the SVE ISA extension%qE should not have %<omp_depend_t%> type in %<depend%> clause with dependence type other than %<depobj%>%qE specified here%qE undeclared (first use in this function)%qE undeclared (first use in this function); did you mean %qs?%qE undeclared here (not in a function)%qE undeclared here (not in a function); did you mean %qs?%qE used with %<auto%>%qE used with %<constexpr%>%qE used with %<extern%>%qE used with %<register%>%qE used with %<typedef%>%qE used with %qs%qE with %<link%> clause used in %<routine%> function%qE writing a terminating nul past the end of the destination%qF declared %<static%> but never defined%qF requires %<-mvx%>%qF requires z14 or higher%qF requires z15 or higher%qF requires z17 or higher%qT and %qT are in disjoint named address spaces%qT as type rather than plain %<decltype(auto)%>%qT declared here%qT declared in %<constexpr%> compound literal%qT declared in underspecified object declaration%qT declared in underspecified object initializer%qT declared with a mismatched class-key %qs%qT declared with greater visibility than its base %qT%qT declared with greater visibility than the type of its field %qD%qT defined as %qs here%qT defined in %<constexpr%> compound literal%qT defined in underspecified object declaration%qT defined in underspecified object initializer%qT defined with direct virtual base%qT defined with multiple direct bases%qT does not have the %E ABI tag that %qT (used in the type of %qD) has%qT does not have the %E ABI tag that base %qT has%qT does not match original declaration%qT first declared as %qs here%qT has a base %qT which depends on the type %qT which has no linkage%qT has a base %qT which has internal linkage%qT has a base %qT which has no linkage%qT has a base %qT which uses the anonymous namespace%qT has a field %q#D whose type has internal linkage%qT has a field %q#D whose type has no linkage%qT has a field %q#D whose type uses the anonymous namespace%qT has a field %qD whose type depends on the type %qT which has no linkage%qT has a previous declaration here%qT has no member named %qE%qT has no member named %qE; did you mean %qE?%qT has no name and cannot be differentiated from similar lambdas in other TUs%qT has no name and is not defined within a class, function, or initializer%qT has no non-static data member named %qD%qT is a variably modified type%qT is already a friend of %qT%qT is an ambiguous base class of dynamic type %qT of its operand%qT is an ambiguous base of %qT%qT is an inaccessible base of %qT%qT is not a base of %qT%qT is not a class or namespace%qT is not a class type%qT is not a class, namespace, or enumeration%qT is not a class, struct, or union type%qT is not a direct base of %qT%qT is not a member class template of %qT%qT is not a member of %qT%qT is not a nested class of %qT%qT is not a pointer-to-object type%qT is not a template%qT is not a template type%qT is not a valid type for a template non-type parameter because it is not structural%qT is not an %<asm%> qualifier%qT is not an accessible base of %qT%qT is not an enumeration type%qT is promoted to %qT when passed through %<...%>%qT is/uses unnamed type%qT may not intend to support class template argument deduction%qT not permitted in template argument%qT referred to as %qs%qT referred to as enum%qT resolves to %qT, which is not a class type%qT resolves to %qT, which is not an enumeration type%qT temporary created here%qT%d%qE%dpassing single vector %qT to argument %d of %qE, which expects a tuple of %d vectors%qV qualifiers cannot be applied to %qT%qc conversion used unquoted%qc conversion used within a quoted sequence%qc directive redundant after prior occurence of the same%qc in input operand outside of a function%qc in output operand outside of a function%qs%qs LHS in assignment statement%qs LHS in clobber statement%qs accessing uninitialized byte at offset %d%qs already defined as specific binding for the generic %qs at %C%qs and %<%s-%s%> are incompatible%qs and %<%s=%s%> are incompatible%qs and %qs are incompatible%qs and %qs arguments of %qs intrinsic at %L must have identical shape.%qs and %qs arguments of %qs intrinsic at %L must have the same type%qs and %qs attributes are not compatible%qs and %qs cannot be mixed FUNCTION/SUBROUTINE for GENERIC %qs at %L%qs and %qs cannot both be enabled%qs and %qs for GENERIC %qs at %L are ambiguous%qs appears more than once in %<allocate%> at %L%qs appears to be a misspelled %qs handler, missing %<__vector%> prefix%qs applied to a void type%qs applied to an incomplete type%qs applied to non-RVV type %qT%qs applied to non-SVE type %qT%qs applied to non-vector type %qT%qs applied to type %qT, which already has a size%qs argument has invalid operand number (argument %lu)%qs argument missing terminating nul%qs argument of %qs intrinsic at %L cannot be INTENT(IN)%qs argument of %qs intrinsic at %L cannot be of type %s%qs argument of %qs intrinsic at %L has invalid permutation of dimensions (dimension %qd duplicated)%qs argument of %qs intrinsic at %L has invalid shape in dimension %d (%ld/%ld)%qs argument of %qs intrinsic at %L has negative element (%d)%qs argument of %qs intrinsic at %L has out-of-range dimension (%d)%qs argument of %qs intrinsic at %L has wrong number of elements (%d/%d)%qs argument of %qs intrinsic at %L is empty%qs argument of %qs intrinsic at %L is not a valid dimension index%qs argument of %qs intrinsic at %L must be %s%qs argument of %qs intrinsic at %L must be %s or %s%qs argument of %qs intrinsic at %L must be ALLOCATABLE%qs argument of %qs intrinsic at %L must be INTEGER%qs argument of %qs intrinsic at %L must be INTEGER or PROCEDURE%qs argument of %qs intrinsic at %L must be INTEGER or REAL%qs argument of %qs intrinsic at %L must be INTEGER or REAL or CHARACTER%qs argument of %qs intrinsic at %L must be INTEGER or REAL or CHARACTER or UNSIGNED%qs argument of %qs intrinsic at %L must be INTEGER or REAL or UNSIGNED%qs argument of %qs intrinsic at %L must be INTEGER or UNSIGNED%qs argument of %qs intrinsic at %L must be INTEGER, LOGICAL, or a BOZ literal constant%qs argument of %qs intrinsic at %L must be INTEGER, REAL or UNSIGNED%qs argument of %qs intrinsic at %L must be REAL or COMPLEX%qs argument of %qs intrinsic at %L must be a POINTER%qs argument of %qs intrinsic at %L must be a POINTER or a TARGET%qs argument of %qs intrinsic at %L must be a POINTER, ALLOCATABLE or procedure pointer%qs argument of %qs intrinsic at %L must be a constant%qs argument of %qs intrinsic at %L must be a data entity%qs argument of %qs intrinsic at %L must be a logical array%qs argument of %qs intrinsic at %L must be a pointer or target VARIABLE or FUNCTION%qs argument of %qs intrinsic at %L must be a scalar%qs argument of %qs intrinsic at %L must be a variable%qs argument of %qs intrinsic at %L must be an array%qs argument of %qs intrinsic at %L must be an interoperable data entity: %s%qs argument of %qs intrinsic at %L must be default real%qs argument of %qs intrinsic at %L must be double precision%qs argument of %qs intrinsic at %L must be less than rank %d%qs argument of %qs intrinsic at %L must be numeric or LOGICAL%qs argument of %qs intrinsic at %L must be of a dummy variable%qs argument of %qs intrinsic at %L must be of a kind not wider than the default kind (%d)%qs argument of %qs intrinsic at %L must be of an OPTIONAL dummy variable%qs argument of %qs intrinsic at %L must be of an extensible type%qs argument of %qs intrinsic at %L must be of intrinsic type%qs argument of %qs intrinsic at %L must be of kind %d%qs argument of %qs intrinsic at %L must be of rank %d%qs argument of %qs intrinsic at %L must be of rank 1 or 2%qs argument of %qs intrinsic at %L must be positive%qs argument of %qs intrinsic at %L must be the same kind as %qs%qs argument of %qs intrinsic at %L must be the same type and kind as %qs%qs argument of %qs intrinsic at %L must have a numeric type%qs argument of %qs intrinsic at %L must have a type of either REAL or INTEGER%qs argument of %qs intrinsic at %L must have length at least 1%qs argument of %qs intrinsic at %L must have the same rank as %qs or be a scalar%qs argument of %qs intrinsic at %L must not be OPTIONAL%qs argument of %qs intrinsic at %L must not be a subobject of %qs%qs argument of %qs intrinsic at %L must not be present if %<x%> is COMPLEX%qs argument of %qs intrinsic at %L must provide at least as many elements as there are .TRUE. values in %qs (%ld/%d)%qs argument of %qs intrinsic at %L not yet supported%qs argument of %qs intrinsic at %L shall appear only if %qs is of type REAL and %qs is of type INTEGER or UNSIGNED%qs argument of %qs intrinsic at %L shall be of type integer, real or character%qs argument of %qs intrinsic at %L shall have a type of CHARACTER(KIND=C_CHAR)%qs argument of %qs intrinsic at %L shall have the same type as %qs at %L%qs argument of %qs intrinsic at %L shall not be TYPE(*)%qs argument of %qs intrinsic at %L shall not be UNSIGNED%qs argument of %qs intrinsic at %L shall not be a procedure%qs argument of %qs intrinsic at %L shall not be an assumed-size array%qs argument of %qs intrinsic at %L shall not be coindexed%qs argument of %qs intrinsic at %L shall specify a valid integer kind%qs argument of intrinsic %qs at %L of must have rank %d or be a scalar%qs argument references non-pointer operand (argument %lu, operand %lu)%qs argument with out-of-range operand number (argument %lu, operand %lu)%qs as base where non-register is required%qs at %C is a DEC extension, enable with %<-fdec-structure%>%qs at %C is already defined as FINAL procedure%qs at %C is not a member of the %qs structure%qs at %C is not a member of the %qs structure; did you mean %qs?%qs at %C is not a variable%qs at %C is not an inquiry reference to an intrinsic type component%qs at %C is not an inquiry reference to an intrinsic type component %qs%qs at %C is the name of a recursive function and so refers to the result variable. Use an explicit RESULT variable for direct recursion (12.5.2.1)%qs at %L already is initialized at %L%qs at %L associated to expression cannot be used in a variable definition context (%s)%qs at %L associated to pointer function target being used in a variable definition context (%s)%qs at %L associated to vector-indexed target cannot be used in a variable definition context (%s)%qs at %L cannot appear in COMMON [F2008:C5100]%qs at %L cannot have the VALUE attribute because it is not a dummy argument%qs at %L has %d but requires %d %<omp_interop_kind%> kind dummy arguments as it is utilized with the %<append_args%> clause at %L%qs at %L has a type, which is not consistent with the CALL at %L%qs at %L has attributes specified outside its INTERFACE body%qs at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape or assumed-rank array%qs at %L in %qs clause must be a scalar integer variable of %<omp_interop_kind%> kind%qs at %L in %qs clause must be definable%qs at %L is a redefinition of the declaration in the corresponding interface for MODULE PROCEDURE %qs%qs at %L is ambiguous%qs at %L is an array and OPTIONAL; If it is not present, then it cannot be the actual argument of an ELEMENTAL procedure unless there is a non-optional argument with the same rank (Fortran 2018, 15.5.2.12)%qs at %L is host associated at %L into a contained procedure with an internal procedure of the same name%qs at %L is not a VALUE%qs at %L is not a function%qs at %L is not a module procedure%qs at %L is of the ABSTRACT type %qs%qs at %L is part of the common block %</%s/%> and may only be specificed implicitly via the named common block%qs at %L is specified more than once%qs at %L must be a nonpointer, nonallocatable scalar integer dummy argument of %<omp_interop_kind%> kind as it utilized with the %<append_args%> clause at %L%qs at %L must be less than BIT_SIZE(%qs)%qs at %L must be less than or equal to BIT_SIZE(%qs)%qs at %L must be less than or equal to the BIT_SIZE of INTEGER(KIND=%d)%qs at %L must be nonnegative%qs at %L must have constant character length in this context%qs at %L must have the same number of formal arguments as the overridden procedure%qs at %L must not be DEFERRED as it overrides a non-DEFERRED binding%qs at %L overrides a FUNCTION and must also be a FUNCTION%qs at %L overrides a NOPASS binding and must also be NOPASS%qs at %L overrides a PUBLIC procedure and must not be PRIVATE%qs at %L overrides a PURE procedure and must also be PURE%qs at %L overrides a SUBROUTINE and must also be a SUBROUTINE%qs at %L overrides a binding with PASS and must also be PASS%qs at %L overrides a non-ELEMENTAL procedure and must not be ELEMENTAL, either%qs at %L overrides a procedure binding declared NON_OVERRIDABLE%qs at %L overrides an ELEMENTAL procedure and must also be ELEMENTAL%qs at %L shall be an INTENT(OUT) variable%qs at %L should be a FUNCTION%qs at %L should be a SUBROUTINE%qs at %L should be a scalar of type integer(kind=omp_event_handle_kind)%qs at %L with OPTIONAL attribute not support when utilized with the %<append_args%> clause at %L%qs attribute can only be applied to variadic functions%qs attribute directive ignored%qs attribute does not take any arguments%qs attribute ignored%qs attribute ignored on non-ISR function%qs attribute not supported for %qE in %<__builtin_has_attribute%>%qs attribute not supported for %qT in %<__builtin_has_attribute%>%qs attribute not supported in %<__builtin_has_attribute%>%qs attribute only applies to functions%qs attribute only applies to variadic functions%qs attribute requires prototypes with named arguments%qs attribute without arguments on a non-prototype%qs cannot appear in a constant-expression%qs cannot appear in a typedef declaration%qs cannot be constant evaluated because the argument cannot be encoded%qs cannot be constant evaluated because the argument cannot be interpreted%qs cannot be constant evaluated because the type is too large%qs cannot be constant evaluated on the target%qs cannot be defined via %<typedef%>%qs cannot be extended at %C because it is BIND(C)%qs cannot be extended at %C because it is a SEQUENCE type%qs cannot be initialized with %<-ftrivial-auto-var_init%>%qs cannot be used for compiling a shared library%qs cannot be used for type declarations%qs cannot be used here%qs cannot be used in a %<constexpr%> function%qs cannot be used in a constructor%qs cannot be used in a destructor%qs cannot be used in a function with a deduced return type%qs cannot be used in a varargs function%qs cannot be used in the %<main%> function%qs cannot be used outside a function%qs clause argument must be ALLOCATABLE or a POINTER at %L%qs clause at %L specified more than once%qs clause is incompatible with %<read%> or %<write%> clauses%qs clause may not appear on non-rectangular %qs%qs clause requires %qs clause%qs clause specified together with %<inscan%> %<reduction%> clause%qs clause used lexically after first target construct or offloading API%qs clause with %<sink%> modifier refers to iteration never in the iteration space%qs clause with %<sink%> modifier waiting for lexically later iteration%qs clause with %<source%> modifier specified together with %qs clauses with %<sink%> modifier on the same construct%qs combined with %<auto%> qualifier for %qE%qs combined with %<register%> qualifier for %qE%qs conflicts with %<-arch i386%> (%qs ignored)%qs conflicts with %<-arch ppc%> (%qs ignored)%qs construct inside of %qs region%qs declared INTRINSIC at %L does not exist%qs declared as function returning a function%qs declared as function returning an array%qs declared at %L is also the name of an intrinsic.  It can only be called via an explicit interface or if declared EXTERNAL.%qs declared at %L may shadow the intrinsic of the same name.  In order to call the intrinsic, explicit INTRINSIC declarations may be required.%qs declared in a non-class scope%qs defined in a non-class scope%qs defined without first defining %qs%qs directive at %L associated with an ALLOCATE stmt must be preceded by an executable statement or OpenMP construct; note the variables in the list all have the allocatable or pointer attribute%qs directive at %L must either have a variable argument or, if associated with an ALLOCATE stmt, must be preceded by an executable statement or OpenMP construct%qs directive mentioned both times in ABSENT and CONTAINS clauses in %s directive at %L%qs directive mentioned multiple times in %s clause in %s directive at %L%qs does not support MIPS16 code%qs does not support feature %qs%qs does not work on a cross compiler%qs entity cannot have an initializer at %L%qs entity cannot have attributes at %C%qs expects 1 argument but %d given%qs expects 2 arguments but %d given%qs expects a constant argument%qs expects a fixed-point value as argument%qs expects a fixed-point value as first argument%qs expects an integer value as second argument%qs expression must be integral%qs expression of %<volatile%>-qualified type is deprecated%qs failed%qs feature modifier is incompatible with the use of floating-point types%qs feature modifier is incompatible with the use of vector types%qs function cannot have arguments%qs function cannot have different interrupt type%qs function cannot return a value%qs function uses %<auto%> type specifier without trailing return type%qs function with trailing return type has %<decltype(auto)%> as its type rather than plain %<auto%>%qs function with trailing return type has %qT as its type rather than plain %<auto%>%qs function with trailing return type has constrained %<auto%> type specifier rather than plain %<auto%>%qs function with trailing return type not declared with %<auto%> type specifier%qs has %qs%qs has both %<extern%> and initializer%qs has overflowed%qs in %<%s %E%>%qs in %s clause at %L is a zero size array section%qs in %s clause at %L is not a proper array section%qs in ALIGNED clause at %L requires a scalar positive constant integer alignment expression%qs in ALIGNED clause must be POINTER, ALLOCATABLE, Cray pointer or C_PTR at %L%qs in EXTENDS expression at %C is not a derived type%qs in LINEAR clause at %L requires a constant integer linear-step expression or dummy argument specified in UNIFORM clause%qs in LINEAR clause at %L requires a scalar integer linear-step expression%qs in attribute syntax terminated with %qs in pragma syntax%qs in empty declaration%qs in empty declaration with %<enum%> underlying type%qs in gimple IL%qs in pragma syntax terminated with %qs in attribute syntax%qs in the pointer assignment at %L cannot be an l-value since it is a procedure%qs in variable definition context (%s) at %L is not a variable%qs incompatible with explicitly disabled options%qs initialized and declared %<extern%>%qs into non-mode-precision operand%qs intrinsic subprogram at %L has been removed.  Use INT intrinsic subprogram.%qs intrinsic with CHARACTER argument at %L%qs intrinsic with KIND argument at %L%qs intrinsic with RADIX argument at %L%qs is a deprecated identifier in AVR-LibC.  Consider %<#include <avr/interrupt.h>%> or %<#include <compat/deprecated.h>%> before using the %qs macro%qs is a keyword with %qs onwards%qs is a nested function and cannot be accessed from %qs%qs is a reserved identifier in AVR-LibC.  Consider %<#include <avr/interrupt.h>%> before using the %qs macro%qs is already IMPORTed from host scoping unit at %C%qs is an invalid argument to %<-mcpu=%>%qs is an opaque type, and you cannot set it to other values%qs is an unknown %<-save-temps%> option%qs is corrupted%qs is defined but could not be loaded: %s%qs is defined but plugin support is disabled%qs is defined in header %qs; this is probably fixable by adding %<#include %s%>%qs is defined when using option %qs; this is probably fixable by adding %qs to the command-line options%qs is deprecated%qs is deprecated and not recommended in any circumstances%qs is deprecated; use -fno-zero-initialized-in-bss%qs is deprecated; use -fstack-check%qs is disabled by %<-m%s%>, because it requires %<%s%s%>%qs is incompatible with %<-mword-relocations%>%qs is incompatible with %qs%qs is incompatible with the use of floating-point types%qs is incompatible with the use of vector types%qs is loaded but symbol %qs is not found: %s%qs is mutually exclusive with %qs and cannot be specified together%qs is narrower than values of its type%qs is neither a defined operator nor a structure component in dotted string at %C%qs is not a constant expression because %qT contains a pointer to member type%qs is not a constant expression because %qT contains a pointer type%qs is not a constant expression because %qT contains a reference type%qs is not a constant expression because %qT contains a union type%qs is not a constant expression because %qT contains a volatile subobject%qs is not a constant expression because %qT is a pointer to member type%qs is not a constant expression because %qT is a pointer type%qs is not a constant expression because %qT is a reference type%qs is not a constant expression because %qT is a union type%qs is not a constant expression because %qT is volatile%qs is not a directory%qs is not a field, but a %qs%qs is not a gcov data file%qs is not a valid Modula-2 system library name or abbreviation%qs is not a valid base register in %<-mstack-protector-guard-reg=%>%qs is not a valid base register in %qs%qs is not a valid number in %<-mstack-protector-guard-offset=%>%qs is not a valid number in %qs%qs is not a valid offset in %<-mstack-protector-guard-offset=%>%qs is not a valid offset in %qs%qs is not a valid option to the preprocessor%qs is not an associative array%qs is not an expression%qs is not an inline-controlable intrinsic%qs is not an option that controls warnings%qs is not defined as a type%qs is not supported by arch %qs%qs is not supported for 64-bit Darwin; it is incompatible with the installed C and C++ libraries%qs is not supported for this target%qs is not supported in 32-bit mode%qs is not supported in this compiler configuration%qs is not supported in this configuration%qs is not supported on little endian systems%qs is not supported on this target%qs is not supported with %qs%qs is not supported, now cmodel is set to %qs%qs is not valid for %<-mmacosx-version-min%>%qs is not valid for %qs%qs is of a PRIVATE type and cannot be a dummy argument of %qs, which is PUBLIC at %L%qs is only supported when %<-mrvv-vector-bits=zvl%> is specified%qs is used uninitialized%qs is version %q.*s, expected version %q.*s%qs length expression must be integral%qs length expression must be positive constant integer expression%qs listed in %<allocate%> statement at %L but it is neither explicitly in listed in the %<!$OMP ALLOCATE%> directive nor exists a directive without argument list%qs matching variant is deprecated%qs matching variant requires z14 or higher%qs matching variant requires z15 or higher%qs matching variant requires z17 or higher%qs may be used uninitialized%qs may only be used with a single declarator%qs must be a module procedure or an external procedure with an explicit interface at %L%qs must be by itself for %<-mharden-sls=%>%qs must be of same type and kind as %qs at %L in %qs%qs must be the first clause of %qs%qs must be used with %qs%qs must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated%qs needs a valid base register%qs not allowed outside STRUCTURE at %C%qs not at element boundary%qs not supported by your assembler%qs not supported with %<-msoft-float%>%qs not yet supported%qs of %qs is PRIVATE at %L%qs of module %qs, imported at %C, is also the name of the current program unit%qs of non-mode-precision operand%qs only supported in OpenACC code%qs only supports non-pic code on M-profile targets%qs only supports non-pic code on M-profile targets with the MOVT instruction%qs operand not an integral type%qs option can be specified only for offload compiler%qs parameter inquiry for %qs in variable definition context (%s) at %L%qs plugin is not licensed under a GPL-compatible license%qs pointer is null%qs profile count data file not found%qs property cannot be set%qs region may not be closely nested inside of work-sharing, %<loop%>, explicit %<task%> or %<taskloop%> region%qs requires %<__ibm128%> type support%qs requires %<long double%> to be IBM 128-bit format%qs requires %qs%qs requires %qs or %qs%qs requires PowerPC64 architecture, enabling%qs requires VSX support%qs requires a target that provides the %qs instruction%qs requires an initialized data declaration%qs requires an integer constant%qs requires an integer constant expression%qs requires branch-likely instructions%qs requires full ISA 2.06 support%qs requires full ISA 3.0 support%qs requires quad-precision floating-point arithmetic%qs requires the %qs and %qs options%qs requires the %qs option%qs requires the %qs option and either the %qs or %qs option%qs should be %qs to terminate a template argument list%qs should be from a scalar to a like vector%qs specified bound %s exceeds maximum object size %E%qs specified bound %s exceeds the size %E of unterminated array%qs specified bound %s exceeds the size of at most %E of unterminated array%qs specified bound %s may exceed the size of at most %E of unterminated array%qs specified for auto variable %qE%qs specified for parameter %qE%qs specified for structure field%qs specified for structure field %qE%qs specified for unnamed parameter%qs specified in %<allocate%> at %L but not in the associated ALLOCATE statement%qs specified in %<allocate%> clause at %L but not in an explicit privatization clause%qs specified multiple times in the same option%qs specified with %<decltype%>%qs specified with %<typeof%>%qs specified with %qT%qs specified with typedef-name %qD%qs specifies a conflicting level of parallelism%qs statement operand %qE refers to a loop outside of its body%qs string ill-formed%qs symbol %q+D must have static linkage%qs symbol %q+D ultimately targets itself%qs tag used in naming %q#T%qs unsupported for this ABI%qs used with %<auto%>%qs used with %qE%qs uses dynamic stack allocation%qs uses register r29%qs value must be positive%qs variable is neither a pointer nor an array%qs variable is neither a pointer nor reference to pointer%qs variable is neither a pointer, nor an array nor reference to pointer or array%qs variable is not a pointer%qs was declared here%qs without corresponding %qs%qs: [%u] bad %<next_regno%> for empty chain (%u)%qs: [%u] bad %<oldest_regno%> (%u)%qs: [%u] non-empty register in chain (%s %u %i)%qs: loop in %<next_regno%> chain (%u)%r%s:%d:%R   %r%s:%d:%d:%R   %s%s
  %s  Same as %s.%s !$ACC LOOP loops not perfectly nested at %L%s %#qD%s %#qS%s %<%s(%E)%> %p %d%s %e expects a matching %e argument%s %e expects argument of type %e, but argument %d has type %e%s %qE does not fully implement the %qE protocol%s %qT requires the V ISA extension%s %qT requires the minimal vector length %qd but %qd is given%s %qT requires the zve32f, zve64f, zve64d or v ISA extension%s %qT requires the zve64d or v ISA extension%s %qT requires the zve64x, zve64f, zve64d or v ISA extension%s %qT requires the zvfhmin or zvfh ISA extension%s %qs%s %qs construct inside of %s %qs region%s %qs is an invalid argument to builtin %qs%s %s %p %d%s %s%s
  %s %wd out of range %wd - %wd%s '%s'
! %s - %u-bit integer numbers unsupported (mode %qs)%s - %u-bit-precision complex floating-point numbers unsupported (mode %qs)%s - %u-bit-precision decimal floating-point numbers unsupported (mode %qs)%s - %u-bit-precision floating-point numbers unsupported (mode %qs)%s - unsupported mode %qs%s argument to IMAGE_INDEX must be a rank one array at %L%s at %C is a DEC extension, enable with %<-fdec%>%s at %C is a DEC extension, enable with %<-fdec-static%>%s at %C is a DEC extension, enable with %<-fdec-structure%>%s at %L%s at %L has no default type%s at %L is a DEC extension, enable with %<-fdec-static%>%s at %L must be INTEGER%s at %L must be a scalar%s at %L must be integer%s attribute applied to %s %s at %L%s attribute at %L is not allowed outside of the specification part of a module%s attribute conflicts with %s attribute at %L%s attribute conflicts with %s attribute in %qs at %L%s attribute not allowed in BLOCK DATA program unit at %L%s attribute of %qs conflicts with %s attribute at %L%s between %L and %L%s between the MODULE PROCEDURE declaration in MODULE %qs and the declaration at %L in (SUB)MODULE %qs%s cannot be a DO CONCURRENT loop at %L%s cannot be a DO WHILE or DO without loop control at %L%s cannot be used in %<asm%> here%s cannot contain OpenMP API call in intervening code at %L%s cannot contain OpenMP directive in intervening code at %L%s cannot contain loop in intervening code at %L%s clause at %L requires a scalar INTEGER expression%s clause variable %qs at %L is neither a POINTER nor an array%s contains too many lines%s does not support %%n$ operand number formats%s does not support %s%s does not support %s with the %<%%%c%> %s format%s does not support block_ends_with_call_p%s does not support block_ends_with_condjump_p%s does not support can_duplicate_block_p%s does not support can_merge_blocks_p%s does not support can_remove_branch_p%s does not support create_basic_block%s does not support delete_basic_block%s does not support dump_bb_for_graph%s does not support duplicate_block%s does not support flow_call_edges_add%s does not support force_nonfallthru%s does not support make_forwarder_block%s does not support merge_blocks%s does not support move_block_after%s does not support predict_edge%s does not support predicted_by_p%s does not support redirect_edge_and_branch%s does not support redirect_edge_and_branch_force%s does not support split_block%s does not support split_edge%s does not support the %<%%%c%> %s format%s does not support the %<%%%s%c%> %s format%s does not support the %qs %s length modifier%s does not take any feature options%s exited with status %d%s expects a compile time integer constant%s expects a compile time integer constant of 0x01, 0x7f, 0x80 or 0xfe as first argument%s expects a compile time long integer constant as first argument%s expression list treated as compound expression%s from %s called in %s%s from %s referenced in %s%s ignored with %s and %<%%%c%> %s format%s ignored with %s in %s format%s inner loops must be perfectly nested at %L%s inner loops must be perfectly nested with ORDERED clause at %L%s inner loops must be perfectly nested with REDUCTION INSCAN clause at %L%s instructions aren%'t allowed in a function with the %<no_caller_saved_registers%> attribute%s instructions aren%'t allowed in an exception service routine%s instructions aren%'t allowed in an interrupt service routine%s is not supported by this configuration%s iteration variable at %L is bound in intervening code%s iteration variable must be of type integer at %L%s iteration variable must not be THREADPRIVATE at %L%s iteration variable present on clause other than PRIVATE, LASTPRIVATE or ALLOCATE at %L%s iteration variable present on clause other than PRIVATE, LASTPRIVATE, ALLOCATE or LINEAR at %L%s iteration variable used in more than one loop at %L%s loop bounds reference different iteration variables at %L%s loop end expression at %L uses variable bound in intervening code%s loop end expression not in canonical form at %L%s loop increment expression at %L uses variable bound in intervening code%s loop increment not in canonical form at %L%s loop start expression at %L uses variable bound in intervening code%s loop start expression not in canonical form at %L%s must contain at least one MAP clause at %L%s namespace %qD conflicts with reachable definition%s not supported for variable length aggregates%s not supported on this target%s operand cannot be used as %%i I/O address operand%s out of range: Range is %i to %i, value is %i%s pid %d terminated by %s%s procedure at %L is already declared as %s procedure%s procedure at %L is already declared as %s procedure. 
! F2008: A pointer function assignment is ambiguous if it is the first executable statement after the specification block. Please add any other kind of executable statement before it. FIXME%s returned %d exit status%s signal terminated program %s%s specifier in %s statement at %L has invalid value %qs%s specifier in %s statement at %L has value %qs%s statement at %C cannot follow %s statement at %L%s statement at %C cannot terminate a non-block DO loop%s statement at %C follows another accessibility specification%s statement at %C in PURE procedure%s statement at %C is not applicable to construct %qs%s statement at %C is not within a construct%s statement at %C is not within construct %qs%s statement at %C leaves CRITICAL construct%s statement at %C leaves DO CONCURRENT construct%s statement at %C leaving OpenACC structured block%s statement at %C leaving OpenMP structured block%s statement expected at %L%s statement is not allowed inside of BLOCK DATA at %C%s statement is not allowed inside of BLOCK at %C%s statement must appear in a MODULE%s statement not allowed in PURE procedure at %C%s statements at %L and %L have both no list item but only one may%s tag%s tag at %L must be a character string of default kind%s tag at %L must be of type %s%s tag at %L must be scalar%s tag with INQUIRE%s terminated with signal %d [%s]%s%s used with %<%%%c%> %s format%s used within a quoted sequence%s variable %qE is private in outer context%s%#qD%s%#qD (deleted)%s%#qD (ignored)%s%#qD (near match)%s%#qD (reversed)%s%#qD (rewritten)%s%<%D(%T)%> (built-in)%s%<%D(%T, %T)%> (built-in)%s%<%D(%T, %T, %T)%> (built-in)%s%qT (conversion)%s%qs%s is invalid%s%qs%s is not allowed%s%s%s %sversion %s (%s)
  %s	compiled by GNU C version %s, %s%s%s %sversion %s (%s) compiled by CC, %s%s%sIn instantiation of %q#D:
  %s%s%sIn substitution of %qS:
  %s%sGGC heuristics: --param ggc-min-expand=%d --param ggc-min-heapsize=%d
  %s%swarning: %s header version %s differs from library version %s.
! %s(): %2.2d %s is a table, but it improperly has a capacity of zero%s(): %2.2d %s<%s> improperly has a data.capacity of zero%s(): Invalid field type %s:%s(): Knows not the variable type %s for %s%s(): What in the name of Nero's fiddle are we doing here?%s(): asked to sort %s, but it's not a table%s(): called with NULL *field%s(): called with NULL *file%s(): field->type %s must be literal or alphanumeric%s(): for %s called with NULL field->var_decl_node%s(): for %s called with NULL file->var_decl_node%s(): syntax error -- both (or neither) GIVING and output-proc are specified%s(): syntax error -- both (or neither) USING and input-proc are specified%s(): syntax error -- both (or neither) files and output-proc are specified%s-%s is an empty range%s: %<-fcompare-debug%> failure%s: %<-fcompare-debug%> failure (length)%s: %d basic blocks and %d edges/basic block%s: %d basic blocks and %d registers; increase %<--param max-gcse-memory%> above %wu%s: %m%s: %s%s: %s compiler not installed on this system%s: %s: %s%s: PCH file was invalid%s: all warnings being treated as errors%s: attempt to rename spec %qs to already defined spec %qs%s: cannot open as COFF file%s: could not determine length of compare-debug file %s%s: could not open compare-debug file %s%s: couldn%'t open PCH file: %m%s: intrinsic function  %s not found%s: invalid function descr type '%c'%s: key must be field%s: linker input file not found: %m%s: linker input file unused because linking not done%s: not a COFF file%s: regcomp: %s%s: section %s.%d is missing%s: some warnings being treated as errors%s:%d file %s 'sequentially' is %d in %s%s:%d file %s 'where' is zero in %s%s:%d file %s access mode is 'file_inaccessible_e' in %s%s:%d file %s is INDEXED/SEQUENTIAL, but 'sequentially' is false%s:%d file %s is RELATIVE/RANDOM, but 'where' < 0%s:%d file %s is RELATIVE/SEQUENTIAL, but 'where' >= 0%s:%d: %zu exceeds MAXIMUM_UNTILS of %d, line %d%s:%d: LblNone '%s' has parent #%zu%s:%d: confused by earlier errors, bailing out
! %s:%d: could not add '%s'%s:%d: ignoring subscripts%s:%d: invalid symbol_type_t %d%s:%d: no symbol '%s' found%s:%d:%s%s:%d:assertion of condition %qs failed%s:%d:condition %s failed%s:%d:the value %s is not a BOOLEAN as the value is %d%s:%s: %E: %E%s:'%s' has arcs from exit block
  %s:'%s' has arcs to entry block
  %s:'%s' lacks entry and/or exit blocks
  %s:already seen blocks for '%s'
--- 1986,2011 ----
   No options with the desired characteristics were found
   None found.  Use --help=%s to show *all* the options supported by the %s front-end.
   [see %<-fallow-invalid-boz%>] because all of its copy and move constructors are deleted candidate 1: %q#F candidate 2: %q#F conflicting code gen style switches are used declared here the expression has a constant value but is not a C++ constant-expression zstd!$ACC LOOP %s loops don't form rectangular iteration space at %L!$ACC LOOP cannot be a DO CONCURRENT loop at %L!$ACC LOOP cannot be a DO WHILE or DO without loop control at %L!$ACC LOOP iteration variable must be of type integer at %L!$ACC ROUTINE already applied at %C!$ACC ROUTINE with GANG, WORKER, or VECTOR clause is not permitted in PURE procedure at %C!$ACC at %C starts a commented line as it neither is followed by a space nor is a continuation line!$OMP ASSUMES at %C must be in the specification part of a subprogram or module!$OMP ATOMIC CAPTURE capture statement reads from different variable than update statement writes into at %L!$OMP ATOMIC READ at %L incompatible with RELEASE clause!$OMP ATOMIC READ at %L incompatible with RELEASE clause implicitly provided by a REQUIRES directive!$OMP ATOMIC READ statement must read from a scalar variable of intrinsic type at %L!$OMP ATOMIC UPDATE at %L with FAIL clause requires either the COMPARE clause or using the intrinsic MIN/MAX procedure!$OMP ATOMIC WRITE at %L incompatible with ACQUIRE clause!$OMP ATOMIC WRITE at %L incompatible with ACQUIRES clause implicitly provided by a REQUIRES directive!$OMP ATOMIC assignment intrinsic IAND, IOR or IEOR must have two arguments at %L!$OMP ATOMIC assignment intrinsic must be MIN, MAX, IAND, IOR or IEOR at %L!$OMP ATOMIC assignment must be var = var op expr or var = expr op var at %L!$OMP ATOMIC assignment must have an operator or intrinsic on right hand side at %L!$OMP ATOMIC assignment operator must be binary +, *, -, /, .AND., .OR., .EQV. or .NEQV. at %L!$OMP ATOMIC at %L with %s clause is incompatible with READ or WRITE!$OMP ATOMIC at %L with %s clause requires %s clause!$OMP ATOMIC capture-statement must set a scalar variable of intrinsic type at %L!$OMP ATOMIC capture-statement requires a scalar variable of intrinsic type at %L!$OMP ATOMIC intrinsic arguments except one must not reference %qs at %L!$OMP ATOMIC intrinsic arguments must be scalar at %L!$OMP ATOMIC statement must assign an expression of intrinsic type at %L!$OMP ATOMIC statement must set a scalar variable of intrinsic type at %L!$OMP ATOMIC var = var op expr not mathematically equivalent to var = var op (expr) at %L!$OMP ATOMIC with ALLOCATABLE variable at %L!$OMP DECLARE REDUCTION %s not found at %L!$OMP DECLARE REDUCTION %s not found for type %s at %L!$OMP DECLARE SIMD should refer to containing procedure %qs at %L!$OMP DECLARE TARGET variable %qs at %L isn't SAVEd!$OMP REQUIRES at %C must appear in the specification part of a program unit!$OMP REQUIRES clause %<atomic_default_mem_order(%s)%> specified at %L overrides a previous %<atomic_default_mem_order(%s)%> (which might be through using a module)!$OMP REQUIRES clause %<atomic_default_mem_order(%s)%> specified via module %qs use at %L but same clause is not specified for the program unit!$OMP REQUIRES clause %<atomic_default_mem_order(%s)%> specified via module %qs use at %L overrides a previous %<atomic_default_mem_order(%s)%> (which might be through using a module)!$OMP REQUIRES clause %qs specified at %L comes after using a device construct/routine!$OMP REQUIRES clause %qs specified via module %qs use at %L but same clause is not specified for the program unit!$OMP REQUIRES clause %qs specified via module %qs use at %L comes after using a device construct/routine!$OMP SCAN at %L with zero executable statements in preceding structured block sequence!$OMP SCAN at %L with zero executable statements in succeeding structured block sequence!$OMP TARGET region at %L with a nested TEAMS at %L may not contain any other statement, declaration or directive outside of the single TEAMS construct!$OMP TARGET region at %L with a nested TEAMS may not contain any other statement, declaration or directive outside of the single TEAMS construct!$OMP at %C starts a commented line as it neither is followed by a space nor is a continuation line"::" was expected after module nature at %C but was not found"USE :: module" at %C# %s %.2f %.2f
  #embed <...> search starts here:
  #include "..." search starts here:
  #include <...> search starts here:
! $ descriptor at %L$ should be the last specifier in format at %L$OMP ERROR encountered at %L$OMP ERROR encountered at %L: %s%#qT declared here%#qT defined here%%:%<canon_for_mlib%> takes 1 or more pairs of parameters%%:%<target_mode_check%> takes an even number of parameters%%LOC() as an rvalue at %C%%a requires an address of memory%%d, %%e, %%f, %%g operand modifiers are for memory references or constant values only%+qD causes a section type conflict for section %qs%+qD causes a section type conflict with %qD in section %qs%+qD declared %qE after being used%+qD declared %qs after being used%+qD without %<retain%> attribute and %qD with %<retain%> attribute are placed in a section with the same name%<!$OMP %s%> at %L requires %<-fopenmp-allocators%>%<!%> not valid in GIMPLE%<#define %s%>%<#pragma %s%> may only be used at file scope%<#pragma %s%> may only be used in compound statements%<#pragma GCC %s%> must be inside a function%<#pragma GCC aarch64%> requires a string parameter%<#pragma GCC arm "arm_mve.h"%> requires a boolean parameter%<#pragma GCC arm%> requires a string parameter%<#pragma GCC memregs%> must precede any function declarations%<#pragma GCC memregs%> takes a number [0-16]%<#pragma GCC optimize (string [,string]...)%> does not have a final %<)%>%<#pragma GCC optimize%> is not a string or number%<#pragma GCC optimize%> is not allowed inside functions%<#pragma GCC optimize%> string is badly formed%<#pragma GCC option%> is not a string%<#pragma GCC option%> is not allowed inside functions%<#pragma GCC pch_preprocess%> must be first%<#pragma GCC pop_options%> without a corresponding %<#pragma GCC push_options%>%<#pragma GCC target (string [,string]...)%> does not have a final %<)%>%<#pragma GCC target%> is not supported for this machine%<#pragma GCC target%> string is badly formed%<#pragma GCC unroll%> requires an assignment-expression that evaluates to a non-negative integral constant less than %u%<#pragma GCC visibility push()%> must specify %<default%>, %<internal%>, %<hidden%> or %<protected%>%<#pragma GCC visibility%> must be followed by %<push%> or %<pop%>%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported for C++%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported on this target%<#pragma acc %s data%> has no data movement clause%<#pragma acc routine%> must be applied before definition%<#pragma acc routine%> must be applied before use%<#pragma acc routine%> must be at file scope%<#pragma acc routine%> names a set of overloads%<#pragma acc routine%> not immediately followed by a single function declaration or definition%<#pragma acc routine%> not immediately followed by function declaration or definition%<#pragma acc update%> must contain at least one %<device%> or %<host%> or %<self%> clause%<#pragma align%> must appear before the declaration of %qD, ignoring%<#pragma implementation%> for %qs appears after file is included%<#pragma message: %s%>%<#pragma omp allocate%> not yet supported%<#pragma omp assumes%> may only be used at file or namespace scope%<#pragma omp atomic capture%> uses two different expressions for memory%<#pragma omp atomic capture%> uses two different variables for memory%<#pragma omp atomic compare capture%> with non-integral comparison result%<#pragma omp atomic read%> incompatible with %<release%> clause%<#pragma omp atomic read%> incompatible with %<release%> clause implicitly provided by a %<requires%> directive%<#pragma omp atomic update%> uses two different expressions for memory%<#pragma omp atomic update%> uses two different variables for memory%<#pragma omp atomic write%> incompatible with %<acquire%> clause%<#pragma omp atomic write%> incompatible with %<acquire%> clause implicitly provided by a %<requires%> directive%<#pragma omp cancel%> must specify one of %<parallel%>, %<for%>, %<sections%> or %<taskgroup%> clauses%<#pragma omp cancellation point%> must specify one of %<parallel%>, %<for%>, %<sections%> or %<taskgroup%> clauses%<#pragma omp critical%> with %<hint%> clause requires a name, except when %<omp_sync_hint_none%> is used%<#pragma omp declare %s%> followed by %<#pragma omp declare %s%>%<#pragma omp declare %s%> must be followed by function declaration or definition%<#pragma omp declare %s%> must be followed by function declaration or definition or another %<#pragma omp declare %s%>%<#pragma omp declare %s%> not immediately followed by a function declaration or definition%<#pragma omp declare %s%> not immediately followed by a single function declaration or definition%<#pragma omp declare %s%> not immediately followed by function declaration or definition%<#pragma omp declare reduction%> combiner refers to variable %qD which is not %<omp_out%> nor %<omp_in%>%<#pragma omp declare reduction%> initializer refers to variable %qD which is not %<omp_priv%> nor %<omp_orig%>%<#pragma omp declare reduction%> not at file or block scope%<#pragma omp dispatch%> must be followed by a direct function call with optional assignment%<#pragma omp dispatch%> must be followed by a function call with optional assignment%<#pragma omp end declare target%> without corresponding %<#pragma omp declare target%> or %<#pragma omp begin declare target%>%<#pragma omp error%> with %<at(execution)%> clause may only be used in compound statements%<#pragma omp ordered%> with %qs clause may only be used in compound statements%<#pragma omp requires%> may only be used at file or namespace scope%<#pragma omp scan%> may only be used in a loop construct with %<inscan%> %<reduction%> clause%<#pragma omp scan%> with zero preceding executable statements%<#pragma omp scan%> with zero succeeding executable statements%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct%<#pragma omp simd%> used with class iteration variable %qE%<#pragma omp target data%> must contain at least one %<map%>, %<use_device_ptr%> or %<use_device_addr%> clause%<#pragma omp target data%> with map-type other than %<to%>, %<from%>, %<tofrom%> or %<alloc%> on %<map%> clause%<#pragma omp target enter data%> must contain at least one %<map%> clause%<#pragma omp target enter data%> with map-type other than %<to%>, %<tofrom%> or %<alloc%> on %<map%> clause%<#pragma omp target exit data%> must contain at least one %<map%> clause%<#pragma omp target exit data%> with map-type other than %<from%>, %<tofrom%>, %<release%> or %<delete%> on %<map%> clause%<#pragma omp target update%> must contain at least one %<from%> or %<to%> clauses%<#pragma omp target%> with map-type other than %<to%>, %<from%>, %<tofrom%> or %<alloc%> on %<map%> clause%<#pragma pack (pop)%> encountered without matching %<#pragma pack (push)%>%<#pragma pack%> has no effect with %<-fpack-struct%> - ignored%<#pragma pack(pop, %E)%> encountered without matching %<#pragma pack(push, %E)%>%<#pragma redefine_extname%> ignored due to conflict with %<asm%> declaration%<#pragma redefine_extname%> ignored due to conflict with previous %<#pragma redefine_extname%>%<#pragma redefine_extname%> ignored due to conflict with previous rename%<#pragma riscv intrinsic%> requires a string parameter%<#pragma scalar_storage_order%> is not supported for C++%<#pragma vtable%> no longer supported%<#pragma weak%> declaration of %q+D not allowed, ignored%<#pragma%> GHS endXXX does not match previous startXXX%<#pragma%> GHS endXXX found without previous startXXX%<#pragma%> is not allowed here%<#undef %E%>%<$%>operand number used after format without operand number%<%%%> constraint used with last operand%<%%%c%> yields only last 2 digits of year%<%%%c%> yields only last 2 digits of year in some locales%<%.*s%> directive argument is not a nul-terminated string%<%.*s%> directive argument is null%<%.*s%> directive output between %wu and %wu bytes causes result to exceed %<INT_MAX%>%<%.*s%> directive output between %wu and %wu bytes exceeds %<INT_MAX%>%<%.*s%> directive output between %wu and %wu bytes exceeds minimum required size of 4095%<%.*s%> directive output between %wu and %wu bytes may cause result to exceed %<INT_MAX%>%<%.*s%> directive output between %wu and %wu bytes may exceed minimum required size of 4095%<%.*s%> directive output may be truncated writing %wu byte into a region of size %wu%<%.*s%> directive output may be truncated writing %wu bytes into a region of size %wu%<%.*s%> directive output may be truncated writing %wu byte into a region of size between %wu and %wu%<%.*s%> directive output may be truncated writing %wu bytes into a region of size between %wu and %wu%<%.*s%> directive output may be truncated writing %wu or more bytes into a region of size %wu%<%.*s%> directive output may be truncated writing %wu or more bytes into a region of size between %wu and %wu%<%.*s%> directive output may be truncated writing between %wu and %wu bytes into a region of size %wu%<%.*s%> directive output may be truncated writing between %wu and %wu bytes into a region of size between %wu and %wu%<%.*s%> directive output may be truncated writing likely %wu or more bytes into a region of size %wu%<%.*s%> directive output may be truncated writing likely %wu or more bytes into a region of size between %wu and %wu%<%.*s%> directive output may be truncated writing up to %wu bytes into a region of size %wu%<%.*s%> directive output may be truncated writing up to %wu bytes into a region of size between %wu and %wu%<%.*s%> directive output of %wu bytes causes result to exceed %<INT_MAX%>%<%.*s%> directive output of %wu bytes exceeds %<INT_MAX%>%<%.*s%> directive output of %wu bytes exceeds minimum required size of 4095%<%.*s%> directive output truncated writing %wu byte into a region of size %wu%<%.*s%> directive output truncated writing %wu bytes into a region of size %wu%<%.*s%> directive output truncated writing %wu byte into a region of size between %wu and %wu%<%.*s%> directive output truncated writing %wu bytes into a region of size between %wu and %wu%<%.*s%> directive output truncated writing %wu or more bytes into a region of size %wu%<%.*s%> directive output truncated writing %wu or more bytes into a region of size between %wu and %wu%<%.*s%> directive output truncated writing between %wu and %wu bytes into a region of size %wu%<%.*s%> directive output truncated writing between %wu and %wu bytes into a region of size between %wu and %wu%<%.*s%> directive output truncated writing likely %wu or more bytes into a region of size %wu%<%.*s%> directive output truncated writing likely %wu or more bytes into a region of size between %wu and %wu%<%.*s%> directive output truncated writing up to %wu bytes into a region of size %wu%<%.*s%> directive output truncated writing up to %wu bytes into a region of size between %wu and %wu%<%.*s%> directive precision out of range%<%.*s%> directive width out of range%<%.*s%> directive writing %wu byte into a region of size %wu%<%.*s%> directive writing %wu bytes into a region of size %wu%<%.*s%> directive writing %wu byte into a region of size between %wu and %wu%<%.*s%> directive writing %wu bytes into a region of size between %wu and %wu%<%.*s%> directive writing %wu or more bytes into a region of size %wu%<%.*s%> directive writing %wu or more bytes into a region of size between %wu and %wu%<%.*s%> directive writing between %wu and %wu bytes into a region of size %wu%<%.*s%> directive writing between %wu and %wu bytes into a region of size between %wu and %wu%<%.*s%> directive writing likely %wu or more bytes into a region of size %wu%<%.*s%> directive writing likely %wu or more bytes into a region of size between %wu and %wu%<%.*s%> directive writing up to %wu bytes into a region of size %wu%<%.*s%> directive writing up to %wu bytes into a region of size between %wu and %wu%<%D::%D%> is not a class member%<%D::%D%> is not a member of %qT%<%E (%E)%> attribute ignored on functions declared %qs%<%E (%E)%> attribute ignored with deallocation functions declared %qs%<%E::%E%> has not been declared%<%E::%E%> has not been declared; did you mean %<%E::%s%>?%<%E::%E%> is not a class or namespace%<%E::%E%> is not a class, namespace, or enumeration%<%E::%E%> is not a type%<%E::%E%> scoped attribute directive ignored%<%T%s%D%> names destructor%<%T::%D%> names constructor in %qT%<%T::%E%> has not been declared%<%T::%E%> is not a type%<%T::%E%> names the constructor, not the type%<%c%> is not a valid character in an identifier%<%c%> is not a valid first character for an identifier%<%c%E%> not found in protocol(s)%<%s %E%> declared inside parameter list will not be visible outside of this definition or declaration%<%s %s%> construct not closely nested inside of %qs%<%s + %s%> at %L must be less than or equal to BIT_SIZE(%qs)%<%s taskgroup%> construct not closely nested inside of %<taskgroup%> region%<%s%s%>: expected KEY=VALUE-style parameter for format %qs after %qs; got %qs%<%s%s%>: missing required key %qs for format %qs; try %<%s%s:%s=%s%>%<%s%s%>: unexpected value %qs for key %qs; expected %qs or %qs%<%s%s%>: unexpected value %qs for key %qs; known values: %e%<%s%s%>: unknown key %qs for format %qs; known keys: %e%<%s%s%>: unrecognized format %qs; known formats: %e%<%s%s%s%s%s%> directive mentioned in both %<absent%> and %<contains%> clauses%<%s%s%s%s%s%> directive mentioned multiple times in %qs clauses%<%s(%s)%> is only allowed in %<omp ordered%>%<%s=%s%> and %<%s-%s%> are incompatible%<&%> constraint used with no register class%<&%> not allowed by itself in line %d%<&%> should come before %<...%>%<&&%> not valid in GIMPLE%<)%> expected at %C%<*%> in boolean context, suggest %<&&%> instead%<*this%> capture only available with %<-std=c++17%> or %<-std=gnu++17%>%<-%> modifier used inside of a function%<-%s%> conflicts with the other architecture options, which specify a %s processor%<--help%> argument %q.*s is ambiguous, please be more specific%<--param constructive-interference-size=%d%> is greater than %<--param l1-cache-line-size=%d%>%<--param constructive-interference-size=%d%> is less than %d%<--param destructive-interference-size=%d%> is less than %<--param l1-cache-line-size=%d%>%<--param destructive-interference-size=%d%> is less than %d%<-I-%> specified twice%<-MF%> and %<-fdeps-file=%> cannot share an output file %s: %m%<-MG%> may only be used with %<-M%> or %<-MM%>%<-W%serror=%s%>: no option %<-%s%>%<-W%serror=%s%>: no option %<-%s%>; did you mean %<-%s%>?%<-Wabi=1%> is not supported, using =2%<-Werror=%> argument %qs is not valid for %s%<-Werror=%s%>: %<-%s%> is not an option that controls warnings%<-Wformat-contains-nul%> ignored without %<-Wformat%>%<-Wformat-extra-args%> ignored without %<-Wformat%>%<-Wformat-nonliteral%> ignored without %<-Wformat%>%<-Wformat-security%> ignored without %<-Wformat%>%<-Wformat-y2k%> ignored without %<-Wformat%>%<-Wformat-zero-length%> ignored without %<-Wformat%>%<-Wmisleading-indentation%> is disabled from this point onwards, since column-tracking was disabled due to the size of the code/headers%<-Wstrict-flex-arrays%> is ignored when %<-fstrict-flex-arrays%> is not present%<-f%s%> and %<%s=%s%> are incompatible%<-f%s%> is not supported with CONST16 instructions%<-f%s%> not supported: ignored%<-f%sleading-underscore%> not supported on this target machine%<-fPIC%> and %<-fpic%> are not supported on this target%<-fPIC%> is not supported%<-fPIC%>/%<-fpic%> not supported for this target%<-fPIE%> is not supported%<-fabi-compat-version=1%> is not supported, using =2%<-fabi-version=%d%> is not supported, using =%d%<-fabi-version=1%> is no longer supported%<-fabi-version=12%> (GCC 8.1) accidentally changes the calling convention for %qT%<-fabi-version=13%> (GCC 8.2) fixes the calling convention for %qT, which was accidentally changed in 8.1%<-falign-%s%> is not between 0 and %d%<-falign-labels=%d%> is not supported%<-falign-loops=%d%> is not supported%<-faligned-new=%d%> is not a power of two%<-fasan-shadow-offset%> should only be used with %<-fsanitize=kernel-address%>%<-fassociative-math%> disabled; other options take precedence%<-fcall-saved-REG%> is not supported for out registers%<-fcf-protection%> is not compatible with this target%<-fcf-protection=branch%> is not supported for this target%<-fcf-protection=full%> is not enabled by %<-fhardened%> because it was specified on the command line%<-fcf-protection=full%> is not supported for this target%<-fcf-protection=return%> is not supported for this target%<-fcontract-assumption-mode=%> cannot be mixed with p1332/p1429%<-fcontract-assumption-mode=%> must be %<on%> or %<off%>%<-fcontract-build-level=%> cannot be mixed with p1332/p1429%<-fcontract-build-level=%> must be off|default|audit%<-fcontract-continuation-mode=%> cannot be mixed with p1332/p1429%<-fcontract-continuation-mode=%> must be %<on%> or %<off%>%<-fcontract-level=%> too many custom roles%<-fcontract-role=%> cannot be mixed with std/p1429 contract flags%<-fcontract-role=%> must be in the form role:semantics%<-fcontract-role=%> semantics must include default,audit,axiom values%<-fcontract-semantic=%> cannot be mixed with std/p1332 contract flags%<-fcontract-semantic=%> cannot find default role%<-fcontract-semantic=%> level must be default, audit, or axiom%<-fcontract-semantic=%> must be in the form level:semantic%<-fconvert=r16_ieee%> or %<-fconvert=r16_ibm%> not supported on this architecture%<-fd-lines-as-code%> has no effect in free form%<-fd-lines-as-comments%> has no effect in free form%<-fdata-sections%> not supported for this target%<-fdbg-cnt=%s:%d-%d%> has smaller upper limit than the lower%<-fdeps-format=%> unknown format %qs%<-fdirectives-only%> is incompatible with %<-Wunused-macros%>%<-fdirectives-only%> is incompatible with %<-traditional%>%<-femit-struct-debug-detailed=dir:...%> must allow at least as much as %<-femit-struct-debug-detailed=ind:...%>%<-fexcess-precision=16%> for Ada%<-fexcess-precision=16%> for Fortran%<-fexcess-precision=16%> is not compatible with %<-mfpmath=387%>%<-fexcess-precision=16%> is not supported on this target%<-fexcess-precision=standard%> for Ada%<-fexcess-precision=standard%> for Fortran%<-ffunction-sections%> not supported for this target%<-fhandle-exceptions%> has been renamed %<-fexceptions%> (and is now on by default)%<-fhardened%> not supported for this target%<-fimplicit-constexpr%> only affects %<inline%> functions%<-fipa-modref%> is incompatible with %qs%<-fipa-reorder-for-locality%> is incompatible with an explicit %qs option%<-flinker-output=rel%> and %<-fltrans%> are mutually exclusive%<-fmodule-only%> used for non-interface%<-fmoduleinfo%> is not supported on this target%<-fno-fat-lto-objects%> are supported only with linker plugin%<-fno-gnu89-inline%> is only supported in GNU99 or C99 mode%<-fobjc-abi-version%> %d is not supported for 32 bit targets with %<-fnext-runtime%>%<-fobjc-abi-version%> 2 must be used for 64 bit targets with %<-fnext-runtime%>%<-fobjc-exceptions%> is required to enable Objective-C exception syntax%<-fobjc-gc%> is ignored for %<-fgnu-runtime%>%<-fobjc-sjlj-exceptions%> is ignored for %<-fgnu-runtime%>%<-fobjc-sjlj-exceptions%> is ignored for %<-fnext-runtime%> when %<-fobjc-abi-version%> greater than 1%<-fobjc-sjlj-exceptions%> is the only supported exceptions system for %<-fnext-runtime%> with %<-fobjc-abi-version%> argument less than 2%<-foffload-abi-host-opts%> not specified%<-foffload-abi-host-opts%> not specified.%<-foffload-abi-host-opts%> specified multiple times%<-fonly=%> argument is different from first input file name%<-fopenacc-dim%> operand is malformed at %qs%<-fpic%> and %<-fPIC%> not supported without %<-mdsbt%> on this target%<-fpic%> and %<-mapcs-reent%> are incompatible%<-fpic%> is not supported%<-fpie%> is not supported%<-fprefetch-loop-arrays%> is not supported with %<-Os%>%<-fprefetch-loop-arrays%> not supported for this target%<-fprefetch-loop-arrays%> not supported for this target (try %<-march%> switches)%<-frecord-gcc-switches%> is not supported by the current target%<-freorder-blocks-and-partition%> does not support unwind info on this architecture%<-freorder-blocks-and-partition%> does not work on this architecture%<-freorder-blocks-and-partition%> does not work with exceptions on this architecture%<-freorder-blocks-and-partition%> not supported on this architecture%<-fsanitize-address-use-after-scope%> requires %<-fstack-reuse=none%> option%<-fsanitize-recover=%s%> is not supported%<-fsanitize-trap=%s%> is not supported%<-fsanitize=%s%> is incompatible with %<-fsanitize=%s%>%<-fsanitize=address%> and %<-fsanitize=kernel-address%> are not supported for this target%<-fsanitize=address%> not supported for this target%<-fsanitize=all%> option is not valid%<-fsanitize=kernel-address%> with stack protection is not supported without %<-fasan-shadow-offset=%> for this target%<-fsanitize=pointer-compare%> must be combined with %<-fsanitize=address%> or %<-fsanitize=kernel-address%>%<-fsanitize=pointer-subtract%> must be combined with %<-fsanitize=address%> or %<-fsanitize=kernel-address%>%<-fsanitize=shadow-call-stack%> not supported in current platform%<-fsanitize=shadow-call-stack%> requires %<-ffixed-x18%>%<-fsanitize=shadow-call-stack%> requires %<-fno-exceptions%>%<-fsplit-stack%> currently only supported on GNU/Linux%<-fsplit-stack%> currently only supported on PowerPC64 GNU/Linux with glibc-2.18 or later%<-fsplit-stack%> does not support 2 register parameters for a nested function%<-fsplit-stack%> does not support 3 register parameters%<-fsplit-stack%> does not support fastcall with nested function%<-fsplit-stack%> is not supported by this compiler configuration%<-fsplit-stack%> requires assembler support for CFI directives%<-fstack-check=%> and %<-fstack-clash-protection%> are mutually exclusive; disabling %<-fstack-check=%>%<-fstack-check=specific%> for Thumb-1%<-fstack-check=specific%> not implemented for MIPS16%<-fstack-clash-protection%> is not enabled by %<-fhardened%> because %<-fstack-check%> was specified on the command line%<-fstack-clash-protection%> is not supported on targets where the stack grows from lower to higher addresses%<-fstack-limit-%> options are ignored with %<-mfdpic%>; use %<-mstack-check-l1%>%<-fstack-limit-%> options are not supported on this cpu%<-fstack-protector%> does not work on this architecture%<-fstack-protector%> not supported for this target%<-fstack-protector-strong%> is not enabled by %<-fhardened%> because it was specified on the command line%<-ftrivial-auto-var-init=zero%> is not enabled by %<-fhardened%> because it was specified on the command line%<-fuse-cxa-atexit%> is not supported for msp430-elf%<-fuse-linker-plugin%>, but %s not found%<-fwpa%> and %<-fltrans%> are mutually exclusive%<-g%> is only supported when using GAS on this processor%<-g%> option disabled%<-g%> with %<-mno-apcs-frame%> may not give sensible debugging%<-g3%> is not supported by the debug linker in use (set to 2)%<-gas-locview-support%> is forced disabled without %<-gas-loc-support%>%<-gdwarf%s%> is ambiguous; use %<-gdwarf-%s%> for DWARF version or %<-gdwarf%> %<-g%s%> for debug level%<-gdwarf-6%> is output as version 5 with incompatibilities%<-ginline-points%> is forced disabled without %<-gstatement-frontiers%>%<-ginternal-reset-location-views%> is forced disabled without %<-gvariable-location-views%>%<-gnat%> misspelled as %<-gant%>%<-gsplit-dwarf%> is not supported on this platform, ignored%<-gsplit-dwarf%> is not supported with LTO, disabling%<-iplugindir%> option not passed from the gcc driver%<-m%s%> not supported in this configuration%<-m%s%> overrides %<-m%s=%s%>, adjusting ABI to %qs%<-m%s=%s%> conflicts with %qs, which requires %<%s%s%>%<-m32%> conflicts with %<-arch ppc64%> (%<-m32%> ignored)%<-m32%> conflicts with %<-arch x86_64%> (%<-m32%> ignored)%<-m64%> requires a PowerPC64 cpu%<-m96bit-long-double%> is not compatible with this target%<-mabi=%s%> not supported with %<-fsanitize=address%>%<-mabi=%s%> not supported with %<-fsanitize=kernel-address%>%<-mabi=%s%> not supported with %<-fsanitize=thread%>%<-mabi=2fp+%> option only support when FPU available, must be enable %<-mext-fpu-sp%> or %<-mext-fpu-dp%>%<-mabi=ilp32%> is deprecated%<-mabi=ms%> not supported with X32 ABI%<-maix64%> required: 64-bit computation with 32-bit addressing not yet supported%<-maix64%> requires PowerPC64 architecture remain enabled%<-malign-functions%> is obsolete, use %<-falign-functions%>%<-malign-functions=%d%> is not between 0 and %d%<-malign-jumps%> is obsolete, use %<-falign-jumps%>%<-malign-jumps=%d%> is not between 0 and %d%<-malign-loops%> is obsolete, use %<-falign-loops%>%<-malign-loops=%d%> is not between 0 and %d%<-mapcs-stack-check%> incompatible with %<-mno-apcs-frame%>%<-mapx-features=%> option is not supported for 32-bit code%<-mapxf%> is not supported for 32-bit code%<-march=%> must be specified%<-march=%s%> is not compatible with the selected ABI%<-march=%s%> requires %<-mfp32%>%<-march=%s%>: %s must separate with %<_%>%<-march=%s%>: ISA string must begin with rv32 or rv64%<-march=%s%>: Not single-letter extension. %<%c%>%<-march=%s%>: expect number after %<%dp%>%<-march=%s%>: extension %qs appear more than one time%<-march=%s%>: extension %qs is unsupported standard single letter extension%<-march=%s%>: extension %qs starts with 's' but is unsupported standard supervisor extension%<-march=%s%>: extension %qs starts with 'x' but is unsupported non-standard extension%<-march=%s%>: extension %qs starts with 'z' but is unsupported standard extension%<-march=%s%>: first ISA subset must be %<e%>, %<i%> or %<g%>%<-march=%s%>: for %<%s%dp%dp?%>, version number with more than 2 level is not supported%<-march=%s%>: h extension requires i extension%<-march=%s%>: i, e or g must be the first extension%<-march=%s%>: name of %s must be more than 1 letter%<-march=%s%>: rv%de is not a valid base ISA%<-march=%s%>: xtheadvector conflicts with vector extension or its sub-extensions%<-march=%s%>: z*inx conflicts with floating-point extensions%<-march=%s%>: zcd conflicts with zcmp%<-march=%s%>: zcd conflicts with zcmt%<-march=%s%>: zcf extension supports in rv32 only%<-masm=intel%> not supported in this configuration%<-mavx10.1%> is aliased to 512 bit since GCC14.3 and GCC15.1 while %<-mavx10.1-256%> and %<-mavx10.1-512%> will be deprecated in GCC 16 due to all machines 512 bit vector size supported%<-max-stackframe=%d%> is not usable, not between 0 and %d%<-mbackchain%> %<-mpacked-stack%> %<-mhard-float%> are not supported in combination%<-mbranch-cost=%d%> is not between 0 and 5%<-mcall-aixdesc%> incompatible with %<-mabi=elfv2%>%<-mcall-ms2sysv-xlogues%> is not compatible with %s%<-mcall-ms2sysv-xlogues%> isn%'t currently supported with SEH%<-mcmodel%> incompatible with other toc options%<-mcmodel=%> is not supported in 32-bit mode%<-mcode-region=either%> requires the large memory model (%<-mlarge%>)%<-mcode-region=upper%> requires the large memory model (%<-mlarge%>)%<-mcorea%> and %<-mcoreb%> cannot be used together%<-mcorea%> should be used with %<-mmulticore%>%<-mcoreb%> should be used with %<-mmulticore%>%<-mcpu=%> is deprecated; use %<-mtune=%> or %<-march=%> instead%<-mcpu=%s%> conflicts with %<-march=%s%>%<-mcpu=%s%> has invalid silicon revision%<-mcpu=%s%> is not valid%<-mcpu=%s%>: unknown CPU%<-mdata-region=either%> requires the large memory model (%<-mlarge%>)%<-mdata-region=upper%> requires the large memory model (%<-mlarge%>)%<-mdiv%> requires %<-march%> to subsume the %<M%> extension%<-mdouble-float%> ignored without %<-mhard-float%>%<-mdynamic-no-pic%> overrides %<-fpic%>, %<-fPIC%>, %<-fpie%> or %<-fPIE%>%<-mes0%> can only be used with C%<-mevex512%> will be deprecated in GCC 16 due to all machines 512 bit vector size supported%<-mexr%> is used without %<-ms%>%<-mexr%> is used without %<-ms%> or %<-msx%>%<-mfdivdu%> ignored without %<-mhard-float%>%<-mfdpic%> is not supported, please use a bfin-linux-uclibc target%<-mfentry%> is supported only for 64-bit CPUs%<-mfentry%> isn%'t supported for 32-bit in combination with %<-fpic%>%<-mfloat-abi=hard%> and VFP%<-mfloat-abi=hard%>: selected architecture lacks an FPU%<-mfpxx%> can only be used with the o32 ABI%<-mfunction-return%> and %<-fcf-protection%> are not compatible%<-mfunction-return=%s%> and %<-mcmodel=large%> are not compatible%<-mfused-madd%> is deprecated; use %<-ffp-contract=%> instead%<-mgp32%> and %<-mfp64%> can only be combined if the target supports the mfhc1 and mthc1 instructions%<-mgp32%> and %<-mfp64%> can only be combined when using the o32 ABI%<-mgp32%> used with a 64-bit ABI%<-mgp64%> used with a 32-bit ABI%<-mgp64%> used with a 32-bit processor%<-mhard-dfp%> cannot be used in conjunction with %<-msoft-float%>%<-mhard-float%> is not supported by the selected CPU%<-mincoming-stack-boundary=%d%> is not between %d and 12%<-mindirect-branch%> and %<-fcf-protection%> are not compatible%<-mindirect-branch=%s%> and %<-mcmodel=large%> are not compatible%<-mintel-syntax%> and %<-mno-intel-syntax%> are deprecated; use %<-masm=intel%> and %<-masm=att%> instead%<-mips3d%> requires %<-mpaired-single%>%<-misr-secure=%d%> argument not in between 0 and 3%<-misr-vector-size=%d%> argument must be 4 or 16%<-mlam=%> option: [u48|u57] not supported for 32-bit code%<-mlam=u48%> is not compatible with Hardware-assisted AddressSanitizer, override to %<-mlam=u57%>%<-mlarge%> requires a 430X-compatible %<-mmcu=%>%<-mlong-double-64%> not allowed with %<-m64%>%<-mloongson-ext2%> must be used with %<-mloongson-ext%>%<-mloongson-mmi%> must be used with %<-mhard-float%>%<-mmsa%> must be used with %<-mfp64%> and %<-mhard-float%>%<-mmul=g13%> cannot be used with %<-mcpu=g10%>%<-mmul=g13%> cannot be used with %<-mcpu=g14%>%<-mmul=g14%> cannot be used with %<-mcpu=g10%>%<-mmul=g14%> cannot be used with %<-mcpu=g13%>%<-mmulticore%> can only be used with BF561%<-mn%> is not supported for linux targets%<-mno-%s%> turns off %<-m%s%>%<-mno-allow-string-insns%> forbids the generation of the RMPA instruction%<-mno-altivec%> disables vsx%<-mno-avx10.1-256, -mno-avx10.1-512%> cannot disable AVX512 instructions when %<-mavx512XXX%> in GCC 15, behavior will change to it will disable all the instructions in GCC 16%<-mno-avx512XXX%> cannot disable AVX10 instructions when AVX10 is available in GCC 15, behavior will change to it will disable that part of AVX512 instructions since GCC 16%<-mno-dpfp-lrsr%> supported only with %<-mdpfp%>%<-mno-evex512%> or %<-mno-avx512XXX%> cannot disable AVX10 instructions when AVX10.1-512 is available in GCC 15, behavior will change to it will disable that part of AVX512 instructions since GCC 16%<-mno-exr%> is valid only with %<-ms%> or %<-msx%> - option ignored%<-mno-fentry%> isn%'t compatible with SEH%<-mno-gpopt%> needs %<-mexplicit-relocs%>%<-mno-mpy%> supported only for ARC700 or ARCv2%<-mno-pic-data-is-text-relative%> cannot be used without %<-fpic%>/%<-fPIC%>%<-mnop-mcount%> is not compatible with this target%<-mnop-mcount%> is not implemented for %<-fno-plt%>%<-mpcrel%> %<-fPIC%> is not currently supported on selected cpu%<-mpic-register=%> is useless without %<-fpic%>%<-mpic-symbol-stubs%> is not required for 64-bit code (ignored)%<-mpreferred-stack-boundary%> is not supported for this target%<-mpreferred-stack-boundary=%d%> is not between %d and %d%<-mpreferred-stack-boundary=%d%> must be between %d and %d%<-mquad-memory%> is not available in little endian mode%<-mquad-memory%> requires 64-bit mode%<-mquad-memory-atomic%> requires 64-bit mode%<-mregparm%> is ignored for Intel MCU psABI%<-mregparm%> is ignored in 64-bit mode%<-mregparm=%d%> is not between 0 and %d%<-mrelax%> is only supported for RTP PIC%<-mriscv-attribute%> RISC-V ELF attribute requires GNU as 2.32 [%<-mriscv-attribute%>]%<-mrop-protect%> requires %<-mcpu=power8%> or later%<-mrop-protect%> requires the ELFv2 ABI%<-mrtd%> is ignored in 64bit mode%<-ms2600%> is used without %<-ms%>%<-mshared-library-id=%> specified without %<-mid-shared-library%>%<-mshared-library-id=%s%> is not between 0 and %d%<-msmart%> is incompatible with %<-mhigh-registers%>%<-mspfp_fast%> not available on ARC600 or ARC601%<-msse5%> was removed%<-msseregparm%> used without SSE enabled%<-mstack-guard%> implies use of %<-mstack-size%>%<-mstack-protector-guard=tls%> needs a hardware TLS register%<-mstringop-strategy=rep_8byte%> not supported for 32-bit code%<-mtpf-trace-hook-epilogue-check%> requires integer in range 0-4095%<-mtpf-trace-hook-epilogue-target%> requires integer in range 0-4095%<-mtpf-trace-hook-prologue-check%> requires integer in range 0-4095%<-mtpf-trace-hook-prologue-target%> requires integer in range 0-4095%<-mtune=%> expects mn10300, am33, am33-2, or am34%<-mtune=x86-64%> is deprecated; use %<-mtune=k8%> or %<-mtune=generic%> instead as appropriate%<-muintr%> not supported for 32-bit code%<-mvrsave=no%> is deprecated; use %<-mno-vrsave%> instead%<-mvrsave=yes%> is deprecated; use %<-mvrsave%> instead%<-mvsx%> and %<-mavoid-indexed-addresses%> are incompatible%<-mvsx%> and %<-mno-altivec%> are incompatible%<-mvsx%> and %<-msoft-float%> are incompatible%<-mvsx%> needs indexed addressing%<-mvsx%> requires hardware floating-point%<-mxl-multiply-high%> can be used only with %<-mcpu=v6.00.a%> or greater%<-mxl-multiply-high%> requires %<-mno-xl-soft-mul%>%<-mxl-reorder%> can be used only with %<-mcpu=v8.30.a%> or greater%<-mxl-reorder%> requires %<-mxl-pattern-compare%> for %<-mcpu=v8.30.a%>%<-mxnack=on%> is incompatible with %<-march=%s%>%<-pipe%> ignored because %<-save-temps%> specified%<-pipe%> not supported%<-x %s%> after last input file has no effect%<.%s%> designator used multiple times in the same initializer list%<...%> handler must be the last handler for its try block%<...%> not allowed in designated initializer list%<:%> constraint mixed with other constraints%<:%> constraint operand is not address of a function or non-automatic variable%<:%> constraint used for output operand%<::%> needed in PROCEDURE binding with explicit target at %C%<::%D%> has not been declared%<::%D%> has not been declared; did you mean %qs?%<::%E%> has not been declared%<::%E%> is not a class or namespace%<::%E%> is not a class, namespace, or enumeration%<::%E%> is not a type%<::main%> cannot be deleted%<::main%> must return %<int%>%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>%<<::%> cannot begin a template-argument list%<<<%> in boolean context, did you mean %<<%>?%<=%>options missing after %<-foffload-options=%>target%<=> target%> is invalid for DEFERRED binding at %C%<>>%> operator is treated as two right angle brackets in C++11%<>>%> should be %<> >%> within a nested template argument list%<?:%> using integer constants in boolean context%<?:%> using integer constants in boolean context, the expression will always evaluate to %<true%>%<@catch%> parameter cannot be protocol-qualified%<@catch%> parameter is not a known Objective-C class type%<@dynamic%> is not available in Objective-C 1.0%<@dynamic%> not in @implementation context%<@dynamic%> requires the @interface of the class to be available%<@encode%> must specify a type as an argument%<@end%> missing in implementation context%<@end%> must appear in an @implementation context%<@interface%> of class %qE not found%<@optional%> is allowed in @protocol context only%<@optional%> is not available in Objective-C 1.0%<@package%> is not available in Objective-C 1.0%<@package%> presently has the same effect as %<@public%>%<@property%> is not available in Objective-C 1.0%<@required%> is allowed in @protocol context only%<@required%> is not available in Objective-C 1.0%<@synchronized%> argument is not an object%<@synthesize%> cannot be used in categories%<@synthesize%> is not available in Objective-C 1.0%<@synthesize%> not in @implementation context%<@synthesize%> requires the @interface of the class to be available%<@throw%> (rethrow) used outside of a %<@catch%> block%<@throw%> argument is not an object%<@try%> without %<@catch%> or %<@finally%>%<COLLECT_GCC%> must be set%<CPU_TYPE%> and %<MPY_TYPE%> column headings are missing from %<devices.csv%>%<CPU_TYPE%> column heading is missing from %<devices.csv%>%<CTABLE_ENTRY%> base address is not a multiple of 256%<CTABLE_ENTRY%> index %wd is not valid%<DEFERRED_INIT%> calls should have same constant size for the first argument and LHS%<DETACH%> clause at %L must not be used together with %<MERGEABLE%> clause%<FULL%> clause at %C must not be used together with %<PARTIAL%> clause%<G0%> in format at %L%<GCC ivdep%> directive not at the start of a loop at %C%<GCC novector%> directive not at the start of a loop at %C%<GCC unroll%> directive not at the start of a loop at %C%<GCC unroll%> directive requires a non-negative integral constant less than or equal to %u at %C%<GCC vector%> directive not at the start of a loop at %C%<GRAINSIZE%> clause at %L must not be used together with %<NUM_TASKS%> clause%<HLE_ACQUIRE%> not used with %<ACQUIRE%> or stronger memory model%<HLE_RELEASE%> not used with %<RELEASE%> or stronger memory model%<LEXER_DEBUGGING_ENABLED_P%> is not set to true%<MOLD%> argument of %<TRANSFER%> intrinsic at %L is an array and shall not have storage size 0 when %<SOURCE%> argument has size greater than 0%<MOLD%> argument of %<TRANSFER%> intrinsic at %L must not be %s%<MOLD%> argument of %<TRANSFER%> intrinsic at %L must not be a %s%<MPY_TYPE%> column heading is missing from %<devices.csv%>%<OMP DISPATCH%> directive at %L cannot be followed by a procedure pointer%<OMP DISPATCH%> directive at %L must be followed by a procedure call with optional assignment%<OMP DISPATCH%> directive must be followed by a procedure call with optional assignment at %C%<PRINT_OPERAND%> null pointer%<PRINT_OPERAND%>: Unknown punctuation %<%c%>%<PRINT_OPERAND_ADDRESS%>, null pointer%<REDUCTION%> clause at %L must not be used together with %<NOGROUP%> clause%<SOURCE%> argument of %<TRANSFER%> intrinsic at %L must not be a %s%<TREE_PURPOSE%> is non-NULL in %<TYPE_ARG_TYPES%> list%<TYPE_ARRAY_MAX_SIZE%> not %<INTEGER_CST%>%<TYPE_BINFO%> is not %<TREE_BINFO%>%<TYPE_BINFO%> type is not %<TYPE_MAIN_VARIANT%>%<TYPE_CACHED_VALUES%> is not %<TREE_VEC%>%<TYPE_CACHED_VALUES_P%> is %i while %<TYPE_CACHED_VALUES%> is %p%<TYPE_CACHED_VALUES_P%> is set while it should not be%<TYPE_CANONICAL%> has different %<TYPE_CANONICAL%>%<TYPE_CANONICAL%> is not compatible%<TYPE_CANONICAL%> of main variant is not main variant%<TYPE_FIELDS%> defined in incomplete type%<TYPE_LANG_SLOT_1 (binfo)%> field is non-NULL%<TYPE_MAIN_VARIANT%> has different %<TYPE_MAIN_VARIANT%>%<TYPE_MAX_VALUE_RAW%> non-NULL%<TYPE_METHOD_BASETYPE%> is not main variant%<TYPE_METHOD_BASETYPE%> is not record nor union%<TYPE_MODE%> of %<TYPE_CANONICAL%> is not compatible%<TYPE_NEXT_PTR_TO%> is not %<POINTER_TYPE%>%<TYPE_NEXT_REF_TO%> is not %<REFERENCE_TYPE%>%<TYPE_OFFSET_BASETYPE%> is not record nor union%<TYPE_VALUES_RAW%> field is non-NULL%<TYPE_VFIELD%> is not %<FIELD_DECL%> nor %<TREE_LIST%>%<V%> modifier on non-integer register%<[%E] =%> used in a GNU-style designated initializer for class %qT%<[*]%> not allowed in other than function prototype scope%<[*]%> not in a declaration%<[[omp::directive(%s)]]%> must be the only specified attribute on a statement%<[super ...]%> must appear in a method context%<_Alignas%> specifiers cannot reduce alignment of %qE%<_Alignas%> specifiers cannot reduce alignment of compound literal%<_Alignas%> specifiers cannot reduce alignment of unnamed field%<_Atomic%> %qD in %<aligned%> clause%<_Atomic%> %qD in %<firstprivate%> clause on %<target%> construct%<_Atomic%> %qD in %<linear%> clause%<_Atomic%> %qD in %qs clause%<_Atomic%> %qD in implicit %<firstprivate%> clause on %<target%> construct%<_Atomic%> %qD in implicit %<map%> clause%<_Atomic%> %qE in %<reduction%> clause%<_Atomic%> %qE in %qs clause%<_Atomic%> applied to a qualified type%<_Atomic%> expression in %<#pragma omp atomic%>%<_Atomic%> in Objective-C%<_Atomic%> iteration variable %qE%<_Atomic%> qualified type in %<#pragma omp declare reduction%>%<_Atomic%>-qualified array type%<_Atomic%>-qualified function type%<_Atomic%>-qualified parameter type %qT of %q+D%<_Atomic%>-qualified return type of %qD%<_BitInt%> argument %qE is larger than %<BITINT_MAXWIDTH%> %qd%<_BitInt%> argument %qE is not a positive integer constant expression%<_BitInt%> argument is not an integer constant expression%<_BitInt(%d)%> is not supported on this target%<_Complex _BitInt(%d)%> unsupported%<_FORTIFY_SOURCE%> is not enabled by %<-fhardened%> because it was specified in %<-D%> or %<-U%>%<_FORTIFY_SOURCE%> is not enabled by %<-fhardened%> because optimizations are turned off%<_Float%d%s%> is not supported on this target%<_GLIBCXX_ASSERTIONS%> is not enabled by %<-fhardened%> because it was specified in %<-D%> or %<-U%>%<_Generic%> association has variable length type%<_Generic%> selector matches multiple associations%<_Generic%> selector of type %qT is not compatible with any association%<_Generic%> specifies two compatible types%<_Noreturn%> in empty declaration%<_Sat%> is used without %<_Fract%> or %<_Accum%>%<__BELOW100__%> attribute not allowed with auto storage class%<__BELOW100__%> attribute only applies to variables%<__GIMPLE%> only valid with %<-fgimple%>%<__RTL%> function cannot be compiled with %<-flto%>%<__alignof%> applied to a bit-field%<__auto_type%> followed by %<[[]]%> attributes%<__auto_type%> requires a plain identifier as declarator%<__auto_type%> used with a bit-field initializer%<__bfloat16%> is redefined from typedef %<short%> to real %<__bf16%> since GCC 13.1, be careful of implicit conversion between %<__bf16%> and %<short%>; an explicit bitcast may be needed here%<__builtin_arc_aligned%> with non-constant alignment%<__builtin_bit_cast%> destination type %qT is an array type%<__builtin_bit_cast%> destination type %qT is not trivially copyable%<__builtin_bit_cast%> source size %qE not equal to destination type size %qE%<__builtin_bit_cast%> source type %qT is not trivially copyable%<__builtin_complex%> operand not of real binary floating-point type%<__builtin_complex%> operands of different types%<__builtin_convertvector%> first argument must be an integer or floating vector%<__builtin_convertvector%> number of elements of the first argument vector and the second argument vector type should be the same%<__builtin_convertvector%> second argument must be an integer or floating vector type%<__builtin_eh_return%> not supported on this target%<__builtin_has_attribute%> with dependent argument not supported yet%<__builtin_is_corresponding_member%> argument is not pointer to member%<__builtin_is_corresponding_member%> needs two arguments%<__builtin_is_corresponding_member%> not well defined for anonymous unions%<__builtin_is_pointer_interconvertible_with_class%> argument is not pointer to member%<__builtin_is_pointer_interconvertible_with_class%> needs a single argument%<__builtin_longjmp%> second argument must be 1%<__builtin_next_arg%> called without an argument%<__builtin_rx_%s%> takes %<C%>, %<Z%>, %<S%>, %<O%>, %<I%>, or %<U%>%<__builtin_saveregs%> not supported by this subtarget%<__builtin_saveregs%> not supported by this target%<__builtin_set_thread_pointer%> is not supported on this target%<__builtin_shuffle%> argument vector(s) inner type must have the same size as inner type of the mask%<__builtin_shuffle%> argument vectors must be of the same type%<__builtin_shuffle%> arguments must be vectors%<__builtin_shuffle%> last argument must be an integer vector%<__builtin_shuffle%> number of elements of the argument vector(s) and the mask vector should be the same%<__builtin_shufflevector%> argument vectors must have the same element type%<__builtin_shufflevector%> arguments must be constant size vectors%<__builtin_shufflevector%> arguments must be vectors%<__builtin_shufflevector%> must specify a result with a power of two number of elements%<__builtin_thread_pointer%> is not supported on this target%<__builtin_unreachable%> or %<__builtin_trap%> call with arguments%<__delay_cycles%> is limited to 32-bit loop counts%<__delay_cycles%> only takes constant arguments%<__delay_cycles%> only takes non-negative cycle counts%<__fp16%> and no ldrh%<__gcc_host_wide_int__%> is not defined as %<long%> or %<long long%>%<__gcc_host_wide_int__%> is not defined as a type%<__int%d%> is not supported by this target%<__int%d%> is not supported on this target%<__label__%> declarations are only allowed in function scopes%<__label__%> not at the beginning of a block%<__restrict%> can only be specified for objects and functions%<__thread%> before %<extern%>%<__thread%> before %<static%>%<__thread%> before %qD%<__thread%> can only be specified for objects and functions%<__transaction_atomic%> without transactional memory support enabled%<__transaction_cancel%> not within %<__transaction_atomic%>%<__transaction_cancel%> within a %<__transaction_relaxed%>%<__transaction_cancel%> without transactional memory support enabled%<__transaction_relaxed%> without transactional memory support enabled%<a%d%> argument of %qs intrinsic at %L must be %s(%d)%<a1%> argument of %qs intrinsic at %L must be INTEGER, REAL or CHARACTER%<a1%> argument of %qs intrinsic at %L must be INTEGER, REAL, CHARACTER or UNSIGNED%<acc update%> must contain at least one %<device%> or %<host%> or %<self%> clause at %L%<alias%> attribute ignored because function is defined%<align%> clause argument needs to be positive constant power of two integer expression%<alignas%> argument has non-integral type %qT%<alignas%> in empty declaration with %<enum%> underlying type%<alignas%> on a type alias%<alignas%> on a type other than class%<alignas%> on bit-field%<alignas%> on enumerated type%<alignas%> on exception declaration%<alignas%> on function declaration%<aligned%> clause alignment expression must be integral%<aligned%> clause alignment expression must be positive constant integer expression%<alloca%> is not yet supported in coroutines%<allocate%> clause %<align%> modifier argument needs to be positive constant power of two integer expression%<allocate%> clause allocator expression has type %qT rather than %<omp_allocator_handle_t%>%<allocate%> clause must specify an allocator here%<allocate%> directive for %qD inside a target region must specify an %<allocator%> clause%<allocate%> directive must be in the same scope as %qD%<allocator%> clause allocator expression has type %qT rather than %<omp_allocator_handle_t%>%<allocator%> clause required for static variable %qD%<allocator%> clause requires a predefined allocator as %qD is static%<always_inline%> function might not be inlinable unless also declared %<inline%>%<amdgpu_hsa_kernel%> attribute requires string constant arguments%<ancestor%> device modifier not preceded by %<requires%> directive with %<reverse_offload%> clause%<ancestor%> device modifier not preceded by %<requires%> directive with %<reverse_offload%> clause at %C%<append_args%> clause implies that %qs has %d dummy arguments of integer type with %<omp_interop_kind%> kind%<append_args%> specified here%<asm goto%> with complex typed outputs%<asm%> clobber conflict with input operand%<asm%> clobber conflict with output operand%<asm%> declaration ignored due to conflict with previous rename%<asm%> flags not supported in thumb1 mode%<asm%> in %<constexpr%> function only available with %<-std=c++20%> or %<-std=gnu++20%>%<asm%> not allowed in %<transaction_safe%> function%<asm%> not allowed in atomic transaction%<asm%> operand %d probably does not match constraints%<asm%> operand constraint incompatible with operand size%<asm%> operand has impossible constraints%<asm%> operand has impossible constraints or there are not enough registers%<asm%> operand requires impossible reload%<asm%> qualifier %qT ignored outside of function body%<asm%> qualifier outside of function body%<asm%> specifier for cc output conflicts with %<asm%> clobber list%<asm%> specifier for variable %qE conflicts with %<asm%> clobber list%<asm%> specifiers are not permitted on non-static data members%<assign%> can be unsafe for Objective-C objects; please state explicitly if you need it%<assign%> property %qs is using bit-field instance variable %qs%<assume%> attribute at top level%<assume%> attribute not followed by %<;%>%<async%> expression must be integral%<atexit%> failed%<atomic%> property %qs is using bit-field instance variable %qs%<atomic_cancel%>%<atomic_default_mem_order%> clause used lexically after first %<atomic%> construct without memory order clause%<attr%> string literal must not contain a comma%<attr%> string literal must start with %<ompx_%>%<auto%> can only be specified for variables or function declarations%<auto%> changes meaning in C++11; please remove it%<auto%> conflicts with other OpenACC loop specifiers%<auto%> in file-scope empty declaration%<auto%> not allowed in alias declaration%<auto%> parameter not permitted in this context%<auto%> requires a plain identifier, possibly with attributes, as declarator%<auto%> used with %<constexpr%>%<auto(x)%> cannot be constrained%<auto(x)%> only available with %<-std=c++23%> or %<-std=gnu++23%>%<auto{x}%> cannot be constrained%<auto{x}%> only available with %<-std=c++23%> or %<-std=gnu++23%>%<await_suspend%> must return %<void%>, %<bool%> or a coroutine handle%<bank_switch%> has no effect on non-interrupt functions%<bf16%> or %<BF16%> suffix on floating constant only available with %<-std=c++23%> or %<-std=gnu++23%>%<bind%> clause not specified on a %<loop%> construct not nested inside another OpenMP construct%<bind(parallel)%> on a %<loop%> construct nested inside %<simd%> construct%<bind(teams)%> on a %<loop%> region not strictly nested inside of a %<teams%> region%<break%> statement operand %qE does not refer to a named loop or %<switch%>%<break%> statement operand %qE does not refer to a named loop or %<switch%>; did you mean %qs?%<break%> statement operand %qE refers to a %<switch%> outside of its body%<builtin_return_address%> contains only 2 bytes of address%<bytes_to_allocate%> is zero for %s (symbol number %<cancel for%> inside %<nowait%> for construct%<cancel for%> inside %<ordered%> for construct%<cancel sections%> inside %<nowait%> sections construct%<catch%> is not supported%<co_await%> cannot be used in default arguments%<co_yield%> cannot be used in default arguments%<concept%> only available with %<-std=c++20%> or %<-fconcepts%>%<const%> %qs cannot be declared %<mutable%>%<const%> and %<volatile%> function specifiers on %qD invalid in field declaration%<const%> and %<volatile%> function specifiers on %qD invalid in parameter declaration%<const%> and %<volatile%> function specifiers on %qD invalid in type declaration%<const%> and %<volatile%> function specifiers on %qD invalid in variable declaration%<const%> can only be specified for objects and functions%<const%> qualified %<depobj%> expression%<const%> qualified %qE may appear only in %<shared%> or %<firstprivate%> clauses%<const%> qualified %qE without %<mutable%> member may appear only in %<shared%> or %<firstprivate%> clauses%<const%>, %<volatile%> or %<__restrict%>-qualified type %qT in %<#pragma omp declare reduction%>%<consteval%> function %q+D overriding non-%<consteval%> function%<constexpr%> call flows off the end of the function%<constexpr%> constructor does not have empty body%<constexpr%> constructor for union %qT must initialize exactly one non-static data member%<constexpr%> destructors only available with %<-std=c++20%> or %<-std=gnu++20%>%<constexpr%> evaluation depth exceeds maximum of %d (use %<-fconstexpr-depth=%> to increase the maximum)%<constexpr%> evaluation operation count exceeds limit of %wd (use %<-fconstexpr-ops-limit=%> to increase the limit)%<constexpr%> in empty declaration%<constexpr%> initializer for a binary floating-point type is of decimal type%<constexpr%> initializer for a real type is of complex type%<constexpr%> initializer is not an arithmetic constant expression%<constexpr%> initializer not representable in type of object%<constexpr%> integer initializer is not an integer constant expression%<constexpr%> lambda only available with %<-std=c++17%> or %<-std=gnu++17%>%<constexpr%> loop iteration count exceeds limit of %d (use %<-fconstexpr-loop-limit=%> to increase the limit)%<constexpr%> needed for in-class initialization of static data member %q#D of non-integral type%<constexpr%> object has variably modified type%<constexpr%> pointer initializer is not null%<constexpr%> static data member %qD must have an initializer%<constexpr%> used with %qE%<constexpr%> variable %qD has variably-modified type %qT%<constinit%> can only be applied to a variable with static or thread storage duration%<constinit%> on function return type is not allowed%<constinit%> specifier invalid for function %qs%<constinit%> variable %qD does not have a constant initializer%<continue%> statement operand %qE does not refer to a named loop%<continue%> statement operand %qE does not refer to a named loop; did you mean %qs?%<continue%> statement operand %qE refers to a named %<switch%>%<counted_by%> argument %qE conflicts with previous declaration %qE%<counted_by%> argument is not an identifier%<critical%> region may not be nested inside a %<critical%> region with the same name%<decl-specifier%> in declaration of deduction guide%<declare %s%> directive not immediately followed by function declaration or definition%<declare variant%> candidate %qD declared here%<declare variant%> on constructor %qD%<declare variant%> on defaulted %qD%<declare variant%> on deleted %qD%<declare variant%> on destructor %qD%<declare variant%> on virtual %qD%<decltype%> cannot resolve address of overloaded function%<decltype%> evaluates to %qT, which is not a class or enumeration type%<decltype(auto)%> cannot be cv-qualified%<decltype(auto)%> type specifier only available with %<-std=c++14%> or %<-std=gnu++14%>%<default%> label not within a switch statement%<default%> target was not set%<delete%> reason only available with %<-std=c++2c%> or %<-std=gnu++2c%>%<delete[]%> is not a constant expression%<depend%> clause requires action clauses with %<targetsync%> interop-type%<depend%> clause with %<depobj%> dependence type on array section%<depend(%s)%> is only allowed in %<omp ordered%>%<depobj%> dependence type specified in %<depend%> clause on %<depobj%> construct%<depobj%> expression is not lvalue expression%<destroy%> expression is not lvalue expression%<detach%> clause event handle has type %qT rather than %<omp_event_handle_t%>%<detach%> clause must not be used together with %<mergeable%> clause%<device%> clause with %<ancestor%> is only allowed on %<target%> construct%<device%> id must be integral%<device_type%> clause must specify 'any' when used with an %<indirect%> clause%<dim%> argument of %qs intrinsic at %L is not a valid codimension index%<dim%> argument of %qs intrinsic at %L is not a valid dimension index%<dim%> argument of %s intrinsic at %L is not a valid dimension index%<dist_schedule%> chunk size expression must be integral%<distribute%> region must be strictly nested inside %<teams%> construct%<dynamic_cast%> not permitted with %<-fno-rtti%>%<dynamic_cast<%#T>(%#D)%> can never succeed%<else%> without a previous %<if%>%<enum %E%> declared in %<for%> loop initial declaration%<enum%> declared both with and without fixed underlying type%<enum%> declared with but defined without fixed underlying type%<enum%> underlying type incompatible with previous declaration%<enum%> underlying type may not be specified here%<explicit%> can only be specified for constructors%<explicit%> in friend declaration%<explicit%> outside class declaration%<explicit(bool)%> only available with %<-std=c++20%> or %<-std=gnu++20%>%<export%> not part of following module-directive%<extern "C"%> linkage started here%<externally_visible%> attribute have effect only on public objects%<f%d%> or %<F%d%> suffix on floating constant only available with %<-std=c++23%> or %<-std=gnu++23%>%<fallthrough%> attribute at top level%<fallthrough%> attribute not followed by %<;%>%<fallthrough%> attribute specified with a parameter%<fast_interrupt%> attribute directive ignored%<filter%> expression must be integral%<flatten%> attribute is ignored on aliases%<flush%> list specified together with memory order clause%<fopen%>: %s: %m%<for%> loop initial declarations are only allowed in C99 or C11 mode%<friend%> can only be specified inside a class%<friend%> used outside of class%<full%> clause must not be used together with %<partial%> clause%<function_profiler%> support%<function_profiler%> support for MMIX%<gang%> loop in %<gang-single%> region%<gang%> num expression must be integral%<gang%> num value must be positive%<gang%> static expression must be integral%<gang%> static value must be positive%<generic%> CPU can be used only for %<-mtune=%> switch%<generic%> CPU can be used only for %<target("tune=")%> attribute%<getter%> attribute of property %qD conflicts with previous declaration%<gnu_inline%> attribute present on %q+D%<goto%> in %<constexpr%> function only available with %<-std=c++23%> or %<-std=gnu++23%>%<goto%> is not a constant expression%<gp_offset%> (%ld) or %<end_offset%> (%ld) is less than zero%<grainsize%> clause must not be used together with %<num_tasks%> clause%<grainsize%> expression must be integral%<grainsize%> value must be positive%<h%> applied to non-register operand%<hard-float%> MIPS16 code for ABIs other than o32 and o64%<has_device_addr%> for %qD does not imply %<is_device_ptr%> required for %<need_device_ptr%>%<hint%> expression must be constant integer expression%<hint%> expression must be integral%<host_data%> construct at %L requires %<use_device%> clause%<host_data%> construct requires %<use_device%> clause%<if consteval%> only available with %<-std=c++23%> or %<-std=gnu++23%>%<if consteval%> requires compound statement%<if constexpr%> only available with %<-std=c++17%> or %<-std=gnu++17%>%<ifunc%> resolver for %qD must return %qT%<ifunc%> resolver for %qD should return %qT%<inbranch%> clause is incompatible with %<notinbranch%>%<indirect_call%> attribute cannot apply for static function%<init%> clause lacks the %<targetsync%> modifier%<inline%> can only be specified for functions%<inline%> in empty declaration%<inline%> is not allowed in declaration of friend template specialization %qD%<inline%> specified for friend class declaration%<inline%> specifier invalid for function %qs declared out of global scope%<inline%> specifier invalid for variable %qD declared at block scope%<inscan%> %<reduction%> clause on %qs construct%<inscan%> %<reduction%> clause on construct other than %<for%>, %<simd%>, %<for simd%>, %<parallel for%>, %<parallel for simd%>%<inscan%> %<reduction%> clause used together with %<linear%> clause for a variable other than loop iterator%<inscan%> %<reduction%> clause with array section%<inscan%> REDUCTION clause on construct other than DO, SIMD, DO SIMD, PARALLEL DO, PARALLEL DO SIMD at %L%<inscan%> and non-%<inscan%> %<reduction%> clauses on the same construct%<inscan%> and non-%<inscan%> %<reduction%> clauses on the same construct at %L%<intel%> CPU can be used only for %<-mtune=%> switch%<intel%> CPU can be used only for %<target("tune=")%> attribute%<interrupt_thread%> is available only on fido%<is_device_ptr%> for %qD does not imply %<has_device_addr%> required for %<need_device_addr%>%<iterator%> modifier incompatible with %qs%<iterator%> modifier may not be specified on %<depobj%> construct%<l1-cache-size%> parameter is not a power of two: %d%<lang_*%> check: failed in %s, at %s:%d%<lastprivate%> clause on a %<loop%> construct refers to a variable %qD which is not the loop iterator%<linear%> clause for variable other than loop iterator specified on construct combined with %<distribute%>%<linear%> clause may not be specified together with %<ordered%> clause if stand-alone %<ordered%> construct is nested in it%<linear%> clause step %qE is neither constant nor a parameter%<linear%> clause step expression must be integral%<linear%> clause step is a parameter %qD not specified in %<uniform%> clause%<location_t%> is not defined as a type%<locus%> is not defined as a type%<long long long%> is too long for GCC%<long%> switch expression not converted to %<int%> in ISO C%<lp_array%> does not match %<region_tree%>%<lp_array%> is corrupted for lp %i%<lto_obj_file_open()%> failed%<main%> declared %<_Noreturn%>%<map%> clause with map-type modifier other than %<always%>, %<close%> or %<present%>%<memset%> used with constant zero length parameter; this could be due to transposed parameters%<memset%> used with length equal to number of elements without multiplication by element size%<ms_hook_prologue%> attribute is not compatible with %<-mfentry%> for 32-bit%<ms_hook_prologue%> attribute is not compatible with nested function%<msp430_select_hwmult_lib%> needs one or more arguments%<msp430_set_driver_var%> expects 2 arguments%<mutable%> lambda specifier with explicit object parameter%<mutexinoutset%> kind in %<depend%> clause on a %<taskwait%> construct%<namespace %E%> is ambiguous%<namespace%> definition is not allowed here%<need_device_addr%> is not valid for C%<need_device_addr%> not yet supported%<new%> of %<initializer_list%> does not extend the lifetime of the underlying array%<new%> of type %qT with extended alignment %d%<nogroup%> clause must not be used together with %<reduction%> clause%<nonatomic%> attribute of property %qD conflicts with previous declaration%<nonmonotonic%> schedule modifier specified together with %<ordered%> clause%<nonnull%> argument %qD compared to NULL%<noreturn%> function does return%<nowait%> clause must not be used together with %<copyprivate%> clause%<num_tasks%> value must be positive%<num_teams%> lower bound %qE bigger than upper bound %qE%<num_teams%> value must be positive%<num_threads%> value must be positive%<object.TypeInfo%> cannot be used with %<-fno-rtti%>%<object.TypeInfo%> could not be found, but is implicitly used%<offsetof%> within non-standard-layout type %qT is conditionally-supported%<omp requires reverse_offload%> requires at least %<sm_35%> for %<-foffload-options=nvptx-none=-march=%> - disabling offload-code generation for this device type%<omp::%E%> attribute requires argument%<omp::%E%> not allowed to be specified in this context%<omp::%s%> not allowed to be specified in this context%<omp_all_memory%> at %L not permitted in this clause%<omp_all_memory%> may only be used in OpenMP %<depend%> clause%<omp_all_memory%> used with %<depend%> kind other than %<out%> or %<inout%>%<omp_all_memory%> used with DEPEND kind other than OUT or INOUT at %C%<omp_all_memory%> used with dependence-type other than OUT or INOUT at %L%<omp_all_memory%>, declared at %L, may only be used in the OpenMP DEPEND clause%<operator %s%>%<operator %s%> in %<%s%E%>%<operator delete%> must return type %qT%<operator delete%> takes type %qT as first parameter%<operator delete[]%> cannot be a destroying delete%<operator new%> must not return NULL unless it is declared %<throw()%> (or %<-fcheck-new%> is in effect)%<operator new%> must return type %qT%<operator new%> takes type %<size_t%> (%qT) as first parameter%<operator%s%>%<operator%s%> in %<%E %s %E%>%<operator%s%> in %<%E%s%>%<operator%s%> in %<%s%E%>%<operator=%> should return a reference to %<*this%>%<operator[]%>%<operator[]%> in %<%E[%E]%>%<optimize%> attribute currently unsupported in modules%<order%> clause must not be used together with %<ordered%> clause%<ordered simd threads%> must be closely nested inside of %<%s simd%> region%<ordered%> %<simd%> must be closely nested inside %<simd%> region%<ordered%> clause parameter is less than %<collapse%>%<ordered%> clause used with generated loops%<ordered%> clause with parameter on range-based %<for%> loop%<ordered%> construct with %<depend%> clause must be closely nested inside an %<ordered%> loop%<ordered%> construct with %qs clause must be closely nested inside a loop with %<ordered%> clause%<ordered%> construct without %<doacross%> or %<depend%> clauses binds to loop where %<collapse%> argument %wd is different from %<ordered%> argument %wd%<ordered%> construct without %<doacross%> or %<depend%> clauses must not have the same binding region as %<ordered%> construct with those clauses%<ordered%> region may not be closely nested inside of %<critical%>, %<ordered%>, explicit %<task%> or %<taskloop%> region%<ordered%> region must be closely nested inside a loop region with an %<ordered%> clause%<otherwise%> or %<default%> clause must appear last in %<metadirective%>%<otherwise%> or %<default%> clause must appear last in %<metadirective%> at %C%<parser_file_close%> called with NULL *file%<parser_file_close%> for %s called with NULL %<file->var_decl_node%>%<parser_file_open%> called with NULL *file%<parser_file_open%> for %s called with NULL %<var_decl_node%>%<parser_file_read%> called with NULL *field%<parser_file_read%> called with NULL *file%<parser_file_read%> for %s called with NULL %<field->var_decl_node%>%<parser_file_read%> for %s called with NULL %<file->var_decl_node%>%<parser_if()%> was called with variable %s, which is not a FldConditional%<parser_logop()%> was called with variable %s on line %d, which is not a FldConditional%<parser_op()%> doesn%'t know how to evaluate %<%s = %s %c %s%>%<parser_relop%> was called with variable %qs, which is not a FldConditional%<parser_relop()%> was called with variable %s, which is not a FldConditional%<parser_symbol_add()%> was called with a NULL %<new_var%>%<partial%> argument needs positive constant integer expression%<pch_preprocess%> pragma should only be used with %<-fpreprocessed%>%<pex_init%> failed: %m%<pragma omp error%> encountered%<pragma omp error%> encountered: %s%<pragma omp requires%> requires at least one clause%<priority%> expression must be integral%<priority%> value must be non-negative%<readonly%> attribute conflicts with %<setter%> attribute%<readonly%> attribute of property %qD conflicts with previous declaration%<region_array%> does not match %<region_tree%>%<region_array%> is corrupted for region %i%<register%> in file-scope empty declaration%<register%> storage class specifier used%<reinterpret_cast%> from integer to pointer%<reinterpret_cast%> from type %qT to type %qT casts away qualifiers%<reinterpret_cast%> is not a constant expression%<reinterpret_cast<%T>(%E)%> is not a constant expression%<requires%> only available with %<-std=c++20%> or %<-fconcepts%>%<requires%> selector is not supported yet%<return%> with a value, in function returning void%<return%> with no value, in function returning non-void%<return_void%> declared here%<safelen%> clause expression must be positive constant integer expression%<scalar_storage_order%> is not supported because endianness is not uniform%<scope%> region may not be closely nested inside of work-sharing, %<loop%>, explicit %<task%>, %<taskloop%>, %<critical%>, %<ordered%>, %<master%>, or %<masked%> region%<score%> argument must be constant integer expression%<score%> argument must be constant integer expression at %C%<score%> argument must be non-negative%<score%> argument must be non-negative at %C%<score%> cannot be specified in traits in the %qs trait-selector-set%<score%> cannot be specified in traits in the %qs trait-selector-set at %C%<section("%s")%> attribute on main function inhibits %<-mno-call-main%>%<seq%> overrides other OpenACC loop specifiers%<setter%> attribute of property %qD conflicts with previous declaration%<setter%> specified here%<shape%> argument of %<reshape%> intrinsic at %L has more than %d elements%<shape%> argument of %<reshape%> intrinsic at %L must be an array of constant size%<signed _BitInt%> argument must be at least 2%<simdlen%> clause expression must be positive constant integer expression%<simdlen%> clause value is bigger than %<safelen%> clause value%<sizeof%> applied to a bit-field%<sizeof%> on array function parameter %qE will return size of %qT%<sizeof...%> argument must be surrounded by parentheses%<sizes%> argument needs positive integral constant%<soft-float%> and long-double-128 are incompatible%<source%> argument of %<shape%> intrinsic at %L must not be an assumed size array%<stack_offset%> must be a multiple of 4%<stack_offset%> must be at least 4%<static%> %qs cannot be declared %<mutable%>%<static%> lambda specifier with explicit object parameter%<static%> lambda specifier with lambda capture%<static%> may not be used when defining (as opposed to declaring) a static data member%<static%> may not be used with an unspecified variable length array size%<static%> may not be used without an array size%<static%> specifier invalid for function %qs declared out of global scope%<static_assert%> with non-string message only available with %<-std=c++2c%> or %<-std=gnu++2c%>%<static_assert%> without a message only available with %<-std=c++17%> or %<-std=gnu++17%>%<static_cast%> from type %qT to type %qT casts away qualifiers%<std::%s%> is defined in header %qs; this is probably fixable by adding %<#include %s%>%<std::%s%> is only available from %s onwards%<std::is_constant_evaluated%> always evaluates to false in a non-%<constexpr%> function%<std::is_constant_evaluated%> always evaluates to true in %<if constexpr%>%<std::is_constant_evaluated%> always evaluates to true in a %<consteval%> function%<std::is_constant_evaluated%> evaluates to true when checking if trivially empty iteration statement is trivial infinite loop%<std::source_location::__impl%> does not contain only non-static data members %<_M_file_name%>, %<_M_function_name%>, %<_M_line%> and %<_M_column%>%<std::tuple_element<%u, %T>::type%> is %<void%>%<std::tuple_size<%T>::value%> is not an integral constant expression%<strong%> using directive no longer supported%<strub%> mode %qE selected for %qD, when %qE was requested%<struct %E%> declared in %<for%> loop initial declaration%<switch%> name defined here%<symver%> attribute argument %qs must contain one or two %<@%>%<symver%> attribute argument not a string constant%<symver%> attribute is only applicable to symbols%<symver%> attribute only applies to functions and variables%<sysctl%> for %<kern.osversion%> failed: %m%<target%> attribute currently unsupported in modules%<target%> attribute is not supported on this machine%<target%> construct with nested %<teams%> construct contains directives outside of the %<teams%> construct%<target("rtd")%> is ignored in 64bit mode%<target("sseregparm")%> used without SSE enabled%<target("tune=x86-64")%> is deprecated; use %<target("tune=k8")%> or %<target("tune=generic")%> instead as appropriate%<target()%> attribute: arch appears more than once%<target()%> attribute: cpu appears more than once%<target()%> attribute: invalid priority %qs%<target()%> attribute: priority appears more than once%<target()%> attribute: tune appears more than once%<target()%> attribute: unknown CPU %qs%<target()%> attribute: unknown TUNE %qs%<target_clones%> attribute needs GLIBC (2.23 and newer) that exports hardware capability bits%<target_device%> selector set inside of %<target%> directive%<target_version%> attribute is not supported on this machine%<task%> reduction modifier on a construct with a %<nowait%> clause%<taskwait%> construct with %<nowait%> clause but no %<depend%> clauses%<teams%> construct must be closely nested inside of %<target%> construct or not nested in any OpenMP construct%<template%> keyword not permitted in destructor name%<template%> must follow a nested-name-specifier%<this%> allowed in OpenMP only in %<declare simd%> clauses%<this%> cannot be captured by reference%<this%> is unavailable for explicit object member functions%<this%> is unavailable for static member functions%<this%> may not be used in this context%<this%> must be the first specifier in a parameter declaration%<this%> not allowed in %<allocate%> clause%<this%> specifier in a requires-expression parameter%<this%> specifier in template parameter declaration%<this%> was not captured for this lambda function%<thread_limit%> expression must be integral%<thread_limit%> value must be positive%<threadprivate%> %qD is not file, namespace or block scope variable%<threadprivate%> %qE directive not in %qT definition%<threadprivate%> %qE has incomplete type%<throw%> will always call %<terminate%>%<tile%> argument needs integral type%<tile%> argument needs positive integral constant%<tile%> construct generates %d loops with canonical form but %d loops are needed%<transaction_may_cancel_outer%> function call not within outer transaction or %<transaction_may_cancel_outer%>%<transaction_safe_dynamic%> may only be specified for a virtual function%<tree%> is not defined as a pointer type%<tree%> is not defined as a type%<try%> in %<constexpr%> function only available with %<-std=c++20%> or %<-std=gnu++20%>%<typedef%> specifier conflicts with %qs%<typedef%> used with %<auto%>%<typedef%> was ignored in this declaration%<typeid%> is not a constant expression because %qE is of polymorphic type%<typeid%> of qualified function type %qT%<typeid%> operator cannot appear in a constant-expression%<typename %T::%D%> names %q#D, which is not a type%<typename %T::%D%> names %q#T, which is not a class template%<typeof%> applied to a bit-field%<union %E%> declared in %<for%> loop initial declaration%<unroll%> construct with %<partial%> clause generates just one loop with canonical form but %d loops are needed%<uses_allocators%> clause with traits and memory spaces%<using enum%> of %qT before its enum-specifier%<using enum%> of dependent type %qT%<using enum%> of incomplete type %qT%<using enum%> of non-enumeration type %q#T%<using enum%> only available with %<-std=c++20%> or %<-std=gnu++20%>%<using%> with enumeration scope %q#T only available with %<-std=c++20%> or %<-std=gnu++20%>%<va_start%> macro used with additional arguments other than identifier of the last named argument%<va_start%> used in function with fixed arguments%<vec_lvsl%> is deprecated for little endian; use assignment for unaligned loads and stores%<vec_lvsr%> is deprecated for little endian; use assignment for unaligned loads and stores%<vector%> length expression must be integral%<vector%> length value must be positive%<verify_gimple%> failed%<verify_marked_backedges%> failed%<virtual%> can only be specified for functions%<virtual%> outside class declaration%<virtual%> specified more than once in base-specifier%<void%> as only parameter may not be qualified%<void%> must be the only parameter%<void%> must be the only parameter and unnamed%<volatile%> can only be specified for objects and functions%<volatile%>-qualified parameter is deprecated%<volatile%>-qualified return type is deprecated%<volatile%>-qualified structured binding is deprecated%<wait%> expression must be integral%<warn_if_not_aligned%> may not be specified for %q+D%<weak%> clause requires atomic equality comparison%<weakref%> attribute ignored because function is defined%<weakref%> attribute ignored because variable is initialized%<weakref%> attribute should be accompanied with an %<alias%> attribute%<weakref%> cannot be versioned%<worker%> num expression must be integral%<worker%> num value must be positive%<||%> not valid in GIMPLE%<~%> on a boolean expression%<~%> on an expression of type %<bool%>%<~auto%> only available with %<-std=c++14%> or %<-std=gnu++14%>%@ %e%@ %e (depth %i)%@ %e (fndecl %qs, depth %i)%d bytes of gang-private data-share memory exhausted (increase with %<-mgang-private-size=%d%>, for example)%d constructor found
  %d constructors found
  %d destructor found
  %d destructors found
  %d exits recorded for loop %d (having %d exits)%d frame table found
  %d frame tables found
! %e and %e specified together%e declared here%i-bit mode not compiled in%llu bytes%q#D cannot be overloaded with %q#D%q#D conflicts with a previous declaration%q#D conflicts with version inherited from %qT%q#D declared here%q#D declared here with internal linkage%q#D declared here with module linkage%q#D declared here with no linkage%q#D does not refer to the unqualified type, so it is not used for linkage%q#D explicitly defaulted here%q#D has incomplete type%q#D hides constructor for %q#D%q#D inherits from multiple base subobjects%q#D invalid; an anonymous union can only have non-static data members%q#D invalid; an anonymous union may only have public non-static data members%q#D is a static data member; it can only be initialized at its definition%q#D is implicitly declared as deleted because %qT declares a move constructor or move assignment operator%q#D is implicitly deleted because the default definition would be ill-formed:%q#D is inaccessible within this context%q#D is not a function template%q#D is not a non-static data member of %qT%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address%q#D is not const%q#D is private within this context%q#D is protected within this context%q#D is public, but requires an existing %q#T object%q#D is volatile%q#D not declared in class%q#D previously declared here%q#D previously defined here%q#D redeclared as different kind of entity%q#D should be initialized%q#D, declared using an unnamed type, is used but never defined%q#D, declared using an unnamed type, is used but not defined%q#D, declared using local type %qT, is used but never defined%q#D, declared using local type %qT, is used but not defined here%q#F is implicitly deleted because its exception-specification does not match the implicit exception-specification %qX%q#T has no member named %qE%q#T has no member named %qE; did you mean %q#D? (accessible via %q#D)%q#T has no member named %qE; did you mean %q#D? (not accessible from this context)%q#T has no member named %qE; did you mean %qE?%q#T has no user-provided default constructor%q#T has pointer data members%q#T has virtual base classes%q#T has virtual functions and accessible non-virtual destructor%q#T is not a class%q#T is not a class or namespace%q#T is not a template%q#T is not a valid type for a template non-type parameter%q#T only defines a private destructor and has no friends%q#T only defines private constructors and has no friends%q#T used where a %qT was expected%q#T used where a floating-point value was expected%q#T was previously declared here%q+#D cannot be declared%q+#D is not a static data member of %q#T%q+#D marked %<final%>, but is not virtual%q+#D marked %<override%>, but does not override%q+D alias between function and variable is not supported%q+D aliased to external symbol %qE%q+D aliased to undefined symbol %qE%q+D already declared with dllexport attribute: dllimport ignored%q+D declared as a friend%q+D declared as variadic function%q+D declared weak after being used%q+D declared with an exception specification%q+D defined as variadic function without prototype%q+D defined both normally and as %qE attribute%q+D defined here%q+D has incompatible attributes %qs and %qs%q+D in declare target directive does not have mappable type%q+D is static but declared in inline function %qD which is not static%q+D is usually a function%q+D offset %E in %qT isn%'t aligned to %u%q+D offset %E in %qT may not be aligned to %u%q+D redeclared as different kind of symbol%q+D redeclared inline with %<gnu_inline%> attribute%q+D redeclared inline without %<gnu_inline%> attribute%q+D redeclared without dllimport attribute after being referenced with dll linkage%q+D redeclared without dllimport attribute: previous dllimport ignored%q+D static data member inside of declare target directive%q+D takes only zero or two arguments%q+E is not a constant expression%q+F declared %<static%> but never defined%q+F used but never defined%q+T is not literal because:%qD accessing %E byte in a region of size %E%qD accessing %E bytes in a region of size %E%qD accessing %E or more bytes in a region of size %E%qD accessing %wu byte at offsets %s and %s may overlap %wu byte at offset %s%qD accessing %wu bytes at offsets %s and %s may overlap %wu byte at offset %s%qD accessing %wu byte at offsets %s and %s may overlap up to %wu bytes at offset %s%qD accessing %wu bytes at offsets %s and %s may overlap up to %wu bytes at offset %s%qD accessing %wu byte at offsets %s and %s overlaps %wu byte at offset %s%qD accessing %wu byte at offsets %s and %s overlaps %wu bytes at offset %s%qD accessing %wu byte at offsets %s and %s overlaps %wu or more bytes at offset %s%qD accessing %wu bytes at offsets %s and %s overlaps %wu or more bytes at offset %s%qD accessing %wu byte at offsets %s and %s overlaps between %wu and %wu bytes at offset %s%qD accessing %wu bytes at offsets %s and %s overlaps between %wu and %wu bytes at offset %s%qD accessing %wu byte may overlap %wu byte%qD accessing %wu bytes may overlap %wu byte%qD accessing %wu byte may overlap up to %wu bytes%qD accessing %wu bytes may overlap up to %wu bytes%qD accessing %wu bytes at offsets %s and %s overlaps %wu byte at offset %s%qD accessing %wu bytes at offsets %s and %s overlaps %wu bytes at offset %s%qD accessing %wu or more bytes at offsets %s and %s may overlap %wu byte at offset %s%qD accessing %wu or more bytes at offsets %s and %s may overlap up to %wu bytes at offset %s%qD accessing %wu or more bytes at offsets %s and %s overlaps %wu byte at offset %s%qD accessing %wu or more bytes at offsets %s and %s overlaps %wu bytes at offset %s%qD accessing %wu or more bytes at offsets %s and %s overlaps %wu or more bytes at offset %s%qD accessing %wu or more bytes at offsets %s and %s overlaps between %wu and %wu bytes at offset %s%qD accessing between %E and %E bytes in a region of size %E%qD accessing between %wu and %wu bytes at offsets %s and %s may overlap %wu byte at offset %s%qD accessing between %wu and %wu bytes at offsets %s and %s may overlap up to %wu bytes at offset %s%qD accessing between %wu and %wu bytes at offsets %s and %s overlaps %wu byte at offset %s%qD accessing between %wu and %wu bytes at offsets %s and %s overlaps %wu bytes at offset %s%qD accessing between %wu and %wu bytes at offsets %s and %s overlaps %wu or more bytes at offset %s%qD accessing between %wu and %wu bytes at offsets %s and %s overlaps between %wu and %wu bytes at offset %s%qD accessing between %wu and %wu bytes may overlap %wu byte%qD accessing between %wu and %wu bytes may overlap up to %wu bytes%qD alias between functions of incompatible types %qT and %qT%qD already appeared as list item in an %<allocate%> directive%qD appears both in data and map clauses%qD appears more than once in %<aligned%> clauses%qD appears more than once in %<allocate%> clauses%qD appears more than once in %<nontemporal%> clauses%qD appears more than once in action clauses%qD appears more than once in data clauses%qD appears more than once in data-sharing clauses%qD appears more than once in map clauses%qD appears more than once in motion clauses%qD appears more than once in reduction clauses%qD argument %d promotes to %qT where %qT is expected in a call to built-in function declared without prototype%qD argument %d type is %qT where %qT is expected in a call to built-in function declared without prototype%qD argument %i declared attribute %<nonstring%>%qD argument %i declared attribute %<nonstring%> is smaller than the specified bound %wu%qD argument %i declared attribute %<nonstring%> is smaller than the specified bound [%E, %E]%qD argument %i declared attribute %<nonstring%> may be smaller than the specified bound [%E, %E]%qD argument missing terminating nul%qD attribute directive ignored%qD attribute is meaningless since members of the anonymous namespace get local symbols%qD attribute requires a single NTBS argument%qD called in a constant expression%qD called in a constant expression before its definition is complete%qD called on a pointer passed to mismatched reallocation function %qD%qD called on a pointer to an unallocated object %qE%qD called on pointer %qE passed to mismatched allocation function %qD%qD called on pointer %qE with nonzero offset%s%qD called on pointer returned from a mismatched allocation function%qD called on pointer to an unallocated object%qD called on unallocated object %qD%qD calls %<setjmp%> or similar, %<-fharden-control-flow-redundancy%> is not supported%qD can be marked override%qD cannot appear in a constant-expression%qD cannot be %qs%qD cannot be an explicit object member function%qD cannot be declared %<virtual%>, since it is always static%qD cannot be defaulted%qD cannot be used as a function%qD cannot have default arguments%qD changed semantics in GCC 4.4%qD clearing an object of non-trivial type %#qT%s%qD clearing an object of type %#qT containing a pointer-to-member%s%qD clearing an object of type %#qT with no trivial copy-assignment%s%qD conflicts with used function%qD copying an object of non-trivial type %#qT from an array of %#qT%qD copying an object of type %#qT with %qs member %qD from an array of %#qT; use assignment or copy-initialization instead%qD declared %<static%> in %<constexpr%> context%qD declared %<thread_local%> in %<constexpr%> context%qD declared %<transaction_safe_dynamic%>%qD declared as a %<virtual%> field%qD declared as a %<virtual%> parameter%qD declared as a %<virtual%> type%qD declared as a %<virtual%> variable%qD declared as a non-parameter%qD declared as an %<inline%> field%qD declared as an %<inline%> parameter%qD declared as an %<inline%> type%qD declared as array of template placeholder type %qT%qD declared as reference but not initialized%qD declared here%qD declared here, later in the translation unit%qD declared weak after being used%qD declared with internal linkage%qD defined %<static%> in %<constexpr%> context%qD defined %<static%> in %qs function only available with %<-std=c++23%> or %<-std=gnu++23%>%qD defined %<thread_local%> in %<constexpr%> context%qD defined %<thread_local%> in %qs function only available with %<-std=c++23%> or %<-std=gnu++23%>%qD defined but not used%qD defined here%qD destination unchanged after copying no bytes%qD destination unchanged after copying no bytes from a string of length %E%qD does not have %<const char *%> type%qD does not have a mappable type in %qs clause%qD does not have integral or enumeration type%qD does not have integral type%qD does not implicitly begin its lifetime because %qT does not have a non-deleted trivial default constructor, use %<std::construct_at%> instead%qD does not name an enumeration in %qT%qD does not refer to a function%qD does not refer to a namespace scope function%qD expanded to more than one element%qD expecting %E byte in a region of size %E%qD expecting %E bytes in a region of size %E%qD expecting %E or more bytes in a region of size %E%qD expecting between %E and %E bytes in a region of size %E%qD exposes TU-local entity %qD%qD forming offset %s is out of bounds%qD forming offset %s is out of the bounds [0, %wu]%qD forming offset %s is out of the bounds [0, %wu] of object %qD with type %qT%qD forming offset %s is out of the bounds of object %qD with type %qT%qD has TU-local template argument %qD%qD has TU-local template argument %qT%qD has a non-structural type%qD has a previous declaration here%qD has already been defined%qD has an incomplete type %qT%qD has incomplete type%qD has internal linkage because it was declared in an unnamed namespace%qD has invalid argument list%qD has more than %u blocks, the requested maximum for %<-fharden-control-flow-redundancy%>%qD has no linkage and is declared in an anonymous namespace%qD has no linkage and is declared within TU-local entity %qD%qD has no linkage and is declared within TU-local entity %qT%qD has not been declared in %qD%qD has not been declared within %qD%qD has the same name as the class in which it is declared%qD has too many arguments for internal %<strub%>%qD in %<reduction%> clause is a zero size array%qD inherits the %E ABI tag that %qT (used in its return type) has%qD inherits the %E ABI tag that %qT (used in its type) has%qD invalid in %q#T because of local member %q#D with same name%qD invalid in %q#T because of local method %q#D with same name%qD invalid in condition%qD invalid in lambda%qD is a function, not a type%qD is a namespace%qD is a reference declared %<inline%> and is constant-initialized to a TU-local value%qD is a specialization of TU-local template %qD%qD is a usual (non-placement) deallocation function%qD is a usual (non-placement) deallocation function in C++14 (or with %<-fsized-deallocation%>)%qD is a virtual function but only a direct call is allowed in a dispatch construct%qD is already a friend of %qT%qD is already a friend of class %qT%qD is already defined in %qT%qD is already defined in class %qT%qD is already defined in the class %qT%qD is an alias of TU-local type %qT%qD is an enumeration template%qD is both a direct base and an indirect virtual base%qD is declared %<constexpr%> and is initialized to a TU-local value%qD is declared in header %qs%qD is defined with tls model %s%qD is deprecated%qD is deprecated: %s%qD is initialized with itself%qD is instantiated for an empty pack%qD is mutable%qD is normally a non-static function%qD is not a C pointer%qD is not a class or alias template%qD is not a class or namespace%qD is not a class type%qD is not a direct member of %qT%qD is not a function argument%qD is not a function template%qD is not a member of %qD%qD is not a member of %qD; did you mean %qs?%qD is not a member of %qT%qD is not a member of %qT; did you mean %qs?%qD is not a member template function%qD is not a namespace-name%qD is not a namespace-name; did you mean %qs?%qD is not a pointer variable%qD is not a static data member%qD is not a static data member of a class template%qD is not a template%qD is not a template function%qD is not a type%qD is not a valid template argument because %qD is a variable, not the address of a variable%qD is not a variable%qD is not a variable in %<aligned%> clause%qD is not a variable in %<allocate%> clause%qD is not a variable in %<nontemporal%> clause%qD is not a variable in %qs clause%qD is not a variable in clause %<firstprivate%>%qD is not a variable in clause %<lastprivate%>%qD is not a variable in clause %qs%qD is not a variable template%qD is not an argument in %<uniform%> clause%qD is not captured%qD is not compatible with %qD%qD is not defined outside of function scope%qD is not eligible for %<strub%> because %<-fsplit-stack%> is enabled%qD is not eligible for %<strub%> because of attribute %<noipa%>%qD is not eligible for %<strub%> because of attribute %<simd%>%qD is not eligible for %<strub%> on the target system%qD is not eligible for internal %<strub%> because it calls %qD%qD is not eligible for internal %<strub%> because it contains a non-local goto target%qD is not eligible for internal %<strub%> because of attribute %<noclone%>%qD is not eligible for internal %<strub%> because the address of a local label escapes%qD is not lvalue expression nor array section in %qs clause%qD is not of pointer type%qD is not public%qD is not usable as a %<constexpr%> function because:%qD is specified more than once%qD is static but used in inline function %qD which is not static%qD is threadprivate variable in %qs clause%qD is too small to hold all values of %q#T%qD is unavailable%qD is unavailable: %s%qD is used uninitialized%qD may access %E byte in a region of size %E%qD may access %E bytes in a region of size %E%qD may access %E or more bytes in a region of size %E%qD may access between %E and %E bytes in a region of size %E%qD may be a static member function only with %<-std=c++23%> or %<-std=gnu++23%>%qD may be used uninitialized%qD may not be declared as static%qD may not be declared within a namespace%qD may read %E byte from a region of size %E%qD may read %E bytes from a region of size %E%qD may read %E or more bytes from a region of size %E%qD may read between %E and %E bytes from a region of size %E%qD may write %E byte into a region of size %E%qD may write %E bytes into a region of size %E%qD may write %E or more bytes into a region of size %E%qD may write between %E and %E bytes into a region of size %E%qD moving an object of non-trivial type %#qT and size %E into a region of size %E%qD moving an object of non-trivially copyable type %#qT; use %<new%> and %<delete%> instead%qD moving an object of type %#qT with deleted copy constructor; use %<new%> and %<delete%> instead%qD moving an object of type %#qT with deleted destructor%qD must be a global variable in %<#pragma acc declare link%>%qD must be a member function%qD must be a non-member function%qD must be a non-static member function%qD must be a variable declared in the same scope as %<#pragma acc declare%>%qD must be either a non-static member function or a non-member function%qD must be of %<omp_interop_t%>%qD must have an argument of class or enumerated type%qD must have either one or two arguments%qD must have either zero or one argument%qD must have exactly one argument%qD must have exactly two arguments%qD must have no arguments%qD must not have variable number of arguments%qD not defined%qD of a string of length %wu and an array of size %wu evaluates to nonzero%qD of a string of length %wu or more and an array of size %wu evaluates to nonzero%qD of a string of length %wu, an array of size %wu and bound of %wu evaluates to nonzero%qD of strings of length %wu and %wu and bound of %wu evaluates to nonzero%qD offset %s from the object at %qE is out of the bounds of %qT%qD offset %s from the object at %qE is out of the bounds of referenced subobject %qD with type %qT at offset %wi%qD offset %s is out of bounds%qD offset %s is out of the bounds [0, %wu]%qD offset %s is out of the bounds [0, %wu] of object %qD with type %qT%qD offset %s is out of the bounds of object %qD with type %qT%qD only valid in lambda with %<-std=c++23%> or %<-std=gnu++23%>%qD output may be truncated copying %E byte from a string of length %wu%qD output may be truncated copying %E bytes from a string of length %wu%qD output may be truncated copying between %wu and %wu bytes from a string of length %wu%qD output truncated before terminating nul copying %E byte from a string of the same length%qD output truncated before terminating nul copying %E bytes from a string of the same length%qD output truncated before terminating nul copying as many bytes from a string as its length%qD output truncated copying %E byte from a string of length %wu%qD output truncated copying %E bytes from a string of length %wu%qD output truncated copying between %wu and %wu bytes from a string of length %wu%qD pointer overflow between offset %s and size %s%qD pointer overflow between offset %s and size %s accessing array %qD with type %qT%qD reading %E byte from a region of size %E%qD reading %E bytes from a region of size %E%qD reading %E or more bytes from a region of size %E%qD reading between %E and %E bytes from a region of size %E%qD receives nonlocal gotos, %<-fharden-control-flow-redundancy%> is not supported%qD redeclared with different access%qD redeclared with different visibility%qD referenced in target region does not have a mappable type%qD refers to TU-local entity %qD and cannot be instantiated in other TUs%qD refers to TU-local function %qD%qD refers to TU-local object %qD%qD renamed after being referenced in assembly%qD requires %<strub%>, but no viable %<strub%> mode was found%qD shall not be const%qD should be initialized%qD should be initialized in the member initialization list%qD should have been declared inside %qD%qD should return by value%qD sizes specified with %<sizeof%> in the earlier argument and not in the later argument%qD source argument is the same as destination%qD specified both in declare target %<link%> and %<to%> or %<enter%> clauses%qD specified both in declare target %<link%> and %qs clauses%qD specified both in declare target %<link%> and implicitly in %<to%> clauses%qD specified bound %E equals destination size%qD specified bound %E equals source length%qD specified bound %E exceeds destination size %E%qD specified bound %E exceeds maximum object size %E%qD specified bound %E exceeds source size %E%qD specified bound %E may exceed destination size %E%qD specified bound %E may exceed maximum object size %E%qD specified bound %E may exceed source size %E%qD specified bound %s exceeds maximum object size %E%qD specified bound %s exceeds the size %E of unterminated array%qD specified bound %s exceeds the size of at most %E of unterminated array%qD specified bound %s may exceed the size of at most %E of unterminated array%qD specified bound %wu exceeds maximum object size %wu%qD specified bound [%E, %E] exceeds destination size %E%qD specified bound [%E, %E] exceeds maximum object size %E%qD specified bound [%E, %E] exceeds source size %E%qD specified bound [%E, %E] may exceed destination size %E%qD specified bound [%E, %E] may exceed maximum object size %E%qD specified bound [%E, %E] may exceed source size %E%qD specified bound between %wu and %wu exceeds maximum object size %wu%qD specified bound depends on the length of the source argument%qD specified in %<allocate%> clause but not in an explicit privatization clause%qD specified in %<inscan%> %<reduction%> clause but not in %<scan%> directive clause%qD specified in %qs clause but not in %<inscan%> %<reduction%> clause on the containing construct%qD specified size %E exceeds maximum object size %E%qD specified size %E may exceed maximum object size %E%qD specified size between %E and %E exceeds maximum object size %E%qD specified size between %E and %E may exceed maximum object size %E%qD specifier conflicts with %<typedef%>%qD specifier conflicts with %qs%qD specifies less restrictive attribute than its target %qD: %e%qD specifies less restrictive attributes than its target %qD: %e%qD specifies more restrictive attribute than its target %qD: %e%qD specifies more restrictive attributes than its target %qD: %e%qD target declared here%qD used as a variant with incompatible %<construct%> selector sets%qD used before its definition%qD used in its own initializer%qD used without template arguments%qD violates the C++ One Definition Rule%qD was declared %<extern%> and later %<static%>%qD was declared %qs which implies default visibility%qD was declared here%qD was hidden%qD was not declared %<constexpr%>%qD was not declared in this scope%qD was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation%qD was not declared in this scope; did you mean %qs?%qD was not initialized with a constant expression%qD was previously declared here%qD was promoted to an immediate function%qD was promoted to an immediate function because its body contains an immediate-escalating expression %qE%qD was used with no declaration before its definition%qD was used with no prototype before its definition%qD will be initialized after%qD writing %E byte into a region of size %E overflows the destination%qD writing %E bytes into a region of size %E overflows the destination%qD writing %E or more bytes into a region of size %E overflows the destination%qD writing %wu byte into a region of size %wu%qD writing %wu bytes into a region of size %wu%qD writing %wu byte into a region of size between %wu and %wu%qD writing %wu bytes into a region of size between %wu and %wu%qD writing between %E and %E bytes into a region of size %E overflows the destination%qD writing between %wu and %wu bytes into a region of size %wu%qD writing between %wu and %wu bytes into a region of size between %wu and %wu%qD writing one too many bytes into a region of a size that depends on %<strlen%>%qD writing to an object of a non-trivial type %#qT leaves %wu byte unchanged%qD writing to an object of a non-trivial type %#qT leaves %wu bytes unchanged%qD writing to an object of non-trivial type %#qT%s%qD writing to an object of non-trivially copyable type %#qT%s%qD writing to an object of type %#qT containing a pointer to data member%s%qD writing to an object of type %#qT with %qs member %qD%qD writing to an object of type %#qT with no trivial copy-assignment%qD writing to an object of type %#qT with no trivial copy-assignment%s%qD writing to an object with a deleted copy constructor%qD: visibility attribute ignored because it conflicts with previous declaration%qE 2.95 vtable-compatibility attribute applies only to C++ classes%qE 2.95 vtable-compatibility attribute applies only when compiling a kext%qE appears more than once in %<aligned%> clauses%qE appears more than once in %<allocate%> clauses%qE appears more than once in %<nontemporal%> clauses%qE appears more than once in data clauses%qE appears more than once in map clauses%qE appears more than once on the same %<declare target%> directive%qE argument %Z may overlap destination object %qE%qE arguments %Z may overlap destination object %qE%qE argument %Z overlaps destination object %qE%qE arguments %Z overlap destination object %qE%qE argument is not a function%qE argument must be one of %qs, %qs, %qs, or %qs%qE argument not a string%qE argument not an identifier%qE arguments %Z and maybe %Z overlap destination object %qE%qE attribute address out of range 0x%x%s0x%x%qE attribute allows only an integer constant argument%qE attribute applied to %qD with void return type%qE attribute applied to %qT after its definition%qE attribute applied to extern "C" declaration %qD%qE attribute applied to non-class, non-enum type %qT%qE attribute applied to non-function, non-variable %qD%qE attribute applies only to function definitions%qE attribute applies only to functions%qE attribute applies only to initialized variables with external linkage%qE attribute argument %E is not a power of 2%qE attribute argument %E is not an integer constant%qE attribute argument %E is not in the range [0, %wu]%qE attribute argument %E is not positive%qE attribute argument %i has type %qT%qE attribute argument %i is invalid%qE attribute argument %i value %qE does not refer to a function parameter%qE attribute argument %i value %qE does not refer to a variable argument list%qE attribute argument %i value %qE exceeds the number of function parameters %u%qE attribute argument %i value %qE is not an integer constant%qE attribute argument %i value %qE refers to a variadic function parameter of unknown type%qE attribute argument %i value %qE refers to parameter type %qT%qE attribute argument %qE exceeds %u%qE attribute argument %qE is not an integer constant%qE attribute argument %qE is not an integer constant between 0 and 3%qE attribute argument %qE is not recognized%qE attribute argument 1 does not name a function%qE attribute argument 1 is ambiguous%qE attribute argument 1 must take a pointer type as its first argument%qE attribute argument 1 must take a pointer type as its first argument; have %qT%qE attribute argument cannot be a constant arithmetic expression%qE attribute argument cannot be a string%qE attribute argument has type %qT%qE attribute argument is invalid%qE attribute argument must be a string constant%qE attribute argument must be an expression that evaluates to true or false%qE attribute argument not a string constant%qE attribute argument not an integer%qE attribute argument not an integer constant%qE attribute argument should be between 0 to 255%qE attribute argument should be between 18 to 255%qE attribute argument value %qE does not refer to a function parameter%qE attribute argument value %qE does not refer to a variable argument list%qE attribute argument value %qE exceeds %wu%qE attribute argument value %qE exceeds the number of function parameters %u%qE attribute argument value %qE is negative%qE attribute argument value %qE is not an integer constant%qE attribute argument value %qE refers to a variadic function parameter of unknown type%qE attribute argument value %qE refers to parameter type %qT%qE attribute can only be applied to functions or parameters%qE attribute can only be applied to functions or to class or enumeration types%qE attribute can only be applied to functions or to structure, union or enumeration types%qE attribute can only be applied to non-static data members%qE attribute cannot be applied to a bit-field%qE attribute cannot be specified for local variables%qE attribute cannot be specified for register variables%qE attribute cannot be specified for thread-local variables%qE attribute conflicts with %qE attribute%qE attribute directive ignored%qE attribute does not apply to functions%qE attribute does not apply to types%qE attribute does not take any arguments%qE attribute doesn%'t apply to functions%qE attribute duplicated%qE attribute follows %qE%qE attribute has no effect%qE attribute has no effect on functions with static linkage%qE attribute has no effect on unit local functions%qE attribute have effect only on public objects%qE attribute ignored%qE attribute ignored because %qD does not have thread storage duration%qE attribute ignored because %qD is not a local variable%qE attribute ignored because %qD is not a variable%qE attribute ignored because %qT is already defined%qE attribute ignored because of argument %qE%qE attribute ignored for %qE%qE attribute ignored for field of type %qT%qE attribute ignored for type %qT%qE attribute ignored on a declaration of a different kind than referenced symbol%qE attribute ignored on a function returning %qT%qE attribute ignored on a redeclaration of the referenced symbol%qE attribute ignored on functions returning %qT; valid only for pointer return types%qE attribute ignored on non-class types%qE attribute ignored on non-enum%qE attribute ignored on objects of type %qT%qE attribute ignored on types%qE attribute ignored without %<-mcmse%> option%qE attribute ignored without %<-mistack%>%qE attribute ignored.  Large memory model (%<-mlarge%>) is required.%qE attribute ignored. Use %<-fcf-protection%> option to enable it%qE attribute ignored; field must be a function pointer%qE attribute ignored; valid only for functions%qE attribute ignored; valid only for functions and function pointer fields%qE attribute is for pointer types only%qE attribute is not allowed for a non-array field%qE attribute is not allowed for a non-field declaration %q+D%qE attribute is not allowed for a non-flexible array member field%qE attribute is not supported because endianness is not uniform%qE attribute is not supported for C++ for now, ignored%qE attribute is not supported for R8C target%qE attribute is only applicable on functions%qE attribute is only valid for Objective-C objects%qE attribute is only valid on %<struct%> type%qE attribute is specific to ELF targets%qE attribute is supported only for SH2A%qE attribute is used for non-class method%qE attribute may be put on a typedef only; attribute is ignored%qE attribute may not be specified for %q+D%qE attribute may not be specified for a non-array field%qE attribute must appear before %qs attribute%qE attribute must apply to a declaration%qE attribute not allowed with auto storage class%qE attribute not available to functions that return value on the stack%qE attribute not available to functions with arguments passed on the stack%qE attribute not available to functions with variable number of arguments%qE attribute on a function not returning a pointer%qE attribute on function returning %<void%>%qE attribute on function type without pointer arguments returning %<void%>%qE attribute on non-volatile variable%qE attribute only affects top level objects%qE attribute only applies to SH2A%qE attribute only applies to base type of a function pointer%qE attribute only applies to function types%qE attribute only applies to functions%qE attribute only applies to interrupt functions%qE attribute only applies to structure, union and class types%qE attribute only applies to types%qE attribute only applies to variables%qE attribute only applies to variables in static storage%qE attribute only applies to variadic functions%qE attribute only available for 32-bit%qE attribute only supported for reduced Tiny cores%qE attribute only supported in C%qE attribute only supported on boolean types%qE attribute only supported on integral types%qE attribute only supported on non-mask vector types%qE attribute only valid for ARC EM architecture%qE attribute only valid for ARCv2 architecture%qE attribute requires a string argument%qE attribute requires a string constant argument%qE attribute requires a void return type%qE attribute requires an integer argument%qE attribute requires an integer constant argument%qE attribute requires different values for %<false%> and %<true%> for type %qT%qE attribute requires prototypes with named arguments%qE attribute takes no arguments%qE attribute with unsupported boolean precision%qE attribute without arguments on a non-prototype%qE cannot be applied to non-pointer type %qT%qE cannot be used as a function%qE cannot be used as a member pointer, since it is of type %qT%qE cannot have both %qs and %qs attributes%qE declared %<threadprivate%> after first use%qE declared as function returning a function%qE declared as function returning an array%qE declared here%qE defined as wrong kind of tag%qE does not constrain a type%qE does not have %<omp_depend_t%> type in %<depend%> clause with %<depobj%> dependence type%qE does not have a mappable type in %qs clause%qE does not have pointer or array type%qE does not name a type%qE does not name a type; did you mean %qs?%qE does not satisfy return-type-requirement%qE does not satisfy return-type-requirement, because%qE does not support 32-bit sign-extended offsets%qE does not support 32-bit vector type %qT%qE does not support sign-extended offsets%qE evaluates to false%qE fails to be a typedef or built in type%qE has both %<extern%> and initializer%qE has const type for %<reduction%>%qE has invalid type for %<reduction(%s)%>%qE has no form that takes %qT and %qT arguments%qE has no form that takes %qT arguments%qE has not been declared%qE has not been declared; did you mean %qs?%qE implies default visibility, but %qD has already been declared with a different visibility%qE in %<aligned%> clause is neither a pointer nor an array%qE in %<aligned%> clause is neither a pointer nor an array nor a reference to pointer or array%qE in %<reduction%> clause is a zero size array%qE in %q#T does not name a template type%qE in %q#T does not name a type%qE in namespace %qE does not name a template type%qE in namespace %qE does not name a template type; did you mean %qs?%qE in namespace %qE does not name a type%qE in namespace %qE does not name a type; did you mean %qs?%qE incompatible attribute ignored%qE initialized and declared %<extern%>%qE is a member of a union%qE is a pointer to pointer; did you mean to dereference it before applying %<->%> to it?%qE is a pointer; did you mean to use %<->%>?%qE is an unrecognized format function type%qE is deprecated%qE is deprecated: %s%qE is marked %<throw()%> or %<noexcept%> but no usable %<get_return_object_on_allocation_failure%> is provided by %qT%qE is neither a variable nor a function name in clause %qs%qE is neither function nor member function; cannot be declared friend%qE is not %<noexcept%>%qE is not a class or namespace%qE is not a class template%qE is not a class, namespace, or enumeration%qE is not a constant expression%qE is not a constant expression because allocated storage has not been deallocated%qE is not a constant expression because it initializes a %qT rather than %qT%qE is not a constant expression because it refers to a result of %<operator new%>%qE is not a constant expression because it refers to an incompletely initialized variable%qE is not a constant expression because it refers to mutable subobjects of %qT%qE is not a constant expression when the class %qT is still incomplete%qE is not a template%qE is not a type%qE is not a valid %<asm%> qualifier%qE is not a valid template argument for %qT because it is not the address of a variable%qE is not a valid template argument for type %qT%qE is not a valid template argument for type %qT because %qD does not have external linkage%qE is not a valid template argument for type %qT because %qD has no linkage%qE is not a valid template argument for type %qT because it is a pointer%qE is not a valid template argument for type %qT because it is not an lvalue%qE is not a valid template argument for type %qT because it is of type %qT%qE is not a valid template argument for type %qT because of conflicts in cv-qualification%qE is not a valid template argument for type %qT because string literals can never be used in this context%qE is not a valid template argument of type %qT because %qD has no linkage%qE is not a valid template argument of type %qT because %qE is not a variable or function%qE is not a valid template argument of type %qT in C++98 because %qD does not have external linkage%qE is not a variable in %<aligned%> clause%qE is not a variable in %<allocate%> clause%qE is not a variable in %<nontemporal%> clause%qE is not a variable in %qs clause%qE is not a variable in clause %<firstprivate%>%qE is not a variable in clause %<lastprivate%>%qE is not a variable in clause %qs%qE is not an Objective-C class name or alias%qE is not an argument in %<uniform%> clause%qE is not at beginning of declaration%qE is not initialized%qE is not lvalue expression nor array section in %qs clause%qE is not of type %qT%qE is not recognized as a module control-line%qE is not the entire pattern of the pack expansion%qE is only allowed in Objective-C dialects%qE is only applicable to Objective-C class interfaces, attribute ignored%qE is predetermined %qs for %qs%qE is provided by %qT but %<std::nothrow%> cannot be found%qE is provided by %qT but %qE is not marked %<throw()%> or %<noexcept%>%qE is provided by %qT but is not usable with the function %qD%qE is provided by %qT but is not usable with the function signature %qD%qE is unavailable%qE is unavailable: %s%qE is used uninitialized%qE may be used uninitialized%qE may not respond to %<%c%E%>%qE may only occur after a module interface declaration%qE may only occur once in an export declaration%qE may write a terminating nul past the end of the destination%qE missing template arguments%qE must be %<threadprivate%> for %<copyin%>%qE must be a non-overloaded method%qE must be a non-overloaded static function%qE must return %qT, not %qT%qE must take a single %qT%qE must take no arguments%qE names the constructor, not the type%qE needs isa option %s%qE needs unknown isa option%qE not specified in enclosing %<target%>%qE not specified in enclosing %qs%qE not specified in enclosing OpenACC %qs construct%qE on %<case%> or %<default%> label%qE on a type other than class or enumeration definition%qE on unnamed bit-field%qE output %wu byte%qE output %wu bytes%qE output %wu byte into a destination of size %wu%qE output %wu bytes into a destination of size %wu%qE output %wu or more bytes%qE output %wu or more bytes (assuming %wu)%qE output %wu or more bytes (assuming %wu) into a destination of size %wu%qE output %wu or more bytes into a destination of size %wu%qE output between %wu and %wu bytes%qE output between %wu and %wu bytes into a destination of size %wu%qE output may be truncated before the last format character%qE output truncated before the last format character%qE redeclared as different kind of symbol%qE redeclared with conflicting %qs attributes%qE requires %<-fgnu-tm%>%qE requires a %<declare%> directive for use in a %<routine%> function%qE requires a vector base and a scalar index%qE requires an argument%qE requires the SVE ISA extension%qE should not have %<omp_depend_t%> type in %<depend%> clause with dependence type other than %<depobj%>%qE specified here%qE undeclared (first use in this function)%qE undeclared (first use in this function); did you mean %qs?%qE undeclared here (not in a function)%qE undeclared here (not in a function); did you mean %qs?%qE used with %<auto%>%qE used with %<constexpr%>%qE used with %<extern%>%qE used with %<register%>%qE used with %<typedef%>%qE used with %qs%qE with %<link%> clause used in %<routine%> function%qE writing a terminating nul past the end of the destination%qF declared %<static%> but never defined%qF requires %<-mvx%>%qF requires z14 or higher%qF requires z15 or higher%qF requires z17 or higher%qT and %qT are in disjoint named address spaces%qT as type rather than plain %<decltype(auto)%>%qT declared here%qT declared in %<constexpr%> compound literal%qT declared in underspecified object declaration%qT declared in underspecified object initializer%qT declared with a mismatched class-key %qs%qT declared with greater visibility than its base %qT%qT declared with greater visibility than the type of its field %qD%qT defined as %qs here%qT defined in %<constexpr%> compound literal%qT defined in underspecified object declaration%qT defined in underspecified object initializer%qT defined with direct virtual base%qT defined with multiple direct bases%qT does not have the %E ABI tag that %qT (used in the type of %qD) has%qT does not have the %E ABI tag that base %qT has%qT does not match original declaration%qT first declared as %qs here%qT has a base %qT which depends on the type %qT which has no linkage%qT has a base %qT which has internal linkage%qT has a base %qT which has no linkage%qT has a base %qT which uses the anonymous namespace%qT has a field %q#D whose type has internal linkage%qT has a field %q#D whose type has no linkage%qT has a field %q#D whose type uses the anonymous namespace%qT has a field %qD whose type depends on the type %qT which has no linkage%qT has a previous declaration here%qT has no member named %qE%qT has no member named %qE; did you mean %qE?%qT has no name and cannot be differentiated from similar lambdas in other TUs%qT has no name and is not defined within a class, function, or initializer%qT has no non-static data member named %qD%qT is a variably modified type%qT is already a friend of %qT%qT is an ambiguous base class of dynamic type %qT of its operand%qT is an ambiguous base of %qT%qT is an inaccessible base of %qT%qT is not a base of %qT%qT is not a class or namespace%qT is not a class type%qT is not a class, namespace, or enumeration%qT is not a class, struct, or union type%qT is not a direct base of %qT%qT is not a member class template of %qT%qT is not a member of %qT%qT is not a nested class of %qT%qT is not a pointer-to-object type%qT is not a template%qT is not a template type%qT is not a valid type for a template non-type parameter because it is not structural%qT is not an %<asm%> qualifier%qT is not an accessible base of %qT%qT is not an enumeration type%qT is promoted to %qT when passed through %<...%>%qT is/uses unnamed type%qT may not intend to support class template argument deduction%qT not permitted in template argument%qT referred to as %qs%qT referred to as enum%qT resolves to %qT, which is not a class type%qT resolves to %qT, which is not an enumeration type%qT temporary created here%qT%d%qE%dpassing single vector %qT to argument %d of %qE, which expects a tuple of %d vectors%qV qualifiers cannot be applied to %qT%qc conversion used unquoted%qc conversion used within a quoted sequence%qc directive redundant after prior occurence of the same%qc in input operand outside of a function%qc in output operand outside of a function%qs%qs LHS in assignment statement%qs LHS in clobber statement%qs accessing uninitialized byte at offset %d%qs already defined as specific binding for the generic %qs at %C%qs and %<%s-%s%> are incompatible%qs and %<%s=%s%> are incompatible%qs and %qs are incompatible%qs and %qs arguments of %qs intrinsic at %L must have identical shape.%qs and %qs arguments of %qs intrinsic at %L must have the same type%qs and %qs attributes are not compatible%qs and %qs cannot be mixed FUNCTION/SUBROUTINE for GENERIC %qs at %L%qs and %qs cannot both be enabled%qs and %qs for GENERIC %qs at %L are ambiguous%qs appears more than once in %<allocate%> at %L%qs appears to be a misspelled %qs handler, missing %<__vector%> prefix%qs applied to a void type%qs applied to an incomplete type%qs applied to non-RVV type %qT%qs applied to non-SVE type %qT%qs applied to non-vector type %qT%qs applied to type %qT, which already has a size%qs argument has invalid operand number (argument %lu)%qs argument missing terminating nul%qs argument of %qs intrinsic at %L cannot be INTENT(IN)%qs argument of %qs intrinsic at %L cannot be of type %s%qs argument of %qs intrinsic at %L has invalid permutation of dimensions (dimension %qd duplicated)%qs argument of %qs intrinsic at %L has invalid shape in dimension %d (%ld/%ld)%qs argument of %qs intrinsic at %L has negative element (%d)%qs argument of %qs intrinsic at %L has out-of-range dimension (%d)%qs argument of %qs intrinsic at %L has wrong number of elements (%d/%d)%qs argument of %qs intrinsic at %L is empty%qs argument of %qs intrinsic at %L is not a valid dimension index%qs argument of %qs intrinsic at %L must be %s%qs argument of %qs intrinsic at %L must be %s or %s%qs argument of %qs intrinsic at %L must be ALLOCATABLE%qs argument of %qs intrinsic at %L must be INTEGER%qs argument of %qs intrinsic at %L must be INTEGER or PROCEDURE%qs argument of %qs intrinsic at %L must be INTEGER or REAL%qs argument of %qs intrinsic at %L must be INTEGER or REAL or CHARACTER%qs argument of %qs intrinsic at %L must be INTEGER or REAL or CHARACTER or UNSIGNED%qs argument of %qs intrinsic at %L must be INTEGER or REAL or UNSIGNED%qs argument of %qs intrinsic at %L must be INTEGER or UNSIGNED%qs argument of %qs intrinsic at %L must be INTEGER, LOGICAL, or a BOZ literal constant%qs argument of %qs intrinsic at %L must be INTEGER, REAL or UNSIGNED%qs argument of %qs intrinsic at %L must be REAL or COMPLEX%qs argument of %qs intrinsic at %L must be a POINTER%qs argument of %qs intrinsic at %L must be a POINTER or a TARGET%qs argument of %qs intrinsic at %L must be a POINTER, ALLOCATABLE or procedure pointer%qs argument of %qs intrinsic at %L must be a constant%qs argument of %qs intrinsic at %L must be a data entity%qs argument of %qs intrinsic at %L must be a logical array%qs argument of %qs intrinsic at %L must be a pointer or target VARIABLE or FUNCTION%qs argument of %qs intrinsic at %L must be a scalar%qs argument of %qs intrinsic at %L must be a variable%qs argument of %qs intrinsic at %L must be an array%qs argument of %qs intrinsic at %L must be an interoperable data entity: %s%qs argument of %qs intrinsic at %L must be default real%qs argument of %qs intrinsic at %L must be double precision%qs argument of %qs intrinsic at %L must be less than rank %d%qs argument of %qs intrinsic at %L must be numeric or LOGICAL%qs argument of %qs intrinsic at %L must be of a dummy variable%qs argument of %qs intrinsic at %L must be of a kind not wider than the default kind (%d)%qs argument of %qs intrinsic at %L must be of an OPTIONAL dummy variable%qs argument of %qs intrinsic at %L must be of an extensible type%qs argument of %qs intrinsic at %L must be of intrinsic type%qs argument of %qs intrinsic at %L must be of kind %d%qs argument of %qs intrinsic at %L must be of rank %d%qs argument of %qs intrinsic at %L must be of rank 1 or 2%qs argument of %qs intrinsic at %L must be positive%qs argument of %qs intrinsic at %L must be the same kind as %qs%qs argument of %qs intrinsic at %L must be the same type and kind as %qs%qs argument of %qs intrinsic at %L must have a numeric type%qs argument of %qs intrinsic at %L must have a type of either REAL or INTEGER%qs argument of %qs intrinsic at %L must have length at least 1%qs argument of %qs intrinsic at %L must have the same rank as %qs or be a scalar%qs argument of %qs intrinsic at %L must not be OPTIONAL%qs argument of %qs intrinsic at %L must not be a subobject of %qs%qs argument of %qs intrinsic at %L must not be present if %<x%> is COMPLEX%qs argument of %qs intrinsic at %L must provide at least as many elements as there are .TRUE. values in %qs (%ld/%d)%qs argument of %qs intrinsic at %L not yet supported%qs argument of %qs intrinsic at %L shall appear only if %qs is of type REAL and %qs is of type INTEGER or UNSIGNED%qs argument of %qs intrinsic at %L shall be of type integer, real or character%qs argument of %qs intrinsic at %L shall have a type of CHARACTER(KIND=C_CHAR)%qs argument of %qs intrinsic at %L shall have the same type as %qs at %L%qs argument of %qs intrinsic at %L shall not be TYPE(*)%qs argument of %qs intrinsic at %L shall not be UNSIGNED%qs argument of %qs intrinsic at %L shall not be a procedure%qs argument of %qs intrinsic at %L shall not be an assumed-size array%qs argument of %qs intrinsic at %L shall not be coindexed%qs argument of %qs intrinsic at %L shall specify a valid integer kind%qs argument of intrinsic %qs at %L of must have rank %d or be a scalar%qs argument references non-pointer operand (argument %lu, operand %lu)%qs argument with out-of-range operand number (argument %lu, operand %lu)%qs as base where non-register is required%qs at %C is a DEC extension, enable with %<-fdec-structure%>%qs at %C is already defined as FINAL procedure%qs at %C is not a member of the %qs structure%qs at %C is not a member of the %qs structure; did you mean %qs?%qs at %C is not a variable%qs at %C is not an inquiry reference to an intrinsic type component%qs at %C is not an inquiry reference to an intrinsic type component %qs%qs at %C is the name of a recursive function and so refers to the result variable. Use an explicit RESULT variable for direct recursion (12.5.2.1)%qs at %L already is initialized at %L%qs at %L associated to expression cannot be used in a variable definition context (%s)%qs at %L associated to pointer function target being used in a variable definition context (%s)%qs at %L associated to vector-indexed target cannot be used in a variable definition context (%s)%qs at %L cannot appear in COMMON [F2008:C5100]%qs at %L cannot have the VALUE attribute because it is not a dummy argument%qs at %L has %d but requires %d %<omp_interop_kind%> kind dummy arguments as it is utilized with the %<append_args%> clause at %L%qs at %L has a type, which is not consistent with the CALL at %L%qs at %L has attributes specified outside its INTERFACE body%qs at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape or assumed-rank array%qs at %L in %qs clause must be a scalar integer variable of %<omp_interop_kind%> kind%qs at %L in %qs clause must be definable%qs at %L is a redefinition of the declaration in the corresponding interface for MODULE PROCEDURE %qs%qs at %L is ambiguous%qs at %L is an array and OPTIONAL; If it is not present, then it cannot be the actual argument of an ELEMENTAL procedure unless there is a non-optional argument with the same rank (Fortran 2018, 15.5.2.12)%qs at %L is host associated at %L into a contained procedure with an internal procedure of the same name%qs at %L is not a VALUE%qs at %L is not a function%qs at %L is not a module procedure%qs at %L is of the ABSTRACT type %qs%qs at %L is part of the common block %</%s/%> and may only be specificed implicitly via the named common block%qs at %L is specified more than once%qs at %L must be a nonpointer, nonallocatable scalar integer dummy argument of %<omp_interop_kind%> kind as it utilized with the %<append_args%> clause at %L%qs at %L must be less than BIT_SIZE(%qs)%qs at %L must be less than or equal to BIT_SIZE(%qs)%qs at %L must be less than or equal to the BIT_SIZE of INTEGER(KIND=%d)%qs at %L must be nonnegative%qs at %L must have constant character length in this context%qs at %L must have the same number of formal arguments as the overridden procedure%qs at %L must not be DEFERRED as it overrides a non-DEFERRED binding%qs at %L overrides a FUNCTION and must also be a FUNCTION%qs at %L overrides a NOPASS binding and must also be NOPASS%qs at %L overrides a PUBLIC procedure and must not be PRIVATE%qs at %L overrides a PURE procedure and must also be PURE%qs at %L overrides a SUBROUTINE and must also be a SUBROUTINE%qs at %L overrides a binding with PASS and must also be PASS%qs at %L overrides a non-ELEMENTAL procedure and must not be ELEMENTAL, either%qs at %L overrides a procedure binding declared NON_OVERRIDABLE%qs at %L overrides an ELEMENTAL procedure and must also be ELEMENTAL%qs at %L shall be an INTENT(OUT) variable%qs at %L should be a FUNCTION%qs at %L should be a SUBROUTINE%qs at %L should be a scalar of type integer(kind=omp_event_handle_kind)%qs at %L with OPTIONAL attribute not support when utilized with the %<append_args%> clause at %L%qs attribute can only be applied to variadic functions%qs attribute directive ignored%qs attribute does not take any arguments%qs attribute ignored%qs attribute ignored on non-ISR function%qs attribute not supported for %qE in %<__builtin_has_attribute%>%qs attribute not supported for %qT in %<__builtin_has_attribute%>%qs attribute not supported in %<__builtin_has_attribute%>%qs attribute only applies to functions%qs attribute only applies to variadic functions%qs attribute requires prototypes with named arguments%qs attribute without arguments on a non-prototype%qs awaitable type %qT is not a structure%qs cannot appear in a constant-expression%qs cannot appear in a typedef declaration%qs cannot be constant evaluated because the argument cannot be encoded%qs cannot be constant evaluated because the argument cannot be interpreted%qs cannot be constant evaluated because the type is too large%qs cannot be constant evaluated on the target%qs cannot be defined via %<typedef%>%qs cannot be extended at %C because it is BIND(C)%qs cannot be extended at %C because it is a SEQUENCE type%qs cannot be initialized with %<-ftrivial-auto-var_init%>%qs cannot be used for compiling a shared library%qs cannot be used for type declarations%qs cannot be used here%qs cannot be used in a %<constexpr%> function%qs cannot be used in a constructor%qs cannot be used in a destructor%qs cannot be used in a function with a deduced return type%qs cannot be used in a varargs function%qs cannot be used in an unevaluated context%qs cannot be used in the %<main%> function%qs cannot be used outside a function%qs clause argument must be ALLOCATABLE or a POINTER at %L%qs clause at %L specified more than once%qs clause is incompatible with %<read%> or %<write%> clauses%qs clause may not appear on non-rectangular %qs%qs clause requires %qs clause%qs clause specified together with %<inscan%> %<reduction%> clause%qs clause used lexically after first target construct or offloading API%qs clause with %<sink%> modifier refers to iteration never in the iteration space%qs clause with %<sink%> modifier waiting for lexically later iteration%qs clause with %<source%> modifier specified together with %qs clauses with %<sink%> modifier on the same construct%qs combined with %<auto%> qualifier for %qE%qs combined with %<register%> qualifier for %qE%qs conflicts with %<-arch i386%> (%qs ignored)%qs conflicts with %<-arch ppc%> (%qs ignored)%qs construct inside of %qs region%qs declared INTRINSIC at %L does not exist%qs declared as function returning a function%qs declared as function returning an array%qs declared at %L is also the name of an intrinsic.  It can only be called via an explicit interface or if declared EXTERNAL.%qs declared at %L may shadow the intrinsic of the same name.  In order to call the intrinsic, explicit INTRINSIC declarations may be required.%qs declared in a non-class scope%qs defined in a non-class scope%qs defined without first defining %qs%qs directive at %L associated with an ALLOCATE stmt must be preceded by an executable statement or OpenMP construct; note the variables in the list all have the allocatable or pointer attribute%qs directive at %L must either have a variable argument or, if associated with an ALLOCATE stmt, must be preceded by an executable statement or OpenMP construct%qs directive mentioned both times in ABSENT and CONTAINS clauses in %s directive at %L%qs directive mentioned multiple times in %s clause in %s directive at %L%qs does not support MIPS16 code%qs does not support feature %qs%qs does not work on a cross compiler%qs entity cannot have an initializer at %L%qs entity cannot have attributes at %C%qs expects 1 argument but %d given%qs expects 2 arguments but %d given%qs expects a constant argument%qs expects a fixed-point value as argument%qs expects a fixed-point value as first argument%qs expects an integer value as second argument%qs expression must be integral%qs expression of %<volatile%>-qualified type is deprecated%qs failed%qs feature modifier is incompatible with the use of floating-point types%qs feature modifier is incompatible with the use of vector types%qs function cannot have arguments%qs function cannot have different interrupt type%qs function cannot return a value%qs function uses %<auto%> type specifier without trailing return type%qs function with trailing return type has %<decltype(auto)%> as its type rather than plain %<auto%>%qs function with trailing return type has %qT as its type rather than plain %<auto%>%qs function with trailing return type has constrained %<auto%> type specifier rather than plain %<auto%>%qs function with trailing return type not declared with %<auto%> type specifier%qs has %qs%qs has both %<extern%> and initializer%qs has overflowed%qs in %<%s %E%>%qs in %s clause at %L is a zero size array section%qs in %s clause at %L is not a proper array section%qs in ALIGNED clause at %L requires a scalar positive constant integer alignment expression%qs in ALIGNED clause must be POINTER, ALLOCATABLE, Cray pointer or C_PTR at %L%qs in EXTENDS expression at %C is not a derived type%qs in LINEAR clause at %L requires a constant integer linear-step expression or dummy argument specified in UNIFORM clause%qs in LINEAR clause at %L requires a scalar integer linear-step expression%qs in attribute syntax terminated with %qs in pragma syntax%qs in empty declaration%qs in empty declaration with %<enum%> underlying type%qs in gimple IL%qs in pragma syntax terminated with %qs in attribute syntax%qs in the pointer assignment at %L cannot be an l-value since it is a procedure%qs in variable definition context (%s) at %L is not a variable%qs incompatible with explicitly disabled options%qs initialized and declared %<extern%>%qs into non-mode-precision operand%qs intrinsic subprogram at %L has been removed.  Use INT intrinsic subprogram.%qs intrinsic with CHARACTER argument at %L%qs intrinsic with KIND argument at %L%qs intrinsic with RADIX argument at %L%qs is a deprecated identifier in AVR-LibC.  Consider %<#include <avr/interrupt.h>%> or %<#include <compat/deprecated.h>%> before using the %qs macro%qs is a keyword with %qs onwards%qs is a nested function and cannot be accessed from %qs%qs is a reserved identifier in AVR-LibC.  Consider %<#include <avr/interrupt.h>%> before using the %qs macro%qs is already IMPORTed from host scoping unit at %C%qs is an invalid argument to %<-mcpu=%>%qs is an opaque type, and you cannot set it to other values%qs is an unknown %<-save-temps%> option%qs is corrupted%qs is defined but could not be loaded: %s%qs is defined but plugin support is disabled%qs is defined in header %qs; this is probably fixable by adding %<#include %s%>%qs is defined when using option %qs; this is probably fixable by adding %qs to the command-line options%qs is deprecated%qs is deprecated and not recommended in any circumstances%qs is deprecated; use -fno-zero-initialized-in-bss%qs is deprecated; use -fstack-check%qs is disabled by %<-m%s%>, because it requires %<%s%s%>%qs is incompatible with %<-mword-relocations%>%qs is incompatible with %qs%qs is incompatible with the use of floating-point types%qs is incompatible with the use of vector types%qs is loaded but symbol %qs is not found: %s%qs is mutually exclusive with %qs and cannot be specified together%qs is narrower than values of its type%qs is neither a defined operator nor a structure component in dotted string at %C%qs is not a constant expression because %qT contains a pointer to member type%qs is not a constant expression because %qT contains a pointer type%qs is not a constant expression because %qT contains a reference type%qs is not a constant expression because %qT contains a union type%qs is not a constant expression because %qT contains a volatile subobject%qs is not a constant expression because %qT is a pointer to member type%qs is not a constant expression because %qT is a pointer type%qs is not a constant expression because %qT is a reference type%qs is not a constant expression because %qT is a union type%qs is not a constant expression because %qT is volatile%qs is not a directory%qs is not a field, but a %qs%qs is not a gcov data file%qs is not a valid Modula-2 system library name or abbreviation%qs is not a valid base register in %<-mstack-protector-guard-reg=%>%qs is not a valid base register in %qs%qs is not a valid number in %<-mstack-protector-guard-offset=%>%qs is not a valid number in %qs%qs is not a valid offset in %<-mstack-protector-guard-offset=%>%qs is not a valid offset in %qs%qs is not a valid option to the preprocessor%qs is not an associative array%qs is not an expression%qs is not an inline-controlable intrinsic%qs is not an option that controls warnings%qs is not defined as a type%qs is not supported by arch %qs%qs is not supported for 64-bit Darwin; it is incompatible with the installed C and C++ libraries%qs is not supported for this target%qs is not supported in 32-bit mode%qs is not supported in this compiler configuration%qs is not supported in this configuration%qs is not supported on little endian systems%qs is not supported on this target%qs is not supported with %qs%qs is not supported, now cmodel is set to %qs%qs is not valid for %<-mmacosx-version-min%>%qs is not valid for %qs%qs is of a PRIVATE type and cannot be a dummy argument of %qs, which is PUBLIC at %L%qs is only supported when %<-mrvv-vector-bits=zvl%> is specified%qs is used uninitialized%qs is version %q.*s, expected version %q.*s%qs length expression must be integral%qs length expression must be positive constant integer expression%qs listed in %<allocate%> statement at %L but it is neither explicitly in listed in the %<!$OMP ALLOCATE%> directive nor exists a directive without argument list%qs matching variant is deprecated%qs matching variant requires z14 or higher%qs matching variant requires z15 or higher%qs matching variant requires z17 or higher%qs may be used uninitialized%qs may only be used with a single declarator%qs must be a module procedure or an external procedure with an explicit interface at %L%qs must be by itself for %<-mharden-sls=%>%qs must be of same type and kind as %qs at %L in %qs%qs must be the first clause of %qs%qs must be used with %qs%qs must not appear in the array specification at %L in the same ALLOCATE statement where it is itself allocated%qs needs a valid base register%qs not allowed outside STRUCTURE at %C%qs not at element boundary%qs not supported by your assembler%qs not supported with %<-msoft-float%>%qs not yet supported%qs of %qs is PRIVATE at %L%qs of module %qs, imported at %C, is also the name of the current program unit%qs of non-mode-precision operand%qs only supported in OpenACC code%qs only supports non-pic code on M-profile targets%qs only supports non-pic code on M-profile targets with the MOVT instruction%qs operand not an integral type%qs option can be specified only for offload compiler%qs parameter inquiry for %qs in variable definition context (%s) at %L%qs plugin is not licensed under a GPL-compatible license%qs pointer is null%qs profile count data file not found%qs property cannot be set%qs region may not be closely nested inside of work-sharing, %<loop%>, explicit %<task%> or %<taskloop%> region%qs requires %<__ibm128%> type support%qs requires %<long double%> to be IBM 128-bit format%qs requires %qs%qs requires %qs or %qs%qs requires PowerPC64 architecture, enabling%qs requires VSX support%qs requires a target that provides the %qs instruction%qs requires an initialized data declaration%qs requires an integer constant%qs requires an integer constant expression%qs requires branch-likely instructions%qs requires full ISA 2.06 support%qs requires full ISA 3.0 support%qs requires quad-precision floating-point arithmetic%qs requires the %qs and %qs options%qs requires the %qs option%qs requires the %qs option and either the %qs or %qs option%qs should be %qs to terminate a template argument list%qs should be from a scalar to a like vector%qs specified bound %s exceeds maximum object size %E%qs specified bound %s exceeds the size %E of unterminated array%qs specified bound %s exceeds the size of at most %E of unterminated array%qs specified bound %s may exceed the size of at most %E of unterminated array%qs specified for auto variable %qE%qs specified for parameter %qE%qs specified for structure field%qs specified for structure field %qE%qs specified for unnamed parameter%qs specified in %<allocate%> at %L but not in the associated ALLOCATE statement%qs specified in %<allocate%> clause at %L but not in an explicit privatization clause%qs specified multiple times in the same option%qs specified with %<decltype%>%qs specified with %<typeof%>%qs specified with %qT%qs specified with typedef-name %qD%qs specifies a conflicting level of parallelism%qs statement operand %qE refers to a loop outside of its body%qs string ill-formed%qs symbol %q+D must have static linkage%qs symbol %q+D ultimately targets itself%qs tag used in naming %q#T%qs unsupported for this ABI%qs used with %<auto%>%qs used with %qE%qs uses dynamic stack allocation%qs uses register r29%qs value must be positive%qs variable is neither a pointer nor an array%qs variable is neither a pointer nor reference to pointer%qs variable is neither a pointer, nor an array nor reference to pointer or array%qs variable is not a pointer%qs was declared here%qs without corresponding %qs%qs: [%u] bad %<next_regno%> for empty chain (%u)%qs: [%u] bad %<oldest_regno%> (%u)%qs: [%u] non-empty register in chain (%s %u %i)%qs: loop in %<next_regno%> chain (%u)%r%s:%d:%R   %r%s:%d:%d:%R   %s%s
  %s  Same as %s.%s !$ACC LOOP loops not perfectly nested at %L%s %#qD%s %#qS%s %<%s(%E)%> %p %d%s %e expects a matching %e argument%s %e expects argument of type %e, but argument %d has type %e%s %qE does not fully implement the %qE protocol%s %qT requires the V ISA extension%s %qT requires the minimal vector length %qd but %qd is given%s %qT requires the zve32f, zve64f, zve64d or v ISA extension%s %qT requires the zve64d or v ISA extension%s %qT requires the zve64x, zve64f, zve64d or v ISA extension%s %qT requires the zvfhmin or zvfh ISA extension%s %qs%s %qs construct inside of %s %qs region%s %qs is an invalid argument to builtin %qs%s %s %p %d%s %s%s
  %s %wd out of range %wd - %wd%s '%s'
! %s - %u-bit integer numbers unsupported (mode %qs)%s - %u-bit-precision complex floating-point numbers unsupported (mode %qs)%s - %u-bit-precision decimal floating-point numbers unsupported (mode %qs)%s - %u-bit-precision floating-point numbers unsupported (mode %qs)%s - unsupported mode %qs%s argument to IMAGE_INDEX must be a rank one array at %L%s at %C is a DEC extension, enable with %<-fdec%>%s at %C is a DEC extension, enable with %<-fdec-static%>%s at %C is a DEC extension, enable with %<-fdec-structure%>%s at %L%s at %L has no default type%s at %L is a DEC extension, enable with %<-fdec-static%>%s at %L must be INTEGER%s at %L must be a scalar%s at %L must be integer%s attribute applied to %s %s at %L%s attribute at %L is not allowed outside of the specification part of a module%s attribute conflicts with %s attribute at %L%s attribute conflicts with %s attribute in %qs at %L%s attribute not allowed in BLOCK DATA program unit at %L%s attribute of %qs conflicts with %s attribute at %L%s between %L and %L%s between the MODULE PROCEDURE declaration in MODULE %qs and the declaration at %L in (SUB)MODULE %qs%s cannot be a DO CONCURRENT loop at %L%s cannot be a DO WHILE or DO without loop control at %L%s cannot be used in %<asm%> here%s cannot contain OpenMP API call in intervening code at %L%s cannot contain OpenMP directive in intervening code at %L%s cannot contain loop in intervening code at %L%s clause at %L requires a scalar INTEGER expression%s clause variable %qs at %L is neither a POINTER nor an array%s contains too many lines%s does not support %%n$ operand number formats%s does not support %s%s does not support %s with the %<%%%c%> %s format%s does not support block_ends_with_call_p%s does not support block_ends_with_condjump_p%s does not support can_duplicate_block_p%s does not support can_merge_blocks_p%s does not support can_remove_branch_p%s does not support create_basic_block%s does not support delete_basic_block%s does not support dump_bb_for_graph%s does not support duplicate_block%s does not support flow_call_edges_add%s does not support force_nonfallthru%s does not support make_forwarder_block%s does not support merge_blocks%s does not support move_block_after%s does not support predict_edge%s does not support predicted_by_p%s does not support redirect_edge_and_branch%s does not support redirect_edge_and_branch_force%s does not support split_block%s does not support split_edge%s does not support the %<%%%c%> %s format%s does not support the %<%%%s%c%> %s format%s does not support the %qs %s length modifier%s does not take any feature options%s exited with status %d%s expects a compile time integer constant%s expects a compile time integer constant of 0x01, 0x7f, 0x80 or 0xfe as first argument%s expects a compile time long integer constant as first argument%s expression list treated as compound expression%s from %s called in %s%s from %s referenced in %s%s ignored with %s and %<%%%c%> %s format%s ignored with %s in %s format%s inner loops must be perfectly nested at %L%s inner loops must be perfectly nested with ORDERED clause at %L%s inner loops must be perfectly nested with REDUCTION INSCAN clause at %L%s instructions aren%'t allowed in a function with the %<no_caller_saved_registers%> attribute%s instructions aren%'t allowed in an exception service routine%s instructions aren%'t allowed in an interrupt service routine%s is not supported by this configuration%s iteration variable at %L is bound in intervening code%s iteration variable must be of type integer at %L%s iteration variable must not be THREADPRIVATE at %L%s iteration variable present on clause other than PRIVATE, LASTPRIVATE or ALLOCATE at %L%s iteration variable present on clause other than PRIVATE, LASTPRIVATE, ALLOCATE or LINEAR at %L%s iteration variable used in more than one loop at %L%s loop bounds reference different iteration variables at %L%s loop end expression at %L uses variable bound in intervening code%s loop end expression not in canonical form at %L%s loop increment expression at %L uses variable bound in intervening code%s loop increment not in canonical form at %L%s loop start expression at %L uses variable bound in intervening code%s loop start expression not in canonical form at %L%s must contain at least one MAP clause at %L%s namespace %qD conflicts with reachable definition%s not supported for variable length aggregates%s not supported on this target%s operand cannot be used as %%i I/O address operand%s out of range: Range is %i to %i, value is %i%s pid %ld terminated by %s%s procedure at %L is already declared as %s procedure%s procedure at %L is already declared as %s procedure. 
! F2008: A pointer function assignment is ambiguous if it is the first executable statement after the specification block. Please add any other kind of executable statement before it. FIXME%s returned %d exit status%s should not be null%s signal terminated program %s%s specifier in %s statement at %L has invalid value %qs%s specifier in %s statement at %L has value %qs%s statement at %C cannot follow %s statement at %L%s statement at %C cannot terminate a non-block DO loop%s statement at %C follows another accessibility specification%s statement at %C in PURE procedure%s statement at %C is not applicable to construct %qs%s statement at %C is not within a construct%s statement at %C is not within construct %qs%s statement at %C leaves CRITICAL construct%s statement at %C leaves DO CONCURRENT construct%s statement at %C leaving OpenACC structured block%s statement at %C leaving OpenMP structured block%s statement expected at %L%s statement is not allowed inside of BLOCK DATA at %C%s statement is not allowed inside of BLOCK at %C%s statement must appear in a MODULE%s statement not allowed in PURE procedure at %C%s statements at %L and %L have both no list item but only one may%s tag%s tag at %L must be a character string of default kind%s tag at %L must be of type %s%s tag at %L must be scalar%s tag with INQUIRE%s terminated with signal %d [%s]%s%s used with %<%%%c%> %s format%s used within a quoted sequence%s variable %qE is private in outer context%s%#qD%s%#qD (deleted)%s%#qD (ignored)%s%#qD (near match)%s%#qD (reversed)%s%#qD (rewritten)%s%<%D(%T)%> (built-in)%s%<%D(%T, %T)%> (built-in)%s%<%D(%T, %T, %T)%> (built-in)%s%qT (conversion)%s%qs%s is invalid%s%qs%s is not allowed%s%s%s %sversion %s (%s)
  %s	compiled by GNU C version %s, %s%s%s %sversion %s (%s) compiled by CC, %s%s%sIn instantiation of %q#D:
  %s%s%sIn substitution of %qS:
  %s%sGGC heuristics: --param ggc-min-expand=%d --param ggc-min-heapsize=%d
  %s%swarning: %s header version %s differs from library version %s.
! %s(%s) improperly has a non-null %<var_decl_node%>%s-%s is an empty range%s: %<-fcompare-debug%> failure%s: %<-fcompare-debug%> failure (length)%s: %<field->type%> %s must be literal or alphanumeric%s: %d %qs has NULL ancestor%s: %d %s is a table, but it improperly has a capacity of zero%s: %d %s<%s> improperly has a data.capacity of zero%s: %d basic blocks and %d edges/basic block%s: %d basic blocks and %d registers; increase %<--param max-gcse-memory%> above %wu%s: %m%s: %s%s: %s compiler not installed on this system%s: %s is its own ancestor%s: %s: %s%s: Invalid field type %s:%s: Knows not the variable type %s for %s%s: PCH file was invalid%s: What in the name of Nero are we doing here?%s: all warnings being treated as errors%s: asked to sort %s, which is not a table%s: attempt to rename spec %qs to already defined spec %qs%s: called with NULL *field%s: called with NULL *file%s: cannot open as COFF file%s: could not determine length of compare-debug file %s%s: could not open compare-debug file %s%s: couldn%'t open PCH file: %m%s: for %s called with NULL %<field->var_decl_node%>%s: for %s called with NULL %<file->var_decl_node%>%s: intrinsic function %qs not found%s: invalid function descr type '%c'%s: key must be field%s: linker input file not found: %m%s: linker input file unused because linking not done%s: not a COFF file%s: regcomp: %s%s: section %s.%d is missing%s: some warnings being treated as errors%s: syntax error: both (or neither) GIVING and output-proc are specified%s: syntax error: both (or neither) USING and input-proc are specified%s: syntax error: both (or neither) files and output-proc are specified%s:%d file %s 'sequentially' is %d in %s%s:%d file %s 'where' is zero in %s%s:%d file %s access mode is %<file_inaccessible_e%> in %s%s:%d file %s is INDEXED/SEQUENTIAL, but 'sequentially' is false%s:%d file %s is RELATIVE/RANDOM, but %<where < 0%>%s:%d file %s is RELATIVE/SEQUENTIAL, but %<where >= 0%>%s:%d: %u exceeds %<MAXIMUM_UNTILS%> of %d, line %d%s:%d: LblNone '%s' has parent #%zu%s:%d: confused by earlier errors, bailing out
! %s:%d: could not add '%s'%s:%d: ignoring subscripts%s:%d: invalid %<symbol_type_t%> %d%s:%d:%s%s:%d:assertion of condition %qs failed%s:%d:condition %s failed%s:%d:the value %s is not a BOOLEAN as the value is %d%s:%s: %E: %E%s:'%s' has arcs from exit block
  %s:'%s' has arcs to entry block
  %s:'%s' lacks entry and/or exit blocks
  %s:already seen blocks for '%s'
*************** F2008: A pointer function assignment is
*** 2046,2081 ****
     Use of this interface is discouraged, consider using the
     BIND(C) feature of standard Fortran instead.  */
  
! 128-bit %<long double%> not supported for VAX floats128-bit system register support requires the %<d128%> extension31 bit ABI.387 instruction set disabled, using SSE arithmetics64 bit ABI.64-bit ABI not supported in ESA/390 mode; use assignment instead; use assignment or value-initialization instead; use copy-assignment instead; use copy-assignment or copy-initialization instead; use copy-initialization instead; use value-initialization instead<anonymous><brace-enclosed initializer list><built-in><command-line><declaration error><enumerator><erroneous-expression><expression error><lambda<lambda><message unknown at compile time><missing><return value> <return-value><statement><structured bindings><tag-error><template arguments error><template parameter error><throw-expression><type error><type-error><typedef-error><typeprefixerror><ubsan routine call><unknown operator><unknown><unnamed %s><unnamed-fixed:<unnamed-float:<unnamed-unsigned:<unnamed><unparsed><unresolved overloaded function type>A BOZ literal constant at %L cannot appear as an actual argument in a function referenceA BOZ literal constant at %L cannot appear as an actual argument in a subroutine referenceA factor for tuning the upper bound that swing modulo scheduler uses for scheduling a loop.A floating point to integer truncation may be replaced with rounding to save mode switching.A lower bound must precede colon in assumed-size array specification at %LA memory space or traits array may not be specified for predefined allocator %qs at %LA non-default set of initial values has been requested, which violates the ABIA parameter name is required at %CA synonym for -std=c89 (for C) or -std=c++98 (for C++).A threshold on the average loop count considered by the swing modulo scheduler.A type parameter list is required at %CAAPCS does not support %<-mcallee-super-interworking%>AAPCS does not support %<-mcaller-super-interworking%>ABI %qs cannot be implemented due to limited instruction set %qs, falling back to %qsABI %qs is not enabled at configure-time, the linker might report an errorABI changed (%qs to %qs) while multilib is disabledABI for flattened struct with zero-length bit-fields changed in GCC 10ABI requires %<-march=rv%d%>ABI variant code generation (for use with -mabi= option):ABI with startfiles: %sABSTRACT INTERFACE %qs at %L must not have an assumed character length result (F2008: C418)ABSTRACT INTERFACE %qs must not be referenced at %LABSTRACT INTERFACE at %CABSTRACT type %qs used at %LABSTRACT type at %CAC-IMPLIED-DO final expression references control variable at %LAC-IMPLIED-DO initial expression references control variable at %LAC-IMPLIED-DO step expression references control variable at %LACC CACHE directive must be inside of loop %CACCESS specification at %L was already specifiedACLE function %qD can only be called from a function that has %qs stateACLE function %qD can only be called when SME streaming mode is enabledACLE function %qD cannot be called when SME streaming mode is enabledACLE function %qD is incompatible with the use of %qsACLE function %qD requires ISA extension %qsACQUIRED_LOCK variableACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variableACTION type conflicts with READONLY specifier at %LALIGN requires a scalar positive constant integer alignment expression at %L that is a power of twoALLOCATABLE attribute at %C in a STRUCTURE definitionALLOCATABLE attribute at %C in a TYPE definitionALLOCATABLE attribute not permitted for %qs in %s locality-spec at %LALLOCATABLE object %qs in %s clause at %LALLOCATABLE specified outside of INTERFACE body at %LALLOCATE directive at %L inside a target region must specify an ALLOCATOR clauseALLOCATE directive at %L inside a target region must specify an ALLOCATOR clause for %qsALLOCATE objectALLOCATE of coarray at %C in CRITICAL blockALLOCATE of coarray at %C in DO CONCURRENT blockALLOCATED intrinsic at %L requires an array or scalar allocatable entityALLOCATORS directive at %L inside a target region must specify an ALLOCATOR modifier for %qsALTERNATE RETURN not permitted at %LAPCS reentrant code not supported.  IgnoredARMv8-M Security Extensions incompatible with selected FPUASSIGN statement at %CASSIGN statement at %L requires a scalar default INTEGER variableASSIGNED GOTO statement at %L requires a scalar INTEGER variableASSIGNED variable in FORMAT tag at %LASSOCIATE construct at %CASYNCHRONOUS attribute at %CASYNCHRONOUS attribute not permitted for %qs in REDUCE locality-spec at %LASYNCHRONOUS statement at %CASYNCHRONOUS= at %L not allowed in Fortran 95ATOM argument at %L of the %s intrinsic function shall be a coarray or coindexedATOM argument at %L to intrinsic function %s shall be an integer of ATOMIC_INT_KINDATOM argument at %L to intrinsic function %s shall be an integer of ATOMIC_INT_KIND or a logical of ATOMIC_LOGICAL_KINDATOM argument of the %s intrinsic function at %L shall be definableAUX pointer initialized for edge %d->%dAVX vector argument without AVX enabled changes the ABIAVX vector return without AVX enabled changes the ABIAVX512F vector argument without AVX512F enabled changes the ABIAVX512F vector return without AVX512F enabled changes the ABIAbbreviation for "-g -feliminate-unused-debug-symbols".Abbreviation for "-g -fno-eliminate-unused-debug-symbols".Absolute value of SHIFT shall be less than or equal to SIZE at %CAbstract interface %qs is invalid in procedure pointer assignment at %LAccept COBOL constructs used by non-ISO compilersAccept argument mismatches in procedure calls.Accept extensions to support legacy code.Access data in the same section from shared anchor points.Access offset before parent offsetAccess overlaps with its siblingAccess size greater or equal to its parent sizeAccess specification of the %s operator at %C has already been specifiedAccess specification of the .%s. operator at %C has already been specifiedAccess terminates outside of its parentActual CLASS array argument for %qs must be a full array at %LActual argument at %L for INTENT(%s) dummy %qs of ELEMENTAL subroutine %qs is a scalar, but another actual argument is an arrayActual argument at %L of %qs intrinsic shall be an associated pointerActual argument at %L to allocatable or pointer dummy argument %qs must have a deferred length type parameter if and only if the dummy has oneActual argument at %L to assumed-type dummy has type parameters or is of derived type with type-bound or FINAL proceduresActual argument contains too few elements for dummy argument %qs (%lu/%lu) at %LActual argument for %qs at %L is a function result and the dummy argument is ALLOCATABLEActual argument for %qs at %L must be a pointerActual argument for %qs at %L must be a pointer or a valid target for the dummy pointer in a pointer assignment statementActual argument for %qs cannot be an assumed-size array at %LActual argument for %qs must be ALLOCATABLE at %LActual argument of EVENT_TYPE or with EVENT_TYPE component at %L requires an explicit interface for procedure %qsActual argument of LOCK_TYPE or with LOCK_TYPE component at %L requires an explicit interface for procedure %qsActual argument to %qs at %L must be a coarrayActual argument to %qs at %L must be polymorphicActual argument to %qs at %L must be simply contiguous or an element of such an arrayActual argument to %qs at %L must be unlimited polymorphic since the formal argument is a pointer or allocatable unlimited polymorphic entity [F2008: 12.5.2.5]Actual argument to %qs at %L must have the same declared typeActual argument to assumed-rank INTENT(OUT) dummy %qs at %L cannot be of unknown sizeActual argument to contiguous pointer dummy %qs at %L must be simply contiguousActual argument to non-INTENT(INOUT) dummy %qs at %L, which is EVENT_TYPE or has a EVENT_TYPE componentActual argument to non-INTENT(INOUT) dummy %qs at %L, which is LOCK_TYPE or has a LOCK_TYPE componentActual string length does not match the declared one for dummy argument '%s' (%ld/%ld)Actual string length is shorter than the declared one for dummy argument '%s' (%ld/%ld)Add CS prefix to call and jmp to indirect thunk with branch target in r8-r15 registers.Add a common subexpression elimination pass after loop optimizations.Add comments for ignored declarations in the generated C++ header.Add description attributes to some DWARF DIEs that have no name attribute.Add explicit checks for division by zero.Add explicit checks for division overflow in INT_MIN / -1.Add extra annotations to diagrams.Add extra commentary to assembler output.Add extra information to the executable that can speed up dynamic loading (provided that dependent libraries are unchanged).Add output format.Add the .lower prefix to section names when compiling with -m{code,data}-region=lower (disabled by default).Additional debug prints.Additional maximum allowed growth of total size of new parameters that ipa-sra replaces a pointer to an aggregate with, if it points to a local variable that the caller only writes to and passes it as an argument to functions.After diagnosing undefined behavior attempt to continue execution.Aggressively optimize loops using language constraints.Alias and target%'s comdat groups differsAlias and target%'s section differsAlias for -mcpu=g10.Alias for -mcpu=g13.Alias for -mcpu=g14.Alias has call edgesAlias has more than one alias referenceAlias has non-alias referenceAlias:Align all labels.Align all loops to 32 byte boundary.Align code and data to 32 bits.Align destination of the string operations.Align doubles at 64-bit boundaries.Align function entry to 4 byte.Align labels which are only reached by jumping.Align some doubles on dword boundary.Align the start of every function.Align the start of functions.Align the start of loops.Align to the base type of the bit-field.Align to the base type of the bit-field. Don't assume that unaligned accesses are handled by the system.Align variables on a 32-bit boundary.All LEN type parameters of the passed dummy argument %qs of %qs at %L must be ASSUMED.All files that might deallocate such a variable must be compiled with %<-fopenmp-allocators%>All intrinsics procedures are available regardless of selected standard.All the LEN type parameters in the TYPE IS statement at %C must be ASSUMEDAllocatable %qs at %L cannot have an initializerAllocatable array %qs at %L must have a deferred shape or assumed rankAllocatable character dummy argument %qs at %L must have deferred length as procedure %qs is BIND(C)Allocatable coarray variable %qs at %L must have deferred shapeAllocatable component %s at %L must have a codimension as it has a noncoarray subcomponent of type EVENT_TYPEAllocatable component %s at %L must have a codimension as it has a noncoarray subcomponent of type LOCK_TYPEAllocatable component %s at %L of type EVENT_TYPE must have a codimensionAllocatable component %s at %L of type LOCK_TYPE must have a codimensionAllocatable component of structure at %C must have a deferred shapeAllocatable component or deferred-shaped array near %C in DATA statementAllocatable function %qs at %L must have an explicit function interfaceAllocate local variables on the stack to allow indirect recursion.Allocate-object at %C is not a nonprocedure pointer nor an allocatable variableAllocate-object at %L also appears at %LAllocate-object at %L is neither a data pointer nor an allocatable variableAllocate-object at %L is subobject of object at %LAllocate-object at %L must be ALLOCATABLE or a POINTERAllocate-object at %L with a deferred type parameter requires either a type-spec or SOURCE tag or a MOLD tagAllocating %s at %L with type-spec requires the same character-length parameter as in the declarationAllocating %s of ABSTRACT base type at %L requires a type-spec or source-exprAllocator %qs at %L in USES_ALLOCATORS must be a scalar integer of kind %<omp_allocator_handle_kind%>Allocator %qs at %L in USES_ALLOCATORS must either a variable or a predefined allocatorAllow (or do not allow) gcc to use the LOOP instruction.Allow IEC559 floating point exceptions in constant expressions.Allow a BOZ literal constant to appear in an invalid context and with X instead of Z.Allow access to instance variables as if they were local declarations within instance method implementations.Allow arbitrary character line width in fixed mode.Allow arbitrary character line width in free mode.Allow bit-fields to cross word boundaries.Allow branches to be packed with other instructions.Allow built-in functions ceil, floor, round, trunc to raise "inexact" exceptions.Allow dollar signs in entity names.Allow fast jumps to the message dispatcher.Allow function addresses to be held in registers.Allow gcc to generate LIW instructions.Allow gcc to generate the SETLB and Lcc instructions.Allow hardware floating-point instructions to cover both 32-bit and 64-bit operations.Allow implicit conversions between vectors with differing numbers of subparts and/or differing element types.Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker.Allow math optimizations that may violate IEEE or ISO standards.Allow optimization for floating-point arithmetic which may change the result of the operation due to rounding.Allow premature scheduling of queued insns.Allow readonly data in sdata.Allow removal of malloc and free pairs when allocated block is unused.Allow sign extension in fusion operations.Allow speculative motion of more loads.Allow speculative motion of non-loads.Allow speculative motion of some loads.Allow the arguments of the '?' operator to have different types.Allow the compiler to introduce new data races on stores.Allow the store merging pass to introduce unaligned stores if it is legal to do so.Allow the use of MDMX instructions.Allow the use of MT instructions.Allow the use of hardware floating point instructions for V850E2V3 and up.Allow the use of hardware floating-point ABI and instructions.Allow to use truncation instead of rounding towards zero for fractional fixed-point types.Allow two instructions to be issued per cycle.Allow use r15 for inline ASM.Already inside a CONTAINS block at %CAlternate RETURN statement at %C is only allowed within a SUBROUTINEAlternate RETURN statement at %L requires a SCALAR-INTEGER return specifierAlternate calling convention.Alternate return at %L is not permitted in a DTIO procedureAlternate return cannot appear in operator interface at %LAlternate return dummy argument cannot appear in a SUBROUTINE with the BIND(C) attribute at %LAlternate return specifier in elemental subroutine %qs at %L is not allowedAlternate return specifier in function %qs at %L is not allowedAlternate-return argument at %CAlthough not referenced, %qs has ambiguous interfaces at %LAltiVec argument passed to unprototyped functionAltiVec not supported in this targetAlways align function entry, jump target and return address.Always generate long calls.Always inline subword atomic operations.Always save $lp in the stack.Always treat bitfields as int-sized.Always use Dynamic Realigned Argument Pointer (DRAP) to realign stack.Always use JSR, never BSR, for calls.Ambiguous !$OMP DECLARE REDUCTION from module %s at %LAmbiguous interfaces in %s for %qs at %L and %qs at %LAmbiguous symbol in TYPE definition at %CAmend appropriate diagnostic messages with the command line option that controls them.Amount of local data-share (LDS) memory to reserve for gang-private variables.An ALLOCATOR clause is required as the list item %<%s%s%s%> at %L has the SAVE attributeAn alias for minterlink-compressed provided for backward-compatibility.An alternate return at %L without a * dummy argumentAn indirect edge from %s is not marked as indirect or has associated indirect_info, the corresponding statement is: An outer FORALL construct already has an index with this name %LAnalyze and remove doubleword swaps from VSX computations.Analyzed alias has no referenceAnnotate assembler instructions with estimated addresses.Annotate table jump instruction (jr {reg}) to correlate it with the jump table.Append a second underscore if the name already contains an underscore.Append underscores to externally visible names.Apply negative sign to zero values.Apply special rules for compiling runtime package.Apply variable expansion when loops are unrolled.Approximate function insn number in 1K units triggering simple local RA.Approximate the effect of function calls to simplify analysis.Argument %<A%> with INTENT(INOUT) at %L of the intrinsic subroutine %s shall not have a vector subscriptArgument %<S%> of NEAREST at %L shall not be zeroArgument %qs appears twice in call to %qs at %LArgument %qs at %L to declarative !$OMP ALLOCATE directive must be a variableArgument %qs at %L to declarative !$OMP ALLOCATE shall be in the same scope as the variable declarationArgument %qs at %L to list item in %<need_device_addr%> at %L must not have the VALUE attributeArgument %qs at %L to list item in %<need_device_ptr%> at %L must be a scalar of TYPE(C_PTR)Argument %qs of %qs intrinsic at %L must be in type conformance to argument %qs at %LArgument %qs of %qs with PASS(%s) at %L may not be ALLOCATABLEArgument %qs of %qs with PASS(%s) at %L may not have the POINTER attributeArgument %qs of %qs with PASS(%s) at %L must be of the derived type %qsArgument %qs of %qs with PASS(%s) at %L must be of the derived-type %qsArgument %qs of %qs with PASS(%s) at %L must be of the parametric derived-type %qsArgument %qs of %qs with PASS(%s) at %L must be scalarArgument %qs of MOD at %L shall not be zeroArgument %qs of MODULO at %L shall not be zeroArgument %qs of elemental procedure %qs at %L must have its INTENT specified or have the VALUE attributeArgument %qs of elemental procedure at %L cannot have the ALLOCATABLE attributeArgument %qs of elemental procedure at %L cannot have the POINTER attributeArgument %qs of elemental procedure at %L must be scalarArgument %qs of pure function %qs at %L must be INTENT(IN) or VALUEArgument %qs of pure function %qs at %L with VALUE attribute but without INTENT(IN)Argument %qs of pure subroutine %qs at %L must have its INTENT specified or have the VALUE attributeArgument %qs of pure subroutine %qs at %L with VALUE attribute but without INTENTArgument %qs of statement function %qs at %L must be scalarArgument CPTR at %L to C_F_POINTER shall have the type TYPE(C_PTR)Argument CPTR at %L to C_F_PROCPOINTER shall have the type TYPE(C_FUNPTR)Argument C_PTR_1 at %L to C_ASSOCIATED shall have the type TYPE(C_PTR) or TYPE(C_FUNPTR)Argument C_PTR_2 at %L to C_ASSOCIATED shall have the same type as C_PTR_1: %s instead of %sArgument FPTR at %L to C_F_POINTER must be a pointerArgument FPTR at %L to C_F_POINTER shall not be coindexedArgument FPTR at %L to C_F_PROCPOINTER shall be a procedure pointerArgument FPTR at %L to C_F_PROCPOINTER shall not be coindexedArgument NCOPIES of REPEAT intrinsic is negative (its value is %ld)Argument NCOPIES of REPEAT intrinsic is negative at %LArgument NCOPIES of REPEAT intrinsic is too largeArgument NCOPIES of REPEAT intrinsic is too large at %LArgument X at %L to C_FUNLOC shall be a procedure or a procedure pointerArgument X at %L to C_FUNLOC shall not be coindexedArgument X at %L to C_LOC shall be not be a zero-sized stringArgument X at %L to C_LOC shall have either the POINTER or the TARGET attributeArgument X at %L to C_LOC shall not be coindexedArgument at %L to C_LOC shall not be polymorphicArgument dim at %L must be of INTEGER typeArgument dim at %L must be scalarArgument index at %L exceeds number of arguments %dArgument mismatch for the overriding procedure %qs at %L: %sArgument of %s at %L must be of length oneArgument of %s function at %L is negativeArgument of %s function at %L is too large for the collating sequence of kind %dArgument of %s function at %L outside of range [0,127]Argument of ACOS at %L must be between -1 and 1Argument of ACOSD at %L must be between -1 and 1Argument of ACOSH at %L must not be less than 1Argument of ASIN at %L must be between -1 and 1Argument of ASIND at %L must be between -1 and 1Argument of ATANH at %L must be inside the range -1 to 1Argument of FINAL procedure at %L must be of type %qsArgument of FINAL procedure at %L must not be ALLOCATABLEArgument of FINAL procedure at %L must not be INTENT(OUT)Argument of FINAL procedure at %L must not be OPTIONALArgument of FINAL procedure at %L must not be a POINTERArgument of IACHAR at %L must be of length oneArgument of IACHAR function at %L outside of range 0..127Argument of ICHAR at %L must be of length oneArgument of LOG at %L cannot be less than or equal to zeroArgument of LOG10 at %L cannot be less than or equal to zeroArgument of SELECT statement at %L cannot be %sArgument of SELECT statement at %L must be a scalar expressionArgument of SQRT at %L has a negative valueArgument to %<-fcheck%> is not valid: %sArgument to %<-ffpe-summary%> is not valid: %sArgument to %<-ffpe-trap%> is not valid: %sArgument types of %qs intrinsic at %L must match (%s/%s)Arguments of %qs at %L and %L cannot both be BOZ literal constantsArguments of %qs have different kind type parameters at %LArithmetic IF statement at %CArithmetic IF statement at %L requires a scalar REAL or INTEGER expressionArithmetic NaN at %LArithmetic NaN converting %s to %s at %L. This check can be disabled with the option %<-fno-range-check%>Arithmetic OK at %LArithmetic OK converting %s to %s at %LArithmetic overflow at %LArithmetic overflow converting %s to %s at %L. This check can be disabled with the option %<-fno-range-check%>Arithmetic underflow at %LArithmetic underflow converting %s to %s at %L. This check can be disabled with the option %<-fno-range-check%>Array %qs at %L cannot have a deferred shapeArray %qs at %L is a variable, which does not reduce to a constant expressionArray %qs at %L is larger than limit set by %<-fmax-stack-var-size=%>, moved from stack to static storage. This makes the procedure unsafe when called recursively, or concurrently from multiple threads. Consider increasing the %<-fmax-stack-var-size=%> limit (or use %<-frecursive%>, which implies unlimited %<-fmax-stack-var-size%>) - or change the code to use an ALLOCATABLE array. If the variable is never accessed concurrently, this warning can be ignored, and the variable could also be declared with the SAVE attribute.Array %qs at %L with non-constant bounds cannot be an EQUIVALENCE objectArray %qs is not permitted in reduction at %LArray bound mismatch for dimension 1 of array (%ld/%ld)Array bound mismatch for dimension 2 of array (%ld/%ld)Array component of structure at %C must have an explicit shapeArray component of structure at %C must have explicit or deferred shapeArray constructor including type specification at %CArray constructor value %qs at %L is of the ABSTRACT type %qsArray constructor value at %L shall not be unlimited polymorphic [F2008: C4106]Array entity required at %LArray in initializer list at %L must have an explicit shapeArray index at %L is an array of rank %dArray index at %L must be of INTEGER type, found %sArray index at %L must be scalarArray is not contiguous at %LArray of interoperable type at %L to C_LOC which is nonallocatable and neither assumed size nor explicit sizeArray operands are incommensurate at %LArray operands are incommensurate converting %s to %s at %LArray pointer %qs at %L must have a deferred shape or assumed rankArray reference at %C cannot have more than %d dimensionsArray reference at %C has more than 7 dimensionsArray reference at %L is out of bounds (%ld < %ld) in codimension %dArray reference at %L is out of bounds (%ld < %ld) in dimension %dArray reference at %L is out of bounds (%ld > %ld) in codimension %dArray reference at %L is out of bounds (%ld > %ld) in dimension %dArray reference at %L out of bounds (%ld < %ld) in loop beginning at %LArray reference at %L out of bounds (%ld > %ld) in loop beginning at %LArray reference in EQUIVALENCE at %C cannot be an array sectionArray reference out of boundsArray section at %L to C_LOCArray section designator, e.g. %<(:)%>, is required besides the coarray designator %<[...]%> at %CArray section with a vector subscript at %L shall not be the target of a pointerArray sections: %qs not allowed in !$ACC DECLARE at %LArray specification at %C has more than %d dimensionsArray specification at %C with more than 7 dimensionsArray specification for symbol %qs in COMMON at %C must be explicitArray specification must be deferred at %LArray specification or array-valued SOURCE= expression required in ALLOCATE statement at %LArray specification required in ALLOCATE statement at %LArray-section actual argument at %L is incompatible with the non-assumed-shape dummy argument %qs due to VOLATILE attributeArray-section actual argument with vector subscripts at %L is incompatible with INTENT(OUT), INTENT(INOUT), VOLATILE or ASYNCHRONOUS attribute of the dummy argument %qsAs extending type %qs at %L has a coarray component, parent type %qs shall also have oneAssembler options
  =================
  
! Assigned GOTO statement at %CAssigned label is not a target labelAssigning value other than 0 or 1 to LOGICAL has undefined result at %LAssignment of scalar to unallocated arrayAssignment operator interface at %L must be a SUBROUTINEAssignment operator interface at %L must have two argumentsAssignment operator interface at %L must not redefine an INTRINSIC type assignmentAssignment to a FORALL index variable at %LAssignment to a LEN or KIND part_ref at %L is not allowedAssignment to a constant expression at %CAssignment to an allocatable polymorphic variable at %LAssignment to an allocatable polymorphic variable at %L requires %<-frealloc-lhs%>Assignment to coindexed variable at %L in a PURE procedureAssignment to contiguous pointer from non-contiguous target at %LAssignment to polymorphic coarray at %L is not permittedAssociate name %qs in %s clause at %LAssociate name %qs in SHARED clause at %LAssociate-name %qs at %L is used as arrayAssociate-name %qs cannot appear in a variable definition context (%s) at %L because its target at %L cannot, eitherAssociating entity %qs at %L is a procedure nameAssociating entity %qs at %L is a procedure pointerAssociating selector-expression at %L yields a procedureAssociation target at %C must not be coindexedAssociation target at %L cannot be a BOZ literal constantAssume C++ replaceable global operators new, new[], delete, delete[] don't read or write visible global state.Assume ES is zero throughout program execution, use ES: for read-only data.Assume ICPLBs are enabled at runtime.Assume a large TLS segment.Assume all symbols have 32-bit values.Assume all variable arg functions are prototyped.Assume assembler support for (DWARF2+) .loc directives.Assume assembler support for view in (DWARF2+) .loc directives.Assume code will be assembled by GAS.Assume code will be linked by GNU ld.Assume code will be linked by HP ld.Assume common declarations may be overridden with ones with a larger trailing array.Assume data segments are relative to text segment.Assume external symbols, whose natural alignment would be 1, to be potentially unaligned.  By default all symbols without explicit alignment are assumed to reside on a 2 byte boundary as mandated by the IBM Z ABI.Assume floating-point operations can trap.Assume incoming stack aligned to this power of 2.Assume labels and symbols can be addressed using 16 bit absolute addresses.Assume loading data from flash is slower than fetching instructions.Assume memory references are ordered and barriers are not needed.Assume no NaNs or infinities are generated.Assume normal C execution environment.Assume pointer overflow wraps around.Assume possible double misalignment.Assume round to nearest is selected for purposes of scheduling.Assume signed arithmetic overflow wraps around.Assume small address space.Assume strict aliasing rules apply across (uninlined) function boundaries.Assume strict aliasing rules apply.Assume target CPU is configured as big endian.Assume target CPU is configured as little endian.Assume that all data in static storage can be accessed by LDS / STS instructions.  This option is only useful for reduced Tiny devices like ATtiny40.Assume that floating-point stores and loads are not likely to cause conflict when placed into one instruction group.Assume that loops with an exit will terminate and not loop indefinitely.Assume that receivers of Objective-C messages may be nil.Assume that run-time support has been provided, so omit -lsim from the linker command line.Assume that standard D runtime libraries and "D main" exist.Assume that the reciprocal estimate instructions provide more accuracy.Assume that the source file is fixed form.Assume that the source file is free form.Assume that values of enumeration type are always within the minimum range of that type.Assume that zero displacement conditional branches are fast.Assume the VxWorks RTP environment.Assume the VxWorks vThreads environment.Assume unified syntax for inline assembly code.Assumed or deferred character length variable %qs in constant expression at %LAssumed rank argument to the RESHAPE intrinsic at %L must be contiguousAssumed rank array %qs in %s clause at %LAssumed shape array %qs at %L is not permitted in an initialization expressionAssumed shape array at %L must be a dummy argumentAssumed size array %qs at %L is not permitted in an initialization expressionAssumed size array %qs in %s clause at %LAssumed size array %qs in COPYPRIVATE clause at %LAssumed size array %qs in namelist %qs at %C is not allowedAssumed size array %qs in namelist %qs at %L is not allowedAssumed size array at %L must be a dummy argumentAssumed type at %CAssumed type at %C is not allowed for componentsAssumed type of variable %s at %L is only permitted for dummy variablesAssumed-length character dummy argument %qs at %L of procedure %qs with BIND(C) attributeAssumed-rank argument at %L is only permitted as actual argument to intrinsic inquiry functions or to RESHAPE. The latter is an experimental F202y feature. Use -std=f202y to enableAssumed-rank argument at %L is only permitted as first actual argument to the intrinsic inquiry function %sAssumed-rank argument requires an explicit interface at %LAssumed-rank array %qs at %L is not permitted in an initialization expressionAssumed-rank array at %CAssumed-rank array at %L may not have the VALUE or CODIMENSION attributeAssumed-rank array at %L must be a dummy argumentAssumed-rank variable %s at %L as actual argument to an inquiry function shall be the first argumentAssumed-rank variable %s at %L may only be used as actual argumentAssumed-rank variable %s at %L shall not have a subobject referenceAssumed-shape actual argument at %L is incompatible with the non-assumed-shape dummy argument %qs due to VOLATILE attributeAssumed-shape array %qs at %L as dummy argument to the BIND(C) procedure %qs at %LAssumed-shape array %qs at %L is not permitted in an initialization expressionAssumed-size array not permitted for %qs in %s locality-spec at %LAssumed-size arrays are not interoperableAssumed-size dummy array with !$ACC DECLARE at %LAssumed-type actual argument at %L corresponding to assumed-rank dummy argument %qs must be assumed-shape or assumed-rankAssumed-type actual argument at %L requires that dummy argument %qs is of assumed typeAssumed-type argument %s at %L requires an explicit interfaceAssumed-type argument at %L is not permitted as actual argument to the intrinsic %sAssumed-type argument at %L is only permitted as first actual argument to the intrinsic %sAssumed-type variable %s at %L as actual argument to an inquiry function shall be the first argumentAssumed-type variable %s at %L may not have the ALLOCATABLE, CODIMENSION, POINTER or VALUE attributeAssumed-type variable %s at %L may not have the INTENT(OUT) attributeAssumed-type variable %s at %L may only be used as actual argumentAssumed-type variable %s at %L shall not be an explicit-shape arrayAssumed-type variable %s at %L shall not have a subobject referenceAt global scope:At most %i profile runs is supported. Perhaps corrupted profile?At top level:Attempt to DEALLOCATE unallocated '%s'Attempt to fill delay slots of branch instructions.Attempt to indirectly overlap COMMON blocks %s and %s by EQUIVALENCE at %CAttempt to keep stack aligned to this power of 2.Attempt to merge identical constants across compilation units.Attempt to merge identical constants and constant variables.Attempt to merge identical debug strings across compilation units.Attempting to allocate already allocated variableAttempting to allocate already allocated variable '%s'Attribute %s at %L in a TYPE definitionAttribute at %L is not allowed in a STRUCTURE definitionAttribute at %L is not allowed in a TYPE definitionAttribute at %L is not allowed outside a TYPE definitionAugment variable location lists with progressive views.AutoFDO profile magic number does not matchAutoFDO profile version %u does not match %uAutomatic array %qs at %L cannot have an initializerAutomatic object %qs at %L cannot appear in COMMON at %LAutomatic object %qs at %L cannot have the SAVE attributeAutomatically adds space for longer path names in load commands (up to MAXPATHLEN).Automatically align branch targets to reduce branch penalties.Available BITS selections:Average number of iterations of a loop.Avoid all range limits on call instructions.Avoid combining multiple statements into one exploded edge.Avoid generating pc-relative calls; use indirection.Avoid generation of indexed load/store instructions when possible.Avoid overlapping destination and address registers on LDRD instructions that may trigger Cortex-M3 errata.Avoid placing any readable data in program memory.Avoid speculative loads to work around a hardware anomaly.Avoid use of the DIV and MOD instructions.Avoid using the GOT to access external symbols.BB %i cannot throw but has an EH edgeBB %i has incorrect edgeBB %i has incorrect fallthru edgeBB %i has multiple EH edgesBB %i is missing an EH edgeBB %i is missing an edgeBB %i last statement has incorrectly set lpBB %i too many fallthru edgesBB_RTL flag not set for block %dBIND(C) Variable %qs at %L must have length oneBIND(C) applied to %s %s at %LBIND(C) at %LBIND(C) attribute at %C requires an interface with BIND(C)BIND(C) attribute at %L can only be used for variables or common blocksBIND(C) attribute at %L may not be specified for an internal procedureBIND(C) procedure with NAME may not have POINTER attribute at %CBIND(C) statement at %CBLANK= at %L not allowed in Fortran 95BLOCK DATA construct at %LBLOCK DATA element %qs at %L must be in COMMONBLOCK construct at %CBOZ at %L cannot appear in an old-style initializationBOZ constant at %C uses nonstandard postfix syntaxBOZ constant at %L cannot appear in the COMPLEX intrinsic subprogramBOZ constant truncated at %LBOZ literal constantBOZ literal constant at %L cannot appear as an initializerBOZ literal constant at %L cannot appear in ACHAR intrinsic subprogramBOZ literal constant at %L cannot appear in CHAR intrinsic subprogramBOZ literal constant at %L cannot appear in a structure constructorBOZ literal constant at %L cannot appear in an array constructorBOZ literal constant at %L cannot appear in an output IO listBOZ literal constant at %L cannot appear in the FLOAT intrinsic subprogramBOZ literal constant at %L cannot be an actual argument to %qsBOZ literal constant at %L cannot be an operand of unary operator %qsBOZ literal constant at %L is neither a DATA statement value nor an actual argument of INT/REAL/DBLE/CMPLX intrinsic subprogramBOZ literal constant near %L cannot appear as an operand of a relational operatorBOZ literal constant near %L cannot be assigned to a %qs variableBOZ literal constant near %L cannot be assigned to a %qs variable in an old-style initializationBOZ used outside a DATA statement at %LBPF CO-RE does not support LTOBPF CO-RE requires BTF debugging information, use %<-gbtf%>BYTE type at %CBYTE type used at %C is not available on the target machineBad 128-bit moveBad GPR fusionBad INTENT specification at %CBad IO basetype (%d)Bad allocate-object at %C for a PURE procedureBad array dimension at %LBad array reference at %LBad array spec of component %qs referenced in structure constructor at %LBad array specification for an explicitly shaped array at %CBad array specification for assumed shape array at %CBad array specification for implied-shape array at %CBad array specification in ALLOCATE statement at %LBad bounds remapping list at %CBad character %qc in OPERATOR name at %CBad coarray specification in ALLOCATE statement at %LBad continuation line at %CBad kind expression for function %qs at %LBad kind for logical constant at %CBad nameBad operatorBad shape of initializer at %LBad specification for assumed size array at %CBad specification for assumed size array at %LBad specification for deferred shape array at %CBad target in pointer assignment in PURE procedure at %LBad type in constant expressionBad type in gfc_simplify_signBase ABI types for LoongArch:Base object for NOPASS type-bound procedure call at %L must be scalarBase object for procedure-pointer component call at %L is of ABSTRACT type %qsBase object for type-bound procedure call at %L is of ABSTRACT type %qsBasic ISAs of LoongArch:Binding at %C must have the same access as already defined binding %qsBinding attributes already specify passing, illegal NOPASS at %CBinding attributes already specify passing, illegal PASS at %CBlank BLOCK DATA at %C conflicts with prior BLOCK DATA at %LBlank required in %s statement near %CBlanket SAVE statement at %C follows previous SAVE statementBlock label is not appropriate for IF statement at %CBlock label not appropriate for arithmetic IF statement at %CBoard name [and memory region].Both MONOTONIC and NONMONOTONIC schedule modifiers specified at %LBoth section and comdat group is setBound on number of candidates below that all candidates are considered in iv optimizations.Bound on number of iv uses in loop optimized in iv optimizations.Bound on number of runtime checks inserted by the vectorizer's loop versioning for alias check.Bound on number of runtime checks inserted by the vectorizer's loop versioning for alignment check.Bound on size of expressions used in the scalar evolutions analyzer.Bound on the complexity of the expressions in the scalar evolutions analyzer.Bound on the cost of an expression to compute the number of iterations.Bound on the number of iterations the brute force # of iterations analysis algorithm evaluates.Bounds specification for %qs in pointer assignment at %LBranch at %L may result in an infinite loopBranches are this expensive (arbitrary units).Branches executed:%s of %d
! Build for Core A.Build for Core B.Build for SDRAM.Building block for specs-based multilib-aware TFLAGS.Builtin %qF requires z14 or higherBuiltin %qF requires z15 or higherBuiltin %qF requires z17 or higherBuiltin not implementedBy-value argument at %L cannot be an array or an array sectionBy-value argument at %L is not allowed in this contextBy-value argument at %L is not of numeric typeC interoperable character dummy variable %qs at %L with VALUE attribute must have length oneC kind type parameter is for type %s but type at %L is %sC++ constructors and destructors will not be invoked for Objective-C fieldsC++ designated initializers only available with %<-std=c++20%> or %<-std=gnu++20%>C++ lookup of %qD would return a field, not a typeC++ modules are incompatible with precompiled headersC++ modules are incompatible with traditional preprocessingC++ requires promoted type, not enum type, in %<va_arg%>C++11 %<constexpr%> only available with %<-std=c++11%> or %<-std=gnu++11%>C++11 %<noexcept%> only available with %<-std=c++11%> or %<-std=gnu++11%>C++11 %<thread_local%> allows dynamic initialization and destructionC++11 %<thread_local%> only available with %<-std=c++11%> or %<-std=gnu++11%>C++11 attributes only available with %<-std=c++11%> or %<-std=gnu++11%>C++11 auto only available with %<-std=c++11%> or %<-std=gnu++11%>C++20 %<constinit%> only available with %<-std=c++20%> or %<-std=gnu++20%>C++20 %qE only available with %<-fmodules%>C++20 %qE only available with %<-fmodules%>, which is not yet enabled with %<-std=c++20%>C++20 concept definition syntax is %<concept <name> = <expr>%>C++20 says that these are ambiguous, even though the second is reversed:C99 designator %qE is not an integral constant-expressionC99 designator %qE outside aggregate initializerCALL USING BY CONTENT <temporary> would require REPOSITORY PROTOTYPES.CASE label at %L overlaps with CASE label at %LCCTL intrinsic function subtype out of rangeCFString literal expression is not a string constantCFString literal is missingCHANGE TEAM statement at %CCHARACTER expression at %L is being truncated (%ld/%ld)CHARACTER expression will be truncated in assignment (%wd/%wd) at %LCHARACTER expression will be truncated in constructor (%td/%td) at %LCHARACTER length in !$OMP DECLARE REDUCTION %s not constant at %LCHARACTER length must be a constant at %LCHARACTER(*) function %qs at %LCHARACTER(*) function %qs at %L cannot be array-valuedCHARACTER(*) function %qs at %L cannot be pointer-valuedCHARACTER(*) function %qs at %L cannot be pureCHARACTER(*) function %qs at %L cannot be recursiveCLASS entity at %C cannot have the PARAMETER attributeCLASS selector at %L needs a temporary which is not yet implementedCLASS statement at %CCLASS variable %qs at %L cannot have the PARAMETER attributeCLASS variable %qs at %L must be dummy, allocatable or pointerCLOSE statement at %L requires a UNIT numberCLOSE statement not allowed in PURE procedure at %CCOBOL requires a 64-bit configurationCODIMENSION specified for %qs outside its INTERFACE body at %LCOLLAPSE clause argument not constant positive integer at %CCOLLECT_GCC must be set.COMMON %qs at %L does not existCOMMON %qs at %L requires %d bytes of padding; reorder elements or use %<-fno-align-commons%>COMMON at %L mentioned multiple times in clauses of the same OMP DECLARE TARGET directiveCOMMON at %L requires %d bytes of padding; reorder elements or use %<-fno-align-commons%>COMMON at %L set in previous OMP DECLARE TARGET directive to a different DEVICE_TYPECOMMON block %</%s/%> not found at %LCOMMON block %qs at %L cannot have the EXTERNAL attributeCOMMON block %qs at %L is also an intrinsic procedureCOMMON block %qs at %L is used as PARAMETER at %LCOMMON block %qs at %L that is also a function resultCOMMON block %qs at %L that is also a global procedureCOMMON block %qs at %L uses the same global identifier as entity at %LCOMMON block /%s/ not found at %CCOMMON block at %LCOMMON block at %L with binding label %qs uses the same global identifier as entity at %LCOMMON block member %qs at %L cannot be an EQUIVALENCE object in the pure procedure %qsCOMMON variable %qs at %L must have constant character lengthCOMPLEX argument %qs of %qs intrinsic at %LCOMPLEX quantities cannot be compared at %LCONTAINS block in derived type definition at %CCONTAINS statement at %C is already in a contained program unitCONTAINS statement without FUNCTION or SUBROUTINE statement at %LCONTIGUOUS attribute at %CCONTIGUOUS statement at %CCONVERT tag at %LCOUNT argument of the EVENT_QUERY intrinsic function at %L shall be definableCOUNT argument of the EVENT_QUERY intrinsic function at %L shall have at least the range of the default integerCOUNT argument to SYSTEM_CLOCK at %L has non-default kindCOUNT argument to SYSTEM_CLOCK at %L with kind smaller than default integerCOUNT_MAX argument to SYSTEM_CLOCK at %L has non-default kindCOUNT_MAX argument to SYSTEM_CLOCK at %L with kind smaller than default integerCOUNT_RATE argument to SYSTEM_CLOCK at %L has non-default kindCOUNT_RATE argument to SYSTEM_CLOCK at %L with kind smaller than default integerCPU you selected does not support x86-64 instruction setCRIS-port assertion failed: %sCRITICAL block inside of OpenACC region at %CCRITICAL block inside of OpenMP region at %CCRITICAL statement at %CCTF debug info requested, but not supported for %qs frontendCYCLE statement at %C is not applicable to non-loop construct %qsCYCLE statement at %C to non-innermost collapsed !$ACC LOOP loopCYCLE statement at %C to non-innermost collapsed !$OMP DO loopCYCLE statement at %C to non-innermost tiled !$ACC LOOP loopCall main and exit (default).Call mcount for profiling before a function prologue.Call the dump function for variables and function in IL.Caller copies function arguments passed by hidden reference.Calls executed:%s of %d
! Cannot IMPORT %qs from host scoping unit at %C - does not exist.Cannot USE a module that is currently builtCannot USE a submodule that is currently builtCannot assign %s to %s at %LCannot change attributes of USE-associated symbol %s at %LCannot change attributes of USE-associated symbol at %LCannot change directory to %sCannot compute the length of the char array at %L.Cannot construct ABSTRACT type %qs at %LCannot convert %qs to %qs at %LCannot convert %qs to interoperable type at %LCannot convert %s to %s at %LCannot delete module file %qs: %sCannot delete temporary module file %qs: %sCannot determine shape of initializer at %LCannot find an intrinsic module named %qs at %CCannot find function declaration for %qsCannot find keyword named %qs in call to %qs at %LCannot find suitable multilib set for %<-march=%s%>/%<-mabi=%s%>Cannot find symbol %qsCannot get current directory nameCannot initialize implied-shape array at %L with scalarCannot initialize parameter array at %L with variable length elementsCannot make directory %sCannot map %sCannot open %sCannot open JSON output file %s
  Cannot open file %qsCannot open included file %qsCannot open module file %qs for reading at %C: %sCannot open module file %qs for writing at %C: %sCannot open omp_requires file %qsCannot open pre-included file %qsCannot open source file %s
  Cannot overwrite GENERIC %qs at %LCannot read %sCannot read module file %qs opened at %C, because it was created by a different version of GNU FortranCannot rename module file %qs to %qs: %sCannot set Cray pointee array spec.Cannot set pointee array spec.Cannot simplify expression at %LCannot specify IMPLICIT at %C after IMPLICIT NONECatch typos.Cause gas to print tomcat statistics.Cgraph edge statement index not foundCgraph edge statement index out of rangeChained transparent aliasesChange of value in conversion from %qs to %qs at %LChange only the low 8 bits of the stack pointer.Change the ABI to allow double word insns.Change the amount of scheduler lookahead.Change the maximum length of conditionally-executed sequences.Change the number of temporary registers that are available to conditionally-executed sequences.Change the stack pointer without disabling interrupts.Changes visibility to match Microsoft Visual Studio by default.Character %qs in string at %C is not representable in character kind %dCharacter %qs in string at %L cannot be converted into character kind %dCharacter component %qs of %qs at %L with deferred length must be a POINTER or ALLOCATABLECharacter dummy argument %qs at %L must be of constant length of one or assumed length, unless it has assumed shape or assumed rank, as procedure %qs has the BIND(C) attributeCharacter dummy argument %qs at %L must be of length 1 as it has the VALUE attributeCharacter dummy variable %qs at %L with VALUE attribute must have constant lengthCharacter length expression of component %qs at %L must be of INTEGER type, found %sCharacter length mismatch (%ld/%ld) between actual argument and assumed-shape dummy argument %qs at %LCharacter length mismatch (%ld/%ld) between actual argument and pointer or allocatable dummy argument %qs at %LCharacter length of actual argument shorter than of dummy argument %qs (%lu/%lu) at %LCharacter length of component %qs needs to be a constant specification expression at %LCharacter literal at %L must start with %<ompx_%>Character-valued argument %qs of statement function at %L must have constant lengthCharacter-valued internal function %qs at %L must not be assumed lengthCharacter-valued module procedure %qs at %L must not be assumed lengthCharacter-valued statement function %qs at %L must have constant lengthCheck CFR execution paths also before calls followed by returns of their results.Check CFR execution paths also when exiting a function through an exception.Check for stack overflow at runtime.Check for syntax errors, then stop.Check the return value of new in C++.Chose strategy to generate stringop using.Chunk size of omp schedule for loops parallelized by parloops.Clause expected at %CClause expected at %C after trailing commaClear all tune features.Clear call-used registers upon function return.Clear hardware capabilities when linking.Clear the BSS to zero and place zero initialized in BSS.Coarray component %qs at %L must be allocatable with deferred shapeCoarray declaration at %CCoarray designator at %C but %qs is not a coarrayCoarray dummy argument %qs at %L to elemental procedureCoarray dummy variable %qs at %L not allowed in BIND(C) procedure %qsCoarray not permitted for %qs in %s locality-spec at %LCoarray specification required in ALLOCATE statement at %LCoarray variable %qs at %L shall not have codimensions with deferred shape without allocatableCoarrays are not interoperableCoarrays disabled at %C, use %<-fcoarray=%> to enableCoarrays disabled at %L, use %<-fcoarray=%> to enableCode for reallocating the allocatable array at %L will be addedCode for reallocating the allocatable variable at %L will be addedCode size: small, medium or large.Coindex of codimension %d must be a scalar at %LCoindex rank mismatch in array reference at %L (%d/%d)Coindexed ASYNCHRONOUS or VOLATILE actual argument at %L requires that dummy %qs has neither ASYNCHRONOUS nor VOLATILECoindexed actual argument at %L in PURE procedure is passed to a POINTER dummy argumentCoindexed actual argument at %L in PURE procedure is passed to an INTENT(%s) argumentCoindexed actual argument at %L to allocatable dummy %qs requires INTENT(IN)Coindexed actual argument at %L to pointer dummy %qsCoindexed actual argument at %L with allocatable ultimate component to dummy %qs requires either VALUE or INTENT(IN)Coindexed actual argument at %L with ultimate pointer componentCoindexed allocatable object at %LCoindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedureCoindexed expression to pointer component %qs in structure constructor at %LCoindexed object with polymorphic allocatable subcomponent at %LCoindexed polymorphic actual argument at %L is passed polymorphic dummy argument %qsCoindexed procedure-pointer component at %CCoindexed variable must not have an allocatable ultimate component in assignment at %LCollect and dump debug information into temporary file if ICE in C/C++ compiler occurred.Comma after * at %C not allowed without I/O listComma before i/o item list at %LComma expected at %CComma required after P descriptor in format string at %LCompile code for big endian mode.Compile code for little endian mode.  This is the default.Compile code that relies on Cygwin DLL wrappers to support C++ operator new/delete replacement.Compile for 32-bit pointers.Compile for 64-bit pointers.Compile for ETRAX 100 (CRIS v8).Compile for ETRAX 4 (CRIS v3).Compile for V8+ ABI.Compile for devices requiring XNACK enabled. Default "any" if USM is supported.Compile for devices with the SRAM ECC feature enabled, or not. Default "any".Compile for the DSBT shared library ABI.Compile for the m32r.Compile for the m32r2.Compile for the m32rx.Compile for the v850 processor.Compile for the v850e processor.Compile for the v850e1 processor.Compile for the v850e2 processor.Compile for the v850e2v3 processor.Compile for the v850e3v5 processor.Compile for the v850es variant of the v850e1.Compile in debug code.Compile in unittest code.Compile release version.Compile whole compilation unit at a time.Compile-time bonus IPA-CP assigns to candidates which make loop bounds or strides known.Complain about a name being declared as a class member after a previous use of the same name.Complain when a command-line option is valid, but not applicable to the current front end.Complex argument of LOG at %L cannot be zeroComplex multiplication and division follow Fortran rules.Component %qs at %C already declared at %LComponent %qs at %C already in the parent type at %LComponent %qs at %C is a PRIVATE component of %qsComponent %qs at %L cannot have the ALLOCATABLE attribute because it is a member of the BIND(C) derived type %qs at %LComponent %qs at %L cannot have the POINTER attribute because it is a member of the BIND(C) derived type %qs at %LComponent %qs at %L has the CONTIGUOUS attribute but is not an array pointerComponent %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarrayComponent %qs at %L with coarray component shall be a nonpointer, nonallocatable scalarComponent %qs in derived type %qs at %L may not be C interoperableComponent %qs in derived type %qs at %L may not be C interoperable, even though derived type %qs is BIND(C)Component %qs is initialized twice in the structure constructor at %LComponent %qs of %qs at %L has the same name as an inherited type-bound procedureComponent %qs of BIND(C) type at %L must have length oneComponent %qs with CLASS at %C must be allocatable or pointerComponent %s at %L of type EVENT_TYPE must have a codimension or be a subcomponent of a coarray, which is not possible as the component has the pointer attributeComponent %s at %L of type LOCK_TYPE must have a codimension or be a subcomponent of a coarray, which is not possible as the component has the pointer attributeComponent %s of SEQUENCE type declared at %L does not have the SEQUENCE attributeComponent at %C must have the POINTER attributeComponent initializer without name after component named %s at %LComponent to the right of a part reference with nonzero rank must not have the ALLOCATABLE attribute at %LComponent to the right of a part reference with nonzero rank must not have the POINTER attribute at %LComponent with KIND attribute at %C must be INTEGERComponent with LEN attribute at %C must be INTEGERComponents in TYPE at %C must precede CONTAINSCompute locview reset points based on insn length estimates.Computed GOTO at %CConcat operator at %L must concatenate strings of the same kindConcatenation operator in expression at %L must have two CHARACTER operandsCondition outcomes covered:%s of %d
  Conditional moves for float are enabled.Conditional moves for integral are enabled.Configure the newlib board specific runtime.  The default is or1ksim.Configured with: %s
  Conflicting initializers in union at %L and %LConform more closely to IBM XLC semantics.Conform to nothing in particular.Conform to the ISO 1990 C standard as amended in 1994.Conform to the ISO 1990 C standard with GNU extensions.Conform to the ISO 1990 C standard.Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum with GNU extensions.Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum.Conform to the ISO 1999 C standard with GNU extensions.Conform to the ISO 1999 C standard.Conform to the ISO 2011 C standard with GNU extensions.Conform to the ISO 2011 C standard.Conform to the ISO 2011 C++ standard with GNU extensions.Conform to the ISO 2011 C++ standard.Conform to the ISO 2014 C++ standard with GNU extensions.Conform to the ISO 2014 C++ standard.Conform to the ISO 2017 C standard (published in 2018) with GNU extensions.Conform to the ISO 2017 C standard (published in 2018).Conform to the ISO 2017 C++ standard with GNU extensions.Conform to the ISO 2017 C++ standard.Conform to the ISO 2020 C++ standard (experimental and incomplete support).Conform to the ISO 2020 C++ standard with GNU extensions (experimental and incomplete support).Conform to the ISO 2023 C standard (published in 2024) with GNU extensions.Conform to the ISO 2023 C standard (published in 2024).Conform to the ISO 2023 C++ standard (published in 2024; experimental and incomplete support).Conform to the ISO 2023 C++ standard with GNU extensions (published in 2024; experimental and incomplete support).Conform to the ISO 2026 C++ draft standard (experimental and incomplete support).Conform to the ISO 2026 C++ draft standard with GNU extensions (experimental and incomplete support).Conform to the ISO 202Y C standard draft (experimental and incomplete support).Conform to the ISO 202Y C standard draft with GNU extensions (experimental and incomplete support).Conform to the ISO Fortran 2003 standard.Conform to the ISO Fortran 2008 standard including TS 29113.Conform to the ISO Fortran 2008 standard.Conform to the ISO Fortran 2018 standard.Conform to the ISO Fortran 2023 standard.Conform to the ISO Fortran 95 standard.Conform to the Objective-C 1.0 language as implemented in GCC 4.0.Conform to the o32 FPXX ABI.Consider access to byte sized memory slow.Consider type 'int' to be 16 bits wide.Consider type 'int' to be 32 bits wide.Consider using %<need_device_addr%> insteadConstant character expression required in MESSAGE clause at %LConstant expression in FORMAT tag at %L must be of type default CHARACTERConstant expression required at %CConstant logical value in CASE statement is repeated at %LConstant memcpy size in bytes above which to start using MOPS sequence.Constant memmove size in bytes above which to start using MOPS sequence.Constant memset size in bytes from which to start using MOPS sequence.Constant-type argument expectedConstruct webs and split unrelated uses of single variable.Contained function %qs at %L has no IMPLICIT typeContained procedure %qs at %C clashes with procedure defined at %LContained procedure %qs at %C is already ambiguousContained procedure %qs at %L has the same name as its encompassing procedureContained procedure %qs at %L of a PURE procedure must also be PUREControl generation of reciprocal estimates.Control ira to consider matching constraint (duplicated operand number) heavily in all available alternatives for preferred register class.  If it is set as zero, it means ira only respects the matching constraint when it's in the only available alternative with an appropriate register class.  Otherwise, it means ira will check all available alternatives for preferred register class even if it has found some choice with an appropriate register class and respect the found qualified matching constraint.Control the IEEE trap mode.Control the generated fp rounding mode.Control the precision given to fp exceptions.Control which events are displayed in diagnostic paths.Controls how loop vectorizer uses partial vectors.  0 means never, 1 means only for loops whose need to iterate can be removed, 2 means for all loops.  The default value is 2.Conversion from %qs to %qs at %LConversion from %s to %s at %LConversion from %s to default-kind COMPLEX(%d) at %L might lose precision, consider using the KIND argumentConversion of an Infinity or Not-a-Number at %L to INTEGERConvert BASE + LARGE_OFFSET addresses to NEW_BASE + SMALL_OFFSET to allow more memory accesses to be generated as compressed instructions.  Currently targets 32-bit integer load/stores.Convert conditional jumps in innermost loops to branchless equivalents.Convert floating point constants to single precision constants.Convert function return to call and return thunk.Convert indirect call and jump to call and return thunks.Copy array sections into a contiguous block on procedure entry.Copyright %s 2025 Free Software Foundation, Inc.
  Corank mismatch in argument %qs at %L (%d and %d)Cost at which GCSE optimizations will not constraint the distance an expression can travel.Cost to assume for a branch insn.Cost to assume for a multiply insn.Cost to assume for a multiply instruction, with 4 being equal to a normal insn.Could not generate addis value for fusionCould not open output file '%s'
  Count speculative dependencies while calculating priority of instructions.Cray Pointee at %C cannot be assumed shape arrayCray Pointee at %L appears in multiple pointer() statementsCray pointee %qs in %s clause at %LCray pointee %qs in SHARED clause at %LCray pointee object %qs in %s clause at %LCray pointee object %qs of derived type in %s clause at %LCray pointee object %qs of polymorphic type in %s clause at %LCray pointer %qs in %s clause at %LCray pointer at %C has %d bytes of precision; memory addresses require %d bytesCray pointer at %C must be an integerCray pointer declaration at %C requires %<-fcray-pointer%> flagCray pointer object %qs in %s clause at %LCray pointer object %qs of derived type in %s clause at %LCray pointer object %qs of polymorphic type in %s clause at %LCreate GUI application.Create a dynamically linked position independent executable.Create a shared library.Create a static position independent executable.Create canonical induction variables in loops.Create console application.Create data files needed by "gcov".Creating '%s'
! Creating array temporary at %LCreating array temporary at %L for argument %qsCurrent RISC-V GCC does not support RVV in big-endian modeCurrent RISC-V GCC does not support VLEN greater than 4096bit for 'V' ExtensionCurrently the %<V%> implementation requires the %<M%> extensionD does not support pointers on this target.D inline assembler statements are not supported in GDC.DATA array %qs at %L must be specified in a previous declarationDATA element %qs at %L cannot have a coindexDATA element %qs at %L cannot have the ALLOCATABLE attributeDATA element %qs at %L is a pointer and so must be a full arrayDATA object near %L has the pointer attribute and the corresponding DATA value is not a valid initial-data-targetDATA statement at %C after the first executable statementDATA statement at %C cannot appear within an INTERFACEDATA statement at %C is not allowed in a PURE procedureDATA statement at %L has more values than variablesDATA statement at %L has more variables than valuesDC format specifier not allowed at %CDEALLOCATE objectDEALLOCATE of coarray at %C in CRITICAL blockDEALLOCATE of coarray at %C in DO CONCURRENT blockDECIMAL= at %L not allowed in Fortran 95DEFAULT (NONE) specified more than once in DO CONCURRENT at %CDEFAULTMAP at %C but prior DEFAULTMAP for category %sDEFAULTMAP at %C but prior DEFAULTMAP with unspecified categoryDEF_INTERNAL_FLT_FN (%s) has no associated built-in functionsDEF_INTERNAL_INT_FN (%s) has no associated built-in functionsDELIM= at %L not allowed in Fortran 95DEPEND clause at %L of OMP DEPOBJ construct shall have only a single locatorDEPEND clause at %L of OMP DEPOBJ construct shall not have dependence-type DEPOBJDEPEND clause at %L requires %<targetsync%> interop-type, lacking it for %qs at %LDEPEND clause at %L requires action clause with %<targetsync%> interop-typeDEPOBJ in DEPOBJ construct at %L shall be a scalar integer of OMP_DEPEND_KIND kindDETACH event handle %qs in %s clause at %LDETACH event handle %qs in SHARED clause at %LDEVICE_TYPE must be ANY when used with INDIRECT at %LDIM argument (%d) to intrinsic SIZE at %L out of range (1:%d)DIM argument at %L is out of boundsDIM argument without COARRAY argument not allowed for THIS_IMAGE intrinsic at %LDIMENSION specified for %qs outside its INTERFACE body at %LDISTANCE= argument to NUM_IMAGES at %LDISTANCE= argument to THIS_IMAGE at %LDIST_SCHEDULE clause's chunk_size at %L requires a scalar INTEGER expressionDO CONCURRENT construct at %CDO loop at %L is undefined as it overflowsDO loop at %L is undefined as it underflowsDO loop at %L will be executed zero timesDO step value is zeroDO termination statement which is not END DO or CONTINUE with label %d at %CDO-iterator %qs at %L is inside iterator of the same nameDOUBLE COMPLEX at %CDP format specifier not allowed at %CDTIO %s procedure at %L must be recursiveDTIO character argument at %L must have assumed lengthDTIO dummy argument at %L must be a scalarDTIO dummy argument at %L must be an ASSUMED SHAPE ARRAYDTIO dummy argument at %L must be of KIND = %dDTIO dummy argument at %L must be of type %sDTIO dummy argument at %L must have INTENT %sDTIO procedure %qs at %L must be a subroutineDarwin does not support -mfentry or associated optionsDarwin is not an mx32 platformData element above array upper bound at %LData element below array lower bound at %LData is stored in big-endian format.Data is stored in little-endian format.  (Default).Data referenced by offset from start of text instead of GOT (with -fPIC/-fPIE).Data target at %L shall not have a coindexData transfer element at %L cannot be a full reference to an assumed-size arrayData transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedureData transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedureData transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedureData transfer element at %L cannot have PRIVATE componentsData transfer element at %L cannot have PRIVATE components unless it is processed by a defined input/output procedureData transfer element at %L cannot have procedure pointer componentsData-pointer-object at %L must be unlimited polymorphic, or of a type with the BIND or SEQUENCE attribute, to be compatible with an unlimited polymorphic targetDebug library to use instead of phobos.Declaring method %qD final would enable devirtualization of %i callDeclaring method %qD final would enable devirtualization of %i callsDeclaring method %qD final would enable devirtualization of %i call executed %lli timesDeclaring method %qD final would enable devirtualization of %i calls executed %lli timesDeclaring type %qD final would enable devirtualization of %i callDeclaring type %qD final would enable devirtualization of %i callsDeclaring type %qD final would enable devirtualization of %i call executed %lli timesDeclaring type %qD final would enable devirtualization of %i calls executed %lli timesDeclaring virtual destructor of %qD final would enable devirtualization of %i callDeclaring virtual destructor of %qD final would enable devirtualization of %i callsDeclaring virtual destructor of %qD final would enable devirtualization of %i call executed %lli timesDeclaring virtual destructor of %qD final would enable devirtualization of %i calls executed %lli timesDefault library to use instead of phobos.Default-initialized dummy argument %qs with %s attribute at %L is not permitted in BIND(C) procedure %qsDefer popping functions args from stack until later.Deferred array %qs at %L is not permitted in an initialization expressionDeferred type parameter not yet supportedDeferred-length character dummy argument %qs at %L of procedure %qs with BIND(C) attributeDefine alternative implicit copybook filename extensionDelete dead instructions that may throw exceptions.Delete useless null pointer checks.Deleted feature:Dependence-type SINK used together with SOURCE on the same construct at %LDeprecated in favor of -Wc11-c23-compat.Deprecated in favor of -std=c++11.Deprecated in favor of -std=c++14.Deprecated in favor of -std=c++17.Deprecated in favor of -std=c11.Deprecated in favor of -std=c23.Deprecated in favor of -std=c99.Deprecated in favor of -std=gnu++11.Deprecated in favor of -std=gnu++14.Deprecated in favor of -std=gnu++17.Deprecated in favor of -std=gnu11.Deprecated in favor of -std=gnu23.Deprecated in favor of -std=gnu99.Deprecated in favor of -std=iso9899:1999.Deprecated option.  Use -mno-vrsave instead.Deprecated option.  Use -mvrsave instead.Deprecated.  This switch has no effect.Derived type %qs at %C is being used before it is definedDerived type %qs at %L cannot have the SEQUENCE attribute because it is BIND(C)Derived type %qs at %L conflicts with namelist object %qs at %CDerived type %qs at %L has not been declaredDerived type %qs at %L may not be ABSTRACTDerived type %qs at %L must be an extension of %qsDerived type %qs at %L must be extensibleDerived type %qs cannot be used as a variable at %CDerived type %qs cannot be used as a variable at %LDerived type %qs declared at %L must have the BIND attribute to be C interoperableDerived type %qs is used as an actual argument at %LDerived type %qs with BIND(C) attribute at %L has no componentsDerived type %qs with BIND(C) attribute at %L is empty, and may be inaccessible by the C companion processorDerived type at %C can only be PRIVATE in the specification part of a moduleDerived type at %C can only be PUBLIC in the specification part of a moduleDerived type at %C has not been previously defined and so cannot appear in a derived type definitionDerived type component %C is not a permitted EQUIVALENCE memberDerived type declaration with FINAL at %C must be in the specification part of a MODULEDerived type definition at %C with empty CONTAINS sectionDerived type definition at %C without componentsDerived type definition of %qs at %C has already been definedDerived type name %qs at %C already has a basic typeDerived type name %qs at %C already has a basic type of %sDerived type variable %qs at %L cannot have ALLOCATABLE components to be an EQUIVALENCE objectDerived type variable %qs at %L must have SEQUENCE attribute to be an EQUIVALENCE objectDerived type variable %qs at %L with default initialization cannot be in EQUIVALENCE with a variable in COMMONDerived type variable %qs at %L with pointer component(s) cannot be an EQUIVALENCE objectDerived type variable %qs in COMMON at %L has an ultimate component that is allocatableDerived type variable %qs in COMMON at %L has neither the SEQUENCE nor the BIND(C) attributeDerived type variable %qs in COMMON at %L may not have default initializerDerived-type %qs declared at %L must be ABSTRACT because %qs is DEFERRED and not overriddenDerived-type %qs with BIND(C) must not have a CONTAINS section at %CDerived-type %qs with SEQUENCE must not have a CONTAINS section at %CDerived-type dummy argument %qs at %L was declared INTENT(OUT) but was not set and does not have a default initializerDescription for mxl-mode-bootstrap.Description for mxl-mode-executable.Description for mxl-mode-novectors.Description for mxl-mode-xmdstub.Destruct fields of partially constructed objects.Detect loops calculating CRC and replace with faster implementation. If the target supports CRC instruction and the CRC loop uses the same polynomial as the one used in the CRC instruction, directly replace with the corresponding CRC instruction. Otherwise, if the target supports carry-less-multiplication instruction, generate CRC using it. If neither case applies, generate table-based CRC.Detect paths that trigger erroneous or undefined behavior due to a null value being used in a way forbidden by a returns_nonnull or nonnull attribute.  Isolate those paths from the main control flow and turn the statement with erroneous or undefined behavior into a trap.Detect paths that trigger erroneous or undefined behavior due to dereferencing a null pointer.  Isolate those paths from the main control flow and turn the statement with erroneous or undefined behavior into a trap.Determine which dependences between insns are considered costly.Diagnose errors when parsing a template.Different CHARACTER lengths (%ld/%ld) in array constructorDifferent CHARACTER lengths (%wd/%wd) in array constructor at %LDifferent argument lists in external dummy function %s at %L and %LDifferent argument lists in external dummy subroutine %s at %L and %LDifferent character kinds at %LDifferent kind type parameters in pointer assignment at %LDifferent ranks in pointer assignment at %LDifferent shape for %s at %L on dimension %d (%d and %d)Different shape for arguments %qs and %qs at %L for intrinsic %<dot_product%>Different shape on dimension 1 for arguments %qs and %qs at %L for intrinsic matmulDifferent shape on dimension 2 for argument %qs and dimension 1 for argument %qs at %L for intrinsic matmulDifferent type kinds at %LDifferent types in pointer assignment at %L; attempted assignment of %s to %sDimensions specified for %s at %L after its initializationDisable -Wframe-larger-than= warning.  Equivalent to -Wframe-larger-than=<SIZE_MAX> or larger.Disable -Wlarger-than= warning.  Equivalent to -Wlarger-than=<SIZE_MAX> or larger.Disable ARCompact specific pass to generate conditional execution instructions.Disable CFR in leaf functions.Disable FP regs.  Equivalent to -msoft-float.Disable FPU ISA, the ABI option must be enable %<-mfloat-abi=soft%>Disable LR and SR instructions from using FPX extension aux registers.Disable Scalar to Vector optimization pass transforming 64-bit integer computations into a vector ones.Disable Walloc-size-larger-than= warning.  Equivalent to Walloc-size-larger-than=<SIZE_MAX> or larger.Disable Walloca-larger-than= warning.  Equivalent to Walloca-larger-than=<SIZE_MAX> or larger.Disable Wstack-usage= warning.  Equivalent to Wstack-usage=<SIZE_MAX> or larger.Disable Wvla-larger-than= warning.  Equivalent to Wvla-larger-than=<SIZE_MAX> or larger.Disable access to shared memory objects.Disable access to variables marked `@system' from @safe code.Disable floating point optimizations that ignore the IEEE signedness of zero.Disable hardware floating point.Disable indexed addressing.Disable optimizations observable by IEEE signaling NaNs.Disable optimizations that assume default FP rounding behavior.Disable position-independent code (PIC) for use in OS kernel code.Disable preprocessing.Disable space regs.Disable stack scrub entirely, disregarding strub attributes.Disable the use of RX FPU instructions.Disallow direct calls to global functions.Disallow more than 'msched-max-memory-insns' in instruction group. Otherwise, limit is 'soft' (prefer non-memory operations when limit is reached).Disallow tail call optimization when a calling routine may have omitted character lengths.Disallow unsound immutable conversions that were formerly incorrectly permitted.Discover pure and const functions.Discover read-only and non addressable static variables.Discover read-only, write-only and non-addressable static variables.Display compile time statistics.Display statistics accumulated during compilation.Display target specific command line options (including assembler and linker options).Display the code tree after front end optimization.Display the code tree after parsing.Display the code tree after parsing; deprecated option.Display the compiler's version.Display the frontend AST after parsing and semantic passes.Display the global symbol table after parsing.Display the symbols in reverse order.Display this information.Division by zero at %LDivision by zero converting %s to %s at %LDivision strategy, one of: call-div1, call-fp, call-table.Do CFG-sensitive rematerialization in LRA.Do dispatch scheduling if processor is bdver1, bdver2, bdver3, bdver4 or znver1 and Haifa scheduling is selected.Do link the standard D startup files in the compilation.Do no generate BRcc instructions in arc_reorg.Do not add a default symbol exports to modules or dynamic libraries.Do not add default run paths (for the compiler library directories) to executables, modules or dynamic libraries.Do not allow constant data to be placed in code sections.Do not assume a large TLS segment.Do not assume that functions never executed during the train run are cold.Do not assume that standard C libraries and "main" exist.Do not create element-misaligned vector memory accesses.Do not disable space regs.Do not discard comments in macro expansions.Do not discard comments.Do not display functions compiled or elapsed time.Do not elide common elements in template comparisons.Do not emit addressing modes with side-effect assignment.Do not emit complex integer constants to read-only memory.Do not emit function prologue or epilogue.Do not enforce strict alignment.Do not generate #line directives.Do not generate .size directives.Do not generate a single exit point for each function.Do not generate code that can only run in supervisor mode (default).Do not generate load/store with update instructions.Do not generate mpy instructions for ARC700.Do not generate unaligned memory accesses.Do not generate unaligned scalar memory accesses.Do not inline integer division.Do not inline square root.Do not link against the device-specific library lib<MCU>.a.Do not link the standard D library in the compilation.Do not load the PIC register in function prologues.Do not look for object files in standard path.Do not mark ABI switches in e_flags.Do not need load-load barriers (dbar 0x700).Do not perform optimizations increasing noticeably stack usage.Do not place floating point constants in TOC.Do not place symbol+offset constants in TOC.Do not predefine system-specific and GCC-specific macros.Do not pretty-print template specializations as the template signature followed by the arguments.Do not provide a default start-address 0x100 of the program.Do not push extended registers on stack in monitor functions.Do not search standard system include directories (those specified with -isystem will still be used).Do not search standard system include directories for C++.Do not support SSE4.1 and SSE4.2 built-in functions and code generation.Do not suppress C++ class debug information.Do not suppress warnings from system headers.Do not treat local variables and COMMON blocks as if they were named in SAVE statements.Do not tune code and read-only data alignment.Do not tune stack alignment.Do not tune writable data alignment.Do not use %<-mpower8-internal%>; use %<-mcpu=power8%> insteadDo not use GOT to access external symbols.Do not use MDMX instructions.Do not use MIPS-3D instructions.Do not use VAX fp.Do not use a cache-flushing function before calling stack trampolines.Do not use addresses that allocate global registers.Do not use condition codes from normal instructions.Do not use hardware FP.Do not use hardware floating point.Do not use hardware fp.Do not use hardware quad fp instructions.Do not use the AIX Vector Extended ABI.Do not use the AltiVec ABI extensions.Do not use the bit-field instructions.Do not use the callt instruction (default).Do not use the device-specific specs file device-specs/specs-<MCU>.Do not use unaligned memory references.Do not warn about specified attributes.Do not warn about using "long long" when -pedantic.Do stack checking using bounds in L1 scratch memory.Does nothing.  Preserved for backward compatibility.Does nothing. Preserved for backward compatibility.Don't align items in code or data.Don't allocate floats and doubles in extended-precision registers.Don't assume that unaligned accesses are handled by the system.Don't call any cache flush functions.Don't call any cache flush trap.Don't create a dynamically linked position independent executable.Don't destruct fields of partially constructed objects.Don't emit DWARF additions beyond selected version.Don't emit dllexported inline functions unless needed.Don't generate DWARF pubnames and pubtypes sections.Don't generate checks for control speculation in selective scheduling.Don't generate code with unaligned load store for R6 (alias of -mstrict-align).Don't generate code with unaligned load store, only valid for MIPS R6.Don't generate privileged-mode only code; implies -mno-inline-ic_invalidate if the inline code would not work in user mode.Don't indicate any priority with TARGET_REGISTER_PRIORITY.Don't optimize block moves, use memcpy.Don't optimize block moves.Don't use %reloc() assembly operators (for backward compatibility).Don't use C-style integral promotion for unary '+', '-' and '~'.Don't use P-mnemonics for branches.Don't use any of r32..r63.Don't use less than 25 bit addressing range for calls.Don't warn about uses of Microsoft extensions.Double CLASS IS block in SELECT TYPE statement at %LDowngrade conformance errors to warnings.Driving:Driving: (%ld)
! Dummy %qs at %L cannot have an initializerDummy argument %qs at %L cannot be INTENT(OUT)Dummy argument %qs at %L cannot be OPTIONALDummy argument %qs at %L cannot be a derived type at %CDummy argument %qs at %L may not be a pointer with CONTIGUOUS attribute as procedure %qs is BIND(C)Dummy argument %qs at %L of EVENT_TYPE shall not be INTENT(OUT)Dummy argument %qs at %L of LOCK_TYPE shall not be INTENT(OUT)Dummy argument %qs at %L was declared INTENT(OUT) but was not setDummy argument %qs has to be a pointer, assumed-shape or assumed-rank array without CONTIGUOUS attribute - as actual argument at %L is not simply contiguous and both are ASYNCHRONOUS or VOLATILEDummy argument %qs not allowed in expression at %LDummy argument %qs of %qs at %L should be named %qs as to match the corresponding argument of the overridden procedureDummy argument %qs with INTENT(IN) in pointer association context (%s) at %LDummy argument %qs with INTENT(IN) in variable definition context (%s) at %LDummy flag. This is the default unless FPX switches are provided explicitly.Dummy procedure %qs at %C cannot have a generic interfaceDummy procedure %qs at %L shall not be elementalDummy procedure %qs is invalid in procedure pointer initialization at %LDummy procedure %qs not allowed in elemental procedure %qs at %LDummy procedure %qs of PURE procedure at %L must also be PUREDummy procedure at %C may not have BIND(C) attribute with NAMEDump Source Coverage Obligations.Dump a textual representation of each diagnostic's exploded path to SRCFILE.IDX.KIND.epath.txt.Dump a textual representation of the exploded graph to SRCFILE.eg-ID.txt.Dump a textual representation of the exploded graph to SRCFILE.eg.txt.Dump analyzer-specific call graph information to a SRCFILE.callgraph.dot file.Dump analyzer-specific data to a SRCFILE.analyzer.json.gz file.Dump declarations to a .decl file.Dump detailed information on GCC's internal representation of source code locations.Dump only the defined symbols.Dump optimization passes.Dump state-purging information to a SRCFILE.state-purge.dot file.Dump the analyzer exploded graph to a SRCFILE.eg.dot file.Dump the analyzer supergraph to a SRCFILE.supergraph.dot file.Dump the demangled output.Dump the details of LTO objects.Dump the dump tool command line options.Dump the statistics of gimple statements.Dump the statistics of tree types.Dump the statistics of trees.Dump the symtab callgraph.Dump various Rust front end internals.Dump various analyzer internals to SRCFILE.*.fg.dot and SRCFILE.*.tg.dot.Dump various analyzer internals to SRCFILE.*.infinite-loop.dot.Dump various analyzer internals to SRCFILE.analyzer.txt.Dump various analyzer internals to stderr.Duplicate %<prefer_type%> modifier at %CDuplicate %<target%> at %CDuplicate %<targetsync%> at %CDuplicate %s attribute at %LDuplicate %s attribute specified at %LDuplicate %s label specification at %CDuplicate %s modifier at %L in USES_ALLOCATORS clauseDuplicate %s specification at %CDuplicate ASYNCHRONOUS attribute specified at %LDuplicate AUTOMATIC attribute specified at %LDuplicate BIND attribute specified at %LDuplicate DEFERRED at %CDuplicate ELSE statements at %L and %CDuplicate EXTENDS attribute specified at %LDuplicate IMPLICIT NONE statement at %CDuplicate NML specification at %CDuplicate NON_OVERRIDABLE at %CDuplicate POINTER attribute at %CDuplicate PRIVATE statement at %CDuplicate PROTECTED attribute specified at %LDuplicate SAVE attribute specified at %LDuplicate SAVE attribute specified near %CDuplicate SEQUENCE statement at %CDuplicate STAT= attribute in %CDuplicate TEAM= attribute in %CDuplicate TEAM_NUMBER= attribute in %CDuplicate UNIT specification at %CDuplicate VALUE attribute specified at %LDuplicate VOLATILE attribute specified at %LDuplicate access-specifier at %CDuplicate argument %qs at %L to intrinsic %sDuplicate array spec for Cray pointee at %CDuplicate array spec for Cray pointee at %LDuplicate construct label %qs at %CDuplicate format specification at %CDuplicate name %qs in association at %CDuplicate name %qs in parameter list at %CDuplicate statement label %d at %L and %LDuplicate symbol %qs in formal argument list at %CDuplicated %<fr%> preference-selector-name at %CDuplicated %qs clause at %LDuplicated NOWAIT clause on !$OMP DISPATCH and !$OMP END DISPATCH at %CDuplicated NOWAIT clause on %s and %s at %CDuplicated clause with SOURCE dependence-type at %CDuplicated common block %</%s/%> in !$OMP ALLOCATE at %LDuplicated variable %qs in !$OMP ALLOCATE at %LDuring link time optimization warn about mismatched types of global declarations.Dynamic Realign Argument Pointer (DRAP) not supported in interrupt service routine.  This may be worked around by avoiding functions with aggregate return.Dynamically allocate cc registers.E specifier not allowed with g0 descriptor in format string at %LEDGE_CROSSING incorrectly set across same sectionEDGE_CROSSING missing across section boundaryEH edge crosses section boundary in bb %iEH incoming edge mixed with non-EH incoming edges in bb %iEH landing pad label %qD is not first in a sequence of labels in bb %dELEMENTAL function %qs at %L must have a scalar resultELEMENTAL non-INTRINSIC procedure %qs is not allowed as an actual argument at %LELEMENTAL prefix in MODULE PROCEDURE interface is missing at %LELEMENTAL procedure pointer component %qs is not allowed as an actual argument at %LELFv2 parameter passing for an argument containing zero-width bit fields but that is otherwise a homogeneous aggregate was corrected in GCC 12ELSE IF statement at %C cannot follow ELSE statement at %LELSEWHERE statement at %C follows previous unmasked ELSEWHEREELSEWHERE statement at %C not enclosed in WHERE blockENCODING= at %L not allowed in Fortran 95END TEAM statement at %CEND statement instead of %s statement at %LEND tag at %C not allowed in output statementEND tag label %d at %L not definedENTRY %qs at %L cannot be called recursively, as function %qs is not RECURSIVEENTRY %qs at %L cannot be called recursively, as subroutine %qs is not RECURSIVEENTRY %qs at %L has no IMPLICIT typeENTRY result %s cannot be ALLOCATABLE in FUNCTION %s at %LENTRY result %s cannot be a POINTER in FUNCTION %s at %LENTRY result %s cannot be an array in FUNCTION %s at %LENTRY result %s cannot be of type %s in FUNCTION %s at %LENTRY statement at %CENTRY statement at %C cannot appear in a contained procedureENTRY statement at %C cannot appear within a BLOCK DATAENTRY statement at %C cannot appear within a DERIVED TYPE blockENTRY statement at %C cannot appear within a DO blockENTRY statement at %C cannot appear within a FORALL blockENTRY statement at %C cannot appear within a MODULEENTRY statement at %C cannot appear within a PROGRAMENTRY statement at %C cannot appear within a SELECT blockENTRY statement at %C cannot appear within a STRUCTURE blockENTRY statement at %C cannot appear within a SUBMODULEENTRY statement at %C cannot appear within a WHERE blockENTRY statement at %C cannot appear within a contained subprogramENTRY statement at %C cannot appear within an IF-THEN blockENTRY statement at %C cannot appear within an INTERFACEENTRY statement at %L with BIND(C) prohibited in an elemental procedureENTRY_BLOCK has IL associated with itENUM and ENUMERATOR at %CENUM declaration at %C has no ENUMERATORSENUM definition statement expected before %CENUMERATOR %L not initialized with integer expressionEOR tag label %d at %L not definedEQUIVALENCE at %C requires two or more objectsEQUIVALENCE statement at %CERR tag label %d at %L not definedERRMSG at %LERRMSG at %L is useless without a STAT tagERRMSG tag at %LERRMSG variableERRMSG variable at %L shall be a scalar default CHARACTER variableERRMSG= argument at %L must be a scalar CHARACTER variableERROR STOP statement at %CESA/390 architecture.EVENT POST statement at %CEVENT WAIT statement at %CEVENT argument at %L to the intrinsic EVENT_QUERY shall be of type EVENT_TYPEEXIT statement at %C terminating !$ACC LOOP loopEXIT statement at %C terminating !$OMP DO loopEXIT statement with no do-construct-name at %CEXIT_BLOCK has IL associated with itEXTEND can only be used where %s is ACCESS MODE SEQUENTIALEXTENDS at %LEXTERNAL attribute conflicts with FUNCTION attribute in %qs at %LEither all or none of the objects in the EQUIVALENCE set at %L shall have the PROTECTED attributeElement in %s array constructor at %L is %sElement of assumed-shape or pointer array as actual argument at %L cannot correspond to actual argument at %LElement of assumed-shape or pointer array passed to array dummy argument %qs at %LElement with a value of %d in ORDER at %L must be in the range [1, ..., %d] for the RESHAPE intrinsic near %LElemental function as initialization expression with non-integer/non-character arguments at %LElements with the same value at %L and %L in vector subscript in a variable definition context (%s)Eliminate multiple function invocations also for impure functions.Emit .gnu_attribute tags.Emit .stack_size directives.Emit 16-bit relocations to the small data areas.Emit 32-bit relocations to the small data areas.Emit GNU_PROPERTY_X86_ISA_1_NEEDED GNU property.Emit IEEE-conformant code, without inexact exceptions.Emit NOPs before global and after local entry point for -fpatchable-function-entry.Emit RISC-V ELF attribute.Emit call graph information.Emit checks causing "break 8" instructions to execute when applying atomic builtins on misaligned memory.Emit code for the byte/word ISA extension.Emit code for the counting ISA extension.Emit code for the fp move and sqrt ISA extension.Emit code for the motion video ISA extension.Emit code using explicit relocation directives.Emit common-like symbols as weak symbols.Emit custom warnings with internal details intended for analyzer developers.Emit debug annotations during preprocessing.Emit debugging information related to the escape analysis pass when run with -fgo-optimize-allocs.Emit diagnostics showing the location of nodes in the exploded graph.Emit direct branches to local functions.Emit extra code in the function prologue in order to trap if the stack size exceeds the given limit.Emit function prologues only before parts of the function that need it, rather than at the top of the function.Emit function-calls using global offset table when generating PIC.Emit fused multiply-add instructions for long doubles in vector registers (wfmaxb, wfmsxb, wfnmaxb, wfnmsxb).  Reassociation pass does not handle fused multiply-adds, therefore code generated by the middle-end is prone to having long fused multiply-add chains.  This is not pipeline-friendly, and the default behavior is to emit separate multiplication and addition instructions for long doubles in vector registers, because measurements show that this improves performance.  This option allows overriding it for testing purposes.Emit implicit instantiations of inline templates.Emit implicit instantiations of templates.Emit indirect branches to local functions.Emit instrumentation calls to __tsan_func_entry() and __tsan_func_exit().Emit long load/store sequences.Emit more verbose descriptions of control flow in diagnostics.Emit more verbose descriptions of state changes in diagnostics.Emit multi-thread and async-signal safe code for byte and word memory accesses.Emit multi-thread and async-signal safe code for partial memory accesses.Emit optimization diagnostics.Emit profiling counter call at function entry before prologue.Emit profiling counter call at function entry before prologue. The compiled code will require a 64-bit CPU and glibc 2.29 or newer to run.Emit progressive recommended breakpoint locations.Emit rdval instead of rduniq for thread pointer.Emit special instrumentation for accesses to volatiles.Emit static const variables even if they are not used.Emit stop bits before and after volatile extended asms.Emit template instantiations as weak symbols.Emit traps as "break 8", default for CRIS v3 and up.  If disabled, calls to abort() are used.Emit verbose debug information in assembly code.Empty FINAL at %CEmpty IMPLICIT statement at %CEmpty array constructor at %C is not allowedEmpty old style initializer list at %CEmpty set of digits in BOZ constant at %CEnable 'q' instruction alternatives.Enable (default) or disable generation of vector segment load/store instructions.Enable 16-entry register file.Enable 32-bit ALU instructions.Enable 32-bit jump instructions.Enable 64-bit Time-Stamp Counter extension instruction.Enable C++ coroutines (experimental).Enable C++ header module (experimental).Enable C++14 sized deallocation support.Enable C++20 Modules (experimental).Enable C-SKY DSP instructions.Enable C-SKY Enhanced DSP instructions.Enable C-SKY SECURE instructions.Enable C-SKY TRUST instructions.Enable C-SKY Vector DSP instructions.Enable CFI tables via GAS assembler directives.Enable Cobol lex debuggingEnable Cobol parser debuggingEnable Cobol yacc debuggingEnable DEC-style STATIC and AUTOMATIC attributes.Enable DIV-REM instructions for ARCv2.Enable DSP 3.1 Pack A extensions.Enable DWARF line debug info via GNU as.Enable Dual and Single Operand Instructions for Telephony.Enable ENTER_S and LEAVE_S opcodes for ARCv2.Enable FT32B code compression.Enable Full Redundancy Elimination (FRE) on trees.Enable Function Descriptor PIC mode.Enable GPR32 in inline asm when APX_F enabled.Enable Graphite Identity transformation.Enable ID based shared library.Enable IEEE 128-bit floating point via the __float128 keyword.Enable Local Register Allocation.Enable Locked Load/Store Conditional extension.Enable LoongArch Advanced SIMD Extension (LASX, 256-bit).Enable LoongArch SIMD Extension (LSX, 128-bit).Enable MUL.X and UMUL.X instructions.Enable Objective-C exception and synchronization syntax.Enable Objective-C setjmp exception handling runtime.Enable OpenACC.Enable OpenMP (implies -frecursive in Fortran).Enable OpenMP GPU offloading.Enable OpenMP's SIMD directives.Enable PIC support for building libraries.Enable Plan 9 language extensions.Enable SSA coalescing of user variables.Enable SSA code sinking on trees.Enable SSA dead code elimination optimization on trees.Enable SSA-BIT-CCP optimization on trees.Enable SSA-CCP optimization on trees.Enable SSA-PRE optimization on trees.Enable TPF-OS tracing code.Enable Virtual Hosting support.Enable XY Memory extension (DSP version 3).Enable alignment of COMMON blocks.Enable all -Wunused- warnings.Enable all DEC language extensions.Enable all optimization info dumps on stderr.Enable an RTL peephole pass before sched2.Enable asan allocas/VLAs protection.Enable asan builtin functions protection.Enable asan detection of use-after-return bugs.Enable asan globals protection.Enable asan load operations protection.Enable asan stack protection.Enable asan store operations protection.Enable assembler and linker relaxation.  Enabled by default at -Os.Enable at-calls stack scrubbing for all viable functions.Enable atomic instructions.Enable backend debugging.Enable backward propagation of use properties at the SSA level.Enable barrel shift instructions.Enable basic block vectorization (SLP) on trees.Enable basic program profiling code.Enable byte swap instructions.Enable cache bypass for volatile references.Enable cache prefetch instructions.Enable certain features present in drafts of C++ Contracts.Enable code density instructions for ARCv2.Enable code hoisting.Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=.Enable common options for generating profile info for profile feedback directed optimizations.Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=.Enable common options for performing profile feedback directed optimizations.Enable compact casesi pattern.Enable conditional dead code elimination for builtin calls.Enable conditional execution other than moves/scc.Enable conditional move instruction usage.Enable conditional moves unconditionally.Enable conditional moves.Enable conservative small loop unrolling.Enable constructor/destructor feature.Enable coprocessor instructions.Enable copy propagation of scalar-evolution information.Enable copy propagation on trees.Enable correction of flow inconsistent profile data input.Enable dead store elimination.Enable debug output.Enable decimal floating point hardware support.Enable default conversions between __float128 & long double.Enable default widths for i, f and g format specifiers.Enable divide and modulus instructions.Enable dominator optimizations.Enable double load/store instructions for ARC HS.Enable dual viterbi butterfly extension.Enable earlier placing stop bits for better scheduling.Enable embedding metadata directly into object filesEnable exception handling.Enable experimental Fortran 202y features.Enable experimental compilation of Rust files at your own riskEnable extra conditional-branch instructions j(s)lt and j(s)le.Enable floating-point status flags setting SSE vector operations on partial vectors.Enable formatting of JSON output.Enable forward propagation on trees.Enable front end optimization.Enable function profiling.Enable function reordering that improves code placement.Enable garbage collection (GC) in Objective-C/Objective-C++ programs.Enable general atomic operations introduced in v3 ISA.Enable generation of ARC SIMD instructions via target-specific builtins.Enable generation of binaries which use functions from libgcc to perform divide operations.  The default is -mhard-div.Enable generation of binaries which use functions from libgcc to perform floating point operations.  This is the default; use -mhard-float to override.Enable generation of binaries which use functions from libgcc to perform multiply operations. The default is -mhard-mul.Enable generation of compare and set flag with immediate (l.sf*i) instructions. By default extra instructions will be generated to store the immediate to a register first.Enable generation of conditional move (l.cmov) instructions.  By default the equivalent will be generated using set and branch.Enable generation of hardware divide (l.div, l.divu) instructions.  This is the default; use -msoft-div to override.Enable generation of hardware floating point instructions. The default is -msoft-float.Enable generation of hardware multiply instructions (l.mul, l.muli) instructions. This is the default; use -msoft-mul to override.Enable generation of inline code instead of calls to functions from the library to implement intrinsics.Enable generation of rotate right (l.ror) instructions.  By default functions from libgcc are used to perform rotate right operations.Enable generation of rotate right with immediate (l.rori) instructions.  By default functions from libgcc are used to perform rotate right with immediate operations.Enable generation of shift with immediate (l.srai, l.srli, l.slli) instructions. By default extra instructions will be generated to store the immediate to a register first.Enable generation of sign extension (l.ext*) instructions.  By default memory loads are used to perform sign extension.Enable guessing of branch probabilities.Enable hardware floating point.Enable hoisting adjacent loads to encourage generating conditional move instructions.Enable hoisting loads from conditional pointers.Enable hwasan instrumentation of allocas/VLAs.Enable hwasan instrumentation of builtin functions.Enable hwasan instrumentation of load operations.Enable hwasan instrumentation of statically sized stack-allocated variables.Enable hwasan instrumentation of store operations.Enable in and out of Graphite representation.Enable incremental LTO, with its cache in given directory.Enable inline checks for nil receivers with the NeXT runtime and ABI version 2.Enable inlining of PLT in function calls.Enable inlining of function declared "inline", disabling disables all inlining.Enable instructions that guard against return-oriented programming attacks.Enable internal stack scrubbing for all viable functions.Enable interrupt stack instructions.Enable kind-specific variants of integer intrinsic functions.Enable label alignment optimizations.Enable lazy module importing.Enable legacy math intrinsics for compatibility.Enable legacy parsing of INCLUDE as statement.Enable lifetime extension of range based for temporaries.Enable link-time optimization.Enable linker optimizations.Enable linker relaxation.Enable linker relaxations.Enable linker relaxing.Enable load/store bonding.Enable loop distribution for patterns transformed into a library call.Enable loop distribution on trees.Enable loop epilogue vectorization using smaller vector size.Enable loop header copying on trees.Enable loop interchange on trees.Enable loop invariant motion on trees.Enable loop nest transforms.  Same as -floop-nest-optimize.Enable loop optimizations on tree level.Enable loop vectorization of floating point inductions.Enable loop vectorization on trees.Enable machine specific peephole optimizations.Enable more verbose RTX cost dumps during debug.  For GCC developers use only.Enable most warning messages.Enable multicore support.Enable multiply instructions.Enable multiprocessor instructions.Enable nested conditional execution optimizations.Enable optimizing &&/|| in conditional execution.Enable parsing GIMPLE.Enable pre-reload use of cbranchsi pattern.Enable preprocessing.Enable range checking during compilation.Enable reassociation on tree level.Enable register pressure sensitive insn scheduling.Enable relaxing in the assembler.Enable rvalue arguments to ref parameters.Enable safety checks on all functions by default.Enable scheduling across basic blocks.Enable separate data segment.Enable setting GPRs to the result of comparisons.Enable shadow stack built-in functions from Control-flow Enforcement Technology (CET).Enable sign extend instructions.Enable signed division and modulus instructions.Enable signed move and memory load instructions.Enable split of 32 bit immediate loads into low / high part.Enable stack probing.Enable stack scrub as per attributes, with strict call checking.Enable stack scrubbing for all viable functions.Enable static analysis pass.Enable strict 32-bit psABI struct return checking.Enable string length optimizations on trees.Enable support for C++ concepts.Enable support for DEC STRUCTURE/RECORD.Enable support for GNU transactional memory.Enable support for the RH850 ABI.  This is the default.Enable support for the old GCC ABI.Enable swap byte ordering extension instruction.Enable tail merging on trees.Enable the CSR checking for the ISA-dependent CSR and the read-only CSR. The ISA-dependent CSR are only valid when the specific ISA is set.  The read-only CSR can not be written by the CSR instructions.Enable the MIPS16e V2 instructions.Enable the char8_t fundamental type and use it as the type for UTF-8 string and character literals.Enable the copy of the AArch64 load/store pair fusion pass that runs after register allocation.Enable the copy of the AArch64 load/store pair fusion pass that runs before register allocation.Enable the critical path heuristic in the scheduler.Enable the dependent count heuristic in the scheduler.Enable the division approximation.  Enabling this reduces precision of division results to about 16 bits for single precision and to 32 bits for double precision.Enable the extended LRW instruction (default for CK801).Enable the group heuristic in the scheduler.Enable the last instruction heuristic in the scheduler.Enable the loop nest optimizer.Enable the normal mode.Enable the overflow checks in code generationEnable the rank heuristic in the scheduler.Enable the reciprocal square root approximation.  Enabling this reduces precision of reciprocal square root results to about 16 bits for single precision and to 32 bits for double precision.Enable the speculative instruction heuristic in the scheduler.Enable the square root approximation.  Enabling this reduces precision of square root results to about 16 bits for single precision and to 32 bits for double precision. If enabled, it implies -mlow-precision-recip-sqrt.Enable the use of 64-bit floating point registers in fmov instructions.  See -mdalign if 64-bit alignment is required.Enable the use of RX FPU instructions.  This is the default.Enable the use of blank format items in format strings.Enable the use of character literals in assignments and data statements for non-character variables.Enable the use of indexed loads.Enable the use of pre/post modify with register displacement.Enable the use of the LRA register allocator.Enable the use of the fsca instruction.Enable the use of the fsrra instruction.Enable the use of the old, broken, ABI where all stacked function arguments are aligned to 32-bits.Enable the use of the short load instructions.Enable the use the standard RX ABI where all stacked function arguments are naturally aligned.  This is the default.Enable the z vector language extension providing the context-sensitive vector macro and enable the Altivec-style builtins in vecintrin.h.Enable traditional preprocessing.Enable transitivity of constraints during analysis.Enable unaligned word and halfword accesses to packed data.Enable use of BI/BIH instructions when available.Enable use of GPREL for read-only data in FDPIC.Enable use of NPS400 bit operations.Enable use of NPS400 xld/xst extension.Enable use of POST_INC / POST_DEC.Enable use of POST_MODIFY.Enable use of R16-R31 (default).Enable use of odd-numbered single-precision registers.Enable use of sdata/scommon/sbss.Enable user-defined instructions.Enable using IEEE 128-bit floating point instructions.Enable v850e3v5 loop instructions.Enable variable polynomial CRC extension.Enable various security-relevant flags.Enable vectorization for gather instruction.Enable vectorization for scatter instruction.Enable vectorization on trees.Enable verbose output.Enable workaround for single erratum of AT697F processor (corresponding to erratum #13 of AT697E processor).Enable workarounds for the errata of the GR712RC processor.Enable workarounds for the errata of the UT699 processor.Enable workarounds for the errata of the UT699E/UT700 processor.Enable/Disable the traditional scheduling in loops that already passed modulo scheduling.Enable/disable static linkage for CALL literalsEnabled ID based shared library.Enables Position-Independent-Data (PID) mode.Enables or disables the use of the SMOVF, SMOVB, SMOVU, SUNTIL, SWHILE and RMPA instructions.  Enabled by default.Enables the dynamic vectorizer cost model.  Preserved for backward compatibility.Enables verbose cost model dumping in the debug dump files.Encode SSE instructions with VEX prefix.End expression in DO loopEnd of #embed search list.
  End of nonblock DO statement at %C is interwoven with another DO loopEnd of nonblock DO statement at %C is within another blockEnd of scalar initializer expected at %CEnd of search list.
  Enforce class member access control semantics.Entity %qs at %L has a deferred LEN parameter %qs and requires either the POINTER or ALLOCATABLE attributeEntity %qs at %L has a deferred type parameter and requires either the POINTER or ALLOCATABLE attributeEntity %qs at %L is already present in the interfaceEntity %qs at %L is incompatible with a BOZ literal constantEntity with assumed character length at %L must be a dummy argument or a PARAMETEREnumerator exceeds the C integer type at %CEquality comparison for %s at %LEquivalence for %qs does not match ordering of COMMON %qs at %LEquivalent to -fcf-protection=full.Errmsg-variable at %L shall not be %sd within the same %s statementErrorError allocating %lu bytesError converting PARAMETER constant in complex constant at %CError converting integerError in array constructor referenced at %LError in pointer initialization at %CError in type-spec at %LError in typebound call at %LError reallocating to %lu bytesError writing JSON output file %s
  Error writing module file %qs for writing: %sError writing modules file: %sError writing output file '%s'
  Evaluation of nonstandard initialization expression at %LEvaluation of string longer than 2**28 at %L deferred to runtime, expect bugsEventEvent variable argument at %L must be a coarray but not coindexedEvent variable argument at %L must be a coarray or coindexedEvent variable at %L must be a scalar of type EVENT_TYPEEvery subscript of target specification at %L must be a constant expressionExit condition of DO WHILE loop at %L must be a scalar LOGICAL expressionExit on the first error occurred.Expand 32bit/64bit integer divide into 8bit unsigned integer divide with run-time check.Expand adddi3 and subdi3 at rtl generation time into add.f / adc etc.Expected ")" at %CExpected "," at %CExpected %<( depobj )%> at %CExpected %<(%> after %<prefer_type%> at %CExpected %<(%> after %qs at %CExpected %<(%> at %CExpected %<)%> at %CExpected %<)%> or %<,%> at %CExpected %<)%> or %<omp_cur_iteration)%> at %CExpected %<*%> in coindex specification in ALLOCATE statement at %LExpected %<,%> at %CExpected %<,%> or %<)%> at %CExpected %<,%> or %<:%> at %CExpected %<,%> or %<}%> at %CExpected %<,%> or end of statement at %CExpected %<:%> at %CExpected %<::%> after binding-attributes at %CExpected %<::%> at %CExpected %<==%>, %<.EQ.%> or %<.EQV.%> atomic comparison expression at %LExpected %<=>%> at %CExpected %<END INTERFACE ASSIGNMENT (=)%> at %CExpected %<fr(%> or %<attr(%> at %CExpected %<prefer_type%>, %<target%>, or %<targetsync%> at %CExpected %<{%> at %CExpected ',' or ')' in reduction list at %CExpected :: in TYPE definition at %CExpected = sign in PARAMETER statement at %CExpected ACQ_REL, ACQUIRE, RELAXED, RELEASE or SEQ_CST for ATOMIC_DEFAULT_MEM_ORDER clause at %CExpected ALIGN or ALLOCATOR clause at %CExpected ALLOC, TO, FROM, TOFROM, FIRSTPRIVATE, PRESENT, NONE or DEFAULT at %CExpected COMPILATION or EXECUTION in AT clause at %CExpected DEPEND, UPDATE, or DESTROY clause at %CExpected DO loop at %CExpected ELSE at %L in atomic compare captureExpected FATAL or WARNING in SEVERITY clause at %CExpected HOST, NOHOST or ANY at %CExpected IF at %L in atomic compare captureExpected IN, OUT, INOUT, INOUTSET or MUTEXINOUTSET followed by %<)%> at %CExpected INCLUSIVE or EXCLUSIVE clause at %CExpected INTEGER type at %LExpected INTEGER, REAL or CHARACTER type for %qs in REDUCE with MIN/MAX at %L, got %sExpected NONE or PRESENT in DEFAULT clause at %CExpected NONE, FIRSTPRIVATE, PRIVATE or SHARED in DEFAULT clause at %CExpected OMP END METADIRECTIVE at %CExpected ORDER(CONCURRENT) at %C with optional %<reproducible%> or %<unconstrained%> modifierExpected P edit descriptor in format string at %LExpected PARAMETER symbol in complex constant at %CExpected RANK or RANK DEFAULT following SELECT RANK at %CExpected SCALAR, AGGREGATE, ALLOCATABLE, POINTER or ALL at %CExpected SEQ_CST, ACQUIRE or RELAXED at %CExpected SEQ_CST, AQC_REL, RELEASE, or ACQUIRE at %CExpected SHAPE argument to C_F_POINTER with array FPTR at %LExpected TEAMS, PARALLEL or THREAD as binding in BIND at %CExpected TYPE IS, CLASS IS or END SELECT statement following SELECT TYPE at %CExpected UNIFIED_ADDRESS, UNIFIED_SHARED_MEMORY, SELF_MAPS, DYNAMIC_ALLOCATORS, REVERSE_OFFLOAD, or ATOMIC_DEFAULT_MEM_ORDER clause at %LExpected a CASE or END SELECT statement following SELECT CASE at %CExpected a nameless interface at %CExpected a procedure for argument %qs at %LExpected a procedure pointer for argument %qs at %LExpected a right parenthesis in expression at %CExpected a step value in iterator at %CExpected access-specifier at %CExpected alternate return label at %CExpected an initialization expression at %CExpected another dimension in array declaration at %CExpected argument list at %CExpected array subscript at %CExpected array subscript stride at %CExpected associate name at %CExpected association at %CExpected association list at %CExpected attribute bit nameExpected binding attribute at %CExpected binding name at %CExpected binding target after %<=>%> at %CExpected block name %qs of SELECT construct at %CExpected block name of %qs in %s statement at %LExpected bounds specification for %qs at %LExpected coarray variable as %qs argument to the %s intrinsic at %LExpected comma in I/O list at %CExpected component reference at %CExpected constant non-negative scalar integer offset expression at %LExpected constant scalar integer expression or non-empty default-kind character literal at %LExpected construct-type PARALLEL, SECTIONS, DO or TASKGROUP in $OMP CANCELLATION POINT statement at %CExpected data constant after repeat spec at %CExpected default-kind character literal at %LExpected dependence-type SINK or SOURCE at %CExpected dummy parameter name or a positive integer at %LExpected entity-list in AUTOMATIC statement at %CExpected entity-list in STATIC statement at %CExpected exponent in expression at %CExpected expression at %C in PARAMETER statementExpected expression in %s statement at %CExpected expression in array specification at %CExpected expression typeExpected formal argument list in function definition at %CExpected generic name or operator descriptor at %CExpected identifier at %CExpected initialization expression at %CExpected initialization expression in CASE at %CExpected integerExpected integer expression at %CExpected integer expression of the %<omp_allocator_handle_kind%> kind at %LExpected integer expression or a single device-modifier %<device_num%> or %<ancestor%> at %CExpected integer stringExpected integer type for %qs in REDUCE with IAND/IOR/IEOR at %L, got %sExpected intrinsic assignment in OMP WORKSHARE at %LExpected label %qs for %s statement at %CExpected left parenthesisExpected list of %<lower-bound :%> or list of %<lower-bound : upper-bound%> specifications at %LExpected logical type for %qs in REDUCE at %L, got %qsExpected module procedure name at %CExpected nameExpected numeric type for %qs in REDUCE at %L, got %sExpected parameter list in type declaration at %CExpected positive argument index at %LExpected range-specification at %CExpected real stringExpected reduction operator or function name at %CExpected register or constant integer.Expected right parenthesisExpected scalar initialization expression at %CExpected scalar intrinsic expression at %L in atomic comparisonExpected scalar intrinsic variable at %L in atomic comparisonExpected specific binding name at %CExpected stringExpected structure component name at %CExpected structure component or operator name after %<.%> at %CExpected terminating name at %CExpected trait-property-extension at %CExpected type-bound procedure or procedure pointer component at %CExpected variable list at %CExpected variable name at %CExpected variable name at %C in PARAMETER statementExpected variable name in %s locality spec at %LExpected variable name in reduction list at %CExpecting %<END INTERFACE %s%> at %CExpecting %<END INTERFACE OPERATOR (%s)%> at %CExpecting %<END INTERFACE OPERATOR (%s)%> at %C, but got %qsExpecting %<END INTERFACE OPERATOR (.%s.)%> at %CExpecting %s at %CExpecting %s statement at %LExpecting a comma in EQUIVALENCE at %CExpecting a scalar INTEGER expression at %C, found %sExpecting a variable at %LExpecting definable entity near %LExpecting list of named entities at %CExpecting variable in READ statement at %CExpecting variable or io-implied-do at %LExpecting variable or io-implied-do in READ statement at %LExperimental unsigned numbers.Explicit array shape at %C must be constant of INTEGER type and not %s typeExplicit interface required for %qs at %L: %sExplicit interface required for component %qs at %L: %sExplicit interface required for polymorphic argument at %LExplicit shaped array with nonconstant bounds at %CExport functions even if they can be inlined.Expression at %L in this context must be constantExpression at %L must be of INTEGER type, found %sExpression at %L must be scalarExpression in CASE selector at %L cannot be %sExpression in CASE selector at %L must be scalarExpression in CASE statement at %L is not in the range of %sExpression in CASE statement at %L must be of kind %dExpression in CASE statement at %L must be of type %sExpression in CASE statement at %L must be scalarExpression in STAT= at %C must not be coindexedExpression is a noninteroperable derived typeExpression is polymorphicExtension to use a non-C_Bool-kind LOGICALExtension to use a non-C_CHAR-kind CHARACTERExtension: %s specifier in %s statement at %L has value %qsExtension: Conversion from %s to %s at %LExtension: Scalar non-default-kind, non-C_CHAR-kind CHARACTER actual argument with array dummy argument %qs at %LExtension: Unary operator following arithmetic operator (use parentheses) at %CExtension: Zero width after L descriptor at %LExtension: backslash character at %CExtension: exponent-letter %<q%> in real-literal-constant at %CExternal %qs at %L cannot have an initializerExternal IO UNIT cannot be an array at %LExternal object %qs at %L may not have an initializerExtra option to %<-Xassembler%>: %s, dropping all %<-Xassembler%> and %<-Wa%> options.Extraneous characters in format at %LF2008: C1210 IMPORT statement at %C is not permitted in a module procedure interface bodyFAIL IMAGE statement at %CFAILED= argument to NUM_IMAGES at %LFDPIC mode is not supported in Thumb-1 modeFINAL clause at %L requires a scalar LOGICAL expressionFINAL declaration at %C must be inside CONTAINSFINAL declaration at %C must be inside a derived type CONTAINS sectionFINAL procedure %qs at %L is not a SUBROUTINEFINAL procedure %qs declared at %L has the same rank (%d) as %qsFINAL procedure at %L must have exactly one argumentFINAL procedure at %L with assumed rank argument must be the only finalizer with the same kind/type (F2018: C790)FINAL procedure declaration at %CFLUSH statement at %CFORALL construct at %LFORALL end expression at %L must be a scalar INTEGERFORALL index %qs may not appear in triplet specification at %LFORALL index-name at %L must be a scalar INTEGERFORALL index-name at %L must be a scalar variable of type integerFORALL mask clause at %L requires a scalar LOGICAL expressionFORALL start expression at %L must be a scalar INTEGERFORALL stride expression at %L cannot be zeroFORALL stride expression at %L must be a scalar %sFORM TEAM statement at %CFORMAT label %d at %L not definedFORMAT statement at %C cannot appear within an INTERFACEFORMAT statement at %L does not have a statement labelFORMAT tag at %L cannot be a zero-sized arrayFORMAT tag at %L must be of type default-kind CHARACTER or of INTEGERFP exceptions are enabled.FP registers might be clobbered despite %qE attribute: compile with %<-mgeneral-regs-only%>FPTR argument at %L to C_F_POINTER shall not be polymorphicFPTR argument to C_F_POINTER at %L is a function returning a pointerFPU types of LoongArch:FPX fast and compact options cannot be specified togetherFPX: Enable Argonaut ARC CPU Double Precision Floating Point extensions.FPX: Generate Double Precision FPX (compact) instructions.FPX: Generate Double Precision FPX (fast) instructions.FPX: Generate Single Precision FPX (compact) instructions.FPX: Generate Single Precision FPX (fast) instructions.FROMPOS argument (%ld) out of range 0:%d in intrinsic MVBITSFROMPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsic MVBITSFUNCTION result %s cannot be ALLOCATABLE in FUNCTION %s at %LFUNCTION result %s cannot be a POINTER in FUNCTION %s at %LFUNCTION result %s cannot be an array in FUNCTION %s at %LFUNCTION result %s cannot be of type %s in FUNCTION %s at %LFactor complex constructors and destructors to favor space over speed.Failed to create structure type '%s' at %CFailed to match clause at %CFailure getting length of a constant array.Failure in conversion of BOZ to REAL at %LFatal ErrorFile %qs is being included recursivelyFile %qs opened at %C is not a GNU Fortran module fileFile for output dependency information.Finalizable type not permitted for %qs in %s locality-spec at %LFine grain control of tune features.First argument of defined assignment at %L must be INTENT(OUT) or INTENT(INOUT)First argument of operator interface at %L cannot be optionalFirst argument of operator interface at %L must be INTENT(IN)First or last !$OMP ATOMIC intrinsic argument must be %qs at %LFix min_int calculationFixed line length must be at least sevenFlag %<-fmax-stack-var-size=%d%> overwrites %<-frecursive%> implied by %qsFlag %<-fno-automatic%> overwrites %<-fmax-stack-var-size=%d%>Flag %<-fno-automatic%> overwrites %<-frecursive%>Flag %<-fno-automatic%> overwrites %<-frecursive%> implied by %qsFlag %<-frecursive%> overwrites %<-fmax-stack-var-size=%d%>Fold calls to simple inline functions.Fold instructions calculating memory offsets to the memory access instruction if possible.Follow Renesas (formerly Hitachi) / SuperH calling conventions.Follow the C++17 evaluation order requirements for assignment expressions, shift, member function calls, etc.Follow the EABI linkage requirements.For !$OMP ATOMIC COMPARE, the first operand in comparison at %L must be the variable %qs that the update statement writes into at %LFor -f*-prefix-map= options compare canonicalized pathnames rather than just strings.For dummy procedure %s, no binding name is allowed in BIND(C) at %CFor intrinsics library: pass all parameters in registers.For nested functions on stack executable permission is set.For range-based %<adjust_args%>, a constant positive scalar integer expression is required at %LFor shift operations by a constant amount, which require an individual instruction to shift by one position, set the maximum number of inline shift instructions (maximum value 64) to emit instead of using the corresponding __mspabi helper function. The default value is 4.For targets that normally need trampolines for nested functions, always generate them instead of using descriptors.For the assembler (and linker) permit any architecture sub-variant to be used without error.Forbid performing fp-as-gp optimization.Forbid using $fp to access static and global variables.  This option strictly forbids fp-as-gp optimization regardless of '-mforce-fp-as-gp'.Force all calls to be made via a jli instruction.Force assembly output to always use hex constants.Force bitfield accesses to match their type width.Force creation of temporary to test infrequently-executed forall code.Force disable hardware loop, even use -mext-dsp.Force functions to be aligned to a 4 byte boundary.Force generation of external symbol indirection stubs.Force indirect call and jump via register.Force performing fp-as-gp optimization.Force the underlying type for "wchar_t" to be "unsigned short".Force the usage of delay slots for conditional branches.Force the use of SLP when vectorizing, fail if not possible.Format statement in module main block at %CFortran 2003: %s specifier in %s statement at %L has value %qsFortran 2003: Character for %qs argument of %qs intrinsic at %LFortran 2003: DT format specifier not allowed at %CFortran 2003: Scalar CHARACTER actual argument with array dummy argument %qs at %LFortran 2008 obsolescent feature:Fortran 2008: COMMON block %qs with binding label at %L sharing the identifier with global non-COMMON-block entity at %LFortran 2008: Non-pointer actual argument at %L to pointer dummy %qsFortran 2008: Null pointer at %L to non-pointer dummy %qsFortran 2008: Pointer functions in variable definition context (%s) at %LFortran 2008: Semicolon at %C without preceding statementFortran 2018 deleted feature:Fortran 2018 obsolescent feature:Fortran 2018:Fortran 2023:Fortran 95 requires default INTEGER in %s tag at %LFound no matching specific binding for the call to the GENERIC %qs at %LFree line length must be at least threeFunction %qs as initialization expression at %LFunction %qs at %L cannot be called recursively, as it is not RECURSIVEFunction %qs at %L cannot have an initializerFunction %qs at %L has no IMPLICIT typeFunction %qs at %L has no IMPLICIT type; did you mean %qs?Function %qs at %L is INTRINSIC but is not compatible with an intrinsicFunction %qs at %L must be PUREFunction %qs in initialization expression at %L must be an intrinsic functionFunction %qs is declared CHARACTER(*) and cannot be used at %L since it is not a dummy argumentFunction %qs requires an argument list at %CFunction %s at %L has entries with mismatched array specificationsFunction %s at %L has entry %s with mismatched characteristicsFunction %s at %L with entries returning variables of different string lengthsFunction Multi Versioning support is experimental, and the behavior is likely to changeFunction not found.Function result %qs at %L cannot have an initializerFunction result %qs at %L has no IMPLICIT typeFunction result %qs at %L is invalid as X argument to C_FUNLOCFunction result %qs at %L shall not be a coarray or have a coarray componentFunction result %qs is invalid as proc-target in procedure pointer assignment at %LFunction result variable %qs at %L of elemental function %qs shall not have an ALLOCATABLE or POINTER attributeFunction starts are aligned to this power of 2.Functions which return values must end with return statements.Fuse certain integer operations together for better performance on power10.Fuse certain integer operations together for better performance on power8.GCC cannot support operators with integer types and fixed-point types that have too many integral and fractional bits togetherGCC does not currently support a simdclone with simdlens %wd and %wd for these types.GCC does not currently support argument type %qT for simdGCC does not currently support return type %qT for simdGCC does not currently support simdlen %wd for type %qTGCC is not configured to support %qs as %<-foffload=%> argumentGCC must be configured with %<--enable-newlib-nano-formatted-io%> to use %<-mtiny-printf%>GCC supports only %u nested scopesGCC vector passed by reference: non-standard ABI extension with no compatibility guaranteeGCC vector returned by reference: non-standard ABI extension with no compatibility guaranteeGCC was built without library support for %<-march=%s%>; consider compiling for the associated generic architecture %<-march=%s%> insteadGCC_OFFLOAD_OMP_REQUIRES_FILE unsetGCN GPU type to use:GCSE disabledGENERIC %qs at %L cannot overwrite specific binding with the same nameGENERIC %qs at %L must target a specific binding, %qs is GENERIC, tooGENERIC at %C must be inside a derived-type CONTAINSGENERIC binding at %CGENERIC procedure %qs is not allowed as an actual argument at %LGMP version %s, MPFR version %s, MPC version %s, isl version %s
! GNU C no longer supports -traditional without -EGNU Extension:GNU Objective C no longer supports traditional compilationGNU-style attribute between label and declaration appertains to the labelGOTO statement at %L leaves CRITICAL construct for label at %LGOTO statement at %L leaves DO CONCURRENT construct for label at %LGarbage after PARAMETERIZED TYPE declaration at %CGenerate (do not generate) MMA instructions.Generate (do not generate) code that uses the LXVKQ instruction.Generate (do not generate) code that uses the XXSPLTIDP instruction.Generate (do not generate) code that uses the XXSPLTIW instruction.Generate (do not generate) pc-relative memory addressing.Generate (do not generate) pc-relative memory optimizations for externals.Generate (do not generate) prefixed memory instructions.Generate 16-bit instructions.Generate 16bit i386 code.Generate 32-bit code.Generate 32-bit offsets in switch tables.Generate 32bit i386 code.Generate 32bit x86-64 code.Generate 32x16 multiply and mac instructions.Generate 64-bit code.Generate 64bit x86-64 code.Generate APCS conformant stack frames.Generate ARCompact 32-bit code for ARC600 processor.Generate ARCompact 32-bit code for ARC601 processor.Generate ARCompact 32-bit code for ARC700 processor.Generate AT&T-style stubs for Mach-O.Generate BTF debug information at default level.Generate C header of platform-specific features.Generate C prototypes from BIND(C) declarations.Generate C prototypes from non-BIND(C) external procedure definitions.Generate C++ Module dependency information.Generate C-SKY FPU double float instructions (default for hard float).Generate CTF debug information at default level.Generate DFLOAT double-precision code.Generate DSP extension instructions.Generate DWARF pubnames and pubtypes sections with GNU extensions.Generate DWARF pubnames and pubtypes sections.Generate ELF FDPIC code.Generate GFLOAT double-precision code.Generate H8/300H code.Generate H8S code.Generate H8S/2600 code.Generate H8SX code.Generate ILP32 code.Generate IT blocks appropriate for ARMv8.Generate JSON file.Generate LP64 code.Generate MIPS16 code.Generate ModuleInfo struct for output module.Generate PA1.0 code.Generate PA1.1 code.Generate PA2.0 code (requires binutils 2.10 or later).Generate SH1 code.Generate SH2 code.Generate SH2a FPU-less code.Generate SH2e code.Generate SH3 code.Generate SH3e code.Generate SH4 FPU-less code.Generate SH4 code.Generate SH4-100 FPU-less code.Generate SH4-100 code.Generate SH4-200 FPU-less code.Generate SH4-200 code.Generate SH4-300 FPU-less code.Generate SH4-300 code.Generate SH4a FPU-less code.Generate SH4a code.Generate SH4al-dsp code.Generate SIMD clones for functions with the OpenMP declare target directive.Generate VRSAVE instructions when generating AltiVec code.Generate __mcount_loc section with all _mcount and __fentry__ calls.Generate __mcount_loc section with all mcount or __fentry__ calls.Generate a #line directive pointing at the current working directory.Generate a Mach-O bundle (file type MH_BUNDLE).Generate a __return_loc section pointing to all return instrumentation code.Generate a call to abort if a noreturn function returns.Generate a default D main() function when compiling.Generate a single exit point for each function.Generate absolute source path names for gcov.Generate aggregate parameter passing code with at most 64-bit alignment.Generate all necessary information for BPF Compile Once - Run Everywhere.Generate an output executable that binds symbols on load, rather than lazily.Generate approximate reciprocal divide and square root for better throughput.Generate assembler output that is compatible with the Renesas AS100 assembler.  This may restrict some of the compiler's capabilities.  The default is to generate GAS compatible syntax.Generate auto-inc/dec instructions.Generate big endian code.Generate big-endian code.Generate big-endian eBPF.Generate bit instructions.Generate call insns as direct calls.Generate call insns as indirect calls, if necessary.Generate call insns as indirect calls.Generate call insns as register indirect calls.Generate cld instruction in the function prologue.Generate code for C-SKY compiler runtime instead of libgcc.Generate code for GNU as.Generate code for GNU assembler (gas).Generate code for GNU ld.Generate code for GNU runtime environment.Generate code for NeXT (Apple macOS) runtime environment.Generate code for OpenMP offloading: enables -msoft-stack and -muniform-simt.Generate code for SH4 340 series (MMU/FPU-less).Generate code for SH4 400 series (MMU/FPU-less).Generate code for SH4 500 series (FPU-less).Generate code for Smart Mode.Generate code for Thumb state.Generate code for UNIX assembler.Generate code for a 32-bit ABI.Generate code for a 5206e.Generate code for a 520X.Generate code for a 528x.Generate code for a 5307.Generate code for a 5407.Generate code for a 64-bit ABI.Generate code for a 68000.Generate code for a 68010.Generate code for a 68020.Generate code for a 68030.Generate code for a 68040, without any new instructions.Generate code for a 68040.Generate code for a 68060, without any new instructions.Generate code for a 68060.Generate code for a 68302.Generate code for a 68332.Generate code for a 68851.Generate code for a ColdFire v4e.Generate code for a DLL.Generate code for a Fido A.Generate code for a cpu32.Generate code for all template instantiations.Generate code for an 11/10.Generate code for an 11/40.Generate code for an 11/45.Generate code for assert contracts.Generate code for class invariant contracts.Generate code for darwin loadable kernel extensions.Generate code for functions even if they are fully inlined.Generate code for given CPU.Generate code for old exec BSS PLT.Generate code for postcondition contracts.Generate code for precondition contracts.Generate code for static functions even if they are never called.Generate code for switches without a default case.Generate code for the Android platform.Generate code for the M*Core M210.Generate code for the M*Core M340.Generate code for the kernel or loadable kernel extensions.Generate code for the supervisor mode (default).Generate code for the user mode.Generate code in 32 bit ARM state.Generate code in big endian mode.Generate code in big-endian mode.Generate code in little endian mode.Generate code in little-endian mode.Generate code suitable for executables (NOT shared libs).Generate code suitable for fast turn around debugging.Generate code that can be used in SVR4-style dynamic objects.Generate code that can keep local state uniform across all lanes.Generate code that conforms to Intel MCU psABI.Generate code that conforms to the given ABI.Generate code that conforms to the specified ABI.Generate code that is link-compatible with MIPS16 and microMIPS code.Generate code that uses 68881 floating-point instructions.Generate code that will run in privileged state.Generate code that won't be linked against any other ID shared libraries, but may be used as a shared library.Generate code to check bounds before indexing arrays.Generate code to check exception specifications.Generate code to mitigate against straight line speculation.Generate code to track when the CPU might be speculating incorrectly.Generate code to use a non-exec PLT and GOT.Generate code using global anchor symbol addresses.Generate code which uses hardware floating point instructions.Generate code which uses only the general registers.Generate code which uses the core registers only (r0-r14).Generate code with library calls for floating point.Generate code with unaligned load store for R6 (alias of -mno-strict-align).Generate code without GP reg.Generate compile-time CFString objects.Generate compressed debug sections.Generate conditional move instructions.Generate constant pools in the compiler instead of assembler.Generate cpp defines for server IO.Generate cpp defines for workstation IO.Generate debug information in CodeView format.Generate debug information in DWARF v2 (or later) format.Generate debug information in VMS format.Generate debug information in default extended format.Generate debug information in default format.Generate debug information in default version of DWARF format.Generate debug information in separate .dwo files.Generate default double-precision SH2a-FPU code.Generate default single-precision SH2a-FPU code.Generate default single-precision SH4 code.Generate default single-precision SH4-100 code.Generate default single-precision SH4-200 code.Generate default single-precision SH4-300 code.Generate default single-precision SH4a code.Generate discontiguous stack frames.Generate divide instructions.Generate divide results with reminder having the same sign as the divisor (not the dividend).Generate documentation.Generate double-precision floating-point instructions.Generate extended arithmetic instructions, only valid for ARC700.Generate extended entry point information for inlined functions.Generate fast indirect calls.Generate floating point mathematics using given instruction set.Generate floating-point multiply-accumulation instructions.Generate frecipd/fsqrtd/fdivd instructions (default for hard float).Generate hardware abs instructions.Generate inline floating point division, optimize for latency.Generate inline floating point division, optimize for throughput.Generate inline integer division, optimize for latency.Generate inline integer division, optimize for throughput.Generate inline square root, optimize for latency.Generate inline square root, optimize for throughput.Generate instructions supported by barrel shifter.Generate isel instructions.Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode.Generate libcalls for atomic loads and stores when sync libcalls are disabled.Generate little endian code.Generate little-endian code.Generate little-endian eBPF.Generate load/store multiple instructions.Generate load/store with update instructions.Generate local calls to out-of-line atomic operations.Generate make dependencies and compile.Generate make dependencies.Generate mcount/__fentry__ calls as nops. To activate they need to be patched in.Generate millicode thunks.Generate mul64 and mulu64 instructions.Generate norm instruction.Generate normal-mode code.Generate only single-precision SH2a-FPU code.Generate only single-precision SH4 code.Generate only single-precision SH4-100 code.Generate only single-precision SH4-200 code.Generate only single-precision SH4-300 code.Generate only single-precision SH4a code.Generate pc-relative code.Generate performance extension instructions.Generate performance extension version 2 instructions.Generate phony targets for all headers.Generate position-independent code for executables if possible (large mode).Generate position-independent code for executables if possible (small mode).Generate position-independent code if possible (large mode).Generate position-independent code if possible (small mode).Generate prefetch instructions, if available, for arrays in loops.Generate pruned BTF when emitting BTF info.Generate push/pop instructions (default).Generate re-entrant, PIC code.Generate reciprocals instead of divss and sqrtss.Generate return instruction in naked function.Generate run time type descriptor information.Generate sdata references.  This is the default, unless you compile for PIC.Generate sections .s390_indirect_jump, .s390_indirect_call, .s390_return_reg, and .s390_return_mem to contain the indirect branch locations which have been patched as part of using one of the -mindirect-branch* or -mfunction-return* options.  The sections consist of an array of 32 bit elements. Each entry holds the offset from the entry to the patched location.Generate self-relocatable code.Generate sin, cos, sqrt for FPU.Generate single-precision floating-point instructions.Generate software reciprocal divide and square root for better throughput.Generate special Objective-C methods to initialize/destroy non-POD C++ ivars, if needed.Generate stm/ldm instructions (default).Generate string extension instructions.Generate swap instruction.Generate the integer modulo instructions.Generate the quad word memory atomic instructions (lqarx/stqcx).Generate the quad word memory instructions (lq/stq).Generate unaligned VSX load/store for inline expansion of memcpy/memmove.Generate unaligned VSX vector pair load/store for inline expansion of memcpy/memmove.Generate unwind tables that are exact at each instruction boundary.Generate v3 push25/pop25 instructions.Generate vzeroupper instruction before a transfer of control flow out of the function.Generate xBPF.Generated loop of UNROLL construct at %L without PARTIAL clause does not have canonical formGeneric function %qs at %L is not consistent with a specific intrinsic interfaceGeneric name %qs of function %qs at %L being the same name as derived type at %LGeneric subroutine %qs at %L is not consistent with an intrinsic subroutine interfaceGive branches their default cost.Give external symbols a leading underscore.Global binding name %qs at %L is already being used as a %s at %LGlobal binding name %qs at %L is already being used at %LGlobal declarative %s for %sGlobal entity %qs at %L cannot appear in a COMMON blockGlobal entity %qs at %L cannot appear in a COMMON block at %LGlobal name %qs at %L is already being used as a %s at %LGlobal name %qs at %L is already being used at %LGot unknown attribute %<target("%s")%>Graphite loop optimizations cannot be used (isl is not available) (%<-fgraphite%>, %<-fgraphite-identity%>, %<-floop-nest-optimize%>, %<-floop-parallelize-all%>)Graphite loop optimizations cannot be used (isl is not available).Guide linker to relax instructions.HOLDS expression at %L must be a scalar logical expressionHandle OpenMP allocators for allocatables and pointers.Handle atomic builtins that may be applied to unaligned data by calling library functions. Overrides -mtrap-unaligned-atomic.Harden conditional branches by checking reversed conditions.Harden conditionals not used in branches, checking reversed conditions.Harden control flow by recording and checking execution paths.Hardware autoprefetcher scheduler model control flag.  Number of lookahead cycles the model looks into, at '0' only enable instruction sorting heuristic.  Disabled by default.Hexadecimal constant at %L uses nonstandard X instead of ZHollerith constant at %CHost associated variable %qs may not be in the DATA statement at %CHow much can given compilation unit grow because of the inlining (in percent).How much can given compilation unit grow because of the interprocedural constant propagation (in percent).I don't know how to MOVE an alphabetical string to %s(%s) 
! I/O register operand for '%%%c'IBITS: Bad bitICE: %<emit_insn%> used where %<emit_jump_insn%> needed:ID of shared library to build.ID shared libraries and FD-PIC mode cannot be used togetherIEEE_ARITHMETIC module at %CIEEE_EXCEPTIONS module at %CIEEE_FEATURES module at %CIF clause at %L requires a scalar LOGICAL expressionIF clause modifier %s at %L not appropriate for the current OpenMP constructIF clause without modifier at %L used together with IF clauses with modifiersILP32E ABI does not support the %qc extensionIM part_ref at %CIMPLICIT NONE (type) statement at %L following an IMPLICIT statementIMPLICIT NONE with spec list at %CIMPLICIT statement at %C following an IMPLICIT NONE (type) statementIMPORT statement at %CIMPORT statement at %C only permitted in an INTERFACE bodyIMPURE procedure at %CINDIRECT clause at %C requires a constant logical expressionINQUIRE statement at %L cannot contain both FILE and UNIT specifiersINQUIRE statement at %L requires a PENDING= specifier with the ID= specifierINQUIRE statement at %L requires either FILE or UNIT specifierINQUIRE statement not allowed in PURE procedure at %CINTEGER expression of %s clause at %L must be non-negativeINTEGER expression of %s clause at %L must be positiveINTEGER expression of SCHEDULE clause's chunk_size at %L must be positiveINTEGER(KIND=8) is not available for %<-fdefault-integer-8%> optionINTEGER(KIND=8) is not available for %<-finteger-4-integer-8%> optionINTENT (%s) conflicts with INTENT(%s) at %LINTENT is not allowed inside of BLOCK at %CINTENT(%s) actual argument at %L might interfere with actual argument at %L.INTENT(IN) POINTER %qs in %s clause at %LINTENT(IN) POINTER %qs in COPYPRIVATE clause at %LINTENT(OUT) argument %qs of pure procedure %qs at %L may not be polymorphicINTERFACE procedure %qs at %L has the same name as the enclosing procedureIO UNIT in %s statement at %L must be an internal file in a PURE procedureIOLENGTH tag invalid in INQUIRE statement at %CIOMSG tag at %LIPA modref summary is missing in input fileIPA-SRA access verification failedISA %qs is not supported in %<target%> attribute, use %<arch=%> syntaxISO C does not allow %<%E (expression)%>ISO C does not allow extra %<;%> outside of a functionISO C does not permit %<_Alignof%> applied to a function typeISO C does not support %<#pragma STDC FLOAT_CONST_DECIMAL64%>ISO C does not support %<%s_BitInt(%d)%> before C23ISO C does not support %<++%> and %<--%> on complex types before C2YISO C does not support %<[[]]%> attributes before C23ISO C does not support %<_Generic%> association with function type before C2YISO C does not support %<_Generic%> association with incomplete type before C2YISO C does not support %<__int%d%> typesISO C does not support %<auto%> type deduction before C23ISO C does not support %<~%> for complex conjugationISO C does not support %qs before C23ISO C does not support %qs predefined identifierISO C does not support %qs statement with an identifier operand before C2YISO C does not support complex integer typesISO C does not support decimal floating-point before C23ISO C does not support fixed-point typesISO C does not support if declarations before C2YISO C does not support omitting parameter names in function definitions before C23ISO C does not support plain %<complex%> meaning %<double complex%>ISO C does not support range expressions in switch statements before C2YISO C does not support saturating typesISO C does not support specifying %<enum%> underlying types before C23ISO C does not support the %<_Float%d%s%> type before C23ISO C does not support use of type name as %<_Generic%> controlling operand before C2YISO C forbids %<goto *expr;%>ISO C forbids %<return%> with expression, in function returning voidISO C forbids an empty translation unitISO C forbids assignment between function pointer and %<void *%>ISO C forbids braced-groups within expressionsISO C forbids casting nonscalar to the same typeISO C forbids casts to union typeISO C forbids comparison of %<void *%> with function pointerISO C forbids conditional expr between %<void *%> and function pointerISO C forbids conditional expr with only one void sideISO C forbids const or volatile function typesISO C forbids conversion of function pointer to object pointer typeISO C forbids conversion of object pointer to function pointer typeISO C forbids empty initializer braces before C23ISO C forbids forward parameter declarationsISO C forbids forward references to %<enum%> typesISO C forbids initialization between function pointer and %<void *%>ISO C forbids label declarationsISO C forbids member declarations with no membersISO C forbids nested functionsISO C forbids omitting the middle term of a %<?:%> expressionISO C forbids ordered comparisons of pointers to functionsISO C forbids passing argument %d of %qE between function pointer and %<void *%>ISO C forbids qualified function typesISO C forbids return between function pointer and %<void *%>ISO C forbids specifying range of elements to initializeISO C forbids storage class specifiers in compound literals before C23ISO C forbids subscripting %<register%> arrayISO C forbids zero-size arrayISO C forbids zero-size array %qEISO C prohibits argument conversion to union typeISO C requires a named argument before %<...%> before C23ISO C restricts enumerator values to range of %<int%> before C23ISO C++ %qE attribute does not apply to functions; treating as %<[[gnu::%E]]%>ISO C++ 1998 does not support %<long long%>ISO C++ 1998 forbids the use of %<extern%> on explicit instantiationsISO C++ allows bit-field attributes only before the %<:%> tokenISO C++ did not adopt string literal operator templates taking an argument pack of charactersISO C++ does not allow %<?:%> with omitted middle operandISO C++ does not allow %<alignof%> with a non-typeISO C++ does not allow C99 designated initializersISO C++ does not allow GNU designated initializersISO C++ does not allow converting to %qH from %qI with greater conversion rankISO C++ does not allow converting to %qH from %qI with unordered conversion rankISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>ISO C++ does not permit %<alignof%> applied to a function typeISO C++ does not support %<__int%d%> for %qsISO C++ does not support plain %<complex%> meaning %<double complex%>ISO C++ forbids applying %<__alignof%> to an expression of function typeISO C++ forbids applying %<sizeof%> to an expression of function typeISO C++ forbids braced-groups within expressionsISO C++ forbids calling %<::main%> from within programISO C++ forbids casting to an array type %qTISO C++ forbids comparison between pointer and integerISO C++ forbids comparison between pointer of type %<void *%> and pointer-to-functionISO C++ forbids compound-literalsISO C++ forbids computed gotosISO C++ forbids conditional expression between pointer of type %<void *%> and pointer-to-functionISO C++ forbids conversion between pointer of type %<void *%> and pointer-to-functionISO C++ forbids converting a string constant to %qTISO C++ forbids declaration of %qs with no typeISO C++ forbids decrementing a pointer of type %qTISO C++ forbids decrementing an enumISO C++ forbids empty unnamed enumISO C++ forbids flexible array member %qsISO C++ forbids flexible array membersISO C++ forbids in-class initialization of non-const static member %qDISO C++ forbids incrementing a pointer of type %qTISO C++ forbids incrementing an enumISO C++ forbids initialization of member constant %qD of non-integral type %qTISO C++ forbids nested type %qD with same name as enclosing classISO C++ forbids omitting the middle term of a %<?:%> expressionISO C++ forbids taking address of function %<::main%>ISO C++ forbids taking the address of a bound member function to form a pointer to explicit object member functionISO C++ forbids taking the address of a bound member function to form a pointer to member function.  Say %<&%T::%D%>ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to explicit object member functionISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to explicit object member function.ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function.  Say %<&%T::%D%>ISO C++ forbids the use of %qE on explicit instantiationsISO C++ forbids typename key in template template parameter; use %<-std=c++17%> or %<-std=gnu++17%>ISO C++ forbids using a floating-point literal in a constant-expressionISO C++ forbids using pointer of type %<void *%> in subtractionISO C++ forbids using pointer to a function in subtractionISO C++ forbids using pointer to a method in subtractionISO C++ forbids variable length arrayISO C++ forbids variable length array %qDISO C++ forbids zero-size arrayISO C++ forbids zero-size array %qDISO C++ prohibits anonymous structsISO C++ prohibits overloading %<operator ?:%>ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:ISO C++17 does not allow %<register%> storage class specifierISO C++17 does not allow dynamic exception specificationsISO C11 does not support omitting the string in %qEISO C23 does not allow arguments for function %qE declared without parametersISO C23 does not allow arguments for method %qE declared without parametersISO C23 does not allow defining parameters for function %qE declared without parametersISO C90 does not support %<[*]%> array declaratorsISO C90 does not support %<_Generic%>ISO C90 does not support %<_Noreturn%>ISO C90 does not support %<__func__%> predefined identifierISO C90 does not support %<for%> loop initial declarationsISO C90 does not support %<long long%>ISO C90 does not support %<static%> or type qualifiers in parameter array declaratorsISO C90 does not support %qEISO C90 does not support boolean typesISO C90 does not support complex typesISO C90 does not support flexible array membersISO C90 does not support the %<_Atomic%> qualifierISO C90 doesn%'t support unnamed structs/unionsISO C90 forbids array %qE whose size cannot be evaluatedISO C90 forbids array whose size cannot be evaluatedISO C90 forbids compound literalsISO C90 forbids mixed declarations and codeISO C90 forbids specifying subobject to initializeISO C90 forbids subscripting non-lvalue arrayISO C90 forbids variable length arrayISO C90 forbids variable length array %qEISO C99 does not support %<_Generic%>ISO C99 does not support %<_Noreturn%>ISO C99 does not support %qEISO C99 does not support the %<_Atomic%> qualifierISO C99 doesn%'t support unnamed structs/unionsISO_C_BINDING module at %CISO_FORTRAN_ENV intrinsic module at %CITERATOR may not be combined with SINK at %CITERATOR may not be combined with SOURCE at %CIf -ftree-vectorize is used, the minimal loop bound of a loop to be considered for vectorization.If -fvariable-expansion-in-unroller is used, the maximum number of times that an individual variable will be expanded during loop unrolling.If bounds remapping is specified at %L, the pointer target shall not be NULLIf first argument of ATAN2 at %L is zero, then the second argument must not be zeroIf first argument of ATAN2D at %L is zero, then the second argument must not be zeroIf number of candidates in the set is smaller, we always try to remove unused ivs during its optimization.If scheduling post reload, do superblock scheduling.Ignore 'D' in column one in fixed form.Ignore dllimport for functions.Ignore the normal two-level namespace; resolve symbols in command line order and do not record which library provided the resolved symbol.Ignore unsupported pragmas.Ignored, but preserved for backward compatibility.Ignored, but preserved for backward compatibility.  Only 64-bit ABI is supported.Ignored.Ignoring %<!$omx%> vendor-extension sentinel at %CIllegal allocate-object at %C for a PURE procedureIllegal assignment to external procedure at %LIllegal character in BOZ constant at %CIllegal coarray indexIllegal id in copy_walk_reduction_argIllegal preprocessor directiveIllegal reference type at %L as EQUIVALENCE objectIllegal stride of zero at %LIllegal type in character concatenation at %LImage control statement %s at %C in CRITICAL blockImage control statement %s at %C in DO CONCURRENT blockImage control statement %s at %C in PURE procedureImage control statement CRITICAL at %C in DO CONCURRENT blockImage control statement CRITICAL at %C in PURE procedureImage control statement EVENT %s at %C in CRITICAL blockImage control statement EVENT %s at %C in DO CONCURRENT blockImage control statement EVENT %s at %C in PURE procedureImage control statement RETURN at %C in CRITICAL blockImage control statement RETURN at %C in DO CONCURRENT blockImage control statement STOP at %C in CRITICAL blockImage control statement STOP at %C in DO CONCURRENT blockImage control statement SYNC at %C in CRITICAL blockImage control statement SYNC at %C in DO CONCURRENT blockImage control statement SYNC at %C in PURE procedureImageset argument at %L must be a scalar or rank-1 INTEGER expressionImageset argument at %L must between 1 and num_images()Imperfectly nested loop using generated loopsImplement 'in' contracts of overridden methods to be a superset of parent contract.Implement 'in' parameters to mean scope const.Implement C++17 inheriting constructor semantics.Implement D bit-fields.Implement DIP1000: Scoped pointers.Implement DIP1008: Allow exceptions in @nogc code.Implement DIP1021: Mutable function arguments.Implement P2564 for consteval propagation.Implement __atomic operations via libcalls to legacy __sync functions.Implement resolution of DR 150 for matching of template template arguments.Implicitly declared BIND(C) function %qs at %L may not be C interoperableImplicitly declared BIND(C) variable %qs at %L may not be C interoperableImplicitly declared function %s used in !$OMP DECLARE REDUCTION at %LImplicitly declared subroutine %s used in !$OMP DECLARE REDUCTION at %LImplicitly declared variable %qs at %L may not be C interoperable but it is a dummy argument to the BIND(C) procedure %qs at %LImplicitly typed PARAMETER %qs at %L doesn't match a later IMPLICIT typeImplied SAVE for module variable %qs at %L, needed due to the default initializationImplied-shape array at %LImpure function %qs at %L might not be evaluatedImpure function at %L might not be evaluatedIn %s at %L procedures must be all FUNCTIONs as the generic name is also the name of a derived typeIn %s at %L procedures must be either all SUBROUTINEs or all FUNCTIONsIn C++, nonzero means warn about deprecated conversion from string literals to 'char *'.  In C, similar warning, except that the conversion is of course not deprecated by the ISO C standard.In Fortran 2003 COMMON %qs block at %L is a global identifier and must thus have the same binding name as the same-named COMMON block at %L: %s vs %sIn SSA-PRE optimization on trees, enable partial-partial redundancy elimination.In a pure subprogram an INTENT(IN) dummy argument shall not be used as the expr at %L of an intrinsic assignment statement in which the variable is of a derived type if the derived type has a pointer component at any level of component selection.In call to %qs at %L, type mismatch in argument %qs; pass %qs to %qsIn constructor %qDIn copy constructor %qDIn destructor %qDIn explicit object member function %qDIn file included fromIn function %qDIn function %qsIn lambda functionIn member function %qDIn member function %qsIn mh_dest_is_float(%s to %s), the move of %s to %s hasn't been implementedIn moduleIn module imported atIn parser_move(%s to %s), the move of FldLiteralN to %s hasn't been implementedIn static member function %qDInclude directory %qs: %sInclude imported modules in the compilation.Included file %qs is not a regular fileIncompatible allocate-object at %C for CHARACTER type-spec at %LIncompatible derived type in PARAMETER at %LIncompatible initialization between a derived type entity and an entity with %qs type at %CIncompatible ranks %d and %d in assignment at %LIncompatible ranks in %s (%d and %d) at %LIncompatible types in DATA statement at %L; attempted conversion of %s to %sIncompatible typespec for array element at %LIncompatible use of TILE and COLLAPSE at %LInconsistent coranks for operator at %L and %LInconsistent equivalence rules involving %qs at %L and %qs at %LInconsistent internal state: No location in expression near %LInconsistent internal state: No location in statementInconsistent ranks for operator at %L and %LInconsistent types for operator at %L and %L: %s and %sIncorrect EH edge %i->%iIncorrect extent in argument B in MATMUL intrinsic in dimension 1: is %ld, should be %ldIncrease the IEEE compliance for floating-point comparisons.Index in dimension %d is out of bounds at %LIndex variable %qs at %L cannot be specified in a locality-specIndex variable %qs not definable as INTENT(INOUT) argument at %L in procedure %qs called from within DO loop at %LIndex variable %qs not definable as INTENT(INOUT) argument at %L in subroutine %qs called from within DO loop at %LIndex variable %qs redefined at %L in procedure %qs called from within DO loop at %LIndex variable %qs set to undefined as INTENT(OUT) argument at %L in procedure %qs called from within DO loop at %LIndex variable %qs set to undefined as INTENT(OUT) argument at %L in subroutine %qs called from within DO loop at %LIndicate how many non memory access vector instructions can be issued per cycle, it's used in unroll factor determination for autovectorizer.  The default value is 4.Indicate priority for r0..r3 / r12..r15 with TARGET_REGISTER_PRIORITY.Inequality comparison for %s at %LInhibit the use of hardware floating point instructions.Initialization at %C is not allowed in a PURE procedureInitialization at %C isn't for a pointer variableInitialization of allocatable component at %C is not allowedInitialization of pointer at %C is not allowed in a PURE procedureInitialization of structure component with a HOLLERITH constant at %L is not allowedInitialization of variable at %C is not allowed in a PURE procedureInitialization string at %L was truncated to fit the variable (%wd/%wd)Initialize components of derived type variables according to other init flags.Initialize local variables to zero (from g77).Initialize ptx registers.Initialized symbol %qs at %C can only be COMMON in BLOCK DATAInitialized variable %qs at %L is in a blank COMMON but initialization is only allowed in named common blocksInitializer not allowed for PARAMETER %qs at %CInitializing already initialized variable at %CInline __atomic operations when a lock free instruction sequence is available.Inline all known string operations.Inline code to invalidate instruction cache entries after setting up nested function trampolines.Inline constants if it can be done in 2 insns or less.Inline memset/memcpy string operations, but perform inline version only for small blocks.Inline recursively only when the probability of call being executed exceeds the parameter.Inline strcmp calls if possible.Inline strlen calls if possible.Inline strncmp calls if possible.Inquiry parameter cannot appear in a data-stmt-object-list at %CInsert ENDBR instruction at function entry only via cf_check attribute for CET instrumentation.Insert NOP instructions at each function entry.Insert arc-based program profiling code.Insert code to probe each page of stack space as it is allocated to protect from stack-clash style attacks.Insert code to profile values of expressions.Insert condition coverage profiling code.Insert path profiling code.Insert relax hint for linker to do relaxation.Insert stack checking code into the program.  Same as -fstack-check=specific.Instruction accounted for function prologue, epilogue and other overhead.Instruction accounted for function thunk overhead.Instructions number above which STFL stall penalty can be compensated.Instrument function entry and exit with profiling calls invoked once.Instrument function entry and exit with profiling calls.Instrument function exit in instrumented functions with __fentry__.Instrument only functions from files whose name does not match any of the regular expressions (separated by semi-colons).Instrument only functions from files whose name matches any of the regular expressions (separated by semi-colons).Integer division truncated to constant %qs at %LInteger expression required at %CInteger kind %d at %C not availableInteger outside symmetric range implied by Standard Fortran at %LInteger outside symmetric range implied by Standard Fortran converting %s to %s at %LInteger overflow when calculating the amount of memory to allocateInteger too big for its kind at %C. This check can be disabled with the option %<-fno-range-check%>Integer too large at %CInteger value too large in expression at %CIntegrate functions into their callers when code size is known not to grow.Integrate functions not declared "inline" into their callers when profitable.Integrate functions only required by their single caller.Intel MCU psABI isn%'t supported in %s modeInterchanging loops at %LInterface %qs at %L is declared in a later PROCEDURE statementInterface %qs at %L may not be a statement functionInterface %qs at %L may not be genericInterface %qs at %L must be explicitInterface mismatch for procedure-pointer component %qs in structure constructor at %L: %sInterface mismatch in dummy procedure %qs at %L: %sInterface mismatch in dummy procedure at %L conflicts with %L: %sInterface mismatch in global procedure %qs at %L: %sInterface mismatch in procedure pointer assignment at %L: %qs is not a subroutineInterface mismatch in procedure pointer assignment at %L: %sInterface must be specified for DEFERRED binding at %CInterface of %qs at %L must be explicitInterface-name expected after %<(%> at %CInternal compiler error:
  Internal file at %L with namelistInternal procedure %qs in %s at %LInternal procedure %qs is invalid in procedure pointer assignment at %LInternal procedure %qs is invalid in procedure pointer initialization at %LInternal procedure %qs is used as actual argument at %LInternal unit with vector subscript at %LInterpret any INTEGER(4) as an INTEGER(8).Interpret any REAL(4) as a REAL(10).Interpret any REAL(4) as a REAL(16).Interpret any REAL(4) as a REAL(8).Interpret any REAL(8) as a REAL(10).Interpret any REAL(8) as a REAL(16).Interpret any REAL(8) as a REAL(4).Interpret imaginary, fixed-point, or other gnu number suffix as the corresponding number literal rather than a user-defined number literal.Interrupt Service Routines cannot be coded in Thumb-1 modeIntersperse literal pools with code in the text section.Interval in which to probe the stack expressed as a power of two in bytes.Interval overlap of %<-fdbg-cnt=%s%>: [%u, %u] and [%u, %u]Intrinsic %<NULL()%> without %<MOLD%> argument at %L passed to assumed-length dummy %qsIntrinsic %<NULL()%> without %<MOLD%> argument at %L passed to assumed-rank dummy %qsIntrinsic %qs (%s) used at %LIntrinsic %qs at %L cannot have an initializerIntrinsic %qs at %L is invalid in procedure pointer assignmentIntrinsic %qs at %L is not allowed as an actual argumentIntrinsic %qs at %L must have at least two argumentsIntrinsic TRANSFER at %L has partly undefined result: source size %zd < result size %zdIntrinsic function %qs (%d) not recognizedIntrinsic function %qs at %L is not permitted in an initialization expressionIntrinsic function %s at %L is not permitted for %sIntrinsic function NULL at %L cannot be an actual argument to STORAGE_SIZE, because it returns a disassociated pointerIntrinsic operator %qs referenced at %L not found in module %qsIntrinsic operator interface at %L must be a FUNCTIONIntrinsic procedure %qs not allowed in PROCEDURE statement at %LIntrinsic procedure at %L cannot be a MODULE PROCEDUREIntrinsic subroutine %qs at %L shall not have a type specifierIntrinsic symbol specified in !$ACC ROUTINE ( NAME ) at %C marked with incompatible GANG, WORKER, or VECTOR clauseIntrinsic symbol specified in !$ACC ROUTINE ( NAME ) at %C marked with incompatible NOHOST clauseInvalid %qs directive at %L in %s clause: declarative, informational, and meta directives not permittedInvalid BOZ literal constant used in subscript at %CInvalid C identifier in NAME= specifier at %CInvalid Hollerith constant at %L contains a wide characterInvalid Hollerith constant: %L must contain at least one characterInvalid Hollerith constant: Integer kind at %L should be defaultInvalid KIND parameter of %s at %LInvalid NAME %qs in !$ACC ROUTINE ( NAME ) at %CInvalid NULL at %LInvalid argument to !$ACC WAIT at %CInvalid array reference at %LInvalid array reference of a non-array entity at %LInvalid association target at %CInvalid character %<$%> at %L. Use %<-fdollar-ok%> to allow it as an extensionInvalid character %qc in variable name at %CInvalid character 0x%s at %CInvalid character in name at %CInvalid character(s) in ELSE statement after %CInvalid clause in module with !$ACC DECLARE at %LInvalid codimension %d at %C, only %d codimensions existInvalid combined or composite directive at %LInvalid context for NULL () intrinsic at %LInvalid context for NULL() pointer at %LInvalid exponent-letter %<q%> in real-literal-constant at %CInvalid expression after %<%s(%> at %CInvalid expression in gfc_element_size.Invalid expression in gfc_target_encode_expr.Invalid expression in gfc_target_interpret_expr.Invalid expression in the structure constructor for pointer component %qs at %L in PURE procedureInvalid form of PROGRAM statement at %CInvalid form of WRITE statement at %L, UNIT requiredInvalid form of array reference at %CInvalid form of coarray reference at %CInvalid image number %d in SYNC IMAGESInvalid initialization expression for ALLOCATABLE component %qs in structure constructor at %LInvalid initializer %s in Data statement at %CInvalid keyword %qs in %qs intrinsic function at %LInvalid kind %d for CHARACTER constant at %CInvalid kind for %s at %LInvalid mixing of IEEE 128-bit and IBM 128-bit floating point typesInvalid old style initialization for derived type component at %CInvalid operator for !$OMP DECLARE REDUCTION %s at %LInvalid procedure argument at %LInvalid procedure pointer assignment at %LInvalid range %s in option %sInvalid real kind %d at %CInvalid standard code on intrinsic %qs (%d)Invalid substring in data-implied-do at %L in DATA statementInvalid type in arithmetic operation at %LInvalid type-spec at %CInvalid use of BOZ literal constant at %LInvalid use of statement function argument at %LInvalid value for %s specification at %CIssue a note when diagnostics are deduplicated.Issue debug information for compiler-generated auxiliary variables.Issue warnings needed for strict compliance to the standard.Iterator step at %L cannot be zeroJSON arrayJSON format version: %s
  JSON literalJSON numberJSON objectJSON stringJump targets are aligned to this power of 2.Junk after ASSOCIATE statement at %CJunk after CALL at %CJunk after GENERIC binding at %CJunk after MAP statement at %CJunk after UNION statement at %CJunk after non-nested STRUCTURE statement at %CJust generate unwind tables for exception handling.Just use icc0/fcc0.KIND attribute at %C in a STRUCTURE definitionKIND attribute at %C in a TYPE definitionKIND parameter of %s at %L must be an initialization expressionKIND part_ref at %CKeyword %qs at %C has already appeared in the current argument listKeyword argument %qs at %L is already associated with another actual argumentKeyword argument %qs at %L is invalid in a statement functionKeyword argument %qs at %L is not in the procedureKeyword argument %qs at %L is not in the procedure; did you mean %qs?Keyword argument requires explicit interface for procedure %qs at %LKeyword argument requires explicit interface for procedure pointer component %qs at %LKind %d is not supported for CHARACTER at %CKind %d not supported for type %s at %CKind type parameter for entity at %L differs from the kind type parameter of the typespecKnown AArch64 ABIs (for use with the -mabi= option):Known ABIs (for use with the -mabi= option):Known ARC CPUs (for use with the -mcpu= option):Known ARM ABIs (for use with the -mabi= option):Known ARM CPUs (for use with the -mcpu= and -mtune= options):Known ARM FPUs (for use with the -mfpu= option):Known ARM architectures (for use with the -march= option):Known C6X ISAs (for use with the -march= option):Known CPUs (for use with the -mcpu= and -mtune= options):Known CSKY CPUs (for use with the -mcpu= options):Known CSKY FPUs (for use with the -mfpu= option):Known CSKY architectures (for use with the -march= option):Known FR-V CPUs (for use with the -mcpu= option):Known IQ2000 CPUs (for use with the -mcpu= option):Known Itanium CPUs (for use with the -mtune= option):Known M68K CPUs (for use with the -mcpu= option):Known M68K ISAs (for use with the -march= option):Known M68K microarchitectures (for use with the -mtune= option):Known MIPS ABIs (for use with the -mabi= option):Known MIPS CPUs (for use with the -march= and -mtune= options):Known MIPS IEEE 754 settings (for use with the -mabs= and -mnan= options):Known MIPS ISA levels (for use with the -mips option):Known PTX ISA target architectures (for use with the -misa= option):Known PTX ISA versions (for use with the -mptx= option):Known TLS dialects (for use with the -mtls-dialect= option):Known __fp16 formats (for use with the -mfp16-format= option):Known address mode (for use with the -maddress-mode= option):Known arch types (for use with the -march= option):Known assembler dialects (for use with the -masm= option)Known assembler dialects (for use with the -masm= option):Known choices for mitigation against straight line speculation with -mharden-sls=:Known choices for return instrumentation with -minstrument-return=:Known cmodel types (for use with the -mcmodel= option):Known cmodel types (for use with the -mict-model= option):Known code model types (for use with the -mcmodel= option):Known code models (for use with the -mcmodel= option):Known cpu types (for use with the -mcpu= option):Known data alignment choices (for use with the -malign-data= option):Known floating-point ABIs (for use with the -mfloat-abi= option):Known floating-point number of registers (for use with the -mconfig-fpu= option):Known indirect branch choices (for use with the -mindirect-branch=/-mfunction-return= options):Known preferred register vector length (to use with the -mprefer-vector-width= option):Known stack protector guard (for use with the -mstack-protector-guard= option):Known vectorization library ABIs (for use with the -mveclibabi= option):L%d cache latency unknown for %sLEN argument (%ld) out of range 0:%d in intrinsic MVBITSLEN argument (%ld) out of range 0:%ld in intrinsic IBITSLEN attribute at %C in a STRUCTURE definitionLEN attribute at %C in a TYPE definitionLEN or KIND inquiry ref in DATA statement at %LLEN part_ref at %CLEVEL 01 (%s) OCCURS has insufficient data.memsizeLHS in %<noreturn%> callLINEAR clause modifier other than VAL used on DO or SIMD construct at %LLINEAR clause modifier used on DO or SIMD construct at %LLINEAR dummy argument %qs with VALUE attribute with %s modifier at %LLINEAR variable %qs must be INTEGER at %LLOCK statement at %CLOCK_EVENT in variable definition context (%s) at %LLOCK_TYPE in variable definition context (%s) at %LLOGICAL dummy argument %qs at %L with non-C_Bool kind in BIND(C) procedure %qsLOGICAL operands are required in expression at %LLOGICAL result variable %qs at %L with non-C_Bool kind in BIND(C) procedure %qsLP64E ABI is marked for deprecation in GCCLTO streaming of toplevel extended %<asm%> unimplementedLTO support has not been enabled in this configurationLabel %d at %C already referenced as a format labelLabel %d at %C already referenced as branch targetLabel %d at %C previously used as a FORMAT labelLabel %d at %C previously used as branch targetLabel %d at %L defined but cannot be usedLabel %d at %L defined but not usedLabel %d referenced at %L is never definedLabel %qs after %L doesn't match IF label %qsLabel %qs at %C doesn't match IF label %qsLabel %qs at %C doesn't match WHERE label %qsLabel at %L is not in the same block as the GOTO statement at %LLabel name %qs at %C is ambiguousLabeled DO statement at %LLeft parenthesis required after %<*%> in format string at %LLegacy Extension:Letter %qc already has an IMPLICIT type at %CLetter %qc already set in IMPLICIT statement at %CLetters must be in alphabetic order in IMPLICIT statement at %CLevel not found, use none, slim, blocks, vops.Lift restrictions on GOT size.Like -M but ignore system header files.Like -MD but ignore system header files.Like -pedantic but issue errors instead of warnings.Like parameter rs6000-density-load-pct-threshold, we also check if the total number of load statements exceeds the threshold specified by this parameter, and penalize only if it's satisfied.  The default value is 20.Like parameter rs6000-density-pct-threshold, we also check the total sum of vec_cost and non vec_cost, and penalize only if the sum exceeds the threshold specified by this parameter.  The default value is 70.Limit how much the autovectorizer may unroll a loop.Limit of %d continuations exceeded in statement at %CLimit on number of alias checks performed when attempting to form an ldp/stp.Line truncated at %LLines executed:%s of %d
! Link in code for a __main kernel.Link the standard D library dynamically in the compilation.Link the standard D library statically in the compilation.Link the standard Modula-2 libraries statically in the compilation.Link to emit program in ELF format (rather than mmo).Link with libads.a, libc.a and crt0.o.Link with libc.a and libdebug.a.Link with libc.a and libsim.a.Link with libmvme.a, libc.a and crt0.o.Link with libsim.a, libc.a and sim-crt0.o.Link with libyk.a, libc.a and crt0.o.Link with the fast floating-point library.Link with the library-pic libraries.Link-time optimization with number of parallel jobs or jobserver.List all available debugging counters with their limits and counts.List all hidden GC allocations.List all non-mutable fields which occupy an object instance.List all usages of 'in' on parameter.List all variables going into thread local storage.List information on all D language transitions.List item %qs at %L set in previous OMP DECLARE TARGET directive to a different DEVICE_TYPEList item %qs at %L, declared at %L, is not a dummy argumentList item %qs in %s clause at %L must be of TYPE(C_PTR)List item shall not be coindexed at %LList specified together with memory order clause in FLUSH directive at %CList statistics on template instantiations.Load all members of archive libraries, rather than only those that satisfy undefined symbols.Locality spec at %LLocator %qs at %L in DEPEND clause of depobj type shall be a scalar integer of OMP_DEPEND_KIND kindLocator at %L in DEPEND clause of depobj type shall be a scalar integer of OMP_DEPEND_KIND kindLock variable at %L must be a scalar of type LOCK_TYPELogical SELECT CASE block at %L has more that two casesLogical range in CASE statement at %L is not allowedLogicals at %L must be compared with %s instead of %sLogs which object files the linker loads.Logs which symbol(s) caused an object to be loaded.Look for and use PCH files even when preprocessing.Look for the main source file on the include path.Looks for opportunities to reduce stack adjustments and stack references.LoongArch ARCH presets:LoongArch TUNE presets:Loop code aligned to this power of 2.Loop iterates infinitelyLoop variableLoop variable at %C cannot be a coarrayLoop variable at %C cannot be a sub-componentLoop variable at %C cannot be an arrayLoop variable has been modifiedLoops iterating at least selected number of iterations will get loop alignment.Lower array reference at %L is out of bounds (%ld < %ld) in dimension %dLower array reference at %L is out of bounds (%ld > %ld) in dimension %dMAP %qD TO %qEMAP %qD TO %qTMASK present at %L without IDENTITYMCU %qs does not have hardware multiply support, but %<-mhwmult%> is set to %sMCU %qs supports %s ISA but %<-mcpu%> option is set to %sMCU %qs supports %s hardware multiply, but %<-mhwmult%> is set to 16-bitMCU %qs supports %s hardware multiply, but %<-mhwmult%> is set to 32-bitMCU %qs supports %s hardware multiply, but %<-mhwmult%> is set to f5seriesMESSAGE clause at %L requires a scalar default-kind CHARACTER expressionMIPS16 %<-mxgot%> codeMIPS16 PIC for ABIs other than o32 and o64MIPS16 requires %<-mexplicit-relocs%>MMIX Internal: %s is not a shiftable integerMMIX Internal: Bad register: %dMMIX Internal: Bad value for 'm', not a CONST_INTMMIX Internal: Cannot decode this operandMMIX Internal: Expected a CONST_INT, not thisMMIX Internal: Expected a constant, not thisMMIX Internal: Expected a register, not thisMMIX Internal: Last named vararg would not fit in a registerMMIX Internal: Missing %qc case in %<mmix_print_operand%>MMIX Internal: This is not a constant:MMIX Internal: This is not a recognized addressMMIX Internal: Trying to output invalidly reversed condition:MMIX Internal: What is the CC of this?MMIX Internal: What's the CC of this?MMX vector argument without MMX enabled changes the ABIMMX vector return without MMX enabled changes the ABIMODULE PROCEDURE at %C must be in a generic module interfaceMODULE PROCEDURE declaration at %CMODULE PROCEDURE formal argument %qs conflicts with alternate return at %CMODULE PROCEDURE formal argument is alternate return and conflicts with %qs in the separate declaration at %CMODULE prefix at %CMODULE prefix at %C found outside of a module, submodule, or interfaceMOLD argument to NULL required at %LMOLD tag at %LMOLD tag at %L conflicts with SOURCE tag at %LMOLD tag at %L conflicts with the typespec at %LMOLD= required in NULL() argument at %L: Ambiguity between specific functions %s and %sMSA MIPS16 codeMSP430 built-in functions only work inside interrupt handlersMULT case in %<cris_op_str%>Magnitude of second argument of %s exceeds bit size at %LMagnitude of second argument of ISHFTC exceeds BIT_SIZE of first argument at %CMaintain backchain pointer.Make "char" signed by default.Make "char" unsigned by default.Make GCC pass the --no-relax command-line option to the linker instead of the --relax option.Make all function calls indirect.Make inline functions constexpr by default.Make integers 32 bits wide.Make structs a multiple of 4 bytes (warning: ABI altered).Make the linker relaxation machine assume that a program counter wrap-around occurs.Malformed GENERIC statement at %CMalformed type-spec at %CMalloc data into P2 space.Mangled derived type definition at %CMapper for module to CMI files.Mapping of polymorphic list item %qD is unspecified behaviorMapping of unlimited polymorphic list item %qD is unspecified behavior and unsupportedMark MAC register as call-clobbered.Mark all loops as parallel.Mark implicitly-declared copy operations as deprecated if the class has a user-provided copy operation or destructor.Mark implicitly-declared copy operations as deprecated if the class has a user-provided copy operation.Marks all inlined functions and methods as having hidden visibility.Max basic blocks number in loop for loop invariant motion.Max loops number for regional RA.Max number of bytes to compare as part of inlined strcmp/strncmp routines (default: 64).Max number of bytes to compare with loops.Max number of bytes to compare without loops.Max number of bytes to compare.Max number of bytes to move inline.Max number of files in the file cache.Max number of lines to index into file cache. When 0 this is automatically sized.Max size of conflict table in MB.Max. count of debug markers to expand or inline.Max. recursion depth for expanding var tracking expressions.Max. size of loc list for which reverse ops should be added.Max. size of var tracking hash tables.Maximal code growth caused by tail duplication (in percent).Maximal estimated growth of function body caused by early inlining of single call.Maximal estimated outcome of branch considered predictable.Maximal growth due to inlining of large function (in percent).Maximal number of boundary endpoints of case ranges of switch statement used during IPA function summary generation.Maximal size of a locality partition for LTO (in estimated instructions). Value of 0 results in default value being used.Maximal size of a partition for LTO (in estimated instructions).Maximal stack frame growth due to inlining (in percent).Maximum allowed growth of total size of new parameters that ipa-sra replaces a pointer to an aggregate with.Maximum amount of iterations of the pass over a function.Maximum amount of similar bbs to compare a bb with.Maximum combined size of caller and callee which is inlined if callee is called once.Maximum depth of DFS walk used by modref escape analysis.Maximum depth of a loop nest to fully value-number optimistically.Maximum depth of instruction chains to consider for recomputation in the outgoing range calculator.Maximum depth of logical expression evaluation ranger will look through when evaluating outgoing edge ranges.Maximum depth of recursive cloning for self-recursive function.Maximum depth of search in the dominator tree for expressions to hoist.Maximum depth of sqrt chains to use when synthesizing exponentiation by a real constant.Maximum extension level reached with type %qs at %LMaximum length of candidate scans for straight-line strength reduction.Maximum length of partial antic set when performing tree pre optimization.Maximum loop depth of a call which is considered for inlining functions called once.Maximum number of VALUEs handled during a single find_base_term call.Maximum number of accesses stored in each modref reference.Maximum number of active local stores in RTL dead store elimination.Maximum number of aggregate content items for a parameter in jump functions and lattices.Maximum number of arguments in a PHI supported by TREE if-conversion unless the loop is marked with simd pragma.Maximum number of arrays per SCoP.Maximum number of artificial accesses to enable forward propagation that Scalar Replacement of Aggregates will keep for one local variable.Maximum number of bases stored in each modref tree.Maximum number of basic blocks before VRP switches to a fast model with less memory requirements.Maximum number of basic blocks before VRP uses a sparse bitmap cache.Maximum number of basic blocks for VRP to use a basic cache vector.Maximum number of bits for which we avoid creating FMAs.Maximum number of bits that can be moved from memory to memory efficiently.Maximum number of bits that can be stored to memory efficiently.Maximum number of blocks for -fharden-control-flow-redundancy.Maximum number of blocks for in-line -fharden-control-flow-redundancy.Maximum number of cases for slow switch lowering algorithms to be used.Maximum number of concurrently open C++ module files when lazy loading.Maximum number of conditional store pairs that can be sunk.Maximum number of constant stores to merge in the store merging pass.Maximum number of datarefs in loop for building loop data dependencies.Maximum number of different predicates used to track properties of loops in IPA analysis.Maximum number of disambiguations to perform per memory access.Maximum number of escape points tracked by modref per SSA-name.Maximum number of fields in a structure before pointer analysis treats the structure as a single variable.Maximum number of insns in a basic block to consider for RTL if-conversion.Maximum number of instruction distance that a small store forwarded to a larger load may stall. Value '0' disables the cost checks for the avoid-store-forwarding pass.Maximum number of instructions in the ready list that are considered eligible for renaming.Maximum number of instructions to copy when duplicating blocks on a finite state automaton jump thread path.Maximum number of isl operations, 0 means unlimited.Maximum number of loop peels to enhance alignment of data references in a loop.Maximum number of may-defs visited when devirtualizing speculatively.Maximum number of namespaces to search for alternatives when name lookup fails.Maximum number of nested calls to search for control dependencies during uninitialized variable analysis.Maximum number of operations in a parameter expression that can be handled by IPA analysis.Maximum number of outgoing edges in a switch before VRP will not process it.Maximum number of parameters in a SCoP.Maximum number of possible vector layouts (such as permutations) to consider when optimizing to-be-vectorized code.Maximum number of predicates anded for each predicate ored in the normalized predicate chain.Maximum number of predicates ored in the normalized predicate chain.Maximum number of queries into the alias oracle per store.Maximum number of references stored in each modref base.Maximum number of relations the oracle will register in a basic block.Maximum number of statements allowed in a block that needs to be duplicated when threading jumps.Maximum number of statements allowed inbetween the statement and the end to considered not extending the liferange.Maximum number of statements that will be visited by IPA formal parameter analysis based on alias analysis in any given function.Maximum number of statements visited during jump function offset discovery.Maximum number of store chains to track at the same time in the store merging pass.Maximum number of strings for which strlen optimization pass will track string lengths.Maximum number of tests performed by modref query.Maximum number of times a given range is adjusted during the dataflow.Maximum number of times that an insn could be scheduled.Maximum permissible cost for the sequence that would be generated by the RTL if-conversion pass for a branch that is considered predictable.Maximum permissible cost for the sequence that would be generated by the RTL if-conversion pass for a branch that is considered unpredictable.Maximum pieces that IPA-SRA tracks per formal parameter, as a consequence, also the maximum number of replacements of a formal parameter.Maximum probability of the entry BB of split region (in percent relative to entry BB of the function) to make partial inlining happen.Maximum recursion depth allowed when querying a property of an SSA name.Maximum size (in bytes) of objects tracked bytewise by dead store elimination.Maximum size in bytes of constant values allowed as operands.Maximum size of a list of values associated with each parameter for interprocedural constant propagation.Maximum size of a single store merging region in bytes.Maximum size of global and static variables which can be placed into the small data area.Maximum size, in storage units, of an aggregate which should be considered for scalarization when compiling for size.Maximum size, in storage units, of an aggregate which should be considered for scalarization when compiling for speed.Maximum subrecord length cannot exceed %dMaximum supported identifier length is %dMaximum unroll factor for the unroll-and-jam transformation.Member functions defined within their class are inline in module purview.Memory Tagging Extension does not support %<-mabi=ilp32%>Memspace %qs at %L in USES_ALLOCATORS must be a predefined memory spaceMerge adjacent stores.Merge similar-enough states during analysis.Merge subcommand usage:Merge-stream subcommand usage:Min. ratio of insns to mem ops to enable prefetching in a loop.Min. ratio of insns to prefetches to enable prefetching for a loop with an unknown trip count.Minimal distance between possibly conflicting store and load.Minimal fall-through edge probability in percentage used to add BB to inheritance EBB in LRA.Minimal size of a partition for LTO (in estimated instructions).Minimum heap expansion to trigger garbage collection, as a percentage of the total size of the heap.Minimum heap size before we start collecting garbage, in kilobytes.Minimum number of iterations per thread of an innermost parallelized loop.Minimum page size for warning purposes.Minimum percentage of memrefs that must go away for unroll-and-jam to be considered profitable.Minimum probability (in percent) of dereferencing of a function pointer parameter for it to be considered for replacement with simple values.Mismatch between subroutine and function at %LMismatch in BIND(C) names (%qs/%qs) at %CMismatch in ELEMENTAL attribute between MODULE PROCEDURE at %L and its interface in %sMismatch in MODULE PROCEDURE formal argument names (%s/%s) at %CMismatch in PURE attribute between MODULE PROCEDURE at %L and its interface in %sMismatch in RECURSIVE attribute between MODULE PROCEDURE at %L and its interface in %sMismatch in components of derived type %qs from %qs at %C: expecting %qs, but got %qsMismatch in number of MODULE PROCEDURE formal arguments at %CMismatch in the procedure pointer assignment at %L: mismatch in the calling conventionMismatches between file architecture and one specified by "-arch" are errors instead of warnings.Missing %<&%> in continued character constant at %CMissing %<(%> in ELSE IF expression at %CMissing %<(%> in IF-expression at %CMissing %<)%> in ELSE IF expression at %CMissing %qs argument to %qs intrinsic at %L for %qs of type %qsMissing %qs argument to the %s intrinsic at %LMissing %qs in statement at or before %LMissing -mcpu option in ASM_CPU_SPEC?Missing INITIALIZER clause for !$OMP DECLARE REDUCTION of derived type without default initializer at %LMissing THEN in ELSE IF statement after %LMissing actual argument %qs in call to %qs at %LMissing actual argument for argument %qs at %LMissing alternate return spec in subroutine call at %LMissing alternate return specifier in subroutine call at %LMissing argument list in function %qs at %CMissing argument to %qs at %CMissing array specification at %L in CODIMENSION statementMissing array specification at %L in DIMENSION statementMissing character range in IMPLICIT at %CMissing closing paren for binding label at %CMissing codimension specification at %CMissing comma at %LMissing counts for called function %sMissing dimension specification at %CMissing entity or common block name for attribute specification statement at %CMissing explicit declaration with EXTERNAL attribute for symbol %qs at %LMissing exponent in real number at %CMissing format label at %CMissing format with default unit at %CMissing generic specification in USE statement at %CMissing item in format string at %LMissing keyword name in actual argument list at %CMissing kind-parameter at %CMissing leading left parenthesis in format string at %LMissing lower bound in assumed size coarray specification at %CMissing positive width after L descriptor at %LMissing required %<target%> and/or %<targetsync%> modifier at %CMissing required parentheses before BIND(C) at %CMissing right parenthesis at %CMissing right parenthesis or comma at %CMissing symbolMitigate issues with AES instructions on Cortex-A57 and Cortex-A72 (Arm erratum #1655431).Mitigate issues with AES instructions on Cortex-A57 and Cortex-A72 (Arm erratum #1742098).Mitigate issues with VLLDM on some M-profile devices (CVE-2021-35465).Module %qs at line %d column %d: %sModule file %qs has not been generated, either because the module does not contain a MODULE PROCEDURE or there is an error in the module.Module nature in USE statement at %C shall be either INTRINSIC or NON_INTRINSICMore actual than formal arguments in procedure call at %LMore than one edge out of thunk nodeMove loop invariant computations out of loops.Move stores out of loops.Multiple %qs modifiers specified at %CMultiple identifiers provided with single NAME= specifier at %CMultiple loop axes specified for routine at %CNAME %qs does not refer to a subroutine or function in !$ACC ROUTINE ( NAME ) at %LNAME %qs invalid in !$ACC ROUTINE ( NAME ) at %LNAME not allowed on BIND(C) for ABSTRACT INTERFACE at %CNAME= specifier at %C should be a constant expressionNAME= specifier at %C should be a scalar of default character kindNAMELIST %qs in READ statement at %L contains the symbol %qs which may not appear in a variable definition contextNAMELIST array object %qs with assumed shape in namelist %qs at %LNAMELIST array object %qs with nonconstant shape in namelist %qs at %LNAMELIST object %qs has PRIVATE components and cannot be a member of PUBLIC namelist %qs at %LNAMELIST object %qs has use-associated PRIVATE components and cannot be member of namelist %qs at %LNAMELIST object %qs in namelist %qs at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedureNAMELIST object %qs in namelist %qs at %L is polymorphic and requires a defined input/output procedureNAMELIST object %qs in namelist %qs at %L with ALLOCATABLE or POINTER componentsNAMELIST object %qs was declared PRIVATE and cannot be member of PUBLIC namelist %qs at %LNAMELIST object %qs with nonconstant character length in namelist %qs at %LNEWUNIT specifier at %LNEWUNIT specifier must have FILE= or STATUS='scratch' at %LNOCONTEXT clause at %L requires a scalar LOGICAL expressionNONMONOTONIC schedule modifier specified with ORDERED clause at %LNON_OVERRIDABLE and DEFERRED cannot both appear at %CNOPASS or explicit interface required at %CNOTE_INSN_BASIC_BLOCK %d in middle of basic block %dNOTE_INSN_BASIC_BLOCK is missing for block %dNOVARIANTS clause at %L requires a scalar LOGICAL expressionNOWAIT clause must not be used with COPYPRIVATE clause at %LNO_ARG_CHECK attributeNULL appears on right-hand side in assignment at %LNULL at %L is not permitted as actual argument to %qs intrinsic functionNULL intrinsic with allocatable MOLD at %LNULL used in arithmeticNULL() at %C cannot appear in an array constructorNULL() initialization at %C is ambiguousNULL() initialization at %C may not have MOLDNULL() is not interoperableNULL() near %L cannot appear in INQUIRE statementNULLIFY does not allow bounds remapping for pointer object at %CNUM_TEAMS lower bound at %L larger than upper bound at %LName %qs at %C is already defined as a generic interface at %LName %qs at %C is an ambiguous reference to %qs from current program unitName %qs at %C is an ambiguous reference to %qs from module %qsName %qs at %C is the name of the procedureName %qs in %s statement at %C is not a construct nameName %qs in %s statement at %C is unknownName %qs of ABSTRACT INTERFACE at %C cannot be the same as an intrinsic typeName after !$omp critical and !$omp end critical does not match at %CName at %C is too longName too longNamed COMMON block %qs at %L shall be of the same size as elsewhere (%wu vs %wu bytes)Named block DO at %L requires matching ENDDO nameNamed constant %qs at %L cannot be an EQUIVALENCE objectNamed constant %qs in variable definition context (%s) at %LNamed constant at %C in an EQUIVALENCENamelist %qs cannot be an argument at %LNamelist %qs cannot be an argument to subroutine or function at %LNamelist group name %qs at %C already has a basic type of %sNamelist group name %qs at %C already is USE associated and cannot be respecified.Namelist group name at %L cannot have the SAVE attributeNeed either entity or common block name for attribute specification statement at %CNegation of unsigned constant at %L not permittedNegation of unsigned expression at %L not permitted Negative argument N at %LNegative exponent of integer has zero result at %LNested CRITICAL block at %CNested function trampolines not supported on CK801.Nice try, but you can't fire me. I quit!No binding name is allowed in BIND(C) at %CNo branches
  No calls
  No conditions
  No default crt0.o.No description yet.No edge out of thunk nodeNo executable lines
  No initializer for allocatable component %qs given in the structure constructor at %CNo initializer for component %qs given in the structure constructor at %CNo longer supported.No path information
! No region crossing jump at section boundary in bb %iNon-CHARACTER object %qs in default CHARACTER EQUIVALENCE statement at %LNon-ELEMENTAL user-defined assignment in WHERE at %LNon-NUMERIC object %qs in default NUMERIC EQUIVALENCE statement at %LNon-PARAMETER symbol %qs at %L cannot be implied-shapeNon-POINTER in pointer association context (%s) at %LNon-RECURSIVE procedure %qs at %L is possibly calling itself recursively.  Declare it RECURSIVE or use %<-frecursive%>Non-RECURSIVE procedure %qs from module %qs is possibly calling itself recursively in procedure %qs.  Declare it RECURSIVE or use %<-frecursive%>Non-THREADPRIVATE object %qs in COPYIN clause at %LNon-character assumed shape array element in FORMAT tag at %LNon-character assumed size array element in FORMAT tag at %LNon-character in FORMAT tag at %LNon-character non-Hollerith in FORMAT tag at %LNon-character pointer array element in FORMAT tag at %LNon-constant character length at %L in DATA statementNon-constant lower bound in implied-shape declaration at %LNon-default LOGICAL kind in %s tag at %LNon-default type object or sequence %s in EQUIVALENCE statement at %L with objects of different typeNon-extensible derived-type %qs at %L must not be ABSTRACTNon-numeric character in statement label at %CNon-polymorphic passed-object dummy argument of %qs at %LNon-rectangular loops from generated loops unsupportedNon-scalar FINAL procedure at %L should have assumed shape argumentNon-significant digits in %qs number at %C, maybe incorrect KINDNon-variable expression in variable definition context (%s) at %LNon-zero imaginary part discarded in conversion from %qs to %qs at %LNonallocatable variable must not be polymorphic in intrinsic assignment at %L - check that there is a matching specific subroutine for %<=%> operatorNoncoarray component %s at %L of type EVENT_TYPE or with subcomponent of type EVENT_TYPE must have a codimension or be a subcomponent of a coarray. (Variables of type %s may not have a codimension as %s at %L has a codimension or a coarray subcomponent)Noncoarray component %s at %L of type EVENT_TYPE or with subcomponent of type EVENT_TYPE must have a codimension or be a subcomponent of a coarray. (Variables of type %s may not have a codimension as already a coarray subcomponent exists)Noncoarray component %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must have a codimension or be a subcomponent of a coarray. (Variables of type %s may not have a codimension as %s at %L has a codimension or a coarray subcomponent)Noncoarray component %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must have a codimension or be a subcomponent of a coarray. (Variables of type %s may not have a codimension as already a coarray subcomponent exists)Nonconforming tab character at %CNonconforming tab character in column %d of line %dNonconforming tab character in format at %CNonconstant array section at %L in DATA statementNonexistent include directory %qsNoninteger exponent in an initialization expression at %LNoninteroperable array FPTR argument to C_F_POINTER at %L: %sNoninteroperable array at %L as argument to C_LOC: %sNoninteroperable procedure at %L to C_FUNLOCNoninteroperable procedure pointer at %L to C_F_PROCPOINTERNonintrinsic elemental procedure %qs is invalid in procedure pointer assignment at %LNonnegative width required in format string at %LNonpointer object %qs with default initialization shall not appear in a DATA statement at %LNonpointer polymorphic dummy argument not permitted for %qs in %s locality-spec at %LNonpolymorphic reference to abstract type at %CNonstandard conversion from %s to %s at %LNonstandard type declaration %s*%d at %CNonzero range step expected at %LNot configured with %<--enable-gather-detailed-mem-stats%>.Not enough elements in array initializer at %CNot expected TAG.Note #include directives not translated to import declarations, and not known to be textual.Note #include directives translated to import declarations.Note Compiled Module Interface pathname of a specific module or header-unit.Note Compiled Module Interface pathnames.Note a #include translation of a specific header.Note all candidates during overload resolution failure.Number of cache entries in incremental LTO after which to prune old entries.Number of partitions the program should be split to.Number of registers used to pass integer arguments.Numeric PARAMETER required in complex constant at %CNumeric operands are required in expression at %LNumeric or CHARACTER operands are required in expression at %LOLD argument of the %s intrinsic function at %L shall be definableOMP CRITICAL at %L with HINT clause requires a NAME, except when omp_sync_hint_none is usedOMP DECLARE TARGET COMMON at %L previously mentioned in LINK clause and later in %s clauseOMP DECLARE TARGET COMMON at %L previously mentioned in TO or ENTER clause and later in LINK clauseOMP DECLARE TARGET directive at %L with only DEVICE_TYPE or INDIRECT clauses is ignoredOMP DECLARE TARGET variable at %L is an element of a COMMON blockOMP DECLARE TARGET variable at %L previously mentioned in LINK clause and later in %s clauseOMP DECLARE TARGET variable at %L previously mentioned in TO or ENTER clause and later in LINK clauseOMP TARGET UPDATE at %L requires at least one TO or FROM clauseOPEN statement at %L must have UNIT or NEWUNIT specifiedOPEN statement not allowed in PURE procedure at %COPERATION argument at %L must be a PURE functionOPTIONAL attribute not permitted for %qs in %s locality-spec at %LOPTIONAL is not allowed inside of BLOCK at %CORDER at %L is not a permutation of the size of SHAPE at %LORDER clause must not be used together with ORDERED at %LORDERED clause argument not constant positive integer at %CORDERED clause parameter is less than COLLAPSE at %LORDERED clause specified together with %<inscan%> REDUCTION clause at %LObject %qs is not a variable at %LObject %qs is not a variable at %L; parameters cannot be and need not be copiedObject %qs is not a variable at %L; parameters cannot be and need not be mappedObjective-C declarations may only appear in global scopeObsolescent feature:Obsolete; use GCN_STACK_SIZE at runtime.Offline tool to handle gcda counts
  
! Old-style character length at %COld-style initialization at %COld-style type declaration %s*%d not supported at %COmit frame pointer for leaf functions.Omit range reduction step when performing complex division.Omit the frame pointer in leaf functions.One of actual subroutine arguments in INITIALIZER clause of !$OMP DECLARE REDUCTION must be OMP_PRIV at %LOnly DEFAULT permitted as reduction-modifier in REDUCTION clause at %LOnly array FINAL procedures declared for derived type %qs defined at %L, suggest also scalar one unless an assumed rank finalizer has been declaredOnly emit Compiled Module Interface.Only generate absolute relocations on word sized values.Only intrinsic operators can be used in expression at %LOnly issue one instruction per cycle.Only one of TEAM= or TEAM_NUMBER= may appear in a coarray reference at %COnly retained for backward compatibility.Only the !$ACC ROUTINE form without list is allowed in interface block at %COnly the !$OMP DECLARE TARGET form without clauses is allowed in interface block at %COnly use 32 FPRs.Only use 32 GPRs.OpenACC construct inside of non-OpenACC regionOpenACC directive inside of CRITICAL block at %COpenACC directives other than ROUTINE may not appear in PURE procedures at %COpenACC loop directive must be associated with an OpenACC compute regionOpenACC region inside of OpenACC routine, nested parallelism not supported yetOpenMP %<omp::decl%> attribute on a statementOpenMP %<requires%> directive with %qs specified only in some compilation unitsOpenMP %<requires%> directive with non-identical clauses in multiple compilation units: %qs vs. %qsOpenMP ERROR directive at %L with %<at(execution)%> clause in a PURE procedureOpenMP construct among %<omp::directive%> attributes requires all %<omp::directive%> attributes on the same statement to be in the same %<omp::sequence%>OpenMP constructs are not allowed in target region with %<ancestor%>OpenMP constructs other than %<ordered simd%>, %<simd%>, %<loop%> or %<atomic%> may not be nested inside %<simd%> regionOpenMP constructs other than %<parallel%>, %<loop%> or %<simd%> may not be nested inside a %<loop%> regionOpenMP constructs other than %<parallel%>, %<loop%> or %<simd%> may not be nested inside a region with the %<order(concurrent)%> clauseOpenMP directive at %C is not pure and thus may not appear in a PURE procedureOpenMP directive other than %<declare simd%> or %<declare variant%> appertains to a declarationOpenMP directives may not appear in %<constexpr%> functionsOpenMP runtime API call %qD in a region with %<device(ancestor)%> clauseOpenMP runtime API call %qD in a region with %<order(concurrent)%> clauseOpenMP runtime API call %qD strictly nested in a %<teams%> regionOperand of .not. operator at %L is %sOperand of unary numeric operator %qs at %L is %sOperand of user operator %qs at %L is %sOperands at %L and %L cannot appear as operands of binary operator %qsOperands of binary numeric operator %qs at %L are %s/%sOperands of comparison operator %qs at %L are %s/%sOperands of logical operator %qs at %L are %s/%sOperands of string concatenation operator at %L are %s/%sOperands of user operator %qs at %L are %s/%sOperator interface at %L conflicts with intrinsic interfaceOperator interface at %L has the wrong number of argumentsOperator interface at %L must have, at most, two argumentsOptimization. Accumulate outgoing function arguments and acquire/release the needed stack space for outgoing function arguments in function prologue/epilogue.  Without this option, outgoing arguments are pushed before calling a function and popped afterwards.  This option can lead to reduced code size for functions that call many functions that get their arguments on the stack like, for example printf.Optimization. Allow to use nonzero_bits() in some insn conditions.Optimization. Allow usage of __gcc_isr pseudo instructions in ISR prologues and epilogues.Optimization. Relax branches.Optimization. Run a post-reload pass that tweaks move instructions.Optimization. Split most of the load and store instructions into byte load and stores.Optimization. Split register additions from load/store instructions. Most useful on Reduced Tiny.Optimization. Split shifts of 4-byte values into a byte shift and a residual bit shift.Optimization. Treat main as if it had attribute OS_task.Optimization. Use subroutines for function prologues and epilogues.Optimization. When accessing RAM, use X as imposed by the hardware, i.e. just use pre-decrement, post-increment and indirect addressing with the X register.  Without this option, the compiler may assume that there is an addressing mode X+const similar to Y+const and Z+const and emit instructions to emulate such an addressing mode for X.Optimize amount of stdarg registers saved to stack at start of function.Optimize conditional patterns using SSA PHI nodes.Optimize for CPU.Optimize for debugging experience rather than speed or size.Optimize for space aggressively rather than speed.Optimize for space rather than speed.Optimize for speed disregarding exact standards compliance.Optimize frame header.Optimize induction variables on trees.Optimize lui/addiu address loads.Optimize noreturn functions by not saving callee-saved registers used in the function.Optimize opcode sizes at link time.Optimize partition neutering.Optimize sibling and tail recursive calls.Optimize tail call instructions in assembler and linker.Option %<-fallow-leading-underscore%> is for use only by gfortran developers, and should not be used for implicitly typed variablesOptions to %<-Xassembler%> do not match: %s, %s, dropping all %<-Xassembler%> and %<-Wa%> options.Options:
  Out of bounds in IMAGE_INDEX at %L for dimension %d, SUB has %ld and COARRAY lower bound is %ld)Out of bounds in IMAGE_INDEX at %L for dimension %d, SUB has %ld and COARRAY upper bound is %ld)Out of stack space.
  Output .debug_types section when using DWARF v4 debuginfo.Output callgraph information on a per-file basis with decorations.Output callgraph information on a per-file basis.Output lto objects containing both the intermediate language and binary output.Output stack usage information on a per-function basis.Output vtable verification counters.Output vtable verification pointer sets information.Overlap subcommand usage:Overlapping unequal initializers in EQUIVALENCE at %COverlapping unequal initializers in EQUIVALENCE at %LOverride -mbest-lib-options.P descriptor requires leading scale factor in format string at %LPAD= at %L not allowed in Fortran 95PARAMETER %qs is used at %L before its definition is completePARAMETER %qs shall not appear in a DATA statement at %CPARAMETER at %L is missing an initializerPARAMETER symbol in complex constant at %CPARAMETER without '()' at %CPARTIAL clause argument not constant positive integer at %CPAUSE statement at %CPC relative literal loads.PCH allocation failurePCH memory is not available: %mPCS variantPDP11 bit-field handling unsupported in %qsPHI argument is missing for edge %d->%dPHI argument is not SSA_NAME, or invariantPHI argument on abnormal edge is not SSA_NAMEPHI node with locationPHI node with wrong VUSE on edge from BB %dPIC code generation is not compatible with fast indirect callsPIC code generation is not supported in the portable runtime modelPIC is not supported for %qsPIC is only supported for RTPsPIC is required but not supported with CONST16 instructionsPIC register clobbered by %qs in %<asm%>POINTER attribute is required for procedure pointer component at %CPOINTER object %qs in %s clause at %LPOINTER object %qs of polymorphic type in %s clause at %LPOINTER-valued function appears on right-hand side of assignment at %LPOS argument (%ld) out of range 0:%ld in intrinsic %sPOS argument (%ld) out of range 0:%ld in intrinsic BTESTPOS argument (%ld) out of range 0:%ld in intrinsic IBITSPOS(%ld)+LEN(%ld)>BIT_SIZE(%ld) in intrinsic IBITSPOSITION specifier in OPEN statement at %L only allowed for stream or sequential ACCESSPR100400PRE disabledPRINT namelist at %C is an extensionPRINT statement at %C not allowed within PURE procedurePRINT_OPERAND, invalid insn for %%CPRINT_OPERAND, invalid insn for %%NPRIVATE statement at %C is only allowed in the specification part of a modulePRIVATE statement at %C must precede procedure bindingsPRIVATE statement at %C must precede structure componentsPRIVATE statement in TYPE at %C must be inside a MODULEPROCEDURE %qs at %L may not be used as its own interfacePROCEDURE at %C must be in a generic interfacePROCEDURE attribute conflicts with INTENT attribute in %qs at %LPROCEDURE attribute conflicts with NAMELIST attribute in %qs at %LPROCEDURE attribute conflicts with PROTECTED attribute at %LPROCEDURE attribute conflicts with RESULT attribute in %qs at %LPROCEDURE attribute conflicts with SAVE attribute in %qs at %LPROCEDURE list at %CPROCEDURE statement at %CPROCEDURE(interface) at %C should be declared DEFERREDPROTECTED at %C only allowed in specification part of a modulePROTECTED attribute at %CPROTECTED attribute conflicts with EXTERNAL attribute at %LPROTECTED statement at %CPTX does not support weak declarations (only weak definitions)PTX version (%<-mptx%>) needs to be at least %s to support selected %<-misa%> (sm_%s)PUBLIC %s %qs at %L of PRIVATE derived type %qsPUBLIC function %qs at %L of PRIVATE type %qsPUBLIC statement at %C is only allowed in the specification part of a modulePURE and IMPURE must not appear both at %CPURE prefix in MODULE PROCEDURE interface is missing at %LPack VLIW instructions.Pack structure members together without holes.Pad shorter fixed form lines to line width with spaces.Padding of %d bytes required before %qs in COMMON %qs at %L; reorder elements or use %<-fno-align-commons%>Padding of %d bytes required before %qs in COMMON at %L; reorder elements or use %<-fno-align-commons%>Param to control which writeback opportunities we try to handle in the load/store pair fusion pass.  A value of zero disables writeback handling.  One means we try to form pairs involving one or more existing individual writeback accesses where possible.  A value of two means we also try to opportunistically form writeback opportunities by folding in trailing destructive updates of the base register used by a pair.Parameter %qs at %L has not been declared or is a variable, which does not reduce to a constant expressionParameter array %qs at %L cannot be automatic or of deferred shapeParameterized derived type at %C is ambiguousParameterized type %qs does not have a component corresponding to parameter %qs at %LPass -EB option through to linker.Pass -EL option through to linker.Pass -marclinux option through to linker.Pass -marclinux_prof option through to linker.Pass -mrelax or -mno-relax option to the assembler.Pass -z text to linker.Pass the address of the ra save location to _mcount in $12.Passed-object at %L must be scalarPassed-object dummy argument of %qs at %L must be at the same position as the passed-object dummy argument of the overridden procedurePassed-object dummy argument of %qs at %L must be scalarPassed-object dummy argument of %qs at %L must not be ALLOCATABLEPassed-object dummy argument of %qs at %L must not be POINTERPasses on a request to the assembler to enable fixes for various silicon errata.Passes on a request to the assembler to warn about various silicon errata.Passing coarray at %L to allocatable, noncoarray dummy argument %qs, which is invalid if the allocation status is modifiedPassing coarray at %L to allocatable, noncoarray, INTENT(OUT) dummy argument %qsPassing global function %qs declared at %L as subroutine at %LPassing global subroutine %qs declared at %L as function at %LPassing internal procedure at %L by location not allowedPassing intrinsic NULL as actual argument at %L requires an explicit interfacePath to header file that should be pre-included before each compilation unit.Percentage penalty functions containing a single call to another function will receive when they are evaluated for cloning.Percentage penalty the recursive functions will receive when they are evaluated for cloning.Perform IPA Value Range Propagation.Perform Identical Code Folding for functions and read-only variables.Perform Identical Code Folding for functions.Perform Identical Code Folding for variables.Perform SMS based modulo scheduling before the first scheduling pass.Perform SMS based modulo scheduling with register moves allowed.Perform VR4130-specific alignment optimizations.Perform Value Range Propagation on trees.Perform a forward propagation pass on RTL.Perform a number of minor, expensive optimizations.Perform a register copy-propagation optimization pass.Perform a register renaming optimization pass.Perform a target dependent instruction fusion optimization pass.Perform cloning to make Interprocedural constant propagation stronger.Perform comparison elimination after register allocation has finished.Perform conversion of conditional jumps to branchless equivalents.Perform conversion of conditional jumps to conditional execution.Perform conversions of switch initializations.Perform cross-jumping optimization.Perform dead code elimination on zero and sign extensions with special dataflow analysis.Perform early inlining.Perform enhanced load motion during global common subexpression elimination.Perform function-local points-to analysis on trees.Perform global common subexpression elimination after register allocation has finished.Perform global common subexpression elimination.Perform indirect inlining.Perform internal consistency checkings.Perform interprocedural bitwise constant propagation.Perform interprocedural constant propagation.Perform interprocedural modref analysis.Perform interprocedural points-to analysis.Perform interprocedural profile propagation.Perform interprocedural reduction of aggregates.Perform jump threading optimizations.Perform live range splitting during the SSA->normal pass.Perform loop peeling.Perform loop splitting.Perform loop unrolling for all loops.Perform loop unrolling when iteration count is known.Perform loop unswitching.Perform partial inlining.Perform redundant load after store elimination in global common subexpression elimination.Perform reordering and cloning of functions to maximize locality.Perform scalar replacement of aggregates.Perform software pipelining of inner loops during selective scheduling.Perform software pipelining of outer loops during selective scheduling.Perform speculative devirtualization.Perform store motion after global common subexpression elimination.Perform straight-line strength reduction.Perform superblock formation via tail duplication.Perform unroll-and-jam on loops.Perform unused symbol elimination in debug info.Perform unused type elimination in debug info.Perform variable tracking and also tag variables that are uninitialized.Perform variable tracking by annotating assignments.Perform variable tracking.Perform whole program optimizations.Period required in format specifier %s at %LPeriod required in format specifier at %LPeriod required in format specifier in format string at %LPermit '$' as an identifier character.Permit nonconforming uses of the tab character.Permit scheduling of a function's prologue and epilogue sequence.Permit scheduling of a function's prologue sequence.Permit scheduling of function prologue and epilogue sequences.Permit universal character names (\u and \U) in identifiers.Place a stop bit after every cycle when scheduling.Place data items into their own section.Place each function into its own section.Place floating point constants in TOC.Place symbol+offset constants in TOC.Please include the complete backtrace with any bug report.
  Please submit a full bug report, with preprocessed source (by using -freport-bug).
--- 2034,2067 ----
     Use of this interface is discouraged, consider using the
     BIND(C) feature of standard Fortran instead.  */
  
! 128-bit %<long double%> not supported for VAX floats128-bit system register support requires the %<d128%> extension31 bit ABI.387 instruction set disabled, using SSE arithmetics64 bit ABI.64-bit ABI not supported in ESA/390 mode; use assignment instead; use assignment or value-initialization instead; use copy-assignment instead; use copy-assignment or copy-initialization instead; use copy-initialization instead; use value-initialization instead<anonymous><brace-enclosed initializer list><built-in><command-line><declaration error><enumerator><erroneous-expression><expression error><lambda<lambda><message unknown at compile time><missing><return value> <return-value><statement><structured bindings><tag-error><template arguments error><template parameter error><throw-expression><type error><type-error><typedef-error><typeprefixerror><ubsan routine call><unknown operator><unknown><unnamed %s><unnamed-fixed:<unnamed-float:<unnamed-unsigned:<unnamed><unparsed><unresolved overloaded function type>A BOZ literal constant at %L cannot appear as an actual argument in a function referenceA BOZ literal constant at %L cannot appear as an actual argument in a subroutine referenceA factor for tuning the upper bound that swing modulo scheduler uses for scheduling a loop.A floating point to integer truncation may be replaced with rounding to save mode switching.A lower bound must precede colon in assumed-size array specification at %LA memory space or traits array may not be specified for predefined allocator %qs at %LA non-default set of initial values has been requested, which violates the ABIA parameter name is required at %CA synonym for -std=c89 (for C) or -std=c++98 (for C++).A threshold on the average loop count considered by the swing modulo scheduler.A type parameter list is required at %CAAPCS does not support %<-mcallee-super-interworking%>AAPCS does not support %<-mcaller-super-interworking%>ABI %qs cannot be implemented due to limited instruction set %qs, falling back to %qsABI %qs is not enabled at configure-time, the linker might report an errorABI changed (%qs to %qs) while multilib is disabledABI for flattened struct with zero-length bit-fields changed in GCC 10ABI requires %<-march=rv%d%>ABI variant code generation (for use with -mabi= option):ABI with startfiles: %sABSTRACT INTERFACE %qs at %L must not have an assumed character length result (F2008: C418)ABSTRACT INTERFACE %qs must not be referenced at %LABSTRACT INTERFACE at %CABSTRACT type %qs used at %LABSTRACT type at %CAC-IMPLIED-DO final expression references control variable at %LAC-IMPLIED-DO initial expression references control variable at %LAC-IMPLIED-DO step expression references control variable at %LACC CACHE directive must be inside of loop %CACCESS specification at %L was already specifiedACLE function %qD can only be called from a function that has %qs stateACLE function %qD can only be called when SME streaming mode is enabledACLE function %qD cannot be called when SME streaming mode is enabledACLE function %qD is incompatible with the use of %qsACLE function %qD requires ISA extension %qsACQUIRED_LOCK variableACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variableACTION type conflicts with READONLY specifier at %LALIGN requires a scalar positive constant integer alignment expression at %L that is a power of twoALLOCATABLE attribute at %C in a STRUCTURE definitionALLOCATABLE attribute at %C in a TYPE definitionALLOCATABLE attribute not permitted for %qs in %s locality-spec at %LALLOCATABLE object %qs in %s clause at %LALLOCATABLE specified outside of INTERFACE body at %LALLOCATE directive at %L inside a target region must specify an ALLOCATOR clauseALLOCATE directive at %L inside a target region must specify an ALLOCATOR clause for %qsALLOCATE objectALLOCATE of coarray at %C in CRITICAL blockALLOCATE of coarray at %C in DO CONCURRENT blockALLOCATED intrinsic at %L requires an array or scalar allocatable entityALLOCATORS directive at %L inside a target region must specify an ALLOCATOR modifier for %qsALTERNATE RETURN not permitted at %LAPCS reentrant code not supported.  IgnoredARMv8-M Security Extensions incompatible with selected FPUASSIGN statement at %CASSIGN statement at %L requires a scalar default INTEGER variableASSIGNED GOTO statement at %L requires a scalar INTEGER variableASSIGNED variable in FORMAT tag at %LASSOCIATE construct at %CASYNCHRONOUS attribute at %CASYNCHRONOUS attribute not permitted for %qs in REDUCE locality-spec at %LASYNCHRONOUS statement at %CASYNCHRONOUS= at %L not allowed in Fortran 95ATOM argument at %L of the %s intrinsic function shall be a coarray or coindexedATOM argument at %L to intrinsic function %s shall be an integer of ATOMIC_INT_KINDATOM argument at %L to intrinsic function %s shall be an integer of ATOMIC_INT_KIND or a logical of ATOMIC_LOGICAL_KINDATOM argument of the %s intrinsic function at %L shall be definableAUX pointer initialized for edge %d->%dAVX vector argument without AVX enabled changes the ABIAVX vector return without AVX enabled changes the ABIAVX512F vector argument without AVX512F enabled changes the ABIAVX512F vector return without AVX512F enabled changes the ABIAbbreviation for "-g -feliminate-unused-debug-symbols".Abbreviation for "-g -fno-eliminate-unused-debug-symbols".Absolute value of SHIFT shall be less than or equal to SIZE at %CAbstract interface %qs is invalid in procedure pointer assignment at %LAccept COBOL constructs used by non-ISO compilersAccept argument mismatches in procedure calls.Accept extensions to support legacy code.Access data in the same section from shared anchor points.Access offset before parent offsetAccess overlaps with its siblingAccess size greater or equal to its parent sizeAccess specification of the %s operator at %C has already been specifiedAccess specification of the .%s. operator at %C has already been specifiedAccess terminates outside of its parentActual CLASS array argument for %qs must be a full array at %LActual argument at %L for INTENT(%s) dummy %qs of ELEMENTAL subroutine %qs is a scalar, but another actual argument is an arrayActual argument at %L of %qs intrinsic shall be an associated pointerActual argument at %L to allocatable or pointer dummy argument %qs must have a deferred length type parameter if and only if the dummy has oneActual argument at %L to assumed-type dummy has type parameters or is of derived type with type-bound or FINAL proceduresActual argument contains too few elements for dummy argument %qs (%lu/%lu) at %LActual argument for %qs at %L is a function result and the dummy argument is ALLOCATABLEActual argument for %qs at %L must be a pointerActual argument for %qs at %L must be a pointer or a valid target for the dummy pointer in a pointer assignment statementActual argument for %qs cannot be an assumed-size array at %LActual argument for %qs must be ALLOCATABLE at %LActual argument of EVENT_TYPE or with EVENT_TYPE component at %L requires an explicit interface for procedure %qsActual argument of LOCK_TYPE or with LOCK_TYPE component at %L requires an explicit interface for procedure %qsActual argument to %qs at %L must be a coarrayActual argument to %qs at %L must be polymorphicActual argument to %qs at %L must be simply contiguous or an element of such an arrayActual argument to %qs at %L must be unlimited polymorphic since the formal argument is a pointer or allocatable unlimited polymorphic entity [F2008: 12.5.2.5]Actual argument to %qs at %L must have the same declared typeActual argument to assumed-rank INTENT(OUT) dummy %qs at %L cannot be of unknown sizeActual argument to contiguous pointer dummy %qs at %L must be simply contiguousActual argument to non-INTENT(INOUT) dummy %qs at %L, which is EVENT_TYPE or has a EVENT_TYPE componentActual argument to non-INTENT(INOUT) dummy %qs at %L, which is LOCK_TYPE or has a LOCK_TYPE componentActual string length does not match the declared one for dummy argument '%s' (%ld/%ld)Actual string length is shorter than the declared one for dummy argument '%s' (%ld/%ld)Add CS prefix to call and jmp to indirect thunk with branch target in r8-r15 registers.Add a common subexpression elimination pass after loop optimizations.Add comments for ignored declarations in the generated C++ header.Add description attributes to some DWARF DIEs that have no name attribute.Add explicit checks for division by zero.Add explicit checks for division overflow in INT_MIN / -1.Add extra annotations to diagrams.Add extra commentary to assembler output.Add extra information to the executable that can speed up dynamic loading (provided that dependent libraries are unchanged).Add output format.Add the .lower prefix to section names when compiling with -m{code,data}-region=lower (disabled by default).Additional debug prints.Additional maximum allowed growth of total size of new parameters that ipa-sra replaces a pointer to an aggregate with, if it points to a local variable that the caller only writes to and passes it as an argument to functions.After diagnosing undefined behavior attempt to continue execution.Aggressively optimize loops using language constraints.Alias and target%'s comdat groups differsAlias and target%'s section differsAlias for -mcpu=g10.Alias for -mcpu=g13.Alias for -mcpu=g14.Alias has call edgesAlias has more than one alias referenceAlias has non-alias referenceAlias:Align all labels.Align all loops to 32 byte boundary.Align code and data to 32 bits.Align destination of the string operations.Align doubles at 64-bit boundaries.Align function entry to 4 byte.Align labels which are only reached by jumping.Align some doubles on dword boundary.Align the start of every function.Align the start of functions.Align the start of loops.Align to the base type of the bit-field.Align to the base type of the bit-field. Don't assume that unaligned accesses are handled by the system.Align variables on a 32-bit boundary.All LEN type parameters of the passed dummy argument %qs of %qs at %L must be ASSUMED.All files that might deallocate such a variable must be compiled with %<-fopenmp-allocators%>All intrinsics procedures are available regardless of selected standard.All the LEN type parameters in the TYPE IS statement at %C must be ASSUMEDAllocatable %qs at %L cannot have an initializerAllocatable array %qs at %L must have a deferred shape or assumed rankAllocatable character dummy argument %qs at %L must have deferred length as procedure %qs is BIND(C)Allocatable coarray variable %qs at %L must have deferred shapeAllocatable component %s at %L must have a codimension as it has a noncoarray subcomponent of type EVENT_TYPEAllocatable component %s at %L must have a codimension as it has a noncoarray subcomponent of type LOCK_TYPEAllocatable component %s at %L of type EVENT_TYPE must have a codimensionAllocatable component %s at %L of type LOCK_TYPE must have a codimensionAllocatable component of structure at %C must have a deferred shapeAllocatable component or deferred-shaped array near %C in DATA statementAllocatable function %qs at %L must have an explicit function interfaceAllocate local variables on the stack to allow indirect recursion.Allocate-object at %C is not a nonprocedure pointer nor an allocatable variableAllocate-object at %L also appears at %LAllocate-object at %L has rank %d but MOLD= expression at %L has rank %dAllocate-object at %L is neither a data pointer nor an allocatable variableAllocate-object at %L is subobject of object at %LAllocate-object at %L must be ALLOCATABLE or a POINTERAllocate-object at %L with a deferred type parameter requires either a type-spec or SOURCE tag or a MOLD tagAllocating %s at %L with type-spec requires the same character-length parameter as in the declarationAllocating %s of ABSTRACT base type at %L requires a type-spec or source-exprAllocator %qs at %L in USES_ALLOCATORS must be a scalar integer of kind %<omp_allocator_handle_kind%>Allocator %qs at %L in USES_ALLOCATORS must either a variable or a predefined allocatorAllow (or do not allow) gcc to use the LOOP instruction.Allow IEC559 floating point exceptions in constant expressions.Allow a BOZ literal constant to appear in an invalid context and with X instead of Z.Allow access to instance variables as if they were local declarations within instance method implementations.Allow arbitrary character line width in fixed mode.Allow arbitrary character line width in free mode.Allow bit-fields to cross word boundaries.Allow branches to be packed with other instructions.Allow built-in functions ceil, floor, round, trunc to raise "inexact" exceptions.Allow dollar signs in entity names.Allow fast jumps to the message dispatcher.Allow function addresses to be held in registers.Allow gcc to generate LIW instructions.Allow gcc to generate the SETLB and Lcc instructions.Allow hardware floating-point instructions to cover both 32-bit and 64-bit operations.Allow implicit conversions between vectors with differing numbers of subparts and/or differing element types.Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker.Allow math optimizations that may violate IEEE or ISO standards.Allow optimization for floating-point arithmetic which may change the result of the operation due to rounding.Allow premature scheduling of queued insns.Allow readonly data in sdata.Allow removal of malloc and free pairs when allocated block is unused.Allow sign extension in fusion operations.Allow speculative motion of more loads.Allow speculative motion of non-loads.Allow speculative motion of some loads.Allow the arguments of the '?' operator to have different types.Allow the compiler to introduce new data races on stores.Allow the store merging pass to introduce unaligned stores if it is legal to do so.Allow the use of MDMX instructions.Allow the use of MT instructions.Allow the use of hardware floating point instructions for V850E2V3 and up.Allow the use of hardware floating-point ABI and instructions.Allow to use truncation instead of rounding towards zero for fractional fixed-point types.Allow two instructions to be issued per cycle.Allow use r15 for inline ASM.Already inside a CONTAINS block at %CAlternate RETURN statement at %C is only allowed within a SUBROUTINEAlternate RETURN statement at %L requires a SCALAR-INTEGER return specifierAlternate calling convention.Alternate return at %L is not permitted in a DTIO procedureAlternate return cannot appear in operator interface at %LAlternate return dummy argument cannot appear in a SUBROUTINE with the BIND(C) attribute at %LAlternate return specifier in elemental subroutine %qs at %L is not allowedAlternate return specifier in function %qs at %L is not allowedAlternate-return argument at %CAlthough not referenced, %qs has ambiguous interfaces at %LAltiVec argument passed to unprototyped functionAltiVec not supported in this targetAlways align function entry, jump target and return address.Always generate long calls.Always inline subword atomic operations.Always save $lp in the stack.Always treat bitfields as int-sized.Always use Dynamic Realigned Argument Pointer (DRAP) to realign stack.Always use JSR, never BSR, for calls.Ambiguous !$OMP DECLARE REDUCTION from module %s at %LAmbiguous interfaces in %s for %qs at %L and %qs at %LAmbiguous symbol in TYPE definition at %CAmend appropriate diagnostic messages with the command line option that controls them.Amount of local data-share (LDS) memory to reserve for gang-private variables.An ALLOCATOR clause is required as the list item %<%s%s%s%> at %L has the SAVE attributeAn alias for minterlink-compressed provided for backward-compatibility.An alternate return at %L without a * dummy argumentAn indirect edge from %s is not marked as indirect or has associated indirect_info, the corresponding statement is: An outer FORALL construct already has an index with this name %LAnalyze and remove doubleword swaps from VSX computations.Analyzed alias has no referenceAnnotate assembler instructions with estimated addresses.Annotate table jump instruction (jr {reg}) to correlate it with the jump table.Append a second underscore if the name already contains an underscore.Append underscores to externally visible names.Apply negative sign to zero values.Apply special rules for compiling runtime package.Apply variable expansion when loops are unrolled.Approximate function insn number in 1K units triggering simple local RA.Approximate the effect of function calls to simplify analysis.Argument %<A%> with INTENT(INOUT) at %L of the intrinsic subroutine %s shall not have a vector subscriptArgument %<S%> of NEAREST at %L shall not be zeroArgument %qs appears twice in call to %qs at %LArgument %qs at %L to declarative !$OMP ALLOCATE directive must be a variableArgument %qs at %L to declarative !$OMP ALLOCATE shall be in the same scope as the variable declarationArgument %qs at %L to list item in %<need_device_addr%> at %L must not have the VALUE attributeArgument %qs at %L to list item in %<need_device_ptr%> at %L must be a scalar of TYPE(C_PTR)Argument %qs of %qs intrinsic at %L must be in type conformance to argument %qs at %LArgument %qs of %qs with PASS(%s) at %L may not be ALLOCATABLEArgument %qs of %qs with PASS(%s) at %L may not have the POINTER attributeArgument %qs of %qs with PASS(%s) at %L must be of the derived type %qsArgument %qs of %qs with PASS(%s) at %L must be of the derived-type %qsArgument %qs of %qs with PASS(%s) at %L must be of the parametric derived-type %qsArgument %qs of %qs with PASS(%s) at %L must be scalarArgument %qs of MOD at %L shall not be zeroArgument %qs of MODULO at %L shall not be zeroArgument %qs of elemental procedure %qs at %L must have its INTENT specified or have the VALUE attributeArgument %qs of elemental procedure at %L cannot have the ALLOCATABLE attributeArgument %qs of elemental procedure at %L cannot have the POINTER attributeArgument %qs of elemental procedure at %L must be scalarArgument %qs of pure function %qs at %L must be INTENT(IN) or VALUEArgument %qs of pure function %qs at %L with VALUE attribute but without INTENT(IN)Argument %qs of pure subroutine %qs at %L must have its INTENT specified or have the VALUE attributeArgument %qs of pure subroutine %qs at %L with VALUE attribute but without INTENTArgument %qs of statement function %qs at %L must be scalarArgument CPTR at %L to C_F_POINTER shall have the type TYPE(C_PTR)Argument CPTR at %L to C_F_PROCPOINTER shall have the type TYPE(C_FUNPTR)Argument C_PTR_1 at %L to C_ASSOCIATED shall have the type TYPE(C_PTR) or TYPE(C_FUNPTR)Argument C_PTR_2 at %L to C_ASSOCIATED shall have the same type as C_PTR_1, found %s instead of %sArgument FPTR at %L to C_F_POINTER must be a pointerArgument FPTR at %L to C_F_POINTER shall not be coindexedArgument FPTR at %L to C_F_PROCPOINTER shall be a procedure pointerArgument FPTR at %L to C_F_PROCPOINTER shall not be coindexedArgument NCOPIES of REPEAT intrinsic is negative (its value is %ld)Argument NCOPIES of REPEAT intrinsic is negative at %LArgument NCOPIES of REPEAT intrinsic is too largeArgument NCOPIES of REPEAT intrinsic is too large at %LArgument X at %L to C_FUNLOC shall be a procedure or a procedure pointerArgument X at %L to C_FUNLOC shall not be coindexedArgument X at %L to C_LOC shall be not be a zero-sized stringArgument X at %L to C_LOC shall have either the POINTER or the TARGET attributeArgument X at %L to C_LOC shall not be coindexedArgument at %L to C_LOC shall not be polymorphicArgument dim at %L must be of INTEGER typeArgument dim at %L must be scalarArgument index at %L exceeds number of arguments %dArgument mismatch for the overriding procedure %qs at %L: %sArgument of %s at %L must be of length oneArgument of %s function at %L is negativeArgument of %s function at %L is too large for the collating sequence of kind %dArgument of %s function at %L outside of range [0,127]Argument of ACOS at %L must be between -1 and 1Argument of ACOSD at %L must be between -1 and 1Argument of ACOSH at %L must not be less than 1Argument of ASIN at %L must be between -1 and 1Argument of ASIND at %L must be between -1 and 1Argument of ATANH at %L must be inside the range -1 to 1Argument of FINAL procedure at %L must be of type %qsArgument of FINAL procedure at %L must not be ALLOCATABLEArgument of FINAL procedure at %L must not be INTENT(OUT)Argument of FINAL procedure at %L must not be OPTIONALArgument of FINAL procedure at %L must not be a POINTERArgument of IACHAR at %L must be of length oneArgument of IACHAR function at %L outside of range 0..127Argument of ICHAR at %L must be of length oneArgument of LOG at %L cannot be less than or equal to zeroArgument of LOG10 at %L cannot be less than or equal to zeroArgument of SELECT statement at %L cannot be %sArgument of SELECT statement at %L must be a scalar expressionArgument of SQRT at %L has a negative valueArgument to %<-fcheck%> is not valid: %sArgument to %<-ffpe-summary%> is not valid: %sArgument to %<-ffpe-trap%> is not valid: %sArgument types of %qs intrinsic at %L must match (%s/%s)Arguments of %qs at %L and %L cannot both be BOZ literal constantsArguments of %qs have different kind type parameters at %LArithmetic IF statement at %CArithmetic IF statement at %L requires a scalar REAL or INTEGER expressionArithmetic NaN at %LArithmetic NaN converting %s to %s at %L. This check can be disabled with the option %<-fno-range-check%>Arithmetic OK at %LArithmetic OK converting %s to %s at %LArithmetic overflow at %LArithmetic overflow converting %s to %s at %L. This check can be disabled with the option %<-fno-range-check%>Arithmetic underflow at %LArithmetic underflow converting %s to %s at %L. This check can be disabled with the option %<-fno-range-check%>Array %qs at %L cannot have a deferred shapeArray %qs at %L is a variable, which does not reduce to a constant expressionArray %qs at %L is larger than limit set by %<-fmax-stack-var-size=%>, moved from stack to static storage. This makes the procedure unsafe when called recursively, or concurrently from multiple threads. Consider increasing the %<-fmax-stack-var-size=%> limit (or use %<-frecursive%>, which implies unlimited %<-fmax-stack-var-size%>) - or change the code to use an ALLOCATABLE array. If the variable is never accessed concurrently, this warning can be ignored, and the variable could also be declared with the SAVE attribute.Array %qs at %L with non-constant bounds cannot be an EQUIVALENCE objectArray %qs is not permitted in reduction at %LArray bound mismatch for dimension 1 of array (%ld/%ld)Array bound mismatch for dimension 2 of array (%ld/%ld)Array component of structure at %C must have an explicit shapeArray component of structure at %C must have explicit or deferred shapeArray constructor including type specification at %CArray constructor value %qs at %L is of the ABSTRACT type %qsArray constructor value at %L shall not be unlimited polymorphic [F2008: C4106]Array entity required at %LArray in initializer list at %L must have an explicit shapeArray index at %L is an array of rank %dArray index at %L must be of INTEGER type, found %sArray index at %L must be scalarArray is not contiguous at %LArray of interoperable type at %L to C_LOC which is nonallocatable and neither assumed size nor explicit sizeArray operands are incommensurate at %LArray operands are incommensurate converting %s to %s at %LArray pointer %qs at %L must have a deferred shape or assumed rankArray reference at %C cannot have more than %d dimensionsArray reference at %C has more than 7 dimensionsArray reference at %L is out of bounds (%ld < %ld) in codimension %dArray reference at %L is out of bounds (%ld < %ld) in dimension %dArray reference at %L is out of bounds (%ld > %ld) in codimension %dArray reference at %L is out of bounds (%ld > %ld) in dimension %dArray reference at %L out of bounds (%ld < %ld) in loop beginning at %LArray reference at %L out of bounds (%ld > %ld) in loop beginning at %LArray reference in EQUIVALENCE at %C cannot be an array sectionArray reference out of boundsArray section at %L to C_LOCArray section designator, e.g. %<(:)%>, is required besides the coarray designator %<[...]%> at %CArray section with a vector subscript at %L shall not be the target of a pointerArray sections: %qs not allowed in !$ACC DECLARE at %LArray specification at %C has more than %d dimensionsArray specification at %C with more than 7 dimensionsArray specification for symbol %qs in COMMON at %C must be explicitArray specification must be deferred at %LArray specification or array-valued SOURCE= expression required in ALLOCATE statement at %LArray specification required in ALLOCATE statement at %LArray-section actual argument at %L is incompatible with the non-assumed-shape dummy argument %qs due to VOLATILE attributeArray-section actual argument with vector subscripts at %L is incompatible with INTENT(OUT), INTENT(INOUT), VOLATILE or ASYNCHRONOUS attribute of the dummy argument %qsAs extending type %qs at %L has a coarray component, parent type %qs shall also have oneAssembler options
  =================
  
! Assigned GOTO statement at %CAssigned label is not a target labelAssigning value other than 0 or 1 to LOGICAL has undefined result at %LAssignment of scalar to unallocated arrayAssignment operator interface at %L must be a SUBROUTINEAssignment operator interface at %L must have two argumentsAssignment operator interface at %L must not redefine an INTRINSIC type assignmentAssignment to a FORALL index variable at %LAssignment to a LEN or KIND part_ref at %L is not allowedAssignment to a constant expression at %CAssignment to an allocatable polymorphic variable at %LAssignment to an allocatable polymorphic variable at %L requires %<-frealloc-lhs%>Assignment to coindexed variable at %L in a PURE procedureAssignment to contiguous pointer from non-contiguous target at %LAssignment to polymorphic coarray at %L is not permittedAssociate name %qs in %s clause at %LAssociate name %qs in SHARED clause at %LAssociate-name %qs at %L is used as arrayAssociate-name %qs cannot appear in a variable definition context (%s) at %L because its target at %L cannot, eitherAssociating entity %qs at %L is a procedure nameAssociating entity %qs at %L is a procedure pointerAssociating selector-expression at %L yields a procedureAssociation target at %C must not be coindexedAssociation target at %L cannot be a BOZ literal constantAssume C++ replaceable global operators new, new[], delete, delete[] don't read or write visible global state.Assume ES is zero throughout program execution, use ES: for read-only data.Assume ICPLBs are enabled at runtime.Assume a large TLS segment.Assume all symbols have 32-bit values.Assume all variable arg functions are prototyped.Assume assembler support for (DWARF2+) .loc directives.Assume assembler support for view in (DWARF2+) .loc directives.Assume code will be assembled by GAS.Assume code will be linked by GNU ld.Assume code will be linked by HP ld.Assume common declarations may be overridden with ones with a larger trailing array.Assume data segments are relative to text segment.Assume external symbols, whose natural alignment would be 1, to be potentially unaligned.  By default all symbols without explicit alignment are assumed to reside on a 2 byte boundary as mandated by the IBM Z ABI.Assume floating-point operations can trap.Assume incoming stack aligned to this power of 2.Assume labels and symbols can be addressed using 16 bit absolute addresses.Assume loading data from flash is slower than fetching instructions.Assume memory references are ordered and barriers are not needed.Assume no NaNs or infinities are generated.Assume normal C execution environment.Assume pointer overflow wraps around.Assume possible double misalignment.Assume round to nearest is selected for purposes of scheduling.Assume signed arithmetic overflow wraps around.Assume small address space.Assume strict aliasing rules apply across (uninlined) function boundaries.Assume strict aliasing rules apply.Assume target CPU is configured as big endian.Assume target CPU is configured as little endian.Assume that all data in static storage can be accessed by LDS / STS instructions.  This option is only useful for reduced Tiny devices like ATtiny40.Assume that floating-point stores and loads are not likely to cause conflict when placed into one instruction group.Assume that loops with an exit will terminate and not loop indefinitely.Assume that receivers of Objective-C messages may be nil.Assume that run-time support has been provided, so omit -lsim from the linker command line.Assume that standard D runtime libraries and "D main" exist.Assume that the reciprocal estimate instructions provide more accuracy.Assume that the source file is fixed form.Assume that the source file is free form.Assume that values of enumeration type are always within the minimum range of that type.Assume that zero displacement conditional branches are fast.Assume the VxWorks RTP environment.Assume the VxWorks vThreads environment.Assume unified syntax for inline assembly code.Assumed or deferred character length variable %qs in constant expression at %LAssumed rank argument to the RESHAPE intrinsic at %L must be contiguousAssumed rank array %qs in %s clause at %LAssumed shape array %qs at %L is not permitted in an initialization expressionAssumed shape array at %L must be a dummy argumentAssumed size array %qs at %L is not permitted in an initialization expressionAssumed size array %qs in %s clause at %LAssumed size array %qs in COPYPRIVATE clause at %LAssumed size array %qs in namelist %qs at %C is not allowedAssumed size array %qs in namelist %qs at %L is not allowedAssumed size array at %L must be a dummy argumentAssumed type at %CAssumed type at %C is not allowed for componentsAssumed type of variable %s at %L is only permitted for dummy variablesAssumed-length character dummy argument %qs at %L of procedure %qs with BIND(C) attributeAssumed-rank argument at %L is only permitted as actual argument to intrinsic inquiry functions or to RESHAPE. The latter is an experimental F202y feature. Use -std=f202y to enableAssumed-rank argument at %L is only permitted as first actual argument to the intrinsic inquiry function %sAssumed-rank argument requires an explicit interface at %LAssumed-rank array %qs at %L is not permitted in an initialization expressionAssumed-rank array at %CAssumed-rank array at %L may not have the VALUE or CODIMENSION attributeAssumed-rank array at %L must be a dummy argumentAssumed-rank variable %s at %L as actual argument to an inquiry function shall be the first argumentAssumed-rank variable %s at %L may only be used as actual argumentAssumed-rank variable %s at %L shall not have a subobject referenceAssumed-shape actual argument at %L is incompatible with the non-assumed-shape dummy argument %qs due to VOLATILE attributeAssumed-shape array %qs at %L as dummy argument to the BIND(C) procedure %qs at %LAssumed-shape array %qs at %L is not permitted in an initialization expressionAssumed-size array not permitted for %qs in %s locality-spec at %LAssumed-size arrays are not interoperableAssumed-size dummy array with !$ACC DECLARE at %LAssumed-type actual argument at %L corresponding to assumed-rank dummy argument %qs must be assumed-shape or assumed-rankAssumed-type actual argument at %L requires that dummy argument %qs is of assumed typeAssumed-type argument %s at %L requires an explicit interfaceAssumed-type argument at %L is not permitted as actual argument to the intrinsic %sAssumed-type argument at %L is only permitted as first actual argument to the intrinsic %sAssumed-type variable %s at %L as actual argument to an inquiry function shall be the first argumentAssumed-type variable %s at %L may not have the ALLOCATABLE, CODIMENSION, POINTER or VALUE attributeAssumed-type variable %s at %L may not have the INTENT(OUT) attributeAssumed-type variable %s at %L may only be used as actual argumentAssumed-type variable %s at %L shall not be an explicit-shape arrayAssumed-type variable %s at %L shall not have a subobject referenceAt global scope:At most %i profile runs is supported. Perhaps corrupted profile?At top level:Attempt to DEALLOCATE unallocated '%s'Attempt to fill delay slots of branch instructions.Attempt to indirectly overlap COMMON blocks %s and %s by EQUIVALENCE at %CAttempt to keep stack aligned to this power of 2.Attempt to merge identical constants across compilation units.Attempt to merge identical constants and constant variables.Attempt to merge identical debug strings across compilation units.Attempting an assignment of differing types.Attempting to allocate already allocated variableAttempting to allocate already allocated variable '%s'Attempting to send to an input device.Attribute %s at %L in a TYPE definitionAttribute at %L is not allowed in a STRUCTURE definitionAttribute at %L is not allowed in a TYPE definitionAttribute at %L is not allowed outside a TYPE definitionAugment variable location lists with progressive views.AutoFDO profile magic number does not matchAutoFDO profile version %u does not match %uAutomatic array %qs at %L cannot have an initializerAutomatic object %qs at %L cannot appear in COMMON at %LAutomatic object %qs at %L cannot have the SAVE attributeAutomatically adds space for longer path names in load commands (up to MAXPATHLEN).Automatically align branch targets to reduce branch penalties.Available BITS selections:Average number of iterations of a loop.Avoid all range limits on call instructions.Avoid combining multiple statements into one exploded edge.Avoid generating pc-relative calls; use indirection.Avoid generation of indexed load/store instructions when possible.Avoid overlapping destination and address registers on LDRD instructions that may trigger Cortex-M3 errata.Avoid placing any readable data in program memory.Avoid speculative loads to work around a hardware anomaly.Avoid use of the DIV and MOD instructions.Avoid using the GOT to access external symbols.BB %i cannot throw but has an EH edgeBB %i has incorrect edgeBB %i has incorrect fallthru edgeBB %i has multiple EH edgesBB %i is missing an EH edgeBB %i is missing an edgeBB %i last statement has incorrectly set lpBB %i too many fallthru edgesBB_RTL flag not set for block %dBIND(C) Variable %qs at %L must have length oneBIND(C) applied to %s %s at %LBIND(C) at %LBIND(C) attribute at %C requires an interface with BIND(C)BIND(C) attribute at %L can only be used for variables or common blocksBIND(C) attribute at %L may not be specified for an internal procedureBIND(C) procedure with NAME may not have POINTER attribute at %CBIND(C) statement at %CBLANK= at %L not allowed in Fortran 95BLOCK DATA construct at %LBLOCK DATA element %qs at %L must be in COMMONBLOCK construct at %CBOZ at %L cannot appear in an old-style initializationBOZ constant at %C uses nonstandard postfix syntaxBOZ constant at %L cannot appear in the COMPLEX intrinsic subprogramBOZ constant truncated at %LBOZ literal constantBOZ literal constant at %L cannot appear as an initializerBOZ literal constant at %L cannot appear in ACHAR intrinsic subprogramBOZ literal constant at %L cannot appear in CHAR intrinsic subprogramBOZ literal constant at %L cannot appear in a structure constructorBOZ literal constant at %L cannot appear in an array constructorBOZ literal constant at %L cannot appear in an output IO listBOZ literal constant at %L cannot appear in the FLOAT intrinsic subprogramBOZ literal constant at %L cannot be an actual argument to %qsBOZ literal constant at %L cannot be an operand of unary operator %qsBOZ literal constant at %L is neither a DATA statement value nor an actual argument of INT/REAL/DBLE/CMPLX intrinsic subprogramBOZ literal constant near %L cannot appear as an operand of a relational operatorBOZ literal constant near %L cannot be assigned to a %qs variableBOZ literal constant near %L cannot be assigned to a %qs variable in an old-style initializationBOZ used outside a DATA statement at %LBPF CO-RE does not support LTOBPF CO-RE requires BTF debugging information, use %<-gbtf%>BYTE type at %CBYTE type used at %C is not available on the target machineBad 128-bit moveBad GPR fusionBad INTENT specification at %CBad IO basetype (%d)Bad allocate-object at %C for a PURE procedureBad array dimension at %LBad array reference at %LBad array spec of component %qs referenced in structure constructor at %LBad array specification for an explicitly shaped array at %CBad array specification for assumed shape array at %CBad array specification for implied-shape array at %CBad array specification in ALLOCATE statement at %LBad bounds remapping list at %CBad character %qc in OPERATOR name at %CBad coarray specification in ALLOCATE statement at %LBad continuation line at %CBad kind expression for function %qs at %LBad kind for logical constant at %CBad nameBad operatorBad shape of initializer at %LBad specification for assumed size array at %CBad specification for assumed size array at %LBad specification for deferred shape array at %CBad target in pointer assignment in PURE procedure at %LBad type in constant expressionBad type in gfc_simplify_signBase ABI types for LoongArch:Base object for NOPASS type-bound procedure call at %L must be scalarBase object for procedure-pointer component call at %L is of ABSTRACT type %qsBase object for type-bound procedure call at %L is of ABSTRACT type %qsBasic ISAs of LoongArch:Binding at %C must have the same access as already defined binding %qsBinding attributes already specify passing, illegal NOPASS at %CBinding attributes already specify passing, illegal PASS at %CBlank BLOCK DATA at %C conflicts with prior BLOCK DATA at %LBlank required in %s statement near %CBlanket SAVE statement at %C follows previous SAVE statementBlock label is not appropriate for IF statement at %CBlock label not appropriate for arithmetic IF statement at %CBoard name [and memory region].Both MONOTONIC and NONMONOTONIC schedule modifiers specified at %LBoth section and comdat group is setBound on number of candidates below that all candidates are considered in iv optimizations.Bound on number of iv uses in loop optimized in iv optimizations.Bound on number of runtime checks inserted by the vectorizer's loop versioning for alias check.Bound on number of runtime checks inserted by the vectorizer's loop versioning for alignment check.Bound on size of expressions used in the scalar evolutions analyzer.Bound on the complexity of the expressions in the scalar evolutions analyzer.Bound on the cost of an expression to compute the number of iterations.Bound on the number of iterations the brute force # of iterations analysis algorithm evaluates.Bounds specification for %qs in pointer assignment at %LBranch at %L may result in an infinite loopBranches are this expensive (arbitrary units).Branches executed:%s of %d
! Build for Core A.Build for Core B.Build for SDRAM.Building block for specs-based multilib-aware TFLAGS.Builtin %qF requires z14 or higherBuiltin %qF requires z15 or higherBuiltin %qF requires z17 or higherBuiltin not implementedBy-value argument at %L cannot be an array or an array sectionBy-value argument at %L is not allowed in this contextBy-value argument at %L is not of numeric typeC interoperable character dummy variable %qs at %L with VALUE attribute must have length oneC kind type parameter is for type %s but type at %L is %sC++ constructors and destructors will not be invoked for Objective-C fieldsC++ designated initializers only available with %<-std=c++20%> or %<-std=gnu++20%>C++ lookup of %qD would return a field, not a typeC++ modules are incompatible with precompiled headersC++ modules are incompatible with traditional preprocessingC++ requires promoted type, not enum type, in %<va_arg%>C++11 %<constexpr%> only available with %<-std=c++11%> or %<-std=gnu++11%>C++11 %<noexcept%> only available with %<-std=c++11%> or %<-std=gnu++11%>C++11 %<thread_local%> allows dynamic initialization and destructionC++11 %<thread_local%> only available with %<-std=c++11%> or %<-std=gnu++11%>C++11 attributes only available with %<-std=c++11%> or %<-std=gnu++11%>C++11 auto only available with %<-std=c++11%> or %<-std=gnu++11%>C++20 %<constinit%> only available with %<-std=c++20%> or %<-std=gnu++20%>C++20 %qE only available with %<-fmodules%>C++20 %qE only available with %<-fmodules%>, which is not yet enabled with %<-std=c++20%>C++20 concept definition syntax is %<concept <name> = <expr>%>C++20 says that these are ambiguous, even though the second is reversed:C99 designator %qE is not an integral constant-expressionC99 designator %qE outside aggregate initializerCALL USING BY CONTENT <temporary> would require REPOSITORY PROTOTYPES.CASE label at %L overlaps with CASE label at %LCCTL intrinsic function subtype out of rangeCDF: exception '%s'CFString literal expression is not a string constantCFString literal is missingCHANGE TEAM statement at %CCHARACTER expression at %L is being truncated (%ld/%ld)CHARACTER expression will be truncated in assignment (%wd/%wd) at %LCHARACTER expression will be truncated in constructor (%td/%td) at %LCHARACTER length in !$OMP DECLARE REDUCTION %s not constant at %LCHARACTER length must be a constant at %LCHARACTER(*) function %qs at %LCHARACTER(*) function %qs at %L cannot be array-valuedCHARACTER(*) function %qs at %L cannot be pointer-valuedCHARACTER(*) function %qs at %L cannot be pureCHARACTER(*) function %qs at %L cannot be recursiveCLASS entity at %C cannot have the PARAMETER attributeCLASS selector at %L needs a temporary which is not yet implementedCLASS statement at %CCLASS variable %qs at %L cannot have the PARAMETER attributeCLASS variable %qs at %L must be dummy, allocatable or pointerCLOSE statement at %L requires a UNIT numberCLOSE statement not allowed in PURE procedure at %CCOBOL requires a 64-bit configurationCODIMENSION specified for %qs outside its INTERFACE body at %LCOLLAPSE clause argument not constant positive integer at %CCOLLECT_GCC must be set.COMMON %qs at %L does not existCOMMON %qs at %L requires %d bytes of padding; reorder elements or use %<-fno-align-commons%>COMMON at %L mentioned multiple times in clauses of the same OMP DECLARE TARGET directiveCOMMON at %L requires %d bytes of padding; reorder elements or use %<-fno-align-commons%>COMMON at %L set in previous OMP DECLARE TARGET directive to a different DEVICE_TYPECOMMON block %</%s/%> not found at %LCOMMON block %qs at %L cannot have the EXTERNAL attributeCOMMON block %qs at %L is also an intrinsic procedureCOMMON block %qs at %L is used as PARAMETER at %LCOMMON block %qs at %L that is also a function resultCOMMON block %qs at %L that is also a global procedureCOMMON block %qs at %L uses the same global identifier as entity at %LCOMMON block /%s/ not found at %CCOMMON block at %LCOMMON block at %L with binding label %qs uses the same global identifier as entity at %LCOMMON block member %qs at %L cannot be an EQUIVALENCE object in the pure procedure %qsCOMMON variable %qs at %L must have constant character lengthCOMPLEX argument %qs of %qs intrinsic at %LCOMPLEX quantities cannot be compared at %LCONTAINS block in derived type definition at %CCONTAINS statement at %C is already in a contained program unitCONTAINS statement without FUNCTION or SUBROUTINE statement at %LCONTIGUOUS attribute at %CCONTIGUOUS statement at %CCONVERT tag at %LCOUNT argument of the EVENT_QUERY intrinsic function at %L shall be definableCOUNT argument of the EVENT_QUERY intrinsic function at %L shall have at least the range of the default integerCOUNT argument to SYSTEM_CLOCK at %L has non-default kindCOUNT argument to SYSTEM_CLOCK at %L with kind smaller than default integerCOUNT_MAX argument to SYSTEM_CLOCK at %L has non-default kindCOUNT_MAX argument to SYSTEM_CLOCK at %L with kind smaller than default integerCOUNT_RATE argument to SYSTEM_CLOCK at %L has non-default kindCOUNT_RATE argument to SYSTEM_CLOCK at %L with kind smaller than default integerCPU you selected does not support x86-64 instruction setCRIS-port assertion failed: %sCRITICAL block inside of OpenACC region at %CCRITICAL block inside of OpenMP region at %CCRITICAL statement at %CCTF debug info requested, but not supported for %qs frontendCYCLE statement at %C is not applicable to non-loop construct %qsCYCLE statement at %C to non-innermost collapsed !$ACC LOOP loopCYCLE statement at %C to non-innermost collapsed !$OMP DO loopCYCLE statement at %C to non-innermost tiled !$ACC LOOP loopCall main and exit (default).Call mcount for profiling before a function prologue.Call the dump function for variables and function in IL.Caller copies function arguments passed by hidden reference.Calls executed:%s of %d
! Cannot IMPORT %qs from host scoping unit at %C - does not exist.Cannot USE a module that is currently builtCannot USE a submodule that is currently builtCannot assign %s to %s at %LCannot change attributes of USE-associated symbol %s at %LCannot change attributes of USE-associated symbol at %LCannot change directory to %sCannot compute the length of the char array at %L.Cannot construct ABSTRACT type %qs at %LCannot convert %qs to %qs at %LCannot convert %qs to interoperable type at %LCannot convert %s to %s at %LCannot delete module file %qs: %sCannot delete temporary module file %qs: %sCannot determine shape of initializer at %LCannot find an intrinsic module named %qs at %CCannot find function declaration for %qsCannot find keyword named %qs in call to %qs at %LCannot find suitable multilib set for %<-march=%s%>/%<-mabi=%s%>Cannot find symbol %qs at %LCannot get current directory nameCannot initialize implied-shape array at %L with scalarCannot initialize parameter array at %L with variable length elementsCannot make directory %sCannot map %sCannot open %sCannot open JSON output file %s
  Cannot open file %qsCannot open included file %qsCannot open module file %qs for reading at %C: %sCannot open module file %qs for writing at %C: %sCannot open omp_requires file %qsCannot open pre-included file %qsCannot open source file %s
  Cannot overwrite GENERIC %qs at %LCannot read %sCannot read module file %qs opened at %C, because it was created by a different version of GNU FortranCannot rename module file %qs to %qs: %sCannot set Cray pointee array spec.Cannot set pointee array spec.Cannot simplify expression at %LCannot specify IMPLICIT at %C after IMPLICIT NONECatch typos.Cause gas to print tomcat statistics.Cgraph edge statement index not foundCgraph edge statement index out of rangeChained transparent aliasesChange of value in conversion from %qs to %qs at %LChange only the low 8 bits of the stack pointer.Change the ABI to allow double word insns.Change the amount of scheduler lookahead.Change the maximum length of conditionally-executed sequences.Change the number of temporary registers that are available to conditionally-executed sequences.Change the stack pointer without disabling interrupts.Changes visibility to match Microsoft Visual Studio by default.Character %qs in string at %C is not representable in character kind %dCharacter %qs in string at %L cannot be converted into character kind %dCharacter component %qs of %qs at %L with deferred length must be a POINTER or ALLOCATABLECharacter dummy argument %qs at %L must be of constant length of one or assumed length, unless it has assumed shape or assumed rank, as procedure %qs has the BIND(C) attributeCharacter dummy argument %qs at %L must be of length 1 as it has the VALUE attributeCharacter dummy variable %qs at %L with VALUE attribute must have constant lengthCharacter length expression of component %qs at %L must be of INTEGER type, found %sCharacter length mismatch (%ld/%ld) between actual argument and assumed-shape dummy argument %qs at %LCharacter length mismatch (%ld/%ld) between actual argument and pointer or allocatable dummy argument %qs at %LCharacter length of actual argument shorter than of dummy argument %qs (%lu/%lu) at %LCharacter length of component %qs needs to be a constant specification expression at %LCharacter literal at %L must start with %<ompx_%>Character-valued argument %qs of statement function at %L must have constant lengthCharacter-valued internal function %qs at %L must not be assumed lengthCharacter-valued module procedure %qs at %L must not be assumed lengthCharacter-valued statement function %qs at %L must have constant lengthCheck CFR execution paths also before calls followed by returns of their results.Check CFR execution paths also when exiting a function through an exception.Check for stack overflow at runtime.Check for syntax errors, then stop.Check the return value of new in C++.Chose strategy to generate stringop using.Chunk size of omp schedule for loops parallelized by parloops.Clause expected at %CClause expected at %C after trailing commaClear all tune features.Clear call-used registers upon function return.Clear hardware capabilities when linking.Clear the BSS to zero and place zero initialized in BSS.Coarray component %qs at %L must be allocatable with deferred shapeCoarray declaration at %CCoarray designator at %C but %qs is not a coarrayCoarray dummy argument %qs at %L to elemental procedureCoarray dummy variable %qs at %L not allowed in BIND(C) procedure %qsCoarray not permitted for %qs in %s locality-spec at %LCoarray specification required in ALLOCATE statement at %LCoarray variable %qs at %L shall not have codimensions with deferred shape without allocatableCoarrays are not interoperableCoarrays disabled at %C, use %<-fcoarray=%> to enableCoarrays disabled at %L, use %<-fcoarray=%> to enableCode for reallocating the allocatable array at %L will be addedCode for reallocating the allocatable variable at %L will be addedCode size: small, medium or large.Coindex of codimension %d must be a scalar at %LCoindex rank mismatch in array reference at %L (%d/%d)Coindexed ASYNCHRONOUS or VOLATILE actual argument at %L requires that dummy %qs has neither ASYNCHRONOUS nor VOLATILECoindexed actual argument at %L in PURE procedure is passed to a POINTER dummy argumentCoindexed actual argument at %L in PURE procedure is passed to an INTENT(%s) argumentCoindexed actual argument at %L to allocatable dummy %qs requires INTENT(IN)Coindexed actual argument at %L to pointer dummy %qsCoindexed actual argument at %L with allocatable ultimate component to dummy %qs requires either VALUE or INTENT(IN)Coindexed actual argument at %L with ultimate pointer componentCoindexed allocatable object at %LCoindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedureCoindexed expression to pointer component %qs in structure constructor at %LCoindexed object with polymorphic allocatable subcomponent at %LCoindexed polymorphic actual argument at %L is passed polymorphic dummy argument %qsCoindexed procedure-pointer component at %CCoindexed variable must not have an allocatable ultimate component in assignment at %LCollect and dump debug information into temporary file if ICE in C/C++ compiler occurred.Comma after * at %C not allowed without I/O listComma before i/o item list at %LComma expected at %CComma required after P descriptor in format string at %LCompile code for big endian mode.Compile code for little endian mode.  This is the default.Compile code that relies on Cygwin DLL wrappers to support C++ operator new/delete replacement.Compile for 32-bit pointers.Compile for 64-bit pointers.Compile for ETRAX 100 (CRIS v8).Compile for ETRAX 4 (CRIS v3).Compile for V8+ ABI.Compile for devices requiring XNACK enabled. Default "any" if USM is supported.Compile for devices with the SRAM ECC feature enabled, or not. Default "any".Compile for the DSBT shared library ABI.Compile for the m32r.Compile for the m32r2.Compile for the m32rx.Compile for the v850 processor.Compile for the v850e processor.Compile for the v850e1 processor.Compile for the v850e2 processor.Compile for the v850e2v3 processor.Compile for the v850e3v5 processor.Compile for the v850es variant of the v850e1.Compile in debug code.Compile in unittest code.Compile release version.Compile whole compilation unit at a time.Compile-time bonus IPA-CP assigns to candidates which make loop bounds or strides known.Complain about a name being declared as a class member after a previous use of the same name.Complain when a command-line option is valid, but not applicable to the current front end.Complex argument of LOG at %L cannot be zeroComplex multiplication and division follow Fortran rules.Component %qs at %C already declared at %LComponent %qs at %C already in the parent type at %LComponent %qs at %C is a PRIVATE component of %qsComponent %qs at %L cannot have the ALLOCATABLE attribute because it is a member of the BIND(C) derived type %qs at %LComponent %qs at %L cannot have the POINTER attribute because it is a member of the BIND(C) derived type %qs at %LComponent %qs at %L has the CONTIGUOUS attribute but is not an array pointerComponent %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarrayComponent %qs at %L with coarray component shall be a nonpointer, nonallocatable scalarComponent %qs in derived type %qs at %L may not be C interoperableComponent %qs in derived type %qs at %L may not be C interoperable, even though derived type %qs is BIND(C)Component %qs is initialized twice in the structure constructor at %LComponent %qs of %qs at %L has the same name as an inherited type-bound procedureComponent %qs of BIND(C) type at %L must have length oneComponent %qs with CLASS at %C must be allocatable or pointerComponent %s at %L of type EVENT_TYPE must have a codimension or be a subcomponent of a coarray, which is not possible as the component has the pointer attributeComponent %s at %L of type LOCK_TYPE must have a codimension or be a subcomponent of a coarray, which is not possible as the component has the pointer attributeComponent %s of SEQUENCE type declared at %L does not have the SEQUENCE attributeComponent at %C must have the POINTER attributeComponent initializer without name after component named %s at %LComponent to the right of a part reference with nonzero rank must not have the ALLOCATABLE attribute at %LComponent to the right of a part reference with nonzero rank must not have the POINTER attribute at %LComponent with KIND attribute at %C must be INTEGERComponent with LEN attribute at %C must be INTEGERComponents in TYPE at %C must precede CONTAINSCompute locview reset points based on insn length estimates.Computed GOTO at %CConcat operator at %L must concatenate strings of the same kindConcatenation operator in expression at %L must have two CHARACTER operandsCondition outcomes covered:%s of %d
  Conditional moves for float are enabled.Conditional moves for integral are enabled.Configure the newlib board specific runtime.  The default is or1ksim.Configured with: %s
  Conflicting initializers in union at %L and %LConform more closely to IBM XLC semantics.Conform to nothing in particular.Conform to the ISO 1990 C standard as amended in 1994.Conform to the ISO 1990 C standard with GNU extensions.Conform to the ISO 1990 C standard.Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum with GNU extensions.Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum.Conform to the ISO 1999 C standard with GNU extensions.Conform to the ISO 1999 C standard.Conform to the ISO 2011 C standard with GNU extensions.Conform to the ISO 2011 C standard.Conform to the ISO 2011 C++ standard with GNU extensions.Conform to the ISO 2011 C++ standard.Conform to the ISO 2014 C++ standard with GNU extensions.Conform to the ISO 2014 C++ standard.Conform to the ISO 2017 C standard (published in 2018) with GNU extensions.Conform to the ISO 2017 C standard (published in 2018).Conform to the ISO 2017 C++ standard with GNU extensions.Conform to the ISO 2017 C++ standard.Conform to the ISO 2020 C++ standard (experimental and incomplete support).Conform to the ISO 2020 C++ standard with GNU extensions (experimental and incomplete support).Conform to the ISO 2023 C standard (published in 2024) with GNU extensions.Conform to the ISO 2023 C standard (published in 2024).Conform to the ISO 2023 C++ standard (published in 2024; experimental and incomplete support).Conform to the ISO 2023 C++ standard with GNU extensions (published in 2024; experimental and incomplete support).Conform to the ISO 2026 C++ draft standard (experimental and incomplete support).Conform to the ISO 2026 C++ draft standard with GNU extensions (experimental and incomplete support).Conform to the ISO 202Y C standard draft (experimental and incomplete support).Conform to the ISO 202Y C standard draft with GNU extensions (experimental and incomplete support).Conform to the ISO Fortran 2003 standard.Conform to the ISO Fortran 2008 standard including TS 29113.Conform to the ISO Fortran 2008 standard.Conform to the ISO Fortran 2018 standard.Conform to the ISO Fortran 2023 standard.Conform to the ISO Fortran 95 standard.Conform to the Objective-C 1.0 language as implemented in GCC 4.0.Conform to the o32 FPXX ABI.Consider access to byte sized memory slow.Consider type 'int' to be 16 bits wide.Consider type 'int' to be 32 bits wide.Consider using %<need_device_addr%> insteadConstant character expression required in MESSAGE clause at %LConstant expression in FORMAT tag at %L must be of type default CHARACTERConstant expression required at %CConstant logical value in CASE statement is repeated at %LConstant memcpy size in bytes above which to start using MOPS sequence.Constant memmove size in bytes above which to start using MOPS sequence.Constant memset size in bytes from which to start using MOPS sequence.Constant-type argument expectedConstruct webs and split unrelated uses of single variable.Contained function %qs at %L has no IMPLICIT typeContained procedure %qs at %C clashes with procedure defined at %LContained procedure %qs at %C is already ambiguousContained procedure %qs at %L has the same name as its encompassing procedureContained procedure %qs at %L of a PURE procedure must also be PUREControl generation of reciprocal estimates.Control ira to consider matching constraint (duplicated operand number) heavily in all available alternatives for preferred register class.  If it is set as zero, it means ira only respects the matching constraint when it's in the only available alternative with an appropriate register class.  Otherwise, it means ira will check all available alternatives for preferred register class even if it has found some choice with an appropriate register class and respect the found qualified matching constraint.Control the IEEE trap mode.Control the generated fp rounding mode.Control the precision given to fp exceptions.Control which events are displayed in diagnostic paths.Controls how loop vectorizer uses partial vectors.  0 means never, 1 means only for loops whose need to iterate can be removed, 2 means for all loops.  The default value is 2.Conversion from %qs to %qs at %LConversion from %s to %s at %LConversion from %s to default-kind COMPLEX(%d) at %L might lose precision, consider using the KIND argumentConversion of an Infinity or Not-a-Number at %L to INTEGERConvert BASE + LARGE_OFFSET addresses to NEW_BASE + SMALL_OFFSET to allow more memory accesses to be generated as compressed instructions.  Currently targets 32-bit integer load/stores.Convert conditional jumps in innermost loops to branchless equivalents.Convert floating point constants to single precision constants.Convert function return to call and return thunk.Convert indirect call and jump to call and return thunks.Copy array sections into a contiguous block on procedure entry.Copyright %s 2025 Free Software Foundation, Inc.
  Corank mismatch in argument %qs at %L (%d and %d)Cost at which GCSE optimizations will not constraint the distance an expression can travel.Cost to assume for a branch insn.Cost to assume for a multiply insn.Cost to assume for a multiply instruction, with 4 being equal to a normal insn.Could not generate addis value for fusionCould not open output file '%s'
  Count speculative dependencies while calculating priority of instructions.Cray Pointee at %C cannot be assumed shape arrayCray Pointee at %L appears in multiple pointer() statementsCray pointee %qs in %s clause at %LCray pointee %qs in SHARED clause at %LCray pointee object %qs in %s clause at %LCray pointee object %qs of derived type in %s clause at %LCray pointee object %qs of polymorphic type in %s clause at %LCray pointer %qs in %s clause at %LCray pointer at %C has %d bytes of precision; memory addresses require %d bytesCray pointer at %C must be an integerCray pointer declaration at %C requires %<-fcray-pointer%> flagCray pointer object %qs in %s clause at %LCray pointer object %qs of derived type in %s clause at %LCray pointer object %qs of polymorphic type in %s clause at %LCreate GUI application.Create a dynamically linked position independent executable.Create a shared library.Create a static position independent executable.Create canonical induction variables in loops.Create console application.Create data files needed by "gcov".Creating '%s'
! Creating array temporary at %LCreating array temporary at %L for argument %qsCurrent RISC-V GCC does not support RVV in big-endian modeCurrent RISC-V GCC does not support VLEN greater than 4096bit for 'V' ExtensionCurrently the %<V%> implementation requires the %<M%> extensionD does not support pointers on this target.D inline assembler statements are not supported in GDC.DATA array %qs at %L must be specified in a previous declarationDATA element %qs at %L cannot have a coindexDATA element %qs at %L cannot have the ALLOCATABLE attributeDATA element %qs at %L is a pointer and so must be a full arrayDATA object near %L has the pointer attribute and the corresponding DATA value is not a valid initial-data-targetDATA statement at %C after the first executable statementDATA statement at %C cannot appear within an INTERFACEDATA statement at %C is not allowed in a PURE procedureDATA statement at %L has more values than variablesDATA statement at %L has more variables than valuesDC format specifier not allowed at %CDEALLOCATE objectDEALLOCATE of coarray at %C in CRITICAL blockDEALLOCATE of coarray at %C in DO CONCURRENT blockDECIMAL= at %L not allowed in Fortran 95DEFAULT (NONE) specified more than once in DO CONCURRENT at %CDEFAULTMAP at %C but prior DEFAULTMAP for category %sDEFAULTMAP at %C but prior DEFAULTMAP with unspecified categoryDEF_INTERNAL_FLT_FN (%s) has no associated built-in functionsDEF_INTERNAL_INT_FN (%s) has no associated built-in functionsDELIM= at %L not allowed in Fortran 95DEPEND clause at %L of OMP DEPOBJ construct shall have only a single locatorDEPEND clause at %L of OMP DEPOBJ construct shall not have dependence-type DEPOBJDEPEND clause at %L requires %<targetsync%> interop-type, lacking it for %qs at %LDEPEND clause at %L requires action clause with %<targetsync%> interop-typeDEPOBJ in DEPOBJ construct at %L shall be a scalar integer of OMP_DEPEND_KIND kindDETACH event handle %qs in %s clause at %LDETACH event handle %qs in SHARED clause at %LDEVICE_TYPE must be ANY when used with INDIRECT at %LDIM argument (%d) to intrinsic SIZE at %L out of range (1:%d)DIM argument at %L is out of boundsDIM argument without COARRAY argument not allowed for THIS_IMAGE intrinsic at %LDIMENSION specified for %qs outside its INTERFACE body at %LDISTANCE= argument to NUM_IMAGES at %LDISTANCE= argument to THIS_IMAGE at %LDIST_SCHEDULE clause's chunk_size at %L requires a scalar INTEGER expressionDO CONCURRENT construct at %CDO loop at %L is undefined as it overflowsDO loop at %L is undefined as it underflowsDO loop at %L will be executed zero timesDO step value is zeroDO termination statement which is not END DO or CONTINUE with label %d at %CDO-iterator %qs at %L is inside iterator of the same nameDOUBLE COMPLEX at %CDP format specifier not allowed at %CDTIO %s procedure at %L must be recursiveDTIO character argument at %L must have assumed lengthDTIO dummy argument at %L must be a scalarDTIO dummy argument at %L must be an ASSUMED SHAPE ARRAYDTIO dummy argument at %L must be of KIND = %dDTIO dummy argument at %L must be of type %sDTIO dummy argument at %L must have INTENT %sDTIO procedure %qs at %L must be a subroutineDarwin does not support -mfentry or associated optionsDarwin is not an mx32 platformData element above array upper bound at %LData element below array lower bound at %LData is stored in big-endian format.Data is stored in little-endian format.  (Default).Data referenced by offset from start of text instead of GOT (with -fPIC/-fPIE).Data target at %L shall not have a coindexData transfer element at %L cannot be a full reference to an assumed-size arrayData transfer element at %L cannot be polymorphic unless it is processed by a defined input/output procedureData transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedureData transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedureData transfer element at %L cannot have PRIVATE componentsData transfer element at %L cannot have PRIVATE components unless it is processed by a defined input/output procedureData transfer element at %L cannot have procedure pointer componentsData-pointer-object at %L must be unlimited polymorphic, or of a type with the BIND or SEQUENCE attribute, to be compatible with an unlimited polymorphic targetDebug library to use instead of phobos.Declaring method %qD final would enable devirtualization of %i callDeclaring method %qD final would enable devirtualization of %i callsDeclaring method %qD final would enable devirtualization of %i call executed %lli timesDeclaring method %qD final would enable devirtualization of %i calls executed %lli timesDeclaring type %qD final would enable devirtualization of %i callDeclaring type %qD final would enable devirtualization of %i callsDeclaring type %qD final would enable devirtualization of %i call executed %lli timesDeclaring type %qD final would enable devirtualization of %i calls executed %lli timesDeclaring virtual destructor of %qD final would enable devirtualization of %i callDeclaring virtual destructor of %qD final would enable devirtualization of %i callsDeclaring virtual destructor of %qD final would enable devirtualization of %i call executed %lli timesDeclaring virtual destructor of %qD final would enable devirtualization of %i calls executed %lli timesDefault library to use instead of phobos.Default-initialized dummy argument %qs with %s attribute at %L is not permitted in BIND(C) procedure %qsDefer popping functions args from stack until later.Deferred array %qs at %L is not permitted in an initialization expressionDeferred type parameter not yet supportedDeferred-length character dummy argument %qs at %L of procedure %qs with BIND(C) attributeDefine alternative implicit copybook filename extensionDelete dead instructions that may throw exceptions.Delete useless null pointer checks.Deleted feature:Dependence-type SINK used together with SOURCE on the same construct at %LDeprecated in favor of -Wc11-c23-compat.Deprecated in favor of -std=c++11.Deprecated in favor of -std=c++14.Deprecated in favor of -std=c++17.Deprecated in favor of -std=c11.Deprecated in favor of -std=c23.Deprecated in favor of -std=c99.Deprecated in favor of -std=gnu++11.Deprecated in favor of -std=gnu++14.Deprecated in favor of -std=gnu++17.Deprecated in favor of -std=gnu11.Deprecated in favor of -std=gnu23.Deprecated in favor of -std=gnu99.Deprecated in favor of -std=iso9899:1999.Deprecated option.  Use -mno-vrsave instead.Deprecated option.  Use -mvrsave instead.Deprecated.  This switch has no effect.Derived type %qs at %C is being used before it is definedDerived type %qs at %L cannot have the SEQUENCE attribute because it is BIND(C)Derived type %qs at %L conflicts with namelist object %qs at %CDerived type %qs at %L has not been declaredDerived type %qs at %L may not be ABSTRACTDerived type %qs at %L must be an extension of %qsDerived type %qs at %L must be extensibleDerived type %qs cannot be used as a variable at %CDerived type %qs cannot be used as a variable at %LDerived type %qs declared at %L must have the BIND attribute to be C interoperableDerived type %qs is used as an actual argument at %LDerived type %qs with BIND(C) attribute at %L has no componentsDerived type %qs with BIND(C) attribute at %L is empty, and may be inaccessible by the C companion processorDerived type at %C can only be PRIVATE in the specification part of a moduleDerived type at %C can only be PUBLIC in the specification part of a moduleDerived type at %C has not been previously defined and so cannot appear in a derived type definitionDerived type component %C is not a permitted EQUIVALENCE memberDerived type declaration with FINAL at %C must be in the specification part of a MODULEDerived type definition at %C with empty CONTAINS sectionDerived type definition at %C without componentsDerived type definition of %qs at %C has already been definedDerived type name %qs at %C already has a basic typeDerived type name %qs at %C already has a basic type of %sDerived type variable %qs at %L cannot have ALLOCATABLE components to be an EQUIVALENCE objectDerived type variable %qs at %L must have SEQUENCE attribute to be an EQUIVALENCE objectDerived type variable %qs at %L with default initialization cannot be in EQUIVALENCE with a variable in COMMONDerived type variable %qs at %L with pointer component(s) cannot be an EQUIVALENCE objectDerived type variable %qs in COMMON at %L has an ultimate component that is allocatableDerived type variable %qs in COMMON at %L has neither the SEQUENCE nor the BIND(C) attributeDerived type variable %qs in COMMON at %L may not have default initializerDerived-type %qs declared at %L must be ABSTRACT because %qs is DEFERRED and not overriddenDerived-type %qs with BIND(C) must not have a CONTAINS section at %CDerived-type %qs with SEQUENCE must not have a CONTAINS section at %CDerived-type dummy argument %qs at %L was declared INTENT(OUT) but was not set and does not have a default initializerDescription for mxl-mode-bootstrap.Description for mxl-mode-executable.Description for mxl-mode-novectors.Description for mxl-mode-xmdstub.Destruct fields of partially constructed objects.Detect loops calculating CRC and replace with faster implementation. If the target supports CRC instruction and the CRC loop uses the same polynomial as the one used in the CRC instruction, directly replace with the corresponding CRC instruction. Otherwise, if the target supports carry-less-multiplication instruction, generate CRC using it. If neither case applies, generate table-based CRC.Detect paths that trigger erroneous or undefined behavior due to a null value being used in a way forbidden by a returns_nonnull or nonnull attribute.  Isolate those paths from the main control flow and turn the statement with erroneous or undefined behavior into a trap.Detect paths that trigger erroneous or undefined behavior due to dereferencing a null pointer.  Isolate those paths from the main control flow and turn the statement with erroneous or undefined behavior into a trap.Determine which dependences between insns are considered costly.Diagnose errors when parsing a template.Different CHARACTER lengths (%ld/%ld) in array constructorDifferent CHARACTER lengths (%wd/%wd) in array constructor at %LDifferent argument lists in external dummy function %s at %L and %LDifferent argument lists in external dummy subroutine %s at %L and %LDifferent character kinds at %LDifferent kind type parameters in pointer assignment at %LDifferent ranks in pointer assignment at %LDifferent shape for %s at %L on dimension %d (%d and %d)Different shape for arguments %qs and %qs at %L for intrinsic %<dot_product%>Different shape on dimension 1 for arguments %qs and %qs at %L for intrinsic matmulDifferent shape on dimension 2 for argument %qs and dimension 1 for argument %qs at %L for intrinsic matmulDifferent type kinds at %LDifferent types in pointer assignment at %L; attempted assignment of %s to %sDimensions specified for %s at %L after its initializationDisable -Wframe-larger-than= warning.  Equivalent to -Wframe-larger-than=<SIZE_MAX> or larger.Disable -Wlarger-than= warning.  Equivalent to -Wlarger-than=<SIZE_MAX> or larger.Disable ARCompact specific pass to generate conditional execution instructions.Disable CFR in leaf functions.Disable FP regs.  Equivalent to -msoft-float.Disable FPU ISA, the ABI option must be enable %<-mfloat-abi=soft%>Disable LR and SR instructions from using FPX extension aux registers.Disable Scalar to Vector optimization pass transforming 64-bit integer computations into a vector ones.Disable Walloc-size-larger-than= warning.  Equivalent to Walloc-size-larger-than=<SIZE_MAX> or larger.Disable Walloca-larger-than= warning.  Equivalent to Walloca-larger-than=<SIZE_MAX> or larger.Disable Wstack-usage= warning.  Equivalent to Wstack-usage=<SIZE_MAX> or larger.Disable Wvla-larger-than= warning.  Equivalent to Wvla-larger-than=<SIZE_MAX> or larger.Disable access to shared memory objects.Disable access to variables marked `@system' from @safe code.Disable floating point optimizations that ignore the IEEE signedness of zero.Disable hardware floating point.Disable indexed addressing.Disable optimizations observable by IEEE signaling NaNs.Disable optimizations that assume default FP rounding behavior.Disable position-independent code (PIC) for use in OS kernel code.Disable preprocessing.Disable space regs.Disable stack scrub entirely, disregarding strub attributes.Disable the use of RX FPU instructions.Disallow direct calls to global functions.Disallow more than 'msched-max-memory-insns' in instruction group. Otherwise, limit is 'soft' (prefer non-memory operations when limit is reached).Disallow tail call optimization when a calling routine may have omitted character lengths.Disallow unsound immutable conversions that were formerly incorrectly permitted.Discover pure and const functions.Discover read-only and non addressable static variables.Discover read-only, write-only and non-addressable static variables.Display compile time statistics.Display statistics accumulated during compilation.Display target specific command line options (including assembler and linker options).Display the code tree after front end optimization.Display the code tree after parsing.Display the code tree after parsing; deprecated option.Display the compiler's version.Display the frontend AST after parsing and semantic passes.Display the global symbol table after parsing.Display the symbols in reverse order.Display this information.Division by zero at %LDivision by zero converting %s to %s at %LDivision strategy, one of: call-div1, call-fp, call-table.Do CFG-sensitive rematerialization in LRA.Do dispatch scheduling if processor is bdver1, bdver2, bdver3, bdver4 or znver1 and Haifa scheduling is selected.Do link the standard D startup files in the compilation.Do no generate BRcc instructions in arc_reorg.Do not add a default symbol exports to modules or dynamic libraries.Do not add default run paths (for the compiler library directories) to executables, modules or dynamic libraries.Do not allow constant data to be placed in code sections.Do not assume a large TLS segment.Do not assume that functions never executed during the train run are cold.Do not assume that standard C libraries and "main" exist.Do not create element-misaligned vector memory accesses.Do not disable space regs.Do not discard comments in macro expansions.Do not discard comments.Do not display functions compiled or elapsed time.Do not elide common elements in template comparisons.Do not emit addressing modes with side-effect assignment.Do not emit complex integer constants to read-only memory.Do not emit function prologue or epilogue.Do not enforce strict alignment.Do not generate #line directives.Do not generate .size directives.Do not generate a single exit point for each function.Do not generate code that can only run in supervisor mode (default).Do not generate load/store with update instructions.Do not generate mpy instructions for ARC700.Do not generate unaligned memory accesses.Do not generate unaligned scalar memory accesses.Do not inline integer division.Do not inline square root.Do not link against the device-specific library lib<MCU>.a.Do not link the standard D library in the compilation.Do not load the PIC register in function prologues.Do not look for object files in standard path.Do not mark ABI switches in e_flags.Do not need load-load barriers (dbar 0x700).Do not perform optimizations increasing noticeably stack usage.Do not place floating point constants in TOC.Do not place symbol+offset constants in TOC.Do not predefine system-specific and GCC-specific macros.Do not pretty-print template specializations as the template signature followed by the arguments.Do not provide a default start-address 0x100 of the program.Do not push extended registers on stack in monitor functions.Do not search standard system include directories (those specified with -isystem will still be used).Do not search standard system include directories for C++.Do not support SSE4.1 and SSE4.2 built-in functions and code generation.Do not suppress C++ class debug information.Do not suppress warnings from system headers.Do not treat local variables and COMMON blocks as if they were named in SAVE statements.Do not tune code and read-only data alignment.Do not tune stack alignment.Do not tune writable data alignment.Do not use %<-mpower8-internal%>; use %<-mcpu=power8%> insteadDo not use GOT to access external symbols.Do not use MDMX instructions.Do not use MIPS-3D instructions.Do not use VAX fp.Do not use a cache-flushing function before calling stack trampolines.Do not use addresses that allocate global registers.Do not use condition codes from normal instructions.Do not use hardware FP.Do not use hardware floating point.Do not use hardware fp.Do not use hardware quad fp instructions.Do not use the AIX Vector Extended ABI.Do not use the AltiVec ABI extensions.Do not use the bit-field instructions.Do not use the callt instruction (default).Do not use the device-specific specs file device-specs/specs-<MCU>.Do not use unaligned memory references.Do not warn about specified attributes.Do not warn about using "long long" when -pedantic.Do stack checking using bounds in L1 scratch memory.Does nothing.  Preserved for backward compatibility.Does nothing. Preserved for backward compatibility.Don't align items in code or data.Don't allocate floats and doubles in extended-precision registers.Don't assume that unaligned accesses are handled by the system.Don't call any cache flush functions.Don't call any cache flush trap.Don't create a dynamically linked position independent executable.Don't destruct fields of partially constructed objects.Don't emit DWARF additions beyond selected version.Don't emit dllexported inline functions unless needed.Don't generate DWARF pubnames and pubtypes sections.Don't generate checks for control speculation in selective scheduling.Don't generate code with unaligned load store for R6 (alias of -mstrict-align).Don't generate code with unaligned load store, only valid for MIPS R6.Don't generate privileged-mode only code; implies -mno-inline-ic_invalidate if the inline code would not work in user mode.Don't indicate any priority with TARGET_REGISTER_PRIORITY.Don't optimize block moves, use memcpy.Don't optimize block moves.Don't use %reloc() assembly operators (for backward compatibility).Don't use C-style integral promotion for unary '+', '-' and '~'.Don't use P-mnemonics for branches.Don't use any of r32..r63.Don't use less than 25 bit addressing range for calls.Don't warn about uses of Microsoft extensions.Double CLASS IS block in SELECT TYPE statement at %LDowngrade conformance errors to warnings.Driving:Driving: (Dummy %qs at %L cannot have an initializerDummy argument %qs at %L cannot be INTENT(OUT)Dummy argument %qs at %L cannot be OPTIONALDummy argument %qs at %L cannot be a derived type at %CDummy argument %qs at %L may not be a pointer with CONTIGUOUS attribute as procedure %qs is BIND(C)Dummy argument %qs at %L of EVENT_TYPE shall not be INTENT(OUT)Dummy argument %qs at %L of LOCK_TYPE shall not be INTENT(OUT)Dummy argument %qs at %L was declared INTENT(OUT) but was not setDummy argument %qs has to be a pointer, assumed-shape or assumed-rank array without CONTIGUOUS attribute - as actual argument at %L is not simply contiguous and both are ASYNCHRONOUS or VOLATILEDummy argument %qs not allowed in expression at %LDummy argument %qs of %qs at %L should be named %qs as to match the corresponding argument of the overridden procedureDummy argument %qs with INTENT(IN) in pointer association context (%s) at %LDummy argument %qs with INTENT(IN) in variable definition context (%s) at %LDummy flag. This is the default unless FPX switches are provided explicitly.Dummy procedure %qs at %C cannot have a generic interfaceDummy procedure %qs at %L shall not be elementalDummy procedure %qs is invalid in procedure pointer initialization at %LDummy procedure %qs not allowed in elemental procedure %qs at %LDummy procedure %qs of PURE procedure at %L must also be PUREDummy procedure at %C may not have BIND(C) attribute with NAMEDump Source Coverage Obligations.Dump a textual representation of each diagnostic's exploded path to SRCFILE.IDX.KIND.epath.txt.Dump a textual representation of the exploded graph to SRCFILE.eg-ID.txt.Dump a textual representation of the exploded graph to SRCFILE.eg.txt.Dump analyzer-specific call graph information to a SRCFILE.callgraph.dot file.Dump analyzer-specific data to a SRCFILE.analyzer.json.gz file.Dump declarations to a .decl file.Dump detailed information on GCC's internal representation of source code locations.Dump only the defined symbols.Dump optimization passes.Dump state-purging information to a SRCFILE.state-purge.dot file.Dump the analyzer exploded graph to a SRCFILE.eg.dot file.Dump the analyzer supergraph to a SRCFILE.supergraph.dot file.Dump the demangled output.Dump the details of LTO objects.Dump the dump tool command line options.Dump the statistics of gimple statements.Dump the statistics of tree types.Dump the statistics of trees.Dump the symtab callgraph.Dump various Rust front end internals.Dump various analyzer internals to SRCFILE.*.fg.dot and SRCFILE.*.tg.dot.Dump various analyzer internals to SRCFILE.*.infinite-loop.dot.Dump various analyzer internals to SRCFILE.analyzer.txt.Dump various analyzer internals to stderr.Duplicate %<prefer_type%> modifier at %CDuplicate %<target%> at %CDuplicate %<targetsync%> at %CDuplicate %s attribute at %LDuplicate %s attribute specified at %LDuplicate %s label specification at %CDuplicate %s modifier at %L in USES_ALLOCATORS clauseDuplicate %s specification at %CDuplicate ASYNCHRONOUS attribute specified at %LDuplicate AUTOMATIC attribute specified at %LDuplicate BIND attribute specified at %LDuplicate DEFERRED at %CDuplicate ELSE statements at %L and %CDuplicate EXTENDS attribute specified at %LDuplicate IMPLICIT NONE statement at %CDuplicate NML specification at %CDuplicate NON_OVERRIDABLE at %CDuplicate POINTER attribute at %CDuplicate PRIVATE statement at %CDuplicate PROTECTED attribute specified at %LDuplicate SAVE attribute specified at %LDuplicate SAVE attribute specified near %CDuplicate SEQUENCE statement at %CDuplicate STAT= attribute in %CDuplicate TEAM= attribute in %CDuplicate TEAM_NUMBER= attribute in %CDuplicate UNIT specification at %CDuplicate VALUE attribute specified at %LDuplicate VOLATILE attribute specified at %LDuplicate access-specifier at %CDuplicate argument %qs at %L to intrinsic %sDuplicate array spec for Cray pointee at %CDuplicate array spec for Cray pointee at %LDuplicate construct label %qs at %CDuplicate format specification at %CDuplicate name %qs in association at %CDuplicate name %qs in parameter list at %CDuplicate statement label %d at %L and %LDuplicate symbol %qs in formal argument list at %CDuplicated %<fr%> preference-selector-name at %CDuplicated %qs clause at %LDuplicated NOWAIT clause on !$OMP DISPATCH and !$OMP END DISPATCH at %CDuplicated NOWAIT clause on %s and %s at %CDuplicated clause with SOURCE dependence-type at %CDuplicated common block %</%s/%> in !$OMP ALLOCATE at %LDuplicated variable %qs in !$OMP ALLOCATE at %LDuring link time optimization warn about mismatched types of global declarations.Dynamic Realign Argument Pointer (DRAP) not supported in interrupt service routine.  This may be worked around by avoiding functions with aggregate return.Dynamically allocate cc registers.E specifier not allowed with g0 descriptor in format string at %LEDGE_CROSSING incorrectly set across same sectionEDGE_CROSSING missing across section boundaryEH edge crosses section boundary in bb %iEH incoming edge mixed with non-EH incoming edges in bb %iEH landing pad label %qD is not first in a sequence of labels in bb %dELEMENTAL function %qs at %L must have a scalar resultELEMENTAL non-INTRINSIC procedure %qs is not allowed as an actual argument at %LELEMENTAL prefix in MODULE PROCEDURE interface is missing at %LELEMENTAL procedure pointer component %qs is not allowed as an actual argument at %LELFv2 parameter passing for an argument containing zero-width bit fields but that is otherwise a homogeneous aggregate was corrected in GCC 12ELSE IF statement at %C cannot follow ELSE statement at %LELSEWHERE statement at %C follows previous unmasked ELSEWHEREELSEWHERE statement at %C not enclosed in WHERE blockENCODING= at %L not allowed in Fortran 95END TEAM statement at %CEND statement instead of %s statement at %LEND tag at %C not allowed in output statementEND tag label %d at %L not definedENTRY %qs at %L cannot be called recursively, as function %qs is not RECURSIVEENTRY %qs at %L cannot be called recursively, as subroutine %qs is not RECURSIVEENTRY %qs at %L has no IMPLICIT typeENTRY result %s cannot be ALLOCATABLE in FUNCTION %s at %LENTRY result %s cannot be a POINTER in FUNCTION %s at %LENTRY result %s cannot be an array in FUNCTION %s at %LENTRY result %s cannot be of type %s in FUNCTION %s at %LENTRY statement at %CENTRY statement at %C cannot appear in a contained procedureENTRY statement at %C cannot appear within a BLOCK DATAENTRY statement at %C cannot appear within a DERIVED TYPE blockENTRY statement at %C cannot appear within a DO blockENTRY statement at %C cannot appear within a FORALL blockENTRY statement at %C cannot appear within a MODULEENTRY statement at %C cannot appear within a PROGRAMENTRY statement at %C cannot appear within a SELECT blockENTRY statement at %C cannot appear within a STRUCTURE blockENTRY statement at %C cannot appear within a SUBMODULEENTRY statement at %C cannot appear within a WHERE blockENTRY statement at %C cannot appear within a contained subprogramENTRY statement at %C cannot appear within an IF-THEN blockENTRY statement at %C cannot appear within an INTERFACEENTRY statement at %L with BIND(C) prohibited in an elemental procedureENTRY_BLOCK has IL associated with itENUM and ENUMERATOR at %CENUM declaration at %C has no ENUMERATORSENUM definition statement expected before %CENUMERATOR %L not initialized with integer expressionEOR tag label %d at %L not definedEQUIVALENCE at %C requires two or more objectsEQUIVALENCE statement at %CERR tag label %d at %L not definedERRMSG at %LERRMSG at %L is useless without a STAT tagERRMSG tag at %LERRMSG variableERRMSG variable at %L shall be a scalar default CHARACTER variableERRMSG= argument at %L must be a scalar CHARACTER variableERROR STOP statement at %CESA/390 architecture.EVENT POST statement at %CEVENT WAIT statement at %CEVENT argument at %L to the intrinsic EVENT_QUERY shall be of type EVENT_TYPEEXIT statement at %C terminating !$ACC LOOP loopEXIT statement at %C terminating !$OMP DO loopEXIT statement with no do-construct-name at %CEXIT_BLOCK has IL associated with itEXTEND can only be used where %s is ACCESS MODE SEQUENTIALEXTENDS at %LEXTERNAL attribute conflicts with FUNCTION attribute in %qs at %LEither all or none of the objects in the EQUIVALENCE set at %L shall have the PROTECTED attributeElement in %s array constructor at %L is %sElement of assumed-shape or pointer array as actual argument at %L cannot correspond to actual argument at %LElement of assumed-shape or pointer array passed to array dummy argument %qs at %LElement with a value of %d in ORDER at %L must be in the range [1, ..., %d] for the RESHAPE intrinsic near %LElemental function as initialization expression with non-integer/non-character arguments at %LElements with the same value at %L and %L in vector subscript in a variable definition context (%s)Eliminate multiple function invocations also for impure functions.Emit .gnu_attribute tags.Emit .stack_size directives.Emit 16-bit relocations to the small data areas.Emit 32-bit relocations to the small data areas.Emit GNU_PROPERTY_X86_ISA_1_NEEDED GNU property.Emit IEEE-conformant code, without inexact exceptions.Emit NOPs before global and after local entry point for -fpatchable-function-entry.Emit RISC-V ELF attribute.Emit call graph information.Emit checks causing "break 8" instructions to execute when applying atomic builtins on misaligned memory.Emit code for the byte/word ISA extension.Emit code for the counting ISA extension.Emit code for the fp move and sqrt ISA extension.Emit code for the motion video ISA extension.Emit code using explicit relocation directives.Emit common-like symbols as weak symbols.Emit custom warnings with internal details intended for analyzer developers.Emit debug annotations during preprocessing.Emit debugging information related to the escape analysis pass when run with -fgo-optimize-allocs.Emit diagnostics showing the location of nodes in the exploded graph.Emit direct branches to local functions.Emit extra code in the function prologue in order to trap if the stack size exceeds the given limit.Emit function prologues only before parts of the function that need it, rather than at the top of the function.Emit function-calls using global offset table when generating PIC.Emit fused multiply-add instructions for long doubles in vector registers (wfmaxb, wfmsxb, wfnmaxb, wfnmsxb).  Reassociation pass does not handle fused multiply-adds, therefore code generated by the middle-end is prone to having long fused multiply-add chains.  This is not pipeline-friendly, and the default behavior is to emit separate multiplication and addition instructions for long doubles in vector registers, because measurements show that this improves performance.  This option allows overriding it for testing purposes.Emit implicit instantiations of inline templates.Emit implicit instantiations of templates.Emit indirect branches to local functions.Emit instrumentation calls to __tsan_func_entry() and __tsan_func_exit().Emit long load/store sequences.Emit more verbose descriptions of control flow in diagnostics.Emit more verbose descriptions of state changes in diagnostics.Emit multi-thread and async-signal safe code for byte and word memory accesses.Emit multi-thread and async-signal safe code for partial memory accesses.Emit optimization diagnostics.Emit profiling counter call at function entry before prologue.Emit profiling counter call at function entry before prologue. The compiled code will require a 64-bit CPU and glibc 2.29 or newer to run.Emit progressive recommended breakpoint locations.Emit rdval instead of rduniq for thread pointer.Emit special instrumentation for accesses to volatiles.Emit static const variables even if they are not used.Emit stop bits before and after volatile extended asms.Emit template instantiations as weak symbols.Emit traps as "break 8", default for CRIS v3 and up.  If disabled, calls to abort() are used.Emit verbose debug information in assembly code.Empty FINAL at %CEmpty IMPLICIT statement at %CEmpty array constructor at %C is not allowedEmpty old style initializer list at %CEmpty set of digits in BOZ constant at %CEnable 'q' instruction alternatives.Enable (default) or disable generation of vector segment load/store instructions.Enable 16-entry register file.Enable 32-bit ALU instructions.Enable 32-bit jump instructions.Enable 64-bit Time-Stamp Counter extension instruction.Enable C++ coroutines (experimental).Enable C++ header module (experimental).Enable C++14 sized deallocation support.Enable C++20 Modules (experimental).Enable C-SKY DSP instructions.Enable C-SKY Enhanced DSP instructions.Enable C-SKY SECURE instructions.Enable C-SKY TRUST instructions.Enable C-SKY Vector DSP instructions.Enable CFI tables via GAS assembler directives.Enable Cobol lex debuggingEnable Cobol parser debuggingEnable Cobol yacc debuggingEnable DEC-style STATIC and AUTOMATIC attributes.Enable DIV-REM instructions for ARCv2.Enable DSP 3.1 Pack A extensions.Enable DWARF line debug info via GNU as.Enable Dual and Single Operand Instructions for Telephony.Enable ENTER_S and LEAVE_S opcodes for ARCv2.Enable FT32B code compression.Enable Full Redundancy Elimination (FRE) on trees.Enable Function Descriptor PIC mode.Enable GPR32 in inline asm when APX_F enabled.Enable Graphite Identity transformation.Enable ID based shared library.Enable IEEE 128-bit floating point via the __float128 keyword.Enable Local Register Allocation.Enable Locked Load/Store Conditional extension.Enable LoongArch Advanced SIMD Extension (LASX, 256-bit).Enable LoongArch SIMD Extension (LSX, 128-bit).Enable MUL.X and UMUL.X instructions.Enable Objective-C exception and synchronization syntax.Enable Objective-C setjmp exception handling runtime.Enable OpenACC.Enable OpenMP (implies -frecursive in Fortran).Enable OpenMP GPU offloading.Enable OpenMP's SIMD directives.Enable PIC support for building libraries.Enable Plan 9 language extensions.Enable SSA coalescing of user variables.Enable SSA code sinking on trees.Enable SSA dead code elimination optimization on trees.Enable SSA-BIT-CCP optimization on trees.Enable SSA-CCP optimization on trees.Enable SSA-PRE optimization on trees.Enable TPF-OS tracing code.Enable Virtual Hosting support.Enable XY Memory extension (DSP version 3).Enable alignment of COMMON blocks.Enable all -Wunused- warnings.Enable all DEC language extensions.Enable all optimization info dumps on stderr.Enable an RTL peephole pass before sched2.Enable asan allocas/VLAs protection.Enable asan builtin functions protection.Enable asan detection of use-after-return bugs.Enable asan globals protection.Enable asan load operations protection.Enable asan stack protection.Enable asan store operations protection.Enable assembler and linker relaxation.  Enabled by default at -Os.Enable at-calls stack scrubbing for all viable functions.Enable atomic instructions.Enable backend debugging.Enable backward propagation of use properties at the SSA level.Enable barrel shift instructions.Enable basic block vectorization (SLP) on trees.Enable basic program profiling code.Enable byte swap instructions.Enable cache bypass for volatile references.Enable cache prefetch instructions.Enable certain features present in drafts of C++ Contracts.Enable code density instructions for ARCv2.Enable code hoisting.Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=.Enable common options for generating profile info for profile feedback directed optimizations.Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=.Enable common options for performing profile feedback directed optimizations.Enable compact casesi pattern.Enable conditional dead code elimination for builtin calls.Enable conditional execution other than moves/scc.Enable conditional move instruction usage.Enable conditional moves unconditionally.Enable conditional moves.Enable conservative small loop unrolling.Enable constructor/destructor feature.Enable coprocessor instructions.Enable copy propagation of scalar-evolution information.Enable copy propagation on trees.Enable correction of flow inconsistent profile data input.Enable dead store elimination.Enable debug output.Enable decimal floating point hardware support.Enable default conversions between __float128 & long double.Enable default widths for i, f and g format specifiers.Enable divide and modulus instructions.Enable dominator optimizations.Enable double load/store instructions for ARC HS.Enable dual viterbi butterfly extension.Enable earlier placing stop bits for better scheduling.Enable embedding metadata directly into object filesEnable exception handling.Enable experimental Fortran 202y features.Enable experimental compilation of Rust files at your own riskEnable extra conditional-branch instructions j(s)lt and j(s)le.Enable floating-point status flags setting SSE vector operations on partial vectors.Enable formatting of JSON output.Enable forward propagation on trees.Enable front end optimization.Enable function profiling.Enable function reordering that improves code placement.Enable garbage collection (GC) in Objective-C/Objective-C++ programs.Enable general atomic operations introduced in v3 ISA.Enable generation of ARC SIMD instructions via target-specific builtins.Enable generation of binaries which use functions from libgcc to perform divide operations.  The default is -mhard-div.Enable generation of binaries which use functions from libgcc to perform floating point operations.  This is the default; use -mhard-float to override.Enable generation of binaries which use functions from libgcc to perform multiply operations. The default is -mhard-mul.Enable generation of compare and set flag with immediate (l.sf*i) instructions. By default extra instructions will be generated to store the immediate to a register first.Enable generation of conditional move (l.cmov) instructions.  By default the equivalent will be generated using set and branch.Enable generation of hardware divide (l.div, l.divu) instructions.  This is the default; use -msoft-div to override.Enable generation of hardware floating point instructions. The default is -msoft-float.Enable generation of hardware multiply instructions (l.mul, l.muli) instructions. This is the default; use -msoft-mul to override.Enable generation of inline code instead of calls to functions from the library to implement intrinsics.Enable generation of rotate right (l.ror) instructions.  By default functions from libgcc are used to perform rotate right operations.Enable generation of rotate right with immediate (l.rori) instructions.  By default functions from libgcc are used to perform rotate right with immediate operations.Enable generation of shift with immediate (l.srai, l.srli, l.slli) instructions. By default extra instructions will be generated to store the immediate to a register first.Enable generation of sign extension (l.ext*) instructions.  By default memory loads are used to perform sign extension.Enable guessing of branch probabilities.Enable hardware floating point.Enable hoisting adjacent loads to encourage generating conditional move instructions.Enable hoisting loads from conditional pointers.Enable hwasan instrumentation of allocas/VLAs.Enable hwasan instrumentation of builtin functions.Enable hwasan instrumentation of load operations.Enable hwasan instrumentation of statically sized stack-allocated variables.Enable hwasan instrumentation of store operations.Enable in and out of Graphite representation.Enable incremental LTO, with its cache in given directory.Enable inline checks for nil receivers with the NeXT runtime and ABI version 2.Enable inlining of PLT in function calls.Enable inlining of function declared "inline", disabling disables all inlining.Enable instructions that guard against return-oriented programming attacks.Enable internal stack scrubbing for all viable functions.Enable interrupt stack instructions.Enable kind-specific variants of integer intrinsic functions.Enable label alignment optimizations.Enable lazy module importing.Enable legacy math intrinsics for compatibility.Enable legacy parsing of INCLUDE as statement.Enable lifetime extension of range based for temporaries.Enable link-time optimization.Enable linker optimizations.Enable linker relaxation.Enable linker relaxations.Enable linker relaxing.Enable load/store bonding.Enable loop distribution for patterns transformed into a library call.Enable loop distribution on trees.Enable loop epilogue vectorization using smaller vector size.Enable loop header copying on trees.Enable loop interchange on trees.Enable loop invariant motion on trees.Enable loop nest transforms.  Same as -floop-nest-optimize.Enable loop optimizations on tree level.Enable loop vectorization of floating point inductions.Enable loop vectorization on trees.Enable machine specific peephole optimizations.Enable more verbose RTX cost dumps during debug.  For GCC developers use only.Enable most warning messages.Enable multicore support.Enable multiply instructions.Enable multiprocessor instructions.Enable nested conditional execution optimizations.Enable optimizing &&/|| in conditional execution.Enable parsing GIMPLE.Enable pre-reload use of cbranchsi pattern.Enable preprocessing.Enable range checking during compilation.Enable reassociation on tree level.Enable register pressure sensitive insn scheduling.Enable relaxing in the assembler.Enable rvalue arguments to ref parameters.Enable safety checks on all functions by default.Enable scheduling across basic blocks.Enable separate data segment.Enable setting GPRs to the result of comparisons.Enable shadow stack built-in functions from Control-flow Enforcement Technology (CET).Enable sign extend instructions.Enable signed division and modulus instructions.Enable signed move and memory load instructions.Enable split of 32 bit immediate loads into low / high part.Enable stack probing.Enable stack scrub as per attributes, with strict call checking.Enable stack scrubbing for all viable functions.Enable static analysis pass.Enable strict 32-bit psABI struct return checking.Enable string length optimizations on trees.Enable support for C++ concepts.Enable support for DEC STRUCTURE/RECORD.Enable support for GNU transactional memory.Enable support for the RH850 ABI.  This is the default.Enable support for the old GCC ABI.Enable swap byte ordering extension instruction.Enable tail merging on trees.Enable the CSR checking for the ISA-dependent CSR and the read-only CSR. The ISA-dependent CSR are only valid when the specific ISA is set.  The read-only CSR can not be written by the CSR instructions.Enable the MIPS16e V2 instructions.Enable the char8_t fundamental type and use it as the type for UTF-8 string and character literals.Enable the copy of the AArch64 load/store pair fusion pass that runs after register allocation.Enable the copy of the AArch64 load/store pair fusion pass that runs before register allocation.Enable the critical path heuristic in the scheduler.Enable the dependent count heuristic in the scheduler.Enable the division approximation.  Enabling this reduces precision of division results to about 16 bits for single precision and to 32 bits for double precision.Enable the extended LRW instruction (default for CK801).Enable the group heuristic in the scheduler.Enable the last instruction heuristic in the scheduler.Enable the loop nest optimizer.Enable the normal mode.Enable the overflow checks in code generationEnable the rank heuristic in the scheduler.Enable the reciprocal square root approximation.  Enabling this reduces precision of reciprocal square root results to about 16 bits for single precision and to 32 bits for double precision.Enable the speculative instruction heuristic in the scheduler.Enable the square root approximation.  Enabling this reduces precision of square root results to about 16 bits for single precision and to 32 bits for double precision. If enabled, it implies -mlow-precision-recip-sqrt.Enable the use of 64-bit floating point registers in fmov instructions.  See -mdalign if 64-bit alignment is required.Enable the use of RX FPU instructions.  This is the default.Enable the use of blank format items in format strings.Enable the use of character literals in assignments and data statements for non-character variables.Enable the use of indexed loads.Enable the use of pre/post modify with register displacement.Enable the use of the LRA register allocator.Enable the use of the fsca instruction.Enable the use of the fsrra instruction.Enable the use of the old, broken, ABI where all stacked function arguments are aligned to 32-bits.Enable the use of the short load instructions.Enable the use the standard RX ABI where all stacked function arguments are naturally aligned.  This is the default.Enable the z vector language extension providing the context-sensitive vector macro and enable the Altivec-style builtins in vecintrin.h.Enable traditional preprocessing.Enable transitivity of constraints during analysis.Enable unaligned word and halfword accesses to packed data.Enable use of BI/BIH instructions when available.Enable use of GPREL for read-only data in FDPIC.Enable use of NPS400 bit operations.Enable use of NPS400 xld/xst extension.Enable use of POST_INC / POST_DEC.Enable use of POST_MODIFY.Enable use of R16-R31 (default).Enable use of odd-numbered single-precision registers.Enable use of sdata/scommon/sbss.Enable user-defined instructions.Enable using IEEE 128-bit floating point instructions.Enable v850e3v5 loop instructions.Enable variable polynomial CRC extension.Enable various security-relevant flags.Enable vectorization for gather instruction.Enable vectorization for scatter instruction.Enable vectorization on trees.Enable verbose output.Enable workaround for single erratum of AT697F processor (corresponding to erratum #13 of AT697E processor).Enable workarounds for the errata of the GR712RC processor.Enable workarounds for the errata of the UT699 processor.Enable workarounds for the errata of the UT699E/UT700 processor.Enable/Disable the traditional scheduling in loops that already passed modulo scheduling.Enable/disable static linkage for CALL literalsEnabled ID based shared library.Enables Position-Independent-Data (PID) mode.Enables or disables the use of the SMOVF, SMOVB, SMOVU, SUNTIL, SWHILE and RMPA instructions.  Enabled by default.Enables the dynamic vectorizer cost model.  Preserved for backward compatibility.Enables verbose cost model dumping in the debug dump files.Encode SSE instructions with VEX prefix.End expression in DO loopEnd of #embed search list.
  End of nonblock DO statement at %C is interwoven with another DO loopEnd of nonblock DO statement at %C is within another blockEnd of scalar initializer expected at %CEnd of search list.
  Enforce class member access control semantics.Entity %qs at %L has a deferred LEN parameter %qs and requires either the POINTER or ALLOCATABLE attributeEntity %qs at %L has a deferred type parameter and requires either the POINTER or ALLOCATABLE attributeEntity %qs at %L is already present in the interfaceEntity %qs at %L is incompatible with a BOZ literal constantEntity with assumed character length at %L must be a dummy argument or a PARAMETEREnumerator exceeds the C integer type at %CEquality comparison for %s at %LEquivalence for %qs does not match ordering of COMMON %qs at %LEquivalent to -fcf-protection=full.Errmsg-variable at %L shall not be %sd within the same %s statementErrorError allocating %lu bytesError converting PARAMETER constant in complex constant at %CError converting integerError in array constructor referenced at %LError in pointer initialization at %CError in type-spec at %LError in typebound call at %LError reallocating to %lu bytesError writing JSON output file %s
  Error writing module file %qs for writing: %sError writing modules file: %sError writing output file '%s'
  Evaluation of nonstandard initialization expression at %LEvaluation of string longer than 2**28 at %L deferred to runtime, expect bugsEventEvent variable argument at %L must be a coarray but not coindexedEvent variable argument at %L must be a coarray or coindexedEvent variable at %L must be a scalar of type EVENT_TYPEEvery subscript of target specification at %L must be a constant expressionExit condition of DO WHILE loop at %L must be a scalar LOGICAL expressionExit on the first error occurred.Expand 32bit/64bit integer divide into 8bit unsigned integer divide with run-time check.Expand adddi3 and subdi3 at rtl generation time into add.f / adc etc.Expected ")" at %CExpected "," at %CExpected %<( depobj )%> at %CExpected %<(%> after %<prefer_type%> at %CExpected %<(%> after %qs at %CExpected %<(%> at %CExpected %<)%> at %CExpected %<)%> or %<,%> at %CExpected %<)%> or %<omp_cur_iteration)%> at %CExpected %<*%> in coindex specification in ALLOCATE statement at %LExpected %<,%> at %CExpected %<,%> or %<)%> at %CExpected %<,%> or %<:%> at %CExpected %<,%> or %<}%> at %CExpected %<,%> or end of statement at %CExpected %<:%> at %CExpected %<::%> after binding-attributes at %CExpected %<::%> at %CExpected %<==%>, %<.EQ.%> or %<.EQV.%> atomic comparison expression at %LExpected %<=>%> at %CExpected %<END INTERFACE ASSIGNMENT (=)%> at %CExpected %<fr(%> or %<attr(%> at %CExpected %<prefer_type%>, %<target%>, or %<targetsync%> at %CExpected %<{%> at %CExpected ',' or ')' in reduction list at %CExpected :: in TYPE definition at %CExpected = sign in PARAMETER statement at %CExpected ACQ_REL, ACQUIRE, RELAXED, RELEASE or SEQ_CST for ATOMIC_DEFAULT_MEM_ORDER clause at %CExpected ALIGN or ALLOCATOR clause at %CExpected ALLOC, TO, FROM, TOFROM, FIRSTPRIVATE, PRESENT, NONE or DEFAULT at %CExpected COMPILATION or EXECUTION in AT clause at %CExpected DEPEND, UPDATE, or DESTROY clause at %CExpected DO loop at %CExpected ELSE at %L in atomic compare captureExpected FATAL or WARNING in SEVERITY clause at %CExpected HOST, NOHOST or ANY at %CExpected IF at %L in atomic compare captureExpected IN, OUT, INOUT, INOUTSET or MUTEXINOUTSET followed by %<)%> at %CExpected INCLUSIVE or EXCLUSIVE clause at %CExpected INTEGER type at %LExpected INTEGER, REAL or CHARACTER type for %qs in REDUCE with MIN/MAX at %L, got %sExpected NONE or PRESENT in DEFAULT clause at %CExpected NONE, FIRSTPRIVATE, PRIVATE or SHARED in DEFAULT clause at %CExpected OMP END METADIRECTIVE at %CExpected ORDER(CONCURRENT) at %C with optional %<reproducible%> or %<unconstrained%> modifierExpected P edit descriptor in format string at %LExpected PARAMETER symbol in complex constant at %CExpected RANK or RANK DEFAULT following SELECT RANK at %CExpected SCALAR, AGGREGATE, ALLOCATABLE, POINTER or ALL at %CExpected SEQ_CST, ACQUIRE or RELAXED at %CExpected SEQ_CST, AQC_REL, RELEASE, or ACQUIRE at %CExpected SHAPE argument to C_F_POINTER with array FPTR at %LExpected TEAMS, PARALLEL or THREAD as binding in BIND at %CExpected TYPE IS, CLASS IS or END SELECT statement following SELECT TYPE at %CExpected UNIFIED_ADDRESS, UNIFIED_SHARED_MEMORY, SELF_MAPS, DYNAMIC_ALLOCATORS, REVERSE_OFFLOAD, or ATOMIC_DEFAULT_MEM_ORDER clause at %LExpected a CASE or END SELECT statement following SELECT CASE at %CExpected a nameless interface at %CExpected a procedure for argument %qs at %LExpected a procedure pointer for argument %qs at %LExpected a right parenthesis in expression at %CExpected a step value in iterator at %CExpected access-specifier at %CExpected alternate return label at %CExpected an initialization expression at %CExpected another dimension in array declaration at %CExpected argument list at %CExpected array subscript at %CExpected array subscript stride at %CExpected associate name at %CExpected association at %CExpected association list at %CExpected attribute bit nameExpected binding attribute at %CExpected binding name at %CExpected binding target after %<=>%> at %CExpected block name %qs of SELECT construct at %CExpected block name of %qs in %s statement at %LExpected bounds specification for %qs at %LExpected coarray variable as %qs argument to the %s intrinsic at %LExpected comma in I/O list at %CExpected component reference at %CExpected constant non-negative scalar integer offset expression at %LExpected constant scalar integer expression or non-empty default-kind character literal at %LExpected construct-type PARALLEL, SECTIONS, DO or TASKGROUP in $OMP CANCELLATION POINT statement at %CExpected data constant after repeat spec at %CExpected default-kind character literal at %LExpected dependence-type SINK or SOURCE at %CExpected dummy parameter name or a positive integer at %LExpected entity-list in AUTOMATIC statement at %CExpected entity-list in STATIC statement at %CExpected exponent in expression at %CExpected expression at %C in PARAMETER statementExpected expression in %s statement at %CExpected expression in array specification at %CExpected expression typeExpected formal argument list in function definition at %CExpected generic name or operator descriptor at %CExpected identifier at %CExpected initialization expression at %CExpected initialization expression in CASE at %CExpected integerExpected integer expression at %CExpected integer expression of the %<omp_allocator_handle_kind%> kind at %LExpected integer expression or a single device-modifier %<device_num%> or %<ancestor%> at %CExpected integer stringExpected integer type for %qs in REDUCE with IAND/IOR/IEOR at %L, got %sExpected intrinsic assignment in OMP WORKSHARE at %LExpected label %qs for %s statement at %CExpected left parenthesisExpected list of %<lower-bound :%> or list of %<lower-bound : upper-bound%> specifications at %LExpected logical type for %qs in REDUCE at %L, got %qsExpected module procedure name at %CExpected nameExpected numeric type for %qs in REDUCE at %L, got %sExpected parameter list in type declaration at %CExpected positive argument index at %LExpected range-specification at %CExpected real stringExpected reduction operator or function name at %CExpected register or constant integer.Expected right parenthesisExpected scalar initialization expression at %CExpected scalar intrinsic expression at %L in atomic comparisonExpected scalar intrinsic variable at %L in atomic comparisonExpected specific binding name at %CExpected stringExpected structure component name at %CExpected structure component or operator name after %<.%> at %CExpected terminating name at %CExpected trait-property-extension at %CExpected type-bound procedure or procedure pointer component at %CExpected variable list at %CExpected variable name at %CExpected variable name at %C in PARAMETER statementExpected variable name in %s locality spec at %LExpected variable name in reduction list at %CExpecting %<END INTERFACE %s%> at %CExpecting %<END INTERFACE OPERATOR (%s)%> at %CExpecting %<END INTERFACE OPERATOR (%s)%> at %C, but got %qsExpecting %<END INTERFACE OPERATOR (.%s.)%> at %CExpecting %s at %CExpecting %s statement at %LExpecting a comma in EQUIVALENCE at %CExpecting a scalar INTEGER expression at %C, found %sExpecting a variable at %LExpecting definable entity near %LExpecting list of named entities at %CExpecting variable in READ statement at %CExpecting variable or io-implied-do at %LExpecting variable or io-implied-do in READ statement at %LExperimental unsigned numbers.Explicit array shape at %C must be constant of INTEGER type and not %s typeExplicit interface required for %qs at %L: %sExplicit interface required for component %qs at %L: %sExplicit interface required for polymorphic argument at %LExplicit shaped array with nonconstant bounds at %CExport functions even if they can be inlined.Expression at %L in this context must be constantExpression at %L must be of INTEGER type, found %sExpression at %L must be scalarExpression in CASE selector at %L cannot be %sExpression in CASE selector at %L must be scalarExpression in CASE statement at %L is not in the range of %sExpression in CASE statement at %L must be of kind %dExpression in CASE statement at %L must be of type %sExpression in CASE statement at %L must be scalarExpression in STAT= at %C must not be coindexedExpression is a noninteroperable derived typeExpression is polymorphicExtension to use a non-C_Bool-kind LOGICALExtension to use a non-C_CHAR-kind CHARACTERExtension: %s specifier in %s statement at %L has value %qsExtension: Conversion from %s to %s at %LExtension: Scalar non-default-kind, non-C_CHAR-kind CHARACTER actual argument with array dummy argument %qs at %LExtension: Unary operator following arithmetic operator (use parentheses) at %CExtension: Zero width after L descriptor at %LExtension: backslash character at %CExtension: exponent-letter %<q%> in real-literal-constant at %CExternal %qs at %L cannot have an initializerExternal IO UNIT cannot be an array at %LExternal object %qs at %L may not have an initializerExtra option to %<-Xassembler%>: %s, dropping all %<-Xassembler%> and %<-Wa%> options.Extraneous characters in format at %LF2008: C1210 IMPORT statement at %C is not permitted in a module procedure interface bodyFAIL IMAGE statement at %CFAILED= argument to NUM_IMAGES at %LFDPIC mode is not supported in Thumb-1 modeFINAL clause at %L requires a scalar LOGICAL expressionFINAL declaration at %C must be inside CONTAINSFINAL declaration at %C must be inside a derived type CONTAINS sectionFINAL procedure %qs at %L is not a SUBROUTINEFINAL procedure %qs declared at %L has the same rank (%d) as %qsFINAL procedure at %L must have exactly one argumentFINAL procedure at %L with assumed rank argument must be the only finalizer with the same kind/type (F2018: C790)FINAL procedure declaration at %CFLUSH statement at %CFORALL construct at %LFORALL end expression at %L must be a scalar INTEGERFORALL index %qs may not appear in triplet specification at %LFORALL index-name at %L must be a scalar INTEGERFORALL index-name at %L must be a scalar variable of type integerFORALL mask clause at %L requires a scalar LOGICAL expressionFORALL start expression at %L must be a scalar INTEGERFORALL stride expression at %L cannot be zeroFORALL stride expression at %L must be a scalar %sFORM TEAM statement at %CFORMAT label %d at %L not definedFORMAT statement at %C cannot appear within an INTERFACEFORMAT statement at %L does not have a statement labelFORMAT tag at %L cannot be a zero-sized arrayFORMAT tag at %L must be of type default-kind CHARACTER or of INTEGERFP exceptions are enabled.FP registers might be clobbered despite %qE attribute: compile with %<-mgeneral-regs-only%>FPTR argument at %L to C_F_POINTER shall not be polymorphicFPTR argument to C_F_POINTER at %L is a function returning a pointerFPU types of LoongArch:FPX fast and compact options cannot be specified togetherFPX: Enable Argonaut ARC CPU Double Precision Floating Point extensions.FPX: Generate Double Precision FPX (compact) instructions.FPX: Generate Double Precision FPX (fast) instructions.FPX: Generate Single Precision FPX (compact) instructions.FPX: Generate Single Precision FPX (fast) instructions.FROMPOS argument (%ld) out of range 0:%d in intrinsic MVBITSFROMPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsic MVBITSFUNCTION result %s cannot be ALLOCATABLE in FUNCTION %s at %LFUNCTION result %s cannot be a POINTER in FUNCTION %s at %LFUNCTION result %s cannot be an array in FUNCTION %s at %LFUNCTION result %s cannot be of type %s in FUNCTION %s at %LFactor complex constructors and destructors to favor space over speed.Failed to create structure type '%s' at %CFailed to match clause at %CFailure getting length of a constant array.Failure in conversion of BOZ to REAL at %LFatal ErrorFile %qs is being included recursivelyFile %qs opened at %C is not a GNU Fortran module fileFile for output dependency information.Finalizable type not permitted for %qs in %s locality-spec at %LFine grain control of tune features.First argument of defined assignment at %L must be INTENT(OUT) or INTENT(INOUT)First argument of operator interface at %L cannot be optionalFirst argument of operator interface at %L must be INTENT(IN)First or last !$OMP ATOMIC intrinsic argument must be %qs at %LFix min_int calculationFixed line length must be at least sevenFlag %<-fmax-stack-var-size=%d%> overwrites %<-frecursive%> implied by %qsFlag %<-fno-automatic%> overwrites %<-fmax-stack-var-size=%d%>Flag %<-fno-automatic%> overwrites %<-frecursive%>Flag %<-fno-automatic%> overwrites %<-frecursive%> implied by %qsFlag %<-frecursive%> overwrites %<-fmax-stack-var-size=%d%>Fold calls to simple inline functions.Fold instructions calculating memory offsets to the memory access instruction if possible.Follow Renesas (formerly Hitachi) / SuperH calling conventions.Follow the C++17 evaluation order requirements for assignment expressions, shift, member function calls, etc.Follow the EABI linkage requirements.For !$OMP ATOMIC COMPARE, the first operand in comparison at %L must be the variable %qs that the update statement writes into at %LFor -f*-prefix-map= options compare canonicalized pathnames rather than just strings.For dummy procedure %s, no binding name is allowed in BIND(C) at %CFor intrinsics library: pass all parameters in registers.For nested functions on stack executable permission is set.For range-based %<adjust_args%>, a constant positive scalar integer expression is required at %LFor shift operations by a constant amount, which require an individual instruction to shift by one position, set the maximum number of inline shift instructions (maximum value 64) to emit instead of using the corresponding __mspabi helper function. The default value is 4.For targets that normally need trampolines for nested functions, always generate them instead of using descriptors.For the assembler (and linker) permit any architecture sub-variant to be used without error.Forbid performing fp-as-gp optimization.Forbid using $fp to access static and global variables.  This option strictly forbids fp-as-gp optimization regardless of '-mforce-fp-as-gp'.Force all calls to be made via a jli instruction.Force assembly output to always use hex constants.Force bitfield accesses to match their type width.Force creation of temporary to test infrequently-executed forall code.Force disable hardware loop, even use -mext-dsp.Force functions to be aligned to a 4 byte boundary.Force generation of external symbol indirection stubs.Force indirect call and jump via register.Force performing fp-as-gp optimization.Force the underlying type for "wchar_t" to be "unsigned short".Force the usage of delay slots for conditional branches.Force the use of SLP when vectorizing, fail if not possible.Format statement in module main block at %CFortran 2003: %s specifier in %s statement at %L has value %qsFortran 2003: Character for %qs argument of %qs intrinsic at %LFortran 2003: DT format specifier not allowed at %CFortran 2003: Scalar CHARACTER actual argument with array dummy argument %qs at %LFortran 2008 obsolescent feature:Fortran 2008: COMMON block %qs with binding label at %L sharing the identifier with global non-COMMON-block entity at %LFortran 2008: Non-pointer actual argument at %L to pointer dummy %qsFortran 2008: Null pointer at %L to non-pointer dummy %qsFortran 2008: Pointer functions in variable definition context (%s) at %LFortran 2008: Semicolon at %C without preceding statementFortran 2018 deleted feature:Fortran 2018 obsolescent feature:Fortran 2018:Fortran 2023:Fortran 95 requires default INTEGER in %s tag at %LFound no matching specific binding for the call to the GENERIC %qs at %LFree line length must be at least threeFunction %qs as initialization expression at %LFunction %qs at %L cannot be called recursively, as it is not RECURSIVEFunction %qs at %L cannot have an initializerFunction %qs at %L has no IMPLICIT typeFunction %qs at %L has no IMPLICIT type; did you mean %qs?Function %qs at %L is INTRINSIC but is not compatible with an intrinsicFunction %qs at %L must be PUREFunction %qs in initialization expression at %L must be an intrinsic functionFunction %qs is declared CHARACTER(*) and cannot be used at %L since it is not a dummy argumentFunction %qs requires an argument list at %CFunction %s at %L has entries with mismatched array specificationsFunction %s at %L has entry %s with mismatched characteristicsFunction %s at %L with entries returning variables of different string lengthsFunction Multi Versioning support is experimental, and the behavior is likely to changeFunction not found.Function result %qs at %L cannot have an initializerFunction result %qs at %L has no IMPLICIT typeFunction result %qs at %L is invalid as X argument to C_FUNLOCFunction result %qs at %L shall not be a coarray or have a coarray componentFunction result %qs is invalid as proc-target in procedure pointer assignment at %LFunction result variable %qs at %L of elemental function %qs shall not have an ALLOCATABLE or POINTER attributeFunction starts are aligned to this power of 2.Functions which return values must end with return statements.Fuse certain integer operations together for better performance on power10.Fuse certain integer operations together for better performance on power8.GCC cannot support operators with integer types and fixed-point types that have too many integral and fractional bits togetherGCC does not currently support a simdclone with simdlens %wd and %wd for these types.GCC does not currently support argument type %qT for simdGCC does not currently support return type %qT for simdGCC does not currently support simdlen %wd for type %qTGCC is not configured to support %qs as %<-foffload=%> argumentGCC must be configured with %<--enable-newlib-nano-formatted-io%> to use %<-mtiny-printf%>GCC supports only %u nested scopesGCC vector passed by reference: non-standard ABI extension with no compatibility guaranteeGCC vector returned by reference: non-standard ABI extension with no compatibility guaranteeGCC was built without library support for %<-march=%s%>; consider compiling for the associated generic architecture %<-march=%s%> insteadGCC_OFFLOAD_OMP_REQUIRES_FILE unsetGCN GPU type to use:GCSE disabledGENERIC %qs at %L cannot overwrite specific binding with the same nameGENERIC %qs at %L must target a specific binding, %qs is GENERIC, tooGENERIC at %C must be inside a derived-type CONTAINSGENERIC binding at %CGENERIC procedure %qs is not allowed as an actual argument at %LGMP version %s, MPFR version %s, MPC version %s, isl version %s
! GNU C no longer supports -traditional without -EGNU Extension:GNU Objective C no longer supports traditional compilationGNU-style attribute between label and declaration appertains to the labelGOTO statement at %L leaves CRITICAL construct for label at %LGOTO statement at %L leaves DO CONCURRENT construct for label at %LGarbage after PARAMETERIZED TYPE declaration at %CGenerate (do not generate) MMA instructions.Generate (do not generate) code that uses the LXVKQ instruction.Generate (do not generate) code that uses the XXSPLTIDP instruction.Generate (do not generate) code that uses the XXSPLTIW instruction.Generate (do not generate) pc-relative memory addressing.Generate (do not generate) pc-relative memory optimizations for externals.Generate (do not generate) prefixed memory instructions.Generate 16-bit instructions.Generate 16bit i386 code.Generate 32-bit code.Generate 32-bit offsets in switch tables.Generate 32bit i386 code.Generate 32bit x86-64 code.Generate 32x16 multiply and mac instructions.Generate 64-bit code.Generate 64bit x86-64 code.Generate APCS conformant stack frames.Generate ARCompact 32-bit code for ARC600 processor.Generate ARCompact 32-bit code for ARC601 processor.Generate ARCompact 32-bit code for ARC700 processor.Generate AT&T-style stubs for Mach-O.Generate BTF debug information at default level.Generate C header of platform-specific features.Generate C prototypes from BIND(C) declarations.Generate C prototypes from non-BIND(C) external procedure definitions.Generate C++ Module dependency information.Generate C-SKY FPU double float instructions (default for hard float).Generate CTF debug information at default level.Generate DFLOAT double-precision code.Generate DSP extension instructions.Generate DWARF pubnames and pubtypes sections with GNU extensions.Generate DWARF pubnames and pubtypes sections.Generate ELF FDPIC code.Generate GFLOAT double-precision code.Generate H8/300H code.Generate H8S code.Generate H8S/2600 code.Generate H8SX code.Generate ILP32 code.Generate IT blocks appropriate for ARMv8.Generate JSON file.Generate LP64 code.Generate MIPS16 code.Generate ModuleInfo struct for output module.Generate PA1.0 code.Generate PA1.1 code.Generate PA2.0 code (requires binutils 2.10 or later).Generate SH1 code.Generate SH2 code.Generate SH2a FPU-less code.Generate SH2e code.Generate SH3 code.Generate SH3e code.Generate SH4 FPU-less code.Generate SH4 code.Generate SH4-100 FPU-less code.Generate SH4-100 code.Generate SH4-200 FPU-less code.Generate SH4-200 code.Generate SH4-300 FPU-less code.Generate SH4-300 code.Generate SH4a FPU-less code.Generate SH4a code.Generate SH4al-dsp code.Generate SIMD clones for functions with the OpenMP declare target directive.Generate VRSAVE instructions when generating AltiVec code.Generate __mcount_loc section with all _mcount and __fentry__ calls.Generate __mcount_loc section with all mcount or __fentry__ calls.Generate a #line directive pointing at the current working directory.Generate a Mach-O bundle (file type MH_BUNDLE).Generate a __return_loc section pointing to all return instrumentation code.Generate a call to abort if a noreturn function returns.Generate a default D main() function when compiling.Generate a single exit point for each function.Generate absolute source path names for gcov.Generate aggregate parameter passing code with at most 64-bit alignment.Generate all necessary information for BPF Compile Once - Run Everywhere.Generate an output executable that binds symbols on load, rather than lazily.Generate approximate reciprocal divide and square root for better throughput.Generate assembler output that is compatible with the Renesas AS100 assembler.  This may restrict some of the compiler's capabilities.  The default is to generate GAS compatible syntax.Generate auto-inc/dec instructions.Generate big endian code.Generate big-endian code.Generate big-endian eBPF.Generate bit instructions.Generate call insns as direct calls.Generate call insns as indirect calls, if necessary.Generate call insns as indirect calls.Generate call insns as register indirect calls.Generate cld instruction in the function prologue.Generate code for C-SKY compiler runtime instead of libgcc.Generate code for GNU as.Generate code for GNU assembler (gas).Generate code for GNU ld.Generate code for GNU runtime environment.Generate code for NeXT (Apple macOS) runtime environment.Generate code for OpenMP offloading: enables -msoft-stack and -muniform-simt.Generate code for SH4 340 series (MMU/FPU-less).Generate code for SH4 400 series (MMU/FPU-less).Generate code for SH4 500 series (FPU-less).Generate code for Smart Mode.Generate code for Thumb state.Generate code for UNIX assembler.Generate code for a 32-bit ABI.Generate code for a 5206e.Generate code for a 520X.Generate code for a 528x.Generate code for a 5307.Generate code for a 5407.Generate code for a 64-bit ABI.Generate code for a 68000.Generate code for a 68010.Generate code for a 68020.Generate code for a 68030.Generate code for a 68040, without any new instructions.Generate code for a 68040.Generate code for a 68060, without any new instructions.Generate code for a 68060.Generate code for a 68302.Generate code for a 68332.Generate code for a 68851.Generate code for a ColdFire v4e.Generate code for a DLL.Generate code for a Fido A.Generate code for a cpu32.Generate code for all template instantiations.Generate code for an 11/10.Generate code for an 11/40.Generate code for an 11/45.Generate code for assert contracts.Generate code for class invariant contracts.Generate code for darwin loadable kernel extensions.Generate code for functions even if they are fully inlined.Generate code for given CPU.Generate code for old exec BSS PLT.Generate code for postcondition contracts.Generate code for precondition contracts.Generate code for static functions even if they are never called.Generate code for switches without a default case.Generate code for the Android platform.Generate code for the M*Core M210.Generate code for the M*Core M340.Generate code for the kernel or loadable kernel extensions.Generate code for the supervisor mode (default).Generate code for the user mode.Generate code in 32 bit ARM state.Generate code in big endian mode.Generate code in big-endian mode.Generate code in little endian mode.Generate code in little-endian mode.Generate code suitable for executables (NOT shared libs).Generate code suitable for fast turn around debugging.Generate code that can be used in SVR4-style dynamic objects.Generate code that can keep local state uniform across all lanes.Generate code that conforms to Intel MCU psABI.Generate code that conforms to the given ABI.Generate code that conforms to the specified ABI.Generate code that is link-compatible with MIPS16 and microMIPS code.Generate code that uses 68881 floating-point instructions.Generate code that will run in privileged state.Generate code that won't be linked against any other ID shared libraries, but may be used as a shared library.Generate code to check bounds before indexing arrays.Generate code to check exception specifications.Generate code to mitigate against straight line speculation.Generate code to track when the CPU might be speculating incorrectly.Generate code to use a non-exec PLT and GOT.Generate code using global anchor symbol addresses.Generate code which uses hardware floating point instructions.Generate code which uses only the general registers.Generate code which uses the core registers only (r0-r14).Generate code with library calls for floating point.Generate code with unaligned load store for R6 (alias of -mno-strict-align).Generate code without GP reg.Generate compile-time CFString objects.Generate compressed debug sections.Generate conditional move instructions.Generate constant pools in the compiler instead of assembler.Generate cpp defines for server IO.Generate cpp defines for workstation IO.Generate debug information in CodeView format.Generate debug information in DWARF v2 (or later) format.Generate debug information in VMS format.Generate debug information in default extended format.Generate debug information in default format.Generate debug information in default version of DWARF format.Generate debug information in separate .dwo files.Generate default double-precision SH2a-FPU code.Generate default single-precision SH2a-FPU code.Generate default single-precision SH4 code.Generate default single-precision SH4-100 code.Generate default single-precision SH4-200 code.Generate default single-precision SH4-300 code.Generate default single-precision SH4a code.Generate discontiguous stack frames.Generate divide instructions.Generate divide results with reminder having the same sign as the divisor (not the dividend).Generate documentation.Generate double-precision floating-point instructions.Generate extended arithmetic instructions, only valid for ARC700.Generate extended entry point information for inlined functions.Generate fast indirect calls.Generate floating point mathematics using given instruction set.Generate floating-point multiply-accumulation instructions.Generate frecipd/fsqrtd/fdivd instructions (default for hard float).Generate hardware abs instructions.Generate inline floating point division, optimize for latency.Generate inline floating point division, optimize for throughput.Generate inline integer division, optimize for latency.Generate inline integer division, optimize for throughput.Generate inline square root, optimize for latency.Generate inline square root, optimize for throughput.Generate instructions supported by barrel shifter.Generate isel instructions.Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode.Generate libcalls for atomic loads and stores when sync libcalls are disabled.Generate little endian code.Generate little-endian code.Generate little-endian eBPF.Generate load/store multiple instructions.Generate load/store with update instructions.Generate local calls to out-of-line atomic operations.Generate make dependencies and compile.Generate make dependencies.Generate mcount/__fentry__ calls as nops. To activate they need to be patched in.Generate millicode thunks.Generate mul64 and mulu64 instructions.Generate norm instruction.Generate normal-mode code.Generate only single-precision SH2a-FPU code.Generate only single-precision SH4 code.Generate only single-precision SH4-100 code.Generate only single-precision SH4-200 code.Generate only single-precision SH4-300 code.Generate only single-precision SH4a code.Generate pc-relative code.Generate performance extension instructions.Generate performance extension version 2 instructions.Generate phony targets for all headers.Generate position-independent code for executables if possible (large mode).Generate position-independent code for executables if possible (small mode).Generate position-independent code if possible (large mode).Generate position-independent code if possible (small mode).Generate prefetch instructions, if available, for arrays in loops.Generate pruned BTF when emitting BTF info.Generate push/pop instructions (default).Generate re-entrant, PIC code.Generate reciprocals instead of divss and sqrtss.Generate return instruction in naked function.Generate run time type descriptor information.Generate sdata references.  This is the default, unless you compile for PIC.Generate sections .s390_indirect_jump, .s390_indirect_call, .s390_return_reg, and .s390_return_mem to contain the indirect branch locations which have been patched as part of using one of the -mindirect-branch* or -mfunction-return* options.  The sections consist of an array of 32 bit elements. Each entry holds the offset from the entry to the patched location.Generate self-relocatable code.Generate sin, cos, sqrt for FPU.Generate single-precision floating-point instructions.Generate software reciprocal divide and square root for better throughput.Generate special Objective-C methods to initialize/destroy non-POD C++ ivars, if needed.Generate stm/ldm instructions (default).Generate string extension instructions.Generate swap instruction.Generate the integer modulo instructions.Generate the quad word memory atomic instructions (lqarx/stqcx).Generate the quad word memory instructions (lq/stq).Generate unaligned VSX load/store for inline expansion of memcpy/memmove.Generate unaligned VSX vector pair load/store for inline expansion of memcpy/memmove.Generate unwind tables that are exact at each instruction boundary.Generate v3 push25/pop25 instructions.Generate vzeroupper instruction before a transfer of control flow out of the function.Generate xBPF.Generated loop of UNROLL construct at %L without PARTIAL clause does not have canonical formGeneric function %qs at %L is not consistent with a specific intrinsic interfaceGeneric name %qs of function %qs at %L being the same name as derived type at %LGeneric subroutine %qs at %L is not consistent with an intrinsic subroutine interfaceGive branches their default cost.Give external symbols a leading underscore.Global binding name %qs at %L is already being used as a %s at %LGlobal binding name %qs at %L is already being used at %LGlobal declarative %s for %sGlobal entity %qs at %L cannot appear in a COMMON blockGlobal entity %qs at %L cannot appear in a COMMON block at %LGlobal name %qs at %L is already being used as a %s at %LGlobal name %qs at %L is already being used at %LGot unknown attribute %<target("%s")%>Graphite loop optimizations cannot be used (isl is not available) (%<-fgraphite%>, %<-fgraphite-identity%>, %<-floop-nest-optimize%>, %<-floop-parallelize-all%>)Graphite loop optimizations cannot be used (isl is not available).Guide linker to relax instructions.HOLDS expression at %L must be a scalar logical expressionHandle OpenMP allocators for allocatables and pointers.Handle atomic builtins that may be applied to unaligned data by calling library functions. Overrides -mtrap-unaligned-atomic.Harden conditional branches by checking reversed conditions.Harden conditionals not used in branches, checking reversed conditions.Harden control flow by recording and checking execution paths.Hardware autoprefetcher scheduler model control flag.  Number of lookahead cycles the model looks into, at '0' only enable instruction sorting heuristic.  Disabled by default.Hexadecimal constant at %L uses nonstandard X instead of ZHollerith constant at %CHost associated variable %qs may not be in the DATA statement at %CHow much can given compilation unit grow because of the inlining (in percent).How much can given compilation unit grow because of the interprocedural constant propagation (in percent).I don%'t know how to MOVE an alphabetical string to %s(%s)I/O register operand for '%%%c'IBITS: Bad bitICE: %<emit_insn%> used where %<emit_jump_insn%> needed:ID of shared library to build.ID shared libraries and FD-PIC mode cannot be used togetherIEEE_ARITHMETIC module at %CIEEE_EXCEPTIONS module at %CIEEE_FEATURES module at %CIF clause at %L requires a scalar LOGICAL expressionIF clause modifier %s at %L not appropriate for the current OpenMP constructIF clause without modifier at %L used together with IF clauses with modifiersILP32E ABI does not support the %qc extensionIM part_ref at %CIMPLICIT NONE (type) statement at %L following an IMPLICIT statementIMPLICIT NONE with spec list at %CIMPLICIT statement at %C following an IMPLICIT NONE (type) statementIMPORT statement at %CIMPORT statement at %C only permitted in an INTERFACE bodyIMPURE procedure at %CINDIRECT clause at %C requires a constant logical expressionINQUIRE statement at %L cannot contain both FILE and UNIT specifiersINQUIRE statement at %L requires a PENDING= specifier with the ID= specifierINQUIRE statement at %L requires either FILE or UNIT specifierINQUIRE statement not allowed in PURE procedure at %CINTEGER expression of %s clause at %L must be non-negativeINTEGER expression of %s clause at %L must be positiveINTEGER expression of SCHEDULE clause's chunk_size at %L must be positiveINTEGER(KIND=8) is not available for %<-fdefault-integer-8%> optionINTEGER(KIND=8) is not available for %<-finteger-4-integer-8%> optionINTENT (%s) conflicts with INTENT(%s) at %LINTENT is not allowed inside of BLOCK at %CINTENT(%s) actual argument at %L might interfere with actual argument at %L.INTENT(IN) POINTER %qs in %s clause at %LINTENT(IN) POINTER %qs in COPYPRIVATE clause at %LINTENT(OUT) argument %qs of pure procedure %qs at %L may not be polymorphicINTERFACE procedure %qs at %L has the same name as the enclosing procedureIO UNIT in %s statement at %L must be an internal file in a PURE procedureIOLENGTH tag invalid in INQUIRE statement at %CIOMSG tag at %LIPA modref summary is missing in input fileIPA-SRA access verification failedISA %qs is not supported in %<target%> attribute, use %<arch=%> syntaxISO C does not allow %<%E (expression)%>ISO C does not allow extra %<;%> outside of a functionISO C does not permit %<_Alignof%> applied to a function typeISO C does not support %<#pragma STDC FLOAT_CONST_DECIMAL64%>ISO C does not support %<%s_BitInt(%d)%> before C23ISO C does not support %<++%> and %<--%> on complex types before C2YISO C does not support %<[[]]%> attributes before C23ISO C does not support %<_Generic%> association with function type before C2YISO C does not support %<_Generic%> association with incomplete type before C2YISO C does not support %<__int%d%> typesISO C does not support %<auto%> type deduction before C23ISO C does not support %<~%> for complex conjugationISO C does not support %qs before C23ISO C does not support %qs predefined identifierISO C does not support %qs statement with an identifier operand before C2YISO C does not support complex integer typesISO C does not support decimal floating-point before C23ISO C does not support fixed-point typesISO C does not support if declarations before C2YISO C does not support omitting parameter names in function definitions before C23ISO C does not support plain %<complex%> meaning %<double complex%>ISO C does not support range expressions in switch statements before C2YISO C does not support saturating typesISO C does not support specifying %<enum%> underlying types before C23ISO C does not support the %<_Float%d%s%> type before C23ISO C does not support use of type name as %<_Generic%> controlling operand before C2YISO C forbids %<goto *expr;%>ISO C forbids %<return%> with expression, in function returning voidISO C forbids an empty translation unitISO C forbids assignment between function pointer and %<void *%>ISO C forbids braced-groups within expressionsISO C forbids casting nonscalar to the same typeISO C forbids casts to union typeISO C forbids comparison of %<void *%> with function pointerISO C forbids conditional expr between %<void *%> and function pointerISO C forbids conditional expr with only one void sideISO C forbids const or volatile function typesISO C forbids conversion of function pointer to object pointer typeISO C forbids conversion of object pointer to function pointer typeISO C forbids empty initializer braces before C23ISO C forbids forward parameter declarationsISO C forbids forward references to %<enum%> typesISO C forbids initialization between function pointer and %<void *%>ISO C forbids label declarationsISO C forbids member declarations with no membersISO C forbids nested functionsISO C forbids omitting the middle term of a %<?:%> expressionISO C forbids ordered comparisons of pointers to functionsISO C forbids passing argument %d of %qE between function pointer and %<void *%>ISO C forbids qualified function typesISO C forbids return between function pointer and %<void *%>ISO C forbids specifying range of elements to initializeISO C forbids storage class specifiers in compound literals before C23ISO C forbids subscripting %<register%> arrayISO C forbids zero-size arrayISO C forbids zero-size array %qEISO C prohibits argument conversion to union typeISO C requires a named argument before %<...%> before C23ISO C restricts enumerator values to range of %<int%> before C23ISO C++ %qE attribute does not apply to functions; treating as %<[[gnu::%E]]%>ISO C++ 1998 does not support %<long long%>ISO C++ 1998 forbids the use of %<extern%> on explicit instantiationsISO C++ allows bit-field attributes only before the %<:%> tokenISO C++ did not adopt string literal operator templates taking an argument pack of charactersISO C++ does not allow %<?:%> with omitted middle operandISO C++ does not allow %<alignof%> with a non-typeISO C++ does not allow C99 designated initializersISO C++ does not allow GNU designated initializersISO C++ does not allow converting to %qH from %qI with greater conversion rankISO C++ does not allow converting to %qH from %qI with unordered conversion rankISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>ISO C++ does not permit %<alignof%> applied to a function typeISO C++ does not support %<__int%d%> for %qsISO C++ does not support plain %<complex%> meaning %<double complex%>ISO C++ forbids applying %<__alignof%> to an expression of function typeISO C++ forbids applying %<sizeof%> to an expression of function typeISO C++ forbids braced-groups within expressionsISO C++ forbids calling %<::main%> from within programISO C++ forbids casting to an array type %qTISO C++ forbids comparison between pointer and integerISO C++ forbids comparison between pointer of type %<void *%> and pointer-to-functionISO C++ forbids compound-literalsISO C++ forbids computed gotosISO C++ forbids conditional expression between pointer of type %<void *%> and pointer-to-functionISO C++ forbids conversion between pointer of type %<void *%> and pointer-to-functionISO C++ forbids converting a string constant to %qTISO C++ forbids declaration of %qs with no typeISO C++ forbids decrementing a pointer of type %qTISO C++ forbids decrementing an enumISO C++ forbids empty unnamed enumISO C++ forbids flexible array member %qsISO C++ forbids flexible array membersISO C++ forbids in-class initialization of non-const static member %qDISO C++ forbids incrementing a pointer of type %qTISO C++ forbids incrementing an enumISO C++ forbids initialization of member constant %qD of non-integral type %qTISO C++ forbids nested type %qD with same name as enclosing classISO C++ forbids omitting the middle term of a %<?:%> expressionISO C++ forbids taking address of function %<::main%>ISO C++ forbids taking the address of a bound member function to form a pointer to explicit object member functionISO C++ forbids taking the address of a bound member function to form a pointer to member function.  Say %<&%T::%D%>ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to explicit object member functionISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to explicit object member function.ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function.  Say %<&%T::%D%>ISO C++ forbids the use of %qE on explicit instantiationsISO C++ forbids typename key in template template parameter; use %<-std=c++17%> or %<-std=gnu++17%>ISO C++ forbids using a floating-point literal in a constant-expressionISO C++ forbids using pointer of type %<void *%> in subtractionISO C++ forbids using pointer to a function in subtractionISO C++ forbids using pointer to a method in subtractionISO C++ forbids variable length arrayISO C++ forbids variable length array %qDISO C++ forbids zero-size arrayISO C++ forbids zero-size array %qDISO C++ prohibits anonymous structsISO C++ prohibits overloading %<operator ?:%>ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:ISO C++17 does not allow %<register%> storage class specifierISO C++17 does not allow dynamic exception specificationsISO C11 does not support omitting the string in %qEISO C23 does not allow arguments for function %qE declared without parametersISO C23 does not allow arguments for method %qE declared without parametersISO C23 does not allow defining parameters for function %qE declared without parametersISO C90 does not support %<[*]%> array declaratorsISO C90 does not support %<_Generic%>ISO C90 does not support %<_Noreturn%>ISO C90 does not support %<__func__%> predefined identifierISO C90 does not support %<for%> loop initial declarationsISO C90 does not support %<long long%>ISO C90 does not support %<static%> or type qualifiers in parameter array declaratorsISO C90 does not support %qEISO C90 does not support boolean typesISO C90 does not support complex typesISO C90 does not support flexible array membersISO C90 does not support the %<_Atomic%> qualifierISO C90 doesn%'t support unnamed structs/unionsISO C90 forbids array %qE whose size cannot be evaluatedISO C90 forbids array whose size cannot be evaluatedISO C90 forbids compound literalsISO C90 forbids mixed declarations and codeISO C90 forbids specifying subobject to initializeISO C90 forbids subscripting non-lvalue arrayISO C90 forbids variable length arrayISO C90 forbids variable length array %qEISO C99 does not support %<_Generic%>ISO C99 does not support %<_Noreturn%>ISO C99 does not support %qEISO C99 does not support the %<_Atomic%> qualifierISO C99 doesn%'t support unnamed structs/unionsISO_C_BINDING module at %CISO_FORTRAN_ENV intrinsic module at %CITERATOR may not be combined with SINK at %CITERATOR may not be combined with SOURCE at %CIf -ftree-vectorize is used, the minimal loop bound of a loop to be considered for vectorization.If -fvariable-expansion-in-unroller is used, the maximum number of times that an individual variable will be expanded during loop unrolling.If bounds remapping is specified at %L, the pointer target shall not be NULLIf first argument of ATAN2 at %L is zero, then the second argument must not be zeroIf first argument of ATAN2D at %L is zero, then the second argument must not be zeroIf number of candidates in the set is smaller, we always try to remove unused ivs during its optimization.If scheduling post reload, do superblock scheduling.Ignore 'D' in column one in fixed form.Ignore dllimport for functions.Ignore the normal two-level namespace; resolve symbols in command line order and do not record which library provided the resolved symbol.Ignore unsupported pragmas.Ignored, but preserved for backward compatibility.Ignored, but preserved for backward compatibility.  Only 64-bit ABI is supported.Ignored.Ignoring %<!$omx%> vendor-extension sentinel at %CIllegal allocate-object at %C for a PURE procedureIllegal assignment to external procedure at %LIllegal character in BOZ constant at %CIllegal coarray indexIllegal id in copy_walk_reduction_argIllegal preprocessor directiveIllegal reference type at %L as EQUIVALENCE objectIllegal stride of zero at %LIllegal type in character concatenation at %LImage control statement %s at %C in CRITICAL blockImage control statement %s at %C in DO CONCURRENT blockImage control statement %s at %C in PURE procedureImage control statement CRITICAL at %C in DO CONCURRENT blockImage control statement CRITICAL at %C in PURE procedureImage control statement EVENT %s at %C in CRITICAL blockImage control statement EVENT %s at %C in DO CONCURRENT blockImage control statement EVENT %s at %C in PURE procedureImage control statement RETURN at %C in CRITICAL blockImage control statement RETURN at %C in DO CONCURRENT blockImage control statement STOP at %C in CRITICAL blockImage control statement STOP at %C in DO CONCURRENT blockImage control statement SYNC at %C in CRITICAL blockImage control statement SYNC at %C in DO CONCURRENT blockImage control statement SYNC at %C in PURE procedureImageset argument at %L must be a scalar or rank-1 INTEGER expressionImageset argument at %L must between 1 and num_images()Imperfectly nested loop using generated loopsImplement 'in' contracts of overridden methods to be a superset of parent contract.Implement 'in' parameters to mean scope const.Implement C++17 inheriting constructor semantics.Implement D bit-fields.Implement DIP1000: Scoped pointers.Implement DIP1008: Allow exceptions in @nogc code.Implement DIP1021: Mutable function arguments.Implement P2564 for consteval propagation.Implement __atomic operations via libcalls to legacy __sync functions.Implement resolution of DR 150 for matching of template template arguments.Implicitly declared BIND(C) function %qs at %L may not be C interoperableImplicitly declared BIND(C) variable %qs at %L may not be C interoperableImplicitly declared function %s used in !$OMP DECLARE REDUCTION at %LImplicitly declared subroutine %s used in !$OMP DECLARE REDUCTION at %LImplicitly declared variable %qs at %L may not be C interoperable but it is a dummy argument to the BIND(C) procedure %qs at %LImplicitly typed PARAMETER %qs at %L doesn't match a later IMPLICIT typeImplied SAVE for module variable %qs at %L, needed due to the default initializationImplied-shape array at %LImpure function %qs at %L might not be evaluatedImpure function at %L might not be evaluatedIn %<mh_dest_is_float%>(%s to %s), the move of %s to %s is unimplementedIn %<parser_move(%s to %s)%>, the move of FldLiteralN to %s is unimplementedIn %s at %L procedures must be all FUNCTIONs as the generic name is also the name of a derived typeIn %s at %L procedures must be either all SUBROUTINEs or all FUNCTIONsIn C++, nonzero means warn about deprecated conversion from string literals to 'char *'.  In C, similar warning, except that the conversion is of course not deprecated by the ISO C standard.In Fortran 2003 COMMON %qs block at %L is a global identifier and must thus have the same binding name as the same-named COMMON block at %L: %s vs %sIn SSA-PRE optimization on trees, enable partial-partial redundancy elimination.In a pure subprogram an INTENT(IN) dummy argument shall not be used as the expr at %L of an intrinsic assignment statement in which the variable is of a derived type if the derived type has a pointer component at any level of component selection.In call to %qs at %L, type mismatch in argument %qs; pass %qs to %qsIn constructor %qDIn copy constructor %qDIn destructor %qDIn explicit object member function %qDIn file included fromIn function %qDIn function %qsIn lambda functionIn member function %qDIn member function %qsIn moduleIn module imported atIn static member function %qDInclude directory %qs: %sInclude imported modules in the compilation.Included file %qs is not a regular fileIncompatible allocate-object at %C for CHARACTER type-spec at %LIncompatible derived type in PARAMETER at %LIncompatible initialization between a derived type entity and an entity with %qs type at %CIncompatible ranks %d and %d in assignment at %LIncompatible ranks in %s (%d and %d) at %LIncompatible types in DATA statement at %L; attempted conversion of %s to %sIncompatible typespec for array element at %LIncompatible use of TILE and COLLAPSE at %LInconsistent equivalence rules involving %qs at %L and %qs at %LInconsistent internal state: No location in expression near %LInconsistent internal state: No location in statementInconsistent ranks for operator at %L and %LInconsistent types for operator at %L and %L: %s and %sIncorrect EH edge %i->%iIncorrect extent in argument B in MATMUL intrinsic in dimension 1: is %ld, should be %ldIncrease the IEEE compliance for floating-point comparisons.Index in dimension %d is out of bounds at %LIndex variable %qs at %L cannot be specified in a locality-specIndex variable %qs not definable as INTENT(INOUT) argument at %L in procedure %qs called from within DO loop at %LIndex variable %qs not definable as INTENT(INOUT) argument at %L in subroutine %qs called from within DO loop at %LIndex variable %qs redefined at %L in procedure %qs called from within DO loop at %LIndex variable %qs set to undefined as INTENT(OUT) argument at %L in procedure %qs called from within DO loop at %LIndex variable %qs set to undefined as INTENT(OUT) argument at %L in subroutine %qs called from within DO loop at %LIndicate how many non memory access vector instructions can be issued per cycle, it's used in unroll factor determination for autovectorizer.  The default value is 4.Indicate priority for r0..r3 / r12..r15 with TARGET_REGISTER_PRIORITY.Inequality comparison for %s at %LInhibit the use of hardware floating point instructions.Initialization at %C is not allowed in a PURE procedureInitialization at %C isn't for a pointer variableInitialization of allocatable component at %C is not allowedInitialization of pointer at %C is not allowed in a PURE procedureInitialization of structure component with a HOLLERITH constant at %L is not allowedInitialization of variable at %C is not allowed in a PURE procedureInitialization string at %L was truncated to fit the variable (%wd/%wd)Initialize components of derived type variables according to other init flags.Initialize local variables to zero (from g77).Initialize ptx registers.Initialized symbol %qs at %C can only be COMMON in BLOCK DATAInitialized variable %qs at %L is in a blank COMMON but initialization is only allowed in named common blocksInitializer not allowed for PARAMETER %qs at %CInitializing already initialized variable at %CInline __atomic operations when a lock free instruction sequence is available.Inline all known string operations.Inline code to invalidate instruction cache entries after setting up nested function trampolines.Inline constants if it can be done in 2 insns or less.Inline memset/memcpy string operations, but perform inline version only for small blocks.Inline recursively only when the probability of call being executed exceeds the parameter.Inline strcmp calls if possible.Inline strlen calls if possible.Inline strncmp calls if possible.Inquiry parameter cannot appear in a data-stmt-object-list at %CInsert ENDBR instruction at function entry only via cf_check attribute for CET instrumentation.Insert NOP instructions at each function entry.Insert arc-based program profiling code.Insert code to probe each page of stack space as it is allocated to protect from stack-clash style attacks.Insert code to profile values of expressions.Insert condition coverage profiling code.Insert path profiling code.Insert relax hint for linker to do relaxation.Insert stack checking code into the program.  Same as -fstack-check=specific.Instruction accounted for function prologue, epilogue and other overhead.Instruction accounted for function thunk overhead.Instructions number above which STFL stall penalty can be compensated.Instrument function entry and exit with profiling calls invoked once.Instrument function entry and exit with profiling calls.Instrument function exit in instrumented functions with __fentry__.Instrument only functions from files whose name does not match any of the regular expressions (separated by semi-colons).Instrument only functions from files whose name matches any of the regular expressions (separated by semi-colons).Integer division truncated to constant %qs at %LInteger expression required at %CInteger kind %d at %C not availableInteger outside symmetric range implied by Standard Fortran at %LInteger outside symmetric range implied by Standard Fortran converting %s to %s at %LInteger overflow when calculating the amount of memory to allocateInteger too big for its kind at %C. This check can be disabled with the option %<-fno-range-check%>Integer too large at %CInteger value too large in expression at %CIntegrate functions into their callers when code size is known not to grow.Integrate functions not declared "inline" into their callers when profitable.Integrate functions only required by their single caller.Intel MCU psABI isn%'t supported in %s modeInterchanging loops at %LInterface %qs at %L is declared in a later PROCEDURE statementInterface %qs at %L may not be a statement functionInterface %qs at %L may not be genericInterface %qs at %L must be explicitInterface mismatch for procedure-pointer component %qs in structure constructor at %L: %sInterface mismatch in dummy procedure %qs at %L: %sInterface mismatch in dummy procedure at %L conflicts with %L: %sInterface mismatch in global procedure %qs at %L: %sInterface mismatch in procedure pointer assignment at %L: %qs is not a subroutineInterface mismatch in procedure pointer assignment at %L: %sInterface must be specified for DEFERRED binding at %CInterface of %qs at %L must be explicitInterface-name expected after %<(%> at %CInternal compiler error:
  Internal file at %L with namelistInternal procedure %qs in %s at %LInternal procedure %qs is invalid in procedure pointer assignment at %LInternal procedure %qs is invalid in procedure pointer initialization at %LInternal procedure %qs is used as actual argument at %LInternal unit with vector subscript at %LInterpret any INTEGER(4) as an INTEGER(8).Interpret any REAL(4) as a REAL(10).Interpret any REAL(4) as a REAL(16).Interpret any REAL(4) as a REAL(8).Interpret any REAL(8) as a REAL(10).Interpret any REAL(8) as a REAL(16).Interpret any REAL(8) as a REAL(4).Interpret imaginary, fixed-point, or other gnu number suffix as the corresponding number literal rather than a user-defined number literal.Interrupt Service Routines cannot be coded in Thumb-1 modeIntersperse literal pools with code in the text section.Interval in which to probe the stack expressed as a power of two in bytes.Interval overlap of %<-fdbg-cnt=%s%>: [%u, %u] and [%u, %u]Intrinsic %<NULL()%> without %<MOLD%> argument at %L passed to assumed-length dummy %qsIntrinsic %<NULL()%> without %<MOLD%> argument at %L passed to assumed-rank dummy %qsIntrinsic %qs (%s) used at %LIntrinsic %qs at %L cannot have an initializerIntrinsic %qs at %L is invalid in procedure pointer assignmentIntrinsic %qs at %L is not allowed as an actual argumentIntrinsic %qs at %L must have at least two argumentsIntrinsic TRANSFER at %L has partly undefined result: source size %zd < result size %zdIntrinsic function %qs (%d) not recognizedIntrinsic function %qs at %L is not permitted in an initialization expressionIntrinsic function %s at %L is not permitted for %sIntrinsic function NULL at %L cannot be an actual argument to STORAGE_SIZE, because it returns a disassociated pointerIntrinsic operator %qs referenced at %L not found in module %qsIntrinsic operator interface at %L must be a FUNCTIONIntrinsic procedure %qs not allowed in PROCEDURE statement at %LIntrinsic procedure at %L cannot be a MODULE PROCEDUREIntrinsic subroutine %qs at %L shall not have a type specifierIntrinsic symbol specified in !$ACC ROUTINE ( NAME ) at %C marked with incompatible GANG, WORKER, or VECTOR clauseIntrinsic symbol specified in !$ACC ROUTINE ( NAME ) at %C marked with incompatible NOHOST clauseInvalid %qs directive at %L in %s clause: declarative, informational, and meta directives not permittedInvalid BOZ literal constant used in subscript at %CInvalid C identifier in NAME= specifier at %CInvalid Hollerith constant at %L contains a wide characterInvalid Hollerith constant: %L must contain at least one characterInvalid Hollerith constant: Integer kind at %L should be defaultInvalid KIND parameter of %s at %LInvalid NAME %qs in !$ACC ROUTINE ( NAME ) at %CInvalid NULL at %LInvalid argument to !$ACC WAIT at %CInvalid array reference at %LInvalid array reference of a non-array entity at %LInvalid association target at %CInvalid character %<$%> at %L. Use %<-fdollar-ok%> to allow it as an extensionInvalid character %qc in variable name at %CInvalid character 0x%s at %CInvalid character in name at %CInvalid character(s) in ELSE statement after %CInvalid clause in module with !$ACC DECLARE at %LInvalid codimension %d at %C, only %d codimensions existInvalid combined or composite directive at %LInvalid context for NULL () intrinsic at %LInvalid context for NULL() pointer at %LInvalid exponent-letter %<q%> in real-literal-constant at %CInvalid expression after %<%s(%> at %CInvalid expression in gfc_element_size.Invalid expression in gfc_target_encode_expr.Invalid expression in gfc_target_interpret_expr.Invalid expression in the structure constructor for pointer component %qs at %L in PURE procedureInvalid form of PROGRAM statement at %CInvalid form of WRITE statement at %L, UNIT requiredInvalid form of array reference at %CInvalid form of coarray reference at %CInvalid image number %d in SYNC IMAGESInvalid initialization expression for ALLOCATABLE component %qs in structure constructor at %LInvalid initializer %s in Data statement at %CInvalid keyword %qs in %qs intrinsic function at %LInvalid kind %d for CHARACTER constant at %CInvalid kind for %s at %LInvalid mixing of IEEE 128-bit and IBM 128-bit floating point typesInvalid old style initialization for derived type component at %CInvalid operator for !$OMP DECLARE REDUCTION %s at %LInvalid procedure argument at %LInvalid procedure pointer assignment at %LInvalid range %s in option %sInvalid real kind %d at %CInvalid standard code on intrinsic %qs (%d)Invalid substring in data-implied-do at %L in DATA statementInvalid type in arithmetic operation at %LInvalid type-spec at %CInvalid use of BOZ literal constant at %LInvalid use of statement function argument at %LInvalid value for %s specification at %CIssue a note when diagnostics are deduplicated.Issue debug information for compiler-generated auxiliary variables.Issue warnings needed for strict compliance to the standard.Iterator step at %L cannot be zeroJSON arrayJSON format version: %s
  JSON literalJSON numberJSON objectJSON stringJump targets are aligned to this power of 2.Junk after ASSOCIATE statement at %CJunk after CALL at %CJunk after GENERIC binding at %CJunk after MAP statement at %CJunk after UNION statement at %CJunk after non-nested STRUCTURE statement at %CJust generate unwind tables for exception handling.Just use icc0/fcc0.KIND attribute at %C in a STRUCTURE definitionKIND attribute at %C in a TYPE definitionKIND parameter of %s at %L must be an initialization expressionKIND part_ref at %CKeyword %qs at %C has already appeared in the current argument listKeyword argument %qs at %L is already associated with another actual argumentKeyword argument %qs at %L is invalid in a statement functionKeyword argument %qs at %L is not in the procedureKeyword argument %qs at %L is not in the procedure; did you mean %qs?Keyword argument requires explicit interface for procedure %qs at %LKeyword argument requires explicit interface for procedure pointer component %qs at %LKind %d is not supported for CHARACTER at %CKind %d not supported for type %s at %CKind type parameter for entity at %L differs from the kind type parameter of the typespecKnown AArch64 ABIs (for use with the -mabi= option):Known ABIs (for use with the -mabi= option):Known ARC CPUs (for use with the -mcpu= option):Known ARM ABIs (for use with the -mabi= option):Known ARM CPUs (for use with the -mcpu= and -mtune= options):Known ARM FPUs (for use with the -mfpu= option):Known ARM architectures (for use with the -march= option):Known C6X ISAs (for use with the -march= option):Known CPUs (for use with the -mcpu= and -mtune= options):Known CSKY CPUs (for use with the -mcpu= options):Known CSKY FPUs (for use with the -mfpu= option):Known CSKY architectures (for use with the -march= option):Known FR-V CPUs (for use with the -mcpu= option):Known IQ2000 CPUs (for use with the -mcpu= option):Known Itanium CPUs (for use with the -mtune= option):Known M68K CPUs (for use with the -mcpu= option):Known M68K ISAs (for use with the -march= option):Known M68K microarchitectures (for use with the -mtune= option):Known MIPS ABIs (for use with the -mabi= option):Known MIPS CPUs (for use with the -march= and -mtune= options):Known MIPS IEEE 754 settings (for use with the -mabs= and -mnan= options):Known MIPS ISA levels (for use with the -mips option):Known PTX ISA target architectures (for use with the -misa= option):Known PTX ISA versions (for use with the -mptx= option):Known TLS dialects (for use with the -mtls-dialect= option):Known __fp16 formats (for use with the -mfp16-format= option):Known address mode (for use with the -maddress-mode= option):Known arch types (for use with the -march= option):Known assembler dialects (for use with the -masm= option)Known assembler dialects (for use with the -masm= option):Known choices for mitigation against straight line speculation with -mharden-sls=:Known choices for return instrumentation with -minstrument-return=:Known cmodel types (for use with the -mcmodel= option):Known cmodel types (for use with the -mict-model= option):Known code model types (for use with the -mcmodel= option):Known code models (for use with the -mcmodel= option):Known cpu types (for use with the -mcpu= option):Known data alignment choices (for use with the -malign-data= option):Known floating-point ABIs (for use with the -mfloat-abi= option):Known floating-point number of registers (for use with the -mconfig-fpu= option):Known indirect branch choices (for use with the -mindirect-branch=/-mfunction-return= options):Known preferred register vector length (to use with the -mprefer-vector-width= option):Known stack protector guard (for use with the -mstack-protector-guard= option):Known vectorization library ABIs (for use with the -mveclibabi= option):L%d cache latency unknown for %sLEN argument (%ld) out of range 0:%d in intrinsic MVBITSLEN argument (%ld) out of range 0:%ld in intrinsic IBITSLEN attribute at %C in a STRUCTURE definitionLEN attribute at %C in a TYPE definitionLEN or KIND inquiry ref in DATA statement at %LLEN part_ref at %CLEVEL 01 (%s) OCCURS has insufficient data.memsizeLHS in %<noreturn%> callLINEAR clause modifier other than VAL used on DO or SIMD construct at %LLINEAR clause modifier used on DO or SIMD construct at %LLINEAR dummy argument %qs with VALUE attribute with %s modifier at %LLINEAR variable %qs must be INTEGER at %LLOCK statement at %CLOCK_EVENT in variable definition context (%s) at %LLOCK_TYPE in variable definition context (%s) at %LLOGICAL dummy argument %qs at %L with non-C_Bool kind in BIND(C) procedure %qsLOGICAL operands are required in expression at %LLOGICAL result variable %qs at %L with non-C_Bool kind in BIND(C) procedure %qsLP64E ABI is marked for deprecation in GCCLTO streaming of toplevel extended %<asm%> unimplementedLTO support has not been enabled in this configurationLabel %d at %C already referenced as a format labelLabel %d at %C already referenced as branch targetLabel %d at %C previously used as a FORMAT labelLabel %d at %C previously used as branch targetLabel %d at %L defined but cannot be usedLabel %d at %L defined but not usedLabel %d referenced at %L is never definedLabel %qs after %L doesn't match IF label %qsLabel %qs at %C doesn't match IF label %qsLabel %qs at %C doesn't match WHERE label %qsLabel at %L is not in the same block as the GOTO statement at %LLabel name %qs at %C is ambiguousLabeled DO statement at %LLeft parenthesis required after %<*%> in format string at %LLegacy Extension:Letter %qc already has an IMPLICIT type at %CLetter %qc already set in IMPLICIT statement at %CLetters must be in alphabetic order in IMPLICIT statement at %CLevel not found, use none, slim, blocks, vops.Lift restrictions on GOT size.Like -M but ignore system header files.Like -MD but ignore system header files.Like -pedantic but issue errors instead of warnings.Like parameter rs6000-density-load-pct-threshold, we also check if the total number of load statements exceeds the threshold specified by this parameter, and penalize only if it's satisfied.  The default value is 20.Like parameter rs6000-density-pct-threshold, we also check the total sum of vec_cost and non vec_cost, and penalize only if the sum exceeds the threshold specified by this parameter.  The default value is 70.Limit how much the autovectorizer may unroll a loop.Limit of %d continuations exceeded in statement at %CLimit on number of alias checks performed when attempting to form an ldp/stp.Line truncated at %LLines executed:%s of %d
! Link in code for a __main kernel.Link the standard D library dynamically in the compilation.Link the standard D library statically in the compilation.Link the standard Modula-2 libraries statically in the compilation.Link to emit program in ELF format (rather than mmo).Link with libads.a, libc.a and crt0.o.Link with libc.a and libdebug.a.Link with libc.a and libsim.a.Link with libmvme.a, libc.a and crt0.o.Link with libsim.a, libc.a and sim-crt0.o.Link with libyk.a, libc.a and crt0.o.Link with the fast floating-point library.Link with the library-pic libraries.Link-time optimization with number of parallel jobs or jobserver.List all available debugging counters with their limits and counts.List all hidden GC allocations.List all non-mutable fields which occupy an object instance.List all usages of 'in' on parameter.List all variables going into thread local storage.List information on all D language transitions.List item %qs at %L set in previous OMP DECLARE TARGET directive to a different DEVICE_TYPEList item %qs at %L, declared at %L, is not a dummy argumentList item %qs in %s clause at %L must be of TYPE(C_PTR)List item shall not be coindexed at %LList specified together with memory order clause in FLUSH directive at %CList statistics on template instantiations.Load all members of archive libraries, rather than only those that satisfy undefined symbols.Locality spec at %LLocator %qs at %L in DEPEND clause of depobj type shall be a scalar integer of OMP_DEPEND_KIND kindLocator at %L in DEPEND clause of depobj type shall be a scalar integer of OMP_DEPEND_KIND kindLock variable at %L must be a scalar of type LOCK_TYPELogical SELECT CASE block at %L has more that two casesLogical range in CASE statement at %L is not allowedLogicals at %L must be compared with %s instead of %sLogs which object files the linker loads.Logs which symbol(s) caused an object to be loaded.Look for and use PCH files even when preprocessing.Look for the main source file on the include path.Looks for opportunities to reduce stack adjustments and stack references.LoongArch ARCH presets:LoongArch TUNE presets:Loop code aligned to this power of 2.Loop iterates infinitelyLoop variableLoop variable at %C cannot be a coarrayLoop variable at %C cannot be a sub-componentLoop variable at %C cannot be an arrayLoop variable has been modifiedLoops iterating at least selected number of iterations will get loop alignment.Lower array reference at %L is out of bounds (%ld < %ld) in dimension %dLower array reference at %L is out of bounds (%ld > %ld) in dimension %dMAP %qD TO %qEMAP %qD TO %qTMASK present at %L without IDENTITYMCU %qs does not have hardware multiply support, but %<-mhwmult%> is set to %sMCU %qs supports %s ISA but %<-mcpu%> option is set to %sMCU %qs supports %s hardware multiply, but %<-mhwmult%> is set to 16-bitMCU %qs supports %s hardware multiply, but %<-mhwmult%> is set to 32-bitMCU %qs supports %s hardware multiply, but %<-mhwmult%> is set to f5seriesMESSAGE clause at %L requires a scalar default-kind CHARACTER expressionMIPS16 %<-mxgot%> codeMIPS16 PIC for ABIs other than o32 and o64MIPS16 requires %<-mexplicit-relocs%>MMIX Internal: %s is not a shiftable integerMMIX Internal: Bad register: %dMMIX Internal: Bad value for 'm', not a CONST_INTMMIX Internal: Cannot decode this operandMMIX Internal: Expected a CONST_INT, not thisMMIX Internal: Expected a constant, not thisMMIX Internal: Expected a register, not thisMMIX Internal: Last named vararg would not fit in a registerMMIX Internal: Missing %qc case in %<mmix_print_operand%>MMIX Internal: This is not a constant:MMIX Internal: This is not a recognized addressMMIX Internal: Trying to output invalidly reversed condition:MMIX Internal: What is the CC of this?MMIX Internal: What's the CC of this?MMX vector argument without MMX enabled changes the ABIMMX vector return without MMX enabled changes the ABIMODULE PROCEDURE at %C must be in a generic module interfaceMODULE PROCEDURE declaration at %CMODULE PROCEDURE formal argument %qs conflicts with alternate return at %CMODULE PROCEDURE formal argument is alternate return and conflicts with %qs in the separate declaration at %CMODULE prefix at %CMODULE prefix at %C found outside of a module, submodule, or interfaceMOLD argument to NULL required at %LMOLD tag at %LMOLD tag at %L conflicts with SOURCE tag at %LMOLD tag at %L conflicts with the typespec at %LMOLD= required in NULL() argument at %L: Ambiguity between specific functions %s and %sMSA MIPS16 codeMSP430 built-in functions only work inside interrupt handlersMULT case in %<cris_op_str%>Magnitude of second argument of %s exceeds bit size at %LMagnitude of second argument of ISHFTC exceeds BIT_SIZE of first argument at %CMaintain backchain pointer.Make "char" signed by default.Make "char" unsigned by default.Make GCC pass the --no-relax command-line option to the linker instead of the --relax option.Make all function calls indirect.Make inline functions constexpr by default.Make integers 32 bits wide.Make structs a multiple of 4 bytes (warning: ABI altered).Make the linker relaxation machine assume that a program counter wrap-around occurs.Malformed GENERIC statement at %CMalformed type-spec at %CMalloc data into P2 space.Mangled derived type definition at %CMapper for module to CMI files.Mapping of polymorphic list item %qD is unspecified behaviorMapping of unlimited polymorphic list item %qD is unspecified behavior and unsupportedMark MAC register as call-clobbered.Mark all loops as parallel.Mark implicitly-declared copy operations as deprecated if the class has a user-provided copy operation or destructor.Mark implicitly-declared copy operations as deprecated if the class has a user-provided copy operation.Marks all inlined functions and methods as having hidden visibility.Max basic blocks number in loop for loop invariant motion.Max loops number for regional RA.Max number of bytes to compare as part of inlined strcmp/strncmp routines (default: 64).Max number of bytes to compare with loops.Max number of bytes to compare without loops.Max number of bytes to compare.Max number of bytes to move inline.Max number of files in the file cache.Max number of lines to index into file cache. When 0 this is automatically sized.Max size of conflict table in MB.Max. count of debug markers to expand or inline.Max. recursion depth for expanding var tracking expressions.Max. size of loc list for which reverse ops should be added.Max. size of var tracking hash tables.Maximal code growth caused by tail duplication (in percent).Maximal estimated growth of function body caused by early inlining of single call.Maximal estimated outcome of branch considered predictable.Maximal growth due to inlining of large function (in percent).Maximal number of boundary endpoints of case ranges of switch statement used during IPA function summary generation.Maximal size of a locality partition for LTO (in estimated instructions). Value of 0 results in default value being used.Maximal size of a partition for LTO (in estimated instructions).Maximal stack frame growth due to inlining (in percent).Maximum allowed growth of total size of new parameters that ipa-sra replaces a pointer to an aggregate with.Maximum amount of iterations of the pass over a function.Maximum amount of similar bbs to compare a bb with.Maximum amount of work done to prune paths where the variable is always initialized.Maximum combined size of caller and callee which is inlined if callee is called once.Maximum depth of DFS walk used by modref escape analysis.Maximum depth of a loop nest to fully value-number optimistically.Maximum depth of instruction chains to consider for recomputation in the outgoing range calculator.Maximum depth of logical expression evaluation ranger will look through when evaluating outgoing edge ranges.Maximum depth of recursive cloning for self-recursive function.Maximum depth of search in the dominator tree for expressions to hoist.Maximum depth of sqrt chains to use when synthesizing exponentiation by a real constant.Maximum extension level reached with type %qs at %LMaximum length of candidate scans for straight-line strength reduction.Maximum length of partial antic set when performing tree pre optimization.Maximum loop depth of a call which is considered for inlining functions called once.Maximum number of VALUEs handled during a single find_base_term call.Maximum number of accesses stored in each modref reference.Maximum number of active local stores in RTL dead store elimination.Maximum number of aggregate content items for a parameter in jump functions and lattices.Maximum number of arguments in a PHI supported by TREE if-conversion unless the loop is marked with simd pragma.Maximum number of arrays per SCoP.Maximum number of artificial accesses to enable forward propagation that Scalar Replacement of Aggregates will keep for one local variable.Maximum number of bases stored in each modref tree.Maximum number of basic blocks before VRP switches to a fast model with less memory requirements.Maximum number of basic blocks before VRP uses a sparse bitmap cache.Maximum number of basic blocks for VRP to use a basic cache vector.Maximum number of bits for which we avoid creating FMAs.Maximum number of bits that can be moved from memory to memory efficiently.Maximum number of bits that can be stored to memory efficiently.Maximum number of blocks for -fharden-control-flow-redundancy.Maximum number of blocks for in-line -fharden-control-flow-redundancy.Maximum number of cases for slow switch lowering algorithms to be used.Maximum number of concurrently open C++ module files when lazy loading.Maximum number of conditional store pairs that can be sunk.Maximum number of constant stores to merge in the store merging pass.Maximum number of datarefs in loop for building loop data dependencies.Maximum number of different predicates used to track properties of loops in IPA analysis.Maximum number of disambiguations to perform per memory access.Maximum number of escape points tracked by modref per SSA-name.Maximum number of fields in a structure before pointer analysis treats the structure as a single variable.Maximum number of insns in a basic block to consider for RTL if-conversion.Maximum number of instruction distance that a small store forwarded to a larger load may stall. Value '0' disables the cost checks for the avoid-store-forwarding pass.Maximum number of instructions in the ready list that are considered eligible for renaming.Maximum number of instructions to copy when duplicating blocks on a finite state automaton jump thread path.Maximum number of isl operations, 0 means unlimited.Maximum number of loop peels to enhance alignment of data references in a loop.Maximum number of may-defs visited when devirtualizing speculatively.Maximum number of namespaces to search for alternatives when name lookup fails.Maximum number of nested calls to search for control dependencies during uninitialized variable analysis.Maximum number of operations in a parameter expression that can be handled by IPA analysis.Maximum number of outgoing edges in a switch before VRP will not process it.Maximum number of parameters in a SCoP.Maximum number of possible vector layouts (such as permutations) to consider when optimizing to-be-vectorized code.Maximum number of predicates anded for each predicate ored in the normalized predicate chain.Maximum number of predicates ored in the normalized predicate chain.Maximum number of queries into the alias oracle per store.Maximum number of references stored in each modref base.Maximum number of relations the oracle will register in a basic block.Maximum number of statements allowed in a block that needs to be duplicated when threading jumps.Maximum number of statements allowed inbetween the statement and the end to considered not extending the liferange.Maximum number of statements that will be visited by IPA formal parameter analysis based on alias analysis in any given function.Maximum number of statements visited during jump function offset discovery.Maximum number of store chains to track at the same time in the store merging pass.Maximum number of strings for which strlen optimization pass will track string lengths.Maximum number of tests performed by modref query.Maximum number of times a given range is adjusted during the dataflow.Maximum number of times that an insn could be scheduled.Maximum permissible cost for the sequence that would be generated by the RTL if-conversion pass for a branch that is considered predictable.Maximum permissible cost for the sequence that would be generated by the RTL if-conversion pass for a branch that is considered unpredictable.Maximum pieces that IPA-SRA tracks per formal parameter, as a consequence, also the maximum number of replacements of a formal parameter.Maximum probability of the entry BB of split region (in percent relative to entry BB of the function) to make partial inlining happen.Maximum recursion depth allowed when querying a property of an SSA name.Maximum size (in bytes) of objects tracked bytewise by dead store elimination.Maximum size in bytes of constant values allowed as operands.Maximum size of a list of values associated with each parameter for interprocedural constant propagation.Maximum size of a single store merging region in bytes.Maximum size of global and static variables which can be placed into the small data area.Maximum size, in storage units, of an aggregate which should be considered for scalarization when compiling for size.Maximum size, in storage units, of an aggregate which should be considered for scalarization when compiling for speed.Maximum subrecord length cannot exceed %dMaximum supported identifier length is %dMaximum unroll factor for the unroll-and-jam transformation.Member functions defined within their class are inline in module purview.Memory Tagging Extension does not support %<-mabi=ilp32%>Memspace %qs at %L in USES_ALLOCATORS must be a predefined memory spaceMerge adjacent stores.Merge similar-enough states during analysis.Merge subcommand usage:Merge-stream subcommand usage:Min. ratio of insns to mem ops to enable prefetching in a loop.Min. ratio of insns to prefetches to enable prefetching for a loop with an unknown trip count.Minimal distance between possibly conflicting store and load.Minimal fall-through edge probability in percentage used to add BB to inheritance EBB in LRA.Minimal size of a partition for LTO (in estimated instructions).Minimum heap expansion to trigger garbage collection, as a percentage of the total size of the heap.Minimum heap size before we start collecting garbage, in kilobytes.Minimum number of iterations per thread of an innermost parallelized loop.Minimum page size for warning purposes.Minimum percentage of memrefs that must go away for unroll-and-jam to be considered profitable.Minimum probability (in percent) of dereferencing of a function pointer parameter for it to be considered for replacement with simple values.Mismatch between subroutine and function at %LMismatch in BIND(C) names (%qs/%qs) at %CMismatch in ELEMENTAL attribute between MODULE PROCEDURE at %L and its interface in %sMismatch in MODULE PROCEDURE formal argument names (%s/%s) at %CMismatch in PURE attribute between MODULE PROCEDURE at %L and its interface in %sMismatch in RECURSIVE attribute between MODULE PROCEDURE at %L and its interface in %sMismatch in components of derived type %qs from %qs at %C: expecting %qs, but got %qsMismatch in number of MODULE PROCEDURE formal arguments at %CMismatch in the procedure pointer assignment at %L: mismatch in the calling conventionMismatches between file architecture and one specified by "-arch" are errors instead of warnings.Missing %<&%> in continued character constant at %CMissing %<(%> in ELSE IF expression at %CMissing %<(%> in IF-expression at %CMissing %<)%> in ELSE IF expression at %CMissing %qs argument to %qs intrinsic at %L for %qs of type %qsMissing %qs argument to the %s intrinsic at %LMissing %qs in statement at or before %LMissing -mcpu option in ASM_CPU_SPEC?Missing INITIALIZER clause for !$OMP DECLARE REDUCTION of derived type without default initializer at %LMissing THEN in ELSE IF statement after %LMissing actual argument %qs in call to %qs at %LMissing actual argument for argument %qs at %LMissing alternate return spec in subroutine call at %LMissing alternate return specifier in subroutine call at %LMissing argument list in function %qs at %CMissing argument to %qs at %CMissing array specification at %L in CODIMENSION statementMissing array specification at %L in DIMENSION statementMissing character range in IMPLICIT at %CMissing closing paren for binding label at %CMissing codimension specification at %CMissing comma in FORMAT string at %LMissing counts for called function %sMissing dimension specification at %CMissing entity or common block name for attribute specification statement at %CMissing explicit declaration with EXTERNAL attribute for symbol %qs at %LMissing exponent in real number at %CMissing format label at %CMissing format with default unit at %CMissing generic specification in USE statement at %CMissing item in format string at %LMissing keyword name in actual argument list at %CMissing kind-parameter at %CMissing leading left parenthesis in format string at %LMissing lower bound in assumed size coarray specification at %CMissing positive width after L descriptor at %LMissing required %<target%> and/or %<targetsync%> modifier at %CMissing required parentheses before BIND(C) at %CMissing right parenthesis at %CMissing right parenthesis or comma at %CMissing symbolMitigate issues with AES instructions on Cortex-A57 and Cortex-A72 (Arm erratum #1655431).Mitigate issues with AES instructions on Cortex-A57 and Cortex-A72 (Arm erratum #1742098).Mitigate issues with VLLDM on some M-profile devices (CVE-2021-35465).Module %qs at line %d column %d: %sModule file %qs has not been generated, either because the module does not contain a MODULE PROCEDURE or there is an error in the module.Module nature in USE statement at %C shall be either INTRINSIC or NON_INTRINSICMore actual than formal arguments in procedure call at %LMore than one edge out of thunk nodeMove loop invariant computations out of loops.Move stores out of loops.Multiple %qs modifiers specified at %CMultiple identifiers provided with single NAME= specifier at %CMultiple loop axes specified for routine at %CNAME %qs does not refer to a subroutine or function in !$ACC ROUTINE ( NAME ) at %LNAME %qs invalid in !$ACC ROUTINE ( NAME ) at %LNAME not allowed on BIND(C) for ABSTRACT INTERFACE at %CNAME= specifier at %C should be a constant expressionNAME= specifier at %C should be a scalar of default character kindNAMELIST %qs in READ statement at %L contains the symbol %qs which may not appear in a variable definition contextNAMELIST array object %qs with assumed shape in namelist %qs at %LNAMELIST array object %qs with nonconstant shape in namelist %qs at %LNAMELIST object %qs has PRIVATE components and cannot be a member of PUBLIC namelist %qs at %LNAMELIST object %qs has use-associated PRIVATE components and cannot be member of namelist %qs at %LNAMELIST object %qs in namelist %qs at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedureNAMELIST object %qs in namelist %qs at %L is polymorphic and requires a defined input/output procedureNAMELIST object %qs in namelist %qs at %L with ALLOCATABLE or POINTER componentsNAMELIST object %qs was declared PRIVATE and cannot be member of PUBLIC namelist %qs at %LNAMELIST object %qs with nonconstant character length in namelist %qs at %LNEWUNIT specifier at %LNEWUNIT specifier must have FILE= or STATUS='scratch' at %LNOCONTEXT clause at %L requires a scalar LOGICAL expressionNONMONOTONIC schedule modifier specified with ORDERED clause at %LNON_OVERRIDABLE and DEFERRED cannot both appear at %CNOPASS or explicit interface required at %CNOTE_INSN_BASIC_BLOCK %d in middle of basic block %dNOTE_INSN_BASIC_BLOCK is missing for block %dNOVARIANTS clause at %L requires a scalar LOGICAL expressionNOWAIT clause must not be used with COPYPRIVATE clause at %LNO_ARG_CHECK attributeNULL appears on right-hand side in assignment at %LNULL at %L is not permitted as actual argument to %qs intrinsic functionNULL intrinsic with allocatable MOLD at %LNULL used in arithmeticNULL() at %C cannot appear in an array constructorNULL() initialization at %C is ambiguousNULL() initialization at %C may not have MOLDNULL() is not interoperableNULL() near %L cannot appear in INQUIRE statementNULLIFY does not allow bounds remapping for pointer object at %CNUM_TEAMS lower bound at %L larger than upper bound at %LName %qs at %C is already defined as a generic interface at %LName %qs at %C is an ambiguous reference to %qs from current program unitName %qs at %C is an ambiguous reference to %qs from module %qsName %qs at %C is the name of the procedureName %qs in %s statement at %C is not a construct nameName %qs in %s statement at %C is unknownName %qs of ABSTRACT INTERFACE at %C cannot be the same as an intrinsic typeName after !$omp critical and !$omp end critical does not match at %CName at %C is too longName too longNamed COMMON block %qs at %L shall be of the same size as elsewhere (%wu vs %wu bytes)Named block DO at %L requires matching ENDDO nameNamed constant %qs at %L cannot be an EQUIVALENCE objectNamed constant %qs in variable definition context (%s) at %LNamed constant at %C in an EQUIVALENCENamelist %qs cannot be an argument at %LNamelist %qs cannot be an argument to subroutine or function at %LNamelist group name %qs at %C already has a basic type of %sNamelist group name %qs at %C already is USE associated and cannot be respecified.Namelist group name at %L cannot have the SAVE attributeNeed either entity or common block name for attribute specification statement at %CNegation of unsigned constant at %L not permittedNegation of unsigned expression at %L not permitted Negative argument N at %LNegative exponent of integer has zero result at %LNested CRITICAL block at %CNested function trampolines not supported on CK801.Nice try, but you cannot fire me.No binding name is allowed in BIND(C) at %CNo branches
  No calls
  No conditions
  No default crt0.o.No description yet.No edge out of thunk nodeNo executable lines
  No initializer for allocatable component %qs given in the structure constructor at %CNo initializer for component %qs given in the structure constructor at %CNo longer supported.No path information
! No region crossing jump at section boundary in bb %iNon-CHARACTER object %qs in default CHARACTER EQUIVALENCE statement at %LNon-ELEMENTAL user-defined assignment in WHERE at %LNon-NUMERIC object %qs in default NUMERIC EQUIVALENCE statement at %LNon-PARAMETER symbol %qs at %L cannot be implied-shapeNon-POINTER in pointer association context (%s) at %LNon-RECURSIVE procedure %qs at %L is possibly calling itself recursively.  Declare it RECURSIVE or use %<-frecursive%>Non-RECURSIVE procedure %qs from module %qs is possibly calling itself recursively in procedure %qs.  Declare it RECURSIVE or use %<-frecursive%>Non-THREADPRIVATE object %qs in COPYIN clause at %LNon-character assumed shape array element in FORMAT tag at %LNon-character assumed size array element in FORMAT tag at %LNon-character in FORMAT tag at %LNon-character non-Hollerith in FORMAT tag at %LNon-character pointer array element in FORMAT tag at %LNon-constant character length at %L in DATA statementNon-constant lower bound in implied-shape declaration at %LNon-default LOGICAL kind in %s tag at %LNon-default type object or sequence %s in EQUIVALENCE statement at %L with objects of different typeNon-extensible derived-type %qs at %L must not be ABSTRACTNon-numeric character in statement label at %CNon-polymorphic passed-object dummy argument of %qs at %LNon-rectangular loops from generated loops unsupportedNon-scalar FINAL procedure at %L should have assumed shape argumentNon-significant digits in %qs number at %C, maybe incorrect KINDNon-variable expression in variable definition context (%s) at %LNon-zero imaginary part discarded in conversion from %qs to %qs at %LNonallocatable variable must not be polymorphic in intrinsic assignment at %L - check that there is a matching specific subroutine for %<=%> operatorNoncoarray component %s at %L of type EVENT_TYPE or with subcomponent of type EVENT_TYPE must have a codimension or be a subcomponent of a coarray. (Variables of type %s may not have a codimension as %s at %L has a codimension or a coarray subcomponent)Noncoarray component %s at %L of type EVENT_TYPE or with subcomponent of type EVENT_TYPE must have a codimension or be a subcomponent of a coarray. (Variables of type %s may not have a codimension as already a coarray subcomponent exists)Noncoarray component %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must have a codimension or be a subcomponent of a coarray. (Variables of type %s may not have a codimension as %s at %L has a codimension or a coarray subcomponent)Noncoarray component %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must have a codimension or be a subcomponent of a coarray. (Variables of type %s may not have a codimension as already a coarray subcomponent exists)Nonconforming tab character at %CNonconforming tab character in column %d of line %dNonconforming tab character in format at %CNonconstant array section at %L in DATA statementNonexistent include directory %qsNoninteger exponent in an initialization expression at %LNoninteroperable array FPTR argument to C_F_POINTER at %L: %sNoninteroperable array at %L as argument to C_LOC: %sNoninteroperable procedure at %L to C_FUNLOCNoninteroperable procedure pointer at %L to C_F_PROCPOINTERNonintrinsic elemental procedure %qs is invalid in procedure pointer assignment at %LNonnegative width required in format string at %LNonpointer object %qs with default initialization shall not appear in a DATA statement at %LNonpointer polymorphic dummy argument not permitted for %qs in %s locality-spec at %LNonpolymorphic reference to abstract type at %CNonstandard conversion from %s to %s at %LNonstandard type declaration %s*%d at %CNonzero range step expected at %LNot configured with %<--enable-gather-detailed-mem-stats%>.Not enough elements in array initializer at %CNot expected TAG.Not valid for ACCEPT statement.Not valid for DISPLAY statement.Note #include directives not translated to import declarations, and not known to be textual.Note #include directives translated to import declarations.Note Compiled Module Interface pathname of a specific module or header-unit.Note Compiled Module Interface pathnames.Note a #include translation of a specific header.Note all candidates during overload resolution failure.Number of cache entries in incremental LTO after which to prune old entries.Number of partitions the program should be split to.Number of registers used to pass integer arguments.Numeric PARAMETER required in complex constant at %CNumeric operands are required in expression at %LNumeric or CHARACTER operands are required in expression at %LOLD argument of the %s intrinsic function at %L shall be definableOMP CRITICAL at %L with HINT clause requires a NAME, except when omp_sync_hint_none is usedOMP DECLARE TARGET COMMON at %L previously mentioned in LINK clause and later in %s clauseOMP DECLARE TARGET COMMON at %L previously mentioned in TO or ENTER clause and later in LINK clauseOMP DECLARE TARGET directive at %L with only DEVICE_TYPE or INDIRECT clauses is ignoredOMP DECLARE TARGET variable at %L is an element of a COMMON blockOMP DECLARE TARGET variable at %L previously mentioned in LINK clause and later in %s clauseOMP DECLARE TARGET variable at %L previously mentioned in TO or ENTER clause and later in LINK clauseOMP TARGET UPDATE at %L requires at least one TO or FROM clauseOPEN statement at %L must have UNIT or NEWUNIT specifiedOPEN statement not allowed in PURE procedure at %COPERATION argument at %L must be a PURE functionOPTIONAL attribute not permitted for %qs in %s locality-spec at %LOPTIONAL is not allowed inside of BLOCK at %CORDER at %L is not a permutation of the size of SHAPE at %LORDER clause must not be used together with ORDERED at %LORDERED clause argument not constant positive integer at %CORDERED clause parameter is less than COLLAPSE at %LORDERED clause specified together with %<inscan%> REDUCTION clause at %LObject %qs is not a variable at %LObject %qs is not a variable at %L; parameters cannot be and need not be copiedObject %qs is not a variable at %L; parameters cannot be and need not be mappedObjective-C declarations may only appear in global scopeObsolescent feature:Obsolete; use GCN_STACK_SIZE at runtime.Offline tool to handle gcda counts
  
! Old-style character length at %COld-style initialization at %COld-style type declaration %s*%d not supported at %COmit frame pointer for leaf functions.Omit range reduction step when performing complex division.Omit the frame pointer in leaf functions.One of actual subroutine arguments in INITIALIZER clause of !$OMP DECLARE REDUCTION must be OMP_PRIV at %LOnly DEFAULT permitted as reduction-modifier in REDUCTION clause at %LOnly array FINAL procedures declared for derived type %qs defined at %L, suggest also scalar one unless an assumed rank finalizer has been declaredOnly emit Compiled Module Interface.Only generate absolute relocations on word sized values.Only intrinsic operators can be used in expression at %LOnly issue one instruction per cycle.Only one of TEAM= or TEAM_NUMBER= may appear in a coarray reference at %COnly retained for backward compatibility.Only the !$ACC ROUTINE form without list is allowed in interface block at %COnly the !$OMP DECLARE TARGET form without clauses is allowed in interface block at %COnly use 32 FPRs.Only use 32 GPRs.OpenACC construct inside of non-OpenACC regionOpenACC directive inside of CRITICAL block at %COpenACC directives other than ROUTINE may not appear in PURE procedures at %COpenACC loop directive must be associated with an OpenACC compute regionOpenACC region inside of OpenACC routine, nested parallelism not supported yetOpenMP %<omp::decl%> attribute on a statementOpenMP %<requires%> directive with %qs specified only in some compilation unitsOpenMP %<requires%> directive with non-identical clauses in multiple compilation units: %qs vs. %qsOpenMP ERROR directive at %L with %<at(execution)%> clause in a PURE procedureOpenMP construct among %<omp::directive%> attributes requires all %<omp::directive%> attributes on the same statement to be in the same %<omp::sequence%>OpenMP constructs are not allowed in target region with %<ancestor%>OpenMP constructs other than %<ordered simd%>, %<simd%>, %<loop%> or %<atomic%> may not be nested inside %<simd%> regionOpenMP constructs other than %<parallel%>, %<loop%> or %<simd%> may not be nested inside a %<loop%> regionOpenMP constructs other than %<parallel%>, %<loop%> or %<simd%> may not be nested inside a region with the %<order(concurrent)%> clauseOpenMP directive at %C is not pure and thus may not appear in a PURE procedureOpenMP directive other than %<declare simd%> or %<declare variant%> appertains to a declarationOpenMP directives may not appear in %<constexpr%> functionsOpenMP runtime API call %qD in a region with %<device(ancestor)%> clauseOpenMP runtime API call %qD in a region with %<order(concurrent)%> clauseOpenMP runtime API call %qD strictly nested in a %<teams%> regionOperand of .not. operator at %L is %sOperand of unary numeric operator %qs at %L is %sOperand of user operator %qs at %L is %sOperands at %L and %L cannot appear as operands of binary operator %qsOperands of binary numeric operator %qs at %L are %s/%sOperands of comparison operator %qs at %L are %s/%sOperands of logical operator %qs at %L are %s/%sOperands of string concatenation operator at %L are %s/%sOperands of user operator %qs at %L are %s/%sOperator interface at %L conflicts with intrinsic interfaceOperator interface at %L has the wrong number of argumentsOperator interface at %L must have, at most, two argumentsOptimization. Accumulate outgoing function arguments and acquire/release the needed stack space for outgoing function arguments in function prologue/epilogue.  Without this option, outgoing arguments are pushed before calling a function and popped afterwards.  This option can lead to reduced code size for functions that call many functions that get their arguments on the stack like, for example printf.Optimization. Allow to use nonzero_bits() in some insn conditions.Optimization. Allow usage of __gcc_isr pseudo instructions in ISR prologues and epilogues.Optimization. Fuse some move insns after insn combine.Optimization. Relax branches.Optimization. Run a post-reload pass that tweaks move instructions.Optimization. Split most of the load and store instructions into byte load and stores.Optimization. Split register additions from load/store instructions. Most useful on Reduced Tiny.Optimization. Split shifts of 4-byte values into a byte shift and a residual bit shift.Optimization. Treat main as if it had attribute OS_task.Optimization. Use subroutines for function prologues and epilogues.Optimization. When accessing RAM, use X as imposed by the hardware, i.e. just use pre-decrement, post-increment and indirect addressing with the X register.  Without this option, the compiler may assume that there is an addressing mode X+const similar to Y+const and Z+const and emit instructions to emulate such an addressing mode for X.Optimize amount of stdarg registers saved to stack at start of function.Optimize conditional patterns using SSA PHI nodes.Optimize for CPU.Optimize for debugging experience rather than speed or size.Optimize for space aggressively rather than speed.Optimize for space rather than speed.Optimize for speed disregarding exact standards compliance.Optimize frame header.Optimize induction variables on trees.Optimize lui/addiu address loads.Optimize noreturn functions by not saving callee-saved registers used in the function.Optimize opcode sizes at link time.Optimize partition neutering.Optimize sibling and tail recursive calls.Optimize tail call instructions in assembler and linker.Option %<-fallow-leading-underscore%> is for use only by gfortran developers, and should not be used for implicitly typed variablesOptions to %<-Xassembler%> do not match: %s, %s, dropping all %<-Xassembler%> and %<-Wa%> options.Options:
  Out of bounds in IMAGE_INDEX at %L for dimension %d, SUB has %ld and COARRAY lower bound is %ld)Out of bounds in IMAGE_INDEX at %L for dimension %d, SUB has %ld and COARRAY upper bound is %ld)Out of stack space.
  Output .debug_types section when using DWARF v4 debuginfo.Output callgraph information on a per-file basis with decorations.Output callgraph information on a per-file basis.Output lto objects containing both the intermediate language and binary output.Output stack usage information on a per-function basis.Output vtable verification counters.Output vtable verification pointer sets information.Overlap subcommand usage:Overlapping unequal initializers in EQUIVALENCE at %COverlapping unequal initializers in EQUIVALENCE at %LOverride -mbest-lib-options.P descriptor requires leading scale factor in format string at %LPAD= at %L not allowed in Fortran 95PARAMETER %qs is used at %L before its definition is completePARAMETER %qs shall not appear in a DATA statement at %CPARAMETER at %L is missing an initializerPARAMETER symbol in complex constant at %CPARAMETER without '()' at %CPARTIAL clause argument not constant positive integer at %CPAUSE statement at %CPC relative literal loads.PCH allocation failurePCH memory is not available: %mPCS variantPDP11 bit-field handling unsupported in %qsPHI argument is missing for edge %d->%dPHI argument is not SSA_NAME, or invariantPHI argument on abnormal edge is not SSA_NAMEPHI node with locationPHI node with wrong VUSE on edge from BB %dPIC code generation is not compatible with fast indirect callsPIC code generation is not supported in the portable runtime modelPIC is not supported for %qsPIC is only supported for RTPsPIC is required but not supported with CONST16 instructionsPIC register clobbered by %qs in %<asm%>POINTER attribute is required for procedure pointer component at %CPOINTER object %qs in %s clause at %LPOINTER object %qs of polymorphic type in %s clause at %LPOINTER-valued function appears on right-hand side of assignment at %LPOS argument (%ld) out of range 0:%ld in intrinsic %sPOS argument (%ld) out of range 0:%ld in intrinsic BTESTPOS argument (%ld) out of range 0:%ld in intrinsic IBITSPOS(%ld)+LEN(%ld)>BIT_SIZE(%ld) in intrinsic IBITSPOSITION specifier in OPEN statement at %L only allowed for stream or sequential ACCESSPR100400PRE disabledPRINT namelist at %C is an extensionPRINT statement at %C not allowed within PURE procedurePRINT_OPERAND, invalid insn for %%CPRINT_OPERAND, invalid insn for %%NPRIVATE statement at %C is only allowed in the specification part of a modulePRIVATE statement at %C must precede procedure bindingsPRIVATE statement at %C must precede structure componentsPRIVATE statement in TYPE at %C must be inside a MODULEPROCEDURE %qs at %L may not be used as its own interfacePROCEDURE at %C must be in a generic interfacePROCEDURE attribute conflicts with INTENT attribute in %qs at %LPROCEDURE attribute conflicts with NAMELIST attribute in %qs at %LPROCEDURE attribute conflicts with PROTECTED attribute at %LPROCEDURE attribute conflicts with RESULT attribute in %qs at %LPROCEDURE attribute conflicts with SAVE attribute in %qs at %LPROCEDURE list at %CPROCEDURE statement at %CPROCEDURE(interface) at %C should be declared DEFERREDPROTECTED at %C only allowed in specification part of a modulePROTECTED attribute at %CPROTECTED attribute conflicts with EXTERNAL attribute at %LPROTECTED statement at %CPTX does not support weak declarations (only weak definitions)PTX version (%<-mptx%>) needs to be at least %s to support selected %<-misa%> (sm_%s)PUBLIC %s %qs at %L of PRIVATE derived type %qsPUBLIC function %qs at %L of PRIVATE type %qsPUBLIC statement at %C is only allowed in the specification part of a modulePURE and IMPURE must not appear both at %CPURE prefix in MODULE PROCEDURE interface is missing at %LPack VLIW instructions.Pack structure members together without holes.Pad shorter fixed form lines to line width with spaces.Padding of %d bytes required before %qs in COMMON %qs at %L; reorder elements or use %<-fno-align-commons%>Padding of %d bytes required before %qs in COMMON at %L; reorder elements or use %<-fno-align-commons%>Param to control which writeback opportunities we try to handle in the load/store pair fusion pass.  A value of zero disables writeback handling.  One means we try to form pairs involving one or more existing individual writeback accesses where possible.  A value of two means we also try to opportunistically form writeback opportunities by folding in trailing destructive updates of the base register used by a pair.Parameter %qs at %L has not been declared or is a variable, which does not reduce to a constant expressionParameter array %qs at %L cannot be automatic or of deferred shapeParameterized derived type at %C is ambiguousParameterized type %qs does not have a component corresponding to parameter %qs at %LPass -EB option through to linker.Pass -EL option through to linker.Pass -marclinux option through to linker.Pass -marclinux_prof option through to linker.Pass -mrelax or -mno-relax option to the assembler.Pass -z text to linker.Pass the address of the ra save location to _mcount in $12.Passed-object at %L must be scalarPassed-object dummy argument of %qs at %L must be at the same position as the passed-object dummy argument of the overridden procedurePassed-object dummy argument of %qs at %L must be scalarPassed-object dummy argument of %qs at %L must not be ALLOCATABLEPassed-object dummy argument of %qs at %L must not be POINTERPasses on a request to the assembler to enable fixes for various silicon errata.Passes on a request to the assembler to warn about various silicon errata.Passing coarray at %L to allocatable, noncoarray dummy argument %qs, which is invalid if the allocation status is modifiedPassing coarray at %L to allocatable, noncoarray, INTENT(OUT) dummy argument %qsPassing global function %qs declared at %L as subroutine at %LPassing global subroutine %qs declared at %L as function at %LPassing internal procedure at %L by location not allowedPassing intrinsic NULL as actual argument at %L requires an explicit interfacePath to header file that should be pre-included before each compilation unit.Percentage penalty functions containing a single call to another function will receive when they are evaluated for cloning.Percentage penalty the recursive functions will receive when they are evaluated for cloning.Perform IPA Value Range Propagation.Perform Identical Code Folding for functions and read-only variables.Perform Identical Code Folding for functions.Perform Identical Code Folding for variables.Perform SMS based modulo scheduling before the first scheduling pass.Perform SMS based modulo scheduling with register moves allowed.Perform VR4130-specific alignment optimizations.Perform Value Range Propagation on trees.Perform a forward propagation pass on RTL.Perform a number of minor, expensive optimizations.Perform a register copy-propagation optimization pass.Perform a register renaming optimization pass.Perform a target dependent instruction fusion optimization pass.Perform cloning to make Interprocedural constant propagation stronger.Perform comparison elimination after register allocation has finished.Perform conversion of conditional jumps to branchless equivalents.Perform conversion of conditional jumps to conditional execution.Perform conversions of switch initializations.Perform cross-jumping optimization.Perform dead code elimination on zero and sign extensions with special dataflow analysis.Perform early inlining.Perform enhanced load motion during global common subexpression elimination.Perform function-local points-to analysis on trees.Perform global common subexpression elimination after register allocation has finished.Perform global common subexpression elimination.Perform indirect inlining.Perform internal consistency checkings.Perform interprocedural bitwise constant propagation.Perform interprocedural constant propagation.Perform interprocedural modref analysis.Perform interprocedural points-to analysis.Perform interprocedural profile propagation.Perform interprocedural reduction of aggregates.Perform jump threading optimizations.Perform live range splitting during the SSA->normal pass.Perform loop peeling.Perform loop splitting.Perform loop unrolling for all loops.Perform loop unrolling when iteration count is known.Perform loop unswitching.Perform partial inlining.Perform redundant load after store elimination in global common subexpression elimination.Perform reordering and cloning of functions to maximize locality.Perform scalar replacement of aggregates.Perform software pipelining of inner loops during selective scheduling.Perform software pipelining of outer loops during selective scheduling.Perform speculative devirtualization.Perform store motion after global common subexpression elimination.Perform straight-line strength reduction.Perform superblock formation via tail duplication.Perform unroll-and-jam on loops.Perform unused symbol elimination in debug info.Perform unused type elimination in debug info.Perform variable tracking and also tag variables that are uninitialized.Perform variable tracking by annotating assignments.Perform variable tracking.Perform whole program optimizations.Period required in format specifier %s at %LPeriod required in format specifier at %LPeriod required in format specifier in format string at %LPermit '$' as an identifier character.Permit nonconforming uses of the tab character.Permit scheduling of a function's prologue and epilogue sequence.Permit scheduling of a function's prologue sequence.Permit scheduling of function prologue and epilogue sequences.Permit universal character names (\u and \U) in identifiers.Place a stop bit after every cycle when scheduling.Place data items into their own section.Place each function into its own section.Place floating point constants in TOC.Place symbol+offset constants in TOC.Please include the complete backtrace with any bug report.
  Please submit a full bug report, with preprocessed source (by using -freport-bug).
*************** F2008: A pointer function assignment is
*** 2087,2093 ****
  Print extra (possibly unwanted) warnings.Print fix-it hints in machine-readable form.Print fix-it hints to stderr in unified diff format.Print hierarchical comparisons when template types are mismatched.Print the initial values of the variables.Print the name of header files as they are used.Probability that COMDAT function will be shared with different compilation unit.Probable cause: it was referenced without being defined.Procedure %qs at %C has an explicit interface from a previous declarationProcedure %qs at %C is already defined at %LProcedure %qs at %L already has basic type of %sProcedure %qs at %L has the same name as a component of %qsProcedure %qs at %L has the same name as an inherited component of %qsProcedure %qs at %L may not have basic type of %sProcedure %qs at %L must have the BIND(C) attribute to be C interoperableProcedure %qs called at %L is not explicitly declaredProcedure %qs called at %L is not explicitly declared; did you mean %qs?Procedure %qs called with an implicit interface at %LProcedure %qs defined in interface body at %L clashes with internal procedure defined at %CProcedure %qs in %s at %L has no explicit interfaceProcedure %qs in %s at %L has no explicit interface; did you mean %qs?Procedure %qs in %s at %L is neither function nor subroutineProcedure %qs in %s at %L is neither function nor subroutine; did you mean %qs?Procedure %qs in PUBLIC interface %qs at %L takes dummy arguments of %qs which is PRIVATEProcedure %qs with PASS at %L must have at least one argumentProcedure %qs with PASS(%s) at %L has no argument %qsProcedure %qs with binding label %qs at %L uses the same global identifier as entity at %LProcedure argument at %L is local to a PURE procedure and has the POINTER attributeProcedure pointer %qs at %L shall not be elementalProcedure pointer %qs in %s clause at %LProcedure pointer %qs not supported with !$OMP ALLOCATE at %LProcedure pointer at %CProcedure pointer component %qs at %L cannot be a member of the BIND(C) derived type %qs at %LProcedure pointer component %qs called with an implicit interface at %LProcedure pointer component %qs requires an argument list at %CProcedure pointer component %qs with PASS at %L must have at least one argumentProcedure pointer component %qs with PASS(%s) at %L has no argument %qsProcedure pointer component at %CProcedure pointer initialization target at %L may not be a procedure pointerProcedure pointer result %qs at %L is missing the pointer attributeProcedure pointer target %qs at %L must be either an intrinsic, host or use associated, referenced or have the EXTERNAL attributeProcedure unexpected as argumentProcess #ident directives.Process all modules specified on the command line, but only generate code for the module specified by the argument.Processing spec (%s), which is '%s'
  Produce a Mach-O dylinker (file type MH_DYLINKER), only used for building dyld.Produce a Mach-O shared library (file type MH_DYLIB), synonym for "-shared".Produce a backtrace when a runtime error is encountered.Produce a warning at runtime if a array temporary has been created for a procedure argument.Produce big endian code.Produce code relocatable at runtime.Produce little endian code.Produces a Mach-O file suitable for embedded/ROM use.Profile information in %s corruptedProgram is entirely located in low 64k of memory.Program unit at %L has OpenMP device constructs/routines but does not set !$OMP REQUIRES %s but other program units doProhibit PC relative function calls.Prohibit PC relative jumps.Prohibited in Fortran 2023:Protect parentheses in expressions.Provide bash completion for options starting with provided string.Provide libraries for the simulator.Purge unneeded state during analysis.Push extended registers on stack in monitor functions.Put all local arrays on stack.Put everything in the regular TOC.Put jump tables for switch statements into the .data section rather than the .code section.Put relocated read-only data into .data section.Put uninitialized constants in ROM (needs -membedded-data).Put uninitialized globals in the common section.Put zero initialized data in the bss section.QUIET specifier at %L must be a scalar LOGICALQUIET= specifier for %s at %LRANK (%i) at %L is repeated at %LRANK (*) at %L cannot be used with the pointer or allocatable selector at %LRANK (*) at %L is repeated at %LRANK DEFAULT at %L is repeated at %LRE or IM part_ref at %CRE part_ref at %CREAL array index at %LREAL(KIND=10) is not available for %<-fdefault-real-10%> optionREAL(KIND=10) is not available for %<-freal-4-real-10%> optionREAL(KIND=10) is not available for %<-freal-8-real-10%> optionREAL(KIND=10) is not available for %<-freal-8-real-16%> optionREAL(KIND=16) is not available for %<-fdefault-real-16%> optionREAL(KIND=16) is not available for %<-freal-4-real-16%> optionREAL(KIND=4) is not available for %<-freal-8-real-4%> optionREAL(KIND=8) is not available for %<-fdefault-real-8%> optionREAL(KIND=8) is not available for %<-freal-4-real-8%> optionRECL in OPEN statement at %L must be positiveRECL specifier not allowed in OPEN statement at %L for stream I/ORECORD at %C is an extension, enable it with %<-fdec-structure%>RECURSIVE prefix in MODULE PROCEDURE interface is missing at %LREDUCE locality spec at %LREPLACING %zu characters exceeds system capacity'%s'RESULT variable %qs at %L prohibits FUNCTION name %qs at %C from appearing in a specification statementRESULT variable at %C must be different than function nameRESULT_DECL should be read only when DECL_BY_REFERENCE is setRETURN statement in main program at %CROUND= at %L not allowed in Fortran 95RTL check: access of elt %d of '%s' with last elt %d in %s, at %s:%dRTL check: access of elt %d of vector with last elt %d in %s, at %s:%dRTL check: access of hwi elt %d of vector with last elt %d in %s, at %s:%dRTL check: attempt to treat non-block symbol as a block symbol in %s, at %s:%dRTL check: expected code '%s' or '%s', have '%s' in %s, at %s:%dRTL check: expected code '%s', '%s' or '%s', have '%s' in %s, at %s:%dRTL check: expected code '%s', have '%s' in %s, at %s:%dRTL check: expected elt %d type '%c' or '%c', have '%c' (rtx %s) in %s, at %s:%dRTL check: expected elt %d type '%c', have '%c' (rtx %s) in %s, at %s:%dRTL flag check: %s used with unexpected rtx code '%s' in %s, at %s:%dRTP PIC is incompatible with %<-msingle-pic-base%>RTP PIC is incompatible with ThumbRTTI will not work on this typeRVV type %qT cannot be passed to an unprototyped functionRVV type %qT does not have a defined alignmentRVV type %qT does not have a fixed sizeRVV type %qT not allowed in %<map%> clauseRVV type %qT not allowed in %<target%> %<firstprivate%> clauseRVV type %qT not allowed in %<target%> %<private%> clauseRVV type %qT not allowed in %<target%> device clausesRX FPU instructions do not support NaNs and infinitiesRaising a negative REAL at %L to a REAL power is prohibitedRange specification at %L can never be matchedRank mismatch between actual argument at %L and actual argument at %L (rank-%d and rank-%d)Rank mismatch between actual argument at %L and actual argument at %L (rank-%d and scalar)Rank mismatch between actual argument at %L and actual argument at %L (scalar and rank-%d)Rank mismatch in argument %qs at %L (rank-%d and rank-%d)Rank mismatch in argument %qs at %L (rank-%d and scalar)Rank mismatch in argument %qs at %L (scalar and rank-%d)Rank mismatch in array reference at %L (%d/%d)Rank mismatch of array at %L and its initializer (%d/%d)Rank remapping requires a list of %<lower-bound : upper-bound%> specifications at %LRank remapping target is not rank 1 at %LRank remapping target is smaller than size of the pointer (%ld < %ld) at %LRank remapping target must be rank 1 or simply contiguous at %LReading file %qs as free formReading module %qs at line %d column %d: %sReading specs from %s
  Real COUNT_RATE argument to SYSTEM_CLOCK at %LReal constant overflows its kind at %CReal constant underflows its kind at %CReal number at %C has a %<d%> exponent and an explicit kindReal number at %C has a %<q%> exponent and an explicit kindRealign stack in prologue.Reallocate the LHS in assignments.Recognize C++ keywords like "compl" and "xor".Recognize GNU-defined keywords.Recognize built-in functions.Recognize the "asm" keyword.Record DW_AT_decl_column and DW_AT_call_column in DWARF.Record gcc command line switches in DWARF DW_AT_producer.Record gcc command line switches in the object file.Record times taken by sub-phases separately.Recursive cloning only when the probability of call being executed exceeds the parameter.Redefinition of !$OMP DECLARE REDUCTION at %LRedefinition of predefined !$OMP DECLARE REDUCTION at %LRedefinition of predefined %s !$OMP DECLARE REDUCTION at %LReduce priority for r0..r3 / r12..r15 with TARGET_REGISTER_PRIORITY.Reduce stack alignment on call sites if possible.Redundant !$ACC END LOOP at %CRedundant ACQUIRED_LOCK tag found at %LRedundant ERRMSG tag found at %LRedundant MOLD tag found at %LRedundant SOURCE tag found at %LRedundant STAT tag found at %LRedundant UNTIL_COUNT tag found at %LReference statement index not foundReference statement index out of rangeReference to impure function %qs at %L inside a DO CONCURRENT %sReference to impure function %qs at %L inside a FORALL %sReference to impure function %qs at %L within a PURE procedureReference to impure function at %L inside a DO CONCURRENTRegion crossing jump across same section in bb %iRegister the profile information in the .gcov_info section instead of using a constructor/destructor.Register the profile information in the specified section instead of using a constructor/destructor.Relax cmpxchg loop for atomic_fetch_{or,xor,and,nand} by adding load and cmp before cmpxchg, execute pause and loop back to load and compare if load value is not expected.Relax literals in assembler and place them automatically in the text section.Relief of register pressure through live range shrinkage.Remap file names when including files.Remove code and data that is unreachable from any exported symbol (including the entry point).Remove prefix from absolute path before mangling name for -fprofile-generate= and -fprofile-use=.Remove redundant membars.Removed in GCC 10.  This switch has no effect.Removed in GCC 15.  This switch has no effect.Removed in GCC 8.  This switch has no effect.Removed in GCC 9.  This switch has no effect.Removing '%s'
! Removing call to impure function %qs at %LRemoving call to impure function at %LRenaming operators in USE statements at %CReorder basic blocks and partition into hot and cold sections.Reorder basic blocks to improve code placement.Reorder functions to improve code placement.Reorder top level functions, variables, and asms.Repeat spec invalid in scalar initializer at %CRepeat spec must be an integer at %CReplace add, compare, branch with branch on count register.Replace temporary expressions in the SSA->normal pass.Report on consistency of profile.Report on memory allocation before interprocedural optimization.Report on permanent memory allocation in WPA only.Report on permanent memory allocation.Report the time taken by each compiler pass.Report various link-time optimization statistics for WPA only.Report various link-time optimization statistics.Request IEEE-conformant math library routines (OSF/1).Reschedule instructions after register allocation.Reschedule instructions before register allocation.Reschedule pipelined regions without pipelining.Reserve space for outgoing arguments in the function prologue.Reshaped array too large at %CResidual context count!Restore default strub mode: as per attributes, with relaxed checking.Restrict the analyzer to run just the named checker.Restrict the use of hardware floating-point instructions to 32-bit operations.Result %qs of contained function %qs at %L has no IMPLICIT typeResult mismatch for the overriding procedure %qs at %L: %sResult of %s gives range error for its kind at %LResult of %s is NaN at %LResult of %s overflows its kind at %LResult of %s underflows its kind at %LResult of BESSEL_YN is -INF at %LResult of NEAREST is NaN at %LResult of SCALE overflows its kind at %LResult of exponentiation at %L exceeds the range of %sReturn 8-byte vectors in memory.Return address signing is not supported with %<-mtpcs-frame%>.Return all structures in memory (AIX default).Return floating-point results in ac0 (fr0 in Unix assembler syntax).Return pointers in both a0 and d0.Return small aggregates in memory, not registers.Return small aggregates in registers.Return small structures in registers (SVR4 default).Return type mismatch of function %qs at %L (%s/%s)Return type of BIND(C) function %qs at %L cannot be an arrayReturn type of BIND(C) function %qs of character type at %L must have length 1Return value %qs of function %qs declared at %L not setReturn value of function %qs at %L not setReturn values of functions in FPU registers.Reuse r30 on a per function basis.Revert DIP1000: Scoped pointers.Rewrite subcommand usage:Right parenthesis expected at %C in format string at %LRightmost upper bound of assumed size array section not specified at %LRun only the second compilation of -fcompare-debug.Run predictive commoning optimization.Run selective scheduling after reload.Run self-tests, using the given path to locate test files.Run the link-time optimizer in local transformation (LTRANS) mode.Run the link-time optimizer in whole program analysis (WPA) mode.Run two instruction combination passes late in the pass pipeline; one before register allocation and one after.Running spec function '%s' with %d args
  
  Runtime name.SAVE attribute at %L cannot be specified in a PURE procedureSAVE of COMMON block %qs at %C is not allowed in a BLOCK constructSAVE statement at %C follows blanket SAVE statementSCHEDULE clause specified together with %<inscan%> REDUCTION clause at %LSCHEDULE clause's chunk_size at %L requires a scalar INTEGER expressionSELECT RANK statement at %CSELECT TYPE at %C cannot appear in this scopeSELECTED_REAL_KIND with neither %<P%> nor %<R%> argument at %LSELF clause at %L requires a scalar LOGICAL expressionSEQUENCE attribute at %C already specified in TYPE statementSEQUENCE statement at %C must precede CONTAINSSEQUENCE statement at %C must precede structure componentsSH2a does not support little-endianSHAPE argument at %L to C_F_POINTER must have the same size as the RANK of FPTRSHIFT argument (%ld) out of range -%ld:%ld in intrinsic ISHFTSHIFT argument (%ld) out of range -%ld:%ld in intrinsic ISHFTCSHIFT argument (%ld) out of range 0:%ld in intrinsic %sSIGN= at %L not allowed in Fortran 95SIMD extension levels of LoongArch:SINK addend not a constant integer at %LSINK at %C not permitted as dependence-type for this directiveSIZE argument (%ld) out of range 1:%ld in intrinsic ISHFTCSIZE at %L must be positiveSIZES clause is required on !$OMP TILE construct at %LSIZES requires constant expression at %LSOURCE at %C not permitted as dependence-type for this directiveSOURCE tag at %LSOURCE tag at %L conflicts with the typespec at %LSOURCE tag at %L with more than a single allocate objectSRAM-ECC and XNACK modes:SSA corruptionSSA name %qE with version %d has no definitionSSA name undeclaredSSA_NAME created in two different blocks %i and %iSSA_NAME_DEF_STMT is wrongSSA_NAME_OCCURS_IN_ABNORMAL_PHI should be setSSE instruction set disabled, using 387 arithmeticsSSE register argument with SSE disabledSSE register argument with SSE2 disabledSSE register return with SSE disabledSSE register return with SSE2 disabledSSE vector argument without SSE enabled changes the ABISSE vector return without SSE enabled changes the ABISTAT argument at %L must be of INTEGER type, found %sSTAT argument at %L must be scalarSTAT tag at %L cannot be a constantSTAT variableSTAT's expression at %L must be a variableSTAT= argument at %L must be a scalar INTEGER variableSTAT= argument to %s at %LSTATUS at %L shall be an INTENT(OUT) variableSTOP code at %C cannot be negativeSTOP code at %C contains too many digitsSTOP code at %L must be a scalar CHARACTER constant or digit[digit[digit[digit[digit]]]]STOP code at %L must be a scalar default CHARACTER or INTEGER constant expressionSTOP code at %L must be default character KIND=%dSTOP code at %L must be default integer KIND=%dSTOP code at %L must be either INTEGER or CHARACTER typeSTOP code at %L must be scalarSUBMODULE declaration at %CSUBMODULE declaration at %C cannot appear within another scoping unitSUBROUTINE %qs at %L cannot be called recursively, as it is not RECURSIVESVE type %qT cannot be passed to an unprototyped functionSVE type %qT does not have a defined alignmentSVE type %qT does not have a fixed sizeSVE type %qT not allowed in %<map%> clauseSVE type %qT not allowed in %<target%> %<firstprivate%> clauseSVE type %qT not allowed in %<target%> %<private%> clauseSVE type %qT not allowed in %<target%> device clausesSYNC TEAM statement at %CSYNC statement at %CSame actual argument associated with INTENT(%s) argument %qs and INTENT(%s) argument %qs at %LSame as %s%s (or, in negated form, %s%s).Same as %s%s.Same as %s.Same as -fassociative-math for expressions which include division.Same as -mA6.Same as -mA7.Same as: -mep -mprolog-function.Same identifier %qs specified again at %CSave registers around function calls.Save the TOC in the prologue for indirect calls rather than inline.Scalar %qs in FORMAT tag at %L is not an ASSIGNED variableScalar INTEGER expression expected at %LScalar PARAMETER required in complex constant at %CScalar entity required at %LScalar integer expression for range begin expected at %LScalar integer expression for range end expected at %LScalar integer expression for range step expected at %LScalar object %qs at %L may not be ALLOCATABLEScalar variable %qs has an array reference at %LScalarization using DIMEN_RANGE unimplementedScale factor to apply to the number of statements in a threading path crossing a loop backedge when comparing to max-jump-thread-duplication-stmts.Scaling factor in calculation of maximum distance an expression can be moved by GCSE optimizations.Schedule code for given CPU.Schedule given CPU.Schedule instructions using selective scheduling algorithm.Schedule the start and end of the procedure.Search space limit for the backwards jump threader.Second argument of %s is negative at %LSecond argument of defined assignment at %L must be INTENT(IN)Second argument of operator interface at %L cannot be optionalSecond argument of operator interface at %L must be INTENT(IN)See %s for instructions.
  Select VxWorks SMP C runtimes for linking.Select code model.Select fraction of the maximal frequency of executions of basic block in function given basic block get alignment.Select large model - 20-bit addresses/pointers.Select method for sdata handling.Select return address signing scope.Select small model - 16-bit addresses/pointers (default).Select target ABI variant.Select the eBPF ISA version to target in code generation.Select the name for storing the profile note file.Select the runtime.Select type of coverage sanitization.Select what to sanitize.Selection expression in computed GOTO statement at %L must be a scalar integer expressionSelector at %L cannot be NULL()Selector at %L has no typeSelector at %L must not be coindexedSelector in SELECT TYPE at %C is not a named variable; use associate-name=>Selector shall be polymorphic in SELECT TYPE statement at %LSelects the type of RL78 core being targeted (g10/g13/g14).  The default is the G14.  If set, also selects the hardware multiply support to be used.Selects the type of hardware multiplication and division to use (none/g13/g14).Self reference in character length expression for %qs at %LSelf-referential argument %qs at %L is not allowedSemicolon at %C needs to be preceded by statementSequence %s with mixed components in EQUIVALENCE statement at %L with different type objectsSet 80387 floating-point precision to 32-bit.Set 80387 floating-point precision to 64-bit.Set 80387 floating-point precision to 80-bit.Set Windows defines.Set Working-Storage data items to the supplied valueSet a hard limit for the size of each stack frame, in bytes.Set branch cost.Set default accessibility of module entities to PRIVATE.Set dependence distance checking in premature scheduling of queued insns.Set errno after built-in math functions.Set extra memory access cost for L32R instruction, in clock-cycle units.Set linker output type (used internally during LTO optimization).Set minimum width of left margin of source code when showing source.Set name of __fentry__ symbol called at function entry.Set name of main routine for the debugger.Set name of output ALI file (internal switch).Set name of section to record mrecord-mcount calls.Set number of bytes on the stack preallocated for use by the callee.Set number of nops to emit before each insn pattern.Set output format.Set register to hold -1.Set sizeof(bool) to 1.Set start-address of data.Set start-address of the program.Set the FTZ and DAZ Flags.Set the PPC_EMB bit in the ELF flags header.Set the branch costs for conditional branch instructions.  Reasonable values are small, non-negative integers.  The default branch cost is 1.Set the branch costs to roughly the specified number of instructions.Set the cost of branches.Set the default double precision kind to an 8 byte wide type.Set the default integer kind to an 8 byte wide type.Set the default real kind to an 10 byte wide type.Set the default real kind to an 16 byte wide type.Set the default real kind to an 8 byte wide type.Set the estimated probability in percentage for builtin expect. The default value is 90% probability.Set the max size of data eligible for the SDA area.Set the max size of data eligible for the TDA area.Set the max size of data eligible for the ZDA area.Set the max. number of bytes which has to be left to stack size before a trap instruction is triggered.Set the maximum amount for a single stack increment operation.Set the maximum number of instructions executed in parallel in reassociated tree.  If 0, use the target dependent heuristic.Set the maximum number of template instantiation notes for a single warning or error.Set the output object such that, on loading, dyld will ignore any two-level namespace information and resolve symbols in the discovery order for loaded libs.Set the prologue and epilogue hook addresses to TPF_TRACE_PROLOGUE_SKIP_TARGET and TPF_TRACE_EPILOGUE_SKIP_TARGET. Equivalent to using -mtpf-trace-hook-prologue-target=TPF_TRACE_PROLOGUE_SKIP_TARGET and -mtpf-trace-hook-epilogue-target=TPF_TRACE_EPILOGUE_SKIP_TARGETSet the target CPU type.Set the top-level directory for storing the profile data. The default is 'pwd'.Set the trace check address for epilogue tpf hookSet the trace check address for prologue tpf hookSet the trace jump address for epilogue tpf hookSet the trace jump address for prologue tpf hookSet the version of RISC-V ISA spec.Sets LP_COUNT register width.  Possible values are 8, 16, 20, 24, 28, and 32.Setting spec %s to '%s'
--- 2073,2079 ----
  Print extra (possibly unwanted) warnings.Print fix-it hints in machine-readable form.Print fix-it hints to stderr in unified diff format.Print hierarchical comparisons when template types are mismatched.Print the initial values of the variables.Print the name of header files as they are used.Probability that COMDAT function will be shared with different compilation unit.Probable cause: it was referenced without being defined.Procedure %qs at %C has an explicit interface from a previous declarationProcedure %qs at %C is already defined at %LProcedure %qs at %L already has basic type of %sProcedure %qs at %L has the same name as a component of %qsProcedure %qs at %L has the same name as an inherited component of %qsProcedure %qs at %L may not have basic type of %sProcedure %qs at %L must have the BIND(C) attribute to be C interoperableProcedure %qs called at %L is not explicitly declaredProcedure %qs called at %L is not explicitly declared; did you mean %qs?Procedure %qs called with an implicit interface at %LProcedure %qs defined in interface body at %L clashes with internal procedure defined at %CProcedure %qs in %s at %L has no explicit interfaceProcedure %qs in %s at %L has no explicit interface; did you mean %qs?Procedure %qs in %s at %L is neither function nor subroutineProcedure %qs in %s at %L is neither function nor subroutine; did you mean %qs?Procedure %qs in PUBLIC interface %qs at %L takes dummy arguments of %qs which is PRIVATEProcedure %qs with PASS at %L must have at least one argumentProcedure %qs with PASS(%s) at %L has no argument %qsProcedure %qs with binding label %qs at %L uses the same global identifier as entity at %LProcedure argument at %L is local to a PURE procedure and has the POINTER attributeProcedure pointer %qs at %L shall not be elementalProcedure pointer %qs in %s clause at %LProcedure pointer %qs not supported with !$OMP ALLOCATE at %LProcedure pointer at %CProcedure pointer component %qs at %L cannot be a member of the BIND(C) derived type %qs at %LProcedure pointer component %qs called with an implicit interface at %LProcedure pointer component %qs requires an argument list at %CProcedure pointer component %qs with PASS at %L must have at least one argumentProcedure pointer component %qs with PASS(%s) at %L has no argument %qsProcedure pointer component at %CProcedure pointer initialization target at %L may not be a procedure pointerProcedure pointer result %qs at %L is missing the pointer attributeProcedure pointer target %qs at %L must be either an intrinsic, host or use associated, referenced or have the EXTERNAL attributeProcedure unexpected as argumentProcess #ident directives.Process all modules specified on the command line, but only generate code for the module specified by the argument.Processing spec (%s), which is '%s'
  Produce a Mach-O dylinker (file type MH_DYLINKER), only used for building dyld.Produce a Mach-O shared library (file type MH_DYLIB), synonym for "-shared".Produce a backtrace when a runtime error is encountered.Produce a warning at runtime if a array temporary has been created for a procedure argument.Produce big endian code.Produce code relocatable at runtime.Produce little endian code.Produces a Mach-O file suitable for embedded/ROM use.Profile information in %s corruptedProgram is entirely located in low 64k of memory.Program unit at %L has OpenMP device constructs/routines but does not set !$OMP REQUIRES %s but other program units doProhibit PC relative function calls.Prohibit PC relative jumps.Prohibited in Fortran 2023:Protect parentheses in expressions.Provide bash completion for options starting with provided string.Provide libraries for the simulator.Purge unneeded state during analysis.Push extended registers on stack in monitor functions.Put all local arrays on stack.Put everything in the regular TOC.Put jump tables for switch statements into the .data section rather than the .code section.Put relocated read-only data into .data section.Put uninitialized constants in ROM (needs -membedded-data).Put uninitialized globals in the common section.Put zero initialized data in the bss section.QUIET specifier at %L must be a scalar LOGICALQUIET= specifier for %s at %LRANK (%i) at %L is repeated at %LRANK (*) at %L cannot be used with the pointer or allocatable selector at %LRANK (*) at %L is repeated at %LRANK DEFAULT at %L is repeated at %LRE or IM part_ref at %CRE part_ref at %CREAL array index at %LREAL(KIND=10) is not available for %<-fdefault-real-10%> optionREAL(KIND=10) is not available for %<-freal-4-real-10%> optionREAL(KIND=10) is not available for %<-freal-8-real-10%> optionREAL(KIND=10) is not available for %<-freal-8-real-16%> optionREAL(KIND=16) is not available for %<-fdefault-real-16%> optionREAL(KIND=16) is not available for %<-freal-4-real-16%> optionREAL(KIND=4) is not available for %<-freal-8-real-4%> optionREAL(KIND=8) is not available for %<-fdefault-real-8%> optionREAL(KIND=8) is not available for %<-freal-4-real-8%> optionRECL in OPEN statement at %L must be positiveRECL specifier not allowed in OPEN statement at %L for stream I/ORECORD at %C is an extension, enable it with %<-fdec-structure%>RECURSIVE prefix in MODULE PROCEDURE interface is missing at %LREDUCE locality spec at %LREPLACING %zu characters exceeds system capacity'%s'RESULT variable %qs at %L prohibits FUNCTION name %qs at %C from appearing in a specification statementRESULT variable at %C must be different than function nameRESULT_DECL should be read only when DECL_BY_REFERENCE is setRETURN statement in main program at %CROUND= at %L not allowed in Fortran 95RTL check: access of elt %d of '%s' with last elt %d in %s, at %s:%dRTL check: access of elt %d of vector with last elt %d in %s, at %s:%dRTL check: access of hwi elt %d of vector with last elt %d in %s, at %s:%dRTL check: attempt to treat non-block symbol as a block symbol in %s, at %s:%dRTL check: expected code '%s' or '%s', have '%s' in %s, at %s:%dRTL check: expected code '%s', '%s' or '%s', have '%s' in %s, at %s:%dRTL check: expected code '%s', have '%s' in %s, at %s:%dRTL check: expected elt %d type '%c' or '%c', have '%c' (rtx %s) in %s, at %s:%dRTL check: expected elt %d type '%c', have '%c' (rtx %s) in %s, at %s:%dRTL flag check: %s used with unexpected rtx code '%s' in %s, at %s:%dRTP PIC is incompatible with %<-msingle-pic-base%>RTP PIC is incompatible with ThumbRTTI will not work on this typeRVV type %qT cannot be passed to an unprototyped functionRVV type %qT does not have a defined alignmentRVV type %qT does not have a fixed sizeRVV type %qT not allowed in %<map%> clauseRVV type %qT not allowed in %<target%> %<firstprivate%> clauseRVV type %qT not allowed in %<target%> %<private%> clauseRVV type %qT not allowed in %<target%> device clausesRX FPU instructions do not support NaNs and infinitiesRaising a negative REAL at %L to a REAL power is prohibitedRange specification at %L can never be matchedRank mismatch between actual argument at %L and actual argument at %L (rank-%d and rank-%d)Rank mismatch between actual argument at %L and actual argument at %L (rank-%d and scalar)Rank mismatch between actual argument at %L and actual argument at %L (scalar and rank-%d)Rank mismatch in argument %qs at %L (rank-%d and rank-%d)Rank mismatch in argument %qs at %L (rank-%d and scalar)Rank mismatch in argument %qs at %L (scalar and rank-%d)Rank mismatch in array reference at %L (%d/%d)Rank mismatch of array at %L and its initializer (%d/%d)Rank remapping requires a list of %<lower-bound : upper-bound%> specifications at %LRank remapping target is not rank 1 at %LRank remapping target is smaller than size of the pointer (%ld < %ld) at %LRank remapping target must be rank 1 or simply contiguous at %LReading file %qs as free formReading module %qs at line %d column %d: %sReading specs from %s
  Real COUNT_RATE argument to SYSTEM_CLOCK at %LReal constant overflows its kind at %CReal constant underflows its kind at %CReal number at %C has a %<d%> exponent and an explicit kindReal number at %C has a %<q%> exponent and an explicit kindRealign stack in prologue.Reallocate the LHS in assignments.Recognize C++ keywords like "compl" and "xor".Recognize GNU-defined keywords.Recognize built-in functions.Recognize the "asm" keyword.Record DW_AT_decl_column and DW_AT_call_column in DWARF.Record gcc command line switches in DWARF DW_AT_producer.Record gcc command line switches in the object file.Record times taken by sub-phases separately.Recursive cloning only when the probability of call being executed exceeds the parameter.Redefinition of !$OMP DECLARE REDUCTION at %LRedefinition of predefined !$OMP DECLARE REDUCTION at %LRedefinition of predefined %s !$OMP DECLARE REDUCTION at %LReduce priority for r0..r3 / r12..r15 with TARGET_REGISTER_PRIORITY.Reduce stack alignment on call sites if possible.Redundant !$ACC END LOOP at %CRedundant ACQUIRED_LOCK tag found at %LRedundant ERRMSG tag found at %LRedundant MOLD tag found at %LRedundant SOURCE tag found at %LRedundant STAT tag found at %LRedundant UNTIL_COUNT tag found at %LReference statement index not foundReference statement index out of rangeReference to impure function %qs at %L inside a DO CONCURRENT %sReference to impure function %qs at %L inside a FORALL %sReference to impure function %qs at %L within a PURE procedureReference to impure function at %L inside a DO CONCURRENTRegion crossing jump across same section in bb %iRegister the profile information in the .gcov_info section instead of using a constructor/destructor.Register the profile information in the specified section instead of using a constructor/destructor.Relax cmpxchg loop for atomic_fetch_{or,xor,and,nand} by adding load and cmp before cmpxchg, execute pause and loop back to load and compare if load value is not expected.Relax literals in assembler and place them automatically in the text section.Relief of register pressure through live range shrinkage.Remap file names when including files.Remove code and data that is unreachable from any exported symbol (including the entry point).Remove prefix from absolute path before mangling name for -fprofile-generate= and -fprofile-use=.Remove redundant membars.Removed in GCC 10.  This switch has no effect.Removed in GCC 15.  This switch has no effect.Removed in GCC 8.  This switch has no effect.Removed in GCC 9.  This switch has no effect.Removing '%s'
! Removing call to impure function %qs at %LRemoving call to impure function at %LRenaming operators in USE statements at %CReorder basic blocks and partition into hot and cold sections.Reorder basic blocks to improve code placement.Reorder functions to improve code placement.Reorder top level functions, variables, and asms.Repeat spec invalid in scalar initializer at %CRepeat spec must be an integer at %CReplace add, compare, branch with branch on count register.Replace temporary expressions in the SSA->normal pass.Report on consistency of profile.Report on memory allocation before interprocedural optimization.Report on permanent memory allocation in WPA only.Report on permanent memory allocation.Report the time taken by each compiler pass.Report various link-time optimization statistics for WPA only.Report various link-time optimization statistics.Request IEEE-conformant math library routines (OSF/1).Reschedule instructions after register allocation.Reschedule instructions before register allocation.Reschedule pipelined regions without pipelining.Reserve space for outgoing arguments in the function prologue.Reshaped array too large at %CResidual context countRestore default strub mode: as per attributes, with relaxed checking.Restrict the analyzer to run just the named checker.Restrict the use of hardware floating-point instructions to 32-bit operations.Result %qs of contained function %qs at %L has no IMPLICIT typeResult mismatch for the overriding procedure %qs at %L: %sResult of %s gives range error for its kind at %LResult of %s is NaN at %LResult of %s overflows its kind at %LResult of %s underflows its kind at %LResult of BESSEL_YN is -INF at %LResult of NEAREST is NaN at %LResult of SCALE overflows its kind at %LResult of exponentiation at %L exceeds the range of %sReturn 8-byte vectors in memory.Return address signing is not supported with %<-mtpcs-frame%>.Return all structures in memory (AIX default).Return floating-point results in ac0 (fr0 in Unix assembler syntax).Return pointers in both a0 and d0.Return small aggregates in memory, not registers.Return small aggregates in registers.Return small structures in registers (SVR4 default).Return type mismatch of function %qs at %L (%s/%s)Return type of BIND(C) function %qs at %L cannot be an arrayReturn type of BIND(C) function %qs of character type at %L must have length 1Return value %qs of function %qs declared at %L not setReturn value of function %qs at %L not setReturn values of functions in FPU registers.Reuse r30 on a per function basis.Revert DIP1000: Scoped pointers.Rewrite subcommand usage:Right parenthesis expected at %C in format string at %LRightmost upper bound of assumed size array section not specified at %LRun only the second compilation of -fcompare-debug.Run predictive commoning optimization.Run selective scheduling after reload.Run self-tests, using the given path to locate test files.Run the link-time optimizer in local transformation (LTRANS) mode.Run the link-time optimizer in whole program analysis (WPA) mode.Run two instruction combination passes late in the pass pipeline; one before register allocation and one after.Running spec function '%s' with %d args
  
  Runtime name.SAVE attribute at %L cannot be specified in a PURE procedureSAVE of COMMON block %qs at %C is not allowed in a BLOCK constructSAVE statement at %C follows blanket SAVE statementSCHEDULE clause specified together with %<inscan%> REDUCTION clause at %LSCHEDULE clause's chunk_size at %L requires a scalar INTEGER expressionSELECT RANK statement at %CSELECT TYPE at %C cannot appear in this scopeSELECTED_REAL_KIND with neither %<P%> nor %<R%> argument at %LSELF clause at %L requires a scalar LOGICAL expressionSEQUENCE attribute at %C already specified in TYPE statementSEQUENCE statement at %C must precede CONTAINSSEQUENCE statement at %C must precede structure componentsSH2a does not support little-endianSHAPE argument at %L to C_F_POINTER must have the same size as the RANK of FPTRSHIFT argument (%ld) out of range -%ld:%ld in intrinsic ISHFTSHIFT argument (%ld) out of range -%ld:%ld in intrinsic ISHFTCSHIFT argument (%ld) out of range 0:%ld in intrinsic %sSIGN= at %L not allowed in Fortran 95SIMD extension levels of LoongArch:SINK addend not a constant integer at %LSINK at %C not permitted as dependence-type for this directiveSIZE argument (%ld) out of range 1:%ld in intrinsic ISHFTCSIZE at %L must be positiveSIZES clause is required on !$OMP TILE construct at %LSIZES requires constant expression at %LSOURCE at %C not permitted as dependence-type for this directiveSOURCE tag at %LSOURCE tag at %L conflicts with the typespec at %LSOURCE tag at %L with more than a single allocate objectSRAM-ECC and XNACK modes:SSA corruptionSSA name %qE with version %d has no definitionSSA name undeclaredSSA_NAME created in two different blocks %i and %iSSA_NAME_DEF_STMT is wrongSSA_NAME_OCCURS_IN_ABNORMAL_PHI should be setSSE instruction set disabled, using 387 arithmeticsSSE register argument with SSE disabledSSE register argument with SSE2 disabledSSE register return with SSE disabledSSE register return with SSE2 disabledSSE vector argument without SSE enabled changes the ABISSE vector return without SSE enabled changes the ABISTAT argument at %L must be of INTEGER type, found %sSTAT argument at %L must be scalarSTAT tag at %L cannot be a constantSTAT variableSTAT's expression at %L must be a variableSTAT= argument at %L must be a scalar INTEGER variableSTAT= argument to %s at %LSTATUS at %L shall be an INTENT(OUT) variableSTOP code at %C cannot be negativeSTOP code at %C contains too many digitsSTOP code at %L must be a scalar CHARACTER constant or digit[digit[digit[digit[digit]]]]STOP code at %L must be a scalar default CHARACTER or INTEGER constant expressionSTOP code at %L must be default character KIND=%dSTOP code at %L must be default integer KIND=%dSTOP code at %L must be either INTEGER or CHARACTER typeSTOP code at %L must be scalarSUBMODULE declaration at %CSUBMODULE declaration at %C cannot appear within another scoping unitSUBROUTINE %qs at %L cannot be called recursively, as it is not RECURSIVESVE type %qT cannot be passed to an unprototyped functionSVE type %qT does not have a defined alignmentSVE type %qT does not have a fixed sizeSVE type %qT not allowed in %<map%> clauseSVE type %qT not allowed in %<target%> %<firstprivate%> clauseSVE type %qT not allowed in %<target%> %<private%> clauseSVE type %qT not allowed in %<target%> device clausesSYNC TEAM statement at %CSYNC statement at %CSame actual argument associated with INTENT(%s) argument %qs and INTENT(%s) argument %qs at %LSame as %s%s (or, in negated form, %s%s).Same as %s%s.Same as %s.Same as -fassociative-math for expressions which include division.Same as -mA6.Same as -mA7.Same as: -mep -mprolog-function.Same identifier %qs specified again at %CSave registers around function calls.Save the TOC in the prologue for indirect calls rather than inline.Scalar %qs in FORMAT tag at %L is not an ASSIGNED variableScalar INTEGER expression expected at %LScalar PARAMETER required in complex constant at %CScalar entity required at %LScalar integer expression for range begin expected at %LScalar integer expression for range end expected at %LScalar integer expression for range step expected at %LScalar object %qs at %L may not be ALLOCATABLEScalar variable %qs has an array reference at %LScalarization using DIMEN_RANGE unimplementedScale factor to apply to the number of statements in a threading path crossing a loop backedge when comparing to max-jump-thread-duplication-stmts.Scaling factor in calculation of maximum distance an expression can be moved by GCSE optimizations.Schedule code for given CPU.Schedule given CPU.Schedule instructions using selective scheduling algorithm.Schedule the start and end of the procedure.Search space limit for the backwards jump threader.Second argument of %s is negative at %LSecond argument of defined assignment at %L must be INTENT(IN)Second argument of operator interface at %L cannot be optionalSecond argument of operator interface at %L must be INTENT(IN)See %s for instructions.
  Select VxWorks SMP C runtimes for linking.Select code model.Select fraction of the maximal frequency of executions of basic block in function given basic block get alignment.Select large model - 20-bit addresses/pointers.Select method for sdata handling.Select return address signing scope.Select small model - 16-bit addresses/pointers (default).Select target ABI variant.Select the eBPF ISA version to target in code generation.Select the name for storing the profile note file.Select the runtime.Select type of coverage sanitization.Select what to sanitize.Selection expression in computed GOTO statement at %L must be a scalar integer expressionSelector at %L cannot be NULL()Selector at %L has no typeSelector at %L must not be coindexedSelector in SELECT TYPE at %C is not a named variable; use associate-name=>Selector shall be polymorphic in SELECT TYPE statement at %LSelects the type of RL78 core being targeted (g10/g13/g14).  The default is the G14.  If set, also selects the hardware multiply support to be used.Selects the type of hardware multiplication and division to use (none/g13/g14).Self reference in character length expression for %qs at %LSelf-referential argument %qs at %L is not allowedSemicolon at %C needs to be preceded by statementSequence %s with mixed components in EQUIVALENCE statement at %L with different type objectsSet 80387 floating-point precision to 32-bit.Set 80387 floating-point precision to 64-bit.Set 80387 floating-point precision to 80-bit.Set Windows defines.Set Working-Storage data items to the supplied valueSet a hard limit for the size of each stack frame, in bytes.Set branch cost.Set default accessibility of module entities to PRIVATE.Set dependence distance checking in premature scheduling of queued insns.Set errno after built-in math functions.Set extra memory access cost for L32R instruction, in clock-cycle units.Set linker output type (used internally during LTO optimization).Set minimum width of left margin of source code when showing source.Set name of __fentry__ symbol called at function entry.Set name of main routine for the debugger.Set name of output ALI file (internal switch).Set name of section to record mrecord-mcount calls.Set number of bytes on the stack preallocated for use by the callee.Set number of nops to emit before each insn pattern.Set output format.Set register to hold -1.Set sizeof(bool) to 1.Set start-address of data.Set start-address of the program.Set the FTZ and DAZ Flags.Set the PPC_EMB bit in the ELF flags header.Set the branch costs for conditional branch instructions.  Reasonable values are small, non-negative integers.  The default branch cost is 1.Set the branch costs to roughly the specified number of instructions.Set the cost of branches.Set the default double precision kind to an 8 byte wide type.Set the default integer kind to an 8 byte wide type.Set the default real kind to an 10 byte wide type.Set the default real kind to an 16 byte wide type.Set the default real kind to an 8 byte wide type.Set the estimated probability in percentage for builtin expect. The default value is 90% probability.Set the max size of data eligible for the SDA area.Set the max size of data eligible for the TDA area.Set the max size of data eligible for the ZDA area.Set the max. number of bytes which has to be left to stack size before a trap instruction is triggered.Set the maximum amount for a single stack increment operation.Set the maximum number of instructions executed in parallel in reassociated tree.  If 0, use the target dependent heuristic.Set the maximum number of template instantiation notes for a single warning or error.Set the output object such that, on loading, dyld will ignore any two-level namespace information and resolve symbols in the discovery order for loaded libs.Set the prologue and epilogue hook addresses to TPF_TRACE_PROLOGUE_SKIP_TARGET and TPF_TRACE_EPILOGUE_SKIP_TARGET. Equivalent to using -mtpf-trace-hook-prologue-target=TPF_TRACE_PROLOGUE_SKIP_TARGET and -mtpf-trace-hook-epilogue-target=TPF_TRACE_EPILOGUE_SKIP_TARGETSet the target CPU type.Set the top-level directory for storing the profile data. The default is 'pwd'.Set the trace check address for epilogue tpf hookSet the trace check address for prologue tpf hookSet the trace jump address for epilogue tpf hookSet the trace jump address for prologue tpf hookSet the version of RISC-V ISA spec.Sets LP_COUNT register width.  Possible values are 8, 16, 20, 24, 28, and 32.Setting spec %s to '%s'
*************** F2008: A pointer function assignment is
*** 2095,2101 ****
  Shape specification for allocatable scalar at %CShapes for operands at %L and %L are not conformableShapes of ORDER at %L and SHAPE at %L are differentShare slots for saving different hard registers.Share stack slots for spilled pseudo-registers.Shared DO termination label %d at %CShorten address references during linking.Show column numbers in diagnostics, when available.  Default on.Show events within system headers in analyzer execution paths.Show labels annotating ranges of source code when showing source.Show line numbers in the left margin when showing source.Show lines linking related events in diagnostic paths.Show stack depths of events in paths.Show the source line with a caret indicating the column.Shrink-wrap parts of the prologue and epilogue separately.Simplification errorSimplification of SPREAD at %C not yet implementedSize cut-off for callee including inlined calls to be cloned for a particular caller.Size in bytes after which thread-local aggregates should be instrumented with the logging functions instead of save/restore pairs.Size of %qs argument of %qs intrinsic at %L too small (%i/%i)Size of %qs argument of %qs intrinsic at %L too small (%wd/%ld)Size of the stack guard expressed as a power of two in bytes.Size of tiles for loop blocking.Size optimization level: 0:none 1:opportunistic 2: regalloc 3:drop align, -Os.Sizes of ORDER at %L and SHAPE at %L are differentSkip setting up RAX register when passing variable arguments.Small data area: none, sdata, use.Soft limit on number of memory insns per instruction group, giving lower priority to subsequent memory insns attempting to schedule in the same insn group. Frequently useful to prevent cache bank conflicts.  Default value is 1.Sorry, !$ACC DECLARE at %L is not allowed in BLOCK constructSorry, !$OMP allocate for COMMON block variable %qs at %L not supportedSorry, %s specifier at %L for assumed-size array %qs is not yet supportedSorry, Cray pointers and pointees such as %qs are not supported with !$OMP ALLOCATE at %LSorry, EQUIVALENCE object %qs not supported with !$OMP ALLOCATE at %LSorry, LOCAL specifier at %L for %qs of derived type with default initializer is not yet supportedSorry, allocatable/pointer components in polymorphic (CLASS) type coarrays at %L are unsupportedSorry, coindexed access to an unlimited polymorphic component at %L is not supportedSorry, coindexed access to an unlimited polymorphic object at %L is not supportedSorry, list item %qs at %L with allocatable components is not yet supported in %s clauseSorry, only support for integer kind %d implemented for image-set at %LSorry, polymorphic arrays not yet supported for firstprivateSorry, structure-element list item at %L in ALLOCATE directive is not yet supportedSorry, the event component of derived type at %L is not yet supportedSorry, the lock component of derived type at %L is not yet supportedSort the symbols according to size.Sort the symbols alphabetically.Source-expr at %L and allocate-object at %L must have the same shapeSource-expr at %L must be scalar or have the same rank as the allocate-object at %LSpecification function %qs at %L cannot be RECURSIVESpecification function %qs at %L cannot be a statement functionSpecification function %qs at %L cannot be an internal functionSpecification function %qs at %L must be PURESpecifies bit size of immediate TLS offsets.  Valid values are 12, 24, 32, 48.Specifies the number of registers replicated in second register bank on entry to fast interrupt.Specifies the number of registers to reserve for interrupt handlers.Specifies the registers that the processor saves on an interrupt entry and exit.Specifies whether interrupt functions should save and restore the accumulator register.Specifies whether the fence.tso instruction should be used.Specify CPU for code generation purposes.Specify CPU for scheduling purposes.Specify CPU for scheduling purposes.  Valid arguments are 700, 7100, 7100LC, 7200, 7300, and 8000.Specify TLS dialect.Specify UNIX standard for predefines and linking.Specify a file to which a list of files output by LTRANS is written.Specify a fpu configuration value from 0 to 7; 0-3 is as FPU spec says, and 4-7 is corresponding to 0-3.Specify a plugin to load.Specify alignment of structure fields default/natural.Specify an ABI.Specify bit size of immediate TLS offsets.Specify cache flush function.Specify cache flush trap number.Specify configuration of instruction mul: fast1, fast2 or slow. The default is fast1.Specify default OpenACC compute dimensions.Specify how many read/write ports for n9/n10 cores.  The value should be 3r2w or 2r1w.Specify how to access the thread pointer.Specify how to print any control-flow path associated with a diagnostic.Specify if floating point hardware should be used.Specify integer and floating-point calling convention.Specify main object for TPF-OS.Specify maximum error replay depth during recursive diagnosis of a constraint satisfaction failure.Specify memcpy expansion strategy when expected size is known.Specify memset expansion strategy when expected size is known.Specify name for 32 bit signed division function.Specify range of registers to make fixed.Specify scheduling priority for dispatch slot restricted insns.Specify size of .local memory used for stack when the exact amount is not known.Specify stringop expansion strategy.Specify that an external BLAS library should be used for matmul calls on large-size arrays.Specify that backslash in string introduces an escape character.Specify that no implicit typing is allowed, unless overridden by explicit IMPLICIT statements.Specify that the compiler should target secure code as per ARMv8-M Security Extensions.Specify the ISA to build for: msp430, msp430x, msp430xv2.Specify the MCU to build for.Specify the PTX ISA target architecture to use.Specify the PTX ISA version to use.Specify the __fp16 floating-point format.Specify the address generation strategy for ICT call's code model.Specify the address generation strategy for code model.Specify the algorithm to partition symbols and vars at linktime.Specify the code model used for accessing memory addresses.  Specifying large enables generating binaries with large global offset tables.  By default the value is small.Specify the code model.Specify the compact branch usage policy.Specify the cpu for pipeline model.Specify the memory model in effect for the program.Specify the minimum bit alignment of structures. (Deprecated).Specify the model for atomic operations.Specify the name of the target CPU.Specify the name of the target GPU.Specify the name of the target architecture.Specify the name of the target floating point configuration.Specify the name of the target floating point hardware/format.Specify the register to be used for PIC addressing.Specify the security level of c-isr for the whole file.Specify the size of each cache block, which must be a power of 2 between 4 and 512.Specify the size of each interrupt vector, which must be 4 or 16.Specify the target CPU.Specify the target RX cpu type.Specify the target architecture.Specify the target floating-point hardware/format.Specify the target processor.Specify the thread pointer register.Specify the type of hardware multiply to support.Specify thread local storage scheme.Specify thread pointer register number.Specify use soft floating point ABI which mean alias to -mabi=2.Specify use soft floating point ABI which mean alias to -mabi=2fp+.Specify when to enable an early register allocation pass.  The possibilities are: all functions, functions that have access to strided multi-register instructions, and no functions.Specify where to find the compiled intrinsic modules.Specify whether functions should be placed into the lower or upper memory regions, or if they should be shuffled between the regions (either) for best fit (default: lower).Specify whether variables should be placed into the lower or upper memory regions, or if they should be shuffled between the regions (either) for best fit (default: lower).Specify which ABI to use for Objective-C family code and meta-data generation.Specify which ABI type to generate code for: 2, 2fp+.Specify which post scheduling nop insertion scheme to apply.Specifying VOLATILE for coarray variable %qs at %C, which is use-/host-associatedSplit 32-byte AVX unaligned load.Split 32-byte AVX unaligned store.Split lifetimes of induction variables when loops are unrolled.Split paths leading to loop backedges.Split unaligned 8 byte vector moves before post-modify address generation.Split wide types into independent registers earlier.Split wide types into independent registers.Stack frame larger than 2G is not supported for %<-fsplit-stack%>Stack realignment not supported with %<__builtin_eh_return%>Start expression in DO loopStat-variable at %L must be a scalar INTEGER variableStat-variable at %L shall not be %sd within the same %s statementStatement at %L is not a valid branch target statement for the branch statement at %LStatement function %qs at %L conflicts with function nameStatement function %qs at %L is not allowed as an actual argumentStatement function %qs at %L may not have pointer or allocatable attributeStatement function %qs is invalid in procedure pointer assignment at %LStatement function %qs requires argument list at %CStatement function at %CStatement function at %L cannot appear within an INTERFACEStatement function at %L is recursiveStatement label at %C is zeroStatement label in END CRITICAL at %C does not match CRITICAL labelStatement label in ENDDO at %C doesn't match DO labelStatement label list in GOTO at %C cannot be emptyStatement label without statement at %LStatically link the GCC Quad-Precision Math Library (libquadmath).Statically link the GNU Fortran helper library (libgfortran).Step expression in DO loopStep expression in DO loop at %L cannot be zeroStop exploring an execution path after certain diagnostics.Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is available.Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is not available.Stop reverse growth if the reverse probability of best edge is less than this threshold (in percent).Store all argument registers on the stack.Store doubles in 64 bits.Store function names in object code.Stores doubles in 32 bits.  This is the default.Stores the MDUC registers in interrupt handlers for G13 target.Stream extra data to support more aggressive devirtualization in LTO local transformation mode.Stride must not be present at %LStride should not be specified for array section in %s clause at %LStrides not allowed in coarray subscript at %CString length at %L is too largeStructure component %qs at %L cannot be an EQUIVALENCE objectStructure constructor with missing optional arguments at %CStructure constructor with named arguments at %CStructure name %qs at %C cannot be the same as an intrinsic typeStructure name expected after RECORD at %CStructure name expected in non-nested structure declaration at %CStructure-component expression at %L in %qs directive not permitted in declarative directive; as directive associated with an ALLOCATE stmt it must be preceded by an executable statement or OpenMP constructStructured format for output dependency information.  Supported ("p1689r5").Subroutine %qs at %L is INTRINSIC but is not compatible with an intrinsicSubroutine call at %L in a DO CONCURRENT block is not PURESubroutine call to %qs at %L is not PURESubroutine call to %qs in DO CONCURRENT block at %L is not PURESubroutine call to %qs in FORALL block at %L is not PURESubroutine call to intrinsic %qs at %L is not PURESubroutine call to intrinsic %qs in DO CONCURRENT block at %L is not PURESubroutine call with alternate returns in INITIALIZER clause of !$OMP DECLARE REDUCTION at %LSubroutine call with alternate returns in combiner of !$OMP DECLARE REDUCTION at %LSubscript at %L above array upper bound (%ld > %ld) in dimension %dSubscript at %L below array lower bound (%ld < %ld) in dimension %dSubstring at %L has length zeroSubstring end index (%td) at %L exceeds string lengthSubstring end index at %L exceeds the string lengthSubstring end index at %L is too largeSubstring end index at %L must be of type INTEGERSubstring end index at %L must be scalarSubstring start index (%td) at %L below 1Substring start index at %L is less than oneSubstring start index at %L must be of type INTEGERSubstring start index at %L must be scalarSubstring starting and ending points of target specification at %L must be constant expressionsSuggest that the override keyword be used when the declaration of a virtual function overrides another.Sum of array rank %d and corank %d at %C exceeds maximum allowed dimensions of %dSum of second and third arguments of IBITS exceeds bit size at %LSupply a list of objects to be linked from a file, rather than the command line.Support 3DNow! built-in functions.Support 512 bit vector built-in functions and code generation.Support AES built-in functions and code generation.Support AMX-BF16 built-in functions and code generation.Support AMX-COMPLEX built-in functions and code generation.Support AMX-FP16 built-in functions and code generation.Support AMX-FP8 built-in functions and code generation.Support AMX-INT8 built-in functions and code generation.Support AMX-MOVRS built-in functions and code generation.Support AMX-TF32 built-in functions and code generation.Support AMX-TILE built-in functions and code generation.Support AMX-TRANSPOSE built-in functions and code generation.Support AVX512VNNI built-in functions and code generation.Support AVX512VP2INTERSECT built-in functions and code generation.Support Athlon 3Dnow! built-in functions.Support BMI built-in functions and code generation.Support BMI2 built-in functions and code generation.Support C++17 allocation of over-aligned types.Support CLDEMOTE built-in functions and code generation.Support CLFLUSHOPT instructions.Support CLWB instruction.Support CLZERO built-in functions and code generation.Support ENQCMD built-in functions and code generation.Support F16C built-in functions and code generation.Support FMA4 built-in functions and code generation.Support FSGSBASE built-in functions and code generation.Support FXSAVE and FXRSTOR instructions.Support GFNI built-in functions and code generation.Support HRESET built-in functions and code generation.Support Hardware Lock Elision prefixes.Support KL built-in functions and code generation.Support LWP built-in functions and code generation.Support LZCNT built-in function and code generation.Support MMX and SSE built-in functions and code generation.Support MMX built-in functions.Support MMX, SSE and SSE2 built-in functions and code generation.Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3 and SSE4A built-in functions and code generation.Support MMX, SSE, SSE2, SSE3 and SSSE3 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and SHA512 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and SM3 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and SM4 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512BW built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512CD built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512DQ built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512IFMA built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VBMI built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VL built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVXVNNIINT16 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVXVNNIINT8 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX10.1-512 and AVX10.2 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX10.1-512, AVX10.2 and AMX-AVX512 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512-FP16 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512BF16 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512BITALG built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VBMI2 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VPOPCNTDQ built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVX10.1-256 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVX10.1-512 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVXIFMA built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVXNECONVERT build-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVXVNNI built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and CMPCCXADD build-in functions and code generation.Support MOVDIR64B built-in functions and code generation.Support MOVDIRI built-in functions and code generation.Support MOVRS built-in functions and code generation.Support MWAIT and MONITOR built-in functions and code generation.Support MWAITX and MONITORX built-in functions and code generation.Support PCLMUL built-in functions and code generation.Support PCONFIG built-in functions and code generation.Support PKU built-in functions and code generation.Support PREFETCHI built-in functions and code generation.Support PREFETCHW instruction.Support PTWRITE built-in functions and code generation.Support RAOINT built-in functions and code generation.Support RDPID built-in functions and code generation.Support RDRND built-in functions and code generation.Support RDSEED instruction.Support RTM built-in functions and code generation.Support SERIALIZE built-in functions and code generation.Support SGX built-in functions and code generation.Support SHA1 and SHA256 built-in functions and code generation.Support TBM built-in functions and code generation.Support TLS segment larger than 64K.Support TSXLDTRK built-in functions and code generation.Support UINTR built-in functions and code generation.Support USER_MSR built-in functions and code generation.Support VAES built-in functions and code generation.Support VPCLMULQDQ built-in functions and code generation.Support WAITPKG built-in functions and code generation.Support WBNOINVD built-in functions and code generation.Support WIDEKL built-in functions and code generation.Support XOP built-in functions and code generation.Support XSAVE and XRSTOR instructions.Support XSAVEC instructions.Support XSAVEOPT instruction.Support XSAVES and XRSTORS instructions.Support alignments of up to 64-bits.Support amcas[_db].{b/h/w/d} instructions.Support am{swap/add}[_db].{b/h} instructions.Support calls between Thumb and ARM instruction sets.Support code generation for APX features, including EGPR, PUSH2POP2, NDD, PPX, NF, CCMP and ZU.Support code generation of Advanced Bit Manipulation (ABM) instructions.Support code generation of cmpxchg16b instruction.Support code generation of crc32 instruction.Support code generation of movbe instruction.Support code generation of popcnt instruction.Support code generation of sahf instruction in 64bit x86-64 code.Support div.w[u] and mod.w[u] instructions with inputs not sign-extended.Support dynamic initialization of thread-local variables in a different translation unit.Support flag-preserving add-carry instructions.Support for the A argument at %L which is polymorphic A argument or has allocatable components is not yet implementedSupport for the A argument at %L with allocatable components is not yet implementedSupport frecipe.{s/d} and frsqrte.{s/d} instructions.Support legacy multi-threading.Support message passing with the Parallel Environment.Support more than 8192 GOT entries on ColdFire.Support multi-threading.Support synchronous non-call exceptions.Supported AArch64 return address signing scope (for use with -msign-return-address= option):Supported ABIs (for use with the -mabi= option):Supported ISA specs (for use with the -misa-spec= option):Supported LTO compression algorithms: zlibSuppress output of addresses in debugging dumps.Suppress output of instruction numbers, line number notes and addresses in debugging dumps.Suppress output of previous and next insn numbers in debugging dumps.Suppress warnings.Switch ARM/Thumb modes on alternating functions for compiler testing.Switch on/off MIPS16 ASE on alternating functions for compiler testing.Switches off the -mstack-guard= option.Switches off the -mstack-size= option.Symbol %qs already declaredSymbol %qs at %C already declaredSymbol %qs at %C also declared as a type at %LSymbol %qs at %C has already been host associatedSymbol %qs at %C has no IMPLICIT typeSymbol %qs at %C has not been previously definedSymbol %qs at %C is USE associated from module %qs and cannot occur in COMMONSymbol %qs at %C is already in a COMMON blockSymbol %qs at %C is ambiguousSymbol %qs at %C must be a NAMELIST group nameSymbol %qs at %L already has an explicit interfaceSymbol %qs at %L already has basic type of %sSymbol %qs at %L cannot have a typeSymbol %qs at %L conflicts with symbol from module %qs, use-associated at %LSymbol %qs at %L conflicts with the rename symbol at %LSymbol %qs at %L conflicts with the symbol at %LSymbol %qs at %L has no IMPLICIT typeSymbol %qs at %L has no IMPLICIT type; did you mean %qs?Symbol %qs at %L has the WEAK attribute but is a dummy argumentSymbol %qs at %L has the WEAK attribute but is a local variableSymbol %qs at %L is ambiguousSymbol %qs at %L is declared in a BLOCK DATA program unit but is not in a COMMON blockSymbol %qs at %L is marked PRIVATE but has been given the binding label %qsSymbol %qs has mixed component and non-component accesses at %LSymbol %qs in COMMON at %C cannot be a POINTER arraySymbol %qs in COMMON at %C cannot be a coarraySymbol %qs in namelist %qs at %C must be declared before the namelist is declared.Symbol %qs in namelist %qs is INTENT(IN) at %CSymbol %qs is used before it is typed at %LSymbol %qs must be a PARAMETER in DATA statement at %CSymbol %qs present on both FROM and TO clauses at %LSymbol %qs present on both data and map clauses at %LSymbol %qs present on multiple clauses at %LSymbol %qs referenced at %L not found in intrinsic module ISO_C_BINDINGSymbol %qs referenced at %L not found in intrinsic module ISO_FORTRAN_ENVSymbol %qs referenced at %L not found in module %qsSymbol %qs, in COMMON block %qs at %C is being indirectly equivalenced to another COMMON block %qsSymbol at %C is not appropriate for an expressionSymbol at %L is not a DUMMY variableSynonym for "-export-dynamic" for linker versions that support it.Synonym for "image_base".Synonym for -Wcomment.Synonym of -gnatk8.Syntax error in !$ACC DECLARE list at %CSyntax error in !$ACC ROUTINE ( NAME ) at %CSyntax error in !$ACC ROUTINE ( NAME ) at %C, expecting %<)%> after NAMESyntax error in !$OMP DECLARE TARGET list at %CSyntax error in !$OMP THREADPRIVATE list at %CSyntax error in !GCC$ ATTRIBUTES statement at %CSyntax error in !GCC$ IVDEP directive at %CSyntax error in !GCC$ NOVECTOR directive at %CSyntax error in !GCC$ UNROLL directive at %CSyntax error in !GCC$ VECTOR directive at %CSyntax error in %s statement at %CSyntax error in ABSTRACT INTERFACE statement at %CSyntax error in ASYNCHRONOUS statement at %CSyntax error in AUTOMATIC statement at %CSyntax error in CASE specification at %CSyntax error in CHARACTER declaration at %CSyntax error in CLASS IS specification at %CSyntax error in COMPLEX constant at %CSyntax error in ELSE IF statement after %LSyntax error in ENUMERATOR definition at %CSyntax error in EQUIVALENCE statement at %LSyntax error in FORALL iterator at %CSyntax error in I/O iterator at %CSyntax error in IF-clause after %CSyntax error in IF-expression at %CSyntax error in IMPORT statement at %CSyntax error in NAME= specifier for binding label at %CSyntax error in OpenACC expression list at %CSyntax error in OpenMP SINK dependence-type list at %CSyntax error in OpenMP detach clause at %CSyntax error in OpenMP expression list at %CSyntax error in OpenMP variable list at %CSyntax error in PROCEDURE statement at %CSyntax error in PROTECTED statement at %CSyntax error in RANK specification at %CSyntax error in SAVE statement at %CSyntax error in STATIC statement at %CSyntax error in SUBMODULE statement at %CSyntax error in SUBSTRING specification at %CSyntax error in TYPE IS specification at %CSyntax error in VALUE statement at %CSyntax error in VOLATILE statement at %CSyntax error in anonymous structure declaration at %CSyntax error in argument list at %CSyntax error in array constructor at %CSyntax error in character length specification at %CSyntax error in common block name at %CSyntax error in data declaration at %CSyntax error in expression at %CSyntax error in generic specification at %CSyntax error in iterator at %CSyntax error in nested structure declaration at %CSyntax error in old style initialization of %s at %CSyntax error in old style initializer list at %CSyntax error in procedure pointer component at %CSyntax error: Trailing garbage in END INTERFACE statement at %CSyntax error: Trailing garbage in INTERFACE statement at %CTARGET DATA must contain at least one MAP, USE_DEVICE_PTR, or USE_DEVICE_ADDR clause at %LTARGET ENTER DATA with map-type other than TO, TOFROM or ALLOC on MAP clause at %LTARGET EXIT DATA with map-type other than FROM, TOFROM, RELEASE, or DELETE on MAP clause at %LTARGET%s with map-type other than TO, FROM, TOFROM, or ALLOC on MAP clause at %LTEAM NUMBER argument to FORM TEAM at %L must be a scalar INTEGERTEAM argument at %L must be of TEAM_TYPE from the intrinsic module ISO_FORTRAN_ENV, found %sTEAM argument at %L must be scalarTEAM argument at %L to the intrinsic TEAM_NUMBER shall be of type TEAM_TYPETEAM argument to %qs at %L must be a scalar expression of type TEAM_TYPETEAM_NUMBER argument at %L must be of INTEGER type, found %sTEAM_NUMBER argument at %L must be scalarTEAM_NUMBER= not supported at %CTHREADPRIVATE object %qs in %s clause at %LTHREADPRIVATE object %qs in SHARED clause at %LTILE construct at %L generates %d loops with canonical form but %d loops are neededTILE requires constant expression at %LTLS dialect to use:TLS is not implemented for GCN.TODO: type-bound defined assignment(s) at %L not done because multiple part array references would occur in intermediate expressions.TODO: unlimited polymorphic MOLD in TRANSFER intrinsic at %LTOPOS argument (%ld) out of range 0:%d in intrinsic MVBITSTOPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsic MVBITSTYPE IS at %L overlaps with TYPE IS at %LTYPE with intrinsic-type-spec at %CTake advantage of linker relaxations to reduce the number of instructions required to materialize symbol addresses.Taken at least once:%s of %d
  Takes two non-negative integer numbers separated by a comma. Prepend the function label with the number of two-byte Nop instructions indicated by the first.  Append Nop instructions covering the number of halfwords indicated by the second after the label.  Nop instructions of the largest possible size are used (six, four or two bytes), beginning with the largest possible size.  Using 0 for both values disables hotpatching.Target block's relative execution frequency (as a percentage) required to sink a statement.Target expression in pointer assignment at %L must deliver a pointer resultTarget has split I&D.Target of rank remapping is too small (%ld < %ld)Target the AM33 processor.Target the AM33/2.0 processor.Target the AM34 processor.Target the FT32B architecture.Target the software simulator.Target: %s
  Tell DCE to remove unused C++ allocations.Tell DSE that the storage for a C++ object is dead when the constructor starts and when the destructor finishes.The %<-mfloat128%> option may not be fully supportedThe %s argument at %L has type %s but the function passed as OPERATION at %L returns %sThe %s directive cannot be specified within a %s region at %LThe A argument at %L of CO_REDUCE shall not be polymorphicThe A argument at %L to the intrinsic %s shall not be coindexedThe ARRAY argument at %L of REDUCE shall not be polymorphicThe AUTOMATIC object %qs at %L must not have the SAVE attribute or be a variable declared in the main program, a module or a submodule(F08/C513)The CHARACTER elements of the array constructor at %L must have the same length (%ld/%ld)The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %LThe DIM argument at %L, if present, must be an integer scalarThe DISTANCE argument may not be specified together with the COARRAY or DIM argument in intrinsic at %LThe FORALL with index %qs is not used on the left side of the assignment at %L and so might cause multiple assignment to this objectThe FROM and TO arguments at %L violate aliasing restrictions (F2003 12.4.1.7)The FROM and TO arguments of the MOVE_ALLOC intrinsic at %L must have the same corank %d/%dThe FROM and TO arguments of the MOVE_ALLOC intrinsic at %L must have the same rank %d/%dThe FROM argument to MOVE_ALLOC at %L shall not be coindexedThe H format specifier at %L is a Fortran 95 deleted featureThe Hollerith constant at %L is truncated in conversion to %qsThe IDENTITY argument at %L, if present, must be a scalar with the same type as ARRAYThe INTENT(OUT) dummy argument %qs at %L is ASSUMED SIZE and so cannot have a default initializerThe KIND parameter %qs at %C cannot either be ASSUMED or DEFERREDThe KIND parameter %qs in the PDT constructor at %C has no valueThe KIND part_ref at %C must be applied to an expression of intrinsic typeThe LEN part_ref at %C must be applied to a CHARACTER expressionThe MASK argument at %L, if present, must be a logical array with the same rank as ARRAYThe NULL in the structure constructor at %L is being applied to component %qs, which is neither a POINTER nor ALLOCATABLEThe ORDERED argument at %L, if present, must be a logical scalarThe RE or IM part_ref at %C must be applied to a COMPLEX expressionThe RVV possible LMUL (-mrvv-max-lmul=):The SELECT RANK CASE expression at %C must be a scalar, integer constantThe SELECT RANK selector at %C must be an assumed rank variableThe SHAPE array for the RESHAPE intrinsic at %L has a negative value %d for dimension %dThe STATUS specified in OPEN statement at %L cannot have the value SCRATCH if a FILE specifier is presentThe STATUS specified in OPEN statement at %L is %qs and no FILE specifier is presentThe TO argument to MOVE_ALLOC at %L shall not be coindexedThe TO arguments in MOVE_ALLOC at %L must be polymorphic if FROM is polymorphicThe absolute value of SHIFT at %L must be less than or equal to BIT_SIZE(%qs)The absolute value of SHIFT at %L must be less than or equal to SIZE at %LThe allocatable object %qs at %L must have an explicit function interface or be declared as arrayThe allocate-object at %L and the source-expr at %L shall have the same kind type parameterThe argument list functions %%VAL, %%LOC or %%REF are not allowed in this context at %LThe argument of the RANK intrinsic at %L must be a data objectThe assignment to a KIND or LEN component of a parameterized type at %L is not allowedThe associate name %s with an assumed rank target at %L must have a bounds remapping list (list of lbound:ubound for each dimension)The assumed rank data-target at %L must be contiguousThe assumed rank target at %C must be contiguousThe assumed rank target at %L is an experimental F202y feature. Use option -std=f202y to enableThe assumed-rank array %qs at %L shall not have a codimensionThe assumed-rank array at %C shall not have a codimensionThe assumed-rank array at %L requires that the dummy argument %qs has assumed-rankThe assumed-size dummy %qs is being passed at %L to an assumed-rank dummy %qsThe base name at %L does not match the name of the current procedureThe base name at %L must not be a generic nameThe base name at %L must not be a procedure pointerThe base name at %L must not be an entry nameThe base name for %<declare variant%> must be specified at %LThe base procedure at %L must have an explicit interfaceThe bounds remapping list at %C is an experimental F202y feature. Use std=f202y to enableThe bug is not reproducible, so it is likely a hardware or OS problem.
! The character constant at %L is truncated in conversion to %sThe character length of the %s argument at %L and of the arguments of the OPERATION at %L shall be the sameThe character length of the %s argument at %L and of the function result of the OPERATION at %L shall be the sameThe code model option names for -mcmodel:The code model option names for -mexplicit-relocs:The component at %C that appears in the type parameter list at %L has neither the KIND nor LEN attributeThe component at %C which is a type parameter must be a scalarThe component with KIND or LEN attribute at %C does not not appear in the type parameter list at %LThe data-target at %L is an assumed rank object and so the data-pointer-object %s must have a bounds remapping list (list of lbound:ubound for each dimension)The default (and opposite of -static), implied by user mode executables, shared libraries and bundles.The denominator n of fraction 1/n of the execution frequency of callee to be cloned for a particular caller. Special value of 0 dictates to always clone without a cut-off.The denominator n of fraction 1/n of the execution frequency of the entry block of a function that a basic block of this function needs to at least have in order to be considered hot.The denominator n of fraction 1/n of the maximal execution count of a basic block in the entire program that a basic block needs to at least have in order to be considered hot (used in non-LTO mode).The denominator n of fraction 1/n of the number of profiled runs of the entire program below which the execution count of a basic block must be in order for the basic block to be considered unlikely.The derived parameter %qs at %C does not have a default valueThe derived type %qs at %L is of type %qs, which has not been definedThe device has the .rodata section located in the RAM area.The earliest macOS version on which this program will run (formatted for the assembler).The earliest macOS version on which this program will run.The element in the structure constructor at %L, for pointer component %qs should be a POINTER or a TARGETThe element in the structure constructor at %L, for pointer component %qs, is %s but should be %sThe equivalence set for %qs cause an invalid extension to COMMON %qs at %LThe equivalence set for variable %qs declared at %L violates alignment requirementsThe errmsg= argument at %L must be a default-kind character variableThe event handle at %L must not be an array elementThe event handle at %L must not be part of a derived type or classThe event variable at %L shall not be coindexedThe following options are language-independentThe following options are language-relatedThe following options are not documentedThe following options are specific to just the language The following options are supported by the language The following options are target specificThe following options control compiler warning messagesThe following options control optimizationsThe following options control parametersThe following options take joined argumentsThe following options take separate argumentsThe function passed as OPERATION at %L has arguments of type %s and %s but shall have type %sThe function passed as OPERATION at %L shall have scalar nonallocatable nonpointer arguments and return a nonallocatable nonpointer scalarThe function passed as OPERATION at %L shall have the ASYNCHRONOUS attribute either for none or both argumentsThe function passed as OPERATION at %L shall have the TARGET attribute either for none or both argumentsThe function passed as OPERATION at %L shall have the VALUE attribute either for none or both argumentsThe function passed as OPERATION at %L shall have two argumentsThe function passed as OPERATION at %L shall not have the OPTIONAL attribute for either of the argumentsThe function result on the lhs of the assignment at %L must have the pointer attribute.The given type is not NULL, and that's just not fairThe given type is not a DECL or a TYPEThe ideal width in characters of text art diagrams generated by the analyzer.The intrinsic %qs at %L is not included in the selected standard but %s and %qs will be treated as if declared EXTERNAL.  Use an appropriate %<-std=%> option or define %<-fall-intrinsics%> to allow this intrinsic.The intrinsic %qs declared INTRINSIC at %L is not available in the current standard settings but %s. Use an appropriate %<-std=*%> option or enable %<-fall-intrinsics%> in order to use it.The intrinsic NULL cannot be used as source-expr at %LThe leftmost part-ref in a data-ref cannot be a function reference at %CThe lower bound for a buffer to be considered for stack smashing protection.The max number of reload pseudos which are considered during spilling a non-reload pseudo.The maximum amount of memory to be allocated by GCSE, in kilobytes.The maximum code size growth ratio when expanding into a jump table (in percent).  The parameter is used when optimizing for size.The maximum code size growth ratio when expanding into a jump table (in percent).  The parameter is used when optimizing for speed.The maximum conflict delay for an insn to be considered for speculative motion.The maximum depth of a loop nest to be unswitched.The maximum depth of a loop nest we completely peel.The maximum depth of a symbolic value, before approximating the value as unknown.The maximum depth of exploded nodes that should appear in a dot dump before switching to a less verbose format.The maximum depth of recursive inlining for inline functions.The maximum depth of recursive inlining for non-inline functions.The maximum expansion factor when copying basic blocks.The maximum factor which the loop vectorizer applies to the cost of statements in an inner loop relative to the loop being vectorized.The maximum instructions CSE process before flushing.The maximum length of a constant string for a builtin string cmp call eligible for inlining. The default value is 3.The maximum length of path considered in cse.The maximum length of scheduling's pending operations list.The maximum memory locations recorded by cselib.The maximum number of 'after supernode' exploded nodes within the analyzer per supernode, before terminating analysis.The maximum number of RTL nodes that can be recorded as combiner's last value.The maximum number of SSA_NAME assignments to follow in determining a value.The maximum number of backtrack attempts the scheduler should make when modulo scheduling a loop.The maximum number of blocks in a region to be considered for interblock scheduling.The maximum number of branches on the path through the peeled sequence.The maximum number of constraints per state.The maximum number of exploded nodes per program point within the analyzer, before terminating analysis of that point.The maximum number of incoming edges to consider for crossjumping.The maximum number of infeasible edges to reject before declaring a diagnostic as infeasible.The maximum number of insns combine tries to combine.The maximum number of insns in a region to be considered for interblock scheduling.The maximum number of insns in loop header duplicated by the copy loop headers pass.The maximum number of insns of a completely peeled loop.The maximum number of insns of a peeled loop.The maximum number of insns of an unswitched loop.The maximum number of insns to duplicate when unfactoring computed gotos.The maximum number of instructions in a single function eligible for inlining.The maximum number of instructions in an inner loop that is being considered for versioning.The maximum number of instructions in an outer loop that is being considered for versioning, on top of the instructions in inner loops.The maximum number of instructions inline function can grow to via recursive inlining.The maximum number of instructions non-inline function can grow to via recursive inlining.The maximum number of instructions ready to be issued to be considered by the scheduler during the first scheduling pass.The maximum number of instructions that combine searches in order to find the next use of a particular register.The maximum number of instructions to consider to fill a delay slot.The maximum number of instructions to consider to find accurate live register information.The maximum number of instructions to consider to unroll in a loop on average.The maximum number of instructions to consider to unroll in a loop.The maximum number of instructions to search backward when looking for equivalent reload.The maximum number of instructions when automatically inlining small functions.The maximum number of instructions when automatically inlining.The maximum number of instructions when inlining for size.The maximum number of iterations through CFG to extend regions.The maximum number of loop iterations we predict statically.The maximum number of nested indirect inlining performed by early inliner.The maximum number of peelings of a single loop that is peeled completely.The maximum number of peelings of a single loop.The maximum number of stmts in loop nest for loop interchange.The maximum number of times a callsite can appear in a call stack within the analyzer, before terminating analysis of a call that would recurse deeper.The maximum number of unrollings of a single loop.The maximum number of use and def visits when discovering a STV chain before the discovery is aborted.The maximum ratio between array size and switch branches for a switch conversion to take place.The maximum ratio of insertions to deletions of expressions in GCSE.The maximum recommended size of contiguous memory occupied by two objects accessed with temporal locality by concurrent threads.  Typically the L1 cache line size, but can be smaller to accommodate a variety of target processors with different cache line sizes.The maximum size of the lookahead window of selective scheduling.The minimal estimated speedup allowing inliner to ignore inline-insns-single and inline-insns-auto.The minimal probability of speculation success (in percents), so that speculative insn will be scheduled.The minimum UID to be used for a nondebug insn.The minimum constant stride beyond which we should use prefetch hints for.The minimum cost of an expensive expression in the loop invariant motion.The minimum number of matching instructions to consider for crossjumping.The minimum number of supernodes within a function for the analyzer to consider summarizing its effects at call sites.The minimum probability an edge must have for the scheduler to save its state across it.The minimum probability of reaching a source block for interblock speculative scheduling.The minimum recommended offset between two concurrently-accessed objects to avoid additional performance degradation due to contention introduced by the implementation.  Typically the L1 cache line size, but can be larger to accommodate a variety of target processors with different cache line sizes. C++17 code might use this value in structure layout, but is strongly discouraged from doing so in public ABIs.The minimum size of variables taking part in stack slot sharing when not optimizing.The minimum stride ratio for loop interchange to be profitable.The minimum threshold for probability of semi-invariant condition statement to trigger loop split.The minimum value of stage count that swing modulo scheduler will generate.The module or main program array %qs at %L must have constant shapeThe name %qs at %C has already been used as an external module nameThe name %qs cannot be used as a defined operator at %CThe number of Newton iterations for calculating the reciprocal for double type.  The precision of division is proportional to this param when division approximation is enabled.  The default value is 2.The number of Newton iterations for calculating the reciprocal for float type.  The precision of division is proportional to this param when division approximation is enabled.  The default value is 1.The number of array elements of the SUB argument to IMAGE_INDEX at %L shall be %d (corank) not %dThe number of bytes at which to ellipsize string literals in analyzer text art diagrams.The number of cycles the swing modulo scheduler considers when checking conflicts using DFA.The number of elements (%d) in the array constructor at %L requires an increase of the allowed %d upper limit.  See %<-fmax-array-constructor%> option.The number of elements for which hash table verification is done for each searched element.The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit.   See %<-fmax-array-constructor%> optionThe number of elements in the array constructor at %L requires an increase of the allowed %d upper limit.  See %<-fmax-array-constructor%> optionThe number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See %<-fmax-array-constructor%> optionThe number of executions of a basic block which is considered hot. The parameter is used only in GIMPLE FE.The number of insns executed before prefetch is completed.The number of literal bytes to show at the head of a string literal in text art when ellipsizing it.The number of literal bytes to show at the tail of a string literal in text art when ellipsizing it.The number of most executed permilles of the profiled execution of the entire program to which the execution count of a basic block must be part of in order to be considered hot (used in LTO mode).The number of prefetches that can run at the same time.The number of registers in each class kept unused by loop invariant motion.The object %qs at %L with ASSUMED type parameters must be a dummy or a SELECT TYPE selector(F08/4.2)The parameter expression at %C does not simplify to an INTEGER constantThe parameter expression at %C must be of INTEGER type and not %s typeThe path to devices.csv.  The GCC driver can normally locate devices.csv itself and pass this option to the compiler, so the user shouldn't need to pass this.The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is available.The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is not available.The pointer object %qs at %L must have an explicit function interface or be declared as arrayThe possible RVV vector register lengths:The possible SVE vector lengths:The possible TLS dialects:The rank of the element in the structure constructor at %L does not match that of the component (%d/%d)The register used to access the thread pointer:The resolution file.The same depend object should be used as DEPOBJ argument at %L and as DESTROY argument at %LThe scale (in percents) applied to inline-insns-single and auto limits when heuristics hints that inlining is very profitable.The shape of component %qs in the structure constructor at %L differs from the shape of the declared component for dimension %d (%ld/%ld)The size of L1 cache line.The size of L1 cache.The size of L2 cache.The size of function body to be considered large.The size of stack frame to be considered large.The size of translation unit that IPA-CP pass considers large.The size of translation unit to be considered large.The smallest number of different values for which it is best to use a jump-table instead of a tree of conditional branches, if 0, use the default for the machine.The source-expr at %L shall neither be of type EVENT_TYPE nor have a EVENT_TYPE component if allocate-object at %L is a coarrayThe source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarrayThe stat= argument at %L must be a kind=4 integer variableThe structure constructor at %L has been finalized. This feature was removed by f08/0011. Use -std=f2018 or -std=gnu to eliminate the finalization.The symbol %qs, referenced at %L, is not in the selected standardThe threshold ratio for performing partial redundancy elimination after reload.The threshold ratio of critical edges execution count that permit performing redundancy elimination after reload.The type %qs cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %LThe type for function %qs at %L is not accessibleThe type parameter in ALLOCATE statement with type-spec shall be an asterisk as allocate object %qs at %L is a dummy argument with assumed type parameterThe type parameter spec list at %C cannot contain both ASSUMED and DEFERRED parametersThe type parameter spec list at %C contains too many parameter expressionsThe type parameter spec list at %C does not contain enough parameter expressionsThe type parameter spec list in the type-spec at %L cannot contain DEFERRED parametersThe type-spec at %L shall specify that each length type parameter is assumedThe type-spec shall not specify a sequence derived type or a type with the BIND attribute in SELECT TYPE at %C [F2003:C815]The upper bound for sharing integer constants.The upper bound in the last dimension must appear in the reference to the assumed size array %qs at %LThe value for the KIND parameter %qs at %C does not reduce to a constant expressionThe value of n in %<-finit-character=n%> must be between 0 and 127The value of the PDT LEN parameter '%s' does not agree with that in the dummy declarationThe value of the SELECT RANK CASE expression at %C must not be less than zero or greater than %dThe version of the C++ ABI in use.The version of the C++ ABI used for -Wabi warnings and link compatibility aliases.There is already a procedure with binding name %qs for the derived type %qs at %CThere is no specific function for the generic %qs at %LThere is no specific subroutine for the generic %qs at %LThere's already a non-generic procedure with binding name %qs for the derived type %qs at %CThis architecture does not support branch protection instructionsThis includes explicit DEALLOCATE, reallocation on intrinsic assignment, INTENT(OUT) for allocatable dummy arguments, and reallocation of allocatable components allocated with an OpenMP allocatorThis is free software; see the source for copying conditions.  There is NO
  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  
  This is the default.This option is deprecated and has no effect.This option is deprecated; use -fplt or -fno-plt instead.This option is ignored; it is provided for compatibility purposes only.  This used to select linker and preprocessor options for use with newlib.This option is on per default in order to work around PR118012.This option is used internally for multilib generation and selection.  Assume RJMP / RCALL can target all program memory.This option is used internally for multilib generation and selection. The device has no SPH special function register.This option is used internally. Enable Read-Modify-Write (RMW) instructions support/use.This option is used internally. Indicate presence of a processor erratum.  Do not skip 32-bit instructions.This option is used internally. Set the number of 64 KiB flash segments.This option is used internally. The device has the bitfield NVMCTRL_CTRLB.FLMAP.This option lacks documentation.This switch is deprecated; do not use.This switch is deprecated; use -Werror=implicit-function-declaration instead.This switch is deprecated; use -Wextra instead.This switch is deprecated; use -fsanitize-recover= instead.This switch is deprecated; use -fsanitize-trap= instead.Thread model: %s
--- 2081,2087 ----
  Shape specification for allocatable scalar at %CShapes for operands at %L and %L are not conformableShapes of ORDER at %L and SHAPE at %L are differentShare slots for saving different hard registers.Share stack slots for spilled pseudo-registers.Shared DO termination label %d at %CShorten address references during linking.Show column numbers in diagnostics, when available.  Default on.Show events within system headers in analyzer execution paths.Show labels annotating ranges of source code when showing source.Show line numbers in the left margin when showing source.Show lines linking related events in diagnostic paths.Show stack depths of events in paths.Show the source line with a caret indicating the column.Shrink-wrap parts of the prologue and epilogue separately.Simplification errorSimplification of SPREAD at %C not yet implementedSize cut-off for callee including inlined calls to be cloned for a particular caller.Size in bytes after which thread-local aggregates should be instrumented with the logging functions instead of save/restore pairs.Size of %qs argument of %qs intrinsic at %L too small (%i/%i)Size of %qs argument of %qs intrinsic at %L too small (%wd/%ld)Size of the stack guard expressed as a power of two in bytes.Size of tiles for loop blocking.Size optimization level: 0:none 1:opportunistic 2: regalloc 3:drop align, -Os.Sizes of ORDER at %L and SHAPE at %L are differentSkip setting up RAX register when passing variable arguments.Small data area: none, sdata, use.Soft limit on number of memory insns per instruction group, giving lower priority to subsequent memory insns attempting to schedule in the same insn group. Frequently useful to prevent cache bank conflicts.  Default value is 1.Sorry, !$ACC DECLARE at %L is not allowed in BLOCK constructSorry, !$OMP allocate for COMMON block variable %qs at %L not supportedSorry, %s specifier at %L for assumed-size array %qs is not yet supportedSorry, Cray pointers and pointees such as %qs are not supported with !$OMP ALLOCATE at %LSorry, EQUIVALENCE object %qs not supported with !$OMP ALLOCATE at %LSorry, LOCAL specifier at %L for %qs of derived type with default initializer is not yet supportedSorry, allocatable/pointer components in polymorphic (CLASS) type coarrays at %L are unsupportedSorry, coindexed access to an unlimited polymorphic component at %L is not supportedSorry, coindexed access to an unlimited polymorphic object at %L is not supportedSorry, list item %qs at %L with allocatable components is not yet supported in %s clauseSorry, only support for integer kind %d implemented for image-set at %LSorry, polymorphic arrays not yet supported for firstprivateSorry, structure-element list item at %L in ALLOCATE directive is not yet supportedSorry, the event component of derived type at %L is not yet supportedSorry, the lock component of derived type at %L is not yet supportedSort the symbols according to size.Sort the symbols alphabetically.Source-expr at %L and allocate-object at %L must have the same shapeSource-expr at %L must be scalar or have the same rank as the allocate-object at %LSpecification function %qs at %L cannot be RECURSIVESpecification function %qs at %L cannot be a statement functionSpecification function %qs at %L cannot be an internal functionSpecification function %qs at %L must be PURESpecifies bit size of immediate TLS offsets.  Valid values are 12, 24, 32, 48.Specifies the number of registers replicated in second register bank on entry to fast interrupt.Specifies the number of registers to reserve for interrupt handlers.Specifies the registers that the processor saves on an interrupt entry and exit.Specifies whether interrupt functions should save and restore the accumulator register.Specifies whether the fence.tso instruction should be used.Specify CPU for code generation purposes.Specify CPU for scheduling purposes.Specify CPU for scheduling purposes.  Valid arguments are 700, 7100, 7100LC, 7200, 7300, and 8000.Specify TLS dialect.Specify UNIX standard for predefines and linking.Specify a file to which a list of files output by LTRANS is written.Specify a fpu configuration value from 0 to 7; 0-3 is as FPU spec says, and 4-7 is corresponding to 0-3.Specify a plugin to load.Specify alignment of structure fields default/natural.Specify an ABI.Specify bit size of immediate TLS offsets.Specify cache flush function.Specify cache flush trap number.Specify configuration of instruction mul: fast1, fast2 or slow. The default is fast1.Specify default OpenACC compute dimensions.Specify how many read/write ports for n9/n10 cores.  The value should be 3r2w or 2r1w.Specify how to access the thread pointer.Specify how to print any control-flow path associated with a diagnostic.Specify if floating point hardware should be used.Specify integer and floating-point calling convention.Specify main object for TPF-OS.Specify maximum error replay depth during recursive diagnosis of a constraint satisfaction failure.Specify memcpy expansion strategy when expected size is known.Specify memset expansion strategy when expected size is known.Specify name for 32 bit signed division function.Specify range of registers to make fixed.Specify scheduling priority for dispatch slot restricted insns.Specify size of .local memory used for stack when the exact amount is not known.Specify stringop expansion strategy.Specify that an external BLAS library should be used for matmul calls on large-size arrays.Specify that backslash in string introduces an escape character.Specify that no implicit typing is allowed, unless overridden by explicit IMPLICIT statements.Specify that the compiler should target secure code as per ARMv8-M Security Extensions.Specify the ISA to build for: msp430, msp430x, msp430xv2.Specify the MCU to build for.Specify the PTX ISA target architecture to use.Specify the PTX ISA version to use.Specify the __fp16 floating-point format.Specify the address generation strategy for ICT call's code model.Specify the address generation strategy for code model.Specify the algorithm to partition symbols and vars at linktime.Specify the code model used for accessing memory addresses.  Specifying large enables generating binaries with large global offset tables.  By default the value is small.Specify the code model.Specify the compact branch usage policy.Specify the cpu for pipeline model.Specify the memory model in effect for the program.Specify the minimum bit alignment of structures. (Deprecated).Specify the model for atomic operations.Specify the name of the target CPU.Specify the name of the target GPU.Specify the name of the target architecture.Specify the name of the target floating point configuration.Specify the name of the target floating point hardware/format.Specify the register to be used for PIC addressing.Specify the security level of c-isr for the whole file.Specify the size of each cache block, which must be a power of 2 between 4 and 512.Specify the size of each interrupt vector, which must be 4 or 16.Specify the target CPU.Specify the target RX cpu type.Specify the target architecture.Specify the target floating-point hardware/format.Specify the target processor.Specify the thread pointer register.Specify the type of hardware multiply to support.Specify thread local storage scheme.Specify thread pointer register number.Specify use soft floating point ABI which mean alias to -mabi=2.Specify use soft floating point ABI which mean alias to -mabi=2fp+.Specify when to enable an early register allocation pass.  The possibilities are: all functions, functions that have access to strided multi-register instructions, and no functions.Specify where to find the compiled intrinsic modules.Specify whether functions should be placed into the lower or upper memory regions, or if they should be shuffled between the regions (either) for best fit (default: lower).Specify whether variables should be placed into the lower or upper memory regions, or if they should be shuffled between the regions (either) for best fit (default: lower).Specify which ABI to use for Objective-C family code and meta-data generation.Specify which ABI type to generate code for: 2, 2fp+.Specify which post scheduling nop insertion scheme to apply.Specifying VOLATILE for coarray variable %qs at %C, which is use-/host-associatedSplit 32-byte AVX unaligned load.Split 32-byte AVX unaligned store.Split lifetimes of induction variables when loops are unrolled.Split paths leading to loop backedges.Split unaligned 8 byte vector moves before post-modify address generation.Split wide types into independent registers earlier.Split wide types into independent registers.Stack frame larger than 2G is not supported for %<-fsplit-stack%>Stack realignment not supported with %<__builtin_eh_return%>Start expression in DO loopStat-variable at %L must be a scalar INTEGER variableStat-variable at %L shall not be %sd within the same %s statementStatement at %L is not a valid branch target statement for the branch statement at %LStatement function %qs at %L conflicts with function nameStatement function %qs at %L is not allowed as an actual argumentStatement function %qs at %L may not have pointer or allocatable attributeStatement function %qs is invalid in procedure pointer assignment at %LStatement function %qs requires argument list at %CStatement function at %CStatement function at %L cannot appear within an INTERFACEStatement function at %L is recursiveStatement label at %C is zeroStatement label in END CRITICAL at %C does not match CRITICAL labelStatement label in ENDDO at %C doesn't match DO labelStatement label list in GOTO at %C cannot be emptyStatement label without statement at %LStatically link the GCC Quad-Precision Math Library (libquadmath).Statically link the GNU Fortran helper library (libgfortran).Step expression in DO loopStep expression in DO loop at %L cannot be zeroStop exploring an execution path after certain diagnostics.Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is available.Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is not available.Stop reverse growth if the reverse probability of best edge is less than this threshold (in percent).Store all argument registers on the stack.Store doubles in 64 bits.Store function names in object code.Stores doubles in 32 bits.  This is the default.Stores the MDUC registers in interrupt handlers for G13 target.Stream extra data to support more aggressive devirtualization in LTO local transformation mode.Stride must not be present at %LStride should not be specified for array section in %s clause at %LStrides not allowed in coarray subscript at %CString length at %L is too largeStructure component %qs at %L cannot be an EQUIVALENCE objectStructure constructor with missing optional arguments at %CStructure constructor with named arguments at %CStructure name %qs at %C cannot be the same as an intrinsic typeStructure name expected after RECORD at %CStructure name expected in non-nested structure declaration at %CStructure-component expression at %L in %qs directive not permitted in declarative directive; as directive associated with an ALLOCATE stmt it must be preceded by an executable statement or OpenMP constructStructured format for output dependency information.  Supported ("p1689r5").Subroutine %qs at %L is INTRINSIC but is not compatible with an intrinsicSubroutine call at %L in a DO CONCURRENT block is not PURESubroutine call to %qs at %L is not PURESubroutine call to %qs in DO CONCURRENT block at %L is not PURESubroutine call to %qs in FORALL block at %L is not PURESubroutine call to intrinsic %qs at %L is not PURESubroutine call to intrinsic %qs in DO CONCURRENT block at %L is not PURESubroutine call with alternate returns in INITIALIZER clause of !$OMP DECLARE REDUCTION at %LSubroutine call with alternate returns in combiner of !$OMP DECLARE REDUCTION at %LSubscript at %L above array upper bound (%ld > %ld) in dimension %dSubscript at %L below array lower bound (%ld < %ld) in dimension %dSubstring at %L has length zeroSubstring end index (%td) at %L exceeds string lengthSubstring end index at %L exceeds the string lengthSubstring end index at %L is too largeSubstring end index at %L must be of type INTEGERSubstring end index at %L must be scalarSubstring start index (%td) at %L below 1Substring start index at %L is less than oneSubstring start index at %L must be of type INTEGERSubstring start index at %L must be scalarSubstring starting and ending points of target specification at %L must be constant expressionsSuggest that the override keyword be used when the declaration of a virtual function overrides another.Sum of array rank %d and corank %d at %C exceeds maximum allowed dimensions of %dSum of second and third arguments of IBITS exceeds bit size at %LSupply a list of objects to be linked from a file, rather than the command line.Support 3DNow! built-in functions.Support 512 bit vector built-in functions and code generation.Support AES built-in functions and code generation.Support AMX-BF16 built-in functions and code generation.Support AMX-COMPLEX built-in functions and code generation.Support AMX-FP16 built-in functions and code generation.Support AMX-FP8 built-in functions and code generation.Support AMX-INT8 built-in functions and code generation.Support AMX-MOVRS built-in functions and code generation.Support AMX-TF32 built-in functions and code generation.Support AMX-TILE built-in functions and code generation.Support AMX-TRANSPOSE built-in functions and code generation.Support AVX512VNNI built-in functions and code generation.Support AVX512VP2INTERSECT built-in functions and code generation.Support Athlon 3Dnow! built-in functions.Support BMI built-in functions and code generation.Support BMI2 built-in functions and code generation.Support C++17 allocation of over-aligned types.Support CLDEMOTE built-in functions and code generation.Support CLFLUSHOPT instructions.Support CLWB instruction.Support CLZERO built-in functions and code generation.Support ENQCMD built-in functions and code generation.Support F16C built-in functions and code generation.Support FMA4 built-in functions and code generation.Support FSGSBASE built-in functions and code generation.Support FXSAVE and FXRSTOR instructions.Support GFNI built-in functions and code generation.Support HRESET built-in functions and code generation.Support Hardware Lock Elision prefixes.Support KL built-in functions and code generation.Support LWP built-in functions and code generation.Support LZCNT built-in function and code generation.Support MMX and SSE built-in functions and code generation.Support MMX built-in functions.Support MMX, SSE and SSE2 built-in functions and code generation.Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3 and SSE4A built-in functions and code generation.Support MMX, SSE, SSE2, SSE3 and SSSE3 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and SHA512 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and SM3 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and SM4 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512BW built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512CD built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512DQ built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512IFMA built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VBMI built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VL built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVXVNNIINT16 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVXVNNIINT8 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX10.1-512 and AVX10.2 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX10.1-512, AVX10.2 and AMX-AVX512 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512-FP16 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512BF16 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512BITALG built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VBMI2 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VPOPCNTDQ built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVX10.1-256 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVX10.1-512 built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVXIFMA built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVXNECONVERT build-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVXVNNI built-in functions and code generation.Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and CMPCCXADD build-in functions and code generation.Support MOVDIR64B built-in functions and code generation.Support MOVDIRI built-in functions and code generation.Support MOVRS built-in functions and code generation.Support MWAIT and MONITOR built-in functions and code generation.Support MWAITX and MONITORX built-in functions and code generation.Support PCLMUL built-in functions and code generation.Support PCONFIG built-in functions and code generation.Support PKU built-in functions and code generation.Support PREFETCHI built-in functions and code generation.Support PREFETCHW instruction.Support PTWRITE built-in functions and code generation.Support RAOINT built-in functions and code generation.Support RDPID built-in functions and code generation.Support RDRND built-in functions and code generation.Support RDSEED instruction.Support RTM built-in functions and code generation.Support SERIALIZE built-in functions and code generation.Support SGX built-in functions and code generation.Support SHA1 and SHA256 built-in functions and code generation.Support TBM built-in functions and code generation.Support TLS segment larger than 64K.Support TSXLDTRK built-in functions and code generation.Support UINTR built-in functions and code generation.Support USER_MSR built-in functions and code generation.Support VAES built-in functions and code generation.Support VPCLMULQDQ built-in functions and code generation.Support WAITPKG built-in functions and code generation.Support WBNOINVD built-in functions and code generation.Support WIDEKL built-in functions and code generation.Support XOP built-in functions and code generation.Support XSAVE and XRSTOR instructions.Support XSAVEC instructions.Support XSAVEOPT instruction.Support XSAVES and XRSTORS instructions.Support alignments of up to 64-bits.Support amcas[_db].{b/h/w/d} instructions.Support am{swap/add}[_db].{b/h} instructions.Support calls between Thumb and ARM instruction sets.Support code generation for APX features, including EGPR, PUSH2POP2, NDD, PPX, NF, CCMP and ZU.Support code generation of Advanced Bit Manipulation (ABM) instructions.Support code generation of cmpxchg16b instruction.Support code generation of crc32 instruction.Support code generation of movbe instruction.Support code generation of popcnt instruction.Support code generation of sahf instruction in 64bit x86-64 code.Support div.w[u] and mod.w[u] instructions with inputs not sign-extended.Support dynamic initialization of thread-local variables in a different translation unit.Support flag-preserving add-carry instructions.Support for the A argument at %L which is polymorphic A argument or has allocatable components is not yet implementedSupport for the A argument at %L with allocatable components is not yet implementedSupport frecipe.{s/d} and frsqrte.{s/d} instructions.Support legacy multi-threading.Support message passing with the Parallel Environment.Support more than 8192 GOT entries on ColdFire.Support multi-threading.Support synchronous non-call exceptions.Supported AArch64 return address signing scope (for use with -msign-return-address= option):Supported ABIs (for use with the -mabi= option):Supported ISA specs (for use with the -misa-spec= option):Supported LTO compression algorithms: zlibSuppress output of addresses in debugging dumps.Suppress output of instruction numbers, line number notes and addresses in debugging dumps.Suppress output of previous and next insn numbers in debugging dumps.Suppress warnings.Switch ARM/Thumb modes on alternating functions for compiler testing.Switch on/off MIPS16 ASE on alternating functions for compiler testing.Switches off the -mstack-guard= option.Switches off the -mstack-size= option.Symbol %qs already declaredSymbol %qs at %C already declaredSymbol %qs at %C also declared as a type at %LSymbol %qs at %C has already been host associatedSymbol %qs at %C has no IMPLICIT typeSymbol %qs at %C has not been previously definedSymbol %qs at %C is USE associated from module %qs and cannot occur in COMMONSymbol %qs at %C is already in a COMMON blockSymbol %qs at %C is ambiguousSymbol %qs at %C must be a NAMELIST group nameSymbol %qs at %L already has an explicit interfaceSymbol %qs at %L already has basic type of %sSymbol %qs at %L cannot have a typeSymbol %qs at %L conflicts with symbol from module %qs, use-associated at %LSymbol %qs at %L conflicts with the rename symbol at %LSymbol %qs at %L conflicts with the symbol at %LSymbol %qs at %L has no IMPLICIT typeSymbol %qs at %L has no IMPLICIT type; did you mean %qs?Symbol %qs at %L has the WEAK attribute but is a dummy argumentSymbol %qs at %L has the WEAK attribute but is a local variableSymbol %qs at %L is ambiguousSymbol %qs at %L is declared in a BLOCK DATA program unit but is not in a COMMON blockSymbol %qs at %L is marked PRIVATE but has been given the binding label %qsSymbol %qs has mixed component and non-component accesses at %LSymbol %qs in COMMON at %C cannot be a POINTER arraySymbol %qs in COMMON at %C cannot be a coarraySymbol %qs in namelist %qs at %C must be declared before the namelist is declared.Symbol %qs in namelist %qs is INTENT(IN) at %CSymbol %qs is used before it is typed at %LSymbol %qs must be a PARAMETER in DATA statement at %CSymbol %qs present on both FROM and TO clauses at %LSymbol %qs present on both data and map clauses at %LSymbol %qs present on multiple clauses at %LSymbol %qs referenced at %L not found in intrinsic module ISO_C_BINDINGSymbol %qs referenced at %L not found in intrinsic module ISO_FORTRAN_ENVSymbol %qs referenced at %L not found in module %qsSymbol %qs, in COMMON block %qs at %C is being indirectly equivalenced to another COMMON block %qsSymbol at %C is not appropriate for an expressionSymbol at %L is not a DUMMY variableSynonym for "-export-dynamic" for linker versions that support it.Synonym for "image_base".Synonym for -Wcomment.Synonym of -gnatk8.Syntax error in !$ACC DECLARE list at %CSyntax error in !$ACC ROUTINE ( NAME ) at %CSyntax error in !$ACC ROUTINE ( NAME ) at %C, expecting %<)%> after NAMESyntax error in !$OMP DECLARE TARGET list at %CSyntax error in !$OMP THREADPRIVATE list at %CSyntax error in !GCC$ ATTRIBUTES statement at %CSyntax error in !GCC$ IVDEP directive at %CSyntax error in !GCC$ NOVECTOR directive at %CSyntax error in !GCC$ UNROLL directive at %CSyntax error in !GCC$ VECTOR directive at %CSyntax error in %s statement at %CSyntax error in ABSTRACT INTERFACE statement at %CSyntax error in ASYNCHRONOUS statement at %CSyntax error in AUTOMATIC statement at %CSyntax error in CASE specification at %CSyntax error in CHARACTER declaration at %CSyntax error in CLASS IS specification at %CSyntax error in COMPLEX constant at %CSyntax error in ELSE IF statement after %LSyntax error in ENUMERATOR definition at %CSyntax error in EQUIVALENCE statement at %LSyntax error in FORALL iterator at %CSyntax error in I/O iterator at %CSyntax error in IF-clause after %CSyntax error in IF-expression at %CSyntax error in IMPORT statement at %CSyntax error in NAME= specifier for binding label at %CSyntax error in OpenACC expression list at %CSyntax error in OpenMP SINK dependence-type list at %CSyntax error in OpenMP detach clause at %CSyntax error in OpenMP expression list at %CSyntax error in OpenMP variable list at %CSyntax error in PROCEDURE statement at %CSyntax error in PROTECTED statement at %CSyntax error in RANK specification at %CSyntax error in SAVE statement at %CSyntax error in STATIC statement at %CSyntax error in SUBMODULE statement at %CSyntax error in SUBSTRING specification at %CSyntax error in TYPE IS specification at %CSyntax error in VALUE statement at %CSyntax error in VOLATILE statement at %CSyntax error in anonymous structure declaration at %CSyntax error in argument list at %CSyntax error in array constructor at %CSyntax error in character length specification at %CSyntax error in common block name at %CSyntax error in data declaration at %CSyntax error in expression at %CSyntax error in generic specification at %CSyntax error in iterator at %CSyntax error in nested structure declaration at %CSyntax error in old style initialization of %s at %CSyntax error in old style initializer list at %CSyntax error in procedure pointer component at %CSyntax error: Trailing garbage in END INTERFACE statement at %CSyntax error: Trailing garbage in INTERFACE statement at %CTARGET DATA must contain at least one MAP, USE_DEVICE_PTR, or USE_DEVICE_ADDR clause at %LTARGET ENTER DATA with map-type other than TO, TOFROM or ALLOC on MAP clause at %LTARGET EXIT DATA with map-type other than FROM, TOFROM, RELEASE, or DELETE on MAP clause at %LTARGET%s with map-type other than TO, FROM, TOFROM, or ALLOC on MAP clause at %LTEAM NUMBER argument to FORM TEAM at %L must be a scalar INTEGERTEAM argument at %L must be of TEAM_TYPE from the intrinsic module ISO_FORTRAN_ENV, found %sTEAM argument at %L must be scalarTEAM argument at %L to the intrinsic TEAM_NUMBER shall be of type TEAM_TYPETEAM argument to %qs at %L must be a scalar expression of type TEAM_TYPETEAM_NUMBER argument at %L must be of INTEGER type, found %sTEAM_NUMBER argument at %L must be scalarTEAM_NUMBER= not supported at %CTHREADPRIVATE object %qs in %s clause at %LTHREADPRIVATE object %qs in SHARED clause at %LTILE construct at %L generates %d loops with canonical form but %d loops are neededTILE requires constant expression at %LTLS dialect to use:TLS is not implemented for GCN.TODO: type-bound defined assignment(s) at %L not done because multiple part array references would occur in intermediate expressions.TODO: unlimited polymorphic MOLD in TRANSFER intrinsic at %LTOPOS argument (%ld) out of range 0:%d in intrinsic MVBITSTOPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsic MVBITSTYPE IS at %L overlaps with TYPE IS at %LTYPE with intrinsic-type-spec at %CTake advantage of linker relaxations to reduce the number of instructions required to materialize symbol addresses.Taken at least once:%s of %d
  Takes two non-negative integer numbers separated by a comma. Prepend the function label with the number of two-byte Nop instructions indicated by the first.  Append Nop instructions covering the number of halfwords indicated by the second after the label.  Nop instructions of the largest possible size are used (six, four or two bytes), beginning with the largest possible size.  Using 0 for both values disables hotpatching.Target block's relative execution frequency (as a percentage) required to sink a statement.Target expression in pointer assignment at %L must deliver a pointer resultTarget has split I&D.Target of rank remapping is too small (%ld < %ld)Target the AM33 processor.Target the AM33/2.0 processor.Target the AM34 processor.Target the FT32B architecture.Target the software simulator.Target: %s
  Tell DCE to remove unused C++ allocations.Tell DSE that the storage for a C++ object is dead when the constructor starts and when the destructor finishes.The %<-mfloat128%> option may not be fully supportedThe %s argument at %L has type %s but the function passed as OPERATION at %L returns %sThe %s directive cannot be specified within a %s region at %LThe A argument at %L of CO_REDUCE shall not be polymorphicThe A argument at %L to the intrinsic %s shall not be coindexedThe ARRAY argument at %L of REDUCE shall not be polymorphicThe AUTOMATIC object %qs at %L must not have the SAVE attribute or be a variable declared in the main program, a module or a submodule(F08/C513)The CHARACTER elements of the array constructor at %L must have the same length (%ld/%ld)The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %LThe DIM argument at %L, if present, must be an integer scalarThe DISTANCE argument may not be specified together with the COARRAY or DIM argument in intrinsic at %LThe FORALL with index %qs is not used on the left side of the assignment at %L and so might cause multiple assignment to this objectThe FROM and TO arguments at %L violate aliasing restrictions (F2003 12.4.1.7)The FROM and TO arguments of the MOVE_ALLOC intrinsic at %L must have the same corank %d/%dThe FROM and TO arguments of the MOVE_ALLOC intrinsic at %L must have the same rank %d/%dThe FROM argument to MOVE_ALLOC at %L shall not be coindexedThe H format specifier at %L is a Fortran 95 deleted featureThe Hollerith constant at %L is truncated in conversion to %qsThe IDENTITY argument at %L, if present, must be a scalar with the same type as ARRAYThe INTENT(OUT) dummy argument %qs at %L is ASSUMED SIZE and so cannot have a default initializerThe KIND parameter %qs at %C cannot either be ASSUMED or DEFERREDThe KIND parameter %qs in the PDT constructor at %C has no valueThe KIND part_ref at %C must be applied to an expression of intrinsic typeThe LEN part_ref at %C must be applied to a CHARACTER expressionThe MASK argument at %L, if present, must be a logical array with the same rank as ARRAYThe NULL in the structure constructor at %L is being applied to component %qs, which is neither a POINTER nor ALLOCATABLEThe ORDERED argument at %L, if present, must be a logical scalarThe RE or IM part_ref at %C must be applied to a COMPLEX expressionThe RVV possible LMUL (-mrvv-max-lmul=):The SELECT RANK CASE expression at %C must be a scalar, integer constantThe SELECT RANK selector at %C must be an assumed rank variableThe SHAPE array for the RESHAPE intrinsic at %L has a negative value %d for dimension %dThe STATUS specified in OPEN statement at %L cannot have the value SCRATCH if a FILE specifier is presentThe STATUS specified in OPEN statement at %L is %qs and no FILE specifier is presentThe TO argument to MOVE_ALLOC at %L shall not be coindexedThe TO arguments in MOVE_ALLOC at %L must be polymorphic if FROM is polymorphicThe absolute value of SHIFT at %L must be less than or equal to BIT_SIZE(%qs)The absolute value of SHIFT at %L must be less than or equal to SIZE at %LThe allocatable object %qs at %L must have an explicit function interface or be declared as arrayThe allocate-object at %L and the source-expr at %L shall have the same kind type parameterThe argument list functions %%VAL, %%LOC or %%REF are not allowed in this context at %LThe argument of the RANK intrinsic at %L must be a data objectThe assignment to a KIND or LEN component of a parameterized type at %L is not allowedThe associate name %s with an assumed rank target at %L must have a bounds remapping list (list of lbound:ubound for each dimension)The assumed rank data-target at %L must be contiguousThe assumed rank target at %C must be contiguousThe assumed rank target at %L is an experimental F202y feature. Use option -std=f202y to enableThe assumed-rank array %qs at %L shall not have a codimensionThe assumed-rank array at %C shall not have a codimensionThe assumed-rank array at %L requires that the dummy argument %qs has assumed-rankThe assumed-size dummy %qs is being passed at %L to an assumed-rank dummy %qsThe base name at %L does not match the name of the current procedureThe base name at %L must not be a generic nameThe base name at %L must not be a procedure pointerThe base name at %L must not be an entry nameThe base name for %<declare variant%> must be specified at %LThe base procedure at %L must have an explicit interfaceThe bounds remapping list at %C is an experimental F202y feature. Use std=f202y to enableThe bug is not reproducible, so it is likely a hardware or OS problem.
! The character constant at %L is truncated in conversion to %sThe character length of the %s argument at %L and of the arguments of the OPERATION at %L shall be the sameThe character length of the %s argument at %L and of the function result of the OPERATION at %L shall be the sameThe code model option names for -mcmodel:The code model option names for -mexplicit-relocs:The component at %C that appears in the type parameter list at %L has neither the KIND nor LEN attributeThe component at %C which is a type parameter must be a scalarThe component with KIND or LEN attribute at %C does not not appear in the type parameter list at %LThe data-target at %L is an assumed rank object and so the data-pointer-object %s must have a bounds remapping list (list of lbound:ubound for each dimension)The default (and opposite of -static), implied by user mode executables, shared libraries and bundles.The denominator n of fraction 1/n of the execution frequency of callee to be cloned for a particular caller. Special value of 0 dictates to always clone without a cut-off.The denominator n of fraction 1/n of the execution frequency of the entry block of a function that a basic block of this function needs to at least have in order to be considered hot.The denominator n of fraction 1/n of the maximal execution count of a basic block in the entire program that a basic block needs to at least have in order to be considered hot (used in non-LTO mode).The denominator n of fraction 1/n of the number of profiled runs of the entire program below which the execution count of a basic block must be in order for the basic block to be considered unlikely.The derived parameter %qs at %C does not have a default valueThe derived type %qs at %L is of type %qs, which has not been definedThe device has the .rodata section located in the RAM area.The earliest macOS version on which this program will run (formatted for the assembler).The earliest macOS version on which this program will run.The element in the structure constructor at %L, for pointer component %qs should be a POINTER or a TARGETThe element in the structure constructor at %L, for pointer component %qs, is %s but should be %sThe equivalence set for %qs cause an invalid extension to COMMON %qs at %LThe equivalence set for variable %qs declared at %L violates alignment requirementsThe errmsg= argument at %L must be a default-kind character variableThe event handle at %L must not be an array elementThe event handle at %L must not be part of a derived type or classThe event variable at %L shall not be coindexedThe file pointer should not be nullThe following options are language-independentThe following options are language-relatedThe following options are not documentedThe following options are specific to just the language The following options are supported by the language The following options are target specificThe following options control compiler warning messagesThe following options control optimizationsThe following options control parametersThe following options take joined argumentsThe following options take separate argumentsThe function passed as OPERATION at %L has arguments of type %s and %s but shall have type %sThe function passed as OPERATION at %L shall have scalar nonallocatable nonpointer arguments and return a nonallocatable nonpointer scalarThe function passed as OPERATION at %L shall have the ASYNCHRONOUS attribute either for none or both argumentsThe function passed as OPERATION at %L shall have the TARGET attribute either for none or both argumentsThe function passed as OPERATION at %L shall have the VALUE attribute either for none or both argumentsThe function passed as OPERATION at %L shall have two argumentsThe function passed as OPERATION at %L shall not have the OPTIONAL attribute for either of the argumentsThe function result on the lhs of the assignment at %L must have the pointer attribute.The given type is NULL, and that is just not fairThe given type is not a declaration or a TYPEThe ideal width in characters of text art diagrams generated by the analyzer.The intrinsic %qs at %L is not included in the selected standard but %s and %qs will be treated as if declared EXTERNAL.  Use an appropriate %<-std=%> option or define %<-fall-intrinsics%> to allow this intrinsic.The intrinsic %qs declared INTRINSIC at %L is not available in the current standard settings but %s. Use an appropriate %<-std=*%> option or enable %<-fall-intrinsics%> in order to use it.The intrinsic NULL cannot be used as source-expr at %LThe leftmost part-ref in a data-ref cannot be a function reference at %CThe lower bound for a buffer to be considered for stack smashing protection.The max number of reload pseudos which are considered during spilling a non-reload pseudo.The maximum amount of memory to be allocated by GCSE, in kilobytes.The maximum code size growth ratio when expanding into a jump table (in percent).  The parameter is used when optimizing for size.The maximum code size growth ratio when expanding into a jump table (in percent).  The parameter is used when optimizing for speed.The maximum conflict delay for an insn to be considered for speculative motion.The maximum depth of a loop nest to be unswitched.The maximum depth of a loop nest we completely peel.The maximum depth of a symbolic value, before approximating the value as unknown.The maximum depth of exploded nodes that should appear in a dot dump before switching to a less verbose format.The maximum depth of recursive inlining for inline functions.The maximum depth of recursive inlining for non-inline functions.The maximum expansion factor when copying basic blocks.The maximum factor which the loop vectorizer applies to the cost of statements in an inner loop relative to the loop being vectorized.The maximum instructions CSE process before flushing.The maximum length of a constant string for a builtin string cmp call eligible for inlining. The default value is 3.The maximum length of path considered in cse.The maximum length of scheduling's pending operations list.The maximum memory locations recorded by cselib.The maximum number of 'after supernode' exploded nodes within the analyzer per supernode, before terminating analysis.The maximum number of RTL nodes that can be recorded as combiner's last value.The maximum number of SSA_NAME assignments to follow in determining a value.The maximum number of backtrack attempts the scheduler should make when modulo scheduling a loop.The maximum number of blocks in a region to be considered for interblock scheduling.The maximum number of branches on the path through the peeled sequence.The maximum number of constraints per state.The maximum number of exploded nodes per program point within the analyzer, before terminating analysis of that point.The maximum number of incoming edges to consider for crossjumping.The maximum number of infeasible edges to reject before declaring a diagnostic as infeasible.The maximum number of insns combine tries to combine.The maximum number of insns in a region to be considered for interblock scheduling.The maximum number of insns in loop header duplicated by the copy loop headers pass.The maximum number of insns of a completely peeled loop.The maximum number of insns of a peeled loop.The maximum number of insns of an unswitched loop.The maximum number of insns to duplicate when unfactoring computed gotos.The maximum number of instructions in a single function eligible for inlining.The maximum number of instructions in an inner loop that is being considered for versioning.The maximum number of instructions in an outer loop that is being considered for versioning, on top of the instructions in inner loops.The maximum number of instructions inline function can grow to via recursive inlining.The maximum number of instructions non-inline function can grow to via recursive inlining.The maximum number of instructions ready to be issued to be considered by the scheduler during the first scheduling pass.The maximum number of instructions that combine searches in order to find the next use of a particular register.The maximum number of instructions to consider to fill a delay slot.The maximum number of instructions to consider to find accurate live register information.The maximum number of instructions to consider to unroll in a loop on average.The maximum number of instructions to consider to unroll in a loop.The maximum number of instructions to search backward when looking for equivalent reload.The maximum number of instructions when automatically inlining small functions.The maximum number of instructions when automatically inlining.The maximum number of instructions when inlining for size.The maximum number of iterations through CFG to extend regions.The maximum number of loop iterations we predict statically.The maximum number of nested indirect inlining performed by early inliner.The maximum number of peelings of a single loop that is peeled completely.The maximum number of peelings of a single loop.The maximum number of stmts in loop nest for loop interchange.The maximum number of times a callsite can appear in a call stack within the analyzer, before terminating analysis of a call that would recurse deeper.The maximum number of unrollings of a single loop.The maximum number of use and def visits when discovering a STV chain before the discovery is aborted.The maximum ratio between array size and switch branches for a switch conversion to take place.The maximum ratio of insertions to deletions of expressions in GCSE.The maximum recommended size of contiguous memory occupied by two objects accessed with temporal locality by concurrent threads.  Typically the L1 cache line size, but can be smaller to accommodate a variety of target processors with different cache line sizes.The maximum size of the lookahead window of selective scheduling.The minimal estimated speedup allowing inliner to ignore inline-insns-single and inline-insns-auto.The minimal probability of speculation success (in percents), so that speculative insn will be scheduled.The minimum UID to be used for a nondebug insn.The minimum constant stride beyond which we should use prefetch hints for.The minimum cost of an expensive expression in the loop invariant motion.The minimum number of matching instructions to consider for crossjumping.The minimum number of supernodes within a function for the analyzer to consider summarizing its effects at call sites.The minimum probability an edge must have for the scheduler to save its state across it.The minimum probability of reaching a source block for interblock speculative scheduling.The minimum recommended offset between two concurrently-accessed objects to avoid additional performance degradation due to contention introduced by the implementation.  Typically the L1 cache line size, but can be larger to accommodate a variety of target processors with different cache line sizes. C++17 code might use this value in structure layout, but is strongly discouraged from doing so in public ABIs.The minimum size of variables taking part in stack slot sharing when not optimizing.The minimum stride ratio for loop interchange to be profitable.The minimum threshold for probability of semi-invariant condition statement to trigger loop split.The minimum value of stage count that swing modulo scheduler will generate.The module or main program array %qs at %L must have constant shapeThe name %qs at %C has already been used as an external module nameThe name %qs cannot be used as a defined operator at %CThe number of Newton iterations for calculating the reciprocal for double type.  The precision of division is proportional to this param when division approximation is enabled.  The default value is 2.The number of Newton iterations for calculating the reciprocal for float type.  The precision of division is proportional to this param when division approximation is enabled.  The default value is 1.The number of array elements of the SUB argument to IMAGE_INDEX at %L shall be %d (corank) not %dThe number of bytes at which to ellipsize string literals in analyzer text art diagrams.The number of cycles the swing modulo scheduler considers when checking conflicts using DFA.The number of elements (%d) in the array constructor at %L requires an increase of the allowed %d upper limit.  See %<-fmax-array-constructor%> option.The number of elements for which hash table verification is done for each searched element.The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit.   See %<-fmax-array-constructor%> optionThe number of elements in the array constructor at %L requires an increase of the allowed %d upper limit.  See %<-fmax-array-constructor%> optionThe number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See %<-fmax-array-constructor%> optionThe number of executions of a basic block which is considered hot. The parameter is used only in GIMPLE FE.The number of insns executed before prefetch is completed.The number of literal bytes to show at the head of a string literal in text art when ellipsizing it.The number of literal bytes to show at the tail of a string literal in text art when ellipsizing it.The number of most executed permilles of the profiled execution of the entire program to which the execution count of a basic block must be part of in order to be considered hot (used in LTO mode).The number of prefetches that can run at the same time.The number of registers in each class kept unused by loop invariant motion.The object %qs at %L with ASSUMED type parameters must be a dummy or a SELECT TYPE selector(F08/4.2)The parameter expression at %C does not simplify to an INTEGER constantThe parameter expression at %C must be of INTEGER type and not %s typeThe path to devices.csv.  The GCC driver can normally locate devices.csv itself and pass this option to the compiler, so the user shouldn't need to pass this.The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is available.The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is not available.The pointer object %qs at %L must have an explicit function interface or be declared as arrayThe possible RVV vector register lengths:The possible SVE vector lengths:The possible TLS dialects:The rank of the element in the structure constructor at %L does not match that of the component (%d/%d)The register used to access the thread pointer:The resolution file.The same depend object should be used as DEPOBJ argument at %L and as DESTROY argument at %LThe scale (in percents) applied to inline-insns-single and auto limits when heuristics hints that inlining is very profitable.The shape of component %qs in the structure constructor at %L differs from the shape of the declared component for dimension %d (%ld/%ld)The size of L1 cache line.The size of L1 cache.The size of L2 cache.The size of function body to be considered large.The size of stack frame to be considered large.The size of translation unit that IPA-CP pass considers large.The size of translation unit to be considered large.The smallest number of different values for which it is best to use a jump-table instead of a tree of conditional branches, if 0, use the default for the machine.The source-expr at %L shall neither be of type EVENT_TYPE nor have a EVENT_TYPE component if allocate-object at %L is a coarrayThe source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarrayThe stat= argument at %L must be a kind=4 integer variableThe structure constructor at %L has been finalized. This feature was removed by f08/0011. Use -std=f2018 or -std=gnu to eliminate the finalization.The symbol %qs, referenced at %L, is not in the selected standardThe threshold ratio for performing partial redundancy elimination after reload.The threshold ratio of critical edges execution count that permit performing redundancy elimination after reload.The type %qs cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %LThe type for function %qs at %L is not accessibleThe type parameter in ALLOCATE statement with type-spec shall be an asterisk as allocate object %qs at %L is a dummy argument with assumed type parameterThe type parameter spec list at %C cannot contain both ASSUMED and DEFERRED parametersThe type parameter spec list at %C contains too many parameter expressionsThe type parameter spec list at %C does not contain enough parameter expressionsThe type parameter spec list in the type-spec at %L cannot contain DEFERRED parametersThe type-spec at %L shall specify that each length type parameter is assumedThe type-spec shall not specify a sequence derived type or a type with the BIND attribute in SELECT TYPE at %C [F2003:C815]The upper bound for sharing integer constants.The upper bound in the last dimension must appear in the reference to the assumed size array %qs at %LThe value for the KIND parameter %qs at %C does not reduce to a constant expressionThe value of n in %<-finit-character=n%> must be between 0 and 127The value of the PDT LEN parameter '%s' does not agree with that in the dummy declarationThe value of the SELECT RANK CASE expression at %C must not be less than zero or greater than %dThe version of the C++ ABI in use.The version of the C++ ABI used for -Wabi warnings and link compatibility aliases.There is already a procedure with binding name %qs for the derived type %qs at %CThere is no specific function for the generic %qs at %LThere is no specific subroutine for the generic %qs at %LThere's already a non-generic procedure with binding name %qs for the derived type %qs at %CThis architecture does not support branch protection instructionsThis includes explicit DEALLOCATE, reallocation on intrinsic assignment, INTENT(OUT) for allocatable dummy arguments, and reallocation of allocatable components allocated with an OpenMP allocatorThis is free software; see the source for copying conditions.  There is NO
  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  
  This is the default.This option is deprecated and has no effect.This option is deprecated; use -fplt or -fno-plt instead.This option is ignored; it is provided for compatibility purposes only.  This used to select linker and preprocessor options for use with newlib.This option is on per default in order to work around PR118012.This option is used internally for multilib generation and selection.  Assume RJMP / RCALL can target all program memory.This option is used internally for multilib generation and selection. The device has no SPH special function register.This option is used internally. Enable Read-Modify-Write (RMW) instructions support/use.This option is used internally. Indicate presence of a processor erratum.  Do not skip 32-bit instructions.This option is used internally. Set the number of 64 KiB flash segments.This option is used internally. The device has the bitfield NVMCTRL_CTRLB.FLMAP.This option lacks documentation.This switch is deprecated; do not use.This switch is deprecated; use -Werror=implicit-function-declaration instead.This switch is deprecated; use -Wextra instead.This switch is deprecated; use -fsanitize-recover= instead.This switch is deprecated; use -fsanitize-trap= instead.Thread model: %s
*************** warranty; not even for MERCHANTABILITY o
*** 2113,2123 ****
  Using faster switch lowering algorithms. Number of switch cases (%d) exceeds %<--param=switch-lower-slow-alg-max-cases=%d%> limit.Using function %qs at %L is deprecatedUsing parameter %qs declared at %L is deprecatedUsing subroutine %qs at %L is deprecatedUsing variable %qs at %L is deprecatedUsually "private extern" (hidden) symbols are made local when linking, this command suppresses that such that they remain exported.VALUE argument of the %s intrinsic function at %L shall be definableVALUE attribute at %CVALUE is not allowed inside of BLOCK at %CVALUE object %qs in %s clause at %LVALUE statement at %CVALUES argument of DATE_AND_TIME at %L has non-default kindVALUES argument of DATE_AND_TIME at %L must have a decimal exponent range of at least fourVOIDmode on an outputVOLATILE attribute at %CVOLATILE attribute at %L cannot be specified in a PURE procedureVOLATILE attribute not permitted for %qs in REDUCE locality-spec at %LVOLATILE statement at %CValid ISA versions (for use with the -mcpu= option)Valid arguments for the -msdata= option:Valid arguments to -malign-:Valid arguments to -mcode-readable=:Valid arguments to -mfpmath=:Valid arguments to -mr10k-cache-barrier=:Valid arguments to -mstack-protector-guard=:Valid arguments to -mstringop-strategy=:Valid arguments to -mtp=:Valid arguments to -param=vsetvl-strategy=:Validate vtable pointers before using them.Value of HINT clause at %L shall be a valid constant hint expressionVariable %qs at %C cannot be redefined inside loop beginning at %LVariable %qs at %C with an initializer already appears in a DATA statementVariable %qs at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scopeVariable %qs at %L cannot have both the ALLOCATABLE and BIND(C) attributesVariable %qs at %L cannot have both the OPTIONAL and the VALUE attribute because procedure %qs is BIND(C)Variable %qs at %L cannot have both the POINTER and BIND(C) attributesVariable %qs at %L has already been specified in a locality-specVariable %qs at %L has not been assigned a format labelVariable %qs at %L in common block %qs at %C must be declared with a C interoperable kind since common block %qs is bind(c)Variable %qs at %L in this context must be constantVariable %qs at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray componentsVariable %qs at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy argumentVariable %qs at %L is a dummy argument of the BIND(C) procedure %qs but may not be C interoperableVariable %qs at %L is a dummy argument to the BIND(C) procedure %qs but is not C interoperable because derived type %qs is not C interoperableVariable %qs at %L is a dummy argument to the BIND(C) procedure %qs but is not C interoperable because it is polymorphicVariable %qs at %L is in COMMON but only in BLOCK DATA initialization is allowedVariable %qs at %L may not be a C interoperable kind but it is BIND(C)Variable %qs at %L not definable inside loop beginning at %L as INTENT(INOUT) argument to function %qsVariable %qs at %L not definable inside loop beginning at %L as INTENT(INOUT) argument to subroutine %qsVariable %qs at %L not specified in a locality spec of DO CONCURRENT at %L but required due to DEFAULT (NONE)Variable %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarrayVariable %qs at %L set to undefined value inside loop beginning at %L as INTENT(OUT) argument to function %qsVariable %qs at %L set to undefined value inside loop beginning at %L as INTENT(OUT) argument to subroutine %qsVariable %qs at %L with ALLOCATABLE attribute in procedure %qs with BIND(C)Variable %qs at %L with OPTIONAL attribute in procedure %qs which is BIND(C)Variable %qs at %L with POINTER attribute in procedure %qs with BIND(C)Variable %qs at %L with coarray component shall be a nonpointer, nonallocatable scalar, which is not a coarrayVariable %qs cannot appear in a variable definition context (%s) at %L in PURE procedureVariable %qs cannot appear in the expression at %LVariable %qs from module %qs with binding label %qs at %L uses the same global identifier as entity at %L from module %qsVariable %qs has not been assigned a target label at %LVariable %qs in %s clause is used in NAMELIST statement at %LVariable %qs in common block %qs at %C cannot be bind(c) since it is not globalVariable %qs in common block %qs at %C must be declared with a C interoperable kind since common block %qs is BIND(C)Variable %qs in common block %qs at %L cannot be declared with BIND(C) since it is not a globalVariable %qs in common block %qs at %L may not be a C interoperable kind though common block %qs is BIND(C)Variable %qs in locality-spec at %L is not usedVariable %qs is PROTECTED and cannot appear in a pointer association context (%s) at %LVariable %qs is PROTECTED and cannot appear in a variable definition context (%s) at %LVariable %qs is not a dummy argument at %LVariable %qs is used at %L before the ENTRY statement in which it is a parameterVariable %qs referenced in concurrent-header at %L must not appear in LOCAL locality-spec at %LVariable %qs shall be declared in the same scoping unit as !$ACC DECLARE at %LVariable %qs with binding label %qs at %L uses the same global identifier as entity at %LVariable %qs, used in a specification expression, is referenced at %L before the ENTRY statement in which it is a parameterVariable %s at %L of type EVENT_TYPE or with subcomponent of type EVENT_TYPE must be a coarrayVariable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarrayVariable %s at %L with NO_ARG_CHECK attribute may not have the ALLOCATABLE, CODIMENSION, POINTER or VALUE attributeVariable %s at %L with NO_ARG_CHECK attribute may not have the INTENT(OUT) attributeVariable %s at %L with NO_ARG_CHECK attribute may only be used as actual argumentVariable %s at %L with NO_ARG_CHECK attribute shall be a dummy argumentVariable %s at %L with NO_ARG_CHECK attribute shall be of type TYPE(*) or of an numeric intrinsic typeVariable %s at %L with NO_ARG_CHECK attribute shall either be a scalar or an assumed-size arrayVariable %s at %L with NO_ARG_CHECK attribute shall not have a subobject referenceVariable %s cannot be INTENT(IN) at %CVariable %s cannot be assigned in PURE procedure at %CVariable at %C is an element of a COMMON blockVariable at %L mentioned multiple times in clauses of the same OMP DECLARE TARGET directiveVariable in the ordinary assignment at %L is a procedure pointer componentVariable is USE-associated with !$ACC DECLARE at %LVariable other than OMP_OUT or OMP_IN used in combiner of !$OMP DECLARE REDUCTION at %LVariable other than OMP_PRIV or OMP_ORIG used in INITIALIZER clause of !$OMP DECLARE REDUCTION at %LVariable type is UNKNOWN in assignment at %LVariable with NO_ARG_CHECK attribute at %L is only permitted as argument to the intrinsic functions C_LOC and PRESENTVariants in a metadirective at %L have different associations; consider using a BLOCK constructVariants in a metadirective at %L have different associations; consider using a BLOCK construct or BEGIN/END METADIRECTIVEVector library ABI to use.Vector size conflicts between AVX10.1 and AVX512, using 512 as max vector sizeVectorize for double-word operations.Verify that paths are feasible when emitting diagnostics.Version loops based on whether indices have a stride of one.Virtual function multiversioning not supportedWAIT at %C not allowed in Fortran 95WAIT clause at %L requires a scalar INTEGER expressionWAIT statement not allowed in PURE procedure at %CWHERE assignment target at %L has inconsistent shapeWHERE mask at %L has inconsistent shapeWHERE/ELSEWHERE clause at %L requires a LOGICAL arrayWarn about "extern" declarations not at file scope.Warn about "suspicious" constructs.Warn about #pragma once outside of a header.Warn about 'new' of type with extended alignment without -faligned-new.Warn about @selector()s without previously declared methods.Warn about C constructs that are not in the common subset of C and C++.Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO C++ 2011.Warn about C++ constructs whose meaning differs between ISO C++ 2011 and ISO C++ 2014.Warn about C++ constructs whose meaning differs between ISO C++ 2014 and ISO C++ 2017.Warn about C++ constructs whose meaning differs between ISO C++ 2017 and ISO C++ 2020.Warn about C++ polymorphic types where adding final keyword would improve code quality.Warn about C++ virtual methods where adding final keyword would improve code quality.Warn about C++11 constructs in code compiled with an older standard.Warn about C++11 inheriting constructors when the base has a variadic constructor.Warn about C++14 constructs in code compiled with an older standard.Warn about C++17 constructs in code compiled with an older standard.Warn about C++20 constructs in code compiled with an older standard.Warn about C++23 constructs in code compiled with an older standard.Warn about C++26 constructs in code compiled with an older standard.Warn about GCC format strings with strings unsuitable for diagnostics.Warn about NULL being passed to argument slots marked as requiring non-NULL.Warn about PCH files that are found but not used.Warn about USE statements that have no ONLY qualifier.Warn about __TIME__, __DATE__ and __TIMESTAMP__ usage.Warn about a cast to reference type that does not use a related user-defined conversion function.Warn about accesses to interior zero-length array members.Warn about alignment of COMMON blocks.Warn about all enumerated switches missing a specific case.Warn about an empty body in an if or else statement.Warn about an invalid DO loop.Warn about boolean expression compared with an integer value different from true/false.Warn about buffer overflow in string manipulation functions like memcpy and strcpy.Warn about called procedures not explicitly declared.Warn about calling std::move on a local object in a return statement preventing copy elision.Warn about calls to snprintf and similar functions that truncate output.Warn about calls to snprintf and similar functions that truncate output. Same as -Wformat-truncation=1.Warn about calls to strcmp and strncmp used in equality expressions that are necessarily true or false due to the length of one and size of the other argument.Warn about calls with arguments to functions declared without parameters.Warn about calls with implicit interface.Warn about cases where -ftrivial-auto-var-init cannot initialize an auto variable.Warn about casting functions to incompatible types.Warn about casts between incompatible function types.Warn about casts that will produce a null result.Warn about casts which discard qualifiers.Warn about catch handlers of non-reference type.Warn about certain operations on boolean expressions.Warn about character arrays initialized as unterminated character sequences with a string literal.Warn about code affected by incompatible psABI changes.Warn about code paths in which NULL is passed to a must-not-be-NULL function argument.Warn about code paths in which a NULL function pointer is called.Warn about code paths in which a NULL pointer is dereferenced.Warn about code paths in which a call is made to strtok with undefined behavior.Warn about code paths in which a file descriptor can be closed more than once.Warn about code paths in which a file descriptor is not closed.Warn about code paths in which a file descriptor is used without being checked for validity.Warn about code paths in which a freed value is used.Warn about code paths in which a heap-allocated pointer leaks.Warn about code paths in which a longjmp rewinds to a jmp_buf saved in a stack frame that has returned.Warn about code paths in which a non-heap pointer is freed.Warn about code paths in which a pointer can be freed more than once.Warn about code paths in which a pointer is checked for NULL after it has already been dereferenced.Warn about code paths in which a pointer to a buffer is assigned to an incompatible type.Warn about code paths in which a pointer to a stale stack frame is used.Warn about code paths in which a possibly-NULL pointer is dereferenced.Warn about code paths in which a possibly-NULL value is passed to a must-not-be-NULL function argument.Warn about code paths in which a read or write is performed on a closed file descriptor.Warn about code paths in which a shift with count >= width of type is attempted.Warn about code paths in which a shift with negative count is attempted.Warn about code paths in which a stdio FILE can be closed more than once.Warn about code paths in which a stdio FILE is not closed.Warn about code paths in which a va_list is used after va_end.Warn about code paths in which a write or read to a buffer is out-of-bounds.Warn about code paths in which an 'assert()' is made involving an unsanitized value.Warn about code paths in which an async-signal-unsafe function is called from a signal handler.Warn about code paths in which an on-stack buffer is passed to putenv.Warn about code paths in which an operation is attempted in the wrong phase of a file descriptor's lifetime.Warn about code paths in which an operation is attempted on the wrong type of file descriptor.Warn about code paths in which an uninitialized value is used.Warn about code paths in which an unsanitized value is used as a divisor.Warn about code paths in which an unsanitized value is used as a pointer offset.Warn about code paths in which an unsanitized value is used as a size.Warn about code paths in which an unsanitized value is used as an allocation size.Warn about code paths in which an unsanitized value is used as an array index.Warn about code paths in which floating-point arithmetic is used in locations where precise computation is needed.Warn about code paths in which pointer subtraction involves undefined behavior.Warn about code paths in which read on a write-only file descriptor is attempted, or vice versa.Warn about code paths in which sensitive data is copied across a security boundary.Warn about code paths in which sensitive data is written to a file.Warn about code paths in which the wrong deallocation function is called.Warn about code paths in which undefined behavior would occur due to overlapping buffers.Warn about code paths in which va_arg is used too many times on a va_list.Warn about code paths in which va_arg uses the wrong type.Warn about code paths in which va_start or va_copy is used without a corresponding va_end.Warn about code paths which appear to lead to an infinite loop.Warn about code paths which appear to lead to infinite recursion.Warn about code paths which attempt to write to a const object.Warn about code paths which attempt to write to a string literal.Warn about code which might break strict aliasing rules.Warn about comparison of different enum types.Warn about comparisons between two operands of array type.Warn about compile-time integer division by zero.Warn about constant integer divisions with truncated results.Warn about creation of array temporaries.Warn about dangling else.Warn about declarations of entities that may be missing attributes that related entities have been declared with.Warn about deleting polymorphic objects with non-virtual destructors.Warn about deprecated 'vector long ...' AltiVec type usage.Warn about deprecated arithmetic conversions on operands of enumeration types.Warn about deprecated arithmetic conversions on operands where one is of enumeration type and the other is of a floating-point type.Warn about deprecated omission of comma before ... in varargs function declaration.Warn about deprecated space between "" and suffix in a user-defined literal operator.Warn about deprecated uses of volatile qualifier.Warn about divisions of two sizeof operators when the first one is applied to an array and the divisor does not equal the size of the array element.Warn about duplicated branches in if-else statements.Warn about duplicated conditions in an if-else-if chain.Warn about enum/integer type mismatches.Warn about enumerated switches missing a "default:" statement.Warn about enumerated switches, with no default, missing a case.Warn about equality comparisons involving REAL or COMPLEX expressions.Warn about features not present in ISO C11, but present in ISO C23.Warn about features not present in ISO C23, but present in ISO C2Y.Warn about features not present in ISO C90, but present in ISO C99.Warn about features not present in ISO C99, but present in ISO C11.Warn about features not present in traditional C.Warn about format strings that are not literals.Warn about format strings that contain NUL bytes.Warn about function call elimination.Warn about function calls with format strings that write past the end of the destination region.Warn about function calls with format strings that write past the end of the destination region.  Same as -Wformat-overflow=1.Warn about function definitions omitting parameter names.Warn about function parameters declared without a type specifier in K&R-style functions.Warn about function pointer arithmetic.Warn about functions which might be candidates for __attribute__((cold)).Warn about functions which might be candidates for __attribute__((const)).Warn about functions which might be candidates for __attribute__((malloc)).Warn about functions which might be candidates for __attribute__((noreturn)).Warn about functions which might be candidates for __attribute__((pure)).Warn about functions which might be candidates for __attribute__((returns_nonnull)).Warn about functions which might be candidates for format attributes.Warn about global functions without previous declarations.Warn about global functions without prototypes.Warn about global variables without previous declarations.Warn about implicit conversion of enum types.Warn about implicit conversions from "float" to "double".Warn about implicit declarations.Warn about implicit function declarations.Warn about improper usages of flexible array members according to the level of -fstrict-flex-arrays.Warn about inappropriate attribute usage.Warn about incompatible integer to pointer and pointer to integer conversions.Warn about invalid OpenACC dimensions.Warn about invalid UTF-8 characters.Warn about invalid forms of delimited or named escape sequences.Warn about invalid uses of the "offsetof" macro.Warn about labels on declarations and at the end of compound statements.Warn about leading whitespace style issues on lines except when in raw string literals.Warn about likely missing requires keyword.Warn about macros defined in the main file that are not used.Warn about macros that have conflicting header units definitions.Warn about maybe uninitialized automatic variables.Warn about mismatched declarations of VLA parameters.Warn about mismatched declarations of array parameters and unsafe accesses to them.Warn about missing ampersand in continued character constants.Warn about missing fields in struct initializers.Warn about missing sized deallocation functions.Warn about misuses of pragmas.Warn about most implicit conversions.Warn about multiple declarations of the same object.Warn about narrowing conversions within { } that are ill-formed in C++11.Warn about non-virtual destructors.Warn about none ISO msvcrt scanf/printf width extensions.Warn about nonsensical values of --param destructive-interference-size or constructive-interference-size.Warn about optimizations that assume that signed overflow is undefined.Warn about overflow in arithmetic expressions.Warn about overloaded virtual function names.Warn about overriding initializers with side effects.Warn about overriding initializers without side effects.Warn about packed bit-fields whose offset changed in GCC 4.4.Warn about passing a pointer/reference to a local or temporary variable to a musttail call argument.Warn about pointer casts which increase alignment.Warn about pointer/reference to a local or temporary variable possibly escaping to a musttail call.Warn about positional initialization of structs requiring designated initializers.Warn about possible aliasing of dummy arguments.Warn about possible security problems with format functions.Warn about possible violations of sequence point rules.Warn about possibly incorrect subscripts in do loops.Warn about possibly missing braces around initializers.Warn about possibly missing parentheses.Warn about possibly nested block comments, and C++ comments spanning more than one physical line.Warn about potentially suboptimal choices related to OpenACC parallelism.Warn about printf/scanf/strftime/strfmon format string anomalies.Warn about questionable usage of the macros used to retrieve variable arguments.Warn about reading past the end of a source array in string manipulation functions like memchr and memcpy.Warn about real-literal-constants with 'q' exponent-letter.Warn about redundant calls to std::move.Warn about returning a pointer/reference to a local or temporary variable.Warn about returning structures, unions or arrays.Warn about semicolon after in-class function definition.Warn about sign differences with format functions.Warn about signed-unsigned comparisons.Warn about simple-template-id in a constructor or destructor.Warn about some C++ One Definition Rule violations during link time optimization.Warn about statements between switch's controlling expression and the first case.Warn about stray tokens after #else and #endif.Warn about strftime formats yielding 2-digit years.Warn about subscripts whose type is "char".Warn about suspicious OpenMP code.Warn about suspicious calls to calloc-like functions where sizeof expression is the earlier size argument and not the latter.Warn about suspicious calls to memset where the third argument contains the number of elements not multiplied by the element size.Warn about suspicious calls to memset where the third argument is constant literal zero and the second is not.Warn about suspicious declarations of "main".Warn about suspicious divisions of two sizeof expressions that don't work correctly with pointers.Warn about suspicious length parameters to certain string functions if the argument uses sizeof.Warn about suspicious uses of memory addresses.Warn about switch values that are outside of the switch's type range.Warn about switches with boolean controlling expression.Warn about templates naming TU-local entities in a module.Warn about the global module fragment not containing only preprocessing directives.Warn about the most vexing parse syntactic ambiguity.Warn about things that change between the current -fabi-version and the specified version.Warn about things that will change when compiling with an ABI-compliant compiler.Warn about trailing whitespace on lines except when in raw string literals.Warn about trailing whitespace on lines except when in raw string literals.   Equivalent to Wtrailing-whitespace=blanks when enabled or Wtrailing-whitespace=none when disabled.Warn about truncated character expressions.Warn about truncated source lines.Warn about truncation in string manipulation functions like strncat and strncpy.Warn about type safety and similar errors and mismatches in declarations with alias attributes.Warn about uncasted NULL used as sentinel.Warn about underflow of numerical constant expressions.Warn about uninitialized automatic variables.Warn about unprototyped function declarations.Warn about unrecognized pragmas.Warn about unsafe macros expanding to multiple statements used as a body of a clause such as if, else, while, switch, or for.Warn about unsuffixed float constants.Warn about unsupported features in ThreadSanitizer.Warn about unused dummy arguments.Warn about usage of experimental Function Multi Versioning.Warn about use of multi-character character constants.Warn about useless casts.Warn about user-specified include directories that do not exist.Warn about uses of __attribute__((deprecated)) declarations.Warn about uses of __attribute__((warning)) declarations.Warn about uses of a comma operator within a subscripting expression.Warn about uses of register storage specifier.Warn about uses of std::initializer_list that can result in dangling pointers.Warn about using variadic macros.Warn about variables that might be changed by "longjmp" or "vfork".Warn about variables which are initialized to themselves.Warn about violations of Effective C++ style rules.Warn about xor operators where it appears the user meant exponentiation.Warn about zero-length formats.Warn about zero-trip DO loops.Warn for calls to allocation functions that specify zero bytes.Warn for conditionally-supported constructs.Warn for converting NULL from/to a non-pointer type.Warn for deallocation calls with arguments returned from mismatched allocation functions.Warn for implicit type conversions between signed and unsigned integers.Warn for implicit type conversions that cause loss of floating point precision.Warn for implicit type conversions that may change a value.Warn for infinitely recursive calls.Warn for mismatches between calls to operator new or delete and the corresponding call to the allocation or deallocation function.Warn for missing parameter types in function declarations.Warn for obsolescent usage in a declaration.Warn for placement new expressions with undefined behavior.Warn for suspicious integer expressions in boolean context.Warn for unsafe raw memory writes to objects of class types.Warn for uses of pointers to auto variables whose lifetime has ended.Warn for uses of pointers to deallocated storage.Warn from speculative compiles such as __traits(compiles).Warn if "defined" is used outside #if.Warn if C++17 noexcept function type will change the mangled name of a symbol.Warn if a C-style cast is used in a program.Warn if a caller of a function, marked with attribute warn_unused_result, does not use its return value.Warn if a class interface has no superclass.  Root classes may use an attribute to suppress this warning.Warn if a class type has a base or a field whose type uses the anonymous namespace or depends on a type with no linkage.Warn if a comparison always evaluates to true or false.Warn if a comparison is always true or always false due to the limited range of the data type.Warn if a deprecated compiler feature, class, method, or field is used.Warn if a function exceeds the number of paths (controlled by -fpath-coverage-limit) and path coverage give up instrumenting the function. The limit is approximate and conservative and coverage might give up even if the actual number is slightly below the limit.Warn if a function uses alloca or creates an array with dynamic size.Warn if a local declaration hides an instance variable.Warn if a loop with constant number of iterations triggers undefined behavior.Warn if a property for an Objective-C object has no assign semantics specified.Warn if a selector has multiple methods.Warn if a simd directive is overridden by the vectorizer cost model.Warn if a single function's framesize exceeds the given framesize.Warn if a string is longer than the maximum portable length specified by the standard.Warn if a subobject has an abi_tag attribute that the complete object type does not have.Warn if a throw expression will always result in a call to terminate().Warn if a user-procedure has the same name as an intrinsic.Warn if a variable length array is used.Warn if a virtual base has a non-trivial move assignment operator.Warn if an MCU name is unrecognized or conflicts with other options (default: on).Warn if an additional enum-base is used in an elaborated-type-specifier.Warn if an array is accessed out of bounds.Warn if an old-style parameter definition is used.Warn if an undefined macro is used in an #if directive.Warn if comparing pointer parameter with nonnull attribute with NULL.Warn if constant CFString objects contain non-portable characters.Warn if constructor or destructors with priorities from 0 to 100 are used.Warn if conversion of the result of arithmetic might change the value even though converting the operands cannot.Warn if dereferencing a NULL pointer may lead to erroneous or undefined behavior.Warn if devices.csv is not found or there are problem parsing it (default: on).Warn if expressions are too complicated for the analyzer to fully track.Warn if inherited methods are unimplemented.Warn if left shift of a signed value overflows.Warn if left shifting a negative value.Warn if loops have been interchanged.Warn if passing too many arguments to a function for its format string.Warn if pointers of distinct types are compared without a cast.Warn if qualifiers on arrays which are pointer targets are discarded.Warn if shift count >= width of type.Warn if shift count is negative.Warn if testing floating point numbers for equality.Warn if the ISR is misspelled, i.e. without __vector prefix. Enabled by default.Warn if the NSObject attribute is applied to a non-typedef.Warn if the address space of an address is changed.Warn if the code is too complicated for the analyzer to fully explore.Warn if the named return value optimization is not performed although it is allowed.Warn if the pointer in a pointer assignment might outlive its target.Warn if the type of a variable might be not interoperable with C.Warn if trigraphs are encountered that might affect the meaning of the program.Warn if type qualifiers on pointers are discarded.Warn if type signatures of candidate methods do not match exactly.Warn in case a function ends earlier than it begins due to an invalid linenum macros.Warn in case profiles in -fprofile-use do not exist.Warn in case profiles in -fprofile-use do not match.Warn of prototypes causing type conversions different from what would happen in the absence of prototype.Warn on any use of alloca.Warn on direct multiple inheritance.Warn on direct virtual inheritance.Warn on intrinsics not part of the selected standard.Warn on namespace definition.Warn on primary template declaration.Warn on suspicious calls of standard functions computing absolute values.Warn on suspicious constructs involving reverse scalar storage order.Warn that -fno-automatic may break recursion.Warn when #ifndef of a header guard is followed by #define of a different macro with the header guard macro not defined at the end of header.Warn when -fhardened did not enable an option from its set.Warn when __builtin_frame_address or __builtin_return_address is used unsafely.Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions are used.Warn when a #warning directive is encountered.Warn when a base is inaccessible in derived due to ambiguity.Warn when a built-in function is declared with the wrong signature.Warn when a built-in preprocessor macro is undefined or redefined.Warn when a class is redeclared or referenced using a mismatched class-key.Warn when a class or enumerated type is referenced using a redundant class-key.Warn when a conditional has too many terms and condition coverage profiling gives up instrumenting the expression.Warn when a const variable is unused.Warn when a conversion function will never be called due to the type it converts to.Warn when a declaration does not specify a type.Warn when a declaration has duplicate const, volatile, restrict or _Atomic specifier.Warn when a declaration is found after a statement.Warn when a function is unused.Warn when a function never produces a constant expression.Warn when a function parameter is only set, otherwise unused.Warn when a function parameter is unused.Warn when a jump misses a variable initialization.Warn when a label is unused.Warn when a left-hand-side array variable is reallocated.Warn when a left-hand-side variable is reallocated.Warn when a literal '0' is used as null pointer.Warn when a logical operator is suspiciously always evaluating to true or false.Warn when a noexcept expression evaluates to false even though the expression can't actually throw.Warn when a pointer differs in signedness in an assignment.Warn when a pointer is cast to an integer of a different size.Warn when a pointer is compared with a zero character constant.Warn when a range-based for-loop is creating unnecessary copies.Warn when a reference is bound to a temporary whose lifetime has ended.Warn when a register variable is declared volatile.Warn when a special enum is declared with the wrong base type.Warn when a string or character literal is followed by a ud-suffix which does not begin with an underscore.Warn when a structure containing a C99 flexible array member as the last field is not at the end of another structure.Warn when a switch case falls through.Warn when a value is moved to itself with std::move.Warn when a variable is only set, otherwise unused.Warn when a variable is unused.Warn when a vector operation is compiled outside the SIMD.Warn when all constructors and destructors are private.Warn when allocating insufficient storage for the target type of the assigned pointer.Warn when an argument passed to a restrict-qualified parameter aliases with another argument.Warn when an atomic memory model parameter is known to be outside the valid range.Warn when an exception handler is shadowed by another handler.Warn when an explicitly defaulted function is deleted.Warn when an expression value is unused.Warn when an inlined function cannot be inlined.Warn when an optimization pass is disabled.Warn when arguments of external procedures do not match.Warn when attempting to free a non-heap object.Warn when converting the type of pointers to member functions.Warn when deleting a pointer to incomplete type.Warn when fields in a struct with the packed attribute are misaligned.Warn when logical not is used on the left hand side operand of a comparison.Warn when multiple, different, fast interrupt handlers are in the compilation unit.Warn when non-templatized friend functions are declared within a template.Warn when not issuing stack smashing protection for some reason.Warn when one local variable shadows another local variable or parameter of compatible type.Warn when one local variable shadows another local variable or parameter.Warn when one variable shadows another (globally).Warn when one variable shadows another.  Same as -Wshadow=global.Warn when overload promotes from unsigned to signed.Warn when padding is required to align structure members.Warn when performing class template argument deduction on a type with no deduction guides.Warn when profiling instrumentation was requested, but could not be applied to a certain function.Warn when sizeof is applied on a parameter declared as an array.Warn when the address of packed member of struct or union is taken.Warn when the compiler reorders code.Warn when the field in a struct is not aligned.Warn when the indentation of the code does not reflect the block structure.Warn when the packed attribute has no effect on struct layout.Warn when the template keyword is missing after a member access token in a dependent member access expression if that member is a template.Warn when there is a cast to a pointer from an integer of a different size.Warn when there is a conversion between pointers that have incompatible types.Warn when typedefs locally defined in a function are not used.Warn whenever a function's return type defaults to "int" (C), or about inconsistent return types (C++).Warn whenever a trampoline is generated.Warn whenever an Objective-C assignment is being intercepted by the garbage collector.Warn whenever attributes are ignored.Warn whenever type qualifiers are ignored.Warn whenever void-returning functions return a non-void expressions, or a return expression is missing in a function not returning void.WarningWe should never see a non-equal dash-main in cobol1.cWhen "signed" or "unsigned" is not given make the bitfield signed.When "signed" or "unsigned" is not given make the bitfield unsigned.When -mhard-float is selected, enables generation of double-precision floating point instructions.  By default functions from libgcc are used to perform double-precision floating point operations.When -mhard-float is selected, enables generation of unordered floating point compare and set flag (lf.sfun*) instructions.  By default functions from libgcc are used to perform unordered floating point compare and set flag operations.When a symbol is resolved, check `alias this' scope before going to upper scopes.When both heuristics with rs6000-density-pct-threshold and rs6000-density-size-threshold are satisfied, we decide to penalize the loop body cost by the value which is specified by this parameter.  The default value is 10.When costing for loop vectorization, we probably need to penalize the loop body cost by accounting for excess strided or elementwise loads.  We collect the numbers for general statements and load statements according to the information for statements to be vectorized, check the proportion of load statements, and penalize only if the proportion exceeds the threshold specified by this parameter.  The default value is 45.When costing for loop vectorization, we probably need to penalize the loop body cost if the existing cost model may not adequately reflect delays from unavailable vector resources.  We collect the cost for vectorized statements and non-vectorized statements separately, check the proportion of vec_cost to total cost of vec_cost and non vec_cost, and penalize only if the proportion exceeds the threshold specified by this parameter.  The default value is 85.When generating -mabicalls code, allow executables to use PLTs and copy relocations.When generating -mabicalls code, make the code suitable for use in shared libraries.When linking for big-endian targets, generate a BE8 format image.When linking for big-endian targets, generate a legacy BE32 format image.When possible do not generate stack frames.When propagating IPA-CP effect estimates, multiply frequencies of recursive edges that bring back an unchanged value by this factor.When reduction factor computed for a loop exceeds the threshold specified by this parameter, prefer to unroll this loop.  The default value is 1.When running CSE, follow jumps to their targets.When using profile feedback, use the edge at this percentage position in frequency histogram as the bases for IPA-CP heuristics.When vectorizing, consider using multiple different approaches and use the cost model to choose the cheapest one.Where shorter, use canonicalized paths to systems headers.Whether codegen errors should be ICEs when -fchecking.Whether software prefetch hints should be issued for non-constant strides.Whether the scheduling description is mostly a cycle-accurate model of the target processor and is likely to be spill aggressively to fill any pipeline bubbles.Whether the target fully pipelines FMA instructions.  If non-zero, reassociation considers the benefit of parallelizing FMA's multiplication part and addition part, assuming FMUL and FMA use the same units that can also do FADD.Whether to use canonical types.Whether trampolines are generated in executable memory rather than executable stack.Which -fsched-pressure algorithm to apply.While setting up signal handler: %mWhile setting up signal stack: %mWhole program analysis (WPA) mode with number of parallel jobs specified.With INSCAN at %L, expected loop body with !$OMP SCAN between two structured block sequencesWithout padding, there are not enough elements in the intrinsic RESHAPE source at %L to match the shapeWork around VR4130 mflo/mfhi errata.Work around a hardware anomaly by adding a number of NOPs before a CSYNC or SSYNC instruction.Work around an early 4300 hardware bug.Work around bug in multiplication instruction.Work around certain 24K errata.Work around certain R10000 errata.Work around certain R4000 errata.Work around certain R4400 errata.Work around certain RM7000 errata.Work around certain VR4120 errata.Work around errata for early SB-1 revision 2 cores.Work around hardware multiply bug.Work around the R5900 short loop erratum.Work bound when discovering transitive relations from existing relations.Workaround for ARM Cortex-A53 Erratum number 835769.Workaround for ARM Cortex-A53 Erratum number 843419.Wrap all indirect branches into execute in order to disable branch prediction.Wrap all indirect calls into execute in order to disable branch prediction.Wrap all indirect return branches into execute in order to disable branch prediction.Wrap indirect return branches into execute in order to disable branch prediction. This affects only branches where the return address doesn't need to be restored from memory.Wrap indirect return branches into execute in order to disable branch prediction. This affects only branches where the return address is going to be restored from memory.Wrap indirect table jumps and computed gotos into execute in order to disable branch prediction.  Using thunk or thunk-extern with this option requires the thunks to be considered signal handlers to order to generate correct CFI.  For environments where unwinding (e.g. for exceptions) is required please use thunk-inline instead.Write a SRCFILE.opt-record.json file detailing what optimizations were performed.Write all declarations as Ada code for the given file only.Write all declarations as Ada code transitively.Writing module %qs at line %d column %d: %sWrong OpenACC continuation at %C: expected !$ACC, got !$OMPWrong OpenMP continuation at %C: expected !$OMP, got !$ACCX argument at %L to C_LOC shall not be polymorphicX descriptor requires leading space count at %LX32 does not support %<ms_abi%> attributeXXX entering %<pop_everything ()%>XXX leaving %<pop_everything ()%>Xeon Phi ISA support has been removed since GCC 15, use GCC 14 for the Xeon Phi ISAs or %<-march=broadwell%> for all the other ISAs supported on this machine.You have broken GCC Rust. This is a feature.
  You must enable MVE instructions to use these intrinsicsYou must enable NEON instructions (e.g. %<-mfloat-abi=softfp%> %<-mfpu=neon%>) to use these intrinsics.You must enable VFP instructions to use these intrinsics.You must enable crypto instructions (e.g. include %<-mfloat-abi=softfp%> %<-mfpu=crypto-neon%>) to use these intrinsics.Zero is not a valid statement label at %CZero width in format descriptor in format string at %LZero-sized array detected at %L where an entity with the TARGET attribute is expected[ skipping %d instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
  [...][...] style array constructors at %C[Leaving %s]
! [available in [cannot find %s][default][disabled][enabled]`a %<return%> statement is not allowed in coroutine; did you mean %<co_return%>?a GNU Fortran extensiona brace-enclosed initializer is not allowed herea call to a constructor cannot appear in a constant-expressiona callee-copied argument is stored in the current function's framea cast to a type other than an integral or enumeration type cannot appear in a constant-expressiona class template declaration must not declare anything elsea comma operator cannot appear in a constant-expressiona concept cannot be a member functiona concept cannot be constraineda constructor cannot be %<concept%>a constructor taking a single argument of its own class type is invalida conversion function cannot have a trailing return typea destructor cannot be %qsa different type is defined in another translation unita field of same name but different type is defined in another translation unita field with different name is defined in another translation unita function call cannot appear in a constant-expressiona function type cannot have an explicit object parametera function-definition is not allowed herea label can only be part of a statement and a declaration is not a statementa lambda closure type has a deleted copy assignment operatora lambda closure type has a deleted default constructora lambda with captures may not have an explicit object parameter of an unrelated typea later %<-fabi-version=%> (or =0) avoids this error with a change in manglinga member of a structure or union cannot have a variably modified typea nested function is not supported for reduced registersa nested namespace definition cannot be inlinea nested namespace definition cannot have attributesa non-member function cannot have an explicit object parametera non-template variable cannot be %<concept%>a parameter cannot be declared %qsa parameter list with an ellipsis cannot match an empty parameter name list declarationa pointer to explicit object member function can only be formed with %<&%E%>a pointer to explicit object member function can only be formed with %<&%T::%D%>a pointer to function type cannot have an explicit object parametera pointer to member function type cannot have an explicit object parametera specialization is always exported alongside its primary templatea statement expression is an insufficient context for overload resolutiona storage class can only be specified for objects and functionsa storage class on an anonymous aggregate in class scope is not alloweda template cannot be defaulteda template declaration cannot appear at block scopea template-id may not appear in a using-declarationa temporary bound to %qD only persists until the constructor exitsa transaction expression cannot appear in a constant-expressiona type defined in another translation unit is not polymorphica type defined in another translation unit is polymorphica type with different bases is defined in another translation unita type with different number of fields is defined in another translation unita type with different precision is defined in another translation unita type with different signedness is defined in another translation unita type with different size is defined in another translation unita type with different virtual table pointers is defined in another translation unita variable cannot be declared %<consteval%>a vector type with different number of elements is defined in another translation unita wide string is invalid in this contextabnormal call edges for non-call insn in bb %iabnormal edges for no purpose in bb %iabort in %s, at %s:%dabsolute value function %qD given an argument of type %qT but has parameter of type %qT which may cause truncation of valueabstract declarator %qT used as declarationaccess declarations are deprecated in favor of using-declarations; suggestion: add the %<using%> keywordaccessing %E byte in a region of size %Eaccessing %E bytes in a region of size %Eaccessing %E or more bytes in a region of size %Eaccessing %qD member instead of initialized %qD member in constant expressionaccessing %qE outside its lifetimeaccessing a member %qE of an atomic structure %qEaccessing a member %qE of an atomic union %qEaccessing argument %u of a function declared with attribute %qsaccessing between %E and %E bytes in a region of size %Eaccessing data memory with program memory addressaccessing program memory with data memory addressaccessing thread-local storage is not currently supported with %<-mpure-code%> or %<-mslow-flash-data%>accessing uninitialized array elementaccessing uninitialized member %qDaccessing value of %qE through a %qT glvalue in a constant expressionaccumulator is not a constant integeraccumulator number is out of boundsactual argument to INTENT = OUT/INOUTadd %<using namespace std::complex_literals%> (from %<<complex>%>) to enable the C++14 user-defined literal suffixesadd a deduction guide to suppress this warningadd explicit %<this%> or %<*this%> captureadd parentheses around %qE to silence this warningadd parentheses around left hand side expression to silence this warningadd parentheses around the second %<sizeof%> to silence this warningadd parentheses to declare a variableadd_sym(): Bad sizing modeadditional enumerators beginning with %qDaddress area attribute cannot be specified for functionsaddress area of %q+D conflicts with previous declarationaddress mode %qs not supported in the %s bit modeaddress of a call to %qs is not a constant expressionaddress of array with reverse scalar storage order requestedaddress of automatic variable %qD can escape to %<musttail%> calladdress of automatic variable %qD passed to %<musttail%> call argumentaddress of caller arguments takenaddress of explicit register variable %qD requestedaddress of global register variable %qD requestedaddress of label %qD returnedaddress of label passed to %<musttail%> call argumentaddress of local variable %qD returnedaddress of local variable can escape to %<musttail%> calladdress of local variable passed to %<musttail%> call argumentaddress of non-static constexpr variable %qD may differ on each invocation of the enclosing function; add %<static%> to give it a constant addressaddress of overloaded function with no contextual type informationaddress of parameter %qD can escape to %<musttail%> calladdress of parameter %qD passed to %<musttail%> call argumentaddress of register compound literal requestedaddress of register variable %qD requestedaddress offset not a constantaddress operand requires constraint for X, Y, or Z registeraddress requested for %qD, which is declared %<register%>address space %qs not supported for devices with flash size up to %d KiBaddress spaces are not supported for reduced Tiny devicesaddress taken but %<TREE_ADDRESSABLE%> bit not setaddress taken, but ADDRESSABLE bit not setaddress-of an object %qE with thread local or automatic storage is not a constant expressionaggregate %q#D has incomplete type and cannot be definedaggregate types are prohibited in %<__regio_symbol%> address spaceaggregate value used where a complex was expectedaggregate value used where a fixed-point was expectedaggregate value used where a floating-point was expectedaggregate value used where an integer was expectedakaalias definitions not supported in Mach-O; ignoredalias definitions not supported in this configurationalias template deduction only available with %<-std=c++20%> or %<-std=gnu++20%>alias-declaration in init-statement only available with %<-std=c++23%> or %<-std=gnu++23%>aliased declaration herealignment %u of %qT is less than %ualignment may not be specified for %q+Dalignment may not be specified for %qDalignment must be a small power of two, not %dalignment of %q+D is greater than maximum object file alignment %dalignment of %qD increased in %<-fabi-version=9%> (GCC 5.2)alignment of %qD is bigger than original declarationalignment of %qD will increase in %<-fabi-version=9%>alignment of array elements is greater than element sizealignment specified for %<register%> object %qEalignment specified for bit-field %qEalignment specified for function %qEalignment specified for parameter %qEalignment specified for type name in %<sizeof%>alignment specified for type name in %qEalignment specified for type name in castalignment specified for typedef %qEalignment specified for unnamed bit-fieldalignment specified for unnamed parameterall member functions in class %qT are privateallocatable argumentallocated hereallocation of insufficient size %qE for type %qT with size %qEallocation performed hereallocator with access trait set to %<thread%> results in undefined behavior for %qs directiveallows opaque types to be implemented as any type (a GNU Modula-2 extension)already captured %qD in lambda expressionalso found %<%c%s%>alternatives not allowed in %<asm%> flag outputambiguating new declaration %q+#Dambiguating new declaration of %q#Dambiguous attribute '%s'; could be '%s' (via '%s:%s') or '%s' (via '%s:%s')ambiguous conversion for array subscriptambiguous default type conversion from %qTambiguous method %s%s%sambiguous overload for ambiguous overload for intrinsic %qsambiguous template instantiation for %q#Dambiguous template instantiation for %q#Tambiguous template specialization %qD for %q+Dan %<asm%> specification is not allowed on a function-definitionan %qs clause can only be specified if the %<dispatch%> selector of the %<construct%> selector set appears in the %<match%> clausean %qs clause can only be specified if the %<dispatch%> selector of the construct selector set appears in the %<match%> clausean %qs clause requires a %<match%> clausean address area attribute cannot be specified for local variablesan argument type that has a default promotion cannot match an empty parameter name list declarationan array of different size is defined in another translation unitan array reference cannot appear in a constant-expressionan assignment cannot appear in a constant-expressionan attribute that appertains to a friend declaration that is not a definition is ignoredan attribute that appertains to a type-specifier is ignoredan decrement cannot appear in a constant-expressionan empty string cannot be in %<target_clones%> attributean entity named %<main%> cannot be declared with C language linkagean enum with different number of values is defined in another translation unitan enum with different value name is defined in another translation unitan enum with different values is defined in another translation unitan explicit instantiation cannot have a definition; use %<template <>%> to declare a specializationan explicit object member function cannot be %<static%>an explicit object member function cannot be %<virtual%>an explicit object parameter cannot be a function parameter packan explicit object parameter may not have a default argumentan explicit specialization must be preceded by %<template <>%>an explicit type suffix is needed when using a vector of base addressesan increment cannot appear in a constant-expressionan indirect edge from %s has no corresponding call_stmtan indirect edge with unknown callee corresponding to a call_stmt with a known declaration:an inherited constructor is not a candidate for initialization from an expression of the same or derived typean interrupt handler cannot be compiled with %<-muser-mode%>anachronismanachronism: anachronistic old-style base class initializerand %qT has no template constructorsand evaluates to false when actually evaluating the condition in non-%<constexpr%> functionand fieldand the implicitly-defined constructor does not initialize %q#Danonymous %s declared inside parameter list will not be visible outside of this definition or declarationanonymous SSA name cannot have default definitionanonymous struct not inside named typeanonymous struct with base classesanonymous union with no membersappending to array in %qs requires the GC and cannot be used with %<-fno-druntime%>applying %<#pragma weak %+D%> after first use results in unspecified behaviorarch extension %qs should be prefixed by %<+%>architecture %qs supported for assembler onlyare you trying to break %s? how dare you?are_identical_variables: Bad typeargument %d is an unsigned literal that is out of rangeargument %d must be a constant immediateargument %d must be a constant immediate in range [%wd,%wd]argument %d must be a constant immediate in range [0,15]argument %d must be a literal between %d and %d, inclusiveargument %d must be a literal between 0 and %d, inclusiveargument %d must be a variable or a literal between %d and %d, inclusiveargument %d must be an unsigned literalargument %d must be either a literal %d or a literal %dargument %d of %qD must be of %<omp_interop_t%>argument %d of %qE discards %<const%> qualifierargument %d of %qE discards %<volatile%> qualifierargument %d of %qE might be a candidate for a format attributeargument %d of %qE must be a pointer to a constant size typeargument %d of %qE must be a pointer typeargument %d of %qE must be an integer constant expressionargument %d of %qE must be of %<omp_interop_t%>argument %d of %qE must not be a pointer to a %<const%> typeargument %d of %qE must not be a pointer to a %<volatile%> typeargument %d of %qE must not be a pointer to a functionargument %d of '%s' did not have the expected nameargument %d to %qE must be a constant immediate in range [0-%d]argument %d to the built-in must be a constant in range %d to %dargument %i in the range [%E, %E]argument %i is null but the corresponding size argument %i value is %sargument %i range [%E, %E] exceeds maximum object size %Eargument %i range [%E, %E] is negativeargument %i value %qE exceeds maximum object size %Eargument %i value %qE is negativeargument %i value %s is negativeargument %i value is zeroargument %q+D might be clobbered by %<longjmp%> or %<vfork%>argument %qD declared hereargument %qD doesn%'t match built-in prototypeargument %qD doesn%'t match prototypeargument %qEargument %qE cannot be read at compile timeargument %qE to the %<counted_by%> attribute is not a field declaration in the same structure as %qDargument %qE to the %<counted_by%> attribute is not a field declaration with an integer typeargument %qTargument %qd is not a constantargument %qs can only appear alone in %qsargument %qs is not supported for %qs on this targetargument %qs must be either %<on%> or %<off%>argument %qs to %<-Waligned-new%> not recognizedargument %qs to %<-Wbidi-chars%> not recognizedargument %qs to %<-Wleading-whitespace=%> not recognizedargument %qs to %<-Wnormalized%> not recognizedargument %qs to %<-Wtrailing-whitespace=%> not recognizedargument %qs to %<-femit-struct-debug-detailed%> not recognizedargument %qs to %<-femit-struct-debug-detailed%> unknownargument %u in call to function %qE does not have %<int%> typeargument %u in call to function %qE does not have integral typeargument %u in call to function %qE does not have pointer typeargument %u in call to function %qE has boolean typeargument %u in call to function %qE has enumerated typeargument %u in call to function %qE has pointer to %qs type (%qT)argument %u in call to function %qE has pointer to a non-trivially-copyable type (%qT)argument %u in call to function %qE points to incomplete typeargument %u in call to function %qs has boolean typeargument %u in call to function %qs has enumerated typeargument %u null where non-null expectedargument %u null where non-null expected because argument %u is nonzeroargument %u of %<__builtin_tgmath%> has no argumentsargument %u of %<__builtin_tgmath%> has variable argumentsargument %u of %<__builtin_tgmath%> has wrong number of argumentsargument %u of %<__builtin_tgmath%> is not a function pointerargument %u of %<__builtin_tgmath%> is unprototypedargument %u of type %s declared as a pointerargument %u of type %s declared as a variable length arrayargument %u of type %s declared as an ordinary arrayargument %u of type %s declared with %u unspecified variable boundargument %u of type %s declared with %u unspecified variable boundsargument %u of type %s declared with %u variable boundargument %u of type %s declared with %u variable boundsargument %u of type %s declared with mismatched bound %qsargument %u of type %s declared with mismatched bound argument %Eargument %u of type %s with mismatched boundargument %u to function %qE is of type %qT which is not known to be 128 bits wideargument 1 in call to function %qE has signed typeargument 1 in call to function %qE has unsigned typeargument 1 in call to function %qs has %<char%> typeargument 1 in call to function %qs has signed typeargument 1 must be a mapargument 1 of %qE must be a non-void pointer typeargument 1 of %qE must be a pointer to a complete typeargument 1 of %qE must be a pointer to a constant size typeargument 1 of %qE must be a pointer to a nonzero size objectargument 1 of %qs is out of rangeargument 1 of %qs must be a constantargument 3 in call to function %qE does not have pointer to integral typeargument 3 in call to function %qE has pointer to boolean typeargument 3 in call to function %qE has pointer to enumerated typeargument list function at %Cargument must be a 16-bit constant immediateargument must be a field referenceargument must be array or slice or channelargument must be channelargument must be passed by copyingargument must be string or array or slice or map or channelargument must have complex typeargument not permitted on %qs clauseargument not permitted on %qs clause in OpenACC %<kernels%> region with a %qs clauseargument of %<__builtin_eh_return_regno%> must be constantargument of %qE attribute ignoredargument of %qE attribute is missingargument of %qE attribute is not "ilink" or "firq"argument of %qE attribute is not "ilink1" or "ilink2"argument of %qE attribute is not %qs, %qs %qs, %qs, %qs, %qs, %qs, %qs, %qs or %qsargument of %qE attribute is not a string constantargument of %qE attribute is not a string constant or numberargument of Offsetof implies indirection of an embedded fieldargument of function call might be a candidate for a format attributeargument of type %qT not permitted with %<-mgeneral-regs-only%>argument references a symbol declared hereargument to %<-O%> should be a non-negative integer, %<g%>, %<s%>, %<z%> or %<fast%>argument to %<__integer_pack%> must be between 0 and %dargument to %<alloca%> is too largeargument to %<alloca%> is zeroargument to %<alloca%> may be too largeargument to %<decltype%> must be an expressionargument to %<sizeof%> in %qD call is the same expression as the destination; did you mean to dereference it?argument to %<sizeof%> in %qD call is the same expression as the destination; did you mean to provide an explicit length?argument to %<sizeof%> in %qD call is the same expression as the destination; did you mean to remove the addressof?argument to %<sizeof%> in %qD call is the same expression as the first source; did you mean to dereference it?argument to %<sizeof%> in %qD call is the same expression as the first source; did you mean to provide an explicit length?argument to %<sizeof%> in %qD call is the same expression as the first source; did you mean to remove the addressof?argument to %<sizeof%> in %qD call is the same expression as the second source; did you mean to dereference it?argument to %<sizeof%> in %qD call is the same expression as the second source; did you mean to provide an explicit length?argument to %<sizeof%> in %qD call is the same expression as the second source; did you mean to remove the addressof?argument to %<sizeof%> in %qD call is the same expression as the source; did you mean to dereference it?argument to %<sizeof%> in %qD call is the same expression as the source; did you mean to provide an explicit length?argument to %<sizeof%> in %qD call is the same expression as the source; did you mean to remove the addressof?argument to %<sizeof%> in %qD call is the same expression as the source; did you mean to use the size of the destination?argument to %<sizeof%> in %qD call is the same pointer type %qT as the destination; expected %qT or an explicit lengthargument to %<sizeof%> in %qD call is the same pointer type %qT as the first source; expected %qT or an explicit lengthargument to %<sizeof%> in %qD call is the same pointer type %qT as the second source; expected %qT or an explicit lengthargument to %<sizeof%> in %qD call is the same pointer type %qT as the source; expected %qT or an explicit lengthargument to %qE attribute is neither eic, nor %<vector=<line>%>argument to %qE attribute is neither no, pcrel nor yesargument to %qE attribute is neither zero, nor oneargument to %qE attribute is not %<"user"%>, %<"supervisor"%>, or %<"machine"%>argument to %qE attribute is not (keep|thunk|thunk-extern)argument to %qE attribute is not (keep|thunk|thunk-inline|thunk-extern)argument to %qE attribute is not intstackargument to %qE attribute larger than %dargument to %qs is bigger than %dargument to %qs is not between %d and %dargument to %qs is too large (max. %d)argument to %qs should be a non-negative integerargument to %qs should be a non-negative integer optionally followed by a size unitargument to CAP is not a constant or variable of type CHARargument to be formatted is not %<...%>argument to builtin has void typeargument to interrupt attribute is unsupported for weak functionsargument to variable-length array is too largeargument to variable-length array is zeroargument to variable-length array may be too largearguments %d and %d of %qE must have the same element size, but the values passed here have type %qT and %qT respectivelyarguments %d and %d of %qE must have the same signedness, but the values passed here have type %qT and %qT respectivelyarguments '%s' and '%s' for intrinsic %sarguments '%s' and '%s' for intrinsic '%s'arguments 'a%d' and 'a%d' for intrinsic '%s'arguments ignored for %<-Wattributes=%>; use %<-Wno-attributes=%> insteadarguments of type %qT require the SVE ISA extensionarguments to %qs should be non-negative integersarguments to destructor are not allowedarguments to the %qE attribute must be narrow string literalsarguments to the %qE attribute must contain valid identifiersarith_power(): Bad basearith_power(): unknown typearithmetic IFarithmetic between different enumeration types %qT and %qTarithmetic between different enumeration types %qT and %qT is deprecatedarithmetic between enumeration type %qT and floating-point type %qTarithmetic between enumeration type %qT and floating-point type %qT is deprecatedarithmetic between floating-point type %qT and enumeration type %qTarithmetic between floating-point type %qT and enumeration type %qT is deprecatedarithmetic involving a null pointer in %qEarithmetic on pointer to RVV type %qTarithmetic on pointer to SVE type %qTarithmetic on pointer to an empty aggregatearithmetic on pointer to an incomplete typearray %<TYPE_DOMAIN%> is not integer typearray %q+D assumed to have one elementarray %qD declared herearray %qD initialized by parenthesized string literal %qEarray assignmentarray bound forbidden after parenthesized type-idarray bound is not an integer constantarray cannot be initialized with a %qsarray concatenation of expression %qs requires the GC and cannot be used with %<-fno-druntime%>array deallocation of object allocated with non-array allocationarray declaration canonicalization has failedarray element value must be the same type as its declarationarray elements cannot have RVV type %qTarray elements cannot have SVE type %qTarray index in initializer exceeds array boundsarray index in initializer is not an integer constant expressionarray index in initializer not of integer typearray index in non-array initializerarray index range in initializer exceeds array boundsarray initialized from non-constant array expressionarray initialized from parenthesized string constantarray initializer for structured binding declaration in conditionarray member %q#D declared herearray must be initialized with a brace-enclosed initializerarray of inappropriate type initialized from string constantarray of runtime bound cannot be captured by copy, only by referencearray of unknown size with empty initializerarray resultarray section does not have mappable type in %qs clausearray section in %<#pragma acc declare%>array section is not contiguous in %qs clausearray size expression is not supported yetarray size in new-expression must be constantarray size missing in %q+Darray size missing in %qDarray size missing in %qTarray subscript %<%T[%wi]%> is partly outside array bounds of %qTarray subscript %E is above array bounds of %qTarray subscript %E is below array bounds of %qTarray subscript %E is outside array bounds of %qTarray subscript %E is outside the bounds of an interior zero-length array %qTarray subscript %qE is outside the bounds of an interior zero-length array %qTarray subscript %wi is below array bounds of %qTarray subscript %wi is outside array bounds of %qTarray subscript %wu is above array bounds of %qTarray subscript [%E, %E] is outside array bounds of %qTarray subscript [%wi, %wi] is outside array bounds of %qTarray subscript has type %<char%>array subscript is not an integerarray subscript value %qE is outside the bounds of array %qD of type %qTarray subscript value %qE is outside the bounds of array type %qTarray type has incomplete element type %qTarray type must be initializedarray types have different boundsarray used as initializerarray with qualifier on the element is not qualified before C23arrays of functions are not meaningfulassembler does not support %<-mabi=ilp32%>assembler name hash list corruptedassertion missing after %qsassertions must be followed by %<;%>assign semantics attributes of property %qD conflict with previous declarationassigned hereassigning to an array from an initializer listassignmentassignment (not initialization) in declarationassignment discards %qv qualifier from pointer target typeassignment from distinct Objective-C typeassignment from pointer to non-enclosed address spaceassignment from temporary %<initializer_list%> does not extend the lifetime of the underlying arrayassignment left-hand side might be a candidate for a format attributeassignment makes %q#v qualified function pointer from unqualifiedassignment of constant field %qDassignment of function %qDassignment of member %qD in read-only objectassignment of read-only location %qEassignment of read-only member %qDassignment of read-only named return value %qDassignment of read-only parameter %qDassignment of read-only reference %qDassignment of read-only variable %qDassignment suppressionassignment to %e from incompatible pointer type %eassignment to %e from pointer to %qD with incompatible type %eassignment to %qT from %qT makes integer from pointer without a castassignment to %qT from %qT makes pointer from integer without a castassignment to %qT from pointer type %qT with incompatible scalar storage orderassignment to expression with array typeassociate_integer_pointer(): Already associatedassumed-rank argumentassumed-shape argumentassumed-type argumentassuming cast to type %qT from overloaded functionassuming directive output of %wu byteassuming directive output of %wu bytesassuming pointer to member %qDassuming signed overflow does not occur when combining constants around a comparisonassuming signed overflow does not occur when reducing constant in comparisonassuming signed overflow does not occur when simplifying %<X - Y %s 0%> to %<X %s Y%>assuming signed overflow does not occur when simplifying range testasynchronous argumentat %s, %sat offset %s into destination object %qE of size %sat offset %s into destination object of size %s allocated by %qEat offset %s into object %qE of size %sat offset %s into object of size %s allocated by %qEat offset %s into source object %qE of size %sat offset %s into source object of size %s allocated by %qEat offset %wi from %qD declared hereat offset [%wi, %wi] from %qD declared hereat-calls %<strub%> does not support call to %qDatexit failedattempt to index object that is not array, slice, string, or mapattempt to index type expressionattempt to slice object that is not array, slice, or stringattempt to take address of bit-fieldattempt to take address of bit-field structure member %qDattribute %<%E(%s)%> missing an argumentattribute %<%E(%s, %E)%> invalid positional argument %iattribute %<%E(%s, %E, %E)%> invalid positional argument %iattribute %<fallthrough%> not preceding a case label or default labelattribute %<fallthrough%> specified multiple timesattribute %<musttail%> mixed with other attributes on %<return%> statementattribute %<target%> argument %qs is unknownattribute %<target%> argument not a stringattribute %<target("%s")%> does not accept an argumentattribute %<target_version%> argument not a stringattribute %<target_version%> has multiple valuesattribute %qE argument must be one of %qs or %qsattribute %qE argument must be one of %qs, %qs, %qs, or %qsattribute %qE argument not a stringattribute %qE does not apply to elements of non-scalar type %qTattribute %qE does not apply to fields of aggregate type %qTattribute %qE invalid modeattribute %qE invalid mode %qs; expected one of %qs, %qs, %qs, or %qsattribute %qE mode %qE is not an identifier; expected one of %qs, %qs, %qs, or %qsattribute %qE unexpected %<(%> after mode %qs; expected a positional argument or %<)%>attribute %qE without arguments on a non-prototypeattribute %qs applies to array types onlyattribute %qs argument %qs is unknownattribute %qs argument is not a stringattribute %qs expects a constant positive integer argumentattribute %qs invalid positional argumentattribute %qs mismatch with mode %qsattribute %qs mismatched positional argument values %i and %iattribute %qs missing positional argument 2 provided in previous designation by argument %uattribute %qs positional argument %i invalid value %wiattribute %qs positional argument %i value %wi exceeds number of function arguments %uattribute %qs positional argument 1 references %qs-qualified argument type %qTattribute %qs positional argument 1 references argument of function type %qTattribute %qs positional argument 1 references non-pointer argument type %qTattribute %qs positional argument 2 conflicts with previous designation by argument %uattribute %qs positional argument 2 missing in previous designationattribute %qs positional argument 2 references non-integer argument type %qTattribute %qs specified multiple timesattribute declarationattribute for %q#T must follow the %qs keywordattribute ignoredattribute ignored in declaration of %q#Tattribute ignored in explicit instantiation %q#Tattribute using prefix only available with %<-std=c++17%> or %<-std=gnu++17%>attribute using prefix used together with scoped attribute tokenattribute value %qs is unknown in %qs attributeattribute value %qs was already specified in %qs attributeattribute with no arguments contains no parameter packsattributes after parenthesized initializer ignoredattributes are not allowed on a function-definitionattributes are not permitted in this positionattributes at the beginning of statement are ignoredattributes ignored on %<asm%> declarationattributes ignored on elaborated-type-specifier that is not a forward declarationattributes ignored on outermost array type in new expressionattributes ignored on template instantiationattributes ignored on uninstantiated typeattributes in parameter array declarator ignoredattributes may be inserted hereattributes may not be specified before the %<@%D%> Objective-C++ keywordattributes on base specifiers are ignoredattributes other than OpenMP directives are not allowed on %<for%> in loop nestattributes should be specified before the declarator in a function definitionauto fpu selection not currently permitted hereautomatic variable %qE cannot be %<threadprivate%>automatically initializes all pointers to NILaux field set for edge %s->%saux field set for indirect edge from %savailable since Fortran 77await expressions are not permitted in handlersawaitable type %qT is not a structureaxiom contract semantic must be %<assume%> or %<ignore%>backend decl for module variable %qs already existsbad ADDR_SPACE_GLOBAL addressbad I/O address 0x%s outside of valid range [0x%x, 0x%x] for %%i operandbad addressbad address, not (reg+disp):bad address, not a constant:bad address, not post_inc or pre_dec:bad alignment: %dbad amount of stack space removal: %dbad argument for %<-fdebug=%>: %qsbad argument for %<-fextern-std%>: %qsbad argument for %<-fmodule-file=%>: %qsbad argument for %<-fversion=%>: %qsbad builtin codebad builtin fcodebad builtin icodebad condition codebad expressionbad expression type during walk (%d)bad insn for 'A'bad insn in frv_print_operand, 0 casebad insn in frv_print_operand, bad const_doublebad insn in frv_print_operand, z casebad insn to frv_print_operand, 'F' modifier:bad insn to frv_print_operand, 'L' modifier:bad insn to frv_print_operand, 'M/N' modifier:bad insn to frv_print_operand, 'O' modifier:bad insn to frv_print_operand, 'e' modifier:bad insn to frv_print_operand, 'f' modifier:bad insn to frv_print_operand, 'g' modifier:bad insn to frv_print_operand, P modifier:bad insn to frv_print_operand_address:bad insn to frv_print_operand_memory_reference:bad movebad opbad operandbad option %qs to attribute %<optimize%>bad option %qs to pragma %<optimize%>bad output_condmove_single operandbad output_move_double operandbad output_move_single operandbad registerbad register to frv_print_operand_memory_reference_reg:bad return type for function argument %u of %<__builtin_tgmath%>bad shift insn:bad testbad type for argument %u of function argument %u of %<__builtin_tgmath%>bad usage of spec function %qsbad value %qs for %<-march=%> switchbad value %qs for %<-mcpu%> switchbad value %qs for %<-mfp-rounding-mode%> switchbad value %qs for %<-mfp-trap-mode%> switchbad value %qs for %<-mmemory-latency%>bad value %qs for %<-mtls-size%> switchbad value %qs for %<-mtls-size=%> switchbad value %qs for %<-mtrap-precision%> switchbad value %qs for %<-mtune%> switchbad value %qs for %<-mtune=%> switchbad value %qs for %<target("arch=")%> attributebad value %qs for %<target("tune=")%> attributebad value for %<%s-%s%>bad value for %<%s=%s%>badly nested C headers from preprocessorbare apostrophe %<'%> in formatbarrier region may not be closely nested inside of work-sharing, %<loop%>, %<critical%>, %<ordered%>, %<master%>, %<masked%>, explicit %<task%> or %<taskloop%> regionbarrier value must be within [0,15]base %qT will be initialized afterbase class %q#T has accessible non-virtual destructorbase class %q#T should be explicitly initialized in the copy constructorbase class %qT is not publicbase initializer expansion %qT contains no parameter packsbase operand of %<->%> has non-pointer type %qTbase operand of %<->%> is not a pointerbase pointer cycle detectedbase type %qT fails to be a struct or class typebase variable or SSA name undeclaredbasic block %d pred edge is corruptedbasic block %d should be marked irreduciblebasic block %d should not be marked irreduciblebasic block %i edge lists are corruptedbasic blocks not laid down consecutivelybb %d does not belong to loop %dbb %d has father loop %d, should be loop %dbb %d on wrong placebecause %qT has user-provided %qDbecause it is a member of %qTbecause it is used as a glvaluebecause the array element type %qT has variable sizebegin expression refers to outer iterator %qDbinary argument %u to decimal-only type-generic functionbinary expression in operand of fold-expressionbinary operator does not support mixing vector bool with floating point vector operandsbinary operator does not support two vector bool operandsbinary operator does not support vector bool operandbind(c) procedurebinding reference of type %qH to %qI discards qualifiersbit-field %q#D with non-integral type %qTbit-field %q+D width not an integer constantbit-field %qD has non-integral type %qTbit-field %qD with non-integral type %qTbit-field %qE has atomic typebit-field %qE in %qs clausebit-field %qs has invalid typebit-field %qs width not an integer constantbit-field %qs width not an integer constant expressionbit-field has atomic typebitwise comparison always evaluates to falsebitwise comparison always evaluates to truebitwise operation between different enumeration types %qT and %qTbitwise operation between different enumeration types %qT and %qT is deprecatedblock IFblock-scope extern declaration %q#D must not be attached to a named modulebody of %<constexpr%> function %qD not a return-statementbogus DISPOSE construction: %dbogus JARL construction: %dbogus JR construction: %dbogus PREPEARE construction: %dbogus comparison result typeboolean registers required for the floating-point optionboth %<-mstack-protector-guard-offset%> and %<-mstack-protector-guard-reg%> must be used with %<-mstack-protector-guard=sysreg%>both %<__thread%> and %<thread_local%> specifiedboth %<monotonic%> and %<nonmonotonic%> modifiers specifiedboth %qs and %qs specifiedboth %s and %qE attribute provide addressboth arguments in binary fold have unexpanded parameter packsboth arguments must be compatibleboth arguments to %<__builtin___clear_cache%> must be pointersboth binary and decimal floating-point arguments to type-generic functionboth branches of %<if%> statement marked as %qsboth complex and decimal floating-point arguments to type-generic functionbound argument %i value %s is negative for a variable length array argument %i of type %sbraced spec %qs ends in escapebraced spec %qs is invalid at %qcbraced spec body %qs is invalidbraced-group within expression allowed only inside a functionbraces around scalar initializerbraces around scalar initializer for type %qTbranch %2d never executed%sbranch %2d taken %s%sbreak statement not within loop or switchbreak statement used with OpenMP for loopbuild_dt: format with namelistbuilt-in %qD declared herebuilt-in function %q+D declared as non-functionbuilt-in function %qD declared as non-functionbuilt-in function %qD is not enabledbuilt-in function %qD requires the %<-mconstant-cfstrings%> flagbuilt-in function %qD takes one argument onlybuilt-in function %qE must be directly calledbuilt-in function %qE not supported for MIPS16built-in function %qE requires the %qs ISA extensionbuilt-in function %qE requires the zve32f, zve64f, zve64d or v ISA extensionbuilt-in function %qE requires the zve64d or v ISA extensionbuilt-in function %qE requires the zve64x, zve64f, zve64d or v ISA extensionbuilt-in function %qE requires the zvfbfmin or zvfbfwma ISA extensionbuilt-in function %qE requires the zvfhmin or zvfh ISA extensionbuilt-in function for named address-space is not supported for reduced Tiny devicesbuilt-in function is only supported for GNU-Cbuilt-in subscript operator with more than one expression in expression listbuilt-in subscript operator without expression listbuiltin %qF is deprecatedbuiltin %qF is for GCC internal use onlybuiltin %qF is not supported without %<-mhtm%> (default with %<-march=zEC12%> and higher)builtin %qF requires %<-mvx%> (default with %<-march=z13%> and higher)builtin %qs can only be used on vector typesbuiltin %qs is only valid in 64-bit modebuiltin %qs needs GLIBC (2.23 and newer) that exports hardware capability bitsbuiltin %qs only accepts 1 argumentbuiltin %qs only accepts 2 argumentsbuiltin %qs only accepts 3 argumentsbuiltin %qs only accepts a string argumentbuiltin requires an immediate for operand %dbut %qD does not throw; perhaps it should be declared %<noexcept%>but %qs has notbut is prevailed by one without from other translation unitbut not hereby argument %u of type %s to %qD declared hereby argument %u of type %s to %qTbytecode stream in file %qs generated with GCC compiler older than 10.0bytecode stream in file %qs generated with LTO version %d.%d instead of the expected %d.%dbytecode stream: expected tag %s instead of %sbytecode stream: found empty cgraph nodebytecode stream: found multiple instances of cgraph node with uid %dbytecode stream: found non-null terminated stringbytecode stream: garbage at the end of symbols sectionbytecode stream: no callee found while reading edgebytecode stream: no caller found while reading edgebytecode stream: string too long for the string tablebytecode stream: tag %s is not in the expected range [%s, %s]bytecode stream: trying to read %d bytes after the end of the input bufferbytecode stream: unexpected LTO section %sbytecode stream: unexpected tag %sbytecode stream: unknown GIMPLE statement tag %scall   %2d never executed
  call   %2d returned %s
! call a real function, rather than the builtin equivalentcall and return value are differentcall has circular dependencycall invocation refers to localscall is considered never executed and code size would growcall is unlikely and code size would growcall may throw exception caught locally or perform cleanupscall may throw exception that does not propagatecall of %<%T::operator[] (%A)%> is ambiguouscall of %<(%T) (%A)%> is ambiguouscall of overloaded %<%D(%A)%> is ambiguouscall of overloaded %<%s(%A)%> is ambiguouscall stmt hash does not point to first direct edge of speculative call sequencecall to %<__builtin_operator_delete%> does not select replaceable global deallocation functioncall to %<__builtin_operator_new%> does not select replaceable global allocation functioncall to %qDcall to %qD herecall to %qD uses the default argument for parameter %P, which is not yet definedcall to %qE is ambiguous; argument %d has type %qs but argument %d has type %qscall to %qs declared with attribute error: %scall to %qs declared with attribute warning: %scall to a function that shares %qs state from a function that has no %qs statecall to a function that shares SME state from a function that has no SME statecall to a function that shares state other than %qs from a function that has %qs statecall to consteval function %qE is not a constant expressioncall to function %qD which throws incomplete type %q#Tcall to function which throws incomplete type %q#Tcall to internal function %qEcall to non-%<constexpr%> function %qDcall to non-function %qDcall-clobbered register used for global register variablecalled from herecalled from this functioncalled object %qD is not a function or function pointercalled object %qE is not a function or function pointercalled object is not a function or function pointercallee does not returncallee refers to comdat-local symbolscallee required more stack slots than the callercallee returns a structurecallee returns twicecaller and callee disagree in promotion of function return valuecaller edge count does not match BB countcaller edge count invalidcaller is not optimizedcaller uses __builtin_eh_returncaller uses allocacaller uses setjmpcaller uses sjlj exceptionscaller uses stdargscalling %<always_inline%> %<strub%> %qD in non-%<strub%> context %qDcalling %qD using non-%<strub%> type %qT in %<strub%> context %qDcalling %qD with SSE calling convention without SSE/SSE2 enabledcalling %qD with a nonzero argument is unsafecalling %qD with attribute sseregparm without SSE/SSE2 enabledcalling %qE without side effects discards return value of type %qT; prepend a %<cast(void)%> if intentionalcalling %qT with attribute sseregparm without SSE/SSE2 enabledcalling a streaming function requires the ISA extension %qscalling constexpr member function %qD through virtual base subobjectcalling non-%<strub%> %qD in %<strub%> context %qDcalls to functions of type %qT require the SVE ISA extensioncalls to overloaded operators cannot appear in a constant-expressioncalls to the OpenMP runtime API are not permitted in intervening codecalls_comdat_local is set outside of a comdat groupcan only use %qE attribute on file-scope definitions of objects of class typecan use at most one of the %<constinit%> and %<constexpr%> specifierscan't use non gp relative absolute addresscandidate %i:candidate 1:candidate 2:candidate expects %d argument, %d providedcandidate expects %d arguments, %d providedcandidate expects at least %d argument, %d providedcandidate expects at least %d arguments, %d providedcandidate is:candidates are:candidates are:cannot %<dynamic_cast%> %qE (of type %q#T) to type %q#T (%s)cannot %<goto%> into %<catch%> blockcannot %<goto%> into %<try%> blockcannot add an enumerator list to a template instantiationcannot add contracts after definitioncannot add contracts to a virtual functioncannot allocate an object of abstract type %qTcannot allocate array: size not constantcannot allocate objects with RVV type %qTcannot allocate objects with SVE type %qTcannot allocate stack for variable %q+D, naked functioncannot allocate vl register for %qs on this targetcannot apply %<offsetof%> to a non constant addresscannot apply %<offsetof%> to an enumerator %qDcannot apply %<offsetof%> to destructor %<~%T%>cannot apply %<offsetof%> to member functioncannot apply %<offsetof%> to member function %qDcannot apply %<offsetof%> to static data member %qDcannot apply %<offsetof%> when %<operator[]%> is overloadedcannot apply %qs to %qD, which has also been marked with an OpenMP 'declare target' directivecannot apply attribute %qs to %q+D after the function has been definedcannot apply both %<longcall%> and %<shortcall%> attributes to the same functioncannot apply member pointer %qE to %qE, which is of non-class type %qTcannot attach %<::main%> to a named modulecannot bind bit-field %qE to %qTcannot bind lvalue reference of type %qH to an rvalue of type %qIcannot bind non-const lvalue reference of type %qH to a value of type %qIcannot bind non-const lvalue reference of type %qH to an rvalue of type %qIcannot bind packed field %qE to %qTcannot bind reference of type %qH to %qI due to different array boundscannot bind rvalue %qE to %qTcannot bind rvalue reference of type %qH to lvalue of type %qIcannot call a concept as a functioncannot call constructor %<%T::%D%> directlycannot call member function %qD without objectcannot capture %qE by referencecannot capture member %qD of anonymous unioncannot cast %qs to %qs since sizes do not line upcannot cast expression of type %qs to %qscannot cast expression of type %qs to type %qscannot catch type %qT because it involves types of variable sizecannot close nonexistent response filecannot close receive-only channelcannot combine GNU and SVE vectors in a binary operationcannot combine a base of type %qT with an index of type %qTcannot combine a base of type %qT with an offset of type %qTcannot convert %qE from type %qH to type %qIcannot convert %qE from type %qT to type %qTcannot convert %qE to %qTcannot convert %qE to %qT becausecannot convert %qH to %qIcannot convert %qH to %qI in argument passingcannot convert %qH to %qI in assignmentcannot convert %qH to %qI in default argumentcannot convert %qH to %qI in initializationcannot convert %qH to %qI in returncannot convert a delegate expression to %qscannot convert a value of type %qT to vector type %qT which has different sizecannot convert a vector of type %qT to type %qT which has different sizecannot convert expression, only base types can be convertedcannot convert from %qT to base class %qT because %qT is incompletecannot convert from base class %qT to derived class %qT because the base is virtualcannot convert from base class %qT to derived class %qT via virtual base %qTcannot convert from incomplete type %qH to %qIcannot convert from pointer to base class %qT to pointer to derived class %qT because the base is virtualcannot convert from pointer to base class %qT to pointer to derived class %qT via virtual base %qTcannot convert parameter %qs from type %qs to type %qs in argument passingcannot convert parameter %qs from type %qs to type %qs in assignmentcannot convert struct %qs to %qscannot convert to a pointer typecannot convert type %qH to type %qIcannot convert value to a vectorcannot create a new %qs scope since %qs is shared with callerscannot create pointer to reference member %qDcannot create precompiled header %s: %mcannot create type information for type %qT because it involves types of variable sizecannot declare %<::main%> to be %qscannot declare %<::main%> to be a global variablecannot declare %<::main%> to be a templatecannot declare %<::main%> to be inlinecannot declare %<::main%> to be staticcannot declare %<::main%> with a linkage specificationcannot declare %<catch%> parameter to be of abstract class type %qTcannot declare %<catch%> parameter to be of rvalue reference type %qTcannot declare %qD to be a bit-field typecannot declare a parameter with %<decltype(auto)%>cannot declare bit-field %qD with %<warn_if_not_aligned%> typecannot declare bit-field %qD with function typecannot declare bit-field %qs with %<warn_if_not_aligned%> typecannot declare field %q+D to be of abstract type %qTcannot declare member %<%T::%s%> within %qTcannot declare member function %<%T::%s%> within %qTcannot declare member function %qD to have static linkagecannot declare parameter %q+D to be of abstract type %qTcannot declare parameter to be of abstract type %qTcannot declare pointer to %q#Tcannot declare pointer to %q#T membercannot declare pointer to qualified function type %qTcannot declare reference to %q#Tcannot declare reference to %q#T, which is not a typedef or a template type argumentcannot declare reference to qualified function type %qTcannot declare static function inside another functioncannot declare variable %q+D to be of abstract type %qTcannot decompose addresscannot decompose class type %qT because it has an anonymous struct membercannot decompose class type %qT because it has an anonymous union membercannot decompose class type %qT without non-static data memberscannot decompose class type %qT: both it and its base class %qT have non-static data memberscannot decompose class type %qT: its base classes %qT and %qT have non-static data memberscannot decompose inaccessible member %qD of %qTcannot decompose lambda closure type %qTcannot decompose non-array non-class type %qTcannot decompose union type %qTcannot decompose variable length array %qTcannot decompose variable length vector %qTcannot decrement a pointer to incomplete type %qTcannot deduce template arguments for copy-initialization of %qT, as it has no non-explicit deduction guides or user-declared constructorscannot deduce template arguments of %qT, as it has no viable deduction guidescannot default compare anonymous union membercannot default compare flexible array membercannot default compare reference member %qDcannot default compare union %qTcannot define friend function %qs in a local class definitioncannot define member function %<%T::%s%> within %qTcannot define member of dependent typedef %qTcannot delete a function.  Only pointer-to-objects are valid arguments to %<delete%>cannot delete objects with RVV type %qTcannot delete objects with SVE type %qTcannot derive from %<final%> base %qT in derived type %qTcannot determine %<#include%> translation of %s: %scannot determine the length of a %qscannot disable built-in function %qscannot emit unaligned pointers in ptx assemblycannot execute %qs: %scannot execute %qs: %s: %mcannot expand initializer for member %qDcannot explicitly declare member %q#D to have extern linkagecannot extend PCH file: %mcannot fallthrough final case in switchcannot find %<ldd%>cannot find %<nm%>cannot find %qscannot find %s in plugin %s
! %scannot find %s in plugin %s: %scannot find LTO cgraph in %scannot find LTO section refs in %scannot find a register in class %qs while reloading %<asm%>cannot find a valid counter name %qs of %<-fdbg-cnt=%> optioncannot find class %qEcannot find instance variable associated with propertycannot find interface declaration for %qEcannot find interface declaration for %qE, superclass of %qEcannot find protocol declaration for %qEcannot find reference tag for class %qEcannot form pointer to member of non-class %q#Tcannot generate position-independent code for %qscannot get frame pointer to %qscannot get position in PCH file: %mcannot get program status: %mcannot handle comparison of type %<%s == %s%>cannot handle inconsistent calls to %qscannot handle switch condition of type %scannot honor conflicting %qs clausecannot import module in its own purviewcannot increment a pointer to incomplete type %qTcannot index an empty packcannot initialize aggregate of type %qT with a compound literalcannot initialize array of %qT from a string literal with type array of %qTcannot inline function %<main%>cannot instantiate %<coroutine traits%>cannot instantiate a %<coroutine handle%> for promise type %qTcannot load plugin %s
! %scannot load plugin %s: %scannot mix operands of decimal floating and complex typescannot mix operands of decimal floating and other floating typescannot mix operands of decimal floating and vector typescannot nest more than %d namespacescannot open %qscannot open %qs for writing: %mcannot open %scannot open %s for writing: %mcannot open %s: %mcannot open '%s'cannot open file %qs for writing optimization recordscannot open intermediate gcn asm filecannot open intermediate ptx filecannot open ldd output: %mcannot open nested response filecannot open nm output: %mcannot open omp_requires file %qscannot open profile file %scannot pass argument in vector register because altivec instructions are disabled, use %qs to enable themcannot put object with volatile field into registercannot read %<LTO_section_decls%> from %scannot read %s: %mcannot read LTO mode table from %scannot read PCH file: %mcannot read function profile from %scannot read omp_requires file %qscannot read spec file %qs: %mcannot read string table from %scannot receive reference type %qT through %<...%>cannot reference %qT object types in %<target%> regioncannot reload integer constant operand in %<asm%>cannot represent built-in %<va_list%> type in Dcannot resolve overloaded function %qD based on conversion to type %qTcannot return from a handler of a function-try-block of a constructorcannot return value in vector register because altivec instructions are disabled, use %qs to enable themcannot set %qE attribute after definitioncannot set interrupt attribute: no current functioncannot set interrupt attribute: no such identifiercannot set position in PCH file: %mcannot specify %<-o%> with %<-c%>, %<-S%> or %<-E%> with multiple filescannot specify %<override%> for a classcannot specify -static with -fsanitize=addresscannot specify -static with -fsanitize=hwaddresscannot specify -static with -fsanitize=threadcannot specify both %<-msep-data%> and %<-mid-shared-library%>cannot tail-call: %scannot tail-call: return value must be a callcannot take address of %qscannot take address of bit-field %qDcannot take address of scalar with reverse storage ordercannot take the address of %<this%>, which is an rvalue expressioncannot take the address of this expressioncannot throw C++ classescannot throw COM objectscannot throw expression of type %qT because it involves types of variable sizecannot throw or catch RVV type %qTcannot throw or catch SVE type %qTcannot type switch on non-interface valuecannot update SSA formcannot use %<-%> as input filename for a precompiled headercannot use %<-mtp=cp15%> with 16-bit Thumbcannot use %<::%> in parameter declarationcannot use %<_%> as valuecannot use %<indirect_call%> attribute under linux toolchaincannot use %<typeid%> with %<-fno-rtti%>cannot use %<va_arg%> with reverse storage ordercannot use %<va_start%> in interrupt functioncannot use %qs as a call-saved registercannot use %qs as a call-used registercannot use %qs as a fixed registercannot use an object as parameter to a methodcannot use exception attributes to function %qD under linux toolchaincannot use interrupt attributes to function %qD under linux toolchaincannot use keyword %qs as enumeration constantcannot use mode %qs for enumerated typescannot use mshared and static togethercannot use mthreads and mlegacy-threads togethercannot use multidimensional subscript in OpenMP array sectioncannot use multiple stack checking methods togethercannot use reset attributes to function %qD under linux toolchaincannot use small-data accesses for %qscannot use type %s as type %scannot value-initialize array of unknown bound %qTcannot write %s: %mcannot write PCH filecannot write PCH file: %mcannot write PCH file: required memory segment unavailablecannot write padding to PCH file: %mcannot write to %s: %mcanonical types differ for identical types %qT and %qTcapture by copy of RVV type %qTcapture by copy of SVE type %qTcapture by copy of incomplete type %qTcapture of non-variable %qEcapture of variable %qD with non-automatic storage durationcapture of variably-modified type %qT that is not an N3639 array of runtime boundcaptured structured bindings are a C++20 extensioncase label %qE not within a switch statementcase label does not reduce to an integer constantcase label is not an integer constant expressioncase label not within a switch statementcase label value exceeds maximum value for typecase label value is less than minimum value for typecase labels not sorted in switch statementcase labels not sorted: case value %qs not in enumerated typecase value %qs not in enumerated type %qTcast adds %q#v qualifier to function typecast between incompatible function types from %qH to %qIcast between incompatible function types from %qT to %qTcast between incompatible pointer to member types from %qH to %qIcast discards %qv qualifier from pointer target typecast from %qH to %qI increases required alignment of target typecast from %qH to %qI loses precisioncast from %qT is not allowedcast from %qT is not allowed in a constant expression because pointed-to type %qT is not similar to %qTcast from %qT is not allowed in a constant expression before C++26cast from %qs to %qs will produce zero resultcast from function call of type %qT to non-matching type %qTcast from pointer to integer of different sizecast from type %qT to type %qT casts away qualifierscast increases required alignment of target typecast specifies array typecast specifies function typecast to %qs address space pointer from disjoint %qs address space pointercast to %qs address space pointer from disjoint generic address space pointercast to %qs will produce null resultcast to generic address space pointer from disjoint %qs address space pointercast to non-integral type %qT in a constant expressioncast to pointer from integer of different sizecast to union type from type not present in unioncasting %qT to %qT does not dereference pointercasting %qT to %qT does not use %qDcasting between pointer-to-function and pointer-to-object is conditionally-supportedcatching non-call exceptions in functions with SME statecatching non-reference type %q#Tcatching polymorphic type %q#T by valuecatching type %q#T by valuecategory attributes are not available in Objective-C 1.0category attributes are not available in this version of the compiler, (ignored)cdecl and thiscall attributes are not compatiblecgraph count invalidcgraph_node has wrong clone listcgraph_node has wrong clone_ofcgraph_node has wrong prev_clone pointercgraph_node is in clone list but it is not clonechange of the active member of a union from %qD to %qD during initializationchange of the active member of a union from %qD to %qD is not a constant expression before C++20changing the return type from %qs to a comparison category type will allow the comparison to use %qs and %qscheck_charlen_present(): length not setcheck_dimension(): Bad array referencecheck_dummy_characteristics: Unexpected result %i of gfc_dep_compare_exprcheck_init_expr(): Unknown expression typecheck_intents(): List mismatchcheck_restricted(): Unknown expression typecheck_result_characteristics (1): Unexpected result %i of gfc_dep_compare_exprcheck_result_characteristics (2): Unexpected result %i of gfc_dep_compare_exprcheck_some_aliasing(): List mismatchcheck_some_aliasing(): corrupted datachecksum is (%x,%x) instead of (%x,%x)choosing %qD over %qDchunk size value must be positivecircular pointer delegation detectedclass %qE already existsclass %qE defined without specifying a base classclass %qE is deprecatedclass %qE is not availableclass %qE is unavailableclass %qT does not have any field named %qDclass %qT is implicitly friends with itselfclass %qs does not implement the %qE protocolclass attributes are not available in Objective-C 1.0class definition may not be declared a friendclass extension for class %qE declared after its %<@implementation%>class extensions are not available in Objective-C 1.0class template %qD redeclared as non-templateclass template argument deduction failed:class template argument deduction for %qT failed: explicit deduction guide selected in copy-list-initializationclass template argument deduction is only available with %<-std=c++17%> or %<-std=gnu++17%>class type %qT is incompleteclauses in %<simd%> trait should be separated by %<,%>cleanup argument not a functioncleanup argument not an identifierclones for %<target_clones%> attribute cannot be createdclose: %sclosed intervalsclosing LTRANS output list %s: %mclosing dependency file %s: %mcoarray argumentcode between call and returncode may be misoptimized unless %<-fno-strict-aliasing%> is usedcode model %qs is not compatible with %scode model %qs not supported in ilp32 modecode model %qs not supported in the %s bit modecode model %qs not supported in x32 modecode model %qs with %<-f%s%>code model %qs with %qscode model %s does not support PIC modecollapse argument needs positive constant integer expressioncollect2 version %s
  collection in fast enumeration is not an objectcomdat symbol cannot be versionedcomdat-local function called by %s outside its comdatcomdat-local symbol referred to by %s outside its comdatcomma at end of enumerator listcomma-separated list in using-declaration only available with %<-std=c++17%> or %<-std=gnu++17%>command-line option %<-fno-builtin-%s%> is not valid for Fortrancommand-line option %qs is not supported by this configurationcommand-line option %qs is valid for %s but not for %scommand-line option %qs is valid for the driver but not for %scommon symbol cannot be versionedcommon variables must have an alignment of 32678 or lesscompare_actual_expr(): Bad component codecompare_real(): Bad operatorcomparing final insns dumpscomparing floating-point with %<==%> or %<!=%> is unsafecomparing the result of pointer addition %qE and NULLcomparing vectors with different element typescomparing vectors with different number of elementscomparison between %q#T and %q#Tcomparison between %qT and %qTcomparison between distinct pointer types %qT and %qT lacks a castcomparison between distinct pointer-to-member types %qT and %qT lacks a castcomparison between pointer and integercomparison between pointer and zero character constantcomparison between two arrayscomparison between two arrays is deprecated in C++20comparison between two arrays is not allowed in C++26comparison between types %qT and %qTcomparison is always %dcomparison is always %d due to width of bit-fieldcomparison is always false due to limited range of data typecomparison is always true due to limited range of data typecomparison of complete and incomplete pointerscomparison of constant %qE with boolean expression is always falsecomparison of constant %qE with boolean expression is always truecomparison of distinct Objective-C types lacks a castcomparison of distinct pointer types lacks a castcomparison of enumeration type %qT with floating-point type %qTcomparison of enumeration type %qT with floating-point type %qT is deprecatedcomparison of floating-point type %qT with enumeration type %qTcomparison of floating-point type %qT with enumeration type %qT is deprecatedcomparison of integer expressions of different signedness: %qT and %qTcomparison of pointers to disjoint address spacescomparison of promoted bitwise complement of an unsigned value with constantcomparison of promoted bitwise complement of an unsigned value with unsignedcomparison of unsigned expression in %<< 0%> is always falsecomparison of unsigned expression in %<>= 0%> is always truecomparison operator %q+D defaulted after its first declarationcomparison requiredcomparison with string literal results in unspecified behaviorcomparisons like %<X<=Y<=Z%> do not have their mathematical meaningcompatible type is herecompilation terminated due to -Wfatal-errors.
  compilation terminated due to -fmax-errors=%u.
  compilation terminated.
--- 2099,2109 ----
  Using faster switch lowering algorithms. Number of switch cases (%d) exceeds %<--param=switch-lower-slow-alg-max-cases=%d%> limit.Using function %qs at %L is deprecatedUsing parameter %qs declared at %L is deprecatedUsing subroutine %qs at %L is deprecatedUsing variable %qs at %L is deprecatedUsually "private extern" (hidden) symbols are made local when linking, this command suppresses that such that they remain exported.VALUE argument of the %s intrinsic function at %L shall be definableVALUE attribute at %CVALUE is not allowed inside of BLOCK at %CVALUE object %qs in %s clause at %LVALUE statement at %CVALUES argument of DATE_AND_TIME at %L has non-default kindVALUES argument of DATE_AND_TIME at %L must have a decimal exponent range of at least fourVOIDmode on an outputVOLATILE attribute at %CVOLATILE attribute at %L cannot be specified in a PURE procedureVOLATILE attribute not permitted for %qs in REDUCE locality-spec at %LVOLATILE statement at %CValid ISA versions (for use with the -mcpu= option)Valid arguments for the -msdata= option:Valid arguments to -malign-:Valid arguments to -mcode-readable=:Valid arguments to -mfpmath=:Valid arguments to -mr10k-cache-barrier=:Valid arguments to -mstack-protector-guard=:Valid arguments to -mstringop-strategy=:Valid arguments to -mtp=:Valid arguments to -param=vsetvl-strategy=:Validate vtable pointers before using them.Value of HINT clause at %L shall be a valid constant hint expressionVariable %qs at %C cannot be redefined inside loop beginning at %LVariable %qs at %C with an initializer already appears in a DATA statementVariable %qs at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scopeVariable %qs at %L cannot have both the ALLOCATABLE and BIND(C) attributesVariable %qs at %L cannot have both the OPTIONAL and the VALUE attribute because procedure %qs is BIND(C)Variable %qs at %L cannot have both the POINTER and BIND(C) attributesVariable %qs at %L has already been specified in a locality-specVariable %qs at %L has not been assigned a format labelVariable %qs at %L in common block %qs at %C must be declared with a C interoperable kind since common block %qs is bind(c)Variable %qs at %L in this context must be constantVariable %qs at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray componentsVariable %qs at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy argumentVariable %qs at %L is a dummy argument of the BIND(C) procedure %qs but may not be C interoperableVariable %qs at %L is a dummy argument to the BIND(C) procedure %qs but is not C interoperable because derived type %qs is not C interoperableVariable %qs at %L is a dummy argument to the BIND(C) procedure %qs but is not C interoperable because it is polymorphicVariable %qs at %L is in COMMON but only in BLOCK DATA initialization is allowedVariable %qs at %L may not be a C interoperable kind but it is BIND(C)Variable %qs at %L not definable inside loop beginning at %L as INTENT(INOUT) argument to function %qsVariable %qs at %L not definable inside loop beginning at %L as INTENT(INOUT) argument to subroutine %qsVariable %qs at %L not specified in a locality spec of DO CONCURRENT at %L but required due to DEFAULT (NONE)Variable %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarrayVariable %qs at %L set to undefined value inside loop beginning at %L as INTENT(OUT) argument to function %qsVariable %qs at %L set to undefined value inside loop beginning at %L as INTENT(OUT) argument to subroutine %qsVariable %qs at %L with ALLOCATABLE attribute in procedure %qs with BIND(C)Variable %qs at %L with OPTIONAL attribute in procedure %qs which is BIND(C)Variable %qs at %L with POINTER attribute in procedure %qs with BIND(C)Variable %qs at %L with coarray component shall be a nonpointer, nonallocatable scalar, which is not a coarrayVariable %qs cannot appear in a variable definition context (%s) at %L in PURE procedureVariable %qs cannot appear in the expression at %LVariable %qs from module %qs with binding label %qs at %L uses the same global identifier as entity at %L from module %qsVariable %qs has not been assigned a target label at %LVariable %qs in %s clause is used in NAMELIST statement at %LVariable %qs in common block %qs at %C cannot be bind(c) since it is not globalVariable %qs in common block %qs at %C must be declared with a C interoperable kind since common block %qs is BIND(C)Variable %qs in common block %qs at %L cannot be declared with BIND(C) since it is not a globalVariable %qs in common block %qs at %L may not be a C interoperable kind though common block %qs is BIND(C)Variable %qs in locality-spec at %L is not usedVariable %qs is PROTECTED and cannot appear in a pointer association context (%s) at %LVariable %qs is PROTECTED and cannot appear in a variable definition context (%s) at %LVariable %qs is not a dummy argument at %LVariable %qs is used at %L before the ENTRY statement in which it is a parameterVariable %qs referenced in concurrent-header at %L must not appear in LOCAL locality-spec at %LVariable %qs shall be declared in the same scoping unit as !$ACC DECLARE at %LVariable %qs with binding label %qs at %L uses the same global identifier as entity at %LVariable %qs, used in a specification expression, is referenced at %L before the ENTRY statement in which it is a parameterVariable %s at %L of type EVENT_TYPE or with subcomponent of type EVENT_TYPE must be a coarrayVariable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarrayVariable %s at %L with NO_ARG_CHECK attribute may not have the ALLOCATABLE, CODIMENSION, POINTER or VALUE attributeVariable %s at %L with NO_ARG_CHECK attribute may not have the INTENT(OUT) attributeVariable %s at %L with NO_ARG_CHECK attribute may only be used as actual argumentVariable %s at %L with NO_ARG_CHECK attribute shall be a dummy argumentVariable %s at %L with NO_ARG_CHECK attribute shall be of type TYPE(*) or of an numeric intrinsic typeVariable %s at %L with NO_ARG_CHECK attribute shall either be a scalar or an assumed-size arrayVariable %s at %L with NO_ARG_CHECK attribute shall not have a subobject referenceVariable %s cannot be INTENT(IN) at %CVariable %s cannot be assigned in PURE procedure at %CVariable at %C is an element of a COMMON blockVariable at %L mentioned multiple times in clauses of the same OMP DECLARE TARGET directiveVariable in the ordinary assignment at %L is a procedure pointer componentVariable is USE-associated with !$ACC DECLARE at %LVariable other than OMP_OUT or OMP_IN used in combiner of !$OMP DECLARE REDUCTION at %LVariable other than OMP_PRIV or OMP_ORIG used in INITIALIZER clause of !$OMP DECLARE REDUCTION at %LVariable type is UNKNOWN in assignment at %LVariable with NO_ARG_CHECK attribute at %L is only permitted as argument to the intrinsic functions C_LOC and PRESENTVariants in a metadirective at %L have different associations; consider using a BLOCK constructVariants in a metadirective at %L have different associations; consider using a BLOCK construct or BEGIN/END METADIRECTIVEVector library ABI to use.Vector size conflicts between AVX10.1 and AVX512, using 512 as max vector sizeVectorize for double-word operations.Verify that paths are feasible when emitting diagnostics.Version loops based on whether indices have a stride of one.Virtual function multiversioning not supportedWAIT at %C not allowed in Fortran 95WAIT clause at %L requires a scalar INTEGER expressionWAIT statement not allowed in PURE procedure at %CWHERE assignment target at %L has inconsistent shapeWHERE mask at %L has inconsistent shapeWHERE/ELSEWHERE clause at %L requires a LOGICAL arrayWarn about "extern" declarations not at file scope.Warn about "suspicious" constructs.Warn about #pragma once outside of a header.Warn about 'new' of type with extended alignment without -faligned-new.Warn about @selector()s without previously declared methods.Warn about C constructs that are not in the common subset of C and C++.Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO C++ 2011.Warn about C++ constructs whose meaning differs between ISO C++ 2011 and ISO C++ 2014.Warn about C++ constructs whose meaning differs between ISO C++ 2014 and ISO C++ 2017.Warn about C++ constructs whose meaning differs between ISO C++ 2017 and ISO C++ 2020.Warn about C++ polymorphic types where adding final keyword would improve code quality.Warn about C++ virtual methods where adding final keyword would improve code quality.Warn about C++11 constructs in code compiled with an older standard.Warn about C++11 inheriting constructors when the base has a variadic constructor.Warn about C++14 constructs in code compiled with an older standard.Warn about C++17 constructs in code compiled with an older standard.Warn about C++20 constructs in code compiled with an older standard.Warn about C++23 constructs in code compiled with an older standard.Warn about C++26 constructs in code compiled with an older standard.Warn about GCC format strings with strings unsuitable for diagnostics.Warn about NULL being passed to argument slots marked as requiring non-NULL.Warn about PCH files that are found but not used.Warn about USE statements that have no ONLY qualifier.Warn about __TIME__, __DATE__ and __TIMESTAMP__ usage.Warn about a cast to reference type that does not use a related user-defined conversion function.Warn about accesses to interior zero-length array members.Warn about alignment of COMMON blocks.Warn about all enumerated switches missing a specific case.Warn about an empty body in an if or else statement.Warn about an invalid DO loop.Warn about boolean expression compared with an integer value different from true/false.Warn about buffer overflow in string manipulation functions like memcpy and strcpy.Warn about called procedures not explicitly declared.Warn about calling std::move on a local object in a return statement preventing copy elision.Warn about calls to snprintf and similar functions that truncate output.Warn about calls to snprintf and similar functions that truncate output. Same as -Wformat-truncation=1.Warn about calls to strcmp and strncmp used in equality expressions that are necessarily true or false due to the length of one and size of the other argument.Warn about calls with arguments to functions declared without parameters.Warn about calls with implicit interface.Warn about cases where -ftrivial-auto-var-init cannot initialize an auto variable.Warn about casting functions to incompatible types.Warn about casts between incompatible function types.Warn about casts that will produce a null result.Warn about casts which discard qualifiers.Warn about catch handlers of non-reference type.Warn about certain operations on boolean expressions.Warn about character arrays initialized as unterminated character sequences with a string literal.Warn about code affected by incompatible psABI changes.Warn about code paths in which NULL is passed to a must-not-be-NULL function argument.Warn about code paths in which a NULL function pointer is called.Warn about code paths in which a NULL pointer is dereferenced.Warn about code paths in which a call is made to strtok with undefined behavior.Warn about code paths in which a file descriptor can be closed more than once.Warn about code paths in which a file descriptor is not closed.Warn about code paths in which a file descriptor is used without being checked for validity.Warn about code paths in which a freed value is used.Warn about code paths in which a heap-allocated pointer leaks.Warn about code paths in which a longjmp rewinds to a jmp_buf saved in a stack frame that has returned.Warn about code paths in which a non-heap pointer is freed.Warn about code paths in which a pointer can be freed more than once.Warn about code paths in which a pointer is checked for NULL after it has already been dereferenced.Warn about code paths in which a pointer to a buffer is assigned to an incompatible type.Warn about code paths in which a pointer to a stale stack frame is used.Warn about code paths in which a possibly-NULL pointer is dereferenced.Warn about code paths in which a possibly-NULL value is passed to a must-not-be-NULL function argument.Warn about code paths in which a read or write is performed on a closed file descriptor.Warn about code paths in which a shift with count >= width of type is attempted.Warn about code paths in which a shift with negative count is attempted.Warn about code paths in which a stdio FILE can be closed more than once.Warn about code paths in which a stdio FILE is not closed.Warn about code paths in which a va_list is used after va_end.Warn about code paths in which a write or read to a buffer is out-of-bounds.Warn about code paths in which an 'assert()' is made involving an unsanitized value.Warn about code paths in which an async-signal-unsafe function is called from a signal handler.Warn about code paths in which an on-stack buffer is passed to putenv.Warn about code paths in which an operation is attempted in the wrong phase of a file descriptor's lifetime.Warn about code paths in which an operation is attempted on the wrong type of file descriptor.Warn about code paths in which an uninitialized value is used.Warn about code paths in which an unsanitized value is used as a divisor.Warn about code paths in which an unsanitized value is used as a pointer offset.Warn about code paths in which an unsanitized value is used as a size.Warn about code paths in which an unsanitized value is used as an allocation size.Warn about code paths in which an unsanitized value is used as an array index.Warn about code paths in which floating-point arithmetic is used in locations where precise computation is needed.Warn about code paths in which pointer subtraction involves undefined behavior.Warn about code paths in which read on a write-only file descriptor is attempted, or vice versa.Warn about code paths in which sensitive data is copied across a security boundary.Warn about code paths in which sensitive data is written to a file.Warn about code paths in which the wrong deallocation function is called.Warn about code paths in which undefined behavior would occur due to overlapping buffers.Warn about code paths in which va_arg is used too many times on a va_list.Warn about code paths in which va_arg uses the wrong type.Warn about code paths in which va_start or va_copy is used without a corresponding va_end.Warn about code paths which appear to lead to an infinite loop.Warn about code paths which appear to lead to infinite recursion.Warn about code paths which attempt to write to a const object.Warn about code paths which attempt to write to a string literal.Warn about code which might break strict aliasing rules.Warn about comparison of different enum types.Warn about comparisons between two operands of array type.Warn about compile-time integer division by zero.Warn about constant integer divisions with truncated results.Warn about creation of array temporaries.Warn about dangling else.Warn about declarations of entities that may be missing attributes that related entities have been declared with.Warn about deleting polymorphic objects with non-virtual destructors.Warn about deprecated 'vector long ...' AltiVec type usage.Warn about deprecated arithmetic conversions on operands of enumeration types.Warn about deprecated arithmetic conversions on operands where one is of enumeration type and the other is of a floating-point type.Warn about deprecated omission of comma before ... in varargs function declaration.Warn about deprecated space between "" and suffix in a user-defined literal operator.Warn about deprecated uses of volatile qualifier.Warn about divisions of two sizeof operators when the first one is applied to an array and the divisor does not equal the size of the array element.Warn about duplicated branches in if-else statements.Warn about duplicated conditions in an if-else-if chain.Warn about enum/integer type mismatches.Warn about enumerated switches missing a "default:" statement.Warn about enumerated switches, with no default, missing a case.Warn about equality comparisons involving REAL or COMPLEX expressions.Warn about features not present in ISO C11, but present in ISO C23.Warn about features not present in ISO C23, but present in ISO C2Y.Warn about features not present in ISO C90, but present in ISO C99.Warn about features not present in ISO C99, but present in ISO C11.Warn about features not present in traditional C.Warn about format strings that are not literals.Warn about format strings that contain NUL bytes.Warn about function call elimination.Warn about function calls with format strings that write past the end of the destination region.Warn about function calls with format strings that write past the end of the destination region.  Same as -Wformat-overflow=1.Warn about function definitions omitting parameter names.Warn about function parameters declared without a type specifier in K&R-style functions.Warn about function pointer arithmetic.Warn about functions which might be candidates for __attribute__((cold)).Warn about functions which might be candidates for __attribute__((const)).Warn about functions which might be candidates for __attribute__((malloc)).Warn about functions which might be candidates for __attribute__((noreturn)).Warn about functions which might be candidates for __attribute__((pure)).Warn about functions which might be candidates for __attribute__((returns_nonnull)).Warn about functions which might be candidates for format attributes.Warn about global functions without previous declarations.Warn about global functions without prototypes.Warn about global variables without previous declarations.Warn about implicit conversion of enum types.Warn about implicit conversions from "float" to "double".Warn about implicit declarations.Warn about implicit function declarations.Warn about improper usages of flexible array members according to the level of -fstrict-flex-arrays.Warn about inappropriate attribute usage.Warn about incompatible integer to pointer and pointer to integer conversions.Warn about invalid OpenACC dimensions.Warn about invalid UTF-8 characters.Warn about invalid forms of delimited or named escape sequences.Warn about invalid uses of the "offsetof" macro.Warn about labels on declarations and at the end of compound statements.Warn about leading whitespace style issues on lines except when in raw string literals.Warn about likely missing requires keyword.Warn about macros defined in the main file that are not used.Warn about macros that have conflicting header units definitions.Warn about maybe uninitialized automatic variables.Warn about mismatched declarations of VLA parameters.Warn about mismatched declarations of array parameters and unsafe accesses to them.Warn about missing ampersand in continued character constants.Warn about missing fields in struct initializers.Warn about missing sized deallocation functions.Warn about misuses of pragmas.Warn about most implicit conversions.Warn about multiple declarations of the same object.Warn about narrowing conversions within { } that are ill-formed in C++11.Warn about non-virtual destructors.Warn about none ISO msvcrt scanf/printf width extensions.Warn about nonsensical values of --param destructive-interference-size or constructive-interference-size.Warn about optimizations that assume that signed overflow is undefined.Warn about overflow in arithmetic expressions.Warn about overloaded virtual function names.Warn about overriding initializers with side effects.Warn about overriding initializers without side effects.Warn about packed bit-fields whose offset changed in GCC 4.4.Warn about passing a pointer/reference to a local or temporary variable to a musttail call argument.Warn about pointer casts which increase alignment.Warn about pointer/reference to a local or temporary variable possibly escaping to a musttail call.Warn about positional initialization of structs requiring designated initializers.Warn about possible aliasing of dummy arguments.Warn about possible security problems with format functions.Warn about possible violations of sequence point rules.Warn about possibly incorrect subscripts in do loops.Warn about possibly missing braces around initializers.Warn about possibly missing parentheses.Warn about possibly nested block comments, and C++ comments spanning more than one physical line.Warn about potentially suboptimal choices related to OpenACC parallelism.Warn about printf/scanf/strftime/strfmon format string anomalies.Warn about questionable usage of the macros used to retrieve variable arguments.Warn about reading past the end of a source array in string manipulation functions like memchr and memcpy.Warn about real-literal-constants with 'q' exponent-letter.Warn about redundant calls to std::move.Warn about returning a pointer/reference to a local or temporary variable.Warn about returning structures, unions or arrays.Warn about semicolon after in-class function definition.Warn about sign differences with format functions.Warn about signed-unsigned comparisons.Warn about simple-template-id in a constructor or destructor.Warn about some C++ One Definition Rule violations during link time optimization.Warn about statements between switch's controlling expression and the first case.Warn about stray tokens after #else and #endif.Warn about strftime formats yielding 2-digit years.Warn about subscripts whose type is "char".Warn about suspicious OpenMP code.Warn about suspicious calls to calloc-like functions where sizeof expression is the earlier size argument and not the latter.Warn about suspicious calls to memset where the third argument contains the number of elements not multiplied by the element size.Warn about suspicious calls to memset where the third argument is constant literal zero and the second is not.Warn about suspicious declarations of "main".Warn about suspicious divisions of two sizeof expressions that don't work correctly with pointers.Warn about suspicious length parameters to certain string functions if the argument uses sizeof.Warn about suspicious uses of memory addresses.Warn about switch values that are outside of the switch's type range.Warn about switches with boolean controlling expression.Warn about templates naming TU-local entities in a module.Warn about the global module fragment not containing only preprocessing directives.Warn about the most vexing parse syntactic ambiguity.Warn about things that change between the current -fabi-version and the specified version.Warn about things that will change when compiling with an ABI-compliant compiler.Warn about trailing whitespace on lines except when in raw string literals.Warn about trailing whitespace on lines except when in raw string literals.   Equivalent to Wtrailing-whitespace=blanks when enabled or Wtrailing-whitespace=none when disabled.Warn about truncated character expressions.Warn about truncated source lines.Warn about truncation in string manipulation functions like strncat and strncpy.Warn about type safety and similar errors and mismatches in declarations with alias attributes.Warn about uncasted NULL used as sentinel.Warn about underflow of numerical constant expressions.Warn about uninitialized automatic variables.Warn about unprototyped function declarations.Warn about unrecognized pragmas.Warn about unsafe macros expanding to multiple statements used as a body of a clause such as if, else, while, switch, or for.Warn about unsuffixed float constants.Warn about unsupported features in ThreadSanitizer.Warn about unused dummy arguments.Warn about usage of experimental Function Multi Versioning.Warn about use of multi-character character constants.Warn about useless casts.Warn about user-specified include directories that do not exist.Warn about uses of __attribute__((deprecated)) declarations.Warn about uses of __attribute__((warning)) declarations.Warn about uses of a comma operator within a subscripting expression.Warn about uses of register storage specifier.Warn about uses of std::initializer_list that can result in dangling pointers.Warn about using variadic macros.Warn about variables that might be changed by "longjmp" or "vfork".Warn about variables which are initialized to themselves.Warn about violations of Effective C++ style rules.Warn about xor operators where it appears the user meant exponentiation.Warn about zero-length formats.Warn about zero-trip DO loops.Warn for calls to allocation functions that specify zero bytes.Warn for conditionally-supported constructs.Warn for converting NULL from/to a non-pointer type.Warn for deallocation calls with arguments returned from mismatched allocation functions.Warn for implicit type conversions between signed and unsigned integers.Warn for implicit type conversions that cause loss of floating point precision.Warn for implicit type conversions that may change a value.Warn for infinitely recursive calls.Warn for mismatches between calls to operator new or delete and the corresponding call to the allocation or deallocation function.Warn for missing parameter types in function declarations.Warn for obsolescent usage in a declaration.Warn for placement new expressions with undefined behavior.Warn for suspicious integer expressions in boolean context.Warn for unsafe raw memory writes to objects of class types.Warn for uses of pointers to auto variables whose lifetime has ended.Warn for uses of pointers to deallocated storage.Warn from speculative compiles such as __traits(compiles).Warn if "defined" is used outside #if.Warn if C++17 noexcept function type will change the mangled name of a symbol.Warn if a C-style cast is used in a program.Warn if a caller of a function, marked with attribute warn_unused_result, does not use its return value.Warn if a class interface has no superclass.  Root classes may use an attribute to suppress this warning.Warn if a class type has a base or a field whose type uses the anonymous namespace or depends on a type with no linkage.Warn if a comparison always evaluates to true or false.Warn if a comparison is always true or always false due to the limited range of the data type.Warn if a deprecated compiler feature, class, method, or field is used.Warn if a function exceeds the number of paths (controlled by -fpath-coverage-limit) and path coverage give up instrumenting the function. The limit is approximate and conservative and coverage might give up even if the actual number is slightly below the limit.Warn if a function uses alloca or creates an array with dynamic size.Warn if a local declaration hides an instance variable.Warn if a loop with constant number of iterations triggers undefined behavior.Warn if a property for an Objective-C object has no assign semantics specified.Warn if a selector has multiple methods.Warn if a simd directive is overridden by the vectorizer cost model.Warn if a single function's framesize exceeds the given framesize.Warn if a string is longer than the maximum portable length specified by the standard.Warn if a subobject has an abi_tag attribute that the complete object type does not have.Warn if a throw expression will always result in a call to terminate().Warn if a user-procedure has the same name as an intrinsic.Warn if a variable length array is used.Warn if a virtual base has a non-trivial move assignment operator.Warn if an MCU name is unrecognized or conflicts with other options (default: on).Warn if an additional enum-base is used in an elaborated-type-specifier.Warn if an array is accessed out of bounds.Warn if an old-style parameter definition is used.Warn if an undefined macro is used in an #if directive.Warn if comparing pointer parameter with nonnull attribute with NULL.Warn if constant CFString objects contain non-portable characters.Warn if constructor or destructors with priorities from 0 to 100 are used.Warn if conversion of the result of arithmetic might change the value even though converting the operands cannot.Warn if dereferencing a NULL pointer may lead to erroneous or undefined behavior.Warn if devices.csv is not found or there are problem parsing it (default: on).Warn if expressions are too complicated for the analyzer to fully track.Warn if inherited methods are unimplemented.Warn if left shift of a signed value overflows.Warn if left shifting a negative value.Warn if loops have been interchanged.Warn if passing too many arguments to a function for its format string.Warn if pointers of distinct types are compared without a cast.Warn if qualifiers on arrays which are pointer targets are discarded.Warn if shift count >= width of type.Warn if shift count is negative.Warn if testing floating point numbers for equality.Warn if the ISR is misspelled, i.e. without __vector prefix. Enabled by default.Warn if the NSObject attribute is applied to a non-typedef.Warn if the address space of an address is changed.Warn if the code is too complicated for the analyzer to fully explore.Warn if the named return value optimization is not performed although it is allowed.Warn if the pointer in a pointer assignment might outlive its target.Warn if the type of a variable might be not interoperable with C.Warn if trigraphs are encountered that might affect the meaning of the program.Warn if type qualifiers on pointers are discarded.Warn if type signatures of candidate methods do not match exactly.Warn in case a function ends earlier than it begins due to an invalid linenum macros.Warn in case profiles in -fprofile-use do not exist.Warn in case profiles in -fprofile-use do not match.Warn of prototypes causing type conversions different from what would happen in the absence of prototype.Warn on any use of alloca.Warn on direct multiple inheritance.Warn on direct virtual inheritance.Warn on intrinsics not part of the selected standard.Warn on namespace definition.Warn on primary template declaration.Warn on suspicious calls of standard functions computing absolute values.Warn on suspicious constructs involving reverse scalar storage order.Warn that -fno-automatic may break recursion.Warn when #ifndef of a header guard is followed by #define of a different macro with the header guard macro not defined at the end of header.Warn when -fhardened did not enable an option from its set.Warn when __builtin_frame_address or __builtin_return_address is used unsafely.Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions are used.Warn when a #warning directive is encountered.Warn when a base is inaccessible in derived due to ambiguity.Warn when a built-in function is declared with the wrong signature.Warn when a built-in preprocessor macro is undefined or redefined.Warn when a class is redeclared or referenced using a mismatched class-key.Warn when a class or enumerated type is referenced using a redundant class-key.Warn when a conditional has too many terms and condition coverage profiling gives up instrumenting the expression.Warn when a const variable is unused.Warn when a conversion function will never be called due to the type it converts to.Warn when a declaration does not specify a type.Warn when a declaration has duplicate const, volatile, restrict or _Atomic specifier.Warn when a declaration is found after a statement.Warn when a function is unused.Warn when a function never produces a constant expression.Warn when a function parameter is only set, otherwise unused.Warn when a function parameter is unused.Warn when a jump misses a variable initialization.Warn when a label is unused.Warn when a left-hand-side array variable is reallocated.Warn when a left-hand-side variable is reallocated.Warn when a literal '0' is used as null pointer.Warn when a logical operator is suspiciously always evaluating to true or false.Warn when a noexcept expression evaluates to false even though the expression can't actually throw.Warn when a pointer differs in signedness in an assignment.Warn when a pointer is cast to an integer of a different size.Warn when a pointer is compared with a zero character constant.Warn when a range-based for-loop is creating unnecessary copies.Warn when a reference is bound to a temporary whose lifetime has ended.Warn when a register variable is declared volatile.Warn when a special enum is declared with the wrong base type.Warn when a string or character literal is followed by a ud-suffix which does not begin with an underscore.Warn when a structure containing a C99 flexible array member as the last field is not at the end of another structure.Warn when a switch case falls through.Warn when a value is moved to itself with std::move.Warn when a variable is only set, otherwise unused.Warn when a variable is unused.Warn when a vector operation is compiled outside the SIMD.Warn when all constructors and destructors are private.Warn when allocating insufficient storage for the target type of the assigned pointer.Warn when an argument passed to a restrict-qualified parameter aliases with another argument.Warn when an atomic memory model parameter is known to be outside the valid range.Warn when an exception handler is shadowed by another handler.Warn when an explicitly defaulted function is deleted.Warn when an expression value is unused.Warn when an inlined function cannot be inlined.Warn when an optimization pass is disabled.Warn when arguments of external procedures do not match.Warn when attempting to free a non-heap object.Warn when converting the type of pointers to member functions.Warn when deleting a pointer to incomplete type.Warn when fields in a struct with the packed attribute are misaligned.Warn when logical not is used on the left hand side operand of a comparison.Warn when multiple, different, fast interrupt handlers are in the compilation unit.Warn when non-templatized friend functions are declared within a template.Warn when not issuing stack smashing protection for some reason.Warn when one local variable shadows another local variable or parameter of compatible type.Warn when one local variable shadows another local variable or parameter.Warn when one variable shadows another (globally).Warn when one variable shadows another.  Same as -Wshadow=global.Warn when overload promotes from unsigned to signed.Warn when padding is required to align structure members.Warn when performing class template argument deduction on a type with no deduction guides.Warn when profiling instrumentation was requested, but could not be applied to a certain function.Warn when sizeof is applied on a parameter declared as an array.Warn when the address of packed member of struct or union is taken.Warn when the compiler reorders code.Warn when the field in a struct is not aligned.Warn when the indentation of the code does not reflect the block structure.Warn when the packed attribute has no effect on struct layout.Warn when the template keyword is missing after a member access token in a dependent member access expression if that member is a template.Warn when there is a cast to a pointer from an integer of a different size.Warn when there is a conversion between pointers that have incompatible types.Warn when typedefs locally defined in a function are not used.Warn whenever a function's return type defaults to "int" (C), or about inconsistent return types (C++).Warn whenever a trampoline is generated.Warn whenever an Objective-C assignment is being intercepted by the garbage collector.Warn whenever attributes are ignored.Warn whenever type qualifiers are ignored.Warn whenever void-returning functions return a non-void expressions, or a return expression is missing in a function not returning void.WarningWe should never see a non-equal dash-main in cobol1.cWhen "signed" or "unsigned" is not given make the bitfield signed.When "signed" or "unsigned" is not given make the bitfield unsigned.When -mhard-float is selected, enables generation of double-precision floating point instructions.  By default functions from libgcc are used to perform double-precision floating point operations.When -mhard-float is selected, enables generation of unordered floating point compare and set flag (lf.sfun*) instructions.  By default functions from libgcc are used to perform unordered floating point compare and set flag operations.When a symbol is resolved, check `alias this' scope before going to upper scopes.When both heuristics with rs6000-density-pct-threshold and rs6000-density-size-threshold are satisfied, we decide to penalize the loop body cost by the value which is specified by this parameter.  The default value is 10.When costing for loop vectorization, we probably need to penalize the loop body cost by accounting for excess strided or elementwise loads.  We collect the numbers for general statements and load statements according to the information for statements to be vectorized, check the proportion of load statements, and penalize only if the proportion exceeds the threshold specified by this parameter.  The default value is 45.When costing for loop vectorization, we probably need to penalize the loop body cost if the existing cost model may not adequately reflect delays from unavailable vector resources.  We collect the cost for vectorized statements and non-vectorized statements separately, check the proportion of vec_cost to total cost of vec_cost and non vec_cost, and penalize only if the proportion exceeds the threshold specified by this parameter.  The default value is 85.When generating -mabicalls code, allow executables to use PLTs and copy relocations.When generating -mabicalls code, make the code suitable for use in shared libraries.When linking for big-endian targets, generate a BE8 format image.When linking for big-endian targets, generate a legacy BE32 format image.When possible do not generate stack frames.When propagating IPA-CP effect estimates, multiply frequencies of recursive edges that bring back an unchanged value by this factor.When reduction factor computed for a loop exceeds the threshold specified by this parameter, prefer to unroll this loop.  The default value is 1.When running CSE, follow jumps to their targets.When using profile feedback, use the edge at this percentage position in frequency histogram as the bases for IPA-CP heuristics.When vectorizing, consider using multiple different approaches and use the cost model to choose the cheapest one.Where shorter, use canonicalized paths to systems headers.Whether codegen errors should be ICEs when -fchecking.Whether software prefetch hints should be issued for non-constant strides.Whether the scheduling description is mostly a cycle-accurate model of the target processor and is likely to be spill aggressively to fill any pipeline bubbles.Whether the target fully pipelines FMA instructions.  If non-zero, reassociation considers the benefit of parallelizing FMA's multiplication part and addition part, assuming FMUL and FMA use the same units that can also do FADD.Whether to use canonical types.Whether trampolines are generated in executable memory rather than executable stack.Which -fsched-pressure algorithm to apply.While setting up signal handler: %mWhile setting up signal stack: %mWhole program analysis (WPA) mode with number of parallel jobs specified.With INSCAN at %L, expected loop body with !$OMP SCAN between two structured block sequencesWithout padding, there are not enough elements in the intrinsic RESHAPE source at %L to match the shapeWork around VR4130 mflo/mfhi errata.Work around a hardware anomaly by adding a number of NOPs before a CSYNC or SSYNC instruction.Work around an early 4300 hardware bug.Work around bug in multiplication instruction.Work around certain 24K errata.Work around certain R10000 errata.Work around certain R4000 errata.Work around certain R4400 errata.Work around certain RM7000 errata.Work around certain VR4120 errata.Work around errata for early SB-1 revision 2 cores.Work around hardware multiply bug.Work around the R5900 short loop erratum.Work bound when discovering transitive relations from existing relations.Workaround for ARM Cortex-A53 Erratum number 835769.Workaround for ARM Cortex-A53 Erratum number 843419.Wrap all indirect branches into execute in order to disable branch prediction.Wrap all indirect calls into execute in order to disable branch prediction.Wrap all indirect return branches into execute in order to disable branch prediction.Wrap indirect return branches into execute in order to disable branch prediction. This affects only branches where the return address doesn't need to be restored from memory.Wrap indirect return branches into execute in order to disable branch prediction. This affects only branches where the return address is going to be restored from memory.Wrap indirect table jumps and computed gotos into execute in order to disable branch prediction.  Using thunk or thunk-extern with this option requires the thunks to be considered signal handlers to order to generate correct CFI.  For environments where unwinding (e.g. for exceptions) is required please use thunk-inline instead.Write a SRCFILE.opt-record.json file detailing what optimizations were performed.Write all declarations as Ada code for the given file only.Write all declarations as Ada code transitively.Writing module %qs at line %d column %d: %sWrong OpenACC continuation at %C: expected !$ACC, got !$OMPWrong OpenMP continuation at %C: expected !$OMP, got !$ACCX argument at %L to C_LOC shall not be polymorphicX descriptor requires leading space count at %LX32 does not support %<ms_abi%> attributeXXX entering %<pop_everything ()%>XXX leaving %<pop_everything ()%>Xeon Phi ISA support has been removed since GCC 15, use GCC 14 for the Xeon Phi ISAs or %<-march=broadwell%> for all the other ISAs supported on this machine.You have broken GCC Rust. This is a feature.
  You must enable MVE instructions to use these intrinsicsYou must enable NEON instructions (e.g. %<-mfloat-abi=softfp%> %<-mfpu=neon%>) to use these intrinsics.You must enable VFP instructions to use these intrinsics.You must enable crypto instructions (e.g. include %<-mfloat-abi=softfp%> %<-mfpu=crypto-neon%>) to use these intrinsics.Zero is not a valid statement label at %CZero width in format descriptor in format string at %LZero-sized array detected at %L where an entity with the TARGET attribute is expected[ skipping %d instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
  [...][...] style array constructors at %C[Leaving %s]
! [available in [cannot find %s][default][disabled][enabled]`a %<return%> statement is not allowed in coroutine; did you mean %<co_return%>?a GNU Fortran extensiona brace-enclosed initializer is not allowed herea call to a constructor cannot appear in a constant-expressiona callee-copied argument is stored in the current function's framea cast to a type other than an integral or enumeration type cannot appear in a constant-expressiona class template declaration must not declare anything elsea comma operator cannot appear in a constant-expressiona concept cannot be a member functiona concept cannot be constraineda constructor cannot be %<concept%>a constructor taking a single argument of its own class type is invalida conversion function cannot have a trailing return typea destructor cannot be %qsa different type is defined in another translation unita field of same name but different type is defined in another translation unita field with different name is defined in another translation unita function call cannot appear in a constant-expressiona function type cannot have an explicit object parametera function-definition is not allowed herea label can only be part of a statement and a declaration is not a statementa lambda closure type has a deleted copy assignment operatora lambda closure type has a deleted default constructora lambda with captures may not have an explicit object parameter of an unrelated typea later %<-fabi-version=%> (or =0) avoids this error with a change in manglinga member of a structure or union cannot have a variably modified typea nested function is not supported for reduced registersa nested namespace definition cannot be inlinea nested namespace definition cannot have attributesa non-member function cannot have an explicit object parametera non-template variable cannot be %<concept%>a parameter cannot be declared %qsa parameter list with an ellipsis cannot match an empty parameter name list declarationa pointer to explicit object member function can only be formed with %<&%E%>a pointer to explicit object member function can only be formed with %<&%T::%D%>a pointer to function type cannot have an explicit object parametera pointer to member function type cannot have an explicit object parametera specialization is always exported alongside its primary templatea statement expression is an insufficient context for overload resolutiona storage class can only be specified for objects and functionsa storage class on an anonymous aggregate in class scope is not alloweda template cannot be defaulteda template declaration cannot appear at block scopea template-id may not appear in a using-declarationa temporary bound to %qD only persists until the constructor exitsa transaction expression cannot appear in a constant-expressiona type defined in another translation unit is not polymorphica type defined in another translation unit is polymorphica type with different bases is defined in another translation unita type with different number of fields is defined in another translation unita type with different precision is defined in another translation unita type with different signedness is defined in another translation unita type with different size is defined in another translation unita type with different virtual table pointers is defined in another translation unita variable cannot be declared %<consteval%>a vector type with different number of elements is defined in another translation unita wide string is invalid in this contextabnormal call edges for non-call insn in bb %iabnormal edges for no purpose in bb %iabort in %s, at %s:%dabsolute value function %qD given an argument of type %qT but has parameter of type %qT which may cause truncation of valueabstract declarator %qT used as declarationaccess declarations are deprecated in favor of using-declarations; suggestion: add the %<using%> keywordaccessing %E byte in a region of size %Eaccessing %E bytes in a region of size %Eaccessing %E or more bytes in a region of size %Eaccessing %qD member instead of initialized %qD member in constant expressionaccessing %qE outside its lifetimeaccessing a member %qE of an atomic structure %qEaccessing a member %qE of an atomic union %qEaccessing argument %u of a function declared with attribute %qsaccessing between %E and %E bytes in a region of size %Eaccessing data memory with program memory addressaccessing program memory with data memory addressaccessing thread-local storage is not currently supported with %<-mpure-code%> or %<-mslow-flash-data%>accessing uninitialized array elementaccessing uninitialized member %qDaccessing value of %qE through a %qT glvalue in a constant expressionaccumulator is not a constant integeraccumulator number is out of boundsactual argument to INTENT = OUT/INOUTadd %<using namespace std::complex_literals%> (from %<<complex>%>) to enable the C++14 user-defined literal suffixesadd a deduction guide to suppress this warningadd explicit %<this%> or %<*this%> captureadd parentheses around %qE to silence this warningadd parentheses around left hand side expression to silence this warningadd parentheses around the second %<sizeof%> to silence this warningadd parentheses to declare a variableadd_sym(): Bad sizing modeadditional enumerators beginning with %qDaddress area attribute cannot be specified for functionsaddress area of %q+D conflicts with previous declarationaddress mode %qs not supported in the %s bit modeaddress of a call to %qs is not a constant expressionaddress of array with reverse scalar storage order requestedaddress of automatic variable %qD can escape to %<musttail%> calladdress of automatic variable %qD passed to %<musttail%> call argumentaddress of caller arguments takenaddress of explicit register variable %qD requestedaddress of global register variable %qD requestedaddress of label %qD returnedaddress of label passed to %<musttail%> call argumentaddress of local variable %qD returnedaddress of local variable can escape to %<musttail%> calladdress of local variable passed to %<musttail%> call argumentaddress of non-static constexpr variable %qD may differ on each invocation of the enclosing function; add %<static%> to give it a constant addressaddress of overloaded function with no contextual type informationaddress of parameter %qD can escape to %<musttail%> calladdress of parameter %qD passed to %<musttail%> call argumentaddress of register compound literal requestedaddress of register variable %qD requestedaddress offset not a constantaddress operand requires constraint for X, Y, or Z registeraddress requested for %qD, which is declared %<register%>address space %qs not supported for devices with flash size up to %d KiBaddress spaces are not supported for reduced Tiny devicesaddress taken but %<TREE_ADDRESSABLE%> bit not setaddress taken, but ADDRESSABLE bit not setaddress-of an object %qE with thread local or automatic storage is not a constant expressionaggregate %q#D has incomplete type and cannot be definedaggregate types are prohibited in %<__regio_symbol%> address spaceaggregate value used where a complex was expectedaggregate value used where a fixed-point was expectedaggregate value used where a floating-point was expectedaggregate value used where an integer was expectedakaalias definitions not supported in Mach-O; ignoredalias definitions not supported in this configurationalias template deduction only available with %<-std=c++20%> or %<-std=gnu++20%>alias-declaration in init-statement only available with %<-std=c++23%> or %<-std=gnu++23%>aliased declaration herealignment %u of %qT is less than %ualignment may not be specified for %q+Dalignment may not be specified for %qDalignment must be a small power of two, not %dalignment of %q+D is greater than maximum object file alignment %dalignment of %qD increased in %<-fabi-version=9%> (GCC 5.2)alignment of %qD is bigger than original declarationalignment of %qD will increase in %<-fabi-version=9%>alignment of array elements is greater than element sizealignment specified for %<register%> object %qEalignment specified for bit-field %qEalignment specified for function %qEalignment specified for parameter %qEalignment specified for type name in %<sizeof%>alignment specified for type name in %qEalignment specified for type name in castalignment specified for typedef %qEalignment specified for unnamed bit-fieldalignment specified for unnamed parameterall member functions in class %qT are privateallocatable argumentallocated hereallocation of insufficient size %qE for type %qT with size %qEallocation performed hereallocator with access trait set to %<thread%> results in undefined behavior for %qs directiveallows opaque types to be implemented as any type (a GNU Modula-2 extension)already captured %qD in lambda expressionalso found %<%c%s%>alternatives not allowed in %<asm%> flag outputambiguating new declaration %q+#Dambiguating new declaration of %q#Dambiguous attribute '%s'; could be '%s' (via '%s:%s') or '%s' (via '%s:%s')ambiguous conversion for array subscriptambiguous default type conversion from %qTambiguous method %s%s%sambiguous overload for ambiguous overload for intrinsic %qsambiguous template instantiation for %q#Dambiguous template instantiation for %q#Tambiguous template specialization %qD for %q+Dan %<asm%> specification is not allowed on a function-definitionan %qs clause can only be specified if the %<dispatch%> selector of the %<construct%> selector set appears in the %<match%> clausean %qs clause can only be specified if the %<dispatch%> selector of the construct selector set appears in the %<match%> clausean %qs clause requires a %<match%> clausean address area attribute cannot be specified for local variablesan argument type that has a default promotion cannot match an empty parameter name list declarationan array of different size is defined in another translation unitan array reference cannot appear in a constant-expressionan assignment cannot appear in a constant-expressionan attribute that appertains to a friend declaration that is not a definition is ignoredan attribute that appertains to a type-specifier is ignoredan decrement cannot appear in a constant-expressionan empty string cannot be in %<target_clones%> attributean entity named %<main%> cannot be declared with C language linkagean enum with different number of values is defined in another translation unitan enum with different value name is defined in another translation unitan enum with different values is defined in another translation unitan explicit instantiation cannot have a definition; use %<template <>%> to declare a specializationan explicit object member function cannot be %<static%>an explicit object member function cannot be %<virtual%>an explicit object parameter cannot be a function parameter packan explicit object parameter may not have a default argumentan explicit specialization must be preceded by %<template <>%>an explicit type suffix is needed when using a vector of base addressesan increment cannot appear in a constant-expressionan indirect edge from %s has no corresponding call_stmtan indirect edge with unknown callee corresponding to a call_stmt with a known declaration:an inherited constructor is not a candidate for initialization from an expression of the same or derived typean interrupt handler cannot be compiled with %<-muser-mode%>anachronismanachronism: anachronistic old-style base class initializerand %qT has no template constructorsand evaluates to false when actually evaluating the condition in non-%<constexpr%> functionand fieldand the implicitly-defined constructor does not initialize %q#Danonymous %s declared inside parameter list will not be visible outside of this definition or declarationanonymous SSA name cannot have default definitionanonymous struct not inside named typeanonymous struct with base classesanonymous union with no membersappending to array in %qs requires the GC and cannot be used with %<-fno-druntime%>applying %<#pragma weak %+D%> after first use results in unspecified behaviorarch extension %qs should be prefixed by %<+%>architecture %qs supported for assembler onlyare you trying to break %s? how dare you?are_identical_variables: Bad typeargument %d is an unsigned literal that is out of rangeargument %d must be a constant immediateargument %d must be a constant immediate in range [%wd,%wd]argument %d must be a constant immediate in range [0,15]argument %d must be a literal between %d and %d, inclusiveargument %d must be a literal between 0 and %d, inclusiveargument %d must be a variable or a literal between %d and %d, inclusiveargument %d must be an unsigned literalargument %d must be either a literal %d or a literal %dargument %d of %qD must be of %<omp_interop_t%>argument %d of %qE discards %<const%> qualifierargument %d of %qE discards %<volatile%> qualifierargument %d of %qE might be a candidate for a format attributeargument %d of %qE must be a pointer to a constant size typeargument %d of %qE must be a pointer typeargument %d of %qE must be an integer constant expressionargument %d of %qE must be of %<omp_interop_t%>argument %d of %qE must not be a pointer to a %<const%> typeargument %d of %qE must not be a pointer to a %<volatile%> typeargument %d of %qE must not be a pointer to a functionargument %d of '%s' did not have the expected nameargument %d to %qE must be a constant immediate in range [0-%d]argument %d to the built-in must be a constant in range %d to %dargument %i in the range [%E, %E]argument %i is null but the corresponding size argument %i value is %sargument %i range [%E, %E] exceeds maximum object size %Eargument %i range [%E, %E] is negativeargument %i value %qE exceeds maximum object size %Eargument %i value %qE is negativeargument %i value %s is negativeargument %i value is zeroargument %q+D might be clobbered by %<longjmp%> or %<vfork%>argument %qD declared hereargument %qD doesn%'t match built-in prototypeargument %qD doesn%'t match prototypeargument %qEargument %qE cannot be read at compile timeargument %qE to the %<counted_by%> attribute is not a field declaration in the same structure as %qDargument %qE to the %<counted_by%> attribute is not a field declaration with an integer typeargument %qTargument %qd is not a constantargument %qs can only appear alone in %qsargument %qs is not supported for %qs on this targetargument %qs must be either %<on%> or %<off%>argument %qs to %<-Waligned-new%> not recognizedargument %qs to %<-Wbidi-chars%> not recognizedargument %qs to %<-Wleading-whitespace=%> not recognizedargument %qs to %<-Wnormalized%> not recognizedargument %qs to %<-Wtrailing-whitespace=%> not recognizedargument %qs to %<-femit-struct-debug-detailed%> not recognizedargument %qs to %<-femit-struct-debug-detailed%> unknownargument %u in call to function %qE does not have %<int%> typeargument %u in call to function %qE does not have integral typeargument %u in call to function %qE does not have pointer typeargument %u in call to function %qE has boolean typeargument %u in call to function %qE has enumerated typeargument %u in call to function %qE has pointer to %qs type (%qT)argument %u in call to function %qE has pointer to a non-trivially-copyable type (%qT)argument %u in call to function %qE points to incomplete typeargument %u in call to function %qs has boolean typeargument %u in call to function %qs has enumerated typeargument %u null where non-null expectedargument %u null where non-null expected because argument %u is nonzeroargument %u of %<__builtin_tgmath%> has no argumentsargument %u of %<__builtin_tgmath%> has variable argumentsargument %u of %<__builtin_tgmath%> has wrong number of argumentsargument %u of %<__builtin_tgmath%> is not a function pointerargument %u of %<__builtin_tgmath%> is unprototypedargument %u of type %s declared as a pointerargument %u of type %s declared as a variable length arrayargument %u of type %s declared as an ordinary arrayargument %u of type %s declared with %u unspecified variable boundargument %u of type %s declared with %u unspecified variable boundsargument %u of type %s declared with %u variable boundargument %u of type %s declared with %u variable boundsargument %u of type %s declared with mismatched bound %qsargument %u of type %s declared with mismatched bound argument %Eargument %u of type %s with mismatched boundargument %u to function %qE is of type %qT which is not known to be 128 bits wideargument 1 in call to function %qE has signed typeargument 1 in call to function %qE has unsigned typeargument 1 in call to function %qs has %<char%> typeargument 1 in call to function %qs has signed typeargument 1 must be a mapargument 1 of %qE must be a non-void pointer typeargument 1 of %qE must be a pointer to a complete typeargument 1 of %qE must be a pointer to a constant size typeargument 1 of %qE must be a pointer to a nonzero size objectargument 1 of %qs is out of rangeargument 1 of %qs must be a constantargument 3 in call to function %qE does not have pointer to integral typeargument 3 in call to function %qE has pointer to boolean typeargument 3 in call to function %qE has pointer to enumerated typeargument list function at %Cargument must be a 16-bit constant immediateargument must be a field referenceargument must be array or slice or channelargument must be channelargument must be passed by copyingargument must be string or array or slice or map or channelargument must have complex typeargument not permitted on %qs clauseargument not permitted on %qs clause in OpenACC %<kernels%> region with a %qs clauseargument of %<__builtin_eh_return_regno%> must be constantargument of %qE attribute ignoredargument of %qE attribute is missingargument of %qE attribute is not "ilink" or "firq"argument of %qE attribute is not "ilink1" or "ilink2"argument of %qE attribute is not %qs, %qs %qs, %qs, %qs, %qs, %qs, %qs, %qs or %qsargument of %qE attribute is not a string constantargument of %qE attribute is not a string constant or numberargument of Offsetof implies indirection of an embedded fieldargument of function call might be a candidate for a format attributeargument of type %qT not permitted with %<-mgeneral-regs-only%>argument references a symbol declared hereargument to %<-O%> should be a non-negative integer, %<g%>, %<s%>, %<z%> or %<fast%>argument to %<__integer_pack%> must be between 0 and %dargument to %<alloca%> is too largeargument to %<alloca%> is zeroargument to %<alloca%> may be too largeargument to %<decltype%> must be an expressionargument to %<sizeof%> in %qD call is the same expression as the destination; did you mean to dereference it?argument to %<sizeof%> in %qD call is the same expression as the destination; did you mean to provide an explicit length?argument to %<sizeof%> in %qD call is the same expression as the destination; did you mean to remove the addressof?argument to %<sizeof%> in %qD call is the same expression as the first source; did you mean to dereference it?argument to %<sizeof%> in %qD call is the same expression as the first source; did you mean to provide an explicit length?argument to %<sizeof%> in %qD call is the same expression as the first source; did you mean to remove the addressof?argument to %<sizeof%> in %qD call is the same expression as the second source; did you mean to dereference it?argument to %<sizeof%> in %qD call is the same expression as the second source; did you mean to provide an explicit length?argument to %<sizeof%> in %qD call is the same expression as the second source; did you mean to remove the addressof?argument to %<sizeof%> in %qD call is the same expression as the source; did you mean to dereference it?argument to %<sizeof%> in %qD call is the same expression as the source; did you mean to provide an explicit length?argument to %<sizeof%> in %qD call is the same expression as the source; did you mean to remove the addressof?argument to %<sizeof%> in %qD call is the same expression as the source; did you mean to use the size of the destination?argument to %<sizeof%> in %qD call is the same pointer type %qT as the destination; expected %qT or an explicit lengthargument to %<sizeof%> in %qD call is the same pointer type %qT as the first source; expected %qT or an explicit lengthargument to %<sizeof%> in %qD call is the same pointer type %qT as the second source; expected %qT or an explicit lengthargument to %<sizeof%> in %qD call is the same pointer type %qT as the source; expected %qT or an explicit lengthargument to %qE attribute is neither eic, nor %<vector=<line>%>argument to %qE attribute is neither no, pcrel nor yesargument to %qE attribute is neither zero, nor oneargument to %qE attribute is not %<"user"%>, %<"supervisor"%>, or %<"machine"%>argument to %qE attribute is not (keep|thunk|thunk-extern)argument to %qE attribute is not (keep|thunk|thunk-inline|thunk-extern)argument to %qE attribute is not intstackargument to %qE attribute larger than %dargument to %qs is bigger than %dargument to %qs is not between %d and %dargument to %qs is too large (max. %d)argument to %qs should be a non-negative integerargument to %qs should be a non-negative integer optionally followed by a size unitargument to CAP is not a constant or variable of type CHARargument to be formatted is not %<...%>argument to builtin has void typeargument to interrupt attribute is unsupported for weak functionsargument to variable-length array is too largeargument to variable-length array is zeroargument to variable-length array may be too largearguments %d and %d of %qE must have the same element size, but the values passed here have type %qT and %qT respectivelyarguments %d and %d of %qE must have the same signedness, but the values passed here have type %qT and %qT respectivelyarguments '%s' and '%s' for intrinsic %sarguments '%s' and '%s' for intrinsic '%s'arguments 'a%d' and 'a%d' for intrinsic '%s'arguments ignored for %<-Wattributes=%>; use %<-Wno-attributes=%> insteadarguments of type %qT require the SVE ISA extensionarguments to %qs should be non-negative integersarguments to destructor are not allowedarguments to the %qE attribute must be narrow string literalsarguments to the %qE attribute must contain valid identifiersarith_power(): Bad basearith_power(): unknown typearithmetic IFarithmetic between different enumeration types %qT and %qTarithmetic between different enumeration types %qT and %qT is deprecatedarithmetic between enumeration type %qT and floating-point type %qTarithmetic between enumeration type %qT and floating-point type %qT is deprecatedarithmetic between floating-point type %qT and enumeration type %qTarithmetic between floating-point type %qT and enumeration type %qT is deprecatedarithmetic involving a null pointer in %qEarithmetic on pointer to RVV type %qTarithmetic on pointer to SVE type %qTarithmetic on pointer to an empty aggregatearithmetic on pointer to an incomplete typearray %<TYPE_DOMAIN%> is not integer typearray %q+D assumed to have one elementarray %qD declared herearray %qD initialized by parenthesized string literal %qEarray assignmentarray bound forbidden after parenthesized type-idarray bound is not an integer constantarray cannot be initialized with a %qsarray concatenation of expression %qs requires the GC and cannot be used with %<-fno-druntime%>array deallocation of object allocated with non-array allocationarray declaration canonicalization has failedarray element value must be the same type as its declarationarray elements cannot have RVV type %qTarray elements cannot have SVE type %qTarray index in initializer exceeds array boundsarray index in initializer is not an integer constant expressionarray index in initializer not of integer typearray index in non-array initializerarray index range in initializer exceeds array boundsarray initialized from non-constant array expressionarray initialized from parenthesized string constantarray initializer for structured binding declaration in conditionarray member %q#D declared herearray must be initialized with a brace-enclosed initializerarray of inappropriate type initialized from string constantarray of runtime bound cannot be captured by copy, only by referencearray of unknown size with empty initializerarray resultarray section does not have mappable type in %qs clausearray section in %<#pragma acc declare%>array section is not contiguous in %qs clausearray size expression is not supported yetarray size in new-expression must be constantarray size missing in %q+Darray size missing in %qDarray size missing in %qTarray subscript %<%T[%wi]%> is partly outside array bounds of %qTarray subscript %E is above array bounds of %qTarray subscript %E is below array bounds of %qTarray subscript %E is outside array bounds of %qTarray subscript %E is outside the bounds of an interior zero-length array %qTarray subscript %qE is outside the bounds of an interior zero-length array %qTarray subscript %wi is below array bounds of %qTarray subscript %wi is outside array bounds of %qTarray subscript %wu is above array bounds of %qTarray subscript [%E, %E] is outside array bounds of %qTarray subscript [%wi, %wi] is outside array bounds of %qTarray subscript has type %<char%>array subscript is not an integerarray subscript value %qE is outside the bounds of array %qD of type %qTarray subscript value %qE is outside the bounds of array type %qTarray type has incomplete element type %qTarray type must be initializedarray types have different boundsarray used as initializerarray with qualifier on the element is not qualified before C23arrays of functions are not meaningfulassembler does not support %<-mabi=ilp32%>assembler name hash list corruptedassertion missing after %qsassertions must be followed by %<;%>assign semantics attributes of property %qD conflict with previous declarationassigned hereassigning to an array from an initializer listassignmentassignment (not initialization) in declarationassignment discards %qv qualifier from pointer target typeassignment from distinct Objective-C typeassignment from pointer to non-enclosed address spaceassignment from temporary %<initializer_list%> does not extend the lifetime of the underlying arrayassignment left-hand side might be a candidate for a format attributeassignment makes %q#v qualified function pointer from unqualifiedassignment of constant field %qDassignment of function %qDassignment of member %qD in read-only objectassignment of read-only location %qEassignment of read-only member %qDassignment of read-only named return value %qDassignment of read-only parameter %qDassignment of read-only reference %qDassignment of read-only variable %qDassignment suppressionassignment to %e from incompatible pointer type %eassignment to %e from pointer to %qD with incompatible type %eassignment to %qT from %qT makes integer from pointer without a castassignment to %qT from %qT makes pointer from integer without a castassignment to %qT from pointer type %qT with incompatible scalar storage orderassignment to expression with array typeassociate_integer_pointer(): Already associatedassumed-rank argumentassumed-shape argumentassumed-type argumentassuming cast to type %qT from overloaded functionassuming directive output of %wu byteassuming directive output of %wu bytesassuming pointer to member %qDassuming signed overflow does not occur when combining constants around a comparisonassuming signed overflow does not occur when reducing constant in comparisonassuming signed overflow does not occur when simplifying %<X - Y %s 0%> to %<X %s Y%>assuming signed overflow does not occur when simplifying range testassumption ignored because it contains an await-expressionasynchronous argumentat %s, %sat offset %s into destination object %qE of size %sat offset %s into destination object of size %s allocated by %qEat offset %s into object %qE of size %sat offset %s into object of size %s allocated by %qEat offset %s into source object %qE of size %sat offset %s into source object of size %s allocated by %qEat offset %wi from %qD declared hereat offset [%wi, %wi] from %qD declared hereat-calls %<strub%> does not support call to %qDatexit failedattempt to index object that is not array, slice, string, or mapattempt to index type expressionattempt to slice object that is not array, slice, or stringattempt to take address of bit-fieldattempt to take address of bit-field structure member %qDattribute %<%E(%s)%> missing an argumentattribute %<%E(%s, %E)%> invalid positional argument %iattribute %<%E(%s, %E, %E)%> invalid positional argument %iattribute %<fallthrough%> not preceding a case label or default labelattribute %<fallthrough%> specified multiple timesattribute %<musttail%> mixed with other attributes on %<return%> statementattribute %<target%> argument %qs is unknownattribute %<target%> argument not a stringattribute %<target("%s")%> does not accept an argumentattribute %<target_version%> argument not a stringattribute %<target_version%> has multiple valuesattribute %qE argument must be one of %qs or %qsattribute %qE argument must be one of %qs, %qs, %qs, or %qsattribute %qE argument not a stringattribute %qE does not apply to elements of non-scalar type %qTattribute %qE does not apply to fields of aggregate type %qTattribute %qE invalid modeattribute %qE invalid mode %qs; expected one of %qs, %qs, %qs, or %qsattribute %qE mode %qE is not an identifier; expected one of %qs, %qs, %qs, or %qsattribute %qE unexpected %<(%> after mode %qs; expected a positional argument or %<)%>attribute %qE without arguments on a non-prototypeattribute %qs applies to array types onlyattribute %qs argument %qs is unknownattribute %qs argument is not a stringattribute %qs expects a constant positive integer argumentattribute %qs invalid positional argumentattribute %qs mismatch with mode %qsattribute %qs mismatched positional argument values %i and %iattribute %qs missing positional argument 2 provided in previous designation by argument %uattribute %qs positional argument %i invalid value %wiattribute %qs positional argument %i value %wi exceeds number of function arguments %uattribute %qs positional argument 1 references %qs-qualified argument type %qTattribute %qs positional argument 1 references argument of function type %qTattribute %qs positional argument 1 references non-pointer argument type %qTattribute %qs positional argument 2 conflicts with previous designation by argument %uattribute %qs positional argument 2 missing in previous designationattribute %qs positional argument 2 references non-integer argument type %qTattribute %qs specified multiple timesattribute declarationattribute for %q#T must follow the %qs keywordattribute ignoredattribute ignored in declaration of %q#Tattribute ignored in explicit instantiation %q#Tattribute using prefix only available with %<-std=c++17%> or %<-std=gnu++17%>attribute using prefix used together with scoped attribute tokenattribute value %qs is unknown in %qs attributeattribute value %qs was already specified in %qs attributeattribute with no arguments contains no parameter packsattributes after parenthesized initializer ignoredattributes are not allowed on a function-definitionattributes are not permitted in this positionattributes at the beginning of statement are ignoredattributes ignored on %<asm%> declarationattributes ignored on elaborated-type-specifier that is not a forward declarationattributes ignored on outermost array type in new expressionattributes ignored on template instantiationattributes ignored on uninstantiated typeattributes in parameter array declarator ignoredattributes may be inserted hereattributes may not be specified before the %<@%D%> Objective-C++ keywordattributes on base specifiers are ignoredattributes other than OpenMP directives are not allowed on %<for%> in loop nestattributes should be specified before the declarator in a function definitionauto fpu selection not currently permitted hereautomatic variable %qE cannot be %<threadprivate%>automatically initializes all pointers to NILaux field set for edge %s->%saux field set for indirect edge from %savailable since Fortran 77await expressions are not permitted in handlersawaitable type %qT is not a structureaxiom contract semantic must be %<assume%> or %<ignore%>backend decl for module variable %qs already existsbad ADDR_SPACE_GLOBAL addressbad I/O address 0x%s outside of valid range [0x%x, 0x%x] for %%i operandbad addressbad address, not (reg+disp):bad address, not a constant:bad address, not post_inc or pre_dec:bad alignment: %dbad amount of stack space removal: %dbad argument for %<-fdebug=%>: %qsbad argument for %<-fextern-std%>: %qsbad argument for %<-fmodule-file=%>: %qsbad argument for %<-fversion=%>: %qsbad builtin codebad builtin fcodebad builtin icodebad condition codebad expressionbad expression type during walk (%d)bad insn for 'A'bad insn in frv_print_operand, 0 casebad insn in frv_print_operand, bad const_doublebad insn in frv_print_operand, z casebad insn to frv_print_operand, 'F' modifier:bad insn to frv_print_operand, 'L' modifier:bad insn to frv_print_operand, 'M/N' modifier:bad insn to frv_print_operand, 'O' modifier:bad insn to frv_print_operand, 'e' modifier:bad insn to frv_print_operand, 'f' modifier:bad insn to frv_print_operand, 'g' modifier:bad insn to frv_print_operand, P modifier:bad insn to frv_print_operand_address:bad insn to frv_print_operand_memory_reference:bad movebad opbad operandbad option %qs to attribute %<optimize%>bad option %qs to pragma %<optimize%>bad output_condmove_single operandbad output_move_double operandbad output_move_single operandbad registerbad register to frv_print_operand_memory_reference_reg:bad return type for function argument %u of %<__builtin_tgmath%>bad shift insn:bad testbad type for argument %u of function argument %u of %<__builtin_tgmath%>bad usage of spec function %qsbad value %qs for %<-march=%> switchbad value %qs for %<-mcpu%> switchbad value %qs for %<-mfp-rounding-mode%> switchbad value %qs for %<-mfp-trap-mode%> switchbad value %qs for %<-mmemory-latency%>bad value %qs for %<-mtls-size%> switchbad value %qs for %<-mtls-size=%> switchbad value %qs for %<-mtrap-precision%> switchbad value %qs for %<-mtune%> switchbad value %qs for %<-mtune=%> switchbad value %qs for %<target("arch=")%> attributebad value %qs for %<target("tune=")%> attributebad value for %<%s-%s%>bad value for %<%s=%s%>badly nested C headers from preprocessorbare apostrophe %<'%> in formatbarrier region may not be closely nested inside of work-sharing, %<loop%>, %<critical%>, %<ordered%>, %<master%>, %<masked%>, explicit %<task%> or %<taskloop%> regionbarrier value must be within [0,15]base %qT will be initialized afterbase class %q#T has accessible non-virtual destructorbase class %q#T should be explicitly initialized in the copy constructorbase class %qT is not publicbase initializer expansion %qT contains no parameter packsbase operand of %<->%> has non-pointer type %qTbase operand of %<->%> is not a pointerbase pointer cycle detectedbase type %qT fails to be a struct or class typebase variable or SSA name undeclaredbasic block %d pred edge is corruptedbasic block %d should be marked irreduciblebasic block %d should not be marked irreduciblebasic block %i edge lists are corruptedbasic blocks not laid down consecutivelybb %d does not belong to loop %dbb %d has father loop %d, should be loop %dbb %d on wrong placebecause %qT has user-provided %qDbecause it is a member of %qTbecause it is used as a glvaluebecause the array element type %qT has variable sizebegin expression refers to outer iterator %qDbinary argument %u to decimal-only type-generic functionbinary expression in operand of fold-expressionbinary operator does not support mixing vector bool with floating point vector operandsbinary operator does not support two vector bool operandsbinary operator does not support vector bool operandbind(c) procedurebinding reference of type %qH to %qI discards qualifiersbit-field %q#D with non-integral type %qTbit-field %q+D width not an integer constantbit-field %qD has non-integral type %qTbit-field %qD with non-integral type %qTbit-field %qE has atomic typebit-field %qE in %qs clausebit-field %qs has invalid typebit-field %qs width not an integer constantbit-field %qs width not an integer constant expressionbit-field has atomic typebitwise comparison always evaluates to falsebitwise comparison always evaluates to truebitwise operation between different enumeration types %qT and %qTbitwise operation between different enumeration types %qT and %qT is deprecatedblock IFblock-scope extern declaration %q#D must not be attached to a named modulebody of %<constexpr%> function %qD not a return-statementbogus DISPOSE construction: %dbogus JARL construction: %dbogus JR construction: %dbogus PREPEARE construction: %dbogus comparison result typeboolean registers required for the floating-point optionboth %<-mstack-protector-guard-offset%> and %<-mstack-protector-guard-reg%> must be used with %<-mstack-protector-guard=sysreg%>both %<__thread%> and %<thread_local%> specifiedboth %<monotonic%> and %<nonmonotonic%> modifiers specifiedboth %qs and %qs specifiedboth %s and %qE attribute provide addressboth arguments in binary fold have unexpanded parameter packsboth arguments must be compatibleboth arguments to %<__builtin___clear_cache%> must be pointersboth binary and decimal floating-point arguments to type-generic functionboth branches of %<if%> statement marked as %qsboth complex and decimal floating-point arguments to type-generic functionbound argument %i value %s is negative for a variable length array argument %i of type %sbraced spec %qs ends in escapebraced spec %qs is invalid at %qcbraced spec body %qs is invalidbraced-group within expression allowed only inside a functionbraces around scalar initializerbraces around scalar initializer for type %qTbranch %2d never executed%sbranch %2d taken %s%sbreak statement not within loop or switchbreak statement used with OpenMP for loopbuild_dt: format with namelistbuilt-in %qD declared herebuilt-in function %q+D declared as non-functionbuilt-in function %qD declared as non-functionbuilt-in function %qD is not enabledbuilt-in function %qD requires the %<-mconstant-cfstrings%> flagbuilt-in function %qD takes one argument onlybuilt-in function %qE must be directly calledbuilt-in function %qE not supported for MIPS16built-in function %qE requires the %qs ISA extensionbuilt-in function %qE requires the zve32f, zve64f, zve64d or v ISA extensionbuilt-in function %qE requires the zve64d or v ISA extensionbuilt-in function %qE requires the zve64x, zve64f, zve64d or v ISA extensionbuilt-in function %qE requires the zvfbfmin or zvfbfwma ISA extensionbuilt-in function %qE requires the zvfhmin or zvfh ISA extensionbuilt-in function for named address-space is not supported for reduced Tiny devicesbuilt-in function is only supported for GNU-Cbuilt-in subscript operator with more than one expression in expression listbuilt-in subscript operator without expression listbuiltin %qF is deprecatedbuiltin %qF is for GCC internal use onlybuiltin %qF is not supported without %<-mhtm%> (default with %<-march=zEC12%> and higher)builtin %qF requires %<-mvx%> (default with %<-march=z13%> and higher)builtin %qs can only be used on vector typesbuiltin %qs is only valid in 64-bit modebuiltin %qs needs GLIBC (2.23 and newer) that exports hardware capability bitsbuiltin %qs only accepts 1 argumentbuiltin %qs only accepts 2 argumentsbuiltin %qs only accepts 3 argumentsbuiltin %qs only accepts a string argumentbuiltin requires an immediate for operand %dbut %qD does not throw; perhaps it should be declared %<noexcept%>but %qs has notbut is prevailed by one without from other translation unitbut not hereby argument %u of type %s to %qD declared hereby argument %u of type %s to %qTbytecode stream in file %qs generated with GCC compiler older than 10.0bytecode stream in file %qs generated with LTO version %d.%d instead of the expected %d.%dbytecode stream: expected tag %s instead of %sbytecode stream: found empty cgraph nodebytecode stream: found multiple instances of cgraph node with uid %dbytecode stream: found non-null terminated stringbytecode stream: garbage at the end of symbols sectionbytecode stream: no callee found while reading edgebytecode stream: no caller found while reading edgebytecode stream: string too long for the string tablebytecode stream: tag %s is not in the expected range [%s, %s]bytecode stream: trying to read %d bytes after the end of the input bufferbytecode stream: unexpected LTO section %sbytecode stream: unexpected tag %sbytecode stream: unknown GIMPLE statement tag %scall   %2d never executed
  call   %2d returned %s
! call a real function, rather than the builtin equivalentcall and return value are differentcall has circular dependencycall invocation refers to localscall is considered never executed and code size would growcall is unlikely and code size would growcall may throw exception caught locally or perform cleanupscall may throw exception that does not propagatecall of %<%T::operator[] (%A)%> is ambiguouscall of %<(%T) (%A)%> is ambiguouscall of overloaded %<%D(%A)%> is ambiguouscall of overloaded %<%s(%A)%> is ambiguouscall stmt hash does not point to first direct edge of speculative call sequencecall to %<__builtin_operator_delete%> does not select replaceable global deallocation functioncall to %<__builtin_operator_new%> does not select replaceable global allocation functioncall to %qDcall to %qD herecall to %qD uses the default argument for parameter %P, which is not yet definedcall to %qE is ambiguous; argument %d has type %qs but argument %d has type %qscall to %qs declared with attribute error: %scall to %qs declared with attribute warning: %scall to a function that shares %qs state from a function that has no %qs statecall to a function that shares SME state from a function that has no SME statecall to a function that shares state other than %qs from a function that has %qs statecall to consteval function %qE is not a constant expressioncall to function %qD which throws incomplete type %q#Tcall to function which throws incomplete type %q#Tcall to internal function %qEcall to non-%<constexpr%> function %qDcall to non-function %qDcall-clobbered register used for global register variablecalled from herecalled from this functioncalled object %qD is not a function or function pointercalled object %qE is not a function or function pointercalled object is not a function or function pointercallee does not returncallee refers to comdat-local symbolscallee required more stack slots than the callercallee returns a structurecallee returns twicecaller and callee disagree in promotion of function return valuecaller edge count does not match BB countcaller edge count invalidcaller is not optimizedcaller uses __builtin_eh_returncaller uses allocacaller uses setjmpcaller uses sjlj exceptionscaller uses stdargscalling %<always_inline%> %<strub%> %qD in non-%<strub%> context %qDcalling %qD using non-%<strub%> type %qT in %<strub%> context %qDcalling %qD with SSE calling convention without SSE/SSE2 enabledcalling %qD with a nonzero argument is unsafecalling %qD with attribute sseregparm without SSE/SSE2 enabledcalling %qE without side effects discards return value of type %qT; prepend a %<cast(void)%> if intentionalcalling %qT with attribute sseregparm without SSE/SSE2 enabledcalling a streaming function requires the ISA extension %qscalling constexpr member function %qD through virtual base subobjectcalling non-%<strub%> %qD in %<strub%> context %qDcalls to functions of type %qT require the SVE ISA extensioncalls to overloaded operators cannot appear in a constant-expressioncalls to the OpenMP runtime API are not permitted in intervening codecalls_comdat_local is set outside of a comdat groupcan only use %qE attribute on file-scope definitions of objects of class typecan use at most one of the %<constinit%> and %<constexpr%> specifierscan't use non gp relative absolute addresscandidate %i:candidate %s has unimplemented %<CVT_type%> %d(%s)candidate 1:candidate 2:candidate expects %d argument, %d providedcandidate expects %d arguments, %d providedcandidate expects at least %d argument, %d providedcandidate expects at least %d arguments, %d providedcandidate is:candidates are:candidates are:cannot %<dynamic_cast%> %qE (of type %q#T) to type %q#T (%s)cannot %<goto%> into %<catch%> blockcannot %<goto%> into %<try%> blockcannot add an enumerator list to a template instantiationcannot add contracts after definitioncannot add contracts to a virtual functioncannot allocate an object of abstract type %qTcannot allocate array: size not constantcannot allocate objects with RVV type %qTcannot allocate objects with SVE type %qTcannot allocate stack for variable %q+D, naked functioncannot allocate vl register for %qs on this targetcannot apply %<offsetof%> to a non constant addresscannot apply %<offsetof%> to an enumerator %qDcannot apply %<offsetof%> to destructor %<~%T%>cannot apply %<offsetof%> to member functioncannot apply %<offsetof%> to member function %qDcannot apply %<offsetof%> to static data member %qDcannot apply %<offsetof%> when %<operator[]%> is overloadedcannot apply %qs to %qD, which has also been marked with an OpenMP 'declare target' directivecannot apply attribute %qs to %q+D after the function has been definedcannot apply both %<longcall%> and %<shortcall%> attributes to the same functioncannot apply member pointer %qE to %qE, which is of non-class type %qTcannot attach %<::main%> to a named modulecannot bind bit-field %qE to %qTcannot bind lvalue reference of type %qH to an rvalue of type %qIcannot bind non-const lvalue reference of type %qH to a value of type %qIcannot bind non-const lvalue reference of type %qH to an rvalue of type %qIcannot bind packed field %qE to %qTcannot bind reference of type %qH to %qI due to different array boundscannot bind rvalue %qE to %qTcannot bind rvalue reference of type %qH to lvalue of type %qIcannot call a concept as a functioncannot call constructor %<%T::%D%> directlycannot call member function %qD without objectcannot capture %qE by referencecannot capture member %qD of anonymous unioncannot cast %qs to %qs since sizes do not line upcannot cast expression of type %qs to %qscannot cast expression of type %qs to type %qscannot catch type %qT because it involves types of variable sizecannot close nonexistent response filecannot close receive-only channelcannot combine GNU and SVE vectors in a binary operationcannot combine a base of type %qT with an index of type %qTcannot combine a base of type %qT with an offset of type %qTcannot convert %qE from type %qH to type %qIcannot convert %qE from type %qT to type %qTcannot convert %qE to %qTcannot convert %qE to %qT becausecannot convert %qH to %qIcannot convert %qH to %qI in argument passingcannot convert %qH to %qI in assignmentcannot convert %qH to %qI in default argumentcannot convert %qH to %qI in initializationcannot convert %qH to %qI in returncannot convert a delegate expression to %qscannot convert a value of type %qT to vector type %qT which has different sizecannot convert a vector of type %qT to type %qT which has different sizecannot convert expression, only base types can be convertedcannot convert from %qT to base class %qT because %qT is incompletecannot convert from base class %qT to derived class %qT because the base is virtualcannot convert from base class %qT to derived class %qT via virtual base %qTcannot convert from incomplete type %qH to %qIcannot convert from pointer to base class %qT to pointer to derived class %qT because the base is virtualcannot convert from pointer to base class %qT to pointer to derived class %qT via virtual base %qTcannot convert parameter %qs from type %qs to type %qs in argument passingcannot convert parameter %qs from type %qs to type %qs in assignmentcannot convert struct %qs to %qscannot convert to a pointer typecannot convert type %qH to type %qIcannot convert value to a vectorcannot create a new %qs scope since %qs is shared with callerscannot create pointer to reference member %qDcannot create precompiled header %s: %mcannot create type information for type %qT because it involves types of variable sizecannot declare %<::main%> to be %qscannot declare %<::main%> to be a global variablecannot declare %<::main%> to be a templatecannot declare %<::main%> to be inlinecannot declare %<::main%> to be staticcannot declare %<::main%> with a linkage specificationcannot declare %<catch%> parameter to be of abstract class type %qTcannot declare %<catch%> parameter to be of rvalue reference type %qTcannot declare %qD to be a bit-field typecannot declare a parameter with %<decltype(auto)%>cannot declare bit-field %qD with %<warn_if_not_aligned%> typecannot declare bit-field %qD with function typecannot declare bit-field %qs with %<warn_if_not_aligned%> typecannot declare field %q+D to be of abstract type %qTcannot declare member %<%T::%s%> within %qTcannot declare member function %<%T::%s%> within %qTcannot declare member function %qD to have static linkagecannot declare parameter %q+D to be of abstract type %qTcannot declare parameter to be of abstract type %qTcannot declare pointer to %q#Tcannot declare pointer to %q#T membercannot declare pointer to qualified function type %qTcannot declare reference to %q#Tcannot declare reference to %q#T, which is not a typedef or a template type argumentcannot declare reference to qualified function type %qTcannot declare static function inside another functioncannot declare variable %q+D to be of abstract type %qTcannot decompose addresscannot decompose class type %qT because it has an anonymous struct membercannot decompose class type %qT because it has an anonymous union membercannot decompose class type %qT without non-static data memberscannot decompose class type %qT: both it and its base class %qT have non-static data memberscannot decompose class type %qT: its base classes %qT and %qT have non-static data memberscannot decompose inaccessible member %qD of %qTcannot decompose lambda closure type %qTcannot decompose non-array non-class type %qTcannot decompose union type %qTcannot decompose variable length array %qTcannot decompose variable length vector %qTcannot decrement a pointer to incomplete type %qTcannot deduce template arguments for copy-initialization of %qT, as it has no non-explicit deduction guides or user-declared constructorscannot deduce template arguments of %qT, as it has no viable deduction guidescannot default compare anonymous union membercannot default compare flexible array membercannot default compare reference member %qDcannot default compare union %qTcannot define friend function %qs in a local class definitioncannot define member function %<%T::%s%> within %qTcannot define member of dependent typedef %qTcannot delete a function.  Only pointer-to-objects are valid arguments to %<delete%>cannot delete objects with RVV type %qTcannot delete objects with SVE type %qTcannot derive from %<final%> base %qT in derived type %qTcannot determine %<#include%> translation of %s: %scannot determine the length of a %qscannot disable built-in function %qscannot emit unaligned pointers in ptx assemblycannot execute %qs: %scannot execute %qs: %s: %mcannot expand initializer for member %qDcannot explicitly declare member %q#D to have extern linkagecannot extend PCH file: %mcannot fallthrough final case in switchcannot find %<ldd%>cannot find %<nm%>cannot find %qscannot find %s in plugin %s
! %scannot find %s in plugin %s: %scannot find LTO cgraph in %scannot find LTO section refs in %scannot find a register in class %qs while reloading %<asm%>cannot find a valid counter name %qs of %<-fdbg-cnt=%> optioncannot find class %qEcannot find instance variable associated with propertycannot find interface declaration for %qEcannot find interface declaration for %qE, superclass of %qEcannot find protocol declaration for %qEcannot find reference tag for class %qEcannot form pointer to member of non-class %q#Tcannot generate position-independent code for %qscannot get %<float%> value from %scannot get frame pointer to %qscannot get position in PCH file: %mcannot get program status: %mcannot handle comparison of type %<%s == %s%>cannot handle inconsistent calls to %qscannot handle switch condition of type %scannot honor conflicting %qs clausecannot import module in its own purviewcannot increment a pointer to incomplete type %qTcannot index an empty packcannot initialize aggregate of type %qT with a compound literalcannot initialize array of %qT from a string literal with type array of %qTcannot inline function %<main%>cannot instantiate %<coroutine traits%>cannot instantiate a %<coroutine handle%> for promise type %qTcannot load plugin %s
! %scannot load plugin %s: %scannot mix operands of decimal floating and complex typescannot mix operands of decimal floating and other floating typescannot mix operands of decimal floating and vector typescannot nest more than %d namespacescannot open %qscannot open %qs for writing: %mcannot open %scannot open %s for writing: %mcannot open %s: %mcannot open '%s'cannot open file %qs for writing optimization recordscannot open intermediate gcn asm filecannot open intermediate ptx filecannot open ldd output: %mcannot open nested response filecannot open nm output: %mcannot open omp_requires file %qscannot open profile file %scannot pass argument in vector register because altivec instructions are disabled, use %qs to enable themcannot put object with volatile field into registercannot read %<LTO_section_decls%> from %scannot read %s: %mcannot read LTO mode table from %scannot read PCH file: %mcannot read function profile from %scannot read omp_requires file %qscannot read spec file %qs: %mcannot read string table from %scannot receive reference type %qT through %<...%>cannot reference %qT object types in %<target%> regioncannot reload integer constant operand in %<asm%>cannot represent built-in %<va_list%> type in Dcannot resolve overloaded function %qD based on conversion to type %qTcannot return from a handler of a function-try-block of a constructorcannot return value in vector register because altivec instructions are disabled, use %qs to enable themcannot set %qE attribute after definitioncannot set interrupt attribute: no current functioncannot set interrupt attribute: no such identifiercannot set position in PCH file: %mcannot specify %<-o%> with %<-c%>, %<-S%> or %<-E%> with multiple filescannot specify -static with -fsanitize=addresscannot specify -static with -fsanitize=hwaddresscannot specify -static with -fsanitize=threadcannot specify both %<-msep-data%> and %<-mid-shared-library%>cannot tail-call: %scannot tail-call: return value must be a callcannot take address of %qscannot take address of bit-field %qDcannot take address of scalar with reverse storage ordercannot take the address of %<this%>, which is an rvalue expressioncannot take the address of this expressioncannot throw C++ classescannot throw COM objectscannot throw expression of type %qT because it involves types of variable sizecannot throw or catch RVV type %qTcannot throw or catch SVE type %qTcannot type switch on non-interface valuecannot update SSA formcannot use %<-%> as input filename for a precompiled headercannot use %<-mtp=cp15%> with 16-bit Thumbcannot use %<::%> in parameter declarationcannot use %<_%> as valuecannot use %<indirect_call%> attribute under linux toolchaincannot use %<typeid%> with %<-fno-rtti%>cannot use %<va_arg%> with reverse storage ordercannot use %<va_start%> in interrupt functioncannot use %qs as a call-saved registercannot use %qs as a call-used registercannot use %qs as a fixed registercannot use an object as parameter to a methodcannot use exception attributes to function %qD under linux toolchaincannot use interrupt attributes to function %qD under linux toolchaincannot use keyword %qs as enumeration constantcannot use mode %qs for enumerated typescannot use mshared and static togethercannot use mthreads and mlegacy-threads togethercannot use multidimensional subscript in OpenMP array sectioncannot use multiple stack checking methods togethercannot use reset attributes to function %qD under linux toolchaincannot use small-data accesses for %qscannot use type %s as type %scannot value-initialize array of unknown bound %qTcannot write %s: %mcannot write PCH filecannot write PCH file: %mcannot write PCH file: required memory segment unavailablecannot write padding to PCH file: %mcannot write to %s: %mcanonical types differ for identical types %qT and %qTcapture by copy of RVV type %qTcapture by copy of SVE type %qTcapture by copy of incomplete type %qTcapture of non-variable %qEcapture of variable %qD with non-automatic storage durationcapture of variably-modified type %qT that is not an N3639 array of runtime boundcaptured structured bindings are a C++20 extensioncase label %qE not within a switch statementcase label does not reduce to an integer constantcase label is not an integer constant expressioncase label not within a switch statementcase label value exceeds maximum value for typecase label value is less than minimum value for typecase labels not sorted in switch statementcase labels not sorted: case value %qs not in enumerated typecase value %qs not in enumerated type %qTcast adds %q#v qualifier to function typecast between incompatible function types from %qH to %qIcast between incompatible function types from %qT to %qTcast between incompatible pointer to member types from %qH to %qIcast discards %qv qualifier from pointer target typecast from %qH to %qI increases required alignment of target typecast from %qH to %qI loses precisioncast from %qT is not allowedcast from %qT is not allowed in a constant expression because pointed-to type %qT is not similar to %qTcast from %qT is not allowed in a constant expression before C++26cast from %qs to %qs will produce zero resultcast from function call of type %qT to non-matching type %qTcast from pointer to integer of different sizecast from type %qT to type %qT casts away qualifierscast increases required alignment of target typecast specifies array typecast specifies function typecast to %qs address space pointer from disjoint %qs address space pointercast to %qs address space pointer from disjoint generic address space pointercast to %qs will produce null resultcast to generic address space pointer from disjoint %qs address space pointercast to non-integral type %qT in a constant expressioncast to pointer from integer of different sizecast to union type from type not present in unioncasting %qT to %qT does not dereference pointercasting %qT to %qT does not use %qDcasting between pointer-to-function and pointer-to-object is conditionally-supportedcatching non-call exceptions in functions with SME statecatching non-reference type %q#Tcatching polymorphic type %q#T by valuecatching type %q#T by valuecategory attributes are not available in Objective-C 1.0category attributes are not available in this version of the compiler, (ignored)cdecl and thiscall attributes are not compatiblecgraph count invalidcgraph_node has wrong clone listcgraph_node has wrong clone_ofcgraph_node has wrong prev_clone pointercgraph_node is in clone list but it is not clonechange of the active member of a union from %qD to %qD during initializationchange of the active member of a union from %qD to %qD is not a constant expression before C++20changing the return type from %qs to a comparison category type will allow the comparison to use %qs and %qscheck_charlen_present(): length not setcheck_dimension(): Bad array referencecheck_dummy_characteristics: Unexpected result %i of gfc_dep_compare_exprcheck_init_expr(): Unknown expression typecheck_intents(): List mismatchcheck_restricted(): Unknown expression typecheck_result_characteristics (1): Unexpected result %i of gfc_dep_compare_exprcheck_result_characteristics (2): Unexpected result %i of gfc_dep_compare_exprcheck_some_aliasing(): List mismatchcheck_some_aliasing(): corrupted datachecksum is (%x,%x) instead of (%x,%x)choosing %qD over %qDchunk size value must be positivecircular pointer delegation detectedclass %qE already existsclass %qE defined without specifying a base classclass %qE is deprecatedclass %qE is not availableclass %qE is unavailableclass %qT does not have any field named %qDclass %qT is implicitly friends with itselfclass %qs does not implement the %qE protocolclass attributes are not available in Objective-C 1.0class definition may not be declared a friendclass extension for class %qE declared after its %<@implementation%>class extensions are not available in Objective-C 1.0class template %qD redeclared as non-templateclass template argument deduction failed:class template argument deduction for %qT failed: explicit deduction guide selected in copy-list-initializationclass template argument deduction is only available with %<-std=c++17%> or %<-std=gnu++17%>class type %qT is incompleteclauses in %<simd%> trait should be separated by %<,%>cleanup argument not a functioncleanup argument not an identifierclones for %<target_clones%> attribute cannot be createdclose: %sclosed intervalsclosing LTRANS output list %s: %mclosing dependency file %s: %mcoarray argumentcode between call and returncode may be misoptimized unless %<-fno-strict-aliasing%> is usedcode model %qs is not compatible with %scode model %qs not supported in ilp32 modecode model %qs not supported in the %s bit modecode model %qs not supported in x32 modecode model %qs with %<-f%s%>code model %qs with %qscode model %s does not support PIC modecollapse argument needs positive constant integer expressioncollect2 version %s
  collection in fast enumeration is not an objectcomdat symbol cannot be versionedcomdat-local function called by %s outside its comdatcomdat-local symbol referred to by %s outside its comdatcomma at end of enumerator listcomma-separated list in using-declaration only available with %<-std=c++17%> or %<-std=gnu++17%>command-line option %<-fno-builtin-%s%> is not valid for Fortrancommand-line option %qs is not supported by this configurationcommand-line option %qs is valid for %s but not for %scommand-line option %qs is valid for the driver but not for %scommon symbol cannot be versionedcommon variables must have an alignment of 32678 or lesscompare_actual_expr(): Bad component codecompare_real(): Bad operatorcomparing final insns dumpscomparing floating-point with %<==%> or %<!=%> is unsafecomparing the result of pointer addition %qE and NULLcomparing vectors with different element typescomparing vectors with different number of elementscomparison between %q#T and %q#Tcomparison between %qT and %qTcomparison between distinct pointer types %qT and %qT lacks a castcomparison between distinct pointer-to-member types %qT and %qT lacks a castcomparison between pointer and integercomparison between pointer and zero character constantcomparison between two arrayscomparison between two arrays is deprecated in C++20comparison between two arrays is not allowed in C++26comparison between types %qT and %qTcomparison is always %dcomparison is always %d due to width of bit-fieldcomparison is always false due to limited range of data typecomparison is always true due to limited range of data typecomparison of complete and incomplete pointerscomparison of constant %qE with boolean expression is always falsecomparison of constant %qE with boolean expression is always truecomparison of distinct Objective-C types lacks a castcomparison of distinct pointer types lacks a castcomparison of enumeration type %qT with floating-point type %qTcomparison of enumeration type %qT with floating-point type %qT is deprecatedcomparison of floating-point type %qT with enumeration type %qTcomparison of floating-point type %qT with enumeration type %qT is deprecatedcomparison of integer expressions of different signedness: %qT and %qTcomparison of pointers to disjoint address spacescomparison of promoted bitwise complement of an unsigned value with constantcomparison of promoted bitwise complement of an unsigned value with unsignedcomparison of unsigned expression in %<< 0%> is always falsecomparison of unsigned expression in %<>= 0%> is always truecomparison operator %q+D defaulted after its first declarationcomparison requiredcomparison with string literal results in unspecified behaviorcomparisons like %<X<=Y<=Z%> do not have their mathematical meaningcompatible type is herecompilation terminated due to -Wfatal-errors.
  compilation terminated due to -fmax-errors=%u.
  compilation terminated.
*************** warranty; not even for MERCHANTABILITY o
*** 2130,2136 ****
  errors during merging of translation unitseval_intrinsic(): Bad operatoreval_type_intrinsic0(): op NULLexception '%s'exception cleanup for this placement new selects non-placement %<operator delete%>exception cleanups omit __tsan_func_exit callexception handling disabled, use %<-fexceptions%> to enableexception handling disabled; use %<-fexceptions%> to enableexception handling personality mismatchexception of type %<%T%> will be caughtexception of type %qT will be caught by earlier handlerexception specification of %qD depends on itselfexception specification of %qD is not available until end of class definitionexcess elements in %qT initializerexcess elements in array initializerexcess elements in scalar initializerexcess elements in struct initializerexcess elements in union initializerexcess elements in vector initializerexcess use operand for statementexecution counts assumed to be zero
  execution counts estimated
  existing declaration %#qDexisting declaration here with no tagsexisting declaration here with tags %qEexisting default declared hereexisting definition %qDexit %d->%d not recordedexit block count not initializedexpansion pattern %qE contains no parameter packsexpansion pattern %qT contains no parameter packsexpansion point is location %lluexpected %<"%>expected %<#pragma omp scan%>expected %<#pragma omp section%> or %<}%>expected %<(%>expected %<(%> after template-argument-listexpected %<(%> at %Cexpected %<(%> or end of lineexpected %<)%>expected %<)%> at %Cexpected %<)%> or %<,%>expected %<*%>expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%> or identifierexpected %<,%>expected %<,%> or %<)%>expected %<,%> or %<...%>expected %<,%> or %<;%>expected %<,%> or %<]%>expected %<,%> or %<}%>expected %<,%>, %<;%> or %<}%>expected %<.%>expected %<...%>expected %<:%>expected %<:%> at %Cexpected %<:%> or %<)%>expected %<:%> or %<...%>expected %<:%> or %<::%>expected %<:%>, %<,%>, %<;%>, %<}%> or %<__attribute__%>expected %<::%>expected %<;%>expected %<;%> after class definitionexpected %<;%> after struct definitionexpected %<;%> after union definitionexpected %<;%> at end of member declarationexpected %<;%> or %<{%>expected %<;%> or %<{%> after method attribute definitionexpected %<;%>, %<,%> or %<)%>expected %<;%>, identifier or %<(%>expected %<<%>expected %<=%>expected %<=%> after Objective-C %qEexpected %<=%> at %Cexpected %<=%>, %<,%>, %<;%>, %<asm%> or %<__attribute__%>expected %<==%> comparison in %<if%> conditionexpected %<==%>, %<<%> or %<>%> comparison in %<if%> conditionexpected %<>%>expected %<@end%>expected %<@synchronized%>expected %<@throw%>expected %<@try%>expected %<[%>expected %<]%>expected %<__label__%>expected %<__transaction_atomic%>expected %<__transaction_relaxed%>expected %<acq_rel%>, %<acquire%>, %<relaxed%>, %<release%> or %<seq_cst%>expected %<alloc%>, %<to%>, %<from%>, %<tofrom%>, %<firstprivate%>, %<none%> or %<default%>expected %<allocator%> or %<align%>expected %<ancestor%> or %<device_num%>expected %<asm%>expected %<at%>, %<severity%> or %<message%> clauseexpected %<auto%>expected %<auto%> or %<decltype(auto)%> after %qEexpected %<big-endian%>, %<little-endian%>, or %<default%> after %<#pragma scalar_storage_order%>expected %<cancel%> %<if%> clause modifierexpected %<catch%>expected %<class%>expected %<class%> or %<typename%>expected %<class%>, %<typename%>, or %<template%>expected %<co_yield%>expected %<concurrent%>expected %<data%>expected %<data%> after %<#pragma acc %s%>expected %<data%>, %<update%>, %<enter%> or %<exit%>expected %<declare target%> or %<assumes%>expected %<declare%> or %<assumes%>expected %<decltype%>expected %<delete%>expected %<depend%>, %<destroy%> or %<update%> clauseexpected %<directive%> or %<sequence%>expected %<else%>expected %<error%>, %<warning%>, %<ignored%>, %<push%>, %<pop%>, %<ignored_attributes%> after %<#pragma GCC diagnostic%>expected %<extern%>expected %<finally%> or %<catch%>expected %<for%> after %qsexpected %<for%> loop or OpenMP loop transformation constructexpected %<fr%> or %<attr%> preference selectorexpected %<host%>, %<nohost%> or %<any%>expected %<in%>, %<out%>, %<inout%>, %<mutexinoutset%> or %<inoutset%>expected %<inclusive%> or %<exclusive%> clauseexpected %<interop%>expected %<interop%> at %Cexpected %<match%>, %<adjust_args%> or %<append_args%> at %Cexpected %<match%>, %<adjust_args%> or %<append_args%> clauseexpected %<namespace%>expected %<new%>expected %<none%> or %<present%>expected %<none%>, %<shared%>, %<private%> or %<firstprivate%>expected %<nothing%> or %<need_device_ptr%>expected %<nothing%> or %<need_device_ptr%> followed by %<:%>expected %<nothing%>, %<need_device_ptr%> or %<need_device_addr%> at %Cexpected %<omp_priv%> or function-nameexpected %<operator%>expected %<point%>expected %<prefer_type%>, %<target%>, or %<targetsync%>expected %<read%>, %<write%>, %<update%>, %<capture%>, %<compare%>, %<weak%>, %<fail%>, %<seq_cst%>, %<acq_rel%>, %<release%>, %<relaxed%> or %<hint%> clauseexpected %<read%>, %<write%>, %<update%>, or %<capture%> clauseexpected %<reproducible%> or %<unconstrained%>expected %<return%>expected %<scalar%>, %<aggregate%>, %<all%>expected %<scalar%>, %<aggregate%>, %<pointer%> or %<all%>expected %<seq_cst%>, %<acq_rel%>, %<release%> or %<acquire%>expected %<seq_cst%>, %<acquire%> or %<relaxed%>expected %<simd%>, %<reduction%>, %<target%> or %<variant%>expected %<sizes%>expected %<static_assert%>expected %<target%>expected %<teams%>, %<parallel%> or %<thread%>expected %<template%>expected %<throw%>expected %<try%>expected %<unified_address%>, %<unified_shared_memory%>, %<self_maps%>, %<dynamic_allocators%>, %<reverse_offload%> or %<atomic_default_mem_order%> clauseexpected %<using%>expected %<when%>, %<otherwise%>, or %<default%> at %Cexpected %<when%>, %<otherwise%>, or %<default%> clauseexpected %<while%>expected %<{%>expected %<{%> at %Cexpected %<{%> or %<:%>expected %<}%>expected %<}%> at %Cexpected %<}%> before %<else%>expected %<~%>expected %d levels of template parms for %q#D, got %dexpected %e but argument is of type %eexpected %i or more, found %iexpected %i, found %iexpected %qE selector nameexpected %qT but argument is of type %qTexpected %qT but pointer is of type %qTexpected %qs %<if%> clause modifier rather than %qsexpected %qs keyword before dependent template nameexpected %qs or %qsexpected %s or %s; got %sexpected %s or %s; got bad token: %sexpected %s; got %sexpected %s; got bad token: %sexpected ...expected 64-bit address but argument 1 is %d-bitexpected 64-bit address but argument 2 is %d-bitexpected : at %Cexpected OpenMP directive nameexpected a JSON value but got %sexpected a function nameexpected a string after %<#pragma message%>expected an OpenACC clauseexpected an OpenMP clauseexpected an SSA_NAME objectexpected an argument to %<msp430_select_cpu%>expected an identifier for the attribute nameexpected assumption clauseexpected at least one assumption clauseexpected attribute argument as balanced token sequenceexpected attribute before %<...%>expected between %i and %i, found %iexpected binary operatorexpected block indexexpected block specifierexpected boolean expressionexpected boolean typeexpected call expressionexpected case labelexpected channelexpected class nameexpected class-keyexpected class-nameexpected constant integer expression at %Cexpected constant integer expression with valid sync-hint valueexpected constant logical expressionexpected constant offsetexpected constant offset for %<__MEM%> operandexpected constant sizeexpected constant step for %<__MEM%> operandexpected constructor, destructor, or type conversionexpected context selector set nameexpected context selector set name at %Cexpected contract level: %<default%>, %<audit%>, or %<axiom%>expected contract semantic or levelexpected contract-roleexpected count valueexpected declarationexpected declaration or statementexpected declaration specifiersexpected declaration specifiers or %<...%>expected declaratorexpected directive nameexpected dummy parameter name, %<omp_num_args%> or constant positive integer at %Cexpected else statementexpected empty string after %<operator%> keywordexpected end of capture-listexpected end of lineexpected expressionexpected expression at %Cexpected expression-list or type-idexpected frequency qualityexpected frequency valueexpected functionexpected function nameexpected function-name %<(%>expected goto expressionexpected id-expressionexpected id-expression (arguments)expected identifierexpected identifier at %Cexpected identifier or %<(%>expected identifier or %<)%>expected identifier or %<*%>expected identifier or string literalexpected identifier or string literal at %Cexpected initializerexpected integerexpected integer expressionexpected integer expression listexpected interface or pointer to interfaceexpected iteration declaration or initializationexpected iteration-statementexpected jump-statementexpected labelexpected labeled-statementexpected loop numberexpected map index on right hand sideexpected mode %s for operand %d of insn %s but got mode %s.
! expected module-nameexpected module-partitionexpected name at %Cexpected namespace-nameexpected nested-name-specifierexpected numeric typeexpected operatorexpected parameter pack before %<...%>expected pass nameexpected pointerexpected pointer as argument of unary %<*%>expected pointer in %qs clauseexpected primary-expressionexpected ptr-operatorexpected qualified name in friend declaration for constructor %qDexpected qualified name in friend declaration for destructor %qDexpected selection-statementexpected signature: %qDexpected simd clause at %Cexpected single pointer in %qs clauseexpected specifier-qualifier-listexpected statementexpected string for object key after ','; got %sexpected string for object key after '{'; got %sexpected string literalexpected string literal or constant integer expressionexpected string literal or constant integer expression instead of %qEexpected string-literalexpected string-literal or constexpr in parenthesesexpected struct, slice, array, or map type for composite literalexpected suffix identifierexpected target-function callexpected template-argumentexpected template-idexpected template-id for typeexpected template-nameexpected trait selector nameexpected trait selector name at %Cexpected type specifierexpected type-nameexpected type-specifierexpected unqualified-idexpected variant name at %Cexpecting %E byte in a region of size %Eexpecting %E bytes in a region of size %Eexpecting %E or more bytes in a region of size %Eexpecting argument of type pointer or of type integer for argument 1expecting between %E and %E bytes in a region of size %Eexpecting internal function nameexpecting one and only one label to be declaredexperimental flag to turn on the new strict type checkerexplicit by-copy capture of %<this%> with by-copy capture default only available with %<-std=c++20%> or %<-std=gnu++20%>explicit by-copy capture of %qD redundant with by-copy capture defaultexplicit by-reference capture of %qD redundant with by-reference capture defaultexplicit conversion function was not consideredexplicit conversion operators only available with %<-std=c++11%> or %<-std=gnu++11%>explicit deduction guide declared hereexplicit deduction guides not considered for copy-initializationexplicit goto at end of bb %dexplicit instantiation of %q#Dexplicit instantiation of %q#T before definition of templateexplicit instantiation of %qD but no definition availableexplicit instantiation of %qD in namespace %qD (which does not enclose namespace %qD)explicit instantiation of %qD outside its namespace must use a nested-name-specifierexplicit instantiation of non-class template %qDexplicit instantiation of non-template %q#Dexplicit instantiation of non-template type %qTexplicit instantiation shall not use %<consteval%> specifierexplicit instantiation shall not use %<constexpr%> specifierexplicit instantiation shall not use %<inline%> specifierexplicit instantiations are not permitted hereexplicit object member function %qD cannot have cv-qualifierexplicit object member function %qD cannot have ref-qualifierexplicit object member function only available with %<-std=c++23%> or %<-std=gnu++23%>explicit object member function overrides virtual functionexplicit object parameter declared hereexplicit object parameter is already a mutable referenceexplicit qualification in declaration of %qDexplicit register variable %qs cannot be used in nested functionexplicit register variable %qs declared %<extern%>explicit register variable %qs declared thread localexplicit specialization %q#D may be missing attributesexplicit specialization declared %<concept%>explicit specialization in non-namespace scope %qDexplicit specialization of %qD after first useexplicit specialization of %qD must be introduced by %<template <>%>explicit specialization of %qD outside its namespace must use a nested-name-specifierexplicit specialization of non-template %qTexplicit specializations are not permitted hereexplicit template argument list not allowedexplicit template specialization cannot have a storage classexplicitly defaulted copy assignment operator is implicitly deleted because its declared type does not match the type of an implicit copy assignment operatorexplicitly defaulted copy constructor is implicitly deleted because its declared type does not match the type of an implicit copy constructorexplicitly defaulted function %q+D cannot be declared %qs because the implicit declaration is not %qs:explicitly defaulted move assignment operator is implicitly deleted because its declared type does not match the type of an implicit move assignment operatorexplicitly defaulted move constructor is implicitly deleted because its declared type does not match the type of an implicit move constructorexplicitly used registers must be grouped at top of stackexponent-letter %<q%> in real-literal-constant at %Cexport-declarations are not permitted hereexporting %q#D that does not have external linkageexporting declaration %qD declared in unnamed namespaceexporting declaration %qD with internal linkageexporting namespace %qD with internal linkageexporting unnamed namespaceexpr in !$OMP ATOMIC COMPARE assignment var = expr must be scalar and cannot reference var at %Lexpr in !$OMP ATOMIC WRITE assignment var = expr must be scalar and cannot reference var at %Lexpr in !$OMP ATOMIC assignment var = var op expr must be scalar and cannot reference var at %Lexpression %qE does not designate a %<constexpr%> functionexpression %qE is not a constant expressionexpression %qs requires %<object.TypeInfo%> and cannot be used with %<-fno-rtti%>expression cannot be used as a functionexpression does not compute the number of elements in this array; element type is %qT, not %qTexpression in new-declarator must have integral or enumeration typeexpression in static assertion is not an integerexpression in static assertion is not an integer constant expressionexpression in static assertion is not constantexpression list treated as compound expression in functional castexpression list treated as compound expression in initializerexpression list treated as compound expression in mem-initializerexpression must be enclosed in parenthesesexpression must be integralexpression of abstract class type %qT cannot be used in throw-expressionexpression statement has incomplete typeext-dce disabled: %d basic blocks and %d registers; increase %<--param max-gcse-memory%> above %wuextend_ref(): Bad tailextended initializer lists only available with %<-std=c++11%> or %<-std=gnu++11%>extended registers have no high halvesextern declaration of %q+D follows declaration with no linkageextern model globalvalueextern structured binding is not name-independentextern variable is not name-independentexternal TLS initialization functions not supported on this targetexternal linkage definition of %qD in header module must be declared %<inline%>external linkage required for symbol %q+D because of %qE attributeexternally visible inline cloneextra %<;%> after in-class function definitionextra %<;%> inside a structextra %<;%> inside a struct only allowed in C++11extra %<;%> outside of a functionextra %<;%> outside of a function only allowed in C++11extra brace group at end of initializerextra compile time semantic checking, typically tries to catch poor programming styleextra elements in scalar initializerextra outgoing edge %d->%dextra qualification %<%T::%> on member %qsextra qualification not allowedextra semicolonextra semicolon in method definition specifiedextra semicolon in struct or union specifiedextra type qualifiers in format argument (argument %d)extraneous data at end of filefail to initialize plugin %sfailed %<assume%> attribute assumptionfailed %s mapper %qsfailed %s mapper %qs line %ufailed compiling %sfailed mapper handshake %sfailed to create map component '%s'failed to create union component '%s'failed to expand built-in functionfailed to get exit status: %mfailed to get process times: %mfailed to initialize plugin %sfailed to load binding %<%E%s%E%>failed to load binding %<%E%s%E@%s%>failed to load pendings for %<%E%s%E%>failed to open temporary file %s for LTO outputfailed to open temporary file %s with LTO outputfailed to read compiled module cluster %u: %sfailed to read compiled module: %sfailed to reclaim unneeded functionfailed to reclaim unneeded function in same comdat groupfailed to split %qD for %<strub%>failed to split insnfailed to translate literal to execution character set %qTfailed to write compiled module: %sfailure memory model %qs cannot be stronger than success memory model %qs for %qDfailure memory model %wi cannot be stronger than success memory model %wi for %qDfailure to simplify substring reference in DATA statement at %Lfailure trying to reload:fallthru edge after a control statement in bb %dfallthru edge after unconditional jump in bb %ifallthru edge crosses section boundary in bb %ifallthru to exit from bb %dfast enumeration is not available in Objective-C 1.0fastcall and cdecl attributes are not compatiblefastcall and regparm attributes are not compatiblefastcall and stdcall attributes are not compatiblefastcall and thiscall attributes are not compatiblefatal error: fclose %s: %mfe_runtime_error string must be null terminatedfe_runtime_error: Wrong number of arguments (%d instead of %d)field %q#D can be accessed via %q#Dfield %q#D with same name as classfield %qD has incomplete type %qTfield %qE declared as a functionfield %qE has incomplete typefield name not in record or union initializerfield number exceeds definition of setfield number out of range trying to access set elementfield precision specifierfield widthfield width in printf formatfield width in scanf formatfield width in strfmon formatfield width in strftime formatfield width specifierfields cannot have RVV type %qTfields cannot have SVE type %qTfields have different layout in another translation unitfile %qs left but not enteredfile ends in default argumentfile-scope compound literal specifies %<register%>file-scope declaration of %qE specifies %<auto%>file-scope declaration of %qE specifies %<register%>filename %qs does not start with profile prefix %qsfill characterfill character in strfmon formatfilter the language dump using a comma separated list of procedures and modulesfind_array_spec(): unused as(1)find_array_spec(): unused as(2)find_enum(): Enum not foundfini function found in object %sfirst %<sizeof%> operand was declared herefirst argument must be []bytefirst argument of %q+D should be %<int%>first argument of %qD must be a pointer, second integer constantfirst argument to %<__builtin_call_with_static_chain%> must be a call expressionfirst argument to %<__builtin_choose_expr%> not a constantfirst argument to %<va_arg%> not of type %<va_list%>first argument to %qD must be a string literalfirst argument type %qT of a pointer to member must be a class type or a pointer to a class typefirst error appeared herefirst error in %qD appeared herefirst expression has type %qTfirst mismatch is fieldfirst offset must be in opposite direction of loop iterationsfirst register must be R0first seen herefirst specified herefixed ebp register requires %<-maccumulate-outgoing-args%>fixed ebp register requires %<target("accumulate-outgoing-args")%>fixed register %s used to pass parameter to functionfixed tree mismatchfixed-point overflow in expression %qE of type %qT results in %qEfixed-point overflow in expression of type %qT results in %qEfixed-point types not supported for this targetfixed-point types not supported in C++flexible array member %qD does not have well defined padding bits for %qsflexible array member %qD in an otherwise empty %q#T is a GCC extensionflexible array member %qD in unionflexible array member %qD not at end of %q#Tflexible array member in a struct with no named members is a GCC extensionflexible array member in union is a GCC extensionflexible array member not at end of structfloating constant exceeds range of %qTfloating constant misusedfloating constant truncated to zerofloating literal exceeds range of %qT typefloating literal truncated to zerofloating point overflow in expression %qE of type %qT results in %qEfloating point overflow in expression of type %qT results in %qEfloating-point constant not a valid immediate operandfloating-point suffix %qs shadowed by implementationfloating-point unit %qs differs from PRID preset %qsflow control insn inside a basic blockfmax-include-depth=<number> Set the maximum depth of the nested #include.fold check: original tree changed by foldfold of empty expansion over %Ofold-expressions only available with %<-std=c++17%> or %<-std=gnu++17%>fold-mem-offsets: %d basic blocks and %d edges/basic blockfopen %s: %mfor %qDfor a function-style cast, remove the redundant %<::%D%>for array function parameter length expression must be specifiedfor backward compatibilityfor deduction to %<std::initializer_list%>, use copy-list-initialization (i.e. add %<=%> before the %<{%>)for increment expression cannot resolve address of overloaded functionfor increment expression has no effectfor increment expression is a reference, not call, to function %qEfor pointer type length expression must be specifiedfor statement expectedfor template declaration %q+Dfor the option %<-mcache-block-size=X%>, the valid X must be: 4, 8, 16, 32, 64, 128, 256, or 512for type %qTfor unknown bound array type length expression must be specifiedfor, while or do statement expectedforce positive result from MOD and DIV result floorformatformat argument %d unused before used argument %d in %<$%>-style formatformat argument %d used more than once in %s formatformat argument should be a %qs referenceformat argument should be a %qs reference but a string was foundformat is a wide character stringformat not a string literal and no format argumentsformat not a string literal, argument types not checkedformat not a string literal, format string not checkedformat of column headings in %<devices.csv%> is incorrectformat string argument follows the arguments to be formattedformat string argument is not a string typeformat string is defined hereformat string is not an array of type %qsforming pointer to qualified function type %qTforming pointer to reference type %qTforming reference to qualified function type %qTforming reference to reference type %qTforming reference to voidforming type of %qsforward declaration of %q#Tforward reference to frame of %qsfound %<%c%s%>found %<-%E%> instead of %<+%E%> in protocol(s)found %<:%> in nested-name-specifier, expected %<::%>found a %qT but the format argument should be a stringfound a %qs reference but the format argument should be a stringfound a default name with a non-empty defining statementfound a real definition for a non-registerfound a virtual definition for a GIMPLE registerfound an SSA_NAME that had been released into the free poolfound default case not at the start of case vectorfp software completion requires %<-mtrap-precision=i%>fr30_print_operand: invalid %%F codefr30_print_operand: invalid %%x codefr30_print_operand: invalid operand to %%A codefr30_print_operand: unhandled MEMfr30_print_operand: unknown codefr30_print_operand: unrecognized %%B codefr30_print_operand: unrecognized %%b codefr30_print_operand: unrecognized %%p codefr30_print_operand_address: unhandled addressframe pointer required, but reservedframe size of %qs is %wd bytesframe size of function %qs is %wd bytes exceeding user provided stack limit of %d bytes; an unconditional trap is addedframe size of function %qs is %wd bytes which is more than half the stack size; the dynamic check would not be reliable; no check emitted for this functionframe size too large for reliable stack checkingfree_expr0(): Bad expr typefree_pi_tree(): Unresolved fixupfriend declaration %q#D declares a non-template functionfriend declaration %qD in local class without prior local declarationfriend declaration %qD is not visible to explicit specializationfriend declaration %qD may not have virt-specifiersfriend declaration does not name a class or functionfriend declaration herefriend declaration not in class definitionfriend declaration of %q#D specifies default arguments and isn%'t the only declarationfriend declaration of %qD specifies default arguments and isn%'t a definitionfriend declaration requires class-key, i.e. %<friend %#T%>friend declaration requires class-key, i.e. %<friend class %T::%D%>friend function definition %qs cannot have a name qualified with %<%D::%>friend function definition %qs cannot have a name qualified with %<::%>friend function template with constraints that depend on outer template parameters must be a definitionfrom definition of %q#Dfrom previous declaration %qFfrontend does not support sibling callfrv_print_operand: unknown codefunc can only be compared to nilfunction %<main%> must have no arguments when using the %<-minrt%> optionfunction %<main%> must never return when using the %<-minrt%> optionfunction %q#D is initialized like a variablefunction %q+D definition is marked dllimportfunction %q+D part of alias cyclefunction %q+F can never be copied because it has %<noclone%> attributefunction %q+F can never be copied because it receives a non-local gotofunction %q+F can never be copied because it saves address of local label in a static variablefunction %q+F can never be inlined because it contains a computed gotofunction %q+F can never be inlined because it has a VLA argumentfunction %q+F can never be inlined because it is suppressed using %<-fno-inline%>function %q+F can never be inlined because it uses %<__builtin_return%> or %<__builtin_apply_args%>function %q+F can never be inlined because it uses alloca (override using the always_inline attribute)function %q+F can never be inlined because it uses attributes conflicting with inliningfunction %q+F can never be inlined because it uses non-local gotofunction %q+F can never be inlined because it uses setjmpfunction %q+F can never be inlined because it uses setjmp-longjmp exception handlingfunction %q+F can never be inlined because it uses variable argument listsfunction %qD declared %<[[noreturn]]%> but its first declaration was notfunction %qD declared %<virtual%> inside a unionfunction %qD is initialized like a variablefunction %qD might be a candidate for %qs format attributefunction %qD redeclared as variablefunction %qD used as %<asm%> outputfunction %qs cannot be declared %<mutable%>function %qs has been referenced in offloaded code but hasn%'t been marked to be included in the offloaded codefunction %qs, parameter %u, has IPA-SRA accesses which overlapfunction %qs, parameter %u, is used but does not have any certain IPA-SRA accessfunction arguments of %<__builtin_tgmath%> all have the same typefunction arguments of %<__builtin_tgmath%> lack type-generic parameterfunction attribute %qs requires the V ISA extensionfunction attributes %qs and %qs are mutually exclusivefunction body can be overwritten at link timefunction body not availablefunction call has aggregate valuefunction called through a non-compatible typefunction concepts are no longer supportedfunction declaration isn%'t a prototypefunction declared %<noreturn%> has a %<co_return%> statementfunction declared %<noreturn%> has a %<return%> statementfunction definition declared %<auto%>function definition declared %<register%>function definition declared %<typedef%>function definition declared %qsfunction definition does not declare parametersfunction definition has qualified void return typefunction does not return a value to testfunction does not return string typefunction has external linkage when the user requests only inlining static for live patchingfunction may return address of local variablefunction might be candidate for attribute %qsfunction might be candidate for attribute %qs if it is known to return normallyfunction name as the left hand operand of %<<%> is ill-formed in C++20; wrap the function name in %<()%>function not considered for inliningfunction not declared inline and code size would growfunction not inlinablefunction not inline candidatefunction or array type %qT in %<#pragma omp declare reduction%>function or array type in %<#pragma omp declare reduction%>function parameterfunction parameter %qD may not appear as list item in an %<allocate%> directivefunction pointers not supported with %<-mabi=ti%> optionfunction previously declared %<static%> redeclared %<extern%>function requires a dual-context, which is not yet supported by GDCfunction result count mismatchfunction return type cannot be functionfunction return types not compatible due to %<volatile%>function returning a functionfunction returning an arrayfunction returns address of labelfunction returns address of local variablefunction returns an aggregatefunction starts on a higher line number than it endsfunction symbol is not functionfunction template %qD redeclared as a class templatefunction template-id %qD in nested-name-specifierfunction types not truly compatible in ISO Cfunction versions cannot be marked as %<gnu_inline%>, bodies have to be generatedfunction with contracts %q+D overriding contractless functionfunction with qualified void return type calledfunction-scope %qE implicitly auto and declared %qsfunction-scope %qs implicitly auto and declared %<__thread%>function-try-block body of %<constexpr%> constructor only available with %<-std=c++20%> or %<-std=gnu++20%>function-try-block body of %<constexpr%> function only available with %<-std=c++20%> or %<-std=gnu++20%>functional cast to array type %qTfunctions with %qs state require the ISA extension %qsfunctions with SME state require the ISA extension %qsgang reduction on an orphan loopgarbage at end of %<#pragma nomember_alignment%>gcc driver version %s %sexecuting gcc version %s
  gcc version %s %s
  gcov %s%s
  generate a C source scaffold for the current module being compiledgenerate a C++ source scaffold for the current module being compiledgenerate a shared library from the modulegenerate error messages which render keywords in lower casegenerate extra nops to improve debugging, producing an instruction for every code related keywordgenerate static scaffold initialization and finalization for every module inside maingenerate the main functiongenerate_isocbinding_initializer(): bad iso_c_binding type, expected %<c_ptr%> or %<c_funptr%>generated loop of %<unroll%> construct without %<partial%> clause does not have canonical formgeneric thunk code fails for method %qD which uses %<...%>get_mpz(): Not an integer constantgetting core file size maximum limit: %mgfc_add_interface(): Bad interface typegfc_arith_divide(): Bad basic typegfc_arith_error(): Bad error codegfc_arith_minus(): Bad basic typegfc_arith_plus(): Bad basic typegfc_arith_times(): Bad basic typegfc_arith_uminus(): Bad basic typegfc_array_dimen_size(): Bad EXPR_ARRAY exprgfc_array_dimen_size(): Bad dimensiongfc_ascii_statement(): Bad statement codegfc_basic_typename(): Undefined typegfc_caf_attr(): Bad array referencegfc_caf_attr(): Expression isn't a variablegfc_check_dependency: expecting an EXPR_VARIABLEgfc_check_digit(): bad radixgfc_code2string(): Bad codegfc_compare_derived_types: invalid derived typegfc_compare_expr(): Bad basic typegfc_copy_expr(): Bad expr nodegfc_expression_rank(): Two array specsgfc_find_array_ref(): No ref foundgfc_free_statement(): Bad statementgfc_get_constant_expr(): locus %<where%> cannot be NULLgfc_get_default_type(): Bad symbol %qsgfc_is_constant_expr(): Unknown expression typegfc_match(): Bad match code %cgfc_match_sym_complex_part(): Bad typegfc_op2string(): Bad codegfc_range_check() returned bad valuegfc_range_check(): Bad typegfc_ref_dimen_size(): Bad dimen_typegfc_ref_dimen_size(): Bad dimensiongfc_resolve_blocks(): Bad block typegfc_resolve_code(): Bad statement codegfc_resolve_code(): No expression on DO WHILEgfc_resolve_expr(): Bad expression typegfc_set_default_type(): symbol already has a typegfc_simplify_abs(): Bad typegfc_simplify_dcmplx(): Bad type (x)gfc_simplify_dcmplx(): Bad type (y)gfc_simplify_dim(): Bad typegfc_simplify_floor(): Bad kindgfc_simplify_log: bad typegfc_simplify_mod(): Bad argumentsgfc_simplify_modulo(): Bad argumentsgfc_trans_code(): Bad statement codegfc_trans_omp_workshare(): Bad statement codegfc_trans_select(): Bad type for case expr.gfc_typename(): Undefined typegfc_validate_kind(): Got bad kindgfc_validate_kind(): Got bad typegfc_variable_attr(): Expression isn't a variablegfortran does not support -E without -cppgfortran: Only one %<-J%> option allowedgimple call has no targetgimple call has two targetsgimple check: expected %s(%s), have %s(%s) in %s, at %s:%dgimple_bb (phi) is set to a wrong basic blockgimple_bb (stmt) is set to a wrong basic blockgimplification failedglobal constructors not supported on this targetglobal destructors not supported on this targetglobal module fragment contents must be from preprocessor inclusionglobal qualification of class name is invalidglobal register variable %qD used in nested functionglobal register variable follows a function definitionglobal register variable has initial valueglobal/static variable assignment has been interceptedgot %d template parameters for %q#Dgot %d template parameters for %q#Tgoto destination is neither a label nor a pointergp is constant (but save/restore gp on indirect calls).grave accent %<`%> in formatgsplit-dwarf is not supported on this platformhad semantic errors when compilinghardware decimal floating-point instructions not available in ESA/390 modehardware decimal floating-point instructions not available on %shardware vector support not available on %shardware vector support not available with %<-msoft-float%>has different parameters in another translation unithas different return value in another translation unithead insn %d for block %d not found in the insn streamheader module expected, module %qs foundherehidden string length argument passed on stackhigh bound %qE above array section size in %qs clausehigh bound for the array is outside the ztype limitshigh bound for the subrange has overflowedhistogram value statement does not correspond to the statement it is associated withiWMMXt and NEON are incompatibleiWMMXt unsupported under Thumb modeia64_print_operand: unknown codeidentical_array_ref(): inconsistent dimensionsidentifier %qE conflicts with C++ keywordidentifier %qE is a keyword in C++11identifier %qE is a keyword in C++20identifier expected after %<@protocol%>identifier overflow: %dif any %<if%> clause has modifier, then all %<if%> clauses have to use modifierif avoiding the apostrophe is not feasible, enclose it in a pair of %qs and %qs directives insteadif this code is reached, the program will abortif this use is part of a public ABI, change it to instead use a constant variable you defineif using %qs is not feasible, use %qs insteadif you need LP64E please notify the GCC project via %{PR116152%}ignoring %<#pragma %s %s%>ignoring %<#pragma align%> for explicitly aligned %q+Dignoring %<#pragma omp declare simd%> on function with %<_Atomic%> qualified non-%<uniform%> argumentignoring %<#pragma omp declare simd%> on function with %<_Atomic%> qualified return typeignoring %<-fschedule-insns%> because of exception handling bugignoring %<asm%> specifier for non-static local variable %q+Dignoring %<sink%> clause with offset that is not a multiple of the loop stepignoring %qD attribute on anonymous namespaceignoring %qD attribute on non-inline namespaceignoring %qE attribute applied to template instantiation %qTignoring %qE attribute applied to template specialization %qTignoring %qE attribute not set on a variableignoring %qE attribute set on const variableignoring %qE attribute set on initialized variableignoring %qE attribute set on uninitialized variableignoring attribute %<%E (%u)%> because it conflicts with attribute %<%E (%u)%>ignoring attribute %qE after earlier %qEignoring attribute %qE because it conflicts with attribute %<either%>ignoring attribute %qE because it conflicts with attribute %<lower%>ignoring attribute %qE because it conflicts with attribute %<noinit%>ignoring attribute %qE because it conflicts with attribute %<persistent%>ignoring attribute %qE because it conflicts with attribute %<section%>ignoring attribute %qE because it conflicts with attribute %<upper%>ignoring attribute %qE because it conflicts with attribute %qsignoring attribute %qE because of excess arguments starting at %qEignoring attribute %qE in declaration of a built-in function %qD because it conflicts with attribute %qsignoring attribute %qs because it conflicts with previous %qsignoring attributes applied to %qT after definitionignoring attributes applied to class type %qT outside of definitionignoring attributes applied to dependent type %qT without an associated declarationignoring attributes in template argument %qEignoring attributes on template argument %qTignoring duplicate directory "%s"
--- 2116,2122 ----
  errors during merging of translation unitseval_intrinsic(): Bad operatoreval_type_intrinsic0(): op NULLexception '%s'exception cleanup for this placement new selects non-placement %<operator delete%>exception cleanups omit __tsan_func_exit callexception handling disabled, use %<-fexceptions%> to enableexception handling disabled; use %<-fexceptions%> to enableexception handling personality mismatchexception of type %<%T%> will be caughtexception of type %qT will be caught by earlier handlerexception specification of %qD depends on itselfexception specification of %qD is not available until end of class definitionexcess elements in %qT initializerexcess elements in array initializerexcess elements in scalar initializerexcess elements in struct initializerexcess elements in union initializerexcess elements in vector initializerexcess use operand for statementexecution counts assumed to be zero
  execution counts estimated
  existing declaration %#qDexisting declaration here with no tagsexisting declaration here with tags %qEexisting default declared hereexisting definition %qDexit %d->%d not recordedexit block count not initializedexpansion pattern %qE contains no parameter packsexpansion pattern %qT contains no parameter packsexpansion point is location %lluexpected %<"%>expected %<#pragma omp scan%>expected %<#pragma omp section%> or %<}%>expected %<(%>expected %<(%> after template-argument-listexpected %<(%> at %Cexpected %<(%> or end of lineexpected %<)%>expected %<)%> at %Cexpected %<)%> or %<,%>expected %<*%>expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%> or identifierexpected %<,%>expected %<,%> or %<)%>expected %<,%> or %<...%>expected %<,%> or %<;%>expected %<,%> or %<]%>expected %<,%> or %<}%>expected %<,%>, %<;%> or %<}%>expected %<.%>expected %<...%>expected %<:%>expected %<:%> at %Cexpected %<:%> or %<)%>expected %<:%> or %<...%>expected %<:%> or %<::%>expected %<:%>, %<,%>, %<;%>, %<}%> or %<__attribute__%>expected %<::%>expected %<;%>expected %<;%> after class definitionexpected %<;%> after struct definitionexpected %<;%> after union definitionexpected %<;%> at end of member declarationexpected %<;%> or %<{%>expected %<;%> or %<{%> after method attribute definitionexpected %<;%>, %<,%> or %<)%>expected %<;%>, identifier or %<(%>expected %<<%>expected %<=%>expected %<=%> after Objective-C %qEexpected %<=%> at %Cexpected %<=%>, %<,%>, %<;%>, %<asm%> or %<__attribute__%>expected %<==%> comparison in %<if%> conditionexpected %<==%>, %<<%> or %<>%> comparison in %<if%> conditionexpected %<>%>expected %<@end%>expected %<@synchronized%>expected %<@throw%>expected %<@try%>expected %<[%>expected %<]%>expected %<__label__%>expected %<__transaction_atomic%>expected %<__transaction_relaxed%>expected %<acq_rel%>, %<acquire%>, %<relaxed%>, %<release%> or %<seq_cst%>expected %<alloc%>, %<to%>, %<from%>, %<tofrom%>, %<firstprivate%>, %<none%> or %<default%>expected %<allocator%> or %<align%>expected %<ancestor%> or %<device_num%>expected %<asm%>expected %<at%>, %<severity%> or %<message%> clauseexpected %<auto%>expected %<auto%> or %<decltype(auto)%> after %qEexpected %<big-endian%>, %<little-endian%>, or %<default%> after %<#pragma scalar_storage_order%>expected %<cancel%> %<if%> clause modifierexpected %<catch%>expected %<class%>expected %<class%> or %<typename%>expected %<class%>, %<typename%>, or %<template%>expected %<co_yield%>expected %<concurrent%>expected %<data%>expected %<data%> after %<#pragma acc %s%>expected %<data%>, %<update%>, %<enter%> or %<exit%>expected %<declare target%> or %<assumes%>expected %<declare%> or %<assumes%>expected %<decltype%>expected %<delete%>expected %<depend%>, %<destroy%> or %<update%> clauseexpected %<directive%> or %<sequence%>expected %<else%>expected %<error%>, %<warning%>, %<ignored%>, %<push%>, %<pop%>, %<ignored_attributes%> after %<#pragma GCC diagnostic%>expected %<extern%>expected %<finally%> or %<catch%>expected %<for%> after %qsexpected %<for%> loop or OpenMP loop transformation constructexpected %<fr%> or %<attr%> preference selectorexpected %<host%>, %<nohost%> or %<any%>expected %<in%>, %<out%>, %<inout%>, %<mutexinoutset%> or %<inoutset%>expected %<inclusive%> or %<exclusive%> clauseexpected %<interop%>expected %<interop%> at %Cexpected %<match%>, %<adjust_args%> or %<append_args%> at %Cexpected %<match%>, %<adjust_args%> or %<append_args%> clauseexpected %<namespace%>expected %<new%>expected %<none%> or %<present%>expected %<none%>, %<shared%>, %<private%> or %<firstprivate%>expected %<nothing%> or %<need_device_ptr%>expected %<nothing%> or %<need_device_ptr%> followed by %<:%>expected %<nothing%>, %<need_device_ptr%> or %<need_device_addr%> at %Cexpected %<omp_priv%> or function-nameexpected %<operator%>expected %<point%>expected %<prefer_type%>, %<target%>, or %<targetsync%>expected %<read%>, %<write%>, %<update%>, %<capture%>, %<compare%>, %<weak%>, %<fail%>, %<seq_cst%>, %<acq_rel%>, %<release%>, %<relaxed%> or %<hint%> clauseexpected %<read%>, %<write%>, %<update%>, or %<capture%> clauseexpected %<reproducible%> or %<unconstrained%>expected %<return%>expected %<scalar%>, %<aggregate%>, %<all%>expected %<scalar%>, %<aggregate%>, %<pointer%> or %<all%>expected %<seq_cst%>, %<acq_rel%>, %<release%> or %<acquire%>expected %<seq_cst%>, %<acquire%> or %<relaxed%>expected %<simd%>, %<reduction%>, %<target%> or %<variant%>expected %<sizes%>expected %<static_assert%>expected %<target%>expected %<teams%>, %<parallel%> or %<thread%>expected %<template%>expected %<throw%>expected %<try%>expected %<unified_address%>, %<unified_shared_memory%>, %<self_maps%>, %<dynamic_allocators%>, %<reverse_offload%> or %<atomic_default_mem_order%> clauseexpected %<using%>expected %<when%>, %<otherwise%>, or %<default%> at %Cexpected %<when%>, %<otherwise%>, or %<default%> clauseexpected %<while%>expected %<{%>expected %<{%> at %Cexpected %<{%> or %<:%>expected %<}%>expected %<}%> at %Cexpected %<}%> before %<else%>expected %<~%>expected %d levels of template parms for %q#D, got %dexpected %e but argument is of type %eexpected %i or more, found %iexpected %i, found %iexpected %qE selector nameexpected %qT but argument is of type %qTexpected %qT but pointer is of type %qTexpected %qs %<if%> clause modifier rather than %qsexpected %qs keyword before dependent template nameexpected %qs or %qsexpected %s or %s; got %sexpected %s or %s; got bad token: %sexpected %s; got %sexpected %s; got bad token: %sexpected ...expected 64-bit address but argument 1 is %d-bitexpected 64-bit address but argument 2 is %d-bitexpected : at %Cexpected OpenMP directive nameexpected a JSON value but got %sexpected a function nameexpected a string after %<#pragma message%>expected an OpenACC clauseexpected an OpenMP clauseexpected an SSA_NAME objectexpected an argument to %<msp430_select_cpu%>expected an identifier for the attribute nameexpected assumption clauseexpected at least one assumption clauseexpected attribute argument as balanced token sequenceexpected attribute before %<...%>expected between %i and %i, found %iexpected binary operatorexpected block indexexpected block specifierexpected boolean expressionexpected boolean typeexpected call expressionexpected case labelexpected channelexpected class nameexpected class-keyexpected class-nameexpected constant integer expression at %Cexpected constant integer expression with valid sync-hint valueexpected constant logical expressionexpected constant offsetexpected constant offset for %<__MEM%> operandexpected constant sizeexpected constant step for %<__MEM%> operandexpected constructor, destructor, or type conversionexpected context selector set nameexpected context selector set name at %Cexpected contract level: %<default%>, %<audit%>, or %<axiom%>expected contract semantic or levelexpected contract-roleexpected count valueexpected declarationexpected declaration or statementexpected declaration specifiersexpected declaration specifiers or %<...%>expected declaratorexpected directive nameexpected dummy parameter name, %<omp_num_args%> or constant positive integer at %Cexpected else statementexpected empty string after %<operator%> keywordexpected end of capture-listexpected end of lineexpected expressionexpected expression at %Cexpected expression-list or type-idexpected frequency qualityexpected frequency valueexpected functionexpected function nameexpected function-name %<(%>expected goto expressionexpected id-expressionexpected id-expression (arguments)expected identifierexpected identifier at %Cexpected identifier or %<(%>expected identifier or %<)%>expected identifier or %<*%>expected identifier or string literalexpected identifier or string literal at %Cexpected initializerexpected integerexpected integer expressionexpected integer expression listexpected interface or pointer to interfaceexpected iteration declaration or initializationexpected iteration-statementexpected jump-statementexpected labelexpected labeled-statementexpected loop numberexpected map index on right hand sideexpected mode %s for operand %d of insn %s but got mode %s.
! expected module-nameexpected module-partitionexpected name at %Cexpected namespace-nameexpected nested-name-specifierexpected numeric typeexpected operatorexpected parameter pack before %<...%>expected pass nameexpected pointerexpected pointer as argument of unary %<*%>expected pointer in %qs clauseexpected primary-expressionexpected ptr-operatorexpected qualified name in friend declaration for constructor %qDexpected qualified name in friend declaration for destructor %qDexpected selection-statementexpected signature: %qDexpected simd clause at %Cexpected single pointer in %qs clauseexpected specifier-qualifier-listexpected statementexpected string for object key after ','; got %sexpected string for object key after '{'; got %sexpected string literalexpected string literal or constant integer expressionexpected string literal or constant integer expression instead of %qEexpected string-literalexpected string-literal or constexpr in parenthesesexpected struct, slice, array, or map type for composite literalexpected suffix identifierexpected target-function callexpected template-argumentexpected template-idexpected template-id for typeexpected template-nameexpected trait selector nameexpected trait selector name at %Cexpected type specifierexpected type-nameexpected type-specifierexpected unqualified-idexpected variant name at %Cexpecting %E byte in a region of size %Eexpecting %E bytes in a region of size %Eexpecting %E or more bytes in a region of size %Eexpecting argument of type pointer or of type integer for argument 1expecting between %E and %E bytes in a region of size %Eexpecting internal function nameexpecting one and only one label to be declaredexperimental flag to turn on the new strict type checkerexplicit by-copy capture of %<this%> with by-copy capture default only available with %<-std=c++20%> or %<-std=gnu++20%>explicit by-copy capture of %qD redundant with by-copy capture defaultexplicit by-reference capture of %qD redundant with by-reference capture defaultexplicit conversion function was not consideredexplicit conversion operators only available with %<-std=c++11%> or %<-std=gnu++11%>explicit deduction guide declared hereexplicit deduction guides not considered for copy-initializationexplicit goto at end of bb %dexplicit instantiation of %q#Dexplicit instantiation of %q#T before definition of templateexplicit instantiation of %qD but no definition availableexplicit instantiation of %qD in namespace %qD (which does not enclose namespace %qD)explicit instantiation of %qD outside its namespace must use a nested-name-specifierexplicit instantiation of non-class template %qDexplicit instantiation of non-template %q#Dexplicit instantiation of non-template type %qTexplicit instantiation shall not use %<consteval%> specifierexplicit instantiation shall not use %<constexpr%> specifierexplicit instantiation shall not use %<inline%> specifierexplicit instantiations are not permitted hereexplicit object member function %qD cannot have cv-qualifierexplicit object member function %qD cannot have ref-qualifierexplicit object member function only available with %<-std=c++23%> or %<-std=gnu++23%>explicit object member function overrides virtual functionexplicit object parameter declared hereexplicit object parameter is already a mutable referenceexplicit qualification in declaration of %qDexplicit register variable %qs cannot be used in nested functionexplicit register variable %qs declared %<extern%>explicit register variable %qs declared thread localexplicit specialization %q#D may be missing attributesexplicit specialization declared %<concept%>explicit specialization in non-namespace scope %qDexplicit specialization of %qD after first useexplicit specialization of %qD must be introduced by %<template <>%>explicit specialization of %qD outside its namespace must use a nested-name-specifierexplicit specialization of non-template %qTexplicit specializations are not permitted hereexplicit template argument list not allowedexplicit template specialization cannot have a storage classexplicitly defaulted copy assignment operator is implicitly deleted because its declared type does not match the type of an implicit copy assignment operatorexplicitly defaulted copy constructor is implicitly deleted because its declared type does not match the type of an implicit copy constructorexplicitly defaulted function %q+D cannot be declared %qs because the implicit declaration is not %qs:explicitly defaulted move assignment operator is implicitly deleted because its declared type does not match the type of an implicit move assignment operatorexplicitly defaulted move constructor is implicitly deleted because its declared type does not match the type of an implicit move constructorexplicitly used registers must be grouped at top of stackexponent-letter %<q%> in real-literal-constant at %Cexport-declarations are not permitted hereexporting %q#D that does not have external linkageexporting declaration %qD declared in unnamed namespaceexporting declaration %qD with internal linkageexporting namespace %qD with internal linkageexporting unnamed namespaceexpr in !$OMP ATOMIC COMPARE assignment var = expr must be scalar and cannot reference var at %Lexpr in !$OMP ATOMIC WRITE assignment var = expr must be scalar and cannot reference var at %Lexpr in !$OMP ATOMIC assignment var = var op expr must be scalar and cannot reference var at %Lexpression %qE does not designate a %<constexpr%> functionexpression %qE is not a constant expressionexpression %qs requires %<object.TypeInfo%> and cannot be used with %<-fno-rtti%>expression cannot be used as a functionexpression does not compute the number of elements in this array; element type is %qT, not %qTexpression in new-declarator must have integral or enumeration typeexpression in static assertion is not an integerexpression in static assertion is not an integer constant expressionexpression in static assertion is not constantexpression list treated as compound expression in functional castexpression list treated as compound expression in initializerexpression list treated as compound expression in mem-initializerexpression must be enclosed in parenthesesexpression must be integralexpression of abstract class type %qT cannot be used in throw-expressionexpression statement has incomplete typeext-dce disabled: %d basic blocks and %d registers; increase %<--param max-gcse-memory%> above %wuextended initializer lists only available with %<-std=c++11%> or %<-std=gnu++11%>extended registers have no high halvesextern declaration of %q+D follows declaration with no linkageextern model globalvalueextern structured binding is not name-independentextern variable is not name-independentexternal TLS initialization functions not supported on this targetexternal linkage definition of %qD in header module must be declared %<inline%>external linkage required for symbol %q+D because of %qE attributeexternally visible inline cloneextra %<;%> after in-class function definitionextra %<;%> inside a structextra %<;%> inside a struct only allowed in C++11extra %<;%> outside of a functionextra %<;%> outside of a function only allowed in C++11extra brace group at end of initializerextra compile time semantic checking, typically tries to catch poor programming styleextra elements in scalar initializerextra outgoing edge %d->%dextra qualification %<%T::%> on member %qsextra qualification not allowedextra semicolonextra semicolon in method definition specifiedextra semicolon in struct or union specifiedextra type qualifiers in format argument (argument %d)extraneous data at end of filefail to initialize plugin %sfailed %<assume%> attribute assumptionfailed %s mapper %qsfailed %s mapper %qs line %ufailed compiling %sfailed mapper handshake %sfailed to create map component '%s'failed to create union component '%s'failed to expand built-in functionfailed to get exit status: %mfailed to get process times: %mfailed to initialize plugin %sfailed to load binding %<%E%s%E%>failed to load binding %<%E%s%E@%s%>failed to load pendings for %<%E%s%E%>failed to open temporary file %s for LTO outputfailed to open temporary file %s with LTO outputfailed to read compiled module cluster %u: %sfailed to read compiled module: %sfailed to reclaim unneeded functionfailed to reclaim unneeded function in same comdat groupfailed to split %qD for %<strub%>failed to split insnfailed to translate literal to execution character set %qTfailed to write compiled module: %sfailure memory model %qs cannot be stronger than success memory model %qs for %qDfailure memory model %wi cannot be stronger than success memory model %wi for %qDfailure to simplify substring reference in DATA statement at %Lfailure trying to reload:fallthru edge after a control statement in bb %dfallthru edge after unconditional jump in bb %ifallthru edge crosses section boundary in bb %ifallthru to exit from bb %dfast enumeration is not available in Objective-C 1.0fastcall and cdecl attributes are not compatiblefastcall and regparm attributes are not compatiblefastcall and stdcall attributes are not compatiblefastcall and thiscall attributes are not compatiblefatal error: fclose %s: %mfe_runtime_error string must be null terminatedfe_runtime_error: Wrong number of arguments (%d instead of %d)field %q#D can be accessed via %q#Dfield %q#D with same name as classfield %qD has incomplete type %qTfield %qE declared as a functionfield %qE has incomplete typefield name not in record or union initializerfield number exceeds definition of setfield number out of range trying to access set elementfield precision specifierfield widthfield width in printf formatfield width in scanf formatfield width in strfmon formatfield width in strftime formatfield width specifierfields cannot have RVV type %qTfields cannot have SVE type %qTfields have different layout in another translation unitfile %qs left but not enteredfile ends in default argumentfile-scope compound literal specifies %<register%>file-scope declaration of %qE specifies %<auto%>file-scope declaration of %qE specifies %<register%>filename %qs does not start with profile prefix %qsfill characterfill character in strfmon formatfilter the language dump using a comma separated list of procedures and modulesfind_array_spec(): unused as(1)find_array_spec(): unused as(2)find_enum(): Enum not foundfini function found in object %sfirst %<sizeof%> operand was declared herefirst argument must be []bytefirst argument of %q+D should be %<int%>first argument of %qD must be a pointer, second integer constantfirst argument to %<__builtin_call_with_static_chain%> must be a call expressionfirst argument to %<__builtin_choose_expr%> not a constantfirst argument to %<va_arg%> not of type %<va_list%>first argument to %qD must be a string literalfirst argument type %qT of a pointer to member must be a class type or a pointer to a class typefirst error appeared herefirst error in %qD appeared herefirst expression has type %qTfirst mismatch is fieldfirst offset must be in opposite direction of loop iterationsfirst register must be R0first seen herefirst specified herefixed ebp register requires %<-maccumulate-outgoing-args%>fixed ebp register requires %<target("accumulate-outgoing-args")%>fixed register %s used to pass parameter to functionfixed tree mismatchfixed-point overflow in expression %qE of type %qT results in %qEfixed-point overflow in expression of type %qT results in %qEfixed-point types not supported for this targetfixed-point types not supported in C++flexible array member %qD does not have well defined padding bits for %qsflexible array member %qD in an otherwise empty %q#T is a GCC extensionflexible array member %qD in unionflexible array member %qD not at end of %q#Tflexible array member in a struct with no named members is a GCC extensionflexible array member in union is a GCC extensionflexible array member not at end of structfloating constant exceeds range of %qTfloating constant misusedfloating constant truncated to zerofloating literal exceeds range of %qT typefloating literal truncated to zerofloating point overflow in expression %qE of type %qT results in %qEfloating point overflow in expression of type %qT results in %qEfloating-point constant not a valid immediate operandfloating-point suffix %qs shadowed by implementationfloating-point unit %qs differs from PRID preset %qsflow control insn inside a basic blockfmax-include-depth=<number> Set the maximum depth of the nested #include.fold check: original tree changed by foldfold of empty expansion over %Ofold-expressions only available with %<-std=c++17%> or %<-std=gnu++17%>fold-mem-offsets: %d basic blocks and %d edges/basic blockfopen %s: %mfor %qDfor a function-style cast, remove the redundant %<::%D%>for array function parameter length expression must be specifiedfor backward compatibilityfor deduction to %<std::initializer_list%>, use copy-list-initialization (i.e. add %<=%> before the %<{%>)for increment expression cannot resolve address of overloaded functionfor increment expression has no effectfor increment expression is a reference, not call, to function %qEfor pointer type length expression must be specifiedfor statement expectedfor template declaration %q+Dfor the option %<-mcache-block-size=X%>, the valid X must be: 4, 8, 16, 32, 64, 128, 256, or 512for type %qTfor unknown bound array type length expression must be specifiedfor, while or do statement expectedforce positive result from MOD and DIV result floorformatformat argument %d unused before used argument %d in %<$%>-style formatformat argument %d used more than once in %s formatformat argument should be a %qs referenceformat argument should be a %qs reference but a string was foundformat is a wide character stringformat not a string literal and no format argumentsformat not a string literal, argument types not checkedformat not a string literal, format string not checkedformat of column headings in %<devices.csv%> is incorrectformat string argument follows the arguments to be formattedformat string argument is not a string typeformat string is defined hereformat string is not an array of type %qsforming pointer to qualified function type %qTforming pointer to reference type %qTforming reference to qualified function type %qTforming reference to reference type %qTforming reference to voidforming type of %qsforward declaration of %q#Tforward reference to frame of %qsfound %<%c%s%>found %<-%E%> instead of %<+%E%> in protocol(s)found %<:%> in nested-name-specifier, expected %<::%>found a %qT but the format argument should be a stringfound a %qs reference but the format argument should be a stringfound a default name with a non-empty defining statementfound a real definition for a non-registerfound a virtual definition for a GIMPLE registerfound an SSA_NAME that had been released into the free poolfound default case not at the start of case vectorfp software completion requires %<-mtrap-precision=i%>fr30_print_operand: invalid %%F codefr30_print_operand: invalid %%x codefr30_print_operand: invalid operand to %%A codefr30_print_operand: unhandled MEMfr30_print_operand: unknown codefr30_print_operand: unrecognized %%B codefr30_print_operand: unrecognized %%b codefr30_print_operand: unrecognized %%p codefr30_print_operand_address: unhandled addressframe pointer required, but reservedframe size of %qs is %wd bytesframe size of function %qs is %wd bytes exceeding user provided stack limit of %d bytes; an unconditional trap is addedframe size of function %qs is %wd bytes which is more than half the stack size; the dynamic check would not be reliable; no check emitted for this functionframe size too large for reliable stack checkingfree_expr0(): Bad expr typefree_pi_tree(): Unresolved fixupfriend declaration %q#D declares a non-template functionfriend declaration %qD in local class without prior local declarationfriend declaration %qD is not visible to explicit specializationfriend declaration %qD may not have virt-specifiersfriend declaration does not name a class or functionfriend declaration herefriend declaration not in class definitionfriend declaration of %q#D specifies default arguments and isn%'t the only declarationfriend declaration of %qD specifies default arguments and isn%'t a definitionfriend declaration requires class-key, i.e. %<friend %#T%>friend declaration requires class-key, i.e. %<friend class %T::%D%>friend function definition %qs cannot have a name qualified with %<%D::%>friend function definition %qs cannot have a name qualified with %<::%>friend function template with constraints that depend on outer template parameters must be a definitionfrom definition of %q#Dfrom previous declaration %qFfrontend does not support sibling callfrv_print_operand: unknown codefunc can only be compared to nilfunction %<main%> must have no arguments when using the %<-minrt%> optionfunction %<main%> must never return when using the %<-minrt%> optionfunction %q#D is initialized like a variablefunction %q+D definition is marked dllimportfunction %q+D part of alias cyclefunction %q+F can never be copied because it has %<noclone%> attributefunction %q+F can never be copied because it receives a non-local gotofunction %q+F can never be copied because it saves address of local label in a static variablefunction %q+F can never be inlined because it contains a computed gotofunction %q+F can never be inlined because it has a VLA argumentfunction %q+F can never be inlined because it is suppressed using %<-fno-inline%>function %q+F can never be inlined because it uses %<__builtin_return%> or %<__builtin_apply_args%>function %q+F can never be inlined because it uses alloca (override using the always_inline attribute)function %q+F can never be inlined because it uses attributes conflicting with inliningfunction %q+F can never be inlined because it uses non-local gotofunction %q+F can never be inlined because it uses setjmpfunction %q+F can never be inlined because it uses setjmp-longjmp exception handlingfunction %q+F can never be inlined because it uses variable argument listsfunction %qD declared %<[[noreturn]]%> but its first declaration was notfunction %qD declared %<virtual%> inside a unionfunction %qD is initialized like a variablefunction %qD might be a candidate for %qs format attributefunction %qD redeclared as variablefunction %qD used as %<asm%> outputfunction %qs cannot be declared %<mutable%>function %qs has been referenced in offloaded code but hasn%'t been marked to be included in the offloaded codefunction %qs, parameter %u, has IPA-SRA accesses which overlapfunction %qs, parameter %u, is used but does not have any certain IPA-SRA accessfunction arguments of %<__builtin_tgmath%> all have the same typefunction arguments of %<__builtin_tgmath%> lack type-generic parameterfunction attribute %qs requires the V ISA extensionfunction attributes %qs and %qs are mutually exclusivefunction body can be overwritten at link timefunction body not availablefunction call has aggregate valuefunction called through a non-compatible typefunction concepts are no longer supportedfunction declaration isn%'t a prototypefunction declared %<noreturn%> has a %<co_return%> statementfunction declared %<noreturn%> has a %<return%> statementfunction definition declared %<auto%>function definition declared %<register%>function definition declared %<typedef%>function definition declared %qsfunction definition does not declare parametersfunction definition has qualified void return typefunction does not return a value to testfunction does not return string typefunction has external linkage when the user requests only inlining static for live patchingfunction may return address of local variablefunction might be candidate for attribute %qsfunction might be candidate for attribute %qs if it is known to return normallyfunction name as the left hand operand of %<<%> is ill-formed in C++20; wrap the function name in %<()%>function not considered for inliningfunction not declared inline and code size would growfunction not inlinablefunction not inline candidatefunction or array type %qT in %<#pragma omp declare reduction%>function or array type in %<#pragma omp declare reduction%>function parameterfunction parameter %qD may not appear as list item in an %<allocate%> directivefunction pointers not supported with %<-mabi=ti%> optionfunction previously declared %<static%> redeclared %<extern%>function requires a dual-context, which is not yet supported by GDCfunction result count mismatchfunction return type cannot be functionfunction return types not compatible due to %<volatile%>function returning a functionfunction returning an arrayfunction returns address of labelfunction returns address of local variablefunction returns an aggregatefunction starts on a higher line number than it endsfunction symbol is not functionfunction template %qD redeclared as a class templatefunction template-id %qD in nested-name-specifierfunction types not truly compatible in ISO Cfunction versions cannot be marked as %<gnu_inline%>, bodies have to be generatedfunction with contracts %q+D overriding contractless functionfunction with qualified void return type calledfunction-scope %qE implicitly auto and declared %qsfunction-scope %qs implicitly auto and declared %<__thread%>function-try-block body of %<constexpr%> constructor only available with %<-std=c++20%> or %<-std=gnu++20%>function-try-block body of %<constexpr%> function only available with %<-std=c++20%> or %<-std=gnu++20%>functional cast to array type %qTfunctions with %qs state require the ISA extension %qsfunctions with SME state require the ISA extension %qsgang reduction on an orphan loopgarbage at end of %<#pragma nomember_alignment%>gcc driver version %s %sexecuting gcc version %s
  gcc version %s %s
  gcov %s%s
  generate a C source scaffold for the current module being compiledgenerate a C++ source scaffold for the current module being compiledgenerate a shared library from the modulegenerate error messages which render keywords in lower casegenerate extra nops to improve debugging, producing an instruction for every code related keywordgenerate static scaffold initialization and finalization for every module inside maingenerate the main functiongenerate_isocbinding_initializer(): bad iso_c_binding type, expected %<c_ptr%> or %<c_funptr%>generated loop of %<unroll%> construct without %<partial%> clause does not have canonical formgeneric thunk code fails for method %qD which uses %<...%>get_mpz(): Not an integer constantgetting core file size maximum limit: %mgfc_add_interface(): Bad interface typegfc_arith_divide(): Bad basic typegfc_arith_error(): Bad error codegfc_arith_minus(): Bad basic typegfc_arith_plus(): Bad basic typegfc_arith_times(): Bad basic typegfc_arith_uminus(): Bad basic typegfc_array_dimen_size(): Bad EXPR_ARRAY exprgfc_array_dimen_size(): Bad dimensiongfc_ascii_statement(): Bad statement codegfc_basic_typename(): Undefined typegfc_caf_attr(): Bad array referencegfc_caf_attr(): Expression isn't a variablegfc_check_dependency: expecting an EXPR_VARIABLEgfc_check_digit(): bad radixgfc_code2string(): Bad codegfc_compare_derived_types: invalid derived typegfc_compare_expr(): Bad basic typegfc_copy_expr(): Bad expr nodegfc_expression_rank(): Two array specsgfc_find_array_ref(): No ref foundgfc_free_statement(): Bad statementgfc_get_constant_expr(): locus %<where%> cannot be NULLgfc_get_default_type(): Bad symbol %qsgfc_is_constant_expr(): Unknown expression typegfc_match(): Bad match code %cgfc_match_sym_complex_part(): Bad typegfc_op2string(): Bad codegfc_range_check() returned bad valuegfc_range_check(): Bad typegfc_ref_dimen_size(): Bad dimen_typegfc_ref_dimen_size(): Bad dimensiongfc_resolve_blocks(): Bad block typegfc_resolve_code(): Bad statement codegfc_resolve_code(): No expression on DO WHILEgfc_resolve_expr(): Bad expression typegfc_set_default_type(): symbol already has a typegfc_simplify_abs(): Bad typegfc_simplify_dcmplx(): Bad type (x)gfc_simplify_dcmplx(): Bad type (y)gfc_simplify_dim(): Bad typegfc_simplify_floor(): Bad kindgfc_simplify_log: bad typegfc_simplify_mod(): Bad argumentsgfc_simplify_modulo(): Bad argumentsgfc_trans_code(): Bad statement codegfc_trans_omp_workshare(): Bad statement codegfc_trans_select(): Bad type for case expr.gfc_typename(): Undefined typegfc_validate_kind(): Got bad kindgfc_validate_kind(): Got bad typegfc_variable_attr(): Expression isn't a variablegfortran does not support -E without -cppgfortran: Only one %<-J%> option allowedgimple call has no targetgimple call has two targetsgimple check: expected %s(%s), have %s(%s) in %s, at %s:%dgimple_bb (phi) is set to a wrong basic blockgimple_bb (stmt) is set to a wrong basic blockgimplification failedglobal constructors not supported on this targetglobal destructors not supported on this targetglobal module fragment contents must be from preprocessor inclusionglobal qualification of class name is invalidglobal register variable %qD used in nested functionglobal register variable follows a function definitionglobal register variable has initial valueglobal/static variable assignment has been interceptedgot %d template parameters for %q#Dgot %d template parameters for %q#Tgoto destination is neither a label nor a pointergp is constant (but save/restore gp on indirect calls).grave accent %<`%> in formatgsplit-dwarf is not supported on this platformhad semantic errors when compilinghardware decimal floating-point instructions not available in ESA/390 modehardware decimal floating-point instructions not available on %shardware vector support not available on %shardware vector support not available with %<-msoft-float%>has different parameters in another translation unithas different return value in another translation unithead insn %d for block %d not found in the insn streamheader module expected, module %qs foundherehidden string length argument passed on stackhigh bound %qE above array section size in %qs clausehigh bound for the array is outside the ztype limitshigh bound for the subrange has overflowedhistogram value statement does not correspond to the statement it is associated withiWMMXt and NEON are incompatibleiWMMXt unsupported under Thumb modeia64_print_operand: unknown codeidentical_array_ref(): inconsistent dimensionsidentifier %qE conflicts with C++ keywordidentifier %qE is a keyword in C++11identifier %qE is a keyword in C++20identifier expected after %<@protocol%>identifier overflow: %dif any %<if%> clause has modifier, then all %<if%> clauses have to use modifierif avoiding the apostrophe is not feasible, enclose it in a pair of %qs and %qs directives insteadif this code is reached, the program will abortif this use is part of a public ABI, change it to instead use a constant variable you defineif using %qs is not feasible, use %qs insteadif you need LP64E please notify the GCC project via %{PR116152%}ignoring %<#pragma %s %s%>ignoring %<#pragma align%> for explicitly aligned %q+Dignoring %<#pragma omp declare simd%> on function with %<_Atomic%> qualified non-%<uniform%> argumentignoring %<#pragma omp declare simd%> on function with %<_Atomic%> qualified return typeignoring %<-fschedule-insns%> because of exception handling bugignoring %<asm%> specifier for non-static local variable %q+Dignoring %<sink%> clause with offset that is not a multiple of the loop stepignoring %qD attribute on anonymous namespaceignoring %qD attribute on non-inline namespaceignoring %qE attribute applied to template instantiation %qTignoring %qE attribute applied to template specialization %qTignoring %qE attribute not set on a variableignoring %qE attribute set on const variableignoring %qE attribute set on initialized variableignoring %qE attribute set on uninitialized variableignoring attribute %<%E (%u)%> because it conflicts with attribute %<%E (%u)%>ignoring attribute %qE after earlier %qEignoring attribute %qE because it conflicts with attribute %<either%>ignoring attribute %qE because it conflicts with attribute %<lower%>ignoring attribute %qE because it conflicts with attribute %<noinit%>ignoring attribute %qE because it conflicts with attribute %<persistent%>ignoring attribute %qE because it conflicts with attribute %<section%>ignoring attribute %qE because it conflicts with attribute %<upper%>ignoring attribute %qE because it conflicts with attribute %qsignoring attribute %qE because of excess arguments starting at %qEignoring attribute %qE in declaration of a built-in function %qD because it conflicts with attribute %qsignoring attribute %qs because it conflicts with previous %qsignoring attributes applied to %qT after definitionignoring attributes applied to class type %qT outside of definitionignoring attributes applied to dependent type %qT without an associated declarationignoring attributes in template argument %qEignoring attributes on template argument %qTignoring duplicate directory "%s"
*************** warranty; not even for MERCHANTABILITY o
*** 2143,2156 ****
  invalid argument given to %<-mharden-sls=%>invalid argument in option %qsinvalid argument of %qE attributeinvalid argument of %qs attributeinvalid argument of SQRT at %Linvalid argument to %qDinvalid argument to built-in functioninvalid argument to built-in function %sinvalid argument to gimple callinvalid argumentsinvalid arguments for %<-falign-%s%> option: %qsinvalid arguments for %<-fpatchable-function-entry%>invalid array assignmentinvalid base %qE for SSA nameinvalid base-class specificationinvalid block indexinvalid branch to/from %s structured blockinvalid built-in function at expansioninvalid call to non-functioninvalid calls_comdat_local flaginvalid case label in switch statementinvalid case range in switch statementinvalid cast from type %qT to type %qTinvalid cast of a prvalue expression of type %qT to type %qTinvalid cast to abstract class type %qTinvalid cast to function type %qTinvalid cc output constraint: %qsinvalid class name in declaration of %qDinvalid clique in %qsinvalid combination of multiple type-specifiersinvalid comparison code in gimple condinvalid comparison of generated arrayinvalid comparison of generated structinvalid comparison of nil with nilinvalid comparison of non-comparable arrayinvalid comparison of non-comparable structinvalid comparison of non-comparable typeinvalid comparison of non-ordered typeinvalid comparison operator for 'E' output modifierinvalid const_double operandinvalid constantinvalid constant - try using an output modifierinvalid constant for output modifier '%c'invalid constant in %<#pragma %s%>invalid constant in %<#pragma pack%> - ignoredinvalid constant vector for output modifier '%c'invalid constrained type parameterinvalid constraintsinvalid constraints for operandinvalid constructor; you probably meant %<%T (const %T&)%>invalid control register %d for mvtc; using %<psw%>invalid controlling predicateinvalid conversion from %<__fpreg%>invalid conversion from %qH to %qIinvalid conversion from type %<_Float16%> without option %<-msse2%>invalid conversion from type %<__bf16%> without option %<-msse2%>invalid conversion from type %<__vector_pair%>invalid conversion from type %<__vector_quad%>invalid conversion from type %<bfloat16_t%>invalid conversion from type %<mfloat8_t%>invalid conversion in gimple callinvalid conversion in return statementinvalid conversion to %<__fpreg%>invalid conversion to type %<_Float16%> without option %<-msse2%>invalid conversion to type %<__bf16%> without option %<-msse2%>invalid conversion to type %<__vector_pair%>invalid conversion to type %<__vector_quad%>invalid conversion to type %<bfloat16_t%>invalid conversion to type %<mfloat8_t%>invalid conversion to type %qT from type %qTinvalid covariant return type for %q#Dinvalid covariant return type for %q+#Dinvalid cpu %qs for %s%qs%sinvalid declaration of %<%T::%E%>invalid declaration of member template in local classinvalid declaratorinvalid default argument for a template template parameterinvalid default case label in switch statementinvalid definition of qualified type %qTinvalid depend kindinvalid depend kind in omp %<ordered%> %<depend%>invalid dist_schedule kindinvalid doacross kindinvalid element index %qE to %<__builtin_shufflevector%>invalid element type for attribute %qsinvalid embedcfg: Files entry is not a stringinvalid embedcfg: Files is not a JSON objectinvalid embedcfg: Patterns entry is not an arrayinvalid embedcfg: Patterns is not a JSON objectinvalid embedcfg: duplicate Patterns entryinvalid embedcfg: missing Filesinvalid embedcfg: missing Patternsinvalid embedcfg: not a JSON objectinvalid encoding prefix in literal operatorinvalid entry to %s structured blockinvalid exit from %s structured blockinvalid exit from OpenMP structured blockinvalid explicit specializationinvalid expression - try using an output modifierinvalid expression as operandinvalid expression for min lvalueinvalid expression for output modifier '%c'invalid expression for static array dimension: %sinvalid expression type for %<#pragma omp atomic%>invalid failure memory model %qs for %qDinvalid feature modifier %qs in %<-march=%s%>invalid feature modifier %qs in %<-mcpu=%s%>invalid feature modifier %qs of value %qs in %<target()%> pragma or attributeinvalid feature modifier %qs of value %qs in %<target_version%> attributeinvalid feature modifier %s of value %qs in %<target()%> pragma or attributeinvalid fn spec attribute "%s"invalid fn spec attribute "%s" arg %iinvalid fnsummary in LTO streaminvalid form of %<#pragma omp atomic compare%>invalid form of %<#pragma omp atomic%>invalid form of %<pragma omp atomic compare%>invalid format for %<sve_width%>invalid format of %sinvalid forth argument to %<__builtin_ia32_prefetch%>; using zeroinvalid fp constantinvalid fpu for target attribute or pragma %qsinvalid function in gimple callinvalid hard register usage between earlyclobber operand and input operandinvalid hard register usage between output operand and matching constraint operandinvalid hard register usage between output operandsinvalid header name %qsinvalid hex digitinvalid id value for exception attributeinvalid id value for interrupt attributeinvalid id value for interrupt/exception attributeinvalid id value for reset attributeinvalid in-class initialization of static data member of non-integral type %qTinvalid increment expressioninvalid initial value for member %qEinvalid initialization of non-const reference of type %qH from an rvalue of type %qIinvalid initialization of reference of type %qH from expression of type %qIinvalid initializerinvalid initializer clauseinvalid initializer for %q#Dinvalid initializer for array member %q#Dinvalid initializer for member function %qDinvalid initializer for structured binding declarationinvalid insn:invalid iterating variable in fast enumerationinvalid jump function in LTO streaminvalid labels in gimple condinvalid left hand side of assignmentinvalid line in the resolution fileinvalid linkage-specificationinvalid location for %<pragma %s%>, ignoredinvalid lvalue in %<asm%> output %dinvalid map kindinvalid maskinvalid mask type in %qsinvalid member template declaration %qDinvalid memory model %qs for %qDinvalid memory model %wi for %qDinvalid memory model argument %d of %qEinvalid module name %qsinvalid name %qs in %<target("arch=")%> pragma or attributeinvalid name %qs in %<target("cpu=")%> pragma or attributeinvalid name %qs in %<target("tune=")%> pragma or attributeinvalid new-expression of abstract class type %qTinvalid nmi function for reset attributeinvalid non-type template argumentinvalid non-vector operands to %qsinvalid number in %<-mrgf-banked-regs=%s%> valid values are 0, 4, 8, 16, or 32invalid number of arguments for %<-falign-%s%> option: %qsinvalid number of operands for insn %s, expected %d but got %d.
  invalid offload table in %sinvalid offset operand in %qsinvalid operandinvalid operand %%xn codeinvalid operand addressinvalid operand code '%c'invalid operand for %%N codeinvalid operand for %%N or %%S codeinvalid operand for %%s codeinvalid operand for '%%%c'invalid operand for 'A' modifierinvalid operand for 'D' modifierinvalid operand for 'H' modifierinvalid operand for 'O' modifierinvalid operand for 'T' modifierinvalid operand for 'b' modifierinvalid operand for 'e' modifierinvalid operand for 'm' modifierinvalid operand for 'o' modifierinvalid operand for 'p' modifierinvalid operand for 'z' modifierinvalid operand for code '%c'invalid operand in %qsinvalid operand in return statementinvalid operand in unary operationinvalid operand modifier letterinvalid operand output codeinvalid operand prefixinvalid operand prefix '%%%c'invalid operand size for operand code '%c'invalid operand size for operand code 'O'invalid operand size for operand code 'z'invalid operand to %%H/%%L codeinvalid operand to %%M codeinvalid operand to %%N codeinvalid operand to %%O codeinvalid operand to %%Rinvalid operand to %%R codeinvalid operand to %%Sinvalid operand to %%T/%%B codeinvalid operand to %%U codeinvalid operand to %%V codeinvalid operand to %%Z codeinvalid operand to %%p codeinvalid operand to %%s codeinvalid operand to %%z codeinvalid operand to switch statementinvalid operand type %qT for %qsinvalid operand type used with operand code '%c'invalid operands in binary operationinvalid operands in gimple comparisoninvalid operands in ternary operationinvalid operands of types %qT and %qT to binary %qOinvalid operands to %%c codeinvalid operands to %qsinvalid operands to binary %s (have %e and %e)invalid operationinvalid operation (%s)invalid operation on %<__fpreg%>invalid operator for %<#pragma omp atomic%>invalid order in asm node %iinvalid parameter combination for AltiVec intrinsic %qsinvalid parameter combination for intrinsic %qsinvalid parameter type %qTinvalid pass positioning operationinvalid pointer mode %qsinvalid pointer to bit-field %qDinvalid position or size in %qsinvalid position or size operand to %qsinvalid private reduction on %qEinvalid proc_bind kindinvalid prototype for '%s'invalid punctuation %qc in constraintinvalid pure const state for functioninvalid pure specifier (only %<= 0%> is allowed)invalid qualifiers for %<constexpr%> objectinvalid qualifiers for field of %<constexpr%> objectinvalid qualifiers on non-member function typeinvalid qualifying scope in pseudo-destructor nameinvalid receive on send-only channelinvalid receiver type %qsinvalid reduction-identifierinvalid reference for 'J' output modifierinvalid register name for %q+Dinvalid register number for 'N' modifierinvalid regular expression %qs in %qsinvalid relocationinvalid resolution in the resolution fileinvalid return type %qT of %<constexpr%> function %q+Dinvalid rtl sharing found in the insninvalid schedule kindinvalid second argument to %<__builtin_ia32_prefetch%>; using zeroinvalid second argument to %<__builtin_prefetch%>; using zeroinvalid send on receive-only channelinvalid setter, it must have one argumentinvalid shift operandinvalid slice of mapinvalid source block specificationinvalid static chain in gimple callinvalid storage class for function %qEinvalid system register name %qsinvalid system register name providedinvalid target memregs value %<%d%>invalid template declaration of %qDinvalid template non-type parameterinvalid template-argument-listinvalid template-idinvalid third argumentinvalid third argument to %<__builtin_ia32_prefetch%>; using zeroinvalid third argument to %<__builtin_prefetch%>; using zeroinvalid type %<void%> for %<new%>invalid type %qT as initializer for a vector of type %qTinvalid type %qT declared %<friend%>invalid type argument (have %qT)invalid type argument of %<->%> (have %qT)invalid type argument of %<->*%> (have %qT)invalid type argument of array indexing (have %qT)invalid type argument of implicit conversion (have %qT)invalid type argument of unary %<*%> (have %qT)invalid type for %<asm%> flag outputinvalid type for _Literal with constructorinvalid type for cc output constraintinvalid type for instance variableinvalid type for iteration variable %qEinvalid type for make functioninvalid type for parameter %d of %<constexpr%> function %q+#Dinvalid type for propertyinvalid type of %<__MEM%> operandinvalid type of argument %u of type-generic functioninvalid type-generic return type for argument %u of %<__builtin_tgmath%>invalid type-generic type for argument %u of argument %u of %<__builtin_tgmath%>invalid types %<%T[%T]%> for array subscriptinvalid types for %qsinvalid types in address space conversioninvalid types in conversion to floating-pointinvalid types in conversion to integerinvalid types in fixed-point conversioninvalid types in nop conversioninvalid use of %%d, %%x, or %%Xinvalid use of %<::%>invalid use of %<__builtin_va_arg_pack ()%>invalid use of %<__builtin_va_arg_pack_len ()%>invalid use of %<auto%> in conversion operatorinvalid use of %<auto%> in default template argumentinvalid use of %<auto%> in exception-specificationinvalid use of %<auto%> in template argumentinvalid use of %<const_cast%> with type %qT, which is a pointer or reference to a function typeinvalid use of %<const_cast%> with type %qT, which is not a pointer, reference, nor a pointer-to-data-member typeinvalid use of %<decltype(auto)%>invalid use of %<extern%> variable %qD in %<#pragma acc declare%>invalid use of %<global%> variable %qD in %<#pragma acc declare%>invalid use of %<restrict%>invalid use of %<this%> after it is validinvalid use of %<this%> at top levelinvalid use of %<this%> before it is validinvalid use of %<this%> in non-member functioninvalid use of %q#T with a flexible array member in %q#Tinvalid use of %q#T with a zero-size array in %q#Dinvalid use of %qDinvalid use of %qD in linkage specificationinvalid use of %qE to form a pointer-to-member-functioninvalid use of %qTinvalid use of '%%%c'invalid use of MMA operand of type %qs as a function parameterinvalid use of MMA type %qs as a function return valueinvalid use of a pointer to an incomplete type in pointer arithmeticinvalid use of array indexing on pointer to memberinvalid use of array with unspecified boundsinvalid use of asm flag outputinvalid use of attribute %<fallthrough%>invalid use of attributes in empty declarationinvalid use of brace-enclosed initializer listinvalid use of concept-name %qDinvalid use of constrained %<auto%> typeinvalid use of constructor as a templateinvalid use of contract role for explicit semanticinvalid use of cv-qualified type %qT in parameter declarationinvalid use of dependent type %qTinvalid use of destructor %qD as a typeinvalid use of destructor %qE as a typeinvalid use of flexible array memberinvalid use of implicit conversion on pointer to memberinvalid use of incomplete type %q#Tinvalid use of incomplete typedef %qTinvalid use of member %qD (did you forget the %<&%> ?)invalid use of member %qD in constructor %<pre%> contractinvalid use of member %qD in destructor %<post%> contractinvalid use of member %qD in static member functioninvalid use of member function %qD (did you forget the %<()%> ?)invalid use of method value as argument of Offsetofinvalid use of non-lvalue arrayinvalid use of non-static data member %qDinvalid use of non-static data member %qEinvalid use of non-static member function %qDinvalid use of non-static member function of type %qTinvalid use of pack expansion %qTinvalid use of pack expansion expressioninvalid use of placeholder %qTinvalid use of pointers to arrays with different qualifiers in ISO C before C23invalid use of qualified-name %<%D::%D%>invalid use of qualified-name %<%T::%D%>invalid use of qualified-name %<::%D%>invalid use of register '%s'invalid use of structure with flexible array memberinvalid use of template template parameter %qTinvalid use of template type parameter %qTinvalid use of template-id %qD in declaration of primary templateinvalid use of template-name %qE without an argument listinvalid use of typeinvalid use of type %<void%> in parameter declarationinvalid use of type %qT as a default value for a template template-parameterinvalid use of unary %<*%> on pointer to memberinvalid use of undefined type %qTinvalid use of void expressioninvalid use of volatile lvalue inside %<transaction_safe%> functioninvalid use of volatile lvalue inside transactioninvalid user-defined conversion from %qH to %qIinvalid value-initialization of reference typeinvalid vector comparison resulting typeinvalid vector constantinvalid vector immediateinvalid vector operandinvalid vector type for attribute %qEinvalid vector types in nop conversioninvalid version number %qsinvalid warm function for reset attributeinvalid zero extractio_kind_name(): bad I/O-kindipa inline summary is missing in input fileipa reference summary is missing in ltrans unitis hidden by %qsis_c_interoperable(): gfc_simplify_expr failedit is defined as a pointer in different address space in another translation unitit is defined as a pointer to different type in another translation unitit must be a pointer-to-member of the form %<&X::Y%>it must be the address of a function with external linkageit must be the name of a function with external linkageit was later defined hereitem in READiterating variable in fast enumeration is not an objectiteration %s invokes undefined behavioriteration variable %qD should not be firstprivateiteration variable %qD should not be reductioniteration variable %qE is predetermined lineariteration variable %qE should be privateiteration variable %qE should not be firstprivateiteration variable %qE should not be lineariteration variable %qE should not be reductioniterator %qD has %<_Atomic%> qualified typeiterator %qD has const qualified typeiterator %qD has neither integral nor pointer typeiterator %qD has zero stepiterator step with non-integral typeiterator variableits dest_idx should be %d, not %dits value can vary between compiler versions or with different %<-mtune%> or %<-mcpu%> flagsivar %qs used by %<@synthesize%> declaration must be an existing ivariwmmxt abi requires an iwmmxt capable cpuiwmmxt requires an AAPCS compatible ABI for proper operationjump into scope of identifier with variably modified typejump into statement expressionjump skips OpenMP %<allocate%> allocationjump skips variable initializationjump to case labeljump to label %qDjunk at end of %<#pragma %s%>junk at end of %<#pragma ADDRESS%>junk at end of %<#pragma CTABLE_ENTRY%>junk at end of %<#pragma GCC memregs%> [0-16]junk at end of %<#pragma GCC pop_options%>junk at end of %<#pragma GCC push_options%>junk at end of %<#pragma GCC visibility%>junk at end of %<#pragma __nostandard%>junk at end of %<#pragma __standard%>junk at end of %<#pragma align%>junk at end of %<#pragma fini%>junk at end of %<#pragma init%>junk at end of %<#pragma longcall%>junk at end of %<#pragma message%>junk at end of %<#pragma ms_struct%>junk at end of %<#pragma options%>junk at end of %<#pragma pack%>junk at end of %<#pragma redefine_extname%>junk at end of %<#pragma reset_options%>junk at end of %<#pragma unused%>junk at end of %<#pragma weak%>junk at end of %<#pragma%> ghs endsdajunk at end of %<#pragma%> ghs endtdajunk at end of %<#pragma%> ghs endzdajunk at end of %<#pragma%> ghs interruptjunk at end of %<#pragma%> ghs sectionjunk at end of %<#pragma%> ghs startsdajunk at end of %<#pragma%> ghs starttdajunk at end of %<#pragma%> ghs startzdajunk at end of '#pragma extern_model'keyword %<export%> is deprecated, and is ignoredkeyword %<export%> is enabled with %<-fmodules%>keyword %<export%> not implemented, and will be ignoredkeyword %<template%> not allowed in class-head-namekeyword %<template%> not allowed in declarator-idkeyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)keyword %<typename%> not allowed in this context (the base class is implicitly a type)keyword %<typename%> not allowed outside of templateslabel %q+D declared but not definedlabel %q+D defined but not usedlabel %q+D used but not definedlabel %qD defined herelabel %qD has incorrect context in bb %dlabel %qD in the middle of basic block %dlabel %qD to block does not match in bb %dlabel %qE referenced outside of any functionlabel %s referenced outside of any functionlabel at end of compound statementlabel at end of compound statement only available with %<-std=c++23%> or %<-std=gnu++23%>label context is not the current function declarationlabel definition in %<constexpr%> function only available with %<-std=c++23%> or %<-std=gnu++23%>label definition in %<constexpr%> function only available with %<-std=c++2b%> or %<-std=gnu++2b%>lambda capture initializers only available with %<-std=c++14%> or %<-std=gnu++14%>lambda capture of %qE is not a constant expressionlambda declared herelambda expressions only available with %<-std=c++11%> or %<-std=gnu++11%>lambda in local class %q+T cannot capture variables from the enclosing contextlambda parameter %qD previously declared as a capturelambda templates are only available with %<-std=c++20%> or %<-std=gnu++20%>lambda-expression in template parameter typelambda-expression in template-argument only available with %<-std=c++20%> or %<-std=gnu++20%>lambda-expression in unevaluated context only available with %<-std=c++20%> or %<-std=gnu++20%>lambda-expression is not a constant expression before C++17lambdas are implicitly %<constexpr%> only in C++17 and laterlane %wd out of range %wd - %wdlane index must be a constant immediatelanguage %s not recognizedlanguage dialect differs %qs, expected %qslanguage string %<"%E"%> not recognizedlarge fixed-point constant implicitly truncated to fixed-point typelarge integer implicitly truncated to unsigned typelarge return values not supported with %<-mabi=ti%> optionlast argument must be an immediatelast argument of %qD is not integer constant between 0 and 3last register name %s must be an odd registerlayout of %qs member of type %qT changes in %qsld returned %d exit statusleft argument must be a sliceleft hand operand of %<->*%> must be a pointer to class, but is a pointer to member of type %qTleft operand of comma operator cannot resolve address of overloaded functionleft operand of comma operator has no effectleft operand of comma operator is a reference, not call, to function %qEleft operand of shift expression %q+E is negativeleft precisionleft precision in strfmon formatleft shift count >= width of typeleft shift count >= width of vector elementleft shift count is negativeleft shift of negative valueleft-hand operand of comma expression has no effectleft-hand side of assignment might be a candidate for a format attributelen larger than caplength %qE above array section size in %qs clauselength %qE of array section does not have integral typelength computed herelength modifierlength modifier in printf formatlength modifier in scanf formatlength modifier in strfmon formatlength required when allocating a sliceletter %c was found & insn was not CONST_INTlibraries: %s
  library function %q#D redeclared as non-function %q#Dlibrary lib%s not foundlimit is %wu bytes, but argument is %slimit is %wu bytes, but argument may be as large as %slinear clause applied to non-integral non-pointer variable with %qT typelinear clause applied to non-integral non-pointer variable with type %qTlinear clause with %qs modifier applied to non-reference variable with %qT typelinear step expression must be integrallink against the pthread library (default on)linker hardening options not enabled by %<-fhardened%> because other link options were specified on the command linelist-initializer for non-class type must not be parenthesizedlisting the stack pointer register %qs in a clobber list is deprecatedliteral operator %q#D conflicts with raw literal operatorliteral operator suffixes not preceded by %<_%> are reserved for future standardizationliteral operator template %qD has invalid parameter list; expected non-type template parameter pack %<<char...>%>literal operator template %qD has invalid parameter list; expected non-type template parameter pack %<<char...>%> or single non-type parameter of class typeliteral operator with C linkagelive patching (with %qs) is not supported with LTOlo_sum not of registerlocal class %q#T shall not have static data member %q#Dlocal declaration from a different functionlocal declaration of %qE hides instance variablelocal label %qE conflicts with existing labellocal member %q#D declared herelocal method %q#D declared herelocal symbols must be definedlocal variable %qD may not appear in this contextlocal variable memory requirements exceed capacitylocation of OpenACC %<kernels%>location of the previous clause in the same loop nestlocation of the previous reduction for %qElocation references block not in block treelogic error: MOVE %s %s invalid type:logic error: missing inode for %slogical %<and%> applied to non-boolean constantlogical %<and%> of equal expressionslogical %<and%> of mutually exclusive tests is always falselogical %<or%> applied to non-boolean constantlogical %<or%> of collectively exhaustive tests is always truelogical %<or%> of equal expressionslogical not is only applied to the left hand side of comparisonlogical_to_bitwise(): Bad intrinsiclookup of %qT in %qT is ambiguousloop %d%'s header does not belong directly to itloop %d%'s header does not have exactly 2 entriesloop %d%'s header is not a loop headerloop %d%'s latch does not belong directly to itloop %d%'s latch does not have an edge to its headerloop %d%'s latch does not have exactly 1 successorloop %d%'s latch does not have header as successorloop %d%'s latch is marked as part of irreducible regionloop %d%'s latch is not dominated by its headerloop %d%'s number of iterations %qE references the released SSA name %qEloop name defined hereloop nest expectedloop not permitted in intervening code in OpenMP loop bodyloop uses OpenACC parallelism disallowed by containing routineloop variable %qD creates a copy from type %qTloop variable %qD of type %qT binds to a temporary constructed from type %qTloop verification on loop tree that needs fixuploop with header %d marked for removalloop with header %d not in loop treelooser exception specification on overriding virtual function %q+#Flow bound %qE above array section size in %qs clauselow bound %qE of array section does not have integral typelow bound for the array is outside the ztype limitslow bound for the subrange has overflowedlower value in case label range less than minimum value for typelseek failed while reading export datalvalue required as decrement operandlvalue required as increment operandlvalue required as left operand of assignmentlvalue required as unary %<&%> operandlvalue required in %<asm%> statementlvalue-to-rvalue conversion of a volatile lvalue %qE with type %qTmachine description does not have a sibcall_epilogue instruction patternmachine independent builtin code out of rangemacro definitions of %qE corruptedmacro expands to multiple statementsmacro name missing after %qsmain variant is not definedmake_generic(): Cannot find generic symbol %qsmaking multiple clones of %qDmalformed %<#pragma %s%>, ignoredmalformed %<#pragma %s%>, ignoringmalformed %<#pragma ADDRESS%> variable addressmalformed %<#pragma CTABLE_ENTRY%> variable addressmalformed %<#pragma GCC pch_preprocess%>malformed %<#pragma GCC visibility push%>malformed %<#pragma __extern_prefix%>, ignoringmalformed %<#pragma align%>malformed %<#pragma align%>, ignoringmalformed %<#pragma builtin%>malformed %<#pragma extern_model%>, ignoringmalformed %<#pragma fini%>malformed %<#pragma fini%>, ignoringmalformed %<#pragma init%>malformed %<#pragma init%>, ignoringmalformed %<#pragma member_alignment%>malformed %<#pragma member_alignment%>, ignoringmalformed %<#pragma message%>, ignoredmalformed %<#pragma ms_struct {on|off|reset}%>, ignoringmalformed %<#pragma ms_struct%>, ignoringmalformed %<#pragma options align={mac68k|power|reset}%>, ignoringmalformed %<#pragma options%>, ignoringmalformed %<#pragma pack%> - ignoredmalformed %<#pragma pack(pop[, id])%> - ignoredmalformed %<#pragma pack(push[, id][, <n>])%> - ignoredmalformed %<#pragma redefine_extname%>, ignoredmalformed %<#pragma weak%>, ignoredmalformed %<#pragma%> ghs sectionmalformed %<COLLECT_GCC_OPTIONS%>malformed %<target("%s")%> attributemalformed %<target("%s")%> pragma or attributemalformed %<target()%> attributemalformed %<target()%> pragma or attributemalformed option %<-fplugin-arg-%s%>: missing %<-<key>[=<value>]%>malformed ptx filemalformed spec function argumentsmalformed spec function namemalloc attribute should be used for a function that returns a pointermangled name for %qD will change in C++17 because the exception specification is part of a function typemangling %<typeof%>, use %<decltype%> insteadmangling %Cmangling of %q#D as %qE conflicts with a previous manglemangling type pack indexmap can only be compared to nilmap composite literal must have keysmapper died by signal %smapper exit status %dmapping field %qE of variable length structuremask must be an immediatematch_attr_spec(): Bad attributematch_level_4(): Bad operatormatch_string_constant(): Delimiter not foundmatching constraint does not allow a registermatching constraint not valid in output operandmatching constraint outside of a functionmatching constraint references invalid operand numbermaximal number of LTO partitions streamed in parallel.maximum limit of %d namespaces searched for %qEmaximum nesting depth exceeded: %imaximum number of LRA assignment passes is achieved (%d)maximum number of generated reload insns per insn achieved (%d)may access %E byte in a region of size %Emay access %E bytes in a region of size %Emay access %E or more bytes in a region of size %Emay access between %E and %E bytes in a region of size %Emay not use both -EB and -ELmay not use both -m32 and -m64may only omit types within composite literals of slice, array, or map typemay read %E byte from a region of size %Emay read %E bytes from a region of size %Emay read %E or more bytes from a region of size %Emay read between %E and %E bytes from a region of size %Emay write %E byte into a region of size %Emay write %E bytes into a region of size %Emay write %E or more bytes into a region of size %Emay write between %E and %E bytes into a region of size %Emd5_stream failedmduc registers only saved for G13 targetmedia functions are not available unless %<-mmedia%> is usedmem-initializer for %qD follows constructor delegationmember %q+#D with constructor not allowed in anonymous aggregatemember %q+#D with constructor not allowed in unionmember %q+#D with copy assignment operator not allowed in anonymous aggregatemember %q+#D with copy assignment operator not allowed in unionmember %q+#D with destructor not allowed in anonymous aggregatemember %q+#D with destructor not allowed in unionmember %q+D cannot be declared as a %<mutable%> referencemember %q+D cannot be declared both %<const%> and %<mutable%>member %qD can be declared both %<virtual%> and %<constexpr%> only in %<-std=c++20%> or %<-std=gnu++20%>member %qD cannot be declared both %<virtual%> and %<static%>member %qD declared as friend before type %qT definedmember %qD in read-only object used as %<asm%> outputmember %qD is uninitialized referencemember %qD is used uninitializedmember %qD must be initialized by mem-initializer in %<constexpr%> constructormember %qD with uninitialized reference fieldsmember functions are implicitly friends of their classmember template %qD may not have virt-specifiersmember variables cannot have RVV type %qTmember variables cannot have SVE type %qTmembers of an explicitly specialized class are defined without a template headermemory allocation failed in vasprintfmemory allocation failed while reading export datamemory input %d is not directly addressablememory layout mismatchmemory reference expected for 'S' output modifiermemory reference or volatile after callmetadirectives cannot be used as variants of a %<metadirective%>method %<%c%E%> declared %<@optional%> and %<@required%> at the same timemethod %qs has an implicit %<this%> argumentmethod %s%s%s is marked go:nointerfacemethod %s%s%s requires a pointer receivermethod argument attributes are not available in Objective-C 1.0method attributes are not available in Objective-C 1.0method attributes cannot be specified in @implementation contextmethod attributes must be specified at the endmethod attributes must be specified at the end onlymethod declaration not in @interface contextmethod declared %qE overriding %qE methodmethod definition for %<%c%E%> not foundmethod definition not in @implementation contextmethod overrides both %<transaction_pure%> and %qE methodsmethod possibly missing a [super dealloc] callmethod type does not match object typemin partition size cannot be greater than max partition sizemio_array_ref(): Unknown array refmips16 function profilingmismatch between declaration %qE size (%wd) and its initializer size (%wd)mismatch in argument %u type of built-in function %qD; expected %qTmismatch in argument %u type of intrinsic function %qD (%qT, should be %qT)mismatch in argument %u type of intrinsic function %qD (%qT, should be %qs)mismatch in bound %Z of argument %u declared as %smismatch in bounds %Z of argument %u declared as %smismatch in call of intrinsic function %qDmismatch in number of arguments for builtin %qF. Expected: %d got %dmismatch in return type of built-in function %qD; expected %qTmismatch in return type of intrinsic function %qD (%qT, should be %qs)mismatched argument pack lengths (%d vs %d)mismatched argument pack lengths while expanding %qEmismatched argument pack lengths while expanding %qTmismatched contract attribute in declarationmismatched contract condition in declarationmismatched declarations during linktime optimizationmismatched operator in fold-expressionmismatching abi tags for %qD with no tagsmismatching abi tags for %qD with tags %qEmismatching comparison operand typesmismatching compiled module interface: had %qs, got %qsmismatching definitionmismatching parensmisplaced %<@%D%> Objective-C++ constructmissing $ operand number in formatmissing %<(%> after %<#pragma GCC visibility push%> - ignoredmissing %<(%> after %<#pragma pack%> - ignoredmissing %<(%> after %<#pragma unused%>, ignoringmissing %<)%> after %<#pragma unused%>, ignoringmissing %<PHI%> defmissing %<big-endian%>, %<little-endian%>, or %<default%> after %<#pragma scalar_storage_order%>missing %<error%>, %<warning%>, %<ignored%>, %<push%>, %<pop%>, or %<ignored_attributes%> after %<#pragma GCC diagnostic%>missing %<target%> attribute for multi-versioned %qDmissing %qs clause when applying %qs to %qD, which has already been marked with an OpenACC 'routine' directivemissing REG_EH_REGION note at the end of bb %imissing additional %<requires%> to start a requires-expressionmissing arch name in %<-march=%s%>missing argument to %<#pragma GCC diagnostic ignored_attributes%>missing argument to %qsmissing attribute name after %<#pragma GCC diagnostic ignored_attributes%>missing barrier after block %imissing braces around initializermissing braces around initializer for %qTmissing callgraph edge for call stmt:missing close brace for named operandmissing close parenmissing collection in fast enumerationmissing controlling predicatemissing cpu name in %<-mcpu=%s%>missing cpu name in %<-mtune=%s%>missing dashmissing definitionmissing device or architecture after %qsmissing direct call for speculation %imissing directory: %smissing edge %i->%imissing feature or flag for %qsmissing filename after %qsmissing fill character at end of strfmon formatmissing format after %qsmissing header namemissing increment expressionmissing indirect call in speculative call sequencemissing initializer for field %qD of %qTmissing initializer for member %qDmissing loop condition in loop with %<GCC ivdep%> pragmamissing loop condition in loop with %<GCC unroll%> pragmamissing makefile target after %qsmissing mappermissing method %s%s%smissing module namemissing name in %<target("arch=")%> pragma or attributemissing name in %<target("cpu=")%> pragma or attributemissing numbermissing open parenmissing operandmissing option after %<#pragma GCC diagnostic%> kindmissing or corrupt object.dmissing origin for a node in a nested listmissing output path after %qsmissing path after %qsmissing primary template attribute %emissing primary template attributes %emissing property attributemissing ref for speculation %imissing required %<target%> and/or %<targetsync%> modifiermissing resolution data for %smissing sentinel in function callmissing template argument list after %qE; for deduction, template placeholder must be followed by a simple declarator-idmissing template argument list after %qE; template placeholder not permitted in parametermissing template argumentsmissing template arguments after %qEmissing terminating %c charactermissing type-name in typedef-declarationmissing value in %<target()%> pragma or attributemissing value in %<target_version%> attributemisspelled term %<%.*s%> in format; use %<%s%s%> insteadmixing OpenMP directives with attribute and pragma syntax on the same declarationmixing OpenMP directives with attribute and pragma syntax on the same statementmixing declarations and function-definitions is forbiddenmixing different types of symbol in same comdat groups is not supportedmode %qs applied to inappropriate typemode size of non-integral result does not match field size of %qsmodification of %qE from outside current evaluation is not a constant expressionmodification of %qE is not a constant expressionmodification of %qE outside its lifetime is not a constant expressionmodification of allocated storage after deallocation is not a constant expressionmodified heremodifier 'N' require register operandmodifier other than %<val%> specified in %<linear%> clause on %<simd%> or %<for%> constructs when using OpenMP 5.2 modifiersmodifier should not be specified in %<linear%> clause on %<simd%> or %<for%> constructs when not using OpenMP 5.2 modifiersmodifying a const object %qE is not allowed in a constant expressionmodule %qs CRC mismatchmodule %qs declared heremodule %qs expected, header module foundmodule %qs foundmodule %qs imported heremodule already declaredmodule already importedmodule contains OpenACC, use %<-fopenacc%> to enablemodule contains OpenMP, use %<-fopenmp%> or %<-fopenmp-simd%> to enablemodule contains OpenMP, use %<-fopenmp%> to enablemodule nature in USE statement at %Cmodule-declaration must be at global scopemodule-declaration not permitted in header-unitmodule-declaration only permitted as first declaration, or ending a global module fragmentmore than %d operands in %<asm%>more than one %<atomic_default_mem_order%> clause in a single compilation unitmore than one %qs clause with %<source%> modifier on an %<ordered%> constructmore than one 'crtl' directivemore than one access specifier in base-specifiermore than one locator in %<depend%> clause on %<depobj%> constructmoving %qE of type %qT to itselfmoving a local object in a return statement prevents copy elisionmoving a temporary object prevents copy elisionmpfr not configured to handle all floating modesmulti-source compilation not implemented for C++multidimensional array must have bounds for all dimensions except the firstmultilib exclusion %qs is invalidmultilib exclusions %qs is invalidmultilib select %qs %qs is invalidmultilib select %qs is invalidmultilib spec %qs is invalidmultiple %<-mcpu=%> options specifiedmultiple %<default%> targets were setmultiple %<step%> modifiersmultiple %qE attributemultiple EH personalities are supported only with assemblers supporting %<.cfi_personality%> directivemultiple OpenMP standalone directives among %<omp::directive%> attributes must be all within the same %<omp::sequence%>multiple cc output constraints not supportedmultiple declarations in range-based %<for%> loopmultiple default labels in one switchmultiple definition of %q#Tmultiple fast interrupt routines seen: %qE and %qEmultiple fields in union %qT initializedmultiple function type attributes specifiedmultiple hot/cold transitions found (bb %i)multiple initializations given for %qDmultiple initializations given for base %qTmultiple inline callersmultiple interrupt attributes not allowedmultiple interrupt attributes to function %qDmultiple iterating variables in fast enumerationmultiple linear modifiersmultiple methods named %<%c%E%> foundmultiple nested types attributes to function %qDmultiple parameters named %qDmultiple prevailing defs for %qEmultiple property %qE methods specified, the latest one will be usedmultiple ref-qualifiersmultiple save register attributes to function %qDmultiple selectors named %<%c%E%> foundmultiple storage classes in declaration of %qsmultiple storage classes in declaration specifiersmultiple types in one declarationmultiple virtual PHI nodes in BB %dmultiple-value function call in single-value contextmultiply option implies r%d is fixedmultiversioning needs %<ifunc%> which is not supported on this targetmust %<#include <typeinfo>%> before using %<typeid%>must be declared with %<noexcept(true)%>must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>mutable %qD is not usable in a constant expressionnaked attribute only applies to functionsname %qD used in a GNU-style designated initializer for an arrayname %qT has incomplete typename %qs differs from name %qs defined in another translation unitname %qs is defined as %u-bit while another translation unit defines it as %u-bitname %qs is defined to %wd while another translation unit defines it as %wdname %qs is defined to different value in another translation unitname missing for member functionname of class shadows template template parameter %qDname the explicit object parametername used in a GNU-style designated initializer for an arrayname-independent declarations only available with %<-std=c++2c%> or %<-std=gnu++2c%>named return values are no longer supportednamespace %qD enterednamespace alias %qD not allowed here, assuming %qDnamespace name requirednamespace-scope anonymous aggregates must be staticnarrowing conversion of %qE from %qH to %qInarrowing conversion of %qE from %qH to %qI is ill-formed in C++11narrowing conversion of %qd from %qH to %qIneed %<this%> to access member %qEneed %<this%> to access member %qsneed %<typename%> before %<%T::%D::%E%> because %<%T::%D%> is a dependent scopeneed %<typename%> before %<%T::%E%> because %qT is a dependent scopeneed %<typename%> before %qE because %qT is a dependent scopeneed explicit conversionneed explicit conversion; missing method %s%s%snegative insn lengthnegative integer implicitly converted to unsigned typenegative length in array section in %qs clausenegative low bound in array section in %qs clausenegative nesting depth of region %inegative shift countnegative width in bit-field %q+Dnegative width in bit-field %qsneither branch of %<if%> is a constant expressionneither the destructor nor the class-specific %<operator delete%> will be called, even if they are declared when the class is definedneither the destructor nor the class-specific operator %<delete []%> will be called, even if they are declared when the class is definednested assembly dialect alternativesnested extern declaration of %qDnested functionnested function %q+D declared but never definednested function %qE declared %<extern%>nested function %qs declared %<extern%>nested function missing bodynested function trampolines not supported on this targetnested functions cannot be profiled with %<-mfentry%> on s390nested functions not supported on this targetnested inline namespace definitions only available with %<-std=c++20%> or %<-std=gnu++20%>nested loop in reduction needs reduction clause for %qEnested name specifier %qT for enum declaration does not name a class or namespacenested namespace definitions only available with %<-std=c++17%> or %<-std=gnu++17%>nested namespace name requirednested quoting directivenested redefinition of %<enum %E%>nested redefinition of %<struct %E%>nested redefinition of %<union %E%>nested requirement %qE is not satisfiednested requirement %qE is not satisfied, becausenew cannot be applied to a function typenew cannot be applied to a reference typenew declaration %q#D ambiguates built-in declaration %q#Dnew in Fortran 2003new in Fortran 2008new in Fortran 2018new in Fortran 2023new in Fortran 95new types may not be defined in a return typenew-expression is not a constant expression before C++20next member %q#D declared hereno %<%D(int)%> declared for postfix %qsno %<%D(int)%> declared for postfix %qs, trying prefix operator insteadno %<%c%E%> method foundno %<FUNCTION_PROFILER%> for CRISno %<enum%> underlying type specifiedno %q#D member function declared in class %qTno %qs getter foundno FPX/FPU mixing allowedno LTRANS output list filename providedno argumentsno arguments for spec functionno attribute can be applied to an explicit instantiationno class name specified with %qsno class template named %q#T in %q#Tno closing %<]%> for %<%%[%> formatno closing braceno constructorsno context to resolve type of %qEno conversion operators declaredno corresponding deallocation function for %qDno data type for mode %qsno declaration matches %q#Dno declaration of property %qs found in the interfaceno default argument for %qDno destructorsno dispatcher found for the versioning attributesno dispatcher found for the versioning attributes: %sno field %qD found in union being initializedno functions named %qDno immediate_use listno initializers are allowed in section %qsno input filesno input files; unwilling to write output filesno integral type can represent all of the enumerator values for %qTno known conversion for argument %d from %qH to %qIno known conversion for implicit %<this%> parameter from %qH to %qIno known conversion from %qH to %qIno low registers available for popping high registersno match for no match for call to %<%T::operator[] (%A)%>no match for call to %<(%T) (%A)%>no matches converting function %qD to type %q#Tno matching fixed-point overload found for %qsno matching function call to %qE with empty argumentsno matching function for call to %<%D(%A)%>no matching function for call to %<%T::%s%E(%A)%#V%>no matching function for call to %<%T::operator %T(%A)%#V%>no matching function for call to %<%s(%A)%>no matching function for type-generic callno matching push for %<#pragma GCC visibility pop%>no matching template for %qD foundno member function %qD declared in %qTno member named %qE in %qTno multilib-enabled ABI (%qs) can be implemented with instruction set %qs, falling back to %qsno operand of the disjunction is satisfiedno other trait-property may be specified in the same selector set with %<kind("any")%>no post-decrement operator for typeno post-increment operator for typeno pre-decrement operator for typeno pre-increment operator for typeno previous declaration for %qDno previous prototype for %qDno processor type specified for linkingno profile files were merged
! no profiling of 64-bit code for this ABIno register available for profiling %<-mcmodel=large%s%>no register in addressno return statement in %<constexpr%> function returning non-voidno return statement in function returning non-voidno return statements in function returning %qTno semicolon at end of struct or unionno such exception: 0x%04xno suitable %<operator %s%> for %qTno suitable %qD found in class %qTno super class declared in @interface for %qEno super class declared in interface for %qEno support for %qs without %qsno suspend point info for %qDno type named %q#T in %q#Tno type or storage class may be specified here,no unexpanded parameter packs in binary foldno unique final overrider for %qD in %qTno valid clauses specified in %<#pragma acc declare%>no viable conversion from %<void%> provided by %<get_return_object%> to return type %qTno viable destructor for %qTnode differs from node->decl->decl_with_vis.symtab_nodenode has body_removed but is definitionnode has invalid order %inode has unknown typenode is alias but not definitionnode is alias but not implicit aliasnode is alone in a comdat groupnode is analyzed but it is not a definitionnode is in same_comdat_group list but has no comdat_groupnode is symver but not aliasnode is transparent_alias but not an aliasnode is weakref but not an transparent_aliasnode not found in symtab assembler name hashnode not found node->decl->decl_with_vis.symtab_nodenodes with unreleased memory foundnoexcept-expression evaluates to %<false%> because of a call to %qDnon 32 bit register operand for '%%%c'non double precision REAL argument to %s intrinsic at %Lnon-%<consteval%> function %q+D overriding %<consteval%> functionnon-AAPCS derived PCS variantnon-ASCII character in CFString literalnon-NULL pointer initialization at %Cnon-OpenACC construct inside of OpenACC regionnon-OpenACC construct inside of OpenACC routinenon-array deallocation of object allocated with array allocationnon-call exception handling mismatchnon-class, non-variable partial specialization %qE is not allowednon-cold basic block %d reachable only by paths crossing the cold partitionnon-const integer argument %u in call to function %qEnon-constant argument 0 to %qsnon-constant argument 1 to %qsnon-constant array in DATA statement %Lnon-constant array initializationnon-constant array new length must be specified directly, not by %<typedef%>non-constant array new length must be specified without parentheses around the type-idnon-constant compound literals cannot appear in a constant-expressionnon-constant condition for static assertionnon-constant element in constant CONSTRUCTORnon-constant expression %qsnon-constant in-class initialization invalid for non-inline static member %qDnon-constant in-class initialization invalid for static member %qDnon-constant initialization expression at %Lnon-constant iteration count of %<unroll full%> loopnon-deducible template %qT used without template argumentsnon-default INTEGER kind argument to %s intrinsic at %Lnon-delegitimized UNSPEC %s (%d) found in variable locationnon-deleted function %q+D overriding deleted functionnon-empty string literal expectednon-floating-point argument in call to function %qEnon-floating-point arguments in call to function %qEnon-function %qD declared as implicit templatenon-function alias definitions not supported in this configurationnon-function in gimple callnon-integer argument 1 to %qsnon-integer argument 3 in call to function %qEnon-integer memory model argument %d of %qEnon-integer operand used with operand code %<z%>non-integral type switch statementnon-local gotos in functions with SME statenon-local lambda expression cannot have a capture-defaultnon-local variable %qD declared %<__thread%> has a non-trivial destructornon-local variable %qD declared %<__thread%> needs dynamic initializationnon-loop with header %d not marked for removalnon-lvalue array in conditional expressionnon-member %qs cannot be declared %<mutable%>non-member function %qD cannot have cv-qualifiernon-member function %qD cannot have ref-qualifiernon-member using-declaration names constructor of %qTnon-member-template declaration of %qDnon-memory input %d must stay in memorynon-memory output %d must stay in memorynon-nested function with variably modified typenon-object member %qs cannot be declared %<mutable%>non-objective-c type %qT cannot be caughtnon-parameter %qs cannot be a parameter packnon-rectangular %<tile%>non-rectangular loop nest with non-constant step for %qsnon-rectangular loops from generated loops unsupportednon-register as LHS of binary operationnon-register as LHS of ternary operationnon-register as LHS of unary operationnon-scalar %qsnon-scalar typenon-scalar variable %qD in conditional %<lastprivate%> clausenon-standard suffix on floating constantnon-standard suffix on floating constant before C23non-static const member %q#D in class without a constructornon-static const member %q#D, cannot use default assignment operatornon-static data member %q+D in a union may not have reference type %qTnon-static data member %qE declared %qsnon-static data member declared with placeholder %qTnon-static data member initializers only available with %<-std=c++11%> or %<-std=gnu++11%>non-static declaration of %q+D follows static declarationnon-static initialization of a flexible array membernon-static reference %q#D in class without a constructornon-static reference member %q#D, cannot use default assignment operatornon-template %qD used as templatenon-template type %qT used as a templatenon-thread-local declaration of %q#D follows thread-local declarationnon-thread-local declaration of %q+D follows thread-local declarationnon-top-level %qsnon-trivial conversion in %qsnon-trivial conversion in unary operationnon-trivial designated initializers not supportednon-type partial specialization %qE is not allowednon-type template parameters of class type only available with %<-std=c++20%> or %<-std=gnu++20%>non-type template parameters of deduced class type only available with %<-std=c++20%> or %<-std=gnu++20%>non-variable %qD in declaration with more than one declarator with placeholder typenon-vector %qs with elementsnon-vector operands in vector comparisonnonconstant array index in initializernonempty exits list of loop %d, but exits are not recordednonlocal label %qD is not first in a sequence of labels in bb %dnontemporal store lhs cannot be a gimple registernonzero array subscript %qE is used with array %qD of type %qT with unknown boundsnonzero array subscript %qE is used with array of type %qT with unknown boundsnormalization cannot co-exist with scaling
! not Encapsulated Lazy Records of Named Declarationsnot allowed type combination in %qsnot configured with sysroot headers suffixnot eliding copy on return from %qDnot eliding copy on return in %qDnot enough DO loops for %s !$ACC LOOP at %Lnot enough DO loops for collapsed %s (level %d) at %Lnot enough argumentsnot enough arguments to returnnot enough nested loopsnot enough type informationnot enough variable arguments to fit a sentinelnot expecting different types to binary operatornot exporting %<#define %E%> as it is a keywordnot generating patch area, nops not supportednot support %<-fpic%> option for v3m toolchainnot writing module %qs due to errors in template bodiesnotenote: null destination pointernull format stringnull pointernull pointer dereferencenullability specifier %qE cannot be applied to multi-level pointer type %qTnullability specifier %qE cannot be applied to non-pointer type %qTnumber must be 0 or 1number of arguments doesn%'t match built-in prototypenumber of arguments doesn%'t match prototypenumber of bb notes in insn chain (%d) != n_basic_blocks (%d)number of components of vector not a power of twonumber of counters in profile data for function %qD does not match its profile data (counter %qs, expected %i and have %i)number of list items in %<interop%> clause (%d) exceeds the number of %<append_args%> items (%d) for %<declare variant%> candidate %qDnumber of results does not match number of valuesnumber of speculative targets %i mismatched with num_speculative_call_targets %inumber of variables in %qs clause with %<sink%> modifier does not match number of iteration variablesnumber of vector components %wu exceeds %dnumber of vector components %wu not a power of twonumeric argument of %qE attribute must be in range [0-63]objc++-cpp-output is deprecated; please use objective-c++-cpp-output insteadobjc-cpp-output is deprecated; please use objective-c-cpp-output insteadobject %qE of size %sobject is not a methodobject missing in use of %qEobject of size %s allocated by %qEobject property %qD has no %<assign%>, %<retain%> or %<copy%> attribute; assuming %<assign%>object type %qT does not match destructor name ~%qTobject with variably modified type must have no linkageobjective-c method declaration is expectedobjective-c++ message argument(s) are expectedobjective-c++ message receiver expectedobjective-c++ method declaration is expectedobsolescent in Fortran 95obsolete FPA format code '%c'obsolete Maverick format code '%c'obsolete option %<-I-%> used, please use %<-iquote%> insteadobsolete use of designated initializer with %<:%>obsolete use of designated initializer without %<=%>obtained hereodr-used inline variable %qD is not definedof moduleoffload compiler %qs not foundoffload compiler %s not found (consider using %<-B%>)offload dimension out of range (%d)offset %qwi outside bounds of constant stringoffset exceeds 16 bytesoffset of %qD for %<-std=c++14%> and up changes in %<-fabi-version=17%> (GCC 12)offset of %qD is not ABI-compliant and may change in a future version of GCCoffset of %qT base class for %<-std=c++14%> and up changes in %<-fabi-version=17%> (GCC 12)offset of packed bit-field %qD has changed in GCC 4.4old declaration %q#Dold-style function definitionold-style parameter declarations in prototyped function definitionomission of %<,%> before varargs %<...%> is deprecated in C++26omitted middle operand to %<?:%> operand cannot be mangledomp_cur_iteration at %L requires %<-1%> as logical offsetone field is a bitfield while the other is notone of the initializer call arguments should be %<&omp_priv%>one of the initializer call arguments should be %<omp_priv%> or %<&omp_priv%>one type needs to be constructed while the other does notonly %<distribute%>, %<parallel%> or %<loop%> regions are allowed to be strictly nested inside %<teams%> regiononly %<inbranch%> and %<notinbranch%> flags are allowed for %<__simd__%> attributeonly %<inbranch%> and %<notinbranch%> flags are allowed for %<simd%> attributeonly %qT or a null pointer constant can be converted to %qTonly %u name provided for structured bindingonly %u names provided for structured bindingonly 0.0 can be loaded as an immediateonly 32-bit access is supported for %<__regio_symbol%> address spaceonly DWARF debug format is supported for interrupt service routineonly Objective-C object types can be qualified with a protocolonly attribute %<fallthrough%> or %<assume%> can be applied to a null statementonly constructors take member initializersonly declarations of constructors and conversion operators can be %<explicit%>only here as a %<friend%>only plain %<auto%> return type can be deduced to %<void%>only the first parameter of a member function can be declared as an explicit object parameteronly unevaluated inline assembly is allowed in a %<constexpr%> function in C++20only uninitialized variables can be placed in a %<.bss%> sectiononly uninitialized variables can be placed in the %<.noinit%> sectiononly values 12 (4 KB) and 16 (64 KB) are supported for guard size.  Given value %d (%llu KB) is out of rangeonly weak aliases are supported in this configurationonly zero initializers are allowed in section %qsopaque vector types cannot be initializedopaque-enum-declaration hereopaque-enum-specifier must use a simple identifieropaque-enum-specifier without nameopen %s failed: %sopen /dev/zero: %mopening LTRANS output list %s: %mopening dependency file %s: %mopening output file %qs: %sopening output file %s: %moperand %%xn code invalid for QImodeoperand %d should be a 3 bit unsigned immediateoperand %d should be a 6 bit unsigned immediateoperand %d should be a 8 bit unsigned immediateoperand 1 should be an unsigned 3-bit immediateoperand 1 should be an unsigned 3-bit value (I0-I7)operand 2 should be an even 3-bit value (subreg 0,2,4,6)operand 2 should be an unsigned 3-bit value (I0-I7)operand 2 should be an unsigned 3-bit value (subreg 0-7)operand 2 should be an unsigned 8-bit valueoperand 3 should be an unsigned 3-bit value (I0-I7)operand 3 should be an unsigned 8-bit valueoperand 4 should be an unsigned 8-bit value (0-255)operand constraint contains incorrectly positioned %<+%> or %<=%>operand constraints for %<asm%> differ in number of alternativesoperand is not a condition code, invalid operand code '%c'operand is not a condition code, invalid operand code 'D'operand is not a condition code, invalid operand code 'Y'operand is not a specific integer, invalid operand code 'R'operand is not a specific integer, invalid operand code 'r'operand is not an integer, invalid operand code 'K'operand is not an integer, invalid operand code 'R'operand is not an offsettable memory reference, invalid operand code 'H'operand number missing after %%-letteroperand number out of rangeoperand number out of range in formatoperand number specified for format taking no argumentoperand number specified with suppressed assignmentoperand of %<?:%> changes signedness from %qT to %qT due to unsignedness of other operandoperand of fold expression has no unexpanded parameter packsoperand type %qT is incompatible with argument %d of %qEoperand types are %qT and %qToperands to %<?:%> have different types %qT and %qToperands to %<?:%> of types %qT and %qT have unordered conversion rankoperands to %T/%t must be reg + const_int:operation not permitted on type %<_Float16%> without option %<-msse2%>operation not permitted on type %<__bf16%> without option %<-msse2%>operation not permitted on type %<bfloat16_t%>operation not permitted on type %<mfloat8_t%>operation on %qE may be undefinedoperations after non tail recursive calloperations on multiple vectors must be predicated by %qs rather than %qsoperations on single vectors must be predicated by %qs rather than %qsoperator %<delete []%> used on incomplete typeoperator %<delete%> used on incomplete typeoptimization attribute on %qD follows definition but the attribute doesn%'t matchoptimization level attribute mismatchoptimization may eliminate reads and/or writes to register variablesoptimize non var unbounded parameters by passing it by reference, providing it is not written to within the callee procedure.option %<%s=%s%> is not available for %qs CPUoption %<-mdouble=32%> is only available if configured %<--with-double={32|32,64|64,32}%>option %<-mdouble=64%> is only available if configured %<--with-double={64|64,32|32,64}%>option %<-mirq-ctrl-saved%> valid only for ARC v2 processorsoption %<-mlong-double=32%> is only available if configured %<--with-long-double={32|32,64|64,32}%>, or %<--with-long-double=double%> together with %<--with-double={32|32,64|64,32}%>option %<-mlong-double=64%> is only available if configured %<--with-long-double={64|64,32|32,64}%>, or %<--with-long-double=double%> together with %<--with-double={64|64,32|32,64}%>option %<-mrgf-banked-regs%> valid only for ARC v2 processorsoption %<-mstructure-size-boundary%> is deprecatedoption %qs is ignored, the default value %qs is considered for %qs CPUoption %qs is not available for %qs CPUoption %qs is valid for %s but not for %soption %qs requires %<-mlong-double-128%>option %qs with mismatching values (%s, %s)option %s is not supported together with %<-fopenacc%>option %s not used consistently in all LTO input filesoption %s with different valuesoption missing after %qsoptional argumentoptional class parameteroptional second parameter of %<va_start%> not last named argumentoptions or targets=options missing after %qsoptype_msgid overflow: %dor replace parentheses with braces to aggregate-initialize a variableor replace parentheses with braces to value-initialize a variableor use %<auto%> for an abbreviated function templateor use %<j%> instead of %<i%> for the GNU built-in suffixordered argument needs positive constant integer expressionordered comparison of pointer with integer zeroordered comparison of pointer with integer zero (%qT and %qT)ordered comparison of pointer with null pointerorders the initialization/finalizations for scaffold-static or force linking of modules if scaffold-dynamicordinal type expectedorigin points to a different parentoriginal %<default%> is hereoriginal declaration appeared hereoriginal declaration hereoriginal declaration with fewer contracts hereoriginal definition appeared hereoriginal definition hereoriginal not compressed with zstdoriginal size unknownoriginal template declaration hereoriginally declared %<const%> hereoriginally defined hereoriginally indirect function call not considered for inliningoriginally specified hereorphaned %qs constructother match is hereother reasonsought to match virtual method %qD but does notouter %<__transaction_cancel%> not within outer %<__transaction_atomic%>outer %<__transaction_cancel%> not within outer %<__transaction_atomic%> or a %<transaction_may_cancel_outer%> functionouter block of region %i is wrongouter iteration variable %qD addend expression %qE is not integralouter iteration variable %qD multiplier expression %qE is not integralouter iteration variable %qD used in condition expression has type other than %qTouter iteration variable %qD used in initializer expression has type other than %qTouter transaction in %<transaction_may_cancel_outer%> functionouter transaction in %<transaction_safe%> functionouter transaction in transactionoutput constraint %d cannot be specified together with %qs clobberoutput constraint %d must specify a single registeroutput constraint %qc for operand %d is not at the beginningoutput file %s already exists in folder %soutput filename may not be emptyoutput filename specified twiceoutput number %d not directly addressableoutput operand %d must use %<&%> constraintoutput operand constraint lacks %<=%>output operand is constant in %<asm%>output operand outside of a function is not constantoutput registers must be grouped at top of stackoutput_move_single:overflow in array dimensionoverflow in constant expressionoverflow in conversion from %qT to %qT changes the value of %qEoverflow in conversion from %qT to %qT changes value from %qE to %qEoverflow in enumeration valuesoverflow in enumeration values at %qDoverflow in implicit constant conversionoverflowed output argument list for %qsoverflows in conversion from %qT to %qT changes value from %qE to %qEoverlapping initializer for field %qT.%qDoverloaded builtin %qs is implemented by builtin %qsoverloaded function name %qE in clause %qsoverloaded function with no contextual type informationoverridden function is %q#Doverridden function is %q#Foverridden function is %qDoverride controls (override/final) only available with %<-std=c++11%> or %<-std=gnu++11%>override the default 64 bit definition of SYSTEM.COFF_T with the argument specifiedoverriding %qD declared %<transaction_safe%>pack expansion argument for non-pack parameter %qD of alias template %qDpack expansion argument for non-pack parameter %qD of concept %qDpack expansion in using-declaration only available with %<-std=c++17%> or %<-std=gnu++17%>pack expansion of %qE attributepack index is negativepack index is not an integral constantpack index is out of rangepack index missingpack indexing only available with %<-std=c++2c%> or %<-std=gnu++2c%>pack init-capture only available with %<-std=c++20%> or %<-std=gnu++20%>packed attribute causes inefficient alignmentpacked attribute causes inefficient alignment for %q+Dpacked attribute causes inefficient alignment for %qEpacked attribute is unnecessarypacked attribute is unnecessary for %q+Dpacked attribute is unnecessary for %qEpacked layoutpadding struct size to alignment boundary with %E bytespadding struct to align %q+Dparameter %P has incomplete type %qTparameter %P of %qD has incomplete type %qTparameter %q+D declared %<_Noreturn%>parameter %q+D declared %<inline%>parameter %q+D has just a forward declarationparameter %qD declared with void typeparameter %qD has incomplete typeparameter %qD includes pointer to array of unknown bound %qTparameter %qD includes reference to array of unknown bound %qTparameter %qD invalidly declared method typeparameter %qD is initializedparameter %qD may not appear in this contextparameter %qD set but not usedparameter %qP of %qD might be a candidate for a format attributeparameter %u (%q+D) has incomplete typeparameter %u has incomplete typeparameter declaration before lambda declaration specifiers only optional with %<-std=c++23%> or %<-std=gnu++23%>parameter declaration before lambda exception specification only optional with %<-std=c++23%> or %<-std=gnu++23%>parameter declaration before lambda trailing return type only optional with %<-std=c++23%> or %<-std=gnu++23%>parameter declaration before lambda transaction qualifier only optional with %<-std=c++23%> or %<-std=gnu++23%>parameter declaration is not name-independentparameter declared %<auto%>parameter may not have variably modified type %qTparameter might be a candidate for a format attributeparameter name missing from parameter listparameter names (without types) in function declarationparameter pack %<__bases%> only valid in template declarationparameter pack %q+D must be at the end of the template parameter listparameter pack %qD cannot have a default argumentparameter pack argument %qE must be at the end of the template argument listparameter pack argument %qT must be at the end of the template argument listparameter pack cannot have a default argumentparameter packs not expanded with %<...%>:parameter passing for argument of type %qT changed %{in GCC 12.1%}parameter passing for argument of type %qT changed in GCC 13.1parameter passing for argument of type %qT changed in GCC 14.1parameter passing for argument of type %qT changed in GCC 7.1parameter passing for argument of type %qT changed in GCC 9.1parameter passing for argument of type %qT when C++17 is enabled changed to match C++14 %{in GCC 10.1%}parameter passing for argument of type %qT with %<[[no_unique_address]]%> members changed %{in GCC 10.1%}parameter passing for argument of type %qT with zero-width bit fields members changed in GCC 12parameter to builtin must be a string constant or literalparameter to builtin not valid: %sparameters of type %<va_list%> {aka %qs} are decayed to pointer types, and require %<va_copy%> to be converted back into a static array typeparametrized derived type argumentparent subprogram cannot be inlinedparentheses around %qE cannot be used to form a pointer-to-member-functionparentheses must be omitted if %qE attribute argument list is emptyparentheses must be omitted if attribute argument list is emptyparentheses required around this composite literal to avoid parsing ambiguityparentheses were disambiguated as a function declarationparenthesized initialization is not allowed in OpenMP %<for%> loopparenthesized initializer in array newparse error in SELECT RANK statement at %Cparse error in SELECT TYPE statement at %Cparse error in template argument listparser_file_close called with NULL *fileparser_file_close for %s called with NULL file->var_decl_nodeparser_file_open called with NULL *fileparser_file_open for %s called with NULL var_decl_nodeparser_file_read called with NULL *fieldparser_file_read called with NULL *fileparser_file_read for %s called with NULL field->var_decl_nodeparser_file_read for %s called with NULL file->var_decl_nodeparser_if() was called with variable %s, which is not a FldConditional
! parser_logop() was called with variable %s on line %d, which is not a FldConditional
! parser_op() doesn't know how to evaluate "%s = %s %c %s"
! parser_relop() was called with variable %s, which is not a FldConditional
! parser_symbol_add( %s ) improperly has a non-null var_decl_node
! parser_symbol_add() was called with a NULL new_var
! parser_symbol_add(): %2.2d %s has null ancestorparser_symbol_add(): %s is its own ancestorpart-ref with pointer attribute near %L is not rightmost part-ref of data-stmt-objectpartial specialization %q+D does not specialize any template arguments and is not more constrained than the primary template; to define the primary template, remove the template argument listpartial specialization %q+D does not specialize any template arguments; to define the primary template, remove the template argument listpartial specialization %qD is not more specialized thanpartial specialization %qT declared %<friend%>partial specialization is not more specialized than the primary template because it replaces multiple parameters with a pack expansionpartial specialization of %qD after instantiation of %qDpartition found but function partition flag not setpass %qs not found but is referenced by new pass %qspass %s does not support cloningpass %s needs a %<set_pass_param%> implementation to handle the extra argument in %<NEXT_PASS%>passed to the preprocessor if -fcpp is used (internal switch)passing %qT and %qT to arguments %d and %d of %qE, which expects a pair of 64-bit integerspassing %qT as %<this%> argument discards qualifierspassing %qT chooses %qT over %qTpassing %qT instead of the expected %qT to argument %d of %qE, after passing %qT to argument %dpassing %qT to argument %d of %qE, but %qT is not a valid MVE element typepassing %qT to argument %d of %qE, but %qT is not a valid SVE element typepassing %qT to argument %d of %qE, but argument %d had type %qTpassing %qT to argument %d of %qE, but argument %d was a tuple of %qTpassing %qT to argument %d of %qE, but its %qT form does not accept scalarspassing %qT to argument %d of %qE, but its %qT form does not accept single vectorspassing %qT to argument %d of %qE, but previous arguments had type %qTpassing %qT to argument %d of %qE, which does not accept scalars for this combination of argumentspassing %qT to argument %d of %qE, which expects %qTpassing %qT to argument %d of %qE, which expects %qspassing %qT to argument %d of %qE, which expects %qs or %qspassing %qT to argument %d of %qE, which expects a 128 bit NEON vector typepassing %qT to argument %d of %qE, which expects a 32-bit or 64-bit integer typepassing %qT to argument %d of %qE, which expects a pointer to %qTpassing %qT to argument %d of %qE, which expects a pointer to 32-bit or 64-bit elementspassing %qT to argument %d of %qE, which expects a pointer typepassing %qT to argument %d of %qE, which expects a scalar elementpassing %qT to argument %d of %qE, which expects a scalar integerpassing %qT to argument %d of %qE, which expects a scalar pointerpassing %qT to argument %d of %qE, which expects a single MVE vector rather than a tuplepassing %qT to argument %d of %qE, which expects a single SVE vector rather than a tuplepassing %qT to argument %d of %qE, which expects a vector of %d-bit elementspassing %qT to argument %d of %qE, which expects a vector of %d-bit integerspassing %qT to argument %d of %qE, which expects a vector of 32-bit or 64-bit elementspassing %qT to argument %d of %qE, which expects a vector of 32-bit or 64-bit integerspassing %qT to argument %d of %qE, which expects a vector of integerspassing %qT to argument %d of %qE, which expects a vector of signed integerspassing %qT to argument %d of %qE, which expects a vector of unsigned integerspassing %qT to argument %d of %qE, which expects a vector or pointer base addresspassing %qT to argument %d of %qE, which expects a vector or scalar typepassing %qT to argument %d of %qE, which expects an %qs or %qspassing %qT to argument %d of %qE, which expects an MVE tuple typepassing %qT to argument %d of %qE, which expects an MVE vector typepassing %qT to argument %d of %qE, which expects an SVE typepassing %qT to argument %d of %qE, which expects an SVE type rather than a scalar typepassing %qT to argument %d of %qE, which expects the data to be 16 bits or widerpassing %qT to argument %d of %qE, which expects vectors of %d-bit elementspassing %qT to argument %d of %qE, which expects vectors of signed integerspassing %qT to argument %d of %qE, which expects vectors of unsigned integerspassing %qT to argument %d of %qE, which when loading %qT expects a vector of %d-bit integerspassing %qT to argument %d of %qE, which when storing %qT expects a vector of %d-bit integerspassing %wd to argument %d of %qE, which expects %wd, %wd, %wd or %wdpassing %wd to argument %d of %qE, which expects a valid %qT valuepassing %wd to argument %d of %qE, which expects a value in the range [%wd, %wd]passing %wd to argument %d of %qE, which expects a value in the range [%wd, %wd] or %wdpassing %wd to argument %d of %qE, which expects a value multiple of %wd in the range [%wd, %wd]passing %wd to argument %d of %qE, which expects either %wd or %wdpassing %wd to argument %d of %qE, which expects the value %wdpassing NULL to non-pointer argument %P of %qDpassing argument %d of %qE as %<float%> rather than %<double%> due to prototypepassing argument %d of %qE as %qT rather than %qT due to prototypepassing argument %d of %qE as complex rather than floating due to prototypepassing argument %d of %qE as complex rather than integer due to prototypepassing argument %d of %qE as floating rather than complex due to prototypepassing argument %d of %qE as floating rather than integer due to prototypepassing argument %d of %qE as integer rather than complex due to prototypepassing argument %d of %qE as integer rather than floating due to prototypepassing argument %d of %qE as signed due to prototypepassing argument %d of %qE as unsigned due to prototypepassing argument %d of %qE discards %qs qualifier from pointer target typepassing argument %d of %qE discards %qv qualifier from pointer target typepassing argument %d of %qE from distinct Objective-C typepassing argument %d of %qE from incompatible pointer typepassing argument %d of %qE from incompatible scalar storage orderpassing argument %d of %qE from pointer to non-enclosed address spacepassing argument %d of %qE makes %q#v qualified function pointer from unqualifiedpassing argument %d of %qE makes integer from pointer without a castpassing argument %d of %qE makes pointer from integer without a castpassing argument %d of %qE with different width due to prototypepassing argument %i to %qs-qualified parameter aliases with argument %Zpassing argument %i to %qs-qualified parameter aliases with arguments %Zpassing arguments to ellipsis of inherited constructor %qDpassing mismatched integer types %qT and %qT to arguments %d and %d of %qEpassing mismatched tuple types %qT and %qT to arguments %d and %d of %qEpassing objects of non-trivially-copyable type %q#T through %<...%> is conditionally supportedpassing single vector %qT to argument %d of %qE after passing tuple %qT to argument %dpassing too large argument on stackpassing tuple %qT to argument %d of %qE after passing single vector %qT to argument %dpatchable function entry %wu exceeds size %wupath coverage omitted
  path: paths covered %u of %zu
  paths exceeding limit, giving up path coveragepedwarnpedwarn: perhaps %<#include <coroutine>%> is missingperhaps insert a line break after %<import%>, or other disambiguation, to prevent this being considered a module control-lineperhaps insert a line break after %qs, or other disambiguation, to prevent this being considered a module control-lineperhaps you need explicit template arguments in your nested-name-specifierperhaps you want to explicitly add %<%T::%>permerrorpermerror: placeholder constraints not satisfiedplaceholder type not allowed in this contextplacement new constructing an array of objects of type %qT and size %qwu in a region of type %qT and size %qwiplacement new constructing an array of objects of type %qT and size %qwu in a region of type %qT and size at most %qwuplacement new constructing an object of type %<%T [%wu]%> and size %qwu in a region of type %qT and size %qwiplacement new constructing an object of type %<%T [%wu]%> and size %qwu in a region of type %qT and size at most %qwuplacement new constructing an object of type %qT and size %qwu in a region of type %qT and size %qwiplacement new constructing an object of type %qT and size %qwu in a region of type %qT and size at most %qwuplease use an explicit cpu name; valid cpu names are: %splugin %qs was specified with different paths: %qs and %qsplugin %s is not licensed under a GPL-compatible license
  %splugin %s is not licensed under a GPL-compatible license: %splugin %s registered a null callback function for event %splugin %s should be specified before %<-fplugin-arg-%s%> in the command lineplugin cannot register a missing passplugin cannot register an unnamed passplugin cannot register pass %qs without reference pass nameplugin support is disabled; configure with %<--enable-plugin%>pointed-to object declared herepointerpointer %qE may be used after %qDpointer %qE used after %qDpointer argumentpointer arithmetic for garbage-collected objects not allowedpointer assignmentpointer may be used after %qDpointer member %q+D declared herepointer of type %<void *%> used in arithmeticpointer of type %<void *%> used in subtractionpointer offset from symbol may be incorrectpointer or allocatable resultpointer target types incompatible in C++pointer targeting address space %qs must be const in %qTpointer targeting address space %qs must be const in %s %q+Dpointer targets in assignment from %qT to %qT differ in signednesspointer targets in initialization of %qT from %qT differ in signednesspointer targets in passing argument %d of %qE differ in signednesspointer targets in returning %qT from a function with return type %qT differ in signednesspointer to %qD is not a constant expressionpointer to a function used in arithmeticpointer to a function used in subtractionpointer to array loses qualifier in conditional expressionpointer to array loses qualifier in conditional expression in ISO C before C23pointer to data member type %qT can only be invoked with one argumentpointer to interface type has no methodspointer to member conversion via virtual base %qTpointer to member function type %qT must be invoked with at least one argumentpointer to member type %qT incompatible with object type %qTpointer type mismatch in conditional expressionpointer used after %qDpointer value used where a complex was expectedpointer value used where a floating-point was expectedpointer-to-member function %qE cannot be called without an object; consider using %<.*%> or %<->*%>pointer-to-member mapping %qE not supportedpointer-to-member-function type %qT requires an lvaluepointer-to-member-function type %qT requires an lvalue before C++20pointer-to-member-function type %qT requires an rvaluepointer/integer type mismatch in conditional expressionpointers are not permitted as case valuespointers to %<__regio_symbol%> address space are prohibitedpointers to disjoint address spaces used in conditional expressionpolymorphic argumentposition plus size exceeds size of referenced object in %qsposition-independent code requires %qspositional initialization of field in %<struct%> declared with %<designated_init%> attributepositive width required at %Lpossible fix: dereference with %qspossible fix: take the address with %qspossible problem detected in invocation of %<operator delete%>possible problem detected in invocation of operator %<delete []%>possibly dangling reference to a temporarypost-increment address is not a registerpost-module-declaration imports must be contiguouspost-module-declaration imports must not be from header inclusionpost-module-declaration imports must not be include-translatedpostconditions cannot be statementspostfix %qD must have %<int%> as its argumentpostfix %qD must have %<int%> as its second argumentpostfix %qD should return %qTpotential null pointer dereferencepower9 target option is incompatible with %<%s=<xxx>%> for <xxx> less than power9pragma or attribute %<target("%s")%> does not accept an argumentpragma or attribute %<target("%s")%> does not allow a negated formpragma or attribute %<target("%s")%> is not validpragma or attribute %<target("%s=%s")%> is not validpragma(%s) not implementedpre-decrement address is not a registerpre-increment address is not a registerprecisionprecision in printf formatpreconditions cannot be statementspredeclared arithmetic type %qT in %<#pragma omp declare reduction%>predeclared arithmetic type in %<#pragma omp declare reduction%>predicated Thumb instructionpredicated instruction in conditional sequenceprefix %qD should return %qTprefix attributes are ignored before %<@%D%>prefix attributes are ignored for implementationsprefix attributes are ignored for methodspreprocess <source_filter> before compilingprev_bb of %d should be %d, not %dprevious %<#pragma omp declare reduction%>previous %<pragma omp declare reduction%> declarationprevious contract hereprevious declarationprevious declaration %q#Dprevious declaration %qDprevious declaration %qD used %d template parameterprevious declaration %qD used %d template parametersprevious declaration as %q#Dprevious declaration hereprevious declaration of %<%c%E%>previous declaration of %<%c%E%> as %<@optional%>previous declaration of %<%c%E%> as %<@required%>previous declaration of %<%c%s%>previous declaration of %q#Dprevious declaration of %q+Dprevious declaration of %q+D with type %qTprevious declaration of %qDprevious declaration of %qD hereprevious declaration of %qEprevious declaration with %qL linkageprevious definition hereprevious definition of %q#Tprevious definition of %q+D with type %qTprevious definition of %qD hereprevious implicit declaration of %q+D with type %qTprevious labelprevious mangling %q#Dprevious non-prototype definition hereprevious specificationprevious specification in %q#D herepreviously declared as %spreviously declared as %s with %u unspecified variable boundpreviously declared as %s with %u unspecified variable boundspreviously declared as %s with %u variable boundpreviously declared as %s with %u variable boundspreviously declared as %s with bound %qspreviously declared as %s with bound argument %Epreviously declared as a pointer %spreviously declared as a variable length array %spreviously declared as an array %spreviously declared as an ordinary array %spreviously declared herepreviously declared here without exportingpreviously declared in global modulepreviously declared in module %qspreviously defined herepreviously defined here as %spreviously used hereprimary template %qDprimary template hereprivate member %q#D in anonymous unionprivate module fragmentprivate module fragment only permitted in purview of module interface or partitionprobability %qE is outside the range [0.0, 1.0]probability %qE must be constant floating-point expressionprobability of edge %d->%d not initializedprobability of edge from entry block not initializedprobably missing a comma or an operator beforeproblem with building target image for %sproduct %<%E * %E%> of arguments %i and %i exceeds %<SIZE_MAX%>product %<%E * %E%> of arguments %i and %i exceeds maximum object size %Eprofile data for function %u is corruptedprofile for function %qD not found in profile dataprofiler support for VxWorksprofiling %<-mcmodel=large%> with PIC is not supportedprofiling is not yet implemented for this architectureprofiling not supported with -mgprograms: %s
--- 2129,2136 ----
  invalid argument given to %<-mharden-sls=%>invalid argument in option %qsinvalid argument of %qE attributeinvalid argument of %qs attributeinvalid argument of SQRT at %Linvalid argument to %qDinvalid argument to built-in functioninvalid argument to built-in function %sinvalid argument to gimple callinvalid argumentsinvalid arguments for %<-falign-%s%> option: %qsinvalid arguments for %<-fpatchable-function-entry%>invalid array assignmentinvalid base %qE for SSA nameinvalid base-class specificationinvalid block indexinvalid branch to/from %s structured blockinvalid built-in function at expansioninvalid call to non-functioninvalid calls_comdat_local flaginvalid case label in switch statementinvalid case range in switch statementinvalid cast from type %qT to type %qTinvalid cast of a prvalue expression of type %qT to type %qTinvalid cast to abstract class type %qTinvalid cast to function type %qTinvalid cc output constraint: %qsinvalid class name in declaration of %qDinvalid clique in %qsinvalid combination of multiple type-specifiersinvalid comparison code in gimple condinvalid comparison of generated arrayinvalid comparison of generated structinvalid comparison of nil with nilinvalid comparison of non-comparable arrayinvalid comparison of non-comparable structinvalid comparison of non-comparable typeinvalid comparison of non-ordered typeinvalid comparison operator for 'E' output modifierinvalid const_double operandinvalid constantinvalid constant - try using an output modifierinvalid constant for output modifier '%c'invalid constant in %<#pragma %s%>invalid constant in %<#pragma pack%> - ignoredinvalid constant vector for output modifier '%c'invalid constrained type parameterinvalid constraintsinvalid constraints for operandinvalid constructor; you probably meant %<%T (const %T&)%>invalid control register %d for mvtc; using %<psw%>invalid controlling predicateinvalid conversion from %<__fpreg%>invalid conversion from %qH to %qIinvalid conversion from type %<_Float16%> without option %<-msse2%>invalid conversion from type %<__bf16%> without option %<-msse2%>invalid conversion from type %<__vector_pair%>invalid conversion from type %<__vector_quad%>invalid conversion from type %<bfloat16_t%>invalid conversion from type %<mfloat8_t%>invalid conversion in gimple callinvalid conversion in return statementinvalid conversion to %<__fpreg%>invalid conversion to type %<_Float16%> without option %<-msse2%>invalid conversion to type %<__bf16%> without option %<-msse2%>invalid conversion to type %<__vector_pair%>invalid conversion to type %<__vector_quad%>invalid conversion to type %<bfloat16_t%>invalid conversion to type %<mfloat8_t%>invalid conversion to type %qT from type %qTinvalid covariant return type for %q#Dinvalid covariant return type for %q+#Dinvalid cpu %qs for %s%qs%sinvalid declaration of %<%T::%E%>invalid declaration of member template in local classinvalid declaratorinvalid default argument for a template template parameterinvalid default case label in switch statementinvalid definition of qualified type %qTinvalid depend kindinvalid depend kind in omp %<ordered%> %<depend%>invalid dist_schedule kindinvalid doacross kindinvalid element index %qE to %<__builtin_shufflevector%>invalid element type for attribute %qsinvalid embedcfg: Files entry is not a stringinvalid embedcfg: Files is not a JSON objectinvalid embedcfg: Patterns entry is not an arrayinvalid embedcfg: Patterns is not a JSON objectinvalid embedcfg: duplicate Patterns entryinvalid embedcfg: missing Filesinvalid embedcfg: missing Patternsinvalid embedcfg: not a JSON objectinvalid encoding prefix in literal operatorinvalid entry to %s structured blockinvalid exit from %s structured blockinvalid exit from OpenMP structured blockinvalid explicit specializationinvalid expression - try using an output modifierinvalid expression as operandinvalid expression for min lvalueinvalid expression for output modifier '%c'invalid expression for static array dimension: %sinvalid expression type for %<#pragma omp atomic%>invalid failure memory model %qs for %qDinvalid feature modifier %qs in %<-march=%s%>invalid feature modifier %qs in %<-mcpu=%s%>invalid feature modifier %qs of value %qs in %<target()%> pragma or attributeinvalid feature modifier %qs of value %qs in %<target_version%> attributeinvalid feature modifier %s of value %qs in %<target()%> pragma or attributeinvalid fn spec attribute "%s"invalid fn spec attribute "%s" arg %iinvalid fnsummary in LTO streaminvalid form of %<#pragma omp atomic compare%>invalid form of %<#pragma omp atomic%>invalid form of %<pragma omp atomic compare%>invalid format for %<sve_width%>invalid format of %sinvalid forth argument to %<__builtin_ia32_prefetch%>; using zeroinvalid fp constantinvalid fpu for target attribute or pragma %qsinvalid function in gimple callinvalid hard register usage between earlyclobber operand and input operandinvalid hard register usage between output operand and matching constraint operandinvalid hard register usage between output operandsinvalid header name %qsinvalid hex digitinvalid id value for exception attributeinvalid id value for interrupt attributeinvalid id value for interrupt/exception attributeinvalid id value for reset attributeinvalid in-class initialization of static data member of non-integral type %qTinvalid increment expressioninvalid initial value for member %qEinvalid initialization of non-const reference of type %qH from an rvalue of type %qIinvalid initialization of reference of type %qH from expression of type %qIinvalid initializerinvalid initializer clauseinvalid initializer for %q#Dinvalid initializer for array member %q#Dinvalid initializer for member function %qDinvalid initializer for structured binding declarationinvalid insn:invalid iterating variable in fast enumerationinvalid jump function in LTO streaminvalid labels in gimple condinvalid left hand side of assignmentinvalid line in the resolution fileinvalid linkage-specificationinvalid location for %<pragma %s%>, ignoredinvalid lvalue in %<asm%> output %dinvalid map kindinvalid maskinvalid mask type in %qsinvalid member template declaration %qDinvalid memory model %qs for %qDinvalid memory model %wi for %qDinvalid memory model argument %d of %qEinvalid module name %qsinvalid name %qs in %<target("arch=")%> pragma or attributeinvalid name %qs in %<target("cpu=")%> pragma or attributeinvalid name %qs in %<target("tune=")%> pragma or attributeinvalid new-expression of abstract class type %qTinvalid nmi function for reset attributeinvalid non-type template argumentinvalid non-vector operands to %qsinvalid number in %<-mrgf-banked-regs=%s%> valid values are 0, 4, 8, 16, or 32invalid number of arguments for %<-falign-%s%> option: %qsinvalid number of operands for insn %s, expected %d but got %d.
  invalid offload table in %sinvalid offset operand in %qsinvalid operandinvalid operand %%xn codeinvalid operand addressinvalid operand code '%c'invalid operand for %%N codeinvalid operand for %%N or %%S codeinvalid operand for %%s codeinvalid operand for '%%%c'invalid operand for 'A' modifierinvalid operand for 'D' modifierinvalid operand for 'H' modifierinvalid operand for 'O' modifierinvalid operand for 'T' modifierinvalid operand for 'b' modifierinvalid operand for 'e' modifierinvalid operand for 'm' modifierinvalid operand for 'o' modifierinvalid operand for 'p' modifierinvalid operand for 'z' modifierinvalid operand for code '%c'invalid operand in %qsinvalid operand in return statementinvalid operand in unary operationinvalid operand modifier letterinvalid operand output codeinvalid operand prefixinvalid operand prefix '%%%c'invalid operand size for operand code '%c'invalid operand size for operand code 'O'invalid operand size for operand code 'z'invalid operand to %%H/%%L codeinvalid operand to %%M codeinvalid operand to %%N codeinvalid operand to %%O codeinvalid operand to %%Rinvalid operand to %%R codeinvalid operand to %%Sinvalid operand to %%T/%%B codeinvalid operand to %%U codeinvalid operand to %%V codeinvalid operand to %%Z codeinvalid operand to %%p codeinvalid operand to %%s codeinvalid operand to %%z codeinvalid operand to switch statementinvalid operand type %qT for %qsinvalid operand type used with operand code '%c'invalid operands in binary operationinvalid operands in gimple comparisoninvalid operands in ternary operationinvalid operands of types %qT and %qT to binary %qOinvalid operands to %%c codeinvalid operands to %qsinvalid operands to binary %s (have %e and %e)invalid operationinvalid operation (%s)invalid operation on %<__fpreg%>invalid operator for %<#pragma omp atomic%>invalid order in asm node %iinvalid parameter combination for AltiVec intrinsic %qsinvalid parameter combination for intrinsic %qsinvalid parameter type %qTinvalid pass positioning operationinvalid pointer mode %qsinvalid pointer to bit-field %qDinvalid position or size in %qsinvalid position or size operand to %qsinvalid private reduction on %qEinvalid proc_bind kindinvalid prototype for '%s'invalid punctuation %qc in constraintinvalid pure const state for functioninvalid pure specifier (only %<= 0%> is allowed)invalid qualifiers for %<constexpr%> objectinvalid qualifiers for field of %<constexpr%> objectinvalid qualifiers on non-member function typeinvalid qualifying scope in pseudo-destructor nameinvalid receive on send-only channelinvalid receiver type %qsinvalid reduction-identifierinvalid reference for 'J' output modifierinvalid register name for %q+Dinvalid register number for 'N' modifierinvalid regular expression %qs in %qsinvalid relocationinvalid resolution in the resolution fileinvalid return type %qT of %<constexpr%> function %q+Dinvalid rtl sharing found in the insninvalid schedule kindinvalid second argument to %<__builtin_ia32_prefetch%>; using zeroinvalid second argument to %<__builtin_prefetch%>; using zeroinvalid send on receive-only channelinvalid setter, it must have one argumentinvalid shift operandinvalid slice of mapinvalid source block specificationinvalid static chain in gimple callinvalid storage class for function %qEinvalid system register name %qsinvalid system register name providedinvalid target memregs value %<%d%>invalid template declaration of %qDinvalid template non-type parameterinvalid template-argument-listinvalid template-idinvalid third argumentinvalid third argument to %<__builtin_ia32_prefetch%>; using zeroinvalid third argument to %<__builtin_prefetch%>; using zeroinvalid type %<void%> for %<new%>invalid type %qT as initializer for a vector of type %qTinvalid type %qT declared %<friend%>invalid type argument (have %qT)invalid type argument of %<->%> (have %qT)invalid type argument of %<->*%> (have %qT)invalid type argument of array indexing (have %qT)invalid type argument of implicit conversion (have %qT)invalid type argument of unary %<*%> (have %qT)invalid type for %<asm%> flag outputinvalid type for _Literal with constructorinvalid type for cc output constraintinvalid type for instance variableinvalid type for iteration variable %qEinvalid type for make functioninvalid type for parameter %d of %<constexpr%> function %q+#Dinvalid type for propertyinvalid type of %<__MEM%> operandinvalid type of argument %u of type-generic functioninvalid type-generic return type for argument %u of %<__builtin_tgmath%>invalid type-generic type for argument %u of argument %u of %<__builtin_tgmath%>invalid types %<%T[%T]%> for array subscriptinvalid types for %qsinvalid types in address space conversioninvalid types in conversion to floating-pointinvalid types in conversion to integerinvalid types in fixed-point conversioninvalid types in nop conversioninvalid use of %%d, %%x, or %%Xinvalid use of %<::%>invalid use of %<__builtin_va_arg_pack ()%>invalid use of %<__builtin_va_arg_pack_len ()%>invalid use of %<auto%> in conversion operatorinvalid use of %<auto%> in default template argumentinvalid use of %<auto%> in exception-specificationinvalid use of %<auto%> in template argumentinvalid use of %<const_cast%> with type %qT, which is a pointer or reference to a function typeinvalid use of %<const_cast%> with type %qT, which is not a pointer, reference, nor a pointer-to-data-member typeinvalid use of %<decltype(auto)%>invalid use of %<extern%> variable %qD in %<#pragma acc declare%>invalid use of %<global%> variable %qD in %<#pragma acc declare%>invalid use of %<restrict%>invalid use of %<this%> after it is validinvalid use of %<this%> at top levelinvalid use of %<this%> before it is validinvalid use of %<this%> in non-member functioninvalid use of %q#T with a flexible array member in %q#Tinvalid use of %q#T with a zero-size array in %q#Dinvalid use of %qDinvalid use of %qD in linkage specificationinvalid use of %qE to form a pointer-to-member-functioninvalid use of %qTinvalid use of '%%%c'invalid use of MMA operand of type %qs as a function parameterinvalid use of MMA type %qs as a function return valueinvalid use of a pointer to an incomplete type in pointer arithmeticinvalid use of array indexing on pointer to memberinvalid use of array with unspecified boundsinvalid use of asm flag outputinvalid use of attribute %<fallthrough%>invalid use of attributes in empty declarationinvalid use of brace-enclosed initializer listinvalid use of concept-name %qDinvalid use of constrained %<auto%> typeinvalid use of constructor as a templateinvalid use of contract role for explicit semanticinvalid use of cv-qualified type %qT in parameter declarationinvalid use of dependent type %qTinvalid use of destructor %qD as a typeinvalid use of destructor %qE as a typeinvalid use of flexible array memberinvalid use of implicit conversion on pointer to memberinvalid use of incomplete type %q#Tinvalid use of incomplete typedef %qTinvalid use of member %qD (did you forget the %<&%> ?)invalid use of member %qD in constructor %<pre%> contractinvalid use of member %qD in destructor %<post%> contractinvalid use of member %qD in static member functioninvalid use of member function %qD (did you forget the %<()%> ?)invalid use of method value as argument of Offsetofinvalid use of non-lvalue arrayinvalid use of non-static data member %qDinvalid use of non-static data member %qEinvalid use of non-static member function %qDinvalid use of non-static member function of type %qTinvalid use of pack expansion %qTinvalid use of pack expansion expressioninvalid use of placeholder %qTinvalid use of pointers to arrays with different qualifiers in ISO C before C23invalid use of qualified-name %<%D::%D%>invalid use of qualified-name %<%T::%D%>invalid use of qualified-name %<::%D%>invalid use of register '%s'invalid use of structure with flexible array memberinvalid use of template template parameter %qTinvalid use of template type parameter %qTinvalid use of template-id %qD in declaration of primary templateinvalid use of template-name %qE without an argument listinvalid use of typeinvalid use of type %<void%> in parameter declarationinvalid use of type %qT as a default value for a template template-parameterinvalid use of unary %<*%> on pointer to memberinvalid use of undefined type %qTinvalid use of void expressioninvalid use of volatile lvalue inside %<transaction_safe%> functioninvalid use of volatile lvalue inside transactioninvalid user-defined conversion from %qH to %qIinvalid value-initialization of reference typeinvalid vector comparison resulting typeinvalid vector constantinvalid vector immediateinvalid vector operandinvalid vector type for attribute %qEinvalid vector types in nop conversioninvalid version number %qsinvalid warm function for reset attributeinvalid zero extractio_kind_name(): bad I/O-kindipa inline summary is missing in input fileipa reference summary is missing in ltrans unitis hidden by %qsis_c_interoperable(): gfc_simplify_expr failedit is defined as a pointer in different address space in another translation unitit is defined as a pointer to different type in another translation unitit must be a pointer-to-member of the form %<&X::Y%>it must be the address of a function with external linkageit must be the name of a function with external linkageit was later defined hereitem in READiterating variable in fast enumeration is not an objectiteration %s invokes undefined behavioriteration variable %qD should not be firstprivateiteration variable %qD should not be reductioniteration variable %qE is predetermined lineariteration variable %qE should be privateiteration variable %qE should not be firstprivateiteration variable %qE should not be lineariteration variable %qE should not be reductioniterator %qD has %<_Atomic%> qualified typeiterator %qD has const qualified typeiterator %qD has neither integral nor pointer typeiterator %qD has zero stepiterator step with non-integral typeiterator variableits dest_idx should be %d, not %dits value can vary between compiler versions or with different %<-mtune%> or %<-mcpu%> flagsivar %qs used by %<@synthesize%> declaration must be an existing ivariwmmxt abi requires an iwmmxt capable cpuiwmmxt requires an AAPCS compatible ABI for proper operationjump into scope of identifier with variably modified typejump into statement expressionjump skips OpenMP %<allocate%> allocationjump skips variable initializationjump to case labeljump to label %qDjunk at end of %<#pragma %s%>junk at end of %<#pragma ADDRESS%>junk at end of %<#pragma CTABLE_ENTRY%>junk at end of %<#pragma GCC memregs%> [0-16]junk at end of %<#pragma GCC pop_options%>junk at end of %<#pragma GCC push_options%>junk at end of %<#pragma GCC visibility%>junk at end of %<#pragma __nostandard%>junk at end of %<#pragma __standard%>junk at end of %<#pragma align%>junk at end of %<#pragma fini%>junk at end of %<#pragma init%>junk at end of %<#pragma longcall%>junk at end of %<#pragma message%>junk at end of %<#pragma ms_struct%>junk at end of %<#pragma options%>junk at end of %<#pragma pack%>junk at end of %<#pragma redefine_extname%>junk at end of %<#pragma reset_options%>junk at end of %<#pragma unused%>junk at end of %<#pragma weak%>junk at end of %<#pragma%> ghs endsdajunk at end of %<#pragma%> ghs endtdajunk at end of %<#pragma%> ghs endzdajunk at end of %<#pragma%> ghs interruptjunk at end of %<#pragma%> ghs sectionjunk at end of %<#pragma%> ghs startsdajunk at end of %<#pragma%> ghs starttdajunk at end of %<#pragma%> ghs startzdajunk at end of '#pragma extern_model'keyword %<export%> is deprecated, and is ignoredkeyword %<export%> is enabled with %<-fmodules%>keyword %<export%> not implemented, and will be ignoredkeyword %<template%> not allowed in class-head-namekeyword %<template%> not allowed in declarator-idkeyword %<typename%> not allowed in this context (a qualified member initializer is implicitly a type)keyword %<typename%> not allowed in this context (the base class is implicitly a type)keyword %<typename%> not allowed outside of templateslabel %q+D declared but not definedlabel %q+D defined but not usedlabel %q+D used but not definedlabel %qD defined herelabel %qD has incorrect context in bb %dlabel %qD in the middle of basic block %dlabel %qD to block does not match in bb %dlabel %qE referenced outside of any functionlabel %s referenced outside of any functionlabel at end of compound statementlabel at end of compound statement only available with %<-std=c++23%> or %<-std=gnu++23%>label context is not the current function declarationlabel definition in %<constexpr%> function only available with %<-std=c++23%> or %<-std=gnu++23%>label definition in %<constexpr%> function only available with %<-std=c++2b%> or %<-std=gnu++2b%>lambda capture initializers only available with %<-std=c++14%> or %<-std=gnu++14%>lambda capture of %qE is not a constant expressionlambda declared herelambda expressions only available with %<-std=c++11%> or %<-std=gnu++11%>lambda in local class %q+T cannot capture variables from the enclosing contextlambda parameter %qD previously declared as a capturelambda templates are only available with %<-std=c++20%> or %<-std=gnu++20%>lambda-expression in template parameter typelambda-expression in template-argument only available with %<-std=c++20%> or %<-std=gnu++20%>lambda-expression in unevaluated context only available with %<-std=c++20%> or %<-std=gnu++20%>lambda-expression is not a constant expression before C++17lambdas are implicitly %<constexpr%> only in C++17 and laterlane %wd out of range %wd - %wdlane index must be a constant immediatelanguage %s not recognizedlanguage dialect differs %qs, expected %qslanguage string %<"%E"%> not recognizedlarge fixed-point constant implicitly truncated to fixed-point typelarge integer implicitly truncated to unsigned typelarge return values not supported with %<-mabi=ti%> optionlast argument must be an immediatelast argument of %qD is not integer constant between 0 and 3last register name %s must be an odd registerlayout of %qs member of type %qT changes in %qsld returned %d exit statusleft argument must be a sliceleft hand operand of %<->*%> must be a pointer to class, but is a pointer to member of type %qTleft operand of comma operator cannot resolve address of overloaded functionleft operand of comma operator has no effectleft operand of comma operator is a reference, not call, to function %qEleft operand of shift expression %q+E is negativeleft precisionleft precision in strfmon formatleft shift count >= width of typeleft shift count >= width of vector elementleft shift count is negativeleft shift of negative valueleft-hand operand of comma expression has no effectleft-hand side of assignment might be a candidate for a format attributelen larger than caplength %qE above array section size in %qs clauselength %qE of array section does not have integral typelength computed herelength modifierlength modifier in printf formatlength modifier in scanf formatlength modifier in strfmon formatlength required when allocating a sliceletter %c was found & insn was not CONST_INTlibraries: %s
  library function %q#D redeclared as non-function %q#Dlibrary lib%s not foundlimit is %wu bytes, but argument is %slimit is %wu bytes, but argument may be as large as %slinear clause applied to non-integral non-pointer variable with %qT typelinear clause applied to non-integral non-pointer variable with type %qTlinear clause with %qs modifier applied to non-reference variable with %qT typelinear step expression must be integrallink against the pthread library (default on)linker hardening options not enabled by %<-fhardened%> because other link options were specified on the command linelist-initializer for non-class type must not be parenthesizedlisting the stack pointer register %qs in a clobber list is deprecatedliteral operator %q#D conflicts with raw literal operatorliteral operator suffixes not preceded by %<_%> are reserved for future standardizationliteral operator template %qD has invalid parameter list; expected non-type template parameter pack %<<char...>%>literal operator template %qD has invalid parameter list; expected non-type template parameter pack %<<char...>%> or single non-type parameter of class typeliteral operator with C linkagelive patching (with %qs) is not supported with LTOlo_sum not of registerlocal class %q#T shall not have static data member %q#Dlocal declaration from a different functionlocal declaration of %qE hides instance variablelocal label %qE conflicts with existing labellocal member %q#D declared herelocal method %q#D declared herelocal symbols must be definedlocal variable %qD may not appear in this contextlocal variable memory requirements exceed capacitylocation of OpenACC %<kernels%>location of the previous clause in the same loop nestlocation of the previous reduction for %qElocation references block not in block treelogic error: MOVE %s %s invalid type:logic error: missing inode for %slogical %<and%> applied to non-boolean constantlogical %<and%> of equal expressionslogical %<and%> of mutually exclusive tests is always falselogical %<or%> applied to non-boolean constantlogical %<or%> of collectively exhaustive tests is always truelogical %<or%> of equal expressionslogical not is only applied to the left hand side of comparisonlogical_to_bitwise(): Bad intrinsiclookup of %qT in %qT is ambiguousloop %d%'s header does not belong directly to itloop %d%'s header does not have exactly 2 entriesloop %d%'s header is not a loop headerloop %d%'s latch does not belong directly to itloop %d%'s latch does not have an edge to its headerloop %d%'s latch does not have exactly 1 successorloop %d%'s latch does not have header as successorloop %d%'s latch is marked as part of irreducible regionloop %d%'s latch is not dominated by its headerloop %d%'s number of iterations %qE references the released SSA name %qEloop name defined hereloop nest expectedloop not permitted in intervening code in OpenMP loop bodyloop uses OpenACC parallelism disallowed by containing routineloop variable %qD creates a copy from type %qTloop variable %qD of type %qT binds to a temporary constructed from type %qTloop verification on loop tree that needs fixuploop with header %d marked for removalloop with header %d not in loop treelooser exception specification on overriding virtual function %q+#Flow bound %qE above array section size in %qs clauselow bound %qE of array section does not have integral typelow bound for the array is outside the ztype limitslow bound for the subrange has overflowedlower value in case label range less than minimum value for typelseek failed while reading export datalvalue required as decrement operandlvalue required as increment operandlvalue required as left operand of assignmentlvalue required as unary %<&%> operandlvalue required in %<asm%> statementlvalue-to-rvalue conversion of a volatile lvalue %qE with type %qTmachine description does not have a sibcall_epilogue instruction patternmachine independent builtin code out of rangemacro definitions of %qE corruptedmacro expands to multiple statementsmacro name missing after %qsmain variant is not definedmake_generic(): Cannot find generic symbol %qsmaking multiple clones of %qDmalformed %<#pragma %s%>, ignoredmalformed %<#pragma %s%>, ignoringmalformed %<#pragma ADDRESS%> variable addressmalformed %<#pragma CTABLE_ENTRY%> variable addressmalformed %<#pragma GCC pch_preprocess%>malformed %<#pragma GCC visibility push%>malformed %<#pragma __extern_prefix%>, ignoringmalformed %<#pragma align%>malformed %<#pragma align%>, ignoringmalformed %<#pragma builtin%>malformed %<#pragma extern_model%>, ignoringmalformed %<#pragma fini%>malformed %<#pragma fini%>, ignoringmalformed %<#pragma init%>malformed %<#pragma init%>, ignoringmalformed %<#pragma member_alignment%>malformed %<#pragma member_alignment%>, ignoringmalformed %<#pragma message%>, ignoredmalformed %<#pragma ms_struct {on|off|reset}%>, ignoringmalformed %<#pragma ms_struct%>, ignoringmalformed %<#pragma options align={mac68k|power|reset}%>, ignoringmalformed %<#pragma options%>, ignoringmalformed %<#pragma pack%> - ignoredmalformed %<#pragma pack(pop[, id])%> - ignoredmalformed %<#pragma pack(push[, id][, <n>])%> - ignoredmalformed %<#pragma redefine_extname%>, ignoredmalformed %<#pragma weak%>, ignoredmalformed %<#pragma%> ghs sectionmalformed %<COLLECT_GCC_OPTIONS%>malformed %<target("%s")%> attributemalformed %<target("%s")%> pragma or attributemalformed %<target()%> attributemalformed %<target()%> pragma or attributemalformed option %<-fplugin-arg-%s%>: missing %<-<key>[=<value>]%>malformed ptx filemalformed spec function argumentsmalformed spec function namemalloc attribute should be used for a function that returns a pointermangled name for %qD will change in C++17 because the exception specification is part of a function typemangling %<typeof%>, use %<decltype%> insteadmangling %Cmangling of %q#D as %qE conflicts with a previous manglemangling type pack indexmap can only be compared to nilmap composite literal must have keysmapper died by signal %smapper exit status %dmapping field %qE of variable length structuremask must be an immediatematch_attr_spec(): Bad attributematch_level_4(): Bad operatormatch_string_constant(): Delimiter not foundmatching constraint does not allow a registermatching constraint not valid in output operandmatching constraint outside of a functionmatching constraint references invalid operand numbermaximal number of LTO partitions streamed in parallel.maximum limit of %d namespaces searched for %qEmaximum nesting depth exceeded: %imaximum number of LRA assignment passes is achieved (%d)maximum number of generated reload insns per insn achieved (%d)may access %E byte in a region of size %Emay access %E bytes in a region of size %Emay access %E or more bytes in a region of size %Emay access between %E and %E bytes in a region of size %Emay not use both -EB and -ELmay not use both -m32 and -m64may only omit types within composite literals of slice, array, or map typemay read %E byte from a region of size %Emay read %E bytes from a region of size %Emay read %E or more bytes from a region of size %Emay read between %E and %E bytes from a region of size %Emay write %E byte into a region of size %Emay write %E bytes into a region of size %Emay write %E or more bytes into a region of size %Emay write between %E and %E bytes into a region of size %Emd5_stream failedmduc registers only saved for G13 targetmedia functions are not available unless %<-mmedia%> is usedmem-initializer for %qD follows constructor delegationmember %q+#D with constructor not allowed in anonymous aggregatemember %q+#D with constructor not allowed in unionmember %q+#D with copy assignment operator not allowed in anonymous aggregatemember %q+#D with copy assignment operator not allowed in unionmember %q+#D with destructor not allowed in anonymous aggregatemember %q+#D with destructor not allowed in unionmember %q+D cannot be declared as a %<mutable%> referencemember %q+D cannot be declared both %<const%> and %<mutable%>member %qD can be declared both %<virtual%> and %<constexpr%> only in %<-std=c++20%> or %<-std=gnu++20%>member %qD cannot be declared both %<virtual%> and %<static%>member %qD declared as friend before type %qT definedmember %qD in read-only object used as %<asm%> outputmember %qD is uninitialized referencemember %qD is used uninitializedmember %qD must be initialized by mem-initializer in %<constexpr%> constructormember %qD with uninitialized reference fieldsmember functions are implicitly friends of their classmember template %qD may not have virt-specifiersmember variables cannot have RVV type %qTmember variables cannot have SVE type %qTmembers of an explicitly specialized class are defined without a template headermemory allocation failed in vasprintfmemory allocation failed while reading export datamemory input %d is not directly addressablememory layout mismatchmemory reference expected for 'S' output modifiermemory reference or volatile after callmetadirectives cannot be used as variants of a %<metadirective%>method %<%c%E%> declared %<@optional%> and %<@required%> at the same timemethod %qs has an implicit %<this%> argumentmethod %s%s%s is marked go:nointerfacemethod %s%s%s requires a pointer receivermethod argument attributes are not available in Objective-C 1.0method attributes are not available in Objective-C 1.0method attributes cannot be specified in @implementation contextmethod attributes must be specified at the endmethod attributes must be specified at the end onlymethod declaration not in @interface contextmethod declared %qE overriding %qE methodmethod definition for %<%c%E%> not foundmethod definition not in @implementation contextmethod overrides both %<transaction_pure%> and %qE methodsmethod possibly missing a [super dealloc] callmethod type does not match object typemin partition size cannot be greater than max partition sizemio_array_ref(): Unknown array refmips16 function profilingmismatch between declaration %qE size (%wd) and its initializer size (%wd)mismatch in argument %u type of built-in function %qD; expected %qTmismatch in argument %u type of intrinsic function %qD (%qT, should be %qT)mismatch in argument %u type of intrinsic function %qD (%qT, should be %qs)mismatch in bound %Z of argument %u declared as %smismatch in bounds %Z of argument %u declared as %smismatch in call of intrinsic function %qDmismatch in number of arguments for builtin %qF. Expected: %d got %dmismatch in return type of built-in function %qD; expected %qTmismatch in return type of intrinsic function %qD (%qT, should be %qs)mismatched argument pack lengths (%d vs %d)mismatched argument pack lengths while expanding %qEmismatched argument pack lengths while expanding %qTmismatched contract attribute in declarationmismatched contract condition in declarationmismatched declarations during linktime optimizationmismatched operator in fold-expressionmismatching abi tags for %qD with no tagsmismatching abi tags for %qD with tags %qEmismatching comparison operand typesmismatching compiled module interface: had %qs, got %qsmismatching definitionmismatching parensmisplaced %<@%D%> Objective-C++ constructmissing $ operand number in formatmissing %<(%> after %<#pragma GCC visibility push%> - ignoredmissing %<(%> after %<#pragma pack%> - ignoredmissing %<(%> after %<#pragma unused%>, ignoringmissing %<)%> after %<#pragma unused%>, ignoringmissing %<PHI%> defmissing %<big-endian%>, %<little-endian%>, or %<default%> after %<#pragma scalar_storage_order%>missing %<error%>, %<warning%>, %<ignored%>, %<push%>, %<pop%>, or %<ignored_attributes%> after %<#pragma GCC diagnostic%>missing %<target%> attribute for multi-versioned %qDmissing %qs clause when applying %qs to %qD, which has already been marked with an OpenACC 'routine' directivemissing REG_EH_REGION note at the end of bb %imissing additional %<requires%> to start a requires-expressionmissing arch name in %<-march=%s%>missing argument to %<#pragma GCC diagnostic ignored_attributes%>missing argument to %qsmissing attribute name after %<#pragma GCC diagnostic ignored_attributes%>missing barrier after block %imissing braces around initializermissing braces around initializer for %qTmissing callgraph edge for call stmt:missing close brace for named operandmissing close parenmissing collection in fast enumerationmissing controlling predicatemissing cpu name in %<-mcpu=%s%>missing cpu name in %<-mtune=%s%>missing dashmissing definitionmissing device or architecture after %qsmissing direct call for speculation %imissing directory: %smissing edge %i->%imissing feature or flag for %qsmissing filename after %qsmissing fill character at end of strfmon formatmissing format after %qsmissing header namemissing increment expressionmissing indirect call in speculative call sequencemissing initializer for field %qD of %qTmissing initializer for member %qDmissing loop condition in loop with %<GCC ivdep%> pragmamissing loop condition in loop with %<GCC unroll%> pragmamissing makefile target after %qsmissing mappermissing method %s%s%smissing module namemissing name in %<target("arch=")%> pragma or attributemissing name in %<target("cpu=")%> pragma or attributemissing numbermissing open parenmissing operandmissing option after %<#pragma GCC diagnostic%> kindmissing or corrupt object.dmissing origin for a node in a nested listmissing output path after %qsmissing path after %qsmissing primary template attribute %emissing primary template attributes %emissing property attributemissing ref for speculation %imissing required %<target%> and/or %<targetsync%> modifiermissing resolution data for %smissing sentinel in function callmissing template argument list after %qE; for deduction, template placeholder must be followed by a simple declarator-idmissing template argument list after %qE; template placeholder not permitted in parametermissing template argumentsmissing template arguments after %qEmissing terminating %c charactermissing type-name in typedef-declarationmissing value in %<target()%> pragma or attributemissing value in %<target_version%> attributemisspelled term %<%.*s%> in format; use %<%s%s%> insteadmixing OpenMP directives with attribute and pragma syntax on the same declarationmixing OpenMP directives with attribute and pragma syntax on the same statementmixing declarations and function-definitions is forbiddenmixing different types of symbol in same comdat groups is not supportedmode %qs applied to inappropriate typemode size of non-integral result does not match field size of %qsmodification of %qE from outside current evaluation is not a constant expressionmodification of %qE is not a constant expressionmodification of %qE outside its lifetime is not a constant expressionmodification of allocated storage after deallocation is not a constant expressionmodified heremodifier 'N' require register operandmodifier other than %<val%> specified in %<linear%> clause on %<simd%> or %<for%> constructs when using OpenMP 5.2 modifiersmodifier should not be specified in %<linear%> clause on %<simd%> or %<for%> constructs when not using OpenMP 5.2 modifiersmodifying a const object %qE is not allowed in a constant expressionmodule %qs CRC mismatchmodule %qs declared heremodule %qs expected, header module foundmodule %qs foundmodule %qs imported heremodule already declaredmodule already importedmodule contains OpenACC, use %<-fopenacc%> to enablemodule contains OpenMP, use %<-fopenmp%> or %<-fopenmp-simd%> to enablemodule contains OpenMP, use %<-fopenmp%> to enablemodule nature in USE statement at %Cmodule-declaration must be at global scopemodule-declaration not permitted in header-unitmodule-declaration only permitted as first declaration, or ending a global module fragmentmore than %d operands in %<asm%>more than one %<atomic_default_mem_order%> clause in a single compilation unitmore than one %qs clause with %<source%> modifier on an %<ordered%> constructmore than one 'crtl' directivemore than one access specifier in base-specifiermore than one locator in %<depend%> clause on %<depobj%> constructmoving %qE of type %qT to itselfmoving a local object in a return statement prevents copy elisionmoving a temporary object prevents copy elisionmpfr not configured to handle all floating modesmulti-source compilation not implemented for C++multidimensional array must have bounds for all dimensions except the firstmultilib exclusion %qs is invalidmultilib exclusions %qs is invalidmultilib select %qs %qs is invalidmultilib select %qs is invalidmultilib spec %qs is invalidmultiple %<-mcpu=%> options specifiedmultiple %<default%> targets were setmultiple %<step%> modifiersmultiple %qE attributemultiple EH personalities are supported only with assemblers supporting %<.cfi_personality%> directivemultiple OpenMP standalone directives among %<omp::directive%> attributes must be all within the same %<omp::sequence%>multiple cc output constraints not supportedmultiple declarations in range-based %<for%> loopmultiple default labels in one switchmultiple definition of %q#Tmultiple fast interrupt routines seen: %qE and %qEmultiple fields in union %qT initializedmultiple function type attributes specifiedmultiple hot/cold transitions found (bb %i)multiple initializations given for %qDmultiple initializations given for base %qTmultiple inline callersmultiple interrupt attributes not allowedmultiple interrupt attributes to function %qDmultiple iterating variables in fast enumerationmultiple linear modifiersmultiple methods named %<%c%E%> foundmultiple nested types attributes to function %qDmultiple parameters named %qDmultiple prevailing defs for %qEmultiple property %qE methods specified, the latest one will be usedmultiple ref-qualifiersmultiple save register attributes to function %qDmultiple selectors named %<%c%E%> foundmultiple storage classes in declaration of %qsmultiple storage classes in declaration specifiersmultiple types in one declarationmultiple virtual PHI nodes in BB %dmultiple-value function call in single-value contextmultiply option implies r%d is fixedmultiversioning needs %<ifunc%> which is not supported on this targetmust %<#include <typeinfo>%> before using %<typeid%>must be declared with %<noexcept(true)%>must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>mutable %qD is not usable in a constant expressionnaked attribute only applies to functionsname %qD used in a GNU-style designated initializer for an arrayname %qT has incomplete typename %qs differs from name %qs defined in another translation unitname %qs is defined as %u-bit while another translation unit defines it as %u-bitname %qs is defined to %wd while another translation unit defines it as %wdname %qs is defined to different value in another translation unitname missing for member functionname of class shadows template template parameter %qDname the explicit object parametername used in a GNU-style designated initializer for an arrayname-independent declarations only available with %<-std=c++2c%> or %<-std=gnu++2c%>named return values are no longer supportednamespace %qD enterednamespace alias %qD not allowed here, assuming %qDnamespace name requirednamespace-scope anonymous aggregates must be staticnarrowing conversion of %qE from %qH to %qInarrowing conversion of %qE from %qH to %qI is ill-formed in C++11narrowing conversion of %qd from %qH to %qIneed %<this%> to access member %qEneed %<this%> to access member %qsneed %<typename%> before %<%T::%D::%E%> because %<%T::%D%> is a dependent scopeneed %<typename%> before %<%T::%E%> because %qT is a dependent scopeneed %<typename%> before %qE because %qT is a dependent scopeneed explicit conversionneed explicit conversion; missing method %s%s%snegative insn lengthnegative integer implicitly converted to unsigned typenegative length in array section in %qs clausenegative low bound in array section in %qs clausenegative nesting depth of region %inegative shift countnegative width in bit-field %q+Dnegative width in bit-field %qsneither branch of %<if%> is a constant expressionneither the destructor nor the class-specific %<operator delete%> will be called, even if they are declared when the class is definedneither the destructor nor the class-specific operator %<delete []%> will be called, even if they are declared when the class is definednested assembly dialect alternativesnested extern declaration of %qDnested functionnested function %q+D declared but never definednested function %qE declared %<extern%>nested function %qs declared %<extern%>nested function missing bodynested function trampolines not supported on this targetnested functions cannot be profiled with %<-mfentry%> on s390nested functions not supported on this targetnested inline namespace definitions only available with %<-std=c++20%> or %<-std=gnu++20%>nested loop in reduction needs reduction clause for %qEnested name specifier %qT for enum declaration does not name a class or namespacenested namespace definitions only available with %<-std=c++17%> or %<-std=gnu++17%>nested namespace name requirednested quoting directivenested redefinition of %<enum %E%>nested redefinition of %<struct %E%>nested redefinition of %<union %E%>nested requirement %qE is not satisfiednested requirement %qE is not satisfied, becausenew cannot be applied to a function typenew cannot be applied to a reference typenew declaration %q#D ambiguates built-in declaration %q#Dnew in Fortran 2003new in Fortran 2008new in Fortran 2018new in Fortran 2023new in Fortran 95new types may not be defined in a return typenew-expression is not a constant expression before C++20next member %q#D declared hereno %<%D(int)%> declared for postfix %qsno %<%D(int)%> declared for postfix %qs, trying prefix operator insteadno %<%c%E%> method foundno %<FUNCTION_PROFILER%> for CRISno %<enum%> underlying type specifiedno %q#D member function declared in class %qTno %qs getter foundno FPX/FPU mixing allowedno LTRANS output list filename providedno argumentsno arguments for spec functionno attribute can be applied to an explicit instantiationno class name specified with %qsno class template named %q#T in %q#Tno closing %<]%> for %<%%[%> formatno closing braceno constructorsno context to resolve type of %qEno conversion operators declaredno corresponding deallocation function for %qDno data type for mode %qsno declaration matches %q#Dno declaration of property %qs found in the interfaceno default argument for %qDno destructorsno dispatcher found for the versioning attributesno dispatcher found for the versioning attributes: %sno field %qD found in union being initializedno functions named %qDno immediate_use listno initializers are allowed in section %qsno input filesno input files; unwilling to write output filesno integral type can represent all of the enumerator values for %qTno known conversion for argument %d from %qH to %qIno known conversion for implicit %<this%> parameter from %qH to %qIno known conversion from %qH to %qIno low registers available for popping high registersno match for no match for call to %<%T::operator[] (%A)%>no match for call to %<(%T) (%A)%>no matches converting function %qD to type %q#Tno matching fixed-point overload found for %qsno matching function call to %qE with empty argumentsno matching function for call to %<%D(%A)%>no matching function for call to %<%T::%s%E(%A)%#V%>no matching function for call to %<%T::operator %T(%A)%#V%>no matching function for call to %<%s(%A)%>no matching function for type-generic callno matching push for %<#pragma GCC visibility pop%>no matching template for %qD foundno member function %qD declared in %qTno member named %qE in %qTno multilib-enabled ABI (%qs) can be implemented with instruction set %qs, falling back to %qsno operand of the disjunction is satisfiedno other trait-property may be specified in the same selector set with %<kind("any")%>no post-decrement operator for typeno post-increment operator for typeno pre-decrement operator for typeno pre-increment operator for typeno previous declaration for %qDno previous prototype for %qDno processor type specified for linkingno profile files were merged
! no profiling of 64-bit code for this ABIno register available for profiling %<-mcmodel=large%s%>no register in addressno return statement in %<constexpr%> function returning non-voidno return statement in function returning non-voidno return statements in function returning %qTno semicolon at end of struct or unionno such exception: 0x%xno suitable %<operator %s%> for %qTno suitable %qD found in class %qTno super class declared in @interface for %qEno super class declared in interface for %qEno support for %qs without %qsno suspend point info for %qDno type named %q#T in %q#Tno type or storage class may be specified here,no unexpanded parameter packs in binary foldno unique final overrider for %qD in %qTno valid clauses specified in %<#pragma acc declare%>no viable conversion from %<void%> provided by %<get_return_object%> to return type %qTno viable destructor for %qTnode differs from node->decl->decl_with_vis.symtab_nodenode has body_removed but is definitionnode has invalid order %inode has unknown typenode is alias but not definitionnode is alias but not implicit aliasnode is alone in a comdat groupnode is analyzed but it is not a definitionnode is in same_comdat_group list but has no comdat_groupnode is symver but not aliasnode is transparent_alias but not an aliasnode is weakref but not an transparent_aliasnode not found in symtab assembler name hashnode not found node->decl->decl_with_vis.symtab_nodenodes with unreleased memory foundnoexcept-expression evaluates to %<false%> because of a call to %qDnon 32 bit register operand for '%%%c'non double precision REAL argument to %s intrinsic at %Lnon-%<consteval%> function %q+D overriding %<consteval%> functionnon-AAPCS derived PCS variantnon-ASCII character in CFString literalnon-NULL pointer initialization at %Cnon-OpenACC construct inside of OpenACC regionnon-OpenACC construct inside of OpenACC routinenon-array deallocation of object allocated with array allocationnon-call exception handling mismatchnon-class, non-variable partial specialization %qE is not allowednon-cold basic block %d reachable only by paths crossing the cold partitionnon-const integer argument %u in call to function %qEnon-constant argument 0 to %qsnon-constant argument 1 to %qsnon-constant array in DATA statement %Lnon-constant array initializationnon-constant array new length must be specified directly, not by %<typedef%>non-constant array new length must be specified without parentheses around the type-idnon-constant compound literals cannot appear in a constant-expressionnon-constant condition for static assertionnon-constant element in constant CONSTRUCTORnon-constant expression %qsnon-constant in-class initialization invalid for non-inline static member %qDnon-constant in-class initialization invalid for static member %qDnon-constant initialization expression at %Lnon-constant iteration count of %<unroll full%> loopnon-deducible template %qT used without template argumentsnon-default INTEGER kind argument to %s intrinsic at %Lnon-delegitimized UNSPEC %s (%d) found in variable locationnon-deleted function %q+D overriding deleted functionnon-empty string literal expectednon-floating-point argument in call to function %qEnon-floating-point arguments in call to function %qEnon-function %qD declared as implicit templatenon-function alias definitions not supported in this configurationnon-function in gimple callnon-integer argument 1 to %qsnon-integer argument 3 in call to function %qEnon-integer memory model argument %d of %qEnon-integer operand used with operand code %<z%>non-integral type switch statementnon-local gotos in functions with SME statenon-local lambda expression cannot have a capture-defaultnon-local variable %qD declared %<__thread%> has a non-trivial destructornon-local variable %qD declared %<__thread%> needs dynamic initializationnon-loop with header %d not marked for removalnon-lvalue array in conditional expressionnon-member %qs cannot be declared %<mutable%>non-member function %qD cannot have cv-qualifiernon-member function %qD cannot have ref-qualifiernon-member using-declaration names constructor of %qTnon-member-template declaration of %qDnon-memory input %d must stay in memorynon-memory output %d must stay in memorynon-nested function with variably modified typenon-object member %qs cannot be declared %<mutable%>non-objective-c type %qT cannot be caughtnon-parameter %qs cannot be a parameter packnon-rectangular %<tile%>non-rectangular loop nest with non-constant step for %qsnon-rectangular loops from generated loops unsupportednon-register as LHS of binary operationnon-register as LHS of ternary operationnon-register as LHS of unary operationnon-scalar %qsnon-scalar typenon-scalar variable %qD in conditional %<lastprivate%> clausenon-standard suffix on floating constantnon-standard suffix on floating constant before C23non-static const member %q#D in class without a constructornon-static const member %q#D, cannot use default assignment operatornon-static data member %q+D in a union may not have reference type %qTnon-static data member %qE declared %qsnon-static data member declared with placeholder %qTnon-static data member initializers only available with %<-std=c++11%> or %<-std=gnu++11%>non-static declaration of %q+D follows static declarationnon-static initialization of a flexible array membernon-static reference %q#D in class without a constructornon-static reference member %q#D, cannot use default assignment operatornon-template %qD used as templatenon-template type %qT used as a templatenon-thread-local declaration of %q#D follows thread-local declarationnon-thread-local declaration of %q+D follows thread-local declarationnon-top-level %qsnon-trivial conversion in %qsnon-trivial conversion in unary operationnon-trivial designated initializers not supportednon-type partial specialization %qE is not allowednon-type template parameters of class type only available with %<-std=c++20%> or %<-std=gnu++20%>non-type template parameters of deduced class type only available with %<-std=c++20%> or %<-std=gnu++20%>non-variable %qD in declaration with more than one declarator with placeholder typenon-vector %qs with elementsnon-vector operands in vector comparisonnonconstant array index in initializernonempty exits list of loop %d, but exits are not recordednonlocal label %qD is not first in a sequence of labels in bb %dnontemporal store lhs cannot be a gimple registernonzero array subscript %qE is used with array %qD of type %qT with unknown boundsnonzero array subscript %qE is used with array of type %qT with unknown boundsnormalization cannot co-exist with scaling
! not Encapsulated Lazy Records of Named Declarationsnot allowed type combination in %qsnot configured with sysroot headers suffixnot eliding copy on return from %qDnot eliding copy on return in %qDnot enough DO loops for %s !$ACC LOOP at %Lnot enough DO loops for collapsed %s (level %d) at %Lnot enough argumentsnot enough arguments to returnnot enough nested loopsnot enough type informationnot enough variable arguments to fit a sentinelnot expecting different types to binary operatornot exporting %<#define %E%> as it is a keywordnot generating patch area, nops not supportednot support %<-fpic%> option for v3m toolchainnot writing module %qs due to errors in template bodiesnotenote: null destination pointernull format stringnull pointernull pointer dereferencenullability specifier %qE cannot be applied to multi-level pointer type %qTnullability specifier %qE cannot be applied to non-pointer type %qTnumber must be 0 or 1number of arguments doesn%'t match built-in prototypenumber of arguments doesn%'t match prototypenumber of bb notes in insn chain (%d) != n_basic_blocks (%d)number of components of vector not a power of twonumber of counters in profile data for function %qD does not match its profile data (counter %qs, expected %i and have %i)number of list items in %<interop%> clause (%d) exceeds the number of %<append_args%> items (%d) for %<declare variant%> candidate %qDnumber of results does not match number of valuesnumber of speculative targets %i mismatched with num_speculative_call_targets %inumber of variables in %qs clause with %<sink%> modifier does not match number of iteration variablesnumber of vector components %wu exceeds %dnumber of vector components %wu not a power of twonumeric argument of %qE attribute must be in range [0-63]objc++-cpp-output is deprecated; please use objective-c++-cpp-output insteadobjc-cpp-output is deprecated; please use objective-c-cpp-output insteadobject %qE of size %sobject is not a methodobject missing in use of %qEobject of size %s allocated by %qEobject property %qD has no %<assign%>, %<retain%> or %<copy%> attribute; assuming %<assign%>object type %qT does not match destructor name ~%qTobject with variably modified type must have no linkageobjective-c method declaration is expectedobjective-c++ message argument(s) are expectedobjective-c++ message receiver expectedobjective-c++ method declaration is expectedobsolescent in Fortran 95obsolete FPA format code '%c'obsolete Maverick format code '%c'obsolete option %<-I-%> used, please use %<-iquote%> insteadobsolete use of designated initializer with %<:%>obsolete use of designated initializer without %<=%>obtained hereodr-used inline variable %qD is not definedof moduleoffload compiler %qs not foundoffload compiler %s not found (consider using %<-B%>)offload dimension out of range (%d)offset %qwi outside bounds of constant stringoffset exceeds 16 bytesoffset of %qD for %<-std=c++14%> and up changes in %<-fabi-version=17%> (GCC 12)offset of %qD for %<-std=c++20%> and up changes in %<-fabi-version=21%> (GCC 16)offset of %qD is not ABI-compliant and may change in a future version of GCCoffset of %qT base class for %<-std=c++14%> and up changes in %<-fabi-version=17%> (GCC 12)offset of %qT base class for %<-std=c++20%> and up changes in %<-fabi-version=21%> (GCC 16)offset of packed bit-field %qD has changed in GCC 4.4old declaration %q#Dold-style function definitionold-style parameter declarations in prototyped function definitionomission of %<,%> before varargs %<...%> is deprecated in C++26omitted middle operand to %<?:%> operand cannot be mangledomp_cur_iteration at %L requires %<-1%> as logical offsetone field is a bitfield while the other is notone of the initializer call arguments should be %<&omp_priv%>one of the initializer call arguments should be %<omp_priv%> or %<&omp_priv%>one type needs to be constructed while the other does notonly %<distribute%>, %<parallel%> or %<loop%> regions are allowed to be strictly nested inside %<teams%> regiononly %<inbranch%> and %<notinbranch%> flags are allowed for %<__simd__%> attributeonly %<inbranch%> and %<notinbranch%> flags are allowed for %<simd%> attributeonly %qT or a null pointer constant can be converted to %qTonly %u name provided for structured bindingonly %u names provided for structured bindingonly 0.0 can be loaded as an immediateonly 32-bit access is supported for %<__regio_symbol%> address spaceonly DWARF debug format is supported for interrupt service routineonly Objective-C object types can be qualified with a protocolonly attribute %<fallthrough%> or %<assume%> can be applied to a null statementonly constructors take member initializersonly declarations of constructors and conversion operators can be %<explicit%>only here as a %<friend%>only plain %<auto%> return type can be deduced to %<void%>only the first parameter of a member function can be declared as an explicit object parameteronly unevaluated inline assembly is allowed in a %<constexpr%> function in C++20only uninitialized variables can be placed in a %<.bss%> sectiononly uninitialized variables can be placed in the %<.noinit%> sectiononly values 12 (4 KB) and 16 (64 KB) are supported for guard size.  Given value %d (%llu KB) is out of rangeonly weak aliases are supported in this configurationonly zero initializers are allowed in section %qsopaque vector types cannot be initializedopaque-enum-declaration hereopaque-enum-specifier must use a simple identifieropaque-enum-specifier without nameopen %s failed: %sopen /dev/zero: %mopening LTRANS output list %s: %mopening dependency file %s: %mopening output file %qs: %sopening output file %s: %moperand %%xn code invalid for QImodeoperand %d should be a 3 bit unsigned immediateoperand %d should be a 6 bit unsigned immediateoperand %d should be a 8 bit unsigned immediateoperand 1 should be an unsigned 3-bit immediateoperand 1 should be an unsigned 3-bit value (I0-I7)operand 2 should be an even 3-bit value (subreg 0,2,4,6)operand 2 should be an unsigned 3-bit value (I0-I7)operand 2 should be an unsigned 3-bit value (subreg 0-7)operand 2 should be an unsigned 8-bit valueoperand 3 should be an unsigned 3-bit value (I0-I7)operand 3 should be an unsigned 8-bit valueoperand 4 should be an unsigned 8-bit value (0-255)operand constraint contains incorrectly positioned %<+%> or %<=%>operand constraints for %<asm%> differ in number of alternativesoperand is not a condition code, invalid operand code '%c'operand is not a condition code, invalid operand code 'D'operand is not a condition code, invalid operand code 'Y'operand is not a specific integer, invalid operand code 'R'operand is not a specific integer, invalid operand code 'r'operand is not an integer, invalid operand code 'K'operand is not an integer, invalid operand code 'R'operand is not an offsettable memory reference, invalid operand code 'H'operand number missing after %%-letteroperand number out of rangeoperand number out of range in formatoperand number specified for format taking no argumentoperand number specified with suppressed assignmentoperand of %<?:%> changes signedness from %qT to %qT due to unsignedness of other operandoperand of fold expression has no unexpanded parameter packsoperand type %qT is incompatible with argument %d of %qEoperand types are %qT and %qToperands to %<?:%> have different types %qT and %qToperands to %<?:%> of types %qT and %qT have unordered conversion rankoperands to %T/%t must be reg + const_int:operation not permitted on type %<_Float16%> without option %<-msse2%>operation not permitted on type %<__bf16%> without option %<-msse2%>operation not permitted on type %<bfloat16_t%>operation not permitted on type %<mfloat8_t%>operation on %qE may be undefinedoperations after non tail recursive calloperations on multiple vectors must be predicated by %qs rather than %qsoperations on single vectors must be predicated by %qs rather than %qsoperator %<delete []%> used on incomplete typeoperator %<delete%> used on incomplete typeoptimization attribute on %qD follows definition but the attribute doesn%'t matchoptimization level attribute mismatchoptimization may eliminate reads and/or writes to register variablesoptimize non var unbounded parameters by passing it by reference, providing it is not written to within the callee procedure.option %<%s=%s%> is not available for %qs CPUoption %<-mdouble=32%> is only available if configured %<--with-double={32|32,64|64,32}%>option %<-mdouble=64%> is only available if configured %<--with-double={64|64,32|32,64}%>option %<-mirq-ctrl-saved%> valid only for ARC v2 processorsoption %<-mlong-double=32%> is only available if configured %<--with-long-double={32|32,64|64,32}%>, or %<--with-long-double=double%> together with %<--with-double={32|32,64|64,32}%>option %<-mlong-double=64%> is only available if configured %<--with-long-double={64|64,32|32,64}%>, or %<--with-long-double=double%> together with %<--with-double={64|64,32|32,64}%>option %<-mrgf-banked-regs%> valid only for ARC v2 processorsoption %<-mstructure-size-boundary%> is deprecatedoption %qs is ignored, the default value %qs is considered for %qs CPUoption %qs is not available for %qs CPUoption %qs is valid for %s but not for %soption %qs requires %<-mlong-double-128%>option %qs with mismatching values (%s, %s)option %s is not supported together with %<-fopenacc%>option %s not used consistently in all LTO input filesoption %s with different valuesoption missing after %qsoptional argumentoptional class parameteroptional second parameter of %<va_start%> not last named argumentoptions or targets=options missing after %qsoptype_msgid overflow: %dor replace parentheses with braces to aggregate-initialize a variableor replace parentheses with braces to value-initialize a variableor use %<auto%> for an abbreviated function templateor use %<j%> instead of %<i%> for the GNU built-in suffixordered argument needs positive constant integer expressionordered comparison of pointer with integer zeroordered comparison of pointer with integer zero (%qT and %qT)ordered comparison of pointer with null pointerorders the initialization/finalizations for scaffold-static or force linking of modules if scaffold-dynamicordinal type expectedorigin points to a different parentoriginal %<default%> is hereoriginal declaration appeared hereoriginal declaration hereoriginal declaration with fewer contracts hereoriginal definition appeared hereoriginal definition hereoriginal not compressed with zstdoriginal size unknownoriginal template declaration hereoriginally declared %<const%> hereoriginally defined hereoriginally indirect function call not considered for inliningoriginally specified hereorphaned %qs constructother match is hereother reasonsought to match virtual method %qD but does notouter %<__transaction_cancel%> not within outer %<__transaction_atomic%>outer %<__transaction_cancel%> not within outer %<__transaction_atomic%> or a %<transaction_may_cancel_outer%> functionouter block of region %i is wrongouter iteration variable %qD addend expression %qE is not integralouter iteration variable %qD multiplier expression %qE is not integralouter iteration variable %qD used in condition expression has type other than %qTouter iteration variable %qD used in initializer expression has type other than %qTouter transaction in %<transaction_may_cancel_outer%> functionouter transaction in %<transaction_safe%> functionouter transaction in transactionoutput constraint %d cannot be specified together with %qs clobberoutput constraint %d must specify a single registeroutput constraint %qc for operand %d is not at the beginningoutput file %s already exists in folder %soutput filename may not be emptyoutput filename specified twiceoutput number %d not directly addressableoutput operand %d must use %<&%> constraintoutput operand constraint lacks %<=%>output operand is constant in %<asm%>output operand outside of a function is not constantoutput registers must be grouped at top of stackoutput_move_single:overflow in array dimensionoverflow in constant expressionoverflow in conversion from %qT to %qT changes the value of %qEoverflow in conversion from %qT to %qT changes value from %qE to %qEoverflow in enumeration valuesoverflow in enumeration values at %qDoverflow in implicit constant conversionoverflowed output argument list for %qsoverflows in conversion from %qT to %qT changes value from %qE to %qEoverlapping initializer for field %qT.%qDoverloaded builtin %qs is implemented by builtin %qsoverloaded function name %qE in clause %qsoverloaded function with no contextual type informationoverridden function is %q#Doverridden function is %q#Foverridden function is %qDoverride controls (override/final) only available with %<-std=c++11%> or %<-std=gnu++11%>override the default 64 bit definition of SYSTEM.COFF_T with the argument specifiedoverriding %qD declared %<transaction_safe%>pack expansion argument for non-pack parameter %qD of alias template %qDpack expansion argument for non-pack parameter %qD of concept %qDpack expansion in using-declaration only available with %<-std=c++17%> or %<-std=gnu++17%>pack expansion of %qE attributepack index is negativepack index is not an integral constantpack index is out of rangepack index missingpack indexing only available with %<-std=c++2c%> or %<-std=gnu++2c%>pack init-capture only available with %<-std=c++20%> or %<-std=gnu++20%>packed attribute causes inefficient alignmentpacked attribute causes inefficient alignment for %q+Dpacked attribute causes inefficient alignment for %qEpacked attribute is unnecessarypacked attribute is unnecessary for %q+Dpacked attribute is unnecessary for %qEpacked layoutpadding struct size to alignment boundary with %E bytespadding struct to align %q+Dparameter %P has incomplete type %qTparameter %P of %qD has incomplete type %qTparameter %q+D declared %<_Noreturn%>parameter %q+D declared %<inline%>parameter %q+D has just a forward declarationparameter %qD declared with void typeparameter %qD has incomplete typeparameter %qD includes pointer to array of unknown bound %qTparameter %qD includes reference to array of unknown bound %qTparameter %qD invalidly declared method typeparameter %qD is initializedparameter %qD may not appear in this contextparameter %qD set but not usedparameter %qP of %qD might be a candidate for a format attributeparameter %u (%q+D) has incomplete typeparameter %u has incomplete typeparameter declaration before lambda declaration specifiers only optional with %<-std=c++23%> or %<-std=gnu++23%>parameter declaration before lambda exception specification only optional with %<-std=c++23%> or %<-std=gnu++23%>parameter declaration before lambda trailing return type only optional with %<-std=c++23%> or %<-std=gnu++23%>parameter declaration before lambda transaction qualifier only optional with %<-std=c++23%> or %<-std=gnu++23%>parameter declaration is not name-independentparameter declared %<auto%>parameter may not have variably modified type %qTparameter might be a candidate for a format attributeparameter name missing from parameter listparameter names (without types) in function declarationparameter pack %<__bases%> only valid in template declarationparameter pack %q+D must be at the end of the template parameter listparameter pack %qD cannot have a default argumentparameter pack argument %qE must be at the end of the template argument listparameter pack argument %qT must be at the end of the template argument listparameter pack cannot have a default argumentparameter packs not expanded with %<...%>:parameter passing for argument of type %qT changed %{in GCC 12.1%}parameter passing for argument of type %qT changed in GCC 13.1parameter passing for argument of type %qT changed in GCC 14.1parameter passing for argument of type %qT changed in GCC 7.1parameter passing for argument of type %qT changed in GCC 9.1parameter passing for argument of type %qT when C++17 is enabled changed to match C++14 %{in GCC 10.1%}parameter passing for argument of type %qT with %<[[no_unique_address]]%> members changed %{in GCC 10.1%}parameter passing for argument of type %qT with zero-width bit fields members changed in GCC 12parameter to builtin must be a string constant or literalparameter to builtin not valid: %sparameters of type %<va_list%> {aka %qs} are decayed to pointer types, and require %<va_copy%> to be converted back into a static array typeparametrized derived type argumentparent subprogram cannot be inlinedparentheses around %qE cannot be used to form a pointer-to-member-functionparentheses must be omitted if %qE attribute argument list is emptyparentheses must be omitted if attribute argument list is emptyparentheses required around this composite literal to avoid parsing ambiguityparentheses were disambiguated as a function declarationparenthesized initialization is not allowed in OpenMP %<for%> loopparenthesized initializer in array newparse error in SELECT RANK statement at %Cparse error in SELECT TYPE statement at %Cparse error in template argument listpart-ref with pointer attribute near %L is not rightmost part-ref of data-stmt-objectpartial specialization %q+D does not specialize any template arguments and is not more constrained than the primary template; to define the primary template, remove the template argument listpartial specialization %q+D does not specialize any template arguments; to define the primary template, remove the template argument listpartial specialization %qD is not more specialized thanpartial specialization %qT declared %<friend%>partial specialization is not more specialized than the primary template because it replaces multiple parameters with a pack expansionpartial specialization of %qD after instantiation of %qDpartition found but function partition flag not setpass %qs not found but is referenced by new pass %qspass %s does not support cloningpass %s needs a %<set_pass_param%> implementation to handle the extra argument in %<NEXT_PASS%>passed to the preprocessor if -fcpp is used (internal switch)passing %qT and %qT to arguments %d and %d of %qE, which expects a pair of 64-bit integerspassing %qT as %<this%> argument discards qualifierspassing %qT chooses %qT over %qTpassing %qT instead of the expected %qT to argument %d of %qE, after passing %qT to argument %dpassing %qT to argument %d of %qE, but %qT is not a valid MVE element typepassing %qT to argument %d of %qE, but %qT is not a valid SVE element typepassing %qT to argument %d of %qE, but argument %d had type %qTpassing %qT to argument %d of %qE, but argument %d was a tuple of %qTpassing %qT to argument %d of %qE, but its %qT form does not accept scalarspassing %qT to argument %d of %qE, but its %qT form does not accept single vectorspassing %qT to argument %d of %qE, but previous arguments had type %qTpassing %qT to argument %d of %qE, which does not accept scalars for this combination of argumentspassing %qT to argument %d of %qE, which expects %qTpassing %qT to argument %d of %qE, which expects %qspassing %qT to argument %d of %qE, which expects %qs or %qspassing %qT to argument %d of %qE, which expects a 128 bit NEON vector typepassing %qT to argument %d of %qE, which expects a 32-bit or 64-bit integer typepassing %qT to argument %d of %qE, which expects a pointer to %qTpassing %qT to argument %d of %qE, which expects a pointer to 32-bit or 64-bit elementspassing %qT to argument %d of %qE, which expects a pointer typepassing %qT to argument %d of %qE, which expects a scalar elementpassing %qT to argument %d of %qE, which expects a scalar integerpassing %qT to argument %d of %qE, which expects a scalar pointerpassing %qT to argument %d of %qE, which expects a single MVE vector rather than a tuplepassing %qT to argument %d of %qE, which expects a single SVE vector rather than a tuplepassing %qT to argument %d of %qE, which expects a vector of %d-bit elementspassing %qT to argument %d of %qE, which expects a vector of %d-bit integerspassing %qT to argument %d of %qE, which expects a vector of 32-bit or 64-bit elementspassing %qT to argument %d of %qE, which expects a vector of 32-bit or 64-bit integerspassing %qT to argument %d of %qE, which expects a vector of integerspassing %qT to argument %d of %qE, which expects a vector of signed integerspassing %qT to argument %d of %qE, which expects a vector of unsigned integerspassing %qT to argument %d of %qE, which expects a vector or pointer base addresspassing %qT to argument %d of %qE, which expects a vector or scalar typepassing %qT to argument %d of %qE, which expects an %qs or %qspassing %qT to argument %d of %qE, which expects an MVE tuple typepassing %qT to argument %d of %qE, which expects an MVE vector typepassing %qT to argument %d of %qE, which expects an SVE typepassing %qT to argument %d of %qE, which expects an SVE type rather than a scalar typepassing %qT to argument %d of %qE, which expects the data to be 16 bits or widerpassing %qT to argument %d of %qE, which expects vectors of %d-bit elementspassing %qT to argument %d of %qE, which expects vectors of signed integerspassing %qT to argument %d of %qE, which expects vectors of unsigned integerspassing %qT to argument %d of %qE, which when loading %qT expects a vector of %d-bit integerspassing %qT to argument %d of %qE, which when storing %qT expects a vector of %d-bit integerspassing %wd to argument %d of %qE, which expects %wd, %wd, %wd or %wdpassing %wd to argument %d of %qE, which expects a valid %qT valuepassing %wd to argument %d of %qE, which expects a value in the range [%wd, %wd]passing %wd to argument %d of %qE, which expects a value in the range [%wd, %wd] or %wdpassing %wd to argument %d of %qE, which expects a value multiple of %wd in the range [%wd, %wd]passing %wd to argument %d of %qE, which expects either %wd or %wdpassing %wd to argument %d of %qE, which expects the value %wdpassing NULL to non-pointer argument %P of %qDpassing argument %d of %qE as %<float%> rather than %<double%> due to prototypepassing argument %d of %qE as %qT rather than %qT due to prototypepassing argument %d of %qE as complex rather than floating due to prototypepassing argument %d of %qE as complex rather than integer due to prototypepassing argument %d of %qE as floating rather than complex due to prototypepassing argument %d of %qE as floating rather than integer due to prototypepassing argument %d of %qE as integer rather than complex due to prototypepassing argument %d of %qE as integer rather than floating due to prototypepassing argument %d of %qE as signed due to prototypepassing argument %d of %qE as unsigned due to prototypepassing argument %d of %qE discards %qs qualifier from pointer target typepassing argument %d of %qE discards %qv qualifier from pointer target typepassing argument %d of %qE from distinct Objective-C typepassing argument %d of %qE from incompatible pointer typepassing argument %d of %qE from incompatible scalar storage orderpassing argument %d of %qE from pointer to non-enclosed address spacepassing argument %d of %qE makes %q#v qualified function pointer from unqualifiedpassing argument %d of %qE makes integer from pointer without a castpassing argument %d of %qE makes pointer from integer without a castpassing argument %d of %qE with different width due to prototypepassing argument %i to %qs-qualified parameter aliases with argument %Zpassing argument %i to %qs-qualified parameter aliases with arguments %Zpassing arguments to ellipsis of inherited constructor %qDpassing mismatched integer types %qT and %qT to arguments %d and %d of %qEpassing mismatched tuple types %qT and %qT to arguments %d and %d of %qEpassing objects of non-trivially-copyable type %q#T through %<...%> is conditionally supportedpassing single vector %qT to argument %d of %qE after passing tuple %qT to argument %dpassing too large argument on stackpassing tuple %qT to argument %d of %qE after passing single vector %qT to argument %dpatchable function entry %wu exceeds size %wupath coverage omitted
  path: paths covered %u of %zu
  paths exceeding limit, giving up path coveragepedwarnpedwarn: perhaps %<#include <coroutine>%> is missingperhaps insert a line break after %<import%>, or other disambiguation, to prevent this being considered a module control-lineperhaps insert a line break after %qs, or other disambiguation, to prevent this being considered a module control-lineperhaps you need explicit template arguments in your nested-name-specifierperhaps you want to explicitly add %<%T::%>permerrorpermerror: placeholder constraints not satisfiedplaceholder type not allowed in this contextplacement new constructing an array of objects of type %qT and size %qwu in a region of type %qT and size %qwiplacement new constructing an array of objects of type %qT and size %qwu in a region of type %qT and size at most %qwuplacement new constructing an object of type %<%T [%wu]%> and size %qwu in a region of type %qT and size %qwiplacement new constructing an object of type %<%T [%wu]%> and size %qwu in a region of type %qT and size at most %qwuplacement new constructing an object of type %qT and size %qwu in a region of type %qT and size %qwiplacement new constructing an object of type %qT and size %qwu in a region of type %qT and size at most %qwuplease use an explicit cpu name; valid cpu names are: %splugin %qs was specified with different paths: %qs and %qsplugin %s is not licensed under a GPL-compatible license
  %splugin %s is not licensed under a GPL-compatible license: %splugin %s registered a null callback function for event %splugin %s should be specified before %<-fplugin-arg-%s%> in the command lineplugin cannot register a missing passplugin cannot register an unnamed passplugin cannot register pass %qs without reference pass nameplugin support is disabled; configure with %<--enable-plugin%>pointed-to object declared herepointerpointer %qE may be used after %qDpointer %qE used after %qDpointer argumentpointer arithmetic for garbage-collected objects not allowedpointer assignmentpointer may be used after %qDpointer member %q+D declared herepointer of type %<void *%> used in arithmeticpointer of type %<void *%> used in subtractionpointer offset from symbol may be incorrectpointer or allocatable resultpointer target types incompatible in C++pointer targeting address space %qs must be const in %qTpointer targeting address space %qs must be const in %s %q+Dpointer targets in assignment from %qT to %qT differ in signednesspointer targets in initialization of %qT from %qT differ in signednesspointer targets in passing argument %d of %qE differ in signednesspointer targets in returning %qT from a function with return type %qT differ in signednesspointer to %qD is not a constant expressionpointer to a function used in arithmeticpointer to a function used in subtractionpointer to array loses qualifier in conditional expressionpointer to array loses qualifier in conditional expression in ISO C before C23pointer to data member type %qT can only be invoked with one argumentpointer to interface type has no methodspointer to member conversion via virtual base %qTpointer to member function type %qT must be invoked with at least one argumentpointer to member type %qT incompatible with object type %qTpointer type mismatch in conditional expressionpointer used after %qDpointer value used where a complex was expectedpointer value used where a floating-point was expectedpointer-to-member function %qE cannot be called without an object; consider using %<.*%> or %<->*%>pointer-to-member mapping %qE not supportedpointer-to-member-function type %qT requires an lvaluepointer-to-member-function type %qT requires an lvalue before C++20pointer-to-member-function type %qT requires an rvaluepointer/integer type mismatch in conditional expressionpointers are not permitted as case valuespointers to %<__regio_symbol%> address space are prohibitedpointers to disjoint address spaces used in conditional expressionpolymorphic argumentposition plus size exceeds size of referenced object in %qsposition-independent code requires %qspositional initialization of field in %<struct%> declared with %<designated_init%> attributepositive width required at %Lpossible fix: dereference with %qspossible fix: take the address with %qspossible problem detected in invocation of %<operator delete%>possible problem detected in invocation of operator %<delete []%>possibly dangling reference to a temporarypost-increment address is not a registerpost-module-declaration imports must be contiguouspost-module-declaration imports must not be from header inclusionpost-module-declaration imports must not be include-translatedpostconditions cannot be statementspostfix %qD must have %<int%> as its argumentpostfix %qD must have %<int%> as its second argumentpostfix %qD should return %qTpotential null pointer dereferencepower9 target option is incompatible with %<%s=<xxx>%> for <xxx> less than power9pragma or attribute %<target("%s")%> does not accept an argumentpragma or attribute %<target("%s")%> does not allow a negated formpragma or attribute %<target("%s")%> is not validpragma or attribute %<target("%s=%s")%> is not validpragma(%s) not implementedpre-decrement address is not a registerpre-increment address is not a registerprecisionprecision in printf formatpreconditions cannot be statementspredeclared arithmetic type %qT in %<#pragma omp declare reduction%>predeclared arithmetic type in %<#pragma omp declare reduction%>predicated Thumb instructionpredicated instruction in conditional sequenceprefix %qD should return %qTprefix attributes are ignored before %<@%D%>prefix attributes are ignored for implementationsprefix attributes are ignored for methodspreprocess <source_filter> before compilingprev_bb of %d should be %d, not %dprevious %<#pragma omp declare reduction%>previous %<pragma omp declare reduction%> declarationprevious contract hereprevious declarationprevious declaration %q#Dprevious declaration %qDprevious declaration %qD used %d template parameterprevious declaration %qD used %d template parametersprevious declaration as %q#Dprevious declaration hereprevious declaration of %<%c%E%>previous declaration of %<%c%E%> as %<@optional%>previous declaration of %<%c%E%> as %<@required%>previous declaration of %<%c%s%>previous declaration of %q#Dprevious declaration of %q+Dprevious declaration of %q+D with type %qTprevious declaration of %qDprevious declaration of %qD hereprevious declaration of %qEprevious declaration with %qL linkageprevious definition hereprevious definition of %q#Tprevious definition of %q+D with type %qTprevious definition of %qD hereprevious implicit declaration of %q+D with type %qTprevious labelprevious mangling %q#Dprevious non-prototype definition hereprevious specificationprevious specification in %q#D herepreviously declared as %spreviously declared as %s with %u unspecified variable boundpreviously declared as %s with %u unspecified variable boundspreviously declared as %s with %u variable boundpreviously declared as %s with %u variable boundspreviously declared as %s with bound %qspreviously declared as %s with bound argument %Epreviously declared as a pointer %spreviously declared as a variable length array %spreviously declared as an array %spreviously declared as an ordinary array %spreviously declared herepreviously declared here without exportingpreviously declared in global modulepreviously declared in module %qspreviously defined herepreviously defined here as %spreviously used hereprimary template %qDprimary template hereprivate member %q#D in anonymous unionprivate module fragmentprivate module fragment only permitted in purview of module interface or partitionprobability %qE is outside the range [0.0, 1.0]probability %qE must be constant floating-point expressionprobability of edge %d->%d not initializedprobability of edge from entry block not initializedprobably missing a comma or an operator beforeproblem with building target image for %sproduct %<%E * %E%> of arguments %i and %i exceeds %<SIZE_MAX%>product %<%E * %E%> of arguments %i and %i exceeds maximum object size %Eprofile data for function %u is corruptedprofile for function %qD not found in profile dataprofiler support for VxWorksprofiling %<-mcmodel=large%> with PIC is not supportedprofiling is not yet implemented for this architectureprofiling not supported with -mgprograms: %s
*************** warranty; not even for MERCHANTABILITY o
*** 2166,2176 ****
  requiresrequires-clause on declaration of non-function type %qTrequires-clause on return typerequires-clause on type-idrequires-clause on typedefresolution sub id %wx not in object fileresolve_function(): bad function typeresolve_intrinsic(): Too many args for intrinsicresolve_operator(): Bad intrinsicresolve_ref(): Bad array referenceresolve_subroutine(): bad function typeresolver indirect function declared hereresult of %<%wu^%wu%> is %wu; did you mean %<1 << %wu%> (%wu)?result of %<%wu^%wu%> is %wu; did you mean %<1LL << %wu%>?result of %<%wu^%wu%> is %wu; did you mean %<1e%wu%>?result of %<%wu^%wu%> is %wu; did you mean exponentiation?result of %<operator->()%> yields non-pointer resultresult of %qE requires %u bits to represent, but %qT only has %u bitsresult type is not a plain type-constraintresult with non-constant character lengthreturn address signing is only supported for %<-mabi=lp64%>return discards %qv qualifier from pointer target typereturn edge does not point to exit in bb %dreturn from pointer to non-enclosed address spacereturn makes %q#v qualified function pointer from unqualifiedreturn not followed by barrierreturn type %q#T is incompletereturn type %qT of explicit conversion function cannot be converted to %qT with a qualification conversionreturn type defaults to %<int%>return type is an incomplete typereturn type might be a candidate for a format attributereturn type of %qD is not %<int%>return type of %qD is not %qsreturn type of functionreturn type specification for constructor invalidreturn type specification for destructor invalidreturn type specified for %<operator %T%>return type specified for deduction guidereturn value changed after callreturn value in memoryreturn value type mismatchreturn value used after callreturn with value in function with no return typereturn-statement with a value, in function returning %qTreturn-statement with no value, in function returning %qTreturn-type-requirement is not a type-constraintreturned from %qDreturned from %qTreturning %e from a function with incompatible return type %ereturning %qT from a function with return type %qT makes integer from pointer without a castreturning %qT from a function with return type %qT makes pointer from integer without a castreturning %qT from pointer type with incompatible scalar storage order %qTreturning a value from a constructorreturning a value from a destructorreturning initializer listreturning local %<initializer_list%> variable %qD does not extend the lifetime of the underlying arrayreturning pointer to %qD of type %e from a function with incompatible type %ereturning pointer to temporaryreturning reference to temporaryreturning temporary %<initializer_list%> does not extend the lifetime of the underlying arrayreturning to the gate for a mechanical issuereturns_twice call is not first in basic block %dreturns_twice call is not last in basic block %dreverse floating-point scalar storage orderreverse scalar storage orderreverse storage order for %smoderight operand of comma operator cannot resolve address of overloaded functionright operand of comma operator has no effectright operand of comma operator is a reference, not call, to function %qEright operand of shift expression %q+E is greater than or equal to the precision %wu of the left operandright operand of shift expression %q+E is negativeright precisionright precision in strfmon formatright shift count >= width of typeright shift count >= width of vector elementright shift count is negativeright-hand operand of comma expression has no effectrotate count is negativerounding mode not supported for VAX floatsrounding result will always be 0rounding to %d bits has no effect for fixed-point value with %d fractional bitsroutine %qD declared hereroutine call uses OpenACC parallelism disallowed by containing routineroutine call uses same OpenACC parallelism as containing looprv32e requires ilp32e ABIrv64e requires lp64e ABIrx100 cpu does not have FPU hardwarerx200 cpu does not have FPU hardwaresame canonical type node for different types %qT and %qTsame variable used in %<firstprivate%> and %<lastprivate%> clauses on %<distribute%> constructsame version was previously defined heresame_comdat_group is not a circular listsame_comdat_group list across different groupssanitizer function attribute mismatchsatisfaction of atomic constraint %qE depends on itselfsatisfaction value first evaluated to %qE from heresatisfaction value of atomic constraint %qE changed from %qE to %qEsaturation bit range must be a constant immediatesaturation bit range must be in the range [%wd, %wd]save temporary preprocessed filessaw %d %<template<>%>, need %d for specializing a member function templatesay %<typename %E%> if a type is meantscalar object %qD requires one element in initializerscale needs to be non-negativescaling cannot co-exist with normalization, skipping
  scan.o: %sschedule %<auto%> does not take a %<chunk_size%> parameterschedule %<runtime%> does not take a %<chunk_size%> parameterschedule chunk size expression must be integralscope %qT before %<~%> is not a class-namescope opened herescoped enum %qT passed through %<...%> as %qT before %<-fabi-version=6%>, %qT afterscoped enums only available with %<-std=c++11%> or %<-std=gnu++11%>scoped/unscoped mismatch in enum %q#Tscore argument must be constant integer expressionscore argument must be non-negativesecond argument must be a constsecond argument must be slice or stringsecond argument of %q+D should be %<char **%>second argument to %<__builtin_call_with_static_chain%> must be a pointer typesecond argument to %<__builtin_prefetch%> must be a constantsecond argument to %<va_arg%> is a function type %qTsecond argument to %<va_arg%> is of incomplete type %qTsecond argument to function %qE must be a constant integer power of 2 between %qi and %qu bitssecond expression has type %qTsecond operand of conditional expression cannot resolve address of overloaded functionsecond operand of conditional expression has no effectsecond operand of conditional expression is a reference, not call, to function %qEsecond operand to the conditional operator is of type %<void%>, but the third operand is neither a throw-expression nor of type %<void%>second parameter of %<va_start%> not last named argumentsecond, third and fourth argument must be a constsection #%u is missing or corruptedsection %qs is missing or corruptedsection already exists: %qssection anchors must be disabled when toplevel reorder is disabledsection anchors must be disabled when unit-at-a-time is disabledsection attribute argument not a string constantsection attribute cannot be specified for local variablessection attribute not allowed for %q+Dsection attributes are not supported for this targetsection of %q+D cannot be overriddensection of %q+D conflicts with previous declarationsection of alias %q+D must match section of its targetsection type conflict for section %qssection type conflict with %qD in section %qssee the %{%<-flto%> option documentation%} for more informationsegmentation faultsegmentation fault (code)selected fp16 options are incompatibleselected function declared hereselector %qs does not accept any propertiesselector %qs does not accept any properties at %Cselector %qs specified more than once in set %qsselector must be an immediateselector must be an integer constant in the range [0, %wi]selector set %qs specified more than onceself-comparison always evaluates to falseself-comparison always evaluates to trueself-tests are not enabled in this buildself-tests incompatible with %<-E%>semantic interposition mismatchset %qs to at least %d for more detailset all location values to a specific value (internal switch)set base type must be an ordinal typeset type cannot be initialized with a %qsset type does not take another integer valuesetjmp/longjmp inside %<simd%> constructsetter method names must terminate with %<:%>setting core file size limit to maximum: %mshadowed declaration is hereshadowing built-in function %q#Dshadowing library function %q#Dshadowing previous type declaration of %q#Dshared SSA name infoshared and mdll are not compatibleshared call_stmt:shared is not supportedshared rtxshared-memory region overflowshift count not integershift expression %q+E overflowsshift of non-integer operandshort read while reading export datashow_array_ref(): Unknown array referenceshow_array_spec(): Unhandled array shape type.show_code_node(): Bad statement codeshow_expr(): Bad intrinsic in expressionshow_expr(): Don't know how to show exprshow_ref(): Bad component codesibcall edges for non-call insn in bb %iside effects not recomputed when %<ADDR_EXPR%> changedside-effects element in no-side-effects CONSTRUCTORside-effects in input operand outside of a functionside-effects in output operand outside of a functionsigned conversion from %qT to %qT changes the value of %qEsigned conversion from %qT to %qT changes value from %qE to %qEsignedness of type and machine mode %qs don%'t matchsimple IFsimplify_intrinsic_op(): Bad operatorsimplify_min_max(): Bad type in arglistsingle %<target_clones%> attribute is ignoredsize %qE of array %qE exceeds maximum object size %qEsize %qE of array %qE is negativesize %qE of array exceeds maximum object size %qEsize %qE of array is negativesize in array new must have integral typesize is too largesize mismatch in argument %d of %qEsize of %q+D %E bytes exceeds maximum object size %wusize of %qD differ from the size of original declarationsize of %qs (%wd) differ from its declared size (%wd)size of array %qD has non-integral type %qTsize of array %qD is not an integral constant-expressionsize of array %qE exceeds maximum object size %qEsize of array %qE has incomplete typesize of array %qE has non-integer typesize of array %qE is negativesize of array %qE is not a constant expressionsize of array %qE is too largesize of array element is not a multiple of its alignmentsize of array exceeds maximum object size %qEsize of array has non-integral type %qTsize of array is not a constant expressionsize of array is not an integral constant-expressionsize of array is too largesize of loop %d should be %d, not %dsize of return value of %q+D is %u bytessize of return value of %q+D is larger than %wu bytessize of string literal is too largesize of type %qT is too large (%qE bytes)size of unnamed array has incomplete typesize of unnamed array has non-integer typesize of unnamed array is negativesize of unnamed array is too largesize of variable %q+D is too largesize ranges of option %qs should be increasingsizeof(long double) is 12.sizeof(long double) is 16.slice can only be compared to nilso any instantiation with a non-empty parameter pack would be ill-formedsoft-float and long-double-128 are incompatiblesome candidates omitted; use %<-fdiagnostics-all-candidates%> to display themsome parts of macro expansion are not guarded by this %qs clausesorry, unimplementedsorry, unimplemented: sorry: semantics of inline function static data %q#D are wrong (you%'ll wind up with multiple copies)sorry: semantics of inline variable %q#D are wrong (you%'ll wind up with multiple copies)source is a pointer to incomplete typesource is not a pointersource is not a pointer to classsource is not of class typesource is of incomplete class typesource locations for function %qD have changed, the profile data may be out of datesource object %qE of size %ssource object allocated heresource object is likely at address zerosource object of size %s allocated by %qEsource type is not polymorphicspace between quotes and suffix is deprecated in C++23space followed by punctuation character %<%c%>spec %qs has invalid %<%%0%c%>spec %qs has invalid %<%%@%c%>spec %qs has invalid %<%%W%c%>spec %qs has invalid %<%%x%c%>spec %qs invalidspec failure: %<%%*%> has not been initialized by pattern matchspec failure: more than one argument to %<SYSROOT_HEADERS_SUFFIX_SPEC%>spec failure: more than one argument to %<SYSROOT_SUFFIX_SPEC%>spec failure: unrecognized spec option %qcspec file has no spec for linkingspec is '%s'
  
! spec-generated switch is just %<-%>spec_dimen_size(): Bad dimensionspecialization %qT after instantiation %qTspecialization of %qD after instantiationspecialization of %qD in different namespacespecialization of %qD must appear at namespace scopespecialization of %qT after instantiationspecialization of alias template %qDspecialization of implicitly-declared special member functionspecialization of variable template %qD declared as functionspecializing member %<%T::%E%> requires %<template<>%> syntaxspecified bound %E exceeds destination size %Especified bound %E exceeds maximum object size %Especified bound %E exceeds source size %Especified bound %E may exceed destination size %Especified bound %E may exceed maximum object size %Especified bound %E may exceed source size %Especified bound %wu exceeds %<INT_MAX%>specified bound %wu exceeds maximum object size %wuspecified bound %wu exceeds the size %wu of the destination objectspecified bound [%E, %E] exceeds destination size %Especified bound [%E, %E] exceeds maximum object size %Especified bound [%E, %E] exceeds source size %Especified bound [%E, %E] may exceed maximum object size %Especified bound [%E, %E] may exceed source size %Especified bound range [%wu, %wu] exceeds %<INT_MAX%>specified mode too small for enumerated valuesspecified option %qs more than oncespecified size %E exceeds maximum object size %Especified size %E may exceed maximum object size %Especified size between %E and %E exceeds maximum object size %Especified size between %E and %E may exceed maximum object size %Especify a system register with a small string lengthspecify the library order, the libraries may be specified by a comma separated abbreviation: log,min,pim,iso or by directory names: m2log,m2min,m2pim,m2iso.specify the list of runtime modules and their initialization orderspecify the module mangled prefix namespecify the module mangled prefix name for all modules in the following include pathsspecifying vector types with %<__attribute__ ((mode))%> is deprecatedspecs %%include syntax malformed after %td charactersspecs %%rename syntax malformed after %td charactersspecs %s spec was not found to be renamedspecs file malformed after %td charactersspecs unknown %% command after %td charactersspeculative edges are not adjacentspurious %<>>%>, use %<>%> to terminate a template argument listspurious leading punctuation sequence %<%.*s%> in formatspurious trailing %<%%%> in formatspurious trailing punctuation sequence %<%.*s%> in formatspurious trailing space in formatstack clash guard size %<%d%> must be equal to probing interval %<%d%>stack frame must be smaller than 64Kstack frame not a multiple of 8 bytes: %wdstack frame not a multiple of octabyte: %wdstack frame too largestack guard value must be an exact power of 2stack limit expression is not supportedstack limits not supported on this targetstack probes for SVE framesstack probing requires %<-maccumulate-outgoing-args%> for correctnessstack probing requires %<target("accumulate-outgoing-args")%> for correctnessstack protector not protecting function: all local arrays are less than %d bytes longstack protector not protecting local variables: variable length bufferstack register used for global register variablestack size must be an exact power of 2stack size must be greater than the stack guard valuestack size must not be greater than 64kstack usage computation not supported for this targetstack usage is %wu bytesstack usage might be %wu bytesstack usage might be unboundedstackframe too big: %d bytesstandalone OpenMP directives in %<omp::directive%> attribute can only appear on an empty statementstandard %qE attribute can only be applied to function declarators or type specifiers with function typestandard %qE attribute can only be applied to functionsstandard attributes in middle of decl-specifiersstandard attributes must precede the decl-specifiers to apply to the declaration, or follow them to apply to the typestandard attributes on namespaces must precede the namespace namestart of RTL fragment must be on an earlier line than endstart of implied-do loop at %L could not be simplified to a constant valuestart/end of RTL fragment are in different filesstatement cannot resolve address of overloaded functionstatement has no effectstatement is a reference, not call, to function %qEstatement is not a constant expressionstatement marked for throw in middle of blockstatement marked for throw, but doesn%'tstatement uses released SSA namestatement volatile flag not up to datestatement will never be executedstatement with no effectstatement-expressions are not allowed outside functions nor in template-argument listsstatic assertion failedstatic assertion failed: %.*sstatic assertion failed: %Estatic attribute %qs declaration for %q+D needs an addressstatic chain with function that doesn%'t use onestatic data member %qD in unnamed classstatic data member %qE declared %qsstatic data member is not name-independentstatic declaration of %q+D follows non-static declarationstatic initialization of variable %q+D in %<.shared%> memory is not supportedstatic is not supported on TPF-OSstatic member %qD cannot be a bit-fieldstatic member %qD declared %<register%>static member function %q#D declared with type qualifiersstatic member function %qD cannot have cv-qualifierstatic member function %qD cannot have ref-qualifierstatic or type qualifiers in non-parameter array declaratorstatic structured binding is not name-independentstatic type %qT of its operand is a non-public base class of dynamic type %qTstatic variable is not name-independentstatically allocated instance of Objective-C class %qEstdcall and cdecl attributes are not compatiblestdcall and fastcall attributes are not compatiblestdcall and thiscall attributes are not compatiblestep expression refers to outer iterator %qDstep of implied-do loop at %L could not be simplified to a constant valuestep of implied-do loop at %L shall not be zerostmt (%p) marked modified after optimization pass: stmt with wrong VUSEstmts without blockstorage class %<__thread%> invalid for function %qsstorage class %<auto%> invalid for function %qsstorage class %<register%> invalid for function %qsstorage class %<thread_local%> invalid for function %qsstorage class %qD applied to template instantiationstorage class specified for %qsstorage class specified for parameter %qEstorage class specified for parameter %qsstorage class specified for structure fieldstorage class specified for structure field %qEstorage class specified for template parameter %qsstorage class specified for typenamestorage class specified for unnamed parameterstorage class specifier in %<sizeof%>storage class specifier in %qEstorage class specifier in caststorage class specifier in empty declaration with %<enum%> underlying typestorage class specifiers invalid in friend function declarationsstorage size of %q+D isn%'t constantstorage size of %q+D isn%'t knownstorage size of %qD has not been resolvedstorage size of %qD isn%'t constantstorage size of %qD isn%'t knownstoring the address of local variable %qD in %qEstrange device name %qs after %qs: bad character %qcstrategy name %qs specified for option %qs not supported for 32-bit codestray %<,%> at end of member declarationstray %<@%> in programstray %<\%o%> in programstray %qc in programstray %qs between Objective-C++ methodsstray %qs in programstreaming functions require the ISA extension %qsstreaming subprocess failedstreaming subprocess was killed by signalstrftime formats cannot format argumentsstring length %qd is greater than the length %qd ISO C%d compilers are required to supportstring literal must not contain %<\0%>string literal with user-defined suffix is invalid in this contextstrong-cast assignment has been interceptedstrong-cast may possibly be neededstruct defined herestruct has no membersstruct has no named membersstructure alignment must be a small power of two, not %wustructure containing a flexible array member is not at the end of another structurestructure fieldstructure size boundary can only be set to 8 or 32structure size boundary can only be set to 8, 32 or 64structured binding at namespace scope is not name-independentstructured binding declaration can be %qs only in %<-std=c++20%> or %<-std=gnu++20%>structured binding declaration cannot be %qsstructured binding declaration cannot be C++98 %<auto%>structured binding declaration cannot have constrained %<auto%> type %qTstructured binding declaration cannot have type %qTstructured binding declaration set but not usedstructured binding has incomplete type %qTstructured binding refers to incomplete class type %qTstructured binding refers to incomplete type %qTstructured bindings in conditions only available with %<-std=c++2c%> or %<-std=gnu++2c%>structured bindings only available with %<-std=c++17%> or %<-std=gnu++17%>structured bindings with attributed identifiers only available with %<-std=c++2c%> or %<-std=gnu++2c%>subframework include %s conflicts with framework includesubobject %qD declared heresubprogram %q+F not marked %<Inline%>subprogram %q+F not marked %<Inline_Always%>subscript missing in array referencesubscripted value is neither array nor pointersubscripted value is neither array nor pointer nor vectorsubscripted value is pointer to functionsubscripting array declared %<register%>subsequently declared as %s with %u unspecified variable boundsubsequently declared as %s with %u unspecified variable boundssubstitution of deduced template arguments resulted in errors seen abovesuggest braces around empty body in %<do%> statementsuggest braces around empty body in an %<else%> statementsuggest braces around empty body in an %<if%> statementsuggest explicit braces around empty body in %<do%> statementsuggest explicit braces to avoid ambiguous %<else%>suggest parentheses around %<&&%> within %<||%>suggest parentheses around %<+%> in operand of %<&%>suggest parentheses around %<+%> inside %<<<%>suggest parentheses around %<+%> inside %<>>%>suggest parentheses around %<-%> in operand of %<&%>suggest parentheses around %<-%> inside %<<<%>suggest parentheses around %<-%> inside %<>>%>suggest parentheses around %<>>%> expressionsuggest parentheses around arithmetic in operand of %<^%>suggest parentheses around arithmetic in operand of %<|%>suggest parentheses around assignment used as truth valuesuggest parentheses around comparison in operand of %<!=%>suggest parentheses around comparison in operand of %<&%>suggest parentheses around comparison in operand of %<==%>suggest parentheses around comparison in operand of %<^%>suggest parentheses around comparison in operand of %<|%>suggest parentheses around operand of %<!%> or change %<&%> to %<&&%> or %<!%> to %<~%>suggest parentheses around operand of %<!%> or change %<|%> to %<||%> or %<!%> to %<~%>suggested alternative:suggested alternatives:support for mode %qssupported core architectures:%sswitch %<-mcpu=%s%> conflicts with %<-march=%s%> switch and resulted in options %qs being addedswitch %<-mcpu=%s%> conflicts with switch %<-march=%s%>switch %qs does not start with %<-%>switch %qs is no longer supportedswitch condition has boolean valueswitch jumps into statement expressionswitch jumps over OpenMP %<allocate%> allocationswitch jumps over variable initializationswitch missing default caseswitch quantity not an integerswitch starts hereswitch statement of size %lu entries too largesymbol %qD referenced by %qD declared heresymbol needs to be defined to have a versionsymbol used as immediate operandsymbol used with both base and indexed registerssymbol with offset used in PIC modesymbolic memory references are only supported on z10 or latersymtab_node::verify failedsymver attribute argument must have format %<name@nodename%>symver is not exported with default visibilitysymver is only supported on ELF platformssymver target is not exported with default visibilitysynthesized method %qD first required heresystem path %qs is not absolutetail call production failedtail recursion with accumulation mixed with musttail non-recursive calltail recursion with pointers can only use additionstaking address of an immediate function %qDtaking address of constructor %qDtaking address of destructor %qDtaking address of expression of type %<void%>taking address of packed member of %qT may result in an unaligned pointer valuetaking address of rvaluetaking the absolute value of unsigned type %qT has no effecttaking the address of a label is non-standardtarget & host is %qs:%qs, expected %qs:%qstarget CPU does not support ARM modetarget CPU does not support ARMv8-M Security Extensionstarget CPU does not support THUMB instructionstarget CPU does not support interworkingtarget CPU does not support unaligned accessestarget OS does not support unaligned accessestarget argumenttarget attribute or pragma changes %<long double%> sizetarget attribute or pragma changes AltiVec ABItarget attribute or pragma changes darwin64 ABItarget does not support atomic profile update, single mode is selectedtarget does not support function version dispatchertarget format does not support infinitytarget is not able to optimize the call into a sibling calltarget is not pointer or referencetarget is not pointer or reference to classtarget is not pointer or reference to complete typetarget of conversion might be a candidate for a format attributetarget of initialization might be a candidate for a format attributetarget specific builtin not availabletarget specific option mismatchtarget system does not support debug outputtarget system does not support the %qs debug formattargets missing after %qstemplate %qD declaredtemplate %qE in clause %qstemplate argument %d is invalidtemplate argument %qE for type %qT not a compile-time constanttemplate argument deduction/substitution failed:template argument for %qD uses local type %qTtemplate argument required for %<%s %T%>template arguments to %qD do not match original template %qDtemplate class without a nametemplate constraint failure for %qDtemplate declaration of %<typedef%>template declaration of %q#Dtemplate definition of non-template %q#Dtemplate instantiation depth exceeds maximum of %d (use %<-ftemplate-depth=%> to increase the maximum)template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use %<-ftemplate-depth=%> to increase the maximum)template parameter %q+#Dtemplate parameter %qD declared heretemplate parameter %qD of type %qT is not allowed in an integral constant expression because it is not of integral or enumeration typetemplate parameter list used in explicit instantiationtemplate parameter lists provided don%'t match the template parameters of %qDtemplate parameter pack %qD cannot have a default argumenttemplate parameter pack cannot have a default argumenttemplate parameter packs cannot have default argumentstemplate parameter type %qT declared %<friend%>template parameters cannot be friendstemplate parameters do not match template %qDtemplate parameters not deducible in partial specialization:template specialization of %qD not allowed by ISO C++template specialization with C linkagetemplate specifiers not specified in declaration of %qDtemplate template parameter %qT in declaration of deduction guidetemplate type parameters must use the keyword %<class%> or %<typename%>template with C linkagetemplate-id %qD for %q+D does not match any template declarationtemplate-id %qD used as a declaratortemplate-id %qE in declaration of primary templatetemplate-id not allowed for constructor in C++20template-id not allowed for destructor in C++20template-parameter-templates may not be %<virtual%>temporary of non-literal type %qT in a constant expressionternary %<operator?:%>ternary %<operator?:%> in %<%E ? %E : %E%>testing if a concept-id is a valid expression; add %<requires%> to check satisfactionthe %<audit%> semantic should be at least as strong as the %<default%> semanticthe %<bool%> keyword is not allowed in a C++20 concept definitionthe %<destroy%> expression %qE should be the same as the %<depobj%> argument %qEthe %<device%> clause expression must evaluate to %<1%>the %<device%> clause expression must evaluate to %<1%> at %Cthe %<device%> clause must be present if the %<interop%> clause has more than one list itemthe %<interrupt%> attribute requires a MIPS32r2 processor or greaterthe %<simd%> selector is not permitted in a %<begin declare variant%> context selectorthe %qE attribute cannot be applied to an SVE function typethe %qE attribute requires argumentsthe %qs architecture does not support %<-m%s=2008%>the %qs architecture does not support %<-m%s=legacy%>the %qs architecture does not support %<-mfp32%>the %qs architecture does not support DSP instructionsthe %qs architecture does not support branch-likely instructionsthe %qs architecture does not support madd or msub instructionsthe %qs architecture does not support odd single-precision registersthe %qs architecture does not support paired-single instructionsthe %qs architecture does not support the synci instructionthe %qs clause at %L can only be specified if the %<dispatch%> selector of the construct selector set appears in the %<match%> clausethe %qs clause can only be specified if the %<dispatch%> selector of the construct selector set appears in the %<match%> clause at %Lthe %qs debug info cannot be used with pre-compiled headersthe ' ' printf flagthe '!' strfmon flagthe '#' printf flagthe '#' strftime flagthe ''' printf flagthe ''' scanf flagthe '(' strfmon flagthe '+' printf flagthe '+' strfmon flagthe '-' printf flagthe '-' strfmon flagthe '-' strftime flagthe '0' printf flagthe '0' strftime flagthe 'E' strftime modifierthe 'I' printf flagthe 'I' scanf flagthe 'O' modifierthe 'O' strftime modifierthe '^' strfmon flagthe '^' strftime flagthe '_' strftime flagthe 'a' scanf flagthe 'm' scanf flagthe 'q' diagnostic flagthe -shared option is not currently supported for VAX ELFthe ABI for passing a value containing zero-width fields before an adjacent 64-bit floating-point field was changed in GCC %{12.1%}the ABI for passing parameters with %d-byte alignment has changed in GCC 4.6the ABI for returning a value containing zero-width bit-fields but otherwise an aggregate with only one or two floating-point fields was changed in GCC %{12.1%}the ABI for returning a value with C++17 empty bases but otherwise an aggregate with only one or two floating-point fields was changed in GCC %{12.1%}the ABI of passing C structures with zero-width bit-fields has changed in GCC %{12.1%}the ABI of passing struct with a flexible array member has changed in GCC 4.4the ABI of passing structure with %<complex float%> member has changed in GCC 4.4the ABI of passing union with %<long double%> has changed in GCC 4.4the RX100 cpu does not have FPU hardwarethe RX200 cpu does not have FPU hardwarethe address %qE will never be NULLthe address of %qD is not a valid template argumentthe address of %qD is not a valid template argument because it does not have static storage durationthe address of %qD will always evaluate as %<true%>the address of %qD will never be %<null%>the address of %qD will never be NULLthe address of a label cannot appear in a constant-expressionthe address of the %qT subobject of %qD is not a valid template argumentthe align argument to %<__builtin_coro_promise%> must be a constantthe alignment of %<_Atomic %T%> fields changed in %{GCC 11.1%}the argument to %<__builtin_counted_by_ref%> must be an arraythe argument to %<xabort%> intrinsic must be an 8-bit immediatethe arguments to %qE must be constant stringsthe assignment suppression scanf featurethe call requires %<ifunc%>, which is not supported by this targetthe calling convention for %qT changes in %<-fabi-version=13%> (GCC 8.2)the combination of %qs and %qs is incompatible with %qsthe comparison reduces to %qEthe comparison will always evaluate as %<false%> for the address of %qE will never be NULLthe comparison will always evaluate as %<false%> for the pointer operand in %qE must not be NULLthe comparison will always evaluate as %<true%> for the address of %qE will never be NULLthe comparison will always evaluate as %<true%> for the pointer operand in %qE must not be NULLthe compiler can assume that the address of %qD will always evaluate to %<true%>the compiler can assume that the address of %qD will never be NULLthe compiler can assume that the address of %qE will never be NULLthe component %qs is a PRIVATE type and cannot be a component of %qs, which is PUBLIC at %Lthe conflicting type defined in another translation unitthe conflicting type defined in another translation unit has virtual table of different sizethe conflicting type defined in another translation unit has virtual table with different contentsthe conflicting type defined in another translation unit has virtual table with more entriesthe conflicting type defined in another translation unit with different RTTI informationthe content of uninitialized storage is not usable in a constant expressionthe control flow of function %qD does not match its profile data (counter %qs)the coroutine promise type %qT declares both %<return_value%> and %<return_void%>the count should be no less than 0; please check the intrinsic %qs in codethe default value for the current CPU tuning is %d bytesthe direction argument to %<__builtin_coro_promise%> must be a constantthe dot syntax is not available in Objective-C 1.0the ellipsis in %qD is not inheritedthe event handle of a %<detach%> clause should not be in a data-sharing clausethe expression %qE evaluated to %<false%>the expression %qE is required to be non-throwingthe extra base is defined herethe fifth argument must be an 8-bit immediatethe first argument of a %qs must be of a boolean vector type of the same number of elements as the resultthe first difference of corresponding definitions is field %qDthe first difference of corresponding definitions is method %qDthe first parameter of %<operator new%> cannot have a default argumentthe fourth argument must be one of enum %qsthe frame size of %wu bytes is larger than %wu bytesthe immediate argument must be a 4-bit immediatethe immediate argument must be a 5-bit immediatethe immediate argument must be an 8-bit immediatethe incompatible selection was determined by ultimate alias target %qDthe incompatible type defined in another translation unitthe incompatible type is defined herethe lambda has no capture-defaultthe last argument must be a 1-bit immediatethe last argument must be a 2-bit immediatethe last argument must be a 3-bit immediatethe last argument must be a 32-bit immediatethe last argument must be a 4-bit immediatethe last argument must be a 5-bit immediatethe last argument must be an 1-bit immediatethe last argument must be an 8-bit immediatethe last argument must be scale 1, 2, 4, 8the location value is corruptthe m210 does not have little endian supportthe macro %qs had not yet been definedthe mangled name of %qD changed between %<%s=%d%> (%qD) and %<%s=%d%> (%qD)the mangled name of %qD changes between %<%s=%d%> (%qD) and %<%s=%d%> (%qD)the mangled name of %qD changes between %<-fabi-version=%d%> and %<-fabi-version=%d%>the mangled name of %qT changed in %<-fabi-version=20%> (GCC 15.1)the mangled name of %qT changes in %<-fabi-version=20%> (GCC 15.1)the mangled name of a thunk for %qD changes between %<-fabi-version=%d%> and %<-fabi-version=%d%>the mangled name of the initialization guard variable for %qD changes between %<-fabi-version=%d%> and %<-fabi-version=%d%>the max value for the last size range should be -1 for option %qsthe message attached to %<unavailable%> is not a stringthe modules initialization order is dynamically determined by M2RTS and application dependenciesthe next to last argument must be an 8-bit immediatethe omitted middle operand in %<?:%> will always be %<true%>, suggest explicit middle operandthe operand %qE is unsatisfied becausethe passed in closure object will not be mutated because it is taken by valuethe program should also define %qDthe range of count should be in 0 to 16; please check the intrinsic %qs in codethe range of count should be in 0 to 32; please check the intrinsic %qs in codethe range of count should be in 0 to 64; please check the intrinsic %qs in codethe range of mask should be in 0 to 255the range of selector should be in 0 to 1the range of selector should be in 0 to 3the range of selector should be in 0 to 7the register %qs cannot be clobbered in %<asm%> for the current targetthe register specified for %q+D cannot be accessed by the current targetthe register specified for %q+D is not general enough to be used as a register variablethe required expression %qE is invalidthe required expression %qE is invalid, becausethe required type %qT is invalidthe required type %qT is invalid, becausethe result for the xxspltidp instruction is undefined for subnormal input valuesthe result of the conversion is unspecified because %qE is outside the range of type %qTthe same loop iteration variables %qD used in multiple associated loopsthe target does not support %<asm goto%> with outputs in %<asm%>the third argument must be an 8-bit immediatethe third argument must be comparison constantthe type %qT of %<constexpr%> variable %qD is not literalthe type being destroyed is %qT, but the destructor refers to %qTthe type of a pointer to explicit object member function is a regular pointer to function typethe type of an explicit object member function is a regular function typethe value of %qD is not usable in a constant expressionthe value of the stack pointer after an %<asm%> statement must be the same as it was before the statementthere are no arguments to %qD that depend on a template parameter, so a declaration of %qD must be availablethere is %i candidatethere are %i candidatesthird argument of %q+D should probably be %<char **%>third argument to %<__builtin_prefetch%> must be a constantthird argument to function %qE must be a constant integerthird operand of conditional expression cannot resolve address of overloaded functionthird operand of conditional expression has no effectthird operand of conditional expression is a reference, not call, to function %qEthird operand to the conditional operator is of type %<void%>, but the second operand is neither a throw-expression nor of type %<void%>this %qs clause does not guard...this built-in function is only available on the fr405 and fr450this built-in function is only available on the fr450this built-in function is only available on the fr500 and fr550this built-in function is only available on the v3f toolchainthis built-in function is only available on the v3s or v3f toolchainthis built-in function not support on the v3m toolchainthis builtin is not supported for this targetthis compiler does not support %qsthis compiler does not support PowerPC (%<-arch%> option ignored)this compiler does not support x86 (%<-arch%> option ignored)this condition has identical branchesthis decimal constant is unsigned only in ISO C90this decimal constant would be unsigned in ISO C90this definition requires MVE types, please include %qsthis definition requires the MVE ISA extensionthis flexibility is deprecated and will be removedthis is a GCC bug that can be worked around by adding attribute used to function calledthis is a testthis is the first default labelthis is the first entry overlapping that valuethis is the insn:this media function is only available on the fr400 and fr550this media function is only available on the fr500this operation requires the RVV ISA extensionthis operation requires the SVE ISA extensionthis statement may fall throughthis target does not define a speculation barrier; your program will still execute correctly, but incorrect speculation may not be restrictedthis target does not support %qsthis target is little-endianthis target machine does not have delayed branchesthis warning should be skippedthread-local COMMON data not implementedthread-local declaration of %q#D follows non-thread-local declarationthread-local declaration of %q+D follows non-thread-local declarationthreadprivate iteration variable %qDthreadprivate variable %qE used in a region with %<order(concurrent)%> clausethreadprivate variable %qE used in target regionthreadprivate variable %qE used in untied taskthree-way comparison of %qD has type %qT, not a comparison category typethree-way comparison of %qD has type %qT, which does not convert to %qTthree-way comparison of vectorsthrowing NULL, which has integral, not pointer typethunk-inline is only supported with %<-mindirect-branch-jump%>to be allocated variable declared hereto be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualifiedto generate dependencies you must specify either %<-M%> or %<-MM%>to match this %qsto refer to a type member of a template parameter, use %<typename %E%>token %u has %<x-location == %llu%>token %u has %<x-location == y-location == %llu%>token %u has %<y-location == %llu%>too few arguments to %%:version-comparetoo few arguments to %<__builtin_tgmath%>too few arguments to built-in function %qE expecting %utoo few arguments to constructor %q#Dtoo few arguments to functiontoo few arguments to function %<va_start%>too few arguments to function %q#Dtoo few arguments to function %qEtoo few arguments to function %qE; expected %i, have %itoo few arguments to function %qE; expected at least %i, have %itoo few arguments to member function %q#Dtoo few arguments to method %q#Dtoo few template parameter lists in declaration of %qDtoo few template-parameter-liststoo large function value type, needs %d registers, have only %d registers for thistoo late for # directive to set debug directorytoo many %<#pragma options align=reset%>too many %<...%> in lambda capturetoo many %<always%> modifierstoo many %<always%> modifiers at %Ltoo many %<close%> modifierstoo many %<close%> modifiers at %Ltoo many %<defaultmap%> clauses with %qs categorytoo many %<defaultmap%> clauses with unspecified categorytoo many %<if%> clausestoo many %<if%> clauses with %qs modifiertoo many %<if%> clauses without modifiertoo many %<match%> clausestoo many %<otherwise%> or %<default%> clauses in %<metadirective%>too many %<otherwise%> or %<default%> clauses in %<metadirective%> at %Ctoo many %<present%> modifierstoo many %<present%> modifiers at %Ltoo many %<self%> clausestoo many %<static%> argumentstoo many %qs clausestoo many %qs clauses on a task constructtoo many alternatives in %<asm%>too many argumentstoo many arguments for %%:dumpstoo many arguments for formattoo many arguments for partial specialization %qTtoo many arguments passed in sgpr registerstoo many arguments to %%:compare-debug-dump-opttoo many arguments to %%:compare-debug-self-opttoo many arguments to %%:version-comparetoo many arguments to built-in function %qE expecting %dtoo many arguments to constructor %q#Dtoo many arguments to functiontoo many arguments to function %q#Dtoo many arguments to function %qEtoo many arguments to function %qE; expected %i, have %itoo many arguments to maketoo many arguments to member function %q#Dtoo many arguments to method %q#Dtoo many arguments to method %qE; expected %i, have %itoo many atomic clausestoo many braces around initializer for %qTtoo many braces around scalar initializer for type %qTtoo many exception handling edges in bb %itoo many filenames given; type %<%s %s%> for usagetoo many function arguments for eBPFtoo many initializers for %qTtoo many input filestoo many loop exits recordedtoo many memory order clausestoo many open parenstoo many outgoing branch edges from bb %itoo many size ranges specified in option %qstoo many template headers for %qD (should be %d)too many template parameter lists in declaration of %qDtoo many template-parameter-liststoo many values in return statementtoo many variables for range clause with channeltoo much stack space to dispose of: %dtoo much stack space to prepare: %dtop-level comma expression in array subscript changed meaning in C++23top-level comma expression in array subscript is deprecatedtop-level declaration of %qs specifies %<auto%>toplevel reorder must be disabled when unit-at-a-time is disabledtotal size and element size must be a nonzero constant immediatetotal size of local objects %wu exceeds maximum %wutotal size of local objects exceeds maximum %wutotal size of local objects is too largetotal size of local variables exceeds architecture limittp_first_run must be non-negativetraditional C lacks a separate namespace for labels, identifier %qE conflictstraditional C rejects ISO C style function definitionstraditional C rejects automatic aggregate initializationtraditional C rejects initialization of unionstraditional C rejects string constant concatenationtraditional C rejects the unary plus operatortrailing %<,%> in arguments for %<#pragma GCC diagnostic ignored_attributes%>trailing %<,%> in arguments for %<-Wno-attributes=%>trailing argument to %<__type_pack_element%> is not a typetrailing array %qT should not be used as a flexible array membertrailing return type %qT of deduction guide is not a specialization of %qTtrailing return type only available with %<-std=c++11%> or %<-std=gnu++11%>trait-property %qs specified more than once in %qs selectortrampoline generated for nested function %qDtransactional memory is not supported with %<-fsanitize=address%>transactional memory is not supported with %<-fsanitize=kernel-address%>transactional memory is not supported with non-call exceptionstransformational intrinsic %qs at %L is not permitted in an initialization expressiontrap mode not supported for VAX floatstree check: %s, have %s in %s, at %s:%dtree check: accessed elt %d of %<tree_int_cst%> with %d elts in %s, at %s:%dtree check: accessed elt %d of %<tree_vec%> with %d elts in %s, at %s:%dtree check: accessed operand %d of %<omp_clause %s%> with %d operands in %s, at %s:%dtree check: accessed operand %d of %s with %d operands in %s, at %s:%dtree check: did not expect class %qs, have %qs (%s) in %s, at %s:%dtree check: expected %<omp_clause %s%>, have %qs in %s, at %s:%dtree check: expected class %qs, have %qs (%s) in %s, at %s:%dtree check: expected none of %s, have %s in %s, at %s:%dtree check: expected tree that contains %qs structure, have %qs in %s, at %s:%dtree code %qs is not supported in LTO streamstree list ends on depth %itried to perform floating-point modulo division on %qTtrue/false edge after a non-GIMPLE_COND in bb %dtry making the operator a %<const%> member functiontry removing the parentheses around the type-idtry using %qE insteadtrying to capture %qD in instantiation of generic lambdatrying to encode non-integer type as a bit-fieldtrying to finish struct, but kicked out due to previous parse errorstrying to make class %qT a friend of global scopetuning string missing in option (%s)turn on internal debug tracing for quad,token,line,all (internal switch)turn on internal debugging of the compiler (internal switch)turn on tracing of procedure line numbers (internal switch)turns on all division and modulus by zero checking for ordinal valuesturns on all range checking for numerical valuesturns on all software runtime checking (an abbreviation for -fnil -frange -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue)turns on case statement label compile time checking when using an expression of an enum type.turns on compile time analysis in the first basic block of a procedure detecting access to uninitialized data.turns on compile time analysis to detect access to uninitialized variables, the checking can be specified by: known,cond,all.turns on runtime checking for functions which finish without executing a RETURN statementturns on runtime checking to check whether a CASE statement requires an ELSE clause when one was not specifiedturns on runtime checking to check whether a floating point number will exceed rangeturns on runtime checking to check whether a whole number will exceed rangeturns on runtime checking to detect accessing data through a NIL value pointerturns on runtime subrange, array index and indirection via NIL pointer checkingtwo consecutive %<[%> shall only introduce an attributetwo different outer iteration variables %qD and %qD used in a single looptwo or more data types in declaration of %qstwo or more data types in declaration specifierstwo or more sections for %stype %<__vector_pair%> requires the %qs optiontype %<__vector_quad%> requires the %qs optiontype %q#T argument given to %<delete%>, expected pointertype %qE has a user-defined constructortype %qE has a user-defined destructortype %qE has no default constructor to calltype %qE has virtual member functionstype %qT (typedef of %qT) violates the C++ One Definition Ruletype %qT defined in anonymous namespace cannot match across the translation unit boundarytype %qT defined in anonymous namespace cannot match type %qT across the translation unit boundarytype %qT does not have a known sizetype %qT for explicit instantiation %qD does not match declared type %qTtype %qT is not a base type for type %qTtype %qT is not a direct base of %qTtype %qT is not a direct or virtual base of %qTtype %qT is too largetype %qT itself violates the C++ One Definition Ruletype %qT of argument to %<__builtin_launder%> is not a pointer to object typetype %qT of template argument %qE depends on a template parametertype %qT of template argument %qE depends on template parameterstype %qT should match type %qTtype %qT violates the C++ One Definition Ruletype %qT with no linkage used to declare function %q#D with linkagetype %qT with no linkage used to declare variable %q#D with linkagetype %qs does not conform to the %qE protocoltype %qs is not an expressiontype %qs violates the C++ One Definition Ruletype %s differs by %<TYPE_ALIGN%>type %s differs by %<TYPE_MODE%>type %s differs by %<TYPE_SIZE%>type %s differs by %<TYPE_USER_ALIGN%>type %s is not an opaque typetype %s is not with opaque modetype assertion only valid for interface typestype attributes ignored after type is already definedtype defaults to %<int%> in declaration of %qEtype defaults to %<int%> in type nametype has no methodstype is deprecatedtype is deprecated: %stype is not compatible with its varianttype is unavailabletype is unavailable: %stype mismatch between an SSA_NAME and its symboltype mismatch for case label in switch statementtype mismatch in %qstype mismatch in %qs expressiontype mismatch in %qs referencetype mismatch in binary expressiontype mismatch in conditional expressiontype mismatch in parameter %itype must be cv-qualified %<auto%> or reference to cv-qualified %<auto%>type name %qs should match type name %qstype name declared as function returning a functiontype name declared as function returning an arraytype of %<asm%> operand %qE could not be determinedtype of %<depobj%> expression is not %<omp_depend_t%>type of %qD defaults to %<int%>type of %qD does not match original declarationtype of %qE is unknowntype of array %q+D completed incompatibly with implicit initializationtype of bit-field %qs is a GCC extensiontype of formal parameter %d is incompletetype of iterator %qD refers to outer iterator %qDtype of property %qD conflicts with previous declarationtype precision mismatch in switch statementtype punning toggles scalar storage ordertype qualifier in empty declaration with %<enum%> underlying typetype qualifiers ignored on cast result typetype qualifiers ignored on function return typetype to vector delete is neither pointer or array typetype transparent %q#T cannot be made transparent because the type of the first field has a different ABI from the class overalltype transparent %q#T does not have any fieldstype transparent class %qT has base classestype transparent class %qT has virtual functionstype variant differs by %stype variant has different %<TREE_TYPE%>type variant has different %<TYPE_BINFO%>type variant has different %<TYPE_FIELDS%>type variant has different %<TYPE_SIZE_UNIT%>type variant has different %<TYPE_VFIELD%>type variant with %<TYPE_ALIAS_SET_KNOWN_P%>type variant%'s %<TREE_TYPE%>type variant%'s %<TYPE_BINFO%>type variant%'s %<TYPE_SIZE_UNIT%>type was previously declared %qEtype%'s %<TREE_TYPE%>type%'s %<TYPE_BINFO%>type%'s %<TYPE_SIZE_UNIT%>type-punning to incomplete type might break strict-aliasing rulestype-specifier invalid in lambdatype/value mismatch at argument %d in template parameter list for %qDtypedef %q+D declared %<_Noreturn%>typedef %q+D declared %<inline%>typedef %qD is initialized (use %<__typeof__%> instead)typedef %qD is initialized (use %qs instead)typedef %qD locally defined but not usedtypedef declaration invalid in parameter declarationtypedef declared %<auto%>typedef may not be a function definitiontypedef may not be a member function definitiontypedef name may not be a nested-name-specifiertypedef-name %qD used as destructor declaratortypes are not quite compatibletypes differ in signednesstypes have different parameter countstypes may not be defined in %<__builtin_classify_type%> callstypes may not be defined in %<decltype%> expressionstypes may not be defined in %<noexcept%> expressionstypes may not be defined in %qs expressionstypes may not be defined in a %<typeid%> expressiontypes may not be defined in a conversion-type-idtypes may not be defined in a for-range-declarationtypes may not be defined in a new-expressiontypes may not be defined in a new-type-idtypes may not be defined in alias template declarationstypes may not be defined in an exception-specificationtypes may not be defined in caststypes may not be defined in conditionstypes may not be defined in declare reduction type listtypes may not be defined in enum-basetypes may not be defined in exception-declarationstypes may not be defined in explicit-specifiertypes may not be defined in iterator typetypes may not be defined in parameter typestypes may not be defined in template argumentstypes may not be defined within %<__builtin_offsetof%>typespec in ALLOCATE at %Lunable to compute real location of stacked parameterunable to deduce %qT from %qEunable to deduce lambda return type from %qEunable to determine filename for SARIF outputunable to emulate %qsunable to find a register to spillunable to find a register to spill in class %qsunable to find character literal operator %qD with %qT argumentunable to find numeric literal operator %qDunable to find string literal operator %qD with %qT, %qT argumentsunable to find the promise type for this coroutineunable to generate reloads for impossible constraints:unable to generate reloads for:unable to implement ABI %qs with instruction set %qsunable to locate default linker script %qs in the library search pathsunable to open %qs for SARIF output: %munable to open %qs: %munable to open %s for reading: %munable to open %s for writing: %munable to open dynamic dependency %qsunable to open fileunable to open log file %<vtv_class_set_sizes.log%>: %munable to open log file %<vtv_count_data.log%>: %munable to open log file %<vtv_set_ptr_data.log%>: %munable to register info for plugin %qs - plugin name not foundunable to represent further imported source locationsunable to resolve forward reference in definitionunable to use %qs for PIC registerunavailable stringop for inlining %qsunbalanced punctuation character %<%c%> in formatunbalanced punctuation character %qc in formatunbounded use of %<alloca%>unbounded use of variable-length arrayunconditional %2d never executed
  unconditional %2d taken %s
! undeclared selector %qEundefined behavior when second parameter of %<va_start%> is declared with %<register%> storageundefined named operand %qsunderlying type %qT of %qT must be an integral typeunderlying type mismatch in enum %q#Tunderspecified %qD referenced in its initializerunderspecified declaration of %qE, which is already declared in this scopeunexpanded parameter pack in enumerator in lambdaunexpanded parameter pack in local class in lambdaunexpected !$OMP ATOMIC expression at %Lunexpected %<:%> at %Cunexpected %<else%>unexpected AST of kind %sunexpected EOFunexpected RHS for assignmentunexpected arch for %<target()%> attribute: bad string found %qsunexpected arch for %<target()%> attribute: must start with + or rvunexpected arch for %<target()%> attribute: must start with rv32 but found %qsunexpected arch for %<target()%> attribute: must start with rv64 but found %qsunexpected argumentunexpected argument to %<msp430_select_hwmult_lib%>: %sunexpected attributeunexpected base-type in cris_print_baseunexpected encapsulation format or typeunexpected error opening %<devices.csv%>unexpected expression %qE of kind %sunexpected file name %s in linker resolution file. Expected %sunexpected first argument to %<msp430_select_hwmult_lib%>: %sunexpected index-type in cris_print_indexunexpected keyword; remove space between quotes and suffix identifierunexpected mapping nodeunexpected module directiveunexpected multiplicative operandunexpected offsetunexpected operandunexpected operand: %dunexpected placeholder in constrained result typeunexpected pointer mapping nodeunexpected reference to packageunexpected side-effects in addressunexpected text address:unexpected type for array length: %qsunhandled alignment for %<#pragma nomember_alignment%>unhandled architectureunhandled arguments %qs and %qs to %<msp430_set_driver_var%>unhandled code after callunhandled expressionunhandled expression typeuninitialized %<const %D%>uninitialized %<const %D%> is invalid in C++uninitialized const in %<new%> of %q#Tuninitialized const member in %q#Tuninitialized const member in %q#T using %<new%> without new-initializeruninitialized const member in %qT is invalid in C++uninitialized const member in base %q#T of %q#Tuninitialized const member in base %q#T of %q#T using %<new%> without new-initializeruninitialized reference member in %q#Tuninitialized reference member in %q#T using %<new%> without new-initializeruninitialized reference member in base %q#T of %q#Tuninitialized reference member in base %q#T of %q#T using %<new%> without new-initializeruninitialized variable %q+D put into program memory areauninitialized variable %qD in %<constexpr%> contextuninitialized variable %qD in %<constexpr%> functionunion cannot be made transparentunion defined hereunion has no membersunion has no named membersunion member %q+D with non-trivial %qDunknown %<#pragma GCC aarch64%> option %qsunknown %<#pragma GCC arm%> option %qsunknown %<#pragma extern_model%> model %qsunknown %<#pragma member_alignment%> name %sunknown %<#pragma riscv intrinsic%> option %qsunknown %<-mdebug-%s%> switchunknown %<asm%> flag output %qsunknown C++ standard %qsunknown CRIS cpu version specification in %<-mtune=%>: %sunknown CRIS version specification in %<-march=%> or %<-mcpu=%>: %sunknown Control-Flow Protection Level %qsunknown IRA algorithm %qsunknown IRA region %qsunknown LDP/STP policy %qsunknown LTO partitioning model %qsunknown Live-Patching Level %qsunknown OpenMP directive name in %qs attribute argumentunknown OpenMP directive name in %qs clause argumentunknown SIMD extension (%qs disabled while %qs is enabled), disabling SIMDunknown Stack Reuse Level %qsunknown TLS model %qsunknown action %qE for %<#pragma pack%> - ignoredunknown alignment %qs specified for option %qsunknown architecture specific memory modelunknown architecture specifier in memory model %wi for %qDunknown array bounds setting %qsunknown array size in deleteunknown assumption clause %qsunknown attribute %qEunknown attribute %qsunknown autovec preference %qsunknown basic block reordering algorithm %qsunknown block specifierunknown builtin immediate operand type for operand %dunknown callback event registered by plugin %sunknown checkaction setting %qsunknown compiled module interface: %sunknown conversion type character %qc in formatunknown core architecture %qs specified with %qsunknown cpu %qs for %<-mtune%>unknown crate type: '%qs'unknown demangling style %qsunknown destunknown directive nameunknown error reading %s from %<devices.csv%>unknown excess precision style %qsunknown flag passed in %<-moverride=%s%> (%s)unknown floating point contraction style %qsunknown foreign runtime identifier %qsunknown foreign runtime identifier %qwdunknown hardcfr noreturn checking level %qsunknown header kind %qsunknown insn modeunknown internal function %qEunknown lam type %qsunknown linker output %qsunknown machine mode %qEunknown move insn:unknown native FPU type %<0x%x%>, %qs failedunknown native base architecture %<0x%x%>, %qs failedunknown offload ABI %qsunknown operand letter: '%c'unknown operator %qs in %%:version-compareunknown option %q.*s in %<-fopt-info-%s%>unknown option after %<#pragma GCC diagnostic%> kindunknown option for %<%s=%s%>unknown option for %<-mrecip=%s%>unknown panic strategy %qsunknown parameter to option %<-mtune-ctrl%>: %sunknown pass %s specified in %<-fdisable%>unknown pass %s specified in %<-fenable%>unknown pointer size model %qsunknown processor ID %<0x%x%>, some tuning parameters will fall back to defaultunknown profile qualityunknown profile reproducibility method %qsunknown profile update method %qsunknown property %qE of %qs selectorunknown property %qs of %qs selectorunknown property attributeunknown property attribute %<%s%s%>unknown property attribute %qEunknown punctuation '%c'unknown ranger debug mode %qsunknown register name %qs in %<asm%>unknown register name: %sunknown relocation unspecunknown rust compile-until %qsunknown rust edition %qsunknown rust mangling option %qsunknown selector %qs for context selector set %qsunknown selector %qs for context selector set %qs at %Cunknown spec function %qsunknown specification for the set of FLT_EVAL_METHOD values to permit %qsunknown specifier %qs in %<amdgpu_hsa_kernel%> attributeunknown srcunknown stack check parameter %qsunknown switch %<-mlong-double-%s%>unknown target attribute or pragma %qsunknown threader debug mode %qsunknown trampoline implementation %qsunknown tuning option (%s)unknown type %<%T%> found during Objective-C encodingunknown type name %qEunknown type name %qE; did you mean %qs?unknown type name %qE; use %<enum%> keyword to refer to the typeunknown type name %qE; use %<struct%> keyword to refer to the typeunknown type name %qE; use %<union%> keyword to refer to the typeunknown value %qs for %<-march%>unknown value %qs for %<-mcpu%>unknown value %qs for %<-mtune%>unknown value %qs of %<-mmacosx-version-min%>unknown vectorization library ABI type in %<-mveclibabi=%s%>unknown vectorizer cost model %qsunknown vtable verify initialization priority %qsunmatched color reset directiveunmatched quoting directiveunnamed class defined hereunnamed field has incomplete typeunnamed field is neither function nor member function; cannot be declared friendunnamed initializer for %qT, which has no base classesunnamed initializer for %qT, which uses multiple inheritanceunnamed scoped enum is not allowedunnamed struct/union that defines no instancesunnamed temporary defined hereunnamed type with no linkage used to declare function %q#D with linkageunnamed type with no linkage used to declare variable %q#D with linkageunnamed variable or field declared voidunnecessary parentheses in declaration of %qsunordered comparison on non-floating-point argumentunquote_string(): got bad stringunquoted attribute in formatunquoted control character %qc in formatunquoted control characters in formatunquoted identifier or keyword %<%.*s%> in formatunquoted keyword %<%.*s%> in formatunquoted name of built-in function %<%.*s%> in formatunquoted non-graph character %qc in formatunquoted non-graph characters in formatunquoted operator %<%.*s%> in formatunquoted option name %<%.*s%> in formatunquoted preprocessing directive %<%.*s%> in formatunquoted sequence of %i consecutive punctuation characters %q.*s in formatunquoted sequence of %i consecutive space characters in formatunquoted type name %<%.*s%> in formatunquoted whitespace character %qc in formatunreachableunrecognizable argument of option unrecognizable argument of option %<unrecognizable insn:unrecognized %<-mfpu%> target: %sunrecognized %<hwmpy%> field in %<hard_msp430_mcu_data[%d]%>: %qdunrecognized %<include_flags 0x%x%> passed to %<print_specific_help%>unrecognized %<revision%> field in %<hard_msp430_mcu_data[%d]%>: %qdunrecognized %qE attribute argument %qsunrecognized %s target: %sunrecognized MCU name %qs, assuming that it has no hardware multiply; use the %<-mhwmult%> option to set this explicitlyunrecognized MCU name %qs, assuming that it is just a MSP430X with no hardware multiply; use the %<-mcpu%> and %<-mhwmult%> options to set these explicitlyunrecognized MCU name %qs, assuming that it just supports the MSP430X ISA; use the %<-mcpu%> option to set the ISA explicitlyunrecognized addressunrecognized argument in option %<-march=%s%>unrecognized argument in option %qsunrecognized argument to %<--help=%> option: %q.*sunrecognized argument to %<-f%ssanitize%s=%> option: %q.*sunrecognized argument to %<-f%ssanitize%s=%> option: %q.*s; did you mean %qs?unrecognized argument to %<-flto=%> option: %qsunrecognized argument to %<-fzero-call-used-regs=%>: %qsunrecognized automatic variable initialization type %qsunrecognized btf debug output level %qsunrecognized command-line option %<-%s%>unrecognized command-line option %<-%s%>; did you mean %<-%s%>?unrecognized command-line option %<-fdump-%s%>unrecognized command-line option %<-fdump-%s%>; did you mean %<-fdump-%s%>?unrecognized command-line option %<-fopt-info-%s%>unrecognized command-line option %qsunrecognized command-line option %qs may have been intended to silence earlier diagnosticsunrecognized control register number: %d - using %<psw%>unrecognized debug output level %qsunrecognized edge flag: %qsunrecognized enum value: %qsunrecognized format specifierunrecognized gcc debugging option: %cunrecognized interrupt vector argument of %qE attributeunrecognized ivar visibility value %qsunrecognized operand to %%:%<asm_auto_mfpu%>unrecognized operand to %%:%<canon_for_mlib%>unrecognized option %<-fdisable%>unrecognized option %<-fenable%>unrecognized option passed to %%:%<target_mode_check%>unrecognized register name %qsunrecognized scalar storage order value %qsunrecognized section name %qEunrecognized shadow offset %qsunrecognized state string %qsunrecognized string escapeunrecognized supposed constantunrecognized visibility value %qsunrecognized zero init padding bits kind %qsunrecoverable errorunresolved overload for builtin %qFunresolved overloaded builtinunrestricted unions only available with %<-std=c++11%> or %<-std=gnu++11%>unsafe function call %qD within %<transaction_safe%> functionunsafe function call %qD within atomic transactionunsafe function call %qE within %<transaction_safe%> functionunsafe function call %qE within atomic transactionunsafe indirect function call within %<transaction_safe%> functionunsafe indirect function call within atomic transactionunset option %qs is ignored, it is always enabled for %qs CPUunsignedunsigned conversion from %qT to %qT changes the value of %qEunsigned conversion from %qT to %qT changes value from %qE to %qEunsuffixed floating constantunsupported %<strub%> call on the target systemunsupported SVE vector sizeunsupported argument to %qDunsupported argument type %qT for simdunsupported argument type to builtin functionunsupported code '%c' for fixed-point:unsupported combination: %qs %sunsupported combination: %qs%s %sunsupported combination: %sunsupported constant address:unsupported cpu name returned from kernel for %<-mcpu=native%>: %sunsupported fixed-point conversionunsupported map expression %qEunsupported memory expression:unsupported non-standard concatenation of string literalsunsupported non-standard suffix on floating constantunsupported number of nops before function entry (%u)unsupported operandunsupported operand %s for code '%c'unsupported operand for code '%c'unsupported operand size for extended registerunsupported operation or type for vector comparison returning a booleanunsupported return type %qT for simdunsupported simdlen %wdunsupported simdlen %wd (amdgcn)unsupported size for integer registerunterminated assembly dialect alternativeunterminated color directiveunterminated format stringunterminated quote character %<%c%> in formatunterminated quoting directiveunterminated stringunused arguments in %<$%>-style formatunused name %qEunused parameter %qDunused structured binding declarationunused using-declaration %qDunused variable %q+Dunused variable %qDunwind tables currently require either a frame pointer or %<-maccumulate-outgoing-args%> for correctnessupper value in case label range exceeds maximum value for typeuse %<#include%> insteaduse %<%T::%D%> insteaduse %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified nameuse %<%T::template %D%> to indicate that it is a templateuse %<&%s%E%s[0] %s &%s%E%s[0]%> to compare the addressesuse %<-Winvalid-pch%> for more informationuse %<-faligned-new%> to enable C++17 over-aligned new supportuse %<-fdiagnostics-all-candidates%> to display considered candidatesuse %<-fext-numeric-literals%> to enable more built-in suffixesuse %<-flax-vector-conversions%> to permit conversions between vectors with differing element types or numbers of subpartsuse %<...%> to expand argument packuse %<__arm_preserves("za")%> if the callee preserves ZAuse %<__attribute__ ((vector_size))%> insteaduse %<__builtin_rx_mvtc (0, ... )%> to write arbitrary values to PSWuse %<alias %s = %s.%s;%> to introduce base class overload setuse %<template<>%> for an explicit specializationuse %<this->%D%> insteaduse %qD directly insteaduse %qs insteaduse ISO dialect of Modula-2use PIM 2 dialect of Modula-2use PIM 3 dialect of Modula-2use PIM 4 dialect of Modula-2use PIM [234] dialect of Modula-2use a cast to the expected type to disambiguateuse cpp to preprocess the moduleuse e.g. %<-Wabi=11%> to warn about changes from GCC 7use explicit object parameter %qs insteaduse fold expression in the attribute argument insteaduse non-reference type %qT to make the copy explicit or %qT to prevent copyinguse of %<alloca%>use of %<alloca%> within a loopuse of %<auto%> in lambda parameter declaration only available with %<-std=c++14%> or %<-std=gnu++14%>use of %<auto%> in member template conversion operator can never be deduceduse of %<auto%> in parameter declaration only available with %<-std=c++14%> or %<-std=gnu++14%>use of %<auto%> in parameter declaration only available with %<-std=c++20%> or %<-fconcepts%>use of %<auto%> in template argumentuse of %<complex%> in AltiVec types is invaliduse of %<double%> in AltiVec types is invalid without %qsuse of %<long double%> in AltiVec types is invaliduse of %<long long%> in AltiVec types is invalid without %qsuse of %<long%> in AltiVec types is deprecated; use %<int%>use of %<long%> in AltiVec types is invalid for 64-bit code without %qsuse of %qDuse of %qD before deduction of %<auto%>use of %qsuse of %qs in templateuse of %qs length modifier with %qc type character has either no effect or undefined behavioruse of %s and %s together in %s formatuse of %s and %s together with %<%%%c%> %s formatuse of allocated storage after deallocation in a constant expressionuse of an operand of type %qT in %<operator++%> is deprecateduse of an operand of type %qT in %<operator++%> is forbidden in C++17use of an operand of type %qT in %<operator--%> is forbiddenuse of boolean types in AltiVec types is invaliduse of built-in parameter pack %qD outside of a templateuse of built-in trait %qE in function signature; use library traits insteaduse of built-in trait %qT in function signature; use library traits insteaduse of class template %qT as expressionuse of decimal floating-point types in AltiVec types is invaliduse of deleted function %qDuse of deleted function %qD: %suse of enum %q#D without previous declarationuse of function %qD with unsatisfied constraintsuse of invalid variable template %qEuse of local variable with automatic storage from containing functionuse of multiversioned function without a defaultuse of old-style cast to %q#Tuse of parameter from containing functionuse of parameter outside function bodyuse of untyped niluse operand missing for statementuse option %<-std=c99%>, %<-std=gnu99%>, %<-std=c11%> or %<-std=gnu11%> to compile your codeuse reference type to prevent copyinguse the %<offset%> rather than %<index%> form for 8-bit datause the apostrophe directive %qs insteaduse unary %<+%> which decays operands to pointers or %<&%s%E%s[0] %s &%s%E%s[0]%> to compare the addressesused array that cannot be converted to pointer where scalar is requiredused as rewritten candidate for comparison of %qT and %qTused here to mean %q#Dused struct type value where scalar is requiredused union type value where scalar is requiredused vector type where scalar is requireduseless %<_Alignas%> in empty declarationuseless %qs in empty declarationuseless cast to type %q#Tuseless cast to type %qTuseless storage class specifier in empty declarationuseless type name in empty declarationuseless type qualifier in empty declarationuser defined reduction lookup is ambiguoususer defined reduction not found for %qEuser defined reduction with constructor initializer for base class %qTuser-defined %qD always evaluates both argumentsuser-defined literals only available with %<-std=c++11%> or %<-std=gnu++11%>uses %qD, which does not have an alignment parameterusing %<%c%s%>using %<num_workers (%d)%>, ignoring %dusing %<vector_length (%d)%> due to call to vector-partitionable routine, ignoring %dusing %<vector_length (%d)%>, ignoring %dusing %<vector_length (%d)%>, ignoring runtime settingusing %<vector_length (64)%>, ignoring %dusing %<vector_length (64)%>, ignoring runtime settingusing %qsusing %qs with unsigned type has no effectusing a dangling pointer to %qDusing a dangling pointer to an unnamed temporaryusing alias template specialization %qT after %qsusing complex absolute value function %qD when argument is of floating-point type %qTusing complex absolute value function %qD when argument is of integer type %qTusing dangling pointer %qE to %qDusing dangling pointer %qE to an unnamed temporaryusing darwin64 ABIusing decimal floating-point absolute value function %qD when argument is of complex type %qTusing decimal floating-point absolute value function %qD when argument is of floating-point type %qTusing decimal floating-point absolute value function %qD when argument is of integer type %qTusing fast VRP algorithm; %d basic blocks exceeds %<--param=vrp-block-limit=%d%> limitusing floating-point absolute value function %qD when argument is of complex type %qTusing floating-point absolute value function %qD when argument is of decimal floating-point type %qTusing floating-point absolute value function %qD when argument is of integer type %qTusing integer absolute value function %qD when argument is of complex type %qTusing integer absolute value function %qD when argument is of floating-point type %qTusing invalid field %qDusing ltrans cache without file locking support, do not use in parallelusing old darwin ABIusing result of function returning %<void%>using rvalue as lvalueusing serial compilation of %d LTRANS jobsusing simple load CSE after register allocationusing template type parameter %qT after %qsusing the range [%E, %E] for directive argumentusing typedef-name %qD after %qsusing value of assignment with %<volatile%>-qualified left operand is deprecatedusing-declaration for member at non-class scopeusing-declaration for non-member at class scopeusing-declaration may not name namespace %qDvalid %<-foffload=%> arguments are: %svalid %<-foffload=%> arguments are: %s; did you mean %qs?valid argument to %<-march=%> is %qsvalid arguments are: %svalid arguments are: %s; did you mean %qs?valid arguments to %<-march=%> are: %svalid arguments to %<-march=%> switch are: %svalid arguments to %<-march=%> switch are: %s; did you mean %qs?valid arguments to %<-mtune=%> switch are: %svalid arguments to %<-mtune=%> switch are: %s; did you mean %qs?valid arguments to %<target("arch=")%> attribute are: %svalid arguments to %<target("arch=")%> attribute are: %s; did you mean %qs?valid arguments to %<target("tune=")%> attribute are: %svalid arguments to %<target("tune=")%> attribute are: %s; did you mean %qs?valid arguments to %qs are: %svalid arguments to %qs are: %s; did you mean %qs?valid explicit object parameter declared herevalid failure models are %qs, %qs, %qs, %qsvalid feature names are: %svalid feature names are: %s; did you mean %qs?valid format is %<ns::attr%> or %<ns::%>valid models are %evalid values for builtin %qF argument %d are 64, 128, 256, 512, 1024, 2048, and 4096value %qE of type %qT is not a constant expressionvalue %qs is not supported by attribute %<target%>value argumentvalue computed is not usedvalue of %<-mfixed-range%> must have form REG1-REG2value of redeclared enumerator outside the range of %qTvalue passed in %qs is too largevalue-initialization of function type %qTvalue-initialization of incomplete type %qTvalue-initialization of reference type %qTvar-tracking-assignments changes selective schedulingvariablevariable %q#D has initializer but incomplete typevariable %q+D declared %<_Noreturn%>variable %q+D declared %<inline%>variable %q+D definition is marked dllimportvariable %q+D might be clobbered by %<longjmp%> or %<vfork%>variable %q+D must be const in order to be put into read-only section by means of %qsvariable %q+D part of alias cyclevariable %q+D with attribute %qs must be located in static storagevariable %q+D with attribute %qs must not have an initializervariable %q+D with dynamic initialization put into program memory areavariable %qD adjusted for OpenACC privatization level: %qsvariable %qD has function typevariable %qD has initializer but incomplete typevariable %qD of non-literal type %qT in %<constexpr%> function only available with %<-std=c++23%> or %<-std=gnu++23%>variable %qD redeclared as functionvariable %qD set but not usedvariable %qD used as loop variable is bound in intervening codevariable %qD used in end test is bound in intervening codevariable %qD used in increment expression is bound in intervening codevariable %qD used in initializer is bound in intervening codevariable %qD used in the %<allocator%> clause must be declared before %qDvariable %qD used in the %<allocator%> clause must not be modified between declaration of %qD and its %<allocate%> directivevariable %qD used more than once with %<#pragma acc declare%>variable %qE declared in enclosing %<host_data%> regionvariable %qE is not an iteration of outermost loop %d, expected %qEvariable %qE of incomplete type %qT will not be accessed in for increment expressionvariable %qE of incomplete type %qT will not be accessed in left operand of comma operatorvariable %qE of incomplete type %qT will not be accessed in right operand of comma operatorvariable %qE of incomplete type %qT will not be accessed in second operand of conditional expressionvariable %qE of incomplete type %qT will not be accessed in statementvariable %qE of incomplete type %qT will not be accessed in third operand of conditional expressionvariable %qs has been referenced in offloaded code but hasn%'t been marked to be included in the offloaded codevariable %qs has scoped destruction, cannot build closurevariable at namespace scope is not name-independentvariable concepts are no longer supportedvariable length array %qD is usedvariable length array is usedvariable length arrays are not yet supported in coroutinesvariable length element type in array %<reduction%> clausevariable of same assembler name as the virtual table is defined in another translation unitvariable or field %qE declared voidvariable or field declared voidvariable previously declared %<static%> redeclared %<extern%>variable size argumentsvariable sized type %qT in %<reduction%> clausevariable sized type %qT in %qs clausevariable symbol is not variablevariable template declared herevariable template-id %qD in nested-name-specifiervariable templates only available with %<-std=c++14%> or %<-std=gnu++14%>variable tracking requested, but not supported by this debug formatvariable tracking requested, but useless unless producing debug infovariable tracking size limit exceededvariable tracking size limit exceeded with %<-fvar-tracking-assignments%>, retrying withoutvariable-length array of %<auto%>variable-sized compound literalvariable-sized object may not be initialized except with an empty initializervariables in %<__regio_symbol%> address space cannot be declared %<register%>variables in %<__regio_symbol%> address space cannot have initial valuevariables in %<__regio_symbol%> address space must be declared %<extern%>variables in %<__regio_symbol%> address space must be declared %<volatile%>variables of type %qT cannot have thread-local storage durationvariably modified %qE at file scopevariably modified field at file scopevariably modified type not allowed in new-expressionvariadic friends or friend type declarations with multiple types only available with %<-std=c++2c%> or %<-std=gnu++2c%>variadic functions must use the base AAPCS variantvariadic templates only available with %<-std=c++11%> or %<-std=gnu++11%>variadic thunk callvariant %qD and base %qD have incompatible typesvariant %qD is a built-invariant %qD is not a functionvariant %qs and base %qs at %L have incompatible types: %svariant %qs at %L is not a function or subroutinevariant directive used in OMP BEGIN METADIRECTIVE at %C must have a corresponding end directivevector %qs element is not a GIMPLE valuevector %qs with non-NULL element indexvector argument passed to unprototyped functionvector condition will be expanded piecewisevector number %d of %q+D is out of range 1%s3 for compact vector tablevector operation will be expanded in parallelvector operation will be expanded piecewisevector operation will be expanded with a single scalar operationvector overflow in expression %qE of type %qT results in %qEvector overflow in expression of type %qT results in %qEvector shuffling operation will be expanded piecewisevector size not an integral multiple of component sizevector type expected in %qsvector types expected in %qsvector value used where a floating-point was expectedvectorization did not happen for a simd loopvectors with different element number found in %qsverify_bind_c_derived_type(): Given symbol is unexpectedly NULLverify_cgraph_node failedverify_flow_info failedverify_flow_info: Basic block %d succ edge is corruptedverify_flow_info: Block %i has loop_father, but there are no loopsverify_flow_info: Block %i lacks loop_fatherverify_flow_info: Duplicate edge %i->%iverify_flow_info: Incorrect blocks for fallthru %i->%iverify_flow_info: Incorrect fallthru %i->%iverify_flow_info: Missing count of block %iverify_flow_info: REG_BR_PROB does not match cfg %i %iverify_flow_info: REG_BR_PROB is set but cfg probability is notverify_flow_info: Wrong count of block %iverify_flow_info: Wrong probability of edge %i->%iverify_flow_info: unallocated edge flag set on %d -> %dverify_flow_info: unallocated flag set on BB %dverify_gimple failedverify_ssa failedversion attribute is not a stringversion control conflict marker in fileversion inherited from %qT declared hereversion of %<g%> will be omitted, please specify version for individual extensionversioned symbol must be publicversioned symbol must have default visibilityvirt-specifiers in %qs not allowed outside a class definitionvirtual PHI with argument locationsvirtual SSA name for non-VOP declvirtual base %qT inaccessible in %qT due to ambiguityvirtual def operand missing for statementvirtual definition is not an SSA namevirtual definition of statement not up to datevirtual function %q+D overriding final functionvirtual function cannot have deduced return typevirtual function declared herevirtual function multiversioning not supportedvirtual functions cannot be %<constexpr%> before C++20virtual functions cannot be friendsvirtual method %qDvirtual non-class function %qsvirtual table of type %qD contains RTTI informationvirtual table of type %qD violates one definition rulevirtual table pointer is used uninitializedvirtual use of statement not up to datevirtual use operand missing for statementvisibility argument not a stringvisibility attribute not supported in this configuration; ignoredvms '#pragma __message' is ignoredvoid value not ignored as it ought to bevolatile argumentvolatile function typevtable for vtable verification is not supported with LTOwaitpid failedwarning: warning: consider linking with '-static' as system libraries withwas expecting `%s'weak %q+D cannot be defined %qEweak alias definitions not supported in this configurationweak aliases are not supportedweak declaration of %q+D being applied to a already existing, static definitionweak declaration of %q+D must be publicweak declaration of %q+D not supportedweights need to be non-negativewhen storing %qT, %qE requires a vector base and a scalar indexwhen writing output to %s: %mwhile %qT decomposes into %E elementswhile %qT decomposes into %wu elementwhile %qT decomposes into %wu elementswhile referencing %qDwidth of %qD exceeds its typewidth of %qs exceeds its typewidth of bit-field %qD has non-integral type %qTwithwith %<ancestor%>, only the %<device%>, %<firstprivate%>, %<private%>, %<defaultmap%>, and %<map%> clauses may appear on the constructwithin this loopwithout %<-gdwarf-5%>, %<-gvariable-location-views=incompat5%> is equivalent to %<-gvariable-location-views%>work-sharing region may not be closely nested inside of work-sharing, %<loop%>, %<critical%>, %<ordered%>, %<master%>, %<masked%>, explicit %<task%> or %<taskloop%> regionwrite of %wu-bit data outside the bound of destination object, data truncated into %wu-bitwrite_atom(): Trying to write dab atomwrite_symbol(): bad module symbol %qswrite_symtree(): Symbol not writtenwriting %E byte into a region of size %E overflows the destinationwriting %E bytes into a region of size %E overflows the destinationwriting %E or more bytes into a region of size %E overflows the destinationwriting %wu byte into a region of size %wuwriting %wu bytes into a region of size %wuwriting %wu byte into a region of size between %wu and %wuwriting %wu bytes into a region of size between %wu and %wuwriting CMI %qswriting between %E and %E bytes into a region of size %E overflows the destinationwriting between %wu and %wu bytes into a region of size %wuwriting between %wu and %wu bytes into a region of size between %wu and %wuwriting into constant object (argument %d)writing one too many bytes into a region of a size that depends on %<strlen%>writing output filewriting output file %s: %mwriting through null pointer (argument %d)writing to LTRANS output list %s: %mwriting to address space %qs not supportedwrong %<TYPE_CACHED_VALUES%> entrywrong amount of branch edges after conditional jump in bb %iwrong amount of branch edges after unconditional jump %iwrong argument %qs to option %qswrong argument to ignored attributeswrong edge %d->%d for PHI argumentwrong entry in %<TYPE_ARG_TYPES%> listwrong immediate use listwrong insn in the fallthru edgewrong list of exited loops for edge %d->%dwrong number of arguments specified for %qE attributewrong number of arguments to %%:debug-level-gtwrong number of arguments to %%:dwarf-version-gtwrong number of arguments to %<__builtin_addressof%>wrong number of arguments to %<__builtin_assoc_barrier%>wrong number of arguments to %<__builtin_call_with_static_chain%>wrong number of arguments to %<__builtin_choose_expr%>wrong number of arguments to %<__builtin_complex%>wrong number of arguments to %<__builtin_convertvector%>wrong number of arguments to %<__builtin_counted_by_ref%>wrong number of arguments to %<__builtin_launder%>wrong number of arguments to %<__builtin_shuffle%>wrong number of arguments to %<__builtin_shufflevector%>wrong number of arguments to %<assume%> attributewrong number of arguments to %qswrong number of arguments to function %<__builtin_next_arg%>wrong number of arguments to function %<va_start%>wrong number of branch edges after unconditional jump in bb %iwrong number of template arguments (%d, should be %d)wrong number of template arguments (%d, should be at least %d)wrong outgoing edge flags at end of bb %dwrong strategy name %qs specified for option %qswrong tree in %<TYPE_FIELDS%> listwrong type argument to %swrong type argument to abswrong type argument to absuwrong type argument to bit-complementwrong type argument to conjugationwrong type argument to decrementwrong type argument to incrementwrong type argument to unary exclamation markwrong type argument to unary minuswrong type argument to unary pluswrong type of argument %sx87 register return with x87 disabledxstormy16_print_operand: unknown codeyou can enable %qs using the command-line option %<-march%>, or by using the %<target%> attribute or pragmayou can enable RVV using the command-line option %<-march%>, or by using the %<target%> attribute or pragmayou can enable SVE using the command-line option %<-march%>, or by using the %<target%> attribute or pragmayou can enable mve.fp by using the command-line option %<-march%>, or by using the %<target%> attribute or pragmayou can silence this warning by using a hexadecimal constant (%wx rather than %wd)you can stabilize this value with %<--param hardware_destructive_interference_size=%d%>, or disable this warning with %<-Wno-interference-size%>you can use an inline namespace insteadyou can work around this by removing the initializeryou cannot take the address of a nested function if you use the %qs optionyour native CPU architecture (%qs) does not support %qs ABI, falling back to %<-m%s=%s%>z*inx requires ABI ilp32, ilp32e, lp64 or lp64ez/Architecture.zero as null pointer constantzero length array section in %qs clausezero or negative size array %q+Dzero sized type %qT in %<reduction%> clausezero sized type %qT in %qs clausezero vector sizezero width for bit-field %q+Dzero width for bit-field %qszero width in %s formatzero-length %s format stringzero-size array %qDzero-size array %qTzero-size array member %qD in an otherwise empty %q#Tzero-size array member %qD not at end of %q#T{anonymous}{erroneous}Project-Id-Version: gcc 15.1.0
  Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/
! PO-Revision-Date: 2025-04-28 21:45+0200
  Last-Translator: Roland Illig <roland.illig@gmx.de>
  Language-Team: German <translation-team-de@lists.sourceforge.net>
  Language: de
--- 2146,2156 ----
  requiresrequires-clause on declaration of non-function type %qTrequires-clause on return typerequires-clause on type-idrequires-clause on typedefresolution sub id %wx not in object fileresolve_function(): bad function typeresolve_intrinsic(): Too many args for intrinsicresolve_operator(): Bad intrinsicresolve_ref(): Bad array referenceresolve_subroutine(): bad function typeresolver indirect function declared hereresult of %<%wu^%wu%> is %wu; did you mean %<1 << %wu%> (%wu)?result of %<%wu^%wu%> is %wu; did you mean %<1LL << %wu%>?result of %<%wu^%wu%> is %wu; did you mean %<1e%wu%>?result of %<%wu^%wu%> is %wu; did you mean exponentiation?result of %<operator->()%> yields non-pointer resultresult of %qE requires %u bits to represent, but %qT only has %u bitsresult type is not a plain type-constraintresult with non-constant character lengthreturn address signing is only supported for %<-mabi=lp64%>return discards %qv qualifier from pointer target typereturn edge does not point to exit in bb %dreturn from pointer to non-enclosed address spacereturn makes %q#v qualified function pointer from unqualifiedreturn not followed by barrierreturn type %q#T is incompletereturn type %qT of explicit conversion function cannot be converted to %qT with a qualification conversionreturn type defaults to %<int%>return type is an incomplete typereturn type might be a candidate for a format attributereturn type of %qD is not %<int%>return type of %qD is not %qsreturn type of functionreturn type specification for constructor invalidreturn type specification for destructor invalidreturn type specified for %<operator %T%>return type specified for deduction guidereturn value changed after callreturn value in memoryreturn value type mismatchreturn value used after callreturn with value in function with no return typereturn-statement with a value, in function returning %qTreturn-statement with no value, in function returning %qTreturn-type-requirement is not a type-constraintreturned from %qDreturned from %qTreturning %e from a function with incompatible return type %ereturning %qT from a function with return type %qT makes integer from pointer without a castreturning %qT from a function with return type %qT makes pointer from integer without a castreturning %qT from pointer type with incompatible scalar storage order %qTreturning a value from a constructorreturning a value from a destructorreturning initializer listreturning local %<initializer_list%> variable %qD does not extend the lifetime of the underlying arrayreturning pointer to %qD of type %e from a function with incompatible type %ereturning pointer to temporaryreturning reference to temporaryreturning temporary %<initializer_list%> does not extend the lifetime of the underlying arrayreturning to the gate for a mechanical issuereturns_twice call is not first in basic block %dreturns_twice call is not last in basic block %dreverse floating-point scalar storage orderreverse scalar storage orderreverse storage order for %smoderight operand of comma operator cannot resolve address of overloaded functionright operand of comma operator has no effectright operand of comma operator is a reference, not call, to function %qEright operand of shift expression %q+E is greater than or equal to the precision %wu of the left operandright operand of shift expression %q+E is negativeright precisionright precision in strfmon formatright shift count >= width of typeright shift count >= width of vector elementright shift count is negativeright-hand operand of comma expression has no effectrotate count is negativerounding mode not supported for VAX floatsrounding result will always be 0rounding to %d bits has no effect for fixed-point value with %d fractional bitsroutine %qD declared hereroutine call uses OpenACC parallelism disallowed by containing routineroutine call uses same OpenACC parallelism as containing looprv32e requires ilp32e ABIrv64e requires lp64e ABIrx100 cpu does not have FPU hardwarerx200 cpu does not have FPU hardwaresame canonical type node for different types %qT and %qTsame variable used in %<firstprivate%> and %<lastprivate%> clauses on %<distribute%> constructsame version was previously defined heresame_comdat_group is not a circular listsame_comdat_group list across different groupssanitizer function attribute mismatchsatisfaction of atomic constraint %qE depends on itselfsatisfaction value first evaluated to %qE from heresatisfaction value of atomic constraint %qE changed from %qE to %qEsaturation bit range must be a constant immediatesaturation bit range must be in the range [%wd, %wd]save temporary preprocessed filessaw %d %<template<>%>, need %d for specializing a member function templatesay %<typename %E%> if a type is meantscalar object %qD requires one element in initializerscale needs to be non-negativescaling cannot co-exist with normalization, skipping
  scan.o: %sschedule %<auto%> does not take a %<chunk_size%> parameterschedule %<runtime%> does not take a %<chunk_size%> parameterschedule chunk size expression must be integralscope %qT before %<~%> is not a class-namescope opened herescoped enum %qT passed through %<...%> as %qT before %<-fabi-version=6%>, %qT afterscoped enums only available with %<-std=c++11%> or %<-std=gnu++11%>scoped/unscoped mismatch in enum %q#Tscore argument must be constant integer expressionscore argument must be non-negativesecond argument must be a constsecond argument must be slice or stringsecond argument of %q+D should be %<char **%>second argument to %<__builtin_call_with_static_chain%> must be a pointer typesecond argument to %<__builtin_prefetch%> must be a constantsecond argument to %<va_arg%> is a function type %qTsecond argument to %<va_arg%> is of incomplete type %qTsecond argument to function %qE must be a constant integer power of 2 between %qi and %qu bitssecond expression has type %qTsecond operand of conditional expression cannot resolve address of overloaded functionsecond operand of conditional expression has no effectsecond operand of conditional expression is a reference, not call, to function %qEsecond operand to the conditional operator is of type %<void%>, but the third operand is neither a throw-expression nor of type %<void%>second parameter of %<va_start%> not last named argumentsecond, third and fourth argument must be a constsection #%u is missing or corruptedsection %qs is missing or corruptedsection already exists: %qssection anchors must be disabled when toplevel reorder is disabledsection anchors must be disabled when unit-at-a-time is disabledsection attribute argument not a string constantsection attribute cannot be specified for local variablessection attribute not allowed for %q+Dsection attributes are not supported for this targetsection of %q+D cannot be overriddensection of %q+D conflicts with previous declarationsection of alias %q+D must match section of its targetsection type conflict for section %qssection type conflict with %qD in section %qssee the %{%<-flto%> option documentation%} for more informationsegmentation faultsegmentation fault (code)selected fp16 options are incompatibleselected function declared hereselector %qs does not accept any propertiesselector %qs does not accept any properties at %Cselector %qs specified more than once in set %qsselector must be an immediateselector must be an integer constant in the range [0, %wi]selector set %qs specified more than onceself-comparison always evaluates to falseself-comparison always evaluates to trueself-tests are not enabled in this buildself-tests incompatible with %<-E%>semantic interposition mismatchset %qs to at least %d for more detailset all location values to a specific value (internal switch)set base type must be an ordinal typeset type cannot be initialized with a %qsset type does not take another integer valuesetjmp/longjmp inside %<simd%> constructsetter method names must terminate with %<:%>setting core file size limit to maximum: %mshadowed declaration is hereshadowing built-in function %q#Dshadowing library function %q#Dshadowing previous type declaration of %q#Dshared SSA name infoshared and mdll are not compatibleshared call_stmt:shared is not supportedshared rtxshared-memory region overflowshift count not integershift expression %q+E overflowsshift of non-integer operandshort read while reading export datashow_array_ref(): Unknown array referenceshow_array_spec(): Unhandled array shape type.show_code_node(): Bad statement codeshow_expr(): Bad intrinsic in expressionshow_expr(): Don't know how to show exprshow_ref(): Bad component codesibcall edges for non-call insn in bb %iside effects not recomputed when %<ADDR_EXPR%> changedside-effects element in no-side-effects CONSTRUCTORside-effects in input operand outside of a functionside-effects in output operand outside of a functionsigned conversion from %qT to %qT changes the value of %qEsigned conversion from %qT to %qT changes value from %qE to %qEsignedness of type and machine mode %qs don%'t matchsimple IFsimplify_intrinsic_op(): Bad operatorsimplify_min_max(): Bad type in arglistsingle %<target_clones%> attribute is ignoredsize %qE of array %qE exceeds maximum object size %qEsize %qE of array %qE is negativesize %qE of array exceeds maximum object size %qEsize %qE of array is negativesize in array new must have integral typesize is too largesize mismatch in argument %d of %qEsize of %q+D %E bytes exceeds maximum object size %wusize of %qD differ from the size of original declarationsize of %qs (%wd) differ from its declared size (%wd)size of array %qD has non-integral type %qTsize of array %qD is not an integral constant-expressionsize of array %qE exceeds maximum object size %qEsize of array %qE has incomplete typesize of array %qE has non-integer typesize of array %qE is negativesize of array %qE is not a constant expressionsize of array %qE is too largesize of array element is not a multiple of its alignmentsize of array exceeds maximum object size %qEsize of array has non-integral type %qTsize of array is not a constant expressionsize of array is not an integral constant-expressionsize of array is too largesize of loop %d should be %d, not %dsize of return value of %q+D is %u bytessize of return value of %q+D is larger than %wu bytessize of string literal is too largesize of type %qT is too large (%qE bytes)size of unnamed array has incomplete typesize of unnamed array has non-integer typesize of unnamed array is negativesize of unnamed array is too largesize of variable %q+D is too largesize ranges of option %qs should be increasingsizeof(long double) is 12.sizeof(long double) is 16.slice can only be compared to nilso any instantiation with a non-empty parameter pack would be ill-formedsoft-float and long-double-128 are incompatiblesome candidates omitted; use %<-fdiagnostics-all-candidates%> to display themsome parts of macro expansion are not guarded by this %qs clausesorry, unimplementedsorry, unimplemented: sorry: semantics of inline function static data %q#D are wrong (you%'ll wind up with multiple copies)sorry: semantics of inline variable %q#D are wrong (you%'ll wind up with multiple copies)source is a pointer to incomplete typesource is not a pointersource is not a pointer to classsource is not of class typesource is of incomplete class typesource locations for function %qD have changed, the profile data may be out of datesource object %qE of size %ssource object allocated heresource object is likely at address zerosource object of size %s allocated by %qEsource type is not polymorphicspace between quotes and suffix is deprecated in C++23space followed by punctuation character %<%c%>spec %qs has invalid %<%%0%c%>spec %qs has invalid %<%%@%c%>spec %qs has invalid %<%%W%c%>spec %qs has invalid %<%%x%c%>spec %qs invalidspec failure: %<%%*%> has not been initialized by pattern matchspec failure: more than one argument to %<SYSROOT_HEADERS_SUFFIX_SPEC%>spec failure: more than one argument to %<SYSROOT_SUFFIX_SPEC%>spec failure: unrecognized spec option %qcspec file has no spec for linkingspec is '%s'
  
! spec-generated switch is just %<-%>spec_dimen_size(): Bad dimensionspecialization %qT after instantiation %qTspecialization of %qD after instantiationspecialization of %qD in different namespacespecialization of %qD must appear at namespace scopespecialization of %qT after instantiationspecialization of alias template %qDspecialization of implicitly-declared special member functionspecialization of variable template %qD declared as functionspecializing member %<%T::%E%> requires %<template<>%> syntaxspecified bound %E exceeds destination size %Especified bound %E exceeds maximum object size %Especified bound %E exceeds source size %Especified bound %E may exceed destination size %Especified bound %E may exceed maximum object size %Especified bound %E may exceed source size %Especified bound %wu exceeds %<INT_MAX%>specified bound %wu exceeds maximum object size %wuspecified bound %wu exceeds the size %wu of the destination objectspecified bound [%E, %E] exceeds destination size %Especified bound [%E, %E] exceeds maximum object size %Especified bound [%E, %E] exceeds source size %Especified bound [%E, %E] may exceed maximum object size %Especified bound [%E, %E] may exceed source size %Especified bound range [%wu, %wu] exceeds %<INT_MAX%>specified mode too small for enumerated valuesspecified option %qs more than oncespecified size %E exceeds maximum object size %Especified size %E may exceed maximum object size %Especified size between %E and %E exceeds maximum object size %Especified size between %E and %E may exceed maximum object size %Especify a system register with a small string lengthspecify the library order, the libraries may be specified by a comma separated abbreviation: log,min,pim,iso or by directory names: m2log,m2min,m2pim,m2iso.specify the list of runtime modules and their initialization orderspecify the module mangled prefix namespecify the module mangled prefix name for all modules in the following include pathsspecifying vector types with %<__attribute__ ((mode))%> is deprecatedspecs %%include syntax malformed after %td charactersspecs %%rename syntax malformed after %td charactersspecs %s spec was not found to be renamedspecs file malformed after %td charactersspecs unknown %% command after %td charactersspeculative edges are not adjacentspurious %<>>%>, use %<>%> to terminate a template argument listspurious leading punctuation sequence %<%.*s%> in formatspurious trailing %<%%%> in formatspurious trailing punctuation sequence %<%.*s%> in formatspurious trailing space in formatstack clash guard size %<%d%> must be equal to probing interval %<%d%>stack frame must be smaller than 64Kstack frame not a multiple of 8 bytes: %wdstack frame not a multiple of octabyte: %wdstack frame too largestack guard value must be an exact power of 2stack limit expression is not supportedstack limits not supported on this targetstack probes for SVE framesstack probing requires %<-maccumulate-outgoing-args%> for correctnessstack probing requires %<target("accumulate-outgoing-args")%> for correctnessstack protector not protecting function: all local arrays are less than %d bytes longstack protector not protecting local variables: variable length bufferstack register used for global register variablestack size must be an exact power of 2stack size must be greater than the stack guard valuestack size must not be greater than 64kstack usage computation not supported for this targetstack usage is %wu bytesstack usage might be %wu bytesstack usage might be unboundedstackframe too big: %d bytesstandalone OpenMP directives in %<omp::directive%> attribute can only appear on an empty statementstandard %qE attribute can only be applied to function declarators or type specifiers with function typestandard %qE attribute can only be applied to functionsstandard attributes in middle of decl-specifiersstandard attributes must precede the decl-specifiers to apply to the declaration, or follow them to apply to the typestandard attributes on namespaces must precede the namespace namestart of RTL fragment must be on an earlier line than endstart of implied-do loop at %L could not be simplified to a constant valuestart/end of RTL fragment are in different filesstatement cannot resolve address of overloaded functionstatement has no effectstatement is a reference, not call, to function %qEstatement is not a constant expressionstatement marked for throw in middle of blockstatement marked for throw, but doesn%'tstatement uses released SSA namestatement volatile flag not up to datestatement will never be executedstatement with no effectstatement-expressions are not allowed outside functions nor in template-argument listsstatic assertion failedstatic assertion failed: %.*sstatic assertion failed: %Estatic attribute %qs declaration for %q+D needs an addressstatic chain with function that doesn%'t use onestatic data member %qD in unnamed classstatic data member %qE declared %qsstatic data member is not name-independentstatic declaration of %q+D follows non-static declarationstatic initialization of variable %q+D in %<.shared%> memory is not supportedstatic is not supported on TPF-OSstatic member %qD cannot be a bit-fieldstatic member %qD declared %<register%>static member function %q#D declared with type qualifiersstatic member function %qD cannot have cv-qualifierstatic member function %qD cannot have ref-qualifierstatic or type qualifiers in non-parameter array declaratorstatic structured binding is not name-independentstatic type %qT of its operand is a non-public base class of dynamic type %qTstatic variable is not name-independentstatically allocated instance of Objective-C class %qEstdcall and cdecl attributes are not compatiblestdcall and fastcall attributes are not compatiblestdcall and thiscall attributes are not compatiblestep expression refers to outer iterator %qDstep of implied-do loop at %L could not be simplified to a constant valuestep of implied-do loop at %L shall not be zerostmt (%p) marked modified after optimization pass: stmt with wrong VUSEstmts without blockstorage class %<__thread%> invalid for function %qsstorage class %<auto%> invalid for function %qsstorage class %<register%> invalid for function %qsstorage class %<thread_local%> invalid for function %qsstorage class %qD applied to template instantiationstorage class specified for %qsstorage class specified for parameter %qEstorage class specified for parameter %qsstorage class specified for structure fieldstorage class specified for structure field %qEstorage class specified for template parameter %qsstorage class specified for typenamestorage class specified for unnamed parameterstorage class specifier in %<sizeof%>storage class specifier in %qEstorage class specifier in caststorage class specifier in empty declaration with %<enum%> underlying typestorage class specifiers invalid in friend function declarationsstorage size of %q+D isn%'t constantstorage size of %q+D isn%'t knownstorage size of %qD has not been resolvedstorage size of %qD isn%'t constantstorage size of %qD isn%'t knownstoring the address of local variable %qD in %qEstrange device name %qs after %qs: bad character %qcstrategy name %qs specified for option %qs not supported for 32-bit codestray %<,%> at end of member declarationstray %<@%> in programstray %<\%o%> in programstray %qc in programstray %qs between Objective-C++ methodsstray %qs in programstreaming functions require the ISA extension %qsstreaming subprocess failedstreaming subprocess was killed by signalstrftime formats cannot format argumentsstring length %qd is greater than the length %qd ISO C%d compilers are required to supportstring literal must not contain %<\0%>string literal with user-defined suffix is invalid in this contextstrong-cast assignment has been interceptedstrong-cast may possibly be neededstruct defined herestruct has no membersstruct has no named membersstructure alignment must be a small power of two, not %wustructure containing a flexible array member is not at the end of another structurestructure fieldstructure size boundary can only be set to 8 or 32structure size boundary can only be set to 8, 32 or 64structured binding at namespace scope is not name-independentstructured binding declaration can be %qs only in %<-std=c++20%> or %<-std=gnu++20%>structured binding declaration cannot be %qsstructured binding declaration cannot be C++98 %<auto%>structured binding declaration cannot have constrained %<auto%> type %qTstructured binding declaration cannot have type %qTstructured binding declaration set but not usedstructured binding has incomplete type %qTstructured binding refers to incomplete class type %qTstructured binding refers to incomplete type %qTstructured bindings in conditions only available with %<-std=c++2c%> or %<-std=gnu++2c%>structured bindings only available with %<-std=c++17%> or %<-std=gnu++17%>structured bindings with attributed identifiers only available with %<-std=c++2c%> or %<-std=gnu++2c%>subframework include %s conflicts with framework includesubobject %qD declared heresubprogram %q+F not marked %<Inline%>subprogram %q+F not marked %<Inline_Always%>subscript missing in array referencesubscripted value is neither array nor pointersubscripted value is neither array nor pointer nor vectorsubscripted value is pointer to functionsubscripting array declared %<register%>subsequently declared as %s with %u unspecified variable boundsubsequently declared as %s with %u unspecified variable boundssubstitution of deduced template arguments resulted in errors seen abovesuggest braces around empty body in %<do%> statementsuggest braces around empty body in an %<else%> statementsuggest braces around empty body in an %<if%> statementsuggest explicit braces around empty body in %<do%> statementsuggest explicit braces to avoid ambiguous %<else%>suggest parentheses around %<&&%> within %<||%>suggest parentheses around %<+%> in operand of %<&%>suggest parentheses around %<+%> inside %<<<%>suggest parentheses around %<+%> inside %<>>%>suggest parentheses around %<-%> in operand of %<&%>suggest parentheses around %<-%> inside %<<<%>suggest parentheses around %<-%> inside %<>>%>suggest parentheses around %<>>%> expressionsuggest parentheses around arithmetic in operand of %<^%>suggest parentheses around arithmetic in operand of %<|%>suggest parentheses around assignment used as truth valuesuggest parentheses around comparison in operand of %<!=%>suggest parentheses around comparison in operand of %<&%>suggest parentheses around comparison in operand of %<==%>suggest parentheses around comparison in operand of %<^%>suggest parentheses around comparison in operand of %<|%>suggest parentheses around operand of %<!%> or change %<&%> to %<&&%> or %<!%> to %<~%>suggest parentheses around operand of %<!%> or change %<|%> to %<||%> or %<!%> to %<~%>suggested alternative:suggested alternatives:support for mode %qssupported core architectures:%sswitch %<-mcpu=%s%> conflicts with %<-march=%s%> switch and resulted in options %qs being addedswitch %<-mcpu=%s%> conflicts with switch %<-march=%s%>switch %qs does not start with %<-%>switch %qs is no longer supportedswitch condition has boolean valueswitch jumps into statement expressionswitch jumps over OpenMP %<allocate%> allocationswitch jumps over variable initializationswitch missing default caseswitch quantity not an integerswitch starts hereswitch statement of size %lu entries too largesymbol %qD referenced by %qD declared heresymbol needs to be defined to have a versionsymbol used as immediate operandsymbol used with both base and indexed registerssymbol with offset used in PIC modesymbolic memory references are only supported on z10 or latersymtab_node::verify failedsymver attribute argument must have format %<name@nodename%>symver is not exported with default visibilitysymver is only supported on ELF platformssymver target is not exported with default visibilitysynthesized method %qD first required heresystem path %qs is not absolutetail call production failedtail recursion with accumulation mixed with musttail non-recursive calltail recursion with pointers can only use additionstaking address of an immediate function %qDtaking address of constructor %qDtaking address of destructor %qDtaking address of expression of type %<void%>taking address of packed member of %qT may result in an unaligned pointer valuetaking address of rvaluetaking the absolute value of unsigned type %qT has no effecttaking the address of a label is non-standardtarget & host is %qs:%qs, expected %qs:%qstarget CPU does not support ARM modetarget CPU does not support ARMv8-M Security Extensionstarget CPU does not support THUMB instructionstarget CPU does not support interworkingtarget CPU does not support unaligned accessestarget OS does not support unaligned accessestarget argumenttarget attribute or pragma changes %<long double%> sizetarget attribute or pragma changes AltiVec ABItarget attribute or pragma changes darwin64 ABItarget does not support atomic profile update, single mode is selectedtarget does not support function version dispatchertarget format does not support infinitytarget is not able to optimize the call into a sibling calltarget is not pointer or referencetarget is not pointer or reference to classtarget is not pointer or reference to complete typetarget of conversion might be a candidate for a format attributetarget of initialization might be a candidate for a format attributetarget specific builtin not availabletarget specific option mismatchtarget system does not support debug outputtarget system does not support the %qs debug formattargets missing after %qstemplate %qD declaredtemplate %qE in clause %qstemplate argument %d is invalidtemplate argument %qE for type %qT not a compile-time constanttemplate argument deduction/substitution failed:template argument for %qD uses local type %qTtemplate argument required for %<%s %T%>template arguments to %qD do not match original template %qDtemplate class without a nametemplate constraint failure for %qDtemplate declaration of %<typedef%>template declaration of %q#Dtemplate definition of non-template %q#Dtemplate instantiation depth exceeds maximum of %d (use %<-ftemplate-depth=%> to increase the maximum)template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use %<-ftemplate-depth=%> to increase the maximum)template parameter %q+#Dtemplate parameter %qD declared heretemplate parameter %qD of type %qT is not allowed in an integral constant expression because it is not of integral or enumeration typetemplate parameter list used in explicit instantiationtemplate parameter lists provided don%'t match the template parameters of %qDtemplate parameter pack %qD cannot have a default argumenttemplate parameter pack cannot have a default argumenttemplate parameter packs cannot have default argumentstemplate parameter type %qT declared %<friend%>template parameters cannot be friendstemplate parameters do not match template %qDtemplate parameters not deducible in partial specialization:template specialization of %qD not allowed by ISO C++template specialization with C linkagetemplate specifiers not specified in declaration of %qDtemplate template parameter %qT in declaration of deduction guidetemplate type parameters must use the keyword %<class%> or %<typename%>template with C linkagetemplate-id %qD for %q+D does not match any template declarationtemplate-id %qD used as a declaratortemplate-id %qE in declaration of primary templatetemplate-id not allowed for constructor in C++20template-id not allowed for destructor in C++20template-parameter-templates may not be %<virtual%>temporary of non-literal type %qT in a constant expressionternary %<operator?:%>ternary %<operator?:%> in %<%E ? %E : %E%>testing if a concept-id is a valid expression; add %<requires%> to check satisfactionthe %<audit%> semantic should be at least as strong as the %<default%> semanticthe %<bool%> keyword is not allowed in a C++20 concept definitionthe %<destroy%> expression %qE should be the same as the %<depobj%> argument %qEthe %<device%> clause expression must evaluate to %<1%>the %<device%> clause expression must evaluate to %<1%> at %Cthe %<device%> clause must be present if the %<interop%> clause has more than one list itemthe %<interrupt%> attribute requires a MIPS32r2 processor or greaterthe %<simd%> selector is not permitted in a %<begin declare variant%> context selectorthe %qE attribute cannot be applied to an SVE function typethe %qE attribute requires argumentsthe %qs architecture does not support %<-m%s=2008%>the %qs architecture does not support %<-m%s=legacy%>the %qs architecture does not support %<-mfp32%>the %qs architecture does not support DSP instructionsthe %qs architecture does not support branch-likely instructionsthe %qs architecture does not support madd or msub instructionsthe %qs architecture does not support odd single-precision registersthe %qs architecture does not support paired-single instructionsthe %qs architecture does not support the synci instructionthe %qs clause at %L can only be specified if the %<dispatch%> selector of the construct selector set appears in the %<match%> clausethe %qs clause can only be specified if the %<dispatch%> selector of the construct selector set appears in the %<match%> clause at %Lthe %qs debug info cannot be used with pre-compiled headersthe ' ' printf flagthe '!' strfmon flagthe '#' printf flagthe '#' strftime flagthe ''' printf flagthe ''' scanf flagthe '(' strfmon flagthe '+' printf flagthe '+' strfmon flagthe '-' printf flagthe '-' strfmon flagthe '-' strftime flagthe '0' printf flagthe '0' strftime flagthe 'E' strftime modifierthe 'I' printf flagthe 'I' scanf flagthe 'O' modifierthe 'O' strftime modifierthe '^' strfmon flagthe '^' strftime flagthe '_' strftime flagthe 'a' scanf flagthe 'm' scanf flagthe 'q' diagnostic flagthe -shared option is not currently supported for VAX ELFthe ABI for passing a value containing zero-width fields before an adjacent 64-bit floating-point field was changed in GCC %{12.1%}the ABI for passing parameters with %d-byte alignment has changed in GCC 4.6the ABI for returning a value containing zero-width bit-fields but otherwise an aggregate with only one or two floating-point fields was changed in GCC %{12.1%}the ABI for returning a value with C++17 empty bases but otherwise an aggregate with only one or two floating-point fields was changed in GCC %{12.1%}the ABI of passing C structures with zero-width bit-fields has changed in GCC %{12.1%}the ABI of passing struct with a flexible array member has changed in GCC 4.4the ABI of passing structure with %<complex float%> member has changed in GCC 4.4the ABI of passing union with %<long double%> has changed in GCC 4.4the RX100 cpu does not have FPU hardwarethe RX200 cpu does not have FPU hardwarethe address %qE will never be NULLthe address of %qD is not a valid template argumentthe address of %qD is not a valid template argument because it does not have static storage durationthe address of %qD will always evaluate as %<true%>the address of %qD will never be %<null%>the address of %qD will never be NULLthe address of a label cannot appear in a constant-expressionthe address of the %qT subobject of %qD is not a valid template argumentthe align argument to %<__builtin_coro_promise%> must be a constantthe alignment of %<_Atomic %T%> fields changed in %{GCC 11.1%}the argument to %<__builtin_counted_by_ref%> must be an arraythe argument to %<xabort%> intrinsic must be an 8-bit immediatethe arguments to %qE must be constant stringsthe assignment suppression scanf featurethe call requires %<ifunc%>, which is not supported by this targetthe calling convention for %qT changes in %<-fabi-version=13%> (GCC 8.2)the combination of %qs and %qs is incompatible with %qsthe comparison reduces to %qEthe comparison will always evaluate as %<false%> for the address of %qE will never be NULLthe comparison will always evaluate as %<false%> for the pointer operand in %qE must not be NULLthe comparison will always evaluate as %<true%> for the address of %qE will never be NULLthe comparison will always evaluate as %<true%> for the pointer operand in %qE must not be NULLthe compiler can assume that the address of %qD will always evaluate to %<true%>the compiler can assume that the address of %qD will never be NULLthe compiler can assume that the address of %qE will never be NULLthe component %qs is a PRIVATE type and cannot be a component of %qs, which is PUBLIC at %Lthe conflicting type defined in another translation unitthe conflicting type defined in another translation unit has virtual table of different sizethe conflicting type defined in another translation unit has virtual table with different contentsthe conflicting type defined in another translation unit has virtual table with more entriesthe conflicting type defined in another translation unit with different RTTI informationthe content of uninitialized storage is not usable in a constant expressionthe control flow of function %qD does not match its profile data (counter %qs)the coroutine promise type %qT declares both %<return_value%> and %<return_void%>the count should be no less than 0; please check the intrinsic %qs in codethe default value for the current CPU tuning is %d bytesthe direction argument to %<__builtin_coro_promise%> must be a constantthe dot syntax is not available in Objective-C 1.0the ellipsis in %qD is not inheritedthe event handle of a %<detach%> clause should not be in a data-sharing clausethe expression %qE evaluated to %<false%>the expression %qE is required to be non-throwingthe extra base is defined herethe fifth argument must be an 8-bit immediatethe first argument of a %qs must be of a boolean vector type of the same number of elements as the resultthe first difference of corresponding definitions is field %qDthe first difference of corresponding definitions is method %qDthe first parameter of %<operator new%> cannot have a default argumentthe fourth argument must be one of enum %qsthe frame size of %wu bytes is larger than %wu bytesthe immediate argument must be a 4-bit immediatethe immediate argument must be a 5-bit immediatethe immediate argument must be an 8-bit immediatethe incompatible selection was determined by ultimate alias target %qDthe incompatible type defined in another translation unitthe incompatible type is defined herethe lambda has no capture-defaultthe last argument must be a 1-bit immediatethe last argument must be a 2-bit immediatethe last argument must be a 3-bit immediatethe last argument must be a 32-bit immediatethe last argument must be a 4-bit immediatethe last argument must be a 5-bit immediatethe last argument must be an 1-bit immediatethe last argument must be an 8-bit immediatethe last argument must be scale 1, 2, 4, 8the location value is corruptthe m210 does not have little endian supportthe macro %qs had not yet been definedthe mangled name of %qD changed between %<%s=%d%> (%qD) and %<%s=%d%> (%qD)the mangled name of %qD changes between %<%s=%d%> (%qD) and %<%s=%d%> (%qD)the mangled name of %qD changes between %<-fabi-version=%d%> and %<-fabi-version=%d%>the mangled name of %qT changed in %<-fabi-version=20%> (GCC 15.1)the mangled name of %qT changes in %<-fabi-version=20%> (GCC 15.1)the mangled name of a thunk for %qD changes between %<-fabi-version=%d%> and %<-fabi-version=%d%>the mangled name of the initialization guard variable for %qD changes between %<-fabi-version=%d%> and %<-fabi-version=%d%>the max value for the last size range should be -1 for option %qsthe message attached to %<unavailable%> is not a stringthe modules initialization order is dynamically determined by M2RTS and application dependenciesthe next to last argument must be an 8-bit immediatethe omitted middle operand in %<?:%> will always be %<true%>, suggest explicit middle operandthe operand %qE is unsatisfied becausethe passed in closure object will not be mutated because it is taken by valuethe program should also define %qDthe range of count should be in 0 to 16; please check the intrinsic %qs in codethe range of count should be in 0 to 32; please check the intrinsic %qs in codethe range of count should be in 0 to 64; please check the intrinsic %qs in codethe range of mask should be in 0 to 255the range of selector should be in 0 to 1the range of selector should be in 0 to 3the range of selector should be in 0 to 7the register %qs cannot be clobbered in %<asm%> for the current targetthe register specified for %q+D cannot be accessed by the current targetthe register specified for %q+D is not general enough to be used as a register variablethe required expression %qE is invalidthe required expression %qE is invalid, becausethe required type %qT is invalidthe required type %qT is invalid, becausethe result for the xxspltidp instruction is undefined for subnormal input valuesthe result of the conversion is unspecified because %qE is outside the range of type %qTthe same loop iteration variables %qD used in multiple associated loopsthe target does not support %<asm goto%> with outputs in %<asm%>the third argument must be an 8-bit immediatethe third argument must be comparison constantthe type %qT of %<constexpr%> variable %qD is not literalthe type being destroyed is %qT, but the destructor refers to %qTthe type of a pointer to explicit object member function is a regular pointer to function typethe type of an explicit object member function is a regular function typethe value of %qD is not usable in a constant expressionthe value of the stack pointer after an %<asm%> statement must be the same as it was before the statementthere are no arguments to %qD that depend on a template parameter, so a declaration of %qD must be availablethere is %i candidatethere are %i candidatesthird argument of %q+D should probably be %<char **%>third argument to %<__builtin_prefetch%> must be a constantthird argument to %<crc%> builtins must be a constantthird argument to function %qE must be a constant integerthird operand of conditional expression cannot resolve address of overloaded functionthird operand of conditional expression has no effectthird operand of conditional expression is a reference, not call, to function %qEthird operand to the conditional operator is of type %<void%>, but the second operand is neither a throw-expression nor of type %<void%>this %qs clause does not guard...this built-in function is only available on the fr405 and fr450this built-in function is only available on the fr450this built-in function is only available on the fr500 and fr550this built-in function is only available on the v3f toolchainthis built-in function is only available on the v3s or v3f toolchainthis built-in function not support on the v3m toolchainthis builtin is not supported for this targetthis compiler does not support %qsthis compiler does not support PowerPC (%<-arch%> option ignored)this compiler does not support x86 (%<-arch%> option ignored)this condition has identical branchesthis decimal constant is unsigned only in ISO C90this decimal constant would be unsigned in ISO C90this definition requires MVE types, please include %qsthis definition requires the MVE ISA extensionthis flexibility is deprecated and will be removedthis is a GCC bug that can be worked around by adding attribute used to function calledthis is a testthis is the first default labelthis is the first entry overlapping that valuethis is the insn:this media function is only available on the fr400 and fr550this media function is only available on the fr500this operation requires the RVV ISA extensionthis operation requires the SVE ISA extensionthis statement may fall throughthis target does not define a speculation barrier; your program will still execute correctly, but incorrect speculation may not be restrictedthis target does not support %qsthis target is little-endianthis target machine does not have delayed branchesthis warning should be skippedthread-local COMMON data not implementedthread-local declaration of %q#D follows non-thread-local declarationthread-local declaration of %q+D follows non-thread-local declarationthreadprivate iteration variable %qDthreadprivate variable %qE used in a region with %<order(concurrent)%> clausethreadprivate variable %qE used in target regionthreadprivate variable %qE used in untied taskthree-way comparison of %qD has type %qT, not a comparison category typethree-way comparison of %qD has type %qT, which does not convert to %qTthree-way comparison of vectorsthrowing NULL, which has integral, not pointer typethunk-inline is only supported with %<-mindirect-branch-jump%>to be allocated variable declared hereto be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualifiedto generate dependencies you must specify either %<-M%> or %<-MM%>to match this %qsto refer to a type member of a template parameter, use %<typename %E%>token %u has %<x-location == %llu%>token %u has %<x-location == y-location == %llu%>token %u has %<y-location == %llu%>too few arguments to %%:version-comparetoo few arguments to %<__builtin_tgmath%>too few arguments to built-in function %qE expecting %utoo few arguments to constructor %q#Dtoo few arguments to functiontoo few arguments to function %<va_start%>too few arguments to function %q#Dtoo few arguments to function %qEtoo few arguments to function %qE; expected %i, have %itoo few arguments to function %qE; expected at least %i, have %itoo few arguments to member function %q#Dtoo few arguments to method %q#Dtoo few template parameter lists in declaration of %qDtoo few template-parameter-liststoo large function value type, needs %d registers, have only %d registers for thistoo late for # directive to set debug directorytoo many %<#pragma options align=reset%>too many %<...%> in lambda capturetoo many %<always%> modifierstoo many %<always%> modifiers at %Ltoo many %<close%> modifierstoo many %<close%> modifiers at %Ltoo many %<defaultmap%> clauses with %qs categorytoo many %<defaultmap%> clauses with unspecified categorytoo many %<if%> clausestoo many %<if%> clauses with %qs modifiertoo many %<if%> clauses without modifiertoo many %<match%> clausestoo many %<otherwise%> or %<default%> clauses in %<metadirective%>too many %<otherwise%> or %<default%> clauses in %<metadirective%> at %Ctoo many %<present%> modifierstoo many %<present%> modifiers at %Ltoo many %<self%> clausestoo many %<static%> argumentstoo many %qs clausestoo many %qs clauses on a task constructtoo many alternatives in %<asm%>too many argumentstoo many arguments for %%:dumpstoo many arguments for formattoo many arguments for partial specialization %qTtoo many arguments passed in sgpr registerstoo many arguments to %%:compare-debug-dump-opttoo many arguments to %%:compare-debug-self-opttoo many arguments to %%:version-comparetoo many arguments to built-in function %qE expecting %dtoo many arguments to constructor %q#Dtoo many arguments to functiontoo many arguments to function %q#Dtoo many arguments to function %qEtoo many arguments to function %qE; expected %i, have %itoo many arguments to maketoo many arguments to member function %q#Dtoo many arguments to method %q#Dtoo many arguments to method %qE; expected %i, have %itoo many atomic clausestoo many braces around initializer for %qTtoo many braces around scalar initializer for type %qTtoo many exception handling edges in bb %itoo many filenames given; type %<%s %s%> for usagetoo many function arguments for eBPFtoo many initializers for %qTtoo many input filestoo many loop exits recordedtoo many memory order clausestoo many open parenstoo many outgoing branch edges from bb %itoo many size ranges specified in option %qstoo many template headers for %qD (should be %d)too many template parameter lists in declaration of %qDtoo many template-parameter-liststoo many values in return statementtoo many variables for range clause with channeltoo much stack space to dispose of: %dtoo much stack space to prepare: %dtop-level comma expression in array subscript changed meaning in C++23top-level comma expression in array subscript is deprecatedtop-level declaration of %qs specifies %<auto%>toplevel reorder must be disabled when unit-at-a-time is disabledtotal size and element size must be a nonzero constant immediatetotal size of local objects %wu exceeds maximum %wutotal size of local objects exceeds maximum %wutotal size of local objects is too largetotal size of local variables exceeds architecture limittp_first_run must be non-negativetraditional C lacks a separate namespace for labels, identifier %qE conflictstraditional C rejects ISO C style function definitionstraditional C rejects automatic aggregate initializationtraditional C rejects initialization of unionstraditional C rejects string constant concatenationtraditional C rejects the unary plus operatortrailing %<,%> in arguments for %<#pragma GCC diagnostic ignored_attributes%>trailing %<,%> in arguments for %<-Wno-attributes=%>trailing argument to %<__type_pack_element%> is not a typetrailing array %qT should not be used as a flexible array membertrailing return type %qT of deduction guide is not a specialization of %qTtrailing return type only available with %<-std=c++11%> or %<-std=gnu++11%>trait-property %qs specified more than once in %qs selectortrampoline generated for nested function %qDtransactional memory is not supported with %<-fsanitize=address%>transactional memory is not supported with %<-fsanitize=kernel-address%>transactional memory is not supported with non-call exceptionstransformational intrinsic %qs at %L is not permitted in an initialization expressiontrap mode not supported for VAX floatstree check: %s, have %s in %s, at %s:%dtree check: accessed elt %d of %<tree_int_cst%> with %d elts in %s, at %s:%dtree check: accessed elt %d of %<tree_vec%> with %d elts in %s, at %s:%dtree check: accessed operand %d of %<omp_clause %s%> with %d operands in %s, at %s:%dtree check: accessed operand %d of %s with %d operands in %s, at %s:%dtree check: did not expect class %qs, have %qs (%s) in %s, at %s:%dtree check: expected %<omp_clause %s%>, have %qs in %s, at %s:%dtree check: expected class %qs, have %qs (%s) in %s, at %s:%dtree check: expected none of %s, have %s in %s, at %s:%dtree check: expected tree that contains %qs structure, have %qs in %s, at %s:%dtree code %qs is not supported in LTO streamstree list ends on depth %itried to perform floating-point modulo division on %qTtrue/false edge after a non-GIMPLE_COND in bb %dtry making the operator a %<const%> member functiontry removing the parentheses around the type-idtry using %qE insteadtrying to capture %qD in instantiation of generic lambdatrying to encode non-integer type as a bit-fieldtrying to finish struct, but kicked out due to previous parse errorstrying to make class %qT a friend of global scopetuning string missing in option (%s)turn on internal debug tracing for quad,token,line,all (internal switch)turn on internal debugging of the compiler (internal switch)turn on tracing of procedure line numbers (internal switch)turns on all division and modulus by zero checking for ordinal valuesturns on all range checking for numerical valuesturns on all software runtime checking (an abbreviation for -fnil -frange -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue)turns on case statement label compile time checking when using an expression of an enum type.turns on compile time analysis in the first basic block of a procedure detecting access to uninitialized data.turns on compile time analysis to detect access to uninitialized variables, the checking can be specified by: known,cond,all.turns on runtime checking for functions which finish without executing a RETURN statementturns on runtime checking to check whether a CASE statement requires an ELSE clause when one was not specifiedturns on runtime checking to check whether a floating point number will exceed rangeturns on runtime checking to check whether a whole number will exceed rangeturns on runtime checking to detect accessing data through a NIL value pointerturns on runtime subrange, array index and indirection via NIL pointer checkingtwo consecutive %<[%> shall only introduce an attributetwo different outer iteration variables %qD and %qD used in a single looptwo or more data types in declaration of %qstwo or more data types in declaration specifierstwo or more sections for %stype %<__vector_pair%> requires the %qs optiontype %<__vector_quad%> requires the %qs optiontype %q#T argument given to %<delete%>, expected pointertype %qE has a user-defined constructortype %qE has a user-defined destructortype %qE has no default constructor to calltype %qE has virtual member functionstype %qT (typedef of %qT) violates the C++ One Definition Ruletype %qT defined in anonymous namespace cannot match across the translation unit boundarytype %qT defined in anonymous namespace cannot match type %qT across the translation unit boundarytype %qT does not have a known sizetype %qT for explicit instantiation %qD does not match declared type %qTtype %qT is not a base type for type %qTtype %qT is not a direct base of %qTtype %qT is not a direct or virtual base of %qTtype %qT is too largetype %qT itself violates the C++ One Definition Ruletype %qT of argument to %<__builtin_launder%> is not a pointer to object typetype %qT of template argument %qE depends on a template parametertype %qT of template argument %qE depends on template parameterstype %qT should match type %qTtype %qT violates the C++ One Definition Ruletype %qT with no linkage used to declare function %q#D with linkagetype %qT with no linkage used to declare variable %q#D with linkagetype %qs does not conform to the %qE protocoltype %qs is not an expressiontype %qs violates the C++ One Definition Ruletype %s differs by %<TYPE_ALIGN%>type %s differs by %<TYPE_MODE%>type %s differs by %<TYPE_SIZE%>type %s differs by %<TYPE_USER_ALIGN%>type %s is not an opaque typetype %s is not with opaque modetype assertion only valid for interface typestype attributes ignored after type is already definedtype defaults to %<int%> in declaration of %qEtype defaults to %<int%> in type nametype has no methodstype is deprecatedtype is deprecated: %stype is not compatible with its varianttype is unavailabletype is unavailable: %stype mismatch between an SSA_NAME and its symboltype mismatch for case label in switch statementtype mismatch in %qstype mismatch in %qs expressiontype mismatch in %qs referencetype mismatch in binary expressiontype mismatch in conditional expressiontype mismatch in parameter %itype must be cv-qualified %<auto%> or reference to cv-qualified %<auto%>type name %qs should match type name %qstype name declared as function returning a functiontype name declared as function returning an arraytype of %<asm%> operand %qE could not be determinedtype of %<depobj%> expression is not %<omp_depend_t%>type of %qD defaults to %<int%>type of %qD does not match original declarationtype of %qE is unknowntype of array %q+D completed incompatibly with implicit initializationtype of bit-field %qs is a GCC extensiontype of formal parameter %d is incompletetype of iterator %qD refers to outer iterator %qDtype of property %qD conflicts with previous declarationtype precision mismatch in switch statementtype punning toggles scalar storage ordertype qualifier in empty declaration with %<enum%> underlying typetype qualifiers ignored on cast result typetype qualifiers ignored on function return typetype to vector delete is neither pointer or array typetype transparent %q#T cannot be made transparent because the type of the first field has a different ABI from the class overalltype transparent %q#T does not have any fieldstype transparent class %qT has base classestype transparent class %qT has virtual functionstype variant differs by %stype variant has different %<TREE_TYPE%>type variant has different %<TYPE_BINFO%>type variant has different %<TYPE_FIELDS%>type variant has different %<TYPE_SIZE_UNIT%>type variant has different %<TYPE_VFIELD%>type variant with %<TYPE_ALIAS_SET_KNOWN_P%>type variant%'s %<TREE_TYPE%>type variant%'s %<TYPE_BINFO%>type variant%'s %<TYPE_SIZE_UNIT%>type was previously declared %qEtype%'s %<TREE_TYPE%>type%'s %<TYPE_BINFO%>type%'s %<TYPE_SIZE_UNIT%>type-punning to incomplete type might break strict-aliasing rulestype-specifier invalid in lambdatype/value mismatch at argument %d in template parameter list for %qDtypedef %q+D declared %<_Noreturn%>typedef %q+D declared %<inline%>typedef %qD is initialized (use %<__typeof__%> instead)typedef %qD is initialized (use %qs instead)typedef %qD locally defined but not usedtypedef declaration invalid in parameter declarationtypedef declared %<auto%>typedef may not be a function definitiontypedef may not be a member function definitiontypedef name may not be a nested-name-specifiertypedef-name %qD used as destructor declaratortypes are not quite compatibletypes differ in signednesstypes have different parameter countstypes may not be defined in %<__builtin_classify_type%> callstypes may not be defined in %<decltype%> expressionstypes may not be defined in %<noexcept%> expressionstypes may not be defined in %qs expressionstypes may not be defined in a %<typeid%> expressiontypes may not be defined in a conversion-type-idtypes may not be defined in a for-range-declarationtypes may not be defined in a new-expressiontypes may not be defined in a new-type-idtypes may not be defined in alias template declarationstypes may not be defined in an exception-specificationtypes may not be defined in caststypes may not be defined in conditionstypes may not be defined in declare reduction type listtypes may not be defined in enum-basetypes may not be defined in exception-declarationstypes may not be defined in explicit-specifiertypes may not be defined in iterator typetypes may not be defined in parameter typestypes may not be defined in template argumentstypes may not be defined within %<__builtin_offsetof%>typespec in ALLOCATE at %Lunable to compute real location of stacked parameterunable to deduce %qT from %qEunable to deduce lambda return type from %qEunable to determine filename for SARIF outputunable to emulate %qsunable to find a register to spillunable to find a register to spill in class %qsunable to find character literal operator %qD with %qT argumentunable to find numeric literal operator %qDunable to find string literal operator %qD with %qT, %qT argumentsunable to find the promise type for this coroutineunable to generate reloads for impossible constraints:unable to generate reloads for:unable to implement ABI %qs with instruction set %qsunable to locate default linker script %qs in the library search pathsunable to open %qs for SARIF output: %munable to open %qs: %munable to open %s for reading: %munable to open %s for writing: %munable to open dynamic dependency %qsunable to open fileunable to open log file %<vtv_class_set_sizes.log%>: %munable to open log file %<vtv_count_data.log%>: %munable to open log file %<vtv_set_ptr_data.log%>: %munable to register info for plugin %qs - plugin name not foundunable to represent further imported source locationsunable to resolve forward reference in definitionunable to use %qs for PIC registerunavailable stringop for inlining %qsunbalanced punctuation character %<%c%> in formatunbalanced punctuation character %qc in formatunbounded use of %<alloca%>unbounded use of variable-length arrayunconditional %2d never executed
  unconditional %2d taken %s
! undeclared selector %qEundefined behavior when second parameter of %<va_start%> is declared with %<register%> storageundefined named operand %qsunderlying type %qT of %qT must be an integral typeunderlying type mismatch in enum %q#Tunderspecified %qD referenced in its initializerunderspecified declaration of %qE, which is already declared in this scopeunexpanded parameter pack in enumerator in lambdaunexpanded parameter pack in local class in lambdaunexpected !$OMP ATOMIC expression at %Lunexpected %<:%> at %Cunexpected %<else%>unexpected AST of kind %sunexpected EOFunexpected RHS for assignmentunexpected arch for %<target()%> attribute: bad string found %qsunexpected arch for %<target()%> attribute: must start with + or rvunexpected arch for %<target()%> attribute: must start with rv32 but found %qsunexpected arch for %<target()%> attribute: must start with rv64 but found %qsunexpected argumentunexpected argument to %<msp430_select_hwmult_lib%>: %sunexpected attributeunexpected base-type in cris_print_baseunexpected encapsulation format or typeunexpected error opening %<devices.csv%>unexpected expression %qE of kind %sunexpected file name %s in linker resolution file. Expected %sunexpected first argument to %<msp430_select_hwmult_lib%>: %sunexpected index-type in cris_print_indexunexpected keyword; remove space between quotes and suffix identifierunexpected mapping nodeunexpected module directiveunexpected multiplicative operandunexpected offsetunexpected operandunexpected operand: %dunexpected placeholder in constrained result typeunexpected pointer mapping nodeunexpected reference to packageunexpected side-effects in addressunexpected text address:unexpected type for array length: %qsunhandled alignment for %<#pragma nomember_alignment%>unhandled architectureunhandled arguments %qs and %qs to %<msp430_set_driver_var%>unhandled code after callunhandled expressionunhandled expression typeuninitialized %<const %D%>uninitialized %<const %D%> is invalid in C++uninitialized const in %<new%> of %q#Tuninitialized const member in %q#Tuninitialized const member in %q#T using %<new%> without new-initializeruninitialized const member in %qT is invalid in C++uninitialized const member in base %q#T of %q#Tuninitialized const member in base %q#T of %q#T using %<new%> without new-initializeruninitialized reference member in %q#Tuninitialized reference member in %q#T using %<new%> without new-initializeruninitialized reference member in base %q#T of %q#Tuninitialized reference member in base %q#T of %q#T using %<new%> without new-initializeruninitialized variable %q+D put into program memory areauninitialized variable %qD in %<constexpr%> contextuninitialized variable %qD in %<constexpr%> functionunion cannot be made transparentunion defined hereunion has no membersunion has no named membersunion member %q+D with non-trivial %qDunknown %<#pragma GCC aarch64%> option %qsunknown %<#pragma GCC arm%> option %qsunknown %<#pragma extern_model%> model %qsunknown %<#pragma member_alignment%> name %sunknown %<#pragma riscv intrinsic%> option %qsunknown %<-mdebug-%s%> switchunknown %<asm%> flag output %qsunknown %<setop_t%> code %dunknown C++ standard %qsunknown CRIS cpu version specification in %<-mtune=%>: %sunknown CRIS version specification in %<-march=%> or %<-mcpu=%>: %sunknown Control-Flow Protection Level %qsunknown IRA algorithm %qsunknown IRA region %qsunknown LDP/STP policy %qsunknown LTO partitioning model %qsunknown Live-Patching Level %qsunknown OpenMP directive name in %qs attribute argumentunknown OpenMP directive name in %qs clause argumentunknown SIMD extension (%qs disabled while %qs is enabled), disabling SIMDunknown Stack Reuse Level %qsunknown TLS model %qsunknown action %qE for %<#pragma pack%> - ignoredunknown alignment %qs specified for option %qsunknown architecture specific memory modelunknown architecture specifier in memory model %wi for %qDunknown array bounds setting %qsunknown array size in deleteunknown assumption clause %qsunknown attribute %qEunknown attribute %qsunknown autovec preference %qsunknown basic block reordering algorithm %qsunknown block specifierunknown builtin immediate operand type for operand %dunknown callback event registered by plugin %sunknown checkaction setting %qsunknown compiled module interface: %sunknown conversion type character %qc in formatunknown core architecture %qs specified with %qsunknown cpu %qs for %<-mtune%>unknown crate type: '%qs'unknown demangling style %qsunknown destunknown directive nameunknown error reading %s from %<devices.csv%>unknown excess precision style %qsunknown flag passed in %<-moverride=%s%> (%s)unknown floating point contraction style %qsunknown foreign runtime identifier %qsunknown foreign runtime identifier %qwdunknown hardcfr noreturn checking level %qsunknown header kind %qsunknown insn modeunknown internal function %qEunknown lam type %qsunknown linker output %qsunknown machine mode %qEunknown move insn:unknown native FPU type %<0x%x%>, %qs failedunknown native base architecture %<0x%x%>, %qs failedunknown offload ABI %qsunknown operand letter: '%c'unknown operator %qs in %%:version-compareunknown option %q.*s in %<-fopt-info-%s%>unknown option after %<#pragma GCC diagnostic%> kindunknown option for %<%s=%s%>unknown option for %<-mrecip=%s%>unknown panic strategy %qsunknown parameter to option %<-mtune-ctrl%>: %sunknown pass %s specified in %<-fdisable%>unknown pass %s specified in %<-fenable%>unknown pointer size model %qsunknown processor ID %<0x%x%>, some tuning parameters will fall back to defaultunknown profile qualityunknown profile reproducibility method %qsunknown profile update method %qsunknown property %qE of %qs selectorunknown property %qs of %qs selectorunknown property attributeunknown property attribute %<%s%s%>unknown property attribute %qEunknown punctuation '%c'unknown ranger debug mode %qsunknown register name %qs in %<asm%>unknown register name: %sunknown relocation unspecunknown rust compile-until %qsunknown rust edition %qsunknown rust mangling option %qsunknown selector %qs for context selector set %qsunknown selector %qs for context selector set %qs at %Cunknown spec function %qsunknown specification for the set of FLT_EVAL_METHOD values to permit %qsunknown specifier %qs in %<amdgpu_hsa_kernel%> attributeunknown srcunknown stack check parameter %qsunknown switch %<-mlong-double-%s%>unknown target attribute or pragma %qsunknown threader debug mode %qsunknown trampoline implementation %qsunknown tuning option (%s)unknown type %<%T%> found during Objective-C encodingunknown type name %qEunknown type name %qE; did you mean %qs?unknown type name %qE; use %<enum%> keyword to refer to the typeunknown type name %qE; use %<struct%> keyword to refer to the typeunknown type name %qE; use %<union%> keyword to refer to the typeunknown value %qs for %<-march%>unknown value %qs for %<-mcpu%>unknown value %qs for %<-mtune%>unknown value %qs of %<-mmacosx-version-min%>unknown vectorization library ABI type in %<-mveclibabi=%s%>unknown vectorizer cost model %qsunknown vtable verify initialization priority %qsunmatched color reset directiveunmatched quoting directiveunnamed class defined hereunnamed field has incomplete typeunnamed field is neither function nor member function; cannot be declared friendunnamed initializer for %qT, which has no base classesunnamed initializer for %qT, which uses multiple inheritanceunnamed scoped enum is not allowedunnamed struct/union that defines no instancesunnamed temporary defined hereunnamed type with no linkage used to declare function %q#D with linkageunnamed type with no linkage used to declare variable %q#D with linkageunnamed variable or field declared voidunnecessary parentheses in declaration of %qsunordered comparison on non-floating-point argumentunquote_string(): got bad stringunquoted attribute in formatunquoted control character %qc in formatunquoted control characters in formatunquoted identifier or keyword %<%.*s%> in formatunquoted keyword %<%.*s%> in formatunquoted name of built-in function %<%.*s%> in formatunquoted non-graph character %qc in formatunquoted non-graph characters in formatunquoted operator %<%.*s%> in formatunquoted option name %<%.*s%> in formatunquoted preprocessing directive %<%.*s%> in formatunquoted sequence of %i consecutive punctuation characters %q.*s in formatunquoted sequence of %i consecutive space characters in formatunquoted type name %<%.*s%> in formatunquoted whitespace character %qc in formatunreachableunrecognizable argument of option unrecognizable argument of option %<unrecognizable insn:unrecognized %<-mfpu%> target: %sunrecognized %<hwmpy%> field in %<hard_msp430_mcu_data[%d]%>: %qdunrecognized %<include_flags 0x%x%> passed to %<print_specific_help%>unrecognized %<revision%> field in %<hard_msp430_mcu_data[%d]%>: %qdunrecognized %qE attribute argument %qsunrecognized %s target: %sunrecognized MCU name %qs, assuming that it has no hardware multiply; use the %<-mhwmult%> option to set this explicitlyunrecognized MCU name %qs, assuming that it is just a MSP430X with no hardware multiply; use the %<-mcpu%> and %<-mhwmult%> options to set these explicitlyunrecognized MCU name %qs, assuming that it just supports the MSP430X ISA; use the %<-mcpu%> option to set the ISA explicitlyunrecognized addressunrecognized argument in option %<-march=%s%>unrecognized argument in option %qsunrecognized argument to %<--help=%> option: %q.*sunrecognized argument to %<-f%ssanitize%s=%> option: %q.*sunrecognized argument to %<-f%ssanitize%s=%> option: %q.*s; did you mean %qs?unrecognized argument to %<-flto=%> option: %qsunrecognized argument to %<-fzero-call-used-regs=%>: %qsunrecognized automatic variable initialization type %qsunrecognized btf debug output level %qsunrecognized command-line option %<-%s%>unrecognized command-line option %<-%s%>; did you mean %<-%s%>?unrecognized command-line option %<-fdump-%s%>unrecognized command-line option %<-fdump-%s%>; did you mean %<-fdump-%s%>?unrecognized command-line option %<-fopt-info-%s%>unrecognized command-line option %qsunrecognized command-line option %qs may have been intended to silence earlier diagnosticsunrecognized control register number: %d - using %<psw%>unrecognized debug output level %qsunrecognized edge flag: %qsunrecognized enum value: %qsunrecognized format specifierunrecognized gcc debugging option: %cunrecognized interrupt vector argument of %qE attributeunrecognized ivar visibility value %qsunrecognized operand to %%:%<asm_auto_mfpu%>unrecognized operand to %%:%<canon_for_mlib%>unrecognized option %<-fdisable%>unrecognized option %<-fenable%>unrecognized option passed to %%:%<target_mode_check%>unrecognized register name %qsunrecognized scalar storage order value %qsunrecognized section name %qEunrecognized shadow offset %qsunrecognized state string %qsunrecognized string escapeunrecognized supposed constantunrecognized visibility value %qsunrecognized zero init padding bits kind %qsunrecoverable errorunresolved overload for builtin %qFunresolved overloaded builtinunrestricted unions only available with %<-std=c++11%> or %<-std=gnu++11%>unsafe function call %qD within %<transaction_safe%> functionunsafe function call %qD within atomic transactionunsafe function call %qE within %<transaction_safe%> functionunsafe function call %qE within atomic transactionunsafe indirect function call within %<transaction_safe%> functionunsafe indirect function call within atomic transactionunset option %qs is ignored, it is always enabled for %qs CPUunsignedunsigned conversion from %qT to %qT changes the value of %qEunsigned conversion from %qT to %qT changes value from %qE to %qEunsuffixed floating constantunsupported %<strub%> call on the target systemunsupported SVE vector sizeunsupported argument to %qDunsupported argument type %qT for simdunsupported argument type to builtin functionunsupported code '%c' for fixed-point:unsupported combination: %qs %sunsupported combination: %qs%s %sunsupported combination: %sunsupported constant address:unsupported cpu name returned from kernel for %<-mcpu=native%>: %sunsupported fixed-point conversionunsupported map expression %qEunsupported memory expression:unsupported non-standard concatenation of string literalsunsupported non-standard suffix on floating constantunsupported number of nops before function entry (%u)unsupported operandunsupported operand %s for code '%c'unsupported operand for code '%c'unsupported operand size for extended registerunsupported operation or type for vector comparison returning a booleanunsupported return type %qT for simdunsupported simdlen %wdunsupported simdlen %wd (amdgcn)unsupported size for integer registerunterminated assembly dialect alternativeunterminated color directiveunterminated format stringunterminated quote character %<%c%> in formatunterminated quoting directiveunterminated stringunused arguments in %<$%>-style formatunused name %qEunused parameter %qDunused structured binding declarationunused using-declaration %qDunused variable %q+Dunused variable %qDunwind tables currently require either a frame pointer or %<-maccumulate-outgoing-args%> for correctnessupper value in case label range exceeds maximum value for typeuse %<#include%> insteaduse %<%T::%D%> insteaduse %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified nameuse %<%T::template %D%> to indicate that it is a templateuse %<&%s%E%s[0] %s &%s%E%s[0]%> to compare the addressesuse %<-Winvalid-pch%> for more informationuse %<-faligned-new%> to enable C++17 over-aligned new supportuse %<-fdiagnostics-all-candidates%> to display considered candidatesuse %<-fext-numeric-literals%> to enable more built-in suffixesuse %<-flax-vector-conversions%> to permit conversions between vectors with differing element types or numbers of subpartsuse %<...%> to expand argument packuse %<__arm_preserves("za")%> if the callee preserves ZAuse %<__attribute__ ((vector_size))%> insteaduse %<__builtin_rx_mvtc (0, ... )%> to write arbitrary values to PSWuse %<alias %s = %s.%s;%> to introduce base class overload setuse %<template<>%> for an explicit specializationuse %<this->%D%> insteaduse %qD directly insteaduse %qs insteaduse ISO dialect of Modula-2use PIM 2 dialect of Modula-2use PIM 3 dialect of Modula-2use PIM 4 dialect of Modula-2use PIM [234] dialect of Modula-2use a cast to the expected type to disambiguateuse cpp to preprocess the moduleuse explicit object parameter %qs insteaduse fold expression in the attribute argument insteaduse non-reference type %qT to make the copy explicit or %qT to prevent copyinguse of %<alloca%>use of %<alloca%> within a loopuse of %<auto%> in lambda parameter declaration only available with %<-std=c++14%> or %<-std=gnu++14%>use of %<auto%> in member template conversion operator can never be deduceduse of %<auto%> in parameter declaration only available with %<-std=c++14%> or %<-std=gnu++14%>use of %<auto%> in parameter declaration only available with %<-std=c++20%> or %<-fconcepts%>use of %<auto%> in template argumentuse of %<complex%> in AltiVec types is invaliduse of %<double%> in AltiVec types is invalid without %qsuse of %<long double%> in AltiVec types is invaliduse of %<long long%> in AltiVec types is invalid without %qsuse of %<long%> in AltiVec types is deprecated; use %<int%>use of %<long%> in AltiVec types is invalid for 64-bit code without %qsuse of %qDuse of %qD before deduction of %<auto%>use of %qsuse of %qs in templateuse of %qs length modifier with %qc type character has either no effect or undefined behavioruse of %s and %s together in %s formatuse of %s and %s together with %<%%%c%> %s formatuse of allocated storage after deallocation in a constant expressionuse of an operand of type %qT in %<operator++%> is deprecateduse of an operand of type %qT in %<operator++%> is forbidden in C++17use of an operand of type %qT in %<operator--%> is forbiddenuse of boolean types in AltiVec types is invaliduse of built-in parameter pack %qD outside of a templateuse of built-in trait %qE in function signature; use library traits insteaduse of built-in trait %qT in function signature; use library traits insteaduse of class template %qT as expressionuse of decimal floating-point types in AltiVec types is invaliduse of deleted function %qDuse of deleted function %qD: %suse of enum %q#D without previous declarationuse of function %qD with unsatisfied constraintsuse of invalid variable template %qEuse of local variable with automatic storage from containing functionuse of multiversioned function without a defaultuse of old-style cast to %q#Tuse of parameter from containing functionuse of parameter outside function bodyuse of untyped niluse operand missing for statementuse option %<-std=c99%>, %<-std=gnu99%>, %<-std=c11%> or %<-std=gnu11%> to compile your codeuse reference type to prevent copyinguse the %<offset%> rather than %<index%> form for 8-bit datause the apostrophe directive %qs insteaduse unary %<+%> which decays operands to pointers or %<&%s%E%s[0] %s &%s%E%s[0]%> to compare the addressesused array that cannot be converted to pointer where scalar is requiredused as rewritten candidate for comparison of %qT and %qTused here to mean %q#Dused struct type value where scalar is requiredused union type value where scalar is requiredused vector type where scalar is requireduseless %<_Alignas%> in empty declarationuseless %qs in empty declarationuseless cast to type %q#Tuseless cast to type %qTuseless storage class specifier in empty declarationuseless type name in empty declarationuseless type qualifier in empty declarationuser defined reduction lookup is ambiguoususer defined reduction not found for %qEuser defined reduction with constructor initializer for base class %qTuser-defined %qD always evaluates both argumentsuser-defined literals only available with %<-std=c++11%> or %<-std=gnu++11%>uses %qD, which does not have an alignment parameterusing %<%c%s%>using %<num_workers (%d)%>, ignoring %dusing %<vector_length (%d)%> due to call to vector-partitionable routine, ignoring %dusing %<vector_length (%d)%>, ignoring %dusing %<vector_length (%d)%>, ignoring runtime settingusing %<vector_length (64)%>, ignoring %dusing %<vector_length (64)%>, ignoring runtime settingusing %qsusing %qs with unsigned type has no effectusing a dangling pointer to %qDusing a dangling pointer to an unnamed temporaryusing alias template specialization %qT after %qsusing complex absolute value function %qD when argument is of floating-point type %qTusing complex absolute value function %qD when argument is of integer type %qTusing dangling pointer %qE to %qDusing dangling pointer %qE to an unnamed temporaryusing darwin64 ABIusing decimal floating-point absolute value function %qD when argument is of complex type %qTusing decimal floating-point absolute value function %qD when argument is of floating-point type %qTusing decimal floating-point absolute value function %qD when argument is of integer type %qTusing fast VRP algorithm; %d basic blocks exceeds %<--param=vrp-block-limit=%d%> limitusing floating-point absolute value function %qD when argument is of complex type %qTusing floating-point absolute value function %qD when argument is of decimal floating-point type %qTusing floating-point absolute value function %qD when argument is of integer type %qTusing integer absolute value function %qD when argument is of complex type %qTusing integer absolute value function %qD when argument is of floating-point type %qTusing invalid field %qDusing ltrans cache without file locking support, do not use in parallelusing old darwin ABIusing result of function returning %<void%>using rvalue as lvalueusing serial compilation of %d LTRANS jobsusing simple load CSE after register allocationusing template type parameter %qT after %qsusing the range [%E, %E] for directive argumentusing typedef-name %qD after %qsusing value of assignment with %<volatile%>-qualified left operand is deprecatedusing-declaration for member at non-class scopeusing-declaration for non-member at class scopeusing-declaration may not name namespace %qDvalid %<-foffload=%> arguments are: %svalid %<-foffload=%> arguments are: %s; did you mean %qs?valid argument to %<-march=%> is %qsvalid arguments are: %svalid arguments are: %s; did you mean %qs?valid arguments to %<-march=%> are: %svalid arguments to %<-march=%> switch are: %svalid arguments to %<-march=%> switch are: %s; did you mean %qs?valid arguments to %<-mtune=%> switch are: %svalid arguments to %<-mtune=%> switch are: %s; did you mean %qs?valid arguments to %<target("arch=")%> attribute are: %svalid arguments to %<target("arch=")%> attribute are: %s; did you mean %qs?valid arguments to %<target("tune=")%> attribute are: %svalid arguments to %<target("tune=")%> attribute are: %s; did you mean %qs?valid arguments to %qs are: %svalid arguments to %qs are: %s; did you mean %qs?valid explicit object parameter declared herevalid failure models are %qs, %qs, %qs, %qsvalid feature names are: %svalid feature names are: %s; did you mean %qs?valid format is %<ns::attr%> or %<ns::%>valid models are %evalid values for builtin %qF argument %d are 64, 128, 256, 512, 1024, 2048, and 4096value %qE of type %qT is not a constant expressionvalue %qs is not supported by attribute %<target%>value argumentvalue computed is not usedvalue of %<-mfixed-range%> must have form REG1-REG2value of redeclared enumerator outside the range of %qTvalue passed in %qs is too largevalue-initialization of function type %qTvalue-initialization of incomplete type %qTvalue-initialization of reference type %qTvar-tracking-assignments changes selective schedulingvariablevariable %q#D has initializer but incomplete typevariable %q+D declared %<_Noreturn%>variable %q+D declared %<inline%>variable %q+D definition is marked dllimportvariable %q+D might be clobbered by %<longjmp%> or %<vfork%>variable %q+D must be const in order to be put into read-only section by means of %qsvariable %q+D part of alias cyclevariable %q+D with attribute %qs must be located in static storagevariable %q+D with attribute %qs must not have an initializervariable %q+D with dynamic initialization put into program memory areavariable %qD adjusted for OpenACC privatization level: %qsvariable %qD has function typevariable %qD has initializer but incomplete typevariable %qD of non-literal type %qT in %<constexpr%> function only available with %<-std=c++23%> or %<-std=gnu++23%>variable %qD redeclared as functionvariable %qD set but not usedvariable %qD used as loop variable is bound in intervening codevariable %qD used in end test is bound in intervening codevariable %qD used in increment expression is bound in intervening codevariable %qD used in initializer is bound in intervening codevariable %qD used in the %<allocator%> clause must be declared before %qDvariable %qD used in the %<allocator%> clause must not be modified between declaration of %qD and its %<allocate%> directivevariable %qD used more than once with %<#pragma acc declare%>variable %qE declared in enclosing %<host_data%> regionvariable %qE is not an iteration of outermost loop %d, expected %qEvariable %qE of incomplete type %qT will not be accessed in for increment expressionvariable %qE of incomplete type %qT will not be accessed in left operand of comma operatorvariable %qE of incomplete type %qT will not be accessed in right operand of comma operatorvariable %qE of incomplete type %qT will not be accessed in second operand of conditional expressionvariable %qE of incomplete type %qT will not be accessed in statementvariable %qE of incomplete type %qT will not be accessed in third operand of conditional expressionvariable %qs has been referenced in offloaded code but hasn%'t been marked to be included in the offloaded codevariable %qs has scoped destruction, cannot build closurevariable at namespace scope is not name-independentvariable concepts are no longer supportedvariable length array %qD is usedvariable length array is usedvariable length arrays are not yet supported in coroutinesvariable length element type in array %<reduction%> clausevariable of same assembler name as the virtual table is defined in another translation unitvariable or field %qE declared voidvariable or field declared voidvariable previously declared %<static%> redeclared %<extern%>variable size argumentsvariable sized type %qT in %<reduction%> clausevariable sized type %qT in %qs clausevariable symbol is not variablevariable template declared herevariable template-id %qD in nested-name-specifiervariable templates only available with %<-std=c++14%> or %<-std=gnu++14%>variable tracking requested, but not supported by this debug formatvariable tracking requested, but useless unless producing debug infovariable tracking size limit exceededvariable tracking size limit exceeded with %<-fvar-tracking-assignments%>, retrying withoutvariable-length array of %<auto%>variable-sized compound literalvariable-sized object may not be initialized except with an empty initializervariables in %<__regio_symbol%> address space cannot be declared %<register%>variables in %<__regio_symbol%> address space cannot have initial valuevariables in %<__regio_symbol%> address space must be declared %<extern%>variables in %<__regio_symbol%> address space must be declared %<volatile%>variables of type %qT cannot have thread-local storage durationvariably modified %qE at file scopevariably modified field at file scopevariably modified type not allowed in new-expressionvariadic friends or friend type declarations with multiple types only available with %<-std=c++2c%> or %<-std=gnu++2c%>variadic functions must use the base AAPCS variantvariadic templates only available with %<-std=c++11%> or %<-std=gnu++11%>variadic thunk callvariant %qD and base %qD have incompatible typesvariant %qD is a built-invariant %qD is not a functionvariant %qs and base %qs at %L have incompatible types: %svariant %qs at %L is not a function or subroutinevariant directive used in OMP BEGIN METADIRECTIVE at %C must have a corresponding end directivevector %qs element is not a GIMPLE valuevector %qs with non-NULL element indexvector argument passed to unprototyped functionvector condition will be expanded piecewisevector number %d of %q+D is out of range 1%s3 for compact vector tablevector operation will be expanded in parallelvector operation will be expanded piecewisevector operation will be expanded with a single scalar operationvector overflow in expression %qE of type %qT results in %qEvector overflow in expression of type %qT results in %qEvector shuffling operation will be expanded piecewisevector size not an integral multiple of component sizevector type expected in %qsvector types expected in %qsvector value used where a floating-point was expectedvectorization did not happen for a simd loopvectors with different element number found in %qsverify_bind_c_derived_type(): Given symbol is unexpectedly NULLverify_cgraph_node failedverify_flow_info failedverify_flow_info: Basic block %d succ edge is corruptedverify_flow_info: Block %i has loop_father, but there are no loopsverify_flow_info: Block %i lacks loop_fatherverify_flow_info: Duplicate edge %i->%iverify_flow_info: Incorrect blocks for fallthru %i->%iverify_flow_info: Incorrect fallthru %i->%iverify_flow_info: Missing count of block %iverify_flow_info: REG_BR_PROB does not match cfg %i %iverify_flow_info: REG_BR_PROB is set but cfg probability is notverify_flow_info: Wrong count of block %iverify_flow_info: Wrong probability of edge %i->%iverify_flow_info: unallocated edge flag set on %d -> %dverify_flow_info: unallocated flag set on BB %dverify_gimple failedverify_ssa failedversion attribute is not a stringversion control conflict marker in fileversion inherited from %qT declared hereversion of %<g%> will be omitted, please specify version for individual extensionversioned symbol must be publicversioned symbol must have default visibilityvirt-specifiers in %qs not allowed outside a class definitionvirtual PHI with argument locationsvirtual SSA name for non-VOP declvirtual base %qT inaccessible in %qT due to ambiguityvirtual def operand missing for statementvirtual definition is not an SSA namevirtual definition of statement not up to datevirtual function %q+D overriding final functionvirtual function cannot have deduced return typevirtual function declared herevirtual function multiversioning not supportedvirtual functions cannot be %<constexpr%> before C++20virtual functions cannot be friendsvirtual method %qDvirtual non-class function %qsvirtual table of type %qD contains RTTI informationvirtual table of type %qD violates one definition rulevirtual table pointer is used uninitializedvirtual use of statement not up to datevirtual use operand missing for statementvisibility argument not a stringvisibility attribute not supported in this configuration; ignoredvms '#pragma __message' is ignoredvoid value not ignored as it ought to bevolatile argumentvolatile function typevtable for vtable verification is not supported with LTOwaitpid failedwarning: warning: consider linking with '-static' as system libraries withwas expecting `%s'weak %q+D cannot be defined %qEweak alias definitions not supported in this configurationweak aliases are not supportedweak declaration of %q+D being applied to a already existing, static definitionweak declaration of %q+D must be publicweak declaration of %q+D not supportedweights need to be non-negativewhen storing %qT, %qE requires a vector base and a scalar indexwhen writing output to %s: %mwhile %qT decomposes into %E elementswhile %qT decomposes into %wu elementwhile %qT decomposes into %wu elementswhile referencing %qDwidth of %qD exceeds its typewidth of %qs exceeds its typewidth of bit-field %qD has non-integral type %qTwithwith %<ancestor%>, only the %<device%>, %<firstprivate%>, %<private%>, %<defaultmap%>, and %<map%> clauses may appear on the constructwithin this loopwithout %<-gdwarf-5%>, %<-gvariable-location-views=incompat5%> is equivalent to %<-gvariable-location-views%>work-sharing region may not be closely nested inside of work-sharing, %<loop%>, %<critical%>, %<ordered%>, %<master%>, %<masked%>, explicit %<task%> or %<taskloop%> regionwrite of %wu-bit data outside the bound of destination object, data truncated into %wu-bitwrite_atom(): Trying to write dab atomwrite_symbol(): bad module symbol %qswrite_symtree(): Symbol not writtenwriting %E byte into a region of size %E overflows the destinationwriting %E bytes into a region of size %E overflows the destinationwriting %E or more bytes into a region of size %E overflows the destinationwriting %wu byte into a region of size %wuwriting %wu bytes into a region of size %wuwriting %wu byte into a region of size between %wu and %wuwriting %wu bytes into a region of size between %wu and %wuwriting CMI %qswriting between %E and %E bytes into a region of size %E overflows the destinationwriting between %wu and %wu bytes into a region of size %wuwriting between %wu and %wu bytes into a region of size between %wu and %wuwriting into constant object (argument %d)writing one too many bytes into a region of a size that depends on %<strlen%>writing output filewriting output file %s: %mwriting through null pointer (argument %d)writing to LTRANS output list %s: %mwriting to address space %qs not supportedwrong %<TYPE_CACHED_VALUES%> entrywrong amount of branch edges after conditional jump in bb %iwrong amount of branch edges after unconditional jump %iwrong argument %qs to option %qswrong argument to ignored attributeswrong edge %d->%d for PHI argumentwrong entry in %<TYPE_ARG_TYPES%> listwrong immediate use listwrong insn in the fallthru edgewrong list of exited loops for edge %d->%dwrong number of arguments specified for %qE attributewrong number of arguments to %%:debug-level-gtwrong number of arguments to %%:dwarf-version-gtwrong number of arguments to %<__builtin_addressof%>wrong number of arguments to %<__builtin_assoc_barrier%>wrong number of arguments to %<__builtin_call_with_static_chain%>wrong number of arguments to %<__builtin_choose_expr%>wrong number of arguments to %<__builtin_complex%>wrong number of arguments to %<__builtin_convertvector%>wrong number of arguments to %<__builtin_counted_by_ref%>wrong number of arguments to %<__builtin_launder%>wrong number of arguments to %<__builtin_shuffle%>wrong number of arguments to %<__builtin_shufflevector%>wrong number of arguments to %<assume%> attributewrong number of arguments to %qswrong number of arguments to function %<__builtin_next_arg%>wrong number of arguments to function %<va_start%>wrong number of branch edges after unconditional jump in bb %iwrong number of template arguments (%d, should be %d)wrong number of template arguments (%d, should be at least %d)wrong outgoing edge flags at end of bb %dwrong strategy name %qs specified for option %qswrong tree in %<TYPE_FIELDS%> listwrong type argument to %swrong type argument to abswrong type argument to absuwrong type argument to bit-complementwrong type argument to conjugationwrong type argument to decrementwrong type argument to incrementwrong type argument to unary exclamation markwrong type argument to unary minuswrong type argument to unary pluswrong type of argument %sx87 register return with x87 disabledxstormy16_print_operand: unknown codeyou can enable %qs using the command-line option %<-march%>, or by using the %<target%> attribute or pragmayou can enable RVV using the command-line option %<-march%>, or by using the %<target%> attribute or pragmayou can enable SVE using the command-line option %<-march%>, or by using the %<target%> attribute or pragmayou can enable mve.fp by using the command-line option %<-march%>, or by using the %<target%> attribute or pragmayou can silence this warning by using a hexadecimal constant (%wx rather than %wd)you can stabilize this value with %<--param hardware_destructive_interference_size=%d%>, or disable this warning with %<-Wno-interference-size%>you can use an inline namespace insteadyou can work around this by removing the initializeryou cannot take the address of a nested function if you use the %qs optionyour native CPU architecture (%qs) does not support %qs ABI, falling back to %<-m%s=%s%>z*inx requires ABI ilp32, ilp32e, lp64 or lp64ez/Architecture.zero as null pointer constantzero length array section in %qs clausezero or negative size array %q+Dzero sized type %qT in %<reduction%> clausezero sized type %qT in %qs clausezero vector sizezero width for bit-field %q+Dzero width for bit-field %qszero width in %s formatzero-length %s format stringzero-size array %qDzero-size array %qTzero-size array member %qD in an otherwise empty %q#Tzero-size array member %qD not at end of %q#T{anonymous}{erroneous}Project-Id-Version: gcc 15.2.0
  Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/
! PO-Revision-Date: 2025-08-23 14:50+0200
  Last-Translator: Roland Illig <roland.illig@gmx.de>
  Language-Team: German <translation-team-de@lists.sourceforge.net>
  Language: de
*************** Content-Type: text/plain; charset=UTF-8
*** 2179,2191 ****
  Content-Transfer-Encoding: 8bit
  Plural-Forms: nplurals=2; plural=(n != 1);
  X-Bugs: Report translation errors to the Language-Team address.
! X-Generator: Poedit 3.6
  X-Poedit-Bookmarks: -1,-1,-1,6017,-1,-1,-1,-1,-1,-1
  
  
  
  /* WARNUNG: Wegen abweichender Argumente fÃ¼r eine externe
!    Prozedur ist diese Header-Datei nicht kompatibel mit -std=c23.
  
     Verwenden Sie eine andere -std-Option zum Kompilieren. */
  
--- 2159,2171 ----
  Content-Transfer-Encoding: 8bit
  Plural-Forms: nplurals=2; plural=(n != 1);
  X-Bugs: Report translation errors to the Language-Team address.
! X-Generator: Poedit 3.7
  X-Poedit-Bookmarks: -1,-1,-1,6017,-1,-1,-1,-1,-1,-1
  
  
  
  /* WARNUNG: Wegen abweichender Argumente fÃ¼r eine externe
!    Prozedur ist diese Header-Datei nicht kompatibel mit Â»-std=c23Â«.
  
     Verwenden Sie eine andere -std-Option zum Kompilieren. */
  
*************** Zum Einsenden von Fehlerberichten (auf E
*** 2198,2213 ****
  Fehler in der deutschen Ãœbersetzung sind an translation-team-de@lists.sourceforge.net zu melden.
  
  Fortfahren? (y oder n) 
! Linkeroptionen
  ==============
  
  
  Veraltete Optionen:
  
! Optionen, die mit -g, -f, -m, -O, -W, oder --param beginnen, werden automatisch
!  an die verschiedenen Subprozesse, die von %s aufgerufen werden, Ã¼bergeben.
!  Um weitere Optionen an diese Prozesse zu Ã¼bergeben, mÃ¼ssen die Optionen
!  -W<Buchstabe> verwendet werden.
  
  Ausgabe von ldd mit Konstruktoren/Destruktoren.
  
--- 2178,2194 ----
  Fehler in der deutschen Ãœbersetzung sind an translation-team-de@lists.sourceforge.net zu melden.
  
  Fortfahren? (y oder n) 
! Binderoptionen
  ==============
  
  
  Veraltete Optionen:
  
! Optionen, die mit Â»-gÂ«, Â»-fÂ«, Â»-mÂ«, Â»-OÂ«, Â»-WÂ«, oder Â»--paramÂ« beginnen,
!  werden automatisch an die verschiedenen Subprozesse, die von %s aufgerufen
!  werden, Ã¼bergeben.
!  Um andere Optionen an diese Prozesse zu Ã¼bergeben, mÃ¼ssen die Optionen
!  Â»-W<Buchstabe>Â« verwendet werden.
  
  Ausgabe von ldd mit Konstruktoren/Destruktoren.
  
*************** write_c_file: Ausgabename ist %s, PrÃ¤fi
*** 2240,2261 ****
    --help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...]
    --sysroot=<Verzeichnis>  <Verzeichnis> als Wurzelverzeichnis fÃ¼r Header und
                             Bibliotheken verwenden.
!   --target-help            Zielspezifische Kommandozeilenoptionen (inklusive Assembler- und Linkeroptionen) anzeigen.
    --version                Compilerversionsinformation anzeigen.
    -B <Verzeichnis>         <Verzeichnis> zum Suchpfad des Compilers hinzufÃ¼gen.
    -D, --debug			    Fehlersuche-Details anzeigen
    -E                       Nur den PrÃ¤prozessor ausfÃ¼hren, nicht Compiler, Assembler oder
!                            Linker.
    -H, --human-readable            Menschenlesbare Zahlen ausgeben
    -M, --filter-on-demangled       DafÃ¼r sorgen, dass --include/--exclude die
                                      Entsprechung auf den gemangelten Namen
                                      prÃ¼ft. Dies impliziert nicht -m
!   -S                       Nur kompilieren, nicht assemblieren oder linken.
    -Wa,<Optionen>           Die durch Kommata getrennten <Optionen> an den Assembler Ã¼bergeben.
!   -Wl,<Optionen>           Die durch Kommata getrennten <Optionen> an den Linker Ã¼bergeben.
    -Wp,<Optionen>           Die durch Kommata getrennten <Optionen> an den PrÃ¤prozessor Ã¼bergeben.
    -Xassembler <Arg>        <Arg> an den Assembler Ã¼bergeben.
!   -Xlinker <Arg>           <Arg> an den Linker Ã¼bergeben.
    -Xpreprocessor <Arg>     <Arg> an den PrÃ¤prozessor Ã¼bergeben.
    -a, --all-blocks                Informationen fÃ¼r jeden Basisblock zeigen
    -b, --branch-probabilities      Zweigwahrscheinlichkeiten in Ausgabe aufnehmen
--- 2221,2242 ----
    --help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...]
    --sysroot=<Verzeichnis>  <Verzeichnis> als Wurzelverzeichnis fÃ¼r Header und
                             Bibliotheken verwenden.
!   --target-help            Zielspezifische Kommandozeilenoptionen (inklusive Assembler- und Binderoptionen) anzeigen.
    --version                Compilerversionsinformation anzeigen.
    -B <Verzeichnis>         <Verzeichnis> zum Suchpfad des Compilers hinzufÃ¼gen.
    -D, --debug			    Fehlersuche-Details anzeigen
    -E                       Nur den PrÃ¤prozessor ausfÃ¼hren, nicht Compiler, Assembler oder
!                            Binder.
    -H, --human-readable            Menschenlesbare Zahlen ausgeben
    -M, --filter-on-demangled       DafÃ¼r sorgen, dass --include/--exclude die
                                      Entsprechung auf den gemangelten Namen
                                      prÃ¼ft. Dies impliziert nicht -m
!   -S                       Nur kompilieren, nicht assemblieren oder binden.
    -Wa,<Optionen>           Die durch Kommata getrennten <Optionen> an den Assembler Ã¼bergeben.
!   -Wl,<Optionen>           Die durch Kommata getrennten <Optionen> an den Binder Ã¼bergeben.
    -Wp,<Optionen>           Die durch Kommata getrennten <Optionen> an den PrÃ¤prozessor Ã¼bergeben.
    -Xassembler <Arg>        <Arg> an den Assembler Ã¼bergeben.
!   -Xlinker <Arg>           <Arg> an den Binder Ã¼bergeben.
    -Xpreprocessor <Arg>     <Arg> an den PrÃ¤prozessor Ã¼bergeben.
    -a, --all-blocks                Informationen fÃ¼r jeden Basisblock zeigen
    -b, --branch-probabilities      Zweigwahrscheinlichkeiten in Ausgabe aufnehmen
*************** write_c_file: Ausgabename ist %s, PrÃ¤fi
*** 2289,2296 ****
                                    Objektdateien suchen
    -p, --preserve-paths            Alle Pfadnamenskomponenten bewahren
    -pass-exit-codes         Mit hÃ¶chstem RÃ¼ckgabe-Code einer Phase beenden.
!   -pie                     Eine ausfÃ¼hrbare Datei mit positionsunabhÃ¤ngigem
!                            Code erzeugen.
    -pipe                    Pipes statt temporÃ¤rer Dateien verwenden.
    -print-file-name=<Bib>   Vollen Pfad zur Bibliothek <Bib> anzeigen.
    -print-libgcc-file-name  Name der Begleitbibliothek des Compilers anzeigen.
--- 2270,2277 ----
                                    Objektdateien suchen
    -p, --preserve-paths            Alle Pfadnamenskomponenten bewahren
    -pass-exit-codes         Mit hÃ¶chstem RÃ¼ckgabe-Code einer Phase beenden.
!   -pie                     Eine dynamisch gebundene ausfÃ¼hrbare Datei mit
!                            positionsunabhÃ¤ngigem Code erzeugen.
    -pipe                    Pipes statt temporÃ¤rer Dateien verwenden.
    -print-file-name=<Bib>   Vollen Pfad zur Bibliothek <Bib> anzeigen.
    -print-libgcc-file-name  Name der Begleitbibliothek des Compilers anzeigen.
*************** write_c_file: Ausgabename ist %s, PrÃ¤fi
*** 2335,2363 ****
    denn %q+#D ist in Basisklasse deklariert  Ã¼berspringt Initialisierung von %q#D Template-Argument %qE passt nicht zu %qE Templateargumente %qE passt nicht zum konstanten Zeiger auf Element %qE Templateparameter %qD ist kein Parameterpack wie Argument %qD Templateparameter eines Template-Templatearguments sind mit anderen hergeleiteten Templateargumenten unvertrÃ¤glich  Versuch, %qD zu instanziieren Typen %qT und %qT haben unvertrÃ¤gliche CV-Qualifizierer Arraytyp %qT mit verÃ¤nderlicher GrÃ¶ÃŸe ist kein gÃ¼ltiges Templateargument  wÃ¤hrend es hier initialisiert wurde  bei Instanziierung des Standardarguments fÃ¼r Aufruf von %qD (BB %d) (Operandentyp ist %qT) (Operandentypen sind %e und %e) (Operandentypen sind %qT und %qT) (Operandentypen sind %qT, %qT und %qT) Alle Optionen mit den gewÃ¼nschten Eigenschaften wurden bereits angezeigt
   Keine Optionen mit den gewÃ¼nschten Eigenschaften gefunden
   Nichts gefunden. Bitte verwenden Sie Â»--help=%sÂ«, um *alle* vom Frontend %s unterstÃ¼tzten Optionen anzuzeigen
!  [siehe %<-fallow-invalid-boz%>] da alle seine Kopier- und Verschiebekonstruktoren gelÃ¶scht sind Kandidat 1: %q#F Kandidat 2: %q#F in Konflikt stehende Codeerzeugungsschalter verwendet hier deklariert der Ausdruck hat einen konstanten Wert, ist aber kein konstanter Ausdruck im Sinne von C++ zstdÂ»%s !$ACC LOOPÂ«-Schleifen bei %L formen keinen rechteckigen Wiederholungsraum!$ACC LOOP kann bei %L keine DO-CONCURRENT-Schleife sein!$ACC LOOP darf ohne Schleifensteuerung bei %L kein DO WHILE oder DO sein!$ACC-LOOP-Iterationsvariable bei %L muss vom Typ integer seinÂ»!$ACC ROUTINEÂ« wurde bereits bei %C angewendet!$ACC ROUTINE mit GANG, WORKER oder VECTOR-Klausel ist in PURE-Prozedur bei %C nicht erlaubt!$ACC bei %C beginnt eine kommentierte Zeile, da es weder von Leerzeichen gefolgt wird noch eine Fortsetzungszeile ist!$OMP ASSUMES bei %C muss im Spezifikationsteil eines Unterprogramms oder Moduls vorkommen!$OMP ATOMIC CAPTURE-Erfassungsanweisung liest bei %L von anderer Variable als die Update-Anweisung schreibt!$OMP ATOMIC READ bei %L ist inkompatibel zur RELEASE-Klausel!$OMP ATOMIC READ bei %L inkompatibel mit RELEASE-Klausel, die implizit durch eine REQUIRES-Direktive bereitgestellt wirdAnweisung !$OMP ATOMIC READ muss bei %L von skalarer Variable intrinsischen Typs lesen!$OMP ATOMIC UPDATE bei %L mit FAIL-Klausel erfordert entweder die COMPARE-Klausel oder die Verwendung der intrinsischen MIN/MAX-Prozedur!$OMP ATOMIC WRITE bei %L ist inkompatibel zur ACQUIRE-Klausel!$OMP ATOMIC WRITE bei %L inkompatibel mit ACQUIRES-Klausel, die implizit durch eine REQUIRES-Direktive bereitgestellt wirdEingebaute Zuweisung !$OMP ATOMIC IAND, IOR oder IEOR muss bei %L zwei Argumente habenEingebaute Zuweisung !$OMP ATOMIC muss bei %L MIN, MAX, IAND, IOR oder IEOR seinZuweisung !$OMP ATOMIC muss bei %L Â»var = var op exprÂ« oder Â»var = expr op varÂ« sein!$OMP ATOMIC Zuweisung muss auf der rechten Seite bei %L Operator oder Intrinsic habenZuweisungsoperator Â»!$OMP ATOMICÂ« muss bei %L ein binÃ¤res +, *, -, /, .AND., .OR., .EQV. oder .NEQV. sein!$OMP ATOMIC bei %L mit %s-Klausel ist inkompatibel zu READ oder WRITE!$OMP ATOMIC bei %L mit %s-Klausel erfordert %s-KlauselErfassungsanweisung !$OMP ATOMIC bei %L muss eine skalare Variable intrinsischen Typs setzenErfassungsanweisung !$OMP ATOMIC bei %L erfordert eine skalare Variable intrinsischen TypsVon den intrinsischen Argumenten fÃ¼r %<!$OMP ATOMIC%> bei %2$L darf hÃ¶chstens eins auf %1$qs verweisen!$OMP ATOMIC intrinsische Argumente mÃ¼ssen bei %L skalar seinAnweisung !$OMP ATOMIC muss einen skalaren Ausdruck intrinsischen Typs bei %L zuweisenAnweisung !$OMP ATOMIC muss eine skalare Variable intrinsischen Typs bei %L setzen!$OMP ATOMIC Â»var op exprÂ« bei %L ist nicht mathematisch Ã¤quivalent zu Â»var = var op (expr)Â«!$OMP ATOMIC mit ALLOCATABLE-Variable bei %L!$OMP DECLARE REDUCTION %s nicht gefunden bei %L!$OMP DECLARE REDUCTION Â»%sÂ« fÃ¼r Typ %s bei %L nicht gefunden!$OMP DECLARE SIMD bei %2$L sollte auf die enthaltende Prozedur %1$qs verweisenÂ»!$OMP DECLARE TARGETÂ«-Variable %qs bei %L ist nicht gespeichert (SAVE)!$OMP REQUIRES bei %C muss im Spezifikationsteil einer Programmeinheit vorkommen%<!$OMP REQUIRES%>-Klausel %<atomic_default_mem_order(%s)%>, die bei %L angegeben ist, Ã¼bersteuert ein vorangehendes %<atomic_default_mem_order(%s)%> (das mÃ¶glicherweise von einer Modulverwendung stammt)%<!$OMP REQUIRES%>-Klausel %<atomic_default_mem_order(%s)%> wird von der Modulverwendung %qs bei %L angegeben, aber diese Klausel ist in der Programmeinheit nicht ebenfalls angegeben%<!$OMP REQUIRES%>-Klausel %<atomic_default_mem_order(%s)%>, die von der Modulverwendung %qs bei %L angegeben ist, Ã¼bersteuert ein vorangehendes %<atomic_default_mem_order(%s)%> (das mÃ¶glicherweise von einer Modulverwendung stammt)%<!$OMP REQUIRES%>-Klausel %qs, die bei %L angegeben ist, kommt nach der Verwendung eines GerÃ¤te-Konstrukts bzw. einer GerÃ¤te-Routine%<!$OMP REQUIRES%>-Klausel %qs ist von der Modulverwendung %qs bei %L angegeben, aber diese Klausel ist in der Programmeinheit nicht ebenfalls angegeben%<!$OMP REQUIRES%>-Klausel %qs, die von der Modulverwendung %qs bei %L angegeben ist, kommt nach der Verwendung eines GerÃ¤te-Konstrukts bzw. einer GerÃ¤te-Routine!$OMP SCAN bei %L mit null ausfÃ¼hrbaren Anweisungen in der vorangehenden strukturierten Blockfolge!$OMP SCAN bei %L mit null ausfÃ¼hrbaren Anweisungen in der darauffolgenden strukturierten Blockfolge!$OMP-TARGET-Region bei %L mit einem verschachtelten TEAMS bei %L darf keine andere Anweisung, Deklaration oder Direktive auÃŸerhalb des einzelnen TEAMS-Konstrukts enthalten!$OMP-TARGET-Region bei %L mit einem verschachtelten TEAMS darf keine andere Anweisung, Deklaration oder Direktive auÃŸerhalb des einzelnen TEAMS-Konstrukts enthalten!$OMP bei %C beginnt eine kommentierte Zeile, da es weder von Leerzeichen gefolgt wird noch eine Fortsetzungszeile ist"::" nach Modul-Eigenschaft bei %C erwartet, aber nicht gefunden"USE :: module" bei %C# %s %.2f %.2f
! ###### candidate %s has unimplemented CVT_type %d(%s)
! ###### unknown setop_t code %d
  Suche fÃ¼r Â»#embed <...>Â« beginnt hier:
  Suche fÃ¼r Â»#include "..."Â« beginnt hier:
  Suche fÃ¼r Â»#include <...>Â« beginnt hier:
! $-Deskriptor bei %L$ sollte das letzte Spezifikationssymbol in Format bei %L sein$OMP ERROR aufgetreten bei %L$OMP ERROR aufgetreten bei %L: %s%#qT wird hier deklariert%#qT hier definiert%%:%<canon_for_mlib%> verlangt 1 oder mehr Paare von Parametern%%:%<target_mode_check%> verlangt eine gerade Anzahl an Parametern%%LOC() als rvalue bei %C%%a benÃ¶tigt eine SpeicheradresseDie Operandenmodifizierer %%d, %%e, %%f und %%g sind ausschlieÃŸlich fÃ¼r Speicherreferenzen oder konstante Werte%+qD lÃ¶st einen Abschnittstypkonflikt fÃ¼r Abschnitt %qs aus%+qD lÃ¶st einen Abschnittstypkonflikt mit %qD in Abschnitt %qs aus%+qD als %qE deklariert, nachdem es verwendet wurde%+qD wurde als %qs deklariert, nachdem es verwendet wurde%+qD ohne %<retain%>-Attribut und %qD mit %<retain%>-Attribut liegen in einem Abschnitt mit demselben Namen%<!$OMP %s%> bei %L erfordert %<-fopenmp-allocators%>Interner Fehler: %<!%> not valid in GIMPLE%<#define %s%>%<#pragma %s%> darf nur im GÃ¼ltigkeitsbereich einer Datei verwendet werden%<#pragma %s%> darf nur in Verbundanweisungen verwendet werden%<#pragma GCC %s%> muss innerhalb einer Funktion sein%<#pragma GCC aarch64%> erfordert eine Zeichenkette als Parameter%<#pragma GCC arm "arm_mve.h"%> erfordert einen booleschen Parameter%<#pragma GCC arm%> erfordert eine Zeichenkette als Parameter%<#pragma GCC memregs%> muss vor allen Funktionsdeklarationen stehen%<#pragma GCC memregs%> erfordert eine Zahl von 0 bis 16%<#pragma GCC optimize (Zeichenkette [,Zeichenkette]...)%> hat kein abschlieÃŸendes %<)%>%<#pragma GCC optimize%> ist keine Zeichenkette oder Zahl%<#pragma GCC optimize%> ist nur auÃŸerhalb von Funktionen erlaubt%<#pragma GCC optimize%> Zeichenkette hat falsches Format%<#pragma GCC option%> ist keine Zeichenkette%<#pragma GCC option%> ist nur auÃŸerhalb von Funktionen erlaubt%<#pragma GCC pch_preprocess%> muss zuerst kommen%<#pragma GCC pop_options%> ohne zugehÃ¶riges %<#pragma GCC push_options%>%<#pragma GCC target (Zeichenkette [,Zeichenkette]...)%> hat kein abschlieÃŸendes %<)%>%<#pragma GCC target%> wird fÃ¼r diese Maschine nicht unterstÃ¼tzt%<#pragma GCC target%> Zeichenkette hat falsches Format%<#pragma GCC unroll%> erfordert einen Zuweisungsausdruck, der zu einer nichtnegativen Ganzzahlkonstante kleiner als %u evaluiert%<#pragma GCC visibility push()%> muss %<default%>, %<internal%>, %<hidden%> oder %<protected%> angeben%<#pragma GCC visibility%> muss von %<push%> oder %<pop%> gefolgt werden%<#pragma STDC FLOAT_CONST_DECIMAL64%> wird fÃ¼r C++ nicht unterstÃ¼tzt%<#pragma STDC FLOAT_CONST_DECIMAL64%> wird auf diesem Ziel nicht unterstÃ¼tzt%<#pragma acc %s data%> hat keine Datenverschiebeklausel%<#pragma acc routine%> muss vor Definition angewendet werden%<#pragma acc routine%> muss vor Verwendung angewendet werden%<#pragma acc routine%> darf nur im Datei-GÃ¼ltigkeitsbereich auftreten%<#pragma acc routine%> benennt eine Menge von Ãœberladungen%<#pragma acc routine%> muss direkt vor einer Deklaration oder Definition einer einzelnen Funktion auftreten%<#pragma acc routine%> muss direkt vor einer Funktionsdeklaration oder -definition auftreten%<#pragma acc update%> muss mindestens eine %<device%>- oder %<host%>- or %<self%>-Klausel enthalten%<#pragma align%> muss vor der Deklaration von %qD auftreten; wird ignoriert%<#pragma implementation%> fÃ¼r %qs erscheint, nachdem Datei eingebunden wurde%<#pragma message: %s%>%<#pragma omp allocate%> wird nicht mehr unterstÃ¼tzt%<#pragma omp assumes%> darf nur im GÃ¼ltigkeitsbereich einer Datei oder eines Namensraums verwendet werden%<#pragma omp atomic capture%> verwendet zwei unterschiedliche AusdrÃ¼cke fÃ¼r Speicher%<#pragma omp atomic capture%> verwendet zwei unterschiedliche Variablen fÃ¼r SpeicherErgebnis von %<#pragma omp atomic compare capture%> ist keine Ganzzahl%<#pragma omp atomic read%> ist unvertrÃ¤glich mit der Klausel %<release%>%<#pragma omp atomic read%> inkompatibel mit %<release%>-Klausel, die implizit von einer %<requires%>-Direktive bereitgestellt wird%<#pragma omp atomic update%> verwendet zwei unterschiedliche AusdrÃ¼cke fÃ¼r Speicher%<#pragma omp atomic update%> verwendet zwei unterschiedliche Variablen fÃ¼r Speicher%<#pragma omp atomic write%> ist unvertrÃ¤glich mit der Klausel %<acquire%>%<#pragma omp atomic write%> inkompatibel mit %<acquire%>-Klausel, die implizit von einer %<requires%>-Direktive bereitgestellt wird%<#pragma omp cancel%> muss eine der Klauseln %<parallel%>, %<for%>, %<sections%> oder %<taskgroup%> angeben%<#pragma omp cancellation point%> muss eine der Klauseln %<parallel%>, %<for%>, %<sections%> oder %<taskgroup%> angeben%<#pragma omp critical%> mit %<hint%>-Klausel erfordert einen Namen, auÃŸer wenn %<omp_sync_hint_none%> verwendet wird%<#pragma omp declare %s%> gefolgt von %<#pragma omp declare %s%>%<#pragma omp declare %s%> muss vor der Deklaration oder Definition einer Funktion auftreten%<#pragma omp declare %s%> muss von einer Funktionsdeklaration oder -definition oder einem weiteren %<#pragma omp declare %s%> gefolgt werdenhinter %<#pragma omp declare %s%> muss direkt eine Funktionsdeklaration oder -definition stehenhinter %<#pragma omp declare %s%> muss direkt eine einzelne Funktionsdeklaration oder -definition stehen%<#pragma omp declare %s%> muss direkt von einer Funktionsdeklaration oder -definition gefolgt sein%<#pragma omp declare reduction%>-Kombinierer verweist auf Variable %qD, die weder %<omp_out%> noch %<omp_in%> ist%<#pragma omp declare reduction%>-Initialisierung verweist auf Variable %qD, die weder %<omp_priv%> noch %<omp_orig%> ist%<#pragma omp declare reduction%> darf nur im Datei- oder Block-GÃ¼ltigkeitsbereich auftreten%<#pragma omp dispatch%> muss von einem direkten Funktionsaufruf mit optionaler Zuweisung gefolgt werden%<#pragma omp dispatch%> kann nur vor einem Funktionsaufruf mit optionaler Zuweisung stehen%<#pragma omp end declare target%> ohne zugehÃ¶riges %<#pragma omp declare target%> oder %<#pragma omp begin declare target%>%<#pragma omp error%> mit %<at(execution)%>-Klausel darf nur in Verbundanweisungen verwendet werden%<#pragma omp ordered%> mit %qs-Klausel darf nur in Verbundanweisungen verwendet werden%<#pragma omp requires%> darf nur im GÃ¼ltigkeitsbereich einer Datei oder eines Namensraums verwendet werden%<#pragma omp scan%> darf nur in einem Schleifenkonstrukt mit %<inscan%>-%<reduction%>-Klausel verwendet werden%<#pragma omp scan%> mit 0 vorhergehenden ausfÃ¼hrbaren Anweisungen%<#pragma omp scan%> mit 0 nachfolgenden ausfÃ¼hrbaren Anweisungen%<#pragma omp section%> darf nur in %<#pragma omp sections%>-Konstrukt verwendet werden%<#pragma omp simd%> zusammen mit Iterationsvariable %qE verwendet%<#pragma omp target data%> muss mindestens eine %<map%>-, %<use_device_ptr%>- oder %<use_device_addr%>-Klausel enthalten%<#pragma omp target data%> mit Zuordnungstyp auÃŸer %<to%>, %<from%>, %<tofrom%> oder %<alloc%> an %<map%>-Klausel%<#pragma omp target enter data%> muss mindestens eine %<map%>-Klausel enthalten%<#pragma omp target enter data%> mit Zuordnungstyp auÃŸer %<to%>, %<tofrom%> oder %<alloc%> an %<map%>-Klausel%<#pragma omp target exit data%> muss mindestens eine %<map%>-Klausel enthalten%<#pragma omp target exit data%> mit Zuordnungstyp auÃŸer %<from%>, %<tofrom%>, %<release%> oder %<delete%> an %<map%>-Klausel%<#pragma omp target update%> muss mindestens eine %<from%>- oder %<to%>-Klausel enthalten%<#pragma omp target%> mit Zuordnungstyp auÃŸer %<to%>, %<from%>, %<tofrom%> oder %<alloc%> an %<map%>-Klausel%<#pragma pack (pop)%> gefunden ohne passendes %<#pragma pack (push)%>%<#pragma pack%> hat mit %<-fpack-struct%> keinen Effekt â€“ wird ignoriert%<#pragma pack(pop, %E)%> gefunden ohne passendes %<#pragma pack(push, %E)%>%<#pragma redefine_extname%> wird aufgrund von Konflikt mit %<asm%>-Deklaration ignoriert%<#pragma redefine_extname%> wird aufgrund des Konflikts mit vorherigem %<#pragma redefine_extname%> ignoriert%<#pragma redefine_extname%> wird aufgrund des Konflikts mit vorheriger Umbenennung ignoriert%<#pragma riscv intrinsic%> erfordert eine Zeichenkette als Parameter%<#pragma scalar_storage_order%> wird in C++ nicht unterstÃ¼tzt%<#pragma vtable%> wird nicht mehr unterstÃ¼tzt%<#pragma weak%>-Deklaration von %q+D nicht erlaubt; wird ignoriert%<#pragma GHS endXXX%> passt nicht zum vorherigen %<startXXX%>%<#pragma GHS endXXX%> ohne vorheriges %<startXXX%> gefunden%<#pragma%> ist hier nicht erlaubt%<#undef %E%>%<$%>-Operandennummer nach Format ohne Operandennummer angegeben%<%%%>-EinschrÃ¤nkung mit letztem Operanden verwendet%<%%%c%> liefert nur die letzten 2 Ziffern des Jahres%<%%%c%> liefert in manchen Locales nur die letzten 2 Ziffern des JahresArgument der Direktive %<%.*s%> ist keine nul-terminierte ZeichenketteArgument %<%.*s%> fÃ¼r Direktive ist nullAusgabe der %<%.*s%>-Direktive zwischen %wu und %wu Bytes macht das Ergebnis grÃ¶ÃŸer als %<INT_MAX%>Ausgabe der Direktive %<%.*s%> zwischen %wu und %wu Bytes Ã¼bersteigt %<INT_MAX%>Ausgabe der %<%.*s%>-Direktive zwischen %wu und %wu Bytes Ã¼berschreitet die minimal erforderliche GrÃ¶ÃŸe von 4095Ausgabe der %<%.*s%>-Direktive zwischen %wu und %wu Bytes kÃ¶nnte das Ergebnis grÃ¶ÃŸer als %<INT_MAX%> machenAusgabe der %<%.*s%>-Direktive zwischen %wu und %wu Bytes kÃ¶nnte die minimal erforderliche GrÃ¶ÃŸe von 4095 Ã¼berschreitenAusgabe der %<%.*s%>-Direktive kÃ¶nnte abgeschnitten sein, beim Schreiben von %wu Byte in eine Region der GrÃ¶ÃŸe %wuAusgabe der %<%.*s%>-Direktive kÃ¶nnte abgeschnitten sein, beim Schreiben von %wu Bytes in eine Region der GrÃ¶ÃŸe %wuAusgabe der %<%.*s%>-Direktive kÃ¶nnte abgeschnitten sein, beim Schreiben von %wu Byte in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuAusgabe der %<%.*s%>-Direktive kÃ¶nnte abgeschnitten sein, beim Schreiben von %wu Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuAusgabe der %<%.*s%>-Direktive kÃ¶nnte abgeschnitten sein, beim Schreiben von %wu oder mehr Bytes in eine Region der GrÃ¶ÃŸe %wuAusgabe der %<%.*s%>-Direktive kÃ¶nnte abgeschnitten sein, beim Schreiben von %wu oder mehr Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuAusgabe der %<%.*s%>-Direktive kÃ¶nnte abgeschnitten sein, beim Schreiben von %wu bis %wu Bytes in eine Region der GrÃ¶ÃŸe %wuAusgabe der %<%.*s%>-Direktive kÃ¶nnte abgeschnitten sein, beim Schreiben zwischen %wu und %wu Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuAusgabe der %<%.*s%>-Direktive kÃ¶nnte abgeschnitten sein, beim Schreiben von wahrscheinlich %wu oder mehr Bytes in eine Region der GrÃ¶ÃŸe %wuAusgabe der %<%.*s%>-Direktive kÃ¶nnte abgeschnitten sein, beim Schreiben von wahrscheinlich %wu oder mehr Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuAusgabe der %<%.*s%>-Direktive kÃ¶nnte abgeschnitten sein, beim Schreiben von bis zu %wu Bytes in eine Region der GrÃ¶ÃŸe %wuAusgabe der %<%.*s%>-Direktive kÃ¶nnte abgeschnitten sein, beim Schreiben von bis zu %wu Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuAusgabe der %<%.*s%>-Direktive von %wu Bytes macht das Ergebnis grÃ¶ÃŸer als %<INT_MAX%>Ausgabe der Direktive %<%.*s%> Ã¼bersteigt mit %wu Bytes %<INT_MAX%>Ausgabe der %<%.*s%>-Direktive von %wu Bytes Ã¼berschreitet die minimal erforderliche GrÃ¶ÃŸe von 4095Ausgabe der %<%.*s%>-Direktive abgeschnitten, beim Schreiben von %wu Byte in eine Region der GrÃ¶ÃŸe %wuAusgabe der %<%.*s%>-Direktive abgeschnitten, beim Schreiben von %wu Bytes in eine Region der GrÃ¶ÃŸe %wuAusgabe der %<%.*s%>-Direktive abgeschnitten, beim Schreiben von %wu Byte in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuAusgabe der %<%.*s%>-Direktive abgeschnitten, beim Schreiben von %wu Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuAusgabe der %<%.*s%>-Direktive abgeschnitten, beim Schreiben von %wu oder mehr Bytes in eine Region der GrÃ¶ÃŸe %wuAusgabe der %<%.*s%>-Direktive abgeschnitten, beim Schreiben von %wu oder mehr Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuAusgabe der %<%.*s%>-Direktive abgeschnitten, beim Schreiben von %wu bis %wu Bytes in eine Region der GrÃ¶ÃŸe %wuAusgabe der %<%.*s%>-Direktive abgeschnitten, beim Schreiben von %wu bis %wu Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuAusgabe der %<%.*s%>-Direktive abgeschnitten, beim Schreiben von wahrscheinlich %wu oder mehr Bytes in eine Region der GrÃ¶ÃŸe %wuAusgabe der %<%.*s%>-Direktive abgeschnitten, beim Schreiben von wahrscheinlich %wu oder mehr Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuAusgabe der %<%.*s%>-Direktive abgeschnitten, beim Schreiben von bis zu %wu Bytes in eine Region der GrÃ¶ÃŸe %wuAusgabe der %<%.*s%>-Direktive abgeschnitten, beim Schreiben von bis zu %wu Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuGenauigkeit der %<%.*s%>-Direktive auÃŸerhalb des zulÃ¤ssigen BereichsBreite fÃ¼r %<%.*s%>-Direktive auÃŸerhalb des zulÃ¤ssigen Bereichs%<%.*s%>-Direktive schreibt %wu Byte in eine Region der GrÃ¶ÃŸe %wu%<%.*s%>-Direktive schreibt %wu Bytes in eine Region der GrÃ¶ÃŸe %wu%<%.*s%>-Direktive schreibt %wu Byte in eine Region der GrÃ¶ÃŸe zwischen %wu und %wu%<%.*s%>-Direktive schreibt %wu Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wu%<%.*s%>-Direktive schreibt %wu oder mehr Bytes in eine Region der GrÃ¶ÃŸe %wu%<%.*s%>-Direktive schreibt %wu oder mehr Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wu%<%.*s%>-Direktive schreibt zwischen %wu und %wu Bytes in eine Region der GrÃ¶ÃŸe %wu%<%.*s%>-Direktive schreibt zwischen %wu und %wu Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wu%<%.*s%>-Direktive schreibt wahrscheinlich %wu oder mehr Bytes in eine Region der GrÃ¶ÃŸe %wu%<%.*s%>-Direktive schreibt wahrscheinlich %wu oder mehr Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wu%<%.*s%>-Direktive schreibt bis zu %wu Bytes in eine Region der GrÃ¶ÃŸe %wu%<%.*s%>-Direktive schreibt bis zu %wu Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wu%<%D::%D%> ist kein Klassenelement%<%D::%D%> ist kein Element von %qTAttribut %<%E (%E)%> wird ignoriert, da es sich auf eine Funktion bezieht, die als %qs deklariert istAttribut %<%E (%E)%> wird ignoriert, da es sich auf eine Deallokationsfunction bezieht, die als %qs deklariert ist%<%E::%E%> wurde nicht deklariert%<%E::%E%> wurde nicht deklariert; meinten Sie %<%E::%s%>?%<%E::%E%> ist keine Klasse oder Namensbereich%<%E::%E%> ist keine Klasse, Namensbereich oder AufzÃ¤hlung%<%E::%E%> ist kein TypAttribut-Direktive im Bereich %<%E::%E%> ignoriert%<%T%s%D%> benennt Destruktor%<%T::%D%> benennt Konstruktor in %qT%<%T::%E%> wurde nicht deklariert%<%T::%E%> ist kein Typ%<%T::%E%> benennt den Konstruktor, nicht den Typ%<%c%> ist kein gÃ¼ltiges Zeichen in einem Bezeichner%<%c%> ist kein gÃ¼ltiges Anfangszeichen fÃ¼r einen Bezeichner%<%c%E%> nicht in Protokoll(en) gefundendas innerhalb der Parameterliste deklarierte %<%s %E%> ist auÃŸerhalb dieser Definition oder Deklaration nicht sichtbar%<%s %s%>-Konstrukt innerhalb von %qs nicht eng geschachtelt%<%s + %s%> bei %L muss kleiner oder gleich BIT_SIZE(%qs) sein%<%s taskgroup%>-Konstrukt nicht eng geschachtelt innerhalb von %<taskgroup%>-Region%<%s%s%>: Parameter der Form KEY=VALUE fÃ¼r Format %qs nach %qs erwartet, aber %qs bekommen%<%s%s%>: fehlender erforderlicher SchlÃ¼ssel %qs fÃ¼r Format %qs; versuchen Sie %<%s%s:%s=%s%>%<%s%s%>: unerwarteter Wert %qs fÃ¼r SchlÃ¼ssel %qs; erwartet wurde %qs oder %qs%<%s%s%>: unerwarteter Wert %qs fÃ¼r SchlÃ¼ssel %qs; bekannte Werte: %e%<%s%s%>: unbekannter SchlÃ¼ssel %qs fÃ¼r Format %qs; bekannte SchlÃ¼ssel: %e%<%s%s%>: unbekanntes Format %qs; bekannte Formate: %e%<%s%s%s%s%s%>-Direktive wird sowohl in %<absent%>- als auch %<contains%>-Klauseln erwÃ¤hnt%<%s%s%s%s%s%>-Direktive wird mehrfach in %qs-Klauseln erwÃ¤hnt%<%s(%s)%> ist nur in %<omp ordered%> erlaubt%<%s=%s%> und %<%s-%s%> sind unvertrÃ¤glich%<&%>-Bedingung ohne Registerklasse verwendetin Zeile %d ist %<&%> fÃ¼r sich alleine nicht erlaubt%<&%> sollte vor %<...%> kommenInterner Fehler: %<&&%> not valid in GIMPLE%<)%> bei %C erwartet%<*%> in booleschem Kontext, stattdessen ist %<&&%> empfohlen%<*this%>-Capture ist nur mit %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbar%<-%>-Modifikator wird innerhalb einer Funktion verwendet%<-%s%> steht in Konflikt mit den anderen Architekturoptionen, die einen %s-Prozessor angebenArgument %q.*s fÃ¼r %<--help%> ist mehrdeutig, bitte prÃ¤zisieren%<--param constructive-interference-size=%d%> ist grÃ¶ÃŸer als %<--param l1-cache-line-size=%d%>%<--param constructive-interference-size=%d%> ist kleiner als %d%<--param destructive-interference-size=%d%> ist kleiner als %<--param l1-cache-line-size=%d%>%<--param destructive-interference-size=%d%> ist kleiner als %d%<-I-%> doppelt angegeben%<-MF%> und %<-fdeps-file=%> kÃ¶nnen sich die Ausgabedatei %<%s%> nicht teilen: %m%<-MG%> darf nur mit %<-M%> oder %<-MM%> verwendet werden%<-W%serror=%s%>: Keine Option %<-%s%>%<-W%serror=%s%>: unbekannte Option %<-%s%>; meinten Sie %<-%s%>?%<-Wabi%> warnt vor Abweichungen von der aktuellsten ABI, die ebenfalls standardmÃ¤ÃŸig verwendet wird%<-Wabi%> wird vor nichts warnen%<-Wabi=1%> wird nicht unterstÃ¼tzt; stattdessen wird Â»=2Â« verwendetArgument %qs fÃ¼r %<-Werror=%> ist fÃ¼r %s nicht gÃ¼ltig%<-Werror=%s%>: %<-%s%> ist keine Option, die Warnungen steuert%<-Wformat-contains-nul%> wird ohne %<-Wformat%> ignoriert%<-Wformat-extra-args%> wird ohne %<-Wformat%> ignoriert%<-Wformat-nonliteral%> wird ohne %<-Wformat%> ignoriert%<-Wformat-security%> wird ohne %<-Wformat%> ignoriert%<-Wformat-y2k%> wird ohne %<-Wformat%> ignoriert%<-Wformat-zero-length%> wird ohne %<-Wformat%> ignoriert%<-Wmisleading-indentation%> ist von diesem Punkt an ausgeschaltet, da die Spalten-Verfolgung aufgrund der GrÃ¶ÃŸe des Codes/Headers ausgeschaltet wurde%<-Wstrict-flex-arrays%> wird ignoriert, wenn %<-fstrict-flex-arrays%> nicht angegeben wurde%<-f%s%> und %<%s=%s%> sind unvertrÃ¤glich%<-f%s%> wird mit CONST16-Befehlen nicht unterstÃ¼tzt%<-f%s%> nicht unterstÃ¼tzt: wird ignoriert%<-f%sleading-underscore%> wird auf dieser Zielmaschine nicht unterstÃ¼tzt%<-fPIC%> und %<-fpic%> werden fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fPIC%> wird nicht unterstÃ¼tzt%<-fPIC%>/%<-fpic%> werden fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fPIE%> wird nicht unterstÃ¼tzt%<-fabi-compat-version=1%> wird nicht unterstÃ¼tzt; stattdessen wird Â»=2Â« verwendet%<-fabi-version=1%> wird nicht mehr unterstÃ¼tzt%<-fabi-version=12%> (GCC 8.1) Ã¤ndert versehentlich die Aufrufkonvention fÃ¼r %qT%<-fabi-version=13%> (GCC 8.2) korrigiert die Aufrufkonvention fÃ¼r %qT, die in 8.1 versehentlich geÃ¤ndert wurde%<-falign-%s%> ist nicht zwischen 0 und %d%<-falign-labels=%d%> wird nicht unterstÃ¼tzt%<-falign-loops=%d%> wird nicht unterstÃ¼tzt%<-faligned-new=%d%> ist keine Zweierpotenz%<-fasan-shadow-offset%> sollte nur zusammen mit %<-fsanitize=kernel-address%> verwendet werden%<-fassociative-math%> abgeschaltet; andere Optionen haben Vorrang%<-fcall-saved-REG%> wird fÃ¼r Ausgaberegister nicht unterstÃ¼tzt%<-fcf-protection%> ist nicht mit diesem Ziel kompatibel%<-fcf-protection=branch%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fcf-protection=full%> wird von %<-fhardened%> nicht aktiviert, da es in der Befehlszeile angegeben wurde%<-fcf-protection=full%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fcf-protection=return%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fcontract-assumption-mode=%> kann nicht mit p1332/p1429 gemischt werden%<-fcontract-assumption-mode=%> muss %<on%> oder %<off%> sein%<-fcontract-build-level=%> kann nicht mit p1332/p1429 gemischt werden%<-fcontract-build-level=%> muss off|default|audit sein%<-fcontract-continuation-mode=%> kann nicht mit p1332/p1429 gemischt werden%<-fcontract-continuation-mode=%> muss %<on%> oder %<off%> sein%<-fcontract-level=%> zu viele benutzerdefinierte Rollen%<-fcontract-role=%> kann nicht mit Vertragsoptionen aus std/p1429 gemischt werden%<-fcontract-role=%> muss die Form Â»Rolle:SemantikÂ« haben%<-fcontract-role=%>-Semantik muss Werte fÃ¼r default,audit,axiom beinhalten%<-fcontract-semantic=%> kann nicht mit Vertragsoptionen aus std/p1332 gemischt werden%<-fcontract-semantic=%> kann die Standardrolle nicht finden%<-fcontract-semantic=%>-Stufe muss default, audit oder axiom sein%<-fcontract-semantic=%> muss die Form Â»Stufe:SemantikÂ« haben%<-fconvert=r16_ieee%> oder %<-fconvert=r16_ibm%> werden auf dieser Architektur nicht unterstÃ¼tzt%<-fd-lines-as-code%> hat in Freiform keine Auswirkung%<-fd-lines-as-comments%> hat in Freiform keine Auswirkung%<-fdata-sections%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fdbg-cnt=%s:%d:%d%> hat kleinere obere als untere Grenze%<-fdeps-format=%> unbekanntes Format %qs%<-fdirectives-only%> ist mit %<-Wunused-macros%> unvertrÃ¤glich%<-fdirectives-only%> ist mit %<-traditional%> unvertrÃ¤glich%<-femit-struct-debug-detailed=dir:...%> muss zumindest so viel wie %<-femit-struct-debug-detailed=ind:...%> erlauben%<-fexcess-precision=16%> fÃ¼r Ada%<-fexcess-precision=16%> fÃ¼r Fortran%<-fexcess-precision=16%> ist nicht mit %<-mfpmath=387%> kompatibel%<-fexcess-precision=16%> wird auf diesem Ziel nicht unterstÃ¼tzt%<-fexcess-precision=standard%> fÃ¼r Ada%<-fexcess-precision=standard%> fÃ¼r Fortran%<-ffunction-sections%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fhandle-exceptions%> wurde in %<-fexceptions%> umbenannt (und ist nun voreingestellt)%<-fhardened%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fimplicit-constexpr%> betrifft nur %<inline%>-Funktionen%<-fipa-modref%> ist unvertrÃ¤glich mit %qs%<-fipa-reorder-for-locality%> ist unvertrÃ¤glich mit einer expliziten Option %qs%<-flinker-output=rel%> und %<-fltrans%> schlieÃŸen sich gegenseitig aus%<-fmodule-only%> wird fÃ¼r Nicht-Schnittstelle verwendet%<-fmoduleinfo%> wird von diesem Ziel nicht unterstÃ¼tzt%<-fno-fat-lto-objects%> werden nur mit Linker-Plugin unterstÃ¼tzt%<-fno-gnu89-inline%> wird nur im Modus GNU99 oder C99 unterstÃ¼tzt%<-fobjc-abi-version%> %d wird fÃ¼r 32-Bit-Ziele mit %<-fnext-runtime%> nicht unterstÃ¼tzt%<-fobjc-abi-version%> 2 muss fÃ¼r 64-Bit-Ziele mit %<-fnext-runtime%> verwendet werden%<-fobjc-exceptions%> verwenden, um Syntax fÃ¼r Objective-C-Ausnahmen einzuschalten%<-fobjc-gc%> wird fÃ¼r %<-fgnu-runtime%> ignoriert%<-fobjc-sjlj-exceptions%> wird fÃ¼r %<-fgnu-runtime%> ignoriert%<-fobjc-sjlj-exceptions%> wird fÃ¼r %<-fnext-runtime%> ignoriert, wenn %<-fobjc-abi-version%> grÃ¶ÃŸer als 1 ist%<-fobjc-sjlj-exceptions%> ist das einzige unterstÃ¼tzte Ausnahmesystem fÃ¼r %<-fnext-runtime%> mit %<-fobjc-abi-version%>-Argument kleiner 2%<-foffload-abi-host-opts%> nicht angegeben%<-foffload-abi-host-opts%> ist nicht angegeben.%<-foffload-abi-host-opts%> ist mehrfach angegebendas Argument %<-fonly=%> unterscheidet sich vom Namen der ersten EingabedateiOperand fÃ¼r %<-fopenacc-dim%> bei %qs ist falsch%<-fpic%> und %<-fPIC%> werden ohne %<-mdsbt%> fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fpic%> und %<-mapcs-reent%> sind inkompatibel%<-fpic%> wird nicht unterstÃ¼tzt%<-fpie%> wird nicht unterstÃ¼tzt%<-fprefetch-loop-arrays%> wird nicht mit %<-Os%> unterstÃ¼tzt%<-fprefetch-loop-arrays%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fprefetch-loop-arrays%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt (ggf. die %<-march%>-Schalter versuchen)%<-frecord-gcc-switches%> wird fÃ¼r das aktuelle Ziel nicht unterstÃ¼tzt%<-freorder-blocks-and-partition%> unterstÃ¼tzt auf dieser Architektur nicht Unwind-Info%<-freorder-blocks-and-partition%> funktioniert auf dieser Architektur nicht%<-freorder-blocks-and-partition%> funktioniert auf dieser Architektur nicht mit Ausnahmen%<-freorder-blocks-and-partition%> wird auf dieser Architektur nicht unterstÃ¼tzt%<-fsanitize-address-use-after-scope%> erfordert %<-fstack-reuse=none%>%<-fsanitize-recover=%s%> wird nicht unterstÃ¼tzt%<-fsanitize-trap=%s%> wird nicht unterstÃ¼tzt%<-fsanitize=%s%> ist mit %<-fsanitize=%s%> unvertrÃ¤glich%<-fsanitize=address%> und %<-fsanitize=kernel-address%> werden fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fsanitize=address%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fsanitize=all%> ist ungÃ¼ltig%<-fsanitize=kernel-address%> mit Stapelschutz wird auf diesem Ziel nur in Kombination mit %<-fasan-shadow-offset=%> unterstÃ¼tzt%<-fsanitize=pointer-compare%> muss mit %<-fsanitize=address%> oder %<-fsanitize=kernel-address%> kombiniert werden%<-fsanitize=pointer-subtract%> muss mit %<-fsanitize=address%> oder %<-fsanitize=kernel-address%> kombiniert werden%<-fsanitize=shadow-call-stack%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fsanitize=shadow-call-stack%> erfordert %<-ffixed-x18%>%<-fsanitize=shadow-call-stack%> erfordert %<-fno-exceptions%>%<-fsplit-stack%> wird derzeit nur auf GNU/Linux unterstÃ¼tzt%<-fsplit-stack%> wird derzeit nur auf PowerPC64 GNU/Linux mit glibc-2.18 oder neuer unterstÃ¼tzt%<-fsplit-stack%> unterstÃ¼tzt nicht 2 Registerparameter fÃ¼r eine geschachtelte Funktion%<-fsplit-stack%> unterstÃ¼tzt nicht 3 Registerparameter%<-fsplit-stack%> unterstÃ¼tzt nicht fastcall mit geschachtelter Funktion%<-fsplit-stack%> wird von dieser Compilerkonfiguration nicht unterstÃ¼tzt%<-fsplit-stack%> erfordert AssemblerunterstÃ¼tzung fÃ¼r CFI-Direktiven%<-fstack-check=%> und %<-fstack-clash-protection%> schlieÃŸen einander aus. %<-fstack-check=%> wird deaktiviert%<-fstack-check=specific%> fÃ¼r Thumb-1%<-fstack-check=specific%> nicht fÃ¼r MIPS16 implementiert%<-fstack-clash-protection%> wird von %<-fhardened%> nicht eingeschaltet, weil %<-fstack-check%> in der Befehlszeile angegeben wurde%<-fstack-clash-protection%> wird auf Architekturen, deren Stapel von klein nach groÃŸ wÃ¤chst, nicht unterstÃ¼tztOptionen %<-fstack-limit-%> werden durch %<-mfdpic%> ignoriert; stattdessen %<-mstack-check-l1%> verwendendie Optionen %<-fstack-limit-%> werden auf dieser CPU nicht unterstÃ¼tzt%<-fstack-protector%> funktioniert auf dieser Architektur nicht%<-fstack-protector%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fstack-protector-strong%> wird von %<-fhardened%> nicht eingeschaltet, da es in der Befehlszeile angegeben wurde%<-ftrivial-auto-var-init=zero%> wird von %<-fhardened%> nicht eingeschaltet, da es in der Befehlszeile angegeben wurde%<-fuse-cxa-atexit%> wird fÃ¼r msp430-elf nicht unterstÃ¼tzt%<-fuse-linker-plugin%>, aber %s nicht gefunden%<-fwpa%> und %<-fltrans%> schlieÃŸen sich gegenseitig aus%<-g%> wird nur bei der Verwendung von GAS auf diesem Prozessor unterstÃ¼tztOption %<-g%> ausgeschaltet%<-g%> mit %<-mno-apcs-frame%> kÃ¶nnte vernÃ¼nftiges Debugging verhindern%<-g3%> wird nicht vom verwendeten Debugginglinker unterstÃ¼tzt (wird auf 2 gesetzt)%<-gas-locview-support%> wird zwangsweise ausgeschaltet, da %<-gas-loc-support%> nicht angegeben ist%<-gdwarf=%s%> ist mehrdeutig; verwenden Sie %<-gdwarf-%s%> fÃ¼r die DWARF-Version und %<-gdwarf -g%s%> fÃ¼r die Debugstufe%<-gdwarf-6%> wird als Version 5 ausgegeben, mit InkompatibilitÃ¤ten%<-ginline-points%> wird zwangsweise ausgeschaltet, da %<-gstatement-frontiers%> nicht angegeben ist%<-ginternal-reset-location-views%> wird zwangsweise ausgeschaltet, da %<-gvariable-location-views%> nicht angegeben ist%<-gnat%> falsch buchstabiert als %<-gant%>%<-gsplit-dwarf%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt, wird ignoriert%<-gsplit-dwarf%> wird nicht zusammen mit LTO unterstÃ¼tzt, wird daher ausgeschaltetOption %<-iplugindir%> nicht vom GCC-Treiber Ã¼bergeben%<-m%s%> wird in dieser Konfiguration nicht unterstÃ¼tzt%<-m%s%> setzt %<-m%s=%s%> auÃŸer Kraft, die ABI wird auf %qs angepasst%<-m%s=%s%> steht im Konflikt mit %qs, das %<%s%s%> erfordert%<-m32%> widerspricht %<-arch ppc64%> (%<-m32%> wird ignoriert)%<-m32%> widerspricht %<-arch x86_64%> (%<-m32%> wird ignoriert)%<-m64%> benÃ¶tigt eine PowerPC64-CPU%<-m96bit-long-double%> ist nicht mit diesem Ziel kompatibel%<-mabi=%s%> wird nicht zusammen mit %<-fsanitize=address%> unterstÃ¼tzt%<-mabi=%s%> wird nicht zusammen mit %<-fsanitize=kernel-address%> unterstÃ¼tzt%<-mabi=%s%> wird nicht zusammen mit %<-fsanitize=thread%> unterstÃ¼tztdie Option %<-mabi=2fp+%> wird nur unterstÃ¼tzt, wenn eine FPU verfÃ¼gbar ist, das kann durch die Optionen %<-mext-fpu-sp%> oder %<-mext-fpu-dp%> eingeschaltet werden%<-mabi=ilp32%> ist veraltet%<-mabi=ms%> wird in der X32-ABI nicht unterstÃ¼tzt%<-maix64%> benÃ¶tigt: 64-Bit-Berechnung mit 32-Bit-Adressierung noch nicht unterstÃ¼tzt%<-maix64%> setzt eingeschaltete PowerPC64-Architektur voraus%<-malign-functions%> ist veraltet, Ersatz: %<-falign-functions%>%<-malign-functions=%d%> liegt nicht zwischen 0 und %d%<-malign-jumps%> ist veraltet, Ersatz: %<-falign-jumps%>%<-malign-jumps=%d%> liegt nicht zwischen 0 und %d%<-malign-loops%> ist veraltet, Ersatz: %<-falign-loops%>%<-malign-loops=%d%> liegt nicht zwischen 0 und %d%<-mapcs-stack-check%> vertrÃ¤gt sich nicht mit %<-mno-apcs-frame%>%<-mapx-features=%> wird fÃ¼r 32-Bit-Code nicht unterstÃ¼tzt%<-mapxf%> wird fÃ¼r 32-Bit-Code nicht unterstÃ¼tzt%<-march=%> muss angegeben werden%<-march=%s%> ist mit dem ausgewÃ¤hlten ABI unvertrÃ¤glich%<-march=%s%> erfordert %<-mfp32%>%<-march=%s%>: %s mÃ¼ssen durch %<_%> getrennt sein%<-march=%s%>: ISA-Zeichenkette muss mit %<rv32%> oder %<rv64%> anfangen%<-march=%s%>: Die Erweiterung %<%c%> ist keine einbuchstabige Erweiterung.%<-march=%s%>: nach %<%dp%> muss eine Zahl stehen%<-march=%s%>: Erweiterung %qs kommt mehr als einmal vor%<-march=%s%>: Erweiterung %qs ist eine nicht unterstÃ¼tzte Einbuchstaben-Erweiterung%<-march=%s%>: Erweiterung %qs beginnt mit %<s%>, ist aber eine nicht unterstÃ¼tzte Standard-Supervisor-Erweiterung%<-march=%s%>: Erweiterung %qs beginnt mit %<x%>, ist jedoch eine nicht unterstÃ¼tzte Nicht-Standard-Erweiterung%<-march=%s%>: die Erweiterung %qs beginnt mit %<z%>, ist aber eine nicht unterstÃ¼tzte Standarderweiterung%<-march=%s%>: erste ISA-Teilmenge muss %<e%>, %<i%> oder %<g%> sein%<-march=%s%>: fÃ¼r %<%s%dp%dp?%> wird Versionsnummer mit mehr als 2 Stufen nicht unterstÃ¼tzt%<-march=%s%>: Erweiterung h erfordert Erweiterung i%<-march=%s%>: i, e oder g muss die erste Erweiterung sein%<-march=%s%>: Name von %s muss mehr als 1 Buchstabe sein%<-march=%s%>: rv%de ist keine gÃ¼ltige Basis-ISA%<-march=%s%>: xtheadvector steht im Konflikt mit der Vektorerweiterung oder ihren Untererweiterungen%<-march=%s%>: z*inx ist mit Gleitkommaerweiterungen unvertrÃ¤glich%<-march=%s%>: zcd steht im Konflikt mit zcmp%<-march=%s%>: zcd steht im Konflikt mit zcmt%<-march=%s%>: Erweiterung zcf wird nur in rv32 unterstÃ¼tzt%<-masm=intel%> wird in dieser Konfiguration nicht unterstÃ¼tzt%<-mavx10.1%> ist seit GCC14.3 und GCC15.1 ein Alias fÃ¼r 512 Bit, wÃ¤hrend %<-mavx10.1-256%> und %<-mavx10.1-512%> in GCC 16 veraltet sein werden, da alle Maschinen 512 Bit VektorgrÃ¶ÃŸe unterstÃ¼tzen%<-max-stackframe=%d%> ist nicht verwendbar, nicht zwischen 0 und %ddie Kombination aus %<-mbackchain%>, %<-mpacked-stack%> und %<-mhard-float%> wird nicht unterstÃ¼tzt%<-mbranch-cost=%d%> liegt nicht zwischen 0 und 5%<-mcall-aixdesc%> ist unvertrÃ¤glich mit %<-mabi=elfv2%>%<-mcall-ms2sysv-xlogues%> ist nicht kompatibel mit %<%s%>%<-mcall-ms2sysv-xlogues%> wird derzeit nicht zusammen mit SEH unterstÃ¼tzt%<-mcmodel%> unvertrÃ¤glich mit anderen TOC-Optionen%<-mcmodel=%> wird im 32-Bit-Modus nicht unterstÃ¼tzt%<-mcode-region=either%> erfordert das groÃŸe Speichermodell (%<-mlarge%>)%<-mcode-region=upper%> erfordert das groÃŸe Speichermodell (%<-mlarge%>)%<-mcorea%> und %<-mcoreb%> kÃ¶nnen nicht zusammen verwendet werden%<-mcorea%> sollte mit %<-mmulticore%> verwendet werden%<-mcoreb%> sollte mit %<-mmulticore%> verwendet werden%<-mcpu=%> ist veraltet. Verwenden Sie stattdessen %<-mtune=%> oder %<-march=%>%<-mcpu=%s%> steht in Konflikt mit %<-march=%s%>%<-mcpu=%s%> hat ungÃ¼ltige Silizium-Revision%<-mcpu=%s%> ist nicht gÃ¼ltig%<-mcpu=%s%>: unbekannte CPU%<-mdata-region=either%> erfordert das groÃŸe Speichermodell (%<-mlarge%>)%<-mdata-region=upper%> erfordert das groÃŸe Speichermodell (%<-mlarge%>)%<-mdiv%> erfordert %<-march%>, um die %<M%>-Erweiterung zu ermitteln%<-mdouble-float%> wird ohne %<-mhard-float%> ignoriert%<-mdynamic-no-pic%> Ã¼bersteuert %<-fpic%>, %<-fPIC%>, %<-fpie%> oder %<-fPIE%>%<-mes0%> kann nur zusammen mit C verwendet werden%<-mevex512%> wird in GCC 16 veraltet sein, da alle Maschinen 512 Bit VektorgrÃ¶ÃŸe unterstÃ¼tzen%<-mexr%> wird ohne %<-ms%> verwendet%<-mexr%> wird ohne %<-ms%> oder %<-msx%> verwendet%<-mfdivdu%> wird ohne %<-mhard-float%> ignoriert%<-mfdpic%> wird nicht unterstÃ¼tzt, bitte das Ziel Â»bfin-linux-uclibcÂ« verwenden%<-mfentry%> wird nur auf 64-Bit-CPUs unterstÃ¼tzt%<-mfentry%> wird fÃ¼r 32 Bit in Kombination mit %<-fpic%> nicht unterstÃ¼tzt%<-mfloat-abi=hard%> und VFP%<-mfloat-abi=hard%>: ausgewÃ¤hlte Architektur hat keine FPU%<-mfpxx%> kann nur mit dem o32-ABI verwendet werden%<-mfunction-return%> und %<-fcf-protection%> sind nicht kompatibel%<-mfunction-return=%s%> und %<-mcmodel=large%> sind nicht kompatibel%<-mfused-madd%> ist veraltet; stattdessen %<-ffp-contract=%> verwenden%<-mgp32%> und %<-mfp64%> kÃ¶nnen nur kombiniert werden, wenn das Ziel die Befehle mfhc1 und mthc1 unterstÃ¼tzt%<-mgp32%> und %<-mfp64%> kÃ¶nnen nur kombiniert werden, wenn o32-ABI verwendet wird%<-mgp32%> mit einem 64-Bit-ABI verwendet%<-mgp64%> mit einem 32-Bit-ABI verwendet%<-mgp64%> mit einem 32-Bit-Prozessor verwendet%<-mhard-dfp%> kann nicht in Verbindung mit %<-msoft-float%> verwendet werden%<-mhard-float%> wird von der ausgewÃ¤hlten CPU nicht unterstÃ¼tzt%<-mincoming-stack-boundary=%d%> liegt nicht zwischen %d und 12%<-mindirect-branch%> und %<-fcf-protection%> sind nicht kompatibel%<-mindirect-branch=%s%> und %<-mcmodel=large%> sind nicht kompatibel%<-mintel-syntax%> und %<-mno-intel-syntax%> sind veraltet; stattdessen %<-masm=intel%> und %<-masm=att%> verwenden%<-mips3d%> erfordert %<-mpaired-single%>Argument fÃ¼r %<-misr-secure=%d%> liegt nicht zwischen 0 und 3fÃ¼r die Option %<-misr-vector-size=%d%> sind nur die Werte 4 oder 16 gÃ¼ltig%<-mlam=%>-Option: [u48|u57] wird fÃ¼r 32-Bit-Code nicht unterstÃ¼tzt%<-mlam=u48%> ist nicht kompatibel mit hardwareunterstÃ¼tztem AddressSanitizer, stattdessen wird %<-mlam=u57%> verwendet%<-mlarge%> erfordert ein 430X-kompatibles %<-mmcu=%>%<-mlong-double-64%> ist mit %<-m64%> nicht erlaubt%<-mloongson-ext2%> muss zusammen mit %<-mloongson-ext%> verwendet werden%<-mloongson-mmi%> muss zusammen mit %<-mhard-float%> verwendet werden%<-mmsa%> muss zusammen mit %<-mfp64%> und %<-mhard-float%> verwendet werden%<-mmul=g13%> kann nicht zusammen mit %<-mcpu=g10%> verwendet werden%<-mmul=g13%> kann nicht zusammen mit %<-mcpu=g14%> verwendet werden%<-mmul=g14%> kann nicht zusammen mit %<-mcpu=g10%> verwendet werden%<-mmul=g14%> kann nicht zusammen mit %<-mcpu=g13%> verwendet werden%<-mmulticore%> kann nur mit BF561 verwendet werden%<-mn%> wird fÃ¼r Linux-Ziele nicht unterstÃ¼tzt%<-mno-%s%> schaltet %<-m%s%> aus%<-mno-allow-string-insns%> verbietet das Erzeugen des RMPA-Befehls%<-mno-altivec%> schaltet vsx aus%<-mno-avx10.1-256, -mno-avx10.1-512%> kann AVX512-Befehle nicht deaktivieren, wenn %<-mavx512XXX%> in GCC 15 verwendet wird. Das Verhalten Ã¤ndert sich dahingehend, dass alle Befehle in GCC 16 deaktiviert werden%<-mno-avx512XXX%> kann AVX10-Befehle nicht deaktivieren, wenn AVX10 in GCC 15 verfÃ¼gbar ist. Das Verhalten Ã¤ndert sich dahingehend, dass es diesen Teil der AVX512-Befehle ab GCC 16 deaktiviert%<-mno-dpfp-lrsr%> wird nur mit %<-mdpfp%> unterstÃ¼tzt%<-mno-evex512%> oder %<-mno-avx512XXX%> kann AVX10-Befehle nicht ausschalten, wenn AVX10.1-512 in GCC 15 verfÃ¼gbar ist. Das Verhalten wird sich Ã¤ndern, sodass dieser Teil der AVX512-Befehle ab GCC 16 deaktiviert wird%<-mno-exr%> ist nur mit %<-ms%> oder %<-msx%> gÃ¼ltig, die Option wird ignoriert%<-mno-fentry%> ist nicht mit SEH vertrÃ¤glich%<-mno-gpopt%> erfordert %<-mexplicit-relocs%>%<-mno-mpy%> wird nur fÃ¼r ARC700 oder ARCv2 unterstÃ¼tzt%<-mno-pic-data-is-text-relative%> kann nur zusammen mit %<-fpic%>/%<-fPIC%> verwendet werden%<-mnop-mcount%> ist nicht mit diesem Ziel kompatibel%<-mnop-mcount%> ist fÃ¼r %<-fno-plt%> nicht implementiert%<-mpcrel -fPIC%> wird derzeit nicht fÃ¼r die ausgewÃ¤hlte CPU unterstÃ¼tzt%<-mpic-register=%> ist ohne %<-fpic%> nutzlos%<-mpic-symbol-stubs%> ist fÃ¼r 64-Bit-Code nicht erforderlich (ignoriert)%<-mpreferred-stack-boundary%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-mpreferred-stack-boundary=%d%> liegt nicht zwischen %d und %d%<-mpreferred-stack-boundary=%d%> muss zwischen %d und %d liegen%<-mquad-memory%> ist im Little-Endian-Modus nicht verfÃ¼gbar%<-mquad-memory%> benÃ¶tigt 64-Bit-Modus%<-mquad-memory-atomic%> benÃ¶tigt 64-Bit-Modus%<-mregparm%> wird fÃ¼r Intel-MCU-psABI ignoriert%<-mregparm%> wird im 64-Bit-Modus ignoriert%<-mregparm=%d%> liegt nicht zwischen 0 und %d%<-mrelax%> wird nur fÃ¼r RTP PIC unterstÃ¼tzt%<-mriscv-attribute%> RISC-V-ELF-Attribut erfordert GNU as 2.32 [%<-mriscv-attribute%>]%<-mrop-protect%> erfordert %<-mcpu=power8%> oder hÃ¶her%<-mrop-protect%> erfordert das ELFv2-ABI%<-mrtd%> wird im 64-Bit-Modus ignoriert%<-ms2600%> wird ohne %<-ms%> verwendet%<-mshared-library-id=%> ohne %<-mid-shared-library%> angegeben%<-mshared-library-id=%s%> liegt nicht zwischen 0 und %d%<-msmart%> ist mit %<-mhigh-registers%> unvertrÃ¤glich%<-mspfp_fast%> ist auf ARC600 und ARC601 nicht verfÃ¼gbar%<-msse5%> wurde entfernt%<-msseregparm%> verwendet, ohne dass SSE eingeschaltet ist%<-mstack-guard%> bringt %<-mstack-size%> mit sich%<-mstack-protector-guard=tls%> erfordert ein Hardware-TLS-Register%<-mstringop-strategy=rep_8byte%> wird fÃ¼r 32-Bit-Code nicht unterstÃ¼tzt%<-mtpf-trace-hook-epilogue-check%> erfordert eine Ganzzahl im Bereich von 0 bis 4095%<-mtpf-trace-hook-epilogue-target%> erfordert eine Ganzzahl im Bereich von 0 bis 4095%<-mtpf-trace-hook-prologue-check%> erfordert eine Ganzzahl im Bereich von 0 bis 4095%<-mtpf-trace-hook-prologue-target%> erfordert eine Ganzzahl im Bereich von 0 bis 4095%<-mtune=%> erwartet mn10300, am33, am33-2 oder am34%<-mtune=x86-64%> ist veraltet; stattdessen entsprechend %<-mtune=k8%> oder %<-mtune=generic%> verwenden%<-muintr%> wird fÃ¼r 32-Bit-Code nicht unterstÃ¼tzt%<-mvrsave=no%> ist veraltet. Verwenden Sie stattdessen %<-mno-vrsave%>%<-mvrsave=yes%> ist veraltet. Verwenden Sie stattdessen %<-mvrsave%>%<-mvsx%> und %<-mavoid-indexed-addresses%> sind unvertrÃ¤glich%<-mvsx%> und %<-mno-altivec%> sind unvertrÃ¤glich%<-mvsx%> und %<-msoft-float%> sind unvertrÃ¤glich%<-mvsx%> benÃ¶tigt indizierte Adressierung%<-mvsx%> benÃ¶tigt Hardware-Gleitkommabefehle%<-mxl-multiply-high%> kann nur mit %<-mcpu=v6.00.a%> oder hÃ¶her verwendet werden%<-mxl-multiply-high%> erfordert %<-mno-xl-soft-mul%>%<-mxl-reorder%> kann nur mit %<-mcpu=v8.30.a%> oder hÃ¶her verwendet werden%<-mxl-reorder%> erfordert %<-mxl-pattern-compare%> fÃ¼r %<-mcpu=v8.30.a%>%<-mxnack=on%> ist nicht kompatibel mit %<-march=%s%>%<-pipe%> ignoriert, da %<-save-temps%> angegeben wurde%<-pipe%> wird nicht unterstÃ¼tzt%<-x %s%> hinter letzter Eingabedatei hat keine Auswirkung%<.%s%>-Name wird mehrfach in derselben Initialisierungsliste verwendet%<...%>-Behandler muss der letzte Behandler fÃ¼r seinen Â»tryÂ«-Block sein%<...%> ist in benannten Initialisierungen nicht erlaubt%<:%>-EinschrÃ¤nkung mit anderen Bedingungen vermischtOperand der %<:%>-EinschrÃ¤nkung ist weder die Adresse einer Funktion noch einer nichtautomatischen Variable%<:%>-EinschrÃ¤nkung fÃ¼r Ausgabeoperanden verwendet%<::%> in PROCEDURE-Bindung mit explizitem Ziel bei %C erforderlich%<::%D%> wurde nicht deklariert%<::%D%> wurde nicht deklariert; meinten Sie %qs?%<::%E%> wurde nicht deklariert%<::%E%> ist keine Klasse oder Namensbereich%<::%E%> ist keine Klasse, Namensbereich oder AufzÃ¤hlung%<::%E%> ist kein Typ%<::main%> kann nicht gelÃ¶scht werden%<::main%> muss %<int%> zurÃ¼ckgeben%<<:%> ist eine andere Schreibweise fÃ¼r %<[%>. Leerraum zwischen %<<%> und %<::%> einfÃ¼gen%<<::%> kann keine Templateargumentliste einleiten%<<<%> in booleschem Kontext, meinten Sie %<<%>?%<=%>Optionen fehlen nach %<-foffload-options=%>Ziel%<=> target%> ist ungÃ¼ltig fÃ¼r DEFERRED-Bindung bei %COperator %<>>%> wird in C++11 wie zwei spitze schlieÃŸende Klammern behandelt%<>>%> sollte innerhalb einer geschachtelten Templateargumentliste %<> >%> sein%<?:%> mit Ganzzahlkonstanten in booleschem Kontext%<?:%> mit Ganzzahlkonstanten in booleschem Zusammenhang; der Ausdruck evaluiert immer zu %<true%>%<@catch%>-Parameter kann nicht Protokoll-qualifiziert sein%<@catch%>-Parameter ist kein bekannter Objective-C-Klassentypin Objective-C 1.0 gibt es kein %<@dynamic%>%<@dynamic%> nicht in @implementation-Kontext%<@dynamic%> erfordert VerfÃ¼gbarkeit des @interface der Klasse%<@encode%> muss als Argument einen Typen angeben%<@end%> fehlt in Implementationskontext%<@end%> muss in einem @implementation-Kontext auftreten%<@interface%> der Klasse %qE nicht gefunden%<@optional%> ist nur im @protocol-Kontext erlaubt%<@optional%> ist in Objective-C 1.0 nicht verfÃ¼gbar%<@package%> ist in Objective-C 1.0 nicht verfÃ¼gbar%<@package%> hat derzeit den gleichen Effekt wie %<@public%>%<@property%> ist in Objective-C 1.0 nicht verfÃ¼gbar%<@required%> ist nur im @protocol-Kontext erlaubt%<@required%> ist in Objective-C 1.0 nicht verfÃ¼gbar%<@synchronized%>-Argument ist kein Objekt%<@synthesize%> kann nicht in Kategorien verwendet werdenin Objective-C 1.0 gibt es kein %<@synthesize%>%<@synthesize%> nicht in @implementation-Kontext%<@synthesize%> erfordert VerfÃ¼gbarkeit des @interface der Klasse%<@throw%> (rethrow) auÃŸerhalb von %<@catch%>-Block verwendet%<@throw%>-Argument ist kein Objekt%<@try%> ohne %<@catch%> oder %<@finally%>%<COLLECT_GCC%> muss gesetzt seinSpaltenÃ¼berschriften %<CPU_TYPE%> und %<MPY_TYPE%> fehlen in %<devices.csv%>SpaltenÃ¼berschrift %<CPU_TYPE%> fehlt in %<devices.csv%>%<CTABLE_ENTRY%>-Basisadresse muss ein Vielfaches von 256 seinIndex %wd fÃ¼r %<CTABLE_ENTRY%> ist nicht gÃ¼ltig%<DEFERRED_INIT%>-Aufrufe sollten die gleiche konstante GrÃ¶ÃŸe fÃ¼r das erste Argument und LHS haben%<DETACH%>-Klausel bei %L darf nicht zusammen mit %<MERGEABLE%>-Klausel verwendet werden%<FULL%>-Klausel bei %C darf nicht zusammen mit %<PARTIAL%>-Klausel verwendet werden%<G0%> in Format bei %LDie Direktive %<GCC unroll%> bei %C darf nur direkt vor einem Schleifenbeginn stehenDie Direktive %<GCC unroll%> bei %C darf nur direkt vor einem Schleifenbeginn stehenDie Direktive %<GCC unroll%> bei %C darf nur direkt vor einem Schleifenbeginn stehenDirektive %<GCC unroll%> bei %2$C verlangt eine konstante Anzahl (maximal %1$u)Die Direktive %<GCC unroll%> bei %C darf nur direkt vor einem Schleifenbeginn stehendie %<GRAINSIZE%>-Klausel bei %L darf nicht zusammen mit der %<NUM_TASKS%>-Klausel verwendet werden%<HLE_ACQUIRE%> wird mit %<ACQUIRE%> oder stÃ¤rkerem Speichermodell nicht verwendet%<HLE_RELEASE%> wird mit %<RELEASE%> oder stÃ¤rkerem Speichermodell nicht verwendet%<LEXER_DEBUGGING_ENABLED_P%> ist nicht auf true gesetztArgument %<MOLD%> des intrinsischen %<TRANSFER%> bei %L ist ein Array und darf nicht die SpeichergrÃ¶ÃŸe 0 haben, da das %<SOURCE%>-Argument grÃ¶ÃŸer als 0 istArgument %<MOLD%> des intrinsischen %<TRANSFER%> bei %L darf nicht %s seinArgument %<MOLD%> des intrinsischen %<TRANSFER%> bei %L darf kein %s seinSpaltenÃ¼berschrift %<MPY_TYPE%> fehlt in %<devices.csv%>Die Direktive %<OMP DISPATCH%> bei %L kann nicht von einem Prozedurzeiger gefolgt werdenAuf die Direktive %<OMP DISPATCH%> bei %L muss ein Prozeduraufruf mit optionaler Zuweisung folgenAuf die Direktive %<OMP DISPATCH%> bei %C muss ein Prozeduraufruf mit optionaler Zuweisung folgen%<PRINT_OPERAND%> Null-Zeiger%<PRINT_OPERAND%>: Unbekanntes Satzzeichen %<%c%>%<PRINT_OPERAND_ADDRESS%>, Null-Zeigerdie %<REDUCTION%>-Klausel bei %L darf nicht zusammen mit der %<NOGROUP%>-Klausel verwendet werdenArgument %<SOURCE%> des intrinsischen %<TRANSFER%> bei %L darf kein %s seinInterner Compilerfehler: %<TREE_PURPOSE%> is non-NULL in %<TYPE_ARG_TYPES%> listInterner Compilerfehler: %<TYPE_ARRAY_MAX_SIZE%> not %<INTEGER_CST%>Interner Compilerfehler: %<TYPE_BINFO%> is not %<TREE_BINFO%>Interner Compilerfehler: %<TYPE_BINFO%> type is not %<TYPE_MAIN_VARIANT%>Interner Compilerfehler: %<TYPE_CACHED_VALUES%> is not %<TREE_VEC%>Interner Compilerfehler: %<TYPE_CACHED_VALUES_P%> is %i while %<TYPE_CACHED_VALUES%> is %pInterner Compilerfehler: %<TYPE_CACHED_VALUES_P%> is set while it should not beInterner Compilerfehler: %<TYPE_CANONICAL%> has different %<TYPE_CANONICAL%>Interner Compilerfehler: %<TYPE_CANONICAL%> is not compatibleInterner Compilerfehler: %<TYPE_CANONICAL%> of main variant is not main variantInterner Compilerfehler: %<TYPE_FIELDS%> defined in incomplete typeInterner Compilerfehler: %<TYPE_LANG_SLOT_1 (binfo)%> field is non-NULLInterner Compilerfehler: %<TYPE_MAIN_VARIANT%> has different %<TYPE_MAIN_VARIANT%>Interner Compilerfehler: %<TYPE_MAX_VALUE_RAW%> non-NULLInterner Compilerfehler: %<TYPE_METHOD_BASETYPE%> is not main variantInterner Compilerfehler: %<TYPE_METHOD_BASETYPE%> is not record nor unionInterner Compilerfehler: %<TYPE_MODE%> of %<TYPE_CANONICAL%> is not compatibleInterner Compilerfehler: %<TYPE_NEXT_PTR_TO%> is not %<POINTER_TYPE%>Interner Compilerfehler: %<TYPE_NEXT_REF_TO%> is not %<REFERENCE_TYPE%>Interner Compilerfehler: %<TYPE_OFFSET_BASETYPE%> is not record nor unionInterner Compilerfehler: %<TYPE_VALUES_RAW%> field is non-NULLInterner Compilerfehler: %<TYPE_VFIELD%> is not %<FIELD_DECL%> nor %<TREE_LIST%>%<V%>-Modifikator an nicht-ganzzahligem Register%<[%E] =%> in benannter Initialisierung im GNU-Stil fÃ¼r Klasse %qT verwendet%<[*]%> auÃŸerhalb des Bereichs des Funktionsprototypen nicht erlaubt%<[*]%> nicht in einer Deklaration%<[[omp::directive(%s)]]%> muss das einzige angegebene Attribut in einer Anweisung sein%<[super â€¦]%> darf nur in einem Methodenkontext auftreten%<_Alignas%>-Spezifizierer kÃ¶nnen nicht die Ausrichtung von %qE reduzieren%<_Alignas%>-Spezifizierer kÃ¶nnen nicht die Ausrichtung eines zusammengesetzten Feldes reduzieren%<_Alignas%>-Spezifizierer kÃ¶nnen nicht die Ausrichtung eines unbenannten Feldes reduzieren%<_Atomic%> %qD in %<aligned%>-Klausel%<_Atomic%> %qD in %<firstprivate%>-Klausel am %<target%>-Konstrukt%<_Atomic%> %qD in %<linear%>-Klausel%<_Atomic%>-Deklaration %qD in %qs-Klausel%<_Atomic%> %qD in impliziter %<firstprivate%>-Klausel am %<target%>-Konstrukt%<_Atomic%> %qD in implizier %<map%>-Klausel%<_Atomic%> %qE in %<reduction%>-Klausel%<_Atomic%>-Ausdruck %qE in %qs-Klausel%<_Atomic%> auf einen qualifizierten Typen angewandt%<_Atomic%>-Ausdruck in %<#pragma omp atomic%>%<_Atomic%> in Objective-C%<_Atomic%>-Iterationsvariable %qE%<_Atomic%>-qualifizierter Typ in %<#pragma omp declare reduction%>%<_Atomic%>-qualifizierter Arraytyp%<_Atomic%>-qualifizierter Funktionstyp%<_Atomic%>-qualifizierter Parametertyp %qT von %q+D%<_Atomic%>-qualifizierter RÃ¼ckgabetyp von %qD%<_BitInt%>-Argument %qE ist grÃ¶ÃŸer als %<BITINT_MAXWIDTH%> %qd%<_BitInt%>-Argument %qE ist kein positiver konstanter Ganzzahlausdruck%<_BitInt%>-Argument ist kein konstanter Ganzzahlausdruck%<_BitInt(%d)%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<_Complex _BitInt(%d)%> wird nicht unterstÃ¼tzt%<_FORTIFY_SOURCE%> wird von %<-fhardened%> nicht eingeschaltet, da es in %<-D%> oder %<-U%> angegeben wurde%<_FORTIFY_SOURCE%> wird von %<-fhardened%> nicht eingeschaltet, da die Optimierungen ausgeschaltet sind%<_Float%d%s%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<_GLIBCXX_ASSERTIONS%> wird von %<-fhardened%> nicht eingeschaltet, da es in %<-D%> oder %<-U%> angegeben wurde%<_Generic%>-Verbindung hat variable TyplÃ¤nge%<_Generic%>-Selektor passt zu mehreren Zuordnungen%<_Generic%>-Selektor vom Typ %qT ist mit keiner der Zuordnungen kompatibel%<_Generic%> gibt zwei kompatible Typen an%<_Noreturn%> in leerer Deklaration%<_Sat%> ohne %<_Fract%> oder %<_Accum%> verwendetAttribut %<__BELOW100__%> nicht mit Speicherklasse Â»autoÂ« erlaubtAttribut %<__BELOW100__%> bezieht sich nur auf Variablen%<__GIMPLE%> ist nur mit %<-fgimple%> gÃ¼ltigFunktion %<__RTL%> kann nicht mit %<-flto%> kompiliert werden%<__alignof%> auf Bitfeld angewandt%<__auto_type%> gefolgt von %<[[]]%>-Attributen%<__auto_type%> erfordert einen einfachen Bezeichner als Deklarator%<__auto_type%> wird mit einem Bitfeld-Initialisierer verwendet%<__bfloat16%> ist seit GCC 13.1 von typedef %<short%> zum echten %<__bf16%> umdefiniert, Vorsicht bei impliziter Konvertierung zwischen %<__bf16%> und %<short%>; hier kann ein explizites Bitcast nÃ¶tig sein%<__builtin_arc_aligned%> mit nichtkonstanter AusrichtungZieltyp %qT von %<__builtin_bit_cast%> ist ein ArraytypZieltyp %qT von %<__builtin_bit_cast%> ist nicht trivial kopierbarin %<__builtin_bit_cast%> ist die QuellgrÃ¶ÃŸe %qE ungleich der ZieltypgrÃ¶ÃŸe %qEQuelltyp %qT von %<__builtin_bit_cast%> ist nicht trivial kopierbarOperand von %<__builtin_complex%> nicht realer binÃ¤rer GleitkommatypOperanden von %<__builtin_complex%> unterschiedlichen TypsDas erste Argument von %<__builtin_convertvector%> muss Ganzzahl- oder Gleitkommavektor seinAnzahl der Elemente des ersten Argumentvektors und des Typs des zweiten Argumentvektors fÃ¼r %<__builtin_convertvector%> sollten gleich seinDas zweite Argument von %<__builtin_convertvector%> muss Ganzzahl- oder Gleitkommavektortyp sein%<__builtin_eh_return%> fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<__builtin_has_attribute%> mit abhÃ¤ngigem Argument wird noch nicht unterstÃ¼tztArgument von %<__builtin_is_corresponding_member%> muss ein Zeiger auf Member sein%<__builtin_is_corresponding_member%> benÃ¶tigt zwei Argumente%<__builtin_is_corresponding_member%> nicht wohldefiniert fÃ¼r anonyme VereinigungenArgument von %<__builtin_is_pointer_interconvertible_with_class%> muss ein Zeiger auf Member sein%<__builtin_is_pointer_interconvertible_with_class%> benÃ¶tigt ein einziges ArgumentZweites Argument fÃ¼r %<__builtin_longjmp%> muss 1 sein%<__builtin_next_arg%> ohne Argument gerufen%<__builtin_rx_%s%> benÃ¶tigt %<C%>, %<Z%>, %<S%>, %<O%>, %<I%> oder %<U%>%<__builtin_saveregs%> wird fÃ¼r dieses Teilziel nicht unterstÃ¼tzt%<__builtin_saveregs%> wird von diesem Ziel nicht unterstÃ¼tzt%<__builtin_set_thread_pointer%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tztInnere Typen des/der Argumentvektors/en und Maske von %<__builtin_shuffle%> mÃ¼ssen gleiche GrÃ¶ÃŸe habenVektorargumente von %<__builtin_shuffle%> mÃ¼ssen gleichen Typ habenArgumente fÃ¼r %<__builtin_shuffle%> mÃ¼ssen Vektoren seinDas letzte Argument von %<__builtin_shuffle%> muss Ganzzahlvektor seinAnzahl der Elemente des/der Argumentvektors/en und des Maskenvektors fÃ¼r %<__builtin_shuffle%> sollten gleich seinVektorargumente von %<__builtin_shufflevector%> mÃ¼ssen den gleichen Typ habenArgumente fÃ¼r %<__builtin_shufflevector%> mÃ¼ssen Vektoren konstanter GrÃ¶ÃŸe seinArgumente fÃ¼r %<__builtin_shufflevector%> mÃ¼ssen Vektoren sein%<__builtin_shufflevector%> muss ein Ergebnis mit einer Zweierpotenz von Elementen angeben%<__builtin_thread_pointer%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tztAufruf von %<__builtin_unreachable%> oder %<__builtin_trap%> mit Argumenten%<__delay_cycles%> ist auf 32-Bit-SchleifendurchlÃ¤ufe beschrÃ¤nkt%<__delay_cycles%> nimmt nur konstante Argumente entgegen%<__delay_cycles%> nimmt nur nicht-negative Zykluszahlen entgegen%<__fp16%> ohne %<ldrh%>%<__gcc_host_wide_int__%> ist nicht als %<long%> oder %<long long%> definiert%<__gcc_host_wide_int__%> ist nicht als Typ definiert%<__int%d%> wird von diesem Ziel nicht unterstÃ¼tzt%<__int%d%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<__label__%>-Deklarationen sind nur im FunktionsgÃ¼ltigkeitsbereich erlaubt%<__label__%> nicht am Anfang eines Blocks%<__restrict%> kann nur fÃ¼r Objekte und Funktionen angegeben werden%<__thread%> vor %<extern%>%<__thread%> vor %<static%>%<__thread%> vor %qD%<__thread%> kann nur fÃ¼r Objekte und Funktionen angegeben werden%<__transaction_atomic%> ohne eingeschaltete UnterstÃ¼tzung fÃ¼r transaktionsgebundenen Speicher%<__transaction_cancel%> nicht innerhalb von %<__transaction_atomic%>%<__transaction_cancel%> innerhalb eines %<__transaction_relaxed%>%<__transaction_cancel%> ohne eingeschaltete UnterstÃ¼tzung fÃ¼r transaktionsbasierten Speicher%<__transaction_relaxed%> ohne eingeschaltete UnterstÃ¼tzung fÃ¼r transaktionsgebundenen SpeicherArgument %<a%d%> des intrinsischen %qs bei %L muss %s(%d) seinArgument %<a1%> des intrinsischen %qs bei %L muss INTEGER, REAL oder CHARACTER seinArgument %<a1%> des intrinsischen %qs bei %L muss INTEGER, REAL, CHARACTER oder UNSIGNED sein%<acc update%> bei %L muss mindestens eine %<device%>- oder %<host%>- oder %<self%>-Klausel enthaltenAttribut %<alias%> ignoriert, da Funktion bereits definiert istin der %<align%>-Klausel muss das Argument eine positive konstante Zweierpotenz eines ganzzahligen Ausdrucks seinArgument fÃ¼r %<alignas%> hat nicht-ganzzahligen Typen %qT%<alignas%> in leerer Deklaration mit auf %<enum%> basierendem Typen%<alignas%> in Typalias%<alignas%> bei einem anderen Typ als %<class%>%<alignas%> in Bitfeld%<alignas%> in AufzÃ¤hlungstyp%<alignas%> an Exceptiondeklaration%<alignas%> in FunktionsdeklarationAusdruck fÃ¼r Ausrichtung der %<aligned%>-Klausel muss ganzzahlig seinAusdruck fÃ¼r %<aligned%>-Klausel erfordert positiven konstanten Ganzzahlausdruck%<alloca%> wird in Koroutinen noch nicht unterstÃ¼tztin der %<allocate%>-Klausel muss das Argument des %<align%>-Modifizierers eine positive konstante Zweierpotenz eines ganzzahligen Ausdrucks seinAllokationsausdruck in %<allocate%>-Klausel ist vom Typ %qT statt des erwarteten %<omp_allocator_handle_t%>%<allocate%>-Klausel muss hier einen Allozierer angeben%<allocate%>-Direktive fÃ¼r %qD in einer Zielregion muss eine %<allocator%>-Klausel angebendie %<allocate%>-Direktive muss sich im selben Bereich wie %qD befindenAllokationsausdruck in %<allocator%>-Klausel ist vom Typ %qT statt des erwarteten %<omp_allocator_handle_t%>%<allocator%>-Klausel fÃ¼r statische Variable %qD erforderlichdie %<allocator%>-Klausel erfordert einen vordefinierten Allokator, da %qD statisch istdie Funktion %<always_inline%> ist mÃ¶glicherweise nicht inlinefÃ¤hig, es sei denn, sie ist ebenfalls als %<inline%> deklariertAttribut %<amdgpu_hsa_kernel%> erfordert Zeichenkettenkonstanten als Argumente%<ancestor%>-GerÃ¤temodifikator, dem keine %<requires%>-Direktive mit %<reverse_offload%>-Klausel vorausgeht%<ancestor%>-GerÃ¤temodifizierer bei %C, dem keine %<requires%>-Direktive mit %<reverse_offload%>-Klausel vorausgehtdie %<append_args%>-Klausel impliziert, dass %qs %d Dummy-Argumente vom Typ Ganzzahl mit der Art %<omp_interop_kind%> hat%<append_args%> ist hier angegeben%<asm goto%> mit komplexen typisierten Ausgaben%<asm%>-Konflikt mit Eingabeoperand%<asm%>-Konflikt mit Ausgabeoperand%<asm%>-Deklaration wird wegen Konflikt mit vorheriger Umbenennung ignoriert%<asm%>-Schalter werden im Thumb1-Modus nicht unterstÃ¼tzt%<asm%> innerhalb einer %<constexpr%>-Funktion ist erst ab %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbar%<asm%> in %<transaction_safe%>-Funktion ist nicht erlaubtin atomarer Transaktion ist kein %<asm%> erlaubt%<asm%>-Operand %d passt wahrscheinlich nicht zu den Bedingungen%<asm%>-Operandenbedingung inkompatibel mit OperandengrÃ¶ÃŸe%<asm%>-Operand hat unmÃ¶gliche Nebenbedingungen%<asm%>-Operand hat unmÃ¶gliche EinschrÃ¤nkungen, oder es gibt nicht genug Register%<asm%>-Operand erfordert unmÃ¶gliches Neuladen%<asm%>-Qualifizierer %qT wird ignoriert, da auÃŸerhalb des Funktionsrumpfes%<asm%>-Qualifizierer auÃŸerhalb des Funktionsrumpfes%<asm%>-Spezifizierer fÃ¼r cc-Ausgabe steht in Konflikt mit %<asm%>-Clobber-Liste%<asm%>-Spezifizierer fÃ¼r Variable %qE steht in Konflikt mit %<asm%>-Bestrafungs-Liste%<asm%>-Symbole sind an nicht statischen Datenelementen nicht erlaubt%<assign%> kann fÃ¼r Objective-C-Objekte unsicher sein; bitte explizit angeben, falls nÃ¶tig%<assign%>-Eigenschaft %qs verwendet Bitfeld-Instanzvariable %qs%<assume%>-Attribut auf hÃ¶chster Ebene%<assume%>-Attribut ohne darauffolgendes %<;%>%<async%>-Ausdruck muss ganzzahlig sein%<atexit%> fehlgeschlagen%<atomic%>-Eigenschaft %qs verwendet Bitfeld-Instanzvariable %qs%<atomic_cancel%>%<atomic_default_mem_order%>-Klausel wird lexikalisch nach dem ersten %<atomic%>-Konstrukt ohne Speicherreihenfolge-Klausel verwendetStringliteral fÃ¼r %<attr%> darf kein Komma enthaltenStringliteral fÃ¼r %<attr%> muss mit %<ompx_%> beginnen%<auto%> kann nur fÃ¼r Variablen oder Funktionsdeklarationen angegeben werdenBedeutung von %<auto%> Ã¤ndert in C++11 die Bedeutung; Bitte entfernen%<auto%> steht in Konflikt mit anderen OpenACC-Schleifenspezifizierern%<auto%> in leerer Deklaration im Datei-GÃ¼ltigkeitsbereich%<auto%> ist in Aliasdeklaration nicht erlaubt%<auto%>-Parameter darf in diesem Kontext nicht verwendet werden%<auto%> erfordert einen einfachen Bezeichner, optional mit Attributen, als Deklarator%<auto%> mit %<constexpr%> verwendet%<auto(x)%> kann nicht eingeschrÃ¤nkt werden%<auto{x}%> ist erst ab %<-std=c++23%> oder %<-std=gnu++23%> verfÃ¼gbar%<auto{x}%> kann nicht eingeschrÃ¤nkt werden%<auto{x}%> ist erst ab %<-std=c++23%> oder %<-std=gnu++23%> verfÃ¼gbar%<await_suspend%> muss %<void%>, %<bool%> oder ein Koroutine-Handle zurÃ¼ckgeben%<bank_switch%> hat auf Nicht-Interrupt-Funktionen keine AuswirkungSuffix %<bf16%> oder %<BF16%> an Gleitkommakonstanten ist erst mit %<-std=c++23%> oder %<-std=gnu++23%> verfÃ¼gbar%<bind%>-Klausel nicht auf einem %<loop%>-Konstrukt, das nicht in einem anderen OpenMP-Konstrukt geschachtelt ist%<bind(parallel)%> an einem %<loop%>-Konstrukt, das in einem %<simd%>-Konstrukt geschachtelt ist%<bind(teams)%> an einer %<loop%>-Region, die nicht streng innerhalb einer %<teams%>-Region geschachtelt istder Operand der %<break%>-Anweisung %qE bezieht sich nicht auf eine benannte Schleife oder eine %<switch%>-Anweisungder Operand %qE der %<break%>-Anweisung bezieht sich nicht auf eine benannte Schleife oder eine %<switch%>-Anweisung; meinten Sie %qs?der Operand %qE der %<break%>-Anweisung bezieht sich auf eine %<switch%>-Anweisung auÃŸerhalb des Anweisungsrumpfs%<builtin_return_address%> enthÃ¤lt nur 2 Adressbytes%<cancel for%> innerhalb von %<nowait%>-for-Konstrukt%<cancel for%> innerhalb von %<ordered%>-for-Konstrukt%<cancel sections%> innerhalb %<nowait%>-Abschnittskonstrukt%<catch%> wird nicht unterstÃ¼tzt%<co_await%> kann nicht in Standardargumenten verwendet werden%<co_yield%> kann nicht in Standardargumenten verwendet werden%<concept%> ist erst ab %<-std=c++20%> oder mit %<-fconcepts%> verfÃ¼gbar%qs ist %<const%> und darf daher nicht als %<mutable%> deklariert seinFunktionsspezifizierer %<const%> und %<volatile%> an %qD ungÃ¼ltig in FelddeklarationFunktionsspezifizierer %<const%> und %<volatile%> an %qD ungÃ¼ltig in ParameterdeklarationFunktionsspezifizierer %<const%> und %<volatile%> an %qD ungÃ¼ltig in TypdeklarationFunktionsspezifizierer %<const%> und %<volatile%> an %qD ungÃ¼ltig in Variablendeklaration%<const%> kann nur fÃ¼r Objekte und Funktionen angegeben werden%<const%>-qualifizierter %<depobj%>-Ausdruck%<const%>-qualifiziertes %qE darf nur in %<shared%>- oder %<firstprivate%>-Klauseln vorkommen%<const%>-qualifiziertes %qE ohne %<mutable%>-Element darf nur in %<shared%>- oder %<firstprivate%>-Klauseln vorkommen%<const%>-, %<volatile%>- oder %<__restrict%>-qualifizierter Typ %qT in %<#pragma omp declare reduction%>%<consteval%>-Funktion %q+D Ã¼bersteuert nicht-%<consteval%>-FunktionKontrollfluss fÃ¼r %<constexpr%>-Aufruf fÃ¤llt hinten aus der Funktion%<constexpr%>-Konstruktor hat keinen leeren KÃ¶rper%<constexpr%>-Konstruktor fÃ¼r Union %qT muss genau ein nicht-statisches Datenelement initialisieren%<constexpr%>-Destruktoren sind erst ab %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarAuswertungstiefe von %<constexpr%> Ã¼berschreitet HÃ¶chstwert %d (%<-fconstexpr-depth=%> verwenden, um dies zu erhÃ¶hen)Anzahl der Evaluierungsoperationen in %<constexpr%> Ã¼berschreitet HÃ¶chstwert %wd (%<-fconstexpr-ops-limit=%> verwenden, um diesen zu erhÃ¶hen)%<constexpr%> in leerer Deklaration%<constexpr%>-Initialisierer fÃ¼r einen binÃ¤ren Gleitkommatypen hat dezimalen Typ%<constexpr%>-Initialisierer fÃ¼r einen reellen Typen hat komplexen TypInitialisierer fÃ¼r %<constexpr%> ist kein konstanter arithmetischer Ausdruck%<constexpr%>-Initialisierer ist nicht im Typen des Objekts darstellbarInitialisierer fÃ¼r %<constexpr%>-Ganzzahl ist kein konstanter Ganzzahlausdruck%<constexpr%>-Lambda ist nur mit %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbarAnzahl der SchleifendurchlÃ¤ufe in %<constexpr%> Ã¼berschreitet HÃ¶chstwert %d (%<-fconstexpr-loop-limit=%> verwenden, um diesen zu erhÃ¶hen)%<constexpr%> erforderlich fÃ¼r Initialisierung innerhalb der Klasse des statischen Datenelements %q#D mit nicht eingebautem Typ%<constexpr%>-Objekt hat variabel geÃ¤nderten TypInitialisierer fÃ¼r %<constexpr%>-Zeiger ist nicht nullstatisches Datenelement %qD (%<constexpr%>) muss Initialisierung haben%<constexpr%> mit %qE verwendet%<constexpr%>-Variable %qD hat variabel modifizierten Typ %qTAttribut %<constinit%> kann nur fÃ¼r Variablen verwendet werden, die Â»staticÂ« oder threadlokel sind%<constinit%> ist am RÃ¼ckgabetyp einer Funktion nicht erlaubt%<constinit%>-Angabe ungÃ¼ltig fÃ¼r Funktion %qs%<constinit%>-Variable %qD muss eine konstante Initialisierung habender Operand %qE der %<continue%>-Anweisung bezieht sich nicht auf eine benannte Schleifeder Operand %qE der %<continue%>-Anweisung bezieht sich nicht auf eine benannte Schleife; meinten Sie %qs?der Operand %qE der %<continue%>-Anweisung bezieht sich auf eine benannte %<switch%>-AnweisungAttribut %qE fÃ¼r %<counted_by%> in Konflikt mit vorheriger Deklaration %qEArgument %<counted_by%> ist kein Bezeichner%<critical%>-Region darf innerhalb einer gleichnamigen %<critical%>-Region nicht eng geschachtelt sein%<decl-specifier%> in Deklaration von Ableitungshinweis%<declare %s%> muss direkt von einer Funktionsdeklaration oder -definition gefolgt sein%<declare variant%>-Kandidat %qD hier deklariert%<declare variant%> fÃ¼r Konstruktor %qD%<declare variant%> an %qD mit Vorgabewert%<declare variant%> an gelÃ¶schter %qD%<declare variant%> fÃ¼r Destruktor %qD%<declare variant%> an virtueller %qD%<decltype%> kann die Adresse der Ã¼berladenen Funktion nicht auflÃ¶sen%<decltype%> wird zu %qT ausgewertet, und das ist weder eine Klasse noch ein AufzÃ¤hlungstyp%<decltype(auto)%> darf nicht CV-qualifiziert seindie Typangabe %<decltype(auto)%> ist erst mit %<-std=c++14%> oder %<-std=gnu++14%> verfÃ¼gbar%<default%>-Marke nicht innerhalb einer switch-Anweisung%<default%>-Ziel wurde nicht gesetzt%<delete%>-Grund ist erst mit %<-std=c++2c%> oder %<-std=gnu++2c%> verfÃ¼gbar%<delete[]%> ist kein Konstantenausdruck%<depend%>-Klausel erfordert Aktionsklauseln mit %<targetsync%>-Interop-Typ%<depend%>-Klausel mit %<depobj%>-AbhÃ¤ngigkeitstyp auf Arrayabschnitt%<depend(%s)%> ist nur in %<omp ordered%> erlaubt%<depobj%>-AbhÃ¤ngigkeitstyp in %<depend%>-Klausel von %<depobj%> angegebenAusdruck %<depobj%> ist kein lvalue-Ausdruck%<destroy%>-Ausdruck ist kein Lvalue-AusdruckEreignishandle in %<detach%>-Klausel ist vom Typ %qT statt des erwarteten %<omp_event_handle_t%>%<detach%>-Klausel darf nicht zusammen mit %<mergeable%>-Klausel verwendet werden%<device%>-Klausel mit %<ancestor%> ist nur an einem %<target%>-Konstrukt erlaubt%<device%>-ID muss ganzzahlig seindie %<device_type%>-Klausel muss 'any' angeben, wenn sie mit einer %<indirect%>-Klausel verwendet wirdArgument %<dim%> des intrinsischen %qs bei %L ist kein gÃ¼ltiger CodimensionsindexArgument %<dim%> des intrinsischen %qs bei %L ist kein gÃ¼ltiger DimensionsindexArgument %<dim%> des intrinsischen Â»%sÂ« bei %L ist kein gÃ¼ltiger DimensionsindexAusdruck fÃ¼r %<dist_schedule%>-ChunkgrÃ¶ÃŸe muss ganzzahlig sein%<distribute%>-Region muss innerhalb eines %<teams%>-Konstrukts streng geschachtelt sein%<dynamic_cast%> ist nicht mit %<-fno-rtti%> erlaubt%<dynamic_cast<%#T>(%#D)%> kann nie erfolgreich sein%<else%> ohne vorheriges %<if%>%<enum %E%> in Anfangsdeklaration einer %<for%>-Schleife deklariert%<enum%> wurde sowohl mit als auch ohne zugrundeliegendem festen Typ deklariert%<enum%> deklariert aber ohne festen zugrundeliegenden Typen definiertder auf %<enum%> basierende Typ ist zu der vorherigen Deklaration inkompatibelauf %<enum%> basierender Typ darf hier nicht angegeben werden%<explicit%> kann nur fÃ¼r Konstruktoren angegeben werden%<explicit%> in Â»friendÂ«-Deklaration%<explicit%> auÃŸerhalb einer Klassendeklaration%<explicit(bool)%> ist erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbar%<export%> ist kein Teil der folgenden module-directive%<extern "C"%>-Bindung beginnt hierAttribut %<externally_visible%> wirkt sich nur auf Ã¶ffentliche Objekte ausSuffix %<f%d%> oder %<F%d%> an Gleitkommakonstanten ist erst mit %<-std=c++23%> oder %<-std=gnu++23%> verfÃ¼gbar%<fallthrough%>-Attribut auf hÃ¶chster Ebene%<fallthrough%>-Attribut ohne darauffolgendes %<;%>%<fallthrough%>-Attribut mit einem Parameter angegebenDirektive des Attributes %<fast_interrupt%> ignoriert%<filter%>-Ausdruck muss ganzzahlig seinAttribut %<flatten%> wird an Aliasen ignoriert%<flush%>-Liste wurde zusammen mit Speicherreihenfolge-Klausel angegeben%<fopen%>: %s: %mAnfangsdeklarationen in %<for%>-Schleifen sind nur im C99- oder C11-Modus erlaubt%<friend%> kann nur innerhalb einer Klasse angegeben werden%<friend%> auÃŸerhalb einer Klasse verwendet%<full%>-Klausel darf nicht zusammen mit %<partial%>-Klausel verwendet werdenUnterstÃ¼tzung fÃ¼r %<function_profiler%>%<function_profiler%>-UnterstÃ¼tzung fÃ¼r MMIX%<gang%>-Schleife in %<gang-single%>-RegionAusdruck fÃ¼r %<gang%>-Nummer muss ganzzahlig seinWert von %<gang%> muss positiv seinstatischer %<gang%>-Ausdruck muss ganzzahlig seinstatischer %<gang%>-Ausdruck muss positiv sein%<generic%>-CPU kann nur fÃ¼r %<-mtune=%>-Schalter verwendet werden%<generic%>-CPU kann nur fÃ¼r %<target("tune=")%>-Schalter verwendet werden%<getter%>-Attribut der Eigenschaft %qD in Konflikt mit vorheriger DeklarationAttribut %<gnu_inline%> vorhanden bei %q+D%<goto%> innerhalb einer %<constexpr%>-Funktion ist erst mit %<-std=c++23%> oder %<-std=gnu++23%> verfÃ¼gbar%<goto%> ist kein Konstantenausdruck%<gp_offset%> (%ld) oder %<end_offset%> (%ld) ist kleiner als null%<grainsize%>-Klausel darf nicht zusammen mit %<num_tasks%>-Klausel verwendet werdenAusdruck fÃ¼r %<grainsize%> muss ganzzahlig seinWert von %<grainsize%> muss positiv sein%<h%> auf nicht-Register-Operand angewandt%<hard-float%> MIPS16-Code fÃ¼r andere ABIs als o32 und o64%<has_device_addr%> fÃ¼r %qD bedeutet nicht, dass %<is_device_ptr%> fÃ¼r %<need_device_ptr%> erforderlich ist%<hint%>-Ausdruck muss ganzzahlig und konstant sein%<hint%>-Ausdruck muss ganzzahlig sein%<host_data%>-Konstrukt bei %L erfordert %<use_device%>-Klauseldas %<host_data%>-Konstrukt erfordert eine %<use_device%>-Klausel%<if consteval%> ist erst mit %<-std=c++23%> oder %<-std=gnu++23%> verfÃ¼gbar%<if consteval%> erfordert zusammengesetzte Anweisung%<if constexpr%> ist nur mit %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbar%<ifunc%>-AuflÃ¶ser fÃ¼r %qD muss %qT zurÃ¼ckgeben%<ifunc%>-AuflÃ¶ser fÃ¼r %qD sollte %qT zurÃ¼ckgeben%<inbranch%>-Klausel ist inkompatibel mit %<notinbranch%>Attribut %<indirect_call%> bezieht sich nicht auf %<static%>-Funktionender %<init%>-Klausel fehlt der %<targetsync%>-Modifikator%<inline%> kann nur fÃ¼r Funktionen angegeben werden%<inline%> in leerer Deklaration%<inline%> ist nicht in Deklaration der friend-Template-Spezialisierung %qD erlaubt%<inline%> fÃ¼r friend-Klassen-Deklaration angegeben%<inline%> ungÃ¼ltig fÃ¼r auÃŸerhalb des globalen GÃ¼ltigkeitsbereiches deklarierte Funktion %qs%<inline%>-Spezifizierer ungÃ¼ltig fÃ¼r Variable %qD mit GÃ¼ltigkeitsbereich Block%<inscan%>-%<reduction%>-Klausel am %qs-Konstrukt%<inscan%>-%<reduction%>-Klausel bei Konstruktion auÃŸer %<for%>, %<simd%>, %<for simd%>, %<parallel for%>, %<parallel for simd%>%<inscan%>-%<reduction%>-Klausel wird zusammen mit %<linear%>-Klausel an einer Variable verwendet, die kein Schleifeniterator ist%<inscan%>-%<reduction%>-Klausel mit Arrayabschnitt%<inscan%>-REDUCTION-Klausel an einem anderen Konstrukt als DO, SIMD, DO SIMD, PARALLEL DO, PARALLEL DO SIMD bei %Ldie Klausel %<inscan%> darf nicht zusammen mit nicht-%<inscan%>-%<reduction%> am selben Konstrukt vorkommen%<inscan%> und nicht-%<inscan%>-%<reduction%>-Klauseln am selben Konstrukt bei %Ldie CPU %<intel%> kann nur fÃ¼r den Schalter %<-mtune=%> verwendet werdendie CPU %<intel%> kann nur fÃ¼r das Attribut %<target("tune=")%> verwendet werden%<interrupt_thread%> ist nur auf Fido verfÃ¼gbar%<is_device_ptr%> fÃ¼r %qD bedeutet nicht, dass %<has_device_addr%> fÃ¼r %<need_device_addr%> erforderlich istModifizierer %<iterator%> ist unvertrÃ¤glich mit %qs%<iterator%>-Modifizierer darf nicht bei einem %<depobj%>-Konstrukt angegeben sein%<l1-cache-size%>-Parameter ist keine Zweierpotenz: %d%<lang_*%> check: failed in %s, at %s:%d%<lastprivate%>-Klausel an einem %<loop%>-Konstrukt bezieht sich auf eine Variable %qD, die nicht der Schleifeniterator ist%<linear%>-Klausel fÃ¼r Variable, die keine Schleifeniterationsvariable ist, wurde fÃ¼r ein mit %<distribute%> kombiniertes Konstrukt angegeben%<linear%>-Klausel darf nicht zusammen mit %<ordered%>-Klausel angegeben werden, wenn das alleinstehende %<ordered%>-Konstrukt darin geschachtelt istSchrittweite %qE der %<linear%>-Klausel muss konstant oder ein Parameter seinSchrittweite der %<linear%>-Klausel muss ganzzahlig sein%<linear%>-Klauselschritt ist ein Parameter %qD, der nicht in der %<uniform%>-Klausel angegeben ist%<location_t%> ist nicht als ein Typ definiert%<locus%> ist nicht als ein Typ definiert%<long long long%> ist fÃ¼r GCC zu lang%<long%> switch-Ausdruck nicht nach %<int%> konvertiert in ISO C%<lp_array%> passt nicht zum %<region_tree%>%<lp_array%> ist fÃ¼r lp %i beschÃ¤digt%<lto_obj_file_open()%> failed%<main%> als %<_Noreturn%> deklariert%<map%>-Klausel mit einem anderen map-type-Modifikator als %<always%>, %<close%> oder %<present%>%<memset%> mit konstanter LÃ¤nge 0 verwendet; das kÃ¶nnte heiÃŸen, dass die Parameter vertauscht sindim Aufruf von %<memset%> ist die LÃ¤nge gleich der Anzahl der Elemente angegeben, ohne sie mit der ElementgrÃ¶ÃŸe zu multiplizierenAttribut %<ms_hook_prologue%> ist mit %<-mfentry%> fÃ¼r 32 Bit nicht vertrÃ¤glichAttribut %<ms_hook_prologue%> ist mit geschachtelter Funktion nicht vertrÃ¤glich%<msp430_select_hwmult_lib%> erfordert mindestens ein Argument%<msp430_set_driver_var%> erwartet 2 Argumente%<mutable%>-Lambdaangabe mit explizitem Objektparameter%<mutexinoutset%>-Art in %<depend%>-Klausel bei einem %<taskwait%>-Konstrukt%<namespace %E%> ist mehrdeutig%<namespace%>-Definition ist hier nicht erlaubt%<need_device_addr%> ist fÃ¼r C ungÃ¼ltig%<need_device_addr%> ist noch nicht unterstÃ¼tzt%<new%> einer %<initializer_list%> fÃ¼hrt nicht zu einer lÃ¤ngeren Lebenszeit des zugrundeliegenden Arrays%<new%> fÃ¼r Typ %qT mit erweiterter Ausrichtung %d%<nogroup%>-Klausel darf nicht zusammen mit %<reduction%>-Klausel verwendet werdenAttribut %<nonatomic%> der Eigenschaft %qD in Konflikt mit vorheriger Deklaration%<nonmonotonic%>-Planungsmodifizierer zusammen mit %<ordered%>-Klausel angegeben%<nonnull%>-Argument %qD wird mit NULL verglichen%<noreturn%>-Funktion kehrt zurÃ¼ck%<nowait%>-Klausel darf nicht zusammen mit %<copyprivate%>-Klausel verwendet werdenWert von %<num_tasks%> muss positiv seinuntere Grenze %qE von %<num_teams%> ist grÃ¶ÃŸer als obere Grenze %qEWert von %<num_teams%> muss positiv seinWert von %<num_threads%> muss positiv sein%<object.TypeInfo%> kann nicht mit %<-fno-rtti%> verwendet werden%<object.TypeInfo%> konnte nicht gefunden werden, wird aber implizit verwendet%<offsetof%> innerhalb von Typ %qT (der kein Standardlayout hat) ist bedingt unterstÃ¼tzt%<omp requires reverse_offload%> erfordert mindestens %<sm_35%> fÃ¼r %<-foffload-options=nvptx-none=-march=%> â€“ fÃ¼r diesen GerÃ¤tetyp wird die Offload-Codegenerierung ausgeschaltetAttribut %<omp::%E%> erfordert Argument%<omp::%E%> darf in diesem Kontext nicht angegeben werden%<omp::%s%> darf in diesem Kontext nicht angegeben werden%<omp_all_memory%> bei %L ist in dieser Klausel nicht erlaubt%<omp_all_memory%> darf nur in OpenMP-%<depend%>-Klausel verwendet werden%<omp_all_memory%> wird mit %<depend%>-Art auÃŸer %<out%> oder %<inout%> verwendet%<omp_all_memory%> wird bei %C mit DEPEND-Art auÃŸer OUT oder INOUT verwendet%<omp_all_memory%> wird mit AbhÃ¤ngigkeitsart auÃŸer OUT oder INOUT verwendet, bei %L%<omp_all_memory%>, bei %L deklariert, darf nur in der OpenMP-DEPEND-Klausel verwendet werden%<operator %s%>%<operator %s%> in %<%s%E%>%<operator delete%> muss Typ %qT zurÃ¼ckgeben%<operator delete%> nimmt Typ %qT als ersten Parameter%<operator delete[]%> kann kein zerstÃ¶rendes %<delete%> sein%<operator new%> darf nicht NULL zurÃ¼ckgeben, auÃŸer er ist mit %<throw%> deklariert (oder %<-fcheck-new%> ist eingeschaltet)%<operator new%> muss Typ %qT zurÃ¼ckgeben%<operator new%> nimmt Typ %<size_t%> (%qT) als ersten Parameter%<operator%s%>%<operator%s%> in %<%E %s %E%>%<operator%s%> in %<%E%s%>%<operator%s%> in %<%s%E%>%<operator=%> sollte eine Referenz auf %<*this%> zurÃ¼ckgeben%<operator[]%>%<operator[]%> in %<%E[%E]%>%<order%>-Klausel darf nicht zusammen mit %<ordered%>-Klausel verwendet werden%<ordered simd threads%> muss innerhalb einer %<%s simd%>-Region eng geschachtelt sein%<ordered%> %<simd%> muss innerhalb einer %<simd%>-Region eng geschachtelt sein%<ordered%>-Klauselparameter ist weniger als %<collapse%>%<ordered%>-Klausel zusammen mit generierten Schleifen verwendet%<ordered%>-Klausel mit Parameter in %<for%>-Schleife Ã¼ber einen Bereich%<ordered%>-Konstrukt mit %<depend%>-Klausel muss innerhalb einer %<ordered%>-Schleife eng geschachtelt sein%<ordered%>-Konstrukt mit %qs-Klausel muss innerhalb einer Schleife mit %<ordered%>-Klausel eng geschachtelt sein%<ordered%>-Konstrukt ohne %<doacross%>- oder %<depend%>-Klauseln ist mit einer Schleife verbunden, in der das %<collapse%>-Argument %wd sich vom %<ordered%>-Argument %wd unterscheidet%<ordered%>-Konstrukt ohne %<doacross%>- oder %<depend%>-Klauseln darf nicht dieselbe Bindungsregion wie ein %<ordered%>-Konstrukt mit diesen Klauseln haben%<ordered%>-Region darf innerhalb einer Region, die %<critical%>, %<ordered%>, expliziten %<task%> oder %<taskloop%> ist, nicht eng geschachtelt sein%<ordered%>-Region muss eng geschachtelt sein, wenn sie innerhalb einer Schleifenregion mit %<ordered%>-Klausel auftrittdie Klauseln %<otherwise%> oder %<default%> mÃ¼ssen als letztes in %<metadirective%> angegeben werdendie %<otherwise%>- oder %<default%>-Klausel muss als letzte in %<metadirective%> bei %C vorkommenArgument fÃ¼r %<partial%> muss ein positiver, ganzzahliger Ausdruck seindas Pragma %<pch_preprocess%> sollte nur mit %<-fpreprocessed%> verwendet werden%<pex_init%> failed: %m%<#pragma omp error%> gefunden%<#pragma omp error%> gefunden: %s%<pragma omp requires%> erfordert mindestens eine KlauselAusdruck fÃ¼r %<priority%> muss ganzzahlig seinWert von %<priority%> muss positiv seinAttribut %<readonly%> steht mit Attribut %<setter%> in KonfliktAttribut %<readonly%> der Eigenschaft %qD in Konflikt mit vorheriger Deklaration%<region_array%> passt nicht zum %<region_tree%>%<region_array%> ist fÃ¼r Region %i beschÃ¤digt%<register%> in leerer Deklaration im Datei-GÃ¼ltigkeitsbereich%<register%>-Speicherklassenangabe verwendet%<reinterpret_cast%> von Ganzzahl zu Zeiger%<reinterpret_cast%> von Typ %qT in Typ %qT entfernt QualifiziererEin %<reinterpret_cast%> ist kein konstanter Ausdruck%<reinterpret_cast<%T>(%E)%> ist kein Konstantenausdruck%<requires%> ist erst ab %<-std=c++20%> oder mit %<-fconcepts%> verfÃ¼gbarder %<requires%>-Selektor wird noch nicht unterstÃ¼tzt%<return%> mit Wert in void zurÃ¼ckgebender Funktion%<return%> ohne Wert in nicht-void zurÃ¼ckgebender Funktion%<return_void%> wurde hier deklariertAusdruck der %<safelen%>-Klausel erfordert positiven konstanten Ganzzahlausdruck%<scalar_storage_order%> wird nicht unterstÃ¼tzt, da die Bytereihenfolge nicht einheitlich ist%<scope%>-Region darf nicht innerhalb einer Region eng geschachtelt sein, die arbeitsteilend, %<loop%>, explizit %<task%>, %<taskloop%>, %<critical%>, %<ordered%>, %<master%> oder %<masked%> istdas %<score%>-Argument muss ein konstanter ganzzahliger Ausdruck seindas %<score%>-Argument bei %C muss ein konstanter ganzzahliger Ausdruck seindas %<score%>-Argument darf nicht negativ seindas %<score%>-Argument bei %C darf nicht negativ sein%<score%> kann nicht in Traits in der Trait-Selektor-Menge %qs angegeben werden%<score%> kann nicht in Traits im trait-selector-set %qs bei %C angegeben werdendas %<section("%s")%>-Attribut der Hauptfunktion verhindert %<-mno-call-main%>%<seq%> Ã¼bersteuert andere OpenACC-Schleifenspezifizierer%<setter%>-Attribut der Eigenschaft %qD in Konflikt mit vorheriger Deklaration%<setter%> ist hier angegebenArgument Â»shapeÂ« des intrinsischen Â»reshapeÂ« bei %L hat mehr als %d ElementeArgument %<shape%> des intrinsischen %<reshape%> bei %L muss ein Feld konstanter GrÃ¶ÃŸe seinArgument fÃ¼r %<signed _BitInt%> muss mindestens 2 seinAusdruck der %<simdlen%>-Klausel erfordert positiven konstanten Ganzzahlausdruck%<simdlen%>-Klauselwert ist grÃ¶ÃŸer als %<safelen%>-Klauselwert%<sizeof%> auf ein Bitfeld angewandt%<sizeof%> auf Array-Funktionsparameter %qE gibt die GrÃ¶ÃŸe von %qT zurÃ¼ckArgument von %<sizeof...%> muss mit Klammern umschlossen werden%<sizes%>-Argument muss eine positive, ganzzahlige Konstante sein%<soft-float%> und long-double-128 sind unvertrÃ¤glichArgument %<source%> des intrinsischen %<shape%> bei %L darf kein Feld impliziter GrÃ¶ÃŸe sein%<stack_offset%> muss ein Vielfaches von 4 sein%<stack_offset%> muss mindestens 4 sein%qs ist %<static%> und darf daher nicht als %<mutable%> deklariert seinLambda-Spezifizierer %<static%> mit explizitem ObjektparameterLambda-Spezifizierer %<static%> mit Lambda-Fang%<static%> darf nicht bei der Definition (im Gegensatz zu Deklaration) eines statischen Datenelementes verwendet werden%<static%> darf nicht verwendet werden, wenn die variable ArraylÃ¤nge nicht angegeben ist%<static%> darf ohne eine ArraygrÃ¶ÃŸe nicht verwendet werden%<static%> ist fÃ¼r auÃŸerhalb des globalen GÃ¼ltigkeitsbereiches deklarierte Funktion %qs ungÃ¼ltig%<static_assert%> ohne Meldung, die keine Zeichenkette ist, ist erst ab %<-std=c++2c%> oder %<-std=gnu++2c%> verfÃ¼gbar%<static_assert%> ohne Text ist erst ab %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbar%<static_cast%> von Typ %qT in Typ %qT entfernt Qualifizierer%<std::%s%> ist im Header %qs definiert; um das zu beheben, kÃ¶nnten Sie %<#include %s%> hinzufÃ¼gen%<std::%s%> ist erst ab %s verfÃ¼gbar%<std::is_constant_evaluated%> wertet in einer nicht-%<constexpr%>-Funktion immer zu false aus%<std::is_constant_evaluated%> wertet innerhalb von %<if constexpr%> immer zu true aus%<std::is_constant_evaluated%> wertet innerhalb einer %<consteval%>-Funktion immer zu true aus%<std::is_constant_evaluated%> wertet immer zu true aus, wenn es prÃ¼ft, ob eine trivial-leere Iterationsanweisung eine trivial-endlose Schleife ist%<std::source_location::__impl%> enthÃ¤lt nicht nur nicht-statische Datenelemente %<_M_file_name%>, %<_M_function_name%>, %<_M_line%> und %<_M_column%>%<std::tuple_element<%u, %T>::type%> ist %<void%>%<std::tuple_size<%T>::value%> ist kein konstanter Ganzzahlausdruckdie Direktive %<strong%>-%<using%> wird nicht mehr unterstÃ¼tzt%<strub%>-Modus %qE ausgewÃ¤hlt fÃ¼r %qD, es wurde jedoch %qE angefordert%<struct %E%> in Anfangsdeklaration einer %<for%>-Schleife deklariertder %<switch%>-Name ist hier definiertArgument %qs fÃ¼r Attribut %<symver%> muss ein oder zwei %<@%> enthaltenArgument des Attributs %<symver%> ist keine ZeichenkettenkonstanteAttribut %<symver%> bezieht sich nur auf SymboleAttribut %<symver%> gilt nur fÃ¼r Funktionen und VariablenFehler bei %<sysctl%> fÃ¼r %<kern.osversion%>: %m%<target%>-Attribut wird auf dieser Maschine nicht unterstÃ¼tzt%<target%>-Konstrukt mit geschachteltem %<teams%>-Konstrukt enthÃ¤lt Direktiven auÃŸerhalb des %<teams%>-Konstrukts%<target("rtd")%> wird im 64-Bit-Modus ignoriert%<target("sseregparm")%> verwendet, ohne dass SSE eingeschaltet ist%<target("tune=x86-64")%> ist veraltet; stattdessen entsprechend %<target("tune=k8")%> oder %<target("tune=generic")%> verwenden%<target()%>-Attribut: Architektur erscheint mehr als einmal%<target()%>-Attribut: CPU erscheint mehr als einmal%<target()%>-Attribut: unbekannte PrioritÃ¤t %qs%<target()%>-Attribut: PrioritÃ¤t kommt mehr als einmal vor%<target()%>-Attribut: tune erscheint mehr als einmal%<target()%>-Attribut: unbekannte CPU %qs%<Ziel()%>-Attribut: unbekanntes TUNE %qsdas Attribut %<target_clones%> erfordert GLIBC (2.23 oder neuer), die Hardware-FÃ¤higkeits-Bits exportiert%<target_device%>-Selektormenge innerhalb einer %<target%>-Direktive%<target_version%>-Attribut wird auf dieser Maschine nicht unterstÃ¼tzt%<task%>-Reduktionsmodifizierer bei einem Konstrukt mit %<nowait%>-KlauselKonstrukt %<taskwait%> mit %<nowait%>-Klausel, aber ohne %<depend%>-Klauseln%<teams%>-Konstrukt muss innerhalb eines %<target%>-Konstrukts eng geschachtelt sein, oder in Ã¼berhaupt keinem OpenMP-Konstrukt geschachtelt seindas SchlÃ¼sselwort %<template%> ist im Destruktornamen nicht erlaubt%<template%> muss auf einen nested-name-specifier folgen%<this%> ist in OpenMP nur innerhalb von %<declare simd%>-Klauseln erlaubt%<this%> kann nicht per Referenz eingefangen werden%<this%> ist fÃ¼r explizite Objektmemberfunktionen nicht verfÃ¼gbar%<this%> ist fÃ¼r statische Elementfunktionen nicht verfÃ¼gbar%<this%> darf in diesem Kontext nicht verwendet werden%<this%> muss der erste Spezifizierer in einer Parameterdeklaration sein%<this%> ist in %<allocate%>-Klausel nicht erlaubt%<this%>-Angabe in einem %<requires-expression%>-Parameter%<this%>-Angabe in Template-Parameterdeklaration%<this%> wurde fÃ¼r diese Lambda-Funktion nicht aufgefangen%<thread_limit%>-Ausdruck muss ganzzahlig seinWert von %<thread_limit%> muss positiv sein%<threadprivate%> %qD ist weder Datei-, Namens- noch Blockbereichsvariable%<threadprivate%> Direktive %qE nicht in Definition von %qT%<threadprivate%> %qE hat unvollstÃ¤ndigen Typen%<throw%> wird immer %<terminate%> aufrufenArgument fÃ¼r %<tile%> erfordert ganzzahligen Typ%<tile%>-Argument muss eine positive, ganzzahlige Konstante sein%<tile%>-Konstrukt erzeugt %d Schleifen mit kanonischer Form, aber %d Schleifen werden benÃ¶tigtFunktionsaufruf von %<transaction_may_cancel_outer%> nicht innerhalb von Ã¤uÃŸerer Transaktion oder %<transaction_may_cancel_outer%>%<transaction_safe_dynamic%> kann nur fÃ¼r virtuelle Funktionen angegeben werden%<tree%> ist nicht als ein Zeigertyp definiert%<tree%> ist nicht als ein Typ definiert%<try%> innerhalb einer %<constexpr%>-Funktion ist erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbar%<typedef%>-Angabe ist unvertrÃ¤glich mit %qs%<typedef%> mit %<auto%> verwendet%<typedef%> wurde in dieser Deklaration ignoriert%<typeid%> ist kein konstanter Ausdruck, da %qE polymorphen Typ hat%<typeid%> des qualifizierten Funktionstyps %qT%<typeid%>-Operator kann nicht in einem Konstanten-Ausdruck auftreten%<typename %T::%D%> benennt %q#D, das ist jedoch kein Typ%<typename %T::%D%> benennt %q#T, was kein Klassentemplate ist%<typeof%> auf ein Bitfeld angewandt%<union %E%> in Anfangsdeklaration einer %<for%>-Schleife deklariert%<unroll%>-Konstrukt mit %<partial%>-Klausel erzeugt nur eine Schleife mit kanonischer Form, aber %d Schleifen werden benÃ¶tigt%<uses_allocators%>-Klausel mit Traits und Speicherbereichen%<using enum%> von %qT vor seinem enum-specifier%<using enum%> des abhÃ¤ngigen Typen %qT%<using enum%> an unvollstÃ¤ndigem Typ %qT%<using enum%> an Nicht-AufzÃ¤hlungstyp %q#T%<using enum%> ist nur mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbar%<using%> mit GÃ¼ltigkeitsbereich in enum-Typ %q#T ist erst ab %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbardas Makro %<va_start%> wird mit zusÃ¤tzlichen Argumenten auÃŸer dem Bezeichner des letzten benannten Arguments verwendet%<va_start%> in Funktion mit fester Parameteranzahl verwendet%<vec_lvsl%> ist fÃ¼r Little-Endian veraltet; verwenden Sie Zuweisungen fÃ¼r unausgerichtete Speicherzugriffe%<vec_lvsr%> ist fÃ¼r Little-Endian veraltet; verwenden Sie Zuweisungen fÃ¼r unausgerichtete SpeicherzugriffeAusdruck fÃ¼r %<vector%>-LÃ¤nge muss ganzzahlig seinWert der %<vector%>-LÃ¤nge muss positiv sein%<verify_gimple%> failed%<verify_marked_backedges%> failed%<virtual%> kann nur fÃ¼r Funktionen angegeben werden%<virtual%> auÃŸerhalb einer Klassendeklaration%<virtual%> mehr als einmal in Basisspezifikation angegeben%<void%> kann nicht als einzelner Parameter qualifiziert werden%<void%> muss der einzige Parameter sein%<void%> muss der einzige Parameter sein und unbenannt%<volatile%> kann nur fÃ¼r Objekte und Funktionen angegeben werden%<volatile%>-qualifizierter Parameter ist veraltet%<volatile%>-qualifizierter RÃ¼ckgabetyp ist veraltet%<volatile%>-qualifizierte strukturierte Bindung ist veraltet%<wait%>-Ausdruck muss ganzzahlig seinFÃ¼r %q+D darf %<warn_if_not_aligned%> nicht angegeben werden%<weak%>-Klausel erfordert atomaren GleichheitsvergleichAttribut %<weakref%> ignoriert, da Funktion bereits definiert istAttribut %<weakref%> ignoriert, da Variable bereits initialisiert istAttribut %<weakref%> sollte von Attribut %<alias%> begleitet werden%<weakref%> kann nicht versioniert werdenAusdruck fÃ¼r %<worker%>-Nummer muss ganzzahlig seinWert der %<worker%>-Nummer muss positiv seinInterner Fehler: %<||%> not valid in GIMPLE%<~%> auf booleschem Ausdruck%<~%> auf einem Ausdruck vom Typ %<bool%>%<~auto%> ist nur mit %<-std=c++14%> oder %<-std=gnu++14%> verfÃ¼gbar%@ %e%@ %e (depth %i)%@ %e (fndecl %qs, depth %i)%d Bytes des gang-privaten Speichers fÃ¼r Datenaustausch erschÃ¶pft (kann zum Beispiel mit %<-mgang-private-size=%d%> erhÃ¶ht werden)Einen Konstruktor gefunden
  %d Konstruktoren gefunden
  Einen Destruktor gefunden
  %d Destruktoren gefunden
  Interner Fehler: %d exits recorded for loop %d (having %d exits)Eine Rahmentabelle gefunden
  %d Rahmentabellen gefunden
! %e und %e gleichzeitig angegeben%e wird hier deklariert%i-Bit-Modus nicht einkompiliert%llu Bytes%q#D kann nicht mit %q#D Ã¼berladen werden%q#D steht mit vorheriger Deklaration in Konflikt%q#D steht in Konflikt mit von %qT geerbter Version%q#D hier deklariert%q#D wird hier mit interner Bindung deklariert%q#D wird hier mit Modulbindung deklariert%q#D wird hier ohne Bindung deklariert%q#D verweist nicht auf den unqualifizierten Typen und wird daher nicht zum Binden verwendet%q#D wurde hat hier ausdrÃ¼cklichen Standardwert bekommen%q#D hat unvollstÃ¤ndigen Typ%q#D verdeckt Konstruktor fÃ¼r %q#D%q#D erbt von mehreren Basis-Teilobjekten%q#D ungÃ¼ltig; eine anonyme Union kann nur nicht-statische Datenelemente haben%q#D ungÃ¼ltig; eine anonyme Union kann nur nicht-statische Datenelemente haben%q#DÂ« ist ein statisches Datenelement; es kann nur bei seiner Definition initialisiert werden%q#D ist implizit als gelÃ¶scht deklariert, da %qT einen Bewegungskonstruktor oder Bewegungs-Zuweisungsoperator deklariert%q#D wird implizit gelÃ¶scht, da die Standarddefinition ungÃ¼ltig wÃ¤re:%q#D ist in diesem Zusammenhang unzugÃ¤nglich%q#D ist kein Funktionstemplate%q#D ist kein Nicht-static-Datenelement von %qT%q#D ist kein gÃ¼ltiges Templateargument fÃ¼r Typ %qT, weil eine Referenzvariable keine konstante Adresse hat%q#D ist nicht konstant%q#D ist in diesem Zusammenhang Â»privateÂ«%q#D ist in diesem Zusammenhang Â»protectedÂ«%q#D ist %<public%>, benÃ¶tigt jedoch ein existierendes Objekt vom Typ %q#T%q#D ist volatile%q#D nicht in Klasse deklariert%q#D wurde bereits hier deklariert%q#D wurde bereits hier definiert%q#D als andere Symbolart redeklariert%q#D sollte initialisiert werden%q#D (durch einen unbenannten Typen deklariert) wird verwendet, aber nirgends definiert%q#D (durch einen unbenannten Typen deklariert) wird verwendet, aber nirgends definiert%q#D (durch lokalen Typen %qT deklariert) wird verwendet, aber nirgends definiert%q#D (durch lokalen Typen %qT deklariert) wird verwendet, aber nicht hier definiert%q#F wird implizit gelÃ¶scht, da ihre Ausnahme-Spezifikation nicht zur impliziten Ausnahme-Spezifikation %qX passt%q#T hat kein Element namens %qE%q#T hat kein Element namens %qE; meinten Sie %q#D? (zugreifbar Ã¼ber %q#D)%q#T hat kein Element namens %qE; meinten Sie %q#D? (aus diesem Kontext nicht zugreifbar)%q#T hat kein Element namens %qE; meinten Sie %qE?%q#T hat keinen benutzerdefinierten Default-Konstruktor%q#T hat Zeigertypen als Elemente%q#T hat virtuelle Basisklassen%q#T hat virtuelle Funktionen und erreichbaren nicht-virtuellen Destruktor%q#T ist keine Klasse%q#T ist weder Klasse noch Namensbereich%q#T ist kein Template%q#T ist kein gÃ¼ltiger Typ fÃ¼r einen Nicht-Typ-Parameter eines Templates%q#T definiert nur einen privaten Destruktor und hat keine Â»friendsÂ«%q#T definiert nur private Konstruktoren und hat keine Â»friendsÂ«%q#T verwendet, wo %qT erwartet wurde%q#T verwendet, wo ein Gleitkommawert erwartet wurde%q#T wurde vorher hier deklariert%q+#D kann nicht deklariert werden%q+#D ist kein static-Datenelement von %q#T%q+#D als %<final%> markiert, ist aber nicht Â»virtualÂ«%q+#D als %<override%> markiert, Ã¼berschreibt aber nichtAlias %q+D zwischen Funktion und Variable wird nicht unterstÃ¼tzt%q+D als Alias fÃ¼r externes Symbol %qE%q+D als Alias fÃ¼r undefiniertes Symbol %qE%q+D bereits mit Attribut Â»dllimportÂ« deklariert: Â»dllimportÂ« ignoriert%q+D als Â»friendÂ« deklariert%q+D als variadische Funktion deklariert%q+D als schwach deklariert, nachdem es verwendet wurde%q+D mit einer Ausnahmespezifikation deklariert%q+D ist als variadische Funktion ohne Prototyp definiert%q+D sowohl normal als auch als Attribut %qE definiert%q+D hier definiert%q+D hat unvertrÃ¤gliche Attribute %qs und %qs%q+D in Â»declare targetÂ«-Direktive hat keinen zuordenbaren Typ%q+D ist statisch, aber in Inline-Funktion %qD deklariert, was nicht statisch ist%q+D ist Ã¼blicherweise eine Funktion%q+D mit Offset %E in %qT ist nicht an %u ausgerichtet%q+D mit Offset %E in %qT ist mÃ¶glicherweise nicht an %u ausgerichtet%q+D als andere Symbolart redeklariert%q+D mit Attribut %<gnu_inline%> Â»inlineÂ« redeklariert%q+D ohne Attribut %<gnu_inline%> Â»inlineÂ« redeklariert%q+D ohne Attribut Â»dllimportÂ« redeklariert, nachdem es mit dll-Bindung referenziert wurde%qD ohne Attribut Â»dllimportÂ« redeklariert: vorheriges Â»dllimportÂ« ignoriertstatisches Datenelement %q+D innerhalb von Â»declare targetÂ«-Direktive%q+D benÃ¶tigt entweder null oder zwei Argumente%q+E ist kein Konstantenausdruck%q+F als %<static%> deklariert, aber nirgendwo definiert%q+F verwendet, aber nirgendwo definiert%q+T ist kein Literal, denn:%qD greift auf %E Byte in einer Region der GrÃ¶ÃŸe %E zu%qD greift auf %E Bytes in einer Region der GrÃ¶ÃŸe %E zu%qD greift auf %E oder mehr Bytes in einer Region der GrÃ¶ÃŸe %E zu%qD Zugriff auf %wu Byte an den Offsets %s und %s Ã¼berdeckt mÃ¶glicherweise %wu Byte an Offset %s%qD Zugriff auf %wu Byte an den Offsets %s und %s Ã¼berdeckt mÃ¶glicherweise %wu Bytes an Offset %s%qD Zugriff auf %wu Byte an den Offsets %s und %s Ã¼berdeckt mÃ¶glicherweise bis zu %wu Bytes an Offset %s%qD Zugriff auf %wu Bytes an den Offsets %s und %s Ã¼berdeckt mÃ¶glicherweise bis zu %wu Bytes an Offset %s%qD Zugriff auf %wu Byte an den Offsets %s und %s Ã¼berdeckt sich mit %wu Byte an Offset %s%qD Zugriff auf %wu Byte an den Offsets %s und %s Ã¼berdeckt sich mit %wu Bytes an Offset %s%qD Zugriff auf %wu Byte an den Offsets %s und %s Ã¼berdeckt sich mit %wu oder mehr Bytes an Offset %s%qD Zugriff auf %wu Bytes an den Offsets %s und %s Ã¼berdeckt sich mit %wu oder mehr Bytes an Offset %s%qD Zugriff auf %wu Byte an den Offsets %s und %s Ã¼berdeckt sich mit %wu bis %wu Bytes an Offset %s%qD Zugriff auf %wu Bytes an den Offsets %s und %s Ã¼berdeckt sich mit %wu bis %wu Bytes an Offset %s%qD Zugriff auf %wu Byte Ã¼berdeckt mÃ¶glicherweise %wu Byte%qD Zugriff auf %wu Byte Ã¼berdeckt mÃ¶glicherweise %wu Bytes%qD Zugriff auf %wu Byte Ã¼berdeckt mÃ¶glicherweise bis zu %wu Bytes%qD Zugriff auf %wu Bytes Ã¼berdeckt mÃ¶glicherweise bis zu %wu Bytes%qD Zugriff auf %wu Bytes an den Offsets %s und %s Ã¼berdeckt sich mit %wu Byte an Offset %s%qD Zugriff auf %wu Bytes an den Offsets %s und %s Ã¼berdeckt sich mit %wu Bytes an Offset %s%qD Zugriff auf %wu oder mehr Bytes an Offsets %s und %s Ã¼berdeckt mÃ¶glicherweise %wu Byte an Offset %s%qD Zugriff auf %wu oder mehr Bytes an Offsets %s und %s Ã¼berdeckt mÃ¶glicherweise %wu Bytes an Offset %s%qD Zugriff auf %wu oder mehr Bytes an den Offsets %s und %s Ã¼berdeckt %wu Byte an Offset %s%qD Zugriff auf %wu oder mehr Bytes an den Offsets %s und %s Ã¼berdeckt %wu Bytes an Offset %s%qD Zugriff auf %wu oder mehr Bytes an den Offsets %s und %s Ã¼berdeckt %wu oder mehr Bytes an Offset %s%qD Zugriff auf %wu oder mehr Bytes an den Offsets %s und %s Ã¼berdeckt %wu bis %wu Bytes an Offset %s%qD greift auf zwischen %E und %E Bytes in einer Region der GrÃ¶ÃŸe %E zu%qD Zugriff auf %wu bis %wu Bytes an Offsets %s und %s Ã¼berdeckt mÃ¶glicherweise %wu Byte an Offset %s%qD Zugriff auf %wu bis %wu Bytes an Offsets %s und %s Ã¼berdeckt mÃ¶glicherweise %wu Bytes an Offset %s%qD Zugriff auf %wu bis %wu Bytes an den Offsets %s und %s Ã¼berdeckt %wu Byte an Offset %s%qD Zugriff auf %wu bis %wu Bytes an den Offsets %s und %s Ã¼berdeckt %wu Bytes an Offset %s%qD Zugriff auf %wu bis %wu Bytes an den Offsets %s und %s Ã¼berdeckt %wu oder mehr Bytes an Offset %s%qD Zugriff auf %wu bis %wu Bytes an den Offsets %s und %s Ã¼berdeckt %wu bis %wu Bytes an Offset %s%qD Zugriff auf %wu bis %wu Bytes Ã¼berdeckt mÃ¶glicherweise %wu Byte%qD Zugriff auf %wu bis %wu Bytes Ã¼berdeckt mÃ¶glicherweise %wu Bytes%qD Alias zwischen unvertrÃ¤glichen Funktionstypen %qT und %qT%qD erschien bereits als Listenelement in einer %<allocate%>-Direktive%qD tritt in Daten- und Zuordnungsklauseln mehrfach auf%qD tritt in %<aligned%>-Klausel mehrfach auf%qD kommt in %<allocate%>-Klausel mehrfach vor%qD tritt in %<nontemporal%>-Klauseln mehrfach auf%qD kommt in Aktionsklausel mehrfach vor%qD tritt in Datenklausel mehrfach auf%qD kommt mehr als einmal in Datenfreigabeklauseln vor%qD tritt in Zuordnungsklauseln mehrfach auf%qD tritt in Bewegungsklausel mehrfach auf%qD tritt in Reduktionsklauseln mehrfach aufder Typ von %qD Argument %d wird zu %qT befÃ¶rdert, der Aufruf der eingebauten Funktion, die ohne Prototyp deklariert wurde, erwartet jedoch %qTder Typ von %qD Argument %d ist %qT, der Aufruf der eingebauten Funktion, die ohne Prototyp deklariert wurde, erwartet jedoch %qT%qD Argument %i ist als Attribut %<nonstring%> deklariert%qD Argument %i (als Attribut %<nonstring%> deklariert) ist kleiner als die angegebene Grenze %wu%qD Argument %i (als Attribut %<nonstring%> deklariert) ist kleiner als die angegebene Grenze [%E, %E]%qD Argument %i (als Attribut %<nonstring%> deklariert) ist mÃ¶glicherweise kleiner als die angegebene Grenze [%E, %E]Argument fÃ¼r %qD hat kein abschlieÃŸendes nul-ZeichenAttribut-Anweisung %qD wird ignoriertAttribut %qD ist bedeutungslos, da die Elemente des anonymen Namensraums lokale Symbole erhaltenAttribut %qD erfordert ein einzelnes NTBS-Argument%qD in konstantem Ausdruck aufgerufen%qD in konstantem Ausdruck aufgerufen, bevor die Definition vollstÃ¤ndig war%qD wird mit Zeiger aufgerufen, der aus der unpassenden Allozierungsfunktion %qD stammt%qD wird mit Zeiger auf nicht alloziertes Objekt %qE aufgerufen%qD wird mit Zeiger %qE aufgerufen, der aus der unpassenden Allozierungsfunktion %qD stammt%qD wird mit Zeiger %qE mit Offset%s ungleich 0 aufgerufen%qD wird mit Zeiger aufgerufen, der aus einer unpassenden Allozierungsfunktion stammt%qD wird mit nicht alloziertem Zeiger aufgerufen%qD wird auf nicht alloziertem Objekt %qD aufgerufen%qD ruft %<setjmp%> oder Ã¤hnliches auf, %<-fharden-control-flow-redundancy%> wird nicht unterstÃ¼tzt%qD kann als Â»overrideÂ« markiert werden%qD kann nicht in Konstanten-Ausdruck auftreten%qD kann nicht %qs sein%qD kann keine explizite Objektelementfunktion sein%qD kann nicht als %<virtual%> deklariert werden, da es immer statisch ist%qD kann nicht vorgegeben werden%qD kann nicht als Funktion verwendet werden%qD kann keine Standardargumente haben%qD hat neue Semantik in GCC 4.4%qD SÃ¤ubern eines Objekts von nichttrivialem Typ %#qT%s%qD SÃ¤ubern eines Objekts des Typs %#qT, das einen Zeiger auf Datenelement enthÃ¤lt%s%qD SÃ¤ubern eines Objekts des Typs %#qT ohne triviale Kopierzuweisung%s%qD steht mit verwendeter Funktion in Konflikt%qD Kopieren eines Objekts mit nichttrivialem Typ %#qT aus einem Array von %#qT%qD Kopieren eines Objekts des Typs %#qT mit Element %qs %qD aus einem Array von %#qT; verwenden Sie eine Zuweisung oder Kopierinitialisierung stattdessen%qD in %<constexpr%>-Kontext als %<static%> deklariert%qD in %<constexpr%>-Kontext als %<thread_local%> deklariert%qD als %<transaction_safe_dynamic%> deklariert%qD als ein %<virtual%> Feld deklariert%qD als ein %<virtual%> Parameter deklariert%qD als ein %<virtual%> Typ deklariert%qD als eine %<virtual%> Variable deklariert%qD als Nicht-Parameter deklariert%qD als ein %<inline%> Feld deklariert%qD als ein %<inline%> Parameter deklariert%qD als ein %<inline%> Typ deklariert%qD ist als Array vom Template-Platzhaltertyp %qT deklariert%qD als Referenz deklariert, aber nicht initialisiert%qD ist hier deklariert%qD hier deklariert, spÃ¤ter in der Ãœbersetzungseinheit%qD als schwach deklariert, nachdem es verwendet wurde%qD ist mit interner Bindung deklariert%qD in %<constexpr%>-Kontext als %<static%> definiert%qD kann in einer %qs-Funktion erst ab %<-std=c++23%> oder %<-std=gnu++23%> als %<static%> definiert werden%qD in %<constexpr%>-Kontext als %<thread_local%> definiert%qD kann in einer %qs-Funktion erst ab %<-std=c++23%> oder %<-std=gnu++23%> als %<thread_local%> definiert werden%qD definiert, aber nicht verwendet%qD hier definiert%qD Ziel unverÃ¤ndert, nachdem keine Bytes kopiert wurden%qD Ziel unverÃ¤ndert, nachdem keine Bytes aus einem String der LÃ¤nge %E kopiert wurden%qD hat nicht den Typ %<const char *%>%qD in %qs-Klausel hat keinen zuordenbaren Typ%qD hat keinen Ganzzahl- oder AufzÃ¤hlungstyp%qD hat keinen Ganzzahltyp%qD beginnt seine Lebensdauer nicht implizit, da %qT keinen nicht gelÃ¶schten trivialen Standardkonstruktor hat; verwenden Sie stattdessen %<std::construct_at%>%qD benennt keinen AufzÃ¤hlungstyp in %qT%qD bezeichnet keine Funktion%qD bezeichnet keine Funktion innerhalb eines Namensraum%qD expandierte zu mehr als einem Element%qD erwartet %E Byte in einer Region der GrÃ¶ÃŸe %E%qD erwartet %E Bytes in einer Region der GrÃ¶ÃŸe %E%qD erwartet %E oder mehr Bytes in einer Region der GrÃ¶ÃŸe %E%qD erwartet zwischen %E und %E Bytes in einer Region der GrÃ¶ÃŸe %E%qD macht die TU-lokale Einheit %qD sichtbar%qD Bildung des Offsets %s auÃŸerhalb der Grenzen%qD Bildung des Offsets %s auÃŸerhalb der Grenzen [0, %wu]%qD Bildung des Offsets %s auÃŸerhalb der Grenzen [0, %wu] von Objekt %qD mit Typ %qT%qD Bildung des Offsets %s auÃŸerhalb der Grenzen von Objekt %qD mit Typ %qT%qD hat TU-lokales Template-Argument %qD%qD hat TU-lokales Template-Argument %qT%qD ist kein nicht-struktureller Typ%qD hat eine vorherige Deklaration hier%qD wurde bereits definiert%qD hat unvollstÃ¤ndigen Typ %qT%qD hat unvollstÃ¤ndigen Typ%qD hat interne Bindung, da es in einem anonymen Namensraum deklariert wurde%qD hat ungÃ¼ltige Argumentliste%qD hat mehr als %u BlÃ¶cke, das geforderte Maximum fÃ¼r %<-fharden-control-flow-redundancy%>%qD hat keine Bindung und ist innerhalb eines anonymen Namensraums deklariert%qD hat keine Bindung und ist innerhalb der TU-lokalen EntitÃ¤t %qD deklariert%qD hat keine Bindung und ist innerhalb der TU-lokalen EntitÃ¤t %qT deklariert%qD wurde nicht innerhalb von %qD deklariert%qD wurde nicht innerhalb von %qD deklariert%qD hat den gleichen Namen wie die Klasse, in der es deklariert wurde%qD hat zu viele Argumente fÃ¼r internes %<strub%>%qD in %<reduction%>-Klausel ist ein Array der LÃ¤nge 0%qD erbt das %E-ABI-Tag, das %qT (im RÃ¼ckgabetyp verwendet) hat%qD erbt das %E-ABI-Tag, das %qT (im Typ verwendet) hat%qD ist ungÃ¼ltig in %q#T wegen lokalem Element %q#D mit gleichem Namen%qD ist in %q#T ungÃ¼ltig wegen lokaler Methode %q#D mit gleichem Namen%qD ungÃ¼ltig in Bedingung%qD ungÃ¼ltig in Lambda%qD ist eine Funktion, kein Typ%qD ist ein Namensbereich%qD ist eine Spezialisierung des TU-lokalen Templates %qD%qD ist eine gewÃ¶hnliche (nicht-Platzierungs) Deallokationsfunktion%qD ist eine Ã¼bliche (nicht-placement) Deallokationsfunktion in C++14 (oder mit %<-fsized-deallocation%>)%qD ist eine virtuelle Funktion, aber in einem Dispatch-Konstrukt ist nur ein direkter Aufruf erlaubt%qD ist bereits ein Â»friendÂ« von %qT%qD ist bereits ein Â»friendÂ« der Klasse %qT%qD ist bereits in %qT definiert%qD ist bereits in Klasse %qT definiert%qD ist bereits in der Klasse %qT definiert%qD ist ein Alias des TU-lokalen Typen %qT%qD ist ein AufzÃ¤hlungstemplate%qD ist sowohl eine direkte Basis als auch eine indirekte virtuelle Basis%qD ist als %<constexpr%> deklariert und wird mit einem TU-lokalen Wert initialisiert%qD wird in Header %qs deklariert%qD ist mit TLS-Modell %s definiert%qD ist veraltet%qD ist veraltet: %s%qD wird mit sich selbst initialisiert%qD wird fÃ¼r ein leeres Pack instanziiert%qD ist verÃ¤nderlich%qD ist normalerweise eine nicht-statische Funktion%qD ist kein C-Zeiger%qD ist weder ein Klassen- noch ein Alias-Template%qD ist keine Klasse oder Namensbereich%qD ist kein Klassentyp%qD ist kein direktes Element von %qT%qD ist kein Funktionsargument%qD ist kein Funktionstemplate%qD ist kein Element von %qD%qD ist kein Element von %qD; meinten Sie %qs?%qD ist kein Element von %qT%qD ist kein Element von %qT; meinten Sie %qs?%qD ist keine Elementtemplatefunktion%qD ist kein Namensbereichs-Name%qD bezeichnet Namensraum-Namen; meinten Sie %qs?%qD ist keine Zeigervariable%qD ist kein %<static%>-Datenelement%qD ist kein statisches Datenelement eines Klassentemplates%qD ist kein Template%qD ist keine Templatefunktion%qD ist kein Typ%qD ist kein gÃ¼ltiges Templateargument, weil %qD eine Variable und nicht die Adresse einer Variable ist%qD ist keine Variable%qD ist in %<aligned%>-Klausel keine Variable%qD ist in %<allocate%>-Klausel keine Variable%qD ist in %<nontemporal%>-Klausel keine Variable%qD in %qs-Klausel muss eine Variable sein%qD ist in Klausel %<firstprivate%> keine Variable%qD ist in Klausel %<lastprivate%> keine Variable%qD ist in Klausel %qs keine Variable%qD ist kein variadisches Template%qD in %<uniform%>-Klausel ist kein Argument%qD ist nicht eingefangen%qD ist mit %qD unvertrÃ¤glich%qD ist auÃŸerhalb des FunktionsgÃ¼ltigkeitsbereiches nicht definiert%qD ist nicht fÃ¼r %<strub%> geeignet, da %<-fsplit-stack%> eingeschaltet ist%qD ist fÃ¼r %<strub%> nicht geeignet wegen des Attributs %<noipa%>%qD ist fÃ¼r %<strub%> nicht geeignet wegen des Attributs %<simd%>%qD ist fÃ¼r %<strub%> auf dem Zielsystem nicht geeignet%qD ist nicht fÃ¼r das interne %<strub%> geeignet, da sie %qD aufruft%qD ist nicht fÃ¼r das interne %<strub%> geeignet, da sie ein nicht-lokales Sprungziel enthÃ¤lt%qD ist nicht fÃ¼r das interne %<strub%> geeignet wegen des Attributs %<noclone%>%qD ist nicht fÃ¼r das interne %<strub%> geeignet, da die Adresse eines lokalen Labels entwischt%qD ist in %qs-Klausel weder lvalue-Ausdruck noch Arrayabschnitt%qD hat keinen Zeigertyp%qD ist nicht %<public%>%qD ist nicht als %<constexpr%>-Funktion verwendbar, denn:%qD ist mehrfach angegeben%qD ist statisch, wird jedoch in Inline-Funktion %qD verwendet, was nicht statisch ist%qD in %qs-Klausel ist eine threadprivate Variable%qD ist zu klein, um alle Werte von %q#T aufzunehmen%qD ist nicht verfÃ¼gbar%qD ist nicht verfÃ¼gbar: %s%qD ist nicht initialisiert, wird aber benutzt%qD greift mÃ¶glicherweise auf %E Byte in einer Region der GrÃ¶ÃŸe %E zu%qD greift mÃ¶glicherweise auf %E Bytes in einer Region der GrÃ¶ÃŸe %E zu%qD greift mÃ¶glicherweise auf %E oder mehr Bytes in einer Region der GrÃ¶ÃŸe %E zu%qD greift mÃ¶glicherweise auf zwischen %E und %E Bytes in einer Region der GrÃ¶ÃŸe %E zu%qD darf erst ab %<-std=c++23%> oder %<-std=gnu++23%> eine statische Memberfunktion sein%qD kÃ¶nnte uninitialisiert verwendet werden%qD darf nicht als Â»staticÂ« deklariert werden%qD darf nicht innerhalb eines Namensbereiches definiert werden%qD liest mÃ¶glicherweise %E Byte aus einer Region der GrÃ¶ÃŸe %E%qD liest mÃ¶glicherweise %E Bytes aus einer Region der GrÃ¶ÃŸe %E%qD liest mÃ¶glicherweise %E oder mehr Bytes aus einer Region der GrÃ¶ÃŸe %E%qD liest mÃ¶glicherweise zwischen %E und %E Bytes aus einer Region der GrÃ¶ÃŸe %E%qD schreibt mÃ¶glicherweise %E Byte in eine Region der GrÃ¶ÃŸe %E%qD schreibt mÃ¶glicherweise %E Bytes in eine Region der GrÃ¶ÃŸe %E%qD schreibt mÃ¶glicherweise %E oder mehr Bytes in eine Region der GrÃ¶ÃŸe %E%qD schreibt mÃ¶glicherweise zwischen %E und %E Bytes in eine Region der GrÃ¶ÃŸe %E%qD Verschieben eines Objekts des nichttrivialen Typs %#qT und GrÃ¶ÃŸe %E in eine Region der GrÃ¶ÃŸe %E%qD Verschieben eines Objekts des nichttrivial kopierbaren Typs %#qT; verwenden Sie stattdessen %<new%> oder %<delete%>%qD Verschieben eines Objekts des Typs %#qT mit gelÃ¶schtem Kopierkonstruktor; verwenden Sie stattdessen %<new%> und %<delete%>%qD Verschieben eines Objekts des Typs %#qT mit gelÃ¶schtem DestruktorIn %<#pragma acc declare link%> muss %qD eine globale Variable sein%qD muss eine Memberfunktion sein%qD muss eine Nicht-Elementfunktion sein%qD muss eine nichtstatische Elementfunktion sein%qD muss eine Variable sein, die im selben GÃ¼ltigkeitsbereich wie %<#pragma acc declare%> deklariert ist%qD muss entweder eine nichtstatische Elementfunktion oder eine Nicht-Element-Funktion sein%qD muss vom Typ %<omp_interop_t%> sein%qD muss ein Argument von einem Klassen- oder AufzÃ¤hlungstyp haben%qD muss entweder ein oder zwei Argumente nehmen%qD muss entweder null oder ein Argument nehmen%qD muss genau ein Argument nehmen%qD muss genau zwei Argumente nehmen%qD darf keine Argumente nehmenÂ»%qDÂ« darf keine variable Argumentanzahl haben%qD nicht definiert%qD einer Zeichenkette der LÃ¤nge %wu und eines Arrays der GrÃ¶ÃŸe %wu wird zu ungleich Null ausgewertet%qD einer Zeichenkette der LÃ¤nge %wu oder mehr und einem Array der GrÃ¶ÃŸe %wu wird zu ungleich Null ausgewertet%qD einer Zeichenkette der LÃ¤nge %wu, einem Array der GrÃ¶ÃŸe %wu und der Grenze von %wu wird zu ungleich Null ausgewertet%qD von Zeichenketten der LÃ¤nge %wu und %wu und der Grenze von %wu wird zu ungleich Null ausgewertet%qD Offset %s des Objekts an %qE ist auÃŸerhalb der Grenzen von %qT%qD Offset %s des Objekts an %qE ist auÃŸerhalb der Grenzen des referenzierten Teilobjekts %qD mit Typ %qT an Offset %wi%qD Offset %s ist auÃŸerhalb der Grenzen%qD Offset %s ist auÃŸerhalb der Grenzen [0, %wu]%qD Offset %s is auÃŸerhalb der Grenzen [0, %wu] von Objekt %qD mit Typ %qT%qD Offset %s ist auÃŸerhalb der Grenzen von Objekt %qD mit Typ %qT%qD ist in Lambda erst ab %<-std=c++23%> oder %<-std=gnu++23%> verfÃ¼gbarAusgabe von %qD mÃ¶glicherweise abgeschnitten, beim Kopieren von %E Byte aus einer Zeichenkette der LÃ¤nge %wuAusgabe von %qD mÃ¶glicherweise abgeschnitten, beim Kopieren von %E Bytes aus einer Zeichenkette der LÃ¤nge %wu%qD Ausgabe mÃ¶glicherweise abgeschnitten, beim Kopieren von %wu bis %wu Byte aus einer Zeichenkette der LÃ¤nge %wu%qD Ausgabe abgeschnitten vor dem abschlieÃŸenden NUL, beim Kopieren von %E Byte aus einem String derselben LÃ¤nge%qD Ausgabe abgeschnitten vor dem abschlieÃŸenden NUL, beim Kopieren von %E Bytes aus einem String derselben LÃ¤nge%qD Ausgabe abgeschnitten vor dem beendenden NUL, beim Kopieren von so vielen Bytes aus einer Zeichenkette, wie die Ausgabezeichenkette lang istAusgabe von %qD abgeschnitten, beim Kopieren von %E Byte aus einer Zeichenkette der LÃ¤nge %wuAusgabe von %qD abgeschnitten, beim Kopieren von %E Bytes aus einer Zeichenkette der LÃ¤nge %wu%qD Ausgabe abgeschnitten, beim Kopieren von %wu bis %wu Bytes aus einer Zeichenkette der LÃ¤nge %wu%qD ZeigerÃ¼berlauf zwischen Offset %s und GrÃ¶ÃŸe %s%qD ZeigerÃ¼berlauf zwischen Offset %s und GrÃ¶ÃŸe %s beim Zugriff auf Array %qD mit Typ %qT%qD liest %E Byte aus einer Region der GrÃ¶ÃŸe %E%qD liest %E Bytes aus einer Region der GrÃ¶ÃŸe %E%qD liest %E oder mehr Bytes aus einer Region der GrÃ¶ÃŸe %E%qD liest zwischen %E und %E Bytes aus einer Region der GrÃ¶ÃŸe %E%qD empfÃ¤ngt nicht-lokale Gotos, %<-fharden-control-flow-redundancy%> wird nicht unterstÃ¼tzt%qD mit anderem Zugriff redeklariert%qD mit anderer Sichtbarkeit redeklariertZielregion verweist auf %qD, aber der Ausdruck hat keinen zuordenbaren Typ%qD bezieht sich auf die TU-lokale EntitÃ¤t %qD und kann nicht in anderen TUs instanziiert werden%qD verweist auf die TU-lokale Funktion %qD%qD verweist auf das TU-lokale Objekt %qD%qD nach Referenzierung in Assemblierung umbenannt%qD erfordert %<strub%>, aber es wurde kein geeigneter %<strub%>-Modus gefunden%qD darf nicht const sein%qD sollte initialisiert werden%qD sollte in Elementinitialisierungsliste initialisiert werden%qD sollte innerhalb von %qD deklariert werden%qD sollte Wert zurÃ¼ckgebendie GrÃ¶ÃŸe von %qD ist mit %<sizeof%> im frÃ¼heren Argument angegeben, sollte aber im spÃ¤teren stehenQuellargument fÃ¼r %qD ist dasselbe wie fÃ¼r das Ziel%qD ist sowohl im Deklarationsziel %<link%> als auch in %<to%>- oder %<enter%>-Klauseln angegeben%qD ist sowohl in %<link%>- als auch %qs-Klauseln des Deklarationsziels angegeben%qD ist sowohl in %<declare target link%>- als auch implizit in %<to%>-Klauseln angegebenangegebene Grenze %2$E von %1$qD ist genau die GrÃ¶ÃŸe des Ziels%qD angegebene Grenze %E ist genau die GrÃ¶ÃŸe der Quelledurch %qD angegebene Grenze %E Ã¼berschreitet die GrÃ¶ÃŸe %E des Zielobjektsdurch %qD angegebene Grenze %E Ã¼berschreitet die maximale ObjektgrÃ¶ÃŸe %Edurch %qD angegebene Grenze %E Ã¼berschreitet die GrÃ¶ÃŸe %E des Quellobjektsdurch %qD angegebene Grenze %E Ã¼berschreitet mÃ¶glicherweise die GrÃ¶ÃŸe %E des Zielobjektsdurch %qD angegebene Grenze %E Ã¼berschreitet mÃ¶glicherweise die maximale ObjektgrÃ¶ÃŸe %Edurch %qD angegebene Grenze %E Ã¼berschreitet mÃ¶glicherweise die GrÃ¶ÃŸe %E des Quellobjektsdurch %qD angegebene Grenze %s Ã¼berschreitet die maximale ObjektgrÃ¶ÃŸe %Edurch %qD angegebene Grenze %s Ã¼berschreitet die GrÃ¶ÃŸe %E des nicht abgeschlossenen Arraysdurch %qD angegebene Grenze %s Ã¼berschreitet die MaximalgrÃ¶ÃŸe %E des nicht abgeschlossenen Arraysdurch %qD angegebene Grenze %s Ã¼berschreitet mÃ¶glicherweise die MaximalgrÃ¶ÃŸe %E des nicht abgeschlossenen Arraysdurch %qD angegebene Grenze %wu Ã¼berschreitet maximale ObjektgrÃ¶ÃŸe %wudurch %qD angegebene Grenze [%E, %E] Ã¼berschreitet die GrÃ¶ÃŸe %E des Zielobjektsdurch %qD angegebene Grenze [%E, %E] Ã¼berschreitet die maximale ObjektgrÃ¶ÃŸe %Edurch %qD angegebene Grenze [%E, %E] Ã¼berschreitet die GrÃ¶ÃŸe %E des Quellobjektsdurch %qD angegebene Grenze [%E, %E] Ã¼berschreitet mÃ¶glicherweise die GrÃ¶ÃŸe %E des Zielobjektsdurch %qD angegebene Grenze [%E, %E] Ã¼berschreitet mÃ¶glicherweise die maximale ObjektgrÃ¶ÃŸe %Edurch %qD angegebene Grenze [%E, %E] Ã¼berschreitet mÃ¶glicherweise die GrÃ¶ÃŸe %E des Quellobjektsdurch %qD angegebene Grenze zwischen %wu und %wu Ã¼berschreitet maximale ObjektgrÃ¶ÃŸe %wu%qD angegebene Grenze hÃ¤ngt von der LÃ¤nge des Quellarguments ab%qD ist in %<allocate%>-Klausel angegeben, aber nicht in einer expliziten Privatisierungs-Klausel%qD ist in %<inscan%>-%<reduction%>-Klausel angegeben, aber nicht in %<scan%>-Direktivenklausel%qD wurde in %qs-Klausel angegeben, aber nicht in %<inscan%>-%<reduction%>-Klausel am enthaltenden Konstruktdurch %qD angegebene GrÃ¶ÃŸe %E Ã¼berschreitet die maximale ObjektgrÃ¶ÃŸe %Edurch %qD angegebene GrÃ¶ÃŸe %E Ã¼berschreitet mÃ¶glicherweise die maximale ObjektgrÃ¶ÃŸe %Edurch %qD angegebene GrÃ¶ÃŸe zwischen %E und %E Ã¼berschreitet die maximale ObjektgrÃ¶ÃŸe %Edurch %qD angegebene GrÃ¶ÃŸe zwischen %E und %E Ã¼berschreitet mÃ¶glicherweise die maximale ObjektgrÃ¶ÃŸe %E%qD-Spezifizierer ist unvertrÃ¤glich mit %<typedef%>%qD-Spezifizierer ist unvertrÃ¤glich mit %qs%qD legt weniger eingeschrÃ¤nktes Attribut als sein Ziel %qD fest: %e%qD legt weniger eingeschrÃ¤nkte Attribute als sein Ziel %qD fest: %e%qD legt eingeschrÃ¤nkteres Attribut als sein Ziel %qD fest: %e%qD legt eingeschrÃ¤nktere Attribute als sein Ziel %qD fest: %eZiel %qD wurde hier deklariert%qD als Variante mit inkompatiblen %<construct%>-Selektormengen verwendet%qD vor seiner Definition verwendet%qD in seiner eigenen Initialisierung verwendet%qD wird ohne Template-Argumente verwendet%qD verletzt die One-Definition-Rule von C++%qD wurde %<extern%> deklariert und spÃ¤ter %<static%>%qD wurde als %qs deklariert, was Standardsichtbarkeit mit sich bringt%qD wurde hier deklariert%qD war versteckt%qD wurde nicht als %<constexpr%> definiert%qD wurde in diesem GÃ¼ltigkeitsbereich nicht definiert%qD wurde in diesem GÃ¼ltigkeitsbereich nicht deklariert, und bei argumentabhÃ¤ngiger Suche am Ort der Instanziierung wurden keine Deklarationen gefunden%qD wurde in diesem GÃ¼ltigkeitsbereich nicht deklariert; meinten Sie %qs?%qD wurde nicht mit konstantem Ausdruck initialisiert%qD wurde vorher hier deklariert%qD wurde zu einer unmittelbaren Funktion befÃ¶rdert%qD wurde in eine unmittelbare Funktion umgewandelt, da ihr Rumpf einen unmittelbar-eskalierenden Ausdruck %qE enthÃ¤lt%qD wurde vor seiner Definition ohne Deklaration verwendet%qD wurde vor seiner Definition ohne Prototyp verwendet%qD wird initialisiert nach%qD schreibt %E Byte in eine Region der GrÃ¶ÃŸe %E und bringt dadurch das Zielobjekt zum Ãœberlaufen%qD schreibt %E Bytes in eine Region der GrÃ¶ÃŸe %E und bringt dadurch das Zielobjekt zum Ãœberlaufen%qD schreibt %E oder mehr Bytes in eine Region der GrÃ¶ÃŸe %E und bringt dadurch das Zielobjekt zum Ãœberlaufen%qD schreibt %wu Byte in eine Region der GrÃ¶ÃŸe %wu%qD schreibt %wu Bytes in eine Region der GrÃ¶ÃŸe %wu%qD schreibt %wu Byte in eine Region der GrÃ¶ÃŸe zwischen %wu und %wu%qD schreibt %wu Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wu%qD schreibt zwischen %E und %E Bytes in eine Region der GrÃ¶ÃŸe %E und bringt dadurch das Zielobjekt zum Ãœberlaufen%qD schreibt zwischen %wu und %wu Bytes in eine Region der GrÃ¶ÃŸe %wu%qD schreibt zwischen %wu und %wu Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wu%qD schreibt ein Byte zu viel in eine Region, deren GrÃ¶ÃŸe von %<strlen%> abhÃ¤ngt%qD Schreiben in ein Objekt eines nichttrivialen Typen %#qT lÃ¤sst %wu Byte unverÃ¤ndert%qD Schreiben in ein Objekt eines nichttrivialen Typen %#qT lÃ¤sst %wu Bytes unverÃ¤ndert%qD Schreiben in ein Objekt des nichttrivialen Typs %#qT%s%qD Schreiben in ein Objekt des nichttrivial kopierbaren Typs %#qT%s%qD Schreibzugriff auf ein Objekt des Typs %#qT, das einen Zeiger auf Datenelement enthÃ¤lt%s%qD Schreibzugriff auf ein Objekt des Typs %#qT mit Element %qs %qD%qD Schreibzugriff auf ein Objekt des Typs %#qT ohne triviale Kopierzuweisung%qD Schreibzugriff auf ein Objekt des Typs %#qT ohne triviale Kopierzuweisung%s%qD Schreibzugriff auf ein Objekt mit einem gelÃ¶schten Kopierkonstruktor%qD: Sichtbarkeitsattribut ignoriert, da es in Konflikt mit vorheriger Deklaration steht%qE 2.95 vtable-KompatibilitÃ¤tsattribut trifft nur fÃ¼r C++-Klassen zu%qE 2.95 vtable-KompatibilitÃ¤tsattribut trifft nur zu, wenn ein Â»kextÂ« kompiliert wird%qE tritt in %<aligned%>-Klausel mehrfach auf%qE kommt mehr als einmal in %<allocate%>-Klauseln vor%qE tritt in %<nontemporal%>-Klausel mehrfach auf%qE tritt in dieser Datenklausel mehrfach auf%qE tritt in Mapklauseln mehrfach auf%qE tritt in derselben %<declare target%>-Direktive mehrfach auf%qE Argument %Z Ã¼berlappt mÃ¶glicherweise das Zielobjekt %qE%qE Argumente %Z Ã¼berlappen mÃ¶glicherweise das Zielobjekt %qE%qE Argument %Z Ã¼berlappt das Zielobjekt %qE%qE Argumente %Z Ã¼berlappen das Zielobjekt %qEArgument %qE ist keine FunktionArgument %qE muss eins von %qs, %qs, %qs oder %qs seinArgument %qE ist keine ZeichenketteArgument %qE ist kein BezeichnerIm Aufruf von %qE Ã¼berlappen sich die Argumente %Z und vielleicht %Z mit dem Zielobjekt %qEAdresse von Attribut %qE auÃŸerhalb des gÃ¼ltigen Bereichs 0x%x%s0x%xAttribut %qE erlaubt nur eine Ganzzahlkonstante als ArgumentAttribut %qE auf %qD mit RÃ¼ckgabetyp Â»voidÂ« angewendetAttribut %qE auf %qT nach seiner Definition angewendetAttribut %qE wird auf Â»extern "C"Â«-Deklaration %qD angewendetAttribut %qE auf Nicht-Klassen-, Nicht-Enum-Typ %qT angewendet%qE-Attribut wird auf %qD angewendet, das weder Funktion noch Variable istAttribut %qE kann nur auf Funktionsdefinitionen angewandt werdenAttribut %qE kann nur auf Funktionen angewandt werdenAttribut %qE bezieht sich nur auf initialisierte Variablen mit externer BindungAttributargument %qE mit Wert %E ist keine ZweierpotenzAttribut %qE mit Argument %E ist keine GanzzahlkonstanteArgument %2$E von Attribut %1$qE liegt nicht im Bereich [0, %3$wu]Attribut %qE Argument %E ist nicht positivAttributargument %qE an Position %i hat Typ %qTAttributargument %qE an Position %i ist ungÃ¼ltigAttributargument %qE an Position %i hat den Wert %qE, der nicht auf einen Funktionsparameter verweistAttributargument %qE an Position %i hat den Wert %qE, der nicht auf eine variable Argumentliste verweistAttributargument %qE an Position %i hat den Wert %qE, der die Anzahl der Funktionsparameter %u Ã¼bersteigtAttributargument %qE an Position %i hat den Wert %qE, der keine Ganzzahlkonstante istAttributargument %qE an Position %i hat den Wert %qE, der auf einen variadischen Funktionsparameter unbekannten Typs verweistAttributargument %qE an Position %i hat den Wert %qE, der auf den Parametertyp %qT verweistAttribut %qE hat Argument %qE, das %u Ã¼bersteigtAttributargument %qE mit Wert %qE ist keine GanzzahlkonstanteAttribut %qE Argument %qE muss eine ganzzahlige Konstante zwischen 0 und 3 seinAttribut %qE Argument %qE ist unbekanntAttribut %qE Argument 1 benennt keine FunktionAttribut %qE Argument 1 ist mehrdeutigAttribut %qE Argument 1 muss einen Zeigertyp als erstes Argument habenAttribut %qE Argument 1 muss einen Zeigertyp als erstes Argument haben, hat jedoch %qTAttributargument %qE kann kein konstanter arithmetischer Ausdruck seinAttributargument %qE kann keine Zeichenkette seinAttributargument %qE hat Typ %qTAttributargument %qE ist ungÃ¼ltigArgument des Attributs %qE muss eine Zeichenkettenkonstante seinArgument %qE des Attributs muss ein Ausdruck sein, der zu true oder false auswertetArgument des Attributs %qE ist keine ZeichenkettenkonstanteAttributargument %qE ist keine GanzzahlAttributargument %qE ist keine GanzzahlkonstanteArgument des Attributs %qE sollte zwischen 0 und 255 seinArgument des Attributs %qE sollte zwischen 18 und 255 seinAttributargument %qE hat den Wert %qE, der nicht auf einen Funktionsparameter verweistAttributargument %qE hat den Wert %qE, der nicht auf eine variable Argumentliste verweistAttributargument %qE mit Wert %qE Ã¼bersteigt %wuAttributargument %qE hat den Wert %qE, der die Anzahl der Funktionsparameter %u Ã¼bersteigtAttributargument %qE mit Wert %qE ist negativAttributargument %qE hat den Wert %qE, der keine Ganzzahlkonstante istAttributargument %qE hat den Wert %qE, der auf einen variadischen Funktionsparameter unbekannten Typs verweistAttributargument %qE hat den Wert %qE, der auf den Parametertyp %qT verweistAttribut %qE kann nur auf Funktionen oder Parameter angewendet werdenAttribut %qE kann nur auf Funktionen oder auf Klasse- oder AufzÃ¤hlungstypen angewendet werdenAttribut %qE kann nur auf Funktionen oder auf struct-, union- oder enum-Typen angewendet werdenAttribut %qE kann nur auf nicht-statische Datenelemente angewendet werdenAttribut %qE kann nicht auf Bitfeld angewendet werdenAttribut %qE kann nicht fÃ¼r lokale Variablen angegeben werdenAttribut %qE kann nicht fÃ¼r Register-Variablen angegeben werdenAttribut %qE kann nicht fÃ¼r threadlokale Variablen angegeben werdenAttribut %qE steht mit Attribut %qE in KonfliktAttribut-Direktive %qE ignoriertAttribut %qE ist nicht auf Funktionen anwendbarAttribut %qE kann nicht auf Typen angewandt werdenAttribut %qE akzeptiert keine ArgumenteAttribut %qE bezieht sich nicht auf Funktionendoppeltes Attribut %qEAttribut %qE folgt auf %qEAttribut %qE hat keinen EffektAttribut %qE wirkt sich nicht auf Funktionen mit Â»staticÂ«-Bindung ausAttribut %qE wirkt sich nicht auf einheits-lokale Funktionen ausAttribut %qE wirkt sich nur auf Ã¶ffentliche Objekte ausAttribut %qE wird ignoriertAttribut %qE ignoriert, da %qD nicht Thread-Speicherdauer hatAttribut %qE ignoriert, da %qD keine lokale Variable istAttribut %qE ignoriert, da %qD keine Variable istAttribut %qE ignoriert, da %qT bereits definiert istAttribut %qE wird wegen des Arguments %qE ignoriertAttribut %qE ignoriert fÃ¼r %qEAttribut %qE ignoriert fÃ¼r Feld vom Typ %qTAttribut %qE fÃ¼r Typ %qT ignoriertAttributargument %qE deklariert das referenzierte Symbol mit einer anderen Art; wird ignoriertAttribut %qE an einer Funktion mit RÃ¼ckgabetyp %qT wird ignoriertAttributargument %qE deklariert das referenzierte Symbol neu; wird ignoriertAttribut %qE wird an Funktionen mit RÃ¼ckgabetyp %qT ignoriert; es gilt nur fÃ¼r Zeiger-RÃ¼ckgabetypenAttribut %qE ignoriert fÃ¼r Nicht-Klassen-TypenAttribut %qE wird an allen Typen auÃŸer AufzÃ¤hlungen ignoriertAttribut %qE wird fÃ¼r Objekte vom Typ %qT ignoriertAttribut %qE fÃ¼r Typen ignoriertAttribut %qE ignoriert, da die Option %<-mcmse%> nicht angegeben istAttribut %qE ignoriert, da die Option %<-mistack%> nicht angegeben istAttribut %qE ignoriert, da es nur fÃ¼r ein groÃŸes Speichermodell (%<-mlarge%>) sinnvoll ist.Attribut %qE ignoriert, da die Option %<-fcf-protection%> nicht angegeben istAttribut %qE wird ignoriert, da das Feld ein Funktionszeiger sein mussAttribut %qE wird ignoriert, da es nur fÃ¼r Funktionen giltAttribut %qE wird ignoriert, da es nur fÃ¼r Funktionen und Funktionszeigerfelder giltAttribut %qE kann nur auf Zeigertypen angewendet werdenAttribut %qE kann nur fÃ¼r Array-Felder angegeben werdenAttribut %qE ist in der Deklaration %q+D nicht erlaubt, da sie kein Feld deklariertAttribut %qE kann nur fÃ¼r flexible Array-Felder angegeben werdenAttribut %qE wird nicht unterstÃ¼tzt, da die Bytereihenfolge nicht einheitlich istAttribut %qE wird fÃ¼r C++ derzeit nicht unterstÃ¼tzt und daher ignoriertAttribut %qE wird fÃ¼r Ziel R8C nicht unterstÃ¼tztAttribut %qE bezieht sich nur auf FunktionenAttribut %qE ist nur fÃ¼r Objective-C-Objekte gÃ¼ltigAttribut %qE kann nur auf %<struct%>-Typen angewandt werdenAttribut %qE wird fÃ¼r ELF-Ziele unterstÃ¼tztAttribut %qE wird nur auf SH2A unterstÃ¼tztAttribut %qE wird fÃ¼r Nicht-Klassen-Methode verwendetAttribut %qE kann nur an einem typedef stehen; wird ignoriertAttribut %qE kann nicht fÃ¼r %q+D angegeben werdenAttribut %qE kann nur fÃ¼r Array-Felder angegeben werdenAttribut %qE muss vor Attribut %qs auftretenAttribut %qE muss sich auf eine Deklaration beziehenAttribut %qE nicht mit Speicherklasse Â»autoÂ« erlaubtAttribut %qE ist nicht auf Funktionen anwendbar, die Argumente auf dem Stack zurÃ¼ckgebenAttribut %qE ist nicht auf Funktionen anwendbar, die Argumente auf dem Stack Ã¼bergebenAttribut %qE ist nicht auf Funktionen anwendbar, die variable Anzahl von Argumenten habenAttribut %qE an einer Funktion, die keinen Zeiger zurÃ¼ckgibtAttribut %qE an einer Funktion mit RÃ¼ckgabetyp %<void%>Attribut %qE an einem Funktionstyp ohne Zeigerargumente mit RÃ¼ckgabetyp %<void%>Attribut %qE an nicht-Â»volatileÂ«-VariableAttribut %qE bezieht sich nur auf Toplevel-ObjekteAttribut %qE gilt nur fÃ¼r SH2AAttribut %qE kann nur auf Basistypen von Funktionszeiger angewandt werdenAttribut %qE kann nur auf Funktionstypen angewandt werdenAttribut %qE bezieht sich nur auf FunktionenAttribut %qE bezieht sich nur auf InterruptfunktionenAttribut %qE ist nur bei Struktur-, Vereinigungs- und Klassentypen anwendbarAttribut %qE kann nur auf Typen angewandt werdenAttribut %qE bezieht sich nur auf VariablenAttribut %qE kann nur fÃ¼r Â»staticÂ«-Variablen verwendet werdenAttribut %qE gilt nur fÃ¼r variadische FunktionenAttribut %qE nur fÃ¼r 32 Bit verfÃ¼gbarAttribut %qE wird nur fÃ¼r reduzierte Tiny-Kerne unterstÃ¼tztAttribut %qE wird nur in C unterstÃ¼tztAttribut %qE wird nur fÃ¼r Boolean-Typen unterstÃ¼tztAttribut %qE wird nur fÃ¼r Ganzzahltypen unterstÃ¼tztAttribut %qE wird nur fÃ¼r Vektortypen unterstÃ¼tzt, die nicht maskiert sindAttribut %qE ist nur fÃ¼r die ARC-EM-Architektur gÃ¼ltigAttribut %qE ist nur fÃ¼r die Architektur ARCv2 gÃ¼ltigAttribut %qE erfordert eine Zeichenkettenkonstante als ArgumentAttribut %qE erfordert eine Zeichenkettenkonstante als ArgumentAttribut %qE erfordert den RÃ¼ckgabetyp Â»voidÂ«Attribut %qE benÃ¶tigt eine Ganzzahl als ArgumentAttribut %qE benÃ¶tigt eine Ganzzahlkonstante als ArgumentAttribut %qE erfordert unterschiedliche Werte fÃ¼r %<false%> und %<true%> fÃ¼r den Typ %qTAttribut %qE benÃ¶tigt Prototypen mit benannten ArgumentenAttribut %qE erwartet keine ArgumenteAttribut %qE mit nicht unterstÃ¼tzter Boolean-GenauigkeitAttribut %qE ohne Argumente fÃ¼r einen Nicht-PrototypAttribut %qE kann nur auf Zeigertypen angewendet werden, nicht auf %qT%qE kann nicht als Funktion verwendet werden%qE kann nicht als Elementzeiger verwendet werden, da es vom Typ %qT ist%qE kann nicht gleichzeitig die Attribute %qs und %qs haben%qE nach erster Verwendung als %<threadprivate%> deklariert%qE als Funktion, die eine Funktion zurÃ¼ckgibt, deklariert%qE als Funktion, die ein Array zurÃ¼ckgibt, deklariert%qE ist hier deklariert%qE als falsche Symbolart definiert%qE schrÃ¤nkt keinen Typ ein%qE hat nicht den Typ %<omp_depend_t%>, in der %<depend%>-Klausel mit %<depobj%>-AbhÃ¤ngigkeitstyp%qE in %qs-Klausel hat keinen zuordenbaren Typ%qE hat weder Zeiger- noch Arraytyp%qE bezeichnet keinen Typ%qE bezeichnet keinen Typ; meinten Sie %qs?%qE erfÃ¼llt Â»return-type-requirementÂ« nicht%qE erfÃ¼llt Â»return-type-requirementÂ« nicht, da%qE unterstÃ¼tzt keine 32-Bit-Offsets mit Vorzeichenerweiterung%qE unterstÃ¼tzt den 32-Bit-Vektortyp %qT nicht%qE unterstÃ¼tzt keine vorzeichenerweiterten Offsets%qE wird zu Â»falseÂ« ausgewertet%qE ist kein typedef oder eingebauter Typ%qE hat sowohl %<extern%> als auch Initialisierung%qE hat konstanten Typ fÃ¼r %<reduction%>%qE hat ungÃ¼ltigen Typ fÃ¼r %<reduction(%s)%>%qE hat keine Form, die Argumente %qT und %qT annimmt%qE hat keine Form, die %qT Argumente annimmt%qE wurde nicht deklariert%qE wurde nicht deklariert; meinten Sie %qs?%qE bringt Standardsichtbarkeit mit sich, aber %qD wurde bereits mit anderer Sichtbarkeit deklariert%qE in %<aligned%>-Klausel ist weder Zeiger noch Array%qE in %<aligned%>-Klausel ist weder Zeiger noch Array noch Referenz auf Zeiger oder Array%qE in %<reduction%>-Klausel ist ein Array der LÃ¤nge 0%qE in %q#T benennt keinen Templatetypen%qE in %q#T benennt keinen Typen%qE in Namensraum %qE bezeichnet keinen Templatetyp%qE in Namensraum %qE bezeichnet keinen Templatetyp; meinten Sie %qs?%qE in Namensbereich %qE bezeichnet keinen Typ%qE in Namensraum %qE bezeichnet keinen Typ; meinten Sie %qs?%qE-inkompatibles Attribut wird ignoriert%qE initialisiert und als %<extern%> deklariert%qE ist ein Element eines Union-Typs%qE ist ein Zeiger auf einen Zeiger; wollten Sie ihn dereferenzieren, bevor Sie %<->%> darauf anwenden?%qE ist ein Zeiger; meinten Sie %<->%>?%qE ist ein nicht erkannter Formatfunktionstyp%qE ist veraltet%qE ist veraltet: %s%qE ist mit %<throw()%> oder %<noexcept%> markiert, aber %qT liefert kein brauchbares %<get_return_object_on_allocation_failure%>%qE in %qs-Klausel ist weder Variablen- noch Funktionsname%qE ist weder eine Funktion noch Elementfunktion; kann nicht als Â»friendÂ« deklariert werden%qE ist nicht %<noexcept%>%qE ist keine Klasse oder Namensbereich%qE ist kein Klassentemplate%qE ist keine Klasse, Namensbereich oder AufzÃ¤hlung%qE ist kein Konstantenausdruck%qE ist kein konstanter Ausdruck, da der angeforderte Speicher nicht vollstÃ¤ndig freigegeben wurde%qE ist kein konstanter Ausdruck, da er %qT statt %qT initialisiert%qE ist kein konstanter Ausdruck, da er auf das Ergebnis von %<operator new%> verweist%qE ist kein Konstantenausdruck, da er auf eine unvollstÃ¤ndig initialisierte Variable verweist%qE ist kein Konstantenausdruck, da er auf verÃ¤nderliche Teilobjekte von %qT verweist%qE ist kein konstanter Ausdruck, solange die Klasse %qT noch unvollstÃ¤ndig ist%qE ist kein Template%qE ist kein Typ%qE ist kein gÃ¼ltiger %<asm%>-Qualifizierer%qE ist kein gÃ¼ltiges Templateargument fÃ¼r %qT, da es keine Adresse einer Variable ist%qE ist kein gÃ¼ltiges Templateargument fÃ¼r Typ %qT%qE ist kein gÃ¼ltiges Templateargument fÃ¼r Typ %qT, weil %qD keine externe Bindung hat%qE ist kein gÃ¼ltiges Templateargument fÃ¼r Typ %qT, weil %qD keine Bindung hat%qE ist kein gÃ¼ltiges Templateargument fÃ¼r Typ %qT, weil es ein Zeiger ist%qE ist kein gÃ¼ltiges Templateargument fÃ¼r Typ %qT, weil es kein L-Wert ist%qE ist kein gÃ¼ltiges Templateargument fÃ¼r Typ %qT, weil es vom Typ %qT ist%qE ist kein gÃ¼ltiges Templateargument fÃ¼r Typ %qT, da es in CV-Qualifikation in Konflikt steht%qE ist kein gÃ¼ltiges Templateargument fÃ¼r Typ %qT, da Zeichenkettensymbole in diesem Zusammenhang nicht verwendet werden kÃ¶nnen%qE ist kein gÃ¼ltiges Templateargument fÃ¼r Typ %qT, weil %qD keine Bindung hat%qE ist kein gÃ¼ltiges Templateargument vom Typ %qT, weil %qE weder eine Variable noch eine Funktion ist%qE ist in C++98 kein gÃ¼ltiges Templateargument des Typs %qT, weil %qD keine externe Bindung hat%qE ist %<aligned%>-Klausel keine Variable%qE in %<allocate%>-Klausel ist keine Variable%qE ist in %<nontemporal%>-Klausel keine Variable%qE in %qs-Klausel muss eine Variable sein%qE ist in Klausel %<firstprivate%> keine Variable%qE ist in Klausel %<lastprivate%> keine Variable%qE ist in Klausel %qs keine Variable%qE ist kein Klassenname oder Alias in Objective-C%qE in %<uniform%>-Klausel ist kein Argument%qE ist nicht am Anfang einer Deklaration%qE ist nicht initialisiert%qE ist weder ein lvalue-Ausdruck noch ein Arrayabschnitt in %qs-Klausel%qE ist nicht vom Typ %qTunbekannte Modul-Steuerzeile %qE%qE ist nicht das vollstÃ¤ndige Muster einer Packexpansion%qE ist nur in Objective-C-Dialekten erlaubt%qE ist nur auf Objective-C-Klassen-Interfaces anwendbar; wird ignoriert%qE ist vorbestimmt %qs fÃ¼r %qs%qE wird von %qT bereitgestellt, aber %<std::nothrow%> wurde nicht gefunden%qE wird von %qT bereitgestellt, aber %qE ist nicht mit %<throw()%> oder %<noexcept%> gekennzeichnet%qE wird von %qT bereitgestellt, ist aber nicht mit der Funktion %qD verwendbar%qE wird von %qT bereitgestellt, ist aber nicht mit der Funktionssignatur %qD verwendbar%qE ist nicht verfÃ¼gbar%qE ist nicht verfÃ¼gbar: %s%qE ist nicht initialisiert%qE kÃ¶nnte uninitialisiert verwendet werden%qE antwortet mÃ¶glicherweise nicht auf %<%c%E%>%qE darf erst nach einer Modul-Interface-Deklaration vorkommen%qE darf nur einmal pro Export-Deklaration vorkommen%qE kÃ¶nnte ein abschlieÃŸendes NUL hinter das Ende des Ziels schreibenfehlende Templateargumente fÃ¼r %qE%qE muss fÃ¼r %<copyin%> %<threadprivate%> sein%qE muss eine nichtÃ¼berladene Methode sein%qE muss eine nichtÃ¼berladene statische Funktion sein%qE muss %qT zurÃ¼ckgeben, nicht %qT%qE muss ein einzelnes %qT annehmen%qE darf keine Argumente annehmen%qE benennt den Konstruktor, nicht den Typ%qE erfordert ISA-Option %s%qE erfordert unbekannte ISA-Option%qE in umgebendem %<target%> nicht angegeben%qE in umgebendem %qs nicht angegeben%qE in umgebendem OpenACC-%qs-Konstrukt nicht angegeben%qE in %<case%>- oder %<default%>-Label%qE bei einem anderen Typ als einer Klassen- oder AufzÃ¤hlungsdefinition%qE in unbenanntem Bitfeld%qE hat %wu Byte ausgegeben%qE hat %wu Bytes ausgegeben%qE hat %wu Byte in ein Ziel der GrÃ¶ÃŸe %wu ausgegeben%qE hat %wu Byte in ein Ziel der GrÃ¶ÃŸe %wu ausgegeben%qE hat %wu oder mehr Bytes ausgegeben%qE hat %wu oder mehr Bytes (angenommen %wu) ausgegeben%qE hat %wu oder mehr Bytes (angenommen %wu) in das Ziel der GrÃ¶ÃŸe %wu ausgegeben%qE hat %wu oder mehr Bytes in das Ziel der GrÃ¶ÃŸe %wu ausgegeben%qE hat zwischen %wu und %wu Bytes ausgegeben%qE hat zwischen %wu und %wu Bytes in das Ziel der GrÃ¶ÃŸe %wu ausgegeben%qE-Ausgabe kÃ¶nnte vor dem letzten Formatzeichen abgeschnitten sein%qE-Ausgabe ist vor dem letzten Formatzeichen abgeschnitten%qE als andere Symbolart redeklariert%qE mit in Konflikt stehenden Attributen %qs redeklariert%qE benÃ¶tigt %<-fgnu-tm%>%qE erfordert eine %<declare%>-Direktive, um in einer %<routine%>-Funktion verwendet zu werden%qE erfordert eine Vektorbasis und einen skalaren IndexAttribut %qE benÃ¶tigt ein Argument%qE benÃ¶tigt die SVE-ISA-Erweiterung%qE sollte einen anderen Typ haben als %<omp_depend_t%>, in der %<depend%>-Klausel mit von %<depobj%> verschiedenem AbhÃ¤ngigkeitstyp%qE ist hier angegeben%qE nicht deklariert (erste Verwendung in dieser Funktion)%qE nicht deklariert (erstmalige Verwendung in dieser Funktion); meinten Sie %qs?%qE ist hier nicht deklariert (nicht in einer Funktion)%qE ist hier (auÃŸerhalb einer Funktion) nicht deklariert; meinten Sie %qs?%qE mit %<auto%> verwendet%qE mit %<constexpr%> verwendet%qE mit %<extern%> verwendet%qE mit %<register%> verwendet%qE mit %<typedef%> verwendet%qE mit %qs verwendet%qE mit %<link%>-Klausel wird in %<routine%>-Funktion verwendet%qE schreibt ein abschlieÃŸendes NUL hinter das Ende des Ziels%qF als %<static%> deklariert, aber nirgendwo definiert%qF erfordert %<-mvx%>%qF erfordert z14 oder hÃ¶her%qF erfordert z15 oder hÃ¶her%qF erfordert z17 oder hÃ¶her%qT und %qT sind in disjunkt benannten AdressrÃ¤umen%qT als Typ statt als einfaches %<decltype(auto)%>%qT hier deklariert%qT in zusammengesetztem %<constexpr%>-Literal deklariert%qT ist in unvollstÃ¤ndig angegebener Objektdeklaration deklariert%qT wird in unvollstÃ¤ndig spezifiziertem Objektinitialisierer deklariert%qT mit nicht zusammenpassendem KlassenschlÃ¼ssel %qs deklariert%qT mit bedeutenderer Sichtbarkeit als seine Basis %qT deklariert%qT mit bedeutenderer Sichtbarkeit als der Typ seines Feldes %qD deklariert%qT wurde hier als %qs definiert%qT in zusammengesetztem %<constexpr%>-Literal definiert%qT ist in unvollstÃ¤ndig angegebener Objektdeklaration definiert%qT wurde in unvollstÃ¤ndig angegebenem Objektinitialisierer definiert%qT ist mit direkter virtueller Basisklasse definiert%qT ist mit mehreren direkten Basisklassen definiert%qT hat nicht das ABI-Tag %E, das %qT (im Typ von %qD verwendet) hat%qT hat nicht das ABI-Tag %E, das die Basis %qT hat%qT stimmt nicht mit der ursprÃ¼nglichen Deklaration Ã¼berein%qT wurde erstmals hier als %qs deklariert%qT hat eine Basis %qT, die von Typ %qT abhÃ¤ngt, der wiederum keine Bindung hat%qT hat eine Basis %qT, die interne Bindung hat%qT hat eine Basis %qT, die keine Bindung hat%qT hat eine Basis %qT, die den anonymen Namensraum verwendet%qT hat ein Feld %q#D, dessen Typ keine Bindung hat%qT hat ein Feld %q#D, dessen Typ keine Bindung hat%qT hat ein Feld %q#D, dessen Typ den anonymen Namensbereich verwendet%qT hat ein Feld %qD, dessen Typ vom Typ %qT abhÃ¤ngt, der wiederum keine Bindung hat%qT hat hier eine vorherige Deklaration%qT hat kein Element namens %qE%qT hat kein Element namens %qE; meinten Sie %qE?%qT hat keinen Namen und kann nicht von Ã¤hnlichen Lambdas in anderen TUs unterschieden werden%qT hat keinen Namen und ist nicht innerhalb einer Klasse, Funktion oder eines Initialisierers definiert%qT hat kein nicht-statisches Datenelement namens %qD%qT ist ein variabel modifizierter Typ%qT ist bereits ein Â»friendÂ« von %qT%qT ist eine mehrdeutige Basisklasse des dynamischen Typen %qT seines Operanden%qT ist mehrdeutige Basis von %qT%qT ist eine nicht erreichbare Basis von %qT%qT ist keine Basis von %qT%qT ist keine Klasse oder Namensbereich%qT ist kein Klassentyp%qT ist weder eine Klasse, noch ein Namensbereich oder eine AufzÃ¤hlung%qT ist kein Klassen-, Struktur- oder Union-Typ%qT ist keine direkte Basis von %qT%qT ist kein Elementklassentemplate von %qT%qT ist kein Element von %qT%qT ist keine geschachtelte Klasse von %qT%qT ist kein Zeiger auf Objekt%qT ist kein Template%qT ist kein Template-Typ%qT ist kein gÃ¼ltiger Typ fÃ¼r einen Nichttyp-Templateparameter, da er nicht strukturell ist%qT ist kein %<asm%>-Qualifizierer%qT ist keine erreichbare Basis von %qT%qT ist kein AufzÃ¤hlungstyp%qT auf %qT erweitert beim Durchlaufen von %<...%>%qT ist/verwendet anonymen Typen%qT beabsichtigt mÃ¶glicherweise nicht, Argumentherleitung fÃ¼r Klassentemplates zu unterstÃ¼tzen%qT ist in einem Templateargument nicht erlaubt%qT als %qs verwendet%qT als enum verwendet%qT wird in %qT aufgelÃ¶st, aber das ist kein Klassentyp%qT wird in %qT aufgelÃ¶st, was kein AufzÃ¤hlungstyp istunbenanntes temporÃ¤res Objekt %qT wird hier definiert%qT%d%qE%dder einzelne Vektor %qT wird an Argument %d von %qE Ã¼bergeben, das erwartet jedoch ein Tupel von %d Vektoren%qV-Qualifizierer kÃ¶nnen nicht auf %qT angewendet werden%qc-Umwandlung wird unescapet verwendetUmwandlung %qc wird innerhalb einer q-Folge benutztDie Direktive %qc ist redundant, da sie bereits vorgekommen ist%qc in einem Eingabeoperanden auÃŸerhalb einer Funktion%qc in Ausgabeoperand auÃŸerhalb einer Funktion%qs%qs auf der linken Seite einer Zuweisung%s auf der linken Seite einer Clobber-Anweisung%qs greift auf das uninitialisierte Byte an Offset %d zu%qs bereits als spezifische Bindung fÃ¼r das generische %qs bei %C definiert%qs und %<%s-%s%> sind unvertrÃ¤glich%qs und %<%s=%s%> sind unvertrÃ¤glich%qs und %qs sind unvertrÃ¤glichArgumente %qs und %qs des intrinsischen %qs bei %L mÃ¼ssen gleiche Form haben.Argumente %qs und %qs des intrinsischen %qs bei %L mÃ¼ssen denselben Typ habenAttribute %qs und %qs sind nicht vertrÃ¤glich%qs und %qs kÃ¶nnen nicht gemischte FUNCTION/SUBROUTINE fÃ¼r GENERIC %qs bei %L sein%qs und %qs kÃ¶nnen nicht gleichzeitig eingeschaltet sein%qs und %qs fÃ¼r GENERIC %qs bei %L sind mehrdeutig%qs kommt mehr als einmal in %<allocate%> bei %L vor%qs scheint ein falsch geschriebener %qs-Handler zu sein, das PrÃ¤fix %<__vector%> fehlt%qs wird auf einen void-Typ angewendet%qs wird auf einen unvollstÃ¤ndigen Typ angewendet%qs angewendet auf Nicht-RVV-Typ %qT%qs angewendet auf Nicht-SVE-Typ %qT%qs angewendet auf den Nicht-Vektor-Typ %qT%qs angewendet auf den Typ %qT, der bereits eine GrÃ¶ÃŸe hatArgument %qs hat ungÃ¼ltige Operandennummer (Argument %lu)Argument fÃ¼r %qs hat kein abschlieÃŸendes nul-ZeichenArgument %qs des intrinsischen %qs bei %L kann nicht INTENT(IN) seinArgument %qs des intrinsischen %qs bei %L kann nicht Typ %s habenArgument %qs des intrinsischen %qs bei %L hat ungÃ¼ltige Permutation der Dimensionen (Dimension %qd doppelt)Argument %qs des intrinsischen %qs bei %L hat ungÃ¼ltige Form in Dimension %d (%ld/%ld)Argument %qs des intrinsischen %qs bei %L hat negatives Element (%d)Argument %qs des intrinsischen %qs bei %L hat Dimension auÃŸerhalb des Wertebereiches (%d)Argument %qs des intrinsischen %qs bei %L hat falsche Anzahl der Elemente (%d/%d)Argument %qs des intrinsischen %qs bei %L ist leerArgument %qs des intrinsischen %qs bei %L ist kein gÃ¼ltiger DimensionsindexArgument %qs des intrinsischen %qs bei %L muss %s seinArgument %qs des intrinsischen %qs bei %L muss %s oder %s seinArgument %qs des intrinsischen %qs bei %L muss ALLOCATABLE seinArgument %qs des intrinsischen %qs bei %L muss ein INTEGER seinArgument %qs fÃ¼r intrinsisches %qs bei %L muss INTEGER oder PROCEDURE seinArgument %qs des intrinsischen %qs bei %L muss INTEGER oder REAL seinArgument %qs des intrinsischen %qs bei %L muss INTEGER, REAL oder CHARACTER seinArgument %qs des intrinsischen %qs bei %L muss INTEGER, REAL, CHARACTER oder UNSIGNED seinArgument %qs des intrinsischen %qs bei %L muss INTEGER, REAL oder UNSIGNED seinArgument %qs des intrinsischen %qs bei %L muss INTEGER oder UNSIGNED seinArgument %qs der intrinsischen Funktion %qs bei %L muss INTEGER, LOGICAL oder ein BOZ-Literal seinArgument %qs des intrinsischen %qs bei %L muss INTEGER, REAL oder UNSIGNED seinArgument %qs des intrinsischen %qs bei %L muss REAL oder COMPLEX seinArgument %qs des intrinsischen %qs bei %L muss ein POINTER seinArgument %qs des intrinsischen %qs bei %L muss ein POINTER oder ein TARGET seinArgument %qs des intrinsischen %qs bei %L muss POINTER, ALLOCATABLE oder Prozedurzeiger seinArgument %qs des intrinsischen %qs bei %L muss eine Konstante seinArgument %qs des intrinsischen %qs bei %L muss eine DatenentitÃ¤t seinArgument %qs des intrinsischen %qs bei %L muss ein logisches Feld seinArgument %qs des intrinsischen %qs bei %L muss ein Zeiger oder Ziel VARIABLE oder FUNCTION seinArgument %qs des intrinsischen %qs bei %L muss ein Skalar seinArgument %qs des intrinsischen %qs bei %L muss eine Variable seinArgument %qs des intrinsischen %qs bei %L muss ein Feld seinArgument %qs des intrinsischen %qs bei %L muss austauschbare DatenentitÃ¤t sein: %sArgument %qs des intrinsischen %qs bei %L muss ein Standard-Real seinArgument %qs des intrinsischen %qs bei %L muss doppelte Genauigkeit habenArgument %qs fÃ¼r intrinsisches %qs bei %L muss geringer als Rang %d seinArgument %qs des intrinsischen %qs bei %L muss numerisch oder LOGICAL seinArgument %qs des intrinsischen %qs bei %L muss eine Scheinvariable seinArgument %qs des intrinsischen %qs bei %L darf von der Art nicht breiter als der Standard (%d) seinArgument %qs des intrinsischen %qs bei %L muss eine OPTIONALe Scheinvariable seinArgument %qs des intrinsischen %qs bei %L muss erweiterbaren Typ habenArgument %qs des intrinsischen %qs bei %L muss ein intrinsischer Typ seinArgument %qs des intrinsischen %qs bei %L muss von der Art %d seinArgument %qs des intrinsischen %qs bei %L muss vom Rang %d seinArgument %qs des intrinsischen %qs bei %L muss vom Rang 1 oder 2 seinArgument %qs des intrinsischen %qs bei %L muss positiv seinArgument %qs des intrinsischen %qs bei %L muss von der selben Art wie %qs seinArgument %qs des intrinsischen %qs bei %L muss vom gleichen Typ und gleicher Art wie %qs seinArgument %qs des intrinsischen %qs bei %L muss ein numerischer Typ sein%qs-Argument des intrinsischen %qs bei %L muss vom Typ REAL oder INTEGER seinArgument %qs des intrinsischen %qs bei %L muss mindestens die LÃ¤nge 1 habenArgument %qs des intrinsischen %qs bei %L muss den selben Rang wie %qs haben oder skalar seinArgument %qs des intrinsischen %qs bei %L darf nicht OPTIONAL seinArgument %qs des intrinsischen %qs bei %L darf kein Unterobjekt von %qs seinArgument %qs des intrinsischen %qs bei %L darf nicht vorhanden sein, wenn %<x%> COMPLEX istArgument %qs des intrinsischen %qs bei %L muss mindestens so viele Elemente haben wie es .TRUE.-Werte %qs (%ld/%d) gibtArgument %qs des intrinsischen %qs bei %L ist noch nicht unterstÃ¼tzt%qs-Argument des intrinsischen %qs bei %L darf nur vorkommen, wenn %qs vom Typ REAL und %qs vom Typ INTEGER oder UNSIGNED istArgument %qs des intrinsischen %qs bei %L muss vom Typ integer, read oder character seinArgument %qs des intrinsischen %qs bei %L muss vom Typ CHARACTER(KIND=C_CHAR) seinArgument %qs des intrinsischen %qs bei %L muss vom gleichen Typ und gleicher Art wie %qs bei %L seinArgument %qs des intrinsischen %qs bei %L darf nicht TYPE(*) seinArgument %qs des intrinsischen %qs bei %L darf nicht UNSIGNED seinArgument %qs des intrinsischen %qs bei %L darf keine Prozedur seinArgument %qs des intrinsischen %qs bei %L darf kein Feld impliziter GrÃ¶ÃŸe seinArgument %qs des intrinsischen %qs bei %L darf keinen Koindex habenArgument %qs des intrinsischen %qs bei %L muss eine gÃ¼ltige Ganzzahlart seinArgument %qs des intrinsischen %qs bei %L muss Rang %d haben oder ein Skalar seinArgument %qs referenziert Nicht-Zeiger-Operanden (Argument %lu, Operand %lu)Argument %qs mit Operandennummer auÃŸerhalb des Wertebereiches (Argument %lu, Operand %lu)%qs als Basis, es ist jedoch ein Nicht-Register erforderlich%qs bei %C ist eine DEC-Erweiterung, muss mit %<-fdec-structure%> eingeschaltet werden%qs bei %C ist bereits als FINAL-Prozedur definiert%qs bei %C ist kein Element der Struktur %qs%qs bei %C ist kein Element der Struktur %qs; meinen Sie %qs?%qs bei %C ist keine Variable%qs bei %C ist keine Ermittlungsreferenz auf eine intrinsische Typkomponente%qs bei %C ist keine Ermittlungsreferenz auf eine intrinsische Typkomponente %qs%qs bei %C ist der Name einer rekursiven Funktion und verweist damit auf die Ergebnisvariable. FÃ¼r direkte Rekursion, eine explizite RESULT-Variable verwenden (12.5.2.1)%qs bei %L wurde bereits bei %L initialisiert%qs ist bei %L mit Ausdruck verbunden und kann nicht in Variablen-Definitionskontext (%s) verwendet werden%qs bei %L ist mit einer Zeigerfunktion verbunden, die in einem Variablendefinitionskontext verwendet wird (%s)%qs ist bei %L mit vektorindiziertem Ziel verbunden und kann nicht in Variablen-Definitionskontext (%s) verwendet werden%qs bei %L kann nicht in COMMON auftreten [F2008:C5100]%qs bei %L kann nicht das VALUE-Attribut haben, da es kein Scheinargument ist%qs bei %L hat %d, erfordert aber %d Scheinargumente der Art %<omp_interop_kind%>, da es mit der %<append_args%>-Klausel bei %L verwendet wird%qs bei %L hat einen Typen, der nicht zum CALL bei %L passt%qs bei %L hat auÃŸerhalb seines INTERFACE-KÃ¶rpers spezifizierte Attribute%qs bei %L hat Attribut CONTIGUOUS, aber ist kein Feldzeiger oder Feld vermuteter GrÃ¶ÃŸe oder Rang%qs bei %L in %qs-Klausel muss eine skalare Ganzzahlvariable der Art %<omp_interop_kind%> sein%qs bei %L in der %qs-Klausel muss definierbar sein%qs bei %L ist eine Redefinition der Deklaration in der entsprechenden Schnittstelle fÃ¼r MODUL PROCEDURE %qs%qs bei %L ist mehrdeutig%qs bei %L ist ein Feld und OPTIONAL; wenn es fehlt, kann es nicht das effektive Argument einer ELEMENTAL-Prozedur sein, es sei denn, es gibt ein nicht-optionales Argument mit demselben Rang (Fortran 2018, 15.5.2.12)%qs bei %L ist Host-verbunden bei %L in eine enthaltene Prozedur mit einer gleichnamigen internen Prozedur%qs bei %L ist kein VALUE%qs bei %L ist keine Funktion%qs bei %L ist keine Modulprozedur%qs bei %L ist vom ABSTRACT-Typ %qs%qs bei %L ist Teil des gemeinsamen Blocks %</%s/%> und kann nur implizit Ã¼ber den genannten gemeinsamen Block spezifiziert werden%qs bei %L ist mehrfach angegeben%qs bei %L darf kein Zeiger sein und auch kein nichtallozierbares skalares ganzzahliges Scheinargument der Art %<omp_interop_kind%> sein, da es mit der %<append_args%>-Klausel bei %L verwendet wird%qs bei %L muss kleiner als BIT_SIZE(%qs) sein%qs bei %L muss kleiner oder gleich BIT_SIZE(%qs) sein%qs bei %L muss kleiner oder gleich der BIT_SIZE von INTEGER(KIND=%d) sein%qs bei %L darf nicht negativ sein%qs bei %L muss in diesem Zusammenhang konstante ZeichenlÃ¤nge haben%qs bei %L muss die gleiche Anzahl formaler Argumente wie die Ã¼berschriebene Prozedur haben%qs bei %L darf nicht DEFERRED sein, da es eine Nicht-DEFERRED-Bindung Ã¼berschreibt%qs bei %L Ã¼berschreibt eine FUNCTION und muss auch eine FUNCTION sein%qs bei %L Ã¼berschreibt eine NOPASS-Bindung und muss ebenfalls NOPASS sein%qs bei %L Ã¼berschreibt eine PUBLIC-Prozedur und darf nicht PRIVATE sein%qs bei %L Ã¼berschreibt eine PURE-Prozedur und muss auch PURE sein%qs bei %L Ã¼berschreibt eine SUBROUTINE und muss auch eine SUBROUTINE sein%qs bei %L Ã¼berschreibt eine Bindung mit PASS und muss ebenfalls PASS sein%qs bei %L Ã¼berschreibt eine Nicht-ELEMENTAL-Prozedur und darf ebenfalls nicht ELEMENTAL sein%qs bei %L Ã¼berschreibt eine Prozedurbindung, die als NON_OVERRIDABLE deklariert ist%qs bei %L Ã¼berschreibt eine ELEMENTAL-Prozedur und muss auch ELEMENTAL sein%qs bei %L muss eine %<INTENT(OUT)%>-Variable sein%qs bei %L sollte eine FUNCTION sein%qs bei %L sollte eine SUBROUTINE sein%qs bei %L sollte ein Skalar vom Typ integer(kind=omp_event_handle_kind) sein%qs bei %L mit OPTIONAL-Attribut nicht unterstÃ¼tzt, wenn es mit der %<append_args%>-Klausel bei %L verwendet wirdAttribut %qs gilt nur fÃ¼r variadische FunktionenAttribut-Direktive %qs ignoriertAttribut %qs akzeptiert keine ArgumenteAttribut %qs wird ignoriertAttribut %qs wird an nicht-ISR-Funktionen ignoriertAttribut %qs wird fÃ¼r %qE in %<__builtin_has_attribute%> nicht unterstÃ¼tztAttribut %qs wird fÃ¼r %qT in %<__builtin_has_attribute%> nicht unterstÃ¼tztAttribut %qs wird in %<__builtin_has_attribute%> nicht unterstÃ¼tztAttribut %qs gilt nur fÃ¼r FunktionenAttribut %qs gilt nur fÃ¼r variadische FunktionenAttribut %qs benÃ¶tigt Prototypen mit benannten ArgumentenAttribut %qs ohne Argumente fÃ¼r einen Nicht-Prototyp%qs kann nicht in einem Konstanten-Ausdruck auftreten%qs kann nicht in einer typedef-Deklaration auftreten%qs kann nicht als konstanter Ausdruck ausgewertet werden, da das Argument nicht codiert werden kann%qs kann nicht als konstanter Ausdruck ausgewertet werden, da das Argument nicht interpretiert werden kann%qs kann nicht als konstanter Ausdruck ausgewertet werden, da der Typ zu groÃŸ ist%qs kann auf diesem Ziel nicht als konstanter Ausdruck ausgewertet werden%qs kann nicht mittels %<typedef%> definiert werden%qs kann bei %C nicht erweitert werden, da es BIND(C) ist%qs kann bei %C nicht erweitert werden, da es ein SEQUENCE-Typ ist%qs kann nicht mit %<-ftrivial-auto-var_init%> initialisiert werden%qs kann nicht zum Ãœbersetzen einer gemeinsam genutzten Bibliothek verwendet werden%qs kann nicht fÃ¼r Typdeklarationen verwendet werdenÂ»%sÂ« kann hier nicht verwendet werden%qs kann nicht in einer %<constexpr%>-Funktion verwendet werden%qs kann nicht in einem Konstruktor verwendet werden%qs kann nicht in einem Destruktor verwendet werden%qs kann nicht in einer Funktion mit einem abgeleiteten RÃ¼ckgabetyp verwendet werden%qs kann nicht in einer varargs-Funktion verwendet werden%qs kann nicht in der Funktion %<main%> verwendet werden%qs kann nicht auÃŸerhalb einer Funktion verwendet werdenArgument der %s-Klausel bei %L muss ALLOCATABLE oder ein POINTER sein%qs-Klausel bei %L ist mehrfach angegebenKlausel %qs ist unvertrÃ¤glich mit den Klauseln %<read%> oder %<write%>%qs-Klausel darf nur bei rechteckigen %qs vorkommen%qs-Klausel erfordert %qs-Klausel%qs-Klausel darf nicht zusammen mit %<inscan%>-%<reduction%>-Klausel verwendet werden%qs-Klausel wird lexikalisch nach dem ersten Zielkonstrukt oder nach der ersten Auslagerungs-API verwendet%qs-Klausel mit %<sink%>-Modifizierer verweist auf Iteration, die niemals im Iterationsraum ist%qs-Klausel mit %<sink%>-Modifizierer wartet auf lexikalisch spÃ¤tere Iteration%qs-Klausel mit %<source%>-Modifizierer zusammen mit %qs-Klauseln mit %<sink%>-Modifizierer an demselben Konstrukt%qs mit Qualifizierer %<auto%> fÃ¼r %qE kombiniert%qs mit Qualifizierer %<register%> fÃ¼r %qE kombiniert%qs widerspricht %<-arch i386%> (%qs wird ignoriert)%qs widerspricht %<-arch ppc%> (%qs wird ignoriert)%qs-Konstrukt innerhalb einer %qs-RegionINTRINSIC deklariertes %qs bei %L existiert nicht%qs als Funktion, die eine Funktion zurÃ¼ckgibt, deklariert%qs als Funktion, die ein Feld zurÃ¼ckgibt, deklariertBei %2$L deklariertes %1$qs ist auch der Name einer intrinsischen Funktion. Sie kann nur Ã¼ber eine explizite Schnittstelle oder als EXTERNAL deklariert aufgerufen werden.Bei %2$L deklariertes %1$qs Ã¼berdeckt intrinsische Funktion mit gleichem Namen. Um die aufzurufen, sind explizite INTRINSIC-Deklarationen erforderlich.%qs in einem Nicht-Klassen-GÃ¼ltigkeitsbereich definiert%qs nicht in Klassen-GÃ¼ltigkeitsbereich definiert%qs ist definiert, ohne vorher %qs zu definierenDie %qs-Direktive bei %L, die mit einer ALLOCATE-Anweisung verbunden ist, muss eine ausfÃ¼hrbare Anweisung oder ein OpenMP-Konstrukt vorausgehen; beachten Sie, dass die Variablen in der Liste alle das Attribut allocatable oder pointer habenDie %qs-Direktive bei %L muss entweder ein Variablenargument haben oder, wenn sie mit einer ALLOCATE-Anweisung verknÃ¼pft ist, muss ihr eine ausfÃ¼hrbare Anweisung oder ein OpenMP-Konstrukt vorausgehen%qs-Direktive wird sowohl in ABSENT- als auch CONTAINS-Klauseln in %s-Direktive bei %L erwÃ¤hnt%qs-Direktive wird mehrfach in %s-Klausel in Â»%sÂ«-Direktive bei %L erwÃ¤hnt%qs unterstÃ¼tzt keinen MIPS16-Code%qs unterstÃ¼tzt %qs nicht%qs funktioniert nicht auf einem Cross-CompilerEntitÃ¤t %qs bei %L kann keine Initialisierung habenEntitÃ¤t %qs bei %C kann keine Argumente haben%qs erfordert 1 Argument, aber %d wurden angegeben%qs erwartet 2 Argumente, aber %d wurden angegeben%qs erwartet ein konstantes Argument%qs erwartet einen Festkommawert als Argument%qs erwartet einen Festkommawert als erstes Argument%qs erwartet einen Ganzzahlwert als zweites Argument%qs-Ausdruck muss ganzzahlig sein%qs-Ausdruck von %<volatile%>-qualifiziertem Typ ist veraltet%qs fehlgeschlagenFeature-Modifizierer %qs vertrÃ¤gt sich nicht mit der Verwendung von GleitkommatypenFeature-Modifizierer %qs vertrÃ¤gt sich nicht mit der Verwendung von VektortypenFunktion %qs kann keine Argumente haben%qs-Funktion kann keine andere Interrupt-Art habenFunktion %qs kann keinen Wert zurÃ¼ckgebenFunktion %qs verwendet Typspezifikation %<auto%> ohne folgenden RÃ¼ckgabetypenFunktion %qs mit nachgestelltem RÃ¼ckgabetyp hat %<decltype(auto)%> als Typ statt einfachem %<auto%>Funktion %qs mit folgendem RÃ¼ckgabetypen hat %qT als seinen Typ statt einfaches %<auto%>Funktion %qs mit nachfolgendem RÃ¼ckgabetypen hat eingeschrÃ¤nkte %<auto%>-Typangabe statt des einfachen %<auto%>Funktion %qs mit folgendem RÃ¼ckgabetypen nicht mit Typspezifikation %<auto%> deklariert%qs hat %qs%qs hat sowohl %<extern%> als auch Initialisierung%qs Ã¼bergelaufen%qs in %<%s %E%>%qs in der %s-Klausel bei %L ist ein Array-Abschnitt der GrÃ¶ÃŸe Null%qs in %s-Klausel bei %L ist kein korrekter Feldabschnitt%qs in ALIGNED-Klausel bei %L erfordert einen skalaren, positiven, konstanten Ganzzahlausdruck fÃ¼r die Ausrichtung%qs in ALIGNED-Klausel bei %L muss POINTER, ALLOCATABLE, Cray-Zeiger oder C_PTR sein%qs in EXTENDS-Ausdruck bei %C ist kein abgeleiteter Typ%qs in LINEAR-Klausel bei %L benÃ¶tigt einen konstanten, ganzzahligen linear-step-Ausdruck oder ein Dummy-Argument, das in der UNIFORM-Klausel angegeben ist%qs in LINEAR-Klausel bei %L benÃ¶tigt einen skalaren, ganzzahligen linear-step-Ausdruck%qs beginnt in der Attributsyntax, wird aber mit %qs in der Pragmasyntax abgeschlossen%qs in leerer Deklaration%qs in leerer Deklaration mit auf %<enum%> basierendem Typen%qs in GIMPLE-IL%qs beginnt in der Pragmasyntax, wird aber mit %qs in der Attributsyntax abgeschlossen%qs in Zeigerzuweisung bei %L kann kein L-Wert sein, da es eine Prozedur ist%qs in Variablen-Definitionskontext (%s) bei %L ist keine Variable%qs inkompatibel mit explizit ausgeschalteten Optionen%qs initialisiert und als %<extern%> deklariert%qs in non-mode-precision OperandenDas intrinsische Unterprogramm %qs bei %L wurde entfernt. Verwenden Sie das intrinsische Unterprogramm INT.intrinsisches %qs mit CHARACTER-Argument bei %Lintrinsisches %qs mit KIND-Argument bei %Lintrinsisches %qs mit RADIX-Argument bei %L%qs ist in der AVR-LibC ein veralteter Bezeichner. ErwÃ¤gen Sie %<#include <avr/interrupt.h>%> oder %<#include <compat&deprecated.h>%> vor der Benutzung des Makros %qs%qs ist ab %qs ein SchlÃ¼sselwort%qs ist eine geschachtelte Funktion, Zugriff von %qs aus ist nicht mÃ¶glich%qs ist in der AVR-LibC ein reservierter Bezeichner. ErwÃ¤gen Sie %<#include <avr/interrupt.h>%> vor der Benutzung des Makros %qs%qs bereits aus Host-Sichtbarkeitseinheit bei %C IMPORTiert%qs ist ein ungÃ¼ltiges Argument fÃ¼r %<-mcpu=%>%qs ist ein undurchsichtiger Typ, und Sie kÃ¶nnen ihn nicht auf andere Werte setzen%qs ist eine unbekannte Option fÃ¼r %<-save-temps%>%qs ist beschÃ¤digt%qs ist definiert, konnte aber nicht geladen werden: %s%qs ist definiert, aber die Plugin-UnterstÃ¼tzung ist deaktiviert%qs ist im Header %qs definiert; das ist wahrscheinlich behebbar, indem Sie %<#include %s%> hinzufÃ¼gen%qs ist definiert, wenn die Option %qs verwendet wird; das ist wahrscheinlich behebbar, indem Sie %qs zu den Kommandozeilenoptionen hinzufÃ¼gen%qs ist veraltet%qs ist veraltet und wird unter keinen UmstÃ¤nden empfohlen%qs ist veraltet; stattdessen -fno-zero-initialized-in-bss verwenden%qs ist veraltet; stattdessen -fstack-check verwenden%qs wird durch %<-m%s%> ausgeschaltet, da es %<%s%s%> erfordert%qs vertrÃ¤gt sich nicht mit %<-mword-relocations%>%qs ist mit %qs unvertrÃ¤glich%qs vertrÃ¤gt sich nicht mit der Verwendung von Gleitkommatypen%qs vertrÃ¤gt sich nicht mit der Verwendung von Vektortypen%qs ist geladen, aber das Symbol %qs wurde nicht gefunden: %s%qs und %qs schlieÃŸen sich gegenseitig aus und kÃ¶nnen nicht zusammen angegeben werden%qs ist schmaler als die Werte seines Typsin der gepunkteten Zeichenkette bei %2$C ist %1$qs weder ein definierter Operator noch eine Strukturkomponente%qs ist kein konstanter Ausdruck, da %qT einen Zeiger-auf-Element-Typen enthÃ¤lt%qs ist kein konstanter Ausdruck, da %qT einen Zeigertyp enthÃ¤lt%qs ist kein konstanter Ausdruck, da %qT einen Referenztypen enthÃ¤lt%qs ist kein konstanter Ausdruck, da %qT einen union-Typen enthÃ¤lt%qs ist kein konstanter Ausdruck, da %qT ein %<volatile%>-Teilobjekt enthÃ¤lt%qs ist kein konstanter Ausdruck, da %qT ein Zeiger-auf-Element-Typ ist%qs ist kein konstanter Ausdruck, da %qT ein Zeigertyp ist%qs ist kein konstanter Ausdruck, da %qT ein Referenztyp ist%qs ist kein konstanter Ausdruck, da %qT ein union-Typ ist%qs ist kein konstanter Ausdruck, da %qT %<volatile%> ist%qs ist kein Verzeichnis%qs ist kein Feld, sondern ein %qs%qs ist keine gcov-Datei%qs ist weder ein gÃ¼ltiger Name einer Modula-2-Systembibliothek noch eine AbkÃ¼rzung dafÃ¼r%qs ist kein gÃ¼ltiges Basisregister in %<-mstack-protector-guard-reg=%>%qs ist in %qs kein gÃ¼ltiges Basisregister%qs ist keine gÃ¼ltige Zahl in %<-mstack-protector-guard-offset=%>%qs ist in %qs keine gÃ¼ltige Zahl%qs ist kein gÃ¼ltiger Offset in %<-mstack-protector-guard-offset=%>%qs ist in %qs kein gÃ¼ltiger Offset%qs ist keine gÃ¼ltige PrÃ¤prozessoroption%qs ist kein assoziatives Array%qs ist kein Ausdruck%qs ist kein intrinsischer Wert, der von Â»inlineÂ« steuerbar ist%qs ist keine Option, die Warnungen steuert%qs ist nicht als ein Typ definiert%qs wird von der Architektur %qs nicht unterstÃ¼tzt%qs wird fÃ¼r 64-Bit-Darwin nicht unterstÃ¼tzt; es ist mit den installierten C- und C++-Bibliotheken unvertrÃ¤glich%qs wird auf diesem Ziel nicht unterstÃ¼tzt%qs wird im 32-Bit-Modus nicht unterstÃ¼tzt%qs wird von dieser Compiler-Konfiguration nicht unterstÃ¼tzt%qs wird in dieser Konfiguration nicht unterstÃ¼tzt%qs wird auf Â»little endianÂ«-Systemen nicht unterstÃ¼tzt%qs wird auf diesem Ziel nicht unterstÃ¼tzt%qs wird mit %qs nicht unterstÃ¼tzt%qs wird nicht unterstÃ¼tzt, das cmodel ist auf %qs festgelegtungÃ¼ltiger Wert %qs fÃ¼r %<-mmacosx-version-min%>%qs ist fÃ¼r %qs ungÃ¼ltig%qs hat PRIVATE-Typ und kann kein Scheinargument von %qs bei %L sein, das PUBLIC ist%qs wird nur unterstÃ¼tzt, wenn %<-mrvv-vector-bits=zvl%> angegeben ist%qs ist nicht initialisiert, wird aber benutzt%qs hat Version %q.*s, Version %q.*s erwartetAusdruck fÃ¼r %qs-LÃ¤nge muss ganzzahlig seinAusdruck fÃ¼r %qs-LÃ¤nge muss ganzzahlig, positiv und konstant sein%qs wird in der Anweisung %<allocate%> bei %L aufgefÃ¼hrt, ist aber weder explizit in der Direktive %<!$OMP ALLOCATE%> aufgefÃ¼hrt noch existiert eine Richtlinie ohne Argumentenliste%qs-Matchingvariante ist veraltetpassende %qs-Variante erfordert z14 oder hÃ¶herpassende %qs-Variante erfordert z15 oder hÃ¶herpassende %qs-Variante erfordert z17 oder hÃ¶her%qs kÃ¶nnte uninitialisiert verwendet werden%qs kann nur mit einem einzelnen Deklarator verwendet werden%qs bei %L muss eine Modulprozedur oder eine externe Prozedur mit expliziter Schnittstelle sein%qs muss fÃ¼r sich allein stehen, fÃ¼r %<-mharden-sls=%>%qs muss vom gleichen Typ und gleicher Art wie %qs bei %L in %qs sein%qs muss die erste Klausel von %qs sein%qs muss mit %qs verwendet werden%qs darf nicht bei %L in einer Feldspezifikation in der gleichen ALLOCATE-Anweisung auftreten, wo es selbst alloziert wird%qs erfordert ein gÃ¼ltiges Basisregister%qs ist auÃŸerhalb der STRUCTURE bei %C nicht erlaubt%qs nicht an Elementgrenze%qs wird vom Assembler nicht unterstÃ¼tzt%qs wird in Kombination mit %<-msoft-float%> nicht unterstÃ¼tzt%qs wird noch nicht unterstÃ¼tzt%qs von %qs bei %L ist PRIVATEBei %3$C importiertes %1$qs von Modul %2$qs ist auch der Name der aktuellen ProgrammeinheitOperand von %qs ohne Modus-Genauigkeit%qs wird nur in OpenACC-Code unterstÃ¼tzt%qs unterstÃ¼tzt nicht-PIC-Code nur auf M-Profil-Zielen%qs unterstÃ¼tzt nicht-PIC-Code nur auf M-Profil-Zielen mit dem MOVT-BefehlOperand fÃ¼r %qs hat keinen Ganzzahltypdie Option %qs kann nur fÃ¼r Offload-Compiler angegeben werdenParameterabfrage %qs fÃ¼r %qs in Variablen-Definitionskontext (%s) bei %LPlugin %qs steht nicht unter einer GPL-kompatiblen LizenzZeiger %qs ist nullDatei fÃ¼r ProfilingzÃ¤hlerdaten %qs wurde nicht gefundenEigenschaft %qs kann nicht gesetzt werden%qs-Region darf nicht innerhalb einer Region eng geschachtelt sein, die arbeitsteilend, %<loop%>, explizit %<task%> oder %<taskloop%> ist%qs erfordert UnterstÃ¼tzung des Typs %<__ibm128%>%qs erfordert, dass %<long double%> das IBM-128-Bit-Format ist%qs erfordert %qs%qs erfordert %qs oder %qs%qs erfordert PowerPC64-Architektur, wird eingeschaltet%qs erfordert VSX-UnterstÃ¼tzung%qs erfordert ein Ziel, das den %qs-Befehl unterstÃ¼tzt%qs benÃ¶tigt eine initialisierte Datendeklaration%qs erfordert eine konstante Ganzzahl%qs erfordert einen konstanten Ganzzahlausdruck%qs erfordert sprungwahrscheinliche Befehle%qs erfordert vollstÃ¤ndige UnterstÃ¼tzung von ISA 2.06%qs erfordert vollstÃ¤ndige UnterstÃ¼tzung von ISA 3.0%qs erfordert Gleitkomma-Arithmetik mit VierfachprÃ¤zision%qs erfordert die Optionen %qs und %qs%qs erfordert die Option %qs%qs erfordert die Option %qs, zusÃ¤tzlich entweder %qs oder %qs%qs sollte %qs sein, um eine Templateargumentliste zu beenden%qs sollte von einem Skalar auf einen gleichartigen Vektor abbildendurch %qs angegebene Grenze %s Ã¼berschreitet die maximale ObjektgrÃ¶ÃŸe %Edurch %qs angegebene Grenze %s Ã¼berschreitet die GrÃ¶ÃŸe %E des nicht abgeschlossenen Arraysdurch %qs angegebene Grenze %s Ã¼berschreitet die MaximalgrÃ¶ÃŸe %E des nicht abgeschlossenen Arraysdurch %qs angegebene Grenze %s Ã¼berschreitet mÃ¶glicherweise die MaximalgrÃ¶ÃŸe %E des nicht abgeschlossenen Arrays%qs fÃ¼r Â»autoÂ«-Variable %qE angegeben%qs fÃ¼r Parameter %qE angegeben%qs fÃ¼r Strukturfeld angegeben%qs fÃ¼r Strukturfeld %qE angegeben%qs fÃ¼r unbenannten Parameter angegeben%qs ist in %<allocate%> bei %L angegeben, aber nicht in der verknÃ¼pften ALLOCATE-Anweisung%qs ist in %<allocate%>-Klausel bei %L angegeben, aber nicht in einer expliziten Privatisierungs-Klausel%qs ist in derselben Option mehrfach angegeben%qs mit %<decltype%> angegeben%qs mit %<typeof%> angegeben%qs mit %qT angegeben%qs mit typedef-name %qD angegeben%qs gibt eine widersprÃ¼chliche Stufe der ParallelitÃ¤t ander Operand %2$qE der %1$qs Anweisung bezieht sich auf eine Schleife auÃŸerhalb ihres KÃ¶rpersZeichenkette %qs ist falsch geformt%qs-Symbol %q+D muss statische Bindung haben%qs-Symbol %q+D zielt letztendlich auf sich selbst abMarkierung %qs bei Benennung von %q#T verwendet%qs wird in dieser ABI nicht unterstÃ¼tzt%qs mit %<auto%> verwendet%qs mit %qE verwendet%qs verwendet dynamische Stapelanforderung%qs verwendet Register r29Wert %qs muss positiv seinVariable %qs ist weder Zeiger noch ArrayVariable %qs ist weder Zeiger noch Referenz auf ZeigerVariable %qs ist weder Zeiger noch Array noch Referenz auf Zeiger oder ArrayVariable %qs muss ein Zeiger sein%qs wurde hier deklariert%qs ohne entsprechendes %qs%s: [%u] Falsches %<next_regno%> fÃ¼r leere Kette (%u)%s: [%u] Falsches %<oldest_regno%> (%u)%s: [%u] Nicht leeres Register in Kette (%s %u %i)%s: Zyklus in %<next_regno%>-Kette (%u)%r%s:%d:%R   %r%s:%d:%d:%R   %s%s
  %s ist identisch mit %s.Â»%s !$ACC LOOPÂ«-Schleifen bei %L nicht perfekt geschachtelt%s %#qD%s %#qS%s %<%s(%E)%> %p %d%s %e erwartet ein passendes Argument %e%s %e erwartet Argumenttyp %e, aber Argument %d hat Typ %eÂ»%s %EÂ« implementiert das Protokoll %qE nicht vollstÃ¤ndig%s %qT benÃ¶tigt die V-ISA-Erweiterung%s %qT benÃ¶tigt mindestens die VektorlÃ¤nge %qd, aber %qd ist gegeben%s %qT benÃ¶tigt die ISA-Erweiterung zve32f, zve64f, zve64d oder v%s %qT benÃ¶tigt die ISA-Erweiterung zve64d oder v%s %qT benÃ¶tigt die ISA-Erweiterung zve64x, zve64f, zve64d oder v%s %qT benÃ¶tigt die ISA-Erweiterung zvfhmin oder zvfh%s %qs%s-%qs-Konstrukt innerhalb einer %s-%qs-Region%s %qs ist ein ungÃ¼ltiges Argument fÃ¼r eingebaute Funktion %qs%s %s %p %d%s %s%s
  Â»%sÂ« %wd ist auÃŸerhalb des gÃ¼ltigen Bereichs von %wd bis %wd%s: Â»%sÂ«
! %s â€“ %u-Bit-Ganzzahlen werden nicht unterstÃ¼tzt (Modus %qs)%s â€“ Komplexe Gleitkommazahlen mit %u Bit Genauigkeit werden nicht unterstÃ¼tzt (Modus %qs)%s â€“ Dezimale Gleitkommazahlen mit %u Bit Genauigkeit werden nicht unterstÃ¼tzt (Modus %qs)%s â€“ Gleitkommazahlen mit %u Bit Genauigkeit werden nicht unterstÃ¼tzt (Modus %qs)nicht unterstÃ¼tzter Modus %2$qs fÃ¼r %1$qsArgument Â»%sÂ« fÃ¼r IMAGE_INDEX muss Feld mit Rang 1 bei %L sein%s bei %C ist eine DEC-Erweiterung, muss mit %<-fdec%> eingeschaltet werden%s bei %C ist eine DEC-Erweiterung, muss mit %<-fdec-static%> eingeschaltet werden%s bei %C ist eine DEC-Erweiterung, muss mit %<-fdec-structure%> eingeschaltet werden%s bei %L%s bei %L hat keinen Vorgabe-Typ%s bei %L ist eine DEC-Erweiterung, muss mit %<-fdec-static%> eingeschaltet werden%s bei %L muss INTEGER sein%s bei %L muss skalar sein%s bei %L muss ganzzahlig seinAttribut %s auf %s %s bei %L angewendetAttribut %s bei %L ist auÃŸerhalb des Spezifikationsabschnitts eines Moduls nicht erlaubtAttribut %s steht mit Attribut %s bei %L in KonfliktAttribut %s steht mit Attribut %s in %qs bei %L in KonfliktAttribut %s ungÃ¼ltig in BLOCK DATA - Programmeinheit bei %LAttribut %s von %qs steht mit Attribut %s bei %L in Konflikt%s zwischen %L und %L%s zwischen der MODULE-PROCEDURE-Deklaration in Modul %qs und der Deklaration bei %L in (SUB)MODULE %qs%s kann bei %L keine DO-CONCURRENT-Schleife sein%s kann weder DO WHILE noch DO sein, ohne Schleifensteuerung bei %LÂ»%sÂ« kann nicht hier in %<asm%> verwendet werden%s kann keinen OpenMP-API-Aufruf im dazwischenliegenden Code bei %L enthalten%s kann keine OpenMP-Direktive im dazwischenliegenden Code bei %L enthalten%s kann keine Schleife im dazwischenliegenden Code bei %L enthaltenKlausel %s bei %L erfordert einen skalaren INTEGER-Ausdruck%s-Klausel-Variable %qs bei %L ist weder Zeiger- noch Feldtyp%s enthÃ¤lt zu viele Zeilen%s unterstÃ¼tzt %%n$-Operandennummerformate nicht%s unterstÃ¼tzt %s nicht%s unterstÃ¼tzt %s mit dem Format %<%%%c%> %s nichtInterner Fehler: %s does not support block_ends_with_call_pInterner Fehler: %s does not support block_ends_with_condjump_pInterner Fehler: %s does not support can_duplicate_block_pInterner Fehler: %s does not support can_merge_blocks_pInterner Fehler: %s does not support can_remove_branch_pInterner Fehler: %s does not support create_basic_blockInterner Fehler: %s does not support delete_basic_blockInterner Fehler: %s does not support dump_bb_for_graphInterner Fehler: %s does not support duplicate_blockInterner Fehler: %s does not support flow_call_edges_addInterner Fehler: %s does not support force_nonfallthruInterner Fehler: %s does not support make_forwarder_blockInterner Fehler: %s does not support merge_blocksInterner Fehler: %s does not support move_block_afterInterner Fehler: %s does not support predict_edgeInterner Fehler: %s does not support predicted_by_pInterner Fehler: %s does not support redirect_edge_and_branchInterner Fehler: %s does not support redirect_edge_and_branch_forceInterner Fehler: %s does not support split_blockInterner Fehler: %s does not support split_edge%s unterstÃ¼tzt das Format %<%%%c%> fÃ¼r %s nicht%s unterstÃ¼tzt das Format %<%%%s%c%> fÃ¼r %s nicht%s unterstÃ¼tzt den LÃ¤ngenmodifizierer %qs fÃ¼r %s nicht%s akzeptiert keine FeatureoptionenÂ»%sÂ« mit Status %d beendet%s erwartet eine Ganzzahlkonstante zur Kompilierzeit%s erwartet eine Ganzzahlkonstante mit dem Wert 0x01, 0x7f, 0x80 oder 0xfe als erstes Argument%s erwartet eine Long-Ganzzahlkonstante als erstes Argument zur KompilierzeitAusdrucksliste fÃ¼r Â»%sÂ« wird als zusammengesetzten Ausdruck behandelt%s aus %s wird in %s aufgerufen%s aus %s wird in %s referenziert%s ignoriert mit %s und Format %<%%%c%> fÃ¼r %s%s ignoriert mit %s im Format fÃ¼r %s%s innere Schleifen bei %L mÃ¼ssen perfekt geschachtelt sein%s innere Schleifen mÃ¼ssen perfekt verschachtelt sein mit ORDERED-Klausel bei %L%s innere Schleifen mÃ¼ssen perfekt verschachtelt sein mit REDUCTION-INSCAN-Klausel bei %L%s-Befehle sind in Funktionen mit %<no_caller_saved_registers%>-Attribut nicht erlaubt%s-Befehle sind in Exception-Serviceroutine nicht erlaubt%s-Befehle sind in Interrupt-Serviceroutine nicht erlaubt%s wird von dieser Konfiguration nicht unterstÃ¼tzt%s-Iterationsvariable bei %L ist im dazwischenliegenden Code gebunden%s-Iterationsvariable bei %L muss vom Typ integer sein%s-Iterationsvariable bei %L darf nicht THREADPRIVATE sein%s-Iterationsvariable bei %L an anderer Klausel als PRIVATE, LASTPRIVATE oder ALLOCATE gefunden%s-Iterationsvariable bei %L an anderer Klausel als PRIVATE, LASTPRIVATE, ALLOCATE oder LINEAR gefunden%s-Iterationsvariable bei %L wird in mehr als einer Schleife verwendetGrenzen der Â»%sÂ«-Schleife bei %L verweisen auf unterschiedliche IterationsvariablenAusdruck %s bei %L fÃ¼r das Ende der Schleife verwendet eine im dazwischenliegenden Code gebundene VariableEndausdruck der Â»%sÂ«-Schleife bei %L ist nicht in kanonischer Form%s-Schleifeninkrementausdruck bei %L verwendet eine im dazwischenliegenden Code gebundene VariableSchleifeninkrement %s bei %L hat nicht die kanonische Form%s-Schleifenstartausdruck bei %L verwendet im dazwischenliegenden Code gebundene VariableSchleifenstartausdruck %s bei %L hat nicht die kanonische Form%s bei %L muss mindestens eine MAP-Klausel enthalten%s-Namensraum %qD widerspricht der Erreichbarkeits-Definition%s wird fÃ¼r Aggregattypen mit variabler LÃ¤nge nicht unterstÃ¼tzt%s wird auf diesem Ziel nicht unterstÃ¼tztOperand Â»%sÂ« kann nicht als %%i-E/A-Adressoperand verwendet werden%s auÃŸerhalb des Wertebereiches: Bereich ist %i bis %i, Wert ist %iÂ»%sÂ« mit PID %d wurde beendet durch %sProzedur %s bei %L ist bereits als Prozedur %s deklariert%s-Prozedur bei %L ist bereits als %s-Prozedur deklariert.
! F2008: Eine Zuweisung an eine Zeigerfunktion ist mehrdeutig, wenn dies die erste Anweisung nach dem Spezifikationsblock ist. Bitte fÃ¼gen Sie davor irgend eine andere ausfÃ¼hrbare Anweisung ein. FIXME (steht so im englischen Original.)%s gab Ende-Status %d zurÃ¼ckSignal %s hat Programm %s beendetSpezifizierer %s in Anweisung %s bei %L hat ungÃ¼ltigen Wert %qsSpezifizierer %s in Anweisung %s bei %L hat Wert %qsAnweisung %s bei %C kann nicht auf Anweisung %s bei %L folgenAnweisung %s bei %C kann keine DO-Schleife ohne Block beendenAnweisung %s bei %C folgt einer anderen ZugriffsspezifikationAnweisung %s bei %C in PURE-ProzedurAnweisung %s bei %C nicht auf Konstrukt %qs anwendbarAnweisung %s bei %C ist nicht innerhalb eines KonstruktsAnweisung %s bei %C nicht innerhalb des Konstrukts %qsAnweisung %s bei %C hinterlÃ¤sst CRITICAL-KonstruktAnweisung %s bei %C hinterlÃ¤sst DO CONCURRENT-KonstruktAnweisung %s bei %C verlÃ¤sst OpenACC-strukturierten BlockAnweisung %s bei %C verlÃ¤sst OpenMP-strukturierten Block%s-Anweisung bei %L erwartet%s-Anweisung ist innerhalb von BLOCK DATA bei %C nicht erlaubt%s-Anweisung ist innerhalb eines BLOCKs bei %C nicht erlaubtAnweisung %s muss in einem MODULE auftreten%s-Anweisung in PURE-Prozedur bei %C nicht erlaubt%s-Anweisungen bei %L und %L haben beide kein Listenelement, aber nur eine darf%s-SymbolMarkierung %s bei %L muss Standard-Zeichenkette seinMarkierung %s bei %L muss vom Typ %s seinMarkierung %s bei %L muss ein Skalar sein%s-Symbol mit INQUIRE%s mit Signal %d [%s]%s beendet%s verwendet mit Format %<%%%c%> %s%s wird innerhalb von %%<â€¦%%> verwendetÂ»%sÂ«-Variable %qE ist im Ã¤uÃŸeren Kontext Â»privateÂ«%s%#qD%s%#qD (gelÃ¶scht)%s%#qD (ignoriert)%s%#qD (in der NÃ¤he der Ãœbereinstimmung)%s%#qD (umgekehrt)%s%#qD (umgeschrieben)%s%<%D(%T)%> (eingebaut)%s%<%D(%T, %T)%> (eingebaut)%s%<%D(%T, %T, %T)%> (eingebaut)%s%qT (Umwandlung)%s%qs%s ist ungÃ¼ltig%s%qs%s ist nicht erlaubt%s%s%s %sVersion %s (%s)
  %s	kompiliert von GNU-C-Version %s, %s%s%s %sVersion %s (%s) kompiliert von CC, %s%s%sIn Instanziierung von %q#D:
  %s%s%sIn Ersetzung von %qS:
  %s%sGGC-Heuristik: --param ggc-min-expand=%d --param ggc-min-heapsize=%d
  %s%sWarnung: %s-Header-Version %s unterscheidet sich von Bibliotheksversion %s.
! Interner Fehler: %s(): %2.2d %s is a table, but it improperly has a capacity of zeroInterner Fehler: %s(): %2.2d %s<%s> improperly has a data.capacity of zeroInterner Fehler: %s(): Invalid field type %s:Interner Fehler: %s(): Knows not the variable type %s for %sInterner Fehler: %s(): What in the name of Nero's fiddle are we doing here?Interner Fehler: %s(): asked to sort %s, but it's not a tableInterner Fehler: %s(): called with NULL *fieldInterner Fehler: %s(): called with NULL *fileInterner Fehler: %s(): field->type %s must be literal or alphanumericInterner Fehler: %s(): for %s called with NULL field->var_decl_nodeInterner Fehler: %s(): for %s called with NULL file->var_decl_nodeInterner Fehler: %s(): syntax error -- both (or neither) GIVING and output-proc are specifiedInterner Fehler: %s(): syntax error -- both (or neither) USING and input-proc are specifiedInterner Fehler: %s(): syntax error -- both (or neither) files and output-proc are specified%s-%s ist ein leerer Bereich%s: %<-fcompare-debug%> ist fehlgeschlagen%s: %<-fcompare-debug%> ist fehlgeschlagen (LÃ¤nge)%s: %d Basis-BlÃ¶cke und %d Kanten/Basis-BlÃ¶cke%s: %d BasisblÃ¶cke und %d Register; erhÃ¶hen Sie %<--param max-gcse-memory%> auf mehr als %wu%s: %m%s: %s%s: %s-Compiler ist auf diesem System nicht installiert%s: %s: %s%s: PCH-Datei war ungÃ¼ltig%s: Alle Warnungen werden als Fehler behandelt%s: Versuch, Spezifikation %qs in bereits definierte Spezifikation %qs umzubenennen%s kann nicht als COFF-Datei geÃ¶ffnet werden%s: GrÃ¶ÃŸe der Vergleichs-PrÃ¼fdatei %s konnte nicht ermittelt werden%s: Vergleichs-PrÃ¼fdatei %s konnte nicht geÃ¶ffnet werden%s: PCH-Datei konnte nicht geÃ¶ffnet werden: %m%s: intrinsische Funktion Â»%sÂ« nicht gefunden%s: ungÃ¼ltiger Funktionsbeschreibungstyp Â»%cÂ«%s: SchlÃ¼ssel muss Feld sein%s: Linker-Eingabedatei nicht gefunden: %m%s: Eingabedatei des Linkers unbenutzt, da das Linken nicht durchgefÃ¼hrt wird%s: keine COFF-Datei%s: regcomp: %s%s: section %s.%d is missing%s: Einige Warnungen werden als Fehler behandeltInterner Fehler: %s:%d file %s 'sequentially' is %d in %sInterner Fehler: %s:%d file %s 'where' is zero in %sInterner Fehler: %s:%d file %s access mode is 'file_inaccessible_e' in %sInterner Fehler: %s:%d file %s is INDEXED/SEQUENTIAL, but 'sequentially' is falseInterner Fehler: %s:%d file %s is RELATIVE/RANDOM, but 'where' < 0Interner Fehler: %s:%d file %s is RELATIVE/SEQUENTIAL, but 'where' >= 0Interner Fehler: %s:%d: %zu exceeds MAXIMUM_UNTILS of %d, line %dInterner Fehler: %s:%d: LblNone '%s' has parent #%zu%s:%d: durch frÃ¼here Fehler verwirrt, Abbruch
! %s:%d: Â»%sÂ« konnte nicht hinzugefÃ¼gt werdenInterner Fehler: %s:%d: ignoring subscripts%s:%d: ungÃ¼ltiger symbol_type_t %d%s:%d: kein Symbol Â»%sÂ« gefunden%s:%d:%sInterner Fehler: %s:%d:assertion of condition %qs failedInterner Fehler: %s:%d:condition %s failedInterner Fehler: %s:%d:the value %s is not a BOOLEAN as the value is %d%s:%s: %E: %E%s: Â»%sÂ« hat BÃ¶gen vom Eintrittsblock
  %s: Â»%sÂ« hat BÃ¶gen zum Eintrittsblock
  %s: Eintrag und/oder Exit-BlÃ¶cke fehlen in Â»%sÂ«
  %s: bereits gesehene BlÃ¶cke fÃ¼r Â»%sÂ«
--- 2316,2342 ----
    denn %q+#D ist in Basisklasse deklariert  Ã¼berspringt Initialisierung von %q#D Template-Argument %qE passt nicht zu %qE Templateargumente %qE passt nicht zum konstanten Zeiger auf Element %qE Templateparameter %qD ist kein Parameterpack wie Argument %qD Templateparameter eines Template-Templatearguments sind mit anderen hergeleiteten Templateargumenten unvertrÃ¤glich  Versuch, %qD zu instanziieren Typen %qT und %qT haben unvertrÃ¤gliche CV-Qualifizierer Arraytyp %qT mit verÃ¤nderlicher GrÃ¶ÃŸe ist kein gÃ¼ltiges Templateargument  wÃ¤hrend es hier initialisiert wurde  bei Instanziierung des Standardarguments fÃ¼r Aufruf von %qD (BB %d) (Operandentyp ist %qT) (Operandentypen sind %e und %e) (Operandentypen sind %qT und %qT) (Operandentypen sind %qT, %qT und %qT) Alle Optionen mit den gewÃ¼nschten Eigenschaften wurden bereits angezeigt
   Keine Optionen mit den gewÃ¼nschten Eigenschaften gefunden
   Nichts gefunden. Bitte verwenden Sie Â»--help=%sÂ«, um *alle* vom Frontend %s unterstÃ¼tzten Optionen anzuzeigen
!  [siehe %<-fallow-invalid-boz%>] da alle seine Kopier- und Verschiebekonstruktoren gelÃ¶scht sind Kandidat 1: %q#F Kandidat 2: %q#F in Konflikt stehende Codeerzeugungsschalter verwendet hier deklariert der Ausdruck hat einen konstanten Wert, ist aber kein konstanter Ausdruck im Sinne von C++ zstdÂ»%s !$ACC LOOPÂ«-Schleifen bei %L formen keinen rechteckigen Wiederholungsraum!$ACC LOOP kann bei %L keine DO-CONCURRENT-Schleife sein!$ACC LOOP darf ohne Schleifensteuerung bei %L kein DO WHILE oder DO sein!$ACC-LOOP-Iterationsvariable bei %L muss vom Typ integer seinÂ»!$ACC ROUTINEÂ« wurde bereits bei %C angewendet!$ACC ROUTINE mit GANG, WORKER oder VECTOR-Klausel ist in PURE-Prozedur bei %C nicht erlaubt!$ACC bei %C beginnt eine kommentierte Zeile, da es weder von Leerzeichen gefolgt wird noch eine Fortsetzungszeile ist!$OMP ASSUMES bei %C muss im Spezifikationsteil eines Unterprogramms oder Moduls vorkommen!$OMP ATOMIC CAPTURE-Erfassungsanweisung liest bei %L von anderer Variable als die Update-Anweisung schreibt!$OMP ATOMIC READ bei %L ist inkompatibel zur RELEASE-Klausel!$OMP ATOMIC READ bei %L inkompatibel mit RELEASE-Klausel, die implizit durch eine REQUIRES-Direktive bereitgestellt wirdAnweisung !$OMP ATOMIC READ muss bei %L von skalarer Variable intrinsischen Typs lesen!$OMP ATOMIC UPDATE bei %L mit FAIL-Klausel erfordert entweder die COMPARE-Klausel oder die Verwendung der intrinsischen MIN/MAX-Prozedur!$OMP ATOMIC WRITE bei %L ist inkompatibel zur ACQUIRE-Klausel!$OMP ATOMIC WRITE bei %L inkompatibel mit ACQUIRES-Klausel, die implizit durch eine REQUIRES-Direktive bereitgestellt wirdEingebaute Zuweisung !$OMP ATOMIC IAND, IOR oder IEOR muss bei %L zwei Argumente habenEingebaute Zuweisung !$OMP ATOMIC muss bei %L MIN, MAX, IAND, IOR oder IEOR seinZuweisung !$OMP ATOMIC muss bei %L Â»var = var op exprÂ« oder Â»var = expr op varÂ« sein!$OMP ATOMIC Zuweisung muss auf der rechten Seite bei %L Operator oder Intrinsic habenZuweisungsoperator Â»!$OMP ATOMICÂ« muss bei %L ein binÃ¤res +, *, -, /, .AND., .OR., .EQV. oder .NEQV. sein!$OMP ATOMIC bei %L mit %s-Klausel ist inkompatibel zu READ oder WRITE!$OMP ATOMIC bei %L mit %s-Klausel erfordert %s-KlauselErfassungsanweisung !$OMP ATOMIC bei %L muss eine skalare Variable intrinsischen Typs setzenErfassungsanweisung !$OMP ATOMIC bei %L erfordert eine skalare Variable intrinsischen TypsVon den intrinsischen Argumenten fÃ¼r %<!$OMP ATOMIC%> bei %2$L darf hÃ¶chstens eins auf %1$qs verweisen!$OMP ATOMIC intrinsische Argumente mÃ¼ssen bei %L skalar seinAnweisung !$OMP ATOMIC muss einen skalaren Ausdruck intrinsischen Typs bei %L zuweisenAnweisung !$OMP ATOMIC muss eine skalare Variable intrinsischen Typs bei %L setzen!$OMP ATOMIC Â»var op exprÂ« bei %L ist nicht mathematisch Ã¤quivalent zu Â»var = var op (expr)Â«!$OMP ATOMIC mit ALLOCATABLE-Variable bei %L!$OMP DECLARE REDUCTION %s nicht gefunden bei %L!$OMP DECLARE REDUCTION Â»%sÂ« fÃ¼r Typ %s bei %L nicht gefunden!$OMP DECLARE SIMD bei %2$L sollte auf die enthaltende Prozedur %1$qs verweisenÂ»!$OMP DECLARE TARGETÂ«-Variable %qs bei %L ist nicht gespeichert (SAVE)!$OMP REQUIRES bei %C muss im Spezifikationsteil einer Programmeinheit vorkommen%<!$OMP REQUIRES%>-Klausel %<atomic_default_mem_order(%s)%>, die bei %L angegeben ist, Ã¼bersteuert ein vorangehendes %<atomic_default_mem_order(%s)%> (das mÃ¶glicherweise von einer Modulverwendung stammt)%<!$OMP REQUIRES%>-Klausel %<atomic_default_mem_order(%s)%> wird von der Modulverwendung %qs bei %L angegeben, aber diese Klausel ist in der Programmeinheit nicht ebenfalls angegeben%<!$OMP REQUIRES%>-Klausel %<atomic_default_mem_order(%s)%>, die von der Modulverwendung %qs bei %L angegeben ist, Ã¼bersteuert ein vorangehendes %<atomic_default_mem_order(%s)%> (das mÃ¶glicherweise von einer Modulverwendung stammt)%<!$OMP REQUIRES%>-Klausel %qs, die bei %L angegeben ist, kommt nach der Verwendung eines GerÃ¤te-Konstrukts bzw. einer GerÃ¤te-Routine%<!$OMP REQUIRES%>-Klausel %qs ist von der Modulverwendung %qs bei %L angegeben, aber diese Klausel ist in der Programmeinheit nicht ebenfalls angegeben%<!$OMP REQUIRES%>-Klausel %qs, die von der Modulverwendung %qs bei %L angegeben ist, kommt nach der Verwendung eines GerÃ¤te-Konstrukts bzw. einer GerÃ¤te-Routine!$OMP SCAN bei %L mit null ausfÃ¼hrbaren Anweisungen in der vorangehenden strukturierten Blockfolge!$OMP SCAN bei %L mit null ausfÃ¼hrbaren Anweisungen in der darauffolgenden strukturierten Blockfolge!$OMP-TARGET-Region bei %L mit einem verschachtelten TEAMS bei %L darf keine andere Anweisung, Deklaration oder Direktive auÃŸerhalb des einzelnen TEAMS-Konstrukts enthalten!$OMP-TARGET-Region bei %L mit einem verschachtelten TEAMS darf keine andere Anweisung, Deklaration oder Direktive auÃŸerhalb des einzelnen TEAMS-Konstrukts enthalten!$OMP bei %C beginnt eine kommentierte Zeile, da es weder von Leerzeichen gefolgt wird noch eine Fortsetzungszeile istÂ»::Â« nach Modul-Eigenschaft bei %C erwartet, aber nicht gefundenÂ»USE :: moduleÂ« bei %C# %s %.2f %.2f
  Suche fÃ¼r Â»#embed <...>Â« beginnt hier:
  Suche fÃ¼r Â»#include "..."Â« beginnt hier:
  Suche fÃ¼r Â»#include <...>Â« beginnt hier:
! $-Deskriptor bei %L$ sollte das letzte Spezifikationssymbol in Format bei %L sein$OMP ERROR aufgetreten bei %L$OMP ERROR aufgetreten bei %L: %s%#qT wird hier deklariert%#qT hier definiert%%:%<canon_for_mlib%> verlangt 1 oder mehr Paare von Parametern%%:%<target_mode_check%> verlangt eine gerade Anzahl an Parametern%%LOC() als rvalue bei %C%%a benÃ¶tigt eine SpeicheradresseDie Operandenmodifizierer %%d, %%e, %%f und %%g sind ausschlieÃŸlich fÃ¼r Speicherreferenzen oder konstante Werte%+qD lÃ¶st einen Abschnittstypkonflikt fÃ¼r Abschnitt %qs aus%+qD lÃ¶st einen Abschnittstypkonflikt mit %qD in Abschnitt %qs aus%+qD als %qE deklariert, nachdem es verwendet wurde%+qD wurde als %qs deklariert, nachdem es verwendet wurde%+qD ohne %<retain%>-Attribut und %qD mit %<retain%>-Attribut liegen in einem Abschnitt mit demselben Namen%<!$OMP %s%> bei %L erfordert %<-fopenmp-allocators%>Interner Fehler: %<!%> not valid in GIMPLE%<#define %s%>%<#pragma %s%> darf nur im GÃ¼ltigkeitsbereich einer Datei verwendet werden%<#pragma %s%> darf nur in Verbundanweisungen verwendet werden%<#pragma GCC %s%> muss innerhalb einer Funktion sein%<#pragma GCC aarch64%> erfordert eine Zeichenkette als Parameter%<#pragma GCC arm "arm_mve.h"%> erfordert einen booleschen Parameter%<#pragma GCC arm%> erfordert eine Zeichenkette als Parameter%<#pragma GCC memregs%> muss vor allen Funktionsdeklarationen stehen%<#pragma GCC memregs%> erfordert eine Zahl von 0 bis 16%<#pragma GCC optimize (Zeichenkette [,Zeichenkette]...)%> hat kein abschlieÃŸendes %<)%>%<#pragma GCC optimize%> ist keine Zeichenkette oder Zahl%<#pragma GCC optimize%> ist nur auÃŸerhalb von Funktionen erlaubt%<#pragma GCC optimize%> Zeichenkette hat falsches Format%<#pragma GCC option%> ist keine Zeichenkette%<#pragma GCC option%> ist nur auÃŸerhalb von Funktionen erlaubt%<#pragma GCC pch_preprocess%> muss zuerst kommen%<#pragma GCC pop_options%> ohne zugehÃ¶riges %<#pragma GCC push_options%>%<#pragma GCC target (Zeichenkette [,Zeichenkette]...)%> hat kein abschlieÃŸendes %<)%>%<#pragma GCC target%> wird fÃ¼r diese Maschine nicht unterstÃ¼tzt%<#pragma GCC target%> Zeichenkette hat falsches Format%<#pragma GCC unroll%> erfordert einen Zuweisungsausdruck, der zu einer nichtnegativen Ganzzahlkonstante kleiner als %u evaluiert%<#pragma GCC visibility push()%> muss %<default%>, %<internal%>, %<hidden%> oder %<protected%> angeben%<#pragma GCC visibility%> muss von %<push%> oder %<pop%> gefolgt werden%<#pragma STDC FLOAT_CONST_DECIMAL64%> wird fÃ¼r C++ nicht unterstÃ¼tzt%<#pragma STDC FLOAT_CONST_DECIMAL64%> wird auf diesem Ziel nicht unterstÃ¼tzt%<#pragma acc %s data%> hat keine Datenverschiebeklausel%<#pragma acc routine%> muss vor Definition angewendet werden%<#pragma acc routine%> muss vor Verwendung angewendet werden%<#pragma acc routine%> darf nur im Datei-GÃ¼ltigkeitsbereich auftreten%<#pragma acc routine%> benennt eine Menge von Ãœberladungen%<#pragma acc routine%> muss direkt vor einer Deklaration oder Definition einer einzelnen Funktion auftreten%<#pragma acc routine%> muss direkt vor einer Funktionsdeklaration oder -definition auftreten%<#pragma acc update%> muss mindestens eine %<device%>- oder %<host%>- or %<self%>-Klausel enthalten%<#pragma align%> muss vor der Deklaration von %qD auftreten; wird ignoriert%<#pragma implementation%> fÃ¼r %qs erscheint, nachdem Datei eingebunden wurde%<#pragma message: %s%>%<#pragma omp allocate%> wird nicht mehr unterstÃ¼tzt%<#pragma omp assumes%> darf nur im GÃ¼ltigkeitsbereich einer Datei oder eines Namensraums verwendet werden%<#pragma omp atomic capture%> verwendet zwei unterschiedliche AusdrÃ¼cke fÃ¼r Speicher%<#pragma omp atomic capture%> verwendet zwei unterschiedliche Variablen fÃ¼r SpeicherErgebnis von %<#pragma omp atomic compare capture%> ist keine Ganzzahl%<#pragma omp atomic read%> ist unvertrÃ¤glich mit der Klausel %<release%>%<#pragma omp atomic read%> inkompatibel mit %<release%>-Klausel, die implizit von einer %<requires%>-Direktive bereitgestellt wird%<#pragma omp atomic update%> verwendet zwei unterschiedliche AusdrÃ¼cke fÃ¼r Speicher%<#pragma omp atomic update%> verwendet zwei unterschiedliche Variablen fÃ¼r Speicher%<#pragma omp atomic write%> ist unvertrÃ¤glich mit der Klausel %<acquire%>%<#pragma omp atomic write%> inkompatibel mit %<acquire%>-Klausel, die implizit von einer %<requires%>-Direktive bereitgestellt wird%<#pragma omp cancel%> muss eine der Klauseln %<parallel%>, %<for%>, %<sections%> oder %<taskgroup%> angeben%<#pragma omp cancellation point%> muss eine der Klauseln %<parallel%>, %<for%>, %<sections%> oder %<taskgroup%> angeben%<#pragma omp critical%> mit %<hint%>-Klausel erfordert einen Namen, auÃŸer wenn %<omp_sync_hint_none%> verwendet wird%<#pragma omp declare %s%> gefolgt von %<#pragma omp declare %s%>%<#pragma omp declare %s%> muss vor der Deklaration oder Definition einer Funktion auftreten%<#pragma omp declare %s%> muss von einer Funktionsdeklaration oder -definition oder einem weiteren %<#pragma omp declare %s%> gefolgt werdenhinter %<#pragma omp declare %s%> muss direkt eine Funktionsdeklaration oder -definition stehenhinter %<#pragma omp declare %s%> muss direkt eine einzelne Funktionsdeklaration oder -definition stehen%<#pragma omp declare %s%> muss direkt von einer Funktionsdeklaration oder -definition gefolgt sein%<#pragma omp declare reduction%>-Kombinierer verweist auf Variable %qD, die weder %<omp_out%> noch %<omp_in%> ist%<#pragma omp declare reduction%>-Initialisierung verweist auf Variable %qD, die weder %<omp_priv%> noch %<omp_orig%> ist%<#pragma omp declare reduction%> darf nur im Datei- oder Block-GÃ¼ltigkeitsbereich auftreten%<#pragma omp dispatch%> muss von einem direkten Funktionsaufruf mit optionaler Zuweisung gefolgt werden%<#pragma omp dispatch%> kann nur vor einem Funktionsaufruf mit optionaler Zuweisung stehen%<#pragma omp end declare target%> ohne zugehÃ¶riges %<#pragma omp declare target%> oder %<#pragma omp begin declare target%>%<#pragma omp error%> mit %<at(execution)%>-Klausel darf nur in Verbundanweisungen verwendet werden%<#pragma omp ordered%> mit %qs-Klausel darf nur in Verbundanweisungen verwendet werden%<#pragma omp requires%> darf nur im GÃ¼ltigkeitsbereich einer Datei oder eines Namensraums verwendet werden%<#pragma omp scan%> darf nur in einem Schleifenkonstrukt mit %<inscan%>-%<reduction%>-Klausel verwendet werden%<#pragma omp scan%> mit 0 vorhergehenden ausfÃ¼hrbaren Anweisungen%<#pragma omp scan%> mit 0 nachfolgenden ausfÃ¼hrbaren Anweisungen%<#pragma omp section%> darf nur in %<#pragma omp sections%>-Konstrukt verwendet werden%<#pragma omp simd%> zusammen mit Iterationsvariable %qE verwendet%<#pragma omp target data%> muss mindestens eine %<map%>-, %<use_device_ptr%>- oder %<use_device_addr%>-Klausel enthalten%<#pragma omp target data%> mit Zuordnungstyp auÃŸer %<to%>, %<from%>, %<tofrom%> oder %<alloc%> an %<map%>-Klausel%<#pragma omp target enter data%> muss mindestens eine %<map%>-Klausel enthalten%<#pragma omp target enter data%> mit Zuordnungstyp auÃŸer %<to%>, %<tofrom%> oder %<alloc%> an %<map%>-Klausel%<#pragma omp target exit data%> muss mindestens eine %<map%>-Klausel enthalten%<#pragma omp target exit data%> mit Zuordnungstyp auÃŸer %<from%>, %<tofrom%>, %<release%> oder %<delete%> an %<map%>-Klausel%<#pragma omp target update%> muss mindestens eine %<from%>- oder %<to%>-Klausel enthalten%<#pragma omp target%> mit Zuordnungstyp auÃŸer %<to%>, %<from%>, %<tofrom%> oder %<alloc%> an %<map%>-Klausel%<#pragma pack (pop)%> gefunden ohne passendes %<#pragma pack (push)%>%<#pragma pack%> hat mit %<-fpack-struct%> keinen Effekt â€“ wird ignoriert%<#pragma pack(pop, %E)%> gefunden ohne passendes %<#pragma pack(push, %E)%>%<#pragma redefine_extname%> wird aufgrund von Konflikt mit %<asm%>-Deklaration ignoriert%<#pragma redefine_extname%> wird aufgrund des Konflikts mit vorherigem %<#pragma redefine_extname%> ignoriert%<#pragma redefine_extname%> wird aufgrund des Konflikts mit vorheriger Umbenennung ignoriert%<#pragma riscv intrinsic%> erfordert eine Zeichenkette als Parameter%<#pragma scalar_storage_order%> wird in C++ nicht unterstÃ¼tzt%<#pragma vtable%> wird nicht mehr unterstÃ¼tzt%<#pragma weak%>-Deklaration von %q+D nicht erlaubt; wird ignoriert%<#pragma GHS endXXX%> passt nicht zum vorherigen %<startXXX%>%<#pragma GHS endXXX%> ohne vorheriges %<startXXX%> gefunden%<#pragma%> ist hier nicht erlaubt%<#undef %E%>%<$%>-Operandennummer nach Format ohne Operandennummer angegeben%<%%%>-EinschrÃ¤nkung mit letztem Operanden verwendet%<%%%c%> liefert nur die letzten 2 Ziffern des Jahres%<%%%c%> liefert in manchen Locales nur die letzten 2 Ziffern des JahresArgument der Direktive %<%.*s%> ist keine nul-terminierte ZeichenketteArgument %<%.*s%> fÃ¼r Direktive ist nullAusgabe der %<%.*s%>-Direktive zwischen %wu und %wu Bytes macht das Ergebnis grÃ¶ÃŸer als %<INT_MAX%>Ausgabe der Direktive %<%.*s%> zwischen %wu und %wu Bytes Ã¼bersteigt %<INT_MAX%>Ausgabe der %<%.*s%>-Direktive zwischen %wu und %wu Bytes Ã¼berschreitet die minimal erforderliche GrÃ¶ÃŸe von 4095Ausgabe der %<%.*s%>-Direktive zwischen %wu und %wu Bytes kÃ¶nnte das Ergebnis grÃ¶ÃŸer als %<INT_MAX%> machenAusgabe der %<%.*s%>-Direktive zwischen %wu und %wu Bytes kÃ¶nnte die minimal erforderliche GrÃ¶ÃŸe von 4095 Ã¼berschreitenAusgabe der %<%.*s%>-Direktive kÃ¶nnte abgeschnitten sein, beim Schreiben von %wu Byte in eine Region der GrÃ¶ÃŸe %wuAusgabe der %<%.*s%>-Direktive kÃ¶nnte abgeschnitten sein, beim Schreiben von %wu Bytes in eine Region der GrÃ¶ÃŸe %wuAusgabe der %<%.*s%>-Direktive kÃ¶nnte abgeschnitten sein, beim Schreiben von %wu Byte in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuAusgabe der %<%.*s%>-Direktive kÃ¶nnte abgeschnitten sein, beim Schreiben von %wu Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuAusgabe der %<%.*s%>-Direktive kÃ¶nnte abgeschnitten sein, beim Schreiben von %wu oder mehr Bytes in eine Region der GrÃ¶ÃŸe %wuAusgabe der %<%.*s%>-Direktive kÃ¶nnte abgeschnitten sein, beim Schreiben von %wu oder mehr Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuAusgabe der %<%.*s%>-Direktive kÃ¶nnte abgeschnitten sein, beim Schreiben von %wu bis %wu Bytes in eine Region der GrÃ¶ÃŸe %wuAusgabe der %<%.*s%>-Direktive kÃ¶nnte abgeschnitten sein, beim Schreiben zwischen %wu und %wu Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuAusgabe der %<%.*s%>-Direktive kÃ¶nnte abgeschnitten sein, beim Schreiben von wahrscheinlich %wu oder mehr Bytes in eine Region der GrÃ¶ÃŸe %wuAusgabe der %<%.*s%>-Direktive kÃ¶nnte abgeschnitten sein, beim Schreiben von wahrscheinlich %wu oder mehr Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuAusgabe der %<%.*s%>-Direktive kÃ¶nnte abgeschnitten sein, beim Schreiben von bis zu %wu Bytes in eine Region der GrÃ¶ÃŸe %wuAusgabe der %<%.*s%>-Direktive kÃ¶nnte abgeschnitten sein, beim Schreiben von bis zu %wu Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuAusgabe der %<%.*s%>-Direktive von %wu Bytes macht das Ergebnis grÃ¶ÃŸer als %<INT_MAX%>Ausgabe der Direktive %<%.*s%> Ã¼bersteigt mit %wu Bytes %<INT_MAX%>Ausgabe der %<%.*s%>-Direktive von %wu Bytes Ã¼berschreitet die minimal erforderliche GrÃ¶ÃŸe von 4095Ausgabe der %<%.*s%>-Direktive abgeschnitten, beim Schreiben von %wu Byte in eine Region der GrÃ¶ÃŸe %wuAusgabe der %<%.*s%>-Direktive abgeschnitten, beim Schreiben von %wu Bytes in eine Region der GrÃ¶ÃŸe %wuAusgabe der %<%.*s%>-Direktive abgeschnitten, beim Schreiben von %wu Byte in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuAusgabe der %<%.*s%>-Direktive abgeschnitten, beim Schreiben von %wu Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuAusgabe der %<%.*s%>-Direktive abgeschnitten, beim Schreiben von %wu oder mehr Bytes in eine Region der GrÃ¶ÃŸe %wuAusgabe der %<%.*s%>-Direktive abgeschnitten, beim Schreiben von %wu oder mehr Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuAusgabe der %<%.*s%>-Direktive abgeschnitten, beim Schreiben von %wu bis %wu Bytes in eine Region der GrÃ¶ÃŸe %wuAusgabe der %<%.*s%>-Direktive abgeschnitten, beim Schreiben von %wu bis %wu Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuAusgabe der %<%.*s%>-Direktive abgeschnitten, beim Schreiben von wahrscheinlich %wu oder mehr Bytes in eine Region der GrÃ¶ÃŸe %wuAusgabe der %<%.*s%>-Direktive abgeschnitten, beim Schreiben von wahrscheinlich %wu oder mehr Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuAusgabe der %<%.*s%>-Direktive abgeschnitten, beim Schreiben von bis zu %wu Bytes in eine Region der GrÃ¶ÃŸe %wuAusgabe der %<%.*s%>-Direktive abgeschnitten, beim Schreiben von bis zu %wu Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuGenauigkeit der %<%.*s%>-Direktive auÃŸerhalb des zulÃ¤ssigen BereichsBreite fÃ¼r %<%.*s%>-Direktive auÃŸerhalb des zulÃ¤ssigen Bereichs%<%.*s%>-Direktive schreibt %wu Byte in eine Region der GrÃ¶ÃŸe %wu%<%.*s%>-Direktive schreibt %wu Bytes in eine Region der GrÃ¶ÃŸe %wu%<%.*s%>-Direktive schreibt %wu Byte in eine Region der GrÃ¶ÃŸe zwischen %wu und %wu%<%.*s%>-Direktive schreibt %wu Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wu%<%.*s%>-Direktive schreibt %wu oder mehr Bytes in eine Region der GrÃ¶ÃŸe %wu%<%.*s%>-Direktive schreibt %wu oder mehr Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wu%<%.*s%>-Direktive schreibt zwischen %wu und %wu Bytes in eine Region der GrÃ¶ÃŸe %wu%<%.*s%>-Direktive schreibt zwischen %wu und %wu Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wu%<%.*s%>-Direktive schreibt wahrscheinlich %wu oder mehr Bytes in eine Region der GrÃ¶ÃŸe %wu%<%.*s%>-Direktive schreibt wahrscheinlich %wu oder mehr Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wu%<%.*s%>-Direktive schreibt bis zu %wu Bytes in eine Region der GrÃ¶ÃŸe %wu%<%.*s%>-Direktive schreibt bis zu %wu Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wu%<%D::%D%> ist kein Klassenelement%<%D::%D%> ist kein Element von %qTAttribut %<%E (%E)%> wird ignoriert, da es sich auf eine Funktion bezieht, die als %qs deklariert istAttribut %<%E (%E)%> wird ignoriert, da es sich auf eine Deallokationsfunction bezieht, die als %qs deklariert ist%<%E::%E%> wurde nicht deklariert%<%E::%E%> wurde nicht deklariert; meinten Sie %<%E::%s%>?%<%E::%E%> ist keine Klasse oder Namensbereich%<%E::%E%> ist keine Klasse, Namensbereich oder AufzÃ¤hlung%<%E::%E%> ist kein TypAttribut-Direktive im Bereich %<%E::%E%> ignoriert%<%T%s%D%> benennt Destruktor%<%T::%D%> benennt Konstruktor in %qT%<%T::%E%> wurde nicht deklariert%<%T::%E%> ist kein Typ%<%T::%E%> benennt den Konstruktor, nicht den Typ%<%c%> ist kein gÃ¼ltiges Zeichen in einem Bezeichner%<%c%> ist kein gÃ¼ltiges Anfangszeichen fÃ¼r einen Bezeichner%<%c%E%> nicht in Protokoll(en) gefundendas innerhalb der Parameterliste deklarierte %<%s %E%> ist auÃŸerhalb dieser Definition oder Deklaration nicht sichtbar%<%s %s%>-Konstrukt innerhalb von %qs nicht eng geschachtelt%<%s + %s%> bei %L muss kleiner oder gleich BIT_SIZE(%qs) sein%<%s taskgroup%>-Konstrukt nicht eng geschachtelt innerhalb von %<taskgroup%>-Region%<%s%s%>: Parameter der Form KEY=VALUE fÃ¼r Format %qs nach %qs erwartet, aber %qs bekommen%<%s%s%>: fehlender erforderlicher SchlÃ¼ssel %qs fÃ¼r Format %qs; versuchen Sie %<%s%s:%s=%s%>%<%s%s%>: unerwarteter Wert %qs fÃ¼r SchlÃ¼ssel %qs; erwartet wurde %qs oder %qs%<%s%s%>: unerwarteter Wert %qs fÃ¼r SchlÃ¼ssel %qs; bekannte Werte: %e%<%s%s%>: unbekannter SchlÃ¼ssel %qs fÃ¼r Format %qs; bekannte SchlÃ¼ssel: %e%<%s%s%>: unbekanntes Format %qs; bekannte Formate: %e%<%s%s%s%s%s%>-Direktive wird sowohl in %<absent%>- als auch %<contains%>-Klauseln erwÃ¤hnt%<%s%s%s%s%s%>-Direktive wird mehrfach in %qs-Klauseln erwÃ¤hnt%<%s(%s)%> ist nur in %<omp ordered%> erlaubt%<%s=%s%> und %<%s-%s%> sind unvertrÃ¤glich%<&%>-Bedingung ohne Registerklasse verwendetin Zeile %d ist %<&%> fÃ¼r sich alleine nicht erlaubt%<&%> sollte vor %<...%> kommenInterner Fehler: %<&&%> not valid in GIMPLE%<)%> bei %C erwartet%<*%> in booleschem Kontext, stattdessen ist %<&&%> empfohlen%<*this%>-Capture ist nur mit %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbar%<-%>-Modifikator wird innerhalb einer Funktion verwendet%<-%s%> steht in Konflikt mit den anderen Architekturoptionen, die einen %s-Prozessor angebenArgument %q.*s fÃ¼r %<--help%> ist mehrdeutig, bitte prÃ¤zisieren%<--param constructive-interference-size=%d%> ist grÃ¶ÃŸer als %<--param l1-cache-line-size=%d%>%<--param constructive-interference-size=%d%> ist kleiner als %d%<--param destructive-interference-size=%d%> ist kleiner als %<--param l1-cache-line-size=%d%>%<--param destructive-interference-size=%d%> ist kleiner als %d%<-I-%> doppelt angegeben%<-MF%> und %<-fdeps-file=%> kÃ¶nnen sich die Ausgabedatei %<%s%> nicht teilen: %m%<-MG%> darf nur mit %<-M%> oder %<-MM%> verwendet werden%<-W%serror=%s%>: Keine Option %<-%s%>%<-W%serror=%s%>: unbekannte Option %<-%s%>; meinten Sie %<-%s%>?%<-Wabi=1%> wird nicht unterstÃ¼tzt; stattdessen wird Â»=2Â« verwendetArgument %qs fÃ¼r %<-Werror=%> ist fÃ¼r %s nicht gÃ¼ltig%<-Werror=%s%>: %<-%s%> ist keine Option, die Warnungen steuert%<-Wformat-contains-nul%> wird ohne %<-Wformat%> ignoriert%<-Wformat-extra-args%> wird ohne %<-Wformat%> ignoriert%<-Wformat-nonliteral%> wird ohne %<-Wformat%> ignoriert%<-Wformat-security%> wird ohne %<-Wformat%> ignoriert%<-Wformat-y2k%> wird ohne %<-Wformat%> ignoriert%<-Wformat-zero-length%> wird ohne %<-Wformat%> ignoriert%<-Wmisleading-indentation%> ist von diesem Punkt an ausgeschaltet, da die Spalten-Verfolgung aufgrund der GrÃ¶ÃŸe des Codes/Headers ausgeschaltet wurde%<-Wstrict-flex-arrays%> wird ignoriert, wenn %<-fstrict-flex-arrays%> nicht angegeben wurde%<-f%s%> und %<%s=%s%> sind unvertrÃ¤glich%<-f%s%> wird mit CONST16-Befehlen nicht unterstÃ¼tzt%<-f%s%> nicht unterstÃ¼tzt: wird ignoriert%<-f%sleading-underscore%> wird auf dieser Zielmaschine nicht unterstÃ¼tzt%<-fPIC%> und %<-fpic%> werden fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fPIC%> wird nicht unterstÃ¼tzt%<-fPIC%>/%<-fpic%> werden fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fPIE%> wird nicht unterstÃ¼tzt%<-fabi-compat-version=1%> wird nicht unterstÃ¼tzt; stattdessen wird Â»=2Â« verwendet%<-fabi-version=%d%> wird nicht unterstÃ¼tzt; stattdessen wird Â»=%dÂ« verwendet%<-fabi-version=1%> wird nicht mehr unterstÃ¼tzt%<-fabi-version=12%> (GCC 8.1) Ã¤ndert versehentlich die Aufrufkonvention fÃ¼r %qT%<-fabi-version=13%> (GCC 8.2) korrigiert die Aufrufkonvention fÃ¼r %qT, die in 8.1 versehentlich geÃ¤ndert wurde%<-falign-%s%> ist nicht zwischen 0 und %d%<-falign-labels=%d%> wird nicht unterstÃ¼tzt%<-falign-loops=%d%> wird nicht unterstÃ¼tzt%<-faligned-new=%d%> ist keine Zweierpotenz%<-fasan-shadow-offset%> sollte nur zusammen mit %<-fsanitize=kernel-address%> verwendet werden%<-fassociative-math%> abgeschaltet; andere Optionen haben Vorrang%<-fcall-saved-REG%> wird fÃ¼r Ausgaberegister nicht unterstÃ¼tzt%<-fcf-protection%> ist nicht mit diesem Ziel kompatibel%<-fcf-protection=branch%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fcf-protection=full%> wird von %<-fhardened%> nicht aktiviert, da es in der Befehlszeile angegeben wurde%<-fcf-protection=full%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fcf-protection=return%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fcontract-assumption-mode=%> kann nicht mit p1332/p1429 gemischt werden%<-fcontract-assumption-mode=%> muss %<on%> oder %<off%> sein%<-fcontract-build-level=%> kann nicht mit p1332/p1429 gemischt werden%<-fcontract-build-level=%> muss off|default|audit sein%<-fcontract-continuation-mode=%> kann nicht mit p1332/p1429 gemischt werden%<-fcontract-continuation-mode=%> muss %<on%> oder %<off%> sein%<-fcontract-level=%> zu viele benutzerdefinierte Rollen%<-fcontract-role=%> kann nicht mit Vertragsoptionen aus std/p1429 gemischt werden%<-fcontract-role=%> muss die Form Â»Rolle:SemantikÂ« haben%<-fcontract-role=%>-Semantik muss Werte fÃ¼r default,audit,axiom beinhalten%<-fcontract-semantic=%> kann nicht mit Vertragsoptionen aus std/p1332 gemischt werden%<-fcontract-semantic=%> kann die Standardrolle nicht finden%<-fcontract-semantic=%>-Stufe muss default, audit oder axiom sein%<-fcontract-semantic=%> muss die Form Â»Stufe:SemantikÂ« haben%<-fconvert=r16_ieee%> oder %<-fconvert=r16_ibm%> werden auf dieser Architektur nicht unterstÃ¼tzt%<-fd-lines-as-code%> hat in Freiform keine Auswirkung%<-fd-lines-as-comments%> hat in Freiform keine Auswirkung%<-fdata-sections%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fdbg-cnt=%s:%d-%d%> hat kleinere obere als untere Grenze%<-fdeps-format=%> unbekanntes Format %qs%<-fdirectives-only%> ist mit %<-Wunused-macros%> unvertrÃ¤glich%<-fdirectives-only%> ist mit %<-traditional%> unvertrÃ¤glich%<-femit-struct-debug-detailed=dir:...%> muss zumindest so viel wie %<-femit-struct-debug-detailed=ind:...%> erlauben%<-fexcess-precision=16%> fÃ¼r Ada%<-fexcess-precision=16%> fÃ¼r Fortran%<-fexcess-precision=16%> ist nicht mit %<-mfpmath=387%> kompatibel%<-fexcess-precision=16%> wird auf diesem Ziel nicht unterstÃ¼tzt%<-fexcess-precision=standard%> fÃ¼r Ada%<-fexcess-precision=standard%> fÃ¼r Fortran%<-ffunction-sections%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fhandle-exceptions%> wurde in %<-fexceptions%> umbenannt (und ist nun voreingestellt)%<-fhardened%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fimplicit-constexpr%> betrifft nur %<inline%>-Funktionen%<-fipa-modref%> ist unvertrÃ¤glich mit %qs%<-fipa-reorder-for-locality%> ist unvertrÃ¤glich mit einer expliziten Option %qs%<-flinker-output=rel%> und %<-fltrans%> schlieÃŸen sich gegenseitig aus%<-fmodule-only%> wird fÃ¼r Nicht-Schnittstelle verwendet%<-fmoduleinfo%> wird von diesem Ziel nicht unterstÃ¼tzt%<-fno-fat-lto-objects%> werden nur mit Binder-Plugin unterstÃ¼tzt%<-fno-gnu89-inline%> wird nur im Modus GNU99 oder C99 unterstÃ¼tzt%<-fobjc-abi-version%> %d wird fÃ¼r 32-Bit-Ziele mit %<-fnext-runtime%> nicht unterstÃ¼tzt%<-fobjc-abi-version%> 2 muss fÃ¼r 64-Bit-Ziele mit %<-fnext-runtime%> verwendet werden%<-fobjc-exceptions%> verwenden, um Syntax fÃ¼r Objective-C-Ausnahmen einzuschalten%<-fobjc-gc%> wird fÃ¼r %<-fgnu-runtime%> ignoriert%<-fobjc-sjlj-exceptions%> wird fÃ¼r %<-fgnu-runtime%> ignoriert%<-fobjc-sjlj-exceptions%> wird fÃ¼r %<-fnext-runtime%> ignoriert, wenn %<-fobjc-abi-version%> grÃ¶ÃŸer als 1 ist%<-fobjc-sjlj-exceptions%> ist das einzige unterstÃ¼tzte Ausnahmesystem fÃ¼r %<-fnext-runtime%> mit %<-fobjc-abi-version%>-Argument kleiner 2%<-foffload-abi-host-opts%> nicht angegeben%<-foffload-abi-host-opts%> ist nicht angegeben.%<-foffload-abi-host-opts%> ist mehrfach angegebendas Argument %<-fonly=%> unterscheidet sich vom Namen der ersten EingabedateiOperand fÃ¼r %<-fopenacc-dim%> bei %qs ist falsch%<-fpic%> und %<-fPIC%> werden ohne %<-mdsbt%> fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fpic%> und %<-mapcs-reent%> sind inkompatibel%<-fpic%> wird nicht unterstÃ¼tzt%<-fpie%> wird nicht unterstÃ¼tzt%<-fprefetch-loop-arrays%> wird nicht mit %<-Os%> unterstÃ¼tzt%<-fprefetch-loop-arrays%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fprefetch-loop-arrays%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt (ggf. die %<-march%>-Schalter versuchen)%<-frecord-gcc-switches%> wird fÃ¼r das aktuelle Ziel nicht unterstÃ¼tzt%<-freorder-blocks-and-partition%> unterstÃ¼tzt auf dieser Architektur nicht Unwind-Info%<-freorder-blocks-and-partition%> funktioniert auf dieser Architektur nicht%<-freorder-blocks-and-partition%> funktioniert auf dieser Architektur nicht mit Ausnahmen%<-freorder-blocks-and-partition%> wird auf dieser Architektur nicht unterstÃ¼tzt%<-fsanitize-address-use-after-scope%> erfordert %<-fstack-reuse=none%>%<-fsanitize-recover=%s%> wird nicht unterstÃ¼tzt%<-fsanitize-trap=%s%> wird nicht unterstÃ¼tzt%<-fsanitize=%s%> ist mit %<-fsanitize=%s%> unvertrÃ¤glich%<-fsanitize=address%> und %<-fsanitize=kernel-address%> werden fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fsanitize=address%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fsanitize=all%> ist ungÃ¼ltig%<-fsanitize=kernel-address%> mit Stapelschutz wird auf diesem Ziel nur in Kombination mit %<-fasan-shadow-offset=%> unterstÃ¼tzt%<-fsanitize=pointer-compare%> muss mit %<-fsanitize=address%> oder %<-fsanitize=kernel-address%> kombiniert werden%<-fsanitize=pointer-subtract%> muss mit %<-fsanitize=address%> oder %<-fsanitize=kernel-address%> kombiniert werden%<-fsanitize=shadow-call-stack%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fsanitize=shadow-call-stack%> erfordert %<-ffixed-x18%>%<-fsanitize=shadow-call-stack%> erfordert %<-fno-exceptions%>%<-fsplit-stack%> wird derzeit nur auf GNU/Linux unterstÃ¼tzt%<-fsplit-stack%> wird derzeit nur auf PowerPC64 GNU/Linux mit glibc-2.18 oder neuer unterstÃ¼tzt%<-fsplit-stack%> unterstÃ¼tzt nicht 2 Registerparameter fÃ¼r eine geschachtelte Funktion%<-fsplit-stack%> unterstÃ¼tzt nicht 3 Registerparameter%<-fsplit-stack%> unterstÃ¼tzt nicht fastcall mit geschachtelter Funktion%<-fsplit-stack%> wird von dieser Compilerkonfiguration nicht unterstÃ¼tzt%<-fsplit-stack%> erfordert AssemblerunterstÃ¼tzung fÃ¼r CFI-Direktiven%<-fstack-check=%> und %<-fstack-clash-protection%> schlieÃŸen einander aus. %<-fstack-check=%> wird deaktiviert%<-fstack-check=specific%> fÃ¼r Thumb-1%<-fstack-check=specific%> nicht fÃ¼r MIPS16 implementiert%<-fstack-clash-protection%> wird von %<-fhardened%> nicht eingeschaltet, weil %<-fstack-check%> in der Befehlszeile angegeben wurde%<-fstack-clash-protection%> wird auf Architekturen, deren Stapel von klein nach groÃŸ wÃ¤chst, nicht unterstÃ¼tztOptionen %<-fstack-limit-%> werden durch %<-mfdpic%> ignoriert; stattdessen %<-mstack-check-l1%> verwendendie Optionen %<-fstack-limit-%> werden auf dieser CPU nicht unterstÃ¼tzt%<-fstack-protector%> funktioniert auf dieser Architektur nicht%<-fstack-protector%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-fstack-protector-strong%> wird von %<-fhardened%> nicht eingeschaltet, da es in der Befehlszeile angegeben wurde%<-ftrivial-auto-var-init=zero%> wird von %<-fhardened%> nicht eingeschaltet, da es in der Befehlszeile angegeben wurde%<-fuse-cxa-atexit%> wird fÃ¼r msp430-elf nicht unterstÃ¼tzt%<-fuse-linker-plugin%>, aber %s nicht gefunden%<-fwpa%> und %<-fltrans%> schlieÃŸen sich gegenseitig aus%<-g%> wird nur bei der Verwendung von GAS auf diesem Prozessor unterstÃ¼tztOption %<-g%> ausgeschaltet%<-g%> mit %<-mno-apcs-frame%> kÃ¶nnte vernÃ¼nftiges Debugging verhindern%<-g3%> wird nicht vom verwendeten Debuggingbinder unterstÃ¼tzt (wird auf 2 gesetzt)%<-gas-locview-support%> wird zwangsweise ausgeschaltet, da %<-gas-loc-support%> nicht angegeben ist%<-gdwarf%s%> ist mehrdeutig; verwenden Sie %<-gdwarf-%s%> fÃ¼r die DWARF-Version und %<-gdwarf -g%s%> fÃ¼r die Debugstufe%<-gdwarf-6%> wird als Version 5 ausgegeben, mit InkompatibilitÃ¤ten%<-ginline-points%> wird zwangsweise ausgeschaltet, da %<-gstatement-frontiers%> nicht angegeben ist%<-ginternal-reset-location-views%> wird zwangsweise ausgeschaltet, da %<-gvariable-location-views%> nicht angegeben ist%<-gnat%> falsch buchstabiert als %<-gant%>%<-gsplit-dwarf%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt, wird ignoriert%<-gsplit-dwarf%> wird nicht zusammen mit LTO unterstÃ¼tzt, wird daher ausgeschaltetOption %<-iplugindir%> nicht vom GCC-Treiber Ã¼bergeben%<-m%s%> wird in dieser Konfiguration nicht unterstÃ¼tzt%<-m%s%> setzt %<-m%s=%s%> auÃŸer Kraft, die ABI wird auf %qs angepasst%<-m%s=%s%> steht im Konflikt mit %qs, das %<%s%s%> erfordert%<-m32%> widerspricht %<-arch ppc64%> (%<-m32%> wird ignoriert)%<-m32%> widerspricht %<-arch x86_64%> (%<-m32%> wird ignoriert)%<-m64%> benÃ¶tigt eine PowerPC64-CPU%<-m96bit-long-double%> ist nicht mit diesem Ziel kompatibel%<-mabi=%s%> wird nicht zusammen mit %<-fsanitize=address%> unterstÃ¼tzt%<-mabi=%s%> wird nicht zusammen mit %<-fsanitize=kernel-address%> unterstÃ¼tzt%<-mabi=%s%> wird nicht zusammen mit %<-fsanitize=thread%> unterstÃ¼tztdie Option %<-mabi=2fp+%> wird nur unterstÃ¼tzt, wenn eine FPU verfÃ¼gbar ist, das kann durch die Optionen %<-mext-fpu-sp%> oder %<-mext-fpu-dp%> eingeschaltet werden%<-mabi=ilp32%> ist veraltet%<-mabi=ms%> wird in der X32-ABI nicht unterstÃ¼tzt%<-maix64%> benÃ¶tigt: 64-Bit-Berechnung mit 32-Bit-Adressierung noch nicht unterstÃ¼tzt%<-maix64%> setzt eingeschaltete PowerPC64-Architektur voraus%<-malign-functions%> ist veraltet, Ersatz: %<-falign-functions%>%<-malign-functions=%d%> liegt nicht zwischen 0 und %d%<-malign-jumps%> ist veraltet, Ersatz: %<-falign-jumps%>%<-malign-jumps=%d%> liegt nicht zwischen 0 und %d%<-malign-loops%> ist veraltet, Ersatz: %<-falign-loops%>%<-malign-loops=%d%> liegt nicht zwischen 0 und %d%<-mapcs-stack-check%> vertrÃ¤gt sich nicht mit %<-mno-apcs-frame%>%<-mapx-features=%> wird fÃ¼r 32-Bit-Code nicht unterstÃ¼tzt%<-mapxf%> wird fÃ¼r 32-Bit-Code nicht unterstÃ¼tzt%<-march=%> muss angegeben werden%<-march=%s%> ist mit dem ausgewÃ¤hlten ABI unvertrÃ¤glich%<-march=%s%> erfordert %<-mfp32%>%<-march=%s%>: %s mÃ¼ssen durch %<_%> getrennt sein%<-march=%s%>: ISA-Zeichenkette muss mit %<rv32%> oder %<rv64%> anfangen%<-march=%s%>: Die Erweiterung %<%c%> ist keine einbuchstabige Erweiterung.%<-march=%s%>: nach %<%dp%> muss eine Zahl stehen%<-march=%s%>: Erweiterung %qs kommt mehr als einmal vor%<-march=%s%>: Erweiterung %qs ist eine nicht unterstÃ¼tzte Einbuchstaben-Erweiterung%<-march=%s%>: Erweiterung %qs beginnt mit %<s%>, ist aber eine nicht unterstÃ¼tzte Standard-Supervisor-Erweiterung%<-march=%s%>: Erweiterung %qs beginnt mit %<x%>, ist jedoch eine nicht unterstÃ¼tzte Nicht-Standard-Erweiterung%<-march=%s%>: die Erweiterung %qs beginnt mit %<z%>, ist aber eine nicht unterstÃ¼tzte Standarderweiterung%<-march=%s%>: erste ISA-Teilmenge muss %<e%>, %<i%> oder %<g%> sein%<-march=%s%>: fÃ¼r %<%s%dp%dp?%> wird Versionsnummer mit mehr als 2 Stufen nicht unterstÃ¼tzt%<-march=%s%>: Erweiterung h erfordert Erweiterung i%<-march=%s%>: i, e oder g muss die erste Erweiterung sein%<-march=%s%>: Name von %s muss mehr als 1 Buchstabe sein%<-march=%s%>: rv%de ist keine gÃ¼ltige Basis-ISA%<-march=%s%>: xtheadvector steht im Konflikt mit der Vektorerweiterung oder ihren Untererweiterungen%<-march=%s%>: z*inx ist mit Gleitkommaerweiterungen unvertrÃ¤glich%<-march=%s%>: zcd steht im Konflikt mit zcmp%<-march=%s%>: zcd steht im Konflikt mit zcmt%<-march=%s%>: Erweiterung zcf wird nur in rv32 unterstÃ¼tzt%<-masm=intel%> wird in dieser Konfiguration nicht unterstÃ¼tzt%<-mavx10.1%> ist seit GCC14.3 und GCC15.1 ein Alias fÃ¼r 512 Bit, wÃ¤hrend %<-mavx10.1-256%> und %<-mavx10.1-512%> in GCC 16 veraltet sein werden, da alle Maschinen 512 Bit VektorgrÃ¶ÃŸe unterstÃ¼tzen%<-max-stackframe=%d%> ist nicht verwendbar, nicht zwischen 0 und %ddie Kombination aus %<-mbackchain%>, %<-mpacked-stack%> und %<-mhard-float%> wird nicht unterstÃ¼tzt%<-mbranch-cost=%d%> liegt nicht zwischen 0 und 5%<-mcall-aixdesc%> ist unvertrÃ¤glich mit %<-mabi=elfv2%>%<-mcall-ms2sysv-xlogues%> ist nicht kompatibel mit %<%s%>%<-mcall-ms2sysv-xlogues%> wird derzeit nicht zusammen mit SEH unterstÃ¼tzt%<-mcmodel%> unvertrÃ¤glich mit anderen TOC-Optionen%<-mcmodel=%> wird im 32-Bit-Modus nicht unterstÃ¼tzt%<-mcode-region=either%> erfordert das groÃŸe Speichermodell (%<-mlarge%>)%<-mcode-region=upper%> erfordert das groÃŸe Speichermodell (%<-mlarge%>)%<-mcorea%> und %<-mcoreb%> kÃ¶nnen nicht zusammen verwendet werden%<-mcorea%> sollte mit %<-mmulticore%> verwendet werden%<-mcoreb%> sollte mit %<-mmulticore%> verwendet werden%<-mcpu=%> ist veraltet. Verwenden Sie stattdessen %<-mtune=%> oder %<-march=%>%<-mcpu=%s%> steht in Konflikt mit %<-march=%s%>%<-mcpu=%s%> hat ungÃ¼ltige Silizium-Revision%<-mcpu=%s%> ist nicht gÃ¼ltig%<-mcpu=%s%>: unbekannte CPU%<-mdata-region=either%> erfordert das groÃŸe Speichermodell (%<-mlarge%>)%<-mdata-region=upper%> erfordert das groÃŸe Speichermodell (%<-mlarge%>)%<-mdiv%> erfordert %<-march%>, um die %<M%>-Erweiterung zu ermitteln%<-mdouble-float%> wird ohne %<-mhard-float%> ignoriert%<-mdynamic-no-pic%> Ã¼bersteuert %<-fpic%>, %<-fPIC%>, %<-fpie%> oder %<-fPIE%>%<-mes0%> kann nur zusammen mit C verwendet werden%<-mevex512%> wird in GCC 16 veraltet sein, da alle Maschinen 512 Bit VektorgrÃ¶ÃŸe unterstÃ¼tzen%<-mexr%> wird ohne %<-ms%> verwendet%<-mexr%> wird ohne %<-ms%> oder %<-msx%> verwendet%<-mfdivdu%> wird ohne %<-mhard-float%> ignoriert%<-mfdpic%> wird nicht unterstÃ¼tzt, bitte das Ziel Â»bfin-linux-uclibcÂ« verwenden%<-mfentry%> wird nur auf 64-Bit-CPUs unterstÃ¼tzt%<-mfentry%> wird fÃ¼r 32 Bit in Kombination mit %<-fpic%> nicht unterstÃ¼tzt%<-mfloat-abi=hard%> und VFP%<-mfloat-abi=hard%>: ausgewÃ¤hlte Architektur hat keine FPU%<-mfpxx%> kann nur mit dem o32-ABI verwendet werden%<-mfunction-return%> und %<-fcf-protection%> sind nicht kompatibel%<-mfunction-return=%s%> und %<-mcmodel=large%> sind nicht kompatibel%<-mfused-madd%> ist veraltet; stattdessen %<-ffp-contract=%> verwenden%<-mgp32%> und %<-mfp64%> kÃ¶nnen nur kombiniert werden, wenn das Ziel die Befehle mfhc1 und mthc1 unterstÃ¼tzt%<-mgp32%> und %<-mfp64%> kÃ¶nnen nur kombiniert werden, wenn o32-ABI verwendet wird%<-mgp32%> mit einem 64-Bit-ABI verwendet%<-mgp64%> mit einem 32-Bit-ABI verwendet%<-mgp64%> mit einem 32-Bit-Prozessor verwendet%<-mhard-dfp%> kann nicht in Verbindung mit %<-msoft-float%> verwendet werden%<-mhard-float%> wird von der ausgewÃ¤hlten CPU nicht unterstÃ¼tzt%<-mincoming-stack-boundary=%d%> liegt nicht zwischen %d und 12%<-mindirect-branch%> und %<-fcf-protection%> sind nicht kompatibel%<-mindirect-branch=%s%> und %<-mcmodel=large%> sind nicht kompatibel%<-mintel-syntax%> und %<-mno-intel-syntax%> sind veraltet; stattdessen %<-masm=intel%> und %<-masm=att%> verwenden%<-mips3d%> erfordert %<-mpaired-single%>Argument fÃ¼r %<-misr-secure=%d%> liegt nicht zwischen 0 und 3fÃ¼r die Option %<-misr-vector-size=%d%> sind nur die Werte 4 oder 16 gÃ¼ltig%<-mlam=%>-Option: [u48|u57] wird fÃ¼r 32-Bit-Code nicht unterstÃ¼tzt%<-mlam=u48%> ist nicht kompatibel mit hardwareunterstÃ¼tztem AddressSanitizer, stattdessen wird %<-mlam=u57%> verwendet%<-mlarge%> erfordert ein 430X-kompatibles %<-mmcu=%>%<-mlong-double-64%> ist mit %<-m64%> nicht erlaubt%<-mloongson-ext2%> muss zusammen mit %<-mloongson-ext%> verwendet werden%<-mloongson-mmi%> muss zusammen mit %<-mhard-float%> verwendet werden%<-mmsa%> muss zusammen mit %<-mfp64%> und %<-mhard-float%> verwendet werden%<-mmul=g13%> kann nicht zusammen mit %<-mcpu=g10%> verwendet werden%<-mmul=g13%> kann nicht zusammen mit %<-mcpu=g14%> verwendet werden%<-mmul=g14%> kann nicht zusammen mit %<-mcpu=g10%> verwendet werden%<-mmul=g14%> kann nicht zusammen mit %<-mcpu=g13%> verwendet werden%<-mmulticore%> kann nur mit BF561 verwendet werden%<-mn%> wird fÃ¼r Linux-Ziele nicht unterstÃ¼tzt%<-mno-%s%> schaltet %<-m%s%> aus%<-mno-allow-string-insns%> verbietet das Erzeugen des RMPA-Befehls%<-mno-altivec%> schaltet vsx aus%<-mno-avx10.1-256, -mno-avx10.1-512%> kann AVX512-Befehle nicht deaktivieren, wenn %<-mavx512XXX%> in GCC 15 verwendet wird. Das Verhalten Ã¤ndert sich dahingehend, dass alle Befehle in GCC 16 deaktiviert werden%<-mno-avx512XXX%> kann AVX10-Befehle nicht deaktivieren, wenn AVX10 in GCC 15 verfÃ¼gbar ist. Das Verhalten Ã¤ndert sich dahingehend, dass es diesen Teil der AVX512-Befehle ab GCC 16 deaktiviert%<-mno-dpfp-lrsr%> wird nur mit %<-mdpfp%> unterstÃ¼tzt%<-mno-evex512%> oder %<-mno-avx512XXX%> kann AVX10-Befehle nicht ausschalten, wenn AVX10.1-512 in GCC 15 verfÃ¼gbar ist. Das Verhalten wird sich Ã¤ndern, sodass dieser Teil der AVX512-Befehle ab GCC 16 deaktiviert wird%<-mno-exr%> ist nur mit %<-ms%> oder %<-msx%> gÃ¼ltig, die Option wird ignoriert%<-mno-fentry%> ist nicht mit SEH vertrÃ¤glich%<-mno-gpopt%> erfordert %<-mexplicit-relocs%>%<-mno-mpy%> wird nur fÃ¼r ARC700 oder ARCv2 unterstÃ¼tzt%<-mno-pic-data-is-text-relative%> kann nur zusammen mit %<-fpic%>/%<-fPIC%> verwendet werden%<-mnop-mcount%> ist nicht mit diesem Ziel kompatibel%<-mnop-mcount%> ist fÃ¼r %<-fno-plt%> nicht implementiert%<-mpcrel -fPIC%> wird derzeit nicht fÃ¼r die ausgewÃ¤hlte CPU unterstÃ¼tzt%<-mpic-register=%> ist ohne %<-fpic%> nutzlos%<-mpic-symbol-stubs%> ist fÃ¼r 64-Bit-Code nicht erforderlich (ignoriert)%<-mpreferred-stack-boundary%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<-mpreferred-stack-boundary=%d%> liegt nicht zwischen %d und %d%<-mpreferred-stack-boundary=%d%> muss zwischen %d und %d liegen%<-mquad-memory%> ist im Little-Endian-Modus nicht verfÃ¼gbar%<-mquad-memory%> benÃ¶tigt 64-Bit-Modus%<-mquad-memory-atomic%> benÃ¶tigt 64-Bit-Modus%<-mregparm%> wird fÃ¼r Intel-MCU-psABI ignoriert%<-mregparm%> wird im 64-Bit-Modus ignoriert%<-mregparm=%d%> liegt nicht zwischen 0 und %d%<-mrelax%> wird nur fÃ¼r RTP PIC unterstÃ¼tzt%<-mriscv-attribute%> RISC-V-ELF-Attribut erfordert GNU as 2.32 [%<-mriscv-attribute%>]%<-mrop-protect%> erfordert %<-mcpu=power8%> oder hÃ¶her%<-mrop-protect%> erfordert das ELFv2-ABI%<-mrtd%> wird im 64-Bit-Modus ignoriert%<-ms2600%> wird ohne %<-ms%> verwendet%<-mshared-library-id=%> ohne %<-mid-shared-library%> angegeben%<-mshared-library-id=%s%> liegt nicht zwischen 0 und %d%<-msmart%> ist mit %<-mhigh-registers%> unvertrÃ¤glich%<-mspfp_fast%> ist auf ARC600 und ARC601 nicht verfÃ¼gbar%<-msse5%> wurde entfernt%<-msseregparm%> verwendet, ohne dass SSE eingeschaltet ist%<-mstack-guard%> bringt %<-mstack-size%> mit sich%<-mstack-protector-guard=tls%> erfordert ein Hardware-TLS-Register%<-mstringop-strategy=rep_8byte%> wird fÃ¼r 32-Bit-Code nicht unterstÃ¼tzt%<-mtpf-trace-hook-epilogue-check%> erfordert eine Ganzzahl im Bereich von 0 bis 4095%<-mtpf-trace-hook-epilogue-target%> erfordert eine Ganzzahl im Bereich von 0 bis 4095%<-mtpf-trace-hook-prologue-check%> erfordert eine Ganzzahl im Bereich von 0 bis 4095%<-mtpf-trace-hook-prologue-target%> erfordert eine Ganzzahl im Bereich von 0 bis 4095%<-mtune=%> erwartet mn10300, am33, am33-2 oder am34%<-mtune=x86-64%> ist veraltet; stattdessen entsprechend %<-mtune=k8%> oder %<-mtune=generic%> verwenden%<-muintr%> wird fÃ¼r 32-Bit-Code nicht unterstÃ¼tzt%<-mvrsave=no%> ist veraltet. Verwenden Sie stattdessen %<-mno-vrsave%>%<-mvrsave=yes%> ist veraltet. Verwenden Sie stattdessen %<-mvrsave%>%<-mvsx%> und %<-mavoid-indexed-addresses%> sind unvertrÃ¤glich%<-mvsx%> und %<-mno-altivec%> sind unvertrÃ¤glich%<-mvsx%> und %<-msoft-float%> sind unvertrÃ¤glich%<-mvsx%> benÃ¶tigt indizierte Adressierung%<-mvsx%> benÃ¶tigt Hardware-Gleitkommabefehle%<-mxl-multiply-high%> kann nur mit %<-mcpu=v6.00.a%> oder hÃ¶her verwendet werden%<-mxl-multiply-high%> erfordert %<-mno-xl-soft-mul%>%<-mxl-reorder%> kann nur mit %<-mcpu=v8.30.a%> oder hÃ¶her verwendet werden%<-mxl-reorder%> erfordert %<-mxl-pattern-compare%> fÃ¼r %<-mcpu=v8.30.a%>%<-mxnack=on%> ist nicht kompatibel mit %<-march=%s%>%<-pipe%> ignoriert, da %<-save-temps%> angegeben wurde%<-pipe%> wird nicht unterstÃ¼tzt%<-x %s%> hinter letzter Eingabedatei hat keine Auswirkung%<.%s%>-Name wird mehrfach in derselben Initialisierungsliste verwendet%<...%>-Behandler muss der letzte Behandler fÃ¼r seinen Â»tryÂ«-Block sein%<...%> ist in benannten Initialisierungen nicht erlaubt%<:%>-EinschrÃ¤nkung mit anderen Bedingungen vermischtOperand der %<:%>-EinschrÃ¤nkung ist weder die Adresse einer Funktion noch einer nichtautomatischen Variable%<:%>-EinschrÃ¤nkung fÃ¼r Ausgabeoperanden verwendet%<::%> in PROCEDURE-Bindung mit explizitem Ziel bei %C erforderlich%<::%D%> wurde nicht deklariert%<::%D%> wurde nicht deklariert; meinten Sie %qs?%<::%E%> wurde nicht deklariert%<::%E%> ist keine Klasse oder Namensbereich%<::%E%> ist keine Klasse, Namensbereich oder AufzÃ¤hlung%<::%E%> ist kein Typ%<::main%> kann nicht gelÃ¶scht werden%<::main%> muss %<int%> zurÃ¼ckgeben%<<:%> ist eine andere Schreibweise fÃ¼r %<[%>. Leerraum zwischen %<<%> und %<::%> einfÃ¼gen%<<::%> kann keine Templateargumentliste einleiten%<<<%> in booleschem Kontext, meinten Sie %<<%>?%<=%>Optionen fehlen nach %<-foffload-options=%>Ziel%<=> target%> ist ungÃ¼ltig fÃ¼r DEFERRED-Bindung bei %COperator %<>>%> wird in C++11 wie zwei spitze schlieÃŸende Klammern behandelt%<>>%> sollte innerhalb einer geschachtelten Templateargumentliste %<> >%> sein%<?:%> mit Ganzzahlkonstanten in booleschem Kontext%<?:%> mit Ganzzahlkonstanten in booleschem Zusammenhang; der Ausdruck evaluiert immer zu %<true%>%<@catch%>-Parameter kann nicht Protokoll-qualifiziert sein%<@catch%>-Parameter ist kein bekannter Objective-C-Klassentypin Objective-C 1.0 gibt es kein %<@dynamic%>%<@dynamic%> nicht in @implementation-Kontext%<@dynamic%> erfordert VerfÃ¼gbarkeit des @interface der Klasse%<@encode%> muss als Argument einen Typen angeben%<@end%> fehlt in Implementationskontext%<@end%> muss in einem @implementation-Kontext auftreten%<@interface%> der Klasse %qE nicht gefunden%<@optional%> ist nur im @protocol-Kontext erlaubt%<@optional%> ist in Objective-C 1.0 nicht verfÃ¼gbar%<@package%> ist in Objective-C 1.0 nicht verfÃ¼gbar%<@package%> hat derzeit den gleichen Effekt wie %<@public%>%<@property%> ist in Objective-C 1.0 nicht verfÃ¼gbar%<@required%> ist nur im @protocol-Kontext erlaubt%<@required%> ist in Objective-C 1.0 nicht verfÃ¼gbar%<@synchronized%>-Argument ist kein Objekt%<@synthesize%> kann nicht in Kategorien verwendet werdenin Objective-C 1.0 gibt es kein %<@synthesize%>%<@synthesize%> nicht in @implementation-Kontext%<@synthesize%> erfordert VerfÃ¼gbarkeit des @interface der Klasse%<@throw%> (rethrow) auÃŸerhalb von %<@catch%>-Block verwendet%<@throw%>-Argument ist kein Objekt%<@try%> ohne %<@catch%> oder %<@finally%>%<COLLECT_GCC%> muss gesetzt seinSpaltenÃ¼berschriften %<CPU_TYPE%> und %<MPY_TYPE%> fehlen in %<devices.csv%>SpaltenÃ¼berschrift %<CPU_TYPE%> fehlt in %<devices.csv%>%<CTABLE_ENTRY%>-Basisadresse muss ein Vielfaches von 256 seinIndex %wd fÃ¼r %<CTABLE_ENTRY%> ist nicht gÃ¼ltig%<DEFERRED_INIT%>-Aufrufe sollten die gleiche konstante GrÃ¶ÃŸe fÃ¼r das erste Argument und LHS haben%<DETACH%>-Klausel bei %L darf nicht zusammen mit %<MERGEABLE%>-Klausel verwendet werden%<FULL%>-Klausel bei %C darf nicht zusammen mit %<PARTIAL%>-Klausel verwendet werden%<G0%> in Format bei %LDie Direktive %<GCC ivdep%> bei %C darf nur direkt vor einem Schleifenbeginn stehenDie Direktive %<GCC novector%> bei %C darf nur direkt vor einem Schleifenbeginn stehenDie Direktive %<GCC unroll%> bei %C darf nur direkt vor einem Schleifenbeginn stehenDirektive %<GCC unroll%> verlangt eine konstante Anzahl (maximal %u), bei %CDie Direktive %<GCC vector%> bei %C darf nur direkt vor einem Schleifenbeginn stehendie %<GRAINSIZE%>-Klausel bei %L darf nicht zusammen mit der %<NUM_TASKS%>-Klausel verwendet werden%<HLE_ACQUIRE%> wird mit %<ACQUIRE%> oder stÃ¤rkerem Speichermodell nicht verwendet%<HLE_RELEASE%> wird mit %<RELEASE%> oder stÃ¤rkerem Speichermodell nicht verwendet%<LEXER_DEBUGGING_ENABLED_P%> ist nicht auf true gesetztArgument %<MOLD%> des intrinsischen %<TRANSFER%> bei %L ist ein Array und darf nicht die SpeichergrÃ¶ÃŸe 0 haben, da das %<SOURCE%>-Argument grÃ¶ÃŸer als 0 istArgument %<MOLD%> des intrinsischen %<TRANSFER%> bei %L darf nicht %s seinArgument %<MOLD%> des intrinsischen %<TRANSFER%> bei %L darf kein %s seinSpaltenÃ¼berschrift %<MPY_TYPE%> fehlt in %<devices.csv%>Die Direktive %<OMP DISPATCH%> bei %L kann nicht von einem Prozedurzeiger gefolgt werdenAuf die Direktive %<OMP DISPATCH%> bei %L muss ein Prozeduraufruf mit optionaler Zuweisung folgenAuf die Direktive %<OMP DISPATCH%> bei %C muss ein Prozeduraufruf mit optionaler Zuweisung folgen%<PRINT_OPERAND%> Null-Zeiger%<PRINT_OPERAND%>: Unbekanntes Satzzeichen %<%c%>%<PRINT_OPERAND_ADDRESS%>, Null-Zeigerdie %<REDUCTION%>-Klausel bei %L darf nicht zusammen mit der %<NOGROUP%>-Klausel verwendet werdenArgument %<SOURCE%> des intrinsischen %<TRANSFER%> bei %L darf kein %s seinInterner Compilerfehler: %<TREE_PURPOSE%> is non-NULL in %<TYPE_ARG_TYPES%> listInterner Compilerfehler: %<TYPE_ARRAY_MAX_SIZE%> not %<INTEGER_CST%>Interner Compilerfehler: %<TYPE_BINFO%> is not %<TREE_BINFO%>Interner Compilerfehler: %<TYPE_BINFO%> type is not %<TYPE_MAIN_VARIANT%>Interner Compilerfehler: %<TYPE_CACHED_VALUES%> is not %<TREE_VEC%>Interner Compilerfehler: %<TYPE_CACHED_VALUES_P%> is %i while %<TYPE_CACHED_VALUES%> is %pInterner Compilerfehler: %<TYPE_CACHED_VALUES_P%> is set while it should not beInterner Compilerfehler: %<TYPE_CANONICAL%> has different %<TYPE_CANONICAL%>Interner Compilerfehler: %<TYPE_CANONICAL%> is not compatibleInterner Compilerfehler: %<TYPE_CANONICAL%> of main variant is not main variantInterner Compilerfehler: %<TYPE_FIELDS%> defined in incomplete typeInterner Compilerfehler: %<TYPE_LANG_SLOT_1 (binfo)%> field is non-NULLInterner Compilerfehler: %<TYPE_MAIN_VARIANT%> has different %<TYPE_MAIN_VARIANT%>Interner Compilerfehler: %<TYPE_MAX_VALUE_RAW%> non-NULLInterner Compilerfehler: %<TYPE_METHOD_BASETYPE%> is not main variantInterner Compilerfehler: %<TYPE_METHOD_BASETYPE%> is not record nor unionInterner Compilerfehler: %<TYPE_MODE%> of %<TYPE_CANONICAL%> is not compatibleInterner Compilerfehler: %<TYPE_NEXT_PTR_TO%> is not %<POINTER_TYPE%>Interner Compilerfehler: %<TYPE_NEXT_REF_TO%> is not %<REFERENCE_TYPE%>Interner Compilerfehler: %<TYPE_OFFSET_BASETYPE%> is not record nor unionInterner Compilerfehler: %<TYPE_VALUES_RAW%> field is non-NULLInterner Compilerfehler: %<TYPE_VFIELD%> is not %<FIELD_DECL%> nor %<TREE_LIST%>%<V%>-Modifikator an nicht-ganzzahligem Register%<[%E] =%> in benannter Initialisierung im GNU-Stil fÃ¼r Klasse %qT verwendet%<[*]%> auÃŸerhalb des Bereichs des Funktionsprototypen nicht erlaubt%<[*]%> nicht in einer Deklaration%<[[omp::directive(%s)]]%> muss das einzige angegebene Attribut in einer Anweisung sein%<[super â€¦]%> darf nur in einem Methodenkontext auftreten%<_Alignas%>-Spezifizierer kÃ¶nnen nicht die Ausrichtung von %qE reduzieren%<_Alignas%>-Spezifizierer kÃ¶nnen nicht die Ausrichtung eines zusammengesetzten Feldes reduzieren%<_Alignas%>-Spezifizierer kÃ¶nnen nicht die Ausrichtung eines unbenannten Feldes reduzieren%<_Atomic%> %qD in %<aligned%>-Klausel%<_Atomic%> %qD in %<firstprivate%>-Klausel am %<target%>-Konstrukt%<_Atomic%> %qD in %<linear%>-Klausel%<_Atomic%>-Deklaration %qD in %qs-Klausel%<_Atomic%> %qD in impliziter %<firstprivate%>-Klausel am %<target%>-Konstrukt%<_Atomic%> %qD in implizier %<map%>-Klausel%<_Atomic%> %qE in %<reduction%>-Klausel%<_Atomic%>-Ausdruck %qE in %qs-Klausel%<_Atomic%> auf einen qualifizierten Typen angewandt%<_Atomic%>-Ausdruck in %<#pragma omp atomic%>%<_Atomic%> in Objective-C%<_Atomic%>-Iterationsvariable %qE%<_Atomic%>-qualifizierter Typ in %<#pragma omp declare reduction%>%<_Atomic%>-qualifizierter Arraytyp%<_Atomic%>-qualifizierter Funktionstyp%<_Atomic%>-qualifizierter Parametertyp %qT von %q+D%<_Atomic%>-qualifizierter RÃ¼ckgabetyp von %qD%<_BitInt%>-Argument %qE ist grÃ¶ÃŸer als %<BITINT_MAXWIDTH%> %qd%<_BitInt%>-Argument %qE ist kein positiver konstanter Ganzzahlausdruck%<_BitInt%>-Argument ist kein konstanter Ganzzahlausdruck%<_BitInt(%d)%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<_Complex _BitInt(%d)%> wird nicht unterstÃ¼tzt%<_FORTIFY_SOURCE%> wird von %<-fhardened%> nicht eingeschaltet, da es in %<-D%> oder %<-U%> angegeben wurde%<_FORTIFY_SOURCE%> wird von %<-fhardened%> nicht eingeschaltet, da die Optimierungen ausgeschaltet sind%<_Float%d%s%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<_GLIBCXX_ASSERTIONS%> wird von %<-fhardened%> nicht eingeschaltet, da es in %<-D%> oder %<-U%> angegeben wurde%<_Generic%>-Verbindung hat variable TyplÃ¤nge%<_Generic%>-Selektor passt zu mehreren Zuordnungen%<_Generic%>-Selektor vom Typ %qT ist mit keiner der Zuordnungen kompatibel%<_Generic%> gibt zwei kompatible Typen an%<_Noreturn%> in leerer Deklaration%<_Sat%> ohne %<_Fract%> oder %<_Accum%> verwendetAttribut %<__BELOW100__%> nicht mit Speicherklasse Â»autoÂ« erlaubtAttribut %<__BELOW100__%> bezieht sich nur auf Variablen%<__GIMPLE%> ist nur mit %<-fgimple%> gÃ¼ltigFunktion %<__RTL%> kann nicht mit %<-flto%> kompiliert werden%<__alignof%> auf Bitfeld angewandt%<__auto_type%> gefolgt von %<[[]]%>-Attributen%<__auto_type%> erfordert einen einfachen Bezeichner als Deklarator%<__auto_type%> wird mit einem Bitfeld-Initialisierer verwendet%<__bfloat16%> ist seit GCC 13.1 von typedef %<short%> zum echten %<__bf16%> umdefiniert, Vorsicht bei impliziter Konvertierung zwischen %<__bf16%> und %<short%>; hier kann ein explizites Bitcast nÃ¶tig sein%<__builtin_arc_aligned%> mit nichtkonstanter AusrichtungZieltyp %qT von %<__builtin_bit_cast%> ist ein ArraytypZieltyp %qT von %<__builtin_bit_cast%> ist nicht trivial kopierbarin %<__builtin_bit_cast%> ist die QuellgrÃ¶ÃŸe %qE ungleich der ZieltypgrÃ¶ÃŸe %qEQuelltyp %qT von %<__builtin_bit_cast%> ist nicht trivial kopierbarOperand von %<__builtin_complex%> nicht realer binÃ¤rer GleitkommatypOperanden von %<__builtin_complex%> unterschiedlichen TypsDas erste Argument von %<__builtin_convertvector%> muss Ganzzahl- oder Gleitkommavektor seinAnzahl der Elemente des ersten Argumentvektors und des Typs des zweiten Argumentvektors fÃ¼r %<__builtin_convertvector%> sollten gleich seinDas zweite Argument von %<__builtin_convertvector%> muss Ganzzahl- oder Gleitkommavektortyp sein%<__builtin_eh_return%> fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<__builtin_has_attribute%> mit abhÃ¤ngigem Argument wird noch nicht unterstÃ¼tztArgument von %<__builtin_is_corresponding_member%> muss ein Zeiger auf Member sein%<__builtin_is_corresponding_member%> benÃ¶tigt zwei Argumente%<__builtin_is_corresponding_member%> nicht wohldefiniert fÃ¼r anonyme VereinigungenArgument von %<__builtin_is_pointer_interconvertible_with_class%> muss ein Zeiger auf Member sein%<__builtin_is_pointer_interconvertible_with_class%> benÃ¶tigt ein einziges ArgumentZweites Argument fÃ¼r %<__builtin_longjmp%> muss 1 sein%<__builtin_next_arg%> ohne Argument gerufen%<__builtin_rx_%s%> benÃ¶tigt %<C%>, %<Z%>, %<S%>, %<O%>, %<I%> oder %<U%>%<__builtin_saveregs%> wird fÃ¼r dieses Teilziel nicht unterstÃ¼tzt%<__builtin_saveregs%> wird von diesem Ziel nicht unterstÃ¼tzt%<__builtin_set_thread_pointer%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tztInnere Typen des/der Argumentvektors/en und Maske von %<__builtin_shuffle%> mÃ¼ssen gleiche GrÃ¶ÃŸe habenVektorargumente von %<__builtin_shuffle%> mÃ¼ssen gleichen Typ habenArgumente fÃ¼r %<__builtin_shuffle%> mÃ¼ssen Vektoren seinDas letzte Argument von %<__builtin_shuffle%> muss Ganzzahlvektor seinAnzahl der Elemente des/der Argumentvektors/en und des Maskenvektors fÃ¼r %<__builtin_shuffle%> sollten gleich seinVektorargumente von %<__builtin_shufflevector%> mÃ¼ssen den gleichen Typ habenArgumente fÃ¼r %<__builtin_shufflevector%> mÃ¼ssen Vektoren konstanter GrÃ¶ÃŸe seinArgumente fÃ¼r %<__builtin_shufflevector%> mÃ¼ssen Vektoren sein%<__builtin_shufflevector%> muss ein Ergebnis mit einer Zweierpotenz von Elementen angeben%<__builtin_thread_pointer%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tztAufruf von %<__builtin_unreachable%> oder %<__builtin_trap%> mit Argumenten%<__delay_cycles%> ist auf 32-Bit-SchleifendurchlÃ¤ufe beschrÃ¤nkt%<__delay_cycles%> nimmt nur konstante Argumente entgegen%<__delay_cycles%> nimmt nur nicht-negative Zykluszahlen entgegen%<__fp16%> ohne %<ldrh%>%<__gcc_host_wide_int__%> ist nicht als %<long%> oder %<long long%> definiert%<__gcc_host_wide_int__%> ist nicht als Typ definiert%<__int%d%> wird von diesem Ziel nicht unterstÃ¼tzt%<__int%d%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt%<__label__%>-Deklarationen sind nur im FunktionsgÃ¼ltigkeitsbereich erlaubt%<__label__%> nicht am Anfang eines Blocks%<__restrict%> kann nur fÃ¼r Objekte und Funktionen angegeben werden%<__thread%> vor %<extern%>%<__thread%> vor %<static%>%<__thread%> vor %qD%<__thread%> kann nur fÃ¼r Objekte und Funktionen angegeben werden%<__transaction_atomic%> ohne eingeschaltete UnterstÃ¼tzung fÃ¼r transaktionsgebundenen Speicher%<__transaction_cancel%> nicht innerhalb von %<__transaction_atomic%>%<__transaction_cancel%> innerhalb eines %<__transaction_relaxed%>%<__transaction_cancel%> ohne eingeschaltete UnterstÃ¼tzung fÃ¼r transaktionsbasierten Speicher%<__transaction_relaxed%> ohne eingeschaltete UnterstÃ¼tzung fÃ¼r transaktionsgebundenen SpeicherArgument %<a%d%> des intrinsischen %qs bei %L muss %s(%d) seinArgument %<a1%> des intrinsischen %qs bei %L muss INTEGER, REAL oder CHARACTER seinArgument %<a1%> des intrinsischen %qs bei %L muss INTEGER, REAL, CHARACTER oder UNSIGNED sein%<acc update%> bei %L muss mindestens eine %<device%>- oder %<host%>- oder %<self%>-Klausel enthaltenAttribut %<alias%> ignoriert, da Funktion bereits definiert istin der %<align%>-Klausel muss das Argument eine positive konstante Zweierpotenz eines ganzzahligen Ausdrucks seinArgument fÃ¼r %<alignas%> hat nicht-ganzzahligen Typen %qT%<alignas%> in leerer Deklaration mit auf %<enum%> basierendem Typen%<alignas%> in Typalias%<alignas%> bei einem anderen Typ als %<class%>%<alignas%> in Bitfeld%<alignas%> in AufzÃ¤hlungstyp%<alignas%> an Exceptiondeklaration%<alignas%> in FunktionsdeklarationAusdruck fÃ¼r Ausrichtung der %<aligned%>-Klausel muss ganzzahlig seinAusdruck fÃ¼r %<aligned%>-Klausel erfordert positiven konstanten Ganzzahlausdruck%<alloca%> wird in Koroutinen noch nicht unterstÃ¼tztin der %<allocate%>-Klausel muss das Argument des %<align%>-Modifizierers eine positive konstante Zweierpotenz eines ganzzahligen Ausdrucks seinAllokationsausdruck in %<allocate%>-Klausel ist vom Typ %qT statt des erwarteten %<omp_allocator_handle_t%>%<allocate%>-Klausel muss hier einen Allozierer angeben%<allocate%>-Direktive fÃ¼r %qD in einer Zielregion muss eine %<allocator%>-Klausel angebendie %<allocate%>-Direktive muss sich im selben Bereich wie %qD befindenAllokationsausdruck in %<allocator%>-Klausel ist vom Typ %qT statt des erwarteten %<omp_allocator_handle_t%>%<allocator%>-Klausel fÃ¼r statische Variable %qD erforderlichdie %<allocator%>-Klausel erfordert einen vordefinierten Allokator, da %qD statisch istdie Funktion %<always_inline%> ist mÃ¶glicherweise nicht inlinefÃ¤hig, es sei denn, sie ist ebenfalls als %<inline%> deklariertAttribut %<amdgpu_hsa_kernel%> erfordert Zeichenkettenkonstanten als Argumente%<ancestor%>-GerÃ¤temodifikator, dem keine %<requires%>-Direktive mit %<reverse_offload%>-Klausel vorausgeht%<ancestor%>-GerÃ¤temodifizierer bei %C, dem keine %<requires%>-Direktive mit %<reverse_offload%>-Klausel vorausgehtdie %<append_args%>-Klausel impliziert, dass %qs %d Dummy-Argumente vom Typ Ganzzahl mit der Art %<omp_interop_kind%> hat%<append_args%> ist hier angegeben%<asm goto%> mit komplexen typisierten Ausgaben%<asm%>-Konflikt mit Eingabeoperand%<asm%>-Konflikt mit Ausgabeoperand%<asm%>-Deklaration wird wegen Konflikt mit vorheriger Umbenennung ignoriert%<asm%>-Schalter werden im Thumb1-Modus nicht unterstÃ¼tzt%<asm%> innerhalb einer %<constexpr%>-Funktion ist erst ab %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbar%<asm%> in %<transaction_safe%>-Funktion ist nicht erlaubtin atomarer Transaktion ist kein %<asm%> erlaubt%<asm%>-Operand %d passt wahrscheinlich nicht zu den Bedingungen%<asm%>-Operandenbedingung inkompatibel mit OperandengrÃ¶ÃŸe%<asm%>-Operand hat unmÃ¶gliche Nebenbedingungen%<asm%>-Operand hat unmÃ¶gliche EinschrÃ¤nkungen, oder es gibt nicht genug Register%<asm%>-Operand erfordert unmÃ¶gliches Neuladen%<asm%>-Qualifizierer %qT wird ignoriert, da auÃŸerhalb des Funktionsrumpfes%<asm%>-Qualifizierer auÃŸerhalb des Funktionsrumpfes%<asm%>-Spezifizierer fÃ¼r cc-Ausgabe steht in Konflikt mit %<asm%>-Clobber-Liste%<asm%>-Spezifizierer fÃ¼r Variable %qE steht in Konflikt mit %<asm%>-Bestrafungs-Liste%<asm%>-Symbole sind an nicht statischen Datenelementen nicht erlaubt%<assign%> kann fÃ¼r Objective-C-Objekte unsicher sein; bitte explizit angeben, falls nÃ¶tig%<assign%>-Eigenschaft %qs verwendet Bitfeld-Instanzvariable %qs%<assume%>-Attribut auf hÃ¶chster Ebene%<assume%>-Attribut ohne darauffolgendes %<;%>%<async%>-Ausdruck muss ganzzahlig sein%<atexit%> fehlgeschlagen%<atomic%>-Eigenschaft %qs verwendet Bitfeld-Instanzvariable %qs%<atomic_cancel%>%<atomic_default_mem_order%>-Klausel wird lexikalisch nach dem ersten %<atomic%>-Konstrukt ohne Speicherreihenfolge-Klausel verwendetStringliteral fÃ¼r %<attr%> darf kein Komma enthaltenStringliteral fÃ¼r %<attr%> muss mit %<ompx_%> beginnen%<auto%> kann nur fÃ¼r Variablen oder Funktionsdeklarationen angegeben werdenBedeutung von %<auto%> Ã¤ndert in C++11 die Bedeutung; Bitte entfernen%<auto%> steht in Konflikt mit anderen OpenACC-Schleifenspezifizierern%<auto%> in leerer Deklaration im Datei-GÃ¼ltigkeitsbereich%<auto%> ist in Aliasdeklaration nicht erlaubt%<auto%>-Parameter darf in diesem Kontext nicht verwendet werden%<auto%> erfordert einen einfachen Bezeichner, optional mit Attributen, als Deklarator%<auto%> mit %<constexpr%> verwendet%<auto(x)%> kann nicht eingeschrÃ¤nkt werden%<auto(x)%> ist erst ab %<-std=c++23%> oder %<-std=gnu++23%> verfÃ¼gbar%<auto{x}%> kann nicht eingeschrÃ¤nkt werden%<auto{x}%> ist erst ab %<-std=c++23%> oder %<-std=gnu++23%> verfÃ¼gbar%<await_suspend%> muss %<void%>, %<bool%> oder ein Koroutine-Handle zurÃ¼ckgeben%<bank_switch%> hat auf Nicht-Interrupt-Funktionen keine AuswirkungSuffix %<bf16%> oder %<BF16%> an Gleitkommakonstanten ist erst mit %<-std=c++23%> oder %<-std=gnu++23%> verfÃ¼gbar%<bind%>-Klausel nicht auf einem %<loop%>-Konstrukt, das nicht in einem anderen OpenMP-Konstrukt geschachtelt ist%<bind(parallel)%> an einem %<loop%>-Konstrukt, das in einem %<simd%>-Konstrukt geschachtelt ist%<bind(teams)%> an einer %<loop%>-Region, die nicht streng innerhalb einer %<teams%>-Region geschachtelt istder Operand der %<break%>-Anweisung %qE bezieht sich nicht auf eine benannte Schleife oder eine %<switch%>-Anweisungder Operand %qE der %<break%>-Anweisung bezieht sich nicht auf eine benannte Schleife oder eine %<switch%>-Anweisung; meinten Sie %qs?der Operand %qE der %<break%>-Anweisung bezieht sich auf eine %<switch%>-Anweisung auÃŸerhalb des Anweisungsrumpfs%<builtin_return_address%> enthÃ¤lt nur 2 AdressbytesInterner Fehler: %<bytes_to_allocate%> is zero for %s (symbol number %<cancel for%> innerhalb von %<nowait%>-for-Konstrukt%<cancel for%> innerhalb von %<ordered%>-for-Konstrukt%<cancel sections%> innerhalb %<nowait%>-Abschnittskonstrukt%<catch%> wird nicht unterstÃ¼tzt%<co_await%> kann nicht in Standardargumenten verwendet werden%<co_yield%> kann nicht in Standardargumenten verwendet werden%<concept%> ist erst ab %<-std=c++20%> oder mit %<-fconcepts%> verfÃ¼gbar%qs ist %<const%> und darf daher nicht als %<mutable%> deklariert seinFunktionsspezifizierer %<const%> und %<volatile%> an %qD ungÃ¼ltig in FelddeklarationFunktionsspezifizierer %<const%> und %<volatile%> an %qD ungÃ¼ltig in ParameterdeklarationFunktionsspezifizierer %<const%> und %<volatile%> an %qD ungÃ¼ltig in TypdeklarationFunktionsspezifizierer %<const%> und %<volatile%> an %qD ungÃ¼ltig in Variablendeklaration%<const%> kann nur fÃ¼r Objekte und Funktionen angegeben werden%<const%>-qualifizierter %<depobj%>-Ausdruck%<const%>-qualifiziertes %qE darf nur in %<shared%>- oder %<firstprivate%>-Klauseln vorkommen%<const%>-qualifiziertes %qE ohne %<mutable%>-Element darf nur in %<shared%>- oder %<firstprivate%>-Klauseln vorkommen%<const%>-, %<volatile%>- oder %<__restrict%>-qualifizierter Typ %qT in %<#pragma omp declare reduction%>%<consteval%>-Funktion %q+D Ã¼bersteuert nicht-%<consteval%>-FunktionKontrollfluss fÃ¼r %<constexpr%>-Aufruf fÃ¤llt hinten aus der Funktion%<constexpr%>-Konstruktor hat keinen leeren KÃ¶rper%<constexpr%>-Konstruktor fÃ¼r Union %qT muss genau ein nicht-statisches Datenelement initialisieren%<constexpr%>-Destruktoren sind erst ab %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarAuswertungstiefe von %<constexpr%> Ã¼berschreitet HÃ¶chstwert %d (%<-fconstexpr-depth=%> verwenden, um dies zu erhÃ¶hen)Anzahl der Evaluierungsoperationen in %<constexpr%> Ã¼berschreitet HÃ¶chstwert %wd (%<-fconstexpr-ops-limit=%> verwenden, um diesen zu erhÃ¶hen)%<constexpr%> in leerer Deklaration%<constexpr%>-Initialisierer fÃ¼r einen binÃ¤ren Gleitkommatypen hat dezimalen Typ%<constexpr%>-Initialisierer fÃ¼r einen reellen Typen hat komplexen TypInitialisierer fÃ¼r %<constexpr%> ist kein konstanter arithmetischer Ausdruck%<constexpr%>-Initialisierer ist nicht im Typen des Objekts darstellbarInitialisierer fÃ¼r %<constexpr%>-Ganzzahl ist kein konstanter Ganzzahlausdruck%<constexpr%>-Lambda ist nur mit %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbarAnzahl der SchleifendurchlÃ¤ufe in %<constexpr%> Ã¼berschreitet HÃ¶chstwert %d (%<-fconstexpr-loop-limit=%> verwenden, um diesen zu erhÃ¶hen)%<constexpr%> erforderlich fÃ¼r Initialisierung innerhalb der Klasse des statischen Datenelements %q#D mit nicht eingebautem Typ%<constexpr%>-Objekt hat variabel geÃ¤nderten TypInitialisierer fÃ¼r %<constexpr%>-Zeiger ist nicht nullstatisches Datenelement %qD (%<constexpr%>) muss Initialisierung haben%<constexpr%> mit %qE verwendet%<constexpr%>-Variable %qD hat variabel modifizierten Typ %qTAttribut %<constinit%> kann nur fÃ¼r Variablen verwendet werden, die Â»staticÂ« oder threadlokel sind%<constinit%> ist am RÃ¼ckgabetyp einer Funktion nicht erlaubt%<constinit%>-Angabe ungÃ¼ltig fÃ¼r Funktion %qs%<constinit%>-Variable %qD muss eine konstante Initialisierung habender Operand %qE der %<continue%>-Anweisung bezieht sich nicht auf eine benannte Schleifeder Operand %qE der %<continue%>-Anweisung bezieht sich nicht auf eine benannte Schleife; meinten Sie %qs?der Operand %qE der %<continue%>-Anweisung bezieht sich auf eine benannte %<switch%>-AnweisungAttribut %qE fÃ¼r %<counted_by%> in Konflikt mit vorheriger Deklaration %qEArgument %<counted_by%> ist kein Bezeichner%<critical%>-Region darf innerhalb einer gleichnamigen %<critical%>-Region nicht eng geschachtelt sein%<decl-specifier%> in Deklaration von Ableitungshinweis%<declare %s%> muss direkt von einer Funktionsdeklaration oder -definition gefolgt sein%<declare variant%>-Kandidat %qD hier deklariert%<declare variant%> fÃ¼r Konstruktor %qD%<declare variant%> an %qD mit Vorgabewert%<declare variant%> an gelÃ¶schter %qD%<declare variant%> fÃ¼r Destruktor %qD%<declare variant%> an virtueller %qD%<decltype%> kann die Adresse der Ã¼berladenen Funktion nicht auflÃ¶sen%<decltype%> wird zu %qT ausgewertet, und das ist weder eine Klasse noch ein AufzÃ¤hlungstyp%<decltype(auto)%> darf nicht CV-qualifiziert seindie Typangabe %<decltype(auto)%> ist erst mit %<-std=c++14%> oder %<-std=gnu++14%> verfÃ¼gbar%<default%>-Marke nicht innerhalb einer switch-Anweisung%<default%>-Ziel wurde nicht gesetzt%<delete%>-Grund ist erst mit %<-std=c++2c%> oder %<-std=gnu++2c%> verfÃ¼gbar%<delete[]%> ist kein Konstantenausdruck%<depend%>-Klausel erfordert Aktionsklauseln mit %<targetsync%>-Interop-Typ%<depend%>-Klausel mit %<depobj%>-AbhÃ¤ngigkeitstyp auf Arrayabschnitt%<depend(%s)%> ist nur in %<omp ordered%> erlaubt%<depobj%>-AbhÃ¤ngigkeitstyp in %<depend%>-Klausel von %<depobj%> angegebenAusdruck %<depobj%> ist kein lvalue-Ausdruck%<destroy%>-Ausdruck ist kein Lvalue-AusdruckEreignishandle in %<detach%>-Klausel ist vom Typ %qT statt des erwarteten %<omp_event_handle_t%>%<detach%>-Klausel darf nicht zusammen mit %<mergeable%>-Klausel verwendet werden%<device%>-Klausel mit %<ancestor%> ist nur an einem %<target%>-Konstrukt erlaubt%<device%>-ID muss ganzzahlig seindie %<device_type%>-Klausel muss 'any' angeben, wenn sie mit einer %<indirect%>-Klausel verwendet wirdArgument %<dim%> des intrinsischen %qs bei %L ist kein gÃ¼ltiger CodimensionsindexArgument %<dim%> des intrinsischen %qs bei %L ist kein gÃ¼ltiger DimensionsindexArgument %<dim%> des intrinsischen Â»%sÂ« bei %L ist kein gÃ¼ltiger DimensionsindexAusdruck fÃ¼r %<dist_schedule%>-ChunkgrÃ¶ÃŸe muss ganzzahlig sein%<distribute%>-Region muss innerhalb eines %<teams%>-Konstrukts streng geschachtelt sein%<dynamic_cast%> ist nicht mit %<-fno-rtti%> erlaubt%<dynamic_cast<%#T>(%#D)%> kann nie erfolgreich sein%<else%> ohne vorheriges %<if%>%<enum %E%> in Anfangsdeklaration einer %<for%>-Schleife deklariert%<enum%> wurde sowohl mit als auch ohne zugrundeliegendem festen Typ deklariert%<enum%> deklariert aber ohne festen zugrundeliegenden Typen definiertder auf %<enum%> basierende Typ ist zu der vorherigen Deklaration inkompatibelauf %<enum%> basierender Typ darf hier nicht angegeben werden%<explicit%> kann nur fÃ¼r Konstruktoren angegeben werden%<explicit%> in Â»friendÂ«-Deklaration%<explicit%> auÃŸerhalb einer Klassendeklaration%<explicit(bool)%> ist erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbar%<export%> ist kein Teil der folgenden module-directive%<extern "C"%>-Bindung beginnt hierAttribut %<externally_visible%> wirkt sich nur auf Ã¶ffentliche Objekte ausSuffix %<f%d%> oder %<F%d%> an Gleitkommakonstanten ist erst mit %<-std=c++23%> oder %<-std=gnu++23%> verfÃ¼gbar%<fallthrough%>-Attribut auf hÃ¶chster Ebene%<fallthrough%>-Attribut ohne darauffolgendes %<;%>%<fallthrough%>-Attribut mit einem Parameter angegebenDirektive des Attributes %<fast_interrupt%> ignoriert%<filter%>-Ausdruck muss ganzzahlig seinAttribut %<flatten%> wird an Aliasen ignoriert%<flush%>-Liste wurde zusammen mit Speicherreihenfolge-Klausel angegeben%<fopen%>: %s: %mAnfangsdeklarationen in %<for%>-Schleifen sind nur im C99- oder C11-Modus erlaubt%<friend%> kann nur innerhalb einer Klasse angegeben werden%<friend%> auÃŸerhalb einer Klasse verwendet%<full%>-Klausel darf nicht zusammen mit %<partial%>-Klausel verwendet werdenUnterstÃ¼tzung fÃ¼r %<function_profiler%>%<function_profiler%>-UnterstÃ¼tzung fÃ¼r MMIX%<gang%>-Schleife in %<gang-single%>-RegionAusdruck fÃ¼r %<gang%>-Nummer muss ganzzahlig seinWert von %<gang%> muss positiv seinstatischer %<gang%>-Ausdruck muss ganzzahlig seinstatischer %<gang%>-Ausdruck muss positiv sein%<generic%>-CPU kann nur fÃ¼r %<-mtune=%>-Schalter verwendet werden%<generic%>-CPU kann nur fÃ¼r %<target("tune=")%>-Schalter verwendet werden%<getter%>-Attribut der Eigenschaft %qD in Konflikt mit vorheriger DeklarationAttribut %<gnu_inline%> vorhanden bei %q+D%<goto%> innerhalb einer %<constexpr%>-Funktion ist erst mit %<-std=c++23%> oder %<-std=gnu++23%> verfÃ¼gbar%<goto%> ist kein Konstantenausdruck%<gp_offset%> (%ld) oder %<end_offset%> (%ld) ist kleiner als null%<grainsize%>-Klausel darf nicht zusammen mit %<num_tasks%>-Klausel verwendet werdenAusdruck fÃ¼r %<grainsize%> muss ganzzahlig seinWert von %<grainsize%> muss positiv sein%<h%> auf nicht-Register-Operand angewandt%<hard-float%> MIPS16-Code fÃ¼r andere ABIs als o32 und o64%<has_device_addr%> fÃ¼r %qD bedeutet nicht, dass %<is_device_ptr%> fÃ¼r %<need_device_ptr%> erforderlich ist%<hint%>-Ausdruck muss ganzzahlig und konstant sein%<hint%>-Ausdruck muss ganzzahlig sein%<host_data%>-Konstrukt bei %L erfordert %<use_device%>-Klauseldas %<host_data%>-Konstrukt erfordert eine %<use_device%>-Klausel%<if consteval%> ist erst mit %<-std=c++23%> oder %<-std=gnu++23%> verfÃ¼gbar%<if consteval%> erfordert zusammengesetzte Anweisung%<if constexpr%> ist nur mit %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbar%<ifunc%>-AuflÃ¶ser fÃ¼r %qD muss %qT zurÃ¼ckgeben%<ifunc%>-AuflÃ¶ser fÃ¼r %qD sollte %qT zurÃ¼ckgeben%<inbranch%>-Klausel ist inkompatibel mit %<notinbranch%>Attribut %<indirect_call%> bezieht sich nicht auf %<static%>-Funktionender %<init%>-Klausel fehlt der %<targetsync%>-Modifikator%<inline%> kann nur fÃ¼r Funktionen angegeben werden%<inline%> in leerer Deklaration%<inline%> ist nicht in Deklaration der friend-Template-Spezialisierung %qD erlaubt%<inline%> fÃ¼r friend-Klassen-Deklaration angegeben%<inline%> ungÃ¼ltig fÃ¼r auÃŸerhalb des globalen GÃ¼ltigkeitsbereiches deklarierte Funktion %qs%<inline%>-Spezifizierer ungÃ¼ltig fÃ¼r Variable %qD mit GÃ¼ltigkeitsbereich Block%<inscan%>-%<reduction%>-Klausel am %qs-Konstrukt%<inscan%>-%<reduction%>-Klausel bei Konstruktion auÃŸer %<for%>, %<simd%>, %<for simd%>, %<parallel for%>, %<parallel for simd%>%<inscan%>-%<reduction%>-Klausel wird zusammen mit %<linear%>-Klausel an einer Variable verwendet, die kein Schleifeniterator ist%<inscan%>-%<reduction%>-Klausel mit Arrayabschnitt%<inscan%>-REDUCTION-Klausel an einem anderen Konstrukt als DO, SIMD, DO SIMD, PARALLEL DO, PARALLEL DO SIMD bei %Ldie Klausel %<inscan%> darf nicht zusammen mit nicht-%<inscan%>-%<reduction%> am selben Konstrukt vorkommen%<inscan%> und nicht-%<inscan%>-%<reduction%>-Klauseln am selben Konstrukt bei %Ldie CPU %<intel%> kann nur fÃ¼r den Schalter %<-mtune=%> verwendet werdendie CPU %<intel%> kann nur fÃ¼r das Attribut %<target("tune=")%> verwendet werden%<interrupt_thread%> ist nur auf Fido verfÃ¼gbar%<is_device_ptr%> fÃ¼r %qD bedeutet nicht, dass %<has_device_addr%> fÃ¼r %<need_device_addr%> erforderlich istModifizierer %<iterator%> ist unvertrÃ¤glich mit %qs%<iterator%>-Modifizierer darf nicht bei einem %<depobj%>-Konstrukt angegeben sein%<l1-cache-size%>-Parameter ist keine Zweierpotenz: %d%<lang_*%> check: failed in %s, at %s:%d%<lastprivate%>-Klausel an einem %<loop%>-Konstrukt bezieht sich auf eine Variable %qD, die nicht der Schleifeniterator ist%<linear%>-Klausel fÃ¼r Variable, die keine Schleifeniterationsvariable ist, wurde fÃ¼r ein mit %<distribute%> kombiniertes Konstrukt angegeben%<linear%>-Klausel darf nicht zusammen mit %<ordered%>-Klausel angegeben werden, wenn das alleinstehende %<ordered%>-Konstrukt darin geschachtelt istSchrittweite %qE der %<linear%>-Klausel muss konstant oder ein Parameter seinSchrittweite der %<linear%>-Klausel muss ganzzahlig sein%<linear%>-Klauselschritt ist ein Parameter %qD, der nicht in der %<uniform%>-Klausel angegeben ist%<location_t%> ist nicht als ein Typ definiert%<locus%> ist nicht als ein Typ definiert%<long long long%> ist fÃ¼r GCC zu lang%<long%> switch-Ausdruck nicht nach %<int%> konvertiert in ISO C%<lp_array%> passt nicht zum %<region_tree%>%<lp_array%> ist fÃ¼r lp %i beschÃ¤digt%<lto_obj_file_open()%> failed%<main%> als %<_Noreturn%> deklariert%<map%>-Klausel mit einem anderen map-type-Modifikator als %<always%>, %<close%> oder %<present%>%<memset%> mit konstanter LÃ¤nge 0 verwendet; das kÃ¶nnte heiÃŸen, dass die Parameter vertauscht sindim Aufruf von %<memset%> ist die LÃ¤nge gleich der Anzahl der Elemente angegeben, ohne sie mit der ElementgrÃ¶ÃŸe zu multiplizierenAttribut %<ms_hook_prologue%> ist mit %<-mfentry%> fÃ¼r 32 Bit nicht vertrÃ¤glichAttribut %<ms_hook_prologue%> ist mit geschachtelter Funktion nicht vertrÃ¤glich%<msp430_select_hwmult_lib%> erfordert mindestens ein Argument%<msp430_set_driver_var%> erwartet 2 Argumente%<mutable%>-Lambdaangabe mit explizitem Objektparameter%<mutexinoutset%>-Art in %<depend%>-Klausel bei einem %<taskwait%>-Konstrukt%<namespace %E%> ist mehrdeutig%<namespace%>-Definition ist hier nicht erlaubt%<need_device_addr%> ist fÃ¼r C ungÃ¼ltig%<need_device_addr%> ist noch nicht unterstÃ¼tzt%<new%> einer %<initializer_list%> fÃ¼hrt nicht zu einer lÃ¤ngeren Lebenszeit des zugrundeliegenden Arrays%<new%> fÃ¼r Typ %qT mit erweiterter Ausrichtung %d%<nogroup%>-Klausel darf nicht zusammen mit %<reduction%>-Klausel verwendet werdenAttribut %<nonatomic%> der Eigenschaft %qD in Konflikt mit vorheriger Deklaration%<nonmonotonic%>-Planungsmodifizierer zusammen mit %<ordered%>-Klausel angegeben%<nonnull%>-Argument %qD wird mit NULL verglichen%<noreturn%>-Funktion kehrt zurÃ¼ck%<nowait%>-Klausel darf nicht zusammen mit %<copyprivate%>-Klausel verwendet werdenWert von %<num_tasks%> muss positiv seinuntere Grenze %qE von %<num_teams%> ist grÃ¶ÃŸer als obere Grenze %qEWert von %<num_teams%> muss positiv seinWert von %<num_threads%> muss positiv sein%<object.TypeInfo%> kann nicht mit %<-fno-rtti%> verwendet werden%<object.TypeInfo%> konnte nicht gefunden werden, wird aber implizit verwendet%<offsetof%> innerhalb von Typ %qT (der kein Standardlayout hat) ist bedingt unterstÃ¼tzt%<omp requires reverse_offload%> erfordert mindestens %<sm_35%> fÃ¼r %<-foffload-options=nvptx-none=-march=%> â€“ fÃ¼r diesen GerÃ¤tetyp wird die Offload-Codegenerierung ausgeschaltetAttribut %<omp::%E%> erfordert Argument%<omp::%E%> darf in diesem Kontext nicht angegeben werden%<omp::%s%> darf in diesem Kontext nicht angegeben werden%<omp_all_memory%> bei %L ist in dieser Klausel nicht erlaubt%<omp_all_memory%> darf nur in OpenMP-%<depend%>-Klausel verwendet werden%<omp_all_memory%> wird mit %<depend%>-Art auÃŸer %<out%> oder %<inout%> verwendet%<omp_all_memory%> wird bei %C mit DEPEND-Art auÃŸer OUT oder INOUT verwendet%<omp_all_memory%> wird mit AbhÃ¤ngigkeitsart auÃŸer OUT oder INOUT verwendet, bei %L%<omp_all_memory%>, bei %L deklariert, darf nur in der OpenMP-DEPEND-Klausel verwendet werden%<operator %s%>%<operator %s%> in %<%s%E%>%<operator delete%> muss Typ %qT zurÃ¼ckgeben%<operator delete%> nimmt Typ %qT als ersten Parameter%<operator delete[]%> kann kein zerstÃ¶rendes %<delete%> sein%<operator new%> darf nicht NULL zurÃ¼ckgeben, auÃŸer er ist mit %<throw%> deklariert (oder %<-fcheck-new%> ist eingeschaltet)%<operator new%> muss Typ %qT zurÃ¼ckgeben%<operator new%> nimmt Typ %<size_t%> (%qT) als ersten Parameter%<operator%s%>%<operator%s%> in %<%E %s %E%>%<operator%s%> in %<%E%s%>%<operator%s%> in %<%s%E%>%<operator=%> sollte eine Referenz auf %<*this%> zurÃ¼ckgeben%<operator[]%>%<operator[]%> in %<%E[%E]%>Attribut %<optimize%> wird derzeit nicht in Modulen unterstÃ¼tzt%<order%>-Klausel darf nicht zusammen mit %<ordered%>-Klausel verwendet werden%<ordered simd threads%> muss innerhalb einer %<%s simd%>-Region eng geschachtelt sein%<ordered%> %<simd%> muss innerhalb einer %<simd%>-Region eng geschachtelt sein%<ordered%>-Klauselparameter ist weniger als %<collapse%>%<ordered%>-Klausel zusammen mit generierten Schleifen verwendet%<ordered%>-Klausel mit Parameter in %<for%>-Schleife Ã¼ber einen Bereich%<ordered%>-Konstrukt mit %<depend%>-Klausel muss innerhalb einer %<ordered%>-Schleife eng geschachtelt sein%<ordered%>-Konstrukt mit %qs-Klausel muss innerhalb einer Schleife mit %<ordered%>-Klausel eng geschachtelt sein%<ordered%>-Konstrukt ohne %<doacross%>- oder %<depend%>-Klauseln ist mit einer Schleife verbunden, in der das %<collapse%>-Argument %wd sich vom %<ordered%>-Argument %wd unterscheidet%<ordered%>-Konstrukt ohne %<doacross%>- oder %<depend%>-Klauseln darf nicht dieselbe Bindungsregion wie ein %<ordered%>-Konstrukt mit diesen Klauseln haben%<ordered%>-Region darf innerhalb einer Region, die %<critical%>, %<ordered%>, expliziten %<task%> oder %<taskloop%> ist, nicht eng geschachtelt sein%<ordered%>-Region muss eng geschachtelt sein, wenn sie innerhalb einer Schleifenregion mit %<ordered%>-Klausel auftrittdie Klauseln %<otherwise%> oder %<default%> mÃ¼ssen als letztes in %<metadirective%> angegeben werdendie %<otherwise%>- oder %<default%>-Klausel muss als letzte in %<metadirective%> bei %C vorkommenInterner Fehler: %<parser_file_close%> called with NULL *fileInterner Fehler: %<parser_file_close%> for %s called with NULL %<file->var_decl_node%>Interner Fehler: %<parser_file_open%> called with NULL *fileInterner Fehler: %<parser_file_open%> for %s called with NULL %<var_decl_node%>Interner Fehler: %<parser_file_read%> called with NULL *fieldInterner Fehler: %<parser_file_read%> called with NULL *fileInterner Fehler: %<parser_file_read%> for %s called with NULL %<field->var_decl_node%>Interner Fehler: %<parser_file_read%> for %s called with NULL %<file->var_decl_node%>Interner Fehler: %<parser_if()%> was called with variable %s, which is not a FldConditionalInterner Fehler: %<parser_logop()%> was called with variable %s on line %d, which is not a FldConditionalInterner Fehler: %<parser_op()%> doesn%'t know how to evaluate %<%s = %s %c %s%>Interner Fehler: %<parser_relop%> was called with variable %qs, which is not a FldConditionalInterner Fehler: %<parser_relop()%> was called with variable %s, which is not a FldConditionalInterner Fehler: %<parser_symbol_add()%> was called with a NULL %<new_var%>Argument fÃ¼r %<partial%> muss ein positiver, ganzzahliger Ausdruck seindas Pragma %<pch_preprocess%> sollte nur mit %<-fpreprocessed%> verwendet werden%<pex_init%> failed: %m%<#pragma omp error%> gefunden%<#pragma omp error%> gefunden: %s%<#pragma omp requires%> erfordert mindestens eine KlauselAusdruck fÃ¼r %<priority%> muss ganzzahlig seinWert von %<priority%> muss positiv seinAttribut %<readonly%> steht mit Attribut %<setter%> in KonfliktAttribut %<readonly%> der Eigenschaft %qD in Konflikt mit vorheriger Deklaration%<region_array%> passt nicht zum %<region_tree%>%<region_array%> ist fÃ¼r Region %i beschÃ¤digt%<register%> in leerer Deklaration im Datei-GÃ¼ltigkeitsbereich%<register%>-Speicherklassenangabe verwendet%<reinterpret_cast%> von Ganzzahl zu Zeiger%<reinterpret_cast%> von Typ %qT in Typ %qT entfernt QualifiziererEin %<reinterpret_cast%> ist kein konstanter Ausdruck%<reinterpret_cast<%T>(%E)%> ist kein Konstantenausdruck%<requires%> ist erst ab %<-std=c++20%> oder mit %<-fconcepts%> verfÃ¼gbarder %<requires%>-Selektor wird noch nicht unterstÃ¼tzt%<return%> mit Wert in void zurÃ¼ckgebender Funktion%<return%> ohne Wert in nicht-void zurÃ¼ckgebender Funktion%<return_void%> wurde hier deklariertAusdruck der %<safelen%>-Klausel erfordert positiven konstanten Ganzzahlausdruck%<scalar_storage_order%> wird nicht unterstÃ¼tzt, da die Bytereihenfolge nicht einheitlich ist%<scope%>-Region darf nicht innerhalb einer Region eng geschachtelt sein, die arbeitsteilend, %<loop%>, explizit %<task%>, %<taskloop%>, %<critical%>, %<ordered%>, %<master%> oder %<masked%> istdas %<score%>-Argument muss ein konstanter ganzzahliger Ausdruck seindas %<score%>-Argument bei %C muss ein konstanter ganzzahliger Ausdruck seindas %<score%>-Argument darf nicht negativ seindas %<score%>-Argument bei %C darf nicht negativ sein%<score%> kann nicht in Traits in der Trait-Selektor-Menge %qs angegeben werden%<score%> kann nicht in Traits im trait-selector-set %qs bei %C angegeben werdendas %<section("%s")%>-Attribut der Hauptfunktion verhindert %<-mno-call-main%>%<seq%> Ã¼bersteuert andere OpenACC-Schleifenspezifizierer%<setter%>-Attribut der Eigenschaft %qD in Konflikt mit vorheriger Deklaration%<setter%> ist hier angegebenArgument Â»shapeÂ« des intrinsischen Â»reshapeÂ« bei %L hat mehr als %d ElementeArgument %<shape%> des intrinsischen %<reshape%> bei %L muss ein Feld konstanter GrÃ¶ÃŸe seinArgument fÃ¼r %<signed _BitInt%> muss mindestens 2 seinAusdruck der %<simdlen%>-Klausel erfordert positiven konstanten Ganzzahlausdruck%<simdlen%>-Klauselwert ist grÃ¶ÃŸer als %<safelen%>-Klauselwert%<sizeof%> auf ein Bitfeld angewandt%<sizeof%> auf Array-Funktionsparameter %qE gibt die GrÃ¶ÃŸe von %qT zurÃ¼ckArgument von %<sizeof...%> muss mit Klammern umschlossen werden%<sizes%>-Argument muss eine positive, ganzzahlige Konstante sein%<soft-float%> und long-double-128 sind unvertrÃ¤glichArgument %<source%> des intrinsischen %<shape%> bei %L darf kein Feld impliziter GrÃ¶ÃŸe sein%<stack_offset%> muss ein Vielfaches von 4 sein%<stack_offset%> muss mindestens 4 sein%qs ist %<static%> und darf daher nicht als %<mutable%> deklariert seinLambda-Spezifizierer %<static%> mit explizitem ObjektparameterLambda-Spezifizierer %<static%> mit Lambda-Fang%<static%> darf nicht bei der Definition (im Gegensatz zu Deklaration) eines statischen Datenelementes verwendet werden%<static%> darf nicht verwendet werden, wenn die variable ArraylÃ¤nge nicht angegeben ist%<static%> darf ohne eine ArraygrÃ¶ÃŸe nicht verwendet werden%<static%> ist fÃ¼r auÃŸerhalb des globalen GÃ¼ltigkeitsbereiches deklarierte Funktion %qs ungÃ¼ltig%<static_assert%> ohne Meldung, die keine Zeichenkette ist, ist erst ab %<-std=c++2c%> oder %<-std=gnu++2c%> verfÃ¼gbar%<static_assert%> ohne Text ist erst ab %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbar%<static_cast%> von Typ %qT in Typ %qT entfernt Qualifizierer%<std::%s%> ist im Header %qs definiert; um das zu beheben, kÃ¶nnten Sie %<#include %s%> hinzufÃ¼gen%<std::%s%> ist erst ab %s verfÃ¼gbar%<std::is_constant_evaluated%> wertet in einer nicht-%<constexpr%>-Funktion immer zu false aus%<std::is_constant_evaluated%> wertet innerhalb von %<if constexpr%> immer zu true aus%<std::is_constant_evaluated%> wertet innerhalb einer %<consteval%>-Funktion immer zu true aus%<std::is_constant_evaluated%> wertet immer zu true aus, wenn es prÃ¼ft, ob eine trivial-leere Iterationsanweisung eine trivial-endlose Schleife ist%<std::source_location::__impl%> enthÃ¤lt nicht nur nicht-statische Datenelemente %<_M_file_name%>, %<_M_function_name%>, %<_M_line%> und %<_M_column%>%<std::tuple_element<%u, %T>::type%> ist %<void%>%<std::tuple_size<%T>::value%> ist kein konstanter Ganzzahlausdruckdie Direktive %<strong%>-%<using%> wird nicht mehr unterstÃ¼tzt%<strub%>-Modus %qE ausgewÃ¤hlt fÃ¼r %qD, es wurde jedoch %qE angefordert%<struct %E%> in Anfangsdeklaration einer %<for%>-Schleife deklariertder %<switch%>-Name ist hier definiertArgument %qs fÃ¼r Attribut %<symver%> muss ein oder zwei %<@%> enthaltenArgument des Attributs %<symver%> ist keine ZeichenkettenkonstanteAttribut %<symver%> bezieht sich nur auf SymboleAttribut %<symver%> gilt nur fÃ¼r Funktionen und VariablenFehler bei %<sysctl%> fÃ¼r %<kern.osversion%>: %m%<target%>-Attribut wird derzeit nicht in Modulen unterstÃ¼tzt%<target%>-Attribut wird auf dieser Maschine nicht unterstÃ¼tzt%<target%>-Konstrukt mit geschachteltem %<teams%>-Konstrukt enthÃ¤lt Direktiven auÃŸerhalb des %<teams%>-Konstrukts%<target("rtd")%> wird im 64-Bit-Modus ignoriert%<target("sseregparm")%> verwendet, ohne dass SSE eingeschaltet ist%<target("tune=x86-64")%> ist veraltet; stattdessen entsprechend %<target("tune=k8")%> oder %<target("tune=generic")%> verwenden%<target()%>-Attribut: Architektur erscheint mehr als einmal%<target()%>-Attribut: CPU erscheint mehr als einmal%<target()%>-Attribut: unbekannte PrioritÃ¤t %qs%<target()%>-Attribut: PrioritÃ¤t kommt mehr als einmal vor%<target()%>-Attribut: tune erscheint mehr als einmal%<target()%>-Attribut: unbekannte CPU %qs%<target()%>-Attribut: unbekanntes TUNE %qsdas Attribut %<target_clones%> erfordert GLIBC (2.23 oder neuer), die Hardware-FÃ¤higkeits-Bits exportiert%<target_device%>-Selektormenge innerhalb einer %<target%>-Direktive%<target_version%>-Attribut wird auf dieser Maschine nicht unterstÃ¼tzt%<task%>-Reduktionsmodifizierer bei einem Konstrukt mit %<nowait%>-KlauselKonstrukt %<taskwait%> mit %<nowait%>-Klausel, aber ohne %<depend%>-Klauseln%<teams%>-Konstrukt muss innerhalb eines %<target%>-Konstrukts eng geschachtelt sein, oder in Ã¼berhaupt keinem OpenMP-Konstrukt geschachtelt seindas SchlÃ¼sselwort %<template%> ist im Destruktornamen nicht erlaubt%<template%> muss auf einen nested-name-specifier folgen%<this%> ist in OpenMP nur innerhalb von %<declare simd%>-Klauseln erlaubt%<this%> kann nicht per Referenz eingefangen werden%<this%> ist fÃ¼r explizite Objektmemberfunktionen nicht verfÃ¼gbar%<this%> ist fÃ¼r statische Elementfunktionen nicht verfÃ¼gbar%<this%> darf in diesem Kontext nicht verwendet werden%<this%> muss der erste Spezifizierer in einer Parameterdeklaration sein%<this%> ist in %<allocate%>-Klausel nicht erlaubt%<this%>-Angabe in einem %<requires-expression%>-Parameter%<this%>-Angabe in Template-Parameterdeklaration%<this%> wurde fÃ¼r diese Lambda-Funktion nicht aufgefangen%<thread_limit%>-Ausdruck muss ganzzahlig seinWert von %<thread_limit%> muss positiv sein%<threadprivate%> %qD ist weder Datei-, Namens- noch Blockbereichsvariable%<threadprivate%> Direktive %qE nicht in Definition von %qT%<threadprivate%> %qE hat unvollstÃ¤ndigen Typen%<throw%> wird immer %<terminate%> aufrufenArgument fÃ¼r %<tile%> erfordert ganzzahligen Typ%<tile%>-Argument muss eine positive, ganzzahlige Konstante sein%<tile%>-Konstrukt erzeugt %d Schleifen mit kanonischer Form, aber %d Schleifen werden benÃ¶tigtFunktionsaufruf von %<transaction_may_cancel_outer%> nicht innerhalb von Ã¤uÃŸerer Transaktion oder %<transaction_may_cancel_outer%>%<transaction_safe_dynamic%> kann nur fÃ¼r virtuelle Funktionen angegeben werden%<tree%> ist nicht als ein Zeigertyp definiert%<tree%> ist nicht als ein Typ definiert%<try%> innerhalb einer %<constexpr%>-Funktion ist erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbar%<typedef%>-Angabe ist unvertrÃ¤glich mit %qs%<typedef%> mit %<auto%> verwendet%<typedef%> wurde in dieser Deklaration ignoriert%<typeid%> ist kein konstanter Ausdruck, da %qE polymorphen Typ hat%<typeid%> des qualifizierten Funktionstyps %qT%<typeid%>-Operator kann nicht in einem Konstanten-Ausdruck auftreten%<typename %T::%D%> benennt %q#D, das ist jedoch kein Typ%<typename %T::%D%> benennt %q#T, was kein Klassentemplate ist%<typeof%> auf ein Bitfeld angewandt%<union %E%> in Anfangsdeklaration einer %<for%>-Schleife deklariert%<unroll%>-Konstrukt mit %<partial%>-Klausel erzeugt nur eine Schleife mit kanonischer Form, aber %d Schleifen werden benÃ¶tigt%<uses_allocators%>-Klausel mit Traits und Speicherbereichen%<using enum%> von %qT vor seinem enum-specifier%<using enum%> des abhÃ¤ngigen Typen %qT%<using enum%> an unvollstÃ¤ndigem Typ %qT%<using enum%> an Nicht-AufzÃ¤hlungstyp %q#T%<using enum%> ist nur mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbar%<using%> mit GÃ¼ltigkeitsbereich in enum-Typ %q#T ist erst ab %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbardas Makro %<va_start%> wird mit zusÃ¤tzlichen Argumenten auÃŸer dem Bezeichner des letzten benannten Arguments verwendet%<va_start%> in Funktion mit fester Parameteranzahl verwendet%<vec_lvsl%> ist fÃ¼r Little-Endian veraltet; verwenden Sie Zuweisungen fÃ¼r unausgerichtete Speicherzugriffe%<vec_lvsr%> ist fÃ¼r Little-Endian veraltet; verwenden Sie Zuweisungen fÃ¼r unausgerichtete SpeicherzugriffeAusdruck fÃ¼r %<vector%>-LÃ¤nge muss ganzzahlig seinWert der %<vector%>-LÃ¤nge muss positiv sein%<verify_gimple%> failed%<verify_marked_backedges%> failed%<virtual%> kann nur fÃ¼r Funktionen angegeben werden%<virtual%> auÃŸerhalb einer Klassendeklaration%<virtual%> mehr als einmal in Basisspezifikation angegeben%<void%> kann nicht als einzelner Parameter qualifiziert werden%<void%> muss der einzige Parameter sein%<void%> muss der einzige Parameter sein und unbenannt%<volatile%> kann nur fÃ¼r Objekte und Funktionen angegeben werden%<volatile%>-qualifizierter Parameter ist veraltet%<volatile%>-qualifizierter RÃ¼ckgabetyp ist veraltet%<volatile%>-qualifizierte strukturierte Bindung ist veraltet%<wait%>-Ausdruck muss ganzzahlig seinFÃ¼r %q+D darf %<warn_if_not_aligned%> nicht angegeben werden%<weak%>-Klausel erfordert atomaren GleichheitsvergleichAttribut %<weakref%> ignoriert, da Funktion bereits definiert istAttribut %<weakref%> ignoriert, da Variable bereits initialisiert istAttribut %<weakref%> sollte von Attribut %<alias%> begleitet werden%<weakref%> kann nicht versioniert werdenAusdruck fÃ¼r %<worker%>-Nummer muss ganzzahlig seinWert der %<worker%>-Nummer muss positiv seinInterner Fehler: %<||%> not valid in GIMPLE%<~%> auf booleschem Ausdruck%<~%> auf einem Ausdruck vom Typ %<bool%>%<~auto%> ist nur mit %<-std=c++14%> oder %<-std=gnu++14%> verfÃ¼gbar%@ %e%@ %e (depth %i)%@ %e (fndecl %qs, depth %i)%d Bytes des gang-privaten Speichers fÃ¼r Datenaustausch erschÃ¶pft (kann zum Beispiel mit %<-mgang-private-size=%d%> erhÃ¶ht werden)Einen Konstruktor gefunden
  %d Konstruktoren gefunden
  Einen Destruktor gefunden
  %d Destruktoren gefunden
  Interner Fehler: %d exits recorded for loop %d (having %d exits)Eine Rahmentabelle gefunden
  %d Rahmentabellen gefunden
! %e und %e gleichzeitig angegeben%e wird hier deklariert%i-Bit-Modus nicht einkompiliert%llu Bytes%q#D kann nicht mit %q#D Ã¼berladen werden%q#D steht mit vorheriger Deklaration in Konflikt%q#D steht in Konflikt mit von %qT geerbter Version%q#D hier deklariert%q#D wird hier mit interner Bindung deklariert%q#D wird hier mit Modulbindung deklariert%q#D wird hier ohne Bindung deklariert%q#D verweist nicht auf den unqualifizierten Typen und wird daher nicht zum Binden verwendet%q#D wurde hat hier ausdrÃ¼cklichen Standardwert bekommen%q#D hat unvollstÃ¤ndigen Typ%q#D verdeckt Konstruktor fÃ¼r %q#D%q#D erbt von mehreren Basis-Teilobjekten%q#D ungÃ¼ltig; eine anonyme Union kann nur nicht-statische Datenelemente haben%q#D ungÃ¼ltig; eine anonyme Union kann nur nicht-statische Datenelemente haben%q#DÂ« ist ein statisches Datenelement; es kann nur bei seiner Definition initialisiert werden%q#D ist implizit als gelÃ¶scht deklariert, da %qT einen Bewegungskonstruktor oder Bewegungs-Zuweisungsoperator deklariert%q#D wird implizit gelÃ¶scht, da die Standarddefinition ungÃ¼ltig wÃ¤re:%q#D ist in diesem Zusammenhang unzugÃ¤nglich%q#D ist kein Funktionstemplate%q#D ist kein Nicht-static-Datenelement von %qT%q#D ist kein gÃ¼ltiges Templateargument fÃ¼r Typ %qT, weil eine Referenzvariable keine konstante Adresse hat%q#D ist nicht konstant%q#D ist in diesem Zusammenhang Â»privateÂ«%q#D ist in diesem Zusammenhang Â»protectedÂ«%q#D ist %<public%>, benÃ¶tigt jedoch ein existierendes Objekt vom Typ %q#T%q#D ist volatile%q#D nicht in Klasse deklariert%q#D wurde bereits hier deklariert%q#D wurde bereits hier definiert%q#D als andere EntitÃ¤tsart redeklariert%q#D sollte initialisiert werden%q#D (durch einen unbenannten Typen deklariert) wird verwendet, aber nirgends definiert%q#D (durch einen unbenannten Typen deklariert) wird verwendet, aber nirgends definiert%q#D (durch lokalen Typen %qT deklariert) wird verwendet, aber nirgends definiert%q#D (durch lokalen Typen %qT deklariert) wird verwendet, aber nicht hier definiert%q#F wird implizit gelÃ¶scht, da ihre Ausnahme-Spezifikation nicht zur impliziten Ausnahme-Spezifikation %qX passt%q#T hat kein Element namens %qE%q#T hat kein Element namens %qE; meinten Sie %q#D? (zugreifbar Ã¼ber %q#D)%q#T hat kein Element namens %qE; meinten Sie %q#D? (aus diesem Kontext nicht zugreifbar)%q#T hat kein Element namens %qE; meinten Sie %qE?%q#T hat keinen benutzerdefinierten Default-Konstruktor%q#T hat Zeigertypen als Elemente%q#T hat virtuelle Basisklassen%q#T hat virtuelle Funktionen und erreichbaren nicht-virtuellen Destruktor%q#T ist keine Klasse%q#T ist weder Klasse noch Namensbereich%q#T ist kein Template%q#T ist kein gÃ¼ltiger Typ fÃ¼r einen Nicht-Typ-Parameter eines Templates%q#T definiert nur einen privaten Destruktor und hat keine Â»friendsÂ«%q#T definiert nur private Konstruktoren und hat keine Â»friendsÂ«%q#T verwendet, wo %qT erwartet wurde%q#T verwendet, wo ein Gleitkommawert erwartet wurde%q#T wurde vorher hier deklariert%q+#D kann nicht deklariert werden%q+#D ist kein static-Datenelement von %q#T%q+#D als %<final%> markiert, ist aber nicht Â»virtualÂ«%q+#D als %<override%> markiert, Ã¼berschreibt aber nichtAlias %q+D zwischen Funktion und Variable wird nicht unterstÃ¼tzt%q+D als Alias fÃ¼r externes Symbol %qE%q+D als Alias fÃ¼r undefiniertes Symbol %qE%q+D bereits mit Attribut Â»dllimportÂ« deklariert: Â»dllimportÂ« ignoriert%q+D als Â»friendÂ« deklariert%q+D als variadische Funktion deklariert%q+D als schwach deklariert, nachdem es verwendet wurde%q+D mit einer Ausnahmespezifikation deklariert%q+D ist als variadische Funktion ohne Prototyp definiert%q+D sowohl normal als auch als Attribut %qE definiert%q+D hier definiert%q+D hat unvertrÃ¤gliche Attribute %qs und %qs%q+D in Â»declare targetÂ«-Direktive hat keinen zuordenbaren Typ%q+D ist statisch, aber in Inline-Funktion %qD deklariert, was nicht statisch ist%q+D ist Ã¼blicherweise eine Funktion%q+D mit Offset %E in %qT ist nicht an %u ausgerichtet%q+D mit Offset %E in %qT ist mÃ¶glicherweise nicht an %u ausgerichtet%q+D als andere Symbolart redeklariert%q+D mit Attribut %<gnu_inline%> Â»inlineÂ« redeklariert%q+D ohne Attribut %<gnu_inline%> Â»inlineÂ« redeklariert%q+D ohne Attribut Â»dllimportÂ« redeklariert, nachdem es mit dll-Bindung referenziert wurde%qD ohne Attribut Â»dllimportÂ« redeklariert: vorheriges Â»dllimportÂ« ignoriertstatisches Datenelement %q+D innerhalb von Â»declare targetÂ«-Direktive%q+D benÃ¶tigt entweder null oder zwei Argumente%q+E ist kein Konstantenausdruck%q+F als %<static%> deklariert, aber nirgendwo definiert%q+F verwendet, aber nirgendwo definiert%q+T ist kein Literal, denn:%qD greift auf %E Byte in einer Region der GrÃ¶ÃŸe %E zu%qD greift auf %E Bytes in einer Region der GrÃ¶ÃŸe %E zu%qD greift auf %E oder mehr Bytes in einer Region der GrÃ¶ÃŸe %E zu%qD Zugriff auf %wu Byte an den Offsets %s und %s Ã¼berdeckt mÃ¶glicherweise %wu Byte an Offset %s%qD Zugriff auf %wu Byte an den Offsets %s und %s Ã¼berdeckt mÃ¶glicherweise %wu Bytes an Offset %s%qD Zugriff auf %wu Byte an den Offsets %s und %s Ã¼berdeckt mÃ¶glicherweise bis zu %wu Bytes an Offset %s%qD Zugriff auf %wu Bytes an den Offsets %s und %s Ã¼berdeckt mÃ¶glicherweise bis zu %wu Bytes an Offset %s%qD Zugriff auf %wu Byte an den Offsets %s und %s Ã¼berdeckt sich mit %wu Byte an Offset %s%qD Zugriff auf %wu Byte an den Offsets %s und %s Ã¼berdeckt sich mit %wu Bytes an Offset %s%qD Zugriff auf %wu Byte an den Offsets %s und %s Ã¼berdeckt sich mit %wu oder mehr Bytes an Offset %s%qD Zugriff auf %wu Bytes an den Offsets %s und %s Ã¼berdeckt sich mit %wu oder mehr Bytes an Offset %s%qD Zugriff auf %wu Byte an den Offsets %s und %s Ã¼berdeckt sich mit %wu bis %wu Bytes an Offset %s%qD Zugriff auf %wu Bytes an den Offsets %s und %s Ã¼berdeckt sich mit %wu bis %wu Bytes an Offset %s%qD Zugriff auf %wu Byte Ã¼berdeckt mÃ¶glicherweise %wu Byte%qD Zugriff auf %wu Byte Ã¼berdeckt mÃ¶glicherweise %wu Bytes%qD Zugriff auf %wu Byte Ã¼berdeckt mÃ¶glicherweise bis zu %wu Bytes%qD Zugriff auf %wu Bytes Ã¼berdeckt mÃ¶glicherweise bis zu %wu Bytes%qD Zugriff auf %wu Bytes an den Offsets %s und %s Ã¼berdeckt sich mit %wu Byte an Offset %s%qD Zugriff auf %wu Bytes an den Offsets %s und %s Ã¼berdeckt sich mit %wu Bytes an Offset %s%qD Zugriff auf %wu oder mehr Bytes an Offsets %s und %s Ã¼berdeckt mÃ¶glicherweise %wu Byte an Offset %s%qD Zugriff auf %wu oder mehr Bytes an Offsets %s und %s Ã¼berdeckt mÃ¶glicherweise %wu Bytes an Offset %s%qD Zugriff auf %wu oder mehr Bytes an den Offsets %s und %s Ã¼berdeckt %wu Byte an Offset %s%qD Zugriff auf %wu oder mehr Bytes an den Offsets %s und %s Ã¼berdeckt %wu Bytes an Offset %s%qD Zugriff auf %wu oder mehr Bytes an den Offsets %s und %s Ã¼berdeckt %wu oder mehr Bytes an Offset %s%qD Zugriff auf %wu oder mehr Bytes an den Offsets %s und %s Ã¼berdeckt %wu bis %wu Bytes an Offset %s%qD greift auf zwischen %E und %E Bytes in einer Region der GrÃ¶ÃŸe %E zu%qD Zugriff auf %wu bis %wu Bytes an Offsets %s und %s Ã¼berdeckt mÃ¶glicherweise %wu Byte an Offset %s%qD Zugriff auf %wu bis %wu Bytes an Offsets %s und %s Ã¼berdeckt mÃ¶glicherweise %wu Bytes an Offset %s%qD Zugriff auf %wu bis %wu Bytes an den Offsets %s und %s Ã¼berdeckt %wu Byte an Offset %s%qD Zugriff auf %wu bis %wu Bytes an den Offsets %s und %s Ã¼berdeckt %wu Bytes an Offset %s%qD Zugriff auf %wu bis %wu Bytes an den Offsets %s und %s Ã¼berdeckt %wu oder mehr Bytes an Offset %s%qD Zugriff auf %wu bis %wu Bytes an den Offsets %s und %s Ã¼berdeckt %wu bis %wu Bytes an Offset %s%qD Zugriff auf %wu bis %wu Bytes Ã¼berdeckt mÃ¶glicherweise %wu Byte%qD Zugriff auf %wu bis %wu Bytes Ã¼berdeckt mÃ¶glicherweise %wu Bytes%qD Alias zwischen unvertrÃ¤glichen Funktionstypen %qT und %qT%qD erschien bereits als Listenelement in einer %<allocate%>-Direktive%qD tritt in Daten- und Zuordnungsklauseln mehrfach auf%qD tritt in %<aligned%>-Klausel mehrfach auf%qD kommt in %<allocate%>-Klausel mehrfach vor%qD tritt in %<nontemporal%>-Klauseln mehrfach auf%qD kommt in Aktionsklausel mehrfach vor%qD tritt in Datenklausel mehrfach auf%qD kommt mehr als einmal in Datenfreigabeklauseln vor%qD tritt in Zuordnungsklauseln mehrfach auf%qD tritt in Bewegungsklausel mehrfach auf%qD tritt in Reduktionsklauseln mehrfach aufder Typ von %qD Argument %d wird zu %qT befÃ¶rdert, der Aufruf der eingebauten Funktion, die ohne Prototyp deklariert wurde, erwartet jedoch %qTder Typ von %qD Argument %d ist %qT, der Aufruf der eingebauten Funktion, die ohne Prototyp deklariert wurde, erwartet jedoch %qT%qD Argument %i ist als Attribut %<nonstring%> deklariert%qD Argument %i (als Attribut %<nonstring%> deklariert) ist kleiner als die angegebene Grenze %wu%qD Argument %i (als Attribut %<nonstring%> deklariert) ist kleiner als die angegebene Grenze [%E, %E]%qD Argument %i (als Attribut %<nonstring%> deklariert) ist mÃ¶glicherweise kleiner als die angegebene Grenze [%E, %E]Argument fÃ¼r %qD hat kein abschlieÃŸendes nul-ZeichenAttribut-Anweisung %qD wird ignoriertAttribut %qD ist bedeutungslos, da die Elemente des anonymen Namensraums lokale Symbole erhaltenAttribut %qD erfordert ein einzelnes NTBS-Argument%qD in konstantem Ausdruck aufgerufen%qD in konstantem Ausdruck aufgerufen, bevor die Definition vollstÃ¤ndig war%qD wird mit Zeiger aufgerufen, der aus der unpassenden Allozierungsfunktion %qD stammt%qD wird mit Zeiger auf nicht alloziertes Objekt %qE aufgerufen%qD wird mit Zeiger %qE aufgerufen, der aus der unpassenden Allozierungsfunktion %qD stammt%qD wird mit Zeiger %qE mit Offset%s ungleich 0 aufgerufen%qD wird mit Zeiger aufgerufen, der aus einer unpassenden Allozierungsfunktion stammt%qD wird mit nicht alloziertem Zeiger aufgerufen%qD wird auf nicht alloziertem Objekt %qD aufgerufen%qD ruft %<setjmp%> oder Ã¤hnliches auf, %<-fharden-control-flow-redundancy%> wird nicht unterstÃ¼tzt%qD kann als Â»overrideÂ« markiert werden%qD kann nicht in Konstanten-Ausdruck auftreten%qD kann nicht %qs sein%qD kann keine explizite Objektelementfunktion sein%qD kann nicht als %<virtual%> deklariert werden, da es immer statisch ist%qD kann nicht vorgegeben werden%qD kann nicht als Funktion verwendet werden%qD kann keine Standardargumente haben%qD hat neue Semantik in GCC 4.4%qD SÃ¤ubern eines Objekts von nichttrivialem Typ %#qT%s%qD SÃ¤ubern eines Objekts des Typs %#qT, das einen Zeiger auf Datenelement enthÃ¤lt%s%qD SÃ¤ubern eines Objekts des Typs %#qT ohne triviale Kopierzuweisung%s%qD steht mit verwendeter Funktion in Konflikt%qD Kopieren eines Objekts mit nichttrivialem Typ %#qT aus einem Array von %#qT%qD Kopieren eines Objekts des Typs %#qT mit Element %qs %qD aus einem Array von %#qT; verwenden Sie eine Zuweisung oder Kopierinitialisierung stattdessen%qD in %<constexpr%>-Kontext als %<static%> deklariert%qD in %<constexpr%>-Kontext als %<thread_local%> deklariert%qD als %<transaction_safe_dynamic%> deklariert%qD als ein %<virtual%> Feld deklariert%qD als ein %<virtual%> Parameter deklariert%qD als ein %<virtual%> Typ deklariert%qD als eine %<virtual%> Variable deklariert%qD als Nicht-Parameter deklariert%qD als ein %<inline%> Feld deklariert%qD als ein %<inline%> Parameter deklariert%qD als ein %<inline%> Typ deklariert%qD ist als Array vom Template-Platzhaltertyp %qT deklariert%qD als Referenz deklariert, aber nicht initialisiert%qD ist hier deklariert%qD hier deklariert, spÃ¤ter in der Ãœbersetzungseinheit%qD als schwach deklariert, nachdem es verwendet wurde%qD ist mit interner Bindung deklariert%qD in %<constexpr%>-Kontext als %<static%> definiert%qD kann in einer %qs-Funktion erst ab %<-std=c++23%> oder %<-std=gnu++23%> als %<static%> definiert werden%qD in %<constexpr%>-Kontext als %<thread_local%> definiert%qD kann in einer %qs-Funktion erst ab %<-std=c++23%> oder %<-std=gnu++23%> als %<thread_local%> definiert werden%qD definiert, aber nicht verwendet%qD hier definiert%qD Ziel unverÃ¤ndert, nachdem keine Bytes kopiert wurden%qD Ziel unverÃ¤ndert, nachdem keine Bytes aus einem String der LÃ¤nge %E kopiert wurden%qD hat nicht den Typ %<const char *%>%qD in %qs-Klausel hat keinen zuordenbaren Typ%qD hat keinen Ganzzahl- oder AufzÃ¤hlungstyp%qD hat keinen Ganzzahltyp%qD beginnt seine Lebensdauer nicht implizit, da %qT keinen nicht gelÃ¶schten trivialen Standardkonstruktor hat; verwenden Sie stattdessen %<std::construct_at%>%qD benennt keinen AufzÃ¤hlungstyp in %qT%qD bezeichnet keine Funktion%qD bezeichnet keine Funktion innerhalb eines Namensraum%qD expandierte zu mehr als einem Element%qD erwartet %E Byte in einer Region der GrÃ¶ÃŸe %E%qD erwartet %E Bytes in einer Region der GrÃ¶ÃŸe %E%qD erwartet %E oder mehr Bytes in einer Region der GrÃ¶ÃŸe %E%qD erwartet zwischen %E und %E Bytes in einer Region der GrÃ¶ÃŸe %E%qD macht die TU-lokale EntitÃ¤t %qD sichtbar%qD Bildung des Offsets %s auÃŸerhalb der Grenzen%qD Bildung des Offsets %s auÃŸerhalb der Grenzen [0, %wu]%qD Bildung des Offsets %s auÃŸerhalb der Grenzen [0, %wu] von Objekt %qD mit Typ %qT%qD Bildung des Offsets %s auÃŸerhalb der Grenzen von Objekt %qD mit Typ %qT%qD hat TU-lokales Template-Argument %qD%qD hat TU-lokales Template-Argument %qT%qD ist kein nicht-struktureller Typ%qD hat eine vorherige Deklaration hier%qD wurde bereits definiert%qD hat unvollstÃ¤ndigen Typ %qT%qD hat unvollstÃ¤ndigen Typ%qD hat interne Bindung, da es in einem anonymen Namensraum deklariert wurde%qD hat ungÃ¼ltige Argumentliste%qD hat mehr als %u BlÃ¶cke, das geforderte Maximum fÃ¼r %<-fharden-control-flow-redundancy%>%qD hat keine Bindung und ist innerhalb eines anonymen Namensraums deklariert%qD hat keine Bindung und ist innerhalb der TU-lokalen EntitÃ¤t %qD deklariert%qD hat keine Bindung und ist innerhalb der TU-lokalen EntitÃ¤t %qT deklariert%qD wurde nicht innerhalb von %qD deklariert%qD wurde nicht innerhalb von %qD deklariert%qD hat den gleichen Namen wie die Klasse, in der es deklariert wurde%qD hat zu viele Argumente fÃ¼r internes %<strub%>%qD in %<reduction%>-Klausel ist ein Array der LÃ¤nge 0%qD erbt das %E-ABI-Tag, das %qT (im RÃ¼ckgabetyp verwendet) hat%qD erbt das %E-ABI-Tag, das %qT (im Typ verwendet) hat%qD ist ungÃ¼ltig in %q#T wegen lokalem Element %q#D mit gleichem Namen%qD ist in %q#T ungÃ¼ltig wegen lokaler Methode %q#D mit gleichem Namen%qD ungÃ¼ltig in Bedingung%qD ungÃ¼ltig in Lambda%qD ist eine Funktion, kein Typ%qD ist ein Namensbereich%qD ist eine als %<inline%> deklarierte Referenz und wird mit einem TU-lokalen Wert initialisiert%qD ist eine Spezialisierung des TU-lokalen Templates %qD%qD ist eine gewÃ¶hnliche (nicht-Platzierungs) Deallokationsfunktion%qD ist eine Ã¼bliche (nicht-placement) Deallokationsfunktion in C++14 (oder mit %<-fsized-deallocation%>)%qD ist eine virtuelle Funktion, aber in einem Dispatch-Konstrukt ist nur ein direkter Aufruf erlaubt%qD ist bereits ein Â»friendÂ« von %qT%qD ist bereits ein Â»friendÂ« der Klasse %qT%qD ist bereits in %qT definiert%qD ist bereits in Klasse %qT definiert%qD ist bereits in der Klasse %qT definiert%qD ist ein Alias des TU-lokalen Typen %qT%qD ist ein AufzÃ¤hlungstemplate%qD ist sowohl eine direkte Basis als auch eine indirekte virtuelle Basis%qD ist als %<constexpr%> deklariert und wird mit einem TU-lokalen Wert initialisiert%qD wird in Header %qs deklariert%qD ist mit TLS-Modell %s definiert%qD ist veraltet%qD ist veraltet: %s%qD wird mit sich selbst initialisiert%qD wird fÃ¼r ein leeres Pack instanziiert%qD ist verÃ¤nderlich%qD ist normalerweise eine nicht-statische Funktion%qD ist kein C-Zeiger%qD ist weder ein Klassen- noch ein Alias-Template%qD ist keine Klasse oder Namensbereich%qD ist kein Klassentyp%qD ist kein direktes Element von %qT%qD ist kein Funktionsargument%qD ist kein Funktionstemplate%qD ist kein Element von %qD%qD ist kein Element von %qD; meinten Sie %qs?%qD ist kein Element von %qT%qD ist kein Element von %qT; meinten Sie %qs?%qD ist keine Elementtemplatefunktion%qD ist kein Namensbereichs-Name%qD bezeichnet Namensraum-Namen; meinten Sie %qs?%qD ist keine Zeigervariable%qD ist kein %<static%>-Datenelement%qD ist kein statisches Datenelement eines Klassentemplates%qD ist kein Template%qD ist keine Templatefunktion%qD ist kein Typ%qD ist kein gÃ¼ltiges Templateargument, weil %qD eine Variable und nicht die Adresse einer Variable ist%qD ist keine Variable%qD ist in %<aligned%>-Klausel keine Variable%qD ist in %<allocate%>-Klausel keine Variable%qD ist in %<nontemporal%>-Klausel keine Variable%qD in %qs-Klausel muss eine Variable sein%qD ist in Klausel %<firstprivate%> keine Variable%qD ist in Klausel %<lastprivate%> keine Variable%qD ist in Klausel %qs keine Variable%qD ist kein variadisches Template%qD in %<uniform%>-Klausel ist kein Argument%qD ist nicht eingefangen%qD ist mit %qD unvertrÃ¤glich%qD ist auÃŸerhalb des FunktionsgÃ¼ltigkeitsbereiches nicht definiert%qD ist nicht fÃ¼r %<strub%> geeignet, da %<-fsplit-stack%> eingeschaltet ist%qD ist fÃ¼r %<strub%> nicht geeignet wegen des Attributs %<noipa%>%qD ist fÃ¼r %<strub%> nicht geeignet wegen des Attributs %<simd%>%qD ist fÃ¼r %<strub%> auf dem Zielsystem nicht geeignet%qD ist nicht fÃ¼r das interne %<strub%> geeignet, da sie %qD aufruft%qD ist nicht fÃ¼r das interne %<strub%> geeignet, da sie ein nicht-lokales Sprungziel enthÃ¤lt%qD ist nicht fÃ¼r das interne %<strub%> geeignet wegen des Attributs %<noclone%>%qD ist nicht fÃ¼r das interne %<strub%> geeignet, da die Adresse eines lokalen Labels entwischt%qD ist in %qs-Klausel weder lvalue-Ausdruck noch Arrayabschnitt%qD hat keinen Zeigertyp%qD ist nicht %<public%>%qD ist nicht als %<constexpr%>-Funktion verwendbar, denn:%qD ist mehrfach angegeben%qD ist statisch, wird jedoch in Inline-Funktion %qD verwendet, was nicht statisch ist%qD in %qs-Klausel ist eine threadprivate Variable%qD ist zu klein, um alle Werte von %q#T aufzunehmen%qD ist nicht verfÃ¼gbar%qD ist nicht verfÃ¼gbar: %s%qD ist nicht initialisiert, wird aber benutzt%qD greift mÃ¶glicherweise auf %E Byte in einer Region der GrÃ¶ÃŸe %E zu%qD greift mÃ¶glicherweise auf %E Bytes in einer Region der GrÃ¶ÃŸe %E zu%qD greift mÃ¶glicherweise auf %E oder mehr Bytes in einer Region der GrÃ¶ÃŸe %E zu%qD greift mÃ¶glicherweise auf zwischen %E und %E Bytes in einer Region der GrÃ¶ÃŸe %E zu%qD darf erst ab %<-std=c++23%> oder %<-std=gnu++23%> eine statische Memberfunktion sein%qD kÃ¶nnte uninitialisiert verwendet werden%qD darf nicht als Â»staticÂ« deklariert werden%qD darf nicht innerhalb eines Namensbereiches definiert werden%qD liest mÃ¶glicherweise %E Byte aus einer Region der GrÃ¶ÃŸe %E%qD liest mÃ¶glicherweise %E Bytes aus einer Region der GrÃ¶ÃŸe %E%qD liest mÃ¶glicherweise %E oder mehr Bytes aus einer Region der GrÃ¶ÃŸe %E%qD liest mÃ¶glicherweise zwischen %E und %E Bytes aus einer Region der GrÃ¶ÃŸe %E%qD schreibt mÃ¶glicherweise %E Byte in eine Region der GrÃ¶ÃŸe %E%qD schreibt mÃ¶glicherweise %E Bytes in eine Region der GrÃ¶ÃŸe %E%qD schreibt mÃ¶glicherweise %E oder mehr Bytes in eine Region der GrÃ¶ÃŸe %E%qD schreibt mÃ¶glicherweise zwischen %E und %E Bytes in eine Region der GrÃ¶ÃŸe %E%qD Verschieben eines Objekts des nichttrivialen Typs %#qT und GrÃ¶ÃŸe %E in eine Region der GrÃ¶ÃŸe %E%qD Verschieben eines Objekts des nichttrivial kopierbaren Typs %#qT; verwenden Sie stattdessen %<new%> oder %<delete%>%qD Verschieben eines Objekts des Typs %#qT mit gelÃ¶schtem Kopierkonstruktor; verwenden Sie stattdessen %<new%> und %<delete%>%qD Verschieben eines Objekts des Typs %#qT mit gelÃ¶schtem DestruktorIn %<#pragma acc declare link%> muss %qD eine globale Variable sein%qD muss eine Memberfunktion sein%qD muss eine Nicht-Elementfunktion sein%qD muss eine nichtstatische Elementfunktion sein%qD muss eine Variable sein, die im selben GÃ¼ltigkeitsbereich wie %<#pragma acc declare%> deklariert ist%qD muss entweder eine nichtstatische Elementfunktion oder eine Nicht-Element-Funktion sein%qD muss vom Typ %<omp_interop_t%> sein%qD muss ein Argument von einem Klassen- oder AufzÃ¤hlungstyp haben%qD muss entweder ein oder zwei Argumente nehmen%qD muss entweder null oder ein Argument nehmen%qD muss genau ein Argument nehmen%qD muss genau zwei Argumente nehmen%qD darf keine Argumente nehmenÂ»%qDÂ« darf keine variable Argumentanzahl haben%qD nicht definiert%qD einer Zeichenkette der LÃ¤nge %wu und eines Arrays der GrÃ¶ÃŸe %wu wird zu ungleich Null ausgewertet%qD einer Zeichenkette der LÃ¤nge %wu oder mehr und einem Array der GrÃ¶ÃŸe %wu wird zu ungleich Null ausgewertet%qD einer Zeichenkette der LÃ¤nge %wu, einem Array der GrÃ¶ÃŸe %wu und der Grenze von %wu wird zu ungleich Null ausgewertet%qD von Zeichenketten der LÃ¤nge %wu und %wu und der Grenze von %wu wird zu ungleich Null ausgewertet%qD Offset %s des Objekts an %qE ist auÃŸerhalb der Grenzen von %qT%qD Offset %s des Objekts an %qE ist auÃŸerhalb der Grenzen des referenzierten Teilobjekts %qD mit Typ %qT an Offset %wi%qD Offset %s ist auÃŸerhalb der Grenzen%qD Offset %s ist auÃŸerhalb der Grenzen [0, %wu]%qD Offset %s is auÃŸerhalb der Grenzen [0, %wu] von Objekt %qD mit Typ %qT%qD Offset %s ist auÃŸerhalb der Grenzen von Objekt %qD mit Typ %qT%qD ist in Lambda erst ab %<-std=c++23%> oder %<-std=gnu++23%> verfÃ¼gbarAusgabe von %qD mÃ¶glicherweise abgeschnitten, beim Kopieren von %E Byte aus einer Zeichenkette der LÃ¤nge %wuAusgabe von %qD mÃ¶glicherweise abgeschnitten, beim Kopieren von %E Bytes aus einer Zeichenkette der LÃ¤nge %wu%qD Ausgabe mÃ¶glicherweise abgeschnitten, beim Kopieren von %wu bis %wu Byte aus einer Zeichenkette der LÃ¤nge %wu%qD Ausgabe abgeschnitten vor dem abschlieÃŸenden NUL, beim Kopieren von %E Byte aus einem String derselben LÃ¤nge%qD Ausgabe abgeschnitten vor dem abschlieÃŸenden NUL, beim Kopieren von %E Bytes aus einem String derselben LÃ¤nge%qD Ausgabe abgeschnitten vor dem beendenden NUL, beim Kopieren von so vielen Bytes aus einer Zeichenkette, wie die Ausgabezeichenkette lang istAusgabe von %qD abgeschnitten, beim Kopieren von %E Byte aus einer Zeichenkette der LÃ¤nge %wuAusgabe von %qD abgeschnitten, beim Kopieren von %E Bytes aus einer Zeichenkette der LÃ¤nge %wu%qD Ausgabe abgeschnitten, beim Kopieren von %wu bis %wu Bytes aus einer Zeichenkette der LÃ¤nge %wu%qD ZeigerÃ¼berlauf zwischen Offset %s und GrÃ¶ÃŸe %s%qD ZeigerÃ¼berlauf zwischen Offset %s und GrÃ¶ÃŸe %s beim Zugriff auf Array %qD mit Typ %qT%qD liest %E Byte aus einer Region der GrÃ¶ÃŸe %E%qD liest %E Bytes aus einer Region der GrÃ¶ÃŸe %E%qD liest %E oder mehr Bytes aus einer Region der GrÃ¶ÃŸe %E%qD liest zwischen %E und %E Bytes aus einer Region der GrÃ¶ÃŸe %E%qD empfÃ¤ngt nicht-lokale Gotos, %<-fharden-control-flow-redundancy%> wird nicht unterstÃ¼tzt%qD mit anderem Zugriff redeklariert%qD mit anderer Sichtbarkeit redeklariertZielregion verweist auf %qD, aber der Ausdruck hat keinen zuordenbaren Typ%qD bezieht sich auf die TU-lokale EntitÃ¤t %qD und kann nicht in anderen TUs instanziiert werden%qD verweist auf die TU-lokale Funktion %qD%qD verweist auf das TU-lokale Objekt %qD%qD nach Referenzierung in Assemblierung umbenannt%qD erfordert %<strub%>, aber es wurde kein geeigneter %<strub%>-Modus gefunden%qD darf nicht const sein%qD sollte initialisiert werden%qD sollte in Elementinitialisierungsliste initialisiert werden%qD sollte innerhalb von %qD deklariert werden%qD sollte Wert zurÃ¼ckgebendie GrÃ¶ÃŸe von %qD ist mit %<sizeof%> im frÃ¼heren Argument angegeben, sollte aber im spÃ¤teren stehenQuellargument fÃ¼r %qD ist dasselbe wie fÃ¼r das Ziel%qD ist sowohl im Deklarationsziel %<link%> als auch in %<to%>- oder %<enter%>-Klauseln angegeben%qD ist sowohl in %<link%>- als auch %qs-Klauseln des Deklarationsziels angegeben%qD ist sowohl in %<declare target link%>- als auch implizit in %<to%>-Klauseln angegebenangegebene Grenze %2$E von %1$qD ist genau die GrÃ¶ÃŸe des Ziels%qD angegebene Grenze %E ist genau die GrÃ¶ÃŸe der Quelledurch %qD angegebene Grenze %E Ã¼berschreitet die GrÃ¶ÃŸe %E des Zielobjektsdurch %qD angegebene Grenze %E Ã¼berschreitet die maximale ObjektgrÃ¶ÃŸe %Edurch %qD angegebene Grenze %E Ã¼berschreitet die GrÃ¶ÃŸe %E des Quellobjektsdurch %qD angegebene Grenze %E Ã¼berschreitet mÃ¶glicherweise die GrÃ¶ÃŸe %E des Zielobjektsdurch %qD angegebene Grenze %E Ã¼berschreitet mÃ¶glicherweise die maximale ObjektgrÃ¶ÃŸe %Edurch %qD angegebene Grenze %E Ã¼berschreitet mÃ¶glicherweise die GrÃ¶ÃŸe %E des Quellobjektsdurch %qD angegebene Grenze %s Ã¼berschreitet die maximale ObjektgrÃ¶ÃŸe %Edurch %qD angegebene Grenze %s Ã¼berschreitet die GrÃ¶ÃŸe %E des nicht abgeschlossenen Arraysdurch %qD angegebene Grenze %s Ã¼berschreitet die MaximalgrÃ¶ÃŸe %E des nicht abgeschlossenen Arraysdurch %qD angegebene Grenze %s Ã¼berschreitet mÃ¶glicherweise die MaximalgrÃ¶ÃŸe %E des nicht abgeschlossenen Arraysdurch %qD angegebene Grenze %wu Ã¼berschreitet maximale ObjektgrÃ¶ÃŸe %wudurch %qD angegebene Grenze [%E, %E] Ã¼berschreitet die GrÃ¶ÃŸe %E des Zielobjektsdurch %qD angegebene Grenze [%E, %E] Ã¼berschreitet die maximale ObjektgrÃ¶ÃŸe %Edurch %qD angegebene Grenze [%E, %E] Ã¼berschreitet die GrÃ¶ÃŸe %E des Quellobjektsdurch %qD angegebene Grenze [%E, %E] Ã¼berschreitet mÃ¶glicherweise die GrÃ¶ÃŸe %E des Zielobjektsdurch %qD angegebene Grenze [%E, %E] Ã¼berschreitet mÃ¶glicherweise die maximale ObjektgrÃ¶ÃŸe %Edurch %qD angegebene Grenze [%E, %E] Ã¼berschreitet mÃ¶glicherweise die GrÃ¶ÃŸe %E des Quellobjektsdurch %qD angegebene Grenze zwischen %wu und %wu Ã¼berschreitet maximale ObjektgrÃ¶ÃŸe %wu%qD angegebene Grenze hÃ¤ngt von der LÃ¤nge des Quellarguments ab%qD ist in %<allocate%>-Klausel angegeben, aber nicht in einer expliziten Privatisierungs-Klausel%qD ist in %<inscan%>-%<reduction%>-Klausel angegeben, aber nicht in %<scan%>-Direktivenklausel%qD wurde in %qs-Klausel angegeben, aber nicht in %<inscan%>-%<reduction%>-Klausel am enthaltenden Konstruktdurch %qD angegebene GrÃ¶ÃŸe %E Ã¼berschreitet die maximale ObjektgrÃ¶ÃŸe %Edurch %qD angegebene GrÃ¶ÃŸe %E Ã¼berschreitet mÃ¶glicherweise die maximale ObjektgrÃ¶ÃŸe %Edurch %qD angegebene GrÃ¶ÃŸe zwischen %E und %E Ã¼berschreitet die maximale ObjektgrÃ¶ÃŸe %Edurch %qD angegebene GrÃ¶ÃŸe zwischen %E und %E Ã¼berschreitet mÃ¶glicherweise die maximale ObjektgrÃ¶ÃŸe %E%qD-Spezifizierer ist unvertrÃ¤glich mit %<typedef%>%qD-Spezifizierer ist unvertrÃ¤glich mit %qs%qD legt weniger eingeschrÃ¤nktes Attribut als sein Ziel %qD fest: %e%qD legt weniger eingeschrÃ¤nkte Attribute als sein Ziel %qD fest: %e%qD legt eingeschrÃ¤nkteres Attribut als sein Ziel %qD fest: %e%qD legt eingeschrÃ¤nktere Attribute als sein Ziel %qD fest: %eZiel %qD wurde hier deklariert%qD als Variante mit inkompatiblen %<construct%>-Selektormengen verwendet%qD vor seiner Definition verwendet%qD in seiner eigenen Initialisierung verwendet%qD wird ohne Template-Argumente verwendet%qD verletzt die One-Definition-Rule von C++%qD wurde %<extern%> deklariert und spÃ¤ter %<static%>%qD wurde als %qs deklariert, was Standardsichtbarkeit mit sich bringt%qD wurde hier deklariert%qD war versteckt%qD wurde nicht als %<constexpr%> definiert%qD wurde in diesem GÃ¼ltigkeitsbereich nicht definiert%qD wurde in diesem GÃ¼ltigkeitsbereich nicht deklariert, und bei argumentabhÃ¤ngiger Suche am Ort der Instanziierung wurden keine Deklarationen gefunden%qD wurde in diesem GÃ¼ltigkeitsbereich nicht deklariert; meinten Sie %qs?%qD wurde nicht mit konstantem Ausdruck initialisiert%qD wurde vorher hier deklariert%qD wurde zu einer unmittelbaren Funktion befÃ¶rdert%qD wurde in eine unmittelbare Funktion umgewandelt, da ihr Rumpf einen unmittelbar-eskalierenden Ausdruck %qE enthÃ¤lt%qD wurde vor seiner Definition ohne Deklaration verwendet%qD wurde vor seiner Definition ohne Prototyp verwendet%qD wird initialisiert nach%qD schreibt %E Byte in eine Region der GrÃ¶ÃŸe %E und bringt dadurch das Zielobjekt zum Ãœberlaufen%qD schreibt %E Bytes in eine Region der GrÃ¶ÃŸe %E und bringt dadurch das Zielobjekt zum Ãœberlaufen%qD schreibt %E oder mehr Bytes in eine Region der GrÃ¶ÃŸe %E und bringt dadurch das Zielobjekt zum Ãœberlaufen%qD schreibt %wu Byte in eine Region der GrÃ¶ÃŸe %wu%qD schreibt %wu Bytes in eine Region der GrÃ¶ÃŸe %wu%qD schreibt %wu Byte in eine Region der GrÃ¶ÃŸe zwischen %wu und %wu%qD schreibt %wu Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wu%qD schreibt zwischen %E und %E Bytes in eine Region der GrÃ¶ÃŸe %E und bringt dadurch das Zielobjekt zum Ãœberlaufen%qD schreibt zwischen %wu und %wu Bytes in eine Region der GrÃ¶ÃŸe %wu%qD schreibt zwischen %wu und %wu Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wu%qD schreibt ein Byte zu viel in eine Region, deren GrÃ¶ÃŸe von %<strlen%> abhÃ¤ngt%qD Schreiben in ein Objekt eines nichttrivialen Typen %#qT lÃ¤sst %wu Byte unverÃ¤ndert%qD Schreiben in ein Objekt eines nichttrivialen Typen %#qT lÃ¤sst %wu Bytes unverÃ¤ndert%qD Schreiben in ein Objekt des nichttrivialen Typs %#qT%s%qD Schreiben in ein Objekt des nichttrivial kopierbaren Typs %#qT%s%qD Schreibzugriff auf ein Objekt des Typs %#qT, das einen Zeiger auf Datenelement enthÃ¤lt%s%qD Schreibzugriff auf ein Objekt des Typs %#qT mit Element %qs %qD%qD Schreibzugriff auf ein Objekt des Typs %#qT ohne triviale Kopierzuweisung%qD Schreibzugriff auf ein Objekt des Typs %#qT ohne triviale Kopierzuweisung%s%qD Schreibzugriff auf ein Objekt mit einem gelÃ¶schten Kopierkonstruktor%qD: Sichtbarkeitsattribut ignoriert, da es in Konflikt mit vorheriger Deklaration steht%qE 2.95 vtable-KompatibilitÃ¤tsattribut trifft nur fÃ¼r C++-Klassen zu%qE 2.95 vtable-KompatibilitÃ¤tsattribut trifft nur zu, wenn ein Â»kextÂ« kompiliert wird%qE tritt in %<aligned%>-Klausel mehrfach auf%qE kommt mehr als einmal in %<allocate%>-Klauseln vor%qE tritt in %<nontemporal%>-Klausel mehrfach auf%qE tritt in dieser Datenklausel mehrfach auf%qE tritt in Mapklauseln mehrfach auf%qE tritt in derselben %<declare target%>-Direktive mehrfach auf%qE Argument %Z Ã¼berlappt mÃ¶glicherweise das Zielobjekt %qE%qE Argumente %Z Ã¼berlappen mÃ¶glicherweise das Zielobjekt %qE%qE Argument %Z Ã¼berlappt das Zielobjekt %qE%qE Argumente %Z Ã¼berlappen das Zielobjekt %qEArgument %qE ist keine FunktionArgument %qE muss eins von %qs, %qs, %qs oder %qs seinArgument %qE ist keine ZeichenketteArgument %qE ist kein BezeichnerIm Aufruf von %qE Ã¼berlappen sich die Argumente %Z und vielleicht %Z mit dem Zielobjekt %qEAdresse von Attribut %qE auÃŸerhalb des gÃ¼ltigen Bereichs 0x%x%s0x%xAttribut %qE erlaubt nur eine Ganzzahlkonstante als ArgumentAttribut %qE auf %qD mit RÃ¼ckgabetyp Â»voidÂ« angewendetAttribut %qE auf %qT nach seiner Definition angewendetAttribut %qE wird auf Â»extern "C"Â«-Deklaration %qD angewendetAttribut %qE auf Nicht-Klassen-, Nicht-Enum-Typ %qT angewendet%qE-Attribut wird auf %qD angewendet, das weder Funktion noch Variable istAttribut %qE kann nur auf Funktionsdefinitionen angewandt werdenAttribut %qE kann nur auf Funktionen angewandt werdenAttribut %qE bezieht sich nur auf initialisierte Variablen mit externer BindungAttributargument %qE mit Wert %E ist keine ZweierpotenzAttribut %qE mit Argument %E ist keine GanzzahlkonstanteArgument %2$E von Attribut %1$qE liegt nicht im Bereich [0, %3$wu]Attribut %qE Argument %E ist nicht positivAttributargument %qE an Position %i hat Typ %qTAttributargument %qE an Position %i ist ungÃ¼ltigAttributargument %qE an Position %i hat den Wert %qE, der nicht auf einen Funktionsparameter verweistAttributargument %qE an Position %i hat den Wert %qE, der nicht auf eine variable Argumentliste verweistAttributargument %qE an Position %i hat den Wert %qE, der die Anzahl der Funktionsparameter %u Ã¼bersteigtAttributargument %qE an Position %i hat den Wert %qE, der keine Ganzzahlkonstante istAttributargument %qE an Position %i hat den Wert %qE, der auf einen variadischen Funktionsparameter unbekannten Typs verweistAttributargument %qE an Position %i hat den Wert %qE, der auf den Parametertyp %qT verweistAttribut %qE hat Argument %qE, das %u Ã¼bersteigtAttributargument %qE mit Wert %qE ist keine GanzzahlkonstanteAttribut %qE Argument %qE muss eine ganzzahlige Konstante zwischen 0 und 3 seinAttribut %qE Argument %qE ist unbekanntAttribut %qE Argument 1 benennt keine FunktionAttribut %qE Argument 1 ist mehrdeutigAttribut %qE Argument 1 muss einen Zeigertyp als erstes Argument habenAttribut %qE Argument 1 muss einen Zeigertyp als erstes Argument haben, hat jedoch %qTAttributargument %qE kann kein konstanter arithmetischer Ausdruck seinAttributargument %qE kann keine Zeichenkette seinAttributargument %qE hat Typ %qTAttributargument %qE ist ungÃ¼ltigArgument des Attributs %qE muss eine Zeichenkettenkonstante seinArgument %qE des Attributs muss ein Ausdruck sein, der zu true oder false auswertetArgument des Attributs %qE ist keine ZeichenkettenkonstanteAttributargument %qE ist keine GanzzahlAttributargument %qE ist keine GanzzahlkonstanteArgument des Attributs %qE sollte zwischen 0 und 255 seinArgument des Attributs %qE sollte zwischen 18 und 255 seinAttributargument %qE hat den Wert %qE, der nicht auf einen Funktionsparameter verweistAttributargument %qE hat den Wert %qE, der nicht auf eine variable Argumentliste verweistAttributargument %qE mit Wert %qE Ã¼bersteigt %wuAttributargument %qE hat den Wert %qE, der die Anzahl der Funktionsparameter %u Ã¼bersteigtAttributargument %qE mit Wert %qE ist negativAttributargument %qE hat den Wert %qE, der keine Ganzzahlkonstante istAttributargument %qE hat den Wert %qE, der auf einen variadischen Funktionsparameter unbekannten Typs verweistAttributargument %qE hat den Wert %qE, der auf den Parametertyp %qT verweistAttribut %qE kann nur auf Funktionen oder Parameter angewendet werdenAttribut %qE kann nur auf Funktionen oder auf Klasse- oder AufzÃ¤hlungstypen angewendet werdenAttribut %qE kann nur auf Funktionen oder auf struct-, union- oder enum-Typen angewendet werdenAttribut %qE kann nur auf nicht-statische Datenelemente angewendet werdenAttribut %qE kann nicht auf Bitfeld angewendet werdenAttribut %qE kann nicht fÃ¼r lokale Variablen angegeben werdenAttribut %qE kann nicht fÃ¼r Register-Variablen angegeben werdenAttribut %qE kann nicht fÃ¼r threadlokale Variablen angegeben werdenAttribut %qE steht mit Attribut %qE in KonfliktAttribut-Direktive %qE ignoriertAttribut %qE ist nicht auf Funktionen anwendbarAttribut %qE kann nicht auf Typen angewandt werdenAttribut %qE akzeptiert keine ArgumenteAttribut %qE bezieht sich nicht auf Funktionendoppeltes Attribut %qEAttribut %qE folgt auf %qEAttribut %qE hat keinen EffektAttribut %qE wirkt sich nicht auf Funktionen mit Â»staticÂ«-Bindung ausAttribut %qE wirkt sich nicht auf einheits-lokale Funktionen ausAttribut %qE wirkt sich nur auf Ã¶ffentliche Objekte ausAttribut %qE wird ignoriertAttribut %qE ignoriert, da %qD nicht Thread-Speicherdauer hatAttribut %qE ignoriert, da %qD keine lokale Variable istAttribut %qE ignoriert, da %qD keine Variable istAttribut %qE ignoriert, da %qT bereits definiert istAttribut %qE wird wegen des Arguments %qE ignoriertAttribut %qE ignoriert fÃ¼r %qEAttribut %qE ignoriert fÃ¼r Feld vom Typ %qTAttribut %qE fÃ¼r Typ %qT ignoriertAttributargument %qE deklariert das referenzierte Symbol mit einer anderen Art; wird ignoriertAttribut %qE an einer Funktion mit RÃ¼ckgabetyp %qT wird ignoriertAttributargument %qE deklariert das referenzierte Symbol neu; wird ignoriertAttribut %qE wird an Funktionen mit RÃ¼ckgabetyp %qT ignoriert; es gilt nur fÃ¼r Zeiger-RÃ¼ckgabetypenAttribut %qE ignoriert fÃ¼r Nicht-Klassen-TypenAttribut %qE wird an allen Typen auÃŸer AufzÃ¤hlungen ignoriertAttribut %qE wird fÃ¼r Objekte vom Typ %qT ignoriertAttribut %qE fÃ¼r Typen ignoriertAttribut %qE ignoriert, da die Option %<-mcmse%> nicht angegeben istAttribut %qE ignoriert, da die Option %<-mistack%> nicht angegeben istAttribut %qE ignoriert, da es nur fÃ¼r ein groÃŸes Speichermodell (%<-mlarge%>) sinnvoll ist.Attribut %qE ignoriert, da die Option %<-fcf-protection%> nicht angegeben istAttribut %qE wird ignoriert, da das Feld ein Funktionszeiger sein mussAttribut %qE wird ignoriert, da es nur fÃ¼r Funktionen giltAttribut %qE wird ignoriert, da es nur fÃ¼r Funktionen und Funktionszeigerfelder giltAttribut %qE kann nur auf Zeigertypen angewendet werdenAttribut %qE kann nur fÃ¼r Array-Felder angegeben werdenAttribut %qE ist in der Deklaration %q+D nicht erlaubt, da sie kein Feld deklariertAttribut %qE kann nur fÃ¼r flexible Array-Felder angegeben werdenAttribut %qE wird nicht unterstÃ¼tzt, da die Bytereihenfolge nicht einheitlich istAttribut %qE wird fÃ¼r C++ derzeit nicht unterstÃ¼tzt und daher ignoriertAttribut %qE wird fÃ¼r Ziel R8C nicht unterstÃ¼tztAttribut %qE bezieht sich nur auf FunktionenAttribut %qE ist nur fÃ¼r Objective-C-Objekte gÃ¼ltigAttribut %qE kann nur auf %<struct%>-Typen angewandt werdenAttribut %qE wird fÃ¼r ELF-Ziele unterstÃ¼tztAttribut %qE wird nur auf SH2A unterstÃ¼tztAttribut %qE wird fÃ¼r Nicht-Klassen-Methode verwendetAttribut %qE kann nur an einem typedef stehen; wird ignoriertAttribut %qE kann nicht fÃ¼r %q+D angegeben werdenAttribut %qE kann nur fÃ¼r Array-Felder angegeben werdenAttribut %qE muss vor Attribut %qs auftretenAttribut %qE muss sich auf eine Deklaration beziehenAttribut %qE nicht mit Speicherklasse Â»autoÂ« erlaubtAttribut %qE ist nicht auf Funktionen anwendbar, die Argumente auf dem Stack zurÃ¼ckgebenAttribut %qE ist nicht auf Funktionen anwendbar, die Argumente auf dem Stack Ã¼bergebenAttribut %qE ist nicht auf Funktionen anwendbar, die variable Anzahl von Argumenten habenAttribut %qE an einer Funktion, die keinen Zeiger zurÃ¼ckgibtAttribut %qE an einer Funktion mit RÃ¼ckgabetyp %<void%>Attribut %qE an einem Funktionstyp ohne Zeigerargumente mit RÃ¼ckgabetyp %<void%>Attribut %qE an nicht-Â»volatileÂ«-VariableAttribut %qE bezieht sich nur auf Toplevel-ObjekteAttribut %qE gilt nur fÃ¼r SH2AAttribut %qE kann nur auf Basistypen von Funktionszeiger angewandt werdenAttribut %qE kann nur auf Funktionstypen angewandt werdenAttribut %qE bezieht sich nur auf FunktionenAttribut %qE bezieht sich nur auf InterruptfunktionenAttribut %qE ist nur bei Struktur-, Vereinigungs- und Klassentypen anwendbarAttribut %qE kann nur auf Typen angewandt werdenAttribut %qE bezieht sich nur auf VariablenAttribut %qE kann nur fÃ¼r Â»staticÂ«-Variablen verwendet werdenAttribut %qE gilt nur fÃ¼r variadische FunktionenAttribut %qE nur fÃ¼r 32 Bit verfÃ¼gbarAttribut %qE wird nur fÃ¼r reduzierte Tiny-Kerne unterstÃ¼tztAttribut %qE wird nur in C unterstÃ¼tztAttribut %qE wird nur fÃ¼r Boolean-Typen unterstÃ¼tztAttribut %qE wird nur fÃ¼r Ganzzahltypen unterstÃ¼tztAttribut %qE wird nur fÃ¼r Vektortypen unterstÃ¼tzt, die nicht maskiert sindAttribut %qE ist nur fÃ¼r die ARC-EM-Architektur gÃ¼ltigAttribut %qE ist nur fÃ¼r die Architektur ARCv2 gÃ¼ltigAttribut %qE erfordert eine Zeichenkettenkonstante als ArgumentAttribut %qE erfordert eine Zeichenkettenkonstante als ArgumentAttribut %qE erfordert den RÃ¼ckgabetyp Â»voidÂ«Attribut %qE benÃ¶tigt eine Ganzzahl als ArgumentAttribut %qE benÃ¶tigt eine Ganzzahlkonstante als ArgumentAttribut %qE erfordert unterschiedliche Werte fÃ¼r %<false%> und %<true%> fÃ¼r den Typ %qTAttribut %qE benÃ¶tigt Prototypen mit benannten ArgumentenAttribut %qE erwartet keine ArgumenteAttribut %qE mit nicht unterstÃ¼tzter Boolean-GenauigkeitAttribut %qE ohne Argumente fÃ¼r einen Nicht-PrototypAttribut %qE kann nur auf Zeigertypen angewendet werden, nicht auf %qT%qE kann nicht als Funktion verwendet werden%qE kann nicht als Elementzeiger verwendet werden, da es vom Typ %qT ist%qE kann nicht gleichzeitig die Attribute %qs und %qs haben%qE nach erster Verwendung als %<threadprivate%> deklariert%qE als Funktion, die eine Funktion zurÃ¼ckgibt, deklariert%qE als Funktion, die ein Array zurÃ¼ckgibt, deklariert%qE ist hier deklariert%qE als falsche Symbolart definiert%qE schrÃ¤nkt keinen Typ ein%qE hat nicht den Typ %<omp_depend_t%>, in der %<depend%>-Klausel mit %<depobj%>-AbhÃ¤ngigkeitstyp%qE in %qs-Klausel hat keinen zuordenbaren Typ%qE hat weder Zeiger- noch Arraytyp%qE bezeichnet keinen Typ%qE bezeichnet keinen Typ; meinten Sie %qs?%qE erfÃ¼llt Â»return-type-requirementÂ« nicht%qE erfÃ¼llt Â»return-type-requirementÂ« nicht, da%qE unterstÃ¼tzt keine 32-Bit-Offsets mit Vorzeichenerweiterung%qE unterstÃ¼tzt den 32-Bit-Vektortyp %qT nicht%qE unterstÃ¼tzt keine vorzeichenerweiterten Offsets%qE wird zu Â»falseÂ« ausgewertet%qE ist kein typedef oder eingebauter Typ%qE hat sowohl %<extern%> als auch Initialisierung%qE hat konstanten Typ fÃ¼r %<reduction%>%qE hat ungÃ¼ltigen Typ fÃ¼r %<reduction(%s)%>%qE hat keine Form, die Argumente %qT und %qT annimmt%qE hat keine Form, die %qT Argumente annimmt%qE wurde nicht deklariert%qE wurde nicht deklariert; meinten Sie %qs?%qE bringt Standardsichtbarkeit mit sich, aber %qD wurde bereits mit anderer Sichtbarkeit deklariert%qE in %<aligned%>-Klausel ist weder Zeiger noch Array%qE in %<aligned%>-Klausel ist weder Zeiger noch Array noch Referenz auf Zeiger oder Array%qE in %<reduction%>-Klausel ist ein Array der LÃ¤nge 0%qE in %q#T benennt keinen Templatetypen%qE in %q#T benennt keinen Typen%qE in Namensraum %qE bezeichnet keinen Templatetyp%qE in Namensraum %qE bezeichnet keinen Templatetyp; meinten Sie %qs?%qE in Namensbereich %qE bezeichnet keinen Typ%qE in Namensraum %qE bezeichnet keinen Typ; meinten Sie %qs?%qE-inkompatibles Attribut wird ignoriert%qE initialisiert und als %<extern%> deklariert%qE ist ein Element eines Union-Typs%qE ist ein Zeiger auf einen Zeiger; wollten Sie ihn dereferenzieren, bevor Sie %<->%> darauf anwenden?%qE ist ein Zeiger; meinten Sie %<->%>?%qE ist ein nicht erkannter Formatfunktionstyp%qE ist veraltet%qE ist veraltet: %s%qE ist mit %<throw()%> oder %<noexcept%> markiert, aber %qT liefert kein brauchbares %<get_return_object_on_allocation_failure%>%qE in %qs-Klausel ist weder Variablen- noch Funktionsname%qE ist weder eine Funktion noch Elementfunktion; kann nicht als Â»friendÂ« deklariert werden%qE ist nicht %<noexcept%>%qE ist keine Klasse oder Namensbereich%qE ist kein Klassentemplate%qE ist keine Klasse, Namensbereich oder AufzÃ¤hlung%qE ist kein Konstantenausdruck%qE ist kein konstanter Ausdruck, da der angeforderte Speicher nicht vollstÃ¤ndig freigegeben wurde%qE ist kein konstanter Ausdruck, da er %qT statt %qT initialisiert%qE ist kein konstanter Ausdruck, da er auf das Ergebnis von %<operator new%> verweist%qE ist kein Konstantenausdruck, da er auf eine unvollstÃ¤ndig initialisierte Variable verweist%qE ist kein Konstantenausdruck, da er auf verÃ¤nderliche Teilobjekte von %qT verweist%qE ist kein konstanter Ausdruck, solange die Klasse %qT noch unvollstÃ¤ndig ist%qE ist kein Template%qE ist kein Typ%qE ist kein gÃ¼ltiger %<asm%>-Qualifizierer%qE ist kein gÃ¼ltiges Templateargument fÃ¼r %qT, da es keine Adresse einer Variable ist%qE ist kein gÃ¼ltiges Templateargument fÃ¼r Typ %qT%qE ist kein gÃ¼ltiges Templateargument fÃ¼r Typ %qT, weil %qD keine externe Bindung hat%qE ist kein gÃ¼ltiges Templateargument fÃ¼r Typ %qT, weil %qD keine Bindung hat%qE ist kein gÃ¼ltiges Templateargument fÃ¼r Typ %qT, weil es ein Zeiger ist%qE ist kein gÃ¼ltiges Templateargument fÃ¼r Typ %qT, weil es kein L-Wert ist%qE ist kein gÃ¼ltiges Templateargument fÃ¼r Typ %qT, weil es vom Typ %qT ist%qE ist kein gÃ¼ltiges Templateargument fÃ¼r Typ %qT, da es in CV-Qualifikation in Konflikt steht%qE ist kein gÃ¼ltiges Templateargument fÃ¼r Typ %qT, da Zeichenkettensymbole in diesem Zusammenhang nicht verwendet werden kÃ¶nnen%qE ist kein gÃ¼ltiges Templateargument fÃ¼r Typ %qT, weil %qD keine Bindung hat%qE ist kein gÃ¼ltiges Templateargument vom Typ %qT, weil %qE weder eine Variable noch eine Funktion ist%qE ist in C++98 kein gÃ¼ltiges Templateargument des Typs %qT, weil %qD keine externe Bindung hat%qE ist %<aligned%>-Klausel keine Variable%qE in %<allocate%>-Klausel ist keine Variable%qE ist in %<nontemporal%>-Klausel keine Variable%qE in %qs-Klausel muss eine Variable sein%qE ist in Klausel %<firstprivate%> keine Variable%qE ist in Klausel %<lastprivate%> keine Variable%qE ist in Klausel %qs keine Variable%qE ist kein Klassenname oder Alias in Objective-C%qE in %<uniform%>-Klausel ist kein Argument%qE ist nicht am Anfang einer Deklaration%qE ist nicht initialisiert%qE ist weder ein lvalue-Ausdruck noch ein Arrayabschnitt in %qs-Klausel%qE ist nicht vom Typ %qTunbekannte Modul-Steuerzeile %qE%qE ist nicht das vollstÃ¤ndige Muster einer Packexpansion%qE ist nur in Objective-C-Dialekten erlaubt%qE ist nur auf Objective-C-Klassen-Interfaces anwendbar; wird ignoriert%qE ist vorbestimmt %qs fÃ¼r %qs%qE wird von %qT bereitgestellt, aber %<std::nothrow%> wurde nicht gefunden%qE wird von %qT bereitgestellt, aber %qE ist nicht mit %<throw()%> oder %<noexcept%> gekennzeichnet%qE wird von %qT bereitgestellt, ist aber nicht mit der Funktion %qD verwendbar%qE wird von %qT bereitgestellt, ist aber nicht mit der Funktionssignatur %qD verwendbar%qE ist nicht verfÃ¼gbar%qE ist nicht verfÃ¼gbar: %s%qE ist nicht initialisiert%qE kÃ¶nnte uninitialisiert verwendet werden%qE antwortet mÃ¶glicherweise nicht auf %<%c%E%>%qE darf erst nach einer Modul-Interface-Deklaration vorkommen%qE darf nur einmal pro Export-Deklaration vorkommen%qE kÃ¶nnte ein abschlieÃŸendes NUL hinter das Ende des Ziels schreibenfehlende Templateargumente fÃ¼r %qE%qE muss fÃ¼r %<copyin%> %<threadprivate%> sein%qE muss eine nichtÃ¼berladene Methode sein%qE muss eine nichtÃ¼berladene statische Funktion sein%qE muss %qT zurÃ¼ckgeben, nicht %qT%qE muss ein einzelnes %qT annehmen%qE darf keine Argumente annehmen%qE benennt den Konstruktor, nicht den Typ%qE erfordert ISA-Option %s%qE erfordert unbekannte ISA-Option%qE in umgebendem %<target%> nicht angegeben%qE in umgebendem %qs nicht angegeben%qE in umgebendem OpenACC-%qs-Konstrukt nicht angegeben%qE in %<case%>- oder %<default%>-Label%qE bei einem anderen Typ als einer Klassen- oder AufzÃ¤hlungsdefinition%qE in unbenanntem Bitfeld%qE hat %wu Byte ausgegeben%qE hat %wu Bytes ausgegeben%qE hat %wu Byte in ein Ziel der GrÃ¶ÃŸe %wu ausgegeben%qE hat %wu Byte in ein Ziel der GrÃ¶ÃŸe %wu ausgegeben%qE hat %wu oder mehr Bytes ausgegeben%qE hat %wu oder mehr Bytes (angenommen %wu) ausgegeben%qE hat %wu oder mehr Bytes (angenommen %wu) in das Ziel der GrÃ¶ÃŸe %wu ausgegeben%qE hat %wu oder mehr Bytes in das Ziel der GrÃ¶ÃŸe %wu ausgegeben%qE hat zwischen %wu und %wu Bytes ausgegeben%qE hat zwischen %wu und %wu Bytes in das Ziel der GrÃ¶ÃŸe %wu ausgegeben%qE-Ausgabe kÃ¶nnte vor dem letzten Formatzeichen abgeschnitten sein%qE-Ausgabe ist vor dem letzten Formatzeichen abgeschnitten%qE als andere Symbolart redeklariert%qE mit in Konflikt stehenden Attributen %qs redeklariert%qE benÃ¶tigt %<-fgnu-tm%>%qE erfordert eine %<declare%>-Direktive, um in einer %<routine%>-Funktion verwendet zu werden%qE erfordert eine Vektorbasis und einen skalaren IndexAttribut %qE benÃ¶tigt ein Argument%qE benÃ¶tigt die SVE-ISA-Erweiterung%qE sollte einen anderen Typ haben als %<omp_depend_t%>, in der %<depend%>-Klausel mit von %<depobj%> verschiedenem AbhÃ¤ngigkeitstyp%qE ist hier angegeben%qE nicht deklariert (erste Verwendung in dieser Funktion)%qE nicht deklariert (erstmalige Verwendung in dieser Funktion); meinten Sie %qs?%qE ist hier nicht deklariert (nicht in einer Funktion)%qE ist hier (auÃŸerhalb einer Funktion) nicht deklariert; meinten Sie %qs?%qE mit %<auto%> verwendet%qE mit %<constexpr%> verwendet%qE mit %<extern%> verwendet%qE mit %<register%> verwendet%qE mit %<typedef%> verwendet%qE mit %qs verwendet%qE mit %<link%>-Klausel wird in %<routine%>-Funktion verwendet%qE schreibt ein abschlieÃŸendes NUL hinter das Ende des Ziels%qF als %<static%> deklariert, aber nirgendwo definiert%qF erfordert %<-mvx%>%qF erfordert z14 oder hÃ¶her%qF erfordert z15 oder hÃ¶her%qF erfordert z17 oder hÃ¶her%qT und %qT sind in disjunkt benannten AdressrÃ¤umen%qT als Typ statt als einfaches %<decltype(auto)%>%qT hier deklariert%qT in zusammengesetztem %<constexpr%>-Literal deklariert%qT ist in unvollstÃ¤ndig angegebener Objektdeklaration deklariert%qT wird in unvollstÃ¤ndig spezifiziertem Objektinitialisierer deklariert%qT mit nicht zusammenpassendem KlassenschlÃ¼ssel %qs deklariert%qT mit bedeutenderer Sichtbarkeit als seine Basis %qT deklariert%qT mit bedeutenderer Sichtbarkeit als der Typ seines Feldes %qD deklariert%qT wurde hier als %qs definiert%qT in zusammengesetztem %<constexpr%>-Literal definiert%qT ist in unvollstÃ¤ndig angegebener Objektdeklaration definiert%qT wurde in unvollstÃ¤ndig angegebenem Objektinitialisierer definiert%qT ist mit direkter virtueller Basisklasse definiert%qT ist mit mehreren direkten Basisklassen definiert%qT hat nicht das ABI-Tag %E, das %qT (im Typ von %qD verwendet) hat%qT hat nicht das ABI-Tag %E, das die Basis %qT hat%qT stimmt nicht mit der ursprÃ¼nglichen Deklaration Ã¼berein%qT wurde erstmals hier als %qs deklariert%qT hat eine Basis %qT, die von Typ %qT abhÃ¤ngt, der wiederum keine Bindung hat%qT hat eine Basis %qT, die interne Bindung hat%qT hat eine Basis %qT, die keine Bindung hat%qT hat eine Basis %qT, die den anonymen Namensraum verwendet%qT hat ein Feld %q#D, dessen Typ keine Bindung hat%qT hat ein Feld %q#D, dessen Typ keine Bindung hat%qT hat ein Feld %q#D, dessen Typ den anonymen Namensbereich verwendet%qT hat ein Feld %qD, dessen Typ vom Typ %qT abhÃ¤ngt, der wiederum keine Bindung hat%qT hat hier eine vorherige Deklaration%qT hat kein Element namens %qE%qT hat kein Element namens %qE; meinten Sie %qE?%qT hat keinen Namen und kann nicht von Ã¤hnlichen Lambdas in anderen TUs unterschieden werden%qT hat keinen Namen und ist nicht innerhalb einer Klasse, Funktion oder eines Initialisierers definiert%qT hat kein nicht-statisches Datenelement namens %qD%qT ist ein variabel modifizierter Typ%qT ist bereits ein Â»friendÂ« von %qT%qT ist eine mehrdeutige Basisklasse des dynamischen Typen %qT seines Operanden%qT ist mehrdeutige Basis von %qT%qT ist eine nicht erreichbare Basis von %qT%qT ist keine Basis von %qT%qT ist keine Klasse oder Namensbereich%qT ist kein Klassentyp%qT ist weder eine Klasse, noch ein Namensbereich oder eine AufzÃ¤hlung%qT ist kein Klassen-, Struktur- oder Union-Typ%qT ist keine direkte Basis von %qT%qT ist kein Elementklassentemplate von %qT%qT ist kein Element von %qT%qT ist keine geschachtelte Klasse von %qT%qT ist kein Zeiger auf Objekt%qT ist kein Template%qT ist kein Template-Typ%qT ist kein gÃ¼ltiger Typ fÃ¼r einen Nichttyp-Templateparameter, da er nicht strukturell ist%qT ist kein %<asm%>-Qualifizierer%qT ist keine erreichbare Basis von %qT%qT ist kein AufzÃ¤hlungstyp%qT auf %qT erweitert beim Durchlaufen von %<...%>%qT ist/verwendet anonymen Typen%qT beabsichtigt mÃ¶glicherweise nicht, Argumentherleitung fÃ¼r Klassentemplates zu unterstÃ¼tzen%qT ist in einem Templateargument nicht erlaubt%qT als %qs verwendet%qT als enum verwendet%qT wird in %qT aufgelÃ¶st, aber das ist kein Klassentyp%qT wird in %qT aufgelÃ¶st, was kein AufzÃ¤hlungstyp istunbenanntes temporÃ¤res Objekt %qT wird hier definiert%qT%d%qE%dder einzelne Vektor %qT wird an Argument %d von %qE Ã¼bergeben, das erwartet jedoch ein Tupel von %d Vektoren%qV-Qualifizierer kÃ¶nnen nicht auf %qT angewendet werden%qc-Umwandlung wird unescapet verwendetUmwandlung %qc wird innerhalb einer q-Folge benutztDie Direktive %qc ist redundant, da sie bereits vorgekommen ist%qc in einem Eingabeoperanden auÃŸerhalb einer Funktion%qc in Ausgabeoperand auÃŸerhalb einer Funktion%qs%qs auf der linken Seite einer Zuweisung%s auf der linken Seite einer Clobber-Anweisung%qs greift auf das uninitialisierte Byte an Offset %d zu%qs bereits als spezifische Bindung fÃ¼r das generische %qs bei %C definiert%qs und %<%s-%s%> sind unvertrÃ¤glich%qs und %<%s=%s%> sind unvertrÃ¤glich%qs und %qs sind unvertrÃ¤glichArgumente %qs und %qs des intrinsischen %qs bei %L mÃ¼ssen gleiche Form haben.Argumente %qs und %qs des intrinsischen %qs bei %L mÃ¼ssen denselben Typ habenAttribute %qs und %qs sind nicht vertrÃ¤glich%qs und %qs kÃ¶nnen nicht gemischte FUNCTION/SUBROUTINE fÃ¼r GENERIC %qs bei %L sein%qs und %qs kÃ¶nnen nicht gleichzeitig eingeschaltet sein%qs und %qs fÃ¼r GENERIC %qs bei %L sind mehrdeutig%qs kommt mehr als einmal in %<allocate%> bei %L vor%qs scheint ein falsch geschriebener %qs-Handler zu sein, das PrÃ¤fix %<__vector%> fehlt%qs wird auf einen void-Typ angewendet%qs wird auf einen unvollstÃ¤ndigen Typ angewendet%qs angewendet auf Nicht-RVV-Typ %qT%qs angewendet auf Nicht-SVE-Typ %qT%qs angewendet auf den Nicht-Vektor-Typ %qT%qs angewendet auf den Typ %qT, der bereits eine GrÃ¶ÃŸe hatArgument %qs hat ungÃ¼ltige Operandennummer (Argument %lu)Argument fÃ¼r %qs hat kein abschlieÃŸendes nul-ZeichenArgument %qs des intrinsischen %qs bei %L kann nicht INTENT(IN) seinArgument %qs des intrinsischen %qs bei %L kann nicht Typ %s habenArgument %qs des intrinsischen %qs bei %L hat ungÃ¼ltige Permutation der Dimensionen (Dimension %qd doppelt)Argument %qs des intrinsischen %qs bei %L hat ungÃ¼ltige Form in Dimension %d (%ld/%ld)Argument %qs des intrinsischen %qs bei %L hat negatives Element (%d)Argument %qs des intrinsischen %qs bei %L hat Dimension auÃŸerhalb des Wertebereiches (%d)Argument %qs des intrinsischen %qs bei %L hat falsche Anzahl der Elemente (%d/%d)Argument %qs des intrinsischen %qs bei %L ist leerArgument %qs des intrinsischen %qs bei %L ist kein gÃ¼ltiger DimensionsindexArgument %qs des intrinsischen %qs bei %L muss %s seinArgument %qs des intrinsischen %qs bei %L muss %s oder %s seinArgument %qs des intrinsischen %qs bei %L muss ALLOCATABLE seinArgument %qs des intrinsischen %qs bei %L muss ein INTEGER seinArgument %qs fÃ¼r intrinsisches %qs bei %L muss INTEGER oder PROCEDURE seinArgument %qs des intrinsischen %qs bei %L muss INTEGER oder REAL seinArgument %qs des intrinsischen %qs bei %L muss INTEGER, REAL oder CHARACTER seinArgument %qs des intrinsischen %qs bei %L muss INTEGER, REAL, CHARACTER oder UNSIGNED seinArgument %qs des intrinsischen %qs bei %L muss INTEGER, REAL oder UNSIGNED seinArgument %qs des intrinsischen %qs bei %L muss INTEGER oder UNSIGNED seinArgument %qs der intrinsischen Funktion %qs bei %L muss INTEGER, LOGICAL oder ein BOZ-Literal seinArgument %qs des intrinsischen %qs bei %L muss INTEGER, REAL oder UNSIGNED seinArgument %qs des intrinsischen %qs bei %L muss REAL oder COMPLEX seinArgument %qs des intrinsischen %qs bei %L muss ein POINTER seinArgument %qs des intrinsischen %qs bei %L muss ein POINTER oder ein TARGET seinArgument %qs des intrinsischen %qs bei %L muss POINTER, ALLOCATABLE oder Prozedurzeiger seinArgument %qs des intrinsischen %qs bei %L muss eine Konstante seinArgument %qs des intrinsischen %qs bei %L muss eine DatenentitÃ¤t seinArgument %qs des intrinsischen %qs bei %L muss ein logisches Feld seinArgument %qs des intrinsischen %qs bei %L muss ein Zeiger oder Ziel VARIABLE oder FUNCTION seinArgument %qs des intrinsischen %qs bei %L muss ein Skalar seinArgument %qs des intrinsischen %qs bei %L muss eine Variable seinArgument %qs des intrinsischen %qs bei %L muss ein Feld seinArgument %qs des intrinsischen %qs bei %L muss austauschbare DatenentitÃ¤t sein: %sArgument %qs des intrinsischen %qs bei %L muss ein Standard-Real seinArgument %qs des intrinsischen %qs bei %L muss doppelte Genauigkeit habenArgument %qs fÃ¼r intrinsisches %qs bei %L muss geringer als Rang %d seinArgument %qs des intrinsischen %qs bei %L muss numerisch oder LOGICAL seinArgument %qs des intrinsischen %qs bei %L muss eine Scheinvariable seinArgument %qs des intrinsischen %qs bei %L darf von der Art nicht breiter als der Standard (%d) seinArgument %qs des intrinsischen %qs bei %L muss eine OPTIONALe Scheinvariable seinArgument %qs des intrinsischen %qs bei %L muss erweiterbaren Typ habenArgument %qs des intrinsischen %qs bei %L muss ein intrinsischer Typ seinArgument %qs des intrinsischen %qs bei %L muss von der Art %d seinArgument %qs des intrinsischen %qs bei %L muss vom Rang %d seinArgument %qs des intrinsischen %qs bei %L muss vom Rang 1 oder 2 seinArgument %qs des intrinsischen %qs bei %L muss positiv seinArgument %qs des intrinsischen %qs bei %L muss von der selben Art wie %qs seinArgument %qs des intrinsischen %qs bei %L muss vom gleichen Typ und gleicher Art wie %qs seinArgument %qs des intrinsischen %qs bei %L muss ein numerischer Typ sein%qs-Argument des intrinsischen %qs bei %L muss vom Typ REAL oder INTEGER seinArgument %qs des intrinsischen %qs bei %L muss mindestens die LÃ¤nge 1 habenArgument %qs des intrinsischen %qs bei %L muss den selben Rang wie %qs haben oder skalar seinArgument %qs des intrinsischen %qs bei %L darf nicht OPTIONAL seinArgument %qs des intrinsischen %qs bei %L darf kein Unterobjekt von %qs seinArgument %qs des intrinsischen %qs bei %L darf nicht vorhanden sein, wenn %<x%> COMPLEX istArgument %qs des intrinsischen %qs bei %L muss mindestens so viele Elemente haben wie es .TRUE.-Werte %qs (%ld/%d) gibtArgument %qs des intrinsischen %qs bei %L ist noch nicht unterstÃ¼tzt%qs-Argument des intrinsischen %qs bei %L darf nur vorkommen, wenn %qs vom Typ REAL und %qs vom Typ INTEGER oder UNSIGNED istArgument %qs des intrinsischen %qs bei %L muss vom Typ integer, read oder character seinArgument %qs des intrinsischen %qs bei %L muss vom Typ CHARACTER(KIND=C_CHAR) seinArgument %qs des intrinsischen %qs bei %L muss vom gleichen Typ und gleicher Art wie %qs bei %L seinArgument %qs des intrinsischen %qs bei %L darf nicht TYPE(*) seinArgument %qs des intrinsischen %qs bei %L darf nicht UNSIGNED seinArgument %qs des intrinsischen %qs bei %L darf keine Prozedur seinArgument %qs des intrinsischen %qs bei %L darf kein Feld impliziter GrÃ¶ÃŸe seinArgument %qs des intrinsischen %qs bei %L darf keinen Koindex habenArgument %qs des intrinsischen %qs bei %L muss eine gÃ¼ltige Ganzzahlart seinArgument %qs des intrinsischen %qs bei %L muss Rang %d haben oder ein Skalar seinArgument %qs referenziert Nicht-Zeiger-Operanden (Argument %lu, Operand %lu)Argument %qs mit Operandennummer auÃŸerhalb des Wertebereiches (Argument %lu, Operand %lu)%qs als Basis, es ist jedoch ein Nicht-Register erforderlich%qs bei %C ist eine DEC-Erweiterung, muss mit %<-fdec-structure%> eingeschaltet werden%qs bei %C ist bereits als FINAL-Prozedur definiert%qs bei %C ist kein Element der Struktur %qs%qs bei %C ist kein Element der Struktur %qs; meinen Sie %qs?%qs bei %C ist keine Variable%qs bei %C ist keine Ermittlungsreferenz auf eine intrinsische Typkomponente%qs bei %C ist keine Ermittlungsreferenz auf eine intrinsische Typkomponente %qs%qs bei %C ist der Name einer rekursiven Funktion und verweist damit auf die Ergebnisvariable. FÃ¼r direkte Rekursion, eine explizite RESULT-Variable verwenden (12.5.2.1)%qs bei %L wurde bereits bei %L initialisiert%qs ist bei %L mit Ausdruck verbunden und kann nicht in Variablen-Definitionskontext (%s) verwendet werden%qs bei %L ist mit einer Zeigerfunktion verbunden, die in einem Variablendefinitionskontext verwendet wird (%s)%qs ist bei %L mit vektorindiziertem Ziel verbunden und kann nicht in Variablen-Definitionskontext (%s) verwendet werden%qs bei %L kann nicht in COMMON auftreten [F2008:C5100]%qs bei %L kann nicht das VALUE-Attribut haben, da es kein Scheinargument ist%qs bei %L hat %d, erfordert aber %d Scheinargumente der Art %<omp_interop_kind%>, da es mit der %<append_args%>-Klausel bei %L verwendet wird%qs bei %L hat einen Typen, der nicht zum CALL bei %L passt%qs bei %L hat auÃŸerhalb seines INTERFACE-KÃ¶rpers spezifizierte Attribute%qs bei %L hat Attribut CONTIGUOUS, aber ist kein Feldzeiger oder Feld vermuteter GrÃ¶ÃŸe oder Rang%qs bei %L in %qs-Klausel muss eine skalare Ganzzahlvariable der Art %<omp_interop_kind%> sein%qs bei %L in der %qs-Klausel muss definierbar sein%qs bei %L ist eine Redefinition der Deklaration in der entsprechenden Schnittstelle fÃ¼r MODUL PROCEDURE %qs%qs bei %L ist mehrdeutig%qs bei %L ist ein Feld und OPTIONAL; wenn es fehlt, kann es nicht das effektive Argument einer ELEMENTAL-Prozedur sein, es sei denn, es gibt ein nicht-optionales Argument mit demselben Rang (Fortran 2018, 15.5.2.12)%qs bei %L ist Host-verbunden bei %L in eine enthaltene Prozedur mit einer gleichnamigen internen Prozedur%qs bei %L ist kein VALUE%qs bei %L ist keine Funktion%qs bei %L ist keine Modulprozedur%qs bei %L ist vom ABSTRACT-Typ %qs%qs bei %L ist Teil des gemeinsamen Blocks %</%s/%> und kann nur implizit Ã¼ber den genannten gemeinsamen Block spezifiziert werden%qs bei %L ist mehrfach angegeben%qs bei %L darf kein Zeiger sein und auch kein nichtallozierbares skalares ganzzahliges Scheinargument der Art %<omp_interop_kind%> sein, da es mit der %<append_args%>-Klausel bei %L verwendet wird%qs bei %L muss kleiner als BIT_SIZE(%qs) sein%qs bei %L muss kleiner oder gleich BIT_SIZE(%qs) sein%qs bei %L muss kleiner oder gleich der BIT_SIZE von INTEGER(KIND=%d) sein%qs bei %L darf nicht negativ sein%qs bei %L muss in diesem Zusammenhang konstante ZeichenlÃ¤nge haben%qs bei %L muss die gleiche Anzahl formaler Argumente wie die Ã¼berschriebene Prozedur haben%qs bei %L darf nicht DEFERRED sein, da es eine Nicht-DEFERRED-Bindung Ã¼berschreibt%qs bei %L Ã¼berschreibt eine FUNCTION und muss auch eine FUNCTION sein%qs bei %L Ã¼berschreibt eine NOPASS-Bindung und muss ebenfalls NOPASS sein%qs bei %L Ã¼berschreibt eine PUBLIC-Prozedur und darf nicht PRIVATE sein%qs bei %L Ã¼berschreibt eine PURE-Prozedur und muss auch PURE sein%qs bei %L Ã¼berschreibt eine SUBROUTINE und muss auch eine SUBROUTINE sein%qs bei %L Ã¼berschreibt eine Bindung mit PASS und muss ebenfalls PASS sein%qs bei %L Ã¼berschreibt eine Nicht-ELEMENTAL-Prozedur und darf ebenfalls nicht ELEMENTAL sein%qs bei %L Ã¼berschreibt eine Prozedurbindung, die als NON_OVERRIDABLE deklariert ist%qs bei %L Ã¼berschreibt eine ELEMENTAL-Prozedur und muss auch ELEMENTAL sein%qs bei %L muss eine %<INTENT(OUT)%>-Variable sein%qs bei %L sollte eine FUNCTION sein%qs bei %L sollte eine SUBROUTINE sein%qs bei %L sollte ein Skalar vom Typ integer(kind=omp_event_handle_kind) sein%qs bei %L mit OPTIONAL-Attribut nicht unterstÃ¼tzt, wenn es mit der %<append_args%>-Klausel bei %L verwendet wirdAttribut %qs gilt nur fÃ¼r variadische FunktionenAttribut-Direktive %qs ignoriertAttribut %qs akzeptiert keine ArgumenteAttribut %qs wird ignoriertAttribut %qs wird an nicht-ISR-Funktionen ignoriertAttribut %qs wird fÃ¼r %qE in %<__builtin_has_attribute%> nicht unterstÃ¼tztAttribut %qs wird fÃ¼r %qT in %<__builtin_has_attribute%> nicht unterstÃ¼tztAttribut %qs wird in %<__builtin_has_attribute%> nicht unterstÃ¼tztAttribut %qs gilt nur fÃ¼r FunktionenAttribut %qs gilt nur fÃ¼r variadische FunktionenAttribut %qs benÃ¶tigt Prototypen mit benannten ArgumentenAttribut %qs ohne Argumente fÃ¼r einen Nicht-Prototypder abwartbare Typ %2$qT fÃ¼r %1$qs muss ein Strukturtyp sein%qs kann nicht in einem Konstanten-Ausdruck auftreten%qs kann nicht in einer typedef-Deklaration auftreten%qs kann nicht als konstanter Ausdruck ausgewertet werden, da das Argument nicht codiert werden kann%qs kann nicht als konstanter Ausdruck ausgewertet werden, da das Argument nicht interpretiert werden kann%qs kann nicht als konstanter Ausdruck ausgewertet werden, da der Typ zu groÃŸ ist%qs kann auf diesem Ziel nicht als konstanter Ausdruck ausgewertet werden%qs kann nicht mittels %<typedef%> definiert werden%qs kann bei %C nicht erweitert werden, da es BIND(C) ist%qs kann bei %C nicht erweitert werden, da es ein SEQUENCE-Typ ist%qs kann nicht mit %<-ftrivial-auto-var_init%> initialisiert werden%qs kann nicht zum Ãœbersetzen einer gemeinsam genutzten Bibliothek verwendet werden%qs kann nicht fÃ¼r Typdeklarationen verwendet werdenÂ»%sÂ« kann hier nicht verwendet werden%qs kann nicht in einer %<constexpr%>-Funktion verwendet werden%qs kann nicht in einem Konstruktor verwendet werden%qs kann nicht in einem Destruktor verwendet werden%qs kann nicht in einer Funktion mit einem abgeleiteten RÃ¼ckgabetyp verwendet werden%qs kann nicht in einer varargs-Funktion verwendet werden%qs kann nur in einem ausgewerteten Kontext verwendet werden%qs kann nicht in der Funktion %<main%> verwendet werden%qs kann nicht auÃŸerhalb einer Funktion verwendet werdenArgument der %s-Klausel bei %L muss ALLOCATABLE oder ein POINTER sein%qs-Klausel bei %L ist mehrfach angegebenKlausel %qs ist unvertrÃ¤glich mit den Klauseln %<read%> oder %<write%>%qs-Klausel darf nur bei rechteckigen %qs vorkommen%qs-Klausel erfordert %qs-Klausel%qs-Klausel darf nicht zusammen mit %<inscan%>-%<reduction%>-Klausel verwendet werden%qs-Klausel wird lexikalisch nach dem ersten Zielkonstrukt oder nach der ersten Auslagerungs-API verwendet%qs-Klausel mit %<sink%>-Modifizierer verweist auf Iteration, die niemals im Iterationsraum ist%qs-Klausel mit %<sink%>-Modifizierer wartet auf lexikalisch spÃ¤tere Iteration%qs-Klausel mit %<source%>-Modifizierer zusammen mit %qs-Klauseln mit %<sink%>-Modifizierer an demselben Konstrukt%qs mit Qualifizierer %<auto%> fÃ¼r %qE kombiniert%qs mit Qualifizierer %<register%> fÃ¼r %qE kombiniert%qs widerspricht %<-arch i386%> (%qs wird ignoriert)%qs widerspricht %<-arch ppc%> (%qs wird ignoriert)%qs-Konstrukt innerhalb einer %qs-RegionINTRINSIC deklariertes %qs bei %L existiert nicht%qs als Funktion, die eine Funktion zurÃ¼ckgibt, deklariert%qs als Funktion, die ein Feld zurÃ¼ckgibt, deklariertBei %2$L deklariertes %1$qs ist auch der Name einer intrinsischen Funktion. Sie kann nur Ã¼ber eine explizite Schnittstelle oder als EXTERNAL deklariert aufgerufen werden.Bei %2$L deklariertes %1$qs Ã¼berdeckt intrinsische Funktion mit gleichem Namen. Um die aufzurufen, sind explizite INTRINSIC-Deklarationen erforderlich.%qs in einem Nicht-Klassen-GÃ¼ltigkeitsbereich definiert%qs nicht in Klassen-GÃ¼ltigkeitsbereich definiert%qs ist definiert, ohne vorher %qs zu definierenDie %qs-Direktive bei %L, die mit einer ALLOCATE-Anweisung verbunden ist, muss eine ausfÃ¼hrbare Anweisung oder ein OpenMP-Konstrukt vorausgehen; beachten Sie, dass die Variablen in der Liste alle das Attribut allocatable oder pointer habenDie %qs-Direktive bei %L muss entweder ein Variablenargument haben oder, wenn sie mit einer ALLOCATE-Anweisung verknÃ¼pft ist, muss ihr eine ausfÃ¼hrbare Anweisung oder ein OpenMP-Konstrukt vorausgehen%qs-Direktive wird sowohl in ABSENT- als auch CONTAINS-Klauseln in %s-Direktive bei %L erwÃ¤hnt%qs-Direktive wird mehrfach in %s-Klausel in Â»%sÂ«-Direktive bei %L erwÃ¤hnt%qs unterstÃ¼tzt keinen MIPS16-Code%qs unterstÃ¼tzt %qs nicht%qs funktioniert nicht auf einem Cross-CompilerEntitÃ¤t %qs bei %L kann keine Initialisierung habenEntitÃ¤t %qs bei %C kann keine Argumente haben%qs erfordert 1 Argument, aber %d wurden angegeben%qs erwartet 2 Argumente, aber %d wurden angegeben%qs erwartet ein konstantes Argument%qs erwartet einen Festkommawert als Argument%qs erwartet einen Festkommawert als erstes Argument%qs erwartet einen Ganzzahlwert als zweites Argument%qs-Ausdruck muss ganzzahlig sein%qs-Ausdruck von %<volatile%>-qualifiziertem Typ ist veraltet%qs fehlgeschlagenFeature-Modifizierer %qs vertrÃ¤gt sich nicht mit der Verwendung von GleitkommatypenFeature-Modifizierer %qs vertrÃ¤gt sich nicht mit der Verwendung von VektortypenFunktion %qs kann keine Argumente haben%qs-Funktion kann keine andere Interrupt-Art habenFunktion %qs kann keinen Wert zurÃ¼ckgebenFunktion %qs verwendet Typspezifikation %<auto%> ohne folgenden RÃ¼ckgabetypenFunktion %qs mit nachgestelltem RÃ¼ckgabetyp hat %<decltype(auto)%> als Typ statt einfachem %<auto%>Funktion %qs mit folgendem RÃ¼ckgabetypen hat %qT als seinen Typ statt einfaches %<auto%>Funktion %qs mit nachfolgendem RÃ¼ckgabetypen hat eingeschrÃ¤nkte %<auto%>-Typangabe statt des einfachen %<auto%>Funktion %qs mit folgendem RÃ¼ckgabetypen nicht mit Typspezifikation %<auto%> deklariert%qs hat %qs%qs hat sowohl %<extern%> als auch Initialisierung%qs Ã¼bergelaufen%qs in %<%s %E%>%qs in der %s-Klausel bei %L ist ein Array-Abschnitt der GrÃ¶ÃŸe Null%qs in %s-Klausel bei %L ist kein korrekter Feldabschnitt%qs in ALIGNED-Klausel bei %L erfordert einen skalaren, positiven, konstanten Ganzzahlausdruck fÃ¼r die Ausrichtung%qs in ALIGNED-Klausel bei %L muss POINTER, ALLOCATABLE, Cray-Zeiger oder C_PTR sein%qs in EXTENDS-Ausdruck bei %C ist kein abgeleiteter Typ%qs in LINEAR-Klausel bei %L benÃ¶tigt einen konstanten, ganzzahligen linear-step-Ausdruck oder ein Dummy-Argument, das in der UNIFORM-Klausel angegeben ist%qs in LINEAR-Klausel bei %L benÃ¶tigt einen skalaren, ganzzahligen linear-step-Ausdruck%qs beginnt in der Attributsyntax, wird aber mit %qs in der Pragmasyntax abgeschlossen%qs in leerer Deklaration%qs in leerer Deklaration mit auf %<enum%> basierendem Typen%qs in GIMPLE-IL%qs beginnt in der Pragmasyntax, wird aber mit %qs in der Attributsyntax abgeschlossen%qs in Zeigerzuweisung bei %L kann kein L-Wert sein, da es eine Prozedur ist%qs in Variablen-Definitionskontext (%s) bei %L ist keine Variable%qs inkompatibel mit explizit ausgeschalteten Optionen%qs initialisiert und als %<extern%> deklariert%qs in non-mode-precision OperandenDas intrinsische Unterprogramm %qs bei %L wurde entfernt. Verwenden Sie das intrinsische Unterprogramm INT.intrinsisches %qs mit CHARACTER-Argument bei %Lintrinsisches %qs mit KIND-Argument bei %Lintrinsisches %qs mit RADIX-Argument bei %L%qs ist in der AVR-LibC ein veralteter Bezeichner. ErwÃ¤gen Sie %<#include <avr/interrupt.h>%> oder %<#include <compat/deprecated.h>%> vor der Benutzung des Makros %qs%qs ist ab %qs ein SchlÃ¼sselwort%qs ist eine geschachtelte Funktion, Zugriff von %qs aus ist nicht mÃ¶glich%qs ist in der AVR-LibC ein reservierter Bezeichner. ErwÃ¤gen Sie %<#include <avr/interrupt.h>%> vor der Benutzung des Makros %qs%qs bereits aus Host-Sichtbarkeitseinheit bei %C IMPORTiert%qs ist ein ungÃ¼ltiges Argument fÃ¼r %<-mcpu=%>%qs ist ein undurchsichtiger Typ, und Sie kÃ¶nnen ihn nicht auf andere Werte setzen%qs ist eine unbekannte Option fÃ¼r %<-save-temps%>%qs ist beschÃ¤digt%qs ist definiert, konnte aber nicht geladen werden: %s%qs ist definiert, aber die Plugin-UnterstÃ¼tzung ist deaktiviert%qs ist im Header %qs definiert; das ist wahrscheinlich behebbar, indem Sie %<#include %s%> hinzufÃ¼gen%qs ist definiert, wenn die Option %qs verwendet wird; das ist wahrscheinlich behebbar, indem Sie %qs zu den Kommandozeilenoptionen hinzufÃ¼gen%qs ist veraltet%qs ist veraltet und wird unter keinen UmstÃ¤nden empfohlen%qs ist veraltet; stattdessen %<-fno-zero-initialized-in-bss%> verwenden%qs ist veraltet; stattdessen %<-fstack-check%> verwenden%qs wird durch %<-m%s%> ausgeschaltet, da es %<%s%s%> erfordert%qs vertrÃ¤gt sich nicht mit %<-mword-relocations%>%qs ist mit %qs unvertrÃ¤glich%qs vertrÃ¤gt sich nicht mit der Verwendung von Gleitkommatypen%qs vertrÃ¤gt sich nicht mit der Verwendung von Vektortypen%qs ist geladen, aber das Symbol %qs wurde nicht gefunden: %s%qs und %qs schlieÃŸen sich gegenseitig aus und kÃ¶nnen nicht zusammen angegeben werden%qs ist schmaler als die Werte seines Typsin der gepunkteten Zeichenkette ist %qs weder ein definierter Operator noch eine Strukturkomponente, bei %C%qs ist kein konstanter Ausdruck, da %qT einen Zeiger-auf-Element-Typen enthÃ¤lt%qs ist kein konstanter Ausdruck, da %qT einen Zeigertyp enthÃ¤lt%qs ist kein konstanter Ausdruck, da %qT einen Referenztypen enthÃ¤lt%qs ist kein konstanter Ausdruck, da %qT einen union-Typen enthÃ¤lt%qs ist kein konstanter Ausdruck, da %qT ein %<volatile%>-Teilobjekt enthÃ¤lt%qs ist kein konstanter Ausdruck, da %qT ein Zeiger-auf-Element-Typ ist%qs ist kein konstanter Ausdruck, da %qT ein Zeigertyp ist%qs ist kein konstanter Ausdruck, da %qT ein Referenztyp ist%qs ist kein konstanter Ausdruck, da %qT ein union-Typ ist%qs ist kein konstanter Ausdruck, da %qT %<volatile%> ist%qs ist kein Verzeichnis%qs ist kein Feld, sondern ein %qs%qs ist keine gcov-Datei%qs ist weder ein gÃ¼ltiger Name einer Modula-2-Systembibliothek noch eine AbkÃ¼rzung dafÃ¼r%qs ist kein gÃ¼ltiges Basisregister in %<-mstack-protector-guard-reg=%>%qs ist in %qs kein gÃ¼ltiges Basisregister%qs ist keine gÃ¼ltige Zahl in %<-mstack-protector-guard-offset=%>%qs ist in %qs keine gÃ¼ltige Zahl%qs ist kein gÃ¼ltiger Offset in %<-mstack-protector-guard-offset=%>%qs ist in %qs kein gÃ¼ltiger Offset%qs ist keine gÃ¼ltige PrÃ¤prozessoroption%qs ist kein assoziatives Array%qs ist kein Ausdruck%qs ist kein intrinsischer Wert, der von Â»inlineÂ« steuerbar ist%qs ist keine Option, die Warnungen steuert%qs ist nicht als ein Typ definiert%qs wird von der Architektur %qs nicht unterstÃ¼tzt%qs wird fÃ¼r 64-Bit-Darwin nicht unterstÃ¼tzt; es ist mit den installierten C- und C++-Bibliotheken unvertrÃ¤glich%qs wird auf diesem Ziel nicht unterstÃ¼tzt%qs wird im 32-Bit-Modus nicht unterstÃ¼tzt%qs wird von dieser Compiler-Konfiguration nicht unterstÃ¼tzt%qs wird in dieser Konfiguration nicht unterstÃ¼tzt%qs wird auf Â»little endianÂ«-Systemen nicht unterstÃ¼tzt%qs wird auf diesem Ziel nicht unterstÃ¼tzt%qs wird mit %qs nicht unterstÃ¼tzt%qs wird nicht unterstÃ¼tzt, das cmodel ist auf %qs festgelegtungÃ¼ltiger Wert %qs fÃ¼r %<-mmacosx-version-min%>%qs ist fÃ¼r %qs ungÃ¼ltig%qs hat PRIVATE-Typ und kann kein Scheinargument von %qs bei %L sein, das PUBLIC ist%qs wird nur unterstÃ¼tzt, wenn %<-mrvv-vector-bits=zvl%> angegeben ist%qs ist nicht initialisiert, wird aber benutzt%qs hat Version %q.*s, Version %q.*s erwartetAusdruck fÃ¼r %qs-LÃ¤nge muss ganzzahlig seinAusdruck fÃ¼r %qs-LÃ¤nge muss ganzzahlig, positiv und konstant sein%qs wird in der Anweisung %<allocate%> bei %L aufgefÃ¼hrt, ist aber weder explizit in der Direktive %<!$OMP ALLOCATE%> aufgefÃ¼hrt noch existiert eine Richtlinie ohne Argumentenliste%qs-Matchingvariante ist veraltetpassende %qs-Variante erfordert z14 oder hÃ¶herpassende %qs-Variante erfordert z15 oder hÃ¶herpassende %qs-Variante erfordert z17 oder hÃ¶her%qs kÃ¶nnte uninitialisiert verwendet werden%qs kann nur mit einem einzelnen Deklarator verwendet werden%qs bei %L muss eine Modulprozedur oder eine externe Prozedur mit expliziter Schnittstelle sein%qs muss fÃ¼r sich allein stehen, fÃ¼r %<-mharden-sls=%>%qs muss vom gleichen Typ und gleicher Art wie %qs bei %L in %qs sein%qs muss die erste Klausel von %qs sein%qs muss mit %qs verwendet werden%qs darf nicht bei %L in einer Feldspezifikation in der gleichen ALLOCATE-Anweisung auftreten, wo es selbst alloziert wird%qs erfordert ein gÃ¼ltiges Basisregister%qs ist auÃŸerhalb der STRUCTURE bei %C nicht erlaubt%qs nicht an Elementgrenze%qs wird vom Assembler nicht unterstÃ¼tzt%qs wird in Kombination mit %<-msoft-float%> nicht unterstÃ¼tzt%qs wird noch nicht unterstÃ¼tzt%qs von %qs bei %L ist PRIVATEDas %qs von Modul %qs, das bei %C importiert wurde, ist auch der Name der aktuellen ProgrammeinheitOperand von %qs ohne Modus-Genauigkeit%qs wird nur in OpenACC-Code unterstÃ¼tzt%qs unterstÃ¼tzt nicht-PIC-Code nur auf M-Profil-Zielen%qs unterstÃ¼tzt nicht-PIC-Code nur auf M-Profil-Zielen mit dem MOVT-BefehlOperand fÃ¼r %qs hat keinen Ganzzahltypdie Option %qs kann nur fÃ¼r Offload-Compiler angegeben werdenParameterabfrage %qs fÃ¼r %qs in Variablen-Definitionskontext (%s) bei %LPlugin %qs steht nicht unter einer GPL-kompatiblen LizenzZeiger %qs ist nullDatei fÃ¼r ProfilingzÃ¤hlerdaten %qs wurde nicht gefundenEigenschaft %qs kann nicht gesetzt werden%qs-Region darf nicht innerhalb einer Region eng geschachtelt sein, die arbeitsteilend, %<loop%>, explizit %<task%> oder %<taskloop%> ist%qs erfordert UnterstÃ¼tzung des Typs %<__ibm128%>%qs erfordert, dass %<long double%> das IBM-128-Bit-Format ist%qs erfordert %qs%qs erfordert %qs oder %qs%qs erfordert PowerPC64-Architektur, wird eingeschaltet%qs erfordert VSX-UnterstÃ¼tzung%qs erfordert ein Ziel, das den %qs-Befehl unterstÃ¼tzt%qs benÃ¶tigt eine initialisierte Datendeklaration%qs erfordert eine konstante Ganzzahl%qs erfordert einen konstanten Ganzzahlausdruck%qs erfordert sprungwahrscheinliche Befehle%qs erfordert vollstÃ¤ndige UnterstÃ¼tzung von ISA 2.06%qs erfordert vollstÃ¤ndige UnterstÃ¼tzung von ISA 3.0%qs erfordert Gleitkomma-Arithmetik mit VierfachprÃ¤zision%qs erfordert die Optionen %qs und %qs%qs erfordert die Option %qs%qs erfordert die Option %qs, zusÃ¤tzlich entweder %qs oder %qs%qs sollte %qs sein, um eine Templateargumentliste zu beenden%qs sollte von einem Skalar auf einen gleichartigen Vektor abbildendurch %qs angegebene Grenze %s Ã¼berschreitet die maximale ObjektgrÃ¶ÃŸe %Edurch %qs angegebene Grenze %s Ã¼berschreitet die GrÃ¶ÃŸe %E des nicht abgeschlossenen Arraysdurch %qs angegebene Grenze %s Ã¼berschreitet die MaximalgrÃ¶ÃŸe %E des nicht abgeschlossenen Arraysdurch %qs angegebene Grenze %s Ã¼berschreitet mÃ¶glicherweise die MaximalgrÃ¶ÃŸe %E des nicht abgeschlossenen Arrays%qs fÃ¼r Â»autoÂ«-Variable %qE angegeben%qs fÃ¼r Parameter %qE angegeben%qs fÃ¼r Strukturfeld angegeben%qs fÃ¼r Strukturfeld %qE angegeben%qs fÃ¼r unbenannten Parameter angegeben%qs ist in %<allocate%> bei %L angegeben, aber nicht in der verknÃ¼pften ALLOCATE-Anweisung%qs ist in %<allocate%>-Klausel bei %L angegeben, aber nicht in einer expliziten Privatisierungs-Klausel%qs ist in derselben Option mehrfach angegeben%qs mit %<decltype%> angegeben%qs mit %<typeof%> angegeben%qs mit %qT angegeben%qs mit typedef-name %qD angegeben%qs gibt eine widersprÃ¼chliche Stufe der ParallelitÃ¤t ander Operand %2$qE der %1$qs Anweisung bezieht sich auf eine Schleife auÃŸerhalb ihres KÃ¶rpersZeichenkette %qs ist falsch geformt%qs-Symbol %q+D muss statische Bindung haben%qs-Symbol %q+D zielt letztendlich auf sich selbst abMarkierung %qs bei Benennung von %q#T verwendet%qs wird in dieser ABI nicht unterstÃ¼tzt%qs mit %<auto%> verwendet%qs mit %qE verwendet%qs verwendet dynamische Stapelanforderung%qs verwendet Register r29Wert %qs muss positiv seinVariable %qs ist weder Zeiger noch ArrayVariable %qs ist weder Zeiger noch Referenz auf ZeigerVariable %qs ist weder Zeiger noch Array noch Referenz auf Zeiger oder ArrayVariable %qs muss ein Zeiger sein%qs wurde hier deklariert%qs ohne entsprechendes %qs%s: [%u] Falsches %<next_regno%> fÃ¼r leere Kette (%u)%s: [%u] Falsches %<oldest_regno%> (%u)%s: [%u] Nicht leeres Register in Kette (%s %u %i)%s: Zyklus in %<next_regno%>-Kette (%u)%r%s:%d:%R   %r%s:%d:%d:%R   %s%s
  %s ist identisch mit %s.Â»%s !$ACC LOOPÂ«-Schleifen bei %L nicht perfekt geschachtelt%s %#qD%s %#qS%s %<%s(%E)%> %p %d%s %e erwartet ein passendes Argument %e%s %e erwartet Argumenttyp %e, aber Argument %d hat Typ %eÂ»%s %EÂ« implementiert das Protokoll %qE nicht vollstÃ¤ndig%s %qT benÃ¶tigt die V-ISA-Erweiterung%s %qT benÃ¶tigt mindestens die VektorlÃ¤nge %qd, aber %qd ist gegeben%s %qT benÃ¶tigt die ISA-Erweiterung zve32f, zve64f, zve64d oder v%s %qT benÃ¶tigt die ISA-Erweiterung zve64d oder v%s %qT benÃ¶tigt die ISA-Erweiterung zve64x, zve64f, zve64d oder v%s %qT benÃ¶tigt die ISA-Erweiterung zvfhmin oder zvfh%s %qs%s-%qs-Konstrukt innerhalb einer %s-%qs-Region%s %qs ist ein ungÃ¼ltiges Argument fÃ¼r eingebaute Funktion %qs%s %s %p %d%s %s%s
  Â»%sÂ« %wd ist auÃŸerhalb des gÃ¼ltigen Bereichs von %wd bis %wd%s: Â»%sÂ«
! %s â€“ %u-Bit-Ganzzahlen werden nicht unterstÃ¼tzt (Modus %qs)%s â€“ Komplexe Gleitkommazahlen mit %u Bit Genauigkeit werden nicht unterstÃ¼tzt (Modus %qs)%s â€“ Dezimale Gleitkommazahlen mit %u Bit Genauigkeit werden nicht unterstÃ¼tzt (Modus %qs)%s â€“ Gleitkommazahlen mit %u Bit Genauigkeit werden nicht unterstÃ¼tzt (Modus %qs)nicht unterstÃ¼tzter Modus %2$qs fÃ¼r %1$qsArgument Â»%sÂ« fÃ¼r IMAGE_INDEX muss Feld mit Rang 1 bei %L sein%s bei %C ist eine DEC-Erweiterung, muss mit %<-fdec%> eingeschaltet werden%s bei %C ist eine DEC-Erweiterung, muss mit %<-fdec-static%> eingeschaltet werden%s bei %C ist eine DEC-Erweiterung, muss mit %<-fdec-structure%> eingeschaltet werden%s bei %L%s bei %L hat keinen Vorgabe-Typ%s bei %L ist eine DEC-Erweiterung, muss mit %<-fdec-static%> eingeschaltet werden%s bei %L muss INTEGER sein%s bei %L muss skalar sein%s bei %L muss ganzzahlig seinAttribut %s auf %s %s bei %L angewendetAttribut %s bei %L ist auÃŸerhalb des Spezifikationsabschnitts eines Moduls nicht erlaubtAttribut %s steht mit Attribut %s bei %L in KonfliktAttribut %s steht mit Attribut %s in %qs bei %L in KonfliktAttribut %s ungÃ¼ltig in BLOCK DATA - Programmeinheit bei %LAttribut %s von %qs steht mit Attribut %s bei %L in Konflikt%s zwischen %L und %L%s zwischen der MODULE-PROCEDURE-Deklaration in Modul %qs und der Deklaration bei %L in (SUB)MODULE %qs%s kann bei %L keine DO-CONCURRENT-Schleife sein%s kann weder DO WHILE noch DO sein, ohne Schleifensteuerung bei %LÂ»%sÂ« kann nicht hier in %<asm%> verwendet werden%s kann keinen OpenMP-API-Aufruf im dazwischenliegenden Code bei %L enthalten%s kann keine OpenMP-Direktive im dazwischenliegenden Code bei %L enthalten%s kann keine Schleife im dazwischenliegenden Code bei %L enthaltenKlausel %s bei %L erfordert einen skalaren INTEGER-Ausdruck%s-Klausel-Variable %qs bei %L ist weder Zeiger- noch Feldtyp%s enthÃ¤lt zu viele Zeilen%s unterstÃ¼tzt %%n$-Operandennummerformate nicht%s unterstÃ¼tzt %s nicht%s unterstÃ¼tzt %s mit dem Format %<%%%c%> %s nichtInterner Fehler: %s does not support block_ends_with_call_pInterner Fehler: %s does not support block_ends_with_condjump_pInterner Fehler: %s does not support can_duplicate_block_pInterner Fehler: %s does not support can_merge_blocks_pInterner Fehler: %s does not support can_remove_branch_pInterner Fehler: %s does not support create_basic_blockInterner Fehler: %s does not support delete_basic_blockInterner Fehler: %s does not support dump_bb_for_graphInterner Fehler: %s does not support duplicate_blockInterner Fehler: %s does not support flow_call_edges_addInterner Fehler: %s does not support force_nonfallthruInterner Fehler: %s does not support make_forwarder_blockInterner Fehler: %s does not support merge_blocksInterner Fehler: %s does not support move_block_afterInterner Fehler: %s does not support predict_edgeInterner Fehler: %s does not support predicted_by_pInterner Fehler: %s does not support redirect_edge_and_branchInterner Fehler: %s does not support redirect_edge_and_branch_forceInterner Fehler: %s does not support split_blockInterner Fehler: %s does not support split_edge%s unterstÃ¼tzt das Format %<%%%c%> fÃ¼r %s nicht%s unterstÃ¼tzt das Format %<%%%s%c%> fÃ¼r %s nicht%s unterstÃ¼tzt den LÃ¤ngenmodifizierer %qs fÃ¼r %s nicht%s akzeptiert keine FeatureoptionenÂ»%sÂ« mit Status %d beendet%s erwartet eine Ganzzahlkonstante zur Kompilierzeit%s erwartet eine Ganzzahlkonstante mit dem Wert 0x01, 0x7f, 0x80 oder 0xfe als erstes Argument%s erwartet eine Long-Ganzzahlkonstante als erstes Argument zur KompilierzeitAusdrucksliste fÃ¼r Â»%sÂ« wird als zusammengesetzten Ausdruck behandelt%s aus %s wird in %s aufgerufen%s aus %s wird in %s referenziert%s ignoriert mit %s und Format %<%%%c%> fÃ¼r %s%s ignoriert mit %s im Format fÃ¼r %s%s innere Schleifen bei %L mÃ¼ssen perfekt geschachtelt sein%s innere Schleifen mÃ¼ssen perfekt verschachtelt sein mit ORDERED-Klausel bei %L%s innere Schleifen mÃ¼ssen perfekt verschachtelt sein mit REDUCTION-INSCAN-Klausel bei %L%s-Befehle sind in Funktionen mit %<no_caller_saved_registers%>-Attribut nicht erlaubt%s-Befehle sind in Exception-Serviceroutine nicht erlaubt%s-Befehle sind in Interrupt-Serviceroutine nicht erlaubt%s wird von dieser Konfiguration nicht unterstÃ¼tzt%s-Iterationsvariable bei %L ist im dazwischenliegenden Code gebunden%s-Iterationsvariable bei %L muss vom Typ integer sein%s-Iterationsvariable bei %L darf nicht THREADPRIVATE sein%s-Iterationsvariable bei %L an anderer Klausel als PRIVATE, LASTPRIVATE oder ALLOCATE gefunden%s-Iterationsvariable bei %L an anderer Klausel als PRIVATE, LASTPRIVATE, ALLOCATE oder LINEAR gefunden%s-Iterationsvariable bei %L wird in mehr als einer Schleife verwendetGrenzen der Â»%sÂ«-Schleife bei %L verweisen auf unterschiedliche IterationsvariablenAusdruck %s bei %L fÃ¼r das Ende der Schleife verwendet eine im dazwischenliegenden Code gebundene VariableEndausdruck der Â»%sÂ«-Schleife bei %L ist nicht in kanonischer Form%s-Schleifeninkrementausdruck bei %L verwendet eine im dazwischenliegenden Code gebundene VariableSchleifeninkrement %s bei %L hat nicht die kanonische Form%s-Schleifenstartausdruck bei %L verwendet im dazwischenliegenden Code gebundene VariableSchleifenstartausdruck %s bei %L hat nicht die kanonische Form%s bei %L muss mindestens eine MAP-Klausel enthalten%s-Namensraum %qD widerspricht der Erreichbarkeits-Definition%s wird fÃ¼r Aggregattypen mit variabler LÃ¤nge nicht unterstÃ¼tzt%s wird auf diesem Ziel nicht unterstÃ¼tztOperand Â»%sÂ« kann nicht als %%i-E/A-Adressoperand verwendet werden%s auÃŸerhalb des Wertebereiches: Bereich ist %i bis %i, Wert ist %iÂ»%sÂ« mit PID %ld wurde beendet durch %sProzedur %s bei %L ist bereits als Prozedur %s deklariert%s-Prozedur bei %L ist bereits als %s-Prozedur deklariert.
! F2008: Eine Zuweisung an eine Zeigerfunktion ist mehrdeutig, wenn dies die erste Anweisung nach dem Spezifikationsblock ist. Bitte fÃ¼gen Sie davor irgend eine andere ausfÃ¼hrbare Anweisung ein. FIXME (steht so im englischen Original.)%s gab Ende-Status %d zurÃ¼ckInterner Fehler: %s should not be nullSignal %s hat Programm %s beendetSpezifizierer %s in Anweisung %s bei %L hat ungÃ¼ltigen Wert %qsSpezifizierer %s in Anweisung %s bei %L hat Wert %qsAnweisung %s bei %C kann nicht auf Anweisung %s bei %L folgenAnweisung %s bei %C kann keine DO-Schleife ohne Block beendenAnweisung %s bei %C folgt einer anderen ZugriffsspezifikationAnweisung %s bei %C in PURE-ProzedurAnweisung %s bei %C nicht auf Konstrukt %qs anwendbarAnweisung %s bei %C ist nicht innerhalb eines KonstruktsAnweisung %s bei %C nicht innerhalb des Konstrukts %qsAnweisung %s bei %C hinterlÃ¤sst CRITICAL-KonstruktAnweisung %s bei %C hinterlÃ¤sst DO CONCURRENT-KonstruktAnweisung %s bei %C verlÃ¤sst OpenACC-strukturierten BlockAnweisung %s bei %C verlÃ¤sst OpenMP-strukturierten Block%s-Anweisung bei %L erwartet%s-Anweisung ist innerhalb von BLOCK DATA bei %C nicht erlaubt%s-Anweisung ist innerhalb eines BLOCKs bei %C nicht erlaubtAnweisung %s muss in einem MODULE auftreten%s-Anweisung in PURE-Prozedur bei %C nicht erlaubt%s-Anweisungen bei %L und %L haben beide kein Listenelement, aber nur eine darf%s-SymbolMarkierung %s bei %L muss Standard-Zeichenkette seinMarkierung %s bei %L muss vom Typ %s seinMarkierung %s bei %L muss ein Skalar sein%s-Symbol mit INQUIRE%s mit Signal %d [%s]%s beendet%s verwendet mit Format %<%%%c%> %s%s wird innerhalb von %%<â€¦%%> verwendetÂ»%sÂ«-Variable %qE ist im Ã¤uÃŸeren Kontext Â»privateÂ«%s%#qD%s%#qD (gelÃ¶scht)%s%#qD (ignoriert)%s%#qD (in der NÃ¤he der Ãœbereinstimmung)%s%#qD (umgekehrt)%s%#qD (umgeschrieben)%s%<%D(%T)%> (eingebaut)%s%<%D(%T, %T)%> (eingebaut)%s%<%D(%T, %T, %T)%> (eingebaut)%s%qT (Umwandlung)%s%qs%s ist ungÃ¼ltig%s%qs%s ist nicht erlaubt%s%s%s %sVersion %s (%s)
  %s	kompiliert von GNU-C-Version %s, %s%s%s %sVersion %s (%s) kompiliert von CC, %s%s%sIn Instanziierung von %q#D:
  %s%s%sIn Ersetzung von %qS:
  %s%sGGC-Heuristik: --param ggc-min-expand=%d --param ggc-min-heapsize=%d
  %s%sWarnung: %s-Header-Version %s unterscheidet sich von Bibliotheksversion %s.
! Interner Fehler: %s(%s) improperly has a non-null %<var_decl_node%>%s-%s ist ein leerer Bereich%s: %<-fcompare-debug%> ist fehlgeschlagen%s: %<-fcompare-debug%> ist fehlgeschlagen (LÃ¤nge)Interner Fehler: %s: %<field->type%> %s must be literal or alphanumericInterner Fehler: %s: %d %qs has NULL ancestorInterner Fehler: %s: %d %s is a table, but it improperly has a capacity of zeroInterner Fehler: %s: %d %s<%s> improperly has a data.capacity of zero%s: %d Basis-BlÃ¶cke und %d Kanten/Basis-BlÃ¶cke%s: %d BasisblÃ¶cke und %d Register; erhÃ¶hen Sie %<--param max-gcse-memory%> auf mehr als %wu%s: %m%s: %s%s: %s-Compiler ist auf diesem System nicht installiertInterner Fehler: %s: %s is its own ancestor%s: %s: %sInterner Fehler: %s: Invalid field type %s:Interner Fehler: %s: Knows not the variable type %s for %s%s: PCH-Datei war ungÃ¼ltigInterner Fehler: %s: What in the name of Nero are we doing here?%s: Alle Warnungen werden als Fehler behandeltInterner Fehler: %s: asked to sort %s, which is not a table%s: Versuch, Spezifikation %qs in bereits definierte Spezifikation %qs umzubenennenInterner Fehler: %s: called with NULL *fieldInterner Fehler: %s: called with NULL *file%s kann nicht als COFF-Datei geÃ¶ffnet werden%s: GrÃ¶ÃŸe der Vergleichs-PrÃ¼fdatei %s konnte nicht ermittelt werden%s: Vergleichs-PrÃ¼fdatei %s konnte nicht geÃ¶ffnet werden%s: PCH-Datei konnte nicht geÃ¶ffnet werden: %mInterner Fehler: %s: for %s called with NULL %<field->var_decl_node%>Interner Fehler: %s: for %s called with NULL %<file->var_decl_node%>%s: intrinsische Funktion %qs nicht gefunden%s: ungÃ¼ltiger Funktionsbeschreibungstyp Â»%cÂ«%s: SchlÃ¼ssel muss Feld sein%s: Binder-Eingabedatei nicht gefunden: %m%s: Eingabedatei des Binders unbenutzt, da das Binden nicht durchgefÃ¼hrt wird%s: keine COFF-Datei%s: regcomp: %s%s: section %s.%d is missing%s: Einige Warnungen werden als Fehler behandeltInterner Fehler: %s: syntax error: both (or neither) GIVING and output-proc are specifiedInterner Fehler: %s: syntax error: both (or neither) USING and input-proc are specifiedInterner Fehler: %s: syntax error: both (or neither) files and output-proc are specifiedInterner Fehler: %s:%d file %s 'sequentially' is %d in %sInterner Fehler: %s:%d file %s 'where' is zero in %sInterner Fehler: %s:%d file %s access mode is %<file_inaccessible_e%> in %sInterner Fehler: %s:%d file %s is INDEXED/SEQUENTIAL, but 'sequentially' is falseInterner Fehler: %s:%d file %s is RELATIVE/RANDOM, but %<where < 0%>Interner Fehler: %s:%d file %s is RELATIVE/SEQUENTIAL, but %<where >= 0%>Interner Fehler: %s:%d: %u exceeds %<MAXIMUM_UNTILS%> of %d, line %dInterner Fehler: %s:%d: LblNone '%s' has parent #%zu%s:%d: durch frÃ¼here Fehler verwirrt, Abbruch
! %s:%d: Â»%sÂ« konnte nicht hinzugefÃ¼gt werdenInterner Fehler: %s:%d: ignoring subscripts%s:%d: ungÃ¼ltiger %<symbol_type_t%> %d%s:%d:%sInterner Fehler: %s:%d:assertion of condition %qs failedInterner Fehler: %s:%d:condition %s failedInterner Fehler: %s:%d:the value %s is not a BOOLEAN as the value is %d%s:%s: %E: %E%s: Â»%sÂ« hat BÃ¶gen vom Eintrittsblock
  %s: Â»%sÂ« hat BÃ¶gen zum Eintrittsblock
  %s: Eintrag und/oder Exit-BlÃ¶cke fehlen in Â»%sÂ«
  %s: bereits gesehene BlÃ¶cke fÃ¼r Â»%sÂ«
*************** F2008: Eine Zuweisung an eine Zeigerfunk
*** 2377,2506 ****
  %s: Version Â»%.4sÂ«, aber Â»%.4sÂ« wird bevorzugt
  %s: Version Â»%.4sÂ«, aber Version Â»%.4sÂ« wird bevorzugt
  Spezifizierer %sbei %L ist in OPEN-Anweisung fÃ¼r unformatierte Ein-/Ausgabe nicht erlaubt%u Name fÃ¼r strukturelle Bindung angegeben%u Namen fÃ¼r strukturelle Bindung angegebenÂ«Â» Â«-KennzeichenÂ»!Â«-KennzeichenÂ»#Â«-KennzeichenÂ»%%%cÂ« ist kein gÃ¼ltiger OperandenprÃ¤fixÂ»%%&Â« ohne lokale dynamische TLS-Referenzen verwendetÂ»%%lÂ«-Operand ist keine MarkeDie Datei Â»%sÂ« wird bereits verarbeitet
! Â»%sÂ« ist keine gÃ¼ltige explizite konkrete SemantikÂ»%sÂ« muss %d Operanden haben (auÃŸer match_dups)Â»%sÂ« muss mindestens %d Operanden haben (auÃŸer match_dups)Â»%sÂ« darf hÃ¶chstens %d Operanden haben (auÃŸer match_dups)Â»%sÂ« erfordert die ISA-Option %sÂ»'Â«-KennzeichenÂ»(Â«-KennzeichenÂ»+Â«-KennzeichenÂ»-Â«-KennzeichenÂ»0Â«-KennzeichenÂ»BÂ«-Operand hat mehrere gesetzte BitsÂ»BÂ«-Operand ist nicht konstantÂ»EÂ«-ModifiziererÂ»IÂ«-KennzeichenÂ»OÂ«-ModifiziererÂ»^Â«-KennzeichenÂ»_Â«-KennzeichenÂ»aÂ«-KennzeichenÂ»hÂ«-Operand ist kein SImode-RegisterÂ»mÂ«-KennzeichenÂ»oÂ«-Operand ist nicht konstantÂ»qÂ«-Kennzeichen(C)(F202y)Fehlende oder ungÃ¼ltige Grenze in der ASSOCIATE-Rangzuordnung des assoziierten Namens %s bei %L(Obsolet nach 10.3.9)	MH_NOPREFIXBINDING festlegen, in einer ausfÃ¼hrbaren Datei.(Obsolet nach 10.4)	MH_NOMULTIDEFS festlegen, in einem Ã¼bergeordneten Framework.(Obsolet nach 10.4) -multiply_defined <Behandlung>	Bot einen Mechanismus zur Warnung vor Symbolen, die in mehreren Dylibs definiert sind.(Obsolet nach 10.4) -multiply_defined_unused <Behandlung>	Bot einen Mechanismus zur Warnung vor Symbolen, die in der aktuellen ausfÃ¼hrbaren Datei definiert sind, die auch in verknÃ¼pften Dylibs definiert sind.(Obsolet nach 10.4) Multi-Module werden seit macOS 10.4 zur Laufzeit ignoriert.(Veraltet und unberÃ¼cksichtigt von ld64)	Ob ld eine ausfÃ¼hrbare Datei erzeugen soll (nur von ld_classic umgesetzt).(Obsolet)	Dies ist der Vorgabewert.(Obsolet) -sectobjectsymbols <Segmentname> <Abschnittsname>	Das Festlegen eines lokalen Symbols am Anfang eines Abschnitts wird nicht mehr unterstÃ¼tzt.(Obsolet) -sectorder <Segmentname> <Abschnittsname> <Reihenfolgedatei>	Wurde ersetzt durch die allgemeinere Option Â»-order_fileÂ«.(Obsolet) Erlaubte das Verlinken mit Â»-flat_namespaceÂ« fortzusetzen, wenn ein verlinktes Bundle ein Symbol enthÃ¤lt, das ebenfalls aus der HauptausfÃ¼hrungsdatei exportiert wurde.(Obsolet) Aktuelle Linker entfernen diese Elemente nie, daher wird diese Option nicht benÃ¶tigt.(Obsolet) LD_PREBIND wird nicht mehr unterstÃ¼tzt.(Veraltet) Objektdateien mit LINKEDIT-Abschnitten werden nicht mehr unterstÃ¼tzt.(Obsolet) Dies ist der Vorgabewert.(Veraltet, ignoriert)	Alte UnterstÃ¼tzung, Ã¤hnlich wie Â»whyloadÂ«.(Obsolet, nur ld_classic) -sectcreate <Segmentname> <Abschnittsname> <Datei>	Hat erlaubt, einen Abschnitt aus einer Datei zu erstellen.(Obsolet, nur ld_classic) -seg_addr_table_filename <Pfad>.(ein Zeiger auf ein Element kann nur mit %<Â»&%E%> erzeugt werden)(eine Initialisierung auÃŸerhalb der Klasse ist erforderlich)(anonymer Namensraum)(anonym)(wenn das nicht beabsichtigt war, stellen Sie sicher, dass das Funktions-Template bereits deklariert wurde, fÃ¼gen Sie %<<>%> hier hinter dem Funktionsnamen ein)(bei Verwendung von %<-fpermissive%>, %<-std=c++11%> oder %<-std=gnu++11%> wird G++ den Code akzeptieren)(mit %<-fpermissive%> wird G++ den Code akzeptieren, aber die Verwendung eines nicht deklarierten Namens ist veraltet)(bei Nachrichten ohne eine Ã¼bereinstimmende Methodensignatur wird angenommen, dass sie %<id%> zurÃ¼ckgeben und %<...%> als Argumente akzeptieren)(nahe der Initialisierung fÃ¼r %qs)(kein Argument)(vielleicht war %<typename %T::%E%> beabsichtigt)(vielleicht fehlt ein Semikolon hinter der Definition von %qT)(Es sollte also %qT statt %qT an %<va_arg%> Ã¼bergeben werden)(statische Destruktoren fÃ¼r %s)(statische Initialisierungen fÃ¼r %s)(die Meldung wird pro Quelldatei nur einmal angezeigt)
  ({anonym})*** WARNUNG *** es gibt aktive Plugins â€“ bitte Fehler nur dann melden, wenn diese auch ohne alle Plugins reproduziert werden kÃ¶nnen.
! *this--embed-dir=<Verz>	<Verz> an das Ende des #embed-Pfades anfÃ¼gen.--help=<Klasse>	Beschreibungen fÃ¼r eine bestimmte Klasse von Optionen anzeigen. <Klasse> ist ein oder mehrere Elemente aus optimizers, target, warnings, undocumented, param.--param inline-unit-growth: Limit erreicht--param large-function-growth: Limit erreicht--param large-stack-frame-growth: Limit erreicht--param max-inline-insns-auto: Limit erreicht--param max-inline-insns-single: Limit erreicht--param=aarch64-autovec-preference=[default|asimd-only|sve-only|prefer-asimd|prefer-sve]	Eine ISA-Auswahlstrategie fÃ¼r die Auto-Vektorisierung erzwingen.--param=aarch64-ldp-policy=[default|always|never|aligned] FeinkÃ¶rnige Richtlinie fÃ¼r Ladepaare.--param=aarch64-stp-policy=[default|always|never|aligned] FeinkÃ¶rnige Richtlinie fÃ¼r Speicherpaare.--param=gcn-preferred-vectorization-factor=[default,32,64]	Bevorzugter Vektorisierungsfaktor.--param=openacc-kernels=[decompose|parloops]	Modus, in dem OpenACC-Â»kernelsÂ«-Konstrukte verarbeitet werden.--param=openacc-privatization=[quiet|noisy]	Modus von OpenACC-Privatisierungsmeldungen festlegen.--param=parloops-schedule=[static|dynamic|guided|auto|runtime]	Art des OMP-Zeitplans fÃ¼r Schleifen, die durch parloops parallelisiert werden.--param=ranger-debug=[none|trace|gori|cache|tracegori|all]	Ausgabemodus fÃ¼r das Ranger-Debuggen festlegen.--param=threader-debug=[none|all]	Aktiviert das ausfÃ¼hrliche Dumping des Threader-LÃ¶sers.-A<Frage>=<Antwort>	Die <Antwort> auf eine <Frage> annehmen. Angabe von Â»-Â« vor <Frage> schaltet die <Antwort> auf <Frage> aus.-D<Makro>[=<Wert>]	Ein <Makro> mit <Wert> definieren. Wenn nur <Makro> angegeben wird, wird <Wert> auf 1 gesetzt.Â»-EÂ« oder Â»-xÂ« benÃ¶tigt, wenn die Eingabe von der Standardeingabe kommt-F <Verz>	<Verz> an das Ende des Haupt-EinfÃ¼gepfades des Frameworks anfÃ¼gen.-G<Anzahl>	Globale und statische Daten kleiner als <Anzahl> Bytes in einen gesonderten Abschnitt legen (bei manchen Zielarchitekturen).-Hd <Verz>	D-Schnittstellen-Dateien in Verzeichnis <Verz> schreiben.-Hf <Datei>	D-Interface in <Datei> schreiben.-I <Verz>	<Verz> an das Ende des HaupteinfÃ¼gepfades anfÃ¼gen.-J<Verzeichnis>	MODULE-Dateien in Â»VerzeichnisÂ« ablegen.-MF <Datei>	AbhÃ¤ngigkeiten in angegebene Datei schreiben.-MQ <Ziel>	Ziel hinzufÃ¼gen, das mÃ¶glicherweise AnfÃ¼hrungszeichen benÃ¶tigt.-MT <Ziel>	Ziel hinzufÃ¼gen, das keine AnfÃ¼hrungszeichen benÃ¶tigt.-O<Zahl>	Optimierungsstufe auf <Zahl> setzen.-U<Makro>	<Makro>-Definition aufheben.-Waligned-new=[none|global|all]	Selbst dann warnen, wenn Â»newÂ« Klassenelementfunktionen zur Speicherreservierung verwendet.-Walloc-size-larger-than=<Bytes>	Bei Aufrufen von Allozierungsfunktionen warnen, mit denen Objekte erzeugt werden, die grÃ¶ÃŸer als Â»BytesÂ« sind.-Walloca-larger-than=<Anzahl>	Bei Aufrufen von alloca warnen, deren GrÃ¶ÃŸe unbeschrÃ¤nkt ist oder deren GrÃ¶ÃŸe zwar beschrÃ¤nkt ist, aber mehr als <Anzahl> Bytes betragen kann.-Wbidi-chars=[none|unpaired|any|ucn] Vor UTF-8 bidirektionalen Steuerzeichen warnen.-Wframe-larger-than=<GrÃ¶ÃŸe>	Warnen, wenn der Stapelrahmen einer Funktion mehr als <GrÃ¶ÃŸe> Bytes benÃ¶tigt.-Wlarger-than=<Anzahl>	Warnen, wenn ein Objekt grÃ¶ÃŸer als <Anzahl> Bytes ist.-Wnormalized=[none|id|nfc|nfkc]	Bei nicht-normalisierten Unicode-Zeichenketten warnen.-Wstack-usage=<GrÃ¶ÃŸe in Bytes>	Warnen, wenn Stapelverwendung den angegebenen Betrag Ã¼berschreiten kÃ¶nnte.-Wvla-larger-than=<Anzahl>	Bei unbeschrÃ¤nkten Verwendungen von Arrays variabler LÃ¤nge warnen, und bei Verwendung von Arrays variabler LÃ¤nge, wenn die LÃ¤nge <Anzahl> Ã¼berschreiten kann.Â»-Xbind-nowÂ« und Â»-Xbind-lazyÂ« sind unvertrÃ¤glich-Xf <Datei>	JSON-Ausgabe in die angegebene <Datei> schreiben.-allowable_client <Name>	Die ausgegebene dylib ist nur vom Client <Name> verwendbar.-arch <Name>	Ausgabedatei fÃ¼r die Architektur <Name> erzeugen.-aux-info <Datei>	Deklarationsinformationen in <Datei> ausgeben.Â»-bundleÂ« ist nicht mit Â»-dynamiclibÂ« erlaubtÂ»-bundleÂ« ist nicht mit Â»-sharedÂ« erlaubt-bundle_loader <AusfÃ¼hrbar>	Die ausfÃ¼hrbare Datei <AusfÃ¼hrbar> (die dieses Bundle laden wird) so behandeln, als sei sie eine der dynamischen Bibliotheken, gegen die das Bundle fÃ¼r SymbolauflÃ¶sung gebunden ist.Â»-bundle_loaderÂ« ist nicht mit Â»-dynamiclibÂ« erlaubtFÃ¼r Ada wird Â»-cÂ« oder Â»-SÂ« benÃ¶tigtFÃ¼r gnat2scil wird -c benÃ¶tigtFÃ¼r gnat2why wird Â»-cÂ« benÃ¶tigt-client_name <Name>	Erlauben, dass die erzeugte ausfÃ¼hrbare Datei gegen die private Dylib gebunden werden darf (mit allowable_client).Â»-client_nameÂ« ist nicht mit Â»-dynamiclibÂ« erlaubt-compatibility_version <Nummer>	Minimale Version fÃ¼r das Client-Interface festlegen. Clients mÃ¼ssen diese <Nummer> oder eine grÃ¶ÃŸere angeben, oder das Binden wird zur Laufzeit fehlschlagen.Â»-compatibility_versionÂ« ist nur mit Â»-dynamiclibÂ« erlaubt-current_version <Nummer>	Aktuelle Version fÃ¼r die Bibliothek auf <Nummer> festlegen.Â»-current_versionÂ« ist nur mit Â»-dynamiclibÂ« erlaubt-d<Buchstaben>	Ausgaben von bestimmten DurchlÃ¤ufen des Compilers einschalten.-dumpbase <Datei>	Den Basis-Dateinamen fÃ¼r Ausgaben setzen.-dumpbase-ext .<Erw>    Die Dateinamenserweiterung .<Erw> weglassen, beim Benennen der hilfsweisen Ausgabedateien.-dumpdir <Verzeichnis>	Den Basis-Verzeichnisnamen fÃ¼r Ausgaben setzen.-dylib_file Installationsname:Dateiname	Dies ermÃ¶glicht die VerknÃ¼pfung einer Dylib mit Â»InstallationsnameÂ«, die aber in einer anderen Installationsposition Â»DateinameÂ« zu finden ist-dylinker_install_name <Pfad>	Wird nur verwendet, um dyld zu bauen.-exported_symbols_list <Dateiname>	Globale Symbole in <Dateiname> werden aus der gelinkten Ausgabedatei exportiert, alle nicht erwÃ¤hnten Symbole werden als versteckt behandelt.-f%s ignoriert (nicht fÃ¼r DJGPP unterstÃ¼tzt)
! -fada-spec-parent=Einheit	Ada-Spezifikationen als Kind-Einheiten der angegebenen Elterneinheit ausgeben.-faligned-new=<N>	Ãœberausgerichtete Typallozierung aus C++17 fÃ¼r Typen mit Ausrichtung grÃ¶ÃŸer N verwenden.-fasan-shadow-offset=<Zahl>	Spezifischen Offset fÃ¼r Schattenspeicher verwenden.-fblas-matmul-limit=<n>	GrÃ¶ÃŸe der kleinsten Matrix, fÃ¼r die matmul BLAS verwendet.-fbounds-check=[on|safeonly|off]	Array-GrenzprÃ¼fungen einschalten, nur in @safe-Code, oder ausschalten.-fcall-saved-<Register>	<Register> als Ã¼ber Funktionsgrenzen hinweg reserviert markieren.-fcall-used-<Register>	<Register> als durch Funktionsaufrufe beschÃ¤digt markieren.-fcf-protection=[full|branch|return|none|check]	Funktionen mit zusÃ¤tzlichen PrÃ¼fungen versehen, dass die Sprungziele von jump/call/return gÃ¼ltig sind.-fcheck=[...]	DurchgefÃ¼hrte LaufzeitprÃ¼fungen.-fcheckaction=[throw,halt,context]	Verhalten bei NichterfÃ¼llung eines Vertrags.-fcoarray=<none|single|lib>	Angeben, welche Koarray-Parallelisierung verwendet wird.-fcobol-exceptions=<n>	Einige Ausnahmen standardmÃ¤ÃŸig aktivieren-fcompare-debug[=<Optionen>]	Mit und ohne z.B. -gtoggle kompilieren, und den Dump der Â»final-insnsÂ« vergleichen.-fconst-string-class=<Name>	Klasse <Name> fÃ¼r konstante Zeichenketten verwenden.-fconstexpr-cache-depth=<Zahl>	GrÃ¶ÃŸte Rekursionstiefe des Caches fÃ¼r konstante AusdrÃ¼cke festlegen.-fconstexpr-depth=<Zahl>	GrÃ¶ÃŸte Rekursionstiefe fÃ¼r konstante AusdrÃ¼cke angeben.-fconstexpr-loop-limit=<Anzahl>	HÃ¶chstzahl der Schleifeniterationen fÃ¼r Â»constexprÂ« angeben.-fconstexpr-ops-limit=<Anzahl>	HÃ¶chstzahl der constexpr-Operationen pro einzelner Â»constexprÂ« angeben.-fcontract-assumption-mode=[on|off]	Axiomatische VertrÃ¤ge als Annahmen zulassen oder nicht (Vorgabe: zulassen).-fcontract-build-level=[off|default|audit]	Maximale Vertragsstufe, fÃ¼r die LaufzeitprÃ¼fungen generiert werden.-fcontract-continuation-mode=[on|off]	Vertragsfortsetzungsmodus ein- oder ausschalten (Vorgabe: aus).-fcontract-mode=[on|off]	VertrÃ¤ge komplett ein- oder ausschalten (Vorgabe: ein).-fcontract-role=<Name>:<Semantik>	Semantik fÃ¼r alle Stufen in einer Rolle angeben (default, review), oder eine selbstdefinierte Rolle mit der angegebenen Semantik (zum Beispiel: opt:assume,assume,assume).-fcontract-semantic=<Stufe>:<Semantik>	Die konkrete Semantik fÃ¼r die Stufe angeben.-fcontract-strict-declarations=[on|off]	Warnungen bei generalisierten Neudeklarationen von Funktionen mit VertrÃ¤gen ein- oder ausschalten (Vorgabe: aus).-fconvert=<big-endian|little-endian|native|swap|r16_ieee|r16_ibm>	Die Endianess, die fÃ¼r unformatierte Dateien verwendet wird.-fdbg-cnt=<ZÃ¤hler>[:<Untere Grenze 1>-]<Obere Grenze 1>[:<Untere Grenze 2>-<Obere Grenze 2>:...][,<ZÃ¤hler>:...]	Obergrenze fÃ¼r Debug-ZÃ¤hler festlegen.-fdebug-prefix-map=<alt>=<neu>	In Fehlersuchinfo einen Verzeichnisnamen auf einen anderen abbilden.-fdebug=<Bezeichner>	Durch Bezeichner festgelegten Debugcode eincompilieren.-fdeps-target=obj.o Ausgabedatei fÃ¼r den Kompilierschritt.-fdiagnostics-color=[never|always|auto]	Diagnosemeldungen einfÃ¤rben.-fdiagnostics-column-origin=<Nummer>	Legt die Nummer der ersten Spalte fest. Die Vorgabe ist gemÃ¤ÃŸ GNU-Stil 1-basiert, aber einige Dienstprogramme erwarten 0-basierte Spaltennummern.-fdiagnostics-column-unit=[display|byte]	Festlegen, ob Spaltennummern als Anzeigespalten (Standard) ausgegeben werden oder in rohen Bytes gemessen werden.-fdiagnostics-escape-format=[unicode|bytes]	Festlegen, wie Zeichen auÃŸerhalb des druckbaren ASCII-Bereichs in der Quelle fÃ¼r Diagnosen, die dies vorschlagen, ausgegeben werden sollen.-fdiagnostics-format=[text|sarif-stderr|sarif-file|json|json-stderr|json-file]	Ausgabeformat auswÃ¤hlen.-fdiagnostics-show-location=[once|every-line]	Wie oft die Quelltext-Position am Zeilenanfang ausgegeben wird, wenn die Diagnose Ã¼ber mehrere Zeilen geht.-fdiagnostics-text-art-charset=[none|ascii|unicode|emoji]	Legt fest, welche Zeichen in Text-Arg-Diagrammen verwendet werden.-fdiagnostics-urls=[never|always|auto]	URLs in Diagnosemeldungen einbetten.-fdisable-[tree|rtl|ipa]-<Durchgang>=range1+range2	Einen Optimierungsdurchgang ausschalten.-fdoc-dir=<Verz>	Dokumentationsdatei in Verzeichnis <Verz> schreiben.-fdoc-file=<Datei>	Dokumentation in <Datei> schreiben.-fdoc-inc=<Datei>	Eine Ddoc-Makro-Datei <Datei> inkludieren.-fdump-<type>	Verschiedene compilerinterne Informationen in eine Datei abziehen.-fdump-cxx-spec=<Dateiname>	Alle Deklarationen als C++-Code nach <Dateiname> schreiben.-fdump-final-insns=<Datei>	Die Befehle am Ende der Ãœbersetzung in Datei abziehen.-fdump-go-spec=<Datei>	Alle Deklarationen als Go-Code in <Datei> schreiben.-femit-struct-debug-baseonly	Aggressiv reduzierte Debuginfo fÃ¼r Strukturen.-femit-struct-debug-detailed=<spec-list>AusfÃ¼hrliche reduzierte Debuginfo fÃ¼r Strukturen.-femit-struct-debug-reduced	Konservativ reduzierte Debuginfo fÃ¼r Strukturen.-fenable-[tree|rtl|ipa]-<Durchgang>=range1+range2	Einen Optimierungsdurchgang einschalten.-fexcess-precision=[fast|standard|16]	Behandlung Ã¼berschÃ¼ssiger Gleitkommagenauigkeit bestimmen.-fexec-charset=<Zeichensatz>	Alle Zeichenketten und Zeichenkonstanten in <Zeichensatz> umwandeln.-fextern-std=<Standard>	C++-Namensumwandlung kompatibel zu <Standard> machen.-ffile-prefix-map=<alt>=<neu>	In Ãœbersetzungsergebnis einen Verzeichnisnamen auf einen anderen abbilden.-ffixed-<Register>	<Register> als fÃ¼r den Compiler nicht verfÃ¼gbar markieren.-ffixed-line-length-<n>	Im festen Modus n als ZeilenlÃ¤nge verwenden.-ffp-contract=[off|on|fast]	Schrumpfung von GleitkommaausdrÃ¼cken durchfÃ¼hren.-ffpe-summary=[â€¦]	Zusammenfassung fÃ¼r Gleitkommaausnahmen ausgeben.-ffpe-trap=[â€¦]	Bei folgenden Gleitkommaausnahmen anhalten.-ffixed-line-length-<n>	Im freien Modus n als ZeilenlÃ¤nge verwenden.-fgnat-encodings=[all|gdb|minimal]	Gleichgewicht zwischen GNAT-Encodings und Standard-DWARF auswÃ¤hlen, die in den Debuginformationen landen.-fgo-c-header=<Datei>	Go-struct-Definitionen als C-Code in <Datei> schreiben.-fgo-debug-escape-hash=<Zeichenkette>	Hashwert zum Debuggen der Escape-Analyse.-fgo-dump-<Typ>	Interne Information des Go-Frontends in Datei ausgeben.-fgo-embedcfg=<Datei>	Eingebettete Dateien Ã¼ber go:embed auflisten.-fgo-importcfg=<file>	Gibt die Datei an, die verrÃ¤t, wo die Importe zu finden sind.-fgo-optimize-<type>	OptimierungsdurchlÃ¤ufe im Frontend einschalten.-fgo-pkgpath=<Zeichenkette>	Go-Paketpfad festlegen.-fgo-prefix=<Zeichenkette>	Paketspezifisches PrÃ¤fix fÃ¼r exportierte Go-Namen festlegen.-fgo-relative-import-path=<Pfad>	Relativen Import als relativ zum Pfad behandeln.-fhardcfr-check-noreturn-calls=[always|no-xthrow|nothrow|never]	CFR-AusfÃ¼hrungspfade auch prÃ¼fen, bevor noreturn-Funktionen aufgerufen werden.-findicator-column=<n>	Spalte, nach der Region A beginnt-finit-character=<n>	Lokale Zeichenvariablen auf ASCII-Wert n initialisieren.-finit-integer=<n>	Lokale Ganzzahlvariablen auf n initialisieren.-finit-logical=<true|false>	Lokale logische Variablen initialisieren.-finit-real=<zero|nan|inf|-inf>	Lokale Real-Variablen initialisieren.-finline-arg-packing	Argumentpacken inline durchfÃ¼hren.-finline-limit=<Zahl>	GrÃ¶ÃŸe von Â»inlineÂ«-Funktionen auf <Zahl> beschrÃ¤nken.-finline-matmul-limit=<n>	GrÃ¶ÃŸe der grÃ¶ÃŸten Matrix, fÃ¼r die matmul geinlinet wird.-finline-stringops[=memcmp|memcpy|memmove|memset] UnterstÃ¼tzte mem/str-Operationen inline expandieren, auch wenn dies der Optimierung widerspricht.-finput-charset=<Zeichensatz>	Standard-Zeichensatz fÃ¼r Quelldateien angeben.-finstrument-functions-exclude-file-list=filename,â€¦	In den Dateien aufgezÃ¤hlte Funktionen nicht instrumentieren.-finstrument-functions-exclude-function-list=name,â€¦	AufgezÃ¤hlte Funktionen nicht instrumentieren.-finternal-ebcdic	Die interne Verarbeitung erfolgt in EBCDIC-Codepage 1140-fira-algorithm=[CB|priority]	Verwendeten IRA-Algorithmus festlegen.-fira-region=[one|all|mixed]	Regionen fÃ¼r IRA festlegen.-fira-verbose=<Zahl<	Stufe der IRA Diagnosemeldungen steuern.-flive-patching=[inline-only-static|inline-clone]	FunktionsÃ¼bergreifende Optimierung steuern, um fÃ¼r Live-Patching geeigneten Code zu erzeugen. Bietet gleichzeitig mehrstufige Kontrolle bezÃ¼glich der ausgewÃ¤hlten funktionsÃ¼bergreifenden Optimierungen.-fmacro-prefix-map=<alt>=<neu>	Einen Verzeichnisnamen auf einen anderen umschreiben in __FILE__, __BASE_FILE__ und __builtin_FILE().-fmax-array-constructor=<n>	HÃ¶chstzahl der Objekte in einem Feldkonstruktor.-fmax-errors=<Anzahl>	HÃ¶chstzahl der zu meldenden Fehler.-fmax-identifier-length=<n>	GrÃ¶ÃŸte BezeichnerlÃ¤nge.-fmax-stack-var-size=<n>	GrÃ¶ÃŸe des grÃ¶ÃŸten Feldes, das auf dem Stapel abgelegt wird, in Bytes.-fmax-subrecord-length=<n>	GrÃ¶ÃŸte LÃ¤nge fÃ¼r TeildatensÃ¤tze.-fmessage-length=<Anzahl>	Diagnosemeldungen auf <Anzahl> Zeichen pro Zeile beschrÃ¤nken. 0 unterdrÃ¼ckt Zeilenumbruch.-fmodule-file=<package.module>=<Dateiang>	Dateiangabe <Dateiang> als Quelldatei fÃ¼r <package.module> verwenden.-fno-threadsafe-statics	Keinen threadsicheren Code fÃ¼r Initialisierung lokaler statischer Objekte erzeugen.-foffload-abi-host-opts=<options>	Host-ABI-Optionen festlegen.-foffload-abi=[lp64|ilp32]	Festlegen, welche ABI in einem Offload-Compiler verwendet wird.-foffload-options=<Ziele>=<Optionen>	Offloading-Ziele und deren Optionen angeben.-fopt-info[-<Typ>=Dateiname]	Optimierungsdetails des Compilers ausgeben.Â»-force_flat_namespaceÂ« ist nicht mit Â»-dynamiclibÂ« erlaubt-fpack-struct=<Zahl>	AnfÃ¤ngliche grÃ¶ÃŸte Ausrichtung fÃ¼r Strukturelemente festlegen.-fpath-coverage-limit=<Anzahl> Funktionspfade, die <Anzahl> Ã¼berschreiten, nicht instrumentieren.-fpermitted-flt-eval-methods=[c11|ts-18661]	Angeben, welche Werte von FLT_EVAL_METHOD erlaubt sind.-fplugin-arg-<Name>-<SchlÃ¼ssel>[=<Wert>]	Argument <SchlÃ¼ssel>=<Wert> fÃ¼r Plugin <Name> angeben.-fprofile-prefix-map=<alt>=<neu>	In der Ausgabe von GCOV einen Verzeichnisnamen auf einen anderen abbilden.-fprofile-reproducible=[serial|parallel-runs|multithreaded]	Stufe fÃ¼r die Reproduzierbarkeit des mit Â»-fprofile-generateÂ« generierten Profils festlegen.-fprofile-update=[single|atomic|prefer-atomic]	Methode fÃ¼r Profilupdates festlegen.-framework <Name>	Das Framework <Name> im Pfad fÃ¼r Frameworks suchen.-frandom-seed=<Zeichenkette>	Ãœbersetzung mit <Zeichenkette> reproduzierbar machen.-freorder-blocks-algorithm=[simple|stc]	Algorithmus zum Umordnen der BasisblÃ¶cke festlegen.-frust-cfg=<Name>             Option fÃ¼r Konfigurationsexpansion festlegen-frust-compile-until=[ast|attributecheck|expansion|astvalidation|featuregating|nameresolution|lowering|typecheck|privacy|unsafety|const|borrowcheck|compilation|end]             Die Pipeline beim Kompilieren von Rust-Code bis zu dieser Stufe durchlaufen-frust-crate-type=[bin|lib|rlib|dylib|cdylib|staticlib|proc-macro]     Auszugebender Crate-Typ-frust-crate=<Name>             Crate-Namen fÃ¼r die Ãœbersetzung festlegen-frust-dump-<type>              Interne Informationen des Rust-Frontends ausgeben.-frust-edition=[2015|2018|2021]             Sprachversion zum Ãœbersetzen auswÃ¤hlen-frust-edition=[unwind|abort]             Panikstrategie, mit der Crate compiliert wird-frust-extern=              Gibt an, wo sich eine externe Bibliothek befindet-frust-mangling=[legacy|v0]     Version der Namensmangelung auswÃ¤hlen-frust-max-recursion-depth=<Anzahl>-frust-metadata-output=<Pfad.rox>  Pfad, in den die Create-Metadaten geschrieben werden-fsanitize-sections=<sec1,sec2,...>	Globale Variablen in benutzerdefinierten Abschnitten bereinigen.-fsanitize=address wird in dieser Konfiguration nicht unterstÃ¼tzt-fsave-mixins=<Dateiname>	Mixins expandieren und in <Dateiname> speichern.-fsched-stalled-insns-dep=<Zahl>	AbhÃ¤ngigkeitsentfernung fÃ¼r PrÃ¼fung in nicht ausgereifter Planung von eingereihten Befehlen festlegen.-fsched-stalled-insns=<Anzahl>	Anzahl der eingereihten Befehle festlegen, die unausgereift geplant werden kÃ¶nnen.-fsched-verbose=<Stufe>	Stufe der WortfÃ¼lle des Planers angeben.-fsimd-cost-model=[unlimited|dynamic|cheap|very-cheap]	Vektorisierungs-Kostenmodell angeben, das fÃ¼r mit einer SIMD-Direktive markierten Code verwendet wird.-fsso-struct=[big-endian|little-endian|native]	Standardspeicherreihenfolge fÃ¼r Skalare festlegen.-fstack-check=[no|generic|specific]	Code zur StapelprÃ¼fung in das Programm einfÃ¼gen.-fstack-limit-register=<Register>	Wenn der Stapel Ã¼ber <Register> hinausgeht, abfangen (Â»trapÂ«).-fstack-limit-symbol=<Name>	Wenn der Stapel Ã¼ber das Symbol <Name> hinausgeht, abfangen (Â»trapÂ«).-fstack-reuse=[all|named_vars|none]	Stufe der Stapel-Wiederverwendung fÃ¼r lokale Variablen festlegen.-fstrict-flex-arrays=<Stufe>    Steuern, wann ein Array am Ende einer Struktur als ein flexibles Arraymember angesehen wird, bezÃ¼glich des Zugriffs auf die Elemente dieses Arrays. Vorgabe ist, alle Arrays am Ende einer Struktur als flexible Arrays anzusehen.-ftabstop=<Zahl>        Abstand zwischen Tabstopps fÃ¼r Spaltenmeldungen.-ftemplate-depth=<Zahl>	GrÃ¶ÃŸte Template-Instanziierungstiefe angeben.-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]	Das standardmÃ¤ÃŸige Codeerzeugungsmodell fÃ¼r Thread-lokalen Speicher angeben.-ftrack-macro-expansion=<0|1|2>	Orte der aus der Makroersetzung entstehenden Token verfolgen und sie in Fehlermeldungen anzeigen.-ftree-parallelize-loops=<Anzahl>	Automatische Parallelisierung von Schleifen einschalten.-ftrivial-auto-var-init=[uninitialized|pattern|zero]	Automatische Variablen initialisieren.-fuse-linker-plugin wird in dieser Konfiguration nicht unterstÃ¼tzt-fvect-cost-model=[unlimited|dynamic|cheap|very-cheap]	Kostenmodell fÃ¼r Vektorisierung angeben.-fversion=<Ident>	Mit Ident identifizierten Versionscode mitkompilieren.-fvisibility=[default|internal|hidden|protected]	Standard-Symbolsichtbarkeit festlegen.-fvisibility=[private|protected|public|package]	Standard-Symbolsichtbarkeit festlegen.-fvtable-verify=preinit wird in dieser Konfiguration nicht unterstÃ¼tzt-fvtable-verify=std wird in dieser Konfiguration nicht unterstÃ¼tzt-fwide-exec-charset=<Zeichensatz>	Alle Wide-Zeichenketten und -konstanten in Zeichensatz <Zeichensatz> umwandeln.-fzero-init-padding-bits=[standard|unions|all]	AuffÃ¼ll-Bits in Initialisierern ausnullen.-gnat<Optionen>	Optionen fÃ¼r GNAT angeben.-gz wird in dieser Konfiguration nicht unterstÃ¼tzt-gz=<Format>	Komprimierte Debugabschnitte im Format <Format> erzeugen.-gz=zstd wird in dieser Konfiguration nicht unterstÃ¼tzt-idirafter <Verzeichnis>	<Verzeichnis> an das Ende des System-EinfÃ¼gepfades anfÃ¼gen.-iframework <Verz>	<Verz> an das Ende des EinfÃ¼gepfades des System-Frameworks anfÃ¼gen.-imacros <Datei>	Definition von Makros in <Datei> akzeptieren.-image_base <Adresse>	Basisadresse fÃ¼r eine Dylib oder ein Bundle festlegen.-imultiarch <Verzeichnis>	<Verzeichnis> als Multiarch-include-Verzeichnis festlegen.-imultilib <Verzeichnis>	<Verzeichnis> als Multilib-include-Verzeichnis setzen.-include <Datei>	Inhalt von <Datei> vor anderen Dateien einfÃ¼gen.-init <Symbolname>	Das Symbol <Symbolname> wird als erster Initialisierer fÃ¼r eine Dylib verwendet.-install_name <Name>	Legt den Installationsnamen fÃ¼r eine Dylib fest.Â»-install_nameÂ« ist nur mit Â»-dynamiclibÂ« erlaubt-iplugindir=<Verz>	<Verz> als Standard-Plugin-Verzeichnis festlegen.-iprefix <Pfad>	<Pfad> als ein PrÃ¤fix fÃ¼r die nÃ¤chsten zwei Optionen angeben.-iquote <Verzeichnis>	<Verzeichnis> am Ende des EinfÃ¼gepfades fÃ¼r Â»#include "â€¦"Â« anfÃ¼gen.-isysroot <Verzeichnis>	<Verzeichnis> als System-Wurzelverzeichnis setzen.-isystem <Verzeichnis>	<Verzeichnis> an den Anfang des System-EinfÃ¼gepfades anfÃ¼gen.-iwithprefix <Verzeichnis>	<Verzeichnis> an das Ende des System-EinfÃ¼gepfades anfÃ¼gen.-iwithprefixbefore <Verz>	<Verz> an das Ende des Haupt-EinfÃ¼gepfades anfÃ¼gen.Â»-keep_private_externsÂ« ist mit Â»-dynamiclibÂ« nicht erlaubt-mabi=ABI	Code erzeugen, der zum angegebenen ABI passt.-mabi=<Basis-ABI>	Code erzeugen, der zur angegebenen Basis-ABI passt.-mabs=MODUS	Den Modus fÃ¼r IEEE-754-ABS/NEG-Befehle auswÃ¤hlen.-maddr-reg-reg-cost=COST	Die Kosten von ADDRESS_REG_REG auf den mit COST berechneten Wert festlegen.-main	Die erste Programm-ID in der nÃ¤chsten Quelldatei wird von einem generierten main()-Einstiegspunkt aufgerufen-main=<Quelldatei> Quelldatei/PROGRAMM-ID wird von der generierten main() aufgerufen-march=	Code fÃ¼r die angegebene RISC-V-ISA (z.B. RV64IM) erzeugen. ISA-Zeichenketten mÃ¼ssen in Kleinbuchstaben angegeben werden.-march=ARCH	Code fÃ¼r die angegebene Chip- oder CPU-Version erzeugen.-march=ISA	Code fÃ¼r das gegebene ISA erzeugen.-march=<Prozessor>	Code fÃ¼r die angegebene <Prozessor>-ISA erzeugen.-march=help	UnterstÃ¼tzte -march-Erweiterungen ausgeben.Â»-mas100-syntaxÂ« ist unvertrÃ¤glich mit Â»-gdwarfÂ«-mbranch-cost=<Kosten>	Optimierung. Sprungkosten fÃ¼r bedingte Sprungbefehle festlegen. Angemessene Werte sind kleine, nicht-negative Ganzzahlen. Vorgabewert ist 0.-mbranch-cost=KOSTEN	Sprungkosten auf ungefÃ¤hr KOSTEN Befehle setzen.-mbranch-cost=N	Sprungkosten auf ungefÃ¤hr N Befehle setzen.-mcall-ABI	ABI-Aufrufkonvention auswÃ¤hlen.-mcode-readable=SETTING	Angeben, wann Befehle zum Codezugriff erlaubt sind.Â»-mcode-regionÂ« benÃ¶tigt das large-Speichermodell (Â»-mlargeÂ«)-mcpu=	Eigenschaften der angegebenen CPU verwenden und entsprechend Code planen.-mcpu=CPU	Code fÃ¼r ARC-Variante CPU planen.-mcpu=CPU		Eigenschaften der gegebenen CPU verwenden und entsprechend Code planen.-mcpu=PROZESSOR	Architektur von PROZESSOR verwenden und die Ausgabe dafÃ¼r optimieren.-mcpu=m16c	Code fÃ¼r M16C-Varianten kompilieren.-mcpu=m32c	Code fÃ¼r M32C-Varianten kompilieren.-mcpu=m32cm	Code fÃ¼r M32CM-Varianten kompilieren.-mcpu=r8c	Code fÃ¼r R8C-Varianten kompilieren.Â»-mdata-regionÂ« benÃ¶tigt das large-Speichermodell (Â»-mlargeÂ«)-mdebug=	Ausgaben zur Fehlersuche einschalten.-mdouble=<Bits>	Einen <Bits> breiten Typ fÃ¼r Â»doubleÂ« verwenden.-memregs=	Anzahl der Memreg-Bytes (Standard: 16, Bereich: 0..16).-mflush-func=FUNC	FUNC verwenden, um den Cache zu entleeren, bevor Stapel-Trampoline aufgerufen werden.-mfpu=FPU	Code fÃ¼r die angegebene FPU erzeugen.-mfuse-add=<0,2>	Optimierung. Registeradditionen von Lade-/Speicheranweisungen trennen. Besonders nÃ¼tzlich bei Reduced Tiny.-mfuse-move=<0,23>	Optimierung. Einen Post-Reload-Durchlauf ausfÃ¼hren, der Kopierbefehle optimiert.-mhard-float wird nicht unterstÃ¼tzt-minline-memops-threshold=<Anzahl> Maximale GrÃ¶ÃŸe von memset/memmove/memcpy zum Inlinen, bei grÃ¶ÃŸeren GrÃ¶ÃŸen wird ein Bibliotheksaufruf verwendet.-mipsN	Code fÃ¼r ISA Stufe N erzeugen.-mlam=[none|u48|u57] Position der Metadaten in Nutzer-Datenzeigern instrumentieren.-mlarge-data-threshold=<Anzahl>	Daten grÃ¶ÃŸer als der angegebene Schwellwert landen in einem Abschnitt fÃ¼r groÃŸe Daten, in den x86-64-Modellen Mittel und GroÃŸ.-mlong-double=<Bits>	Einen <Bits> breiten Typ fÃ¼r Â»long doubleÂ« verwenden.-mmax-inline-memcpy-size=SIZE	Die maximale GrÃ¶ÃŸe von inline-memcpy festlegen, Standard ist 1024.-mmax-stackframe=GRÃ–áºžE	Warnen, wenn ein Stapelrahmen grÃ¶ÃŸer als die angegebene GrÃ¶ÃŸe ist.-mmcu=<MCU>	Die Ziel-MCU auswÃ¤hlen.-mmcu=MCU	Ziel-System-On-Chip-Variante auswÃ¤hlen, die diese PRU einbettet.-mmpy-option=MPY	ARCv2-Code mit einer Option fÃ¼r das Multiplizierer-Design kompilieren.-mnan=CODIERUNG	Datencodierung fÃ¼r IEEE-754-NaN angeben.-mno-serialize-volatile	Â»volatileÂ«-Speicherreferenzen nicht mit MEMW-Befehlen serialisieren.-moverride=<Zeichenkette>	Nur fÃ¼r Powernutzer! CPU-Optimierungsparameter Ã¼bersteuern.-mpointer-size=[no,32,short,64,long]	StandardgrÃ¶ÃŸe fÃ¼r Zeiger festlegen.-mr10k-cache-barrier=EINSTELLUNG	Angabe, wann r10k-Cachegrenzen eingefÃ¼gt werden sollen.-mrvv-max-lmul=<Zeichenkette>	Die RVV-LMUL der Auto-Vektorisierung festlegen.-mrvv-vector-bits=<Zeichenkette>	Art der Bits in einem RVV-Vektorregister festlegen.-msdata=[none,data,sysv,eabi]	Methode fÃ¼r sdata-Behandlung auswÃ¤hlen.-msim	Simulator-Laufzeitumgebung verwenden.-msimd=SIMD	Code fÃ¼r die angegebene SIMD-Erweiterung erzeugen.Â»-msingle-floatÂ« und Â»-msoft-floatÂ« dÃ¼rfen nicht zusammen angegeben werden-msmall-data-limit=N	Globale und statische Daten kleiner als <N> Bytes in einen gesonderten Abschnitt legen (bei manchen Zielarchitekturen).-msve-vector-bits=<Anzahl>	Anzahl der Bits in einem SVE-Vektorregister festlegen.-mtarget-linker <Version>	ld64 <Version> als Toolchain-Linker fÃ¼r den aktuellen Aufruf festlegen.-mtls-size=[16,32]	Bit-Breite des unmittelbaren TLS-Offsets angeben.-mtraceback=[full,part,no]	Art der Traceback-Tabelle wÃ¤hlen (vollstÃ¤ndig, teilweise, keine).-mtune=	Code fÃ¼r die angegebene CPU planen.-mtune=ARCH	Ausrichtung fÃ¼r angegebene Chip- oder CPU-Version optimieren.-mtune=<Prozessor>	Code fÃ¼r <Prozessor> optimieren.-mtune=PROZESSOR	Ausgabe fÃ¼r PROZESSOR optimieren.-mcpu=TUNE	Code fÃ¼r angegebene ARC-Variante feintunen.%<-mx32%> wird unter Solaris nicht unterstÃ¼tzt-nomain	Es wird keine main()-Funktion aus COBOL-Quelldateien erstellt-o <Datei>	Ausgabe in <Datei> schreiben.-pagezero_size <GrÃ¶ÃŸe>	Erlaubt es, die GrÃ¶ÃŸe der Seite 0 fÃ¼r bestimmte SonderfÃ¤lle auf 4 kB festzulegen.-param=riscv-two-source-permutes	Schaltet Permutationen mit zwei Quellvektoren ein.-param=vsetvl-strategy=<string>	Optimierungsstufe des VSETVL-EinfÃ¼gedurchgangs festlegen.Â»-pgÂ« und Â»-fomit-frame-pointerÂ« sind unvertrÃ¤glich-pie wird in dieser Konfiguration nicht unterstÃ¼tztÂ»-private_bundleÂ« ist mit Â»-dynamiclibÂ« nicht erlaubt-read_only_relocs <Behandlung>	Dies ermÃ¶glicht Codeverschiebungen in schreibgeschÃ¼tzten Seiten (nicht ratsam).-sectalign <Segmentname> <Abschnittsname> <Wert>	Festlegen, dass der genannte Abschnitt im genannten Segment die genannte Ausrichtung hat. Die Ausrichtung muss eine Zweierpotenz in hexadezimaler Form sein.-sectcreate <Segmentname> <Abschnittsname> <Datei>	Den genannten Abschnitt im genannten Segment aus der angegebenen Datei erstellen.-seg_addr_table <Datei>	Basisadressen fÃ¼r dynamische Bibliotheken festlegen, <Datei> enthÃ¤lt eine Zeile fÃ¼r jede Bibliothek.-segaddr <Name> <Adresse>	Basisadresse des Segments <Name> auf <Adresse>festlegen. Die Adresse muss an einer Seitenbegrenzung ausgerichtet sein (derzeit 4 kB).-segprot <Segmentname> <Max-Schutz> <Init-Schutz>	Die Schutzwerte fÃ¼r virtuellen Speicher fÃ¼r das Segment <Segmentname> haben die maximalen und initialen Werte <Max-Schutz> und <Init-Schutz>. Als Werte sind Â»rÂ«, Â»wÂ«, Â»xÂ« oder Â»-Â« mÃ¶glich, letzteres bedeutet Â»kein ZugriffÂ«.-segs_read_only_addr <Adresse>	Adresse des schreibgeschÃ¼tzten Teils einer Dylib festlegen.-segs_read_write_addr <Adresse>	Die <Adresse> als Basisadresse des Lese-/Schreibteils einer Dylib festlegen.-stdlib=[libstdc++|libc++]	Die Standardbibliothek, die fÃ¼r C++-Header und Laufzeit verwendet wird.-sub_library <Name>	Die Bibliothek <Name> wird wieder-exportiert (nur fÃ¼r Dylibs sinnvoll).-sub_umbrella <Name>	Das Framework <Name> wird wieder-exportiert (nur fÃ¼r Dylibs sinnvoll).-trigraphs	Trigraphen nach ISO C unterstÃ¼tzen.-umbrella <Framework>	Das angegebene Framework wird re-exportiert.-undefined <Auswirkung>	Auswirkung von undefinierten Symbolen festlegen (Vorgabewert ist Â»errorÂ«).-unexported_symbols_list <Datei>	Globale Symbole, die in <Datei> aufgelistet sind, nicht exportieren.-weak_framework <framework>	Eine schwache VerknÃ¼pfung zu dem angegebenen Rahmenwerk herstellen.-weak_reference_mismatches <Auswirkung>	Auswirkung von Symbol-Importkonflikten zwischen Dateien (schwach in der einen und nicht in der anderen) festlegen. Vorgabewert ist, das Symbol als nicht Â»weakÂ« zu behandeln.... diesem AufzÃ¤hlungswert %qDâ€¦ zur vorherigen %qs-Klausel hierâ€¦ mit %qs-Klausel hierâ€¦ ohne %qs-Klausel hier in der NÃ¤he... folgt auf Parameter %P, der ein Defaultargument hatâ€¦ diese Anweisung, aber letztere ist verwirrend eingerÃ¼ckt, als wÃ¤re sie abhÃ¤ngig von %qs.NOT.-Operator in Ausdruck bei %L muss einen LOGICAL-Operanden haben.XOR.-Operator bei %C/* Prototypen fÃ¼r externe Prozeduren, generiert aus %s
     von GNU Fortran %s%s.
  
     Die Verwendung dieser Schnittstelle wird nicht empfohlen,
     verwenden Sie besser das BIND(C)-Feature, das standardmÃ¤ÃŸig
     in Fortran angeboten wird. */
  
! 128-bit %<long double%> wird fÃ¼r VAX floats nicht unterstÃ¼tztdie UnterstÃ¼tzung fÃ¼r 128-Bit-Systemregister erfordert die Erweiterung %<d128%>31-Bit-ABI.387-Befehlssatz ausgeschaltet, es wird SSE-Arithmetik verwendet64-Bit-ABI.64-Bit-ABI nicht unterstÃ¼tzt im ESA/390-Modus; verwenden Sie stattdessen eine Zuweisung; verwenden Sie stattdessen eine Zuweisung oder Wertinitialisierung; verwenden Sie stattdessen eine Kopierzuweisung; verwenden Sie stattdessen eine Kopierzuweisung oder Kopierinitialisierung; verwenden Sie stattdessen eine Kopierinitialisierung; verwenden Sie stattdessen eine Wertinitialisierung<anonym><geschweift geklammerte Initialisierungsliste><eingebaut><Kommandozeile><Deklarationsfehler>{AufzÃ¤hlung}<fehlerhafter-Ausdruck><Ausdrucksfehler><lambda<lambda><Meldung nicht zur Compilierzeit bekannt><fehlt><RÃ¼ckgabewert> <RÃ¼ckgabewert><Anweisung><strukturierte Bindungen><Markierungsfehler><Template-Argumente-Fehler><Template-Parameter-Fehler><throw-Ausdruck><Typfehler><Typ-Fehler><typedef-Fehler><TypprÃ¤fixfehler><ubsan-Unterprogramm-Aufruf><unbekannter Operator><unbekannt><unbenanntes %s><unbenannt-Festkomma:<unbenannt-Gleitkomma:<unbenannt-vorzeichenlos:<unbenannt><nicht-analysiert><unaufgelÃ¶ster Ã¼berladener Funktionstyp>Eine BOZ-Literalkonstante bei %L kann nicht als tatsÃ¤chliches Argument in einer Funktionsreferenz verwendet werdenEine BOZ-Literalkonstante bei %L kann nicht als tatsÃ¤chliches Argument in einer Unterprogrammreferenz erscheinenEin Faktor, um die obere Schranke des Swing-Modulo-Schedulers fÃ¼r Schleifenplanung einzustellen.Abschneiden von Gleitkomma- zu Ganzzahl darf durch Rundung ersetzt werden, um Modusumschaltung einzusparen.Vor dem Doppelpunkt in der Angabe der angenommenen GrÃ¶ÃŸe des Feldes bei %L muss die untere Grenze angegeben seinFÃ¼r den vordefinierten Allokator %qs bei %L darf kein Speicherbereich oder Traits-Array angegeben werdenEs wurde ein nicht standardmÃ¤ÃŸiger Satz von Anfangswerten angefordert, was gegen das ABI verstÃ¶ÃŸtBei %C wird ein Parametername erwartetEin Synonym fÃ¼r -std=c89 (fÃ¼r C) oder -std=c++98 (fÃ¼r C++).Schwellwert fÃ¼r vom Swing-Modulo-Scheduler betrachteten Durchschnitts-Schleifen-ZÃ¤hler.Bei %C wird eine Typparameterliste erwartetAAPCS unterstÃ¼tzt nicht %<-mcallee-super-interworking%>AAPCS unterstÃ¼tzt nicht %<-mcaller-super-interworking%>ABI %qs kann aufgrund des begrenzten Befehlssatzes %qs nicht implementiert werden, stattdessen wird %qs verwendetABI %qs ist zur Konfigurationszeit nicht aktiviert, der Linker meldet mÃ¶glicherweise einen FehlerABI geÃ¤ndert (von %qs auf %qs), wÃ¤hrend Multilib ausgeschaltet istABI fÃ¼r abgeflachte Struktur mit Bit-Feldern der LÃ¤nge 0 hat wurde mit GCC 10 geÃ¤ndertABI erfordert %<-march=rv%d%>ABI-Varianten fÃ¼r Codeerzeugung (zur Verwendung mit der Option Â»-mabi=Â«):ABI mit Startdateien: %sABSTRACT INTERFACE %qs bei %L darf kein angenommenes ZeichenlÃ¤ngenergebnis haben (F2008: C418)ABSTRACT INTERFACE %qs darf bei %L nicht referenziert werdenABSTRACT INTERFACE bei %CABSTRACT-Typ %qs bei %L verwendetABSTRACT-Typ bei %Cletzter Ausdruck von AC-IMPLIED-DO referenziert Steuervariable bei %Lerster Ausdruck von AC-IMPLIED-DO referenziert Steuervariable bei %LSchrittausdruck von AC-IMPLIED-DO referenziert Steuervariable bei %LACC-CACHE-Direktive bei %C muss innerhalb einer Schleife seinACCESS-Spezifikation bei %L wurde bereits spezifiziertDie ACLE-Funktion %qD kann nur von einer Funktion mit dem Status %qs aufgerufen werdenDie ACLE-Funktion %qD kann nur aufgerufen werden, wenn der SME-Streaming-Modus aktiviert istDie ACLE-Funktion %qD kann nicht aufgerufen werden, wenn der SME-Streaming-Modus aktiviert istACLE-Funktion %qD ist nicht kompatibel mit der Verwendung von %qsACLE-Funktion %qD erfordert ISA-Erweiterung %qsVariable ACQUIRED_LOCKÂ»ACQUIRED_LOCK=Â«-Argument bei %L muss skalare LOGICAL-Variable seinACTION-Typ bei %L steht in Konflikt mit READONLY-SpezifiziererALIGN bei %L erfordert einen skalaren, positiven, konstanten Ganzzahlausdruck fÃ¼r die Ausrichtung, der eine Zweierpotenz istAttribut ALLOCATABLE bei %C in einer STRUCTURE-DefinitionAttribut ALLOCATABLE bei %C in einer TYPE-DefinitionAttribut ALLOCATABLE nicht zulÃ¤ssig fÃ¼r %qs in %s Ortsangabe bei %LALLOCATABLE-Objekt %qs in Klausel %s bei %LALLOCATABLE auÃŸerhalb des INTERFACE-KÃ¶rpers bei %L angegebenDie ALLOCATE-Direktive bei %L innerhalb einer Zielregion muss eine ALLOCATOR-Klausel angebenDie ALLOCATE-Direktive bei %L innerhalb einer Zielregion muss eine ALLOCATOR-Klausel fÃ¼r %qs angebenALLOCATE ObjektALLOCATE von Koarray bei %C in CRITICAL-BlockALLOCATE von Koarray bei %C in DO CONCURRENT-BlockDas intrinsische ALLOCATED bei %L erfordert ein Feld oder eine skalar allozierbare EntityDie ALLOCATORS-Direktive bei %L innerhalb einer Zielregion muss einen ALLOCATOR-Modifikator fÃ¼r %qs angebenALTERNATE RETURN bei %L nicht erlaubtwiedereinsprungsfÃ¤higer APCS-Code nicht unterstÃ¼tzt. IgnoriertARMv8-M Security Extensions sind mit der gewÃ¤hlten FPU inkompatibelASSIGN-Anweisung bei %CASSIGN-Anweisung bei %L erfordert eine skalare Standard-INTEGER-VariableAnweisung ASSIGNED GOTO bei %L erfordert eine skalare INTEGER-VariableASSIGNED-Variable in FORMAT-Markierung bei %LASSOCIATE-Konstrukt bei %CASYNCHRONOUS-Attribut bei %CASYNCHRONOUS-Attribut nicht zulÃ¤ssig fÃ¼r %qs in REDUCE-Ortsangabe bei %LASYNCHRONOUS-Anweisung bei %CASYNCHRONOUS= bei %L ist in Fortran 95 nicht erlaubtATOM-Argument bei %L der intrinsischen Funktion %s muss Koarray oder koindiziert seinATOM-Argument bei %L fÃ¼r intrinsische Funktion %s muss eine ATOMIC_INT_KIND-Ganzzahl seinATOM-Argument bei %L fÃ¼r intrinsische Funktion %s muss eine ATOMIC_INT_KIND-Ganzzahl oder ein ATOMIC_LOGICAL_KIND-Logikwert seinATOM-Argument der intrinsischen Funktion Â»%sÂ« bei %L muss definierbar seinAUX-Zeiger fÃ¼r Kante %d->%d initialisiertAVX-Vektorargument ohne eingeschaltetes AVX Ã¤ndert das ABIAVX-VektorrÃ¼ckgabe ohne eingeschaltetes AVX Ã¤ndert das ABIAVX512F-Vektorargument ohne eingeschaltetes AVX512F Ã¤ndert das ABIAVX512F-VektorrÃ¼ckgabe ohne eingeschaltetes AVX512F Ã¤ndert das ABIAbkÃ¼rzung fÃ¼r Â»-g -feliminate-unused-debug-symbolsÂ«.AbkÃ¼rzung fÃ¼r Â»-g -fno-eliminate-unused-debug-symbolsÂ«.Der absolute Wert von SHIFT muss kleiner oder gleich SIZE bei %C seinAbstrakte Schnittstelle %qs ist in Zuweisung des Prozedurzeigers bei %L ungÃ¼ltigCOBOL-Konstrukte, die von Nicht-ISO-Compilern verwendet werden, akzeptierenUnpassende Argumente in Prozeduraufrufen akzeptieren.Erweiterungen akzeptieren, um alten Code zu unterstÃ¼tzen.Auf Daten im gleichen Abschnitt von gemeinsam verwendeten Ankerpunkten zugreifen.Offset des Zugriffs liegt vor dem Offset des ElternteilsZugriff Ã¼berschneidet sich mit seinem GeschwisterteilGrÃ¶ÃŸe des Zugriffs ist grÃ¶ÃŸer oder gleich der Ã¼bergeordneten GrÃ¶ÃŸeZugriffsspezifikation des Operators %s bei %C wurde bereits spezifiziertZugriffsspezifikation des Operators .%s. bei %C wurde bereits spezifiziertZugriff endet auÃŸerhalb des ElternteilsEffektives CLASS-Feldargument fÃ¼r %qs muss ein vollstÃ¤ndiges Feld bei %L seinEffektives Argument bei %L fÃ¼r INTENT(%s)-Dummy %qs von ELEMENTAL-Unterprogramm %qs ist skalar, aber ein anderes effektives Argument ist ein FeldArgument bei %L von der intrinsischen Funktion %qs muss ein verbundener Zeiger seinEffektives Argument bei %L an reservierbares oder Zeiger-Scheinargument %qs muss Parameter mit Typ aufgeschobener LÃ¤nge haben, genau dann, wenn das Scheinargument einen solchen hatArgument bei %L fÃ¼r den angenommenen Typ des Dummys hat Typparameter oder hat einen abgeleiteten Typ mit typgebundenen oder FINAL-ProzedurenEffektives Argument enthÃ¤lt zuwenige Elemente fÃ¼r Scheinargument %qs (%lu/%lu) bei %LDas tatsÃ¤chliche Argument fÃ¼r %qs bei %L ist ein Funktionsergebnis und das Dummy-Argument ist ALLOCATABLETatsÃ¤chliches Argument fÃ¼r %qs bei %L muss ein Zeiger seinTatsÃ¤chliches Argument fÃ¼r %qs bei %L muss ein Zeiger oder ein gÃ¼ltiges Ziel fÃ¼r den Dummy-Zeiger in einer Anweisung fÃ¼r Zeiger-Zuweisung seinEffektives Argument fÃ¼r %qs kann nicht Feld vermuteter GrÃ¶ÃŸe bei %L seinEffektives Argument fÃ¼r %qs muss ALLOCATABLE bei %L seinEffektives Argument mit EVENT_TYPE oder mit EVENT_TYPE-Komponente bei %L erfordert eine explizite Schnittstelle fÃ¼r Prozedur %qsEffektives Argument mit LOCK_TYPE oder mit LOCK_TYPE-Komponente bei %L erfordert eine explizite Schnittstelle fÃ¼r Prozedur %qsEffektives Argument fÃ¼r %qs bei %L sein muss Koarray seinEffektives Argument fÃ¼r %qs bei %L muss polymorph seinEffektives Argument fÃ¼r %qs bei %L muss einfach fortlaufend oder ein Element eines solchen Feldes seinEffektives Argument fÃ¼r %qs bei %L muss unbegrenzt polymorph sein, da das formale Argument ein Zeiger oder reservierbare unbegrenzt polymorphe EntitÃ¤t ist [F2008: 12.5.2.5]Effektives Argument fÃ¼r %qs bei %L muss denselben deklarierten Typ habenArgument des INTENT(OUT)-Dummy fÃ¼r angenommenen Rang %qs bei %L muss eine bekannte GrÃ¶ÃŸe habenEffektives Argument fÃ¼r fortlaufenden Schein-Zeiger %qs bei %L muss einfach fortlaufend seinEffektives Argument fÃ¼r Nicht-INTENT(INOUT)-Platzhalter %qs bei %L mit Typ EVENT_TYPE oder einer EVENT_TYPE-KomponenteEffektives Argument fÃ¼r Nicht-INTENT(INOUT)-Platzhalter %qs bei %L mit Typ LOCK_TYPE oder einer Komponente LOCK_TYPEEffektive ZeichenkettenlÃ¤nge passt nicht zur deklarierten fÃ¼r Scheinargument Â»%sÂ« (%ld/%ld)Effektive ZeichenkettenlÃ¤nge ist kÃ¼rzer als die deklarierte fÃ¼r Scheinargument Â»%sÂ« (%ld/%ld)CS-PrÃ¤fix zu call und jmp zu indirektem Thunk hinzufÃ¼gen, wenn das Verzweigungsziel in den Registern r8-r15 liegt.Einen Durchlauf zur Entfernung von TeilausdrÃ¼cken nach Schleifenoptimierungen hinzufÃ¼gen.Kommentare hinzufÃ¼gen, wenn Deklarationen im generierten C++-Header ignoriert werden.Beschreibungsattribute zu einigen DWARF-DIEs hinzufÃ¼gen, die kein Namensattribut haben.AusdrÃ¼ckliche PrÃ¼fungen fÃ¼r Division durch Null hinzufÃ¼gen.AusdrÃ¼ckliche PrÃ¼fungen fÃ¼r DivisionsÃ¼berlauf in INT_MIN / -1 hinzufÃ¼gen.ZusÃ¤tzliche Anmerkungen zu Diagrammen hinzufÃ¼gen.ZusÃ¤tzliche Anmerkungen an Assemblerausgabe anfÃ¼gen.ZusÃ¤tzliche Informationen speicherm die das dynamische Laden beschleunigen kÃ¶nnen, solange die BinÃ¤rdateien unverÃ¤ndert bleiben.Ausgabeformat hinzufÃ¼gen.Den Abschnittsnamen Â».lowerÂ« voranstellen, wenn mit Â»-m{code,data}-region=lowerÂ« Ã¼bersetzt wird (Vorgabe: nein).ZusÃ¤tzliche Fehlerprotokollausdrucke.Maximal erlaubte GrÃ¶ÃŸenzunahme der GesamtgrÃ¶ÃŸe der neuen Parameter, bis zu der IPA-RSA Zeiger auf Aggregate ersetzt, wenn der Zeiger auf eine lokale Variable zeigt, die vom Aufrufer nur geschrieben oder als Funktionsargument Ã¼bergeben wird.Nach dem Erkennen von undefiniertem Verhalten versuchen, die AusfÃ¼hrung fortzusetzen.Schleifen aggressiv optimieren, dabei sprachspezifische EinschrÃ¤nkungen einbeziehen.Interner Fehler: Alias and target%'s comdat groups differsInterner Fehler: Alias and target%'s section differsAlias fÃ¼r --mcpu=g10.Alias fÃ¼r -mcpu=g13.Alias fÃ¼r -mcpu=g14.Interner Fehler: Alias has call edgesInterner Fehler: Alias has more than one alias referenceInterner Fehler: Alias has non-alias referenceAlias:Alle Marken ausrichten.Alle Schleifen auf 32-Byte-Grenzen ausrichten.Code und Daten auf 32 Bit ausrichten.Ziel der Zeichenkettenoperationen ausrichten.Doubles auf 64-Bit-Grenzen ausrichten.Funktionseinsprung an 4-Byte-Grenze ausrichten.Marken ausrichten, die nur mit SprÃ¼ngen erreicht werden kÃ¶nnen.Einige Doubles auf DWord-Grenze ausrichten.Die AnfÃ¤nge jeder Funktion ausrichten.FunktionsanfÃ¤nge ausrichten.SchleifenanfÃ¤nge ausrichten.Auf Basistyp des Bitfeldes ausrichten.Auf Basistyp des Bitfeldes ausrichten. Nicht annehmen, dass unausgerichtete Zugriffe vom System behandelt werden.Variablen auf 32-Bit-Grenzen ausrichten.Alle LEN-Typparameter des hereingereichten Dummyarguments %qs von %qs bei %L mÃ¼ssen ASSUMED sein.Alle Dateien, die eine solche Variable freigeben kÃ¶nnten, mÃ¼ssen mit %<-fopenmp-allocators%> kompiliert werdenAlle intrinsischen Prozeduren sind ungeachtet des gewÃ¤hlten Standards verfÃ¼gbar.Alle LEN-Typparameter in der TYPE-IS-Anweisung bei %C mÃ¼ssen ASSUMED seinZuordnungsfÃ¤higes %qs bei %L kann keine Initialisierung habenReservierbares Feld %qs bei %L muss aufgeschobene Form oder vermuteten Rang habenDas allozierbare Zeichen-Dummy-Argument %qs bei %L muss eine verzÃ¶gerte LÃ¤nge haben, da die Prozedur %qs BIND(C) istZuordnungsfÃ¤hige Koarray-Variable %qs bei %L muss aufgeschobene Form habenAllozierbare Komponente %s bei %L muss eine Kodimension haben, da sie eine Subkomponente als Nicht-Koarray des Typs EVENT_TYPE hatAllozierbare Komponente %s bei %L muss eine Kodimension haben, da es eine Subkomponente als Nicht-Koarray des Typs LOCK_TYPE hatAllozierbare Komponente %s bei %L des Typs EVENT_TYPE muss eine Kodimension habenAllozierbare Komponente %s bei %L des Typs LOCK_TYPE muss eine Kodimension habenAllozierbare Komponente der Struktur bei %C muss eine aufgeschobene Form habenAllozierbare Komponente oder deferred-shaped-Feld bei %C in DATA-AnweisungReservierbare Funktion %qs bei %L muss eine explizite Funktionsschnittstelle habenLokale Variablen auf Stapel anlegen, um indirekte Rekursion zu ermÃ¶glichen.Allocate-Objekt bei %C ist kein Nicht-Prozedur-Zeiger oder reservierbare VariableALLOCATE-Objekt bei %L tritt auch bei %L aufALLOCATE-Objekt bei %L ist weder ein Datenzeiger noch eine reservierbare VariableALLOCATE-Objekt bei %L ist Subobjekt des Objekts bei %LALLOCATE-Objekt bei %L muss ALLOCATABLE oder ein POINTER seinALLOCATE-Objekt bei %L mit Parameter aufgeschobenen Typs erfordert entweder eine Typspezifikation, SOURCE-Marke oder MOLD-MarkeReservierung von %s bei %L mit Typspezifikation erfordert den selben ZeichenkettenlÃ¤ngenparameter wie in der DeklarationReservierung von %s mit ABSTRACT-Basistyp bei %L erfordert Typspezifikation oder QuellausdruckAllokator %qs bei %L in USES_ALLOCATORS muss eine skalare Ganzzahl der Art %<omp_allocator_handle_kind%> seinAllokator %qs bei %L in USES_ALLOCATORS muss entweder eine Variable oder ein vordefinierter Allokator seinGCC erlauben (oder verbieten), LOOP-Befehle zu verwenden.IEC559-Gleitkommaausnahmen in konstanten AusdrÃ¼cken zulassen.Eine literale BOZ-Konstante in einem ungÃ¼ltigen Kontext erlauben, sowie mit X statt mit Z.Zugriff auf Instanzvariablen erlauben, als ob sie lokale Deklarationen innerhalb der Instanzmethoden-Implementierungen wÃ¤ren.Im festen Modus beliebig lange Zeilen erlauben.Im freien Modus beliebig lange Zeilen erlauben.Zulassen, dass Bitfelder Wortgrenzen Ã¼berschneiden.Erlauben, SprÃ¼nge mit anderen Befehlen zu packen.Den eingebauten Funktionen ceil, floor, round, trunc erlauben, Â»inexactÂ«-Exceptions zu werfen.Dollarzeichen in EntitÃ¤tsnamen erlauben.Schnelle SprÃ¼nge zum Nachrichten-Dispatcher erlauben.Vorhalten von Funktionsadressen in Registern erlauben.GCC erlauben, LIW-Befehle zu verwenden.GCC erlauben, SETLB- und Lcc-Befehle zu verwenden.Hardware-Gleitkommabefehle erlauben, um 32-Bit- und 64-Bit-Befehle abzudecken.Implizite Umwandlungen zwischen Vektoren mit unterschiedlicher Anzahl der Teile und/oder abweichenden Elementtypen erlauben.Erlauben, dass der dynamische Linker Funktionen und Variablen mit solchen unterschiedlicher Semantik (oder Initialisierungen) gemischt platzieren darf.Mathematische Optimierungen erlauben, die IEEE- oder ISO-Standards verletzen kÃ¶nnten.Optimierung fÃ¼r Gleitkommaarithmetik erlauben, auch wenn durch Runden ein anderes Ergebnis herauskommen kann.Nicht ausgereifte Planung von eingereihten Befehlen erlauben.Nur-Lese-Daten in sdata-Abschnitt erlauben.Das Entfernen von malloc- und free-Paaren erlauben, wenn der allozierte Block ungenutzt ist.Vorzeichenerweiterung in Fusionsoperationen erlauben.Spekulative Bewegung bei mehr Ladebefehlen erlauben.Spekulative Bewegung von Nicht-Lade-Befehlen erlauben.Spekulative Bewegung bei einigen Ladebefehlen erlauben.Verschiedene Typen fÃ¼r die Argumente des Â»?Â«-Operators erlauben.Dem Compiler erlauben, neue DatenwettlÃ¤ufe bei SpeichervorgÃ¤ngen einzufÃ¼hren.Im Durchlauf, der Speicheroperationen zusammenfasst, unausgerichtete Speicherungen zulassen, sofern es erlaubt ist.Verwendung von MDMX-Befehlen erlauben.Verwendung von MT-Befehlen erlauben.Verwendung von Hardware-Gleitkommabefehlen fÃ¼r V850E2V3 und aufwÃ¤rts erlauben.Verwendung von Hardware-Gleitkomma-ABI und -befehlen erlauben.FÃ¼r Festkomma-Bruchzahlen das Abschneiden statt Runden erlauben.Zwei Befehle pro Taktzyklus erlauben.Verwendung von r15 fÃ¼r Inline-Assembler erlauben.Bereits in CONTAINS-Block bei %CAlternative RETURN-Anweisung bei %C ist nur innerhalb einer SUBROUTINE erlaubtAlternative RETURN-Anweisung bei %L erfordert einen SCALAR-INTEGER-Spezifizierer als RÃ¼ckgabeAlternative Aufrufkonvention.Alternativer RÃ¼cksprung bei %L ist in einer DTIO-Prozedur nicht erlaubtAlternative RÃ¼ckgabe kann nicht in Operatorschnittstelle bei %L auftretenAlternatives RÃ¼ckgabe-Dummyargument kann nicht in einer SUBROUTINE mit BIND(C)-Attribut bei %L auftretenAlternativer RÃ¼ckgabespezifizierer in elementarem Unterprogramm %qs bei %L ist nicht erlaubtAlternativer RÃ¼ckgabespezifizierer in Funktion %qs bei %L ist nicht erlaubtArgument fÃ¼r AlternativrÃ¼ckgabe bei %CObwohl nicht referenziert, hat %qs mehrdeutige Schnittstellen bei %LAltiVec-Argument an Funktion ohne Prototyp Ã¼bergebenAltiVec wird fÃ¼r dieses Ziel nicht unterstÃ¼tztFunktionseinsprung, Sprungziele und RÃ¼cksprungadressen ausrichten.Immer weite Aufrufe erzeugen.Atomare Operationen, die sich auf TeilwÃ¶rter beziehen, stets inlinen.Register $lp immer auf dem Stapel speichern.Bitfelder immer als gleichgroÃŸ wie Â»intÂ« ansehen.Immer Dynamic Realigned Argument Pointer (DRAP) verwenden, um den Stapel neu auszurichten.Immer JSR fÃ¼r Aufrufe verwenden, niemals BSR.Mehrdeutiges !$OMP DECLARE REDUCTION von Modul %s bei %LMehrdeutige Schnittstellen in %s fÃ¼r %qs bei %L und %qs bei %LMehrdeutiges Symbol in TYPE-Definition bei %CDie geeignete Diagnosemeldung mit der Kommandozeilenoption anreichern, die sie steuert.Die Menge an lokalem, gemeinsam genutztem Speicher (LDS), die fÃ¼r private Gang-Variablen reserviert werden soll.Eine ALLOCATOR-Klausel ist erforderlich, da das Listenelement %<%s%s%s%> bei %L das Attribut SAVE hatAlias fÃ¼r -minterlink-compressed; fÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤t erhalten.Alternative RÃ¼ckkehr bei %L ohne ein *-ScheinargumentInterner Fehler: An indirect edge from %s is not marked as indirect or has associated indirect_info, the corresponding statement is: Ein Ã¤uÃŸeres FORALL-Konstrukt hat bereits einen Index mit Namen %LDoppelwort-Vertauschungen aus VSX-Berechnungen analysieren und entfernen.Interner Fehler: Analyzed alias has no referenceAssemblerbefehle mit geschÃ¤tzten Adressen kommentieren.Tabellensprunganweisung (jr {reg}) mit Anmerkungen versehen, um sie mit der Sprungtabelle zu verknÃ¼pfen.Einen zweiten Unterstrich anhÃ¤ngen, wenn der Name bereits einen Unterstrich enthÃ¤lt.Unterstriche an extern sichtbare Namen anhÃ¤ngen.Negatives Vorzeichen auf Null-Werte anwenden.Besondere Regeln anwenden, um Paket fÃ¼r die Laufzeitumgebung zu kompilieren.Variablenerweiterung anwenden, wenn Schleifen abgerollt werden.UngefÃ¤hre Anzahl der Befehle in der Funktion, in Einheiten von 1k, die zu einer einfachen lokalen RA fÃ¼hren.Die Auswirkungen von Funktionsaufrufen abschÃ¤tzen, um die Analyse zu vereinfachen.Argument %<A%> mit INTENT(OUT) bei %L des intrinsischen Unterprogramms %s darf keinen Vektorindex habenArgument %<S%> von NEAREST bei %L darf nicht Null seinArgument %qs tritt im Aufruf von %qs bei %L doppelt aufDas Argument %qs bei %L zu der deklarativen Direktive !$OMP ALLOCATE muss eine Variable seinDas Argument %qs bei %L zu deklarativem !$OMP ALLOCATE muss sich im selben Bereich befinden wie die VariablendeklarationArgument %qs bei %L zu Listenelement in %<need_device_addr%> bei %L darf nicht das Attribut VALUE habenDas Argument %qs bei %L zum Listenelement in %<need_device_ptr%> bei %L muss ein Skalar vom TYP(C_PTR) seinArgument %qs des intrinsischen %qs bei %L muss typkonform zu Argument %qs bei %L seinArgument %qs von %qs mit PASS(%s) bei %L darf nicht ALLOCATABLE seinArgument %qs von %qs mit PASS(%s) bei %L darf kein POINTER-Attribut habenArgument %qs von %qs mit PASS(%s) bei %L muss abgeleiteten Typ %qs habenArgument %qs von %qs mit PASS(%s) bei %L muss abgeleiteten Typ %qs habenArgument %qs von %qs mit PASS(%s) bei %L muss den parametrisierten abgeleiteten Typ %qs habenParameter %qs von %qs mit PASS(%s) bei %L muss skalar seinArgument %qs von MOD bei %L darf nicht Null seinArgument %qs von MODULO bei %L darf nicht 0 seinFÃ¼r Argument %qs des elementaren Unterprogrammes %qs bei %L muss INTENT oder das VALUE-Attribut angegeben werdenArgument %qs der elementaren Prozedur bei %L kann kein ALLOCATABLE-Attribut habenArgument %qs der elementaren Prozedur bei %L kann kein POINTER-Attribut habenArgument %qs der elementaren Prozedur bei %L muss skalar seinArgument %qs der reinen Funktion %qs bei %L muss INTENT(IN) oder VALUE seinArgument %qs der reinen Funktion %qs bei %L mit VALUE-Attribut, aber ohne INTENT(IN)FÃ¼r Argument %qs des reinen Unterprogrammes %qs bei %L muss INTENT oder das VALUE-Attribut angegeben werdenArgument %qs des reinen Unterprogrammes %qs bei %L mit VALUE-Attribut, aber ohne INTENTArgument %qs der Anweisungs-Funktion %qs bei %L muss skalar seinArgument CPTR bei %L fÃ¼r C_F_POINTER muss den Typen TYPE(C_PTR) habenArgument CPTR bei %L fÃ¼r C_F_PROCPOINTER muss den Typen TYPE(C_FUNPTR) habenArgument C_PTR_1 bei %L fÃ¼r C_ASSOCIATED muss den Typ TYPE(C_PTR) oder TYPE(C_FUNPTR) habenArgument C_PTR_2 bei %L fÃ¼r C_ASSOCIATED muss denselben Typ wie C_PTR_1 haben: %s statt %sArgument FPTR bei %L fÃ¼r C_F_POINTER muss ein Zeiger seinArgument FPTR fÃ¼r C_F_POINTER bei %L darf nicht koindiziert seinArgument FPTR bei %L fÃ¼r C_F_PROCPOINTER muss ein Prozedurzeiger seinArgument FPTR bei %L fÃ¼r C_F_PROCPOINTER darf nicht koindiziert seinArgument NCOPIES des intrinsischen REPEAT ist negativ (sein Wert ist %ld)Argument NCOPIES des intrinsischen REPEAT ist bei %L negativArgument NCOPIES des intrinsischen REPEAT ist zu groÃŸArgument NCOPIES des intrinsischen REPEAT ist bei %L zu groÃŸArgument X bei %L fÃ¼r C_FUNLOC muss eine Prozedur oder ein Prozedurzeiger seinArgument X bei %L fÃ¼r C_FUNLOC darf nicht koindiziert seinArgument X bei %L fÃ¼r C_LOC darf keine Zeichenkette der LÃ¤nge 0 seinArgument X bei %L fÃ¼r C_LOC muss entweder POINTER- oder TARGET-Attribut habenArgument X bei %L fÃ¼r C_LOC darf nicht koindiziert seinArgument bei %L fÃ¼r C_LOC darf nicht polymorph seinArgument dim bei %L muss INTEGER-Typ habenArgument dim bei %L muss skalar seinArgumentindex bei %L Ã¼bersteigt Anzahl der Argumente %dUnpassende Argumente fÃ¼r die Ã¼berschreibende Prozedur %qs bei %L: %sArgument von %s bei %L muss von der LÃ¤nge eins seinArgument der Funktion %s bei %L ist negativArgument der Funktion %s bei %L ist zu groÃŸ fÃ¼r die zusammenfassende Sequenz der Art %dArgument der Funktion %s bei %L auÃŸerhalb des Wertebereichs [0,127]Argument von ACOS bei %L muss zwischen -1 und 1 liegenArgument von ACOSD bei %L muss zwischen -1 und 1 liegenArgument von ACOSH bei %L darf nicht kleiner als 1 seinArgument von ASIN bei %L muss zwischen -1 und 1 liegenArgument von ASIND bei %L muss zwischen -1 und 1 liegenArgument von ATANH bei %L muss im Bereich -1 bis 1 liegenArgument der FINAL-Prozedur bei %L muss Typ %qs habenArgument der FINAL-Prozedur bei %L darf nicht ALLOCATABLE seinArgument der FINAL-Prozedur bei %L darf nicht INTENT(OUT) seinArgument der FINAL-Prozedur bei %L darf nicht OPTIONAL seinArgument der FINAL-Prozedur bei %L darf kein POINTER seinArgument von IACHAR bei %L muss LÃ¤nge Eins habenArgument der IACHAR-Funktion bei %L auÃŸerhalb des Wertebereiches 0..127Argument von ICHAR bei %L muss LÃ¤nge Eins habenArgument von LOG bei %L kann nicht kleiner oder gleich Null seinArgument von LOG10 bei %L kann nicht kleiner oder gleich Null seinArgument der SELECT-Anweisung bei %L kann nicht %s seinArgument der SELECT-Anweisung bei %L muss ein skalarer Ausdruck seinArgument von SQRT bei %L hat negativen WertArgument fÃ¼r %<-fcheck%> ist ungÃ¼ltig: %sArgument fÃ¼r %<-ffpe-summary%> ist ungÃ¼ltig: %sArgument fÃ¼r %<-ffpe-trap%> ist ungÃ¼ltig: %sArgumenttypen des intrinsischen %qs bei %L mÃ¼ssen passen (%s/%s)Argumente von %qs bei %L und %L kÃ¶nnen nicht beide literale BOZ-Konstanten seinArgumente von %qs unterscheiden sich im Typ bei %LArithmetische IF-Anweisung bei %CArithmetische IF-Anweisung bei %L erfordert einen skalaren REAL- oder INTEGER-AusdruckArithmetisches NaN bei %LArithmetisches NaN bei Umwandlung von %s in %s bei %L. Diese ÃœberprÃ¼fung kann mit der Option %<-fno-range-check%> ausgeschaltet werdenArithmetik OK bei %LArithmetik OK beim Konvertieren von %s in %s bei %LArithmetik-Ãœberlauf bei %LArithmetischer Ãœberlauf bei Umwandlung von %s in %s bei %L. Diese ÃœberprÃ¼fung kann mit der Option %<-fno-range-check%> ausgeschaltet werdenArithmetik-Unterlauf bei %LArithmetischer Unterlauf bei Umwandlung von %s in %s bei %L. Diese ÃœberprÃ¼fung kann mit der Option %<-fno-range-check%> ausgeschaltet werdenFeld %qs bei %L kann keine aufgeschobene Form habenFeld %qs bei %L ist eine Variable, die nicht zu konstantem Ausdruck reduziertDas Feld %qs bei %L ist grÃ¶ÃŸer als der Grenzwert, der durch %<-fmax-stack-var-size=%> festgelegt wurde, daher wurde es vom Stapel in den statischen Speicher verschoben. Dies macht die Prozedur unsicher, wenn sie rekursiv oder gleichzeitig von mehreren Threads aus aufgerufen wird. ErwÃ¤gen Sie, die Grenze fÃ¼r %<-fmax-stack-var-size=%> anzuheben, verwenden Sie %<-frecursive%> (dadurch wird die BeschrÃ¤nkung von %<-fmax-stack-var-size%> aufgehoben), oder Ã¤ndern Sie den Code so, dass er ein ALLOCATABLE-Feld verwendet. Wenn auf die Variable niemals nebenlÃ¤ufig zugegriffen wird, kÃ¶nnen Sie diese Warnung ignorieren, Sie kÃ¶nnten diese Variable auch mit dem Attribut SAVE deklarieren.Feld %qs bei %L mit nicht-konstanten Grenzen kann kein EQUIVALENCE-Objekt seinFeld %qs ist nicht in Reduzierung bei %L erlaubtUnstimmige Arraygrenzen fÃ¼r Dimension 1 des Arrays (%ld/%ld)Unstimmige Arraygrenzen fÃ¼r Dimension 2 des Arrays (%ld/%ld)Feldkomponente der Struktur bei %C muss eine explizite Form habenFeldkomponente der Struktur bei %C muss explizite oder aufgeschobene Form habenFeldkonstruktor mit Typspezifikation bei %CFeldkonstruktorwert %qs bei %L ist vom ABSTRACT-Typ %qsWert fÃ¼r Feldkonstruktor bei %L darf nicht unbegrenzt polymorph sein [F2008: C4106]Feldeinheit bei %L benÃ¶tigtFeld in der Initialisierungsliste bei %L muss eine explizite Form habenFeldindex bei %L ist ein Feld mit Rang %dFeldindex bei %L muss INTEGER-Typ haben, %s gefundenFeldindex bei %L muss skalar seinFeld ist nicht zusammenhÃ¤ngend bei %LFeld von interoperablem Typ bei %L fÃ¼r C_LOC; es ist nichtallozierbar und hat weder angenommene noch explizite GrÃ¶ÃŸeArray-Operanden sind unzureichend bei %LArrayoperanden sind unzureichend beim Konvertieren von %s in %s bei %LFeldzeiger %qs bei %L muss aufgeschobene Form oder vermuteten Rang habenFeldreferenz bei %C kann nicht mehr als %d Dimensionen habenFeldreferenz bei %C darf nur maximal 7 Dimensionen habenFeldreferenz bei %L ist auÃŸerhalb der Grenzen (%ld < %ld) in Kodimension %dFeldreferenz bei %L ist auÃŸerhalb der Schranken (%ld < %ld) in Dimension %dFeldreferenz bei %L ist auÃŸerhalb der Grenzen (%ld > %ld) in Kodimension %dFeldreferenz bei %L ist auÃŸerhalb der Schranken (%ld > %ld) in Dimension %dFeldreferenz bei %L ist auÃŸerhalb der Grenzen (%ld < %ld) in Schleife, die bei %L beginntFeldreferenz bei %L ist auÃŸerhalb der Grenzen (%ld > %ld) in Schleife, die bei %L beginntFeldreferenz in EQUIVALENCE bei %C kann kein Feldabschnitt seinFeldreferenz auÃŸerhalb des WertebereichsFeldabschnitt bei %L fÃ¼r C_LOCFeldabschnittbestimmer, z.B. %<(:)%>, wird neben dem Koarray-Bezeichner %<[...]%> bei %C benÃ¶tigtFeldabschnitt mit Vektorindex bei %L darf nicht das Ziel eines Zeigers seinFeldabschnitte: %qs ist in !$ACC DECLARE bei %L nicht erlaubtFeldspezifikation bei %C hat mehr als %d DimensionenFeldspezifikation bei %C mit mehr als 7 DimensionenFeldspezifikation fÃ¼r Symbol %qs in COMMON bei %C muss explizit seinFeldspezifikation muss bei %L aufgeschoben werdenFeldspezifikation oder feldwertiger SOURCE=-Ausdruck erforderlich in ALLOCATE-Anweisung bei %LIn ALLOCATE-Anweisung bei %L ist Feld-Spezifikation erforderlichFeldbereich als effektives Argument bei %L ist wegen VOLATILE-Attribut unvertrÃ¤glich mit dem Scheinargument ohne vermutete Form %qsFeldbereich mit Vektorindex als effektives Argument bei %L ist unvertrÃ¤glich mit INTENT(OUT), INTENT(INOUT), VOLATILE- und ASYNCHRONOUS-Attribut des Scheinarguments %qsDa der erweiterte Typ %qs bei %L eine Koarray-Komponente hat, muss der Elterntyp %qs auch eine habenAssembleroptionen
  =================
  
! Zugewiesene GOTO-Anweisung bei %CZugewiesene Marke ist keine ZielmarkeZuweisung eines anderen Wertes als 0 oder 1 an LOGICAL hat bei %L undefiniertes ErgebnisZuweisung von Skalar zu unalloziertem ArraySchnittstelle fÃ¼r Zuweisungsoperator bei %L muss eine SUBROUTINE seinSchnittstelle des Zuweisungsoperators bei %L muss zwei Argumente habenSchnittstelle des Zuweisungsoperators bei %L darf keine INTRINSIC Typzuweisung redefinierenZuweisung an FORALL-Indexvariable bei %LDie Zuweisung zu einer KIND- oder LEN-part_ref bei %L ist nicht erlaubtZuweisung an einen konstanten Ausdruck bei %CZuweisung an allozierbare polymorphe Variable bei %LZuweisung an allozierbare polymorphe Variable bei %L erfordert %<-frealloc-lhs%>Zuweisung an koindizierte Variable bei %L in einer PURE-ProzedurZuweisung an zusammenhÃ¤ngenden Zeiger von nichtzusammenhÃ¤ngendem Ziel bei %LZuweisung an polymorphes Koarray bei %L ist nicht erlaubtAssociate-Name %qs in %s-Klausel bei %LAssociate-Name %qs in SHARED-Klausel bei %LZugeordneter Name %qs bei %L wird als Feld verwendetAssociate-Name %qs kann nicht in Variablen-Definitionskontext (%s) bei %L auftreten, da sein Ziel bei %L es auch nicht kannZugeordneter Name %qs bei %L ist ein ProzedurnameZugeordneter Name %qs bei %L ist ein ProzedurzeigerDer zuordnende Selektor-Ausdruck bei %L ergibt eine ProzedurVerknÃ¼pfungsziel bei %C darf nicht koindiziert seinZuordnungsziel bei %L darf kein BOZ-Literal seinAnnehmen, dass die in C++ ersetzbaren globalen Operatoren new, new[], delete und delete[] den sichtbaren globalen Speicher weder auslesen noch beschreiben.Annehmen, dass ES wÃ¤hrend der gesamten Laufzeit 0 ist; verwenden Sie ES: fÃ¼r schreibgeschÃ¼tzte Daten.Annahme, dass ICPLBs zur Laufzeit eingeschaltet sind.Von einem groÃŸen TLS-Segment ausgehen.Annehmen, dass alle Symbole 32-Bit-Werte haben.Annehmen, dass alle Funktionen mit variablen Argumenten Prototypen haben.Assembler-UnterstÃ¼tzung fÃ¼r (DWARF2+-).loc-Direktiven annehmen.Assembler-UnterstÃ¼tzung fÃ¼r Ansicht in (DWARF2+-).loc-Direktiven annehmen.Annehmen, dass der Code mit GAS assembliert wird.Annehmen, dass der Code spÃ¤ter mit GNU ld gebunden wird.Annehmen, dass der Code spÃ¤ter mit HP ld gebunden wird.Annehmen, dass gemeinsame Deklarationen durch solche Ã¼bersteuert werden dÃ¼rfen, die ein lÃ¤ngeres hintangestelltes Array haben.Annehmen, dass Datensegmente relativ zum Textsegment liegen.Annehmen, dass externe Symbole, deren natÃ¼rliche Ausrichtung 1 wÃ¤re, potenziell nicht ausgerichtet sind. StandardmÃ¤ÃŸig wird bei allen Symbolen ohne explizite Ausrichtung davon ausgegangen, dass sie sich auf einer 2-Byte-Grenze befinden, wie von der IBM-Z-ABI vorgeschrieben.Annehmen, dass Gleitkommaoperationen abgefangen werden kÃ¶nnen (Â»trapÂ«).Annehmen, dass der ankommende Stapel an dieser Potenz von 2 ausgerichtet ist.Annahme, dass Marken und Symbole mit absoluten 16-Bit-Adressen adressiert werden kÃ¶nnen.Annehmen, dass das Datenladen aus dem Flashspeicher langsamer ist als Befehle zu laden.Annehmen, dass die Speicherverweise geordnet sind und daher keine Barrieren erforderlich sind.Annehmen, dass keine NaNs oder Unendlichkeiten erzeugt werden.Normale C-AusfÃ¼hrungsumgebung vermuten.Annehmen, dass ZeigerÃ¼berlÃ¤ufe Ã¼berschlagen (Wraparound).MÃ¶gliche doppelte Fehlausrichtung annehmen.Rundung zur nÃ¤chsten Ganzzahl fÃ¼r Zwecke der Planung annehmen.Annehmen, dass vorzeichenbehaftete arithmetische ÃœberlÃ¤ufe regulÃ¤r Ã¼berschlagen (Wraparound).Kleinen Adressraum annehmen.Annehmen, dass strenge Alias-Regeln Ã¼ber nicht-inline-Funktionsgrenzen hinweg gelten.Annehmen, dass strenge Alias-Regeln gelten.Ziel-CPU als Â»big endianÂ«-konfiguriert annehmen.Ziel-CPU als Â»little endianÂ«-konfiguriert annehmen.Annehmen, dass auf alle Daten im statischen Speicher via LDS/STS zugegriffen werden kann. Diese Option ist nur fÃ¼r Reduced-Tiny-GerÃ¤te wie ATtiny40 sinnvoll.Annehmen, dass Gleitkomma-Speichern und -Laden wahrscheinlich keinen Konflikt verursachen, wenn sie in dieselbe Befehlsgruppe gelegt werden.Annehmen, dass Schleifen mit einem Ausgang keine Endlosschleifen sind.Annehmen, dass EmpfÃ¤nger von Objective-C-Nachrichten nil sein kÃ¶nnen.Annehmen, dass LaufzeitunterstÃ¼tzung vorhanden ist, und daher -lsim von Linker-Kommandozeile auslassen.Annehmen, dass Standard-D-Laufzeitbibliotheken und Â»D mainÂ« vorhanden sind.Annahme, dass die reziproken abschÃ¤tzenden Befehle hÃ¶here Genauigkeit bieten.Annehmen, dass Quelldatei in fester Form vorliegt.Annehmen, dass Quelldatei in freier Form vorliegt.Annehmen, dass die Werte einer AufzÃ¤hlung immer im kleinsten Bereich des Typs liegen.Annehmen, dass bedingte SprÃ¼nge mit Weite Null schnell sind.VxWorks RTP-Umgebung vermuten.VxWorks vThreads-Umgebung vermuten.Einheitliche Syntax fÃ¼r Inline-Assemblercode annehmen.Variable %qs mit vermuteter oder aufgeschobener ZeichenlÃ¤nge in konstantem Ausdruck bei %LArgument bei %L des intrinsischen RESHAPE mit angenommenem Rang muss zusammenhÃ¤ngend seinFeld %qs mit vermutetem Rang in Klausel %s bei %LFeld %qs mit vermuteter Form bei %L ist nicht in einem Initialisierungs-Ausdruck erlaubtFeld mit vermuteter Form bei %L muss ein Scheinargument seinFeld %qs mit vermuteter GrÃ¶ÃŸe bei %L ist nicht in einem Initialisierungs-Ausdruck erlaubtFeld %qs mit vermuteter GrÃ¶ÃŸe in Klausel %s bei %LFeld %qs mit vermuteter GrÃ¶ÃŸe in Klausel COPYPRIVATE bei %LFeld %qs mit vermuteter GrÃ¶ÃŸe in Namensliste %qs bei %C ist nicht erlaubtFeld %qs mit vermuteter GrÃ¶ÃŸe in Namensliste %qs bei %L ist nicht erlaubtFeld mit vermuteter GrÃ¶ÃŸe bei %L muss ein Schein-Argument seinVermuteter Typ bei %CVermuteter Typ bei %C ist fÃ¼r Komponenten nicht erlaubtVermuteter Typ der Variable %s bei %L ist nur fÃ¼r Scheinvariablen erlaubtDas Zeichen-Dummy-Argument %qs bei %L hat eine angenommene LÃ¤nge und gehÃ¶rt zur Prozedur %qs mit Attribut BIND(C)Argument mit angenommenem Rang bei %L ist nur als tatsÃ¤chliches Argument der intrinsischen Abfragefunktionen oder von RESHAPE erlaubt. Letzteres ist ein experimentelles F202y-Feature. Verwenden Sie -std=f202y, um es einzuschaltenArgument mit angenommenem Rang bei %L ist nur als erstes effektives Argument der intrinsischen Abfragefunktion Â»%sÂ« erlaubtArgument vermuteten Ranges erfordert eine explizite Schnittstelle bei %LFeld %qs mit vermutetem Rang bei %L ist nicht in einem Initialisierungs-Ausdruck erlaubtFeld mit vermutetem Rang bei %CFeld mit vermutetem Rang bei %L darf kein Attribut VALUE oder CODIMENSION habenFeld mit vermutetem Rang bei %L muss ein Scheinargument seinVariable %s vermuteten Ranges bei %L als effektives Argument fÃ¼r Abfragefunktion muss das erste Argument seinVariable %s vermuteten Ranges bei %L kann nur als effektives Argument verwendet werdenVariable Â»%sÂ« vermuteten Ranges bei %L darf keine Referenz auf Subobjekt habenEffektives Argument mit vermuteter Form bei %L ist wegen VOLATILE-Attribut unvertrÃ¤glich mit dem Scheinargument ohne vermutete Form %qsFeld mit angenommener Form %qs bei %L als Scheinargument fÃ¼r die BIND(C)-Prozedur %qs bei %LFeld %qs mit vermuteter Form bei %L ist nicht in einem Initialisierungs-Ausdruck erlaubtFeld mit angenommener GrÃ¶ÃŸe ist fÃ¼r %qs in Ortsangabe %s bei %L nicht erlaubtFelder mit angenommener GrÃ¶ÃŸe sind nicht interoperabelDummyfeld mit vermuteter GrÃ¶ÃŸe mit Â»!$ACC DECLAREÂ« bei %LArgument fÃ¼r angenommenen Typ bei %L, das dem Dummy-Argument %qs fÃ¼r den angenommenen Rang entspricht, muss von angenommener Form oder angenommenem Rang seinFeld mit vermutetem Rang bei %L erfordert Scheinargument %qs mit vermutetem RangArgument Â»%sÂ« bei %L vermuteten Typs erfordert eine explizite SchnittstelleArgument bei %L mit angenommenem Typ ist nicht als effektives Argument der intrinsischen Routine Â»%sÂ« erlaubtArgument bei %L mit angenommenem Typ ist nur als erstes Argument der intrinsischen Routine Â»%sÂ« erlaubtVariable %s vermuteten Typs bei %L als effektives Argument fÃ¼r Abfragefunktion muss das erste Argument seinVariable %s vermuteten Typs bei %L darf nicht die Attribute ALLOCATABLE, CODIMENSION, POINTER oder VALUE habenVariable %s vermuteten Typs bei %L darf nicht das Attribut INTENT(OUT) habenVariable %s vermuteten Typs bei %L kann nur als effektives Argument verwendet werdenVariable %s vermuteten Typs bei %L darf kein Feld mit ausdrÃ¼cklicher Form seinVariable %s vermuteten Typs bei %L darf keine Referenz auf Subobjekt habenIm globalen GÃ¼ltigkeitsbereich:Es werden hÃ¶chstens %i ProfildurchlÃ¤ufe unterstÃ¼tzt. Evtl. beschÃ¤digte Datei?Auf hÃ¶chster Ebene:Versuch, nicht reserviertes Â»%sÂ« freizugebenVersuchen, die VerzÃ¶gerungsschlitze der Sprungbefehle auszufÃ¼llen.Versuch, die COMMON-BlÃ¶cke %s und %s durch EQUIVALENCE bei %C indirekt zu Ã¼berschneidenVersuch, den Stapel an dieser Potenz von 2 auszurichten.Versuchen, identische Konstanten Ã¼ber Ãœbersetzungseinheiten hinweg zu verschmelzen.Versuchen, identische Konstanten und konstante Variablen zu verschmelzen.Versuchen, identische Zeichenketten zur Fehlersuche Ã¼ber Ãœbersetzungseinheiten hinweg zu verschmelzen.Versuch, bereits reservierte Variable zu reservierenVersuch, bereits reservierte Variable Â»%sÂ« zu reservierenAttribut %s bei %L in einer TYPE-DefinitionAttribut bei %L ist in STRUCTURE-Definition nicht erlaubtAttribut bei %L ist in TYPE-Definition nicht erlaubtAttribut bei %L ist auÃŸerhalb einer TYPE-Definition nicht erlaubtAdresslisten der Variablen mit progressiven Sichten anreichern.Erkennungszahl des AutoFDO-Profils passt nichtVersion %u des AutoFDO-Profils passt nicht zu %uAutomatisches Feld %qs bei %L kann keine Initialisierung habenAutomatisches Objekt %qs bei %L kann nicht in COMMON bei %L vorkommenAutomatisches Objekt %qs bei %L kann nicht das Attribut SAVE habenFÃ¼gt automatisch Platz fÃ¼r lÃ¤ngere Pfadnamen in Ladebefehlen hinzu (bis zu MAXPATHLEN).Zweigziele automatisch ausrichten, um Strafzyklen fÃ¼r Verzweigung zu verringern.VerfÃ¼gbare Werte fÃ¼r Bits:Durchschnittliche Anzahl der Iterationen einer Schleife.Alle Bereichsgrenzen bei Aufrufbefehlen vermeiden.Vermeiden, dass mehrere Anweisungen zu einer expandierten Kante zusammengefasst werden.Erzeugung PC-relativer Aufrufe verhindern; Indirektion verwenden.Erzeugung indizierter Laden/Speichern-Befehle verhindern, wo mÃ¶glich.Sich Ã¼berschneidende Ziel- und Adressregister bei solchen LDRD-Befehlen vermeiden, die Cortex-M3-Errata auslÃ¶sen kÃ¶nnen.Vermeiden, lesbare Daten in Programmspeicher abzulegen.Spekulative Ladeoperationen verhindern, um Hardwarebesonderheiten zu umgehen.Verwendung von DIV- und MOD-Befehlen verhindern.Die GOT mÃ¶glichst nicht verwenden, um auf externe Symbole zuzugreifen.Interner Compilerfehler: BB %i cannot throw but has an EH edgeInterner Compilerfehler: BB %i has incorrect edgeInterner Compilerfehler: BB %i has incorrect fallthru edgeInterner Compilerfehler: BB %i has multiple EH edgesInterner Compilerfehler: BB %i is missing an EH edgeInterner Compilerfehler: BB %i is missing an edgeInterner Compilerfehler: BB %i last statement has incorrectly set lpInterner Compilerfehler: BB %i too many fallthru edgesInterner Fehler: BB_RTL flag not set for block %dBIND(C)-Variable %qs bei %L muss LÃ¤nge eins habenBIND(C) auf %s %s bei %L angewendetBIND(C) bei %LBIND(C)-Attribut bei %C erfordert eine Schnittstelle mit BIND(C)BIND(C)-Attribut bei %L kann nur fÃ¼r Variablen oder gemeinsame BlÃ¶cke verwendet werdenBIND(C)-Attribut bei %L kann nicht fÃ¼r eine interne Prozedur angegeben werdenBIND(C)-Prozedur mit NAME darf kein POINTER-Attribut bei %C habenBIND(C)-Anweisung bei %CBLANK= bei %L ist in Fortran 95 nicht erlaubtBLOCK-DATA-Konstrukt bei %LBLOCK DATA Element %qs bei %L muss in COMMON seinBLOCK-Konstrukt bei %CBOZ bei %L kann nicht in einer Initialisierung alten Stils vorkommenBOZ-Konstante bei %C verwendet Nicht-Standard-Postfix-SyntaxBOZ-Konstante bei %L kann nicht innerhalb eines COMPLEX-intrinsischen Unterprogramms vorkommenBOZ-Konstante wird abgeschnitten, bei %Lliterale Konstante BOZDie BOZ-Literalkonstante bei %L darf nicht als Initialisierer vorkommenDie BOZ-Literalkonstante bei %L darf nicht in einem ACHAR-intrinsischen Unterprogramm vorkommenDie BOZ-Literalkonstante bei %L darf nicht in einem CHAR-intrinsischen Unterprogramm vorkommenDie BOZ-Literalkonstante bei %L darf nicht in einem Strukturkonstruktor vorkommenDie BOZ-Literalkonstante bei %L darf nicht in einem Feldkonstruktor vorkommenBOZ-Literalkonstante bei %L darf nicht in einer Ausgabe-IO-Liste vorkommenBOZ-Literalkonstante bei %L darf nicht in einem FLOAT-intrinsischen Unterprogramm vorkommenDie BOZ-Literalkonstante bei %L darf kein tatsÃ¤chliches Argument fÃ¼r %qs seinBOZ-Literalkonstante bei %L kann kein Operand des einstelligen Operators %qs seinBOZ-Literal bei %L darf nur als Wert einer DATA-Anweisung oder als Argument des intrinsischen Unterprogramms INT/REAL/DBLE/CMPLX vorkommenBOZ-Literalkonstante bei %L kann nicht als Operand eines Vergleichsoperators vorkommenBOZ-Literalkonstante in der NÃ¤he von %L kann nicht einer %qs-Variablen zugewiesen werdenDie BOZ-Literalkonstante in der NÃ¤he von %L kann bei einer Initialisierung alten Stils nicht einer %qs-Variablen zugewiesen werdenBOZ auÃŸerhalb einer DATA-Anweisung bei %L verwendetBPF CO-RE unterstÃ¼tzt LTO nichtBPF CO-RE erfordert BTF-Debugging-Informationen, verwenden Sie %<-gbtf%>BYTE-Typ bei %CBei %C verwendeter BYTE-Typ ist auf der Zielmaschine nicht verfÃ¼gbarFalsche 128-Bit-VerschiebungFalsche GPR-FusionFalsche INTENT-Spezifikation bei %CFalscher IO-Basistyp (%d)Falsches Reservierungs-Objekt bei %C fÃ¼r eine PURE-ProzedurUngÃ¼ltige Felddimension bei %LUngÃ¼ltige Feldreferenz bei %LDer Strukturkonstruktor bei %2$L verweist auf die falsche Feldangabe der Komponente %1$qsFalsche Feldangabe fÃ¼r Feld mit explizit gebildeter Form bei %CFalsche Feldangabe fÃ¼r Feld mit durch Vermutung gebildeter Form bei %CFalsche Feldangabe fÃ¼r Feld mit implizit gebildeter Form bei %CFalsche Feldspezifikation in ALLOCATE-Anweisung bei %LFalsche Bounds-Remapping-Liste bei %CUngÃ¼ltiges Zeichen %qc in OPERATOR-Name bei %CFalsche Koarray-Spezifikation in ALLOCATE-Anweisung bei %LFalsche Fortsetzungszeile bei %CFalscher Art-Ausdruck fÃ¼r Funktion %qs bei %LFalsche Art fÃ¼r Logikkonstante bei %CSchlechter NameFalscher OperatorFalsche Form des Initialisierers bei %LFalsche Spezifikation fÃ¼r Feld mit impliziter GrÃ¶ÃŸe bei %CFalsche Spezifikation fÃ¼r Feld bei %L mit angenommener GrÃ¶ÃŸeFalsche Spezifikation fÃ¼r Feld mit zurÃ¼ckgestellter Form bei %CFalsches Ziel in Zeigerzuweisung in PURE-Prozedur bei %LFalscher Typ in Konstanten-AusdruckBad type in gfc_simplify_signBasis-ABI-Typen fÃ¼r LoongArch:Basisobjekt fÃ¼r Aufruf der typgebundenen NOPASS-Prozedur bei %L muss skalar seinBasisobjekt fÃ¼r Aufruf der Prozedurzeigerkomponente bei %L hat ABSTRACT-Typ %qsBasisobjekt fÃ¼r Aufruf der typgebundenen Prozedur bei %L hat ABSTRACT-Typ %qsGrundlegende ISAs von LoongArch:Bindung bei %C muss denselben Zugriff wie bereits definierte Bindung %qs habenBindeattribute legen bereits Durchleitung fest, unzulÃ¤ssiges NOPASS bei %CBindeattribute legen bereits Durchleitung fest, unzulÃ¤ssiges PASS bei %CLeeres BLOCK DATA bei %C steht in Konflikt mit vorherigem BLOCK DATA bei %LLeerzeichen in %s-Anweisung in der NÃ¤he von %C erwartetUmfassende SAVE-Anweisung bei %C folgt vorheriger SAVE-AnweisungBlockmarke ist ungeeignet fÃ¼r IF-Anweisung bei %CBlockmarke passt nicht zu arithmetischer IF-Anweisung bei %CBoardname [und Speicherbereich].Beide Planungsmodifizierer MONOTONIC und NONMONOTONIC bei %L angegebenInterner Fehler: Both section and comdat group is setSchranke fÃ¼r Anzahl der Kandidaten, unter der alle Kandidaten in IV-Optimierungen betrachtet werden.Schranke fÃ¼r Anzahl der IV-Verwendungen in bei IV-Optimierungen optimierter Schleife.Schranke fÃ¼r Anzahl der LaufzeitprÃ¼fungen, die von Schleifenversionierung des Vektorisierers fÃ¼r AliasprÃ¼fung eingefÃ¼gt werden.Schranke fÃ¼r Anzahl der LaufzeitprÃ¼fungen, die von Schleifenversionierung des Vektorisierers fÃ¼r AusrichtungsprÃ¼fung eingefÃ¼gt werden.Schranke fÃ¼r GrÃ¶ÃŸe von AusdrÃ¼cken, die im skalaren Evolutions-Analysierer verwendet werden.Schranke fÃ¼r die KomplexitÃ¤t von AusdrÃ¼cken im skalaren Evolutions-Analysierer.Schranke fÃ¼r die Kosten eines Ausdrucks, um die Anzahl der DurchlÃ¤ufe zu berechnen.Schranke fÃ¼r die Anzahl der Iterationen, die der Brute-Force-Algorithmus zur Auswertung der Anzahl von Iterationen auswertet.Grenzenangabe fÃ¼r %qs in Zeigerzuweisung bei %LSprung bei %L kÃ¶nnte Endlosschleife bewirkenVerzweigungen sind so teuer wie hier angegeben (beliebige Einheit).%s von %d Zweigen ausgefÃ¼hrt
! FÃ¼r Kern A bauen.FÃ¼r Kern B bauen.FÃ¼r SDRAM bauen.Baustein fÃ¼r specs-basierte multilib-bewusste TFLAGS.Eingebaute %qF erfordert z14 oder hÃ¶herEingebaute %qF erfordert z15 oder hÃ¶herEingebaute %qF erfordert z17 oder hÃ¶herEingebaute Funktion nicht implementiertWertargument bei %L kann kein Feld oder Feldabschnitt seinWertargument bei %L ist in diesem Kontext nicht erlaubtWertargument bei %L hat keinen numerischen TypC-kompatible zeichenwertige Scheinvariable %qs bei %L mit VALUE-Attribut muss LÃ¤nge eins habenTyp-Parameter nach C-Art ist fÃ¼r Typ %s, aber Typ bei %L ist %sC++-Konstruktoren und -Destruktoren werden fÃ¼r Objective-C-Felder nicht aufgerufendesignierte Initialisierer fÃ¼r C++ sind erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarNachschlagen von %qD wÃ¼rde in C++ ein Feld, keinen Typen zurÃ¼ckgebenC++-Module sind nicht kompatibel mit vorkompilierten HeadernC++-Module sind nicht mit der traditionellen Vorverarbeitung kompatibelC++ erfordert weitergegebenen Typ, nicht Enum-Typ, in %<va_arg%>%<constexpr%> von C++11 ist nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbar%<noexcept%> von C++11 ist nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbar%<thread_local%> in C++11 erlaubt dynamische Initialisierung und ZerstÃ¶rung%<thread_local%> von C++11 ist nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarC++11-Attribute sind erst ab %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarC++11 %<auto%> ist nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbar%<constinit%> aus C++20 ist erst ab %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarC++20 %qE ist nur mit %<-fmodules%> verfÃ¼gbar%qE aus C++20 ist nur mit %<-fmodules%> verfÃ¼gbar, das ist jedoch noch nicht in %<-std=c++20%> enthaltenDie Schreibweise der C++20-Konzeptdefinition ist %<concept <Name> = <Ausdruck>%>C++20 besagt, dass diese mehrdeutig sind, auch wenn der zweite umgekehrt ist:C99-Designator %qE ist kein konstanter GanzzahlausdruckC99-Bezeichner %qE auÃŸerhalb von AggregatinitialisierungCALL USING BY CONTENT <temporary> wÃ¼rde REPOSITORY PROTOTYPES erfordern.CASE-Marke bei %L Ã¼berschneidet sich mit CASE-Marke bei %LUntertyp der intrinsischen CCTL-Funktion ist auÃŸerhalb des gÃ¼ltigen BereichsCFString-Literalausdruck ist keine ZeichenkettenkonstanteCFString-Literal fehltCHANGE-TEAM-Anweisung bei %CCHARACTER-Ausdruck bei %L wird abgeschnitten (%ld/%ld)CHARACTER-Ausdruck wird in Zuweisung (%wd/%wd) bei %L abgeschnittenCHARACTER-Ausdruck wird in Konstruktor (%td/%td) bei %L abgeschnittenCHARACTER-LÃ¤nge in !$OMP DECLARE REDUCTION %s ist bei %L nicht konstantCHARACTER-LÃ¤nge bei %L muss konstant seinCHARACTER(*)-Funktion %qs bei %LCHARACTER(*)-Funktion %qs bei %L darf nicht feld-wertig seinCHARACTER(*)-Funktion %qs bei %L darf nicht zeiger-wertig seinCHARACTER(*)-Funktion %qs bei %L darf nicht rein seinCHARACTER(*)-Funktion %qs bei %L darf nicht rekursiv seinCLASS-EntitÃ¤t bei %C kann nicht das PARAMETER-Attribut habenCLASS-Selektor bei %L erfordert Zwischenspeicher, was noch nicht implementiert istCLASS-Anweisung bei %CCOMMON-Block %qs bei %L kann nicht das EXTERNAL-Attribut habenCLASS-Variable %qs bei %L muss Attrappe, reservierbar oder Zeiger seinCLOSE-Anweisung bei %L erfordert eine UNIT-ZahlCLOSE-Anweisung in PURE-Prozedur bei %C nicht erlaubtCOBOL erfordert eine 64-Bit-KonfigurationCODIMENSION fÃ¼r %qs auÃŸerhalb seines INTERFACE-KÃ¶rpers bei %L angegebenArgument der COLLAPSE-Klausel ist keine konstante positive Ganzzahl bei %CCOLLECT_GCC muss gesetzt sein.COMMON %qs bei %L existiert nichtCOMMON %qs bei %L erfordert AuffÃ¼llen mit %d Bytes; bitte Elemente umordnen oder %<-fno-align-commons%> verwendenCOMMON bei %L wird mehrfach in Klauseln derselben OMP-DECLARE-TARGET-Direktive erwÃ¤hntCOMMON bei %L erfordert AuffÃ¼llen mit %d Bytes; bitte Elemente umordnen oder %<-fno-align-commons%> verwendenCOMMON bei %L wurde in einer vorangehenden Direktive OMP DECLARE TARGET auf einen abweichenden DEVICE_TYPE festgelegtCOMMON-Block %</%s/%> bei %L nicht gefundenCOMMON-Block %qs bei %L kann nicht das EXTERNAL-Attribut habenCOMMON-Block %qs bei %L ist auch eine intrinsische ProzedurCOMMON-Block %qs bei %L wird bei %L als PARAMETER verwendetCOMMON-Block %qs bei %L, der auch ein Funktionsergebnis istCOMMON-Block %qs bei %L, der auch eine globale Prozedur istCOMMON-Block %qs bei %L verwendet denselben globalen Bezeichner wie die EntitÃ¤t bei %LCOMMON-Block /%s/ bei %C nicht gefundenCOMMON-Block bei %LCOMMON-Block bei %L mit Bindungsmarke %qs verwendet denselben globalen Bezeichner wie EntitÃ¤t bei %LCOMMON-Blockelement %qs bei %L darf in der PURE-Prozedur %qs kein EQUIVALENCE-Objekt seinCOMMON-Variable %qs bei %L muss konstante ZeichenlÃ¤nge habenCOMPLEX-Argument %qs ist Argument des intrinsischen %qs bei %LCOMPLEX-GrÃ¶ÃŸen kÃ¶nnen nicht bei %L verglichen werdenCONTAINS-Block in Definition des abgeleiteten Typs bei %CCONTAINS-Anweisung bei %C ist bereits in einer enthaltenen ProgrammeinheitCONTAINS-Anweisung ohne FUNCTION- oder SUBROUTINE-Anweisung bei %LCONTIGUOUS-Attribut bei %CCONTIGUOUS-Anweisung bei %CCONVERT-Marke bei %LCOUNT-Argument der intrinsischen Funktion Â»EVENT_QUERYÂ« bei %L muss definierbar seinCOUNT-Argument der intrinsischen Funktion EVENT_QUERY bei %L muss mindestens den GÃ¼ltigkeitsbereich von Standard-Integer abdeckenDas COUNT-Argument fÃ¼r SYSTEM_CLOCK bei %L hat nicht-Standard-ArtDas COUNT-Argument fÃ¼r SYSTEM_CLOCK bei %L hat eine Ganzzahl, die kleiner als der Standard istDas COUNT_MAX-Argument fÃ¼r SYSTEM_CLOCK bei %L hat nicht-Standard-ArtDas COUNT_MAX-Argument fÃ¼r SYSTEM_CLOCK bei %L hat eine Art, die kleiner als die Standard-Ganzzahl istDas COUNT_RATE-Argument fÃ¼r SYSTEM_CLOCK bei %L hat nicht-Standard-ArtDas COUNT_RATE-Argument fÃ¼r SYSTEM_CLOCK bei %L hat eine Art, die kleiner als die Standard-Ganzzahl istDie ausgewÃ¤hlte CPU unterstÃ¼tzt nicht den x86-64-BefehlssatzCRIS-Port-Behauptung gescheitert: %sCRITICAL-Block innerhalb von OpenACC-Region bei %CCRITICAL-Block innerhalb von OpenMP-Region bei %CCRITICAL-Anweisung bei %CCTF-Debuginformationen angefordert, jedoch nicht vom %qs-Frontend unterstÃ¼tztCYCLE-Anweisung bei %C ist nicht auf Nicht-Schleifenkonstrukt %qs anwendbarCYCLE-Anweisung bei %C fÃ¼r nicht-innerste eingeklappte Â»!$ACC LOOPÂ«-SchleifeCYCLE-Anweisung bei %C fÃ¼r nicht-innerste eingestÃ¼rzte !$OMP DO-SchleifeCYCLE-Anweisung bei %C fÃ¼r nicht-innerste gekachelte Â»!$ACC LOOPÂ«-SchleifeMain aufrufen und beenden (Vorgabe).Vor jedem Funktionsprolog mcount fÃ¼r Profiling aufrufen.Dump-Funktion fÃ¼r Variablen und Funktion in IL aufrufen.Der Aufrufer kopiert Funktionsargumente, die Ã¼ber versteckte Referenzen Ã¼bergeben werden.%s von %d Aufruf(en) ausgefÃ¼hrt
! IMPORT %qs aus Host-Sichtbarkeitseinheit bei %C nicht mÃ¶glich - existiert nicht.Das Modul, das gerade gebaut wird, kann nicht gleichzeitig mit USE verwendet werdenDas Teilmodul, das gerade gebaut wird, kann nicht gleichzeitig mit USE verwendet werdenZuordnung von %s zu %s bei %L nicht mÃ¶glichAttribute des USE-verbundenen Symbols %s bei %L kÃ¶nnen nicht verÃ¤ndert werdenAttribute des USE-verbundenen Symbols bei %L kÃ¶nnen nicht verÃ¤ndert werdenVerzeichnis %s kann nicht gewechselt werdenLÃ¤nge des Arrays bei %L kann nicht berechnet werden.ABSTRACT-Typ %qs bei %L kann nicht konstruiert werdenInterner Fehler: Cannot convert %qs to %qs at %L%qs bei %L kann nicht in interoperablen Typ konvertiert werden%s kann nicht nach %s bei %L umgewandelt werdenModuldatei %qs kann nicht gelÃ¶scht werden: %sTemporÃ¤re Moduldatei %qs kann nicht gelÃ¶scht werden: %sForm des Initialisierers bei %L kann nicht bestimmt werdenIntrinsisches Modul namens %qs bei %C nicht gefundenFunktionsdeklaration fÃ¼r %qs kann nicht gefunden werdenSchlÃ¼sselwort %qs in Aufruf von %qs bei %L kann nicht gefunden werdenKeine Menge von geeigneten Multibibliotheken fÃ¼r %<-march=%s%>/%<-mabi=%s%> gefundenDas Symbol %qs kann nicht gefunden werdenName des aktuellen Verzeichnisses kann nicht ermittelt werdenDas implied-shape-Feld bei %L kann nicht mit Skalar initialisiert werdenParameter-Feld bei %L kann nicht mit Elementen variabler LÃ¤nge initialisiert werdenVerzeichnis %s kann nicht erstellt werdenÂ»%sÂ« kann nicht in den Speicher geladen werdenÂ»%sÂ« kann nicht geÃ¶ffnet werdenJSON-Ausgabedatei Â»%sÂ« konnte nicht geÃ¶ffnet werden
  Datei %qs kann nicht geÃ¶ffnet werdenDie eingebundene Datei %qs kann nicht geÃ¶ffnet werdenModuldatei %qs kann bei %C nicht zum Lesen geÃ¶ffnet werden: %sModuldatei %qs kann bei %C nicht zum Schreiben geÃ¶ffnet werden: %sFehler beim Ã–ffnen der omp_requires-Datei %qsDie vor-eingebundene Datei %qs kann nicht geÃ¶ffnet werdenQuelldatei %s kann nicht geÃ¶ffnet werden
! GENERIC %qs bei %L kann nicht Ã¼berschrieben werdenÂ»%sÂ« kann nicht gelesen werdenBei %2$C geÃ¶ffnete Moduldatei %1$qs kann nicht gelesen werden, da sie von einer anderen Version von GNU Fortran erstellt wurdeModuldatei %qs kann nicht in %qs umbenannt werden: %sInterner Fehler: Cannot set Cray pointee array spec.Interner Fehler: Cannot set pointee array spec.Ausdruck bei %L kann nicht vereinfacht werdenIMPLICIT bei %C kann nicht hinter IMPLICIT NONE angegeben werdenTippfehler abfangen.Gas veranlassen, Tomcat-Statistiken auszugeben.Index der Cgraph-Kantenanweisung nicht gefundenIndex der Cgraph-Kantenanweisung auÃŸerhalb des gÃ¼ltigen BereichsInterner Fehler: Chained transparent aliasesWertÃ¤nderung bei Umwandlung von %qs in %qs bei %LNur die unteren 8 Bit des Stapelzeigers verÃ¤ndern.ABI Ã¤ndern, um Doppelwortbefehle zuzulassen.Menge der Vorausplanung Ã¤ndern.GrÃ¶ÃŸte LÃ¤nge der bedingt ausgefÃ¼hrten Sequenzen Ã¤ndern.Anzahl der temporÃ¤ren Register Ã¤ndern, die fÃ¼r bedingt ausgefÃ¼hrte Sequenzen zur VerfÃ¼gung stehen.Stapelzeiger Ã¤ndern, ohne Unterbrechungen (Interrupts) auszuschalten.Sichtbarkeit wird geÃ¤ndert, um standardmÃ¤ÃŸig zu Microsoft Visual Studio zu passen.Zeichen %qs in Zeichenkette bei %C ist in Zeichenart %d nicht reprÃ¤sentierbarZeichen %qs in Zeichenkette bei %L kann nicht in Zeichenart %d umgewandelt werdenZeichenkomponente %qs von %qs bei %L mit aufgeschobener LÃ¤nge muss POINTER oder ALLOCATABLE seinDas Zeichen-Dummy-Argument %qs bei %L muss entweder die konstante LÃ¤nge 1 haben oder eine angenommene LÃ¤nge, es sei denn, es hat eine angenommene Form oder einen angenommenen Rang, da die Prozedur %qs das Attribut BIND(C) hatDas Zeichen-Dummy-Argument %qs bei %L muss die LÃ¤nge 1 haben, da es das Attribut VALUE hatZeichenwertige Scheinvariable %qs bei %L mit VALUE-Attribut muss konstante LÃ¤nge habenAusdruck fÃ¼r ZeichenlÃ¤nge der Komponente %qs bei %L muss vom Typ INTEGER sein, nicht %sZeichenlÃ¤nge passt nicht (%ld/%ld) zwischen effektivem Argument und Scheinargument %qs mit vermuteter Form bei %LZeichenlÃ¤nge passt nicht (%ld/%ld) zwischen effektivem Argument und Zeiger oder reservierbarem Scheinargument %qs bei %LZeichenlÃ¤nge des effektiven Arguments kÃ¼rzer als das des Scheinarguments %qs (%lu/%lu) bei %LZeichenlÃ¤nge der Komponente %qs muss ein konstanter Spezifikationsausdruck bei %L seinZeichenliteral bei %L muss mit %<ompx_%> beginnenZeichenwertiges Argument %qs der Anweisungsfunktion bei %L muss konstante LÃ¤nge habenZeichenwertige interne Funktion %qs bei %L darf keine angenommene LÃ¤nge habenZeichenwertige Modulprozedur %qs bei %L darf keine vermutete LÃ¤nge habenZeichenwertige Anweisungsfunktion %qs bei %L muss konstante LÃ¤nge habenCFR-AusfÃ¼hrungspfade auch vor Aufrufen prÃ¼fen, die ihre Ergebnisse zurÃ¼ckgeben.CFR-AusfÃ¼hrungspfade auch prÃ¼fen, wenn eine Funktion aufgrund einer Exception verlassen wird.Zur Laufzeit auf StapelÃ¼berlauf prÃ¼fen.Auf Syntaxfehler prÃ¼fen, dann anhalten.RÃ¼ckgabewert des C++-Operators new prÃ¼fen.Strategie zur Erzeugung von Zeichenkettenoperationen wÃ¤hlen.HÃ¤ppchengrÃ¶ÃŸe des OMP-Schedulers fÃ¼r Schleifen, die durch parloops parallelisiert wurden.Klausel erwartet bei %CKlausel erwartet bei %C nach dem abschlieÃŸenden KommaAlle Tuningfeatures zurÃ¼cksetzen.Register, die beim Funktionsaufruf verwendet wurden, am Ende auf 0 zurÃ¼cksetzen.HardwarefÃ¤higkeiten beim Linken lÃ¶schen.BSS komplett lÃ¶schen und mit Null initialisierte Werte in BSS platzieren.Koarray-Komponente %qs bei %L muss reservierbar mit aufgeschobener Form seinCoarray-Deklaration bei %CKoarray-Bezeichner bei %C, aber %qs ist kein KoarrayKoarray-Scheinargument %qs bei %L fÃ¼r elementare ProzedurCoarray-Scheinvariable %qs bei %L in BIND(C)-Prozedur %qs nicht erlaubtKofeld nicht zulÃ¤ssig fÃ¼r %qs in Ortsangabe %s bei %LKoarray-Spezifikation in ALLOCATE-Anweisung bei %L erforderlichKofeld-Variable %qs bei %L darf keine Kodimensionen mit aufgeschobener Form ohne allozierbar habenKofelder sind nicht interoperabelCoarrays bei %C ausgeschaltet, %<-fcoarray=%> schaltet sie einKoarrays bei %L ausgeschaltet, %<-fcoarray=%> schaltet sie einCode zur Neu-Reservierung des reservierbaren Feldes bei %L wird hinzugefÃ¼gtCode zur Neu-Reservierung der reservierbaren Variable bei %L wird hinzugefÃ¼gtCode-GrÃ¶ÃŸe: small, medium oder large.Koindex der Kodimension %d muss bei %L ein Skalar seinUnpassende RÃ¤nge des Koindex in Feldreferenz bei %L (%d/%d)Koindiziertes effektives ASYNCHRONOUS- oder VOLATILE-Argument bei %L erfordert, dass Schein-%qs weder ASYNCHRONOUS noch VOLATILE hatEffektives koindiziertes Argument bei %L in PURE-Prozedur wird an POINTER-Scheinargument Ã¼bergebenEffektives koindiziertes Argument bei %L in PURE-Prozedur wird an INTENT(%s)-Argument Ã¼bergebenKoindiziertes effektives Argument bei %L an scheinreservierbares %qs erfordert INTENT(IN)Koindiziertes effektives Argument bei %L an Scheinzeiger %qsKoindiziertes effektives Argument bei %L mit reservierbarer endgÃ¼ltiger Komponente fÃ¼r Schein-%qs erfordert entweder VALUE oder INTENT(IN)Koindiziertes effektives Argument bei %L mit endgÃ¼ltiger ZeigerkomponenteKoindiziertes reservierbares Objekt bei %LKoindizierter Ausdruck bei %L wird einer Variable abgeleiteten Typs mit einer POINTER-Komponente in einer PURE-Prozedur zugewiesenKoindizierter Ausdruck auf Zeigerkomponente %qs in Strukturkonstruktor bei %LKoindiziertes Objekt mit polymorpher reservierbarer Subkomponente bei %LKoindiziertem polymorphen effektiven Argument bei %L wird polymorphes Scheinargument %qs Ã¼bergebenKoindizierte Prozedurzeiger-Komponente bei %CKoindizierte Variable darf keine reservierbare endgÃ¼ltige Komponente in Zuweisung bei %L habenIm Falle eines internen Fehlers im C/C++-Compiler die Debuginformationen sammeln und in temporÃ¤re Datei ausgeben.Komma hinter * bei %C ist nur zusammen mit einer I/O-Liste erlaubtKomma vor Ein-/Ausgabeelementliste bei %LKomma bei %C erwartetFehlendes Komma nach P-Deskriptor in Formatzeichenkette bei %LCode fÃ¼r Â»Big EndianÂ«-Modus erzeugen.Code fÃ¼r Â»Little Endian-Modus erzeugen. Dies ist der Standard.Code Ã¼bersetzen, der Cygwin DLL-Wrapper benÃ¶tigt, um C++-Operator new/delete zu ersetzen.FÃ¼r 32-Bit-Zeiger kompilieren.FÃ¼r 64-Bit-Zeiger kompilieren.FÃ¼r ETRAX 100 (CRIS v8) Ã¼bersetzen.FÃ¼r ETRAX 4 (CRIS v3) Ã¼bersetzen.FÃ¼r V8+-ABI-Ã¼bersetzen.FÃ¼r GerÃ¤te kompilieren, die aktiviertes XNACK erfordern. StandardmÃ¤ÃŸig Â»anyÂ«, wenn USM unterstÃ¼tzt wird.FÃ¼r GerÃ¤te mit aktivierter SRAM-ECC-Funktion kompilieren (oder auch nicht). Vorgabewert ist Â»anyÂ«.FÃ¼r das DSBT-Shared-Library-ABI kompilieren.FÃ¼r m32r Ã¼bersetzen.FÃ¼r m32r2 Ã¼bersetzen.FÃ¼r m32rx Ã¼bersetzen.FÃ¼r v850-Prozessor Ã¼bersetzen.FÃ¼r v850e-Prozessor Ã¼bersetzen.FÃ¼r v850e1-Prozessor Ã¼bersetzen.FÃ¼r v850e2-Prozessor Ã¼bersetzen.FÃ¼r v850e2v3-Prozessor Ã¼bersetzen.FÃ¼r v850e3v5-Prozessor Ã¼bersetzen.FÃ¼r die v850es-Variante des v850e1 Ã¼bersetzen.Debuggingcode mitcompilieren.Unittest-Code eincompilieren.Release-Version compilieren.Ganze Ãœbersetzungseinheit auf einmal Ã¼bersetzen.Ãœbersetzungszeit-Bonus, den IPA-CP an Kandidaten vergibt, die Schleifengrenzen oder Schrittweiten bekannt machen.Meckern, wenn ein Name als Klassenmember deklariert wird, nachdem der Name bereits anderswo verwendet wird.Meckern, wenn eine Kommandozeilenoption gÃ¼ltig ist, aber nicht zum aktuellen Frontend gehÃ¶rt.Komplexes Argument von LOG bei %L kann nicht Null seinKomplexe Multiplikation und Division befolgen Fortran-Regeln.Komponente %qs bei %C bereits bei %L deklariertKomponente %qs bei %C bereits im Elterntypen bei %L deklariertKomponente %qs bei %C ist eine PRIVATE-Komponente von %qsKomponente %qs bei %L kann nicht ALLOCATABLE-Attribut haben, da es Element des BIND(C)-abgeleiteten Typs %qs bei %L istKomponente %qs bei %L kann nicht POINTER-Attribut haben, da es Element des BIND(C)-abgeleiteten Typs %qs bei %L istKomponente %qs bei %L hat das CONTIGUOUS-Attribut, aber ist kein FeldzeigerKomponente %qs bei %L mit TYPE(C_PTR) oder TYPE(C_FUNPTR) darf kein Koarray seinKomponente %qs bei %L mit Koarray-Komponente darf ein Nicht-Zeiger und nicht-reservierbares Skalar seinKomponente %qs in abgeleitetem Typ %qs bei %L kÃ¶nnte nicht C-kompatibel seinKomponente %qs in abgeleitetem Typ %qs bei %L kÃ¶nnte nicht C-kompatibel sein, obwohl abgeleiteter Typ %qs BIND(C) istKomponente %qs wird im Strukturkonstruktor bei %L doppelt initialisiertKomponente %qs von %qs bei %L hat den gleichen Namen wie eine geerbte typgebundene ProzedurKomponente %qs von BIND(C)-Typ bei %L muss LÃ¤nge eins habenKomponente %qs mit CLASS bei %C muss allozierbar oder Zeiger seinKomponente %s bei %L des Typs EVENT_TYPE muss eine Kodimension haben oder eine Subkomponente eines Koarrays sein, was wegen des Zeigerattributs der Komponente nicht mÃ¶glich istKomponente %s bei %L des Typs LOCK_TYPE muss eine Kodimension haben oder eine Subkomponente eines Koarrays sein, was wegen des Zeigerattributs der Komponente nicht mÃ¶glich istKomponente %s des bei %L deklarierten SEQUENCE-Typen hat kein SEQUENCE-AttributKomponente bei %C muss ein POINTER-Attribut habenKomponenteninitialisierung ohne Namen hinter Komponente namens Â»%sÂ« bei %LKomponente rechts einer Teilreferenz mit Rang ungleich Null darf bei %L kein Attribut ALLOCATABLE habenKomponente rechts einer Teilreferenz mit Rang grÃ¶ÃŸer Null darf kein POINTER-Attribut bei %L habenKomponente mit KIND-Attribut bei %C muss ein INTEGER seinKomponente mit LEN-Attribut bei %C muss INTEGER seinKomponenten in TYPE bei %C mÃ¼ssen CONTAINS vorausgehenLocview-RÃ¼cksetzpunkte auf Basis der geschÃ¤tzten BefehlslÃ¤ngen berechnen.Berechnetes GOTO bei %CVerkettungsoperator bei %L muss Zeichenketten der gleichen Sorte verkettenVerkettungsoperator in Ausdruck bei %L muss zwei CHARACTER-Operanden habenAbgedeckte Bedingungsergebnisse: %s von %d
  Bedingte Kopierbefehle fÃ¼r Gleitkommazahlen aktivieren.Bedingte Kopierbefehle fÃ¼r Ganzzahlen aktivieren.FÃ¼r das newlib-Board-spezifische Laufzeitumgebung konfigurieren. Vorgabewert ist or1ksim.Konfiguriert mit: %s
  In Konflikt stehende Initialisierungen in Union bei %L und %LNÃ¤her der IBM XLC-Semantik entsprechen.Mit nichts besonderem Ã¼bereinstimmen.Mit dem ISO-C-Standard von 1990, wie 1994 ergÃ¤nzt, Ã¼bereinstimmen.Mit dem ISO-C-Standard von von 1990 mit GNU-Erweiterungen Ã¼bereinstimmen.Mit dem ISO-C-Standard von 1990 Ã¼bereinstimmen.Mit dem ISO-C++-Standard von 1998 (inclusive technischer Korrekturen von 2003 sowie GNU-Erweiterungen) Ã¼bereinstimmen.Mit dem ISO-C++-Standard von 1998 (inclusive technischer Korrekturen von 2003) Ã¼bereinstimmen.Mit dem ISO-C-Standard von von 1999 mit GNU-Erweiterungen Ã¼bereinstimmen.Mit dem ISO-C-Standard von 1999 Ã¼bereinstimmen.Mit dem ISO-C-Standard von von 2011 mit GNU-Erweiterungen Ã¼bereinstimmen.Mit dem ISO-C-Standard von 2011 Ã¼bereinstimmen.Mit dem ISO-C++-Standard von 2011 mit GNU-Erweiterungen Ã¼bereinstimmen.Mit dem ISO-C++-Standard von 2011 Ã¼bereinstimmen.Mit dem ISO-C++-Standard von 2014 mit GNU-Erweiterungen Ã¼bereinstimmen.Mit dem ISO-C++-Standard von 2014 Ã¼bereinstimmen.Mit dem ISO-C-Standard von 2017 (verÃ¶ffentlicht 2018) mit GNU-Erweiterungen Ã¼bereinstimmen.Mit dem ISO-C-Standard von 2017 (2018 verÃ¶ffentlicht) Ã¼bereinstimmen.Mit dem ISO-C++-Standard von 2017 mit GNU-Erweiterungen Ã¼bereinstimmen.Mit dem ISO-C++-Standard von 2017 Ã¼bereinstimmen.Mit dem ISO-C++-Standard 2020 Ã¼bereinstimmen (experimentelle und unvollstÃ¤ndige UnterstÃ¼tzung).Mit dem ISO-C++-Standard fÃ¼r 2020 mit GNU-Erweiterungen (experimentelle und unvollstÃ¤ndige UnterstÃ¼tzung) Ã¼bereinstimmen.Mit dem ISO-C-Standard von 2023 (verÃ¶ffentlicht 2024) mit GNU-Erweiterungen Ã¼bereinstimmen.Mit dem ISO-C-Standard von 2023 (2024 verÃ¶ffentlicht) Ã¼bereinstimmen.Mit dem ISO-C++-Standard 2023 Ã¼bereinstimmen (2024 verÃ¶ffentlicht; experimentelle und unvollstÃ¤ndige UnterstÃ¼tzung).Mit dem ISO-C++-Standard fÃ¼r 2023 mit GNU-Erweiterungen (2024 verÃ¶ffentlicht; experimentelle und unvollstÃ¤ndige UnterstÃ¼tzung) Ã¼bereinstimmen.Mit dem ISO-C++-Standardentwurf 2026 Ã¼bereinstimmen (experimentelle und unvollstÃ¤ndige UnterstÃ¼tzung).Mit dem ISO-C++-Standardentwurf fÃ¼r 2026 mit GNU-Erweiterungen (experimentelle und unvollstÃ¤ndige UnterstÃ¼tzung) Ã¼bereinstimmen.Mit dem ISO-C-Standard 202Y Ã¼bereinstimmen (experimentelle und unvollstÃ¤ndige UnterstÃ¼tzung).Mit dem ISO-C-Standard-Entwurf fÃ¼r 202Y mit GNU-Erweiterungen (experimentelle und unvollstÃ¤ndige UnterstÃ¼tzung) Ã¼bereinstimmen.Mit dem Standard ISO Fortran 2003 Ã¼bereinstimmen.Mit dem Standard ISO Fortran 2008 inkl. TS 29113 Ã¼bereinstimmen.Mit dem Standard ISO Fortran 2008 Ã¼bereinstimmen.Mit dem Standard ISO Fortran 2018 Ã¼bereinstimmen.Mit dem Standard ISO Fortran 2023 Ã¼bereinstimmen.Mit dem Standard ISO Fortran 95 Ã¼bereinstimmen.Mit der in GCC 4.0 implementierten Version Objective-C 1.0 Ã¼bereinstimmen.Der ABI o32-FPXX entsprechen.Zugriff auf Speicher in BytegrÃ¶ÃŸe als langsam betrachten.Typ Â»intÂ« als 16 Bit breit ansehen.Typ Â»intÂ« als 32 Bit breit ansehen.ErwÃ¤gen Sie, stattdessen %<need_device_addr%> zu verwendenDie MESSAGE-Klausel bei %L erfordert einen konstanten ZeichenausdruckKonstanter Ausdruck in FORMAT-Markierung bei %L muss vom Standard-CHARACTER-Typ seinKonstanten-Ausdruck erforderlich bei %CKonstanter logischer Wert in CASE-Anweisung wird bei %L wiederholtKonstante memcpy-GrÃ¶ÃŸe in Bytes, ab der die MOPS-Sequenz verwendet werden soll.Konstante memmove-GrÃ¶ÃŸe in Bytes, ab der die MOPS-Sequenz verwendet werden soll.Konstante memset-GrÃ¶ÃŸe in Bytes, ab der die MOPS-Sequenz verwendet werden soll.Argument muss eine Ganzzahlkonstante seinNetze konstruieren und nicht zusammenhÃ¤ngende Verwendungen einzelner Variablen aufteilen.Enthaltene Funktion %qs bei %L hat keinen IMPLICIT-TypEnthaltene Prozedur %qs bei %C steht in Konflikt mit Prozedur, die bei %L definiert wurdeEnthaltene Prozedur %qs bei %C ist bereits mehrdeutigSchnittstellenprozedur %qs bei %L hat denselben Namen wie die umgebende ProzedurEnthaltene Prozedur %qs bei %L einer PURE-Prozedur muss auch PURE seinErstellen der Steuerung fÃ¼r KehrwertabschÃ¤tzungen.Steuert, dass IRA die Ã¼bereinstimmende Bedingung (doppelte Operandennummer) in allen verfÃ¼gbaren Alternativen fÃ¼r die bevorzugte Registerklasse stark berÃ¼cksichtigt. Wenn sie auf Null gesetzt ist, bedeutet dies, dass IRA die Ã¼bereinstimmende Bedingung nur berÃ¼cksichtigt, wenn sie in der einzigen verfÃ¼gbaren Alternative mit einer geeigneten Registerklasse enthalten ist. Andernfalls bedeutet es, dass IRA alle verfÃ¼gbaren Alternativen fÃ¼r die bevorzugte Registerklasse prÃ¼ft, selbst wenn sie eine Auswahl mit einer geeigneten Registerklasse gefunden hat, und die gefundene qualifizierte Ã¼bereinstimmende EinschrÃ¤nkung beachtet.Den IEEE-Trap-Modus steuern.Den generierten FP-Rundungsmodus steuern.Die PrÃ¤zision der FP-Ausnahmen steuern.Steuern, welche Ereignisse in den Diagnosepfaden angegeben werden.Steuert, wie der Schleifenvektorisierer partielle Vektoren verwendet. 0 bedeutet nie, 1 bedeutet nur fÃ¼r Schleifen, die nicht unbedingt vektorisiert werden mÃ¼ssen, 2 bedeutet fÃ¼r alle Schleifen. Voreinstellung ist 2.Umwandlung von %qs in %qs bei %LUmwandlung von %s in %s bei %LUmwandlung von %s in standardartiges COMPLEX(%d) bei %L kÃ¶nnte Genauigkeit verlieren, evtl. KIND-Argument verwendenUmwandlung einer Unendlichkeit oder NaN bei %L in INTEGERAdressen der Form BASE + LARGE_OFFSET in NEW_BASE + SMALL_OFFSET konvertieren, damit mehr Speicherzugriffe als komprimierte Anweisungen generiert werden kÃ¶nnen. Zielt derzeit auf 32-Bit-Integer-Laden/Speichern ab.Umwandlung bedingter SprÃ¼nge in innersten Schleifen in zweiglose Ã„quivalente durchfÃ¼hren.Gleitkommakonstanten in Konstanten einfacher Genauigkeit umwandeln.FunktionsrÃ¼ckkehr in Aufruf umwandeln und Thunk zurÃ¼ckgeben.Indirekte Aufrufe und SprÃ¼nge in Aufrufe umwandeln und Thunks zurÃ¼ckgeben.Feldabschnitte bei Prozedureintritt in einen zusammenhÃ¤ngenden Block kopieren.Copyright %s 2025 Free Software Foundation, Inc.
  Unpassender Korang in Argument %qs bei %L (%d und %d)Kosten, zu denen GCSE-Optimierungen nicht die Entfernung beeintrÃ¤chtigen werden, um die ein Ausdruck verschoben werden kann.FÃ¼r Sprungbefehl anzunehmende Kosten.FÃ¼r einen Multiplikationsbefehl anzunehmende Kosten.FÃ¼r einen Multiplikationsbefehl anzunehmende Kosten; 4 entspricht einem normalen Befehl.Addis-Wert fÃ¼r Fusion kann nicht erzeugt werdenAusgabedatei Â»%sÂ« konnte nicht geÃ¶ffnet werden
  Spekulative AbhÃ¤ngigkeiten wÃ¤hrend PrioritÃ¤tsberechnung der Befehle zÃ¤hlen.Cray-Zeigerende bei %C kann nicht Feld mit impliziter Form seinCray-Zeigerende bei %L tritt in mehreren pointer()-Anweisungen aufCray-Zeigerziel %qs in %s-Klausel bei %LCray-Zeigerziel %qs in Klausel SHARED bei %LCray-Zeigerziel-Objekt %qs in Klausel %s bei %LCray-Zeigerziel-Objekt %qs von abgeleitetem Typ in Â»%sÂ«-Klausel bei %LCray-Zeigerziel-Objekt %qs von polymorphem Typ in %qs-Klausel bei %LCray-Zeiger %qs in %s-Klausel bei %LCray-Zeiger bei %C hat %d Bytes Genauigkeit; Speicheradressen benÃ¶tigen %d BytesCray-Zeiger bei %C muss eine Ganzzahl seinCray-Zeiger-Deklaration bei %C benÃ¶tigt den Schalter %<-fcray-pointer%>Cray-Zeiger-Objekt %qs in Klausel %s bei %LCray-Zeiger-Objekt von abgeleitetem Typ %qs in Â»%sÂ«-Klausel bei %LCray-Zeiger-Objekt %qs von polymorphem Typ in %qs-Klausel bei %LGUI-Anwendung erzeugen.Dynamisch gebundene, lageunabhÃ¤ngige ausfÃ¼hrbare Datei erzeugen.Shared Library erzeugen.Statische, lageunabhÃ¤ngige ausfÃ¼hrbare Datei erzeugen.Kanonische Induktionsvariablen in Schleifen erzeugen.Konsolenanwendung erzeugen.Von Â»gcovÂ« benÃ¶tigte Dateien anlegen.Â»%sÂ« wird erzeugt
! Zwischenergebnis-Feld bei %L wird erzeugtBei %L wird ein vorÃ¼bergehendes Feld fÃ¼r Argument %qs erzeugtDer aktuelle RISC-V-GCC unterstÃ¼tzt RVV im Big-Endian-Modus nichtDer aktuelle RISC-V-GCC unterstÃ¼tzt keine VLEN grÃ¶ÃŸer als 4096bit fÃ¼r die Erweiterung Â»VÂ«Derzeit erfordert die %<V%>-Implementierung die %<M%>-ErweiterungD unterstÃ¼tzt auf dieser Zielplattform keine Zeiger.D-Inline-Assembler-Anweisungen werden in GDC nicht unterstÃ¼tzt.DATA-Feld %qs bei %L muss in vorheriger Deklaration angegeben werdenDATA-Element %qs bei %L kann keinen Coindex habenDas DATA-Element %qs bei %L kann kein ALLOCATABLE-Attribut habenDATA-Element %qs bei %L ist ein Zeiger und muss daher ein vollstÃ¤ndiges Feld seinDas DATA-Objekt in der NÃ¤he von %L hat das Zeiger-Attribut und der entsprechende DATA-Wert ist kein gÃ¼ltiges initial-data-targetDATA-Anweisung bei %C hinter der ersten ausfÃ¼hrbaren AnweisungDATA-Anweisung bei %C kann nicht innerhalb von INTERFACE auftretenDATA-Anweisung bei %C ist in PURE-Prozedur nicht erlaubtDATA-Anweisung bei %L hat mehr Werte als VariablenDATA-Anweisung bei %L hat mehr Variablen als WerteDC-Format-Spezifizierer bei %C nicht erlaubtDEALLOCATE ObjektDEALLOCATE von Koarray bei %C in CRITICAL-BlockDEALLOCATE von Koarray bei %C in DO CONCURRENT-BlockDECIMAL= bei %L ist in Fortran 95 nicht erlaubtDEFAULT (NONE) mehr als einmal in DO CONCURRENT bei %C angegebenDEFAULTMAP bei %C, aber das vorherige DEFAULTMAP ist fÃ¼r Kategorie %sDEFAULTMAP bei %C, aber das vorherige DEFAULTMAP hat eine unspezifizierte KategorieDEF_INTERNAL_FLT_FN (%s) hat keine verknÃ¼pften eingebauten FunktionenDEF_INTERNAL_INT_FN (%s) hat keine verknÃ¼pften eingebauten FunktionenDELIM= bei %L ist in Fortran 95 nicht erlaubtDie DEPEND-Klausel bei %L des OMP-DEPOBJ-Konstrukts darf nur einen einzigen Locator habenDEPEND-Klausel bei %L des OMP-DEPOBJ-Konstrukts darf nicht den AbhÃ¤ngigkeitstyp DEPOBJ habenDEPEND-Klausel bei %L erfordert Interop-Typ %<targetsync%>, bei %qs bei %L fehlt sieDEPEND-Klausel bei %L erfordert Aktionsklausel mit Interop-Typ %<targetsync%>DEPOBJ im DEPOBJ-Konstrukt bei %L muss eine skalare Ganzzahl der Art OMP_DEPEND_KIND seinDETACH-Ereignisbehandler %qs in %s-Klausel bei %LDETACH-Ereignisbehandler %qs in SHARED-Klausel bei %LDEVICE_TYPE muss ANY sein, wenn es mit INDIRECT bei %L verwendet wirdDIM-Argument (%d) fÃ¼r intrinsisches SIZE bei %L auÃŸerhalb des Bereichs (1:%d)DIM-Argument bei %L ist auÃŸerhalb der GrenzenDIM-Argument ohne COARRAY-Argument ist fÃ¼r intrinsisches THIS_IMAGE bei %L nicht erlaubtDIMENSION fÃ¼r %qs auÃŸerhalb seines INTERFACE-KÃ¶rpers bei %L angegebenArgument DISTANCE= fÃ¼r NUM_IMAGES bei %LArgument DISTANCE= fÃ¼r THIS_IMAGE bei %LDie chunk_size der DIST_SCHEDULE-Klausel bei %L erfordert einen skalaren INTEGER-AusdruckDO CONCURRENT-Konstrukt bei %CDO-Schleife bei %L ist undefiniert, da sie Ã¼berlÃ¤uftDO-Schleife bei %L ist undefiniert, da sie unterlÃ¤uftDO-Schleife bei %L wird null mal ausgefÃ¼hrtDO-Schrittwert ist NullDO-Abbruchanweisung ist nicht Â»END DOÂ« oder Â»CONTINUEÂ« mit Marke %d bei %CDO-Iterator %qs bei %L ist innerhalb eines Iterators mit gleichem NamenDOUBLE COMPLEX bei %CDP-Format-Spezifizierer bei %C nicht erlaubtDTIO-%s-Prozedur bei %L muss rekursiv seinDTIO-Zeichenargument bei %L muss angenommene LÃ¤nge habenDTIO-Scheinargument bei %L muss ein Skalar seinDTIO-Scheinargument bei %L muss ein ASSUMED SHAPE ARRAY seinDTIO-Scheinargument bei %L muss von KIND = %d seinDTIO-Scheinargument bei %L muss vom Typ %s seinDTIO-Scheinargument bei %L muss INTENT %s habenDTIO-Prozedur %qs bei %L muss ein Unterprogramm seinDarwin unterstÃ¼tzt Â»-mfentryÂ« oder verwandte Optionen nichtDarwin ist keine mx32-PlattformDatenelement oberhalb der oberen Feldgrenze bei %LDatenelement unterhalb der unteren Feldgrenze bei %LDaten werden im Big-Endian-Format gespeichert.Daten werden im Little-Endian-Format gespeichert (Standard).Daten werden ausgehend vom Start des Programmcodes statt der GOT adressiert (mit -fPIC/-fPIE).Datenziel bei %L darf keinen Koindex habenDatenÃ¼bertragungselement bei %L kann keine vollstÃ¤ndige Referenz auf Feld vermuteter GrÃ¶ÃŸe seinElement zum Datenaustausch bei %L kann nicht polymorph sein, auÃŸer es wird von einer definierten E/A-Prozedur verarbeitetDatenÃ¼bertragungselement bei %L kann keine ALLOCATABLE-Komponenten haben, auÃŸer es wird von einer definierten E/A-Prozedur verarbeitetDatenÃ¼bertragungselement bei %L kann keine POINTER-Komponenten haben, auÃŸer es wird von einer definierten E/A-Prozedur verarbeitetDatenÃ¼bertragungselement bei %L kann keine PRIVATE-Komponenten habenDatenÃ¼bertragungselement bei %L kann keine PRIVATE-Komponenten haben, auÃŸer es wird von einer definierten E/A-Prozedur verarbeitetDatenÃ¼bertragungselement bei %L kann keine Prozedurzeiger-Komponenten habenDatenzeigerobjekt bei %L muss unbegrenzt polymorph oder von einem Typ mit BIND- oder SEQUENCE-Attribut sein, um zum unbegrenzt polymorphen Ziel zu passenDebugging-Bibliothe, die anstelle von phobos verwendet wird.Wenn die Methode %qD als Â»finalÂ« deklariert wÃ¤re, wÃ¼rde das die Devirtualisierung von %d Aufruf einschaltenWenn die Methode %qD als Â»finalÂ« deklariert wÃ¤re, wÃ¼rde das die Devirtualisierung von %d Aufrufen einschaltenWenn die Methode %qD als Â»finalÂ« deklariert wÃ¤re, wÃ¼rde das die Devirtualisierung von %d Aufruf, der %lli-mal ausgefÃ¼hrt wurde, einschaltenWenn die Methode %qD als Â»finalÂ« deklariert wÃ¤re, wÃ¼rde das die Devirtualisierung von %d Aufrufen, die %lli-mal ausgefÃ¼hrt wurden, einschaltenWenn Typ %qD Â»finalÂ« wÃ¤re, wÃ¼rde %i Aufruf devirtualisiert werdenWenn Typ %qD Â»finalÂ« wÃ¤re, wÃ¼rden %i Aufrufe devirtualisiert werdenWenn Typ %qD Â»finalÂ« wÃ¤re, wÃ¼rde %i Aufruf, der %lli-mal ausgefÃ¼hrt wurde, devirtualisiert werdenWenn Typ %qD Â»finalÂ« wÃ¤re, wÃ¼rden %i Aufrufe, die %lli-mal ausgefÃ¼hrt wurden, devirtualisiert werdenWenn der virtuelle Destruktor von %qD als Â»finalÂ« deklariert wÃ¤re, wÃ¼rde das die Devirtualisierung von %d Aufruf einschaltenWenn der virtuelle Destruktor von %qD als Â»finalÂ« deklariert wÃ¤re, wÃ¼rde das die Devirtualisierung von %d Aufrufen einschaltenWenn der virtuelle Destruktor von %qD als Â»finalÂ« deklariert wÃ¤re, wÃ¼rde das die Devirtualisierung von %d Aufruf, der %lli-mal ausgefÃ¼hrt wurde, einschaltenWenn der virtuelle Destruktor von %qD als Â»finalÂ« deklariert wÃ¤re, wÃ¼rde das die Devirtualisierung von %d Aufrufen, die %lli-mal ausgefÃ¼hrt wurden, einschaltenStandardbibliothek, die anstelle von phobos verwendet wird.Das durch Vorgabe initialisierte Dummy-Argument %qs mit dem Attribut %qs bei %L ist in der BIND(C)-Prozedur %qs nicht erlaubtZurÃ¼ckholen der Funktionsargumente vom Stapel bis auf weiteres hinauszÃ¶gern.Aufgeschobenes Feld %qs bei %L ist nicht in einem Initialisierungs-Ausdruck erlaubtParameter aufgeschobenen Typs wird noch nicht unterstÃ¼tztDas Zeichen-Dummy-Argument %qs bei %L hat verzÃ¶gerte LÃ¤nge und gehÃ¶rt zur Prozedur %qs mit dem Attribut BIND(C)Alternative implizite Kopierbuch-Dateinamenerweiterung definierenUnerreichbare Befehle lÃ¶schen, die Ausnahmen werfen kÃ¶nnen.UnnÃ¶tige NullzeigerprÃ¼fungen lÃ¶schen.GelÃ¶schte Funktion:AbhÃ¤ngigkeitstyp SINK wird zusammen mit SOURCE an demselben Konstrukt bei %L verwendetVeraltet zugunsten von -Wc11-c23-compat.Veraltet zugunsten von -std=c++11.Veraltet zugunsten von -std=c++14.Veraltet zugunsten von -std=c++17.Veraltet zugunsten von -std=c11.Veraltet zugunsten von -std=c23.Veraltet zugunsten von -std=c99.Veraltet zugunsten von -std=gnu++11.Veraltet zugunsten von -std=gnu++14.Veraltet zugunsten von -std=gnu++17.Veraltet zugunsten von -std=gnu11.Veraltet zugunsten von -std=gnu23.Veraltet zugunsten von -std=gnu99.Veraltet zugunsten von -std=iso9899:1999.Veraltete Option. Stattdessen -mno-vrsave verwenden.Veraltete Option. Stattdessen -mvrsave verwenden.Veraltet. Dieser Schalter hat keine Auswirkung.Abgeleiteter Typ %qs bei %C wird verwendet, bevor er definiert wirdAbgeleiteter Typ %qs bei %L kann nicht das SEQUENCE-Attribut haben, da er BIND(C) istAbgeleiteter Typ %qs bei %L widerspricht namelist-Objekt %qs bei %CAbgeleiteter Typ %qs bei %L wurde nicht deklariertAbgeleiteter Typ %qs bei %L darf nicht ABSTRACT seinAbgeleiteter Typ %qs bei %L muss eine Erweiterung von %qs seinAbgeleiteter Typ %qs bei %L muss erweiterbar seinAbgeleiteter Typ %qs kann bei %C nicht als Variable verwendet werdenAbgeleiteter Typ %qs kann bei %L nicht als Variable verwendet werdenAbgeleiteter Typ %qs, bei %L deklariert, muss BIND-Attribut haben, um C-kompatibel zu seinAbgeleiteter Typ %qs wird als Argument bei %L verwendetAbgeleiteter Typ %qs mit Attribut BIND(C) bei %L hat keine KomponentenAbgeleiteter Typ %qs mit Attribut BIND(C) bei %L ist leer und kÃ¶nnte fÃ¼r entsprechenden C-Prozessor unzugreifbar seinAbgeleiteter Typ bei %C kann nur PRIVATE im Spezifikationsteil eines Moduls seinAbgeleiteter Typ bei %C kann nur PUBLIC im Spezifikationsteil eines Moduls seinAbgeleiteter Typ bei %C wurde vorher nicht definiert und kann daher nicht in einer abgeleiteten Typdefinition auftretenKomponente %C abgeleiteten Typs ist kein zulÃ¤ssiges EQUIVALENCE-ElementDeklaration abgeleiteten Typs mit FINAL bei %C muss im Spezifikationsteil eines Moduls seinDefinition eines abgeleiteten Typs bei %C mit leerem CONTAINS-AbschnittDefinition des abgeleiteten Typs bei %C ohne KomponentenAbgeleitete Typdefinition von %qs bei %C wurde bereits definiertAbgeleiteter Typname %qs bei %C hat bereits einen BasistypAbgeleiteter Typname %qs bei %C hat bereits einen Basistypen von %sVariable %qs abgeleiteten Typs bei %L kann keine ALLOCATABLE-Komponenten haben, um EQUIVALENCE-Objekt zu seinVariable %qs abgeleiteten Typs bei %L muss SEQUENCE-Attribut haben, um EQUIVALENCE-Objekt zu seinVariable %qs abgeleiteten Typs bei %L mit Standardinitialisierung kann nicht in EQUIVALENCE mit einer Variablen in COMMON seinVariable %qs abgeleiteten Typs bei %L mit Zeigerkomponenten kann kein EQUIVALENCE-Objekt seinVariable %qs abgeleiteten Typs in COMMON bei %L hat eine endgÃ¼ltige Komponente, die allozierbar istVariable %qs abgeleiteten Typs in COMMON bei %L hat weder das SEQUENCE- noch das BIND(C)-AttributVariable %qs abgeleiteten Typs in COMMON bei %L darf nicht Standardinitialisierung habenBei %2$L deklarierter abgeleiteter Typ %1$qs muss ABSTRACT sein, da %3$qs DEFERRED und nicht Ã¼berschrieben istAbgeleiteter Typ %qs bei %C mit BIND(C) darf keinen CONTAINS-Abschnitt habenAbgeleiteter Typ %qs bei %C mit SEQUENCE darf keinen CONTAINS-Abschnitt habenScheinargument %qs abgeleiteten Typs bei %L war als INTENT(OUT) deklariert, aber nicht gesetzt und hat keine StandardinitialisierungKeine weiteren Informationen verfÃ¼gbar.Keine weiteren Informationen verfÃ¼gbar.Keine weiteren Informationen verfÃ¼gbar.Keine weiteren Informationen verfÃ¼gbar.Felder von teilweise konstruierten Objekten zerstÃ¶ren.Schleifen, die CRC berechnen, erkennen und durch eine schnellere Implementierung ersetzen. Wenn das Zielsystem den CRC-Befehl unterstÃ¼tzt und die CRC-Schleife dasselbe Polynom wie der CRC-Befehl verwendet, wird sie direkt durch den entsprechenden CRC-Befehl ersetzt. Wenn das Zielsystem den Befehl zur Ã¼bertragslosen Multiplikation unterstÃ¼tzt, wird die CRC mit diesem Befehl erzeugt. Trifft keiner der beiden FÃ¤lle zu, wird die CRC tabellenbasiert berechnet.AusfÃ¼hrungspfade erkennen, die ausgelÃ¶st werden, indem ein Nullwert auf eine Weise verwendet wird, die durch ein Â»returns_nonnullÂ«- oder Â»nonnullÂ«-Attribut verboten ist. Solche Pfade werden aus dem Hauptablauf herausgenommen und durch eine Trap ersetzt.AusfÃ¼hrungspfade erkennen, die durch Dereferenzieren eines Nullzeigers fehlerhaftes oder undefiniertes Verhalten auslÃ¶sen. Solche Pfade werden aus dem Hauptablauf herausgenommen und durch eine Trap ersetzt.Feststellen, welche AbhÃ¤ngigkeiten zwischen Befehlen als teuer angesehen werden.Fehler beim Parsen eines Templates melden.Unterschiedliche CHARACTER-LÃ¤ngen (%ld/%ld) in FeldkonstruktorUnterschiedliche CHARACTER-LÃ¤ngen (%wd/%wd) in Feldkonstruktor bei %LUnterschiedliche Argumentlisten in externer Dummy-Funktion %s bei %L und %LUnterschiedliche Argumentlisten im externen Dummy-Unterprogramm %s bei %L und %LVerschiedene Zeichenarten bei %LParameter verschiedener Typen in Zeigerzuweisung bei %LVerschiedene RÃ¤nge in Zeigerzuweisung bei %LAndere Form fÃ¼r %s bei %L fÃ¼r Dimension %d (%d und %d)Unterschiedliche Form fÃ¼r Argumente %qs und %qs bei %L fÃ¼r intrinsisches %<dot_product%>Andere Form bei Dimension 1 fÃ¼r Argumente %qs und %qs bei %L fÃ¼r intrinsisches matmulAndere Form bei Dimension 2 fÃ¼r Argument %qs und Dimension 1 fÃ¼r Argument %qs bei %L fÃ¼r intrinsisches matmulVerschiedene Typ-Arten bei %LVerschiedene Typen in Zeigerzuweisung bei %L; Versuch der Zuweisung von %s an %sFÃ¼r %s bei %L wurden Dimensionen nach dessen Initialisierung angegebenDie Warnung Â»-Wframe-larger-than=Â« ausschalten. Entspricht Â»-Wframe-larger-than=<SIZE_MAX>Â« oder grÃ¶ÃŸer.Die Warnung Â»-Wlarger-than=Â« ausschalten. Entspricht Â»-Wlarger-than=<SIZE_MAX>Â« oder grÃ¶ÃŸer.ARCompact-spezifischen Durchlauf, um Befehle fÃ¼r bedingte AusfÃ¼hrung zu erzeugen, ausschalten.CFR in Blattfunktionen ausschalten.Gleitkommaregister ausschalten. Ã„quivalent zu -msoft-float.FPU-ISA wird ausgeschaltet, kann mit %<-mfloat-abi=soft%> eingeschaltet werdenLR- und SR-Befehle davon abhalten, FPX-Erweiterungsregister zu verwenden.Durchlauf fÃ¼r Skalar-nach-Vektor-Optimierung ausschalten, der 64-Bit-Ganzzahlberechnungen in Vektorberechnungen umwandelt.Die Warnung Walloc-size-larger-than= ausschalten. Entspricht Walloc-size-larger-than=<SIZE_MAX> oder grÃ¶ÃŸer.Die Warnung Walloca-larger-than= ausschalten. Entspricht Walloca-larger-than=<SIZE_MAX> oder grÃ¶ÃŸer.Die Warnung Â»-Wstack-usage=Â« ausschalten. Entspricht Â»-Wstack-usage=<SIZE_MAX>Â« oder grÃ¶ÃŸer.Die Warnung Wvla-larger-than= ausschalten. Entspricht Wvla-larger-than=<SIZE_MAX> oder grÃ¶ÃŸer.Zugriff auf gemeinsamen Speicher ausschalten.Zugriff auf Variablen, die mit Â»@systemÂ« markiert sind, von @safe-Code aus verbieten.Gleitkommaoptimierungen ausschalten, die die IEEE-Vorzeichenbehaftung von Null nicht beachten.Hardware-Gleitkommabefehle ausschalten.Indizierte Adressierung ausschalten.Von IEEE-Signalisierungs-NaNs wahrnehmbare Optimierungen ausschalten.Optimierungen, die Standard-Rundungsverhalten fÃ¼r Gleitkomma annehmen, ausschalten.LageunabhÃ¤ngigen Code (PIC) fÃ¼r Verwendung in BS-Kernelcode ausschalten.Vorverarbeitung ausschalten.Leerregister ausschalten.Stapelschrubben komplett ausschalten, unabhÃ¤ngig von Strub-Attributen.Verwendung der RX-FPU-Befehle ausschalten.Direkte Aufrufe von globalen Funktionen verbieten.Mehr als Â»msched-max-memory-insnsÂ« in Befehlsgruppe verbieten. Ansonsten ist Grenze Â»weichÂ« (Nicht-Speicheroperationen beim Erreichen der Grenze bevorzugen).Optimierung der Endrekursion verbieten, wenn die aufrufende Routine die ZeichenlÃ¤nge weggelassen haben kÃ¶nnte.UnvollstÃ¤ndige unverÃ¤nderliche Umwandlungen, die bislang fÃ¤lschlicherweise erlaubt waren, verbieten.Reine und konstante Funktionen entdecken.Nur-lese und nicht-adressierbare statische Variablen entdecken.Nur-lese-, nur-schreib- und nicht-adressierbare statische Variablen entdecken.Ãœbersetzungszeitstatistik anzeigen.WÃ¤hrend der Ãœbersetzung angesammelte Statistik anzeigen.Zielspezifische Befehlszeilenoptionen (einschlieÃŸlich Assembler- und Linker-Optionen) anzeigen.Codebaum nach Frontend-Optimierung anzeigen.Codebaum nach Analyse anzeigen.Codebaum nach Analyse anzeigen; veraltete Option.Compiler-Version anzeigen.Frontend-AST nach dem Parsen und der semantischen Analyse anzeigen.Die globale Symboltabelle nach dem Parsen anzeigen.Die Symbole in umgekehrter Reihenfolge ausgeben.Diese Informationen anzeigen.Division durch Null bei %LDivision durch Null beim Konvertieren von %s in %s bei %LDivisionsstrategie, eine von: call-div1, call-fp, call-table.In LRA die ablaufsensitive Rematerialisierung durchfÃ¼hren.Dispatch-Planung durchfÃ¼hren, wenn Prozessor bdver1, bdver2, bdver3, bdver4 oder znver1 ist und Haifa-Planung ausgewÃ¤hlt ist.Die D-Programmstart-Dateien mit dem Compilat binden.Keine BRcc-Befehle in arc_reorg erzeugen.Keine Standardsymbolexporte zu Modulen oder dynamischen Bibliotheken hinzufÃ¼gen.Keinen StandardausfÃ¼hrungspfad (fÃ¼r die Bibliotheksverzeichnisse des Compilers) zu Programmen, Modulen oder dynamischen Bibliotheken hinzufÃ¼gen.Verbieten, dass konstante Daten in Codeabschnitten platziert werden.Nicht von einem groÃŸen TLS-Segment ausgehen.Nicht annehmen, dass Funktionen, die im Trainingslauf nie ausgefÃ¼hrt wurden, kalt sind.Nicht annehmen, dass Standard-C-Bibliotheken und Â»mainÂ« vorhanden sind.Keine Vektor-Speicherzugriffe mit falsch ausgerichtetem Elementzugriff erzeugen.Leerregister nicht ausschalten.Kommentare in Makroexpansionen nicht verwerfen.Kommentare nicht verwerfen.Ãœbersetzte Funktionen oder verstrichene Zeit nicht ausgeben.Gemeinsame Elemente in Templatevergleichen nicht weglassen.Keine Adressierungsmodi mit Seiteneffektzuweisungen erzeugen.Keine komplexen Ganzzahlkonstanten im Nur-Lese-Speicher erzeugen.Keinen Funktionsprolog oder -epilog erzeugen.Strenge Ausrichtung nicht erzwingen.Keine #line-Direktiven erzeugen.Keine .size-Direktiven erzeugen.Nicht unbedingt einen einzigen Austrittspunkt fÃ¼r jede Funktion erzeugen.Keinen Code generieren, der nur im Supervisor-Modus lÃ¤uft (Standard).Keine Befehle fÃ¼r Laden/Speichern mit Aktualisierung erzeugen.Keine mpy-Befehle fÃ¼r ARC700 erzeugen.Keine unausgerichteten Speicherzugriffe erzeugen.Keine unausgerichteten Speicherzugriffe auf Skalare erzeugen.Ganzzahldivision nicht Â»inlineÂ« generieren.Quadratwurzel nicht Â»inlineÂ« generieren.Nicht gegen die GerÃ¤te-spezifische Bibliothek lib<MCU>.a binden.D-Standardbibliothek nicht in die Compilierung einbinden.PIC-Register nicht in Funktionsprologen laden.Nicht nach Objekten im Standardverzeichnis suchen.ABI-Schalter nicht in e_flags markieren.Es werden keine load-load-Barrieren benÃ¶tigt (dbar 0x700).Keine Optimierungen durchfÃ¼hren, die die Stapelverwendung deutlich erhÃ¶hen.Gleitkommakonstanten nicht ins TOC legen.Symbol+Offset-Konstanten nicht ins TOC legen.Keine system- oder GCC-spezifischen Makros vordefinieren.Template-Spezialisierungen fÃ¼r die Ausgabe nicht als Template-Signatur gefolgt von den Argumenten umformatieren.Keine Standard-Start-Adresse 0x100 des Programmes bereitstellen.In Ãœberwachungsfunktionen erweiterte Register nicht auf Stapel sichern.Standard-System-EinfÃ¼gepfade nicht durchsuchen (die mit -isystem angegebenen werden trotzdem noch verwendet).Standard-System-EinfÃ¼geverzeichnisse nicht fÃ¼r C++ durchsuchen.Eingebaute Funktionen und Codeerzeugung fÃ¼r SSE4.1 und SSE4.2 nicht unterstÃ¼tzen.Keine Fehlersuchinformationen fÃ¼r C++-Klassen unterdrÃ¼cken.Warnungen aus System-Headern nicht unterdrÃ¼cken.Lokale Variablen und COMMON-BlÃ¶cke behandeln, als ob sie in SAVE-Anweisungen benannt worden wÃ¤ren.Ausrichtung von Code und der Nur-Lese-Daten nicht optimieren.Stapelausrichtung nicht optimieren.Ausrichtung der schreibbaren Daten nicht optimieren.%<-mpower8-internal%> nicht verwenden, stattdessen %<-mcpu=power8%>Die GOT nicht verwenden, um auf externe Symbole zuzugreifen.Keine MDMX-Befehle verwenden.Keine MIPS-3D-Befehle verwenden.VAX-FP nicht verwenden.Keine Cache entleerende Funktion verwenden, bevor Stapel-Trampoline aufgerufen werden.Adressen, die globale Register belegen, nicht verwenden.Keine Bedingungscodes normaler Befehle verwenden.Hardware-Gleitkommabefehle nicht verwenden.Hardware-Gleitkommabefehle nicht verwenden.Hardware-Gleitkommabefehle nicht verwenden.Hardware-Vierfach-Gleitkommabefehle nicht verwenden.Die AIX-Vector-Extended-ABI nicht verwenden.AltiVec-ABI-Erweiterungen nicht verwenden.Bit-Feld-Befehle nicht verwenden.Den callt-Befehl nicht verwenden (Standard).Nicht die gerÃ¤tespezifische Specs-Datei Â»device-specs/specs-<MCU>Â« verwenden.Keine unausgerichteten Speicherreferenzen verwenden.Nicht bei den angegebenen Attributen warnen.Nicht bei Verwendung von Â»long longÂ« mit -pedantic warnen.Stapel-ÃœberprÃ¼fung mit Grenzen im L1-Zwischenspeicher durchfÃ¼hren.Tut nichts. FÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤t erhalten.Tut nichts. FÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤t erhalten.Code- und Datenelemente nicht ausrichten.Keine floats und doubles in Registern erweiterter Genauigkeit reservieren.Nicht annehmen, dass unausgerichtete Zugriffe vom System behandelt werden.Keine Funktionen zum Entleeren des Cache aufrufen.Keine Abfangfunktion zum Entleeren des Cache aufrufen.Keine dynamisch gebundene, lageunabhÃ¤ngige ausfÃ¼hrbare Datei erzeugen.Felder von teilweise konstruierten Objekten nicht zerstÃ¶ren.Keine DWARF-ErgÃ¤nzungen Ã¼ber gewÃ¤hlte Version hinaus erzeugen.Keine DLL-exportierten Inline-Funktionen erzeugen, auÃŸer wenn nÃ¶tig.Keine DWARF-Abschnitte fÃ¼r Pubnames und Pubtypes erzeugen.Keine PrÃ¼fungen fÃ¼r Steuerungs-Spekulation in selektiver Planung.Keinen Code mit unausgerichtetem load/store fÃ¼r R6 generieren (Alias von -mstrict-align).Keinen Code mit unausgerichtetem load/store generieren, nur gÃ¼ltig fÃ¼r MIPS R6.Keinen Code nur fÃ¼r privilegierten Modus erzeugen; bringt Â»-mno-inline-ic_invalidateÂ« mit sich, wenn der Â»inlineÂ«-Code nicht im Usermodus funktionieren wÃ¼rde.Keine PrioritÃ¤t mit TARGET_REGISTER_PRIORITY ausdrÃ¼cken.Blockverschiebungen nicht optimieren, sondern Â»memcpyÂ« verwenden.Blockkopierbefehle nicht optimieren.Assembleroperatoren %reloc() nicht verwenden (fÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤t).C-Ã¤hnliche Ganzzahl-Promotion fÃ¼r unÃ¤res Â»+Â«, Â»-Â« und Â»~Â« nicht verwenden.Keine P-Mnemonics fÃ¼r Zweige verwenden.Register r32..r63 nicht verwenden.Mindestens 25-Bit-Addressraum fÃ¼r Aufrufe verwenden.Nicht bei Verwendung von Microsoft-Erweiterungen warnen.Doppelter CLASS IS-Block in SELECT TYPE-Anweisung bei %LÃœbereinstimmungsfehler zu Warnungen degradieren.Angesteuert:AusfÃ¼hren: (%ld)
! Schein-%qs bei %L kann keine Initialisierung habenScheinargument %qs bei %L kann nicht INTENT(OUT) seinScheinargument %qs bei %L kann nicht OPTIONAL seinScheinargument %qs bei %L darf kein abgeleiteter Typ bei %C seinDas Dummy-Argument %qs bei %L kann kein Zeiger mit dem Attribut CONTIGUOUS sein, da die Prozedur %qs BIND(C) istScheinargument %qs bei %L mit EVENT_TYPE darf nicht INTENT(OUT) seinScheinargument %qs bei %L mit LOCK_TYPE darf nicht INTENT(OUT) seinScheinargument %qs bei %L war als INTENT(OUT) deklariert, aber nicht gesetztScheinargument %qs muss Zeiger oder Feld mit angenommener Form ohne CONTIGUOUS-Attribut sein, da das effektive Argument bei %L nicht einfach fortlaufend ist und beide ASYNCHRONOUS oder VOLATILE sindScheinargument %qs ist im Ausdruck bei %L nicht erlaubtScheinargument %qs von %qs bei %L sollte %qs genannt werden, um zum zugehÃ¶rigen Argument der Ã¼berschriebenen Prozedur zu passenScheinargument %qs mit INTENT(IN) in Zeiger-Verbindungskontext (%s) bei %LScheinargument %qs mit INTENT(IN) in Variablen-Definitionskontext (%s) bei %LDummyflag. Dies ist die Voreinstellung, auÃŸer wenn FPX-Schalter explizit angegeben werden.Scheinprozedur %qs bei %C kann keine allgemeine Schnittstelle habenScheinprozedur %qs bei %L darf nicht ELEMENTAL seinDummyprozedur %qs ist in Initialisierung des Prozedurzeigers bei %L ungÃ¼ltigScheinprozedur %qs nicht in elementarer Prozedur %qs bei %L erlaubtScheinprozedur %qs der PURE-Prozedur bei %L muss auch PURE seinScheinprozedur bei %C kann kein BIND(C)-Attribut mit NAME habenQuellcode-Abdeckungsverpflichtungen wegschreiben.Textdarstellung des Pfades jeder Diagnosemeldung nach QUELLDATEI.IDX.KIND.epath.txt wegschreiben.Textdarstellung des expandierten Graphen nach SRCFILE.eg-ID.txt wegschreiben.Textdarstellung des expandierten Graphen nach SRCFILE.eg.txt wegschreiben.Aufrufgraphen des Analysierers nach SRCFILE.callgraph.dot wegschreiben.Daten des Analysierers nach SRCFILE.analyzer.json.gz wegschreiben.Deklaration in .decl-Datei ausgeben.Detaillierte Informationen Ã¼ber die GCC-interne ReprÃ¤sentation von Quellcode-Stellen ausgeben.Nur die definierten Symbole wegschreiben.OptimierungsdurchlÃ¤ufe ausgeben.Informationen Ã¼ber das Wegwerfen von ZustÃ¤nden nach SRCFILE.state-purge.dot wegschreiben.Expandierten Graphen des Analysierers nach SRCFILE.eg.dot wegschreiben.Gesamtgraphen des Analysierers nach SRCFILE.supergraph.dot wegschreiben.Die entmangelte Ausgabe wegschreiben.Die Details von LTO-Objekten wegschreiben.Die Kommandozeilenoptionen des Dump-Werkzeugs wegschreiben.Die Statistik der GIMPLE-Anweisungen wegschreiben.Die Statistik der Baumarten wegschreiben.Die Statistik der BÃ¤ume wegschreiben.Den Aufrufgraphen der Symboltabelle wegschreiben.Diverse Interna des Rust-Frontends wegschreiben.Diverse Interna des Analysierers nach SRCFILE.*.fg.dot und SRCFILE.*.tg.dot wegschreiben.Diverse Interna des Analysierers nach SRCFILE.*.infinite-loop.dot wegschreiben.Diverse Interna des Analysierers nach SRCFILE.analyzer.txt wegschreiben.Diverse Interna des Analysierers auf die Standardfehlerausgabe wegschreiben.Doppelter Modifikator %<prefer_type%> bei %CDoppeltes %<target%> bei %CDoppeltes %<targetsync%> bei %CDoppeltes Attribut %s bei %LAttribut %s doppelt angegeben bei %LDoppelte Markenspezifikation %s bei %CDoppelter %s-Modifikator bei %L in der USES_ALLOCATORS-KlauselDoppelte Spezifikation %s bei %CDoppeltes ASYNCHRONOUS-Attribut bei %L angegebenDoppeltes AUTOMATIC-Attribut bei %L angegebenDoppeltes BIND-Attribut bei %L angegebenDoppeltes DEFERRED bei %CDoppelte ELSE-Anweisungen bei %L und %CDoppeltes EXTENDS-Attribut bei %L angegebenDoppelte IMPLICIT NONE-Anweisung bei %CDoppelte NML-Spezifikation bei %CDoppeltes NON_OVERRIDABLE bei %CDoppeltes POINTER-Attribut bei %CDoppelte PRIVATE-Anweisung bei %CDoppeltes PROTECTED-Attribut bei %L angegebenSAVE-Attribut doppelt angegeben bei %LSAVE-Attribut doppelt angegeben bei %CDoppelte SEQUENCE-Anweisung bei %CDoppeltes Â»STAT=Â«-Attribut bei %CDoppeltes Â»TEAM=Â«-Attribut bei %CDoppeltes Â»TEAM_NUMBER=Â«-Attribut bei %CDoppelte UNIT-Spezifikation bei %CDoppeltes VALUE-Attribut bei %L angegebenDoppeltes VOLATILE-Attribut bei %L angegebenDoppelte Zugriffsspezifikation bei %CDoppeltes Argument %qs bei %L fÃ¼r intrinsisches %sDoppelte Feldspezifikation fÃ¼r Cray-Zeigerende bei %CDoppelte Feldspezifikation fÃ¼r Cray-Zeigerende bei %LDoppelte Aufbau-Marke %qs bei %CDoppelte Format-Spezifikation bei %CDoppelter Name %qs in VerknÃ¼pfung bei %CDoppelter Name %qs in Parameterliste bei %CDoppelte Anweisungsmarke %d bei %L und %LDoppeltes Symbol %qs in formaler Argumentliste bei %CDoppelter PrÃ¤ferenz-Selektor-Name %<fr%> bei %CDoppelte Klausel %qs bei %LDoppelte NOWAIT-Klausel an !$OMP DISPATCH und !$OMP END DISPATCH bei %CDoppelte NOWAIT-Klausel an %s und %s bei %CDoppelte Klausel mit AbhÃ¤ngigkeitsart SOURCE bei %CDoppelter gemeinsamer Block %</%s/%> in !$OMP ALLOCATE bei %LDoppelte Variable %qs in !$OMP ALLOCATE bei %LWÃ¤hrend der Optimierungen zur Linkzeit bei unpassenden Typen von globalen Deklarationen warnen.Dynamic Realign Argument Pointer (DRAP) wird in Interrupt-Service-Routinen nicht unterstÃ¼tzt. Ein Workaround ist, Funktionen mit Aggregat-RÃ¼ckgabetypen zu vermeiden.CC-Register dynamisch belegen.E-Angabe nicht erlaubt mit g0-Deskriptor in Formatzeichenkette bei %LInterner Fehler: EDGE_CROSSING incorrectly set across same sectionInterner Fehler: EDGE_CROSSING missing across section boundaryInterner Fehler: EH edge crosses section boundary in bb %iInterner Fehler: EH incoming edge mixed with non-EH incoming edges in bb %iInterner Fehler: EH landing pad label %qD is not first in a sequence of labels in bb %dELEMENTAL-Funktion %qs bei %L muss ein skalares Ergebnis habenELEMENTAL, nicht-INTRINSIC-Prozedur %qs ist nicht als effektives Argument bei %L erlaubtELEMENTAL-PrÃ¤fix fehlt in MODULE-PROCEDURE-Schnittstelle bei %LELEMENTAL Prozedurzeigerkomponente %qs ist nicht als effektives Argument bei %L erlaubtELFv2-ParameterÃ¼bergabe fÃ¼r ein Argument, das Bitfelder der Breite 0 enthÃ¤lt, aber ansonsten ein homogenes Aggregat ist, wurde in GCC 12 korrigiertELSE-IF-Anweisung bei %C kann nicht auf eine ELSE-Anweisung bei %L folgenAnweisung ELSEWHERE bei %C folgt zuvor unmaskiertem ELSEWHEREELSEWHERE-Anweisung bei %C nicht eingeschlossen in WHERE-BlockENCODING= bei %L ist in Fortran 95 nicht erlaubtEND-TEAM-Anweisung bei %CEND-Anweisung statt %s-Anweisung bei %LEND-Tag bei %C in Ausgabe-Anweisung nicht erlaubtEND-Marke %d bei %L nicht definiertENTRY %qs bei %L kann nicht rekursiv aufgerufen werden, da Funktion %qs nicht RECURSIVE istENTRY %qs bei %L kann nicht rekursiv aufgerufen werden, da Unterprogramm %qs nicht RECURSIVE istENTRY %qs bei %L hat keinen IMPLICIT-TypENTRY-Ergebnis %s kann nicht ALLOCATABLE in FUNCTION %s bei %L seinENTRY-Ergebnis %s kann kein POINTER in FUNCTION %s bei %L seinENTRY-Ergebnis %s kann kein Feld in FUNCTION %s bei %L seinENTRY-Ergebnis %s kann nicht vom Typ %s in FUNCTION %s bei %L seinENTRY-Anweisung bei %CENTRY-Anweisung bei %C kann nicht in einer enthaltenen Prozedur auftretenENTRY-Anweisung bei %C kann nicht innerhalb von BLOCK DATA auftretenENTRY-Anweisung bei %C kann nicht innerhalb eines DERIVED TYPE Blockes auftretenENTRY-Anweisung bei %C kann nicht innerhalb eines DO-Blockes auftretenENTRY-Anweisung bei %C kann nicht innerhalb eines FORALL-Blockes auftretenENTRY-Anweisung bei %C kann nicht innerhalb eines MODULEs auftretenENTRY-Anweisung bei %C kann nicht innerhalb eines PROGRAMmes auftretenENTRY-Anweisung bei %C kann nicht innerhalb eines SELECT-Blockes auftretenENTRY-Anweisung bei %C kann nicht innerhalb eines STRUCTURE-Blockes auftretenENTRY-Anweisung bei %C kann nicht innerhalb eines SUBMODULEs auftretenENTRY-Anweisung bei %C kann nicht innerhalb eines WHERE-Blockes auftretenENTRY-Anweisung bei %C kann nicht innerhalb eines enthaltenen Subprogrammes auftretenENTRY-Anweisung bei %C kann nicht innerhalb eines IF-THEN-Blockes auftretenENTRY-Anweisung bei %C kann nicht innerhalb von INTERFACE auftretenENTRY-Anweisung bei %L mit BIND(C) ist in einer elementaren Prozedur verbotenENTRY_BLOCK has IL associated with itENUM und ENUMERATOR bei %CENUM-Deklaration bei %C hat keine ENUMERATORenAnweisung zur ENUM-Definition vor %C erwartetENUMERATOR %L nicht mit Ganzzahlausdruck initialisiertEOR-Marke %d bei %L nicht definiertEQUIVALENCE bei %C erfordert zwei oder mehr ObjekteEQUIVALENCE-Anweisung bei %CERR-Marke %d bei %L nicht definiertERRMSG bei %LERRMSG bei %L ist ohne STAT-Marke nutzlosERRMSG-Markierung bei %LERRMSG-VariableÂ»ERRMSG=Â«-Variable bei %L muss skalare Default-CHARACTER-Variable seinÂ»ERRMSG=Â«-Argument bei %L muss skalare CHARACTER-Variable seinERROR STOP-Anweisung bei %CESA/390-Architektur.Â»EVENT POSTÂ«-Anweisung bei %CÂ»EVENT WAITÂ«-Anweisung bei %CEVENT-Argument bei %L fÃ¼r die intrinsische EVENT_QUERY muss vom Typ EVENT_TYPE seinEXIT-Anweisung bei %C beendet Â»!$ACC LOOPÂ«-SchleifeEXIT-Anweisung bei %C beendet !$OMP DO SchleifeEXIT-Anweisung ohne DO-CONSTRUCT-Name bei %CEXIT_BLOCK has IL associated with itInterner Fehler: EXTEND can only be used where %s is ACCESS MODE SEQUENTIALEXTENDS bei %LAttribut EXTERNAL steht mit Attribut FUNCTION in %qs bei %L in KonfliktEntweder alle oder keines der Objekte in bei %L gesetztem EQUIVALENCE muss das Attribut PROTECTED habenElement in Feldkonstruktor %s bei %L ist %sElement des Feldes mit vermuteter Form oder von Zeigern bei %L kann nicht zum Argument bei %L passenElement des Feldes mit vermuteter Form oder von Zeigern wird bei %2$L an ein Feld-Scheinargument %1$qs Ã¼bergebenElement mit einem Wert von %1$d in ORDER bei %2$L muss fÃ¼r das intrinsische RESHAPE in der NÃ¤he von %4$L im Bereich [1, â€¦, %3$d] liegenElementare Funktion als Initialisierungsausdruck mit Nicht-Ganzzahl-/Nicht-Zeichen-Argumenten bei %LElemente mit demselben Wert bei %L und %L in Vektorindex in einem Variablen-Definitionskontext (%s)Mehrere Funktionsaufrufe auch fÃ¼r unreine Funktionen entfernen.Â».gnu_attributeÂ«-Etiketten erzeugen..stack_size-Direktiven erzeugen.16-bit-Adressverschiebungen in kleinen Datenbereichen ablegen.32-bit-Adressverschiebungen in kleinen Datenbereichen erzeugen.Property GNU_PROPERTY_X86_ISA_1_NEEDED GNU generieren.IEEE-konformen Code erzeugen, ohne ungenaue Ausnahmen.NOPs vor dem globalen und nach dem lokalen Einstiegspunkt fÃ¼r -fpatchable-function-entry generieren.ELF-Attribut fÃ¼r RISC-V generieren.Informationen zum Aufrufgraph ausgeben.PrÃ¼fungen generieren, die bei Anwendung atomarer eingebauter Operationen auf unausgerichtetem Speicher zu Â»break 8Â«-Befehlen fÃ¼hren.Code fÃ¼r die Byte/Word-ISA-Erweiterung erzeugen.Code fÃ¼r die ZÃ¤hlen-ISA-Erweiterung erzeugen.Code fÃ¼r die FP-Move- und SQRT-ISA-Erweiterung erzeugen.Code fÃ¼r die Video-ISA-Erweiterung erzeugen.Code mit expliziten Adressverschiebungsbefehlen erzeugen.Common-Ã¤hnliche Symbole als schwache Symbole ausgeben.Benutzerdefinierte Warnungen mit internen Details ausgeben, die fÃ¼r Entwickler von Analyseprogrammen bestimmt sind.Debug-Kommentare wÃ¤hrend der Vorverarbeitung ausgeben.Debuginformation fÃ¼r den Escape-Analyse-Durchlauf ausgeben, wenn mit -fgo-optimize-allocs aufgerufen.Diagnoseinformationen zur Position der Knoten im expandierten Graphen ausgeben.Direkte Zweige in lokalen Funktionen erzeugen.ZusÃ¤tzlichen Code im Funktionsprolog ausgeben, um ein Ãœberschreiten des angegebenen Limits fÃ¼r die StapelgrÃ¶ÃŸe abzufangen (trap).Funktionsprologe nur vor Teilen der Funktion erzeugen, die diese benÃ¶tigt, statt am Anfang der Funktion.Bei PIC-Erzeugung Funktionsaufrufe ausgeben, die die globale Offsettabelle verwenden.Verschmolzene multiply-add-Befehle fÃ¼r long double in Vektorregistern (wfmaxb, wfmsxb, wfnmaxb, wfnmsxb) generieren. Der Durchlauf fÃ¼r NeuverknÃ¼pfungen verarbeitet verschmolzene multiply-add-Befehle nicht, daher enthÃ¤lt der vom Mittelteil generierte Code hÃ¤ufig lange verschmolzene multiply-add-Ketten. Das kann die Pipeline nicht gut verarbeiten, daher ist das Standardverhalten, die multiply- und add-Befehle separat zu generieren, soweit es long double in Vektorregistern betrifft. Performancemessungen haben ergeben, dass das besser ist. Diese Option erlaubt das Standardverhalten zu Ã¼bersteuern, zu Testzwecken.Implizite Instanziierungen von Â»inlineÂ«-Templates ausgeben.Implizite Instanziierungen von Templates ausgeben.Indirekte Zweige in lokalen Funktionen erzeugen.Instrumentierungsaufrufe fÃ¼r Aufrufe von __tsan_func_entry() und __tsan_func_exit() erzeugen.Lange Laden/Speichern-Folgen ausgeben.AusfÃ¼hrlichere Beschreibungen des Steuerablaufs in den Diagnosemeldungen ausgeben.AusfÃ¼hrlichere Beschreibungen der ZustandsÃ¤nderungen in den Diagnosemeldungen ausgeben.Multithread- und Async-Signal-sicheren Code fÃ¼r Byte- und Wortspeicherzugriffe generieren.Multithread- und Async-Signal-sicheren Code fÃ¼r partielle Speicherzugriffe generieren.Diagnosemeldungen fÃ¼r Optimierung ausgeben.Profiling-ZÃ¤hleraufruf am Funktionsanfang vor Prolog ausgeben.Aufruf fÃ¼r Profiling-ZÃ¤hler am Funktionsanfang vor dem Prolog ausgeben. Der compilierte Code benÃ¶tigt eine 64-Bit-CPU sowie glibc 2.29 oder neuer zum Laufen.Progressive empfohlene Breakpoint-Stellen ausgeben.rdval statt rduniq fÃ¼r Thread-Zeiger erzeugen.Spezielle Instrumentierung fÃ¼r Zugriff auf volatile-Objekte erzeugen.static-const-Variablen erzeugen, auch wenn sie nicht verwendet werden.Vor und nach Â»volatile extendedÂ«-asms Stopp-Bits ausgeben.Template-Instanziierungen als schwache Symbole ausgeben.Traps als Â»break 8Â« ausgeben, voreingestellt fÃ¼r CRIS v3 und aufwÃ¤rts. Wenn ausgeschaltet, werden Aufrufe von abort() verwendet.AusfÃ¼hrliche Informationen zur Fehlersuche im Assemblercode ausgeben.Leeres FINAL bei %CLeere IMPLICIT-Anweisung bei %CLeerer Feldkonstruktor bei %C ist nicht erlaubtLeere Initialisierungsliste im alten Stil bei %CLeere Ziffernmenge in BOZ-Konstante bei %CAlternativen fÃ¼r q-Befehl einschalten.Die Generierung von Vektor-Segment-Lade-/Speicheranweisungen einschalten (Vorgabe) oder ausschalten.Registersatz mit 16 EintrÃ¤gen aktivieren.32-Bit-ALU-Befehle einschalten.32-Bit-Sprungbefehle einschalten.Erweiterung fÃ¼r 64-Bit-Zeitstempel-Befehl einschalten.C++-Koroutinen einschalten (experimentell).C++-Header-Modul einschalten (experimentell).UnterstÃ¼tzung fÃ¼r Deallozierung mit GrÃ¶ÃŸenangabe aus C++14 einschalten.C++-20-Module einschalten (experimentell).C-SKY-DSP-Befehle einschalten.Erweiterte C-SKY-DSP-Befehle einschalten.C-SKY-SECURE-Befehle einschalten.C-SKY-TRUST-Befehle einschalten.C-SKY-DSP-Vektorbefehle einschalten.CFI-Tabellen Ã¼ber GAS-Assembler-Direktiven einschalten.Cobol-Lex-Debugging einschaltenFehlersuche im Cobol-Parser einschaltenFehlersuche im Cobol-Yacc einschaltenSTATIC- und AUTOMATIC-Attribute im DEC-Stil einschalten.DIV-REM-Befehle fÃ¼r ARCv2 einschalten.DSP-3.1-Paket-A-Erweiterungen einschalten.Dwarf-Zeilenfehlersuchinfo Ã¼ber GNU as einschalten.Befehle mit einem oder zwei Operanden fÃ¼r Telefonie einschalten.Die Opcodes ENTER_S und LEAVE_S fÃ¼r ARCv2 einschalten.Codekomprimierung fÃ¼r FT32B-Code aktivieren.VollstÃ¤ndige Redundanzentfernung (FRE) auf BÃ¤umen einschalten.Funktionsdeskriptor-PIC-Modus einschalten.GPR32 in Inline-Asm einschalten, wenn APX_F eingeschaltet ist.Transformation der Graphite-IdentitÃ¤t einschalten.ID-basierte Shared Library einschalten.IEEE-128-Bit-Gleitkommazahlen mittels SchlÃ¼sselwort Â»__float128Â« einschalten.Lokale Registerzuordnung einschalten.Erweiterung fÃ¼r gesperrte Load/Store-Conditional-Befehle einschalten.Erweiterung fÃ¼r LoongArch Advanced SIMD (LASX, 256-bit) einschalten.LoongArch SIMD-Erweiterung (LSX, 128-bit) einschalten.Befehle MUL.X und UMUL.X einschalten.Objective-C-Ausnahme- und -Synchronisations-Syntax einschalten.Laufzeitbibliothek zur Objective-C setjmp-Ausnahmebehandlung einschalten.OpenACC einschalten.OpenMP einschalten (bringt Â»-frecursiveÂ« in Fortran mit sich).Auslagern an OpenMP-GPU einschalten.SIMD-Direktiven von OpenMP einschalten.PIC-UnterstÃ¼tzung beim Bauen von Bibliotheken einschalten.Plan-9-Spracherweiterungen einschalten.Zusammenfassen von nutzersichtbaren Variablen wÃ¤hrend des SSA-Durchlaufs einschalten.SSA-Codeversenkung auf BÃ¤umen einschalten.Beseitigungsoptimierung fÃ¼r toten SSA-Code auf BÃ¤umen einschalten.SSA-BIT-CCP-Optimierungen auf BÃ¤umen einschalten.SSA-CCP-Optimierungen auf BÃ¤umen einschalten.SSA-PRE-Optimierungen auf BÃ¤umen einschalten.TPF-OS-Tracing-Code einschalten.Virtual-Hosting-UnterstÃ¼tzung einschalten.XY-Speicher-Erweiterung (DSP Version 3) einschalten.Ausrichtung von COMMON-BlÃ¶cken einschalten.Alle -Wunused- Warnungen einschalten.Alle DEC-Spracherweiterungen zulassen.Alle Informationen Ã¼ber Optimierungen auf stderr einschalten.Einen RTL-Guckloch-Durchlauf vor sched2 einschalten.ASan-Schutz fÃ¼r alloca/VLAs einschalten.ASan-Schutz fÃ¼r eingebaute Funktionen einschalten.ASan-Schutz fÃ¼r Verwendung-nach-RÃ¼ckkehr-Fehler einschalten.ASan-Schutz fÃ¼r globale Variablen einschalten.ASan-Schutz fÃ¼r Ladeoperationen einschalten.ASan-Schutz fÃ¼r Stapelspeicher einschalten.ASan-Schutz fÃ¼r Speicheroperationen einschalten.Lockerung des Assemblers und Linkers einschalten. Per Vorgabe eingeschaltet bei -Os.Stapelschrubben fÃ¼r At-Aufrufe fÃ¼r alle geeigneten Funktionen einschalten.Atomare Befehle einschalten.Backend-Fehlersuche einschalten.RÃ¼ckwÃ¤rtsÃ¼bermittlung von Nutzungseigenschaften auf SSA-Ebene einschalten.Rohr-Bitschiebebefehle einschalten.Vektorisierung von BasisblÃ¶cken (SLP) auf BÃ¤umen einschalten.Einfachen Programm-Profilierungscode einschalten.Bytetauschbefehle einschalten.Cache-Umgehung fÃ¼r flÃ¼chtige Referenzen umgehen.Cache-Prefetch-Befehle einschalten.Bestimmte Features aus aktuellen EntwÃ¼rfen von C++-VertrÃ¤gen einschalten.Codedichte-Befehle fÃ¼r ARCv2 einschalten.Codeanhebung einschalten.Allgemeine Optionen zum Erzeugen von Profil-Info fÃ¼r Profil-Feedback-gerichtete Optimierungen einschalten, und -fprofile-dir= setzen.Allgemeine Optionen zum Erzeugen von Profil-Info fÃ¼r Profil-Feedback-gerichtete Optimierungen einschalten.Allgemeine Optionen zum DurchfÃ¼hren von Profil-Feedback-gerichteten Optimierungen einschalten, und -fprofile-dir= setzen.Allgemeine Optionen zum DurchfÃ¼hren von Profil-Feedback-gerichteten Optimierungen einschalten.Kompakte casesi-Muster einschalten.Beseitigung von bedingt totem Code fÃ¼r Aufrufe eingebauter Funktionen einschalten.Bedingte AusfÃ¼hrung (fÃ¼r andere Befehle als Kopieren/scc) einschalten.Verwendung bedingter Kopierbefehle einschalten.Verwendung bedingter Kopierbefehle einschalten.Bedingte Kopierbefehle einschalten.Konservatives abrollen kleiner Schleifen einschalten.Konstruktor-/Destruktor-Feature einschalten.Koprozessorbefehle einschalten.Kopieweitergabe von Informationen Ã¼ber Skalar-Evolution einschalten.Kopieweitergabe auf BÃ¤umen einschalten.Korrektur fluss-unstimmiger Profildateneingabe einschalten.Entfernung toter Speicherungen einschalten.Ausgaben zur Fehlersuche einschalten.HardwareunterstÃ¼tzung fÃ¼r dezimales Gleitkomma einschalten.Standardumwandlungen zwischen Â»__float128Â« und Â»long doubleÂ« einschalten.Standardbreiten fÃ¼r die Formatangaben i, f und g aktivieren.Divisions- und Modulobefehle einschalten.Dominator-Optimierungen einschalten.Doppelte Load/Store-Befehle fÃ¼r ARC HS einschalten.Erweiterung Dual-Virterbi-Butterfly einschalten.FrÃ¼here Stopp-Bit-Platzierung fÃ¼r bessere Planung einschalten.Metadaten direkt in Objektdateien einbettenAusnahmebehandlung einschalten.Experimentelle Fortran-202y-Features einschalten.Experimentelle Ãœbersetzung von Rust-Dateien einschalten, auf eigene GefahrZusÃ¤tzliche bedingte Verzweigungsanweisungen j(s)lt und j(s)le einschalten.Aktivieren Sie Gleitkomma-Statusflags, die SSE-Vektoroperationen auf Teilvektoren setzen.Formatierung der JSON-Ausgabe einschalten.VorwÃ¤rts-Ãœbertragung auf BÃ¤umen einschalten.Frontend-Optimierung einschalten.Funktionsprofilierung einschalten.Funktionen umsortieren, um Codeplatzierung zu verbessern.Garbage Collection (GC) in Objective-C/Objective-C++-Programmen einschalten.Allgemeine atomare Operationen einschalten, die in v3 ISA eingefÃ¼hrt wurden.Erzeugen von ARC-SIMD-Befehlen mithilfe von zielspezifischen eingebauten Funktionen zu erzeugen.BinÃ¤rdateien erzeugen, die Divisionen mit Funktionen aus der libgcc durchfÃ¼hren. Die Vorgabe ist Â»-mhard-divÂ«.BinÃ¤rdateien erzeugen, die Gleitkommaberechnungen mit Funktionen aus der libgcc durchfÃ¼hren. Dies ist die Voreinstellung; Ã¤nderbar mit Â»-mhard-floatÂ«.BinÃ¤rdateien erzeugen, die Multiplikationen mit Funktionen aus der libgcc durchfÃ¼hren. Die Vorgabe ist Â»-mhard-mulÂ«.Befehle fÃ¼r Vergleiche mit Setzen der Flags (l.sf*i) erlauben. Standardverhalten ist, stattdessen zusÃ¤tzliche Befehle zu verwenden, die den Direktwert in ein Register zwischenspeichern.Befehle fÃ¼r bedingte Zuweisungen (l.cmov) erlauben. Standardverhalten ist, stattdessen Ã¤quivalente set- und branch-Befehle zu verwenden.Division mit Hardware-Befehlen (l.div, l.divu) aktivieren. Dies ist die Voreinstellung; Ã¤nderbar mit Â»-msoft-divÂ«.Gleitkommaberechnungen mit Hardware-Befehlen durchfÃ¼hren. Die Voreinstellung ist Â»-msoft-floatÂ«.Multiplikation mit Hardware-Befehlen (l.mul, l.muli) aktivieren. Dies ist die Vorgabe; Ã¤nderbar mit Â»-msoft-mulÂ«.Inline-Code zur Implementierung von eingebauten Funktionen verwenden, statt Bibliotheksfunktionen aufzurufen.Befehle fÃ¼r Rechtsdrehung (l.ror) erzeugen. StandardmÃ¤ÃŸig werden Funktionen aus der libgcc verwendet, um Rechtsdrehungen mit Direktoperand durchzufÃ¼hren.Befehle fÃ¼r Rechtsdrehung mit Direktoperand (l.rori) erzeugen. StandardmÃ¤ÃŸig werden Funktionen aus der libgcc verwendet, um diese Befehle durchzufÃ¼hren.Befehle fÃ¼r Bitverschiebung mit Direktwert (l.srai, l.srli, l.slli) erlauben. Standardverhalten ist, stattdessen zusÃ¤tzliche Befehle zu verwenden, die den Direktwert in ein Register zwischenspeichern.Befehle fÃ¼r Vorzeichenerweiterung (l.ext*) erlauben. Standardverhalten ist, die Vorzeichenerweiterung mittels Ladebefehlen durchzufÃ¼hren.Erraten der Sprungwahrscheinlichkeiten einschalten.Hardware-Gleitkommabefehle einschalten.Herausziehen aufeinanderfolgender Ladeoperationen einschalten, um Erzeugung bedingter Kopieroperationen zu fÃ¶rdern.Herausziehen von Ladeoperationen aus bedingten Zeigern einschalten.hwasan-Instrumentierung fÃ¼r alloca/VLAs einschalten.hwasan-Instrumentierung fÃ¼r eingebaute Funktionen einschalten.hwasan-Instrumentierung fÃ¼r Ladeoperationen einschalten.hwasan-Instrumentierung von auf dem Stapel allozierten Variablen fester GrÃ¶ÃŸe einschalten.hwasan-Instrumentierung fÃ¼r Speicheroperationen einschalten.Ein- und Ausgabe der Graphite-ReprÃ¤sentierung einschalten.Inkrementelle LTO einschalten, mit seinem Cache im angegebenen Verzeichnis.Â»inlineÂ«-PrÃ¼fungen fÃ¼r NIL-EmpfÃ¤nger mit NeXT-Laufzeitumgebung und ABI-Version 2 einschalten.Inlining von PLT in Funktionsaufrufen einschalten.Einschalten des Inlining von Â»inlineÂ«-Funktionen, ansonsten wird jegliches Inlining ausgeschaltet.Befehle einschalten, die Angriffe Ã¼ber return-orientierte Programmierung vereiteln.Internes Stapelschrubben fÃ¼r alle geeigneten Funktionen einschalten.Interrupt-Stapelbefehle einschalten.Artspezifische Varianten der intrinsischen Ganzzahlfunktionen einschalten.Sprungmarkenausrichtungs-Optimierungen einschalten.Faules Modul-Importieren einschalten.Intrinsische Altlasten-Mathematik-Funktionen fÃ¼r KompatibilitÃ¤t einschaltet.Veraltetes Parsen von INCLUDE als Anweisung einschalten.LebenszeitverlÃ¤ngerung fÃ¼r bereichsbasierte temporÃ¤re Â»forÂ«-Variablen einschalten.Optimierungen zur Bindezeit einschalten.Binder-Optimierungen einschalten.Binderlockerung einschalten.Binderlockerungen einschalten.Binderlockerung einschalten.Zusammenfassen von benachbarten Lade-/Speicherbefehlen einschalten.Schleifenverteilung fÃ¼r in Bibliotheksaufruf umgewandelte Muster einschalten.Schleifenverteilung auf BÃ¤umen einschalten.Vektorisierung des Schleifen-Epilogs mit kleinerer VektorgrÃ¶ÃŸe einschalten.Kopieren des Schleifenkopfes auf BÃ¤umen einschalten.Umordnen der Schleifen auf BÃ¤umen einschalten.Bewegung der Schleifeninvariante auf BÃ¤umen einschalten.Schleifenschachtelungs-Umwandlungen einschalten. Entspricht -floop-next-optimize.Schleifenoptimierungen auf Baumebene einschalten.Schleifenvektorisierung von Gleitkommabefehlen einschalten.Schleifenvektorisierung auf BÃ¤umen einschalten.Maschinenspezifische Guckloch-Optimierungen einschalten.AusfÃ¼hrlichere RTX-Kosten wÃ¤hrend des Debuggens ausgeben.  Nur fÃ¼r GCC-Entwickler gedacht.Die meisten Warnungen einschalten.Multicore-UnterstÃ¼tzung einschalten.Multiplikationsbefehle einschalten.Multiprozessorbefehle einschalten.Optimierungen fÃ¼r geschachtelte bedingte AusfÃ¼hrung einschalten.Optimierung von &&/|| in bedingter AusfÃ¼hrung einschalten.GIMPLE-Parsen einschalten.Vorausschauende Verwendung von Â»cbranchsiÂ«-Mustern einschalten.Vorverarbeitung einschalten.BereichsprÃ¼fung wÃ¤hrend Kompilierung einschalten.Neuverbindung auf Baumebene einschalten.Registerdruckempfindliche Befehlsplanung einschalten.Lockerung im Assembler einschalten.rvalue-Argumente fÃ¼r ref-Parameter aktivieren.SicherheitsprÃ¼fungen bei allen Funktionen standardmÃ¤ÃŸig einschalten.Planung Ã¼ber BasisblÃ¶cke hinaus einschalten.Gesondertes Datensegment einschalten.Setzen von GPRs auf das Ergebnis von Vergleichen einschalten.Stapelspeicher-Sicherungskopie im Rahmen der Control-Flow Enforcement Technology (CET) einschalten.Vorzeichenerweiternde Befehle einschalten.Vorzeichenbehaftete Divisions- und Modulobefehle einschalten.Vorzeichenbehaftete Kopier- und Ladebefehle einschalten.Aufteilung von 32-Bit-Immediates in oberen/unteren Teil einschalten.Stapelsondierung einschalten.Stapelschrubben gemÃ¤ÃŸ der Attribute einschalten, mit strenger AufrufprÃ¼fung.Stapelschrubben fÃ¼r alle geeigneten Funktionen einschalten.Durchgang fÃ¼r statische Analyse einschalten.Strenge PrÃ¼fung fÃ¼r 32-bit psABI StrukturrÃ¼ckgabe einschalten.ZeichenkettenlÃ¤ngen-Optimierungen auf BÃ¤umen einschalten.UnterstÃ¼tzung fÃ¼r C++-Konzepte einschalten.UnterstÃ¼tzung fÃ¼r DEC STRUCTURE/RECORD einschalten.UnterstÃ¼tzung fÃ¼r GNU-Transaktionsspeicher einschalten.UnterstÃ¼tzung fÃ¼r RH850-ABI einschalten. Dies ist der Standard.UnterstÃ¼tzung fÃ¼r altes GCC-ABI einschalten.Erweiterung fÃ¼r Bytevertauschbefehle einschalten.Enden-Zusammenfassung auf BÃ¤umen einschalten.CSR-PrÃ¼fung fÃ¼r die ISA-abhÃ¤ngigen CSR und das schreibgeschÃ¼tzte CSR einschalten. Die ISA-abhÃ¤ngigen CSR sind nur gÃ¼ltig, wenn die entsprechende ISA festgelegt ist. Das schreibgeschÃ¼tzte CSR kann nicht von den CSR-Befehlen geschrieben werden.Die MIPS16e-V2-Befehle einschalten.Den fundamentalen Typ char8_t einschalten und ihn als Typ fÃ¼r UTF-8-Zeichenketten und Zeichenliterale verwenden.Kopie des AArch64-Lade/Speicher-Paar-Fusionspasses, der nach der Registerzuweisung ausgefÃ¼hrt wird, aktivieren.Kopie des AArch64-Lade/Speicher-Paar-Fusionspasses, der vor der Registerzuweisung ausgefÃ¼hrt wird, aktivieren.Critical-Path-Heuristik im Planer einschalten.Heuristik fÃ¼r AbhÃ¤ngigkeits-ZÃ¤hler bei Planung einschalten.AnnÃ¤herung der Division einschalten. Dies reduziert die Genauigkeit der Division auf etwa 16 Bits fÃ¼r einfache Genauigkeit und 32 Bits fÃ¼r doppelte Genauigkeit.Erweiterte LRW-Befehle einschalten (Standard fÃ¼r CK801).Gruppenheuristik im Planer einschalten.Heuristik fÃ¼r letzte Befehle im Planer einschalten.Optimierer fÃ¼r geschachtelte Schleifen einschalten.Normalen Modus einschalten.ÃœberlaufprÃ¼fungen bei der Codegenerierung einschaltenRang-Heuristik im Planer einschalten.AnnÃ¤herung der reziproken Quadratwurzel einschalten. Dies reduziert die Genauigkeit der reziproken Quadratwurzelergebnisse auf etwa 16 Bits fÃ¼r einfache Genauigkeit und 32 Bits fÃ¼r doppelte Genauigkeit.Heuristik fÃ¼r spekulative Befehle im Planer einschalten.AnnÃ¤herung der Quadratwurzel einschalten. Dies reduziert die Genauigkeit der Quadratwurzelergebnisse auf etwa 16 Bits fÃ¼r einfache Genauigkeit und 32 Bits fÃ¼r doppelte Genauigkeit. Wenn eingeschaltet, bringt es Â»-mlow-precition-recip-sqrtÂ« mit sich.Verwendung von 64-Bit Gleitkommaregistern in FMOV-Befehlen einschalten. Siehe auch -mdalign, wenn 64-Bit-Ausrichtung benÃ¶tigt wird.Verwendung des RX-FPU-Befehls einschalten. Dies ist Standard.Verwendung von leeren Formatelementen in Formatzeichenketten einschalten.Zeichenliterale in Zuweisungen und Datenanweisungen fÃ¼r Nichtzeichenvariablen aktivieren.Verwendung von indexierten Ladebefehlen einschalten.Verwendung von Pre-/Post-Modifikationen mit Registerversatz einschalten.Verwendung des LRA-Registerallozierers einschalten.Verwendung des fsca-Befehls einschalten.Verwendung des fsrra-Befehls einschalten.Verwendung des alten, defekten ABI, bei dem alle Funktionsargumente auf dem Stapel auf 32 Bits ausgerichtet sind.Verwendung der kurzen Ladebefehle einschalten.Verwendung des Standard-RX-ABI, wobei alle Funktionsargumente auf dem Stapel natÃ¼rlich ausgerichtet sind. (Voreinstellung.)Die z-Vektor-Spracherweiterung einschalten, die das kontextabhÃ¤ngige Vektormakro einschaltet und eingebaute Funktionen im Altivec-Stil aus vecintrin.h einschaltet.Traditionelle Vorverarbeitung einschalten.TransitivitÃ¤t von BeschrÃ¤nkungen wÃ¤hrend der Analyse berÃ¼cksichtigen.Nicht ausgerichtete Wort- und Halbwortzugriffe auf gepackte Daten einschalten.Verwendung der BI/BIH-Befehle einschalten, wenn verfÃ¼gbar.Verwendung von GPREL fÃ¼r Nur-Lese-Daten in FDPIC einschalten.Verwendung der NPS400-Bitbefehle einschalten.Erweiterung fÃ¼r xld/xst fÃ¼r NPS400 einschalten.Verwendung von POST_INC / POST_DEC einschalten.Verwendung von POST_MODIFY einschalten.Verwendung von R16 bis R31 einschalten (Standard).Verwendung der ungeraden Register fÃ¼r Gleitkomma einfacher Genauigkeit erlauben.Verwendung von sdata/scommon/sbss einschalten.Benutzerdefinierte Befehle einschalten.IEEE-128-Bit-Gleitkomma-Befehle einschalten.Schleifenbefehle fÃ¼r v850e3v5 einschalten.Variable polynomiale CRC-Erweiterung einschalten.Verschiedene sicherheitsrelevante Optionen einschalten.Vektorisierung fÃ¼r Gathering-Befehl einschalten.Vektorisierung fÃ¼r Scatter-Befehl einschalten.Vektorisierung auf BÃ¤umen einschalten.Wortreiche Ausgabe einschalten.Workaround fÃ¼r einzelnes Erratum des AT697F-Prozessors einschalten (entspricht Erratum #13 des Prozessors AT697E).Workarounds fÃ¼r Errata des GR712RC-Prozessors einschalten.Workaround fÃ¼r Errata des UT699-Prozessors einschalten.Workarounds fÃ¼r Errata des UT699E/UT700-Prozessors einschalten.Traditionelle Planung in Schleifen, die bereits Modulo-Planung unterzogen wurden, einschalten/ausschalten.Einschalten/Ausschalten der statischen Bindung fÃ¼r CALL-LiteraleID-basierte Shared Library einschalten.Betriebsart fÃ¼r positionsunabhÃ¤ngige Daten (PID) einschalten.Ein-/ausschalten der Verwendung der Befehle SMOVF, SMOVB, SMOVU, SUNTIL, SWHILE und RMPA. Vorgabe: eingeschaltet.Schaltet das dynamische Vektorisierer-Kostenmodell ein. FÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤t erhalten.AusfÃ¼hrliche Ausgabe des Kostenmodells in den Debug-Dumpdateien einschalten.SSE-Befehle mit VEX-PrÃ¤fix kodieren.End-Ausdruck in DO-SchleifeEnde der #embed-Suchliste.
  Ende der DO-Anweisung bei %C ist mit anderer DO-Schleife verwobenEnde der DO-Anweisung ohne Block bei %C ist innerhalb eines anderen BlockesEnde der skalaren Initialisierung bei %C erwartetEnde der Suchliste.
! Semantik der Zugriffskontrolle fÃ¼r Klassenelemente erzwingen.EntitÃ¤t %qs bei %L hat verzÃ¶gerten LEN-Parameter %qs und benÃ¶tigt entweder das POINTER- oder ALLOCATABLE-AttributEntitÃ¤t %qs bei %L hat Parameter mit aufgeschobenem Typ und benÃ¶tigt entweder das POINTER- oder ALLOCATABLE-AttributEntitÃ¤t %qs bei %L ist bereits in der Schnittstelle vorhandenEntity %qs bei %L ist inkompatibel zu einer BOZ-Literal-KonstanteEntitÃ¤t mit vermuteter ZeichenlÃ¤nge bei %L muss ein Scheinargument oder ein PARAMETER seinZÃ¤hler Ã¼bersteigt den C-Ganzzahltyp bei %CVergleich auf Gleichheit fÃ¼r %s bei %LÃ„quivalenz fÃ¼r %qs passt nicht zur Anordnung von COMMON %qs bei %LÃ„quivalent zu -fcf-protection=full.ERRMSG-Variable bei %L darf nicht Â»%sÂ« innerhalb der selben Â»%sÂ«-Anweisung seinFehlerFehler beim Reservieren von %lu BytesFehler bei Umwandlung von PARAMETER-Konstante in komplexer Konstante bei %CFehler beim Umwandeln einer GanzzahlFehler in Feldkonstruktor, auf den bei %L verwiesen wirdFehler in Zeigerinitialisierung bei %CFehler in Typspezifikation bei %LFehler in TypbeschrÃ¤nktem Aufruf bei %LFehler beim VergrÃ¶ÃŸern des Speicherblocks auf %lu BytesFehler beim Schreiben der JSON-Ausgabedatei Â»%sÂ«
  Fehler beim Schreiben der Moduldatei %qs: %sFehler beim Schreiben der Moduldatei: %sFehler beim Schreiben der Ausgabedatei Â»%sÂ«
! Auswertung des nicht standardisierten Initialisierungsausdrucks bei %LZeichenkette mit mehr als 2 hoch 28 Zeichen bei %L wird erst bei AusfÃ¼hrung des Programms ausgewertet werden, rechnen Sie mit FehlernEreignisArgument fÃ¼r Ereignisvariable bei %L muss ein Koarray, aber nicht koindiziert seinArgument fÃ¼r Ereignisvariable bei %L muss ein Koarray oder koindiziert seinEreignis-Variable bei %L muss Skalar mit EVENT_TYPE seinJeder Feldindex der Zielspezifikation bei %L muss ein konstanter Ausdruck seinAbbruchbedingung der DO WHILE-Schleife bei %L muss ein skalarer LOGICAL-Ausdruck seinBeim ersten auftretenden Fehler beenden.32-/64-Bit-Ganzzahldivision in vorzeichenlose 8-Bit-Ganzzahldivision mit LaufzeitprÃ¼fung erweitern.Im Zuge der RTL-Erzeugung die Befehle adddi3 und subdi3 in add.f/adc usw. expandieren.Â»)Â« bei %C erwartetÂ»,Â« bei %C erwartet%<( depobj )%> bei %C erwartet%<(%> nach %<prefer_type%> bei %C erwartet%<(%> nach %qs bei %C erwartet%<(%> bei %C erwartet%<)%> bei %C erwartet%<)%> oder %<,%> bei %C erwartet%<)%> oder %<omp_cur_iteration%> bei %C erwartetIn Koindex-Spezifikation in ALLOCATE-Anweisung bei %L wird %<*%> erwartet%<,%> bei %C erwartet%<,%> oder %<)%> bei %C erwartet%<,%> oder %<:%> bei %C erwartet%<,%> oder %<}%> bei %C erwartet%<,%> oder Ende der Anweisung bei %C erwartet%<:%> bei %C erwartet%<::%> nach Bindeattributen bei %C erwartet%<::%> bei %C erwartetAtomarer Vergleichsausdruck %<==%>, %<.EQ.%> oder %<.EQV.%> bei %L erwartet%<=>%> bei %C erwartet%<END INTERFACE ASSIGNMENT (=)%> bei %C erwartet%<fr(%> oder %<attr(%> bei %C erwartet%<prefer_type%>, %<target%> oder %<targetsync%> bei %C erwartet%<{%> bei %C erwartet',' oder ')' in der Reduktionsliste bei %C erwartetÂ»::Â« in TYPE-Definition bei %C erwartetZeichen Â»=Â« in PARAMETER-Anweisung bei %C erwartetACQ_REL, ACQUIRE, RELAXED, RELEASE oder SEQ_CST fÃ¼r ATOMIC_DEFAULT_MEM_ORDER-Klausel bei %C erwartetALIGN- oder ALLOCATOR-Klausel bei %C erwartetEins von ALLOC, TO, FROM, TOFROM, FIRSTPRIVATE, PRESENT, NONE oder DEFAULT bei %C erwartetEntweder COMPILATION oder EXECUTION erwartet in AT-Klausel bei %CEine der Klauseln DEPEND, UPDATE oder DESTROY bei %C erwartetDO-Schleife bei %C erwartetELSE bei %L erwartet, in atomarer VergleichserfassungDie SEVERITY-Klausel bei %C erwartet entweder FATAL oder WARNINGHOST, NOHOST oder ANY bei %C erwartetIF bei %L erwartet, in atomarer VergleichserfassungEins von IN, OUT, INOUT, INOUTSET oder MUTEXINOUTSET bei %C erwartet, gefolgt von %<)%>Eine der Klauseln INCLUSIVE oder EXCLUSIVE bei %C erwartetINTEGER-Typ bei %L erwartetTyp INTEGER, REAL oder CHARACTER fÃ¼r %qs in REDUCE mit MIN/MAX bei %L erwartet, %s bekommenEine der Klauseln NONE oder PRESENT bei %C erwartetEins von NONE, FIRSTPRIVATE, PRIVATE oder SHARED erwartet, in DEFAULT-Klausel bei %CUnerwartetes Â»OMP END METADIRECTIVEÂ« bei %CORDER(CONCURRENT) erwartet bei %C, optional mit Modifizierer %<reproducible%> oder %<unconstrained%>P-Bearbeitungsdeskriptor erwartet in Formatzeichenkette bei %LPARAMETER-Symbol in komplexer Konstante bei %C erwartetRANK oder RANK DEFAULT gefolgt von SELECT RANK erwartet bei %CEins von SCALAR, AGGREGATE, ALLOCATABLE, POINTER oder ALL bei %C erwartetEins von SEQ_CST, ACQUIRE oder RELAXED erwartet, bei %CEins von SEQ_CST, AQC_REL, RELEASE oder ACQUIRE bei %C erwartetSHAPE-Argument fÃ¼r C_F_POINTER mit Array-FPTR bei %L erwartetEins von TEAMS, PARALLEL oder THREAD erwartet als Bindung in BIND bei %CTYPE IS-, CLASS IS- oder END SELECT-Anweisung hinter SELECT TYPE bei %C erwartetEine der Klauseln UNIFIED_ADDRESS, UNIFIED_SHARED_MEMORY, SELF_MAPS, DYNAMIC_ALLOCATORS, REVERSE_OFFLOAD oder ATOMIC_DEFAULT_MEM_ORDER bei %L erwartetCASE- oder END-SELECT-Anweisung hinter SELECT CASE bei %C erwartetNamenlose Schnittstelle bei %C erwartetProzedur fÃ¼r Argument %qs bei %L erwartetProzedurzeiger fÃ¼r Argument %qs bei %L erwartetRechte Klammer in Ausdruck bei %C erwartetSchrittvariable in Iterator bei %C erwartetZugriffsspezifikation bei %C erwartetAlternative RÃ¼cksprungmarke bei %C erwartetInitialisierungsausdruck bei %C erwartetAndere Dimension in Felddeklaration bei %C erwartetArgumentliste bei %C erwartetArrayindex erwartet bei %CFeldindexsprung erwartet bei %CVerknÃ¼pfungsname bei %C erwartetVerknÃ¼pfung bei %C erwartetVerknÃ¼pfungsliste bei %C erwartetAttributbitname erwartetBindeattribut bei %C erwartetBindungsname bei %C erwartetBindungsziel hinter %<=>%> bei %C erforderlichBlockname %qs des SELECT-Konstrukts bei %C erwartetBlocknamen von %qs in Â»%sÂ«-Anweisung bei %L erwartetGrenzen fÃ¼r %qs bei %L erwartetCoarray-Variable als Argument %qs fÃ¼r intrinsisches %s bei %L erwartetKomma in E/A-Liste bei %C erwartetReferenz auf Komponente bei %C erwartetKonstanter nichtnegativer skalarer ganzzahliger Offset-Ausdruck bei %L erwartetKonstanter skalarer Ganzzahl-Ausdruck oder nichtleeres Standard-Zeichenliteral bei %L erwartetKonstrukttyp PARALLEL, SECTIONS, DO oder TASKGROUP in Anweisung $OMP CANCELLATION POINT bei %C erwartetDatenkonstante nach Wiederholungsangabe bei %C erwartetStandard-Zeichenkettenliteral bei %L erwartetSINK oder SOURCE des AbhÃ¤ngigkeitstyps bei %C erwartetDummyparametername oder eine positive Ganzzahl bei %L erwartetIn AUTOMATIC-Anweisung bei %C wird eine Â»entity-listÂ« erwartetÂ»entity-listÂ« in STATIC-Anweisung bei %C erwartetExponent in Ausdruck bei %C erwartetAusdruck bei %C in PARAMETER-Anweisung erwartetAusdruck in %s-Anweisung bei %C erwartetErwarteter Ausdruck in Feldspezifikation bei %CAusdruckstyp erwartetFormale Argumentliste in Funktionsdefinition bei %C erwartetGenerischer Name oder Operatordeskriptor bei %C erwartetBezeichner bei %C erwartetInitialisierungsausdruck bei %C erwartetErwarteter Initialisierungsausdruck in CASE bei %CGanzzahl erwartetGanzzahlausdruck bei %C erwartetGanzzzahlausdruck der Art %<omp_allocator_handle_kind%> bei %L erwartetEntweder ein Ganzzahlausdruck oder genau ein GerÃ¤temodifizierer %<device_num%> oder %<ancestor%> erwartet bei %CGanzzahlzeichenkette erwartetGanzzahltyp fÃ¼r %qs in REDUCE mit IAND/IOR/IEOR bei %L erwartet, %s bekommenErwarteter intrinsischer Initialisierungsausdruck OMP WORKSHARE bei %LMarke %qs fÃ¼r Â»%sÂ«-Anweisung bei %C erwartetLinke Klammer erwartetListe von %<untere-Grenze :%> oder Liste von %<untere-Grenze : obere-Grenze%>-Angaben bei %L erwartetLogischer Typ fÃ¼r %qs in REDUCE bei %L erwartet, %s bekommenProzedurname im Modul bei %C erwartetName erwartetNumerischer Typ fÃ¼r %qs in REDUCE bei %L erwartet, %s bekommenParameterliste in Typdeklaration bei %C erwartetPositiver Argumentindex bei %L erwartetBereichsangabe erwartet bei %CEchte Zeichenkette erwartetReduktionsoperator oder Funktionsname bei %C erwartetRegister oder konstante Ganzzahl erwartet.Rechte Klammer erwartetSkalaren Initialisierungsausdruck bei %C erwartetSkalarer intrinsischer Ausdruck bei %L erwartet, in atomarem VergleichSkalare intrinsische Variable bei %L erwartet, in atomarem VergleichSpezifischer Bindungsname bei %C erwartetZeichenkette erwartetStrukturkomponentenname bei %C erwartetName einer Strukturkomponente oder eines Operators nach %<.%> bei %C erwartetBeendenden Namen bei %C erwartetTrait-property-extension bei %C erwartetTypgebundene Prozedur oder Prozedurzeiger-Komponente bei %C erwartetVariablenliste bei %C erwartetVariablennamen bei %C erwartetVariablennamen bei %C in PARAMETER-Anweisung erwartetVariablenname in %s Ortsangabe bei %L erwartetVariablenname in der Reduktionsliste bei %C erwartet%<END INTERFACE %s%> bei %C erwartet%<END INTERFACE OPERATOR (%s)%> bei %C erwartet%<END INTERFACE OPERATOR (%s)%> bei %C erwartet, aber %qs erhalten%<END INTERFACE OPERATOR (.%s.)%> bei %C erwartet%s bei %C erwartetÂ»%sÂ«-Anweisung bei %L erwartetKomma in EQUIVALENCE bei %C erwartetSkalaren INTEGER-Ausdruck bei %C erwartet, aber %s gefundenVariable bei %L erwartetDefinierbare EntitÃ¤t bei %L erwartetListe benannter EintrÃ¤ge bei %C erwartetVariable in READ-Anweisung bei %C erwartetVariable oder io-implied-do bei %L erwartetVariable oder io-implied-do in READ-Anweisung bei %L erwartetExperimentelle vorzeichenlose Zahlen.Explizite Arrayform bei %C muss eine Konstante vom Typ INTEGER sein, nicht %sExplizite Schnittstelle fÃ¼r %qs bei %L erforderlich: %sExplizite Schnittstelle fÃ¼r Komponente %qs bei %L erforderlich: %sExplizite Schnittstelle fÃ¼r polymorphes Argument bei %L erforderlichFeld mit expliziter Form, aber nichtkonstanten Grenzen bei %CFunktionen exportieren, auch wenn sie Â»inlineÂ« sein kÃ¶nnen.Ausdruck bei %L muss in diesem Kontext eine Konstante seinAusdruck bei %L muss INTEGER-Typ haben, %s gefundenAusdruck bei %L muss skalar seinAusdruck in CASE-Anweisung bei %L darf nicht %s seinAusdruck in CASE-Selektor bei %L muss skalar seinAusdruck in CASE-Anweisung bei %L ist nicht im Bereich von %sAusdruck in CASE-Anweisung bei %L muss von der Art %d seinAusdruck in CASE-Anweisung bei %L muss Typ %s habenAusdruck in CASE-Anweisung bei %L muss skalar seinAusdruck in Â»STAT=Â« bei %C darf nicht koindiziert seinAusdruck ist ein nicht interoperabler abgeleiteter TypAusdruck ist polymorphErweiterung, ein LOGICAL in einer Art zu verwenden, die nicht kompatibel zu C_Bool istErweiterung, ein CHARACTER in einer Art zu verwenden, die nicht kompatibel zu C_CHAR istErweiterung: Spezifizierer %s in Anweisung %s bei %L hat Wert %qsErweiterung: Umwandlung von %s in %s bei %LErweiterung: Skalares effektives nicht-standardartiges, nicht-C_CHAR CHARACTER-Argument mit Feld-Scheinargument %qs bei %LErweiterung: UnÃ¤rer Operator hinter arithmetischem Operator bei %C (Klammern verwenden)Erweiterung: Nullbreite hinter L-Deskriptor bei %LErweiterung: Zeichen Backslash bei %CErweiterung: Exponentbuchstabe %<q%> in literaler Realkonstante bei %CExternes %qs bei %L kann keine Initialisierung habenExterne IO UNIT kann kein Feld bei %L seinExternes Objekt %qs bei %L darf keinen Initialisierer habenÃœberflÃ¼ssige Option fÃ¼r %<-Xassembler%>; %s, alle Optionen der Form %<-Xassembler%> und %<-Wa%> werden verworfen.ÃœberschÃ¼ssige Zeichen im Format bei %LF2008: C1210 IMPORT-Anweisung bei %C ist im KÃ¶rper einer Schnittstelle fÃ¼r Modulprozedur nicht erlaubtÂ»FAIL IMAGEÂ«-Anweisung bei %CArgument FAILED= fÃ¼r NUM_IMAGES bei %LDer FDPIC-Modus wird im Thumb-1-Modus nicht unterstÃ¼tztFINAL-Klausel bei %L erfordert einen skalaren LOGICAL-AusdruckFINAL-Deklaration bei %C muss innerhalb von CONTAINS seinFINAL-Deklaration bei %C muss innerhalb eines CONTAINS-Abschnitts eines abgeleiteten Typs stehenFINAL-Prozedur %qs bei %L ist keine SUBROUTINEBei %2$L deklarierte FINAL-Prozedur %1$qs hat denselben Rang (%3$d) wie %4$qsFINAL-Prozedur bei %L muss genau ein Argument habenFINAL-Prozedur bei %L mit angenommenem Rangargument muss der einzige Finalisierer mit derselben Art/Typ sein (F2018: C790)FINAL-Prozedurdeklaration bei %CFLUSH-Anweisung bei %CFORALL-Konstrukt bei %LFORALL-Endausdruck bei %L muss skalarer INTEGER seinFORALL-Index %qs kann nicht in Tripel-Spezifikation bei %L auftretenFORALL-Indexname bei %L muss skalarer INTEGER seinFORALL-Indexname bei %L muss skalarer INTEGER seinFORALL-Maskenklausel bei %L erfordert einen skalaren LOGICAL-AusdruckFORALL-Anfangsausdruck bei %L muss skalarer INTEGER seinFORALL-Schrittausdruck bei %L kann nicht Null seinFORALL-Schrittausdruck bei %L muss skalares %s seinFORM-TEAM-Anweisung bei %CFORMAT-Marke %d bei %L nicht definiertFORMAT-Anweisung bei %C kann nicht innerhalb von INTERFACE auftretenFORMAT-Anweisung bei %L hat keine AnweisungsmarkeFORMAT-Kennzeichen bei %L kann kein Feld der GrÃ¶ÃŸe 0 seinFORMAT-Markierung bei %L muss vom Typ Standard-CHARACTER oder INTEGER seinGleitkomma-Ausnahmen sind eingeschaltet.Gleitkomma-Register kÃ¶nnten trotz Attribut %qE Ã¼berschrieben werden: compilieren Sie mit %<-mgeneral-regs-only%>Argument FPTR fÃ¼r C_F_POINTER bei %L darf nicht polymorph seinFPTR-Argument fÃ¼r C_F_POINTER bei %L ist eine Funktion, die einen Zeiger zurÃ¼ckgibtFPU-Typen von LoongArch:FPX-Optionen Â»fastÂ« und Â»compactÂ« schlieÃŸen sich ausFPX: Gleitkommaerweiterungen fÃ¼r doppelte Genauigkeit fÃ¼r Argonaut-ARC-CPU einschalten.FPX: kompakte FPX-Befehle fÃ¼r doppelte Genauigkeit erzeugen.FPX: schnelle FPX-Befehle fÃ¼r doppelte Genauigkeit erzeugen.FPX: kompakte FPX-Befehle fÃ¼r einfache Genauigkeit erzeugen.FPX: schnelle FPX-Befehle fÃ¼r einfache Genauigkeit erzeugen.FROMPOS-Argument (%ld) auÃŸerhalb des Bereichs 0:%d in intrinsischem MVBITSFROMPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsischem MVBITSFUNCTION-Ergebnis %s kann nicht ALLOCATABLE in FUNCTION %s bei %L seinFUNCTION-Ergebnis %s kann kein POINTER in FUNCTION %s bei %L seinFUNCTION-Ergebnis %s kann kein Feld in FUNCTION %s bei %L seinFUNCTION-Ergebnis %s kann nicht vom Typ %s in FUNCTION %s bei %L seinKomplexe Konstruktoren und Destruktoren ausfaktorisieren, um Speicherplatz gegenÃ¼ber Geschwindigkeit zu gewinnen.Failed to create structure type '%s' at %CKeine passende Klausel gefunden bei %CFailure getting length of a constant array.Fehler bei Umwandlung von BOZ in REAL bei %LSchwerwiegender FehlerDie Datei %qs wird rekursiv eingebundenBei %2$C geÃ¶ffnete Datei %1$qs ist keine GNU-Fortran-ModuldateiDatei, um AbhÃ¤ngigkeitsinformationen auszugeben.Finalisierbarer Typ nicht zulÃ¤ssig fÃ¼r %qs in Ortsangabe %s bei %LDetaillierte Steuerung der Tuningfeatures.Erstes Argument der definierten Zuweisung bei %L muss INTENT(OUT) oder INTENT(INOUT) seinErstes Argument der Operatorschnittstelle bei %L kann nicht optional seinErstes Argument der Operatorschnittstelle bei %L muss INTENT(IN) seinErstes oder letztes intrinsisches Argument zu !$OMP ATOMIC muss bei %2$L %1$qs seinFix min_int calculationFeste ZeilenlÃ¤nge muss mindestens sieben seinSchalter %<-fmax-stack-var-size=%d%> Ã¼berschreibt %<-frecursive%> (ausgelÃ¶st durch %qs)Schalter %<-fno-automatic%> Ã¼berschreibt %<-fmax-stack-var-size=%d%>Schalter %<-fno-automatic%> Ã¼berschreibt %<-frecursive%>Schalter %<-fno-automatic%> Ã¼berschreibt %<-frecursive%> (ausgelÃ¶st durch %qs)Schalter %<-frecursive%> Ã¼berschreibt %<-fmax-stack-var-size=%d%>Aufrufe von einfachen inline-Funktionen zusammenfalten.Befehle, die Speicher-Offsets berechnen, wenn mÃ¶glich in die Speicherzugriffsbefehl einbetten.Renesas-(vormals Hitachi)/SuperH-Aufrufkonventionen folgen.Die C++17-Anforderungen fÃ¼r die Auswertungsreihenfolge von ZuweisungsausdrÃ¼cken, Bitverschiebungen, Elementfunktionsaufrufe, etc. befolgen.EABI-Bindeanforderungen befolgen.Bei !$OMP ATOMIC COMPARE muss der erste Operand des Vergleichs bei %L die Variable %qs sein, in die die Aktualisierungsanweisung bei %L schreibtBei den Optionen der Form Â»-f*-prefix-map=Â« die kanonischen Pfadnamen statt der angegebenen Zeichenketten vergleichen.For Schein-Prozedur %s in BIND(C) bei %C ist kein bindender Name erlaubtFÃ¼r Intrinsics-Bibliothek: alle Parameter in Registern Ã¼bergeben.FÃ¼r geschachtelte Funktionen auf dem Stapel werden AusfÃ¼hrrechte gesetzt.FÃ¼r bereichsbasierte %<adjust_args%> ist ein konstanter positiver skalarer ganzzahliger Ausdruck bei %L erforderlichFÃ¼r Bitschiebeoperationen mit konstanter Anzahl, die einen einzelnen Maschinenbefehl zur Verschiebung um eine Stelle erfordern, die maximale Anzahl von Inline-Verschiebeanweisungen (Maximalwert 64) festlegen, die ausgegeben werden sollen, anstatt die entsprechende Hilfsfunktion __mspabi zu verwenden. Der Standardwert ist 4.FÃ¼r Ziele, die normalerweise Trampoline fÃ¼r geschachtelte Funktionen benÃ¶tigen, diese stets generieren, statt Deskriptoren zu verwenden.Dem Assembler (und Linker) erlauben, jede beliebige Architektur-Untervariante ohne Fehler zu verwenden.FP-als-GP-Optimierung verbieten.Verbieten, dass mittels $fp auf statische oder globale Variablen zugegriffen wird. Diese Option verhindert die FP-als-GP-Optimierung, unabhÃ¤ngig von -mforce-fp-as-gp.Erzwingen, dass alle Aufrufe mittels des jli-Befehls erfolgen.Erzwingen, dass die Assembler-Ausgabe immer Hexadezimalkonstanten verwendet.Bitfeld-Zugriffe zwingen, zu ihrer Typbreite zu passen.Erzeugen von temporÃ¤ren Variablen erzwingen, um Code fÃ¼r selten ausgefÃ¼hrtes Â»forallÂ« zu testen.Ausschalten der Hardwareschleife erzwingen, selbst wenn -mext-dsp angegeben ist.Funktionen auf 4-Byte-Grenzen zwingen.Codeerzeugung von Stummeln fÃ¼r die Indirektion externer Symbole erzwingen.Indirekte Aufrufe und SprÃ¼nge mittels Register erzwingen.FP-als-GP-Optimierung erzwingen.Den fÃ¼r Â»wchar_tÂ« zugrundeliegenden Typen auf Â»unsigned shortÂ« zwingen.Verwendung der Delay-Slots fÃ¼r bedingte SprÃ¼nge erzwingen.Die Verwendung von SLP bei der Vektorisierung erzwingen; fehlschlagen, wenn dies nicht mÃ¶glich ist.Formatanweisung im Hauptblock des Modules bei %CFortran 2003: Spezifizierer %s in Anweisung %s bei %L hat Wert %qsFortran 2003: Zeichen fÃ¼r Argument %qs des intrinsischen %qs bei %LFortran 2003: DT-Format-Spezifizierer bei %C nicht erlaubtFortran 2003: Skalares effektives CHARACTER-Argument mit Feld-Scheinargument %qs bei %LFortran 2008: Veraltete Funktion:Fortran 2008: COMMON-Block %qs mit Binde-Marke bei %L teilt sich Bezeichner mit gobaler nicht-COMMON-BlockentitÃ¤t bei %LFortran 2008: Effektives Nicht-Zeiger-Argument bei %L an Scheinzeiger %qsFortran 2008: Nullzeiger bei %L an Nicht-Zeiger-Schein-%qsFortran 2008: Zeigerfunktionen in Variablen-Definitionskontext (%s) bei %LFortran 2008: Semikolon bei %C ohne vorausgehende AnweisungFortran 2018: gelÃ¶schtes Feature:Fortran 2018: Veraltetes Feature:Fortran 2018:Fortran 2023:Fortran 95 erfordert Standard INTEGER in %s-Marke bei %LKeine passende spezifische Bindung fÃ¼r Aufruf des GENERIC %qs bei %L gefundenFreie ZeilenlÃ¤nge muss mindestens drei seinFunktion %qs als Initialisierungsausdruck bei %LFunktion %qs bei %L kann nicht rekursiv aufgerufen werden, da sie nicht RECURSIVE istFunktion %qs bei %L darf keinen Initialisierer habenFunktion %qs bei %L hat keinen IMPLICIT-TypFunktion %qs bei %L hat keinen IMPLICIT-Typ; meinen Sie %qs?Funktion %qs bei %L ist INTRINSIC, aber nicht mit einer intrinsischen Funktion vertrÃ¤glichFunktion %qs bei %L muss PURE seinFunktion %qs in Initialisierungs-Ausdruck bei %L muss eine intrinsische Funktion seinFunktion %qs ist als CHARACTER(*) deklariert und kann nicht bei %L verwendet werden, da es kein Scheinargument istFunktion %qs erfordert eine Argumentliste bei %CFunktion Â»%sÂ« bei %L hat EintrÃ¤ge mit unpassenden FeldspezifikationenFunktion Â»%sÂ« bei %L hat Eintrag Â»%sÂ« mit unpassenden CharakteristikaFunktion Â»%sÂ« bei %L mit EintrÃ¤gen, die Variablen mit verschiedenen ZeichenkettenlÃ¤ngen zurÃ¼ckgebenDie UnterstÃ¼tzung von Â»Function Multi VersioningÂ« ist experimentell, und das Verhalten wird sich wahrscheinlich noch Ã¤ndernFunktion nicht gefunden.Funktionsergebnis %qs bei %L kann keine Initialisierung habenFunktionsergebnis %qs bei %L hat keinen IMPLICIT-TypFunktionsergebnis %qs bei %L ist als X-Argument fÃ¼r C_FUNLOC ungÃ¼ltigFunktionsergebnis %qs bei %L darf weder Koarray sein noch eine Koarray-Komponente habenFunktionsergebnis %qs ist als Prozedurziel in Zuweisung des Prozedurzeigers bei %L ungÃ¼ltigFunktionsergebnisvariable %qs bei %L von elementarer Funktion %qs darf nicht die Attribute ALLOCATABLE oder POINTER habenFunktionsanfÃ¤nge werden an dieser Potenz von 2 ausgerichtet.Funktionen, die Werte zurÃ¼ckgeben, mÃ¼ssen mit return-Anweisungen enden.Bestimmte Ganzzahloperationen verschmelzen, um die Performance auf power10 zu steigern.Bestimmte Ganzzahloperationen verschmelzen, um die Performance auf power8 zu steigern.GCC kann keine Operatoren mit Ganzzahl- und Festkommatypen unterstÃ¼tzen, die zusammen zu viele Ganzzahl- und Bruch-Bits habenGCC unterstÃ¼tzt derzeit kein simdclone mit simdlens %wd und %wd fÃ¼r diese Typen.GCC bietet derzeit keine UnterstÃ¼tzung fÃ¼r Parametertyp %qT fÃ¼r SIMD-FunktionenGCC bietet derzeit keine UnterstÃ¼tzung fÃ¼r RÃ¼ckgabetyp %qT fÃ¼r SIMD-FunktionenGCC unterstÃ¼tzt derzeit %<simdlen %wd%> fÃ¼r Typ %qT nichtGCC ist nicht dafÃ¼r konfiguriert, %qs als Argument fÃ¼r %<-foffload=%> zu unterstÃ¼tzenGCC muss mit %<--enable-newlib-nano-formatted-io%> konfiguriert werden, um %<-mtiny-printf%> zu verwendenGCC unterstÃ¼tzt nur %u geschachtelte GÃ¼ltigkeitsbereicheGCC-Vektor per Referenz Ã¼bergegeben: Nicht-Standard-ABI-Erweiterung ohne KompatibilitÃ¤tsgarantieGCC-Vektor per Referenz zurÃ¼ckgegeben: Nicht-Standard-ABI-Erweiterung ohne KompatibilitÃ¤tsgarantieGCC wurde ohne BibliotheksunterstÃ¼tzung fÃ¼r %<-march=%s%> gebaut; erwÃ¤gen Sie stattdessen die Kompilierung fÃ¼r die zugehÃ¶rige generische Architektur %<-march=%s%>GCC_OFFLOAD_OMP_REQUIRES_FILE ist nicht gesetztZu verwendende GCN-CPU-Art:GCSE ausgeschaltetGENERIC %qs bei %L kann nicht spezifische Bindung mit gleichem Namen Ã¼berschreibenGENERIC %qs bei %L muss auf spezifische Bindung abzielen, %qs ist ebenfalls GENERICGENERIC bei %C muss innerhalb eines CONTAINS eines abgeleiteten Typs seinGENERIC-Bindung bei %CGENERIC-Prozedur %qs ist bei %L nicht als effektives Argument erlaubtGMP Version %s, MPFR Version %s, MPC Version %s. isl Versiom %s
! GNU C unterstÃ¼tzt Â»-traditionalÂ« ohne Â»-EÂ« nicht mehrGNU-Erweiterung:GNU Objective C unterstÃ¼tzt keine traditionelle Ãœbersetzung mehrAttribut im GNU-Stil zwischen Label und Deklaration bezieht sich auf das LabelGOTO-Anweisung bei %L hinterlÃ¤sst CRITICAL-Konstrukt fÃ¼r Marke bei %LGOTO-Anweisung bei %L hinterlÃ¤sst DO CONCURRENT-Konstrukt fÃ¼r Marke bei %LSyntaxfehler hinter PARAMETERIZED-TYPE-Deklaration bei %CMMA-Befehle erzeugen (oder auch nicht).Code erzeugen (oder auch nicht), der den Befehl LXVKQ verwendet.Code erzeugen (oder auch nicht), der den Befehl XXSPLTIDP verwendet.Code erzeugen (oder auch nicht), der den Befehl XXSPLTIW verwendet.Speicheradressierung relativ zu PC (oder absolut) erzeugen.Optimierungen fÃ¼r Speicherzugriffe relative zu PC durchfÃ¼hren (nicht durchfÃ¼hren).Speicherzugriffsbefehle mit (oder ohne) PrÃ¤fix erzeugen.16-Bit-Befehle erzeugen.16-Bit-i386-Code erzeugen.32-Bit-Code erzeugen.32-Bit-Versatz in switch-Tabellen erzeugen.32-Bit-i386-Code erzeugen.32-Bit-x86-64-Code erzeugen.32x16-Multiplizier sowie Multiplizier+Addier-Befehle generieren.64-Bit-Code erzeugen.64-Bit-x86-64-Code erzeugen.APCS-konforme Stapelrahmen erzeugen.ARCompact-32-Bit-Code fÃ¼r ARC600-Prozessor erzeugen.ARCompact-32-Bit-Code fÃ¼r ARC601-Prozessor erzeugen.ARCompact-32-Bit-Code fÃ¼r ARC700-Prozessor erzeugen.Stubs im AT&T-Stil fÃ¼r Mach-O erzeugen.BTF-Debug-Informationen auf Standardniveau erzeugen.C-Header mit Plattform-spezifischen Merkmalen erzeugen.C-Prototypen aus BIND(C)-Deklarationen generieren.C-Prototypen aus Nicht-BIND(C)-Deklarationen fÃ¼r externe Prozeduren generieren.Informationen zu AbhÃ¤ngigkeiten von C++-Modulen erzeugen.FPU-Befehle mit doppelter Genauigkeit fÃ¼r C-SKY generieren (Vorgabe fÃ¼r Hardware-Gleitkomma).CTF-Debug-Informationen auf Standardniveau erzeugen.DFLOAT-Code mit doppelter Genauigkeit generieren.Erweiterungsbefehle fÃ¼r DSP generieren.DWARF-Abschnitte fÃ¼r Pubnames und Pubtypes mit GNU-Erweiterungen erzeugen.DWARF-Abschnitte fÃ¼r Pubnames und Pubtypes erzeugen.ELF-FDPIC-Code erzeugen.GFLOAT-Code mit doppelter Genauigkeit generieren.H8/300H-Code erzeugen.H8S-Code erzeugen.H8S/2600-Code erzeugen.H8SX-Code erzeugen.ILP32-Code erzeugen.FÃ¼r den ARMv8 angemessene IT-BlÃ¶cke erzeugen.JSON-Datei erzeugen.LP64-Code erzeugen.MIPS16-Code erzeugen.ModuleInfo-Struktur fÃ¼r Ausgabemodul generieren.PA1.0-Code erzeugen.PA1.1-Code erzeugen.PA2.0-Code erzeugen (erfordert binutils 2.10 oder neuer).SH1-Code erzeugen.SH2-Code erzeugen.FPU-freien SH2a-Code erzeugen.SH2e-Code erzeugen.SH3-Code erzeugen.SH3e-Code erzeugen.FPU-freien SH4-Code erzeugen.SH4-Code erzeugen.FPU-freien SH4-100-Code erzeugen.SH4-100-Code erzeugen.FPU-freien SH4-200-Code erzeugen.SH4-200-Code erzeugen.FPU-freien SH4-300-Code erzeugen.SH4-300-Code erzeugen.FPU-freien SH4a-Code erzeugen.SH4a-Code erzeugen.SH4al-dsp-Code erzeugen.SIMD-Klone fÃ¼r Funktionen mit OpenMP-Declare-Ziel-Direktive erzeugen.Beim Erzeugen von AltiVec-Code VRSAVE-Befehle erzeugen.Separaten Â»__mcount_locÂ«-Abschnitt erzeugen, der alle Aufrufe von Â»_mcountÂ« und Â»__fentry__Â« enthÃ¤lt.Separaten Â»__mcount_locÂ«-Abschnitt erzeugen, der alle Aufrufe von Â»mcountÂ« und Â»__fentry__Â« enthÃ¤lt.Eine auf das aktuelle Verzeichnis verweisende #line-Anweisung erzeugen.Ein Mach-O-Bundle erzeugen (Dateityp MH_BUNDLE).Einen __return_loc-Abschnitt generieren, der auf jeden instrumentierten return-Code verweist.Die Funktion Â»abortÂ« aufrufen, wenn eine Â»noreturnÂ«-Funktion zurÃ¼ckkehrt.Beim Compilieren eine Default-main-Funktion fÃ¼r D generieren.Einen einzigen Austrittspunkt fÃ¼r jede Funktion erzeugen.Absolute Quellpfade fÃ¼r gcov erzeugen.Code zum Ãœbergeben von Aggregaten mit maximal 64-Bit-Ausrichtung erzeugen.Alle notwendigen Informationen fÃ¼r Â»BPF Compile Once - Run EverywhereÂ« generieren.Ausgabedatei erzeugen, die Symbole nicht erst bei Bedarf, sondern bereits beim Laden bindet.NÃ¤herungsweise reziproke Division und Quadratwurzel fÃ¼r besseren Durchsatz erzeugen.Assemblerausgabe erzeugen, die mit Renesas AS100-Assembler vertrÃ¤glich ist. Dies schrÃ¤nkt einige CompilerfÃ¤higkeiten ein. Voreinstellung ist GAS-vertrÃ¤gliche Syntax.Auto-inc/dec-Befehle erzeugen.Big-Endian-Code erzeugen.Big-Endian-Code erzeugen.Big-Endian-eBPF erzeugen.Bit-Befehle erzeugen.Sprungbefehle als direkte SprÃ¼nge erzeugen.Falls nÃ¶tig, Â»callÂ«-Befehle als indirekte Aufrufe erzeugen.Sprungbefehle als indirekte SprÃ¼nge erzeugen.Aufrufbefehle als indirekte Registeraufrufe erzeugen.Im Funktionsprolog cld-Befehle erzeugen.Code fÃ¼r Laufzeitumgebung des C-SKY-Compilers statt libgcc generieren.Code fÃ¼r GNU as erzeugen.Code fÃ¼r GNU Assembler (gas) erzeugen.Code fÃ¼r GNU ld erzeugen.Code fÃ¼r die GNU-Laufzeitumgebung erzeugen.Code fÃ¼r die NeXT-(Apple macOS)-Laufzeitumgebung erzeugen.Code fÃ¼r OpenMP-Auslagerung erzeugen: schaltet Â»-msoft-stackÂ« und Â»-muniform-simtÂ« ein.Code fÃ¼r Serie SH4 340 erzeugen (ohne MMU/FPU).Code fÃ¼r Serie SH4 400 erzeugen (ohne MMU/FPU).Code fÃ¼r Serie SH4 500 erzeugen (ohne FPU)Code fÃ¼r Smart Mode erzeugen.Code fÃ¼r Thumb-Zustand erzeugen.Code fÃ¼r UNIX-Assembler erzeugen.Code fÃ¼r 32-Bit-ABI erzeugen.Code fÃ¼r einen 5206e erzeugen.Code fÃ¼r einen 520X erzeugen.Code fÃ¼r einen 528x erzeugen.Code fÃ¼r einen 5307 erzeugen.Code fÃ¼r einen 5407 erzeugen.Code fÃ¼r 64-Bit-ABI erzeugen.Code fÃ¼r 68000 erzeugen.Code fÃ¼r 68010 erzeugen.Code fÃ¼r 68020 erzeugen.Code fÃ¼r einen 68030 erzeugen.Code fÃ¼r einen 68040 ohne neue Befehle erzeugen.Code fÃ¼r einen 68040 erzeugen.Code fÃ¼r einen 68060 ohne neue Befehle erzeugen.Code fÃ¼r einen 68060 erzeugen.Code fÃ¼r einen 68302 erzeugen.Code fÃ¼r einen 68332 erzeugen.Code fÃ¼r einen 68851 erzeugen.Code fÃ¼r ColdFire v4e erzeugen.Code fÃ¼r DLL erzeugen.Code fÃ¼r Fido A erzeugen.Code fÃ¼r eine cpu32 erzeugen.Code fÃ¼r alle Template-Instanziierungen einschalten.Code fÃ¼r eine 11/10 erzeugen.Code fÃ¼r eine 11/40 erzeugen.Code fÃ¼r eine 11/45 erzeugen.Code fÃ¼r Assert-VertrÃ¤ge generieren.Code fÃ¼r Klassen-Invarianz-VertrÃ¤ge generieren.Code fÃ¼r ladbare Darwin-Kernelerweiterungen erzeugen.Code fÃ¼r Funktionen erzeugen, auch wenn sie vollstÃ¤ndig Â»inlineÂ« sind.Code fÃ¼r die angegebene CPU erzeugen.Code fÃ¼r altes ausfÃ¼hrbares BSS PLT erzeugen.Code fÃ¼r NachbedingungsvertrÃ¤ge erzeugen.Code fÃ¼r VorbedingungsvertrÃ¤ge generieren.Code fÃ¼r static-Funktionen erzeugen, auch wenn sie nie aufgerufen werden.Code fÃ¼r Switches ohne Default-Fall generieren.Code fÃ¼r die Android-Plattform erzeugen.Code fÃ¼r den M*Core M210 erzeugen.Code fÃ¼r den M*Core M340 erzeugen.Code fÃ¼r ladbare Darwin-Kernelerweiterungen oder Kernel erzeugen.Code fÃ¼r Supervisor-Modus generieren (Standard).Code fÃ¼r User-Modus generieren.Code im 32-Bit-ARM-Zustand erzeugen.Code im Â»Big EndianÂ«-Modus erzeugen.Code im Â»Big EndianÂ«-Modus erzeugen.Code im Â»Little EndianÂ«-Modus erzeugen.Code im Â»Little EndianÂ«-Modus erzeugen.Code fÃ¼r ausfÃ¼hrbare Dateien (NICHT Shared Libraries) erzeugen.FÃ¼r schnelles Debugging geeigneten Code erzeugen.Code erzeugen, der in dynamischen Objekten im SVR4-Stil verwendet werden kann.Code erzeugen, der lokalen Zustand in allen Bahnen einheitlich halten kann.Code erzeugen, der zum Intel-MCU-psABI passt.Code erzeugen, der zum angegebenen ABI passt.Code erzeugen, der zum angegebenen ABI passt.Code erzeugen, der sicher mit MIPS16- und microMIPS-Code gebunden werden kann.Code erzeugen, der 68881-Gleitkommabefehle verwendet.Code erzeugen, der im privilegierten Zustand lÃ¤uft.Code erzeugen, der nicht mit anderen ID-shared Libraries gelinkt werden wÃ¼rde, aber als Shared Library verwendet werden kann.Code zur ÃœberprÃ¼fung der Grenzen vor Arrayindizierung erzeugen.Code zur ÃœberprÃ¼fung von Exception-Spezifikationen erzeugen.Code generieren, der Gerade-Linie-Spekulationen abwehrt.Code generieren, um mitzuverfolgen, wann die CPU falsch spekulieren kÃ¶nnte.Code erzeugen, der nicht ausfÃ¼hrbares PLT und GOT enthÃ¤lt.Code mittels globaler Anker-Symboladressen generieren.Code erzeugen, der Hardware-Gleitkommabefehle verwendet.Code erzeugen, der nur die allgemeinen Register verwendet.Code erzeugen, der nur die Kernregister (r0â€“r14) verwendet.Code mit Bibliotheksaufrufen fÃ¼r Gleitkommaarithmetik erzeugen.Code mit unausgerichtetem load/store fÃ¼r R6 generieren (Alias von -mno-strict-align).Code ohne Register fÃ¼r globalen Zeiger erzeugen.CFString-Objekte zum Kompilierungszeitpunkt generieren.Komprimierte Fehlersuchinformationen erzeugen.Verwendung bedingter Kopierbefehle einschalten.Konstantenpools im Compiler statt im Assembler generieren.cpp-Defines fÃ¼r Server-IO erzeugen.cpp-Defines fÃ¼r Workstation-IO erzeugen.Fehlersuchinformationen im CodeView-Format erzeugen.Fehlersuchinformationen im DWARF-v2-Format (oder neuer) erzeugen.Fehlersuchinformationen im VMS-Format erzeugen.Fehlersuchinformationen im erweiterten Standardformat erzeugen.Fehlersuchinformationen im Standardformat erzeugen.Fehlersuchinformationen im Standardversion des DWARF-Formats erzeugen.Fehlersuchinformationen in separaten .dwo-Dateien erzeugen.Standard SH2a-FPU-Code mit doppelter Genauigkeit erzeugen.Standard SH2a-FPU-Code mit einfacher Genauigkeit erzeugen.Standard SH4-Code mit einfacher Genauigkeit erzeugen.Standard SH4-100-Code mit einfacher Genauigkeit erzeugen.Standard SH4-200-Code mit einfacher Genauigkeit erzeugen.Standard SH4-300-Code mit einfacher Genauigkeit erzeugen.Standard SH4a-Code mit einfacher Genauigkeit erzeugen.Nicht zusammenhÃ¤ngende Stapelrahmen erzeugen.Divisions-Befehle erzeugen.Divisionsergebnisse mit dem gleichen Vorzeichen im Ãœbertrag wie der Divisor (nicht der Dividend) erzeugen.Dokumentation erzeugen.Gleitkommabefehle doppelter Genauigkeit generieren.Erweiterte arithmetische Befehle erzeugen, nur fÃ¼r ARC700 gÃ¼ltig.Erweiterte Informationen fÃ¼r Einsprungpunkt fÃ¼r inline-Funktionen erzeugen.Schnelle indirekte Aufrufe erzeugen.Gleitkommaarithmetik mit gegebenem Befehlssatz erzeugen.Kombinierte Multiplizier-Addier-Befehle generieren.Die Befehle frecipd/fsqrtd/fdivd generieren (Vorgabe fÃ¼r Hardware-Gleitkomma).Hardware-abs-Befehle generieren.Eingebettete Gleitkommadivision erzeugen, auf Wartezeit optimieren.Eingebettete Gleitkommadivision erzeugen, auf Durchsatz optimieren.Eingebettete Ganzzahldivision erzeugen, auf Wartezeit optimieren.Eingebettete Ganzzahldivision erzeugen, auf Durchsatz optimieren.Quadratwurzel Â»inlineÂ« erzeugen, auf Wartezeit optimieren.Quadratwurzel Â»inlineÂ« erzeugen, auf Durchsatz optimieren.Befehle generieren, die vom Barrel-Shifter unterstÃ¼tzt werden.isel-Befehle erzeugen.Lockeres Nachschlagen von Klassen (mit objc_getClass()) fÃ¼r Verwendung im Null-VerknÃ¼pfungs-Modus erzeugen.Bibliotheksaufrufe fÃ¼r atomare Lade- und Speicherbefehle generieren, wenn synchronisierte Bibliotheksaufrufe ausgeschaltet sind.Little-Endian-Code erzeugen.Little-Endian-Code erzeugen.Little-Endian-eBPF erzeugen.Befehle zum gleichzeitigen Laden/Speichern mehrerer Daten erzeugen.Befehle fÃ¼r Laden/Speichern mit Aktualisierung erzeugen.Atomare Operationen durch Hilfsfunktionen implementieren.Make-AbhÃ¤ngigkeiten erzeugen und Code Ã¼bersetzen.Make-AbhÃ¤ngigkeiten erzeugen.Aufrufe von Â»mcountÂ«/Â»__fentry__Â« als NOPs erzeugen. Um sie einzuschalten, mÃ¼ssen sie hineingepatcht werden.Millicode-Schnipsel erzeugen.mul64- und mulu64-Befehle erzeugen.norm-Befehl erzeugen.Code im normalen Modus erzeugen.SH2a-FPU-Code nur mit einfacher Genauigkeit erzeugen.SH4-Code nur mit einfacher Genauigkeit erzeugen.SH4-100-Code nur mit einfacher Genauigkeit erzeugen.SH4-200-Code nur mit einfacher Genauigkeit erzeugen.SH4-300-Code nur mit einfacher Genauigkeit erzeugen.SH4a-Code nur mit einfacher Genauigkeit erzeugen.PC-relativen Code erzeugen.Erweiterungsbefehle fÃ¼r Performance einschalten.Erweiterungsbefehle fÃ¼r Performance Version 2 einschalten.Unechte Ziele fÃ¼r alle Header erzeugen.Wenn mÃ¶glich, lageunabhÃ¤ngigen Code fÃ¼r ausfÃ¼hrbare Dateien erzeugen (large mode).Wenn mÃ¶glich, positionsunabhÃ¤ngigen Code fÃ¼r ausfÃ¼hrbare Dateien erzeugen (small mode).Wenn mÃ¶glich, lageunabhÃ¤ngigen Code erzeugen (large mode).Wenn mÃ¶glich, positionsunabhÃ¤ngigen Code erzeugen (small mode).Wenn verfÃ¼gbar, Prefetch-Befehle fÃ¼r Arrays in Schleifen erzeugen.Bereinigtes BTF bei der Ausgabe von BTF-Informationen erzeugen.Befehle push/pop generieren (Standard).WiedereinsprungsfÃ¤higen PIC-Code erzeugen.Reziproke statt divss und sqrtss erzeugen.return-Befehl in nackter Funktion generieren.Informationen zur Typbeschreibung zur Laufzeit erzeugen.SData-Referenzen erzeugen. Dies ist die Voreinstellung, auÃŸer wenn PIC erzeugt wird.Abschnitte .s390_indirect_jump, .s390_indirect_call, .s390_return_reg, und .s390_return_mem erzeugen, in denen die Adressen fÃ¼r indirekte Sprungziele gespeichert werden, die aufgrund der Optionen -mindirect-branch* oder -mfunction-return* gepatcht wurden. Die Abschnitte bestehen aus einem Array von 32-Bit-Elementen. Jedes Element enthÃ¤lt den Offset vom Eintrag zu der gepatchten Adresse.Selbstverschiebbaren Code erzeugen.sin, cos und sqrt fÃ¼r FPU erzeugen.Gleitkommabefehle einfacher Genauigkeit generieren.Reziproke Division und Quadratwurzel in Software fÃ¼r besseren Durchsatz erzeugen.Wenn nÃ¶tig, spezielle Objective-C-Methoden zur Initialisierung/ZerstÃ¶rung von nicht-POD C++ ivars, erzeugen.stm/ldm-Befehle erzeugen (Vorgabe).Erweiterungsbefehle fÃ¼r Zeichenketten einschalten.swap-Befehl erzeugen.Ganzzahl-Modulo-Befehle erzeugen.Atomare Quadword-Befehle zum Speicherzugriff verwenden (lqarx/stqcx).Befehle zum Laden/Speichern von Quadwords (lq/stq) erzeugen.Unausgerichtete VSX-Lade/Speicher-Befehle fÃ¼r Inline-Expansion von memcpy/memmove generieren.Unausgerichtete VSX-Lade/Speicher-Befehle fÃ¼r Vektorpaare fÃ¼r Inline-Expansion von memcpy/memmove generieren.Abwicklungstabellen erzeugen, die genau an jeder Befehlsgrenze liegen.Befehle push25/pop25 fÃ¼r v3 erzeugen.Â»vzeroupperÂ«-Befehl erzeugen, bevor der Ablauf die Funktion verlÃ¤sst.xBPF erzeugen.Die erzeugte Schleife des UNROLL-Konstrukts bei %L ohne PARTIAL-Klausel hat keine kanonische FormGenerische Funktion %qs bei %L ist nicht mit spezifischer intrinsischer Schnittstelle vereinbarAllgemeiner Name %qs der Funktion %qs bei %L ist der gleiche wie der des abgeleiteten Typs bei %LGenerisches Unterprogramm %qs bei %L ist nicht mit intrinsischer Unterprogrammschnittstelle vereinbarSprÃ¼ngen ihre Standardkosten zuweisen.Externen Symbolen einen fÃ¼hrenden Unterstrich geben.Globaler Bindungs-Name %qs bei %L wird bereits als ein %s bei %L verwendetGlobaler Bindungs-Name %qs bei %L wird bereits bei %L verwendetGlobal deklarative %s fÃ¼r %sGlobale EntitÃ¤t %qs bei %L darf nicht in einem COMMON-Block vorkommenGlobale EntitÃ¤t %qs bei %L kann nicht in einem COMMON-Block bei %L vorkommenGlobaler Name %qs bei %L wird bereits als ein %s bei %L verwendetGlobaler Name %qs bei %L wird bereits bei %L verwendetunbekanntes Attribut %<target("%s")%>Graphite-Schleifenoptimierungen kÃ¶nnen nicht verwendet werden (ISL ist nicht verfÃ¼gbar) (%<-fgraphite%>, %<-fgraphite-identity%>, %<-floop-nest-optimize%>, %<-floop-parallelize-all%>)Graphite-Schleifenoptimierungen kÃ¶nnen nicht verwendet werden (ISL ist nicht verfÃ¼gbar).Linker anweisen, Befehle zu lockern.HOLDS-Ausdruck bei %L muss ein skalarer logischer Ausdruck seinOpenMP-Allokatoren fÃ¼r Allozierbare und Zeiger handhaben.Bibliotheksfunktionen aufrufen, wenn atomare eingebaute Operationen auf unausgerichteten Speicher angewendet werden kÃ¶nnen. Hebt -mtrap-unaligned-atomic auf.Bedingte Zweigen hÃ¤rten, indem die entgegengesetzten Bedingungen geprÃ¼ft werden.Bedingungen, die nicht in den Zweigen verwendet werden, hÃ¤rten, indem die entgegengesetzten Bedingungen geprÃ¼ft werden.Kontrollfluss hÃ¤rten, indem AusfÃ¼hrungspfade aufgezeichnet und geprÃ¼ft werden.Hardware-Autoprefetcher-Scheduler-Modellsteuerung: Anzahl der Vorausschauzyklen, die das Modell untersucht, bei '0' ist nur die heuristische Sortierung von Befehlen aktiviert. StandardmÃ¤ÃŸig deaktiviert.Hexadezimalkonstante bei %L verwendet Nicht-Standard X statt ZHollerithkonstante bei %CMit Host verbundene Variable %qs darf nicht in DATA-Anweisung bei %C stehenWie viel die gegebene Ãœbersetzungseinheit durch das Â»inlineÂ« wachsen kann (in Prozent).Wie viel die gegebene Ãœbersetzungseinheit durch die interprozedurale Konstantenweitergabe wachsen kann (in Prozent).Interner Fehler: I don't know how to MOVE an alphabetical string to %s(%s) 
! E/A-Registeroperand fÃ¼r Â»%%%cÂ«IBITS: Bad bitICE: %<emit_insn%> verwendet, wo %<emit_jump_insn%> erforderlich:ID der zu bauenden Shared Library.gemeinsam genutzte ID-Bibliotheken und FD-PIC-Modus kÃ¶nnen nicht zusammen verwendet werdenIEEE_ARITHMETIC-Modul bei %CIEEE_EXCEPTIONS-Modul bei %CIEEE_FEATURES-Modul bei %CIF-Klausel bei %L erfordert einen skalaren LOGICAL-AusdruckIF-Klausel-Modifizierer Â»%sÂ« bei %L ist dem aktuellen OpenMP-Konstrukt nicht angemessenIF-Klausel ohne Modifizierer bei %L wird zusammen mit IF-Klauseln mit Modifizierert verwendetILP32E ABI unterstÃ¼tzt die %qc-Erweiterung nichtIM-part_ref bei %CÂ»IMPLICIT NONE (type)Â«-Anweisung bei %L folgt einer IMPLICIT-AnweisungIMPLICIT NONE mit Angabenliste bei %CIMPLICIT-Anweisung bei %C folgt auf IMPLICIT NONE (Typ-)AnweisungIMPORT-Anweisung bei %CIMPORT-Anweisung bei %C ist nur in einem INTERFACE-KÃ¶rper erlaubtIMPURE-Prozedur bei %CINDIRECT-Klausel bei %C erfordert einen konstanten logischen AusdruckINQUIRE-Anweisung bei %L kann nicht sowohl FILE- als auch UNIT-Spezifikationssymbole enthaltenINQUIRE-Anweisung bei %L erfordert PENDING= mit Spezifizierung ID=INQUIRE-Anweisung bei %L erfordert entweder FILE- oder UNIT-SpezifikationssymbolINQUIRE-Anweisung in PURE-Prozedur bei %C nicht erlaubtINTEGER-Ausdruck von %s-Klausel bei %L darf nicht negativ seinINTEGER-Ausdruck von %s-Klausel bei %L muss positiv seinINTEGER-Ausdruck der Â»chunk_sizeÂ« der SCHEDULE-Klausel bei %L muss positiv seinINTEGER(KIND=8) ist nicht verfÃ¼gbar fÃ¼r Option %<-fdefault-integer-8%>INTEGER(KIND=8) ist nicht verfÃ¼gbar fÃ¼r Option %<-finteger-4-integer-8%>INTENT(%s) steht mit INTENT(%s) bei %L in KonfliktINTENT ist in BLOCK bei %C nicht erlaubtEffektives Argument von INTENT(%s) bei %L kÃ¶nnte effektives Argument bei %L stÃ¶ren.INTENT(IN) POINTER %qs in Klausel %s bei %LINTENT(IN)-Zeiger %qs in COPYPRIVATE-Klausel bei %LArgument %1$qs bei %3$L fÃ¼r die reine Prozedur %2$qs ist INTENT(OUT) und darf daher nicht polymorph seinINTERFACE-Prozedur %qs bei %L hat denselben Namen wie die umgebende ProzedurIO UNIT in %s-Anweisung bei %L muss eine interne Datei in einer PURE-Prozedur seinIOLENGTH-Markierung in INQUIRE-Anweisung bei %C ungÃ¼ltigIOMSG-Markierung bei %LIPA-modref-Zusammenfassung fehlt in EingabedateiIPA-SRA-Zugriffs-Verifikation fehlgeschlagenISA %qs wird von Attribut %<target%> nicht unterstÃ¼tzt, verwenden Sie den Aufruf %<arch=%>ISO-C erlaubt kein %<%E (Ausdruck)%>ISO-C erlaubt kein zusÃ¤tzliches %<;%> auÃŸerhalb einer FunktionISO-C erlaubt kein auf Funktionstypen angewendetes %<_Alignof%>ISO C unterstÃ¼tzt nicht %<#pragma STDC FLOAT_CONST_DECIMAL64%>ISO-C unterstÃ¼tzt %<%s_BitInt(%d)%> erst ab C23ISO-C unterstÃ¼tzt %<++%> und %<--%> fÃ¼r komplexe Typen erst ab C2YISO-C unterstÃ¼tzt %<[[]]%>-Attribute erst ab C23ISO-C unterstÃ¼tzt %<_Generic%>-Zuordnung mit Funktionstyp erst ab C2YISO-C unterstÃ¼tzt %<_Generic%>-Zuordnung mit unvollstÃ¤ndigem Typ erst ab C2YISO-C unterstÃ¼tzt die Typen %<__int%d%> nichtISO C unterstÃ¼tzt %<auto%>-Typinferenz erst ab C23ISO-C unterstÃ¼tzt nicht %<~%> fÃ¼r komplexe KonjugationISO-C unterstÃ¼tzt %qs erst ab C23ISO-C unterstÃ¼tzt den vordefinierten Bezeichner %qs nichtISO C unterstÃ¼tzt eine %qs-Anweisung mit einem Bezeichner als Operanden erst ab C2YISO-C unterstÃ¼tzt keine komplexen GanzzahltypenISO-C unterstÃ¼tzt dezimale Gleitkommazahlen erst ab C23ISO-C unterstÃ¼tzt keine GanzzahltypenISO-C unterstÃ¼tzt if-Deklarationen erst ab C2YISO-C unterstÃ¼tzt das Weglassen von Parameternamen in Funktionsdefinitionen erst ab C23ISO-C unterstÃ¼tzt nicht %<double complex%> bedeutendes einfaches %<complex%>ISO-C unterstÃ¼tzt BereichsausdrÃ¼cke in Â»switchÂ«-Anweisungen erst ab C2YISO-C unterstÃ¼tzt keine sÃ¤ttigenden TypenISO C unterstÃ¼tzt die Angabe eines Basistyps fÃ¼r %<enum%> erst ab C23ISO-C unterstÃ¼tzt den Typen %<_Float%d%s%> erst ab C23ISO-C unterstÃ¼tzt einen Typnamen als steuernden Operanden von %<_Generic%> erst ab C2YISO-C verbietet %<goto *expr;%>ISO-C verbietet %<return%> mit Ausdruck, in void zurÃ¼ckgebender FunktionISO-C verbietet eine leere QuelldateiISO-C verbietet Zuweisung zwischen Funktionszeiger und %<void *%>ISO-C verbietet geklammerte Gruppen innerhalb von AusdrÃ¼ckenISO-C verbietet Typkonvertierung von Nicht-Skalar auf selben TypenISO-C verbietet Typkonvertierung auf union-TypISO-C verbietet Vergleich von %<void *%> mit FunktionszeigerISO-C verbietet bedingten Ausdruck zwischen %<void *%> und FunktionszeigerISO-C verbietet bedingten Ausdruck mit nur einer void-SeiteISO-C verbietet const- oder volatile-FunktionstypenISO-C verbietet Konvertierung von Funktionszeigern in ObjektzeigertypISO-C verbietet Konvertierung von Objektzeigertypen in FunktionszeigertypISO-C unterstÃ¼tzt leere Initialisierungsklammern erst ab C23ISO-C verbietet VorwÃ¤rtsdeklaration fÃ¼r ParameterISO-C verbietet VorwÃ¤rts-Referenzen auf %<enum%>-TypenISO-C verbietet Initialisierung zwischen Funktionszeiger und %<void *%>ISO-C verbietet MarkendeklarationenISO-C verbietet Elementdeklarationen ohne ElementeISO-C verbietet verschachtelte FunktionenISO-C verbietet das Weglassen des mittleren Terms eines %<?:%>-AusdruckesISO-C verbietet geordnete Vergleiche zwischen Zeigern auf FunktionenISO-C verbietet Ãœbergabe des Arguments %d von %qE zwischen Funktionszeiger und %<void *%>ISO-C verbietet qualifizierte FunktionstypenISO-C verbietet return zwischen Funktionszeiger und %<void *%>ISO-C verbietet die Angabe eines zu initialisierenden ElementebereichesISO-C erlaubt Speicherklassenangaben in zusammengesetzten Literalen erst ab C23ISO-C verbietet, ein %<register%>-Array zu indizierenISO-C verbietet Array der GrÃ¶ÃŸe nullISO-C verbietet Array %qE der GrÃ¶ÃŸe nullISO-C verbietet Argumentkonvertierung in union-TypISO-C erfordert ein benanntes Argument vor %<...%>, vor C23ISO C vor C23 beschrÃ¤nkt AufzÃ¤hlungswerte auf den Bereich von %<int%>Attribut %qE aus ISO C++ ist nicht auf Funktionen anwendbar; wird als %<[[gnu::%E]]%> behandeltISO-C++ 1998 unterstÃ¼tzt nicht %<long long%>ISO-C++ 1998 verbietet die Verwendung von %<extern%> bei expliziten InstanziierungenISO C++ erlaubt Bitfeld-Attribute nur vor dem %<:%>-TokenISO C++ unterstÃ¼tzt keine Operatortemplates in Zeichenkettenliteralen, die eine Argumentpackung von Zeichen bekommenin ISO-C++ darf der mittlere Operand von %<?:%> nicht weggelassen werdenISO-C++ erlaubt kein %<alignof%> mit einem Nicht-TypISO-C++ erlaubt keine benannten Initialisierungen von C99ISO-C++ erlaubt keine benannten Initialisierungen (GNU)ISO C++ erlaubt keine Konvertierung in %qH von %qI mit grÃ¶ÃŸerem KonvertierungsrangISO C++ erlaubt keine Konvertierung in %qH aus %qI mit ungeordnetem KonvertierungsrangISO-C++ erlaubt nicht, %<%T::%D%> als %<%T::%D%> zu definierenISO-C++ erlaubt kein auf Funktionstypen angewendetes %<alignof%>ISO-C++ unterstÃ¼tzt %<__int%d%> fÃ¼r %qs nichtISO-C++ unterstÃ¼tzt nicht, dass einfaches %<complex%> %<double complex%> bedeutetISO-C++ verbietet Anwendung von %<__alignof%> auf einen Ausdruck mit FunktionstypISO-C++ verbietet Anwendung von %<sizeof%> auf einen Ausdruck mit FunktionstypISO-C++ verbietet Gruppen in geschweiften Klammern innerhalb von AusdrÃ¼ckenISO-C++ verbietet den Aufruf von %<::main%> vom Programm ausISO-C++ verbietet Umwandlung in Arraytyp %qTISO-C++ verbietet Vergleich zwischen Zeiger und GanzzahlISO-C++ verbietet Vergleich zwischen Zeiger des Typs %<void *%> und Zeiger auf FunktionISO-C++ verbietet zusammengesetzte LiteraleISO-C++ verbietet berechnete GotosISO-C++ verbietet Bedingungsausdruck mit Zeiger des Typs %<void *%> und Zeiger auf FunktionISO-C++ verbietet Umwandlung zwischen Zeiger des Typs %<void *%> und Zeiger auf FunktionISO C++ verbietet, eine Zeichenkettenkonstante in %qT zu konvertierenISO-C++ verbietet Deklaration von %qs ohne TypISO-C++ verbietet Verringern eines Zeigers vom Typ %qTISO-C++ verbietet verringern einer AufzÃ¤hlungISO-C++ verbietet leere unbenannte AufzÃ¤hlungISO-C++ verbietet flexibles Arrayelement %qsISO-C++ verbietet flexible ArrayelementeISO-C++ verbietet Initialisierung des nicht konstanten statischen Elements %qD in der KlasseISO-C++ verbietet ErhÃ¶hen eines Zeigers vom Typ %qTISO-C++ verbietet erhÃ¶hen einer AufzÃ¤hlungISO-C++ verbietet Initialisierung der Elementkonstante %qD vom nicht eingebauten Typen %qTISO-C++ verbietet geschachtelten Typen %qD mit gleichem Namen wie umschlieÃŸende KlasseISO-C++ verbietet das Auslassen des mittleren Terms eines %<?:%>-AusdrucksISO-C++ verbietet das Ermitteln der Adresse der Funktion %<::main%>ISO-C++ verbietet es, die Adresse einer gebundenen Memberfunktion zu nehmen, um einen Zeiger auf eine explizite Objekt-Memberfunktion zu bildenISO-C++ verbietet das Ermitteln der Adresse einer gebundenen Elementfunktion, um einen Zeiger auf Elementfunktion zu erzeugen. Stattdessen %<&%T::%D%> verwendenISO-C++ verbietet das Ermitteln der Adresse einer nicht qualifizierten oder geklammerten nicht-statischen Memberfunktion, um einen Zeiger auf eine explizite Memberfunktion zu erzeugenISO-C++ verbietet das Ermitteln der Adresse einer nicht qualifizierten oder geklammerten nicht-statischen Elementfunktion, um einen Zeiger auf Elementfunktion zu erzeugen.ISO-C++ verbietet das Ermitteln der Adresse einer nicht qualifizierten oder geklammerten nicht-statischen Elementfunktion, um einen Zeiger auf Elementfunktion zu erzeugen. Stattdessen %<&%T::%D%> verwendenISO-C++ verbietet die Verwendung von %qE bei expliziten InstanziierungenISO-C++ verbietet typename-SchlÃ¼ssel in Template-Template-Parameter; verwenden Sie %<-std=c++17%> oder %<-std=gnu++17%>ISO-C++ verbietet Gleitkommaliterale in Konstanten-AusdrÃ¼ckenISO-C++ verbietet die Verwendung eines Zeigers des Typs %<void *%> in SubtraktionISO-C++ verbietet die Verwendung eines Zeigers auf eine Funktion in SubtraktionISO-C++ verbietet die Verwendung eines Zeigers auf Methode in SubtraktionISO-C++ verbietet Array variabler LÃ¤ngeISO-C++ verbietet Array %qD variabler LÃ¤ngeISO-C++ verbietet Array der GrÃ¶ÃŸe nullISO-C++ verbietet Array %qD der GrÃ¶ÃŸe nullISO-C++ verbietet anonyme structsISO-C++ verbietet Ãœberladen von %<operator ?:%>ISO C++ besagt, dass diese mehrdeutig sind, auch wenn die schlechteste Umwandlung fÃ¼r das erste besser ist als die schlechteste Umwandlung fÃ¼r das zweite:ISO-C++17 erlaubt Speicherklassenangabe %<register%> nichtISO C++17 erlaubt keine dynamischen Ausnahmespezifikationendas Weglassen der Zeichenkette in %qE wird von ISO C11 nicht unterstÃ¼tztISO-C23 erlaubt keine Argumente fÃ¼r die Funktion %qE, die ohne Parameter deklariert istISO-C23 erlaubt keine Argumente fÃ¼r die Methode %qE, die ohne Parameter deklariert istISO C23 erlaubt es nicht, Parameter fÃ¼r die Funktion %qE zu definieren, die ohne Parameter deklariert istISO-C90 unterstÃ¼tzt %<[*]%>-Arraydeklaratoren nichtISO-C90 unterstÃ¼tzt nicht %<_Generic%>ISO-C90 unterstÃ¼tzt nicht %<_Noreturn%>ISO-C90 unterstÃ¼tzt den vordefinierten Bezeichner %<__func__%> nichtDeklarationen im Initialisierungsteil einer %<for%>-Schleife werden von ISO C90 nicht unterstÃ¼tzt; ab ISO C99 geht esISO-C90 unterstÃ¼tzt nicht %<long long%>ISO-C90 unterstÃ¼tzt kein %<static%> oder Typkennzeichner in ParameterarraydeklaratorenISO-C90 unterstÃ¼tzt nicht %qEISO-C90 unterstÃ¼tzt keine booleschen TypenISO-C90 unterstÃ¼tzt keine komplexen TypenISO-C90 unterstÃ¼tzt keine flexiblen Arrays als ElementeISO-C90 unterstÃ¼tzt den %<_Atomic%>-Qualifizierer nichtISO-C90 unterstÃ¼tzt keine namenlosen structs/unionsISO-C90 verbietet Array %qE, dessen GrÃ¶ÃŸe nicht ausgewertet werden kannISO-C90 verbietet Array, dessen GrÃ¶ÃŸe nicht ausgewertet werden kannISO-C90 verbietet zusammengesetzte LiteraleISO-C90 verbietet gemischte Deklarationen und CodeISO-C90 verbietet die Angabe von zu initialisierenden UnterobjektenISO-C90 verbietet, ein Nicht-L-Wert-Array zu indizierenISO-C90 verbietet Array variabler GrÃ¶ÃŸeISO-C90 verbietet Array %qE variabler GrÃ¶ÃŸeISO-C99 unterstÃ¼tzt nicht %<_Generic%>ISO-C99 unterstÃ¼tzt nicht %<_Noreturn%>ISO-C99 unterstÃ¼tzt nicht %qEISO-C99 unterstÃ¼tzt den %<_Atomic%>-Qualifizierer nichtISO-C99 unterstÃ¼tzt keine namenlosen structs/unionsModul ISO_C_BINDING bei %CIntrinsisches Modul ISO_FORTRAN_ENV bei %CITERATOR bei %C kann nicht mit SINK kombiniert werdenITERATOR bei %C kann nicht mit SOURCE kombiniert werdenWenn Â»-ftree-vectorizeÂ« verwendet wird, die minimale Schleifengrenze einer fÃ¼r Vektorisierung zu betrachtenden Schleife.Wenn Â»-fvariable-expansion-in-unrollerÂ« verwendet wird, die HÃ¶chstzahl der FÃ¤lle, dass eine einzelne Variable wÃ¤hrend Loop-Unrolling expandiert wird.Wenn die Neuzuordnung von Grenzen bei %L angegeben wird, darf das Zeigerziel nicht NULL seinWenn das erste Argument von ATAN2 bei %L 0 ist, dann darf das zweite Argument nicht 0 seinWenn das erste Argument von ATAN2 bei %L 0 ist, dann darf das zweite Argument nicht 0 seinWenn die Anzahl der Kandidaten in der Menge kleiner ist, wird immer versucht, ungenutzte IVs wÃ¤hrend ihrer Optimierung zu entfernen.Wenn Planung nach dem Neuladen, dann Superblock-Planung.Â»DÂ« in Spalte eins in statischer Form ignorieren.Attribut dllimport fÃ¼r Funktionen ignorieren.Den normalen zweistufigen Namensraum ignorieren; Symbole in der Reihenfolge der Befehlszeile auflÃ¶sen und nicht aufzeichnen, welche Bibliothek das aufgelÃ¶ste Symbol bereitgestellt hat.Nicht unterstÃ¼tzte Pragmas ignorieren.Tut nichts, ist aber fÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤t beibehalten.Tut nichts. FÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤t erhalten.  Nur die 64-Bit-ABI wird unterstÃ¼tzt.Ignoriert.Herstellererweiterungsmarkierung Â»!$omxÂ« bei %C wird ignoriertUnzulÃ¤ssiges ALLOCATE-Objekt bei %C fÃ¼r eine PURE-ProzedurUnzulÃ¤ssige Zuweisung an externe Prozedur bei %LUnzulÃ¤ssiges Zeichen in BOZ-Konstante bei %CUngÃ¼ltiger Index fÃ¼r KofeldIllegal id in copy_walk_reduction_argUngÃ¼ltige PrÃ¤prozessordirektiveUngÃ¼ltiger Referenztyp bei %L als EQUIVALENCE-ObjektUnzulÃ¤ssiger Schritt von Null bei %LUnzulÃ¤ssiger Typ in Zeichenverkettung bei %LAnweisung %s zur Image-Steuerung bei %C in CRITICAL-BlockAnweisung %s zur Image-Steuerung bei %C in DO CONCURRENT-BlockAnweisung %s zur Image-Steuerung bei %C in PURE-ProzedurCRITICAL-Anweisung zur Image-Steuerung bei %C in DO CONCURRENT-BlockCRITICAL-Anweisung zur Image-Steuerung bei %C in PURE-ProzedurAnweisung Â»EVENT %sÂ« zur Image-Steuerung bei %C in CRITICAL-BlockAnweisung Â»EVENT %sÂ« zur Image-Steuerung bei %C in DO CONCURRENT-BlockAnweisung Â»EVENT %sÂ« zur Image-Steuerung bei %C in PURE-ProzedurRETURN-Anweisung zur Image-Steuerung bei %C in CRITICAL-BlockPRINT-Anweisung zur Image-Steuerung bei %C in DO CONCURRENT-BlockSTOP-Anweisung zur Image-Steuerung bei %C in CRITICAL-BlockSTOP-Anweisung zur Image-Steuerung bei %C in DO CONCURRENT-BlockSYNC-Anweisung zur Image-Steuerung bei %C in CRITICAL-BlockSYNC-Anweisung zur Image-Steuerung bei %C in DO CONCURRENT-BlockSYNC-Anweisung zur Image-Steuerung bei %C in PURE-ProzedurArgument fÃ¼r Imageset bei %L muss Skalar oder Rang-1-INTEGER-Ausdruck seinArgument fÃ¼r Imageset bei %L muss zwischen 1 und num_images() liegenUnvollkommen geschachtelte Schleife bei Verwendung von generierten SchleifenÂ»inÂ«-VertrÃ¤ge von Ã¼berschriebenen Methoden als Obermenge des Ã¼bergeordneten Vertrags umsetzen.Â»inÂ«-Parameter als Â»scope constÂ« umsetzen.C++17-Semantik fÃ¼r erbende Konstruktoren umsetzen.D-Bitfelder implementieren.DIP1000 "Zeiger in GÃ¼ltigkeitsbereichen" umsetzen.DIP1008 "Ausnahmen im @nogc-Code zulassen" umsetzen.DIP1021 "VerÃ¤nderbare Funktionsargumente" umsetzen.P2564 fÃ¼r consteval-Propagierung implementieren.__atomic-Operationen Ã¼ber Bibliotheksaufrufe alter __sync-Funktionen durchfÃ¼hren.AuflÃ¶sung von DR 150 fÃ¼r Mustervergleich von Template-Template-Argumenten umsetzen.Implizit deklarierte BIND(C)-Funktion %qs bei %L ist mÃ¶glicherweise nicht interoperabel mit CImplizit deklarierte BIND(C)-Variable %qs bei %L kÃ¶nnte nicht C-kompatibel seinImplizit deklarierte Funktion %s wird in !$OMP DECLARE REDUCTION bei %L verwendetImplizit deklariertes Unterprogramm %s wird in !$OMP DECLARE REDUCTION bei %L verwendetImplizit deklarierte Variable %qs bei %L kÃ¶nnte nicht C-kompatibel sein, ist aber ein Scheinargument fÃ¼r BIND(C)-Prozedur %qs bei %LImplizit angegebener PARAMETER %qs bei %L passt nicht zu frÃ¼herem IMPLICIT-TypEinbezogenes SAVE fÃ¼r Modulvariable %qs bei %L, benÃ¶tigt wegen StandardinitialisierungFeld mit impliziter Form bei %LUnreine Funktion %qs bei %L wird mÃ¶glicherweise nicht ausgewertetUnreine Funktion bei %L wird mÃ¶glicherweise nicht ausgewertetIn %s bei %L mÃ¼ssen alle Prozeduren auch FUNCTIONs sein, da der allgemeine Name auch der Name des abgeleiteten Typs istIn %s bei %L mÃ¼ssen alle Prozeduren entweder SUBROUTINE oder FUNCTION seinIn C++ bedeutet ungleich Null die Warnung vor veralteter Umwandlung von Zeichenkettenliteralen in Â»char *Â«. In C erfolgt eine Ã¤hnliche Warnung, nur ist die Umwandlung nat. laut ISO-C-Standard nicht veraltet.In Fortran 2003 ist der COMMON-Block %qs bei %L ein globaler Bezeichner und muss daher den selben Bindungsnamen haben wie der gleichbenannte COMMON-Block bei %L: %s vs. %sIn SSA-PRE-Optimierungen auf BÃ¤umen Teils-Teils-Redundanz eliminieren.In einem reinen Unterprogramm darf ein INTENT(IN)-Dummy-Argument nicht als Â»exprÂ« bei %L einer intrinsischen Zuweisungsanweisung verwendet werden, in der die Variable von einem abgeleiteten Typ ist, wenn der abgeleitete Typ eine Zeigerkomponente auf irgendeiner Ebene der Komponentenauswahl hat.Im Aufruf von %qs bei %L ist eine TypunvertrÃ¤glichkeit bei Argument %qs; %s wurde an %s Ã¼bergebenIn Konstruktor %qDIn Kopierkonstruktor %qDIn Destruktor %qDIn expliziter Objektelementfunktion %qDIn Datei, eingebunden vonIn Funktion %qDIn Funktion %qsIn Lambda-FunktionIn Elementfunktion %qDIn Elementfunktion %qsInterner Fehler: In mh_dest_is_float(%s to %s), the move of %s to %s hasn't been implementedIn ModulIn Modul, importiert beiInterner Fehler: In parser_move(%s to %s), the move of FldLiteralN to %s hasn't been implementedIn statischer Elementfunktion %qDInclude-Verzeichnis %qs: %sImportierte Module in die Kompilierung einbeziehen.Die eingebundene Datei %qs ist keine regulÃ¤re DateiInkompatibles ALLOCATE-Objekt bei %C fÃ¼r CHARACTER-Typspezifikation bei %LUnvertrÃ¤glicher abgeleiteter Typ in PARAMETER bei %LInkompatible Initialisierung zwischen einer abgeleiteten TypentitÃ¤t und einer EntitÃ¤t mit Typ %qs bei %CUnvertrÃ¤gliche RÃ¤nge %d und %d in Zuweisung bei %LUnvertrÃ¤gliche RÃ¤nge in %s (%d und %d) bei %LUnvertrÃ¤gliche Typen in DATA-Anweisung bei %L; versuchte Umwandlung von %s an %sUnvertrÃ¤gliche Typangabe fÃ¼r Feldelement bei %LUnvertrÃ¤gliche Verwendung von TILE und COLLAPSE bei %LKorÃ¤nge fÃ¼r Operator bei %L und %L stimmen nicht Ã¼bereinInkonsistente Ã„quivalenzregeln mit %qs bei %L und %qs bei %LInterne Compilerwarnung: No location in expression near %LInterne Compilerwarnung: Inconsistent internal state: No location in statementRÃ¤nge fÃ¼r Operator bei %L und %L stimmen nicht Ã¼bereinInkonsistente Typen fÃ¼r Operator bei %L und %L: %s und %sInterner Compilerfehler: Incorrect EH edge %i->%iFalsche Ausdehnung in Argument B in MATMUL-Intrinsic in Dimension 1: ist %ld, sollte %ld seinIEEE-Befolgung fÃ¼r Gleitkommavergleiche erhÃ¶hen.Index in Dimension %d ist auÃŸerhalb der Grenzen bei %LIndexvariable %qs bei %L kann nicht in einer Ortsangabe angegeben werdenIndexvariable %qs ist nicht als INTENT(INOUT)-Argument definierbar bei %L in Prozedur %qs, die aus der DO-Schleife bei %L heraus aufgerufen wirdIndexvariable %qs ist nicht als INTENT(INOUT)-Argument definierbar bei %L in Unterroutine %qs, die aus der DO-Schleife bei %L heraus aufgerufen wirdIndexvariable %qs neudefiniert bei %L in Prozedur %qs, aufgerufen aus der DO-Schleife bei %LIndexvariable %qs wird auf undefiniert als INTENT(OUT)-Argument bei %L in Prozedur %qs gesetzt, wird aus der DO-Schleife bei %L aufgerufenIndexvariable %qs wird auf undefiniert gesetzt als INTENT(OUT)-Argument bei %L in Unterroutine %qs, die aus der DO-Schleife bei %L heraus aufgerufen wirdAngeben, wie viele Vektorbefehle ohne Speicherzugriff pro Taktzyklus ausgefÃ¼hrt werden kÃ¶nnen; wird im Faktor fÃ¼r Schleifenabwicklungen des Autovektorisierers verwendet. Vorgabe ist 4.PrioritÃ¤t fÃ¼r r0..r3 / r12..r15 mit TARGET_REGISTER_PRIORITY ausdrÃ¼cken.Vergleich auf Ungleichheit fÃ¼r %s bei %LVerwendung von Hardware-Gleitkommabefehlen unterdrÃ¼cken.Initialisierung bei %C ist in PURE-Prozedur nicht erlaubtInitialisierung bei %C ist nicht fÃ¼r eine ZeigervariableInitialisierung einer allozierbaren Komponente bei %C ist nicht erlaubtInitialisierung des Zeigers bei %C ist nicht in einer PURE-Prozedur erlaubtInitialisierung einer Strukturkomponente mit einer HOLLERITH-Konstante bei %L ist nicht erlaubtInitialisierung einer Variablen bei %C ist in einer PURE-Prozedur nicht erlaubtInitialisierungszeichenkette bei %L wurde abgeschnitten, um zur Variable zu passen (%wd/%wd)Komponenten von abgeleiteten Typvariablen gemÃ¤ÃŸ anderer init-Schalter initialisieren.Lokale Variablen auf Null initialisieren (von g77).PTX-Register initialisieren.Initialisiertes Symbol %qs bei %C kann nur COMMON in BLOCK DATA seinInitialisierte Variable %qs bei %L ist in leerem COMMON, aber Initialisierung ist nur in benannten COMMON-BlÃ¶cken erlaubtInitialisierer nicht erlaubt fÃ¼r PARAMETER %qs bei %CInitialisierung einer bereits initialisierten Variablen bei %C__atomic-Operationen Â»inlineÂ« erzeugen, wenn Lock-freie Befehlssequenz verfÃ¼gbar ist.Alle bekannten Zeichenkettenoperationen einbetten (inline).Code inline einbetten, um Befehlscache nach dem Aufsetzen verschachtelter Funktionstrampoline zu verwerfen.Konstanten einbetten, wenn es mit 2 Befehlen oder weniger geht.Zeichenkettenoperationen memset/memcpy als Â»inlineÂ« einfÃ¼gen, aber Inline-Version nur fÃ¼r kleine BlÃ¶cke durchfÃ¼hren.Rekursives inlinen nur, wenn die Wahrscheinlichkeit des Aufrufs den Parameter Ã¼berschreitet.Aufrufe von strcmp inlinen, wenn mÃ¶glich.Aufrufe von strlen inlinen, wenn mÃ¶glich.Aufrufe von strncmp inlinen, wenn mÃ¶glich.Befragungsparameter darf nicht in einer data-stmt-object-list bei %C vorkommenENDBR-Befehl beim Betreten einer Funktion nur via cf_check-Attribut fÃ¼r CET-Instrumentierung einfÃ¼gen.In jedem Funktionsprolog NOP-Befehle erzeugen.Arc-basierten Programm-Profilierungscode einfÃ¼gen.Code einfÃ¼gen, der jede Speicherseite des Stapels bei der Allokation antestet, um vor Angriffen basierend auf Ãœberschneidungen zu schÃ¼tzen.Code einfÃ¼gen, um AusdrÃ¼cke zu profilen.Code einfÃ¼gen, um die Bedingungsabdeckung zu messen.Pfadprofilierungscode einfÃ¼gen.Lockerungs-Hinweis an Linker Ã¼bergeben, um Lockerung durchzufÃ¼hren.Code zur StapelprÃ¼fung in das Programm einfÃ¼gen. Dasselbe wie -fstack-check=specific.Anzahl der Maschinenbefehle, die fÃ¼r Funktionsprolog, -Epilog und sonstigen Overhead veranschlagt werden.Anzahl der Maschinenbefehle, die fÃ¼r Thunk-Overhead in Funktionen veranschlagt werden.Zahl der Befehle, bei deren Ãœberschreitung die STFL-Stall-Strafe kompensiert werden kann.Erstmaliges Betreten und Verlassen einer Funktion zum Profilieren aufzeichnen.Ein- und Austritte von Funktionen beim Profilieren von Aufrufen verwenden.Verlassen von Funktionen mit __fentry__ instrumentieren, in instrumentierten Funktionen.Funktionen nur aus Dateien instrumentieren, deren Namen zu keinem der regulÃ¤ren AusdrÃ¼cke passen (durch Semikolon getrennt).Funktionen nur aus Dateien instrumentieren, deren Namen zu einem der regulÃ¤ren AusdrÃ¼cke passen (durch Semikolon getrennt).Ganzzahldivision bei %2$L zu Konstante %1$qs abgeschnittenGanzzahlausdruck erforderlich bei %CGanzzahlart %d bei %C nicht verfÃ¼gbarGanzzahl auÃŸerhalb des symmetrischen Bereichs wegen Standard-Fortran bei %LGanzzahl auÃŸerhalb des symmetrischen Bereiches wegen Standard-Fortran-Konvertierung von %s in %s bei %LGanzzahlÃ¼berlauf bei der Berechnung des zu reservierenden SpeichersGanzzahl zu groÃŸ fÃ¼r ihre Art bei %C. Diese ÃœberprÃ¼fung kann mit der Option %<-fno-range-check%> ausgeschaltet werdenGanzzahl bei %C zu groÃŸGanzzahlwert zu groÃŸ in Ausdruck bei %CFunktionen in ihre Aufrufer einfÃ¼gen, wenn CodegrÃ¶ÃŸe als nicht wachsend bekannt ist.Nicht als Â»inlineÂ« deklarierte Funktionen in ihre Aufrufer einfÃ¼gen, wenn gewinnbringend.Nur an einer Stelle aufgerufene Funktionen in ihre Aufrufer einfÃ¼gen.Intel-MCU-psABI wird im %s-Modus nicht unterstÃ¼tztSchleifen bei %L werden getauschtSchnittstelle %qs bei %L ist in spÃ¤terer PROCEDURE-Anweisung deklariertSchnittstelle %qs bei %L darf keine Anweisungsfunktion seinSchnittstelle %qs bei %L kann nicht allgemein seinSchnittstelle %qs bei %L muss explizit seinUnpassende Schnittstelle fÃ¼r Prozedurzeiger-Komponente %qs in Strukturkonstruktor bei %L: %sSchnittstelle in Scheinprozedur %qs bei %L passt nicht: %sAbweichung in Schnittstelle der Scheinprozedur bei %L widerspricht %L: %sSchnittstelle in globaler Prozedur %qs bei %L passt nicht: %sUnpassende Schnittstellen bei Zuweisung des Prozedurzeigers bei %L: %qs ist kein UnterprogrammUnpassende Schnittstellen bei Zuweisung des Prozedurzeigers bei %L: %sSchnittstelle muss fÃ¼r DEFERRED-Bindung bei %C angegeben werdenSchnittstelle von %qs bei %L muss explizit seinSchnittstellenname nach %<(%> bei %C erforderlichInterner Compilerfehler:
! Interne Datei bei %L mit NamenslisteInterne Prozedur %qs in %s bei %LInterne Prozedur %qs ist in Zuweisung des Prozedurzeigers bei %L ungÃ¼ltigInterne Prozedur %qs ist in Initialisierung des Prozedurzeigers bei %L ungÃ¼ltigInterne Prozedur %qs wird als effektives Argument bei %L verwendetInterne Einheit mit Vektor-Index bei %LJeden INTEGER(4) als INTEGER(8) interpretieren.Jeden REAL(4) als REAL(10) interpretieren.Jeden REAL(4) als REAL(16) interpretieren.Jeden REAL(4) als REAL(8) interpretieren.Jeden REAL(8) als REAL(10) interpretieren.Jeden REAL(8) als REAL(16) interpretieren.Jeden REAL(8) als REAL(4) interpretieren.ImaginÃ¤re, Festkomma, oder andere GNU-Zahlenauffixe als das korrespondieren Zahlenliteral statt eines benutzerdefinierten Zahlenliterals interpretieren.Interrupt-Dienst-Routinen kÃ¶nnen nicht im Â»Thumb-1Â«-Modus codiert werdenIm Â»textÂ«-Abschnitt Literalbereiche mit Codebereichen verweben.Intervall, in dem der Stack geprÃ¼ft wird, als Zweierpotenz in Bytes ausgedrÃ¼ckt.IntervallÃ¼berlappung von %<-fdbg-cnt=%s%>: [%u, %u] und [%u, %u]Intrinsisches %<NULL()%> ohne %<MOLD%>-Argument bei %L an Dummy %qs mit angenommener LÃ¤nge Ã¼bergebenIntrinsisches %<NULL()%> ohne %<MOLD%>-Argument bei %L an Dummy %qs mit angenommenem Rang Ã¼bergebenIntrinsisches %qs (%s) wird bei %L verwendetIntrinsisches %qs bei %L kann keine Initialisierung habenEingebautes %qs bei %L ist in Zuweisung des Prozedurzeigers ungÃ¼ltigEingebautes %qs bei %L ist nicht als effektives Argument erlaubtDas intrinsische %qs bei %L muss mindestens zwei Argumente habenIntrinsisches TRANSFER bei %L hat teilweise undefiniertes Ergebnis: QuellgrÃ¶ÃŸe %zd < ErgebnisgrÃ¶ÃŸe %zdIntrinsische Funktion %qs (%d) nicht erkanntIntrinsische Funktion %qs bei %L ist nicht in einem Initialisierungs-Ausdruck erlaubtIntrinsische Funktion Â»%sÂ« bei %L ist nicht fÃ¼r %s erlaubtIntrinsische Funktion NULL bei %L kann kein tatsÃ¤chliches Argument fÃ¼r STORAGE_SIZE sein, da es einen disassoziierten Zeiger zurÃ¼ckgibtBei %2$L referenzierter intrinsischer Operator %1$qs nicht im Modul %3$qs gefundenSchnittstelle des intrinsischen Operators bei %L muss eine FUNCTION seinIntrinsische Prozedur %qs ist in PROCEDURE-Anweisung bei %L nicht erlaubtIntrinsische Prozedur bei %L kann keine MODULE PROCEDURE seinIntrinsisches Unterprogramm %qs bei %L darf keine Typspezifizierung habenIntrinsisches Symbol wurde bei %C in Â»!$ACC ROUTINE ( NAME )Â« angegeben und mit der inkompatiblen GANG, WORKER oder VECTOR-Klausel markiertIntrinsisches Symbol wurde bei %C in Â»!$ACC ROUTINE ( NAME )Â« angegeben und mit der inkompatiblen NOHOST-Klausel markiertUngÃ¼ltige Direktive %qs bei %L in %s-Klausel: deklarative, informelle und Metadirektiven sind nicht erlaubtUngÃ¼ltige BOZ-Literalkonstante, die bei %C im Feldindex verwendet wirdUngÃ¼ltiger C-Name in NAME=-Spezifizierung bei %CUngÃ¼ltige Hollerithkonstante bei %L enthÃ¤lt ein Wide-ZeichenUngÃ¼ltige Hollerithkonstante: %L muss mindestens ein Zeichen enthaltenUngÃ¼ltige Hollerithkonstante: Ganzzahlart bei %L sollte Standard seinUngÃ¼ltiger KIND-Parameter von %s bei %LUngÃ¼ltiger NAME %qs in Â»!$ACC ROUTINE ( NAME )Â« bei %CUngÃ¼ltiges NULL bei %LUngÃ¼ltiges Argument fÃ¼r Â»!$ACC WAITÂ« bei %CUngÃ¼ltige Feldreferenz bei %LUngÃ¼ltige Feldreferenz der Nicht-Feld-EntitÃ¤t bei %LUngÃ¼ltiges Zuordnungsziel bei %CUngÃ¼ltiges Zeichen %<$%> bei %L. %<-fdollar-ok%> verwenden, um es als Erweiterung zuzulassenUngÃ¼ltiges Zeichen %qc in Variablenname bei %CUngÃ¼ltiges Zeichen 0x%s bei %CUngÃ¼ltiges Zeichen in Name bei %CUngÃ¼ltige(s) Zeichen in ELSE-Anweisung nach %CUngÃ¼ltige Klausel in Modul mit Â»!$ACC DECLAREÂ« bei %LUngÃ¼ltige Codimension %d bei %C, nur %d Codimensionen existierenUngÃ¼ltige kombinierte oder zusammengesetzte Direktive bei %LUngÃ¼ltiger Kontext fÃ¼r NULL()-Zeiger bei %LUngÃ¼ltiger Kontext fÃ¼r NULL()-Zeiger bei %LUngÃ¼ltiger Exponent-Buchstabe %<q%> in literaler Realkonstante bei %CUngÃ¼ltiger Ausdruck nach %<%s%> bei %CInvalid expression in gfc_element_size.Invalid expression in gfc_target_encode_expr.Invalid expression in gfc_target_interpret_expr.UngÃ¼ltiger Ausdruck im Strukturkonstruktor fÃ¼r Zeigerkomponente %qs bei %L in PURE-ProzedurUngÃ¼ltige Form der PROGRAM-Anweisung bei %CUngÃ¼ltige Form der WRITE-Anweisung bei %L, UNIT erforderlichUngÃ¼ltige Form der Feldreferenz bei %CUngÃ¼ltige Form der Coarray-Referenz bei %CUngÃ¼ltige Bildanzahl %d in SYNC IMAGESUngÃ¼ltiger Initialisierungsausdruck fÃ¼r ALLOCATABLE-Komponente %qs in Strukturkonstruktor bei %LUngÃ¼ltige Initialisierung %s in Data-Anweisung bei %CUngÃ¼ltiges SchlÃ¼sselwort %qs in intrinsischer Funktion %qs bei %LUngÃ¼ltige Art %d fÃ¼r CHARACTER-Konstante bei %CUngÃ¼ltige Art fÃ¼r %s bei %LUnerlaubtes Mischen von IEEE-128-Bit- und IBM-128-Bit-GleitkommatypenUngÃ¼ltige Initialisierung im alten Stil fÃ¼r abgeleitete Typkomponente bei %CUngÃ¼ltiger Operator fÃ¼r !$OMP DECLARE REDUCTION %s bei %LUngÃ¼ltiges Argument fÃ¼r Prozedur bei %LUngÃ¼ltige Zuweisung eines Prozedurzeigers bei %LUngÃ¼ltiger Bereich %s in Option %sUnzulÃ¤ssige Realart %d bei %CInvalid standard code on intrinsic %qs (%d)UngÃ¼ltige Teilzeichenkette in data-implied-do in DATA-Anweisung bei %LUnzulÃ¤ssiger Typ in arithmetischer Operation bei %LUngÃ¼ltiges Typspezifikation bei %CUngÃ¼ltige Verwendung der BOZ-Literalkonstante bei %LUngÃ¼ltige Verwendung eines Anweisungs-Funktionsarguments bei %LUngÃ¼ltiger Wert fÃ¼r Spezifikation %s bei %CEinen Hinweis ausgeben, wenn doppelte Diagnosemeldungen zusammengefasst werden.Fehlersuche-Informationen fÃ¼r compilergenerierte Hilfsvariablen ausgeben.FÃ¼r strikte Standardbefolgung benÃ¶tigte Warnungen ausgeben.Iteratorschritt bei %L kann nicht Null seinJSON-ArrayJSON-Format-Version: %s
! JSON-LiteralJSON-ZahlJSON-ObjektJSON-StringSprungziele werden an dieser Potenz von 2 ausgerichtet.Ausschuss hinter ASSOCIATE-Anweisung bei %CAusschuss hinter CALL bei %CAusschuss hinter GENERIC-Bindung bei %CAusschuss hinter MAP-Anweisung bei %CAusschuss hinter UNION-Anweisung bei %CAusschuss hinter unverschachtelter STRUCTURE-Anweisung bei %CEinfach Abwicklungstabellen fÃ¼r Ausnahmebehandlung erzeugen.Einfach icc0/fcc0 verwenden.KIND-Attribut bei %C in einer STRUCTURE-DefinitionKIND-Attribut bei %C in einer TYPE-DefinitionKIND-Parameter von %s bei %L muss ein Initialisierungsausdruck seinKIND-part_ref bei %CSchlÃ¼sselwort %qs bei %C bereits in aktueller Argumentliste aufgetretenSchlÃ¼sselwort-Argument %qs bei %L ist bereits mit einem anderen effektiven Argument verbundenSchlÃ¼sselwort-Argument %qs bei %L darf innerhalb einer Anweisungsfunktion nicht auftauchenSchlÃ¼sselwort-Argument %qs bei %L ist nicht in der ProzedurSchlÃ¼sselwort-Argument %qs bei %L ist nicht in der Prozedur; meinen Sie %qs?SchlÃ¼sselwort-Argument erfordert explizite Schnittstelle fÃ¼r Prozedur %qs bei %LSchlÃ¼sselwortargument erfordert explizite Schnittstelle fÃ¼r Prozedurzeigerkomponente %qs bei %LDie Art %d wird fÃ¼r CHARACTER bei %C nicht unterstÃ¼tztDie Art %d wird fÃ¼r Typ %s bei %C nicht unterstÃ¼tztParameter mit KIND-Typ fÃ¼r EntitÃ¤t bei %L unterscheidet sich vom Parameter mit KIND-Typ der TypspezifikationBekannte AArch64-ABIs (fÃ¼r Verwendung mit Option -mabi=):Bekannte ABIs (fÃ¼r Verwendung mit Option -mabi=):Bekannte ARC-CPUs (fÃ¼r Verwendung mit Option -mcpu=):Bekannte ARM-ABIs (fÃ¼r Verwendung mit Option -mabi=):Bekannte ARM-CPUs (fÃ¼r Verwendung mit Optionen -mcpu= und -mtune=):Bekannte ARM-FPUs (fÃ¼r Verwendung mit Option -mfpu=):Bekannte ARM-Architekturen (fÃ¼r Verwendung mit Option -march=):Bekannte C6X ISAs (fÃ¼r Verwendung mit der Option -march=):Bekannte CPUs (fÃ¼r Verwendung mit Optionen -mcpu= und -mtune=):Bekannte CSKY-CPUs (fÃ¼r Verwendung mit Option -mcpu=):Bekannte CSKY-FPUs (fÃ¼r Verwendung mit Option -mfpu=):Bekannte CSKY-Architekturen (fÃ¼r Verwendung mit Option -march=):Bekannte FR-V-CPUs (fÃ¼r Verwendung mit Option -mcpu=):Bekannte IQ2000-CPUs (fÃ¼r Verwendung mit Option -mcpu=):Bekannte Itanium-CPUs (fÃ¼r Verwendung mit Option -mtune=):Bekannte M68K-CPUs (fÃ¼r Verwendung mit Option -mcpu=):Bekannte M68K-ISAs (fÃ¼r Verwendung mit Option -march=):Bekannte M68K-Mikroarchitekturen (fÃ¼r Verwendung mit Option -mtune=):Bekannte MIPS-ABIs (fÃ¼r Verwendung mit Option -mabi=):Bekannte MIPS-CPUs (fÃ¼r Verwendung mit Optionen -march= und -mtune=):Bekannte MIPS-IEEE-754-Einstellungen (fÃ¼r Verwendung mit Optionen -mabs= und -mnan=):Bekannte MIPS-ISA-Stufen (fÃ¼r Verwendung mit Option -mips):Bekannte PTX-ISA-Architekturen (fÃ¼r Verwendung mit Option -misa=):Bekannte PTX-ISA-Versionen (fÃ¼r Verwendung mit Option -mptx=):Bekannte TLS-Dialekte (fÃ¼r Verwendung mit Option -mtls-dialect=):Bekannte __fp16-Formate (fÃ¼r Verwendung mit der Option -mfp16-format=):Bekannter Adressmodus (fÃ¼r Verwendung mit Option -maddress-mode=):Bekannte Architekturen (fÃ¼r Verwendung mit Option -march=):Bekannte Assemblerdialekte (fÃ¼r Verwendung mit Option Â»-masm=Â«)Bekannte Assemblerdialekte (fÃ¼r Verwendung mit Option Â»-masm=Â«):Bekannte MÃ¶glichkeiten zur AbschwÃ¤chung der geradlinigen Spekulation mit Â»-mharden-sls=Â«:Bekannte Werte fÃ¼r RÃ¼ckkehr-Instrumentierung mit -minstrument-return=:Bekannte Codemodelle (fÃ¼r Verwendung mit Option -mcmodel=):Bekannte Codemodelle (fÃ¼r Verwendung mit Option -mict-model=):Bekannte Codemodelle (fÃ¼r Verwendung mit Option -mcmodel=):Bekannte Codemodelle (fÃ¼r Verwendung mit Option -mcmodel=):Bekannte CPU-Typen (fÃ¼r Verwendung mit Option -mcpu=):Bekannte Datenausrichtungen (fÃ¼r Verwendung mit Option -malign-data=):Bekannte Gleitkomma-ABIs (fÃ¼r Verwendung mit Option -mfloat-abi=):Bekannte Anzahl der Gleitkomma-Register (fÃ¼r Verwendung mit der Option -mconfig-fpu=):Bekannte indirekte Sprungauswahlen (fÃ¼r Verwendung mit den Optionen -mindirect-branch=/-mfunction-return=):Bekannte bevorzugte LÃ¤nge von Registervektoren (fÃ¼r Verwendung mit der Option -mprefer-vector-width=):Bekannte Stapelschutz-WÃ¤chter (fÃ¼r Verwendung mit Option -mstack-protector-guard=):Bekannte ABIs fÃ¼r Vektorisierungs-Bibliothek (fÃ¼r Verwendung mit Schalter -mveclibabi=):L%d Cache-Wartezeit unbekannt fÃ¼r %sLEN-Argument (%ld) auÃŸerhalb des Bereichs 0:%d in intrinsischem MVBITSLEN-Argument (%ld) auÃŸerhalb des Bereichs 0:%ld in intrinsischem IBITSLEN-Attribut bei %C in einer STRUCTURE-DefinitionLEN-Attribut bei %C in einer TYPE-DefinitionLEN oder KIND-Abfrageverweis in DATA-Anweisung bei %LLEN-part_ref bei %CInterner Fehler: LEVEL 01 (%s) OCCURS has insufficient data.memsizeLHS in %<noreturn%>-AufrufLINEAR-Klauselmodifizierer auÃŸer VAL wird bei %L an DO- oder SIMD-Konstrukt verwendetLINEAR-Klauselmodifizierer wird bei %L an DO- oder SIMD-Konstrukt verwendetLINEAR-Dummy-Argument %qs mit VALUE-Attribut mit %s-Modifizierer bei %LLINEAR-Variable %qs bei %L muss INTEGER seinLOCK-Anweisung bei %CLOCK_EVENT in Variablen-Definitionskontext (%s) bei %LLOCK_TYPE in Variablen-Definitionskontext (%s) bei %LLOGICAL-Scheinargument %qs bei %L mit Nicht-C_Bool-Art in BIND(C)-Prozedur %qsLOGICAL-Operanden werden in Ausdruck bei %L benÃ¶tigtLOGICAL-RÃ¼ckgabevariable %qs bei %L mit Nicht-C_Bool-Art in BIND(C)-Prozedur %qsdas LP64E-ABI ist im GCC als veraltet gekennzeichnetLTO-Streaming des erweiterten %<asm%> auf oberster Ebene nicht implementiertLTO-UnterstÃ¼tzung wurde in dieser Konfiguration nicht eingeschaltetMarke %d bei %C bereits als eine Formatmarke referenziertMarke %d bei %C bereits als Sprungziel referenziertMarke %d bei %C vorher als FORMAT-Marke verwendetMarke %d bei %C vorher als Sprungziel verwendetMarke %d bei %L definiert, kann aber nicht verwendet werdenMarke %d bei %L definiert, aber nicht verwendetMarke %d wird bei %L referenziert, aber nirgendwo definiertSprungmarke %qs nach %L passt nicht zur IF-Marke %qsMarke %qs bei %C passt nicht zur IF-Marke %qsMarke %qs bei %C passt nicht zur WHERE-Marke %qsMarke bei %L ist nicht im gleichen Block wie GOTO-Anweisung bei %LMarkenname %qs bei %C ist mehrdeutigDO-Anweisung mit Label bei %LÃ–ffnende Klammer benÃ¶tigt nach %<*%> in Formatzeichenkette bei %LAlte Erweiterung:Buchstabe %qc hat bei %C bereits einen IMPLICIT-TypBuchstabe %qc wurde bereits in IMPLICIT-Anweisung bei %C gesetztBuchstaben in IMPLICIT-Anweisung bei %C mÃ¼ssen in alphabetischer Reihenfolge seinStufe nicht gefunden, verwenden Sie %<none%>, %<slim%>, %<blocks%>, %<vops%>.BeschrÃ¤nkungen fÃ¼r GOT-GrÃ¶ÃŸe aufheben.Wie -M, aber System-Header-Dateien ignorieren.Wie -MD, aber System-Header-Dateien ignorieren.Wie -pedantic, aber Fehler statt Warnungen ausgeben.Wie beim Parameter rs6000-density-load-pct-threshold wird auch hier geprÃ¼ft, ob die Gesamtzahl der Ladeanweisungen den durch diesen Parameter festgelegten Schwellwert Ã¼berschreitet, und nur dann eine Strafe verhÃ¤ngt, wenn dieser Schwellwert erfÃ¼llt ist. Der Standardwert ist 20.Wie beim Parameter rs6000-density-pct-threshold, wird die Gesamtsumme von vec_cost und nicht-vec_cost berechnet, und die Betrafung erfolgt nur, wenn die Summe den durch diesen Parameter festgelegten Schwellenwert Ã¼berschreitet. Der Standardwert ist 70.Begrenzen, wie weit der Autovektorisierer eine Schleife abrollen darf.Grenze von %d Fortsetzungen in Anweisung bei %C Ã¼berschrittenBegrenzung der Anzahl der Alias-PrÃ¼fungen, die beim Versuch, ein ldp/stp-Paar zu bilden, durchgefÃ¼hrt werden.Zeile bei %L wird abgeschnitten%s von %d Zeilen ausgefÃ¼hrt
! Code fÃ¼r einen __main-Kernel einbinden.Die D-Standardbibliothek dynamisch in das Compilat binden.Die D-Standardbibliothek statisch in das Compilat binden.Die Modula-2-Standardbibliotheken statisch in das Kompilat einbinden.Binden, um Programm im ELF-Format zu erzeugen (statt mmo).Mit libads.a, libc.a und crt0.o binden.Mit libc.a und libdebug.a binden.Mit libc.a und libsim.a binden.Mit libmvme.a, libc.a und crt0.o binden.Mit libsim.a, libc.a und sim-crt0.o binden.Mit libyk.a, libc.a und crt0.o binden.Mit schneller Gleitkomma-Bibliothek linken.Mit Library-PIC-Bibliotheken linken.Optimierungen zur Bindezeit mit Anzahl paralleler Jobs oder Jobserver.Alle verfÃ¼gbaren FehleranalysezÃ¤hler mit ihren Grenzen und Werten auflisten.Alle versteckten GC-Allokationen auflisten.Alle unverÃ¤nderlichen Felder auflisten, die eine Objektinstanz belegen.Alle Verwendungen von Â»inÂ« mit Parametern auflisten.Alle Variablen auflisten, die im threadlokalen Speicher landen.Informationen Ã¼ber alle D-SprachÃ¤nderungen auflisten.Listenelement %qs bei %L wurde von einer vorhergehenden Direktive OMP DECLARE TARGET auf einen abweichenden DEVICE_TYPE festgelegtListeneintrag %qs bei %L ist bei %L deklariert, ist jedoch kein ScheinargumentListenelement %qs in %s-Klausel bei %L muss TYPE(C_PTR) seinListenelement bei %L darf nicht koindiziert seinListe wurde zusammen mit Speicherreihenfolge-Klausel angegeben, in FLUSH-Direktive bei %CStatistik zu Template-Instanziierung ausgeben.Alle Elemente der Archivbibliotheken laden, statt nur denen, die undefinierte Symbole erfÃ¼llen.Ortsangabe bei %LLocator %qs bei %L in der DEPEND-Klausel der Art DEPOBJ muss eine skalare Ganzzahl der Art OMP_DEPEND_KIND seinDer Locator bei %L in der DEPEND-Klausel vom Typ DEPOBJ muss eine skalare Ganzzahl der Art OMP_DEPEND_KIND seinLock-Variable bei %L muss Skalar mit LOCK_TYPE seinLogischer SELECT CASE Block bei %L hat mehr als zwei FÃ¤lleLogischer Bereich in CASE-Anweisung bei %L ist nicht erlaubtLogische Werte bei %L mÃ¼ssen mit %s statt mit %s verglichen werdenDie vom Linker geladenen Objektdateien wegschreiben.Symbole wegschreiben, die zum Laden eines Objekts gefÃ¼hrt haben.PCH-Dateien suchen und verwenden, sogar bei Vorverarbeitung.Die Hauptquelldatei im Includepfad suchen.Sucht MÃ¶glichkeiten, Stapel-Anpassungen und Stapel-Referenzen zu reduzieren.ARCH-Voreinstellungen fÃ¼r LoongArch:TUNE-Voreinstellungen fÃ¼r LoongArch:Schleifen an dieser Potenz von 2 ausrichten.Schleife lÃ¤uft endlosSchleifenvariableSchleifenvariable bei %C kann kein Koarray seinSchleifenvariable bei %C kann keine Unter-Komponente seinSchleifenvariable bei %C kann kein Koarray seinSchleifenvariable wurde geÃ¤ndertSchleifen mit mindestens der angegebenen Durchlaufzahl erhalten Schleifenausrichtung.Untere Feldreferenz bei %L ist auÃŸerhalb der Schranken (%ld < %ld) in Dimension %dUntere Feldreferenz bei %L ist auÃŸerhalb der Schranken (%ld > %ld) in Dimension %dMAP %qD TO %qEMAP %qD TO %qTMASK kommt bei %L ohne IDENTITY vorMCU %qs unterstÃ¼tzt keine Hardware-Multiplikation, aber %<-mhwmult%> ist auf %s gesetztMCU %qs unterstÃ¼tzt %s-ISA, aber %<-mcpu%> ist auf %s gesetztMCU %qs unterstÃ¼tzt %s-Hardware-Multiplikation, aber %<-mhwmult%> ist auf %<16-bit%> gesetztMCU %qs unterstÃ¼tzt %s-Hardware-Multiplikation, aber %<-mhwmult%> ist auf %<32-bit%> gesetztMCU %qs unterstÃ¼tzt %s-Hardware-Multiplikation, aber %<-mhwmult%> ist auf %<f5series%> gesetztDie MESSAGE-Klausel bei %L erfordert einen skalaren CHARACTER-Ausdruck der StandardartMIPS16 %<-mxgot%> CodeMIPS16 PIC fÃ¼r ABIs auÃŸer o32 und o64MIPS16 erfordert %<-mexplicit-relocs%>Interner Fehler: MMIX Internal: %s is not a shiftable intInterner Fehler: MMIX Internal: Bad register: %dMMIX-intern: Falscher Wert fÃ¼r 'm', kein CONST_INTMMIX-internal: Dieser Operand kann nicht dekodiert werdenMMIX-intern: CONST_INT erwartet, aber nicht diesMMIX-intern: Konstante erwartet, aber nicht diesMMIX-intern: Register erwartet, aber nicht diesInterner Fehler: MMIX Internal: Last named vararg would not fit in a registerInterner Fehler: MMIX Internal: Missing %qc case in %<mmix_print_operand%>MMIX-intern: Dies ist keine Konstante:MMIX-intern: Diese Adresse wird nicht erkanntMMIX-intern: Versuch, ungÃ¼ltig umgekehrte Bedingung auszugeben:MMIX-intern: Was ist der CC davon?MMIX-intern: Was ist der CC davon?MMX-Vektorargument ohne eingeschaltetes MMX Ã¤ndert das ABIMMX-VektorrÃ¼ckgabe ohne eingeschaltetes MMX Ã¤ndert das ABIMODULE PROCEDURE bei %C muss in einer generischen Modulschnittstelle seinMODULE-PROCEDURE-Deklaration bei %CFormales Argument %qs fÃ¼r MODULE PROCEDURE widerspricht alternativer RÃ¼ckgabe bei %CFormales Argument fÃ¼r MODULE PROCEDURE ist alternative RÃ¼ckgabe und widerspricht %qs in der separaten Deklaration bei %CMODULE-PrÃ¤fix bei %CMODULE-PrÃ¤fix bei %C muss innerhalb eines Moduls, Teilmoduls oder Interfaces seinMOLD-Argument an NULL bei %L erforderlichMOLD-Marke bei %LMOLD-Marke bei %L steht mit SOURCE-Marke bei %L in KonfliktMOLD-Marke bei %L steht mit Typspezifikation bei %L in KonfliktIn NULL()-Argument bei %L wird MOLD= benÃ¶tigt: Mehrdeutig zwischen spezifischen Funktionen %s und %sMSA-MIPS16-Codeeingebaute MSP430-Funktionen sind nur innerhalb von Interrupt-Handlern einsetzbarMULT-Fall in %<cris_op_str%>GrÃ¶ÃŸe des zweiten Arguments von %s Ã¼berschreitet Bit-GrÃ¶ÃŸe bei %LGrÃ¶ÃŸenordnung des zweiten Arguments von ISHFTC Ã¼berschreitet BIT_SIZE des ersten Arguments bei %CRÃ¼ckwÃ¤rtskettenzeiger pflegen.Macht Â»charÂ« standardmÃ¤ÃŸig vorzeichenbehaftet.Â»charÂ« standardmÃ¤ÃŸig vorzeichenlos machen.Dem Linker die Befehlszeilenoption Â»--no-relaxÂ« anstelle der Option Â»--relaxÂ« Ã¼bergeben.Alle Funktionsaufrufe indirekt machen.Inline-Funktionen standardmÃ¤ÃŸig zu Â»constexprÂ« machen.Ganzzahlen 32 Bit breit machen.Structs auf Vielfache von 4 Bytes vergrÃ¶ÃŸern (Warnung: ABI geÃ¤ndert).Maschine zur Binder-Entspannung soll annehmen, dass ein BefehlszÃ¤hlerÃ¼bersprung auftritt.Kaputte GENERIC-Anweisung bei %CFalsch geformte Typspezifikation bei %CDaten im P2-Raum reservieren.Gemangelte abgeleitete Typdefinition bei %CZuordnung von Modulen zu CMI-Dateien.Die Zuordnung des polymorphen Listenelements %qD ist unspezifiziertes VerhaltenDie Zuordnung des unbegrenzten polymorphen Listenelements %qD ist unspezifiziertes Verhalten und wird nicht unterstÃ¼tztMAC-Register als Aufruf-zerstÃ¶rt markieren.Alle Schleifen als parallel markieren.Implizit deklarierte Kopieroperationen als deprecated markieren, wenn die Klasse eine benutzerdefinierte Kopieroperation oder einen solchen Destruktor hat.Implizit deklarierte Kopieroperationen als deprecated markieren, wenn die Klasse eine benutzerdefinierte Kopieroperation hat.Alle inline-Funktionen und -Methoden mit versteckter Sichtbarkeit markieren.HÃ¶chstzahl der Basis-BlÃ¶cke in Schleife fÃ¼r Schleifeninvariantenbewegung.Maximale Schleifenanzahl fÃ¼r regionale Registerzuweisung (RA).Maximale Anzahl der zu vergleichenden Bytes als Teil der geinlineten strcmp/strncmp-Routinen (Vorgabe: 64).Maximalzahl der Bytes, die mit Schleifen verglichen werden.Maximalzahl der Bytes, die ohne Schleifen verglichen werden.Maximalzahl der Bytes, die verglichen werden.Maximalzahl der Bytes, die inline kopiert werden.Maximale Anzahl von Dateien im Dateicache.Maximale Anzahl der Zeilen, die im Dateicache indiziert werden. Bei 0 wird die GrÃ¶ÃŸe automatisch festgelegt.Maximale GrÃ¶ÃŸe der Konflikttabelle in MB.Maximalzahl der Debugmarkierungen, die expandiert oder eingereiht werden.GrÃ¶ÃŸte Rekursionstiefe fÃ¼r das Expandieren von variablenverfolgenden AusdrÃ¼cken.MaximalgrÃ¶ÃŸe der Speicherort-Liste, bei der Umkehrungsoperationen hinzugefÃ¼gt werden sollen.Maximale GrÃ¶ÃŸe variablenverfolgender Hash-Tabellen.Maximaler Code-Zuwachs durch Ende-VervielfÃ¤ltigung (in Prozent).GrÃ¶ÃŸtes durch frÃ¼hes Â»inlineÂ« eines einzelnen Aufrufs abgeschÃ¤tztes Wachstum des FunktionskÃ¶rpers.GrÃ¶ÃŸtes geschÃ¤tztes Ergebnis eines als vorhersagbar betrachteten Sprunges.Maximales Wachstum durch Â»inlineÂ« einer groÃŸen Funktion (in Prozent).Maximale Anzahl der Grenzendpunkte der Fallbereiche der Switch-Anweisung, die bei der Generierung der IPA-Funktionszusammenfassung verwendet werden.Kleinste GrÃ¶ÃŸe einer LokalitÃ¤ts-Partition fÃ¼r LTO (in geschÃ¤tzten Befehlen). Beim Wert 0 wird stattdessen ein Vorgabewert verwendet.Kleinste GrÃ¶ÃŸe einer Partition fÃ¼r LTO (in geschÃ¤tzten Befehlen)Maximales Stapelrahmen-Wachstum durch Â»inlineÂ« (in Prozent).Maximal erlaubte GrÃ¶ÃŸenzunahme der GesamtgrÃ¶ÃŸe der neuen Parameter, bis zu der IPA-RSA Zeiger auf Aggregate ersetzt.HÃ¶chstzahl der Iterationen des Durchgangs Ã¼ber eine Funktion.HÃ¶chstzahl der Ã¤hnlichen BasisblÃ¶cke, mit denen ein Basisblock verglichen wird.Maximale GesamtgrÃ¶ÃŸe von aufrufender und aufgerufener Funktion, fÃ¼r den Fall, dass die aufgerufene Funktion in die aufrufende eingereiht wird und die aufgerufene Funktion nur von einer Stelle aus aufgerufen wird.HÃ¶chsttiefe beim Durchlaufen des DFS durch die modref-Escapeanalyse.Maximale Verschachtelungstiefe von Schleifen fÃ¼r optimistisches value-number.Die maximale Tiefe der Befehlsketten, die fÃ¼r die Neuberechnung der ausgehenden Wertebereiche berÃ¼cksichtigt werden.Maximale Tiefe der logischen AusdrÃ¼cke, die von der Bereichsanalyse erfasst werden, um ausgehende Bereiche zu evaluieren.Maximale Tiefe des rekursiven Klonens fÃ¼r selbstrekursive Funktionen.GrÃ¶ÃŸte Tiefe der Suche im Dominator-Baum fÃ¼r anzuhebende AusdrÃ¼cke.Maximale Verschachtelung von Quadratwurzeln, um Potenzierung mit Gleitkommakonstanten abzubilden.HÃ¶chste Erweiterungsstufe mit Typ %qs bei %L erreichtMaximallÃ¤nge von KandidatenprÃ¼fungen fÃ¼r geradlinige StÃ¤rkereduktion.MaximalgrÃ¶ÃŸe der partiellen Aufwandsmenge, wenn Baumvoroptimierung ausgefÃ¼hrt wird.Maximale Schleifentiefe eines Aufrufs, der beim inlinen von Funktionen, die nur einmal aufgerufen werden, berÃ¼cksichtigt wird.Maximale Anzahl der VALUEs, die wÃ¤hrend eines einzelnen Aufrufs von Â»find_base_termÂ« verarbeitet werden.HÃ¶chstzahl der Zugriffe, die pro modref-Verweis gespeichert werden.HÃ¶chstzahl der aktiven lokalen Speicherungen bei RTL-Eliminierung toter Speicherungen.HÃ¶chstzahl der zusammengesetzten Elemente fÃ¼r einen Parameter in Sprungfunktionen und Gittern.HÃ¶chstzahl der Argumente in einem PHI, die einer TREE-if-Umwandlung unterstÃ¼tzt werden, auÃŸer wenn die Schleife mit einem SIMD-Pragma markiert ist.HÃ¶chstzahl der Arrays in einem SCoP.Maximale Anzahl von kÃ¼nstlichen Zugriffen, um eine VorwÃ¤rtsausbreitung zu ermÃ¶glichen, die die Skalare Ersetzung von Aggregaten fÃ¼r eine lokale Variable beibehÃ¤lt.HÃ¶chstzahl der Basen, die pro modref-Baum gespeichert werden.Maximale Anzahl von BasisblÃ¶cken, bevor VRP auf ein schnelles Modell mit geringerem Speicherbedarf umschaltet.HÃ¶chstzahl der Basis-BlÃ¶cke, bevor VRP einen spÃ¤rlich gefÃ¼llten Bitmap-Cache verwendet.HÃ¶chstzahl der Basis-BlÃ¶cke, bevor VRP einen grundlegenden Cachevektor verwendet.HÃ¶chstzahl der Bits, fÃ¼r die keine FMAs erzeugt werden.HÃ¶chstzahl der Bits, die effizient von Speicher zu Speicher verschoben werden kÃ¶nnen.HÃ¶chstzahl der Bits, die effizient im Speicher gespeichert werden kÃ¶nnen.Maximale Blockanzahl fÃ¼r -fharden-control-flow-redundancy.Maximale Blockanzahl fÃ¼r in-line -fharden-control-flow-redundancy.Maximale Anzahl von FÃ¤llen fÃ¼r die Verwendung des langsamen aber optimalen Algorithmus zur Optimierung von switch-Anweisungen.HÃ¶chstzahl der gleichzeitig offenen C++-Moduldateien beim verzÃ¶gerten Laden.HÃ¶chstzahl von bedingten Speicherpaaren, die ausgegeben werden kÃ¶nnen.HÃ¶chstzahl der konstanten Speicherungen, die im Speicherzusammenfassungs-Durchgang zusammengefasst werden.HÃ¶chstzahl der Datenreferenzen in Schleife zum Aufbau der AbhÃ¤ngigkeiten der Schleifendaten.Maximale Anzahl verschiedener PrÃ¤dikate, die zur Verfolgung der Eigenschaften von Schleifen in der interprozeduralen Analyse verwendet werden.HÃ¶chstzahl der AuflÃ¶sungen von Mehrdeutigkeiten pro Speicherzugriff.HÃ¶chstzahl der Ausstiegspunkte, die von modref pro SSA-Name aufgezeichnet werden.Die HÃ¶chstzahl der Felder in einer Struktur, bevor Zeigeranalyse sie als einzelne Variable behandelt.HÃ¶chstzahl der in Basis-Block zu betrachtenden Befehle fÃ¼r RTL-if-Umwandlung.Maximaler Abstand von Befehlen, die eine kleine Speicheroperation, der an eine grÃ¶ÃŸere Ladeoperation weitergeleitet wird, blockieren kann. Der Wert 0 deaktiviert die KostenÃ¼berprÃ¼fungen fÃ¼r den "avoid-store-forwarding"-Durchgang.Die HÃ¶chstzahl der Befehle in der ausfÃ¼hrungsbereiten Liste, die zur Umbenennung in Frage kommen.HÃ¶chstzahl der zu kopierenden Befehle, wenn BlÃ¶cke auf einem Mehrsprungpfad des Zustandsautomaten dupliziert werden.HÃ¶chstzahl der ISL-Operationen, 0 bedeutet unbegrenzt.HÃ¶chstzahl der SchleifenschÃ¤lungen, um Ausrichtung von Datenreferenzen in einer Schleife zu verbessern.HÃ¶chstzahl der beim spekulativen Devirtualisieren besuchten may-defs.HÃ¶chstzahl der NamensrÃ¤ume, in denen alternativ gesucht wird, wenn Nachschlagen eines Namens fehlschlÃ¤gt.HÃ¶chstzahl der geschachtelten Aufrufe, die bei der Analyse fÃ¼r uninitialisierte Variablen auf AbhÃ¤ngigkeiten in der Ablaufsteuerung untersucht werden.Maximale Anzahl von Operationen in einem Parameterausdruck, die von der IPA-Analyse behandelt werden kÃ¶nnen.HÃ¶chstzahl der ausgehenden Kanten in einem Switch, bevor VRP sie nicht mehr verarbeitet.HÃ¶chstzahl der Parameter in einem SCoP.Maximale Anzahl der mÃ¶glichen Vektorlayouts (zum Beispiel Permutationen), die beim Optimieren von mÃ¶glicherweise vektorisierbarem Code probiert werden.Maximale Anzahl von und-verknÃ¼pften PrÃ¤dikaten, die fÃ¼r jedes oder-verknÃ¼pfte PrÃ¤dikat in der normalisierten PrÃ¤dikatskette vorkommen.Maximale Anzahl der PrÃ¤dikate, die oder-verknÃ¼pft in der normalisierten PrÃ¤dikatskette vorkommen.HÃ¶chstzahl, wie oft das Alias-Orakel pro Speichervorgang befragt wird.HÃ¶chstzahl der Verweise, die pro modref-Basis gespeichert werden.HÃ¶chstzahl an Beziehungen, die das Orakel pro Basis-Block registriert.HÃ¶chstzahl der in einem Block erlaubten Anweisungen, die fÃ¼r Sprungbehandlung vervielfÃ¤ltigt werden mÃ¼ssen.Maximale Anzahl von Anweisungen, die zwischen der Anweisung und dem Ende erlaubt sind, um die Lebensdauer nicht zu verlÃ¤ngern.HÃ¶chstzahl der Anweisungen, die von der Analyse der formalen Parameter fÃ¼r IPA besucht werden, basierend auf der Aliasanalyse in einer gegebenen Funktion.HÃ¶chstzahl der betrachteten Anweisungen fÃ¼r das Entdecken von Sprungfunktionsoffsets.HÃ¶chstzahl der Speicherungsketten, die im Speicherzusammenfassungs-Durchgang gleichzeitig berÃ¼cksichtigt werden.HÃ¶chstzahl der Zeichenketten, fÃ¼r die der strlen-Optimierungsdurchgang ZeichenkettenlÃ¤ngen aufzeichnet.HÃ¶chstzahl der Tests, die von modref-Anfragen durchgefÃ¼hrt werden.Maximale Anzahl, wie oft ein bestimmter Bereich wÃ¤hrend des Datenflusses angepasst wird.HÃ¶chstzahl, wie oft ein Befehl geplant werden kÃ¶nnte.Maximal erlaubte Kosten fÃ¼r die Befehlsfolge, die vom RTL-if-Umwandlungs-Durchlauf fÃ¼r eine vorhersagbare Verzweigung erzeugt wird.Maximal erlaubte Kosten fÃ¼r die Befehlsfolge, die vom RTL-if-Umwandlungs-Durchlauf fÃ¼r eine unvorhersagbare Verzweigung erzeugt wird.Maximale StÃ¼cke, die IPA-SRA pro Formalparameter verfolgt, folglich auch die maximale Anzahl von Ersetzungen eines Formalparameters.GrÃ¶ÃŸte Wahrscheinlichkeit des Einsprung-BB der geteilten Region (in Prozent relativ zum Einsprung-BB der Funktion), um teilweises Â»inlineÂ« durchzufÃ¼hren.Maximal erlaubte Rekursionstiefe beim Abfragen von Eigenschaften eines SSA-Namens.Maximal GrÃ¶ÃŸe (in Bytes) der Objekte, die bei der Eliminierung toter Speicherungen byteweise verfolgt werden.MaximalgrÃ¶ÃŸe der als Operanden erlaubten Konstantenwerte in Bytes.Maximale GrÃ¶ÃŸe einer jedem Parameter zugeordneten Liste von Werten fÃ¼r interprozedurale Konstantenweitergabe.Maximale GrÃ¶ÃŸe eines einzelnen Bereichs einer SpeicherzusammenfÃ¼hrung in Bytes.MaximalgrÃ¶ÃŸe einer globalen oder statischen Variable, die in kleine Datenbereiche gelegt wird.Maximale GrÃ¶ÃŸe (in Speichereinheiten) von Aggregaten, die fÃ¼r Skalarisierung erwÃ¤gt werden, wenn auf CodegrÃ¶ÃŸe optimiert wird.Maximale GrÃ¶ÃŸe (in Speichereinheiten) von Aggregaten, die fÃ¼r Skalarisierung erwÃ¤gt werden, wenn auf Geschwindigkeit optimiert wird.HÃ¶chste TeildatensatzlÃ¤nge kann %d nicht Ã¼berschreitenHÃ¶chste unterstÃ¼tzte BezeichnerlÃ¤nge ist %dMaximaler Entrollfaktor fÃ¼r die Â»unroll-and-jamÂ«-Transformation.Memberfunktionen, die innerhalb ihrer Klasse definiert sind, sind im ZustÃ¤ndigkeitsbereich des Moduls inline.Die Speicher-Tagging-Erweiterung unterstÃ¼tzt nicht %<-mabi=ilp32%>Der Speicherbereich %qs bei %L in USES_ALLOCATORS muss ein vordefinierter Speicherbereich seinNebeneinanderliegende Speicheroperationen zusammenfassen.ZustÃ¤nde, die Ã¤hnlich genug sind, wÃ¤hrend der Analyse zusammenfassen.Aufruf des Teilbefehls Â»mergeÂ«:Aufruf des Teilbefehls Â»merge-streamÂ«:Kleinstes VerhÃ¤ltnis von Befehlen zu Speicheroperationen, um Prefetching in einer Schleife einzuschalten.Kleinstes VerhÃ¤ltnis von Befehlen zu Prefetches, um Prefetching fÃ¼r eine Schleife mit unbekannter Frequentierung einzuschalten.Kleinster Abstand zwischen mÃ¶glicherweise in Konflikt stehendem Speichern und Laden.Mindestwahrscheinlichkeit in Prozent fÃ¼r Durchfall-Kanten, damit der BB zu geerbten EBB in LRA hinzugefÃ¼gt wird.Kleinste GrÃ¶ÃŸe einer Partition fÃ¼r Linkzeitoptimierung (in geschÃ¤tzten Befehlen).Minimale Heaperweiterung, die Speicherbereinigung anstÃ¶ÃŸt, als Prozentsatz der GesamtgrÃ¶ÃŸe des Heap.Kleinste HeapgrÃ¶ÃŸe vor Speicherbereinigungsbeginn, in Kilobytes.Die Mindestzahl der Iterationen pro Thread in einer innersten parallelisierten Schleife.MindestseitengrÃ¶ÃŸe fÃ¼r Warnzwecke.Mindestprozentsatz der Memrefs, die fÃ¼r unroll-and-jam verschwinden mÃ¼ssen, damit es profitabel ist.Minimale Wahrscheinlichkeit in Prozent, dass ein Funktionszeiger-Parameter dereferenziert wird, bevor erwogen wird, diesen Funktionszeiger durch einfache Werte zu ersetzen.Unstimmigkeit zwischen Unterprogramm und Funktion bei %LUnvertrÃ¤glichkeit in BIND(C)-Namen (%qs/%qs) bei %CKonflikt in ELEMENTAL-Attribut zwischen MODULE-PROCEDURE bei %L und seiner Schnittstelle in %sKonflikt in formalen Argumentnamen (%s/%s) von MODULE PROCEDURE bei %CKonflikt in PURE-Attribut zwischen MODULE-PROCEDURE bei %L und seiner Schnittstelle in %sKonflikt in RECURSIVE-Attribut zwischen MODULE-PROCEDURE bei %L und seiner Schnittstelle in %sUnstimmigkeit in Komponenten von Typ %qs, der von %qs abgeleitet ist bei %C: %qs erwartet, aber %qs erhaltenKonflikt in Anzahl der formalen Argumente von MODULE PROCEDURE bei %CUnpassende Zuweisung des Prozedurzeigers bei %L: Unpassende AufrufkonventionUnstimmigkeiten zwischen Dateiarchitektur und Â»-archÂ« nicht als Warnungen, sondern als Fehler ansehenIn fortgesetzter Zeichenkonstante bei %C fehlt %<&%>Fehlendes %<(%> in ELSE-IF-Ausdruck bei %CFehlendes %<(%> in IF-Ausdruck bei %CFehlendes %<)%> in ELSE-IF-Ausdruck bei %CArgument %qs des intrinsischen %qs bei %L fÃ¼r %qs des Typs %qs fehltFehlendes %qs-Argument fÃ¼r %qs bei %LFehlendes %qs in Anweisung bei oder vor %LFehlende Â»-mcpuÂ«-Option in ASM_CPU_SPEC?Fehlende INITIALIZER-Klausel fÃ¼r !$OMP DECLARE REDUCTION von abgeleitetem Typ ohne Defaultinitialisierer bei %LFehlendes THEN in ELSE-IF-Anweisung nach %LFehlendes Argument %qs in Aufruf von %qs bei %LFehlendes effektives Argument fÃ¼r Argument %qs bei %LFehlende alternative RÃ¼ckgabespezifikation in Unterprogrammaufruf bei %LFehlende alternative RÃ¼ckgabespezifikation in Unterprogrammaufruf bei %LFehlende Argumentliste in Funktion %qs bei %CFehlendes Argument fÃ¼r %qs bei %CFeldspezifikation bei %L in CODIMENSION-Anweisung fehltFehlende Feldspezifikation bei %L in DIMENSION-AnweisungFehlender Zeichenbereich in IMPLICIT bei %CSchlieÃŸende Klammer fÃ¼r Bindungsmarke bei %C fehltFehlende Kodimensionsangabe bei %CFehlendes Komma bei %LFehlende ZÃ¤hler fÃ¼r aufgerufene Funktion %sFehlende Dimensionsangabe bei %CEntitÃ¤t oder Name eines gemeinsamen Blocks fÃ¼r Attribut-Spezifikationsanweisung bei %C fehltFehlende explizite Deklaration mit EXTERNAL-Attribut fÃ¼r Symbol %qs bei %LFehlender Exponent in Realzahl bei %CFehlende Format-Marke bei %CFehlendes Format mit Standard-Einheit bei %CFehlende allgemeine Spezifikation in USE-Anweisung bei %CFehlendes Element in Formatzeichenkette bei %LFehlender SchlÃ¼sselwortname in effektiver Argumentliste bei %CFehlender Art-Parameter bei %CFehlende Ã¶ffnende Klammer in Formatzeichenkette bei %LFehlende untere Grenze bei der Angabe der angenommenen GrÃ¶ÃŸe des Kofeldes bei %CPositive Breite hinter L-Deskriptor bei %L fehltErforderlicher Modifikator %<target%> und/oder %<targetsync%> bei %C fehltErforderte Klammern vor BIND(C) bei %C fehlenFehlende rechte Klammer bei %CFehlende rechte Klammer oder Komma bei %CFehlendes SymbolProbleme mit AES-Befehlen auf Cortex-A57 und Cortex-A72 umgehen (Arm Erratum #1655431).Probleme mit AES-Befehlen auf Cortex-A57 und Cortex-A72 umgehen (Arm Erratum #1742098).Probleme mit VLLDM auf einigen M-Profil-GerÃ¤ten umgehen (CVE-2021-35465).Modul %qs in Zeile %d, Spalte %d: %sModuldatei %qs wurde nicht generiert, entweder weil das Modul keine MODULE PROCEDURE enthÃ¤lt oder weil es einen Fehler in dem Modul gibt.Modul-Eigenschaft in USE-Anweisung bei %C muss entweder INTRINSIC oder NON_INTRINSIC seinMehr effektive als formale Argumente in Prozeduraufruf bei %LInterner Fehler: More than one edge out of thunk nodeBerechnung der Schleifeninvarianten auÃŸerhalb der Schleifen legen.Speicheroperationen aus Schleifen herausverschieben.Mehrere %qs-Modifizierer bei %C angegebenMehrere Bezeichner mit einzelner Spezifikation NAME= bei %C angegebenMehrere Schleifenachsen fÃ¼r Routine bei %C angegebenName %qs verweist nicht auf eine Unterroutine oder Funktion in !$ACC ROUTINE ( NAME ) bei %LNAME %qs ist in Â»!$ACC ROUTINE ( NAME )Â« bei %L ungÃ¼ltigNAME nicht erlaubt bei BIND(C) fÃ¼r ABSTRACT INTERFACE bei %CSpezifikation NAME= bei %C sollte ein konstanter Ausdruck seinNAME=-Angabe bei %C sollte ein Skalar der Standardzeichenart seinNAMELIST %qs in READ-Anweisung bei %L enthÃ¤lt Symbol %qs, das im Kontext zur Variablendefinition nicht auftreten darfNAMELIST-Feldobjekt %qs mit vermuteter Form in Namensliste %qs bei %LNAMELIST-Feldobjekt %qs ohne konstante Form in Namensliste %qs bei %LNAMELIST-Objekt %qs hat PRIVATE-Komponenten und kann kein Element der PUBLIC-Namensliste %qs bei %L seinNAMELIST-Objekt %qs hat Verwendungs-verbundene PRIVATE-Komponenten und kann kein Element der Namensliste %qs bei %L seinNAMELIST-Objekt %qs in Namensliste %qs bei %L hat ALLOCATABLE- oder POINTER-Komponenten erfordert daher eine definierte Ein-/AusgabeprozedurNAMELIST-Objekt %qs in Namensliste %qs bei %L ist polymorph und erfordert eine definierte Ein-/AusgabeprozedurNAMELIST-Objekt %qs in Namensliste %qs bei %L mit ALLOCATABLE- oder POINTER-KomponentenNAMELIST-Objekt %qs wurde als PRIVATE deklariert und kann kein Element der PUBLIC-Namensliste %qs bei %L seinNAMELIST-Objekt %qs ohne konstante ZeichenlÃ¤nge in Namensliste %qs bei %LNEWUNIT-Spezifizierer bei %LNEWUNIT-Spezifizierer muss FILE= oder STATUS='scratch' bei %L habenNOCONTEXT-Klausel bei %L erfordert einen skalaren LOGICAL-AusdruckPlanungsmodifizierer NONMONOTONIC zusammen mit ORDERED-Klausel bei %L angegebenNON_OVERRIDABLE und DEFERRED kÃ¶nnen nicht gleichzeitig bei %C auftretenNOPASS oder explizite Schnittstelle bei %C erforderlichInterner Fehler: NOTE_INSN_BASIC_BLOCK %d in middle of basic block %dInterner Fehler: NOTE_INSN_BASIC_BLOCK is missing for block %dNOVARIANTS-Klausel bei %L erfordert einen skalaren LOGICAL-AusdruckNOWAIT-Klausel bei %L darf nicht zusammen mit COPYPRIVATE-Klausel verwendet werdenNO_ARG_CHECK-AttributAuf rechter Seite in Zuweisung bei %L tritt NULL aufNULL bei %L ist nicht als tatsÃ¤chliches Argument der intrinsischen Funktion %qs erlaubtintrinsisches NULL mit reservierbarem MOLD bei %LNULL in Arithmetik verwendetNULL() bei %C darf nicht in einem Feld-Konstruktor erscheinenNULL()-Initialisierung bei %C ist mehrdeutigNULL()-Initialisierung bei %C kÃ¶nnte kein MOLD habenNULL() ist nicht interoperabelNULL() in der NÃ¤he von %L darf nicht in einer INQUIRE-Anweisung vorkommenNULLIFY erlaubt keine Neuzuordnung von Grenzen fÃ¼r Zeigerobjekt bei %CUntere Grenze von NUM_TEAMS bei %L ist grÃ¶ÃŸer als die obere Grenze bei %LName %qs bei %C ist bereits als eine allgemeine Schnittstelle bei %L definiertName %qs bei %C ist eine mehrdeutige Referenz auf %qs von aktueller ProgrammeinheitName %qs bei %C ist eine mehrdeutige Referenz auf %qs vom Modul %qsName %qs bei %C ist der Name der ProzedurName %qs in %s-Anweisung bei %C ist kein KonstruktnameName %qs in %s-Anweisung bei %C ist unbekanntName %qs des ABSTRACT INTERFACE bei %C kann nicht der gleiche wie ein intrinsischer Typ seinName hinter Â»!$omp criticalÂ« und Â»!$omp end criticalÂ« passt nicht bei %CName bei %C ist zu langName zu langBenannter COMMON-Block %qs bei %L muss die gleiche GrÃ¶ÃŸe wie anderswo haben (%wu Bytes gegenÃ¼ber %wu Bytes)Benanntes Block-DO bei %L erfordert passenden ENDDO-NamenBenannte Konstante %qs bei %L kann kein EQUIVALENCE-Objekt seinBenannte Konstante %qs in Variablen-Definitionskontext (%s) bei %LBenannte Konstante bei %C in EQUIVALENCENamensliste %qs kann bei %L kein Argument seinNamensliste %qs kann bei %L nicht als Argument fÃ¼r Unterprogramm oder Funktion verwendet werdenGruppenname %qs der Namensliste bei %C hat bereits einen Basistypen von %qsGruppenname %qs der Namensliste bei %C ist bereits USE-verbunden und kann nicht respezifiziert werden.Name der Namenslisten-Gruppe bei %L kann kein SAVE-Attribut habenEntweder EntitÃ¤t oder Name eines gemeinsamen Blocks fÃ¼r Attribut-Spezifikationsanweisung bei %C erforderlichNegation der vorzeichenlosen Konstante bei %L ist nicht erlaubtNegation eines vorzeichenlosen Ausdrucks bei %L ist nicht erlaubtNegatives Argument N bei %LNegativer Exponent der Ganzzahl bei %L ergibt 0 als ErgebnisGeschachtelter CRITICAL-Block bei %CGeschachtelte Trampolin-Funktionen werden auf dem CK801 nicht unterstÃ¼tzt.Interner Fehler: Nice try, but you can't fire me. I quit!In BIND(C) bei %C ist kein bindender Name erlaubtKeine Zweige
  Keine Aufrufe
  Keine Bedingungen
  Kein voreingestelltes crt0.o.Noch keine Beschreibung.Interner Fehler: No edge out of thunk nodeKeine ausfÃ¼hrbaren Zeilen
! Im Strukturkonstruktor bei %2$C wurde keine Initialisierung fÃ¼r allozierbare Komponente %1$qs angegebenIm Strukturkonstruktor bei %2$C wurde keine Initialisierung fÃ¼r Komponente %1$qs angegebenWird nicht mehr unterstÃ¼tzt.Keine Pfadinformationen
! Interner Fehler: No region crossing jump at section boundary in bb %iNicht-CHARACTER-Objekt %qs in Standard-Anweisung CHARACTER EQUIVALENCE bei %LBenutzerdefinierte Nicht-ELEMENTAL-Zuweisung in WHERE bei %LNicht-NUMERIC-Objekt %qs in Standard-Anweisung NUMERIC EQUIVALENCE bei %LNicht-PARAMETER-Symbol %qs bei %L kann nicht implied-shape seinNicht-POINTER in Zeiger-Verbindungskontext (%s) bei %LNicht-RECURSIVE Prozedur %qs bei %L ruft sich mÃ¶glicherweise rekursiv selbst auf. Sollte als RECURSIVE oder mit %<-frecursive%> verwendet werdenNicht-RECURSIVE-Prozedur %qs aus Modul %qs ruft sich mÃ¶glicherweise rekursiv selbst auf, in der Prozedur %qs. Deklarieren Sie die Prozedur als RECURSIVE oder verwenden Sie %<-frecursive%>Nicht-THREADPRIVATE-Objekt %qs in Klausel COPYIN bei %LElement eines Feldes mit vermuteter Form aus Nicht-Schriftzeichen in FORMAT-Markierung bei %LElement eines Feldes mit vermuteter GrÃ¶ÃŸe aus Nicht-Schriftzeichen in FORMAT-Markierung bei %LNicht-Zeichen in FORMAT-Markierung bei %LWeder Zeichen noch Hollerith in FORMAT-Markierung bei %LElement eines Zeigerfeldes aus Nicht-Schriftzeichen in FORMAT-Markierung bei %LNichtkonstante ZeichenlÃ¤nge bei %L in DATA-AnweisungNicht-konstante untere Grenze in Deklaration mit impliziter Form bei %LNicht-Standard-LOGICAL in %s-Marke bei %LObjekt oder Sequenz %s vom Nicht-Standardtyp in EQUIVALENCE-Anweisung bei %L mit Objekten unterschiedlichen TypsNicht-erweiterbarer abgeleiteter Typ %qs bei %L darf nicht ABSTRACT seinNicht-numerisches Zeichen in Anweisungsmarke bei %CNicht-polymorphes Scheinargument von %qs fÃ¼r weitergegebenes Objekt bei %LNichtrechteckige Schleifen aus generierten Schleifen werden nicht unterstÃ¼tztNicht-skalare FINAL-Prozedur bei %L sollte Argument mit vermuteter Form habenIrrelevante Ziffern in %qs-Zahl bei %C, mÃ¶glicherweise falsche KINDNicht-variabler Ausdruck in Variablen-Definitionskontext (%s) bei %LMÃ¶gliche WertÃ¤nderung bei Umwandlung von %qs in %qs bei %LNicht allozierbare Variable darf in intrinsischer Zuweisung bei %L nicht polymorph sein â€“ bitte prÃ¼fen, ob es ein passendes spezifisches Unterprogramm fÃ¼r den Â»=Â«-Operator gibtNicht-Koarray-Komponente %s bei %L des Typs EVENT_TYPE oder mit Subkomponente des Typs EVENT_TYPE muss eine Kodimension haben oder die Subkomponente eines Koarrays sein. (Variablen des Typs %s dÃ¼rfen keine Kodimension haben, da %s bei %L eine Kodimension oder Koarray-Subkomponente hat.)Nicht-Koarray-Komponente %s bei %L des Typs EVENT_TYPE oder mit Subkomponente des Typs EVENT_TYPE muss eine Kodimension haben oder die Subkomponente eines Koarrays sein. (Variablen des Typs %s dÃ¼rfen keine Kodimension haben, da es bereits eine Koarray-Subkomponente gibt.)Nicht-Koarray-Komponente %s bei %L des Typs LOCK_TYPE oder mit Subkomponente des Typs LOCK_TYPE muss eine Kodimension haben oder die Subkomponente eines Koarrays sein. (Variablen des Typs %s dÃ¼rfen keine Kodimension haben, da %s bei %L eine Kodimension oder Koarray-Subkomponente hat.)Nicht-Koarray-Komponente %s bei %L des Typs LOCK_TYPE oder mit Subkomponente des Typs LOCK_TYPE muss eine Kodimension haben oder die Subkomponente eines Koarrays sein. (Variablen des Typs %s dÃ¼rfen keine Kodimension haben, da es bereits eine Koarray-Subkomponente gibt.)Tab-Zeichen bei %C passt nichtUnpassendes Tab-Zeichen in Spalte %d der Zeile %dTab-Zeichen in Format bei %C passt nichtAbschnitt eines nicht konstanten Feldes bei %L in DATA-AnweisungInclude-Verzeichnis %qs ist nicht vorhandenNichtganzzahliger Exponent in einem Initialisierungsausdruck bei %LUnvertrÃ¤gliches Feld-FPTR-Argument fÃ¼r C_F_POINTER bei %L: %sUnvertrÃ¤gliches Feld bei %L als Argument fÃ¼r C_LOC: %sUnvertrÃ¤gliche Prozedur bei %L fÃ¼r C_FUNLOCUnvertrÃ¤glicher Prozedurzeiger bei %L fÃ¼r C_F_PROCPOINTERNichtintrinsische elementare Prozedur %qs ist in Zuweisung des Prozedurzeigers bei %L ungÃ¼ltigNichtnegative Breite in Formatzeichenkette bei %L benÃ¶tigtNichtzeiger-Objekt %qs mit Standard-Initialisierung darf nicht in einer DATA-Anweisung bei %L erscheinenPolymorphes Nicht-Zeiger-Scheinargument nicht zulÃ¤ssig fÃ¼r %qs in %s Ortsangabe bei %LNichtpolymorphe Referenz auf abstrakten Typ bei %CNichtstandard-Umwandlung von %s in %s bei %LNicht-Standard Typ-Deklaration %s*%d bei %CDie Schrittweite bei %L darf nicht 0 seinNicht mit %<--enable-gather-detailed-mem-stats%> konfiguriert.Nicht genug Element in Feldinitialisierung bei %CUnerwartetes TAG.Hinweisen, wenn #include-Direktiven nicht in import-Deklarationen Ã¼bersetzt werden und nicht eindeutig textuell sind.Hinweisen, wenn #include-Direktiven in import-Deklarationen Ã¼bersetzt werden.Pfadname fÃ¼r compilierte Modulschnittstelle eines bestimmten Moduls oder Header-Einheit ausgeben.Pfadnamen fÃ¼r compilierte Modulschnittstellen zur Info ausgeben.Hinweisen, wenn das #include eines bestimmten Headers Ã¼bersetzt wird.Wenn das AuflÃ¶sen von Ãœberladungen nicht eindeutig ist, alle Kandidaten auflisten.Anzahl der Cache-EintrÃ¤ge in der inkrementellen LTO, nach der alte EintrÃ¤ge gelÃ¶scht werden sollen.Anzahl der Partitionen, in die das Programm aufgeteilt werden soll.Anzahl der zur Ãœbergabe von Ganzzahlargumenten verwendeten Register.Numerischer PARAMETER in komplexer Konstante bei %C erforderlichIn Ausdruck bei %L werden numerische Operanden benÃ¶tigtNumerische oder CHARACTER-Operanden benÃ¶tigt in Ausdruck bei %LOLD-Argument der intrinsischen Funktion Â»%sÂ« bei %L muss definierbar seinOMP CRITICAL bei %L mit HINT-Klausel benÃ¶tigt NAME, auÃŸer wenn omp_sync_hint_none verwendet wirdOMP DECLARE TARGET COMMON bei %L wurde vorher in LINK-Klausel und spÃ¤ter in %s-Klausel erwÃ¤hntOMP DECLARE TARGET COMMON bei %L wurde vorher in TO- oder ENTER-Klausel und spÃ¤ter in LINK-Klausel erwÃ¤hntDirektive OMP DECLARE TARGET bei %L mit nur DEVICE_TYPE- oder INDIRECT-Klausel wird ignoriertÂ»OMP DECLARE TARGETÂ«-Variable bei %L ist ein Element eines COMMON-BlocksOMP-DECLARE-TARGET-Variable bei %L wurde vorher in LINK-Klausel und spÃ¤ter in %s-Klausel erwÃ¤hntOMP-DECLARE-TARGET-Variable bei %L wurde vorher in TO- oder ENTER-Klausel und spÃ¤ter in LINK-Klausel erwÃ¤hntOMP TARGET UPDATE bei %L erfordert mindestens eine TO- oder FROM-KlauselOPEN-Anweisung bei %L muss UNIT oder NEWUNIT habenOPEN-Anweisung in PURE-Prozedur bei %C nicht erlaubtOPERATION-Argument bei %L muss eine PURE-Funktion seinAttribut OPTIONAL nicht zulÃ¤ssig fÃ¼r %qs in %s Ortsangabe bei %LOPTIONAL ist in BLOCK bei %C nicht erlaubtORDER bei %L ist keine Permutation der GrÃ¶ÃŸe von SHAPE bei %LORDER-Klausel bei %L darf nicht zusammen mit ORDERED verwendet werdenArgument der ORDERED-Klausel bei %C ist keine konstante positive GanzzahlORDERED-Parameter der Klausel bei %L ist weniger als COLLAPSE%<ORDERED%>-Klausel darf nicht nicht zusammen mit %<inscan%>-REDUCTION-Klausel bei %L verwendet werdenObjekt %qs bei %L ist keine VariableObjekt %qs bei %L ist keine Variable; Parameter kÃ¶nnen nicht kopiert werden und brauchen das auch nichtObjekt %qs bei %L ist keine Variable; Parameter kÃ¶nnen nicht zugeordnet werden und brauchen das auch nichtObjective-C-Deklarationen dÃ¼rfen nur im globalen GÃ¼ltigkeitsbereich erscheinenVeraltete Funktion:Veraltet; verwenden Sie GCN_STACK_SIZE zur Laufzeit.Ausgelagertes Werkzeug, um mit gcda-ZÃ¤hler zu arbeiten
  
! ZeichenlÃ¤nge alten Stils bei %CInitialisierung im alten Stil bei %CDeklaration %s*%d im alten Stil wird bei %C nicht unterstÃ¼tztRahmenzeiger fÃ¼r Blattfunktionen auslassen.Schritt zur Bereichsverkleinerung auslassen, wenn komplexe Division durchgefÃ¼hrt wird.Rahmenzeiger in Blattfunktionen auslassen.Eins der tatsÃ¤chlichen Argumente in INITIALIZER-Klausel von !$OMP DECLARE REDUCTION bei %L muss OMP_PRIV seinNur DEFAULT ist als Reduktionsmodifizierer erlaubt, in der REDUCTION-Klausel bei %LFÃ¼r den abgeleiteten Typ %qs, der bei %L definiert ist, sind ausschlieÃŸlich Array-FINAL-Prozeduren deklariert. Empfohlen ist auch eine skalare, es sei denn, ein Finalisierer mit angenommenem Rang wurde deklariertNur die Schnittstelle des compilierten Moduls (CMI) ausgeben.Absolute Auslagerungen nur bei Werten mit WordgrÃ¶ÃŸen erzeugen.Nur intrinsische Operatoren kÃ¶nnen in Ausdruck bei %L verwendet werdenNur einen Befehl pro Taktzyklus ausgeben.Nur eines von TEAM= oder TEAM_NUMBER= darf in einer Koarray-Referenz bei %C erscheinenNur fÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤t erhalten.Nur die Form !$ACC ROUTINE ohne Liste ist im Schnittstellenblock bei %C erlaubtNur die Form !$OMP DECLARE TARGET ohne Klauseln ist im Schnittstellenblock bei %C erlaubtNur 32 FPRs verwenden.Nur 32 GPRs verwenden.OpenACC-Konstrukt innerhalb einer Nicht-OpenACC-RegionOpenACC-Direktive innerhalb von CRITICAL-Block bei %COpenACC-Direktiven auÃŸer ROUTINE dÃ¼rfen in PURE-Prozeduren nicht vorkommen, bei %COpenACC-Schleifendirektive muss mit einer OpenACC-Berechnungsregion verknÃ¼pft seinOpenACC-Region innerhalb einer OpenACC-Routine, geschachtelter Parallelismus wird noch nicht unterstÃ¼tztOpenMP-Attribut %<omp::decl%> an einer AnweisungOpenMP-%<requires%>-Direktive mit %qs ist nur in einigen Ãœbersetzungseinheiten angegebenOpenMP-%<requires%>-Direktive mit unterschiedlichen Klauseln in mehreren Ãœbersetzungseinheiten: %qs gegenÃ¼ber %qsOpenMP ERROR-Direktive bei %L mit %<at(execution)%>-Klausel in einer PURE-ProzedurOpenMP-Konstrukt inmitten der %<omp::directive%>-Attribute erfordert, dass alle %<omp::directive%>-Attribute derselben Anweisung in derselben %<omp::sequence%> liegenOpenMP-Konstrukte sind in der Zielregion mit %<ancestor%> nicht erlaubtOpenMP-Konstrukte auÃŸer %<ordered simd%>, %<simd%>, %<loop%> oder %<atomic%> dÃ¼rfen nicht innerhalb von %<simd%>-Regionen geschachtelt seinOpenMP-Konstrukte auÃŸer %<parallel%>, %<loop%> oder %<simd%> dÃ¼rfen nicht in einer %<loop%>-Region geschachtelt seinOpenMP-Konstrukte auÃŸer %<parallel%>, %<loop%> oder %<simd%> dÃ¼rfen nicht innerhalb einer Region mit %<order(concurrent)%>-Klausel geschachtelt seinOpenMP-Direktive bei %C ist nicht rein und darf daher nicht in einer PURE-Prozedur erscheineneine andere OpenMP-Direktive als %<declare simd%> oder %<declare variant%> gehÃ¶rt zu einer DeklarationOpenMP-Direktiven dÃ¼rfen nicht in %<constexpr%>-Funktionen vorkommenAufruf der OpenMP-Laufzeit-API %qD in einer Region mit %<device(ancestor)%>-KlauselAufruf der OpenMP-Laufzeit-API %qD in einer Region mit %<order(concurrent)%>-KlauselOpenMP-Laufzeit-API-Aufruf %qD streng in einer %<teams%>-Region verschachteltOperand des Operators .not. bei %L ist %sOperand des unÃ¤ren numerischen Operators %qs bei %L ist %sOperand des Benutzeroperators %qs bei %L ist %sOperanden bei %L und %L kÃ¶nnen nicht als Operanden des binÃ¤ren Operators %qs verwendet werdenOperanden des binÃ¤ren numerischen Operators %qs bei %L sind %s/%sOperanden des Vergleichsoperators %qs bei %L sind %s/%sOperanden des logischen Operators %qs bei %L sind %s/%sOperanden des Zeichenkettenverkettungsoperators bei %L sind %s/%sOperanden des Benutzeroperators %qs bei %L sind %s/%sOperatorschnittstelle bei %L steht mit intrinsischer Schnittstelle in KonfliktOperatorschnittstelle bei %L hat falsche ArgumentanzahlOperatorschnittstelle bei %L darf hÃ¶chstens zwei Argumente habenOptimierung. Ausgehende Funktionsargumente sammeln und den nÃ¶tigen Stapelspeicher fÃ¼r ausgehende Argumente im Prolog/Epilog der Funktion reservieren/freigeben. Ohne diese Option werden ausgehende Argumente auf den Stapel geschoben und hinter zurÃ¼ckgeholt. Diese Option kann fÃ¼r Funktionen, die viele Funktionen mit ArgumentÃ¼bergabe Ã¼ber den Stapel aufrufen, z.B. printf, zu kleinerem Code fÃ¼hren.Optimierung. Die Verwendung von nonzero_bits() in einigen Befehlsbedingungen erlauben.Optimierung. Verwendung von __gcc_isr-Pseudobefehlen in ISR-Prologen und -Epilogen erlauben.Optimierung. Zweige entspannen.Optimieren. Einen Post-Reload-Durchlauf ausfÃ¼hren, der die Kopierbefehle optimiert.Optimierung. Aufteilung der meisten Lade- und Speicherbefehle in Byte-Laden und -Speichern.Optimierung. Registeradditionen von Lade-/Speicheranweisungen trennen. Am nÃ¼tzlichsten bei Reduced Tiny.Optimieren. Aufteilung von Verschiebungen von 4-Byte-Werten in eine Byte-Verschiebung und eine Restbit-Verschiebung.Optimierung. Â»mainÂ« so behandeln, als hÃ¤tte sie das Attribut OS_task.Optimierung. FÃ¼r Funktionsprologe und -epiloge Unterprogramme verwenden.Optimierung. Bei RAM-Zugriff X wie durch Hardware vorgegeben verwenden, d.h. Pre-Dekrement, Post-Inkrement und indirekte Adressierung mit dem X-Register. Ohne diese Option nimmt der Compiler an, dass es einen Adressierungsmodus X+const, Ã¤hnlich zu Y+const und Z+const gibt und erzeugt Befehle, die diesen Adressierungsmodus fÃ¼r X emulieren.Anzahl der stdarg-Register optimieren, die am Anfang einer Funktion auf dem Stapel gespeichert werden.Bedingte AusdrÃ¼cke mittels SSA-PHI-Knoten optimieren.FÃ¼r CPU optimieren.Auf FehlersuchmÃ¶glichkeiten statt Geschwindigkeit oder GrÃ¶ÃŸe optimieren.Aggressiv auf GrÃ¶ÃŸe statt Geschwindigkeit optimieren.Auf GrÃ¶ÃŸe statt Geschwindigkeit optimieren.Auf Geschwindigkeit optimieren, unter Missachtung genauer StandardkonformitÃ¤t.Code fÃ¼r Rahmenkopf optimieren.Induktionsvariablen auf BÃ¤umen optimieren.lui/addiu-Adressladebefehle optimieren.Noreturn-Funktionen optimieren, indem die callee-saved-Register nicht gespeichert werden.OpcodegrÃ¶ÃŸen zur Linkzeit optimieren.Partitionsneutralisierung optimieren.Geschwister- und endrekursive Aufrufe optimieren.Ende-Aufruf-Befehle in Assembler und Binder optimieren.Option %<-fallow-leading-underscore%> ist nur fÃ¼r gfortran-Entwickler gedacht und sollte nicht fÃ¼r implizit getypte Variable verwendet werdenOptionen fÃ¼r %<-Xassembler%> passen nicht zueinander: %s, %s; alle Optionen der Form %<-Xassembler%> und %<-Wa%> werden verworfen.Optionen:
  AuÃŸerhalb des Wertebereichs in IMAGE_INDEX bei %L fÃ¼r Dimension %d, SUB hat %ld und untere Grenze fÃ¼r COARRAY ist %ldAuÃŸerhalb des Wertebereichs in IMAGE_INDEX bei %L fÃ¼r Dimension %d, SUB hat %ld und obere Grenze fÃ¼r COARRAY ist %ldStapelspeicher aufgebraucht.
! .debug_types-Abschnitt ausgeben, wenn DWARF v4-Debuginfo verwendet wird.Information Ã¼ber Aufrufgraphen auf Dateibasis mit Dekoration ausgeben.Information Ã¼ber Aufrufgraphen auf Dateibasis ausgeben.LTO-Objekte ausgeben, die sowohl Zwischensprache als auch BinÃ¤rausgabe enthalten.Information Ã¼ber Stapelverwendung auf Funktionsbasis ausgeben.VerifikationszÃ¤hler fÃ¼r VTables ausgeben.Informationen Ã¼ber Zeigermengen der VTable-Verifikation ausgeben.Aufruf des Teilbefehls Â»overlapÂ«:Ãœberlappende ungleiche Initialisierungen in EQUIVALENCE bei %CÃœberlappende ungleiche Initialisierungen in EQUIVALENCE bei %L-mbest-lib-options Ã¼berschreiben.P-Deskriptor benÃ¶tigt fÃ¼hrenden Skalierungsfaktor in Formatzeichenkette bei %LPAD= bei %L ist in Fortran 95 nicht erlaubtPARAMETER %qs wird bei %L verwendet, bevor dessen Definition vollstÃ¤ndig istPARAMETER %qs darf nicht in einer DATA-Anweisung bei %C vorkommenFehlende Initialisierung fÃ¼r PARAMETER bei %LPARAMETER-Symbol in komplexer Konstante bei %CPARAMETER ohne Â»()Â« bei %CArgument der PARTIAL-Klausel bei %C ist keine konstante positive GanzzahlPAUSE-Anweisung bei %CLadebefehle relativ zum PC.PCH-AlloziierungsfehlerPCH-Speicher nicht verfÃ¼gbar: %mPCS-VariantePDP11-Bitfeld-Verarbeitung wird in %qs nicht unterstÃ¼tztPHI-Argument fehlt fÃ¼r Kante %d->%dPHI-Argument ist kein SSA_NAME, oder invariantPHI-Argument an unnormaler Kante ist nicht SSA_NAMEPHI node with locationPHI node with wrong VUSE on edge from BB %dPIC-Codeerzeugung ist mit schnellen indirekten Aufrufen unvertrÃ¤glichPIC-Codeerzeugung wird im portierbaren Laufzeitmodell nicht unterstÃ¼tztPIC wird fÃ¼r %qs nicht unterstÃ¼tztPIC wird nur fÃ¼r RTPs unterstÃ¼tztPIC wird benÃ¶tigt, wird aber nicht mit CONST16-Befehlen unterstÃ¼tztPIC-Register durch %qs in %<asm%> zerstÃ¶rtPOINTER-Attribut ist fÃ¼r Prozedurzeiger-Komponente bei %C erforderlichPOINTER-Objekt %qs in Klausel %s bei %LPOINTER-Objekt %qs von polymorphem Typ in Klausel %s bei %LPOINTER-wertige Funktion tritt auf rechter Seite der Zuweisung bei %L aufPOS-Argument (%ld) auÃŸerhalb des Bereichs 0:%ld in intrinsischem Â»%sÂ«POS-Argument (%ld) auÃŸerhalb des Bereichs 0:%ld in intrinsischem BTESTPOS-Argument (%ld) auÃŸerhalb des Bereichs 0:%ld in intrinsischem IBITSPOS(%ld)+LEN(%ld)>BIT_SIZE(%ld) in intrinsischem IBITSPOSITION-Angabe in OPEN-Anweisung bei %L ist nur fÃ¼r Datenstrom-ACCESS oder fÃ¼r sequentiellen ACCESS erlaubtInterner Fehler: PR100400PRE ausgeschaltetPRINT-Namensliste bei %C ist eine ErweiterungPRINT-Anweisung bei %C innerhalb PURE-Prozedur nicht erlaubtPRINT_OPERAND, ungÃ¼ltiger Befehl fÃ¼r %%CPRINT_OPERAND, ungÃ¼ltiger Befehl fÃ¼r %%NPRIVATE-Anweisung bei %C ist nur in Spezifikationsteil eines Moduls erlaubtPRIVATE-Anweisung bei %C muss Prozedurbindungen vorausgehenPRIVATE-Anweisung bei %C muss Strukturkomponenten vorausgehenPRIVATE-Anweisung in TYPE bei %C muss innerhalb eines MODULEs seinPROCEDURE %qs bei %L darf nicht als ihre eigene Schnittstelle verwendet werdenPROCEDURE bei %C muss in einer allgemeinen Schnittstelle seinAttribut PROCEDURE steht mit Attribut INTENT in %qs bei %L in KonfliktAttribut PROCEDURE steht mit Attribut NAMELIST in %qs bei %L in KonfliktAttribut PROCEDURE steht mit Attribut PROTECTED bei %L in KonfliktAttribut PROCEDURE steht mit Attribut RESULT in %qs bei %L in KonfliktAttribut PROCEDURE steht mit Attribut SAVE in %qs bei %L in KonfliktPROCEDURE-Liste bei %CPROCEDURE-Anweisung bei %CPROCEDURE(Schnittstelle) bei %C sollte als DEFERRED deklariert seinPROTECTED bei %C nur in Spezifikationsabschnitts eines Moduls erlaubtPROTECTED-Attribut bei %CAttribut PROTECTED steht mit Attribut EXTERNAL bei %L in KonfliktPROTECTED-Anweisung bei %CPTX unterstÃ¼tzt keine schwachen Deklarationen (nur schwache Definitionen)PTX-Version %<-mptx%> muss mindestens %s sein, um die ausgewÃ¤hlte %<-misa%> (sm_%s) zu unterstÃ¼tzenPUBLIC %s %qs bei %L mit abgeleitetem PRIVATE-Typen %qsPUBLIC-Funktion %qs bei %L mit PRIVATE-Typ %qsPUBLIC-Anweisung bei %C ist nur in Spezifikationsteil eines Moduls erlaubtPURE und IMPURE dÃ¼rfen bei %C nicht gleichzeitig stehenPURE-PrÃ¤fix fehlt in MODULE-PROCEDURE-Schnittstelle bei %LVLIW-Befehle packen.Strukturelemente ohne LÃ¼cken zusammenpacken.KÃ¼rzere feste Formularzeilen mit Leerzeichen auf Zeilenbreite auffÃ¼llen.AuffÃ¼llen mit %d Bytes vor %qs in COMMON %qs bei %L erforderlich; bitte Elemente umordnen oder %<-fno-align-commons%> verwendenAuffÃ¼llen mit %d Bytes vor %qs in COMMON bei %L erforderlich; bitte Elemente umordnen oder %<-fno-align-commons%> verwendenParameter, mit dem gesteuert wird, welche RÃ¼ckschreibegelegenheiten im Load/Store-Paar-Fusionsdurchlauf behandelt werden sollen. Der Wert 0 deaktiviert die RÃ¼ckschreibebehandlung. Der Wert 1 versucht Paare zu bilden, die nach MÃ¶glichkeit einen oder mehrere bestehende individuelle RÃ¼ckschreibzugriffe beinhalten. Der Wert 2 versucht opportunistisch RÃ¼ckschreibgelegenheiten zu bilden, indem nachlaufende destruktive Aktualisierungen des von einem Paar verwendeten Basisregisters einklappen.Parameter %qs bei %L wurde nicht deklariert oder ist eine Variable, die nicht zu konstantem Ausdruck reduziertParameterfeld %qs bei %L kann nicht automatische oder vermutete Form habenDer parametrisierte abgeleitete Typ bei %C ist mehrdeutigParametrisierter Typ %1$qs hat bei %3$L keine Komponente, die zu Parameter %2$qs gehÃ¶rtOption -EB an den Linker Ã¼bergeben.Option -EL an den Linker Ã¼bergeben.Option -marclinux an den Linker Ã¼bergeben.Option -marclinux_prof an den Linker Ã¼bergeben.Die Option -mrelax oder -mno-relax an den Assembler Ã¼bergeben.Â»-z textÂ« an den Linker Ã¼bergeben.Adresse der RA-Speicherstelle an _mcount in $12 Ã¼bergeben.Weitergegebenes Objekt bei %L muss Skalar seinScheinargument des Ã¼bergebenen Objektes von %qs bei %L muss an der gleichen Stelle wie das Scheinargument des Ã¼bergebenen Objektes der Ã¼berschriebenen Prozedur stehenScheinargument von %qs fÃ¼r weitergegebenes Objekt bei %L muss ein Skalar seinScheinargument von %qs fÃ¼r weitergegebenes Objekt bei %L darf nicht ALLOCATABLE seinScheinargument von %qs fÃ¼r weitergegebenes Objekt bei %L darf nicht POINTER seinGibt an den Assembler eine Anforderung weiter, damit dieser diverse Chipfehler umgeht.Gibt an den Assembler eine Anforderung weiter, damit dieser bei diversen Chipfehlern warnt.Koarray bei %L wird an reservierbares, Nicht-Coarray-Scheinargument %qs Ã¼bergeben, das ungÃ¼ltig wird, wenn der Reservierungsstatus geÃ¤ndert wirdKoarray bei %L wird an reservierbares, Nicht-Coarray, INTENT(OUT) Scheinargument %qs Ã¼bergebenÃœbergabe der globalen Funktion %qs, die bei %L deklariert wurde, als Unterroutine bei %LÃœbergabe des globalen Unterprogramms %qs, das bei %L deklariert wurde, als Funktion bei %LÃœbergabe der eingebauten Prozedur Ã¼ber die Speicherstelle ist bei %L nicht erlaubtDas Ãœbergeben des eingebauten NULL als tatsÃ¤chliches Argument bei %L erfordert eine explizite SchnittstellePfad zu Headerdatei, die vor jeder Ãœbersetzungseinheit eingebunden wird.Prozentuale Strafe fÃ¼r Funktionen, die nur einen einzigen Aufruf einer anderen Funktion enthalten, wenn sie zum Klonen evaluiert werden.Prozentuale Strafe fÃ¼r rekursive Funktionen, wenn sie zum Klonen evaluiert werden.Informationen Ã¼ber IPA-Wertebereiche weitergeben.Identischen Code fÃ¼r Funktionen und schreibgeschÃ¼tzte Variablen zusammenfassen.Identischen Code fÃ¼r Funktionen zusammenfassen.Identischen Code fÃ¼r Variablen zusammenfassen.SMS-basierte modulo-Planung vor erstem Planungsdurchlauf durchfÃ¼hren.SMS-basierte modulo-Planung mit erlaubten Register-Verschiebungen durchfÃ¼hren.VR4130-spezifische Ausrichtungs-Optimierungen durchfÃ¼hren.Wertebereichsweitergabe auf BÃ¤umen durchfÃ¼hren.Schritt zur VorwÃ¤rts-Ãœbertragung auf RTL durchfÃ¼hren.Eine Reihe kleiner, aber teurer, Optimierungen durchfÃ¼hren.Optimierungsdurchlauf zur KopierÃ¼bertragung von Registern durchfÃ¼hren.Einen Optimierungsdurchgang zur Registerumbenennung durchfÃ¼hren.Einen zielabhÃ¤ngigen Optimierungsdurchgang zur Befehlsfusion durchfÃ¼hren.Kopien erzeugen, um zwischenprozedurale Konstantenweitergabe zu verstÃ¤rken.Beseitigung von Vergleichen nach Registerreservierung durchfÃ¼hren.Umwandlung bedingter SprÃ¼nge in zweiglose Ã„quivalente durchfÃ¼hren.Umwandlung bedingter SprÃ¼nge in bedingte AusfÃ¼hrung durchfÃ¼hren.Umwandlungen von Â»switchÂ«-Initialisierungen durchfÃ¼hren.Optimierung zum Kreuzsprung durchfÃ¼hren.Totem Code bei Null- und Vorzeichenerweiterungen mittels spezieller Datenflussanalyse durchfÃ¼hren.FrÃ¼hes Inlining durchfÃ¼hren.Erweiterte Ladebewegung wÃ¤hrend Beseitigung globaler gemeinsamer TeilausdrÃ¼cke durchfÃ¼hren.Funktionslokale Analyse von Zeigerzielen auf BÃ¤umen durchfÃ¼hren.Beseitigung globaler gemeinsamer TeilausdrÃ¼cke nach Registerreservierung durchfÃ¼hren.Beseitigung globaler gemeinsamer TeilausdrÃ¼cke durchfÃ¼hren.Indirektes Inlining durchfÃ¼hren.Interne KonsistenzprÃ¼fungen durchfÃ¼hren.Zwischenprozedurale bitweise Konstantenweitergabe durchfÃ¼hren.Zwischenprozedurale Konstantenweitergabe durchfÃ¼hren.ProzedurÃ¼bergreifende modref-Analyse durchfÃ¼hren.Zwischenprozedurale Zeigt-auf-Analyse durchfÃ¼hren.Zwischenprozedurale Profilweitergabe durchfÃ¼hren.Zwischenprozedurale Reduktion von Aggregaten durchfÃ¼hren.Sprung-Threading-Optimierungen durchfÃ¼hren.Lebensdaueraufteilung wÃ¤hrend des Â»SSA -> NormalÂ«-Durchlaufs durchfÃ¼hren.Schleifen-SchÃ¤lung durchfÃ¼hren.Schleifen-Aufteilung durchfÃ¼hren.Schleifenabwicklung fÃ¼r alle Schleifen durchfÃ¼hren.Schleifenabwicklung durchfÃ¼hren, wenn Anzahl der Wiederholungen bekannt ist.Schleifenausschaltung durchfÃ¼hren.Teilweises Inlining durchfÃ¼hren.Beseitigung Ã¼berflÃ¼ssigen Ladens nach dem Abspeichern in globalem gemeinsamem Teilausdruck durchfÃ¼hren.Funktionen neuordnen und klonen, um die LokalitÃ¤t zu maximieren.Skalarersetzung von Aggregaten durchfÃ¼hren.WÃ¤hrend selektiver Planung Software-Pipelining innerer Schleifen durchfÃ¼hren.WÃ¤hrend selektiver Planung Software-Pipelining Ã¤uÃŸerer Schleifen durchfÃ¼hren.Spekulative Devirtualisierung durchfÃ¼hren.Speicherbewegung nach Beseitigung globaler gemeinsamer TeilausdrÃ¼cke durchfÃ¼hren.Geradlinige StÃ¤rkereduktion durchfÃ¼hren.Superblockerzeugung Ã¼ber Ende-VervielfÃ¤ltigung durchfÃ¼hren.Schleifenabwicklung (unroll-and-jam) fÃ¼r Schleifen durchfÃ¼hren.Ungenutzte Symbole aus Info zur Fehlersuche entfernen.Ungenutzte Typen aus Info zur Fehlersuche entfernen.Variablenverfolgung durchfÃ¼hren und auch Variablen markieren, die uninitialisiert sind.Variablenverfolgung durch Zuweisungsanmerkungen durchfÃ¼hren.Variablenverfolgung durchfÃ¼hren.Gesamtprogrammoptimierung durchfÃ¼hren.Formatspezifikation %s bei %L erfordert PunktFormatspezifikation bei %L erfordert PunktFormatspezifikation benÃ¶tigt Punkt in Formatzeichenkette bei %LÂ»$Â« als Bezeichnerzeichen zulassen.Unpassende Verwendungen des TAB-Zeichens erlauben.Planung einer Sequenz fÃ¼r Funktionsprolog und -epilog erlauben.Planung einer Funktionsprologsequenz erlauben.Planung von Funktionsprolog- und -epilogsequenzen erlauben.Universelle Zeichennamen (\u und \U) in Bezeichnern zulassen.Bei Planung ein Stopp-Bit nach jedem Takt einfÃ¼gen.DatenstÃ¼cke in ihren eigenen Abschnitt legen.Jede Funktion in ihren eigenen Abschnitt platzieren.Gleitkommakonstanten ins TOC legen.Symbol+Offset-Konstanten ins TOC legen.Bitte fÃ¼gen Sie jedem Fehlerbericht die vollstÃ¤ndige Aufrufkette bei.
  Bitte senden Sie einen vollstÃ¤ndigen Fehlerbericht auf Englisch ein;
! inclusive vorverarbeitetem Quellcode (siehe -freport-bug).
  Bitte senden Sie einen vollstÃ¤ndigen Fehlerbericht auf Englisch ein;
  inclusive vorverarbeitetem Quellcode.
! PluginsZeigerfeld-Komponente der Struktur bei %C muss eine aufgeschobene Form habenZiel der Zeigerzuweisung bei %L hat VektorindexZeiger-Zuweisungsziel darf keine Konstante sein bei %LZeiger-Zuweisungsziel hat PROTECTED-Attribut bei %LZiel der Zeigerzuweisung in Initialisierungsausdruck bei %L muss das TARGET-Attribut habenZeiger-Zuweisungsziel bei %L ist weder TARGET noch POINTERZeiger-Zuweisungsziel ist kein POINTER bei %LZeigerzuweisung mit Vektorindex fÃ¼r rhs bei %LZeiger bei %L in Zeigerzuweisung kÃ¶nnte Zeigerziel Ã¼berdauernDas Zeichenzeiger-Dummy-Argument %qs bei %L muss eine verzÃ¶gerte LÃ¤nge haben, da die Prozedur %qs BIND(C) istZeigerkomponente %s bei %L hat eine Subkomponente als Nicht-Koarray des Type EVENT_TYPE, die eine Kodimension haben muss oder eine Subkomponente eines Koarrays sein mussZeigerkomponente %s bei %L hat eine Subkomponente als Nicht-Koarray des Type LOCK_TYPE, die eine Kodimension haben muss oder eine Subkomponente eines Koarrays sein mussZeigerinitialisierung bei %C benÃ¶tigt %<=>%>, nicht %<=%>Ziel der Zeigerinitialisierung bei %L muss das SAVE-Attribut habenZiel der Zeigerinitialisierung bei %L muss das TARGET-Attribut habenZiel der Zeigerinitialisierung bei %L darf nicht ALLOCATABLE seinZeigerobjekt bei %C darf nicht koindiziert seinZeigerobjekt bei %L darf keinen Koindex habenZuweisung eines Prozedurzeigers bei %LZeigerfeld als effektives Argument bei %L erfordert wegen VOLATILE-Attribut ein Scheinargument %qs mit vermuteter Form oder als ZeigerfeldZeiger sind 32 Bit.Zeiger sind 64 Bit.MÃ¶gliche Richtlinien fÃ¼r Â»-mcompact-branches=Â«:Polymorpher FPTR bei %L fÃ¼r C_F_POINTERPolymorphe Komponente %s bei %L in SEQUENCE oder BIND(C)-Typ %sPolymorphes Listenelement %qs bei %L in %s-Klausel hat unspezifiziertes Verhalten und wird nicht unterstÃ¼tztPolymorphes Skalar wird an Feld-Scheinargument %qs bei %L Ã¼bergebenPolymorphes Subobjekt des koindizierten Objektes bei %LPositive Exponentenbreite benÃ¶tigt in Formatzeichenkette bei %LPositive Breite in Formatspezifizierung %s bei %L erforderlichPositive Breite in Formatzeichenkette bei %L benÃ¶tigtT-Deskriptor benÃ¶tigt positive Breite in Formatzeichenkette bei %LMÃ¶gliche WertÃ¤nderung bei Umwandlung von %s in %s bei %LMÃ¶glicherweise stimmt die ZeichenlÃ¤nge im Funktionsergebnis zwischen %L und %L nicht Ã¼bereinVordefinierter Allokator in ALLOCATOR-Klausel bei %L erforderlich, da das Listenelement %<%s%s%s%> bei %L das Attribut SAVE hatZweige gegenÃ¼ber bedingter AusfÃ¼hrung bevorzugen.Wortzugriffe bevorzugen (statt Bytezugriffen).Vorzugsweise Register reservieren, die kurze Befehle ermÃ¶glichen.Aufrufen von memcpy, memset und memmove ein __asan_ oder __hwasan_ voranstellen, fÃ¼r -fsanitize=kernel-address oder -fsanitize=kernel-hwaddress.Globalen Symbolen ein Â»:Â« voranstellen (fÃ¼r Verwendung mit PREFIX).Nur Direktiven vorverarbeiten.Vorverarbeiten, Kompilieren oder Binden mit der angegebenen C-Laufzeit-DLL-Bibliothek.Vorverarbeiteter Quellcode wurde in Datei %s gespeichert, bitte hÃ¤ngen Sie die an Ihren Fehlerbericht an.
! Bindestapel des PowerPC 476 durch Anpassen eines blr an bcl/bl-Befehle fÃ¼r GOT-Zugriffe beibehalten.Vorgeben, dass branch-around-a-move ein bedingter Sprung ist.Verhindern, dass $fp wÃ¤hrend der Registerallozierung alloziert wird, so dass der Compiler die FP-als-GP-Optimierung durchfÃ¼hren kann.Die Optimierung von Blockkopieraktionen verhindern, was auch das Standardverhalten von -Os ist.Verwendung aller Gleitkommaoperationen verhindern.Verwendung aller Hardware-Gleitkommabefehle verhindern.Vorherige !$OMP DECLARE REDUCTION bei %LVorherige !$OMP DECLARE REDUCTION von Modul %s bei %LErfasste PrimÃ¤rpfade:%s von %d
  CPU-Feinabstimmung als Kommentar in Assemblerdatei ausgeben. Diese Option wird nur fÃ¼r Regressionstest des Compilers verwendet und ist nicht fÃ¼r den normalen Betrieb vorgesehen.CWE-Identifikatoren fÃ¼r Diagnosemeldungen ausgeben, sofern verfÃ¼gbar.Alle Regeln, die mit Meldungen verbunden sind, ausgeben.Information zur Code-Ãœberdeckung ausgeben.
  
  ZusÃ¤tzliche (mÃ¶glicherweise ungewollte) Warnungen ausgeben.Behebungshinweise in maschinenlesbarer Form ausgeben.Behebungshinweise in vereinheitlichtem Diff-Format auf stderr ausgeben.Hierarchische Vergleiche ausgeben, wenn die Templatetypen nicht zusammenpassen.Den Initialwert der Variablen ausgeben.Namen der Header-Dateien ausgeben, wie sie verwendet werden.Wahrscheinlichkeit, dass die COMDAT-Funktion mit anderer Kompilationseinheit geteilt wird.Wahrscheinliche Ursache: Es wurde darauf verwiesen, ist aber nicht definiert.Prozedur %qs bei %C hat eine explizite Schnittstelle aus einer vorherigen DeklarationProzedur %qs bei %C wurde bereits bei %L definiertProzedur %qs bei %L hat bereits grundlegenden Typen %sProzedur %qs bei %L hat den gleichen Namen wie eine Komponente von %qsProzedur %qs bei %L hat den selben Namen wie eine vererbte Komponente von %qsProzedur %qs bei %L kann nicht grundlegenden Typen %s habenProzedur %qs bei %L muss das BIND(C)-Attribut haben, um mit C interoperabel zu seinProzedur %qs, die bei %L aufgerufen wird, ist nicht explizit deklariertProzedur %qs, die bei %L aufgerufen wird, ist nicht explizit deklariert; meinen Sie %qs?Prozedur %qs mit einer impliziten Schnittstelle bei %L aufgerufenDie Prozedur %qs, die im Interface-KÃ¶rper bei %L definiert ist, passt nicht zu der internen Prozedur bei %CProzedur %qs in %s bei %L hat keine explizite SchnittstelleProzedur %qs in %s bei %L hat keine explizite Schnittstelle; meinen Sie %qs?Prozedur %qs in %s bei %L ist weder Funktion noch SubroutineProzedur %qs in %s bei %L ist weder Funktion noch Subroutine; meinen Sie %qs?Prozedur %qs in PUBLIC-Schnittstelle %qs bei %L nimmt Scheinargumente von %qs, das PRIVATE istProzedur %qs mit PASS bei %L muss mindestens ein Argument habenProzedur %qs mit PASS(%s) bei %L hat kein Argument %qsProzedur %1$qs bei %3$L mit Binde-Marke %2$qs verwenden denselben globalen Bezeichner wie die EntitÃ¤t bei %4$LProzedurargument bei %L ist lokal fÃ¼r PURE-Prozedur und hat das POINTER-AttributProzedurzeiger %qs bei %L darf nicht ELEMENTAL seinProzedurzeiger %qs in %s-Klausel bei %LProzedurzeiger %qs nicht unterstÃ¼tzt mit !$OMP ALLOCATE bei %LProzedur-Zeiger bei %CKomponente %qs des Prozedurzeigers bei %L kann kein Element des BIND(C)-abgeleiteten Typs %qs bei %L seinProzedurzeiger-Komponente %qs mit einer impliziten Schnittstelle bei %L aufgerufenProzedurzeiger-Komponente %qs erfordert eine Argumentliste bei %CProzedurzeiger-Komponente %qs mit PASS bei %L muss mindestens ein Argument habenProzedurzeiger-Komponente %qs mit PASS(%s) bei %L hat kein Argument %qsProzedurzeiger-Komponente bei %CZiel der Zeigerinitialisierung fÃ¼r Prozedur bei %L darf kein Prozedurzeiger seinDem Ergebnis %qs als Prozedurzeiger bei %L fehlt das POINTER-AttributProzedurzeigerziel %qs bei %L muss entweder eine intrinsische Funktion, host- oder use-assoziiert oder referenziert sein, oder aber das EXTERNAL-Attribut habenProzedur als Argument unerwartet#ident-Direktiven verarbeiten.Alle in der Kommandozeile angegebenen Module verarbeiten, aber den Code nur fÃ¼r das im Argument angegebene Modul generieren.Spezifikation (%s, ist Â»%sÂ«) wird verarbeitet
! Einen Mach-O-Dylinker (Dateityp MH_DYLINKER) generieren. Wird nur verwendet, um dyld zu bauen.Eine gemeinsam genutzte Mach-O-Bibliothek (Dateityp MH_DYLIB) generieren, Synonym fÃ¼r Â»-sharedÂ«.Backtrace erzeugen, wenn Laufzeitfehler auftritt.Warnung zur Laufzeit erzeugen, wenn ein temporÃ¤res Feld fÃ¼r Prozedurargument erzeugt wurde.Big-Endian-Code erzeugen.Code erzeugen, der zur Laufzeit verschiebbar ist.Little-Endian-Code erzeugen.Erzeugt eine Mach-O-Datei, die fÃ¼r die Verwendung in eingebetteten Systemen / ROMs geeignet ist.Profilinformation in %s ist beschÃ¤digtProgramm befindet sich vollstÃ¤ndig in unteren 64k des Speichers.Programmeinheit bei %L hat OpenMP-GerÃ¤te-Konstrukte/-Routinen, setzt jedoch nicht !$OMP REQUIRES %s, aber andere Programmeinheiten tun dasPC-relative Funktionsaufrufe verbieten.PC-relative SprÃ¼nge verbieten.Verboten in Fortran 2023:Klammern in AusdrÃ¼cken schÃ¼tzen.Bash-VervollstÃ¤ndigung fÃ¼r Optionen anbieten, die mit der angegebenen Zeichenkette beginnen.Bibliotheken fÃ¼r den Simulator bereitstellen.Ungenutze ZustÃ¤nde wÃ¤hrend der Analyse verwerfen.In Ãœberwachungsfunktionen erweiterte Register auf Stapel sichern.Alle lokalen Felder Ã¼ber Stapel Ã¼bergeben.Alles in regulÃ¤res TOC legen.Sprungtabellen fÃ¼r Â»switchÂ«-Anweisungen in den .data-Abschnitt statt in den .code-Abschnitt einfÃ¼gen.Umgelagerte Nur-Lese-Daten in .data-Abschnitt legen.Uninitialisierte Konstanten im ROM ablegen (benÃ¶tigt -membedded-data).Uninitialisierte globale Symbole in gemeinsamen Abschnitt legen.Null-initialisierte Daten in den bss-Abschnitt legen.Der Spezifizierer QUIET bei %L muss ein skalarer LOGICAL seinSpezifizierer QUIET= fÃ¼r %s bei %LRANK (%i) bei %L wird bei %L wiederholtRANK (*) bei %L kann nicht mit dem Zeiger oder dem allozierbaren Selektor bei %L verwendet werdenRANK (*) bei %L wird bei %L wiederholtRANK DEFAULT bei %L wird bei %L wiederholtRE oder IM part_ref bei %CRE-part_ref bei %CREAL-Feld-Index bei %LREAL(KIND=10) ist nicht verfÃ¼gbar fÃ¼r Option %<-fdefault-real-10%>REAL(KIND=10) ist nicht verfÃ¼gbar fÃ¼r Option %<-freal-4-real-10%>REAL(KIND=10) ist nicht verfÃ¼gbar fÃ¼r Option %<-freal-8-real-10%>REAL(KIND=10) ist nicht verfÃ¼gbar fÃ¼r Option %<-freal-8-real-16%>REAL(KIND=16) ist nicht verfÃ¼gbar fÃ¼r Option %<-fdefault-real-16%>REAL(KIND=16) ist nicht verfÃ¼gbar fÃ¼r Option %<-freal-4-real-16%>REAL(KIND=4) ist nicht verfÃ¼gbar fÃ¼r Option %<-freal-8-real-4%>REAL(KIND=8) ist nicht verfÃ¼gbar fÃ¼r Option %<-fdefault-real-8%>REAL(KIND=8) ist nicht verfÃ¼gbar fÃ¼r Option %<-freal-4-real-8%>RECL in OPEN-Anweisung bei %L muss positiv seinRECL-Angabe nicht erlaubt in OPEN-Anweisung bei %L fÃ¼r Datenstrom-Ein-/AusgabeRECORD bei %C ist eine Erweiterung, muss mit %<-fdec-structure%> eingeschaltet werdenRECURSIVE-PrÃ¤fix fehlt in MODULE-PROCEDURE-Schnittstelle bei %LREDUCE-Ortsangabe bei %LREPLACING von %zu Zeichen Ã¼berschreitet die SystemkapazitÃ¤t Â»%sÂ«Die RESULT-Variable %qs bei %L verbietet, dass der FUNCTION-Name %qs bei %C in einer Spezifikationsanweisung auftrittRESULT-Variable bei %C muss vom Funktionsnamen verschieden seinRESULT_DECL should be read only when DECL_BY_REFERENCE is setRETURN-Anweisung im Hauptprogramm bei %CROUND= bei %L ist in Fortran 95 nicht erlaubtInterner Fehler: RTL check: access of elt %d of '%s' with last elt %d in %s, at %s:%dInterner Fehler: RTL check: access of elt %d of vector with last elt %d in %s, at %s:%dInterner Fehler: RTL check: access of hwi elt %d of vector with last elt %d in %s, at %s:%dInterner Fehler: RTL check: attempt to treat non-block symbol as a block symbol in %s, at %s:%dInterner Fehler: RTL check: expected code '%s' or '%s', have '%s' in %s, at %s:%dInterner Fehler: RTL check: expected code '%s', '%s' or '%s', have '%s' in %s, at %s:%dInterner Fehler: RTL check: expected code '%s', have '%s' in %s, at %s:%dInterner Fehler: RTL check: expected elt %d type '%c' or '%c', have '%c' (rtx %s) in %s, at %s:%dInterner Fehler: RTL check: expected elt %d type '%c', have '%c' (rtx %s) in %s, at %s:%dInterner Fehler: RTL flag check: %s used with unexpected rtx code '%s' in %s, at %s:%dRTP PIC ist mit %<-msingle-pic-base%> unvertrÃ¤glichRTP PIC ist mit Thumb unvertrÃ¤glichRTTI wird fÃ¼r diesen Typ nicht funktionierender RVV-Typ %qT kann nur an prototypisierte Funktionen Ã¼bergeben werdender RVV-Typ %qT hat keine definierte Ausrichtungder RVV-Typ %qT hat keine feste GrÃ¶ÃŸeRVV-Typ %qT ist in %<map%>-Klausel nicht erlaubtRVV-Typ %qT ist in %<target%>-%<firstprivate%>-Klausel nicht erlaubtRVV-Typ %qT ist in %<target%>-%<private%>-Klausel nicht erlaubtRVV-Typ %qT ist in %<target%>-GerÃ¤teklauseln nicht erlaubtRX-FPU-Befehle unterstÃ¼tzen keine NaNs und UnendlichkeitenErhÃ¶hung eines negativen REAL bei %L zu einer REAL-Potenz ist verbotenBereichsspezifikation bei %L kann nie passenUnvertrÃ¤gliche RÃ¤nge zwischen Argument bei %L und Argument bei %L (Rang-%d und Rang-%d)UnvertrÃ¤gliche RÃ¤nge zwischen Argument bei %L und Argument bei %L (Rang-%d und skalar)UnvertrÃ¤gliche RÃ¤nge zwischen Argument bei %L und Argument bei %L (skalar und Rang-%d)Unpassender Rang in Argument %qs bei %L (Rang-%d und Rang-%d)Unpassender Rang in Argument %qs bei %L (Rang-%d und Skalar)Unpassender Rang in Argument %qs bei %L (Skalar und Rang-%d)Unpassende RÃ¤nge in Feldreferenz bei %L (%d/%d)Rangabweichung zwischen dem Array bei %L und seinem Initialisierer (%d/%d)Das Umordnen des Rangs erfordert eine Liste von %<untere-Grenze : obere-Grenze%>-Angaben bei %LZiel der Rang-Neuzuordnung ist nicht Rang 1 bei %LZiel der Rang-Neuzuordnung ist kleiner als die GrÃ¶ÃŸe des Zeigers (%ld < %ld) bei %LZiel der Rang-Neuzuordnung muss Rang 1 oder einfach fortlaufend bei %L seinDatei %qs wird in Freiform gelesenModul %qs in Zeile %d, Spalte %d wird gelesen: %sLesen der Spezifikationen von %s
  Reelles COUNT_RATE-Argument fÃ¼r SYSTEM_CLOCK bei %LRealkonstante Ã¼berschreitet seine Art bei %CRealkonstante unterschreitet seine Art bei %CRealzahl bei %C hat einen %<d%>-Exponenten und eine explizite ArtRealzahl bei %C hat einen %<q%>-Exponenten und eine explizite ArtStapel in Prolog neu ausrichten.LHS in Zuweisungen neu reservieren.C++-SchlÃ¼sselworte wie Â»complÂ« und Â»xorÂ« erkennen.GNU-definierte SchlÃ¼sselworte erkennen.Eingebaute Funktionen erkennen.Das Â»asmÂ«-SchlÃ¼sselwort erkennen.DW_AT_decl_column und DW_AT_call_column in DWARF aufzeichnen.GCC-Kommandozeilenschalter in DWARF DW_AT_producer aufzeichnen.GCC-Kommandozeilenschalter in Objektdateien aufzeichnen.Dauer der Teilphasen separat aufzeichnen.Rekursives Klonen nur dann, wenn die Wahrscheinlichkeit, dass der Aufruf ausgefÃ¼hrt wird, den Parameter Ã¼berschreitet.Redefinition von !$OMP DECLARE REDUCTION bei %LRedefinition der vordefinierten !$OMP DECLARE REDUCTION bei %LRedefinition der vordefinierten !$OMP DECLARE REDUCTION Â»%sÂ« bei %LPrioritÃ¤t fÃ¼r r0..r3 / r12..r15 mit TARGET_REGISTER_PRIORITY reduzieren.Stapelausrichtung im Aufrufer reduzieren, wenn mÃ¶glich.Redundantes !$ACC END LOOP bei %CRedundante ACQUIRED_LOCK-Marke bei %L gefundenRedundante ERRMSG-Marke bei %L gefundenÃœberflÃ¼ssige MOLD-Marke bei %L gefundenÃœberflÃ¼ssige SOURCE-Marke bei %L gefundenRedundante STAT-Marke bei %L gefundenRedundante UNTIL_COUNT-Marke bei %L gefundenIndex der Referenzanweisung nicht gefundenIndex der Referenzanweisung auÃŸerhalb des gÃ¼ltigen BereichsReferenz auf Nicht-PURE-Funktion %qs bei %L innerhalb eines DO CONCURRENT %sReferenz auf Nicht-PURE-Funktion %qs bei %L innerhalb eines FORALL %sReferenz auf Nicht-PURE-Funktion %qs bei %L innerhalb einer PURE-ProzedurReferenz auf Nicht-PURE-Funktion bei %L innerhalb eines DO CONCURRENTInterner Fehler: Region crossing jump across same section in bb %iProfilinformation im Abschnitt .gcov_info registrieren, statt einen Konstruktor/Destruktor zu verwenden.Profilinformation im angegebenen Abschnitt registrieren, statt einen Konstruktor/Destruktor zu verwenden.Die cmpxchg-Schleife fÃ¼r atomic_fetch_{or,xor,and,nand} entspannen, indem load und cmp vor cmpxchg eingefÃ¼gt wird, sowie pausieren und zurÃ¼ckspringen zu Laden-und-Vergleichen, wenn der Ladewert nicht der erwartete ist.Literale in Assembler lockern und automatisch in den Â»textÂ«-Abschnitt platzieren.Entlastung des Registerdrucks durch Live-Bereichs-Schrumpfung.Dateinamen beim EinfÃ¼gen von Dateien neu abbilden.Code und Daten, die unerreichbar von jeglichen exportierten Symbolen sind, entfernen (inclusive dem Einstiegspunkt).PrÃ¤fix von absolutem Pfad abschneiden, bevor dieser Name fÃ¼r Â»-fprofile-generate=Â« und Â»-fprofile-use=Â« gemangelt wird.Redundante Membars entfernen.In GCC 10 entfernt. Dieser Schalter hat keine Auswirkung.In GCC 15 entfernt. Dieser Schalter hat keine Auswirkung.In GCC 8 entfernt. Dieser Schalter hat keine Auswirkung.In GCC 9 entfernt. Dieser Schalter hat keine Auswirkung.Â»%sÂ« wird gelÃ¶scht
! Aufruf von unreiner Funktion %qs bei %L wird entferntAufruf von unreiner Funktion bei %L wird entferntUmbenennungsoperatoren in USE-Anweisungen bei %CBasisblÃ¶cke und in heiÃŸe und kalte Abschnitte umordnen und partitionieren.BasisblÃ¶cke umsortieren, um Codeplatzierung zu verbessern.Funktionen umsortieren, um Codeplatzierung zu verbessern.Funktionen, Variablen und asms hÃ¶chster Ebene umordnen.UngÃ¼ltige Wiederholungsangabe in Skalar-Initialisierung bei %CWiederholungsangabe bei %C muss eine Ganzzahl seinAddieren, Vergleichen, Verzweigen mit Verzweigung anhand des ZÃ¤hlregisters ersetzen.VorÃ¼bergehende AusdrÃ¼cke im SSA->Normal-Durchlauf ersetzen.Ãœber Konsistenz des Profils berichten.Ãœber Speicherbelegung vor zwischenprozeduraler Optimierung berichten.Nur in WPA Ã¼ber dauerhafte Speicherreservierung berichten.Ãœber dauerhafte Speicherreservierung berichten.BenÃ¶tigte Zeit fÃ¼r jeden Compilerdurchlauf ausgeben.Nur in WPA verschiedene Statistiken Ã¼ber Linkzeit-Optimierung ausgeben.Verschiedene Statistiken Ã¼ber Linkzeit-Optimierung ausgeben.IEEE-konforme Mathematik-Bibliotheksroutinen (OSF/1) anfordern.Befehle nach Registerbelegung neu planen.Befehle vor Registerbelegung neu planen.Regionen mit Pipelining ohne Pipelining neu planen.Platz fÃ¼r Ausgabeargumente in Funktionsprolog reservieren.Umgeformtes Feld bei %C zu groÃŸInterner Fehler: Residual context count!Standard-Strub-Modus wiederherstellen: gemÃ¤ÃŸ Attributen, mit lockerer PrÃ¼fung.Die Analyse auf die PrÃ¼fung mit dem angegebenen Namen einschrÃ¤nken.Verwendung der Hardware-Gleitkomma-Befehle auf 32-Bit-Operationen beschrÃ¤nken.Ergebnis %qs der enthaltenen Funktion %qs bei %L hat keinen IMPLICIT-TypUnpassendes Ergebnis fÃ¼r die Ã¼berschreibende Prozedur %qs bei %L: %sErgebnis von %s ergibt fÃ¼r seine Art einen Bereichsfehler bei %LErgebnis von %s ist NaN bei %LErgebnis von %s Ã¼berschreitet seine Art bei %LErgebnis von %s unterschreitet seine Art bei %LErgebnis von BESSEL_YN ist -INF bei %LErgebnis von NEAREST ist NaN bei %LErgebnis von SCALE Ã¼berschreitet seine Art bei %LPotenzbildung bei %L Ã¼berschreitet Wertebereich von %s8-Byte-Vektoren Ã¼ber Speicher zurÃ¼ckgeben.Signieren der RÃ¼ckgabeadresse wird fÃ¼r %<-mtpcs-frame%> nicht unterstÃ¼tzt.Alle Strukturen Ã¼ber Speicher zurÃ¼ckgeben (AIX-Standard).Gleitkommaergebnisse Ã¼ber ac0 zurÃ¼ckgeben (fr0 in Unix-Assemblersyntax).Zeiger sowohl in a0 als auch in d0 zurÃ¼ckgeben.Kleine Aggregate Ã¼ber Speicher, nicht Register, zurÃ¼ckgeben.Kleine Aggregate Ã¼ber Register zurÃ¼ckgeben.Kleine Strukturen Ã¼ber Register zurÃ¼ckgeben (SVR4-Standard).Unpassender RÃ¼ckgabetyp der Funktion %qs bei %L (%s/%s)RÃ¼ckgabetyp der BIND(C)-Funktion %qs bei %L kann kein Feld seinRÃ¼ckgabetyp der BIND(C)-Funktion %qs von Zeichentyp bei %L muss die LÃ¤nge 1 habenRÃ¼ckgabewert %1$qs der bei %3$L deklarierten Funktion %2$qs nicht gesetztRÃ¼ckgabewert der Funktion %qs bei %L nicht gesetztFunktionswerte Ã¼ber FPU-Register zurÃ¼ckgeben.r30 auf Funktionsbasis wiederverwenden.DIP1000 "Zeiger in GÃ¼ltigkeitsbereichen" rÃ¼ckgÃ¤ngig machen.Aufruf des Teilbefehls Â»rewriteÂ«:SchlieÃŸende Klammer erwartet bei %C in Formatzeichenkette bei %LRechte obere Schranke des Feldabschnitts angenommener GrÃ¶ÃŸe nicht angegeben bei %LNur die zweite Kompilierung von -fcompare-debug laufen lassen.Vorhersehende vereinheitlichende Optimierung durchlaufen.AusgewÃ¤hlte Planung nach Neuladen durchfÃ¼hren.Selbsttests durchfÃ¼hren, mit dem angegebenen Pfad, um die Testdateien zu finden.Den Bindezeitoptimierer im lokalen Transformationsmodus (LTRANS) laufen lassen.Den Bindezeitoptimierer im Modus Â»komplettes ProgrammÂ« (WPA) laufen lassen.Zwei BefehlskombinationsdurchlÃ¤ufe spÃ¤t in der Durchlaufpipeline ausfÃ¼hren; einen vor der Registerzuweisung und einen danach.Unbekannte Spezifikationsfunktion Â»%sÂ« mit %d Argumenten
  
! Laufzeitname.SAVE-Attribut bei %L kann nicht in einer PURE-Prozedur angegeben werdenSAVE des COMMON-Blocks %qs bei %C ist in einem BLOCK-Konstrukt nicht erlaubtSAVE-Anweisung bei %C folgt umfassender SAVE-AnweisungSCHEDULE-Klausel darf nicht zusammen mit %<inscan%>-REDUCTION-Klausel bei %L verwendet werdenchunk_size der SCHEDULE-Klausel bei %L erfordert einen skalaren INTEGER-AusdruckSELECT-RANK-Anweisung bei %CSELECT TYPE bei %C darf nicht in diesem GÃ¼ltigkeitsbereich vorkommenSELECTED_REAL_KIND ohne Argument %<P%> oder %<R%> bei %LSELF-Klausel bei %L erfordert einen skalaren LOGICAL-AusdruckSEQUENCE-Attribut bei %C bereits in TYPE-Anweisung angegebenSEQUENCE-Anweisung bei %C muss CONTAINS vorausgehenSEQUENCE-Anweisung bei %C muss Strukturkomponenten vorausgehenSH2a unterstÃ¼tzt nicht Little-EndianSHAPE-Argument bei %L fÃ¼r C_F_POINTER muss dieselbe GrÃ¶ÃŸe haben wie der RANK des FPTRSHIFT-Argument (%ld) auÃŸerhalb des Bereichs -%ld:%ld in intrinsischem ISHFTSIZE-Argument (%ld) auÃŸerhalb des Bereichs -%ld:%ld in intrinsischem ISHFTCSHIFT-Argument (%ld) auÃŸerhalb des Bereichs 0:%ld in intrinsischem Â»%sÂ«SIGN= bei %L ist in Fortran 95 nicht erlaubtSIMD-Erweiterungsstufen von LoongArch:SINK-Summand bei %L ist keine konstante GanzzahlSINK bei %C ist nicht als AbhÃ¤ngigkeitsart fÃ¼r diese Direktive erlaubtSIZE-Argument (%ld) auÃŸerhalb des Bereichs 1:%ld in intrinsischem ISHFTCSIZE bei %L muss positiv seinDas Konstrukt !$OMP TILE bei %L erfordert eine SIZES-KlauselSIZES bei %L erfordert konstanten AusdruckSOURCE bei %C ist nicht als AbhÃ¤ngigkeitsart fÃ¼r diese Direktive erlaubtSOURCE-Marke bei %LSOURCE-Marke bei %L steht mit Typspezifikation bei %L in KonfliktSOURCE-Marke bei %L mit mehr als einem reservierbaren ObjektModi fÃ¼r SRAM-ECC und XNACK:SSA-BeschÃ¤digungSSA-Name %qE mit Version %d hat keine DefinitionInterner Fehler: SSA name undeclaredSSA_NAME created in two different blocks %i and %iSSA_NAME_DEF_STMT is wrongSSA_NAME_OCCURS_IN_ABNORMAL_PHI sollte gesetzt seinSSE-Befehlssatz ausgeschaltet, es wird 387-Arithmetik verwendetSSE-Registerargument mit SSE ausgeschaltetSSE-Registerargument mit SSE2 ausgeschaltetSSE-RegisterrÃ¼ckgabe mit SSE ausgeschaltetSSE-RegisterrÃ¼ckgabe mit SSE2 ausgeschaltetSSE-Vektorargument ohne eingeschaltetes SSE Ã¤ndert das ABISSE-VektorrÃ¼ckgabe ohne eingeschaltetes SSE Ã¤ndert das ABIArgument fÃ¼r STAT bei %L muss INTEGER-Typ haben, ist jedoch %sArgument STAT bei %L muss skalar seinSTAT-Angabe bei %L darf keine Konstante seinSTAT-VariableDer Ausdruck von STAT bei %L muss eine Variable seinÂ»STAT=Â«-Argument bei %L muss skalare INTEGER-Variable seinSTAT=-Argument fÃ¼r %s bei %LSTATUS bei %L muss eine Â»INTENT(OUT)Â«-Variable seinSTOP-Code bei %C darf nicht negativ seinSTOP-Code bei %C enthÃ¤lt zu viele ZiffernSTOP-Code bei %L muss eine skalare CHARACTER-Konstante oder Ziffer[Ziffer[Ziffer[Ziffer[Ziffer]]]] seinSTOP-Code bei %L muss eine skalare CHARACTER- oder INTEGER-Konstante seinSTOP-Code bei %L muss Standardzeichentyp KIND=%d seinSTOP-Code bei %L muss Standardganzzahltyp KIND=%d seinSTOP-Code bei %L muss entweder INTEGER- oder CHARACTER-Typ habenSTOP-Code bei %L muss Skalar seinSUBMODULE-Deklaration bei %CSUBMODULE-Deklaration bei %C kann nicht innerhalb eines anderen GÃ¼ltigkeitsbereichs auftretenSUBROUTINE %qs bei %L kann nicht rekursiv aufgerufen werden, da sie nicht RECURSIVE istder SVE-Typ %qT kann nur an prototypisierte Funktionen Ã¼bergeben werdender SVE-Typ %qT hat keine definierte Ausrichtungder SVE-Typ %qT hat keine feste GrÃ¶ÃŸeSVE-Typ %qT ist in %<map%>-Klausel nicht erlaubtder SVE-Typ %qT ist in der %<target%>-%<firstprivate%>-Klausel nicht erlaubtder SVE-Typ %qT ist in der %<target%>-%<private%>-Klausel nicht erlaubtder SVE-Typ %qT ist in %<target%>-GerÃ¤teklauseln nicht erlaubtSYNC-TEAM-Anweisung bei %CSYNC-Anweisung bei %CGleiches effektives Argument mit INTENT(%s)-Argument %qs und INTENT(%s)-Argument %qs bei %L verbundenDasselbe wie %s%s (oder, in negierter Form, %s%s).Dasselbe wie %s%s.Dasselbe wie %s.Das gleiche wie -fassociative-math fÃ¼r AusdrÃ¼cke, die Division enthalten.Identisch zu -mA6.Identisch zu -mA7.Das gleiche wie: -mep -mprolog-function.Derselbe Bezeichner %qs ist wiederholt angegeben bei %CRegister bei Funktionsaufrufen sichern.TOC fÃ¼r indirekte Aufrufe im Prolog sichern, statt vor jedem Aufruf.Skalares %qs in FORMAT-Marke bei %L ist keine ASSIGNED-VariableSkalarer INTEGER-Ausdruck bei %L erwartetSkalarer PARAMETER in komplexer Konstante bei %C erwartetSkalare Einheit bei %L benÃ¶tigtDer Bereichsbeginn bei %L erwartet einen skalaren GanzzahlausdruckDas Bereichsende bei %L erwartet einen skalaren GanzzahlausdruckDie Schrittweite des Bereichs bei %L erwartet einen skalarer GanzzahlausdruckSkalares Objekt %qs bei %L kann nicht ALLOCATABLE seinSkalare Variable %qs hat eine Array-Referenz bei %LScalarization using DIMEN_RANGE unimplementedDer Skalierungsfaktor, der auf die Anzahl der Anweisungen in einem Threadingpfad angewendet wird, der eine SchleifenrÃ¼ckkante kreuzt, wenn er mit max-jump-thread-duplication-stmts verglichen wird.Skalierungsfaktor bei Berechnung der grÃ¶ÃŸten Entfernung, um die ein Ausdruck durch GCSE-Optimierungen verschoben werden kann.Code fÃ¼r die gegebene CPU planen.FÃ¼r angegebene CPU planen.Befehle mit selektivem Planungs-Algorithmus einplanen.Anfang und Ende der Prozedur planen.Begrenzung des Suchraums fÃ¼r den RÃ¼ckwÃ¤rtssprung-Threader.Zweites Argument von %s ist bei %L negativZweites Argument der definierten Zuweisung bei %L muss INTENT(IN)Zweites Argument der Operatorschnittstelle bei %L kann nicht optional seinZweites Argument der Operatorschnittstelle bei %L muss INTENT(IN) seinWeitere Hinweise finden Sie unter Â»%sÂ«.
! SMP-C-Laufzeiten von VxWorks zum Linken auswÃ¤hlen.Codemodell auswÃ¤hlen.Auswahl des Anteils an der HÃ¶chstfrequenz der AusfÃ¼hrungen des Basisblocks in Funktion, vorausgesetzt, der Basisblock wird ausgerichtet.GroÃŸes Speichermodell wÃ¤hlen â€“ 20-Bit-Adressen/-Zeiger.Methode fÃ¼r sdata-Behandlung auswÃ¤hlen.GÃ¼ltigkeitsbereich der signierten RÃ¼ckgabeadressen.Kleines Speichermodell wÃ¤hlen â€“ 16-Bit-Adressen/-Zeiger (Voreinstellung).Ziel-ABI-Variante auswÃ¤hlen.AuswÃ¤hlen, fÃ¼r welche eBPF-ISA-Version der Zielcode generiert wird.Name zum Speichern der Profilingnotizen festlegen.Laufzeitumgebung auswÃ¤hlen.Art der Abdeckungs-Bereinigung auswÃ¤hlen.AuswÃ¤hlen, was bereinigt werden soll.Auswahlausdruck in berechneter GOTO-Anweisung bei %L muss ein skalarer Ganzzahlausdruck seinSelektor bei %L darf nicht NULL() seinSelektor bei %L hat keinen TypSelektor bei %L darf nicht koindiziert seinSelektor in SELECT TYPE bei %C ist keine benannte Variable; associate-name=> verwendetSelektor muss in SELECT TYPE-Anweisung bei %L polymorph seinWÃ¤hlt die Art der Ziel-RL78-Kerne aus (g10/g13/g14). Voreinstellung ist der G14. Wenn angegeben, wird auch die verwendete Hardwaremultiplikation ausgewÃ¤hlt.WÃ¤hlt die zu verwendende Art der Hardware-Multiplikation und -division aus (none/g13/g14).Selbstreferenz im ZeichenlÃ¤ngenausdruck fÃ¼r %qs bei %LSelbstreferenzielles Argument %qs bei %L ist nicht erlaubtSemikolon bei %C muss Anweisung vorausgehenSequenz %s mit gemischten Komponenten in EQUIVALENCE-Anweisung bei %L mit Objekten unterschiedlichen TypsGleitkommaprÃ¤zision von 80387 auf 32 Bit setzen.GleitkommaprÃ¤zision von 80387 auf 64 Bit setzen.GleitkommaprÃ¤zision von 80387 auf 80 Bit setzen.Windows-defines festlegen.Working-Storage-Datenelemente auf den angegebenen Wert setzenFeste Obergrenze fÃ¼r die GrÃ¶ÃŸe jedes Stapelrahmens angeben, in Bytes.Sprungkosten festlegen.Standardzugriff von ModulentitÃ¤ten auf PRIVATE setzen.PrÃ¼fung der AbhÃ¤ngigkeitsentfernung in nicht ausgereifter Planung von eingereihten Befehlen festlegen.Nach eingebauten Mathematikfunktionen errno setzen.ZusÃ¤tzliche Kosten fÃ¼r Speicherzugriff durch den L32R-Befehl festlegen, in Taktzyklen.Ausgabeart des Linkers festlegen (wird intern wÃ¤hrend der LTO-Optimierung verwendet).Mindestbreite des linken Randes des Quellcodes angeben, fÃ¼r das Ausgeben des Quellcodes.Name des __fentry__-Symbols festlegen, das beim Betreten der Funktion aufgerufen wird.Name der Hauptroutine fÃ¼r den Debugger festlegen.Namen der ALI-Ausgabedatei setzen (interner Schalter).Name des Abschnitts festlegen, der die mrecord-mcount-Aufrufe aufnimmt.Anzahl der reservierten Bytes fÃ¼r die aufgerufene Funktion auf dem Stapel.Anzahl der zu erzeugenden NOPs vor jeder Befehlsfolge festlegen.Ausgabeformat festlegen.Register festlegen, das den Wert -1 enthÃ¤lt.sizeof(bool) auf 1 festlegen.Start-Adresse der Daten festlegen.Start-Adresse des Programmes festlegen.Die Flags FTZ und DAZ festlegen.PPC_EMB-Bit im ELF-Flags-Header setzen.Sprungkosten fÃ¼r bedingte Sprungbefehle setzen. Angemessene Werte sind kleine, nicht-negative Ganzzahlen. Standard ist 1.Verzweigungskosten auf ungefÃ¤hr die angegebene Anzahl an Befehle setzen.Sprungkosten festlegen.Standard-DoppelprÃ¤zisionsart auf einen 8 Bytes breiten Typen setzen.Standard-Ganzzahlart auf einen 8 Bytes breiten Typen setzen.Standard-Realzahlart auf einen 10 Bytes breiten Typen setzen.Standard-Realzahlart auf einen 16 Bytes breiten Typen setzen.Standard-Realzahlart auf einen 8 Bytes breiten Typen setzen.Wahrscheinlichkeit in Prozent fÃ¼r das eingebaute Â»expectÂ«. Vorgabewert ist 90Â % Wahrscheinlichkeit.MaximalgrÃ¶ÃŸe der fÃ¼r den SDA-Bereich geeigneten Daten festlegen.MaximalgrÃ¶ÃŸe der fÃ¼r den TDA-Bereich geeigneten Daten festlegen.MaximalgrÃ¶ÃŸe der fÃ¼r den ZDA-Bereich geeigneten Daten setzen.HÃ¶chstanzahl der Bytes angeben, die noch im Stapel Ã¼brig sind, bevor ein Trap-Befehl ausgelÃ¶st wird.GrÃ¶ÃŸten Betrag fÃ¼r einzelne StapelvergrÃ¶ÃŸerungsoperation festlegen.HÃ¶chstzahl der parallel ausgefÃ¼hrten Befehle im neuverbundenen Baum festlegen. Bei 0 die zielabhÃ¤ngige Heuristik verwenden.HÃ¶chstzahl der Template-Instanziierungshinweise fÃ¼r einzelne Warnung oder Fehler festlegen.Das Ausgabeobjekt so festlegen, dass beim Laden dyld alle 2-stufigen Namensraum-Informationen ignoriert, und Symbole in der Entdeckungsreihenfolge fÃ¼r geladene Bibliotheken auflÃ¶sen.Adressen des EinhÃ¤ngpunkts im Prolog und Epilog auf TPF_TRACE_PROLOGUE_SKIP_TARGET und TPF_TRACE_EPILOGUE_SKIP_TARGET festlegen. Gleichbedeutend mit Â»-mtpf-trace-hook-prologue-target=TPF_TRACE_PROLOGUE_SKIP_TARGETÂ« und Â»-mtpf-trace-hook-epilogue-target=TPF_TRACE_EPILOGUE_SKIP_TARGETÂ«Ziel-CPU-Typ angeben.Basisverzeichnis zum Speichern der Profildaten setzen. Vorgabe ist das aktuelle Verzeichnis.Adresse der VerfolgungsprÃ¼fung fÃ¼r TPF-EinhÃ¤ngpunkt im Epilog festlegenAdresse der VerfolgungsprÃ¼fung fÃ¼r TPF-EinhÃ¤ngpunkt im Prolog festlegenAdresse des Verfolgungssprungs fÃ¼r TPF-EinhÃ¤ngpunkt im Epilog festlegenAdresse des Verfolgungssprungs fÃ¼r TPF-EinhÃ¤ngpunkt im Prolog festlegenDie Version der RISC-V-ISA-Spezifikation festlegen.Legt die Registerbreite fÃ¼r LP_COUNT fest. MÃ¶gliche Werte sind 8, 16, 20, 24, 28 und 32.Spezifikation %s wird auf '%s' gesetzt
  
! Formspezifikation fÃ¼r reservierbares Skalar bei %CFormen der Operanden bei %L und %L stimmen nicht Ã¼bereinDie Formen von ORDER bei %L und SHAPE bei %L sind unterschiedlichSchlitze gemeinsam verwenden, um verschiedene harte Register zu sichern.Stapel-Schlitze fÃ¼r Ã¼bergelaufene Pseudo-Register gemeinsam verwenden.Gemeinsam genutzte DO-Abbruchmarke %d bei %CBeim Binden Adressreferenzen verkÃ¼rzen.Spaltenzahlen in Diagnose zeigen, wenn verfÃ¼gbar. Standard: Ein.Ereignisse in Systemheadern in den AusfÃ¼hrungspfaden des Analysierers anzeigen.Beim Anzeigen von Quellcode Marker verwenden, um Bereiche des Quellcodes zu markieren.Beim Anzeigen von Quellcode Zeilennummern im linken Rand anzeigen.Linien anzeigen, die zusammenhÃ¤ngende Ereignisse in Diagnosepfaden verbinden.Stapeltiefe der Ereignisse in Pfaden anzeigen.Quellzeile mit Einschaltungszeichen anzeigen, um die Spalte zu kennzeichnen.Teile des Prologs und Epilogs separat an den nÃ¶tigen Stellen erzeugen.Interner Fehler: Simplification errorVereinfachung von SPREAD bei %C ist noch nicht implementiertGrÃ¶ÃŸenbeschrÃ¤nkung fÃ¼r die zu klonenden Aufrufe einschlieÃŸlich der inline-Aufrufe fÃ¼r einen bestimmten Aufrufer.GrÃ¶ÃŸe in Bytes, Ã¼ber der thread-lokale Zusammenfassungen mit Logging-Funktionen statt mit Save/Restore-Paaren instrumentiert werden sollten.GrÃ¶ÃŸe des Arguments %qs des intrinsischen %qs bei %L ist zu klein (%i/%i)GrÃ¶ÃŸe des Arguments %qs des intrinsischen %qs bei %L ist zu klein (%wd/%ld)GrÃ¶ÃŸe des Stapelschutzes, als Zweierpotenz von Bytes ausgedrÃ¼ckt.GrÃ¶ÃŸe der Kacheln fÃ¼r Schleifenblockierung.GrÃ¶ÃŸenoptimierungsstufe: 0:keine 1:vorteilhaft 2:regalloc 3:drop align, -Os.Die GrÃ¶ÃŸen von ORDER bei %L und SHAPE bei %L sind unterschiedlichBeim Ãœbergeben von variablen Argumenten das Einrichten des RAX-Registers Ã¼berspringen.Bereich fÃ¼r kleine Daten: none, sdata, use.Weiche Grenzen fÃ¼r Anzahl der Speicherzugriffsbefehle pro Befehlsgruppe. SpÃ¤teren Speicherbefehlen, die versuchen, in gleicher Befehlsgruppe zu planen, wird niedrigere PrioritÃ¤t gegeben. Oft hilfreich, um Konflikte von CachebÃ¤nken zu vermeiden. Standard: 1.Entschuldigung, !$ACC DECLARE bei %L ist in einem BLOCK-Konstrukt nicht erlaubtSorry, !$OMP allocate for COMMON block variable %qs at %L not supportedSorry, die Angabe %s bei %L fÃ¼r Feld %qs mit angenommener GrÃ¶ÃŸe wird noch nicht unterstÃ¼tztSorry, Cray-Zeiger und Zeigerziele wie %qs werden nicht unterstÃ¼tzt mit !$OMP ALLOCATE bei %LSorry, EQUIVALENCE-Objekt %qs ist nicht unterstÃ¼tzt mit !$OMP ALLOCATE bei %LSorry, die Angabe LOCAL bei %L fÃ¼r %qs vom abgeleiteten Typ mit Vorgabe-Initialisierer wird noch nicht unterstÃ¼tztSorry, allozierbare/Zeiger-Komponenten in polymorphen (CLASS-)getypten Koarrays bei %L werden nicht unterstÃ¼tztSorry, der koindizierte Zugriff bei %L auf eine unbegrenzt polymorphe Komponente wird nicht unterstÃ¼tztSorry, der koindizierte Zugriff bei %L auf ein unbegrenzt polymorphes Objekt wird nicht unterstÃ¼tztSorry, Listenelement %qs mit allozierbaren Komponenten bei %L wird in der %s-Klausel noch nicht unterstÃ¼tztEntschuldigung; fÃ¼r Image-Set bei %2$L ist nur UnterstÃ¼tzung fÃ¼r Ganzzahl-Art %1$d implementiertSorry, polymorphe Felder werden fÃ¼r firstprivate noch nicht unterstÃ¼tztSorry, das structure-element-Listenelement bei %L in der ALLOCATE-Direktive wird noch nicht unterstÃ¼tztSorry, die Event-Komponente des abgeleiteten Typs bei %L wird noch nicht unterstÃ¼tztSorry, die Lockkomponente des abgeleiteten Typs bei %L wird noch nicht unterstÃ¼tztDie Symbole der GrÃ¶ÃŸe nach sortieren.Die Symbole alphabetisch sortieren.Quell-Ausdruck bei %L und ALLOCATE-Objekt bei %L mÃ¼ssen dieselbe Form habenQuell-Ausdruck bei %L muss skalar sein oder den selben Rang wie das ALLOCATE-Objekt bei %L habenSpezifikationsfunktion %qs bei %L kann nicht RECURSIVE seinSpezifikationsfunktion %qs bei %L kann keine Anweisungsfunktion seinSpezifikationsfunktion %qs bei %L kann keine interne Funktion seinSpezifikationsfunktion %qs bei %L muss PURE seinBit-Breite des unmittelbaren TLS-Versatzes angeben. GÃ¼ltige Werte sind 12, 24, 32, 48.Gibt die Anzahl der Register an, die bei Eintritt und Austritt eines schnellen Interrupts in der zweiten Registerbank gesichert werden.Anzahl der fÃ¼r Interrupthandler zu reservierenden Register.Gibt die Register an, die beim Eintritt und Austritt eines Interrupts gesichert werden.Angabe, ob Interruptfunktionen das Akkumulator-Register sichern und wiederherstellen sollen.Gibt an, ob die Anweisung fence.tso verwendet werden soll.CPU fÃ¼r Codeerzeugungszwecke angeben.CPU fÃ¼r Planzwecke angeben.CPU fÃ¼r Planungszwecke angeben. GÃ¼ltige Argumente sind 700, 7100, 7100LC, 7200, 7300, und 8000.TLS-Dialekt angeben.UNIX-Standard fÃ¼r Predefines und Bindung angeben.Gibt die Datei an, welche die Liste der von LTRANS ausgegebenen Dateien geschrieben wird.FPU-Konfigurationswert von 0 bis 7 angeben; 0 bis 3 sind wie in der FPU-Spezifikation beschrieben, 4 bis 7 entsprechen 0 bis 3.Zu ladendes Plugin angeben.Ausrichtung der Strukturfelder als Standard/natÃ¼rlich angeben.ABI angeben.Bit-Breite des unmittelbaren TLS-Versatzes angeben.Funktion zum Entleeren des Cache angeben.Abfangfunktionsnummer zum Entleeren des Cache angeben.Konfiguration fÃ¼r den mul-Befehl angeben: fast1, fast2 oder slow. Vorgabe ist fast1.Standard-OpenACC-Berechnungsdimensionen angeben.Anzahl der Lese-/Schreibports fÃ¼r n9-/n10-Kerne angeben. Der Wert sollte 3r2w oder 2r1w sein.Angeben, wie auf den Threadzeiger zugegriffen wird.Angeben, wie jeder Kontrollflusspfad, der mit einer Diagnose verbunden ist, ausgegeben werden soll.Angeben, ob Gleitkommahardware verwendet werden sollte.Aufrufkonventionen fÃ¼r Ganzzahl und Gleitkomma angeben.Hauptobjekt fÃ¼r TPF-OS angeben.Maximale Fehlerwiedergabetiefe wÃ¤hrend der rekursiven Diagnose eines Fehlschlags der Constraint-ErfÃ¼llung an.Expansionsstrategie fÃ¼r memcpy bei bekannter erwarteter GrÃ¶ÃŸe angeben.Expansionsstrategie fÃ¼r memset bei bekannter erwarteter GrÃ¶ÃŸe angeben.Namen fÃ¼r die Funktion zur vorzeichenbehafteten 32-Bit-Division angeben.Bereich der zu fixierenden Register angeben.PlanungsprioritÃ¤t fÃ¼r Verteilschlitz-beschrÃ¤nkte Befehle angeben.GrÃ¶ÃŸe des .local-Speichers angeben, der fÃ¼r den Stack verwendet wird, wenn die genaue GrÃ¶ÃŸe unbekannt ist.Expansionsstrategie fÃ¼r stringop angeben.Angeben, dass eine externe BLAS-Bibliothek fÃ¼r matmul-Aufrufe mit groÃŸen Feldern verwendet werden sollte.Angeben, dass Backslashes in Zeichenketten ein Fluchtzeichen einleiten.Angeben, dass keine implizite Typisierung erlaubt ist, auÃŸer es wird durch explizite IMPLICIT-Anweisungen Ã¼berschrieben.Angeben, dass der Compiler auf sicheren Code gemÃ¤ÃŸ ARMv8-M-Security-Extensions abzielen soll.ISA angeben, fÃ¼r die gebaut wird: msp430, msp430x, msp430xv2.MCU angeben, fÃ¼r die gebaut wird.Die zu verwendende PTX-ISA-Ziel-Architektur angeben.Die Version der PTX-ISA angeben, die verwendet wird.Gleitkommaformat __fp16 angeben.Strategie zur Adresserzeugung fÃ¼r das Codemodell von ICT-Aufrufen angeben.Strategie zur Adresserzeugung fÃ¼r das Codemodell angeben.Algorithmus, mit dem Symbole und Variablen zur Linkzeit partitioniert werden.Das Codemodell fÃ¼r den Zugriff auf Speicheradressen angeben. Die Angabe von Â»largeÂ« ermÃ¶glicht die Erzeugung von BinÃ¤rdateien mit groÃŸen globalen Offset-Tabellen. Der Vorgabewert ist Â»smallÂ«.Codemodell angeben.Verwendungsrichtlinie fÃ¼r kompakte Verzweigungen angeben.CPU fÃ¼r Pipeline-Modell angeben.FÃ¼r das Programm zu verwendende Speichermodell angeben.Minimale Bitausrichtung von Strukturen angeben. (Veraltet)Das Modell fÃ¼r atomare Operationen angeben.Namen der Ziel-CPU angeben.Namen der Ziel-GPU angeben.Namen der Ziel-Architektur angeben.Name der Gleitkommakonfiguration des Ziels angeben.Namen der Gleitkommahardware/-format des Zielsystems angeben.FÃ¼r PIC-Adressierung zu verwendendes Register angeben.FÃ¼r das Programm zu verwendende Sicherheitsstufe von c-isr fÃ¼r die ganze Datei angeben.Die GrÃ¶ÃŸe jedes Cache-Blocks (muss eine Zweierpotenz zwischen 4 und 512 sein).Die GrÃ¶ÃŸe jedes Interrupt-Vektors (muss 4 oder 16 sein).Die Ziel-CPU auswÃ¤hlen.Typ der Ziel-RX-CPU auswÃ¤hlen.Ziel-Architektur angeben.Gleitkommahardware/-format des Zielsystems angeben.Ziel-Prozessor angeben.Das Register fÃ¼r den Threadzeiger angeben.Art der Hardware-Multiplikation angeben.Schema fÃ¼r thread-lokalen Speicher angeben.Registernummer fÃ¼r Threadzeiger angeben.Software-Gleitkomma-ABI verwenden, gleichbedeutend mit -mabi=2.Software-Gleitkomma-ABI verwenden, gleichbedeutend mit -mabi=2fp+.Angeben, wann ein frÃ¼her Registerzuweisungsdurchlauf aktiviert werden soll. MÃ¶glichkeiten: alle Funktionen, Funktionen, die Zugriff auf groÃŸschrittige Multi-Register-Anweisungen haben, und keine Funktionen.Angeben, wo die kompilierten intrinsischen Module zu finden sind.Speicherbereiche, in den Funktionen abgelegt werden: lower (untere Bereiche), upper (obere), either (beide, platzsparend durchmischt); Vorgabe: lower.Speicherbereiche, in den Variablen abgelegt werden: lower (untere Bereiche), upper (obere), either (beide, platzsparend durchmischt); Vorgabe: lower.Zu verwendendes ABI fÃ¼r Code der Objective-C-Familie und Metadaten angeben.ABI-Art, fÃ¼r die der Code generiert wird: 2, 2fp+.Angeben, welches Schema zum EinfÃ¼gen von NOPs nach der Planung angewendet werden soll.VOLATILE fÃ¼r Coarray-Variable %qs bei %C angegeben, die use-/host-assoziiert istNicht ausgerichtetes 32-Byte AVX-Laden auftrennen.Nicht ausgerichtetes 32-Byte AVX-Speichern auftrennen.Lebensdauer von Induktionsvariablen aufteilen, wenn Schleifen abgerollt werden.Pfade aufteilen, die zu Schleifen-RÃ¼ckkanten fÃ¼hren.Nicht ausgerichtete 8-Byte-Vektor-Bewegungen vor Nach-Bewegungs-Adresserzeugung aufteilen.Breite Typen bereits frÃ¼her in unabhÃ¤ngige Register aufteilen.Breite Typen in unabhÃ¤ngige Register aufteilen.Stapelrahmen grÃ¶ÃŸer als 2G wird fÃ¼r %<-fsplit-stack%> nicht unterstÃ¼tztStapel-Neuausrichtung mit %<__builtin_eh_return%> wird nicht unterstÃ¼tztAnfangs-Ausdruck in DO-SchleifeStat-Variable bei %L muss skalare INTEGER-Variable seinStat-Variable bei %L darf nicht %s innerhalb der gleichen %s-Anweisung seinAnweisung bei %L ist keine gÃ¼ltige Sprungzielanweisung fÃ¼r Sprungziel bei %LAnweisungsfunktion %qs bei %L steht in Konflikt mit FunktionsnameAnweisungsfunktion %qs bei %L ist nicht als effektives Argument erlaubtAnweisungsfunktion %qs bei %L darf weder POINTER- oder ALLOCATABLE-Attribut habenAnweisungsfunktion %qs ist in Zuweisung des Prozedurzeigers bei %L ungÃ¼ltigAnweisungsfunktion %qs erfordert Argumentliste bei %CAnweisungsfunktion bei %CAnweisungsfunktion bei %L darf nicht innerhalb von INTERFACE auftretenAnweisungsfunktion bei %L ist rekursivAnweisungsmarke bei %C ist NullAnweisungsmarke in END CRITICAL bei %C passt nicht zur CRITICAL-MarkeAnweisungsmarke in ENDDO bei %C passt nicht zum DO-LabelAnweisungsmarkenliste in GOTO bei %C kann nicht leer seinAnweisungsmarke in leerer Anweisung bei %LGCC Quad-Precision Math Library (libquadmath) statisch binden.GNU Fortran Hilfsbibliothek (libgfortran) statisch binden.Schrittausdruck in DO-SchleifeSchrittausdruck in DO-Schleife bei %L kann nicht Null seinUntersuchen eines AusfÃ¼hrungspfades bei bestimmten Meldungen stoppen.VorwÃ¤rtswachstum anhalten, wenn die Wahrscheinlichkeit der besten Kante weniger als dieser Schwellwert ist. Verwendet, wenn Profil-RÃ¼ckmeldung verfÃ¼gbar ist.VorwÃ¤rtswachstum anhalten, wenn die Wahrscheinlichkeit der besten Kante weniger als dieser Schwellwert ist. Verwendet, wenn Profil-RÃ¼ckmeldung nicht verfÃ¼gbar ist.Umgekehrtes Wachstum anhalten, wenn die umgekehrte Wahrscheinlichkeit der besten Kante weniger als dieser Schwellwert ist (in Prozent).Alle Argumentregister auf dem Stapelspeicher sichern.Doubles in 64 Bits speichern.Funktionsnamen im Objektcode speichern.Doubles in 32 Bits speichern. Dies ist Standard.Sichert die MDUC-Register in Interrupt-Handlern fÃ¼r die G13-Zielarchitektur.ZusÃ¤tzliche Daten verarbeiten, um in LTO-lokalem Umwandlungsmodus aggressiver zu devirtualisieren.Bei %L darf kein Schritt vorhanden seinSchrittweite sollte fÃ¼r Feldabschnitt in %s-Klausel bei %L nicht angegeben werdenSchrittweiten in Coarray-Index bei %C nicht erlaubtZeichenkettenlÃ¤nge bei %L ist zu groÃŸStrukturkomponente %qs bei %L kann kein EQUIVALENCE-Objekt seinStrukturkonstruktor mit fehlenden optionalen Argumenten bei %CStrukturkonstruktor mit benannten Argumenten bei %CStrukturname %qs bei %C kann nicht der gleiche wie ein intrinsischer Typ seinStrukturname nach RECORD bei %C erwartetStrukturname erwartet in unverschachtelter Strukturdeklaration bei %CStrukturkomponenten-Ausdruck bei %L in %qs-Direktive in deklarativer Direktive nicht zulÃ¤ssig; als Richtlinie, die mit einer ALLOCATE-Anweisung verbunden ist, muss ihr eine ausfÃ¼hrbare Anweisung oder ein OpenMP-Konstrukt vorausgehenStrukturiertes Format, um AbhÃ¤ngigkeitsinformationen auszugeben. UnterstÃ¼tzt ist Â»p1689r5Â«.Unterprogramm %qs bei %L ist INTRINSIC, aber nicht mit intrinsischer Funktion vertrÃ¤glichUnterprogrammaufruf bei %L in Â»DO CONCURRENTÂ«-Block ist nicht PUREUnterprogrammaufruf von %qs bei %L ist nicht PUREUnterprogrammaufruf von %qs in Â»DO CONCURRENTÂ«-Block bei %L ist nicht PUREUnterprogrammaufruf von %qs in FORALL-Block bei %L ist nicht PUREUnterprogrammaufruf des intrinsischen %qs bei %L ist nicht PUREUnterprogrammaufruf von intrinsischem %qs in Â»DO CONCURRENTÂ«-Block bei %L ist nicht PUREUnterprogrammaufruf mit alternativen RÃ¼ckgaben in INITIALIZER-Klausel von !$OMP DECLARE REDUCTION bei %LUnterprogrammaufruf mit alternativen RÃ¼ckgaben in Kombinierer von !$OMP DECLARE REDUCTION bei %LFeldindex bei %L ist oberhalb der Schranke (%ld > %ld) in Dimension %dFeldindex bei %L ist unterhalb der Schranke (%ld < %ld) in Dimension %dTeilzeichenkette bei %L hat LÃ¤nge NullEnd-Index %td der Teilzeichenkette bei %L Ã¼berschreitet ZeichenkettenlÃ¤ngeEnd-Index der Teilzeichenkette bei %L Ã¼berschreitet ZeichenkettenlÃ¤ngeEnd-Index der Teilzeichenkette bei %L ist zu groÃŸEnd-Index der Teilzeichenkette bei %L muss INTEGER-Typ habenEnd-Index der Teilzeichenkette bei %L muss skalar seinAnfangs-Index %td der Teilzeichenkette bei %L muss mindestens 1 seinAnfangs-Index der Teilzeichenkette bei %L ist kleiner als EinsAnfangs-Index der Teilzeichenkette bei %L muss INTEGER-Typ habenAnfangs-Index der Teilzeichenkette bei %L muss skalar seinStart- und Endposition der Teilzeichenkette der Zielspezifikation bei %L mÃ¼ssen konstante AusdrÃ¼cke seinVorschlagen, dass das SchlÃ¼sselwort Â»overrideÂ« fÃ¼r Deklarationen von virtuellen Funktionen verwendet wird, die andere Funktionen Ã¼bersteuern.Die Summe aus Feldrang %d und Korang %d bei %C Ã¼bersteigt die HÃ¶chstanzahl %d an DimensionenSumme des zweiten und dritten Arguments von IBITS Ã¼berschreitet Bit-GrÃ¶ÃŸe bei %LDie Liste der zu bindenden Objekte aus einer Datei liefern, statt aus der Befehlszeile.Eingebaute 3DNow!-Funktionen unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r 512-Bit-Vektoren unterstÃ¼tzen.Eingebaute AES-Funktionen und Codeerzeugung unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r AMX-BF16 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r AMX-COMPLEX unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r AMX-FP16 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r AMX-FP8 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r AMX-INT8 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r AMX-MOVRS unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r AMX-TF32 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r AMX-TILE unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r AMX-TRANSPOSE unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r AVX512VNNI unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r AVX512VP2INTERSECT unterstÃ¼tzen.Eingebaute Athlon-3Dnow!-Funktionen unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r BMI unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r BMI2 unterstÃ¼tzen.C++17-Allozierung von Ã¼berausgerichteten Typen unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r CLDEMOTE unterstÃ¼tzen.CLFLUSHOPT-Befehle unterstÃ¼tzen.CLWB-Befehl unterstÃ¼tzen.Eingebaute CLZERO-Funktionen und Codeerzeugung unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r ENQCMD unterstÃ¼tzen.Eingebaute F16C-Funktionen und Codeerzeugung unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r FMA4 unterstÃ¼tzen.Eingebaute FSGSBASE-Funktionen und Codeerzeugung unterstÃ¼tzen.FXSAVE- und FXRSTOR-Befehle unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r GFNI unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r HRESET unterstÃ¼tzen.PrÃ¤fixe fÃ¼r Hardware-Lock-Auslassung unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r KL unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r LWP unterstÃ¼tzen.Eingebaute Funktion und Codeerzeugung fÃ¼r LZCNT unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX und SSE unterstÃ¼tzen.Eingebaute MMX-Funktionen unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE und SSE2 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2 und SSE3 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3 und SSE4A unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3 und SSSE3 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3 und SSE4.1 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 und SSE4.2 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 und AVX unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX und AVX2 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX und FMA unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX und SHA512 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX und SM3 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX und SM4 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F und AVX512BW unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F und AVX512CD unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F und AVX512DQ unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F und AVX512IFMA unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F und AVX512VBMI unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F und AVX512VL unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 und AVX512F unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 und AVXVNNIINT16 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 und AVXVNNIINT8 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX10.1-512 und AVX10.2 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX10.1-512, AVX10.2 und AMX-AVX512 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F und AVX512-FP16 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F und AVX512BF16 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F und AVX512BITALG unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F und AVX512VBMI2 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F und AVX512VPOPCNTDQ unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 und AVX10.1-256 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 und AVX10.1-512 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 und AVXIFMA unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 und AVXNECONVERT unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 und AVXVNNI unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 und CMPCCXADD unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MOVDIR64B unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MOVDIRI unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MOVRS unterstÃ¼tzen.Eingebaute MWAIT- und MONITOR-Funktionen und Codeerzeugung unterstÃ¼tzen.Eingebaute MWAITX- und MONITORX-Funktionen und Codeerzeugung unterstÃ¼tzen.Eingebaute PCLMUL-Funktionen und Codeerzeugung unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r PCONFIG unterstÃ¼tzen.Eingebaute PKU-Funktionen und Codeerzeugung unterstÃ¼tzen.Eingebaute PREFETCHI-Funktionen und Codeerzeugung unterstÃ¼tzen.PREFETCHW-Befehl unterstÃ¼tzen.Eingebaute PTWRITE-Funktionen und Codeerzeugung unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r RAOINT unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r RDPID unterstÃ¼tzen.Eingebaute RDRND-Funktionen und Codeerzeugung unterstÃ¼tzen.RDSEED-Befehl unterstÃ¼tzen.Eingebaute RTM-Funktionen und Codeerzeugung unterstÃ¼tzen.Eingebaute Funktionen und Codegenerierung fÃ¼r SERIALIZE unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r SGX unterstÃ¼tzen.Eingebaute SHA1- und SHA256-Funktionen und Codeerzeugung unterstÃ¼tzen.Eingebaute TBM-Funktionen und Codeerzeugung unterstÃ¼tzen.TLS-Segment grÃ¶ÃŸer als 64K unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r TSXLDTRK unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r UINTR unterstÃ¼tzen.Eingebaute USER_MSR-Funktionen und Codeerzeugung unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r VAES unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r VPCLMULQDQ unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r WAITPKG unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r WBNOINVD unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r WIDEKL unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r XOP unterstÃ¼tzen.XSAVE- und XRSTOR-Befehle unterstÃ¼tzen.XSAVEC-Befehle unterstÃ¼tzen.XSAVEOPT-Befehl unterstÃ¼tzen.XSAVES- und XRSTORS-Befehle unterstÃ¼tzen.Ausrichtungen von bis zu 64 Bits unterstÃ¼tzen.Die Befehle amcas[_db].{b/h/w/d} unterstÃ¼tzen.Die Befehle am{swap/add}[_db].{b/h} unterstÃ¼tzen.Aufrufe zwischen Thumb- und ARM-BefehlssÃ¤tzen unterstÃ¼tzen.Codegenerierung fÃ¼r APX-FunktionalitÃ¤t unterstÃ¼tzen, einschlieÃŸlich EGPR, PUSH2POP2, NDD, PPX, NF, CCMP und ZU.Codeerzeugung von Advanced-Bit-Manipulation-Befehle (ABM) unterstÃ¼tzen.Codeerzeugung von cmpxchg16b-Befehlen unterstÃ¼tzen.Codeerzeugung von crc32-Befehlen unterstÃ¼tzen.Codeerzeugung von movbe-Befehlen unterstÃ¼tzen.Codeerzeugung von popcnt-Befehlen unterstÃ¼tzen.Codeerzeugung von sahf-Befehlen in 64-Bit x86-64-Code unterstÃ¼tzen.Die Befehle div.w[u] und mod.w[u] fÃ¼r Eingaben ohne Vorzeichenerweiterung unterstÃ¼tzen.Dynamische Initialisierung thread-lokaler Variablen in anderer Ãœbersetzungseinheit unterstÃ¼tzen.Flag-erhaltende Add-Carry-Befehle unterstÃ¼tzen.UnterstÃ¼tzung fÃ¼r das A-Argument bei %L, das ein polymorphes A-Argument ist oder allozierbare Komponenten hat, ist noch nicht implementiertUnterstÃ¼tzung fÃ¼r das A-Argument bei %L mit allozierbaren Komponenten ist noch nicht implementiertDie Befehle frecipe.{s/d} und frsqrte.{s/d} unterstÃ¼tzen.Altes Multi-Threading unterstÃ¼tzen.Message-Passing mit der Parallel Environment unterstÃ¼tzen.Mehr als 8192 GOT-EintrÃ¤ge auf ColdFire unterstÃ¼tzen.Multi-Threading unterstÃ¼tzen.Synchrone Nicht-Aufruf-Ausnahmen unterstÃ¼tzen.UnterstÃ¼tzte RÃ¼ckgabeadress-Signierbereiche fÃ¼r AArch64 (fÃ¼r die Option Â»-msign-return-address=Â«):UnterstÃ¼tzte ABIs (fÃ¼r Verwendung mit Option Â»-mabi=Â«):UnterstÃ¼tzte ISA-Spezifikationen (fÃ¼r Verwendung mit Option Â»-misa-spec=Â«):UnterstÃ¼tzte LTO-Kompressionsalgorithmen: zlibAusgabe von Adressen in Fehlersuch-AuszÃ¼gen unterdrÃ¼cken.Ausgabe von Befehlszahlen, Zeilennummernangaben und Adressen in Fehlersuch-AuszÃ¼gen unterdrÃ¼cken.Ausgabe der vorigen und nÃ¤chsten Befehlsnummern in Fehlersuch-AuszÃ¼gen unterdrÃ¼cken.Warnungen unterdrÃ¼cken.ARM/Thumb-Modus pro Funktion abwechselnd an- und ausschalten, um den Compiler zu testen.MIPS16 ASE bei abwechselnden Funktionen fÃ¼r Compilertest ein-/ausschalten.Die Option Â»-mstack-guardÂ« ausschalten.Die Option Â»-mstack-sizeÂ« ausschalten.Symbol %qs bereits deklariertSymbol %qs bei %C bereits deklariertSymbol %qs bei %C ist bereits bei %L als ein Typ deklariertSymbol %qs bei %C wurde bereits mit Host verbundenSymbol %qs bei %C hat keinen IMPLICIT-TypSymbol %qs bei %C wurde vorher noch nicht definiertSymbol %qs bei %C ist USE-verbunden von Modul %qs und kann daher nicht in COMMON vorkommenSymbol %qs bei %C ist bereits in einem COMMON-BlockSymbol %qs bei %C ist mehrdeutigSymbol %qs bei %C muss ein NAMELIST-Gruppenname seinSymbol %qs bei %L hat bereits eine explizite SchnittstelleSymbol %qs bei %L hat bereits grundlegenden Typen %sSymbol %qs bei %L kann keinen Typen habenSymbol %qs bei %L steht mit Symbol aus Modul %qs in Konflikt, verbunden durch Verwendung bei %LSymbol %qs bei %L steht mit Umbenennungs-Symbol bei %L in KonfliktSymbol %qs bei %L steht mit Symbol bei %L in KonfliktSymbol %qs bei %L hat keinen IMPLICIT-TypSymbol %qs bei %L hat keinen IMPLICIT-Typ; meinen Sie %qs?Symbol %qs bei %L hat das Attribut WEAK, ist aber ein ScheinargumentSymbol %qs bei %L hat das Attribut WEAK, ist aber eine lokale VariableSymbol %qs bei %L ist mehrdeutigDas Symbol %qs bei %L ist in einer BLOCK-DATA-Programmeinheit deklariert, befindet sich aber nicht in einem COMMON-BlockSymbol %qs bei %L ist als PRIVATE markiert, aber wurde mit Bindung %qs markiertDas Symbol %qs hat gemischte Komponenten- und Nicht-Komponenten-Zugriffe bei %LSymbol %qs in COMMON bei %C kann kein POINTER-Feld seinSymbol %qs in COMMON bei %C kann kein Kofeld seinSymbol %qs in Namensliste %qs bei %C muss deklariert sein, bevor die Namensliste deklariert wird.Symbol %qs in Namensliste %qs ist INTENT(IN) bei %CSymbol %qs wird bei %L verwendet, bevor es typisiert wirdSymbol %qs muss ein PARAMETER in DATA-Anweisung bei %C seinSymbol %qs tritt bei %L sowohl in der FROM- als auch in der TO-Klausel aufSymbol %qs tritt bei %L sowohl in der DATA- als auch in der MAP-Klausel aufSymbol %qs bei %L in mehreren Klauseln vorhandenBei %2$L referenziertes Symbol %1$qs nicht im Modul ISO_C_BINDING gefundenBei %2$L referenziertes Symbol %1$qs nicht im intrinsischen Modul ISO_FORTRAN_ENV gefundenBei %2$L referenziertes Symbol %1$qs nicht im Modul %3$qs gefundenSymbol %qs in COMMON-Block %qs bei %C wird indirekt verglichen mit anderem COMMON-Block %qsSymbol bei %C passt nicht zu einem AusdruckSymbol bei %L ist keine ScheinvariableSynonym fÃ¼r Â»-export-dynamicÂ« fÃ¼r Linker-Versionen, die dies unterstÃ¼tzen.Synonym fÃ¼r Â»image_baseÂ«.Synonym fÃ¼r -Wcomment.Synonym fÃ¼r -gnatk8.Syntaxfehler in Â»!$ACC DECLAREÂ«-Liste bei %CSyntaxfehler in Â»!$ACC ROUTINE ( NAME )Â« bei %CSyntaxfehler in !$ACC ROUTINE ( NAME ) bei %C, hinter NAME wird %<)%> erwartetSyntaxfehler in Â»!$OMP DECLARE TARGETÂ«-Liste bei %CSyntaxfehler in !$OMP THREADPRIVATE Liste bei %CSyntaxfehler in !GCC$ ATTRIBUTES-Anweisung bei %CSyntaxfehler in !GCC$-IVDEP-Direktive bei %CSyntaxfehler in !GCC$-NOVECTOR-Direktive bei %CSyntaxfehler in !GCC$-UNROLL-Direktive bei %CSyntaxfehler in !GCC$-VECTOR-Direktive bei %CSyntaxfehler in Anweisung %s bei %CSyntaxfehler in ABSTRACT INTERFACE-Anweisung bei %CSyntaxfehler in ASYNCHRONOUS-Anweisung bei %CSyntaxfehler in AUTOMATIC-Anweisung bei %CSyntaxfehler in CASE-Spezifikation bei %CSyntaxfehler in CHARACTER-Deklaration bei %CSyntaxfehler in CLASS IS-Spezifikation bei %CSyntaxfehler in COMPLEX-Konstante bei %CSyntaxfehler in ELSE-IF-Anweisung nach %LSyntaxfehler in ENUMERATOR-Definition bei %CSyntaxfehler in EQUIVALENCE-Anweisung bei %LSyntaxfehler in FORALL-Iterator bei %CSyntaxfehler in E/A-Iterator bei %CSyntaxfehler in IF-Klausel nach %CSyntaxfehler in IF-Ausdruck bei %CSyntaxfehler in IMPORT-Anweisung bei %CSyntaxfehler in NAME=-Spezifikation fÃ¼r Bindungsmarke bei %CSyntaxfehler in OpenACC-Ausdrucksliste bei %CSyntaxfehler in OpenMP-Â»SINKÂ«-AbhÃ¤ngigkeitstypliste bei %CSyntaxfehler in OpenMP-detach-Klausel bei %CSyntaxfehler in OpenMP-Ausdrucksliste bei %CSyntaxfehler in OpenMP-Variablenliste bei %CSyntaxfehler in PROCEDURE-Anweisung bei %CSyntaxfehler in PROTECTED-Anweisung bei %CSyntaxfehler in RANK-Spezifikation bei %CSyntaxfehler in SAVE-Anweisung bei %CSyntaxfehler in STATIC-Anweisung bei %CSyntaxfehler in SUBMODULE-Anweisung bei %CSyntaxfehler in SUBSTRING-Spezifikation bei %CSyntaxfehler in TYPE IS-Spezifikation bei %CSyntaxfehler in VALUE-Anweisung bei %CSyntaxfehler in VOLATILE-Anweisung bei %CSyntaxfehler in anonymer Struktur-Deklaration bei %CSyntaxfehler in Argumentliste bei %CSyntaxfehler in Feldkonstruktor bei %CSyntaxfehler in ZeichenlÃ¤ngenangabe bei %CSyntaxfehler im allgemeinen Blocknamen bei %CSyntaxfehler in Daten-Deklaration bei %CSyntaxfehler in Ausdruck bei %CSyntaxfehler in allgemeiner Spezifikation bei %CSyntaxfehler in Iterator bei %CSyntaxfehler in geschachtelter Struktur-Deklaration bei %CSyntaxfehler in Initialisierung im alten Stil von %s bei %CSyntaxfehler in Initialisierungsliste im alten Stil bei %CSyntaxfehler in Prozedurzeiger-Komponente bei %CSyntaxfehler: Nachfolgender Ãœberschuss in END INTERFACE-Anweisung bei %CSyntaxfehler: Nachfolgender Ãœberschuss in INTERFACE-Anweisung bei %CTARGET DATA muss mindestens eine der Klauseln MAP, USE_DEVICE_PTR, or USE_DEVICE_ADDR enthalten, bei %LTARGET ENTER DATA mit Zuordnungstyp auÃŸer TO, TOFROM oder ALLOC an MAP-Klausel bei %LTARGET EXIT DATA mit Zuordnungstyp auÃŸer FROM, TOFROM, RELEASE oder DELETE an MAP-Klausel bei %LTARGET%s mit Zuordnungstyp auÃŸer TO, FROM, TOFROM oder ALLOC an MAP-Klausel bei %LÂ»TEAM NUMBERÂ«-Argument fÃ¼r FORM TEAM bei %L muss skalares INTEGER seinArgument TEAM bei %L muss vom TEAM_TYPE des intrinsischen Moduls ISO_FORTRAN_ENV sein, ist jedoch %sArgument TEAM bei %L muss skalar seinTEAM-Argument bei %L fÃ¼r die intrinsische TEAM_NUMBER muss vom Typ TEAM_TYPE seinTEAM-Argument fÃ¼r %qs bei %L muss ein skalarer Ausdruck vom Typ TEAM_TYPE seinArgument TEAM_NUMBER bei %L muss vom Typ INTEGER sein, ist jedoch %sArgument TEAM_NUMBER bei %L muss skalar seinÂ»TEAM_NUMBER=Â« nicht unterstÃ¼tzt bei %CTHREADPRIVATE-Objekt %qs in %s-Klausel bei %LTHREADPRIVATE-Objekt %qs in SHARED-Klausel bei %LTILE-Konstruktion bei %L erzeugt %d Schleifen mit kanonischer Form, aber %d Schleifen werden benÃ¶tigtTILE bei %L erfordert konstanten AusdruckZu verwendende TLS-Dialekte:TLS ist fÃ¼r GCN nicht implementiert.TODO: als typgebunden definierte Zuweisung(en) bei %L nicht durchgefÃ¼hrt, da Feldreferenzen mit mehreren Teilen in AusdrÃ¼cken als Zwischenergebnisse auftreten wÃ¼rden.TODO: unlimited polymorphic MOLD in TRANSFER intrinsic at %LTOPOS-Argument (%ld) auÃŸerhalb des Bereichs 0:%d in intrinsischem MVBITSTOPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsischem MVBITSTYPE IS bei %L Ã¼berlappt sich mit TYPE IS bei %LTYPE mit intrinsischer Typspezifikation bei %CLinker-Lockerungen ausnutzen, um die Anzahl der Befehle zu reduzieren, die fÃ¼r das Materialisieren von Symboladressen verwendet werden.%s von %d Zweigen mindestens einmal genommen
  Akzeptiert zwei durch Komma getrennte nichtnegative ganze Zahlen. Die erste Zahl gibt an, wie viele Zwei-Byte-NOP-Befehle vor der Funktionssprungmarke eingefÃ¼gt werden. Die zweite Zahl gibt an, wie viele HalbwÃ¶rter nach der Funktionssprungmarke mit NOP-Befehlen aufgefÃ¼llt werden. Es werden immer die grÃ¶ÃŸtmÃ¶glichen NOP-Befehle (6, 4 oder 2 Bytes) verwendet. Die Angabe von Â»0,0Â« schaltet das Hotpatching aus.Zum Absenken einer Anweisung nÃ¶tige relative AusfÃ¼hrungsfrequenz des Ziel-Blocks (in Prozent).Zielausdruck in Zeigerzuweisung bei %L muss ein Zeigerergebnis liefernZiel hat separates I&D.Ziel fÃ¼r neue Rangabbildung ist zu klein (%ld < %ld)Auf AM33-Prozessor abzielen.Auf AM33/2.0-Prozessor abzielen.Auf AM34-Prozessor abzielen.Code fÃ¼r die FT32B-Architektur erzeugen.Auf den Software-Simulator abzielen.Ziel: %s
! DCE mitteilen, dass ungenutzte C++-Allokationen entfernt werden.DSE mitteilen, dass der Speicher fÃ¼r ein C++-Objekt tot ist, wenn der Konstruktor anfÃ¤ngt und wenn der Destruktor aufhÃ¶rt.Die Option %<-mfloat128%> wird mÃ¶glicherweise nicht vollstÃ¤ndig unterstÃ¼tztArgument %s bei %L hat Typ Â»%sÂ«, aber die Funktion, die bei %L als OPERATION Ã¼bergeben wurde, gibt Â»%sÂ« zurÃ¼ckDie %1$s-Direktive bei %3$L darf nicht innerhalb einer %2$s-Region angegeben werdenDas A-Argument bei %L von CO_REDUCE darf nicht polymorph seinArgument A bei %L des intrinsischen %s darf keinen Koindex habenDas Feld-Argument bei %L von REDUCE darf nicht polymorph seinDas AUTOMATIC-Objekt %qs bei %L darf kein SAVE-Attribut haben und dard auch keine Variable im main-Programm, einem Modul oder einem Teilmodus sein (F08/C513)Die CHARACTER-Elemente des Feldkonstruktors bei %L mÃ¼ssen dieselbe LÃ¤nge haben (%ld/%ld)Der DEFAULT CASE bei %L kann nicht von zweitem DEFAULT CASE bei %L gefolgt werdenDas Argument Â»DIMÂ« bei %L muss ganzzahlig und skalar seinDas DISTANCE-Argument darf in intrinsischer Routine bei %L nicht zusammen mit COARRAY- oder DIM-Argument angegeben werdenDas FORALL mit Index %qs wird nicht auf der linken Seite der Zuweisung bei %L verwendet und kÃ¶nnte somit mehrere Zuweisungen an dieses Objekt auslÃ¶senDie FROM- und TO-Argumente bei %L verletzen die Aliasing-BeschrÃ¤nkungen (F2003 12.4.1.7)Die FROM- und TO-Argumente des intrinsischen MOVE_ALLOC bei %L mÃ¼ssen den selben Ko-Rang %d/%d habenDie FROM- und TO-Argumente des intrinsischen MOVE_ALLOC bei %L mÃ¼ssen den selben Rang %d/%d habenDas FROM-Argument fÃ¼r MOVE_ALLOC bei %L darf keinen Koindex habenDas Formatspezifikationssymbol H bei %L ist eine in Fortran 95 entfernte BesonderheitHollerith-Konstante bei %L wird bei der Umwandlung in %qs abgeschnittenDas IDENTITY-Argument bei %L muss, falls vorhanden, ein Skalar mit demselben Typ wie ARRAY seinDas INTENT(OUT)-Scheinargument %qs bei %L hat ASSUMED SIZE und kann damit keine Standardinitialisierung habenDer KIND-Parameter %qs bei %C darf weder ASSUMED noch DEFERRED seinDer KIND-Parameter %qs im PDT-Konstruktor bei %C hat keinen WertDie KIND part_ref bei %C kann nur auf einen Ausdruck von intrinsischem Typ angewendet werdenDie LEN part_ref bei %C kann nur auf einen CHARACTER-Ausdruck angewendet werdenDas MASK-Argument bei %L muss, falls vorhanden, ein logisches Feld mit demselben Rang wie ARRAY seinDas NULL im Strukturkonstruktor bei %L wird auf Komponente %qs angewandt, die aber weder ein POINTER noch ein ALLOCATABLE istDas Argument ORDERED bei %L muss, falls vorhanden, logisch und skalar seinDie RE oder IM part_ref bei %C kann nur auf einen COMPLEX-Ausdruck angewendet werdenDie mÃ¶glichen RVV-LMUL (-mrvv-max-lmul=):Der SELECT-RANK-CASE-Ausdruck bei %C muss eine skalare, ganzzahlige Konstante seinDer SELECT-RANK-Selektor bei %C muss eine angenommene Rangvariable seinDas SHAPE-Feld fÃ¼r das intrinsische RESHAPE bei %L hat den negativen Wert %d fÃ¼r die Dimension %dDer STATUS, der in der OPEN-Anweisung bei %L angegeben ist, kann nicht den Wert SCRATCH haben, wenn ein FILE angegeben istDer STATUS, der in der OPEN-Anweisung bei %L angegeben ist, ist %qs, es gibt jedoch keine dazu passende FILE-AngabeDas TO-Argument fÃ¼r MOVE_ALLOC bei %L darf keinen Koindex habenDie TO-Argumente in MOVE_ALLOC bei %L mÃ¼ssen polymorph sein, wenn FROM polymorph istDer absolute Wert von SHIFT bei %L muss kleiner oder gleich BIT_SIZE(%qs) seinDer absolute Wert von SHIFT bei %L muss kleiner oder gleich SIZE bei %L seinDas reservierbare Objekt %qs bei %L muss eine explizite Funktionsschnittstelle haben oder als Feld deklariert seinDas ALLOCATE-Objekt bei %L und der Quellausdruck bei %L mÃ¼ssen Typparameter der gleichen Art habenDie Argumentlistenfunktionen %%VAL, %%LOC oder %%REF bei %L sind in diesem Kontext nicht erlaubtArgument des intrinsischen RANK bei %L muss ein Datenobjekt seinDie Zuweisung zu einer KIND- oder LEN-Komponente eines parametrisierten Typs bei %L ist nicht erlaubtDer assoziierte Name %s mit einem angenommenen Rangziel bei %L muss eine Bounds-Remapping-Liste haben (Liste von lbound:ubound fÃ¼r jede Dimension)Das angenommene Rangdaten-Ziel bei %L muss zusammenhÃ¤ngend seinDas Ziel vermuteten Ranges bei %C muss zusammenhÃ¤ngend seinDas angenommene Rangziel bei %L ist ein experimentelles Merkmal von F202y. Verwenden Sie die Option -std=f202y zum EinschaltenDas Feld %qs bei %L mit vermutetem Rang darf keine Kodimension habenDas Feld vermuteten Ranges bei %C darf keine Kodimension habenFeld mit vermutetem Rang bei %L erfordert Scheinargument %qs mit vermutetem RangDas Scheinargument %qs mit angenommener GrÃ¶ÃŸe wird bei %L an ein Scheinargument %qs mit angenommenem Rang Ã¼bergebenDer Basisname bei %L passt nicht zum Namen der aktuellen ProzedurDer Basisname bei %L darf kein generischer Name seinDer Basisname bei %L darf kein Prozedurzeiger seinDer Basisname bei %L darf kein Eintragsname seinDer Basisname fÃ¼r %<declare variant%> bei %L muss angegeben werdenDie Basisprozedur bei %L muss eine explizite Schnittstelle habenDie Bounds-Remapping-Liste bei %C ist eine experimentelle F202y-Funktion. Verwenden Sie -std=f202y zum AktivierenDer Fehler ist nicht reproduzierbar, daher handelt es sich wahrscheinlich um ein Problem mit der Hardware oder dem Betriebssystem.
! Zeichenkonstante bei %L wird bei der Umwandlung in %s abgeschnittenDie ZeichenlÃ¤nge des %s-Arguments bei %L und die der Argumente fÃ¼r die OPERATION bei %L muss dieselbe seinDie ZeichenlÃ¤nge des %s-Arguments bei %L und die des Funktionsergebnisses fÃ¼r die OPERATION bei %L muss dieselbe seinCodemodell-Optionsnamen fÃ¼r -mcmodel:Die Optionsnamen fÃ¼r Codemodelle fÃ¼r -mexplicit-relocs:Die Komponente bei %C, die in der Typparameterliste bei %L erscheint, hat weder KIND- noch LEN-AttributDie Komponente bei %C, die ein Typparameter ist, muss ein Skalar seinDie Komponente bei %C mit KIND- oder LEN-Attribut erscheint nicht in der Typparameterliste bei %LDas data-target bei %L ist ein Objekt von angenommenem Rang, daher muss das data-pointer-object %s eine Liste zur Neuzuordnung der Grenzen haben (Liste von lbound:ubound fÃ¼r jede Dimension)Der Vorgabewert (und das Gegenteil von Â»-staticÂ«), wird implizit von ausfÃ¼hrbaren Dateien, gemeinsam genutzten Bibliotheken und BÃ¼ndeln verwendet.Der Nenner n des Bruches 1/n der AusfÃ¼hrungshÃ¤ufigkeit der zu klonenden aufgerufenen Funktion fÃ¼r einen bestimmten Aufrufer. Der spezielle Wert 0 bedeutet, dass immer ohne Cut-Off geklont wird.Der Nenner n des Bruchteils 1/n der AusfÃ¼hrungshÃ¤ufigkeit des Eingangsblocks einer Funktion, den ein Basisblock dieser Funktion mindestens haben muss, um als heiÃŸ zu gelten.Der Nenner n des Bruchteils 1/n der maximalen AusfÃ¼hrungsanzahl eines Basisblocks im gesamten Programm, den ein Basisblock mindestens haben muss, um als heiÃŸ zu gelten (im Nicht-LTO-Modus verwendet).Der Nenner n des Bruchteils 1/n der Anzahl der profilierten DurchlÃ¤ufe des gesamten Programms, unter dem die AusfÃ¼hrungszahl eines Grundblocks liegen muss, damit der Grundblock als unwahrscheinlich angesehen wird.Der abgeleitete Parameter %qs bei %C hat keinen VorgabewertDer abgeleitete Typ %qs bei %L hat Typ %qs, der nicht definiert wurdeAuf dem GerÃ¤t befindet sich der Abschnitt .rodata im RAM-Bereich.Die Ã¤lteste macOS-Version, auf der dieses Programm laufen wird (fÃ¼r den Assembler formatiert).Die Ã¤lteste macOS-Version, auf der dieses Programm laufen wird.Das Element im Strukturkonstruktor bei %L fÃ¼r Zeigerkomponente %qs sollte ein POINTER oder ein TARGET seinDas Element im Strukturkonstruktor bei %L fÃ¼r Zeigerkomponente %qs ist %s, sollte aber %s seinDie Ã„quivalenzmenge fÃ¼r %qs bewirkt eine ungÃ¼ltige Erweiterung fÃ¼r COMMON %qs bei %LDie Ã„quivalenzmenge fÃ¼r bei %2$L deklarierte Variable %1$qs verletzt AusrichtungsanforderungenDas Argument Â»errmsg=Â« bei %L muss eine standardartige Zeichenvariable seinDas Ereignishandle bei %L darf kein Element eines Feldes seinDas Ereignishandle bei %L darf nicht Teil eines abgeleiteten Typs oder einer abgeleiteten Klasse seinEvent-Variable bei %L darf nicht koindiziert seinDie folgenden Optionen sind sprachunabhÃ¤ngigDie folgenden Optionen sind sprachbezogenDie folgenden Optionen sind nicht dokumentiertDie folgenden Optionen sind nur spezifisch fÃ¼r die Sprache Die folgenden Optionen werden von der Sprache unterstÃ¼tzt Die folgenden Optionen sind zielspezifischDie folgenden Optionen steuern Warnmeldungen des CompilersDie folgenden Optionen steuern OptimierungenDie folgenden Optionen steuern ParameterDie folgenden Optionen verwenden gemeinsame ArgumenteDie folgenden Optionen verwenden separate ArgumenteDie Funktion, die bei %L als OPERATION Ã¼bergeben wurde, hat Argumente vom Typ Â»%sÂ« und Â»%sÂ«, muss aber Typ Â»%sÂ« habenDie Funktion, die bei %L als OPERATION Ã¼bergeben wird, muss Argumente haben, die skalar, nichtallozierbar und keine Zeiger sind, ebenso der RÃ¼ckgabewertDie Funktion, die bei %L als OPERATION Ã¼bergeben wird, muss das ASYNCHRONOUS-Attribut entweder fÃ¼r keins oder fÃ¼r beide Argumente habenDie Funktion, die bei %L als OPERATION Ã¼bergeben wird, muss das TARGET-Attribut entweder fÃ¼r keins oder fÃ¼r beide Argumente habenDie Funktion, die bei %L als OPERATION Ã¼bergeben wird, muss das VALUE-Attribut entweder fÃ¼r keins oder fÃ¼r beide Argumente habenDie Funktion, die bei %L als OPERATION Ã¼bergeben wird, muss zwei Argumente habenDie Funktion, die bei %L als OPERATION Ã¼bergeben wird, darf bei keinem der Argumente das OPTIONAL-Attribut habenFunktionsergebnis auf der linken Seite der Zuweisung bei %L muss Zeiger-Attribut haben.Interner Fehler: The given type is not NULL, and that's just not fairInterner Fehler: The given type is not a DECL or a TYPEDie ideale Breite der vom Analysierer erzeugten Textdiagramme in Zeichen.Das intrinsische %qs bei %L ist nicht im ausgewÃ¤hlten Standard enthalten, aber %s und %qs werden wie mit EXTERNAL deklariert behandelt. Passende Option %<-std=%> verwenden oder %<-fall-intrinsics%> definieren, um dies zuzulassen.Das bei %2$L deklarierte INTRINSIC %1$qs ist in den derzeitigen Standardeinstellungen nicht verfÃ¼gbar, auÃŸer %3$s. Entsprechende Option %<-std=*%> verwenden, oder %<-fall-intrinsics%> einschalten, um es zu verwenden.Das intrinsische NULL kann nicht als Quellausdruck bei %L verwendet werdenBei %C darf das am weitesten links stehende part-ref in einem data-ref keine Funktionsreferenz seinUntere Schranke fÃ¼r einen fÃ¼r Stack-Smashing-Protection betrachteten Puffer.Die HÃ¶chstzahl Reload-Pseudos, die beim Auslagern eines Nicht-Reload-Pseudos berÃ¼cksichtigt werden.HÃ¶chstmenge des von GCSE zu belegenden Speichers, in Kilobyte.Die maximale Wachstumsrate der CodegrÃ¶ÃŸe bei der Erweiterung in eine Sprungtabelle (in Prozent). Der Parameter wird bei der Optimierung auf GrÃ¶ÃŸe verwendet.Die maximale Wachstumsrate der CodegrÃ¶ÃŸe bei der Erweiterung in eine Sprungtabelle (in Prozent). Der Parameter wird bei der Optimierung auf Geschwindigkeit verwendet.HÃ¶chste VerzÃ¶gerung bei Konflikt, sodass Befehl fÃ¼r spekulative Bewegung in Betracht kommt.Die maximale Schachtelungstiefe von Schleifen, in denen Fallunterscheidungen getroffen werden.Die maximale Tiefe einer Schleifenschachtelung, die vollstÃ¤ndig geschÃ¤lt wird.Die maximale Tiefe eines symbolischen Wertes, bevor der Wert als unbekannt approximiert wird.Die maximale Tiefe der explodierten Knoten, die in einem Dot-Dump erscheinen sollen, bevor auf ein weniger ausfÃ¼hrliches Format umgeschaltet wird.GrÃ¶ÃŸte Tiefe mit rekursivem Inline fÃ¼r Inline-Funktionen.GrÃ¶ÃŸte Tiefe rekursiven Inlinens fÃ¼r Nicht-Inline-Funktionen.Der hÃ¶chste Erweiterungsfaktor beim Kopieren von BasisblÃ¶cken.Der maximale Faktor, den der Schleifenvektorisierer auf die Kosten der Anweisungen in einer inneren Schleife im VerhÃ¤ltnis zur vektorisierten Schleife anwendet.Die HÃ¶chstzahl der von CSE verarbeiteten Befehle vor dem RÃ¼cksetzen.Die maximale LÃ¤nge eines konstanten Strings, um den eingebauten Stringvergleich zu inlinen. Vorgabewert ist 3.GrÃ¶ÃŸte LÃ¤nge des betrachteten Pfades in CSE.Die MaximallÃ¤nge der Liste der anhÃ¤ngigen geplanten Operationen.HÃ¶chstzahl der Speicherstellen, die von cselib aufgezeichnet werden.Die maximale Anzahl von Â»nach dem SuperknotenÂ« expandierten Knoten innerhalb des Analysierers pro Superknoten, bevor die Analyse abbricht.HÃ¶chstzahl der RTL-Knoten, die als letzte Werte des Kombinierers aufgezeichnet werden kÃ¶nnen.Die maximale Anzahl von SSA_NAME-Zuweisungen, die verfolgt werden, um einen Wert zu bestimmen.Die HÃ¶chstzahl der Versuche zur RÃ¼ckverfolgung bei Modulo-Planung von Schleifen.HÃ¶chstzahl der fÃ¼r Zwischen-Block-Scheduling zu betrachtenden BlÃ¶cke in einer Region.HÃ¶chstzahl der Zweige auf dem Pfad durch die geschÃ¤lte Sequenz.Die HÃ¶chstzahl der EinschrÃ¤nkungen pro Zustand.Die maximale Anzahl von expandierten Knoten pro Programmpunkt innerhalb des Analysierers, bevor die Analyse dieses Punkts abbricht.HÃ¶chstzahl der zu betrachtenden eingehenden Kanten fÃ¼r Kreuzsprung.Die maximale Anzahl der nicht durchfÃ¼hrbaren Kanten, die zurÃ¼ckgewiesen werden, bevor eine Diagnose als nicht durchfÃ¼hrbar erklÃ¤rt wird.HÃ¶chstzahl von Befehlen, die Â»combineÂ« zu kombinieren versucht.HÃ¶chstzahl der fÃ¼r Zwischen-Block-Scheduling zu betrachtenden Befehle in einer Region.Die HÃ¶chstzahl der Befehle im Schleifenkopf, die wÃ¤hrend der Schleifenkopfkopier-Phase dupliziert werden.Die HÃ¶chstzahl der Befehle einer vollstÃ¤ndig geschÃ¤lten Schleife.Die HÃ¶chstzahl der Befehle einer geschÃ¤lten Schleife.Die HÃ¶chstzahl der Befehle einer ungeschalteten Schleife.Die HÃ¶chstzahl der zu vervielfÃ¤ltigenden Befehle, wenn berechnete Gotos expandiert werden.Die HÃ¶chstzahl der Befehle in einer einzelnen fÃ¼r Â»inlineÂ« geeigneten Funktion.Die HÃ¶chstzahl der in einer inneren Schleife zu betrachtenden Befehle fÃ¼r Versionierung.Die HÃ¶chstzahl der in einer Ã¤uÃŸeren Schleife zu betrachtenden Befehle fÃ¼r Versionierung, zusÃ¤tzlich zu den Befehlen in inneren Schleifen.Die HÃ¶chstzahl der Befehle, bis zu der eine Inline-Funktion per Rekursion wachsen kann.Die HÃ¶chstzahl der Befehle, bis zu der eine Nicht-Inline-Funktion per Rekursion wachsen kann.HÃ¶chstzahl der vom Scheduler wÃ¤hrend der ersten Planphase fertig zur AusfÃ¼hrung zu betrachtenden Befehle.Die maximale Anzahl von Befehlen, die SuchvorgÃ¤nge kombinieren, um die nÃ¤chste Verwendung eines bestimmten Registers zu finden.Die HÃ¶chstzahl der zu betrachtenden Befehle, um einen VerzÃ¶gerungsschlitz zu fÃ¼llen.Die HÃ¶chstzahl der zu betrachtenden Befehle, um richtige aktive Registerinformationen zu finden.Die HÃ¶chstzahl der zum Abrollen von Schleifen im Mittel zu betrachtenden Befehle.Die HÃ¶chstzahl der zum Abrollen von Schleifen zu betrachtenden Befehle.HÃ¶chstzahl der rÃ¼ckwÃ¤rts zu suchenden Befehle, wenn nach Ã¤quivalentem Neuladen gesucht wird.Die HÃ¶chstzahl der Befehle fÃ¼r automatisches Inlinen von kleinen Funktionen.Die HÃ¶chstzahl der Befehle fÃ¼r automatisches Inlinen.Die HÃ¶chstzahl der Befehle fÃ¼r automatisches Inlinen beim Optimieren auf CodegrÃ¶ÃŸe.HÃ¶chstzahl der Iterationen durch CFG zur Regionserweiterung.Die HÃ¶chstzahl der SchleifendurchlÃ¤ufe, die statisch vorhergesagt werden.Die HÃ¶chstzahl von geschachteltem indirektem inlinen wurde bereits durch den frÃ¼hen Inliner durchgefÃ¼hrt.Die HÃ¶chstzahl der SchÃ¤lvorgÃ¤nge einer einzelnen Schleife, die vollstÃ¤ndig geschÃ¤lt wird.Die HÃ¶chstzahl der SchÃ¤lvorgÃ¤nge einer einzelnen Schleife.Die HÃ¶chstzahl der Anweisungen in geschachtelten Schleifen zum Schleifenaustausch.Die HÃ¶chstzahl, die eine Aufrufstelle in einem Aufrufstapel innerhalb des Analysierers vorkommen darf, bevor die Analyse abgebrochen wird, um zu tiefe Rekursion zu vermeiden.Die HÃ¶chstzahl der Iterationen zum Abrollen in einzelner Schleife.Die HÃ¶chstanzahl der use- und def-Besuche beim Auskundschaften einer STV-Kette, bevor das Auskundschaften abgebrochen wird.Maximales VerhÃ¤ltnis zwischen ArraygrÃ¶ÃŸe und Switch-Zweigen, bei dem eine Switch-Umwandlung erfolgt.Das maximale VerhÃ¤ltnis von EinfÃ¼gungen zu LÃ¶schungen von AusdrÃ¼cken in GCSE.Die empfohlene maximale GrÃ¶ÃŸe des zusammenhÃ¤ngenden Speichers, der von zwei Objekten belegt wird, auf die von nebenlÃ¤ufigen Threads mit zeitlicher LokalitÃ¤t zugegriffen wird. In der Regel die GrÃ¶ÃŸe der L1-Cache-Zeilen, kann aber auch kleiner sein, um diversen Zielprozessoren mit unterschiedlichen Cache-ZeilengrÃ¶ÃŸen gerecht zu werden.Maximale GrÃ¶ÃŸe des Vorgriffsfensters der wÃ¤hlbaren Planung.Kleinste voraussichtliche Beschleunigung, die dem Inliner erlaubt, inline-insns-single und inline-isnsns-auto zu ignorieren.Die Mindestwahrscheinlichkeit fÃ¼r spekulativen Erfolg (in Prozent), sodass spekulativer Befehl eingeplant wird.Kleinste UID fÃ¼r Nicht-Debug-Befehl.Die kleinste Schrittweite, ab der Software-Prefetch-Tipps produziert werden.Die Mindestkosten eines teuren Ausdrucks in der Schleifeninvariantenbewegung.Mindestanzahl der passenden zu betrachtenden Befehle fÃ¼r Kreuzsprung.Die Mindestzahl an Superknoten innerhalb einer Funktion, die vom Analysierer berÃ¼cksichtigt wird, um die Auswirkungen an den Aufrufstellen zusammenzufassen.Kleinste Wahrscheinlichkeit einer Kante, sodass bei der Planung ihr Zustand gesichert wird.Die Mindestwahrscheinlichkeit fÃ¼r das Erreichen eines Quellblockes fÃ¼r spekulatives Zwischen-Block-Scheduling.Der empfohlene Mindestoffset zwischen zwei Objekten, auf die nebenlÃ¤ufig zugegriffen wird, um zusÃ¤tzliche LeistungseinbuÃŸen aufgrund von durch die Implementierung verursachten Konflikten zu vermeiden. Normalerweise die GrÃ¶ÃŸe der L1-Cache-Zeile, kann aber auch grÃ¶ÃŸer sein, um diverse Zielprozessoren mit unterschiedlichen Cache-ZeilengrÃ¶ÃŸen zu berÃ¼cksichtigen. C++17-Code kann diesen Wert im Strukturlayout verwenden, aber es wird dringend davon abgeraten, dies in Ã¶ffentlichen ABIs zu tun.MindestgrÃ¶ÃŸe von Variablen, die sich Stapelspeicher teilen, wenn nicht optimiert wird.Das MindestverhÃ¤ltnis der Schrittweiten, damit Schleifenaustausch profitabel ist.Der minimale Schwellwert fÃ¼r die Wahrscheinlichkeit, dass eine halbinvariante Bedingungsanweisung eine Schleifenteilung auslÃ¶st.Kleinster Wert der Stufenzahl, den der Swing-Modulo-Scheduler erzeugen wird.Das Feld %qs im Modul oder Hauptprogramm bei %L muss konstante Form habenDer Name %qs bei %C wurde bereits als ein externer Modulname verwendetDer Name %qs bei %C kann nicht als ein definierter Operator verwendet werdenDie Anzahl der Newton-Iterationen, um den reziproken Wert einer double-Gleitkommazahl zu berechnen. Die Genauigkeit der Division ist proportional zu diesem Parameter, wenn die angenÃ¤herte Division angeschaltet ist. Standardwert ist 2.Die Anzahl der Newton-Iterationen, um den reziproken Wert einer float-Gleitkommazahl zu berechnen. Die Genauigkeit der Division ist proportional zu diesem Parameter, wenn die angenÃ¤herte Division angeschaltet ist. Standardwert ist 1.Die Anzahl der Feldelemente des SUB-Arguments fÃ¼r IMAGE_INDEX bei %L muss %d (Korang) sein, nicht %dDie Anzahl der Bytes, bei der Stringliterale in Analysator-Textdiagrammen verkÃ¼rzt dargestellt werden sollen.Anzahl der Zyklen, die der Swing-Modulo-Scheduler bei KonfliktprÃ¼fung mit DFA betrachtet.Die Anzahl der Elemente (%d) im Feldkonstruktor bei %L erfordert ErhÃ¶hung der erlaubten oberen Grenze %d. Siehe Option %<-fmax-array-constructor%>.Die Anzahl der Elemente, fÃ¼r die die ÃœberprÃ¼fung der Hash-Tabelle fÃ¼r jedes gesuchte Element durchgefÃ¼hrt wird.Die Anzahl der Elemente im Feldkonstruktor bei %L erfordert ErhÃ¶hung der erlaubten oberen Grenze %d. Siehe Option %<-fmax-array-constructor%>Die Anzahl der Elemente im Feldkonstruktor bei %L erfordert ErhÃ¶hung der erlaubten oberen Grenze %d. Siehe Option %<-fmax-array-constructor%>Die Anzahl der Elemente im Feldkonstruktor bei %L erfordert ErhÃ¶hung der erlaubten oberen Grenze %d. Siehe Option %<-fmax-array-constructor%>Die Anzahl der AusfÃ¼hrungen eines Basisblocks, der als heiÃŸ angesehen wird. Dieser Parameter wird nur im GIMPLE-Frontend verwendet.Die Anzahl der ausgefÃ¼hrten Befehle, bevor Prefetch abgeschlossen ist.Die Anzahl der Bytes, die bei der VerkÃ¼rzung am Anfang eines Zeichenkettenliterals angezeigt werden.Die Anzahl der Bytes, die bei der VerkÃ¼rzung am Ende eines Zeichenkettenliterals angezeigt werden.Die Anzahl der am hÃ¤ufigsten ausgefÃ¼hrten Promille der profilierten AusfÃ¼hrung des gesamten Programms, zu der die AusfÃ¼hrungszahl eines Basisblocks gehÃ¶ren muss, um als heiÃŸ zu gelten (im LTO-Modus verwendet).Die Anzahl der Prefetches, die gleichzeitig laufen kÃ¶nnen.Die Anzahl der Register in jeder Klasse, die von Schleifeninvariantenbewegung freigehalten werden.Das Objekt %qs bei %L mit ASSUMED-Typparametern muss ein Dummy oder ein SELECT-TYPE-Selektor sein (F08/4.2)Der Parameterausdruck bei %C lÃ¤sst sich nicht zu einer INTEGER-Konstante vereinfachenDer Parameterausdruck bei %C muss vom Typ INTEGER sein, nicht %sDer Pfad zu Â»devices.csvÂ«. Im Normalfall kann der GCC-Treiber das selbst rausfinden und an den Compiler Ã¼bermitteln, daher ist die Angabe eigentlich nicht nÃ¶tig.Prozentsatz der Funktion, gewichtet nach AusfÃ¼hrungshÃ¤ufigkeit, die bei Verfolgungsentwurf abgedeckt werden muss. Verwendet, wenn Profil-RÃ¼ckmeldung verfÃ¼gbar ist.Prozentsatz der Funktion, gewichtet nach AusfÃ¼hrungshÃ¤ufigkeit, die bei Verfolgungsentwurf abgedeckt werden muss. Verwendet, wenn Profil-RÃ¼ckmeldung nicht verfÃ¼gbar ist.Das Zeigerobjekt %qs bei %L muss eine explizite Funktionsschnittstelle haben oder als Feld deklariert seinMÃ¶gliche RVV-VektorregisterlÃ¤ngen:MÃ¶gliche SVE-VektorlÃ¤ngen:MÃ¶gliche TLS-Dialekte:Der Rang des Elements im Strukturkonstruktor bei %L passt nicht zu dem der Komponente (%d/%d)Das Register, das fÃ¼r den Zugriff auf den Threadzeiger verwendet wird:Die Datei mit den AuflÃ¶sungen.Dasselbe abhÃ¤ngige Objekt sollte als DEPOBJ-Argument bei %L und als DESTROY-Argument bei %L verwendet werdenDie Skalierung (in Prozent), die auf inline-insns-single und Auto-Limits angewendet wird, wenn die Heuristik darauf hinweist, dass Inlining sehr profitabel ist.Die Form der Komponente %qs im Strukturkonstruktor bei %L unterscheidet sich von der Form der deklarierten Komponente fÃ¼r die Dimension %d (%ld/%ld)Die GrÃ¶ÃŸe einer L1-Cacheline.Die GrÃ¶ÃŸe des L1-Caches.Die GrÃ¶ÃŸe des L2-Caches.Die GrÃ¶ÃŸe eines als groÃŸ angesehenen FunktionskÃ¶rpers.Die GrÃ¶ÃŸe eines als groÃŸ angesehenen Stapelrahmens.Die GrÃ¶ÃŸe einer Ãœbersetzungseinheit, ab der der IPA-CP-Durchlauf sie als groÃŸ ansieht.Die GrÃ¶ÃŸe einer als groÃŸ angesehenen Ãœbersetzungseinheit.Kleinste Zahl unterschiedlicher Werte, fÃ¼r die eine Sprungtabelle besser als ein Baum bedingter SprÃ¼nge ist; bei 0 wird der Standard fÃ¼r die Zielarchitektur verwendet.Der Quellausdruck bei %L darf weder vom Typ EVENT_TYPE sein noch eine EVENT_TYPE-Komponente haben, wenn ALLOCATE-Objekt bei %L ein Koarray istDer Quellausdruck bei %L darf weder vom Typ LOCK_TYPE sein noch eine LOCK_TYPE-Komponente haben, wenn ALLOCATE-Objekt bei %L ein Koarray istDas Argument Â»stat=Â« bei %L muss INTEGER-Variable mit Â»kind=4Â« seinDer Strukturkonstruktor bei %L wurde finalisiert. Dieses Feature wurde aus f08/0011 entfernt. Verwenden Sie -std=f2018 oder -std=gnu, um die Finalisierung zu entfernen.Das bei %2$L referenzierte Symbol %1$qs ist nicht im gewÃ¤hlten Standard vorhandenDer Schwellwert-Anteil fÃ¼r die AusfÃ¼hrung partieller Redundanzbeseitigung nach dem Neuladen.Der Schwellwert-Anteil des AusfÃ¼hrungszÃ¤hlers kritischer Kanten, die Redundanzbeseitigung nach dem Neuladen erlauben.Der Typ %qs bei %L darf nicht mit Wirt verbunden sein, da er von unvertrÃ¤glichem bei %L definierten Objekt mit gleichem Namen blockiert wirdDer Typ fÃ¼r Funktion %qs bei %L ist nicht zugreifbarDer Typ-Parameter in der ALLOCATE-Anweisung mit type-spec muss ein Sternchen sein, da das zugewiesene Objekt %qs bei %L ein Dummy-Argument mit angenommenem Typ-Parameter istDie Typparameter-Angabenliste bei %C kann nicht gleichzeitig ASSUMED- und DEFERRED-Parameter enthaltenDie Typparameter-Angabenliste bei %C enthÃ¤lt zu viele ParameterausdrÃ¼ckeDie Typparameter-Angabenliste bei %C enthÃ¤lt nicht genug ParameterausdrÃ¼ckeDie Spezifikationsliste fÃ¼r Typparameter in der Spezifikation bei %L darf keine DEFERRED-Parameter enthaltenDie Typspezifikation bei %L muss angeben, dass jeder Parameter mit LÃ¤ngentyp vermutet istTypspezifikation darf keinen Sequenz-abgeleiteten Typ oder Typ mit BIND-Attribut in SELECT TYPE bei %C beschreiben [F2003:C815]Obere Schranke zum gemeinsamen Verwenden von Ganzzahlkonstanten.Die obere Schranke in der letzten Dimension muss in der Referenz auf das Feld %qs vermuteter GrÃ¶ÃŸe bei %L auftretenDer Wert fÃ¼r den KIND-Parameter %qs bei %C lÃ¤sst sich nicht auf einen konstanten Ausdruck reduzierenDer Wert von n in %<-finit-character=n%> muss zwischen 0 und 127 liegenDer Wert des Parameters PDT LEN Â»%sÂ« stimmt nicht mit dem in der Dummy-Deklaration Ã¼bereinDer Wert des SELECT-RANK-CASE-Ausdrucks bei %C darf nicht kleiner als Null oder grÃ¶ÃŸer als %d seinDie Version der C++-ABI, die verwendet wird.Die Version der C++-ABI, die fÃ¼r Â»-WabiÂ«-Warnungen und BindungskompatibilitÃ¤tsaliase verwendet wird.Es gibt bereits eine Prozedur mit Bindungsname %qs fÃ¼r den abgeleiteten Typ %qs bei %CEs gibt keine spezifische Funktion fÃ¼r das allgemeine %qs bei %LEs gibt kein spezifisches Unterprogramm fÃ¼r allgemeines %qs bei %LEs gibt bereits eine nicht-generische Prozedur mit Bindungsname %qs fÃ¼r den abgeleiteten Typ %qs bei %CDiese Architektur unterstÃ¼tzt keine Befehle mit SprungschutzDazu gehÃ¶ren explizites DEALLOCATE, Neuzuweisung bei intrinsischer Zuweisung, INTENT(OUT) fÃ¼r allozierbare Dummy-Argumente und Neuzuweisung von allozierbaren Komponenten, die mit einem OpenMP-Allokator alloziert wurdenDies ist freie Software; die Kopierbedingungen stehen in den Quellen. Es
  gibt KEINE Garantie; auch nicht fÃ¼r MARKTGÃ„NGIGKEIT oder FÃœR SPEZIELLE ZWECKE.
  
! Dies ist der Vorgabewert.Dieser Schalter ist veraltet und hat keine Auswirkung.Diese Option ist veraltet; verwenden Sie stattdessen -fplt oder -fno-plt.Diese Option wird ignoriert; sie wird nur zu KompatibilitÃ¤tszwecken bereitgestellt. Sie diente zur Auswahl von Linker- und PrÃ¤prozessor-Optionen fÃ¼r die Verwendung mit der newlib.Diese Option ist standardmÃ¤ÃŸig eingeschaltet, um PR118012 zu umgehen.Diese Option wird intern fÃ¼r die Erzeugung und Auswahl von Multilibs verwendet. Annehmen, dass RJMP/RCALL den gesamten Programmspeicher ansprechen kann.Diese Option wird intern fÃ¼r die Erzeugung und Auswahl von Multilibs verwendet. Das GerÃ¤t hat kein SPH-Sonderfunktionsregister.Diese Option wird intern verwendet. Verwendung von Read-Modify-Write-Befehlen (RMW) einschalten.Diese Option wird intern verwendet. Vorhandensein eines Prozessor-Erratums anzeigen. 32-Bit-Anweisungen nicht Ã¼berspringen.Diese Option wird intern verwendet. Anzahl der 64-KiB-Flash-Segmente festlegen.Diese Option wird intern verwendet. Das GerÃ¤t hat das Bitfeld NVMCTRL_CTRLB.FLMAP.Diese Option ist undokumentiert.Dieser Schalter ist veraltet; nicht verwenden.Dieser Schalter ist veraltet; stattdessen -Werror=implicit-function-declaration verwenden.Dieser Schalter ist veraltet; stattdessen -Wextra verwenden.Dieser Schalter ist veraltet; stattdessen -fsanitize-recover= verwenden.Dieser Schalter ist veraltet; stattdessen -fsanitize-trap= verwenden.Thread-Modell: %s
! Threadprivate bei %L ist nicht SAVEdThreadprivate Variable bei %C ist ein Element eines COMMON-BlocksSchwellwert fÃ¼r Auswertung der MÃ¶glichkeit von IPA-CP, der noch als vorteilhaft zum Kopieren betrachtet wird.Thumb-1 %<hard-float%> VFP-ABIThumb: Annehmen, dass Funktionszeiger an Code Ã¼bergeben werden kÃ¶nnen, der nichts von Thumb weiÃŸ.Thumb: Annehmen, dass nichtstatische Funktionen von ARM-Code aus aufgerufen werden kÃ¶nnen.Thumb: (Blatt-)Stapelrahmen erzeugen, auch wenn nicht erforderlich.Thumb: (Nicht-Blatt-)Stapelrahmen erzeugen, auch wenn nicht erforderlich.Interner Fehler: Thunk is not supposed to have bodyGekachelte Schleife bei %L kann nicht Ã¼ber Gangs, Worker oder Vektoren Ã¼bergreifend parallelisiert werdenZeit, die fÃ¼r Funktionsprolog, -Epilog und sonstigen Overhead veranschlagt wird.Zeit, die fÃ¼r Thunk-Overhead in Funktionen veranschlagt wird.Zum Einschalten der Vorverarbeitung %<-cpp%> verwenden-fvar-tracking-assignments umschalten.Erzeugung von Fehlersuchinformationen umschalten.Zu wenige Codimensionen bei %C, %d statt %d erwartetZu wenige Scheinargumente in DTIO-Prozedur %qs bei %LZu viele Argumente in Aufruf von %qs bei %LZu viele Argumente fÃ¼r %s bei %LZu viele Codimensionen bei %C, %d statt %d erwartetZu viele Komponenten in Strukturkonstruktor bei %LZu viele Bedingungen (%u gefunden); Abdeckung wird nicht gemessenZu viele Ziffern in Anweisungsmarke bei %CZu viele Scheinargumente in DTIO-Prozedur %qs bei %LZu viele Elemente in Feldinitialisierung bei %CInterner Fehler: Too many subscriptsTraits-Array %qs in USES_ALLOCATORS bei %L muss ein eindimensionales benanntes konstantes Array vom Typ %<omp_alloctrait%> seinBedingte Speicherbefehle in unbedingte umwandeln.Transformierende Funktion %qs bei %L darf nicht in einem Initialisierungs-Ausdruck auftretenInterner Fehler: Transparent alias and target%'s assembler names differsVorzeichenbehafteten Ãœberlauf in Addition, Subtraktion und Multiplikation abfangen (Â»trapÂ«).Ausnahme bei __builtin_unreachable auslÃ¶sten, statt es fÃ¼r die Optimierung zu verwenden.Ganzzahldivision durch Null abfangen.Um CodegrÃ¶ÃŸe zu verbessern, eine throw()-Ausnahmespezifikation als Â»noexceptÂ« behandeln.Bekannte sprintf-RÃ¼ckgabewerte als Konstanten behandeln.Zeilen mit Â»DÂ« in Spalte eins als Kommentar behandeln.Fehlende Header-Dateien als generierte Dateien behandeln.Vorzeichenbehafteten Ãœberlauf als undefiniertes Verhalten behandeln. Wird mit -fwrapv -fwrapv-pointer negiert.Die Eingabedatei als bereits vorverarbeitet behandeln.Bei den booleschen Kurzschluss-Operatoren && und || beide Seiten auswerten, wenn das nebenwirkungsfrei zu besserem Code fÃ¼hrt.Â»%sÂ« in der Shell kÃ¶nnte diese BeschrÃ¤nkung erhÃ¶hen.
! Dem Linker erlauben, PIC-Aufrufe in direkte Aufrufe umzuwandeln.Versuchen, Store-Forwarding zu vermeiden.Versuchen, virtuelle SprÃ¼nge in direkte umzuwandeln.Versuchen, Schleifen zu tauschen, wenn es nÃ¼tzt.Versuchen, abgeleitete Typen so kompakt wie mÃ¶glich anzuordnen.Versuchen, Funktionsaufrufe und Returns nach dem Inlinen zu rekonstruieren.Code fÃ¼r angegebenen Prozessor optimieren.Die erwartete Speicher-Wartezeit abstimmen.FÃ¼r angegebene Ziel-CPU oder Architektur optimieren.Alle Warnungen in Fehler umwandeln.Alle Sprachfunktionen, die sich rÃ¼ckgÃ¤ngig machen lassen, ausschalten.Alle Diagnosefunktionen deaktivieren, die die Ausgabe verkomplizieren, wie Zeilennummern, Farbe und Warn-URLs.Aktiviert CET-Instrumentierung fÃ¼r solche switch-Anweisungen, die Sprungtabellen und indirekte SprÃ¼nge verwenden.Durchlauf fÃ¼r Redundante Erweiterungsentfernung (REE) einschalten.Alle zukÃ¼nftigen D-Sprachfunktionen einschalten.Die angegebene Warnung in einen Fehler umwandeln.Zwei Haupt-PROGRAMme bei %L und %CZwei oder mehr Teilreferenzen mit Rang grÃ¶ÃŸer Null dÃ¼rfen nicht bei %L angegeben werdenInterner Fehler: Two symbols with same comdat_group are not linked by the same_comdat_group list.Typ %qs mit DEFERRED-Bindung bei %C ist nicht ABSTRACTTyp %qs der CLASS-Variable %qs bei %L ist nicht erweiterbarTypdeklaration %qs bei %L ist nicht C-kompatibel, aber sie ist BIND(C)Typdefinition von %qs bei %C wurde bereits bei %L definiertTyp nicht zugreifbar in Variablen-Definitionskontext (%s) bei %LUnpassender Typ bei %L bei der Ãœbergabe der globalen Funktion %qs, die bei %L deklariert wurde (%s/%s)UnvertrÃ¤gliche Typen zwischen Argument bei %L und Argument bei %L (%s/%s).Unpassender Typ in Argument %qs bei %L; %s wurde an %s Ã¼bergebenTypname %qs bei %C kann nicht der gleiche wie ein intrinsischer Typ seinTypname %qs bei %C in Konflikt mit vorher deklarierter EntitÃ¤t bei %L, die den gleichen Namen hatTypname %qs bei %C ist mehrdeutigDer Typ des Arguments Â»%sÂ« von IMAGE_INDEX bei %L muss ein INTEGER seinTyp der EntitÃ¤t bei %L ist mit Quellausdruck bei %L typunvertrÃ¤glichTyp der EntitÃ¤t bei %L ist mit Typspezifikation unvertrÃ¤glichTypparameter %qs bei %C hat keinen zugehÃ¶rigen Eintrag in der Typparameter-Namensliste bei %LDer Typ muss eine ZeichenlÃ¤nge von 1 habenFÃ¼r intrinsische Funktion %qs angegebener Typ bei %L wird ignoriertTyp mit ultimativer allozierbarer Komponente ist fÃ¼r %qs in Ortsangabe %s bei %L nicht erlaubtTypgebundener Operator bei %L kann nicht NOPASS seinTypgebundene Prozedur bei %CTypspezifikation bei %L kann keine Parameter mit aufgeschobenem Typ habenTypspezifikation bei %L darf kein Sternchen fÃ¼r einen Typparameter enthaltenDas intrinsische UINT bei %L ist nur gÃ¼ltig mit %<-funsigned%>Bei %L wurde kein UNIT angegebenUNIT-Zahl in CLOSE-Anweisung bei %L muss nicht-negativ seinUNIT-Zahl in INQUIRE-Anweisung bei %L darf nicht %d seinUNIT-Zahl in Anweisung bei %L muss nicht-negativ seinFehlende UNIT-Zahl in Anweisung bei %LUNIT-Spezifikation bei %L muss ein INTEGER-Ausdruck oder eine CHARACTER-Variable seinUNIT-Spezifikation bei %L darf kein Zeichen-PARAMETER seinUNIT-Spezifizierer mit NEWUNIT bei %L nicht erlaubtUNLOCK-Anweisung bei %CUNROLL-Konstrukt bei %L mit PARTIAL-Klausel erzeugt nur eine Schleife mit kanonischer Form, aber %d Schleifen werden benÃ¶tigtArgument UNTIL_COUNT= bei %L muss ein skalarer INTEGER-Ausdruck seinUSE-Anweisung bei %C hat keinen ONLY-QualifiziererSpezifische INTRINSIC-Prozedur fÃ¼r Referenz %qs bei %L kann nicht gefunden werdenSymbol %qs kann nicht gefunden werdenLade-/Speicheroffset fÃ¼r Fusion kann nicht generiert werdenFehler beim Laden der DLL.Spezifische Funktion %qs bei %L kann nicht aufgelÃ¶st werdenSpezifisches Unterprogramm %qs bei %L kann nicht aufgelÃ¶st werdenNicht klassifizierbare GCC-Anweisung bei %CNicht klassifizierbare GCC-Direktive bei %C, wird ignoriertNicht klassifizierbare OpenACC-Anweisung bei %CNicht klassifizierbare OpenMP-Anweisung bei %CNicht klassifizierbare Anweisung bei %CUndefinierte spezifische Bindung %qs als Ziel des GENERIC %qs bei %LUnter -ffast-math einen FRIZ-Befehl fÃ¼r (double)(long long)-Umwandlungen erzeugen.Unter der Kontrolle des Object-Size-Typs warnen, wenn PufferÃ¼berlÃ¤ufe in Stringmanipulationsfunktionen wie memcpy und strcpy auftreten.Ungleiche ZeichenlÃ¤ngen (%ld/%ld) in %sUngleiche ZeichenlÃ¤ngen (%ld, %ld) in %s bei %LUngleiche ZeichenlÃ¤ngen (%wd/%wd) fÃ¼r Zeigerkomponente %qs in Konstruktor bei %LUnerwartetes !$OMP SCAN bei %L auÃŸerhalb eines Schleifenkonstrukts mit %<inscan%>-REDUCTION-KlauselUnerwartetes %<%c%> fÃ¼r Variable %qs nicht-abgeleiteten Typs bei %CUnerwartetes %<(%> bei %CUnerwartetes %<*%> fÃ¼r Codimension %d von %d bei %CUnerwartetes %<*%> in Coarray-Index bei %CUnerwartetes %s bei %C; ALLOCATE- oder %s-Anweisung erwartetUnerwartetes %s bei %C; ALLOCATE-Anweisung nach %s erwartetUnerwartete Anweisung %s bei %CUnerwartete Anweisung %s bei %C in INTERFACE-KÃ¶rperUnerwartete Anweisung %s in BLOCK DATA bei %CUnerwartete Anweisung %s in CONTAINS-Abschnitt bei %CUnerwartete Anweisung %s in FORALL-Block bei %CUnerwartete Anweisung %s in INTERFACE-Block bei %CUnerwartete Anweisung %s in MODULE bei %CUnerwartete Â»%sÂ«-Anweisung in Â»OMP METADIRECTIVEÂ«-Block bei %CUnerwartete Anweisung %s in WHERE-Block bei %CUnerwartete CASE-Anweisung bei %CUnerwartetes DIM-Argument mit Nicht-COARRAY-Argument bei %LUnerwartete END-Anweisung bei %CUnerwartete ENTRY-Anweisung bei %CUnerwartetes EOFUnerwartetes intrinsisches NULL() bei %L fÃ¼r Schein-%qsUnerwarteter OpenACC-Parallelismus.Unerwartete RANK-Anweisung bei %CUnerwartetes SHAPE-Argument bei %L fÃ¼r C_F_POINTER mit skalarem FPTRUnerwartete TYPE IS-Anweisung bei %CUnerwartete allozierte Variable %qs bei %L in der deklarativen Direktive !$OMP ALLOCATEUnerwartete alternative RÃ¼ckgabespezifikation in Unterprogrammaufruf bei %LUnerwartete Referenz auf Feld/Teilstring bei %CUnerwartetes Zeichen in Variablenliste bei %CUnerwartete Zeichen in PARAMETER-Anweisung bei %CUnerwartetes Coarray %qs in %<allocate%> bei %LUnerwartetes Coarray %qs in %<allocate%> bei %L, implizit aufgefÃ¼hrt in %<!$OMP ALLOCATE%> bei %LUnerwartetes Coarray-Argument %qs als Argument bei %L zu deklarativem !$OMP ALLOCATEUnerwarteter Coarray-Bezeichner bei %CUnerwarteter Verweis auf Â»complex-parts designatorÂ« in Â»%sÂ«-Klausel bei %LUnerwartete Konstante bei %CUnerwartete EntitÃ¤ten mit abgeleitetem Typ im binÃ¤ren intrinsischen numerischen Operator %qs bei %LUnerwartetes Dummy-Argument %qs als Argument bei %L zu deklarativem !$OMP ALLOCATEUnerwartetes Element %qc in Formatzeichenkette bei %LUnerwartetes Dateiende in %qsUnerwartetes Ende der Formatzeichenkette bei %LUnerwartetes ModulendeUnerwarteter Ausdruck als Listenelement bei %L in der ALLOCATE-DirektiveUnerwartete function-result-Variable %qs bei %L in deklarativem !$OMP ALLOCATEUnerwarteter intrinsischer Typ %qs bei %LUnerwarteter Ausschuss hinter Â»!$ACC ATOMICÂ«-Anweisung bei %CUnerwarteter Ausschuss hinter Â»!$ACC DECLAREÂ« bei %CUnerwarteter Ausschuss hinter Â»!$OMP DECLARE REDUCTIONÂ« bei %CUnerwarteter Ausschuss hinter Â»!$OMP DECLARE TARGETÂ« bei %CUnerwarteter Ausschuss hinter !$OMP SCAN bei %CUnerwarteter Ausschuss hinter $OMP BARRIER-Anweisung bei %CUnerwarteter Ausschuss hinter Â»$OMP CANCELLATION POINTÂ«-Anweisung bei %CUnerwarteter Ausschuss hinter $OMP CRITICAL-Anweisung bei %CUnerwarteter Ausschuss inter $OMP FLUSH-Anweisung bei %CUnerwarteter Ausschuss hinter $OMP MASTER-Anweisung bei %CUnerwarteter Ausschuss hinter Â»$OMP NOTHINGÂ«-Anweisung bei %CUnerwarteter Ausschuss hinter %qs bei %LUnerwarteter Ausschuss hinter NOWAIT-Klausel bei %CUnerwarteter Ausschuss hinter Â»OMP METADIRECTIVEÂ« bei %CUnerwarteter Ausschuss hinter Â»OMP THREADPRIVATEÂ« bei %CUnerwarteter Ausschuss hinter TASKYIELD-Klausel bei %CUnerwartete Angaben hinter Funktionsdeklaration bei %CUnerwartete Zeichen bei %CUnerwartete Angaben in formaler Argumentliste bei %CUnerwartetes null-Zeichen in Zeichenliteral bei %LUnerwartetes Zeichen null oder %<,%> in Zeichenliteral bei %LUnerwartete Zeigervariable %qs bei %L in der deklarativen Direktive !$OMP ALLOCATEUnerwarteter Verweis auf Teilzeichenkette in %s-Klausel bei %LUnexpected thumb1 far jumpUnerwartete Verwendung des Unterprogrammnamens %qs bei %CInterner Fehler: Uninitialized probability of edge %i->%iEinheitszahl in E/A-Anweisung zu groÃŸEinheitszahl in E/A-Anweisung zu kleinUnbekanntes Argument %qs bei %L fÃ¼r intrinsisches %sUnbekannte Argumentlistenfunktion bei %LUnbekanntes Attribut in !GCC$ ATTRIBUTES-Anweisung bei %CUnbekannte Direktive bei %LUnbekannter fremder Laufzeitbezeichner %qd bei %LUnbekannter fremder Laufzeitbezeichner %qs bei %LUnbekannte eingebauter OperatorUnbekannter Operator %qs bei %LUnbekannter Operator %qs bei %L; meinten Sie %qs?Unbekannter Prozedurname %qs bei %CInterner Fehler: Unknown type %dUnbegrenztes polymorphes Argument bei %L passt weder zu einem unbegrenzt polymorphen oder einem Dummyargument mit angenommenem TypUnbeschrÃ¤nkt polymorphes ALLOCATE-Objekt bei %L erfordert entweder eine Typspezifikation, SOURCE-Marke oder MOLD-MarkeNicht erkannter COBOL-Dialektname: %qsUnbekannter MCU-Name %qs.Unbekannte Option fÃ¼r %<-finit-logical%>: %sUnbekannte Option fÃ¼r Endianess-Wert: %qsUnbekannte Option fÃ¼r Gleitkomma-Initialisierungswert: %qsUnbekannte Option %qsVorzeichenlose Konstante bei %L wird abgeschnittenVorzeichenlose Potenzierung nicht erlaubt mit -pedantic bei %LVorzeichenlose Art %d ist bei %C nicht verfÃ¼gbarVorzeichenlos ist noch nicht implementiertVorzeichenlos:Code Â»%cÂ« fÃ¼r Festkomma nicht unterstÃ¼tzt:Operand fÃ¼r Code Â»%cÂ« nicht unterstÃ¼tztNicht unterstÃ¼tzte Anweisung in WHERE bei %LNicht unterstÃ¼tzter Wert fÃ¼r Â»-mmpy-optionÂ«Mehrfache Parallelismus-Stufen in OpenACC-Routinen werden nicht unterstÃ¼tztUnbeendete Zeichenkonstante beginnend bei %CUngenutzte PRIVATE-Variable %qs bei %L deklariertUngenutztes Dummyargument %qs bei %LUnbenutzte Initialisierungszeichenkette bei %L, da die Variable die LÃ¤nge 0 hatUngenutzte Modulvariable Â»%qsÂ«, die bei %L ausdrÃ¼cklich importiert wurdeUngenutzter Parameter %qs, bei %L deklariertUngenutzter Parameter %qs, der bei %L ausdrÃ¼cklich importiert wurdeUngenutzte Variable %qs, bei %L deklariertOberer Argumentindex ist kleiner als der untere bei %LObere Feldreferenz bei %L ist auÃŸerhalb der Schranken (%ld < %ld) in Dimension %dObere Feldreferenz bei %L ist auÃŸerhalb der Schranken (%ld > %ld) in Dimension %dObere Grenze der letzten Coarray-Dimension muss %<*%> sein, bei %CObere Kogrenze ist kleiner als untere Kogrenze bei %LObere Kogrenze ist kleiner als untere Kogrenze von 1 bei %LVerwendung von LRA zum erneuten Laden anstelle des alten Neuladen-Frameworks. Diese Option ist experimentell und kann in zukÃ¼nftigen Versionen des Compilers entfernt werden.Aufruf: %s [Option]â€¦ <Teilbefehl> [Option]â€¦
  
  Aufruf: %s [Optionen] Datei...
  Aufruf: gcov [OPTION]... QUELLE|OBJ...
  
  Â»-Wa,OPTIONÂ« verwenden, um Â»OPTIONÂ« an den Assembler zu Ã¼bergeben.
  
! Â»-Wl,OPTIONÂ« verwenden, um Â»OPTIONÂ« an den Linker zu Ã¼bergeben.
  
! %reloc()-Assembleroperatoren verwenden (fÃ¼r AbwÃ¤rtskompatibilitÃ¤t).%reloc()-Assembleroperatoren verwenden.%reloc()-Operatoren statt Assemblermakros verwenden, um Adressen zu laden.-G fÃ¼r Daten verwenden, die nicht von aktuellem Objekt definiert wurden.-G fÃ¼r objekt-lokale Daten verwenden.Verwenden Sie Â»-mlong-double-64Â« fÃ¼r das 64-Bit-IEEE-Gleitkommazahlen-Format. Verwenden Sie Â»-mlong-double-128Â« fÃ¼r das 128-Bit-Gleitkommazahlen-Format (entweder IEEE oder IBM).128-Bit-AVX-Befehle statt 256-Bit-AVX-Befehlen in Auto-Vektorisierer verwenden.128-bit long double verwenden.16-Bit int verwenden.32-Bit int verwenden.32-Bit-ABI verwenden.Wenn DWARF-Debuginformationen erzeugt werden, dann im 32-Bit-Format.32-Bit-Gleitkommaregister verwenden.Allgemeine Register in 32 Bit Breite verwenden.In Sprungtabellen 32-Bit-Offsets statt 16-Bit-Offsets verwenden.4-Byte-EintrÃ¤ge in switch-Tabellen verwenden.4 Medien-Register verwenden.Die 4-Operanden-Befehle madd.s/madd.d und Ã¤hnliche verwenden, wo mÃ¶glich.4xx-Halbwort-Multiplikationsbefehle verwenden.4xx-dlmzb-Befehl zur Zeichenkettensuche verwenden.64 FPRs verwenden.64 GPRs verwenden.64-Bit-ABI verwenden.Wenn DWARF-Debuginformationen erzeugt werden, dann im 64-Bit-Format.64-Bit-Gleitkommaregister verwenden.Allgemeine Register in 64 Bit Breite verwenden.64-bit long double verwenden.8 Medien-Register verwenden.80-bit long double verwenden.ABI-reservierte Register verwenden.AltiVec-Befehle verwenden.Bionic-C-Bibliothek verwenden.Â»Branch LikelyÂ«-Befehle verwenden, Standard fÃ¼r die Architektur Ã¼berschreiben.CONST16-Befehle zum Laden von Konstanten verwenden.Befehle fÃ¼r Zyklische RedundanzprÃ¼fung (CRC) verwenden.EABI verwenden.Befehle zur Erweiterten Virtuellen Adressierung verwenden.Hardware-Gleitkommabefehle fÃ¼r Multiplikation von einfacher auf doppelte Genauigkeit (FsMULd) verwenden.Die GNU-C-Bibliothek verwenden.Abschnitte sdata/sbss relativ zum GP verwenden.GP-relative Adressierung verwenden, auf um kleine Daten zuzugreifen.Befehle fÃ¼r Globales INValidieren (GINV) verwenden.H8/300-Ausrichtungsregeln verwenden.IEEE-Arithmetik fÃ¼r Gleitkommavergleiche verwenden.IRA-basierte Registerdruckberechnungen in RTL-Optimierungen zum Anheben verwenden.IRA-basierte Registerdruckberechnungen in RTL-Schleifenoptimierungen verwenden.Befehle aus ISA 2.07 Category:Vector.AES und Category:Vector.SHA2 verwenden.Befehle aus ISA 2.07 fÃ¼r transaktionalen Speicher (HTM) verwenden.LRA statt Neuladen verwenden (Ã¼bergangsweise).LRA-Registerallozierer verwenden.Loongson-Erweiterungsbefehle (EXT) verwenden.Loongson-Erweiterungsbefehle R2 (EXT2) verwenden.Loongson-MultiMedia-Erweiterungsbefehle (MMI) verwenden.MCU-Befehle verwenden.Befehle der MIPS-MSA-Erweiterung verwenden.MIPS-3D-Befehle verwenden.MIPS-DSP-Befehle REV 2 verwenden.MIPS-DSP-Befehle verwenden.Mingw-spezifische Thread-UnterstÃ¼tzung verwenden.Neon-Double-Word (statt Quad-Word) Register fÃ¼r Vektorisierung verwenden.Neon-Quad-Word (statt Double-Word) Register fÃ¼r Vektorisierung verwenden.P-Mnemonics fÃ¼r statisch als verfolgt vorhergesehene Zweige verwenden.PLT fÃ¼r PIC-Aufrufe verwenden (-fno-plt: die Adresse beim Aufrufer aus der GOT laden).Â»madÂ«-Befehle im PMC-Stil verwenden.Optionale Befehle der PowerPC-Mehrzweck-Gruppe verwenden.Optionale Befehle der PowerPC-Grafik-Gruppe verwenden.Einzelfeld-mfcr-Befehl des PowerPC V2.01 verwenden.PowerPC V2.02 Gleitkomma-Rundungsbefehle verwenden.PowerPC V2.02 popcntb-Befehl verwenden.PowerPC V2.05 Bytevergleichs-Befehl verwenden.PowerPC V2.06 popcntd-Befehl verwenden.PowerPC-64-Befehlssatz verwenden.ROM statt RAM verwenden.SSE-Register-Ãœbergabekonventionen fÃ¼r SF- und DF-Modus verwenden.STB_GNU_UNIQUE verwenden, sofern der Assembler es unterstÃ¼tzt.SmartMIPS-Befehle verwenden.UNIX-Assemblersyntax verwenden.Vergleich-und-Sprung-Erweiterungen fÃ¼r UltraSPARC verwenden.Multiplizier-Addier-Erweiterungen fÃ¼r UltraSPARC verwenden.BitzÃ¤hl-Befehl fÃ¼r UltraSPARC verwenden.Befehl fÃ¼r erweitertes Subtrahieren mit Ãœbertrag fÃ¼r UltraSPARC verwenden.Visuelle Befehlssatzerweiterungen Version 1.0 fÃ¼r UltraSPARC verwenden.Visuelle Befehlssatzerweiterungen Version 2.0 fÃ¼r UltraSPARC verwenden.Visuelle Befehlssatzerweiterungen Version 3.0 fÃ¼r UltraSPARC verwenden.Visuelle Befehlssatzerweiterungen Version 4.0 fÃ¼r UltraSPARC verwenden.VAX-FP verwenden.VAXC-Strukturkonventionen verwenden.Exitcodes von VMS statt POSIX verwenden.Virtualisierungsbefehle (VZ) verwenden.__cxa_atexit verwenden, um Destruktoren zu registrieren.__cxa_get_exception_ptr in Ausnahmebehandlung verwenden.Einen 32-Bit-Â»longÂ«-Typ verwenden.Eine 4-Byte-Datensatzmarkierung fÃ¼r unformatierte Dateien verwenden.Einen 64-Bit-Â»longÂ«-Typ verwenden.Leichtgewichtige Konfiguration fÃ¼r printf und puts verwenden, um die CodegrÃ¶ÃŸe zu reduzieren. Nur fÃ¼r Anwendungen mit einem Thread, die keine reentrante E/A brauchen. Erfordert Newlib Nano IO.Minimale Laufzeitumgebung (keine statischen Initialisierer oder Konstruktoren) fÃ¼r speicherarme GerÃ¤te verwenden.Eine schlaue Stapelschutzmethode fÃ¼r gewisse Funktionen verwenden.Eine Stapelschutzmethode fÃ¼r jede Funktion verwenden.Einen Startup-Code mit einer kompakten Vektortabelle verwenden.ZusÃ¤tzliche VIS-3-Befehle verwenden, die in OSA2011 hinzugefÃ¼gt wurden.ZusÃ¤tzliche VIS-4-Befehle verwenden, die in OSA2017 hinzugefÃ¼gt wurden.Adressen verwenden, die globale Register belegen.Alle Register verwenden, dadurch keine fÃ¼r Interrupthandler reservieren.Alternative Registernamen verwenden.8-Bit-Â»intÂ«-Typ verwenden.Eine 8-Byte-Datensatzmarkierung fÃ¼r unformatierte Dateien verwenden.Einen Direktwert als Offset vom TLS-Register verwenden. Diese Option ist fÃ¼r fstack-protector-guard=tls gedacht und nicht fÃ¼r die Verwendung in Benutzer-Code.Einen konstanten Wert als Offset vom Stapelschutz-WÃ¤chterregister verwenden, sp_el0. Diese Option ist fÃ¼r fstack-protector-strong gedacht und nicht fÃ¼r die Verwendung in Benutzer-Code.Direktwerte beliebiger GrÃ¶ÃŸen in Bit-Operationen zulassen.Big-Endian Byte-Reihenfolge verwenden.Bittests fÃ¼r hinreichend groÃŸe switch-Anweisungen verwenden.Sprung-und-Abbruch-Sequenzen verwenden, um auf Ganzzahldivision durch Null zu prÃ¼fen.Verzweigungsschutz-Features verwenden.FÃ¼r ausfÃ¼hrbare Datei < 64k bras verwenden.Mit Aufruf verbundene Register fÃ¼r Parameter und RÃ¼ckgabewerte verwenden.call0-ABI verwenden.RÃ¼ckruffunktionen statt inline-Code generieren, wenn innerhalb der Funktion mindestens diese Anzahl an Zugriffen stattfindet.Vom Aufrufer zu sichernde Register Ã¼ber Aufrufe hinweg verwenden, wenn mÃ¶glich.Bestimmte skalare Befehle verwenden, die in ISA 3.0 hinzugefÃ¼gt wurden.Farbe in Diagnosemeldungen verwenden, um relevante Informationen hervorzuheben.Steuerungsspekulation verwenden.Eigene Stacks statt lokalem Speicher fÃ¼r automatischen Speicher verwenden.Datenspekulation nach Neuladen verwenden.Datenspekulation vor Neuladen verwenden.Dezimale Gleitkommabefehle verwenden.Standardmethode fÃ¼r sdata-Behandlung verwenden.Andere Aufrufkonvention mit 'RTD' verwenden.Direkt vergiftende/entgiftende Befehle fÃ¼r Variablen verwenden, die maximal die angegebene GrÃ¶ÃŸe haben.Direkte Referenzen gegen %gs beim Zugriff auf TLS-Daten verwenden.Befehle fÃ¼r Erweiterte Physikalische Adresse (XPA) verwenden.Epsilon beachtende Gleitkomma-Vergleichsbefehle verwenden.Profile von Ausdruckswerten in Optimierungen verwenden.Die f2c-Aufrufkonvention verwenden.Eigenschaften der angegebenen CPU verwenden und dafÃ¼r optimieren.Eigenschaften der gegebenen CPU verwenden und entsprechend Code planen.FÃ¼r angegebene CPU planen und deren Eigenschaften verwenden.Eigenschaften der Architektur ARCH verwenden.Feldweisen Vergleich fÃ¼r Strukturgleichheit verwenden.Flaches Registerfenster-Modell verwenden.Gleitkomma-double-Befehle verwenden.FP-Register verwenden.VollstÃ¤ndigen Registersatz fÃ¼r die Allozierung verwenden.Gegebenes SPARC-V9-Codemodell verwenden.Angegebenen Adressierungsmodus verwenden.Angegebenen Assemblerdialekt verwenden.Im Autovektorisierer die angegebene Breite fÃ¼r Vektorbefehle anstelle der maximalen Registerbreite verwenden.Angegebenen Stapelschutz-WÃ¤chter verwenden.Gegebenen Thread-lokalen Speicherdialekt verwenden.Gegebenes x86-64-Codemodell verwenden.Hardware-Gleitkommabefehle verwenden (Standard).Hardware-Gleitkommabefehle verwenden.Hardware-Divisionsbefehle auf ColdFire verwenden.Hardware-Gleitkommakonvertierungsbefehle verwenden.Hardware-Gleitkommabefehle verwenden.Hardware-Gleitkomma-Wurzel-Befehl verwenden.Hardware-Gleitkommabefehle verwenden.Hardware-Gleitkommabefehle fÃ¼r Division und Quadratwurzel verwenden.Hardware-Gleitkommabefehle verwenden.Hardwarebefehle fÃ¼r Ganzzahldivision verwenden.Hardware-Â»prefetchÂ«-Befehle verwenden.Hardware-Vierfach-Gleitkommabefehle verwenden.Hardware-TransaktionsausfÃ¼hrungs-Befehle verwenden.Hardware-Vektorbefehle verwenden und die Vektor-ABI einschalten.Blockweise Steuerungsspekulation verwenden.Blockweise Datenspekulation nach Neuladen verwenden.Blockweise Datenspekulation vor Neuladen verwenden.Registernamen der Form in/loc/out ausgeben.Indirekte CALLXn-Befehle fÃ¼r groÃŸe Programme verwenden.Indirekte Aufrufe verwenden.Inline-PLT-Sequenzen verwenden, um lange Aufrufe und -fno-plt zu implementieren.Befehlssatz der angegebenen CPU verwenden und entsprechend Code planen.Befehle zum Multiplizieren-Addieren/Subtrahieren verwenden.Interne Funktions-ID bei Profilnachschlagen verwenden.Sprungtabellen fÃ¼r hinreichend groÃŸe switch-Anweisungen verwenden.KohÃ¤rente Cachesteuerungs-Hinweise fÃ¼r ldcw/ldcd verwenden.Stubs aus libgcc zum Speichern und Wiederherstellen von Registern verwenden, die beim Ãœbergang von der 64-Bit-Microsoft- zur System-V-ABI Ã¼berschrieben werden.Little-Endian Byte-Reihenfolge verwenden.Befehle ll, sc und sync verwenden.Die Befehle lwxc1/swxc1/ldxc1/sdxc1 verwenden, wo mÃ¶glich.Media-Befehle verwenden.microMIPS-Befehle verwenden.Befehle zum Multiplizieren-Addieren/Subtrahieren verwenden.Verwendet Â»multiply highÂ«-Befehle fÃ¼r den oberen Teil einer 32Ã—32-Multiplikation.Die musl-C-Bibliothek verwenden.Native MS-Bitfeld-Anordnung verwenden.Neue adddi3/subdi3-Muster verwenden.Normale Aufrufkonvention verwenden.Verwendung des intrinsischen Moduls %qs bei %C steht mit nicht-intrinsischem vorher verwendeten Modulnamen in KonfliktVerwendung des nicht-intrinsischen Moduls %qs bei %C steht mit vorher verwendetem intrinsischen Modulnamen in KonfliktVerwendung der Konstante NUMERIC_STORAGE_SIZE aus intrinsischem Modul ISO_FORTRAN_ENV bei %C ist mit Option %s unvertrÃ¤glichVerwendung der Konstante NUMERIC_STORAGE_SIZE aus intrinsischem Modul ISO_FORTRAN_ENV bei %L ist mit Option %qs unvertrÃ¤glichNur einen TOC-Eintrag pro Prozedur verwenden.GewÃ¶hnlich gecachete Speicherzugriffe fÃ¼r flÃ¼chtige Referenzen verwenden.Gepacktes Stapellayout verwenden.Paarweise-single Gleitkommabefehle verwenden.Mustervergleichsbefehle verwenden.PC-relative switch-Tabellen verwenden â€“ dies erlaubt kÃ¼rzere Fallunterscheidungs-Tabellen.Portierbare Aufrufkonventionen verwenden.Profilierungsinformationen fÃ¼r Verzweigungswahrscheinlichkeiten verwenden.Propolice als Stapelschutzmethode verwenden.Push-Befehle verwenden, um ausgehende Argumente zu sichern.Register r11 verwenden, um die statische Bindung in Funktionsaufrufen Ã¼ber Zeiger zu speichern.ZufÃ¤llige Basisadresse fÃ¼r jeden Rahmen wÃ¤hlen, statt immer 0 zu verwenden.Rote Zone in x86-64-Code verwenden.EingeschrÃ¤nkten Registersatz fÃ¼r die Allozierung verwenden.Registerstapel fÃ¼r Parameter und RÃ¼ckgabewerte verwenden.Register zur ArgumentÃ¼bergabe verwenden.Register r2 und r5 verwenden.Umverteilungsbefehle verwenden (Austausch und umgekehrte Bytereihenfolge beim Laden/Speichern; Voreinstellung).Profilierungsinformationen fÃ¼r Aufrufgraph-Knotengewichtungen verwenden. Vorgabe ist die Datei fbdata.afdo im aktuellen Arbeitsverzeichnis.Profilierungsinformationen fÃ¼r Aufrufgraph-Knotengewichtungen verwenden. Die Profilierungsdatei ist im Argument angegeben.Shared Libraries verwenden.Einfachen Datenspekulationstest fÃ¼r Steuerungsspekulation verwenden.Einfachen Datenspekulationstest verwenden.Simulator-Laufzeitumgebung verwenden.Kleineren, aber langsameren Code fÃ¼r Funktionsprologe und -epiloge verwenden.Software-Gleitkomma-Emulation verwenden (Standard).Software-Gleitkommavergleiche verwenden.Software-Gleitkomma verwenden.Software-Ganzzahlmultiplikation verwenden.Stapelversatz verwenden.Stapelschutzmethode nur fÃ¼r Funktionen mit dem Attribut Â»stack_protectÂ« verwenden.Structs an stÃ¤rkeren Grenzen ausrichten, um Daten doppelwortweise zu kopieren.Stubs fÃ¼r Funktionsprologe verwenden.synci-Befehl verwenden, um i-Cache ungÃ¼ltig zu machen.Tabellenbasierte Optimierung fÃ¼r die Division kleiner vorzeichenbehafteter Ganzzahlen verwenden.Befehl tas.b fÃ¼r __atomic_test_and_set verwenden.Die AIX-Vector-Extended-ABI verwenden.Die AltiVec-ABI-Erweiterungen verwenden.Die Cray-Zeiger-Erweiterung verwenden.DEC-Assemblersyntax verwenden.ELFv1-ABI verwenden.ELFv2-ABI verwenden.GNU-Assemblersyntax verwenden.GNU-Erweiterung fÃ¼r PE-Format fÃ¼r ausgerichtete gemeinsame Daten verwenden.Den Modernen Linker (MOLD) statt des Standardlinkers verwenden.Den RTL-Durchlauf zur Entfernung toten Codes verwenden.Den RTL-Durchlauf zur Entfernung toter Speicherungen verwenden.Den WIP-Borrow-PrÃ¼fer verwenden.BFD-Linker statt Standardlinker verwenden.Bit-Feld-Befehle verwenden.Divisionsbefehl verwenden.Gleitkommaeinheit fÃ¼r Ganzzahladdition und -subtraktion verwenden.Angegebenes Basisregister zur Adressierung des Stapelschutz-WÃ¤chters verwenden.Die angegebene Datenausrichtung verwenden.Angegebenen Offset zur Addressierung des Stapelschutz-WÃ¤chters verwenden.Angegebenes Symbol fÃ¼r Adressierung des Stapelschutz-WÃ¤chters verwenden.Gold-Linker statt Standardlinker verwenden.Hardware-Barrel-Shifter statt der Emulation verwenden.Den LLVM-lld-Linker statt des Standardlinkers verwenden.Die meisten Optionen verwenden, die spezielle FÃ¤higkeiten einschalten, solange sie durch andere Optionen erlaubt sind.FÃ¼r Blockkopieroperationen den Befehl mvcle verwenden.Den schmalstmÃ¶glichen Ganzzahltyp fÃ¼r AufzÃ¤hlungstypen verwenden.Min-/Max-Befehle verwenden, die in ISA 3.0 hinzugefÃ¼gt wurden.Simulator-Laufzeitumgebung verwenden.Verwendet die Software-Multiplikationsemulation (Vorgabe).Softwareemulation fÃ¼r Divisionen verwenden (Vorgabe).Das in der Kommandozeile angegebene Systemregister als Stapelschutz-WÃ¤chterregister verwenden. Diese Option ist fÃ¼r fstack-protector-strong gedacht und nicht fÃ¼r die Verwendung in Benutzer-Code.Die temporÃ¤re und experimentelle NamensauflÃ¶sungs-Pipeline statt der stabilen nutzenTraditionelle GNU-Semantik fÃ¼r Inline-Funktionen verwenden.Trap-Befehle verwenden, um auf Ganzzahldivision durch Null zu prÃ¼fen.FÃ¼r das Bereinigen von undefiniertem Verhalten Traps statt Meldungen verwenden.Die uClibc-C-Bibliothek verwenden.Unicode-Start verwenden und UNICODE-Makro definieren.Vektor-/skalare (VSX) Befehle verwenden, die in ISA 2.07 hinzugefÃ¼gt wurden.Vektor-Befehle verwenden, die in ISA 3.0 hinzugefÃ¼gt wurden.Vektor-/skalare (VSX) Befehle verwenden.ABI mit Fenster-Registern verwenden.Nullerweiternde Speicherladungen verwenden, nicht vorzeichenerweiternde.Kompressionsstufe <Zahl> fÃ¼r zlib/zstd fÃ¼r IL verwenden.Wird zur Generierung von Code fÃ¼r einige Ã¤ltere Kernel-Revisionen verwendet.Hier verwendetIm Fix-and-Continue-Modus verwendet, um anzuzeigen, dass Objektdateien zur Laufzeit eingetauscht werden kÃ¶nnen (Â»swapÂ«).Den Abrollfaktor begrenzen, der angibt, wie weit der Autovektorisierer eine Schleife abrollen darf. Voreinstellung ist 4.Den Abrollfaktor begrenzen, der angibt, wie weit der Autovektorisierer eine Schleife abrollen darf. Voreinstellung ist 6.Benutzerdefinierte nicht-ELEMENTAL-Funktion %qs bei %L ist in WORKSHARE-Konstrukt nicht erlaubtBei %2$L referenzierter Benutzeroperator %1$qs nicht im Modul %3$qs gefundenProzedur fÃ¼r Benutzeroperator %qs bei %L kann nicht vermutete ZeichenlÃ¤nge habenProzedur fÃ¼r Benutzeroperator %qs bei %L muss eine FUNCTION seinProzedur fÃ¼r Benutzeroperator %qs bei %L muss mindestens ein Argument habenDie Verwendung dieser Option wird diagnostiziert.Die Verwendung von %<-mevex512%> ohne aktivierte AVX512-Funktionen zusammen mit AVX10.1 aktiviert keine AVX512- oder AVX10.1-512-Funktionen und verwendet 256 als maximale VektorgrÃ¶ÃŸeIBM %<long double%> mit erweiterter Genauigkeit wird verwendetIEEE %<long double%> mit erweiterter Genauigkeit wird verwendetEs werden eingebaute Spezifikationen verwendet.
! Verwendung schnellerer Algorithmen zum Optimieren von Â»switchÂ«-Anweisungen. Anzahl der SchalterfÃ¤lle (%d) Ã¼berschreitet die Grenze %<--param=switch-lower-slow-alg-max-cases=%d%>.Verwendung der Funktion %qs bei %L ist veraltetVerwendung von Parameter %qs, der bei %L deklariert wurde, ist veraltetVerwenden der Subroutine %qs bei %L ist veraltetVerwendung der Variable %qs bei %L ist veraltetNormalerweise werden Symbole, die Â»private externÂ« (versteckt) sind, beim Linken lokal gemacht. Dieser Befehl unterdrÃ¼ckt das, so dass sie exportiert bleiben.VALUE-Argument der intrinsischen Funktion Â»%sÂ« bei %L muss definierbar seinVALUE-Attribut bei %CVALUE ist in BLOCK bei %C nicht erlaubtVALUE-Objekt %qs in Klausel %s bei %LVALUE-Anweisung bei %CDas VALUES-Argument fÃ¼r DATE_AND_TIME bei %L hat nicht-Standard-ArtDas VALUES-Argument von DATE_AND_TIME bei %L muss einen dezimalen Exponentenbereich von mindestens 4 habenVOIDmode bei einer AusgabeVOLATILE-Attribut bei %CVOLATILE-Attribut bei %L darf nicht in einer PURE-Prozedur angegeben werdenVOLATILE-Attribut nicht zulÃ¤ssig fÃ¼r %qs in REDUCE-Ortsangabe bei %LVOLATILE-Anweisung bei %CGÃ¼ltige ISA-Versionen (fÃ¼r Verwendung mit der Option -mcpu=)GÃ¼ltige Argumente fÃ¼r die Option -msdata=:GÃ¼ltige Argumente fÃ¼r -malign-:GÃ¼ltige Argumente fÃ¼r -mcode-readable=:GÃ¼ltige Argumente fÃ¼r -mfpmath=:GÃ¼ltige Argumente fÃ¼r -mr10k-cache-barrier=:GÃ¼ltige Argumente fÃ¼r -mstack-protector-guart=:GÃ¼ltige Arguments fÃ¼r -mstringop-strategy=:GÃ¼ltige Argumente fÃ¼r -mtp=:GÃ¼ltige Argumente fÃ¼r -param=vsetvl-strategy=:VTable-Zeiger validieren, bevor sie verwendet werden.Der Wert der HINT-Klausel bei %L muss ein gÃ¼ltiger konstanter Hinweisausdruck seinVariable %qs bei %C kann nicht innerhalb der bei %L beginnenden Schleife redefiniert werdenVariable %qs bei %C mit Initialisierung tritt bereits in einer DATA-Anweisung aufVariable %qs bei %L kann nicht BIND(C) sein, weil es weder ein COMMON-Block noch mit Sichtbarkeit auf Modulebene deklariert istVariable %qs bei %L kann nicht gleichzeitig die Attribute ALLOCATABLE und BIND(C) habenVariable %qs bei %L kann nicht gleichzeitig die Attribute OPTIONAL und VALUE haben, da Prozedur %qs BIND(C) istVariable %qs bei %L kann nicht gleichzeitig die Attribute POINTER und BIND(C) habenVariable %qs bei %L wurde bereits in einer Ortsangabe angegebenVariable %qs bei %L wurde keine Formatmarke zugewiesenVariable %qs bei %L in Common-Block %qs bei %C muss in einer C-kompatiblen Art deklariert sein, da Common-Block %qs bind(c) istVariable %qs bei %L muss in diesem Kontext eine Konstante seinVariable %qs bei %L ist INTENT(OUT) und kann daher kein reservierbares Coarray sein oder Coarray-Komponenten habenVariable %qs bei %L ist ein Koarray und ist weder ALLOCATABLE, SAVE, noch ein ScheinargumentVariable %qs bei %L ist ein Scheinargument fÃ¼r die BIND(C)-Prozedur %qs, kÃ¶nnte jedoch unvertrÃ¤glich mit C seinVariable %qs bei %L ist ein Scheinargument fÃ¼r die BIND(C)-Prozedur %qs, jedoch nicht interoperabel mit C, da der abgeleitete Typ %qs nicht mit C interoperabel istVariable %qs bei %L ist ein Scheinargument fÃ¼r die BIND(C)-Prozedur %qs, jedoch nicht interoperabel mit C, da sie polymorph istVariable %qs bei %L ist in COMMON, aber Initialisierung ist nur in BLOCK DATA erlaubtVariable %qs bei %L kÃ¶nnte mit C inkompatibel sein, aber sie ist BIND(C)Variable %qs bei %L kann nicht innerhalb der bei %L beginnenden Schleife als INTENT(INOUT)-Argument fÃ¼r Funktion %qs definiert werdenVariable %qs bei %L kann nicht innerhalb der bei %L beginnenden Schleife als INTENT(INOUT)-Argument fÃ¼r Unterprogramm %qs definiert werdenVariable %qs bei %L ist nicht in einer Ortsangabe von DO CONCURRENT bei %L angegeben, aber aufgrund von DEFAULT (NONE) erforderlichVariable %qs bei %L mit TYPE(C_PTR) oder TYPE(C_FUNPTR) darf kein Koarray seinVariable %qs bei %L auf undefinierten Wert innerhalb der bei %L beginnenden Schleife gesetzt, als INTENT(OUT)-Argument fÃ¼r Funktion %qsVariable %qs bei %L wird auf undefinierten Wert gesetzt, innerhalb der bei %L beginnenden Schleife, als INTENT(OUT)-Argument fÃ¼r Unterroutine %qsVariable %qs bei %L mit OPTIONAL-Attribut in Prozedur %qs, die BIND(C) istVariable %qs bei %L mit OPTIONAL-Attribut in Prozedur %qs, die jedoch BIND(C) istVariable %qs bei %L mit OPTIONAL-Attribut in Prozedur %qs, die BIND(C) istVariable %qs bei %L mit Koarraykomponente muss ein Nichtzeiger, nichtallozierbares Skalar und damit kein Koarray seinVariable %qs kann nicht in Variablen-Definitionskontext (%s) bei %L in PURE-Prozedur auftretenVariable %qs kann nicht im Ausdruck bei %L auftretenVariable %qs aus Modul %qs mit Bindungsmarke %qs bei %L verwendet denselben globalen Bezeichner wie EntitÃ¤t bei %L aus Modul %qsVariable %qs bei %L wurde keine Zielmarke zugewiesenVariable %qs in %s-Klausel wird in NAMELIST-Anweisung bei %L verwendetVariable %qs in Common-Block %qs bei %C kann nicht BIND(C) sein, da sie nicht global istVariable %qs in gemeinsamem Block %qs bei %C muss mit einer mit C interoperablen Art deklariert sein, da der gemeinsame Block %qs BIND(C) istVariable %qs in gemeinsamem Block %qs bei %L kann nicht mit BIND(C) deklariert werden, da sie nicht global istVariable %qs in gemeinsamem Block %qs bei %L kÃ¶nnte inkompatibel mit C sein, obwohl gemeinsamer Block %qs BIND(C) istVariable %qs in Ortsangabe bei %L wird nicht verwendetVariable %qs ist PROTECTED und kann nicht in einem Zeigerzuordnungskontext (%s) bei %L vorkommenVariable %qs ist PROTECTED und kann nicht in Variablen-Definitionskontext (%s) bei %L auftretenVariable %qs bei %L ist kein DummyargumentVariable %qs wird bei %L vor Anweisung ENTRY verwendet, in der sie ein Parameter istVariable %qs, auf die in concurrent-header bei %L verwiesen wird, darf in LOCAL locality-spec bei %L nicht vorkommenVariable %qs muss in derselben GÃ¼ltigkeitsbereichseinheit wie Â»!$ACC DECLAREÂ« bei %L seinVariable %1$qs bei %3$L mit Binde-Marke %2$qs verwenden denselben globalen Bezeichner wie die EntitÃ¤t bei %4$LIn Spezifikationsausdruck verwendete Variable %qs wird bei %L vor Anweisung ENTRY referenziert, in der sie ein Parameter istVariable %s bei %L des Typs EVENT_TYPE oder mit Subkomponente des Typs EVENT_TYPE muss ein Koarray seinVariable %s bei %L mit LOCK_TYPE oder mit Subkomponente mit LOCK_TYPE muss ein Koarray seinVariable %s bei %L mit NO_ARG_CHECK-Attribut darf nicht die Attribute ALLOCATABLE, CODIMENSION, POINTER oder VALUE habenVariable %s bei %L mit NO_ARG_CHECK-Attribut darf nicht das Attribut INTENT(OUT) habenVariable %s bei %L mit NO_ARG_CHECK-Attribut kann nur als effektives Argument verwendet werdenVariable %s bei %L mit NO_ARG_CHECK-Attribut muss ein Scheinargument seinVariable %s bei %L mit NO_ARG_CHECK-Attribut muss vom Typ TYPE(*) oder von einem numerischen intrinsischen Typ seinVariable %s bei %L mit NO_ARG_CHECK-Attribut muss entweder skalar sein oder ein Feld vermuteter GrÃ¶ÃŸeVariable %s bei %L mit NO_ARG_CHECK-Attribut darf keine Referenz auf Subobjekt habenVariable %s kann nicht INTENT(IN) bei %C seinVariable %s kann nicht in PURE-Prozedur bei %C zugewiesen werdenVariable bei %C ist ein Element eines COMMON-BlocksVariable bei %L wird mehrfach in Klauseln derselben OMP-DECLARE-TARGET-Direktive erwÃ¤hntDie Variable in der gewÃ¶hnlichen Zuweisung bei %L ist eine ProzedurzeigerkomponenteVariable ist USE-verknÃ¼pft mit Â»!$ACC DECLAREÂ« bei %LVariable auÃŸer OMP_OUT oder OMP_IN wird bei %L in Kombinierer von !$OMP DECLARE REDUCTION verwendetVariable auÃŸer OMP_PRIV oder OMP_ORIG wird bei %L in INITIALIZER-Klausel von !$OMP DECLARE REDUCTION verwendetUnbekannter Variablentyp in Zuweisung bei %LVariable mit Attribut NO_ARG_CHECK bei %L ist nur als Argument der intrinsischen Funktionen C_LOC und PRESENT erlaubtVarianten in einer Metadirektive bei %L haben unterschiedliche Assoziationen; erwÃ¤gen Sie die Verwendung eines BLOCK-KonstruktsVarianten in einer Metadirektive bei %L haben unterschiedliche Assoziationen; erwÃ¤gen Sie die Verwendung eines BLOCK-Konstrukts oder BEGIN/END METADIRECTIVEZu verwendendes Vektorbibliotheks-ABI.VektorgrÃ¶ÃŸenkonflikte zwischen AVX10.1 und AVX512, als maximale VektorgrÃ¶ÃŸe wird 512 verwendetFÃ¼r Doppelwort-Operationen vektorisieren.Sicherstellen, dass die Codepfade fÃ¼r die ausgegebenen Meldungen machbar sind.Schleifen versionieren, je nachdem, ob sie eine Schrittweite von eins haben.Multiversionierung virtueller Funktionen wird nicht unterstÃ¼tztWAIT bei %C ist in Fortran 95 nicht erlaubtWAIT-Klausel bei %L erfordert einen skalaren INTEGER-AusdruckWAIT-Anweisung ist in PURE-Prozedur bei %C nicht erlaubtWHERE-Zuweisungsziel bei %L hat ungÃ¼ltige FormWHERE-Maske bei %L hat ungÃ¼ltige FormKlausel WHERE/ELSEWHERE bei %L erfordert ein LOGICAL-FeldBei Â»externÂ«-Deklarationen auÃŸerhalb des Dateisichtbarkeitsbereiches warnen.Bei Â»verdÃ¤chtigenÂ« Konstrukten warnen.Warnen, wenn ein Â»#pragma onceÂ« auÃŸerhalb eines Headers vorkommt.Warnen, wenn Â»newÂ« fÃ¼r Typen mit groÃŸer Ausrichtung aufgerufen wird, ohne dass Â»-faligned-newÂ« angegeben ist.Bei @selector() ohne vorher deklarierte Methoden warnen.Bei C-Konstrukten, die nicht in gemeinsamer Teilmenge von C und C++ sind, warnen.Bei C++-Konstrukten, deren Bedeutung sich zwischen ISO C++ 1998 und ISO C++ 2011 unterscheidet, warnen.Bei C++-Konstrukten, deren Bedeutung sich zwischen ISO C++ 2011 und ISO C++ 2014 unterscheidet, warnen.Bei C++-Konstrukten, deren Bedeutung sich zwischen ISO C++ 2014 und ISO C++ 2017 unterscheidet, warnen.Bei C++-Konstrukten warnen, deren Bedeutung sich zwischen ISO C++ 2017 und ISO C++ 2020 unterscheidet.Bei polymorphen Typen in C++ warnen, bei denen das SchlÃ¼sselwort Â»finalÂ« die CodequalitÃ¤t verbessern wÃ¼rde.Bei virtuellen Methoden in C++ warnen, bei denen das SchlÃ¼sselwort Â»finalÂ« die CodequalitÃ¤t verbessern wÃ¼rde.Vor C++11-Konstrukten in Code warnen, der mit einem Ã¤lteren Standard kompiliert wurde.Bei vererbten Konstruktoren in C++11 warnen, wenn die Basisklasse variadischen Konstruktor hat.Vor C++14-Konstrukten in Code warnen, der mit einem Ã¤lteren Standard kompiliert wurde.Vor C++17-Konstrukten in Code warnen, der mit einem Ã¤lteren Standard kompiliert wurde.Vor C++20-Konstrukten in Code warnen, der mit einem Ã¤lteren Standard kompiliert wurde.Vor C++23-Konstrukten in Code warnen, der mit einem Ã¤lteren Standard kompiliert wurde.Vor C++26-Konstrukten in Code warnen, der mit einem Ã¤lteren Standard kompiliert wurde.Bei GCC-Formatzeichenketten warnen, die fÃ¼r Diagnosemeldungen ungeeignete Zeichenketten enthalten.Warnen, wenn NULL an Argumentstellen, die als nicht-NULL erfordernd markiert sind, Ã¼bergeben wird.Bei PCH-Dateien, die gefunden, aber nicht verwendet werden, warnen.Bei USE-Anweisungen, die keinen ONLY-Qualifizierer haben, warnen.Bei Verwendung von __TIME__, __DATE__ oder __TIMESTAMP__ warnen.Vor einem Cast auf einen Referenztyp warnen, der keine zugehÃ¶rige benutzerdefinierte Konvertierungsfunktion verwendet.Bei Zugriffen auf ein innenliegendes Arrayfeld der LÃ¤nge 0 warnen.Bei Ausrichtung von COMMON-BlÃ¶cken warnen.Bei Â»switchÂ«-Anweisungen auf AufzÃ¤hlungen, denen ein Fall fehlt, warnen.Bei leerem KÃ¶rper in einer if- oder else-Anweisung warnen.Bei ungÃ¼ltigen DO-Schleifen warnen.Warnen, wenn ein boolescher Ausdruck mit einer Ganzzahl verglichen wird, deren Wert ungleich true/false ist.Bei PufferÃ¼berlauf in Stringfunktionen wie memcpy und strcpy warnen.Bei Aufrufen nicht explizit deklarierter Prozeduren warnen.Warnen, wenn std::move auf einem lokalen Objekt in einer return-Anweisung aufgerufen wird und dadurch das Ersparen der Kopie verhindert.Warnen, wenn Aufrufe fÃ¼r snprintf und Ã¤hnliche Funktionen die Ausgabe abschneiden.Bei Aufrufen von snprintf und Ã¤hnlichen Funktionen warnen, wenn sie die Ausgabe abschneiden. Entspricht -Wformat-truncation=1.Warnen bei Aufrufen von strcmp und strncmp, die auf Gleichheit geprÃ¼ft werden und die notwendigerweise wahr oder falsch sind, wegen der LÃ¤nge des einen und GrÃ¶ÃŸe des anderen Arguments.Warnen, wenn eine Funktion, die ohne Parameter deklariert wurde, mit Argumenten aufgerufen wird.Bei Aufrufen mit impliziter Schnittstelle warnen.Vor FÃ¤llen warnen, in denen -ftrivial-auto-var-init eine Auto-Variable nicht initialisieren kann.Warnen, wenn Funktionen in unvertrÃ¤gliche Typen umgewandelt werden.Warnen, wenn Funktionen in unvertrÃ¤gliche Funktionstypen umgewandelt werden.Bei Umwandlungen warnen, die null als Ergebnis haben.Bei Umwandlungen, die Qualifizierer streichen, warnen.Bei catch-Behandlern warnen, die nicht Referenztypen sind.Bei bestimmten Operationen auf booleschen AusdrÃ¼cken warnen.Warnen, wenn Zeichenarrays mit einem Stringliteral initialisiert werden, das zu einem nichtterminierten Zeichenarray fÃ¼hrt.Warnen, wenn Code durch inkompatible Ã„nderungen in psABI beeinflusst wird.Bei Codepfaden warnen, in denen NULL an ein Funktionsargument Ã¼bergeben wird, das nicht NULL sein darf.Bei Codepfaden warnen, in denen ein NULL-Funktionszeiger aufgerufen wird.Bei Codepfaden warnen, in denen ein NULL-Zeiger dereferenziert wird.Bei Codepfaden warnen, in denen ein Aufruf von strtok zu undefiniertem Verhalten fÃ¼hrt.Bei Codepfaden warnen, in denen ein Dateideskriptor mehr als einmal geschlossen werden kann.Bei Codepfaden warnen, in denen ein Dateideskriptor nicht geschlossen wird.Bei Codepfaden warnen, in denen ein Dateideskriptor verwendet wird, ohne auf GÃ¼ltigkeit zu prÃ¼fen.Bei Codepfaden warnen, in denen ein bereits freigegebener Wert verwendet wird.Bei Codepfaden warnen, in denen ein vom Heap reservierter Zeiger nicht freigegeben wird.Bei Codepfaden warnen, in denen ein longjmp zurÃ¼ckspult zu einem jmp_buf, der in einem Stapelrahmen gespeichert wurde, der bereits verlassen wurde.Bei Codepfaden warnen, in denen ein Zeiger freigegeben wird, der nicht vom Heap kommt.Bei Codepfaden warnen, in denen ein Zeiger mehr als einmal freigegeben werden kann.Bei Codepfaden warnen, in denen ein Zeiger auf NULL geprÃ¼ft wird, nachdem er bereits dereferenziert wurde.Bei Codepfaden warnen, in denen ein Zeiger auf einen Puffer einem inkompatiblen Typen zugewiesen wird.Bei Codepfaden warnen, in denen ein Zeiger auf einen bereits verschwundenen Stapelrahmen verwendet wird.Bei Codepfaden warnen, in denen ein Zeiger, der mÃ¶glicherweise NULL ist, dereferenziert wird.Bei Codepfaden warnen, in denen ein Wert, der mÃ¶glicherweise NULL ist, an ein Funktionsargument Ã¼bergeben wird, das nicht NULL sein darf.Bei Codepfaden warnen, in denen ein Lese- oder Schreibzugriff auf einem geschlossenen Dateideskriptor versucht wird.Bei Codepfaden warnen, in denen Bits mit Anzahl >= Typbreite geschoben werden.Bei Codepfaden warnen, in denen Bits mit negativer Anzahl geschoben werden.Bei Codepfaden warnen, in denen eine stdio-Datei mehr als einmal geschlossen werden kann.Bei Codepfaden warnen, in denen eine stdio-Datei nicht geschlossen wird.Bei Codepfaden warnen, in denen va_list nach va_end verwendet wird.Bei Codepfaden warnen, in denen eine Lese- oder Schreiboperation auf einem Puffer auÃŸerhalb der Puffergrenzen stattfindet.Bei Codepfaden warnen, in denen Â»assertÂ« mit einem unvalidierten Wert aufgerufen wird.Bei Codepfaden warnen, in denen eine Funktion, die async-signal-unsafe ist, aus einem Signalbehandler heraus aufgerufen wird.Bei Codepfaden warnen, in denen ein Puffer vom Stapelspeicher an putenv Ã¼bergeben wird.Bei Codepfaden warnen, in denen eine Operation in der falschen Lebensphase eines Dateideskriptors versucht wird.Bei Codepfaden warnen, in denen eine Operation auf der falschen Art von Dateideskriptor versucht wird.Bei Codepfaden warnen, in denen ein uninitialisierter Wert verwendet wird.Bei Codepfaden warnen, in denen ein nicht Ã¼berprÃ¼fter Wert als Divisor verwendet wird.Bei Codepfaden warnen, in denen ein nicht Ã¼berprÃ¼fter Wert als Zeiger-Offset verwendet wird.Bei Codepfaden warnen, in denen ein nicht Ã¼berprÃ¼fter Wert als GrÃ¶ÃŸe verwendet wird.Bei Codepfaden warnen, in denen ein nicht Ã¼berprÃ¼fter Wert zur Speicherallozierung verwendet wird.Bei Codepfaden warnen, in denen ein nicht Ã¼berprÃ¼fter Wert als Arrayindex verwendet wird.Bei Codepfaden warnen, in denen Gleitkommaarithmetik verwendet wird, obwohl exakte Berechnungen erforderlich sind.Bei Codepfaden warnen, in denen eine Zeigerdifferenz zu undefiniertem Verhalten fÃ¼hrt.Bei Codepfaden warnen, in denen ein Lesezugriff versucht wird, obwohl die Datei nur zum Schreiben geÃ¶ffnet wurde, oder umgekehrt.Bei Codepfaden warnen, in denen sensible Daten Ã¼ber eine Sicherheitsgrenze hinweg kopiert werden.Bei Codepfaden warnen, in denen sensible Daten in eine Datei geschrieben werden.Bei Codepfaden warnen, in denen die falsche Deallozierungsfunktion aufgerufen wird.Bei Codepfaden warnen, in denen Ã¼berlappende Puffer zu undefiniertem Verhalten fÃ¼hren wÃ¼rden.Bei Codepfaden warnen, in denen va_arg zu oft auf einer va_list verwendet wird.Bei Codepfaden warnen, in denen va_arg einen falschen Typ verwendet.Bei Codepfaden warnen, in denen va_start oder va_copy ohne zugehÃ¶riges va_end verwendet wird.Bei Codepfaden warnen, die anscheinend zu einer Endlosschleife fÃ¼hren.Bei Codepfaden warnen, die anscheinend zu endloser Rekursion fÃ¼hren.Bei Codepfaden warnen, in denen in ein const-Objekt geschrieben wird.Bei Codepfaden warnen, in denen in ein Stringliteral geschrieben wird.Bei Code warnen, der strict-aliasing-Regeln verletzen kÃ¶nnte.Beim Vergleich verschiedener Enum-Typen warnen.Beim Vergleich zwischen zwei Operanden vom Typ Array warnen.Bei Ganzzahldivisionen durch Null zur Ãœbersetzungszeit warnen.Bei Ganzzahldivisionen mit abgeschnittenem Ergebnis warnen.Bei Erzeugung temporÃ¤rer Felder warnen.Bei Â»hÃ¤ngendem elseÂ« warnen.Bei Deklarationen von Entitys warnen, in denen Attribute fehlen, die bei verwandten Entitys jedoch angegeben wurden.Beim LÃ¶schen polymorpher Objekte mit nicht-virtuellen Destruktoren warnen.Vor der Verwendung des veralteten AltiVec-Typen Â»vector long ...Â« warnen.Bei veralteten arithmetischen Umwandlungen von Operanden mit AufzÃ¤hlungstypen warnen.Bei veralteten arithmetischen Umwandlungen von Operanden warnen, bei denen der eine von einem AufzÃ¤hlungstyp ist und der andere eine Gleitkommazahl.Warnen, wenn in der Deklaration einer Varargs-Funktion veralteterweise das Komma vor Â»...Â« weggelassen wird.Warnen, wenn zwischen "" und dem Suffix in einem benutzerdefinierten Literaloperator ein Leerzeichen steht (veraltet).Warnen, wenn der Qualifizierer Â»volatileÂ« in veralteter Form eingesetzt wird.Bei Divisionen von zwei %<sizeof%>-Operatoren warnen, wenn der erste auf ein Array angewendet wird und der Divisor nicht die GrÃ¶ÃŸe des Arrayelements ist.Bei doppelten Zweigen in if-else-Anweisungen warnen.Warnen, wenn in einer if-else-if-Kette doppelte Bedingungen auftauchen.Bei Vermischung von enum/integer-Typen warnen.Bei Â»switchÂ«-Anweisungen auf AufzÃ¤hlungen ohne Â»default:Â«-Fall warnen.Bei Â»switchÂ«-Anweisungen auf AufzÃ¤hlungen, denen ein Fall fehlt und die kein Â»default:Â« haben, warnen.Bei PrÃ¼fung auf Gleichheit mit REAL- oder COMPLEX-AusdrÃ¼cken warnen.Bei Merkmalen, die in ISO C23, aber noch nicht in ISO C11 verfÃ¼gbar sind, warnen.Bei Merkmalen, die in ISO C2Y, aber nicht in ISO C23 verfÃ¼gbar sind, warnen.Bei Merkmalen, die in ISO C99, aber nicht in ISO C90 verfÃ¼gbar sind, warnen.Bei Merkmalen, die in ISO C11, aber nicht in ISO C99 verfÃ¼gbar sind, warnen.Bei Merkmalen, die in traditionellem C nicht verfÃ¼gbar sind, warnen.Bei Formatstrings, die keine Literale sind, warnen.Bei Formatstrings, die NUL-Bytes enthalten, warnen.Beim Entfernen von Funktionsaufrufen warnen.Bei Funktionsaufrufen mit Formatzeichenketten warnen, die hinter das Ende der Zielregion schreiben.Bei Funktionsaufrufen mit Formatzeichenketten warnen, die hinter das Ende der Zielregion schreiben. Entspricht -Wformat-overflow=1.Warnen, wenn in einer Funktionsdefinition die Parameternamen fehlen.Bei Funktionen im K&R-Stil, die Parameter ohne Typangabe haben, warnen.Bei Arithmetik mit Funktionszeigern warnen.Bei Funktionen, die Kandidaten fÃ¼r __attribute__((cold)) sein kÃ¶nnten, warnen.Bei Funktionen, die Kandidaten fÃ¼r __attribute__((const)) sein kÃ¶nnten, warnen.Bei Funktionen, die Kandidaten fÃ¼r __attribute__((malloc)) sein kÃ¶nnten, warnen.Bei Funktionen, die Kandidaten fÃ¼r __attribute__((noreturn)) sein kÃ¶nnten, warnen.Bei Funktionen, die Kandidaten fÃ¼r __attribute__((pure)) sein kÃ¶nnten, warnen.Bei Funktionen, die Kandidaten fÃ¼r __attribute__((returns_nonnull)) sein kÃ¶nnten, warnen.Bei Funktionen, die Kandidaten fÃ¼r Formatattribute sein kÃ¶nnten, warnen.Vor globalen Funktionen ohne vorherige Deklaration warnen.Bei globalen Funktionen ohne Prototypen warnen.Vor globalen Variablen ohne vorherige Deklaration warnen.Bei impliziten Umwandlungen von enum-Typen warnen.Bei impliziten Umwandlungen von Â»floatÂ« nach Â»doubleÂ« warnen.Bei impliziten Deklarationen warnen.Bei impliziten Funktionsdeklarationen warnen.Warnen, wenn Member mit flexiblem Arraytyp falsch verwendet werden, gemÃ¤ÃŸ der Stufe von Â»-fstrict-flex-arraysÂ«.Bei unpassender Attributverwendung warnen.Bei inkompatiblen Umwandlungen zwischen Zahlen und Zeigern (in beide Richtungen) warnen.Bei ungÃ¼ltigen OpenACC-Dimensionen warnen.Bei ungÃ¼ltigen UTF-8-Zeichen warnen.Bei ungÃ¼ltigen Formen von begrenzten oder benannten Escapesequenzen warnen.Bei ungÃ¼ltigen Verwendungen des Makros Â»offsetofÂ« warnen.Warnen, wenn eine Sprungmarke vor einer Deklaration oder am Ende einer zusammengesetzten Anweisung steht.Warnen, wenn der Leerraum am Zeilenanfang stilistisch unsauber ist, auÃŸer in rohen Stringliteralen.Bei mÃ¶glicherweise fehlendem SchlÃ¼sselwort Â»requiresÂ« warnen.Bei in der Hauptdatei definierten, ungenutzten Makros warnen.Bei Makros warnen, deren Header-Einheits-Definitionen nicht Ã¼bereinstimmen.Bei mÃ¶glicherweise nicht initialisierten automatischen Variablen warnen.Warnen, wenn Deklarationen von VLA-Parametern nicht Ã¼bereinstimmen.Bei widersprÃ¼chlichen Deklarationen von Arrayparametern und unsicherem Zugriff auf diese warnen.Bei fehlendem Â»&Â« in fortgesetzten Zeichenkonstanten warnen.Bei fehlenden Feldern in struct-Initialisierungen warnen.Warnen, wenn Deallokationsfunktionen mit expliziter GrÃ¶ÃŸenangabe fehlen.Bei Missbrauch von Pragmas warnen.Bei den meisten impliziten Umwandlungen warnen.Bei mehreren Deklarationen desselben Objektes warnen.Bei verengenden Umwandlungen innerhalb von { }, die in C++11 unzulÃ¤ssig sind, warnen.Bei nicht-virtuellen Destruktoren warnen.Bei fehlenden ISO msvcrt scanf/printf Breiten-Erweiterungen warnen.Warnung vor unsinnigen Werten von --param destructive-interference-size oder constructive-interference-size.Bei Optimierungen, die annehmen, dass vorzeichenbehafteter Ãœberlauf undefiniert ist, warnen.Bei Ãœberlauf in arithmetischen AusdrÃ¼cken warnen.Bei Ã¼berladenen virtuellen Funktionsnamen warnen.Beim Ãœberschreiben von Initialisierungen mit Seiteneffekten warnen.Beim Ãœberschreiben von Initialisierungen ohne Seiteneffekte warnen.Bei gepackten Bitfeldern, deren Offset sich in GCC 4.4 geÃ¤ndert hat, warnen.Warnen, wenn ein Zeiger oder eine Referenz auf eine lokale oder temporÃ¤re Variable an ein musttail-Aufrufargument Ã¼bergeben wird.Warnen, wenn Zeigerumwandlungen die Ausrichtung vergrÃ¶ÃŸern.Warnen, wenn ein Zeiger oder eine Referenz auf eine lokale oder temporÃ¤re Variable mÃ¶glicherweise zu einem musttail-Aufruf entwischt.Bei positioneller Initialisierung von Strukturen warnen, die designierte Initialisierungen erfordern.Bei mÃ¶glichem Aliasing von Dummy-Argumenten warnen.Vor mÃ¶glichen Sicherheitsproblemen mit Formatfunktionen warnen.Bei mÃ¶glichen VerstÃ¶ÃŸen gegen Sequenzpunktregeln warnen.Bei mÃ¶glicherweise falschen Arrayindexen in do-Schleifen warnen.Bei mÃ¶glicherweise fehlenden Klammern um Initialisierungen warnen.Bei mÃ¶glicherweise fehlenden Klammern warnen.Bei mÃ¶glicherweise geschachtelten Blockkommentaren und C++-Kommentaren, die mehr als eine physikalische Zeile umfassen, warnen.Vor potenziell suboptimalen Entscheidungen im Zusammenhang mit OpenACC-ParallelitÃ¤t warnen.Bei UnregelmÃ¤ÃŸigkeiten in printf/scanf/strftime/strfmon-Formatstrings warnen.Bei fragwÃ¼rdiger Verwendung der Makros, die variable Argumente ermitteln, warnen.Warnen, wenn das Quellarray Ã¼ber das Ende hinaus gelesen wird, in Speicherfunktionen wie %<memchr%> und %<memcpy%>.Bei Gleitkommakonstanten-Literalen mit Exponentenbuchstaben Â»qÂ« warnen.Bei redundanten Aufrufen von std::move warnen.Bei RÃ¼ckgabe eines Zeigers/Referenz an lokale oder temporÃ¤re Variable warnen.Bei zurÃ¼ckgegebenen Strukturen, Unions oder Arrays warnen.Bei Semikolon nach Funktionsdefinition innerhalb einer Klasse warnen.Vor Vorzeichenunterschieden mit Formatfunktionen warnen.Bei Vergleichen von vorzeichenbehaftet mit vorzeichenlos warnen.Bei simple-template-id in einem Konstruktor oder Destruktor warnen.WÃ¤hrend der Optimierungen zur Linkzeit bei einigen Verletzungen der One-Definition-Rule aus C++ warnen.Bei Anweisungen warnen, die zwischen Â»switch (...)Â« und dem ersten Â»case:Â« stehen.Bei verirrten Symbolen hinter #elif und #endif warnen.Bei strftime-Formaten, die 2-stellige Jahreszahlen erzeugen, warnen.Vor Indizes mit Typ Â»charÂ« warnen.Vor verdÃ¤chtigem OpenMP-Code warnen.Vor verdÃ¤chtigen Aufrufen von calloc-Ã¤hnlichen Funktionen warnen, bei denen ein sizeof-Ausdruck die Anzahl angibt statt der ElementgrÃ¶ÃŸe.Bei verdÃ¤chtigen Aufrufen von memset warnen, wenn das dritte Argument die Anzahl der Elemente enthÃ¤lt, aber nicht mit der ElementgrÃ¶ÃŸe multipliziert.Bei verdÃ¤chtigen Aufrufen von memset warnen, wenn das dritte Argument eine Null ist, das zweite jedoch nicht.Vor verdÃ¤chtigen Deklarationen von Â»mainÂ« warnen.Warnen, wenn zwei sizeof-AusdrÃ¼cke durcheinander geteilt werden, die nicht korrekt mit Zeigern funktionieren.Bei verdÃ¤chtigen Aufrufen bestimmter Zeichenkettenfunktionen warnen, wenn im Argument sizeof vorkommt.Vor verdÃ¤chtigem Gebrauch von Speicheradressen warnen.Warnen, wenn die Vergleichswerte einer switch-Anweisung auÃŸerhalb des fÃ¼r den Typ erreichbaren Bereichs liegen.Bei switch-Anweisungen mit booleschem Steuerausdruck warnen.Warnen, wenn Templates TU-lokale Entitys innerhalb eines Moduls benennen.Warnen, wenn das globale Modulfragment nicht nur PrÃ¤prozessordirektiven enthÃ¤lt.Bei den merkwÃ¼rdigsten syntaktischen Mehrdeutigkeiten warnen.Bei Dingen warnen, die sich zwischen der aktuellen Â»-fabi-versionÂ« und der angegebenen Version Ã¤ndern.Bei Dingen warnen, die sich bei der Ãœbersetzung mit einem ABI-konformen Compiler Ã¤ndern werden.Warnen, wenn Leerzeichen am Zeilenende stehen, auÃŸer in rohen Stringliteralen.Warnen, wenn Leerzeichen am Zeilenende stehen, auÃŸer in rohen Stringliteralen. Gleichwertig zu Â»-Wtrailing-whitespace=blanksÂ« wenn eingeschaltet und zu Â»-Wtrailing-whitespace=noneÂ« wenn ausgeschaltet.Bei abgeschnittenen ZeichenausdrÃ¼cken warnen.Bei abgeschnittenen Quelltextzeilen warnen.Bei Abschneiden in Stringfunktionen wie strncat und strncpy warnen.In Deklarationen mit Alias-Attributen bezÃ¼glich Typsicherheit und Ã¤hnlicher Fehler und IrrtÃ¼mer warnen.Bei als WÃ¤chter verwendetem, nicht umgewandeltem NULL warnen.Bei Unterlauf numerischer KonstantenausdrÃ¼cke warnen.Bei nicht initialisierten automatischen Variablen warnen.Bei Funktionsdeklarationen ohne Prototyp warnen.Bei nicht erkannten Pragmas warnen.Warnen bei unsicheren Makros, die zu mehreren Anweisungen expandiert werden und innerhalb eines if, else, while, switch oder for verwendet werden.Bei Gleitkommakonstanten ohne Suffix warnen.Bei nicht unterstÃ¼tzten Features im ThreadSanitizer warnen.Bei nicht verwendeten Dummy-Argumenten warnen.Warnen, wenn das experimentelle Function-Multi-Versioning verwendet wird.Bei Verwendung von Zeichenkonstanten mit mehreren Zeichen warnen.Bei unnÃ¼tzen Typumwandlungen warnen.Bei durch den Benutzer angegebenen EinfÃ¼gepfaden, die nicht vorhanden sind, warnen.Bei Verwendungen von Deklarationen mit __attribute__((deprecated)) warnen.Bei Verwendungen von Deklarationen mit __attribute__((warning)) warnen.Warnen, wenn innerhalb eines Arrayindex ein Komma-Operator verwendet wird.Bei Verwendung der Speicherklassenangabe Â»registerÂ« warnen.Bei Verwendung von std::initializer_list warnen, wenn dadurch baumelnde Zeiger entstehen kÃ¶nnen.Bei Verwendung variadischer Makros warnen.Bei Variablen, die von Â»longjmpÂ« oder Â»vforkÂ« geÃ¤ndert werden kÃ¶nnten, warnen.Bei Variablen, die mit sich selbst initialisiert werden, warnen.Bei VerstÃ¶ÃŸen gegen die Stil-Richtlinien von Â»Effective C++Â« warnen.Bei xor-Operatoren warnen, die so aussehen, als sei Potenzieren gemeint.Bei Formaten der LÃ¤nge null warnen.Bei DO-Schleifen mit null DurchlÃ¤ufen warnen.Bei Aufrufen von Allozierungsfunktionen warnen, bei denen als GrÃ¶ÃŸe 0 angegeben ist.Bei Verwendung von bedingt unterstÃ¼tzten Konstrukten warnen.Bei Umwandlung von NULL in Nicht-Zeiger-Typ oder umgekehrt warnen.Warnen bei Deallokationsaufrufen mit Argumenten, die von nicht Ã¼bereinstimmenden Allokationsfunktionen zurÃ¼ckgegeben werden.Bei impliziten Typumwandlungen zwischen vorzeichenbehafteten und vorzeichenlosen Ganzzahlen warnen.Bei impliziten Typumwandlungen warnen, die die PrÃ¤zision von Gleitkommazahlen reduzieren.Bei impliziten Typumwandlungen warnen, die einen Wert Ã¤ndern kÃ¶nnten.Bei unendlich rekursiven Aufrufen warnen.Warnen bei NichtÃ¼bereinstimmung zwischen Aufrufen der Operatoren Â»newÂ« oder Â»deleteÂ« und dem entsprechenden Aufruf der Allokations- oder Deallokationsfunktion.Bei fehlenden Parametertypen in Funktionsdeklarationen warnen.Bei veralteter Verwendung in einer Deklaration warnen.Bei Placement-New-AusdrÃ¼cken mit undefiniertem Verhalten warnen.Bei verdÃ¤chtigen Ganzzahl-AusdrÃ¼cken im Boolean-Kontext warnen.Warnen bei unsicherem direkten Schreibzugriff in Speicher von Klassen-Objekten.Vor der Verwendung von Zeigern auf Auto-Variablen, deren Lebensdauer abgelaufen ist, warnen.Vor der Verwendung von Zeigern auf freigegebenen Speicher warnen.Bei spekulativen Compilierungen wie zum Beispiel __traits(compiles) warnen.Warnen, wenn Â»definedÂ« auÃŸerhalb von Â»#ifÂ« verwendet wird.Warnen, wenn ein C++17-noexcept-Funktionstyp den gemangelten Namen eines Symbols beeinflusst.Warnen, wenn eine Typumwandlung im C-Stil im Programm verwendet wird.Warnen, wenn der RÃ¼ckgabewert der mit dem Attribut warn_unused_result definierten Funktion ignoriert wird.Warnung, wenn eine Klassenschnittstelle keine Superklasse hat. Wurzelklassen kÃ¶nnen ein Attribut verwenden, um diese Warnung zu unterdrÃ¼cken.Warnen, wenn ein Klassentyp eine Basis oder ein Feld hat, deren Typ den unbenannten Namensraum verwendet oder von einem Typen ohne Bindung abhÃ¤ngt.Warnen, wenn ein Vergleich immer zu Â»wahrÂ« oder Â»falschÂ« auswertet.Warnen, wenn ein Vergleich durch beschrÃ¤nkten Wertebereich des Datentyps stets Â»wahrÂ« oder Â»unwahrÂ« ist.Warnen, wenn veraltetes Compiler-Merkmal, Klasse, Methode oder Feld verwendet wird.Warnen, wenn eine Funktion die Anzahl der Pfade (gesteuert durch -fpath-coverage-limit) Ã¼berschreitet und die Pfadabdeckung die Instrumentierung der Funktion aufgibt. Der Grenzwert ist annÃ¤hernd und konservativ, und die Abdeckung kÃ¶nnte auch dann aufgeben, wenn die tatsÃ¤chliche Anzahl etwas unter dem Grenzwert liegt.Warnen, wenn eine Funktion alloca verwendet oder ein Array dynamischer GrÃ¶ÃŸe erzeugt.Warnen, wenn eine lokale Deklaration eine Instanzvariable verdeckt.Warnen, wenn Schleife mit konstanter Anzahl von DurchlÃ¤ufen zu undefiniertem Verhalten fÃ¼hrt.Warnen, wenn fÃ¼r eine Eigenschaft eines Objective-C-Objektes keine Zuweisungssemantik spezifiert ist.Warnen, wenn ein Selektor mehrere Methoden hat.Warnen, wenn eine SIMD-Direktive vom Vektorisierer-Kostenmodell Ã¼bersteuert wird.Warnen, wenn RahmengrÃ¶ÃŸe einer einzelnen Funktion die angegebene RahmengrÃ¶ÃŸe Ã¼berschreitet.Warnen, wenn Zeichenkette lÃ¤nger als die grÃ¶ÃŸte vom Standard angegebene portable LÃ¤nge ist.Bei Teilobjekt mit Attribut abi_tag warnen, das das Gesamtobjekt nicht hat.Warnen, wenn ein throw-Ausdruck garantiert in einem Aufruf von terminate() endet.Warnen, wenn eine Benutzer-Prozedur denselben Namen wie ein Intrinsic hat.Warnen, wenn ein Array variabler LÃ¤nge verwendet wird.Warnen, wenn virtuelle Basis einen nicht trivialen Zuweisungsoperator (move) hat.Warnen, wenn ein MCU-Name unbekannt ist oder mit anderen Optionen unvertrÃ¤glich ist (Vorgabe: eingeschaltet).Warnen, wenn eine zusÃ¤tzliche enum-base in einem elaborated-type-specifier verwendet wird.Warnen, wenn auf ein Array auÃŸerhalb der Grenzen zugegriffen wird.Warnen, wenn eine Parameterdefinition im alten Stil verwendet wird.Warnen, wenn ein undefiniertes Makro in einer #if-Anweisung verwendet wird.Warnen, wenn ein Zeiger mit Â»nonnullÂ«-Attribut mit NULL verglichen wird.Warnen, wenn konstante CFString-Objekte unportable Zeichen enthalten.Warnen, wenn Konstruktoren oder Destruktoren mit PrioritÃ¤ten von 0 bis 100 verwendet werden.Warnen, wenn das Ergebnis der arithmetischen Berechnungen einen falschen Wert ergeben kÃ¶nnte, selbst wenn die Operanden korrekt konvertiert werden.Warnen, wenn das Dereferenzieren eines Nullzeigers zu fehlerhaftem oder undefiniertem Verhalten fÃ¼hren kann.Warnen, wenn devices.csv nicht gefunden wird oder es Probleme beim Einlesen gibt (Vorgabe: an).Warnen, wenn AusdrÃ¼cke so kompliziert sind, dass sie nicht vollstÃ¤ndig verfolgt werden kÃ¶nnen.Warnen, wenn geerbte Methoden nicht implementiert sind.Warnen, wenn das Linksschieben eines vorzeichenbehafteten Werts Ã¼berlÃ¤uft.Warnen, wenn eine negative Zahl nach links geschoben wird.Warnen, wenn Schleifen getauscht wurden.Bei zu vielen Argumenten fÃ¼r eine Funktion (anhand Formatzeichenkette) warnen.Bei Vergleichen von Zeigern unterschiedlicher Typen ohne Cast warnen.Warnen, wenn Qualifizierer von Arrays gestrichen werden, die Zeigerziele sind.Warnen, wenn Rechts-Schiebe-Anzahl >= Breite des Typs ist.Warnen, wenn Schiebe-Anzahl negativ ist.Bei Test von Gleitkommawerten auf Gleichheit warnen.Warnen, wenn die ISR falschgeschrieben ist, beispielsweise ohne __vector-PrÃ¤fix. Voreinstellung: eingeschaltet.Warnen, wenn das NSObject-Attribut auf etwas Anderes als typedef angewendet wird.Warnen, wenn sich der Adressraum einer Adresse Ã¤ndert.Warnen, wenn der Code so kompliziert ist, dass er nicht vollstÃ¤ndig analysiert werden kann.Warnung, wenn die angegebene RÃ¼ckgabewertoptimierung nicht durchgefÃ¼hrt wird, obwohl sie erlaubt ist.Warnen, wenn der Zeiger in einer Zeigerzuweisung sein Ziel Ã¼berleben kÃ¶nnte.Bei UnvertrÃ¤glichkeit eines Variablentyps mit C warnen.Warnen, wenn Trigraphen auftreten, die die Bedeutung des Programmes beeinflussen kÃ¶nnten.Warnen, wenn Typqualifizierer von Zeigern ignoriert werden.Wenn Typsignaturen der Kandidatenmethoden nicht exakt passen, warnen.Warnen, wenn eine Funktion aufgrund eines ungÃ¼ltigen Zeilennummer-Makros frÃ¼her endet als sie beginnt.Warnen, wenn Profile in -fprofile-use nicht existieren.Warnen, wenn Profile in -fprofile-use nicht zueinander passen.Bei Prototypen warnen, die zu anderen Typumwandlungen fÃ¼hren wÃ¼rden, wenn der Prototyp nicht angegeben wÃ¤re.Bei jeglicher Verwendung von alloca warnen.Bei direkter Mehrfachvererbung warnen.Bei direkter virtueller Vererbung warnen.Bei Intrinsics, die nicht im gewÃ¤hlten Standard vorhanden sind, warnen.Bei Namensraum-Definition warnen.Bei primÃ¤rer Deklaration von Templates warnen.Bei verdÃ¤chtigen Aufrufen von Standardfunktionen warnen, die absolute Werte berechnen.Bei verdÃ¤chtigen Konstrukten waren, an denen die umgekehrte skalare Speicherreihenfolge beteiligt ist.Warnen, dass Â»-fno-automaticÂ« Rekursion kaputtmachen kÃ¶nnte.Warnen, wenn nach dem #ifndef eines HeaderwÃ¤chters ein #define eines unterschiedlichen Makros kommt und das HeaderwÃ¤chtermakro am Ende des Headers nicht definiert ist.Warnen, wenn Â»-fhardenedÂ« eine Option nicht aktiviert hat.Warnen, wenn __builtin_frame_address oder __builtin_return_address auf unsichere Weise verwendet werden.Warnen, wenn die eingebauten Funktionen __sync_fetch_and_nand und __sync_nand_and_fetch verwendet werden.Warnen, wenn eine #warning-Direktive verwendet wird.Warnen, wenn eine Basis aufgrund von Mehrdeutigkeit im abgeleiteten Typ unzugÃ¤nglich wird.Warnen, wenn eine eingebaute Funktion mit der falschen Signatur deklariert wird.Bei undefiniertem oder redefiniertem eingebauten PrÃ¤prozessormakro warnen.Warnen, wenn eine Klasse neudeklariert oder mit einem unpassenden KlassenschlÃ¼ssel auf sie verwiesen wird.Warnen, wenn auf eine Klasse oder einen AufzÃ¤hlungstyp mit einem redundanten KlassenschlÃ¼ssel verwiesen wird.Warnung, wenn eine Bedingung zu viele Terme hat und die Profilierung der Bedingungsabdeckung die Instrumentierung des Ausdrucks aufgibt.Warnen, wenn eine konstante Variable nicht verwendet wird.Warnen, wenn eine Umwandlungsfunktion niemals aufgerufen werden kann, aufgrund des Umwandlungs-Zieltypen.Warnen, wenn eine Deklaration keinen Typ angibt.Warnen, wenn in einer Deklaration const, volatile, restrict oder _Atomic doppelt angegeben ist.Warnen, wenn eine Deklaration hinter einer Anweisung gefunden wird.Warnen, wenn eine Funktion ungenutzt bleibt.Warnen, wenn eine Funktion niemals einen konstanten Ausdruck liefert.Warnen, wenn ein Funktionsparameter zwar gesetzt, aber nicht verwendet wird.Warnen, wenn ein Funktionsparameter nicht verwendet wird.Warnen, wenn ein Sprung die Initialisierung einer Variable Ã¼berspringt.Warnen, wenn eine Sprungmarke ungenutzt bleibt.Warnen, wenn Feldvariable auf linker Seite wiederholt reserviert wird.Warnen, wenn Variable auf linker Seite wiederholt reserviert wird.Warnen, wenn ein Literal 0 als NULL-Zeiger verwendet wird.Warnen, wenn ein logischer Operator verdÃ¤chtigerweise immer zu Â»wahrÂ« oder Â»falschÂ« auswertet.Warnen, wenn ein Â»noexceptÂ«-Ausdruck zu Â»falschÂ« auswertet, obwohl der Ausdruck nicht werfen kann.Warnen, wenn sich ein Zeiger im Vorzeichenbesitz in einer Zuweisung unterscheidet.Bei Typkonvertierung von Zeiger auf Ganzzahl anderer Breite warnen.Warnen, wenn ein Zeiger mit '\0' verglichen wird.Warnen, wenn eine bereichsbasierte for-Schleife unnÃ¶tige Kopien erzeugt.Warnen, wenn eine Referenz an ein temporÃ¤res Objekt gebunden ist, dessen Lebenszeit abgelaufen ist.Warnen, wenn eine Registervariable als Â»volatileÂ« deklariert ist.Warnen, wenn eine spezielle AufzÃ¤hlung mit dem falschen Grundtyp deklariert wird.Warnen, wenn Zeichenkette oder Zeichenliteral gefolgt von UD-Suffix auftritt, der nicht mit Unterstrich anfÃ¤ngt.Warnen, wenn eine Struktur, die ein flexibles C99-Array-Mitglied als letztes Feld enthÃ¤lt, nicht am Ende einer anderen Struktur steht.Warnen, wenn in einem switch-Block ein case durchfÃ¤llt.Warnen, wenn ein Wert mit Â»std::moveÂ« in sich selbst verschoben wird.Warnen, wenn eine Variable zwar gesetzt, aber nicht verwendet wird.Warnen, wenn eine Variable nicht verwendet wird.Warnen, wenn Vektoroperation auÃŸerhalb von SIMD kompiliert wird.Warnen, wenn alle Konstruktoren und Destruktoren privat sind.Warnen, wenn bei einer Zuweisung der allozierte Speicherplatz nicht fÃ¼r den Zieltyp des Zeigers ausreicht.Warnen, wenn ein Argument fÃ¼r einen Â»restrictÂ«-Parameter auch in einem anderen Argument vorkommt.Warnen, wenn ein Parameter des atomaren Speichermodells erkennbar auÃŸerhalb des Wertebereiches ist.Warnen, wenn ein Ausnahmebehandler von einem anderen Behandler Ã¼berdeckt wird.Warnen, wenn eine explizit vorgegebene Funktion gelÃ¶scht wird.Warnen, wenn ein Ausdruckswert nicht verwendet wird.Warnen, wenn eine inline-Funktion nicht als solche erzeugt werden kann.Warnen, wenn ein Optimierungsdurchgang ausgeschaltet ist.Warnen, wenn die Argumente von externen Prozeduren nicht passen.Beim Versuch der Freigabe eines Nicht-Heap-Objektes warnen.Bei Umwandlung des Typs von Zeigern auf Elementfunktionen warnen.Warnen, wenn ein Zeiger auf unvollstÃ¤ndigen Typen gelÃ¶scht wird.Warnen, wenn Felder in einer gepackten Struktur nicht ausgerichtet sind.Warnen, wenn ein logisches Nicht im linken Operanden eines Vergleichs verwendet wird.Warnen, wenn mehrere unterschiedliche schnelle Interruptbehandlungsroutinen in Ãœbersetzungseinheit sind.Warnen, wenn Nicht-Template-Friend-Funktionen innerhalb eines Templates deklariert werden.Warnen, wenn StapelzerstÃ¶rungsschutz aus irgendeinem Grund nicht erzeugt wird.Warnen, wenn eine lokale Variable eine andere lokale Variable oder einen Parameter mit gleichem Typ Ã¼berdeckt.Warnen, wenn eine lokale Variable eine andere lokale Variable oder einen Parameter Ã¼berdeckt.Warnen, wenn eine Variable eine andere Ã¼berdeckt (global).Warnen, wenn eine Variable eine andere Ã¼berdeckt. Entspricht -Wshadow=global.Warnen, wenn Ãœberladung zur Umwandlung von vorzeichenbehaftet zu vorzeichenlos fÃ¼hrt.Warnen, wenn AuffÃ¼llen benÃ¶tigt wird, um Strukturelemente auszurichten.Warnen beim Ableiten von Klassentemplateargumenten an Typen ohne Ableitungshinweise.Warnen, wenn Profiling-Instrumentierung verlangt wurde, aber auf eine bestimmte Funktion nicht angewandt werden konnte.Warnen, wenn sizeof auf einen Funktionsparameter angewendet wird, der als Array deklariert ist.Warnen, wenn die Adresse eines gepackten Elements einer Struktur oder Union verwendet wird.Warnen, wenn der Compiler Code umsortiert.Warnen, wenn Feld in einer Struktur nicht ausgerichtet ist.Warnen, wenn die EinrÃ¼ckung des Codes nicht der Blockstruktur entspricht.Warnen, wenn das Â»packedÂ«-Attribut keine Auswirkung auf Strukturanordnung hat.Warnen, wenn das SchlÃ¼sselwort Â»templateÂ« nach einem Token fÃ¼r Memberzugriff in einem abhÃ¤ngigen Memberzugriff-Ausdruck fehlt, wenn dieser Member ein Template ist.Bei Typumwandlung in Zeiger von Ganzzahl anderer GrÃ¶ÃŸe warnen.Bei Zeiger-Umwandlungen zwischen inkompatiblen Zeigertypen warnen.Bei lokal in Funktionen definierten, aber nicht verwendeten Typedefs warnen.Bei StandardrÃ¼ckgabetyp Â»intÂ« fÃ¼r Funktionen (C) und inkonsistenten RÃ¼ckgabetypen (C++) warnen.Warnen, wenn ein Trampolin generiert wird.Immer warnen, wenn eine Objective-C-Zuweisung vom Garbage Collector abgefangen wird.Warnen, wenn Attribute ignoriert werden.Warnen, wenn Typqualifizierer ignoriert werden.Warnen, wenn Funktionen, die void zurÃ¼ckgeben, einen nicht-void-Ausdruck zurÃ¼ckgeben, oder ein RÃ¼ckgabeausdruck in einer Funktion fehlt, die nicht void zurÃ¼ckgibt.WarnungIn cobol1.c sollte niemals ein ungleiches dash-main erscheinenWenn weder Â»signedÂ« noch Â»unsignedÂ« angegeben wurden, das Bitfeld vorzeichenbehaftet machen.Wenn weder Â»signedÂ« noch Â»unsignedÂ« angegeben ist, das Bitfeld vorzeichenlos machen.Wenn Â»-mhard-floatÂ« ausgewÃ¤hlt ist, werden Gleitkommaberechnungen mit doppelter Genauigkeit in Hardware-Befehle Ã¼bersetzt. StandardmÃ¤ÃŸig werden fÃ¼r diese Berechnungen Funktionen aus der libgcc verwendet.Wenn Â»-mhard-floatÂ« ausgewÃ¤hlt ist, werden ungeordnete FlieÃŸkomma-Vergleichs- und Set-Flag-Befehle (lf.sfun*) erzeugt. StandardmÃ¤ÃŸig werden Funktionen von libgcc verwendet, um ungeordnete FlieÃŸkomma-Vergleichs- und Flag-Operationen durchzufÃ¼hren.Wenn ein Symbol aufgelÃ¶st wird, den GÃ¼ltigkeitsbereich Â»alias thisÂ« prÃ¼fen, erst danach zu den hÃ¶heren Bereichen gehen.Wenn beide Heuristiken mit rs6000-density-pct-threshold und rs6000-density-size-threshold erfÃ¼llt sind, werden die Kosten des SchleifenkÃ¶rpers mit dem Wert bestraft, der durch diesen Parameter festgelegt ist. Der Standardwert ist 10.Bei der Kostenkalkulation fÃ¼r die Vektorisierung von Schleifen mÃ¼ssen wir wahrscheinlich die Kosten fÃ¼r den SchleifenkÃ¶rper bestrafen, indem wir Ã¼bermÃ¤ÃŸig versetzte oder elementweise Lesezugriffe berÃ¼cksichtigen. Wir sammeln die Zahlen fÃ¼r allgemeine Anweisungen und Ladeanweisungen entsprechend den Informationen fÃ¼r zu vektorisierende Anweisungen, prÃ¼fen den Anteil der Ladeanweisungen und bestrafen nur, wenn der Anteil den durch diesen Parameter festgelegten Schwellwert Ã¼berschreitet. Der Standardwert ist 45.Bei der Kostenkalkulation fÃ¼r die Vektorisierung von Schleifen mÃ¼ssen wahrscheinlich die Kosten fÃ¼r den SchleifenkÃ¶rper bestraft werden, wenn das bestehende Kostenmodell VerzÃ¶gerungen durch nicht verfÃ¼gbare Vektorressourcen nicht angemessen widerspiegelt. Die Kosten fÃ¼r vektorisierte Anweisungen und nicht-vektorisierte Anweisungen werden getrennt gesammelt, und die Bestrafung erfolgt nur, wenn das VerhÃ¤ltnis von vec_cost zu (vec_cost + nicht-vec_cost) den durch diesen Parameter festgelegten Schwellenwert Ã¼berschreitet. Der Standardwert ist 85.Bei Erzeugung von Â»-mabicallsÂ«-Code den ausfÃ¼hrbaren Dateien erlauben, PLTs und Kopierauslagerungen zu verwenden.Bei Erzeugung von -mabicalls den Code tauglich fÃ¼r gemeinsam genutzte Bibliotheken machen.Beim Binden fÃ¼r Big-Endian-Zielsysteme ein Abbild im BE8-Format erzeugen.Beim Binden fÃ¼r Big-Endian-Zielsysteme ein Abbild im veralteten BE32-Format erzeugen.Wenn mÃ¶glich, keine Stapelrahmen erzeugen.Bei der Weitergabe von IPA-CP-EffektschÃ¤tzungen werden die HÃ¤ufigkeiten der rekursiven Kanten, die einen unverÃ¤nderten Wert zurÃ¼ckbringen, mit diesem Faktor multipliziert.Wenn der fÃ¼r eine Schleife berechnete Reduktionsfaktor den durch diesen Parameter angegebenen Schwellenwert Ã¼berschreitet, diese Schleife vorzugsweise abzurollen. Der Standardwert ist 1.Beim Durchlaufen von CSE: SprÃ¼ngen zu ihren Zielen folgen.Bei der Verwendung von Profil-Feedback die Kante an dieser prozentualen Position im Frequenzhistogramm als Grundlage fÃ¼r die IPA-CP-Heuristik verwenden.Bei der Vektorisierung mehrere verschiedene AnsÃ¤tze in Betracht ziehen und das Kostenmodell verwenden, um den gÃ¼nstigsten auszuwÃ¤hlen.Falls kÃ¼rzer, kanonische Pfade zu System-Headern verwenden.Ob bei -fchecking Fehler im Codegenerator als interne Compilerfehler behandelt werden sollen.Ob Software-Prefetch-Tipps fÃ¼r nicht-konstante Schrittweiten produziert werden.Ob die Scheduling-Beschreibung im Wesentlichen ein zyklusgenaues Modell des Zielprozessors ist und wahrscheinlich aggressiv Register verdrÃ¤ngt, um etwaige Pipeline-LÃ¼cken zu fÃ¼llen.Ob das Zielsystem FMA-Befehle vollstÃ¤ndig in der Pipeline verarbeitet. Bei einem Wert ungleich Null wird bei der Neuzuordnung der Vorteil der Parallelisierung des Multiplikationsteils und des Additionsteils von FMA berÃ¼cksichtigt, wobei davon ausgegangen wird, dass FMUL und FMA die gleichen Einheiten verwenden, die auch FADD ausfÃ¼hren kÃ¶nnen.Ob kanonische Typen zu verwenden sind.Ob Trampoline in ausfÃ¼hrbarem Speicher statt in ausfÃ¼hrbarem Stapelspeicher erzeugt werden.Anzuwendender Algorithmus fÃ¼r Â»-fsched-pressureÂ«.WÃ¤hrend des Setzens des Signalhandlers: %mWÃ¤hrend des Setzens des Signalstapels: %mModus fÃ¼r Ganzprogrammanalyse (WPA) mit Anzahl der parallelen Jobs angegeben.Aufgrund des INSCAN bei %L wird ein Schleifenrumpf mit !$OMP SCAN zwischen zwei strukturierten Blockfolgen erwartetOhne AuffÃ¼llen gibt es nicht genÃ¼gend Elemente in intrinsischer RESHAPE-Quelle bei %L, um zur Form zu passenErrata fÃ¼r VR4130 mflo/mfhi umgehen.Hardwarebesonderheit umgehen, indem jedem CSYNC und SSYNC mehrere NOPs vorangestellt werden.Einen frÃ¼hen 4300-Hardware-Bug umgehen.Fehler in Multiplikationsbefehl umgehen.Bestimmte 24K-Errata umgehen.Bestimmte R10000-Errata umgehen.Bestimmte R4000-Errata umgehen.Bestimmte R4400-Errata umgehen.Bestimmte RM7000-Errata umgehen.Bestimmte VR4120-Errata umgehen.Fehler frÃ¼her SB-1 Revision 2 Kerne umgehen.Hardware-Multiplikationsfehler umgehen.Workaround fÃ¼r R5900-Kurzschleifenfehler.ArbeitsbeschrÃ¤nkung beim Entdecken von transitiven Beziehungen aus bestehenden Beziehungen.Umgehung von Erratum 835769 fÃ¼r ARM-Cortex-A53.Umgehung von Erratum 843419 fÃ¼r ARM-Cortex-A53.Alle indirekten SprÃ¼nge mit execute-in-order umschlieÃŸen, um Sprungvorhersage auszuschalten.Alle indirekten Aufrufe mit execute-in-order umschlieÃŸen, um Sprungvorhersage auszuschalten.Alle indirekten RÃ¼cksprÃ¼nge mit execute-in-order umschlieÃŸen, um Sprungvorhersage auszuschalten.Alle indirekten RÃ¼cksprÃ¼nge mit execute-in-order umschlieÃŸen, um Sprungvorhersage auszuschalten. Dies betrifft nur Zweige, in denen die RÃ¼cksprungadresse nicht aus dem Speicher wiederhergestellt wird.Alle indirekten RÃ¼cksprÃ¼nge mit execute-in-order umschlieÃŸen, um Sprungvorhersage auszuschalten. Dies betrifft nur Zweige, in denen die RÃ¼cksprungadresse aus dem Speicher wiederhergestellt wird.Alle indirekten TabellensprÃ¼nge und berechnete Gotos mit execute-in-order umschlieÃŸen, um Sprungvorhersage auszuschalten. Die Verwendung von thunk oder thunk-extern mit dieser Option erfordert, dass die Thunks als Signalhandler betrachtet werden, um korrekte CFI zu erzeugen. FÃ¼r Umgebungen, in denen Abrollen erforderlich ist (beispielsweise fÃ¼r Ausnahmebehandlung), nutzen Sie stattdessen bitte thunk-inline.Eine QUELLDATEI.opt-record.json schreiben mit Details, welche Optimierungen durchgefÃ¼hrt wurden.Alle Deklarationen in Ada-Code nur fÃ¼r angegebene Datei schreiben.Alle Deklarationen in Ada-Code transitiv schreiben.Modul %qs in Zeile %d, Spalte %d wird geschrieben: %sFalsche OpenACC-Fortsetzung bei %C: !$ACC erwartet, !$OMP gefundenFalsche OpenMP-Fortsetzung bei %C: !$OMP erwartet, !$ACC gefundenX-Argument bei %L fÃ¼r C_LOC darf nicht polymorph seinX-Deskriptor erfordert fÃ¼hrenden LeerzeichenzÃ¤hler bei %LX32 unterstÃ¼tzt %<ms_abi%>-Attribut nichtXXX %<pop_everything%> wird betretenXXX %<pop_everything%> wird verlassenDie UnterstÃ¼tzung fÃ¼r die Xeon-Phi-ISA wurde mit GCC 15 entfernt, verwenden Sie GCC 14 fÃ¼r die Xeon-Phi-ISAs oder %<-march=broadwell%> fÃ¼r alle anderen ISAs, die auf dieser Maschine unterstÃ¼tzt werden.Sie haben GCC-Rust kaputtgemacht. Dies ist ein Feature.
  Um diese intrinsischen Funktionen zu verwenden, mÃ¼ssen Sie MVE-Befehle einschalten.Um diese intrinsischen Funktionen zu verwenden, mÃ¼ssen Sie NEON-Befehle einschalten (zum Beispiel mit %<-mfloat-abi=softfp -mfpu=neon%>).Um diese intrinsischen Funktionen zu verwenden, mÃ¼ssen Sie VFP-Befehle einschalten.Um diese intrinsischen Funktionen zu verwenden, mÃ¼ssen Sie Krypto-Befehle einschalten (zum Beispiel mit %<-mfloat-abi=softfp -mfpu=crypto-neon%>)Null ist keine gÃ¼ltige Anweisungsmarke bei %CBreite null in Formatbeschreibung in Formatzeichenkette bei %LArray der GrÃ¶ÃŸe 0 bei %L gefunden, an dieser Stelle wird eine EntitÃ¤t mit TARGET-Attribut erwartet[ %d Instanziierungskontexte werden Ã¼bersprungen, Â»-ftemplate-backtrace-limit=0Â« zum Ausschalten verwenden ]
  [â€¦]Feldkonstruktoren im [...]-Stil bei %C[%s wird verlassen]
! [verfÃ¼gbar in [%s kann nicht gefunden werden][Standard][ausgeschaltet][eingeschaltet]Â»eine %<return%>-Anweisung ist in einer Koroutine nicht erlaubt; meinten Sie %<co_return%>?eine GNU-Fortran-Erweiterungeine geschweift geklammerte Initialisierung ist hier nicht erlaubtein Konstruktoraufruf kann nicht in einem Konstanten-Ausdruck auftretenein durch den Aufgerufenen kopiertes Argument wird im Rahmen der aktuellen Funktion gespeichertEine Typumwandlung, die weder zu ganzzahligen noch AufzÃ¤hlungstypen fÃ¼hrt, kann nicht in einem Konstantenausdruck auftreteneine Klassen-Templatedeklaration darf nichts anderes deklarierenein Komma-Operator kann nicht in einem Konstanten-Ausdruck auftretenein Konzept kann keine Elementfunktion seinein Konzept kann nicht eingeschrÃ¤nkt werdenein Konstruktor kann nicht %<concept%> seinein Konstruktor, der ein einzelnes Argument seines eigenen Klassentyps hat, ist ungÃ¼ltigeine Umwandlungsfunktion darf keinen angehÃ¤ngten RÃ¼ckgabetyp habenein Destruktor kann nicht %qs seinein unterschiedlicher Typ ist in einer anderen Ãœbersetzungseinheit definiertein Feld mit selbem Namen aber unterschiedlichem Typ ist in einer anderen Ãœbersetzungseinheit definiertein Feld mit unterschiedlichem Namen ist in einer anderen Ãœbersetzungseinheit definiertein Funktionsaufruf kann nicht in einem Konstanten-Ausdruck auftretenein Funktionstyp kann keinen expliziten Objektparameter habeneine Funktionsdefinition ist hier nicht erlaubteine Marke kann nur Teil einer Anweisung sein, und eine Deklaration ist keine AnweisungLambda-Abschlusstyp hat gelÃ¶schten Kopier-ZuweisungsoperatorLambda-Abschlusstyp hat gelÃ¶schten Standardkonstruktorein Lambda mit Captures darf keinen expliziten Objektparameter eines nicht verwandten Typs habenEine spÃ¤tere Option %<-fabi-version=%> (oder =0) verhindert diesen Fehler mit einer Ã„nderung im MangelnEin Element einer Struktur oder Union kann nicht variabel modifizierten Typ habengeschachtelte Funktionen werden bei reduzierter Registeranzahl nicht unterstÃ¼tzteine verschachtelte Namensraumdefinition darf nicht inline seineine verschachtelte Namensraum-Definition darf keine Attribute habeneine Funktion, die kein Member ist, kann keinen expliziten Objektparameter habeneine Nicht-Template-Variable kann nicht %<concept%> seinein Parameter kann nicht als %qs deklariert seineine Parameterliste mit Auslassung kann nicht zu einer leeren Parameternamenslistendeklaration passenein Zeiger auf eine explizite Objekt-Member-Funktion kann nur mit %<&%E%> gebildet werdenein Zeiger auf eine explizite Objektelementfunktion kann nur mit %<&%T::%D%> erzeugt werdenein Zeiger auf einen Funktionstyp kann keinen expliziten Objektparameter habenein Zeiger auf einen Memberfunktionstyp kann keinen expliziten Objektparameter habeneine Spezialisierung wird immer zusammen mit ihrem primÃ¤ren Template exportiertein Anweisungsausdruck reicht nicht als Kontext fÃ¼r Ãœberladungs-AuflÃ¶sung nicht auseine Speicherklasse kann nur fÃ¼r Objekte und Funktionen angegeben werdenSpeicherklasse an anonymem Aggregat im Klassenbereich ist nicht erlaubtein Template kann nicht vorbelegt werdeneine Template-Deklaration kann nicht im Block-GÃ¼ltigkeitsbereich auftreteneine Template-ID darf nicht in Â»usingÂ«-Deklaration auftreteneine vorÃ¼bergehende Bindung an %qD besteht nur, bis der Konstruktor beendet istein Transaktionsausdruck kann nicht in einem Konstanten-Ausdruck auftretenein Typ aus einer anderen Ãœbersetzungseinheit ist nicht polymorphein Typ aus einer anderen Ãœbersetzungseinheit ist polymorphein Typ mit unterschiedlichen Basistypen ist in einer anderen Ãœbersetzungseinheit definiertein Typ mit unterschiedlicher Anzahl von Feldern ist in einer anderen Ãœbersetzungseinheit definiertein Typ mit unterschiedlicher Genauigkeit ist in einer anderen Ãœbersetzungseinheit definiertein Typ mit unterschiedlichem Vorzeichen ist in einer anderen Ãœbersetzungseinheit definiertein Typ mit unterschiedlicher GrÃ¶ÃŸe ist in einer anderer Ãœbersetzungseinheit definiertein Typ mit unterschiedlichen Zeigern in der virtuellen Tabelle ist in einer anderen Ãœbersetzungseinheit definierteine Variable kann nicht als %<consteval%> deklariert seinein Vektortyp mit unterschiedlicher Anzahl von Elementen ist in einer anderen Ãœbersetzungseinheit definierteine Wide-Zeichenkette ist in diesem Kontext ungÃ¼ltigInterner Fehler: abnormal call edges for non-call insn in bb %iInterner Fehler: abnormal edges for no purpose in bb %iAbbruch in %s, bei %s:%ddie Betragsfunktion %qD bekommt hier ein Argument vom Typ %qT, erwartet jedoch einen Parameter vom Typ %qT; dadurch kann der Ã¼bergebene Wert abgeschnitten werdenabstrakter Deklarator %qT als Deklaration verwendetZugriffsdeklarationen sind zugunsten von %<using%>-Deklarationen veraltet; Vorschlag: das SchlÃ¼sselwort %<using%> hinzufÃ¼genCode greift auf %E Byte in einer Region der GrÃ¶ÃŸe %E zuCode greift auf %E Bytes in einer Region der GrÃ¶ÃŸe %E zuCode greift auf %E oder mehr Bytes in einer Region der GrÃ¶ÃŸe %E zuZugriff auf Element %qD statt auf initialisiertes Element %qD in KonstantenausdruckZugriff auf %qE auÃŸerhalb seiner LebensdauerZugriff auf ein Element %qE einer atomaren Struktur %qEZugriff auf ein Element %qE einer atomaren Union %qEbeim Zugriff auf Argument %u einer Funktion, die mit dem Attribut %qs deklariert wurdeCode greift auf zwischen %E und %E Bytes in einer Region der GrÃ¶ÃŸe %E zuZugriff auf Datenspeicher mit ProgrammspeicheradresseZugriff auf Programmspeicher mit DatenspeicheradresseZugriff auf threadlokalen Speicher wird derzeit mit %<-mpure-code%> oder %<-mslow-flash-data%> nicht unterstÃ¼tztZugriff auf uninitialisiertes ArrayelementZugriff auf uninitialisiertes Element %qDauf Wert von %qE wird Ã¼ber ein %qT GL-Wert in Konstantenausdruck zugegriffenAkkumulator ist keine GanzzahlkonstanteAkkumulatorzahl auÃŸerhalb der Grenzeneffektives Argument fÃ¼r INTENT = OUT/INOUTfÃ¼gen Sie %<using namespace std::complex_literals%> (aus %<<complex>%>) hinzu, um benutzerdefinierte Literalsuffixe aus C++14 einzuschaltenfÃ¼gen Sie einen Herleitungshinweis hinzu, um diese Warnung zu unterdrÃ¼ckenfangen Sie %<this%> oder %<*this%> explizit einklammern Sie den Ausdruck %qE, um diese Warnung zu unterdrÃ¼ckenklammern Sie den Ausdruck auf der linken Seite ein, um diese Warnung zu behebenklammern Sie den zweiten %<sizeof%>-Ausdruck, um diese Warnung zu unterdrÃ¼ckenfÃ¼gen Sie Klammern hinzu, um eine Variable zu deklarierenInterner Fehler: add_sym(): Bad sizing modezusÃ¤tzliche AufzÃ¤hlungswerte, die mit %qD beginnenAdressbereichsattribut kann nicht fÃ¼r Funktionen angegeben werdenAdressbereich von %q+D in Konflikt mit vorheriger DeklarationAdressmodus %qs wird im %s-Bit-Modus nicht unterstÃ¼tztAdresse des Aufrufs von %qs ist kein konstanter AusdruckAdresse eines Arrays mit umgekehrter Speicherreihenfolge angefordertAdresse der lokalen Variable %qD kann zu einem %<musttail%>-Aufruf entwischenDie Adresse der automatischen Variable %qD wird an das Argument des %<musttail%>-Aufrufs Ã¼bergebendie Adresse von Argumenten des Aufrufers wird verwendetAdresse der Register-Variablen %qD angefordertAdresse der globalen Variablen %qD angefordertAdresse der lokalen Variable %qD zurÃ¼ckgegebenAdresse des an das Aufrufargument %<musttail%> Ã¼bergebenen LabelsAdresse der lokalen Variable %qD zurÃ¼ckgegebenAdresse einer lokalen Variable kann zu einem %<musttail%>-Aufruf entwischenAdresse einer lokalen Variable wird an das Argument des %<musttail%>-Aufrufs Ã¼bergebendie Adresse der nicht-statischen constexpr-Variablen %qD kann sich bei jedem Aufruf der umschlieÃŸenden Funktion Ã¤ndern; fÃ¼gen Sie %<static%> hinzu, um ihr eine konstante Adresse zu gebenAdresse einer Ã¼berladenen Funktion ohne Typinformationen aus KontextAdresse des Parameters %qD kann zu einem %<musttail%>-Aufruf entwischenAdresse des Parameters %qD, der an das Aufrufargument %<musttail%> Ã¼bergeben wurdeAdresse des mit Â»registerÂ« deklarierten zusammengesetzten Literals angefordertAdresse der Register-Variablen %qD angefordertAdressversatz ist keine KonstanteAdressoperand erfordert BeschrÃ¤nkung fÃ¼r X-, Y- oder Z-RegisterAdresse fÃ¼r %qD angefordert, was als %<register%> deklariert istAdressraum %qs wird auf GerÃ¤ten mit Flashspeicher bis zu %d KiB nicht unterstÃ¼tztAdressrÃ¤ume werden auf reduzierten Tiny-Kernen nicht unterstÃ¼tztAdresse genommen, aber %<TREE_ADDRESSABLE%>-Bit nicht gesetztAdresse genommen, aber ADDRESSABLE-Bit nicht gesetztAdresse eines Objektes %qE mit thread-lokalem oder automatischem Speicher ist kein konstanter AusdruckAggregat %q#D hat unvollstÃ¤ndigen Typ und kann nicht definiert werdenAggregatstypen sind im %<__regio_symbol%>-Adressraum verbotenzusammengesetzter Wert verwendet, wo Â»complexÂ« erwartet wurdezusammengesetzten Wert verwendet, wo Festkomma erwartet wurdezusammengesetzter Wert verwendet, wo Gleitkommawert erwartet wurdezusammengesetzter Wert verwendet, wo Ganzzahl erwartet wurdealiasAlias-Definitionen werden nicht in Mach-O unterstÃ¼tzt; ignoriertAlias-Definitionen werden in dieser Konfiguration nicht unterstÃ¼tztAlias-Template-Herleitung ist erst ab %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarAlias-Deklaration in Init-Anweisung ist erst mit %<-std=c++23%> oder %<-std=gnu++23%> verfÃ¼gbarhier ist die Alias-Deklarationverlangte Ausrichtung %u von %qT ist kleiner als %uFÃ¼r %q+D darf keine Ausrichtung angegeben werdenfÃ¼r %qD darf keine Ausrichtung angegeben werdenAusrichtung muss eine kleine Zweierpotenz sein, nicht %dAusrichtung von %q+D ist grÃ¶ÃŸer als maximale Objektdateiausrichtung %dAusrichtung von %qD wurde in %<-fabi-version=9%> (GCC 5.2) erhÃ¶htAusrichtung von %qD ist grÃ¶ÃŸer als ursprÃ¼ngliche DeklarationAusrichtung von %qD wird in %<-fabi-version=9%> ansteigenAusrichtung der Arrayelemente ist grÃ¶ÃŸer als die ElementgrÃ¶ÃŸeAusrichtung fÃ¼r %<register%>-Objekt %qE angegebenAusrichtung fÃ¼r Bitfeld %qE angegebenAusrichtung fÃ¼r Funktion %qE angegebenAusrichtung fÃ¼r Parameter %qE angegebenAusrichtung fÃ¼r Typnamen in %<sizeof%> angegebenAusrichtung fÃ¼r Typnamen in %qE angegebenAusrichtung fÃ¼r Typnamen in Cast angegebenAusrichtung fÃ¼r typedef %qE angegebenAusrichtung fÃ¼r unbenanntes Bitfeld angegebenAusrichtung fÃ¼r unbenannten Parameter angegebenalle Elementfunktionen in Klasse %qT sind privatallozierbares Argumentwurde hier deklariertSpeicherallokation von ungenÃ¼gender GrÃ¶ÃŸe %qE fÃ¼r Typ %qT mit GrÃ¶ÃŸe %qEdie Allokation ist hierAllokator mit der Zugriffseigenschaft %<thread%> fÃ¼hrt zu undefiniertem Verhalten fÃ¼r die %qs-Direktiveerlaubt, undurchlÃ¤ssige Typen durch beliebige Typen zu implementieren (eine GNU-Modula-2-Erweiterung)%qD bereits in Lambda-Ausdruck erfasstauch %<%c%s%> gefundenAlternativen sind in %<asm%>-Flag-Ausgabe nicht erlaubtmehrdeutig machende neue Deklaration %q+#Dmacht neue Deklaration %q#D mehrdeutigmehrdeutiges Attribut Â»%sÂ«; kÃ¶nnte Â»%sÂ« (via Â»%s:%sÂ«) oder Â»%sÂ« (via Â»%s:%sÂ«) seinmehrdeutige Umwandlung fÃ¼r Feldindexmehrdeutige Standard-Typumwandlung von %qTmehrdeutige Methode %s%s%smehrdeutiges Ãœberladen fÃ¼r mehrdeutiges Ãœberladen fÃ¼r intrinsisches %qsmehrdeutige Template-Instanziierung fÃ¼r %q#Dmehrdeutige Template-Instanziierung fÃ¼r %q#Tmehrdeutige Templatespezialisierung %qD fÃ¼r %q+Deine %<asm%>-Spezifikation ist bei Funktionsdefinition nicht erlaubteine %qs-Klausel kann nur angegeben werden, wenn der %<dispatch%>-Selektor des %<construct%>-Selektorsatzes in der %<match%>-Klausel vorkommteine %qs-Klausel kann nur angegeben werden, wenn der %<dispatch%>-Selektor der Konstruktionsselektormenge in der %<match%>-Klausel vorkommteine %qs-Klausel erfordert eine %<match%>-KlauselfÃ¼r lokale Variablen kann kein Adressbereichsattribut angegeben werdenein Argumenttyp mit Standard-Promotion kann nicht zu einer leeren Parameternamenslistendeklaration passenein Array unterschiedlicher GrÃ¶ÃŸe ist in einer anderen Ãœbersetzungseinheit definierteine Arrayreferenz kann nicht in einem Konstanten-Ausdruck auftreteneine Zuweisung kann nicht in einem Konstanten-Ausdruck auftretenein Attribut, das zu einer Â»friendÂ«-Deklaration gehÃ¶rt, die keine Definition ist, wird ignoriertein Attribut, das sich auf eine Typspezifizierung bezieht, wird ignorierteine Verringerung kann nicht in einem Konstanten-Ausdruck auftretendas Attribut %<target_clones%> darf keine leere Zeichenkette enthalteneine EntitÃ¤t mit dem Namen %<main%> kann nicht mit C-Sprachbindung deklariert werdeneine AufzÃ¤hlung mit anderer Anzahl von Werten ist in einer anderen Ãœbersetzungseinheit definierteine AufzÃ¤hlung mit unterschiedlichen Wertnamen ist in einer anderen Ãœbersetzungseinheit definierteine AufzÃ¤hlung mit anderen Werten ist in einer anderen Ãœbersetzungseinheit definierteine explizite Instanziierung kann keine Definition haben; verwenden Sie %<template <>%>, um eine Spezialisierung zu deklariereneine explizite Objekt-Member-Funktion kann nicht %<static%> seineine explizite Objekt-Member-Funktion kann nicht %<virtual%> seinein expliziter Objektparameter kann kein Funktionsparameterpaket seinein expliziter Objektparameter darf kein Standardargument habeneiner expliziten Spezialisierung muss %<template <>%> vorausgehenein explizites Typensuffix ist erforderlich, wenn ein Vektor von Basisadressen verwendet wirdeine ErhÃ¶hung kann nicht in einem Konstanten-Ausdruck auftretenInterner Fehler: an indirect edge from %s has no corresponding call_stmtInterner Fehler: an indirect edge with unknown callee corresponding to a call_stmt with a known declaration:ein geerbter Konstruktor ist kein Kandidat fÃ¼r Initialisierung aus einem Ausdruck desselben oder eines abgeleiteten TypsEin Interrupt-Handler kann nicht mit %<-muser-mode%> kompiliert werdenAnachronismusAnachronismus: veraltete Basisklasseninitialisierungund %qT hat keinen Template-Konstruktorund wertet zu false aus, wenn die Bedingung in der nicht-%<constexpr%>-Funktion tatsÃ¤chlich ausgewertet wirdInterner Compilerfehler: and fieldund der implizit definierte Konstruktor initialisiert %q#D nichtdas innerhalb der Parameterliste deklarierte anonyme Â»%sÂ« ist auÃŸerhalb dieser Definition oder Deklaration nicht sichtbarInterner Fehler: anonymous SSA name cannot have default definitionanonymes struct nicht innerhalb eines benannten Typsanonyme Struktur mit Basisklassenanonyme Union ohne Elementdas AnhÃ¤ngen an ein Array in %qs erfordert den GC und kann nicht mit %<-fno-druntime%> verwendet werdenAnwendung von %<#pragma weak %+D%> nach erster Verwendung fÃ¼hrt zu unspezifiziertem Verhaltender Arch-Erweiterung %qs sollte ein %<+%> vorangestellt werdenArchitektur %qs wird nur fÃ¼r Assemblierung unterstÃ¼tztWert Â»%sÂ« kann in diesem Bereich nicht gefunden werdenare_identical_variables: Bad typeArgument %d ist ein vorzeichenloses Literal, aber auÃŸerhalb des gÃ¼ltigen BereichsArgument %d muss eine direkt angegebene Konstante seinArgument %d muss eine direkt angegebene Konstante im Bereich [%wd, %wd] seinArgument %d muss eine direkt angegebene Konstante im Bereich [0, 15] seinArgument %d muss ein Literal zwischen %d und %d seinArgument %d muss ein Literal zwischen 0 und %d seinArgument %d muss eine Variable oder ein Literal zwischen %d und %d seinArgument %d muss ein vorzeichenloses Literal seinArgument %d muss entweder eine literale %d oder eine literale %d seinArgument %d von %qD muss vom Typ %<omp_interop_t%> seinArgument %d von %qE entfernt Kennzeichner %<const%>Argument %d von %qE entfernt Kennzeichner %<volatile%>Argument %d von %qE kÃ¶nnte Kandidat fÃ¼r Formatattribut seinArgument %d von %qE muss ein Zeiger auf Typen konstanter GrÃ¶ÃŸe seinArgument %d von %qE muss eine Zeigertyp seinArgument %d von %qE muss ein konstanter ganzzahliger Ausdruck seinArgument %d von %qE muss vom Typ %<omp_interop_t%> seinArgument %d von %qE darf kein Zeiger auf einen %<const%>-Typen seinArgument %d von %qE darf kein Zeiger auf einen %<volatile%>-Typen seinArgument %d von %qE darf kein Zeiger auf eine Funktion seinArgument %d von Â»%sÂ« hatte nicht den erwarteten NamenArgument %d von %qE muss eine direkt angegebene Konstante im Bereich [0-%d] seinArgument %d der eingebauten Funktion muss eine Konstante aus dem Bereich %d bis %d seinArgument %i im Bereich [%E, %E]Argument %i ist null, aber der Wert des zugehÃ¶rigen GrÃ¶ÃŸenarguments %i ist %sArgument %i Bereich [%E, %E] Ã¼bersteigt maximale ObjektgrÃ¶ÃŸe %EArgument %i Bereich [%E, %E] ist negativArgument %i Wert %qE Ã¼bersteigt maximale ObjektgrÃ¶ÃŸe %EArgument %i Wert %qE ist negativArgument %i Wert %s ist negativArgument %i Wert ist nullArgument %q+D kÃ¶nnte von %<longjmp%> oder %<vfork%> zerstÃ¶rt werdenArgument %qD ist hier deklariertArgument %qD passt nicht zu eingebautem PrototypenArgument %qD passt nicht zum PrototypenArgument %qEArgument %qE kann nicht zur Ãœbersetzungszeit gelesen werdendas Argument %qE fÃ¼r das Attribut %<counted_by%> ist keine Felddeklaration in derselben Struktur wie %qDdas Argument %qE fÃ¼r das Attribut %<counted_by%> ist keine Felddeklaration mit einem GanzzahltypArgument %qTArgument %qd ist keine Konstantedas Argument %qs kann in %qs nur allein vorkommenArgument %qs wird fÃ¼r %qs auf diesem Ziel nicht unterstÃ¼tztArgument %qs muss entweder %<on%> oder %<off%> seinArgument %qs fÃ¼r %<-Waligned-new%> nicht bekanntArgument %qs fÃ¼r %<-Wbidi-chars%> nicht bekanntArgument %qs fÃ¼r %<-Wleading-whitespace=%> nicht bekanntArgument %qs fÃ¼r %<-Wnormalized%> nicht erkanntArgument %qs fÃ¼r %<-Wtrailing-whitespace=%> nicht bekanntArgument %qs fÃ¼r %<-femit-struct-debug-detailed%> nicht erkanntArgument %qs fÃ¼r %<-femit-struct-debug-detailed%> unbekanntArgument %u in Aufruf von %qE hat nicht den Typ %<int%>Argument %u in Aufruf von %qE muss ein Ganzzahltyp seinArgument %u in Aufruf von %qE muss ein Zeigertyp seinArgument %u in Aufruf von %qE ist ein boolescher Typ seinArgument %u in Aufruf von %qE hat AufzÃ¤hlungstypArgument %u in Aufruf von %qE darf kein Zeiger auf %qs sein (%qT)Argument %u in Aufruf von %qE darf kein Zeiger auf nicht-trivial kopierbaren Typ %qT seinArgument %u in Aufruf von %qE muss auf einen vollstÃ¤ndigen Typ zeigenArgument %u in Aufruf der Funktion %qs ist ein boolescher TypArgument %u in Aufruf der Funktion %qs hat AufzÃ¤hlungstypArgument %u ist null, aber nichtnull wird erwartetArgument %u ist null, aber nichtnull wird erwartet, da das Argument %u nicht 0 istArgument %u fÃ¼r %<__builtin_tgmath%> hat keine ArgumenteArgument %u fÃ¼r %<__builtin_tgmath%> hat variable Anzahl von ArgumentenArgument %u fÃ¼r %<__builtin_tgmath%> hat falsche Anzahl der ArgumenteArgument %u fÃ¼r %<__builtin_tgmath%> ist kein FunktionszeigerArgument %u fÃ¼r %<__builtin_tgmath%> hat keinen PrototypenArgument %u vom Typ %s ist als Zeiger deklariertArgument %u vom Typ %s ist als Array variabler LÃ¤nge deklariertArgument %u vom Typ %s ist als gewÃ¶hnliches Array deklariertArgument %u vom Typ %s ist mit %u unspezifizierten Variablengrenze deklariertArgument %u vom Typ %s ist mit %u unspezifizierten Variablengrenzen deklariertArgument %u vom Typ %s ist mit %u Variablengrenze deklariertArgument %u vom Typ %s ist mit %u Variablengrenzen deklariertArgument %u vom Typ %s ist mit abweichender Grenze %qs deklariertArgument %u vom Typ %s ist mit abweichendem Grenzargument %E deklariertArgument %u vom Typ %s mit abweichender GrenzeArgument %u von Funktion %qE ist vom Typ %qT, und der ist nicht garantiert 128 Bit groÃŸArgument 1 in Aufruf von %qE hat einen vorzeichenbehafteten TypenArgument 1 in Aufruf von %qE hat einen vorzeichenlosen TypenArgument 1 in Aufruf der Funktion %qs hat den Typ %<char%>Argument 1 in Aufruf von der Funktion %qs hat einen vorzeichenbehafteten TypenArgument 1 muss eine Abbildung seinArgument 1 von %qE muss ein Nicht-Void-Zeigertyp seinArgument 1 von %qE muss ein Zeiger auf einen vollstÃ¤ndigen Typen seinArgument 1 von %qE muss ein Zeiger auf Typen konstanter GrÃ¶ÃŸe seinArgument 1 von %qE muss ein Zeiger auf Objekt breiter als Null seinArgument 1 von %qs ist auÃŸerhalb des WertebereichesArgument 1 von %qs muss eine Konstante seinArgument 3 in Aufruf von %qE muss Zeiger auf Ganzzahltyp seinArgument 3 in Aufruf von %qE darf kein Zeiger auf booleschen Typ seinArgument 3 in Aufruf von %qE darf kein Zeiger auf enum-Typ seinArgumentlistenfunktion bei %CArgument muss eine direkt angegebene 16-Bit-Konstante seinArgument muss eine Feldreferenz seinArgument muss Array oder Scheibe oder Kanal seinArgument muss ein Kanal seindas Argument muss durch Kopieren Ã¼bergeben werdenArgument muss Zeichenkette oder Array oder Scheibe oder Map oder Kanal seinArgument muss komplexen Typen habenArgument an %qs-Klausel nicht erlaubtArgument an %qs-Klausel nicht erlaubt, in OpenACC-%<kernels%>-Region mit einer %qs-KlauselArgument fÃ¼r %<__builtin_eh_return_regno%> muss konstant seinArgument des Attributs %qE wird ignoriertArgument des Attributs %qE fehltArgument des Attributes %qE ist weder Â»ilinkÂ« oder Â»firqÂ«Argument des Attributes %qE ist weder Â»ilink1Â« oder Â»ilink2Â«Das Argument des Attributs %qE ist nicht %qs, %qs %qs, %qs, %qs, %qs, %qs, %qs, %qs oder %qsArgument des Attributes %qE ist keine ZeichenkettenkonstanteArgument des Attributs %qE ist weder Zeichenkettenkonstante noch ZahlArgument von Offsetof bringt Indirektion eines eingebetteten Feldes mit sichArgument des Funktionsaufrufs kÃ¶nnte Kandidat fÃ¼r Formatattribut seinArgument vom Typ %qT ist zusammen mit %<-mgeneral-regs-only%> nicht erlaubtdas Argument verweist auf ein Symbol, das hier deklariert istArgument von %<-O%> sollte eine nicht-negative Ganzzahl, %<g%>, %<s%>, %<z%> oder %<fast%> seinArgument von %<__integer_pack%> muss zwischen 0 und %d liegenArgument fÃ¼r %<alloca%> ist zu groÃŸArgument fÃ¼r %<alloca%> ist 0Argument fÃ¼r %<alloca%> kÃ¶nnte zu groÃŸ seinArgument fÃ¼r %<decltype%> muss ein Ausdruck seinArgument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie das Ziel; sollte es dereferenziert werden?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie das Ziel; sollte ausdrÃ¼ckliche LÃ¤nge angegeben werden?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie das Ziel; sollte addressof entfernt werden?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie die erste Quelle; sollte es dereferenziert werden?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie die erste Quelle; sollte ausdrÃ¼ckliche LÃ¤nge angegeben werden?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie die erste Quelle; sollte addressof entfernt werden?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie die zweite Quelle; sollte es dereferenziert werden?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie die zweite Quelle; sollte ausdrÃ¼ckliche LÃ¤nge angegeben werden?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie die zweite Quelle; sollte addressof entfernt werden?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie die Quelle; sollte es dereferenziert werden?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie die Quelle; sollte ausdrÃ¼ckliche LÃ¤nge angegeben werden?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie die Quelle; sollte addressof entfernt werden?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie die Quelle; meinten Sie die GrÃ¶ÃŸe des Ziels?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist vom gleichen Zeigertyp %qT wie das Ziel; %qT oder ausdrÃ¼ckliche LÃ¤nge erwartetArgument fÃ¼r %<sizeof%> in Aufruf von %qD ist vom gleichen Zeigertyp %qT wie die erste Quelle; %qT oder ausdrÃ¼ckliche LÃ¤nge erwartetArgument fÃ¼r %<sizeof%> in Aufruf von %qD ist vom gleichen Zeigertyp %qT wie die zweite Quelle; %qT oder ausdrÃ¼ckliche LÃ¤nge erwartetArgument fÃ¼r %<sizeof%> in Aufruf von %qD ist vom gleichen Zeigertyp %qT wie die Quelle; %qT oder ausdrÃ¼ckliche LÃ¤nge erwartetArgument des Attributs %qE ist weder %<eic%> noch %<vector=<Zeile>%>Argument des Attributes %qE ist keins von Â»noÂ«, Â»pcrelÂ« oder Â»yesÂ«Argument des Attributes %qE ist weder Null noch EinsArgument des Attributs %qE muss %<"user"%>, %<"supervisor"%> oder %<"machine"%> seinArgument fÃ¼r %qE ist nicht (keep|thunk|thunk-extern)Argument des Attributes %qE ist nicht (keep|thunk|thunk-inline|thunk-extern)Argument des Attributes %qE ist nicht Â»intstackÂ«Argument fÃ¼r Attribut %qE ist grÃ¶ÃŸer als %dArgument fÃ¼r %qs ist grÃ¶ÃŸer als %dArgument von %qs ist nicht zwischen %d und %dArgument fÃ¼r %qs ist zu groÃŸ (max. %d)Argument von %qs sollte eine nicht-negative Ganzzahl seinArgument fÃ¼r %qs sollte eine nicht-negative Ganzzahl sein, optional gefolgt von einer GrÃ¶ÃŸeneinheitArgument fÃ¼r CAP muss eine Konstante oder eine Variable vom Typ CHAR seinzu formatierendes Argument ist nicht %<...%>Argument der eingebauten Funktion hat void-TypenArgument fÃ¼r Â»interruptÂ«-Attribut wird fÃ¼r Â»weakÂ«-Funktionen nicht unterstÃ¼tztArgument fÃ¼r Array mit variabler LÃ¤nge ist zu groÃŸArgument fÃ¼r Array variabler LÃ¤nge ist 0Argument fÃ¼r Array mit variabler LÃ¤nge kÃ¶nnte zu groÃŸ seindie Argumente %d und %d von %qE mÃ¼ssen die gleiche ElementgrÃ¶ÃŸe haben, aber die hier Ã¼bergebenen Werte sind vom Typ %qT und %qTdie Argumente %d und %d von %qE mÃ¼ssen die gleiche Vorzeichenhaftigkeit haben, aber die hier Ã¼bergebenen Werte sind vom Typ %qT und %qTArgumente Â»%sÂ« und Â»%sÂ« fÃ¼r intrinsisches %sArgumente Â»%sÂ« und Â»%sÂ« fÃ¼r intrinsisches Â»%sÂ«Argumente Â»a%dÂ« und Â»a%dÂ« fÃ¼r intrinsisches Â»%sÂ«Argumente fÃ¼r %<-Wattributes=%> ignoriert; verwenden Sie stattdessen %<-Wno-attributes=%>Argumente vom Typ %qT erfordern die SVE-ISA-ErweiterungArgumente von %qs sollten nicht-negative Ganzzahlen seinArgumente fÃ¼r Destruktor sind nicht erlaubtArgumente fÃ¼r Attribut %qE mÃ¼ssen enge Zeichenkettenliterale seinArgumente fÃ¼r Attribut %qE mÃ¼ssen gÃ¼ltige Bezeichner enthaltenarith_power(): Bad basearith_power(): unknown typearithmetisches IFArithmetik zwischen den unterschiedlichen AufzÃ¤hlungstypen %qT und %qTArithmetik zwischen den unterschiedlichen AufzÃ¤hlungstypen %qT und %qT ist veraltetArithmetik zwischen AufzÃ¤hlungstyp %qT und Gleitkommatyp %qTArithmetik zwischen AufzÃ¤hlungstyp %qT und Gleitkommatyp %qT ist veraltetArithmetik zwischen Gleitkommatyp %qT und AufzÃ¤hlungstyp %qTArithmetik zwischen Gleitkommatyp %qT und AufzÃ¤hlungstyp %qT ist veraltetArithmetik mit Nullzeiger in %qEArithmetik mit Zeiger auf RVV-Typen %qTArithmetik mit Zeiger auf SVE-Typen %qTArithmetik mit Zeiger auf leeres AggregatArithmetik mit Zeiger auf unvollstÃ¤ndigen TypenInterner Compilerfehler: array %<TYPE_DOMAIN%> is not integer typeArray %q+D als einelementig betrachtetArray %qD ist hier deklariertArray %qD mit geklammerter Zeichenkettenkonstante %qE initialisiertArray-ZuweisungArraygrenze hinter geklammerter type-id ist verbotenArraygrenze ist keine GanzzahlkonstanteInterner Fehler: array cannot be initialized with a %qsdie Array-Verkettung des Ausdrucks %qs erfordert den GC und kann nicht mit %<-fno-druntime%> verwendet werdenArray-Deallokation eines Objekts, das mit einer Nicht-Array-Allokation alloziert wurdeFehler beim Normalisieren der ArraydeklarationWert des Arrayelements muss vom selben Typ sein wie seine DeklarationArrayelemente kÃ¶nnen nicht vom RVV-Typ %qT seinArrayelemente kÃ¶nnen nicht vom SVE-Typ %qT seinArrayindex in Initialisierung Ã¼berschreitet ArraygrenzenArrayindex in Initialisierung ist kein konstanter GanzzahlausdruckArrayindex in Initialisierung hat nicht GanzzahltypArrayindex in Nicht-Array-InitialisierungArrayindexbereich in Initialisierung Ã¼berschreitet ArraygrenzenArray mit nicht konstantem Arrayausdruck initialisiertArray mit geklammerter Zeichenkettenkonstante initialisiertArray-Initialisierer fÃ¼r strukturierte Bindungsdeklaration in BedingungArrayelement %q#D hier deklariertArray muss mit Initialisierung mit umgebenden geschweiften Klammern initialisiert werdenArray unpassenden Typs mit Zeichenkettenkonstante initialisiertArray mit Laufzeitgrenzen kann nicht durch Kopie eingefangen werden, sondern nur Ã¼ber eine ReferenzArray unbekannter LÃ¤nge mit leerem InitialisiererArrayergebnisArrayabschnitt in %qs-Klausel hat keinen zuordenbaren TypArrayabschnitt in %<#pragma acc declare%>Arrayabschnitt ist in %qs-Klausel nicht zusammenhÃ¤ngendAusdruck fÃ¼r ArraygrÃ¶ÃŸe wird noch nicht unterstÃ¼tztArraygrÃ¶ÃŸe in Â»newÂ«-Ausdruck muss konstant seinArraygrÃ¶ÃŸe fehlt in %q+DArraygrÃ¶ÃŸe fehlt in %qDArraygrÃ¶ÃŸe fehlt in %qTArrayindex %<%T[%wi]%> ist teilweise auÃŸerhalb der Arraygrenzen von %qTArrayindex %E ist oberhalb der Arraygrenze von %qTArrayindex %E ist unterhalb der Arraygrenze von %qTArrayindex %E liegt auÃŸerhalb der Arraygrenzen von %qTArrayindexwert %E liegt auÃŸerhalb der Grenzen des inneren Arraytyps %qT mit LÃ¤nge 0Arrayindex %qE liegt auÃŸerhalb der Grenzen des Arraytyps %qT mit LÃ¤nge 0Arrayindex %wi ist unterhalb der Arraygrenze von %qTArrayindex %wi ist auÃŸerhalb der Arraygrenzen von %qTArrayindex %wu ist oberhalb der Arraygrenze von %qTArrayindex [%E, %E] ist auÃŸerhalb der Arraygrenzen von %qTArrayindex [%wi, %wi] ist auÃŸerhalb der Arraygrenzen von %qTArrayindex hat Typ %<char%>Arrayindex ist keine GanzzahlArrayindexwert %qE ist auÃŸerhalb der Grenzen des Arrays %qD vom Typ %qTArrayindexwert %qE ist auÃŸerhalb der Grenzen des Arraytyps %qTArraytyp hat unvollstÃ¤ndigen Elementtypen %qTInterner Fehler: array type must be initializedArraytypen haben unterschiedliche GrenzenArray als Initialisierung verwendetArray mit Qualifizierer auf dem Element wird vor C23 nicht qualifiziertArrays von Funktionen sind sinnlosAssembler unterstÃ¼tzt %<-mabi=ilp32%> nichtInterner Fehler: assembler name hash list corruptedBehauptung fehlt hinter %qsZusicherungen mÃ¼ssen von %<;%> gefolgt seinAttribute der Zuweisungssemantik der Eigenschaft %qD in Konflikt mit vorheriger Deklarationhier zugewiesenZuweisung an Array von InitialisierungslisteZuweisungZuweisung (nicht Initialisierung) in DeklarationZuweisung streicht Qualifizierer %qv von Zeiger-ZieltypZuweisung von anderem Objective-C-TypZuweisung von Zeiger auf nicht eingeschlossenen AdressbereichZuweisung von temporÃ¤rer %<initializer_list%> fÃ¼hrt nicht dazu, dass die Lebenszeit des zugrundeliegenden Arrays ausgeweitet wirdLinks-Zuweisung kÃ¶nnte Kandidat fÃ¼r Formatattribut seinZuweisung erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger %q#vZuweisung des konstanten Feldes %qDZuweisung der Funktion %qDZuweisung von Element %qD in schreibgeschÃ¼tztem ObjektZuweisung der schreibgeschÃ¼tzten Speicherstelle %qEZuweisung des schreibgeschÃ¼tzten Elementes %qDZuweisung des schreibgeschÃ¼tzten benannten RÃ¼ckgabewertes %qDZuweisung des schreibgeschÃ¼tzten Parameters %qDZuweisung der schreibgeschÃ¼tzten Referenz %qDZuweisung der schreibgeschÃ¼tzten Variable %qDZuweisungsunterdrÃ¼ckungZuweisung an %e von inkompatiblem Zeigertyp %eZuweisung an %e von Zeiger auf %qD mit inkompatiblem Typ %eZuweisung an %qT aus %qT wandelt einen Zeiger in eine Ganzzahl um, ohne explizite TypkonvertierungZuweisung an %qT von %qT wandelt eine Zahl in einen Zeiger um, ohne explizite TypkonvertierungZuweisung an %qT von Zeigertyp %qT mit inkompatibler Speicherreihenfolge fÃ¼r SkalareZuweisung an Ausdruck von Arraytypassociate_integer_pointer(): Already associatedArgument mit angenommenem RangArgument mit angenommener FormArgument von angenommenem TypUmwandlung in Typ %qT von Ã¼berladener Funktion wird angenommenangenommen, dass die Ausgabe der Direktive %wu Byte groÃŸ istangenommen, dass die Ausgabe der Direktive %wu Bytes groÃŸ istZeiger auf Element %qD wird angenommenAnnahme, dass vorzeichenbehafteter Ãœberlauf nicht auftritt, wenn Konstanten um einen Vergleich kombiniert werdenAnnahme, dass vorzeichenbehafteter Ãœberlauf nicht auftritt, wenn Konstante in Vergleich verringert wirdder Compiler geht davon aus, dass kein vorzeichenbehafteter Ãœberlauf auftritt, und vereinfacht daher %<X - Y %s 0%> zu %<X %s 0%>Annahme, dass vorzeichenbehafteter Ãœberlauf nicht auftritt, wenn BereichsprÃ¼fung vereinfacht wirdasynchrones Argumentbei %s, %san Offset %s des Zielobjekts %qE der GrÃ¶ÃŸe %san Offset %s des Zielobjekts der GrÃ¶ÃŸe %s, alloziert durch %qEan Offset %s des Objekts %qE der GrÃ¶ÃŸe %san Offset %s des Objekts der GrÃ¶ÃŸe %s, alloziert durch %qEan Offset %s des Quellobjekts %qE der GrÃ¶ÃŸe %san Offset %s des Quellobjekts der GrÃ¶ÃŸe %s, alloziert durch %qEan Offset %wi von %qD, das hier deklariert istan Offset [%wi, %wi] von %qD, das hier deklariert istat-calls %<strub%> does not support call to %qDatexit gescheitertVersuch, ein Objekt zu indizieren, das weder Array, Slice, String noch Map istVersuch, einen Typausdruck zu indizierenVersuch, ein Objekt zu schneiden, das weder Array, Slice noch String istVersuch, die Adresse eines Bitfelds zu bestimmenVersuch, die Adresse des Bitfeldstrukturelements %qD zu ermittelndem Attribut %<%E(%s)%> fehlt ein ArgumentAttribut %<%E(%s, %E)%> hat ungÃ¼ltiges Positionsargument %iAttribut %<%E(%s, %E, %E)%> hat ungÃ¼ltiges Positionsargument %i%<fallthrough%>-Attribut ist nicht direkt vor einer case-Marke oder einer default-MarkeAttribut %<fallthrough%> ist mehrfach angegebenin der %<return%>-Anweisung ist das Attribut %<musttail%> mit anderen Attributen vermischtbeim Attribut %<target%> ist das Argument %qs unbekanntArgument fÃ¼r Attribut %<target%> ist keine ZeichenketteAttribut %<target("%s")%> akzeptiert keine Argumentedas Argument des Attributs %<target_version%> ist keine Zeichenkettedas Attribut %<target_version%> hat mehrere WerteArgument von Attribut %qE muss eins von %qs oder %qs seinArgument von Attribut %qE muss eins von %qs, %qs, %qs oder %qs seinAttributargument von %qE ist keine Zeichenkettedas Attribut %qE gilt nicht fÃ¼r Elemente des nicht skalaren Typs %qTAttribut %qE gilt nicht fÃ¼r Felder des Aggregattyps %qTungÃ¼ltiger Modus fÃ¼r Attribut %qEAttribut %qE ungÃ¼ltiger Modus %qs; erwartet wird einer von %qs, %qs, %qs oder %qsAttribut %qE Modus %qE ist kein Bezeichner; erwartet wird einer von %qs, %qs, %qs oder %qsAttribut %qE enthÃ¤lt unerwartete %<(%> nach Modus %qs; erwartet wird ein Positionsargument oder %<)%>Attribut %qE ohne Argumente bei einem Nicht-PrototypAttribut %qs bezieht sich nur auf Arraytypenbeim Attribut %qs ist das Argument %qs unbekanntArgument von Attribut %qs muss eine Zeichenkette seinAttribut %qs erwartet ein konstantes positives ganzzahliges ArgumentAttribut %qs hat ungÃ¼ltiges positionelles ArgumentAttribut %qs ist unvertrÃ¤glich mit Modus %qsAttribut %qs enthÃ¤lt nicht Ã¼bereinstimmende Positionsargumente mit den Werten %i und %idem Attribut %qs fehlt Positionsargument 2, das in der vorherigen Bestimmung in Argument %u angegeben wurdebeim Attribut %qs hat das Argument an Position %i den ungÃ¼ltigen Wert %wibeim Attribut %qs hat das positionelle Argument %i den Wert %wi, der die Anzahl der Funktionsparameter %u Ã¼bersteigtbeim Attribut %1$qs verweist Argument 1 auf Typ %3$qT, der mit %2$qs qualifiziert istAttribut %qs hat Positionsargument 1, das sich auf das Argument des Funktionstyps %qT beziehtbeim Attribut %qs verweist Argument 1 auf Typ %qT, der kein Zeigertyp istAttribut %qs positionelles Argument 2 widerspricht der vorherigen Bestimmung von Argument %uAttribut %qs positionelles Argument 2 fehlt in vorheriger Bestimmungbeim Attribut %qs verweist Argument 2 auf Typ %qT, der nicht ganzzahlig istAttribut %qs ist mehrfach angegebenAttribut-DeklarationAttribut fÃ¼r %q#T muss dem SchlÃ¼sselwort %qs folgenAttribut wird ignoriertAttribut in Deklaration von %q#T ignoriertAttribut in expliter Instanziierung %q#T ignoriertattribute-using-prefix ist nur mit %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbarAttribut, das PrÃ¤fix verwendet, wird zusammen mit GÃ¼ltigkeitsbereich-Attribut-Token verwendetAttributwert %qs ist im %qs-Attribut unbekanntder Wert %qs wurde bereits im Attribut %qs angegebenAttribut ohne Argumente enthÃ¤lt keine ParameterpaketeAttribute hinter geklammerter Initialisierung werden ignoriertbei einer Funktionsdefinition sind keine Attribute erlaubtAttribute dÃ¼rfen an dieser Stelle nicht verwendet werdenAttribute am Anfang der Anweisung werden ignoriertAttribute in %<asm%>-Deklaration werden ignoriertAttribute an Spezifizierer ausfÃ¼hrlichen Typs ignoriert, der keine VorwÃ¤rtsdeklaration istAttribute werden beim Ã¤uÃŸersten Array-Typ im %<new%>-Ausdruck ignoriertAttribute an Templateinstanziierung ignoriertAttribute an instanziiertem Typen ignoriertAttribute in Parameterarraydeklarator ignoriertAttribute dÃ¼rfen hier eingesetzt werdenAttribute dÃ¼rfen nicht vor dem Objective-C++-SchlÃ¼sselwort %<@%D%> angegeben werdenAttribute an Basisangaben werden ignoriertandere Attribute als OpenMP-Direktiven sind fÃ¼r %<for%> in Schleifenschachtelungen nicht zulÃ¤ssigAttribute sollten in einer Funktionsdefinition vor dem Deklarator angegeben werdenautomatische FPU-Auswahl ist hier momentan nicht erlaubtautomatische Variable %qE kann nicht %<threadprivate%> seinInitialisiert alle Zeiger auf NILInterner Fehler: aux field set for edge %s->%sInterner Fehler: aux field set for indirect edge from %sverfÃ¼gbar seit Fortran 77await-AusdrÃ¼cke sind in Handlern nicht erlaubtder abwartbare Typ %qT muss ein Strukturtyp seinAxiom-Vertrags-Semantik muss %<assume%> oder %<ignore%> seinBackend-Deklaration fÃ¼r Modulvariable %qs ist bereits vorhandenfalsche ADDR_SPACE_GLOBAL-Adressefalsche E/A-Adresse 0x%s auÃŸerhalb des gÃ¼ltigen Bereichs [0x%x, 0x%x] fÃ¼r Operand %%iFalsche AdresseFalsche Adresse, nicht (reg+disp):falsche Adresse, keine Konstante:Falsche Adresse, nicht post_inc oder pre_dec:falsche Ausrichtung: %dFalscher Betrag der Stapelspeicherentfernung: %dfalsches Argument fÃ¼r %<-fdebug%>: %qsfalsches Argument fÃ¼r %<-fextern-std%>: %qsfalsches Argument fÃ¼r %<-fmodule-file%>: %qsfalsches Argument fÃ¼r %<-fversion%>: %qsFalscher eingebauter CodeFalscher eingebauter fcodeFalscher eingebauter ICodeFalscher Bedingungscodebad expressionFalscher Ausdruckstyp beim Durchlaufen (%d)falscher Befehl fÃ¼r 'A'Falscher Befehl in frv_print_operand, Fall 0Falscher Befehl in frv_print_operand, falsches const_doubleFalscher Befehl in frv_print_operand, Fall Â»zÂ«Falscher Befehl fÃ¼r frv_print_operand, Modifizierer Â»FÂ«:Falscher Befehl fÃ¼r frv_print_operand, Modifizierer Â»LÂ«:Falscher Befehl fÃ¼r frv_print_operand, Modifizierer Â»M/NÂ«:Falscher Befehl fÃ¼r frv_print_operand, Modifizierer Â»OÂ«:Falscher Befehl fÃ¼r frv_print_operand, Modifizierer Â»eÂ«:Falscher Befehl fÃ¼r frv_print_operand, Modifizierer Â»fÂ«:Falscher Befehl fÃ¼r frv_print_operand, Modifizierer Â»gÂ«:Falscher Befehl fÃ¼r frv_print_operand, Modifizierer Â»PÂ«:Falscher Befehl fÃ¼r frv_print_operand_address:Falscher Befehl fÃ¼r frv_print_operand_memory_reference:ungÃ¼ltige Bewegungbad opungÃ¼ltiger Operandschlechte Option %qs fÃ¼r Attribut %<optimize%>schlechte Option %qs fÃ¼r Pragma %<optimize%>Falscher Operand fÃ¼r output_condmove_singleFalscher Operand fÃ¼r output_move_doubleFalscher Operand fÃ¼r output_move_singlefalsches RegisterFalsches Register fÃ¼r frv_print_operand_memory_reference_reg:falscher RÃ¼ckgabetyp fÃ¼r Funktionsargument %u von %<__builtin_tgmath%>Falscher Schiebe-Befehl:Falscher Testfalscher Typ fÃ¼r Argument %u von Funktionsargument %u von %<__builtin_tgmath%>falsche Verwendung der spec-Funktion %qsfalscher Wert %qs fÃ¼r Schalter %<-march=%>Falscher Wert %qs fÃ¼r Schalter %<-mcpu%>Falscher Wert %qs fÃ¼r Schalter %<-mfp-rounding-mode%>Falscher Wert %qs fÃ¼r Schalter %<-mfp-trap-mode%>falscher Wert %qs fÃ¼r %<-mmemory-latency%>Falscher Wert %qs fÃ¼r Schalter %<-mtls-size%>Falscher Wert %qs fÃ¼r Schalter %<-mtls-size=%>falscher Wert %qs fÃ¼r Schalter %<-mtrap-precision%>falscher Wert %qs fÃ¼r Schalter %<-mtune%>falscher Wert %qs fÃ¼r Schalter %<-mtune=%>unbekannter Wert %qs fÃ¼r Attribut %<target("arch=")%>falscher Wert %qs fÃ¼r Attribut %<target("tune=")%>falscher Wert fÃ¼r %<%s-%s%>falscher Wert fÃ¼r %<%s=%s%>schlecht geschachtelte C-Header vom PrÃ¤prozessorApostroph %<'%> auÃŸerhalb von AnfÃ¼hrungszeichen im FormatSperrregion darf nicht innerhalb einer Region eng geschachtelt sein, die arbeitsteilend, %<loop%>, %<critical%>, %<ordered%>, %<master%>, %<masked%>, explizit %<task%> oder %<taskloop%> istBarrierenwert muss im Bereich [0, 15] liegenBasis %qT wird initialisiert nachBasisklasse %q#T hat einen zugÃ¤nglichen nicht-virtuellen DestruktorBasisklasse %q#T sollte explizit im Kopierkonstruktor initialisiert werdenBasisklasse %qT ist nicht %<public%>Expansion der Basisinitialisierung %qT enthÃ¤lt keine ParameterpacksBasisoperand von %<->%> hat Nicht-Zeiger-Typ %qTBasisoperand von %<->%> ist kein ZeigerInterner Fehler: base pointer cycle detectedBasistyp %qT ist kein struct- oder KlassentypInterner Fehler: base variable or SSA name undeclaredInterner Fehler: basic block %d pred edge is corruptedInterner Fehler: basic block %d should be marked irreducibleInterner Fehler: basic block %d should not be marked irreducibleInterner Fehler: basic block %i edge lists are corruptedInterner Fehler: basic blocks not laid down consecutivelyInterner Fehler: bb %d does not belong to loop %dInterner Fehler: bb %d has father loop %d, should be loop %dInterner Fehler: bb %d on wrong placeda %qT vom Benutzer bereitgestelltes %qD hatda es ein Element von %qT istda er als glvalue verwendet wirdda der Arrayelementtyp %qT variable GrÃ¶ÃŸe hatAnfangsausdruck verweist auf Ã¤uÃŸeren Iterator %qDbinÃ¤res Argument %u fÃ¼r typgenerische Funktion, die ausschlieÃŸlich dezimal istbinÃ¤rer Ausdruck in Operand von FaltungsausdruckbinÃ¤rer Operator unterstÃ¼tzt nicht, dass bool-Vektor mit Gleitkommavektor vermischt wirdbinÃ¤rer Operator unterstÃ¼tzt keine zwei bool-Vektor-OperandenBinÃ¤rer Operator unterstÃ¼tzt Boolean-Vektor-Argument nichtbind(c)-Prozedurdas Binden der Referenz vom Typ %qH an %qI streicht QualifiziererBitfeld %q#D mit Nicht-Ganzzahl-Typ %qTBreite des Bitfeldes %q+D ist keine GanzzahlkonstanteBitfeld %qD mit Nicht-Ganzzahl-Typ %qTBitfeld %qD mit Nicht-Ganzzahl-Typ %qTBitfeld %qE hat atomaren TypenBitfeld %qE in %qs-KlauselBitfeld %qs hat ungÃ¼ltigen TypenBreite des Bitfeldes %qs ist keine GanzzahlkonstanteBreite des Bitfeldes %qs ist kein GanzzahlkonstantenausdruckBitfeld hat atomaren TypenBitweiser Vergleich ergibt immer Â»falseÂ«Bitweiser Vergleich ergibt immer Â»trueÂ«bitweise Operation zwischen den unterschiedlichen AufzÃ¤hlungstypen %qT und %qTbitweise Operation zwischen den unterschiedlichen AufzÃ¤hlungstypen %qT und %qT ist veraltetBlock-IFextern-Deklaration %q#D mit GÃ¼ltigkeitsbereich Block darf nicht an ein benanntes Modul angehÃ¤ngt werdenKÃ¶rper der %<constexpr%>-Funktion %qD ist keine RÃ¼ckgabeanweisungnur simulierte DISPOSE-Konstruktion: %dfalsche JARL-Konstruktion: %dnur simulierte JR-Konstruktion: %dnur simulierte PREPARE-Konstruktion: %dfalscher Ergebnistyp bei VergleichBoolesche Register fÃ¼r die Gleitkommaoption benÃ¶tigtwenn %<-mstack-protector-guard=sysreg%> angegeben ist, mÃ¼ssen sowohl %<-mstack-protector-guard-offset%> als auch %<-mstack-protector-guard-reg%> angegeben werdensowohl %<__thread%> als auch %<thread_local%> angegebenwidersprÃ¼chliche Modifizierer %<monotonic%> und %<nonmonotonic%> angegebensowohl %qs als auch %qs angegebensowohl Â»%sÂ« als auch das %qE-Attribut geben die Adresse anbeide Argumente in binÃ¤rer Faltung haben unexpandierte Parameterpackungendie beiden Argumente mÃ¼ssen kompatibel seinbeide Argumente fÃ¼r %<__builtin___clear_cache%> mÃ¼ssen Zeiger seinsowohl binÃ¤re als auch dezimale Gleitkomma-Argumente in Aufruf von typgenerischer Funktionbeide Zweige der %<if%>-Anweisung als %qs markiertsowohl komplexe als auch dezimale Gleitkomma-Argumente in Aufruf von typgenerischer Funktiongebundenes Argument %i mit Wert %s ist negativ, fÃ¼r Argument %i vom Typ Array variabler LÃ¤nge vom Typ %sgeschweift geklammerte Spezifikation %qs endet mit Escapezeichengeschweift geklammerte Spezifikation %qs ist bei %qc ungÃ¼ltiggeschweift geklammerter SpezifikationskÃ¶rper %qs ist ungÃ¼ltiggeklammerte Gruppe innerhalb eines Ausdrucks nur in einer Funktion erlaubtgeschweifte Klammern um Skalar-Initialisierunggeschweifte Klammern um skalare Initialisierung fÃ¼r Typ %qTZweig %2d niemals ausgefÃ¼hrt%sZweig %2d wurde genommen: %s%sbreak-Anweisung nicht innerhalb einer Schleife oder Â»switchÂ«break-Anweisung mit OpenMP fÃ¼r Schleife verwendetbuild_dt: Format mit Namenslisteeingebaute %qD ist hier deklariertEingebaute Funktion %q+D als Nicht-Funktion deklarierteingebaute Funktion %qD als Nicht-Funktion deklarierteingebaute Funktion %qD ist nicht eingeschalteteingebaute Funktion %qD erfordert das Kennzeichen %<-mconstant-cfstrings%>eingebaute Funktion %qD nimmt nur ein Argumenteingebaute Funktion %qE muss direkt aufgerufen werdeneingebaute Funktion %qE nicht fÃ¼r MIPS16 unterstÃ¼tztEingebaute Funktion %qE erfordert die ISA-Erweiterung %qsEingebaute Funktion %qE erfordert die ISA-Erweiterung zve32f, zve64f, zve64d oder vEingebaute Funktion %qE erfordert die ISA-Erweiterung zve64d oder vEingebaute Funktion %qE erfordert die ISA-Erweiterung zve64x, zve64f, zve64d oder veingebaute Funktion %qE erfordert die ISA-Erweiterung zvfbfmin oder zvfbfwmaEingebaute Funktion %qE erfordert die ISA-Erweiterung zvfhmin oder zvfhdie eingebaute Funktion fÃ¼r benannten Adressraum wird fÃ¼r GerÃ¤te mit reduziertem Tiny nicht unterstÃ¼tzteingebaute Funktion wird nur fÃ¼r GNU-C unterstÃ¼tzteingebauter Index-Operator mit mehr als einem Ausdruck in der Ausdruckslisteeingebauter Index-Operator ohne Ausdruckslisteeingebaute Funktion %qF ist veralteteingebautes %qF ist nur fÃ¼r interne GCC-Nutzungeingebaute %qF wird nur mit %<-mhtm%> unterstÃ¼tzt (standardmÃ¤ÃŸig fÃ¼r %<-march=zEC12%> und hÃ¶her eingeschaltet)eingebaute %qF wird nur mit %<-mvx%> unterstÃ¼tzt (standardmÃ¤ÃŸig fÃ¼r %<-march=z13%> und hÃ¶her eingeschaltet)das eingebaute %qs kann nur mit Vektortypen verwendet werdeneingebaute Funktion %qs kann nur im 64-Bit-Modus verwendet werdeneingebaute Funktion %qs erfordert GLIBC (2.23 oder neuer), die Hardware-FÃ¤higkeits-Bits exportiertEingebaute Funktion %qs akzeptiert genau 1 ArgumentEingebaute Funktion %qs akzeptiert genau 2 ArgumenteEingebaute Funktion %qs akzeptiert genau 3 Argumenteeingebaute Funktion %qs akzeptiert nur ein ZeichenkettenargumentOperand %d der eingebauten Funktion muss konstant seinaber %qD wirft nicht; vielleicht sollte sie als %<noexcept%> deklariert werdenaber %qs hat es nichtwird aber Ã¼berragt von einer Tabelle ohne RTTI-Informationen aus anderer Ãœbersetzungseinheitaber nicht hierdurch Argument %u vom Typ %s nach %qD, die hier deklariert wurdedurch Argument %u vom Typ %s nach %qTBytecode-Strom in Datei %qs, mit einem Ã¤lteren GCC-Compiler als 10.0 erzeugtBytecode-Strom in Datei %qs mit LTO-Version %d.%d statt des erwarteten %d.%d erzeugtBytecode-Strom: Marke %s statt %s erwartetBytecode-Strom: Leeren Cgraph-Knoten gefundenBytecode-Strom: Mehrere Instanzen des Cgraph-Knoten mit UID %d gefundenBytecode-Strom: Nicht nullterminierte Zeichenkette gefundenBytecode-Strom: Ausschuss am Ende des Â»symbolsÂ«-AbschnittsBytecode-Strom: Kein Gerufener beim Lesen der Kante gefundenBytecode-Strom: Kein Aufrufer beim Lesen der Kante gefundenBytecode-Strom: Zeichenkette zu lang fÃ¼r Zeichenkettentabellebytecode stream: tag %s is not in the expected range [%s, %s]Bytecode-Strom: Versuch, %d Bytes nach Ende des Eingabepuffers zu lesenBytecode-Strom: unerwarteter LTO-Abschnitt %sBytecode-Strom: unerwartete Marke %sbytecode stream: unknown GIMPLE statement tag %sAufruf %2d niemals ausgefÃ¼hrt
  Aufruf %2d gab %s zurÃ¼ck
! die echte Funktion statt des eingebauten Ã„quivalents aufrufender Wert bei Aufruf und RÃ¼ckkehr unterscheiden sichAufruf hat ringfÃ¶rmige AbhÃ¤ngigkeitder Aufruf des Funktionsaufrufs verweist auf lokale VariablenAufruf wird niemals ausgefÃ¼hrt und CodegrÃ¶ÃŸe wÃ¼rde wachsenAufruf ist unwahrscheinlich und CodegrÃ¶ÃŸe wÃ¼rde wachsender Aufruf wirft mÃ¶glicherweise eine lokal gefangene Ausnahme oder rÃ¤umt aufder Aufruf wirft mÃ¶glicherweise eine Ausnahme, die nicht propagiertAufruf von %<%T::operator[] (%A)%> ist mehrdeutigAufruf von %<(%T) (%A)%> ist nicht eindeutigAufruf des Ã¼berladenen %<%D(%A)%> ist nicht eindeutigAufruf des Ã¼berladenen %<%s(%A)%> ist mehrdeutigder Hash der Aufrufanweisung zeigt nicht auf die erste direkte Kante der Folge von spekulativen AufrufenAufruf von %<__builtin_operator_delete%> wÃ¤hlt keine ersetzbare globale DeallokationsfunktionAufruf von %<__builtin_operator_new%> wÃ¤hlt keine ersetzbare globale AllokationsfunktionAufruf von %qD%qD wird hier aufgerufenAufruf von %qD verwendet das Standardargument fÃ¼r Parameter %P, der noch nicht definiert wurdeAufruf von %qE ist mehrdeutig; Argument %d ist vom Typ %qs, aber Argument %d ist vom Typ %qsAufruf von %qs mit Attributfehler deklariert: %sAufruf von %qs mit Attributwarnung deklariert: %sAufruf einer Funktion, die den %qs-Zustand teilt, aus einer Funktion, die keinen %qs-Zustand hatAufruf einer Funktion, die den SME-Status teilt, aus einer Funktion, die keinen SME-Status hatAufruf einer Funktion, die einen anderen Status als %qs hat, aus einer Funktion, die den Status %qs hatAufruf der consteval-Funktion %qE ist kein konstanter AusdruckAufruf der Funktion %qD, die unvollstÃ¤ndigen Typen %q#T wirftAufruf einer Funktion, die unvollstÃ¤ndigen Typen %q#T wirftAufruf fÃ¼r interne Funktion %qEAufruf der nicht-%<constexpr%>-Funktion %qDAufruf der Nicht-Funktion %qDfÃ¼r Ruf vorgesehenes Register wurde fÃ¼r globale Registervariable verwendetvon hier aufgerufenvon dieser Funktion aus aufgerufengerufenes Objekt %qD ist keine Funktion oder Funktionszeigergerufenes Objekt %qE ist keine Funktion oder Funktionszeigergerufenes Objekt ist keine Funktion oder Funktionszeigerder Aufgerufene kehrt nicht zurÃ¼ckAufgerufene Funktion verweist auf comdat-lokale Symboleder Angerufene benÃ¶tigt mehr Stack-Slots als der Aufruferder Aufgerufene gibt eine Struktur zurÃ¼ckder Aufgerufene kehrt zweimal zurÃ¼ckAufrufer und Aufgerufener sind sich nicht einig Ã¼ber die Promotion des RÃ¼ckgabewerts der FunktionInterner Fehler: caller edge count does not match BB countInterner Fehler: caller edge count invalidAufrufer ist nicht optimiertder Aufrufer verwendet __builtin_eh_returnder Aufrufer verwendet allocader Aufrufer verwendet setjmpder Aufrufer verwendet sjlj-Ausnahmender Aufrufer verwendet stdargsAufruf von %<always_inline%> %<strub%> %qD in Nicht-%<strub%>-Kontext %qDAufruf von %qD mit Nicht-%<strub%>-Typ %qT in %<strub%>-Kontext %qDAufruf von %qD mit SSE-Aufrufkonvention, ohne dass SSE/SSE2 eingeschaltet istdas Aufrufen von %qD mit einem nicht-null-Argument ist unsicherAufruf von %qD mit Attribut sseregparam, ohne dass SSE/SSE2 eingeschaltet istAufruf von %qE ohne Nebenwirkungen verwirft RÃ¼ckgabewert vom Typ %qT; falls der Aufruf beabsichtigt ist, stellen Sie ein %<cast(void)%> voranAufruf von %qT mit Attribut sseregparam, ohne dass SSE/SSE2 eingeschaltet istder Aufruf einer Streaming-Funktion erfordert die ISA-Erweiterung %qsÂ»constexprÂ«-Elementfunktion %qD kann nicht vom virtuellen Basisobjekt aus aufgerufen werdenAufruf des Nicht-%<strub%>-Ausdrucks %qD im %<strub%>-Kontext %qDAufrufe von Funktionen vom Typ %qT erfordern die SVE-ISA-ErweiterungAufrufe Ã¼berladener Operatoren kÃ¶nnen nicht in einem Konstanten-Ausdruck auftretenAufrufe an die OpenMP-Laufzeit-API sind in dazwischenliegendem Code nicht zulÃ¤ssigcalls_comdat_local wird auÃŸerhalb einer comdat-Gruppe gesetztnur Attribut %qE kann fÃ¼r Definitionen von Objekten eines Klassentyps im Datei-GÃ¼ltigkeitsbereich verwendet werdenhÃ¶chstens einer der Spezifizierer %<constinit%> und %<constexpr%> kann verwendet werdenNicht-GP-relative absolute Adresse kann nicht verwendet werdenKandidat %i:Kandidat 1:Kandidat 2:Kandidat erwartet %d Argument, %d angegebenKandidat erwartet %d Argumente, %d angegebenKandidat erwartet mindestens %d Argument, %d angegebenKandidat erwartet mindestens %d Argumente, %d angegebenKandidat ist:Kandidaten sind:Kandidaten sind:%<dynamic_cast%> %qE (des Typs %q#T) in Typ %q#T (%s) kann nicht vorgenommen werden%<goto%> kann nicht in einen %<catch%>-Block hineinspringen%<goto%> kann nicht in einen %<try%>-Block hineinspringenAufzÃ¤hlungsliste kann nicht zu Template-Instanziierung hinzugefÃ¼gt werdennach der Definition kÃ¶nnen keine VertrÃ¤ge mehr hinzugefÃ¼gt werdenVertrÃ¤ge kÃ¶nnen nicht zu einer virtuellen Funktion hinzugefÃ¼gt werdenes kann kein Objekt des abstrakten Typs %qT belegt werdenArray kann nicht alloziert werden: GrÃ¶ÃŸe nicht konstantObjekte vom RVV-Typ %qT kÃ¶nnen nicht alloziert werdenObjekte vom SVE-Typ %qT kÃ¶nnen nicht alloziert werdenStapelspeicher fÃ¼r Variable %q+D kann nicht angefordert werden, nackte Funktionvl-Register fÃ¼r %qs kann auf diesem Ziel nicht alloziert werden%<offsetof%> kann nicht auf nicht-konstante Adresse angewandt werden%<offsetof%> kann nicht auf AufzÃ¤hler %qD angewandt werden%<offsetof%> kann nicht auf Destruktor %<~%T%> angewandt werden%<offsetof%> kann nicht auf Elementfunktion angewandt werden%<offsetof%> kann nicht auf Elementfunktion %qD angewandt werden%<offsetof%> kann nicht auf statisches Datenelement %qD angewendet werden%<offsetof%> kann nicht angewandt werden, wenn %<operator[]%> Ã¼berladen ist%qs kann nicht auf %qD angewendet werden, da diese bereits mit einer OpenMP-Â»declare targetÂ«-Direktive gekennzeichnet wurdedas Attribut %qs kann nicht auf %q+D angewendet werden, nachdem die Funktion definiert worden istDie Attribute %<longcall%> und %<shortcall%> kÃ¶nnen nicht beide gleichzeitig fÃ¼r eine Funktion verwendet werdenElementzeiger %qE kann nicht auf %qE angewandt werden, da letzteres vom Nicht-Klassen-Typ %qT ist%<::main%> kann nicht an ein benanntes Modul angehÃ¤ngt werdendas Bitfeld %qE kann nicht mit %qT verbunden werdenkann keine Lvalue-Referenz vom Typ %qH an einen Rvalue vom Typ %qI bindennicht-konstante lvalue-Referenz vom Typ %qH kann nicht an Wert vom Typ %qI gebunden werdennicht-konstante lvalue-Referenz vom Typ %qH kann nicht an rvalue vom Typ %qI gebunden werdendas gepackte Feld %qE kann nicht mit %qT verbunden werdenReferenz vom Typ %qH kann nicht an %qI gebunden werden, da die Arraygrenzen sich unterscheidender R-Wert %qE kann nicht mit %qT verbunden werdenrvalue-Referenz vom Typ %qH kann nicht an lvalue vom Typ %qI gebunden werdenein Konzept kann nicht wie eine Funktion aufgerufen werdenKonstruktor %<%T::%D%> kann nicht direkt aufgerufen werdenElementfunktion %qD kann nicht ohne Objekt aufgerufen werden%qE kann nicht per Referenz aufgefangen werdenElement %qD von unbenannter Union kann nicht eingefangen werden%qs kann nicht in %qs umgewandelt werden, da die GrÃ¶ÃŸen nicht passenAusdruck vom Typ %qs kann nicht in %qs umgewandelt werdenAusdruck vom Typ %qs kann nicht in den Typ %qs umgewandelt werdenException vom Typ %qT kann nicht gefangen werden, da Typen mit variabler GrÃ¶ÃŸe beteiligt sindNicht existierende Antwortdatei konnte nicht geschlossen werdenNur-Empfangs-Kanal kann nicht geschlossen werdenGNU- und SVE-Vektoren kÃ¶nnen nicht in einer binÃ¤ren Operation kombiniert werdeneine Basis vom Typ %qT kann nicht mit einem Index vom Typ %qT kombiniert werdeneine Basis vom Typ %qT kann nicht mit einem Offset vom Typ %qT kombiniert werden%qE kann nicht vom Typ %qH in den Typ %qI umgewandelt werden%qE kann nicht vom Typ %qT in den Typ %qT umgewandelt werden%qE kann nicht in %qT umgewandelt werden%qE kann nicht in %qT umgewandelt werden, da%qH kann nicht nach %qI umgewandelt werden%qH kann nicht nach %qI bei ArgumentÃ¼bergabe umgewandelt werden%qH kann nicht nach %qI in Zuweisung umgewandelt werden%qH kann nicht nach %qI im Standardargument umgewandelt werden%qH kann nicht nach %qI in Initialisierung umgewandelt werden%qH kann nicht nach %qI in RÃ¼ckgabe umgewandelt werdenein Delegatenausdruck kann nicht in %qs umgewandelt werdenWert vom Typ %qT kann nicht in Vektortyp %qT konvertiert werden, da sie unterschiedlich groÃŸ sindVektor vom Typ %qT kann nicht in Typ %qT konvertiert werden, da sie unterschiedlich groÃŸ sindAusdruck kann nicht umgewandelt werden, nur Basistypen kÃ¶nnen umgewandelt werdenUmwandlung von %qT in Basisklasse %qT nicht mÃ¶glich, da %qT unvollstÃ¤ndig istUmwandlung von Basisklasse %qT in abgeleitete Klasse %qT nicht mÃ¶glich, da die Basisklasse virtuell istUmwandlung von Basisklasse %qT in abgeleitete Klasse %qT nicht mÃ¶glich, da die Basisklasse %qT virtuell istunvollstÃ¤ndiger Typ %qH kann nicht in %qI umgewandelt werdenUmwandlung von Zeiger auf Basisklasse %qT in Zeiger auf abgeleitete Klasse %qT nicht mÃ¶glich, da die Basisklasse virtuell istUmwandlung von Zeiger auf Basisklasse %qT in Zeiger auf abgeleitete Klasse %qT nicht mÃ¶glich, da die Basisklasse %qT virtuell istParameter %qs kann bei der ArgumentÃ¼bergabe nicht vom Typ %qs in den Typ %qs umgewandelt werdenParameter %qs kann innerhalb der Anweisung nicht vom Typ %qs in den Typ %qs umgewandelt werdendie Struktur %qs kann nicht in %qs umgewandelt werdenes kann nicht in Zeigertyp konvertiert werdenTyp %qH kann nicht in den Typ %qI umgewandelt werdenWert kann nicht in einen Vektor umgewandelt werdenkann keinen neuen GÃ¼ltigkeitsbereich %qs erstellen, da %qs mit Aufrufern geteilt wirdZeiger auf Referenzelement %qD kann nicht erzeugt werdender vorkompilierte Header %s kann nicht erzeugt werden: %mfÃ¼r Typ %qT kann keine Typinformation erzeugt werden, weil dies Typen variabler GrÃ¶ÃŸe umfasst%<::main%> kann nicht als %qs deklariert werden%<::main%> kann nicht als globale Variable deklariert werden%<::main%> kann nicht als Template deklariert werden%<::main%> kann nicht inline deklariert werden%<::main%> kann nicht statisch deklariert werden%<::main%> kann nicht mit einer Bindungsangabe deklariert werden%<catch%>-Parameter kann nicht als abstrakter Klassentyp %qT deklariert werden%<catch%>-Parameter kann nicht als R-Wert-Referenztyp %qT deklariert werden%qD kann nicht als Bitfeldtyp deklariert werdenParameter kann nicht mit %<decltype(auto)%> deklariert werdenBitfeld %qD kann nicht mit %<warn_if_not_aligned%>-Typ deklariert werdenBitfeld %qD kann nicht mit Funktionstyp deklariert werdenBitfeld %qs kann nicht mit %<warn_if_not_aligned%>-Typ deklariert werdenFeld %q+D kann nicht als vom abstrakten Typ %qT deklariert werdenElement %<%T::%s%> kann nicht in %qT deklariert werdenElementfunktion %<%T::%s%> kann nicht innerhalb von %qT deklariert werdenElementfunktion %qD kann nicht deklariert werden, statische Bindung zu habenParameter %q+D kann nicht als vom abstrakten Typ %qT deklariert werdenParameter kann nicht als vom abstrakten Typ %qT deklariert werdenZeiger auf %q#T kann nicht deklariert werdenZeiger auf Element %q#T kann nicht deklariert werdenZeiger auf qualifizierten Funktionstypen %qT kann nicht deklariert werdenReferenz auf %q#T kann nicht deklariert werdenReferenz auf %q#T kann nicht deklariert werden, da letzteres weder Typedef noch Templatetyp-Argument istReferenz auf qualifizierten Funktionstypen %qT kann nicht deklariert werdenstatische Funktion innerhalb anderer Funktion kann nicht deklariert werdenVariable %q+D kann nicht als vom abstrakten Typ %qT deklariert werdenAdresse kann nicht zerlegt werdenKlassentyp %qT kann nicht dekomponiert werden, da er ein unbenanntes Strukturelement hatKlassentyp %qT kann nicht dekomponiert werden, da er ein unbenanntes Unionelement hatKlassentyp %qT ohne nicht-static-Datenelemente kann nicht dekomponiert werdenKlassentyp %qT kann nicht dekomponiert werden, da sowohl er als auch seine Basisklasse %qT nichtstatische Datenelemente habenKlassentyp %qT kann nicht dekomponiert werden, da seine Basisklassen %qT und %qT nichtstatische Datenelemente habenunzugreifbares Element %qD von %qT kann nicht dekomponiert werdenLambda-Abschluss-Typ %qT kann nicht dekomponiert werdennicht-Array-nicht-Klassentyp %qT kann nicht dekomponiert werdenUnion-Typ %qT kann nicht dekomponiert werdenArray mit variabler LÃ¤nge %qT kann nicht dekomponiert werdenVektor %qT variabler LÃ¤nge kann nicht zerlegt werdenZeiger auf unvollstÃ¤ndigen Typen %qT kann nicht verringert werdenTemplateargumente fÃ¼r die Kopierinitialisierung von %qT kÃ¶nnen nicht abgeleitet werden, da es keine expliziten Ableitungshinweise oder benutzerdeklarierten Konstruktoren gibtTemplateargumente fÃ¼r %qT kÃ¶nnen nicht abgeleitet werden, da es keine Ableitungshinweise gibtfÃ¼r unbenannten Union-Member ist kein Standardvergleich definiertfÃ¼r flexible Arraymember ist kein Standardvergleich definiertfÃ¼r Referenzelement %qD ist kein Standardvergleich definiertfÃ¼r Union-Typ %qT ist kein Standardvergleich definiert%<friend%>-Funktion %qs kann nicht in einer lokalen Klassendefinition definiert werdenElementfunktion %<%T::%s%> kann nicht innerhalb von %qT definiert werdenElement des abhÃ¤ngigen Typedef %qT kann nicht definiert werdenEine Funktion kann nicht gelÃ¶scht werden. Nur Zeiger auf Objekte sind gÃ¼ltige Argumente fÃ¼r %<delete%>Objekte vom RVV-Typ %qT kÃ¶nnen nicht gelÃ¶scht werdenObjekte vom SVE-Typ %qT kÃ¶nnen nicht gelÃ¶scht werdenEs kann nicht von %<final%>-Basis %qT in abgeleiteten Typ %qT abgeleitet werdenFehler beim Bestimmen der %<#include%>-Ãœbersetzung von %s: %sdie LÃ¤nge von %qs kann nicht bestimmt werdenEingebaute Funktion %qs kann nicht abgeschaltet werdenin PTX-Assembler kÃ¶nnen keine unausgerichteten Zeiger erzeugt werden%qs kann nicht ausgefÃ¼hrt werden: %s%qs kann nicht ausgefÃ¼hrt werden: %s: %mInitialisierung fÃ¼r Element %qD kann nicht expandiert werdenElement %q#D kann nicht explizit deklariert werden, externe Bindung zu habenPCH-Datei kann nicht erweitert werden: %mfallthrough ist bei letztem Fall einer switch-Anweisung unmÃ¶glich%<ldd%> kann nicht gefunden werden%<nm%> kann nicht gefunden werden%qs kann nicht gefunden werden%s kann nicht in Plugin %s gefunden werden
! %s%s kann nicht in Plugin %s gefunden werden: %sLTO cgraph kann in %s nicht gefunden werdenLTO-Abschnittsreferenzen kÃ¶nnen in %s nicht gefunden werdenin der Klasse %qs konnte wÃ¤hrend des Neuladens von %<asm%> kein Register gefunden werdenkein gÃ¼ltiger ZÃ¤hlername %qs auffindbar fÃ¼r Option %<-fdbg-cnt=%>Klasse %qE kann nicht gefunden werdenmit Eigenschaft verbundene Instanzvariable nicht gefundenSchnittstellendeklaration fÃ¼r %qE kann nicht gefunden werdenSchnittstellendeklaration fÃ¼r %qE, Basisklasse von %qE, kann nicht gefunden werdenProtokolldeklaration fÃ¼r %qE kann nicht gefunden werdenReferenzmarke fÃ¼r Klasse %qE kann nicht gefunden werdenZeiger auf Element der Nicht-Klasse %q#T kann nicht erzeugt werdenfÃ¼r %qs kann kein lageunabhÃ¤ngiger Code erzeugt werdenZugriff auf den Rahmenzeiger von %qs ist nicht mÃ¶glichPosition in PCH-Datei kann nicht ermittelt werden: %mProgrammstatus kann nicht ermittelt werden: %mVergleich vom Typ %<%s == %s%> kann nicht verarbeitet werdeninkonsistente Aufrufe von %qs kÃ¶nnen nicht behandelt werdenSwitch-Bedingung vom Typ %s kann nicht verarbeitet werdenwidersprÃ¼chliche %qs-Klausel kann nicht berÃ¼cksichtigt werdenein Modul kann nicht in seinen eigenen Bereich importiert werdenZeiger auf unvollstÃ¤ndigen Typen %qT kann nicht erhÃ¶ht werdenein leeres Pack kann nicht indexiert werdenAggregat des Typs %qT kann nicht mit zusammengesetztem Literal initialisiert werdenArray von %qT kann nicht aus einem Zeichenkettenliteral mit Typ %<Array von %T%> initialisiert werden%<main%> ist nicht als Â»inlineÂ« mÃ¶glich%<coroutine traits%> kann nicht instanziiert werden%<coroutine handle%> konnte fÃ¼r den Versprechen-Typ %qT nicht instanziiert werdenPlugin %s kann nicht geladen werden
! %sPlugin %s kann nicht geladen werden: %sOperanden von dezimalen Gleitkomma- und komplexen Typen kÃ¶nnen nicht gemischt werdenOperanden von dezimalen und anderen Gleitkommatypen kÃ¶nnen nicht gemischt werdenOperanden von dezimalen Gleitkomma- und Vektortypen kÃ¶nnen nicht gemischt werdenes kÃ¶nnen maximal %d NamensrÃ¤ume geschachtelt werden%qs kann nicht geÃ¶ffnet werden%qs kann nicht zum Schreiben geÃ¶ffnet werden: %mÂ»%sÂ« kann nicht geÃ¶ffnet werden%s kann nicht zum Schreiben geÃ¶ffnet werden: %m%s kann nicht geÃ¶ffnet werden: %mÂ»%sÂ« kann nicht geÃ¶ffnet werdenDatei %qs kann nicht zum Schreiben der OptimierungsdatensÃ¤tze geÃ¶ffnet werdenZwischenspeicherdatei fÃ¼r gcn-asm kann nicht geÃ¶ffnet werdenzwischenzeitliche ptx-Datei kann nicht geÃ¶ffnet werdenldd-Ausgabe kann nicht geÃ¶ffnet werden: %mVerschachtelte Antwortdatei konnte nicht geÃ¶ffnet werdennm-Ausgabe kann nicht geÃ¶ffnet werden: %mFehler beim Ã–ffnen der omp_requires-Datei %qsProfilingdatei %s kann nicht geÃ¶ffnet werdenArgument kann nicht in Vektorregister Ã¼bergegeben werden, da AltiVec-Befehle ausgeschaltet sind; %qs schaltet sie einObjekt mit volatile-Feld kann nicht in Register geladen werdenFehler beim Einlesen von %<LOT_section_decls%> aus %s%s kann nicht gelesen werden: %mLTO-Modus-Tabelle kann nicht aus %s gelesen werdenPCH-Datei kann nicht gelesen werden: %mFunktionsprofil aus %s kann nicht gelesen werdenFehler beim Lesen der omp_requires-Datei %qsSpec-Datei %qs kann nicht gelesen werden: %mZeichenkettentabelle aus %s konnte nicht gelesen werdenReferenztyp %qT kann nicht Ã¼ber %<...%> empfangen werdeninnerhalb der %<target%>-Region kann nicht auf die Objekttypen %qT verwiesen werdenGanzzahlkonstantenoperand kann in %<asm%> nicht neu geladen werdender eingebauten Typ %<va_list%> kann nicht D nicht dargestellt werdenÃ¼berladene Funktion %qD konnte nicht durch Umwandlung in Typ %qT aufgelÃ¶st werdenvom Behandler eines Funktions-try-Blocks eines Konstruktors kann nicht zurÃ¼ckgekehrt werdenWert kann nicht in Vektorregister zurÃ¼ckgegeben werden, da AltiVec-Befehle ausgeschaltet sind; %qs schaltet sie einAttribut %qE kann nicht nach der Definition festgelegt werdenUnterbrechungsattribut kann nicht gesetzt werden; keine aktuelle FunktionUnterbrechungsattribut kann nicht gesetzt werden: kein solcher BezeichnerPosition in PCH-Datei kann nicht festgelegt werden: %m%<-o%> kann nicht mit %<-c%>, %<-S%> oder %<-E%> mit mehreren Dateien angegeben werdenfÃ¼r eine Klasse kann kein %<override%> angegeben werdenÂ»-staticÂ« kann nicht mit Â»-fsanitize=AdresseÂ« angegeben werdenÂ»-staticÂ« kann nicht mit Â»-fsanitize=hwaddressÂ« angegeben werdenÂ»-staticÂ« kann nicht mit Â»-fsanitize=threadÂ« angegeben werden%<-msep-data%> und %<-mid-shared-library%> kÃ¶nnen nicht zusammen angegeben werdenTail-Call nicht mÃ¶glich: %skein Endaufruf mÃ¶glich: RÃ¼ckgabewert muss ein Funktionsaufruf seindie Adresse von %qs kann nicht ermittelt werdendie Adresse des Bit-Feldes %qD kann nicht ermittelt werdenAdresse eines Skalars mit umgekehrter Speicherreihenfolge kann nicht ermittelt werdenAdresse von %<this%> kann nicht ermittelt werden, das ein R-Wert-Ausdruck istdieser Ausdruck hat keine AdresseC++-Klassen kÃ¶nnen nicht geworfen werdenCOM-Objekte kÃ¶nnen nicht geworfen werdenAusdruck vom Typ %qT kann nicht geworfen werden, da Typen mit variabler GrÃ¶ÃŸe beteiligt sindder RVV-Typ %qT kann weder geworfen noch gefangen werdender SVE-Typ %qT kann weder geworfen noch gefangen werdenTyp-Switch mit Nicht-Interface-Wert ist nicht mÃ¶glichSSA-Form kann nicht aktualisiert werdender Eingabedateiname fÃ¼r einen vorkompilierten Header darf nicht %<-%> sein%<-mtp=cp15%> kann nicht mit 16-Bit-Thumb verwendet werden%<::%> kann nicht in Parameterdeklaration verwendet werden%<_%> kann nicht als Wert verwendet werdenIn der Linux-Toolchain kann das Attribut %<indirect_call%> nicht verwendet werden%<typeid%> kann nicht mit %<-fno-rtti%> verwendet werden%<va_arg%> kann nicht zusammen mit umgedreher Speicherreihenfolge verwendet werden%<va_start%> kann nicht in Unterbrechungsfunktion verwendet werden%qs kann nicht als ein rufgesichertes Register verwendet werden%qs kann nicht als ein rufverwendetes Register verwendet werden%qs kann nicht als ein festes Register verwendet werdenein Objekt kann nicht als Parameter fÃ¼r eine Methode verwendet werdenIn der Linux-Toolchain kann die Funktion %qD nicht das Attribut Â»exceptionÂ« habenIn der Linux-Toolchain kann die Funktion %qD nicht das Attribut Â»interruptÂ« habendas SchlÃ¼sselwort %qs kann nicht als AufzÃ¤hlungskonstante verwendet werdenModus %qs kann nicht fÃ¼r AufzÃ¤hlungstypen verwendet werdenmshared und static kÃ¶nnen nicht zusammen verwendet werdenmthreads und mlegacy-threads kÃ¶nnen nicht zusammen verwendet werdenin einem OpenMP-Arrayabschnitt kÃ¶nnen keine mehrdimensionalen Arrayindizes verwendet werdenEs kÃ¶nnen nicht mehrere StapelprÃ¼fungsmethoden gleichzeitig verwendet werdenIn der Linux-Toolchain kann die Funktion %qD nicht das Attribut Â»exceptionÂ« habenKleindatenzugriffe fÃ¼r %qs nicht mÃ¶glichTyp %s kann nicht als Typ %s verwendet werdenFeld mit unbekannter Grenze %qT kann nicht mit Werten initialisiert werden%s kann nicht geschrieben werden: %mPCH-Datei kann nicht geschrieben werdenPCH-Datei kann nicht geschrieben werden: %mPCH-Datei kann nicht geschrieben werden: erforderliches Speichersegment nicht verfÃ¼gbarAuffÃ¼llung fÃ¼r PCH-Datei kann nicht geschrieben werden: %min %s kann nicht geschrieben werden: %mkanonische Typen unterscheiden sich fÃ¼r identische Typen %qT und %qTder RVV-Typ %qT kann nicht durch Kopieren gefangen werdender SVE-Typ %qT kann nicht durch Kopieren gefangen werdenEinfangen per Kopie von unvollstÃ¤ndigem Typ %qTErfassung von Nicht-Variable %qEErfassung der Variable %qD ohne automatische SpeicherdauerEinfangen des variabel geÃ¤nderten Typs %qT, der kein N3639-Array mit Laufzeitgrenzen isteingefangene strukturierte Bindungen sind eine C++20-Erweiterungcase-Marke %qE nicht innerhalb einer switch-Anweisungcase-Marke reduziert nicht auf GanzzahlkonstanteÂ»caseÂ«-Marke ist kein konstanter Ganzzahlausdruckcase-Marke nicht innerhalb einer switch-Anweisungcase-Marke Ã¼berschreitet Maximalwert des Typscase-Marke ist kleiner als Minimalwert des Typsunsortierte case-Marken in switch-AnweisungInterner Fehler: case labels not sorted: case-Wert %qs nicht in AufzÃ¤hlungstypcase-Wert %qs nicht in AufzÃ¤hlungstyp %qTTypumwandlung fÃ¼gt Qualifizierer %q#v zu Funktionstyp hinzuUmwandlung zwischen inkompatiblen Funktionstypen von %qH nach %qIunvollstÃ¤ndiger Funktionstyp %qT kann nicht nach %qT umgewandelt werdenUmwandlung zwischen inkompatiblen Elementzeigertypen von %qH nach %qITypumwandlung streicht Qualifizierer %qv von Zeiger-ZieltypUmwandlung von %qH in %qI erhÃ¶ht erforderliche Ausrichtung des ZieltypsTypumwandlung von %qH nach %qI verliert GenauigkeitCast von %qT ist nicht erlaubtder Cast von %qT ist in einem konstanten Ausdruck nicht zulÃ¤ssig, da der Typ %qT, auf den gezeigt wird, %qT nicht Ã¤hnlich istder Cast von %qT ist in einem konstanten Ausdruck vor C++26 nicht erlaubtUmwandlung von %qs nach %qs fÃ¼hrt zum Ergebnis 0Typumwandlung von Funktionsaufruf des Typs %qT in unpassenden Typen %qTTypkonvertierung von Zeiger auf Ganzzahl anderer BreiteUmwandlung des Typs %qT in Typ %qT entfernt QualifiziererTypkonvertierung erfordert Ausrichtung des ZieltypsTypkonvertierung gibt Arraytyp anTypkonvertierung gibt Funktionstyp anUmwandlung in %qs-Adressraumzeiger aus getrenntem %qs-AdressraumzeigerUmwandlung in %qs-Adressraumzeiger aus getrenntem allgemeinen Adressraumzeigerdie Umwandlung nach %qs ergibt immer Â»nullÂ«Umwandlung in allgemeinen Adressraumzeiger aus getrenntem %qs-AdressraumzeigerUmwandlung in Nicht-Ganzzahltyp %qT in konstantem AusdruckTypkonvertierung in Zeiger von Ganzzahl anderer BreiteTypkonvertierung in union-Typ von nicht in union vorhandenem TypenUmwandlung von %qT in %qT dereferenziert nicht den ZeigerUmwandlung von %qT in %qT verwendet %qD nichtUmwandlung zwischen Zeiger auf Funktion und Zeiger auf Objekt ist bedingt unterstÃ¼tztAbfangen von Nicht-Aufruf-Ausnahmen in Funktionen mit SME-ZustandNichtreferenztyp %q#T wird gefangenpolymorpher Typ %q#T wird per Wertzuweisung gefangenTyp %q#T wird per Wertzuweisung gefangenKategorie-Attribute sind in Objective-C 1.0 nicht verfÃ¼gbarKategorie-Attribute sind in dieser Version des Compilers nicht verfÃ¼gbar (wird ignoriert)Attribute cdecl und thiscall sind nicht vertrÃ¤glichInterner Fehler: cgraph count invalidInterner Fehler: cgraph_node has wrong clone listInterner Fehler: cgraph_node has wrong clone_ofInterner Fehler: cgraph_node has wrong prev_clone pointerInterner Fehler: cgraph_node is in clone list but it is not cloneÃ„nderung des aktiven Elements einer union von %qD zu %qD wÃ¤hrend der InitialisierungÃ„nderung des aktiven Elements einer union von %qD zu %qD ist vor C++20 kein konstanter Ausdruckwenn Sie den RÃ¼ckgabetyp von %qs in einen Vergleichskategorietyp Ã¤ndern, kann der Vergleich %qs und %qs verwendenInterner Fehler: check_charlen_present(): length not setcheck_dimension(): Bad array referencecheck_dummy_characteristics: Unexpected result %i of gfc_dep_compare_exprcheck_init_expr(): Unknown expression typecheck_intents(): List mismatchcheck_restricted(): Unknown expression typecheck_result_characteristics (1): Unexpected result %i of gfc_dep_compare_exprcheck_result_characteristics (2): Unexpected result %i of gfc_dep_compare_exprcheck_some_aliasing(): List mismatchcheck_some_aliasing(): corrupted dataPrÃ¼fsumme ist (%x,%x) statt (%x,%x)Wahl von %qD statt %qDWert der ChunkgrÃ¶ÃŸe muss positiv seinringfÃ¶rmige Zeigerdelegation erkanntKlasse %qE existiert bereitsKlasse %qE ist definiert, ohne eine Basisklasse anzugebenKlasse %qE ist veraltetKlasse %qE ist nicht verfÃ¼gbarKlasse %qE ist nicht verfÃ¼gbarKlasse %qT hat keinen Feldnamen %qDKlasse %qT ist implizit Â»friendÂ« von ihr selbstKlasse %qs implementiert nicht das Protokoll %qEKlassenattribute sind in Objective-C 1.0 nicht verfÃ¼gbarKlassendefinition darf nicht als Â»friendÂ« deklariert seinKlassenerweiterung fÃ¼r Klasse %qE nach seiner %<@implementation%> deklariertKlassenerweiterungen sind in Objective-C 1.0 nicht verfÃ¼gbarKlassentemplate %qD als Nicht-Template redeklariertArgumentherleitung fÃ¼r Klassentemplate gescheitert:Argumentherleitung fÃ¼r Klassentemplate von %qT fehlgeschlagen: expliziter Herleitungshinweis in copy-list-initialization ausgewÃ¤hltArgumentherleitung von Klassentemplates ist nur mit %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbarKlassentyp %qT ist unvollstÃ¤ndigKlauseln in %<simd%>-Eigenschaft sollten durch %<,%> getrennt werdenArgument fÃ¼r cleanup ist keine FunktionArgument fÃ¼r cleanup ist kein BezeichnerKlone fÃ¼r Attribut %<target_clones%> kÃ¶nnen nicht erzeugt werdenclose: %sgeschlossene IntervalleLTRANS-Ausgabeliste Â»%sÂ« kann nicht geschlossen werden: %mAbhÃ¤ngigkeitsdatei Â»%sÂ« kann nicht geschlossen werden: %mCoarray-ArgumentCode zwischen dem Aufruf und der RÃ¼ckkehrCode kÃ¶nnte fehloptimiert werden, es sei denn, %<-fno-strict-aliasing%> wird angegebenCodemodell %qs ist inkompatibel zu %sCodemodell %qs wird im ilp32-Modus nicht unterstÃ¼tztCodemodell %qs wird im %s-Bit-Modus nicht unterstÃ¼tztCodemodell %qs wird im x32-Modus nicht unterstÃ¼tztCodemodell %qs mit %<-f%s%>Codemodell %qs mit %qsCodemodell %s unterstÃ¼tzt keinen PIC-ModusCollapse-Argument erfordert positiven konstanten Ganzzahlausdruckcollect2-Version %s
! Sammlung in schneller AufzÃ¤hlung ist kein Objektcomdat-Symbole kÃ¶nnen nicht versioniert werdenInterner Fehler: comdat-local function called by %s outside its comdatInterner Fehler: comdat-local symbol referred to by %s outside its comdatKomma am Ende der AufzÃ¤hlungslistekommagetrennte Liste in using-Deklaration ist nur mit %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbarKommandozeilenoption %<-fno-builtin-%s%> ist fÃ¼r Fortran nicht gÃ¼ltigKommandozeilenoption %qs wird von dieser Konfiguration nicht unterstÃ¼tztKommandozeilenoption %qs ist gÃ¼ltig fÃ¼r %s, aber nicht fÃ¼r %sKommandozeilenoption %qs ist gÃ¼ltig fÃ¼r den Treiber, aber nicht fÃ¼r %sgemeinsames Symbol kann nicht versioniert werdengemeinsam genutzte Variablen mÃ¼ssen eine Ausrichtung von 32768 oder weniger habencompare_actual_expr(): Bad component codecompare_real(): Bad operatorVergleich der endgÃ¼ltigen BefehlslistenVergleich von Gleitkomma mit %<==%> oder %<!=%> ist unsicherVergleich des Ergebnisses der Zeigeraddition %qE mit NULLVergleich von Vektoren mit verschiedenen Element-TypenVergleich von Vektoren mit unterschiedlicher ElementanzahlVergleich zwischen %q#T und %q#TVergleich zwischen %qT und %qTVergleich zwischen den unterschiedlichen Zeigertypen %qT und %qT benÃ¶tigt Umwandlungbeim Vergleich zwischen unterschiedlichen Zeiger-auf-Element-Typen %qT und %qT fehlt eine TypkonvertierungVergleich zwischen Zeiger und GanzzahlVergleich zwischen Zeiger und '\0'Vergleich zwischen zwei ArraysVergleich zwischen zwei Arrays ist in C++20 veraltetVergleich zwischen zwei Arrays ist in C++26 nicht erlaubtVergleich zwischen den Typen %qT und %qTVergleich ist immer %dVergleich ist immer %d wegen Breite des BitfeldesVergleich ist durch beschrÃ¤nkten Wertebereich des Datentyps stets Â»unwahrÂ«Vergleich ist durch beschrÃ¤nkten Wertebereich des Datentyps stets Â»wahrÂ«Vergleich von vollstÃ¤ndigen und unvollstÃ¤ndigen ZeigernVergleich der Konstanten %qE mit booleschem Ausdruck ist stets Â»falseÂ«Vergleich der Konstanten %qE mit booleschem Ausdruck ist stets Â»trueÂ«Im Vergleich verschiedener Objective-C-Typen fehlt Typumwandlungin Vergleich verschiedener Zeigertypen fehlt TypkonvertierungVergleich zwischen AufzÃ¤hlungstyp %qT und Gleitkommatyp %qTVergleich zwischen AufzÃ¤hlungstyp %qT und Gleitkommatyp %qT ist veraltetVergleich zwischen Gleitkommatyp %qT und AufzÃ¤hlungstyp %qTVergleich zwischen Gleitkommatyp %qT und AufzÃ¤hlungstyp %qT ist veraltetVergleich von GanzzahlausdrÃ¼cken, von denen nur einer ein Vorzeichen hat: %qT und %qTVergleich von Zeigern auf disjunkte AdressrÃ¤umeVergleich von befÃ¶rdertem bitweisem Komplement eines vorzeichenlosen Werts mit einer KonstantenVergleich von befÃ¶rdertem bitweisem Komplement eines vorzeichenlosen Werts mit einer vorzeichenlosen ZahlVergleich eines vorzeichenlosen Ausdrucks in %<< 0%> ist stets unwahrVergleich eines vorzeichenlosen Ausdrucks in %<>= 0%> ist stets wahrVergleichsoperator %q+D mit Standardimplementierung nach der ersten Deklaration [class.compare.default]Vergleich erforderlichVergleich mit Zeichenkettenliteral fÃ¼hrt zu unspezifiziertem VerhaltenVergleiche wie %<X<=Y<=Z%> haben nicht ihre mathematische Bedeutungder kompatible Typ ist hierKompilierung wegen Â»-Wfatal-errorsÂ« beendet.
  Kompilierung wegen Â»-fmax-errors=%uÂ« beendet.
  Kompilierung beendet.
  alle Implementierungsmodule und Programmmodule auf einmal Ã¼bersetzendie compilierte Moduldatei ist %qsdas kompilierte Modul ist %sVersion %szur Compilezeit sicherstellen, dass Parameternamen von Prozeduren im Definitionsmodul denen im Implementierungsmodul entsprechender Compiler unterstÃ¼tzt ZSTD-LTO-Komprimierung nichtder Compiler ist %sVersion %s%s%swarnen bei expliziter Typumwandlung zwischen Typen mit unterschiedlicher GrÃ¶ÃŸeKomplement-Argument muss eine Konstante seinkomplexes Argument %u fÃ¼r typgenerische Funktion, die ausschlieÃŸlich dezimal istkomplexe Argumente mÃ¼ssen Gleitkommatyp habenkomplexe Argumente mÃ¼ssen identische Typen habenÃœberlauf von komplexen Gleitkommazahlen in Ausdruck %qE des Typs %qT ergibt %qEÃœberlauf von komplexen Gleitkommazahlen in Ausdruck des Typs %qT ergibt %qEÃœberlauf von komplexen Ganzzahlen in Ausdruck %qE des Typs %qT ergibt %qEÃœberlauf von komplexen Ganzzahlen in Ausdruck des Typs %qT ergibt %qEcomplex ungÃ¼ltig fÃ¼r %qsKomponente %qs bei %L wurde bereits von Konstruktor fÃ¼r abgeleitete Typen durch einen Elternteil gesetztzusammengesetztes Literal hat Funktionstypzusammengesetztes Literal hat variable GrÃ¶ÃŸezusammengesetztes Literal ist implizit auto, jedoch als %qs deklariertzusammengesetztes Literal vom Nicht-Objekt-Typ %qTVerbundliteral durch Adressraumqualifizierer qualifiziertzusammengesetzte Anweisung in %<constexpr%>-Funktionkomprimierter Strom: %sdas berechnete Goto muss von einem Zeigertyp seinVerkettung von String-Literalen mit widersprÃ¼chlichen KodierungsprÃ¤fixendas Konzept %qE hat mehrere Vorlagenparameterlistendas Konzept %qE ist nicht im GÃ¼ltigkeitsbereich des Namensraumsdas Konzept wurde hier definiertKonzept muss im GÃ¼ltigkeitsbereich des Namensbereiches definiert werdenKonzept-ID %qD in geschachteltem Namens-SpezifiziererBedingung %2u ist nicht abgedeckt (%s%s)
  Bedingung deklariert eine FunktionBedingung deklariert ein ArrayBedingungsausdruck verweist auf Iterationsvariable %qDAbgedeckte Bedingungsergebnisse %d/%d
! bedingte %<lastprivate%>-Klausel im %qs-Konstruktbedingte %<lastprivate%>-Klausel an Schleifeniterator %qD wird ignoriertBedingungsausdruck mit den unterschiedlichen Zeigertypen %qT und %qT benÃ¶tigt Umwandlungim Bedingungsausdruck mit unterschiedlichen Zeiger-auf-Element-Typen %qT und %qT fehlt eine TypkonvertierungBedingungsausdruck zwischen AufzÃ¤hlungstyp %qT und Gleitkommatyp %qTBedingungsausdruck zwischen AufzÃ¤hlungstyp %qT und Gleitkommatyp %qT ist veraltetBedingungsausdruck zwischen Gleitkommatyp %qT und AufzÃ¤hlungstyp %qTBedingungsausdruck zwischen Gleitkommatyp %qT und AufzÃ¤hlungstyp %qT ist veraltetbedingter Ausdruck in Operand von Faltungsausdruckbedingt ausgefÃ¼hrte Schleife im der Region %<kernels%> wird von einer einzelnen Bande ausgefÃ¼hrt; %<gang%>-Klausel wird ignoriertin Konflikt stehendes %<constexpr%> fÃ¼r importierte Deklaration %#qDin Konflikt stehende %<noexcept%>-Angabe fÃ¼r importierte Deklaration %#qDin Konflikt stehende Deklaration %q#D mit Bindung fÃ¼r die Sprache "C"Zugriffsangaben fÃ¼r Feld %qE stehen in Konflikt, ignoriertZugriffsangaben fÃ¼r Methode %q+D stehen in Konflikt, ignoriertin Konflikt stehende Argumentliste fÃ¼r importierte Deklaration %#qDin Konflikt stehende Argumenttypen fÃ¼r importierte Deklaration %#qDwidersprÃ¼chliche Codegenerierungsschalterin Konflikt stehende Deklaration %q#Dsteht mit neuer Deklaration von %q#D mit %qL-Bindung in KonfliktwidersprÃ¼chliche Deklaration von %qD in globalem ModulwidersprÃ¼chliche Deklaration von %qD in Modul %qsin Konflikt stehende Deklaration fÃ¼r C-Funktion %q#DunvertrÃ¤gliche Deklaration des Templates %q#Din Konflikt stehender deduzierter RÃ¼ckgabetyp fÃ¼r importierte Deklaration %#qDwidersprÃ¼chliches Standardargument fÃ¼r %#qDwidersprÃ¼chliches Standardargument fÃ¼r den Parameter %P von %#qDin Konflikt stehender Export fÃ¼r Deklaration %qDin Konflikt stehende Deklaration %q#Din Konflikt stehende Sprachbindung fÃ¼r importierte Deklaration %#qDin Konflikt stehende benannte AdressrÃ¤ume (%s und %s)in Konflikt stehende benannte AdressrÃ¤ume (%s und %s) fÃ¼r %q+Din Konflikt stehende benannte AdressrÃ¤ume (%s und generisch) fÃ¼r %q+Din Konflikt stehende benannte AdressrÃ¤ume (generisch und %s) fÃ¼r %q+DwidersprÃ¼chliche Neudeklaration des AufzÃ¤hlungswerts %q+DwidersprÃ¼chliche Redefinition des AufzÃ¤hlungstyps %qTIn Konflikt stehende Reduktionsoperationen fÃ¼r %qEin Konflikt stehenden RÃ¼ckgabetyp fÃ¼r %q+#D angegebenin Konflikt stehender Basisklassenname %qEin Konflikt stehenden Typattribute fÃ¼r %q+#D angegebenin Konflikt stehender Typ fÃ¼r importierte Deklaration %#qDIn Konflikt stehende Typqualifizierer fÃ¼r %q+Din Konflikt stehende Typen fÃ¼r %<%c%s%>In Konflikt stehende Typen fÃ¼r %q+DwidersprÃ¼chliche Typen fÃ¼r %q+D aufgrund von enum/integer-Konflikt; der bestehende Typ ist %qTabweichende Typen fÃ¼r %q+D; der bestehende Typ ist %qTin Konflikt stehende Typen fÃ¼r eingebaute Funktion %q+D; erwartet wurde %qTin Konflikt stehende Typen fÃ¼r eingebaute Funktion %qs; erwartet wurde %qsKonflikt mit %qDerwÃ¤gen Sie die Verwendung von %<-fno-module-lazy%>, die ErhÃ¶hung des Wertes von %<-param-lazy-modules=%u%> oder die ErhÃ¶hung der prozessspezifischen Dateideskriptorgrenzeevtl. Â»-pgÂ« statt Â»-pÂ« mit gprof(1) verwendetevtl. Â»-pgÂ« statt Â»-pÂ« mit gprof(1) verwendenevtl. Â»-pgÂ« statt Â»-pÂ« mit gprof(1) verwendenmit const, volatile oder restrict qualifizierter Typ in %<#pragma omp declare reduction%>Ãœbertragung von const/copy ausgeschaltetconst_double_split bekam einen falschen Befehl:Konstante %qs ist zu groÃŸkonstantes Argument %d fÃ¼r eingebautes %qF ist ungÃ¼ltig (%s)konstantes Argument %d fÃ¼r eingebaute %qF liegt auÃŸerhalb des Bereichs %wd bis %wdkonstantes Argument %d fÃ¼r eingebaute %qF liegt auÃŸerhalb des Bereichs 0 bis %wuKonstantes Argument %d fÃ¼r eingebaute %qF liegt auÃŸerhalb des Wertebereiches fÃ¼r ZieltypKonstantes Argument auÃŸerhalb des Wertebereiches fÃ¼r %qsKonstantes Argument auÃŸerhalb des Wertebereiches fÃ¼r %sKonstantenauswertung liefert Adresse der unmittelbaren Funktion %qDkonstantes Feld %qD als %<asm%>-Ausgabe verwendetInterner Fehler: constant folding not supported for this tree codeKonstantenliteral %qs enthÃ¤lt %qc, %qs erwartetKonstantenliteral %qs enthÃ¤lt %qc, erwartet wird %qs oder %qsKonstantenliteral %qs enthÃ¤lt %qc, 0 oder 1 erwartetKonstantenliteral %qs Ã¼berschreitet internen ZTYPE-BereichKonstante wird bei %<ADDR_EXPR%>-Ã„nderung nicht neu berechnetdas konstante PrÃ¤dikatsargument %d (%wx) lÃ¤sst sich nicht auf %d Fahrspuren abbilden, es wurde daher in %wx umgewandeltKonstante verweist auf sich selbstKonstanter Wert erwartet fÃ¼r Argument %2$d der eingebauten Funktion %1$qF%<data()%> des %<constexpr%>-Strings muss ein Kernkonstantenausdruck sein%<data()%> des %<constexpr%>-Strings muss implizit in %<const char*%> umwandelbar sein%<data()[%d]%> des %<constexpr%>-Strings muss ein konstanter Ausdruck sein%<size()%> des %<constexpr%>-Strings muss ein konstanter Ausdruck sein%<size()%> des %<constexpr%>-Strings muss implizit in %<std::size_t%> umwandelbar sein%<size()%> des %<constexpr%>-Strings ist %qE und damit zu groÃŸ%<constexpr%>-String muss ein Stringliteral oder ein Objekt mit den Membern %<size%> und %<data%> seineingeschrÃ¤nkte Nicht-Template-friend-Deklaration muss eine Definition seinEinschrÃ¤nkung %qE ist vom Typ %qT, muss aber %<bool%> seinEinschrÃ¤nkung erlaubt Register auÃŸerhalb einer FunktionEinschrÃ¤nkungsausdruck muss vom Typ %<bool%> seinunpassende BeschrÃ¤nkungen fÃ¼r Argument %d in Template-Parameterliste fÃ¼r %qDEinschrÃ¤nkungen sind nicht erfÃ¼lltEinschrÃ¤nkungen auf einer Funktion, die kein Template hatKonstruktor kann keine statische Elementfunktion seinKonstruktor verweist auf sich selbstKonstruktordelegation folgt Speicherinitialisierung fÃ¼r %qDKonstruktor gibt keinen Wert zurÃ¼ck, der getestet werden kÃ¶nnteKonstruktor fÃ¼r fremde Klasse %qT kann kein Element seinKonstruktor ist nicht benutzerdefiniert, da er im KlassenkÃ¶rper ausdrÃ¼cklich standardisiert istKonstruktorprioritÃ¤ten werden nicht unterstÃ¼tztKonstruktorprioritÃ¤ten von 0 bis %d sind fÃ¼r die Implementierung vorbehaltenKonstruktorprioritÃ¤ten mÃ¼ssen Ganzzahlen von 0 bis einschlieÃŸlich %d seinKonstruktorsyntax verwendet, aber kein Konstruktor fÃ¼r Typ %qT deklariertKonstruktoren dÃ¼rfen nicht als %<virtual%> deklariert seinKonstruktoren dÃ¼rfen nicht CV-qualifiziert seinKonstruktoren dÃ¼rfen nicht ref-qualifiziert seinenthaltende Schleife ist hierenthÃ¤lt zusÃ¤tzliche virtuelle Methode %qDcontinue-Anweisung nicht innerhalb einer SchleifeVertragsbedingung ist false in konstantem AusdruckZusammenziehung %<%.*s%> im Format; verwenden Sie stattdessen %qsVertrÃ¤ge sind nur mit %<-fcontracts%> verfÃ¼gbarVertrÃ¤ge mÃ¼ssen sich auf einen Funktionstyp beziehenInterner Fehler: control flow in the middle of basic block %dder Programmfluss geht durch die Definition von %qD mit statischer Speicherdauerder Programmfluss geht durch die Definition von %qD mit thread-lokaler SpeicherdauerKontrollfluss erreicht Ende von Nicht-void-FunktionUmwandlung zwischen den unterschiedlichen Zeigertypen %qT und %qT benÃ¶tigt Umwandlungbei Umwandlung zwischen unterschiedlichen Zeiger-auf-Element-Typen %qT und %qT fehlt eine TypkonvertierungUmformung verwirft KonstantheitUmwandlung von %q#T nach %q#TUmwandlung von %qH in %qI lÃ¶scht QualifiziererUmwandlung von %qH nach %qI in einem umgewandelten konstanten AusdruckUmformung von %qH nach %qI ist mehrdeutigUmwandlung von %qH in nicht-skalaren Typen %qI angefordertUmwandlung von %qT nach %qTUmformung von %qT nach %qT Ã¤ndert den Wert von %qEUmwandlung von %qT in %qT Ã¤ndert Wert von %qE nach %qEUmwandlung von %qT in %qT Ã¤ndert Wert von %qd nach %qdUmwandlung von %qT nach %qT verwirft imaginÃ¤re KomponenteUmwandlung von %qT nach %qT kÃ¶nnte den Wert Ã¤ndernUmwandlung von Adressraum %qs in Adressraum %qsKonvertierung von normalem zu Â»notinheapÂ«-TypenUmwandlung von Zeigertyp %qT in arithmetischen Typ %qT in KonstantenausdruckUmwandlung von RÃ¼ckgabetyp %qT der Spezialisierung der Template-Umwandlungsfunktion in %qT passt nicht exaktbei der Konvertierung fehlt der Typ am Ende des FormatesUmwandlung von %qE von %qH nach %qI ist mehrdeutigUmwandlung von %qE nach %qT in Bereichsausdruck Ã¤ndert den Wert zu %qEUmwandlung von %qs auf der linken Seite eines %qsUmwandlung von Argument %d wÃ¤re unzulÃ¤ssig:Umwandlung eines Registers auf eine andere GrÃ¶ÃŸe in %qsUmwandlung von Skalar %qH in Vektor %qI fÃ¼hrt zum AbschneidenUmwandlung von Skalar %qT in Vektor %qT fÃ¼hrt zum AbschneidenUmwandlung eines vorzeichenlosen konstanten Wertes in negative GanzzahlUmformung in %qT Ã¤ndert konstanten Wert von %qTUmwandlung nach %qT von %qT kÃ¶nnte den Wert Ã¤ndernUmwandlung in %qT von %qT kÃ¶nnte das Vorzeichen des Ergebnisses Ã¤ndernUmwandlung in %qT aus booleschem AusdruckKonvertierung in unvollstÃ¤ndigen TypenUmwandlung in nicht-konstanten Referenztyp %q#T von R-Wert des Typs %qTKonvertierung zu Nicht-Skalar-Typ verlangtUmwandlung in void kann die Adresse der Ã¼berladenen Funktion nicht auflÃ¶senUmwandlung in void greift nicht auf Objekt %qE des unvollstÃ¤ndigen Typs %qT zuUmwandlung in void greift nicht auf Objekt des unvollstÃ¤ndigen Typs %qT zuUmwandlung in void greift nicht auf Objekt des nicht trivial kopierbaren Typs %qT zuUmwandlung in void greift nicht auf Objekt des Typs %qT zuUmwandlung in Â»volatileÂ« Referenztyp %q#T von R-Wert des Typs %qTUmwandlungen in Arrays mit unbekannten Grenzen sind erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbar%<false%> wird in Zeigertyp %qT umgewandelt%<false%> wird fÃ¼r Argument %P von %qD in Zeigertyp umgewandeltUmwandlung von %qT in %<void%> wird nie einen Typumwandlungsoperator verwendenUmwandlung von %qT in Basisklasse %qT wird nie einen Typumwandlungsoperator verwendenUmwandlung von %qT in Referenz auf Basisklasse %qT wird nie einen Typumwandlungsoperator verwendenUmwandlung von %qT in Referenz auf gleichen Typ wird nie einen Typumwandlungsoperator verwendenUmwandlung von %qT in gleichen Typ wird nie einen Typumwandlungsoperator verwendenUmwandlung von NULL in Nicht-Zeiger-TypUmwandlung eines zusammengesetzten Arrayliterals in einen Zeiger fÃ¼hrt in C++ zu einem baumelnden Zeigerfar-Zeiger wird in near-Zeiger umgewandeltUmwandlung von %qH nach %qILambda, das %<...%> verwendendet, wird in Funktionszeiger umgewandeltUmwandung der Ã¼berladenen Funktion %qD in den Typ %q#T ist mehrdeutigUmwandlung von %qH nach %qI erfordert direkte InitialisierungUmwandlung in %qT von Initialisierungsliste wÃ¼rde expliziten Konstruktor %qD verwendenKonvertierung in Nicht-Zeiger-Typ %qT von NULLKoprozessornummer muss eine direkt angegebene Konstante im Bereich 0 bis %d sein, die mit %<+cdecp<N>%> aktiviert wurdeKoprozessor %d ist nicht aktiviert mit +cdecp%dKopieren von nicht-statischem Datenelement %q#D von rvalue-ReferenztypÂ»copyprivateÂ«-Variable %qE ist im Ã¤uÃŸeren Kontext weder Â»threadprivateÂ« noch Â»privateÂ«Koroutinen erfordern eine Handle-Klassenvorlage; %<%E::%E%> wurde nicht gefundenKoroutinen erfordern ein Traits-Template; %<%E::%E%> wurde nicht gefundenInterner Fehler: corrupt loop tree rootInterner Fehler: corrupted exits list of loop %dInterner Fehler: corrupted head of the exits list of loop %dBeschÃ¤digte ltrans-Ausgabedatei %sbeschÃ¤digte Profilinformationen: ungÃ¼ltiges ZeitprofilInfo zum beschÃ¤digten Profil: Anzahl der AusfÃ¼hrungen der Kante Â»%d-%dÂ« sollte %i seinInfo zum beschÃ¤digten Profil: Anzahl der DurchlÃ¤ufe des Basisblocks %d sollte %i seinInfo zum beschÃ¤digten Profil: Profildaten sind nicht Fluss-konsistentkaputtes Werteprofil: %s-ProfilzÃ¤hler (%d von %d) ist inkonsistent zu Basisblock-ZÃ¤hler (%d)Go-Abzugsdatei konnte nicht geschlossen werden: %mendgÃ¼ltige Abzugsdatei %qs der Befehle konnte nicht geschlossen werden: %mAntwortdatei %s konnte nicht geschlossen werdentemporÃ¤re Antwortdatei %s konnte nicht geschlossen werdenAbzugsdatei %qs genullter Befehle konnte nicht geschlossen werden: %m%qE konnte nicht von %<void%> nach %<bool%> umgewandelt werden%qE konnte nicht von %qH nach %qI umgewandelt werdenTemplateargument %qE konnte nicht von %qT in %qT umgewandelt werdenPrÃ¤prozessor Â»%sÂ« konnte nicht ausgefÃ¼hrt werden%s konnte nicht in %s gefunden werden (mÃ¶glicherweise hilft %<-B%>)es konnte kein Ãœberlaufregister gefunden werdenkein ganzzahliger Typ mit derselben GrÃ¶ÃŸe wie %qT gefundenKlasse %qE kann nicht gefunden werdenSchnittstelle fÃ¼r Klasse %qE kann nicht gefunden werdenSetter/Getter fÃ¼r %qE in Klasse %qE kann nicht gefunden werdenSpezifikationsdatei %s konnte nicht gefunden werden
! Variantendeklaration nicht gefundenÂ»%sÂ« konnte nicht eingebunden werdenAufruf von %<__builtin_%s%> ist nicht per inline mÃ¶glich: Die GrÃ¶ÃŸe muss eine Konstante seinAufruf von %<__builtin_%s%> ist nicht per inline mÃ¶glich: zu viele Bytes, verwenden Sie %<-minline-memops-threshold%>Aufruf von %<__builtin_memset%> ist nicht per inline mÃ¶glich: GÃ¶ÃŸe muss konstant seinAufruf von %<__builtin_memset%> ist nicht per inline mÃ¶glich: zu viele Bytes, verwenden Sie %<-minline-memops-threshold%>MCU-Datendatei %<devices.csv%> konnte nicht gefunden werdenÂ»%sÂ« kann nicht zum Lesen geÃ¶ffnet werdenGo-Abzugsdatei %qs konnte nicht geÃ¶ffnet werden: %mAbzugsdatei %qs konnte nicht geÃ¶ffnet werden: %mendgÃ¼ltige Abzugsdatei %qs der Befehle konnte nicht geÃ¶ffnet werden: %mAntwortdatei %s konnte nicht geÃ¶ffnet werdenDatei zur SymbolauflÃ¶sung konnte nicht geÃ¶ffnet werden: %mtemporÃ¤re Antwortdatei %s konnte nicht geÃ¶ffnet werdenDatei-Offset konnte nicht eingelesen werdenHex-Zahl konnte nicht eingelesen werdenTypnamen-Typ kann nicht aufgelÃ¶st werdenBefehl kann nicht aufgeteilt werdenunverstÃ¤ndlicher Wert %q.*s von %<kern.osversion%>unverstÃ¤ndliche Version %qsin Antwortdatei %s konnte nicht geschrieben werdenin temporÃ¤re Antwortdatei %s konnte nicht geschrieben werdenInterner Fehler: count of bb %d not initializedZÃ¤hlernameZÃ¤hlerwertCPU %qs ist ein ungÃ¼ltiges Argument fÃ¼r eingebaute Funktion %qsdie CPU %qs basiert nicht auf der Architektur %qs, daher wird die Architektur ignorierteine SWIG-Interface-Datei fÃ¼r das Modul erzeugentopologisch sortierte Liste aller Module erzeugen, die in der Anwendung verwendet werdenerzeugt und mit anderen ABIs verwendeterzeugt und mit anderen Architekturen / ABIs verwendeterzeugt und mit anderer Bytereihenfolge verwendeterzeugt und mit anderen Einstellungen von %<-fpic%> verwendeterzeugt und mit anderen Einstellungen von %<-fpie%> verwendeterzeugt und mit anderen Einstellungen von Â»%sÂ« verwendetArray von %qT wird erzeugtArray von %qT wird erzeugt, was ein abstrakter Klassentyp istFeld von Funktionselementen wird erzeugtArray von Funktionen wird erzeugtFeld von Referenzen wird erzeugtArray des Template-Platzhaltertyps %qT wird erzeugtArray von void wird erzeugtErzeugung eines Zeigers auf Elementfunktion des Nicht-Klassentyps %qTZeiger auf Element des Nicht-Klassentypen %qT wird erzeugtZeiger auf Element mit Typ Â»voidÂ« wird erzeugtZeiger auf Elementreferenztyp %qT wird erzeugtfÃ¼r nicht existierende Methode %qE wird Selektor erzeugtAttribut Â»criticalÂ« wirkt sich nicht auf Interrupt-Funktionen auscv-qualifizierter Typparameterbaumelnder Zeiger %qE auf %qD wird mÃ¶glicherweise verwendetbaumelnder Zeiger %qE auf ein unbenanntes temporÃ¤res Objekt wird mÃ¶glicherweise verwendetbaumelnder Zeiger auf %qD wird mÃ¶glicherweise verwendetbaumelnder Zeiger auf ein unbenanntes temporÃ¤res Objekt wird mÃ¶glicherweise verwendetDatenbereichsattribute kÃ¶nnen nicht fÃ¼r lokale Variablen angegeben werdenDatenbereich von %q+D in Konflikt mit vorheriger DeklarationDaten-DeklarationDatendefinition hat keinen Typ oder SpeicherklasseDatenelement %q+D hat ungÃ¼ltigerweise einen Funktionstypen deklariertDatenelement %q+D hat ungÃ¼ltigerweise einen Methodentyp deklariertDatenelement %qD kann kein Elementtemplate seinDatenelement darf nicht variabel modifizierten Typ %qT habenDatenverschiebung fÃ¼r Komponente %qE ist nicht kompatibel mit Verschiebung von Struktur %qEDatentyp von %q+D ist nicht fÃ¼r Register geeignetdata-implied-do-Objekt bei %L ist weder ein array-element noch eine scalar-structure-component (F2018: R841)Interner Compilerfehler: dead histogramunerreichbare Anweisung in EH-Tabelledie Deallokationsfunktion ist hier deklariertVersuch, bereits freigegebenen Speicher freizugebenSpeicher, der vorher nicht angefordert wurde, wird freigegebenFehlersucheDebugformat %qs steht in Konflikt mit vorheriger AuswahlDebugausgabestufe %qs ist zu groÃŸDebug-Pfadzur Fehlersuche: dezimales Gleitkomma-Argument %u fÃ¼r typgenerische Funktion mit nur binÃ¤ren Argumentendezimales Gleitkomma-Argument %u fÃ¼r typgenerische Funktion mit nur komplexen Argumentendezimale Gleitkommazahlen werden fÃ¼r dieses Ziel nicht unterstÃ¼tztDeklaration %qD widerspricht der eingebauten DeklarationDeklaration %qD deklariert nichtsDeklaration fÃ¼gt VertrÃ¤ge zu %q#D hinzuDeklaration deklariert nichtsDeklaration fÃ¼r nicht vorhandenen Parameter %qDDeklaration hat abweichende Anzahl von VertrÃ¤gen gegenÃ¼ber der vorherigen DeklarationDeklaration in Bedingung kann nur ein einziges Objekt deklarierenDeklaration im steuernden Ausdruck muss einen Initialisierer habenDeklaration der %<constexpr%>-Variable %qD ist keine DefinitionDeklaration der %<extern%>-Variablen %qD in Anfangsdeklaration einer %<for%>-SchleifeDeklaration von %<std::initializer_list%> entspricht nicht %<#include <initializer_list>%>, ist kein TemplateDeklaration von %<~%T%> als Element von %qTDeklaration von %q#D Ã¤ndert die Bedeutung von %qDDeklaration von %q#D steht mit eingebauter Deklaration %q#D in KonfliktDeklaration von %q#D hat %<extern%> und ist initialisiertDeklaration von %q#D hat keine InitialisierungDeklaration von %q#D auÃŸerhalb einer Klasse ist keine DefinitionDeklaration von %q#D Ã¼berdeckt einen ParameterDeklaration von %q#TDeklaration von %q+#D Ã¼berdeckt einen TemplateparameterDeklaration von %q+D Ã¼berdeckt eine eingebaute FunktionDeklaration von %q+D Ã¼berdeckt eine vorhergehende Nicht-VariableDeklaration von %q+D mit Attribut %<noinline%> folgt auf inline-DeklarationDeklaration von %q+D ohne Bindung folgt einer extern-DeklarationDeklaration von %qD macht vorherige Template-Instanziierung fÃ¼r %qD mehrdeutigDeklaration von %qD als %<typedef%>Deklaration von %qD als Feld von FunktionselementenDeklaration von %qD als Array von FunktionenDeklaration von %qD als Array von ReferenzenDeklaration von %qD als Array von voidsDeklaration von %qD als Element %qTDeklaration von %qD als multidimensionales Feld muss fÃ¼r alle Dimensionen auÃŸer der ersten Grenzen habenDeklaration von %qD als Nicht-FunktionDeklaration von %qD als ParameterDeklaration von %qD in %qD, das nicht %qD einschlieÃŸtDeklaration von %qD in Namensraum %qD, der nicht %qD einschlieÃŸtDeklaration von %qD nicht in einem Namensbereich um %qDDeklaration von %qD Ã¼berdeckt eine eingebaute FunktionDeklaration von %qD Ã¼berdeckt eine globale DeklarationDeklaration von %qD Ã¼berdeckt ein Element von %qTDeklaration von %qD Ã¼berdeckt einen ParameterDeklaration von %qD Ã¼berdeckt einen vorhergehenden lokalen BezeichnerDeklaration von %qE als Array von FunktionenDeklaration von %qE als Array von voidsDeklaration von %qE als multidimensionales Array muss fÃ¼r alle Dimensionen auÃŸer der ersten Grenzen habenDeklaration von %qE als Nicht-FunktionDeklaration von %qE als Nicht-ElementDeklaration von %qF hat unterschiedlichen ExceptionspezifiziererDeklaration der eingebauten Funktion %qD ohne Prototyp; erwartet wurde %qTdie Deklaration einer AufzÃ¤hlung mit festem zugrundeliegenden Typ und ohne AufzÃ¤hlungsliste ist nur als eigenstÃ¤ndige Deklaration zulÃ¤ssigDeklaration der Funktion %qD in ungÃ¼ltigem KontextDeklaration von multidimensionalem Array muss fÃ¼r alle Dimensionen auÃŸer der ersten Grenzen habenDeklaration der Nicht-Variablen %qD in Anfangsdeklaration einer %<for%>-SchleifeDeklaration einer partiellen Spezialisierung in einer nicht umklammerten ExportdeklarationDeklaration der Â»staticÂ«-Variablen %qD in Anfangsdeklaration einer %<for%>-SchleifeDeklaration von Templateparameter %q+#D mit unterschiedlichen EinschrÃ¤nkungenDeklaration des Templateparameters %q+D Ã¼berdeckt einen TemplateparameterDeklaration eines Typnamen als Array von FunktionenDeklaration eines Typnamen als Array von voidsDeklarationen in abhÃ¤ngiger Basis %qT wurden bei unqualifizierter Suche nicht gefundendeklarative Varianten von Direktiven werden nicht unterstÃ¼tztdeklarative Direktivenvarianten von %<metadirective%> werden nicht unterstÃ¼tztDeklarator-ID fehlt: reserviertes Wort %qD wird verwendetdeklarieren Sie den expliziten Objektparameter stattdessen als Nicht-const-Referenzhier deklarierthier als Â»privateÂ« deklarierthier als Â»protectedÂ« deklariertdie Deklaration von %qD im Modul %qs widerspricht dem eingebauten im globalen Moduldekomprimierter Strom: %sDekrementieren eines booleschen AusdrucksVerringerung des konstanten Feldes %qDVerringerung von AufzÃ¤hlungswerten (enum) ist in C++ ungÃ¼ltigVerringerung der Funktion %qDVerringerung des Elements %qD in schreibgeschÃ¼tztem ObjektDekrementieren eines Zeigers auf unvollstÃ¤ndigen Typ %qTVerringerung der schreibgeschÃ¼tzten Speicherstelle %qEVerringerung des schreibgeschÃ¼tzten Elementes %qDVerringerung des schreibgeschÃ¼tzten benannten RÃ¼ckgabewertes %qDVerringerung des schreibgeschÃ¼tzten Parameters %qDVerringerung der schreibgeschÃ¼tzten Referenz %qDVerringerung der schreibgeschÃ¼tzten Variable %qDhergeleiteter Klassentyp %qD in RÃ¼ckgabetyp von Funktionhergeleiteter Ausdruckstyp erfÃ¼llt die PlatzhalterbeschrÃ¤nkungen nichthergeleiteter Initialisierer erfÃ¼llt die Platzhalter-BeschrÃ¤nkungen nichthergeleiteter RÃ¼ckgabetyp erfÃ¼llt die Platzhalter-BeschrÃ¤nkungen nichthergeleiteter RÃ¼ckgabetyp nur mit %<-std=c++14%> oder %<-std=gnu++14%> verfÃ¼gbardeduzierter Typ %qT fÃ¼r %qD ist unvollstÃ¤ndigErmittlung aus geschweift geklammerter Initialisierungsliste erfordert %<#include <initializer_list>%>Herleitungshinweis %qD muss im selben GÃ¼ltigkeitsbereich wie %qT deklariert seinHerleitungshinweis %qD muss denselben Zugriff wie %qT habenHerleitungshinweis %qD darf keinen FunktionskÃ¶rper habenHerleitungshinweis fÃ¼r %qT muss angehÃ¤ngten RÃ¼ckgabetyp habenStandard-%<target_clones%>-Attribut wurde nicht gesetztdie Standard-CPU-Architektur %qs unterstÃ¼tzt die ABI %qs nicht, stattdessen wird %<-m%s=%s%> verwendetStandardargument %qE verwendet %qDStandardargument %qE verwendet lokale Variable %qDStandardargument fÃ¼r Template-Parameter fÃ¼r %qD umschlieÃŸende KlasseStandardargument fÃ¼r Parameter %d von %q#D angegebenZuordnungsfehler der Standardargumente in ÃœberladungsauflÃ¶sungStandardargument fehlt fÃ¼r Parameter %P von %q#DStandardargument fÃ¼r Lambda-Parameter angegebenStandardargument in expliziter Spezialisierung angegebenStandardargumente sind nicht in Deklaration der friend-Template-Spezialisierung %qD erlaubtStandardargumente sind nur fÃ¼r Funktionsparameter zugelassenVorgabeinitialisierer fÃ¼r Element %qD erforderlich vor dem Ende der umschlieÃŸenden KlasseDefaultinitialisierer fÃ¼r unbenanntes Bitfeld-ElementDefaultinitialisierer fÃ¼r Bitfeld-Elemente sind erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarStandardtemplateargumente dÃ¼rfen in friend-Redeklaration eines Funktionstemplates nicht verwendet werdenStandardtemplateargumente dÃ¼rfen in Funktionstemplates nur mit %<-std=c++11%> und %<-std=gnu++11%> verwendet werdenStandardtemplateargumente dÃ¼rfen in teilweiser Spezialisierung nicht verwendet werdenStandardtemplateargumente dÃ¼rfen in friend-Deklaration nicht verwendet werdenTemplate-Argument fÃ¼r %qD kann nicht aus Default-Typumwandlung bestimmt werden%qD mit Vorgabewert ist kein Â»friendÂ« von %qTstandardmÃ¤ÃŸiges %qD muss %<const%> sein%qD mit %<default%> muss entweder Parameter vom Typ %<const %T&%> oder %qT haben%qD mit %<default%> muss Parameter vom Typ %<const %T&%> oder %qT haben, nicht beide%qD mit Vorgabewert kann keinen %<&&%>-ref-Qualifizierer haben%qD mit %<default%> muss den RÃ¼ckgabetyp %<bool%> habenstandardmÃ¤ÃŸiges %qD ist erst ab %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarStandard- und gelÃ¶schte Funktionen nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarvorgegebener Konstruktor ruft nicht-%<constexpr%> %qD aufStandardisierter Standardkonstruktor initialisiert %q#D nichtStandardisierter Standardkonstruktor initialisiert kein nicht-statisches DatenelementStandarddestruktor ruft nicht-%<constexpr%> %qD aufvorgegebene Funktion %q+D mit Standardargumentdas Member %qD mit %<default%> muss den Parametertyp %<const %T&%> habenStandard-Kopierzuweisung fÃ¼r %qT ruft nichttrivialen Operator zur Kopierzuweisung fÃ¼r virtuelle Basis %qT aufParameter mit zurÃ¼ckgestelltem Typ bei %Chier definiert%qD wurde hier definiertDefinition eines Typs in einer Umwandlung ist in C++ ungÃ¼ltigDefinition eines Typs in einem zusammengesetzten Literal ist in C++ ungÃ¼ltigDefinition der expliziten Spezialisierung %qD in friend-DeklarationTypdefinition in Ausdruck %qs ist in C++ ungÃ¼ltigDefinition in Block %i herrscht nicht vor in Block %iDefinition in Block %i folgt der VerwendungDefinition von %q#D macht eingebaute Deklaration %q#D mehrdeutigDefinition von %q#D ist als %<dllimport%> markiertDefinition von %q#T in TemplateparameterlisteDefinition von %q#T ist erst nach der schlieÃŸenden Klammer vollendetDefinition von %qD stimmt nicht Ã¼bereinDefinition von %qD entspricht nicht %<#include <initializer_list>%>Deklaration von %qD ist nicht in einem Namensbereich um %qTDefinition des explizit standardisierten %q+DDefinition des implizit deklarierten %qDDefinition des Protokolls %qE nicht gefundenDefinition des statischen Datenelementes %q+D einer Â»dllimportÂ«-ierten KlasseDefinition fÃ¼r explizite Instanziierung angegebenGrad von %<poly_int%> Ã¼berschreitet %<NUM_POLY_INT_COEFFS%>Grad von %<poly_int%> Ã¼berschreitet %<NUM_POLY_INT_COEFFS%> (%d)Delegation ist nur bei nicht-statischen Funktionen mÃ¶glichdelegierende Konstruktoren nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbargelÃ¶schte Definition von %qD ist nicht die erste DeklarationgelÃ¶schte Funktion %q+D Ã¼bersteuert nicht gelÃ¶schte FunktiongelÃ¶scht in Fortran 95LÃ¶schen von %qT ist nicht definiertLTRANS-Datei %s kann nicht gelÃ¶scht werden: %mArray %q#E wird gelÃ¶schtLÃ¶schen der Datei %qs: %mDatei %s kann nicht gelÃ¶scht werden: %mLÃ¶schen des Objekts mit abstraktem Klassentyp %qT mit nicht-virtuellem Destruktor bewirkt undefiniertes VerhaltenLÃ¶schen des Objekts mit polymorphem Klassentyp %qT mit nicht-virtuellem Destruktor bewirkt mÃ¶glicherweise undefiniertes VerhaltenAbhÃ¤ngigenname %qE wird als Nicht-Typ erkannt, aber die Instanziierung liefert einen Typveraltete Konvertierung von Zeichenkettenkonstante in %qTVeraltete Meldung ist keine ZeichenketteDereferenzierung eines Nicht-ZeigersDereferenzierung eines %<void *%>-ZeigersDereferenzierung eines Null-ZeigersDereferenzierung eines Nullzeigers in %qEDereferenzierung eines Type-Pun-Zeigers kÃ¶nnte strict-aliasing-Regeln verletzenDereferenzierung eines Type-Pun-Zeigers verletzt strict-aliasing-RegelnDeklaration eines abgeleiteten Typsabgeleitete Union %qT ist ungÃ¼ltigInitialisierer mit Bestimmung kÃ¶nnen nur mit Aggregat-Typen (Array, struct, union) verwendet werden, nicht mit %qThier wird die Grenze des Arrays variabler LÃ¤nge aus Argument %u festgelegtDesignator-Reihenfolge fÃ¼r Feld %qD passt nicht zur ursprÃ¼nglichen Deklaration in %qTZielobjekt %qE der GrÃ¶ÃŸe %sZielobjekt wird hier alloziertZielobjekt ist wahrscheinlich an Adresse nullZielobjekt der GrÃ¶ÃŸe %s, alloziert durch %qEZielobjekt, auf das durch %<restrict%>-qualifiziertes Argument 1 verwiesen wird, wurde hier deklariertder zerstÃ¶rende %<operator delete%> muss eine Elementfunktion seinder zerstÃ¶rende %<operator delete%> muss eine Ã¼bliche Deallozierungsfunktion seindas ZerstÃ¶ren von %qE auÃŸerhalb der aktuellen Auswertung ist kein konstanter Ausdruck%qE wird auÃŸerhalb seiner Lebensdauer zerstÃ¶rtdas zerstÃ¶rende Delete fÃ¼r %qD kann nicht verwendet werden, um den zugewiesenen Speicher freizugeben, wenn die Initialisierung fehlschlÃ¤gt, weil das Objekt noch nicht konstruiert istDestruktor %qD als Element-Template deklariertDestruktor kann keine statische Elementfunktion seinDestruktor gibt keinen Wert zurÃ¼ck, der getestet werden kÃ¶nnteDestruktor fÃ¼r %qE darf auch nicht abgearbeitet werdenDestruktor fÃ¼r %qT ist mehrdeutigDestruktor fÃ¼r fremde Klasse %qT kann kein Element seinDestruktorprioritÃ¤ten werden nicht unterstÃ¼tztDestruktorprioritÃ¤ten von 0 bis %d sind fÃ¼r die Implementierung vorbehaltenDestruktorprioritÃ¤ten mÃ¼ssen Ganzzahlen von 0 bis einschlieÃŸlich %d seinDestruktoren dÃ¼rfen nicht CV-qualifiziert seinDestruktoren dÃ¼rfen nicht ref-qualifiziert seinDestruktoren dÃ¼rfen keine Parameter habenBasisarchitektur %qs erkannt, aber einige ihrer Merkmale werden nicht erkannt; die erkannte Basisarchitektur kann unzuverlÃ¤ssig sein, nur erkannte Merkmale werden eingeschaltetbei der Bestimmung des Wertes von %qsmeinten Sie %<-%s%>?meinten Sie %<-march=%s%>?meinten Sie %<-mcpu=%s%>?meinten Sie %<using enum %T::%D%>?wollten Sie vielleicht den Zeiger dereferenzieren?beabsichtigten Sie, es nach dem %<)%> nach den Funktionsparametern anzugeben?meinten Sie ein logisches Nicht (%<!%>)?meinten Sie ein logisches Nicht (%<!%>)?Unterschied zwischen %qE und %qD hat keinen Ganzzahltypunterschiedliche Parameteranzahlunterschiedliche Ergebnisanzahlunterschiedliche Parametertypenunterschiedliche EmpfÃ¤ngertypenunterschiedliche Ergebnistypenanderer zugrunde liegender Typ in enum %q#Tunterschiedliche variable Argumentedirekte Basis %qT ist in %qT durch Mehrdeutigkeit unzugÃ¤nglichder direkte Aufruf von %s in der Folge der spekulativen Aufrufe hat kein Spekulationsflagder direkte Aufruf von %s in der Folge der spekulativen Aufrufe hat speculative_id %i auÃŸerhalb des Bereichsdirect-list-initialization von %<auto%> erfordert genau ein ElementDirektiven-Argument %qEDirektiven-Argument im Bereich [%E, %E]Direktive mit nur %<device_type%>- oder %<indirect%>-KlauselnDurchlauf %s fÃ¼r Funktion %s ausschaltenDurchlauf %s fÃ¼r Funktionen im Bereich [%u, %u] ausschaltenalle eingebauten Systemelemente anzeigenZusammenfassung der Anzahl der Ã¼bersetzten Codezeilen und der verwendeten Symbole anzeigenOrt der Modul-Quelldateien anzeigen, wÃ¤hrend sie Ã¼bersetzt werdenAnderer Objective-C-Typ in RÃ¼ckgabeDivision %<sizeof (%T) / sizeof (%T)%> berechnet nicht die Anzahl der FeldelementeDivision durch NullDivision durch Null ist kein konstanter AusdruckÂ»-march=â€¦Â« und Â»-mcpu=â€¦Â« dÃ¼rfen nicht zusammen angegeben werdenInterner Fehler: do_check(): too many argsdo_simplify(): Too many args for intrinsicentspricht nicht der Element-Templatedeklaration hierunterstÃ¼tzt nicht multilibHerrscher Ã¼ber %d sollte %d sein, nicht %dunbekannter Status fÃ¼r Herrscher Ã¼ber %des ist unklar, wie %qs zu lÃ¶schen istErweiterungsbefehle fÃ¼r DSPs nicht unterstÃ¼tzenErweiterungsbefehle fÃ¼r Performance nicht unterstÃ¼tzenErweiterungsbefehle fÃ¼r Performance Version 2 nicht unterstÃ¼tzenErweiterungsbefehle fÃ¼r Zeichenketten nicht unterstÃ¼tzenÂ»::Â« in MODULE PROCEDURE-Anweisung bei %Ldouble-Konstanten werden nicht unterstÃ¼tztInterner Fehler: double linked list of assembler names corruptedInterner Fehler: double linked list of clones corrupteddurch andere AusnahmespezifikationenModula-2-Deklarationen in den angegebenen Dateinamensstamm wegschreibenModula-2-Gimple in den angegebenen Dateinamensstamm wegschreibenInterne ZwischenreprÃ¤sentation fÃ¼r Modula-2 wegschreiben, angegeben durch: all,quad,decl,gimpleModula-2-Quads in den angegebenen Dateinamensstamm wegschreibenDumpdatei: %s
  Interner Fehler: dump flags not handled heredoppeltes %<_Atomic%>doppeltes %<_Thread_local%> oder %<__thread%>doppelter %<asm%>-Operandenname %qsdoppelter %<asm%>-Qualifizierer %qEdoppelter %<asm%>-Qualifizierer %qTdoppeltes %<const%>doppelter %<default%>-Fall in %<_Generic%>doppelter %<prefer_type%>-Modifiziererdoppeltes %<restrict%>doppelter %<target%>-Modifiziererdoppelter %<targetsync%>-Modifiziererdoppeltes %<volatile%>doppeltes %qDdoppelter %qD-Spezifiziererdoppeltes %qEdoppeltes Attribut %qEDoppelter Deklarationsspezifizierer %qEdoppeltes %qsdoppelter %qs-ModifiziererDoppelte (oder sich Ã¼berschneidende) case-Wertedoppelter Basistyp %qT ungÃ¼ltigDoppelter case-Wertdoppelter CV-Qualifiziererdoppelte Deklaration fÃ¼r Protokoll %qEdoppelte Deklaration der Methode %<%c%E%> mit in Konflikt stehenden Typendoppelte Definition von %qsdoppelte Definition von Â»%sÂ«doppelte Definition einer Symbolversiondoppelter direkter Aufruf von %s in der Folge der spekulativen Aufrufe mit speculative_id %idoppelte explizite Instanziierung von %q#Ddoppelte explizite Instanziierung von %q#Tdoppelter Featuremodifizierer %qs mit Wert %qs in Attribut %<target_version%>doppelte Informationen fÃ¼r %qEdoppelte Initialisierung von %qDduplicate insn UID: %idoppelte Instanzvariable %q+Ddoppelte Schnittstellendeklaration fÃ¼r Kategorie %<%E(%E)%>doppelte Schnittstellendeklaration fÃ¼r Klasse %qEdoppelte Marke %qDDoppelte Markendeklaration %qEInterner Fehler: duplicate loop headerdoppeltes Element %q+Ddoppelter Verweis %s in der Folge der spekulativen Aufrufe mit speculative_id %idoppelter typgenerischer Parametertyp fÃ¼r Funktionsargument %u von %<__builtin_tgmath%>doppelter Virt-Spezifiziererdoppelter %<fr%>-PrÃ¤ferenzselektordoppelte %<if%>-Bedingungdoppelt angegebener Parameter %qs in Attribut %<amdgpu_hsa_kernel%>wÃ¤hrend NeuÃ¼bersetzung mit %<-fcompare-debug%>Im Durchlauf %s: %s
! beim Lesen der Bindung %<%E%s%E%>beim Lesen der Bindung %<%E%s%E@%s%>beim Laden der ausstehenden Einheiten fÃ¼r %<%E%s%E%>Dwarf-Version %wu wird nicht unterstÃ¼tztdynamische AbhÃ¤ngigkeit Â»%sÂ« nicht gefundendynamische Ausnahmespezifikationen sind in C++11 veraltetdynamischer Typ %qT seines Operanden hat keine Basisklasse vom Typ %qTder dynamische Typ %qT des Operanden hat keine eindeutige Ã¶ffentliche Basisklasse %qTeBPF-Stapelgrenze Ã¼berschrittenjeder nicht deklarierte Bezeichner wird nur einmal fÃ¼r jede Funktion, in der er vorkommt, gemeldetdas frÃ¼here Argument sollte die Anzahl der Elemente angeben, das spÃ¤tere Argument die GrÃ¶ÃŸe des einzelnen ElementsInterner Fehler: edge %s->%s has no corresponding call_stmtedge count is not compatible with function countInterner Fehler: edge from %d to %d should be marked irreducibleInterner Fehler: edge from %d to %d should not be marked irreducibleKante hat sowohl call_stmt als auch lto_stmt_uid gesetztInterner Fehler: edge not foundInterner Fehler: edge points to wrong declaration:entweder %<-fopenacc%> oder %<-fopenmp%> muss angegeben seinentweder sollten alle Initialisierer-Klauseln benannt sein oder gar keineausfÃ¼hrliche Typ-Spezifikation fÃ¼r einen enum mit GÃ¼ltigkeitsbereich darf nicht das SchlÃ¼sselwort %qD verwendenElementindex %qE ist auÃŸerhalb der Grenzen %<[0 .. %E%>Elementtypen mÃ¼ssen dieselben seinelement_number(): Bad dimension typeElementare BinÃ¤roperationelementare Funktionsargumente bei %C sind nicht konformElementares UnterprogrammElemente des Arrays %q#D haben unvollstÃ¤ndigen TypElemente des Arrays %q#T haben unvollstÃ¤ndigen Typeingebettetes %<\0%> im Formateingebettetes NUL in CFString-LiteralInterner Fehler: emit unrecognizable insndas ABI zum Ãœbergeben von leeren Klassen (%qT) als Parametern hat sich mit %<-fabi-version=12%> (GCC 8) geÃ¤ndertLeere Deklarationleere Deklaration eines %<enum%>-Typen redeklariert das Tag nichtLeere Deklaration mit %<_Alignas%> redeklariert nicht SymbolLeere Deklaration mit Speicherklassenangabe redeklariert nicht SymbolLeere Deklaration mit Typqualifizierer redeklariert nicht SymbolLeeres Enum ist ungÃ¼ltigleere Dateileerer Indexbereich in Initialisierungnicht-leere Initialisierung Â»init-captureÂ« eines Lambdasleere Initialisierung in Â»init-captureÂ« fÃ¼r Lambdaleere linke PrÃ¤zision im Format %sleere Klammern sind mehrdeutig und werden als Funktionsdeklaration angesehenfehlende PrÃ¤zision im Format %sleere Liste von EigenschaftsattributenLeerer Wertebereich angegebenLeere Zeichenkette in Attribut %<target%>leere Struktur hat GrÃ¶ÃŸe 0 in C, aber 1 in C++leere Deklaration fÃ¼r strukturierte Bindungleere Union hat GrÃ¶ÃŸe 0 in C, aber 1 in C++schalten Sie %<-Wtemplate-body%> ein fÃ¼r weitere DetailsDurchlauf %s fÃ¼r Funktion %s einschaltenDurchlauf %s fÃ¼r Funktionen im Bereich [%u, %u] einschaltenEinschalten von %qs befÃ¶rdert %<%s%s%> zu %<%s%s%>Das Einschalten der Ablaufverfolgung ist nur bei der Ãœbersetzung fÃ¼r THUMB sinnvollDas Einschalten der UnterstÃ¼tzung der Aufgerufenen-Zusammenarbeit ist nur bei der Ãœbersetzung fÃ¼r THUMB sinnvollFehler im ELF-Headerumgebendes %<target%>umgebendes %qsumgebendes OpenACC-%qs-Konstrukt undumgebendes OpenACC-%qs-Konstrukt mit %qs-KlauselumschlieÃŸende Klasse der %<constexpr%> nicht-statischen Elementfunktion %q+#D ist kein LiteraltypeinschlieÃŸende Klassentemplates werden nicht explizit spezialisiertumgebendes Eltern-Berechnungs-Konstruktumgebende Regionumgebende Routineumgebende Zielregionumgebende TaskEndausdruck verweist auf Ã¤uÃŸeren Iterator %qDInterner Fehler: end insn %d for block %d not found in the insn streamEnde der Implied-do-Schleife bei %L konnte nicht zu einem konstanten Wert vereinfacht werdenInterner Fehler: entry block count not initializedenum-Konstante hier definiertenum-Konstante in booleschem Zusammenhangenum-Umwandlung von %qT nach %qT in Zuweisung ist in C++ ungÃ¼ltigenum-Umwandlung von %qT nach %qT in Initialisierung ist in C++ ungÃ¼ltigenum-Umwandlung von %qT nach %qT in RÃ¼ckgabe ist in C++ ungÃ¼ltigenum-Umwandlung in Zuweisung ist in C++ ungÃ¼ltigenum-Umwandlung in Initialisierung ist in C++ ungÃ¼ltigEnum-Umwandlung bei Ãœbergabe des Arguments %d von %qE ist in C++ ungÃ¼ltigÂ»enumÂ«-Typ hier definiertInterner Compilerfehler: enum value is not %<CONST_DECL%> or %<INTEGER_CST%>Interner Compilerfehler: enum value name is not %<IDENTIFIER_NODE%>Interner Compilerfehler: enum value type is not %<INTEGER_TYPE%> nor convertible to the enumAufzÃ¤hlungs- und Nicht-AufzÃ¤hlungstyp in bedingtem Ausdruckbedingter Ausdruck enthÃ¤lt unvertrÃ¤gliche AufzÃ¤hlungswerte der Typen %qT und %qTAufzÃ¤hlungsbereich unterscheidet sichAufzÃ¤hlungswert %qE wird nicht von switch behandeltAufzÃ¤hlungswerte Ã¼berschreiten Wertebereich von %qsAufzÃ¤hlungswerte Ã¼berschreiten Wertebereich von INTEGERAufzÃ¤hlungswerte Ã¼berschreiten Wertebereich des grÃ¶ÃŸten Ganzzahltypender AufzÃ¤hlungswert %qD passt nicht zu ...AufzÃ¤hlungswert %qE ist auÃŸerhalb des GÃ¼ltigkeitsbereichs des zugrundeliegenden Typen %qTAufzÃ¤hlungswert fÃ¼r %qD ist keine GanzzahlkonstanteAufzÃ¤hlungswert fÃ¼r %qD muss ganzzahligen oder AufzÃ¤hlungstyp ohne GÃ¼ltigkeitsbereich habenAufzÃ¤hlungswert fÃ¼r %qE ist keine GanzzahlkonstanteAufzÃ¤hlungswert fÃ¼r %qE ist kein GanzzahlkonstantenausdruckAufzÃ¤hlungswert ist auÃŸerhalb des GÃ¼ltigkeitsbereichs von %qsAufzÃ¤hlungswert ist auÃŸerhalb des GÃ¼ltigkeitsbereichs des zugrundeliegenden TypenUmgebungsvariable %<COLLECT_GCC%> muss gesetzt seinUmgebungsvariable %<COLLECT_GCC_OPTIONS%> muss gesetzt seinUmgebungsvariable %<COLLECT_LTO_WRAPPER%> muss gesetzt seinUmgebungsvariable %qs muss ganzzahlig sein und zwischen 0 und %wd liegenUmgebungsvariable %qs nicht definiertUmgebungsvariable COLLECT_GCC_OPTIONS muss gesetzt seinUmgebungsvariable DJGPP nicht definiertUmgebungsvariable DJGPP zeigt auf kaputte Datei %qsUmgebungsvariable DJGPP zeigt auf fehlende Datei %qsFehlerFehler beim SchlieÃŸen von %s: %mFehler beim SchlieÃŸen der Datei fÃ¼r OptimierungsdatensÃ¤tze %qsFehler in Argumenten fÃ¼r Spezifikationsfunktion %qsFehler beim LÃ¶schen von %sFehler beim Schreiben von %qsFehler beim Schreiben der OptimierungsdatensÃ¤tze in %qs: %sFehler beim Schreiben der Datei %s: %mFehler: Fehler: Â»%sÂ« kann nicht zum Schreiben geÃ¶ffnet werden: %s
  Fehler beim EinfÃ¼gen von Ãœbersetzungseinheiteneval_intrinsic(): Bad operatoreval_type_intrinsic0(): op NULLAusnahme Â»%sÂ«ExceptionaufrÃ¤umen fÃ¼r dieses Placement-New wÃ¤hlt delete-Operator fÃ¼r Nicht-PlacementAusnahmebereinigungen lassen den Aufruf von __tsan_func_exit wegAusnahmebehandlung ausgeschaltet, %<-fexceptions%> schaltet sie einAusnahmebehandlung ausgeschaltet; %<-fexceptions%> schaltet sie einFehlzuordnung von PersÃ¶nlichkeiten bei AusnahmebehandlungAusnahme des Typs %<%T%> wird gefangen werdenAusnahme des Typs %qT wird bereits von einem frÃ¼heren Exceptionhandler verarbeitetAusnahmen-Angabe von %qD hÃ¤ngt von sich selbst abException-Angabe von %qD erst am Ende der Klassendefinition verfÃ¼gbarÃ¼berzÃ¤hlige Elemente in %qT-InitialisiererElementÃ¼berschreitung in ArrayinitialisierungElementÃ¼berschreitung in SkalarinitialisierungElementÃ¼berschreitung in struct-InitialisierungElementÃ¼berschreitung in union-InitialisierungElementÃ¼berschreitung in VektorinitialisierungÃ¼berzÃ¤hliger Verwendungs-Operand fÃ¼r AnweisungAusfÃ¼hrungszÃ¤hler als null angenommen
  AusfÃ¼hrungszÃ¤hler geschÃ¤tzt
  bestehende Deklaration %#qDbestehende Deklaration ist hier ohne Tagsbestehende Deklaration ist hier mit Tags %qEder bestehende Vorgabewert ist hier deklariertbestehende Definition %qDInterner Fehler: exit %d->%d not recordedInterner Fehler: exit block count not initializedExpansionsmuster %qE enthÃ¤lt keine ParameterpacksExpansionsmuster %qT enthÃ¤lt keine ParameterpacksExpansionspunkt ist Ort %llu%<"%> erwartet%<#pragma omp scan%> erwartet%<#pragma omp section%> oder %<}%> erwartet%<(%> erwartet%<(%> hinter template-argument-list erwartet%<(%> bei %C erwartet%<(%> oder Zeilenende erwartet%<)%> erwartet%<)%> bei %C erwartet%<)%> oder %<,%> erwartet%<*%> erwartet%<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%> oder Bezeichner erwartet%<,%> erwartet%<,%> oder %<)%> erwartet%<,%> oder %<...%> erwartet%<,%> oder %<;%> erwartet%<,%> oder %<]%> erwartet%<,%> oder %<}%> erwartet%<,%>, %<;%> oder %<}%> erwartet%<.%> erwartet%<...%> erwartet%<:%> erwartet%<:%> bei %C erwartet%<:%> oder %<)%> erwartet%<:%> oder %<...%> erwartet%<:%> oder %<::%> erwartet%<:%>, %<,%>, %<;%>, %<}%> oder %<__attribute__%> erwartet%<::%> erwartet%<;%> erwartet%<;%> hinter Klassendefinition erwartet%<;%> hinter Strukturdefinition erwartet%<;%> hinter Uniondefinition erwartet%<;%> am Ende von Elementdeklaration erwartet%<;%> oder %<{%> erwartet%<;%> or %<{%> nach Definition der Methodenattribute erwartet%<;%>, %<,%> oder %<)%> erwartet%<;%>, Bezeichner oder %<(%> erwartet%<<%> erwartet%<=%> erwartetnach dem Objective-C-Attribut %qE wird ein %<=%> erwartet%<=%> bei %C erwartet%<=%>, %<,%>, %<;%>, %<asm%> oder %<__attribute__%> erwartetin der %<if%>-Bedingung wird ein Vergleich mit %<==%> erwartetin der %<if%>-Bedingung wird ein Vergleich mit %<==%>, %<<%> oder %<>%> erwartet%<>%> erwartet%<@end%> erwartet%<@synchronized%> erwartet%<@throw%> erwartet%<@try%> erwartet%<[%> erwartet%<]%> erwartet%<__label__%> erwartet%<__transaction_atomic%> erwartet%<__transaction_relaxed%> erwartet%<acq_rel%>, %<acquire%>, %<relaxed%>, %<release%> oder %<seq_cst%> erwartet%<alloc%>, %<to%>, %<from%>, %<tofrom%>, %<firstprivate%>, %<none%> oder %<default%> erwartet%<allocator%> oder %<align%> erwartet%<ancestor%> oder %<device_num%> erwartet%<asm%> erwarteteine der Klauseln %<at%>, %<severity%> oder %<message%> erwartet%<auto%> erwartet%<auto%> oder %<decltype(auto)%> nach %qE erwartet%<big-endian%>, %<little-endian%> oder %<default%> nach %<#pragma scalar_storage_order%> erwartetKlauselmodifizierer %<cancel%> %<if%> erwartet%<catch%> erwartet%<class%> erwartet%<class%> oder %<typename%> erwartet%<class%>, %<typename%> oder %<template%> erwartet%<co_yield%> erwartet%<concurrent%> erwartet%<data%> erwartethinter %<#pragma acc %s%> wird %<data%> erwartet%<data%>, %<update%>, %<enter%> oder %<exit%> erwartet%<declare target%> oder %<assumes%> erwartet%<declare%> oder %<assumes%> erwartet%<decltype%> erwartet%<delete%> erwarteteine der Klauseln %<depend%>, %<destroy%> oder %<update%> erwartet%<directive%> oder %<sequence%> erwartet%<else%> erwartet%<error%>, %<warning%>, %<ignored%>, %<push%>, %<pop%>, %<ignored_attributes%> nach %<#pragma GCC diagnostic%> erwartet%<extern%> erwartet%<finally%> oder %<catch%> erwartet%<for%> hinter %qs erwartet%<for%>-Schleife oder OpenMP-Schleifenumwandlungskonstrukt erwartetPrÃ¤ferenzselektor %<fr%> oder %<attr%> erwartet%<host%>, %<nohost%> oder %<any%> erwartet%<in%>, %<out%>, %<inout%>, %<mutexinoutset%> oder %<inoutset%> erwartet%<inclusive%>- oder %<exclusive%>-Klausel erwartet%<interop%> erwartet%<interop%> bei %C erwartet%<match%>, %<adjust_args%> oder %<append_args%> bei %C erwarteteine der Klauseln %<match%>, %<adjust_args%> oder %<append_args%> erwartet%<namespace%> erwartet%<new%> erwartet%<none%> oder %<present%> erwartet%<none%>, %<shared%>, %<private%> oder %<firstprivate%> erwartet%<nothing%> oder %<need_device_ptr%> erwartet%<nothing%> oder %<need_device_ptr%> erwartet, gefolgt von %<:%>%<nothing%>, %<need_device_ptr%> oder %<need_device_addr%> bei %C erwartet%<omp_priv%> oder Funktionsname erwartet%<operator%> erwartet%<point%> erwartet%<prefer_type%>, %<target%> oder %<targetsync%> erwarteteine der Klauseln %<read%>, %<write%>, %<update%>, %<capture%>, %<compare%>, %<weak%>, %<fail%>, %<seq_cst%>, %<acq_rel%>, %<release%>, %<relaxed%> oder %<hint%> erwarteteine der Klauseln %<read%>, %<write%>, %<update%> oder %<capture%> erwartet%<reproducible%> oder %<unconstrained%> erwartet%<return%> erwartet%<scalar%>, %<aggregate%> oder %<all%> erwartet%<scalar%>, %<aggregate%>, %<pointer%> oder %<all%> erwartet%<seq_cst%>, %<acq_rel%>, %<release%> oder %<acquire%> erwartet%<seq_cst%>, %<acquire%> oder %<relaxed%> erwartet%<simd%>, %<reduction%>, %<target%> oder %<variant%> erwartet%<sizes%> erwartet%<static_assert%> erwartet%<target%> erwartet%<teams%>, %<parallel%> oder %<thread%> erwartet%<template%> erwartet%<throw%> erwartet%<try%> erwarteteine der Klauseln %<unified_address%>, %<unified_shared_memory%>, %<self_maps%>, %<dynamic_allocators%>, %<reverse_offload%> oder %<atomic_default_mem_order%> erwartet%<using%> erwartet%<when%>, %<otherwise%> oder %<default%> bei %C erwarteteine der Klauseln %<when%>, %<otherwise%> oder %<default%> erwartet%<while%> erwartet%<{%> erwartet%<{%> bei %C erwartet%<{%> oder %<:%> erwartet%<}%> erwartet%<}%> bei %C erwartet%<}%> vor %<else%> erwartet%<~%> erwartet%d Ebenen von Template-Parametern fÃ¼r %q#D erwartet, %d erhalten%e erwartet, aber Argument hat Typ %e%i oder mehr erwartet, %i gefunden%i erwartet, %i gefundenSelektorname fÃ¼r %qE erwartet%qT erwartet, aber Argument hat Typ %qT%qT erwartet, aber Zeiger hat Typ %qT%qs %<if%>-Klausel-Modifizierer anstelle %qs erwartetSchlÃ¼sselwort %qs vor dem Namen des abhÃ¤ngigen Templates erwartet%qs oder %qs erwartet%s oder %s erwartet, aber %s gefunden%s oder %s erwartet, aber Â»%sÂ« gefunden%s erwartet, aber %s gefunden%s erwartet, aber Â»%sÂ« gefunden%<...%> erwartet64-Bit-Adresse erwartet, aber Argument 1 hat %d Bit64-Bit-Adresse erwartet, aber Argument 2 hat %d BitÂ»:Â« bei %C erwartetName einer OpenMP-Direktive erwartetein JSON-Wert wurde erwartet, aber ein %s gefundenein Funktionsname erwartethinter %<#pragma message%> wird eine Zeichenkette erwartetOpenACC-Klausel erwartetOpenMP-Klausel erwartetexpected an SSA_NAME objectArgument zu %<msp430_select_cpu%> erwartetBezeichner fÃ¼r den Attributnamen erwartetAnnahme-Klausel erwartetmindestens eine Annahme-Klausel erwartetAttribut-Argument als ausbalancierte Tokenfolge erwartetAttribut vor %<...%> erwartetzwischen %i und %i erwartet, %i gefundenbinÃ¤rer Operator erwartetInterner Fehler: expected block indexInterner Fehler: expected block specifierboolescher Ausdruck erwartetboolescher Typ erwartetAufrufausdruck erwartetInterner Fehler: expected case labelKanal erwartetKlassenname erwartetKlassenschlÃ¼ssel erwartetKlassenname erwartetkonstanter Ganzzahlausdruck bei %C erwartetkonstanter Ganzzahlausdruck mit gÃ¼ltigem sync-hint-Wert erwartetInterner Fehler: expected constant logical expressionkonstanter Offset erwartetInterner Fehler: expected constant offset for %<__MEM%> operandkonstante GrÃ¶ÃŸe erwartetInterner Fehler: expected constant step for %<__MEM%> operandKonstruktor, Destruktor oder Typumwandlung erwartetName der Kontextselektormenge erwartetName der Kontextselektormenge bei %C erwartetVertragsstufe erwartet: %<default%>, %<audit%> oder %<axiom%>Vertragssemantik oder -stufe erwartetVertragsrolle erwartetWert fÃ¼r die Anzahl erwartetDeklaration erwartetDeklaration oder Anweisung erwartetDeklarationsspezifizierer erwartetDeklarationsspezifizierer oder %<...%> erwartetDeklarator erwartetName einer Direktive erwartetDummy-Parametername, %<omp_num_args%> oder konstante positive Ganzzahl bei %C erwartetInterner Fehler: expected else statementhinter SchlÃ¼sselwort %<operator%> wird leere Zeichenkette erwartetunerwartetes Ende der AuffanglisteZeilenende erwartetAusdruck erwartetAusdruck bei %C erwartetÂ»expression-listÂ« oder Â»type-idÂ« erwartetHÃ¤ufigkeit erwartetHÃ¤ufigkeitswert erwartetFunktion erwartetFunktionsname erwartetFunktionsname und %<(%> erwartetInterner Fehler: expected goto expressionID-Ausdruck erwartetÂ»id-expression (arguments)Â« erwartetBezeichner erwartetBezeichner bei %C erwartetBezeichner oder %<(%> erwartetBezeichner oder %<)%> erwartetBezeichner oder %<*%> erwartetBezeichner oder Zeichenkettenliteral erwartetBezeichner oder Zeichenkettenliteral bei %C erwartetInitialisierung erwartetGanzzahl erwartetGanzzahlausdruck erwartetListe von GanzzahlausdrÃ¼cken erwartetSchnittstelle oder Zeiger auf Schnittstelle erwartetSchleifendeklaration oder Initialisierung erwartetIterationsanweisung erwartetSprunganweisung erwartetSprungmarke erwartetbenannte Anweisung erwartetInterner Fehler: expected loop numberAbbildungsindex auf rechter Seite erwartetInterner Fehler: expected mode %s for operand %d of insn %s but got mode %s.
! Modulname erwartetmodule-partition erwartetName bei %C erwartetNamensraumname erwartetSpezifikation mit geschachteltem Namen erwartetnumerischer Typ erwartetOperator erwartetParameterbÃ¼ndel vor %<...%> erwartetInterner Fehler: expected pass nameZeiger erwartetInterner Fehler: expected pointer as argument of unary %<*%>Zeiger in %qs-Klausel erwartetÃ¼bergeordneter Ausdruck erwartetPtr-Operator erwartetQualifizierten Namen in Friend-Deklaration fÃ¼r Konstruktor %qD erwartetQualifizierten Namen in Friend-Deklaration fÃ¼r Destruktor %qD erwartetAuswahl-Anweisung erwarteterwartete Signatur: %qDSIMD-Klausel bei %C erwarteteinelnen Zeiger in %qs-Klausel erwartetSpezifizierer-Qualifizierer-Liste erwartetAnweisung erwartetnach Â»,Â« muss ein String fÃ¼r den ObjektschlÃ¼ssel folgen; stattdessen ein %s gefundennach Â»{Â« muss ein String fÃ¼r den ObjektschlÃ¼ssel folgen; stattdessen ein %s gefundenZeichenkettenliteral erwartetStringliteral oder Ganzzahlkonstante erwartetString-Literal oder konstanter ganzzahliger Ausdruck anstelle von %qE erwartetZeichenkettenliteral erwartetStringliteral oder konstanter Ausdruck in Klammern erwartetzusammengesetztes Literal kann nur Struct, Slice, Array oder Map seinSuffixbezeichner erwartetZielfunktionsaufruf erwartetTemplateargument erwartetTemplate-ID erwartetTemplate-ID fÃ¼r Typ erwartetTemplatename erwartetName des Merkmalsselektors erwartetName des Merkmalsselektors bei %C erwartetTypspezifizierer erwartetTyp-Name erwartetTypspezifikation erwartetunqualifizierte ID erwartetVariantenname bei %C erwartetCode erwartet %E Byte in einer Region der GrÃ¶ÃŸe %ECode erwartet %E Bytes in einer Region der GrÃ¶ÃŸe %ECode erwartet %E oder mehr Bytes in einer Region der GrÃ¶ÃŸe %Eals Argument 1 wurde entweder ein Zeigertyp oder ein Ganzzahltyp erwartetCode erwartet zwischen %E und %E Bytes in einer Region der GrÃ¶ÃŸe %EInterner Fehler: expecting internal function namees sollte genau 1 Sprungmarke deklariert seinexperimentelle Option, um die neue strenge TypprÃ¼fung zu verwendenexplizites by-copy-Einfangen von %<this%> mit by-copy-Einfangvorgabe ist erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarExplizite Erfassung (als Kopie) von %qD ist mit Standarderfassung (als Kopie) gedoppeltExplizite Erfassung (als Referenz) von %qD ist mit Standarderfassung (als Referenz) gedoppeltexplizite Umwandlungsfunktion wurde nicht berÃ¼cksichtigtexplizite Umwandlungsoperatoren nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarder explizite Herleitungshinweis ist hier deklariertExplizite Herleitungshinweise werden nicht fÃ¼r Â»copy-initializationÂ« berÃ¼cksichtigtInterner Fehler: explicit goto at end of bb %dexplizite Instanziierung von %q#Dexplizite Instanziierung von %q#T vor Definition des Templatesexplizite Instanziierung von %qD, aber keine Definition verfÃ¼gbarexplizite Instanziierung von %qD in Namensbereich %qD (das nicht Namensbereich %qD einschlieÃŸt)explizite Instanziierung von %qD auÃŸerhalb seines Namensraums muss einen nested-name-specifier verwendenexplizite Instanziierung des Nicht-Klassen-Templates %qDexplizite Instanziierung des Nicht-Templates %q#Dexplizite Instanziierung des Nicht-Templatetyps %qTexplizite Instanziierung darf kein %<consteval%> verwendenexplizite Instanziierung darf kein %<constexpr%> verwendenexplizite Instanziierung darf kein %<inline%> verwendenexplizite Instanziierungen sind hier nicht erlaubtexplizite Objekt-Member-Funktion %qD kann keine CV-Qualifizierer habenexplizite Objekt-Member-Funktion %qD kann keinen ref-qualifier habenexplizite Objekt-Member-Funktion ist erst ab %<-std=c++23%> oder %<-std=gnu++23%> verfÃ¼gbardie explizite Objektmemberfunktion Ã¼bersteuert die virtuelle Funktionexpliziter Objektparameter wird hier deklariertder explizite Objektparameter ist bereits eine verÃ¤nderbare Referenzexplizite Qualifizierung in Deklaration von %qDexplizite Register-Variable %qs kann nicht in verschachtelter Funktion verwendet werdenexplizite Register-Variable %qs als %<extern%> deklariertexplizite Register-Variable %qs als threadlokal deklariertder expliziten Spezialisierung %q#D fehlen mÃ¶glicherweise Attributeexplizite Spezialisierung als %<concept%> deklariertexplizite Spezialisierung in GÃ¼ltigkeitsbereich des Nicht-Namensbereiches %qDexplizite Spezialisierung von %qD nach erster Verwendungder expliziten Spezialisierung von %D muss %<template <>%> vorausgehenexplizite Spezialisierung von %qD auÃŸerhalb seines Namensraums muss einen nested-name-specifier verwendenexplizite Spezialisierung des Nicht-Templates %qTexplizite Spezialisierungen sind hier nicht erlaubtexplizite Templateargumentliste nicht erlaubtexplizite Template-Spezialisierung kann keine Speicherklasse habenein explizit auf %<default%> gesetzter Kopierzuweisungsoperator wird implizit gelÃ¶scht, weil sein deklarierter Typ nicht mit dem Typ eines impliziten Kopierzuweisungsoperators Ã¼bereinstimmtein explizit auf %<default%> gesetzter Kopierkonstruktor wird implizit gelÃ¶scht, da sein deklarierter Typ nicht mit dem Typ eines impliziten Kopierkonstruktors Ã¼bereinstimmtExplizite Standardfunktion %q+D kann nicht als %qs deklariert werden, da die implizite Deklaration nicht %qs ist:ein explizit auf %<default%> gesetzter Verschiebe-Zuweisungsoperator wird implizit gelÃ¶scht, da sein deklarierter Typ nicht mit dem Typ eines impliziten Verschiebe-Zuweisungsoperators Ã¼bereinstimmtein explizit auf %<default%> gesetzter Move-Konstruktor wird implizit gelÃ¶scht, da sein deklarierter Typ nicht mit dem Typ eines impliziten Move-Konstruktors Ã¼bereinstimmtexplizit verwendete Register mÃ¼ssen oben auf dem Stapel gruppiert werdenExponent-Buchstabe %<q%> in real-literal-constant bei %CExport-Deklarationen sind hier nicht erlaubt%q#D wird exportiert, hat jedoch keine externe Bindungdie Deklaration %qD, die in einem unbenannten Namensraum deklariert wurde, wird exportiertdie Deklaration %qD wird mit interner Bindung exportiertNamensraum %qD mit interner VerknÃ¼pfung wird exportiertanonymer Namensraum wird exportiertDer Ausdruck bei %L in der !$OMP-ATOMIC-COMPARE-Zuweisung Â»Variable = AusdruckÂ« muss skalar sein und darf die Variable nicht referenzierenAusdruck in !$OMP ATOMIC WRITE-Zuweisung Â»var = exprÂ« muss skalar sein und kann keine Variable bei %L referenzierenAusdruck in Zuweisung !$OMP ATOMIC Â»var = var op exprÂ« muss skalar sein und kann keine Variable bei %L referenzierenAusdruck %qE bezeichnet keine %<constexpr%>-FunktionAusdruck %qE ist kein KonstantenausdruckAusdruck %qs erfordert %<object.TypeInfo%> und kann nicht mit %<-fno-rtti%> verwendet werdenAusdruck kann nicht als Funktion verwendet werdenAusdruck berechnet nicht die Anzahl der Elemente in diesem Array; der Elementtyp ist %qT, nicht %qTAusdruck in new-Deklarator muss Ganzzahl- oder AufzÃ¤hlungstyp habenAusdruck in statischer Behauptung ist keine GanzzahlAusdruck in statischer Behauptung ist kein konstanter GanzzahlausdruckAusdruck in statischer Behauptung ist nicht konstantAusdrucksliste als zusammengesetzten Ausdruck in funktionaler Umwandlung behandeltAusdrucksliste als zusammengesetzten Ausdruck in Initialisierung behandeltAusdrucksliste als zusammengesetzten Ausdruck in Speicherinitialisierung behandeltAusdruck muss in runden Klammern eingeschlossen seinAusdruck muss ganzzahlig seinAusdruck von abstraktem Klassentyp %qT kann nicht in throw-Ausdruck verwendet werdenAusdrucksanweisung hat unvollstÃ¤ndigen Typext-dce ausgeschaltet: %d BasisblÃ¶cke und %d Register; erhÃ¶hen Sie %<--param max-gcse-memory%> auf mehr als %wuextend_ref(): Bad tailerweiterte Initialisierungslisten nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarerweiterte Register haben keine oberen HÃ¤lftenextern-Deklaration von %q+D folgt Deklaration ohne BindungGlobaler Wert mit externem Modellextern strukturierte Bindung ist nicht namenunabhÃ¤ngigexterne Variable ist nicht namenunabhÃ¤ngigexterne Funktionen zur TLS-Initialisierung werden auf diesem Ziel nicht unterstÃ¼tztexterne Bindungsdefinition von %qD im Header-Modul muss als %<inline%> deklariert seinfÃ¼r Symbol %q+D wird wegen des Attributes %qE externe Bindung benÃ¶tigtInterner Fehler: externally visible inline clonezusÃ¤tzliches %<;%> hinter Funktionsdefinition innerhalb einer KlassezusÃ¤tzliches %<;%> innerhalb einer StrukturzusÃ¤tzliches %<;%> innerhalb einer Struktur ist erst ab C++11 erlaubtzusÃ¤tzliches %<;%> auÃŸerhalb einer FunktionzusÃ¤tzliches %<;%> auÃŸerhalb einer Funktion ist erst ab C++11 erlaubtzusÃ¤tzliche geschweifte Klammern am Ende der InitialisierungzusÃ¤tzliche semantische ÃœberprÃ¼fung zur Compilezeit, fÃ¤ngt Ã¼blicherweise schlechten Programmierstil abzusÃ¤tzliche Elemente in Skalar-InitialisierungInterner Fehler: extra outgoing edge %d->%dzusÃ¤tzliche Qualifizierung %<%T::%> an Element %qszusÃ¤tzliche Qualifizierung nicht erlaubtzusÃ¤tzliches SemikolonzusÃ¤tzliches Semikolon in Methodendefinition angegebenzusÃ¤tzliches Semikolon in Â»structÂ« oder Â»unionÂ« angegebenzusÃ¤tzliche Typqualifizierer in Format-Argument (Argument %d)zusÃ¤tzliche Daten am Ende der DateiPlugin %s kann nicht initialisiert werden%<assume%>-Attribut-Annahme fehlgeschlagenFehler beim Â»%sÂ« des Mappers %qsFehler beim Â»%sÂ« des Mappers %qs in Zeile %uFehler beim Kompilieren von Â»%sÂ«Fehler beim Handshake des Mappers: %sfailed to create map component '%s'failed to create union component '%s'eingebaute Funktion konnte nicht expandiert werdenEnde-Status konnte nicht ermittelt werden: %mVerarbeitungszeiten konnten nicht ermittelt werden: %mPlugin %s kann nicht initialisiert werdenFehler beim Laden der Bindung %<%E%s%E%>Fehler beim Laden der Bindung %<%E%s%E@%s%>Fehler beim Laden der ausstehenden Einheiten fÃ¼r %<%E%s%E%>temporÃ¤re Datei %s konnte nicht fÃ¼r LTO-Ausgaben geÃ¶ffnet werdentemporÃ¤re Datei %s konnte nicht mit LTO-Ausgabe geÃ¶ffnet werdenFehler beim Lesen des kompilierten Modul-Clusters %u: %sFehler beim Lesen des kompilierten Modus: %sZurÃ¼ckfordern der nicht benÃ¶tigten Funktion gescheitertZurÃ¼ckfordern der nicht benÃ¶tigten Funktion in gleicher Comdat-Gruppe gescheitert%qD fÃ¼r %<strub%> konnte nicht aufgeteilt werdenBefehl konnte nicht aufgeteilt werdenLiteral konnte nicht in den Zeichenvorrat %qT der AusfÃ¼hrungsumgebung Ã¼bersetzt werdenFehler beim Schreiben des kompilierten Moduls: %sFehler-Speichermodell %qs kann nicht stÃ¤rker als Erfolgs-Speichermodell %qs fÃ¼r %qD seinFehler-Speichermodell %wi kann nicht stÃ¤rker als Erfolgs-Speichermodell %wi fÃ¼r %qD seinFehler bei Vereinfachung der Teil-Zeichenketten-Referenz in DATA-Anweisung bei %LNeuladen gescheitert:Interner Fehler: fallthru edge after a control statement in bb %dInterner Fehler: fallthru edge after unconditional jump in bb %iInterner Fehler: fallthru edge crosses section boundary in bb %iInterner Fehler: fallthru to exit from bb %din Objective-C 1.0 gibt es keine schnelle AufzÃ¤hlungAttribute fastcall und cdecl sind nicht vertrÃ¤glichAttribute fastcall und regparm sind nicht vertrÃ¤glichAttribute fastcall und stdcall sind nicht vertrÃ¤glichAttribute fastcall und thiscall sind nicht vertrÃ¤glichschwerwiegender Fehler: fclose %s: %mfe_runtime_error string must be null terminatedfe_runtime_error: Wrong number of arguments (%d instead of %d)auf Feld %q#D kann mittels %q#D zugegriffen werdenFeld %q#D mit gleichem Namen wie KlasseFeld %qD hat unvollstÃ¤ndigen Typen %qTFeld %qE als Funktion deklariertFeld %qE hat unvollstÃ¤ndigen TypenFeldname nicht in Datensatz- oder union-InitialisierungFeldnummer Ã¼berschreitet die Definition der MengeFeldnummer auÃŸerhalb des Wertebereiches beim Versuch, auf das Element der Menge zuzugreifenFeldprÃ¤zisionsangabeFeldbreiteFeldbreite im printf-FormatFeldbreite im scanf-FormatFeldbreite im strfmon-FormatFeldbreite im strftime-FormatFeldbreitenangabeFelder kÃ¶nnen nicht vom RVV-Typ %qT seinFelder kÃ¶nnen nicht vom SVE-Typ %qT seinFelder haben unterschiedliches Layout in einer anderen ÃœbersetzungseinheitDatei %qs verlassen, aber nicht betretenDatei endet in Standardargument%<register%> in dateilokalem zusammengesetztem LiteralDeklaration von %qE in Datei-Sichtbarkeitsbereich spezifiziert %<auto%>Deklaration von %qE in Datei-Sichtbarkeitsbereich spezifiziert %<register%>der Dateiname %qs beginnt nicht mit dem Profil-PrÃ¤fix %qsFÃ¼llzeichenFÃ¼llzeichen im strfmon-FormatDie sprachspezifische Ausgabe auf eine kommaseparierte Liste von Prozeduren und Modulen einschrÃ¤nkenfind_array_spec(): unused as(1)find_array_spec(): unused as(2)find_enum(): Enum not foundfini-Funktion im Objekt %s gefundender Operand des ersten %<sizeof%> wurde hier deklarierterstes Argument muss []byte seinerstes Argument von %q+D sollte %<int%> seinerstes Argument von %qD muss ein Zeiger, das zweite eine Ganzzahlkonstante seinErstes Argument fÃ¼r %<__builtin_call_with_static_chain%> muss ein Aufrufausdruck seinerstes Argument fÃ¼r %<__builtin_choose_expr%> ist keine KonstanteErstes Argument fÃ¼r %<va_arg%> nicht vom Typ %<va_list%>erstes Argument fÃ¼r %qD muss ein Zeichenkettenliteral seindas erste Argument %qT eines Zeigers auf einen Member muss ein Klassentyp oder ein Zeiger auf einen Klassentyp seinder erste Fehler trat hier aufder erste Fehler in %qD trat hier aufder erste Ausdruck hat den Typ %qTInterner Compilerfehler: first mismatch is fielderster Offset muss in umgedrehter Richtung der Schleifeniterationen seinerstes Register muss R0 seinerstmals hier gesehenerstmals hier angegebenfeststehendes ebp-Register erfordert %<-maccumulate-outgoing-args%>feststehendes ebp-Register erfordert %<target("accumulate-outgoing-args")%>festes Register %s zur ParameterÃ¼bergabe an Funktion verwendetreparierte BÃ¤ume sind unvertrÃ¤glichFestkommaÃ¼berlauf in Ausdruck %qE des Typs %qT ergibt %qEFestkommaÃ¼berlauf in Ausdruck des Typs %qT ergibt %qEFestkommatypen werden fÃ¼r dieses Ziel nicht unterstÃ¼tztFestkommatypen werden in C++ nicht unterstÃ¼tztflexibles Arrayelement %qD hat keine wohldefinierten Paddingbits fÃ¼r %qsflexibles Arrayelement %qD in ansonsten leerem %q#T ist eine GCC-Erweiterungflexibles Arrayelement %qD in Unionflexibles Arrayelement %qD nicht am Ende von %q#Tflexibles Arrayelement in einer Struktur ohne benannte Elemente ist eine GCC-Erweiterungflexibles Arrayelement in Union ist eine GCC-Erweiterungflexibles Arrayelement nicht am Ende von structGleitkommakonstante Ã¼berschreitet Wertebereich von %qTGleitkommakonstante falsch verwendetGleitkommakonstante auf Null abgeschnittenGleitkommaliteral Ã¼berschreitet Wertebereich des Typs %qTGleitkommaliteral auf Null abgeschnittenGleitkommaÃ¼berlauf in Ausdruck %qE des Typs %qT ergibt %qEGleitkommaÃ¼berlauf in Ausdruck des Typs %qT ergibt %qEGleitkommakonstante ist kein gÃ¼ltiger direkter OperandGleitkomma-Suffix %qs durch Implementierung Ã¼berdecktGleitkommaeinheit %qs weicht von PRID-Voreinstellung %qs abAblaufsteuerungsbefehl innerhalb eines Basis-Blockesfmax-include-depth=<Anzahl> Maximale Tiefe von verschachtelten #include festlegen.Faltungstest: ursprÃ¼nglicher Baum durch Faltung geÃ¤ndertFalten einer leeren Expansion Ã¼ber %Ofold-expressions sind nur mit %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbarfold-mem-offsets: %d BasisblÃ¶cke und %d Kanten/Basisblockfopen %s: %mfÃ¼r %qDum eine funktionsartige Umwandlung zu erreichen, entfernen Sie das redundante %<::%D%>fÃ¼r Funktionsparameter vom Typ Array muss die LÃ¤nge angegeben seinfÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤tum %<std::initializer_list%> herzuleiten, verwenden Sie einen copy-list-initialization (also mit %<=%> vor dem %<{%>)ErhÃ¶hungsausdruck kann die Adresse der Ã¼berladenen Funktion nicht auflÃ¶senErhÃ¶hungsausdruck hat keinen EffektErhÃ¶hungsausdruck ist eine Referenz, kein Aufruf, zur Funktion %qEfÃ¼r Zeigertyp muss der LÃ¤ngenausdruck angegeben werdenfÃ¼r Anweisung erwartetFÃ¼r Template-Deklaration %q+DfÃ¼r die Option %<-mcache-block-size=X%> sind nur die Werte 4, 8, 16, 32, 64, 128, 256 oder 512 gÃ¼ltigfÃ¼r Typ %qTfÃ¼r Arraytyp mit unbekannten Grenzen muss ein LÃ¤ngenausdruck angegeben werdenfor-, while- oder do-Anweisung erwarteterzwingen, dass MOD stets positiv ist und DIV abrundetFormatFormatargument %d nicht verwendet vor verwendetem Argument %d im %<$%>-Stil-FormatFormatargument %d mehr als einmal im %s-Format verwendetFormatargument sollte eine %qs-Referenz seineine Zeichenkette wurde gefunden, aber das Format-Argument sollte eine %qs-Referenz seinFormat ist Â»wide characterÂ«-ZeichenketteFormat ist kein Zeichenkettenliteral, und keine FormatargumenteFormat ist kein Zeichenkettenliteral, Argumenttypen ungeprÃ¼ftFormat ist kein Zeichenkettenliteral, Formatzeichenkette ungeprÃ¼ftFormat der SpaltenÃ¼berschriften in %<devices.csv%> ist falschFormat-Zeichenkettenargument folgt den zu formatierenden ArgumentenFormat-Zeichenkettenargument ist kein ZeichenkettentypFormatzeichenkette ist hier definiertFormatzeichenkette ist kein Array vom Typ %qsZeiger auf qualifizierten Funktionstypen %qT wird geformtZeiger auf Referenztyp %qT wird geformtReferenz auf qualifizierten Funktionstypen %qT wird geformtReferenz auf Referenztyp %qT wird geformtReferenz auf Â»voidÂ« wird gebildetbeim Formen des Typs von %qsVorwÃ¤rtsdeklaration von %q#TVorwÃ¤rtsbezug zum Rahmen von %qs%<%c%s%> gefunden%<-%E%> statt %<+%E%> in Protokoll(en) gefunden%<:%> in Spezifikation mit geschachteltem Namen gefunden, %<::%> erwartetein %qT wurde gefunden, aber das Format-Argument sollte eine Zeichenkette seineine %qs-Referenz wurde gefunden, aber das Format-Argument sollte eine Zeichenkette seinfound a default name with a non-empty defining statementfound a real definition for a non-registerfound a virtual definition for a GIMPLE registerfound an SSA_NAME that had been released into the free poolInterner Fehler: found default case not at the start of case vectorGleitkomma-Software-VervollstÃ¤ndigung benÃ¶tigt %<-mtrap-precision=i%>fr30_print_operand: ungÃ¼ltiger Code %%Ffr30_print_operand: ungÃ¼ltiger Code %%xfr30_print_operand: ungÃ¼ltiger Operand fÃ¼r Code %%Afr30_print_operand: unbehandeltes MEMfr30_print_operand: unbekannter Codefr30_print_operand: nicht erkannter Code %%Bfr30_print_operand: nicht erkannter Code %%bfr30_print_operand: nicht erkannter Code %%pfr30_print_operand_address: unbehandelte AdresseRahmenzeiger benÃ¶tigt, aber reserviertRahmengrÃ¶ÃŸe von %qs ist %wd BytesRahmengrÃ¶ÃŸe der Funktion %qs ist %wd Bytes, das ist grÃ¶ÃŸer als die benutzerdefinierte Stapelgrenze von %d Bytes; eine bedingungslose Falle wird gesetztRahmengrÃ¶ÃŸe der Funktion %qs ist %wd Bytes, das ist mehr als die HÃ¤lfte der StapelgrÃ¶ÃŸe; die dynamische PrÃ¼fung wÃ¤re nicht zuverlÃ¤ssig; fÃ¼r diese Funktion wird keine PrÃ¼fcode generiertRahmengrÃ¶ÃŸe zu groÃŸ fÃ¼r zuverlÃ¤ssige StapelÃ¼berprÃ¼fungfree_expr0(): Bad expr typefree_pi_tree(): Unresolved fixupÂ»friendÂ«-Deklaration %q#D deklariert eine Nicht-Template-FunktionFriend-Deklaration %qD in lokaler Klasse ohne vorherige DeklarationÂ»friendÂ«-Deklaration %qD ist fÃ¼r explizite Spezialisierung nicht sichtbarÂ»friendÂ«-Deklaration %qD darf keine Â»virt-specifierÂ« habenÂ»friendÂ«-Deklaration benennt keine Klasse oder Funktion%<friend%>-Deklaration hierfriend-Deklaration nicht in KlassendefinitionÂ»friendÂ«-Deklaration %q#D gibt Defaultargumente an und ist nicht die einzige DeklarationÂ»friendÂ«-Deklaration von %qD gibt Defaultargumente an und ist keine Definitionfriend-Deklaration erfordert KlassenschlÃ¼ssel, d.h. %<friend %#T%>friend-Deklaration erfordert KlassenschlÃ¼ssel, d.h. %<friend class %T::%D%>Definition der Freundfunktion %qs kann keinen Namen haben, der mit %<%D::%> qualifiziert istDefinition der Freundfunktion %qs kann keinen Namen haben, der mit %<::%> qualifiziert istfriend-Funktionstemplate mit EinschrÃ¤nkungen, die von Ã¤uÃŸeren Templateparametern abhÃ¤ngen, muss eine Definition seinaus der Definition von %q#Dvon vorheriger Deklaration %qFdas Frontend unterstÃ¼tzt keine Geschwisteraufrufefrv_print_operand: unbekannter CodeFunktion kann nur mit nil verglichen werdendie Funktion %<main%> darf keine Parameter haben, wenn die Option %<-minrt%> verwendet wirddie Funktion %<main%> darf bei Verwendung der Option %<-minrt%> niemals zurÃ¼ckkehrenFunktion %q#D ist wie eine Variable initialisiertFunktionsdefinition von %q+D ist als Â»dllimportÂ« markiertFunktion %q+D Teil des Alias-ZyklusFunktion %q+F kann nie kopiert werden, da sie das Attribut %<noclone%> hatdie Funktion %q+F kann nie kopiert werden, da sie ein nichtlokales Â»gotoÂ« empfÃ¤ngtdie Funktion %q+F kann nie kopiert werden, da sie die Adresse einer lokalen Marke in statischer Variablen speichertdie Funktion %q+F kann nie Â»inlineÂ« sein, da sie ein berechnetes Â»gotoÂ« enthÃ¤ltdie Funktion %q+F kann nie Â»inlineÂ« sein, da sie ein Argument vom Typ Array variabler LÃ¤nge hatdie Funktion %q+F kann nie inline sein, da dies mit %<-fno-inline%> unterdrÃ¼ckt wirddie Funktion %q+F kann nie Â»inlineÂ« sein, da sie %<__builtin_return%> oder %<__builtin_apply_args%> verwendetdie Funktion %q+F kann nie Â»inlineÂ« sein, da sie alloca verwendet (zum Aufheben: Attribut Â»always_inlineÂ« verwenden)Funktion %q+F kann nie inline sein, da sie mit inline in Konflikt stehende Attribute hatdie Funktion %q+F kann nie Â»inlineÂ« sein, da sie ein nichtlokales Â»gotoÂ« enthÃ¤ltdie Funktion %q+F kann nie Â»inlineÂ« sein, da sie setjmp verwendetdie Funktion %q+F kann nie Â»inlineÂ« sein, da sie Â»setjmp-longjmpÂ«-Ausnahmebehandlung verwendetdie Funktion %q+F kann nie Â»inlineÂ« sein, da sie eine variable Argumentliste verwendetFunktion %qD wurde als %<[[noreturn]]%> deklariert, das weicht von der ersten Deklaration abFunktion %qD wurde innerhalb einer Union als %<virtual%> deklariertFunktion %qD ist wie eine Variable initialisiertFunktion %qD kÃ¶nnte ein Kandidat fÃ¼r Formatattribut %qs seinFunktion %qD als Variable redeklariertFunktion %qD als %<asm%>-Ausgabe verwendetFunktion %qs kann nicht als %<mutable%> deklariert seinFunktion %qs wurde in ausgelagertem Code referenziert, wurde aber nicht markiert, dass sie im ausgelagerten Code enthalten sein dÃ¼rfteDie Funktion %qs, Parameter %u, hat IPA-SRA-Zugriffe, die sich Ã¼berlappenFunktion %qs, Parameter %u, wird verwendet, hat aber keinen bestimmten IPA-SRA-Zugrifffunktionsargumente von %<__builtin_tgmath%> haben alle denselben Typden Funktionsargumenten von %<__builtin_tgmath%> fehlt der typgenerische ParameterFunktionsattribut %qs erfordert die ISA-Erweiterung VFunktionsattribute %qs und %qs schlieÃŸen sich gegenseitig ausFunktionskÃ¶rper kann zum Link-Zeitpunkt Ã¼berschrieben werdenFunktionskÃ¶rper nicht verfÃ¼gbarFunktionsaufruf hat zusammengesetzten WertFunktion Ã¼ber nicht kompatiblen Typen aufgerufenFunktionskonzepte werden nicht mehr unterstÃ¼tztFunktionsdeklaration ist kein Prototypeine mit %<noreturn%> deklarierte Funktion hat eine %<co_return%>-Anweisungals %<noreturn%> deklarierte Funktion hat %<return%>-AnweisungFunktionsdefinition deklarierte %<auto%>Funktionsdefinition deklarierte %<register%>Funktionsdefinition deklarierte %<typedef%>Funktionsdefinition deklarierte %qsFunktionsdefinition deklariert keine ParameterFunktionsdefinition hat qualifizierten void-RÃ¼ckgabetypenFunktion gibt keinen Wert zurÃ¼ck, der getestet werden kÃ¶nnteFunktion gibt keinen Zeichenkettentypen zurÃ¼ckFunktion ist extern gebunden, aufgrund einer Benutzeranforderung werden nur static-Funktionen geinlinet, um Live-Patchen zu ermÃ¶glichenFunktion liefert mÃ¶glicherweise Adresse einer lokalen Variablen zurÃ¼ckFunktion kÃ¶nnte ein Kandidat fÃ¼r Attribut %qs seinFunktion kÃ¶nnte Kandidat fÃ¼r Attribut %qs sein, wenn sie als normal zurÃ¼ckkehrend bekannt istFunktionsname als linker Operand von %<<%> ist in C++20 verboten; klammern Sie den Funktionsnamen mit %<()%> einFunktion kommt nicht fÃ¼r Â»inlineÂ« in BetrachtFunktion nicht Â»inlineÂ« deklariert und CodegrÃ¶ÃŸe wÃ¼rde wachsenFunktion kann nicht Â»inlineÂ« seinFunktion kein Kandidat fÃ¼r Â»inlineÂ«Funktions- oder Arraytyp %qT in %<#pragma omp declare reduction%>Funktions- oder Arraytyp in %<#pragma omp declare reduction%>FunktionsparameterFunktionsparameter %qD darf nicht als Listenelement in einer %<allocate%>-Direktive erscheinenFunktionszeiger werden mit der Option %<-mabi=ti%> nicht unterstÃ¼tztFunktion, die bereits als %<static%> deklariert war, wird als %<extern%> neudeklariertdie Funktion erfordert einen Dual-Kontext, der von GDC noch nicht unterstÃ¼tzt wirdUnpassende Anzahl der RÃ¼ckgabewerteRÃ¼ckgabetyp der Funktion kann keine Funktion seinFunktionsrÃ¼ckgabetypen nicht kompatibel wegen %<volatile%>Funktion gibt eine FunktionFunktion gibt ein Array zurÃ¼ckFunktion liefert Adresse einer Sprungmarke zurÃ¼ckFunktion liefert Adresse einer lokalen Variablen zurÃ¼ckFunktion gibt Aggregat zurÃ¼ckFunktion beginnt in einer hÃ¶heren Zeilennummer als sie endetInterner Fehler: function symbol is not functionFunktions-Template %qD als Klassentemplate redeklariertBezeichner %qD fÃ¼r Funktionstemplate ist geschachteltem Namens-SpezifiziererFunktionstypen nicht wirklich kompatibel in ISO-CFunktionsversionen kÃ¶nnen nicht als %<gnu_inline%> markiert werden, KÃ¶rper mÃ¼ssen generiert werdenFunktion mit VertrÃ¤gen %q+D Ã¼bersteuert Funktion ohne VertrÃ¤geFunktion mit qualifiziertem void-RÃ¼ckgabetypen aufgerufenFunktions-GÃ¼ltigkeitsbereich %qE ist implizit auto, jedoch als %qs deklariertFunktions-GÃ¼ltigkeitsbereich %qs ist implizit auto und deklarierte %<__thread%>Rumpf eines function-try-block in einem %<constexpr%>-Konstruktor ist erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarRumpf eines function-try-block in einer %<constexpr%>-Funktion ist erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarfunktionale Umwandlung in Arraytyp %qTFunktionen mit dem Status %qs erfordern die ISA-Erweiterung %qsFunktionen mit SME-Zustand erfordern die ISA-Erweiterung %qsBandenreduzierung in einer verwaisten SchleifeAusschuss am Ende von %<#pragma nomember_alignment%>gcc-Treiberversion %s %s fÃ¼hrt GCC-Version %s aus
  gcc-Version %s %s
  gcov %s%s
! ein C-Quelltext-GerÃ¼st fÃ¼r das Modul generieren, das gerade Ã¼bersetzt wirdein C++-Quelltext-GerÃ¼st fÃ¼r das Modul generieren, das gerade Ã¼bersetzt wirdeine gemeinsam genutzte Bibliothek aus dem Modul erzeugenFehlermeldungen erzeugen, die SchlÃ¼sselwÃ¶rter in Kleinbuchstaben ausgebenzusÃ¤tzliche NOPs generieren, um das Debuggen zu vereinfachen, dadurch bekommt jedes SchlÃ¼sselwort aus dem Code einen eigenen Befehlstatische GerÃ¼st-Initialisierung und Finalisierung fÃ¼r jedes Modul innerhalb von main generierendie main-Funktion erzeugenInterner Fehler: generate_isocbinding_initializer(): bad iso_c_binding type, expected %<c_ptr%> or %<c_funptr%>die generierte Schleife des %<unroll%>-Konstrukts ohne %<partial%>-Klausel hat keine kanonische Formallgemeiner Thunk-Code fÃ¼r Methode %qD mit %<...%> scheitertget_mpz(): Not an integer constantKern-DateigrÃ¶ÃŸenlimit kann nicht geholt werden: %mgfc_add_interface(): Bad interface typegfc_arith_divide(): Bad basic typegfc_arith_error(): Bad error codegfc_arith_minus(): Bad basic typegfc_arith_plus(): Bad basic typegfc_arith_times(): Bad basic typegfc_arith_uminus(): Bad basic typeInterner Fehler: gfc_array_dimen_size(): Bad EXPR_ARRAY exprInterner Fehler: gfc_array_dimen_size(): Bad dimensiongfc_ascii_statement(): Bad statement codegfc_basic_typename(): Undefined typegfc_caf_attr(): Bad array referencegfc_caf_attr(): Expression isn't a variableInterner Fehler: gfc_check_dependency: expecting an EXPR_VARIABLEgfc_check_digit(): bad radixgfc_code2string(): Bad codegfc_compare_derived_types: invalid derived typegfc_compare_expr(): Bad basic typegfc_copy_expr(): Bad expr nodegfc_expression_rank(): Two array specsInterner Fehler: gfc_find_array_ref(): No ref foundgfc_free_statement(): Bad statementgfc_get_constant_expr(): locus %<where%> cannot be NULLgfc_get_default_type(): Bad symbol %qsgfc_is_constant_expr(): Unknown expression typegfc_match(): Bad match code %cgfc_match_sym_complex_part(): Bad typegfc_op2string(): Bad codegfc_range_check() returned bad valuegfc_range_check(): Bad typeInterner Fehler: gfc_ref_dimen_size(): Bad dimen_typegfc_ref_dimen_size(): Bad dimensiongfc_resolve_blocks(): Bad block typegfc_resolve_code(): Bad statement codegfc_resolve_code(): No expression on DO WHILEgfc_resolve_expr(): Bad expression typegfc_set_default_type(): symbol already has a typegfc_simplify_abs(): Bad typegfc_simplify_dcmplx(): Bad type (x)gfc_simplify_dcmplx(): Bad type (y)gfc_simplify_dim(): Bad typegfc_simplify_floor(): Bad kindgfc_simplify_log: bad typegfc_simplify_mod(): Bad argumentsgfc_simplify_modulo(): Bad argumentsgfc_trans_code(): Bad statement codegfc_trans_omp_workshare(): Bad statement codegfc_trans_select(): Bad type for case expr.gfc_typename(): Undefined typegfc_validate_kind(): Got bad kindgfc_validate_kind(): Got bad typegfc_variable_attr(): Expression isn't a variablegfortran unterstÃ¼tzt nicht -E ohne -cppgfortran: Nur eine Option %<-J%> erlaubtGimple-Aufruf hat kein ZielGimple-Aufruf hat zwei Zielegimple check: expected %s(%s), have %s(%s) in %s, at %s:%dgimple_bb (phi) is set to a wrong basic blockgimple_bb (stmt) is set to a wrong basic blockGimplifikation gescheitertglobale Konstruktoren werden fÃ¼r dieses Ziel nicht unterstÃ¼tztglobale Destruktoren werden fÃ¼r dieses Ziel nicht unterstÃ¼tztder Inhalt des %<global-module-fragment%> muss aus einer PrÃ¤prozessor-Einbindung stammenglobale Qualifizierung von Klassenname ist ungÃ¼ltigglobale Register-Variable %qD in verschachtelter Funktion verwendetglobale Registervariable folgt einer Funktionsdefinitionglobale Registervariable hat AnfangswertGlobale/statische Variablenzuweisung wurde abgefangen%d Template-Parameter fÃ¼r %q#D erhalten%d Template-Parameter fÃ¼r %q#T erhaltenGoto-Ziel ist weder eine Marke noch ein ZeigerGlobaler Zeiger ist konstant (trotzdem bei indirekten Aufrufen sichern/wiederherstellen).Gravis-Akzent %<`%> auÃŸerhalb von AnfÃ¼hrungszeichen im Formatgsplit-dwarf wird auf dieser Plattform nicht unterstÃ¼tzthatte semantische Fehler beim KompilierenDezimale Hardware-Gleitkommabefehle sind im ESA/390-Modus nicht verfÃ¼gbarDezimale Hardware-Gleitkommabefehle sind auf %s nicht verfÃ¼gbarHardware-VektorunterstÃ¼tzung ist auf %s nicht verfÃ¼gbarHardware-VektorunterstÃ¼tzung ist mit %<-msoft-float%> nicht verfÃ¼gbarhat unterschiedliche Parameter in einer anderen Ãœbersetzungseinheithat unterschiedlichen RÃ¼ckgabetyp in einer anderen ÃœbersetzungseinheitInterner Fehler: head insn %d for block %d not found in the insn streamHeadermodul erwartet, Modul %qs gefundenhierverstecktes StringlÃ¤ngenargument auf dem Stack Ã¼bergebenobere Grenze %qE geht Ã¼ber AbschnittsgrÃ¶ÃŸe in %qs-Klausel hinausobere Grenze des Arrays liegt auÃŸerhalb der Grenzen von ztypearithmetischer Ãœberlauf in oberer Grenze des TeilbereichsInterner Compilerfehler: histogram value statement does not correspond to the statement it is associated withiWMMXt und NEON sind unvertrÃ¤glichiWMMXt wird im Thumb-Modus nicht unterstÃ¼tztia64_print_operand: unbekannter Codeidentical_array_ref(): inconsistent dimensionsBezeichner %qE steht mit C++-SchlÃ¼sselwort in KonfliktBezeichner %qE wird in C++11 zum SchlÃ¼sselwortBezeichner %qE wird in C++20 zum SchlÃ¼sselwortBezeichner nach %<@protocol%> erwartetidentifier overflow: %dwenn eine der %<if%>-Klauseln einen Modifizierer verwendet, mÃ¼ssen alle %<if%>-Klauseln Modifizierer verwendenwenn das Apostroph sich nicht vermeiden lÃ¤sst, schlieÃŸen Sie es stattdessen in ein Direktivenpaar %qs und %qs einWenn dieser Code erreicht wird, wird das Programm abgebrochenwenn diese Verwendung Teil eines Ã¶ffentlichen ABI ist, Ã¤ndern Sie sie so, dass stattdessen eine konstante Variable verwendet wird, die Sie definierenwenn %qs nicht verwendbar ist, verwenden Sie stattdessen %qswenn Sie LP64E benÃ¶tigen, benachrichtigen Sie bitte das GCC-Projekt Ã¼ber %{PR116152%}%<#pragma %s %s%> wird ignoriert%<#pragma align%> wird fÃ¼r explizit ausgerichtetes %q+D ignoriert%<#pragma omp declare simd%> an Funktion mit %<_Atomic%>-qualifiziertem nicht-%<uniform%>-Argument wird ignoriert%<#pragma omp declare simd%> an Funktion mit %<_Atomic%>-qualifiziertem RÃ¼ckgabetyp wird ignoriert%<-fschedule-insns%> wird wegen Ausnahmebehandlungsfehler ignoriert%<asm%>-Angabe fÃ¼r nicht-statische lokale Variable %q+D wird ignoriert%<sink%>-Klausel wird ignoriert, da der Offset kein Vielfaches der Schrittweite istAttribut %qD an unbenanntem Namensraum wird ignoriertAttribut %qD an nicht-Â»inlineÂ«-Namensraum wird ignoriert%qE-Attribut wird fÃ¼r Templateinstanziierung %qT ignoriert%qE-Attribut wird fÃ¼r Templatespezialisierung %qT ignoriertAttribut %qE wird ignoriert, da es sich nicht auf eine Variable beziehtAttribut %qE wird ignoriert, da es sich auf eine Variable beziehtAttribut %qE wird ignoriert, da es sich auf eine initialisierte Variable beziehtAttribut %qE wird ignoriert, da es sich auf eine uninitialisierte Variable beziehtAttribut %<%E (%u)%> wird ignoriert, da es mit Attribut %<%E (%u)%> in Konflikt stehtAttribut %qE wird nach dem frÃ¼heren %qE ignoriertAttribut %qE steht mit dem Attribut %<either%> in Konflikt; wird ignoriertAttribut %qE steht mit dem Attribut %<lower%> in Konflikt; wird ignoriertAttribut %qE steht mit Attribut %<noinit%> in Konflikt; wird ignoriertAttribut %qE steht mit dem Attribut %<persistent%> in Konflikt; wird ignoriertAttribut %qE steht mit Attribut %<section%> in Konflikt; wird ignoriertAttribut %qE steht mit dem Attribut %<upper%> in Konflikt; wird ignoriertAttribut %qE steht mit Attribut %qs in Konflikt; wird ignoriertAttribut %qE wird wegen Ã¼berzÃ¤hliger Argumente, die mit %qE beginnen, ignoriertAttribut %qE wird in Deklaration der eingebauten Funktion %qD ignoriert, da es mit Attribut %qs in Konflikt stehtAttribut %qs wird ignoriert, da es dem vorherigen %qs widersprichtauf %qT nach einer Definition angewandte Attribute werden ignoriertauf Klassentyp %qT angewandte Attribute auÃŸerhalb einer Definition werden ignoriertauf abhÃ¤ngigen Typ %qT angewandte Attribute ohne zugehÃ¶rige Deklaration werden ignoriertAttribute an Templateargument %qE werden ignoriertAttribute an Templateargument %qT werden ignoriertdoppeltes Verzeichnis Â»%sÂ« wird ignoriert
  groÃŸe lineare Schrittweite wird ignoriertSchleifenannotation wird ignoriertfalsch geformtes %<#pragma longcall%>; wird ignoriertnicht vorhandenes Verzeichnis Â»%sÂ« wird ignoriert
! Â»packedÂ«-Attribut fÃ¼r ungepacktes nicht-POD-Feld %q#D wird ignoriertmÃ¶glicherweise in Konflikt stehende Option %<-fopt-info-%s%> wird ignoriertDer RÃ¼ckgabewert von %qD, der mit dem Attribut %<warn_unused_result%> deklariert wurde, wird ignoriertder RÃ¼ckgabewert von %qD (mit %<nodiscard%>-Attribut deklariert) wird ignoriertder RÃ¼ckgabewert von %qD (mit %<nodiscard%>-Attribut markiert) wird ignoriert%sder RÃ¼ckgabewert von %qD (mit %<nodiscard%>-Attribut deklariert) wird ignoriert: %Eder RÃ¼ckgabewert von %qD (mit %<nodiscard%>-Attribut deklariert) wird ignoriert: %qs%qD hat das Attribut %<warn_unused_result%>, daher sollte der RÃ¼ckgabewert nicht ignoriert werdender RÃ¼ckgabewert von %qD wird ignoriert, muss aber verwendet werdender RÃ¼ckgabewert von %qD wird ignoriert, muss aber verwendet werden: %qsRÃ¼ckgabewert der mit dem Attribut %<warn_unused_result%> definierten Funktion wird ignoriertder RÃ¼ckgabewert vom Typ %qT (mit %<nodiscard%>-Attribut deklariert) wird ignoriertder RÃ¼ckgabewert vom Typ %qT (mit %<nodiscard%>-Attribut deklariert) wird ignoriert: %Eder RÃ¼ckgabewert von Typ %qT (mit %<nodiscard%>-Attribut markiert) wird ignoriert%sder RÃ¼ckgabewert von Typ %qT (mit %<nodiscard%>-Attribut markiert) wird ignoriert: %qsder RÃ¼ckgabewert vom Typ %qT wird ignoriert, muss aber verwendet werdender RÃ¼ckgabewert vom Typ %qT wird ignoriert, muss aber verwendet werden: %qsDeklaration %q#D wird ignoriertunbekannte Option %q.*s wird ignoriertSchrittweite 0 wird ignoriertillegal OP in optimize_comparisonunzulÃ¤ssiger Aggregattyp %qE fÃ¼r Instanzvariable %qs angegebenungÃ¼ltiges Argument 0 fÃ¼r %qsungÃ¼ltiger Operand ungÃ¼ltige Operandenadresse (1)ungÃ¼ltige Operandenadresse (2)ungÃ¼ltige Operandenadresse (3)ungÃ¼ltige Operandenadresse (4)ungÃ¼ltiger Operand wurde gefundenunzulÃ¤ssiger Referenztyp fÃ¼r Instanzvariable %qs angegebenunmittelbare Auswertung liefert die Adresse der unmittelbaren Funktion %qDunvollkommen verschachtelte Schleife bei Verwendung von generierten Schleifenimplizites Einfangen von %qE via %<[=]%> ist in C++20 veraltetimplizite Umwandlung von %qH in %qI zur Anpassung an anderen Operanden des BinÃ¤rausdrucksimplizite Umwandlung von %qH in %qI, um an das Ergebnis im anderen Zweig der Bedingung anzugleichenimplizite Umwandlung von %qH in %qI bei Ãœbergabe von Argument an Funktionimplizite Umwandlung von %qT nach %qTimplizite Umwandlung von %qT in %qT zur Anpassung an anderen Operanden des BinÃ¤rausdrucksimplizite Umwandlung von %qT in %qT um an anderes Ergebnis von Bedingung anzupassenimplizite Umwandlung von %qT in %qT bei Ãœbergabe von Argument an FunktionImplizite Deklaration der Funktion %qEImplizite Deklaration der Funktion %qE; meinten Sie %qs?implizite Dereferenzierung greift nicht auf Objekt des Typs %qT in ErhÃ¶hungsausdruck zuimplizite Dereferenzierung greift nicht auf Objekt des Typs %qT in linkem Operanden des Kommaoperators zuimplizite Dereferenzierung greift nicht auf Objekt des Typs %qT in rechtem Operanden des Kommaoperators zuimplizite Dereferenzierung greift nicht auf Objekt des Typs %qT in zweitem Operanden des bedingten Ausdrucks zuimplizite Dereferenzierung greift nicht auf Objekt des Typs %qT in Anweisung zuimplizite Dereferenzierung greift nicht auf Objekt des Typs %qT in drittem Operanden des bedingten Ausdrucks zuImplizite Zuordnung von Feld %qD mit angenommener GrÃ¶ÃŸeImplizite Templates dÃ¼rfen nicht %<virtual%> seinFehlzuordnung in implizitem this-ZeigerInterner Fehler: implicit_section flag is set but section isn%'timplizit geholte (Â»popÂ«) Register mÃ¼ssen oben auf dem Stapel gruppiert werdenimplizit deklariertes %qD ist veraltetimpliziertes END DOder Import %qs hat eine falsche CRC-PrÃ¼fsummeder hier deklarierte Import wird an das Modul %qs angehÃ¤ngtin globalem Modul deklarierter ImportImport eines benannten Moduls %qs innerhalb eines Sprachverlinkungsblocksein Import, der eine Modulpartition angibt, muss nach einer benannten Moduldeklaration erscheinenImport-Deklaration muss im globalen GÃ¼ltigkeitsbereich seinimport_iso_c_binding_module(): Unable to create symbol for %simportiert beiImporte mÃ¼ssen gebaut werden, bevor sie importiert werden kÃ¶nnenunmÃ¶gliche Bedingung in %<asm%>unmÃ¶gliche Registerbedingung in %<asm%>unmÃ¶gliche Typenbehauptung: Typ implementiert nicht Schnittstellein %<constexpr%>-Ersetzung von %qsin %s, bei %s:%din C++03 muss bei Deklaration eines Â»friendÂ« ein KlassenschlÃ¼ssel verwendet werdenin C++11 und neuer kann ein Defaultkonstruktor explizit seinin C++11 sind Destruktoren standardmÃ¤ÃŸig %<noexcept%>in C++11 ruft dieses %<throw%> %<terminate%> auf, da Destruktoren standardmÃ¤ÃŸig %<noexcept%> sindin C++20 ruft dieser Vergleich die aktuelle Funktion rekursiv mit vertauschten Argumenten aufin C++98 ist %<template%> (zum eindeutig machen) nur innerhalb von Templates erlaubt%q+D kann in C++98 nicht static sein, da es ein Union-Element istin C++98 muss %qD mit Konstruktor initialisiert werden, nicht mit %<{...}%>in einem Aufruf von %qD, die mit Attribut %qs hier deklariert wurdein einem Aufruf von %qT, die mit Attribut %qs deklariert wurdein einem Aufruf der hier deklarierten Allokationsfunktion %qDin einem Aufruf der eingebauten Allokationsfunktion %qDin einem Aufruf der eingebauten Funktion %qDin einem Aufruf der Funktion %qDin einem Aufruf der Funktion %qD, die als %qs deklariert istin einem Aufruf der Funktion %qD, die mit Attribut %qs deklariert wurdein einem Aufruf der nicht-statischen Elementfunktion %qDin einem Aufruf mit Typ %qTin einem Aufruf mit Typ %qT und Attribut %qsin Argument fÃ¼r unÃ¤res !in der Basisklasse von %qTInterner Fehler: in basic block %d:im Aufruf von %qD, hier deklariertin Deklaration %q+Din Definition des Makros %qsbei Substitution des Makros %qsin gfc_simplify_acos(): Bad typein gfc_simplify_acosh(): Bad typein gfc_simplify_asin(): Bad typein gfc_simplify_asinh(): Bad typein gfc_simplify_atan(): Bad typein gfc_simplify_atanh(): Bad typein gfc_simplify_cos(): Bad typein gfc_simplify_exp(): Bad typein gfc_simplify_sin(): Bad typein Initialisierung der Variable %qD fÃ¼r strukturierte Bindungbei Ãœbergabe des Arguments %P von %qDin Anforderungen bei Anforderungen mit in Templateargument fÃ¼r Typ %qTin der Definition von %q#Tin diesem AusdruckInitialisierung innerhalb der Klasse des statischen Datenelements %q#D mit unvollstÃ¤ndigem TypInitialisierung innerhalb der Klasse des statischen Datenelements %q#D mit nicht eingebautem TypZugriff auf nicht zugreifbare Plugin-Datei %s (aus kurzem Plugin-Namen %s erzeugt) nicht mÃ¶glich: %munpassender Akkumulator fÃ¼r %qsbinden Sie %qs ein oder stellen Sie eine Deklaration von %qD bereitbinden Sie %qs ein oder stellen Sie eine Deklaration von %qE bereit%<include %s%> wurde textuell verarbeitet%<include %s%> wurde Ã¼bersetzt zu Â»importÂ«Eingehende Kantenzahl passt nicht zur Anzahl der PHI-Argumenteinkompatible %qs-Klausel bei Anwendung von %qs auf %qD, die bereits mit einer OpenACC-Â»routineÂ«-Direktive gekennzeichnet wurdeInkompatible Adressraumkennzeichen %qs und %qsinkompatible Datenklausel mit Reduktion an %qE; wird zu %<present_or_copy%> befÃ¶rdertunvertrÃ¤glicher Gleitkomma- / Vektorregisteroperand fÃ¼r Â»%%%cÂ«UnvertrÃ¤gliche implizite Deklaration der eingebauten Funktion %qDUnvertrÃ¤gliche implizite Deklaration der Funktion %qDunvertrÃ¤glicher Operand fÃ¼r Â»%%%cÂ«die Optionen %<-mstack-protector-guard=global%> und %<-mstack-protector-guard-offset=%s%> sind unvertrÃ¤glichunvertrÃ¤glicher Registeroperand fÃ¼r Â»%%%cÂ«Inkompatibler Typ fÃ¼r Argument %d von %qEinkompatible Typen fÃ¼r AbbildungsindexInkompatibler Typ fÃ¼r Methode %s%s%sInkompatibler Typ fÃ¼r Methode %s%s%s (%s)inkompatible Typen fÃ¼r EmpfÃ¤ngerinkompatibler Typ in binÃ¤rem Ausdruckinkompatible Typen in %<PHI%>-Argument %uunvertrÃ¤gliche Typen in Zuweisung von %qT an %qTinkompatible Typen in binÃ¤rem Ausdruckinkompatible Typen in Â»sendÂ«unvertrÃ¤gliche Typen bei Zuweisung an Typ %qT von Typ %qTinkompatible Typen bei Initialisierung von Typ %qT mit Typ %qTunvertrÃ¤gliche Typen bei RÃ¼ckgabe von Typ %qT, aber %qT wurde erwartetunvertrÃ¤gliche Vektortypen in bedingtem Ausdruck: %qT, %qT und %qTInterner Fehler: incomplete application of insnunvollstÃ¤ndige Implementierung der Kategorie %qEunvollstÃ¤ndige Implementierung der Klasse %qEunvollstÃ¤ndiger Typ %qT hat kein Element %qDunvollstÃ¤ndiger Typ %qT in geschachtelter Namensangabe verwendetinkonsistentes %<ifunc%>-Attributinkonsistente Attribute fÃ¼r den Zustand %qsinkonsistent wegen %qsunvereinbare Anfang-/Ende-Typen in bereichsbasierter %<for%>-Anweisung: %qT und %qTinkonsistente GroÃŸschreibung im FormatwidersprÃ¼chliche Herleitung fÃ¼r %qT: %qT und dann %qTwidersprÃ¼chliche Herleitung fÃ¼r automatischen RÃ¼ckgabetyp: %qT und dann %qTinkonsistente importierte Makrodefinition %qEwidersprÃ¼chliche Spezifikation von Instanzvariableinkonsistente Anzahl von Argumenten, die vom Stack entfernt wurdeninkonsistente Operandenbedingungen in einem %<asm%>widersprÃ¼chliche Typen %qT und %qT fÃ¼r Lambda-RÃ¼ckgabetypen hergeleitetwidersprÃ¼chliche benutzerdefinierte literale Suffixe %qD und %qD in ZeichenkettenliteralFalscher Vergleichsmodusfalscher Eintrag in %<label_to_block_map%>Falsches Format der Skalierung; 1/1 wird verwendet
  Falscher Befehl:Falsche Anzahl der Argumente fÃ¼r Funktion %qEfalsche Anzahl der Vektor-%qs-Elementefalsche Eigenschaft %qs des %qs-SelektorsFalscher Rundungsoperandincorrect setting of landing pad numberincorrect sharing of tree nodesungÃ¼ltiger Typ der Vektor-%qs-Elementefalscher Typ der Elemente eines Vektorkonstruktorsfalsch geschachtelter OpenACC-SchleifenparallelismusInkrementausdruck verweist auf Schleifenvariable %qDErhÃ¶hung ist weder konstant 1 noch konstant -1 fÃ¼r die %<!=%>-BedingungInkrementieren eines booleschen AusdrucksErhÃ¶hung des konstanten Feldes %qDSchrittweite von AufzÃ¤hlungswerten (enum) ist in C++ ungÃ¼ltigErhÃ¶hung der Funktion %qDErhÃ¶hung des Elements %qD in schreibgeschÃ¼tztem ObjektInkrementieren eines Zeigers auf unvollstÃ¤ndigen Typ %qTErhÃ¶hung der schreibgeschÃ¼tzten Speicherstelle %qEErhÃ¶hung des schreibgeschÃ¼tzten Elementes %qDErhÃ¶hung des schreibgeschÃ¼tzten benannten RÃ¼ckgabewertes %qDErhÃ¶hung des schreibgeschÃ¼tzten Parameters %qDErhÃ¶hung der schreibgeschÃ¼tzten Referenz %qDErhÃ¶hung der schreibgeschÃ¼tzten Variable %qDInkrement oder Dekrement eines nichtnumerischen TypserhÃ¶hter AufzÃ¤hlungswert ist zu groÃŸ fÃ¼r %<long%>erhÃ¶hter AufzÃ¤hlungswert ist zu groÃŸ fÃ¼r %<unsigned long%>Index %E markiert einen Offset grÃ¶ÃŸer als die GrÃ¶ÃŸe von %qTIndex in Dimension %d ist auÃŸerhalb der Grenzen bei %LIndexwert statt Feldname in Union-InitialisierungIndexwert ist auÃŸerhalb der GrenzenInterner Fehler: indirect call count does not match BB countindirekter Aufruf in Funktion, das wird von eBPF nicht unterstÃ¼tztindirekter Aufruf in der Folge der spekulativen Aufrufe hat kein Spekulationsflagindirekte Funktion %q+D kann nicht als %qE deklariert werdenindirekte Funktion %q+D kann nicht als Â»schwachÂ« deklariert werdenIndirekter Funktionsaufruf mit noch unbekanntem Aufruferder indirekte Import %qs ist noch nicht geladenindirekte SprÃ¼nge sind auf dieser Zielmaschine nicht verfÃ¼gbarindirekter Nicht-%<strub%>-Aufruf im %<strub%>-Kontext %qDIndirektion greift nicht auf Objekt unvollstÃ¤ndigen Typs %qT in ErhÃ¶hungsausdruck zuIndirektion greift nicht auf Objekt unvollstÃ¤ndigen Typs %qT in linkem Operanden des Kommaoperators zuIndirektion greift nicht auf Objekt unvollstÃ¤ndigen Typs %qT in rechtem Operanden des Kommaoperators zuIndirektion greift nicht auf Objekt unvollstÃ¤ndigen Typs %qT in zweitem Operanden des bedingten Ausdrucks zuIndirektion greift nicht auf Objekt unvollstÃ¤ndigen Typs %qT in Anweisung zuIndirektion greift nicht auf Objekt unvollstÃ¤ndigen Typs %qT in drittem Operanden des bedingten Ausdrucks zuIndirektion greift nicht auf Objekt des nicht trivial kopierbaren Typs %qT in ErhÃ¶hungsausdruck zuIndirektion greift nicht auf Objekt des nicht trivial kopierbaren Typs %qT im linken Operanden des Kommaoperators zuIndirektion greift nicht auf Objekt des nicht trivial kopierbaren Typs %qT im rechten Operanden des Kommaoperators zuIndirektion greift nicht auf Objekt des nicht trivial kopierbaren Typs %qT im zweiten Operanden des bedingten Ausdrucks zuIndirektion greift nicht auf Objekt des nicht trivial kopierbaren Typs %qT in Anweisung zuIndirektion greift nicht auf Objekt des nicht trivial kopierbaren Typs %qT im dritten Operanden des bedingten Ausdrucks zuerschlossener skalarer Typ %qT muss ein Ganzzahl- oder Gleitkommatyp derselben GrÃ¶ÃŸe wie %qT seinunendliche Rekursion erkanntNutzer informieren, welche Parameter per Referenz Ã¼bergeben werdengeerbter Konstruktor %qD ist nicht %<constexpr%>hier geerbterbende Konstruktoren nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarinit-Funktion im Objekt %s gefundenÂ»init-statement in AuswahlanweisungenÂ« ist nur mit %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbarinit_arglist(): too many argumentsInitialisierung streicht Qualifizierer %qv von Zeiger-ZieltypInitialisierung von anderem Objective-C-TypInitialisierung von Zeiger auf nicht enthaltenen AdressraumLinke-Initialisierung kÃ¶nnte Kandidat fÃ¼r Formatattribut seinInitialisierung erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger %q#vInitialisierung von %e von inkompatiblem Zeigertyp %eInitialisierung von %e von Zeiger auf %qD mit inkompatiblem Typ %eInitialisierung eines %qT aus %qT wandelt einen Zeiger in eine Zahl um, ohne explizite TypkonvertierungInitialisierung von %qT von %qT wandelt eine Zahl in einen Zeiger um, ohne explizite TypkonvertierungInitialisierung von %qT von Zeigertyp %qT mit inkompatibler Speicherreihenfolge fÃ¼r SkalareInitialisierung eines flexiblen Array-ElementsInitialisierung der allgemeinen Blockvariable %qs in DATA-Anweisung bei %CInitialisierung eines flexiblen Array-Elements in geschachteltem KontextInitialisierung des new-Ausdrucks fÃ¼r Typ %<auto%> erfordert genau ein ElementInitialisierung eines nicht-konstanten Referenztyps %q#T von R-Wert des Typs %qTInitialisierung des %<volatile%>-Referenztyps %q#T von R-Wert des Typs %qTInitialisierungen fÃ¼r mehrere Elemente von %qTinitialisiertes Feld Ã¼berschriebeninitialisiertes Feld mit Seiteneffekten Ã¼berschriebendas initialisierte Element %q+D wurde hier deklariertinitialisierte Variable %q+D ist als Â»dllimportÂ« markiertInitialisierungselement ist kein konstanter AusdruckInitialisierungs-Element ist zur Lade-Zeit nicht berechenbarInitialisierungselement ist nicht konstantInitialisierung endet vorzeitigInitialisierungsausdruck verweist auf Iterationsvariable %qDInitialisierung gibt nicht die GrÃ¶ÃŸe von %q+D anInitialisierung gibt nicht die GrÃ¶ÃŸe von %qD anInitialisierung gibt nicht die GrÃ¶ÃŸe von %qT anInitialisierer fÃ¼r %<_BitInt(%d)%>-Wert ist keine GanzzahlkonstanteInitialisierung fÃ¼r %<decltype(auto) %D%> hat Funktionstyp; %<()%> vergessen?Initialisierer fÃ¼r %q#D expandiert zu einer leeren AusdruckslisteInitialisierung fÃ¼r %q#D ist ungÃ¼ltigInitialisierung fÃ¼r %qT muss geklammert seinInitialisierung eines flexiblen Arrayelements %q#DInitialisierung fÃ¼r Gleitkommawert ist keine GleitkommakonstanteInitialisierung fÃ¼r Ganzzahl-/Gleitkommazahlwert ist zu kompliziertInitialisierung in bereichsbasierter %<for%>-SchleifeInitialisierung ungÃ¼ltig fÃ¼r statisches Element mit KonstruktorInitialisierung fÃ¼r Funktion bereitgestelltInitialisierung fÃ¼r Â»friendÂ«-Funktion %qD angegebenInitialisierung fÃ¼r nicht-virtuelle Methode %q+D angegebenInitialisierung fÃ¼r statische Element-Funktion %qD angegebenInitialisierungs-Zeichenkette fÃ¼r %qT ist zu langInitialisierungs-Zeichenkette fÃ¼r Array von %qT ist zu lang (%wu Zeichen passen nicht in %wu verfÃ¼gbare)Initialisierungs-Zeichenkette fÃ¼r Array von %qT ist zu lang fÃ¼r C++ (%wu Zeichen passen nicht in %wu verfÃ¼gbare)Initialisierer-Zeichenkette fÃ¼r Array von %qT schneidet NUL-Terminator ab, aber dem Ziel fehlt das %qs-Attribut (%wu Zeichen passen nicht in %wu verfÃ¼gbare)dadurch, dass %qD mittels %qE initialisiert wird, verlÃ¤ngert sich die Lebenszeit des zugrundeliegenden Arrays nichtdie Initialisierung von %qD erfordert einen Ausdruck fÃ¼r den Memberzugriff als linken Operanden der Zuweisungdas Initialisieren von %qH mit %qI in einem umgewandelten konstanten Ausdruck bindet nicht direktdas Initialisieren einer Basisklasse vom Typ %qT fÃ¼hrt zu ObjektslicingArgument %P von %qD wird initialisierteingegebener Klassenname %qD als Template-Templateargument verwendetInline-Assembler ist kein konstanter Ausdruckinline clone count is not compatibleInterner Fehler: inline clone in same comdat group listInterner Fehler: inline clone is forced to outputInterner Fehler: inline clone with address takeninline-Deklaration von %qD folgt Deklaration mit Attribut %<noinline%>Â»inlineÂ«-Funktion %q+D ist als Â»dllimportÂ« deklariert: Attribut wird ignoriertInline-Funktion %q+D deklariert, aber nirgendwo definiertÂ»inlineÂ«-Funktion %q+D als Â»schwachÂ« deklariertder inline-Funktion %q+D wurde das Attribut %qs gegebender inline-Funktion %qD wurde das Attribut %qs gegebeninline-Funktion %qD verwendet, aber nirgendwo definiertein %<inline%>-Namensraum muss bei der ersten Definition angegeben werdenÂ»inlineÂ«-NamensrÃ¤ume nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarÂ»inlineÂ«-Variablen sind nur mit %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbarInterner Fehler: inlined_to pointer is set but no predecessors foundInterner Fehler: inlined_to pointer is wrongInterner Fehler: inlined_to pointer refers to itselfInterner Fehler: inlined_to pointer set for noninline callersInlining beim Aufruf von %q+F mit %<always_inline%> fehlgeschlagen: %sÂ»inlineÂ« beim Aufruf von %q+F gescheitert: %sinnere Schleife verwendet denselben OpenACC-Parallelismus wie enthaltende Schleifeinnere Schleifen mÃ¼ssen in %<#pragma acc loop%> perfekt geschachtelt seininnere Schleifen mÃ¼ssen in %<#pragma omp tile%> perfekt geschachtelt seininnere Schleifen mÃ¼ssen mit der %<ordered%>-Klausel perfekt geschachtelt seininnere Schleifen mÃ¼ssen mit der %<reduction%>-%<inscan%>-Klausel perfekt verschachtelt seininnere Schleifen mÃ¼ssen mit der %<tile%>-Klausel perfekt geschachtelt seinEingabedatei %qs ist dieselbe wie die AusgabedateiEinschrÃ¤nkung fÃ¼r Eingabeoperanden enthÃ¤lt %qcEingabeoperand auÃŸerhalb einer Funktion ist nicht konstantPlugin aktivieren, das Laufzeitfehler bereits zur Compilezeit erkenntInterner Fehler: insert_bbt(): Duplicate key foundEinschub auÃŸerhalb des gÃ¼ltigen Bereichs in %qsinnerhalb eines anderen AufrufsInterner Fehler: insn %d basic block pointer is %d, should be %dInterner Fehler: insn %d in footer of bb %d has non-NULL basic blockInterner Fehler: insn %d in header of bb %d has non-NULL basic blockInterner Fehler: insn %d is in multiple basic blocks (%d and %d)Interner Fehler: insn %d outside of basic blocks has non-NULL bb fieldBefehlsadressen nicht freigegebenInterner Fehler: insn addresses not set after shorten branchesBefehl enthÃ¤lt eine ungÃ¼ltige Adresse!Befehl erfÃ¼llt nicht seine Bedingungen:Befehl auÃŸerhalb eines Basis-BlockesBefehl mit UID %i nicht gefunden fÃ¼r Operand %i (Â»%sÂ«) von Befehl %iBefehl mit UID %i nicht gefunden fÃ¼r Operand %i von Befehl %iinstalliere: %s%s
  Installationsfehler, %<crtoffloadtable%s.o%> kann nicht gefunden werdenin Klassenmethode wird auf Instanzvariable %qE zugegriffenInstanzvariable %qE ist Â»%sÂ«; dies wird zukÃ¼nftig ein schwerer Fehler seinInstanzvariable %qE ist als Â»%sÂ« deklariertInstanzvariable %qE ist als Â»privateÂ« deklariertInstanzvariable %qs hat unbekannte GrÃ¶ÃŸeInstanzvariable %qs ist als Â»privateÂ« deklariertInstanzvariable %qs verwendet flexibles ArrayelementZuweisung der Instanzvariable wurde abgefangenInstanziierung eines fehlerhaften Templatesdie Instanziierung macht die TU-lokale EntitÃ¤t %qD sichtbarBefehl wird niemals ausgefÃ¼hrtVorausladen von Befehlen ist aktiv im 64-Bit-Modus mit RIP-relativer Adressierung und der Option %<-mprefetchi%>; sonst bleiben sie NOPsBefehlsplanung wird von dieser Zielmaschine nicht unterstÃ¼tztBefehlssatz %qs kann Standard-ABI %qs nicht implementieren, stattdessen wird %qs verwendetunzureichende Informationen fÃ¼r Typbestimmung aus Kontextunzureichende Partitionierung verfÃ¼gbar, um die Elementschleife zu parallelisierenunzureichende Partitionierung verfÃ¼gbar, um Schleife zu parallelisierenunzureichende Partitionierung verfÃ¼gbar, um die Kachelschleife zu parallelisierenGanzzahlige Argumente fÃ¼r SYSTEM_CLOCK bei %L mit Parametern unterschiedlicher ArtGanzzahlkonstante ist zu groÃŸ fÃ¼r %<_BitInt(%d)%>-TypGanzzahlkonstante ist zu groÃŸ fÃ¼r %<unsigned _BitInt(%d)%>-TypGanzzahlkonstante ist zu groÃŸ fÃ¼r %<unsigned long%>-TypGanzzahldivision durch NullGanzzahlliteral Ã¼berschreitet Wertebereich des Typs %qTGanzzahlÃ¼berlauf in ArraygrÃ¶ÃŸeGanzzahlÃ¼berlauf in Ausdruck %qE des Typs %qT ergibt %qEGanzzahlÃ¼berlauf in Ausdruck des Typs %qT ergibt %qEGanzzahl-Suffix %qs durch Implementierung Ã¼berdecktGanzzahlausdruck %qE ist nicht konstantGenauigkeit des ganzzahligen Ergebnistypen passt nicht zur FeldgrÃ¶ÃŸe von %qsdie Schnittstelle %qE hat keine gÃ¼ltige Form einer konstanten ZeichenketteSchnittstellenpartition wird nicht exportiertOffset %wi des zwischenzeitlichen Arrays ist auÃŸerhalb der Arraygrenzen von %qTinternes %<strub%> unterstÃ¼tzt keine erzwungenen Labelsinterner Aufrufinterne Compiler-Debug-Informationen, Liste der Quadrupel wegschreibeninterner Compiler-FehlerInterner Compiler-Fehler. Falsche Adresse:Interner Compiler-Fehler. Falsche Verschiebung:Interner Compiler-Fehler. Unbekannter Modus:interner Compiler-Fehler: Interner Compilerfehler: Fehlerbehandlungsroutinen doppelt betreten.
! internes Konsistenzprobleminterner Fehler: %<cris_side_effect_mode_ok%> mit falschen Operandeninterner Fehler: falsches Register: %dinternal error: not expecting operand1 to be a constant setInterne Prozedur %qs bei %L steht in Konflikt mit DUMMY-Argumentinterne Einheit in WRITEdie Attribute %<interrupt%> und %<naked%> sind nicht kompatibelInterrupthandler kÃ¶nnen keine MIPS16-Funktionen seinInterrupthandler kÃ¶nnen keine Argumente habenInterrupt-Service-Routine darf nur ein Zeiger- und ein optionales Ganzzahl-Argument habenInterrupt-Dienst-Routinen kÃ¶nnen nicht direkt aufgerufen werdenInterrupt-Service-Routine muss den RÃ¼ckgabetyp %<void%> habenin Interrupt-Service-Routinen sollte das zweite Argument vom Typ %qs seinin Interrupt-Service-Routinen sollte das erste Argument ein Zeiger seinInterruptvektor fÃ¼r %qE-Attribut ist nicht %<vector=(sw0|sw1|hw0|hw1|hw2|hw3|hw4|hw5)%>dazwischenliegender Code darf keine OpenMP-Direktiven enthaltenintrinsische Funktion %qE muss direkt aufgerufen werdenintrinsischer Registerindex ist auÃŸerhalb des gÃ¼ltigen Bereichsinnere Variable, die keine Prozedur istungÃ¼ltiger %%-CodeungÃ¼ltiger %%A-OperandungÃ¼ltiger %%A-WertungÃ¼ltiger %%B-OperandungÃ¼ltiger %%C-OperandungÃ¼ltiger %%C-WertungÃ¼ltiger %%D-OperandungÃ¼ltiger %%D-WertungÃ¼ltiger %%E-WertungÃ¼ltiger %%F-WertungÃ¼ltiger Modus %%GungÃ¼ltiger %%G-WertungÃ¼ltiger %%H-WertungÃ¼ltiger %%J-CodeungÃ¼ltiger %%J-WertungÃ¼ltiger %%K-WertungÃ¼ltiger %%L-WertungÃ¼ltiger %%M-WertungÃ¼ltiger %%N-WertungÃ¼ltiger %%O-WertungÃ¼ltiger %%P-OperandungÃ¼ltiger %%P-WertungÃ¼ltiger %%R-WertungÃ¼ltiger %%T-WertungÃ¼ltiger %%U-WertungÃ¼ltiger %%V-WertungÃ¼ltiger %%Y-OperandungÃ¼ltiger %%d-WertungÃ¼ltiger %%e-WertungÃ¼ltiger %%f-OperandungÃ¼ltiger %%f-WertungÃ¼ltiger %%h-WertungÃ¼ltiger %%j-CodeungÃ¼ltiger %%j-WertungÃ¼ltiger %%k-WertungÃ¼ltiger %%m-WertungÃ¼ltiger %%p-WertungÃ¼ltiger %%q-WertungÃ¼ltiger %%r-WertungÃ¼ltiger %%s-OperandungÃ¼ltiger %%s-WertungÃ¼ltiger %%t-WertungÃ¼ltiger %%t/%%b-WertungÃ¼ltiger %%u-WertungÃ¼ltiger %%v-WertungÃ¼ltiger %%x-WertungÃ¼ltiger %%xn-CodeungÃ¼ltiger %%y-Wert, bitte Â»ZÂ«-Bedingung probierenungÃ¼ltiger %%z-WertungÃ¼ltiges %<#pragma %s%>ungÃ¼ltiges %<CASE_CHAIN%>ungÃ¼ltiger %<CPU_TYPE%>-Wert %qs gelesen aus %<devices.csv%> fÃ¼r %qsungÃ¼ltiger %<MPY_TYPE%>-Wert %qs gelesen aus %<devices.csv%> fÃ¼r %qsungÃ¼ltiges %<PHI%>-ArgumentungÃ¼ltiges %<PHI%>-ErgebnisungÃ¼ltiges %<const_cast%> von Typ %qT in Typ %qTungÃ¼ltiges %<const_cast%> eines R-Wertes des Typs %qT in Typ %qTungÃ¼ltiger Basistyp fÃ¼r %<enum%>ungÃ¼ltiges %<static_cast%> von Typ %qT in Typ %qTungÃ¼ltiger Wert fÃ¼r %<sve_width%>: %dungÃ¼ltiger %<task%>-Reduktionsmodifizierer in Konstrukt kombiniert mit %<simd%> oder %<loop%>ungÃ¼ltiger %<task%>-Reduktionsmodifizierer in Konstrukt, das nicht mit %<parallel%>, %<for%> oder %<sections%> kombiniert istungÃ¼ltiger %<task%>-Reduktionsmodifizierer bei Konstrukt auÃŸer %<parallel%>, %qs oder %<sections%>ungÃ¼ltiger %<task%>-Reduktionsmodifizierer bei Konstrukt auÃŸer %<parallel%>, %qs, %<sections%> oder %<scope%>ungÃ¼ltiger Offset-Operator %qsungÃ¼ltiges %qs-GrÃ¶ÃŸenargument beim LadenungÃ¼ltiges Â»asmÂ«: UngÃ¼ltige (Zeiger-)Operanden %qsungÃ¼ltiges 3-Index-Slice eines Objekts, das kein Slice istungÃ¼ltige 3-Index-Scheibe einer ZeichenketteungÃ¼ltiges IACC-ArgumentungÃ¼ltige JSON-SyntaxungÃ¼ltiges JSON-Token: %sungÃ¼ltige LHS in GIMPLE-AufrufUngÃ¼ltiger Objective-C++-SelektornameungÃ¼ltige OpenACC-Klausel im Datei-GÃ¼ltigkeitsbereichungÃ¼ltiger Name einer OpenMP-Direktive im Argument der %qs-Klausel: deklarative, informative und Meta-Direktiven sind nicht erlaubtungÃ¼ltiger nicht-rechteckiger OpenMP-Schleifenschritt; %<(%E - %E) * %E%> ist kein Vielfaches von Schleife %d Schritt %qEungÃ¼ltige rechte Seite fÃ¼r GIMPLE-Speicherung: %qsungÃ¼ltige RVV-VektorgrÃ¶ÃŸe %qd, erwartete GrÃ¶ÃŸe ist %qd basierend auf LMUL des Typs und %qsungÃ¼ltiges UNSPEC als OperandungÃ¼ltiges UNSPEC als Operand: %dInterner Fehler: invalid _LiteralungÃ¼ltiger abstrakter Parametertyp %qTungÃ¼ltiger abstrakter RÃ¼ckgabetyp %qTungÃ¼ltiger abstrakter RÃ¼ckgabetyp fÃ¼r Funktion %q+#DungÃ¼ltiger abstrakter RÃ¼ckgabetyp fÃ¼r Elementfunktion %q+#DungÃ¼ltiger abstrakter Typ %qT fÃ¼r %qEungÃ¼ltiger abstrakter Typ fÃ¼r %q+DungÃ¼ltiger Zugriff auf nicht-statisches Datenelement %qD in virtueller Basis des NULL-ObjektesungÃ¼ltige AdresseungÃ¼ltige Adresse fÃ¼r Ausgabemodifizierer Â»OÂ«ungÃ¼ltige Adresse fÃ¼r Ausgabemodifizierer Â»RÂ«ungÃ¼ltige Adresse fÃ¼r Ausgabemodifizierer Â»SÂ«ungÃ¼ltige Adresse in OperandungÃ¼ltiger AdressierungsmodusungÃ¼ltiger Adressoperand in %qsungÃ¼ltiger AdressierungsmodusungÃ¼ltige Ausrichtung fÃ¼r %<#pragma align%> - ignoriertUngÃ¼ltiger Ausrichtungswert fÃ¼r %<__builtin_arc_aligned%>ungÃ¼ltige Anwendung von %<__alignof%> auf ein BitfeldungÃ¼ltige Anwendung von %<sizeof%> auf ein BitfeldUngÃ¼ltige Anwendung von %<sizeof%> auf einen FunktionstypenungÃ¼ltige Anwendung von %qs auf ElementfunktionUngÃ¼ltige Anwendung von %qs auf einen void-TypenUngÃ¼ltige Anwendung von %qs auf Arraytyp %qT mit unvollstÃ¤ndigem ElementtypUngÃ¼ltige Anwendung von %qs auf unvollstÃ¤ndigen Typen %qTUngÃ¼ltige Architektur fÃ¼r Zielattribut oder -pragma %qsUngÃ¼ltiges Argument %d fÃ¼r eingebaute Funktion %qFungÃ¼ltiges Argument %qs fÃ¼r %<-mharden-sls=%>ungÃ¼ltiges Argument %qs fÃ¼r %qsungÃ¼ltiges Argument %qs fÃ¼r %<-fsearch-include-path%>ungÃ¼ltiges Argument %qs fÃ¼r %qsungÃ¼ltiges Argument Â»%sÂ« fÃ¼r Â»--prime-paths-linesÂ«. GÃ¼ltige Argumente sind: Â»coveredÂ«, Â»uncoveredÂ«, Â»bothÂ«
  ungÃ¼ltiges Argument Â»%sÂ« fÃ¼r Â»--prime-paths-sourceÂ«. GÃ¼ltige Argumente sind: Â»coveredÂ«, Â»uncoveredÂ«, Â»bothÂ«
! ungÃ¼ltiges Argument fÃ¼r %<-mharden-sls=%>ungÃ¼ltiges Argument in Option %qsungÃ¼ltiges Argument fÃ¼r Attribut %qEungÃ¼ltiges Argument fÃ¼r Attribut %qsUngÃ¼ltiges Argument von SQRT bei %LungÃ¼ltiges Argument fÃ¼r %qDungÃ¼ltiges Argument fÃ¼r eingebaute FunktionungÃ¼ltiges Argument fÃ¼r eingebaute Funktion Â»%sÂ«ungÃ¼ltiges Argument fÃ¼r GIMPLE-AufrufungÃ¼ltige ArgumenteungÃ¼ltige Argumente fÃ¼r Option %<-falign-%s%>: %qsungÃ¼ltige Argumente fÃ¼r %<-fpatchable-function-entry%>UngÃ¼ltige ArrayzuweisungInterner Fehler: invalid base %qE for SSA nameungÃ¼ltige Spezifizierung der BasisklasseInterner Fehler: invalid block indexungÃ¼ltiger Zweig zu/von strukturiertem %s-BlockungÃ¼ltige eingebaute Funktion bei der ExpansionungÃ¼ltiger Aufruf einer Nicht-FunktionungÃ¼ltiger Schalter Â»calls_comdat_localÂ«ungÃ¼ltige Â»caseÂ«-Marke in switch-AnweisungungÃ¼ltiger Â»caseÂ«-Bereich in switch-AnweisungungÃ¼ltige Umwandlung von Typ %qT in Typ %qTungÃ¼ltige Typumwandlung eines prvalue-Ausdrucks des Typs %qT in Typ %qTungÃ¼ltige Umwandlung in abstrakte Klasse %qTungÃ¼ltige Umwandlung in Funktionstyp %qTungÃ¼ltige cc-AusgabebeschrÃ¤nkung: %qsungÃ¼ltiger Klassenname in Deklaration von %qDungÃ¼ltige Clique in %qsungÃ¼ltige Kombination mehrerer Typ-Spezifiziererinvalid comparison code in gimple condungÃ¼ltiger Vergleich eines generierten ArraysungÃ¼ltiger Vergleich mit einer generierten StrukturungÃ¼ltiger Vergleich von nil mit nilungÃ¼ltiger Vergleich eines nicht-vergleichbaren ArraysungÃ¼ltiger Vergleich einer nicht-vergleichbaren StrukturungÃ¼ltiger Vergleich eines nicht-vergleichbaren TypsungÃ¼ltiger Vergleich ungeordneter TypenungÃ¼ltiger Vergleichsoperator fÃ¼r Ausgabemodifizierer Â»EÂ«ungÃ¼ltiger const_double-OperandungÃ¼ltige KonstanteUngÃ¼ltige Konstante â€“ anderen Ausgabemodifizierer probierenungÃ¼ltige Konstante fÃ¼r Ausgabemodifizierer Â»%cÂ«ungÃ¼ltige Konstante in %<#pragma %s%>ungÃ¼ltige Konstante in %<#pragma pack%> - ignoriertungÃ¼ltiger konstanter Vektor fÃ¼r Ausgabemodifizierer Â»%cÂ«ungÃ¼ltiger beschrÃ¤nkter TypparameterungÃ¼ltige EinschrÃ¤nkungenungÃ¼ltige Bedingungen fÃ¼r OperandungÃ¼ltiger Konstruktor; wahrscheinlich war %<%T (const %T&)%> gemeintungÃ¼ltiges Steuerregister %d fÃ¼r mvtc; %<psw%> wird verwendetSteuerprÃ¤dikat ungÃ¼ltigungÃ¼ltige Umwandlung von %<__fpreg%>ungÃ¼ltige Umwandlung von %qH in %qIungÃ¼ltige Umwandlung von Typ %<_Float16%> ohne Option %<-msse2%>ungÃ¼ltige Umwandlung von Typ %<__bf16%> ohne Option %<-msse2%>ungÃ¼ltige Umwandlung von %<__vector_pair%>ungÃ¼ltige Umwandlung von Typ %<__vector_quad%>ungÃ¼ltige Umwandlung von Typ %<bfloat16_t%>ungÃ¼ltige Umwandlung von Typ %<mfloat8_t%>ungÃ¼ltige Umwandlung in GIMPLE-AufrufungÃ¼ltige Umwandlung in Â»returnÂ«-AnweisungungÃ¼ltige Umwandlung in %<__fpreg%>ungÃ¼ltige Umwandlung in Typ %<_Float16%> ohne Option %<-msse2%>ungÃ¼ltige Umwandlung in Typ %<__bf16%> ohne Option %<-msse2%>ungÃ¼ltige Umwandlung in %<__vector_pair%>ungÃ¼ltige Umwandlung in Typ %<__vector_quad%>ungÃ¼ltige Umwandlung in Typ %<bfloat16_t%>ungÃ¼ltige Umwandlung in Typ %<mfloat8_t%>ungÃ¼ltige Umwandlung in Typ %qT von Typ %qTungÃ¼ltiger kovarianter RÃ¼ckgabetyp fÃ¼r %q#DungÃ¼ltiger kovarianter RÃ¼ckgabetyp fÃ¼r %q+#DungÃ¼ltige CPU %qs fÃ¼r %s%qs%sungÃ¼ltige Deklaration von %<%T::%E%>ungÃ¼ltige Deklaration eines Elementtemplates in lokaler KlasseungÃ¼ltiger DeklaratorungÃ¼ltiges Standardargument fÃ¼r einen Template-TemplateparameterungÃ¼ltige %<default%>-Sprungmarke in switch-AnweisungungÃ¼ltige Definition des qualifizierten Typen %qTungÃ¼ltige AbhÃ¤ngigkeitsartungÃ¼ltige AbhÃ¤ngigkeitsart in omp %<ordered%> %<depend%>ungÃ¼ltige Â»dist_scheduleÂ«-ArtungÃ¼ltige Â»doacrossÂ«-ArtUngÃ¼ltiger Elementindex %qE fÃ¼r %<__builtin_shufflevector%>ungÃ¼ltiger Elementtyp fÃ¼r Attribut %qsungÃ¼ltige embedcfg: Â»FilesÂ«-Element ist keine ZeichenketteungÃ¼ltige embedcfg: Â»FilesÂ« ist kein JSON-ObjektungÃ¼ltige embedcfg: Â»PatternsÂ«-Element ist kein ArrayungÃ¼ltige embedcfg: Â»PatternsÂ« ist kein JSON-ObjektungÃ¼ltige embedcfg: doppeltes Â»PatternsÂ«-ElementungÃ¼ltige embedcfg: fehlendes Â»FilesÂ«ungÃ¼ltige embedcfg: Â»PatternsÂ« fehltungÃ¼ltige embedcfg: kein JSON-ObjektungÃ¼ltiges Encoding-PrÃ¤fix in Literal-OperatorungÃ¼ltiger Eintritt in strukturierten %s-BlockungÃ¼ltiger Austritt aus strukturiertem %s-BlockungÃ¼ltiger Ausgang von strukturiertem OpenMP-BlockungÃ¼ltige explizite SpezialisierungungÃ¼ltiger Ausdruck â€“ anderen Ausgabemodifizierer probierenungÃ¼ltiger Ausdruck als OperandungÃ¼ltiger Ausdruck fÃ¼r Min-L-WertungÃ¼ltiger Ausdruck fÃ¼r Ausgabemodifizierer Â»%cÂ«ungÃ¼ltiger Ausdruck fÃ¼r statische Array-Dimension: %sungÃ¼ltiger Ausdruckstyp fÃ¼r %<#pragma omp atomic%>ungÃ¼ltiges Fehler-Speichermodell %qs fÃ¼r %qDunbekannter Feature-Modifizierer %qs in %<-march=%s%>unbekannter Feature-Modifizierer %qs in %<-mcpu=%s%>ungÃ¼ltiger Featuremodifizierer %qs mit Wert %qs in Pragma oder Attribut %<target()%>ungÃ¼ltiger Featuremodifizierer %qs mit Wert %qs in Attribut %<target_version%>ungÃ¼ltiger Featuremodifizierer %qs mit Wert %qs in Pragma oder Attribut %<target()%>invalid fn spec attribute "%s"invalid fn spec attribute "%s" arg %iungÃ¼ltige Â»fnsummaryÂ« in LTO-DatenstromungÃ¼ltige Form von %<#pragma omp atomic compare%>ungÃ¼ltige Form von %<#pragma omp atomic%>ungÃ¼ltige Form von %<#pragma omp atomic compare%>ungÃ¼ltiges Format fÃ¼r %<sve_width%>ungÃ¼ltiges Format von %sUngÃ¼ltiges viertes Argument fÃ¼r %<__builtin_ia32_prefetch%>; es wird 0 verwendetungÃ¼ltige Gleitkomma-KonstanteungÃ¼ltige FPU fÃ¼r Zielattribut oder -pragma %qsungÃ¼ltige Funktion in GIMPLE-AufrufungÃ¼ltige Verwendung von festen Registern zwischen earlyclobber-Operand und EingabeoperandungÃ¼ltige Verwendung von festen Registern zwischen Ausgabeoperanden und dem zugehÃ¶rigen Constraint-OperandenungÃ¼ltige Verwendung von festen Registern zwischen AusgabeoperandenungÃ¼ltiger Headername %qsungÃ¼ltige HexzifferungÃ¼ltiger ID-Wert fÃ¼r Attribut Â»exceptionÂ«ungÃ¼ltiger ID-Wert fÃ¼r Attribut Â»interruptÂ«ungÃ¼ltiger ID-Wert fÃ¼r Interrupt-/Exception-AttributungÃ¼ltiger ID-Wert fÃ¼r Â»resetÂ«-AttributungÃ¼ltige Initialisierung innerhalb der Klasse des statischen Datenelements vom nicht eingebauten Typen %qTErhÃ¶hungsausdruck ungÃ¼ltigungÃ¼ltiger Anfangswert fÃ¼r Element %qEungÃ¼ltige Initialisierung einer nicht-konstanten Referenz des Typs %qH von rvalue des Typs %qIungÃ¼ltige Initialisierung einer Referenz des Typs %qH von Ausdruck des Typs %qIungÃ¼ltige InitialisierungungÃ¼ltige InitialisierungsklauselungÃ¼ltige Initialisierung fÃ¼r %q#DungÃ¼ltige Initialisierung fÃ¼r Arrayelement %q#DungÃ¼ltige Initialisierung fÃ¼r Elementfunktion %qDungÃ¼ltige Initialisierung fÃ¼r strukturierte BindungsdeklarationUngÃ¼ltiger Befehl:ungÃ¼ltiges Schleifenvariable in schneller AufzÃ¤hlungungÃ¼ltige Sprungfunktion in LTO-DatenstromUngÃ¼ltiger Marken in GIMPLE-BedingungungÃ¼ltige linke Seite einer ZuweisungungÃ¼ltige Zeile in AuflÃ¶sungsdateiungÃ¼ltige BindungsspezifikationungÃ¼ltiger Ort fÃ¼r %<pragma %s%>, ignoriertungÃ¼ltiger L-Wert in %<asm%>-Ausgabe %dungÃ¼ltige ZuordnungsartungÃ¼ltige MaskeungÃ¼ltiger Maskentyp in %qsungÃ¼ltige Elementtemplatedeklaration %qDungÃ¼ltiges Speichermodell %qs fÃ¼r %qDungÃ¼ltiges Speichermodell %wi fÃ¼r %qDungÃ¼ltiges Argument %d fÃ¼r Speichermodell von %qEungÃ¼ltiger Modulname %qsungÃ¼ltiger Name %qs fÃ¼r Pragma oder Attribut %<target("arch=")%>ungÃ¼ltiger Name %qs fÃ¼r Pragma oder Attribut %<target("cpu=")%>ungÃ¼ltiger Name %qs fÃ¼r Pragma oder Attribut %<target("tune=")%>ungÃ¼ltiger new-Ausdruck fÃ¼r abstrakte Klasse %qTungÃ¼ltige NMI-Funktion fÃ¼r Â»resetÂ«-AttributungÃ¼ltiges Templateargument ohne TypungÃ¼ltige Nicht-Vektor-Operanden fÃ¼r %qsungÃ¼ltige Anzahl in %<-mrgf-banked-regs=%s%>; gÃ¼ltige Werte sind 0, 4, 8, 16 und 32Falsche Anzahl der Argumente fÃ¼r Option %<-falign-%s%>: %qsInterner Fehler: invalid number of operands for insn %s, expected %d but got %d.
  ungÃ¼ltige offload-Tabelle in %sungÃ¼ltiger Offset-Operand in %qsungÃ¼ltiger OperandungÃ¼ltiger Code fÃ¼r Operand %%xnungÃ¼ltige OperandenadresseungÃ¼ltiger Operandencode Â»%cÂ«ungÃ¼ltiger Operand fÃ¼r Code %%NungÃ¼ltiger Operand fÃ¼r Code %%N oder %%SungÃ¼ltiger Operand fÃ¼r Code %%sungÃ¼ltiger Operand fÃ¼r Â»%%%cÂ«ungÃ¼ltiger Operand fÃ¼r Modifizierer Â»AÂ«ungÃ¼ltiger Operand fÃ¼r Modifizierer Â»DÂ«ungÃ¼ltiger Operand fÃ¼r Modifizierer Â»HÂ«ungÃ¼ltiger Operand fÃ¼r Modifizierer Â»OÂ«ungÃ¼ltiger Operand fÃ¼r Modifizierer Â»TÂ«ungÃ¼ltiger Operand fÃ¼r Modifizierer Â»bÂ«ungÃ¼ltiger Operand fÃ¼r Modifizierer Â»eÂ«ungÃ¼ltiger Operand fÃ¼r Modifizierer Â»mÂ«ungÃ¼ltiger Operand fÃ¼r Modifizierer Â»oÂ«ungÃ¼ltiger Operand fÃ¼r Modifizierer Â»pÂ«ungÃ¼ltiger Operand fÃ¼r Modifizierer Â»zÂ«ungÃ¼ltiger Operand fÃ¼r Code Â»%cÂ«ungÃ¼ltiger Operand in %qsungÃ¼ltiger Operand in Â»returnÂ«-AnweisungungÃ¼ltiger Operand in unÃ¤rer OperationungÃ¼ltiger Modifizierer-Buchstabe fÃ¼r OperandungÃ¼ltiger Operanden-AusgabecodeungÃ¼ltiges OperandenprÃ¤fixungÃ¼ltiger OperandenprÃ¤fix Â»%%%cÂ«ungÃ¼ltige OperandengrÃ¶ÃŸe fÃ¼r Operandencode Â»%cÂ«ungÃ¼ltige OperandengrÃ¶ÃŸe fÃ¼r Operandencode Â»OÂ«ungÃ¼ltige OperandengrÃ¶ÃŸe fÃ¼r Operandencode Â»zÂ«ungÃ¼ltiger Operand fÃ¼r %%H/%%L-CodeungÃ¼ltiger Operand fÃ¼r Code %%MungÃ¼ltiger Operand fÃ¼r Code %%NungÃ¼ltiger Operand fÃ¼r Code %%OungÃ¼ltiger Operand fÃ¼r %%RungÃ¼ltiger Operand fÃ¼r %%R-CodeungÃ¼ltiger Operand fÃ¼r %%SungÃ¼ltiger Operand fÃ¼r Code %%T/%%BungÃ¼ltiger Operand fÃ¼r %%U-CodeungÃ¼ltiger Operand fÃ¼r %%V-CodeungÃ¼ltiger Operand fÃ¼r Code %%ZungÃ¼ltiger Operand fÃ¼r Code %%pungÃ¼ltiger Operand fÃ¼r Code %%sungÃ¼ltiger Operand fÃ¼r Code %%zungÃ¼ltiger Operand fÃ¼r switch-AnweisungungÃ¼ltiger Operandentyp %qT fÃ¼r %qsungÃ¼ltiger Operandentyp mit Operandencode Â»%cÂ« verwendetungÃ¼ltige Operanden in binÃ¤rer OperationungÃ¼ltige Operanden in GIMPLE-VergleichungÃ¼ltige Operanden in ternÃ¤rer OperationungÃ¼ltige Operanden der Typen %qT und %qT fÃ¼r binÃ¤res %qOungÃ¼ltige Operanden fÃ¼r Code %%cungÃ¼ltiger Operand fÃ¼r %qsUngÃ¼ltige Operanden fÃ¼r binÃ¤res %s (%e und %e gefunden)Interner Fehler: invalid operationungÃ¼ltige Operation (%s)ungÃ¼ltige Operation auf %<__fpreg%>ungÃ¼ltiger Operator fÃ¼r %<#pragma omp atomic%>ungÃ¼ltige Reihenfolge in asm-Knoten %iungÃ¼ltige Parameterkombination fÃ¼r AltiVec-spezifisches intrinsisches %qsungÃ¼ltige Parameterkombination fÃ¼r intrinsisches %qsungÃ¼ltiger Parametertyp %qTungÃ¼ltige DurchlaufpositionierungsoperationUngÃ¼ltiger Zeigermodus %qsungÃ¼ltiger Zeiger auf Bitfeld %qDungÃ¼ltige Position oder GrÃ¶ÃŸe in %qsungÃ¼ltiger Positions- oder GrÃ¶ÃŸenoperand fÃ¼r %qsungÃ¼ltige Â»privateÂ«-Reduktion auf %qEungÃ¼ltige Â»proc_bindÂ«-ArtungÃ¼ltiger Prototyp fÃ¼r Â»%sÂ«ungÃ¼ltiges Zeichen %qc in BedingungungÃ¼ltiger Â»pure constÂ«-Status fÃ¼r FunktionungÃ¼ltige reine Spezifikation (nur %<= 0%> ist erlaubt)ungÃ¼ltige Qualifizierer fÃ¼r %<constexpr%>-ObjektungÃ¼ltige Qualifizierer fÃ¼r Feld eines %<constexpr%>-ObjektsungÃ¼ltige Qualifizierer an Nicht-Element-FunktionstypungÃ¼ltiger angegebener GÃ¼ltigkeitsbereich in Pseudodestruktor-NameungÃ¼ltiges Empfangen auf Nur-Sende-KanalungÃ¼ltiger EmpfÃ¤ngertyp %qsungÃ¼ltiger reduction-identifierungÃ¼ltige Referenz fÃ¼r Ausgabemodifizierer Â»JÂ«ungÃ¼ltiger Registername fÃ¼r %q+DungÃ¼ltige Registernummer fÃ¼r Modifizierer Â»NÂ«ungÃ¼ltiger regulÃ¤rer Ausdruck %qs in %qsungÃ¼ltige AdressverschiebungungÃ¼ltige AuflÃ¶sung in AuflÃ¶sungsdateiungÃ¼ltiger RÃ¼ckgabetyp %qT der %<constexpr%>-Funktion %q+DungÃ¼ltige gemeinsame rtl-Verwendung in Befehl gefundenungÃ¼ltige AblaufartungÃ¼ltiges zweites Argument fÃ¼r %<__builtin_ia32_prefetch%>; es wird 0 verwendetUngÃ¼ltiges zweites Argument fÃ¼r %<__builtin_prefetch%>; es wird 0 verwendetungÃ¼ltiges Â»sendÂ« auf Nur-Empfangs-KanalungÃ¼ltiger Setter, muss ein Argument habenungÃ¼ltiger SchiebeoperandungÃ¼ltige Scheibe einer MapInterner Fehler: invalid source block specificationungÃ¼ltige statische Kette in GIMPLE-AufrufungÃ¼ltige Speicherklasse fÃ¼r Funktion %qEungÃ¼ltiger Systemregistername %qsungÃ¼ltiger Systemregistername angegebenungÃ¼ltiger Wert %<%d%> fÃ¼r Ziel-memregsungÃ¼ltige Templatedeklaration von %qDungÃ¼ltiger Nicht-Typ-Parameter fÃ¼r TemplateungÃ¼ltige template-argument-listungÃ¼ltige Template-IDungÃ¼ltiges drittes ArgumentUngÃ¼ltiges drittes Argument fÃ¼r %<__builtin_ia32_prefetch%>; es wird 0 verwendetUngÃ¼ltiges drittes Argument fÃ¼r %<__builtin_prefetch%>; es wird 0 verwendetungÃ¼ltiger Typ %<void%> fÃ¼r %<new%>UngÃ¼ltiger Typ %qT als Initialisierung fÃ¼r einen Vektor des Typs %qTungÃ¼ltiger Typ %qT als %<friend%> deklariertungÃ¼ltiger Typ %qTungÃ¼ltiger Typ %qT fÃ¼r %<->%>ungÃ¼ltiger Typ %qT fÃ¼r %<->*%>ungÃ¼ltiger Typ %qT fÃ¼r ArrayindexungÃ¼ltiger Argumenttyp %qT fÃ¼r implizite UmwandlungungÃ¼ltiger Typ %qT fÃ¼r unÃ¤res %<*%>ungÃ¼ltiger Typ fÃ¼r %<asm%>-Schalter-AusgabeInterner Fehler: invalid type for _Literal with constructorungÃ¼ltiger Typ fÃ¼r cc-AusgabebeschrÃ¤nkungungÃ¼ltiger Typ fÃ¼r InstanzvariableungÃ¼ltiger Typ fÃ¼r Schleifenvariable %qEungÃ¼ltiger Typ fÃ¼r Â»makeÂ«-FunktionungÃ¼ltiger Typ fÃ¼r Parameter %d der %<constexpr%>-Funktion %q+#DungÃ¼ltiger Typ fÃ¼r EigenschaftInterner Fehler: invalid type of %<__MEM%> operandungÃ¼ltiger Typ fÃ¼r Argument %u der typgenerischen FunktionungÃ¼ltiger typgenerischer RÃ¼ckgabetyp fÃ¼r Argument %u von %<__builtin_tgmath%>ungÃ¼ltiger typgenerischer Typ fÃ¼r Argument %u von Argument %u von %<__builtin_tgmath%>ungÃ¼ltige Typen %<%T[%T]%> fÃ¼r FeldindexungÃ¼ltiger Typen fÃ¼r %qsungÃ¼ltige Typen in AdressraumumwandlungungÃ¼ltige Typen in Umwandlung zu GleitkommaungÃ¼ltige Typen in Umwandlung in GanzzahlungÃ¼ltige Typen Festkomma-UmwandlungungÃ¼ltige Typen in NOP-UmwandlungungÃ¼ltige Verwendung von %%d, %%x oder %%XungÃ¼ltige Verwendung von %<::%>ungÃ¼ltige Verwendung von %<__builtin_va_arg_pack ()%>ungÃ¼ltige Verwendung von %<__builtin_va_arg_pack_len ()%>ungÃ¼ltige Verwendung von %<auto%> in UmwandlungsoperatorungÃ¼ltige Verwendung von %<auto%> in Default-TemplateargumentungÃ¼ltige Verwendung von %<auto%> in AusnahmespezifikationungÃ¼ltige Verwendung von %<auto%> in TemplateargumentungÃ¼ltige Verwendung von %<const_cast%> mit Typ %qT, der ein Zeiger oder Referenz auf Funktionstyp istungÃ¼ltige Verwendung von %<const_cast%> mit Typ %qT, der weder Zeiger, Referenz, noch Zeiger auf ein Datenelement istungÃ¼ltige Verwendung von %<decltype(auto)%>ungÃ¼ltige Verwendung der %<extern%>-Variable %qD in %<#pragma acc declare%>ungÃ¼ltige Verwendung der %<global%>-Variable %qD in %<#pragma acc declare%>UngÃ¼ltige Verwendung von %<restrict%>ungÃ¼ltige Verwendung von %<this%>, nachdem es gÃ¼ltig warungÃ¼ltige Verwendung von %<this%> auf hÃ¶chster EbeneungÃ¼ltige Verwendung von %<this%>, bevor es gÃ¼ltig istungÃ¼ltige Verwendung von %<this%> in Nicht-Element-FunktionungÃ¼ltige Verwendung von %q#T mit flexiblem Arrayelement in %q#TungÃ¼ltige Verwendung von %q#T mit Array der GrÃ¶ÃŸe 0 in %q#DungÃ¼ltige Verwendung von %qDungÃ¼ltige Verwendung von %qD in Spezifizierung der BindungungÃ¼ltige Verwendung von %qE um Zeiger auf Elementfunktion zu erzeugenungÃ¼ltige Verwendung von %qTungÃ¼ltige Verwendung von Â»%%%cÂ«ungÃ¼ltige Verwendung des MMA-Operanden vom Typ %qs als Parameter einer FunktionungÃ¼ltige Verwendung des MMA-Typs %qs als RÃ¼ckgabetyp einer FunktionungÃ¼ltige Verwendung eines Zeigers auf einen unvollstÃ¤ndigen Typen in ZeigerarithmetikungÃ¼ltige Verwendung von Arrayindizierung bei Zeiger auf Elementfalsche Verwendung eines Arrays mit unbekannten GrenzenungÃ¼ltige Verwendung der asm-Schalter-AusgabeungÃ¼ltige Verwendung des Attributs %<fallthrough%>ungÃ¼ltige Verwendung von Attributen in leerer DeklarationungÃ¼ltige Verwendung von geschweift geklammerter InitialisierungslisteungÃ¼ltige Verwendung von %<concept-name%> %qDungÃ¼ltige Verwendung eines eingeschrÃ¤nkten %<auto%>-TypsungÃ¼ltige Verwendung des Konstruktors als TemplateungÃ¼ltige Verwendung der Vertragsstufe fÃ¼r explizite SemantikungÃ¼ltige Verwendung von cv-qualifiziertem Typ %qT in ParameterdeklarationungÃ¼ltige Verwendung des abhÃ¤ngigen Typen %qTungÃ¼ltige Verwendung des Destruktors %qD als TypungÃ¼ltige Verwendung des Destruktors %qE als Typfalsche Verwendung eines flexiblen ArrayelementsungÃ¼ltige Verwendung impliziter Umwandlung bei Zeiger auf Elementfalsche Verwendung des unvollstÃ¤ndigen Typs %q#Tfalsche Verwendung des unvollstÃ¤ndigen typedef %qTungÃ¼ltige Verwendung des Elements %qD (%<&%> vergessen?)ungÃ¼ltige Verwendung des Elementes %qD in %<pre%>-Vertrag eines KonstruktorsungÃ¼ltige Verwendung des Elementes %qD in %<post%>-Vertrag eines DestruktorsungÃ¼ltige Verwendung des Elementes %qD in statischer ElementfunktionungÃ¼ltige Verwendung von Elementfunktion %qD (%<()%> vergessen?)ungÃ¼ltige Verwendung eines Methodenwerts als Argument von OffsetofungÃ¼ltige Verwendung eines Nicht-L-Wert-ArraysungÃ¼ltige Verwendung des nicht-statischen Datenelementes %qDungÃ¼ltige Verwendung des nicht-statischen Datenelements %qEungÃ¼ltige Verwendung der nicht-statischen Elementfunktion %qDungÃ¼ltige Verwendung der nicht-statischen Elementfunktion vom Typ %qTfalsche Verwendung von %<pack expansion%> %qTfalsche Verwendung eines PackauflÃ¶sungs-AusdruckesungÃ¼ltige Verwendung des Platzhalters %qTungÃ¼ltige Verwendung von Zeigern auf Arrays mit unterschiedlichen Qualifizierern in ISO C vor C23ungÃ¼ltige Verwendung des qualifizierten Namens %<%D::%D%>ungÃ¼ltige Verwendung des qualifizierten Namens %<%T::%D%>ungÃ¼ltige Verwendung des qualifizierten Namens %<::%D%>UngÃ¼ltige Verwendung von Register Â»%sÂ«ungÃ¼ltige Verwendung einer Struktur mit flexiblem ArrayelementungÃ¼ltige Verwendung des Parameters %qT fÃ¼r Template-TemplateparameterungÃ¼ltige Verwendung des Parameters %qT fÃ¼r TemplatetypungÃ¼ltige Verwendung der Template-ID %qD in Deklaration des ursprÃ¼nglichen TemplatesungÃ¼ltige Verwendung des Template-Namens %qE ohne eine ArgumentlisteungÃ¼ltige Verwendung eines TypenungÃ¼ltige Verwendung von Typ %<void%> in ParameterdeklarationungÃ¼ltige Verwendung des Typs %qT als Standardwert fÃ¼r einen Template-TemplateparameterungÃ¼ltige Verwendung des unÃ¤ren %<*%> bei Zeiger auf Elementfalsche Verwendung des undefinierten Typs %qTfalsche Verwendung eines void-Ausdruckesin %<transaction_safe%>-Funktion ist kein volatile lvalue erlaubtungÃ¼ltige Verwendung eines volative lvalue innerhalb einer TransaktionungÃ¼ltige benutzerdefinierte Umwandlung von %qH in %qIungÃ¼ltige Wert-Initialisierung von ReferenztypungÃ¼ltiger Ergebnistyp in VektorvergleichungÃ¼ltige VektorkonstanteungÃ¼ltiger VektordirektwertungÃ¼ltiger VektoroperandUngÃ¼ltiger Vektortyp fÃ¼r Attribut %qEungÃ¼ltige Vektortypen in NOP-UmwandlungungÃ¼ltige Versionsnummer %qsungÃ¼ltige Â»warmÂ«-Funktion fÃ¼r Â»resetÂ«-AttributungÃ¼ltige null-Extraktionio_kind_name(): bad I/O-kindIPA-Inline-Zusammenfassung fehlt in EingabedateiIPA-Referenzzusammenfassung fehlt in ltrans-Einheitwird von %qs verstecktis_c_interoperable(): gfc_simplify_expr faileder ist in einer anderen Ãœbersetzungseinheit als Zeiger in unterschiedlichem Adressraum definierter ist in einer anderen Ãœbersetzungseinheit als Zeiger auf einen anderen Typen definiertes muss ein Zeiger auf ein Element der Form %<&X::Y%> seines muss die Adresse einer Funktion mit externer Bindung seines muss der Name einer Funktion mit externer Bindung seines wurde spÃ¤ter hier definiertElement in READZÃ¤hlvariable in schneller AufzÃ¤hlung ist kein ObjektDurchlauf %s fÃ¼hrt zu undefiniertem VerhaltenSchleifenvariable %qD sollte nicht Â»firstprivateÂ« seinSchleifenvariable %qD sollte keine Reduktion seinIterationsvariable %qE ist vorbestimmt linearSchleifenvariable %qE sollte Â»privateÂ« seinSchleifenvariable %qE sollte nicht Â»firstprivateÂ« seinIterationsvariable %qE sollte nicht Â»linearÂ« seinSchleifenvariable %qE sollte nicht Reduktion seinIterator %qD hat %<_Atomic%>-qualifizierten TypIterator %qD hat %<const%>-qualifizierten TypTyp des Iterators %qD ist weder ganzzahlig noch ein ZeigerIterator %qD hat Schrittweite 0Iterator-Schrittweite mit nichtganzzahligem TypIteratorvariableInterner Fehler: its dest_idx should be %d, not %dder Wert kann zwischen Compiler-Versionen oder mit verschiedenen %<-mtune%> oder %<-mcpu%> Flags variierenvon %<@synthesize%>-Deklaration verwendete ivar %qs muss eine existierende ivar seiniwmmxt ABI erfordert eine iwmmxt-fÃ¤hige CPUiwmmxt erfordert ein AAPCS-kompatibles ABI fÃ¼r den richtigen Einsatzin GÃ¼ltigkeitsbereich des Bezeichners mit variabel modifiziertem Typen springenSprung in Anweisungs-AusdruckSprung Ã¼berspringt OpenMP-%<allocate%>Sprung lÃ¤sst Variableninitialisierung ausSprung zur case-MarkeSprung zur Marke %qDAusschuss am Ende von %<#pragma %s%>Ausschuss am Ende von %<#pragma ADDRESS%>Ausschuss am Ende von %<#pragma CTABLE_ENTRY%>Ausschuss am Ende von %<#pragma GCC memregs%> [0-16]Ausschuss am Ende von %<#pragma GCC pop_options%>Ausschuss am Ende von %<#pragma GCC push_options%>Ausschuss am Ende von %<#pragma GCC visibility%>Ausschuss am Ende von %<#pragma __nostandard%>Ausschuss am Ende von %<#pragma __standard%>Ausschuss am Ende von %<#pragma align%>Ausschuss am Ende von %<#pragma fini%>Ausschuss am Ende von %<#pragma init%>Ausschuss am Ende von %<#pragma longcall%>Ausschuss am Ende von %<#pragma message%>Ausschuss am Ende von %<#pragma ms_struct%>Ausschuss am Ende von %<#pragma options%>Ausschuss am Ende von %<#pragma pack%>Ausschuss am Ende von %<#pragma redefine_extname%>Ausschuss am Ende von %<#pragma reset_options%>Ausschuss am Ende von %<#pragma unused%>Ausschuss am Ende von %<#pragma weak%>Ausschuss am Ende von %<#pragma ghs endsda%>Ausschuss am Ende von %<#pragma ghs endtda%>Ausschuss am Ende von %<#pragma ghs endzda%>Ausschuss am Ende von %<#pragma ghs interrupt%>Ausschuss am Ende von %<#pragma ghs section%>Ausschuss am Ende von %<#pragma ghs startsda%>Ausschuss am Ende von %<#pragma ghs starttda%>Ausschuss am Ende von %<#pragma ghs startzda%>Ausschuss am Ende von Â»#pragma extern_modelÂ«das SchlÃ¼sselwort %<export%> ist veraltet und wird ignoriertdas SchlÃ¼sselwort %<export%> wird mit %<-fmodules%> eingeschaltetSchlÃ¼sselwort %<export%> nicht implementiert, und wird ignoriertSchlÃ¼sselwort %<template%> nicht innerhalb des Klassenkopfnamens erlaubtSchlÃ¼sselwort %<template%> nicht innerhalb der declarator-id erlaubtSchlÃ¼sselwort %<typename%> in diesem Kontext nicht erlaubt (eine qualifizierte Elementinitialisierung ist implizit ein Typ)SchlÃ¼sselwort %<typename%> nicht erlaubt in diesem Kontext (die Basisklasse ist implizit ein Typ)SchlÃ¼sselwort %<typename%> nicht auÃŸerhalb von Templates erlaubtMarke %q+D deklariert, aber nicht definiertMarke %q+D definiert, aber nicht verwendetMarke %q+D verwendet, aber nicht definiertMarke %qD hier definiertInterner Fehler: label %qD has incorrect context in bb %dInterner Fehler: label %qD in the middle of basic block %dInterner Fehler: label %qD to block does not match in bb %dMarke %qE auÃŸerhalb einer Funktion referenziertdie Sprungmarke %s wird auÃŸerhalb einer Funktion referenziertMarke am Ende einer VerbundanweisungSprungmarke am Ende einer zusammengesetzten Anweisung ist erst ab %<-std=c++23%> oder %<-std=gnu++23%> verfÃ¼gbarder Label-Kontext ist nicht die aktuelle FunktionsdeklarationDefinition einer Sprungmarke innerhalb einer %<constexpr%>-Funktion ist erst ab %<-std=c++23%> oder %<-std=gnu++23%> verfÃ¼gbarDefinition einer Sprungmarke innerhalb einer %<constexpr%>-Funktion ist erst ab %<-std=c++2b%> oder %<-std=gnu++2b%> verfÃ¼gbarInitialisierungen fÃ¼r Lambda-Captures sind nur mit %<-std=c++14%> oder %<-std=gnu++14%> verfÃ¼gbarLambda-Einfangen von %qE ist kein konstanter AusdruckLambda ist hier deklariertLambda-AusdrÃ¼cke nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarLambda in lokaler Klasse %q+T kann Variablen aus dem umschlieÃŸenden Kontext nicht einfangenLambdaparameter %qD war vorher als EinfÃ¤nger deklariertLambda-Templates sind erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarLambda-Ausdruck in Template-Parameter-TypLambda-Ausdruck in Template-Argument ist erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarLambda-Ausdruck in nicht evaluiertem Kontext ist erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarLambda-Ausdruck ist erst ab C++17 ein konstanter AusdruckLambdas sind erst ab C++17 implizit %<constexpr%>Spur %wd ist auÃŸerhalb des Wertebereiches %wd bis %wdSpurindex muss eine direkt angegebene Konstante seinSprache %s nicht erkanntSprachdialekt ist %qs, erwartet wird jedoch %qsSprachen-Zeichenkette %<"%E"%> nicht erkanntgroÃŸe Festkommakonstante implizit auf Festkommatypen abgeschnittenGroÃŸe Ganzzahl implizit auf vorzeichenlosen Typen abgeschnittengroÃŸe RÃ¼ckgabewerte werden mit der Option %<-mabi=ti%> nicht unterstÃ¼tztdas letzte Argument muss ein Immediate seinletztes Argument von %qD ist keine Ganzzahlkonstante zwischen 0 und 3Name des letzten Registers Â»%sÂ« muss ein ungerades Register seindas Layout des Members %qs vom Typ %qT Ã¤ndert sich in %qsld gab %d als Ende-Status zurÃ¼cklinkes Argument muss eine Scheibe seinlinker Operand von %<->*%> muss Zeiger auf Klasse sein, ist aber ein Zeiger auf Element des Typs %qTlinker Operand des Komma-Operators kann die Adresse der Ã¼berladenen Funktion nicht auflÃ¶senlinker Operand des Komma-Operators hat keinen Effektlinker Operand des Komma-Operators ist eine Referenz, kein Aufruf, zur Funktion %qElinker Operand des Schiebeausdrucks %q+E ist negativlinke PrÃ¤zisionlinke PrÃ¤zision im strfmon-FormatLinks-Schiebe-Weite >= Breite des TypsLinks-Schiebe-Weite >= Breite des VektorelementsLinks-Schiebe-Weite ist negativleft shift of negative valuelinker Operand des Komma-Ausdrucks hat keinen Effektlinke Seite der Zuweisung kÃ¶nnte ein Kandidat fÃ¼r ein Formatattribut seinLÃ¤nge grÃ¶ÃŸer als KapazitÃ¤tLÃ¤nge %qE geht Ã¼ber AbschnittsgrÃ¶ÃŸe in %qs-Klausel hinausLÃ¤nge %qE des Arrayabschnitts muss Ganzzahltyp habenLÃ¤nge wird hier berechnetLÃ¤ngenmodifiziererLÃ¤ngenmodifizierer im printf-FormatLÃ¤ngenmodifizierer im scanf-FormatLÃ¤ngenmodifizierer im strfmon-FormatBei Reservierung einer Scheibe wird LÃ¤nge benÃ¶tigtBuchstabe %c gefunden und Befehl war nicht CONST_INTBibliotheken: %s
! Bibliotheksfunktion %q#D als Nicht-Funktion %q#D redeklariertBibliothek lib%s nicht gefundenGrenze ist %wu Bytes, Argument hat jedoch %s BytesGrenze ist %wu Bytes, Argument hat jedoch bis zu %s BytesÂ»linearÂ«-Klausel wird auf Variable vom Typ %qT angewandt, die weder ganzzahlig noch Zeiger istÂ»linearÂ«-Klausel auf Variable vom Typ %qT angewendet, die weder Ganzzahl noch Zeiger istÂ»linearÂ«-Klausel mit Modifizierer %qs wird auf Nicht-Referenz-Variable mit Typ %qT angewandtAusdruck fÃ¼r Â»linearÂ«-Schrittweite muss ganzzahlig seinmit der pthread-Bibliothek Ã¼bersetzen (Vorgabe: ein)linker-HÃ¤rtungsoptionen nicht durch %<-fhardened%> aktiviert, da andere Link-Optionen auf der Kommandozeile angegeben wurdenListeninitialisierung fÃ¼r Nicht-Klassentyp darf nicht geklammert seinEs ist veraltet, das Stapelzeiger-Register %qs in einer Ãœberschreibungsliste anzugebenLiteraler Operator %q#D steht mit rohem Literaloperator in KonfliktLiterale Operator-Suffixe ohne vorangehendes %<_%> sind fÃ¼r zukÃ¼nftige Standardisierungen reserviertliterales Operatortemplate %qD hat ungÃ¼ltige Parameterliste; Template fÃ¼r Nicht-Typ Argumentpack %<<charâ€¦>%> erwartetliterales Operatortemplate %qD hat ungÃ¼ltige Parameterliste; nicht-Typ Templateargumentpack %<<charâ€¦>%> oder einzelner Nicht-Typ-Parameter von Klassentyp erwartetliteraler Operator mit C-BindungLivepatchen (mit %qs) wird in Kombination mit LTO nicht unterstÃ¼tztlo_sum nicht von einem Registerlokale Klasse %q#T darf kein statisches Datenelement %q#D habenlocal declaration from a different functionlokale Deklaration von %qE verdeckt Instanzvariablelokale Sprungmarke %qE steht in Konflikt mit bestehender Sprungmarkelokales Element %q#D ist hier deklariertlokale Methode %q#D ist hier deklariertInterner Fehler: local symbols must be definedlokale Variable %qD darf in diesem Kontext nicht auftauchenLokale Variablenspeicheranforderungen Ã¼berschreiten KapazitÃ¤tStelle des OpenACC-%<kernels%>Stelle der vorherigen Klausel in derselben SchleifenschachtelungStelle der vorherigen Reduktion fÃ¼r %qElocation references block not in block treeInterner Fehler: logic error: MOVE %s %s invalid type:Interner Fehler: logic error: missing inode for %slogisches %<und%> auf nicht-boolesche Konstante angewendetlogisches %<und%> von gleichen AusdrÃ¼ckenlogisches %<und%> bei sich gegenseitig ausschlieÃŸenden Tests ist immer Â»falschÂ«Logisches %<or%> auf Nicht-Boolesche Konstante angewendetlogisches %<oder%> bei gemeinsam erschÃ¶pfenden Tests ist immer Â»wahrÂ«logisches %<oder%> von gleichen AusdrÃ¼ckenlogisches Nicht bezieht sich nur auf die linke Seite des Vergleichslogical_to_bitwise(): Bad intrinsicNachschlagen von %qT in %qT ist nicht eindeutigInterner Fehler: loop %d%'s header does not belong directly to itInterner Fehler: loop %d%'s header does not have exactly 2 entriesInterner Fehler: loop %d%'s header is not a loop headerInterner Fehler: loop %d%'s latch does not belong directly to itInterner Fehler: loop %d%'s latch does not have an edge to its headerInterner Fehler: loop %d%'s latch does not have exactly 1 successorInterner Fehler: loop %d%'s latch does not have header as successorInterner Fehler: loop %d%'s latch is marked as part of irreducible regionInterner Fehler: loop %d%'s latch is not dominated by its headerdie Anzahl der Iterationen der Schleife %d %qE verweist auf den freigegebenen SSA-Namen %qEder Schleifenname ist hier definiertSchleifenschachtelung erwartetSchleife in dazwischenliegendem Code im OpenMP-SchleifenkÃ¶rper nicht erlaubtSchleife verwendet OpenACC-Parallelismus, der von der umgebenden Routine verboten wurdeSchleifenvariable %qD erzeugt eine Kopie vom Typ %qTSchleifenvariable %qD vom Typ %qT bindet an temporÃ¤res Objekt, das aus dem Typen %qT konstruiert wurdeInterner Fehler: loop verification on loop tree that needs fixupInterner Fehler: loop with header %d marked for removalInterner Fehler: loop with header %d not in loop treelockerere Ausnahmespezifikation in der Ã¼bersteuernden virtuellen Funktion %q+#Funtere Grenze %qE geht Ã¼ber AbschnittsgrÃ¶ÃŸe in %qs-Klausel hinausUntere Grenze %qE des Arrayabschnitts muss Ganzzahltyp habenuntere Grenze des Arrays liegt auÃŸerhalb der Grenzen von ztypearithmetischer Ãœberlauf in unterer Grenze des TeilbereichsUnterer Wert in case-Marken-Bereich ist kleiner als der Minimalwert des Typslseek beim Lesen von Exportdaten gescheitertAls Verringerungsoperand wird L-Wert erfordertAls ErhÃ¶hungsoperand wird L-Wert erfordertAls linker Operand einer Zuweisung wird L-Wert erfordertAls Operand fÃ¼r unÃ¤res %<&%> wird L-Wert erfordertdie %<asm%>-Anweisung erfordert einen L-WertUmwandlung lvalue-in-rvalue eines volatile-lvalue %qE mit Typ %qTdie Maschinenbeschreibung enthÃ¤lt kein Befehlsmuster sibcall_epiloguemaschinenunabhÃ¤ngiger eingebauter Code auÃŸerhalb des WertebereichesMakrodefinitionen von %qE sind kaputtMakro expandiert zu mehreren AnweisungenMakroname fehlt hinter %qsInterner Compilerfehler: main variant is not definedInterner Fehler: make_generic(): Cannot find generic symbol %qsmehrfache Kopien von %qD werden erzeugtfalsch geformtes %<#pragma %s%>, ignoriertfalsch geformtes %<#pragma %s%>, wird ignoriertFalsch geformte Variablenadresse in %<#pragma ADDRESS%>falsch geformte Variablenadresse bei %<#pragma CTABLE_ENTRY%>falsch geformtes %<#pragma GCC pch_preprocess%>falsch geformtes %<#pragma GCC visibility push%>falsch geformtes %<#pragma __extern_prefix%>, wird ignoriertFalsch geformtes %<#pragma align%>Falsch geformtes %<#pragma align%> - ignoriertFalsch geformtes %<#pragma builtin%>Falsch geformtes %<#pragma extern_model%>, ignoriertFalsch geformtes %<#pragma fini%>Falsch geformtes %<#pragma fini%>, ignoriertFalsch geformtes %<#pragma init%>Falsch geformtes %<#pragma init%>', ignoriertFalsch geformtes %<#pragma member_alignment%>Falsch geformtes %<#pragma member_alignment%>, wird ignoriertfalsch geformtes %<#pragma message%>, ignoriertFalsch geformtes %<#pragma ms_struct {on|off|reset}%>, ignoriertFalsch geformtes %<#pragma ms_struct%>, wird ignoriertFalsch geformtes %<#pragma options align={mac68k|power|reset}%>, wird ignoriertFalsch geformtes %<#pragma options%>, wird ignoriertfalsch geformtes %<#pragma pack%> - ignoriertfalsch geformtes %<#pragma pack(pop[, id])%> - ignoriertfalsch geformtes %<#pragma pack(push[, id][, <n>])%> - ignoriertfalsch geformtes %<#pragma redefine_extname%>, wird ignoriertfalsch geformtes %<#pragma weak%>, wird ignoriertfalsch geformtes %<#pragma ghs section%>ungÃ¼ltige %<COLLECT_GCC_OPTIONS%>falsch geformtes Attribut %<target("%s")%>falsch geformtes Pragma oder Attribut %<target("%s")%>falsch geformtes %<target()%>-Attributfalsch geformtes Pragma oder Attribut %<target()%>falsche Option %<-fplugin-arg-%s%>: fehlendes %<-<SchlÃ¼ssel>[=<Wert>]%>kaputte PTX-Dateischlechte Argumente fÃ¼r Spezifikationsfunktionschlechter Name fÃ¼r SpezifikationsfunktionAttribut %<malloc%> ist nur an Funktionen sinnvoll, die einen Zeiger zurÃ¼ckgebengemangelter Name fÃ¼r %qD wird sich ich C++17 Ã¤ndern, da die Exceptionangabe Teil des Funktionstyps istmangling %<typeof%>, verwenden Sie stattdessen %<decltype%>%C wird gemangeltMangeln von %q#D als %qE steht mit einer vorherigen Mangelung in Konfliktmangling type pack indexAbbildung kann nur mit nil verglichen werdenzusammengesetztes Map-Literal muss SchlÃ¼ssel habenMapper wurde mit Signal %s beendetMapper mit Status %d beendetFeld %qE der Struktur variabler LÃ¤nger wird zugeordnetMaske muss Â»immediateÂ« seinmatch_attr_spec(): Bad attributematch_level_4(): Bad operatormatch_string_constant(): Delimiter not founddazu passende Bedingung erlaubt kein Registerdazu passende EinschrÃ¤nkung in Ausgabeoperanden ungÃ¼ltigZusammenpass-EinschrÃ¤nkung auÃŸerhalb einer Funktiondazu passende Bedingung referenziert ungÃ¼ltige OperandennummerHÃ¶chstzahl der LTO-Partitionen, die parallel gestreamt werden.obere Grenze von %d NamensrÃ¤umen fÃ¼r %qE durchsuchtmaximale Verschachtelungstiefe Ã¼berschritten: %iHÃ¶chstzahl der DurchlÃ¤ufe fÃ¼r LRA-Bedingungen ist erreicht (%d)HÃ¶chstzahl der erzeugten Neuladebefehle pro Befehl ist erreicht (%d)Code greift mÃ¶glicherweise auf %E Byte in einer Region der GrÃ¶ÃŸe %E zuCode greift mÃ¶glicherweise auf %E Bytes in einer Region der GrÃ¶ÃŸe %E zuCode greift mÃ¶glicherweise auf %E oder mehr Bytes in einer Region der GrÃ¶ÃŸe %E zugreift mÃ¶glicherweise auf zwischen %E und %E Bytes in einer Region der GrÃ¶ÃŸe %E zuÂ»-EBÂ« und Â»-ELÂ« dÃ¼rfen nicht gleichzeitig verwendet werdenÂ»-m32Â« und Â»-m64Â« dÃ¼rfen nicht zusammen angegeben werdender Typ darf nur innerhalb zusammengesetzter Literale vom Typ Slice, Array oder Map weggelassen werdenCode liest mÃ¶glicherweise %E Byte aus einer Region der GrÃ¶ÃŸe %ECode liest mÃ¶glicherweise %E Bytes aus einer Region der GrÃ¶ÃŸe %ECode liest mÃ¶glicherweise %E oder mehr Bytes aus einer Region der GrÃ¶ÃŸe %ECode liest mÃ¶glicherweise zwischen %E und %E Bytes aus einer Region der GrÃ¶ÃŸe %ECode schreibt mÃ¶glicherweise %E Byte in eine Region der GrÃ¶ÃŸe %ECode schreibt %E Bytes in eine Region der GrÃ¶ÃŸe %ECode schreibt %E oder mehr Bytes in eine Region der GrÃ¶ÃŸe %ECode schreibt mÃ¶glicherweise zwischen %E und %E Bytes in eine Region der GrÃ¶ÃŸe %EInterner Fehler: md5_stream failedmdoc-Register werden nur fÃ¼r G13-Ziel gesichertMedienfunktionen sind nur mit %<-mmedia%> verfÃ¼gbarSpeicherinitialisierung fÃ¼r %qD folgt KonstruktordelegationElement %q+#D mit Konstruktor in anonymem Aggregat nicht erlaubtElement %q+#D mit Konstruktor nicht erlaubt in UnionElement %q+#D mit Zuweisungsoperator ist in anonymem Aggregt nicht erlaubtElement %q+#D mit Copy-Zuweisungsoperator ist nicht erlaubt in UnionElement %q+#D mit Destruktor in anonymem Aggregat nicht erlaubtElement %q+#D mit Destruktor nicht erlaubt in UnionElement %q+D darf nicht als %<mutable%>-Referenz deklariert seinElement %q+D darf nicht gleichzeitig als %<const%> und %<mutable%> deklariert seinElement %qD kann erst mit %<-std=c++20%> oder %<-std=gnu++20%> gleichzeitig %<virtual%> und %<constexpr%> seinElement %qD kann nicht gleichzeitig %<virtual%> und %<static%> seinElement %qD als Â»friendÂ« deklariert, bevor Typ %qT definiert wurdeElement %qD in schreibgeschÃ¼tztem Objekt als %<asm%>-Ausgabe verwendetElement %qD ist nicht initialisierte ReferenzMitglied %qD ist nicht initialisiert, wird aber benutztElement %qD in %<constexpr%> muss von Â»mem-initializerÂ« initialisiert werdenElement %qD mit nicht initialisierten FeldernElementfunktionen sind implizite Â»friendsÂ« ihrer KlasseElement-Template %qD darf keine virt-Spezifizierer habenMembervariablen kÃ¶nnen nicht vom RVV-Typ %qT seinMembervariablen kÃ¶nnen nicht vom SVE-Typ %qT seinElemente einer explizit spezialisierten Klasse sind ohne Templateheader definiertSpeicherreservierung in vasprintf gescheitertSpeicherreservierung beim Lesen der Export-Daten gescheitertSpeichereingabe %d ist nicht direkt adressierbarunvertrÃ¤gliches SpeicherlayoutSpeicherreferenz fÃ¼r Ausgabemodifizierer Â»SÂ« erwartetSpeicherverweis oder volatile-Zugriff nach dem AufrufMetadirektiven kÃ¶nnen nicht als Varianten von %<metadirective%> verwendet werdenMethode %<%c%E%> gleichzeitig als %<@optional%> und %<@required%> deklariertdie Methode %qs hat ein implizites Argument %<this%>Methode %s%s%s ist als go:nointerface gekennzeichnetMethode %s%s%s erfordert einen ZeigerempfÃ¤ngerin Objective-C 1.0 gibt es keine Attribute fÃ¼r Methodenargumentein Objective-C 1.0 gibt es keine MethodenattributeMethodenattribute kÃ¶nnen nicht im @implementation-Kontext angegeben werdenMethodenattribute mÃ¼ssen am Ende angegeben werdenMethodenattribute dÃ¼rfen nur am Ende angegeben werdenMethodendeklaration nicht im @interface-Kontextals %qE deklarierte Methode Ã¼berschreibt Methode %qEMethodendefinition fÃ¼r %<%c%E%> nicht gefundenMethodendefinition nicht im @implementation-KontextMethode Ã¼berschreibt Methoden %<transaction_pure%> und %qEIn Methode fehlt mÃ¶glicherweise ein [super dealloc]-AufrufMethodentyp passt nicht zum ObjekttypMindestgrÃ¶ÃŸe der Partition darf nicht grÃ¶ÃŸer als HÃ¶chstgrÃ¶ÃŸe der Partition seinmio_array_ref(): Unknown array refProfiling fÃ¼r mips16-FunktionenUnstimmigkeit zwischen der GrÃ¶ÃŸe der Deklaration %qE (%wd) und der GrÃ¶ÃŸe ihres Initialisierers (%wd)Unstimmigkeit im Typ von Argument %u der eingebauten Funktion %qD; erwartet wurde %qTUnstimmigkeit im Typ von Argument %u der eingebauten Funktion %qD (%qT, sollte %qT sein)Unstimmigkeit im Typ von Argument %u der eingebauten Funktion %qD (%qT, sollte %qs sein)Abweichung in Grenze %Z von Argument %u, deklariert als %sAbweichung in Grenzen %Z von Argument %u, deklariert als %sUnstimmigkeit in Aufruf der eingebauten Funktion %qDKonflikt in Anzahl der Argumente fÃ¼r eingebautes %qF. %d erwartet, %d bekommenUnstimmigkeit im RÃ¼ckgabetyp der eingebauten Funktion %qD; erwartet wurde %qTUnstimmigkeit im RÃ¼ckgabetyp der eingebauten Funktion %qD (%qT, sollte %qs sein)ArgumentpacklÃ¤ngen %d und %d sind unvertrÃ¤glichArgumentpacklÃ¤ngen passen nicht bei Expansion von %qEArgumentpacklÃ¤ngen passen nicht bei Expansion von %qTunpassendes Vertragsattribut in Deklarationunpassende Vertragsbedingung in DeklarationUnpassende Deklarationen wÃ¤hrend Linkzeit-Optimierungunpassender Operator in FaltungsausdruckwidersprÃ¼chliche ABI-Tags fÃ¼r %qD mit keinen TagswidersprÃ¼chliche ABI-Tags fÃ¼r %qD mit Tags %qEVergleichsoperandentypen passen nichtnicht Ã¼bereinstimmende kompilierte Modulschnittstelle: hatte %qs, bekam %qsabweichende Definitionunpassende Klammernunpassendes Objective-C++-Konstrukt %<@%D%>fehlende $-Operandennummer im Format%<(%> hinter %<#pragma GCC visibility push%> fehlt - ignoriertfehlendes %<(%> hinter %<#pragma pack%> - ignoriertFehlendes %<(%> hinter %<#pragma unused%>, wird ignoriertFehlendes %<)%> hinter %<#pragma unused%>, wird ignoriertfehlende %<PHI%>-Definitionfehlendes %<big-endian%>, %<little-endian%> oder %<default%> hinter %<#pragma scalar_storage_order%>fehlendes %<error%>, %<warning%>, %<ignored%>, %<push%>, %<pop%>, oder %<ignored_attributes%> nach %<#pragma GCC diagnostic%>Attribut %<target%> fehlt fÃ¼r multiversioniertes %qDfehlende %qs-Klausel bei Anwendung von %qs auf %qD, die bereits mit einer OpenACC-Â»routineÂ«-Direktive gekennzeichnet wurdeInterner Fehler: missing REG_EH_REGION note at the end of bb %iFehlendes zusÃ¤tzliches %<requries%>, um eine requires-expression zu beginnenfehlender Architekturname in %<-march=%s%>Argument fÃ¼r %<#pragma GCC diagnostic ignored_attributes%> fehltfehlendes Argument fÃ¼r %qsAttributname hinter %<#pragma GCC diagnostic ignored_attributes%> fehltInterner Fehler: missing barrier after block %igeschweifte Klammern fehlen um Initialisierunggeschweifte Klammern fehlen um Initialisierung fÃ¼r %qTInterner Fehler: missing callgraph edge for call stmt:schlieÃŸende geschweifte Klammer fÃ¼r benannten Operanden fehltFehlende schlieÃŸende Klammerdie Sammlung in schneller AufzÃ¤hlung fehltSteuerprÃ¤dikat fehltfehlender CPU-Name in %<-mcpu=%s%>fehlender CPU-Name in %<-mtune=%s%>fehlender Bindestrichfehlende Definitionfehlendes GerÃ¤t oder Architektur hinter %qsmissing direct call for speculation %ifehlendes Verzeichnis: %sInterner Fehler: missing edge %i->%ifehlendes Merkmal oder Kennzeichen fÃ¼r %qsfehlender Dateiname hinter %qsfehlendes FÃ¼llzeichen am Ende des strfmon-Formatesfehlendes Format hinter %qsfehlender HeadernameErhÃ¶hungsausdruck fehltfehlender indirekter Aufruf in der Folge der spekulativen Aufrufefehlende Initialisierung fÃ¼r Feld %qD von %qT fehltInitialisierung fÃ¼r Element %qD fehltfehlende Schleifenbedingung in Schleife mit %<GCC ivdep%>-Pragmafehlende Schleifenbedingung in Schleife mit %<GCC unroll%>-Pragmafehlendes Makefile-Ziel hinter %qsfehlende Zuordnungfehlende Methode %s%s%sfehlender Modulnamefehlender Name fÃ¼r Pragma oder Attribut %<target("arch=")%>fehlender Name fÃ¼r Pragma oder Attribut %<target("cpu=")%>Fehlende ZahlÃ¶ffnende Klammer fehltfehlender OperandOption hinter %<#pragma GCC diagnostic%>-Variante fehltfehlende oder beschÃ¤digte object.dfehlender Ursprung fÃ¼r einen Knoten in einer verschachtelten Listefehlender Ausgabepfad hinter %qsfehlender Pfad hinter %qsfehlendes primÃ¤res Vorlagenattribut %efehlende primÃ¤re Templateattribute %eEigenschaftsattribut fehltmissing ref for speculation %ifehlender erforderlicher Modifikator %<target%> und/oder %<targetsync%>fehlende AuflÃ¶sungsdaten fÃ¼r %sWÃ¤chter in Funktionsaufruf fehltfehlende Template-Argumentliste nach %qE; fÃ¼r die Deduktion muss auf den Template-Platzhalter eine einfache Deklarator-ID folgenfehlende Template-Argumentliste nach %qE; Template-Platzhalter ist in Parameter nicht erlaubtfehlende Templateargumentefehlende Templateargumente nach %qEfehlendes abschlieÃŸendes Zeichen %cfehlender Typname in typedef-Deklarationfehlender Wert fÃ¼r Pragma oder Attribut %<target()%>im Attribut %<target_version%> fehlt der Wertfalsch geschriebener Begriff %<%.*s%> im Format; verwenden Sie stattdessen %<%s%s%>Vermischung von OpenMP-Direktiven mit Attribut- und Pragma-Syntax in derselben DeklarationVermischung von OpenMP-Direktiven mit Attribut- und Pragma-Syntax in ein und derselben AnweisungVermischung von Deklarationen und Funktionsdefinitionen ist verbotenInterner Fehler: mixing different types of symbol in same comdat groups is not supportedModus %qs auf unpassenden Typen angewendetBetriebsart-GrÃ¶ÃŸe des nicht-ganzzahligen Ergebnisses passt nicht zur FeldgrÃ¶ÃŸe von %qsModifikation von %qE von auÃŸerhalb der aktuellen Auswertung ist kein konstanter AusdruckModifikation von %qE ist kein konstanter AusdruckModifikation von %qE auÃŸerhalb seiner Lebenszeit ist kein konstanter Ausdruckdie Ã„nderung des zugewiesenen Speichers nach der Freigabe ist kein konstanter Ausdruckhier verÃ¤ndertder Modifizierer Â»NÂ« erfordert einen RegisteroperandenModifizierer auÃŸer %<val%> ist in %<linear%>-Klausel an %<simd%>- oder %<for%>-Konstrukten angegeben, zusammen mit OpenMP-5.2-ModifizierernModifizierer sollte an %<simd%>- oder %<for%>-Konstrukten nicht in %<linear%>-Klausel angegeben werden, auÃŸer wenn OpenMP 5.2 verwendet wirdin einem konstanten Ausdruck ist es nicht erlaubt, das %<const%>-Objekt %qE zu verÃ¤ndernCRC-Fehler in Modul %qsdas Modul %qs ist hier deklariertModul %qs erwartet, Headermodul gefundenModul %qs gefundendas Modul %qs wurde hier importiertdas Modul wurde bereits deklariertdas Modul wurde bereits importiertModul enthÃ¤lt OpenACC, verwenden Sie %<-fopenacc%>, um es einzuschaltenModul enthÃ¤lt OpenMP, verwenden Sie %<-fopenmp%> oder %<-fopenmp-simd%>, um es einzuschaltenModul enthÃ¤lt OpenMP, verwenden Sie %<-fopenmp%>, um es einzuschaltenModul-Eigenschaft in USE-Anweisung bei %CModul-Deklaration muss im globalen GÃ¼ltigkeitsbereich sein%<module-declaration%> ist innerhalb von %<header-unit%> nicht erlaubtModul-Deklaration ist nur als erste Deklaration erlaubt, oder wenn sie das global-module-fragment beendetmehr als %d Operanden in %<asm%>mehr als eine %<atomic_default_mem_order%>-Klausel in einer einzigen Ãœbersetzungseinheitmehr als eine %qs-Klausel mit %<source%>-Modifizierer an einem %<ordered%>-Konstruktmehr als eine Â»crtlÂ«-Direktivenmehr als ein Zugriff in Basisspezifikation angegebenmehr als eine Ortsangabe in %<depend%>-Klausel in einem %<depobj%>-Konstrukt%qE vom Typ %qT wird auf sich selbst verschobendas Verschieben eines lokalen Objekts in einer return-Anweisung verhindert das Einsparen der Kopiedas Verschieben eines temporÃ¤ren Objekts verhindert das Einsparen der Kopiempfr ist nicht so konfiguriert, dass alle Gleitkommamodi verarbeitet werden kÃ¶nnenCompilieren von mehreren Quellen ist fÃ¼r C++ nicht implementiertmultidimensionales Feld muss fÃ¼r alle Dimensionen auÃŸer der ersten Grenzen habenMultilib-Ausschluss %qs ist ungÃ¼ltigMultilib-AusschlÃ¼sse %qs sind ungÃ¼ltigMultilib-select %qs %qs ist ungÃ¼ltigMultilib-select %qs ist ungÃ¼ltigMultilib-Spezifikation %qs ist ungÃ¼ltigmehrere %<-mcpu=%>-Optionen angegebenMehrere %<default%>-Ziele wurden festgelegtmehrere %<step%>-Modifiziererdoppeltes Attribut %qEMehrere EH-PersÃ¶nlichkeiten werden nur mit Assemblern unterstÃ¼tzt, die die Direktive %<.cfi_personality%> unterstÃ¼tzenmehrere OpenMP-Â»standaloneÂ«-Direktiven unter den %<omp::directive%>-Attributen mÃ¼ssen sich alle innerhalb derselben %<omp::sequence%> befindenmehrere cc-AusgabebeschrÃ¤nkungen nicht unterstÃ¼tztmehrere Deklarationen in bereichsbasierter %<for%>-SchleifeMehrere Standardmarken in einem Â»switchÂ«mehrfache Definition von %q#Tmehrere schnelle Interruptroutinen gefunden: %qE und %qEin Union %qT werden mehrere Felder initialisiertmehrere Funktionstypattribute angegebenInterner Fehler: multiple hot/cold transitions found (bb %i)mehrere Initialisierungen fÃ¼r %qD angegebenmehrere Initialisierungen fÃ¼r Basis %qT angegebenInterner Fehler: multiple inline callersmehrere Interruptattribute sind nicht erlaubtmehrere Interruptattribute fÃ¼r Funktion %qDmehrere Schleifenvariablen in schneller AufzÃ¤hlungmehrere Â»linearÂ«-Modifizierermehrere Methoden namens %<%c%E%> gefundenmehrere Attribute fÃ¼r geschachtelte Typen fÃ¼r Funktion %qDmehrere Parameter wurden %qD genanntmehrere vorherrschende Definitionen fÃ¼r %qEmehrere Methoden fÃ¼r Eigenschaft %qE angegeben, die letzte von denen wird verwendetmehrere ref-qualifiermehrere Registerspeicher-Attribute fÃ¼r Funktion %qDmehrere Selektoren namens %<%c%E%> gefundenmehrere Speicherklassen in Deklaration von %qsmehrere Speicherklassen in Deklarationmehrere Typen in einer Deklarationmultiple virtual PHI nodes in BB %dFunktionsaufruf mit mehreren Werten in Kontext mit einem WertMultiplizieroption bringt mit sich, dass r%d festgelegt istMultiversionierung erfordert %<ifunc%>, was auf diesem Ziel nicht unterstÃ¼tzt wirdvor Verwendung von %<typeid%> muss %<#include <typeinfo>%> angegeben werdenmuss mit %<noexcept(true)%> deklariert werden%<.*%> oder %<->*%> muss verwendet werden, um Zeiger auf Element als Funktion in %<%E (...)%> aufzurufen, z.B. %<(... ->* %E) (...)%>verÃ¤nderliches %qD ist in konstantem Ausdruck nicht verwendbarnacktes Attribut bezieht sich nur auf FunktionenName %qD in benannter Initialisierung im GNU-Stil fÃ¼r ein Array verwendetName %qT hat unvollstÃ¤ndigen Typender Name %qs unterscheidet sich vom Namen %qs, der in einer anderen Ãœbersetzungseinheit definiert istName %qs ist als %u-Bit definiert, in einer anderen Ãœbersetzungseinheit jedoch als %u-BitName %qs ist als %wd definiert, in einer anderen Ãœbersetzungseinheit jedoch als %wdName %qs wird in einer anderen Ãœbersetzungseinheit mit unterschiedlichem Wert definiertName der Elementfunktion fehltName der Klasse verdeckt Template-Templateparameter %qDgeben Sie dem expliziten Objektparameter einen NamenName in benannter Initialisierung im GNU-Stil fÃ¼r ein Array verwendetnamensunabhÃ¤ngige Deklarationen sind erst ab %<-std=c++2c%> oder %<-std=gnu++2c%> verfÃ¼gbarbenannte RÃ¼ckgabewerte werden nicht mehr unterstÃ¼tztNamensbereich %qD betretenNamensbereich-Alias %qD ist hier nicht erlaubt, %qD angenommenName eines Namensraums erwartetanonymes Aggregat im GÃ¼ltigkeitsbereich eines Namespace muss statisch seinverengende Umwandlung von %qE von %qH nach %qIverengende Umwandlung von %qE von %qH nach %qI ist in C++11 ungÃ¼ltigverengende Umwandlung von %qd von %qH nach %qIZugriff auf das Member %qE erfordert %<this%>fÃ¼r den Zugriff auf Member %qs wird %<this%> benÃ¶tigtvor %<%T::%D::%E%> ist %<typename%> erforderlich, da %<%T::%D%> ein abhÃ¤ngiger GÃ¼ltigkeitsbereich istvor %<%T::%E%> ist %<typename%> erforderlich, da %qT ein abhÃ¤ngiger GÃ¼ltigkeitsbereich ist%<typename%> vor %qE erforderlich, da %qT ein abhÃ¤ngiger GÃ¼ltigkeitsbereich istausdrÃ¼ckliche Umwandlungen erforderlichexplizite Umwandlung nÃ¶tig; Methode %s%s%s fehltnegative BefehlslÃ¤ngeNegative Ganzzahl implizit in vorzeichenlosen Typen konvertiertArrayabschnitt mit negativer LÃ¤nge in %qs-Klauselnegative untere Grenze in Arrayabschnitt in %qs-Klauselnegative Verschachtelungstiefe der Region %inegative Schiebeweitenegative Breite in Bitfeld %q+DNegative Breite in Bitfeld %qskeiner der Zweige des %<if%> ist ein Konstantenausdruckweder der Destruktor noch der klassenspezifische %<operator delete%> wird aufgerufen, auch wenn sie bei der Klassendefinition deklariert werdenweder der Destruktor noch der klassenspezifische %<operator delete []%> wird aufgerufen, auch wenn sie bei der Klassendefinition deklariert werdengeschachtelte Assemblerdialekt-AlternativenGeschachtelte extern-Deklaration von %qDgeschachtelte FunktionGeschachtelte Funktion %q+D deklariert, aber nirgendwo definiertgeschachtelte Funktion %qE als %<extern%> deklariertgeschachtelte Funktion %qs als %<extern%> deklariertdie geschachtelte Funktion muss einen Rumpf haben-ffunction-sections wird fÃ¼r dieses Ziel nicht unterstÃ¼tztauf s390 kÃ¶nnen geschachtelte Funktionen mit %<-mfentry%> nicht im Profiling verwendet werdengeschachtelte Funktionen werden auf diesem Ziel nicht unterstÃ¼tztverschachtelte inline-Namensraumdefinitionen sind erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbargeschachtelte Schleife in Reduktion benÃ¶tigt Reduktionsklausel fÃ¼r %qEgeschachtelter Namensgeber %qT fÃ¼r enum-Deklaration benennt weder Klasse noch Namensraumverschachtelte Namensraumdefinitionen sind nur mit %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbarName eines geschachtelten Namensraums erwartetgeschachtelte q-DirektivenVerschachtelte Redefinition von %<enum %E%>Verschachtelte Redefinition von %<struct %E%>Verschachtelte Redefinition von %<union %E%>die verschachtelte Anforderung %qE ist nicht erfÃ¼lltdie verschachtelte Anforderung %qE ist nicht erfÃ¼llt, daÂ»newÂ« kann nicht auf Funktionstyp angewendet werdenÂ»newÂ« kann nicht auf Referenztyp angewendet werdenneue Deklaration %q#D macht eingebaute Deklaration %q#D mehrdeutigneu in Fortran 2003neu in Fortran 2008neu in Fortran 2018neu in Fortran 2023neu in Fortran 95neue Typen dÃ¼rfen nicht in einem RÃ¼ckgabetyp definiert werdennew-expression ist erst ab C++20 ein konstanter AusdrucknÃ¤chstes Feld %q#D hier deklariertkein %<%D(int)%> fÃ¼r Suffix %qs deklariertkein %<%D(int)%> fÃ¼r Suffix %qs deklariert, stattdessen wird PrÃ¤fixoperator versuchtkeine Methode %<%c%E%> gefundenkein %<FUNCTION_PROFILER%> fÃ¼r CRISkein zugrundeliegender Typ fÃ¼r %<enum%> angegebenkeine Elementfunktion %q#D in Klasse %qT deklariertkein %qs-Getter gefundenMischen von FPX/FPU ist nicht erlaubtkein Dateiname fÃ¼r LTRANS-Ausgabeliste angegebenKeine Argumentekeine Argumente fÃ¼r Spezifikationsfunktionauf explizite Instanziierung kann kein Attribut angewendet werdenkein Klassenname mit %qs angegebenkein Klassentemplate namens %q#T in %q#Tkein schlieÃŸendes %<]%> fÃ¼r %<%%[%>-Formatfehlende schlieÃŸende geschweifte Klammerkeine Konstruktorenkein Kontext, um Typ von %qE aufzulÃ¶senkeine Umwandlungsoperatoren deklariertkeine passende Freigabefunktion fÃ¼r %qDKein Datentyp fÃ¼r Zustand %qskeine Deklaration passt zu %q#Dkeine Deklaration der in der Schnittstelle gefundenen Eigenschaft %qskein Standard-Argument fÃ¼r %qDkeine Destruktorenkein Dispatcher fÃ¼r versionierte Attribute gefundenKein Dispatcher fÃ¼r Versionierungsattribute gefunden: %skein Feld %qD in initialisierter Union gefundenkeine Funktionen namens %qDKeine Liste zur sofortigen VerwendungIn Abschnitt %qs sind keine Initialisierungen erlaubtkeine Eingabedateienkeine Eingabedateien; es werden keine Ausgabedateien geschriebenkein Ganzzahltyp kann alle AufzÃ¤hlungswerte fÃ¼r %qT darstellenkeine bekannte Umwandlung fÃ¼r Argument %d von %qH nach %qIkeine bekannte Umwandlung fÃ¼r impliziten %<this%>-Parameter von %qH nach %qIkeine bekannte Umwandlung von %qH nach %qIkeine unteren Register fÃ¼r das Hervorholen der hohen Register verfÃ¼gbarkeine Ãœbereinstimmung fÃ¼r keine Ãœbereinstimmung fÃ¼r den Aufruf von %<%T::operator[] (%A)%>keine Ãœbereinstimmung fÃ¼r Aufruf von %<(%T) (%A)%>bei der Umwandlung der Funktion %qD in den Typ %q#T gab es keine Ãœbereinstimmungenkeine passende Festkomma-Ãœberladung fÃ¼r %qs gefundenkein passender Funktionsaufruf fÃ¼r %qE mit leeren Argumentenkeine passende Funktion fÃ¼r Aufruf von %<%D(%A)%>keine passende Funktion fÃ¼r Aufruf von %<%T::%s%E(%A)%#V%>keine passende Funktion fÃ¼r Aufruf von %<%T::operator %T(%A)%#V%>keine passende Funktion fÃ¼r Aufruf von %<%s(%A)%>keine passende Funktion fÃ¼r typgenerischen Aufrufkein passendes push fÃ¼r %<#pragma GCC visibility pop%>kein passendes Template fÃ¼r %qD gefundenkeine Elementfunktion %qD in %qT deklariertkein Mitglied namens %qE in %qTkeine Multilib-fÃ¤hige ABI %qs kann mit dem Befehlssatz %qs implementiert werden, stattdessen wird %qs verwendetkein Operand der Disjunktion ist erfÃ¼lltim selben Selektor-Set mit %<kind("any")%> darf keine andere Trait-Eigenschaft angegeben werdenkein Postdekrementoperator fÃ¼r Typkein Postinkrementoperator fÃ¼r Typkein PrÃ¤dekrementoperator fÃ¼r Typkein PrÃ¤inkrementoperator fÃ¼r Typkeine vorherige Deklaration fÃ¼r %qDkein vorheriger Prototyp fÃ¼r %qDkein Prozessortyp zum Binden angegebenes wurden keine Profildateien zusammengefÃ¼hrt
! kein Profiling von 64-bit-Code fÃ¼r dieses ABIkein Register fÃ¼r die Profilerstellung von %<-mcmodel=large%s%> verfÃ¼gbarKein Register in Adresseeine %<constexpr%>-Funktion, die etwas Anderes als %<void%> zurÃ¼ckgibt, muss eine return-Anweisung enthaltenkeine return-Anweisung in nicht void zurÃ¼ckgebender Funktionkeine return-Anweisungen in %qT zurÃ¼ckgebender Funktionkein Semikolon am Ende von Â»structÂ« oder Â»unionÂ«keine solche Ausnahme: 0x%04xkein geeignetes %<operator %s%> fÃ¼r %qTKein passendes %qD in Klasse %qT gefundenkeine Basisklasse im @interface fÃ¼r %qE deklariertkeine Basisklasse in Schnittstelle fÃ¼r %qE deklariertkeine UnterstÃ¼tzung fÃ¼r %qs ohne %qskeine Informationen zum Aufschiebepunkt fÃ¼r %qDkein Typ namens %q#T in %q#Thier darf kein Typ oder Speicherklasse angegeben werden,keine unexpandierten Parameterpackungen in binÃ¤rer Faltung%qD wurde nicht eindeutig und endgÃ¼ltig in %qT Ã¼berschriebenkeine gÃ¼ltigen Klauseln in %<#pragma acc declare%> angegebenkeine brauchbare Konvertierung von %<void%> durch %<get_return_object%> zu RÃ¼ckgabetyp %qTkein geeigneter Destruktor fÃ¼r %qTInterner Fehler: node differs from node->decl->decl_with_vis.symtab_nodeInterner Fehler: node has body_removed but is definitionKnoten hat ungÃ¼ltige Reihenfolge %iInterner Fehler: node has unknown typeInterner Fehler: node is alias but not definitionInterner Fehler: node is alias but not implicit aliasInterner Fehler: node is alone in a comdat groupInterner Fehler: node is analyzed but it is not a definitionInterner Fehler: node is in same_comdat_group list but has no comdat_groupInterner Fehler: node is symver but not aliasInterner Fehler: node is transparent_alias but not an aliasInterner Fehler: node is weakref but not an transparent_aliasInterner Fehler: node not found in symtab assembler name hashInterner Fehler: node not found node->decl->decl_with_vis.symtab_nodeKnoten mit nicht freigegebenem Speicher gefundennoexcept-Ausdruck wird wegen Aufruf von %qD zu %<false%> ausgewertetOperand fÃ¼r Â»%%%cÂ« muss ein 32-Bit-Register seinREAL-Argument ohne doppelte Genauigkeit fÃ¼r intrinsisches %s bei %Lnicht-%<consteval%>-Funktion %q+D Ã¼bersteuert %<consteval%>-Funktionvon nicht-AAPCS abgeleitete PCS-VarianteNicht-ASCII-Zeichen in CFString-LiteralNicht-NULL-Zeigerinitialisierung bei %CNicht-OpenACC-Konstrukt innerhalb einer OpenACC-RegionNicht-OpenACC-Konstrukt innerhalb einer OpenACC-RoutineNicht-Array-Deallokation eines Objekts, das mit Array-Allokation allokiert wurdeFehlzuordnung bei Ausnahmebehandlung ohne AufrufTeilspezialisierung %qE ist nur fÃ¼r Klassen und Variablen erlaubtInterner Fehler: non-cold basic block %d reachable only by paths crossing the cold partitionNicht-konstantes Ganzzahl-Argument %u in Aufruf von Funktion %qENicht konstantes Argument 0 fÃ¼r %qsNicht konstantes Argument 1 fÃ¼r %qsNichtkonstantes Feld in DATA-Anweisung %Lnicht konstante Arrayinitialisierungnichtkonstante LÃ¤nge fÃ¼r neues Array muss direkt angegeben werden, nicht Ã¼ber %<typedef%>Nichtkonstante LÃ¤nge in Array-new muss ohne Klammern um die Typ-ID angegeben werdennicht-konstantes zusammengesetztes Literal kann nicht in einem Konstanten-Ausdruck auftretenNicht-konstante Bedingung fÃ¼r statische Behauptungnon-constant element in constant CONSTRUCTORnicht konstanter Ausdruck %qsInitialisierung des nicht konstanten statischen Elements %qD in der Klasse ist ungÃ¼ltigInitialisierung des nicht konstanten statischen Elements %qD in der Klasse ist ungÃ¼ltigNicht-konstanter Initialisierungsausdruck bei %Lnicht konstante Iterationszahl bei einer %<unroll full%>-Schleifenicht herleitbares Templates %qT wird ohne Template-Argumente verwendetNicht-Standard Argument der Art INTEGER fÃ¼r intrinsisches Â»%sÂ« bei %LNicht-Delegitimiertes UNSPEC %s (%d) am Variablenort gefundennicht gelÃ¶schte Funktion %q+D Ã¼bersteuert gelÃ¶schte Funktionnichtleeres Stringliteral erwartetNicht-Gleitkomma-Argument in Aufruf von Funktion %qENicht-Gleitkomma-Argumente in Aufruf von Funktion %qENicht-Funktion %qD als implizites Template deklariertAlias-Definitionen werden in dieser Konfiguration nur fÃ¼r Funktionen unterstÃ¼tztNicht-Funktion in GIMPLE-AufrufNicht ganzzahliges Argument 1 fÃ¼r %qsNicht-Ganzzahl-Argument 3 in Aufruf von Funktion %qENicht-Ganzzahlargument %d fÃ¼r Speichermodell von %qENicht-Ganzzahl-Operand mit Operandencode %<z%> verwendetswitch-Anweisung ohne eingebauten Typnichtlokale Gotos in Funktionen mit SME-Zustandnicht-lokaler Lambdaausdruck kann keinen Â»capture-defaultÂ« habennicht-lokale %<__thread%>-Variable %qD hat einen nicht-trivialen Destruktornicht-lokale %<__thread%>-Variable %qD erfordert dynamische InitialisierungInterner Fehler: non-loop with header %d not marked for removalNicht-L-Wert-Array in bedingtem AusdruckNicht-Element %qs kann nicht als %<mutable%> deklariert seinNicht-Elementfunktion %qD kann nicht CV-Qualifizierer habenNicht-Elementfunktion %qD kann keinen ref-Qualifizierer habeneine Using-Deklaration, die nicht-Member ist, benennt den Konstruktor von %qTNichtelement-Templatedeklaration von %qDEingabe von Nicht-Speicher %d muss im Speicher bleibenNicht-Speicher-Ausgabe %d muss im Speicher bleibennicht geschachtelte Funktion mit variabel modifiziertem TypenNicht-Objekt-Element %qs kann nicht als %<mutable%> deklariert seinNicht-Objective-C-Typ %qT kann nicht aufgefangen werdenNicht-Parameter %qs kann kein Parameterpack seinnicht-rechteckiges %<tile%>Nichtrechteckige Schleifenschachtelung mit nichtkonstanter Schrittweite fÃ¼r %qsNichtrechteckige Schleifen aus generierten Schleifen werden nicht unterstÃ¼tztNicht-Register als LHS von binÃ¤rer OperationNicht-Register als LHS von ternÃ¤rer OperationNicht-Register als LHS von unÃ¤rer Operationnicht-skalares %qsnicht-skalarer Typnichtskalare Variable %qD in bedingter %<lastprivate%>-KlauselNicht-Standard-Suffix an GleitkommakonstanteNicht-Standard-Suffix an Gleitkommakonstante vor C23nicht-statisches const-Element %q#D in Klasse ohne einen Konstruktornicht-statisches konstantes Element %q#D, Standard-Zuweisungsoperator kann nicht verwendet werdennicht-statisches Datenelement %q+D in einer Union darf keinen Referenztypen %qT habennicht-statisches Datenelement %qE als %qs deklariertnicht-statisches Datenelement mit Platzhalter %qT deklariertnicht-statische Initialisierungen fÃ¼r Datenelemente nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarNicht-statische Deklaration von %q+D folgt statischer Deklarationnicht-statische Initialisierung eines flexiblen Arrayelementsnicht-statische Referenz %q#D in Klasse ohne Konstruktornicht-statisches Referenzelement %q#D, Standard-Zuweisungsoperator kann nicht verwendet werdenNicht-Template %qD als Template verwendetNicht-Template-Typ %qT als Template verwendetNicht-Thread-lokale Deklaration von %q#D folgt Thread-lokaler DeklarationNicht-Thread-lokale Deklaration von %q+D folgt Thread-lokaler Deklarationnicht-Top-Level %qsnicht-triviale Umwandlung in %qsnicht-triviale Umwandlung in unÃ¤rer Operationnicht-trivial markierte Initialisierungen nicht unterstÃ¼tztNichttyp-Teilspezialisierung %qE ist nicht erlaubtNichttypen-Templateparameter von Klassentyp sind nur mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarNichttypen-Templateparameter von hergeleitetem Klassentyp sind erst ab %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarNicht-Variable %qD in Deklaration mit mehr als einem Deklarator mit Platzhaltertyp%qs mit Elementen ist kein VektorNicht-Vektoroperanden in Vektorvergleichnichtkonstanter Arrayindex in InitialisierungInterner Fehler: nonempty exits list of loop %d, but exits are not recordedInterner Fehler: nonlocal label %qD is not first in a sequence of labels in bb %ddie linke Seite der nichttemporalen Speicheroperation kann kein Gimple-Register seinArrayindex %qE ist ungleich 0 und wird mit Array %qD vom Typ %qT mit unbekannten Grenzen verwendetArrayindex %qE ist ungleich 0 und wird mit Array vom Typ %qT mit unbekannten Grenzen verwendetNormalisierung kann nicht gleichzeitig mit Skalierung aktiv sein
! Datei fÃ¤ngt nicht mit dem magischen \x7FELF anunerlaubte Typkombination in %qsnicht mit sysroot-Header-Suffix konfiguriertbei der RÃ¼ckkehr von %qD wird das Kopieren nicht eingespartbei der RÃ¼ckkehr in %qD wird das Kopieren nicht eingespartzu wenige DO-Schleifen fÃ¼r Â»%s !$ACC LOOPÂ« bei %Lzu wenige DO-Schleifen fÃ¼r zusammengefallenes %s (Stufe %d) bei %LNicht genug ArgumenteNicht genug Argumente fÃ¼r RÃ¼ckgabenicht genÃ¼gend geschachtelte Schleifenzu wenig TypinformationenZu wenige variable Argumente, um zu einem WÃ¤chter zu passenbinÃ¤rer Operator erwartet denselben Typ fÃ¼r beide Operanden%<#define %E%> wird nicht exportiert, da es ein SchlÃ¼sselwort istPatchbereich wird nicht angelegt, da NOPs nicht unterstÃ¼tzt werdendie Option %<-fpic%> nicht fÃ¼r die v3m-Toolchain unterstÃ¼tzenModul %qs wird aufgrund von Fehlern in TemplaterÃ¼mpfen nicht geschriebenHinweisAnmerkung: Zielzeiger ist NULLNULL-FormatzeichenketteNull-ZeigerDereferenzierung eines NullzeigersNullbarkeits-Angabe %qE kann nicht auf Zeigertyp %qT angewendet werden, da dieser mehrere Ebenen von Zeigern hatNullbarkeits-Angabe %qE ist nur auf Zeigertypen anwendbar, nicht auf %qTZahl muss 0 oder 1 seinAnzahl der Argumente passt nicht zum eingebauten PrototypenAnzahl der Argumente passt nicht zum PrototypenInterner Fehler: number of bb notes in insn chain (%d) != n_basic_blocks (%d)Komponentenanzahl des Vektors ist keine ZweierpotenzAnzahl der ZÃ¤hler in den Profilingdaten fÃ¼r Funktion %qD passt nicht zu deren Profilingdaten (ZÃ¤hler %qs, %i erwartet aber %i gefunden)Anzahl der Listenelemente in der %<interop%>-Klausel (%d) Ã¼bersteigt die Anzahl der %<append_args%>-Elemente (%d) fÃ¼r den %<declare variant%>-Kandidaten %qDAnzahl der Ergebnisse passt nicht zur Anzahl der WerteAnzahl der spekulativen Ziele %i stimmt nicht mit num_speculative_call_targets %i Ã¼bereinAnzahl der Variablen in %qs-Klausel mit %<sink%>-Modifizierer passt nicht zur Anzahl der IterationsvariablenKomponentenanzahl des Vektors %wu Ã¼bersteigt %dKomponentenanzahl des Vektors %wu ist keine Zweierpotenznumerisches Argument des Attributs %qE muss im Bereich von 0 bis 63 liegenobjc++-cpp-output ist veraltet; bitte stattdessen objective-c++-cpp-output verwendenobjc-cpp-output ist veraltet; bitte stattdessen objective-c-cpp-output verwendenObjekt %qE der GrÃ¶ÃŸe %sObjekt ist keine Methodebei Verwendung von %qE fehlt ObjektObjekt der GrÃ¶ÃŸe %s, alloziert durch %qEObjekt-Eigenschaft %qD hat kein Attribut %<assign%>, %<retain%> oder %<copy%>; es wird %<assign%> angenommenObjekttyp %qT passt nicht zum Destruktornamen ~%qTObjekt mit variabel geÃ¤ndertem Typ darf keine Bindung habenMethodendeklaration in Objective-C erwartetObjective-C++ Nachrichtenargument(e) erwartetObjective-C++-NachrichtenempfÃ¤nger erwartetObjective-C++ Methodendeklaration erwartetausgedient in Fortran 95veralteter FPA-Formatcode Â»%cÂ«veralteter Maverick-Formatcode Â»%cÂ«veraltete Option %<-I-%> verwendet, bitte stattdessen %<-iquote%> verwendenveraltete Verwendung einer bestimmten Initialisierung mit %<:%>veraltete Verwendung einer bestimmten Initialisierung ohne %<=%>von hier erhaltenodr-verwendete Inline-Variable %qD ist nicht definiertvon ModulOffload-Compiler %qs nicht gefundenOffload-Compiler %s nicht gefunden (erwÃ¤gen Sie %<-B%>)Auslagerungsdimension %d liegt auÃŸerhalb des WertebereichesOffset %qwi ist auÃŸerhalb der Grenzen der konstanten ZeichenketteOffset Ã¼berschreitet 16 BytesOffset von %qD fÃ¼r %<-std=c++14%> und hÃ¶her Ã¤ndert sich in %<-fabi-version=17%> (GCC 12)Offset von %qD ist ABI-unvertrÃ¤glich und kann sich in zukÃ¼nftigen GCC-Versionen Ã¤ndernOffset der Basisklasse %qT fÃ¼r %<-std=c++14%> und hÃ¶her Ã¤ndert sich in %<-fabi-version=17%> (GCC 12)Offset des gepackten Bitfeldes %qD hat sich in GCC 4.4 geÃ¤ndertalte Deklaration %q#DFunktionsdefinition im alten StilParameterdeklarationen alten Stils in Prototyp-Funktionsdeklarationdas Weglassen von %<,%> vor Varargs %<...%> ist ab C++26 veraltetausgelassener mittlerer Operand fÃ¼r Operator %<?:%> kann nicht verarbeitet werdenomp_cur_iteration bei %L erfordert %<-1%> als logischen Offsetein Feld ist ein Bitfeld, das andere jedoch nichteins der Argumente fÃ¼r den Initialisierungsaufruf sollte %<&omp_priv%> seineins der Aufrufargumente fÃ¼r die Initialisierung sollte %<omp_priv%> oder %<&omp_priv%> seinein Typ muss konstruiert sein, der andere nichtnur %<distribute%>-, %<parallel%>- und %<loop%>-Regionen dÃ¼rfen innerhalb einer %<teams%>-Region streng geschachtelt seinnur die Schalter %<inbranch%> und %<notinbranch%> sind fÃ¼r das %<__simd__%>-Attribut erlaubtnur die Schalter %<inbranch%> und %<notinbranch%> sind fÃ¼r das %<simd%>-Attribut erlaubtnur %qT oder eine Nullzeigerkonstante kann nach %qT umgewandelt werdennur %u Name fÃ¼r strukturelle Bindung angegebennur %u Namen fÃ¼r strukturelle Bindung angegebennur 0.0 kann als Immediate geladen werdenfÃ¼r den Adressraum %<__regio_symbol%> wird nur der 32-Bit-Zugriff unterstÃ¼tztNur das DWARF-Debugformat ist fÃ¼r Interrupt-Service-Routinen unterstÃ¼tztnur Objective-C-Objekttypen kÃ¶nnen mit Protokoll qualifiziert werdenNur die Attribute %<fallthrough%> oder %<assume%> kÃ¶nnen auf eine leere Anweisung angewendet werdennur Konstruktoren nehmen Elementinitialisierungennur Deklarationen von Konstruktoren und Umwandlungsoperatoren kÃ¶nnen %<explicit%> seinsondern nur hier als %<friend%>nur einfacher RÃ¼ckgabetyp %<auto%> kann zu %<void%> hergeleitet werdennur der erste Parameter einer Memberfunktion kann als expliziter Objektparameter deklariert werdenin einer %<constexpr%>-Funktion in C++20 darf Inline-Assemblercode nur vorkommen, wenn er nicht im Auswertungspfad liegtNur uninitialisierte Variablen kÃ¶nnen in einem %<.bss%>-Abschnitt platziert werdenNur uninitialisierte Variablen kÃ¶nnen im %<.noinit%>-Bereich platziert werdennur die Werte 12 (4 kB) und 16 (64 kB) werden fÃ¼r die WÃ¤chtergrÃ¶ÃŸe unterstÃ¼tzt. Der angegebene Wert %d (%llu kB) liegt auÃŸerhalb des gÃ¼ltigen Bereichsin dieser Konfiguration werden nur schwache Aliase unterstÃ¼tztIn Abschnitt %qs sind nur 0-Initialisierungen erlaubtopake Vektortypen kÃ¶nnen nicht initialisiert werdenopaque-enum-declaration ist hierintransparente Enum-Spezifikation muss einfachen Bezeichner verwendenintransparente Enum-Spezifikation ohne NamenÂ»%sÂ« kann nicht geÃ¶ffnet werden: %s/dev/zero kann nicht geÃ¶ffnet werden: %mLTRANS-Ausgabeliste Â»%sÂ« kann nicht geÃ¶ffnet werden: %mAbhÃ¤ngigkeitsdatei Â»%sÂ« kann nicht geÃ¶ffnet werden: %mAusgabedatei %qs wird geÃ¶ffnet: %sAusgabedatei Â»%sÂ« kann nicht geÃ¶ffnet werden: %mOperandencode %%xn ist fÃ¼r QImode ungÃ¼ltigOperand %d sollte eine vorzeichenlose 3-Bit-Konstante seinOperand %d sollte eine vorzeichenlose 6-Bit-Konstante seinOperand %d sollte eine vorzeichenlose 8-Bit-Konstante seinOperand 1 sollte eine vorzeichenlose 3-Bit-Konstante seinOperand 1 sollte ein vorzeichenloser 3-Bit-Wert sein (I0â€“I7)Operand 2 sollte ein gerader 3-Bit-Wert sein (subreg 0,2,4,6)Operand 2 sollte ein vorzeichenloser 3-Bit-Wert sein (I0â€“I7)Operand 2 sollte ein vorzeichenloser 3-Bit-Wert sein (subreg 0â€“7)Operand 2 sollte ein vorzeichenloser 8-Bit-Wert seinOperand 3 sollte ein vorzeichenloser 3-Bit-Wert sein (I0â€“I7)Operand 3 sollte ein vorzeichenloser 8-Bit-Wert seinOperand 4 sollte ein vorzeichenloser 8-Bit-Wert sein (0â€“255)OperandeneinschrÃ¤nkung enthÃ¤lt falsch positioniertes %<+%> oder %<=%>Operandenbedingungen fÃ¼r %<asm%> unterscheiden sich in der Anzahl der AlternativenOperand ist kein Bedingungscode, ungÃ¼ltiger Operandencode Â»%cÂ«Operand ist kein Bedingungscode, ungÃ¼ltiger Operandencode Â»DÂ«Operand ist kein Bedingungscode, ungÃ¼ltiger Operandencode Â»YÂ«Operand ist keine bestimmte Ganzzahl, ungÃ¼ltiger Operandencode Â»RÂ«Operand ist keine bestimmte Ganzzahl, ungÃ¼ltiger Operandencode Â»rÂ«Operand ist keine Ganzzahl, ungÃ¼ltiger Operandencode Â»KÂ«Operand ist keine Ganzzahl, ungÃ¼ltiger Operandencode Â»RÂ«Operand ist keine ausgleichbare Speicherreferenz, ungÃ¼ltiger Operandencode Â»HÂ«Operandennummer fehlt hinter %%-BuchstabeOperandennummer auÃŸerhalb des WertebereichesOperandennummer auÃŸerhalb des Wertebereiches im FormatOperandennummer fÃ¼r Format ohne Argumente angegebenOperandennummer mit unterdrÃ¼ckter Zuweisung angegebenOperand von %<?:%> wechselt das Vorzeichen von %qT nach %qT, aufgrund der Vorzeichenlosigkeit des anderen OperandenOperand des Faltungsausdrucks hat keine unexpandierten ParameterpackungenOperandentyp %qT ist inkompatibel mit Argument %d von %qEOperandentypen sind %qT und %qTOperanden fÃ¼r %<?:%> haben unterschiedliche Typen %qT und %qTdie Operanden fÃ¼r %<?:%> haben die Typen %qT und %qT, diese Typen haben einen ungeordneten KonvertierungsrangOperanden fÃ¼r %T/%t mÃ¼ssen reg + const_int sein:Operation nicht erlaubt auf Typ %<_Float16%> ohne Option %<-msse2%>Operation nicht erlaubt auf Typ %<__bf16%> ohne Option %<-msse2%>Operation nicht erlaubt auf Typ %<bfloat16_t%>Operation nicht erlaubt auf Typ %<mfloat8_t%>Operation auf %qE kÃ¶nnte undefiniert seines gibt Operationen nach dem nicht-endrekursiven AufrufOperationen auf mehreren Vektoren mÃ¼ssen mit %qs und nicht mit %qs angegeben werdenOperationen auf einzelnen Vektoren mÃ¼ssen mit %qs und nicht mit %qs angegeben werdenOperator %<delete []%> auf unvollstÃ¤ndigem Typ verwendetOperator %<delete%> auf unvollstÃ¤ndigem Typ verwendetOptimierungsattribut von %qD folgt auf die Definition, aber die Attribute passen nicht zusammenFehlzuordnung von OptimierungsstufenattributOptimierung kann Lese- und/oder Schreiboperationen auf Registervariablen entfernenunbegrenzte Wertparameter optimieren, indem sie per Referenz Ã¼bergeben werden, vorausgesetzt, die aufgerufene Prozedur verÃ¤ndert sie nicht.Option %<%s=%s%> ist fÃ¼r die CPU %qs nicht verfÃ¼gbardie Option %<-mdouble=32%> ist nur verfÃ¼gbar, wenn %<--with-double={32|32,64|64,32}%> konfiguriert istdie Option %<-mdouble=64%> ist nur verfÃ¼gbar, wenn %<--with-double={64|64,32|32,64}%> konfiguriert istdie Option %<-mirq-ctrl-saved%> ist nur fÃ¼r ARC-v2-Prozessoren gÃ¼ltigdie Option %<-mlong-double=32%> ist nur verfÃ¼gbar, wenn %<--with-long-double={32|32,64|64,32}%>, oder %<--with-long-double=double%> zusammen mit %<--with-double={32|32,64|64,32}%> konfiguriert istdie Option %<-mlong-double=64%> ist nur verfÃ¼gbar, wenn %<--with-long-double={64|64,32|32,64}%>, oder %<--with-long-double=double%> zusammen mit %<--with-double={64|64,32|32,64}%> konfiguriert istdie Option %<-mrgf-banked-regs%> ist nur fÃ¼r ARC-v2-Prozessoren gÃ¼ltigoption %<-mstructure-size-boundary%> ist veraltetOption %qs wird ignoriert, der Vorgabewert %qs wird fÃ¼r die CPU %qs verwendetOption %qs ist fÃ¼r die CPU %qs nicht verfÃ¼gbarOption %qs ist gÃ¼ltig fÃ¼r %s, aber nicht fÃ¼r %sOption %qs erfordert %<-mlong-double-128%>Option %qs mit abweichenden Werten (%s, %s)Option Â»%sÂ« wird zusammen mit %<-fopenacc%> nicht unterstÃ¼tztOption %s nicht konsistent in allen LTO-Eingabedateien verwendetOption %s mit unterschiedlichen WertenOption fehlt hinter %qsoptionales Argumentoptionaler Klassenparameterder optionale zweite Parameter von %<va_start%> ist nicht das letzte benannte ArgumentOptionen oder Zielarchitekturen=Optionen fehlen hinter %qsInterner Fehler: optype_msgid overflow: %doder ersetzen Sie die Klammern durch geschweifte Klammern, um die Variable als Aggregat zu initialisierenoder ersetzen Sie die Klammern durch geschweifte Klammern, um die Variable mit einem einzelnen Wert zu initialisierenoder verwenden Sie %<auto%> fÃ¼r ein abgekÃ¼rztes Funktionstemplateoder nutzen Sie %<j%> statt %<i%> fÃ¼r das in GNU eingebaute SuffixArgument fÃ¼r %<ordered%> muss ein positiver, ganzzahliger Ausdruck seingeordneter Vergleich von Zeiger mit Ganzzahlnullgeordneter Vergleich von Zeiger mit der Zahl 0 (%qT und %qT)geordneter Vergleich von Zeiger mit Null-Zeigerordnet die Initialisierungen/Finalisierungen fÃ¼r scaffold-static, oder das Binden von Modulen fÃ¼r scaffold-dynamic erzwingenOrdinaltyp erwartetorigin points to a different parentdas ursprÃ¼ngliche %<default%> ist hierursprÃ¼ngliche Deklaration trat hier aufursprÃ¼ngliche Deklaration ist hierursprÃ¼ngliche Deklaration mit weniger VertrÃ¤gen ist hierursprÃ¼ngliche Definition trat hier aufursprÃ¼ngliche Definition ist hierOriginal ist nicht mit zstd komprimiertOriginalgrÃ¶ÃŸe unbekanntursprÃ¼ngliche Deklaration des Templates ist hierwurde ursprÃ¼nglich hier als %<const%> deklariertursprÃ¼nglich hier definiertursprÃ¼nglich indirekter Funktionsaufruf kommt nicht als Â»inlineÂ« in BetrachtursprÃ¼ngliche hier spezifiziertverwaistes %qs-Konstruktandere Fundstelle ist hierandere GrÃ¼ndesollte der virtuellen Methode %qD entsprechen, tut es aber nichtÃ¤uÃŸeres %<__transaction_cancel%> nicht innerhalb des Ã¤uÃŸeren %<__transaction_atomic%>Funktionsaufruf von %<__transaction_cancel%> nicht innerhalb von Ã¤uÃŸerer %<__transaction_atomic%>- oder %<transaction_may_cancel_outer%>-FunktionÃ¤uÃŸerer Block der Region %i ist falschdie Ã¤uÃŸere Iterationsvariable %qD hat einen Summandenausdruck %qE, der nicht ganzzahlig istdie Ã¤uÃŸere Iterationsvariable %qD hat einen Faktorausdruck %qE, der nicht ganzzahlig istdie Ã¤uÃŸere Iterationsvariable %qD, die im Bedingungsausdruck verwendet wird, ist von einem anderen Typen als %qTdie Ã¤uÃŸere Iterationsvariable %qD, die im Initialisierungsausdruck verwendet wird, ist von einem anderen Typen als %qTÃ¤uÃŸere Transaktion in %<transaction_may_cancel_outer%>-FunktionÃ¤uÃŸere Transaktion in %<transaction_safe%>-FunktionÃ¤uÃŸere Transaktion in TransaktionAusgabebedingung %d kann nicht zusammen mit %qs angegeben werdenAusgabebedingung %d muss ein einzelnes Register angebenAusgabeeinschrÃ¤nkung %qc fÃ¼r Operand %d steht nicht am AnfangAusgabedatei %s existiert bereits in Ordner %sName der Ausgabedatei darf nicht leer seinAusgabedatei doppelt angegebenAusgabezahl %d nicht direkt adressierbarAusgabeoperand %d muss %<&%>-Bedingung verwendenEinschrÃ¤nkung des Ausgabeoperanden erfordert %<=%>Ausgabeoperand ist in %<asm%> konstantAusgabeoperand auÃŸerhalb einer Funktion ist nicht konstantAusgaberegister mÃ¼ssen oben auf dem Stapel gruppiert werdenoutput_move_single:Ãœberlauf in ArraygrÃ¶ÃŸeÃœberlauf in Konstanten-AusdruckÃœberlauf in Umwandlung von %qT nach %qT Ã¤ndert den Wert von %qEÃœberlauf in Umwandlung von %qT nach %qT Ã¤ndert den Wert von %qE in %qEÃœberlauf in AufzÃ¤hlungswertenÃœberlauf in AufzÃ¤hlungswerten bei %qDÃœberlauf in impliziter KonstantenkonvertierungÃ¼bergelaufene Ausgabeargumentliste fÃ¼r %qsÃœberlauf in Umwandlung von %qT nach %qT Ã¤ndert den Wert von %qE in %qEÃ¼berlappender Initialisierer fÃ¼r das Feld %qT.%qDÃ¼berladene eingebaute Funktion %qs ist durch die eingebaute Funktion %qs umgesetztÃ¼berladener Funktionsname %qE in Klausel %qsÃ¼berladene Funktion ohne Typinformationen aus KontextÃ¼bersteuerte Funktion ist %q#DÃ¼bersteuerte Funktion ist %q#FÃ¼bersteuerte Funktion ist %qDÃœberschreibsteuerung (override/final) nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarDie standardmÃ¤ÃŸige 64-Bit-Definition von SYSTEM.COFF_T mit dem angegebenen Argument Ã¼bersteuernÃ¼bersteuert %qD, was als %<transaction_safe%> deklariert istgepacktes Expansionsargument fÃ¼r Parameter %qD ohne Â»packÂ« von Alias-Template %qDgepacktes Expansionsargument fÃ¼r Parameter %qD ohne Â»packÂ« von Konzept %qDPack-Expansion in using-Deklaration ist nur mit %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbarPackungsexpansion des Attributs %qEPackindex ist negativPackindex ist keine GanzzahlkonstantePackindex liegt auÃŸerhalb des Bereichs%<pack index%> fehlt%<pack-index%> ist erst mit %<-std=c++2c%> oder %<-std=gnu++2c%> verfÃ¼gbar%<pack init-capture%> ist erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbargepacktes Attribut fÃ¼hrt zu ineffizienter Ausrichtunggepacktes Attribut verursacht ineffiziente Ausrichtung fÃ¼r %q+Dgepacktes Attribut verursacht ineffiziente Ausrichtung fÃ¼r %qEgepacktes Attribut ist unnÃ¶tiggepacktes Attribut ist unnÃ¶tig fÃ¼r %q+Dgepacktes Attribut ist fÃ¼r %qE unnÃ¶tigGepacktes Layoutstruct wird bis zur Ausrichtungsgrenze mit %E Bytes aufgefÃ¼lltstruct wird aufgefÃ¼llt, um %q+D auszurichtenParameter %P hat unvollstÃ¤ndigen Typen %qTParameter %P von %qD hat unvollstÃ¤ndigen Typen %qTParameter %q+D als %<_Noreturn%> deklariertParameter %q+D als %<inline%> deklariertParameter %q+D hat nur eine VorwÃ¤rtsdeklarationParameter %qD als void deklariertParameter %qD hat unvollstÃ¤ndigen TypenParameter %qD bezieht Zeiger auf Feld mit unbekannter Grenze %qT einParameter %qD bezieht Referenz auf Feld mit unbekannter Grenze %qT einParameter %qD deklariert ungÃ¼ltigerweise MethodentypParameter %qD ist initialisiertParameter %qD darf in diesem Kontext nicht auftauchenParameter %qD gesetzt, jedoch nicht verwendetParameter %qP von %qD kÃ¶nnte Kandidat fÃ¼r Formatattribut seinParameter %u (%q+D) hat unvollstÃ¤ndigen TypenParameter %u hat unvollstÃ¤ndigen TypenParameterdeklaration vor Lambdadeklarationsangaben ist erst ab %<-std=c++23%> oder %<-std=gnu++23%> optionalParameterdeklaration vor einer Lambda-Exception-Angabe ist erst ab %<-std=c++23%> oder %<-std=gnu++23%> optionalParameterdeklaration vor einem abschlieÃŸenden RÃ¼ckgabetyp ist erst ab %<-std=c++23%> oder %<-std=gnu++23%> optionalParameterdeklaration vor einem Lambda-Transaktions-Qualifizierer ist erst ab %<-std=c++23%> oder %<-std=gnu++23%> optionalParameterdeklaration ist nicht namensunabhÃ¤ngigParameter als %<auto%> deklariertParameter darf nicht variabel modifizierten Typ %qT habenParameter kÃ¶nnte ein Kandidat fÃ¼r ein Formatattribut seinParametername fehlt in ParameterlisteParameternamen (ohne Typen) in FunktionsdeklarationParameterpack %<__bases%> ist nur in Templatedeklaration gÃ¼ltigParameterpack %q+D muss am Ende der Templateparameterliste seinParameterpack %qD kann kein Standardargument habenArgument %qE fÃ¼r Parameterpack muss am Ende der Templateargumentliste seinArgument %qT fÃ¼r Parameterpack muss am Ende der Templateargumentliste seinParameterpack kann kein Standardargument habenParameterbÃ¼ndel nicht mit %<...%> aufgelÃ¶st:die ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT hat sich %{mit GCC 12.1%} geÃ¤ndertdie ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT hat sich in GCC 13.1 geÃ¤ndertdie ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT hat sich in GCC 14.1 geÃ¤ndertdie ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT hat sich in GCC 7.1 geÃ¤ndertdie ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT hat sich in GCC 9.1 geÃ¤ndertdie ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT hat sich, sofern C++17 aktiviert ist, so geÃ¤ndert, dass es C++14 %{in GCC 10.1%} entsprichtdie ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT mit %<[[no_unique_address]]%>-Elementen hat sich %{in GCC 10.1%} geÃ¤ndertdie ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT mit Bitfeldern der Breite 0 hat sich in GCC 12 geÃ¤ndertParameter fÃ¼r eingebaute Funktion muss Zeichenkettenkonstante oder Literal seinParameter fÃ¼r eingebaute Funktion ist ungÃ¼ltig: %sParameter vom Typ %<va_list%> {auch %qs} werden zu Zeigertypen degradiert und benÃ¶tigen %<va_copy%>, um sie zurÃ¼ck in einen statischen Arraytyp umzuwandelnparametrisiertes abgeleitetes TypargumentEltern-Unterprogramm kann nicht geinlinet werdenKlammern um %qE kÃ¶nnen nicht verwendet werden, einen Zeiger auf Elementfunktion zu erzeugenKlammern mÃ¼ssen weggelassen werden, wenn die Argumentliste des %qE-Attributs leer istKlammern mÃ¼ssen weggelassen werden, wenn die Argumentenliste des Attributs leer istUm dieses zusammengesetzte Literal sind Klammern erforderlich, um Mehrdeutigkeit zu vermeidenKlammern waren mehrdeutig und wurden als Funktionsdeklaration angesehengeklammerte Initialisierung ist in OpenMP-%<for%>-Schleife nicht erlaubtgeklammerte Initialisierung in Array-Â»newÂ«Syntaxfehler in SELECT-RANK-Anweisung bei %CSyntaxfehler in Â»SELECT TYPEÂ«-Anweisung bei %CSyntaxfehler in TemplateargumentlisteInterner Fehler: parser_file_close called with NULL *fileInterner Fehler: parser_file_close for %s called with NULL file->var_decl_nodeInterner Fehler: parser_file_open called with NULL *fileInterner Fehler: parser_file_open for %s called with NULL var_decl_nodeInterner Fehler: parser_file_read called with NULL *fieldInterner Fehler: parser_file_read called with NULL *fileInterner Fehler: parser_file_read for %s called with NULL field->var_decl_nodeInterner Fehler: parser_file_read for %s called with NULL file->var_decl_nodeInterner Fehler: parser_if() was called with variable %s, which is not a FldConditional
! Interner Fehler: parser_logop() was called with variable %s on line %d, which is not a FldConditional
! Interner Fehler: parser_op() doesn't know how to evaluate "%s = %s %c %s"
! Interner Fehler: parser_relop() was called with variable %s, which is not a FldConditional
! Interner Fehler: parser_symbol_add( %s ) improperly has a non-null var_decl_node
! Interner Fehler: parser_symbol_add() was called with a NULL new_var
! Interner Fehler: parser_symbol_add(): %2.2d %s has null ancestorInterner Fehler: parser_symbol_add(): %s is its own ancestorpart-ref mit Zeigerattribut bei %L ist nicht das rechteste part-ref des data-stmt-objectsTeilspezialisierung %q+D spezialisiert keine Templateargumente und ist nicht eingeschrÃ¤nkter als das primÃ¤re Template; um das primÃ¤re Template zu definieren, entfernen Sie die TemplateargumentlisteTeilspezialisierung %q+D spezialisiert keine Templateargumente; um das primÃ¤re Template zu definieren, entfernen Sie die TemplateargumentlisteTeilspezialisierung %qD ist nicht spezialisierter alsTeilspezialisierung %qT als %<friend%> deklariertpartielle Spezialisierung ist nicht nÃ¤her spezialisiert als das ursprÃ¼ngliche Template, da es mehrere Parameter mit einer Â»packÂ«-Erweiterung ersetztteilweise Spezialisierung von %qD nach Instanziierung von %qDInterner Fehler: partition found but function partition flag not setDurchlauf %qs nicht gefunden, wird jedoch von neuem Durchlauf %qs referenziertpass %s does not support cloningpass %s needs a %<set_pass_param%> implementation to handle the extra argument in %<NEXT_PASS%>wird an den PrÃ¤prozessor weitergereicht, wenn -fcpp verwendet wird (interne Option)Ãœbergabe von %qT und %qT an Argumente %d und %d von %qE, das jedoch ein Paar von 64-Bit-Ganzzahlen erwartetDie Ãœbergabe von %qT als %<this%>-Argument streicht QualifiziererÃœbergabe von %qT wÃ¤hlt %qT statt %qTÃœbergabe von %qT anstelle des erwarteten %qT an Argument %d von %qE, nachdem %qT an Argument %d Ã¼bergeben wurdeÃœbergabe von %qT an Argument %d von %qE, aber %qT ist kein gÃ¼ltiger MVE-ElementtypÃœbergabe von %qT an Argument %d von %qE, aber %qT ist kein gÃ¼ltiger SVE-ElementtypÃœbergabe von %qT an Argument %d von %qE, aber Argument %d hatte den Typ %qTÃœbergabe von %qT an Argument %d von %qE, aber Argument %d war ein Tupel von %qTÃœbergabe von %qT an Argument %d von %qE, das jedoch in der %qT-Form keine Skalare akzeptiertÃœbergabe von %qT an Argument %d von %qE, das jedoch in der %qT-Form keine einzelnen Vektoren akzeptiertÃœbergabe von %qT an Argument %d von %qE, aber vorherige Argumente waren vom Typ %qTÃœbergabe von %qT an Argument %d von %qE, das jedoch keine Skalare dieser Kombination von Argumenten akzeptiertÃœbergabe von %qT an Argument %d von %qE, das jedoch %qT erwartetÃœbergabe von %qT an das Argument %d von %qE, das jedoch %qs erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch %qs oder %qs erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen 128-Bit-NEON-Vektortypen erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Ganzzahltyp von 32 oder 64 Bits erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Zeiger auf %qT erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Zeiger auf Elemente erwartet, die 32 oder 64 Bit groÃŸ sindÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Zeigertyp erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch ein skalares Element erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch eine Ganzzahl erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Zeiger auf einen skalaren Typen erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen einzelnen MVE-Vektor statt eines Tupels erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen einzelnen SVE-Vektor statt eines Tupels erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Vektor von Elementen erwartet, die %d Bit groÃŸ sindÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Vektor von Ganzzahlen mit %d Bits erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Vektor von Elementen der GrÃ¶ÃŸe 32 oder 64 Bit erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Vektor von Ganzzahlen mit GrÃ¶ÃŸe 32 oder 64 Bits erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Vektor von Ganzzahlen erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Vektor von vorzeichenbehafteten Ganzzahlen erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Vektor vorzeichenloser Ganzzahlen erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Vektor oder eine Zeiger-Basisadresse erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Vektor oder einen skalaren Typen erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch %qs oder %qs erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen MVE-Tupeltyp erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen MVE-Vektortyp erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen SVE-Typen erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen SVE-Typen statt eines skalaren Typen erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch erwartet, dass die Daten 16 Bits oder breiter sindÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Vektor von %d-Bit-Elementen erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch Vektoren von vorzeichenbehafteten Ganzzahlen erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch Vektoren von vorzeichenlosen Ganzzahlen erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch beim Laden von %qT einen Vektor von Ganzzahlen mit %d Bits erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch beim Speichern von %qT einen Vektor von Ganzzahlen mit %d Bits erwartetÃœbergabe von %wd an Argument %d von %qE, das jedoch entweder %wd, %wd, %wd oder %wd erwartetÃœbergabe von %wd an Argument %d von %qE, das jedoch einen gÃ¼ltigen %qT-Wert erwartetÃœbergabe von %wd an das Argument %d von %qE, das einen Wert im Bereich [%wd, %wd] erwartetÃœbergabe von %wd an das Argument %d von %qE, das einen Wert im Bereich [%wd, %wd] oder %wd erwartetÃœbergabe von %wd an das Argument %d von %qE, das ein Vielfaches von %wd im Bereich [%wd, %wd] erwartetÃœbergabe von %wd an Argument %d von %qE, das jedoch entweder %wd oder %wd erwartetÃœbergabe von %wd an Argument %d von %qE, das jedoch den Wert %wd erwartetÃœbergabe von NULL an Nicht-Zeiger-Argument %P von %qDÃœbergabe des Arguments %d von %qE als %<float%> statt %<double%> aufgrund des PrototypsÃœbergabe des Arguments %d von %qE als %qT statt %qT aufgrund des PrototypsÃœbergabe des Arguments %d von %qE als komplex statt Gleitkomma aufgrund des PrototypsÃœbergabe des Arguments %d von %qE als komplex statt Ganzzahl aufgrund des PrototypsÃœbergabe des Arguments %d von %qE als Gleitkomma statt komplex aufgrund des PrototypsÃœbergabe des Arguments %d von %qE als Gleitkomma statt Ganzzahl aufgrund des PrototypsÃœbergabe des Arguments %d von %qE als Ganzzahl statt komplex aufgrund des PrototypsÃœbergabe des Arguments %d von %qE als Ganzzahl statt Gleitkomma aufgrund des PrototypsÃœbergabe des Arguments %d von %qE als vorzeichenbehaftet aufgrund des PrototypsÃœbergabe des Arguments %d von %qE als vorzeichenlos aufgrund des PrototypsÃœbergabe des Arguments %d von %qE entfernt Kennzeichner %qs von Zeiger-ZieltypÃœbergabe des Arguments %d von %qE entfernt Kennzeichner %qv von Zeiger-Ziel-TypÃœbergabe des Arguments %d von %qE von anderem Objective-C-TypÃœbergabe des Arguments %d von %qE von inkompatiblem ZeigertypÃœbergabe des Arguments %d von %qE von inkompatibler Speicherreihenfolge fÃ¼r SkalareÃœbergabe des Arguments %d von %qE von Zeiger auf nicht eingeschlossenen AdressbereichÃœbergabe des Arguments %d von %qE erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger %q#vÃœbergabe des Arguments %d von %qE wandelt eine Zahl in einen Zeiger um, ohne explizite TypkonvertierungÃœbergabe des Arguments %d von %qE wandelt eine Zahl in einen Zeiger um, ohne explizite TypkonvertierungÃœbergabe des Arguments %d von %qE mit anderer Breite aufgrund des PrototypsArgument %i wird an den mit %qs qualifizierten Parameter Ã¼bergeben, dadurch wird es zum Alias fÃ¼r Argument %ZArgument %i wird an den mit %qs qualifizierten Parameter Ã¼bergeben, dadurch wird es zum Alias fÃ¼r die Argumente %ZArgumente werden an Auslassungspunkte des geerbten Konstruktors %qD Ã¼bergebenÃœbergabe von nicht Ã¼bereinstimmenden Ganzzahltypen %qT und %qT an die Argumente %d und %d von %qEÃœbergabe nicht Ã¼bereinstimmender Tupeltypen %qT und %qT an die Argumente %d und %d von %qEDas Ãœbergeben des nicht trivial-kopierbaren Typs %q#T Ã¼ber %<...%> ist Â»conditionally-supportedÂ« ([expr.call] 5.2.2/7)Ãœbergabe des einzelnen Vektors %qT an Argument %d von %qE, nachdem das Tupel %qT an Argument %d Ã¼bergeben wurdeÃœbergabe von zu groÃŸem Argument auf dem StapelÃœbergabe des Tupels %qT an Argument %d von %qE, nachdem der einzelne Vektor %qT an Argument %d Ã¼bergeben wurdepatchbarer Funktionseintrag %wu Ã¼berschreitet die GrÃ¶ÃŸe %wuPfadabdeckung entfÃ¤llt
  Pfad: %u von %zu Pfaden abgedeckt
! Pfade Ã¼berschreiten den Grenzwert, Pfadabdeckung wird aufgegebenPed. WarnungPed. Warnung: mÃ¶glicherweise fehlt %<#include <Koroutine>%>vielleicht hilft ein Zeilenumbruch nach %<import%> oder eine andere Kenntlichmachung, damit dies nicht mehr als Modul-Steuerzeile angesehen wirdvielleicht hilft ein Zeilenumbruch nach %qs oder eine andere Kenntlichmachung, damit dies nicht mehr als Modul-Steuerzeile angesehen wirdvielleicht brauchen Sie explizite Templateargumente im Â»nested-name-specifierÂ«Sie kÃ¶nnten ein explizites %<%T::%> hinzufÃ¼genPerm. FehlerPerm. Fehler: Platzhalter-BeschrÃ¤nkungen nicht erfÃ¼lltPlatzhaltertyp ist in diesem Kontext nicht erlaubtPlacement-New erzeugt ein Array von Objekten vom Typ %qT mit GrÃ¶ÃŸe %qwu in einer Region von Typ %qT mit GrÃ¶ÃŸe %qwiPlacement-New erzeugt ein Array von Objekten vom Typ %qT mit GrÃ¶ÃŸe %qwu in einer Region vom Typ %qT mit MaximalgrÃ¶ÃŸe %qwuPlacement-New erzeugt ein Objekt vom Typ %<%T [%wu]%> mit GrÃ¶ÃŸe %qwu in einer Region von Typ %qT mit GrÃ¶ÃŸe %qwiPlacement-New erzeugt ein Objekt vom Typ %<%T [%wu]%> mit GrÃ¶ÃŸe %qwu in einer Region vom Typ %qT mit MaximalgrÃ¶ÃŸe %qwuPlacement-New erzeugt ein Objekt vom Typ %qT mit GrÃ¶ÃŸe %qwu in einer Region von Typ %qT mit GrÃ¶ÃŸe %qwiPlacement-New erzeugt ein Objekt vom Typ %qT mit GrÃ¶ÃŸe %qwu in einer Region vom Typ %qT mit MaximalgrÃ¶ÃŸe %qwubitte geben Sie den CPU-Namen explizit an. GÃ¼ltige CPU-Namen sind: %sPlugin %qs wurde mit anderen Pfaden angegeben: %qs und %qsPlugin %s ist nicht unter einer GPL-kompatiblen Lizenz lizenziert
! %sPlugin %s ist nicht unter einer GPL-kompatiblen Lizenz lizenziert: %sPlugin %s hat eine Null-Callback-Funktion fÃ¼r Ereignis %s registriertPlugin %s sollte vor %<-fplugin-arg-%s%> in der Kommandozeile angegeben werdenPlugin kann keinen fehlenden Durchlauf registrierenPlugin kann keinen unbenannten Durchlauf registrierenPlugin kann keinen Durchlauf %qs ohne Referenzdurchlaufnamen registrierenPlugin-UnterstÃ¼tzung ist ausgeschaltet; mit %<--enable-plugin%> konfigurierender Typ, auf den gezeigt wird, ist hier deklariertZeigerZeiger %qE wird mÃ¶glicherweise nach %qD verwendetZeiger %qE wird nach %qD verwendetZeigerargumentZeigerarithmetik fÃ¼r Objekte mit Garbage-Collection ist nicht erlaubtZeigerzuweisungZeiger wird mÃ¶glicherweise nach %qD verwendetdas Zeigerelement %q+D wurde hier deklariertZeiger auf Typen %<void *%> in Arithmetik verwendetZeiger des Typs %<void *%> in Subtraktion verwendetZeigeroffset von Symbol kÃ¶nnte falsch seinZeiger oder allozierbares ResultatZeiger-Zieltypen sind in C++ inkompatibelZeiger auf Adressraum %qs muss in %qT konstant seinZeiger auf Adressraum %qs muss in %s %q+D konstant seinZeigerziele in Zuweisung von %qT nach %qT unterscheiden sich im VorzeichenbesitzZeigerziele in Initialisierung von %qT nach %qT unterscheiden sich im VorzeichenbesitzZeigerziele bei Ãœbergabe des Arguments %d von %qE unterscheiden sich im VorzeichenbesitzZeigerziele in RÃ¼ckgabe von %qT aus einer Funktion mit RÃ¼ckgabetyp %qT unterscheiden sich im VorzeichenbesitzZeiger auf %qD ist kein KonstantenausdruckZeiger auf Funktion in Arithmetik verwendetZeiger auf eine Funktion in Subtraktion verwendetZeiger auf Array verliert durch den Bedingungsausdruck QualifiziererZeiger auf Array verliert durch den Bedingungsausdruck Qualifizierer, in ISO C vor C23Zeiger auf Datenmembertyp %qT kann nur mit einem Argument aufgerufen werdenZeiger auf Schnittstellentyp hat keine MethodenUmwandlung in Zeiger auf Element Ã¼ber virtuelle Basis %qTZeiger auf Memberfunktionstyp %qT muss mit mindestens einem Argument aufgerufen werdenZeiger auf Elementtyp %qT mit Objekttyp %qT inkompatibelZeigertyp passt nicht in bedingtem AusdruckZeiger wird nach %qD verwendetZeigerwert verwendet, wo Â»complexÂ« erwartet wurdeZeigerwert verwendet, wo Gleitkommawert erwartet wurdeZeiger auf Elementfunktion %qE kann nicht ohne Objekt aufgerufen werden; verwenden Sie beispielsweise %<.*%> oder %<->*%>Pointer-to-Member-Mapping %qE wird nicht unterstÃ¼tztTyp fÃ¼r Zeiger auf Elementfunktion %qT braucht einen lvalueZeiger-auf-Element-Funktions-Typ %qT braucht vor C++20 einen lvalueTyp fÃ¼r Zeiger auf Elementfunktion %qT braucht einen rvalueZeiger-/Ganzzahltyp passt nicht in bedingtem AusdruckZeiger sind nicht als case-Werte zugelassenZeiger auf den Adressraum %<__regio_symbol%> sind verbotenZeiger auf disjunkte AdressrÃ¤ume in bedingtem Ausdruck verwendetpolymorphes ArgumentPosition plus GrÃ¶ÃŸe Ã¼berschreitet die GrÃ¶ÃŸe des referenzierten Objekts in %qslageunabhÃ¤ngiger Code erfordert %qspositionelle Initialisierung eines Feldes in %<struct%>, die mit dem %<designated_init%>-Attribut deklariert wurdePositive Breite benÃ¶tigt bei %LmÃ¶gliche Behebung: mit %qs dereferenzierenmÃ¶gliche Behebung: die Adresse mit %qs bestimmenmÃ¶gliches Problem bei Aufruf von %<operator delete%> erkanntmÃ¶gliches Problem bei Aufruf von %<operator delete []%> erkanntmÃ¶glicherweise baumelnde Referenz auf temporÃ¤res ObjektPost-Increment-Adresse ist kein Registerpost-module-declarations mÃ¼ssen zusammenhÃ¤ngend sein%<post-module-declaration%>-Importe dÃ¼rfen nicht aus Header-Einbindung stammen%<post-module-declaration%>-Importe dÃ¼rfen nicht %<include-translated%> seinNachbedingungen kÃ¶nnen keine Anweisungen seinSuffix-%qD muss %<int%> als sein Argument nehmenSuffix-%qD muss %<int%> als sein zweites Argument nehmenSuffix-%qD sollte %qT zurÃ¼ckgebenMÃ¶gliche Dereferenzierung eines Nullzeigerspower9-Zieloption ist mit %<%s=<xxx>%> fÃ¼r <xxx> kleiner als power9 inkompatibelPragma oder Attribut %<target("%s")%> akzeptiert keine ArgumentePragma oder Attribut %<target("%s")%> erlaubt keine negierte FormPragma oder Attribut %<target("%s")%> ist nicht gÃ¼ltigPragma oder Attribut %<target("%s=%s")%> ist nicht gÃ¼ltigpragma(%s) ist nicht implementiertPre-Decrement-Adresse ist kein RegisterPre-Increment-Adresse ist kein RegisterGenauigkeitGenauigkeit im printf-FormatVorbedingungen kÃ¶nnen keine Anweisungen seinvordeklarierter arithmetischer Typ %qT in %<#pragma omp declare reduction%>vordefinierter arithmetischer Typ in %<#pragma omp declare reduction%>bedingter Thumb-Befehlbedingter Befehl in bedingter SequenzPrÃ¤fix-%qD sollte %qT zurÃ¼ckgebenPrÃ¤fix-Attribute vor %<@%D%> werden ignoriertPrÃ¤fixattribute werden fÃ¼r Implementierungen ignoriertPrÃ¤fixattribute werden fÃ¼r Methoden ignoriert<source_filter> vor der Kompilierung vorverarbeitenInterner Fehler: prev_bb of %d should be %d, not %dvorheriges %<#pragma omp declare reduction%>vorherige Deklaration von %<pragma omp declare reduction%>vorheriger Vertrag hiervorherige Deklarationvorherige Deklaration von %q#Dvorherige Deklaration %qDvorherige Deklaration %qD verwendete %d Template-Parametervorherige Deklaration %qD verwendete %d Template-Parameterbisherige Deklaration als %q#Dvorherige Deklaration hiervorherige Deklaration von %<%c%E%>vorherige Deklaration von %<%c%E%> als %<@optional%>vorherige Deklaration von %<%c%E%> als %<@required%>vorherige Deklaration von %<%c%s%>vorherige Deklaration von %q#Dvorherige Deklaration von %q+Dvorherige Deklaration von %qD vom Typ %qTvorherige Deklaration von %qDvorherige Deklaration von %qD war hiervorherige Deklaration von %qEbisherige Deklaration mit %qL-Bindungvorherige Definition hiervorherige Definition von %q#Tvorherige Definition von %q+D vom Typ %qTvorherige Definition von %qD war hiervorherige implizite Deklaration von %q+D vom Typ %qTvorherige Sprungmarkevorherige Mangelung von %q#Dvorherige Nicht-Prototyp-Definition hiervorherige Angabebisherige Spezifikation in %q+#D hiervorher als %s deklariertwar vorher als %s mit %u unspezifizierten Variablengrenze deklariertwar vorher als %s mit %u unspezifizierten Variablengrenzen deklariertwar vorher als %s mit %u Variablengrenze deklariertwar vorher als %s mit %u Variablengrenzen deklariertwar vorher als %s deklariert, mit Grenze %qswar vorher als %s deklariert, mit Grenzargument %Ewar vorher als Zeiger %s deklariertwar vorher als Array variabler LÃ¤nge %s deklariertwar vorher als Array %s deklariertwar vorher als gewÃ¶hnliches Array %s deklariertvorher hier deklariertvorher hier ohne Export deklariertvorher im globalen Modul deklariertvorher in Modul %qs deklariertvorher hier definiertvorher hier als %s definiertBereits hier verwendetprimÃ¤res Template %qDursprÃ¼ngliches Template hierprivates Element %q#D in anonymer Unionprivate-module-fragment%<private-module-fragment%> ist nur im ZustÃ¤ndigkeitsbereich eines Modulinterfaces oder einer Partition zulÃ¤ssigWahrscheinlichkeit %qE liegt auÃŸerhalb des Bereichs [0.0, 1.0]Wahrscheinlichkeit %qE muss eine konstanter Gleitkommaausdruck seinInterner Fehler: probability of edge %d->%d not initializedInterner Fehler: probability of edge from entry block not initializedwahrscheinlich fehlt davor ein Komma oder ein OperatorProblem beim Erstellen des Zielabbilds fÃ¼r %sProdukt %<%E * %E%> der Argumente %i und %i Ã¼berschreitet %<SIZE_MAX%>Produkt %<%E * %E%> der Argumente %i und %i Ã¼berschreitet maximale ObjektgrÃ¶ÃŸe %EProfildaten fÃ¼r Funktion %u sind beschÃ¤digtProfil fÃ¼r Funktion %qD nicht in Profilingdaten gefundenProfilerunterstÃ¼tzung fÃ¼r VxWorksProfiling von %<-mcmodel=large%> wird mit PIC nicht unterstÃ¼tztProfiling ist fÃ¼r dieses Ziel noch nicht implementiertProfiling wird mit Â»-mgÂ« nicht unterstÃ¼tztProgramme: %s
  weitergegebenes Argument %qD passt nicht zu eingebautem Prototypenweitergegebenes Argument %qD passt nicht zum Prototypendas befÃ¶rderte (promoted) bitweise Komplement eines vorzeichenlosen Wertes ist immer ungleich Null, da die hÃ¶chstwertigen Bits 1 sindEigenschaften fÃ¼r %<simd%>-Selektor dÃ¼rfen nicht in %<metadirective%> angegeben werdenEigenschaften mÃ¼ssen benannt seinin einem %<metadirective%>-Kontext-Selektor dÃ¼rfen Eigenschaften nicht fÃ¼r den %<simd%>-Selektor angegeben werdenEigenschaft %qs ist bereits in %<@dynamic%> festgelegtEigenschaft %qs ist bereits in %<@synthesize%> festgelegtEigenschaft %qs verwendet Instanzvariable %qs unvertrÃ¤glichen TypsEigenschaft %qs verwendet dieselbe Instanzvariable wie die Eigenschaft %qsEigenschaft kann kein Bitfeld seinEigenschaft kann kein Array seinEigenschaftsdeklaration nicht im Kontext von %<@interface%>, %<@protocol%> oder %<category%>Eigenschaft bei %C muss die Nummer eines konformen GerÃ¤ts seinEigenschaft bei %L muss ein konstanter ganzzahliger Ausdruck seinEigenschaft bei %L muss ein konstanter logischer Ausdruck seinEigenschaft bei %L muss ein logischer Ausdruck seinEigenschaft bei %L muss ein ganzzahliger Ausdruck seinEigenschaft muss ein konstanter ganzzahliger Ausdruck seinEigenschaft muss ein konstanter ganzzahliger Ausdruck oder ein Zeichenkettenliteral seinEigenschaft muss ein ganzzahliger Ausdruck seingeschÃ¼tztes Element %q#D in anonymer UniongeschÃ¼tzte Sichtbarkeitsattribute werden in dieser Konfiguration nicht unterstÃ¼tzt; ignoriertProtokoll %qE hat ringfÃ¶rmige AbhÃ¤ngigkeitProtokoll %qE ist veraltetProtokoll %qE ist nicht verfÃ¼gbarProtokoll-Attribute sind in Objective-C 1.0 nicht verfÃ¼gbarPrototyp-DeklarationPrototyp fÃ¼r %q+D deklariert Argument %d mit inkompatiblem TypenPrototyp fÃ¼r %q+D deklariert weniger Argumente als vorherige Definition im alten StilPrototyp fÃ¼r %q+D deklariert mehr Argumente als vorherige Definition im alten StilPrototyp fÃ¼r %q+D folgt einer Nicht-Prototyp-DefinitionPrototyp fÃ¼r Â»%sÂ« hat Pflichtoperanden hinter optionalen OperandenPrototyp fÃ¼r %q#D angegebenfÃ¼r %qD bereitgestelltPseudo-Destruktor wird nicht aufgerufenpure virtuelle %q#D aus Konstruktor heraus aufgerufenpure virtuelle %q#D aus Destruktor heraus aufgerufenpure virtuelle %q#D aus nichtstatischem Datenelement-Initialisierer heraus aufgerufenreiner Spezifizierer bei Funktionsdefinitionq/Q-Modifizierer fÃ¼r Symbolreferenzen ungÃ¼ltigÃœberprÃ¼fung fÃ¼r qsort-Vergleichsfunktion fehlgeschlagenVergleichsfunktion fÃ¼r qsort liefert nicht-negatives Ergebnis fÃ¼r sortierte Ausgabe: %dVergleichsfunktion fÃ¼r qsort ist nicht antisymmetrisch: %d, %dVergleichsfunktion fÃ¼r qsort ist nicht transitiv: %d, %d, %dqualifizierter Name benennt keine Klassequalifizierter Typ %qT passt nicht zum Destruktornamen ~%qTqualified-id in DeklarationQualifizierer sind bei Konstruktordeklarationen nicht erlaubtQualifizierer sind bei Deklaration von %<operator %T%> nicht erlaubtQualifizierer sind bei Deklaration von Herleitungshinweis nicht erlaubtQualifizierer sind bei Destruktordeklarationen nicht erlaubtqualifizierender Typ %qT passt nicht zum Destruktornamen ~%qT%qs innerhalb von AnfÃ¼hrungszeichen im Format%qs-Direktive innerhalb von AnfÃ¼hrungszeichen im Format; verwenden Sie stattdessen %qsr0 muss als aufrufzerstÃ¶rtes Register verfÃ¼gbar seinBereichsklausel muss vom Typ Array, Scheibe, Zeichenkette, Map oder Kanal seinWertebereichsausdrÃ¼cke in switch-Anweisungen sind nicht standardkonformBereichsgrenzen haben nicht denselben Typbereichsbasierter %<for%>-Ausdruck mit Typ %qT hat unvollstÃ¤ndigen TypBereichsbasierte %<for%>-Schleifen sind nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarBereichsbasierte %<for%>-Schleifen mit Initialisierer sind erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarRang + Korang von %qs Ã¼bersteigt %d bei %Croher Literaloperator %q#D steht mit literalem Operatortemplate in Konfliktrdynamic wird nicht unterstÃ¼tztReinitialisierung von %qs bei %LErreichbarkeitsdefinition %s ist hierLesen der Export-Daten gescheitertschreibgeschÃ¼tzte Stelle %qE als %<asm%>-Ausgabe verwendetschreibgeschÃ¼tztes Element %qD als %<asm%>-Ausgabe verwendetschreibgeschÃ¼tzter benannter RÃ¼ckgabewert %qD als %<asm%>-Ausgabe verwendetschreibgeschÃ¼tzter Parameter %qD als %<asm%>-Ausgabe verwendetschreibgeschÃ¼tzte Referenz %qD als %<asm%>-Ausgabe verwendetschreibgeschÃ¼tzte Variable %qD als %<asm%>-Ausgabe verwendetCode liest %E Byte aus einer Region der GrÃ¶ÃŸe %ECode liest %E Bytes aus einer Region der GrÃ¶ÃŸe %ECode liest %E oder mehr Bytes aus einer Region der GrÃ¶ÃŸe %ECMI %qs wird gelesenCode liest zwischen %E und %E Bytes aus einer Region der GrÃ¶ÃŸe %Ebeim Lesen der ddoc-Datei Â»%sÂ«: %mEingabedatei wird gelesenLesen Ã¼ber Null-Zeiger (Argument %d)Das Ãœbergeben des nicht trivial-kopierbaren Typs %q#T Ã¼ber %<...%> ist Â»conditionally-supportedÂ« ([expr.call] 5.2.2/7)das angegebene Suffix als Dateiname des Definitionsmoduls erkennendie angegebene Endung als Implementierungs- oder Modul-Dateiname erkennenNeuÃ¼bersetzung mit %<-fcompare-debug%>rekursiver Aufrufrekursive Auswertung des Standardarguments fÃ¼r %q#Drekursives Inliningrekursive Instanziierung von Vorgabeinitialisierer fÃ¼r Element %qDrekursives verzÃ¶gertes Ladenrekursive Referenz %qsrekursiver Typ %qT nicht definiertrekursiv erforderlich durch Ersetzung von %qS
  rekursiv erfordert von %q#D
  rekursiv erfordert von hier
! Redeklaration %qD unterscheidet sich in %qs von vorheriger DeklarationRedeklaration von %<enum %E%>Redeklaration von %<pragma omp declare reduction%>Redeklaration von %q#DRedeklaration von %q#D hat mÃ¶glicherweise keine Default-ArgumenteRedeklaration von %q#D mit unterschiedlichen EinschrÃ¤nkungenNeudeklaration von %q#D mit unterschiedlichen TemplateparameternRedeklaration von %q+D mit anderer Sichtbarkeit (alte Sichtbarkeit beibehalten)Redeklaration von %q+D ohne BindungRedeklaration von %qD fÃ¼gt ABI-Marke %qE hinzuRedeklaration von %qD mit unterschiedlichen EinschrÃ¤nkungenRedeklaration von %qT als Nicht-TemplateRedeklaration von %qs %<#pragma omp declare reduction%> fÃ¼r Typ %qTRedeklaration des eingebauten C++-Typs %qTRedeklaration der Objective-C-Klasse %qsRedeklaration der AufzÃ¤hlung %qsRedeklaration von AufzÃ¤hlung %q+DRedeklaration des Â»friendÂ« %q#D kann keine Standardtemplateargumente habenRedeklaration der Eigenschaft %qDhier erneut deklarierthier als %q#D redeklariertmit %d Template-Parameter redeklariertmit %d Template-Parametern redeklariertNeudeklaration von %qD in globalem Modul widerspricht dem ImportNeudeklaration von %qD in Modul %qs widerspricht dem Importredefinierte Â»extern inlineÂ«-Funktionen kommen nicht als Â»inlineÂ« in BetrachtNeudefinition von %<CTABLE_ENTRY %wd%>Redefinition von %<struct %E%>Redefinition von %<union %E%>Redefinition von %q#DRedefinition von %q#TRedefinition von %q+DNeudefinition des Standardarguments fÃ¼r %q+#DRedefinition des Parameters %q+DRedefinition von Struktur- oder Vereinigungstyp %qTRedefinition des Struktur- oder Vereinigungstyps %qT mit variabel modifiziertem TypRedefinition des typedef %q+DRedefinition des typedef %q+D mit anderem TypRedefinition des typedef %q+D mit variabel modifiziertem Typredundanter KlassenschlÃ¼ssel %qs in Verweis auf %q#Tredundanter AufzÃ¤hlungsschlÃ¼ssel %<enum%s%> in Bezug auf %q#Tredundantes Verschieben in Initialisierungredundantes Verschieben in RÃ¼ckgabeanweisungredundante Redeklaration von %<constexpr%>static-Datenmember %qDRedundante Redeklaration von %q+Dredundante Redeklaration von %qD im selben GÃ¼ltigkeitsbereichref-Qualifizierer sind nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbar%<dynamic_cast%> auf Referenz fehlgeschlagenReferenz %qD wird mit sich selbst initialisiertdie Referenz %qD ist noch nicht an einen Wert gebunden, wenn sie hier verwendet wirdReferenz %qs kann nicht als %<mutable%> deklariert seinVerweis hat sowohl stmt als auch lto_stmt_uid gesetztReferenz auf %<%T::%D%> ist mehrdeutigReferenz auf %qD ist mehrdeutigReferenz auf %qD ist kein KonstantenausdruckInterner Fehler: reference to dead statementVerweis auf Funktionsparameter im dynamischen Selektorausdruck %<declare variant%>Verweis auf das Label %qD, das innerhalb des Attributausdrucks %<assume%> definiert ist, von auÃŸerhalb des AttributsReferenz auf lokale Variable %qD zurÃ¼ckgegebenReferenztyp %qT in %<#pragma omp declare reduction%>das referenzierte Argument wird hier deklariertdas referenzierte Symbol wird hier deklariertdas verweisende Argument %u vom Typ %qTRegion enthÃ¤lt mit %s partitionierten Code, ist aber nicht mit %s partitioniertRegion ist mit %s partitioniert, enthÃ¤lt aber keinen mit %s partitionierten CodeRegion von lp %i ist falschRegistername %qs ist im Adressraum %<__regio_symbol%> unbekanntRegistername fÃ¼r Nicht-Registervariable %q+D angegebenfÃ¼r %q+D wurde kein Registername angegebenRegisternummer muss bereits zur Kompilierzeit eine Konstante sein. Probieren Sie eine stÃ¤rkere OptimierungsstufeRegister von %qD fÃ¼r mehrere globale Registervariablen verwendetRegister oder Speicherausdruck fÃ¼r Ausgabemodifizierer Â»MÂ« erwartetRegister oder Speicherausdruck fÃ¼r Ausgabemodifizierer Â»NÂ« erwartetfÃ¼r %q+D angegebenes Register ist ein GCC-internes ImplementierungsdetailfÃ¼r %q+D angegebenes Register eignet sich nicht fÃ¼r DatentypRegister-Variable %qD in verschachtelter Funktion verwendetAttribute regparam und thiscall sind nicht vertrÃ¤glichgeschachtelte Funktion mit regparm wird mit %<__builtin_eh_return%> nicht unterstÃ¼tztReimplementation der Klasse %qEentspannte Transaktion in %<transaction_safe%>-Funktionentspannte Transaktion in atomarer Transaktionentfernen Sie den Aufruf von %<std::move%>entfernen Sie die %<{ }%> um den Initialisiererentfernen Sie die Klammernentfernen Sie die Klammern, um stattdessen eine Variable mit ihrem Vorgabewert zu initialisierenentfernen Sie %qsentfernen Sie den KlassenschlÃ¼ssel oder ersetzen Sie ihn durch %qsInterner Fehler: removed loop %d in loop treeSpezifikation wird von %s nach %s umbenannt
  wiederholtes %<@%> vor Objective-C-Zeichenkettewiederholtes %s im Formatersetzen Sie die Klammern durch geschweifte Klammern, um eine Variable zu deklarierenKlassenschlÃ¼ssel durch %qs ersetzenAnfrage zur impliziten fÃ¼r Umwandlung von %qT in %qT ist in C++ nicht erlaubtAbfrage des Elementes %qD in %qE, das vom Nicht-Klassentyp %qT istAnforderung des Elements %qD in %qE, das vom Zeigertyp %qT ist (vielleicht war %<->%> gemeint?)Abfrage des Elementes %qD ist mehrdeutigAbfrage des Elementes %qD ist im Gitter der Mehrfachvererbung mehrdeutigAbfrage des Elementes %qE in Nicht-Klassentyp %qTAnfrage nach Element %qE in etwas, was keine Struktur oder Variante istangeforderte %<init_priority%> %i liegt auÃŸerhalb des Bereichs [0, %i]angeforderte %<init_priority%> %i ist fÃ¼r interne Verwendung reserviertangeforderte %<init_priority%> muss ganzzahlig und konstant seindas angeforderte %qE-Attribut ist kein kommaseparierter Paar von nichtnegativen ganzzahligen Konstanten, oder es ist zu groÃŸ (maximal %d)die angeforderte ABI erfordert %<-march%>, um die %qc-Erweiterung zu ermittelnverlangte Ausrichtung %qE Ã¼bersteigt den HÃ¶chstwert %uverlangte Ausrichtung %qE ist grÃ¶ÃŸer als die maximale DateigrÃ¶ÃŸe %uVerlangte Ausrichtung %qE ist keine positive Zweierpotenzangeforderte Ausrichtung fÃ¼r %q+D ist grÃ¶ÃŸer als die implementierte Ausrichtung von %wuverlangte Ausrichtung ist keine Konstanteverlangte Ausrichtung ist keine ZweierpotenzVerlangte Ausrichtung ist keine GanzzahlkonstanteVerlangte Ausrichtung ist zu groÃŸAngeforderte Position ist kleiner als NullAngeforderte Position ist keine GanzzahlkonstanteZeichenkette erfordert ID-Argumentrequire_atom(): bad atom type requirederforderlich durch Ersetzung von %qS
  erforderlich durch die BeschrÃ¤nkungen von %q#D
  erforderlich, um die BeschrÃ¤nkung zu erfÃ¼llen
--- 2356,2477 ----
  %s: Version Â»%.4sÂ«, aber Â»%.4sÂ« wird bevorzugt
  %s: Version Â»%.4sÂ«, aber Version Â»%.4sÂ« wird bevorzugt
  Spezifizierer %sbei %L ist in OPEN-Anweisung fÃ¼r unformatierte Ein-/Ausgabe nicht erlaubt%u Name fÃ¼r strukturelle Bindung angegeben%u Namen fÃ¼r strukturelle Bindung angegebenÂ«Â» Â«-KennzeichenÂ»!Â«-KennzeichenÂ»#Â«-KennzeichenÂ»%%%cÂ« ist kein gÃ¼ltiger OperandenprÃ¤fixÂ»%%&Â« ohne lokale dynamische TLS-Referenzen verwendetÂ»%%lÂ«-Operand ist keine MarkeDie Datei Â»%sÂ« wird bereits verarbeitet
! Â»%sÂ« ist keine gÃ¼ltige explizite konkrete SemantikÂ»%sÂ« muss %d Operanden haben (auÃŸer match_dups)Â»%sÂ« muss mindestens %d Operanden haben (auÃŸer match_dups)Â»%sÂ« darf hÃ¶chstens %d Operanden haben (auÃŸer match_dups)Â»%sÂ« erfordert die ISA-Option %sÂ»'Â«-KennzeichenÂ»(Â«-KennzeichenÂ»+Â«-KennzeichenÂ»-Â«-KennzeichenÂ»0Â«-KennzeichenÂ»BÂ«-Operand hat mehrere gesetzte BitsÂ»BÂ«-Operand ist nicht konstantÂ»EÂ«-ModifiziererÂ»IÂ«-KennzeichenÂ»OÂ«-ModifiziererÂ»^Â«-KennzeichenÂ»_Â«-KennzeichenÂ»aÂ«-KennzeichenÂ»hÂ«-Operand ist kein SImode-RegisterÂ»mÂ«-KennzeichenÂ»oÂ«-Operand ist nicht konstantÂ»qÂ«-Kennzeichen(C)(F202y)Fehlende oder ungÃ¼ltige Grenze in der ASSOCIATE-Rangzuordnung des assoziierten Namens %s bei %L(Obsolet nach 10.3.9)	MH_NOPREFIXBINDING festlegen, in einer ausfÃ¼hrbaren Datei.(Obsolet nach 10.4)	MH_NOMULTIDEFS festlegen, in einem Ã¼bergeordneten Framework.(Obsolet nach 10.4) -multiply_defined <Behandlung>	Bot einen Mechanismus zur Warnung vor Symbolen, die in mehreren Dylibs definiert sind.(Obsolet nach 10.4) -multiply_defined_unused <Behandlung>	Bot einen Mechanismus zur Warnung vor Symbolen, die in der aktuellen ausfÃ¼hrbaren Datei definiert sind, die auch in verknÃ¼pften Dylibs definiert sind.(Obsolet nach 10.4) Multi-Module werden seit macOS 10.4 zur Laufzeit ignoriert.(Veraltet und unberÃ¼cksichtigt von ld64)	Ob ld eine ausfÃ¼hrbare Datei erzeugen soll (nur von ld_classic umgesetzt).(Obsolet)	Dies ist der Vorgabewert.(Obsolet) -sectobjectsymbols <Segmentname> <Abschnittsname>	Das Festlegen eines lokalen Symbols am Anfang eines Abschnitts wird nicht mehr unterstÃ¼tzt.(Obsolet) -sectorder <Segmentname> <Abschnittsname> <Reihenfolgedatei>	Wurde ersetzt durch die allgemeinere Option Â»-order_fileÂ«.(Obsolet) Erlaubte das Binden mit Â»-flat_namespaceÂ« fortzusetzen, wenn ein gebundenes Bundle ein Symbol enthÃ¤lt, das ebenfalls aus der HauptausfÃ¼hrungsdatei exportiert wurde.(Obsolet) Aktuelle Binder entfernen diese Elemente nie, daher wird diese Option nicht benÃ¶tigt.(Obsolet) LD_PREBIND wird nicht mehr unterstÃ¼tzt.(Veraltet) Objektdateien mit LINKEDIT-Abschnitten werden nicht mehr unterstÃ¼tzt.(Obsolet) Dies ist der Vorgabewert.(Veraltet, ignoriert)	Alte UnterstÃ¼tzung, Ã¤hnlich wie Â»whyloadÂ«.(Obsolet, nur ld_classic) -sectcreate <Segmentname> <Abschnittsname> <Datei>	Hat erlaubt, einen Abschnitt aus einer Datei zu erstellen.(Obsolet, nur ld_classic) Â»-seg_addr_table_filename <Pfad>Â«.(ein Zeiger auf ein Element kann nur mit %<&%E%> erzeugt werden)(eine Initialisierung auÃŸerhalb der Klasse ist erforderlich)(anonymer Namensraum)(anonym)(wenn das nicht beabsichtigt war, stellen Sie sicher, dass das Funktions-Template bereits deklariert wurde, fÃ¼gen Sie %<<>%> hier hinter dem Funktionsnamen ein)(bei Verwendung von %<-fpermissive%>, %<-std=c++11%> oder %<-std=gnu++11%> wird G++ den Code akzeptieren)(mit %<-fpermissive%> wird G++ den Code akzeptieren, aber die Verwendung eines nicht deklarierten Namens ist veraltet)(bei Nachrichten ohne eine Ã¼bereinstimmende Methodensignatur wird angenommen, dass sie %<id%> zurÃ¼ckgeben und %<...%> als Argumente akzeptieren)(nahe der Initialisierung fÃ¼r %qs)(kein Argument)(vielleicht war %<typename %T::%E%> beabsichtigt)(vielleicht fehlt ein Semikolon hinter der Definition von %qT)(Es sollte also %qT statt %qT an %<va_arg%> Ã¼bergeben werden)(statische Destruktoren fÃ¼r %s)(statische Initialisierungen fÃ¼r %s)(die Meldung wird pro Quelldatei nur einmal angezeigt)
  ({anonym})*** WARNUNG *** es gibt aktive Plugins â€“ bitte Fehler nur dann melden, wenn diese auch ohne alle Plugins reproduziert werden kÃ¶nnen.
! *this--embed-dir=<Verz>	<Verz> an das Ende des #embed-Pfades anfÃ¼gen.--help=<Klasse>	Beschreibungen fÃ¼r eine bestimmte Klasse von Optionen anzeigen. <Klasse> ist ein oder mehrere Elemente aus optimizers, target, warnings, undocumented, param.--param inline-unit-growth: Limit erreicht--param large-function-growth: Limit erreicht--param large-stack-frame-growth: Limit erreicht--param max-inline-insns-auto: Limit erreicht--param max-inline-insns-single: Limit erreicht--param=aarch64-autovec-preference=[default|asimd-only|sve-only|prefer-asimd|prefer-sve]	Eine ISA-Auswahlstrategie fÃ¼r die Auto-Vektorisierung erzwingen.--param=aarch64-ldp-policy=[default|always|never|aligned] FeinkÃ¶rnige Richtlinie fÃ¼r Ladepaare.--param=aarch64-stp-policy=[default|always|never|aligned] FeinkÃ¶rnige Richtlinie fÃ¼r Speicherpaare.--param=gcn-preferred-vectorization-factor=[default,32,64]	Bevorzugter Vektorisierungsfaktor.--param=openacc-kernels=[decompose|parloops]	Modus, in dem OpenACC-Â»kernelsÂ«-Konstrukte verarbeitet werden.--param=openacc-privatization=[quiet|noisy]	Modus von OpenACC-Privatisierungsmeldungen festlegen.--param=parloops-schedule=[static|dynamic|guided|auto|runtime]	Art des OMP-Zeitplans fÃ¼r Schleifen, die durch parloops parallelisiert werden.--param=ranger-debug=[none|trace|gori|cache|tracegori|all]	Ausgabemodus fÃ¼r das Ranger-Debuggen festlegen.--param=threader-debug=[none|all]	Aktiviert das ausfÃ¼hrliche Dumping des Threader-LÃ¶sers.-A<Frage>=<Antwort>	Die <Antwort> auf eine <Frage> annehmen. Angabe von Â»-Â« vor <Frage> schaltet die <Antwort> auf <Frage> aus.-D<Makro>[=<Wert>]	Ein <Makro> mit <Wert> definieren. Wenn nur <Makro> angegeben wird, wird <Wert> auf 1 gesetzt.Â»-EÂ« oder Â»-xÂ« benÃ¶tigt, wenn die Eingabe von der Standardeingabe kommt-F <Verz>	<Verz> an das Ende des Haupt-Framework-Pfads fÃ¼r Includedateien anfÃ¼gen.-G<Anzahl>	Globale und statische Daten kleiner als <Anzahl> Bytes in einen gesonderten Abschnitt legen (bei manchen Zielarchitekturen).-Hd <Verz>	D-Schnittstellen-Dateien in Verzeichnis <Verz> schreiben.-Hf <Datei>	D-Interface in <Datei> schreiben.-I <Verz>	<Verz> an das Ende des Hauptpfades fÃ¼r Includedateien anfÃ¼gen.-J<Verzeichnis>	MODULE-Dateien in Â»VerzeichnisÂ« ablegen.-MF <Datei>	AbhÃ¤ngigkeiten in angegebene Datei schreiben.-MQ <Ziel>	Ziel hinzufÃ¼gen, das mÃ¶glicherweise AnfÃ¼hrungszeichen benÃ¶tigt.-MT <Ziel>	Ziel hinzufÃ¼gen, das keine AnfÃ¼hrungszeichen benÃ¶tigt.-O<Zahl>	Optimierungsstufe auf <Zahl> setzen.-U<Makro>	<Makro>-Definition aufheben.-Waligned-new=[none|global|all]	Selbst dann warnen, wenn Â»newÂ« Klassenelementfunktionen zur Speicherreservierung verwendet.-Walloc-size-larger-than=<Bytes>	Bei Aufrufen von Allozierungsfunktionen warnen, mit denen Objekte erzeugt werden, die grÃ¶ÃŸer als Â»BytesÂ« sind.-Walloca-larger-than=<Anzahl>	Bei Aufrufen von alloca warnen, deren GrÃ¶ÃŸe unbeschrÃ¤nkt ist oder deren GrÃ¶ÃŸe zwar beschrÃ¤nkt ist, aber mehr als <Anzahl> Bytes betragen kann.-Wbidi-chars=[none|unpaired|any|ucn] Vor UTF-8 bidirektionalen Steuerzeichen warnen.-Wframe-larger-than=<GrÃ¶ÃŸe>	Warnen, wenn der Stapelrahmen einer Funktion mehr als <GrÃ¶ÃŸe> Bytes benÃ¶tigt.-Wlarger-than=<Anzahl>	Warnen, wenn ein Objekt grÃ¶ÃŸer als <Anzahl> Bytes ist.-Wnormalized=[none|id|nfc|nfkc]	Bei nicht-normalisierten Unicode-Zeichenketten warnen.-Wstack-usage=<GrÃ¶ÃŸe in Bytes>	Warnen, wenn Stapelverwendung den angegebenen Betrag Ã¼berschreiten kÃ¶nnte.-Wvla-larger-than=<Anzahl>	Bei unbeschrÃ¤nkten Verwendungen von Arrays variabler LÃ¤nge warnen, und bei Verwendung von Arrays variabler LÃ¤nge, wenn die LÃ¤nge <Anzahl> Ã¼berschreiten kann.Â»-Xbind-nowÂ« und Â»-Xbind-lazyÂ« sind unvertrÃ¤glich-Xf <Datei>	JSON-Ausgabe in die angegebene <Datei> schreiben.-allowable_client <Name>	Die ausgegebene dylib ist nur vom Client <Name> verwendbar.-arch <Name>	Ausgabedatei fÃ¼r die Architektur <Name> erzeugen.-aux-info <Datei>	Deklarationsinformationen in <Datei> ausgeben.Â»-bundleÂ« ist nicht mit Â»-dynamiclibÂ« erlaubtÂ»-bundleÂ« ist nicht mit Â»-sharedÂ« erlaubt-bundle_loader <AusfÃ¼hrbar>	Die ausfÃ¼hrbare Datei <AusfÃ¼hrbar> (die dieses Bundle laden wird) so behandeln, als sei sie eine der dynamischen Bibliotheken, gegen die das Bundle fÃ¼r SymbolauflÃ¶sung gebunden ist.Â»-bundle_loaderÂ« ist nicht mit Â»-dynamiclibÂ« erlaubtFÃ¼r Ada wird Â»-cÂ« oder Â»-SÂ« benÃ¶tigtFÃ¼r gnat2scil wird Â»-cÂ« benÃ¶tigtFÃ¼r gnat2why wird Â»-cÂ« benÃ¶tigt-client_name <Name>	Erlauben, dass die erzeugte ausfÃ¼hrbare Datei gegen die private Dylib gebunden werden darf (mit allowable_client).Â»-client_nameÂ« ist nicht mit Â»-dynamiclibÂ« erlaubt-compatibility_version <Nummer>	Minimale Version fÃ¼r das Client-Interface festlegen. Clients mÃ¼ssen diese <Nummer> oder eine grÃ¶ÃŸere angeben, oder das Binden wird zur Laufzeit scheitern.Â»-compatibility_versionÂ« ist nur mit Â»-dynamiclibÂ« erlaubt-current_version <Nummer>	Aktuelle Version fÃ¼r die Bibliothek auf <Nummer> festlegen.Â»-current_versionÂ« ist nur mit Â»-dynamiclibÂ« erlaubt-d<Buchstaben>	Ausgaben von bestimmten DurchlÃ¤ufen des Compilers einschalten.-dumpbase <Datei>	Den Basis-Dateinamen fÃ¼r Ausgaben setzen.-dumpbase-ext .<Erw>    Die Dateinamenserweiterung .<Erw> weglassen, beim Benennen der hilfsweisen Ausgabedateien.-dumpdir <Verzeichnis>	Den Basis-Verzeichnisnamen fÃ¼r Ausgaben setzen.-dylib_file Installationsname:Dateiname	Dies ermÃ¶glicht das Binden einer Dylib mit Â»InstallationsnameÂ«, die aber in einer anderen Installationsposition Â»DateinameÂ« zu finden ist-dylinker_install_name <Pfad>	Wird nur verwendet, um dyld zu bauen.-exported_symbols_list <Dateiname>	Globale Symbole in <Dateiname> werden aus der gebundenen Ausgabedatei exportiert, alle nicht erwÃ¤hnten Symbole werden als versteckt behandelt.-f%s ignoriert (nicht fÃ¼r DJGPP unterstÃ¼tzt)
! -fada-spec-parent=Einheit	Ada-Spezifikationen als Kind-Einheiten der angegebenen Elterneinheit ausgeben.-faligned-new=<N>	Ãœberausgerichtete Typallozierung aus C++17 fÃ¼r Typen mit Ausrichtung grÃ¶ÃŸer N verwenden.-fasan-shadow-offset=<Zahl>	Spezifischen Offset fÃ¼r Schattenspeicher verwenden.-fblas-matmul-limit=<n>	GrÃ¶ÃŸe der kleinsten Matrix, fÃ¼r die matmul BLAS verwendet.-fbounds-check=[on|safeonly|off]	Array-GrenzprÃ¼fungen einschalten, nur in @safe-Code, oder ausschalten.-fcall-saved-<Register>	<Register> als Ã¼ber Funktionsgrenzen hinweg reserviert markieren.-fcall-used-<Register>	<Register> als durch Funktionsaufrufe beschÃ¤digt markieren.-fcf-protection=[full|branch|return|none|check]	Funktionen mit zusÃ¤tzlichen PrÃ¼fungen versehen, dass die Sprungziele von jump/call/return gÃ¼ltig sind.-fcheck=[...]	DurchgefÃ¼hrte LaufzeitprÃ¼fungen.-fcheckaction=[throw,halt,context]	Verhalten bei NichterfÃ¼llung eines Vertrags.-fcoarray=<none|single|lib>	Angeben, welche Koarray-Parallelisierung verwendet wird.-fcobol-exceptions=<n>	Einige Ausnahmen standardmÃ¤ÃŸig aktivieren-fcompare-debug[=<Optionen>]	Mit und ohne z.B. Â»-gtoggleÂ« kompilieren, und den Dump der Â»final-insnsÂ« vergleichen.-fconst-string-class=<Name>	Klasse <Name> fÃ¼r konstante Zeichenketten verwenden.-fconstexpr-cache-depth=<Zahl>	GrÃ¶ÃŸte Rekursionstiefe des Caches fÃ¼r konstante AusdrÃ¼cke festlegen.-fconstexpr-depth=<Zahl>	GrÃ¶ÃŸte Rekursionstiefe fÃ¼r konstante AusdrÃ¼cke angeben.-fconstexpr-loop-limit=<Anzahl>	HÃ¶chstzahl der Schleifeniterationen fÃ¼r Â»constexprÂ« angeben.-fconstexpr-ops-limit=<Anzahl>	HÃ¶chstzahl der constexpr-Operationen pro einzelner Â»constexprÂ«-Auswertung angeben.-fcontract-assumption-mode=[on|off]	Axiomatische VertrÃ¤ge als Annahmen zulassen oder nicht (Vorgabe: zulassen).-fcontract-build-level=[off|default|audit]	Maximale Vertragsstufe, fÃ¼r die LaufzeitprÃ¼fungen generiert werden.-fcontract-continuation-mode=[on|off]	Vertragsfortsetzungsmodus ein- oder ausschalten (Vorgabe: aus).-fcontract-mode=[on|off]	VertrÃ¤ge komplett ein- oder ausschalten (Vorgabe: ein).-fcontract-role=<Name>:<Semantik>	Semantik fÃ¼r alle Stufen in einer Rolle angeben (default, review), oder eine selbstdefinierte Rolle mit der angegebenen Semantik (zum Beispiel: opt:assume,assume,assume).-fcontract-semantic=<Stufe>:<Semantik>	Die konkrete Semantik fÃ¼r die Stufe angeben.-fcontract-strict-declarations=[on|off]	Warnungen bei generalisierten Neudeklarationen von Funktionen mit VertrÃ¤gen ein- oder ausschalten (Vorgabe: aus).-fconvert=<big-endian|little-endian|native|swap|r16_ieee|r16_ibm>	Die Endianess, die fÃ¼r unformatierte Dateien verwendet wird.-fdbg-cnt=<ZÃ¤hler>[:<Untere Grenze 1>-]<Obere Grenze 1>[:<Untere Grenze 2>-<Obere Grenze 2>:...][,<ZÃ¤hler>:...]	Obergrenze fÃ¼r Debug-ZÃ¤hler festlegen.-fdebug-prefix-map=<alt>=<neu>	In Fehlersuchinfo einen Verzeichnisnamen auf einen anderen abbilden.-fdebug=<Bezeichner>	Durch Bezeichner festgelegten Debugcode eincompilieren.-fdeps-target=obj.o Ausgabedatei fÃ¼r den Kompilierschritt.-fdiagnostics-color=[never|always|auto]	Diagnosemeldungen einfÃ¤rben.-fdiagnostics-column-origin=<Nummer>	Legt die Nummer der ersten Spalte fest. Die Vorgabe ist gemÃ¤ÃŸ GNU-Stil 1-basiert, aber einige Dienstprogramme erwarten 0-basierte Spaltennummern.-fdiagnostics-column-unit=[display|byte]	Festlegen, ob Spaltennummern als Anzeigespalten (Standard) ausgegeben werden oder in rohen Bytes gemessen werden.-fdiagnostics-escape-format=[unicode|bytes]	Festlegen, wie Zeichen auÃŸerhalb des druckbaren ASCII-Bereichs in der Quelle fÃ¼r Diagnosen, die dies vorschlagen, ausgegeben werden sollen.-fdiagnostics-format=[text|sarif-stderr|sarif-file|json|json-stderr|json-file]	Ausgabeformat auswÃ¤hlen.-fdiagnostics-show-location=[once|every-line]	Wie oft die Quelltext-Position am Zeilenanfang ausgegeben wird, wenn die Diagnose Ã¼ber mehrere Zeilen geht.-fdiagnostics-text-art-charset=[none|ascii|unicode|emoji]	Legt fest, welche Zeichen in Text-Arg-Diagrammen verwendet werden.-fdiagnostics-urls=[never|always|auto]	URLs in Diagnosemeldungen einbetten.-fdisable-[tree|rtl|ipa]-<Durchgang>=range1+range2	Einen Optimierungsdurchgang ausschalten.-fdoc-dir=<Verz>	Dokumentationsdatei in Verzeichnis <Verz> schreiben.-fdoc-file=<Datei>	Dokumentation in <Datei> schreiben.-fdoc-inc=<Datei>	Eine Ddoc-Makro-Datei <Datei> inkludieren.-fdump-<type>	Verschiedene compilerinterne Informationen in eine Datei abziehen.-fdump-cxx-spec=<Dateiname>	Alle Deklarationen als C++-Code nach <Dateiname> schreiben.-fdump-final-insns=<Datei>	Die Befehle am Ende der Ãœbersetzung in Datei abziehen.-fdump-go-spec=<Datei>	Alle Deklarationen als Go-Code in <Datei> schreiben.-femit-struct-debug-baseonly	Aggressiv reduzierte Debuginfo fÃ¼r Strukturen.-femit-struct-debug-detailed=<spec-list>AusfÃ¼hrliche reduzierte Debuginfo fÃ¼r Strukturen.-femit-struct-debug-reduced	Konservativ reduzierte Debuginfo fÃ¼r Strukturen.-fenable-[tree|rtl|ipa]-<Durchgang>=range1+range2	Einen Optimierungsdurchgang einschalten.-fexcess-precision=[fast|standard|16]	Behandlung Ã¼berschÃ¼ssiger Gleitkommagenauigkeit bestimmen.-fexec-charset=<Zeichensatz>	Alle Zeichenketten und Zeichenkonstanten in <Zeichensatz> umwandeln.-fextern-std=<Standard>	C++-Namensumwandlung kompatibel zu <Standard> machen.-ffile-prefix-map=<alt>=<neu>	In Ãœbersetzungsergebnis einen Verzeichnisnamen auf einen anderen abbilden.-ffixed-<Register>	<Register> als fÃ¼r den Compiler nicht verfÃ¼gbar markieren.-ffixed-line-length-<n>	Im festen Modus n als ZeilenlÃ¤nge verwenden.-ffp-contract=[off|on|fast]	Schrumpfung von GleitkommaausdrÃ¼cken durchfÃ¼hren.-ffpe-summary=[â€¦]	Zusammenfassung fÃ¼r Gleitkommaausnahmen ausgeben.-ffpe-trap=[â€¦]	Bei folgenden Gleitkommaausnahmen anhalten.-ffixed-line-length-<n>	Im freien Modus n als ZeilenlÃ¤nge verwenden.-fgnat-encodings=[all|gdb|minimal]	Gleichgewicht zwischen GNAT-Encodings und Standard-DWARF auswÃ¤hlen, die in den Debuginformationen landen.-fgo-c-header=<Datei>	Go-struct-Definitionen als C-Code in <Datei> schreiben.-fgo-debug-escape-hash=<Zeichenkette>	Hashwert zum Debuggen der Escape-Analyse.-fgo-dump-<Typ>	Interne Information des Go-Frontends in Datei ausgeben.-fgo-embedcfg=<Datei>	Eingebettete Dateien Ã¼ber go:embed auflisten.-fgo-importcfg=<file>	Gibt die Datei an, die verrÃ¤t, wo die Importe zu finden sind.-fgo-optimize-<type>	OptimierungsdurchlÃ¤ufe im Frontend einschalten.-fgo-pkgpath=<Zeichenkette>	Go-Paketpfad festlegen.-fgo-prefix=<Zeichenkette>	Paketspezifisches PrÃ¤fix fÃ¼r exportierte Go-Namen festlegen.-fgo-relative-import-path=<Pfad>	Relativen Import als relativ zum Pfad behandeln.-fhardcfr-check-noreturn-calls=[always|no-xthrow|nothrow|never]	CFR-AusfÃ¼hrungspfade auch prÃ¼fen, bevor noreturn-Funktionen aufgerufen werden.-findicator-column=<n>	Spalte, nach der Region A beginnt-finit-character=<n>	Lokale Zeichenvariablen auf ASCII-Wert n initialisieren.-finit-integer=<n>	Lokale Ganzzahlvariablen auf n initialisieren.-finit-logical=<true|false>	Lokale logische Variablen initialisieren.-finit-real=<zero|nan|inf|-inf>	Lokale Real-Variablen initialisieren.-finline-arg-packing	Argumentpacken inline durchfÃ¼hren.-finline-limit=<Zahl>	GrÃ¶ÃŸe von Â»inlineÂ«-Funktionen auf <Zahl> beschrÃ¤nken.-finline-matmul-limit=<n>	GrÃ¶ÃŸe der grÃ¶ÃŸten Matrix, fÃ¼r die matmul geinlinet wird.-finline-stringops[=memcmp|memcpy|memmove|memset] UnterstÃ¼tzte mem/str-Operationen inline expandieren, auch wenn dies der Optimierung widerspricht.-finput-charset=<Zeichensatz>	Standard-Zeichensatz fÃ¼r Quelldateien angeben.-finstrument-functions-exclude-file-list=filename,â€¦	In den Dateien aufgezÃ¤hlte Funktionen nicht instrumentieren.-finstrument-functions-exclude-function-list=name,â€¦	AufgezÃ¤hlte Funktionen nicht instrumentieren.-finternal-ebcdic	Die interne Verarbeitung erfolgt in EBCDIC-Codepage 1140-fira-algorithm=[CB|priority]	Verwendeten IRA-Algorithmus festlegen.-fira-region=[one|all|mixed]	Regionen fÃ¼r IRA festlegen.-fira-verbose=<Zahl<	Stufe der IRA Diagnosemeldungen steuern.-flive-patching=[inline-only-static|inline-clone]	FunktionsÃ¼bergreifende Optimierung steuern, um fÃ¼r Live-Patching geeigneten Code zu erzeugen. Bietet gleichzeitig mehrstufige Kontrolle bezÃ¼glich der ausgewÃ¤hlten funktionsÃ¼bergreifenden Optimierungen.-fmacro-prefix-map=<alt>=<neu>	Einen Verzeichnisnamen auf einen anderen umschreiben in __FILE__, __BASE_FILE__ und __builtin_FILE().-fmax-array-constructor=<n>	HÃ¶chstzahl der Objekte in einem Feldkonstruktor.-fmax-errors=<Anzahl>	HÃ¶chstzahl der zu meldenden Fehler.-fmax-identifier-length=<n>	GrÃ¶ÃŸte BezeichnerlÃ¤nge.-fmax-stack-var-size=<n>	GrÃ¶ÃŸe des grÃ¶ÃŸten Feldes, das auf dem Stapel abgelegt wird, in Bytes.-fmax-subrecord-length=<n>	GrÃ¶ÃŸte LÃ¤nge fÃ¼r TeildatensÃ¤tze.-fmessage-length=<Anzahl>	Diagnosemeldungen auf <Anzahl> Zeichen pro Zeile beschrÃ¤nken. 0 unterdrÃ¼ckt Zeilenumbruch.-fmodule-file=<package.module>=<Dateiang>	Dateiangabe <Dateiang> als Quelldatei fÃ¼r <package.module> verwenden.-fno-threadsafe-statics	Keinen threadsicheren Code fÃ¼r Initialisierung lokaler statischer Objekte erzeugen.-foffload-abi-host-opts=<options>	Host-ABI-Optionen festlegen.-foffload-abi=[lp64|ilp32]	Festlegen, welche ABI in einem Offload-Compiler verwendet wird.-foffload-options=<Ziele>=<Optionen>	Offloading-Ziele und deren Optionen angeben.-fopt-info[-<Typ>=Dateiname]	Optimierungsdetails des Compilers ausgeben.Â»-force_flat_namespaceÂ« ist nicht mit Â»-dynamiclibÂ« erlaubt-fpack-struct=<Zahl>	AnfÃ¤ngliche grÃ¶ÃŸte Ausrichtung fÃ¼r Strukturelemente festlegen.-fpath-coverage-limit=<Anzahl> Funktionspfade, die <Anzahl> Ã¼berschreiten, nicht instrumentieren.-fpermitted-flt-eval-methods=[c11|ts-18661]	Angeben, welche Werte von FLT_EVAL_METHOD erlaubt sind.-fplugin-arg-<Name>-<SchlÃ¼ssel>[=<Wert>]	Argument <SchlÃ¼ssel>=<Wert> fÃ¼r Plugin <Name> angeben.-fprofile-prefix-map=<alt>=<neu>	In der Ausgabe von GCOV einen Verzeichnisnamen auf einen anderen abbilden.-fprofile-reproducible=[serial|parallel-runs|multithreaded]	Stufe fÃ¼r die Reproduzierbarkeit des mit Â»-fprofile-generateÂ« generierten Profils festlegen.-fprofile-update=[single|atomic|prefer-atomic]	Methode fÃ¼r Profilupdates festlegen.-framework <Name>	Der Binder sollte das Framework <Name> im Suchpfad fÃ¼r Frameworks suchen.-frandom-seed=<Zeichenkette>	Ãœbersetzung mit <Zeichenkette> reproduzierbar machen.-freorder-blocks-algorithm=[simple|stc]	Algorithmus zum Umordnen der BasisblÃ¶cke festlegen.-frust-cfg=<Name>             Option fÃ¼r Konfigurationsexpansion festlegen-frust-compile-until=[ast|attributecheck|expansion|astvalidation|featuregating|nameresolution|lowering|typecheck|privacy|unsafety|const|borrowcheck|compilation|end]             Die Pipeline beim Kompilieren von Rust-Code bis zu dieser Stufe durchlaufen-frust-crate-type=[bin|lib|rlib|dylib|cdylib|staticlib|proc-macro]     Auszugebender Crate-Typ-frust-crate=<Name>             Crate-Namen fÃ¼r die Ãœbersetzung festlegen-frust-dump-<type>              Interne Informationen des Rust-Frontends ausgeben.-frust-edition=[2015|2018|2021]             Sprachversion zum Ãœbersetzen auswÃ¤hlen-frust-edition=[unwind|abort]             Panikstrategie, mit der Crate compiliert wird-frust-extern=              Gibt an, wo sich eine externe Bibliothek befindet-frust-mangling=[legacy|v0]     Version der Namensmangelung auswÃ¤hlen-frust-max-recursion-depth=<Anzahl>-frust-metadata-output=<Pfad.rox>  Pfad, in den die Crate-Metadaten geschrieben werden-fsanitize-sections=<sec1,sec2,...>	Globale Variablen in benutzerdefinierten Abschnitten bereinigen.-fsanitize=address wird in dieser Konfiguration nicht unterstÃ¼tzt-fsave-mixins=<Dateiname>	Mixins expandieren und in <Dateiname> speichern.-fsched-stalled-insns-dep=<Zahl>	AbhÃ¤ngigkeitsentfernung fÃ¼r PrÃ¼fung in nicht ausgereifter Planung von eingereihten Befehlen festlegen.-fsched-stalled-insns=<Anzahl>	Anzahl der eingereihten Befehle festlegen, die unausgereift geplant werden kÃ¶nnen.-fsched-verbose=<Stufe>	Stufe der WortfÃ¼lle des Planers angeben.-fsimd-cost-model=[unlimited|dynamic|cheap|very-cheap]	Vektorisierungs-Kostenmodell angeben, das fÃ¼r mit einer SIMD-Direktive markierten Code verwendet wird.-fsso-struct=[big-endian|little-endian|native]	Standardspeicherreihenfolge fÃ¼r Skalare festlegen.-fstack-check=[no|generic|specific]	Code zur StapelprÃ¼fung in das Programm einfÃ¼gen.-fstack-limit-register=<Register>	Wenn der Stapel Ã¼ber <Register> hinausgeht, abfangen (Â»trapÂ«).-fstack-limit-symbol=<Name>	Wenn der Stapel Ã¼ber das Symbol <Name> hinausgeht, abfangen (Â»trapÂ«).-fstack-reuse=[all|named_vars|none]	Stufe der Stapel-Wiederverwendung fÃ¼r lokale Variablen festlegen.-fstrict-flex-arrays=<Stufe>    Steuern, wann ein Array am Ende einer Struktur als ein flexibles Arraymember angesehen wird, bezÃ¼glich des Zugriffs auf die Elemente dieses Arrays. Vorgabe ist, alle Arrays am Ende einer Struktur als flexible Arrays anzusehen.-ftabstop=<Zahl>        Abstand zwischen Tabstopps fÃ¼r Spaltenmeldungen.-ftemplate-depth=<Zahl>	GrÃ¶ÃŸte Template-Instanziierungstiefe angeben.-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]	Das standardmÃ¤ÃŸige Codeerzeugungsmodell fÃ¼r Thread-lokalen Speicher angeben.-ftrack-macro-expansion=<0|1|2>	Orte der aus der Makroersetzung entstehenden Token verfolgen und sie in Fehlermeldungen anzeigen.-ftree-parallelize-loops=<Anzahl>	Automatische Parallelisierung von Schleifen einschalten.-ftrivial-auto-var-init=[uninitialized|pattern|zero]	Automatische Variablen initialisieren.-fuse-linker-plugin wird in dieser Konfiguration nicht unterstÃ¼tzt-fvect-cost-model=[unlimited|dynamic|cheap|very-cheap]	Kostenmodell fÃ¼r Vektorisierung angeben.-fversion=<Ident>	Mit Ident identifizierten Versionscode mitkompilieren.-fvisibility=[default|internal|hidden|protected]	Standard-Symbolsichtbarkeit festlegen.-fvisibility=[private|protected|public|package]	Standard-Symbolsichtbarkeit festlegen.-fvtable-verify=preinit wird in dieser Konfiguration nicht unterstÃ¼tzt-fvtable-verify=std wird in dieser Konfiguration nicht unterstÃ¼tzt-fwide-exec-charset=<Zeichensatz>	Alle Wide-Zeichenketten und -konstanten in Zeichensatz <Zeichensatz> umwandeln.-fzero-init-padding-bits=[standard|unions|all]	AuffÃ¼ll-Bits in Initialisierern ausnullen.-gnat<Optionen>	Optionen fÃ¼r GNAT angeben.-gz wird in dieser Konfiguration nicht unterstÃ¼tzt-gz=<Format>	Komprimierte Debugabschnitte im Format <Format> erzeugen.-gz=zstd wird in dieser Konfiguration nicht unterstÃ¼tzt-idirafter <Verzeichnis>	<Verzeichnis> an das Ende des System-EinfÃ¼gepfades anfÃ¼gen.-iframework <Verz>	<Verz> an das Ende des EinfÃ¼gepfades des System-Frameworks anfÃ¼gen.-imacros <Datei>	Definition von Makros in <Datei> akzeptieren.-image_base <Adresse>	Basisadresse fÃ¼r eine Dylib oder ein Bundle festlegen.-imultiarch <Verzeichnis>	<Verzeichnis> als Multiarch-include-Verzeichnis festlegen.-imultilib <Verzeichnis>	<Verzeichnis> als Multilib-include-Verzeichnis setzen.-include <Datei>	Inhalt von <Datei> vor anderen Dateien einfÃ¼gen.-init <Symbolname>	Das Symbol <Symbolname> wird als erster Initialisierer fÃ¼r eine Dylib verwendet.-install_name <Name>	Legt den Installationsnamen fÃ¼r eine Dylib fest.Â»-install_nameÂ« ist nur mit Â»-dynamiclibÂ« erlaubt-iplugindir=<Verz>	<Verz> als Standard-Plugin-Verzeichnis festlegen.-iprefix <Pfad>	<Pfad> als ein PrÃ¤fix fÃ¼r die nÃ¤chsten zwei Optionen angeben.-iquote <Verzeichnis>	<Verzeichnis> am Ende des EinfÃ¼gepfades fÃ¼r Â»#include "â€¦"Â« anfÃ¼gen.-isysroot <Verzeichnis>	<Verzeichnis> als System-Wurzelverzeichnis setzen.-isystem <Verzeichnis>	<Verzeichnis> an den Anfang des System-EinfÃ¼gepfades anfÃ¼gen.-iwithprefix <Verzeichnis>	<Verzeichnis> an das Ende des System-EinfÃ¼gepfades anfÃ¼gen.-iwithprefixbefore <Verz>	<Verz> an das Ende des Haupt-EinfÃ¼gepfades anfÃ¼gen.Â»-keep_private_externsÂ« ist mit Â»-dynamiclibÂ« nicht erlaubt-mabi=ABI	Code erzeugen, der zum angegebenen ABI passt.-mabi=<Basis-ABI>	Code erzeugen, der zur angegebenen Basis-ABI passt.-mabs=MODUS	Den Modus fÃ¼r IEEE-754-ABS/NEG-Befehle auswÃ¤hlen.-maddr-reg-reg-cost=COST	Die Kosten von ADDRESS_REG_REG auf den mit COST berechneten Wert festlegen.-main	Die erste Programm-ID in der nÃ¤chsten Quelldatei wird von einem generierten main()-Einstiegspunkt aufgerufen-main=<Quelldatei> Quelldatei/PROGRAMM-ID wird von der generierten main() aufgerufen-march=	Code fÃ¼r die angegebene RISC-V-ISA (z.B. RV64IM) erzeugen. ISA-Zeichenketten mÃ¼ssen in Kleinbuchstaben angegeben werden.-march=ARCH	Code fÃ¼r die angegebene Chip- oder CPU-Version erzeugen.-march=ISA	Code fÃ¼r das gegebene ISA erzeugen.-march=<Prozessor>	Code fÃ¼r die angegebene <Prozessor>-ISA erzeugen.-march=help	UnterstÃ¼tzte Â»-marchÂ«-Erweiterungen ausgeben.Â»-mas100-syntaxÂ« ist unvertrÃ¤glich mit Â»-gdwarfÂ«-mbranch-cost=<Kosten>	Optimierung. Sprungkosten fÃ¼r bedingte Sprungbefehle festlegen. Angemessene Werte sind kleine, nicht-negative Ganzzahlen. Vorgabewert ist 0.-mbranch-cost=KOSTEN	Sprungkosten auf ungefÃ¤hr KOSTEN Befehle setzen.-mbranch-cost=N	Sprungkosten auf ungefÃ¤hr N Befehle setzen.-mcall-ABI	ABI-Aufrufkonvention auswÃ¤hlen.-mcode-readable=SETTING	Angeben, wann Befehle zum Codezugriff erlaubt sind.Â»-mcode-regionÂ« benÃ¶tigt das large-Speichermodell (Â»-mlargeÂ«)-mcpu=	Eigenschaften der angegebenen CPU verwenden und entsprechend Code planen.-mcpu=CPU	Code fÃ¼r ARC-Variante CPU planen.-mcpu=CPU		Eigenschaften der gegebenen CPU verwenden und entsprechend Code planen.-mcpu=PROZESSOR	Architektur von PROZESSOR verwenden und die Ausgabe dafÃ¼r optimieren.-mcpu=m16c	Code fÃ¼r M16C-Varianten kompilieren.-mcpu=m32c	Code fÃ¼r M32C-Varianten kompilieren.-mcpu=m32cm	Code fÃ¼r M32CM-Varianten kompilieren.-mcpu=r8c	Code fÃ¼r R8C-Varianten kompilieren.Â»-mdata-regionÂ« benÃ¶tigt das large-Speichermodell (Â»-mlargeÂ«)-mdebug=	Ausgaben zur Fehlersuche einschalten.-mdouble=<Bits>	Einen <Bits> breiten Typ fÃ¼r Â»doubleÂ« verwenden.-memregs=	Anzahl der Memreg-Bytes (Standard: 16, Bereich: 0..16).-mflush-func=FUNC	FUNC verwenden, um den Cache zu entleeren, bevor Stapel-Trampoline aufgerufen werden.-mfpu=FPU	Code fÃ¼r die angegebene FPU erzeugen.-mfuse-add=<0,2>	Optimierung. Registeradditionen von Lade-/Speicheranweisungen trennen. Besonders nÃ¼tzlich bei Reduced Tiny.-mfuse-move=<0,23>	Optimierung. Einen Post-Reload-Durchlauf ausfÃ¼hren, der Kopierbefehle optimiert.-mhard-float wird nicht unterstÃ¼tzt-minline-memops-threshold=<Anzahl> Maximale GrÃ¶ÃŸe von memset/memmove/memcpy zum Inlinen, bei grÃ¶ÃŸeren GrÃ¶ÃŸen wird ein Bibliotheksaufruf verwendet.-mipsN	Code fÃ¼r ISA Stufe N erzeugen.-mlam=[none|u48|u57] Position der Metadaten in Nutzer-Datenzeigern instrumentieren.-mlarge-data-threshold=<Anzahl>	Daten grÃ¶ÃŸer als der angegebene Schwellwert landen in einem Abschnitt fÃ¼r groÃŸe Daten, in den x86-64-Modellen Mittel und GroÃŸ.-mlong-double=<Bits>	Einen <Bits> breiten Typ fÃ¼r Â»long doubleÂ« verwenden.-mmax-inline-memcpy-size=SIZE	Die maximale GrÃ¶ÃŸe von inline-memcpy festlegen, Standard ist 1024.-mmax-stackframe=GRÃ–áºžE	Warnen, wenn ein Stapelrahmen grÃ¶ÃŸer als die angegebene GrÃ¶ÃŸe ist.-mmcu=<MCU>	Die Ziel-MCU auswÃ¤hlen.-mmcu=MCU	Ziel-System-On-Chip-Variante auswÃ¤hlen, die diese PRU einbettet.-mmpy-option=MPY	ARCv2-Code mit einer Option fÃ¼r das Multiplizierer-Design kompilieren.-mnan=CODIERUNG	Datencodierung fÃ¼r IEEE-754-NaN angeben.-mno-serialize-volatile	Â»volatileÂ«-Speicherreferenzen nicht mit MEMW-Befehlen serialisieren.-moverride=<Zeichenkette>	Nur fÃ¼r Powernutzer! CPU-Optimierungsparameter Ã¼bersteuern.-mpointer-size=[no,32,short,64,long]	StandardgrÃ¶ÃŸe fÃ¼r Zeiger festlegen.-mr10k-cache-barrier=EINSTELLUNG	Angabe, wann r10k-Cachegrenzen eingefÃ¼gt werden sollen.-mrvv-max-lmul=<Zeichenkette>	Die RVV-LMUL der Auto-Vektorisierung festlegen.-mrvv-vector-bits=<Zeichenkette>	Art der Bits in einem RVV-Vektorregister festlegen.-msdata=[none,data,sysv,eabi]	Methode fÃ¼r sdata-Behandlung auswÃ¤hlen.-msim	Simulator-Laufzeitumgebung verwenden.-msimd=SIMD	Code fÃ¼r die angegebene SIMD-Erweiterung erzeugen.Â»-msingle-floatÂ« und Â»-msoft-floatÂ« dÃ¼rfen nicht zusammen angegeben werden-msmall-data-limit=N	Globale und statische Daten kleiner als <N> Bytes in einen gesonderten Abschnitt legen (bei manchen Zielarchitekturen).-msve-vector-bits=<Anzahl>	Anzahl der Bits in einem SVE-Vektorregister festlegen.-mtarget-linker <Version>	ld64 <Version> als Toolchain-Binder fÃ¼r den aktuellen Aufruf festlegen.-mtls-size=[16,32]	Bit-Breite des unmittelbaren TLS-Offsets angeben.-mtraceback=[full,part,no]	Art der Traceback-Tabelle wÃ¤hlen (vollstÃ¤ndig, teilweise, keine).-mtune=	Code fÃ¼r die angegebene CPU planen.-mtune=ARCH	Ausrichtung fÃ¼r angegebene Chip- oder CPU-Version optimieren.-mtune=<Prozessor>	Code fÃ¼r <Prozessor> optimieren.-mtune=PROZESSOR	Ausgabe fÃ¼r PROZESSOR optimieren.-mcpu=TUNE	Code fÃ¼r angegebene ARC-Variante feintunen.Â»-mx32Â« wird unter Solaris nicht unterstÃ¼tzt-nomain	Es wird keine main()-Funktion aus COBOL-Quelldateien erstellt-o <Datei>	Ausgabe in <Datei> schreiben.-pagezero_size <GrÃ¶ÃŸe>	Erlaubt es, die GrÃ¶ÃŸe der Seite 0 fÃ¼r bestimmte SonderfÃ¤lle auf 4 kB festzulegen.-param=riscv-two-source-permutes	Schaltet Permutationen mit zwei Quellvektoren ein.-param=vsetvl-strategy=<string>	Optimierungsstufe des VSETVL-EinfÃ¼gedurchgangs festlegen.Â»-pgÂ« und Â»-fomit-frame-pointerÂ« sind unvertrÃ¤glich-pie wird in dieser Konfiguration nicht unterstÃ¼tztÂ»-private_bundleÂ« ist mit Â»-dynamiclibÂ« nicht erlaubt-read_only_relocs <Behandlung>	Dies ermÃ¶glicht Codeverschiebungen in schreibgeschÃ¼tzten Seiten (nicht ratsam).-sectalign <Segmentname> <Abschnittsname> <Wert>	Festlegen, dass der genannte Abschnitt im genannten Segment die genannte Ausrichtung hat. Die Ausrichtung muss eine Zweierpotenz in hexadezimaler Form sein.-sectcreate <Segmentname> <Abschnittsname> <Datei>	Den genannten Abschnitt im genannten Segment aus der angegebenen Datei erstellen.-seg_addr_table <Datei>	Basisadressen fÃ¼r dynamische Bibliotheken festlegen, <Datei> enthÃ¤lt eine Zeile fÃ¼r jede Bibliothek.-segaddr <Name> <Adresse>	Basisadresse des Segments <Name> auf <Adresse>festlegen. Die Adresse muss an einer Seitenbegrenzung ausgerichtet sein (derzeit 4 kB).-segprot <Segmentname> <Max-Schutz> <Init-Schutz>	Die Schutzwerte fÃ¼r virtuellen Speicher fÃ¼r das Segment <Segmentname> haben die maximalen und initialen Werte <Max-Schutz> und <Init-Schutz>. Als Werte sind Â»rÂ«, Â»wÂ«, Â»xÂ« oder Â»-Â« mÃ¶glich, letzteres bedeutet Â»kein ZugriffÂ«.-segs_read_only_addr <Adresse>	Adresse des schreibgeschÃ¼tzten Teils einer Dylib festlegen.-segs_read_write_addr <Adresse>	Die <Adresse> als Basisadresse des Lese-/Schreibteils einer Dylib festlegen.-stdlib=[libstdc++|libc++]	Die Standardbibliothek, die fÃ¼r C++-Header und Laufzeit verwendet wird.-sub_library <Name>	Die Bibliothek <Name> wird wieder-exportiert (nur fÃ¼r Dylibs sinnvoll).-sub_umbrella <Name>	Das Framework <Name> wird wieder-exportiert (nur fÃ¼r Dylibs sinnvoll).-trigraphs	Trigraphen nach ISO C unterstÃ¼tzen.-umbrella <Framework>	Das angegebene Framework wird re-exportiert.-undefined <Auswirkung>	Auswirkung von undefinierten Symbolen festlegen (Vorgabewert ist Â»errorÂ«).-unexported_symbols_list <Datei>	Globale Symbole, die in <Datei> aufgelistet sind, nicht exportieren.-weak_framework <framework>	Eine schwache Bindung zu dem angegebenen Rahmenwerk herstellen.-weak_reference_mismatches <Auswirkung>	Auswirkung von Symbol-Importkonflikten zwischen Dateien (schwach in der einen und nicht in der anderen) festlegen. Vorgabewert ist, das Symbol als nicht Â»weakÂ« zu behandeln.... diesem AufzÃ¤hlungswert %qDâ€¦ zur vorherigen %qs-Klausel hierâ€¦ mit %qs-Klausel hierâ€¦ ohne %qs-Klausel hier in der NÃ¤he... folgt auf Parameter %P, der ein Defaultargument hatâ€¦ diese Anweisung, aber letztere ist verwirrend eingerÃ¼ckt, als wÃ¤re sie abhÃ¤ngig von %qs.NOT.-Operator in Ausdruck bei %L muss einen LOGICAL-Operanden haben.XOR.-Operator bei %C/* Prototypen fÃ¼r externe Prozeduren, generiert aus %s
     von GNU Fortran %s%s.
  
     Die Verwendung dieser Schnittstelle wird nicht empfohlen,
     verwenden Sie besser das BIND(C)-Feature, das standardmÃ¤ÃŸig
     in Fortran angeboten wird. */
  
! 128-bit %<long double%> wird fÃ¼r VAX floats nicht unterstÃ¼tztdie UnterstÃ¼tzung fÃ¼r 128-Bit-Systemregister erfordert die Erweiterung %<d128%>31-Bit-ABI.387-Befehlssatz ausgeschaltet, es wird SSE-Arithmetik verwendet64-Bit-ABI.64-Bit-ABI nicht unterstÃ¼tzt im ESA/390-Modus; verwenden Sie stattdessen eine Zuweisung; verwenden Sie stattdessen eine Zuweisung oder Wertinitialisierung; verwenden Sie stattdessen eine Kopierzuweisung; verwenden Sie stattdessen eine Kopierzuweisung oder Kopierinitialisierung; verwenden Sie stattdessen eine Kopierinitialisierung; verwenden Sie stattdessen eine Wertinitialisierung<anonym><geschweift geklammerte Initialisierungsliste><eingebaut><Kommandozeile><Deklarationsfehler>{AufzÃ¤hlung}<fehlerhafter-Ausdruck><Ausdrucksfehler><lambda<lambda><Meldung nicht zur Compilierzeit bekannt><fehlt><RÃ¼ckgabewert> <RÃ¼ckgabewert><Anweisung><strukturierte Bindungen><Markierungsfehler><Template-Argumente-Fehler><Template-Parameter-Fehler><throw-Ausdruck><Typfehler><Typ-Fehler><typedef-Fehler><TypprÃ¤fixfehler><ubsan-Unterprogramm-Aufruf><unbekannter Operator><unbekannt><unbenanntes %s><unbenannt-Festkomma:<unbenannt-Gleitkomma:<unbenannt-vorzeichenlos:<unbenannt><nicht-analysiert><unaufgelÃ¶ster Ã¼berladener Funktionstyp>Eine BOZ-Literalkonstante bei %L kann nicht als tatsÃ¤chliches Argument in einer Funktionsreferenz verwendet werdenEine BOZ-Literalkonstante bei %L kann nicht als tatsÃ¤chliches Argument in einer Unterprogrammreferenz erscheinenEin Faktor, um die obere Schranke des Swing-Modulo-Schedulers fÃ¼r Schleifenplanung einzustellen.Abschneiden von Gleitkomma- zu Ganzzahl darf durch Rundung ersetzt werden, um Modusumschaltung einzusparen.Vor dem Doppelpunkt in der Angabe der angenommenen GrÃ¶ÃŸe des Feldes bei %L muss die untere Grenze angegeben seinFÃ¼r den vordefinierten Allokator %qs bei %L darf kein Speicherbereich oder Traits-Array angegeben werdenEs wurde ein nicht standardmÃ¤ÃŸiger Satz von Anfangswerten angefordert, was gegen das ABI verstÃ¶ÃŸtBei %C wird ein Parametername erwartetEin Synonym fÃ¼r Â»-std=c89Â« (fÃ¼r C) oder Â»-std=c++98Â« (fÃ¼r C++).Schwellwert fÃ¼r vom Swing-Modulo-Scheduler betrachteten Durchschnitts-Schleifen-ZÃ¤hler.Bei %C wird eine Typparameterliste erwartetAAPCS unterstÃ¼tzt nicht %<-mcallee-super-interworking%>AAPCS unterstÃ¼tzt nicht %<-mcaller-super-interworking%>ABI %qs kann aufgrund des begrenzten Befehlssatzes %qs nicht implementiert werden, stattdessen wird %qs verwendetABI %qs ist zur Konfigurationszeit nicht aktiviert, der Binder meldet mÃ¶glicherweise einen FehlerABI geÃ¤ndert (von %qs auf %qs), wÃ¤hrend Multilib ausgeschaltet istABI fÃ¼r abgeflachte Struktur mit Bit-Feldern der LÃ¤nge 0 hat wurde mit GCC 10 geÃ¤ndertABI erfordert %<-march=rv%d%>ABI-Varianten fÃ¼r Codeerzeugung (zur Verwendung mit der Option Â»-mabi=Â«):ABI mit Startdateien: %sABSTRACT INTERFACE %qs bei %L darf kein angenommenes ZeichenlÃ¤ngenergebnis haben (F2008: C418)ABSTRACT INTERFACE %qs darf bei %L nicht referenziert werdenABSTRACT INTERFACE bei %CABSTRACT-Typ %qs bei %L verwendetABSTRACT-Typ bei %Cletzter Ausdruck von AC-IMPLIED-DO referenziert Steuervariable bei %Lerster Ausdruck von AC-IMPLIED-DO referenziert Steuervariable bei %LSchrittausdruck von AC-IMPLIED-DO referenziert Steuervariable bei %LACC-CACHE-Direktive bei %C muss innerhalb einer Schleife seinACCESS-Spezifikation bei %L wurde bereits spezifiziertDie ACLE-Funktion %qD kann nur von einer Funktion mit dem Status %qs aufgerufen werdenDie ACLE-Funktion %qD kann nur aufgerufen werden, wenn der SME-Streaming-Modus aktiviert istDie ACLE-Funktion %qD kann nicht aufgerufen werden, wenn der SME-Streaming-Modus aktiviert istACLE-Funktion %qD ist nicht kompatibel mit der Verwendung von %qsACLE-Funktion %qD erfordert ISA-Erweiterung %qsVariable ACQUIRED_LOCKÂ»ACQUIRED_LOCK=Â«-Argument bei %L muss skalare LOGICAL-Variable seinACTION-Typ bei %L steht in Konflikt mit READONLY-SpezifiziererALIGN bei %L erfordert einen skalaren, positiven, konstanten Ganzzahlausdruck fÃ¼r die Ausrichtung, der eine Zweierpotenz istAttribut ALLOCATABLE bei %C in einer STRUCTURE-DefinitionAttribut ALLOCATABLE bei %C in einer TYPE-DefinitionAttribut ALLOCATABLE nicht zulÃ¤ssig fÃ¼r %qs in %s Ortsangabe bei %LALLOCATABLE-Objekt %qs in Klausel %s bei %LALLOCATABLE auÃŸerhalb des INTERFACE-KÃ¶rpers bei %L angegebenDie ALLOCATE-Direktive bei %L innerhalb einer Zielregion muss eine ALLOCATOR-Klausel angebenDie ALLOCATE-Direktive bei %L innerhalb einer Zielregion muss eine ALLOCATOR-Klausel fÃ¼r %qs angebenALLOCATE ObjektALLOCATE von Koarray bei %C in CRITICAL-BlockALLOCATE von Koarray bei %C in DO CONCURRENT-BlockDas intrinsische ALLOCATED bei %L erfordert ein Feld oder eine skalar allozierbare EntitÃ¤tDie ALLOCATORS-Direktive bei %L innerhalb einer Zielregion muss einen ALLOCATOR-Modifikator fÃ¼r %qs angebenALTERNATE RETURN bei %L nicht erlaubtwiedereinsprungsfÃ¤higer APCS-Code nicht unterstÃ¼tzt. IgnoriertARMv8-M Security Extensions sind mit der gewÃ¤hlten FPU inkompatibelASSIGN-Anweisung bei %CASSIGN-Anweisung bei %L erfordert eine skalare Standard-INTEGER-VariableAnweisung ASSIGNED GOTO bei %L erfordert eine skalare INTEGER-VariableASSIGNED-Variable in FORMAT-Markierung bei %LASSOCIATE-Konstrukt bei %CASYNCHRONOUS-Attribut bei %CASYNCHRONOUS-Attribut nicht zulÃ¤ssig fÃ¼r %qs in REDUCE-Ortsangabe bei %LASYNCHRONOUS-Anweisung bei %CASYNCHRONOUS= bei %L ist in Fortran 95 nicht erlaubtATOM-Argument bei %L der intrinsischen Funktion %s muss Koarray oder koindiziert seinATOM-Argument bei %L fÃ¼r intrinsische Funktion %s muss eine ATOMIC_INT_KIND-Ganzzahl seinATOM-Argument bei %L fÃ¼r intrinsische Funktion %s muss eine ATOMIC_INT_KIND-Ganzzahl oder ein ATOMIC_LOGICAL_KIND-Logikwert seinATOM-Argument der intrinsischen Funktion Â»%sÂ« bei %L muss definierbar seinAUX-Zeiger fÃ¼r Kante %d->%d initialisiertAVX-Vektorargument ohne eingeschaltetes AVX Ã¤ndert das ABIAVX-VektorrÃ¼ckgabe ohne eingeschaltetes AVX Ã¤ndert das ABIAVX512F-Vektorargument ohne eingeschaltetes AVX512F Ã¤ndert das ABIAVX512F-VektorrÃ¼ckgabe ohne eingeschaltetes AVX512F Ã¤ndert das ABIAbkÃ¼rzung fÃ¼r Â»-g -feliminate-unused-debug-symbolsÂ«.AbkÃ¼rzung fÃ¼r Â»-g -fno-eliminate-unused-debug-symbolsÂ«.Der absolute Wert von SHIFT muss kleiner oder gleich SIZE bei %C seinAbstrakte Schnittstelle %qs ist in Zuweisung des Prozedurzeigers bei %L ungÃ¼ltigCOBOL-Konstrukte, die von Nicht-ISO-Compilern verwendet werden, akzeptierenUnpassende Argumente in Prozeduraufrufen akzeptieren.Erweiterungen akzeptieren, um alten Code zu unterstÃ¼tzen.Auf Daten im gleichen Abschnitt von gemeinsam verwendeten Ankerpunkten zugreifen.Offset des Zugriffs liegt vor dem Offset des ElternteilsZugriff Ã¼berschneidet sich mit seinem GeschwisterteilGrÃ¶ÃŸe des Zugriffs ist grÃ¶ÃŸer oder gleich der Ã¼bergeordneten GrÃ¶ÃŸeZugriffsspezifikation des Operators %s bei %C wurde bereits spezifiziertZugriffsspezifikation des Operators .%s. bei %C wurde bereits spezifiziertZugriff endet auÃŸerhalb des ElternteilsEffektives CLASS-Feldargument fÃ¼r %qs muss ein vollstÃ¤ndiges Feld bei %L seinEffektives Argument bei %L fÃ¼r INTENT(%s)-Dummy %qs von ELEMENTAL-Unterprogramm %qs ist skalar, aber ein anderes effektives Argument ist ein FeldArgument bei %L von der intrinsischen Funktion %qs muss ein verbundener Zeiger seinEffektives Argument bei %L an reservierbares oder Zeiger-Scheinargument %qs muss Parameter mit Typ aufgeschobener LÃ¤nge haben, genau dann, wenn das Scheinargument einen solchen hatArgument bei %L fÃ¼r den angenommenen Typ des Dummys hat Typparameter oder hat einen abgeleiteten Typ mit typgebundenen oder FINAL-ProzedurenEffektives Argument enthÃ¤lt zuwenige Elemente fÃ¼r Scheinargument %qs (%lu/%lu) bei %LDas tatsÃ¤chliche Argument fÃ¼r %qs bei %L ist ein Funktionsergebnis und das Dummy-Argument ist ALLOCATABLETatsÃ¤chliches Argument fÃ¼r %qs bei %L muss ein Zeiger seinTatsÃ¤chliches Argument fÃ¼r %qs bei %L muss ein Zeiger oder ein gÃ¼ltiges Ziel fÃ¼r den Dummy-Zeiger in einer Anweisung fÃ¼r Zeiger-Zuweisung seinEffektives Argument fÃ¼r %qs kann nicht Feld vermuteter GrÃ¶ÃŸe bei %L seinEffektives Argument fÃ¼r %qs muss ALLOCATABLE bei %L seinEffektives Argument mit EVENT_TYPE oder mit EVENT_TYPE-Komponente bei %L erfordert eine explizite Schnittstelle fÃ¼r Prozedur %qsEffektives Argument mit LOCK_TYPE oder mit LOCK_TYPE-Komponente bei %L erfordert eine explizite Schnittstelle fÃ¼r Prozedur %qsEffektives Argument fÃ¼r %qs bei %L sein muss Koarray seinEffektives Argument fÃ¼r %qs bei %L muss polymorph seinEffektives Argument fÃ¼r %qs bei %L muss einfach fortlaufend oder ein Element eines solchen Feldes seinEffektives Argument fÃ¼r %qs bei %L muss unbegrenzt polymorph sein, da das formale Argument ein Zeiger oder reservierbare unbegrenzt polymorphe EntitÃ¤t ist [F2008: 12.5.2.5]Effektives Argument fÃ¼r %qs bei %L muss denselben deklarierten Typ habenArgument des INTENT(OUT)-Dummy fÃ¼r angenommenen Rang %qs bei %L muss eine bekannte GrÃ¶ÃŸe habenEffektives Argument fÃ¼r fortlaufenden Schein-Zeiger %qs bei %L muss einfach fortlaufend seinEffektives Argument fÃ¼r Nicht-INTENT(INOUT)-Platzhalter %qs bei %L mit Typ EVENT_TYPE oder einer EVENT_TYPE-KomponenteEffektives Argument fÃ¼r Nicht-INTENT(INOUT)-Platzhalter %qs bei %L mit Typ LOCK_TYPE oder einer Komponente LOCK_TYPEEffektive ZeichenkettenlÃ¤nge passt nicht zur deklarierten fÃ¼r Scheinargument Â»%sÂ« (%ld/%ld)Effektive ZeichenkettenlÃ¤nge ist kÃ¼rzer als die deklarierte fÃ¼r Scheinargument Â»%sÂ« (%ld/%ld)CS-PrÃ¤fix zu call und jmp zu indirektem Thunk hinzufÃ¼gen, wenn das Verzweigungsziel in den Registern r8-r15 liegt.Einen Durchlauf zur Entfernung von TeilausdrÃ¼cken nach Schleifenoptimierungen hinzufÃ¼gen.Kommentare hinzufÃ¼gen, wenn Deklarationen im generierten C++-Header ignoriert werden.Beschreibungsattribute zu einigen DWARF-DIEs hinzufÃ¼gen, die kein Namensattribut haben.AusdrÃ¼ckliche PrÃ¼fungen fÃ¼r Division durch Null hinzufÃ¼gen.AusdrÃ¼ckliche PrÃ¼fungen fÃ¼r DivisionsÃ¼berlauf in INT_MIN / -1 hinzufÃ¼gen.ZusÃ¤tzliche Anmerkungen zu Diagrammen hinzufÃ¼gen.ZusÃ¤tzliche Anmerkungen an Assemblerausgabe anfÃ¼gen.ZusÃ¤tzliche Informationen speicherm die das dynamische Laden beschleunigen kÃ¶nnen, solange die BinÃ¤rdateien unverÃ¤ndert bleiben.Ausgabeformat hinzufÃ¼gen.Den Abschnittsnamen Â».lowerÂ« voranstellen, wenn mit Â»-m{code,data}-region=lowerÂ« Ã¼bersetzt wird (Vorgabe: nein).ZusÃ¤tzliche Fehlerprotokollausdrucke.Maximal erlaubte GrÃ¶ÃŸenzunahme der GesamtgrÃ¶ÃŸe der neuen Parameter, bis zu der IPA-RSA Zeiger auf Aggregate ersetzt, wenn der Zeiger auf eine lokale Variable zeigt, die vom Aufrufer nur geschrieben oder als Funktionsargument Ã¼bergeben wird.Nach dem Erkennen von undefiniertem Verhalten versuchen, die AusfÃ¼hrung fortzusetzen.Schleifen aggressiv optimieren, dabei sprachspezifische EinschrÃ¤nkungen einbeziehen.Interner Fehler: Alias and target%'s comdat groups differsInterner Fehler: Alias and target%'s section differsAlias fÃ¼r Â»-mcpu=g10Â«.Alias fÃ¼r Â»-mcpu=g13Â«.Alias fÃ¼r Â»-mcpu=g14Â«.Interner Fehler: Alias has call edgesInterner Fehler: Alias has more than one alias referenceInterner Fehler: Alias has non-alias referenceAlias:Alle Marken ausrichten.Alle Schleifen auf 32-Byte-Grenzen ausrichten.Code und Daten auf 32 Bit ausrichten.Ziel der Zeichenkettenoperationen ausrichten.Doubles auf 64-Bit-Grenzen ausrichten.Funktionseinsprung an 4-Byte-Grenze ausrichten.Marken ausrichten, die nur mit SprÃ¼ngen erreicht werden kÃ¶nnen.Einige Doubles auf DWord-Grenze ausrichten.Die AnfÃ¤nge jeder Funktion ausrichten.FunktionsanfÃ¤nge ausrichten.SchleifenanfÃ¤nge ausrichten.Auf Basistyp des Bitfeldes ausrichten.Auf Basistyp des Bitfeldes ausrichten. Nicht annehmen, dass unausgerichtete Zugriffe vom System behandelt werden.Variablen auf 32-Bit-Grenzen ausrichten.Alle LEN-Typparameter des hereingereichten Dummyarguments %qs von %qs bei %L mÃ¼ssen ASSUMED sein.Alle Dateien, die eine solche Variable freigeben kÃ¶nnten, mÃ¼ssen mit %<-fopenmp-allocators%> kompiliert werdenAlle intrinsischen Prozeduren sind ungeachtet des gewÃ¤hlten Standards verfÃ¼gbar.Alle LEN-Typparameter in der TYPE-IS-Anweisung bei %C mÃ¼ssen ASSUMED seinZuordnungsfÃ¤higes %qs bei %L kann keine Initialisierung habenReservierbares Feld %qs bei %L muss aufgeschobene Form oder vermuteten Rang habenDas allozierbare Zeichen-Dummy-Argument %qs bei %L muss eine verzÃ¶gerte LÃ¤nge haben, da die Prozedur %qs BIND(C) istZuordnungsfÃ¤hige Koarray-Variable %qs bei %L muss aufgeschobene Form habenAllozierbare Komponente %s bei %L muss eine Kodimension haben, da sie eine Subkomponente als Nicht-Koarray des Typs EVENT_TYPE hatAllozierbare Komponente %s bei %L muss eine Kodimension haben, da es eine Subkomponente als Nicht-Koarray des Typs LOCK_TYPE hatAllozierbare Komponente %s bei %L des Typs EVENT_TYPE muss eine Kodimension habenAllozierbare Komponente %s bei %L des Typs LOCK_TYPE muss eine Kodimension habenAllozierbare Komponente der Struktur bei %C muss eine aufgeschobene Form habenAllozierbare Komponente oder deferred-shaped-Feld bei %C in DATA-AnweisungReservierbare Funktion %qs bei %L muss eine explizite Funktionsschnittstelle habenLokale Variablen auf Stapel anlegen, um indirekte Rekursion zu ermÃ¶glichen.Allocate-Objekt bei %C ist kein Nicht-Prozedur-Zeiger oder reservierbare VariableALLOCATE-Objekt bei %L tritt auch bei %L aufAllocate-Objekt bei %L hat Rang %d, aber MOLD=-Ausdruck bei %L hat Rang %dALLOCATE-Objekt bei %L ist weder ein Datenzeiger noch eine reservierbare VariableALLOCATE-Objekt bei %L ist Subobjekt des Objekts bei %LALLOCATE-Objekt bei %L muss ALLOCATABLE oder ein POINTER seinALLOCATE-Objekt bei %L mit Parameter aufgeschobenen Typs erfordert entweder eine Typspezifikation, SOURCE-Marke oder MOLD-MarkeReservierung von %s bei %L mit Typspezifikation erfordert den selben ZeichenkettenlÃ¤ngenparameter wie in der DeklarationReservierung von %s mit ABSTRACT-Basistyp bei %L erfordert Typspezifikation oder QuellausdruckAllokator %qs bei %L in USES_ALLOCATORS muss eine skalare Ganzzahl der Art %<omp_allocator_handle_kind%> seinAllokator %qs bei %L in USES_ALLOCATORS muss entweder eine Variable oder ein vordefinierter Allokator seinGCC erlauben (oder verbieten), LOOP-Befehle zu verwenden.IEC559-Gleitkommaausnahmen in konstanten AusdrÃ¼cken zulassen.Eine literale BOZ-Konstante in einem ungÃ¼ltigen Kontext erlauben, sowie mit X statt mit Z.Zugriff auf Instanzvariablen erlauben, als ob sie lokale Deklarationen innerhalb der Instanzmethoden-Implementierungen wÃ¤ren.Im festen Modus beliebig lange Zeilen erlauben.Im freien Modus beliebig lange Zeilen erlauben.Zulassen, dass Bitfelder Wortgrenzen Ã¼berschneiden.Erlauben, SprÃ¼nge mit anderen Befehlen zu packen.Den eingebauten Funktionen ceil, floor, round, trunc erlauben, Â»inexactÂ«-Exceptions zu werfen.Dollarzeichen in EntitÃ¤tsnamen erlauben.Schnelle SprÃ¼nge zum Nachrichten-Dispatcher erlauben.Vorhalten von Funktionsadressen in Registern erlauben.GCC erlauben, LIW-Befehle zu verwenden.GCC erlauben, SETLB- und Lcc-Befehle zu verwenden.Hardware-Gleitkommabefehle erlauben, um 32-Bit- und 64-Bit-Befehle abzudecken.Implizite Umwandlungen zwischen Vektoren mit unterschiedlicher Anzahl der Teile und/oder abweichenden Elementtypen erlauben.Erlauben, dass der dynamische Binder Funktionen und Variablen mit solchen unterschiedlicher Semantik (oder Initialisierungen) gemischt platzieren darf.Mathematische Optimierungen erlauben, die IEEE- oder ISO-Standards verletzen kÃ¶nnten.Optimierung fÃ¼r Gleitkommaarithmetik erlauben, auch wenn durch Runden ein anderes Ergebnis herauskommen kann.Nicht ausgereifte Planung von eingereihten Befehlen erlauben.Nur-Lese-Daten in sdata-Abschnitt erlauben.Das Entfernen von malloc- und free-Paaren erlauben, wenn der allozierte Block ungenutzt ist.Vorzeichenerweiterung in Fusionsoperationen erlauben.Spekulative Bewegung bei mehr Ladebefehlen erlauben.Spekulative Bewegung von Nicht-Lade-Befehlen erlauben.Spekulative Bewegung bei einigen Ladebefehlen erlauben.Verschiedene Typen fÃ¼r die Argumente des Â»?Â«-Operators erlauben.Dem Compiler erlauben, neue DatenwettlÃ¤ufe bei SpeichervorgÃ¤ngen einzufÃ¼hren.Im Durchlauf, der Speicheroperationen zusammenfasst, unausgerichtete Speicherungen zulassen, sofern es erlaubt ist.Verwendung von MDMX-Befehlen erlauben.Verwendung von MT-Befehlen erlauben.Verwendung von Hardware-Gleitkommabefehlen fÃ¼r V850E2V3 und aufwÃ¤rts erlauben.Verwendung von Hardware-Gleitkomma-ABI und -befehlen erlauben.FÃ¼r Festkomma-Bruchzahlen das Abschneiden statt Runden erlauben.Zwei Befehle pro Taktzyklus erlauben.Verwendung von r15 fÃ¼r Inline-Assembler erlauben.Bereits in CONTAINS-Block bei %CAlternative RETURN-Anweisung bei %C ist nur innerhalb einer SUBROUTINE erlaubtAlternative RETURN-Anweisung bei %L erfordert einen SCALAR-INTEGER-Spezifizierer als RÃ¼ckgabeAlternative Aufrufkonvention.Alternativer RÃ¼cksprung bei %L ist in einer DTIO-Prozedur nicht erlaubtAlternative RÃ¼ckgabe kann nicht in Operatorschnittstelle bei %L auftretenAlternatives RÃ¼ckgabe-Dummyargument kann nicht in einer SUBROUTINE mit BIND(C)-Attribut bei %L auftretenAlternativer RÃ¼ckgabespezifizierer in elementarem Unterprogramm %qs bei %L ist nicht erlaubtAlternativer RÃ¼ckgabespezifizierer in Funktion %qs bei %L ist nicht erlaubtArgument fÃ¼r AlternativrÃ¼ckgabe bei %CObwohl nicht referenziert, hat %qs mehrdeutige Schnittstellen bei %LAltiVec-Argument an Funktion ohne Prototyp Ã¼bergebenAltiVec wird fÃ¼r dieses Ziel nicht unterstÃ¼tztFunktionseinsprung, Sprungziele und RÃ¼cksprungadressen ausrichten.Immer weite Aufrufe erzeugen.Atomare Operationen, die sich auf TeilwÃ¶rter beziehen, stets inlinen.Register $lp immer auf dem Stapel speichern.Bitfelder immer als gleichgroÃŸ wie Â»intÂ« ansehen.Immer Dynamic Realigned Argument Pointer (DRAP) verwenden, um den Stapel neu auszurichten.Immer JSR fÃ¼r Aufrufe verwenden, niemals BSR.Mehrdeutiges !$OMP DECLARE REDUCTION von Modul %s bei %LMehrdeutige Schnittstellen in %s fÃ¼r %qs bei %L und %qs bei %LMehrdeutiges Symbol in TYPE-Definition bei %CDie geeignete Diagnosemeldung mit der Kommandozeilenoption anreichern, die sie steuert.Die Menge an lokalem, gemeinsam genutztem Speicher (LDS), die fÃ¼r private Gang-Variablen reserviert werden soll.Eine ALLOCATOR-Klausel ist erforderlich, da das Listenelement %<%s%s%s%> bei %L das Attribut SAVE hatAlias fÃ¼r Â»-minterlink-compressedÂ«; fÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤t erhalten.Alternative RÃ¼ckkehr bei %L ohne ein *-ScheinargumentInterner Fehler: An indirect edge from %s is not marked as indirect or has associated indirect_info, the corresponding statement is: Ein Ã¤uÃŸeres FORALL-Konstrukt hat bereits einen Index mit Namen %LDoppelwort-Vertauschungen aus VSX-Berechnungen analysieren und entfernen.Interner Fehler: Analyzed alias has no referenceAssemblerbefehle mit geschÃ¤tzten Adressen kommentieren.Tabellensprunganweisung (jr {reg}) mit Anmerkungen versehen, um sie mit der Sprungtabelle zu verknÃ¼pfen.Einen zweiten Unterstrich anhÃ¤ngen, wenn der Name bereits einen Unterstrich enthÃ¤lt.Unterstriche an extern sichtbare Namen anhÃ¤ngen.Negatives Vorzeichen auf Null-Werte anwenden.Besondere Regeln anwenden, um Paket fÃ¼r die Laufzeitumgebung zu kompilieren.Variablenerweiterung anwenden, wenn Schleifen abgerollt werden.UngefÃ¤hre Anzahl der Befehle in der Funktion, in Einheiten von 1k, die zu einer einfachen lokalen RA fÃ¼hren.Die Auswirkungen von Funktionsaufrufen abschÃ¤tzen, um die Analyse zu vereinfachen.Argument %<A%> mit INTENT(OUT) bei %L des intrinsischen Unterprogramms %s darf keinen Vektorindex habenArgument %<S%> von NEAREST bei %L darf nicht Null seinArgument %qs tritt im Aufruf von %qs bei %L doppelt aufDas Argument %qs bei %L zu der deklarativen Direktive !$OMP ALLOCATE muss eine Variable seinDas Argument %qs bei %L zu deklarativem !$OMP ALLOCATE muss sich im selben Bereich befinden wie die VariablendeklarationArgument %qs bei %L zu Listenelement in %<need_device_addr%> bei %L darf nicht das Attribut VALUE habenDas Argument %qs bei %L zum Listenelement in %<need_device_ptr%> bei %L muss ein Skalar vom TYP(C_PTR) seinArgument %qs des intrinsischen %qs bei %L muss typkonform zu Argument %qs bei %L seinArgument %qs von %qs mit PASS(%s) bei %L darf nicht ALLOCATABLE seinArgument %qs von %qs mit PASS(%s) bei %L darf kein POINTER-Attribut habenArgument %qs von %qs mit PASS(%s) bei %L muss abgeleiteten Typ %qs habenArgument %qs von %qs mit PASS(%s) bei %L muss abgeleiteten Typ %qs habenArgument %qs von %qs mit PASS(%s) bei %L muss den parametrisierten abgeleiteten Typ %qs habenParameter %qs von %qs mit PASS(%s) bei %L muss skalar seinArgument %qs von MOD bei %L darf nicht Null seinArgument %qs von MODULO bei %L darf nicht 0 seinFÃ¼r Argument %qs des elementaren Unterprogrammes %qs bei %L muss INTENT oder das VALUE-Attribut angegeben werdenArgument %qs der elementaren Prozedur bei %L kann kein ALLOCATABLE-Attribut habenArgument %qs der elementaren Prozedur bei %L kann kein POINTER-Attribut habenArgument %qs der elementaren Prozedur bei %L muss skalar seinArgument %qs der reinen Funktion %qs bei %L muss INTENT(IN) oder VALUE seinArgument %qs der reinen Funktion %qs bei %L mit VALUE-Attribut, aber ohne INTENT(IN)FÃ¼r Argument %qs des reinen Unterprogrammes %qs bei %L muss INTENT oder das VALUE-Attribut angegeben werdenArgument %qs des reinen Unterprogrammes %qs bei %L mit VALUE-Attribut, aber ohne INTENTArgument %qs der Anweisungs-Funktion %qs bei %L muss skalar seinArgument CPTR bei %L fÃ¼r C_F_POINTER muss den Typen TYPE(C_PTR) habenArgument CPTR bei %L fÃ¼r C_F_PROCPOINTER muss den Typen TYPE(C_FUNPTR) habenArgument C_PTR_1 bei %L fÃ¼r C_ASSOCIATED muss den Typ TYPE(C_PTR) oder TYPE(C_FUNPTR) habenArgument C_PTR_2 bei %L fÃ¼r C_ASSOCIATED muss denselben Typ wie C_PTR_1 haben, %s statt %s gefundenArgument FPTR bei %L fÃ¼r C_F_POINTER muss ein Zeiger seinArgument FPTR fÃ¼r C_F_POINTER bei %L darf nicht koindiziert seinArgument FPTR bei %L fÃ¼r C_F_PROCPOINTER muss ein Prozedurzeiger seinArgument FPTR bei %L fÃ¼r C_F_PROCPOINTER darf nicht koindiziert seinArgument NCOPIES des intrinsischen REPEAT ist negativ (sein Wert ist %ld)Argument NCOPIES des intrinsischen REPEAT ist bei %L negativArgument NCOPIES des intrinsischen REPEAT ist zu groÃŸArgument NCOPIES des intrinsischen REPEAT ist bei %L zu groÃŸArgument X bei %L fÃ¼r C_FUNLOC muss eine Prozedur oder ein Prozedurzeiger seinArgument X bei %L fÃ¼r C_FUNLOC darf nicht koindiziert seinArgument X bei %L fÃ¼r C_LOC darf keine Zeichenkette der LÃ¤nge 0 seinArgument X bei %L fÃ¼r C_LOC muss entweder POINTER- oder TARGET-Attribut habenArgument X bei %L fÃ¼r C_LOC darf nicht koindiziert seinArgument bei %L fÃ¼r C_LOC darf nicht polymorph seinArgument dim bei %L muss INTEGER-Typ habenArgument dim bei %L muss skalar seinArgumentindex bei %L Ã¼bersteigt Anzahl der Argumente %dUnpassende Argumente fÃ¼r die Ã¼berschreibende Prozedur %qs bei %L: %sArgument von %s bei %L muss von der LÃ¤nge eins seinArgument der Funktion %s bei %L ist negativArgument der Funktion %s bei %L ist zu groÃŸ fÃ¼r die zusammenfassende Sequenz der Art %dArgument der Funktion %s bei %L auÃŸerhalb des Wertebereichs [0,127]Argument von ACOS bei %L muss zwischen -1 und 1 liegenArgument von ACOSD bei %L muss zwischen -1 und 1 liegenArgument von ACOSH bei %L darf nicht kleiner als 1 seinArgument von ASIN bei %L muss zwischen -1 und 1 liegenArgument von ASIND bei %L muss zwischen -1 und 1 liegenArgument von ATANH bei %L muss im Bereich -1 bis 1 liegenArgument der FINAL-Prozedur bei %L muss Typ %qs habenArgument der FINAL-Prozedur bei %L darf nicht ALLOCATABLE seinArgument der FINAL-Prozedur bei %L darf nicht INTENT(OUT) seinArgument der FINAL-Prozedur bei %L darf nicht OPTIONAL seinArgument der FINAL-Prozedur bei %L darf kein POINTER seinArgument von IACHAR bei %L muss LÃ¤nge Eins habenArgument der IACHAR-Funktion bei %L auÃŸerhalb des Wertebereiches 0..127Argument von ICHAR bei %L muss LÃ¤nge Eins habenArgument von LOG bei %L kann nicht kleiner oder gleich Null seinArgument von LOG10 bei %L kann nicht kleiner oder gleich Null seinArgument der SELECT-Anweisung bei %L kann nicht %s seinArgument der SELECT-Anweisung bei %L muss ein skalarer Ausdruck seinArgument von SQRT bei %L hat negativen WertArgument fÃ¼r %<-fcheck%> ist ungÃ¼ltig: %sArgument fÃ¼r %<-ffpe-summary%> ist ungÃ¼ltig: %sArgument fÃ¼r %<-ffpe-trap%> ist ungÃ¼ltig: %sArgumenttypen des intrinsischen %qs bei %L mÃ¼ssen passen (%s/%s)Argumente von %qs bei %L und %L kÃ¶nnen nicht beide literale BOZ-Konstanten seinArgumente von %qs unterscheiden sich im Typ bei %LArithmetische IF-Anweisung bei %CArithmetische IF-Anweisung bei %L erfordert einen skalaren REAL- oder INTEGER-AusdruckArithmetisches NaN bei %LArithmetisches NaN bei Umwandlung von %s in %s bei %L. Diese ÃœberprÃ¼fung kann mit der Option %<-fno-range-check%> ausgeschaltet werdenArithmetik OK bei %LArithmetik OK beim Konvertieren von %s in %s bei %LArithmetik-Ãœberlauf bei %LArithmetischer Ãœberlauf bei Umwandlung von %s in %s bei %L. Diese ÃœberprÃ¼fung kann mit der Option %<-fno-range-check%> ausgeschaltet werdenArithmetik-Unterlauf bei %LArithmetischer Unterlauf bei Umwandlung von %s in %s bei %L. Diese ÃœberprÃ¼fung kann mit der Option %<-fno-range-check%> ausgeschaltet werdenFeld %qs bei %L kann keine aufgeschobene Form habenFeld %qs bei %L ist eine Variable, die nicht zu konstantem Ausdruck reduziertDas Feld %qs bei %L ist grÃ¶ÃŸer als der Grenzwert, der durch %<-fmax-stack-var-size=%> festgelegt wurde, daher wurde es vom Stapel in den statischen Speicher verschoben. Dies macht die Prozedur unsicher, wenn sie rekursiv oder gleichzeitig von mehreren Threads aus aufgerufen wird. ErwÃ¤gen Sie, die Grenze fÃ¼r %<-fmax-stack-var-size=%> anzuheben, verwenden Sie %<-frecursive%> (dadurch wird die BeschrÃ¤nkung von %<-fmax-stack-var-size%> aufgehoben), oder Ã¤ndern Sie den Code so, dass er ein ALLOCATABLE-Feld verwendet. Wenn auf die Variable niemals nebenlÃ¤ufig zugegriffen wird, kÃ¶nnen Sie diese Warnung ignorieren, Sie kÃ¶nnten diese Variable auch mit dem Attribut SAVE deklarieren.Feld %qs bei %L mit nicht-konstanten Grenzen kann kein EQUIVALENCE-Objekt seinFeld %qs ist nicht in Reduzierung bei %L erlaubtUnstimmige Arraygrenzen fÃ¼r Dimension 1 des Arrays (%ld/%ld)Unstimmige Arraygrenzen fÃ¼r Dimension 2 des Arrays (%ld/%ld)Feldkomponente der Struktur bei %C muss eine explizite Form habenFeldkomponente der Struktur bei %C muss explizite oder aufgeschobene Form habenFeldkonstruktor mit Typspezifikation bei %CFeldkonstruktorwert %qs bei %L ist vom ABSTRACT-Typ %qsWert fÃ¼r Feldkonstruktor bei %L darf nicht unbegrenzt polymorph sein [F2008: C4106]FeldentitÃ¤t bei %L benÃ¶tigtFeld in der Initialisierungsliste bei %L muss eine explizite Form habenFeldindex bei %L ist ein Feld mit Rang %dFeldindex bei %L muss INTEGER-Typ haben, %s gefundenFeldindex bei %L muss skalar seinFeld ist nicht zusammenhÃ¤ngend bei %LFeld von interoperablem Typ bei %L fÃ¼r C_LOC; es ist nichtallozierbar und hat weder angenommene noch explizite GrÃ¶ÃŸeArray-Operanden sind unzureichend bei %LArrayoperanden sind unzureichend beim Konvertieren von %s in %s bei %LFeldzeiger %qs bei %L muss aufgeschobene Form oder vermuteten Rang habenFeldreferenz bei %C kann nicht mehr als %d Dimensionen habenFeldreferenz bei %C darf nur maximal 7 Dimensionen habenFeldreferenz bei %L ist auÃŸerhalb der Grenzen (%ld < %ld) in Kodimension %dFeldreferenz bei %L ist auÃŸerhalb der Schranken (%ld < %ld) in Dimension %dFeldreferenz bei %L ist auÃŸerhalb der Grenzen (%ld > %ld) in Kodimension %dFeldreferenz bei %L ist auÃŸerhalb der Schranken (%ld > %ld) in Dimension %dFeldreferenz bei %L ist auÃŸerhalb der Grenzen (%ld < %ld) in Schleife, die bei %L beginntFeldreferenz bei %L ist auÃŸerhalb der Grenzen (%ld > %ld) in Schleife, die bei %L beginntFeldreferenz in EQUIVALENCE bei %C kann kein Feldabschnitt seinFeldreferenz auÃŸerhalb des WertebereichsFeldabschnitt bei %L fÃ¼r C_LOCFeldabschnittbestimmer, z.B. %<(:)%>, wird neben dem Koarray-Bezeichner %<[...]%> bei %C benÃ¶tigtFeldabschnitt mit Vektorindex bei %L darf nicht das Ziel eines Zeigers seinFeldabschnitte: %qs ist in !$ACC DECLARE bei %L nicht erlaubtFeldspezifikation bei %C hat mehr als %d DimensionenFeldspezifikation bei %C mit mehr als 7 DimensionenFeldspezifikation fÃ¼r Symbol %qs in COMMON bei %C muss explizit seinFeldspezifikation muss bei %L aufgeschoben werdenFeldspezifikation oder feldwertiger SOURCE=-Ausdruck erforderlich in ALLOCATE-Anweisung bei %LIn ALLOCATE-Anweisung bei %L ist Feld-Spezifikation erforderlichFeldbereich als effektives Argument bei %L ist wegen VOLATILE-Attribut unvertrÃ¤glich mit dem Scheinargument ohne vermutete Form %qsFeldbereich mit Vektorindex als effektives Argument bei %L ist unvertrÃ¤glich mit INTENT(OUT), INTENT(INOUT), VOLATILE- und ASYNCHRONOUS-Attribut des Scheinarguments %qsDa der erweiterte Typ %qs bei %L eine Koarray-Komponente hat, muss der Elterntyp %qs auch eine habenAssembleroptionen
  =================
  
! Zugewiesene GOTO-Anweisung bei %CZugewiesene Marke ist keine ZielmarkeZuweisung eines anderen Wertes als 0 oder 1 an LOGICAL hat bei %L undefiniertes ErgebnisZuweisung von Skalar zu unalloziertem ArraySchnittstelle fÃ¼r Zuweisungsoperator bei %L muss eine SUBROUTINE seinSchnittstelle des Zuweisungsoperators bei %L muss zwei Argumente habenSchnittstelle des Zuweisungsoperators bei %L darf keine INTRINSIC Typzuweisung redefinierenZuweisung an FORALL-Indexvariable bei %LDie Zuweisung zu einer KIND- oder LEN-part_ref bei %L ist nicht erlaubtZuweisung an einen konstanten Ausdruck bei %CZuweisung an allozierbare polymorphe Variable bei %LZuweisung an allozierbare polymorphe Variable bei %L erfordert %<-frealloc-lhs%>Zuweisung an koindizierte Variable bei %L in einer PURE-ProzedurZuweisung an zusammenhÃ¤ngenden Zeiger von nichtzusammenhÃ¤ngendem Ziel bei %LZuweisung an polymorphes Koarray bei %L ist nicht erlaubtAssociate-Name %qs in %s-Klausel bei %LAssociate-Name %qs in SHARED-Klausel bei %LZugeordneter Name %qs bei %L wird als Feld verwendetAssociate-Name %qs kann nicht in Variablen-Definitionskontext (%s) bei %L auftreten, da sein Ziel bei %L es auch nicht kannZuordnende EntitÃ¤t %qs bei %L ist ein ProzedurnameZuordnende EntitÃ¤t %qs bei %L ist ein ProzedurzeigerDer zuordnende Selektor-Ausdruck bei %L ergibt eine ProzedurVerknÃ¼pfungsziel bei %C darf nicht koindiziert seinZuordnungsziel bei %L darf kein BOZ-Literal seinAnnehmen, dass die in C++ ersetzbaren globalen Operatoren new, new[], delete und delete[] den sichtbaren globalen Speicher weder auslesen noch beschreiben.Annehmen, dass ES wÃ¤hrend der gesamten Laufzeit 0 ist; verwenden Sie ES: fÃ¼r schreibgeschÃ¼tzte Daten.Annahme, dass ICPLBs zur Laufzeit eingeschaltet sind.Von einem groÃŸen TLS-Segment ausgehen.Annehmen, dass alle Symbole 32-Bit-Werte haben.Annehmen, dass alle Funktionen mit variablen Argumenten Prototypen haben.Assembler-UnterstÃ¼tzung fÃ¼r (DWARF2+-).loc-Direktiven annehmen.Assembler-UnterstÃ¼tzung fÃ¼r Ansicht in (DWARF2+-).loc-Direktiven annehmen.Annehmen, dass der Code mit GAS assembliert wird.Annehmen, dass der Code spÃ¤ter mit GNU ld gebunden wird.Annehmen, dass der Code spÃ¤ter mit HP ld gebunden wird.Annehmen, dass gemeinsame Deklarationen durch solche Ã¼bersteuert werden dÃ¼rfen, die ein lÃ¤ngeres hintangestelltes Array haben.Annehmen, dass Datensegmente relativ zum Textsegment liegen.Annehmen, dass externe Symbole, deren natÃ¼rliche Ausrichtung 1 wÃ¤re, potenziell nicht ausgerichtet sind. StandardmÃ¤ÃŸig wird bei allen Symbolen ohne explizite Ausrichtung davon ausgegangen, dass sie sich auf einer 2-Byte-Grenze befinden, wie von der IBM-Z-ABI vorgeschrieben.Annehmen, dass Gleitkommaoperationen abgefangen werden kÃ¶nnen (Â»trapÂ«).Annehmen, dass der ankommende Stapel an dieser Potenz von 2 ausgerichtet ist.Annahme, dass Marken und Symbole mit absoluten 16-Bit-Adressen adressiert werden kÃ¶nnen.Annehmen, dass das Datenladen aus dem Flashspeicher langsamer ist als Befehle zu laden.Annehmen, dass die Speicherverweise geordnet sind und daher keine Barrieren erforderlich sind.Annehmen, dass keine NaNs oder Unendlichkeiten erzeugt werden.Normale C-AusfÃ¼hrungsumgebung vermuten.Annehmen, dass ZeigerÃ¼berlÃ¤ufe Ã¼berschlagen (Wraparound).MÃ¶gliche doppelte Fehlausrichtung annehmen.Rundung zur nÃ¤chsten Ganzzahl fÃ¼r Zwecke der Planung annehmen.Annehmen, dass vorzeichenbehaftete arithmetische ÃœberlÃ¤ufe regulÃ¤r Ã¼berschlagen (Wraparound).Kleinen Adressraum annehmen.Annehmen, dass strenge Alias-Regeln Ã¼ber nicht-inline-Funktionsgrenzen hinweg gelten.Annehmen, dass strenge Alias-Regeln gelten.Ziel-CPU als Â»big endianÂ«-konfiguriert annehmen.Ziel-CPU als Â»little endianÂ«-konfiguriert annehmen.Annehmen, dass auf alle Daten im statischen Speicher via LDS/STS zugegriffen werden kann. Diese Option ist nur fÃ¼r Reduced-Tiny-GerÃ¤te wie ATtiny40 sinnvoll.Annehmen, dass Gleitkomma-Speichern und -Laden wahrscheinlich keinen Konflikt verursachen, wenn sie in dieselbe Befehlsgruppe gelegt werden.Annehmen, dass Schleifen mit einem Ausgang keine Endlosschleifen sind.Annehmen, dass EmpfÃ¤nger von Objective-C-Nachrichten nil sein kÃ¶nnen.Annehmen, dass LaufzeitunterstÃ¼tzung vorhanden ist, und daher Â»-lsimÂ« von Binder-Kommandozeile auslassen.Annehmen, dass Standard-D-Laufzeitbibliotheken und Â»D mainÂ« vorhanden sind.Annahme, dass die reziproken abschÃ¤tzenden Befehle hÃ¶here Genauigkeit bieten.Annehmen, dass Quelldatei in fester Form vorliegt.Annehmen, dass Quelldatei in freier Form vorliegt.Annehmen, dass die Werte einer AufzÃ¤hlung immer im kleinsten Bereich des Typs liegen.Annehmen, dass bedingte SprÃ¼nge mit Weite Null schnell sind.VxWorks RTP-Umgebung vermuten.VxWorks vThreads-Umgebung vermuten.Einheitliche Syntax fÃ¼r Inline-Assemblercode annehmen.Variable %qs mit vermuteter oder aufgeschobener ZeichenlÃ¤nge in konstantem Ausdruck bei %LArgument bei %L des intrinsischen RESHAPE mit angenommenem Rang muss zusammenhÃ¤ngend seinFeld %qs mit vermutetem Rang in Klausel %s bei %LFeld %qs mit vermuteter Form bei %L ist nicht in einem Initialisierungs-Ausdruck erlaubtFeld mit vermuteter Form bei %L muss ein Scheinargument seinFeld %qs mit vermuteter GrÃ¶ÃŸe bei %L ist nicht in einem Initialisierungs-Ausdruck erlaubtFeld %qs mit vermuteter GrÃ¶ÃŸe in Klausel %s bei %LFeld %qs mit vermuteter GrÃ¶ÃŸe in Klausel COPYPRIVATE bei %LFeld %qs mit vermuteter GrÃ¶ÃŸe in Namensliste %qs bei %C ist nicht erlaubtFeld %qs mit vermuteter GrÃ¶ÃŸe in Namensliste %qs bei %L ist nicht erlaubtFeld mit vermuteter GrÃ¶ÃŸe bei %L muss ein Schein-Argument seinVermuteter Typ bei %CVermuteter Typ bei %C ist fÃ¼r Komponenten nicht erlaubtVermuteter Typ der Variable %s bei %L ist nur fÃ¼r Scheinvariablen erlaubtDas Zeichen-Dummy-Argument %qs bei %L hat eine angenommene LÃ¤nge und gehÃ¶rt zur Prozedur %qs mit Attribut BIND(C)Argument mit angenommenem Rang bei %L ist nur als tatsÃ¤chliches Argument der intrinsischen Abfragefunktionen oder von RESHAPE erlaubt. Letzteres ist ein experimentelles F202y-Feature. Verwenden Sie Â»-std=f202yÂ«, um es einzuschaltenArgument mit angenommenem Rang bei %L ist nur als erstes effektives Argument der intrinsischen Abfragefunktion Â»%sÂ« erlaubtArgument vermuteten Ranges erfordert eine explizite Schnittstelle bei %LFeld %qs mit vermutetem Rang bei %L ist nicht in einem Initialisierungs-Ausdruck erlaubtFeld mit vermutetem Rang bei %CFeld mit vermutetem Rang bei %L darf kein Attribut VALUE oder CODIMENSION habenFeld mit vermutetem Rang bei %L muss ein Scheinargument seinVariable %s vermuteten Ranges bei %L als effektives Argument fÃ¼r Abfragefunktion muss das erste Argument seinVariable %s vermuteten Ranges bei %L kann nur als effektives Argument verwendet werdenVariable Â»%sÂ« vermuteten Ranges bei %L darf keine Referenz auf Subobjekt habenEffektives Argument mit vermuteter Form bei %L ist wegen VOLATILE-Attribut unvertrÃ¤glich mit dem Scheinargument ohne vermutete Form %qsFeld mit angenommener Form %qs bei %L als Scheinargument fÃ¼r die BIND(C)-Prozedur %qs bei %LFeld %qs mit vermuteter Form bei %L ist nicht in einem Initialisierungs-Ausdruck erlaubtFeld mit angenommener GrÃ¶ÃŸe ist fÃ¼r %qs in Ortsangabe %s bei %L nicht erlaubtFelder mit angenommener GrÃ¶ÃŸe sind nicht interoperabelDummyfeld mit vermuteter GrÃ¶ÃŸe mit Â»!$ACC DECLAREÂ« bei %LArgument fÃ¼r angenommenen Typ bei %L, das dem Dummy-Argument %qs fÃ¼r den angenommenen Rang entspricht, muss von angenommener Form oder angenommenem Rang seinFeld mit vermutetem Rang bei %L erfordert Scheinargument %qs mit vermutetem RangArgument Â»%sÂ« bei %L vermuteten Typs erfordert eine explizite SchnittstelleArgument bei %L mit angenommenem Typ ist nicht als effektives Argument der intrinsischen Routine Â»%sÂ« erlaubtArgument bei %L mit angenommenem Typ ist nur als erstes Argument der intrinsischen Routine Â»%sÂ« erlaubtVariable %s vermuteten Typs bei %L als effektives Argument fÃ¼r Abfragefunktion muss das erste Argument seinVariable %s vermuteten Typs bei %L darf nicht die Attribute ALLOCATABLE, CODIMENSION, POINTER oder VALUE habenVariable %s vermuteten Typs bei %L darf nicht das Attribut INTENT(OUT) habenVariable %s vermuteten Typs bei %L kann nur als effektives Argument verwendet werdenVariable %s vermuteten Typs bei %L darf kein Feld mit ausdrÃ¼cklicher Form seinVariable %s vermuteten Typs bei %L darf keine Referenz auf Subobjekt habenIm globalen GÃ¼ltigkeitsbereich:Es werden hÃ¶chstens %i ProfildurchlÃ¤ufe unterstÃ¼tzt. Evtl. beschÃ¤digte Datei?Auf hÃ¶chster Ebene:Versuch, nicht reserviertes Â»%sÂ« freizugebenVersuchen, die VerzÃ¶gerungsschlitze der Sprungbefehle auszufÃ¼llen.Versuch, die COMMON-BlÃ¶cke %s und %s durch EQUIVALENCE bei %C indirekt zu Ã¼berschneidenVersuch, den Stapel an dieser Potenz von 2 auszurichten.Versuchen, identische Konstanten Ã¼ber Ãœbersetzungseinheiten hinweg zu verschmelzen.Versuchen, identische Konstanten und konstante Variablen zu verschmelzen.Versuchen, identische Zeichenketten zur Fehlersuche Ã¼ber Ãœbersetzungseinheiten hinweg zu verschmelzen.Interner Fehler: Attempting an assignment of differing types.Versuch, bereits reservierte Variable zu reservierenVersuch, bereits reservierte Variable Â»%sÂ« zu reservierenInterner Fehler: Attempting to send to an input device.Attribut %s bei %L in einer TYPE-DefinitionAttribut bei %L ist in STRUCTURE-Definition nicht erlaubtAttribut bei %L ist in TYPE-Definition nicht erlaubtAttribut bei %L ist auÃŸerhalb einer TYPE-Definition nicht erlaubtAdresslisten der Variablen mit progressiven Sichten anreichern.Erkennungszahl des AutoFDO-Profils passt nichtVersion %u des AutoFDO-Profils passt nicht zu %uAutomatisches Feld %qs bei %L kann keine Initialisierung habenAutomatisches Objekt %qs bei %L kann nicht in COMMON bei %L vorkommenAutomatisches Objekt %qs bei %L kann nicht das Attribut SAVE habenFÃ¼gt automatisch Platz fÃ¼r lÃ¤ngere Pfadnamen in Ladebefehlen hinzu (bis zu MAXPATHLEN).Zweigziele automatisch ausrichten, um Strafzyklen fÃ¼r Verzweigung zu verringern.VerfÃ¼gbare Werte fÃ¼r Bits:Durchschnittliche Anzahl der Iterationen einer Schleife.Alle Bereichsgrenzen bei Aufrufbefehlen vermeiden.Vermeiden, dass mehrere Anweisungen zu einer expandierten Kante zusammengefasst werden.Erzeugung PC-relativer Aufrufe verhindern; Indirektion verwenden.Erzeugung indizierter Laden/Speichern-Befehle verhindern, wo mÃ¶glich.Sich Ã¼berschneidende Ziel- und Adressregister bei solchen LDRD-Befehlen vermeiden, die Cortex-M3-Errata auslÃ¶sen kÃ¶nnen.Vermeiden, lesbare Daten in Programmspeicher abzulegen.Spekulative Ladeoperationen verhindern, um Hardwarebesonderheiten zu umgehen.Verwendung von DIV- und MOD-Befehlen verhindern.Die GOT mÃ¶glichst nicht verwenden, um auf externe Symbole zuzugreifen.Interner Compilerfehler: BB %i cannot throw but has an EH edgeInterner Compilerfehler: BB %i has incorrect edgeInterner Compilerfehler: BB %i has incorrect fallthru edgeInterner Compilerfehler: BB %i has multiple EH edgesInterner Compilerfehler: BB %i is missing an EH edgeInterner Compilerfehler: BB %i is missing an edgeInterner Compilerfehler: BB %i last statement has incorrectly set lpInterner Compilerfehler: BB %i too many fallthru edgesInterner Fehler: BB_RTL flag not set for block %dBIND(C)-Variable %qs bei %L muss LÃ¤nge eins habenBIND(C) auf %s %s bei %L angewendetBIND(C) bei %LBIND(C)-Attribut bei %C erfordert eine Schnittstelle mit BIND(C)BIND(C)-Attribut bei %L kann nur fÃ¼r Variablen oder gemeinsame BlÃ¶cke verwendet werdenBIND(C)-Attribut bei %L kann nicht fÃ¼r eine interne Prozedur angegeben werdenBIND(C)-Prozedur mit NAME darf kein POINTER-Attribut bei %C habenBIND(C)-Anweisung bei %CBLANK= bei %L ist in Fortran 95 nicht erlaubtBLOCK-DATA-Konstrukt bei %LBLOCK DATA Element %qs bei %L muss in COMMON seinBLOCK-Konstrukt bei %CBOZ bei %L kann nicht in einer Initialisierung alten Stils vorkommenBOZ-Konstante bei %C verwendet Nicht-Standard-Postfix-SyntaxBOZ-Konstante bei %L kann nicht innerhalb eines COMPLEX-intrinsischen Unterprogramms vorkommenBOZ-Konstante wird abgeschnitten, bei %Lliterale Konstante BOZDie BOZ-Literalkonstante bei %L darf nicht als Initialisierer vorkommenDie BOZ-Literalkonstante bei %L darf nicht in einem ACHAR-intrinsischen Unterprogramm vorkommenDie BOZ-Literalkonstante bei %L darf nicht in einem CHAR-intrinsischen Unterprogramm vorkommenDie BOZ-Literalkonstante bei %L darf nicht in einem Strukturkonstruktor vorkommenDie BOZ-Literalkonstante bei %L darf nicht in einem Feldkonstruktor vorkommenBOZ-Literalkonstante bei %L darf nicht in einer Ausgabe-IO-Liste vorkommenBOZ-Literalkonstante bei %L darf nicht in einem FLOAT-intrinsischen Unterprogramm vorkommenDie BOZ-Literalkonstante bei %L darf kein tatsÃ¤chliches Argument fÃ¼r %qs seinBOZ-Literalkonstante bei %L kann kein Operand des einstelligen Operators %qs seinBOZ-Literal bei %L darf nur als Wert einer DATA-Anweisung oder als Argument des intrinsischen Unterprogramms INT/REAL/DBLE/CMPLX vorkommenBOZ-Literalkonstante bei %L kann nicht als Operand eines Vergleichsoperators vorkommenBOZ-Literalkonstante in der NÃ¤he von %L kann nicht einer %qs-Variablen zugewiesen werdenDie BOZ-Literalkonstante in der NÃ¤he von %L kann bei einer Initialisierung alten Stils nicht einer %qs-Variablen zugewiesen werdenBOZ auÃŸerhalb einer DATA-Anweisung bei %L verwendetBPF CO-RE unterstÃ¼tzt LTO nichtBPF CO-RE erfordert BTF-Debugging-Informationen, verwenden Sie %<-gbtf%>BYTE-Typ bei %CBei %C verwendeter BYTE-Typ ist auf der Zielmaschine nicht verfÃ¼gbarFalsche 128-Bit-VerschiebungFalsche GPR-FusionFalsche INTENT-Spezifikation bei %CFalscher IO-Basistyp (%d)Falsches Reservierungs-Objekt bei %C fÃ¼r eine PURE-ProzedurUngÃ¼ltige Felddimension bei %LUngÃ¼ltige Feldreferenz bei %LDer Strukturkonstruktor bei %2$L verweist auf die falsche Feldangabe der Komponente %1$qsFalsche Feldangabe fÃ¼r Feld mit explizit gebildeter Form bei %CFalsche Feldangabe fÃ¼r Feld mit durch Vermutung gebildeter Form bei %CFalsche Feldangabe fÃ¼r Feld mit implizit gebildeter Form bei %CFalsche Feldspezifikation in ALLOCATE-Anweisung bei %LFalsche Bounds-Remapping-Liste bei %CUngÃ¼ltiges Zeichen %qc in OPERATOR-Name bei %CFalsche Koarray-Spezifikation in ALLOCATE-Anweisung bei %LFalsche Fortsetzungszeile bei %CFalscher Art-Ausdruck fÃ¼r Funktion %qs bei %LFalsche Art fÃ¼r Logikkonstante bei %CSchlechter NameFalscher OperatorFalsche Form des Initialisierers bei %LFalsche Spezifikation fÃ¼r Feld mit impliziter GrÃ¶ÃŸe bei %CFalsche Spezifikation fÃ¼r Feld bei %L mit angenommener GrÃ¶ÃŸeFalsche Spezifikation fÃ¼r Feld mit zurÃ¼ckgestellter Form bei %CFalsches Ziel in Zeigerzuweisung in PURE-Prozedur bei %LFalscher Typ in Konstanten-AusdruckBad type in gfc_simplify_signBasis-ABI-Typen fÃ¼r LoongArch:Basisobjekt fÃ¼r Aufruf der typgebundenen NOPASS-Prozedur bei %L muss skalar seinBasisobjekt fÃ¼r Aufruf der Prozedurzeigerkomponente bei %L hat ABSTRACT-Typ %qsBasisobjekt fÃ¼r Aufruf der typgebundenen Prozedur bei %L hat ABSTRACT-Typ %qsGrundlegende ISAs von LoongArch:Bindung bei %C muss denselben Zugriff wie bereits definierte Bindung %qs habenBindeattribute legen bereits Durchleitung fest, unzulÃ¤ssiges NOPASS bei %CBindeattribute legen bereits Durchleitung fest, unzulÃ¤ssiges PASS bei %CLeeres BLOCK DATA bei %C steht in Konflikt mit vorherigem BLOCK DATA bei %LLeerzeichen in %s-Anweisung in der NÃ¤he von %C erwartetUmfassende SAVE-Anweisung bei %C folgt vorheriger SAVE-AnweisungBlockmarke ist ungeeignet fÃ¼r IF-Anweisung bei %CBlockmarke passt nicht zu arithmetischer IF-Anweisung bei %CBoardname [und Speicherbereich].Beide Planungsmodifizierer MONOTONIC und NONMONOTONIC bei %L angegebenInterner Fehler: Both section and comdat group is setSchranke fÃ¼r Anzahl der Kandidaten, unter der alle Kandidaten in IV-Optimierungen betrachtet werden.Schranke fÃ¼r Anzahl der IV-Verwendungen in bei IV-Optimierungen optimierter Schleife.Schranke fÃ¼r Anzahl der LaufzeitprÃ¼fungen, die von Schleifenversionierung des Vektorisierers fÃ¼r AliasprÃ¼fung eingefÃ¼gt werden.Schranke fÃ¼r Anzahl der LaufzeitprÃ¼fungen, die von Schleifenversionierung des Vektorisierers fÃ¼r AusrichtungsprÃ¼fung eingefÃ¼gt werden.Schranke fÃ¼r GrÃ¶ÃŸe von AusdrÃ¼cken, die im skalaren Evolutions-Analysierer verwendet werden.Schranke fÃ¼r die KomplexitÃ¤t von AusdrÃ¼cken im skalaren Evolutions-Analysierer.Schranke fÃ¼r die Kosten eines Ausdrucks, um die Anzahl der DurchlÃ¤ufe zu berechnen.Schranke fÃ¼r die Anzahl der Iterationen, die der Brute-Force-Algorithmus zur Auswertung der Anzahl von Iterationen auswertet.Grenzenangabe fÃ¼r %qs in Zeigerzuweisung bei %LSprung bei %L kÃ¶nnte Endlosschleife bewirkenVerzweigungen sind so teuer wie hier angegeben (beliebige Einheit).%s von %d Zweigen ausgefÃ¼hrt
! FÃ¼r Kern A bauen.FÃ¼r Kern B bauen.FÃ¼r SDRAM bauen.Baustein fÃ¼r specs-basierte multilib-bewusste TFLAGS.Eingebaute %qF erfordert z14 oder hÃ¶herEingebaute %qF erfordert z15 oder hÃ¶herEingebaute %qF erfordert z17 oder hÃ¶herEingebaute Funktion nicht implementiertWertargument bei %L kann kein Feld oder Feldabschnitt seinWertargument bei %L ist in diesem Kontext nicht erlaubtWertargument bei %L hat keinen numerischen TypC-kompatible zeichenwertige Scheinvariable %qs bei %L mit VALUE-Attribut muss LÃ¤nge eins habenTyp-Parameter nach C-Art ist fÃ¼r Typ %s, aber Typ bei %L ist %sC++-Konstruktoren und -Destruktoren werden fÃ¼r Objective-C-Felder nicht aufgerufendesignierte Initialisierer fÃ¼r C++ sind erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarNachschlagen von %qD wÃ¼rde in C++ ein Feld, keinen Typen zurÃ¼ckgebenC++-Module sind nicht kompatibel mit vorkompilierten HeadernC++-Module sind nicht mit der traditionellen Vorverarbeitung kompatibelC++ erfordert weitergegebenen Typ, nicht Enum-Typ, in %<va_arg%>%<constexpr%> von C++11 ist nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbar%<noexcept%> von C++11 ist nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbar%<thread_local%> in C++11 erlaubt dynamische Initialisierung und ZerstÃ¶rung%<thread_local%> von C++11 ist nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarC++11-Attribute sind erst ab %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarC++11 %<auto%> ist nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbar%<constinit%> aus C++20 ist erst ab %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarC++20 %qE ist nur mit %<-fmodules%> verfÃ¼gbar%qE aus C++20 ist nur mit %<-fmodules%> verfÃ¼gbar, das ist jedoch noch nicht in %<-std=c++20%> enthaltenDie Schreibweise der C++20-Konzeptdefinition ist %<concept <Name> = <Ausdruck>%>C++20 besagt, dass diese mehrdeutig sind, auch wenn der zweite umgekehrt ist:C99-Designator %qE ist kein konstanter GanzzahlausdruckC99-Bezeichner %qE auÃŸerhalb von AggregatinitialisierungCALL USING BY CONTENT <temporary> wÃ¼rde REPOSITORY PROTOTYPES erfordern.CASE-Marke bei %L Ã¼berschneidet sich mit CASE-Marke bei %LUntertyp der intrinsischen CCTL-Funktion ist auÃŸerhalb des gÃ¼ltigen BereichsCDF: Ausnahme Â»%sÂ«CFString-Literalausdruck ist keine ZeichenkettenkonstanteCFString-Literal fehltCHANGE-TEAM-Anweisung bei %CCHARACTER-Ausdruck bei %L wird abgeschnitten (%ld/%ld)CHARACTER-Ausdruck wird in Zuweisung (%wd/%wd) bei %L abgeschnittenCHARACTER-Ausdruck wird in Konstruktor (%td/%td) bei %L abgeschnittenCHARACTER-LÃ¤nge in !$OMP DECLARE REDUCTION %s ist bei %L nicht konstantCHARACTER-LÃ¤nge bei %L muss konstant seinCHARACTER(*)-Funktion %qs bei %LCHARACTER(*)-Funktion %qs bei %L darf nicht feld-wertig seinCHARACTER(*)-Funktion %qs bei %L darf nicht zeiger-wertig seinCHARACTER(*)-Funktion %qs bei %L darf nicht rein seinCHARACTER(*)-Funktion %qs bei %L darf nicht rekursiv seinCLASS-EntitÃ¤t bei %C kann nicht das PARAMETER-Attribut habenCLASS-Selektor bei %L erfordert Zwischenspeicher, was noch nicht implementiert istCLASS-Anweisung bei %CCOMMON-Block %qs bei %L kann nicht das EXTERNAL-Attribut habenCLASS-Variable %qs bei %L muss Attrappe, reservierbar oder Zeiger seinCLOSE-Anweisung bei %L erfordert eine UNIT-ZahlCLOSE-Anweisung in PURE-Prozedur bei %C nicht erlaubtCOBOL erfordert eine 64-Bit-KonfigurationCODIMENSION fÃ¼r %qs auÃŸerhalb seines INTERFACE-KÃ¶rpers bei %L angegebenArgument der COLLAPSE-Klausel ist keine konstante positive Ganzzahl bei %CCOLLECT_GCC muss gesetzt sein.COMMON %qs bei %L existiert nichtCOMMON %qs bei %L erfordert AuffÃ¼llen mit %d Bytes; bitte Elemente umordnen oder %<-fno-align-commons%> verwendenCOMMON bei %L wird mehrfach in Klauseln derselben OMP-DECLARE-TARGET-Direktive erwÃ¤hntCOMMON bei %L erfordert AuffÃ¼llen mit %d Bytes; bitte Elemente umordnen oder %<-fno-align-commons%> verwendenCOMMON bei %L wurde in einer vorangehenden Direktive OMP DECLARE TARGET auf einen abweichenden DEVICE_TYPE festgelegtCOMMON-Block %</%s/%> bei %L nicht gefundenCOMMON-Block %qs bei %L kann nicht das EXTERNAL-Attribut habenCOMMON-Block %qs bei %L ist auch eine intrinsische ProzedurCOMMON-Block %qs bei %L wird bei %L als PARAMETER verwendetCOMMON-Block %qs bei %L, der auch ein Funktionsergebnis istCOMMON-Block %qs bei %L, der auch eine globale Prozedur istCOMMON-Block %qs bei %L verwendet denselben globalen Bezeichner wie die EntitÃ¤t bei %LCOMMON-Block /%s/ bei %C nicht gefundenCOMMON-Block bei %LCOMMON-Block bei %L mit Bindungsmarke %qs verwendet denselben globalen Bezeichner wie EntitÃ¤t bei %LCOMMON-Blockelement %qs bei %L darf in der PURE-Prozedur %qs kein EQUIVALENCE-Objekt seinCOMMON-Variable %qs bei %L muss konstante ZeichenlÃ¤nge habenCOMPLEX-Argument %qs ist Argument des intrinsischen %qs bei %LCOMPLEX-GrÃ¶ÃŸen kÃ¶nnen nicht bei %L verglichen werdenCONTAINS-Block in Definition des abgeleiteten Typs bei %CCONTAINS-Anweisung bei %C ist bereits in einer enthaltenen ProgrammeinheitCONTAINS-Anweisung ohne FUNCTION- oder SUBROUTINE-Anweisung bei %LCONTIGUOUS-Attribut bei %CCONTIGUOUS-Anweisung bei %CCONVERT-Marke bei %LCOUNT-Argument der intrinsischen Funktion Â»EVENT_QUERYÂ« bei %L muss definierbar seinCOUNT-Argument der intrinsischen Funktion EVENT_QUERY bei %L muss mindestens den GÃ¼ltigkeitsbereich von Standard-Integer abdeckenDas COUNT-Argument fÃ¼r SYSTEM_CLOCK bei %L hat nicht-Standard-ArtDas COUNT-Argument fÃ¼r SYSTEM_CLOCK bei %L hat eine Ganzzahl, die kleiner als der Standard istDas COUNT_MAX-Argument fÃ¼r SYSTEM_CLOCK bei %L hat nicht-Standard-ArtDas COUNT_MAX-Argument fÃ¼r SYSTEM_CLOCK bei %L hat eine Art, die kleiner als die Standard-Ganzzahl istDas COUNT_RATE-Argument fÃ¼r SYSTEM_CLOCK bei %L hat nicht-Standard-ArtDas COUNT_RATE-Argument fÃ¼r SYSTEM_CLOCK bei %L hat eine Art, die kleiner als die Standard-Ganzzahl istDie ausgewÃ¤hlte CPU unterstÃ¼tzt nicht den x86-64-BefehlssatzCRIS-Port-Behauptung gescheitert: %sCRITICAL-Block innerhalb von OpenACC-Region bei %CCRITICAL-Block innerhalb von OpenMP-Region bei %CCRITICAL-Anweisung bei %CCTF-Debuginformationen angefordert, jedoch nicht vom %qs-Frontend unterstÃ¼tztCYCLE-Anweisung bei %C ist nicht auf Nicht-Schleifenkonstrukt %qs anwendbarCYCLE-Anweisung bei %C fÃ¼r nicht-innerste eingeklappte Â»!$ACC LOOPÂ«-SchleifeCYCLE-Anweisung bei %C fÃ¼r nicht-innerste eingestÃ¼rzte !$OMP DO-SchleifeCYCLE-Anweisung bei %C fÃ¼r nicht-innerste gekachelte Â»!$ACC LOOPÂ«-SchleifeMain aufrufen und beenden (Vorgabe).Vor jedem Funktionsprolog mcount fÃ¼r Profiling aufrufen.Dump-Funktion fÃ¼r Variablen und Funktion in IL aufrufen.Der Aufrufer kopiert Funktionsargumente, die Ã¼ber versteckte Referenzen Ã¼bergeben werden.%s von %d Aufruf(en) ausgefÃ¼hrt
! IMPORT %qs aus Host-Sichtbarkeitseinheit bei %C nicht mÃ¶glich - existiert nicht.Das Modul, das gerade gebaut wird, kann nicht gleichzeitig mit USE verwendet werdenDas Teilmodul, das gerade gebaut wird, kann nicht gleichzeitig mit USE verwendet werdenZuordnung von %s zu %s bei %L nicht mÃ¶glichAttribute des USE-verbundenen Symbols %s bei %L kÃ¶nnen nicht verÃ¤ndert werdenAttribute des USE-verbundenen Symbols bei %L kÃ¶nnen nicht verÃ¤ndert werdenVerzeichnis %s kann nicht gewechselt werdenLÃ¤nge des Arrays bei %L kann nicht berechnet werden.ABSTRACT-Typ %qs bei %L kann nicht konstruiert werdenInterner Fehler: Cannot convert %qs to %qs at %L%qs bei %L kann nicht in interoperablen Typ konvertiert werden%s kann nicht nach %s bei %L umgewandelt werdenModuldatei %qs kann nicht gelÃ¶scht werden: %sTemporÃ¤re Moduldatei %qs kann nicht gelÃ¶scht werden: %sForm des Initialisierers bei %L kann nicht bestimmt werdenIntrinsisches Modul namens %qs bei %C nicht gefundenFunktionsdeklaration fÃ¼r %qs kann nicht gefunden werdenSchlÃ¼sselwort %qs in Aufruf von %qs bei %L kann nicht gefunden werdenKeine Menge von geeigneten Multibibliotheken fÃ¼r %<-march=%s%>/%<-mabi=%s%> gefundenDas Symbol %qs kann bei %L nicht gefunden werdenName des aktuellen Verzeichnisses kann nicht ermittelt werdenDas implied-shape-Feld bei %L kann nicht mit Skalar initialisiert werdenParameter-Feld bei %L kann nicht mit Elementen variabler LÃ¤nge initialisiert werdenVerzeichnis %s kann nicht erstellt werdenÂ»%sÂ« kann nicht in den Speicher geladen werdenÂ»%sÂ« kann nicht geÃ¶ffnet werdenJSON-Ausgabedatei Â»%sÂ« konnte nicht geÃ¶ffnet werden
  Datei %qs kann nicht geÃ¶ffnet werdenDie eingebundene Datei %qs kann nicht geÃ¶ffnet werdenModuldatei %qs kann bei %C nicht zum Lesen geÃ¶ffnet werden: %sModuldatei %qs kann bei %C nicht zum Schreiben geÃ¶ffnet werden: %sFehler beim Ã–ffnen der omp_requires-Datei %qsDie vor-eingebundene Datei %qs kann nicht geÃ¶ffnet werdenQuelldatei %s kann nicht geÃ¶ffnet werden
! GENERIC %qs bei %L kann nicht Ã¼berschrieben werdenÂ»%sÂ« kann nicht gelesen werdenModuldatei %qs kann nicht gelesen werden, da sie von einer anderen Version von GNU Fortran erstellt wurde, bei %CModuldatei %qs kann nicht in %qs umbenannt werden: %sInterner Fehler: Cannot set Cray pointee array spec.Interner Fehler: Cannot set pointee array spec.Ausdruck bei %L kann nicht vereinfacht werdenIMPLICIT bei %C kann nicht hinter IMPLICIT NONE angegeben werdenTippfehler abfangen.Gas veranlassen, Tomcat-Statistiken auszugeben.Index der Cgraph-Kantenanweisung nicht gefundenIndex der Cgraph-Kantenanweisung auÃŸerhalb des gÃ¼ltigen BereichsInterner Fehler: Chained transparent aliasesWertÃ¤nderung bei Umwandlung von %qs in %qs bei %LNur die unteren 8 Bit des Stapelzeigers verÃ¤ndern.ABI Ã¤ndern, um Doppelwortbefehle zuzulassen.Menge der Vorausplanung Ã¤ndern.GrÃ¶ÃŸte LÃ¤nge der bedingt ausgefÃ¼hrten Sequenzen Ã¤ndern.Anzahl der temporÃ¤ren Register Ã¤ndern, die fÃ¼r bedingt ausgefÃ¼hrte Sequenzen zur VerfÃ¼gung stehen.Stapelzeiger Ã¤ndern, ohne Unterbrechungen (Interrupts) auszuschalten.Sichtbarkeit wird geÃ¤ndert, um standardmÃ¤ÃŸig zu Microsoft Visual Studio zu passen.Zeichen %qs in Zeichenkette bei %C ist in Zeichenart %d nicht reprÃ¤sentierbarZeichen %qs in Zeichenkette bei %L kann nicht in Zeichenart %d umgewandelt werdenZeichenkomponente %qs von %qs bei %L mit aufgeschobener LÃ¤nge muss POINTER oder ALLOCATABLE seinDas Zeichen-Dummy-Argument %qs bei %L muss entweder die konstante LÃ¤nge 1 haben oder eine angenommene LÃ¤nge, es sei denn, es hat eine angenommene Form oder einen angenommenen Rang, da die Prozedur %qs das Attribut BIND(C) hatDas Zeichen-Dummy-Argument %qs bei %L muss die LÃ¤nge 1 haben, da es das Attribut VALUE hatZeichenwertige Scheinvariable %qs bei %L mit VALUE-Attribut muss konstante LÃ¤nge habenAusdruck fÃ¼r ZeichenlÃ¤nge der Komponente %qs bei %L muss vom Typ INTEGER sein, nicht %sZeichenlÃ¤nge passt nicht (%ld/%ld) zwischen effektivem Argument und Scheinargument %qs mit vermuteter Form bei %LZeichenlÃ¤nge passt nicht (%ld/%ld) zwischen effektivem Argument und Zeiger oder reservierbarem Scheinargument %qs bei %LZeichenlÃ¤nge des effektiven Arguments kÃ¼rzer als das des Scheinarguments %qs (%lu/%lu) bei %LZeichenlÃ¤nge der Komponente %qs muss ein konstanter Spezifikationsausdruck bei %L seinZeichenliteral bei %L muss mit %<ompx_%> beginnenZeichenwertiges Argument %qs der Anweisungsfunktion bei %L muss konstante LÃ¤nge habenZeichenwertige interne Funktion %qs bei %L darf keine angenommene LÃ¤nge habenZeichenwertige Modulprozedur %qs bei %L darf keine vermutete LÃ¤nge habenZeichenwertige Anweisungsfunktion %qs bei %L muss konstante LÃ¤nge habenCFR-AusfÃ¼hrungspfade auch vor Aufrufen prÃ¼fen, die ihre Ergebnisse zurÃ¼ckgeben.CFR-AusfÃ¼hrungspfade auch prÃ¼fen, wenn eine Funktion aufgrund einer Exception verlassen wird.Zur Laufzeit auf StapelÃ¼berlauf prÃ¼fen.Auf Syntaxfehler prÃ¼fen, dann anhalten.RÃ¼ckgabewert des C++-Operators new prÃ¼fen.Strategie zur Erzeugung von Zeichenkettenoperationen wÃ¤hlen.HÃ¤ppchengrÃ¶ÃŸe des OMP-Schedulers fÃ¼r Schleifen, die durch parloops parallelisiert wurden.Klausel erwartet bei %CKlausel erwartet bei %C nach dem abschlieÃŸenden KommaAlle Tuningfeatures zurÃ¼cksetzen.Register, die beim Funktionsaufruf verwendet wurden, am Ende auf 0 zurÃ¼cksetzen.HardwarefÃ¤higkeiten beim Binden lÃ¶schen.BSS komplett lÃ¶schen und mit Null initialisierte Werte in BSS platzieren.Koarray-Komponente %qs bei %L muss reservierbar mit aufgeschobener Form seinCoarray-Deklaration bei %CKoarray-Bezeichner bei %C, aber %qs ist kein KoarrayKoarray-Scheinargument %qs bei %L fÃ¼r elementare ProzedurCoarray-Scheinvariable %qs bei %L in BIND(C)-Prozedur %qs nicht erlaubtKofeld nicht zulÃ¤ssig fÃ¼r %qs in Ortsangabe %s bei %LKoarray-Spezifikation in ALLOCATE-Anweisung bei %L erforderlichKofeld-Variable %qs bei %L darf keine Kodimensionen mit aufgeschobener Form ohne allozierbar habenKofelder sind nicht interoperabelCoarrays bei %C ausgeschaltet, %<-fcoarray=%> schaltet sie einKoarrays bei %L ausgeschaltet, %<-fcoarray=%> schaltet sie einCode zur Neu-Reservierung des reservierbaren Feldes bei %L wird hinzugefÃ¼gtCode zur Neu-Reservierung der reservierbaren Variable bei %L wird hinzugefÃ¼gtCode-GrÃ¶ÃŸe: small, medium oder large.Koindex der Kodimension %d muss bei %L ein Skalar seinUnpassende RÃ¤nge des Koindex in Feldreferenz bei %L (%d/%d)Koindiziertes effektives ASYNCHRONOUS- oder VOLATILE-Argument bei %L erfordert, dass Schein-%qs weder ASYNCHRONOUS noch VOLATILE hatEffektives koindiziertes Argument bei %L in PURE-Prozedur wird an POINTER-Scheinargument Ã¼bergebenEffektives koindiziertes Argument bei %L in PURE-Prozedur wird an INTENT(%s)-Argument Ã¼bergebenKoindiziertes effektives Argument bei %L an scheinreservierbares %qs erfordert INTENT(IN)Koindiziertes effektives Argument bei %L an Scheinzeiger %qsKoindiziertes effektives Argument bei %L mit reservierbarer endgÃ¼ltiger Komponente fÃ¼r Schein-%qs erfordert entweder VALUE oder INTENT(IN)Koindiziertes effektives Argument bei %L mit endgÃ¼ltiger ZeigerkomponenteKoindiziertes reservierbares Objekt bei %LKoindizierter Ausdruck bei %L wird einer Variable abgeleiteten Typs mit einer POINTER-Komponente in einer PURE-Prozedur zugewiesenKoindizierter Ausdruck auf Zeigerkomponente %qs in Strukturkonstruktor bei %LKoindiziertes Objekt mit polymorpher reservierbarer Subkomponente bei %LKoindiziertem polymorphen effektiven Argument bei %L wird polymorphes Scheinargument %qs Ã¼bergebenKoindizierte Prozedurzeiger-Komponente bei %CKoindizierte Variable darf keine reservierbare endgÃ¼ltige Komponente in Zuweisung bei %L habenIm Falle eines internen Fehlers im C/C++-Compiler die Debuginformationen sammeln und in temporÃ¤re Datei ausgeben.Komma hinter * bei %C ist nur zusammen mit einer I/O-Liste erlaubtKomma vor Ein-/Ausgabeelementliste bei %LKomma bei %C erwartetFehlendes Komma nach P-Deskriptor in Formatzeichenkette bei %LCode fÃ¼r Â»Big EndianÂ«-Modus erzeugen.Code fÃ¼r Â»Little Endian-Modus erzeugen. Dies ist der Standard.Code Ã¼bersetzen, der Cygwin DLL-Wrapper benÃ¶tigt, um C++-Operator new/delete zu ersetzen.FÃ¼r 32-Bit-Zeiger kompilieren.FÃ¼r 64-Bit-Zeiger kompilieren.FÃ¼r ETRAX 100 (CRIS v8) Ã¼bersetzen.FÃ¼r ETRAX 4 (CRIS v3) Ã¼bersetzen.FÃ¼r V8+-ABI-Ã¼bersetzen.FÃ¼r GerÃ¤te kompilieren, die aktiviertes XNACK erfordern. StandardmÃ¤ÃŸig Â»anyÂ«, wenn USM unterstÃ¼tzt wird.FÃ¼r GerÃ¤te mit aktivierter SRAM-ECC-Funktion kompilieren (oder auch nicht). Vorgabewert ist Â»anyÂ«.FÃ¼r das DSBT-Shared-Library-ABI kompilieren.FÃ¼r m32r Ã¼bersetzen.FÃ¼r m32r2 Ã¼bersetzen.FÃ¼r m32rx Ã¼bersetzen.FÃ¼r v850-Prozessor Ã¼bersetzen.FÃ¼r v850e-Prozessor Ã¼bersetzen.FÃ¼r v850e1-Prozessor Ã¼bersetzen.FÃ¼r v850e2-Prozessor Ã¼bersetzen.FÃ¼r v850e2v3-Prozessor Ã¼bersetzen.FÃ¼r v850e3v5-Prozessor Ã¼bersetzen.FÃ¼r die v850es-Variante des v850e1 Ã¼bersetzen.Debuggingcode mitcompilieren.Unittest-Code eincompilieren.Release-Version compilieren.Ganze Ãœbersetzungseinheit auf einmal Ã¼bersetzen.Ãœbersetzungszeit-Bonus, den IPA-CP an Kandidaten vergibt, die Schleifengrenzen oder Schrittweiten bekannt machen.Meckern, wenn ein Name als Klassenmember deklariert wird, nachdem der Name bereits anderswo verwendet wird.Meckern, wenn eine Kommandozeilenoption gÃ¼ltig ist, aber nicht zum aktuellen Frontend gehÃ¶rt.Komplexes Argument von LOG bei %L kann nicht Null seinKomplexe Multiplikation und Division befolgen Fortran-Regeln.Komponente %qs bei %C bereits bei %L deklariertKomponente %qs bei %C bereits im Elterntypen bei %L deklariertKomponente %qs bei %C ist eine PRIVATE-Komponente von %qsKomponente %qs bei %L kann nicht ALLOCATABLE-Attribut haben, da es Element des BIND(C)-abgeleiteten Typs %qs bei %L istKomponente %qs bei %L kann nicht POINTER-Attribut haben, da es Element des BIND(C)-abgeleiteten Typs %qs bei %L istKomponente %qs bei %L hat das CONTIGUOUS-Attribut, aber ist kein FeldzeigerKomponente %qs bei %L mit TYPE(C_PTR) oder TYPE(C_FUNPTR) darf kein Koarray seinKomponente %qs bei %L mit Koarray-Komponente darf ein Nicht-Zeiger und nicht-reservierbares Skalar seinKomponente %qs in abgeleitetem Typ %qs bei %L kÃ¶nnte nicht C-kompatibel seinKomponente %qs in abgeleitetem Typ %qs bei %L kÃ¶nnte nicht C-kompatibel sein, obwohl abgeleiteter Typ %qs BIND(C) istKomponente %qs wird im Strukturkonstruktor bei %L doppelt initialisiertKomponente %qs von %qs bei %L hat den gleichen Namen wie eine geerbte typgebundene ProzedurKomponente %qs von BIND(C)-Typ bei %L muss LÃ¤nge eins habenKomponente %qs mit CLASS bei %C muss allozierbar oder Zeiger seinKomponente %s bei %L des Typs EVENT_TYPE muss eine Kodimension haben oder eine Subkomponente eines Koarrays sein, was wegen des Zeigerattributs der Komponente nicht mÃ¶glich istKomponente %s bei %L des Typs LOCK_TYPE muss eine Kodimension haben oder eine Subkomponente eines Koarrays sein, was wegen des Zeigerattributs der Komponente nicht mÃ¶glich istKomponente %s des bei %L deklarierten SEQUENCE-Typen hat kein SEQUENCE-AttributKomponente bei %C muss ein POINTER-Attribut habenKomponenteninitialisierung ohne Namen hinter Komponente namens Â»%sÂ« bei %LKomponente rechts einer Teilreferenz mit Rang ungleich Null darf bei %L kein Attribut ALLOCATABLE habenKomponente rechts einer Teilreferenz mit Rang grÃ¶ÃŸer Null darf kein POINTER-Attribut bei %L habenKomponente mit KIND-Attribut bei %C muss ein INTEGER seinKomponente mit LEN-Attribut bei %C muss INTEGER seinKomponenten in TYPE bei %C mÃ¼ssen CONTAINS vorausgehenLocview-RÃ¼cksetzpunkte auf Basis der geschÃ¤tzten BefehlslÃ¤ngen berechnen.Berechnetes GOTO bei %CVerkettungsoperator bei %L muss Zeichenketten der gleichen Sorte verkettenVerkettungsoperator in Ausdruck bei %L muss zwei CHARACTER-Operanden habenAbgedeckte Bedingungsergebnisse: %s von %d
  Bedingte Kopierbefehle fÃ¼r Gleitkommazahlen aktivieren.Bedingte Kopierbefehle fÃ¼r Ganzzahlen aktivieren.FÃ¼r das newlib-Board-spezifische Laufzeitumgebung konfigurieren. Vorgabewert ist or1ksim.Konfiguriert mit: %s
  In Konflikt stehende Initialisierungen in Union bei %L und %LNÃ¤her der IBM XLC-Semantik entsprechen.Mit nichts besonderem Ã¼bereinstimmen.Mit dem ISO-C-Standard von 1990, wie 1994 ergÃ¤nzt, Ã¼bereinstimmen.Mit dem ISO-C-Standard von von 1990 mit GNU-Erweiterungen Ã¼bereinstimmen.Mit dem ISO-C-Standard von 1990 Ã¼bereinstimmen.Mit dem ISO-C++-Standard von 1998 (inclusive technischer Korrekturen von 2003 sowie GNU-Erweiterungen) Ã¼bereinstimmen.Mit dem ISO-C++-Standard von 1998 (inclusive technischer Korrekturen von 2003) Ã¼bereinstimmen.Mit dem ISO-C-Standard von von 1999 mit GNU-Erweiterungen Ã¼bereinstimmen.Mit dem ISO-C-Standard von 1999 Ã¼bereinstimmen.Mit dem ISO-C-Standard von von 2011 mit GNU-Erweiterungen Ã¼bereinstimmen.Mit dem ISO-C-Standard von 2011 Ã¼bereinstimmen.Mit dem ISO-C++-Standard von 2011 mit GNU-Erweiterungen Ã¼bereinstimmen.Mit dem ISO-C++-Standard von 2011 Ã¼bereinstimmen.Mit dem ISO-C++-Standard von 2014 mit GNU-Erweiterungen Ã¼bereinstimmen.Mit dem ISO-C++-Standard von 2014 Ã¼bereinstimmen.Mit dem ISO-C-Standard von 2017 (verÃ¶ffentlicht 2018) mit GNU-Erweiterungen Ã¼bereinstimmen.Mit dem ISO-C-Standard von 2017 (2018 verÃ¶ffentlicht) Ã¼bereinstimmen.Mit dem ISO-C++-Standard von 2017 mit GNU-Erweiterungen Ã¼bereinstimmen.Mit dem ISO-C++-Standard von 2017 Ã¼bereinstimmen.Mit dem ISO-C++-Standard 2020 Ã¼bereinstimmen (experimentelle und unvollstÃ¤ndige UnterstÃ¼tzung).Mit dem ISO-C++-Standard fÃ¼r 2020 mit GNU-Erweiterungen (experimentelle und unvollstÃ¤ndige UnterstÃ¼tzung) Ã¼bereinstimmen.Mit dem ISO-C-Standard von 2023 (verÃ¶ffentlicht 2024) mit GNU-Erweiterungen Ã¼bereinstimmen.Mit dem ISO-C-Standard von 2023 (2024 verÃ¶ffentlicht) Ã¼bereinstimmen.Mit dem ISO-C++-Standard 2023 Ã¼bereinstimmen (2024 verÃ¶ffentlicht; experimentelle und unvollstÃ¤ndige UnterstÃ¼tzung).Mit dem ISO-C++-Standard fÃ¼r 2023 mit GNU-Erweiterungen (2024 verÃ¶ffentlicht; experimentelle und unvollstÃ¤ndige UnterstÃ¼tzung) Ã¼bereinstimmen.Mit dem ISO-C++-Standardentwurf 2026 Ã¼bereinstimmen (experimentelle und unvollstÃ¤ndige UnterstÃ¼tzung).Mit dem ISO-C++-Standardentwurf fÃ¼r 2026 mit GNU-Erweiterungen (experimentelle und unvollstÃ¤ndige UnterstÃ¼tzung) Ã¼bereinstimmen.Mit dem ISO-C-Standard 202Y Ã¼bereinstimmen (experimentelle und unvollstÃ¤ndige UnterstÃ¼tzung).Mit dem ISO-C-Standard-Entwurf fÃ¼r 202Y mit GNU-Erweiterungen (experimentelle und unvollstÃ¤ndige UnterstÃ¼tzung) Ã¼bereinstimmen.Mit dem Standard ISO Fortran 2003 Ã¼bereinstimmen.Mit dem Standard ISO Fortran 2008 inkl. TS 29113 Ã¼bereinstimmen.Mit dem Standard ISO Fortran 2008 Ã¼bereinstimmen.Mit dem Standard ISO Fortran 2018 Ã¼bereinstimmen.Mit dem Standard ISO Fortran 2023 Ã¼bereinstimmen.Mit dem Standard ISO Fortran 95 Ã¼bereinstimmen.Mit der in GCC 4.0 implementierten Version Objective-C 1.0 Ã¼bereinstimmen.Der ABI o32-FPXX entsprechen.Zugriff auf Speicher in BytegrÃ¶ÃŸe als langsam betrachten.Typ Â»intÂ« als 16 Bit breit ansehen.Typ Â»intÂ« als 32 Bit breit ansehen.ErwÃ¤gen Sie, stattdessen %<need_device_addr%> zu verwendenDie MESSAGE-Klausel bei %L erfordert einen konstanten ZeichenausdruckKonstanter Ausdruck in FORMAT-Markierung bei %L muss vom Standard-CHARACTER-Typ seinKonstanten-Ausdruck erforderlich bei %CKonstanter logischer Wert in CASE-Anweisung wird bei %L wiederholtKonstante memcpy-GrÃ¶ÃŸe in Bytes, ab der die MOPS-Sequenz verwendet werden soll.Konstante memmove-GrÃ¶ÃŸe in Bytes, ab der die MOPS-Sequenz verwendet werden soll.Konstante memset-GrÃ¶ÃŸe in Bytes, ab der die MOPS-Sequenz verwendet werden soll.Argument muss eine Ganzzahlkonstante seinNetze konstruieren und nicht zusammenhÃ¤ngende Verwendungen einzelner Variablen aufteilen.Enthaltene Funktion %qs bei %L hat keinen IMPLICIT-TypEnthaltene Prozedur %qs bei %C steht in Konflikt mit Prozedur, die bei %L definiert wurdeEnthaltene Prozedur %qs bei %C ist bereits mehrdeutigSchnittstellenprozedur %qs bei %L hat denselben Namen wie die umgebende ProzedurEnthaltene Prozedur %qs bei %L einer PURE-Prozedur muss auch PURE seinErstellen der Steuerung fÃ¼r KehrwertabschÃ¤tzungen.Steuert, dass IRA die Ã¼bereinstimmende Bedingung (doppelte Operandennummer) in allen verfÃ¼gbaren Alternativen fÃ¼r die bevorzugte Registerklasse stark berÃ¼cksichtigt. Wenn sie auf Null gesetzt ist, bedeutet dies, dass IRA die Ã¼bereinstimmende Bedingung nur berÃ¼cksichtigt, wenn sie in der einzigen verfÃ¼gbaren Alternative mit einer geeigneten Registerklasse enthalten ist. Andernfalls bedeutet es, dass IRA alle verfÃ¼gbaren Alternativen fÃ¼r die bevorzugte Registerklasse prÃ¼ft, selbst wenn sie eine Auswahl mit einer geeigneten Registerklasse gefunden hat, und die gefundene qualifizierte Ã¼bereinstimmende EinschrÃ¤nkung beachtet.Den IEEE-Trap-Modus steuern.Den generierten FP-Rundungsmodus steuern.Die PrÃ¤zision der FP-Ausnahmen steuern.Steuern, welche Ereignisse in den Diagnosepfaden angegeben werden.Steuert, wie der Schleifenvektorisierer partielle Vektoren verwendet. 0 bedeutet nie, 1 bedeutet nur fÃ¼r Schleifen, die nicht unbedingt vektorisiert werden mÃ¼ssen, 2 bedeutet fÃ¼r alle Schleifen. Voreinstellung ist 2.Umwandlung von %qs in %qs bei %LUmwandlung von %s in %s bei %LUmwandlung von %s in standardartiges COMPLEX(%d) bei %L kÃ¶nnte Genauigkeit verlieren, evtl. KIND-Argument verwendenUmwandlung einer Unendlichkeit oder NaN bei %L in INTEGERAdressen der Form BASE + LARGE_OFFSET in NEW_BASE + SMALL_OFFSET konvertieren, damit mehr Speicherzugriffe als komprimierte Anweisungen generiert werden kÃ¶nnen. Zielt derzeit auf 32-Bit-Integer-Laden/Speichern ab.Umwandlung bedingter SprÃ¼nge in innersten Schleifen in zweiglose Ã„quivalente durchfÃ¼hren.Gleitkommakonstanten in Konstanten einfacher Genauigkeit umwandeln.FunktionsrÃ¼ckkehr in Aufruf umwandeln und Thunk zurÃ¼ckgeben.Indirekte Aufrufe und SprÃ¼nge in Aufrufe umwandeln und Thunks zurÃ¼ckgeben.Feldabschnitte bei Prozedureintritt in einen zusammenhÃ¤ngenden Block kopieren.Copyright %s 2025 Free Software Foundation, Inc.
  Unpassender Korang in Argument %qs bei %L (%d und %d)Kosten, zu denen GCSE-Optimierungen nicht die Entfernung beeintrÃ¤chtigen werden, um die ein Ausdruck verschoben werden kann.FÃ¼r Sprungbefehl anzunehmende Kosten.FÃ¼r einen Multiplikationsbefehl anzunehmende Kosten.FÃ¼r einen Multiplikationsbefehl anzunehmende Kosten; 4 entspricht einem normalen Befehl.Addis-Wert fÃ¼r Fusion kann nicht erzeugt werdenAusgabedatei Â»%sÂ« konnte nicht geÃ¶ffnet werden
  Spekulative AbhÃ¤ngigkeiten wÃ¤hrend PrioritÃ¤tsberechnung der Befehle zÃ¤hlen.Cray-Zeigerende bei %C kann nicht Feld mit impliziter Form seinCray-Zeigerende bei %L tritt in mehreren pointer()-Anweisungen aufCray-Zeigerziel %qs in %s-Klausel bei %LCray-Zeigerziel %qs in Klausel SHARED bei %LCray-Zeigerziel-Objekt %qs in Klausel %s bei %LCray-Zeigerziel-Objekt %qs von abgeleitetem Typ in Â»%sÂ«-Klausel bei %LCray-Zeigerziel-Objekt %qs von polymorphem Typ in %qs-Klausel bei %LCray-Zeiger %qs in %s-Klausel bei %LCray-Zeiger bei %C hat %d Bytes Genauigkeit; Speicheradressen benÃ¶tigen %d BytesCray-Zeiger bei %C muss eine Ganzzahl seinCray-Zeiger-Deklaration bei %C benÃ¶tigt den Schalter %<-fcray-pointer%>Cray-Zeiger-Objekt %qs in Klausel %s bei %LCray-Zeiger-Objekt von abgeleitetem Typ %qs in Â»%sÂ«-Klausel bei %LCray-Zeiger-Objekt %qs von polymorphem Typ in %qs-Klausel bei %LGUI-Anwendung erzeugen.Dynamisch gebundene, lageunabhÃ¤ngige ausfÃ¼hrbare Datei erzeugen.Shared Library erzeugen.Statische, lageunabhÃ¤ngige ausfÃ¼hrbare Datei erzeugen.Kanonische Induktionsvariablen in Schleifen erzeugen.Konsolenanwendung erzeugen.Von Â»gcovÂ« benÃ¶tigte Dateien anlegen.Â»%sÂ« wird erzeugt
! Zwischenergebnis-Feld bei %L wird erzeugtBei %L wird ein vorÃ¼bergehendes Feld fÃ¼r Argument %qs erzeugtDer aktuelle RISC-V-GCC unterstÃ¼tzt RVV im Big-Endian-Modus nichtDer aktuelle RISC-V-GCC unterstÃ¼tzt keine VLEN grÃ¶ÃŸer als 4096bit fÃ¼r die Erweiterung Â»VÂ«Derzeit erfordert die %<V%>-Implementierung die %<M%>-ErweiterungD unterstÃ¼tzt auf dieser Zielplattform keine Zeiger.D-Inline-Assembler-Anweisungen werden in GDC nicht unterstÃ¼tzt.DATA-Feld %qs bei %L muss in vorheriger Deklaration angegeben werdenDATA-Element %qs bei %L kann keinen Coindex habenDas DATA-Element %qs bei %L kann kein ALLOCATABLE-Attribut habenDATA-Element %qs bei %L ist ein Zeiger und muss daher ein vollstÃ¤ndiges Feld seinDas DATA-Objekt in der NÃ¤he von %L hat das Zeiger-Attribut und der entsprechende DATA-Wert ist kein gÃ¼ltiges initial-data-targetDATA-Anweisung bei %C hinter der ersten ausfÃ¼hrbaren AnweisungDATA-Anweisung bei %C kann nicht innerhalb von INTERFACE auftretenDATA-Anweisung bei %C ist in PURE-Prozedur nicht erlaubtDATA-Anweisung bei %L hat mehr Werte als VariablenDATA-Anweisung bei %L hat mehr Variablen als WerteDC-Format-Spezifizierer bei %C nicht erlaubtDEALLOCATE ObjektDEALLOCATE von Koarray bei %C in CRITICAL-BlockDEALLOCATE von Koarray bei %C in DO CONCURRENT-BlockDECIMAL= bei %L ist in Fortran 95 nicht erlaubtDEFAULT (NONE) mehr als einmal in DO CONCURRENT bei %C angegebenDEFAULTMAP bei %C, aber das vorherige DEFAULTMAP ist fÃ¼r Kategorie %sDEFAULTMAP bei %C, aber das vorherige DEFAULTMAP hat eine unspezifizierte KategorieDEF_INTERNAL_FLT_FN (%s) hat keine verknÃ¼pften eingebauten FunktionenDEF_INTERNAL_INT_FN (%s) hat keine verknÃ¼pften eingebauten FunktionenDELIM= bei %L ist in Fortran 95 nicht erlaubtDie DEPEND-Klausel bei %L des OMP-DEPOBJ-Konstrukts darf nur einen einzigen Locator habenDEPEND-Klausel bei %L des OMP-DEPOBJ-Konstrukts darf nicht den AbhÃ¤ngigkeitstyp DEPOBJ habenDEPEND-Klausel bei %L erfordert Interop-Typ %<targetsync%>, bei %qs bei %L fehlt sieDEPEND-Klausel bei %L erfordert Aktionsklausel mit Interop-Typ %<targetsync%>DEPOBJ im DEPOBJ-Konstrukt bei %L muss eine skalare Ganzzahl der Art OMP_DEPEND_KIND seinDETACH-Ereignisbehandler %qs in %s-Klausel bei %LDETACH-Ereignisbehandler %qs in SHARED-Klausel bei %LDEVICE_TYPE muss ANY sein, wenn es mit INDIRECT bei %L verwendet wirdDIM-Argument (%d) fÃ¼r intrinsisches SIZE bei %L auÃŸerhalb des Bereichs (1:%d)DIM-Argument bei %L ist auÃŸerhalb der GrenzenDIM-Argument ohne COARRAY-Argument ist fÃ¼r intrinsisches THIS_IMAGE bei %L nicht erlaubtDIMENSION fÃ¼r %qs auÃŸerhalb seines INTERFACE-KÃ¶rpers bei %L angegebenArgument DISTANCE= fÃ¼r NUM_IMAGES bei %LArgument DISTANCE= fÃ¼r THIS_IMAGE bei %LDie chunk_size der DIST_SCHEDULE-Klausel bei %L erfordert einen skalaren INTEGER-AusdruckDO CONCURRENT-Konstrukt bei %CDO-Schleife bei %L ist undefiniert, da sie Ã¼berlÃ¤uftDO-Schleife bei %L ist undefiniert, da sie unterlÃ¤uftDO-Schleife bei %L wird null mal ausgefÃ¼hrtDO-Schrittwert ist NullDO-Abbruchanweisung ist nicht Â»END DOÂ« oder Â»CONTINUEÂ« mit Marke %d bei %CDO-Iterator %qs bei %L ist innerhalb eines Iterators mit gleichem NamenDOUBLE COMPLEX bei %CDP-Format-Spezifizierer bei %C nicht erlaubtDTIO-%s-Prozedur bei %L muss rekursiv seinDTIO-Zeichenargument bei %L muss angenommene LÃ¤nge habenDTIO-Scheinargument bei %L muss ein Skalar seinDTIO-Scheinargument bei %L muss ein ASSUMED SHAPE ARRAY seinDTIO-Scheinargument bei %L muss von KIND = %d seinDTIO-Scheinargument bei %L muss vom Typ %s seinDTIO-Scheinargument bei %L muss INTENT %s habenDTIO-Prozedur %qs bei %L muss ein Unterprogramm seinDarwin unterstÃ¼tzt Â»-mfentryÂ« oder verwandte Optionen nichtDarwin ist keine mx32-PlattformDatenelement oberhalb der oberen Feldgrenze bei %LDatenelement unterhalb der unteren Feldgrenze bei %LDaten werden im Big-Endian-Format gespeichert.Daten werden im Little-Endian-Format gespeichert (Standard).Daten werden ausgehend vom Start des Programmcodes statt der GOT adressiert (mit Â»-fPICÂ« oder Â»-fPIEÂ«).Datenziel bei %L darf keinen Koindex habenDatenÃ¼bertragungselement bei %L kann keine vollstÃ¤ndige Referenz auf Feld vermuteter GrÃ¶ÃŸe seinElement zum Datenaustausch bei %L kann nicht polymorph sein, auÃŸer es wird von einer definierten E/A-Prozedur verarbeitetDatenÃ¼bertragungselement bei %L kann keine ALLOCATABLE-Komponenten haben, auÃŸer es wird von einer definierten E/A-Prozedur verarbeitetDatenÃ¼bertragungselement bei %L kann keine POINTER-Komponenten haben, auÃŸer es wird von einer definierten E/A-Prozedur verarbeitetDatenÃ¼bertragungselement bei %L kann keine PRIVATE-Komponenten habenDatenÃ¼bertragungselement bei %L kann keine PRIVATE-Komponenten haben, auÃŸer es wird von einer definierten E/A-Prozedur verarbeitetDatenÃ¼bertragungselement bei %L kann keine Prozedurzeiger-Komponenten habenDatenzeigerobjekt bei %L muss unbegrenzt polymorph oder von einem Typ mit BIND- oder SEQUENCE-Attribut sein, um zum unbegrenzt polymorphen Ziel zu passenDebugging-Bibliothe, die anstelle von phobos verwendet wird.Wenn die Methode %qD als Â»finalÂ« deklariert wÃ¤re, wÃ¼rde das die Devirtualisierung von %d Aufruf einschaltenWenn die Methode %qD als Â»finalÂ« deklariert wÃ¤re, wÃ¼rde das die Devirtualisierung von %d Aufrufen einschaltenWenn die Methode %qD als Â»finalÂ« deklariert wÃ¤re, wÃ¼rde das die Devirtualisierung von %d Aufruf, der %lli-mal ausgefÃ¼hrt wurde, einschaltenWenn die Methode %qD als Â»finalÂ« deklariert wÃ¤re, wÃ¼rde das die Devirtualisierung von %d Aufrufen, die %lli-mal ausgefÃ¼hrt wurden, einschaltenWenn Typ %qD Â»finalÂ« wÃ¤re, wÃ¼rde %i Aufruf devirtualisiert werdenWenn Typ %qD Â»finalÂ« wÃ¤re, wÃ¼rden %i Aufrufe devirtualisiert werdenWenn Typ %qD Â»finalÂ« wÃ¤re, wÃ¼rde %i Aufruf, der %lli-mal ausgefÃ¼hrt wurde, devirtualisiert werdenWenn Typ %qD Â»finalÂ« wÃ¤re, wÃ¼rden %i Aufrufe, die %lli-mal ausgefÃ¼hrt wurden, devirtualisiert werdenWenn der virtuelle Destruktor von %qD als Â»finalÂ« deklariert wÃ¤re, wÃ¼rde das die Devirtualisierung von %d Aufruf einschaltenWenn der virtuelle Destruktor von %qD als Â»finalÂ« deklariert wÃ¤re, wÃ¼rde das die Devirtualisierung von %d Aufrufen einschaltenWenn der virtuelle Destruktor von %qD als Â»finalÂ« deklariert wÃ¤re, wÃ¼rde das die Devirtualisierung von %d Aufruf, der %lli-mal ausgefÃ¼hrt wurde, einschaltenWenn der virtuelle Destruktor von %qD als Â»finalÂ« deklariert wÃ¤re, wÃ¼rde das die Devirtualisierung von %d Aufrufen, die %lli-mal ausgefÃ¼hrt wurden, einschaltenStandardbibliothek, die anstelle von phobos verwendet wird.Das durch Vorgabe initialisierte Dummy-Argument %qs mit dem Attribut %qs bei %L ist in der BIND(C)-Prozedur %qs nicht erlaubtZurÃ¼ckholen der Funktionsargumente vom Stapel bis auf weiteres hinauszÃ¶gern.Aufgeschobenes Feld %qs bei %L ist nicht in einem Initialisierungs-Ausdruck erlaubtParameter aufgeschobenen Typs wird noch nicht unterstÃ¼tztDas Zeichen-Dummy-Argument %qs bei %L hat verzÃ¶gerte LÃ¤nge und gehÃ¶rt zur Prozedur %qs mit dem Attribut BIND(C)Alternative implizite Kopierbuch-Dateinamenerweiterung definierenUnerreichbare Befehle lÃ¶schen, die Ausnahmen werfen kÃ¶nnen.UnnÃ¶tige NullzeigerprÃ¼fungen lÃ¶schen.GelÃ¶schte Funktion:AbhÃ¤ngigkeitstyp SINK wird zusammen mit SOURCE an demselben Konstrukt bei %L verwendetVeraltet zugunsten von Â»-Wc11-c23-compatÂ«.Veraltet zugunsten von Â»-std=c++11Â«.Veraltet zugunsten von Â»-std=c++14Â«.Veraltet zugunsten von Â»-std=c++17Â«.Veraltet zugunsten von Â»-std=c11Â«.Veraltet zugunsten von Â»-std=c23Â«.Veraltet zugunsten von Â»-std=c99Â«.Veraltet zugunsten von Â»-std=gnu++11Â«.Veraltet zugunsten von Â»-std=gnu++14Â«.Veraltet zugunsten von Â»-std=gnu++17Â«.Veraltet zugunsten von Â»-std=gnu11Â«.Veraltet zugunsten von Â»-std=gnu23Â«.Veraltet zugunsten von Â»-std=gnu99Â«.Veraltet zugunsten von Â»-std=iso9899:1999Â«.Veraltete Option. Stattdessen Â»-mno-vrsaveÂ« verwenden.Veraltete Option. Stattdessen Â»-mvrsaveÂ« verwenden.Veraltet. Dieser Schalter hat keine Auswirkung.Abgeleiteter Typ %qs bei %C wird verwendet, bevor er definiert wirdAbgeleiteter Typ %qs bei %L kann nicht das SEQUENCE-Attribut haben, da er BIND(C) istAbgeleiteter Typ %qs bei %L widerspricht namelist-Objekt %qs bei %CAbgeleiteter Typ %qs bei %L wurde nicht deklariertAbgeleiteter Typ %qs bei %L darf nicht ABSTRACT seinAbgeleiteter Typ %qs bei %L muss eine Erweiterung von %qs seinAbgeleiteter Typ %qs bei %L muss erweiterbar seinAbgeleiteter Typ %qs kann bei %C nicht als Variable verwendet werdenAbgeleiteter Typ %qs kann bei %L nicht als Variable verwendet werdenAbgeleiteter Typ %qs, bei %L deklariert, muss BIND-Attribut haben, um C-kompatibel zu seinAbgeleiteter Typ %qs wird als Argument bei %L verwendetAbgeleiteter Typ %qs mit Attribut BIND(C) bei %L hat keine KomponentenAbgeleiteter Typ %qs mit Attribut BIND(C) bei %L ist leer und kÃ¶nnte fÃ¼r entsprechenden C-Prozessor unzugreifbar seinAbgeleiteter Typ bei %C kann nur PRIVATE im Spezifikationsteil eines Moduls seinAbgeleiteter Typ bei %C kann nur PUBLIC im Spezifikationsteil eines Moduls seinAbgeleiteter Typ bei %C wurde vorher nicht definiert und kann daher nicht in einer abgeleiteten Typdefinition auftretenKomponente %C abgeleiteten Typs ist kein zulÃ¤ssiges EQUIVALENCE-ElementDeklaration abgeleiteten Typs mit FINAL bei %C muss im Spezifikationsteil eines Moduls seinDefinition eines abgeleiteten Typs bei %C mit leerem CONTAINS-AbschnittDefinition des abgeleiteten Typs bei %C ohne KomponentenAbgeleitete Typdefinition von %qs bei %C wurde bereits definiertAbgeleiteter Typname %qs bei %C hat bereits einen BasistypAbgeleiteter Typname %qs bei %C hat bereits einen Basistypen von %sVariable %qs abgeleiteten Typs bei %L kann keine ALLOCATABLE-Komponenten haben, um EQUIVALENCE-Objekt zu seinVariable %qs abgeleiteten Typs bei %L muss SEQUENCE-Attribut haben, um EQUIVALENCE-Objekt zu seinVariable %qs abgeleiteten Typs bei %L mit Standardinitialisierung kann nicht in EQUIVALENCE mit einer Variablen in COMMON seinVariable %qs abgeleiteten Typs bei %L mit Zeigerkomponenten kann kein EQUIVALENCE-Objekt seinVariable %qs abgeleiteten Typs in COMMON bei %L hat eine endgÃ¼ltige Komponente, die allozierbar istVariable %qs abgeleiteten Typs in COMMON bei %L hat weder das SEQUENCE- noch das BIND(C)-AttributVariable %qs abgeleiteten Typs in COMMON bei %L darf nicht Standardinitialisierung habenBei %2$L deklarierter abgeleiteter Typ %1$qs muss ABSTRACT sein, da %3$qs DEFERRED und nicht Ã¼berschrieben istAbgeleiteter Typ %qs bei %C mit BIND(C) darf keinen CONTAINS-Abschnitt habenAbgeleiteter Typ %qs bei %C mit SEQUENCE darf keinen CONTAINS-Abschnitt habenScheinargument %qs abgeleiteten Typs bei %L war als INTENT(OUT) deklariert, aber nicht gesetzt und hat keine StandardinitialisierungKeine weiteren Informationen verfÃ¼gbar.Keine weiteren Informationen verfÃ¼gbar.Keine weiteren Informationen verfÃ¼gbar.Keine weiteren Informationen verfÃ¼gbar.Felder von teilweise konstruierten Objekten zerstÃ¶ren.Schleifen, die CRC berechnen, erkennen und durch eine schnellere Implementierung ersetzen. Wenn das Zielsystem den CRC-Befehl unterstÃ¼tzt und die CRC-Schleife dasselbe Polynom wie der CRC-Befehl verwendet, wird sie direkt durch den entsprechenden CRC-Befehl ersetzt. Wenn das Zielsystem den Befehl zur Ã¼bertragslosen Multiplikation unterstÃ¼tzt, wird die CRC mit diesem Befehl erzeugt. Trifft keiner der beiden FÃ¤lle zu, wird die CRC tabellenbasiert berechnet.AusfÃ¼hrungspfade erkennen, die ausgelÃ¶st werden, indem ein Nullwert auf eine Weise verwendet wird, die durch ein Â»returns_nonnullÂ«- oder Â»nonnullÂ«-Attribut verboten ist. Solche Pfade werden aus dem Hauptablauf herausgenommen und durch eine Trap ersetzt.AusfÃ¼hrungspfade erkennen, die durch Dereferenzieren eines Nullzeigers fehlerhaftes oder undefiniertes Verhalten auslÃ¶sen. Solche Pfade werden aus dem Hauptablauf herausgenommen und durch eine Trap ersetzt.Feststellen, welche AbhÃ¤ngigkeiten zwischen Befehlen als teuer angesehen werden.Fehler beim Parsen eines Templates melden.Unterschiedliche CHARACTER-LÃ¤ngen (%ld/%ld) in FeldkonstruktorUnterschiedliche CHARACTER-LÃ¤ngen (%wd/%wd) in Feldkonstruktor bei %LUnterschiedliche Argumentlisten in externer Dummy-Funktion %s bei %L und %LUnterschiedliche Argumentlisten im externen Dummy-Unterprogramm %s bei %L und %LVerschiedene Zeichenarten bei %LParameter verschiedener Typen in Zeigerzuweisung bei %LVerschiedene RÃ¤nge in Zeigerzuweisung bei %LAndere Form fÃ¼r %s bei %L fÃ¼r Dimension %d (%d und %d)Unterschiedliche Form fÃ¼r Argumente %qs und %qs bei %L fÃ¼r intrinsisches %<dot_product%>Andere Form bei Dimension 1 fÃ¼r Argumente %qs und %qs bei %L fÃ¼r intrinsisches matmulAndere Form bei Dimension 2 fÃ¼r Argument %qs und Dimension 1 fÃ¼r Argument %qs bei %L fÃ¼r intrinsisches matmulVerschiedene Typ-Arten bei %LVerschiedene Typen in Zeigerzuweisung bei %L; Versuch der Zuweisung von %s an %sFÃ¼r %s bei %L wurden Dimensionen nach dessen Initialisierung angegebenDie Warnung Â»-Wframe-larger-than=Â« ausschalten. Entspricht Â»-Wframe-larger-than=<SIZE_MAX>Â« oder grÃ¶ÃŸer.Die Warnung Â»-Wlarger-than=Â« ausschalten. Entspricht Â»-Wlarger-than=<SIZE_MAX>Â« oder grÃ¶ÃŸer.ARCompact-spezifischen Durchlauf, um Befehle fÃ¼r bedingte AusfÃ¼hrung zu erzeugen, ausschalten.CFR in Blattfunktionen ausschalten.Gleitkommaregister ausschalten. Ã„quivalent zu Â»-msoft-floatÂ«.FPU-ISA wird ausgeschaltet, kann mit %<-mfloat-abi=soft%> eingeschaltet werdenLR- und SR-Befehle davon abhalten, FPX-Erweiterungsregister zu verwenden.Durchlauf fÃ¼r Skalar-nach-Vektor-Optimierung ausschalten, der 64-Bit-Ganzzahlberechnungen in Vektorberechnungen umwandelt.Die Warnung Walloc-size-larger-than= ausschalten. Entspricht Walloc-size-larger-than=<SIZE_MAX> oder grÃ¶ÃŸer.Die Warnung Walloca-larger-than= ausschalten. Entspricht Walloca-larger-than=<SIZE_MAX> oder grÃ¶ÃŸer.Die Warnung Â»-Wstack-usage=Â« ausschalten. Entspricht Â»-Wstack-usage=<SIZE_MAX>Â« oder grÃ¶ÃŸer.Die Warnung Wvla-larger-than= ausschalten. Entspricht Wvla-larger-than=<SIZE_MAX> oder grÃ¶ÃŸer.Zugriff auf gemeinsamen Speicher ausschalten.Zugriff auf Variablen, die mit Â»@systemÂ« markiert sind, von @safe-Code aus verbieten.Gleitkommaoptimierungen ausschalten, die die IEEE-Vorzeichenbehaftung von Null nicht beachten.Hardware-Gleitkommabefehle ausschalten.Indizierte Adressierung ausschalten.Von IEEE-Signalisierungs-NaNs wahrnehmbare Optimierungen ausschalten.Optimierungen, die Standard-Rundungsverhalten fÃ¼r Gleitkomma annehmen, ausschalten.LageunabhÃ¤ngigen Code (PIC) fÃ¼r Verwendung in BS-Kernelcode ausschalten.Vorverarbeitung ausschalten.Leerregister ausschalten.Stapelschrubben komplett ausschalten, unabhÃ¤ngig von Strub-Attributen.Verwendung der RX-FPU-Befehle ausschalten.Direkte Aufrufe von globalen Funktionen verbieten.Mehr als Â»msched-max-memory-insnsÂ« in Befehlsgruppe verbieten. Ansonsten ist Grenze Â»weichÂ« (Nicht-Speicheroperationen beim Erreichen der Grenze bevorzugen).Optimierung der Endrekursion verbieten, wenn die aufrufende Routine die ZeichenlÃ¤nge weggelassen haben kÃ¶nnte.UnvollstÃ¤ndige unverÃ¤nderliche Umwandlungen, die bislang fÃ¤lschlicherweise erlaubt waren, verbieten.Reine und konstante Funktionen entdecken.Nur-lese und nicht-adressierbare statische Variablen entdecken.Nur-lese-, nur-schreib- und nicht-adressierbare statische Variablen entdecken.Ãœbersetzungszeitstatistik anzeigen.WÃ¤hrend der Ãœbersetzung angesammelte Statistik anzeigen.Zielspezifische Befehlszeilenoptionen (einschlieÃŸlich Assembler- und Binder-Optionen) anzeigen.Codebaum nach Frontend-Optimierung anzeigen.Codebaum nach dem Parsen anzeigen.Codebaum nach dem Parsen anzeigen; veraltete Option.Compiler-Version anzeigen.Frontend-AST nach dem Parsen und der semantischen Analyse anzeigen.Die globale Symboltabelle nach dem Parsen anzeigen.Die Symbole in umgekehrter Reihenfolge ausgeben.Diese Informationen anzeigen.Division durch Null bei %LDivision durch Null beim Konvertieren von %s in %s bei %LDivisionsstrategie, eine von: call-div1, call-fp, call-table.In LRA die ablaufsensitive Rematerialisierung durchfÃ¼hren.Dispatch-Planung durchfÃ¼hren, wenn Prozessor bdver1, bdver2, bdver3, bdver4 oder znver1 ist und Haifa-Planung ausgewÃ¤hlt ist.Die D-Programmstart-Dateien mit dem Compilat binden.Keine BRcc-Befehle in arc_reorg erzeugen.Keine Standardsymbolexporte zu Modulen oder dynamischen Bibliotheken hinzufÃ¼gen.Keinen StandardausfÃ¼hrungspfad (fÃ¼r die Bibliotheksverzeichnisse des Compilers) zu Programmen, Modulen oder dynamischen Bibliotheken hinzufÃ¼gen.Verbieten, dass konstante Daten in Codeabschnitten platziert werden.Nicht von einem groÃŸen TLS-Segment ausgehen.Nicht annehmen, dass Funktionen, die im Trainingslauf nie ausgefÃ¼hrt wurden, kalt sind.Nicht annehmen, dass Standard-C-Bibliotheken und Â»mainÂ« vorhanden sind.Keine Vektor-Speicherzugriffe mit falsch ausgerichtetem Elementzugriff erzeugen.Leerregister nicht ausschalten.Kommentare in Makroexpansionen nicht verwerfen.Kommentare nicht verwerfen.Ãœbersetzte Funktionen oder verstrichene Zeit nicht ausgeben.Gemeinsame Elemente in Templatevergleichen nicht weglassen.Keine Adressierungsmodi mit Seiteneffektzuweisungen erzeugen.Keine komplexen Ganzzahlkonstanten im Nur-Lese-Speicher erzeugen.Keinen Funktionsprolog oder -epilog erzeugen.Strenge Ausrichtung nicht erzwingen.Keine #line-Direktiven erzeugen.Keine .size-Direktiven erzeugen.Nicht unbedingt einen einzigen Austrittspunkt fÃ¼r jede Funktion erzeugen.Keinen Code generieren, der nur im Supervisor-Modus lÃ¤uft (Standard).Keine Befehle fÃ¼r Laden/Speichern mit Aktualisierung erzeugen.Keine mpy-Befehle fÃ¼r ARC700 erzeugen.Keine unausgerichteten Speicherzugriffe erzeugen.Keine unausgerichteten Speicherzugriffe auf Skalare erzeugen.Ganzzahldivision nicht Â»inlineÂ« generieren.Quadratwurzel nicht Â»inlineÂ« generieren.Nicht gegen die GerÃ¤te-spezifische Bibliothek lib<MCU>.a binden.D-Standardbibliothek nicht in die Compilierung einbinden.PIC-Register nicht in Funktionsprologen laden.Nicht nach Objekten im Standardverzeichnis suchen.ABI-Schalter nicht in e_flags markieren.Es werden keine load-load-Barrieren benÃ¶tigt (dbar 0x700).Keine Optimierungen durchfÃ¼hren, die die Stapelverwendung deutlich erhÃ¶hen.Gleitkommakonstanten nicht ins TOC legen.Symbol+Offset-Konstanten nicht ins TOC legen.Keine system- oder GCC-spezifischen Makros vordefinieren.Template-Spezialisierungen fÃ¼r die Ausgabe nicht als Template-Signatur gefolgt von den Argumenten umformatieren.Keine Standard-Start-Adresse 0x100 des Programmes bereitstellen.In Ãœberwachungsfunktionen erweiterte Register nicht auf Stapel sichern.Standard-System-EinfÃ¼gepfade nicht durchsuchen (die mit Â»-isystemÂ« angegebenen werden trotzdem noch verwendet).Standard-System-EinfÃ¼geverzeichnisse nicht fÃ¼r C++ durchsuchen.Eingebaute Funktionen und Codeerzeugung fÃ¼r SSE4.1 und SSE4.2 nicht unterstÃ¼tzen.Keine Fehlersuchinformationen fÃ¼r C++-Klassen unterdrÃ¼cken.Warnungen aus System-Headern nicht unterdrÃ¼cken.Lokale Variablen und COMMON-BlÃ¶cke nicht so behandeln, als ob sie in SAVE-Anweisungen benannt worden wÃ¤ren.Ausrichtung von Code und der Nur-Lese-Daten nicht optimieren.Stapelausrichtung nicht optimieren.Ausrichtung der schreibbaren Daten nicht optimieren.%<-mpower8-internal%> nicht verwenden, stattdessen %<-mcpu=power8%>Die GOT nicht verwenden, um auf externe Symbole zuzugreifen.Keine MDMX-Befehle verwenden.Keine MIPS-3D-Befehle verwenden.VAX-FP nicht verwenden.Keine Cache entleerende Funktion verwenden, bevor Stapel-Trampoline aufgerufen werden.Adressen, die globale Register belegen, nicht verwenden.Keine Bedingungscodes normaler Befehle verwenden.Hardware-Gleitkommabefehle nicht verwenden.Hardware-Gleitkommabefehle nicht verwenden.Hardware-Gleitkommabefehle nicht verwenden.Hardware-Vierfach-Gleitkommabefehle nicht verwenden.Die AIX-Vector-Extended-ABI nicht verwenden.AltiVec-ABI-Erweiterungen nicht verwenden.Bit-Feld-Befehle nicht verwenden.Den callt-Befehl nicht verwenden (Standard).Nicht die gerÃ¤tespezifische Specs-Datei Â»device-specs/specs-<MCU>Â« verwenden.Keine unausgerichteten Speicherreferenzen verwenden.Nicht bei den angegebenen Attributen warnen.Nicht bei Verwendung von Â»long longÂ« mit Â»-pedanticÂ« warnen.Stapel-ÃœberprÃ¼fung mit Grenzen im L1-Zwischenspeicher durchfÃ¼hren.Tut nichts. FÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤t erhalten.Tut nichts. FÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤t erhalten.Code- und Datenelemente nicht ausrichten.Keine floats und doubles in Registern erweiterter Genauigkeit reservieren.Nicht annehmen, dass unausgerichtete Zugriffe vom System behandelt werden.Keine Funktionen zum Entleeren des Cache aufrufen.Keine Abfangfunktion zum Entleeren des Cache aufrufen.Keine dynamisch gebundene, lageunabhÃ¤ngige ausfÃ¼hrbare Datei erzeugen.Felder von teilweise konstruierten Objekten nicht zerstÃ¶ren.Keine DWARF-ErgÃ¤nzungen Ã¼ber gewÃ¤hlte Version hinaus erzeugen.Keine DLL-exportierten Inline-Funktionen erzeugen, auÃŸer wenn nÃ¶tig.Keine DWARF-Abschnitte fÃ¼r Pubnames und Pubtypes erzeugen.Keine PrÃ¼fungen fÃ¼r Steuerungs-Spekulation in selektiver Planung.Keinen Code mit unausgerichtetem load/store fÃ¼r R6 generieren (Alias von Â»-mstrict-alignÂ«).Keinen Code mit unausgerichtetem load/store generieren, nur gÃ¼ltig fÃ¼r MIPS R6.Keinen Code nur fÃ¼r privilegierten Modus erzeugen; bringt Â»-mno-inline-ic_invalidateÂ« mit sich, wenn der Â»inlineÂ«-Code nicht im Usermodus funktionieren wÃ¼rde.Keine PrioritÃ¤t mit TARGET_REGISTER_PRIORITY ausdrÃ¼cken.Blockverschiebungen nicht optimieren, sondern Â»memcpyÂ« verwenden.Blockkopierbefehle nicht optimieren.Assembleroperatoren %reloc() nicht verwenden (fÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤t).C-Ã¤hnliche Ganzzahl-Promotion fÃ¼r unÃ¤res Â»+Â«, Â»-Â« und Â»~Â« nicht verwenden.Keine P-Mnemonics fÃ¼r Zweige verwenden.Register r32..r63 nicht verwenden.Mindestens 25-Bit-Addressraum fÃ¼r Aufrufe verwenden.Nicht bei Verwendung von Microsoft-Erweiterungen warnen.Doppelter CLASS IS-Block in SELECT TYPE-Anweisung bei %LÃœbereinstimmungsfehler zu Warnungen degradieren.Angesteuert:Angesteuert: (Schein-%qs bei %L kann keine Initialisierung habenScheinargument %qs bei %L kann nicht INTENT(OUT) seinScheinargument %qs bei %L kann nicht OPTIONAL seinScheinargument %qs bei %L darf kein abgeleiteter Typ bei %C seinDas Dummy-Argument %qs bei %L kann kein Zeiger mit dem Attribut CONTIGUOUS sein, da die Prozedur %qs BIND(C) istScheinargument %qs bei %L mit EVENT_TYPE darf nicht INTENT(OUT) seinScheinargument %qs bei %L mit LOCK_TYPE darf nicht INTENT(OUT) seinScheinargument %qs bei %L war als INTENT(OUT) deklariert, aber nicht gesetztScheinargument %qs muss Zeiger oder Feld mit angenommener Form ohne CONTIGUOUS-Attribut sein, da das effektive Argument bei %L nicht einfach fortlaufend ist und beide ASYNCHRONOUS oder VOLATILE sindScheinargument %qs ist im Ausdruck bei %L nicht erlaubtScheinargument %qs von %qs bei %L sollte %qs genannt werden, um zum zugehÃ¶rigen Argument der Ã¼berschriebenen Prozedur zu passenScheinargument %qs mit INTENT(IN) in Zeiger-Verbindungskontext (%s) bei %LScheinargument %qs mit INTENT(IN) in Variablen-Definitionskontext (%s) bei %LDummyflag. Dies ist die Voreinstellung, auÃŸer wenn FPX-Schalter explizit angegeben werden.Scheinprozedur %qs bei %C kann keine allgemeine Schnittstelle habenScheinprozedur %qs bei %L darf nicht ELEMENTAL seinDummyprozedur %qs ist in Initialisierung des Prozedurzeigers bei %L ungÃ¼ltigScheinprozedur %qs nicht in elementarer Prozedur %qs bei %L erlaubtScheinprozedur %qs der PURE-Prozedur bei %L muss auch PURE seinScheinprozedur bei %C kann kein BIND(C)-Attribut mit NAME habenQuellcode-Abdeckungsverpflichtungen wegschreiben.Textdarstellung des Pfades jeder Diagnosemeldung nach QUELLDATEI.IDX.KIND.epath.txt wegschreiben.Textdarstellung des expandierten Graphen nach SRCFILE.eg-ID.txt wegschreiben.Textdarstellung des expandierten Graphen nach SRCFILE.eg.txt wegschreiben.Aufrufgraphen des Analysierers nach SRCFILE.callgraph.dot wegschreiben.Daten des Analysierers nach SRCFILE.analyzer.json.gz wegschreiben.Deklaration in .decl-Datei ausgeben.Detaillierte Informationen Ã¼ber die GCC-interne ReprÃ¤sentation von Quellcode-Stellen ausgeben.Nur die definierten Symbole wegschreiben.OptimierungsdurchlÃ¤ufe ausgeben.Informationen Ã¼ber das Wegwerfen von ZustÃ¤nden nach SRCFILE.state-purge.dot wegschreiben.Expandierten Graphen des Analysierers nach SRCFILE.eg.dot wegschreiben.Gesamtgraphen des Analysierers nach SRCFILE.supergraph.dot wegschreiben.Die entmangelte Ausgabe wegschreiben.Die Details von LTO-Objekten wegschreiben.Die Kommandozeilenoptionen des Dump-Werkzeugs wegschreiben.Die Statistik der GIMPLE-Anweisungen wegschreiben.Die Statistik der Baumarten wegschreiben.Die Statistik der BÃ¤ume wegschreiben.Den Aufrufgraphen der Symboltabelle wegschreiben.Diverse Interna des Rust-Frontends wegschreiben.Diverse Interna des Analysierers nach SRCFILE.*.fg.dot und SRCFILE.*.tg.dot wegschreiben.Diverse Interna des Analysierers nach SRCFILE.*.infinite-loop.dot wegschreiben.Diverse Interna des Analysierers nach SRCFILE.analyzer.txt wegschreiben.Diverse Interna des Analysierers auf die Standardfehlerausgabe wegschreiben.Doppelter Modifikator %<prefer_type%> bei %CDoppeltes %<target%> bei %CDoppeltes %<targetsync%> bei %CDoppeltes Attribut %s bei %LAttribut %s doppelt angegeben bei %LDoppelte Markenspezifikation %s bei %CDoppelter %s-Modifikator bei %L in der USES_ALLOCATORS-KlauselDoppelte Spezifikation %s bei %CDoppeltes ASYNCHRONOUS-Attribut bei %L angegebenDoppeltes AUTOMATIC-Attribut bei %L angegebenDoppeltes BIND-Attribut bei %L angegebenDoppeltes DEFERRED bei %CDoppelte ELSE-Anweisungen bei %L und %CDoppeltes EXTENDS-Attribut bei %L angegebenDoppelte IMPLICIT NONE-Anweisung bei %CDoppelte NML-Spezifikation bei %CDoppeltes NON_OVERRIDABLE bei %CDoppeltes POINTER-Attribut bei %CDoppelte PRIVATE-Anweisung bei %CDoppeltes PROTECTED-Attribut bei %L angegebenSAVE-Attribut doppelt angegeben bei %LSAVE-Attribut doppelt angegeben bei %CDoppelte SEQUENCE-Anweisung bei %CDoppeltes Â»STAT=Â«-Attribut bei %CDoppeltes Â»TEAM=Â«-Attribut bei %CDoppeltes Â»TEAM_NUMBER=Â«-Attribut bei %CDoppelte UNIT-Spezifikation bei %CDoppeltes VALUE-Attribut bei %L angegebenDoppeltes VOLATILE-Attribut bei %L angegebenDoppelte Zugriffsspezifikation bei %CDoppeltes Argument %qs bei %L fÃ¼r intrinsisches %sDoppelte Feldspezifikation fÃ¼r Cray-Zeigerende bei %CDoppelte Feldspezifikation fÃ¼r Cray-Zeigerende bei %LDoppelte Aufbau-Marke %qs bei %CDoppelte Format-Spezifikation bei %CDoppelter Name %qs in VerknÃ¼pfung bei %CDoppelter Name %qs in Parameterliste bei %CDoppelte Anweisungsmarke %d bei %L und %LDoppeltes Symbol %qs in formaler Argumentliste bei %CDoppelter PrÃ¤ferenz-Selektor-Name %<fr%> bei %CDoppelte Klausel %qs bei %LDoppelte NOWAIT-Klausel an !$OMP DISPATCH und !$OMP END DISPATCH bei %CDoppelte NOWAIT-Klausel an %s und %s bei %CDoppelte Klausel mit AbhÃ¤ngigkeitsart SOURCE bei %CDoppelter gemeinsamer Block %</%s/%> in !$OMP ALLOCATE bei %LDoppelte Variable %qs in !$OMP ALLOCATE bei %LWÃ¤hrend der Optimierungen zur Bindezeit bei unpassenden Typen von globalen Deklarationen warnen.Dynamic Realign Argument Pointer (DRAP) wird in Interrupt-Service-Routinen nicht unterstÃ¼tzt. Ein Workaround ist, Funktionen mit Aggregat-RÃ¼ckgabetypen zu vermeiden.CC-Register dynamisch belegen.E-Angabe nicht erlaubt mit g0-Deskriptor in Formatzeichenkette bei %LInterner Fehler: EDGE_CROSSING incorrectly set across same sectionInterner Fehler: EDGE_CROSSING missing across section boundaryInterner Fehler: EH edge crosses section boundary in bb %iInterner Fehler: EH incoming edge mixed with non-EH incoming edges in bb %iInterner Fehler: EH landing pad label %qD is not first in a sequence of labels in bb %dELEMENTAL-Funktion %qs bei %L muss ein skalares Ergebnis habenELEMENTAL, nicht-INTRINSIC-Prozedur %qs ist nicht als effektives Argument bei %L erlaubtELEMENTAL-PrÃ¤fix fehlt in MODULE-PROCEDURE-Schnittstelle bei %LELEMENTAL Prozedurzeigerkomponente %qs ist nicht als effektives Argument bei %L erlaubtELFv2-ParameterÃ¼bergabe fÃ¼r ein Argument, das Bitfelder der Breite 0 enthÃ¤lt, aber ansonsten ein homogenes Aggregat ist, wurde in GCC 12 korrigiertELSE-IF-Anweisung bei %C kann nicht auf eine ELSE-Anweisung bei %L folgenAnweisung ELSEWHERE bei %C folgt zuvor unmaskiertem ELSEWHEREELSEWHERE-Anweisung bei %C nicht eingeschlossen in WHERE-BlockENCODING= bei %L ist in Fortran 95 nicht erlaubtEND-TEAM-Anweisung bei %CEND-Anweisung statt %s-Anweisung bei %LEND-Tag bei %C in Ausgabe-Anweisung nicht erlaubtEND-Marke %d bei %L nicht definiertENTRY %qs bei %L kann nicht rekursiv aufgerufen werden, da Funktion %qs nicht RECURSIVE istENTRY %qs bei %L kann nicht rekursiv aufgerufen werden, da Unterprogramm %qs nicht RECURSIVE istENTRY %qs bei %L hat keinen IMPLICIT-TypENTRY-Ergebnis %s kann nicht ALLOCATABLE in FUNCTION %s bei %L seinENTRY-Ergebnis %s kann kein POINTER in FUNCTION %s bei %L seinENTRY-Ergebnis %s kann kein Feld in FUNCTION %s bei %L seinENTRY-Ergebnis %s kann nicht vom Typ %s in FUNCTION %s bei %L seinENTRY-Anweisung bei %CENTRY-Anweisung bei %C kann nicht in einer enthaltenen Prozedur auftretenENTRY-Anweisung bei %C kann nicht innerhalb von BLOCK DATA auftretenENTRY-Anweisung bei %C kann nicht innerhalb eines DERIVED TYPE Blockes auftretenENTRY-Anweisung bei %C kann nicht innerhalb eines DO-Blockes auftretenENTRY-Anweisung bei %C kann nicht innerhalb eines FORALL-Blockes auftretenENTRY-Anweisung bei %C kann nicht innerhalb eines MODULEs auftretenENTRY-Anweisung bei %C kann nicht innerhalb eines PROGRAMmes auftretenENTRY-Anweisung bei %C kann nicht innerhalb eines SELECT-Blockes auftretenENTRY-Anweisung bei %C kann nicht innerhalb eines STRUCTURE-Blockes auftretenENTRY-Anweisung bei %C kann nicht innerhalb eines SUBMODULEs auftretenENTRY-Anweisung bei %C kann nicht innerhalb eines WHERE-Blockes auftretenENTRY-Anweisung bei %C kann nicht innerhalb eines enthaltenen Subprogrammes auftretenENTRY-Anweisung bei %C kann nicht innerhalb eines IF-THEN-Blockes auftretenENTRY-Anweisung bei %C kann nicht innerhalb von INTERFACE auftretenENTRY-Anweisung bei %L mit BIND(C) ist in einer elementaren Prozedur verbotenENTRY_BLOCK has IL associated with itENUM und ENUMERATOR bei %CENUM-Deklaration bei %C hat keine ENUMERATORenAnweisung zur ENUM-Definition vor %C erwartetENUMERATOR %L nicht mit Ganzzahlausdruck initialisiertEOR-Marke %d bei %L nicht definiertEQUIVALENCE bei %C erfordert zwei oder mehr ObjekteEQUIVALENCE-Anweisung bei %CERR-Marke %d bei %L nicht definiertERRMSG bei %LERRMSG bei %L ist ohne STAT-Marke nutzlosERRMSG-Markierung bei %LERRMSG-VariableÂ»ERRMSG=Â«-Variable bei %L muss skalare Default-CHARACTER-Variable seinÂ»ERRMSG=Â«-Argument bei %L muss skalare CHARACTER-Variable seinERROR STOP-Anweisung bei %CESA/390-Architektur.Â»EVENT POSTÂ«-Anweisung bei %CÂ»EVENT WAITÂ«-Anweisung bei %CEVENT-Argument bei %L fÃ¼r die intrinsische EVENT_QUERY muss vom Typ EVENT_TYPE seinEXIT-Anweisung bei %C beendet Â»!$ACC LOOPÂ«-SchleifeEXIT-Anweisung bei %C beendet !$OMP DO SchleifeEXIT-Anweisung ohne DO-CONSTRUCT-Name bei %CEXIT_BLOCK has IL associated with itInterner Fehler: EXTEND can only be used where %s is ACCESS MODE SEQUENTIALEXTENDS bei %LAttribut EXTERNAL steht mit Attribut FUNCTION in %qs bei %L in KonfliktEntweder alle oder keines der Objekte in bei %L gesetztem EQUIVALENCE muss das Attribut PROTECTED habenElement in Feldkonstruktor %s bei %L ist %sElement des Feldes mit vermuteter Form oder von Zeigern bei %L kann nicht zum Argument bei %L passenElement des Feldes mit vermuteter Form oder von Zeigern wird bei %2$L an ein Feld-Scheinargument %1$qs Ã¼bergebenElement mit einem Wert von %1$d in ORDER bei %2$L muss fÃ¼r das intrinsische RESHAPE in der NÃ¤he von %4$L im Bereich [1, â€¦, %3$d] liegenElementare Funktion als Initialisierungsausdruck mit Nicht-Ganzzahl-/Nicht-Zeichen-Argumenten bei %LElemente mit demselben Wert bei %L und %L in Vektorindex in einem Variablen-Definitionskontext (%s)Mehrfache Funktionsaufrufe auch fÃ¼r unreine Funktionen entfernen.Â».gnu_attributeÂ«-Etiketten erzeugen..stack_size-Direktiven erzeugen.16-bit-Adressverschiebungen in kleinen Datenbereichen ablegen.32-bit-Adressverschiebungen in kleinen Datenbereichen erzeugen.Property GNU_PROPERTY_X86_ISA_1_NEEDED GNU generieren.IEEE-konformen Code erzeugen, ohne ungenaue Ausnahmen.NOPs vor dem globalen und nach dem lokalen Einstiegspunkt fÃ¼r Â»-fpatchable-function-entryÂ« generieren.ELF-Attribut fÃ¼r RISC-V generieren.Informationen zum Aufrufgraph ausgeben.PrÃ¼fungen generieren, die bei Anwendung atomarer eingebauter Operationen auf unausgerichtetem Speicher zu Â»break 8Â«-Befehlen fÃ¼hren.Code fÃ¼r die Byte/Word-ISA-Erweiterung erzeugen.Code fÃ¼r die ZÃ¤hlen-ISA-Erweiterung erzeugen.Code fÃ¼r die FP-Move- und SQRT-ISA-Erweiterung erzeugen.Code fÃ¼r die Video-ISA-Erweiterung erzeugen.Code mit expliziten Adressverschiebungsbefehlen erzeugen.Common-Ã¤hnliche Symbole als schwache Symbole ausgeben.Benutzerdefinierte Warnungen mit internen Details ausgeben, die fÃ¼r Entwickler von Analyseprogrammen bestimmt sind.Debug-Kommentare wÃ¤hrend der Vorverarbeitung ausgeben.Debuginformation fÃ¼r den Escape-Analyse-Durchlauf ausgeben, wenn mit Â»-fgo-optimize-allocsÂ« aufgerufen.Diagnoseinformationen zur Position der Knoten im expandierten Graphen ausgeben.Direkte Zweige in lokalen Funktionen erzeugen.ZusÃ¤tzlichen Code im Funktionsprolog ausgeben, um ein Ãœberschreiten des angegebenen Limits fÃ¼r die StapelgrÃ¶ÃŸe abzufangen (trap).Funktionsprologe nur vor Teilen der Funktion erzeugen, die diese benÃ¶tigt, statt am Anfang der Funktion.Bei PIC-Erzeugung Funktionsaufrufe ausgeben, die die globale Offsettabelle verwenden.Verschmolzene multiply-add-Befehle fÃ¼r long double in Vektorregistern (wfmaxb, wfmsxb, wfnmaxb, wfnmsxb) generieren. Der Durchlauf fÃ¼r NeuverknÃ¼pfungen verarbeitet verschmolzene multiply-add-Befehle nicht, daher enthÃ¤lt der vom Mittelteil generierte Code hÃ¤ufig lange verschmolzene multiply-add-Ketten. Das kann die Pipeline nicht gut verarbeiten, daher ist das Standardverhalten, die multiply- und add-Befehle separat zu generieren, soweit es long double in Vektorregistern betrifft. Performancemessungen haben ergeben, dass das besser ist. Diese Option erlaubt das Standardverhalten zu Ã¼bersteuern, zu Testzwecken.Implizite Instanziierungen von Â»inlineÂ«-Templates ausgeben.Implizite Instanziierungen von Templates ausgeben.Indirekte Zweige in lokalen Funktionen erzeugen.Instrumentierungsaufrufe fÃ¼r Aufrufe von __tsan_func_entry() und __tsan_func_exit() erzeugen.Lange Laden/Speichern-Folgen ausgeben.AusfÃ¼hrlichere Beschreibungen des Steuerablaufs in den Diagnosemeldungen ausgeben.AusfÃ¼hrlichere Beschreibungen der ZustandsÃ¤nderungen in den Diagnosemeldungen ausgeben.Multithread- und Async-Signal-sicheren Code fÃ¼r Byte- und Wortspeicherzugriffe generieren.Multithread- und Async-Signal-sicheren Code fÃ¼r partielle Speicherzugriffe generieren.Diagnosemeldungen fÃ¼r Optimierung ausgeben.Profiling-ZÃ¤hleraufruf am Funktionsanfang vor Prolog ausgeben.Aufruf fÃ¼r Profiling-ZÃ¤hler am Funktionsanfang vor dem Prolog ausgeben. Der compilierte Code benÃ¶tigt eine 64-Bit-CPU sowie glibc 2.29 oder neuer zum Laufen.Progressive empfohlene Breakpoint-Stellen ausgeben.rdval statt rduniq fÃ¼r Thread-Zeiger erzeugen.Spezielle Instrumentierung fÃ¼r Zugriff auf volatile-Objekte erzeugen.static-const-Variablen erzeugen, auch wenn sie nicht verwendet werden.Vor und nach Â»volatile extendedÂ«-asms Stopp-Bits ausgeben.Template-Instanziierungen als schwache Symbole ausgeben.Traps als Â»break 8Â« ausgeben, voreingestellt fÃ¼r CRIS v3 und aufwÃ¤rts. Wenn ausgeschaltet, werden Aufrufe von abort() verwendet.AusfÃ¼hrliche Informationen zur Fehlersuche im Assemblercode ausgeben.Leeres FINAL bei %CLeere IMPLICIT-Anweisung bei %CLeerer Feldkonstruktor bei %C ist nicht erlaubtLeere Initialisierungsliste im alten Stil bei %CLeere Ziffernmenge in BOZ-Konstante bei %CAlternativen fÃ¼r q-Befehl einschalten.Die Generierung von Vektor-Segment-Lade-/Speicheranweisungen einschalten (Vorgabe) oder ausschalten.Registersatz mit 16 EintrÃ¤gen aktivieren.32-Bit-ALU-Befehle einschalten.32-Bit-Sprungbefehle einschalten.Erweiterung fÃ¼r 64-Bit-Zeitstempel-Befehl einschalten.C++-Koroutinen einschalten (experimentell).C++-Header-Modul einschalten (experimentell).UnterstÃ¼tzung fÃ¼r Deallozierung mit GrÃ¶ÃŸenangabe aus C++14 einschalten.C++-20-Module einschalten (experimentell).C-SKY-DSP-Befehle einschalten.Erweiterte C-SKY-DSP-Befehle einschalten.C-SKY-SECURE-Befehle einschalten.C-SKY-TRUST-Befehle einschalten.C-SKY-DSP-Vektorbefehle einschalten.CFI-Tabellen Ã¼ber GAS-Assembler-Direktiven einschalten.Cobol-Lex-Debugging einschaltenFehlersuche im Cobol-Parser einschaltenFehlersuche im Cobol-Yacc einschaltenSTATIC- und AUTOMATIC-Attribute im DEC-Stil einschalten.DIV-REM-Befehle fÃ¼r ARCv2 einschalten.DSP-3.1-Paket-A-Erweiterungen einschalten.Dwarf-Zeilenfehlersuchinfo Ã¼ber GNU as einschalten.Befehle mit einem oder zwei Operanden fÃ¼r Telefonie einschalten.Die Opcodes ENTER_S und LEAVE_S fÃ¼r ARCv2 einschalten.Codekomprimierung fÃ¼r FT32B-Code aktivieren.VollstÃ¤ndige Redundanzentfernung (FRE) auf BÃ¤umen einschalten.Funktionsdeskriptor-PIC-Modus einschalten.GPR32 in Inline-Asm einschalten, wenn APX_F eingeschaltet ist.Transformation der Graphite-IdentitÃ¤t einschalten.ID-basierte Shared Library einschalten.IEEE-128-Bit-Gleitkommazahlen mittels SchlÃ¼sselwort Â»__float128Â« einschalten.Lokale Registerzuordnung einschalten.Erweiterung fÃ¼r gesperrte Load/Store-Conditional-Befehle einschalten.Erweiterung fÃ¼r LoongArch Advanced SIMD (LASX, 256-bit) einschalten.LoongArch SIMD-Erweiterung (LSX, 128-bit) einschalten.Befehle MUL.X und UMUL.X einschalten.Objective-C-Ausnahme- und -Synchronisations-Syntax einschalten.Laufzeitbibliothek zur Objective-C setjmp-Ausnahmebehandlung einschalten.OpenACC einschalten.OpenMP einschalten (bringt Â»-frecursiveÂ« in Fortran mit sich).Auslagern an OpenMP-GPU einschalten.SIMD-Direktiven von OpenMP einschalten.PIC-UnterstÃ¼tzung beim Bauen von Bibliotheken einschalten.Plan-9-Spracherweiterungen einschalten.Zusammenfassen von nutzersichtbaren Variablen wÃ¤hrend des SSA-Durchlaufs einschalten.SSA-Codeversenkung auf BÃ¤umen einschalten.Beseitigungsoptimierung fÃ¼r toten SSA-Code auf BÃ¤umen einschalten.SSA-BIT-CCP-Optimierungen auf BÃ¤umen einschalten.SSA-CCP-Optimierungen auf BÃ¤umen einschalten.SSA-PRE-Optimierungen auf BÃ¤umen einschalten.TPF-OS-Tracing-Code einschalten.Virtual-Hosting-UnterstÃ¼tzung einschalten.XY-Speicher-Erweiterung (DSP Version 3) einschalten.Ausrichtung von COMMON-BlÃ¶cken einschalten.Alle Â»-WunusedÂ«-Warnungen einschalten.Alle DEC-Spracherweiterungen zulassen.Alle Informationen Ã¼ber Optimierungen auf stderr einschalten.Einen RTL-Guckloch-Durchlauf vor sched2 einschalten.ASan-Schutz fÃ¼r alloca/VLAs einschalten.ASan-Schutz fÃ¼r eingebaute Funktionen einschalten.ASan-Schutz fÃ¼r Verwendung-nach-RÃ¼ckkehr-Fehler einschalten.ASan-Schutz fÃ¼r globale Variablen einschalten.ASan-Schutz fÃ¼r Ladeoperationen einschalten.ASan-Schutz fÃ¼r Stapelspeicher einschalten.ASan-Schutz fÃ¼r Speicheroperationen einschalten.Lockerung des Assemblers und Binders einschalten. Per Vorgabe eingeschaltet bei Â»-OsÂ«.Stapelschrubben fÃ¼r At-Aufrufe fÃ¼r alle geeigneten Funktionen einschalten.Atomare Befehle einschalten.Backend-Fehlersuche einschalten.RÃ¼ckwÃ¤rtsÃ¼bermittlung von Nutzungseigenschaften auf SSA-Ebene einschalten.Rohr-Bitschiebebefehle einschalten.Vektorisierung von BasisblÃ¶cken (SLP) auf BÃ¤umen einschalten.Einfachen Programm-Profilierungscode einschalten.Bytetauschbefehle einschalten.Cache-Umgehung fÃ¼r flÃ¼chtige Referenzen umgehen.Cache-Prefetch-Befehle einschalten.Bestimmte Features aus aktuellen EntwÃ¼rfen von C++-VertrÃ¤gen einschalten.Codedichte-Befehle fÃ¼r ARCv2 einschalten.Codeanhebung einschalten.Allgemeine Optionen zum Erzeugen von Profil-Info fÃ¼r Profil-Feedback-gerichtete Optimierungen einschalten, und Â»-fprofile-dir=Â« setzen.Allgemeine Optionen zum Erzeugen von Profil-Info fÃ¼r Profil-Feedback-gerichtete Optimierungen einschalten.Allgemeine Optionen zum DurchfÃ¼hren von Profil-Feedback-gerichteten Optimierungen einschalten, und Â»-fprofile-dir=Â« setzen.Allgemeine Optionen zum DurchfÃ¼hren von Profil-Feedback-gerichteten Optimierungen einschalten.Kompakte casesi-Muster einschalten.Beseitigung von bedingt totem Code fÃ¼r Aufrufe eingebauter Funktionen einschalten.Bedingte AusfÃ¼hrung (fÃ¼r andere Befehle als Kopieren/scc) einschalten.Verwendung bedingter Kopierbefehle einschalten.Verwendung bedingter Kopierbefehle einschalten.Bedingte Kopierbefehle einschalten.Konservatives abrollen kleiner Schleifen einschalten.Konstruktor-/Destruktor-Feature einschalten.Koprozessorbefehle einschalten.Kopieweitergabe von Informationen Ã¼ber Skalar-Evolution einschalten.Kopieweitergabe auf BÃ¤umen einschalten.Korrektur fluss-unstimmiger Profildateneingabe einschalten.Entfernung toter Speicherungen einschalten.Ausgaben zur Fehlersuche einschalten.HardwareunterstÃ¼tzung fÃ¼r dezimales Gleitkomma einschalten.Standardumwandlungen zwischen Â»__float128Â« und Â»long doubleÂ« einschalten.Standardbreiten fÃ¼r die Formatangaben i, f und g aktivieren.Divisions- und Modulobefehle einschalten.Dominator-Optimierungen einschalten.Doppelte Load/Store-Befehle fÃ¼r ARC HS einschalten.Erweiterung Dual-Virterbi-Butterfly einschalten.FrÃ¼here Stopp-Bit-Platzierung fÃ¼r bessere Planung einschalten.Metadaten direkt in Objektdateien einbettenAusnahmebehandlung einschalten.Experimentelle Fortran-202y-Features einschalten.Experimentelle Ãœbersetzung von Rust-Dateien einschalten, auf eigene GefahrZusÃ¤tzliche bedingte Verzweigungsanweisungen j(s)lt und j(s)le einschalten.Aktivieren Sie Gleitkomma-Statusflags, die SSE-Vektoroperationen auf Teilvektoren setzen.Formatierung der JSON-Ausgabe einschalten.VorwÃ¤rts-Ãœbertragung auf BÃ¤umen einschalten.Frontend-Optimierung einschalten.Funktionsprofilierung einschalten.Funktionen umsortieren, um Codeplatzierung zu verbessern.Garbage Collection (GC) in Objective-C/Objective-C++-Programmen einschalten.Allgemeine atomare Operationen einschalten, die in v3 ISA eingefÃ¼hrt wurden.Erzeugen von ARC-SIMD-Befehlen mithilfe von zielspezifischen eingebauten Funktionen zu erzeugen.BinÃ¤rdateien erzeugen, die Divisionen mit Funktionen aus der libgcc durchfÃ¼hren. Die Vorgabe ist Â»-mhard-divÂ«.BinÃ¤rdateien erzeugen, die Gleitkommaberechnungen mit Funktionen aus der libgcc durchfÃ¼hren. Dies ist die Voreinstellung; Ã¤nderbar mit Â»-mhard-floatÂ«.BinÃ¤rdateien erzeugen, die Multiplikationen mit Funktionen aus der libgcc durchfÃ¼hren. Die Vorgabe ist Â»-mhard-mulÂ«.Befehle fÃ¼r Vergleiche mit Setzen der Flags (l.sf*i) erlauben. Standardverhalten ist, stattdessen zusÃ¤tzliche Befehle zu verwenden, die den Direktwert in ein Register zwischenspeichern.Befehle fÃ¼r bedingte Zuweisungen (l.cmov) erlauben. Standardverhalten ist, stattdessen Ã¤quivalente set- und branch-Befehle zu verwenden.Division mit Hardware-Befehlen (l.div, l.divu) aktivieren. Dies ist die Voreinstellung; Ã¤nderbar mit Â»-msoft-divÂ«.Gleitkommaberechnungen mit Hardware-Befehlen durchfÃ¼hren. Die Voreinstellung ist Â»-msoft-floatÂ«.Multiplikation mit Hardware-Befehlen (l.mul, l.muli) aktivieren. Dies ist die Vorgabe; Ã¤nderbar mit Â»-msoft-mulÂ«.Inline-Code zur Implementierung von eingebauten Funktionen verwenden, statt Bibliotheksfunktionen aufzurufen.Befehle fÃ¼r Rechtsdrehung (l.ror) erzeugen. StandardmÃ¤ÃŸig werden Funktionen aus der libgcc verwendet, um Rechtsdrehungen mit Direktoperand durchzufÃ¼hren.Befehle fÃ¼r Rechtsdrehung mit Direktoperand (l.rori) erzeugen. StandardmÃ¤ÃŸig werden Funktionen aus der libgcc verwendet, um diese Befehle durchzufÃ¼hren.Befehle fÃ¼r Bitverschiebung mit Direktwert (l.srai, l.srli, l.slli) erlauben. Standardverhalten ist, stattdessen zusÃ¤tzliche Befehle zu verwenden, die den Direktwert in ein Register zwischenspeichern.Befehle fÃ¼r Vorzeichenerweiterung (l.ext*) erlauben. Standardverhalten ist, die Vorzeichenerweiterung mittels Ladebefehlen durchzufÃ¼hren.Erraten der Sprungwahrscheinlichkeiten einschalten.Hardware-Gleitkommabefehle einschalten.Herausziehen aufeinanderfolgender Ladeoperationen einschalten, um Erzeugung bedingter Kopieroperationen zu fÃ¶rdern.Herausziehen von Ladeoperationen aus bedingten Zeigern einschalten.hwasan-Instrumentierung fÃ¼r alloca/VLAs einschalten.hwasan-Instrumentierung fÃ¼r eingebaute Funktionen einschalten.hwasan-Instrumentierung fÃ¼r Ladeoperationen einschalten.hwasan-Instrumentierung von auf dem Stapel allozierten Variablen fester GrÃ¶ÃŸe einschalten.hwasan-Instrumentierung fÃ¼r Speicheroperationen einschalten.Ein- und Ausgabe der Graphite-ReprÃ¤sentierung einschalten.Inkrementelle LTO einschalten, mit seinem Cache im angegebenen Verzeichnis.Â»inlineÂ«-PrÃ¼fungen fÃ¼r NIL-EmpfÃ¤nger mit NeXT-Laufzeitumgebung und ABI-Version 2 einschalten.Inlining von PLT in Funktionsaufrufen einschalten.Einschalten des Inlining von Â»inlineÂ«-Funktionen, ansonsten wird jegliches Inlining ausgeschaltet.Befehle einschalten, die Angriffe Ã¼ber return-orientierte Programmierung vereiteln.Internes Stapelschrubben fÃ¼r alle geeigneten Funktionen einschalten.Interrupt-Stapelbefehle einschalten.Artspezifische Varianten der intrinsischen Ganzzahlfunktionen einschalten.Sprungmarkenausrichtungs-Optimierungen einschalten.Faules Modul-Importieren einschalten.Intrinsische Altlasten-Mathematik-Funktionen fÃ¼r KompatibilitÃ¤t einschalten.Veraltetes Parsen von INCLUDE als Anweisung einschalten.LebenszeitverlÃ¤ngerung fÃ¼r bereichsbasierte temporÃ¤re Â»forÂ«-Variablen einschalten.Optimierungen zur Bindezeit einschalten.Binder-Optimierungen einschalten.Binderlockerung einschalten.Binderlockerungen einschalten.Binderlockerung einschalten.Zusammenfassen von benachbarten Lade-/Speicherbefehlen einschalten.Schleifenverteilung fÃ¼r in Bibliotheksaufruf umgewandelte Muster einschalten.Schleifenverteilung auf BÃ¤umen einschalten.Vektorisierung des Schleifen-Epilogs mit kleinerer VektorgrÃ¶ÃŸe einschalten.Kopieren des Schleifenkopfes auf BÃ¤umen einschalten.Umordnen der Schleifen auf BÃ¤umen einschalten.Bewegung der Schleifeninvariante auf BÃ¤umen einschalten.Schleifenschachtelungs-Umwandlungen einschalten. Entspricht Â»-floop-nest-optimizeÂ«.Schleifenoptimierungen auf Baumebene einschalten.Schleifenvektorisierung von Gleitkommabefehlen einschalten.Schleifenvektorisierung auf BÃ¤umen einschalten.Maschinenspezifische Guckloch-Optimierungen einschalten.AusfÃ¼hrlichere RTX-Kosten wÃ¤hrend des Debuggens ausgeben.  Nur fÃ¼r GCC-Entwickler gedacht.Die meisten Warnungen einschalten.Multicore-UnterstÃ¼tzung einschalten.Multiplikationsbefehle einschalten.Multiprozessorbefehle einschalten.Optimierungen fÃ¼r geschachtelte bedingte AusfÃ¼hrung einschalten.Optimierung von &&/|| in bedingter AusfÃ¼hrung einschalten.GIMPLE-Parsen einschalten.Vorausschauende Verwendung von Â»cbranchsiÂ«-Mustern einschalten.Vorverarbeitung einschalten.BereichsprÃ¼fung wÃ¤hrend Kompilierung einschalten.Neuverbindung auf Baumebene einschalten.Registerdruckempfindliche Befehlsplanung einschalten.Lockerung im Assembler einschalten.rvalue-Argumente fÃ¼r ref-Parameter aktivieren.SicherheitsprÃ¼fungen bei allen Funktionen standardmÃ¤ÃŸig einschalten.Planung Ã¼ber BasisblÃ¶cke hinaus einschalten.Gesondertes Datensegment einschalten.Setzen von GPRs auf das Ergebnis von Vergleichen einschalten.Stapelspeicher-Sicherungskopie im Rahmen der Control-Flow Enforcement Technology (CET) einschalten.Vorzeichenerweiternde Befehle einschalten.Vorzeichenbehaftete Divisions- und Modulobefehle einschalten.Vorzeichenbehaftete Kopier- und Ladebefehle einschalten.Aufteilung von 32-Bit-Immediates in oberen/unteren Teil einschalten.Stapelsondierung einschalten.Stapelschrubben gemÃ¤ÃŸ der Attribute einschalten, mit strenger AufrufprÃ¼fung.Stapelschrubben fÃ¼r alle geeigneten Funktionen einschalten.Durchgang fÃ¼r statische Analyse einschalten.Strenge PrÃ¼fung fÃ¼r 32-bit psABI StrukturrÃ¼ckgabe einschalten.ZeichenkettenlÃ¤ngen-Optimierungen auf BÃ¤umen einschalten.UnterstÃ¼tzung fÃ¼r C++-Konzepte einschalten.UnterstÃ¼tzung fÃ¼r DEC STRUCTURE/RECORD einschalten.UnterstÃ¼tzung fÃ¼r GNU-Transaktionsspeicher einschalten.UnterstÃ¼tzung fÃ¼r RH850-ABI einschalten. Dies ist der Standard.UnterstÃ¼tzung fÃ¼r altes GCC-ABI einschalten.Erweiterung fÃ¼r Bytevertauschbefehle einschalten.Enden-Zusammenfassung auf BÃ¤umen einschalten.CSR-PrÃ¼fung fÃ¼r die ISA-abhÃ¤ngigen CSR und das schreibgeschÃ¼tzte CSR einschalten. Die ISA-abhÃ¤ngigen CSR sind nur gÃ¼ltig, wenn die entsprechende ISA festgelegt ist. Das schreibgeschÃ¼tzte CSR kann nicht von den CSR-Befehlen geschrieben werden.Die MIPS16e-V2-Befehle einschalten.Den fundamentalen Typ char8_t einschalten und ihn als Typ fÃ¼r UTF-8-Zeichenketten und Zeichenliterale verwenden.Kopie des AArch64-Lade/Speicher-Paar-Fusionspasses, der nach der Registerzuweisung ausgefÃ¼hrt wird, aktivieren.Kopie des AArch64-Lade/Speicher-Paar-Fusionspasses, der vor der Registerzuweisung ausgefÃ¼hrt wird, aktivieren.Critical-Path-Heuristik im Planer einschalten.Heuristik fÃ¼r AbhÃ¤ngigkeits-ZÃ¤hler bei Planung einschalten.AnnÃ¤herung der Division einschalten. Dies reduziert die Genauigkeit der Division auf etwa 16 Bits fÃ¼r einfache Genauigkeit und 32 Bits fÃ¼r doppelte Genauigkeit.Erweiterte LRW-Befehle einschalten (Standard fÃ¼r CK801).Gruppenheuristik im Planer einschalten.Heuristik fÃ¼r letzte Befehle im Planer einschalten.Optimierer fÃ¼r geschachtelte Schleifen einschalten.Normalen Modus einschalten.ÃœberlaufprÃ¼fungen bei der Codegenerierung einschaltenRang-Heuristik im Planer einschalten.AnnÃ¤herung der reziproken Quadratwurzel einschalten. Dies reduziert die Genauigkeit der reziproken Quadratwurzelergebnisse auf etwa 16 Bits fÃ¼r einfache Genauigkeit und 32 Bits fÃ¼r doppelte Genauigkeit.Heuristik fÃ¼r spekulative Befehle im Planer einschalten.AnnÃ¤herung der Quadratwurzel einschalten. Dies reduziert die Genauigkeit der Quadratwurzelergebnisse auf etwa 16 Bits fÃ¼r einfache Genauigkeit und 32 Bits fÃ¼r doppelte Genauigkeit. Wenn eingeschaltet, bringt es Â»-mlow-precision-recip-sqrtÂ« mit sich.Verwendung von 64-Bit Gleitkommaregistern in FMOV-Befehlen einschalten. Siehe auch Â»-mdalignÂ«, wenn 64-Bit-Ausrichtung benÃ¶tigt wird.Verwendung des RX-FPU-Befehls einschalten. Dies ist Standard.Verwendung von leeren Formatelementen in Formatzeichenketten einschalten.Zeichenliterale in Zuweisungen und Datenanweisungen fÃ¼r Nichtzeichenvariablen aktivieren.Verwendung von indexierten Ladebefehlen einschalten.Verwendung von Pre-/Post-Modifikationen mit Registerversatz einschalten.Verwendung des LRA-Registerallozierers einschalten.Verwendung des fsca-Befehls einschalten.Verwendung des fsrra-Befehls einschalten.Verwendung des alten, defekten ABI, bei dem alle Funktionsargumente auf dem Stapel auf 32 Bits ausgerichtet sind.Verwendung der kurzen Ladebefehle einschalten.Verwendung des Standard-RX-ABI, wobei alle Funktionsargumente auf dem Stapel natÃ¼rlich ausgerichtet sind. (Voreinstellung.)Die z-Vektor-Spracherweiterung einschalten, die das kontextabhÃ¤ngige Vektormakro einschaltet und eingebaute Funktionen im Altivec-Stil aus vecintrin.h einschaltet.Traditionelle Vorverarbeitung einschalten.TransitivitÃ¤t von BeschrÃ¤nkungen wÃ¤hrend der Analyse berÃ¼cksichtigen.Nicht ausgerichtete Wort- und Halbwortzugriffe auf gepackte Daten einschalten.Verwendung der BI/BIH-Befehle einschalten, wenn verfÃ¼gbar.Verwendung von GPREL fÃ¼r Nur-Lese-Daten in FDPIC einschalten.Verwendung der NPS400-Bitbefehle einschalten.Erweiterung fÃ¼r xld/xst fÃ¼r NPS400 einschalten.Verwendung von POST_INC / POST_DEC einschalten.Verwendung von POST_MODIFY einschalten.Verwendung von R16 bis R31 einschalten (Standard).Verwendung der ungeraden Register fÃ¼r Gleitkomma einfacher Genauigkeit erlauben.Verwendung von sdata/scommon/sbss einschalten.Benutzerdefinierte Befehle einschalten.IEEE-128-Bit-Gleitkomma-Befehle einschalten.Schleifenbefehle fÃ¼r v850e3v5 einschalten.Variable polynomiale CRC-Erweiterung einschalten.Verschiedene sicherheitsrelevante Optionen einschalten.Vektorisierung fÃ¼r Gathering-Befehl einschalten.Vektorisierung fÃ¼r Scatter-Befehl einschalten.Vektorisierung auf BÃ¤umen einschalten.Wortreiche Ausgabe einschalten.Workaround fÃ¼r einzelnes Erratum des AT697F-Prozessors einschalten (entspricht Erratum #13 des Prozessors AT697E).Workarounds fÃ¼r Errata des GR712RC-Prozessors einschalten.Workaround fÃ¼r Errata des UT699-Prozessors einschalten.Workarounds fÃ¼r Errata des UT699E/UT700-Prozessors einschalten.Traditionelle Planung in Schleifen, die bereits Modulo-Planung unterzogen wurden, einschalten/ausschalten.Einschalten/Ausschalten der statischen Bindung fÃ¼r CALL-LiteraleID-basierte Shared Library einschalten.Betriebsart fÃ¼r positionsunabhÃ¤ngige Daten (PID) einschalten.Ein-/ausschalten der Verwendung der Befehle SMOVF, SMOVB, SMOVU, SUNTIL, SWHILE und RMPA. Vorgabe: eingeschaltet.Schaltet das dynamische Vektorisierer-Kostenmodell ein. FÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤t erhalten.AusfÃ¼hrliche Ausgabe des Kostenmodells in den Debug-Dumpdateien einschalten.SSE-Befehle mit VEX-PrÃ¤fix kodieren.End-Ausdruck in DO-SchleifeEnde der #embed-Suchliste.
  Ende der DO-Anweisung bei %C ist mit anderer DO-Schleife verwobenEnde der DO-Anweisung ohne Block bei %C ist innerhalb eines anderen BlockesEnde der skalaren Initialisierung bei %C erwartetEnde der Suchliste.
! Semantik der Zugriffskontrolle fÃ¼r Klassenelemente erzwingen.EntitÃ¤t %qs bei %L hat verzÃ¶gerten LEN-Parameter %qs und benÃ¶tigt entweder das POINTER- oder ALLOCATABLE-AttributEntitÃ¤t %qs bei %L hat Parameter mit aufgeschobenem Typ und benÃ¶tigt entweder das POINTER- oder ALLOCATABLE-AttributEntitÃ¤t %qs bei %L ist bereits in der Schnittstelle vorhandenEntitÃ¤t %qs bei %L ist inkompatibel zu einer BOZ-Literal-KonstanteEntitÃ¤t mit vermuteter ZeichenlÃ¤nge bei %L muss ein Scheinargument oder ein PARAMETER seinZÃ¤hler Ã¼bersteigt den C-Ganzzahltyp bei %CVergleich auf Gleichheit fÃ¼r %s bei %LÃ„quivalenz fÃ¼r %qs passt nicht zur Anordnung von COMMON %qs bei %LÃ„quivalent zu Â»-fcf-protection=fullÂ«.ERRMSG-Variable bei %L darf nicht Â»%sÂ« innerhalb der selben Â»%sÂ«-Anweisung seinFehlerFehler beim Reservieren von %lu BytesFehler bei Umwandlung von PARAMETER-Konstante in komplexer Konstante bei %CFehler beim Umwandeln einer GanzzahlFehler in Feldkonstruktor, auf den bei %L verwiesen wirdFehler in Zeigerinitialisierung bei %CFehler in Typspezifikation bei %LFehler in TypbeschrÃ¤nktem Aufruf bei %LFehler beim VergrÃ¶ÃŸern des Speicherblocks auf %lu BytesFehler beim Schreiben der JSON-Ausgabedatei Â»%sÂ«
  Fehler beim Schreiben der Moduldatei %qs: %sFehler beim Schreiben der Moduldatei: %sFehler beim Schreiben der Ausgabedatei Â»%sÂ«
! Auswertung des nicht standardisierten Initialisierungsausdrucks bei %LZeichenkette mit mehr als 2 hoch 28 Zeichen bei %L wird erst bei AusfÃ¼hrung des Programms ausgewertet werden, rechnen Sie mit FehlernEreignisArgument fÃ¼r Ereignisvariable bei %L muss ein Koarray, aber nicht koindiziert seinArgument fÃ¼r Ereignisvariable bei %L muss ein Koarray oder koindiziert seinEreignis-Variable bei %L muss Skalar mit EVENT_TYPE seinJeder Feldindex der Zielspezifikation bei %L muss ein konstanter Ausdruck seinAbbruchbedingung der DO WHILE-Schleife bei %L muss ein skalarer LOGICAL-Ausdruck seinBeim ersten auftretenden Fehler beenden.32-/64-Bit-Ganzzahldivision in vorzeichenlose 8-Bit-Ganzzahldivision mit LaufzeitprÃ¼fung erweitern.Im Zuge der RTL-Erzeugung die Befehle adddi3 und subdi3 in add.f/adc usw. expandieren.Â»)Â« bei %C erwartetÂ»,Â« bei %C erwartet%<( depobj )%> bei %C erwartet%<(%> nach %<prefer_type%> bei %C erwartet%<(%> nach %qs bei %C erwartet%<(%> bei %C erwartet%<)%> bei %C erwartet%<)%> oder %<,%> bei %C erwartet%<)%> oder %<omp_cur_iteration)%> bei %C erwartetIn Koindex-Spezifikation in ALLOCATE-Anweisung bei %L wird %<*%> erwartet%<,%> bei %C erwartet%<,%> oder %<)%> bei %C erwartet%<,%> oder %<:%> bei %C erwartet%<,%> oder %<}%> bei %C erwartet%<,%> oder Ende der Anweisung bei %C erwartet%<:%> bei %C erwartet%<::%> nach Bindeattributen bei %C erwartet%<::%> bei %C erwartetAtomarer Vergleichsausdruck %<==%>, %<.EQ.%> oder %<.EQV.%> bei %L erwartet%<=>%> bei %C erwartet%<END INTERFACE ASSIGNMENT (=)%> bei %C erwartet%<fr(%> oder %<attr(%> bei %C erwartet%<prefer_type%>, %<target%> oder %<targetsync%> bei %C erwartet%<{%> bei %C erwartet',' oder ')' in der Reduktionsliste bei %C erwartetÂ»::Â« in TYPE-Definition bei %C erwartetZeichen Â»=Â« in PARAMETER-Anweisung bei %C erwartetACQ_REL, ACQUIRE, RELAXED, RELEASE oder SEQ_CST fÃ¼r ATOMIC_DEFAULT_MEM_ORDER-Klausel bei %C erwartetALIGN- oder ALLOCATOR-Klausel bei %C erwartetEins von ALLOC, TO, FROM, TOFROM, FIRSTPRIVATE, PRESENT, NONE oder DEFAULT bei %C erwartetEntweder COMPILATION oder EXECUTION erwartet in AT-Klausel bei %CEine der Klauseln DEPEND, UPDATE oder DESTROY bei %C erwartetDO-Schleife bei %C erwartetELSE bei %L erwartet, in atomarer VergleichserfassungDie SEVERITY-Klausel bei %C erwartet entweder FATAL oder WARNINGHOST, NOHOST oder ANY bei %C erwartetIF bei %L erwartet, in atomarer VergleichserfassungEins von IN, OUT, INOUT, INOUTSET oder MUTEXINOUTSET bei %C erwartet, gefolgt von %<)%>Eine der Klauseln INCLUSIVE oder EXCLUSIVE bei %C erwartetINTEGER-Typ bei %L erwartetTyp INTEGER, REAL oder CHARACTER fÃ¼r %qs in REDUCE mit MIN/MAX bei %L erwartet, %s bekommenEine der Klauseln NONE oder PRESENT bei %C erwartetEins von NONE, FIRSTPRIVATE, PRIVATE oder SHARED erwartet, in DEFAULT-Klausel bei %CUnerwartetes Â»OMP END METADIRECTIVEÂ« bei %CORDER(CONCURRENT) erwartet bei %C, optional mit Modifizierer %<reproducible%> oder %<unconstrained%>P-Bearbeitungsdeskriptor erwartet in Formatzeichenkette bei %LPARAMETER-Symbol in komplexer Konstante bei %C erwartetRANK oder RANK DEFAULT gefolgt von SELECT RANK erwartet bei %CEins von SCALAR, AGGREGATE, ALLOCATABLE, POINTER oder ALL bei %C erwartetEins von SEQ_CST, ACQUIRE oder RELAXED erwartet, bei %CEins von SEQ_CST, AQC_REL, RELEASE oder ACQUIRE bei %C erwartetSHAPE-Argument fÃ¼r C_F_POINTER mit Array-FPTR bei %L erwartetEins von TEAMS, PARALLEL oder THREAD erwartet als Bindung in BIND bei %CTYPE IS-, CLASS IS- oder END SELECT-Anweisung hinter SELECT TYPE bei %C erwartetEine der Klauseln UNIFIED_ADDRESS, UNIFIED_SHARED_MEMORY, SELF_MAPS, DYNAMIC_ALLOCATORS, REVERSE_OFFLOAD oder ATOMIC_DEFAULT_MEM_ORDER bei %L erwartetCASE- oder END-SELECT-Anweisung hinter SELECT CASE bei %C erwartetNamenlose Schnittstelle bei %C erwartetProzedur fÃ¼r Argument %qs bei %L erwartetProzedurzeiger fÃ¼r Argument %qs bei %L erwartetRechte Klammer in Ausdruck bei %C erwartetSchrittvariable in Iterator bei %C erwartetZugriffsspezifikation bei %C erwartetAlternative RÃ¼cksprungmarke bei %C erwartetInitialisierungsausdruck bei %C erwartetAndere Dimension in Felddeklaration bei %C erwartetArgumentliste bei %C erwartetArrayindex erwartet bei %CFeldindexsprung erwartet bei %CVerknÃ¼pfungsname bei %C erwartetVerknÃ¼pfung bei %C erwartetVerknÃ¼pfungsliste bei %C erwartetAttributbitname erwartetBindeattribut bei %C erwartetBindungsname bei %C erwartetBindungsziel hinter %<=>%> bei %C erforderlichBlockname %qs des SELECT-Konstrukts bei %C erwartetBlocknamen von %qs in Â»%sÂ«-Anweisung bei %L erwartetGrenzen fÃ¼r %qs bei %L erwartetCoarray-Variable als Argument %qs fÃ¼r intrinsisches %s bei %L erwartetKomma in E/A-Liste bei %C erwartetReferenz auf Komponente bei %C erwartetKonstanter nichtnegativer skalarer ganzzahliger Offset-Ausdruck bei %L erwartetKonstanter skalarer Ganzzahl-Ausdruck oder nichtleeres Standard-Zeichenliteral bei %L erwartetKonstrukttyp PARALLEL, SECTIONS, DO oder TASKGROUP in Anweisung $OMP CANCELLATION POINT bei %C erwartetDatenkonstante nach Wiederholungsangabe bei %C erwartetStandard-Zeichenkettenliteral bei %L erwartetSINK oder SOURCE des AbhÃ¤ngigkeitstyps bei %C erwartetDummyparametername oder eine positive Ganzzahl bei %L erwartetIn AUTOMATIC-Anweisung bei %C wird eine Â»entity-listÂ« erwartetÂ»entity-listÂ« in STATIC-Anweisung bei %C erwartetExponent in Ausdruck bei %C erwartetAusdruck bei %C in PARAMETER-Anweisung erwartetAusdruck in %s-Anweisung bei %C erwartetErwarteter Ausdruck in Feldspezifikation bei %CAusdruckstyp erwartetFormale Argumentliste in Funktionsdefinition bei %C erwartetGenerischer Name oder Operatordeskriptor bei %C erwartetBezeichner bei %C erwartetInitialisierungsausdruck bei %C erwartetErwarteter Initialisierungsausdruck in CASE bei %CGanzzahl erwartetGanzzahlausdruck bei %C erwartetGanzzzahlausdruck der Art %<omp_allocator_handle_kind%> bei %L erwartetEntweder ein Ganzzahlausdruck oder genau ein GerÃ¤temodifizierer %<device_num%> oder %<ancestor%> erwartet bei %CGanzzahlzeichenkette erwartetGanzzahltyp fÃ¼r %qs in REDUCE mit IAND/IOR/IEOR bei %L erwartet, %s bekommenErwarteter intrinsischer Initialisierungsausdruck OMP WORKSHARE bei %LMarke %qs fÃ¼r Â»%sÂ«-Anweisung bei %C erwartetLinke Klammer erwartetListe von %<untere-Grenze :%> oder Liste von %<untere-Grenze : obere-Grenze%>-Angaben bei %L erwartetLogischer Typ fÃ¼r %qs in REDUCE bei %L erwartet, %s bekommenProzedurname im Modul bei %C erwartetName erwartetNumerischer Typ fÃ¼r %qs in REDUCE bei %L erwartet, %s bekommenParameterliste in Typdeklaration bei %C erwartetPositiver Argumentindex bei %L erwartetBereichsangabe erwartet bei %CEchte Zeichenkette erwartetReduktionsoperator oder Funktionsname bei %C erwartetRegister oder konstante Ganzzahl erwartet.Rechte Klammer erwartetSkalaren Initialisierungsausdruck bei %C erwartetSkalarer intrinsischer Ausdruck bei %L erwartet, in atomarem VergleichSkalare intrinsische Variable bei %L erwartet, in atomarem VergleichSpezifischer Bindungsname bei %C erwartetZeichenkette erwartetStrukturkomponentenname bei %C erwartetName einer Strukturkomponente oder eines Operators nach %<.%> bei %C erwartetBeendenden Namen bei %C erwartetTrait-property-extension bei %C erwartetTypgebundene Prozedur oder Prozedurzeiger-Komponente bei %C erwartetVariablenliste bei %C erwartetVariablennamen bei %C erwartetVariablennamen bei %C in PARAMETER-Anweisung erwartetVariablenname in %s Ortsangabe bei %L erwartetVariablenname in der Reduktionsliste bei %C erwartet%<END INTERFACE %s%> bei %C erwartet%<END INTERFACE OPERATOR (%s)%> bei %C erwartet%<END INTERFACE OPERATOR (%s)%> bei %C erwartet, aber %qs erhalten%<END INTERFACE OPERATOR (.%s.)%> bei %C erwartet%s bei %C erwartetÂ»%sÂ«-Anweisung bei %L erwartetKomma in EQUIVALENCE bei %C erwartetSkalaren INTEGER-Ausdruck bei %C erwartet, aber %s gefundenVariable bei %L erwartetDefinierbare EntitÃ¤t bei %L erwartetListe benannter EntitÃ¤ten bei %C erwartetVariable in READ-Anweisung bei %C erwartetVariable oder io-implied-do bei %L erwartetVariable oder io-implied-do in READ-Anweisung bei %L erwartetExperimentelle vorzeichenlose Zahlen.Explizite Arrayform bei %C muss eine Konstante vom Typ INTEGER sein, nicht %sExplizite Schnittstelle fÃ¼r %qs bei %L erforderlich: %sExplizite Schnittstelle fÃ¼r Komponente %qs bei %L erforderlich: %sExplizite Schnittstelle fÃ¼r polymorphes Argument bei %L erforderlichFeld mit expliziter Form, aber nichtkonstanten Grenzen bei %CFunktionen exportieren, auch wenn sie Â»inlineÂ« sein kÃ¶nnen.Ausdruck bei %L muss in diesem Kontext eine Konstante seinAusdruck bei %L muss INTEGER-Typ haben, %s gefundenAusdruck bei %L muss skalar seinAusdruck in CASE-Anweisung bei %L darf nicht %s seinAusdruck in CASE-Selektor bei %L muss skalar seinAusdruck in CASE-Anweisung bei %L ist nicht im Bereich von %sAusdruck in CASE-Anweisung bei %L muss von der Art %d seinAusdruck in CASE-Anweisung bei %L muss Typ %s habenAusdruck in CASE-Anweisung bei %L muss skalar seinAusdruck in Â»STAT=Â« bei %C darf nicht koindiziert seinAusdruck ist ein nicht interoperabler abgeleiteter TypAusdruck ist polymorphErweiterung, ein LOGICAL in einer Art zu verwenden, die nicht kompatibel zu C_Bool istErweiterung, ein CHARACTER in einer Art zu verwenden, die nicht kompatibel zu C_CHAR istErweiterung: Spezifizierer %s in Anweisung %s bei %L hat Wert %qsErweiterung: Umwandlung von %s in %s bei %LErweiterung: Skalares effektives nicht-standardartiges, nicht-C_CHAR CHARACTER-Argument mit Feld-Scheinargument %qs bei %LErweiterung: UnÃ¤rer Operator hinter arithmetischem Operator bei %C (Klammern verwenden)Erweiterung: Nullbreite hinter L-Deskriptor bei %LErweiterung: Zeichen Backslash bei %CErweiterung: Exponentbuchstabe %<q%> in literaler Realkonstante bei %CExternes %qs bei %L kann keine Initialisierung habenExterne IO UNIT kann kein Feld bei %L seinExternes Objekt %qs bei %L darf keinen Initialisierer habenÃœberflÃ¼ssige Option fÃ¼r %<-Xassembler%>; %s, alle Optionen der Form %<-Xassembler%> und %<-Wa%> werden verworfen.ÃœberschÃ¼ssige Zeichen im Format bei %LF2008: C1210 IMPORT-Anweisung bei %C ist im KÃ¶rper einer Schnittstelle fÃ¼r Modulprozedur nicht erlaubtÂ»FAIL IMAGEÂ«-Anweisung bei %CArgument FAILED= fÃ¼r NUM_IMAGES bei %LDer FDPIC-Modus wird im Thumb-1-Modus nicht unterstÃ¼tztFINAL-Klausel bei %L erfordert einen skalaren LOGICAL-AusdruckFINAL-Deklaration bei %C muss innerhalb von CONTAINS seinFINAL-Deklaration bei %C muss innerhalb eines CONTAINS-Abschnitts eines abgeleiteten Typs stehenFINAL-Prozedur %qs bei %L ist keine SUBROUTINEBei %2$L deklarierte FINAL-Prozedur %1$qs hat denselben Rang (%3$d) wie %4$qsFINAL-Prozedur bei %L muss genau ein Argument habenFINAL-Prozedur bei %L mit angenommenem Rangargument muss der einzige Finalisierer mit derselben Art/Typ sein (F2018: C790)FINAL-Prozedurdeklaration bei %CFLUSH-Anweisung bei %CFORALL-Konstrukt bei %LFORALL-Endausdruck bei %L muss skalarer INTEGER seinFORALL-Index %qs kann nicht in Tripel-Spezifikation bei %L auftretenFORALL-Indexname bei %L muss skalarer INTEGER seinFORALL-Indexname bei %L muss skalarer INTEGER seinFORALL-Maskenklausel bei %L erfordert einen skalaren LOGICAL-AusdruckFORALL-Anfangsausdruck bei %L muss skalarer INTEGER seinFORALL-Schrittausdruck bei %L kann nicht Null seinFORALL-Schrittausdruck bei %L muss skalares %s seinFORM-TEAM-Anweisung bei %CFORMAT-Marke %d bei %L nicht definiertFORMAT-Anweisung bei %C kann nicht innerhalb von INTERFACE auftretenFORMAT-Anweisung bei %L hat keine AnweisungsmarkeFORMAT-Kennzeichen bei %L kann kein Feld der GrÃ¶ÃŸe 0 seinFORMAT-Markierung bei %L muss vom Typ Standard-CHARACTER oder INTEGER seinGleitkomma-Ausnahmen sind eingeschaltet.Gleitkomma-Register kÃ¶nnten trotz Attribut %qE Ã¼berschrieben werden: compilieren Sie mit %<-mgeneral-regs-only%>Argument FPTR fÃ¼r C_F_POINTER bei %L darf nicht polymorph seinFPTR-Argument fÃ¼r C_F_POINTER bei %L ist eine Funktion, die einen Zeiger zurÃ¼ckgibtFPU-Typen von LoongArch:FPX-Optionen Â»fastÂ« und Â»compactÂ« schlieÃŸen sich ausFPX: Gleitkommaerweiterungen fÃ¼r doppelte Genauigkeit fÃ¼r Argonaut-ARC-CPU einschalten.FPX: kompakte FPX-Befehle fÃ¼r doppelte Genauigkeit erzeugen.FPX: schnelle FPX-Befehle fÃ¼r doppelte Genauigkeit erzeugen.FPX: kompakte FPX-Befehle fÃ¼r einfache Genauigkeit erzeugen.FPX: schnelle FPX-Befehle fÃ¼r einfache Genauigkeit erzeugen.FROMPOS-Argument (%ld) auÃŸerhalb des Bereichs 0:%d in intrinsischem MVBITSFROMPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsischem MVBITSFUNCTION-Ergebnis %s kann nicht ALLOCATABLE in FUNCTION %s bei %L seinFUNCTION-Ergebnis %s kann kein POINTER in FUNCTION %s bei %L seinFUNCTION-Ergebnis %s kann kein Feld in FUNCTION %s bei %L seinFUNCTION-Ergebnis %s kann nicht vom Typ %s in FUNCTION %s bei %L seinKomplexe Konstruktoren und Destruktoren ausfaktorisieren, um Speicherplatz gegenÃ¼ber Geschwindigkeit zu gewinnen.Failed to create structure type '%s' at %CKeine passende Klausel gefunden bei %CFailure getting length of a constant array.Fehler bei Umwandlung von BOZ in REAL bei %LSchwerwiegender FehlerDie Datei %qs wird rekursiv eingebundenGeÃ¶ffnete Datei %qs ist keine GNU-Fortran-Moduldatei, bei %CDatei, um AbhÃ¤ngigkeitsinformationen auszugeben.Finalisierbarer Typ nicht zulÃ¤ssig fÃ¼r %qs in Ortsangabe %s bei %LDetaillierte Steuerung der Tuningfeatures.Erstes Argument der definierten Zuweisung bei %L muss INTENT(OUT) oder INTENT(INOUT) seinErstes Argument der Operatorschnittstelle bei %L kann nicht optional seinErstes Argument der Operatorschnittstelle bei %L muss INTENT(IN) seinErstes oder letztes intrinsisches Argument zu !$OMP ATOMIC muss bei %2$L %1$qs seinFix min_int calculationFeste ZeilenlÃ¤nge muss mindestens sieben seinSchalter %<-fmax-stack-var-size=%d%> Ã¼berschreibt %<-frecursive%> (ausgelÃ¶st durch %qs)Schalter %<-fno-automatic%> Ã¼berschreibt %<-fmax-stack-var-size=%d%>Schalter %<-fno-automatic%> Ã¼berschreibt %<-frecursive%>Schalter %<-fno-automatic%> Ã¼berschreibt %<-frecursive%> (ausgelÃ¶st durch %qs)Schalter %<-frecursive%> Ã¼berschreibt %<-fmax-stack-var-size=%d%>Aufrufe von einfachen inline-Funktionen zusammenfalten.Befehle, die Speicher-Offsets berechnen, wenn mÃ¶glich in die Speicherzugriffsbefehl einbetten.Renesas-(vormals Hitachi)/SuperH-Aufrufkonventionen folgen.Die C++17-Anforderungen fÃ¼r die Auswertungsreihenfolge von ZuweisungsausdrÃ¼cken, Bitverschiebungen, Elementfunktionsaufrufe, etc. befolgen.EABI-Bindeanforderungen befolgen.Bei !$OMP ATOMIC COMPARE muss der erste Operand des Vergleichs bei %L die Variable %qs sein, in die die Aktualisierungsanweisung bei %L schreibtBei den Optionen der Form Â»-f*-prefix-map=Â« die kanonischen Pfadnamen statt der angegebenen Zeichenketten vergleichen.For Schein-Prozedur %s in BIND(C) bei %C ist kein bindender Name erlaubtFÃ¼r Intrinsics-Bibliothek: alle Parameter in Registern Ã¼bergeben.FÃ¼r geschachtelte Funktionen auf dem Stapel werden AusfÃ¼hrrechte gesetzt.FÃ¼r bereichsbasierte %<adjust_args%> ist ein konstanter positiver skalarer ganzzahliger Ausdruck bei %L erforderlichFÃ¼r Bitschiebeoperationen mit konstanter Anzahl, die einen einzelnen Maschinenbefehl zur Verschiebung um eine Stelle erfordern, die maximale Anzahl von Inline-Verschiebeanweisungen (Maximalwert 64) festlegen, die ausgegeben werden sollen, anstatt die entsprechende Hilfsfunktion __mspabi zu verwenden. Der Standardwert ist 4.FÃ¼r Ziele, die normalerweise Trampoline fÃ¼r geschachtelte Funktionen benÃ¶tigen, diese stets generieren, statt Deskriptoren zu verwenden.Dem Assembler (und Binder) erlauben, jede beliebige Architektur-Untervariante ohne Fehler zu verwenden.FP-als-GP-Optimierung verbieten.Verbieten, dass mittels $fp auf statische oder globale Variablen zugegriffen wird. Diese Option verhindert die FP-als-GP-Optimierung, unabhÃ¤ngig von Â»-mforce-fp-as-gpÂ«.Erzwingen, dass alle Aufrufe mittels des jli-Befehls erfolgen.Erzwingen, dass die Assembler-Ausgabe immer Hexadezimalkonstanten verwendet.Bitfeld-Zugriffe zwingen, zu ihrer Typbreite zu passen.Erzeugen von temporÃ¤ren Variablen erzwingen, um Code fÃ¼r selten ausgefÃ¼hrtes Â»forallÂ« zu testen.Ausschalten der Hardwareschleife erzwingen, selbst wenn Â»-mext-dspÂ« angegeben ist.Funktionen auf 4-Byte-Grenzen zwingen.Codeerzeugung von Stummeln fÃ¼r die Indirektion externer Symbole erzwingen.Indirekte Aufrufe und SprÃ¼nge mittels Register erzwingen.FP-als-GP-Optimierung erzwingen.Den fÃ¼r Â»wchar_tÂ« zugrundeliegenden Typen auf Â»unsigned shortÂ« zwingen.Verwendung der Delay-Slots fÃ¼r bedingte SprÃ¼nge erzwingen.Die Verwendung von SLP bei der Vektorisierung erzwingen; scheitern, wenn dies nicht mÃ¶glich ist.Formatanweisung im Hauptblock des Modules bei %CFortran 2003: Spezifizierer %s in Anweisung %s bei %L hat Wert %qsFortran 2003: Zeichen fÃ¼r Argument %qs des intrinsischen %qs bei %LFortran 2003: DT-Format-Spezifizierer bei %C nicht erlaubtFortran 2003: Skalares effektives CHARACTER-Argument mit Feld-Scheinargument %qs bei %LFortran 2008: Veraltete Funktion:Fortran 2008: COMMON-Block %qs mit Binde-Marke bei %L teilt sich Bezeichner mit gobaler nicht-COMMON-BlockentitÃ¤t bei %LFortran 2008: Effektives Nicht-Zeiger-Argument bei %L an Scheinzeiger %qsFortran 2008: Nullzeiger bei %L an Nicht-Zeiger-Schein-%qsFortran 2008: Zeigerfunktionen in Variablen-Definitionskontext (%s) bei %LFortran 2008: Semikolon bei %C ohne vorausgehende AnweisungFortran 2018: gelÃ¶schtes Feature:Fortran 2018: Veraltetes Feature:Fortran 2018:Fortran 2023:Fortran 95 erfordert Standard INTEGER in %s-Marke bei %LKeine passende spezifische Bindung fÃ¼r Aufruf des GENERIC %qs bei %L gefundenFreie ZeilenlÃ¤nge muss mindestens drei seinFunktion %qs als Initialisierungsausdruck bei %LFunktion %qs bei %L kann nicht rekursiv aufgerufen werden, da sie nicht RECURSIVE istFunktion %qs bei %L darf keinen Initialisierer habenFunktion %qs bei %L hat keinen IMPLICIT-TypFunktion %qs bei %L hat keinen IMPLICIT-Typ; meinen Sie %qs?Funktion %qs bei %L ist INTRINSIC, aber nicht mit einer intrinsischen Funktion vertrÃ¤glichFunktion %qs bei %L muss PURE seinFunktion %qs in Initialisierungs-Ausdruck bei %L muss eine intrinsische Funktion seinFunktion %qs ist als CHARACTER(*) deklariert und kann nicht bei %L verwendet werden, da es kein Scheinargument istFunktion %qs erfordert eine Argumentliste bei %CFunktion Â»%sÂ« bei %L hat EintrÃ¤ge mit unpassenden FeldspezifikationenFunktion Â»%sÂ« bei %L hat Eintrag Â»%sÂ« mit unpassenden CharakteristikaFunktion Â»%sÂ« bei %L mit EintrÃ¤gen, die Variablen mit verschiedenen ZeichenkettenlÃ¤ngen zurÃ¼ckgebenDie UnterstÃ¼tzung von Â»Function Multi VersioningÂ« ist experimentell, und das Verhalten wird sich wahrscheinlich noch Ã¤ndernFunktion nicht gefunden.Funktionsergebnis %qs bei %L kann keine Initialisierung habenFunktionsergebnis %qs bei %L hat keinen IMPLICIT-TypFunktionsergebnis %qs bei %L ist als X-Argument fÃ¼r C_FUNLOC ungÃ¼ltigFunktionsergebnis %qs bei %L darf weder Koarray sein noch eine Koarray-Komponente habenFunktionsergebnis %qs ist als Prozedurziel in Zuweisung des Prozedurzeigers bei %L ungÃ¼ltigFunktionsergebnisvariable %qs bei %L von elementarer Funktion %qs darf nicht die Attribute ALLOCATABLE oder POINTER habenFunktionsanfÃ¤nge werden an dieser Potenz von 2 ausgerichtet.Funktionen, die Werte zurÃ¼ckgeben, mÃ¼ssen mit return-Anweisungen enden.Bestimmte Ganzzahloperationen verschmelzen, um die Performance auf power10 zu steigern.Bestimmte Ganzzahloperationen verschmelzen, um die Performance auf power8 zu steigern.GCC kann keine Operatoren mit Ganzzahl- und Festkommatypen unterstÃ¼tzen, die zusammen zu viele Ganzzahl- und Bruch-Bits habenGCC unterstÃ¼tzt derzeit kein simdclone mit simdlens %wd und %wd fÃ¼r diese Typen.GCC bietet derzeit keine UnterstÃ¼tzung fÃ¼r Parametertyp %qT fÃ¼r SIMD-FunktionenGCC bietet derzeit keine UnterstÃ¼tzung fÃ¼r RÃ¼ckgabetyp %qT fÃ¼r SIMD-FunktionenGCC unterstÃ¼tzt derzeit %<simdlen %wd%> fÃ¼r Typ %qT nichtGCC ist nicht dafÃ¼r konfiguriert, %qs als Argument fÃ¼r %<-foffload=%> zu unterstÃ¼tzenGCC muss mit %<--enable-newlib-nano-formatted-io%> konfiguriert werden, um %<-mtiny-printf%> zu verwendenGCC unterstÃ¼tzt nur %u geschachtelte GÃ¼ltigkeitsbereicheGCC-Vektor per Referenz Ã¼bergegeben: Nicht-Standard-ABI-Erweiterung ohne KompatibilitÃ¤tsgarantieGCC-Vektor per Referenz zurÃ¼ckgegeben: Nicht-Standard-ABI-Erweiterung ohne KompatibilitÃ¤tsgarantieGCC wurde ohne BibliotheksunterstÃ¼tzung fÃ¼r %<-march=%s%> gebaut; erwÃ¤gen Sie stattdessen die Kompilierung fÃ¼r die zugehÃ¶rige generische Architektur %<-march=%s%>GCC_OFFLOAD_OMP_REQUIRES_FILE ist nicht gesetztZu verwendende GCN-CPU-Art:GCSE ausgeschaltetGENERIC %qs bei %L kann nicht spezifische Bindung mit gleichem Namen Ã¼berschreibenGENERIC %qs bei %L muss auf spezifische Bindung abzielen, %qs ist ebenfalls GENERICGENERIC bei %C muss innerhalb eines CONTAINS eines abgeleiteten Typs seinGENERIC-Bindung bei %CGENERIC-Prozedur %qs ist bei %L nicht als effektives Argument erlaubtGMP Version %s, MPFR Version %s, MPC Version %s. isl Versiom %s
! GNU C unterstÃ¼tzt Â»-traditionalÂ« ohne Â»-EÂ« nicht mehrGNU-Erweiterung:GNU Objective C unterstÃ¼tzt keine traditionelle Ãœbersetzung mehrAttribut im GNU-Stil zwischen Label und Deklaration bezieht sich auf das LabelGOTO-Anweisung bei %L hinterlÃ¤sst CRITICAL-Konstrukt fÃ¼r Marke bei %LGOTO-Anweisung bei %L hinterlÃ¤sst DO CONCURRENT-Konstrukt fÃ¼r Marke bei %LSyntaxfehler hinter PARAMETERIZED-TYPE-Deklaration bei %CMMA-Befehle erzeugen (oder auch nicht).Code erzeugen (oder auch nicht), der den Befehl LXVKQ verwendet.Code erzeugen (oder auch nicht), der den Befehl XXSPLTIDP verwendet.Code erzeugen (oder auch nicht), der den Befehl XXSPLTIW verwendet.Speicheradressierung relativ zu PC (oder absolut) erzeugen.Optimierungen fÃ¼r Speicherzugriffe relative zu PC durchfÃ¼hren (nicht durchfÃ¼hren).Speicherzugriffsbefehle mit (oder ohne) PrÃ¤fix erzeugen.16-Bit-Befehle erzeugen.16-Bit-i386-Code erzeugen.32-Bit-Code erzeugen.32-Bit-Versatz in switch-Tabellen erzeugen.32-Bit-i386-Code erzeugen.32-Bit-x86-64-Code erzeugen.32x16-Multiplizier sowie Multiplizier+Addier-Befehle generieren.64-Bit-Code erzeugen.64-Bit-x86-64-Code erzeugen.APCS-konforme Stapelrahmen erzeugen.ARCompact-32-Bit-Code fÃ¼r ARC600-Prozessor erzeugen.ARCompact-32-Bit-Code fÃ¼r ARC601-Prozessor erzeugen.ARCompact-32-Bit-Code fÃ¼r ARC700-Prozessor erzeugen.Stubs im AT&T-Stil fÃ¼r Mach-O erzeugen.BTF-Debug-Informationen auf Standardniveau erzeugen.C-Header mit Plattform-spezifischen Merkmalen erzeugen.C-Prototypen aus BIND(C)-Deklarationen generieren.C-Prototypen aus Nicht-BIND(C)-Definitionen fÃ¼r externe Prozeduren generieren.Informationen zu AbhÃ¤ngigkeiten von C++-Modulen erzeugen.FPU-Befehle mit doppelter Genauigkeit fÃ¼r C-SKY generieren (Vorgabe fÃ¼r Hardware-Gleitkomma).CTF-Debug-Informationen auf Standardniveau erzeugen.DFLOAT-Code mit doppelter Genauigkeit generieren.Erweiterungsbefehle fÃ¼r DSP generieren.DWARF-Abschnitte fÃ¼r Pubnames und Pubtypes mit GNU-Erweiterungen erzeugen.DWARF-Abschnitte fÃ¼r Pubnames und Pubtypes erzeugen.ELF-FDPIC-Code erzeugen.GFLOAT-Code mit doppelter Genauigkeit generieren.H8/300H-Code erzeugen.H8S-Code erzeugen.H8S/2600-Code erzeugen.H8SX-Code erzeugen.ILP32-Code erzeugen.FÃ¼r den ARMv8 angemessene IT-BlÃ¶cke erzeugen.JSON-Datei erzeugen.LP64-Code erzeugen.MIPS16-Code erzeugen.ModuleInfo-Struktur fÃ¼r Ausgabemodul generieren.PA1.0-Code erzeugen.PA1.1-Code erzeugen.PA2.0-Code erzeugen (erfordert binutils 2.10 oder neuer).SH1-Code erzeugen.SH2-Code erzeugen.FPU-freien SH2a-Code erzeugen.SH2e-Code erzeugen.SH3-Code erzeugen.SH3e-Code erzeugen.FPU-freien SH4-Code erzeugen.SH4-Code erzeugen.FPU-freien SH4-100-Code erzeugen.SH4-100-Code erzeugen.FPU-freien SH4-200-Code erzeugen.SH4-200-Code erzeugen.FPU-freien SH4-300-Code erzeugen.SH4-300-Code erzeugen.FPU-freien SH4a-Code erzeugen.SH4a-Code erzeugen.SH4al-dsp-Code erzeugen.SIMD-Klone fÃ¼r Funktionen mit OpenMP-Declare-Ziel-Direktive erzeugen.Beim Erzeugen von AltiVec-Code VRSAVE-Befehle erzeugen.Separaten Â»__mcount_locÂ«-Abschnitt erzeugen, der alle Aufrufe von Â»_mcountÂ« und Â»__fentry__Â« enthÃ¤lt.Separaten Â»__mcount_locÂ«-Abschnitt erzeugen, der alle Aufrufe von Â»mcountÂ« und Â»__fentry__Â« enthÃ¤lt.Eine auf das aktuelle Verzeichnis verweisende #line-Anweisung erzeugen.Ein Mach-O-Bundle erzeugen (Dateityp MH_BUNDLE).Einen __return_loc-Abschnitt generieren, der auf jeden instrumentierten return-Code verweist.Die Funktion Â»abortÂ« aufrufen, wenn eine Â»noreturnÂ«-Funktion zurÃ¼ckkehrt.Beim Compilieren eine Default-main-Funktion fÃ¼r D generieren.Einen einzigen Austrittspunkt fÃ¼r jede Funktion erzeugen.Absolute Quellpfade fÃ¼r gcov erzeugen.Code zum Ãœbergeben von Aggregaten mit maximal 64-Bit-Ausrichtung erzeugen.Alle notwendigen Informationen fÃ¼r Â»BPF Compile Once - Run EverywhereÂ« generieren.Ausgabedatei erzeugen, die Symbole nicht erst bei Bedarf, sondern bereits beim Laden bindet.NÃ¤herungsweise reziproke Division und Quadratwurzel fÃ¼r besseren Durchsatz erzeugen.Assemblerausgabe erzeugen, die mit Renesas AS100-Assembler vertrÃ¤glich ist. Dies schrÃ¤nkt einige CompilerfÃ¤higkeiten ein. Voreinstellung ist GAS-vertrÃ¤gliche Syntax.Auto-inc/dec-Befehle erzeugen.Big-Endian-Code erzeugen.Big-Endian-Code erzeugen.Big-Endian-eBPF erzeugen.Bit-Befehle erzeugen.Sprungbefehle als direkte SprÃ¼nge erzeugen.Falls nÃ¶tig, Â»callÂ«-Befehle als indirekte Aufrufe erzeugen.Sprungbefehle als indirekte SprÃ¼nge erzeugen.Aufrufbefehle als indirekte Registeraufrufe erzeugen.Im Funktionsprolog cld-Befehle erzeugen.Code fÃ¼r Laufzeitumgebung des C-SKY-Compilers statt libgcc generieren.Code fÃ¼r GNU as erzeugen.Code fÃ¼r GNU Assembler (gas) erzeugen.Code fÃ¼r GNU ld erzeugen.Code fÃ¼r die GNU-Laufzeitumgebung erzeugen.Code fÃ¼r die NeXT-(Apple macOS)-Laufzeitumgebung erzeugen.Code fÃ¼r OpenMP-Auslagerung erzeugen: schaltet Â»-msoft-stackÂ« und Â»-muniform-simtÂ« ein.Code fÃ¼r Serie SH4 340 erzeugen (ohne MMU/FPU).Code fÃ¼r Serie SH4 400 erzeugen (ohne MMU/FPU).Code fÃ¼r Serie SH4 500 erzeugen (ohne FPU)Code fÃ¼r Smart Mode erzeugen.Code fÃ¼r Thumb-Zustand erzeugen.Code fÃ¼r UNIX-Assembler erzeugen.Code fÃ¼r 32-Bit-ABI erzeugen.Code fÃ¼r einen 5206e erzeugen.Code fÃ¼r einen 520X erzeugen.Code fÃ¼r einen 528x erzeugen.Code fÃ¼r einen 5307 erzeugen.Code fÃ¼r einen 5407 erzeugen.Code fÃ¼r 64-Bit-ABI erzeugen.Code fÃ¼r 68000 erzeugen.Code fÃ¼r 68010 erzeugen.Code fÃ¼r 68020 erzeugen.Code fÃ¼r einen 68030 erzeugen.Code fÃ¼r einen 68040 ohne neue Befehle erzeugen.Code fÃ¼r einen 68040 erzeugen.Code fÃ¼r einen 68060 ohne neue Befehle erzeugen.Code fÃ¼r einen 68060 erzeugen.Code fÃ¼r einen 68302 erzeugen.Code fÃ¼r einen 68332 erzeugen.Code fÃ¼r einen 68851 erzeugen.Code fÃ¼r ColdFire v4e erzeugen.Code fÃ¼r DLL erzeugen.Code fÃ¼r Fido A erzeugen.Code fÃ¼r eine cpu32 erzeugen.Code fÃ¼r alle Template-Instanziierungen einschalten.Code fÃ¼r eine 11/10 erzeugen.Code fÃ¼r eine 11/40 erzeugen.Code fÃ¼r eine 11/45 erzeugen.Code fÃ¼r Assert-VertrÃ¤ge generieren.Code fÃ¼r Klassen-Invarianz-VertrÃ¤ge generieren.Code fÃ¼r ladbare Darwin-Kernelerweiterungen erzeugen.Code fÃ¼r Funktionen erzeugen, auch wenn sie vollstÃ¤ndig Â»inlineÂ« sind.Code fÃ¼r die angegebene CPU erzeugen.Code fÃ¼r altes ausfÃ¼hrbares BSS PLT erzeugen.Code fÃ¼r NachbedingungsvertrÃ¤ge erzeugen.Code fÃ¼r VorbedingungsvertrÃ¤ge generieren.Code fÃ¼r static-Funktionen erzeugen, auch wenn sie nie aufgerufen werden.Code fÃ¼r Switches ohne Default-Fall generieren.Code fÃ¼r die Android-Plattform erzeugen.Code fÃ¼r den M*Core M210 erzeugen.Code fÃ¼r den M*Core M340 erzeugen.Code fÃ¼r ladbare Darwin-Kernelerweiterungen oder Kernel erzeugen.Code fÃ¼r Supervisor-Modus generieren (Standard).Code fÃ¼r User-Modus generieren.Code im 32-Bit-ARM-Zustand erzeugen.Code im Â»Big EndianÂ«-Modus erzeugen.Code im Â»Big EndianÂ«-Modus erzeugen.Code im Â»Little EndianÂ«-Modus erzeugen.Code im Â»Little EndianÂ«-Modus erzeugen.Code fÃ¼r ausfÃ¼hrbare Dateien (NICHT Shared Libraries) erzeugen.FÃ¼r schnelles Debugging geeigneten Code erzeugen.Code erzeugen, der in dynamischen Objekten im SVR4-Stil verwendet werden kann.Code erzeugen, der lokalen Zustand in allen Bahnen einheitlich halten kann.Code erzeugen, der zum Intel-MCU-psABI passt.Code erzeugen, der zum angegebenen ABI passt.Code erzeugen, der zum angegebenen ABI passt.Code erzeugen, der sicher mit MIPS16- und microMIPS-Code gebunden werden kann.Code erzeugen, der 68881-Gleitkommabefehle verwendet.Code erzeugen, der im privilegierten Zustand lÃ¤uft.Code erzeugen, der nicht mit anderen ID-shared Libraries gebunden werden wÃ¼rde, aber als Shared Library verwendet werden kann.Code zur ÃœberprÃ¼fung der Grenzen vor Arrayindizierung erzeugen.Code zur ÃœberprÃ¼fung von Exception-Spezifikationen erzeugen.Code generieren, der Gerade-Linie-Spekulationen abwehrt.Code generieren, um mitzuverfolgen, wann die CPU falsch spekulieren kÃ¶nnte.Code erzeugen, der nicht ausfÃ¼hrbares PLT und GOT enthÃ¤lt.Code mittels globaler Anker-Symboladressen generieren.Code erzeugen, der Hardware-Gleitkommabefehle verwendet.Code erzeugen, der nur die allgemeinen Register verwendet.Code erzeugen, der nur die Kernregister (r0â€“r14) verwendet.Code mit Bibliotheksaufrufen fÃ¼r Gleitkommaarithmetik erzeugen.Code mit unausgerichtetem load/store fÃ¼r R6 generieren (Alias von Â»-mno-strict-alignÂ«).Code ohne Register fÃ¼r globalen Zeiger erzeugen.CFString-Objekte zum Kompilierungszeitpunkt generieren.Komprimierte Fehlersuchinformationen erzeugen.Verwendung bedingter Kopierbefehle einschalten.Konstantenpools im Compiler statt im Assembler generieren.cpp-Defines fÃ¼r Server-IO erzeugen.cpp-Defines fÃ¼r Workstation-IO erzeugen.Fehlersuchinformationen im CodeView-Format erzeugen.Fehlersuchinformationen im DWARF-v2-Format (oder neuer) erzeugen.Fehlersuchinformationen im VMS-Format erzeugen.Fehlersuchinformationen im erweiterten Standardformat erzeugen.Fehlersuchinformationen im Standardformat erzeugen.Fehlersuchinformationen im Standardversion des DWARF-Formats erzeugen.Fehlersuchinformationen in separaten .dwo-Dateien erzeugen.Standard SH2a-FPU-Code mit doppelter Genauigkeit erzeugen.Standard SH2a-FPU-Code mit einfacher Genauigkeit erzeugen.Standard SH4-Code mit einfacher Genauigkeit erzeugen.Standard SH4-100-Code mit einfacher Genauigkeit erzeugen.Standard SH4-200-Code mit einfacher Genauigkeit erzeugen.Standard SH4-300-Code mit einfacher Genauigkeit erzeugen.Standard SH4a-Code mit einfacher Genauigkeit erzeugen.Nicht zusammenhÃ¤ngende Stapelrahmen erzeugen.Divisions-Befehle erzeugen.Divisionsergebnisse mit dem gleichen Vorzeichen im Ãœbertrag wie der Divisor (nicht der Dividend) erzeugen.Dokumentation erzeugen.Gleitkommabefehle doppelter Genauigkeit generieren.Erweiterte arithmetische Befehle erzeugen, nur fÃ¼r ARC700 gÃ¼ltig.Erweiterte Informationen fÃ¼r Einsprungpunkt fÃ¼r inline-Funktionen erzeugen.Schnelle indirekte Aufrufe erzeugen.Gleitkommaarithmetik mit gegebenem Befehlssatz erzeugen.Kombinierte Multiplizier-Addier-Befehle generieren.Die Befehle frecipd/fsqrtd/fdivd generieren (Vorgabe fÃ¼r Hardware-Gleitkomma).Hardware-abs-Befehle generieren.Eingebettete Gleitkommadivision erzeugen, auf Wartezeit optimieren.Eingebettete Gleitkommadivision erzeugen, auf Durchsatz optimieren.Eingebettete Ganzzahldivision erzeugen, auf Wartezeit optimieren.Eingebettete Ganzzahldivision erzeugen, auf Durchsatz optimieren.Quadratwurzel Â»inlineÂ« erzeugen, auf Wartezeit optimieren.Quadratwurzel Â»inlineÂ« erzeugen, auf Durchsatz optimieren.Befehle generieren, die vom Barrel-Shifter unterstÃ¼tzt werden.isel-Befehle erzeugen.Lockeres Nachschlagen von Klassen (mit objc_getClass()) fÃ¼r Verwendung im Null-VerknÃ¼pfungs-Modus erzeugen.Bibliotheksaufrufe fÃ¼r atomare Lade- und Speicherbefehle generieren, wenn synchronisierte Bibliotheksaufrufe ausgeschaltet sind.Little-Endian-Code erzeugen.Little-Endian-Code erzeugen.Little-Endian-eBPF erzeugen.Befehle zum gleichzeitigen Laden/Speichern mehrerer Daten erzeugen.Befehle fÃ¼r Laden/Speichern mit Aktualisierung erzeugen.Atomare Operationen durch Hilfsfunktionen implementieren.AbhÃ¤ngigkeiten fÃ¼r Â»makeÂ« erzeugen und Code Ã¼bersetzen.AbhÃ¤ngigkeiten fÃ¼r Â»makeÂ« erzeugen.Aufrufe von Â»mcountÂ«/Â»__fentry__Â« als NOPs erzeugen. Um sie einzuschalten, mÃ¼ssen sie hineingepatcht werden.Millicode-Schnipsel erzeugen.mul64- und mulu64-Befehle erzeugen.norm-Befehl erzeugen.Code im normalen Modus erzeugen.SH2a-FPU-Code nur mit einfacher Genauigkeit erzeugen.SH4-Code nur mit einfacher Genauigkeit erzeugen.SH4-100-Code nur mit einfacher Genauigkeit erzeugen.SH4-200-Code nur mit einfacher Genauigkeit erzeugen.SH4-300-Code nur mit einfacher Genauigkeit erzeugen.SH4a-Code nur mit einfacher Genauigkeit erzeugen.PC-relativen Code erzeugen.Erweiterungsbefehle fÃ¼r Performance einschalten.Erweiterungsbefehle fÃ¼r Performance Version 2 einschalten.Unechte Ziele fÃ¼r alle Header erzeugen.Wenn mÃ¶glich, lageunabhÃ¤ngigen Code fÃ¼r ausfÃ¼hrbare Dateien erzeugen (large mode).Wenn mÃ¶glich, positionsunabhÃ¤ngigen Code fÃ¼r ausfÃ¼hrbare Dateien erzeugen (small mode).Wenn mÃ¶glich, lageunabhÃ¤ngigen Code erzeugen (large mode).Wenn mÃ¶glich, positionsunabhÃ¤ngigen Code erzeugen (small mode).Wenn verfÃ¼gbar, Prefetch-Befehle fÃ¼r Arrays in Schleifen erzeugen.Bereinigtes BTF bei der Ausgabe von BTF-Informationen erzeugen.Befehle push/pop generieren (Standard).WiedereinsprungsfÃ¤higen PIC-Code erzeugen.Reziproke statt divss und sqrtss erzeugen.return-Befehl in nackter Funktion generieren.Informationen zur Typbeschreibung zur Laufzeit erzeugen.SData-Referenzen erzeugen. Dies ist die Voreinstellung, auÃŸer wenn PIC erzeugt wird.Abschnitte .s390_indirect_jump, .s390_indirect_call, .s390_return_reg, und .s390_return_mem erzeugen, in denen die Adressen fÃ¼r indirekte Sprungziele gespeichert werden, die aufgrund der Optionen Â»-mindirect-branch*Â« oder Â»-mfunction-return*Â« gepatcht wurden. Die Abschnitte bestehen aus einem Array von 32-Bit-Elementen. Jedes Element enthÃ¤lt den Offset vom Eintrag zu der gepatchten Adresse.Selbstverschiebbaren Code erzeugen.sin, cos und sqrt fÃ¼r FPU erzeugen.Gleitkommabefehle einfacher Genauigkeit generieren.Reziproke Division und Quadratwurzel in Software fÃ¼r besseren Durchsatz erzeugen.Wenn nÃ¶tig, spezielle Objective-C-Methoden zur Initialisierung/ZerstÃ¶rung von nicht-POD C++ ivars, erzeugen.stm/ldm-Befehle erzeugen (Vorgabe).Erweiterungsbefehle fÃ¼r Zeichenketten einschalten.swap-Befehl erzeugen.Ganzzahl-Modulo-Befehle erzeugen.Atomare Quadword-Befehle zum Speicherzugriff verwenden (lqarx/stqcx).Befehle zum Laden/Speichern von Quadwords (lq/stq) erzeugen.Unausgerichtete VSX-Lade/Speicher-Befehle fÃ¼r Inline-Expansion von memcpy/memmove generieren.Unausgerichtete VSX-Lade/Speicher-Befehle fÃ¼r Vektorpaare fÃ¼r Inline-Expansion von memcpy/memmove generieren.Abwicklungstabellen erzeugen, die genau an jeder Befehlsgrenze liegen.Befehle push25/pop25 fÃ¼r v3 erzeugen.Â»vzeroupperÂ«-Befehl erzeugen, bevor der Ablauf die Funktion verlÃ¤sst.xBPF erzeugen.Die erzeugte Schleife des UNROLL-Konstrukts bei %L ohne PARTIAL-Klausel hat keine kanonische FormGenerische Funktion %qs bei %L ist nicht mit spezifischer intrinsischer Schnittstelle vereinbarAllgemeiner Name %qs der Funktion %qs bei %L ist der gleiche wie der des abgeleiteten Typs bei %LGenerisches Unterprogramm %qs bei %L ist nicht mit intrinsischer Unterprogrammschnittstelle vereinbarSprÃ¼ngen ihre Standardkosten zuweisen.Externen Symbolen einen fÃ¼hrenden Unterstrich geben.Globaler Bindungs-Name %qs bei %L wird bereits als ein %s bei %L verwendetGlobaler Bindungs-Name %qs bei %L wird bereits bei %L verwendetGlobal deklarative %s fÃ¼r %sGlobale EntitÃ¤t %qs bei %L darf nicht in einem COMMON-Block vorkommenGlobale EntitÃ¤t %qs bei %L kann nicht in einem COMMON-Block bei %L vorkommenGlobaler Name %qs bei %L wird bereits als ein %s bei %L verwendetGlobaler Name %qs bei %L wird bereits bei %L verwendetunbekanntes Attribut %<target("%s")%>Graphite-Schleifenoptimierungen kÃ¶nnen nicht verwendet werden (ISL ist nicht verfÃ¼gbar) (%<-fgraphite%>, %<-fgraphite-identity%>, %<-floop-nest-optimize%>, %<-floop-parallelize-all%>)Graphite-Schleifenoptimierungen kÃ¶nnen nicht verwendet werden (ISL ist nicht verfÃ¼gbar).Binder anweisen, Befehle zu lockern.HOLDS-Ausdruck bei %L muss ein skalarer logischer Ausdruck seinOpenMP-Allokatoren fÃ¼r Allozierbare und Zeiger handhaben.Bibliotheksfunktionen aufrufen, wenn atomare eingebaute Operationen auf unausgerichteten Speicher angewendet werden kÃ¶nnen. Hebt Â»-mtrap-unaligned-atomicÂ« auf.Bedingte Zweigen hÃ¤rten, indem die entgegengesetzten Bedingungen geprÃ¼ft werden.Bedingungen, die nicht in den Zweigen verwendet werden, hÃ¤rten, indem die entgegengesetzten Bedingungen geprÃ¼ft werden.Kontrollfluss hÃ¤rten, indem AusfÃ¼hrungspfade aufgezeichnet und geprÃ¼ft werden.Hardware-Autoprefetcher-Scheduler-Modellsteuerung: Anzahl der Vorausschauzyklen, die das Modell untersucht, bei '0' ist nur die heuristische Sortierung von Befehlen aktiviert. StandardmÃ¤ÃŸig deaktiviert.Hexadezimalkonstante bei %L verwendet Nicht-Standard X statt ZHollerithkonstante bei %CMit Host verbundene Variable %qs darf nicht in DATA-Anweisung bei %C stehenWie viel die gegebene Ãœbersetzungseinheit durch das Â»inlineÂ« wachsen kann (in Prozent).Wie viel die gegebene Ãœbersetzungseinheit durch die interprozedurale Konstantenweitergabe wachsen kann (in Prozent).Interner Fehler: I don%'t know how to MOVE an alphabetical string to %s(%s)E/A-Registeroperand fÃ¼r Â»%%%cÂ«IBITS: Bad bitICE: %<emit_insn%> verwendet, wo %<emit_jump_insn%> erforderlich:ID der zu bauenden Shared Library.gemeinsam genutzte ID-Bibliotheken und FD-PIC-Modus kÃ¶nnen nicht zusammen verwendet werdenIEEE_ARITHMETIC-Modul bei %CIEEE_EXCEPTIONS-Modul bei %CIEEE_FEATURES-Modul bei %CIF-Klausel bei %L erfordert einen skalaren LOGICAL-AusdruckIF-Klausel-Modifizierer Â»%sÂ« bei %L ist dem aktuellen OpenMP-Konstrukt nicht angemessenIF-Klausel ohne Modifizierer bei %L wird zusammen mit IF-Klauseln mit Modifizierert verwendetILP32E ABI unterstÃ¼tzt die %qc-Erweiterung nichtIM-part_ref bei %CÂ»IMPLICIT NONE (type)Â«-Anweisung bei %L folgt einer IMPLICIT-AnweisungIMPLICIT NONE mit Angabenliste bei %CIMPLICIT-Anweisung bei %C folgt auf IMPLICIT NONE (Typ-)AnweisungIMPORT-Anweisung bei %CIMPORT-Anweisung bei %C ist nur in einem INTERFACE-KÃ¶rper erlaubtIMPURE-Prozedur bei %CINDIRECT-Klausel bei %C erfordert einen konstanten logischen AusdruckINQUIRE-Anweisung bei %L kann nicht sowohl FILE- als auch UNIT-Spezifikationssymbole enthaltenINQUIRE-Anweisung bei %L erfordert PENDING= mit Spezifizierung ID=INQUIRE-Anweisung bei %L erfordert entweder FILE- oder UNIT-SpezifikationssymbolINQUIRE-Anweisung in PURE-Prozedur bei %C nicht erlaubtINTEGER-Ausdruck von %s-Klausel bei %L darf nicht negativ seinINTEGER-Ausdruck von %s-Klausel bei %L muss positiv seinINTEGER-Ausdruck der Â»chunk_sizeÂ« der SCHEDULE-Klausel bei %L muss positiv seinINTEGER(KIND=8) ist nicht verfÃ¼gbar fÃ¼r Option %<-fdefault-integer-8%>INTEGER(KIND=8) ist nicht verfÃ¼gbar fÃ¼r Option %<-finteger-4-integer-8%>INTENT(%s) steht mit INTENT(%s) bei %L in KonfliktINTENT ist in BLOCK bei %C nicht erlaubtEffektives Argument von INTENT(%s) bei %L kÃ¶nnte effektives Argument bei %L stÃ¶ren.INTENT(IN) POINTER %qs in Klausel %s bei %LINTENT(IN)-Zeiger %qs in COPYPRIVATE-Klausel bei %LArgument %1$qs bei %3$L fÃ¼r die reine Prozedur %2$qs ist INTENT(OUT) und darf daher nicht polymorph seinINTERFACE-Prozedur %qs bei %L hat denselben Namen wie die umgebende ProzedurIO UNIT in %s-Anweisung bei %L muss eine interne Datei in einer PURE-Prozedur seinIOLENGTH-Markierung in INQUIRE-Anweisung bei %C ungÃ¼ltigIOMSG-Markierung bei %LIPA-modref-Zusammenfassung fehlt in EingabedateiIPA-SRA-Zugriffs-Verifikation fehlgeschlagenISA %qs wird von Attribut %<target%> nicht unterstÃ¼tzt, verwenden Sie den Aufruf %<arch=%>ISO-C erlaubt kein %<%E (Ausdruck)%>ISO-C erlaubt kein zusÃ¤tzliches %<;%> auÃŸerhalb einer FunktionISO-C erlaubt kein auf Funktionstypen angewendetes %<_Alignof%>ISO C unterstÃ¼tzt nicht %<#pragma STDC FLOAT_CONST_DECIMAL64%>ISO-C unterstÃ¼tzt %<%s_BitInt(%d)%> erst ab C23ISO-C unterstÃ¼tzt %<++%> und %<--%> fÃ¼r komplexe Typen erst ab C2YISO-C unterstÃ¼tzt %<[[]]%>-Attribute erst ab C23ISO-C unterstÃ¼tzt %<_Generic%>-Zuordnung mit Funktionstyp erst ab C2YISO-C unterstÃ¼tzt %<_Generic%>-Zuordnung mit unvollstÃ¤ndigem Typ erst ab C2YISO-C unterstÃ¼tzt die Typen %<__int%d%> nichtISO C unterstÃ¼tzt %<auto%>-Typinferenz erst ab C23ISO-C unterstÃ¼tzt nicht %<~%> fÃ¼r komplexe KonjugationISO-C unterstÃ¼tzt %qs erst ab C23ISO-C unterstÃ¼tzt den vordefinierten Bezeichner %qs nichtISO C unterstÃ¼tzt eine %qs-Anweisung mit einem Bezeichner als Operanden erst ab C2YISO-C unterstÃ¼tzt keine komplexen GanzzahltypenISO-C unterstÃ¼tzt dezimale Gleitkommazahlen erst ab C23ISO-C unterstÃ¼tzt keine GanzzahltypenISO-C unterstÃ¼tzt if-Deklarationen erst ab C2YISO-C unterstÃ¼tzt das Weglassen von Parameternamen in Funktionsdefinitionen erst ab C23ISO-C unterstÃ¼tzt nicht %<double complex%> bedeutendes einfaches %<complex%>ISO-C unterstÃ¼tzt BereichsausdrÃ¼cke in Â»switchÂ«-Anweisungen erst ab C2YISO-C unterstÃ¼tzt keine sÃ¤ttigenden TypenISO C unterstÃ¼tzt die Angabe eines Basistyps fÃ¼r %<enum%> erst ab C23ISO-C unterstÃ¼tzt den Typen %<_Float%d%s%> erst ab C23ISO-C unterstÃ¼tzt einen Typnamen als steuernden Operanden von %<_Generic%> erst ab C2YISO-C verbietet %<goto *expr;%>ISO-C verbietet %<return%> mit Ausdruck, in void zurÃ¼ckgebender FunktionISO-C verbietet eine leere QuelldateiISO-C verbietet Zuweisung zwischen Funktionszeiger und %<void *%>ISO-C verbietet geklammerte Gruppen innerhalb von AusdrÃ¼ckenISO-C verbietet Typkonvertierung von Nicht-Skalar auf selben TypenISO-C verbietet Typkonvertierung auf union-TypISO-C verbietet Vergleich von %<void *%> mit FunktionszeigerISO-C verbietet bedingten Ausdruck zwischen %<void *%> und FunktionszeigerISO-C verbietet bedingten Ausdruck mit nur einer void-SeiteISO-C verbietet const- oder volatile-FunktionstypenISO-C verbietet Konvertierung von Funktionszeigern in ObjektzeigertypISO-C verbietet Konvertierung von Objektzeigertypen in FunktionszeigertypISO-C unterstÃ¼tzt leere Initialisierungsklammern erst ab C23ISO-C verbietet VorwÃ¤rtsdeklaration fÃ¼r ParameterISO-C verbietet VorwÃ¤rts-Referenzen auf %<enum%>-TypenISO-C verbietet Initialisierung zwischen Funktionszeiger und %<void *%>ISO-C verbietet MarkendeklarationenISO-C verbietet Elementdeklarationen ohne ElementeISO-C verbietet verschachtelte FunktionenISO-C verbietet das Weglassen des mittleren Terms eines %<?:%>-AusdruckesISO-C verbietet geordnete Vergleiche zwischen Zeigern auf FunktionenISO-C verbietet Ãœbergabe des Arguments %d von %qE zwischen Funktionszeiger und %<void *%>ISO-C verbietet qualifizierte FunktionstypenISO-C verbietet return zwischen Funktionszeiger und %<void *%>ISO-C verbietet die Angabe eines zu initialisierenden ElementebereichesISO-C erlaubt Speicherklassenangaben in zusammengesetzten Literalen erst ab C23ISO-C verbietet, ein %<register%>-Array zu indizierenISO-C verbietet Array der GrÃ¶ÃŸe nullISO-C verbietet Array %qE der GrÃ¶ÃŸe nullISO-C verbietet Argumentkonvertierung in union-TypISO-C erfordert ein benanntes Argument vor %<...%>, vor C23ISO C vor C23 beschrÃ¤nkt AufzÃ¤hlungswerte auf den Bereich von %<int%>Attribut %qE aus ISO C++ ist nicht auf Funktionen anwendbar; wird als %<[[gnu::%E]]%> behandeltISO-C++ 1998 unterstÃ¼tzt nicht %<long long%>ISO-C++ 1998 verbietet die Verwendung von %<extern%> bei expliziten InstanziierungenISO C++ erlaubt Bitfeld-Attribute nur vor dem %<:%>-TokenISO C++ unterstÃ¼tzt keine Operatortemplates in Zeichenkettenliteralen, die eine Argumentpackung von Zeichen bekommenin ISO-C++ darf der mittlere Operand von %<?:%> nicht weggelassen werdenISO-C++ erlaubt kein %<alignof%> mit einem Nicht-TypISO-C++ erlaubt keine benannten Initialisierungen von C99ISO-C++ erlaubt keine benannten Initialisierungen (GNU)ISO C++ erlaubt keine Konvertierung in %qH von %qI mit grÃ¶ÃŸerem KonvertierungsrangISO C++ erlaubt keine Konvertierung in %qH aus %qI mit ungeordnetem KonvertierungsrangISO-C++ erlaubt nicht, %<%T::%D%> als %<%T::%D%> zu definierenISO-C++ erlaubt kein auf Funktionstypen angewendetes %<alignof%>ISO-C++ unterstÃ¼tzt %<__int%d%> fÃ¼r %qs nichtISO-C++ unterstÃ¼tzt nicht, dass einfaches %<complex%> %<double complex%> bedeutetISO-C++ verbietet Anwendung von %<__alignof%> auf einen Ausdruck mit FunktionstypISO-C++ verbietet Anwendung von %<sizeof%> auf einen Ausdruck mit FunktionstypISO-C++ verbietet Gruppen in geschweiften Klammern innerhalb von AusdrÃ¼ckenISO-C++ verbietet den Aufruf von %<::main%> vom Programm ausISO-C++ verbietet Umwandlung in Arraytyp %qTISO-C++ verbietet Vergleich zwischen Zeiger und GanzzahlISO-C++ verbietet Vergleich zwischen Zeiger des Typs %<void *%> und Zeiger auf FunktionISO-C++ verbietet zusammengesetzte LiteraleISO-C++ verbietet berechnete GotosISO-C++ verbietet Bedingungsausdruck mit Zeiger des Typs %<void *%> und Zeiger auf FunktionISO-C++ verbietet Umwandlung zwischen Zeiger des Typs %<void *%> und Zeiger auf FunktionISO C++ verbietet, eine Zeichenkettenkonstante in %qT zu konvertierenISO-C++ verbietet Deklaration von %qs ohne TypISO-C++ verbietet Verringern eines Zeigers vom Typ %qTISO-C++ verbietet verringern einer AufzÃ¤hlungISO-C++ verbietet leere unbenannte AufzÃ¤hlungISO-C++ verbietet flexibles Arrayelement %qsISO-C++ verbietet flexible ArrayelementeISO-C++ verbietet Initialisierung des nicht konstanten statischen Elements %qD in der KlasseISO-C++ verbietet ErhÃ¶hen eines Zeigers vom Typ %qTISO-C++ verbietet erhÃ¶hen einer AufzÃ¤hlungISO-C++ verbietet Initialisierung der Elementkonstante %qD vom nicht eingebauten Typen %qTISO-C++ verbietet geschachtelten Typen %qD mit gleichem Namen wie umschlieÃŸende KlasseISO-C++ verbietet das Auslassen des mittleren Terms eines %<?:%>-AusdrucksISO-C++ verbietet das Ermitteln der Adresse der Funktion %<::main%>ISO-C++ verbietet es, die Adresse einer gebundenen Memberfunktion zu nehmen, um einen Zeiger auf eine explizite Objekt-Memberfunktion zu bildenISO-C++ verbietet das Ermitteln der Adresse einer gebundenen Elementfunktion, um einen Zeiger auf Elementfunktion zu erzeugen. Stattdessen %<&%T::%D%> verwendenISO-C++ verbietet das Ermitteln der Adresse einer nicht qualifizierten oder geklammerten nicht-statischen Memberfunktion, um einen Zeiger auf eine explizite Memberfunktion zu erzeugenISO-C++ verbietet das Ermitteln der Adresse einer nicht qualifizierten oder geklammerten nicht-statischen Elementfunktion, um einen Zeiger auf Elementfunktion zu erzeugen.ISO-C++ verbietet das Ermitteln der Adresse einer nicht qualifizierten oder geklammerten nicht-statischen Elementfunktion, um einen Zeiger auf Elementfunktion zu erzeugen. Stattdessen %<&%T::%D%> verwendenISO-C++ verbietet die Verwendung von %qE bei expliziten InstanziierungenISO-C++ verbietet typename-SchlÃ¼ssel in Template-Template-Parameter; verwenden Sie %<-std=c++17%> oder %<-std=gnu++17%>ISO-C++ verbietet Gleitkommaliterale in Konstanten-AusdrÃ¼ckenISO-C++ verbietet die Verwendung eines Zeigers des Typs %<void *%> in SubtraktionISO-C++ verbietet die Verwendung eines Zeigers auf eine Funktion in SubtraktionISO-C++ verbietet die Verwendung eines Zeigers auf Methode in SubtraktionISO-C++ verbietet Array variabler LÃ¤ngeISO-C++ verbietet Array %qD variabler LÃ¤ngeISO-C++ verbietet Array der GrÃ¶ÃŸe nullISO-C++ verbietet Array %qD der GrÃ¶ÃŸe nullISO-C++ verbietet anonyme structsISO-C++ verbietet Ãœberladen von %<operator ?:%>ISO C++ besagt, dass diese mehrdeutig sind, auch wenn die schlechteste Umwandlung fÃ¼r das erste besser ist als die schlechteste Umwandlung fÃ¼r das zweite:ISO-C++17 erlaubt Speicherklassenangabe %<register%> nichtISO C++17 erlaubt keine dynamischen Ausnahmespezifikationendas Weglassen der Zeichenkette in %qE wird von ISO C11 nicht unterstÃ¼tztISO-C23 erlaubt keine Argumente fÃ¼r die Funktion %qE, die ohne Parameter deklariert istISO-C23 erlaubt keine Argumente fÃ¼r die Methode %qE, die ohne Parameter deklariert istISO C23 erlaubt es nicht, Parameter fÃ¼r die Funktion %qE zu definieren, die ohne Parameter deklariert istISO-C90 unterstÃ¼tzt %<[*]%>-Arraydeklaratoren nichtISO-C90 unterstÃ¼tzt nicht %<_Generic%>ISO-C90 unterstÃ¼tzt nicht %<_Noreturn%>ISO-C90 unterstÃ¼tzt den vordefinierten Bezeichner %<__func__%> nichtDeklarationen im Initialisierungsteil einer %<for%>-Schleife werden von ISO C90 nicht unterstÃ¼tzt; ab ISO C99 geht esISO-C90 unterstÃ¼tzt nicht %<long long%>ISO-C90 unterstÃ¼tzt kein %<static%> oder Typkennzeichner in ParameterarraydeklaratorenISO-C90 unterstÃ¼tzt nicht %qEISO-C90 unterstÃ¼tzt keine booleschen TypenISO-C90 unterstÃ¼tzt keine komplexen TypenISO-C90 unterstÃ¼tzt keine flexiblen Arrays als ElementeISO-C90 unterstÃ¼tzt den %<_Atomic%>-Qualifizierer nichtISO-C90 unterstÃ¼tzt keine namenlosen structs/unionsISO-C90 verbietet Array %qE, dessen GrÃ¶ÃŸe nicht ausgewertet werden kannISO-C90 verbietet Array, dessen GrÃ¶ÃŸe nicht ausgewertet werden kannISO-C90 verbietet zusammengesetzte LiteraleISO-C90 verbietet gemischte Deklarationen und CodeISO-C90 verbietet die Angabe von zu initialisierenden UnterobjektenISO-C90 verbietet, ein Nicht-L-Wert-Array zu indizierenISO-C90 verbietet Array variabler GrÃ¶ÃŸeISO-C90 verbietet Array %qE variabler GrÃ¶ÃŸeISO-C99 unterstÃ¼tzt nicht %<_Generic%>ISO-C99 unterstÃ¼tzt nicht %<_Noreturn%>ISO-C99 unterstÃ¼tzt nicht %qEISO-C99 unterstÃ¼tzt den %<_Atomic%>-Qualifizierer nichtISO-C99 unterstÃ¼tzt keine namenlosen structs/unionsModul ISO_C_BINDING bei %CIntrinsisches Modul ISO_FORTRAN_ENV bei %CITERATOR bei %C kann nicht mit SINK kombiniert werdenITERATOR bei %C kann nicht mit SOURCE kombiniert werdenWenn Â»-ftree-vectorizeÂ« verwendet wird, die minimale Schleifengrenze einer fÃ¼r Vektorisierung zu betrachtenden Schleife.Wenn Â»-fvariable-expansion-in-unrollerÂ« verwendet wird, die HÃ¶chstzahl der FÃ¤lle, dass eine einzelne Variable wÃ¤hrend Loop-Unrolling expandiert wird.Wenn die Neuzuordnung von Grenzen bei %L angegeben wird, darf das Zeigerziel nicht NULL seinWenn das erste Argument von ATAN2 bei %L 0 ist, dann darf das zweite Argument nicht 0 seinWenn das erste Argument von ATAN2 bei %L 0 ist, dann darf das zweite Argument nicht 0 seinWenn die Anzahl der Kandidaten in der Menge kleiner ist, wird immer versucht, ungenutzte IVs wÃ¤hrend ihrer Optimierung zu entfernen.Wenn Planung nach dem Neuladen, dann Superblock-Planung.Â»DÂ« in Spalte eins in fester Form ignorieren.Attribut dllimport fÃ¼r Funktionen ignorieren.Den normalen zweistufigen Namensraum ignorieren; Symbole in der Reihenfolge der Befehlszeile auflÃ¶sen und nicht aufzeichnen, welche Bibliothek das aufgelÃ¶ste Symbol bereitgestellt hat.Nicht unterstÃ¼tzte Pragmas ignorieren.Tut nichts, ist aber fÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤t beibehalten.Tut nichts. FÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤t erhalten.  Nur die 64-Bit-ABI wird unterstÃ¼tzt.Ignoriert.Herstellererweiterungsmarkierung Â»!$omxÂ« bei %C wird ignoriertUnzulÃ¤ssiges ALLOCATE-Objekt bei %C fÃ¼r eine PURE-ProzedurUnzulÃ¤ssige Zuweisung an externe Prozedur bei %LUnzulÃ¤ssiges Zeichen in BOZ-Konstante bei %CUngÃ¼ltiger Index fÃ¼r KofeldIllegal id in copy_walk_reduction_argUngÃ¼ltige PrÃ¤prozessordirektiveUngÃ¼ltiger Referenztyp bei %L als EQUIVALENCE-ObjektUnzulÃ¤ssiger Schritt von Null bei %LUnzulÃ¤ssiger Typ in Zeichenverkettung bei %LAnweisung %s zur Image-Steuerung bei %C in CRITICAL-BlockAnweisung %s zur Image-Steuerung bei %C in DO CONCURRENT-BlockAnweisung %s zur Image-Steuerung bei %C in PURE-ProzedurCRITICAL-Anweisung zur Image-Steuerung bei %C in DO CONCURRENT-BlockCRITICAL-Anweisung zur Image-Steuerung bei %C in PURE-ProzedurAnweisung Â»EVENT %sÂ« zur Image-Steuerung bei %C in CRITICAL-BlockAnweisung Â»EVENT %sÂ« zur Image-Steuerung bei %C in DO CONCURRENT-BlockAnweisung Â»EVENT %sÂ« zur Image-Steuerung bei %C in PURE-ProzedurRETURN-Anweisung zur Image-Steuerung bei %C in CRITICAL-BlockPRINT-Anweisung zur Image-Steuerung bei %C in DO CONCURRENT-BlockSTOP-Anweisung zur Image-Steuerung bei %C in CRITICAL-BlockSTOP-Anweisung zur Image-Steuerung bei %C in DO CONCURRENT-BlockSYNC-Anweisung zur Image-Steuerung bei %C in CRITICAL-BlockSYNC-Anweisung zur Image-Steuerung bei %C in DO CONCURRENT-BlockSYNC-Anweisung zur Image-Steuerung bei %C in PURE-ProzedurArgument fÃ¼r Imageset bei %L muss Skalar oder Rang-1-INTEGER-Ausdruck seinArgument fÃ¼r Imageset bei %L muss zwischen 1 und num_images() liegenUnvollkommen geschachtelte Schleife bei Verwendung von generierten SchleifenÂ»inÂ«-VertrÃ¤ge von Ã¼berschriebenen Methoden als Obermenge des Ã¼bergeordneten Vertrags umsetzen.Â»inÂ«-Parameter als Â»scope constÂ« umsetzen.C++17-Semantik fÃ¼r erbende Konstruktoren umsetzen.D-Bitfelder implementieren.DIP1000 "Zeiger in GÃ¼ltigkeitsbereichen" umsetzen.DIP1008 "Ausnahmen im @nogc-Code zulassen" umsetzen.DIP1021 "VerÃ¤nderbare Funktionsargumente" umsetzen.P2564 fÃ¼r consteval-Propagierung implementieren.__atomic-Operationen Ã¼ber Bibliotheksaufrufe alter __sync-Funktionen durchfÃ¼hren.AuflÃ¶sung von DR 150 fÃ¼r Mustervergleich von Template-Template-Argumenten umsetzen.Implizit deklarierte BIND(C)-Funktion %qs bei %L ist mÃ¶glicherweise nicht interoperabel mit CImplizit deklarierte BIND(C)-Variable %qs bei %L kÃ¶nnte nicht C-kompatibel seinImplizit deklarierte Funktion %s wird in !$OMP DECLARE REDUCTION bei %L verwendetImplizit deklariertes Unterprogramm %s wird in !$OMP DECLARE REDUCTION bei %L verwendetImplizit deklarierte Variable %qs bei %L kÃ¶nnte nicht C-kompatibel sein, ist aber ein Scheinargument fÃ¼r BIND(C)-Prozedur %qs bei %LImplizit angegebener PARAMETER %qs bei %L passt nicht zu frÃ¼herem IMPLICIT-TypEinbezogenes SAVE fÃ¼r Modulvariable %qs bei %L, benÃ¶tigt wegen StandardinitialisierungFeld mit impliziter Form bei %LUnreine Funktion %qs bei %L wird mÃ¶glicherweise nicht ausgewertetUnreine Funktion bei %L wird mÃ¶glicherweise nicht ausgewertetInterner Fehler: In %<mh_dest_is_float%>(%s to %s), the move of %s to %s is unimplementedInterner Fehler: In %<parser_move(%s to %s)%>, the move of FldLiteralN to %s is unimplementedIn %s bei %L mÃ¼ssen alle Prozeduren auch FUNCTIONs sein, da der allgemeine Name auch der Name des abgeleiteten Typs istIn %s bei %L mÃ¼ssen alle Prozeduren entweder SUBROUTINE oder FUNCTION seinIn C++ bedeutet ungleich Null die Warnung vor veralteter Umwandlung von Zeichenkettenliteralen in Â»char *Â«. In C erfolgt eine Ã¤hnliche Warnung, nur ist die Umwandlung nat. laut ISO-C-Standard nicht veraltet.In Fortran 2003 ist der COMMON-Block %qs bei %L ein globaler Bezeichner und muss daher den selben Bindungsnamen haben wie der gleichbenannte COMMON-Block bei %L: %s vs. %sIn SSA-PRE-Optimierungen auf BÃ¤umen Teils-Teils-Redundanz eliminieren.In einem reinen Unterprogramm darf ein INTENT(IN)-Dummy-Argument nicht als Â»exprÂ« bei %L einer intrinsischen Zuweisungsanweisung verwendet werden, in der die Variable von einem abgeleiteten Typ ist, wenn der abgeleitete Typ eine Zeigerkomponente auf irgendeiner Ebene der Komponentenauswahl hat.Im Aufruf von %qs bei %L ist eine TypunvertrÃ¤glichkeit bei Argument %qs; %s wurde an %s Ã¼bergebenIn Konstruktor %qDIn Kopierkonstruktor %qDIn Destruktor %qDIn expliziter Objektelementfunktion %qDIn Datei, eingebunden vonIn Funktion %qDIn Funktion %qsIn Lambda-FunktionIn Elementfunktion %qDIn Elementfunktion %qsIn ModulIn Modul, importiert beiIn statischer Elementfunktion %qDInclude-Verzeichnis %qs: %sImportierte Module in die Kompilierung einbeziehen.Die eingebundene Datei %qs ist keine regulÃ¤re DateiInkompatibles ALLOCATE-Objekt bei %C fÃ¼r CHARACTER-Typspezifikation bei %LUnvertrÃ¤glicher abgeleiteter Typ in PARAMETER bei %LInkompatible Initialisierung zwischen einer abgeleiteten TypentitÃ¤t und einer EntitÃ¤t mit Typ %qs bei %CUnvertrÃ¤gliche RÃ¤nge %d und %d in Zuweisung bei %LUnvertrÃ¤gliche RÃ¤nge in %s (%d und %d) bei %LUnvertrÃ¤gliche Typen in DATA-Anweisung bei %L; versuchte Umwandlung von %s an %sUnvertrÃ¤gliche Typangabe fÃ¼r Feldelement bei %LUnvertrÃ¤gliche Verwendung von TILE und COLLAPSE bei %LInkonsistente Ã„quivalenzregeln mit %qs bei %L und %qs bei %LInterne Compilerwarnung: No location in expression near %LInterne Compilerwarnung: Inconsistent internal state: No location in statementRÃ¤nge fÃ¼r Operator bei %L und %L stimmen nicht Ã¼bereinInkonsistente Typen fÃ¼r Operator bei %L und %L: %s und %sInterner Compilerfehler: Incorrect EH edge %i->%iFalsche Ausdehnung in Argument B in MATMUL-Intrinsic in Dimension 1: ist %ld, sollte %ld seinIEEE-Befolgung fÃ¼r Gleitkommavergleiche erhÃ¶hen.Index in Dimension %d ist auÃŸerhalb der Grenzen bei %LIndexvariable %qs bei %L kann nicht in einer Ortsangabe angegeben werdenIndexvariable %qs ist nicht als INTENT(INOUT)-Argument definierbar bei %L in Prozedur %qs, die aus der DO-Schleife bei %L heraus aufgerufen wirdIndexvariable %qs ist nicht als INTENT(INOUT)-Argument definierbar bei %L in Unterroutine %qs, die aus der DO-Schleife bei %L heraus aufgerufen wirdIndexvariable %qs neudefiniert bei %L in Prozedur %qs, aufgerufen aus der DO-Schleife bei %LIndexvariable %qs wird auf undefiniert als INTENT(OUT)-Argument bei %L in Prozedur %qs gesetzt, wird aus der DO-Schleife bei %L aufgerufenIndexvariable %qs wird auf undefiniert gesetzt als INTENT(OUT)-Argument bei %L in Unterroutine %qs, die aus der DO-Schleife bei %L heraus aufgerufen wirdAngeben, wie viele Vektorbefehle ohne Speicherzugriff pro Taktzyklus ausgefÃ¼hrt werden kÃ¶nnen; wird im Faktor fÃ¼r Schleifenabwicklungen des Autovektorisierers verwendet. Vorgabe ist 4.PrioritÃ¤t fÃ¼r r0..r3 / r12..r15 mit TARGET_REGISTER_PRIORITY ausdrÃ¼cken.Vergleich auf Ungleichheit fÃ¼r %s bei %LVerwendung von Hardware-Gleitkommabefehlen unterdrÃ¼cken.Initialisierung bei %C ist in PURE-Prozedur nicht erlaubtInitialisierung bei %C ist nicht fÃ¼r eine ZeigervariableInitialisierung einer allozierbaren Komponente bei %C ist nicht erlaubtInitialisierung des Zeigers bei %C ist nicht in einer PURE-Prozedur erlaubtInitialisierung einer Strukturkomponente mit einer HOLLERITH-Konstante bei %L ist nicht erlaubtInitialisierung einer Variablen bei %C ist in einer PURE-Prozedur nicht erlaubtInitialisierungszeichenkette bei %L wurde abgeschnitten, um zur Variable zu passen (%wd/%wd)Komponenten von abgeleiteten Typvariablen gemÃ¤ÃŸ anderer init-Schalter initialisieren.Lokale Variablen auf Null initialisieren (von g77).PTX-Register initialisieren.Initialisiertes Symbol %qs bei %C kann nur COMMON in BLOCK DATA seinInitialisierte Variable %qs bei %L ist in leerem COMMON, aber Initialisierung ist nur in benannten COMMON-BlÃ¶cken erlaubtInitialisierer nicht erlaubt fÃ¼r PARAMETER %qs bei %CInitialisierung einer bereits initialisierten Variablen bei %C__atomic-Operationen Â»inlineÂ« erzeugen, wenn Lock-freie Befehlssequenz verfÃ¼gbar ist.Alle bekannten Zeichenkettenoperationen einbetten (inline).Code inline einbetten, um Befehlscache nach dem Aufsetzen verschachtelter Funktionstrampoline zu verwerfen.Konstanten einbetten, wenn es mit 2 Befehlen oder weniger geht.Zeichenkettenoperationen memset/memcpy als Â»inlineÂ« einfÃ¼gen, aber Inline-Version nur fÃ¼r kleine BlÃ¶cke durchfÃ¼hren.Rekursives inlinen nur, wenn die Wahrscheinlichkeit des Aufrufs den Parameter Ã¼berschreitet.Aufrufe von strcmp inlinen, wenn mÃ¶glich.Aufrufe von strlen inlinen, wenn mÃ¶glich.Aufrufe von strncmp inlinen, wenn mÃ¶glich.Befragungsparameter darf nicht in einer data-stmt-object-list bei %C vorkommenENDBR-Befehl beim Betreten einer Funktion nur via cf_check-Attribut fÃ¼r CET-Instrumentierung einfÃ¼gen.In jedem Funktionsprolog NOP-Befehle erzeugen.Arc-basierten Programm-Profilierungscode einfÃ¼gen.Code einfÃ¼gen, der jede Speicherseite des Stapels bei der Allokation antestet, um vor Angriffen basierend auf Ãœberschneidungen zu schÃ¼tzen.Code einfÃ¼gen, um AusdrÃ¼cke zu profilen.Code einfÃ¼gen, um die Bedingungsabdeckung zu messen.Pfadprofilierungscode einfÃ¼gen.Lockerungs-Hinweis an Binder Ã¼bergeben, um Lockerung durchzufÃ¼hren.Code zur StapelprÃ¼fung in das Programm einfÃ¼gen. Dasselbe wie Â»-fstack-check=specificÂ«.Anzahl der Maschinenbefehle, die fÃ¼r Funktionsprolog, -Epilog und sonstigen Overhead veranschlagt werden.Anzahl der Maschinenbefehle, die fÃ¼r Thunk-Overhead in Funktionen veranschlagt werden.Zahl der Befehle, bei deren Ãœberschreitung die STFL-Stall-Strafe kompensiert werden kann.Erstmaliges Betreten und Verlassen einer Funktion zum Profilieren aufzeichnen.Ein- und Austritte von Funktionen beim Profilieren von Aufrufen verwenden.Verlassen von Funktionen mit __fentry__ instrumentieren, in instrumentierten Funktionen.Funktionen nur aus Dateien instrumentieren, deren Namen zu keinem der regulÃ¤ren AusdrÃ¼cke passen (durch Semikolon getrennt).Funktionen nur aus Dateien instrumentieren, deren Namen zu einem der regulÃ¤ren AusdrÃ¼cke passen (durch Semikolon getrennt).Ganzzahldivision bei %2$L zu Konstante %1$qs abgeschnittenGanzzahlausdruck erforderlich bei %CGanzzahlart %d bei %C nicht verfÃ¼gbarGanzzahl auÃŸerhalb des symmetrischen Bereichs wegen Standard-Fortran bei %LGanzzahl auÃŸerhalb des symmetrischen Bereiches wegen Standard-Fortran-Konvertierung von %s in %s bei %LGanzzahlÃ¼berlauf bei der Berechnung des zu reservierenden SpeichersGanzzahl zu groÃŸ fÃ¼r ihre Art bei %C. Diese ÃœberprÃ¼fung kann mit der Option %<-fno-range-check%> ausgeschaltet werdenGanzzahl bei %C zu groÃŸGanzzahlwert zu groÃŸ in Ausdruck bei %CFunktionen in ihre Aufrufer einfÃ¼gen, wenn CodegrÃ¶ÃŸe als nicht wachsend bekannt ist.Nicht als Â»inlineÂ« deklarierte Funktionen in ihre Aufrufer einfÃ¼gen, wenn gewinnbringend.Nur an einer Stelle aufgerufene Funktionen in ihre Aufrufer einfÃ¼gen.Intel-MCU-psABI wird im %s-Modus nicht unterstÃ¼tztSchleifen bei %L werden getauschtSchnittstelle %qs bei %L ist in spÃ¤terer PROCEDURE-Anweisung deklariertSchnittstelle %qs bei %L darf keine Anweisungsfunktion seinSchnittstelle %qs bei %L kann nicht allgemein seinSchnittstelle %qs bei %L muss explizit seinUnpassende Schnittstelle fÃ¼r Prozedurzeiger-Komponente %qs in Strukturkonstruktor bei %L: %sSchnittstelle in Scheinprozedur %qs bei %L passt nicht: %sAbweichung in Schnittstelle der Scheinprozedur bei %L widerspricht %L: %sSchnittstelle in globaler Prozedur %qs bei %L passt nicht: %sUnpassende Schnittstellen bei Zuweisung des Prozedurzeigers bei %L: %qs ist kein UnterprogrammUnpassende Schnittstellen bei Zuweisung des Prozedurzeigers bei %L: %sSchnittstelle muss fÃ¼r DEFERRED-Bindung bei %C angegeben werdenSchnittstelle von %qs bei %L muss explizit seinSchnittstellenname nach %<(%> bei %C erforderlichInterner Compilerfehler:
! Interne Datei bei %L mit NamenslisteInterne Prozedur %qs in %s bei %LInterne Prozedur %qs ist in Zuweisung des Prozedurzeigers bei %L ungÃ¼ltigInterne Prozedur %qs ist in Initialisierung des Prozedurzeigers bei %L ungÃ¼ltigInterne Prozedur %qs wird als effektives Argument bei %L verwendetInterne Einheit mit Vektor-Index bei %LJeden INTEGER(4) als INTEGER(8) interpretieren.Jeden REAL(4) als REAL(10) interpretieren.Jeden REAL(4) als REAL(16) interpretieren.Jeden REAL(4) als REAL(8) interpretieren.Jeden REAL(8) als REAL(10) interpretieren.Jeden REAL(8) als REAL(16) interpretieren.Jeden REAL(8) als REAL(4) interpretieren.ImaginÃ¤re, Festkomma, oder andere GNU-Zahlenauffixe als das korrespondieren Zahlenliteral statt eines benutzerdefinierten Zahlenliterals interpretieren.Interrupt-Dienst-Routinen kÃ¶nnen nicht im Â»Thumb-1Â«-Modus codiert werdenIm Â»textÂ«-Abschnitt Literalbereiche mit Codebereichen verweben.Intervall, in dem der Stack geprÃ¼ft wird, als Zweierpotenz in Bytes ausgedrÃ¼ckt.IntervallÃ¼berlappung von %<-fdbg-cnt=%s%>: [%u, %u] und [%u, %u]Intrinsisches %<NULL()%> ohne %<MOLD%>-Argument bei %L an Dummy %qs mit angenommener LÃ¤nge Ã¼bergebenIntrinsisches %<NULL()%> ohne %<MOLD%>-Argument bei %L an Dummy %qs mit angenommenem Rang Ã¼bergebenIntrinsisches %qs (%s) wird bei %L verwendetIntrinsisches %qs bei %L kann keine Initialisierung habenEingebautes %qs bei %L ist in Zuweisung des Prozedurzeigers ungÃ¼ltigEingebautes %qs bei %L ist nicht als effektives Argument erlaubtDas intrinsische %qs bei %L muss mindestens zwei Argumente habenIntrinsisches TRANSFER bei %L hat teilweise undefiniertes Ergebnis: QuellgrÃ¶ÃŸe %zd < ErgebnisgrÃ¶ÃŸe %zdIntrinsische Funktion %qs (%d) nicht erkanntIntrinsische Funktion %qs bei %L ist nicht in einem Initialisierungs-Ausdruck erlaubtIntrinsische Funktion Â»%sÂ« bei %L ist nicht fÃ¼r %s erlaubtIntrinsische Funktion NULL bei %L kann kein tatsÃ¤chliches Argument fÃ¼r STORAGE_SIZE sein, da es einen disassoziierten Zeiger zurÃ¼ckgibtBei %2$L referenzierter intrinsischer Operator %1$qs nicht im Modul %3$qs gefundenSchnittstelle des intrinsischen Operators bei %L muss eine FUNCTION seinIntrinsische Prozedur %qs ist in PROCEDURE-Anweisung bei %L nicht erlaubtIntrinsische Prozedur bei %L kann keine MODULE PROCEDURE seinIntrinsisches Unterprogramm %qs bei %L darf keine Typspezifizierung habenIntrinsisches Symbol wurde bei %C in Â»!$ACC ROUTINE ( NAME )Â« angegeben und mit der inkompatiblen GANG, WORKER oder VECTOR-Klausel markiertIntrinsisches Symbol wurde bei %C in Â»!$ACC ROUTINE ( NAME )Â« angegeben und mit der inkompatiblen NOHOST-Klausel markiertUngÃ¼ltige Direktive %qs bei %L in %s-Klausel: deklarative, informelle und Metadirektiven sind nicht erlaubtUngÃ¼ltige BOZ-Literalkonstante, die bei %C im Feldindex verwendet wirdUngÃ¼ltiger C-Name in NAME=-Spezifizierung bei %CUngÃ¼ltige Hollerithkonstante bei %L enthÃ¤lt ein Wide-ZeichenUngÃ¼ltige Hollerithkonstante: %L muss mindestens ein Zeichen enthaltenUngÃ¼ltige Hollerithkonstante: Ganzzahlart bei %L sollte Standard seinUngÃ¼ltiger KIND-Parameter von %s bei %LUngÃ¼ltiger NAME %qs in Â»!$ACC ROUTINE ( NAME )Â« bei %CUngÃ¼ltiges NULL bei %LUngÃ¼ltiges Argument fÃ¼r Â»!$ACC WAITÂ« bei %CUngÃ¼ltige Feldreferenz bei %LUngÃ¼ltige Feldreferenz der Nicht-Feld-EntitÃ¤t bei %LUngÃ¼ltiges Zuordnungsziel bei %CUngÃ¼ltiges Zeichen %<$%> bei %L. %<-fdollar-ok%> verwenden, um es als Erweiterung zuzulassenUngÃ¼ltiges Zeichen %qc in Variablenname bei %CUngÃ¼ltiges Zeichen 0x%s bei %CUngÃ¼ltiges Zeichen in Name bei %CUngÃ¼ltige(s) Zeichen in ELSE-Anweisung nach %CUngÃ¼ltige Klausel in Modul mit Â»!$ACC DECLAREÂ« bei %LUngÃ¼ltige Codimension %d bei %C, nur %d Codimensionen existierenUngÃ¼ltige kombinierte oder zusammengesetzte Direktive bei %LUngÃ¼ltiger Kontext fÃ¼r NULL()-Zeiger bei %LUngÃ¼ltiger Kontext fÃ¼r NULL()-Zeiger bei %LUngÃ¼ltiger Exponent-Buchstabe %<q%> in literaler Realkonstante bei %CUngÃ¼ltiger Ausdruck nach %<%s(%> bei %CInvalid expression in gfc_element_size.Invalid expression in gfc_target_encode_expr.Invalid expression in gfc_target_interpret_expr.UngÃ¼ltiger Ausdruck im Strukturkonstruktor fÃ¼r Zeigerkomponente %qs bei %L in PURE-ProzedurUngÃ¼ltige Form der PROGRAM-Anweisung bei %CUngÃ¼ltige Form der WRITE-Anweisung bei %L, UNIT erforderlichUngÃ¼ltige Form der Feldreferenz bei %CUngÃ¼ltige Form der Coarray-Referenz bei %CUngÃ¼ltige Bildanzahl %d in SYNC IMAGESUngÃ¼ltiger Initialisierungsausdruck fÃ¼r ALLOCATABLE-Komponente %qs in Strukturkonstruktor bei %LUngÃ¼ltige Initialisierung %s in Data-Anweisung bei %CUngÃ¼ltiges SchlÃ¼sselwort %qs in intrinsischer Funktion %qs bei %LUngÃ¼ltige Art %d fÃ¼r CHARACTER-Konstante bei %CUngÃ¼ltige Art fÃ¼r %s bei %LUnerlaubtes Mischen von IEEE-128-Bit- und IBM-128-Bit-GleitkommatypenUngÃ¼ltige Initialisierung im alten Stil fÃ¼r abgeleitete Typkomponente bei %CUngÃ¼ltiger Operator fÃ¼r !$OMP DECLARE REDUCTION %s bei %LUngÃ¼ltiges Argument fÃ¼r Prozedur bei %LUngÃ¼ltige Zuweisung eines Prozedurzeigers bei %LUngÃ¼ltiger Bereich %s in Option %sUnzulÃ¤ssige Realart %d bei %CInvalid standard code on intrinsic %qs (%d)UngÃ¼ltige Teilzeichenkette in data-implied-do in DATA-Anweisung bei %LUnzulÃ¤ssiger Typ in arithmetischer Operation bei %LUngÃ¼ltiges Typspezifikation bei %CUngÃ¼ltige Verwendung der BOZ-Literalkonstante bei %LUngÃ¼ltige Verwendung eines Anweisungs-Funktionsarguments bei %LUngÃ¼ltiger Wert fÃ¼r Spezifikation %s bei %CEinen Hinweis ausgeben, wenn doppelte Diagnosemeldungen zusammengefasst werden.Fehlersuche-Informationen fÃ¼r compilergenerierte Hilfsvariablen ausgeben.FÃ¼r strikte Standardbefolgung benÃ¶tigte Warnungen ausgeben.Iteratorschritt bei %L kann nicht Null seinJSON-ArrayJSON-Format-Version: %s
! JSON-LiteralJSON-ZahlJSON-ObjektJSON-StringSprungziele werden an dieser Potenz von 2 ausgerichtet.Ausschuss hinter ASSOCIATE-Anweisung bei %CAusschuss hinter CALL bei %CAusschuss hinter GENERIC-Bindung bei %CAusschuss hinter MAP-Anweisung bei %CAusschuss hinter UNION-Anweisung bei %CAusschuss hinter unverschachtelter STRUCTURE-Anweisung bei %CEinfach Abwicklungstabellen fÃ¼r Ausnahmebehandlung erzeugen.Einfach icc0/fcc0 verwenden.KIND-Attribut bei %C in einer STRUCTURE-DefinitionKIND-Attribut bei %C in einer TYPE-DefinitionKIND-Parameter von %s bei %L muss ein Initialisierungsausdruck seinKIND-part_ref bei %CSchlÃ¼sselwort %qs bei %C bereits in aktueller Argumentliste aufgetretenSchlÃ¼sselwort-Argument %qs bei %L ist bereits mit einem anderen effektiven Argument verbundenSchlÃ¼sselwort-Argument %qs bei %L darf innerhalb einer Anweisungsfunktion nicht auftauchenSchlÃ¼sselwort-Argument %qs bei %L ist nicht in der ProzedurSchlÃ¼sselwort-Argument %qs bei %L ist nicht in der Prozedur; meinen Sie %qs?SchlÃ¼sselwort-Argument erfordert explizite Schnittstelle fÃ¼r Prozedur %qs bei %LSchlÃ¼sselwortargument erfordert explizite Schnittstelle fÃ¼r Prozedurzeigerkomponente %qs bei %LDie Art %d wird fÃ¼r CHARACTER bei %C nicht unterstÃ¼tztDie Art %d wird fÃ¼r Typ %s bei %C nicht unterstÃ¼tztParameter mit KIND-Typ fÃ¼r EntitÃ¤t bei %L unterscheidet sich vom Parameter mit KIND-Typ der TypspezifikationBekannte AArch64-ABIs (fÃ¼r Verwendung mit der Option Â»-mabi=Â«):Bekannte ABIs (fÃ¼r Verwendung mit der Option Â»-mabi=Â«):Bekannte ARC-CPUs (fÃ¼r Verwendung mit der Option Â»-mcpu=Â«):Bekannte ARM-ABIs (fÃ¼r Verwendung mit der Option Â»-mabi=Â«):Bekannte ARM-CPUs (fÃ¼r Verwendung mit der Optionen Â»-mcpu=Â« und Â»-mtune=Â«):Bekannte ARM-FPUs (fÃ¼r Verwendung mit der Option Â»-mfpu=Â«):Bekannte ARM-Architekturen (fÃ¼r Verwendung mit der Option Â»-march=Â«):Bekannte C6X ISAs (fÃ¼r Verwendung mit der Option Â»-march=Â«):Bekannte CPUs (fÃ¼r Verwendung mit der Optionen Â»-mcpu=Â« und Â»-mtune=Â«):Bekannte CSKY-CPUs (fÃ¼r Verwendung mit der Option Â»-mcpu=Â«):Bekannte CSKY-FPUs (fÃ¼r Verwendung mit der Option Â»-mfpu=Â«):Bekannte CSKY-Architekturen (fÃ¼r Verwendung mit der Option Â»-march=Â«):Bekannte FR-V-CPUs (fÃ¼r Verwendung mit der Option Â»-mcpu=Â«):Bekannte IQ2000-CPUs (fÃ¼r Verwendung mit der Option Â»-mcpu=Â«):Bekannte Itanium-CPUs (fÃ¼r Verwendung mit der Option Â»-mtune=Â«):Bekannte M68K-CPUs (fÃ¼r Verwendung mit der Option Â»-mcpu=Â«):Bekannte M68K-ISAs (fÃ¼r Verwendung mit der Option Â»-march=Â«):Bekannte M68K-Mikroarchitekturen (fÃ¼r Verwendung mit der Option Â»-mtune=Â«):Bekannte MIPS-ABIs (fÃ¼r Verwendung mit der Option Â»-mabi=Â«):Bekannte MIPS-CPUs (fÃ¼r Verwendung mit der Optionen Â»-march=Â« und Â»-mtune=Â«):Bekannte MIPS-IEEE-754-Einstellungen (fÃ¼r Verwendung mit der Optionen Â»-mabs=Â« und Â»-mnan=Â«):Bekannte MIPS-ISA-Stufen (fÃ¼r Verwendung mit der Option Â»-mipsÂ«):Bekannte PTX-ISA-Architekturen (fÃ¼r Verwendung mit der Option Â»-misa=Â«):Bekannte PTX-ISA-Versionen (fÃ¼r Verwendung mit der Option Â»-mptx=Â«):Bekannte TLS-Dialekte (fÃ¼r Verwendung mit der Option Â»-mtls-dialect=Â«):Bekannte __fp16-Formate (fÃ¼r Verwendung mit der Option Â»-mfp16-format=Â«):Bekannter Adressmodus (fÃ¼r Verwendung mit der Option Â»-maddress-mode=Â«):Bekannte Architekturen (fÃ¼r Verwendung mit der Option Â»-march=Â«):Bekannte Assemblerdialekte (fÃ¼r Verwendung mit der Option Â»-masm=Â«)Bekannte Assemblerdialekte (fÃ¼r Verwendung mit der Option Â»-masm=Â«):Bekannte MÃ¶glichkeiten zur AbschwÃ¤chung der geradlinigen Spekulation mit Â»-mharden-sls=Â«:Bekannte Werte fÃ¼r RÃ¼ckkehr-Instrumentierung mit Â»-minstrument-return=Â«:Bekannte Codemodelle (fÃ¼r Verwendung mit der Option Â»-mcmodel=Â«):Bekannte Codemodelle (fÃ¼r Verwendung mit der Option Â»-mict-model=Â«):Bekannte Codemodelle (fÃ¼r Verwendung mit der Option Â»-mcmodel=Â«):Bekannte Codemodelle (fÃ¼r Verwendung mit der Option Â»-mcmodel=Â«):Bekannte CPU-Typen (fÃ¼r Verwendung mit der Option Â»-mcpu=Â«):Bekannte Datenausrichtungen (fÃ¼r Verwendung mit der Option Â»-malign-data=Â«):Bekannte Gleitkomma-ABIs (fÃ¼r Verwendung mit der Option Â»-mfloat-abi=Â«):Bekannte Anzahl der Gleitkomma-Register (fÃ¼r Verwendung mit der Option Â»-mconfig-fpu=Â«):Bekannte indirekte Sprungauswahlen (fÃ¼r Verwendung mit den Optionen Â»-mindirect-branch=Â« und Â»-mfunction-return=Â«):Bekannte bevorzugte LÃ¤nge von Registervektoren (fÃ¼r Verwendung mit der Option Â»-mprefer-vector-width=Â«):Bekannte Stapelschutz-WÃ¤chter (fÃ¼r Verwendung mit der Option Â»-mstack-protector-guard=Â«):Bekannte ABIs fÃ¼r Vektorisierungs-Bibliothek (fÃ¼r Verwendung mit der Option Â»-mveclibabi=Â«):L%d Cache-Wartezeit unbekannt fÃ¼r %sLEN-Argument (%ld) auÃŸerhalb des Bereichs 0:%d in intrinsischem MVBITSLEN-Argument (%ld) auÃŸerhalb des Bereichs 0:%ld in intrinsischem IBITSLEN-Attribut bei %C in einer STRUCTURE-DefinitionLEN-Attribut bei %C in einer TYPE-DefinitionLEN oder KIND-Abfrageverweis in DATA-Anweisung bei %LLEN-part_ref bei %CInterner Fehler: LEVEL 01 (%s) OCCURS has insufficient data.memsizeLHS in %<noreturn%>-AufrufLINEAR-Klauselmodifizierer auÃŸer VAL wird bei %L an DO- oder SIMD-Konstrukt verwendetLINEAR-Klauselmodifizierer wird bei %L an DO- oder SIMD-Konstrukt verwendetLINEAR-Dummy-Argument %qs mit VALUE-Attribut mit %s-Modifizierer bei %LLINEAR-Variable %qs bei %L muss INTEGER seinLOCK-Anweisung bei %CLOCK_EVENT in Variablen-Definitionskontext (%s) bei %LLOCK_TYPE in Variablen-Definitionskontext (%s) bei %LLOGICAL-Scheinargument %qs bei %L mit Nicht-C_Bool-Art in BIND(C)-Prozedur %qsLOGICAL-Operanden werden in Ausdruck bei %L benÃ¶tigtLOGICAL-RÃ¼ckgabevariable %qs bei %L mit Nicht-C_Bool-Art in BIND(C)-Prozedur %qsdas LP64E-ABI ist im GCC als veraltet gekennzeichnetLTO-Streaming des erweiterten %<asm%> auf oberster Ebene nicht implementiertLTO-UnterstÃ¼tzung wurde in dieser Konfiguration nicht eingeschaltetMarke %d bei %C bereits als eine Formatmarke referenziertMarke %d bei %C bereits als Sprungziel referenziertMarke %d bei %C vorher als FORMAT-Marke verwendetMarke %d bei %C vorher als Sprungziel verwendetMarke %d bei %L definiert, kann aber nicht verwendet werdenMarke %d bei %L definiert, aber nicht verwendetMarke %d wird bei %L referenziert, aber nirgendwo definiertSprungmarke %qs nach %L passt nicht zur IF-Marke %qsMarke %qs bei %C passt nicht zur IF-Marke %qsMarke %qs bei %C passt nicht zur WHERE-Marke %qsMarke bei %L ist nicht im gleichen Block wie GOTO-Anweisung bei %LMarkenname %qs bei %C ist mehrdeutigDO-Anweisung mit Label bei %LÃ–ffnende Klammer benÃ¶tigt nach %<*%> in Formatzeichenkette bei %LAlte Erweiterung:Buchstabe %qc hat bei %C bereits einen IMPLICIT-TypBuchstabe %qc wurde bereits in IMPLICIT-Anweisung bei %C gesetztBuchstaben in IMPLICIT-Anweisung bei %C mÃ¼ssen in alphabetischer Reihenfolge seinStufe nicht gefunden, verwenden Sie %<none%>, %<slim%>, %<blocks%>, %<vops%>.BeschrÃ¤nkungen fÃ¼r GOT-GrÃ¶ÃŸe aufheben.Wie Â»-MÂ«, aber System-Header-Dateien ignorieren.Wie Â»-MDÂ«, aber System-Header-Dateien ignorieren.Wie Â»-pedanticÂ«, aber Fehler statt Warnungen ausgeben.Wie beim Parameter rs6000-density-load-pct-threshold wird auch hier geprÃ¼ft, ob die Gesamtzahl der Ladeanweisungen den durch diesen Parameter festgelegten Schwellwert Ã¼berschreitet, und nur dann eine Strafe verhÃ¤ngt, wenn dieser Schwellwert erfÃ¼llt ist. Der Standardwert ist 20.Wie beim Parameter rs6000-density-pct-threshold, wird die Gesamtsumme von vec_cost und nicht-vec_cost berechnet, und die Betrafung erfolgt nur, wenn die Summe den durch diesen Parameter festgelegten Schwellenwert Ã¼berschreitet. Der Standardwert ist 70.Begrenzen, wie weit der Autovektorisierer eine Schleife abrollen darf.Grenze von %d Fortsetzungen in Anweisung bei %C Ã¼berschrittenBegrenzung der Anzahl der Alias-PrÃ¼fungen, die beim Versuch, ein ldp/stp-Paar zu bilden, durchgefÃ¼hrt werden.Zeile bei %L wird abgeschnitten%s von %d Zeilen ausgefÃ¼hrt
! Code fÃ¼r einen __main-Kernel einbinden.Die D-Standardbibliothek dynamisch in das Compilat binden.Die D-Standardbibliothek statisch in das Compilat binden.Die Modula-2-Standardbibliotheken statisch in das Kompilat einbinden.Binden, um Programm im ELF-Format zu erzeugen (statt mmo).Mit libads.a, libc.a und crt0.o binden.Mit libc.a und libdebug.a binden.Mit libc.a und libsim.a binden.Mit libmvme.a, libc.a und crt0.o binden.Mit libsim.a, libc.a und sim-crt0.o binden.Mit libyk.a, libc.a und crt0.o binden.Mit schneller Gleitkomma-Bibliothek binden.Mit Library-PIC-Bibliotheken binden.Optimierungen zur Bindezeit mit Anzahl paralleler Jobs oder Jobserver.Alle verfÃ¼gbaren FehleranalysezÃ¤hler mit ihren Grenzen und Werten auflisten.Alle versteckten GC-Allokationen auflisten.Alle unverÃ¤nderlichen Felder auflisten, die eine Objektinstanz belegen.Alle Verwendungen von Â»inÂ« mit Parametern auflisten.Alle Variablen auflisten, die im threadlokalen Speicher landen.Informationen Ã¼ber alle D-SprachÃ¤nderungen auflisten.Listenelement %qs bei %L wurde von einer vorhergehenden Direktive OMP DECLARE TARGET auf einen abweichenden DEVICE_TYPE festgelegtListeneintrag %qs bei %L ist bei %L deklariert, ist jedoch kein ScheinargumentListenelement %qs in %s-Klausel bei %L muss TYPE(C_PTR) seinListenelement bei %L darf nicht koindiziert seinListe wurde zusammen mit Speicherreihenfolge-Klausel angegeben, in FLUSH-Direktive bei %CStatistik zu Template-Instanziierung ausgeben.Alle Elemente der Archivbibliotheken laden, statt nur denen, die undefinierte Symbole erfÃ¼llen.Ortsangabe bei %LLocator %qs bei %L in der DEPEND-Klausel der Art DEPOBJ muss eine skalare Ganzzahl der Art OMP_DEPEND_KIND seinDer Locator bei %L in der DEPEND-Klausel vom Typ DEPOBJ muss eine skalare Ganzzahl der Art OMP_DEPEND_KIND seinLock-Variable bei %L muss Skalar mit LOCK_TYPE seinLogischer SELECT CASE Block bei %L hat mehr als zwei FÃ¤lleLogischer Bereich in CASE-Anweisung bei %L ist nicht erlaubtLogische Werte bei %L mÃ¼ssen mit %s statt mit %s verglichen werdenDie vom Binder geladenen Objektdateien wegschreiben.Symbole wegschreiben, die zum Laden eines Objekts gefÃ¼hrt haben.PCH-Dateien suchen und verwenden, sogar bei Vorverarbeitung.Die Hauptquelldatei im Includepfad suchen.Sucht MÃ¶glichkeiten, Stapel-Anpassungen und Stapel-Referenzen zu reduzieren.ARCH-Voreinstellungen fÃ¼r LoongArch:TUNE-Voreinstellungen fÃ¼r LoongArch:Schleifen an dieser Potenz von 2 ausrichten.Schleife lÃ¤uft endlosSchleifenvariableSchleifenvariable bei %C kann kein Koarray seinSchleifenvariable bei %C kann keine Unter-Komponente seinSchleifenvariable bei %C kann kein Koarray seinSchleifenvariable wurde geÃ¤ndertSchleifen mit mindestens der angegebenen Durchlaufzahl erhalten Schleifenausrichtung.Untere Feldreferenz bei %L ist auÃŸerhalb der Schranken (%ld < %ld) in Dimension %dUntere Feldreferenz bei %L ist auÃŸerhalb der Schranken (%ld > %ld) in Dimension %dMAP %qD TO %qEMAP %qD TO %qTMASK kommt bei %L ohne IDENTITY vorMCU %qs unterstÃ¼tzt keine Hardware-Multiplikation, aber %<-mhwmult%> ist auf %s gesetztMCU %qs unterstÃ¼tzt %s-ISA, aber %<-mcpu%> ist auf %s gesetztMCU %qs unterstÃ¼tzt %s-Hardware-Multiplikation, aber %<-mhwmult%> ist auf %<16-bit%> gesetztMCU %qs unterstÃ¼tzt %s-Hardware-Multiplikation, aber %<-mhwmult%> ist auf %<32-bit%> gesetztMCU %qs unterstÃ¼tzt %s-Hardware-Multiplikation, aber %<-mhwmult%> ist auf %<f5series%> gesetztDie MESSAGE-Klausel bei %L erfordert einen skalaren CHARACTER-Ausdruck der StandardartMIPS16 %<-mxgot%> CodeMIPS16 PIC fÃ¼r ABIs auÃŸer o32 und o64MIPS16 erfordert %<-mexplicit-relocs%>Interner Fehler: MMIX Internal: %s is not a shiftable intInterner Fehler: MMIX Internal: Bad register: %dMMIX-intern: Falscher Wert fÃ¼r 'm', kein CONST_INTMMIX-internal: Dieser Operand kann nicht dekodiert werdenMMIX-intern: CONST_INT erwartet, aber nicht diesMMIX-intern: Konstante erwartet, aber nicht diesMMIX-intern: Register erwartet, aber nicht diesInterner Fehler: MMIX Internal: Last named vararg would not fit in a registerInterner Fehler: MMIX Internal: Missing %qc case in %<mmix_print_operand%>MMIX-intern: Dies ist keine Konstante:MMIX-intern: Diese Adresse wird nicht erkanntMMIX-intern: Versuch, ungÃ¼ltig umgekehrte Bedingung auszugeben:MMIX-intern: Was ist der CC davon?MMIX-intern: Was ist der CC davon?MMX-Vektorargument ohne eingeschaltetes MMX Ã¤ndert das ABIMMX-VektorrÃ¼ckgabe ohne eingeschaltetes MMX Ã¤ndert das ABIMODULE PROCEDURE bei %C muss in einer generischen Modulschnittstelle seinMODULE-PROCEDURE-Deklaration bei %CFormales Argument %qs fÃ¼r MODULE PROCEDURE widerspricht alternativer RÃ¼ckgabe bei %CFormales Argument fÃ¼r MODULE PROCEDURE ist alternative RÃ¼ckgabe und widerspricht %qs in der separaten Deklaration bei %CMODULE-PrÃ¤fix bei %CMODULE-PrÃ¤fix bei %C muss innerhalb eines Moduls, Teilmoduls oder Interfaces seinMOLD-Argument an NULL bei %L erforderlichMOLD-Marke bei %LMOLD-Marke bei %L steht mit SOURCE-Marke bei %L in KonfliktMOLD-Marke bei %L steht mit Typspezifikation bei %L in KonfliktIn NULL()-Argument bei %L wird MOLD= benÃ¶tigt: Mehrdeutig zwischen spezifischen Funktionen %s und %sMSA-MIPS16-Codeeingebaute MSP430-Funktionen sind nur innerhalb von Interrupt-Handlern einsetzbarMULT-Fall in %<cris_op_str%>GrÃ¶ÃŸe des zweiten Arguments von %s Ã¼berschreitet Bit-GrÃ¶ÃŸe bei %LGrÃ¶ÃŸenordnung des zweiten Arguments von ISHFTC Ã¼berschreitet BIT_SIZE des ersten Arguments bei %CRÃ¼ckwÃ¤rtskettenzeiger pflegen.Macht Â»charÂ« standardmÃ¤ÃŸig vorzeichenbehaftet.Â»charÂ« standardmÃ¤ÃŸig vorzeichenlos machen.Dem Binder die Befehlszeilenoption Â»--no-relaxÂ« anstelle der Option Â»--relaxÂ« Ã¼bergeben.Alle Funktionsaufrufe indirekt machen.Inline-Funktionen standardmÃ¤ÃŸig zu Â»constexprÂ« machen.Ganzzahlen 32 Bit breit machen.Structs auf Vielfache von 4 Bytes vergrÃ¶ÃŸern (Warnung: ABI geÃ¤ndert).Maschine zur Binder-Entspannung soll annehmen, dass ein BefehlszÃ¤hlerÃ¼bersprung auftritt.Kaputte GENERIC-Anweisung bei %CFalsch geformte Typspezifikation bei %CDaten im P2-Raum reservieren.Gemangelte abgeleitete Typdefinition bei %CZuordnung von Modulen zu CMI-Dateien.Die Zuordnung des polymorphen Listenelements %qD ist unspezifiziertes VerhaltenDie Zuordnung des unbegrenzten polymorphen Listenelements %qD ist unspezifiziertes Verhalten und wird nicht unterstÃ¼tztMAC-Register als Aufruf-zerstÃ¶rt markieren.Alle Schleifen als parallel markieren.Implizit deklarierte Kopieroperationen als deprecated markieren, wenn die Klasse eine benutzerdefinierte Kopieroperation oder einen solchen Destruktor hat.Implizit deklarierte Kopieroperationen als deprecated markieren, wenn die Klasse eine benutzerdefinierte Kopieroperation hat.Alle inline-Funktionen und -Methoden mit versteckter Sichtbarkeit markieren.HÃ¶chstzahl der Basis-BlÃ¶cke in Schleife fÃ¼r Schleifeninvariantenbewegung.Maximale Schleifenanzahl fÃ¼r regionale Registerzuweisung (RA).Maximale Anzahl der zu vergleichenden Bytes als Teil der geinlineten strcmp/strncmp-Routinen (Vorgabe: 64).Maximalzahl der Bytes, die mit Schleifen verglichen werden.Maximalzahl der Bytes, die ohne Schleifen verglichen werden.Maximalzahl der Bytes, die verglichen werden.Maximalzahl der Bytes, die inline kopiert werden.Maximale Anzahl von Dateien im Dateicache.Maximale Anzahl der Zeilen, die im Dateicache indiziert werden. Bei 0 wird die GrÃ¶ÃŸe automatisch festgelegt.Maximale GrÃ¶ÃŸe der Konflikttabelle in MB.Maximalzahl der Debugmarkierungen, die expandiert oder eingereiht werden.GrÃ¶ÃŸte Rekursionstiefe fÃ¼r das Expandieren von variablenverfolgenden AusdrÃ¼cken.MaximalgrÃ¶ÃŸe der Speicherort-Liste, bei der Umkehrungsoperationen hinzugefÃ¼gt werden sollen.Maximale GrÃ¶ÃŸe variablenverfolgender Hash-Tabellen.Maximaler Code-Zuwachs durch Ende-VervielfÃ¤ltigung (in Prozent).GrÃ¶ÃŸtes durch frÃ¼hes Â»inlineÂ« eines einzelnen Aufrufs abgeschÃ¤tztes Wachstum des FunktionskÃ¶rpers.GrÃ¶ÃŸtes geschÃ¤tztes Ergebnis eines als vorhersagbar betrachteten Sprunges.Maximales Wachstum durch Â»inlineÂ« einer groÃŸen Funktion (in Prozent).Maximale Anzahl der Grenzendpunkte der Fallbereiche der Switch-Anweisung, die bei der Generierung der IPA-Funktionszusammenfassung verwendet werden.Kleinste GrÃ¶ÃŸe einer LokalitÃ¤ts-Partition fÃ¼r LTO (in geschÃ¤tzten Befehlen). Beim Wert 0 wird stattdessen ein Vorgabewert verwendet.Kleinste GrÃ¶ÃŸe einer Partition fÃ¼r LTO (in geschÃ¤tzten Befehlen)Maximales Stapelrahmen-Wachstum durch Â»inlineÂ« (in Prozent).Maximal erlaubte GrÃ¶ÃŸenzunahme der GesamtgrÃ¶ÃŸe der neuen Parameter, bis zu der IPA-RSA Zeiger auf Aggregate ersetzt.HÃ¶chstzahl der Iterationen des Durchgangs Ã¼ber eine Funktion.HÃ¶chstzahl der Ã¤hnlichen BasisblÃ¶cke, mit denen ein Basisblock verglichen wird.Maximaler Arbeitsaufwand fÃ¼r das Bereinigen von Pfaden, bei denen die Variable immer initialisiert ist.Maximale GesamtgrÃ¶ÃŸe von aufrufender und aufgerufener Funktion, fÃ¼r den Fall, dass die aufgerufene Funktion in die aufrufende eingereiht wird und die aufgerufene Funktion nur von einer Stelle aus aufgerufen wird.HÃ¶chsttiefe beim Durchlaufen des DFS durch die modref-Escapeanalyse.Maximale Verschachtelungstiefe von Schleifen fÃ¼r optimistisches value-number.Die maximale Tiefe der Befehlsketten, die fÃ¼r die Neuberechnung der ausgehenden Wertebereiche berÃ¼cksichtigt werden.Maximale Tiefe der logischen AusdrÃ¼cke, die von der Bereichsanalyse erfasst werden, um ausgehende Bereiche zu evaluieren.Maximale Tiefe des rekursiven Klonens fÃ¼r selbstrekursive Funktionen.GrÃ¶ÃŸte Tiefe der Suche im Dominator-Baum fÃ¼r anzuhebende AusdrÃ¼cke.Maximale Verschachtelung von Quadratwurzeln, um Potenzierung mit Gleitkommakonstanten abzubilden.HÃ¶chste Erweiterungsstufe mit Typ %qs bei %L erreichtMaximallÃ¤nge von KandidatenprÃ¼fungen fÃ¼r geradlinige StÃ¤rkereduktion.MaximalgrÃ¶ÃŸe der partiellen Aufwandsmenge, wenn Baumvoroptimierung ausgefÃ¼hrt wird.Maximale Schleifentiefe eines Aufrufs, der beim inlinen von Funktionen, die nur einmal aufgerufen werden, berÃ¼cksichtigt wird.Maximale Anzahl der VALUEs, die wÃ¤hrend eines einzelnen Aufrufs von Â»find_base_termÂ« verarbeitet werden.HÃ¶chstzahl der Zugriffe, die pro modref-Verweis gespeichert werden.HÃ¶chstzahl der aktiven lokalen Speicherungen bei RTL-Eliminierung toter Speicherungen.HÃ¶chstzahl der zusammengesetzten Elemente fÃ¼r einen Parameter in Sprungfunktionen und Gittern.HÃ¶chstzahl der Argumente in einem PHI, die einer TREE-if-Umwandlung unterstÃ¼tzt werden, auÃŸer wenn die Schleife mit einem SIMD-Pragma markiert ist.HÃ¶chstzahl der Arrays in einem SCoP.Maximale Anzahl von kÃ¼nstlichen Zugriffen, um eine VorwÃ¤rtsausbreitung zu ermÃ¶glichen, die die Skalare Ersetzung von Aggregaten fÃ¼r eine lokale Variable beibehÃ¤lt.HÃ¶chstzahl der Basen, die pro modref-Baum gespeichert werden.Maximale Anzahl von BasisblÃ¶cken, bevor VRP auf ein schnelles Modell mit geringerem Speicherbedarf umschaltet.HÃ¶chstzahl der Basis-BlÃ¶cke, bevor VRP einen spÃ¤rlich gefÃ¼llten Bitmap-Cache verwendet.HÃ¶chstzahl der Basis-BlÃ¶cke, bevor VRP einen grundlegenden Cachevektor verwendet.HÃ¶chstzahl der Bits, fÃ¼r die keine FMAs erzeugt werden.HÃ¶chstzahl der Bits, die effizient von Speicher zu Speicher verschoben werden kÃ¶nnen.HÃ¶chstzahl der Bits, die effizient im Speicher gespeichert werden kÃ¶nnen.Maximale Blockanzahl fÃ¼r Â»-fharden-control-flow-redundancyÂ«.Maximale Blockanzahl fÃ¼r in-line Â»-fharden-control-flow-redundancyÂ«.Maximale Anzahl von FÃ¤llen fÃ¼r die Verwendung des langsamen aber optimalen Algorithmus zur Optimierung von switch-Anweisungen.HÃ¶chstzahl der gleichzeitig offenen C++-Moduldateien beim verzÃ¶gerten Laden.HÃ¶chstzahl von bedingten Speicherpaaren, die ausgegeben werden kÃ¶nnen.HÃ¶chstzahl der konstanten Speicherungen, die im Speicherzusammenfassungs-Durchgang zusammengefasst werden.HÃ¶chstzahl der Datenreferenzen in Schleife zum Aufbau der AbhÃ¤ngigkeiten der Schleifendaten.Maximale Anzahl verschiedener PrÃ¤dikate, die zur Verfolgung der Eigenschaften von Schleifen in der interprozeduralen Analyse verwendet werden.HÃ¶chstzahl der AuflÃ¶sungen von Mehrdeutigkeiten pro Speicherzugriff.HÃ¶chstzahl der Ausstiegspunkte, die von modref pro SSA-Name aufgezeichnet werden.Die HÃ¶chstzahl der Felder in einer Struktur, bevor Zeigeranalyse sie als einzelne Variable behandelt.HÃ¶chstzahl der in Basis-Block zu betrachtenden Befehle fÃ¼r RTL-if-Umwandlung.Maximaler Abstand von Befehlen, die eine kleine Speicheroperation, der an eine grÃ¶ÃŸere Ladeoperation weitergeleitet wird, blockieren kann. Der Wert 0 deaktiviert die KostenÃ¼berprÃ¼fungen fÃ¼r den Â»avoid-store-forwardingÂ«-Durchgang.Die HÃ¶chstzahl der Befehle in der ausfÃ¼hrungsbereiten Liste, die zur Umbenennung in Frage kommen.HÃ¶chstzahl der zu kopierenden Befehle, wenn BlÃ¶cke auf einem Mehrsprungpfad des Zustandsautomaten dupliziert werden.HÃ¶chstzahl der ISL-Operationen, 0 bedeutet unbegrenzt.HÃ¶chstzahl der SchleifenschÃ¤lungen, um Ausrichtung von Datenreferenzen in einer Schleife zu verbessern.HÃ¶chstzahl der beim spekulativen Devirtualisieren besuchten may-defs.HÃ¶chstzahl der NamensrÃ¤ume, in denen alternativ gesucht wird, wenn Nachschlagen eines Namens scheitert.HÃ¶chstzahl der geschachtelten Aufrufe, die bei der Analyse fÃ¼r uninitialisierte Variablen auf AbhÃ¤ngigkeiten in der Ablaufsteuerung untersucht werden.Maximale Anzahl von Operationen in einem Parameterausdruck, die von der IPA-Analyse behandelt werden kÃ¶nnen.HÃ¶chstzahl der ausgehenden Kanten in einem Switch, bevor VRP sie nicht mehr verarbeitet.HÃ¶chstzahl der Parameter in einem SCoP.Maximale Anzahl der mÃ¶glichen Vektorlayouts (zum Beispiel Permutationen), die beim Optimieren von mÃ¶glicherweise vektorisierbarem Code probiert werden.Maximale Anzahl von und-verknÃ¼pften PrÃ¤dikaten, die fÃ¼r jedes oder-verknÃ¼pfte PrÃ¤dikat in der normalisierten PrÃ¤dikatskette vorkommen.Maximale Anzahl der PrÃ¤dikate, die oder-verknÃ¼pft in der normalisierten PrÃ¤dikatskette vorkommen.HÃ¶chstzahl, wie oft das Alias-Orakel pro Speichervorgang befragt wird.HÃ¶chstzahl der Verweise, die pro modref-Basis gespeichert werden.HÃ¶chstzahl an Beziehungen, die das Orakel pro Basis-Block registriert.HÃ¶chstzahl der in einem Block erlaubten Anweisungen, die fÃ¼r Sprungbehandlung vervielfÃ¤ltigt werden mÃ¼ssen.Maximale Anzahl von Anweisungen, die zwischen der Anweisung und dem Ende erlaubt sind, um die Lebensdauer nicht zu verlÃ¤ngern.HÃ¶chstzahl der Anweisungen, die von der Analyse der formalen Parameter fÃ¼r IPA besucht werden, basierend auf der Aliasanalyse in einer gegebenen Funktion.HÃ¶chstzahl der betrachteten Anweisungen fÃ¼r das Entdecken von Sprungfunktionsoffsets.HÃ¶chstzahl der Speicherungsketten, die im Speicherzusammenfassungs-Durchgang gleichzeitig berÃ¼cksichtigt werden.HÃ¶chstzahl der Zeichenketten, fÃ¼r die der strlen-Optimierungsdurchgang ZeichenkettenlÃ¤ngen aufzeichnet.HÃ¶chstzahl der Tests, die von modref-Anfragen durchgefÃ¼hrt werden.Maximale Anzahl, wie oft ein bestimmter Bereich wÃ¤hrend des Datenflusses angepasst wird.HÃ¶chstzahl, wie oft ein Befehl geplant werden kÃ¶nnte.Maximal erlaubte Kosten fÃ¼r die Befehlsfolge, die vom RTL-if-Umwandlungs-Durchlauf fÃ¼r eine vorhersagbare Verzweigung erzeugt wird.Maximal erlaubte Kosten fÃ¼r die Befehlsfolge, die vom RTL-if-Umwandlungs-Durchlauf fÃ¼r eine unvorhersagbare Verzweigung erzeugt wird.Maximale StÃ¼cke, die IPA-SRA pro Formalparameter verfolgt, folglich auch die maximale Anzahl von Ersetzungen eines Formalparameters.GrÃ¶ÃŸte Wahrscheinlichkeit des Einsprung-BB der geteilten Region (in Prozent relativ zum Einsprung-BB der Funktion), um teilweises Â»inlineÂ« durchzufÃ¼hren.Maximal erlaubte Rekursionstiefe beim Abfragen von Eigenschaften eines SSA-Namens.Maximal GrÃ¶ÃŸe (in Bytes) der Objekte, die bei der Eliminierung toter Speicherungen byteweise verfolgt werden.MaximalgrÃ¶ÃŸe der als Operanden erlaubten Konstantenwerte in Bytes.Maximale GrÃ¶ÃŸe einer jedem Parameter zugeordneten Liste von Werten fÃ¼r interprozedurale Konstantenweitergabe.Maximale GrÃ¶ÃŸe eines einzelnen Bereichs einer SpeicherzusammenfÃ¼hrung in Bytes.MaximalgrÃ¶ÃŸe einer globalen oder statischen Variable, die in kleine Datenbereiche gelegt wird.Maximale GrÃ¶ÃŸe (in Speichereinheiten) von Aggregaten, die fÃ¼r Skalarisierung erwÃ¤gt werden, wenn auf CodegrÃ¶ÃŸe optimiert wird.Maximale GrÃ¶ÃŸe (in Speichereinheiten) von Aggregaten, die fÃ¼r Skalarisierung erwÃ¤gt werden, wenn auf Geschwindigkeit optimiert wird.HÃ¶chste TeildatensatzlÃ¤nge kann %d nicht Ã¼berschreitenHÃ¶chste unterstÃ¼tzte BezeichnerlÃ¤nge ist %dMaximaler Entrollfaktor fÃ¼r die Â»unroll-and-jamÂ«-Transformation.Memberfunktionen, die innerhalb ihrer Klasse definiert sind, sind im ZustÃ¤ndigkeitsbereich des Moduls inline.Die Speicher-Tagging-Erweiterung unterstÃ¼tzt nicht %<-mabi=ilp32%>Der Speicherbereich %qs bei %L in USES_ALLOCATORS muss ein vordefinierter Speicherbereich seinNebeneinanderliegende Speicheroperationen zusammenfassen.ZustÃ¤nde, die Ã¤hnlich genug sind, wÃ¤hrend der Analyse zusammenfassen.Aufruf des Teilbefehls Â»mergeÂ«:Aufruf des Teilbefehls Â»merge-streamÂ«:Kleinstes VerhÃ¤ltnis von Befehlen zu Speicheroperationen, um Prefetching in einer Schleife einzuschalten.Kleinstes VerhÃ¤ltnis von Befehlen zu Prefetches, um Prefetching fÃ¼r eine Schleife mit unbekannter Frequentierung einzuschalten.Kleinster Abstand zwischen mÃ¶glicherweise in Konflikt stehendem Speichern und Laden.Mindestwahrscheinlichkeit in Prozent fÃ¼r Durchfall-Kanten, damit der BB zu geerbten EBB in LRA hinzugefÃ¼gt wird.Kleinste GrÃ¶ÃŸe einer Partition fÃ¼r Bindezeitoptimierung (in geschÃ¤tzten Befehlen).Minimale Heaperweiterung, die Speicherbereinigung anstÃ¶ÃŸt, als Prozentsatz der GesamtgrÃ¶ÃŸe des Heap.Kleinste HeapgrÃ¶ÃŸe vor Speicherbereinigungsbeginn, in Kilobytes.Die Mindestzahl der Iterationen pro Thread in einer innersten parallelisierten Schleife.MindestseitengrÃ¶ÃŸe fÃ¼r Warnzwecke.Mindestprozentsatz der Memrefs, die fÃ¼r unroll-and-jam verschwinden mÃ¼ssen, damit es profitabel ist.Minimale Wahrscheinlichkeit in Prozent, dass ein Funktionszeiger-Parameter dereferenziert wird, bevor erwogen wird, diesen Funktionszeiger durch einfache Werte zu ersetzen.Unstimmigkeit zwischen Unterprogramm und Funktion bei %LUnvertrÃ¤glichkeit in BIND(C)-Namen (%qs/%qs) bei %CKonflikt in ELEMENTAL-Attribut zwischen MODULE-PROCEDURE bei %L und seiner Schnittstelle in %sKonflikt in formalen Argumentnamen (%s/%s) von MODULE PROCEDURE bei %CKonflikt in PURE-Attribut zwischen MODULE-PROCEDURE bei %L und seiner Schnittstelle in %sKonflikt in RECURSIVE-Attribut zwischen MODULE-PROCEDURE bei %L und seiner Schnittstelle in %sUnstimmigkeit in Komponenten von Typ %qs, der von %qs abgeleitet ist bei %C: %qs erwartet, aber %qs erhaltenKonflikt in Anzahl der formalen Argumente von MODULE PROCEDURE bei %CUnpassende Zuweisung des Prozedurzeigers bei %L: Unpassende AufrufkonventionUnstimmigkeiten zwischen Dateiarchitektur und Â»-archÂ« nicht als Warnungen, sondern als Fehler ansehenIn fortgesetzter Zeichenkonstante bei %C fehlt %<&%>Fehlendes %<(%> in ELSE-IF-Ausdruck bei %CFehlendes %<(%> in IF-Ausdruck bei %CFehlendes %<)%> in ELSE-IF-Ausdruck bei %CArgument %qs des intrinsischen %qs bei %L fÃ¼r %qs des Typs %qs fehltFehlendes %qs-Argument fÃ¼r %qs bei %LFehlendes %qs in Anweisung bei oder vor %LFehlende Â»-mcpuÂ«-Option in ASM_CPU_SPEC?Fehlende INITIALIZER-Klausel fÃ¼r !$OMP DECLARE REDUCTION von abgeleitetem Typ ohne Defaultinitialisierer bei %LFehlendes THEN in ELSE-IF-Anweisung nach %LFehlendes Argument %qs in Aufruf von %qs bei %LFehlendes effektives Argument fÃ¼r Argument %qs bei %LFehlende alternative RÃ¼ckgabespezifikation in Unterprogrammaufruf bei %LFehlende alternative RÃ¼ckgabespezifikation in Unterprogrammaufruf bei %LFehlende Argumentliste in Funktion %qs bei %CFehlendes Argument fÃ¼r %qs bei %CFeldspezifikation bei %L in CODIMENSION-Anweisung fehltFehlende Feldspezifikation bei %L in DIMENSION-AnweisungFehlender Zeichenbereich in IMPLICIT bei %CSchlieÃŸende Klammer fÃ¼r Bindungsmarke bei %C fehltFehlende Kodimensionsangabe bei %CFehlendes Komma in Formatzeichenkette bei %LFehlende ZÃ¤hler fÃ¼r aufgerufene Funktion %sFehlende Dimensionsangabe bei %CEntitÃ¤t oder Name eines gemeinsamen Blocks fÃ¼r Attribut-Spezifikationsanweisung bei %C fehltFehlende explizite Deklaration mit EXTERNAL-Attribut fÃ¼r Symbol %qs bei %LFehlender Exponent in Realzahl bei %CFehlende Format-Marke bei %CFehlendes Format mit Standard-Einheit bei %CFehlende allgemeine Spezifikation in USE-Anweisung bei %CFehlendes Element in Formatzeichenkette bei %LFehlender SchlÃ¼sselwortname in effektiver Argumentliste bei %CFehlender Art-Parameter bei %CFehlende Ã¶ffnende Klammer in Formatzeichenkette bei %LFehlende untere Grenze bei der Angabe der angenommenen GrÃ¶ÃŸe des Kofeldes bei %CPositive Breite hinter L-Deskriptor bei %L fehltErforderlicher Modifikator %<target%> und/oder %<targetsync%> bei %C fehltErforderte Klammern vor BIND(C) bei %C fehlenFehlende rechte Klammer bei %CFehlende rechte Klammer oder Komma bei %CFehlendes SymbolProbleme mit AES-Befehlen auf Cortex-A57 und Cortex-A72 umgehen (Arm Erratum #1655431).Probleme mit AES-Befehlen auf Cortex-A57 und Cortex-A72 umgehen (Arm Erratum #1742098).Probleme mit VLLDM auf einigen M-Profil-GerÃ¤ten umgehen (CVE-2021-35465).Modul %qs in Zeile %d, Spalte %d: %sModuldatei %qs wurde nicht generiert, entweder weil das Modul keine MODULE PROCEDURE enthÃ¤lt oder weil es einen Fehler in dem Modul gibt.Modul-Eigenschaft in USE-Anweisung bei %C muss entweder INTRINSIC oder NON_INTRINSIC seinMehr effektive als formale Argumente in Prozeduraufruf bei %LInterner Fehler: More than one edge out of thunk nodeBerechnung der Schleifeninvarianten auÃŸerhalb der Schleifen legen.Speicheroperationen aus Schleifen herausverschieben.Mehrere %qs-Modifizierer bei %C angegebenMehrere Bezeichner mit einzelner Spezifikation NAME= bei %C angegebenMehrere Schleifenachsen fÃ¼r Routine bei %C angegebenName %qs verweist nicht auf eine Unterroutine oder Funktion in !$ACC ROUTINE ( NAME ) bei %LNAME %qs ist in Â»!$ACC ROUTINE ( NAME )Â« bei %L ungÃ¼ltigNAME nicht erlaubt bei BIND(C) fÃ¼r ABSTRACT INTERFACE bei %CSpezifikation NAME= bei %C sollte ein konstanter Ausdruck seinNAME=-Angabe bei %C sollte ein Skalar der Standardzeichenart seinNAMELIST %qs in READ-Anweisung bei %L enthÃ¤lt Symbol %qs, das im Kontext zur Variablendefinition nicht auftreten darfNAMELIST-Feldobjekt %qs mit vermuteter Form in Namensliste %qs bei %LNAMELIST-Feldobjekt %qs ohne konstante Form in Namensliste %qs bei %LNAMELIST-Objekt %qs hat PRIVATE-Komponenten und kann kein Element der PUBLIC-Namensliste %qs bei %L seinNAMELIST-Objekt %qs hat Verwendungs-verbundene PRIVATE-Komponenten und kann kein Element der Namensliste %qs bei %L seinNAMELIST-Objekt %qs in Namensliste %qs bei %L hat ALLOCATABLE- oder POINTER-Komponenten erfordert daher eine definierte Ein-/AusgabeprozedurNAMELIST-Objekt %qs in Namensliste %qs bei %L ist polymorph und erfordert eine definierte Ein-/AusgabeprozedurNAMELIST-Objekt %qs in Namensliste %qs bei %L mit ALLOCATABLE- oder POINTER-KomponentenNAMELIST-Objekt %qs wurde als PRIVATE deklariert und kann kein Element der PUBLIC-Namensliste %qs bei %L seinNAMELIST-Objekt %qs ohne konstante ZeichenlÃ¤nge in Namensliste %qs bei %LNEWUNIT-Spezifizierer bei %LNEWUNIT-Spezifizierer muss FILE= oder STATUS='scratch' bei %L habenNOCONTEXT-Klausel bei %L erfordert einen skalaren LOGICAL-AusdruckPlanungsmodifizierer NONMONOTONIC zusammen mit ORDERED-Klausel bei %L angegebenNON_OVERRIDABLE und DEFERRED kÃ¶nnen nicht gleichzeitig bei %C auftretenNOPASS oder explizite Schnittstelle bei %C erforderlichInterner Fehler: NOTE_INSN_BASIC_BLOCK %d in middle of basic block %dInterner Fehler: NOTE_INSN_BASIC_BLOCK is missing for block %dNOVARIANTS-Klausel bei %L erfordert einen skalaren LOGICAL-AusdruckNOWAIT-Klausel bei %L darf nicht zusammen mit COPYPRIVATE-Klausel verwendet werdenNO_ARG_CHECK-AttributAuf rechter Seite in Zuweisung bei %L tritt NULL aufNULL bei %L ist nicht als tatsÃ¤chliches Argument der intrinsischen Funktion %qs erlaubtintrinsisches NULL mit reservierbarem MOLD bei %LNULL in Arithmetik verwendetNULL() bei %C darf nicht in einem Feld-Konstruktor erscheinenNULL()-Initialisierung bei %C ist mehrdeutigNULL()-Initialisierung bei %C kÃ¶nnte kein MOLD habenNULL() ist nicht interoperabelNULL() in der NÃ¤he von %L darf nicht in einer INQUIRE-Anweisung vorkommenNULLIFY erlaubt keine Neuzuordnung von Grenzen fÃ¼r Zeigerobjekt bei %CUntere Grenze von NUM_TEAMS bei %L ist grÃ¶ÃŸer als die obere Grenze bei %LName %qs bei %C ist bereits als eine allgemeine Schnittstelle bei %L definiertName %qs bei %C ist eine mehrdeutige Referenz auf %qs von aktueller ProgrammeinheitName %qs bei %C ist eine mehrdeutige Referenz auf %qs vom Modul %qsName %qs bei %C ist der Name der ProzedurName %qs in %s-Anweisung bei %C ist kein KonstruktnameName %qs in %s-Anweisung bei %C ist unbekanntName %qs des ABSTRACT INTERFACE bei %C kann nicht der gleiche wie ein intrinsischer Typ seinName hinter Â»!$omp criticalÂ« und Â»!$omp end criticalÂ« passt nicht bei %CName bei %C ist zu langName zu langBenannter COMMON-Block %qs bei %L muss die gleiche GrÃ¶ÃŸe wie anderswo haben (%wu Bytes gegenÃ¼ber %wu Bytes)Benanntes Block-DO bei %L erfordert passenden ENDDO-NamenBenannte Konstante %qs bei %L kann kein EQUIVALENCE-Objekt seinBenannte Konstante %qs in Variablen-Definitionskontext (%s) bei %LBenannte Konstante bei %C in EQUIVALENCENamensliste %qs kann bei %L kein Argument seinNamensliste %qs kann bei %L nicht als Argument fÃ¼r Unterprogramm oder Funktion verwendet werdenGruppenname %qs der Namensliste bei %C hat bereits einen Basistypen von %qsGruppenname %qs der Namensliste bei %C ist bereits USE-verbunden und kann nicht respezifiziert werden.Name der Namenslisten-Gruppe bei %L kann kein SAVE-Attribut habenEntweder EntitÃ¤t oder Name eines gemeinsamen Blocks fÃ¼r Attribut-Spezifikationsanweisung bei %C erforderlichNegation der vorzeichenlosen Konstante bei %L ist nicht erlaubtNegation eines vorzeichenlosen Ausdrucks bei %L ist nicht erlaubtNegatives Argument N bei %LNegativer Exponent der Ganzzahl bei %L ergibt 0 als ErgebnisGeschachtelter CRITICAL-Block bei %CGeschachtelte Trampolin-Funktionen werden auf dem CK801 nicht unterstÃ¼tzt.Interner Fehler: Nice try, but you can't fire me.In BIND(C) bei %C ist kein bindender Name erlaubtKeine Zweige
  Keine Aufrufe
  Keine Bedingungen
  Kein voreingestelltes crt0.o.Noch keine Beschreibung.Interner Fehler: No edge out of thunk nodeKeine ausfÃ¼hrbaren Zeilen
! Im Strukturkonstruktor wurde keine Initialisierung fÃ¼r allozierbare Komponente %qs angegeben, bei %CIm Strukturkonstruktor wurde keine Initialisierung fÃ¼r Komponente %qs angegeben, bei %CWird nicht mehr unterstÃ¼tzt.Keine Pfadinformationen
! Interner Fehler: No region crossing jump at section boundary in bb %iNicht-CHARACTER-Objekt %qs in Standard-Anweisung CHARACTER EQUIVALENCE bei %LBenutzerdefinierte Nicht-ELEMENTAL-Zuweisung in WHERE bei %LNicht-NUMERIC-Objekt %qs in Standard-Anweisung NUMERIC EQUIVALENCE bei %LNicht-PARAMETER-Symbol %qs bei %L kann nicht implied-shape seinNicht-POINTER in Zeiger-Verbindungskontext (%s) bei %LNicht-RECURSIVE Prozedur %qs bei %L ruft sich mÃ¶glicherweise rekursiv selbst auf. Sollte als RECURSIVE oder mit %<-frecursive%> verwendet werdenNicht-RECURSIVE-Prozedur %qs aus Modul %qs ruft sich mÃ¶glicherweise rekursiv selbst auf, in der Prozedur %qs. Deklarieren Sie die Prozedur als RECURSIVE oder verwenden Sie %<-frecursive%>Nicht-THREADPRIVATE-Objekt %qs in Klausel COPYIN bei %LElement eines Feldes mit vermuteter Form aus Nicht-Schriftzeichen in FORMAT-Markierung bei %LElement eines Feldes mit vermuteter GrÃ¶ÃŸe aus Nicht-Schriftzeichen in FORMAT-Markierung bei %LNicht-Zeichen in FORMAT-Markierung bei %LWeder Zeichen noch Hollerith in FORMAT-Markierung bei %LElement eines Zeigerfeldes aus Nicht-Schriftzeichen in FORMAT-Markierung bei %LNichtkonstante ZeichenlÃ¤nge bei %L in DATA-AnweisungNicht-konstante untere Grenze in Deklaration mit impliziter Form bei %LNicht-Standard-LOGICAL in %s-Marke bei %LObjekt oder Sequenz %s vom Nicht-Standardtyp in EQUIVALENCE-Anweisung bei %L mit Objekten unterschiedlichen TypsNicht-erweiterbarer abgeleiteter Typ %qs bei %L darf nicht ABSTRACT seinNicht-numerisches Zeichen in Anweisungsmarke bei %CNicht-polymorphes Scheinargument von %qs fÃ¼r weitergegebenes Objekt bei %LNichtrechteckige Schleifen aus generierten Schleifen werden nicht unterstÃ¼tztNicht-skalare FINAL-Prozedur bei %L sollte Argument mit vermuteter Form habenIrrelevante Ziffern in %qs-Zahl bei %C, mÃ¶glicherweise falsche KINDNicht-variabler Ausdruck in Variablen-Definitionskontext (%s) bei %LMÃ¶gliche WertÃ¤nderung bei Umwandlung von %qs in %qs bei %LNicht allozierbare Variable darf in intrinsischer Zuweisung bei %L nicht polymorph sein â€“ bitte prÃ¼fen, ob es ein passendes spezifisches Unterprogramm fÃ¼r den Â»=Â«-Operator gibtNicht-Koarray-Komponente %s bei %L des Typs EVENT_TYPE oder mit Subkomponente des Typs EVENT_TYPE muss eine Kodimension haben oder die Subkomponente eines Koarrays sein. (Variablen des Typs %s dÃ¼rfen keine Kodimension haben, da %s bei %L eine Kodimension oder Koarray-Subkomponente hat.)Nicht-Koarray-Komponente %s bei %L des Typs EVENT_TYPE oder mit Subkomponente des Typs EVENT_TYPE muss eine Kodimension haben oder die Subkomponente eines Koarrays sein. (Variablen des Typs %s dÃ¼rfen keine Kodimension haben, da es bereits eine Koarray-Subkomponente gibt.)Nicht-Koarray-Komponente %s bei %L des Typs LOCK_TYPE oder mit Subkomponente des Typs LOCK_TYPE muss eine Kodimension haben oder die Subkomponente eines Koarrays sein. (Variablen des Typs %s dÃ¼rfen keine Kodimension haben, da %s bei %L eine Kodimension oder Koarray-Subkomponente hat.)Nicht-Koarray-Komponente %s bei %L des Typs LOCK_TYPE oder mit Subkomponente des Typs LOCK_TYPE muss eine Kodimension haben oder die Subkomponente eines Koarrays sein. (Variablen des Typs %s dÃ¼rfen keine Kodimension haben, da es bereits eine Koarray-Subkomponente gibt.)Tab-Zeichen bei %C passt nichtUnpassendes Tab-Zeichen in Spalte %d der Zeile %dTab-Zeichen in Format bei %C passt nichtAbschnitt eines nicht konstanten Feldes bei %L in DATA-AnweisungInclude-Verzeichnis %qs ist nicht vorhandenNichtganzzahliger Exponent in einem Initialisierungsausdruck bei %LUnvertrÃ¤gliches Feld-FPTR-Argument fÃ¼r C_F_POINTER bei %L: %sUnvertrÃ¤gliches Feld bei %L als Argument fÃ¼r C_LOC: %sUnvertrÃ¤gliche Prozedur bei %L fÃ¼r C_FUNLOCUnvertrÃ¤glicher Prozedurzeiger bei %L fÃ¼r C_F_PROCPOINTERNichtintrinsische elementare Prozedur %qs ist in Zuweisung des Prozedurzeigers bei %L ungÃ¼ltigNichtnegative Breite in Formatzeichenkette bei %L benÃ¶tigtNichtzeiger-Objekt %qs mit Standard-Initialisierung darf nicht in einer DATA-Anweisung bei %L erscheinenPolymorphes Nicht-Zeiger-Scheinargument nicht zulÃ¤ssig fÃ¼r %qs in %s Ortsangabe bei %LNichtpolymorphe Referenz auf abstrakten Typ bei %CNichtstandard-Umwandlung von %s in %s bei %LNicht-Standard Typ-Deklaration %s*%d bei %CDie Schrittweite bei %L darf nicht 0 seinNicht mit %<--enable-gather-detailed-mem-stats%> konfiguriert.Nicht genug Element in Feldinitialisierung bei %CUnerwartetes TAG.Interner Fehler: Not valid for ACCEPT statement.Interner Fehler: Not valid for DISPLAY statement.Hinweisen, wenn #include-Direktiven nicht in import-Deklarationen Ã¼bersetzt werden und nicht eindeutig textuell sind.Hinweisen, wenn #include-Direktiven in import-Deklarationen Ã¼bersetzt werden.Pfadname fÃ¼r compilierte Modulschnittstelle eines bestimmten Moduls oder Header-Einheit ausgeben.Pfadnamen fÃ¼r compilierte Modulschnittstellen zur Info ausgeben.Hinweisen, wenn das #include eines bestimmten Headers Ã¼bersetzt wird.Wenn das AuflÃ¶sen von Ãœberladungen scheitert, alle Kandidaten auflisten.Anzahl der Cache-EintrÃ¤ge in der inkrementellen LTO, nach der alte EintrÃ¤ge gelÃ¶scht werden sollen.Anzahl der Partitionen, in die das Programm aufgeteilt werden soll.Anzahl der zur Ãœbergabe von Ganzzahlargumenten verwendeten Register.Numerischer PARAMETER in komplexer Konstante bei %C erforderlichIn Ausdruck bei %L werden numerische Operanden benÃ¶tigtNumerische oder CHARACTER-Operanden benÃ¶tigt in Ausdruck bei %LOLD-Argument der intrinsischen Funktion Â»%sÂ« bei %L muss definierbar seinOMP CRITICAL bei %L mit HINT-Klausel benÃ¶tigt NAME, auÃŸer wenn omp_sync_hint_none verwendet wirdOMP DECLARE TARGET COMMON bei %L wurde vorher in LINK-Klausel und spÃ¤ter in %s-Klausel erwÃ¤hntOMP DECLARE TARGET COMMON bei %L wurde vorher in TO- oder ENTER-Klausel und spÃ¤ter in LINK-Klausel erwÃ¤hntDirektive OMP DECLARE TARGET bei %L mit nur DEVICE_TYPE- oder INDIRECT-Klausel wird ignoriertÂ»OMP DECLARE TARGETÂ«-Variable bei %L ist ein Element eines COMMON-BlocksOMP-DECLARE-TARGET-Variable bei %L wurde vorher in LINK-Klausel und spÃ¤ter in %s-Klausel erwÃ¤hntOMP-DECLARE-TARGET-Variable bei %L wurde vorher in TO- oder ENTER-Klausel und spÃ¤ter in LINK-Klausel erwÃ¤hntOMP TARGET UPDATE bei %L erfordert mindestens eine TO- oder FROM-KlauselOPEN-Anweisung bei %L muss UNIT oder NEWUNIT habenOPEN-Anweisung in PURE-Prozedur bei %C nicht erlaubtOPERATION-Argument bei %L muss eine PURE-Funktion seinAttribut OPTIONAL nicht zulÃ¤ssig fÃ¼r %qs in %s Ortsangabe bei %LOPTIONAL ist in BLOCK bei %C nicht erlaubtORDER bei %L ist keine Permutation der GrÃ¶ÃŸe von SHAPE bei %LORDER-Klausel bei %L darf nicht zusammen mit ORDERED verwendet werdenArgument der ORDERED-Klausel bei %C ist keine konstante positive GanzzahlORDERED-Parameter der Klausel bei %L ist weniger als COLLAPSE%<ORDERED%>-Klausel darf nicht nicht zusammen mit %<inscan%>-REDUCTION-Klausel bei %L verwendet werdenObjekt %qs bei %L ist keine VariableObjekt %qs bei %L ist keine Variable; Parameter kÃ¶nnen nicht kopiert werden und brauchen das auch nichtObjekt %qs bei %L ist keine Variable; Parameter kÃ¶nnen nicht zugeordnet werden und brauchen das auch nichtObjective-C-Deklarationen dÃ¼rfen nur im globalen GÃ¼ltigkeitsbereich erscheinenVeraltete Funktion:Veraltet; verwenden Sie GCN_STACK_SIZE zur Laufzeit.Ausgelagertes Werkzeug, um mit gcda-ZÃ¤hler zu arbeiten
  
! ZeichenlÃ¤nge alten Stils bei %CInitialisierung im alten Stil bei %CDeklaration %s*%d im alten Stil wird bei %C nicht unterstÃ¼tztRahmenzeiger fÃ¼r Blattfunktionen auslassen.Schritt zur Bereichsverkleinerung auslassen, wenn komplexe Division durchgefÃ¼hrt wird.Rahmenzeiger in Blattfunktionen auslassen.Eins der tatsÃ¤chlichen Argumente in INITIALIZER-Klausel von !$OMP DECLARE REDUCTION bei %L muss OMP_PRIV seinNur DEFAULT ist als Reduktionsmodifizierer erlaubt, in der REDUCTION-Klausel bei %LFÃ¼r den abgeleiteten Typ %qs, der bei %L definiert ist, sind ausschlieÃŸlich Array-FINAL-Prozeduren deklariert. Empfohlen ist auch eine skalare, es sei denn, ein Finalisierer mit angenommenem Rang wurde deklariertNur die Schnittstelle des compilierten Moduls (CMI) ausgeben.Absolute Auslagerungen nur bei Werten mit WordgrÃ¶ÃŸen erzeugen.Nur intrinsische Operatoren kÃ¶nnen in Ausdruck bei %L verwendet werdenNur einen Befehl pro Taktzyklus ausgeben.Nur eines von TEAM= oder TEAM_NUMBER= darf in einer Koarray-Referenz bei %C erscheinenNur fÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤t erhalten.Nur die Form !$ACC ROUTINE ohne Liste ist im Schnittstellenblock bei %C erlaubtNur die Form !$OMP DECLARE TARGET ohne Klauseln ist im Schnittstellenblock bei %C erlaubtNur 32 FPRs verwenden.Nur 32 GPRs verwenden.OpenACC-Konstrukt innerhalb einer Nicht-OpenACC-RegionOpenACC-Direktive innerhalb von CRITICAL-Block bei %COpenACC-Direktiven auÃŸer ROUTINE dÃ¼rfen in PURE-Prozeduren nicht vorkommen, bei %COpenACC-Schleifendirektive muss mit einer OpenACC-Berechnungsregion verknÃ¼pft seinOpenACC-Region innerhalb einer OpenACC-Routine, geschachtelter Parallelismus wird noch nicht unterstÃ¼tztOpenMP-Attribut %<omp::decl%> an einer AnweisungOpenMP-%<requires%>-Direktive mit %qs ist nur in einigen Ãœbersetzungseinheiten angegebenOpenMP-%<requires%>-Direktive mit unterschiedlichen Klauseln in mehreren Ãœbersetzungseinheiten: %qs gegenÃ¼ber %qsOpenMP ERROR-Direktive bei %L mit %<at(execution)%>-Klausel in einer PURE-ProzedurOpenMP-Konstrukt inmitten der %<omp::directive%>-Attribute erfordert, dass alle %<omp::directive%>-Attribute derselben Anweisung in derselben %<omp::sequence%> liegenOpenMP-Konstrukte sind in der Zielregion mit %<ancestor%> nicht erlaubtOpenMP-Konstrukte auÃŸer %<ordered simd%>, %<simd%>, %<loop%> oder %<atomic%> dÃ¼rfen nicht innerhalb von %<simd%>-Regionen geschachtelt seinOpenMP-Konstrukte auÃŸer %<parallel%>, %<loop%> oder %<simd%> dÃ¼rfen nicht in einer %<loop%>-Region geschachtelt seinOpenMP-Konstrukte auÃŸer %<parallel%>, %<loop%> oder %<simd%> dÃ¼rfen nicht innerhalb einer Region mit %<order(concurrent)%>-Klausel geschachtelt seinOpenMP-Direktive bei %C ist nicht rein und darf daher nicht in einer PURE-Prozedur erscheineneine andere OpenMP-Direktive als %<declare simd%> oder %<declare variant%> gehÃ¶rt zu einer DeklarationOpenMP-Direktiven dÃ¼rfen nicht in %<constexpr%>-Funktionen vorkommenAufruf der OpenMP-Laufzeit-API %qD in einer Region mit %<device(ancestor)%>-KlauselAufruf der OpenMP-Laufzeit-API %qD in einer Region mit %<order(concurrent)%>-KlauselOpenMP-Laufzeit-API-Aufruf %qD streng in einer %<teams%>-Region verschachteltOperand des Operators .not. bei %L ist %sOperand des unÃ¤ren numerischen Operators %qs bei %L ist %sOperand des Benutzeroperators %qs bei %L ist %sOperanden bei %L und %L kÃ¶nnen nicht als Operanden des binÃ¤ren Operators %qs verwendet werdenOperanden des binÃ¤ren numerischen Operators %qs bei %L sind %s/%sOperanden des Vergleichsoperators %qs bei %L sind %s/%sOperanden des logischen Operators %qs bei %L sind %s/%sOperanden des Zeichenkettenverkettungsoperators bei %L sind %s/%sOperanden des Benutzeroperators %qs bei %L sind %s/%sOperatorschnittstelle bei %L steht mit intrinsischer Schnittstelle in KonfliktOperatorschnittstelle bei %L hat falsche ArgumentanzahlOperatorschnittstelle bei %L darf hÃ¶chstens zwei Argumente habenOptimierung. Ausgehende Funktionsargumente sammeln und den nÃ¶tigen Stapelspeicher fÃ¼r ausgehende Argumente im Prolog/Epilog der Funktion reservieren/freigeben. Ohne diese Option werden ausgehende Argumente auf den Stapel geschoben und hinter zurÃ¼ckgeholt. Diese Option kann fÃ¼r Funktionen, die viele Funktionen mit ArgumentÃ¼bergabe Ã¼ber den Stapel aufrufen, z.B. printf, zu kleinerem Code fÃ¼hren.Optimierung. Die Verwendung von nonzero_bits() in einigen Befehlsbedingungen erlauben.Optimierung. Verwendung von __gcc_isr-Pseudobefehlen in ISR-Prologen und -Epilogen erlauben.Optimierung. Mehrfache Move-Befehle zusammenschweiÃŸen, nachdem Befehle kombiniert wurden.Optimierung. Zweige entspannen.Optimieren. Einen Post-Reload-Durchlauf ausfÃ¼hren, der die Kopierbefehle optimiert.Optimierung. Aufteilung der meisten Lade- und Speicherbefehle in Byte-Laden und -Speichern.Optimierung. Registeradditionen von Lade-/Speicheranweisungen trennen. Am nÃ¼tzlichsten bei Reduced Tiny.Optimieren. Aufteilung von Verschiebungen von 4-Byte-Werten in eine Byte-Verschiebung und eine Restbit-Verschiebung.Optimierung. Â»mainÂ« so behandeln, als hÃ¤tte sie das Attribut OS_task.Optimierung. FÃ¼r Funktionsprologe und -epiloge Unterprogramme verwenden.Optimierung. Bei RAM-Zugriff X wie durch Hardware vorgegeben verwenden, d.h. Pre-Dekrement, Post-Inkrement und indirekte Adressierung mit dem X-Register. Ohne diese Option nimmt der Compiler an, dass es einen Adressierungsmodus X+const, Ã¤hnlich zu Y+const und Z+const gibt und erzeugt Befehle, die diesen Adressierungsmodus fÃ¼r X emulieren.Anzahl der stdarg-Register optimieren, die am Anfang einer Funktion auf dem Stapel gespeichert werden.Bedingte AusdrÃ¼cke mittels SSA-PHI-Knoten optimieren.FÃ¼r CPU optimieren.Auf FehlersuchmÃ¶glichkeiten statt Geschwindigkeit oder GrÃ¶ÃŸe optimieren.Aggressiv auf GrÃ¶ÃŸe statt Geschwindigkeit optimieren.Auf GrÃ¶ÃŸe statt Geschwindigkeit optimieren.Auf Geschwindigkeit optimieren, unter Missachtung genauer StandardkonformitÃ¤t.Code fÃ¼r Rahmenkopf optimieren.Induktionsvariablen auf BÃ¤umen optimieren.lui/addiu-Adressladebefehle optimieren.Noreturn-Funktionen optimieren, indem die callee-saved-Register nicht gespeichert werden.OpcodegrÃ¶ÃŸen zur Bindezeit optimieren.Partitionsneutralisierung optimieren.Geschwister- und endrekursive Aufrufe optimieren.Ende-Aufruf-Befehle in Assembler und Binder optimieren.Option %<-fallow-leading-underscore%> ist nur fÃ¼r gfortran-Entwickler gedacht und sollte nicht fÃ¼r implizit getypte Variable verwendet werdenOptionen fÃ¼r %<-Xassembler%> passen nicht zueinander: %s, %s; alle Optionen der Form %<-Xassembler%> und %<-Wa%> werden verworfen.Optionen:
  AuÃŸerhalb des Wertebereichs in IMAGE_INDEX bei %L fÃ¼r Dimension %d, SUB hat %ld und untere Grenze fÃ¼r COARRAY ist %ldAuÃŸerhalb des Wertebereichs in IMAGE_INDEX bei %L fÃ¼r Dimension %d, SUB hat %ld und obere Grenze fÃ¼r COARRAY ist %ldStapelspeicher aufgebraucht.
! .debug_types-Abschnitt ausgeben, wenn DWARF v4-Debuginfo verwendet wird.Information Ã¼ber Aufrufgraphen auf Dateibasis mit Dekoration ausgeben.Information Ã¼ber Aufrufgraphen auf Dateibasis ausgeben.LTO-Objekte ausgeben, die sowohl Zwischensprache als auch BinÃ¤rausgabe enthalten.Information Ã¼ber Stapelverwendung auf Funktionsbasis ausgeben.VerifikationszÃ¤hler fÃ¼r VTables ausgeben.Informationen Ã¼ber Zeigermengen der VTable-Verifikation ausgeben.Aufruf des Teilbefehls Â»overlapÂ«:Ãœberlappende ungleiche Initialisierungen in EQUIVALENCE bei %CÃœberlappende ungleiche Initialisierungen in EQUIVALENCE bei %L-mbest-lib-options Ã¼berschreiben.P-Deskriptor benÃ¶tigt fÃ¼hrenden Skalierungsfaktor in Formatzeichenkette bei %LPAD= bei %L ist in Fortran 95 nicht erlaubtPARAMETER %qs wird bei %L verwendet, bevor dessen Definition vollstÃ¤ndig istPARAMETER %qs darf nicht in einer DATA-Anweisung bei %C vorkommenFehlende Initialisierung fÃ¼r PARAMETER bei %LPARAMETER-Symbol in komplexer Konstante bei %CPARAMETER ohne Â»()Â« bei %CArgument der PARTIAL-Klausel bei %C ist keine konstante positive GanzzahlPAUSE-Anweisung bei %CLadebefehle relativ zum PC.PCH-AlloziierungsfehlerPCH-Speicher nicht verfÃ¼gbar: %mPCS-VariantePDP11-Bitfeld-Verarbeitung wird in %qs nicht unterstÃ¼tztPHI-Argument fehlt fÃ¼r Kante %d->%dPHI-Argument ist kein SSA_NAME, oder invariantPHI-Argument an unnormaler Kante ist nicht SSA_NAMEPHI node with locationPHI node with wrong VUSE on edge from BB %dPIC-Codeerzeugung ist mit schnellen indirekten Aufrufen unvertrÃ¤glichPIC-Codeerzeugung wird im portierbaren Laufzeitmodell nicht unterstÃ¼tztPIC wird fÃ¼r %qs nicht unterstÃ¼tztPIC wird nur fÃ¼r RTPs unterstÃ¼tztPIC wird benÃ¶tigt, wird aber nicht mit CONST16-Befehlen unterstÃ¼tztPIC-Register durch %qs in %<asm%> zerstÃ¶rtPOINTER-Attribut ist fÃ¼r Prozedurzeiger-Komponente bei %C erforderlichPOINTER-Objekt %qs in Klausel %s bei %LPOINTER-Objekt %qs von polymorphem Typ in Klausel %s bei %LPOINTER-wertige Funktion tritt auf rechter Seite der Zuweisung bei %L aufPOS-Argument (%ld) auÃŸerhalb des Bereichs 0:%ld in intrinsischem Â»%sÂ«POS-Argument (%ld) auÃŸerhalb des Bereichs 0:%ld in intrinsischem BTESTPOS-Argument (%ld) auÃŸerhalb des Bereichs 0:%ld in intrinsischem IBITSPOS(%ld)+LEN(%ld)>BIT_SIZE(%ld) in intrinsischem IBITSPOSITION-Angabe in OPEN-Anweisung bei %L ist nur fÃ¼r Datenstrom-ACCESS oder fÃ¼r sequentiellen ACCESS erlaubtInterner Fehler: PR100400PRE ausgeschaltetPRINT-Namensliste bei %C ist eine ErweiterungPRINT-Anweisung bei %C innerhalb PURE-Prozedur nicht erlaubtPRINT_OPERAND, ungÃ¼ltiger Befehl fÃ¼r %%CPRINT_OPERAND, ungÃ¼ltiger Befehl fÃ¼r %%NPRIVATE-Anweisung bei %C ist nur in Spezifikationsteil eines Moduls erlaubtPRIVATE-Anweisung bei %C muss Prozedurbindungen vorausgehenPRIVATE-Anweisung bei %C muss Strukturkomponenten vorausgehenPRIVATE-Anweisung in TYPE bei %C muss innerhalb eines MODULEs seinPROCEDURE %qs bei %L darf nicht als ihre eigene Schnittstelle verwendet werdenPROCEDURE bei %C muss in einer allgemeinen Schnittstelle seinAttribut PROCEDURE steht mit Attribut INTENT in %qs bei %L in KonfliktAttribut PROCEDURE steht mit Attribut NAMELIST in %qs bei %L in KonfliktAttribut PROCEDURE steht mit Attribut PROTECTED bei %L in KonfliktAttribut PROCEDURE steht mit Attribut RESULT in %qs bei %L in KonfliktAttribut PROCEDURE steht mit Attribut SAVE in %qs bei %L in KonfliktPROCEDURE-Liste bei %CPROCEDURE-Anweisung bei %CPROCEDURE(Schnittstelle) bei %C sollte als DEFERRED deklariert seinPROTECTED bei %C nur in Spezifikationsabschnitts eines Moduls erlaubtPROTECTED-Attribut bei %CAttribut PROTECTED steht mit Attribut EXTERNAL bei %L in KonfliktPROTECTED-Anweisung bei %CPTX unterstÃ¼tzt keine schwachen Deklarationen (nur schwache Definitionen)PTX-Version %<-mptx%> muss mindestens %s sein, um die ausgewÃ¤hlte %<-misa%> (sm_%s) zu unterstÃ¼tzenPUBLIC %s %qs bei %L mit abgeleitetem PRIVATE-Typen %qsPUBLIC-Funktion %qs bei %L mit PRIVATE-Typ %qsPUBLIC-Anweisung bei %C ist nur in Spezifikationsteil eines Moduls erlaubtPURE und IMPURE dÃ¼rfen bei %C nicht gleichzeitig stehenPURE-PrÃ¤fix fehlt in MODULE-PROCEDURE-Schnittstelle bei %LVLIW-Befehle packen.Strukturelemente ohne LÃ¼cken zusammenpacken.KÃ¼rzere Zeilen in fester Form mit Leerzeichen auf Zeilenbreite auffÃ¼llen.AuffÃ¼llen mit %d Bytes vor %qs in COMMON %qs bei %L erforderlich; bitte Elemente umordnen oder %<-fno-align-commons%> verwendenAuffÃ¼llen mit %d Bytes vor %qs in COMMON bei %L erforderlich; bitte Elemente umordnen oder %<-fno-align-commons%> verwendenParameter, mit dem gesteuert wird, welche RÃ¼ckschreibegelegenheiten im Load/Store-Paar-Fusionsdurchlauf behandelt werden sollen. Der Wert 0 deaktiviert die RÃ¼ckschreibebehandlung. Der Wert 1 versucht Paare zu bilden, die nach MÃ¶glichkeit einen oder mehrere bestehende individuelle RÃ¼ckschreibzugriffe beinhalten. Der Wert 2 versucht opportunistisch RÃ¼ckschreibgelegenheiten zu bilden, indem nachlaufende destruktive Aktualisierungen des von einem Paar verwendeten Basisregisters einklappen.Parameter %qs bei %L wurde nicht deklariert oder ist eine Variable, die nicht zu konstantem Ausdruck reduziertParameterfeld %qs bei %L kann nicht automatische oder vermutete Form habenDer parametrisierte abgeleitete Typ bei %C ist mehrdeutigParametrisierter Typ %1$qs hat bei %3$L keine Komponente, die zu Parameter %2$qs gehÃ¶rtOption Â»-EBÂ« an den Binder Ã¼bergeben.Option Â»-ELÂ« an den Binder Ã¼bergeben.Option Â»-marclinuxÂ« an den Binder Ã¼bergeben.Option Â»-marclinux_profÂ« an den Binder Ã¼bergeben.Die Option Â»-mrelaxÂ« oder Â»-mno-relaxÂ« an den Assembler Ã¼bergeben.Â»-z textÂ« an den Binder Ã¼bergeben.Adresse der RA-Speicherstelle an _mcount in $12 Ã¼bergeben.Weitergegebenes Objekt bei %L muss Skalar seinScheinargument des Ã¼bergebenen Objektes von %qs bei %L muss an der gleichen Stelle wie das Scheinargument des Ã¼bergebenen Objektes der Ã¼berschriebenen Prozedur stehenScheinargument von %qs fÃ¼r weitergegebenes Objekt bei %L muss ein Skalar seinScheinargument von %qs fÃ¼r weitergegebenes Objekt bei %L darf nicht ALLOCATABLE seinScheinargument von %qs fÃ¼r weitergegebenes Objekt bei %L darf nicht POINTER seinGibt an den Assembler eine Anforderung weiter, damit dieser diverse Chipfehler umgeht.Gibt an den Assembler eine Anforderung weiter, damit dieser bei diversen Chipfehlern warnt.Koarray bei %L wird an reservierbares, Nicht-Coarray-Scheinargument %qs Ã¼bergeben, das ungÃ¼ltig wird, wenn der Reservierungsstatus geÃ¤ndert wirdKoarray bei %L wird an reservierbares, Nicht-Coarray, INTENT(OUT) Scheinargument %qs Ã¼bergebenÃœbergabe der globalen Funktion %qs, die bei %L deklariert wurde, als Unterroutine bei %LÃœbergabe des globalen Unterprogramms %qs, das bei %L deklariert wurde, als Funktion bei %LÃœbergabe der eingebauten Prozedur Ã¼ber die Speicherstelle ist bei %L nicht erlaubtDas Ãœbergeben des eingebauten NULL als tatsÃ¤chliches Argument bei %L erfordert eine explizite SchnittstellePfad zu Headerdatei, die vor jeder Ãœbersetzungseinheit eingebunden wird.Prozentuale Strafe fÃ¼r Funktionen, die nur einen einzigen Aufruf einer anderen Funktion enthalten, wenn sie zum Klonen evaluiert werden.Prozentuale Strafe fÃ¼r rekursive Funktionen, wenn sie zum Klonen evaluiert werden.Informationen Ã¼ber IPA-Wertebereiche weitergeben.Identischen Code fÃ¼r Funktionen und schreibgeschÃ¼tzte Variablen zusammenfassen.Identischen Code fÃ¼r Funktionen zusammenfassen.Identischen Code fÃ¼r Variablen zusammenfassen.SMS-basierte modulo-Planung vor erstem Planungsdurchlauf durchfÃ¼hren.SMS-basierte modulo-Planung mit erlaubten Register-Verschiebungen durchfÃ¼hren.VR4130-spezifische Ausrichtungs-Optimierungen durchfÃ¼hren.Wertebereichsweitergabe auf BÃ¤umen durchfÃ¼hren.Schritt zur VorwÃ¤rts-Ãœbertragung auf RTL durchfÃ¼hren.Eine Reihe kleiner, aber teurer, Optimierungen durchfÃ¼hren.Optimierungsdurchlauf zur KopierÃ¼bertragung von Registern durchfÃ¼hren.Einen Optimierungsdurchgang zur Registerumbenennung durchfÃ¼hren.Einen zielabhÃ¤ngigen Optimierungsdurchgang zur Befehlsfusion durchfÃ¼hren.Kopien erzeugen, um zwischenprozedurale Konstantenweitergabe zu verstÃ¤rken.Beseitigung von Vergleichen nach Registerreservierung durchfÃ¼hren.Umwandlung bedingter SprÃ¼nge in zweiglose Ã„quivalente durchfÃ¼hren.Umwandlung bedingter SprÃ¼nge in bedingte AusfÃ¼hrung durchfÃ¼hren.Umwandlungen von Â»switchÂ«-Initialisierungen durchfÃ¼hren.Optimierung zum Kreuzsprung durchfÃ¼hren.Totem Code bei Null- und Vorzeichenerweiterungen mittels spezieller Datenflussanalyse durchfÃ¼hren.FrÃ¼hes Inlining durchfÃ¼hren.Erweiterte Ladebewegung wÃ¤hrend Beseitigung globaler gemeinsamer TeilausdrÃ¼cke durchfÃ¼hren.Funktionslokale Analyse von Zeigerzielen auf BÃ¤umen durchfÃ¼hren.Beseitigung globaler gemeinsamer TeilausdrÃ¼cke nach Registerreservierung durchfÃ¼hren.Beseitigung globaler gemeinsamer TeilausdrÃ¼cke durchfÃ¼hren.Indirektes Inlining durchfÃ¼hren.Interne KonsistenzprÃ¼fungen durchfÃ¼hren.Zwischenprozedurale bitweise Konstantenweitergabe durchfÃ¼hren.Zwischenprozedurale Konstantenweitergabe durchfÃ¼hren.ProzedurÃ¼bergreifende modref-Analyse durchfÃ¼hren.Zwischenprozedurale Zeigt-auf-Analyse durchfÃ¼hren.Zwischenprozedurale Profilweitergabe durchfÃ¼hren.Zwischenprozedurale Reduktion von Aggregaten durchfÃ¼hren.Sprung-Threading-Optimierungen durchfÃ¼hren.Lebensdaueraufteilung wÃ¤hrend des Â»SSA -> NormalÂ«-Durchlaufs durchfÃ¼hren.Schleifen-SchÃ¤lung durchfÃ¼hren.Schleifen-Aufteilung durchfÃ¼hren.Schleifenabwicklung fÃ¼r alle Schleifen durchfÃ¼hren.Schleifenabwicklung durchfÃ¼hren, wenn Anzahl der Wiederholungen bekannt ist.Schleifenausschaltung durchfÃ¼hren.Teilweises Inlining durchfÃ¼hren.Beseitigung Ã¼berflÃ¼ssigen Ladens nach dem Abspeichern in globalem gemeinsamem Teilausdruck durchfÃ¼hren.Funktionen neuordnen und klonen, um die LokalitÃ¤t zu maximieren.Skalarersetzung von Aggregaten durchfÃ¼hren.WÃ¤hrend selektiver Planung Software-Pipelining innerer Schleifen durchfÃ¼hren.WÃ¤hrend selektiver Planung Software-Pipelining Ã¤uÃŸerer Schleifen durchfÃ¼hren.Spekulative Devirtualisierung durchfÃ¼hren.Speicherbewegung nach Beseitigung globaler gemeinsamer TeilausdrÃ¼cke durchfÃ¼hren.Geradlinige StÃ¤rkereduktion durchfÃ¼hren.Superblockerzeugung Ã¼ber Ende-VervielfÃ¤ltigung durchfÃ¼hren.Schleifenabwicklung (unroll-and-jam) fÃ¼r Schleifen durchfÃ¼hren.Ungenutzte Symbole aus Info zur Fehlersuche entfernen.Ungenutzte Typen aus Info zur Fehlersuche entfernen.Variablenverfolgung durchfÃ¼hren und auch Variablen markieren, die uninitialisiert sind.Variablenverfolgung durch Zuweisungsanmerkungen durchfÃ¼hren.Variablenverfolgung durchfÃ¼hren.Gesamtprogrammoptimierung durchfÃ¼hren.Formatspezifikation %s bei %L erfordert PunktFormatspezifikation bei %L erfordert PunktFormatspezifikation benÃ¶tigt Punkt in Formatzeichenkette bei %LÂ»$Â« als Bezeichnerzeichen zulassen.Unpassende Verwendungen des TAB-Zeichens erlauben.Planung einer Sequenz fÃ¼r Funktionsprolog und -epilog erlauben.Planung einer Funktionsprologsequenz erlauben.Planung von Funktionsprolog- und -epilogsequenzen erlauben.Universelle Zeichennamen (\u und \U) in Bezeichnern zulassen.Bei Planung ein Stopp-Bit nach jedem Takt einfÃ¼gen.DatenstÃ¼cke in ihren eigenen Abschnitt legen.Jede Funktion in ihren eigenen Abschnitt platzieren.Gleitkommakonstanten ins TOC legen.Symbol+Offset-Konstanten ins TOC legen.Bitte fÃ¼gen Sie jedem Fehlerbericht die vollstÃ¤ndige Aufrufkette bei.
  Bitte senden Sie einen vollstÃ¤ndigen Fehlerbericht auf Englisch ein;
! inclusive vorverarbeitetem Quellcode (siehe Â»-freport-bugÂ«).
  Bitte senden Sie einen vollstÃ¤ndigen Fehlerbericht auf Englisch ein;
  inclusive vorverarbeitetem Quellcode.
! PluginsZeigerfeld-Komponente der Struktur bei %C muss eine aufgeschobene Form habenZiel der Zeigerzuweisung bei %L hat VektorindexZeiger-Zuweisungsziel darf keine Konstante sein bei %LZeiger-Zuweisungsziel hat PROTECTED-Attribut bei %LZiel der Zeigerzuweisung in Initialisierungsausdruck bei %L muss das TARGET-Attribut habenZeiger-Zuweisungsziel bei %L ist weder TARGET noch POINTERZeiger-Zuweisungsziel ist kein POINTER bei %LZeigerzuweisung mit Vektorindex fÃ¼r rhs bei %LZeiger bei %L in Zeigerzuweisung kÃ¶nnte Zeigerziel Ã¼berdauernDas Zeichenzeiger-Dummy-Argument %qs bei %L muss eine verzÃ¶gerte LÃ¤nge haben, da die Prozedur %qs BIND(C) istZeigerkomponente %s bei %L hat eine Subkomponente als Nicht-Koarray des Type EVENT_TYPE, die eine Kodimension haben muss oder eine Subkomponente eines Koarrays sein mussZeigerkomponente %s bei %L hat eine Subkomponente als Nicht-Koarray des Type LOCK_TYPE, die eine Kodimension haben muss oder eine Subkomponente eines Koarrays sein mussZeigerinitialisierung bei %C benÃ¶tigt %<=>%>, nicht %<=%>Ziel der Zeigerinitialisierung bei %L muss das SAVE-Attribut habenZiel der Zeigerinitialisierung bei %L muss das TARGET-Attribut habenZiel der Zeigerinitialisierung bei %L darf nicht ALLOCATABLE seinZeigerobjekt bei %C darf nicht koindiziert seinZeigerobjekt bei %L darf keinen Koindex habenZuweisung eines Prozedurzeigers bei %LZeigerfeld als effektives Argument bei %L erfordert wegen VOLATILE-Attribut ein Scheinargument %qs mit vermuteter Form oder als ZeigerfeldZeiger sind 32 Bit.Zeiger sind 64 Bit.MÃ¶gliche Richtlinien fÃ¼r Â»-mcompact-branches=Â«:Polymorpher FPTR bei %L fÃ¼r C_F_POINTERPolymorphe Komponente %s bei %L in SEQUENCE oder BIND(C)-Typ %sPolymorphes Listenelement %qs bei %L in %s-Klausel hat unspezifiziertes Verhalten und wird nicht unterstÃ¼tztPolymorphes Skalar wird an Feld-Scheinargument %qs bei %L Ã¼bergebenPolymorphes Subobjekt des koindizierten Objektes bei %LPositive Exponentenbreite benÃ¶tigt in Formatzeichenkette bei %LPositive Breite in Formatspezifizierung %s bei %L erforderlichPositive Breite in Formatzeichenkette bei %L benÃ¶tigtT-Deskriptor benÃ¶tigt positive Breite in Formatzeichenkette bei %LMÃ¶gliche WertÃ¤nderung bei Umwandlung von %s in %s bei %LMÃ¶glicherweise stimmt die ZeichenlÃ¤nge im Funktionsergebnis zwischen %L und %L nicht Ã¼bereinVordefinierter Allokator in ALLOCATOR-Klausel bei %L erforderlich, da das Listenelement %<%s%s%s%> bei %L das Attribut SAVE hatZweige gegenÃ¼ber bedingter AusfÃ¼hrung bevorzugen.Wortzugriffe bevorzugen (statt Bytezugriffen).Vorzugsweise Register reservieren, die kurze Befehle ermÃ¶glichen.Aufrufen von memcpy, memset und memmove ein __asan_ oder __hwasan_ voranstellen, fÃ¼r Â»-fsanitize=kernel-addressÂ« oder Â»-fsanitize=kernel-hwaddressÂ«.Globalen Symbolen ein Â»:Â« voranstellen (fÃ¼r Verwendung mit PREFIX).Nur Direktiven vorverarbeiten.Vorverarbeiten, Kompilieren oder Binden mit der angegebenen C-Laufzeit-DLL-Bibliothek.Vorverarbeiteter Quellcode wurde in Datei %s gespeichert, bitte hÃ¤ngen Sie die an Ihren Fehlerbericht an.
! Bindestapel des PowerPC 476 durch Anpassen eines blr an bcl/bl-Befehle fÃ¼r GOT-Zugriffe beibehalten.Vorgeben, dass branch-around-a-move ein bedingter Sprung ist.Verhindern, dass $fp wÃ¤hrend der Registerallozierung alloziert wird, so dass der Compiler die FP-als-GP-Optimierung durchfÃ¼hren kann.Die Optimierung von Blockkopieraktionen verhindern, was auch das Standardverhalten von Â»-OsÂ« ist.Verwendung aller Gleitkommaoperationen verhindern.Verwendung aller Hardware-Gleitkommabefehle verhindern.Vorherige !$OMP DECLARE REDUCTION bei %LVorherige !$OMP DECLARE REDUCTION von Modul %s bei %LErfasste PrimÃ¤rpfade:%s von %d
  CPU-Feinabstimmung als Kommentar in Assemblerdatei ausgeben. Diese Option wird nur fÃ¼r Regressionstest des Compilers verwendet und ist nicht fÃ¼r den normalen Betrieb vorgesehen.CWE-Identifikatoren fÃ¼r Diagnosemeldungen ausgeben, sofern verfÃ¼gbar.Alle Regeln, die mit Meldungen verbunden sind, ausgeben.Information zur Code-Ãœberdeckung ausgeben.
  
  ZusÃ¤tzliche (mÃ¶glicherweise ungewollte) Warnungen ausgeben.Behebungshinweise in maschinenlesbarer Form ausgeben.Behebungshinweise in vereinheitlichtem Diff-Format auf stderr ausgeben.Hierarchische Vergleiche ausgeben, wenn die Templatetypen nicht zusammenpassen.Den Initialwert der Variablen ausgeben.Namen der Header-Dateien ausgeben, wie sie verwendet werden.Wahrscheinlichkeit, dass die COMDAT-Funktion mit anderer Kompilationseinheit geteilt wird.Wahrscheinliche Ursache: Es wurde darauf verwiesen, ist aber nicht definiert.Prozedur %qs bei %C hat eine explizite Schnittstelle aus einer vorherigen DeklarationProzedur %qs bei %C wurde bereits bei %L definiertProzedur %qs bei %L hat bereits grundlegenden Typen %sProzedur %qs bei %L hat den gleichen Namen wie eine Komponente von %qsProzedur %qs bei %L hat den selben Namen wie eine vererbte Komponente von %qsProzedur %qs bei %L kann nicht grundlegenden Typen %s habenProzedur %qs bei %L muss das BIND(C)-Attribut haben, um mit C interoperabel zu seinProzedur %qs, die bei %L aufgerufen wird, ist nicht explizit deklariertProzedur %qs, die bei %L aufgerufen wird, ist nicht explizit deklariert; meinen Sie %qs?Prozedur %qs mit einer impliziten Schnittstelle bei %L aufgerufenDie Prozedur %qs, die im Interface-KÃ¶rper bei %L definiert ist, passt nicht zu der internen Prozedur bei %CProzedur %qs in %s bei %L hat keine explizite SchnittstelleProzedur %qs in %s bei %L hat keine explizite Schnittstelle; meinen Sie %qs?Prozedur %qs in %s bei %L ist weder Funktion noch SubroutineProzedur %qs in %s bei %L ist weder Funktion noch Subroutine; meinen Sie %qs?Prozedur %qs in PUBLIC-Schnittstelle %qs bei %L nimmt Scheinargumente von %qs, das PRIVATE istProzedur %qs mit PASS bei %L muss mindestens ein Argument habenProzedur %qs mit PASS(%s) bei %L hat kein Argument %qsProzedur %1$qs bei %3$L mit Binde-Marke %2$qs verwenden denselben globalen Bezeichner wie die EntitÃ¤t bei %4$LProzedurargument bei %L ist lokal fÃ¼r PURE-Prozedur und hat das POINTER-AttributProzedurzeiger %qs bei %L darf nicht ELEMENTAL seinProzedurzeiger %qs in %s-Klausel bei %LProzedurzeiger %qs nicht unterstÃ¼tzt mit !$OMP ALLOCATE bei %LProzedur-Zeiger bei %CKomponente %qs des Prozedurzeigers bei %L kann kein Element des BIND(C)-abgeleiteten Typs %qs bei %L seinProzedurzeiger-Komponente %qs mit einer impliziten Schnittstelle bei %L aufgerufenProzedurzeiger-Komponente %qs erfordert eine Argumentliste bei %CProzedurzeiger-Komponente %qs mit PASS bei %L muss mindestens ein Argument habenProzedurzeiger-Komponente %qs mit PASS(%s) bei %L hat kein Argument %qsProzedurzeiger-Komponente bei %CZiel der Zeigerinitialisierung fÃ¼r Prozedur bei %L darf kein Prozedurzeiger seinDem Ergebnis %qs als Prozedurzeiger bei %L fehlt das POINTER-AttributProzedurzeigerziel %qs bei %L muss entweder eine intrinsische Funktion, host- oder use-assoziiert oder referenziert sein, oder aber das EXTERNAL-Attribut habenProzedur als Argument unerwartet#ident-Direktiven verarbeiten.Alle in der Kommandozeile angegebenen Module verarbeiten, aber den Code nur fÃ¼r das im Argument angegebene Modul generieren.Spezifikation (%s, ist Â»%sÂ«) wird verarbeitet
! Einen Mach-O-Dylinker (Dateityp MH_DYLINKER) generieren. Wird nur verwendet, um dyld zu bauen.Eine gemeinsam genutzte Mach-O-Bibliothek (Dateityp MH_DYLIB) generieren, Synonym fÃ¼r Â»-sharedÂ«.Backtrace erzeugen, wenn ein Laufzeitfehler auftritt.Warnung zur Laufzeit erzeugen, wenn ein temporÃ¤res Feld fÃ¼r Prozedurargument erzeugt wurde.Big-Endian-Code erzeugen.Code erzeugen, der zur Laufzeit verschiebbar ist.Little-Endian-Code erzeugen.Erzeugt eine Mach-O-Datei, die fÃ¼r die Verwendung in eingebetteten Systemen / ROMs geeignet ist.Profilinformation in %s ist beschÃ¤digtProgramm befindet sich vollstÃ¤ndig in unteren 64k des Speichers.Programmeinheit bei %L hat OpenMP-GerÃ¤te-Konstrukte/-Routinen, setzt jedoch nicht !$OMP REQUIRES %s, aber andere Programmeinheiten tun dasPC-relative Funktionsaufrufe verbieten.PC-relative SprÃ¼nge verbieten.Verboten in Fortran 2023:Klammern in AusdrÃ¼cken schÃ¼tzen.Bash-VervollstÃ¤ndigung fÃ¼r Optionen anbieten, die mit der angegebenen Zeichenkette beginnen.Bibliotheken fÃ¼r den Simulator bereitstellen.Ungenutze ZustÃ¤nde wÃ¤hrend der Analyse verwerfen.In Ãœberwachungsfunktionen erweiterte Register auf Stapel sichern.Alle lokalen Felder auf dem Stapel anlegen.Alles in regulÃ¤res TOC legen.Sprungtabellen fÃ¼r Â»switchÂ«-Anweisungen in den .data-Abschnitt statt in den .code-Abschnitt einfÃ¼gen.Umgelagerte Nur-Lese-Daten in .data-Abschnitt legen.Uninitialisierte Konstanten im ROM ablegen (benÃ¶tigt Â»-membedded-dataÂ«).Uninitialisierte globale Symbole in gemeinsamen Abschnitt legen.Null-initialisierte Daten in den bss-Abschnitt legen.Der Spezifizierer QUIET bei %L muss ein skalarer LOGICAL seinSpezifizierer QUIET= fÃ¼r %s bei %LRANK (%i) bei %L wird bei %L wiederholtRANK (*) bei %L kann nicht mit dem Zeiger oder dem allozierbaren Selektor bei %L verwendet werdenRANK (*) bei %L wird bei %L wiederholtRANK DEFAULT bei %L wird bei %L wiederholtRE oder IM part_ref bei %CRE-part_ref bei %CREAL-Feld-Index bei %LREAL(KIND=10) ist nicht verfÃ¼gbar fÃ¼r Option %<-fdefault-real-10%>REAL(KIND=10) ist nicht verfÃ¼gbar fÃ¼r Option %<-freal-4-real-10%>REAL(KIND=10) ist nicht verfÃ¼gbar fÃ¼r Option %<-freal-8-real-10%>REAL(KIND=10) ist nicht verfÃ¼gbar fÃ¼r Option %<-freal-8-real-16%>REAL(KIND=16) ist nicht verfÃ¼gbar fÃ¼r Option %<-fdefault-real-16%>REAL(KIND=16) ist nicht verfÃ¼gbar fÃ¼r Option %<-freal-4-real-16%>REAL(KIND=4) ist nicht verfÃ¼gbar fÃ¼r Option %<-freal-8-real-4%>REAL(KIND=8) ist nicht verfÃ¼gbar fÃ¼r Option %<-fdefault-real-8%>REAL(KIND=8) ist nicht verfÃ¼gbar fÃ¼r Option %<-freal-4-real-8%>RECL in OPEN-Anweisung bei %L muss positiv seinRECL-Angabe nicht erlaubt in OPEN-Anweisung bei %L fÃ¼r Datenstrom-Ein-/AusgabeRECORD bei %C ist eine Erweiterung, muss mit %<-fdec-structure%> eingeschaltet werdenRECURSIVE-PrÃ¤fix fehlt in MODULE-PROCEDURE-Schnittstelle bei %LREDUCE-Ortsangabe bei %LREPLACING von %zu Zeichen Ã¼berschreitet die SystemkapazitÃ¤t Â»%sÂ«Die RESULT-Variable %qs bei %L verbietet, dass der FUNCTION-Name %qs bei %C in einer Spezifikationsanweisung auftrittRESULT-Variable bei %C muss vom Funktionsnamen verschieden seinRESULT_DECL should be read only when DECL_BY_REFERENCE is setRETURN-Anweisung im Hauptprogramm bei %CROUND= bei %L ist in Fortran 95 nicht erlaubtInterner Fehler: RTL check: access of elt %d of '%s' with last elt %d in %s, at %s:%dInterner Fehler: RTL check: access of elt %d of vector with last elt %d in %s, at %s:%dInterner Fehler: RTL check: access of hwi elt %d of vector with last elt %d in %s, at %s:%dInterner Fehler: RTL check: attempt to treat non-block symbol as a block symbol in %s, at %s:%dInterner Fehler: RTL check: expected code '%s' or '%s', have '%s' in %s, at %s:%dInterner Fehler: RTL check: expected code '%s', '%s' or '%s', have '%s' in %s, at %s:%dInterner Fehler: RTL check: expected code '%s', have '%s' in %s, at %s:%dInterner Fehler: RTL check: expected elt %d type '%c' or '%c', have '%c' (rtx %s) in %s, at %s:%dInterner Fehler: RTL check: expected elt %d type '%c', have '%c' (rtx %s) in %s, at %s:%dInterner Fehler: RTL flag check: %s used with unexpected rtx code '%s' in %s, at %s:%dRTP PIC ist mit %<-msingle-pic-base%> unvertrÃ¤glichRTP PIC ist mit Thumb unvertrÃ¤glichRTTI wird fÃ¼r diesen Typ nicht funktionierender RVV-Typ %qT kann nur an prototypisierte Funktionen Ã¼bergeben werdender RVV-Typ %qT hat keine definierte Ausrichtungder RVV-Typ %qT hat keine feste GrÃ¶ÃŸeRVV-Typ %qT ist in %<map%>-Klausel nicht erlaubtRVV-Typ %qT ist in %<target%>-%<firstprivate%>-Klausel nicht erlaubtRVV-Typ %qT ist in %<target%>-%<private%>-Klausel nicht erlaubtRVV-Typ %qT ist in %<target%>-GerÃ¤teklauseln nicht erlaubtRX-FPU-Befehle unterstÃ¼tzen keine NaNs und UnendlichkeitenErhÃ¶hung eines negativen REAL bei %L zu einer REAL-Potenz ist verbotenBereichsspezifikation bei %L kann nie passenUnvertrÃ¤gliche RÃ¤nge zwischen Argument bei %L und Argument bei %L (Rang-%d und Rang-%d)UnvertrÃ¤gliche RÃ¤nge zwischen Argument bei %L und Argument bei %L (Rang-%d und skalar)UnvertrÃ¤gliche RÃ¤nge zwischen Argument bei %L und Argument bei %L (skalar und Rang-%d)Unpassender Rang in Argument %qs bei %L (Rang-%d und Rang-%d)Unpassender Rang in Argument %qs bei %L (Rang-%d und Skalar)Unpassender Rang in Argument %qs bei %L (Skalar und Rang-%d)Unpassende RÃ¤nge in Feldreferenz bei %L (%d/%d)Rangabweichung zwischen dem Array bei %L und seinem Initialisierer (%d/%d)Das Umordnen des Rangs erfordert eine Liste von %<untere-Grenze : obere-Grenze%>-Angaben bei %LZiel der Rang-Neuzuordnung ist nicht Rang 1 bei %LZiel der Rang-Neuzuordnung ist kleiner als die GrÃ¶ÃŸe des Zeigers (%ld < %ld) bei %LZiel der Rang-Neuzuordnung muss Rang 1 oder einfach fortlaufend bei %L seinDatei %qs wird in Freiform gelesenModul %qs in Zeile %d, Spalte %d wird gelesen: %sLesen der Spezifikationen von %s
  Reelles COUNT_RATE-Argument fÃ¼r SYSTEM_CLOCK bei %LRealkonstante Ã¼berschreitet seine Art bei %CRealkonstante unterschreitet seine Art bei %CRealzahl bei %C hat einen %<d%>-Exponenten und eine explizite ArtRealzahl bei %C hat einen %<q%>-Exponenten und eine explizite ArtStapel in Prolog neu ausrichten.LHS in Zuweisungen neu reservieren.C++-SchlÃ¼sselworte wie Â»complÂ« und Â»xorÂ« erkennen.GNU-definierte SchlÃ¼sselworte erkennen.Eingebaute Funktionen erkennen.Das Â»asmÂ«-SchlÃ¼sselwort erkennen.DW_AT_decl_column und DW_AT_call_column in DWARF aufzeichnen.GCC-Kommandozeilenschalter in DWARF DW_AT_producer aufzeichnen.GCC-Kommandozeilenschalter in Objektdateien aufzeichnen.Dauer der Teilphasen separat aufzeichnen.Rekursives Klonen nur dann, wenn die Wahrscheinlichkeit, dass der Aufruf ausgefÃ¼hrt wird, den Parameter Ã¼berschreitet.Redefinition von !$OMP DECLARE REDUCTION bei %LRedefinition der vordefinierten !$OMP DECLARE REDUCTION bei %LRedefinition der vordefinierten !$OMP DECLARE REDUCTION Â»%sÂ« bei %LPrioritÃ¤t fÃ¼r r0..r3 / r12..r15 mit TARGET_REGISTER_PRIORITY reduzieren.Stapelausrichtung im Aufrufer reduzieren, wenn mÃ¶glich.Redundantes !$ACC END LOOP bei %CRedundante ACQUIRED_LOCK-Marke bei %L gefundenRedundante ERRMSG-Marke bei %L gefundenÃœberflÃ¼ssige MOLD-Marke bei %L gefundenÃœberflÃ¼ssige SOURCE-Marke bei %L gefundenRedundante STAT-Marke bei %L gefundenRedundante UNTIL_COUNT-Marke bei %L gefundenIndex der Referenzanweisung nicht gefundenIndex der Referenzanweisung auÃŸerhalb des gÃ¼ltigen BereichsReferenz auf Nicht-PURE-Funktion %qs bei %L innerhalb eines DO CONCURRENT %sReferenz auf Nicht-PURE-Funktion %qs bei %L innerhalb eines FORALL %sReferenz auf Nicht-PURE-Funktion %qs bei %L innerhalb einer PURE-ProzedurReferenz auf Nicht-PURE-Funktion bei %L innerhalb eines DO CONCURRENTInterner Fehler: Region crossing jump across same section in bb %iProfilinformation im Abschnitt .gcov_info registrieren, statt einen Konstruktor/Destruktor zu verwenden.Profilinformation im angegebenen Abschnitt registrieren, statt einen Konstruktor/Destruktor zu verwenden.Die cmpxchg-Schleife fÃ¼r atomic_fetch_{or,xor,and,nand} entspannen, indem load und cmp vor cmpxchg eingefÃ¼gt wird, sowie pausieren und zurÃ¼ckspringen zu Laden-und-Vergleichen, wenn der Ladewert nicht der erwartete ist.Literale in Assembler lockern und automatisch in den Â»textÂ«-Abschnitt platzieren.Entlastung des Registerdrucks durch Live-Bereichs-Schrumpfung.Dateinamen beim EinfÃ¼gen von Dateien neu abbilden.Code und Daten, die unerreichbar von jeglichen exportierten Symbolen sind, entfernen (inclusive dem Einstiegspunkt).PrÃ¤fix von absolutem Pfad abschneiden, bevor dieser Name fÃ¼r Â»-fprofile-generate=Â« und Â»-fprofile-use=Â« gemangelt wird.Redundante Membars entfernen.In GCC 10 entfernt. Dieser Schalter hat keine Auswirkung.In GCC 15 entfernt. Dieser Schalter hat keine Auswirkung.In GCC 8 entfernt. Dieser Schalter hat keine Auswirkung.In GCC 9 entfernt. Dieser Schalter hat keine Auswirkung.Â»%sÂ« wird gelÃ¶scht
! Aufruf von unreiner Funktion %qs bei %L wird entferntAufruf von unreiner Funktion bei %L wird entferntUmbenennungsoperatoren in USE-Anweisungen bei %CBasisblÃ¶cke und in heiÃŸe und kalte Abschnitte umordnen und partitionieren.BasisblÃ¶cke umsortieren, um Codeplatzierung zu verbessern.Funktionen umsortieren, um Codeplatzierung zu verbessern.Funktionen, Variablen und asms hÃ¶chster Ebene umordnen.UngÃ¼ltige Wiederholungsangabe in Skalar-Initialisierung bei %CWiederholungsangabe bei %C muss eine Ganzzahl seinAddieren, Vergleichen, Verzweigen mit Verzweigung anhand des ZÃ¤hlregisters ersetzen.VorÃ¼bergehende AusdrÃ¼cke im SSA->Normal-Durchlauf ersetzen.Ãœber Konsistenz des Profils berichten.Ãœber Speicherbelegung vor zwischenprozeduraler Optimierung berichten.Nur in WPA Ã¼ber dauerhafte Speicherreservierung berichten.Ãœber dauerhafte Speicherreservierung berichten.BenÃ¶tigte Zeit fÃ¼r jeden Compilerdurchlauf ausgeben.Nur in WPA verschiedene Statistiken Ã¼ber Bindezeit-Optimierung ausgeben.Verschiedene Statistiken Ã¼ber Bindezeit-Optimierung ausgeben.IEEE-konforme Mathematik-Bibliotheksroutinen (OSF/1) anfordern.Befehle nach Registerbelegung neu planen.Befehle vor Registerbelegung neu planen.Regionen mit Pipelining ohne Pipelining neu planen.Platz fÃ¼r Ausgabeargumente in Funktionsprolog reservieren.Umgeformtes Feld bei %C zu groÃŸInterner Fehler: Residual context countStandard-Strub-Modus wiederherstellen: gemÃ¤ÃŸ Attributen, mit lockerer PrÃ¼fung.Die Analyse auf die PrÃ¼fung mit dem angegebenen Namen einschrÃ¤nken.Verwendung der Hardware-Gleitkomma-Befehle auf 32-Bit-Operationen beschrÃ¤nken.Ergebnis %qs der enthaltenen Funktion %qs bei %L hat keinen IMPLICIT-TypUnpassendes Ergebnis fÃ¼r die Ã¼berschreibende Prozedur %qs bei %L: %sErgebnis von %s ergibt fÃ¼r seine Art einen Bereichsfehler bei %LErgebnis von %s ist NaN bei %LErgebnis von %s Ã¼berschreitet seine Art bei %LErgebnis von %s unterschreitet seine Art bei %LErgebnis von BESSEL_YN ist -INF bei %LErgebnis von NEAREST ist NaN bei %LErgebnis von SCALE Ã¼berschreitet seine Art bei %LPotenzbildung bei %L Ã¼berschreitet Wertebereich von %s8-Byte-Vektoren Ã¼ber Speicher zurÃ¼ckgeben.Signieren der RÃ¼ckgabeadresse wird fÃ¼r %<-mtpcs-frame%> nicht unterstÃ¼tzt.Alle Strukturen Ã¼ber Speicher zurÃ¼ckgeben (AIX-Standard).Gleitkommaergebnisse Ã¼ber ac0 zurÃ¼ckgeben (fr0 in Unix-Assemblersyntax).Zeiger sowohl in a0 als auch in d0 zurÃ¼ckgeben.Kleine Aggregate Ã¼ber Speicher, nicht Register, zurÃ¼ckgeben.Kleine Aggregate Ã¼ber Register zurÃ¼ckgeben.Kleine Strukturen Ã¼ber Register zurÃ¼ckgeben (SVR4-Standard).Unpassender RÃ¼ckgabetyp der Funktion %qs bei %L (%s/%s)RÃ¼ckgabetyp der BIND(C)-Funktion %qs bei %L kann kein Feld seinRÃ¼ckgabetyp der BIND(C)-Funktion %qs von Zeichentyp bei %L muss die LÃ¤nge 1 habenRÃ¼ckgabewert %1$qs der bei %3$L deklarierten Funktion %2$qs nicht gesetztRÃ¼ckgabewert der Funktion %qs bei %L nicht gesetztFunktionswerte Ã¼ber FPU-Register zurÃ¼ckgeben.r30 auf Funktionsbasis wiederverwenden.DIP1000 "Zeiger in GÃ¼ltigkeitsbereichen" rÃ¼ckgÃ¤ngig machen.Aufruf des Teilbefehls Â»rewriteÂ«:SchlieÃŸende Klammer erwartet bei %C in Formatzeichenkette bei %LRechte obere Schranke des Feldabschnitts angenommener GrÃ¶ÃŸe nicht angegeben bei %LNur die zweite Kompilierung von Â»-fcompare-debugÂ« laufen lassen.Vorhersehende vereinheitlichende Optimierung durchlaufen.AusgewÃ¤hlte Planung nach Neuladen durchfÃ¼hren.Selbsttests durchfÃ¼hren, mit dem angegebenen Pfad, um die Testdateien zu finden.Den Bindezeitoptimierer im lokalen Transformationsmodus (LTRANS) laufen lassen.Den Bindezeitoptimierer im Modus Â»komplettes ProgrammÂ« (WPA) laufen lassen.Zwei BefehlskombinationsdurchlÃ¤ufe spÃ¤t in der Durchlaufpipeline ausfÃ¼hren; einen vor der Registerzuweisung und einen danach.Unbekannte Spezifikationsfunktion Â»%sÂ« mit %d Argumenten
  
! Laufzeitname.SAVE-Attribut bei %L kann nicht in einer PURE-Prozedur angegeben werdenSAVE des COMMON-Blocks %qs bei %C ist in einem BLOCK-Konstrukt nicht erlaubtSAVE-Anweisung bei %C folgt umfassender SAVE-AnweisungSCHEDULE-Klausel darf nicht zusammen mit %<inscan%>-REDUCTION-Klausel bei %L verwendet werdenchunk_size der SCHEDULE-Klausel bei %L erfordert einen skalaren INTEGER-AusdruckSELECT-RANK-Anweisung bei %CSELECT TYPE bei %C darf nicht in diesem GÃ¼ltigkeitsbereich vorkommenSELECTED_REAL_KIND ohne Argument %<P%> oder %<R%> bei %LSELF-Klausel bei %L erfordert einen skalaren LOGICAL-AusdruckSEQUENCE-Attribut bei %C bereits in TYPE-Anweisung angegebenSEQUENCE-Anweisung bei %C muss CONTAINS vorausgehenSEQUENCE-Anweisung bei %C muss Strukturkomponenten vorausgehenSH2a unterstÃ¼tzt nicht Little-EndianSHAPE-Argument bei %L fÃ¼r C_F_POINTER muss dieselbe GrÃ¶ÃŸe haben wie der RANK des FPTRSHIFT-Argument (%ld) auÃŸerhalb des Bereichs -%ld:%ld in intrinsischem ISHFTSIZE-Argument (%ld) auÃŸerhalb des Bereichs -%ld:%ld in intrinsischem ISHFTCSHIFT-Argument (%ld) auÃŸerhalb des Bereichs 0:%ld in intrinsischem Â»%sÂ«SIGN= bei %L ist in Fortran 95 nicht erlaubtSIMD-Erweiterungsstufen von LoongArch:SINK-Summand bei %L ist keine konstante GanzzahlSINK bei %C ist nicht als AbhÃ¤ngigkeitsart fÃ¼r diese Direktive erlaubtSIZE-Argument (%ld) auÃŸerhalb des Bereichs 1:%ld in intrinsischem ISHFTCSIZE bei %L muss positiv seinDas Konstrukt !$OMP TILE bei %L erfordert eine SIZES-KlauselSIZES bei %L erfordert konstanten AusdruckSOURCE bei %C ist nicht als AbhÃ¤ngigkeitsart fÃ¼r diese Direktive erlaubtSOURCE-Marke bei %LSOURCE-Marke bei %L steht mit Typspezifikation bei %L in KonfliktSOURCE-Marke bei %L mit mehr als einem reservierbaren ObjektModi fÃ¼r SRAM-ECC und XNACK:SSA-BeschÃ¤digungSSA-Name %qE mit Version %d hat keine DefinitionInterner Fehler: SSA name undeclaredSSA_NAME created in two different blocks %i and %iSSA_NAME_DEF_STMT is wrongSSA_NAME_OCCURS_IN_ABNORMAL_PHI sollte gesetzt seinSSE-Befehlssatz ausgeschaltet, es wird 387-Arithmetik verwendetSSE-Registerargument mit SSE ausgeschaltetSSE-Registerargument mit SSE2 ausgeschaltetSSE-RegisterrÃ¼ckgabe mit SSE ausgeschaltetSSE-RegisterrÃ¼ckgabe mit SSE2 ausgeschaltetSSE-Vektorargument ohne eingeschaltetes SSE Ã¤ndert das ABISSE-VektorrÃ¼ckgabe ohne eingeschaltetes SSE Ã¤ndert das ABIArgument fÃ¼r STAT bei %L muss INTEGER-Typ haben, ist jedoch %sArgument STAT bei %L muss skalar seinSTAT-Angabe bei %L darf keine Konstante seinSTAT-VariableDer Ausdruck von STAT bei %L muss eine Variable seinÂ»STAT=Â«-Argument bei %L muss skalare INTEGER-Variable seinSTAT=-Argument fÃ¼r %s bei %LSTATUS bei %L muss eine Â»INTENT(OUT)Â«-Variable seinSTOP-Code bei %C darf nicht negativ seinSTOP-Code bei %C enthÃ¤lt zu viele ZiffernSTOP-Code bei %L muss eine skalare CHARACTER-Konstante oder Ziffer[Ziffer[Ziffer[Ziffer[Ziffer]]]] seinSTOP-Code bei %L muss eine skalare CHARACTER- oder INTEGER-Konstante seinSTOP-Code bei %L muss Standardzeichentyp KIND=%d seinSTOP-Code bei %L muss Standardganzzahltyp KIND=%d seinSTOP-Code bei %L muss entweder INTEGER- oder CHARACTER-Typ habenSTOP-Code bei %L muss Skalar seinSUBMODULE-Deklaration bei %CSUBMODULE-Deklaration bei %C kann nicht innerhalb eines anderen GÃ¼ltigkeitsbereichs auftretenSUBROUTINE %qs bei %L kann nicht rekursiv aufgerufen werden, da sie nicht RECURSIVE istder SVE-Typ %qT kann nur an prototypisierte Funktionen Ã¼bergeben werdender SVE-Typ %qT hat keine definierte Ausrichtungder SVE-Typ %qT hat keine feste GrÃ¶ÃŸeSVE-Typ %qT ist in %<map%>-Klausel nicht erlaubtder SVE-Typ %qT ist in der %<target%>-%<firstprivate%>-Klausel nicht erlaubtder SVE-Typ %qT ist in der %<target%>-%<private%>-Klausel nicht erlaubtder SVE-Typ %qT ist in %<target%>-GerÃ¤teklauseln nicht erlaubtSYNC-TEAM-Anweisung bei %CSYNC-Anweisung bei %CGleiches effektives Argument mit INTENT(%s)-Argument %qs und INTENT(%s)-Argument %qs bei %L verbundenDasselbe wie %s%s (oder, in negierter Form, %s%s).Dasselbe wie %s%s.Dasselbe wie %s.Das gleiche wie Â»-fassociative-mathÂ« fÃ¼r AusdrÃ¼cke, die Division enthalten.Identisch zu Â»-mA6Â«.Identisch zu Â»-mA7Â«.Das gleiche wie: Â»-mep -mprolog-functionÂ«.Derselbe Bezeichner %qs ist wiederholt angegeben bei %CRegister bei Funktionsaufrufen sichern.TOC fÃ¼r indirekte Aufrufe im Prolog sichern, statt vor jedem Aufruf.Skalares %qs in FORMAT-Marke bei %L ist keine ASSIGNED-VariableSkalarer INTEGER-Ausdruck bei %L erwartetSkalarer PARAMETER in komplexer Konstante bei %C erwartetSkalare EntitÃ¤t bei %L benÃ¶tigtDer Bereichsbeginn bei %L erwartet einen skalaren GanzzahlausdruckDas Bereichsende bei %L erwartet einen skalaren GanzzahlausdruckDie Schrittweite des Bereichs bei %L erwartet einen skalarer GanzzahlausdruckSkalares Objekt %qs bei %L kann nicht ALLOCATABLE seinSkalare Variable %qs hat eine Array-Referenz bei %LScalarization using DIMEN_RANGE unimplementedDer Skalierungsfaktor, der auf die Anzahl der Anweisungen in einem Threadingpfad angewendet wird, der eine SchleifenrÃ¼ckkante kreuzt, wenn er mit max-jump-thread-duplication-stmts verglichen wird.Skalierungsfaktor bei Berechnung der grÃ¶ÃŸten Entfernung, um die ein Ausdruck durch GCSE-Optimierungen verschoben werden kann.Code fÃ¼r die gegebene CPU planen.FÃ¼r angegebene CPU planen.Befehle mit selektivem Planungs-Algorithmus einplanen.Anfang und Ende der Prozedur planen.Begrenzung des Suchraums fÃ¼r den RÃ¼ckwÃ¤rtssprung-Threader.Zweites Argument von %s ist bei %L negativZweites Argument der definierten Zuweisung bei %L muss INTENT(IN)Zweites Argument der Operatorschnittstelle bei %L kann nicht optional seinZweites Argument der Operatorschnittstelle bei %L muss INTENT(IN) seinWeitere Hinweise finden Sie unter Â»%sÂ«.
! SMP-C-Laufzeiten von VxWorks zum Binden auswÃ¤hlen.Codemodell auswÃ¤hlen.Auswahl des Anteils an der HÃ¶chstfrequenz der AusfÃ¼hrungen des Basisblocks in Funktion, vorausgesetzt, der Basisblock wird ausgerichtet.GroÃŸes Speichermodell wÃ¤hlen â€“ 20-Bit-Adressen/-Zeiger.Methode fÃ¼r sdata-Behandlung auswÃ¤hlen.GÃ¼ltigkeitsbereich der signierten RÃ¼ckgabeadressen.Kleines Speichermodell wÃ¤hlen â€“ 16-Bit-Adressen/-Zeiger (Voreinstellung).Ziel-ABI-Variante auswÃ¤hlen.AuswÃ¤hlen, fÃ¼r welche eBPF-ISA-Version der Zielcode generiert wird.Name zum Speichern der Profilingnotizen festlegen.Laufzeitumgebung auswÃ¤hlen.Art der Abdeckungs-Bereinigung auswÃ¤hlen.AuswÃ¤hlen, was bereinigt werden soll.Auswahlausdruck in berechneter GOTO-Anweisung bei %L muss ein skalarer Ganzzahlausdruck seinSelektor bei %L darf nicht NULL() seinSelektor bei %L hat keinen TypSelektor bei %L darf nicht koindiziert seinSelektor in SELECT TYPE bei %C ist keine benannte Variable; associate-name=> verwendetSelektor muss in SELECT TYPE-Anweisung bei %L polymorph seinWÃ¤hlt die Art der Ziel-RL78-Kerne aus (g10/g13/g14). Voreinstellung ist der G14. Wenn angegeben, wird auch die verwendete Hardwaremultiplikation ausgewÃ¤hlt.WÃ¤hlt die zu verwendende Art der Hardware-Multiplikation und -division aus (none/g13/g14).Selbstreferenz im ZeichenlÃ¤ngenausdruck fÃ¼r %qs bei %LSelbstreferenzielles Argument %qs bei %L ist nicht erlaubtSemikolon bei %C muss Anweisung vorausgehenSequenz %s mit gemischten Komponenten in EQUIVALENCE-Anweisung bei %L mit Objekten unterschiedlichen TypsGleitkommaprÃ¤zision von 80387 auf 32 Bit setzen.GleitkommaprÃ¤zision von 80387 auf 64 Bit setzen.GleitkommaprÃ¤zision von 80387 auf 80 Bit setzen.Windows-defines festlegen.Working-Storage-Datenelemente auf den angegebenen Wert setzenFeste Obergrenze fÃ¼r die GrÃ¶ÃŸe jedes Stapelrahmens angeben, in Bytes.Sprungkosten festlegen.Standardzugriff von ModulentitÃ¤ten auf PRIVATE setzen.PrÃ¼fung der AbhÃ¤ngigkeitsentfernung in nicht ausgereifter Planung von eingereihten Befehlen festlegen.Nach eingebauten Mathematikfunktionen errno setzen.ZusÃ¤tzliche Kosten fÃ¼r Speicherzugriff durch den L32R-Befehl festlegen, in Taktzyklen.Ausgabeart des Binders festlegen (wird intern wÃ¤hrend der LTO-Optimierung verwendet).Mindestbreite des linken Randes des Quellcodes angeben, fÃ¼r das Ausgeben des Quellcodes.Name des __fentry__-Symbols festlegen, das beim Betreten der Funktion aufgerufen wird.Name der Hauptroutine fÃ¼r den Debugger festlegen.Namen der ALI-Ausgabedatei setzen (interner Schalter).Name des Abschnitts festlegen, der die mrecord-mcount-Aufrufe aufnimmt.Anzahl der reservierten Bytes fÃ¼r die aufgerufene Funktion auf dem Stapel.Anzahl der zu erzeugenden NOPs vor jeder Befehlsfolge festlegen.Ausgabeformat festlegen.Register festlegen, das den Wert -1 enthÃ¤lt.sizeof(bool) auf 1 festlegen.Start-Adresse der Daten festlegen.Start-Adresse des Programmes festlegen.Die Flags FTZ und DAZ festlegen.PPC_EMB-Bit im ELF-Flags-Header setzen.Sprungkosten fÃ¼r bedingte Sprungbefehle setzen. Angemessene Werte sind kleine, nicht-negative Ganzzahlen. Standard ist 1.Verzweigungskosten auf ungefÃ¤hr die angegebene Anzahl an Befehle setzen.Sprungkosten festlegen.Standard-DoppelprÃ¤zisionsart auf einen 8 Bytes breiten Typen setzen.Standard-Ganzzahlart auf einen 8 Bytes breiten Typen setzen.Standard-Realzahlart auf einen 10 Bytes breiten Typen setzen.Standard-Realzahlart auf einen 16 Bytes breiten Typen setzen.Standard-Realzahlart auf einen 8 Bytes breiten Typen setzen.Wahrscheinlichkeit in Prozent fÃ¼r das eingebaute Â»expectÂ«. Vorgabewert ist 90Â % Wahrscheinlichkeit.MaximalgrÃ¶ÃŸe der fÃ¼r den SDA-Bereich geeigneten Daten festlegen.MaximalgrÃ¶ÃŸe der fÃ¼r den TDA-Bereich geeigneten Daten festlegen.MaximalgrÃ¶ÃŸe der fÃ¼r den ZDA-Bereich geeigneten Daten setzen.HÃ¶chstanzahl der Bytes angeben, die noch im Stapel Ã¼brig sind, bevor ein Trap-Befehl ausgelÃ¶st wird.GrÃ¶ÃŸten Betrag fÃ¼r einzelne StapelvergrÃ¶ÃŸerungsoperation festlegen.HÃ¶chstzahl der parallel ausgefÃ¼hrten Befehle im neuverbundenen Baum festlegen. Bei 0 die zielabhÃ¤ngige Heuristik verwenden.HÃ¶chstzahl der Template-Instanziierungshinweise fÃ¼r einzelne Warnung oder Fehler festlegen.Das Ausgabeobjekt so festlegen, dass beim Laden dyld alle 2-stufigen Namensraum-Informationen ignoriert, und Symbole in der Entdeckungsreihenfolge fÃ¼r geladene Bibliotheken auflÃ¶sen.Adressen des EinhÃ¤ngpunkts im Prolog und Epilog auf TPF_TRACE_PROLOGUE_SKIP_TARGET und TPF_TRACE_EPILOGUE_SKIP_TARGET festlegen. Gleichbedeutend mit Â»-mtpf-trace-hook-prologue-target=TPF_TRACE_PROLOGUE_SKIP_TARGETÂ« und Â»-mtpf-trace-hook-epilogue-target=TPF_TRACE_EPILOGUE_SKIP_TARGETÂ«Ziel-CPU-Typ angeben.Basisverzeichnis zum Speichern der Profildaten setzen. Vorgabe ist das aktuelle Verzeichnis.Adresse der VerfolgungsprÃ¼fung fÃ¼r TPF-EinhÃ¤ngpunkt im Epilog festlegenAdresse der VerfolgungsprÃ¼fung fÃ¼r TPF-EinhÃ¤ngpunkt im Prolog festlegenAdresse des Verfolgungssprungs fÃ¼r TPF-EinhÃ¤ngpunkt im Epilog festlegenAdresse des Verfolgungssprungs fÃ¼r TPF-EinhÃ¤ngpunkt im Prolog festlegenDie Version der RISC-V-ISA-Spezifikation festlegen.Legt die Registerbreite fÃ¼r LP_COUNT fest. MÃ¶gliche Werte sind 8, 16, 20, 24, 28 und 32.Spezifikation %s wird auf '%s' gesetzt
  
! Formspezifikation fÃ¼r reservierbares Skalar bei %CFormen der Operanden bei %L und %L stimmen nicht Ã¼bereinDie Formen von ORDER bei %L und SHAPE bei %L sind unterschiedlichSchlitze gemeinsam verwenden, um verschiedene harte Register zu sichern.Stapel-Schlitze fÃ¼r Ã¼bergelaufene Pseudo-Register gemeinsam verwenden.Gemeinsam genutzte DO-Abbruchmarke %d bei %CBeim Binden Adressreferenzen verkÃ¼rzen.Spaltenzahlen in Diagnose zeigen, wenn verfÃ¼gbar. Standard: Ein.Ereignisse in Systemheadern in den AusfÃ¼hrungspfaden des Analysierers anzeigen.Beim Anzeigen von Quellcode Marker verwenden, um Bereiche des Quellcodes zu markieren.Beim Anzeigen von Quellcode Zeilennummern im linken Rand anzeigen.Linien anzeigen, die zusammenhÃ¤ngende Ereignisse in Diagnosepfaden verbinden.Stapeltiefe der Ereignisse in Pfaden anzeigen.Quellzeile mit Einschaltungszeichen anzeigen, um die Spalte zu kennzeichnen.Teile des Prologs und Epilogs separat an den nÃ¶tigen Stellen erzeugen.Interner Fehler: Simplification errorVereinfachung von SPREAD bei %C ist noch nicht implementiertGrÃ¶ÃŸenbeschrÃ¤nkung fÃ¼r die zu klonenden Aufrufe einschlieÃŸlich der inline-Aufrufe fÃ¼r einen bestimmten Aufrufer.GrÃ¶ÃŸe in Bytes, Ã¼ber der thread-lokale Zusammenfassungen mit Logging-Funktionen statt mit Save/Restore-Paaren instrumentiert werden sollten.GrÃ¶ÃŸe des Arguments %qs des intrinsischen %qs bei %L ist zu klein (%i/%i)GrÃ¶ÃŸe des Arguments %qs des intrinsischen %qs bei %L ist zu klein (%wd/%ld)GrÃ¶ÃŸe des Stapelschutzes, als Zweierpotenz von Bytes ausgedrÃ¼ckt.GrÃ¶ÃŸe der Kacheln fÃ¼r Schleifenblockierung.GrÃ¶ÃŸenoptimierungsstufe: 0:keine 1:vorteilhaft 2:regalloc 3:drop align, Â»-OsÂ«.Die GrÃ¶ÃŸen von ORDER bei %L und SHAPE bei %L sind unterschiedlichBeim Ãœbergeben von variablen Argumenten das Einrichten des RAX-Registers Ã¼berspringen.Bereich fÃ¼r kleine Daten: none, sdata, use.Weiche Grenzen fÃ¼r Anzahl der Speicherzugriffsbefehle pro Befehlsgruppe. SpÃ¤teren Speicherbefehlen, die versuchen, in gleicher Befehlsgruppe zu planen, wird niedrigere PrioritÃ¤t gegeben. Oft hilfreich, um Konflikte von CachebÃ¤nken zu vermeiden. Standard: 1.Entschuldigung, !$ACC DECLARE bei %L ist in einem BLOCK-Konstrukt nicht erlaubtSorry, !$OMP allocate for COMMON block variable %qs at %L not supportedSorry, die Angabe %s bei %L fÃ¼r Feld %qs mit angenommener GrÃ¶ÃŸe wird noch nicht unterstÃ¼tztSorry, Cray-Zeiger und Zeigerziele wie %qs werden nicht unterstÃ¼tzt mit !$OMP ALLOCATE bei %LSorry, EQUIVALENCE-Objekt %qs ist nicht unterstÃ¼tzt mit !$OMP ALLOCATE bei %LSorry, die Angabe LOCAL bei %L fÃ¼r %qs vom abgeleiteten Typ mit Vorgabe-Initialisierer wird noch nicht unterstÃ¼tztSorry, allozierbare/Zeiger-Komponenten in polymorphen (CLASS-)getypten Koarrays bei %L werden nicht unterstÃ¼tztSorry, der koindizierte Zugriff bei %L auf eine unbegrenzt polymorphe Komponente wird nicht unterstÃ¼tztSorry, der koindizierte Zugriff bei %L auf ein unbegrenzt polymorphes Objekt wird nicht unterstÃ¼tztSorry, Listenelement %qs mit allozierbaren Komponenten bei %L wird in der %s-Klausel noch nicht unterstÃ¼tztEntschuldigung; fÃ¼r Image-Set bei %2$L ist nur UnterstÃ¼tzung fÃ¼r Ganzzahl-Art %1$d implementiertSorry, polymorphe Felder werden fÃ¼r firstprivate noch nicht unterstÃ¼tztSorry, das structure-element-Listenelement bei %L in der ALLOCATE-Direktive wird noch nicht unterstÃ¼tztSorry, die Event-Komponente des abgeleiteten Typs bei %L wird noch nicht unterstÃ¼tztSorry, die Lockkomponente des abgeleiteten Typs bei %L wird noch nicht unterstÃ¼tztDie Symbole der GrÃ¶ÃŸe nach sortieren.Die Symbole alphabetisch sortieren.Quell-Ausdruck bei %L und ALLOCATE-Objekt bei %L mÃ¼ssen dieselbe Form habenQuell-Ausdruck bei %L muss skalar sein oder den selben Rang wie das ALLOCATE-Objekt bei %L habenSpezifikationsfunktion %qs bei %L kann nicht RECURSIVE seinSpezifikationsfunktion %qs bei %L kann keine Anweisungsfunktion seinSpezifikationsfunktion %qs bei %L kann keine interne Funktion seinSpezifikationsfunktion %qs bei %L muss PURE seinBit-Breite des unmittelbaren TLS-Versatzes angeben. GÃ¼ltige Werte sind 12, 24, 32, 48.Gibt die Anzahl der Register an, die bei Eintritt und Austritt eines schnellen Interrupts in der zweiten Registerbank gesichert werden.Anzahl der fÃ¼r Interrupthandler zu reservierenden Register.Gibt die Register an, die beim Eintritt und Austritt eines Interrupts gesichert werden.Angabe, ob Interruptfunktionen das Akkumulator-Register sichern und wiederherstellen sollen.Gibt an, ob die Anweisung fence.tso verwendet werden soll.CPU fÃ¼r Codeerzeugungszwecke angeben.CPU fÃ¼r Planzwecke angeben.CPU fÃ¼r Planungszwecke angeben. GÃ¼ltige Argumente sind 700, 7100, 7100LC, 7200, 7300, und 8000.TLS-Dialekt angeben.UNIX-Standard fÃ¼r Predefines und Bindung angeben.Gibt die Datei an, welche die Liste der von LTRANS ausgegebenen Dateien geschrieben wird.FPU-Konfigurationswert von 0 bis 7 angeben; 0 bis 3 sind wie in der FPU-Spezifikation beschrieben, 4 bis 7 entsprechen 0 bis 3.Zu ladendes Plugin angeben.Ausrichtung der Strukturfelder als Standard/natÃ¼rlich angeben.ABI angeben.Bit-Breite des unmittelbaren TLS-Versatzes angeben.Funktion zum Entleeren des Cache angeben.Abfangfunktionsnummer zum Entleeren des Cache angeben.Konfiguration fÃ¼r den mul-Befehl angeben: fast1, fast2 oder slow. Vorgabe ist fast1.Standard-OpenACC-Berechnungsdimensionen angeben.Anzahl der Lese-/Schreibports fÃ¼r n9-/n10-Kerne angeben. Der Wert sollte 3r2w oder 2r1w sein.Angeben, wie auf den Threadzeiger zugegriffen wird.Angeben, wie jeder Kontrollflusspfad, der mit einer Diagnose verbunden ist, ausgegeben werden soll.Angeben, ob Gleitkommahardware verwendet werden sollte.Aufrufkonventionen fÃ¼r Ganzzahl und Gleitkomma angeben.Hauptobjekt fÃ¼r TPF-OS angeben.Maximale Fehlerwiedergabetiefe wÃ¤hrend der rekursiven Diagnose eines Fehlschlags der Constraint-ErfÃ¼llung angeben.Expansionsstrategie fÃ¼r memcpy bei bekannter erwarteter GrÃ¶ÃŸe angeben.Expansionsstrategie fÃ¼r memset bei bekannter erwarteter GrÃ¶ÃŸe angeben.Namen fÃ¼r die Funktion zur vorzeichenbehafteten 32-Bit-Division angeben.Bereich der zu fixierenden Register angeben.PlanungsprioritÃ¤t fÃ¼r Verteilschlitz-beschrÃ¤nkte Befehle angeben.GrÃ¶ÃŸe des .local-Speichers angeben, der fÃ¼r den Stack verwendet wird, wenn die genaue GrÃ¶ÃŸe unbekannt ist.Expansionsstrategie fÃ¼r stringop angeben.Angeben, dass eine externe BLAS-Bibliothek fÃ¼r matmul-Aufrufe mit groÃŸen Feldern verwendet werden sollte.Angeben, dass Backslashes in Zeichenketten ein Fluchtzeichen einleiten.Angeben, dass keine implizite Typisierung erlaubt ist, auÃŸer es wird durch explizite IMPLICIT-Anweisungen Ã¼berschrieben.Angeben, dass der Compiler auf sicheren Code gemÃ¤ÃŸ ARMv8-M-Security-Extensions abzielen soll.ISA angeben, fÃ¼r die gebaut wird: msp430, msp430x, msp430xv2.MCU angeben, fÃ¼r die gebaut wird.Die zu verwendende PTX-ISA-Ziel-Architektur angeben.Die Version der PTX-ISA angeben, die verwendet wird.Gleitkommaformat __fp16 angeben.Strategie zur Adresserzeugung fÃ¼r das Codemodell von ICT-Aufrufen angeben.Strategie zur Adresserzeugung fÃ¼r das Codemodell angeben.Algorithmus, mit dem Symbole und Variablen zur Bindezeit partitioniert werden.Das Codemodell fÃ¼r den Zugriff auf Speicheradressen angeben. Die Angabe von Â»largeÂ« ermÃ¶glicht die Erzeugung von BinÃ¤rdateien mit groÃŸen globalen Offset-Tabellen. Der Vorgabewert ist Â»smallÂ«.Codemodell angeben.Verwendungsrichtlinie fÃ¼r kompakte Verzweigungen angeben.CPU fÃ¼r Pipeline-Modell angeben.FÃ¼r das Programm zu verwendende Speichermodell angeben.Minimale Bitausrichtung von Strukturen angeben. (Veraltet)Das Modell fÃ¼r atomare Operationen angeben.Namen der Ziel-CPU angeben.Namen der Ziel-GPU angeben.Namen der Ziel-Architektur angeben.Name der Gleitkommakonfiguration des Ziels angeben.Namen der Gleitkommahardware/-format des Zielsystems angeben.FÃ¼r PIC-Adressierung zu verwendendes Register angeben.FÃ¼r das Programm zu verwendende Sicherheitsstufe von c-isr fÃ¼r die ganze Datei angeben.Die GrÃ¶ÃŸe jedes Cache-Blocks (muss eine Zweierpotenz zwischen 4 und 512 sein).Die GrÃ¶ÃŸe jedes Interrupt-Vektors (muss 4 oder 16 sein).Die Ziel-CPU auswÃ¤hlen.Typ der Ziel-RX-CPU auswÃ¤hlen.Ziel-Architektur angeben.Gleitkommahardware/-format des Zielsystems angeben.Ziel-Prozessor angeben.Das Register fÃ¼r den Threadzeiger angeben.Art der Hardware-Multiplikation angeben.Schema fÃ¼r thread-lokalen Speicher angeben.Registernummer fÃ¼r Threadzeiger angeben.Software-Gleitkomma-ABI verwenden, gleichbedeutend mit Â»-mabi=2Â«.Software-Gleitkomma-ABI verwenden, gleichbedeutend mit Â»-mabi=2fp+Â«.Angeben, wann ein frÃ¼her Registerzuweisungsdurchlauf aktiviert werden soll. MÃ¶glichkeiten: alle Funktionen, Funktionen, die Zugriff auf groÃŸschrittige Multi-Register-Anweisungen haben, und keine Funktionen.Angeben, wo die kompilierten intrinsischen Module zu finden sind.Speicherbereiche, in den Funktionen abgelegt werden: lower (untere Bereiche), upper (obere), either (beide, platzsparend durchmischt); Vorgabe: lower.Speicherbereiche, in den Variablen abgelegt werden: lower (untere Bereiche), upper (obere), either (beide, platzsparend durchmischt); Vorgabe: lower.Zu verwendendes ABI fÃ¼r Code der Objective-C-Familie und Metadaten angeben.ABI-Art, fÃ¼r die der Code generiert wird: 2, 2fp+.Angeben, welches Schema zum EinfÃ¼gen von NOPs nach der Planung angewendet werden soll.VOLATILE fÃ¼r Coarray-Variable %qs bei %C angegeben, die use-/host-assoziiert istNicht ausgerichtetes 32-Byte AVX-Laden auftrennen.Nicht ausgerichtetes 32-Byte AVX-Speichern auftrennen.Lebensdauer von Induktionsvariablen aufteilen, wenn Schleifen abgerollt werden.Pfade aufteilen, die zu Schleifen-RÃ¼ckkanten fÃ¼hren.Nicht ausgerichtete 8-Byte-Vektor-Bewegungen vor Nach-Bewegungs-Adresserzeugung aufteilen.Breite Typen bereits frÃ¼her in unabhÃ¤ngige Register aufteilen.Breite Typen in unabhÃ¤ngige Register aufteilen.Stapelrahmen grÃ¶ÃŸer als 2G wird fÃ¼r %<-fsplit-stack%> nicht unterstÃ¼tztStapel-Neuausrichtung mit %<__builtin_eh_return%> wird nicht unterstÃ¼tztAnfangs-Ausdruck in DO-SchleifeStat-Variable bei %L muss skalare INTEGER-Variable seinStat-Variable bei %L darf nicht %s innerhalb der gleichen %s-Anweisung seinAnweisung bei %L ist keine gÃ¼ltige Sprungzielanweisung fÃ¼r Sprungziel bei %LAnweisungsfunktion %qs bei %L steht in Konflikt mit FunktionsnameAnweisungsfunktion %qs bei %L ist nicht als effektives Argument erlaubtAnweisungsfunktion %qs bei %L darf weder POINTER- oder ALLOCATABLE-Attribut habenAnweisungsfunktion %qs ist in Zuweisung des Prozedurzeigers bei %L ungÃ¼ltigAnweisungsfunktion %qs erfordert Argumentliste bei %CAnweisungsfunktion bei %CAnweisungsfunktion bei %L darf nicht innerhalb von INTERFACE auftretenAnweisungsfunktion bei %L ist rekursivAnweisungsmarke bei %C ist NullAnweisungsmarke in END CRITICAL bei %C passt nicht zur CRITICAL-MarkeAnweisungsmarke in ENDDO bei %C passt nicht zum DO-LabelAnweisungsmarkenliste in GOTO bei %C kann nicht leer seinAnweisungsmarke in leerer Anweisung bei %LGCC Quad-Precision Math Library (libquadmath) statisch binden.GNU Fortran Hilfsbibliothek (libgfortran) statisch binden.Schrittausdruck in DO-SchleifeSchrittausdruck in DO-Schleife bei %L kann nicht Null seinUntersuchen eines AusfÃ¼hrungspfades bei bestimmten Meldungen stoppen.VorwÃ¤rtswachstum anhalten, wenn die Wahrscheinlichkeit der besten Kante weniger als dieser Schwellwert ist. Verwendet, wenn Profil-RÃ¼ckmeldung verfÃ¼gbar ist.VorwÃ¤rtswachstum anhalten, wenn die Wahrscheinlichkeit der besten Kante weniger als dieser Schwellwert ist. Verwendet, wenn Profil-RÃ¼ckmeldung nicht verfÃ¼gbar ist.Umgekehrtes Wachstum anhalten, wenn die umgekehrte Wahrscheinlichkeit der besten Kante weniger als dieser Schwellwert ist (in Prozent).Alle Argumentregister auf dem Stapelspeicher sichern.Doubles in 64 Bits speichern.Funktionsnamen im Objektcode speichern.Doubles in 32 Bits speichern. Dies ist Standard.Sichert die MDUC-Register in Interrupt-Handlern fÃ¼r die G13-Zielarchitektur.ZusÃ¤tzliche Daten verarbeiten, um in LTO-lokalem Umwandlungsmodus aggressiver zu devirtualisieren.Bei %L darf kein Schritt vorhanden seinSchrittweite sollte fÃ¼r Feldabschnitt in %s-Klausel bei %L nicht angegeben werdenSchrittweiten in Coarray-Index bei %C nicht erlaubtZeichenkettenlÃ¤nge bei %L ist zu groÃŸStrukturkomponente %qs bei %L kann kein EQUIVALENCE-Objekt seinStrukturkonstruktor mit fehlenden optionalen Argumenten bei %CStrukturkonstruktor mit benannten Argumenten bei %CStrukturname %qs bei %C kann nicht der gleiche wie ein intrinsischer Typ seinStrukturname nach RECORD bei %C erwartetStrukturname erwartet in unverschachtelter Strukturdeklaration bei %CStrukturkomponenten-Ausdruck bei %L in %qs-Direktive in deklarativer Direktive nicht zulÃ¤ssig; als Richtlinie, die mit einer ALLOCATE-Anweisung verbunden ist, muss ihr eine ausfÃ¼hrbare Anweisung oder ein OpenMP-Konstrukt vorausgehenStrukturiertes Format, um AbhÃ¤ngigkeitsinformationen auszugeben. UnterstÃ¼tzt ist Â»p1689r5Â«.Unterprogramm %qs bei %L ist INTRINSIC, aber nicht mit intrinsischer Funktion vertrÃ¤glichUnterprogrammaufruf bei %L in Â»DO CONCURRENTÂ«-Block ist nicht PUREUnterprogrammaufruf von %qs bei %L ist nicht PUREUnterprogrammaufruf von %qs in Â»DO CONCURRENTÂ«-Block bei %L ist nicht PUREUnterprogrammaufruf von %qs in FORALL-Block bei %L ist nicht PUREUnterprogrammaufruf des intrinsischen %qs bei %L ist nicht PUREUnterprogrammaufruf von intrinsischem %qs in Â»DO CONCURRENTÂ«-Block bei %L ist nicht PUREUnterprogrammaufruf mit alternativen RÃ¼ckgaben in INITIALIZER-Klausel von !$OMP DECLARE REDUCTION bei %LUnterprogrammaufruf mit alternativen RÃ¼ckgaben in Kombinierer von !$OMP DECLARE REDUCTION bei %LFeldindex bei %L ist oberhalb der Schranke (%ld > %ld) in Dimension %dFeldindex bei %L ist unterhalb der Schranke (%ld < %ld) in Dimension %dTeilzeichenkette bei %L hat LÃ¤nge NullEnd-Index %td der Teilzeichenkette bei %L Ã¼berschreitet ZeichenkettenlÃ¤ngeEnd-Index der Teilzeichenkette bei %L Ã¼berschreitet ZeichenkettenlÃ¤ngeEnd-Index der Teilzeichenkette bei %L ist zu groÃŸEnd-Index der Teilzeichenkette bei %L muss INTEGER-Typ habenEnd-Index der Teilzeichenkette bei %L muss skalar seinAnfangs-Index %td der Teilzeichenkette bei %L muss mindestens 1 seinAnfangs-Index der Teilzeichenkette bei %L ist kleiner als EinsAnfangs-Index der Teilzeichenkette bei %L muss INTEGER-Typ habenAnfangs-Index der Teilzeichenkette bei %L muss skalar seinStart- und Endposition der Teilzeichenkette der Zielspezifikation bei %L mÃ¼ssen konstante AusdrÃ¼cke seinVorschlagen, dass das SchlÃ¼sselwort Â»overrideÂ« fÃ¼r Deklarationen von virtuellen Funktionen verwendet wird, die andere Funktionen Ã¼bersteuern.Die Summe aus Feldrang %d und Korang %d bei %C Ã¼bersteigt die HÃ¶chstanzahl %d an DimensionenSumme des zweiten und dritten Arguments von IBITS Ã¼berschreitet Bit-GrÃ¶ÃŸe bei %LDie Liste der zu bindenden Objekte aus einer Datei liefern, statt aus der Befehlszeile.Eingebaute 3DNow!-Funktionen unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r 512-Bit-Vektoren unterstÃ¼tzen.Eingebaute AES-Funktionen und Codeerzeugung unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r AMX-BF16 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r AMX-COMPLEX unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r AMX-FP16 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r AMX-FP8 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r AMX-INT8 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r AMX-MOVRS unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r AMX-TF32 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r AMX-TILE unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r AMX-TRANSPOSE unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r AVX512VNNI unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r AVX512VP2INTERSECT unterstÃ¼tzen.Eingebaute Athlon-3Dnow!-Funktionen unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r BMI unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r BMI2 unterstÃ¼tzen.C++17-Allozierung von Ã¼berausgerichteten Typen unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r CLDEMOTE unterstÃ¼tzen.CLFLUSHOPT-Befehle unterstÃ¼tzen.CLWB-Befehl unterstÃ¼tzen.Eingebaute CLZERO-Funktionen und Codeerzeugung unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r ENQCMD unterstÃ¼tzen.Eingebaute F16C-Funktionen und Codeerzeugung unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r FMA4 unterstÃ¼tzen.Eingebaute FSGSBASE-Funktionen und Codeerzeugung unterstÃ¼tzen.FXSAVE- und FXRSTOR-Befehle unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r GFNI unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r HRESET unterstÃ¼tzen.PrÃ¤fixe fÃ¼r Hardware-Lock-Auslassung unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r KL unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r LWP unterstÃ¼tzen.Eingebaute Funktion und Codeerzeugung fÃ¼r LZCNT unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX und SSE unterstÃ¼tzen.Eingebaute MMX-Funktionen unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE und SSE2 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2 und SSE3 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3 und SSE4A unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3 und SSSE3 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3 und SSE4.1 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 und SSE4.2 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 und AVX unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX und AVX2 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX und FMA unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX und SHA512 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX und SM3 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX und SM4 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F und AVX512BW unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F und AVX512CD unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F und AVX512DQ unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F und AVX512IFMA unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F und AVX512VBMI unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F und AVX512VL unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 und AVX512F unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 und AVXVNNIINT16 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 und AVXVNNIINT8 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX10.1-512 und AVX10.2 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX10.1-512, AVX10.2 und AMX-AVX512 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F und AVX512-FP16 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F und AVX512BF16 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F und AVX512BITALG unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F und AVX512VBMI2 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F und AVX512VPOPCNTDQ unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 und AVX10.1-256 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 und AVX10.1-512 unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 und AVXIFMA unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 und AVXNECONVERT unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 und AVXVNNI unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 und CMPCCXADD unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MOVDIR64B unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MOVDIRI unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r MOVRS unterstÃ¼tzen.Eingebaute MWAIT- und MONITOR-Funktionen und Codeerzeugung unterstÃ¼tzen.Eingebaute MWAITX- und MONITORX-Funktionen und Codeerzeugung unterstÃ¼tzen.Eingebaute PCLMUL-Funktionen und Codeerzeugung unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r PCONFIG unterstÃ¼tzen.Eingebaute PKU-Funktionen und Codeerzeugung unterstÃ¼tzen.Eingebaute PREFETCHI-Funktionen und Codeerzeugung unterstÃ¼tzen.PREFETCHW-Befehl unterstÃ¼tzen.Eingebaute PTWRITE-Funktionen und Codeerzeugung unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r RAOINT unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r RDPID unterstÃ¼tzen.Eingebaute RDRND-Funktionen und Codeerzeugung unterstÃ¼tzen.RDSEED-Befehl unterstÃ¼tzen.Eingebaute RTM-Funktionen und Codeerzeugung unterstÃ¼tzen.Eingebaute Funktionen und Codegenerierung fÃ¼r SERIALIZE unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r SGX unterstÃ¼tzen.Eingebaute SHA1- und SHA256-Funktionen und Codeerzeugung unterstÃ¼tzen.Eingebaute TBM-Funktionen und Codeerzeugung unterstÃ¼tzen.TLS-Segment grÃ¶ÃŸer als 64K unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r TSXLDTRK unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r UINTR unterstÃ¼tzen.Eingebaute USER_MSR-Funktionen und Codeerzeugung unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r VAES unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r VPCLMULQDQ unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r WAITPKG unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r WBNOINVD unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r WIDEKL unterstÃ¼tzen.Eingebaute Funktionen und Codeerzeugung fÃ¼r XOP unterstÃ¼tzen.XSAVE- und XRSTOR-Befehle unterstÃ¼tzen.XSAVEC-Befehle unterstÃ¼tzen.XSAVEOPT-Befehl unterstÃ¼tzen.XSAVES- und XRSTORS-Befehle unterstÃ¼tzen.Ausrichtungen von bis zu 64 Bits unterstÃ¼tzen.Die Befehle amcas[_db].{b/h/w/d} unterstÃ¼tzen.Die Befehle am{swap/add}[_db].{b/h} unterstÃ¼tzen.Aufrufe zwischen Thumb- und ARM-BefehlssÃ¤tzen unterstÃ¼tzen.Codegenerierung fÃ¼r APX-FunktionalitÃ¤t unterstÃ¼tzen, einschlieÃŸlich EGPR, PUSH2POP2, NDD, PPX, NF, CCMP und ZU.Codeerzeugung von Advanced-Bit-Manipulation-Befehle (ABM) unterstÃ¼tzen.Codeerzeugung von cmpxchg16b-Befehlen unterstÃ¼tzen.Codeerzeugung von crc32-Befehlen unterstÃ¼tzen.Codeerzeugung von movbe-Befehlen unterstÃ¼tzen.Codeerzeugung von popcnt-Befehlen unterstÃ¼tzen.Codeerzeugung von sahf-Befehlen in 64-Bit x86-64-Code unterstÃ¼tzen.Die Befehle div.w[u] und mod.w[u] fÃ¼r Eingaben ohne Vorzeichenerweiterung unterstÃ¼tzen.Dynamische Initialisierung thread-lokaler Variablen in anderer Ãœbersetzungseinheit unterstÃ¼tzen.Flag-erhaltende Add-Carry-Befehle unterstÃ¼tzen.UnterstÃ¼tzung fÃ¼r das A-Argument bei %L, das ein polymorphes A-Argument ist oder allozierbare Komponenten hat, ist noch nicht implementiertUnterstÃ¼tzung fÃ¼r das A-Argument bei %L mit allozierbaren Komponenten ist noch nicht implementiertDie Befehle frecipe.{s/d} und frsqrte.{s/d} unterstÃ¼tzen.Altes Multi-Threading unterstÃ¼tzen.Message-Passing mit der Parallel Environment unterstÃ¼tzen.Mehr als 8192 GOT-EintrÃ¤ge auf ColdFire unterstÃ¼tzen.Multi-Threading unterstÃ¼tzen.Synchrone Nicht-Aufruf-Ausnahmen unterstÃ¼tzen.UnterstÃ¼tzte RÃ¼ckgabeadress-Signierbereiche fÃ¼r AArch64 (fÃ¼r die Option Â»-msign-return-address=Â«):UnterstÃ¼tzte ABIs (fÃ¼r Verwendung mit der Option Â»-mabi=Â«):UnterstÃ¼tzte ISA-Spezifikationen (fÃ¼r Verwendung mit der Option Â»-misa-spec=Â«):UnterstÃ¼tzte LTO-Kompressionsalgorithmen: zlibAusgabe von Adressen in Fehlersuch-AuszÃ¼gen unterdrÃ¼cken.Ausgabe von Befehlszahlen, Zeilennummernangaben und Adressen in Fehlersuch-AuszÃ¼gen unterdrÃ¼cken.Ausgabe der vorigen und nÃ¤chsten Befehlsnummern in Fehlersuch-AuszÃ¼gen unterdrÃ¼cken.Warnungen unterdrÃ¼cken.ARM/Thumb-Modus pro Funktion abwechselnd an- und ausschalten, um den Compiler zu testen.MIPS16 ASE bei abwechselnden Funktionen fÃ¼r Compilertest ein-/ausschalten.Die Option Â»-mstack-guardÂ« ausschalten.Die Option Â»-mstack-sizeÂ« ausschalten.Symbol %qs bereits deklariertSymbol %qs bei %C bereits deklariertSymbol %qs bei %C ist bereits bei %L als ein Typ deklariertSymbol %qs bei %C wurde bereits mit Host verbundenSymbol %qs bei %C hat keinen IMPLICIT-TypSymbol %qs bei %C wurde vorher noch nicht definiertSymbol %qs bei %C ist USE-verbunden von Modul %qs und kann daher nicht in COMMON vorkommenSymbol %qs bei %C ist bereits in einem COMMON-BlockSymbol %qs bei %C ist mehrdeutigSymbol %qs bei %C muss ein NAMELIST-Gruppenname seinSymbol %qs bei %L hat bereits eine explizite SchnittstelleSymbol %qs bei %L hat bereits grundlegenden Typen %sSymbol %qs bei %L kann keinen Typen habenSymbol %qs bei %L steht mit Symbol aus Modul %qs in Konflikt, verbunden durch Verwendung bei %LSymbol %qs bei %L steht mit Umbenennungs-Symbol bei %L in KonfliktSymbol %qs bei %L steht mit Symbol bei %L in KonfliktSymbol %qs bei %L hat keinen IMPLICIT-TypSymbol %qs bei %L hat keinen IMPLICIT-Typ; meinen Sie %qs?Symbol %qs bei %L hat das Attribut WEAK, ist aber ein ScheinargumentSymbol %qs bei %L hat das Attribut WEAK, ist aber eine lokale VariableSymbol %qs bei %L ist mehrdeutigDas Symbol %qs bei %L ist in einer BLOCK-DATA-Programmeinheit deklariert, befindet sich aber nicht in einem COMMON-BlockSymbol %qs bei %L ist als PRIVATE markiert, aber wurde mit Bindung %qs markiertDas Symbol %qs hat gemischte Komponenten- und Nicht-Komponenten-Zugriffe bei %LSymbol %qs in COMMON bei %C kann kein POINTER-Feld seinSymbol %qs in COMMON bei %C kann kein Kofeld seinSymbol %qs in Namensliste %qs bei %C muss deklariert sein, bevor die Namensliste deklariert wird.Symbol %qs in Namensliste %qs ist INTENT(IN) bei %CSymbol %qs wird bei %L verwendet, bevor es typisiert wirdSymbol %qs muss ein PARAMETER in DATA-Anweisung bei %C seinSymbol %qs tritt bei %L sowohl in der FROM- als auch in der TO-Klausel aufSymbol %qs tritt bei %L sowohl in der DATA- als auch in der MAP-Klausel aufSymbol %qs bei %L in mehreren Klauseln vorhandenBei %2$L referenziertes Symbol %1$qs nicht im Modul ISO_C_BINDING gefundenBei %2$L referenziertes Symbol %1$qs nicht im intrinsischen Modul ISO_FORTRAN_ENV gefundenBei %2$L referenziertes Symbol %1$qs nicht im Modul %3$qs gefundenSymbol %qs in COMMON-Block %qs bei %C wird indirekt verglichen mit anderem COMMON-Block %qsSymbol bei %C passt nicht zu einem AusdruckSymbol bei %L ist keine ScheinvariableSynonym fÃ¼r Â»-export-dynamicÂ« fÃ¼r Binder-Versionen, die dies unterstÃ¼tzen.Synonym fÃ¼r Â»image_baseÂ«.Synonym fÃ¼r Â»-WcommentÂ«.Synonym fÃ¼r Â»-gnatk8Â«.Syntaxfehler in Â»!$ACC DECLAREÂ«-Liste bei %CSyntaxfehler in Â»!$ACC ROUTINE ( NAME )Â« bei %CSyntaxfehler in !$ACC ROUTINE ( NAME ) bei %C, hinter NAME wird %<)%> erwartetSyntaxfehler in Â»!$OMP DECLARE TARGETÂ«-Liste bei %CSyntaxfehler in !$OMP THREADPRIVATE Liste bei %CSyntaxfehler in !GCC$ ATTRIBUTES-Anweisung bei %CSyntaxfehler in !GCC$-IVDEP-Direktive bei %CSyntaxfehler in !GCC$-NOVECTOR-Direktive bei %CSyntaxfehler in !GCC$-UNROLL-Direktive bei %CSyntaxfehler in !GCC$-VECTOR-Direktive bei %CSyntaxfehler in Anweisung %s bei %CSyntaxfehler in ABSTRACT INTERFACE-Anweisung bei %CSyntaxfehler in ASYNCHRONOUS-Anweisung bei %CSyntaxfehler in AUTOMATIC-Anweisung bei %CSyntaxfehler in CASE-Spezifikation bei %CSyntaxfehler in CHARACTER-Deklaration bei %CSyntaxfehler in CLASS IS-Spezifikation bei %CSyntaxfehler in COMPLEX-Konstante bei %CSyntaxfehler in ELSE-IF-Anweisung nach %LSyntaxfehler in ENUMERATOR-Definition bei %CSyntaxfehler in EQUIVALENCE-Anweisung bei %LSyntaxfehler in FORALL-Iterator bei %CSyntaxfehler in E/A-Iterator bei %CSyntaxfehler in IF-Klausel nach %CSyntaxfehler in IF-Ausdruck bei %CSyntaxfehler in IMPORT-Anweisung bei %CSyntaxfehler in NAME=-Spezifikation fÃ¼r Bindungsmarke bei %CSyntaxfehler in OpenACC-Ausdrucksliste bei %CSyntaxfehler in OpenMP-Â»SINKÂ«-AbhÃ¤ngigkeitstypliste bei %CSyntaxfehler in OpenMP-detach-Klausel bei %CSyntaxfehler in OpenMP-Ausdrucksliste bei %CSyntaxfehler in OpenMP-Variablenliste bei %CSyntaxfehler in PROCEDURE-Anweisung bei %CSyntaxfehler in PROTECTED-Anweisung bei %CSyntaxfehler in RANK-Spezifikation bei %CSyntaxfehler in SAVE-Anweisung bei %CSyntaxfehler in STATIC-Anweisung bei %CSyntaxfehler in SUBMODULE-Anweisung bei %CSyntaxfehler in SUBSTRING-Spezifikation bei %CSyntaxfehler in TYPE IS-Spezifikation bei %CSyntaxfehler in VALUE-Anweisung bei %CSyntaxfehler in VOLATILE-Anweisung bei %CSyntaxfehler in anonymer Struktur-Deklaration bei %CSyntaxfehler in Argumentliste bei %CSyntaxfehler in Feldkonstruktor bei %CSyntaxfehler in ZeichenlÃ¤ngenangabe bei %CSyntaxfehler im allgemeinen Blocknamen bei %CSyntaxfehler in Daten-Deklaration bei %CSyntaxfehler in Ausdruck bei %CSyntaxfehler in allgemeiner Spezifikation bei %CSyntaxfehler in Iterator bei %CSyntaxfehler in geschachtelter Struktur-Deklaration bei %CSyntaxfehler in Initialisierung im alten Stil von %s bei %CSyntaxfehler in Initialisierungsliste im alten Stil bei %CSyntaxfehler in Prozedurzeiger-Komponente bei %CSyntaxfehler: Nachfolgender Ãœberschuss in END INTERFACE-Anweisung bei %CSyntaxfehler: Nachfolgender Ãœberschuss in INTERFACE-Anweisung bei %CTARGET DATA muss mindestens eine der Klauseln MAP, USE_DEVICE_PTR, or USE_DEVICE_ADDR enthalten, bei %LTARGET ENTER DATA mit Zuordnungstyp auÃŸer TO, TOFROM oder ALLOC an MAP-Klausel bei %LTARGET EXIT DATA mit Zuordnungstyp auÃŸer FROM, TOFROM, RELEASE oder DELETE an MAP-Klausel bei %LTARGET%s mit Zuordnungstyp auÃŸer TO, FROM, TOFROM oder ALLOC an MAP-Klausel bei %LÂ»TEAM NUMBERÂ«-Argument fÃ¼r FORM TEAM bei %L muss skalares INTEGER seinArgument TEAM bei %L muss vom TEAM_TYPE des intrinsischen Moduls ISO_FORTRAN_ENV sein, ist jedoch %sArgument TEAM bei %L muss skalar seinTEAM-Argument bei %L fÃ¼r die intrinsische TEAM_NUMBER muss vom Typ TEAM_TYPE seinTEAM-Argument fÃ¼r %qs bei %L muss ein skalarer Ausdruck vom Typ TEAM_TYPE seinArgument TEAM_NUMBER bei %L muss vom Typ INTEGER sein, ist jedoch %sArgument TEAM_NUMBER bei %L muss skalar seinÂ»TEAM_NUMBER=Â« nicht unterstÃ¼tzt bei %CTHREADPRIVATE-Objekt %qs in %s-Klausel bei %LTHREADPRIVATE-Objekt %qs in SHARED-Klausel bei %LTILE-Konstruktion bei %L erzeugt %d Schleifen mit kanonischer Form, aber %d Schleifen werden benÃ¶tigtTILE bei %L erfordert konstanten AusdruckZu verwendende TLS-Dialekte:TLS ist fÃ¼r GCN nicht implementiert.TODO: als typgebunden definierte Zuweisung(en) bei %L nicht durchgefÃ¼hrt, da Feldreferenzen mit mehreren Teilen in AusdrÃ¼cken als Zwischenergebnisse auftreten wÃ¼rden.TODO: unlimited polymorphic MOLD in TRANSFER intrinsic at %LTOPOS-Argument (%ld) auÃŸerhalb des Bereichs 0:%d in intrinsischem MVBITSTOPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsischem MVBITSTYPE IS bei %L Ã¼berlappt sich mit TYPE IS bei %LTYPE mit intrinsischer Typspezifikation bei %CBinder-Lockerungen ausnutzen, um die Anzahl der Befehle zu reduzieren, die fÃ¼r das Materialisieren von Symboladressen verwendet werden.%s von %d Zweigen mindestens einmal genommen
  Akzeptiert zwei durch Komma getrennte nichtnegative ganze Zahlen. Die erste Zahl gibt an, wie viele Zwei-Byte-NOP-Befehle vor der Funktionssprungmarke eingefÃ¼gt werden. Die zweite Zahl gibt an, wie viele HalbwÃ¶rter nach der Funktionssprungmarke mit NOP-Befehlen aufgefÃ¼llt werden. Es werden immer die grÃ¶ÃŸtmÃ¶glichen NOP-Befehle (6, 4 oder 2 Bytes) verwendet. Die Angabe von Â»0,0Â« schaltet das Hotpatching aus.Zum Absenken einer Anweisung nÃ¶tige relative AusfÃ¼hrungsfrequenz des Ziel-Blocks (in Prozent).Zielausdruck in Zeigerzuweisung bei %L muss ein Zeigerergebnis liefernZiel hat separates I&D.Ziel fÃ¼r neue Rangabbildung ist zu klein (%ld < %ld)Auf AM33-Prozessor abzielen.Auf AM33/2.0-Prozessor abzielen.Auf AM34-Prozessor abzielen.Code fÃ¼r die FT32B-Architektur erzeugen.Auf den Software-Simulator abzielen.Ziel: %s
! DCE mitteilen, dass ungenutzte C++-Allokationen entfernt werden.DSE mitteilen, dass der Speicher fÃ¼r ein C++-Objekt tot ist, wenn der Konstruktor anfÃ¤ngt und wenn der Destruktor aufhÃ¶rt.Die Option %<-mfloat128%> wird mÃ¶glicherweise nicht vollstÃ¤ndig unterstÃ¼tztArgument %s bei %L hat Typ Â»%sÂ«, aber die Funktion, die bei %L als OPERATION Ã¼bergeben wurde, gibt Â»%sÂ« zurÃ¼ckDie %1$s-Direktive bei %3$L darf nicht innerhalb einer %2$s-Region angegeben werdenDas A-Argument bei %L von CO_REDUCE darf nicht polymorph seinArgument A bei %L des intrinsischen %s darf keinen Koindex habenDas Feld-Argument bei %L von REDUCE darf nicht polymorph seinDas AUTOMATIC-Objekt %qs bei %L darf kein SAVE-Attribut haben und dard auch keine Variable im main-Programm, einem Modul oder einem Teilmodus sein (F08/C513)Die CHARACTER-Elemente des Feldkonstruktors bei %L mÃ¼ssen dieselbe LÃ¤nge haben (%ld/%ld)Der DEFAULT CASE bei %L kann nicht von zweitem DEFAULT CASE bei %L gefolgt werdenDas Argument Â»DIMÂ« bei %L muss ganzzahlig und skalar seinDas DISTANCE-Argument darf in intrinsischer Routine bei %L nicht zusammen mit COARRAY- oder DIM-Argument angegeben werdenDas FORALL mit Index %qs wird nicht auf der linken Seite der Zuweisung bei %L verwendet und kÃ¶nnte somit mehrere Zuweisungen an dieses Objekt auslÃ¶senDie FROM- und TO-Argumente bei %L verletzen die Aliasing-BeschrÃ¤nkungen (F2003 12.4.1.7)Die FROM- und TO-Argumente des intrinsischen MOVE_ALLOC bei %L mÃ¼ssen den selben Ko-Rang %d/%d habenDie FROM- und TO-Argumente des intrinsischen MOVE_ALLOC bei %L mÃ¼ssen den selben Rang %d/%d habenDas FROM-Argument fÃ¼r MOVE_ALLOC bei %L darf keinen Koindex habenDas Formatspezifikationssymbol H bei %L ist eine in Fortran 95 entfernte BesonderheitHollerith-Konstante bei %L wird bei der Umwandlung in %qs abgeschnittenDas IDENTITY-Argument bei %L muss, falls vorhanden, ein Skalar mit demselben Typ wie ARRAY seinDas INTENT(OUT)-Scheinargument %qs bei %L hat ASSUMED SIZE und kann damit keine Standardinitialisierung habenDer KIND-Parameter %qs bei %C darf weder ASSUMED noch DEFERRED seinDer KIND-Parameter %qs im PDT-Konstruktor bei %C hat keinen WertDie KIND part_ref bei %C kann nur auf einen Ausdruck von intrinsischem Typ angewendet werdenDie LEN part_ref bei %C kann nur auf einen CHARACTER-Ausdruck angewendet werdenDas MASK-Argument bei %L muss, falls vorhanden, ein logisches Feld mit demselben Rang wie ARRAY seinDas NULL im Strukturkonstruktor bei %L wird auf Komponente %qs angewandt, die aber weder ein POINTER noch ein ALLOCATABLE istDas Argument ORDERED bei %L muss, falls vorhanden, logisch und skalar seinDie RE oder IM part_ref bei %C kann nur auf einen COMPLEX-Ausdruck angewendet werdenDie mÃ¶glichen RVV-LMUL (-mrvv-max-lmul=):Der SELECT-RANK-CASE-Ausdruck bei %C muss eine skalare, ganzzahlige Konstante seinDer SELECT-RANK-Selektor bei %C muss eine angenommene Rangvariable seinDas SHAPE-Feld fÃ¼r das intrinsische RESHAPE bei %L hat den negativen Wert %d fÃ¼r die Dimension %dDer STATUS, der in der OPEN-Anweisung bei %L angegeben ist, kann nicht den Wert SCRATCH haben, wenn ein FILE angegeben istDer STATUS, der in der OPEN-Anweisung bei %L angegeben ist, ist %qs, es gibt jedoch keine dazu passende FILE-AngabeDas TO-Argument fÃ¼r MOVE_ALLOC bei %L darf keinen Koindex habenDie TO-Argumente in MOVE_ALLOC bei %L mÃ¼ssen polymorph sein, wenn FROM polymorph istDer absolute Wert von SHIFT bei %L muss kleiner oder gleich BIT_SIZE(%qs) seinDer absolute Wert von SHIFT bei %L muss kleiner oder gleich SIZE bei %L seinDas reservierbare Objekt %qs bei %L muss eine explizite Funktionsschnittstelle haben oder als Feld deklariert seinDas ALLOCATE-Objekt bei %L und der Quellausdruck bei %L mÃ¼ssen Typparameter der gleichen Art habenDie Argumentlistenfunktionen %%VAL, %%LOC oder %%REF bei %L sind in diesem Kontext nicht erlaubtArgument des intrinsischen RANK bei %L muss ein Datenobjekt seinDie Zuweisung zu einer KIND- oder LEN-Komponente eines parametrisierten Typs bei %L ist nicht erlaubtDer assoziierte Name %s mit einem angenommenen Rangziel bei %L muss eine Bounds-Remapping-Liste haben (Liste von lbound:ubound fÃ¼r jede Dimension)Das angenommene Rangdaten-Ziel bei %L muss zusammenhÃ¤ngend seinDas Ziel vermuteten Ranges bei %C muss zusammenhÃ¤ngend seinDas angenommene Rangziel bei %L ist ein experimentelles Merkmal von F202y. Verwenden Sie die Option Â»-std=f202yÂ« zum EinschaltenDas Feld %qs bei %L mit vermutetem Rang darf keine Kodimension habenDas Feld vermuteten Ranges bei %C darf keine Kodimension habenFeld mit vermutetem Rang bei %L erfordert Scheinargument %qs mit vermutetem RangDas Scheinargument %qs mit angenommener GrÃ¶ÃŸe wird bei %L an ein Scheinargument %qs mit angenommenem Rang Ã¼bergebenDer Basisname bei %L passt nicht zum Namen der aktuellen ProzedurDer Basisname bei %L darf kein generischer Name seinDer Basisname bei %L darf kein Prozedurzeiger seinDer Basisname bei %L darf kein Eintragsname seinDer Basisname fÃ¼r %<declare variant%> bei %L muss angegeben werdenDie Basisprozedur bei %L muss eine explizite Schnittstelle habenDie Bounds-Remapping-Liste bei %C ist eine experimentelle F202y-Funktion. Verwenden Sie Â»-std=f202yÂ« zum AktivierenDer Fehler ist nicht reproduzierbar, daher handelt es sich wahrscheinlich um ein Problem mit der Hardware oder dem Betriebssystem.
! Zeichenkonstante bei %L wird bei der Umwandlung in %s abgeschnittenDie ZeichenlÃ¤nge des %s-Arguments bei %L und die der Argumente fÃ¼r die OPERATION bei %L muss dieselbe seinDie ZeichenlÃ¤nge des %s-Arguments bei %L und die des Funktionsergebnisses fÃ¼r die OPERATION bei %L muss dieselbe seinCodemodell-Optionsnamen fÃ¼r Â»-mcmodelÂ«:Die Optionsnamen fÃ¼r Codemodelle fÃ¼r Â»-mexplicit-relocsÂ«:Die Komponente bei %C, die in der Typparameterliste bei %L erscheint, hat weder KIND- noch LEN-AttributDie Komponente bei %C, die ein Typparameter ist, muss ein Skalar seinDie Komponente bei %C mit KIND- oder LEN-Attribut erscheint nicht in der Typparameterliste bei %LDas data-target bei %L ist ein Objekt von angenommenem Rang, daher muss das data-pointer-object %s eine Liste zur Neuzuordnung der Grenzen haben (Liste von lbound:ubound fÃ¼r jede Dimension)Der Vorgabewert (und das Gegenteil von Â»-staticÂ«), wird implizit von ausfÃ¼hrbaren Dateien, gemeinsam genutzten Bibliotheken und BÃ¼ndeln verwendet.Der Nenner n des Bruches 1/n der AusfÃ¼hrungshÃ¤ufigkeit der zu klonenden aufgerufenen Funktion fÃ¼r einen bestimmten Aufrufer. Der spezielle Wert 0 bedeutet, dass immer ohne Cut-Off geklont wird.Der Nenner n des Bruchteils 1/n der AusfÃ¼hrungshÃ¤ufigkeit des Eingangsblocks einer Funktion, den ein Basisblock dieser Funktion mindestens haben muss, um als heiÃŸ zu gelten.Der Nenner n des Bruchteils 1/n der maximalen AusfÃ¼hrungsanzahl eines Basisblocks im gesamten Programm, den ein Basisblock mindestens haben muss, um als heiÃŸ zu gelten (im Nicht-LTO-Modus verwendet).Der Nenner n des Bruchteils 1/n der Anzahl der profilierten DurchlÃ¤ufe des gesamten Programms, unter dem die AusfÃ¼hrungszahl eines Grundblocks liegen muss, damit der Grundblock als unwahrscheinlich angesehen wird.Der abgeleitete Parameter %qs bei %C hat keinen VorgabewertDer abgeleitete Typ %qs bei %L hat Typ %qs, der nicht definiert wurdeAuf dem GerÃ¤t befindet sich der Abschnitt .rodata im RAM-Bereich.Die Ã¤lteste macOS-Version, auf der dieses Programm laufen wird (fÃ¼r den Assembler formatiert).Die Ã¤lteste macOS-Version, auf der dieses Programm laufen wird.Das Element im Strukturkonstruktor bei %L fÃ¼r Zeigerkomponente %qs sollte ein POINTER oder ein TARGET seinDas Element im Strukturkonstruktor bei %L fÃ¼r Zeigerkomponente %qs ist %s, sollte aber %s seinDie Ã„quivalenzmenge fÃ¼r %qs bewirkt eine ungÃ¼ltige Erweiterung fÃ¼r COMMON %qs bei %LDie Ã„quivalenzmenge fÃ¼r bei %2$L deklarierte Variable %1$qs verletzt AusrichtungsanforderungenDas Argument Â»errmsg=Â« bei %L muss eine standardartige Zeichenvariable seinDas Ereignishandle bei %L darf kein Element eines Feldes seinDas Ereignishandle bei %L darf nicht Teil eines abgeleiteten Typs oder einer abgeleiteten Klasse seinEvent-Variable bei %L darf nicht koindiziert seinInterner Fehler: The file pointer should not be nullDie folgenden Optionen sind sprachunabhÃ¤ngigDie folgenden Optionen sind sprachbezogenDie folgenden Optionen sind nicht dokumentiertDie folgenden Optionen sind nur spezifisch fÃ¼r die Sprache Die folgenden Optionen werden von der Sprache unterstÃ¼tzt Die folgenden Optionen sind zielspezifischDie folgenden Optionen steuern Warnmeldungen des CompilersDie folgenden Optionen steuern OptimierungenDie folgenden Optionen steuern ParameterDie folgenden Optionen verwenden gemeinsame ArgumenteDie folgenden Optionen verwenden separate ArgumenteDie Funktion, die bei %L als OPERATION Ã¼bergeben wurde, hat Argumente vom Typ Â»%sÂ« und Â»%sÂ«, muss aber Typ Â»%sÂ« habenDie Funktion, die bei %L als OPERATION Ã¼bergeben wird, muss Argumente haben, die skalar, nichtallozierbar und keine Zeiger sind, ebenso der RÃ¼ckgabewertDie Funktion, die bei %L als OPERATION Ã¼bergeben wird, muss das ASYNCHRONOUS-Attribut entweder fÃ¼r keins oder fÃ¼r beide Argumente habenDie Funktion, die bei %L als OPERATION Ã¼bergeben wird, muss das TARGET-Attribut entweder fÃ¼r keins oder fÃ¼r beide Argumente habenDie Funktion, die bei %L als OPERATION Ã¼bergeben wird, muss das VALUE-Attribut entweder fÃ¼r keins oder fÃ¼r beide Argumente habenDie Funktion, die bei %L als OPERATION Ã¼bergeben wird, muss zwei Argumente habenDie Funktion, die bei %L als OPERATION Ã¼bergeben wird, darf bei keinem der Argumente das OPTIONAL-Attribut habenFunktionsergebnis auf der linken Seite der Zuweisung bei %L muss Zeiger-Attribut haben.Interner Fehler: The given type is NULL, and that is just not fairInterner Fehler: The given type is not a declaration or a TYPEDie ideale Breite der vom Analysierer erzeugten Textdiagramme in Zeichen.Das intrinsische %qs bei %L ist nicht im ausgewÃ¤hlten Standard enthalten, aber %s und %qs werden wie mit EXTERNAL deklariert behandelt. Passende Option %<-std=%> verwenden oder %<-fall-intrinsics%> definieren, um dies zuzulassen.Das bei %2$L deklarierte INTRINSIC %1$qs ist in den derzeitigen Standardeinstellungen nicht verfÃ¼gbar, auÃŸer %3$s. Entsprechende Option %<-std=*%> verwenden, oder %<-fall-intrinsics%> einschalten, um es zu verwenden.Das intrinsische NULL kann nicht als Quellausdruck bei %L verwendet werdenBei %C darf das am weitesten links stehende part-ref in einem data-ref keine Funktionsreferenz seinUntere Schranke fÃ¼r einen fÃ¼r Stack-Smashing-Protection betrachteten Puffer.Die HÃ¶chstzahl Reload-Pseudos, die beim Auslagern eines Nicht-Reload-Pseudos berÃ¼cksichtigt werden.HÃ¶chstmenge des von GCSE zu belegenden Speichers, in Kilobyte.Die maximale Wachstumsrate der CodegrÃ¶ÃŸe bei der Erweiterung in eine Sprungtabelle (in Prozent). Der Parameter wird bei der Optimierung auf GrÃ¶ÃŸe verwendet.Die maximale Wachstumsrate der CodegrÃ¶ÃŸe bei der Erweiterung in eine Sprungtabelle (in Prozent). Der Parameter wird bei der Optimierung auf Geschwindigkeit verwendet.HÃ¶chste VerzÃ¶gerung bei Konflikt, sodass Befehl fÃ¼r spekulative Bewegung in Betracht kommt.Die maximale Schachtelungstiefe von Schleifen, in denen Fallunterscheidungen getroffen werden.Die maximale Tiefe einer Schleifenschachtelung, die vollstÃ¤ndig geschÃ¤lt wird.Die maximale Tiefe eines symbolischen Wertes, bevor der Wert als unbekannt approximiert wird.Die maximale Tiefe der explodierten Knoten, die in einem Dot-Dump erscheinen sollen, bevor auf ein weniger ausfÃ¼hrliches Format umgeschaltet wird.GrÃ¶ÃŸte Tiefe mit rekursivem Inline fÃ¼r Inline-Funktionen.GrÃ¶ÃŸte Tiefe rekursiven Inlinens fÃ¼r Nicht-Inline-Funktionen.Der hÃ¶chste Erweiterungsfaktor beim Kopieren von BasisblÃ¶cken.Der maximale Faktor, den der Schleifenvektorisierer auf die Kosten der Anweisungen in einer inneren Schleife im VerhÃ¤ltnis zur vektorisierten Schleife anwendet.Die HÃ¶chstzahl der von CSE verarbeiteten Befehle vor dem RÃ¼cksetzen.Die maximale LÃ¤nge eines konstanten Strings, um den eingebauten Stringvergleich zu inlinen. Vorgabewert ist 3.GrÃ¶ÃŸte LÃ¤nge des betrachteten Pfades in CSE.Die MaximallÃ¤nge der Liste der anhÃ¤ngigen geplanten Operationen.HÃ¶chstzahl der Speicherstellen, die von cselib aufgezeichnet werden.Die maximale Anzahl von Â»nach dem SuperknotenÂ« expandierten Knoten innerhalb des Analysierers pro Superknoten, bevor die Analyse abbricht.HÃ¶chstzahl der RTL-Knoten, die als letzte Werte des Kombinierers aufgezeichnet werden kÃ¶nnen.Die maximale Anzahl von SSA_NAME-Zuweisungen, die verfolgt werden, um einen Wert zu bestimmen.Die HÃ¶chstzahl der Versuche zur RÃ¼ckverfolgung bei Modulo-Planung von Schleifen.HÃ¶chstzahl der fÃ¼r Zwischen-Block-Scheduling zu betrachtenden BlÃ¶cke in einer Region.HÃ¶chstzahl der Zweige auf dem Pfad durch die geschÃ¤lte Sequenz.Die HÃ¶chstzahl der EinschrÃ¤nkungen pro Zustand.Die maximale Anzahl von expandierten Knoten pro Programmpunkt innerhalb des Analysierers, bevor die Analyse dieses Punkts abbricht.HÃ¶chstzahl der zu betrachtenden eingehenden Kanten fÃ¼r Kreuzsprung.Die maximale Anzahl der nicht durchfÃ¼hrbaren Kanten, die zurÃ¼ckgewiesen werden, bevor eine Diagnose als nicht durchfÃ¼hrbar erklÃ¤rt wird.HÃ¶chstzahl von Befehlen, die Â»combineÂ« zu kombinieren versucht.HÃ¶chstzahl der fÃ¼r Zwischen-Block-Scheduling zu betrachtenden Befehle in einer Region.Die HÃ¶chstzahl der Befehle im Schleifenkopf, die wÃ¤hrend der Schleifenkopfkopier-Phase dupliziert werden.Die HÃ¶chstzahl der Befehle einer vollstÃ¤ndig geschÃ¤lten Schleife.Die HÃ¶chstzahl der Befehle einer geschÃ¤lten Schleife.Die HÃ¶chstzahl der Befehle einer ungeschalteten Schleife.Die HÃ¶chstzahl der zu vervielfÃ¤ltigenden Befehle, wenn berechnete Gotos expandiert werden.Die HÃ¶chstzahl der Befehle in einer einzelnen fÃ¼r Â»inlineÂ« geeigneten Funktion.Die HÃ¶chstzahl der in einer inneren Schleife zu betrachtenden Befehle fÃ¼r Versionierung.Die HÃ¶chstzahl der in einer Ã¤uÃŸeren Schleife zu betrachtenden Befehle fÃ¼r Versionierung, zusÃ¤tzlich zu den Befehlen in inneren Schleifen.Die HÃ¶chstzahl der Befehle, bis zu der eine Inline-Funktion per Rekursion wachsen kann.Die HÃ¶chstzahl der Befehle, bis zu der eine Nicht-Inline-Funktion per Rekursion wachsen kann.HÃ¶chstzahl der vom Scheduler wÃ¤hrend der ersten Planphase fertig zur AusfÃ¼hrung zu betrachtenden Befehle.Die maximale Anzahl von Befehlen, die SuchvorgÃ¤nge kombinieren, um die nÃ¤chste Verwendung eines bestimmten Registers zu finden.Die HÃ¶chstzahl der zu betrachtenden Befehle, um einen VerzÃ¶gerungsschlitz zu fÃ¼llen.Die HÃ¶chstzahl der zu betrachtenden Befehle, um richtige aktive Registerinformationen zu finden.Die HÃ¶chstzahl der zum Abrollen von Schleifen im Mittel zu betrachtenden Befehle.Die HÃ¶chstzahl der zum Abrollen von Schleifen zu betrachtenden Befehle.HÃ¶chstzahl der rÃ¼ckwÃ¤rts zu suchenden Befehle, wenn nach Ã¤quivalentem Neuladen gesucht wird.Die HÃ¶chstzahl der Befehle fÃ¼r automatisches Inlinen von kleinen Funktionen.Die HÃ¶chstzahl der Befehle fÃ¼r automatisches Inlinen.Die HÃ¶chstzahl der Befehle fÃ¼r automatisches Inlinen beim Optimieren auf CodegrÃ¶ÃŸe.HÃ¶chstzahl der Iterationen durch CFG zur Regionserweiterung.Die HÃ¶chstzahl der SchleifendurchlÃ¤ufe, die statisch vorhergesagt werden.Die HÃ¶chstzahl von geschachteltem indirektem inlinen wurde bereits durch den frÃ¼hen Inliner durchgefÃ¼hrt.Die HÃ¶chstzahl der SchÃ¤lvorgÃ¤nge einer einzelnen Schleife, die vollstÃ¤ndig geschÃ¤lt wird.Die HÃ¶chstzahl der SchÃ¤lvorgÃ¤nge einer einzelnen Schleife.Die HÃ¶chstzahl der Anweisungen in geschachtelten Schleifen zum Schleifenaustausch.Die HÃ¶chstzahl, die eine Aufrufstelle in einem Aufrufstapel innerhalb des Analysierers vorkommen darf, bevor die Analyse abgebrochen wird, um zu tiefe Rekursion zu vermeiden.Die HÃ¶chstzahl der Iterationen zum Abrollen in einzelner Schleife.Die HÃ¶chstanzahl der use- und def-Besuche beim Auskundschaften einer STV-Kette, bevor das Auskundschaften abgebrochen wird.Maximales VerhÃ¤ltnis zwischen ArraygrÃ¶ÃŸe und Switch-Zweigen, bei dem eine Switch-Umwandlung erfolgt.Das maximale VerhÃ¤ltnis von EinfÃ¼gungen zu LÃ¶schungen von AusdrÃ¼cken in GCSE.Die empfohlene maximale GrÃ¶ÃŸe des zusammenhÃ¤ngenden Speichers, der von zwei Objekten belegt wird, auf die von nebenlÃ¤ufigen Threads mit zeitlicher LokalitÃ¤t zugegriffen wird. In der Regel die GrÃ¶ÃŸe der L1-Cache-Zeilen, kann aber auch kleiner sein, um diversen Zielprozessoren mit unterschiedlichen Cache-ZeilengrÃ¶ÃŸen gerecht zu werden.Maximale GrÃ¶ÃŸe des Vorgriffsfensters der wÃ¤hlbaren Planung.Kleinste voraussichtliche Beschleunigung, die dem Inliner erlaubt, inline-insns-single und inline-isnsns-auto zu ignorieren.Die Mindestwahrscheinlichkeit fÃ¼r spekulativen Erfolg (in Prozent), sodass spekulativer Befehl eingeplant wird.Kleinste UID fÃ¼r Nicht-Debug-Befehl.Die kleinste Schrittweite, ab der Software-Prefetch-Tipps produziert werden.Die Mindestkosten eines teuren Ausdrucks in der Schleifeninvariantenbewegung.Mindestanzahl der passenden zu betrachtenden Befehle fÃ¼r Kreuzsprung.Die Mindestzahl an Superknoten innerhalb einer Funktion, die vom Analysierer berÃ¼cksichtigt wird, um die Auswirkungen an den Aufrufstellen zusammenzufassen.Kleinste Wahrscheinlichkeit einer Kante, sodass bei der Planung ihr Zustand gesichert wird.Die Mindestwahrscheinlichkeit fÃ¼r das Erreichen eines Quellblockes fÃ¼r spekulatives Zwischen-Block-Scheduling.Der empfohlene Mindestoffset zwischen zwei Objekten, auf die nebenlÃ¤ufig zugegriffen wird, um zusÃ¤tzliche LeistungseinbuÃŸen aufgrund von durch die Implementierung verursachten Konflikten zu vermeiden. Normalerweise die GrÃ¶ÃŸe der L1-Cache-Zeile, kann aber auch grÃ¶ÃŸer sein, um diverse Zielprozessoren mit unterschiedlichen Cache-ZeilengrÃ¶ÃŸen zu berÃ¼cksichtigen. C++17-Code kann diesen Wert im Strukturlayout verwenden, aber es wird dringend davon abgeraten, dies in Ã¶ffentlichen ABIs zu tun.MindestgrÃ¶ÃŸe von Variablen, die sich Stapelspeicher teilen, wenn nicht optimiert wird.Das MindestverhÃ¤ltnis der Schrittweiten, damit Schleifenaustausch profitabel ist.Der minimale Schwellwert fÃ¼r die Wahrscheinlichkeit, dass eine halbinvariante Bedingungsanweisung eine Schleifenteilung auslÃ¶st.Kleinster Wert der Stufenzahl, den der Swing-Modulo-Scheduler erzeugen wird.Das Feld %qs im Modul oder Hauptprogramm bei %L muss konstante Form habenDer Name %qs bei %C wurde bereits als ein externer Modulname verwendetDer Name %qs bei %C kann nicht als ein definierter Operator verwendet werdenDie Anzahl der Newton-Iterationen, um den reziproken Wert einer double-Gleitkommazahl zu berechnen. Die Genauigkeit der Division ist proportional zu diesem Parameter, wenn die angenÃ¤herte Division angeschaltet ist. Standardwert ist 2.Die Anzahl der Newton-Iterationen, um den reziproken Wert einer float-Gleitkommazahl zu berechnen. Die Genauigkeit der Division ist proportional zu diesem Parameter, wenn die angenÃ¤herte Division angeschaltet ist. Standardwert ist 1.Die Anzahl der Feldelemente des SUB-Arguments fÃ¼r IMAGE_INDEX bei %L muss %d (Korang) sein, nicht %dDie Anzahl der Bytes, bei der Stringliterale in Analysator-Textdiagrammen verkÃ¼rzt dargestellt werden sollen.Anzahl der Zyklen, die der Swing-Modulo-Scheduler bei KonfliktprÃ¼fung mit DFA betrachtet.Die Anzahl der Elemente (%d) im Feldkonstruktor bei %L erfordert ErhÃ¶hung der erlaubten oberen Grenze %d. Siehe Option %<-fmax-array-constructor%>.Die Anzahl der Elemente, fÃ¼r die die ÃœberprÃ¼fung der Hash-Tabelle fÃ¼r jedes gesuchte Element durchgefÃ¼hrt wird.Die Anzahl der Elemente im Feldkonstruktor bei %L erfordert ErhÃ¶hung der erlaubten oberen Grenze %d. Siehe Option %<-fmax-array-constructor%>Die Anzahl der Elemente im Feldkonstruktor bei %L erfordert ErhÃ¶hung der erlaubten oberen Grenze %d. Siehe Option %<-fmax-array-constructor%>Die Anzahl der Elemente im Feldkonstruktor bei %L erfordert ErhÃ¶hung der erlaubten oberen Grenze %d. Siehe Option %<-fmax-array-constructor%>Die Anzahl der AusfÃ¼hrungen eines Basisblocks, der als heiÃŸ angesehen wird. Dieser Parameter wird nur im GIMPLE-Frontend verwendet.Die Anzahl der ausgefÃ¼hrten Befehle, bevor Prefetch abgeschlossen ist.Die Anzahl der Bytes, die bei der VerkÃ¼rzung am Anfang eines Zeichenkettenliterals angezeigt werden.Die Anzahl der Bytes, die bei der VerkÃ¼rzung am Ende eines Zeichenkettenliterals angezeigt werden.Die Anzahl der am hÃ¤ufigsten ausgefÃ¼hrten Promille der profilierten AusfÃ¼hrung des gesamten Programms, zu der die AusfÃ¼hrungszahl eines Basisblocks gehÃ¶ren muss, um als heiÃŸ zu gelten (im LTO-Modus verwendet).Die Anzahl der Prefetches, die gleichzeitig laufen kÃ¶nnen.Die Anzahl der Register in jeder Klasse, die von Schleifeninvariantenbewegung freigehalten werden.Das Objekt %qs bei %L mit ASSUMED-Typparametern muss ein Dummy oder ein SELECT-TYPE-Selektor sein (F08/4.2)Der Parameterausdruck bei %C lÃ¤sst sich nicht zu einer INTEGER-Konstante vereinfachenDer Parameterausdruck bei %C muss vom Typ INTEGER sein, nicht %sDer Pfad zu Â»devices.csvÂ«. Im Normalfall kann der GCC-Treiber das selbst rausfinden und an den Compiler Ã¼bermitteln, daher ist die Angabe eigentlich nicht nÃ¶tig.Prozentsatz der Funktion, gewichtet nach AusfÃ¼hrungshÃ¤ufigkeit, die bei Verfolgungsentwurf abgedeckt werden muss. Verwendet, wenn Profil-RÃ¼ckmeldung verfÃ¼gbar ist.Prozentsatz der Funktion, gewichtet nach AusfÃ¼hrungshÃ¤ufigkeit, die bei Verfolgungsentwurf abgedeckt werden muss. Verwendet, wenn Profil-RÃ¼ckmeldung nicht verfÃ¼gbar ist.Das Zeigerobjekt %qs bei %L muss eine explizite Funktionsschnittstelle haben oder als Feld deklariert seinMÃ¶gliche RVV-VektorregisterlÃ¤ngen:MÃ¶gliche SVE-VektorlÃ¤ngen:MÃ¶gliche TLS-Dialekte:Der Rang des Elements im Strukturkonstruktor bei %L passt nicht zu dem der Komponente (%d/%d)Das Register, das fÃ¼r den Zugriff auf den Threadzeiger verwendet wird:Die Datei mit den AuflÃ¶sungen.Dasselbe abhÃ¤ngige Objekt sollte als DEPOBJ-Argument bei %L und als DESTROY-Argument bei %L verwendet werdenDie Skalierung (in Prozent), die auf inline-insns-single und Auto-Limits angewendet wird, wenn die Heuristik darauf hinweist, dass Inlining sehr profitabel ist.Die Form der Komponente %qs im Strukturkonstruktor bei %L unterscheidet sich von der Form der deklarierten Komponente fÃ¼r die Dimension %d (%ld/%ld)Die GrÃ¶ÃŸe einer L1-Cacheline.Die GrÃ¶ÃŸe des L1-Caches.Die GrÃ¶ÃŸe des L2-Caches.Die GrÃ¶ÃŸe eines als groÃŸ angesehenen FunktionskÃ¶rpers.Die GrÃ¶ÃŸe eines als groÃŸ angesehenen Stapelrahmens.Die GrÃ¶ÃŸe einer Ãœbersetzungseinheit, ab der der IPA-CP-Durchlauf sie als groÃŸ ansieht.Die GrÃ¶ÃŸe einer als groÃŸ angesehenen Ãœbersetzungseinheit.Kleinste Zahl unterschiedlicher Werte, fÃ¼r die eine Sprungtabelle besser als ein Baum bedingter SprÃ¼nge ist; bei 0 wird der Standard fÃ¼r die Zielarchitektur verwendet.Der Quellausdruck bei %L darf weder vom Typ EVENT_TYPE sein noch eine EVENT_TYPE-Komponente haben, wenn ALLOCATE-Objekt bei %L ein Koarray istDer Quellausdruck bei %L darf weder vom Typ LOCK_TYPE sein noch eine LOCK_TYPE-Komponente haben, wenn ALLOCATE-Objekt bei %L ein Koarray istDas Argument Â»stat=Â« bei %L muss INTEGER-Variable mit Â»kind=4Â« seinDer Strukturkonstruktor bei %L wurde finalisiert. Dieses Feature wurde aus f08/0011 entfernt. Verwenden Sie Â»-std=f2018Â« oder Â»-std=gnuÂ«, um die Finalisierung zu entfernen.Das bei %2$L referenzierte Symbol %1$qs ist nicht im gewÃ¤hlten Standard vorhandenDer Schwellwert-Anteil fÃ¼r die AusfÃ¼hrung partieller Redundanzbeseitigung nach dem Neuladen.Der Schwellwert-Anteil des AusfÃ¼hrungszÃ¤hlers kritischer Kanten, die Redundanzbeseitigung nach dem Neuladen erlauben.Der Typ %qs bei %L darf nicht mit Wirt verbunden sein, da er von unvertrÃ¤glichem bei %L definierten Objekt mit gleichem Namen blockiert wirdDer Typ fÃ¼r Funktion %qs bei %L ist nicht zugreifbarDer Typ-Parameter in der ALLOCATE-Anweisung mit type-spec muss ein Sternchen sein, da das zugewiesene Objekt %qs bei %L ein Dummy-Argument mit angenommenem Typ-Parameter istDie Typparameter-Angabenliste bei %C kann nicht gleichzeitig ASSUMED- und DEFERRED-Parameter enthaltenDie Typparameter-Angabenliste bei %C enthÃ¤lt zu viele ParameterausdrÃ¼ckeDie Typparameter-Angabenliste bei %C enthÃ¤lt nicht genug ParameterausdrÃ¼ckeDie Spezifikationsliste fÃ¼r Typparameter in der Spezifikation bei %L darf keine DEFERRED-Parameter enthaltenDie Typspezifikation bei %L muss angeben, dass jeder Parameter mit LÃ¤ngentyp vermutet istTypspezifikation darf keinen Sequenz-abgeleiteten Typ oder Typ mit BIND-Attribut in SELECT TYPE bei %C beschreiben [F2003:C815]Obere Schranke zum gemeinsamen Verwenden von Ganzzahlkonstanten.Die obere Schranke in der letzten Dimension muss in der Referenz auf das Feld %qs vermuteter GrÃ¶ÃŸe bei %L auftretenDer Wert fÃ¼r den KIND-Parameter %qs bei %C lÃ¤sst sich nicht auf einen konstanten Ausdruck reduzierenDer Wert von n in %<-finit-character=n%> muss zwischen 0 und 127 liegenDer Wert des Parameters PDT LEN Â»%sÂ« stimmt nicht mit dem in der Dummy-Deklaration Ã¼bereinDer Wert des SELECT-RANK-CASE-Ausdrucks bei %C darf nicht kleiner als Null oder grÃ¶ÃŸer als %d seinDie Version der C++-ABI, die verwendet wird.Die Version der C++-ABI, die fÃ¼r Â»-WabiÂ«-Warnungen und BindungskompatibilitÃ¤tsaliase verwendet wird.Es gibt bereits eine Prozedur mit Bindungsname %qs fÃ¼r den abgeleiteten Typ %qs bei %CEs gibt keine spezifische Funktion fÃ¼r das allgemeine %qs bei %LEs gibt kein spezifisches Unterprogramm fÃ¼r allgemeines %qs bei %LEs gibt bereits eine nicht-generische Prozedur mit Bindungsname %qs fÃ¼r den abgeleiteten Typ %qs bei %CDiese Architektur unterstÃ¼tzt keine Befehle mit SprungschutzDazu gehÃ¶ren explizites DEALLOCATE, Neuzuweisung bei intrinsischer Zuweisung, INTENT(OUT) fÃ¼r allozierbare Dummy-Argumente und Neuzuweisung von allozierbaren Komponenten, die mit einem OpenMP-Allokator alloziert wurdenDies ist freie Software; die Kopierbedingungen stehen in den Quellen. Es
  gibt KEINE Garantie; auch nicht fÃ¼r MARKTGÃ„NGIGKEIT oder FÃœR SPEZIELLE ZWECKE.
  
! Dies ist der Vorgabewert.Dieser Schalter ist veraltet und hat keine Auswirkung.Diese Option ist veraltet; verwenden Sie stattdessen Â»-fpltÂ« oder Â»-fno-pltÂ«.Diese Option wird ignoriert; sie wird nur zu KompatibilitÃ¤tszwecken bereitgestellt. Sie diente zur Auswahl von Binder- und PrÃ¤prozessor-Optionen fÃ¼r die Verwendung mit der newlib.Diese Option ist standardmÃ¤ÃŸig eingeschaltet, um PR118012 zu umgehen.Diese Option wird intern fÃ¼r die Erzeugung und Auswahl von Multilibs verwendet. Annehmen, dass RJMP/RCALL den gesamten Programmspeicher ansprechen kann.Diese Option wird intern fÃ¼r die Erzeugung und Auswahl von Multilibs verwendet. Das GerÃ¤t hat kein SPH-Sonderfunktionsregister.Diese Option wird intern verwendet. Verwendung von Read-Modify-Write-Befehlen (RMW) einschalten.Diese Option wird intern verwendet. Vorhandensein eines Prozessor-Erratums anzeigen. 32-Bit-Anweisungen nicht Ã¼berspringen.Diese Option wird intern verwendet. Anzahl der 64-KiB-Flash-Segmente festlegen.Diese Option wird intern verwendet. Das GerÃ¤t hat das Bitfeld NVMCTRL_CTRLB.FLMAP.Diese Option ist undokumentiert.Dieser Schalter ist veraltet; nicht verwenden.Dieser Schalter ist veraltet; stattdessen Â»-Werror=implicit-function-declarationÂ« verwenden.Dieser Schalter ist veraltet; stattdessen Â»-WextraÂ« verwenden.Dieser Schalter ist veraltet; stattdessen Â»-fsanitize-recover=Â« verwenden.Dieser Schalter ist veraltet; stattdessen Â»-fsanitize-trap=Â« verwenden.Thread-Modell: %s
! Threadprivate bei %L ist nicht SAVEdThreadprivate Variable bei %C ist ein Element eines COMMON-BlocksSchwellwert fÃ¼r Auswertung der MÃ¶glichkeit von IPA-CP, der noch als vorteilhaft zum Kopieren betrachtet wird.Thumb-1 %<hard-float%> VFP-ABIThumb: Annehmen, dass Funktionszeiger an Code Ã¼bergeben werden kÃ¶nnen, der nichts von Thumb weiÃŸ.Thumb: Annehmen, dass nichtstatische Funktionen von ARM-Code aus aufgerufen werden kÃ¶nnen.Thumb: (Blatt-)Stapelrahmen erzeugen, auch wenn nicht erforderlich.Thumb: (Nicht-Blatt-)Stapelrahmen erzeugen, auch wenn nicht erforderlich.Interner Fehler: Thunk is not supposed to have bodyGekachelte Schleife bei %L kann nicht Ã¼ber Gangs, Worker oder Vektoren Ã¼bergreifend parallelisiert werdenZeit, die fÃ¼r Funktionsprolog, -Epilog und sonstigen Overhead veranschlagt wird.Zeit, die fÃ¼r Thunk-Overhead in Funktionen veranschlagt wird.Zum Einschalten der Vorverarbeitung %<-cpp%> verwenden-fvar-tracking-assignments umschalten.Erzeugung von Fehlersuchinformationen umschalten.Zu wenige Codimensionen bei %C, %d statt %d erwartetZu wenige Scheinargumente in DTIO-Prozedur %qs bei %LZu viele Argumente in Aufruf von %qs bei %LZu viele Argumente fÃ¼r %s bei %LZu viele Codimensionen bei %C, %d statt %d erwartetZu viele Komponenten in Strukturkonstruktor bei %LZu viele Bedingungen (%u gefunden); Abdeckung wird nicht gemessenZu viele Ziffern in Anweisungsmarke bei %CZu viele Scheinargumente in DTIO-Prozedur %qs bei %LZu viele Elemente in Feldinitialisierung bei %CInterner Fehler: Too many subscriptsTraits-Array %qs in USES_ALLOCATORS bei %L muss ein eindimensionales benanntes konstantes Array vom Typ %<omp_alloctrait%> seinBedingte Speicherbefehle in unbedingte umwandeln.Transformierende Funktion %qs bei %L darf nicht in einem Initialisierungs-Ausdruck auftretenInterner Fehler: Transparent alias and target%'s assembler names differsVorzeichenbehafteten Ãœberlauf in Addition, Subtraktion und Multiplikation abfangen (Â»trapÂ«).Ausnahme bei __builtin_unreachable auslÃ¶sten, statt es fÃ¼r die Optimierung zu verwenden.Ganzzahldivision durch Null abfangen.Um CodegrÃ¶ÃŸe zu verbessern, eine throw()-Ausnahmespezifikation als Â»noexceptÂ« behandeln.Bekannte sprintf-RÃ¼ckgabewerte als Konstanten behandeln.Zeilen mit Â»DÂ« in Spalte eins als Kommentar behandeln.Fehlende Header-Dateien als generierte Dateien behandeln.Vorzeichenbehafteten Ãœberlauf als undefiniertes Verhalten behandeln. Wird mit Â»-fwrapv -fwrapv-pointerÂ« negiert.Die Eingabedatei als bereits vorverarbeitet behandeln.Bei den booleschen Kurzschluss-Operatoren && und || beide Seiten auswerten, wenn das nebenwirkungsfrei zu besserem Code fÃ¼hrt.Â»%sÂ« in der Shell kÃ¶nnte diese BeschrÃ¤nkung erhÃ¶hen.
! Dem Binder erlauben, PIC-Aufrufe in direkte Aufrufe umzuwandeln.Versuchen, Store-Forwarding zu vermeiden.Versuchen, virtuelle SprÃ¼nge in direkte umzuwandeln.Versuchen, Schleifen zu tauschen, wenn es nÃ¼tzt.Versuchen, abgeleitete Typen so kompakt wie mÃ¶glich anzuordnen.Versuchen, Funktionsaufrufe und Returns nach dem Inlinen zu rekonstruieren.Code fÃ¼r angegebenen Prozessor optimieren.Die erwartete Speicher-Wartezeit abstimmen.FÃ¼r angegebene Ziel-CPU oder Architektur optimieren.Alle Warnungen in Fehler umwandeln.Alle Sprachfunktionen, die sich rÃ¼ckgÃ¤ngig machen lassen, ausschalten.Alle Diagnosefunktionen deaktivieren, die die Ausgabe verkomplizieren, wie Zeilennummern, Farbe und Warn-URLs.Aktiviert CET-Instrumentierung fÃ¼r solche switch-Anweisungen, die Sprungtabellen und indirekte SprÃ¼nge verwenden.Durchlauf fÃ¼r Redundante Erweiterungsentfernung (REE) einschalten.Alle zukÃ¼nftigen D-Sprachfunktionen einschalten.Die angegebene Warnung in einen Fehler umwandeln.Zwei Haupt-PROGRAMme bei %L und %CZwei oder mehr Teilreferenzen mit Rang grÃ¶ÃŸer Null dÃ¼rfen nicht bei %L angegeben werdenInterner Fehler: Two symbols with same comdat_group are not linked by the same_comdat_group list.Typ %qs mit DEFERRED-Bindung bei %C ist nicht ABSTRACTTyp %qs der CLASS-Variable %qs bei %L ist nicht erweiterbarTypdeklaration %qs bei %L ist nicht C-kompatibel, aber sie ist BIND(C)Typdefinition von %qs bei %C wurde bereits bei %L definiertTyp nicht zugreifbar in Variablen-Definitionskontext (%s) bei %LUnpassender Typ bei %L bei der Ãœbergabe der globalen Funktion %qs, die bei %L deklariert wurde (%s/%s)UnvertrÃ¤gliche Typen zwischen Argument bei %L und Argument bei %L (%s/%s).Unpassender Typ in Argument %qs bei %L; %s wurde an %s Ã¼bergebenTypname %qs bei %C kann nicht der gleiche wie ein intrinsischer Typ seinTypname %qs bei %C in Konflikt mit vorher deklarierter EntitÃ¤t bei %L, die den gleichen Namen hatTypname %qs bei %C ist mehrdeutigDer Typ des Arguments Â»%sÂ« von IMAGE_INDEX bei %L muss ein INTEGER seinTyp der EntitÃ¤t bei %L ist mit Quellausdruck bei %L typunvertrÃ¤glichTyp der EntitÃ¤t bei %L ist mit Typspezifikation unvertrÃ¤glichTypparameter %qs bei %C hat keinen zugehÃ¶rigen Eintrag in der Typparameter-Namensliste bei %LDer Typ muss eine ZeichenlÃ¤nge von 1 habenFÃ¼r intrinsische Funktion %qs angegebener Typ bei %L wird ignoriertTyp mit ultimativer allozierbarer Komponente ist fÃ¼r %qs in Ortsangabe %s bei %L nicht erlaubtTypgebundener Operator bei %L kann nicht NOPASS seinTypgebundene Prozedur bei %CTypspezifikation bei %L kann keine Parameter mit aufgeschobenem Typ habenTypspezifikation bei %L darf kein Sternchen fÃ¼r einen Typparameter enthaltenDas intrinsische UINT bei %L ist nur gÃ¼ltig mit %<-funsigned%>Bei %L wurde kein UNIT angegebenUNIT-Zahl in CLOSE-Anweisung bei %L muss nicht-negativ seinUNIT-Zahl in INQUIRE-Anweisung bei %L darf nicht %d seinUNIT-Zahl in Anweisung bei %L muss nicht-negativ seinFehlende UNIT-Zahl in Anweisung bei %LUNIT-Spezifikation bei %L muss ein INTEGER-Ausdruck oder eine CHARACTER-Variable seinUNIT-Spezifikation bei %L darf kein Zeichen-PARAMETER seinUNIT-Spezifizierer mit NEWUNIT bei %L nicht erlaubtUNLOCK-Anweisung bei %CUNROLL-Konstrukt bei %L mit PARTIAL-Klausel erzeugt nur eine Schleife mit kanonischer Form, aber %d Schleifen werden benÃ¶tigtArgument UNTIL_COUNT= bei %L muss ein skalarer INTEGER-Ausdruck seinUSE-Anweisung bei %C hat keinen ONLY-QualifiziererSpezifische INTRINSIC-Prozedur fÃ¼r Referenz %qs bei %L kann nicht gefunden werdenSymbol %qs kann nicht gefunden werdenLade-/Speicheroffset fÃ¼r Fusion kann nicht generiert werdenFehler beim Laden der DLL.Spezifische Funktion %qs bei %L kann nicht aufgelÃ¶st werdenSpezifisches Unterprogramm %qs bei %L kann nicht aufgelÃ¶st werdenNicht klassifizierbare GCC-Anweisung bei %CNicht klassifizierbare GCC-Direktive bei %C, wird ignoriertNicht klassifizierbare OpenACC-Anweisung bei %CNicht klassifizierbare OpenMP-Anweisung bei %CNicht klassifizierbare Anweisung bei %CUndefinierte spezifische Bindung %qs als Ziel des GENERIC %qs bei %LUnter Â»-ffast-mathÂ« einen FRIZ-Befehl fÃ¼r (double)(long long)-Umwandlungen erzeugen.Unter der Kontrolle des Object-Size-Typs warnen, wenn PufferÃ¼berlÃ¤ufe in Stringmanipulationsfunktionen wie memcpy und strcpy auftreten.Ungleiche ZeichenlÃ¤ngen (%ld/%ld) in %sUngleiche ZeichenlÃ¤ngen (%ld, %ld) in %s bei %LUngleiche ZeichenlÃ¤ngen (%wd/%wd) fÃ¼r Zeigerkomponente %qs in Konstruktor bei %LUnerwartetes !$OMP SCAN bei %L auÃŸerhalb eines Schleifenkonstrukts mit %<inscan%>-REDUCTION-KlauselUnerwartetes %<%c%> fÃ¼r Variable %qs nicht-abgeleiteten Typs bei %CUnerwartetes %<(%> bei %CUnerwartetes %<*%> fÃ¼r Codimension %d von %d bei %CUnerwartetes %<*%> in Coarray-Index bei %CUnerwartetes %s bei %C; ALLOCATE- oder %s-Anweisung erwartetUnerwartetes %s bei %C; ALLOCATE-Anweisung nach %s erwartetUnerwartete Anweisung %s bei %CUnerwartete Anweisung %s bei %C in INTERFACE-KÃ¶rperUnerwartete Anweisung %s in BLOCK DATA bei %CUnerwartete Anweisung %s in CONTAINS-Abschnitt bei %CUnerwartete Anweisung %s in FORALL-Block bei %CUnerwartete Anweisung %s in INTERFACE-Block bei %CUnerwartete Anweisung %s in MODULE bei %CUnerwartete Â»%sÂ«-Anweisung in Â»OMP METADIRECTIVEÂ«-Block bei %CUnerwartete Anweisung %s in WHERE-Block bei %CUnerwartete CASE-Anweisung bei %CUnerwartetes DIM-Argument mit Nicht-COARRAY-Argument bei %LUnerwartete END-Anweisung bei %CUnerwartete ENTRY-Anweisung bei %CUnerwartetes EOFUnerwartetes intrinsisches NULL() bei %L fÃ¼r Schein-%qsUnerwarteter OpenACC-Parallelismus.Unerwartete RANK-Anweisung bei %CUnerwartetes SHAPE-Argument bei %L fÃ¼r C_F_POINTER mit skalarem FPTRUnerwartete TYPE IS-Anweisung bei %CUnerwartete allozierte Variable %qs bei %L in der deklarativen Direktive !$OMP ALLOCATEUnerwartete alternative RÃ¼ckgabespezifikation in Unterprogrammaufruf bei %LUnerwartete Referenz auf Feld/Teilstring bei %CUnerwartetes Zeichen in Variablenliste bei %CUnerwartete Zeichen in PARAMETER-Anweisung bei %CUnerwartetes Coarray %qs in %<allocate%> bei %LUnerwartetes Coarray %qs in %<allocate%> bei %L, implizit aufgefÃ¼hrt in %<!$OMP ALLOCATE%> bei %LUnerwartetes Coarray-Argument %qs als Argument bei %L zu deklarativem !$OMP ALLOCATEUnerwarteter Coarray-Bezeichner bei %CUnerwarteter Verweis auf Â»complex-parts designatorÂ« in Â»%sÂ«-Klausel bei %LUnerwartete Konstante bei %CUnerwartete EntitÃ¤ten mit abgeleitetem Typ im binÃ¤ren intrinsischen numerischen Operator %qs bei %LUnerwartetes Dummy-Argument %qs als Argument bei %L zu deklarativem !$OMP ALLOCATEUnerwartetes Element %qc in Formatzeichenkette bei %LUnerwartetes Dateiende in %qsUnerwartetes Ende der Formatzeichenkette bei %LUnerwartetes ModulendeUnerwarteter Ausdruck als Listenelement bei %L in der ALLOCATE-DirektiveUnerwartete function-result-Variable %qs bei %L in deklarativem !$OMP ALLOCATEUnerwarteter intrinsischer Typ %qs bei %LUnerwarteter Ausschuss hinter Â»!$ACC ATOMICÂ«-Anweisung bei %CUnerwarteter Ausschuss hinter Â»!$ACC DECLAREÂ« bei %CUnerwarteter Ausschuss hinter Â»!$OMP DECLARE REDUCTIONÂ« bei %CUnerwarteter Ausschuss hinter Â»!$OMP DECLARE TARGETÂ« bei %CUnerwarteter Ausschuss hinter !$OMP SCAN bei %CUnerwarteter Ausschuss hinter $OMP BARRIER-Anweisung bei %CUnerwarteter Ausschuss hinter Â»$OMP CANCELLATION POINTÂ«-Anweisung bei %CUnerwarteter Ausschuss hinter $OMP CRITICAL-Anweisung bei %CUnerwarteter Ausschuss inter $OMP FLUSH-Anweisung bei %CUnerwarteter Ausschuss hinter $OMP MASTER-Anweisung bei %CUnerwarteter Ausschuss hinter Â»$OMP NOTHINGÂ«-Anweisung bei %CUnerwarteter Ausschuss hinter %qs bei %LUnerwarteter Ausschuss hinter NOWAIT-Klausel bei %CUnerwarteter Ausschuss hinter Â»OMP METADIRECTIVEÂ« bei %CUnerwarteter Ausschuss hinter Â»OMP THREADPRIVATEÂ« bei %CUnerwarteter Ausschuss hinter TASKYIELD-Klausel bei %CUnerwartete Angaben hinter Funktionsdeklaration bei %CUnerwartete Zeichen bei %CUnerwartete Angaben in formaler Argumentliste bei %CUnerwartetes null-Zeichen in Zeichenliteral bei %LUnerwartetes Zeichen null oder %<,%> in Zeichenliteral bei %LUnerwartete Zeigervariable %qs bei %L in der deklarativen Direktive !$OMP ALLOCATEUnerwarteter Verweis auf Teilzeichenkette in %s-Klausel bei %LUnexpected thumb1 far jumpUnerwartete Verwendung des Unterprogrammnamens %qs bei %CInterner Fehler: Uninitialized probability of edge %i->%iEinheitszahl in E/A-Anweisung zu groÃŸEinheitszahl in E/A-Anweisung zu kleinUnbekanntes Argument %qs bei %L fÃ¼r intrinsisches %sUnbekannte Argumentlistenfunktion bei %LUnbekanntes Attribut in !GCC$ ATTRIBUTES-Anweisung bei %CUnbekannte Direktive bei %LUnbekannter fremder Laufzeitbezeichner %qd bei %LUnbekannter fremder Laufzeitbezeichner %qs bei %LUnbekannte eingebauter OperatorUnbekannter Operator %qs bei %LUnbekannter Operator %qs bei %L; meinten Sie %qs?Unbekannter Prozedurname %qs bei %CInterner Fehler: Unknown type %dUnbegrenztes polymorphes Argument bei %L passt weder zu einem unbegrenzt polymorphen oder einem Dummyargument mit angenommenem TypUnbeschrÃ¤nkt polymorphes ALLOCATE-Objekt bei %L erfordert entweder eine Typspezifikation, SOURCE-Marke oder MOLD-MarkeNicht erkannter COBOL-Dialektname: %qsUnbekannter MCU-Name %qs.Unbekannte Option fÃ¼r %<-finit-logical%>: %sUnbekannte Option fÃ¼r Endianess-Wert: %qsUnbekannte Option fÃ¼r Gleitkomma-Initialisierungswert: %qsUnbekannte Option %qsVorzeichenlose Konstante bei %L wird abgeschnittenVorzeichenlose Potenzierung nicht erlaubt mit Â»-pedanticÂ« bei %LVorzeichenlose Art %d ist bei %C nicht verfÃ¼gbarVorzeichenlos ist noch nicht implementiertVorzeichenlos:Code Â»%cÂ« fÃ¼r Festkomma nicht unterstÃ¼tzt:Operand fÃ¼r Code Â»%cÂ« nicht unterstÃ¼tztNicht unterstÃ¼tzte Anweisung in WHERE bei %LNicht unterstÃ¼tzter Wert fÃ¼r Â»-mmpy-optionÂ«Mehrfache Parallelismus-Stufen in OpenACC-Routinen werden nicht unterstÃ¼tztUnbeendete Zeichenkonstante beginnend bei %CUngenutzte PRIVATE-Variable %qs bei %L deklariertUngenutztes Dummyargument %qs bei %LUnbenutzte Initialisierungszeichenkette bei %L, da die Variable die LÃ¤nge 0 hatUngenutzte Modulvariable Â»%qsÂ«, die bei %L ausdrÃ¼cklich importiert wurdeUngenutzter Parameter %qs, bei %L deklariertUngenutzter Parameter %qs, der bei %L ausdrÃ¼cklich importiert wurdeUngenutzte Variable %qs, bei %L deklariertOberer Argumentindex ist kleiner als der untere bei %LObere Feldreferenz bei %L ist auÃŸerhalb der Schranken (%ld < %ld) in Dimension %dObere Feldreferenz bei %L ist auÃŸerhalb der Schranken (%ld > %ld) in Dimension %dObere Grenze der letzten Coarray-Dimension muss %<*%> sein, bei %CObere Kogrenze ist kleiner als untere Kogrenze bei %LObere Kogrenze ist kleiner als untere Kogrenze von 1 bei %LVerwendung von LRA zum erneuten Laden anstelle des alten Neuladen-Frameworks. Diese Option ist experimentell und kann in zukÃ¼nftigen Versionen des Compilers entfernt werden.Aufruf: %s [Option]â€¦ <Teilbefehl> [Option]â€¦
  
  Aufruf: %s [Optionen] Datei...
  Aufruf: gcov [OPTION]... QUELLE|OBJ...
  
  Â»-Wa,OPTIONÂ« verwenden, um Â»OPTIONÂ« an den Assembler zu Ã¼bergeben.
  
! Â»-Wl,OPTIONÂ« verwenden, um Â»OPTIONÂ« an den Binder zu Ã¼bergeben.
  
! %reloc()-Assembleroperatoren verwenden (fÃ¼r AbwÃ¤rtskompatibilitÃ¤t).%reloc()-Assembleroperatoren verwenden.%reloc()-Operatoren statt Assemblermakros verwenden, um Adressen zu laden.-G fÃ¼r Daten verwenden, die nicht von aktuellem Objekt definiert wurden.-G fÃ¼r objekt-lokale Daten verwenden.Verwenden Sie Â»-mlong-double-64Â« fÃ¼r das 64-Bit-IEEE-Gleitkommazahlen-Format. Verwenden Sie Â»-mlong-double-128Â« fÃ¼r das 128-Bit-Gleitkommazahlen-Format (entweder IEEE oder IBM).128-Bit-AVX-Befehle statt 256-Bit-AVX-Befehlen in Auto-Vektorisierer verwenden.128-bit long double verwenden.16-Bit int verwenden.32-Bit int verwenden.32-Bit-ABI verwenden.Wenn DWARF-Debuginformationen erzeugt werden, dann im 32-Bit-Format.32-Bit-Gleitkommaregister verwenden.Allgemeine Register in 32 Bit Breite verwenden.In Sprungtabellen 32-Bit-Offsets statt 16-Bit-Offsets verwenden.4-Byte-EintrÃ¤ge in switch-Tabellen verwenden.4 Medien-Register verwenden.Die 4-Operanden-Befehle madd.s/madd.d und Ã¤hnliche verwenden, wo mÃ¶glich.4xx-Halbwort-Multiplikationsbefehle verwenden.4xx-dlmzb-Befehl zur Zeichenkettensuche verwenden.64 FPRs verwenden.64 GPRs verwenden.64-Bit-ABI verwenden.Wenn DWARF-Debuginformationen erzeugt werden, dann im 64-Bit-Format.64-Bit-Gleitkommaregister verwenden.Allgemeine Register in 64 Bit Breite verwenden.64-bit long double verwenden.8 Medien-Register verwenden.80-bit long double verwenden.ABI-reservierte Register verwenden.AltiVec-Befehle verwenden.Bionic-C-Bibliothek verwenden.Â»Branch LikelyÂ«-Befehle verwenden, Standard fÃ¼r die Architektur Ã¼berschreiben.CONST16-Befehle zum Laden von Konstanten verwenden.Befehle fÃ¼r Zyklische RedundanzprÃ¼fung (CRC) verwenden.EABI verwenden.Befehle zur Erweiterten Virtuellen Adressierung verwenden.Hardware-Gleitkommabefehle fÃ¼r Multiplikation von einfacher auf doppelte Genauigkeit (FsMULd) verwenden.Die GNU-C-Bibliothek verwenden.Abschnitte sdata/sbss relativ zum GP verwenden.GP-relative Adressierung verwenden, auf um kleine Daten zuzugreifen.Befehle fÃ¼r Globales INValidieren (GINV) verwenden.H8/300-Ausrichtungsregeln verwenden.IEEE-Arithmetik fÃ¼r Gleitkommavergleiche verwenden.IRA-basierte Registerdruckberechnungen in RTL-Optimierungen zum Anheben verwenden.IRA-basierte Registerdruckberechnungen in RTL-Schleifenoptimierungen verwenden.Befehle aus ISA 2.07 Category:Vector.AES und Category:Vector.SHA2 verwenden.Befehle aus ISA 2.07 fÃ¼r transaktionalen Speicher (HTM) verwenden.LRA statt Neuladen verwenden (Ã¼bergangsweise).LRA-Registerallozierer verwenden.Loongson-Erweiterungsbefehle (EXT) verwenden.Loongson-Erweiterungsbefehle R2 (EXT2) verwenden.Loongson-MultiMedia-Erweiterungsbefehle (MMI) verwenden.MCU-Befehle verwenden.Befehle der MIPS-MSA-Erweiterung verwenden.MIPS-3D-Befehle verwenden.MIPS-DSP-Befehle REV 2 verwenden.MIPS-DSP-Befehle verwenden.Mingw-spezifische Thread-UnterstÃ¼tzung verwenden.Neon-Double-Word (statt Quad-Word) Register fÃ¼r Vektorisierung verwenden.Neon-Quad-Word (statt Double-Word) Register fÃ¼r Vektorisierung verwenden.P-Mnemonics fÃ¼r statisch als verfolgt vorhergesehene Zweige verwenden.PLT fÃ¼r PIC-Aufrufe verwenden (-fno-plt: die Adresse beim Aufrufer aus der GOT laden).Â»madÂ«-Befehle im PMC-Stil verwenden.Optionale Befehle der PowerPC-Mehrzweck-Gruppe verwenden.Optionale Befehle der PowerPC-Grafik-Gruppe verwenden.Einzelfeld-mfcr-Befehl des PowerPC V2.01 verwenden.PowerPC V2.02 Gleitkomma-Rundungsbefehle verwenden.PowerPC V2.02 popcntb-Befehl verwenden.PowerPC V2.05 Bytevergleichs-Befehl verwenden.PowerPC V2.06 popcntd-Befehl verwenden.PowerPC-64-Befehlssatz verwenden.ROM statt RAM verwenden.SSE-Register-Ãœbergabekonventionen fÃ¼r SF- und DF-Modus verwenden.STB_GNU_UNIQUE verwenden, sofern der Assembler es unterstÃ¼tzt.SmartMIPS-Befehle verwenden.UNIX-Assemblersyntax verwenden.Vergleich-und-Sprung-Erweiterungen fÃ¼r UltraSPARC verwenden.Multiplizier-Addier-Erweiterungen fÃ¼r UltraSPARC verwenden.BitzÃ¤hl-Befehl fÃ¼r UltraSPARC verwenden.Befehl fÃ¼r erweitertes Subtrahieren mit Ãœbertrag fÃ¼r UltraSPARC verwenden.Visuelle Befehlssatzerweiterungen Version 1.0 fÃ¼r UltraSPARC verwenden.Visuelle Befehlssatzerweiterungen Version 2.0 fÃ¼r UltraSPARC verwenden.Visuelle Befehlssatzerweiterungen Version 3.0 fÃ¼r UltraSPARC verwenden.Visuelle Befehlssatzerweiterungen Version 4.0 fÃ¼r UltraSPARC verwenden.VAX-FP verwenden.VAXC-Strukturkonventionen verwenden.Exitcodes von VMS statt POSIX verwenden.Virtualisierungsbefehle (VZ) verwenden.__cxa_atexit verwenden, um Destruktoren zu registrieren.__cxa_get_exception_ptr in Ausnahmebehandlung verwenden.Einen 32-Bit-Â»longÂ«-Typ verwenden.Eine 4-Byte-Datensatzmarkierung fÃ¼r unformatierte Dateien verwenden.Einen 64-Bit-Â»longÂ«-Typ verwenden.Leichtgewichtige Konfiguration fÃ¼r printf und puts verwenden, um die CodegrÃ¶ÃŸe zu reduzieren. Nur fÃ¼r Anwendungen mit einem Thread, die keine reentrante E/A brauchen. Erfordert Newlib Nano IO.Minimale Laufzeitumgebung (keine statischen Initialisierer oder Konstruktoren) fÃ¼r speicherarme GerÃ¤te verwenden.Eine schlaue Stapelschutzmethode fÃ¼r gewisse Funktionen verwenden.Eine Stapelschutzmethode fÃ¼r jede Funktion verwenden.Einen Startup-Code mit einer kompakten Vektortabelle verwenden.ZusÃ¤tzliche VIS-3-Befehle verwenden, die in OSA2011 hinzugefÃ¼gt wurden.ZusÃ¤tzliche VIS-4-Befehle verwenden, die in OSA2017 hinzugefÃ¼gt wurden.Adressen verwenden, die globale Register belegen.Alle Register verwenden, dadurch keine fÃ¼r Interrupthandler reservieren.Alternative Registernamen verwenden.8-Bit-Â»intÂ«-Typ verwenden.Eine 8-Byte-Datensatzmarkierung fÃ¼r unformatierte Dateien verwenden.Einen Direktwert als Offset vom TLS-Register verwenden. Diese Option ist fÃ¼r fstack-protector-guard=tls gedacht und nicht fÃ¼r die Verwendung in Benutzer-Code.Einen konstanten Wert als Offset vom Stapelschutz-WÃ¤chterregister verwenden, sp_el0. Diese Option ist fÃ¼r fstack-protector-strong gedacht und nicht fÃ¼r die Verwendung in Benutzer-Code.Direktwerte beliebiger GrÃ¶ÃŸen in Bit-Operationen zulassen.Big-Endian Byte-Reihenfolge verwenden.Bittests fÃ¼r hinreichend groÃŸe switch-Anweisungen verwenden.Sprung-und-Abbruch-Sequenzen verwenden, um auf Ganzzahldivision durch Null zu prÃ¼fen.Verzweigungsschutz-Features verwenden.FÃ¼r ausfÃ¼hrbare Datei < 64k bras verwenden.Mit Aufruf verbundene Register fÃ¼r Parameter und RÃ¼ckgabewerte verwenden.call0-ABI verwenden.RÃ¼ckruffunktionen statt inline-Code generieren, wenn innerhalb der Funktion mindestens diese Anzahl an Zugriffen stattfindet.Vom Aufrufer zu sichernde Register Ã¼ber Aufrufe hinweg verwenden, wenn mÃ¶glich.Bestimmte skalare Befehle verwenden, die in ISA 3.0 hinzugefÃ¼gt wurden.Farbe in Diagnosemeldungen verwenden, um relevante Informationen hervorzuheben.Steuerungsspekulation verwenden.Eigene Stacks statt lokalem Speicher fÃ¼r automatischen Speicher verwenden.Datenspekulation nach Neuladen verwenden.Datenspekulation vor Neuladen verwenden.Dezimale Gleitkommabefehle verwenden.Standardmethode fÃ¼r sdata-Behandlung verwenden.Andere Aufrufkonvention mit 'RTD' verwenden.Direkt vergiftende/entgiftende Befehle fÃ¼r Variablen verwenden, die maximal die angegebene GrÃ¶ÃŸe haben.Direkte Referenzen gegen %gs beim Zugriff auf TLS-Daten verwenden.Befehle fÃ¼r Erweiterte Physikalische Adresse (XPA) verwenden.Epsilon beachtende Gleitkomma-Vergleichsbefehle verwenden.Profile von Ausdruckswerten in Optimierungen verwenden.Die f2c-Aufrufkonvention verwenden.Eigenschaften der angegebenen CPU verwenden und dafÃ¼r optimieren.Eigenschaften der gegebenen CPU verwenden und entsprechend Code planen.FÃ¼r angegebene CPU planen und deren Eigenschaften verwenden.Eigenschaften der Architektur ARCH verwenden.Feldweisen Vergleich fÃ¼r Strukturgleichheit verwenden.Flaches Registerfenster-Modell verwenden.Gleitkomma-double-Befehle verwenden.FP-Register verwenden.VollstÃ¤ndigen Registersatz fÃ¼r die Allozierung verwenden.Gegebenes SPARC-V9-Codemodell verwenden.Angegebenen Adressierungsmodus verwenden.Angegebenen Assemblerdialekt verwenden.Im Autovektorisierer die angegebene Breite fÃ¼r Vektorbefehle anstelle der maximalen Registerbreite verwenden.Angegebenen Stapelschutz-WÃ¤chter verwenden.Gegebenen Thread-lokalen Speicherdialekt verwenden.Gegebenes x86-64-Codemodell verwenden.Hardware-Gleitkommabefehle verwenden (Standard).Hardware-Gleitkommabefehle verwenden.Hardware-Divisionsbefehle auf ColdFire verwenden.Hardware-Gleitkommakonvertierungsbefehle verwenden.Hardware-Gleitkommabefehle verwenden.Hardware-Gleitkomma-Wurzel-Befehl verwenden.Hardware-Gleitkommabefehle verwenden.Hardware-Gleitkommabefehle fÃ¼r Division und Quadratwurzel verwenden.Hardware-Gleitkommabefehle verwenden.Hardwarebefehle fÃ¼r Ganzzahldivision verwenden.Hardware-Â»prefetchÂ«-Befehle verwenden.Hardware-Vierfach-Gleitkommabefehle verwenden.Hardware-TransaktionsausfÃ¼hrungs-Befehle verwenden.Hardware-Vektorbefehle verwenden und die Vektor-ABI einschalten.Blockweise Steuerungsspekulation verwenden.Blockweise Datenspekulation nach Neuladen verwenden.Blockweise Datenspekulation vor Neuladen verwenden.Registernamen der Form in/loc/out ausgeben.Indirekte CALLXn-Befehle fÃ¼r groÃŸe Programme verwenden.Indirekte Aufrufe verwenden.Inline-PLT-Sequenzen verwenden, um lange Aufrufe und Â»-fno-pltÂ« zu implementieren.Befehlssatz der angegebenen CPU verwenden und entsprechend Code planen.Befehle zum Multiplizieren-Addieren/Subtrahieren verwenden.Interne Funktions-ID bei Profilnachschlagen verwenden.Sprungtabellen fÃ¼r hinreichend groÃŸe switch-Anweisungen verwenden.KohÃ¤rente Cachesteuerungs-Hinweise fÃ¼r ldcw/ldcd verwenden.Stubs aus libgcc zum Speichern und Wiederherstellen von Registern verwenden, die beim Ãœbergang von der 64-Bit-Microsoft- zur System-V-ABI Ã¼berschrieben werden.Little-Endian Byte-Reihenfolge verwenden.Befehle ll, sc und sync verwenden.Die Befehle lwxc1/swxc1/ldxc1/sdxc1 verwenden, wo mÃ¶glich.Media-Befehle verwenden.microMIPS-Befehle verwenden.Befehle zum Multiplizieren-Addieren/Subtrahieren verwenden.Verwendet Â»multiply highÂ«-Befehle fÃ¼r den oberen Teil einer 32Ã—32-Multiplikation.Die musl-C-Bibliothek verwenden.Native MS-Bitfeld-Anordnung verwenden.Neue adddi3/subdi3-Muster verwenden.Normale Aufrufkonvention verwenden.Verwendung des intrinsischen Moduls %qs bei %C steht mit nicht-intrinsischem vorher verwendeten Modulnamen in KonfliktVerwendung des nicht-intrinsischen Moduls %qs bei %C steht mit vorher verwendetem intrinsischen Modulnamen in KonfliktVerwendung der Konstante NUMERIC_STORAGE_SIZE aus intrinsischem Modul ISO_FORTRAN_ENV bei %C ist mit der Option %s unvertrÃ¤glichVerwendung der Konstante NUMERIC_STORAGE_SIZE aus intrinsischem Modul ISO_FORTRAN_ENV bei %L ist mit der Option %qs unvertrÃ¤glichNur einen TOC-Eintrag pro Prozedur verwenden.GewÃ¶hnlich gecachete Speicherzugriffe fÃ¼r flÃ¼chtige Referenzen verwenden.Gepacktes Stapellayout verwenden.Paarweise-single Gleitkommabefehle verwenden.Mustervergleichsbefehle verwenden.PC-relative switch-Tabellen verwenden â€“ dies erlaubt kÃ¼rzere Fallunterscheidungs-Tabellen.Portierbare Aufrufkonventionen verwenden.Profilierungsinformationen fÃ¼r Verzweigungswahrscheinlichkeiten verwenden.Propolice als Stapelschutzmethode verwenden.Push-Befehle verwenden, um ausgehende Argumente zu sichern.Register r11 verwenden, um die statische Bindung in Funktionsaufrufen Ã¼ber Zeiger zu speichern.ZufÃ¤llige Basisadresse fÃ¼r jeden Rahmen wÃ¤hlen, statt immer 0 zu verwenden.Rote Zone in x86-64-Code verwenden.EingeschrÃ¤nkten Registersatz fÃ¼r die Allozierung verwenden.Registerstapel fÃ¼r Parameter und RÃ¼ckgabewerte verwenden.Register zur ArgumentÃ¼bergabe verwenden.Register r2 und r5 verwenden.Umverteilungsbefehle verwenden (Austausch und umgekehrte Bytereihenfolge beim Laden/Speichern; Voreinstellung).Profilierungsinformationen fÃ¼r Aufrufgraph-Knotengewichtungen verwenden. Vorgabe ist die Datei fbdata.afdo im aktuellen Arbeitsverzeichnis.Profilierungsinformationen fÃ¼r Aufrufgraph-Knotengewichtungen verwenden. Die Profilierungsdatei ist im Argument angegeben.Shared Libraries verwenden.Einfachen Datenspekulationstest fÃ¼r Steuerungsspekulation verwenden.Einfachen Datenspekulationstest verwenden.Simulator-Laufzeitumgebung verwenden.Kleineren, aber langsameren Code fÃ¼r Funktionsprologe und -epiloge verwenden.Software-Gleitkomma-Emulation verwenden (Standard).Software-Gleitkommavergleiche verwenden.Software-Gleitkomma verwenden.Software-Ganzzahlmultiplikation verwenden.Stapelversatz verwenden.Stapelschutzmethode nur fÃ¼r Funktionen mit dem Attribut Â»stack_protectÂ« verwenden.Structs an stÃ¤rkeren Grenzen ausrichten, um Daten doppelwortweise zu kopieren.Stubs fÃ¼r Funktionsprologe verwenden.synci-Befehl verwenden, um i-Cache ungÃ¼ltig zu machen.Tabellenbasierte Optimierung fÃ¼r die Division kleiner vorzeichenbehafteter Ganzzahlen verwenden.Befehl tas.b fÃ¼r __atomic_test_and_set verwenden.Die AIX-Vector-Extended-ABI verwenden.Die AltiVec-ABI-Erweiterungen verwenden.Die Cray-Zeiger-Erweiterung verwenden.DEC-Assemblersyntax verwenden.ELFv1-ABI verwenden.ELFv2-ABI verwenden.GNU-Assemblersyntax verwenden.GNU-Erweiterung fÃ¼r PE-Format fÃ¼r ausgerichtete gemeinsame Daten verwenden.Den Modernen Binder (MOLD) statt des Standardlinkers verwenden.Den RTL-Durchlauf zur Entfernung toten Codes verwenden.Den RTL-Durchlauf zur Entfernung toter Speicherungen verwenden.Den WIP-Borrow-PrÃ¼fer verwenden.BFD-Binder statt Standardlinker verwenden.Bit-Feld-Befehle verwenden.Divisionsbefehl verwenden.Gleitkommaeinheit fÃ¼r Ganzzahladdition und -subtraktion verwenden.Angegebenes Basisregister zur Adressierung des Stapelschutz-WÃ¤chters verwenden.Die angegebene Datenausrichtung verwenden.Angegebenen Offset zur Addressierung des Stapelschutz-WÃ¤chters verwenden.Angegebenes Symbol fÃ¼r Adressierung des Stapelschutz-WÃ¤chters verwenden.Gold-Binder statt Standardlinker verwenden.Hardware-Barrel-Shifter statt der Emulation verwenden.Den LLVM-lld-Binder statt des Standardlinkers verwenden.Die meisten Optionen verwenden, die spezielle FÃ¤higkeiten einschalten, solange sie durch andere Optionen erlaubt sind.FÃ¼r Blockkopieroperationen den Befehl mvcle verwenden.Den schmalstmÃ¶glichen Ganzzahltyp fÃ¼r AufzÃ¤hlungstypen verwenden.Min-/Max-Befehle verwenden, die in ISA 3.0 hinzugefÃ¼gt wurden.Simulator-Laufzeitumgebung verwenden.Verwendet die Software-Multiplikationsemulation (Vorgabe).Softwareemulation fÃ¼r Divisionen verwenden (Vorgabe).Das in der Kommandozeile angegebene Systemregister als Stapelschutz-WÃ¤chterregister verwenden. Diese Option ist fÃ¼r fstack-protector-strong gedacht und nicht fÃ¼r die Verwendung in Benutzer-Code.Die temporÃ¤re und experimentelle NamensauflÃ¶sungs-Pipeline statt der stabilen nutzenTraditionelle GNU-Semantik fÃ¼r Inline-Funktionen verwenden.Trap-Befehle verwenden, um auf Ganzzahldivision durch Null zu prÃ¼fen.FÃ¼r das Bereinigen von undefiniertem Verhalten Traps statt Meldungen verwenden.Die uClibc-C-Bibliothek verwenden.Unicode-Start verwenden und UNICODE-Makro definieren.Vektor-/skalare (VSX) Befehle verwenden, die in ISA 2.07 hinzugefÃ¼gt wurden.Vektor-Befehle verwenden, die in ISA 3.0 hinzugefÃ¼gt wurden.Vektor-/skalare (VSX) Befehle verwenden.ABI mit Fenster-Registern verwenden.Nullerweiternde Speicherladungen verwenden, nicht vorzeichenerweiternde.Kompressionsstufe <Zahl> fÃ¼r zlib/zstd fÃ¼r IL verwenden.Wird zur Generierung von Code fÃ¼r einige Ã¤ltere Kernel-Revisionen verwendet.Hier verwendetIm Fix-and-Continue-Modus verwendet, um anzuzeigen, dass Objektdateien zur Laufzeit eingetauscht werden kÃ¶nnen (Â»swapÂ«).Den Abrollfaktor begrenzen, der angibt, wie weit der Autovektorisierer eine Schleife abrollen darf. Voreinstellung ist 4.Den Abrollfaktor begrenzen, der angibt, wie weit der Autovektorisierer eine Schleife abrollen darf. Voreinstellung ist 6.Benutzerdefinierte nicht-ELEMENTAL-Funktion %qs bei %L ist in WORKSHARE-Konstrukt nicht erlaubtBei %2$L referenzierter Benutzeroperator %1$qs nicht im Modul %3$qs gefundenProzedur fÃ¼r Benutzeroperator %qs bei %L kann nicht vermutete ZeichenlÃ¤nge habenProzedur fÃ¼r Benutzeroperator %qs bei %L muss eine FUNCTION seinProzedur fÃ¼r Benutzeroperator %qs bei %L muss mindestens ein Argument habenDie Verwendung dieser Option wird diagnostiziert.Die Verwendung von %<-mevex512%> ohne aktivierte AVX512-Funktionen zusammen mit AVX10.1 aktiviert keine AVX512- oder AVX10.1-512-Funktionen und verwendet 256 als maximale VektorgrÃ¶ÃŸeIBM %<long double%> mit erweiterter Genauigkeit wird verwendetIEEE %<long double%> mit erweiterter Genauigkeit wird verwendetEs werden eingebaute Spezifikationen verwendet.
! Verwendung schnellerer Algorithmen zum Optimieren von Â»switchÂ«-Anweisungen. Anzahl der SchalterfÃ¤lle (%d) Ã¼berschreitet die Grenze %<--param=switch-lower-slow-alg-max-cases=%d%>.Verwendung der Funktion %qs bei %L ist veraltetVerwendung von Parameter %qs, der bei %L deklariert wurde, ist veraltetVerwenden der Subroutine %qs bei %L ist veraltetVerwendung der Variable %qs bei %L ist veraltetNormalerweise werden Symbole, die Â»private externÂ« (versteckt) sind, beim Binden lokal gemacht. Dieser Befehl unterdrÃ¼ckt das, so dass sie exportiert bleiben.VALUE-Argument der intrinsischen Funktion Â»%sÂ« bei %L muss definierbar seinVALUE-Attribut bei %CVALUE ist in BLOCK bei %C nicht erlaubtVALUE-Objekt %qs in Klausel %s bei %LVALUE-Anweisung bei %CDas VALUES-Argument fÃ¼r DATE_AND_TIME bei %L hat nicht-Standard-ArtDas VALUES-Argument von DATE_AND_TIME bei %L muss einen dezimalen Exponentenbereich von mindestens 4 habenVOIDmode bei einer AusgabeVOLATILE-Attribut bei %CVOLATILE-Attribut bei %L darf nicht in einer PURE-Prozedur angegeben werdenVOLATILE-Attribut nicht zulÃ¤ssig fÃ¼r %qs in REDUCE-Ortsangabe bei %LVOLATILE-Anweisung bei %CGÃ¼ltige ISA-Versionen (fÃ¼r Verwendung mit der Option Â»-mcpu=Â«)GÃ¼ltige Argumente fÃ¼r die Option Â»-msdata=Â«:GÃ¼ltige Argumente fÃ¼r Â»-malign-Â«:GÃ¼ltige Argumente fÃ¼r Â»-mcode-readable=Â«:GÃ¼ltige Argumente fÃ¼r Â»-mfpmath=Â«:GÃ¼ltige Argumente fÃ¼r Â»-mr10k-cache-barrier=Â«:GÃ¼ltige Argumente fÃ¼r Â»-mstack-protector-guard=Â«:GÃ¼ltige Arguments fÃ¼r Â»-mstringop-strategy=Â«:GÃ¼ltige Argumente fÃ¼r Â»-mtp=Â«:GÃ¼ltige Argumente fÃ¼r Â»-param=vsetvl-strategy=Â«:VTable-Zeiger validieren, bevor sie verwendet werden.Der Wert der HINT-Klausel bei %L muss ein gÃ¼ltiger konstanter Hinweisausdruck seinVariable %qs bei %C kann nicht innerhalb der bei %L beginnenden Schleife redefiniert werdenVariable %qs bei %C mit Initialisierung tritt bereits in einer DATA-Anweisung aufVariable %qs bei %L kann nicht BIND(C) sein, weil es weder ein COMMON-Block noch mit Sichtbarkeit auf Modulebene deklariert istVariable %qs bei %L kann nicht gleichzeitig die Attribute ALLOCATABLE und BIND(C) habenVariable %qs bei %L kann nicht gleichzeitig die Attribute OPTIONAL und VALUE haben, da Prozedur %qs BIND(C) istVariable %qs bei %L kann nicht gleichzeitig die Attribute POINTER und BIND(C) habenVariable %qs bei %L wurde bereits in einer Ortsangabe angegebenVariable %qs bei %L wurde keine Formatmarke zugewiesenVariable %qs bei %L in Common-Block %qs bei %C muss in einer C-kompatiblen Art deklariert sein, da Common-Block %qs bind(c) istVariable %qs bei %L muss in diesem Kontext eine Konstante seinVariable %qs bei %L ist INTENT(OUT) und kann daher kein reservierbares Coarray sein oder Coarray-Komponenten habenVariable %qs bei %L ist ein Koarray und ist weder ALLOCATABLE, SAVE, noch ein ScheinargumentVariable %qs bei %L ist ein Scheinargument fÃ¼r die BIND(C)-Prozedur %qs, kÃ¶nnte jedoch unvertrÃ¤glich mit C seinVariable %qs bei %L ist ein Scheinargument fÃ¼r die BIND(C)-Prozedur %qs, jedoch nicht interoperabel mit C, da der abgeleitete Typ %qs nicht mit C interoperabel istVariable %qs bei %L ist ein Scheinargument fÃ¼r die BIND(C)-Prozedur %qs, jedoch nicht interoperabel mit C, da sie polymorph istVariable %qs bei %L ist in COMMON, aber Initialisierung ist nur in BLOCK DATA erlaubtVariable %qs bei %L kÃ¶nnte mit C inkompatibel sein, aber sie ist BIND(C)Variable %qs bei %L kann nicht innerhalb der bei %L beginnenden Schleife als INTENT(INOUT)-Argument fÃ¼r Funktion %qs definiert werdenVariable %qs bei %L kann nicht innerhalb der bei %L beginnenden Schleife als INTENT(INOUT)-Argument fÃ¼r Unterprogramm %qs definiert werdenVariable %qs bei %L ist nicht in einer Ortsangabe von DO CONCURRENT bei %L angegeben, aber aufgrund von DEFAULT (NONE) erforderlichVariable %qs bei %L mit TYPE(C_PTR) oder TYPE(C_FUNPTR) darf kein Koarray seinVariable %qs bei %L auf undefinierten Wert innerhalb der bei %L beginnenden Schleife gesetzt, als INTENT(OUT)-Argument fÃ¼r Funktion %qsVariable %qs bei %L wird auf undefinierten Wert gesetzt, innerhalb der bei %L beginnenden Schleife, als INTENT(OUT)-Argument fÃ¼r Unterroutine %qsVariable %qs bei %L mit OPTIONAL-Attribut in Prozedur %qs, die BIND(C) istVariable %qs bei %L mit OPTIONAL-Attribut in Prozedur %qs, die jedoch BIND(C) istVariable %qs bei %L mit OPTIONAL-Attribut in Prozedur %qs, die BIND(C) istVariable %qs bei %L mit Koarraykomponente muss ein Nichtzeiger, nichtallozierbares Skalar und damit kein Koarray seinVariable %qs kann nicht in Variablen-Definitionskontext (%s) bei %L in PURE-Prozedur auftretenVariable %qs kann nicht im Ausdruck bei %L auftretenVariable %qs aus Modul %qs mit Bindungsmarke %qs bei %L verwendet denselben globalen Bezeichner wie EntitÃ¤t bei %L aus Modul %qsVariable %qs bei %L wurde keine Zielmarke zugewiesenVariable %qs in %s-Klausel wird in NAMELIST-Anweisung bei %L verwendetVariable %qs in Common-Block %qs bei %C kann nicht BIND(C) sein, da sie nicht global istVariable %qs in gemeinsamem Block %qs bei %C muss mit einer mit C interoperablen Art deklariert sein, da der gemeinsame Block %qs BIND(C) istVariable %qs in gemeinsamem Block %qs bei %L kann nicht mit BIND(C) deklariert werden, da sie nicht global istVariable %qs in gemeinsamem Block %qs bei %L kÃ¶nnte inkompatibel mit C sein, obwohl gemeinsamer Block %qs BIND(C) istVariable %qs in Ortsangabe bei %L wird nicht verwendetVariable %qs ist PROTECTED und kann nicht in einem Zeigerzuordnungskontext (%s) bei %L vorkommenVariable %qs ist PROTECTED und kann nicht in Variablen-Definitionskontext (%s) bei %L auftretenVariable %qs bei %L ist kein DummyargumentVariable %qs wird bei %L vor Anweisung ENTRY verwendet, in der sie ein Parameter istVariable %qs, auf die in concurrent-header bei %L verwiesen wird, darf in LOCAL locality-spec bei %L nicht vorkommenVariable %qs muss in derselben GÃ¼ltigkeitsbereichseinheit wie Â»!$ACC DECLAREÂ« bei %L seinVariable %1$qs bei %3$L mit Binde-Marke %2$qs verwenden denselben globalen Bezeichner wie die EntitÃ¤t bei %4$LIn Spezifikationsausdruck verwendete Variable %qs wird bei %L vor Anweisung ENTRY referenziert, in der sie ein Parameter istVariable %s bei %L des Typs EVENT_TYPE oder mit Subkomponente des Typs EVENT_TYPE muss ein Koarray seinVariable %s bei %L mit LOCK_TYPE oder mit Subkomponente mit LOCK_TYPE muss ein Koarray seinVariable %s bei %L mit NO_ARG_CHECK-Attribut darf nicht die Attribute ALLOCATABLE, CODIMENSION, POINTER oder VALUE habenVariable %s bei %L mit NO_ARG_CHECK-Attribut darf nicht das Attribut INTENT(OUT) habenVariable %s bei %L mit NO_ARG_CHECK-Attribut kann nur als effektives Argument verwendet werdenVariable %s bei %L mit NO_ARG_CHECK-Attribut muss ein Scheinargument seinVariable %s bei %L mit NO_ARG_CHECK-Attribut muss vom Typ TYPE(*) oder von einem numerischen intrinsischen Typ seinVariable %s bei %L mit NO_ARG_CHECK-Attribut muss entweder skalar sein oder ein Feld vermuteter GrÃ¶ÃŸeVariable %s bei %L mit NO_ARG_CHECK-Attribut darf keine Referenz auf Subobjekt habenVariable %s kann nicht INTENT(IN) bei %C seinVariable %s kann nicht in PURE-Prozedur bei %C zugewiesen werdenVariable bei %C ist ein Element eines COMMON-BlocksVariable bei %L wird mehrfach in Klauseln derselben OMP-DECLARE-TARGET-Direktive erwÃ¤hntDie Variable in der gewÃ¶hnlichen Zuweisung bei %L ist eine ProzedurzeigerkomponenteVariable ist USE-verknÃ¼pft mit Â»!$ACC DECLAREÂ« bei %LVariable auÃŸer OMP_OUT oder OMP_IN wird bei %L in Kombinierer von !$OMP DECLARE REDUCTION verwendetVariable auÃŸer OMP_PRIV oder OMP_ORIG wird bei %L in INITIALIZER-Klausel von !$OMP DECLARE REDUCTION verwendetUnbekannter Variablentyp in Zuweisung bei %LVariable mit Attribut NO_ARG_CHECK bei %L ist nur als Argument der intrinsischen Funktionen C_LOC und PRESENT erlaubtVarianten in einer Metadirektive bei %L haben unterschiedliche Assoziationen; erwÃ¤gen Sie die Verwendung eines BLOCK-KonstruktsVarianten in einer Metadirektive bei %L haben unterschiedliche Assoziationen; erwÃ¤gen Sie die Verwendung eines BLOCK-Konstrukts oder BEGIN/END METADIRECTIVEZu verwendendes Vektorbibliotheks-ABI.VektorgrÃ¶ÃŸenkonflikte zwischen AVX10.1 und AVX512, als maximale VektorgrÃ¶ÃŸe wird 512 verwendetFÃ¼r Doppelwort-Operationen vektorisieren.Sicherstellen, dass die Codepfade fÃ¼r die ausgegebenen Meldungen machbar sind.Schleifen versionieren, je nachdem, ob sie eine Schrittweite von eins haben.Multiversionierung virtueller Funktionen wird nicht unterstÃ¼tztWAIT bei %C ist in Fortran 95 nicht erlaubtWAIT-Klausel bei %L erfordert einen skalaren INTEGER-AusdruckWAIT-Anweisung ist in PURE-Prozedur bei %C nicht erlaubtWHERE-Zuweisungsziel bei %L hat ungÃ¼ltige FormWHERE-Maske bei %L hat ungÃ¼ltige FormKlausel WHERE/ELSEWHERE bei %L erfordert ein LOGICAL-FeldBei Â»externÂ«-Deklarationen auÃŸerhalb des Dateisichtbarkeitsbereiches warnen.Bei Â»verdÃ¤chtigenÂ« Konstrukten warnen.Warnen, wenn ein Â»#pragma onceÂ« auÃŸerhalb eines Headers vorkommt.Warnen, wenn Â»newÂ« fÃ¼r Typen mit groÃŸer Ausrichtung aufgerufen wird, ohne dass Â»-faligned-newÂ« angegeben ist.Bei @selector() ohne vorher deklarierte Methoden warnen.Bei C-Konstrukten, die nicht in gemeinsamer Teilmenge von C und C++ sind, warnen.Bei C++-Konstrukten, deren Bedeutung sich zwischen ISO C++ 1998 und ISO C++ 2011 unterscheidet, warnen.Bei C++-Konstrukten, deren Bedeutung sich zwischen ISO C++ 2011 und ISO C++ 2014 unterscheidet, warnen.Bei C++-Konstrukten, deren Bedeutung sich zwischen ISO C++ 2014 und ISO C++ 2017 unterscheidet, warnen.Bei C++-Konstrukten warnen, deren Bedeutung sich zwischen ISO C++ 2017 und ISO C++ 2020 unterscheidet.Bei polymorphen Typen in C++ warnen, bei denen das SchlÃ¼sselwort Â»finalÂ« die CodequalitÃ¤t verbessern wÃ¼rde.Bei virtuellen Methoden in C++ warnen, bei denen das SchlÃ¼sselwort Â»finalÂ« die CodequalitÃ¤t verbessern wÃ¼rde.Vor C++11-Konstrukten in Code warnen, der mit einem Ã¤lteren Standard kompiliert wurde.Bei vererbten Konstruktoren in C++11 warnen, wenn die Basisklasse variadischen Konstruktor hat.Vor C++14-Konstrukten in Code warnen, der mit einem Ã¤lteren Standard kompiliert wurde.Vor C++17-Konstrukten in Code warnen, der mit einem Ã¤lteren Standard kompiliert wurde.Vor C++20-Konstrukten in Code warnen, der mit einem Ã¤lteren Standard kompiliert wurde.Vor C++23-Konstrukten in Code warnen, der mit einem Ã¤lteren Standard kompiliert wurde.Vor C++26-Konstrukten in Code warnen, der mit einem Ã¤lteren Standard kompiliert wurde.Bei GCC-Formatzeichenketten warnen, die fÃ¼r Diagnosemeldungen ungeeignete Zeichenketten enthalten.Warnen, wenn NULL an Parameter, die nicht-NULL erfordern, Ã¼bergeben wird.Bei PCH-Dateien, die gefunden, aber nicht verwendet werden, warnen.Bei USE-Anweisungen, die keinen ONLY-Qualifizierer haben, warnen.Bei Verwendung von __TIME__, __DATE__ oder __TIMESTAMP__ warnen.Vor einem Cast auf einen Referenztyp warnen, der keine zugehÃ¶rige benutzerdefinierte Konvertierungsfunktion verwendet.Bei Zugriffen auf ein innenliegendes Arrayfeld der LÃ¤nge 0 warnen.Bei Ausrichtung von COMMON-BlÃ¶cken warnen.Bei Â»switchÂ«-Anweisungen auf AufzÃ¤hlungen, denen ein Fall fehlt, warnen.Bei leerem KÃ¶rper in einer if- oder else-Anweisung warnen.Bei ungÃ¼ltigen DO-Schleifen warnen.Warnen, wenn ein boolescher Ausdruck mit einer Ganzzahl verglichen wird, deren Wert ungleich true/false ist.Bei PufferÃ¼berlauf in Stringfunktionen wie memcpy und strcpy warnen.Bei Aufrufen nicht explizit deklarierter Prozeduren warnen.Warnen, wenn std::move auf einem lokalen Objekt in einer return-Anweisung aufgerufen wird und dadurch das Ersparen der Kopie verhindert.Warnen, wenn Aufrufe fÃ¼r snprintf und Ã¤hnliche Funktionen die Ausgabe abschneiden.Bei Aufrufen von snprintf und Ã¤hnlichen Funktionen warnen, wenn sie die Ausgabe abschneiden. Entspricht Â»-Wformat-truncation=1Â«.Warnen bei Aufrufen von strcmp und strncmp, die auf Gleichheit geprÃ¼ft werden und die notwendigerweise wahr oder falsch sind, wegen der LÃ¤nge des einen und GrÃ¶ÃŸe des anderen Arguments.Warnen, wenn eine Funktion, die ohne Parameter deklariert wurde, mit Argumenten aufgerufen wird.Bei Aufrufen mit impliziter Schnittstelle warnen.Vor FÃ¤llen warnen, in denen Â»-ftrivial-auto-var-initÂ« eine Auto-Variable nicht initialisieren kann.Warnen, wenn Funktionen in unvertrÃ¤gliche Typen umgewandelt werden.Warnen, wenn Funktionen in unvertrÃ¤gliche Funktionstypen umgewandelt werden.Bei Umwandlungen warnen, die null als Ergebnis haben.Bei Umwandlungen, die Qualifizierer streichen, warnen.Bei catch-Behandlern warnen, die nicht Referenztypen sind.Bei bestimmten Operationen auf booleschen AusdrÃ¼cken warnen.Warnen, wenn Zeichenarrays mit einem Stringliteral initialisiert werden, das zu einem nichtterminierten Zeichenarray fÃ¼hrt.Warnen, wenn Code durch inkompatible Ã„nderungen in psABI beeinflusst wird.Bei Codepfaden warnen, in denen NULL an ein Funktionsargument Ã¼bergeben wird, das nicht NULL sein darf.Bei Codepfaden warnen, in denen ein NULL-Funktionszeiger aufgerufen wird.Bei Codepfaden warnen, in denen ein NULL-Zeiger dereferenziert wird.Bei Codepfaden warnen, in denen ein Aufruf von strtok zu undefiniertem Verhalten fÃ¼hrt.Bei Codepfaden warnen, in denen ein Dateideskriptor mehr als einmal geschlossen werden kann.Bei Codepfaden warnen, in denen ein Dateideskriptor nicht geschlossen wird.Bei Codepfaden warnen, in denen ein Dateideskriptor verwendet wird, ohne auf GÃ¼ltigkeit zu prÃ¼fen.Bei Codepfaden warnen, in denen ein bereits freigegebener Wert verwendet wird.Bei Codepfaden warnen, in denen ein vom Heap reservierter Zeiger nicht freigegeben wird.Bei Codepfaden warnen, in denen ein longjmp zurÃ¼ckspult zu einem jmp_buf, der in einem Stapelrahmen gespeichert wurde, der bereits verlassen wurde.Bei Codepfaden warnen, in denen ein Zeiger freigegeben wird, der nicht vom Heap kommt.Bei Codepfaden warnen, in denen ein Zeiger mehr als einmal freigegeben werden kann.Bei Codepfaden warnen, in denen ein Zeiger auf NULL geprÃ¼ft wird, nachdem er bereits dereferenziert wurde.Bei Codepfaden warnen, in denen ein Zeiger auf einen Puffer einem inkompatiblen Typen zugewiesen wird.Bei Codepfaden warnen, in denen ein Zeiger auf einen bereits verschwundenen Stapelrahmen verwendet wird.Bei Codepfaden warnen, in denen ein Zeiger, der mÃ¶glicherweise NULL ist, dereferenziert wird.Bei Codepfaden warnen, in denen ein Wert, der mÃ¶glicherweise NULL ist, an ein Funktionsargument Ã¼bergeben wird, das nicht NULL sein darf.Bei Codepfaden warnen, in denen ein Lese- oder Schreibzugriff auf einem geschlossenen Dateideskriptor versucht wird.Bei Codepfaden warnen, in denen Bits mit Anzahl >= Typbreite geschoben werden.Bei Codepfaden warnen, in denen Bits mit negativer Anzahl geschoben werden.Bei Codepfaden warnen, in denen eine stdio-Datei mehr als einmal geschlossen werden kann.Bei Codepfaden warnen, in denen eine stdio-Datei nicht geschlossen wird.Bei Codepfaden warnen, in denen va_list nach va_end verwendet wird.Bei Codepfaden warnen, in denen eine Lese- oder Schreiboperation auf einem Puffer auÃŸerhalb der Puffergrenzen stattfindet.Bei Codepfaden warnen, in denen Â»assertÂ« mit einem unvalidierten Wert aufgerufen wird.Bei Codepfaden warnen, in denen eine Funktion, die async-signal-unsafe ist, aus einem Signalbehandler heraus aufgerufen wird.Bei Codepfaden warnen, in denen ein Puffer vom Stapelspeicher an putenv Ã¼bergeben wird.Bei Codepfaden warnen, in denen eine Operation in der falschen Lebensphase eines Dateideskriptors versucht wird.Bei Codepfaden warnen, in denen eine Operation auf der falschen Art von Dateideskriptor versucht wird.Bei Codepfaden warnen, in denen ein uninitialisierter Wert verwendet wird.Bei Codepfaden warnen, in denen ein nicht Ã¼berprÃ¼fter Wert als Divisor verwendet wird.Bei Codepfaden warnen, in denen ein nicht Ã¼berprÃ¼fter Wert als Zeiger-Offset verwendet wird.Bei Codepfaden warnen, in denen ein nicht Ã¼berprÃ¼fter Wert als GrÃ¶ÃŸe verwendet wird.Bei Codepfaden warnen, in denen ein nicht Ã¼berprÃ¼fter Wert zur Speicherallozierung verwendet wird.Bei Codepfaden warnen, in denen ein nicht Ã¼berprÃ¼fter Wert als Arrayindex verwendet wird.Bei Codepfaden warnen, in denen Gleitkommaarithmetik verwendet wird, obwohl exakte Berechnungen erforderlich sind.Bei Codepfaden warnen, in denen eine Zeigerdifferenz zu undefiniertem Verhalten fÃ¼hrt.Bei Codepfaden warnen, in denen ein Lesezugriff versucht wird, obwohl die Datei nur zum Schreiben geÃ¶ffnet wurde, oder umgekehrt.Bei Codepfaden warnen, in denen sensible Daten Ã¼ber eine Sicherheitsgrenze hinweg kopiert werden.Bei Codepfaden warnen, in denen sensible Daten in eine Datei geschrieben werden.Bei Codepfaden warnen, in denen die falsche Deallozierungsfunktion aufgerufen wird.Bei Codepfaden warnen, in denen Ã¼berlappende Puffer zu undefiniertem Verhalten fÃ¼hren wÃ¼rden.Bei Codepfaden warnen, in denen va_arg zu oft auf einer va_list verwendet wird.Bei Codepfaden warnen, in denen va_arg einen falschen Typ verwendet.Bei Codepfaden warnen, in denen va_start oder va_copy ohne zugehÃ¶riges va_end verwendet wird.Bei Codepfaden warnen, die anscheinend zu einer Endlosschleife fÃ¼hren.Bei Codepfaden warnen, die anscheinend zu endloser Rekursion fÃ¼hren.Bei Codepfaden warnen, in denen in ein const-Objekt geschrieben wird.Bei Codepfaden warnen, in denen in ein Stringliteral geschrieben wird.Bei Code warnen, der strict-aliasing-Regeln verletzen kÃ¶nnte.Beim Vergleich verschiedener Enum-Typen warnen.Beim Vergleich zwischen zwei Operanden vom Typ Array warnen.Bei Ganzzahldivisionen durch Null zur Ãœbersetzungszeit warnen.Bei Ganzzahldivisionen mit abgeschnittenem Ergebnis warnen.Bei Erzeugung temporÃ¤rer Felder warnen.Bei Â»hÃ¤ngendem elseÂ« warnen.Bei Deklarationen von EntitÃ¤ten warnen, in denen Attribute fehlen, die bei verwandten EntitÃ¤ten jedoch angegeben wurden.Beim LÃ¶schen polymorpher Objekte mit nicht-virtuellen Destruktoren warnen.Vor der Verwendung des veralteten AltiVec-Typen Â»vector long ...Â« warnen.Bei veralteten arithmetischen Umwandlungen von Operanden mit AufzÃ¤hlungstypen warnen.Bei veralteten arithmetischen Umwandlungen von Operanden warnen, bei denen der eine von einem AufzÃ¤hlungstyp ist und der andere eine Gleitkommazahl.Warnen, wenn in der Deklaration einer Varargs-Funktion veralteterweise das Komma vor Â»...Â« weggelassen wird.Warnen, wenn zwischen "" und dem Suffix in einem benutzerdefinierten Literaloperator ein Leerzeichen steht (veraltet).Warnen, wenn der Qualifizierer Â»volatileÂ« in veralteter Form eingesetzt wird.Bei Divisionen von zwei Â»sizeofÂ«-Operatoren warnen, wenn der erste auf ein Array angewendet wird und der zweite nicht die GrÃ¶ÃŸe des Arrayelements ist.Bei doppelten Zweigen in if-else-Anweisungen warnen.Warnen, wenn in einer if-else-if-Kette doppelte Bedingungen auftauchen.Bei Vermischung von enum/integer-Typen warnen.Bei Â»switchÂ«-Anweisungen auf AufzÃ¤hlungen ohne Â»default:Â«-Fall warnen.Bei Â»switchÂ«-Anweisungen auf AufzÃ¤hlungen, denen ein Fall fehlt und die kein Â»default:Â« haben, warnen.Bei PrÃ¼fung auf Gleichheit mit REAL- oder COMPLEX-AusdrÃ¼cken warnen.Bei Merkmalen, die in ISO C23, aber noch nicht in ISO C11 verfÃ¼gbar sind, warnen.Bei Merkmalen, die in ISO C2Y, aber nicht in ISO C23 verfÃ¼gbar sind, warnen.Bei Merkmalen, die in ISO C99, aber nicht in ISO C90 verfÃ¼gbar sind, warnen.Bei Merkmalen, die in ISO C11, aber nicht in ISO C99 verfÃ¼gbar sind, warnen.Bei Merkmalen, die in traditionellem C nicht verfÃ¼gbar sind, warnen.Bei Formatstrings, die keine Literale sind, warnen.Bei Formatstrings, die NUL-Bytes enthalten, warnen.Beim Entfernen von Funktionsaufrufen warnen.Bei Funktionsaufrufen mit Formatzeichenketten warnen, die hinter das Ende der Zielregion schreiben.Bei Funktionsaufrufen mit Formatzeichenketten warnen, die hinter das Ende der Zielregion schreiben. Entspricht Â»-Wformat-overflow=1Â«.Warnen, wenn in einer Funktionsdefinition die Parameternamen fehlen.Bei Funktionen im K&R-Stil, die Parameter ohne Typangabe haben, warnen.Bei Arithmetik mit Funktionszeigern warnen.Bei Funktionen, die Kandidaten fÃ¼r __attribute__((cold)) sein kÃ¶nnten, warnen.Bei Funktionen, die Kandidaten fÃ¼r __attribute__((const)) sein kÃ¶nnten, warnen.Bei Funktionen, die Kandidaten fÃ¼r __attribute__((malloc)) sein kÃ¶nnten, warnen.Bei Funktionen, die Kandidaten fÃ¼r __attribute__((noreturn)) sein kÃ¶nnten, warnen.Bei Funktionen, die Kandidaten fÃ¼r __attribute__((pure)) sein kÃ¶nnten, warnen.Bei Funktionen, die Kandidaten fÃ¼r __attribute__((returns_nonnull)) sein kÃ¶nnten, warnen.Bei Funktionen, die Kandidaten fÃ¼r Formatattribute sein kÃ¶nnten, warnen.Vor globalen Funktionen ohne vorherige Deklaration warnen.Bei globalen Funktionen ohne Prototypen warnen.Vor globalen Variablen ohne vorherige Deklaration warnen.Bei impliziten Umwandlungen von enum-Typen warnen.Bei impliziten Umwandlungen von Â»floatÂ« nach Â»doubleÂ« warnen.Bei impliziten Deklarationen warnen.Bei impliziten Funktionsdeklarationen warnen.Warnen, wenn Member mit flexiblem Arraytyp falsch verwendet werden, gemÃ¤ÃŸ der Stufe von Â»-fstrict-flex-arraysÂ«.Bei unpassender Attributverwendung warnen.Bei inkompatiblen Umwandlungen zwischen Zahlen und Zeigern (in beide Richtungen) warnen.Bei ungÃ¼ltigen OpenACC-Dimensionen warnen.Bei ungÃ¼ltigen UTF-8-Zeichen warnen.Bei ungÃ¼ltigen Formen von begrenzten oder benannten Escapesequenzen warnen.Bei ungÃ¼ltigen Verwendungen des Makros Â»offsetofÂ« warnen.Warnen, wenn eine Sprungmarke vor einer Deklaration oder am Ende einer zusammengesetzten Anweisung steht.Warnen, wenn der Leerraum am Zeilenanfang stilistisch unsauber ist, auÃŸer in rohen Stringliteralen.Bei mÃ¶glicherweise fehlendem SchlÃ¼sselwort Â»requiresÂ« warnen.Bei in der Hauptdatei definierten, ungenutzten Makros warnen.Bei Makros warnen, deren Header-Einheits-Definitionen nicht Ã¼bereinstimmen.Bei mÃ¶glicherweise nicht initialisierten automatischen Variablen warnen.Warnen, wenn Deklarationen von VLA-Parametern nicht Ã¼bereinstimmen.Bei widersprÃ¼chlichen Deklarationen von Arrayparametern und unsicherem Zugriff auf diese warnen.Bei fehlendem Â»&Â« in fortgesetzten Zeichenkonstanten warnen.Bei fehlenden Feldern in struct-Initialisierungen warnen.Warnen, wenn Deallokationsfunktionen mit expliziter GrÃ¶ÃŸenangabe fehlen.Bei Missbrauch von Pragmas warnen.Bei den meisten impliziten Umwandlungen warnen.Bei mehreren Deklarationen desselben Objektes warnen.Bei verengenden Umwandlungen innerhalb von { }, die in C++11 unzulÃ¤ssig sind, warnen.Bei nicht-virtuellen Destruktoren warnen.Bei fehlenden ISO msvcrt scanf/printf Breiten-Erweiterungen warnen.Warnung vor unsinnigen Werten von Â»--param destructive-interference-sizeÂ« oder Â»--param constructive-interference-sizeÂ«.Bei Optimierungen, die annehmen, dass vorzeichenbehafteter Ãœberlauf undefiniert ist, warnen.Bei Ãœberlauf in arithmetischen AusdrÃ¼cken warnen.Bei Ã¼berladenen virtuellen Funktionsnamen warnen.Beim Ãœberschreiben von Initialisierungen mit Seiteneffekten warnen.Beim Ãœberschreiben von Initialisierungen ohne Seiteneffekte warnen.Bei gepackten Bitfeldern, deren Offset sich in GCC 4.4 geÃ¤ndert hat, warnen.Warnen, wenn ein Zeiger oder eine Referenz auf eine lokale oder temporÃ¤re Variable an ein musttail-Aufrufargument Ã¼bergeben wird.Warnen, wenn Zeigerumwandlungen die Ausrichtung vergrÃ¶ÃŸern.Warnen, wenn ein Zeiger oder eine Referenz auf eine lokale oder temporÃ¤re Variable mÃ¶glicherweise zu einem musttail-Aufruf entwischt.Bei positioneller Initialisierung von Strukturen warnen, die designierte Initialisierungen erfordern.Bei mÃ¶glichem Aliasing von Dummy-Argumenten warnen.Vor mÃ¶glichen Sicherheitsproblemen mit Formatfunktionen warnen.Bei mÃ¶glichen VerstÃ¶ÃŸen gegen Sequenzpunktregeln warnen.Bei mÃ¶glicherweise falschen Arrayindexen in do-Schleifen warnen.Bei mÃ¶glicherweise fehlenden Klammern um Initialisierungen warnen.Bei mÃ¶glicherweise fehlenden Klammern warnen.Bei mÃ¶glicherweise geschachtelten Blockkommentaren und C++-Kommentaren, die mehr als eine physikalische Zeile umfassen, warnen.Vor potenziell suboptimalen Entscheidungen im Zusammenhang mit OpenACC-ParallelitÃ¤t warnen.Bei UnregelmÃ¤ÃŸigkeiten in printf/scanf/strftime/strfmon-Formatstrings warnen.Bei fragwÃ¼rdiger Verwendung der Makros, die variable Argumente ermitteln, warnen.Warnen, wenn das Quellarray Ã¼ber das Ende hinaus gelesen wird, in Speicherfunktionen wie Â»memchrÂ« und Â»memcpyÂ«.Bei Gleitkommakonstanten-Literalen mit Exponentenbuchstaben Â»qÂ« warnen.Bei redundanten Aufrufen von std::move warnen.Bei RÃ¼ckgabe eines Zeigers/Referenz an lokale oder temporÃ¤re Variable warnen.Bei zurÃ¼ckgegebenen Strukturen, Unions oder Arrays warnen.Bei Semikolon nach Funktionsdefinition innerhalb einer Klasse warnen.Vor Vorzeichenunterschieden mit Formatfunktionen warnen.Bei Vergleichen von vorzeichenbehaftet mit vorzeichenlos warnen.Bei simple-template-id in einem Konstruktor oder Destruktor warnen.WÃ¤hrend der Optimierungen zur Bindezeit bei einigen Verletzungen der One-Definition-Rule aus C++ warnen.Bei Anweisungen warnen, die zwischen Â»switch (â€¦)Â« und dem ersten Â»case:Â« stehen.Bei verirrten Symbolen hinter #elif und #endif warnen.Bei strftime-Formaten, die 2-stellige Jahreszahlen erzeugen, warnen.Vor Indizes mit Typ Â»charÂ« warnen.Vor verdÃ¤chtigem OpenMP-Code warnen.Vor verdÃ¤chtigen Aufrufen von calloc-Ã¤hnlichen Funktionen warnen, bei denen ein sizeof-Ausdruck die Anzahl angibt statt der ElementgrÃ¶ÃŸe.Bei verdÃ¤chtigen Aufrufen von memset warnen, wenn das dritte Argument die Anzahl der Elemente enthÃ¤lt, aber nicht mit der ElementgrÃ¶ÃŸe multipliziert.Bei verdÃ¤chtigen Aufrufen von memset warnen, wenn das dritte Argument eine Null ist, das zweite jedoch nicht.Vor verdÃ¤chtigen Deklarationen von Â»mainÂ« warnen.Warnen, wenn zwei sizeof-AusdrÃ¼cke durcheinander geteilt werden, die nicht korrekt mit Zeigern funktionieren.Bei verdÃ¤chtigen Aufrufen bestimmter Zeichenkettenfunktionen warnen, wenn im Argument sizeof vorkommt.Vor verdÃ¤chtigem Gebrauch von Speicheradressen warnen.Warnen, wenn die Vergleichswerte einer switch-Anweisung auÃŸerhalb des fÃ¼r den Typ erreichbaren Bereichs liegen.Bei switch-Anweisungen mit booleschem Steuerausdruck warnen.Warnen, wenn Templates TU-lokale EntitÃ¤ten innerhalb eines Moduls benennen.Warnen, wenn das globale Modulfragment nicht nur PrÃ¤prozessordirektiven enthÃ¤lt.Bei den merkwÃ¼rdigsten syntaktischen Mehrdeutigkeiten warnen.Bei Dingen warnen, die sich zwischen der aktuellen Â»-fabi-versionÂ« und der angegebenen Version Ã¤ndern.Bei Dingen warnen, die sich bei der Ãœbersetzung mit einem ABI-konformen Compiler Ã¤ndern werden.Warnen, wenn Leerzeichen am Zeilenende stehen, auÃŸer in rohen Stringliteralen.Warnen, wenn Leerzeichen am Zeilenende stehen, auÃŸer in rohen Stringliteralen. Gleichwertig zu Â»-Wtrailing-whitespace=blanksÂ« wenn eingeschaltet und zu Â»-Wtrailing-whitespace=noneÂ« wenn ausgeschaltet.Bei abgeschnittenen ZeichenausdrÃ¼cken warnen.Bei abgeschnittenen Quelltextzeilen warnen.Bei Abschneiden in Stringfunktionen wie strncat und strncpy warnen.In Deklarationen mit Alias-Attributen bezÃ¼glich Typsicherheit und Ã¤hnlicher Fehler und IrrtÃ¼mer warnen.Bei als WÃ¤chter verwendetem, nicht umgewandeltem NULL warnen.Bei Unterlauf numerischer KonstantenausdrÃ¼cke warnen.Bei nicht initialisierten automatischen Variablen warnen.Bei Funktionsdeklarationen ohne Prototyp warnen.Bei nicht erkannten Pragmas warnen.Warnen bei unsicheren Makros, die zu mehreren Anweisungen expandieren und als KÃ¶rper bei if, else, while, switch oder for verwendet werden.Bei Gleitkommakonstanten ohne Suffix warnen.Bei nicht unterstÃ¼tzten Features im ThreadSanitizer warnen.Bei nicht verwendeten Dummy-Argumenten warnen.Warnen, wenn das experimentelle Function-Multi-Versioning verwendet wird.Bei Verwendung von Zeichenkonstanten mit mehreren Zeichen warnen.Bei unnÃ¼tzen Typumwandlungen warnen.Bei durch den Benutzer angegebenen EinfÃ¼gepfaden, die nicht vorhanden sind, warnen.Bei Verwendungen von Deklarationen mit __attribute__((deprecated)) warnen.Bei Verwendungen von Deklarationen mit __attribute__((warning)) warnen.Warnen, wenn innerhalb eines Arrayindex-Ausdrucks ein Komma-Operator verwendet wird.Bei Verwendung der Speicherklassenangabe Â»registerÂ« warnen.Bei Verwendung von std::initializer_list warnen, wenn dadurch baumelnde Zeiger entstehen kÃ¶nnen.Bei Verwendung variadischer Makros warnen.Bei Variablen, die von Â»longjmpÂ« oder Â»vforkÂ« geÃ¤ndert werden kÃ¶nnten, warnen.Bei Variablen, die mit sich selbst initialisiert werden, warnen.Bei VerstÃ¶ÃŸen gegen die Stil-Richtlinien von Â»Effective C++Â« warnen.Bei xor-Operatoren warnen, die so aussehen, als sei Potenzieren gemeint.Bei Formaten der LÃ¤nge null warnen.Bei DO-Schleifen mit null DurchlÃ¤ufen warnen.Bei Aufrufen von Allozierungsfunktionen warnen, bei denen als GrÃ¶ÃŸe 0 angegeben ist.Bei Verwendung von bedingt unterstÃ¼tzten Konstrukten warnen.Bei Umwandlung von NULL in Nicht-Zeiger-Typ oder umgekehrt warnen.Warnen bei Deallokationsaufrufen mit Argumenten, die von nicht Ã¼bereinstimmenden Allokationsfunktionen zurÃ¼ckgegeben werden.Bei impliziten Typumwandlungen zwischen vorzeichenbehafteten und vorzeichenlosen Ganzzahlen warnen.Bei impliziten Typumwandlungen warnen, die die PrÃ¤zision von Gleitkommazahlen reduzieren.Bei impliziten Typumwandlungen warnen, die einen Wert Ã¤ndern kÃ¶nnten.Bei unendlich rekursiven Aufrufen warnen.Warnen bei NichtÃ¼bereinstimmung zwischen Aufrufen der Operatoren Â»newÂ« oder Â»deleteÂ« und dem entsprechenden Aufruf der Allokations- oder Deallokationsfunktion.Bei fehlenden Parametertypen in Funktionsdeklarationen warnen.Bei veralteter Verwendung in einer Deklaration warnen.Bei Placement-New-AusdrÃ¼cken mit undefiniertem Verhalten warnen.Bei verdÃ¤chtigen Ganzzahl-AusdrÃ¼cken im Boolean-Kontext warnen.Warnen bei unsicherem direkten Schreibzugriff in Speicher von Klassen-Objekten.Vor der Verwendung von Zeigern auf Auto-Variablen, deren Lebensdauer abgelaufen ist, warnen.Vor der Verwendung von Zeigern auf freigegebenen Speicher warnen.Bei spekulativen Compilierungen wie zum Beispiel __traits(compiles) warnen.Warnen, wenn Â»definedÂ« auÃŸerhalb von Â»#ifÂ« verwendet wird.Warnen, wenn ein C++17-noexcept-Funktionstyp den gemangelten Namen eines Symbols beeinflusst.Warnen, wenn eine Typumwandlung im C-Stil im Programm verwendet wird.Warnen, wenn der RÃ¼ckgabewert der mit dem Attribut warn_unused_result definierten Funktion ignoriert wird.Warnung, wenn eine Klassenschnittstelle keine Superklasse hat. Wurzelklassen kÃ¶nnen ein Attribut verwenden, um diese Warnung zu unterdrÃ¼cken.Warnen, wenn ein Klassentyp eine Basis oder ein Feld hat, deren Typ den unbenannten Namensraum verwendet oder von einem Typen ohne Bindung abhÃ¤ngt.Warnen, wenn ein Vergleich immer zu Â»trueÂ« oder Â»falseÂ« auswertet.Warnen, wenn ein Vergleich durch beschrÃ¤nkten Wertebereich des Datentyps stets Â»trueÂ« oder Â»falseÂ« ist.Warnen, wenn veraltetes Compiler-Merkmal, Klasse, Methode oder Feld verwendet wird.Warnen, wenn eine Funktion die Anzahl der Pfade (gesteuert durch Â»-fpath-coverage-limitÂ«) Ã¼berschreitet und die Pfadabdeckung die Instrumentierung der Funktion aufgibt. Der Grenzwert ist annÃ¤hernd und konservativ, und die Abdeckung kÃ¶nnte auch dann aufgeben, wenn die tatsÃ¤chliche Anzahl etwas unter dem Grenzwert liegt.Warnen, wenn eine Funktion alloca verwendet oder ein Array dynamischer GrÃ¶ÃŸe erzeugt.Warnen, wenn eine lokale Deklaration eine Instanzvariable verdeckt.Warnen, wenn Schleife mit konstanter Anzahl von DurchlÃ¤ufen zu undefiniertem Verhalten fÃ¼hrt.Warnen, wenn fÃ¼r eine Eigenschaft eines Objective-C-Objektes keine Zuweisungssemantik spezifiert ist.Warnen, wenn ein Selektor mehrere Methoden hat.Warnen, wenn eine SIMD-Direktive vom Vektorisierer-Kostenmodell Ã¼bersteuert wird.Warnen, wenn RahmengrÃ¶ÃŸe einer einzelnen Funktion die angegebene RahmengrÃ¶ÃŸe Ã¼berschreitet.Warnen, wenn Zeichenkette lÃ¤nger als die grÃ¶ÃŸte vom Standard angegebene portable LÃ¤nge ist.Bei Teilobjekt mit Attribut abi_tag warnen, das das Gesamtobjekt nicht hat.Warnen, wenn ein throw-Ausdruck garantiert in einem Aufruf von terminate() endet.Warnen, wenn eine Benutzer-Prozedur denselben Namen wie ein Intrinsic hat.Warnen, wenn ein Array variabler LÃ¤nge verwendet wird.Warnen, wenn virtuelle Basis einen nicht trivialen Zuweisungsoperator (move) hat.Warnen, wenn ein MCU-Name unbekannt ist oder mit anderen Optionen unvertrÃ¤glich ist (Vorgabe: eingeschaltet).Warnen, wenn eine zusÃ¤tzliche enum-base in einem elaborated-type-specifier verwendet wird.Warnen, wenn auf ein Array auÃŸerhalb der Grenzen zugegriffen wird.Warnen, wenn eine Parameterdefinition im alten Stil verwendet wird.Warnen, wenn ein undefiniertes Makro in einer #if-Anweisung verwendet wird.Warnen, wenn ein Zeiger mit Â»nonnullÂ«-Attribut mit NULL verglichen wird.Warnen, wenn konstante CFString-Objekte unportable Zeichen enthalten.Warnen, wenn Konstruktoren oder Destruktoren mit PrioritÃ¤ten von 0 bis 100 verwendet werden.Warnen, wenn die Umwandlung eines Ergebnisses von arithmetischen Berechnungen einen falschen Wert ergeben kÃ¶nnte, selbst wenn die Operanden korrekt umgewandelt werden.Warnen, wenn das Dereferenzieren eines Nullzeigers zu fehlerhaftem oder undefiniertem Verhalten fÃ¼hren kann.Warnen, wenn devices.csv nicht gefunden wird oder es Probleme beim Einlesen gibt (Vorgabe: an).Warnen, wenn AusdrÃ¼cke so kompliziert sind, dass sie nicht vollstÃ¤ndig verfolgt werden kÃ¶nnen.Warnen, wenn geerbte Methoden nicht implementiert sind.Warnen, wenn das Linksschieben eines vorzeichenbehafteten Werts Ã¼berlÃ¤uft.Warnen, wenn eine negative Zahl nach links geschoben wird.Warnen, wenn Schleifen getauscht wurden.Bei zu vielen Argumenten fÃ¼r eine Funktion (anhand Formatzeichenkette) warnen.Bei Vergleichen von Zeigern unterschiedlicher Typen ohne Cast warnen.Warnen, wenn Qualifizierer von Arrays gestrichen werden, die Zeigerziele sind.Warnen, wenn Schiebe-Anzahl >= Breite des Typs ist.Warnen, wenn Schiebe-Anzahl negativ ist.Bei Tests von Gleitkommawerten auf Gleichheit warnen.Warnen, wenn die ISR falschgeschrieben ist, beispielsweise ohne __vector-PrÃ¤fix. Voreinstellung: eingeschaltet.Warnen, wenn das NSObject-Attribut auf etwas Anderes als typedef angewendet wird.Warnen, wenn sich der Adressraum einer Adresse Ã¤ndert.Warnen, wenn der Code so kompliziert ist, dass er nicht vollstÃ¤ndig analysiert werden kann.Warnung, wenn die angegebene RÃ¼ckgabewertoptimierung nicht durchgefÃ¼hrt wird, obwohl sie erlaubt ist.Warnen, wenn der Zeiger in einer Zeigerzuweisung sein Ziel Ã¼berleben kÃ¶nnte.Bei UnvertrÃ¤glichkeit eines Variablentyps mit C warnen.Warnen, wenn Trigraphen auftreten, die die Bedeutung des Programmes beeinflussen kÃ¶nnten.Warnen, wenn Typqualifizierer von Zeigern ignoriert werden.Wenn Typsignaturen der Kandidatenmethoden nicht exakt passen, warnen.Warnen, wenn eine Funktion aufgrund eines ungÃ¼ltigen Zeilennummer-Makros frÃ¼her endet als sie beginnt.Warnen, wenn Profile in Â»-fprofile-useÂ« nicht existieren.Warnen, wenn Profile in Â»-fprofile-useÂ« nicht zueinander passen.Bei Prototypen warnen, die zu anderen Typumwandlungen fÃ¼hren wÃ¼rden, wenn der Prototyp nicht angegeben wÃ¤re.Bei jeglicher Verwendung von alloca warnen.Bei direkter Mehrfachvererbung warnen.Bei direkter virtueller Vererbung warnen.Bei Intrinsics, die nicht im gewÃ¤hlten Standard vorhanden sind, warnen.Bei Namensraum-Definition warnen.Bei primÃ¤rer Deklaration von Templates warnen.Bei verdÃ¤chtigen Aufrufen von Standardfunktionen warnen, die absolute Werte berechnen.Bei verdÃ¤chtigen Konstrukten warnen, an denen die umgekehrte skalare Speicherreihenfolge beteiligt ist.Warnen, dass Â»-fno-automaticÂ« Rekursion kaputtmachen kÃ¶nnte.Warnen, wenn nach dem #ifndef eines HeaderwÃ¤chters ein #define eines unterschiedlichen Makros kommt und das HeaderwÃ¤chtermakro am Ende des Headers nicht definiert ist.Warnen, wenn Â»-fhardenedÂ« eine Option nicht aktiviert hat.Warnen, wenn __builtin_frame_address oder __builtin_return_address auf unsichere Weise verwendet werden.Warnen, wenn die eingebauten Funktionen __sync_fetch_and_nand und __sync_nand_and_fetch verwendet werden.Warnen, wenn eine #warning-Direktive verwendet wird.Warnen, wenn eine Basis aufgrund von Mehrdeutigkeit im abgeleiteten Typ unzugÃ¤nglich wird.Warnen, wenn eine eingebaute Funktion mit der falschen Signatur deklariert wird.Bei undefiniertem oder redefiniertem eingebauten PrÃ¤prozessormakro warnen.Warnen, wenn eine Klasse neudeklariert oder mit einem unpassenden KlassenschlÃ¼ssel auf sie verwiesen wird.Warnen, wenn auf eine Klasse oder einen AufzÃ¤hlungstyp mit einem redundanten KlassenschlÃ¼ssel verwiesen wird.Warnung, wenn eine Bedingung zu viele Terme hat und die Profilierung der Bedingungsabdeckung die Instrumentierung des Ausdrucks aufgibt.Warnen, wenn eine konstante Variable nicht verwendet wird.Warnen, wenn eine Umwandlungsfunktion niemals aufgerufen werden kann, aufgrund des Umwandlungs-Zieltypen.Warnen, wenn eine Deklaration keinen Typ angibt.Warnen, wenn in einer Deklaration const, volatile, restrict oder _Atomic doppelt angegeben ist.Warnen, wenn eine Deklaration hinter einer Anweisung gefunden wird.Warnen, wenn eine Funktion ungenutzt bleibt.Warnen, wenn eine Funktion niemals einen konstanten Ausdruck liefert.Warnen, wenn ein Funktionsparameter zwar gesetzt, aber nicht verwendet wird.Warnen, wenn ein Funktionsparameter nicht verwendet wird.Warnen, wenn ein Sprung die Initialisierung einer Variable Ã¼berspringt.Warnen, wenn eine Sprungmarke ungenutzt bleibt.Warnen, wenn Feldvariable auf linker Seite wiederholt reserviert wird.Warnen, wenn Variable auf linker Seite wiederholt reserviert wird.Warnen, wenn ein Literal 0 als NULL-Zeiger verwendet wird.Warnen, wenn ein logischer Operator verdÃ¤chtigerweise immer zu Â»trueÂ« oder Â»falseÂ« auswertet.Warnen, wenn ein Â»noexceptÂ«-Ausdruck zu Â»falseÂ« auswertet, obwohl der Ausdruck nicht werfen kann.Warnen, wenn Zeiger zugewiesen werden, die auf Typen mit unterschiedlichem Vorzeichenbesitz zeigen.Bei Typkonvertierung von Zeiger auf Ganzzahl anderer Breite warnen.Warnen, wenn ein Zeiger mit '\0' verglichen wird.Warnen, wenn eine bereichsbasierte for-Schleife unnÃ¶tige Kopien erzeugt.Warnen, wenn eine Referenz an ein temporÃ¤res Objekt gebunden ist, dessen Lebenszeit abgelaufen ist.Warnen, wenn eine Registervariable als Â»volatileÂ« deklariert ist.Warnen, wenn eine spezielle AufzÃ¤hlung mit dem falschen Grundtyp deklariert wird.Warnen, wenn Zeichenkette oder Zeichenliteral gefolgt von einem benutzerdefinierten Suffix auftritt, der nicht mit Unterstrich anfÃ¤ngt.Warnen, wenn eine Struktur, die ein flexibles C99-Array-Mitglied als letztes Feld enthÃ¤lt, nicht am Ende einer anderen Struktur steht.Warnen, wenn in einem switch-Block ein case durchfÃ¤llt.Warnen, wenn ein Wert mit Â»std::moveÂ« in sich selbst verschoben wird.Warnen, wenn eine Variable zwar gesetzt, aber nicht verwendet wird.Warnen, wenn eine Variable nicht verwendet wird.Warnen, wenn Vektoroperation auÃŸerhalb von SIMD kompiliert wird.Warnen, wenn alle Konstruktoren und Destruktoren privat sind.Warnen, wenn bei einer Zuweisung der allozierte Speicherplatz nicht fÃ¼r den Zieltyp des Zeigers ausreicht.Warnen, wenn ein Argument fÃ¼r einen Â»restrictÂ«-Parameter ein anderes Argument Ã¼berlagert.Warnen, wenn ein Parameter des atomaren Speichermodells erkennbar auÃŸerhalb des Wertebereiches ist.Warnen, wenn ein Ausnahmebehandler von einem anderen Behandler Ã¼berdeckt wird.Warnen, wenn eine explizit vorgegebene Funktion gelÃ¶scht wird.Warnen, wenn ein Ausdruckswert nicht verwendet wird.Warnen, wenn eine inline-Funktion nicht als solche erzeugt werden kann.Warnen, wenn ein Optimierungsdurchgang ausgeschaltet ist.Warnen, wenn die Argumente von externen Prozeduren nicht passen.Beim Versuch der Freigabe eines Nicht-Heap-Objektes warnen.Bei Umwandlung des Typs von Zeigern auf Elementfunktionen warnen.Warnen, wenn Â»deleteÂ« mit einem Zeiger auf einen unvollstÃ¤ndigen Typen aufgerufen wird.Warnen, wenn Felder in einer gepackten Struktur nicht ausgerichtet sind.Warnen, wenn ein logisches Nicht im linken Operanden eines Vergleichs verwendet wird.Warnen, wenn mehrere unterschiedliche schnelle Interruptbehandlungsroutinen in Ãœbersetzungseinheit sind.Warnen, wenn Nicht-Template-Friend-Funktionen innerhalb eines Templates deklariert werden.Warnen, wenn StapelzerstÃ¶rungsschutz aus irgendeinem Grund nicht erzeugt wird.Warnen, wenn eine lokale Variable eine andere lokale Variable oder einen Parameter mit gleichem Typ Ã¼berdeckt.Warnen, wenn eine lokale Variable eine andere lokale Variable oder einen Parameter Ã¼berdeckt.Warnen, wenn eine Variable eine andere Ã¼berdeckt (global).Warnen, wenn eine Variable eine andere Ã¼berdeckt. Entspricht Â»-Wshadow=globalÂ«.Warnen, wenn Ãœberladung zur Umwandlung von vorzeichenlos zu vorzeichenbehaftet fÃ¼hrt.Warnen, wenn AuffÃ¼llen benÃ¶tigt wird, um Strukturelemente auszurichten.Warnen beim Ableiten von Klassentemplateargumenten an Typen ohne Ableitungshinweise.Warnen, wenn Profiling-Instrumentierung verlangt wurde, aber auf eine bestimmte Funktion nicht angewandt werden konnte.Warnen, wenn sizeof auf einen Funktionsparameter angewendet wird, der als Array deklariert ist.Warnen, wenn die Adresse eines gepackten Elements einer Struktur oder Union verwendet wird.Warnen, wenn der Compiler Code umsortiert.Warnen, wenn Feld in einer Struktur nicht ausgerichtet ist.Warnen, wenn die EinrÃ¼ckung des Codes nicht der Blockstruktur entspricht.Warnen, wenn das Â»packedÂ«-Attribut keine Auswirkung auf Strukturanordnung hat.Warnen, wenn das SchlÃ¼sselwort Â»templateÂ« nach einem Token fÃ¼r Memberzugriff in einem abhÃ¤ngigen Memberzugriff-Ausdruck fehlt, wenn dieser Member ein Template ist.Bei Typumwandlung in Zeiger von Ganzzahl anderer GrÃ¶ÃŸe warnen.Bei Zeiger-Umwandlungen zwischen inkompatiblen Zeigertypen warnen.Bei lokal in Funktionen definierten, aber nicht verwendeten Typedefs warnen.Bei StandardrÃ¼ckgabetyp Â»intÂ« fÃ¼r Funktionen (C) und inkonsistenten RÃ¼ckgabetypen (C++) warnen.Warnen, wenn ein Trampolin generiert wird.Immer warnen, wenn eine Objective-C-Zuweisung vom Garbage Collector abgefangen wird.Warnen, wenn Attribute ignoriert werden.Warnen, wenn Typqualifizierer ignoriert werden.Warnen, wenn eine Funktion mit RÃ¼ckgabetyp Â»voidÂ« einen nicht-void-Ausdruck zurÃ¼ckgibt, oder wenn eine Funktion mit RÃ¼ckgabetyp ungleich Â»voidÂ« keinen Wert zurÃ¼ckgibt.WarnungIn cobol1.c sollte niemals ein ungleiches dash-main erscheinenWenn weder Â»signedÂ« noch Â»unsignedÂ« angegeben wurden, das Bitfeld vorzeichenbehaftet machen.Wenn weder Â»signedÂ« noch Â»unsignedÂ« angegeben ist, das Bitfeld vorzeichenlos machen.Wenn Â»-mhard-floatÂ« ausgewÃ¤hlt ist, werden Gleitkommaberechnungen mit doppelter Genauigkeit in Hardware-Befehle Ã¼bersetzt. StandardmÃ¤ÃŸig werden fÃ¼r diese Berechnungen Funktionen aus der libgcc verwendet.Wenn Â»-mhard-floatÂ« ausgewÃ¤hlt ist, werden ungeordnete FlieÃŸkomma-Vergleichs- und Set-Flag-Befehle (lf.sfun*) erzeugt. StandardmÃ¤ÃŸig werden Funktionen von libgcc verwendet, um ungeordnete FlieÃŸkomma-Vergleichs- und Flag-Operationen durchzufÃ¼hren.Wenn ein Symbol aufgelÃ¶st wird, den GÃ¼ltigkeitsbereich Â»alias thisÂ« prÃ¼fen, erst danach zu den hÃ¶heren Bereichen gehen.Wenn beide Heuristiken mit rs6000-density-pct-threshold und rs6000-density-size-threshold erfÃ¼llt sind, werden die Kosten des SchleifenkÃ¶rpers mit dem Wert bestraft, der durch diesen Parameter festgelegt ist. Der Standardwert ist 10.Bei der Kostenkalkulation fÃ¼r die Vektorisierung von Schleifen mÃ¼ssen wir wahrscheinlich die Kosten fÃ¼r den SchleifenkÃ¶rper bestrafen, indem wir Ã¼bermÃ¤ÃŸig versetzte oder elementweise Lesezugriffe berÃ¼cksichtigen. Wir sammeln die Zahlen fÃ¼r allgemeine Anweisungen und Ladeanweisungen entsprechend den Informationen fÃ¼r zu vektorisierende Anweisungen, prÃ¼fen den Anteil der Ladeanweisungen und bestrafen nur, wenn der Anteil den durch diesen Parameter festgelegten Schwellwert Ã¼berschreitet. Der Standardwert ist 45.Bei der Kostenkalkulation fÃ¼r die Vektorisierung von Schleifen mÃ¼ssen wahrscheinlich die Kosten fÃ¼r den SchleifenkÃ¶rper bestraft werden, wenn das bestehende Kostenmodell VerzÃ¶gerungen durch nicht verfÃ¼gbare Vektorressourcen nicht angemessen widerspiegelt. Die Kosten fÃ¼r vektorisierte Anweisungen und nicht-vektorisierte Anweisungen werden getrennt gesammelt, und die Bestrafung erfolgt nur, wenn das VerhÃ¤ltnis von vec_cost zu (vec_cost + nicht-vec_cost) den durch diesen Parameter festgelegten Schwellenwert Ã¼berschreitet. Der Standardwert ist 85.Bei Erzeugung von Â»-mabicallsÂ«-Code den ausfÃ¼hrbaren Dateien erlauben, PLTs und Kopierauslagerungen zu verwenden.Bei Erzeugung von Â»-mabicallsÂ« den Code tauglich fÃ¼r gemeinsam genutzte Bibliotheken machen.Beim Binden fÃ¼r Big-Endian-Zielsysteme ein Abbild im BE8-Format erzeugen.Beim Binden fÃ¼r Big-Endian-Zielsysteme ein Abbild im veralteten BE32-Format erzeugen.Wenn mÃ¶glich, keine Stapelrahmen erzeugen.Bei der Weitergabe von IPA-CP-EffektschÃ¤tzungen werden die HÃ¤ufigkeiten der rekursiven Kanten, die einen unverÃ¤nderten Wert zurÃ¼ckbringen, mit diesem Faktor multipliziert.Wenn der fÃ¼r eine Schleife berechnete Reduktionsfaktor den durch diesen Parameter angegebenen Schwellenwert Ã¼berschreitet, diese Schleife vorzugsweise abzurollen. Der Standardwert ist 1.Beim Durchlaufen von CSE: SprÃ¼ngen zu ihren Zielen folgen.Bei der Verwendung von Profil-Feedback die Kante an dieser prozentualen Position im Frequenzhistogramm als Grundlage fÃ¼r die IPA-CP-Heuristik verwenden.Bei der Vektorisierung mehrere verschiedene AnsÃ¤tze in Betracht ziehen und das Kostenmodell verwenden, um den gÃ¼nstigsten auszuwÃ¤hlen.Falls kÃ¼rzer, kanonische Pfade zu System-Headern verwenden.Ob bei Â»-fcheckingÂ« Fehler im Codegenerator als interne Compilerfehler behandelt werden sollen.Ob Software-Prefetch-Tipps fÃ¼r nicht-konstante Schrittweiten produziert werden.Ob die Scheduling-Beschreibung im Wesentlichen ein zyklusgenaues Modell des Zielprozessors ist und wahrscheinlich aggressiv Register verdrÃ¤ngt, um etwaige Pipeline-LÃ¼cken zu fÃ¼llen.Ob das Zielsystem FMA-Befehle vollstÃ¤ndig in der Pipeline verarbeitet. Bei einem Wert ungleich Null wird bei der Neuzuordnung der Vorteil der Parallelisierung des Multiplikationsteils und des Additionsteils von FMA berÃ¼cksichtigt, wobei davon ausgegangen wird, dass FMUL und FMA die gleichen Einheiten verwenden, die auch FADD ausfÃ¼hren kÃ¶nnen.Ob kanonische Typen zu verwenden sind.Ob Trampoline in ausfÃ¼hrbarem Speicher statt in ausfÃ¼hrbarem Stapelspeicher erzeugt werden.Anzuwendender Algorithmus fÃ¼r Â»-fsched-pressureÂ«.WÃ¤hrend des Setzens des Signalhandlers: %mWÃ¤hrend des Setzens des Signalstapels: %mModus fÃ¼r Ganzprogrammanalyse (WPA) mit Anzahl der parallelen Jobs angegeben.Aufgrund des INSCAN bei %L wird ein Schleifenrumpf mit !$OMP SCAN zwischen zwei strukturierten Blockfolgen erwartetOhne AuffÃ¼llen gibt es nicht genÃ¼gend Elemente in intrinsischer RESHAPE-Quelle bei %L, um zur Form zu passenErrata fÃ¼r VR4130 mflo/mfhi umgehen.Hardwarebesonderheit umgehen, indem jedem CSYNC und SSYNC mehrere NOPs vorangestellt werden.Einen frÃ¼hen 4300-Hardware-Bug umgehen.Fehler in Multiplikationsbefehl umgehen.Bestimmte 24K-Errata umgehen.Bestimmte R10000-Errata umgehen.Bestimmte R4000-Errata umgehen.Bestimmte R4400-Errata umgehen.Bestimmte RM7000-Errata umgehen.Bestimmte VR4120-Errata umgehen.Fehler frÃ¼her SB-1 Revision 2 Kerne umgehen.Hardware-Multiplikationsfehler umgehen.Workaround fÃ¼r R5900-Kurzschleifenfehler.ArbeitsbeschrÃ¤nkung beim Entdecken von transitiven Beziehungen aus bestehenden Beziehungen.Umgehung von Erratum 835769 fÃ¼r ARM-Cortex-A53.Umgehung von Erratum 843419 fÃ¼r ARM-Cortex-A53.Alle indirekten SprÃ¼nge mit execute-in-order umschlieÃŸen, um Sprungvorhersage auszuschalten.Alle indirekten Aufrufe mit execute-in-order umschlieÃŸen, um Sprungvorhersage auszuschalten.Alle indirekten RÃ¼cksprÃ¼nge mit execute-in-order umschlieÃŸen, um Sprungvorhersage auszuschalten.Alle indirekten RÃ¼cksprÃ¼nge mit execute-in-order umschlieÃŸen, um Sprungvorhersage auszuschalten. Dies betrifft nur Zweige, in denen die RÃ¼cksprungadresse nicht aus dem Speicher wiederhergestellt wird.Alle indirekten RÃ¼cksprÃ¼nge mit execute-in-order umschlieÃŸen, um Sprungvorhersage auszuschalten. Dies betrifft nur Zweige, in denen die RÃ¼cksprungadresse aus dem Speicher wiederhergestellt wird.Alle indirekten TabellensprÃ¼nge und berechnete Gotos mit execute-in-order umschlieÃŸen, um Sprungvorhersage auszuschalten. Die Verwendung von thunk oder thunk-extern mit dieser Option erfordert, dass die Thunks als Signalhandler betrachtet werden, um korrekte CFI zu erzeugen. FÃ¼r Umgebungen, in denen Abrollen erforderlich ist (beispielsweise fÃ¼r Ausnahmebehandlung), nutzen Sie stattdessen bitte thunk-inline.Eine QUELLDATEI.opt-record.json schreiben mit Details, welche Optimierungen durchgefÃ¼hrt wurden.Alle Deklarationen in Ada-Code nur fÃ¼r angegebene Datei schreiben.Alle Deklarationen in Ada-Code transitiv schreiben.Modul %qs in Zeile %d, Spalte %d wird geschrieben: %sFalsche OpenACC-Fortsetzung bei %C: !$ACC erwartet, !$OMP gefundenFalsche OpenMP-Fortsetzung bei %C: !$OMP erwartet, !$ACC gefundenX-Argument bei %L fÃ¼r C_LOC darf nicht polymorph seinX-Deskriptor erfordert fÃ¼hrenden LeerzeichenzÃ¤hler bei %LX32 unterstÃ¼tzt %<ms_abi%>-Attribut nichtXXX %<pop_everything%> wird betretenXXX %<pop_everything%> wird verlassenDie UnterstÃ¼tzung fÃ¼r die Xeon-Phi-ISA wurde mit GCC 15 entfernt, verwenden Sie GCC 14 fÃ¼r die Xeon-Phi-ISAs oder %<-march=broadwell%> fÃ¼r alle anderen ISAs, die auf dieser Maschine unterstÃ¼tzt werden.Sie haben GCC-Rust kaputtgemacht. Dies ist ein Feature.
  Um diese intrinsischen Funktionen zu verwenden, mÃ¼ssen Sie MVE-Befehle einschalten.Um diese intrinsischen Funktionen zu verwenden, mÃ¼ssen Sie NEON-Befehle einschalten (zum Beispiel mit %<-mfloat-abi=softfp -mfpu=neon%>).Um diese intrinsischen Funktionen zu verwenden, mÃ¼ssen Sie VFP-Befehle einschalten.Um diese intrinsischen Funktionen zu verwenden, mÃ¼ssen Sie Krypto-Befehle einschalten (zum Beispiel mit %<-mfloat-abi=softfp -mfpu=crypto-neon%>)Null ist keine gÃ¼ltige Anweisungsmarke bei %CBreite null in Formatbeschreibung in Formatzeichenkette bei %LArray der GrÃ¶ÃŸe 0 bei %L gefunden, an dieser Stelle wird eine EntitÃ¤t mit TARGET-Attribut erwartet[ %d Instanziierungskontexte werden Ã¼bersprungen, Â»-ftemplate-backtrace-limit=0Â« zum Ausschalten verwenden ]
  [â€¦]Feldkonstruktoren im [...]-Stil bei %C[%s wird verlassen]
! [verfÃ¼gbar in [%s kann nicht gefunden werden][Standard][ausgeschaltet][eingeschaltet]Â»eine %<return%>-Anweisung ist in einer Koroutine nicht erlaubt; meinten Sie %<co_return%>?eine GNU-Fortran-Erweiterungeine geschweift geklammerte Initialisierung ist hier nicht erlaubtein Konstruktoraufruf kann nicht in einem Konstanten-Ausdruck auftretenein durch den Aufgerufenen kopiertes Argument wird im Rahmen der aktuellen Funktion gespeichertEine Typumwandlung, die weder zu ganzzahligen noch AufzÃ¤hlungstypen fÃ¼hrt, kann nicht in einem Konstantenausdruck auftreteneine Klassen-Templatedeklaration darf nichts anderes deklarierenein Komma-Operator kann nicht in einem Konstanten-Ausdruck auftretenein Konzept kann keine Elementfunktion seinein Konzept kann nicht eingeschrÃ¤nkt werdenein Konstruktor kann nicht %<concept%> seinein Konstruktor, der ein einzelnes Argument seines eigenen Klassentyps hat, ist ungÃ¼ltigeine Umwandlungsfunktion darf keinen angehÃ¤ngten RÃ¼ckgabetyp habenein Destruktor kann nicht %qs seinein unterschiedlicher Typ ist in einer anderen Ãœbersetzungseinheit definiertein Feld mit selbem Namen aber unterschiedlichem Typ ist in einer anderen Ãœbersetzungseinheit definiertein Feld mit unterschiedlichem Namen ist in einer anderen Ãœbersetzungseinheit definiertein Funktionsaufruf kann nicht in einem Konstanten-Ausdruck auftretenein Funktionstyp kann keinen expliziten Objektparameter habeneine Funktionsdefinition ist hier nicht erlaubteine Marke kann nur Teil einer Anweisung sein, und eine Deklaration ist keine AnweisungLambda-Abschlusstyp hat gelÃ¶schten Kopier-ZuweisungsoperatorLambda-Abschlusstyp hat gelÃ¶schten Standardkonstruktorein Lambda mit Captures darf keinen expliziten Objektparameter eines nicht verwandten Typs habenEine spÃ¤tere Option %<-fabi-version=%> (oder =0) verhindert diesen Fehler mit einer Ã„nderung im MangelnEin Element einer Struktur oder Union kann nicht variabel modifizierten Typ habengeschachtelte Funktionen werden bei reduzierter Registeranzahl nicht unterstÃ¼tzteine verschachtelte Namensraumdefinition darf nicht inline seineine verschachtelte Namensraum-Definition darf keine Attribute habeneine Funktion, die kein Member ist, kann keinen expliziten Objektparameter habeneine Nicht-Template-Variable kann nicht %<concept%> seinein Parameter kann nicht als %qs deklariert seineine Parameterliste mit Auslassung kann nicht zu einer leeren Parameternamenslistendeklaration passenein Zeiger auf eine explizite Objekt-Member-Funktion kann nur mit %<&%E%> gebildet werdenein Zeiger auf eine explizite Objektelementfunktion kann nur mit %<&%T::%D%> erzeugt werdenein Zeiger auf einen Funktionstyp kann keinen expliziten Objektparameter habenein Zeiger auf einen Memberfunktionstyp kann keinen expliziten Objektparameter habeneine Spezialisierung wird immer zusammen mit ihrem primÃ¤ren Template exportiertein Anweisungsausdruck reicht nicht als Kontext fÃ¼r Ãœberladungs-AuflÃ¶sung nicht auseine Speicherklasse kann nur fÃ¼r Objekte und Funktionen angegeben werdenSpeicherklasse an anonymem Aggregat im Klassenbereich ist nicht erlaubtein Template kann nicht vorbelegt werdeneine Template-Deklaration kann nicht im Block-GÃ¼ltigkeitsbereich auftreteneine Template-ID darf nicht in Â»usingÂ«-Deklaration auftreteneine vorÃ¼bergehende Bindung an %qD besteht nur, bis der Konstruktor beendet istein Transaktionsausdruck kann nicht in einem Konstanten-Ausdruck auftretenein Typ aus einer anderen Ãœbersetzungseinheit ist nicht polymorphein Typ aus einer anderen Ãœbersetzungseinheit ist polymorphein Typ mit unterschiedlichen Basistypen ist in einer anderen Ãœbersetzungseinheit definiertein Typ mit unterschiedlicher Anzahl von Feldern ist in einer anderen Ãœbersetzungseinheit definiertein Typ mit unterschiedlicher Genauigkeit ist in einer anderen Ãœbersetzungseinheit definiertein Typ mit unterschiedlichem Vorzeichen ist in einer anderen Ãœbersetzungseinheit definiertein Typ mit unterschiedlicher GrÃ¶ÃŸe ist in einer anderer Ãœbersetzungseinheit definiertein Typ mit unterschiedlichen Zeigern in der virtuellen Tabelle ist in einer anderen Ãœbersetzungseinheit definierteine Variable kann nicht als %<consteval%> deklariert seinein Vektortyp mit unterschiedlicher Anzahl von Elementen ist in einer anderen Ãœbersetzungseinheit definierteine Wide-Zeichenkette ist in diesem Kontext ungÃ¼ltigInterner Fehler: abnormal call edges for non-call insn in bb %iInterner Fehler: abnormal edges for no purpose in bb %iAbbruch in %s, bei %s:%ddie Betragsfunktion %qD bekommt hier ein Argument vom Typ %qT, erwartet jedoch einen Parameter vom Typ %qT; dadurch kann der Ã¼bergebene Wert abgeschnitten werdenabstrakter Deklarator %qT als Deklaration verwendetZugriffsdeklarationen sind zugunsten von %<using%>-Deklarationen veraltet; Vorschlag: das SchlÃ¼sselwort %<using%> hinzufÃ¼genCode greift auf %E Byte in einer Region der GrÃ¶ÃŸe %E zuCode greift auf %E Bytes in einer Region der GrÃ¶ÃŸe %E zuCode greift auf %E oder mehr Bytes in einer Region der GrÃ¶ÃŸe %E zuZugriff auf Element %qD statt auf initialisiertes Element %qD in KonstantenausdruckZugriff auf %qE auÃŸerhalb seiner LebensdauerZugriff auf ein Element %qE einer atomaren Struktur %qEZugriff auf ein Element %qE einer atomaren Union %qEbeim Zugriff auf Argument %u einer Funktion, die mit dem Attribut %qs deklariert wurdeCode greift auf zwischen %E und %E Bytes in einer Region der GrÃ¶ÃŸe %E zuZugriff auf Datenspeicher mit ProgrammspeicheradresseZugriff auf Programmspeicher mit DatenspeicheradresseZugriff auf threadlokalen Speicher wird derzeit mit %<-mpure-code%> oder %<-mslow-flash-data%> nicht unterstÃ¼tztZugriff auf uninitialisiertes ArrayelementZugriff auf uninitialisiertes Element %qDauf Wert von %qE wird Ã¼ber ein %qT GL-Wert in Konstantenausdruck zugegriffenAkkumulator ist keine GanzzahlkonstanteAkkumulatorzahl auÃŸerhalb der Grenzeneffektives Argument fÃ¼r INTENT = OUT/INOUTfÃ¼gen Sie %<using namespace std::complex_literals%> (aus %<<complex>%>) hinzu, um benutzerdefinierte Literalsuffixe aus C++14 einzuschaltenfÃ¼gen Sie einen Herleitungshinweis hinzu, um diese Warnung zu unterdrÃ¼ckenfangen Sie %<this%> oder %<*this%> explizit einklammern Sie den Ausdruck %qE, um diese Warnung zu unterdrÃ¼ckenklammern Sie den Ausdruck auf der linken Seite ein, um diese Warnung zu behebenklammern Sie den zweiten %<sizeof%>-Ausdruck, um diese Warnung zu unterdrÃ¼ckenfÃ¼gen Sie Klammern hinzu, um eine Variable zu deklarierenInterner Fehler: add_sym(): Bad sizing modezusÃ¤tzliche AufzÃ¤hlungswerte, die mit %qD beginnenAdressbereichsattribut kann nicht fÃ¼r Funktionen angegeben werdenAdressbereich von %q+D in Konflikt mit vorheriger DeklarationAdressmodus %qs wird im %s-Bit-Modus nicht unterstÃ¼tztAdresse des Aufrufs von %qs ist kein konstanter AusdruckAdresse eines Arrays mit umgekehrter Speicherreihenfolge angefordertAdresse der lokalen Variable %qD kann zu einem %<musttail%>-Aufruf entwischenDie Adresse der automatischen Variable %qD wird an das Argument des %<musttail%>-Aufrufs Ã¼bergebendie Adresse von Argumenten des Aufrufers wird verwendetAdresse der Register-Variablen %qD angefordertAdresse der globalen Variablen %qD angefordertAdresse der lokalen Variable %qD zurÃ¼ckgegebenAdresse des an das Aufrufargument %<musttail%> Ã¼bergebenen LabelsAdresse der lokalen Variable %qD zurÃ¼ckgegebenAdresse einer lokalen Variable kann zu einem %<musttail%>-Aufruf entwischenAdresse einer lokalen Variable wird an das Argument des %<musttail%>-Aufrufs Ã¼bergebendie Adresse der nicht-statischen constexpr-Variablen %qD kann sich bei jedem Aufruf der umschlieÃŸenden Funktion Ã¤ndern; fÃ¼gen Sie %<static%> hinzu, um ihr eine konstante Adresse zu gebenAdresse einer Ã¼berladenen Funktion ohne Typinformationen aus KontextAdresse des Parameters %qD kann zu einem %<musttail%>-Aufruf entwischenAdresse des Parameters %qD, der an das Aufrufargument %<musttail%> Ã¼bergeben wurdeAdresse des mit Â»registerÂ« deklarierten zusammengesetzten Literals angefordertAdresse der Register-Variablen %qD angefordertAdressversatz ist keine KonstanteAdressoperand erfordert BeschrÃ¤nkung fÃ¼r X-, Y- oder Z-RegisterAdresse fÃ¼r %qD angefordert, was als %<register%> deklariert istAdressraum %qs wird auf GerÃ¤ten mit Flashspeicher bis zu %d KiB nicht unterstÃ¼tztAdressrÃ¤ume werden auf reduzierten Tiny-Kernen nicht unterstÃ¼tztAdresse genommen, aber %<TREE_ADDRESSABLE%>-Bit nicht gesetztAdresse genommen, aber ADDRESSABLE-Bit nicht gesetztAdresse eines Objektes %qE mit thread-lokalem oder automatischem Speicher ist kein konstanter AusdruckAggregat %q#D hat unvollstÃ¤ndigen Typ und kann nicht definiert werdenAggregatstypen sind im %<__regio_symbol%>-Adressraum verbotenzusammengesetzter Wert verwendet, wo Â»complexÂ« erwartet wurdezusammengesetzten Wert verwendet, wo Festkomma erwartet wurdezusammengesetzter Wert verwendet, wo Gleitkommawert erwartet wurdezusammengesetzter Wert verwendet, wo Ganzzahl erwartet wurdealiasAlias-Definitionen werden nicht in Mach-O unterstÃ¼tzt; ignoriertAlias-Definitionen werden in dieser Konfiguration nicht unterstÃ¼tztAlias-Template-Herleitung ist erst ab %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarAlias-Deklaration in Init-Anweisung ist erst mit %<-std=c++23%> oder %<-std=gnu++23%> verfÃ¼gbarhier ist die Alias-Deklarationverlangte Ausrichtung %u von %qT ist kleiner als %uFÃ¼r %q+D darf keine Ausrichtung angegeben werdenfÃ¼r %qD darf keine Ausrichtung angegeben werdenAusrichtung muss eine kleine Zweierpotenz sein, nicht %dAusrichtung von %q+D ist grÃ¶ÃŸer als maximale Objektdateiausrichtung %dAusrichtung von %qD wurde in %<-fabi-version=9%> (GCC 5.2) erhÃ¶htAusrichtung von %qD ist grÃ¶ÃŸer als ursprÃ¼ngliche DeklarationAusrichtung von %qD wird in %<-fabi-version=9%> ansteigenAusrichtung der Arrayelemente ist grÃ¶ÃŸer als die ElementgrÃ¶ÃŸeAusrichtung fÃ¼r %<register%>-Objekt %qE angegebenAusrichtung fÃ¼r Bitfeld %qE angegebenAusrichtung fÃ¼r Funktion %qE angegebenAusrichtung fÃ¼r Parameter %qE angegebenAusrichtung fÃ¼r Typnamen in %<sizeof%> angegebenAusrichtung fÃ¼r Typnamen in %qE angegebenAusrichtung fÃ¼r Typnamen in Cast angegebenAusrichtung fÃ¼r typedef %qE angegebenAusrichtung fÃ¼r unbenanntes Bitfeld angegebenAusrichtung fÃ¼r unbenannten Parameter angegebenalle Elementfunktionen in Klasse %qT sind privatallozierbares Argumentwurde hier deklariertSpeicherallokation von ungenÃ¼gender GrÃ¶ÃŸe %qE fÃ¼r Typ %qT mit GrÃ¶ÃŸe %qEdie Allokation ist hierAllokator mit der Zugriffseigenschaft %<thread%> fÃ¼hrt zu undefiniertem Verhalten fÃ¼r die %qs-Direktiveerlaubt, undurchlÃ¤ssige Typen durch beliebige Typen zu implementieren (eine GNU-Modula-2-Erweiterung)%qD bereits in Lambda-Ausdruck erfasstauch %<%c%s%> gefundenAlternativen sind in %<asm%>-Flag-Ausgabe nicht erlaubtmehrdeutig machende neue Deklaration %q+#Dmacht neue Deklaration %q#D mehrdeutigmehrdeutiges Attribut Â»%sÂ«; kÃ¶nnte Â»%sÂ« (via Â»%s:%sÂ«) oder Â»%sÂ« (via Â»%s:%sÂ«) seinmehrdeutige Umwandlung fÃ¼r Feldindexmehrdeutige Standard-Typumwandlung von %qTmehrdeutige Methode %s%s%smehrdeutiges Ãœberladen fÃ¼r mehrdeutiges Ãœberladen fÃ¼r intrinsisches %qsmehrdeutige Template-Instanziierung fÃ¼r %q#Dmehrdeutige Template-Instanziierung fÃ¼r %q#Tmehrdeutige Templatespezialisierung %qD fÃ¼r %q+Deine %<asm%>-Spezifikation ist bei Funktionsdefinition nicht erlaubteine %qs-Klausel kann nur angegeben werden, wenn der %<dispatch%>-Selektor des %<construct%>-Selektorsatzes in der %<match%>-Klausel vorkommteine %qs-Klausel kann nur angegeben werden, wenn der %<dispatch%>-Selektor der Konstruktionsselektormenge in der %<match%>-Klausel vorkommteine %qs-Klausel erfordert eine %<match%>-KlauselfÃ¼r lokale Variablen kann kein Adressbereichsattribut angegeben werdenein Argumenttyp mit Standard-Promotion kann nicht zu einer leeren Parameternamenslistendeklaration passenein Array unterschiedlicher GrÃ¶ÃŸe ist in einer anderen Ãœbersetzungseinheit definierteine Arrayreferenz kann nicht in einem Konstanten-Ausdruck auftreteneine Zuweisung kann nicht in einem Konstanten-Ausdruck auftretenein Attribut, das zu einer Â»friendÂ«-Deklaration gehÃ¶rt, die keine Definition ist, wird ignoriertein Attribut, das sich auf eine Typspezifizierung bezieht, wird ignorierteine Verringerung kann nicht in einem Konstanten-Ausdruck auftretendas Attribut %<target_clones%> darf keine leere Zeichenkette enthalteneine EntitÃ¤t mit dem Namen %<main%> kann nicht mit C-Sprachbindung deklariert werdeneine AufzÃ¤hlung mit anderer Anzahl von Werten ist in einer anderen Ãœbersetzungseinheit definierteine AufzÃ¤hlung mit unterschiedlichen Wertnamen ist in einer anderen Ãœbersetzungseinheit definierteine AufzÃ¤hlung mit anderen Werten ist in einer anderen Ãœbersetzungseinheit definierteine explizite Instanziierung kann keine Definition haben; verwenden Sie %<template <>%>, um eine Spezialisierung zu deklariereneine explizite Objekt-Member-Funktion kann nicht %<static%> seineine explizite Objekt-Member-Funktion kann nicht %<virtual%> seinein expliziter Objektparameter kann kein Funktionsparameterpaket seinein expliziter Objektparameter darf kein Standardargument habeneiner expliziten Spezialisierung muss %<template <>%> vorausgehenein explizites Typensuffix ist erforderlich, wenn ein Vektor von Basisadressen verwendet wirdeine ErhÃ¶hung kann nicht in einem Konstanten-Ausdruck auftretenInterner Fehler: an indirect edge from %s has no corresponding call_stmtInterner Fehler: an indirect edge with unknown callee corresponding to a call_stmt with a known declaration:ein geerbter Konstruktor ist kein Kandidat fÃ¼r Initialisierung aus einem Ausdruck desselben oder eines abgeleiteten TypsEin Interrupt-Handler kann nicht mit %<-muser-mode%> kompiliert werdenAnachronismusAnachronismus: veraltete Basisklasseninitialisierungund %qT hat keinen Template-Konstruktorund wertet zu false aus, wenn die Bedingung in der nicht-%<constexpr%>-Funktion tatsÃ¤chlich ausgewertet wirdInterner Compilerfehler: and fieldund der implizit definierte Konstruktor initialisiert %q#D nichtdas innerhalb der Parameterliste deklarierte anonyme Â»%sÂ« ist auÃŸerhalb dieser Definition oder Deklaration nicht sichtbarInterner Fehler: anonymous SSA name cannot have default definitionanonymes struct nicht innerhalb eines benannten Typsanonyme Struktur mit Basisklassenanonyme Union ohne Elementdas AnhÃ¤ngen an ein Array in %qs erfordert den GC und kann nicht mit %<-fno-druntime%> verwendet werdenAnwendung von %<#pragma weak %+D%> nach erster Verwendung fÃ¼hrt zu unspezifiziertem Verhaltender Arch-Erweiterung %qs sollte ein %<+%> vorangestellt werdenArchitektur %qs wird nur fÃ¼r Assemblierung unterstÃ¼tztWert Â»%sÂ« kann in diesem Bereich nicht gefunden werdenare_identical_variables: Bad typeArgument %d ist ein vorzeichenloses Literal, aber auÃŸerhalb des gÃ¼ltigen BereichsArgument %d muss eine direkt angegebene Konstante seinArgument %d muss eine direkt angegebene Konstante im Bereich [%wd, %wd] seinArgument %d muss eine direkt angegebene Konstante im Bereich [0, 15] seinArgument %d muss ein Literal zwischen %d und %d seinArgument %d muss ein Literal zwischen 0 und %d seinArgument %d muss eine Variable oder ein Literal zwischen %d und %d seinArgument %d muss ein vorzeichenloses Literal seinArgument %d muss entweder eine literale %d oder eine literale %d seinArgument %d von %qD muss vom Typ %<omp_interop_t%> seinArgument %d von %qE entfernt Kennzeichner %<const%>Argument %d von %qE entfernt Kennzeichner %<volatile%>Argument %d von %qE kÃ¶nnte Kandidat fÃ¼r Formatattribut seinArgument %d von %qE muss ein Zeiger auf Typen konstanter GrÃ¶ÃŸe seinArgument %d von %qE muss eine Zeigertyp seinArgument %d von %qE muss ein konstanter ganzzahliger Ausdruck seinArgument %d von %qE muss vom Typ %<omp_interop_t%> seinArgument %d von %qE darf kein Zeiger auf einen %<const%>-Typen seinArgument %d von %qE darf kein Zeiger auf einen %<volatile%>-Typen seinArgument %d von %qE darf kein Zeiger auf eine Funktion seinArgument %d von Â»%sÂ« hatte nicht den erwarteten NamenArgument %d von %qE muss eine direkt angegebene Konstante im Bereich [0-%d] seinArgument %d der eingebauten Funktion muss eine Konstante aus dem Bereich %d bis %d seinArgument %i im Bereich [%E, %E]Argument %i ist null, aber der Wert des zugehÃ¶rigen GrÃ¶ÃŸenarguments %i ist %sArgument %i Bereich [%E, %E] Ã¼bersteigt maximale ObjektgrÃ¶ÃŸe %EArgument %i Bereich [%E, %E] ist negativArgument %i Wert %qE Ã¼bersteigt maximale ObjektgrÃ¶ÃŸe %EArgument %i Wert %qE ist negativArgument %i Wert %s ist negativArgument %i Wert ist nullArgument %q+D kÃ¶nnte von %<longjmp%> oder %<vfork%> zerstÃ¶rt werdenArgument %qD ist hier deklariertArgument %qD passt nicht zu eingebautem PrototypenArgument %qD passt nicht zum PrototypenArgument %qEArgument %qE kann nicht zur Ãœbersetzungszeit gelesen werdendas Argument %qE fÃ¼r das Attribut %<counted_by%> ist keine Felddeklaration in derselben Struktur wie %qDdas Argument %qE fÃ¼r das Attribut %<counted_by%> ist keine Felddeklaration mit einem GanzzahltypArgument %qTArgument %qd ist keine Konstantedas Argument %qs kann in %qs nur allein vorkommenArgument %qs wird fÃ¼r %qs auf diesem Ziel nicht unterstÃ¼tztArgument %qs muss entweder %<on%> oder %<off%> seinArgument %qs fÃ¼r %<-Waligned-new%> nicht bekanntArgument %qs fÃ¼r %<-Wbidi-chars%> nicht bekanntArgument %qs fÃ¼r %<-Wleading-whitespace=%> nicht bekanntArgument %qs fÃ¼r %<-Wnormalized%> nicht erkanntArgument %qs fÃ¼r %<-Wtrailing-whitespace=%> nicht bekanntArgument %qs fÃ¼r %<-femit-struct-debug-detailed%> nicht erkanntArgument %qs fÃ¼r %<-femit-struct-debug-detailed%> unbekanntArgument %u in Aufruf von %qE hat nicht den Typ %<int%>Argument %u in Aufruf von %qE muss ein Ganzzahltyp seinArgument %u in Aufruf von %qE muss ein Zeigertyp seinArgument %u in Aufruf von %qE ist ein boolescher Typ seinArgument %u in Aufruf von %qE hat AufzÃ¤hlungstypArgument %u in Aufruf von %qE darf kein Zeiger auf %qs sein (%qT)Argument %u in Aufruf von %qE darf kein Zeiger auf nicht-trivial kopierbaren Typ %qT seinArgument %u in Aufruf von %qE muss auf einen vollstÃ¤ndigen Typ zeigenArgument %u in Aufruf der Funktion %qs ist ein boolescher TypArgument %u in Aufruf der Funktion %qs hat AufzÃ¤hlungstypArgument %u ist null, aber nichtnull wird erwartetArgument %u ist null, aber nichtnull wird erwartet, da das Argument %u nicht 0 istArgument %u fÃ¼r %<__builtin_tgmath%> hat keine ArgumenteArgument %u fÃ¼r %<__builtin_tgmath%> hat variable Anzahl von ArgumentenArgument %u fÃ¼r %<__builtin_tgmath%> hat falsche Anzahl der ArgumenteArgument %u fÃ¼r %<__builtin_tgmath%> ist kein FunktionszeigerArgument %u fÃ¼r %<__builtin_tgmath%> hat keinen PrototypenArgument %u vom Typ %s ist als Zeiger deklariertArgument %u vom Typ %s ist als Array variabler LÃ¤nge deklariertArgument %u vom Typ %s ist als gewÃ¶hnliches Array deklariertArgument %u vom Typ %s ist mit %u unspezifizierten Variablengrenze deklariertArgument %u vom Typ %s ist mit %u unspezifizierten Variablengrenzen deklariertArgument %u vom Typ %s ist mit %u Variablengrenze deklariertArgument %u vom Typ %s ist mit %u Variablengrenzen deklariertArgument %u vom Typ %s ist mit abweichender Grenze %qs deklariertArgument %u vom Typ %s ist mit abweichendem Grenzargument %E deklariertArgument %u vom Typ %s mit abweichender GrenzeArgument %u von Funktion %qE ist vom Typ %qT, und der ist nicht garantiert 128 Bit groÃŸArgument 1 in Aufruf von %qE hat einen vorzeichenbehafteten TypenArgument 1 in Aufruf von %qE hat einen vorzeichenlosen TypenArgument 1 in Aufruf der Funktion %qs hat den Typ %<char%>Argument 1 in Aufruf von der Funktion %qs hat einen vorzeichenbehafteten TypenArgument 1 muss eine Abbildung seinArgument 1 von %qE muss ein Nicht-Void-Zeigertyp seinArgument 1 von %qE muss ein Zeiger auf einen vollstÃ¤ndigen Typen seinArgument 1 von %qE muss ein Zeiger auf Typen konstanter GrÃ¶ÃŸe seinArgument 1 von %qE muss ein Zeiger auf Objekt breiter als Null seinArgument 1 von %qs ist auÃŸerhalb des WertebereichesArgument 1 von %qs muss eine Konstante seinArgument 3 in Aufruf von %qE muss Zeiger auf Ganzzahltyp seinArgument 3 in Aufruf von %qE darf kein Zeiger auf booleschen Typ seinArgument 3 in Aufruf von %qE darf kein Zeiger auf enum-Typ seinArgumentlistenfunktion bei %CArgument muss eine direkt angegebene 16-Bit-Konstante seinArgument muss eine Feldreferenz seinArgument muss Array oder Scheibe oder Kanal seinArgument muss ein Kanal seindas Argument muss durch Kopieren Ã¼bergeben werdenArgument muss Zeichenkette oder Array oder Scheibe oder Map oder Kanal seinArgument muss komplexen Typen habenArgument an %qs-Klausel nicht erlaubtArgument an %qs-Klausel nicht erlaubt, in OpenACC-%<kernels%>-Region mit einer %qs-KlauselArgument fÃ¼r %<__builtin_eh_return_regno%> muss konstant seinArgument des Attributs %qE wird ignoriertArgument des Attributs %qE fehltArgument des Attributes %qE ist weder Â»ilinkÂ« oder Â»firqÂ«Argument des Attributes %qE ist weder Â»ilink1Â« oder Â»ilink2Â«Das Argument des Attributs %qE ist nicht %qs, %qs %qs, %qs, %qs, %qs, %qs, %qs, %qs oder %qsArgument des Attributes %qE ist keine ZeichenkettenkonstanteArgument des Attributs %qE ist weder Zeichenkettenkonstante noch ZahlArgument von Offsetof bringt Indirektion eines eingebetteten Feldes mit sichArgument des Funktionsaufrufs kÃ¶nnte Kandidat fÃ¼r Formatattribut seinArgument vom Typ %qT ist zusammen mit %<-mgeneral-regs-only%> nicht erlaubtdas Argument verweist auf ein Symbol, das hier deklariert istArgument von %<-O%> sollte eine nicht-negative Ganzzahl, %<g%>, %<s%>, %<z%> oder %<fast%> seinArgument von %<__integer_pack%> muss zwischen 0 und %d liegenArgument fÃ¼r %<alloca%> ist zu groÃŸArgument fÃ¼r %<alloca%> ist 0Argument fÃ¼r %<alloca%> kÃ¶nnte zu groÃŸ seinArgument fÃ¼r %<decltype%> muss ein Ausdruck seinArgument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie das Ziel; sollte es dereferenziert werden?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie das Ziel; sollte ausdrÃ¼ckliche LÃ¤nge angegeben werden?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie das Ziel; sollte addressof entfernt werden?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie die erste Quelle; sollte es dereferenziert werden?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie die erste Quelle; sollte ausdrÃ¼ckliche LÃ¤nge angegeben werden?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie die erste Quelle; sollte addressof entfernt werden?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie die zweite Quelle; sollte es dereferenziert werden?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie die zweite Quelle; sollte ausdrÃ¼ckliche LÃ¤nge angegeben werden?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie die zweite Quelle; sollte addressof entfernt werden?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie die Quelle; sollte es dereferenziert werden?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie die Quelle; sollte ausdrÃ¼ckliche LÃ¤nge angegeben werden?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie die Quelle; sollte addressof entfernt werden?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist der gleiche Ausdruck wie die Quelle; meinten Sie die GrÃ¶ÃŸe des Ziels?Argument fÃ¼r %<sizeof%> in Aufruf von %qD ist vom gleichen Zeigertyp %qT wie das Ziel; %qT oder ausdrÃ¼ckliche LÃ¤nge erwartetArgument fÃ¼r %<sizeof%> in Aufruf von %qD ist vom gleichen Zeigertyp %qT wie die erste Quelle; %qT oder ausdrÃ¼ckliche LÃ¤nge erwartetArgument fÃ¼r %<sizeof%> in Aufruf von %qD ist vom gleichen Zeigertyp %qT wie die zweite Quelle; %qT oder ausdrÃ¼ckliche LÃ¤nge erwartetArgument fÃ¼r %<sizeof%> in Aufruf von %qD ist vom gleichen Zeigertyp %qT wie die Quelle; %qT oder ausdrÃ¼ckliche LÃ¤nge erwartetArgument des Attributs %qE ist weder %<eic%> noch %<vector=<Zeile>%>Argument des Attributes %qE ist keins von Â»noÂ«, Â»pcrelÂ« oder Â»yesÂ«Argument des Attributes %qE ist weder Null noch EinsArgument des Attributs %qE muss %<"user"%>, %<"supervisor"%> oder %<"machine"%> seinArgument fÃ¼r %qE ist nicht (keep|thunk|thunk-extern)Argument des Attributes %qE ist nicht (keep|thunk|thunk-inline|thunk-extern)Argument des Attributes %qE ist nicht Â»intstackÂ«Argument fÃ¼r Attribut %qE ist grÃ¶ÃŸer als %dArgument fÃ¼r %qs ist grÃ¶ÃŸer als %dArgument von %qs ist nicht zwischen %d und %dArgument fÃ¼r %qs ist zu groÃŸ (max. %d)Argument von %qs sollte eine nicht-negative Ganzzahl seinArgument fÃ¼r %qs sollte eine nicht-negative Ganzzahl sein, optional gefolgt von einer GrÃ¶ÃŸeneinheitArgument fÃ¼r CAP muss eine Konstante oder eine Variable vom Typ CHAR seinzu formatierendes Argument ist nicht %<...%>Argument der eingebauten Funktion hat void-TypenArgument fÃ¼r Â»interruptÂ«-Attribut wird fÃ¼r Â»weakÂ«-Funktionen nicht unterstÃ¼tztArgument fÃ¼r Array mit variabler LÃ¤nge ist zu groÃŸArgument fÃ¼r Array variabler LÃ¤nge ist 0Argument fÃ¼r Array mit variabler LÃ¤nge kÃ¶nnte zu groÃŸ seindie Argumente %d und %d von %qE mÃ¼ssen die gleiche ElementgrÃ¶ÃŸe haben, aber die hier Ã¼bergebenen Werte sind vom Typ %qT und %qTdie Argumente %d und %d von %qE mÃ¼ssen die gleiche Vorzeichenhaftigkeit haben, aber die hier Ã¼bergebenen Werte sind vom Typ %qT und %qTArgumente Â»%sÂ« und Â»%sÂ« fÃ¼r intrinsisches %sArgumente Â»%sÂ« und Â»%sÂ« fÃ¼r intrinsisches Â»%sÂ«Argumente Â»a%dÂ« und Â»a%dÂ« fÃ¼r intrinsisches Â»%sÂ«Argumente fÃ¼r %<-Wattributes=%> ignoriert; verwenden Sie stattdessen %<-Wno-attributes=%>Argumente vom Typ %qT erfordern die SVE-ISA-ErweiterungArgumente von %qs sollten nicht-negative Ganzzahlen seinArgumente fÃ¼r Destruktor sind nicht erlaubtArgumente fÃ¼r Attribut %qE mÃ¼ssen enge Zeichenkettenliterale seinArgumente fÃ¼r Attribut %qE mÃ¼ssen gÃ¼ltige Bezeichner enthaltenarith_power(): Bad basearith_power(): unknown typearithmetisches IFArithmetik zwischen den unterschiedlichen AufzÃ¤hlungstypen %qT und %qTArithmetik zwischen den unterschiedlichen AufzÃ¤hlungstypen %qT und %qT ist veraltetArithmetik zwischen AufzÃ¤hlungstyp %qT und Gleitkommatyp %qTArithmetik zwischen AufzÃ¤hlungstyp %qT und Gleitkommatyp %qT ist veraltetArithmetik zwischen Gleitkommatyp %qT und AufzÃ¤hlungstyp %qTArithmetik zwischen Gleitkommatyp %qT und AufzÃ¤hlungstyp %qT ist veraltetArithmetik mit Nullzeiger in %qEArithmetik mit Zeiger auf RVV-Typen %qTArithmetik mit Zeiger auf SVE-Typen %qTArithmetik mit Zeiger auf leeres AggregatArithmetik mit Zeiger auf unvollstÃ¤ndigen TypenInterner Compilerfehler: array %<TYPE_DOMAIN%> is not integer typeArray %q+D als einelementig betrachtetArray %qD ist hier deklariertArray %qD mit geklammerter Zeichenkettenkonstante %qE initialisiertArray-ZuweisungArraygrenze hinter geklammerter type-id ist verbotenArraygrenze ist keine GanzzahlkonstanteInterner Fehler: array cannot be initialized with a %qsdie Array-Verkettung des Ausdrucks %qs erfordert den GC und kann nicht mit %<-fno-druntime%> verwendet werdenArray-Deallokation eines Objekts, das mit einer Nicht-Array-Allokation alloziert wurdeFehler beim Normalisieren der ArraydeklarationWert des Arrayelements muss vom selben Typ sein wie seine DeklarationArrayelemente kÃ¶nnen nicht vom RVV-Typ %qT seinArrayelemente kÃ¶nnen nicht vom SVE-Typ %qT seinArrayindex in Initialisierung Ã¼berschreitet ArraygrenzenArrayindex in Initialisierung ist kein konstanter GanzzahlausdruckArrayindex in Initialisierung hat nicht GanzzahltypArrayindex in Nicht-Array-InitialisierungArrayindexbereich in Initialisierung Ã¼berschreitet ArraygrenzenArray mit nicht konstantem Arrayausdruck initialisiertArray mit geklammerter Zeichenkettenkonstante initialisiertArray-Initialisierer fÃ¼r strukturierte Bindungsdeklaration in BedingungArrayelement %q#D hier deklariertArray muss mit Initialisierung mit umgebenden geschweiften Klammern initialisiert werdenArray unpassenden Typs mit Zeichenkettenkonstante initialisiertArray mit Laufzeitgrenzen kann nicht durch Kopie eingefangen werden, sondern nur Ã¼ber eine ReferenzArray unbekannter LÃ¤nge mit leerem InitialisiererArrayergebnisArrayabschnitt in %qs-Klausel hat keinen zuordenbaren TypArrayabschnitt in %<#pragma acc declare%>Arrayabschnitt ist in %qs-Klausel nicht zusammenhÃ¤ngendAusdruck fÃ¼r ArraygrÃ¶ÃŸe wird noch nicht unterstÃ¼tztArraygrÃ¶ÃŸe in Â»newÂ«-Ausdruck muss konstant seinArraygrÃ¶ÃŸe fehlt in %q+DArraygrÃ¶ÃŸe fehlt in %qDArraygrÃ¶ÃŸe fehlt in %qTArrayindex %<%T[%wi]%> ist teilweise auÃŸerhalb der Arraygrenzen von %qTArrayindex %E ist oberhalb der Arraygrenze von %qTArrayindex %E ist unterhalb der Arraygrenze von %qTArrayindex %E liegt auÃŸerhalb der Arraygrenzen von %qTArrayindexwert %E liegt auÃŸerhalb der Grenzen des inneren Arraytyps %qT mit LÃ¤nge 0Arrayindex %qE liegt auÃŸerhalb der Grenzen des Arraytyps %qT mit LÃ¤nge 0Arrayindex %wi ist unterhalb der Arraygrenze von %qTArrayindex %wi ist auÃŸerhalb der Arraygrenzen von %qTArrayindex %wu ist oberhalb der Arraygrenze von %qTArrayindex [%E, %E] ist auÃŸerhalb der Arraygrenzen von %qTArrayindex [%wi, %wi] ist auÃŸerhalb der Arraygrenzen von %qTArrayindex hat Typ %<char%>Arrayindex ist keine GanzzahlArrayindexwert %qE ist auÃŸerhalb der Grenzen des Arrays %qD vom Typ %qTArrayindexwert %qE ist auÃŸerhalb der Grenzen des Arraytyps %qTArraytyp hat unvollstÃ¤ndigen Elementtypen %qTInterner Fehler: array type must be initializedArraytypen haben unterschiedliche GrenzenArray als Initialisierung verwendetArray mit Qualifizierer auf dem Element wird vor C23 nicht qualifiziertArrays von Funktionen sind sinnlosAssembler unterstÃ¼tzt %<-mabi=ilp32%> nichtInterner Fehler: assembler name hash list corruptedBehauptung fehlt hinter %qsZusicherungen mÃ¼ssen von %<;%> gefolgt seinAttribute der Zuweisungssemantik der Eigenschaft %qD in Konflikt mit vorheriger Deklarationhier zugewiesenZuweisung an Array von InitialisierungslisteZuweisungZuweisung (nicht Initialisierung) in DeklarationZuweisung streicht Qualifizierer %qv von Zeiger-ZieltypZuweisung von anderem Objective-C-TypZuweisung von Zeiger auf nicht eingeschlossenen AdressbereichZuweisung von temporÃ¤rer %<initializer_list%> fÃ¼hrt nicht dazu, dass die Lebenszeit des zugrundeliegenden Arrays ausgeweitet wirdLinks-Zuweisung kÃ¶nnte Kandidat fÃ¼r Formatattribut seinZuweisung erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger %q#vZuweisung des konstanten Feldes %qDZuweisung der Funktion %qDZuweisung von Element %qD in schreibgeschÃ¼tztem ObjektZuweisung der schreibgeschÃ¼tzten Speicherstelle %qEZuweisung des schreibgeschÃ¼tzten Elementes %qDZuweisung des schreibgeschÃ¼tzten benannten RÃ¼ckgabewertes %qDZuweisung des schreibgeschÃ¼tzten Parameters %qDZuweisung der schreibgeschÃ¼tzten Referenz %qDZuweisung der schreibgeschÃ¼tzten Variable %qDZuweisungsunterdrÃ¼ckungZuweisung an %e von inkompatiblem Zeigertyp %eZuweisung an %e von Zeiger auf %qD mit inkompatiblem Typ %eZuweisung an %qT aus %qT wandelt einen Zeiger in eine Ganzzahl um, ohne explizite TypkonvertierungZuweisung an %qT von %qT wandelt eine Zahl in einen Zeiger um, ohne explizite TypkonvertierungZuweisung an %qT von Zeigertyp %qT mit inkompatibler Speicherreihenfolge fÃ¼r SkalareZuweisung an Ausdruck von Arraytypassociate_integer_pointer(): Already associatedArgument mit angenommenem RangArgument mit angenommener FormArgument von angenommenem TypUmwandlung in Typ %qT von Ã¼berladener Funktion wird angenommenangenommen, dass die Ausgabe der Direktive %wu Byte groÃŸ istangenommen, dass die Ausgabe der Direktive %wu Bytes groÃŸ istZeiger auf Element %qD wird angenommenAnnahme, dass vorzeichenbehafteter Ãœberlauf nicht auftritt, wenn Konstanten um einen Vergleich kombiniert werdenAnnahme, dass vorzeichenbehafteter Ãœberlauf nicht auftritt, wenn Konstante in Vergleich verringert wirdder Compiler geht davon aus, dass kein vorzeichenbehafteter Ãœberlauf auftritt, und vereinfacht daher %<X - Y %s 0%> zu %<X %s Y%>Annahme, dass vorzeichenbehafteter Ãœberlauf nicht auftritt, wenn BereichsprÃ¼fung vereinfacht wirdAnnahme ignoriert, weil sie einen await-Ausdruck enthÃ¤ltasynchrones Argumentbei %s, %san Offset %s des Zielobjekts %qE der GrÃ¶ÃŸe %san Offset %s des Zielobjekts der GrÃ¶ÃŸe %s, alloziert durch %qEan Offset %s des Objekts %qE der GrÃ¶ÃŸe %san Offset %s des Objekts der GrÃ¶ÃŸe %s, alloziert durch %qEan Offset %s des Quellobjekts %qE der GrÃ¶ÃŸe %san Offset %s des Quellobjekts der GrÃ¶ÃŸe %s, alloziert durch %qEan Offset %wi von %qD, das hier deklariert istan Offset [%wi, %wi] von %qD, das hier deklariert istat-calls %<strub%> does not support call to %qDatexit gescheitertVersuch, ein Objekt zu indizieren, das weder Array, Slice, String noch Map istVersuch, einen Typausdruck zu indizierenVersuch, ein Objekt zu schneiden, das weder Array, Slice noch String istVersuch, die Adresse eines Bitfelds zu bestimmenVersuch, die Adresse des Bitfeldstrukturelements %qD zu ermittelndem Attribut %<%E(%s)%> fehlt ein ArgumentAttribut %<%E(%s, %E)%> hat ungÃ¼ltiges Positionsargument %iAttribut %<%E(%s, %E, %E)%> hat ungÃ¼ltiges Positionsargument %i%<fallthrough%>-Attribut ist nicht direkt vor einer case-Marke oder einer default-MarkeAttribut %<fallthrough%> ist mehrfach angegebenin der %<return%>-Anweisung ist das Attribut %<musttail%> mit anderen Attributen vermischtbeim Attribut %<target%> ist das Argument %qs unbekanntArgument fÃ¼r Attribut %<target%> ist keine ZeichenketteAttribut %<target("%s")%> akzeptiert keine Argumentedas Argument des Attributs %<target_version%> ist keine Zeichenkettedas Attribut %<target_version%> hat mehrere WerteArgument von Attribut %qE muss eins von %qs oder %qs seinArgument von Attribut %qE muss eins von %qs, %qs, %qs oder %qs seinAttributargument von %qE ist keine Zeichenkettedas Attribut %qE gilt nicht fÃ¼r Elemente des nicht skalaren Typs %qTAttribut %qE gilt nicht fÃ¼r Felder des Aggregattyps %qTungÃ¼ltiger Modus fÃ¼r Attribut %qEAttribut %qE ungÃ¼ltiger Modus %qs; erwartet wird einer von %qs, %qs, %qs oder %qsAttribut %qE Modus %qE ist kein Bezeichner; erwartet wird einer von %qs, %qs, %qs oder %qsAttribut %qE enthÃ¤lt unerwartete %<(%> nach Modus %qs; erwartet wird ein Positionsargument oder %<)%>Attribut %qE ohne Argumente bei einem Nicht-PrototypAttribut %qs bezieht sich nur auf Arraytypenbeim Attribut %qs ist das Argument %qs unbekanntArgument von Attribut %qs muss eine Zeichenkette seinAttribut %qs erwartet ein konstantes positives ganzzahliges ArgumentAttribut %qs hat ungÃ¼ltiges positionelles ArgumentAttribut %qs ist unvertrÃ¤glich mit Modus %qsAttribut %qs enthÃ¤lt nicht Ã¼bereinstimmende Positionsargumente mit den Werten %i und %idem Attribut %qs fehlt Positionsargument 2, das in der vorherigen Bestimmung in Argument %u angegeben wurdebeim Attribut %qs hat das Argument an Position %i den ungÃ¼ltigen Wert %wibeim Attribut %qs hat das positionelle Argument %i den Wert %wi, der die Anzahl der Funktionsparameter %u Ã¼bersteigtbeim Attribut %1$qs verweist Argument 1 auf Typ %3$qT, der mit %2$qs qualifiziert istAttribut %qs hat Positionsargument 1, das sich auf das Argument des Funktionstyps %qT beziehtbeim Attribut %qs verweist Argument 1 auf Typ %qT, der kein Zeigertyp istAttribut %qs positionelles Argument 2 widerspricht der vorherigen Bestimmung von Argument %uAttribut %qs positionelles Argument 2 fehlt in vorheriger Bestimmungbeim Attribut %qs verweist Argument 2 auf Typ %qT, der nicht ganzzahlig istAttribut %qs ist mehrfach angegebenAttribut-DeklarationAttribut fÃ¼r %q#T muss dem SchlÃ¼sselwort %qs folgenAttribut wird ignoriertAttribut in Deklaration von %q#T ignoriertAttribut in expliter Instanziierung %q#T ignoriertattribute-using-prefix ist nur mit %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbarAttribut, das PrÃ¤fix verwendet, wird zusammen mit GÃ¼ltigkeitsbereich-Attribut-Token verwendetAttributwert %qs ist im %qs-Attribut unbekanntder Wert %qs wurde bereits im Attribut %qs angegebenAttribut ohne Argumente enthÃ¤lt keine ParameterpaketeAttribute hinter geklammerter Initialisierung werden ignoriertbei einer Funktionsdefinition sind keine Attribute erlaubtAttribute dÃ¼rfen an dieser Stelle nicht verwendet werdenAttribute am Anfang der Anweisung werden ignoriertAttribute in %<asm%>-Deklaration werden ignoriertAttribute an Spezifizierer ausfÃ¼hrlichen Typs ignoriert, der keine VorwÃ¤rtsdeklaration istAttribute werden beim Ã¤uÃŸersten Array-Typ im %<new%>-Ausdruck ignoriertAttribute an Templateinstanziierung ignoriertAttribute an instanziiertem Typen ignoriertAttribute in Parameterarraydeklarator ignoriertAttribute dÃ¼rfen hier eingesetzt werdenAttribute dÃ¼rfen nicht vor dem Objective-C++-SchlÃ¼sselwort %<@%D%> angegeben werdenAttribute an Basisangaben werden ignoriertandere Attribute als OpenMP-Direktiven sind fÃ¼r %<for%> in Schleifenschachtelungen nicht zulÃ¤ssigAttribute sollten in einer Funktionsdefinition vor dem Deklarator angegeben werdenautomatische FPU-Auswahl ist hier momentan nicht erlaubtautomatische Variable %qE kann nicht %<threadprivate%> seinInitialisiert alle Zeiger auf NILInterner Fehler: aux field set for edge %s->%sInterner Fehler: aux field set for indirect edge from %sverfÃ¼gbar seit Fortran 77await-AusdrÃ¼cke sind in Handlern nicht erlaubtder abwartbare Typ %qT muss ein Strukturtyp seinAxiom-Vertrags-Semantik muss %<assume%> oder %<ignore%> seinBackend-Deklaration fÃ¼r Modulvariable %qs ist bereits vorhandenfalsche ADDR_SPACE_GLOBAL-Adressefalsche E/A-Adresse 0x%s auÃŸerhalb des gÃ¼ltigen Bereichs [0x%x, 0x%x] fÃ¼r Operand %%iFalsche AdresseFalsche Adresse, nicht (reg+disp):falsche Adresse, keine Konstante:Falsche Adresse, nicht post_inc oder pre_dec:falsche Ausrichtung: %dFalscher Betrag der Stapelspeicherentfernung: %dfalsches Argument fÃ¼r %<-fdebug=%>: %qsfalsches Argument fÃ¼r %<-fextern-std%>: %qsfalsches Argument fÃ¼r %<-fmodule-file=%>: %qsfalsches Argument fÃ¼r %<-fversion=%>: %qsFalscher eingebauter CodeFalscher eingebauter fcodeFalscher eingebauter ICodeFalscher Bedingungscodebad expressionFalscher Ausdruckstyp beim Durchlaufen (%d)falscher Befehl fÃ¼r 'A'Falscher Befehl in frv_print_operand, Fall 0Falscher Befehl in frv_print_operand, falsches const_doubleFalscher Befehl in frv_print_operand, Fall Â»zÂ«Falscher Befehl fÃ¼r frv_print_operand, Modifizierer Â»FÂ«:Falscher Befehl fÃ¼r frv_print_operand, Modifizierer Â»LÂ«:Falscher Befehl fÃ¼r frv_print_operand, Modifizierer Â»M/NÂ«:Falscher Befehl fÃ¼r frv_print_operand, Modifizierer Â»OÂ«:Falscher Befehl fÃ¼r frv_print_operand, Modifizierer Â»eÂ«:Falscher Befehl fÃ¼r frv_print_operand, Modifizierer Â»fÂ«:Falscher Befehl fÃ¼r frv_print_operand, Modifizierer Â»gÂ«:Falscher Befehl fÃ¼r frv_print_operand, Modifizierer Â»PÂ«:Falscher Befehl fÃ¼r frv_print_operand_address:Falscher Befehl fÃ¼r frv_print_operand_memory_reference:ungÃ¼ltige Bewegungbad opungÃ¼ltiger Operandschlechte Option %qs fÃ¼r Attribut %<optimize%>schlechte Option %qs fÃ¼r Pragma %<optimize%>Falscher Operand fÃ¼r output_condmove_singleFalscher Operand fÃ¼r output_move_doubleFalscher Operand fÃ¼r output_move_singlefalsches RegisterFalsches Register fÃ¼r frv_print_operand_memory_reference_reg:falscher RÃ¼ckgabetyp fÃ¼r Funktionsargument %u von %<__builtin_tgmath%>Falscher Schiebe-Befehl:Falscher Testfalscher Typ fÃ¼r Argument %u von Funktionsargument %u von %<__builtin_tgmath%>falsche Verwendung der spec-Funktion %qsfalscher Wert %qs fÃ¼r Schalter %<-march=%>Falscher Wert %qs fÃ¼r Schalter %<-mcpu%>Falscher Wert %qs fÃ¼r Schalter %<-mfp-rounding-mode%>Falscher Wert %qs fÃ¼r Schalter %<-mfp-trap-mode%>falscher Wert %qs fÃ¼r %<-mmemory-latency%>Falscher Wert %qs fÃ¼r Schalter %<-mtls-size%>Falscher Wert %qs fÃ¼r Schalter %<-mtls-size=%>falscher Wert %qs fÃ¼r Schalter %<-mtrap-precision%>falscher Wert %qs fÃ¼r Schalter %<-mtune%>falscher Wert %qs fÃ¼r Schalter %<-mtune=%>unbekannter Wert %qs fÃ¼r Attribut %<target("arch=")%>falscher Wert %qs fÃ¼r Attribut %<target("tune=")%>falscher Wert fÃ¼r %<%s-%s%>falscher Wert fÃ¼r %<%s=%s%>schlecht geschachtelte C-Header vom PrÃ¤prozessorApostroph %<'%> auÃŸerhalb von AnfÃ¼hrungszeichen im FormatSperrregion darf nicht innerhalb einer Region eng geschachtelt sein, die arbeitsteilend, %<loop%>, %<critical%>, %<ordered%>, %<master%>, %<masked%>, explizit %<task%> oder %<taskloop%> istBarrierenwert muss im Bereich [0, 15] liegenBasis %qT wird initialisiert nachBasisklasse %q#T hat einen zugÃ¤nglichen nicht-virtuellen DestruktorBasisklasse %q#T sollte explizit im Kopierkonstruktor initialisiert werdenBasisklasse %qT ist nicht %<public%>Expansion der Basisinitialisierung %qT enthÃ¤lt keine ParameterpacksBasisoperand von %<->%> hat Nicht-Zeiger-Typ %qTBasisoperand von %<->%> ist kein ZeigerInterner Fehler: base pointer cycle detectedBasistyp %qT ist kein struct- oder KlassentypInterner Fehler: base variable or SSA name undeclaredInterner Fehler: basic block %d pred edge is corruptedInterner Fehler: basic block %d should be marked irreducibleInterner Fehler: basic block %d should not be marked irreducibleInterner Fehler: basic block %i edge lists are corruptedInterner Fehler: basic blocks not laid down consecutivelyInterner Fehler: bb %d does not belong to loop %dInterner Fehler: bb %d has father loop %d, should be loop %dInterner Fehler: bb %d on wrong placeda %qT vom Benutzer bereitgestelltes %qD hatda es ein Element von %qT istda er als glvalue verwendet wirdda der Arrayelementtyp %qT variable GrÃ¶ÃŸe hatAnfangsausdruck verweist auf Ã¤uÃŸeren Iterator %qDbinÃ¤res Argument %u fÃ¼r typgenerische Funktion, die ausschlieÃŸlich dezimal istbinÃ¤rer Ausdruck in Operand von FaltungsausdruckbinÃ¤rer Operator unterstÃ¼tzt nicht, dass bool-Vektor mit Gleitkommavektor vermischt wirdbinÃ¤rer Operator unterstÃ¼tzt keine zwei bool-Vektor-OperandenBinÃ¤rer Operator unterstÃ¼tzt Boolean-Vektor-Argument nichtbind(c)-Prozedurdas Binden der Referenz vom Typ %qH an %qI streicht QualifiziererBitfeld %q#D mit Nicht-Ganzzahl-Typ %qTBreite des Bitfeldes %q+D ist keine GanzzahlkonstanteBitfeld %qD mit Nicht-Ganzzahl-Typ %qTBitfeld %qD mit Nicht-Ganzzahl-Typ %qTBitfeld %qE hat atomaren TypenBitfeld %qE in %qs-KlauselBitfeld %qs hat ungÃ¼ltigen TypenBreite des Bitfeldes %qs ist keine GanzzahlkonstanteBreite des Bitfeldes %qs ist kein GanzzahlkonstantenausdruckBitfeld hat atomaren TypenBitweiser Vergleich ergibt immer Â»falseÂ«Bitweiser Vergleich ergibt immer Â»trueÂ«bitweise Operation zwischen den unterschiedlichen AufzÃ¤hlungstypen %qT und %qTbitweise Operation zwischen den unterschiedlichen AufzÃ¤hlungstypen %qT und %qT ist veraltetBlock-IFextern-Deklaration %q#D mit GÃ¼ltigkeitsbereich Block darf nicht an ein benanntes Modul angehÃ¤ngt werdenKÃ¶rper der %<constexpr%>-Funktion %qD ist keine RÃ¼ckgabeanweisungnur simulierte DISPOSE-Konstruktion: %dfalsche JARL-Konstruktion: %dnur simulierte JR-Konstruktion: %dnur simulierte PREPARE-Konstruktion: %dfalscher Ergebnistyp bei VergleichBoolesche Register fÃ¼r die Gleitkommaoption benÃ¶tigtwenn %<-mstack-protector-guard=sysreg%> angegeben ist, mÃ¼ssen sowohl %<-mstack-protector-guard-offset%> als auch %<-mstack-protector-guard-reg%> angegeben werdensowohl %<__thread%> als auch %<thread_local%> angegebenwidersprÃ¼chliche Modifizierer %<monotonic%> und %<nonmonotonic%> angegebensowohl %qs als auch %qs angegebensowohl Â»%sÂ« als auch das %qE-Attribut geben die Adresse anbeide Argumente in binÃ¤rer Faltung haben unexpandierte Parameterpackungendie beiden Argumente mÃ¼ssen kompatibel seinbeide Argumente fÃ¼r %<__builtin___clear_cache%> mÃ¼ssen Zeiger seinsowohl binÃ¤re als auch dezimale Gleitkomma-Argumente in Aufruf von typgenerischer Funktionbeide Zweige der %<if%>-Anweisung als %qs markiertsowohl komplexe als auch dezimale Gleitkomma-Argumente in Aufruf von typgenerischer Funktiongebundenes Argument %i mit Wert %s ist negativ, fÃ¼r Argument %i vom Typ Array variabler LÃ¤nge vom Typ %sgeschweift geklammerte Spezifikation %qs endet mit Escapezeichengeschweift geklammerte Spezifikation %qs ist bei %qc ungÃ¼ltiggeschweift geklammerter SpezifikationskÃ¶rper %qs ist ungÃ¼ltiggeklammerte Gruppe innerhalb eines Ausdrucks nur in einer Funktion erlaubtgeschweifte Klammern um Skalar-Initialisierunggeschweifte Klammern um skalare Initialisierung fÃ¼r Typ %qTZweig %2d niemals ausgefÃ¼hrt%sZweig %2d wurde genommen: %s%sbreak-Anweisung nicht innerhalb einer Schleife oder Â»switchÂ«break-Anweisung mit OpenMP fÃ¼r Schleife verwendetbuild_dt: Format mit Namenslisteeingebaute %qD ist hier deklariertEingebaute Funktion %q+D als Nicht-Funktion deklarierteingebaute Funktion %qD als Nicht-Funktion deklarierteingebaute Funktion %qD ist nicht eingeschalteteingebaute Funktion %qD erfordert das Kennzeichen %<-mconstant-cfstrings%>eingebaute Funktion %qD nimmt nur ein Argumenteingebaute Funktion %qE muss direkt aufgerufen werdeneingebaute Funktion %qE nicht fÃ¼r MIPS16 unterstÃ¼tztEingebaute Funktion %qE erfordert die ISA-Erweiterung %qsEingebaute Funktion %qE erfordert die ISA-Erweiterung zve32f, zve64f, zve64d oder vEingebaute Funktion %qE erfordert die ISA-Erweiterung zve64d oder vEingebaute Funktion %qE erfordert die ISA-Erweiterung zve64x, zve64f, zve64d oder veingebaute Funktion %qE erfordert die ISA-Erweiterung zvfbfmin oder zvfbfwmaEingebaute Funktion %qE erfordert die ISA-Erweiterung zvfhmin oder zvfhdie eingebaute Funktion fÃ¼r benannten Adressraum wird fÃ¼r GerÃ¤te mit reduziertem Tiny nicht unterstÃ¼tzteingebaute Funktion wird nur fÃ¼r GNU-C unterstÃ¼tzteingebauter Index-Operator mit mehr als einem Ausdruck in der Ausdruckslisteeingebauter Index-Operator ohne Ausdruckslisteeingebaute Funktion %qF ist veralteteingebautes %qF ist nur fÃ¼r interne GCC-Nutzungeingebaute %qF wird nur mit %<-mhtm%> unterstÃ¼tzt (standardmÃ¤ÃŸig fÃ¼r %<-march=zEC12%> und hÃ¶her eingeschaltet)eingebaute %qF wird nur mit %<-mvx%> unterstÃ¼tzt (standardmÃ¤ÃŸig fÃ¼r %<-march=z13%> und hÃ¶her eingeschaltet)das eingebaute %qs kann nur mit Vektortypen verwendet werdeneingebaute Funktion %qs kann nur im 64-Bit-Modus verwendet werdeneingebaute Funktion %qs erfordert GLIBC (2.23 oder neuer), die Hardware-FÃ¤higkeits-Bits exportiertEingebaute Funktion %qs akzeptiert genau 1 ArgumentEingebaute Funktion %qs akzeptiert genau 2 ArgumenteEingebaute Funktion %qs akzeptiert genau 3 Argumenteeingebaute Funktion %qs akzeptiert nur ein ZeichenkettenargumentOperand %d der eingebauten Funktion muss konstant seinaber %qD wirft nicht; vielleicht sollte sie als %<noexcept%> deklariert werdenaber %qs hat es nichtwird aber Ã¼berragt von einer Tabelle ohne RTTI-Informationen aus anderer Ãœbersetzungseinheitaber nicht hierdurch Argument %u vom Typ %s nach %qD, die hier deklariert wurdedurch Argument %u vom Typ %s nach %qTBytecode-Strom in Datei %qs, mit einem Ã¤lteren GCC-Compiler als 10.0 erzeugtBytecode-Strom in Datei %qs mit LTO-Version %d.%d statt des erwarteten %d.%d erzeugtBytecode-Strom: Marke %s statt %s erwartetBytecode-Strom: Leeren Cgraph-Knoten gefundenBytecode-Strom: Mehrere Instanzen des Cgraph-Knoten mit UID %d gefundenBytecode-Strom: Nicht nullterminierte Zeichenkette gefundenBytecode-Strom: Ausschuss am Ende des Â»symbolsÂ«-AbschnittsBytecode-Strom: Kein Gerufener beim Lesen der Kante gefundenBytecode-Strom: Kein Aufrufer beim Lesen der Kante gefundenBytecode-Strom: Zeichenkette zu lang fÃ¼r Zeichenkettentabellebytecode stream: tag %s is not in the expected range [%s, %s]Bytecode-Strom: Versuch, %d Bytes nach Ende des Eingabepuffers zu lesenBytecode-Strom: unerwarteter LTO-Abschnitt %sBytecode-Strom: unerwartete Marke %sbytecode stream: unknown GIMPLE statement tag %sAufruf %2d niemals ausgefÃ¼hrt
  Aufruf %2d gab %s zurÃ¼ck
! die echte Funktion statt des eingebauten Ã„quivalents aufrufender Wert bei Aufruf und RÃ¼ckkehr unterscheiden sichAufruf hat ringfÃ¶rmige AbhÃ¤ngigkeitder Aufruf des Funktionsaufrufs verweist auf lokale VariablenAufruf wird niemals ausgefÃ¼hrt und CodegrÃ¶ÃŸe wÃ¼rde wachsenAufruf ist unwahrscheinlich und CodegrÃ¶ÃŸe wÃ¼rde wachsender Aufruf wirft mÃ¶glicherweise eine lokal gefangene Ausnahme oder rÃ¤umt aufder Aufruf wirft mÃ¶glicherweise eine Ausnahme, die nicht propagiertAufruf von %<%T::operator[] (%A)%> ist mehrdeutigAufruf von %<(%T) (%A)%> ist nicht eindeutigAufruf des Ã¼berladenen %<%D(%A)%> ist nicht eindeutigAufruf des Ã¼berladenen %<%s(%A)%> ist mehrdeutigder Hash der Aufrufanweisung zeigt nicht auf die erste direkte Kante der Folge von spekulativen AufrufenAufruf von %<__builtin_operator_delete%> wÃ¤hlt keine ersetzbare globale DeallokationsfunktionAufruf von %<__builtin_operator_new%> wÃ¤hlt keine ersetzbare globale AllokationsfunktionAufruf von %qD%qD wird hier aufgerufenAufruf von %qD verwendet das Standardargument fÃ¼r Parameter %P, der noch nicht definiert wurdeAufruf von %qE ist mehrdeutig; Argument %d ist vom Typ %qs, aber Argument %d ist vom Typ %qsAufruf von %qs mit Attributfehler deklariert: %sAufruf von %qs mit Attributwarnung deklariert: %sAufruf einer Funktion, die den %qs-Zustand teilt, aus einer Funktion, die keinen %qs-Zustand hatAufruf einer Funktion, die den SME-Status teilt, aus einer Funktion, die keinen SME-Status hatAufruf einer Funktion, die einen anderen Status als %qs hat, aus einer Funktion, die den Status %qs hatAufruf der consteval-Funktion %qE ist kein konstanter AusdruckAufruf der Funktion %qD, die unvollstÃ¤ndigen Typen %q#T wirftAufruf einer Funktion, die unvollstÃ¤ndigen Typen %q#T wirftAufruf fÃ¼r interne Funktion %qEAufruf der nicht-%<constexpr%>-Funktion %qDAufruf der Nicht-Funktion %qDfÃ¼r Ruf vorgesehenes Register wurde fÃ¼r globale Registervariable verwendetvon hier aufgerufenvon dieser Funktion aus aufgerufengerufenes Objekt %qD ist keine Funktion oder Funktionszeigergerufenes Objekt %qE ist keine Funktion oder Funktionszeigergerufenes Objekt ist keine Funktion oder Funktionszeigerder Aufgerufene kehrt nicht zurÃ¼ckAufgerufene Funktion verweist auf comdat-lokale Symboleder Angerufene benÃ¶tigt mehr Stack-Slots als der Aufruferder Aufgerufene gibt eine Struktur zurÃ¼ckder Aufgerufene kehrt zweimal zurÃ¼ckAufrufer und Aufgerufener sind sich nicht einig Ã¼ber die Promotion des RÃ¼ckgabewerts der FunktionInterner Fehler: caller edge count does not match BB countInterner Fehler: caller edge count invalidAufrufer ist nicht optimiertder Aufrufer verwendet __builtin_eh_returnder Aufrufer verwendet allocader Aufrufer verwendet setjmpder Aufrufer verwendet sjlj-Ausnahmender Aufrufer verwendet stdargsAufruf von %<always_inline%> %<strub%> %qD in Nicht-%<strub%>-Kontext %qDAufruf von %qD mit Nicht-%<strub%>-Typ %qT in %<strub%>-Kontext %qDAufruf von %qD mit SSE-Aufrufkonvention, ohne dass SSE/SSE2 eingeschaltet istdas Aufrufen von %qD mit einem nicht-null-Argument ist unsicherAufruf von %qD mit Attribut sseregparam, ohne dass SSE/SSE2 eingeschaltet istAufruf von %qE ohne Nebenwirkungen verwirft RÃ¼ckgabewert vom Typ %qT; falls der Aufruf beabsichtigt ist, stellen Sie ein %<cast(void)%> voranAufruf von %qT mit Attribut sseregparam, ohne dass SSE/SSE2 eingeschaltet istder Aufruf einer Streaming-Funktion erfordert die ISA-Erweiterung %qsÂ»constexprÂ«-Elementfunktion %qD kann nicht vom virtuellen Basisobjekt aus aufgerufen werdenAufruf des Nicht-%<strub%>-Ausdrucks %qD im %<strub%>-Kontext %qDAufrufe von Funktionen vom Typ %qT erfordern die SVE-ISA-ErweiterungAufrufe Ã¼berladener Operatoren kÃ¶nnen nicht in einem Konstanten-Ausdruck auftretenAufrufe an die OpenMP-Laufzeit-API sind in dazwischenliegendem Code nicht zulÃ¤ssigcalls_comdat_local wird auÃŸerhalb einer comdat-Gruppe gesetztnur Attribut %qE kann fÃ¼r Definitionen von Objekten eines Klassentyps im Datei-GÃ¼ltigkeitsbereich verwendet werdenhÃ¶chstens einer der Spezifizierer %<constinit%> und %<constexpr%> kann verwendet werdenNicht-GP-relative absolute Adresse kann nicht verwendet werdenKandidat %i:Interner Fehler: candidate %s has unimplemented %<CVT_type%> %d(%s)Kandidat 1:Kandidat 2:Kandidat erwartet %d Argument, %d angegebenKandidat erwartet %d Argumente, %d angegebenKandidat erwartet mindestens %d Argument, %d angegebenKandidat erwartet mindestens %d Argumente, %d angegebenKandidat ist:Kandidaten sind:Kandidaten sind:%<dynamic_cast%> %qE (des Typs %q#T) in Typ %q#T (%s) kann nicht vorgenommen werden%<goto%> kann nicht in einen %<catch%>-Block hineinspringen%<goto%> kann nicht in einen %<try%>-Block hineinspringenAufzÃ¤hlungsliste kann nicht zu Template-Instanziierung hinzugefÃ¼gt werdennach der Definition kÃ¶nnen keine VertrÃ¤ge mehr hinzugefÃ¼gt werdenVertrÃ¤ge kÃ¶nnen nicht zu einer virtuellen Funktion hinzugefÃ¼gt werdenes kann kein Objekt des abstrakten Typs %qT belegt werdenArray kann nicht alloziert werden: GrÃ¶ÃŸe nicht konstantObjekte vom RVV-Typ %qT kÃ¶nnen nicht alloziert werdenObjekte vom SVE-Typ %qT kÃ¶nnen nicht alloziert werdenStapelspeicher fÃ¼r Variable %q+D kann nicht angefordert werden, nackte Funktionvl-Register fÃ¼r %qs kann auf diesem Ziel nicht alloziert werden%<offsetof%> kann nicht auf nicht-konstante Adresse angewandt werden%<offsetof%> kann nicht auf AufzÃ¤hler %qD angewandt werden%<offsetof%> kann nicht auf Destruktor %<~%T%> angewandt werden%<offsetof%> kann nicht auf Elementfunktion angewandt werden%<offsetof%> kann nicht auf Elementfunktion %qD angewandt werden%<offsetof%> kann nicht auf statisches Datenelement %qD angewendet werden%<offsetof%> kann nicht angewandt werden, wenn %<operator[]%> Ã¼berladen ist%qs kann nicht auf %qD angewendet werden, da diese bereits mit einer OpenMP-Â»declare targetÂ«-Direktive gekennzeichnet wurdedas Attribut %qs kann nicht auf %q+D angewendet werden, nachdem die Funktion definiert worden istDie Attribute %<longcall%> und %<shortcall%> kÃ¶nnen nicht beide gleichzeitig fÃ¼r eine Funktion verwendet werdenElementzeiger %qE kann nicht auf %qE angewandt werden, da letzteres vom Nicht-Klassen-Typ %qT ist%<::main%> kann nicht an ein benanntes Modul angehÃ¤ngt werdendas Bitfeld %qE kann nicht mit %qT verbunden werdenkann keine Lvalue-Referenz vom Typ %qH an einen Rvalue vom Typ %qI bindennicht-konstante lvalue-Referenz vom Typ %qH kann nicht an Wert vom Typ %qI gebunden werdennicht-konstante lvalue-Referenz vom Typ %qH kann nicht an rvalue vom Typ %qI gebunden werdendas gepackte Feld %qE kann nicht mit %qT verbunden werdenReferenz vom Typ %qH kann nicht an %qI gebunden werden, da die Arraygrenzen sich unterscheidender R-Wert %qE kann nicht mit %qT verbunden werdenrvalue-Referenz vom Typ %qH kann nicht an lvalue vom Typ %qI gebunden werdenein Konzept kann nicht wie eine Funktion aufgerufen werdenKonstruktor %<%T::%D%> kann nicht direkt aufgerufen werdenElementfunktion %qD kann nicht ohne Objekt aufgerufen werden%qE kann nicht per Referenz aufgefangen werdenElement %qD von unbenannter Union kann nicht eingefangen werden%qs kann nicht in %qs umgewandelt werden, da die GrÃ¶ÃŸen nicht passenAusdruck vom Typ %qs kann nicht in %qs umgewandelt werdenAusdruck vom Typ %qs kann nicht in den Typ %qs umgewandelt werdenException vom Typ %qT kann nicht gefangen werden, da Typen mit variabler GrÃ¶ÃŸe beteiligt sindNicht existierende Antwortdatei konnte nicht geschlossen werdenNur-Empfangs-Kanal kann nicht geschlossen werdenGNU- und SVE-Vektoren kÃ¶nnen nicht in einer binÃ¤ren Operation kombiniert werdeneine Basis vom Typ %qT kann nicht mit einem Index vom Typ %qT kombiniert werdeneine Basis vom Typ %qT kann nicht mit einem Offset vom Typ %qT kombiniert werden%qE kann nicht vom Typ %qH in den Typ %qI umgewandelt werden%qE kann nicht vom Typ %qT in den Typ %qT umgewandelt werden%qE kann nicht in %qT umgewandelt werden%qE kann nicht in %qT umgewandelt werden, da%qH kann nicht nach %qI umgewandelt werden%qH kann nicht nach %qI bei ArgumentÃ¼bergabe umgewandelt werden%qH kann nicht nach %qI in Zuweisung umgewandelt werden%qH kann nicht nach %qI im Standardargument umgewandelt werden%qH kann nicht nach %qI in Initialisierung umgewandelt werden%qH kann nicht nach %qI in RÃ¼ckgabe umgewandelt werdenein Delegatenausdruck kann nicht in %qs umgewandelt werdenWert vom Typ %qT kann nicht in Vektortyp %qT konvertiert werden, da sie unterschiedlich groÃŸ sindVektor vom Typ %qT kann nicht in Typ %qT konvertiert werden, da sie unterschiedlich groÃŸ sindAusdruck kann nicht umgewandelt werden, nur Basistypen kÃ¶nnen umgewandelt werdenUmwandlung von %qT in Basisklasse %qT nicht mÃ¶glich, da %qT unvollstÃ¤ndig istUmwandlung von Basisklasse %qT in abgeleitete Klasse %qT nicht mÃ¶glich, da die Basisklasse virtuell istUmwandlung von Basisklasse %qT in abgeleitete Klasse %qT nicht mÃ¶glich, da die Basisklasse %qT virtuell istunvollstÃ¤ndiger Typ %qH kann nicht in %qI umgewandelt werdenUmwandlung von Zeiger auf Basisklasse %qT in Zeiger auf abgeleitete Klasse %qT nicht mÃ¶glich, da die Basisklasse virtuell istUmwandlung von Zeiger auf Basisklasse %qT in Zeiger auf abgeleitete Klasse %qT nicht mÃ¶glich, da die Basisklasse %qT virtuell istParameter %qs kann bei der ArgumentÃ¼bergabe nicht vom Typ %qs in den Typ %qs umgewandelt werdenParameter %qs kann innerhalb der Anweisung nicht vom Typ %qs in den Typ %qs umgewandelt werdendie Struktur %qs kann nicht in %qs umgewandelt werdenes kann nicht in Zeigertyp konvertiert werdenTyp %qH kann nicht in den Typ %qI umgewandelt werdenWert kann nicht in einen Vektor umgewandelt werdenkann keinen neuen GÃ¼ltigkeitsbereich %qs erstellen, da %qs mit Aufrufern geteilt wirdZeiger auf Referenzelement %qD kann nicht erzeugt werdender vorkompilierte Header %s kann nicht erzeugt werden: %mfÃ¼r Typ %qT kann keine Typinformation erzeugt werden, weil dies Typen variabler GrÃ¶ÃŸe umfasst%<::main%> kann nicht als %qs deklariert werden%<::main%> kann nicht als globale Variable deklariert werden%<::main%> kann nicht als Template deklariert werden%<::main%> kann nicht inline deklariert werden%<::main%> kann nicht statisch deklariert werden%<::main%> kann nicht mit einer Bindungsangabe deklariert werden%<catch%>-Parameter kann nicht als abstrakter Klassentyp %qT deklariert werden%<catch%>-Parameter kann nicht als R-Wert-Referenztyp %qT deklariert werden%qD kann nicht als Bitfeldtyp deklariert werdenParameter kann nicht mit %<decltype(auto)%> deklariert werdenBitfeld %qD kann nicht mit %<warn_if_not_aligned%>-Typ deklariert werdenBitfeld %qD kann nicht mit Funktionstyp deklariert werdenBitfeld %qs kann nicht mit %<warn_if_not_aligned%>-Typ deklariert werdenFeld %q+D kann nicht als vom abstrakten Typ %qT deklariert werdenElement %<%T::%s%> kann nicht in %qT deklariert werdenElementfunktion %<%T::%s%> kann nicht innerhalb von %qT deklariert werdenElementfunktion %qD kann nicht deklariert werden, statische Bindung zu habenParameter %q+D kann nicht als vom abstrakten Typ %qT deklariert werdenParameter kann nicht als vom abstrakten Typ %qT deklariert werdenZeiger auf %q#T kann nicht deklariert werdenZeiger auf Element %q#T kann nicht deklariert werdenZeiger auf qualifizierten Funktionstypen %qT kann nicht deklariert werdenReferenz auf %q#T kann nicht deklariert werdenReferenz auf %q#T kann nicht deklariert werden, da letzteres weder Typedef noch Templatetyp-Argument istReferenz auf qualifizierten Funktionstypen %qT kann nicht deklariert werdenstatische Funktion innerhalb anderer Funktion kann nicht deklariert werdenVariable %q+D kann nicht als vom abstrakten Typ %qT deklariert werdenAdresse kann nicht zerlegt werdenKlassentyp %qT kann nicht dekomponiert werden, da er ein unbenanntes Strukturelement hatKlassentyp %qT kann nicht dekomponiert werden, da er ein unbenanntes Unionelement hatKlassentyp %qT ohne nicht-static-Datenelemente kann nicht dekomponiert werdenKlassentyp %qT kann nicht dekomponiert werden, da sowohl er als auch seine Basisklasse %qT nichtstatische Datenelemente habenKlassentyp %qT kann nicht dekomponiert werden, da seine Basisklassen %qT und %qT nichtstatische Datenelemente habenunzugreifbares Element %qD von %qT kann nicht dekomponiert werdenLambda-Abschluss-Typ %qT kann nicht dekomponiert werdennicht-Array-nicht-Klassentyp %qT kann nicht dekomponiert werdenUnion-Typ %qT kann nicht dekomponiert werdenArray mit variabler LÃ¤nge %qT kann nicht dekomponiert werdenVektor %qT variabler LÃ¤nge kann nicht zerlegt werdenZeiger auf unvollstÃ¤ndigen Typen %qT kann nicht verringert werdenTemplateargumente fÃ¼r die Kopierinitialisierung von %qT kÃ¶nnen nicht abgeleitet werden, da es keine expliziten Ableitungshinweise oder benutzerdeklarierten Konstruktoren gibtTemplateargumente fÃ¼r %qT kÃ¶nnen nicht abgeleitet werden, da es keine Ableitungshinweise gibtfÃ¼r unbenannten Union-Member ist kein Standardvergleich definiertfÃ¼r flexible Arraymember ist kein Standardvergleich definiertfÃ¼r Referenzelement %qD ist kein Standardvergleich definiertfÃ¼r Union-Typ %qT ist kein Standardvergleich definiert%<friend%>-Funktion %qs kann nicht in einer lokalen Klassendefinition definiert werdenElementfunktion %<%T::%s%> kann nicht innerhalb von %qT definiert werdenElement des abhÃ¤ngigen Typedef %qT kann nicht definiert werdenEine Funktion kann nicht gelÃ¶scht werden. Nur Zeiger auf Objekte sind gÃ¼ltige Argumente fÃ¼r %<delete%>Objekte vom RVV-Typ %qT kÃ¶nnen nicht gelÃ¶scht werdenObjekte vom SVE-Typ %qT kÃ¶nnen nicht gelÃ¶scht werdenEs kann nicht von %<final%>-Basis %qT in abgeleiteten Typ %qT abgeleitet werdenFehler beim Bestimmen der %<#include%>-Ãœbersetzung von %s: %sdie LÃ¤nge von %qs kann nicht bestimmt werdenEingebaute Funktion %qs kann nicht abgeschaltet werdenin PTX-Assembler kÃ¶nnen keine unausgerichteten Zeiger erzeugt werden%qs kann nicht ausgefÃ¼hrt werden: %s%qs kann nicht ausgefÃ¼hrt werden: %s: %mInitialisierung fÃ¼r Element %qD kann nicht expandiert werdenElement %q#D kann nicht explizit deklariert werden, externe Bindung zu habenPCH-Datei kann nicht erweitert werden: %mfallthrough ist bei letztem Fall einer switch-Anweisung unmÃ¶glich%<ldd%> kann nicht gefunden werden%<nm%> kann nicht gefunden werden%qs kann nicht gefunden werden%s kann nicht in Plugin %s gefunden werden
! %s%s kann nicht in Plugin %s gefunden werden: %sLTO cgraph kann in %s nicht gefunden werdenLTO-Abschnittsreferenzen kÃ¶nnen in %s nicht gefunden werdenin der Klasse %qs konnte wÃ¤hrend des Neuladens von %<asm%> kein Register gefunden werdenkein gÃ¼ltiger ZÃ¤hlername %qs auffindbar fÃ¼r Option %<-fdbg-cnt=%>Klasse %qE kann nicht gefunden werdenmit Eigenschaft verbundene Instanzvariable nicht gefundenSchnittstellendeklaration fÃ¼r %qE kann nicht gefunden werdenSchnittstellendeklaration fÃ¼r %qE, Basisklasse von %qE, kann nicht gefunden werdenProtokolldeklaration fÃ¼r %qE kann nicht gefunden werdenReferenzmarke fÃ¼r Klasse %qE kann nicht gefunden werdenZeiger auf Element der Nicht-Klasse %q#T kann nicht erzeugt werdenfÃ¼r %qs kann kein lageunabhÃ¤ngiger Code erzeugt werdenInterner Fehler: cannot get %<float%> value from %sZugriff auf den Rahmenzeiger von %qs ist nicht mÃ¶glichPosition in PCH-Datei kann nicht ermittelt werden: %mProgrammstatus kann nicht ermittelt werden: %mVergleich vom Typ %<%s == %s%> kann nicht verarbeitet werdeninkonsistente Aufrufe von %qs kÃ¶nnen nicht behandelt werdenSwitch-Bedingung vom Typ %s kann nicht verarbeitet werdenwidersprÃ¼chliche %qs-Klausel kann nicht berÃ¼cksichtigt werdenein Modul kann nicht in seinen eigenen Bereich importiert werdenZeiger auf unvollstÃ¤ndigen Typen %qT kann nicht erhÃ¶ht werdenein leeres Pack kann nicht indexiert werdenAggregat des Typs %qT kann nicht mit zusammengesetztem Literal initialisiert werdenArray von %qT kann nicht aus einem Zeichenkettenliteral mit Typ %<Array von %T%> initialisiert werden%<main%> ist nicht als Â»inlineÂ« mÃ¶glich%<coroutine traits%> kann nicht instanziiert werden%<coroutine handle%> konnte fÃ¼r den Versprechen-Typ %qT nicht instanziiert werdenPlugin %s kann nicht geladen werden
! %sPlugin %s kann nicht geladen werden: %sOperanden von dezimalen Gleitkomma- und komplexen Typen kÃ¶nnen nicht gemischt werdenOperanden von dezimalen und anderen Gleitkommatypen kÃ¶nnen nicht gemischt werdenOperanden von dezimalen Gleitkomma- und Vektortypen kÃ¶nnen nicht gemischt werdenes kÃ¶nnen maximal %d NamensrÃ¤ume geschachtelt werden%qs kann nicht geÃ¶ffnet werden%qs kann nicht zum Schreiben geÃ¶ffnet werden: %mÂ»%sÂ« kann nicht geÃ¶ffnet werden%s kann nicht zum Schreiben geÃ¶ffnet werden: %m%s kann nicht geÃ¶ffnet werden: %mÂ»%sÂ« kann nicht geÃ¶ffnet werdenDatei %qs kann nicht zum Schreiben der OptimierungsdatensÃ¤tze geÃ¶ffnet werdenZwischenspeicherdatei fÃ¼r gcn-asm kann nicht geÃ¶ffnet werdenzwischenzeitliche ptx-Datei kann nicht geÃ¶ffnet werdenldd-Ausgabe kann nicht geÃ¶ffnet werden: %mVerschachtelte Antwortdatei konnte nicht geÃ¶ffnet werdennm-Ausgabe kann nicht geÃ¶ffnet werden: %mFehler beim Ã–ffnen der omp_requires-Datei %qsProfilingdatei %s kann nicht geÃ¶ffnet werdenArgument kann nicht in Vektorregister Ã¼bergegeben werden, da AltiVec-Befehle ausgeschaltet sind; %qs schaltet sie einObjekt mit volatile-Feld kann nicht in Register geladen werdenFehler beim Einlesen von %<LTO_section_decls%> aus %s%s kann nicht gelesen werden: %mLTO-Modus-Tabelle kann nicht aus %s gelesen werdenPCH-Datei kann nicht gelesen werden: %mFunktionsprofil aus %s kann nicht gelesen werdenFehler beim Lesen der omp_requires-Datei %qsSpec-Datei %qs kann nicht gelesen werden: %mZeichenkettentabelle aus %s konnte nicht gelesen werdenReferenztyp %qT kann nicht Ã¼ber %<...%> empfangen werdeninnerhalb der %<target%>-Region kann nicht auf die Objekttypen %qT verwiesen werdenGanzzahlkonstantenoperand kann in %<asm%> nicht neu geladen werdender eingebauten Typ %<va_list%> kann nicht D nicht dargestellt werdenÃ¼berladene Funktion %qD konnte nicht durch Umwandlung in Typ %qT aufgelÃ¶st werdenvom Behandler eines Funktions-try-Blocks eines Konstruktors kann nicht zurÃ¼ckgekehrt werdenWert kann nicht in Vektorregister zurÃ¼ckgegeben werden, da AltiVec-Befehle ausgeschaltet sind; %qs schaltet sie einAttribut %qE kann nicht nach der Definition festgelegt werdenUnterbrechungsattribut kann nicht gesetzt werden; keine aktuelle FunktionUnterbrechungsattribut kann nicht gesetzt werden: kein solcher BezeichnerPosition in PCH-Datei kann nicht festgelegt werden: %m%<-o%> kann nicht mit %<-c%>, %<-S%> oder %<-E%> mit mehreren Dateien angegeben werdenÂ»-staticÂ« kann nicht mit Â»-fsanitize=addressÂ« angegeben werdenÂ»-staticÂ« kann nicht mit Â»-fsanitize=hwaddressÂ« angegeben werdenÂ»-staticÂ« kann nicht mit Â»-fsanitize=threadÂ« angegeben werden%<-msep-data%> und %<-mid-shared-library%> kÃ¶nnen nicht zusammen angegeben werdenTail-Call nicht mÃ¶glich: %skein Endaufruf mÃ¶glich: RÃ¼ckgabewert muss ein Funktionsaufruf seindie Adresse von %qs kann nicht ermittelt werdendie Adresse des Bit-Feldes %qD kann nicht ermittelt werdenAdresse eines Skalars mit umgekehrter Speicherreihenfolge kann nicht ermittelt werdenAdresse von %<this%> kann nicht ermittelt werden, das ein R-Wert-Ausdruck istdieser Ausdruck hat keine AdresseC++-Klassen kÃ¶nnen nicht geworfen werdenCOM-Objekte kÃ¶nnen nicht geworfen werdenAusdruck vom Typ %qT kann nicht geworfen werden, da Typen mit variabler GrÃ¶ÃŸe beteiligt sindder RVV-Typ %qT kann weder geworfen noch gefangen werdender SVE-Typ %qT kann weder geworfen noch gefangen werdenTyp-Switch mit Nicht-Interface-Wert ist nicht mÃ¶glichSSA-Form kann nicht aktualisiert werdender Eingabedateiname fÃ¼r einen vorkompilierten Header darf nicht %<-%> sein%<-mtp=cp15%> kann nicht mit 16-Bit-Thumb verwendet werden%<::%> kann nicht in Parameterdeklaration verwendet werden%<_%> kann nicht als Wert verwendet werdenIn der Linux-Toolchain kann das Attribut %<indirect_call%> nicht verwendet werden%<typeid%> kann nicht mit %<-fno-rtti%> verwendet werden%<va_arg%> kann nicht zusammen mit umgedreher Speicherreihenfolge verwendet werden%<va_start%> kann nicht in Unterbrechungsfunktion verwendet werden%qs kann nicht als ein rufgesichertes Register verwendet werden%qs kann nicht als ein rufverwendetes Register verwendet werden%qs kann nicht als ein festes Register verwendet werdenein Objekt kann nicht als Parameter fÃ¼r eine Methode verwendet werdenIn der Linux-Toolchain kann die Funktion %qD nicht das Attribut Â»exceptionÂ« habenIn der Linux-Toolchain kann die Funktion %qD nicht das Attribut Â»interruptÂ« habendas SchlÃ¼sselwort %qs kann nicht als AufzÃ¤hlungskonstante verwendet werdenModus %qs kann nicht fÃ¼r AufzÃ¤hlungstypen verwendet werdenmshared und static kÃ¶nnen nicht zusammen verwendet werdenmthreads und mlegacy-threads kÃ¶nnen nicht zusammen verwendet werdenin einem OpenMP-Arrayabschnitt kÃ¶nnen keine mehrdimensionalen Arrayindizes verwendet werdenEs kÃ¶nnen nicht mehrere StapelprÃ¼fungsmethoden gleichzeitig verwendet werdenIn der Linux-Toolchain kann die Funktion %qD nicht das Attribut Â»exceptionÂ« habenKleindatenzugriffe fÃ¼r %qs nicht mÃ¶glichTyp %s kann nicht als Typ %s verwendet werdenFeld mit unbekannter Grenze %qT kann nicht mit Werten initialisiert werden%s kann nicht geschrieben werden: %mPCH-Datei kann nicht geschrieben werdenPCH-Datei kann nicht geschrieben werden: %mPCH-Datei kann nicht geschrieben werden: erforderliches Speichersegment nicht verfÃ¼gbarAuffÃ¼llung fÃ¼r PCH-Datei kann nicht geschrieben werden: %min %s kann nicht geschrieben werden: %mkanonische Typen unterscheiden sich fÃ¼r identische Typen %qT und %qTder RVV-Typ %qT kann nicht durch Kopieren gefangen werdender SVE-Typ %qT kann nicht durch Kopieren gefangen werdenEinfangen per Kopie von unvollstÃ¤ndigem Typ %qTErfassung von Nicht-Variable %qEErfassung der Variable %qD ohne automatische SpeicherdauerEinfangen des variabel geÃ¤nderten Typs %qT, der kein N3639-Array mit Laufzeitgrenzen isteingefangene strukturierte Bindungen sind eine C++20-Erweiterungcase-Marke %qE nicht innerhalb einer switch-Anweisungcase-Marke reduziert nicht auf GanzzahlkonstanteÂ»caseÂ«-Marke ist kein konstanter Ganzzahlausdruckcase-Marke nicht innerhalb einer switch-Anweisungcase-Marke Ã¼berschreitet Maximalwert des Typscase-Marke ist kleiner als Minimalwert des Typsunsortierte case-Marken in switch-AnweisungInterner Fehler: case labels not sorted: case-Wert %qs nicht in AufzÃ¤hlungstypcase-Wert %qs nicht in AufzÃ¤hlungstyp %qTTypumwandlung fÃ¼gt Qualifizierer %q#v zu Funktionstyp hinzuUmwandlung zwischen inkompatiblen Funktionstypen von %qH nach %qIunvollstÃ¤ndiger Funktionstyp %qT kann nicht nach %qT umgewandelt werdenUmwandlung zwischen inkompatiblen Elementzeigertypen von %qH nach %qITypumwandlung streicht Qualifizierer %qv von Zeiger-ZieltypUmwandlung von %qH in %qI erhÃ¶ht erforderliche Ausrichtung des ZieltypsTypumwandlung von %qH nach %qI verliert GenauigkeitCast von %qT ist nicht erlaubtder Cast von %qT ist in einem konstanten Ausdruck nicht zulÃ¤ssig, da der Typ %qT, auf den gezeigt wird, %qT nicht Ã¤hnlich istder Cast von %qT ist in einem konstanten Ausdruck vor C++26 nicht erlaubtUmwandlung von %qs nach %qs fÃ¼hrt zum Ergebnis 0Typumwandlung von Funktionsaufruf des Typs %qT in unpassenden Typen %qTTypkonvertierung von Zeiger auf Ganzzahl anderer BreiteUmwandlung des Typs %qT in Typ %qT entfernt QualifiziererTypkonvertierung erfordert Ausrichtung des ZieltypsTypkonvertierung gibt Arraytyp anTypkonvertierung gibt Funktionstyp anUmwandlung in %qs-Adressraumzeiger aus getrenntem %qs-AdressraumzeigerUmwandlung in %qs-Adressraumzeiger aus getrenntem allgemeinen Adressraumzeigerdie Umwandlung nach %qs ergibt immer Â»nullÂ«Umwandlung in allgemeinen Adressraumzeiger aus getrenntem %qs-AdressraumzeigerUmwandlung in Nicht-Ganzzahltyp %qT in konstantem AusdruckTypkonvertierung in Zeiger von Ganzzahl anderer BreiteTypkonvertierung in union-Typ von nicht in union vorhandenem TypenUmwandlung von %qT in %qT dereferenziert nicht den ZeigerUmwandlung von %qT in %qT verwendet %qD nichtUmwandlung zwischen Zeiger auf Funktion und Zeiger auf Objekt ist bedingt unterstÃ¼tztAbfangen von Nicht-Aufruf-Ausnahmen in Funktionen mit SME-ZustandNichtreferenztyp %q#T wird gefangenpolymorpher Typ %q#T wird per Wertzuweisung gefangenTyp %q#T wird per Wertzuweisung gefangenKategorie-Attribute sind in Objective-C 1.0 nicht verfÃ¼gbarKategorie-Attribute sind in dieser Version des Compilers nicht verfÃ¼gbar (wird ignoriert)Attribute cdecl und thiscall sind nicht vertrÃ¤glichInterner Fehler: cgraph count invalidInterner Fehler: cgraph_node has wrong clone listInterner Fehler: cgraph_node has wrong clone_ofInterner Fehler: cgraph_node has wrong prev_clone pointerInterner Fehler: cgraph_node is in clone list but it is not cloneÃ„nderung des aktiven Elements einer union von %qD zu %qD wÃ¤hrend der InitialisierungÃ„nderung des aktiven Elements einer union von %qD zu %qD ist vor C++20 kein konstanter Ausdruckwenn Sie den RÃ¼ckgabetyp von %qs in einen Vergleichskategorietyp Ã¤ndern, kann der Vergleich %qs und %qs verwendenInterner Fehler: check_charlen_present(): length not setcheck_dimension(): Bad array referencecheck_dummy_characteristics: Unexpected result %i of gfc_dep_compare_exprcheck_init_expr(): Unknown expression typecheck_intents(): List mismatchcheck_restricted(): Unknown expression typecheck_result_characteristics (1): Unexpected result %i of gfc_dep_compare_exprcheck_result_characteristics (2): Unexpected result %i of gfc_dep_compare_exprcheck_some_aliasing(): List mismatchcheck_some_aliasing(): corrupted dataPrÃ¼fsumme ist (%x,%x) statt (%x,%x)Wahl von %qD statt %qDWert der ChunkgrÃ¶ÃŸe muss positiv seinringfÃ¶rmige Zeigerdelegation erkanntKlasse %qE existiert bereitsKlasse %qE ist definiert, ohne eine Basisklasse anzugebenKlasse %qE ist veraltetKlasse %qE ist nicht verfÃ¼gbarKlasse %qE ist nicht verfÃ¼gbarKlasse %qT hat keinen Feldnamen %qDKlasse %qT ist implizit Â»friendÂ« von ihr selbstKlasse %qs implementiert nicht das Protokoll %qEKlassenattribute sind in Objective-C 1.0 nicht verfÃ¼gbarKlassendefinition darf nicht als Â»friendÂ« deklariert seinKlassenerweiterung fÃ¼r Klasse %qE nach seiner %<@implementation%> deklariertKlassenerweiterungen sind in Objective-C 1.0 nicht verfÃ¼gbarKlassentemplate %qD als Nicht-Template redeklariertArgumentherleitung fÃ¼r Klassentemplate gescheitert:Argumentherleitung fÃ¼r Klassentemplate von %qT fehlgeschlagen: expliziter Herleitungshinweis in copy-list-initialization ausgewÃ¤hltArgumentherleitung von Klassentemplates ist nur mit %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbarKlassentyp %qT ist unvollstÃ¤ndigKlauseln in %<simd%>-Eigenschaft sollten durch %<,%> getrennt werdenArgument fÃ¼r cleanup ist keine FunktionArgument fÃ¼r cleanup ist kein BezeichnerKlone fÃ¼r Attribut %<target_clones%> kÃ¶nnen nicht erzeugt werdenclose: %sgeschlossene IntervalleLTRANS-Ausgabeliste Â»%sÂ« kann nicht geschlossen werden: %mAbhÃ¤ngigkeitsdatei Â»%sÂ« kann nicht geschlossen werden: %mCoarray-ArgumentCode zwischen dem Aufruf und der RÃ¼ckkehrCode kÃ¶nnte fehloptimiert werden, es sei denn, %<-fno-strict-aliasing%> wird angegebenCodemodell %qs ist inkompatibel zu %sCodemodell %qs wird im ilp32-Modus nicht unterstÃ¼tztCodemodell %qs wird im %s-Bit-Modus nicht unterstÃ¼tztCodemodell %qs wird im x32-Modus nicht unterstÃ¼tztCodemodell %qs mit %<-f%s%>Codemodell %qs mit %qsCodemodell %s unterstÃ¼tzt keinen PIC-ModusCollapse-Argument erfordert positiven konstanten Ganzzahlausdruckcollect2-Version %s
! Sammlung in schneller AufzÃ¤hlung ist kein Objektcomdat-Symbole kÃ¶nnen nicht versioniert werdenInterner Fehler: comdat-local function called by %s outside its comdatInterner Fehler: comdat-local symbol referred to by %s outside its comdatKomma am Ende der AufzÃ¤hlungslistekommagetrennte Liste in using-Deklaration ist nur mit %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbarKommandozeilenoption %<-fno-builtin-%s%> ist fÃ¼r Fortran nicht gÃ¼ltigKommandozeilenoption %qs wird von dieser Konfiguration nicht unterstÃ¼tztKommandozeilenoption %qs ist gÃ¼ltig fÃ¼r %s, aber nicht fÃ¼r %sKommandozeilenoption %qs ist gÃ¼ltig fÃ¼r den Treiber, aber nicht fÃ¼r %sgemeinsames Symbol kann nicht versioniert werdengemeinsam genutzte Variablen mÃ¼ssen eine Ausrichtung von 32768 oder weniger habencompare_actual_expr(): Bad component codecompare_real(): Bad operatorVergleich der endgÃ¼ltigen BefehlslistenVergleich von Gleitkomma mit %<==%> oder %<!=%> ist unsicherVergleich des Ergebnisses der Zeigeraddition %qE mit NULLVergleich von Vektoren mit verschiedenen Element-TypenVergleich von Vektoren mit unterschiedlicher ElementanzahlVergleich zwischen %q#T und %q#TVergleich zwischen %qT und %qTVergleich zwischen den unterschiedlichen Zeigertypen %qT und %qT benÃ¶tigt Umwandlungbeim Vergleich zwischen unterschiedlichen Zeiger-auf-Element-Typen %qT und %qT fehlt eine TypkonvertierungVergleich zwischen Zeiger und GanzzahlVergleich zwischen Zeiger und '\0'Vergleich zwischen zwei ArraysVergleich zwischen zwei Arrays ist in C++20 veraltetVergleich zwischen zwei Arrays ist in C++26 nicht erlaubtVergleich zwischen den Typen %qT und %qTVergleich ist immer %dVergleich ist immer %d wegen Breite des BitfeldesVergleich ist durch beschrÃ¤nkten Wertebereich des Datentyps stets Â»falseÂ«Vergleich ist durch beschrÃ¤nkten Wertebereich des Datentyps stets Â»trueÂ«Vergleich von vollstÃ¤ndigen und unvollstÃ¤ndigen ZeigernVergleich der Konstanten %qE mit booleschem Ausdruck ist stets Â»falseÂ«Vergleich der Konstanten %qE mit booleschem Ausdruck ist stets Â»trueÂ«Im Vergleich verschiedener Objective-C-Typen fehlt Typumwandlungin Vergleich verschiedener Zeigertypen fehlt TypkonvertierungVergleich zwischen AufzÃ¤hlungstyp %qT und Gleitkommatyp %qTVergleich zwischen AufzÃ¤hlungstyp %qT und Gleitkommatyp %qT ist veraltetVergleich zwischen Gleitkommatyp %qT und AufzÃ¤hlungstyp %qTVergleich zwischen Gleitkommatyp %qT und AufzÃ¤hlungstyp %qT ist veraltetVergleich von GanzzahlausdrÃ¼cken, von denen nur einer ein Vorzeichen hat: %qT und %qTVergleich von Zeigern auf disjunkte AdressrÃ¤umeVergleich von befÃ¶rdertem bitweisem Komplement eines vorzeichenlosen Werts mit einer KonstantenVergleich von befÃ¶rdertem bitweisem Komplement eines vorzeichenlosen Werts mit einer vorzeichenlosen ZahlVergleich eines vorzeichenlosen Ausdrucks in %<< 0%> ist stets unwahrVergleich eines vorzeichenlosen Ausdrucks in %<>= 0%> ist stets wahrVergleichsoperator %q+D mit Standardimplementierung nach der ersten Deklaration [class.compare.default]Vergleich erforderlichVergleich mit Zeichenkettenliteral fÃ¼hrt zu unspezifiziertem VerhaltenVergleiche wie %<X<=Y<=Z%> haben nicht ihre mathematische Bedeutungder kompatible Typ ist hierKompilierung wegen Â»-Wfatal-errorsÂ« beendet.
  Kompilierung wegen Â»-fmax-errors=%uÂ« beendet.
  Kompilierung beendet.
  alle Implementierungsmodule und Programmmodule auf einmal Ã¼bersetzendie compilierte Moduldatei ist %qsdas kompilierte Modul ist %sVersion %szur Compilezeit sicherstellen, dass Parameternamen von Prozeduren im Definitionsmodul denen im Implementierungsmodul entsprechender Compiler unterstÃ¼tzt ZSTD-LTO-Komprimierung nichtder Compiler ist %sVersion %s%s%swarnen bei expliziter Typumwandlung zwischen Typen mit unterschiedlicher GrÃ¶ÃŸeKomplement-Argument muss eine Konstante seinkomplexes Argument %u fÃ¼r typgenerische Funktion, die ausschlieÃŸlich dezimal istkomplexe Argumente mÃ¼ssen Gleitkommatyp habenkomplexe Argumente mÃ¼ssen identische Typen habenÃœberlauf von komplexen Gleitkommazahlen in Ausdruck %qE des Typs %qT ergibt %qEÃœberlauf von komplexen Gleitkommazahlen in Ausdruck des Typs %qT ergibt %qEÃœberlauf von komplexen Ganzzahlen in Ausdruck %qE des Typs %qT ergibt %qEÃœberlauf von komplexen Ganzzahlen in Ausdruck des Typs %qT ergibt %qEcomplex ungÃ¼ltig fÃ¼r %qsKomponente %qs bei %L wurde bereits von Konstruktor fÃ¼r abgeleitete Typen durch einen Elternteil gesetztzusammengesetztes Literal hat Funktionstypzusammengesetztes Literal hat variable GrÃ¶ÃŸezusammengesetztes Literal ist implizit auto, jedoch als %qs deklariertzusammengesetztes Literal vom Nicht-Objekt-Typ %qTVerbundliteral durch Adressraumqualifizierer qualifiziertzusammengesetzte Anweisung in %<constexpr%>-Funktionkomprimierter Strom: %sdas berechnete Goto muss von einem Zeigertyp seinVerkettung von String-Literalen mit widersprÃ¼chlichen KodierungsprÃ¤fixendas Konzept %qE hat mehrere Vorlagenparameterlistendas Konzept %qE ist nicht im GÃ¼ltigkeitsbereich des Namensraumsdas Konzept wurde hier definiertKonzept muss im GÃ¼ltigkeitsbereich des Namensbereiches definiert werdenKonzept-ID %qD in geschachteltem Namens-SpezifiziererBedingung %2u ist nicht abgedeckt (%s%s)
  Bedingung deklariert eine FunktionBedingung deklariert ein ArrayBedingungsausdruck verweist auf Iterationsvariable %qDAbgedeckte Bedingungsergebnisse %d/%d
! bedingte %<lastprivate%>-Klausel im %qs-Konstruktbedingte %<lastprivate%>-Klausel an Schleifeniterator %qD wird ignoriertBedingungsausdruck mit den unterschiedlichen Zeigertypen %qT und %qT benÃ¶tigt Umwandlungim Bedingungsausdruck mit unterschiedlichen Zeiger-auf-Element-Typen %qT und %qT fehlt eine TypkonvertierungBedingungsausdruck zwischen AufzÃ¤hlungstyp %qT und Gleitkommatyp %qTBedingungsausdruck zwischen AufzÃ¤hlungstyp %qT und Gleitkommatyp %qT ist veraltetBedingungsausdruck zwischen Gleitkommatyp %qT und AufzÃ¤hlungstyp %qTBedingungsausdruck zwischen Gleitkommatyp %qT und AufzÃ¤hlungstyp %qT ist veraltetbedingter Ausdruck in Operand von Faltungsausdruckbedingt ausgefÃ¼hrte Schleife im der Region %<kernels%> wird von einer einzelnen Bande ausgefÃ¼hrt; %<gang%>-Klausel wird ignoriertin Konflikt stehendes %<constexpr%> fÃ¼r importierte Deklaration %#qDin Konflikt stehende %<noexcept%>-Angabe fÃ¼r importierte Deklaration %#qDin Konflikt stehende Deklaration %q#D mit Bindung fÃ¼r die Sprache Â»CÂ«Zugriffsangaben fÃ¼r Feld %qE stehen in Konflikt, ignoriertZugriffsangaben fÃ¼r Methode %q+D stehen in Konflikt, ignoriertin Konflikt stehende Argumentliste fÃ¼r importierte Deklaration %#qDin Konflikt stehende Argumenttypen fÃ¼r importierte Deklaration %#qDwidersprÃ¼chliche Codegenerierungsschalterin Konflikt stehende Deklaration %q#Dsteht mit neuer Deklaration von %q#D mit %qL-Bindung in KonfliktwidersprÃ¼chliche Deklaration von %qD in globalem ModulwidersprÃ¼chliche Deklaration von %qD in Modul %qsin Konflikt stehende Deklaration fÃ¼r C-Funktion %q#DunvertrÃ¤gliche Deklaration des Templates %q#Din Konflikt stehender deduzierter RÃ¼ckgabetyp fÃ¼r importierte Deklaration %#qDwidersprÃ¼chliches Standardargument fÃ¼r %#qDwidersprÃ¼chliches Standardargument fÃ¼r den Parameter %P von %#qDin Konflikt stehender Export fÃ¼r Deklaration %qDin Konflikt stehende Deklaration %q#Din Konflikt stehende Sprachbindung fÃ¼r importierte Deklaration %#qDin Konflikt stehende benannte AdressrÃ¤ume (%s und %s)in Konflikt stehende benannte AdressrÃ¤ume (%s und %s) fÃ¼r %q+Din Konflikt stehende benannte AdressrÃ¤ume (%s und generisch) fÃ¼r %q+Din Konflikt stehende benannte AdressrÃ¤ume (generisch und %s) fÃ¼r %q+DwidersprÃ¼chliche Neudeklaration des AufzÃ¤hlungswerts %q+DwidersprÃ¼chliche Redefinition des AufzÃ¤hlungstyps %qTIn Konflikt stehende Reduktionsoperationen fÃ¼r %qEin Konflikt stehenden RÃ¼ckgabetyp fÃ¼r %q+#D angegebenin Konflikt stehender Basisklassenname %qEin Konflikt stehenden Typattribute fÃ¼r %q+#D angegebenin Konflikt stehender Typ fÃ¼r importierte Deklaration %#qDIn Konflikt stehende Typqualifizierer fÃ¼r %q+Din Konflikt stehende Typen fÃ¼r %<%c%s%>In Konflikt stehende Typen fÃ¼r %q+DwidersprÃ¼chliche Typen fÃ¼r %q+D aufgrund von enum/integer-Konflikt; der bestehende Typ ist %qTabweichende Typen fÃ¼r %q+D; der bestehende Typ ist %qTin Konflikt stehende Typen fÃ¼r eingebaute Funktion %q+D; erwartet wurde %qTin Konflikt stehende Typen fÃ¼r eingebaute Funktion %qs; erwartet wurde %qsKonflikt mit %qDerwÃ¤gen Sie die Verwendung von %<-fno-module-lazy%>, die ErhÃ¶hung des Wertes von %<-param-lazy-modules=%u%> oder die ErhÃ¶hung der prozessspezifischen Dateideskriptorgrenzeevtl. Â»-pgÂ« statt Â»-pÂ« mit gprof(1) verwendenevtl. Â»-pgÂ« statt Â»-pÂ« mit gprof(1) verwendenevtl. Â»-pgÂ« statt Â»-pÂ« mit gprof(1) verwendenmit const, volatile oder restrict qualifizierter Typ in %<#pragma omp declare reduction%>Ãœbertragung von const/copy ausgeschaltetconst_double_split bekam einen falschen Befehl:Konstante %qs ist zu groÃŸkonstantes Argument %d fÃ¼r eingebautes %qF ist ungÃ¼ltig (%s)konstantes Argument %d fÃ¼r eingebaute %qF liegt auÃŸerhalb des Bereichs %wd bis %wdkonstantes Argument %d fÃ¼r eingebaute %qF liegt auÃŸerhalb des Bereichs 0 bis %wuKonstantes Argument %d fÃ¼r eingebaute %qF liegt auÃŸerhalb des Wertebereiches fÃ¼r ZieltypKonstantes Argument auÃŸerhalb des Wertebereiches fÃ¼r %qsKonstantes Argument auÃŸerhalb des Wertebereiches fÃ¼r %sKonstantenauswertung liefert Adresse der unmittelbaren Funktion %qDkonstantes Feld %qD als %<asm%>-Ausgabe verwendetInterner Fehler: constant folding not supported for this tree codeKonstantenliteral %qs enthÃ¤lt %qc, %qs erwartetKonstantenliteral %qs enthÃ¤lt %qc, erwartet wird %qs oder %qsKonstantenliteral %qs enthÃ¤lt %qc, 0 oder 1 erwartetKonstantenliteral %qs Ã¼berschreitet internen ZTYPE-BereichKonstante wird bei %<ADDR_EXPR%>-Ã„nderung nicht neu berechnetdas konstante PrÃ¤dikatsargument %d (%wx) lÃ¤sst sich nicht auf %d Fahrspuren abbilden, es wurde daher in %wx umgewandeltKonstante verweist auf sich selbstKonstanter Wert erwartet fÃ¼r Argument %2$d der eingebauten Funktion %1$qF%<data()%> des %<constexpr%>-Strings muss ein Kernkonstantenausdruck sein%<data()%> des %<constexpr%>-Strings muss implizit in %<const char*%> umwandelbar sein%<data()[%d]%> des %<constexpr%>-Strings muss ein konstanter Ausdruck sein%<size()%> des %<constexpr%>-Strings muss ein konstanter Ausdruck sein%<size()%> des %<constexpr%>-Strings muss implizit in %<std::size_t%> umwandelbar sein%<size()%> des %<constexpr%>-Strings ist %qE und damit zu groÃŸ%<constexpr%>-String muss ein Stringliteral oder ein Objekt mit den Membern %<size%> und %<data%> seineingeschrÃ¤nkte Nicht-Template-friend-Deklaration muss eine Definition seinEinschrÃ¤nkung %qE ist vom Typ %qT, muss aber %<bool%> seinEinschrÃ¤nkung erlaubt Register auÃŸerhalb einer FunktionEinschrÃ¤nkungsausdruck muss vom Typ %<bool%> seinunpassende BeschrÃ¤nkungen fÃ¼r Argument %d in Template-Parameterliste fÃ¼r %qDEinschrÃ¤nkungen sind nicht erfÃ¼lltEinschrÃ¤nkungen auf einer Funktion, die kein Template hatKonstruktor kann keine statische Elementfunktion seinKonstruktor verweist auf sich selbstKonstruktordelegation folgt Speicherinitialisierung fÃ¼r %qDKonstruktor gibt keinen Wert zurÃ¼ck, der getestet werden kÃ¶nnteKonstruktor fÃ¼r fremde Klasse %qT kann kein Element seinKonstruktor ist nicht benutzerdefiniert, da er im KlassenkÃ¶rper ausdrÃ¼cklich standardisiert istKonstruktorprioritÃ¤ten werden nicht unterstÃ¼tztKonstruktorprioritÃ¤ten von 0 bis %d sind fÃ¼r die Implementierung vorbehaltenKonstruktorprioritÃ¤ten mÃ¼ssen Ganzzahlen von 0 bis einschlieÃŸlich %d seinKonstruktorsyntax verwendet, aber kein Konstruktor fÃ¼r Typ %qT deklariertKonstruktoren dÃ¼rfen nicht als %<virtual%> deklariert seinKonstruktoren dÃ¼rfen nicht CV-qualifiziert seinKonstruktoren dÃ¼rfen nicht ref-qualifiziert seinenthaltende Schleife ist hierenthÃ¤lt zusÃ¤tzliche virtuelle Methode %qDcontinue-Anweisung nicht innerhalb einer SchleifeVertragsbedingung ist false in konstantem AusdruckZusammenziehung %<%.*s%> im Format; verwenden Sie stattdessen %qsVertrÃ¤ge sind nur mit %<-fcontracts%> verfÃ¼gbarVertrÃ¤ge mÃ¼ssen sich auf einen Funktionstyp beziehenInterner Fehler: control flow in the middle of basic block %dder Programmfluss geht durch die Definition von %qD mit statischer Speicherdauerder Programmfluss geht durch die Definition von %qD mit thread-lokaler SpeicherdauerKontrollfluss erreicht Ende von Nicht-void-FunktionUmwandlung zwischen den unterschiedlichen Zeigertypen %qT und %qT benÃ¶tigt Umwandlungbei Umwandlung zwischen unterschiedlichen Zeiger-auf-Element-Typen %qT und %qT fehlt eine TypkonvertierungUmformung verwirft KonstantheitUmwandlung von %q#T nach %q#TUmwandlung von %qH in %qI lÃ¶scht QualifiziererUmwandlung von %qH nach %qI in einem umgewandelten konstanten AusdruckUmformung von %qH nach %qI ist mehrdeutigUmwandlung von %qH in nicht-skalaren Typen %qI angefordertUmwandlung von %qT nach %qTUmformung von %qT nach %qT Ã¤ndert den Wert von %qEUmwandlung von %qT in %qT Ã¤ndert Wert von %qE nach %qEUmwandlung von %qT in %qT Ã¤ndert Wert von %qd nach %qdUmwandlung von %qT nach %qT verwirft imaginÃ¤re KomponenteUmwandlung von %qT nach %qT kÃ¶nnte den Wert Ã¤ndernUmwandlung von Adressraum %qs in Adressraum %qsKonvertierung von normalem zu Â»notinheapÂ«-TypenUmwandlung von Zeigertyp %qT in arithmetischen Typ %qT in KonstantenausdruckUmwandlung von RÃ¼ckgabetyp %qT der Spezialisierung der Template-Umwandlungsfunktion in %qT passt nicht exaktbei der Konvertierung fehlt der Typ am Ende des FormatesUmwandlung von %qE von %qH nach %qI ist mehrdeutigUmwandlung von %qE nach %qT in Bereichsausdruck Ã¤ndert den Wert zu %qEUmwandlung von %qs auf der linken Seite eines %qsUmwandlung von Argument %d wÃ¤re unzulÃ¤ssig:Umwandlung eines Registers auf eine andere GrÃ¶ÃŸe in %qsUmwandlung von Skalar %qH in Vektor %qI fÃ¼hrt zum AbschneidenUmwandlung von Skalar %qT in Vektor %qT fÃ¼hrt zum AbschneidenUmwandlung eines vorzeichenlosen konstanten Wertes in negative GanzzahlUmformung in %qT Ã¤ndert konstanten Wert von %qTUmwandlung nach %qT von %qT kÃ¶nnte den Wert Ã¤ndernUmwandlung in %qT von %qT kÃ¶nnte das Vorzeichen des Ergebnisses Ã¤ndernUmwandlung in %qT aus booleschem AusdruckKonvertierung in unvollstÃ¤ndigen TypenUmwandlung in nicht-konstanten Referenztyp %q#T von R-Wert des Typs %qTKonvertierung zu Nicht-Skalar-Typ verlangtUmwandlung in void kann die Adresse der Ã¼berladenen Funktion nicht auflÃ¶senUmwandlung in void greift nicht auf Objekt %qE des unvollstÃ¤ndigen Typs %qT zuUmwandlung in void greift nicht auf Objekt des unvollstÃ¤ndigen Typs %qT zuUmwandlung in void greift nicht auf Objekt des nicht trivial kopierbaren Typs %qT zuUmwandlung in void greift nicht auf Objekt des Typs %qT zuUmwandlung in Â»volatileÂ« Referenztyp %q#T von R-Wert des Typs %qTUmwandlungen in Arrays mit unbekannten Grenzen sind erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbar%<false%> wird in Zeigertyp %qT umgewandelt%<false%> wird fÃ¼r Argument %P von %qD in Zeigertyp umgewandeltUmwandlung von %qT in %<void%> wird nie einen Typumwandlungsoperator verwendenUmwandlung von %qT in Basisklasse %qT wird nie einen Typumwandlungsoperator verwendenUmwandlung von %qT in Referenz auf Basisklasse %qT wird nie einen Typumwandlungsoperator verwendenUmwandlung von %qT in Referenz auf gleichen Typ wird nie einen Typumwandlungsoperator verwendenUmwandlung von %qT in gleichen Typ wird nie einen Typumwandlungsoperator verwendenUmwandlung von NULL in Nicht-Zeiger-TypUmwandlung eines zusammengesetzten Arrayliterals in einen Zeiger fÃ¼hrt in C++ zu einem baumelnden Zeigerfar-Zeiger wird in near-Zeiger umgewandeltUmwandlung von %qH nach %qILambda, das %<...%> verwendendet, wird in Funktionszeiger umgewandeltUmwandung der Ã¼berladenen Funktion %qD in den Typ %q#T ist mehrdeutigUmwandlung von %qH nach %qI erfordert direkte InitialisierungUmwandlung in %qT von Initialisierungsliste wÃ¼rde expliziten Konstruktor %qD verwendenKonvertierung in Nicht-Zeiger-Typ %qT von NULLKoprozessornummer muss eine direkt angegebene Konstante im Bereich 0 bis %d sein, die mit %<+cdecp<N>%> aktiviert wurdeKoprozessor %d ist nicht aktiviert mit +cdecp%dKopieren von nicht-statischem Datenelement %q#D von rvalue-ReferenztypÂ»copyprivateÂ«-Variable %qE ist im Ã¤uÃŸeren Kontext weder Â»threadprivateÂ« noch Â»privateÂ«Koroutinen erfordern eine Handle-Klassenvorlage; %<%E::%E%> wurde nicht gefundenKoroutinen erfordern ein Traits-Template; %<%E::%E%> wurde nicht gefundenInterner Fehler: corrupt loop tree rootInterner Fehler: corrupted exits list of loop %dInterner Fehler: corrupted head of the exits list of loop %dBeschÃ¤digte ltrans-Ausgabedatei %sbeschÃ¤digte Profilinformationen: ungÃ¼ltiges ZeitprofilInfo zum beschÃ¤digten Profil: Anzahl der AusfÃ¼hrungen der Kante Â»%d-%dÂ« sollte %i seinInfo zum beschÃ¤digten Profil: Anzahl der DurchlÃ¤ufe des Basisblocks %d sollte %i seinInfo zum beschÃ¤digten Profil: Profildaten sind nicht Fluss-konsistentkaputtes Werteprofil: %s-ProfilzÃ¤hler (%d von %d) ist inkonsistent zu Basisblock-ZÃ¤hler (%d)Go-Abzugsdatei konnte nicht geschlossen werden: %mendgÃ¼ltige Abzugsdatei %qs der Befehle konnte nicht geschlossen werden: %mAntwortdatei %s konnte nicht geschlossen werdentemporÃ¤re Antwortdatei %s konnte nicht geschlossen werdenAbzugsdatei %qs genullter Befehle konnte nicht geschlossen werden: %m%qE konnte nicht von %<void%> nach %<bool%> umgewandelt werden%qE konnte nicht von %qH nach %qI umgewandelt werdenTemplateargument %qE konnte nicht von %qT in %qT umgewandelt werdenPrÃ¤prozessor Â»%sÂ« konnte nicht ausgefÃ¼hrt werden%s konnte nicht in %s gefunden werden (mÃ¶glicherweise hilft %<-B%>)es konnte kein Ãœberlaufregister gefunden werdenkein ganzzahliger Typ mit derselben GrÃ¶ÃŸe wie %qT gefundenKlasse %qE kann nicht gefunden werdenSchnittstelle fÃ¼r Klasse %qE kann nicht gefunden werdenSetter/Getter fÃ¼r %qE in Klasse %qE kann nicht gefunden werdenSpezifikationsdatei %s konnte nicht gefunden werden
! Variantendeklaration nicht gefundenÂ»%sÂ« konnte nicht eingebunden werdenAufruf von %<__builtin_%s%> ist nicht per inline mÃ¶glich: Die GrÃ¶ÃŸe muss eine Konstante seinAufruf von %<__builtin_%s%> ist nicht per inline mÃ¶glich: zu viele Bytes, verwenden Sie %<-minline-memops-threshold%>Aufruf von %<__builtin_memset%> ist nicht per inline mÃ¶glich: GÃ¶ÃŸe muss konstant seinAufruf von %<__builtin_memset%> ist nicht per inline mÃ¶glich: zu viele Bytes, verwenden Sie %<-minline-memops-threshold%>MCU-Datendatei %<devices.csv%> konnte nicht gefunden werdenÂ»%sÂ« kann nicht zum Lesen geÃ¶ffnet werdenGo-Abzugsdatei %qs konnte nicht geÃ¶ffnet werden: %mAbzugsdatei %qs konnte nicht geÃ¶ffnet werden: %mendgÃ¼ltige Abzugsdatei %qs der Befehle konnte nicht geÃ¶ffnet werden: %mAntwortdatei %s konnte nicht geÃ¶ffnet werdenDatei zur SymbolauflÃ¶sung konnte nicht geÃ¶ffnet werden: %mtemporÃ¤re Antwortdatei %s konnte nicht geÃ¶ffnet werdenDatei-Offset konnte nicht eingelesen werdenHex-Zahl konnte nicht eingelesen werdenTypnamen-Typ kann nicht aufgelÃ¶st werdenBefehl kann nicht aufgeteilt werdenunverstÃ¤ndlicher Wert %q.*s von %<kern.osversion%>unverstÃ¤ndliche Version %qsin Antwortdatei %s konnte nicht geschrieben werdenin temporÃ¤re Antwortdatei %s konnte nicht geschrieben werdenInterner Fehler: count of bb %d not initializedZÃ¤hlernameZÃ¤hlerwertCPU %qs ist ein ungÃ¼ltiges Argument fÃ¼r eingebaute Funktion %qsdie CPU %qs basiert nicht auf der Architektur %qs, daher wird die Architektur ignorierteine SWIG-Interface-Datei fÃ¼r das Modul erzeugentopologisch sortierte Liste aller Module erzeugen, die in der Anwendung verwendet werdenerzeugt und mit anderen ABIs verwendeterzeugt und mit anderen Architekturen / ABIs verwendeterzeugt und mit anderer Bytereihenfolge verwendeterzeugt und mit anderen Einstellungen von %<-fpic%> verwendeterzeugt und mit anderen Einstellungen von %<-fpie%> verwendeterzeugt und mit anderen Einstellungen von Â»%sÂ« verwendetArray von %qT wird erzeugtArray von %qT wird erzeugt, was ein abstrakter Klassentyp istFeld von Funktionselementen wird erzeugtArray von Funktionen wird erzeugtFeld von Referenzen wird erzeugtArray des Template-Platzhaltertyps %qT wird erzeugtArray von void wird erzeugtErzeugung eines Zeigers auf Elementfunktion des Nicht-Klassentyps %qTZeiger auf Element des Nicht-Klassentypen %qT wird erzeugtZeiger auf Element mit Typ Â»voidÂ« wird erzeugtZeiger auf Elementreferenztyp %qT wird erzeugtfÃ¼r nicht existierende Methode %qE wird Selektor erzeugtAttribut Â»criticalÂ« wirkt sich nicht auf Interrupt-Funktionen auscv-qualifizierter Typparameterbaumelnder Zeiger %qE auf %qD wird mÃ¶glicherweise verwendetbaumelnder Zeiger %qE auf ein unbenanntes temporÃ¤res Objekt wird mÃ¶glicherweise verwendetbaumelnder Zeiger auf %qD wird mÃ¶glicherweise verwendetbaumelnder Zeiger auf ein unbenanntes temporÃ¤res Objekt wird mÃ¶glicherweise verwendetDatenbereichsattribute kÃ¶nnen nicht fÃ¼r lokale Variablen angegeben werdenDatenbereich von %q+D in Konflikt mit vorheriger DeklarationDaten-DeklarationDatendefinition hat keinen Typ oder SpeicherklasseDatenelement %q+D hat ungÃ¼ltigerweise einen Funktionstypen deklariertDatenelement %q+D hat ungÃ¼ltigerweise einen Methodentyp deklariertDatenelement %qD kann kein Elementtemplate seinDatenelement darf nicht variabel modifizierten Typ %qT habenDatenverschiebung fÃ¼r Komponente %qE ist nicht kompatibel mit Verschiebung von Struktur %qEDatentyp von %q+D ist nicht fÃ¼r Register geeignetdata-implied-do-Objekt bei %L ist weder ein array-element noch eine scalar-structure-component (F2018: R841)Interner Compilerfehler: dead histogramunerreichbare Anweisung in EH-Tabelledie Deallokationsfunktion ist hier deklariertVersuch, bereits freigegebenen Speicher freizugebenSpeicher, der vorher nicht angefordert wurde, wird freigegebenFehlersucheDebugformat %qs steht in Konflikt mit vorheriger AuswahlDebugausgabestufe %qs ist zu groÃŸDebug-Pfadzur Fehlersuche: dezimales Gleitkomma-Argument %u fÃ¼r typgenerische Funktion mit nur binÃ¤ren Argumentendezimales Gleitkomma-Argument %u fÃ¼r typgenerische Funktion mit nur komplexen Argumentendezimale Gleitkommazahlen werden fÃ¼r dieses Ziel nicht unterstÃ¼tztDeklaration %qD widerspricht der eingebauten DeklarationDeklaration %qD deklariert nichtsDeklaration fÃ¼gt VertrÃ¤ge zu %q#D hinzuDeklaration deklariert nichtsDeklaration fÃ¼r nicht vorhandenen Parameter %qDDeklaration hat abweichende Anzahl von VertrÃ¤gen gegenÃ¼ber der vorherigen DeklarationDeklaration in Bedingung kann nur ein einziges Objekt deklarierenDeklaration im steuernden Ausdruck muss einen Initialisierer habenDeklaration der %<constexpr%>-Variable %qD ist keine DefinitionDeklaration der %<extern%>-Variablen %qD in Anfangsdeklaration einer %<for%>-SchleifeDeklaration von %<std::initializer_list%> entspricht nicht %<#include <initializer_list>%>, ist kein TemplateDeklaration von %<~%T%> als Element von %qTDeklaration von %q#D Ã¤ndert die Bedeutung von %qDDeklaration von %q#D steht mit eingebauter Deklaration %q#D in KonfliktDeklaration von %q#D hat %<extern%> und ist initialisiertDeklaration von %q#D hat keine InitialisierungDeklaration von %q#D auÃŸerhalb einer Klasse ist keine DefinitionDeklaration von %q#D Ã¼berdeckt einen ParameterDeklaration von %q#TDeklaration von %q+#D Ã¼berdeckt einen TemplateparameterDeklaration von %q+D Ã¼berdeckt eine eingebaute FunktionDeklaration von %q+D Ã¼berdeckt eine vorhergehende Nicht-VariableDeklaration von %q+D mit Attribut %<noinline%> folgt auf inline-DeklarationDeklaration von %q+D ohne Bindung folgt einer extern-DeklarationDeklaration von %qD macht vorherige Template-Instanziierung fÃ¼r %qD mehrdeutigDeklaration von %qD als %<typedef%>Deklaration von %qD als Feld von FunktionselementenDeklaration von %qD als Array von FunktionenDeklaration von %qD als Array von ReferenzenDeklaration von %qD als Array von voidsDeklaration von %qD als Element %qTDeklaration von %qD als multidimensionales Feld muss fÃ¼r alle Dimensionen auÃŸer der ersten Grenzen habenDeklaration von %qD als Nicht-FunktionDeklaration von %qD als ParameterDeklaration von %qD in %qD, das nicht %qD einschlieÃŸtDeklaration von %qD in Namensraum %qD, der nicht %qD einschlieÃŸtDeklaration von %qD nicht in einem Namensbereich um %qDDeklaration von %qD Ã¼berdeckt eine eingebaute FunktionDeklaration von %qD Ã¼berdeckt eine globale DeklarationDeklaration von %qD Ã¼berdeckt ein Element von %qTDeklaration von %qD Ã¼berdeckt einen ParameterDeklaration von %qD Ã¼berdeckt einen vorhergehenden lokalen BezeichnerDeklaration von %qE als Array von FunktionenDeklaration von %qE als Array von voidsDeklaration von %qE als multidimensionales Array muss fÃ¼r alle Dimensionen auÃŸer der ersten Grenzen habenDeklaration von %qE als Nicht-FunktionDeklaration von %qE als Nicht-ElementDeklaration von %qF hat unterschiedlichen ExceptionspezifiziererDeklaration der eingebauten Funktion %qD ohne Prototyp; erwartet wurde %qTdie Deklaration einer AufzÃ¤hlung mit festem zugrundeliegenden Typ und ohne AufzÃ¤hlungsliste ist nur als eigenstÃ¤ndige Deklaration zulÃ¤ssigDeklaration der Funktion %qD in ungÃ¼ltigem KontextDeklaration von multidimensionalem Array muss fÃ¼r alle Dimensionen auÃŸer der ersten Grenzen habenDeklaration der Nicht-Variablen %qD in Anfangsdeklaration einer %<for%>-SchleifeDeklaration einer partiellen Spezialisierung in einer nicht umklammerten ExportdeklarationDeklaration der Â»staticÂ«-Variablen %qD in Anfangsdeklaration einer %<for%>-SchleifeDeklaration von Templateparameter %q+#D mit unterschiedlichen EinschrÃ¤nkungenDeklaration des Templateparameters %q+D Ã¼berdeckt einen TemplateparameterDeklaration eines Typnamen als Array von FunktionenDeklaration eines Typnamen als Array von voidsDeklarationen in abhÃ¤ngiger Basis %qT wurden bei unqualifizierter Suche nicht gefundendeklarative Varianten von Direktiven werden nicht unterstÃ¼tztdeklarative Direktivenvarianten von %<metadirective%> werden nicht unterstÃ¼tztDeklarator-ID fehlt: reserviertes Wort %qD wird verwendetdeklarieren Sie den expliziten Objektparameter stattdessen als Nicht-const-Referenzhier deklarierthier als Â»privateÂ« deklarierthier als Â»protectedÂ« deklariertdie Deklaration von %qD im Modul %qs widerspricht dem eingebauten im globalen Moduldekomprimierter Strom: %sDekrementieren eines booleschen AusdrucksVerringerung des konstanten Feldes %qDVerringerung von AufzÃ¤hlungswerten (enum) ist in C++ ungÃ¼ltigVerringerung der Funktion %qDVerringerung des Elements %qD in schreibgeschÃ¼tztem ObjektDekrementieren eines Zeigers auf unvollstÃ¤ndigen Typ %qTVerringerung der schreibgeschÃ¼tzten Speicherstelle %qEVerringerung des schreibgeschÃ¼tzten Elementes %qDVerringerung des schreibgeschÃ¼tzten benannten RÃ¼ckgabewertes %qDVerringerung des schreibgeschÃ¼tzten Parameters %qDVerringerung der schreibgeschÃ¼tzten Referenz %qDVerringerung der schreibgeschÃ¼tzten Variable %qDhergeleiteter Klassentyp %qD in RÃ¼ckgabetyp von Funktionhergeleiteter Ausdruckstyp erfÃ¼llt die PlatzhalterbeschrÃ¤nkungen nichthergeleiteter Initialisierer erfÃ¼llt die Platzhalter-BeschrÃ¤nkungen nichthergeleiteter RÃ¼ckgabetyp erfÃ¼llt die Platzhalter-BeschrÃ¤nkungen nichthergeleiteter RÃ¼ckgabetyp nur mit %<-std=c++14%> oder %<-std=gnu++14%> verfÃ¼gbardeduzierter Typ %qT fÃ¼r %qD ist unvollstÃ¤ndigErmittlung aus geschweift geklammerter Initialisierungsliste erfordert %<#include <initializer_list>%>Herleitungshinweis %qD muss im selben GÃ¼ltigkeitsbereich wie %qT deklariert seinHerleitungshinweis %qD muss denselben Zugriff wie %qT habenHerleitungshinweis %qD darf keinen FunktionskÃ¶rper habenHerleitungshinweis fÃ¼r %qT muss angehÃ¤ngten RÃ¼ckgabetyp habenStandard-%<target_clones%>-Attribut wurde nicht gesetztdie Standard-CPU-Architektur %qs unterstÃ¼tzt die ABI %qs nicht, stattdessen wird %<-m%s=%s%> verwendetStandardargument %qE verwendet %qDStandardargument %qE verwendet lokale Variable %qDStandardargument fÃ¼r Template-Parameter fÃ¼r %qD umschlieÃŸende KlasseStandardargument fÃ¼r Parameter %d von %q#D angegebenZuordnungsfehler der Standardargumente in ÃœberladungsauflÃ¶sungStandardargument fehlt fÃ¼r Parameter %P von %q#DStandardargument fÃ¼r Lambda-Parameter angegebenStandardargument in expliziter Spezialisierung angegebenStandardargumente sind nicht in Deklaration der friend-Template-Spezialisierung %qD erlaubtStandardargumente sind nur fÃ¼r Funktionsparameter zugelassenVorgabeinitialisierer fÃ¼r Element %qD erforderlich vor dem Ende der umschlieÃŸenden KlasseDefaultinitialisierer fÃ¼r unbenanntes Bitfeld-ElementDefaultinitialisierer fÃ¼r Bitfeld-Elemente sind erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarStandardtemplateargumente dÃ¼rfen in friend-Redeklaration eines Funktionstemplates nicht verwendet werdenStandardtemplateargumente dÃ¼rfen in Funktionstemplates nur mit %<-std=c++11%> und %<-std=gnu++11%> verwendet werdenStandardtemplateargumente dÃ¼rfen in teilweiser Spezialisierung nicht verwendet werdenStandardtemplateargumente dÃ¼rfen in friend-Deklaration nicht verwendet werdenTemplate-Argument fÃ¼r %qD kann nicht aus Default-Typumwandlung bestimmt werden%qD mit Vorgabewert ist kein Â»friendÂ« von %qTstandardmÃ¤ÃŸiges %qD muss %<const%> sein%qD mit %<default%> muss entweder Parameter vom Typ %<const %T&%> oder %qT haben%qD mit %<default%> muss Parameter vom Typ %<const %T&%> oder %qT haben, nicht beide%qD mit Vorgabewert kann keinen %<&&%>-ref-Qualifizierer haben%qD mit %<default%> muss den RÃ¼ckgabetyp %<bool%> habenstandardmÃ¤ÃŸiges %qD ist erst ab %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarStandard- und gelÃ¶schte Funktionen nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarvorgegebener Konstruktor ruft nicht-%<constexpr%> %qD aufStandardisierter Standardkonstruktor initialisiert %q#D nichtStandardisierter Standardkonstruktor initialisiert kein nicht-statisches DatenelementStandarddestruktor ruft nicht-%<constexpr%> %qD aufvorgegebene Funktion %q+D mit Standardargumentdas Member %qD mit %<default%> muss den Parametertyp %<const %T&%> habenStandard-Kopierzuweisung fÃ¼r %qT ruft nichttrivialen Operator zur Kopierzuweisung fÃ¼r virtuelle Basis %qT aufParameter mit zurÃ¼ckgestelltem Typ bei %Chier definiert%qD wurde hier definiertDefinition eines Typs in einer Umwandlung ist in C++ ungÃ¼ltigDefinition eines Typs in einem zusammengesetzten Literal ist in C++ ungÃ¼ltigDefinition der expliziten Spezialisierung %qD in friend-DeklarationTypdefinition in Ausdruck %qs ist in C++ ungÃ¼ltigDefinition in Block %i herrscht nicht vor in Block %iDefinition in Block %i folgt der VerwendungDefinition von %q#D macht eingebaute Deklaration %q#D mehrdeutigDefinition von %q#D ist als %<dllimport%> markiertDefinition von %q#T in TemplateparameterlisteDefinition von %q#T ist erst nach der schlieÃŸenden Klammer vollendetDefinition von %qD stimmt nicht Ã¼bereinDefinition von %qD entspricht nicht %<#include <initializer_list>%>Deklaration von %qD ist nicht in einem Namensbereich um %qTDefinition des explizit standardisierten %q+DDefinition des implizit deklarierten %qDDefinition des Protokolls %qE nicht gefundenDefinition des statischen Datenelementes %q+D einer Â»dllimportÂ«-ierten KlasseDefinition fÃ¼r explizite Instanziierung angegebenGrad von %<poly_int%> Ã¼berschreitet %<NUM_POLY_INT_COEFFS%>Grad von %<poly_int%> Ã¼berschreitet %<NUM_POLY_INT_COEFFS%> (%d)Delegation ist nur bei nicht-statischen Funktionen mÃ¶glichdelegierende Konstruktoren nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbargelÃ¶schte Definition von %qD ist nicht die erste DeklarationgelÃ¶schte Funktion %q+D Ã¼bersteuert nicht gelÃ¶schte FunktiongelÃ¶scht in Fortran 95LÃ¶schen von %qT ist nicht definiertLTRANS-Datei %s kann nicht gelÃ¶scht werden: %mArray %q#E wird gelÃ¶schtLÃ¶schen der Datei %qs: %mDatei %s kann nicht gelÃ¶scht werden: %mLÃ¶schen des Objekts mit abstraktem Klassentyp %qT mit nicht-virtuellem Destruktor bewirkt undefiniertes VerhaltenLÃ¶schen des Objekts mit polymorphem Klassentyp %qT mit nicht-virtuellem Destruktor bewirkt mÃ¶glicherweise undefiniertes VerhaltenAbhÃ¤ngigenname %qE wird als Nicht-Typ erkannt, aber die Instanziierung liefert einen Typveraltete Konvertierung von Zeichenkettenkonstante in %qTVeraltete Meldung ist keine ZeichenketteDereferenzierung eines Nicht-ZeigersDereferenzierung eines %<void *%>-ZeigersDereferenzierung eines Null-ZeigersDereferenzierung eines Nullzeigers in %qEDereferenzierung eines Type-Pun-Zeigers kÃ¶nnte strict-aliasing-Regeln verletzenDereferenzierung eines Type-Pun-Zeigers verletzt strict-aliasing-RegelnDeklaration eines abgeleiteten Typsabgeleitete Union %qT ist ungÃ¼ltigInitialisierer mit Bestimmung kÃ¶nnen nur mit Aggregat-Typen (Array, struct, union) verwendet werden, nicht mit %qThier wird die Grenze des Arrays variabler LÃ¤nge aus Argument %u festgelegtDesignator-Reihenfolge fÃ¼r Feld %qD passt nicht zur ursprÃ¼nglichen Deklaration in %qTZielobjekt %qE der GrÃ¶ÃŸe %sZielobjekt wird hier alloziertZielobjekt ist wahrscheinlich an Adresse nullZielobjekt der GrÃ¶ÃŸe %s, alloziert durch %qEZielobjekt, auf das durch %<restrict%>-qualifiziertes Argument 1 verwiesen wird, wurde hier deklariertder zerstÃ¶rende %<operator delete%> muss eine Elementfunktion seinder zerstÃ¶rende %<operator delete%> muss eine Ã¼bliche Deallozierungsfunktion seindas ZerstÃ¶ren von %qE auÃŸerhalb der aktuellen Auswertung ist kein konstanter Ausdruck%qE wird auÃŸerhalb seiner Lebensdauer zerstÃ¶rtdas zerstÃ¶rende Delete fÃ¼r %qD kann nicht verwendet werden, um den zugewiesenen Speicher freizugeben, wenn die Initialisierung scheitert, weil das Objekt noch nicht konstruiert istDestruktor %qD als Element-Template deklariertDestruktor kann keine statische Elementfunktion seinDestruktor gibt keinen Wert zurÃ¼ck, der getestet werden kÃ¶nnteDestruktor fÃ¼r %qE darf auch nicht abgearbeitet werdenDestruktor fÃ¼r %qT ist mehrdeutigDestruktor fÃ¼r fremde Klasse %qT kann kein Element seinDestruktorprioritÃ¤ten werden nicht unterstÃ¼tztDestruktorprioritÃ¤ten von 0 bis %d sind fÃ¼r die Implementierung vorbehaltenDestruktorprioritÃ¤ten mÃ¼ssen Ganzzahlen von 0 bis einschlieÃŸlich %d seinDestruktoren dÃ¼rfen nicht CV-qualifiziert seinDestruktoren dÃ¼rfen nicht ref-qualifiziert seinDestruktoren dÃ¼rfen keine Parameter habenBasisarchitektur %qs erkannt, aber einige ihrer Merkmale werden nicht erkannt; die erkannte Basisarchitektur kann unzuverlÃ¤ssig sein, nur erkannte Merkmale werden eingeschaltetbei der Bestimmung des Wertes von %qsmeinten Sie %<-%s%>?meinten Sie %<-march=%s%>?meinten Sie %<-mcpu=%s%>?meinten Sie %<using enum %T::%D%>?wollten Sie vielleicht den Zeiger dereferenzieren?beabsichtigten Sie, es nach dem %<)%> nach den Funktionsparametern anzugeben?meinten Sie ein logisches Nicht (%<!%>)?meinten Sie ein logisches Nicht (%<!%>)?Unterschied zwischen %qE und %qD hat keinen Ganzzahltypunterschiedliche Parameteranzahlunterschiedliche Ergebnisanzahlunterschiedliche Parametertypenunterschiedliche EmpfÃ¤ngertypenunterschiedliche Ergebnistypenanderer zugrunde liegender Typ in enum %q#Tunterschiedliche variable Argumentedirekte Basis %qT ist in %qT durch Mehrdeutigkeit unzugÃ¤nglichder direkte Aufruf von %s in der Folge der spekulativen Aufrufe hat kein Spekulationsflagder direkte Aufruf von %s in der Folge der spekulativen Aufrufe hat speculative_id %i auÃŸerhalb des Bereichsdirect-list-initialization von %<auto%> erfordert genau ein ElementDirektiven-Argument %qEDirektiven-Argument im Bereich [%E, %E]Direktive mit nur %<device_type%>- oder %<indirect%>-KlauselnDurchlauf %s fÃ¼r Funktion %s ausschaltenDurchlauf %s fÃ¼r Funktionen im Bereich [%u, %u] ausschaltenalle eingebauten Systemelemente anzeigenZusammenfassung der Anzahl der Ã¼bersetzten Codezeilen und der verwendeten Symbole anzeigenOrt der Modul-Quelldateien anzeigen, wÃ¤hrend sie Ã¼bersetzt werdenAnderer Objective-C-Typ in RÃ¼ckgabeDivision %<sizeof (%T) / sizeof (%T)%> berechnet nicht die Anzahl der FeldelementeDivision durch NullDivision durch Null ist kein konstanter AusdruckÂ»-march=â€¦Â« und Â»-mcpu=â€¦Â« dÃ¼rfen nicht zusammen angegeben werdenInterner Fehler: do_check(): too many argsdo_simplify(): Too many args for intrinsicentspricht nicht der Element-Templatedeklaration hierunterstÃ¼tzt nicht multilibHerrscher Ã¼ber %d sollte %d sein, nicht %dunbekannter Status fÃ¼r Herrscher Ã¼ber %des ist unklar, wie %qs zu lÃ¶schen istErweiterungsbefehle fÃ¼r DSPs nicht unterstÃ¼tzenErweiterungsbefehle fÃ¼r Performance nicht unterstÃ¼tzenErweiterungsbefehle fÃ¼r Performance Version 2 nicht unterstÃ¼tzenErweiterungsbefehle fÃ¼r Zeichenketten nicht unterstÃ¼tzenÂ»::Â« in MODULE PROCEDURE-Anweisung bei %Ldouble-Konstanten werden nicht unterstÃ¼tztInterner Fehler: double linked list of assembler names corruptedInterner Fehler: double linked list of clones corrupteddurch andere AusnahmespezifikationenModula-2-Deklarationen in den angegebenen Dateinamensstamm wegschreibenModula-2-Gimple in den angegebenen Dateinamensstamm wegschreibenInterne ZwischenreprÃ¤sentation fÃ¼r Modula-2 wegschreiben, angegeben durch: all,quad,decl,gimpleModula-2-Quads in den angegebenen Dateinamensstamm wegschreibenDumpdatei: %s
  Interner Fehler: dump flags not handled heredoppeltes %<_Atomic%>doppeltes %<_Thread_local%> oder %<__thread%>doppelter %<asm%>-Operandenname %qsdoppelter %<asm%>-Qualifizierer %qEdoppelter %<asm%>-Qualifizierer %qTdoppeltes %<const%>doppelter %<default%>-Fall in %<_Generic%>doppelter %<prefer_type%>-Modifiziererdoppeltes %<restrict%>doppelter %<target%>-Modifiziererdoppelter %<targetsync%>-Modifiziererdoppeltes %<volatile%>doppeltes %qDdoppelter %qD-Spezifiziererdoppeltes %qEdoppeltes Attribut %qEDoppelter Deklarationsspezifizierer %qEdoppeltes %qsdoppelter %qs-ModifiziererDoppelte (oder sich Ã¼berschneidende) case-Wertedoppelter Basistyp %qT ungÃ¼ltigDoppelter case-Wertdoppelter CV-Qualifiziererdoppelte Deklaration fÃ¼r Protokoll %qEdoppelte Deklaration der Methode %<%c%E%> mit in Konflikt stehenden Typendoppelte Definition von %qsdoppelte Definition von Â»%sÂ«doppelte Definition einer Symbolversiondoppelter direkter Aufruf von %s in der Folge der spekulativen Aufrufe mit speculative_id %idoppelte explizite Instanziierung von %q#Ddoppelte explizite Instanziierung von %q#Tdoppelter Featuremodifizierer %qs mit Wert %qs in Attribut %<target_version%>doppelte Informationen fÃ¼r %qEdoppelte Initialisierung von %qDduplicate insn UID: %idoppelte Instanzvariable %q+Ddoppelte Schnittstellendeklaration fÃ¼r Kategorie %<%E(%E)%>doppelte Schnittstellendeklaration fÃ¼r Klasse %qEdoppelte Marke %qDDoppelte Markendeklaration %qEInterner Fehler: duplicate loop headerdoppeltes Element %q+Ddoppelter Verweis %s in der Folge der spekulativen Aufrufe mit speculative_id %idoppelter typgenerischer Parametertyp fÃ¼r Funktionsargument %u von %<__builtin_tgmath%>doppelter Virt-Spezifiziererdoppelter %<fr%>-PrÃ¤ferenzselektordoppelte %<if%>-Bedingungdoppelt angegebener Parameter %qs in Attribut %<amdgpu_hsa_kernel%>wÃ¤hrend NeuÃ¼bersetzung mit %<-fcompare-debug%>Im Durchlauf %s: %s
! beim Lesen der Bindung %<%E%s%E%>beim Lesen der Bindung %<%E%s%E@%s%>beim Laden der ausstehenden Einheiten fÃ¼r %<%E%s%E%>Dwarf-Version %wu wird nicht unterstÃ¼tztdynamische AbhÃ¤ngigkeit Â»%sÂ« nicht gefundendynamische Ausnahmespezifikationen sind in C++11 veraltetdynamischer Typ %qT seines Operanden hat keine Basisklasse vom Typ %qTder dynamische Typ %qT des Operanden hat keine eindeutige Ã¶ffentliche Basisklasse %qTeBPF-Stapelgrenze Ã¼berschrittenjeder nicht deklarierte Bezeichner wird nur einmal fÃ¼r jede Funktion, in der er vorkommt, gemeldetdas frÃ¼here Argument sollte die Anzahl der Elemente angeben, das spÃ¤tere Argument die GrÃ¶ÃŸe des einzelnen ElementsInterner Fehler: edge %s->%s has no corresponding call_stmtedge count is not compatible with function countInterner Fehler: edge from %d to %d should be marked irreducibleInterner Fehler: edge from %d to %d should not be marked irreducibleKante hat sowohl call_stmt als auch lto_stmt_uid gesetztInterner Fehler: edge not foundInterner Fehler: edge points to wrong declaration:entweder %<-fopenacc%> oder %<-fopenmp%> muss angegeben seinentweder sollten alle Initialisierer-Klauseln benannt sein oder gar keineausfÃ¼hrliche Typ-Spezifikation fÃ¼r einen enum mit GÃ¼ltigkeitsbereich darf nicht das SchlÃ¼sselwort %qD verwendenElementindex %qE ist auÃŸerhalb der Grenzen %<[0 .. %E]%>Elementtypen mÃ¼ssen dieselben seinelement_number(): Bad dimension typeElementare BinÃ¤roperationelementare Funktionsargumente bei %C sind nicht konformElementares UnterprogrammElemente des Arrays %q#D haben unvollstÃ¤ndigen TypElemente des Arrays %q#T haben unvollstÃ¤ndigen Typeingebettetes %<\0%> im Formateingebettetes NUL in CFString-LiteralInterner Fehler: emit unrecognizable insndas ABI zum Ãœbergeben von leeren Klassen (%qT) als Parametern hat sich mit %<-fabi-version=12%> (GCC 8) geÃ¤ndertLeere Deklarationleere Deklaration eines %<enum%>-Typen redeklariert das Tag nichtLeere Deklaration mit %<_Alignas%> redeklariert nicht SymbolLeere Deklaration mit Speicherklassenangabe redeklariert nicht SymbolLeere Deklaration mit Typqualifizierer redeklariert nicht SymbolLeeres Enum ist ungÃ¼ltigleere Dateileerer Indexbereich in Initialisierungnicht-leere Initialisierung Â»init-captureÂ« eines Lambdasleere Initialisierung in Â»init-captureÂ« fÃ¼r Lambdaleere linke PrÃ¤zision im Format %sleere Klammern sind mehrdeutig und werden als Funktionsdeklaration angesehenfehlende PrÃ¤zision im Format %sleere Liste von EigenschaftsattributenLeerer Wertebereich angegebenLeere Zeichenkette in Attribut %<target%>leere Struktur hat GrÃ¶ÃŸe 0 in C, aber 1 in C++leere Deklaration fÃ¼r strukturierte Bindungleere Union hat GrÃ¶ÃŸe 0 in C, aber 1 in C++schalten Sie %<-Wtemplate-body%> ein fÃ¼r weitere DetailsDurchlauf %s fÃ¼r Funktion %s einschaltenDurchlauf %s fÃ¼r Funktionen im Bereich [%u, %u] einschaltenEinschalten von %qs befÃ¶rdert %<%s%s%> zu %<%s%s%>Das Einschalten der Ablaufverfolgung ist nur bei der Ãœbersetzung fÃ¼r THUMB sinnvollDas Einschalten der UnterstÃ¼tzung der Aufgerufenen-Zusammenarbeit ist nur bei der Ãœbersetzung fÃ¼r THUMB sinnvollFehler im ELF-Headerumgebendes %<target%>umgebendes %qsumgebendes OpenACC-%qs-Konstrukt undumgebendes OpenACC-%qs-Konstrukt mit %qs-KlauselumschlieÃŸende Klasse der %<constexpr%> nicht-statischen Elementfunktion %q+#D ist kein LiteraltypeinschlieÃŸende Klassentemplates werden nicht explizit spezialisiertumgebendes Eltern-Berechnungs-Konstruktumgebende Regionumgebende Routineumgebende Zielregionumgebende TaskEndausdruck verweist auf Ã¤uÃŸeren Iterator %qDInterner Fehler: end insn %d for block %d not found in the insn streamEnde der Implied-do-Schleife bei %L konnte nicht zu einem konstanten Wert vereinfacht werdenInterner Fehler: entry block count not initializedenum-Konstante hier definiertenum-Konstante in booleschem Zusammenhangenum-Umwandlung von %qT nach %qT in Zuweisung ist in C++ ungÃ¼ltigenum-Umwandlung von %qT nach %qT in Initialisierung ist in C++ ungÃ¼ltigenum-Umwandlung von %qT nach %qT in RÃ¼ckgabe ist in C++ ungÃ¼ltigenum-Umwandlung in Zuweisung ist in C++ ungÃ¼ltigenum-Umwandlung in Initialisierung ist in C++ ungÃ¼ltigEnum-Umwandlung bei Ãœbergabe des Arguments %d von %qE ist in C++ ungÃ¼ltigÂ»enumÂ«-Typ hier definiertInterner Compilerfehler: enum value is not %<CONST_DECL%> or %<INTEGER_CST%>Interner Compilerfehler: enum value name is not %<IDENTIFIER_NODE%>Interner Compilerfehler: enum value type is not %<INTEGER_TYPE%> nor convertible to the enumAufzÃ¤hlungs- und Nicht-AufzÃ¤hlungstyp in bedingtem Ausdruckbedingter Ausdruck enthÃ¤lt unvertrÃ¤gliche AufzÃ¤hlungswerte der Typen %qT und %qTAufzÃ¤hlungsbereich unterscheidet sichAufzÃ¤hlungswert %qE wird nicht von switch behandeltAufzÃ¤hlungswerte Ã¼berschreiten Wertebereich von %qsAufzÃ¤hlungswerte Ã¼berschreiten Wertebereich von INTEGERAufzÃ¤hlungswerte Ã¼berschreiten Wertebereich des grÃ¶ÃŸten Ganzzahltypender AufzÃ¤hlungswert %qD passt nicht zu ...AufzÃ¤hlungswert %qE ist auÃŸerhalb des GÃ¼ltigkeitsbereichs des zugrundeliegenden Typen %qTAufzÃ¤hlungswert fÃ¼r %qD ist keine GanzzahlkonstanteAufzÃ¤hlungswert fÃ¼r %qD muss ganzzahligen oder AufzÃ¤hlungstyp ohne GÃ¼ltigkeitsbereich habenAufzÃ¤hlungswert fÃ¼r %qE ist keine GanzzahlkonstanteAufzÃ¤hlungswert fÃ¼r %qE ist kein GanzzahlkonstantenausdruckAufzÃ¤hlungswert ist auÃŸerhalb des GÃ¼ltigkeitsbereichs von %qsAufzÃ¤hlungswert ist auÃŸerhalb des GÃ¼ltigkeitsbereichs des zugrundeliegenden TypenUmgebungsvariable %<COLLECT_GCC%> muss gesetzt seinUmgebungsvariable %<COLLECT_GCC_OPTIONS%> muss gesetzt seinUmgebungsvariable %<COLLECT_LTO_WRAPPER%> muss gesetzt seinUmgebungsvariable %qs muss ganzzahlig sein und zwischen 0 und %wd liegenUmgebungsvariable %qs nicht definiertUmgebungsvariable COLLECT_GCC_OPTIONS muss gesetzt seinUmgebungsvariable DJGPP nicht definiertUmgebungsvariable DJGPP zeigt auf kaputte Datei %qsUmgebungsvariable DJGPP zeigt auf fehlende Datei %qsFehlerFehler beim SchlieÃŸen von %s: %mFehler beim SchlieÃŸen der Datei fÃ¼r OptimierungsdatensÃ¤tze %qsFehler in Argumenten fÃ¼r Spezifikationsfunktion %qsFehler beim LÃ¶schen von %sFehler beim Schreiben von %qsFehler beim Schreiben der OptimierungsdatensÃ¤tze in %qs: %sFehler beim Schreiben der Datei %s: %mFehler: Fehler: Â»%sÂ« kann nicht zum Schreiben geÃ¶ffnet werden: %s
  Fehler beim EinfÃ¼gen von Ãœbersetzungseinheiteneval_intrinsic(): Bad operatoreval_type_intrinsic0(): op NULLAusnahme Â»%sÂ«ExceptionaufrÃ¤umen fÃ¼r dieses Placement-New wÃ¤hlt delete-Operator fÃ¼r Nicht-PlacementAusnahmebereinigungen lassen den Aufruf von __tsan_func_exit wegAusnahmebehandlung ausgeschaltet, %<-fexceptions%> schaltet sie einAusnahmebehandlung ausgeschaltet; %<-fexceptions%> schaltet sie einFehlzuordnung von PersÃ¶nlichkeiten bei AusnahmebehandlungAusnahme des Typs %<%T%> wird gefangen werdenAusnahme des Typs %qT wird bereits von einem frÃ¼heren Exceptionhandler verarbeitetAusnahmen-Angabe von %qD hÃ¤ngt von sich selbst abException-Angabe von %qD erst am Ende der Klassendefinition verfÃ¼gbarÃ¼berzÃ¤hlige Elemente in %qT-InitialisiererElementÃ¼berschreitung in ArrayinitialisierungElementÃ¼berschreitung in SkalarinitialisierungElementÃ¼berschreitung in struct-InitialisierungElementÃ¼berschreitung in union-InitialisierungElementÃ¼berschreitung in VektorinitialisierungÃ¼berzÃ¤hliger Verwendungs-Operand fÃ¼r AnweisungAusfÃ¼hrungszÃ¤hler als null angenommen
  AusfÃ¼hrungszÃ¤hler geschÃ¤tzt
  bestehende Deklaration %#qDbestehende Deklaration ist hier ohne Tagsbestehende Deklaration ist hier mit Tags %qEder bestehende Vorgabewert ist hier deklariertbestehende Definition %qDInterner Fehler: exit %d->%d not recordedInterner Fehler: exit block count not initializedExpansionsmuster %qE enthÃ¤lt keine ParameterpacksExpansionsmuster %qT enthÃ¤lt keine ParameterpacksExpansionspunkt ist Ort %llu%<"%> erwartet%<#pragma omp scan%> erwartet%<#pragma omp section%> oder %<}%> erwartet%<(%> erwartet%<(%> hinter template-argument-list erwartet%<(%> bei %C erwartet%<(%> oder Zeilenende erwartet%<)%> erwartet%<)%> bei %C erwartet%<)%> oder %<,%> erwartet%<*%> erwartet%<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%> oder Bezeichner erwartet%<,%> erwartet%<,%> oder %<)%> erwartet%<,%> oder %<...%> erwartet%<,%> oder %<;%> erwartet%<,%> oder %<]%> erwartet%<,%> oder %<}%> erwartet%<,%>, %<;%> oder %<}%> erwartet%<.%> erwartet%<...%> erwartet%<:%> erwartet%<:%> bei %C erwartet%<:%> oder %<)%> erwartet%<:%> oder %<...%> erwartet%<:%> oder %<::%> erwartet%<:%>, %<,%>, %<;%>, %<}%> oder %<__attribute__%> erwartet%<::%> erwartet%<;%> erwartet%<;%> hinter Klassendefinition erwartet%<;%> hinter Strukturdefinition erwartet%<;%> hinter Uniondefinition erwartet%<;%> am Ende von Elementdeklaration erwartet%<;%> oder %<{%> erwartet%<;%> or %<{%> nach Definition der Methodenattribute erwartet%<;%>, %<,%> oder %<)%> erwartet%<;%>, Bezeichner oder %<(%> erwartet%<<%> erwartet%<=%> erwartetnach dem Objective-C-Attribut %qE wird ein %<=%> erwartet%<=%> bei %C erwartet%<=%>, %<,%>, %<;%>, %<asm%> oder %<__attribute__%> erwartetin der %<if%>-Bedingung wird ein Vergleich mit %<==%> erwartetin der %<if%>-Bedingung wird ein Vergleich mit %<==%>, %<<%> oder %<>%> erwartet%<>%> erwartet%<@end%> erwartet%<@synchronized%> erwartet%<@throw%> erwartet%<@try%> erwartet%<[%> erwartet%<]%> erwartet%<__label__%> erwartet%<__transaction_atomic%> erwartet%<__transaction_relaxed%> erwartet%<acq_rel%>, %<acquire%>, %<relaxed%>, %<release%> oder %<seq_cst%> erwartet%<alloc%>, %<to%>, %<from%>, %<tofrom%>, %<firstprivate%>, %<none%> oder %<default%> erwartet%<allocator%> oder %<align%> erwartet%<ancestor%> oder %<device_num%> erwartet%<asm%> erwarteteine der Klauseln %<at%>, %<severity%> oder %<message%> erwartet%<auto%> erwartet%<auto%> oder %<decltype(auto)%> nach %qE erwartet%<big-endian%>, %<little-endian%> oder %<default%> nach %<#pragma scalar_storage_order%> erwartetKlauselmodifizierer %<cancel%> %<if%> erwartet%<catch%> erwartet%<class%> erwartet%<class%> oder %<typename%> erwartet%<class%>, %<typename%> oder %<template%> erwartet%<co_yield%> erwartet%<concurrent%> erwartet%<data%> erwartethinter %<#pragma acc %s%> wird %<data%> erwartet%<data%>, %<update%>, %<enter%> oder %<exit%> erwartet%<declare target%> oder %<assumes%> erwartet%<declare%> oder %<assumes%> erwartet%<decltype%> erwartet%<delete%> erwarteteine der Klauseln %<depend%>, %<destroy%> oder %<update%> erwartet%<directive%> oder %<sequence%> erwartet%<else%> erwartet%<error%>, %<warning%>, %<ignored%>, %<push%>, %<pop%>, %<ignored_attributes%> nach %<#pragma GCC diagnostic%> erwartet%<extern%> erwartet%<finally%> oder %<catch%> erwartet%<for%> hinter %qs erwartet%<for%>-Schleife oder OpenMP-Schleifenumwandlungskonstrukt erwartetPrÃ¤ferenzselektor %<fr%> oder %<attr%> erwartet%<host%>, %<nohost%> oder %<any%> erwartet%<in%>, %<out%>, %<inout%>, %<mutexinoutset%> oder %<inoutset%> erwartet%<inclusive%>- oder %<exclusive%>-Klausel erwartet%<interop%> erwartet%<interop%> bei %C erwartet%<match%>, %<adjust_args%> oder %<append_args%> bei %C erwarteteine der Klauseln %<match%>, %<adjust_args%> oder %<append_args%> erwartet%<namespace%> erwartet%<new%> erwartet%<none%> oder %<present%> erwartet%<none%>, %<shared%>, %<private%> oder %<firstprivate%> erwartet%<nothing%> oder %<need_device_ptr%> erwartet%<nothing%> oder %<need_device_ptr%> erwartet, gefolgt von %<:%>%<nothing%>, %<need_device_ptr%> oder %<need_device_addr%> bei %C erwartet%<omp_priv%> oder Funktionsname erwartet%<operator%> erwartet%<point%> erwartet%<prefer_type%>, %<target%> oder %<targetsync%> erwarteteine der Klauseln %<read%>, %<write%>, %<update%>, %<capture%>, %<compare%>, %<weak%>, %<fail%>, %<seq_cst%>, %<acq_rel%>, %<release%>, %<relaxed%> oder %<hint%> erwarteteine der Klauseln %<read%>, %<write%>, %<update%> oder %<capture%> erwartet%<reproducible%> oder %<unconstrained%> erwartet%<return%> erwartet%<scalar%>, %<aggregate%> oder %<all%> erwartet%<scalar%>, %<aggregate%>, %<pointer%> oder %<all%> erwartet%<seq_cst%>, %<acq_rel%>, %<release%> oder %<acquire%> erwartet%<seq_cst%>, %<acquire%> oder %<relaxed%> erwartet%<simd%>, %<reduction%>, %<target%> oder %<variant%> erwartet%<sizes%> erwartet%<static_assert%> erwartet%<target%> erwartet%<teams%>, %<parallel%> oder %<thread%> erwartet%<template%> erwartet%<throw%> erwartet%<try%> erwarteteine der Klauseln %<unified_address%>, %<unified_shared_memory%>, %<self_maps%>, %<dynamic_allocators%>, %<reverse_offload%> oder %<atomic_default_mem_order%> erwartet%<using%> erwartet%<when%>, %<otherwise%> oder %<default%> bei %C erwarteteine der Klauseln %<when%>, %<otherwise%> oder %<default%> erwartet%<while%> erwartet%<{%> erwartet%<{%> bei %C erwartet%<{%> oder %<:%> erwartet%<}%> erwartet%<}%> bei %C erwartet%<}%> vor %<else%> erwartet%<~%> erwartet%d Ebenen von Template-Parametern fÃ¼r %q#D erwartet, %d erhalten%e erwartet, aber Argument hat Typ %e%i oder mehr erwartet, %i gefunden%i erwartet, %i gefundenSelektorname fÃ¼r %qE erwartet%qT erwartet, aber Argument hat Typ %qT%qT erwartet, aber Zeiger hat Typ %qT%qs %<if%>-Klausel-Modifizierer anstelle %qs erwartetSchlÃ¼sselwort %qs vor dem Namen des abhÃ¤ngigen Templates erwartet%qs oder %qs erwartet%s oder %s erwartet, aber %s gefunden%s oder %s erwartet, aber Â»%sÂ« gefunden%s erwartet, aber %s gefunden%s erwartet, aber Â»%sÂ« gefunden%<...%> erwartet64-Bit-Adresse erwartet, aber Argument 1 hat %d Bit64-Bit-Adresse erwartet, aber Argument 2 hat %d BitÂ»:Â« bei %C erwartetName einer OpenMP-Direktive erwartetein JSON-Wert wurde erwartet, aber ein %s gefundenein Funktionsname erwartethinter %<#pragma message%> wird eine Zeichenkette erwartetOpenACC-Klausel erwartetOpenMP-Klausel erwartetexpected an SSA_NAME objectArgument zu %<msp430_select_cpu%> erwartetBezeichner fÃ¼r den Attributnamen erwartetAnnahme-Klausel erwartetmindestens eine Annahme-Klausel erwartetAttribut-Argument als ausbalancierte Tokenfolge erwartetAttribut vor %<...%> erwartetzwischen %i und %i erwartet, %i gefundenbinÃ¤rer Operator erwartetInterner Fehler: expected block indexInterner Fehler: expected block specifierboolescher Ausdruck erwartetboolescher Typ erwartetAufrufausdruck erwartetInterner Fehler: expected case labelKanal erwartetKlassenname erwartetKlassenschlÃ¼ssel erwartetKlassenname erwartetkonstanter Ganzzahlausdruck bei %C erwartetkonstanter Ganzzahlausdruck mit gÃ¼ltigem sync-hint-Wert erwartetInterner Fehler: expected constant logical expressionkonstanter Offset erwartetInterner Fehler: expected constant offset for %<__MEM%> operandkonstante GrÃ¶ÃŸe erwartetInterner Fehler: expected constant step for %<__MEM%> operandKonstruktor, Destruktor oder Typumwandlung erwartetName der Kontextselektormenge erwartetName der Kontextselektormenge bei %C erwartetVertragsstufe erwartet: %<default%>, %<audit%> oder %<axiom%>Vertragssemantik oder -stufe erwartetVertragsrolle erwartetWert fÃ¼r die Anzahl erwartetDeklaration erwartetDeklaration oder Anweisung erwartetDeklarationsspezifizierer erwartetDeklarationsspezifizierer oder %<...%> erwartetDeklarator erwartetName einer Direktive erwartetDummy-Parametername, %<omp_num_args%> oder konstante positive Ganzzahl bei %C erwartetInterner Fehler: expected else statementhinter SchlÃ¼sselwort %<operator%> wird leere Zeichenkette erwartetunerwartetes Ende der AuffanglisteZeilenende erwartetAusdruck erwartetAusdruck bei %C erwartetÂ»expression-listÂ« oder Â»type-idÂ« erwartetHÃ¤ufigkeit erwartetHÃ¤ufigkeitswert erwartetFunktion erwartetFunktionsname erwartetFunktionsname und %<(%> erwartetInterner Fehler: expected goto expressionID-Ausdruck erwartetÂ»id-expression (arguments)Â« erwartetBezeichner erwartetBezeichner bei %C erwartetBezeichner oder %<(%> erwartetBezeichner oder %<)%> erwartetBezeichner oder %<*%> erwartetBezeichner oder Zeichenkettenliteral erwartetBezeichner oder Zeichenkettenliteral bei %C erwartetInitialisierung erwartetGanzzahl erwartetGanzzahlausdruck erwartetListe von GanzzahlausdrÃ¼cken erwartetSchnittstelle oder Zeiger auf Schnittstelle erwartetSchleifendeklaration oder Initialisierung erwartetIterationsanweisung erwartetSprunganweisung erwartetSprungmarke erwartetbenannte Anweisung erwartetInterner Fehler: expected loop numberAbbildungsindex auf rechter Seite erwartetInterner Fehler: expected mode %s for operand %d of insn %s but got mode %s.
! Modulname erwartetmodule-partition erwartetName bei %C erwartetNamensraumname erwartetSpezifikation mit geschachteltem Namen erwartetnumerischer Typ erwartetOperator erwartetParameterbÃ¼ndel vor %<...%> erwartetInterner Fehler: expected pass nameZeiger erwartetInterner Fehler: expected pointer as argument of unary %<*%>Zeiger in %qs-Klausel erwartetÃ¼bergeordneter Ausdruck erwartetPtr-Operator erwartetQualifizierten Namen in Friend-Deklaration fÃ¼r Konstruktor %qD erwartetQualifizierten Namen in Friend-Deklaration fÃ¼r Destruktor %qD erwartetAuswahl-Anweisung erwarteterwartete Signatur: %qDSIMD-Klausel bei %C erwarteteinelnen Zeiger in %qs-Klausel erwartetSpezifizierer-Qualifizierer-Liste erwartetAnweisung erwartetnach Â»,Â« muss ein String fÃ¼r den ObjektschlÃ¼ssel folgen; stattdessen ein %s gefundennach Â»{Â« muss ein String fÃ¼r den ObjektschlÃ¼ssel folgen; stattdessen ein %s gefundenZeichenkettenliteral erwartetStringliteral oder Ganzzahlkonstante erwartetString-Literal oder konstanter ganzzahliger Ausdruck anstelle von %qE erwartetZeichenkettenliteral erwartetStringliteral oder konstanter Ausdruck in Klammern erwartetzusammengesetztes Literal kann nur Struct, Slice, Array oder Map seinSuffixbezeichner erwartetZielfunktionsaufruf erwartetTemplateargument erwartetTemplate-ID erwartetTemplate-ID fÃ¼r Typ erwartetTemplatename erwartetName des Merkmalsselektors erwartetName des Merkmalsselektors bei %C erwartetTypspezifizierer erwartetTyp-Name erwartetTypspezifikation erwartetunqualifizierte ID erwartetVariantenname bei %C erwartetCode erwartet %E Byte in einer Region der GrÃ¶ÃŸe %ECode erwartet %E Bytes in einer Region der GrÃ¶ÃŸe %ECode erwartet %E oder mehr Bytes in einer Region der GrÃ¶ÃŸe %Eals Argument 1 wurde entweder ein Zeigertyp oder ein Ganzzahltyp erwartetCode erwartet zwischen %E und %E Bytes in einer Region der GrÃ¶ÃŸe %EInterner Fehler: expecting internal function namees sollte genau 1 Sprungmarke deklariert seinexperimentelle Option, um die neue strenge TypprÃ¼fung zu verwendenexplizites by-copy-Einfangen von %<this%> mit by-copy-Einfangvorgabe ist erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarExplizite Erfassung (als Kopie) von %qD ist mit Standarderfassung (als Kopie) gedoppeltExplizite Erfassung (als Referenz) von %qD ist mit Standarderfassung (als Referenz) gedoppeltexplizite Umwandlungsfunktion wurde nicht berÃ¼cksichtigtexplizite Umwandlungsoperatoren nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarder explizite Herleitungshinweis ist hier deklariertExplizite Herleitungshinweise werden nicht fÃ¼r Â»copy-initializationÂ« berÃ¼cksichtigtInterner Fehler: explicit goto at end of bb %dexplizite Instanziierung von %q#Dexplizite Instanziierung von %q#T vor Definition des Templatesexplizite Instanziierung von %qD, aber keine Definition verfÃ¼gbarexplizite Instanziierung von %qD in Namensbereich %qD (das nicht Namensbereich %qD einschlieÃŸt)explizite Instanziierung von %qD auÃŸerhalb seines Namensraums muss einen nested-name-specifier verwendenexplizite Instanziierung des Nicht-Klassen-Templates %qDexplizite Instanziierung des Nicht-Templates %q#Dexplizite Instanziierung des Nicht-Templatetyps %qTexplizite Instanziierung darf kein %<consteval%> verwendenexplizite Instanziierung darf kein %<constexpr%> verwendenexplizite Instanziierung darf kein %<inline%> verwendenexplizite Instanziierungen sind hier nicht erlaubtexplizite Objekt-Member-Funktion %qD kann keine CV-Qualifizierer habenexplizite Objekt-Member-Funktion %qD kann keinen ref-qualifier habenexplizite Objekt-Member-Funktion ist erst ab %<-std=c++23%> oder %<-std=gnu++23%> verfÃ¼gbardie explizite Objektmemberfunktion Ã¼bersteuert die virtuelle Funktionexpliziter Objektparameter wird hier deklariertder explizite Objektparameter ist bereits eine verÃ¤nderbare Referenzexplizite Qualifizierung in Deklaration von %qDexplizite Register-Variable %qs kann nicht in verschachtelter Funktion verwendet werdenexplizite Register-Variable %qs als %<extern%> deklariertexplizite Register-Variable %qs als threadlokal deklariertder expliziten Spezialisierung %q#D fehlen mÃ¶glicherweise Attributeexplizite Spezialisierung als %<concept%> deklariertexplizite Spezialisierung in GÃ¼ltigkeitsbereich des Nicht-Namensbereiches %qDexplizite Spezialisierung von %qD nach erster Verwendungder expliziten Spezialisierung von %D muss %<template <>%> vorausgehenexplizite Spezialisierung von %qD auÃŸerhalb seines Namensraums muss einen nested-name-specifier verwendenexplizite Spezialisierung des Nicht-Templates %qTexplizite Spezialisierungen sind hier nicht erlaubtexplizite Templateargumentliste nicht erlaubtexplizite Template-Spezialisierung kann keine Speicherklasse habenein explizit auf %<default%> gesetzter Kopierzuweisungsoperator wird implizit gelÃ¶scht, weil sein deklarierter Typ nicht mit dem Typ eines impliziten Kopierzuweisungsoperators Ã¼bereinstimmtein explizit auf %<default%> gesetzter Kopierkonstruktor wird implizit gelÃ¶scht, da sein deklarierter Typ nicht mit dem Typ eines impliziten Kopierkonstruktors Ã¼bereinstimmtExplizite Standardfunktion %q+D kann nicht als %qs deklariert werden, da die implizite Deklaration nicht %qs ist:ein explizit auf %<default%> gesetzter Verschiebe-Zuweisungsoperator wird implizit gelÃ¶scht, da sein deklarierter Typ nicht mit dem Typ eines impliziten Verschiebe-Zuweisungsoperators Ã¼bereinstimmtein explizit auf %<default%> gesetzter Move-Konstruktor wird implizit gelÃ¶scht, da sein deklarierter Typ nicht mit dem Typ eines impliziten Move-Konstruktors Ã¼bereinstimmtexplizit verwendete Register mÃ¼ssen oben auf dem Stapel gruppiert werdenExponent-Buchstabe %<q%> in real-literal-constant bei %CExport-Deklarationen sind hier nicht erlaubt%q#D wird exportiert, hat jedoch keine externe Bindungdie Deklaration %qD, die in einem unbenannten Namensraum deklariert wurde, wird exportiertdie Deklaration %qD wird mit interner Bindung exportiertNamensraum %qD mit interner Bindung wird exportiertanonymer Namensraum wird exportiertDer Ausdruck bei %L in der !$OMP-ATOMIC-COMPARE-Zuweisung Â»Variable = AusdruckÂ« muss skalar sein und darf die Variable nicht referenzierenAusdruck in !$OMP ATOMIC WRITE-Zuweisung Â»var = exprÂ« muss skalar sein und kann keine Variable bei %L referenzierenAusdruck in Zuweisung !$OMP ATOMIC Â»var = var op exprÂ« muss skalar sein und kann keine Variable bei %L referenzierenAusdruck %qE bezeichnet keine %<constexpr%>-FunktionAusdruck %qE ist kein KonstantenausdruckAusdruck %qs erfordert %<object.TypeInfo%> und kann nicht mit %<-fno-rtti%> verwendet werdenAusdruck kann nicht als Funktion verwendet werdenAusdruck berechnet nicht die Anzahl der Elemente in diesem Array; der Elementtyp ist %qT, nicht %qTAusdruck in new-Deklarator muss Ganzzahl- oder AufzÃ¤hlungstyp habenAusdruck in statischer Behauptung ist keine GanzzahlAusdruck in statischer Behauptung ist kein konstanter GanzzahlausdruckAusdruck in statischer Behauptung ist nicht konstantAusdrucksliste als zusammengesetzten Ausdruck in funktionaler Umwandlung behandeltAusdrucksliste als zusammengesetzten Ausdruck in Initialisierung behandeltAusdrucksliste als zusammengesetzten Ausdruck in Speicherinitialisierung behandeltAusdruck muss in runden Klammern eingeschlossen seinAusdruck muss ganzzahlig seinAusdruck von abstraktem Klassentyp %qT kann nicht in throw-Ausdruck verwendet werdenAusdrucksanweisung hat unvollstÃ¤ndigen Typext-dce ausgeschaltet: %d BasisblÃ¶cke und %d Register; erhÃ¶hen Sie %<--param max-gcse-memory%> auf mehr als %wuerweiterte Initialisierungslisten nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarerweiterte Register haben keine oberen HÃ¤lftenextern-Deklaration von %q+D folgt Deklaration ohne BindungGlobaler Wert mit externem Modellextern strukturierte Bindung ist nicht namenunabhÃ¤ngigexterne Variable ist nicht namenunabhÃ¤ngigexterne Funktionen zur TLS-Initialisierung werden auf diesem Ziel nicht unterstÃ¼tztexterne Bindungsdefinition von %qD im Header-Modul muss als %<inline%> deklariert seinfÃ¼r Symbol %q+D wird wegen des Attributes %qE externe Bindung benÃ¶tigtInterner Fehler: externally visible inline clonezusÃ¤tzliches %<;%> hinter Funktionsdefinition innerhalb einer KlassezusÃ¤tzliches %<;%> innerhalb einer StrukturzusÃ¤tzliches %<;%> innerhalb einer Struktur ist erst ab C++11 erlaubtzusÃ¤tzliches %<;%> auÃŸerhalb einer FunktionzusÃ¤tzliches %<;%> auÃŸerhalb einer Funktion ist erst ab C++11 erlaubtzusÃ¤tzliche geschweifte Klammern am Ende der InitialisierungzusÃ¤tzliche semantische ÃœberprÃ¼fung zur Compilezeit, fÃ¤ngt Ã¼blicherweise schlechten Programmierstil abzusÃ¤tzliche Elemente in Skalar-InitialisierungInterner Fehler: extra outgoing edge %d->%dzusÃ¤tzliche Qualifizierung %<%T::%> an Element %qszusÃ¤tzliche Qualifizierung nicht erlaubtzusÃ¤tzliches SemikolonzusÃ¤tzliches Semikolon in Methodendefinition angegebenzusÃ¤tzliches Semikolon in Â»structÂ« oder Â»unionÂ« angegebenzusÃ¤tzliche Typqualifizierer in Format-Argument (Argument %d)zusÃ¤tzliche Daten am Ende der DateiPlugin %s kann nicht initialisiert werden%<assume%>-Attribut-Annahme fehlgeschlagenFehler beim Â»%sÂ« des Mappers %qsFehler beim Â»%sÂ« des Mappers %qs in Zeile %uFehler beim Kompilieren von Â»%sÂ«Fehler beim Handshake des Mappers: %sfailed to create map component '%s'failed to create union component '%s'eingebaute Funktion konnte nicht expandiert werdenEnde-Status konnte nicht ermittelt werden: %mVerarbeitungszeiten konnten nicht ermittelt werden: %mPlugin %s kann nicht initialisiert werdenFehler beim Laden der Bindung %<%E%s%E%>Fehler beim Laden der Bindung %<%E%s%E@%s%>Fehler beim Laden der ausstehenden Einheiten fÃ¼r %<%E%s%E%>temporÃ¤re Datei %s konnte nicht fÃ¼r LTO-Ausgaben geÃ¶ffnet werdentemporÃ¤re Datei %s konnte nicht mit LTO-Ausgabe geÃ¶ffnet werdenFehler beim Lesen des kompilierten Modul-Clusters %u: %sFehler beim Lesen des kompilierten Modus: %sZurÃ¼ckfordern der nicht benÃ¶tigten Funktion gescheitertZurÃ¼ckfordern der nicht benÃ¶tigten Funktion in gleicher Comdat-Gruppe gescheitert%qD fÃ¼r %<strub%> konnte nicht aufgeteilt werdenBefehl konnte nicht aufgeteilt werdenLiteral konnte nicht in den Zeichenvorrat %qT der AusfÃ¼hrungsumgebung Ã¼bersetzt werdenFehler beim Schreiben des kompilierten Moduls: %sFehler-Speichermodell %qs kann nicht stÃ¤rker als Erfolgs-Speichermodell %qs fÃ¼r %qD seinFehler-Speichermodell %wi kann nicht stÃ¤rker als Erfolgs-Speichermodell %wi fÃ¼r %qD seinFehler bei Vereinfachung der Teil-Zeichenketten-Referenz in DATA-Anweisung bei %LNeuladen gescheitert:Interner Fehler: fallthru edge after a control statement in bb %dInterner Fehler: fallthru edge after unconditional jump in bb %iInterner Fehler: fallthru edge crosses section boundary in bb %iInterner Fehler: fallthru to exit from bb %din Objective-C 1.0 gibt es keine schnelle AufzÃ¤hlungAttribute fastcall und cdecl sind nicht vertrÃ¤glichAttribute fastcall und regparm sind nicht vertrÃ¤glichAttribute fastcall und stdcall sind nicht vertrÃ¤glichAttribute fastcall und thiscall sind nicht vertrÃ¤glichschwerwiegender Fehler: fclose %s: %mfe_runtime_error string must be null terminatedfe_runtime_error: Wrong number of arguments (%d instead of %d)auf Feld %q#D kann mittels %q#D zugegriffen werdenFeld %q#D mit gleichem Namen wie KlasseFeld %qD hat unvollstÃ¤ndigen Typen %qTFeld %qE als Funktion deklariertFeld %qE hat unvollstÃ¤ndigen TypenFeldname nicht in Datensatz- oder union-InitialisierungFeldnummer Ã¼berschreitet die Definition der MengeFeldnummer auÃŸerhalb des Wertebereiches beim Versuch, auf das Element der Menge zuzugreifenFeldprÃ¤zisionsangabeFeldbreiteFeldbreite im printf-FormatFeldbreite im scanf-FormatFeldbreite im strfmon-FormatFeldbreite im strftime-FormatFeldbreitenangabeFelder kÃ¶nnen nicht vom RVV-Typ %qT seinFelder kÃ¶nnen nicht vom SVE-Typ %qT seinFelder haben unterschiedliches Layout in einer anderen ÃœbersetzungseinheitDatei %qs verlassen, aber nicht betretenDatei endet in Standardargument%<register%> in dateilokalem zusammengesetztem LiteralDeklaration von %qE in Datei-Sichtbarkeitsbereich spezifiziert %<auto%>Deklaration von %qE in Datei-Sichtbarkeitsbereich spezifiziert %<register%>der Dateiname %qs beginnt nicht mit dem Profil-PrÃ¤fix %qsFÃ¼llzeichenFÃ¼llzeichen im strfmon-FormatDie sprachspezifische Ausgabe auf eine kommaseparierte Liste von Prozeduren und Modulen einschrÃ¤nkenfind_array_spec(): unused as(1)find_array_spec(): unused as(2)find_enum(): Enum not foundfini-Funktion im Objekt %s gefundender Operand des ersten %<sizeof%> wurde hier deklarierterstes Argument muss []byte seinerstes Argument von %q+D sollte %<int%> seinerstes Argument von %qD muss ein Zeiger, das zweite eine Ganzzahlkonstante seinErstes Argument fÃ¼r %<__builtin_call_with_static_chain%> muss ein Aufrufausdruck seinerstes Argument fÃ¼r %<__builtin_choose_expr%> ist keine KonstanteErstes Argument fÃ¼r %<va_arg%> nicht vom Typ %<va_list%>erstes Argument fÃ¼r %qD muss ein Zeichenkettenliteral seindas erste Argument %qT eines Zeigers auf einen Member muss ein Klassentyp oder ein Zeiger auf einen Klassentyp seinder erste Fehler trat hier aufder erste Fehler in %qD trat hier aufder erste Ausdruck hat den Typ %qTInterner Compilerfehler: first mismatch is fielderster Offset muss in umgedrehter Richtung der Schleifeniterationen seinerstes Register muss R0 seinerstmals hier gesehenerstmals hier angegebenfeststehendes ebp-Register erfordert %<-maccumulate-outgoing-args%>feststehendes ebp-Register erfordert %<target("accumulate-outgoing-args")%>festes Register %s zur ParameterÃ¼bergabe an Funktion verwendetreparierte BÃ¤ume sind unvertrÃ¤glichFestkommaÃ¼berlauf in Ausdruck %qE des Typs %qT ergibt %qEFestkommaÃ¼berlauf in Ausdruck des Typs %qT ergibt %qEFestkommatypen werden fÃ¼r dieses Ziel nicht unterstÃ¼tztFestkommatypen werden in C++ nicht unterstÃ¼tztflexibles Arrayelement %qD hat keine wohldefinierten Paddingbits fÃ¼r %qsflexibles Arrayelement %qD in ansonsten leerem %q#T ist eine GCC-Erweiterungflexibles Arrayelement %qD in Unionflexibles Arrayelement %qD nicht am Ende von %q#Tflexibles Arrayelement in einer Struktur ohne benannte Elemente ist eine GCC-Erweiterungflexibles Arrayelement in Union ist eine GCC-Erweiterungflexibles Arrayelement nicht am Ende von structGleitkommakonstante Ã¼berschreitet Wertebereich von %qTGleitkommakonstante falsch verwendetGleitkommakonstante auf Null abgeschnittenGleitkommaliteral Ã¼berschreitet Wertebereich des Typs %qTGleitkommaliteral auf Null abgeschnittenGleitkommaÃ¼berlauf in Ausdruck %qE des Typs %qT ergibt %qEGleitkommaÃ¼berlauf in Ausdruck des Typs %qT ergibt %qEGleitkommakonstante ist kein gÃ¼ltiger direkter OperandGleitkomma-Suffix %qs durch Implementierung Ã¼berdecktGleitkommaeinheit %qs weicht von PRID-Voreinstellung %qs abAblaufsteuerungsbefehl innerhalb eines Basis-Blockesfmax-include-depth=<Anzahl> Maximale Tiefe von verschachtelten #include festlegen.Faltungstest: ursprÃ¼nglicher Baum durch Faltung geÃ¤ndertFalten einer leeren Expansion Ã¼ber %Ofold-expressions sind nur mit %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbarfold-mem-offsets: %d BasisblÃ¶cke und %d Kanten/Basisblockfopen %s: %mfÃ¼r %qDum eine funktionsartige Umwandlung zu erreichen, entfernen Sie das redundante %<::%D%>fÃ¼r Funktionsparameter vom Typ Array muss die LÃ¤nge angegeben seinfÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤tum %<std::initializer_list%> herzuleiten, verwenden Sie einen copy-list-initialization (also mit %<=%> vor dem %<{%>)ErhÃ¶hungsausdruck kann die Adresse der Ã¼berladenen Funktion nicht auflÃ¶senErhÃ¶hungsausdruck hat keinen EffektErhÃ¶hungsausdruck ist eine Referenz, kein Aufruf, zur Funktion %qEfÃ¼r Zeigertyp muss der LÃ¤ngenausdruck angegeben werdenfÃ¼r Anweisung erwartetFÃ¼r Template-Deklaration %q+DfÃ¼r die Option %<-mcache-block-size=X%> sind nur die Werte 4, 8, 16, 32, 64, 128, 256 oder 512 gÃ¼ltigfÃ¼r Typ %qTfÃ¼r Arraytyp mit unbekannten Grenzen muss ein LÃ¤ngenausdruck angegeben werdenfor-, while- oder do-Anweisung erwarteterzwingen, dass MOD stets positiv ist und DIV abrundetFormatFormatargument %d nicht verwendet vor verwendetem Argument %d im %<$%>-Stil-FormatFormatargument %d mehr als einmal im %s-Format verwendetFormatargument sollte eine %qs-Referenz seineine Zeichenkette wurde gefunden, aber das Format-Argument sollte eine %qs-Referenz seinFormat ist Â»wide characterÂ«-ZeichenketteFormat ist kein Zeichenkettenliteral, und keine FormatargumenteFormat ist kein Zeichenkettenliteral, Argumenttypen ungeprÃ¼ftFormat ist kein Zeichenkettenliteral, Formatzeichenkette ungeprÃ¼ftFormat der SpaltenÃ¼berschriften in %<devices.csv%> ist falschFormat-Zeichenkettenargument folgt den zu formatierenden ArgumentenFormat-Zeichenkettenargument ist kein ZeichenkettentypFormatzeichenkette ist hier definiertFormatzeichenkette ist kein Array vom Typ %qsZeiger auf qualifizierten Funktionstypen %qT wird geformtZeiger auf Referenztyp %qT wird geformtReferenz auf qualifizierten Funktionstypen %qT wird geformtReferenz auf Referenztyp %qT wird geformtReferenz auf Â»voidÂ« wird gebildetbeim Formen des Typs von %qsVorwÃ¤rtsdeklaration von %q#TVorwÃ¤rtsbezug zum Rahmen von %qs%<%c%s%> gefunden%<-%E%> statt %<+%E%> in Protokoll(en) gefunden%<:%> in Spezifikation mit geschachteltem Namen gefunden, %<::%> erwartetein %qT wurde gefunden, aber das Format-Argument sollte eine Zeichenkette seineine %qs-Referenz wurde gefunden, aber das Format-Argument sollte eine Zeichenkette seinfound a default name with a non-empty defining statementfound a real definition for a non-registerfound a virtual definition for a GIMPLE registerfound an SSA_NAME that had been released into the free poolInterner Fehler: found default case not at the start of case vectorGleitkomma-Software-VervollstÃ¤ndigung benÃ¶tigt %<-mtrap-precision=i%>fr30_print_operand: ungÃ¼ltiger Code %%Ffr30_print_operand: ungÃ¼ltiger Code %%xfr30_print_operand: ungÃ¼ltiger Operand fÃ¼r Code %%Afr30_print_operand: unbehandeltes MEMfr30_print_operand: unbekannter Codefr30_print_operand: nicht erkannter Code %%Bfr30_print_operand: nicht erkannter Code %%bfr30_print_operand: nicht erkannter Code %%pfr30_print_operand_address: unbehandelte AdresseRahmenzeiger benÃ¶tigt, aber reserviertRahmengrÃ¶ÃŸe von %qs ist %wd BytesRahmengrÃ¶ÃŸe der Funktion %qs ist %wd Bytes, das ist grÃ¶ÃŸer als die benutzerdefinierte Stapelgrenze von %d Bytes; eine bedingungslose Falle wird gesetztRahmengrÃ¶ÃŸe der Funktion %qs ist %wd Bytes, das ist mehr als die HÃ¤lfte der StapelgrÃ¶ÃŸe; die dynamische PrÃ¼fung wÃ¤re nicht zuverlÃ¤ssig; fÃ¼r diese Funktion wird keine PrÃ¼fcode generiertRahmengrÃ¶ÃŸe zu groÃŸ fÃ¼r zuverlÃ¤ssige StapelÃ¼berprÃ¼fungfree_expr0(): Bad expr typefree_pi_tree(): Unresolved fixupÂ»friendÂ«-Deklaration %q#D deklariert eine Nicht-Template-FunktionFriend-Deklaration %qD in lokaler Klasse ohne vorherige DeklarationÂ»friendÂ«-Deklaration %qD ist fÃ¼r explizite Spezialisierung nicht sichtbarÂ»friendÂ«-Deklaration %qD darf keine Â»virt-specifierÂ« habenÂ»friendÂ«-Deklaration benennt keine Klasse oder Funktion%<friend%>-Deklaration hierfriend-Deklaration nicht in KlassendefinitionÂ»friendÂ«-Deklaration %q#D gibt Defaultargumente an und ist nicht die einzige DeklarationÂ»friendÂ«-Deklaration von %qD gibt Defaultargumente an und ist keine Definitionfriend-Deklaration erfordert KlassenschlÃ¼ssel, d.h. %<friend %#T%>friend-Deklaration erfordert KlassenschlÃ¼ssel, d.h. %<friend class %T::%D%>Definition der Freundfunktion %qs kann keinen Namen haben, der mit %<%D::%> qualifiziert istDefinition der Freundfunktion %qs kann keinen Namen haben, der mit %<::%> qualifiziert istfriend-Funktionstemplate mit EinschrÃ¤nkungen, die von Ã¤uÃŸeren Templateparametern abhÃ¤ngen, muss eine Definition seinaus der Definition von %q#Dvon vorheriger Deklaration %qFdas Frontend unterstÃ¼tzt keine Geschwisteraufrufefrv_print_operand: unbekannter CodeFunktion kann nur mit nil verglichen werdendie Funktion %<main%> darf keine Parameter haben, wenn die Option %<-minrt%> verwendet wirddie Funktion %<main%> darf bei Verwendung der Option %<-minrt%> niemals zurÃ¼ckkehrenFunktion %q#D ist wie eine Variable initialisiertFunktionsdefinition von %q+D ist als Â»dllimportÂ« markiertFunktion %q+D Teil des Alias-ZyklusFunktion %q+F kann nie kopiert werden, da sie das Attribut %<noclone%> hatdie Funktion %q+F kann nie kopiert werden, da sie ein nichtlokales Â»gotoÂ« empfÃ¤ngtdie Funktion %q+F kann nie kopiert werden, da sie die Adresse einer lokalen Marke in statischer Variablen speichertdie Funktion %q+F kann nie Â»inlineÂ« sein, da sie ein berechnetes Â»gotoÂ« enthÃ¤ltdie Funktion %q+F kann nie Â»inlineÂ« sein, da sie ein Argument vom Typ Array variabler LÃ¤nge hatdie Funktion %q+F kann nie inline sein, da dies mit %<-fno-inline%> unterdrÃ¼ckt wirddie Funktion %q+F kann nie Â»inlineÂ« sein, da sie %<__builtin_return%> oder %<__builtin_apply_args%> verwendetdie Funktion %q+F kann nie Â»inlineÂ« sein, da sie alloca verwendet (zum Aufheben: Attribut Â»always_inlineÂ« verwenden)Funktion %q+F kann nie inline sein, da sie mit inline in Konflikt stehende Attribute hatdie Funktion %q+F kann nie Â»inlineÂ« sein, da sie ein nichtlokales Â»gotoÂ« enthÃ¤ltdie Funktion %q+F kann nie Â»inlineÂ« sein, da sie setjmp verwendetdie Funktion %q+F kann nie Â»inlineÂ« sein, da sie Â»setjmp-longjmpÂ«-Ausnahmebehandlung verwendetdie Funktion %q+F kann nie Â»inlineÂ« sein, da sie eine variable Argumentliste verwendetFunktion %qD wurde als %<[[noreturn]]%> deklariert, das weicht von der ersten Deklaration abFunktion %qD wurde innerhalb einer Union als %<virtual%> deklariertFunktion %qD ist wie eine Variable initialisiertFunktion %qD kÃ¶nnte ein Kandidat fÃ¼r Formatattribut %qs seinFunktion %qD als Variable redeklariertFunktion %qD als %<asm%>-Ausgabe verwendetFunktion %qs kann nicht als %<mutable%> deklariert seinFunktion %qs wurde in ausgelagertem Code referenziert, wurde aber nicht markiert, dass sie im ausgelagerten Code enthalten sein dÃ¼rfteDie Funktion %qs, Parameter %u, hat IPA-SRA-Zugriffe, die sich Ã¼berlappenFunktion %qs, Parameter %u, wird verwendet, hat aber keinen bestimmten IPA-SRA-Zugrifffunktionsargumente von %<__builtin_tgmath%> haben alle denselben Typden Funktionsargumenten von %<__builtin_tgmath%> fehlt der typgenerische ParameterFunktionsattribut %qs erfordert die ISA-Erweiterung VFunktionsattribute %qs und %qs schlieÃŸen sich gegenseitig ausFunktionskÃ¶rper kann zum Bindezeitpunkt Ã¼berschrieben werdenFunktionskÃ¶rper nicht verfÃ¼gbarFunktionsaufruf hat zusammengesetzten WertFunktion Ã¼ber nicht kompatiblen Typen aufgerufenFunktionskonzepte werden nicht mehr unterstÃ¼tztFunktionsdeklaration ist kein Prototypeine mit %<noreturn%> deklarierte Funktion hat eine %<co_return%>-Anweisungals %<noreturn%> deklarierte Funktion hat %<return%>-AnweisungFunktionsdefinition deklarierte %<auto%>Funktionsdefinition deklarierte %<register%>Funktionsdefinition deklarierte %<typedef%>Funktionsdefinition deklarierte %qsFunktionsdefinition deklariert keine ParameterFunktionsdefinition hat qualifizierten void-RÃ¼ckgabetypenFunktion gibt keinen Wert zurÃ¼ck, der getestet werden kÃ¶nnteFunktion gibt keinen Zeichenkettentypen zurÃ¼ckFunktion ist extern gebunden, aufgrund einer Benutzeranforderung werden nur static-Funktionen geinlinet, um Live-Patchen zu ermÃ¶glichenFunktion liefert mÃ¶glicherweise Adresse einer lokalen Variablen zurÃ¼ckFunktion kÃ¶nnte ein Kandidat fÃ¼r Attribut %qs seinFunktion kÃ¶nnte Kandidat fÃ¼r Attribut %qs sein, wenn sie als normal zurÃ¼ckkehrend bekannt istFunktionsname als linker Operand von %<<%> ist in C++20 verboten; klammern Sie den Funktionsnamen mit %<()%> einFunktion kommt nicht fÃ¼r Â»inlineÂ« in BetrachtFunktion nicht Â»inlineÂ« deklariert und CodegrÃ¶ÃŸe wÃ¼rde wachsenFunktion kann nicht Â»inlineÂ« seinFunktion kein Kandidat fÃ¼r Â»inlineÂ«Funktions- oder Arraytyp %qT in %<#pragma omp declare reduction%>Funktions- oder Arraytyp in %<#pragma omp declare reduction%>FunktionsparameterFunktionsparameter %qD darf nicht als Listenelement in einer %<allocate%>-Direktive erscheinenFunktionszeiger werden mit der Option %<-mabi=ti%> nicht unterstÃ¼tztFunktion, die bereits als %<static%> deklariert war, wird als %<extern%> neudeklariertdie Funktion erfordert einen Dual-Kontext, der von GDC noch nicht unterstÃ¼tzt wirdUnpassende Anzahl der RÃ¼ckgabewerteRÃ¼ckgabetyp der Funktion kann keine Funktion seinFunktionsrÃ¼ckgabetypen nicht kompatibel wegen %<volatile%>Funktion gibt eine FunktionFunktion gibt ein Array zurÃ¼ckFunktion liefert Adresse einer Sprungmarke zurÃ¼ckFunktion liefert Adresse einer lokalen Variablen zurÃ¼ckFunktion gibt Aggregat zurÃ¼ckFunktion beginnt in einer hÃ¶heren Zeilennummer als sie endetInterner Fehler: function symbol is not functionFunktions-Template %qD als Klassentemplate redeklariertBezeichner %qD fÃ¼r Funktionstemplate ist geschachteltem Namens-SpezifiziererFunktionstypen nicht wirklich kompatibel in ISO-CFunktionsversionen kÃ¶nnen nicht als %<gnu_inline%> markiert werden, KÃ¶rper mÃ¼ssen generiert werdenFunktion mit VertrÃ¤gen %q+D Ã¼bersteuert Funktion ohne VertrÃ¤geFunktion mit qualifiziertem void-RÃ¼ckgabetypen aufgerufenFunktions-GÃ¼ltigkeitsbereich %qE ist implizit auto, jedoch als %qs deklariertFunktions-GÃ¼ltigkeitsbereich %qs ist implizit auto und deklarierte %<__thread%>Rumpf eines function-try-block in einem %<constexpr%>-Konstruktor ist erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarRumpf eines function-try-block in einer %<constexpr%>-Funktion ist erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarfunktionale Umwandlung in Arraytyp %qTFunktionen mit dem Status %qs erfordern die ISA-Erweiterung %qsFunktionen mit SME-Zustand erfordern die ISA-Erweiterung %qsBandenreduzierung in einer verwaisten SchleifeAusschuss am Ende von %<#pragma nomember_alignment%>gcc-Treiberversion %s %s fÃ¼hrt GCC-Version %s aus
  gcc-Version %s %s
  gcov %s%s
! ein C-Quelltext-GerÃ¼st fÃ¼r das Modul generieren, das gerade Ã¼bersetzt wirdein C++-Quelltext-GerÃ¼st fÃ¼r das Modul generieren, das gerade Ã¼bersetzt wirdeine gemeinsam genutzte Bibliothek aus dem Modul erzeugenFehlermeldungen erzeugen, die SchlÃ¼sselwÃ¶rter in Kleinbuchstaben ausgebenzusÃ¤tzliche NOPs generieren, um das Debuggen zu vereinfachen, dadurch bekommt jedes SchlÃ¼sselwort aus dem Code einen eigenen Befehlstatische GerÃ¼st-Initialisierung und Finalisierung fÃ¼r jedes Modul innerhalb von main generierendie main-Funktion erzeugenInterner Fehler: generate_isocbinding_initializer(): bad iso_c_binding type, expected %<c_ptr%> or %<c_funptr%>die generierte Schleife des %<unroll%>-Konstrukts ohne %<partial%>-Klausel hat keine kanonische Formallgemeiner Thunk-Code fÃ¼r Methode %qD mit %<...%> scheitertget_mpz(): Not an integer constantKern-DateigrÃ¶ÃŸenlimit kann nicht geholt werden: %mgfc_add_interface(): Bad interface typegfc_arith_divide(): Bad basic typegfc_arith_error(): Bad error codegfc_arith_minus(): Bad basic typegfc_arith_plus(): Bad basic typegfc_arith_times(): Bad basic typegfc_arith_uminus(): Bad basic typeInterner Fehler: gfc_array_dimen_size(): Bad EXPR_ARRAY exprInterner Fehler: gfc_array_dimen_size(): Bad dimensiongfc_ascii_statement(): Bad statement codegfc_basic_typename(): Undefined typegfc_caf_attr(): Bad array referencegfc_caf_attr(): Expression isn't a variableInterner Fehler: gfc_check_dependency: expecting an EXPR_VARIABLEgfc_check_digit(): bad radixgfc_code2string(): Bad codegfc_compare_derived_types: invalid derived typegfc_compare_expr(): Bad basic typegfc_copy_expr(): Bad expr nodegfc_expression_rank(): Two array specsInterner Fehler: gfc_find_array_ref(): No ref foundgfc_free_statement(): Bad statementgfc_get_constant_expr(): locus %<where%> cannot be NULLgfc_get_default_type(): Bad symbol %qsgfc_is_constant_expr(): Unknown expression typegfc_match(): Bad match code %cgfc_match_sym_complex_part(): Bad typegfc_op2string(): Bad codegfc_range_check() returned bad valuegfc_range_check(): Bad typeInterner Fehler: gfc_ref_dimen_size(): Bad dimen_typegfc_ref_dimen_size(): Bad dimensiongfc_resolve_blocks(): Bad block typegfc_resolve_code(): Bad statement codegfc_resolve_code(): No expression on DO WHILEgfc_resolve_expr(): Bad expression typegfc_set_default_type(): symbol already has a typegfc_simplify_abs(): Bad typegfc_simplify_dcmplx(): Bad type (x)gfc_simplify_dcmplx(): Bad type (y)gfc_simplify_dim(): Bad typegfc_simplify_floor(): Bad kindgfc_simplify_log: bad typegfc_simplify_mod(): Bad argumentsgfc_simplify_modulo(): Bad argumentsgfc_trans_code(): Bad statement codegfc_trans_omp_workshare(): Bad statement codegfc_trans_select(): Bad type for case expr.gfc_typename(): Undefined typegfc_validate_kind(): Got bad kindgfc_validate_kind(): Got bad typegfc_variable_attr(): Expression isn't a variablegfortran unterstÃ¼tzt Â»-EÂ« nur zusammen mit Â»-cppÂ«gfortran: Nur eine Option %<-J%> erlaubtGimple-Aufruf hat kein ZielGimple-Aufruf hat zwei Zielegimple check: expected %s(%s), have %s(%s) in %s, at %s:%dgimple_bb (phi) is set to a wrong basic blockgimple_bb (stmt) is set to a wrong basic blockGimplifikation gescheitertglobale Konstruktoren werden fÃ¼r dieses Ziel nicht unterstÃ¼tztglobale Destruktoren werden fÃ¼r dieses Ziel nicht unterstÃ¼tztder Inhalt des %<global-module-fragment%> muss aus einer PrÃ¤prozessor-Einbindung stammenglobale Qualifizierung von Klassenname ist ungÃ¼ltigglobale Register-Variable %qD in verschachtelter Funktion verwendetglobale Registervariable folgt einer Funktionsdefinitionglobale Registervariable hat AnfangswertGlobale/statische Variablenzuweisung wurde abgefangen%d Template-Parameter fÃ¼r %q#D erhalten%d Template-Parameter fÃ¼r %q#T erhaltenGoto-Ziel ist weder eine Marke noch ein ZeigerGlobaler Zeiger ist konstant (trotzdem bei indirekten Aufrufen sichern/wiederherstellen).Gravis-Akzent %<`%> auÃŸerhalb von AnfÃ¼hrungszeichen im Formatgsplit-dwarf wird auf dieser Plattform nicht unterstÃ¼tzthatte semantische Fehler beim KompilierenDezimale Hardware-Gleitkommabefehle sind im ESA/390-Modus nicht verfÃ¼gbarDezimale Hardware-Gleitkommabefehle sind auf %s nicht verfÃ¼gbarHardware-VektorunterstÃ¼tzung ist auf %s nicht verfÃ¼gbarHardware-VektorunterstÃ¼tzung ist mit %<-msoft-float%> nicht verfÃ¼gbarhat unterschiedliche Parameter in einer anderen Ãœbersetzungseinheithat unterschiedlichen RÃ¼ckgabetyp in einer anderen ÃœbersetzungseinheitInterner Fehler: head insn %d for block %d not found in the insn streamHeadermodul erwartet, Modul %qs gefundenhierverstecktes StringlÃ¤ngenargument auf dem Stack Ã¼bergebenobere Grenze %qE geht Ã¼ber AbschnittsgrÃ¶ÃŸe in %qs-Klausel hinausobere Grenze des Arrays liegt auÃŸerhalb der Grenzen von ztypearithmetischer Ãœberlauf in oberer Grenze des TeilbereichsInterner Compilerfehler: histogram value statement does not correspond to the statement it is associated withiWMMXt und NEON sind unvertrÃ¤glichiWMMXt wird im Thumb-Modus nicht unterstÃ¼tztia64_print_operand: unbekannter Codeidentical_array_ref(): inconsistent dimensionsBezeichner %qE steht mit C++-SchlÃ¼sselwort in KonfliktBezeichner %qE wird in C++11 zum SchlÃ¼sselwortBezeichner %qE wird in C++20 zum SchlÃ¼sselwortBezeichner nach %<@protocol%> erwartetidentifier overflow: %dwenn eine der %<if%>-Klauseln einen Modifizierer verwendet, mÃ¼ssen alle %<if%>-Klauseln Modifizierer verwendenwenn das Apostroph sich nicht vermeiden lÃ¤sst, schlieÃŸen Sie es stattdessen in ein Direktivenpaar %qs und %qs einWenn dieser Code erreicht wird, wird das Programm abgebrochenwenn diese Verwendung Teil eines Ã¶ffentlichen ABI ist, Ã¤ndern Sie sie so, dass stattdessen eine konstante Variable verwendet wird, die Sie definierenwenn %qs nicht verwendbar ist, verwenden Sie stattdessen %qswenn Sie LP64E benÃ¶tigen, benachrichtigen Sie bitte das GCC-Projekt Ã¼ber %{PR116152%}%<#pragma %s %s%> wird ignoriert%<#pragma align%> wird fÃ¼r explizit ausgerichtetes %q+D ignoriert%<#pragma omp declare simd%> an Funktion mit %<_Atomic%>-qualifiziertem nicht-%<uniform%>-Argument wird ignoriert%<#pragma omp declare simd%> an Funktion mit %<_Atomic%>-qualifiziertem RÃ¼ckgabetyp wird ignoriert%<-fschedule-insns%> wird wegen Ausnahmebehandlungsfehler ignoriert%<asm%>-Angabe fÃ¼r nicht-statische lokale Variable %q+D wird ignoriert%<sink%>-Klausel wird ignoriert, da der Offset kein Vielfaches der Schrittweite istAttribut %qD an unbenanntem Namensraum wird ignoriertAttribut %qD an nicht-Â»inlineÂ«-Namensraum wird ignoriert%qE-Attribut wird fÃ¼r Templateinstanziierung %qT ignoriert%qE-Attribut wird fÃ¼r Templatespezialisierung %qT ignoriertAttribut %qE wird ignoriert, da es sich nicht auf eine Variable beziehtAttribut %qE wird ignoriert, da es sich auf eine Variable beziehtAttribut %qE wird ignoriert, da es sich auf eine initialisierte Variable beziehtAttribut %qE wird ignoriert, da es sich auf eine uninitialisierte Variable beziehtAttribut %<%E (%u)%> wird ignoriert, da es mit Attribut %<%E (%u)%> in Konflikt stehtAttribut %qE wird nach dem frÃ¼heren %qE ignoriertAttribut %qE steht mit dem Attribut %<either%> in Konflikt; wird ignoriertAttribut %qE steht mit dem Attribut %<lower%> in Konflikt; wird ignoriertAttribut %qE steht mit Attribut %<noinit%> in Konflikt; wird ignoriertAttribut %qE steht mit dem Attribut %<persistent%> in Konflikt; wird ignoriertAttribut %qE steht mit Attribut %<section%> in Konflikt; wird ignoriertAttribut %qE steht mit dem Attribut %<upper%> in Konflikt; wird ignoriertAttribut %qE steht mit Attribut %qs in Konflikt; wird ignoriertAttribut %qE wird wegen Ã¼berzÃ¤hliger Argumente, die mit %qE beginnen, ignoriertAttribut %qE wird in Deklaration der eingebauten Funktion %qD ignoriert, da es mit Attribut %qs in Konflikt stehtAttribut %qs wird ignoriert, da es dem vorherigen %qs widersprichtauf %qT nach einer Definition angewandte Attribute werden ignoriertauf Klassentyp %qT angewandte Attribute auÃŸerhalb einer Definition werden ignoriertauf abhÃ¤ngigen Typ %qT angewandte Attribute ohne zugehÃ¶rige Deklaration werden ignoriertAttribute an Templateargument %qE werden ignoriertAttribute an Templateargument %qT werden ignoriertdoppeltes Verzeichnis Â»%sÂ« wird ignoriert
  groÃŸe lineare Schrittweite wird ignoriertSchleifenannotation wird ignoriertfalsch geformtes %<#pragma longcall%>; wird ignoriertnicht vorhandenes Verzeichnis Â»%sÂ« wird ignoriert
! Â»packedÂ«-Attribut fÃ¼r ungepacktes nicht-POD-Feld %q#D wird ignoriertmÃ¶glicherweise in Konflikt stehende Option %<-fopt-info-%s%> wird ignoriertDer RÃ¼ckgabewert von %qD, der mit dem Attribut %<warn_unused_result%> deklariert wurde, wird ignoriertder RÃ¼ckgabewert von %qD (mit %<nodiscard%>-Attribut deklariert) wird ignoriertder RÃ¼ckgabewert von %qD (mit %<nodiscard%>-Attribut markiert) wird ignoriert%sder RÃ¼ckgabewert von %qD (mit %<nodiscard%>-Attribut deklariert) wird ignoriert: %Eder RÃ¼ckgabewert von %qD (mit %<nodiscard%>-Attribut deklariert) wird ignoriert: %qs%qD hat das Attribut %<warn_unused_result%>, daher sollte der RÃ¼ckgabewert nicht ignoriert werdender RÃ¼ckgabewert von %qD wird ignoriert, muss aber verwendet werdender RÃ¼ckgabewert von %qD wird ignoriert, muss aber verwendet werden: %qsRÃ¼ckgabewert der mit dem Attribut %<warn_unused_result%> definierten Funktion wird ignoriertder RÃ¼ckgabewert vom Typ %qT (mit %<nodiscard%>-Attribut deklariert) wird ignoriertder RÃ¼ckgabewert vom Typ %qT (mit %<nodiscard%>-Attribut deklariert) wird ignoriert: %Eder RÃ¼ckgabewert von Typ %qT (mit %<nodiscard%>-Attribut markiert) wird ignoriert%sder RÃ¼ckgabewert von Typ %qT (mit %<nodiscard%>-Attribut markiert) wird ignoriert: %qsder RÃ¼ckgabewert vom Typ %qT wird ignoriert, muss aber verwendet werdender RÃ¼ckgabewert vom Typ %qT wird ignoriert, muss aber verwendet werden: %qsDeklaration %q#D wird ignoriertunbekannte Option %q.*s wird ignoriertSchrittweite 0 wird ignoriertillegal OP in optimize_comparisonunzulÃ¤ssiger Aggregattyp %qE fÃ¼r Instanzvariable %qs angegebenungÃ¼ltiges Argument 0 fÃ¼r %qsungÃ¼ltiger Operand ungÃ¼ltige Operandenadresse (1)ungÃ¼ltige Operandenadresse (2)ungÃ¼ltige Operandenadresse (3)ungÃ¼ltige Operandenadresse (4)ungÃ¼ltiger Operand wurde gefundenunzulÃ¤ssiger Referenztyp fÃ¼r Instanzvariable %qs angegebenunmittelbare Auswertung liefert die Adresse der unmittelbaren Funktion %qDunvollkommen verschachtelte Schleife bei Verwendung von generierten Schleifenimplizites Einfangen von %qE via %<[=]%> ist in C++20 veraltetimplizite Umwandlung von %qH in %qI zur Anpassung an anderen Operanden des BinÃ¤rausdrucksimplizite Umwandlung von %qH in %qI, um an das Ergebnis im anderen Zweig der Bedingung anzugleichenimplizite Umwandlung von %qH in %qI bei Ãœbergabe von Argument an Funktionimplizite Umwandlung von %qT nach %qTimplizite Umwandlung von %qT in %qT zur Anpassung an anderen Operanden des BinÃ¤rausdrucksimplizite Umwandlung von %qT in %qT um an anderes Ergebnis von Bedingung anzupassenimplizite Umwandlung von %qT in %qT bei Ãœbergabe von Argument an FunktionImplizite Deklaration der Funktion %qEImplizite Deklaration der Funktion %qE; meinten Sie %qs?implizite Dereferenzierung greift nicht auf Objekt des Typs %qT in ErhÃ¶hungsausdruck zuimplizite Dereferenzierung greift nicht auf Objekt des Typs %qT in linkem Operanden des Kommaoperators zuimplizite Dereferenzierung greift nicht auf Objekt des Typs %qT in rechtem Operanden des Kommaoperators zuimplizite Dereferenzierung greift nicht auf Objekt des Typs %qT in zweitem Operanden des bedingten Ausdrucks zuimplizite Dereferenzierung greift nicht auf Objekt des Typs %qT in Anweisung zuimplizite Dereferenzierung greift nicht auf Objekt des Typs %qT in drittem Operanden des bedingten Ausdrucks zuImplizite Zuordnung von Feld %qD mit angenommener GrÃ¶ÃŸeImplizite Templates dÃ¼rfen nicht %<virtual%> seinFehlzuordnung in implizitem this-ZeigerInterner Fehler: implicit_section flag is set but section isn%'timplizit geholte (Â»popÂ«) Register mÃ¼ssen oben auf dem Stapel gruppiert werdenimplizit deklariertes %qD ist veraltetimpliziertes END DOder Import %qs hat eine falsche CRC-PrÃ¼fsummeder hier deklarierte Import wird an das Modul %qs angehÃ¤ngtin globalem Modul deklarierter ImportImport eines benannten Moduls %qs innerhalb eines Sprachbindungsblocksein Import, der eine Modulpartition angibt, muss nach einer benannten Moduldeklaration erscheinenImport-Deklaration muss im globalen GÃ¼ltigkeitsbereich seinimport_iso_c_binding_module(): Unable to create symbol for %simportiert beiImporte mÃ¼ssen gebaut werden, bevor sie importiert werden kÃ¶nnenunmÃ¶gliche Bedingung in %<asm%>unmÃ¶gliche Registerbedingung in %<asm%>unmÃ¶gliche Typenbehauptung: Typ implementiert nicht Schnittstellein %<constexpr%>-Ersetzung von %qsin %s, bei %s:%din C++03 muss bei Deklaration eines Â»friendÂ« ein KlassenschlÃ¼ssel verwendet werdenin C++11 und neuer kann ein Defaultkonstruktor explizit seinin C++11 sind Destruktoren standardmÃ¤ÃŸig %<noexcept%>in C++11 ruft dieses %<throw%> %<terminate%> auf, da Destruktoren standardmÃ¤ÃŸig %<noexcept%> sindin C++20 ruft dieser Vergleich die aktuelle Funktion rekursiv mit vertauschten Argumenten aufin C++98 ist %<template%> (zum eindeutig machen) nur innerhalb von Templates erlaubt%q+D kann in C++98 nicht static sein, da es ein Union-Element istin C++98 muss %qD mit Konstruktor initialisiert werden, nicht mit %<{...}%>in einem Aufruf von %qD, die mit Attribut %qs hier deklariert wurdein einem Aufruf von %qT, die mit Attribut %qs deklariert wurdein einem Aufruf der hier deklarierten Allokationsfunktion %qDin einem Aufruf der eingebauten Allokationsfunktion %qDin einem Aufruf der eingebauten Funktion %qDin einem Aufruf der Funktion %qDin einem Aufruf der Funktion %qD, die als %qs deklariert istin einem Aufruf der Funktion %qD, die mit Attribut %qs deklariert wurdein einem Aufruf der nicht-statischen Elementfunktion %qDin einem Aufruf mit Typ %qTin einem Aufruf mit Typ %qT und Attribut %qsin Argument fÃ¼r unÃ¤res !in der Basisklasse von %qTInterner Fehler: in basic block %d:im Aufruf von %qD, hier deklariertin Deklaration %q+Din Definition des Makros %qsbei Substitution des Makros %qsin gfc_simplify_acos(): Bad typein gfc_simplify_acosh(): Bad typein gfc_simplify_asin(): Bad typein gfc_simplify_asinh(): Bad typein gfc_simplify_atan(): Bad typein gfc_simplify_atanh(): Bad typein gfc_simplify_cos(): Bad typein gfc_simplify_exp(): Bad typein gfc_simplify_sin(): Bad typein Initialisierung der Variable %qD fÃ¼r strukturierte Bindungbei Ãœbergabe des Arguments %P von %qDin Anforderungen bei Anforderungen mit in Templateargument fÃ¼r Typ %qTin der Definition von %q#Tin diesem AusdruckInitialisierung innerhalb der Klasse des statischen Datenelements %q#D mit unvollstÃ¤ndigem TypInitialisierung innerhalb der Klasse des statischen Datenelements %q#D mit nicht eingebautem TypZugriff auf nicht zugreifbare Plugin-Datei %s (aus kurzem Plugin-Namen %s erzeugt) nicht mÃ¶glich: %munpassender Akkumulator fÃ¼r %qsbinden Sie %qs ein oder stellen Sie eine Deklaration von %qD bereitbinden Sie %qs ein oder stellen Sie eine Deklaration von %qE bereit%<include %s%> wurde textuell verarbeitet%<include %s%> wurde Ã¼bersetzt zu Â»importÂ«Eingehende Kantenzahl passt nicht zur Anzahl der PHI-Argumenteinkompatible %qs-Klausel bei Anwendung von %qs auf %qD, die bereits mit einer OpenACC-Â»routineÂ«-Direktive gekennzeichnet wurdeInkompatible Adressraumkennzeichen %qs und %qsinkompatible Datenklausel mit Reduktion an %qE; wird zu %<present_or_copy%> befÃ¶rdertunvertrÃ¤glicher Gleitkomma- / Vektorregisteroperand fÃ¼r Â»%%%cÂ«UnvertrÃ¤gliche implizite Deklaration der eingebauten Funktion %qDUnvertrÃ¤gliche implizite Deklaration der Funktion %qDunvertrÃ¤glicher Operand fÃ¼r Â»%%%cÂ«die Optionen %<-mstack-protector-guard=global%> und %<-mstack-protector-guard-offset=%s%> sind unvertrÃ¤glichunvertrÃ¤glicher Registeroperand fÃ¼r Â»%%%cÂ«Inkompatibler Typ fÃ¼r Argument %d von %qEinkompatible Typen fÃ¼r AbbildungsindexInkompatibler Typ fÃ¼r Methode %s%s%sInkompatibler Typ fÃ¼r Methode %s%s%s (%s)inkompatible Typen fÃ¼r EmpfÃ¤ngerinkompatibler Typ in binÃ¤rem Ausdruckinkompatible Typen in %<PHI%>-Argument %uunvertrÃ¤gliche Typen in Zuweisung von %qT an %qTinkompatible Typen in binÃ¤rem Ausdruckinkompatible Typen in Â»sendÂ«unvertrÃ¤gliche Typen bei Zuweisung an Typ %qT von Typ %qTinkompatible Typen bei Initialisierung von Typ %qT mit Typ %qTunvertrÃ¤gliche Typen bei RÃ¼ckgabe von Typ %qT, aber %qT wurde erwartetunvertrÃ¤gliche Vektortypen in bedingtem Ausdruck: %qT, %qT und %qTInterner Fehler: incomplete application of insnunvollstÃ¤ndige Implementierung der Kategorie %qEunvollstÃ¤ndige Implementierung der Klasse %qEunvollstÃ¤ndiger Typ %qT hat kein Element %qDunvollstÃ¤ndiger Typ %qT in geschachtelter Namensangabe verwendetinkonsistentes %<ifunc%>-Attributinkonsistente Attribute fÃ¼r den Zustand %qsinkonsistent wegen %qsunvereinbare Anfang-/Ende-Typen in bereichsbasierter %<for%>-Anweisung: %qT und %qTinkonsistente GroÃŸschreibung im FormatwidersprÃ¼chliche Herleitung fÃ¼r %qT: %qT und dann %qTwidersprÃ¼chliche Herleitung fÃ¼r automatischen RÃ¼ckgabetyp: %qT und dann %qTinkonsistente importierte Makrodefinition %qEwidersprÃ¼chliche Spezifikation von Instanzvariableinkonsistente Anzahl von Argumenten, die vom Stack entfernt wurdeninkonsistente Operandenbedingungen in einem %<asm%>widersprÃ¼chliche Typen %qT und %qT fÃ¼r Lambda-RÃ¼ckgabetypen hergeleitetwidersprÃ¼chliche benutzerdefinierte literale Suffixe %qD und %qD in ZeichenkettenliteralFalscher Vergleichsmodusfalscher Eintrag in %<label_to_block_map%>Falsches Format der Skalierung; 1/1 wird verwendet
  Falscher Befehl:Falsche Anzahl der Argumente fÃ¼r Funktion %qEfalsche Anzahl der Vektor-%qs-Elementefalsche Eigenschaft %qs des %qs-SelektorsFalscher Rundungsoperandincorrect setting of landing pad numberincorrect sharing of tree nodesungÃ¼ltiger Typ der Vektor-%qs-Elementefalscher Typ der Elemente eines Vektorkonstruktorsfalsch geschachtelter OpenACC-SchleifenparallelismusInkrementausdruck verweist auf Schleifenvariable %qDErhÃ¶hung ist weder konstant 1 noch konstant -1 fÃ¼r die %<!=%>-BedingungInkrementieren eines booleschen AusdrucksErhÃ¶hung des konstanten Feldes %qDSchrittweite von AufzÃ¤hlungswerten (enum) ist in C++ ungÃ¼ltigErhÃ¶hung der Funktion %qDErhÃ¶hung des Elements %qD in schreibgeschÃ¼tztem ObjektInkrementieren eines Zeigers auf unvollstÃ¤ndigen Typ %qTErhÃ¶hung der schreibgeschÃ¼tzten Speicherstelle %qEErhÃ¶hung des schreibgeschÃ¼tzten Elementes %qDErhÃ¶hung des schreibgeschÃ¼tzten benannten RÃ¼ckgabewertes %qDErhÃ¶hung des schreibgeschÃ¼tzten Parameters %qDErhÃ¶hung der schreibgeschÃ¼tzten Referenz %qDErhÃ¶hung der schreibgeschÃ¼tzten Variable %qDInkrement oder Dekrement eines nichtnumerischen TypserhÃ¶hter AufzÃ¤hlungswert ist zu groÃŸ fÃ¼r %<long%>erhÃ¶hter AufzÃ¤hlungswert ist zu groÃŸ fÃ¼r %<unsigned long%>Index %E markiert einen Offset grÃ¶ÃŸer als die GrÃ¶ÃŸe von %qTIndex in Dimension %d ist auÃŸerhalb der Grenzen bei %LIndexwert statt Feldname in Union-InitialisierungIndexwert ist auÃŸerhalb der GrenzenInterner Fehler: indirect call count does not match BB countindirekter Aufruf in Funktion, das wird von eBPF nicht unterstÃ¼tztindirekter Aufruf in der Folge der spekulativen Aufrufe hat kein Spekulationsflagindirekte Funktion %q+D kann nicht als %qE deklariert werdenindirekte Funktion %q+D kann nicht als Â»schwachÂ« deklariert werdenIndirekter Funktionsaufruf mit noch unbekanntem Aufruferder indirekte Import %qs ist noch nicht geladenindirekte SprÃ¼nge sind auf dieser Zielmaschine nicht verfÃ¼gbarindirekter Nicht-%<strub%>-Aufruf im %<strub%>-Kontext %qDIndirektion greift nicht auf Objekt unvollstÃ¤ndigen Typs %qT in ErhÃ¶hungsausdruck zuIndirektion greift nicht auf Objekt unvollstÃ¤ndigen Typs %qT in linkem Operanden des Kommaoperators zuIndirektion greift nicht auf Objekt unvollstÃ¤ndigen Typs %qT in rechtem Operanden des Kommaoperators zuIndirektion greift nicht auf Objekt unvollstÃ¤ndigen Typs %qT in zweitem Operanden des bedingten Ausdrucks zuIndirektion greift nicht auf Objekt unvollstÃ¤ndigen Typs %qT in Anweisung zuIndirektion greift nicht auf Objekt unvollstÃ¤ndigen Typs %qT in drittem Operanden des bedingten Ausdrucks zuIndirektion greift nicht auf Objekt des nicht trivial kopierbaren Typs %qT in ErhÃ¶hungsausdruck zuIndirektion greift nicht auf Objekt des nicht trivial kopierbaren Typs %qT im linken Operanden des Kommaoperators zuIndirektion greift nicht auf Objekt des nicht trivial kopierbaren Typs %qT im rechten Operanden des Kommaoperators zuIndirektion greift nicht auf Objekt des nicht trivial kopierbaren Typs %qT im zweiten Operanden des bedingten Ausdrucks zuIndirektion greift nicht auf Objekt des nicht trivial kopierbaren Typs %qT in Anweisung zuIndirektion greift nicht auf Objekt des nicht trivial kopierbaren Typs %qT im dritten Operanden des bedingten Ausdrucks zuerschlossener skalarer Typ %qT muss ein Ganzzahl- oder Gleitkommatyp derselben GrÃ¶ÃŸe wie %qT seinunendliche Rekursion erkanntNutzer informieren, welche Parameter per Referenz Ã¼bergeben werdengeerbter Konstruktor %qD ist nicht %<constexpr%>hier geerbterbende Konstruktoren nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarinit-Funktion im Objekt %s gefundenÂ»init-statement in AuswahlanweisungenÂ« ist nur mit %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbarinit_arglist(): too many argumentsInitialisierung streicht Qualifizierer %qv von Zeiger-ZieltypInitialisierung von anderem Objective-C-TypInitialisierung von Zeiger auf nicht enthaltenen AdressraumLinke-Initialisierung kÃ¶nnte Kandidat fÃ¼r Formatattribut seinInitialisierung erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger %q#vInitialisierung von %e von inkompatiblem Zeigertyp %eInitialisierung von %e von Zeiger auf %qD mit inkompatiblem Typ %eInitialisierung eines %qT aus %qT wandelt einen Zeiger in eine Zahl um, ohne explizite TypkonvertierungInitialisierung von %qT von %qT wandelt eine Zahl in einen Zeiger um, ohne explizite TypkonvertierungInitialisierung von %qT von Zeigertyp %qT mit inkompatibler Speicherreihenfolge fÃ¼r SkalareInitialisierung eines flexiblen Array-ElementsInitialisierung der allgemeinen Blockvariable %qs in DATA-Anweisung bei %CInitialisierung eines flexiblen Array-Elements in geschachteltem KontextInitialisierung des new-Ausdrucks fÃ¼r Typ %<auto%> erfordert genau ein ElementInitialisierung eines nicht-konstanten Referenztyps %q#T von R-Wert des Typs %qTInitialisierung des %<volatile%>-Referenztyps %q#T von R-Wert des Typs %qTInitialisierungen fÃ¼r mehrere Elemente von %qTinitialisiertes Feld Ã¼berschriebeninitialisiertes Feld mit Seiteneffekten Ã¼berschriebendas initialisierte Element %q+D wurde hier deklariertinitialisierte Variable %q+D ist als Â»dllimportÂ« markiertInitialisierungselement ist kein konstanter AusdruckInitialisierungs-Element ist zur Lade-Zeit nicht berechenbarInitialisierungselement ist nicht konstantInitialisierung endet vorzeitigInitialisierungsausdruck verweist auf Iterationsvariable %qDInitialisierung gibt nicht die GrÃ¶ÃŸe von %q+D anInitialisierung gibt nicht die GrÃ¶ÃŸe von %qD anInitialisierung gibt nicht die GrÃ¶ÃŸe von %qT anInitialisierer fÃ¼r %<_BitInt(%d)%>-Wert ist keine GanzzahlkonstanteInitialisierung fÃ¼r %<decltype(auto) %D%> hat Funktionstyp; %<()%> vergessen?Initialisierer fÃ¼r %q#D expandiert zu einer leeren AusdruckslisteInitialisierung fÃ¼r %q#D ist ungÃ¼ltigInitialisierung fÃ¼r %qT muss geklammert seinInitialisierung eines flexiblen Arrayelements %q#DInitialisierung fÃ¼r Gleitkommawert ist keine GleitkommakonstanteInitialisierung fÃ¼r Ganzzahl-/Gleitkommazahlwert ist zu kompliziertInitialisierung in bereichsbasierter %<for%>-SchleifeInitialisierung ungÃ¼ltig fÃ¼r statisches Element mit KonstruktorInitialisierung fÃ¼r Funktion bereitgestelltInitialisierung fÃ¼r Â»friendÂ«-Funktion %qD angegebenInitialisierung fÃ¼r nicht-virtuelle Methode %q+D angegebenInitialisierung fÃ¼r statische Element-Funktion %qD angegebenInitialisierungs-Zeichenkette fÃ¼r %qT ist zu langInitialisierungs-Zeichenkette fÃ¼r Array von %qT ist zu lang (%wu Zeichen passen nicht in %wu verfÃ¼gbare)Initialisierungs-Zeichenkette fÃ¼r Array von %qT ist zu lang fÃ¼r C++ (%wu Zeichen passen nicht in %wu verfÃ¼gbare)Initialisierer-Zeichenkette fÃ¼r Array von %qT schneidet NUL-Terminator ab, aber dem Ziel fehlt das %qs-Attribut (%wu Zeichen passen nicht in %wu verfÃ¼gbare)dadurch, dass %qD mittels %qE initialisiert wird, verlÃ¤ngert sich die Lebenszeit des zugrundeliegenden Arrays nichtdie Initialisierung von %qD erfordert einen Ausdruck fÃ¼r den Memberzugriff als linken Operanden der Zuweisungdas Initialisieren von %qH mit %qI in einem umgewandelten konstanten Ausdruck bindet nicht direktdas Initialisieren einer Basisklasse vom Typ %qT fÃ¼hrt zu ObjektslicingArgument %P von %qD wird initialisierteingegebener Klassenname %qD als Template-Templateargument verwendetInline-Assembler ist kein konstanter Ausdruckinline clone count is not compatibleInterner Fehler: inline clone in same comdat group listInterner Fehler: inline clone is forced to outputInterner Fehler: inline clone with address takeninline-Deklaration von %qD folgt Deklaration mit Attribut %<noinline%>Â»inlineÂ«-Funktion %q+D ist als Â»dllimportÂ« deklariert: Attribut wird ignoriertInline-Funktion %q+D deklariert, aber nirgendwo definiertÂ»inlineÂ«-Funktion %q+D als Â»schwachÂ« deklariertder inline-Funktion %q+D wurde das Attribut %qs gegebender inline-Funktion %qD wurde das Attribut %qs gegebeninline-Funktion %qD verwendet, aber nirgendwo definiertein %<inline%>-Namensraum muss bei der ersten Definition angegeben werdenÂ»inlineÂ«-NamensrÃ¤ume nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarÂ»inlineÂ«-Variablen sind nur mit %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbarInterner Fehler: inlined_to pointer is set but no predecessors foundInterner Fehler: inlined_to pointer is wrongInterner Fehler: inlined_to pointer refers to itselfInterner Fehler: inlined_to pointer set for noninline callersInlining beim Aufruf von %q+F mit %<always_inline%> fehlgeschlagen: %sÂ»inlineÂ« beim Aufruf von %q+F gescheitert: %sinnere Schleife verwendet denselben OpenACC-Parallelismus wie enthaltende Schleifeinnere Schleifen mÃ¼ssen in %<#pragma acc loop%> perfekt geschachtelt seininnere Schleifen mÃ¼ssen in %<#pragma omp tile%> perfekt geschachtelt seininnere Schleifen mÃ¼ssen mit der %<ordered%>-Klausel perfekt geschachtelt seininnere Schleifen mÃ¼ssen mit der %<reduction%>-%<inscan%>-Klausel perfekt verschachtelt seininnere Schleifen mÃ¼ssen mit der %<tile%>-Klausel perfekt geschachtelt seinEingabedatei %qs ist dieselbe wie die AusgabedateiEinschrÃ¤nkung fÃ¼r Eingabeoperanden enthÃ¤lt %qcEingabeoperand auÃŸerhalb einer Funktion ist nicht konstantPlugin aktivieren, das Laufzeitfehler bereits zur Compilezeit erkenntInterner Fehler: insert_bbt(): Duplicate key foundEinschub auÃŸerhalb des gÃ¼ltigen Bereichs in %qsinnerhalb eines anderen AufrufsInterner Fehler: insn %d basic block pointer is %d, should be %dInterner Fehler: insn %d in footer of bb %d has non-NULL basic blockInterner Fehler: insn %d in header of bb %d has non-NULL basic blockInterner Fehler: insn %d is in multiple basic blocks (%d and %d)Interner Fehler: insn %d outside of basic blocks has non-NULL bb fieldBefehlsadressen nicht freigegebenInterner Fehler: insn addresses not set after shorten branchesBefehl enthÃ¤lt eine ungÃ¼ltige Adresse!Befehl erfÃ¼llt nicht seine Bedingungen:Befehl auÃŸerhalb eines Basis-BlockesBefehl mit UID %i nicht gefunden fÃ¼r Operand %i (Â»%sÂ«) von Befehl %iBefehl mit UID %i nicht gefunden fÃ¼r Operand %i von Befehl %iinstalliere: %s%s
  Installationsfehler, %<crtoffloadtable%s.o%> kann nicht gefunden werdenin Klassenmethode wird auf Instanzvariable %qE zugegriffenInstanzvariable %qE ist Â»%sÂ«; dies wird zukÃ¼nftig ein schwerer Fehler seinInstanzvariable %qE ist als Â»%sÂ« deklariertInstanzvariable %qE ist als Â»privateÂ« deklariertInstanzvariable %qs hat unbekannte GrÃ¶ÃŸeInstanzvariable %qs ist als Â»privateÂ« deklariertInstanzvariable %qs verwendet flexibles ArrayelementZuweisung der Instanzvariable wurde abgefangenInstanziierung eines fehlerhaften Templatesdie Instanziierung macht die TU-lokale EntitÃ¤t %qD sichtbarBefehl wird niemals ausgefÃ¼hrtVorausladen von Befehlen ist aktiv im 64-Bit-Modus mit RIP-relativer Adressierung und der Option %<-mprefetchi%>; sonst bleiben sie NOPsBefehlsplanung wird von dieser Zielmaschine nicht unterstÃ¼tztBefehlssatz %qs kann Standard-ABI %qs nicht implementieren, stattdessen wird %qs verwendetunzureichende Informationen fÃ¼r Typbestimmung aus Kontextunzureichende Partitionierung verfÃ¼gbar, um die Elementschleife zu parallelisierenunzureichende Partitionierung verfÃ¼gbar, um Schleife zu parallelisierenunzureichende Partitionierung verfÃ¼gbar, um die Kachelschleife zu parallelisierenGanzzahlige Argumente fÃ¼r SYSTEM_CLOCK bei %L mit Parametern unterschiedlicher ArtGanzzahlkonstante ist zu groÃŸ fÃ¼r %<_BitInt(%d)%>-TypGanzzahlkonstante ist zu groÃŸ fÃ¼r %<unsigned _BitInt(%d)%>-TypGanzzahlkonstante ist zu groÃŸ fÃ¼r %<unsigned long%>-TypGanzzahldivision durch NullGanzzahlliteral Ã¼berschreitet Wertebereich des Typs %qTGanzzahlÃ¼berlauf in ArraygrÃ¶ÃŸeGanzzahlÃ¼berlauf in Ausdruck %qE des Typs %qT ergibt %qEGanzzahlÃ¼berlauf in Ausdruck des Typs %qT ergibt %qEGanzzahl-Suffix %qs durch Implementierung Ã¼berdecktGanzzahlausdruck %qE ist nicht konstantGenauigkeit des ganzzahligen Ergebnistypen passt nicht zur FeldgrÃ¶ÃŸe von %qsdie Schnittstelle %qE hat keine gÃ¼ltige Form einer konstanten ZeichenketteSchnittstellenpartition wird nicht exportiertOffset %wi des zwischenzeitlichen Arrays ist auÃŸerhalb der Arraygrenzen von %qTinternes %<strub%> unterstÃ¼tzt keine erzwungenen Labelsinterner Aufrufinterne Compiler-Debug-Informationen, Liste der Quadrupel wegschreibeninterner Compiler-FehlerInterner Compiler-Fehler. Falsche Adresse:Interner Compiler-Fehler. Falsche Verschiebung:Interner Compiler-Fehler. Unbekannter Modus:interner Compiler-Fehler: Interner Compilerfehler: Fehlerbehandlungsroutinen doppelt betreten.
! internes Konsistenzprobleminterner Fehler: %<cris_side_effect_mode_ok%> mit falschen Operandeninterner Fehler: falsches Register: %dinternal error: not expecting operand1 to be a constant setInterne Prozedur %qs bei %L steht in Konflikt mit DUMMY-Argumentinterne Einheit in WRITEdie Attribute %<interrupt%> und %<naked%> sind nicht kompatibelInterrupthandler kÃ¶nnen keine MIPS16-Funktionen seinInterrupthandler kÃ¶nnen keine Argumente habenInterrupt-Service-Routine darf nur ein Zeiger- und ein optionales Ganzzahl-Argument habenInterrupt-Dienst-Routinen kÃ¶nnen nicht direkt aufgerufen werdenInterrupt-Service-Routine muss den RÃ¼ckgabetyp %<void%> habenin Interrupt-Service-Routinen sollte das zweite Argument vom Typ %qs seinin Interrupt-Service-Routinen sollte das erste Argument ein Zeiger seinInterruptvektor fÃ¼r %qE-Attribut ist nicht %<vector=(sw0|sw1|hw0|hw1|hw2|hw3|hw4|hw5)%>dazwischenliegender Code darf keine OpenMP-Direktiven enthaltenintrinsische Funktion %qE muss direkt aufgerufen werdenintrinsischer Registerindex ist auÃŸerhalb des gÃ¼ltigen Bereichsinnere Variable, die keine Prozedur istungÃ¼ltiger %%-CodeungÃ¼ltiger %%A-OperandungÃ¼ltiger %%A-WertungÃ¼ltiger %%B-OperandungÃ¼ltiger %%C-OperandungÃ¼ltiger %%C-WertungÃ¼ltiger %%D-OperandungÃ¼ltiger %%D-WertungÃ¼ltiger %%E-WertungÃ¼ltiger %%F-WertungÃ¼ltiger Modus %%GungÃ¼ltiger %%G-WertungÃ¼ltiger %%H-WertungÃ¼ltiger %%J-CodeungÃ¼ltiger %%J-WertungÃ¼ltiger %%K-WertungÃ¼ltiger %%L-WertungÃ¼ltiger %%M-WertungÃ¼ltiger %%N-WertungÃ¼ltiger %%O-WertungÃ¼ltiger %%P-OperandungÃ¼ltiger %%P-WertungÃ¼ltiger %%R-WertungÃ¼ltiger %%T-WertungÃ¼ltiger %%U-WertungÃ¼ltiger %%V-WertungÃ¼ltiger %%Y-OperandungÃ¼ltiger %%d-WertungÃ¼ltiger %%e-WertungÃ¼ltiger %%f-OperandungÃ¼ltiger %%f-WertungÃ¼ltiger %%h-WertungÃ¼ltiger %%j-CodeungÃ¼ltiger %%j-WertungÃ¼ltiger %%k-WertungÃ¼ltiger %%m-WertungÃ¼ltiger %%p-WertungÃ¼ltiger %%q-WertungÃ¼ltiger %%r-WertungÃ¼ltiger %%s-OperandungÃ¼ltiger %%s-WertungÃ¼ltiger %%t-WertungÃ¼ltiger %%t/%%b-WertungÃ¼ltiger %%u-WertungÃ¼ltiger %%v-WertungÃ¼ltiger %%x-WertungÃ¼ltiger %%xn-CodeungÃ¼ltiger %%y-Wert, bitte Â»ZÂ«-Bedingung probierenungÃ¼ltiger %%z-WertungÃ¼ltiges %<#pragma %s%>ungÃ¼ltiges %<CASE_CHAIN%>ungÃ¼ltiger %<CPU_TYPE%>-Wert %qs gelesen aus %<devices.csv%> fÃ¼r %qsungÃ¼ltiger %<MPY_TYPE%>-Wert %qs gelesen aus %<devices.csv%> fÃ¼r %qsungÃ¼ltiges %<PHI%>-ArgumentungÃ¼ltiges %<PHI%>-ErgebnisungÃ¼ltiges %<const_cast%> von Typ %qT in Typ %qTungÃ¼ltiges %<const_cast%> eines R-Wertes des Typs %qT in Typ %qTungÃ¼ltiger Basistyp fÃ¼r %<enum%>ungÃ¼ltiges %<static_cast%> von Typ %qT in Typ %qTungÃ¼ltiger Wert fÃ¼r %<sve_width%>: %dungÃ¼ltiger %<task%>-Reduktionsmodifizierer in Konstrukt kombiniert mit %<simd%> oder %<loop%>ungÃ¼ltiger %<task%>-Reduktionsmodifizierer in Konstrukt, das nicht mit %<parallel%>, %<for%> oder %<sections%> kombiniert istungÃ¼ltiger %<task%>-Reduktionsmodifizierer bei Konstrukt auÃŸer %<parallel%>, %qs oder %<sections%>ungÃ¼ltiger %<task%>-Reduktionsmodifizierer bei Konstrukt auÃŸer %<parallel%>, %qs, %<sections%> oder %<scope%>ungÃ¼ltiger Offset-Operator %qsungÃ¼ltiges %qs-GrÃ¶ÃŸenargument beim LadenungÃ¼ltiges Â»asmÂ«: UngÃ¼ltige (Zeiger-)Operanden %qsungÃ¼ltiges 3-Index-Slice eines Objekts, das kein Slice istungÃ¼ltige 3-Index-Scheibe einer ZeichenketteungÃ¼ltiges IACC-ArgumentungÃ¼ltige JSON-SyntaxungÃ¼ltiges JSON-Token: %sungÃ¼ltige LHS in GIMPLE-AufrufUngÃ¼ltiger Objective-C++-SelektornameungÃ¼ltige OpenACC-Klausel im Datei-GÃ¼ltigkeitsbereichungÃ¼ltiger Name einer OpenMP-Direktive im Argument der %qs-Klausel: deklarative, informative und Meta-Direktiven sind nicht erlaubtungÃ¼ltiger nicht-rechteckiger OpenMP-Schleifenschritt; %<(%E - %E) * %E%> ist kein Vielfaches von Schleife %d Schritt %qEungÃ¼ltige rechte Seite fÃ¼r GIMPLE-Speicherung: %qsungÃ¼ltige RVV-VektorgrÃ¶ÃŸe %qd, erwartete GrÃ¶ÃŸe ist %qd basierend auf LMUL des Typs und %qsungÃ¼ltiges UNSPEC als OperandungÃ¼ltiges UNSPEC als Operand: %dInterner Fehler: invalid _LiteralungÃ¼ltiger abstrakter Parametertyp %qTungÃ¼ltiger abstrakter RÃ¼ckgabetyp %qTungÃ¼ltiger abstrakter RÃ¼ckgabetyp fÃ¼r Funktion %q+#DungÃ¼ltiger abstrakter RÃ¼ckgabetyp fÃ¼r Elementfunktion %q+#DungÃ¼ltiger abstrakter Typ %qT fÃ¼r %qEungÃ¼ltiger abstrakter Typ fÃ¼r %q+DungÃ¼ltiger Zugriff auf nicht-statisches Datenelement %qD in virtueller Basis des NULL-ObjektesungÃ¼ltige AdresseungÃ¼ltige Adresse fÃ¼r Ausgabemodifizierer Â»OÂ«ungÃ¼ltige Adresse fÃ¼r Ausgabemodifizierer Â»RÂ«ungÃ¼ltige Adresse fÃ¼r Ausgabemodifizierer Â»SÂ«ungÃ¼ltige Adresse in OperandungÃ¼ltiger AdressierungsmodusungÃ¼ltiger Adressoperand in %qsungÃ¼ltiger AdressierungsmodusungÃ¼ltige Ausrichtung fÃ¼r %<#pragma align%> - ignoriertUngÃ¼ltiger Ausrichtungswert fÃ¼r %<__builtin_arc_aligned%>ungÃ¼ltige Anwendung von %<__alignof%> auf ein BitfeldungÃ¼ltige Anwendung von %<sizeof%> auf ein BitfeldUngÃ¼ltige Anwendung von %<sizeof%> auf einen FunktionstypenungÃ¼ltige Anwendung von %qs auf ElementfunktionUngÃ¼ltige Anwendung von %qs auf einen void-TypenUngÃ¼ltige Anwendung von %qs auf Arraytyp %qT mit unvollstÃ¤ndigem ElementtypUngÃ¼ltige Anwendung von %qs auf unvollstÃ¤ndigen Typen %qTUngÃ¼ltige Architektur fÃ¼r Zielattribut oder Pragma %qsUngÃ¼ltiges Argument %d fÃ¼r eingebaute Funktion %qFungÃ¼ltiges Argument %qs fÃ¼r %<-mharden-sls=%>ungÃ¼ltiges Argument %qs fÃ¼r %qsungÃ¼ltiges Argument %qs fÃ¼r %<-fsearch-include-path%>ungÃ¼ltiges Argument %qs fÃ¼r %qsungÃ¼ltiges Argument Â»%sÂ« fÃ¼r Â»--prime-paths-linesÂ«. GÃ¼ltige Argumente sind: Â»coveredÂ«, Â»uncoveredÂ«, Â»bothÂ«
  ungÃ¼ltiges Argument Â»%sÂ« fÃ¼r Â»--prime-paths-sourceÂ«. GÃ¼ltige Argumente sind: Â»coveredÂ«, Â»uncoveredÂ«, Â»bothÂ«
! ungÃ¼ltiges Argument fÃ¼r %<-mharden-sls=%>ungÃ¼ltiges Argument in Option %qsungÃ¼ltiges Argument fÃ¼r Attribut %qEungÃ¼ltiges Argument fÃ¼r Attribut %qsUngÃ¼ltiges Argument von SQRT bei %LungÃ¼ltiges Argument fÃ¼r %qDungÃ¼ltiges Argument fÃ¼r eingebaute FunktionungÃ¼ltiges Argument fÃ¼r eingebaute Funktion Â»%sÂ«ungÃ¼ltiges Argument fÃ¼r GIMPLE-AufrufungÃ¼ltige ArgumenteungÃ¼ltige Argumente fÃ¼r Option %<-falign-%s%>: %qsungÃ¼ltige Argumente fÃ¼r %<-fpatchable-function-entry%>UngÃ¼ltige ArrayzuweisungInterner Fehler: invalid base %qE for SSA nameungÃ¼ltige Spezifizierung der BasisklasseInterner Fehler: invalid block indexungÃ¼ltiger Zweig zu/von strukturiertem %s-BlockungÃ¼ltige eingebaute Funktion bei der ExpansionungÃ¼ltiger Aufruf einer Nicht-FunktionungÃ¼ltiger Schalter Â»calls_comdat_localÂ«ungÃ¼ltige Â»caseÂ«-Marke in switch-AnweisungungÃ¼ltiger Â»caseÂ«-Bereich in switch-AnweisungungÃ¼ltige Umwandlung von Typ %qT in Typ %qTungÃ¼ltige Typumwandlung eines prvalue-Ausdrucks des Typs %qT in Typ %qTungÃ¼ltige Umwandlung in abstrakte Klasse %qTungÃ¼ltige Umwandlung in Funktionstyp %qTungÃ¼ltige cc-AusgabebeschrÃ¤nkung: %qsungÃ¼ltiger Klassenname in Deklaration von %qDungÃ¼ltige Clique in %qsungÃ¼ltige Kombination mehrerer Typ-Spezifiziererinvalid comparison code in gimple condungÃ¼ltiger Vergleich eines generierten ArraysungÃ¼ltiger Vergleich mit einer generierten StrukturungÃ¼ltiger Vergleich von nil mit nilungÃ¼ltiger Vergleich eines nicht-vergleichbaren ArraysungÃ¼ltiger Vergleich einer nicht-vergleichbaren StrukturungÃ¼ltiger Vergleich eines nicht-vergleichbaren TypsungÃ¼ltiger Vergleich ungeordneter TypenungÃ¼ltiger Vergleichsoperator fÃ¼r Ausgabemodifizierer Â»EÂ«ungÃ¼ltiger const_double-OperandungÃ¼ltige KonstanteUngÃ¼ltige Konstante â€“ anderen Ausgabemodifizierer probierenungÃ¼ltige Konstante fÃ¼r Ausgabemodifizierer Â»%cÂ«ungÃ¼ltige Konstante in %<#pragma %s%>ungÃ¼ltige Konstante in %<#pragma pack%> - ignoriertungÃ¼ltiger konstanter Vektor fÃ¼r Ausgabemodifizierer Â»%cÂ«ungÃ¼ltiger beschrÃ¤nkter TypparameterungÃ¼ltige EinschrÃ¤nkungenungÃ¼ltige Bedingungen fÃ¼r OperandungÃ¼ltiger Konstruktor; wahrscheinlich war %<%T (const %T&)%> gemeintungÃ¼ltiges Steuerregister %d fÃ¼r mvtc; %<psw%> wird verwendetSteuerprÃ¤dikat ungÃ¼ltigungÃ¼ltige Umwandlung von %<__fpreg%>ungÃ¼ltige Umwandlung von %qH in %qIungÃ¼ltige Umwandlung von Typ %<_Float16%> ohne Option %<-msse2%>ungÃ¼ltige Umwandlung von Typ %<__bf16%> ohne Option %<-msse2%>ungÃ¼ltige Umwandlung von %<__vector_pair%>ungÃ¼ltige Umwandlung von Typ %<__vector_quad%>ungÃ¼ltige Umwandlung von Typ %<bfloat16_t%>ungÃ¼ltige Umwandlung von Typ %<mfloat8_t%>ungÃ¼ltige Umwandlung in GIMPLE-AufrufungÃ¼ltige Umwandlung in Â»returnÂ«-AnweisungungÃ¼ltige Umwandlung in %<__fpreg%>ungÃ¼ltige Umwandlung in Typ %<_Float16%> ohne Option %<-msse2%>ungÃ¼ltige Umwandlung in Typ %<__bf16%> ohne Option %<-msse2%>ungÃ¼ltige Umwandlung in %<__vector_pair%>ungÃ¼ltige Umwandlung in Typ %<__vector_quad%>ungÃ¼ltige Umwandlung in Typ %<bfloat16_t%>ungÃ¼ltige Umwandlung in Typ %<mfloat8_t%>ungÃ¼ltige Umwandlung in Typ %qT von Typ %qTungÃ¼ltiger kovarianter RÃ¼ckgabetyp fÃ¼r %q#DungÃ¼ltiger kovarianter RÃ¼ckgabetyp fÃ¼r %q+#DungÃ¼ltige CPU %qs fÃ¼r %s%qs%sungÃ¼ltige Deklaration von %<%T::%E%>ungÃ¼ltige Deklaration eines Elementtemplates in lokaler KlasseungÃ¼ltiger DeklaratorungÃ¼ltiges Standardargument fÃ¼r einen Template-TemplateparameterungÃ¼ltige %<default%>-Sprungmarke in switch-AnweisungungÃ¼ltige Definition des qualifizierten Typen %qTungÃ¼ltige AbhÃ¤ngigkeitsartungÃ¼ltige AbhÃ¤ngigkeitsart in omp %<ordered%> %<depend%>ungÃ¼ltige Â»dist_scheduleÂ«-ArtungÃ¼ltige Â»doacrossÂ«-ArtUngÃ¼ltiger Elementindex %qE fÃ¼r %<__builtin_shufflevector%>ungÃ¼ltiger Elementtyp fÃ¼r Attribut %qsungÃ¼ltige embedcfg: Â»FilesÂ«-Element ist keine ZeichenketteungÃ¼ltige embedcfg: Â»FilesÂ« ist kein JSON-ObjektungÃ¼ltige embedcfg: Â»PatternsÂ«-Element ist kein ArrayungÃ¼ltige embedcfg: Â»PatternsÂ« ist kein JSON-ObjektungÃ¼ltige embedcfg: doppeltes Â»PatternsÂ«-ElementungÃ¼ltige embedcfg: fehlendes Â»FilesÂ«ungÃ¼ltige embedcfg: Â»PatternsÂ« fehltungÃ¼ltige embedcfg: kein JSON-ObjektungÃ¼ltiges Encoding-PrÃ¤fix in Literal-OperatorungÃ¼ltiger Eintritt in strukturierten %s-BlockungÃ¼ltiger Austritt aus strukturiertem %s-BlockungÃ¼ltiger Ausgang von strukturiertem OpenMP-BlockungÃ¼ltige explizite SpezialisierungungÃ¼ltiger Ausdruck â€“ anderen Ausgabemodifizierer probierenungÃ¼ltiger Ausdruck als OperandungÃ¼ltiger Ausdruck fÃ¼r Min-L-WertungÃ¼ltiger Ausdruck fÃ¼r Ausgabemodifizierer Â»%cÂ«ungÃ¼ltiger Ausdruck fÃ¼r statische Array-Dimension: %sungÃ¼ltiger Ausdruckstyp fÃ¼r %<#pragma omp atomic%>ungÃ¼ltiges Fehler-Speichermodell %qs fÃ¼r %qDunbekannter Feature-Modifizierer %qs in %<-march=%s%>unbekannter Feature-Modifizierer %qs in %<-mcpu=%s%>ungÃ¼ltiger Featuremodifizierer %qs mit Wert %qs in Pragma oder Attribut %<target()%>ungÃ¼ltiger Featuremodifizierer %qs mit Wert %qs in Attribut %<target_version%>ungÃ¼ltiger Featuremodifizierer %qs mit Wert %qs in Pragma oder Attribut %<target()%>invalid fn spec attribute "%s"invalid fn spec attribute "%s" arg %iungÃ¼ltige Â»fnsummaryÂ« in LTO-DatenstromungÃ¼ltige Form von %<#pragma omp atomic compare%>ungÃ¼ltige Form von %<#pragma omp atomic%>ungÃ¼ltige Form von %<#pragma omp atomic compare%>ungÃ¼ltiges Format fÃ¼r %<sve_width%>ungÃ¼ltiges Format von %sUngÃ¼ltiges viertes Argument fÃ¼r %<__builtin_ia32_prefetch%>; es wird 0 verwendetungÃ¼ltige Gleitkomma-KonstanteungÃ¼ltige FPU fÃ¼r Zielattribut oder Pragma %qsungÃ¼ltige Funktion in GIMPLE-AufrufungÃ¼ltige Verwendung von festen Registern zwischen earlyclobber-Operand und EingabeoperandungÃ¼ltige Verwendung von festen Registern zwischen Ausgabeoperanden und dem zugehÃ¶rigen Constraint-OperandenungÃ¼ltige Verwendung von festen Registern zwischen AusgabeoperandenungÃ¼ltiger Headername %qsungÃ¼ltige HexzifferungÃ¼ltiger ID-Wert fÃ¼r Attribut Â»exceptionÂ«ungÃ¼ltiger ID-Wert fÃ¼r Attribut Â»interruptÂ«ungÃ¼ltiger ID-Wert fÃ¼r Interrupt-/Exception-AttributungÃ¼ltiger ID-Wert fÃ¼r Â»resetÂ«-AttributungÃ¼ltige Initialisierung innerhalb der Klasse des statischen Datenelements vom nicht eingebauten Typen %qTErhÃ¶hungsausdruck ungÃ¼ltigungÃ¼ltiger Anfangswert fÃ¼r Element %qEungÃ¼ltige Initialisierung einer nicht-konstanten Referenz des Typs %qH von rvalue des Typs %qIungÃ¼ltige Initialisierung einer Referenz des Typs %qH von Ausdruck des Typs %qIungÃ¼ltige InitialisierungungÃ¼ltige InitialisierungsklauselungÃ¼ltige Initialisierung fÃ¼r %q#DungÃ¼ltige Initialisierung fÃ¼r Arrayelement %q#DungÃ¼ltige Initialisierung fÃ¼r Elementfunktion %qDungÃ¼ltige Initialisierung fÃ¼r strukturierte BindungsdeklarationUngÃ¼ltiger Befehl:ungÃ¼ltiges Schleifenvariable in schneller AufzÃ¤hlungungÃ¼ltige Sprungfunktion in LTO-DatenstromUngÃ¼ltiger Marken in GIMPLE-BedingungungÃ¼ltige linke Seite einer ZuweisungungÃ¼ltige Zeile in AuflÃ¶sungsdateiungÃ¼ltige BindungsspezifikationungÃ¼ltiger Ort fÃ¼r %<pragma %s%>, ignoriertungÃ¼ltiger L-Wert in %<asm%>-Ausgabe %dungÃ¼ltige ZuordnungsartungÃ¼ltige MaskeungÃ¼ltiger Maskentyp in %qsungÃ¼ltige Elementtemplatedeklaration %qDungÃ¼ltiges Speichermodell %qs fÃ¼r %qDungÃ¼ltiges Speichermodell %wi fÃ¼r %qDungÃ¼ltiges Argument %d fÃ¼r Speichermodell von %qEungÃ¼ltiger Modulname %qsungÃ¼ltiger Name %qs fÃ¼r Pragma oder Attribut %<target("arch=")%>ungÃ¼ltiger Name %qs fÃ¼r Pragma oder Attribut %<target("cpu=")%>ungÃ¼ltiger Name %qs fÃ¼r Pragma oder Attribut %<target("tune=")%>ungÃ¼ltiger new-Ausdruck fÃ¼r abstrakte Klasse %qTungÃ¼ltige NMI-Funktion fÃ¼r Â»resetÂ«-AttributungÃ¼ltiges Templateargument ohne TypungÃ¼ltige Nicht-Vektor-Operanden fÃ¼r %qsungÃ¼ltige Anzahl in %<-mrgf-banked-regs=%s%>; gÃ¼ltige Werte sind 0, 4, 8, 16 und 32Falsche Anzahl der Argumente fÃ¼r Option %<-falign-%s%>: %qsInterner Fehler: invalid number of operands for insn %s, expected %d but got %d.
  ungÃ¼ltige offload-Tabelle in %sungÃ¼ltiger Offset-Operand in %qsungÃ¼ltiger OperandungÃ¼ltiger Code fÃ¼r Operand %%xnungÃ¼ltige OperandenadresseungÃ¼ltiger Operandencode Â»%cÂ«ungÃ¼ltiger Operand fÃ¼r Code %%NungÃ¼ltiger Operand fÃ¼r Code %%N oder %%SungÃ¼ltiger Operand fÃ¼r Code %%sungÃ¼ltiger Operand fÃ¼r Â»%%%cÂ«ungÃ¼ltiger Operand fÃ¼r Modifizierer Â»AÂ«ungÃ¼ltiger Operand fÃ¼r Modifizierer Â»DÂ«ungÃ¼ltiger Operand fÃ¼r Modifizierer Â»HÂ«ungÃ¼ltiger Operand fÃ¼r Modifizierer Â»OÂ«ungÃ¼ltiger Operand fÃ¼r Modifizierer Â»TÂ«ungÃ¼ltiger Operand fÃ¼r Modifizierer Â»bÂ«ungÃ¼ltiger Operand fÃ¼r Modifizierer Â»eÂ«ungÃ¼ltiger Operand fÃ¼r Modifizierer Â»mÂ«ungÃ¼ltiger Operand fÃ¼r Modifizierer Â»oÂ«ungÃ¼ltiger Operand fÃ¼r Modifizierer Â»pÂ«ungÃ¼ltiger Operand fÃ¼r Modifizierer Â»zÂ«ungÃ¼ltiger Operand fÃ¼r Code Â»%cÂ«ungÃ¼ltiger Operand in %qsungÃ¼ltiger Operand in Â»returnÂ«-AnweisungungÃ¼ltiger Operand in unÃ¤rer OperationungÃ¼ltiger Modifizierer-Buchstabe fÃ¼r OperandungÃ¼ltiger Operanden-AusgabecodeungÃ¼ltiges OperandenprÃ¤fixungÃ¼ltiger OperandenprÃ¤fix Â»%%%cÂ«ungÃ¼ltige OperandengrÃ¶ÃŸe fÃ¼r Operandencode Â»%cÂ«ungÃ¼ltige OperandengrÃ¶ÃŸe fÃ¼r Operandencode Â»OÂ«ungÃ¼ltige OperandengrÃ¶ÃŸe fÃ¼r Operandencode Â»zÂ«ungÃ¼ltiger Operand fÃ¼r %%H/%%L-CodeungÃ¼ltiger Operand fÃ¼r Code %%MungÃ¼ltiger Operand fÃ¼r Code %%NungÃ¼ltiger Operand fÃ¼r Code %%OungÃ¼ltiger Operand fÃ¼r %%RungÃ¼ltiger Operand fÃ¼r %%R-CodeungÃ¼ltiger Operand fÃ¼r %%SungÃ¼ltiger Operand fÃ¼r Code %%T/%%BungÃ¼ltiger Operand fÃ¼r %%U-CodeungÃ¼ltiger Operand fÃ¼r %%V-CodeungÃ¼ltiger Operand fÃ¼r Code %%ZungÃ¼ltiger Operand fÃ¼r Code %%pungÃ¼ltiger Operand fÃ¼r Code %%sungÃ¼ltiger Operand fÃ¼r Code %%zungÃ¼ltiger Operand fÃ¼r switch-AnweisungungÃ¼ltiger Operandentyp %qT fÃ¼r %qsungÃ¼ltiger Operandentyp mit Operandencode Â»%cÂ« verwendetungÃ¼ltige Operanden in binÃ¤rer OperationungÃ¼ltige Operanden in GIMPLE-VergleichungÃ¼ltige Operanden in ternÃ¤rer OperationungÃ¼ltige Operanden der Typen %qT und %qT fÃ¼r binÃ¤res %qOungÃ¼ltige Operanden fÃ¼r Code %%cungÃ¼ltiger Operand fÃ¼r %qsUngÃ¼ltige Operanden fÃ¼r binÃ¤res %s (%e und %e gefunden)Interner Fehler: invalid operationungÃ¼ltige Operation (%s)ungÃ¼ltige Operation auf %<__fpreg%>ungÃ¼ltiger Operator fÃ¼r %<#pragma omp atomic%>ungÃ¼ltige Reihenfolge in asm-Knoten %iungÃ¼ltige Parameterkombination fÃ¼r AltiVec-spezifisches intrinsisches %qsungÃ¼ltige Parameterkombination fÃ¼r intrinsisches %qsungÃ¼ltiger Parametertyp %qTungÃ¼ltige DurchlaufpositionierungsoperationUngÃ¼ltiger Zeigermodus %qsungÃ¼ltiger Zeiger auf Bitfeld %qDungÃ¼ltige Position oder GrÃ¶ÃŸe in %qsungÃ¼ltiger Positions- oder GrÃ¶ÃŸenoperand fÃ¼r %qsungÃ¼ltige Â»privateÂ«-Reduktion auf %qEungÃ¼ltige Â»proc_bindÂ«-ArtungÃ¼ltiger Prototyp fÃ¼r Â»%sÂ«ungÃ¼ltiges Zeichen %qc in BedingungungÃ¼ltiger Â»pure constÂ«-Status fÃ¼r FunktionungÃ¼ltige reine Spezifikation (nur %<= 0%> ist erlaubt)ungÃ¼ltige Qualifizierer fÃ¼r %<constexpr%>-ObjektungÃ¼ltige Qualifizierer fÃ¼r Feld eines %<constexpr%>-ObjektsungÃ¼ltige Qualifizierer an Nicht-Element-FunktionstypungÃ¼ltiger angegebener GÃ¼ltigkeitsbereich in Pseudodestruktor-NameungÃ¼ltiges Empfangen auf Nur-Sende-KanalungÃ¼ltiger EmpfÃ¤ngertyp %qsungÃ¼ltiger reduction-identifierungÃ¼ltige Referenz fÃ¼r Ausgabemodifizierer Â»JÂ«ungÃ¼ltiger Registername fÃ¼r %q+DungÃ¼ltige Registernummer fÃ¼r Modifizierer Â»NÂ«ungÃ¼ltiger regulÃ¤rer Ausdruck %qs in %qsungÃ¼ltige AdressverschiebungungÃ¼ltige AuflÃ¶sung in AuflÃ¶sungsdateiungÃ¼ltiger RÃ¼ckgabetyp %qT der %<constexpr%>-Funktion %q+DungÃ¼ltige gemeinsame rtl-Verwendung in Befehl gefundenungÃ¼ltige AblaufartungÃ¼ltiges zweites Argument fÃ¼r %<__builtin_ia32_prefetch%>; es wird 0 verwendetUngÃ¼ltiges zweites Argument fÃ¼r %<__builtin_prefetch%>; es wird 0 verwendetungÃ¼ltiges Â»sendÂ« auf Nur-Empfangs-KanalungÃ¼ltiger Setter, muss ein Argument habenungÃ¼ltiger SchiebeoperandungÃ¼ltige Scheibe einer MapInterner Fehler: invalid source block specificationungÃ¼ltige statische Kette in GIMPLE-AufrufungÃ¼ltige Speicherklasse fÃ¼r Funktion %qEungÃ¼ltiger Systemregistername %qsungÃ¼ltiger Systemregistername angegebenungÃ¼ltiger Wert %<%d%> fÃ¼r Ziel-memregsungÃ¼ltige Templatedeklaration von %qDungÃ¼ltiger Nicht-Typ-Parameter fÃ¼r TemplateungÃ¼ltige template-argument-listungÃ¼ltige Template-IDungÃ¼ltiges drittes ArgumentUngÃ¼ltiges drittes Argument fÃ¼r %<__builtin_ia32_prefetch%>; es wird 0 verwendetUngÃ¼ltiges drittes Argument fÃ¼r %<__builtin_prefetch%>; es wird 0 verwendetungÃ¼ltiger Typ %<void%> fÃ¼r %<new%>UngÃ¼ltiger Typ %qT als Initialisierung fÃ¼r einen Vektor des Typs %qTungÃ¼ltiger Typ %qT als %<friend%> deklariertungÃ¼ltiger Typ %qTungÃ¼ltiger Typ %qT fÃ¼r %<->%>ungÃ¼ltiger Typ %qT fÃ¼r %<->*%>ungÃ¼ltiger Typ %qT fÃ¼r ArrayindexungÃ¼ltiger Argumenttyp %qT fÃ¼r implizite UmwandlungungÃ¼ltiger Typ %qT fÃ¼r unÃ¤res %<*%>ungÃ¼ltiger Typ fÃ¼r %<asm%>-Schalter-AusgabeInterner Fehler: invalid type for _Literal with constructorungÃ¼ltiger Typ fÃ¼r cc-AusgabebeschrÃ¤nkungungÃ¼ltiger Typ fÃ¼r InstanzvariableungÃ¼ltiger Typ fÃ¼r Schleifenvariable %qEungÃ¼ltiger Typ fÃ¼r Â»makeÂ«-FunktionungÃ¼ltiger Typ fÃ¼r Parameter %d der %<constexpr%>-Funktion %q+#DungÃ¼ltiger Typ fÃ¼r EigenschaftInterner Fehler: invalid type of %<__MEM%> operandungÃ¼ltiger Typ fÃ¼r Argument %u der typgenerischen FunktionungÃ¼ltiger typgenerischer RÃ¼ckgabetyp fÃ¼r Argument %u von %<__builtin_tgmath%>ungÃ¼ltiger typgenerischer Typ fÃ¼r Argument %u von Argument %u von %<__builtin_tgmath%>ungÃ¼ltige Typen %<%T[%T]%> fÃ¼r FeldindexungÃ¼ltiger Typen fÃ¼r %qsungÃ¼ltige Typen in AdressraumumwandlungungÃ¼ltige Typen in Umwandlung zu GleitkommaungÃ¼ltige Typen in Umwandlung in GanzzahlungÃ¼ltige Typen Festkomma-UmwandlungungÃ¼ltige Typen in NOP-UmwandlungungÃ¼ltige Verwendung von %%d, %%x oder %%XungÃ¼ltige Verwendung von %<::%>ungÃ¼ltige Verwendung von %<__builtin_va_arg_pack ()%>ungÃ¼ltige Verwendung von %<__builtin_va_arg_pack_len ()%>ungÃ¼ltige Verwendung von %<auto%> in UmwandlungsoperatorungÃ¼ltige Verwendung von %<auto%> in Default-TemplateargumentungÃ¼ltige Verwendung von %<auto%> in AusnahmespezifikationungÃ¼ltige Verwendung von %<auto%> in TemplateargumentungÃ¼ltige Verwendung von %<const_cast%> mit Typ %qT, der ein Zeiger oder Referenz auf Funktionstyp istungÃ¼ltige Verwendung von %<const_cast%> mit Typ %qT, der weder Zeiger, Referenz, noch Zeiger auf ein Datenelement istungÃ¼ltige Verwendung von %<decltype(auto)%>ungÃ¼ltige Verwendung der %<extern%>-Variable %qD in %<#pragma acc declare%>ungÃ¼ltige Verwendung der %<global%>-Variable %qD in %<#pragma acc declare%>UngÃ¼ltige Verwendung von %<restrict%>ungÃ¼ltige Verwendung von %<this%>, nachdem es gÃ¼ltig warungÃ¼ltige Verwendung von %<this%> auf hÃ¶chster EbeneungÃ¼ltige Verwendung von %<this%>, bevor es gÃ¼ltig istungÃ¼ltige Verwendung von %<this%> in Nicht-Element-FunktionungÃ¼ltige Verwendung von %q#T mit flexiblem Arrayelement in %q#TungÃ¼ltige Verwendung von %q#T mit Array der GrÃ¶ÃŸe 0 in %q#DungÃ¼ltige Verwendung von %qDungÃ¼ltige Verwendung von %qD in Spezifizierung der BindungungÃ¼ltige Verwendung von %qE um Zeiger auf Elementfunktion zu erzeugenungÃ¼ltige Verwendung von %qTungÃ¼ltige Verwendung von Â»%%%cÂ«ungÃ¼ltige Verwendung des MMA-Operanden vom Typ %qs als Parameter einer FunktionungÃ¼ltige Verwendung des MMA-Typs %qs als RÃ¼ckgabetyp einer FunktionungÃ¼ltige Verwendung eines Zeigers auf einen unvollstÃ¤ndigen Typen in ZeigerarithmetikungÃ¼ltige Verwendung von Arrayindizierung bei Zeiger auf Elementfalsche Verwendung eines Arrays mit unbekannten GrenzenungÃ¼ltige Verwendung der asm-Schalter-AusgabeungÃ¼ltige Verwendung des Attributs %<fallthrough%>ungÃ¼ltige Verwendung von Attributen in leerer DeklarationungÃ¼ltige Verwendung von geschweift geklammerter InitialisierungslisteungÃ¼ltige Verwendung von %<concept-name%> %qDungÃ¼ltige Verwendung eines eingeschrÃ¤nkten %<auto%>-TypsungÃ¼ltige Verwendung des Konstruktors als TemplateungÃ¼ltige Verwendung der Vertragsstufe fÃ¼r explizite SemantikungÃ¼ltige Verwendung von cv-qualifiziertem Typ %qT in ParameterdeklarationungÃ¼ltige Verwendung des abhÃ¤ngigen Typen %qTungÃ¼ltige Verwendung des Destruktors %qD als TypungÃ¼ltige Verwendung des Destruktors %qE als Typfalsche Verwendung eines flexiblen ArrayelementsungÃ¼ltige Verwendung impliziter Umwandlung bei Zeiger auf Elementfalsche Verwendung des unvollstÃ¤ndigen Typs %q#Tfalsche Verwendung des unvollstÃ¤ndigen typedef %qTungÃ¼ltige Verwendung des Elements %qD (%<&%> vergessen?)ungÃ¼ltige Verwendung des Elementes %qD in %<pre%>-Vertrag eines KonstruktorsungÃ¼ltige Verwendung des Elementes %qD in %<post%>-Vertrag eines DestruktorsungÃ¼ltige Verwendung des Elementes %qD in statischer ElementfunktionungÃ¼ltige Verwendung von Elementfunktion %qD (%<()%> vergessen?)ungÃ¼ltige Verwendung eines Methodenwerts als Argument von OffsetofungÃ¼ltige Verwendung eines Nicht-L-Wert-ArraysungÃ¼ltige Verwendung des nicht-statischen Datenelementes %qDungÃ¼ltige Verwendung des nicht-statischen Datenelements %qEungÃ¼ltige Verwendung der nicht-statischen Elementfunktion %qDungÃ¼ltige Verwendung der nicht-statischen Elementfunktion vom Typ %qTfalsche Verwendung von %<pack expansion%> %qTfalsche Verwendung eines PackauflÃ¶sungs-AusdruckesungÃ¼ltige Verwendung des Platzhalters %qTungÃ¼ltige Verwendung von Zeigern auf Arrays mit unterschiedlichen Qualifizierern in ISO C vor C23ungÃ¼ltige Verwendung des qualifizierten Namens %<%D::%D%>ungÃ¼ltige Verwendung des qualifizierten Namens %<%T::%D%>ungÃ¼ltige Verwendung des qualifizierten Namens %<::%D%>UngÃ¼ltige Verwendung von Register Â»%sÂ«ungÃ¼ltige Verwendung einer Struktur mit flexiblem ArrayelementungÃ¼ltige Verwendung des Parameters %qT fÃ¼r Template-TemplateparameterungÃ¼ltige Verwendung des Parameters %qT fÃ¼r TemplatetypungÃ¼ltige Verwendung der Template-ID %qD in Deklaration des ursprÃ¼nglichen TemplatesungÃ¼ltige Verwendung des Template-Namens %qE ohne eine ArgumentlisteungÃ¼ltige Verwendung eines TypenungÃ¼ltige Verwendung von Typ %<void%> in ParameterdeklarationungÃ¼ltige Verwendung des Typs %qT als Standardwert fÃ¼r einen Template-TemplateparameterungÃ¼ltige Verwendung des unÃ¤ren %<*%> bei Zeiger auf Elementfalsche Verwendung des undefinierten Typs %qTfalsche Verwendung eines void-Ausdruckesin %<transaction_safe%>-Funktion ist kein volatile lvalue erlaubtungÃ¼ltige Verwendung eines volative lvalue innerhalb einer TransaktionungÃ¼ltige benutzerdefinierte Umwandlung von %qH in %qIungÃ¼ltige Wert-Initialisierung von ReferenztypungÃ¼ltiger Ergebnistyp in VektorvergleichungÃ¼ltige VektorkonstanteungÃ¼ltiger VektordirektwertungÃ¼ltiger VektoroperandUngÃ¼ltiger Vektortyp fÃ¼r Attribut %qEungÃ¼ltige Vektortypen in NOP-UmwandlungungÃ¼ltige Versionsnummer %qsungÃ¼ltige Â»warmÂ«-Funktion fÃ¼r Â»resetÂ«-AttributungÃ¼ltige null-Extraktionio_kind_name(): bad I/O-kindIPA-Inline-Zusammenfassung fehlt in EingabedateiIPA-Referenzzusammenfassung fehlt in ltrans-Einheitwird von %qs verstecktis_c_interoperable(): gfc_simplify_expr faileder ist in einer anderen Ãœbersetzungseinheit als Zeiger in unterschiedlichem Adressraum definierter ist in einer anderen Ãœbersetzungseinheit als Zeiger auf einen anderen Typen definiertes muss ein Zeiger auf ein Element der Form %<&X::Y%> seines muss die Adresse einer Funktion mit externer Bindung seines muss der Name einer Funktion mit externer Bindung seines wurde spÃ¤ter hier definiertElement in READZÃ¤hlvariable in schneller AufzÃ¤hlung ist kein ObjektDurchlauf %s fÃ¼hrt zu undefiniertem VerhaltenSchleifenvariable %qD sollte nicht Â»firstprivateÂ« seinSchleifenvariable %qD sollte keine Reduktion seinIterationsvariable %qE ist vorbestimmt linearSchleifenvariable %qE sollte Â»privateÂ« seinSchleifenvariable %qE sollte nicht Â»firstprivateÂ« seinIterationsvariable %qE sollte nicht Â»linearÂ« seinSchleifenvariable %qE sollte nicht Reduktion seinIterator %qD hat %<_Atomic%>-qualifizierten TypIterator %qD hat %<const%>-qualifizierten TypTyp des Iterators %qD ist weder ganzzahlig noch ein ZeigerIterator %qD hat Schrittweite 0Iterator-Schrittweite mit nichtganzzahligem TypIteratorvariableInterner Fehler: its dest_idx should be %d, not %dder Wert kann zwischen Compiler-Versionen oder mit verschiedenen %<-mtune%> oder %<-mcpu%> Flags variierenvon %<@synthesize%>-Deklaration verwendete ivar %qs muss eine existierende ivar seiniwmmxt ABI erfordert eine iwmmxt-fÃ¤hige CPUiwmmxt erfordert ein AAPCS-kompatibles ABI fÃ¼r den richtigen Einsatzin GÃ¼ltigkeitsbereich des Bezeichners mit variabel modifiziertem Typen springenSprung in Anweisungs-AusdruckSprung Ã¼berspringt OpenMP-%<allocate%>Sprung lÃ¤sst Variableninitialisierung ausSprung zur case-MarkeSprung zur Marke %qDAusschuss am Ende von %<#pragma %s%>Ausschuss am Ende von %<#pragma ADDRESS%>Ausschuss am Ende von %<#pragma CTABLE_ENTRY%>Ausschuss am Ende von %<#pragma GCC memregs%> [0-16]Ausschuss am Ende von %<#pragma GCC pop_options%>Ausschuss am Ende von %<#pragma GCC push_options%>Ausschuss am Ende von %<#pragma GCC visibility%>Ausschuss am Ende von %<#pragma __nostandard%>Ausschuss am Ende von %<#pragma __standard%>Ausschuss am Ende von %<#pragma align%>Ausschuss am Ende von %<#pragma fini%>Ausschuss am Ende von %<#pragma init%>Ausschuss am Ende von %<#pragma longcall%>Ausschuss am Ende von %<#pragma message%>Ausschuss am Ende von %<#pragma ms_struct%>Ausschuss am Ende von %<#pragma options%>Ausschuss am Ende von %<#pragma pack%>Ausschuss am Ende von %<#pragma redefine_extname%>Ausschuss am Ende von %<#pragma reset_options%>Ausschuss am Ende von %<#pragma unused%>Ausschuss am Ende von %<#pragma weak%>Ausschuss am Ende von %<#pragma ghs endsda%>Ausschuss am Ende von %<#pragma ghs endtda%>Ausschuss am Ende von %<#pragma ghs endzda%>Ausschuss am Ende von %<#pragma ghs interrupt%>Ausschuss am Ende von %<#pragma ghs section%>Ausschuss am Ende von %<#pragma ghs startsda%>Ausschuss am Ende von %<#pragma ghs starttda%>Ausschuss am Ende von %<#pragma ghs startzda%>Ausschuss am Ende von Â»#pragma extern_modelÂ«das SchlÃ¼sselwort %<export%> ist veraltet und wird ignoriertdas SchlÃ¼sselwort %<export%> wird mit %<-fmodules%> eingeschaltetSchlÃ¼sselwort %<export%> nicht implementiert, und wird ignoriertSchlÃ¼sselwort %<template%> nicht innerhalb des Klassenkopfnamens erlaubtSchlÃ¼sselwort %<template%> nicht innerhalb der declarator-id erlaubtSchlÃ¼sselwort %<typename%> in diesem Kontext nicht erlaubt (eine qualifizierte Elementinitialisierung ist implizit ein Typ)SchlÃ¼sselwort %<typename%> nicht erlaubt in diesem Kontext (die Basisklasse ist implizit ein Typ)SchlÃ¼sselwort %<typename%> nicht auÃŸerhalb von Templates erlaubtMarke %q+D deklariert, aber nicht definiertMarke %q+D definiert, aber nicht verwendetMarke %q+D verwendet, aber nicht definiertMarke %qD hier definiertInterner Fehler: label %qD has incorrect context in bb %dInterner Fehler: label %qD in the middle of basic block %dInterner Fehler: label %qD to block does not match in bb %dMarke %qE auÃŸerhalb einer Funktion referenziertdie Sprungmarke %s wird auÃŸerhalb einer Funktion referenziertMarke am Ende einer VerbundanweisungSprungmarke am Ende einer zusammengesetzten Anweisung ist erst ab %<-std=c++23%> oder %<-std=gnu++23%> verfÃ¼gbarder Label-Kontext ist nicht die aktuelle FunktionsdeklarationDefinition einer Sprungmarke innerhalb einer %<constexpr%>-Funktion ist erst ab %<-std=c++23%> oder %<-std=gnu++23%> verfÃ¼gbarDefinition einer Sprungmarke innerhalb einer %<constexpr%>-Funktion ist erst ab %<-std=c++2b%> oder %<-std=gnu++2b%> verfÃ¼gbarInitialisierungen fÃ¼r Lambda-Captures sind nur mit %<-std=c++14%> oder %<-std=gnu++14%> verfÃ¼gbarLambda-Einfangen von %qE ist kein konstanter AusdruckLambda ist hier deklariertLambda-AusdrÃ¼cke nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarLambda in lokaler Klasse %q+T kann Variablen aus dem umschlieÃŸenden Kontext nicht einfangenLambdaparameter %qD war vorher als EinfÃ¤nger deklariertLambda-Templates sind erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarLambda-Ausdruck in Template-Parameter-TypLambda-Ausdruck in Template-Argument ist erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarLambda-Ausdruck in nicht evaluiertem Kontext ist erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarLambda-Ausdruck ist erst ab C++17 ein konstanter AusdruckLambdas sind erst ab C++17 implizit %<constexpr%>Spur %wd ist auÃŸerhalb des Wertebereiches %wd bis %wdSpurindex muss eine direkt angegebene Konstante seinSprache %s nicht erkanntSprachdialekt ist %qs, erwartet wird jedoch %qsSprachen-Zeichenkette %<"%E"%> nicht erkanntgroÃŸe Festkommakonstante implizit auf Festkommatypen abgeschnittenGroÃŸe Ganzzahl implizit auf vorzeichenlosen Typen abgeschnittengroÃŸe RÃ¼ckgabewerte werden mit der Option %<-mabi=ti%> nicht unterstÃ¼tztdas letzte Argument muss ein Immediate seinletztes Argument von %qD ist keine Ganzzahlkonstante zwischen 0 und 3Name des letzten Registers Â»%sÂ« muss ein ungerades Register seindas Layout des Members %qs vom Typ %qT Ã¤ndert sich in %qsld gab %d als Ende-Status zurÃ¼cklinkes Argument muss eine Scheibe seinlinker Operand von %<->*%> muss Zeiger auf Klasse sein, ist aber ein Zeiger auf Element des Typs %qTlinker Operand des Komma-Operators kann die Adresse der Ã¼berladenen Funktion nicht auflÃ¶senlinker Operand des Komma-Operators hat keinen Effektlinker Operand des Komma-Operators ist eine Referenz, kein Aufruf, zur Funktion %qElinker Operand des Schiebeausdrucks %q+E ist negativlinke PrÃ¤zisionlinke PrÃ¤zision im strfmon-FormatLinks-Schiebe-Weite >= Breite des TypsLinks-Schiebe-Weite >= Breite des VektorelementsLinks-Schiebe-Weite ist negativleft shift of negative valuelinker Operand des Komma-Ausdrucks hat keinen Effektlinke Seite der Zuweisung kÃ¶nnte ein Kandidat fÃ¼r ein Formatattribut seinLÃ¤nge grÃ¶ÃŸer als KapazitÃ¤tLÃ¤nge %qE geht Ã¼ber AbschnittsgrÃ¶ÃŸe in %qs-Klausel hinausLÃ¤nge %qE des Arrayabschnitts muss Ganzzahltyp habenLÃ¤nge wird hier berechnetLÃ¤ngenmodifiziererLÃ¤ngenmodifizierer im printf-FormatLÃ¤ngenmodifizierer im scanf-FormatLÃ¤ngenmodifizierer im strfmon-FormatBei Reservierung einer Scheibe wird LÃ¤nge benÃ¶tigtBuchstabe %c gefunden und Befehl war nicht CONST_INTBibliotheken: %s
! Bibliotheksfunktion %q#D als Nicht-Funktion %q#D redeklariertBibliothek lib%s nicht gefundenGrenze ist %wu Bytes, Argument hat jedoch %s BytesGrenze ist %wu Bytes, Argument hat jedoch bis zu %s BytesÂ»linearÂ«-Klausel wird auf Variable vom Typ %qT angewandt, die weder ganzzahlig noch Zeiger istÂ»linearÂ«-Klausel auf Variable vom Typ %qT angewendet, die weder Ganzzahl noch Zeiger istÂ»linearÂ«-Klausel mit Modifizierer %qs wird auf Nicht-Referenz-Variable mit Typ %qT angewandtAusdruck fÃ¼r Â»linearÂ«-Schrittweite muss ganzzahlig seinmit der pthread-Bibliothek binden (Vorgabe: ein)Binder-HÃ¤rtungsoptionen nicht durch %<-fhardened%> aktiviert, da andere Binder-Optionen auf der Kommandozeile angegeben wurdenListeninitialisierung fÃ¼r Nicht-Klassentyp darf nicht geklammert seinEs ist veraltet, das Stapelzeiger-Register %qs in einer Ãœberschreibungsliste anzugebenLiteraler Operator %q#D steht mit rohem Literaloperator in KonfliktLiterale Operator-Suffixe ohne vorangehendes %<_%> sind fÃ¼r zukÃ¼nftige Standardisierungen reserviertliterales Operatortemplate %qD hat ungÃ¼ltige Parameterliste; Template fÃ¼r Nicht-Typ Argumentpack %<<char...>%> erwartetliterales Operatortemplate %qD hat ungÃ¼ltige Parameterliste; nicht-Typ-Templateargumentpack %<<char...>%> oder einzelner Nicht-Typ-Parameter von Klassentyp erwartetliteraler Operator mit C-BindungLivepatchen (mit %qs) wird in Kombination mit LTO nicht unterstÃ¼tztlo_sum nicht von einem Registerlokale Klasse %q#T darf kein statisches Datenelement %q#D habenlocal declaration from a different functionlokale Deklaration von %qE verdeckt Instanzvariablelokale Sprungmarke %qE steht in Konflikt mit bestehender Sprungmarkelokales Element %q#D ist hier deklariertlokale Methode %q#D ist hier deklariertInterner Fehler: local symbols must be definedlokale Variable %qD darf in diesem Kontext nicht auftauchenLokale Variablenspeicheranforderungen Ã¼berschreiten KapazitÃ¤tStelle des OpenACC-%<kernels%>Stelle der vorherigen Klausel in derselben SchleifenschachtelungStelle der vorherigen Reduktion fÃ¼r %qElocation references block not in block treeInterner Fehler: logic error: MOVE %s %s invalid type:Interner Fehler: logic error: missing inode for %slogisches %<und%> auf nicht-boolesche Konstante angewendetlogisches %<und%> von gleichen AusdrÃ¼ckenlogisches %<und%> bei sich gegenseitig ausschlieÃŸenden Tests ist immer Â»falseÂ«Logisches %<or%> auf Nicht-Boolesche Konstante angewendetlogisches %<oder%> bei gemeinsam erschÃ¶pfenden Tests ist immer Â»trueÂ«logisches %<oder%> von gleichen AusdrÃ¼ckenlogisches Nicht bezieht sich nur auf die linke Seite des Vergleichslogical_to_bitwise(): Bad intrinsicNachschlagen von %qT in %qT ist nicht eindeutigInterner Fehler: loop %d%'s header does not belong directly to itInterner Fehler: loop %d%'s header does not have exactly 2 entriesInterner Fehler: loop %d%'s header is not a loop headerInterner Fehler: loop %d%'s latch does not belong directly to itInterner Fehler: loop %d%'s latch does not have an edge to its headerInterner Fehler: loop %d%'s latch does not have exactly 1 successorInterner Fehler: loop %d%'s latch does not have header as successorInterner Fehler: loop %d%'s latch is marked as part of irreducible regionInterner Fehler: loop %d%'s latch is not dominated by its headerdie Anzahl der Iterationen der Schleife %d %qE verweist auf den freigegebenen SSA-Namen %qEder Schleifenname ist hier definiertSchleifenschachtelung erwartetSchleife in dazwischenliegendem Code im OpenMP-SchleifenkÃ¶rper nicht erlaubtSchleife verwendet OpenACC-Parallelismus, der von der umgebenden Routine verboten wurdeSchleifenvariable %qD erzeugt eine Kopie vom Typ %qTSchleifenvariable %qD vom Typ %qT bindet an temporÃ¤res Objekt, das aus dem Typen %qT konstruiert wurdeInterner Fehler: loop verification on loop tree that needs fixupInterner Fehler: loop with header %d marked for removalInterner Fehler: loop with header %d not in loop treelockerere Ausnahmespezifikation in der Ã¼bersteuernden virtuellen Funktion %q+#Funtere Grenze %qE geht Ã¼ber AbschnittsgrÃ¶ÃŸe in %qs-Klausel hinausUntere Grenze %qE des Arrayabschnitts muss Ganzzahltyp habenuntere Grenze des Arrays liegt auÃŸerhalb der Grenzen von ztypearithmetischer Ãœberlauf in unterer Grenze des TeilbereichsUnterer Wert in case-Marken-Bereich ist kleiner als der Minimalwert des Typslseek beim Lesen von Exportdaten gescheitertAls Verringerungsoperand wird L-Wert erfordertAls ErhÃ¶hungsoperand wird L-Wert erfordertAls linker Operand einer Zuweisung wird L-Wert erfordertAls Operand fÃ¼r unÃ¤res %<&%> wird L-Wert erfordertdie %<asm%>-Anweisung erfordert einen L-WertUmwandlung lvalue-in-rvalue eines volatile-lvalue %qE mit Typ %qTdie Maschinenbeschreibung enthÃ¤lt kein Befehlsmuster sibcall_epiloguemaschinenunabhÃ¤ngiger eingebauter Code auÃŸerhalb des WertebereichesMakrodefinitionen von %qE sind kaputtMakro expandiert zu mehreren AnweisungenMakroname fehlt hinter %qsInterner Compilerfehler: main variant is not definedInterner Fehler: make_generic(): Cannot find generic symbol %qsmehrfache Kopien von %qD werden erzeugtfalsch geformtes %<#pragma %s%>, ignoriertfalsch geformtes %<#pragma %s%>, wird ignoriertFalsch geformte Variablenadresse in %<#pragma ADDRESS%>falsch geformte Variablenadresse bei %<#pragma CTABLE_ENTRY%>falsch geformtes %<#pragma GCC pch_preprocess%>falsch geformtes %<#pragma GCC visibility push%>falsch geformtes %<#pragma __extern_prefix%>, wird ignoriertFalsch geformtes %<#pragma align%>Falsch geformtes %<#pragma align%> - ignoriertFalsch geformtes %<#pragma builtin%>Falsch geformtes %<#pragma extern_model%>, ignoriertFalsch geformtes %<#pragma fini%>Falsch geformtes %<#pragma fini%>, ignoriertFalsch geformtes %<#pragma init%>Falsch geformtes %<#pragma init%>', ignoriertFalsch geformtes %<#pragma member_alignment%>Falsch geformtes %<#pragma member_alignment%>, wird ignoriertfalsch geformtes %<#pragma message%>, ignoriertFalsch geformtes %<#pragma ms_struct {on|off|reset}%>, ignoriertFalsch geformtes %<#pragma ms_struct%>, wird ignoriertFalsch geformtes %<#pragma options align={mac68k|power|reset}%>, wird ignoriertFalsch geformtes %<#pragma options%>, wird ignoriertfalsch geformtes %<#pragma pack%> - ignoriertfalsch geformtes %<#pragma pack(pop[, id])%> - ignoriertfalsch geformtes %<#pragma pack(push[, id][, <n>])%> - ignoriertfalsch geformtes %<#pragma redefine_extname%>, wird ignoriertfalsch geformtes %<#pragma weak%>, wird ignoriertfalsch geformtes %<#pragma ghs section%>ungÃ¼ltige %<COLLECT_GCC_OPTIONS%>falsch geformtes Attribut %<target("%s")%>falsch geformtes Pragma oder Attribut %<target("%s")%>falsch geformtes %<target()%>-Attributfalsch geformtes Pragma oder Attribut %<target()%>falsche Option %<-fplugin-arg-%s%>: fehlendes %<-<SchlÃ¼ssel>[=<Wert>]%>kaputte PTX-Dateischlechte Argumente fÃ¼r Spezifikationsfunktionschlechter Name fÃ¼r SpezifikationsfunktionAttribut %<malloc%> ist nur an Funktionen sinnvoll, die einen Zeiger zurÃ¼ckgebengemangelter Name fÃ¼r %qD wird sich ich C++17 Ã¤ndern, da die Exceptionangabe Teil des Funktionstyps istmangling %<typeof%>, verwenden Sie stattdessen %<decltype%>%C wird gemangeltMangeln von %q#D als %qE steht mit einer vorherigen Mangelung in Konfliktmangling type pack indexAbbildung kann nur mit nil verglichen werdenzusammengesetztes Map-Literal muss SchlÃ¼ssel habenMapper wurde mit Signal %s beendetMapper mit Status %d beendetFeld %qE der Struktur variabler LÃ¤nger wird zugeordnetMaske muss Â»immediateÂ« seinmatch_attr_spec(): Bad attributematch_level_4(): Bad operatormatch_string_constant(): Delimiter not founddazu passende Bedingung erlaubt kein Registerdazu passende EinschrÃ¤nkung in Ausgabeoperanden ungÃ¼ltigZusammenpass-EinschrÃ¤nkung auÃŸerhalb einer Funktiondazu passende Bedingung referenziert ungÃ¼ltige OperandennummerHÃ¶chstzahl der LTO-Partitionen, die parallel gestreamt werden.obere Grenze von %d NamensrÃ¤umen fÃ¼r %qE durchsuchtmaximale Verschachtelungstiefe Ã¼berschritten: %iHÃ¶chstzahl der DurchlÃ¤ufe fÃ¼r LRA-Bedingungen ist erreicht (%d)HÃ¶chstzahl der erzeugten Neuladebefehle pro Befehl ist erreicht (%d)Code greift mÃ¶glicherweise auf %E Byte in einer Region der GrÃ¶ÃŸe %E zuCode greift mÃ¶glicherweise auf %E Bytes in einer Region der GrÃ¶ÃŸe %E zuCode greift mÃ¶glicherweise auf %E oder mehr Bytes in einer Region der GrÃ¶ÃŸe %E zugreift mÃ¶glicherweise auf zwischen %E und %E Bytes in einer Region der GrÃ¶ÃŸe %E zuÂ»-EBÂ« und Â»-ELÂ« dÃ¼rfen nicht gleichzeitig verwendet werdenÂ»-m32Â« und Â»-m64Â« dÃ¼rfen nicht zusammen angegeben werdender Typ darf nur innerhalb zusammengesetzter Literale vom Typ Slice, Array oder Map weggelassen werdenCode liest mÃ¶glicherweise %E Byte aus einer Region der GrÃ¶ÃŸe %ECode liest mÃ¶glicherweise %E Bytes aus einer Region der GrÃ¶ÃŸe %ECode liest mÃ¶glicherweise %E oder mehr Bytes aus einer Region der GrÃ¶ÃŸe %ECode liest mÃ¶glicherweise zwischen %E und %E Bytes aus einer Region der GrÃ¶ÃŸe %ECode schreibt mÃ¶glicherweise %E Byte in eine Region der GrÃ¶ÃŸe %ECode schreibt %E Bytes in eine Region der GrÃ¶ÃŸe %ECode schreibt %E oder mehr Bytes in eine Region der GrÃ¶ÃŸe %ECode schreibt mÃ¶glicherweise zwischen %E und %E Bytes in eine Region der GrÃ¶ÃŸe %EInterner Fehler: md5_stream failedmdoc-Register werden nur fÃ¼r G13-Ziel gesichertMedienfunktionen sind nur mit %<-mmedia%> verfÃ¼gbarSpeicherinitialisierung fÃ¼r %qD folgt KonstruktordelegationElement %q+#D mit Konstruktor in anonymem Aggregat nicht erlaubtElement %q+#D mit Konstruktor nicht erlaubt in UnionElement %q+#D mit Zuweisungsoperator ist in anonymem Aggregt nicht erlaubtElement %q+#D mit Copy-Zuweisungsoperator ist nicht erlaubt in UnionElement %q+#D mit Destruktor in anonymem Aggregat nicht erlaubtElement %q+#D mit Destruktor nicht erlaubt in UnionElement %q+D darf nicht als %<mutable%>-Referenz deklariert seinElement %q+D darf nicht gleichzeitig als %<const%> und %<mutable%> deklariert seinElement %qD kann erst mit %<-std=c++20%> oder %<-std=gnu++20%> gleichzeitig %<virtual%> und %<constexpr%> seinElement %qD kann nicht gleichzeitig %<virtual%> und %<static%> seinElement %qD als Â»friendÂ« deklariert, bevor Typ %qT definiert wurdeElement %qD in schreibgeschÃ¼tztem Objekt als %<asm%>-Ausgabe verwendetElement %qD ist nicht initialisierte ReferenzMitglied %qD ist nicht initialisiert, wird aber benutztElement %qD in %<constexpr%> muss von Â»mem-initializerÂ« initialisiert werdenElement %qD mit nicht initialisierten FeldernElementfunktionen sind implizite Â»friendsÂ« ihrer KlasseElement-Template %qD darf keine virt-Spezifizierer habenMembervariablen kÃ¶nnen nicht vom RVV-Typ %qT seinMembervariablen kÃ¶nnen nicht vom SVE-Typ %qT seinElemente einer explizit spezialisierten Klasse sind ohne Templateheader definiertSpeicherreservierung in vasprintf gescheitertSpeicherreservierung beim Lesen der Export-Daten gescheitertSpeichereingabe %d ist nicht direkt adressierbarunvertrÃ¤gliches SpeicherlayoutSpeicherreferenz fÃ¼r Ausgabemodifizierer Â»SÂ« erwartetSpeicherverweis oder volatile-Zugriff nach dem AufrufMetadirektiven kÃ¶nnen nicht als Varianten von %<metadirective%> verwendet werdenMethode %<%c%E%> gleichzeitig als %<@optional%> und %<@required%> deklariertdie Methode %qs hat ein implizites Argument %<this%>Methode %s%s%s ist als go:nointerface gekennzeichnetMethode %s%s%s erfordert einen ZeigerempfÃ¤ngerin Objective-C 1.0 gibt es keine Attribute fÃ¼r Methodenargumentein Objective-C 1.0 gibt es keine MethodenattributeMethodenattribute kÃ¶nnen nicht im @implementation-Kontext angegeben werdenMethodenattribute mÃ¼ssen am Ende angegeben werdenMethodenattribute dÃ¼rfen nur am Ende angegeben werdenMethodendeklaration nicht im @interface-Kontextals %qE deklarierte Methode Ã¼berschreibt Methode %qEMethodendefinition fÃ¼r %<%c%E%> nicht gefundenMethodendefinition nicht im @implementation-KontextMethode Ã¼berschreibt Methoden %<transaction_pure%> und %qEIn Methode fehlt mÃ¶glicherweise ein [super dealloc]-AufrufMethodentyp passt nicht zum ObjekttypMindestgrÃ¶ÃŸe der Partition darf nicht grÃ¶ÃŸer als HÃ¶chstgrÃ¶ÃŸe der Partition seinmio_array_ref(): Unknown array refProfiling fÃ¼r mips16-FunktionenUnstimmigkeit zwischen der GrÃ¶ÃŸe der Deklaration %qE (%wd) und der GrÃ¶ÃŸe ihres Initialisierers (%wd)Unstimmigkeit im Typ von Argument %u der eingebauten Funktion %qD; erwartet wurde %qTUnstimmigkeit im Typ von Argument %u der eingebauten Funktion %qD (%qT, sollte %qT sein)Unstimmigkeit im Typ von Argument %u der eingebauten Funktion %qD (%qT, sollte %qs sein)Abweichung in Grenze %Z von Argument %u, deklariert als %sAbweichung in Grenzen %Z von Argument %u, deklariert als %sUnstimmigkeit in Aufruf der eingebauten Funktion %qDKonflikt in Anzahl der Argumente fÃ¼r eingebautes %qF. %d erwartet, %d bekommenUnstimmigkeit im RÃ¼ckgabetyp der eingebauten Funktion %qD; erwartet wurde %qTUnstimmigkeit im RÃ¼ckgabetyp der eingebauten Funktion %qD (%qT, sollte %qs sein)ArgumentpacklÃ¤ngen %d und %d sind unvertrÃ¤glichArgumentpacklÃ¤ngen passen nicht bei Expansion von %qEArgumentpacklÃ¤ngen passen nicht bei Expansion von %qTunpassendes Vertragsattribut in Deklarationunpassende Vertragsbedingung in DeklarationUnpassende Deklarationen wÃ¤hrend Bindezeit-Optimierungunpassender Operator in FaltungsausdruckwidersprÃ¼chliche ABI-Tags fÃ¼r %qD mit keinen TagswidersprÃ¼chliche ABI-Tags fÃ¼r %qD mit Tags %qEVergleichsoperandentypen passen nichtnicht Ã¼bereinstimmende kompilierte Modulschnittstelle: hatte %qs, bekam %qsabweichende Definitionunpassende Klammernunpassendes Objective-C++-Konstrukt %<@%D%>fehlende $-Operandennummer im Format%<(%> hinter %<#pragma GCC visibility push%> fehlt - ignoriertfehlendes %<(%> hinter %<#pragma pack%> - ignoriertFehlendes %<(%> hinter %<#pragma unused%>, wird ignoriertFehlendes %<)%> hinter %<#pragma unused%>, wird ignoriertfehlende %<PHI%>-Definitionfehlendes %<big-endian%>, %<little-endian%> oder %<default%> hinter %<#pragma scalar_storage_order%>fehlendes %<error%>, %<warning%>, %<ignored%>, %<push%>, %<pop%>, oder %<ignored_attributes%> nach %<#pragma GCC diagnostic%>Attribut %<target%> fehlt fÃ¼r multiversioniertes %qDfehlende %qs-Klausel bei Anwendung von %qs auf %qD, die bereits mit einer OpenACC-Â»routineÂ«-Direktive gekennzeichnet wurdeInterner Fehler: missing REG_EH_REGION note at the end of bb %iFehlendes zusÃ¤tzliches %<requires%>, um eine requires-expression zu beginnenfehlender Architekturname in %<-march=%s%>Argument fÃ¼r %<#pragma GCC diagnostic ignored_attributes%> fehltfehlendes Argument fÃ¼r %qsAttributname hinter %<#pragma GCC diagnostic ignored_attributes%> fehltInterner Fehler: missing barrier after block %igeschweifte Klammern fehlen um Initialisierunggeschweifte Klammern fehlen um Initialisierung fÃ¼r %qTInterner Fehler: missing callgraph edge for call stmt:schlieÃŸende geschweifte Klammer fÃ¼r benannten Operanden fehltFehlende schlieÃŸende Klammerdie Sammlung in schneller AufzÃ¤hlung fehltSteuerprÃ¤dikat fehltfehlender CPU-Name in %<-mcpu=%s%>fehlender CPU-Name in %<-mtune=%s%>fehlender Bindestrichfehlende Definitionfehlendes GerÃ¤t oder Architektur hinter %qsmissing direct call for speculation %ifehlendes Verzeichnis: %sInterner Fehler: missing edge %i->%ifehlendes Merkmal oder Kennzeichen fÃ¼r %qsfehlender Dateiname hinter %qsfehlendes FÃ¼llzeichen am Ende des strfmon-Formatesfehlendes Format hinter %qsfehlender HeadernameErhÃ¶hungsausdruck fehltfehlender indirekter Aufruf in der Folge der spekulativen Aufrufefehlende Initialisierung fÃ¼r Feld %qD von %qT fehltInitialisierung fÃ¼r Element %qD fehltfehlende Schleifenbedingung in Schleife mit %<GCC ivdep%>-Pragmafehlende Schleifenbedingung in Schleife mit %<GCC unroll%>-Pragmafehlendes Makefile-Ziel hinter %qsfehlende Zuordnungfehlende Methode %s%s%sfehlender Modulnamefehlender Name fÃ¼r Pragma oder Attribut %<target("arch=")%>fehlender Name fÃ¼r Pragma oder Attribut %<target("cpu=")%>Fehlende ZahlÃ¶ffnende Klammer fehltfehlender OperandOption hinter %<#pragma GCC diagnostic%>-Variante fehltfehlende oder beschÃ¤digte object.dfehlender Ursprung fÃ¼r einen Knoten in einer verschachtelten Listefehlender Ausgabepfad hinter %qsfehlender Pfad hinter %qsfehlendes primÃ¤res Vorlagenattribut %efehlende primÃ¤re Templateattribute %eEigenschaftsattribut fehltmissing ref for speculation %ifehlender erforderlicher Modifikator %<target%> und/oder %<targetsync%>fehlende AuflÃ¶sungsdaten fÃ¼r %sWÃ¤chter in Funktionsaufruf fehltfehlende Template-Argumentliste nach %qE; fÃ¼r die Deduktion muss auf den Template-Platzhalter eine einfache Deklarator-ID folgenfehlende Template-Argumentliste nach %qE; Template-Platzhalter ist in Parameter nicht erlaubtfehlende Templateargumentefehlende Templateargumente nach %qEfehlendes abschlieÃŸendes Zeichen %cfehlender Typname in typedef-Deklarationfehlender Wert fÃ¼r Pragma oder Attribut %<target()%>im Attribut %<target_version%> fehlt der Wertfalsch geschriebener Begriff %<%.*s%> im Format; verwenden Sie stattdessen %<%s%s%>Vermischung von OpenMP-Direktiven mit Attribut- und Pragma-Syntax in derselben DeklarationVermischung von OpenMP-Direktiven mit Attribut- und Pragma-Syntax in ein und derselben AnweisungVermischung von Deklarationen und Funktionsdefinitionen ist verbotenInterner Fehler: mixing different types of symbol in same comdat groups is not supportedModus %qs auf unpassenden Typen angewendetBetriebsart-GrÃ¶ÃŸe des nicht-ganzzahligen Ergebnisses passt nicht zur FeldgrÃ¶ÃŸe von %qsModifikation von %qE von auÃŸerhalb der aktuellen Auswertung ist kein konstanter AusdruckModifikation von %qE ist kein konstanter AusdruckModifikation von %qE auÃŸerhalb seiner Lebenszeit ist kein konstanter Ausdruckdie Ã„nderung des zugewiesenen Speichers nach der Freigabe ist kein konstanter Ausdruckhier verÃ¤ndertder Modifizierer Â»NÂ« erfordert einen RegisteroperandenModifizierer auÃŸer %<val%> ist in %<linear%>-Klausel an %<simd%>- oder %<for%>-Konstrukten angegeben, zusammen mit OpenMP-5.2-ModifizierernModifizierer sollte an %<simd%>- oder %<for%>-Konstrukten nicht in %<linear%>-Klausel angegeben werden, auÃŸer wenn OpenMP 5.2 verwendet wirdin einem konstanten Ausdruck ist es nicht erlaubt, das %<const%>-Objekt %qE zu verÃ¤ndernCRC-Fehler in Modul %qsdas Modul %qs ist hier deklariertModul %qs erwartet, Headermodul gefundenModul %qs gefundendas Modul %qs wurde hier importiertdas Modul wurde bereits deklariertdas Modul wurde bereits importiertModul enthÃ¤lt OpenACC, verwenden Sie %<-fopenacc%>, um es einzuschaltenModul enthÃ¤lt OpenMP, verwenden Sie %<-fopenmp%> oder %<-fopenmp-simd%>, um es einzuschaltenModul enthÃ¤lt OpenMP, verwenden Sie %<-fopenmp%>, um es einzuschaltenModul-Eigenschaft in USE-Anweisung bei %CModul-Deklaration muss im globalen GÃ¼ltigkeitsbereich sein%<module-declaration%> ist innerhalb von %<header-unit%> nicht erlaubtModul-Deklaration ist nur als erste Deklaration erlaubt, oder wenn sie das global-module-fragment beendetmehr als %d Operanden in %<asm%>mehr als eine %<atomic_default_mem_order%>-Klausel in einer einzigen Ãœbersetzungseinheitmehr als eine %qs-Klausel mit %<source%>-Modifizierer an einem %<ordered%>-Konstruktmehr als eine Â»crtlÂ«-Direktivenmehr als ein Zugriff in Basisspezifikation angegebenmehr als eine Ortsangabe in %<depend%>-Klausel in einem %<depobj%>-Konstrukt%qE vom Typ %qT wird auf sich selbst verschobendas Verschieben eines lokalen Objekts in einer return-Anweisung verhindert das Einsparen der Kopiedas Verschieben eines temporÃ¤ren Objekts verhindert das Einsparen der Kopiempfr ist nicht so konfiguriert, dass alle Gleitkommamodi verarbeitet werden kÃ¶nnenCompilieren von mehreren Quellen ist fÃ¼r C++ nicht implementiertmultidimensionales Feld muss fÃ¼r alle Dimensionen auÃŸer der ersten Grenzen habenMultilib-Ausschluss %qs ist ungÃ¼ltigMultilib-AusschlÃ¼sse %qs sind ungÃ¼ltigMultilib-select %qs %qs ist ungÃ¼ltigMultilib-select %qs ist ungÃ¼ltigMultilib-Spezifikation %qs ist ungÃ¼ltigmehrere %<-mcpu=%>-Optionen angegebenMehrere %<default%>-Ziele wurden festgelegtmehrere %<step%>-Modifiziererdoppeltes Attribut %qEMehrere EH-PersÃ¶nlichkeiten werden nur mit Assemblern unterstÃ¼tzt, die die Direktive %<.cfi_personality%> unterstÃ¼tzenmehrere OpenMP-Â»standaloneÂ«-Direktiven unter den %<omp::directive%>-Attributen mÃ¼ssen sich alle innerhalb derselben %<omp::sequence%> befindenmehrere cc-AusgabebeschrÃ¤nkungen nicht unterstÃ¼tztmehrere Deklarationen in bereichsbasierter %<for%>-SchleifeMehrere Standardmarken in einem Â»switchÂ«mehrfache Definition von %q#Tmehrere schnelle Interruptroutinen gefunden: %qE und %qEin Union %qT werden mehrere Felder initialisiertmehrere Funktionstypattribute angegebenInterner Fehler: multiple hot/cold transitions found (bb %i)mehrere Initialisierungen fÃ¼r %qD angegebenmehrere Initialisierungen fÃ¼r Basis %qT angegebenInterner Fehler: multiple inline callersmehrere Interruptattribute sind nicht erlaubtmehrere Interruptattribute fÃ¼r Funktion %qDmehrere Schleifenvariablen in schneller AufzÃ¤hlungmehrere Â»linearÂ«-Modifizierermehrere Methoden namens %<%c%E%> gefundenmehrere Attribute fÃ¼r geschachtelte Typen fÃ¼r Funktion %qDmehrere Parameter wurden %qD genanntmehrere vorherrschende Definitionen fÃ¼r %qEmehrere Methoden fÃ¼r Eigenschaft %qE angegeben, die letzte von denen wird verwendetmehrere ref-qualifiermehrere Registerspeicher-Attribute fÃ¼r Funktion %qDmehrere Selektoren namens %<%c%E%> gefundenmehrere Speicherklassen in Deklaration von %qsmehrere Speicherklassen in Deklarationmehrere Typen in einer Deklarationmultiple virtual PHI nodes in BB %dFunktionsaufruf mit mehreren Werten in Kontext mit einem WertMultiplizieroption bringt mit sich, dass r%d festgelegt istMultiversionierung erfordert %<ifunc%>, was auf diesem Ziel nicht unterstÃ¼tzt wirdvor Verwendung von %<typeid%> muss %<#include <typeinfo>%> angegeben werdenmuss mit %<noexcept(true)%> deklariert werden%<.*%> oder %<->*%> muss verwendet werden, um Zeiger auf Element als Funktion in %<%E (...)%> aufzurufen, z.B. %<(... ->* %E) (...)%>verÃ¤nderliches %qD ist in konstantem Ausdruck nicht verwendbarnacktes Attribut bezieht sich nur auf FunktionenName %qD in benannter Initialisierung im GNU-Stil fÃ¼r ein Array verwendetName %qT hat unvollstÃ¤ndigen Typender Name %qs unterscheidet sich vom Namen %qs, der in einer anderen Ãœbersetzungseinheit definiert istName %qs ist als %u-Bit definiert, in einer anderen Ãœbersetzungseinheit jedoch als %u-BitName %qs ist als %wd definiert, in einer anderen Ãœbersetzungseinheit jedoch als %wdName %qs wird in einer anderen Ãœbersetzungseinheit mit unterschiedlichem Wert definiertName der Elementfunktion fehltName der Klasse verdeckt Template-Templateparameter %qDgeben Sie dem expliziten Objektparameter einen NamenName in benannter Initialisierung im GNU-Stil fÃ¼r ein Array verwendetnamensunabhÃ¤ngige Deklarationen sind erst ab %<-std=c++2c%> oder %<-std=gnu++2c%> verfÃ¼gbarbenannte RÃ¼ckgabewerte werden nicht mehr unterstÃ¼tztNamensbereich %qD betretenNamensbereich-Alias %qD ist hier nicht erlaubt, %qD angenommenName eines Namensraums erwartetanonymes Aggregat im GÃ¼ltigkeitsbereich eines Namespace muss statisch seinverengende Umwandlung von %qE von %qH nach %qIverengende Umwandlung von %qE von %qH nach %qI ist in C++11 ungÃ¼ltigverengende Umwandlung von %qd von %qH nach %qIZugriff auf das Member %qE erfordert %<this%>fÃ¼r den Zugriff auf Member %qs wird %<this%> benÃ¶tigtvor %<%T::%D::%E%> ist %<typename%> erforderlich, da %<%T::%D%> ein abhÃ¤ngiger GÃ¼ltigkeitsbereich istvor %<%T::%E%> ist %<typename%> erforderlich, da %qT ein abhÃ¤ngiger GÃ¼ltigkeitsbereich ist%<typename%> vor %qE erforderlich, da %qT ein abhÃ¤ngiger GÃ¼ltigkeitsbereich istausdrÃ¼ckliche Umwandlungen erforderlichexplizite Umwandlung nÃ¶tig; Methode %s%s%s fehltnegative BefehlslÃ¤ngeNegative Ganzzahl implizit in vorzeichenlosen Typen konvertiertArrayabschnitt mit negativer LÃ¤nge in %qs-Klauselnegative untere Grenze in Arrayabschnitt in %qs-Klauselnegative Verschachtelungstiefe der Region %inegative Schiebeweitenegative Breite in Bitfeld %q+DNegative Breite in Bitfeld %qskeiner der Zweige des %<if%> ist ein Konstantenausdruckweder der Destruktor noch der klassenspezifische %<operator delete%> wird aufgerufen, auch wenn sie bei der Klassendefinition deklariert werdenweder der Destruktor noch der klassenspezifische Operator %<delete []%> wird aufgerufen, auch wenn sie bei der Klassendefinition deklariert werdengeschachtelte Assemblerdialekt-AlternativenGeschachtelte extern-Deklaration von %qDgeschachtelte FunktionGeschachtelte Funktion %q+D deklariert, aber nirgendwo definiertgeschachtelte Funktion %qE als %<extern%> deklariertgeschachtelte Funktion %qs als %<extern%> deklariertdie geschachtelte Funktion muss einen Rumpf haben-ffunction-sections wird fÃ¼r dieses Ziel nicht unterstÃ¼tztauf s390 kÃ¶nnen geschachtelte Funktionen mit %<-mfentry%> nicht im Profiling verwendet werdengeschachtelte Funktionen werden auf diesem Ziel nicht unterstÃ¼tztverschachtelte inline-Namensraumdefinitionen sind erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbargeschachtelte Schleife in Reduktion benÃ¶tigt Reduktionsklausel fÃ¼r %qEgeschachtelter Namensgeber %qT fÃ¼r enum-Deklaration benennt weder Klasse noch Namensraumverschachtelte Namensraumdefinitionen sind nur mit %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbarName eines geschachtelten Namensraums erwartetgeschachtelte q-DirektivenVerschachtelte Redefinition von %<enum %E%>Verschachtelte Redefinition von %<struct %E%>Verschachtelte Redefinition von %<union %E%>die verschachtelte Anforderung %qE ist nicht erfÃ¼lltdie verschachtelte Anforderung %qE ist nicht erfÃ¼llt, daÂ»newÂ« kann nicht auf Funktionstyp angewendet werdenÂ»newÂ« kann nicht auf Referenztyp angewendet werdenneue Deklaration %q#D macht eingebaute Deklaration %q#D mehrdeutigneu in Fortran 2003neu in Fortran 2008neu in Fortran 2018neu in Fortran 2023neu in Fortran 95neue Typen dÃ¼rfen nicht in einem RÃ¼ckgabetyp definiert werdennew-expression ist erst ab C++20 ein konstanter AusdrucknÃ¤chstes Feld %q#D hier deklariertkein %<%D(int)%> fÃ¼r Suffix %qs deklariertkein %<%D(int)%> fÃ¼r Suffix %qs deklariert, stattdessen wird PrÃ¤fixoperator versuchtkeine Methode %<%c%E%> gefundenkein %<FUNCTION_PROFILER%> fÃ¼r CRISkein zugrundeliegender Typ fÃ¼r %<enum%> angegebenkeine Elementfunktion %q#D in Klasse %qT deklariertkein %qs-Getter gefundenMischen von FPX/FPU ist nicht erlaubtkein Dateiname fÃ¼r LTRANS-Ausgabeliste angegebenKeine Argumentekeine Argumente fÃ¼r Spezifikationsfunktionauf explizite Instanziierung kann kein Attribut angewendet werdenkein Klassenname mit %qs angegebenkein Klassentemplate namens %q#T in %q#Tkein schlieÃŸendes %<]%> fÃ¼r %<%%[%>-Formatfehlende schlieÃŸende geschweifte Klammerkeine Konstruktorenkein Kontext, um Typ von %qE aufzulÃ¶senkeine Umwandlungsoperatoren deklariertkeine passende Freigabefunktion fÃ¼r %qDKein Datentyp fÃ¼r Zustand %qskeine Deklaration passt zu %q#Dkeine Deklaration der in der Schnittstelle gefundenen Eigenschaft %qskein Standard-Argument fÃ¼r %qDkeine Destruktorenkein Dispatcher fÃ¼r versionierte Attribute gefundenKein Dispatcher fÃ¼r Versionierungsattribute gefunden: %skein Feld %qD in initialisierter Union gefundenkeine Funktionen namens %qDKeine Liste zur sofortigen VerwendungIn Abschnitt %qs sind keine Initialisierungen erlaubtkeine Eingabedateienkeine Eingabedateien; es werden keine Ausgabedateien geschriebenkein Ganzzahltyp kann alle AufzÃ¤hlungswerte fÃ¼r %qT darstellenkeine bekannte Umwandlung fÃ¼r Argument %d von %qH nach %qIkeine bekannte Umwandlung fÃ¼r impliziten %<this%>-Parameter von %qH nach %qIkeine bekannte Umwandlung von %qH nach %qIkeine unteren Register fÃ¼r das Hervorholen der hohen Register verfÃ¼gbarkeine Ãœbereinstimmung fÃ¼r keine Ãœbereinstimmung fÃ¼r den Aufruf von %<%T::operator[] (%A)%>keine Ãœbereinstimmung fÃ¼r Aufruf von %<(%T) (%A)%>bei der Umwandlung der Funktion %qD in den Typ %q#T gab es keine Ãœbereinstimmungenkeine passende Festkomma-Ãœberladung fÃ¼r %qs gefundenkein passender Funktionsaufruf fÃ¼r %qE mit leeren Argumentenkeine passende Funktion fÃ¼r Aufruf von %<%D(%A)%>keine passende Funktion fÃ¼r Aufruf von %<%T::%s%E(%A)%#V%>keine passende Funktion fÃ¼r Aufruf von %<%T::operator %T(%A)%#V%>keine passende Funktion fÃ¼r Aufruf von %<%s(%A)%>keine passende Funktion fÃ¼r typgenerischen Aufrufkein passendes push fÃ¼r %<#pragma GCC visibility pop%>kein passendes Template fÃ¼r %qD gefundenkeine Elementfunktion %qD in %qT deklariertkein Mitglied namens %qE in %qTkeine Multilib-fÃ¤hige ABI %qs kann mit dem Befehlssatz %qs implementiert werden, stattdessen wird %qs verwendetkein Operand der Disjunktion ist erfÃ¼lltim selben Selektor-Set mit %<kind("any")%> darf keine andere Trait-Eigenschaft angegeben werdenkein Postdekrementoperator fÃ¼r Typkein Postinkrementoperator fÃ¼r Typkein PrÃ¤dekrementoperator fÃ¼r Typkein PrÃ¤inkrementoperator fÃ¼r Typkeine vorherige Deklaration fÃ¼r %qDkein vorheriger Prototyp fÃ¼r %qDkein Prozessortyp zum Binden angegebenes wurden keine Profildateien zusammengefÃ¼hrt
! kein Profiling von 64-bit-Code fÃ¼r dieses ABIkein Register fÃ¼r die Profilerstellung von %<-mcmodel=large%s%> verfÃ¼gbarKein Register in Adresseeine %<constexpr%>-Funktion, die etwas Anderes als %<void%> zurÃ¼ckgibt, muss eine return-Anweisung enthaltenkeine return-Anweisung in nicht void zurÃ¼ckgebender Funktionkeine return-Anweisungen in %qT zurÃ¼ckgebender Funktionkein Semikolon am Ende von Â»structÂ« oder Â»unionÂ«keine solche Ausnahme: 0x%xkein geeignetes %<operator %s%> fÃ¼r %qTKein passendes %qD in Klasse %qT gefundenkeine Basisklasse im @interface fÃ¼r %qE deklariertkeine Basisklasse in Schnittstelle fÃ¼r %qE deklariertkeine UnterstÃ¼tzung fÃ¼r %qs ohne %qskeine Informationen zum Aufschiebepunkt fÃ¼r %qDkein Typ namens %q#T in %q#Thier darf kein Typ oder Speicherklasse angegeben werden,keine unexpandierten Parameterpackungen in binÃ¤rer Faltung%qD wurde nicht eindeutig und endgÃ¼ltig in %qT Ã¼berschriebenkeine gÃ¼ltigen Klauseln in %<#pragma acc declare%> angegebenkeine brauchbare Konvertierung von %<void%> durch %<get_return_object%> zu RÃ¼ckgabetyp %qTkein geeigneter Destruktor fÃ¼r %qTInterner Fehler: node differs from node->decl->decl_with_vis.symtab_nodeInterner Fehler: node has body_removed but is definitionKnoten hat ungÃ¼ltige Reihenfolge %iInterner Fehler: node has unknown typeInterner Fehler: node is alias but not definitionInterner Fehler: node is alias but not implicit aliasInterner Fehler: node is alone in a comdat groupInterner Fehler: node is analyzed but it is not a definitionInterner Fehler: node is in same_comdat_group list but has no comdat_groupInterner Fehler: node is symver but not aliasInterner Fehler: node is transparent_alias but not an aliasInterner Fehler: node is weakref but not an transparent_aliasInterner Fehler: node not found in symtab assembler name hashInterner Fehler: node not found node->decl->decl_with_vis.symtab_nodeKnoten mit nicht freigegebenem Speicher gefundennoexcept-Ausdruck wird wegen Aufruf von %qD zu %<false%> ausgewertetOperand fÃ¼r Â»%%%cÂ« muss ein 32-Bit-Register seinREAL-Argument ohne doppelte Genauigkeit fÃ¼r intrinsisches %s bei %Lnicht-%<consteval%>-Funktion %q+D Ã¼bersteuert %<consteval%>-Funktionvon nicht-AAPCS abgeleitete PCS-VarianteNicht-ASCII-Zeichen in CFString-LiteralNicht-NULL-Zeigerinitialisierung bei %CNicht-OpenACC-Konstrukt innerhalb einer OpenACC-RegionNicht-OpenACC-Konstrukt innerhalb einer OpenACC-RoutineNicht-Array-Deallokation eines Objekts, das mit Array-Allokation allokiert wurdeFehlzuordnung bei Ausnahmebehandlung ohne AufrufTeilspezialisierung %qE ist nur fÃ¼r Klassen und Variablen erlaubtInterner Fehler: non-cold basic block %d reachable only by paths crossing the cold partitionNicht-konstantes Ganzzahl-Argument %u in Aufruf von Funktion %qENicht konstantes Argument 0 fÃ¼r %qsNicht konstantes Argument 1 fÃ¼r %qsNichtkonstantes Feld in DATA-Anweisung %Lnicht konstante Arrayinitialisierungnichtkonstante LÃ¤nge fÃ¼r neues Array muss direkt angegeben werden, nicht Ã¼ber %<typedef%>Nichtkonstante LÃ¤nge in Array-new muss ohne Klammern um die Typ-ID angegeben werdennicht-konstantes zusammengesetztes Literal kann nicht in einem Konstanten-Ausdruck auftretenNicht-konstante Bedingung fÃ¼r statische Behauptungnon-constant element in constant CONSTRUCTORnicht konstanter Ausdruck %qsInitialisierung des nicht konstanten statischen Elements %qD in der Klasse ist ungÃ¼ltigInitialisierung des nicht konstanten statischen Elements %qD in der Klasse ist ungÃ¼ltigNicht-konstanter Initialisierungsausdruck bei %Lnicht konstante Iterationszahl bei einer %<unroll full%>-Schleifenicht herleitbares Templates %qT wird ohne Template-Argumente verwendetNicht-Standard Argument der Art INTEGER fÃ¼r intrinsisches Â»%sÂ« bei %LNicht-Delegitimiertes UNSPEC %s (%d) am Variablenort gefundennicht gelÃ¶schte Funktion %q+D Ã¼bersteuert gelÃ¶schte Funktionnichtleeres Stringliteral erwartetNicht-Gleitkomma-Argument in Aufruf von Funktion %qENicht-Gleitkomma-Argumente in Aufruf von Funktion %qENicht-Funktion %qD als implizites Template deklariertAlias-Definitionen werden in dieser Konfiguration nur fÃ¼r Funktionen unterstÃ¼tztNicht-Funktion in GIMPLE-AufrufNicht ganzzahliges Argument 1 fÃ¼r %qsNicht-Ganzzahl-Argument 3 in Aufruf von Funktion %qENicht-Ganzzahlargument %d fÃ¼r Speichermodell von %qENicht-Ganzzahl-Operand mit Operandencode %<z%> verwendetswitch-Anweisung ohne eingebauten Typnichtlokale Gotos in Funktionen mit SME-Zustandnicht-lokaler Lambdaausdruck kann keinen Â»capture-defaultÂ« habennicht-lokale %<__thread%>-Variable %qD hat einen nicht-trivialen Destruktornicht-lokale %<__thread%>-Variable %qD erfordert dynamische InitialisierungInterner Fehler: non-loop with header %d not marked for removalNicht-L-Wert-Array in bedingtem AusdruckNicht-Element %qs kann nicht als %<mutable%> deklariert seinNicht-Elementfunktion %qD kann nicht CV-Qualifizierer habenNicht-Elementfunktion %qD kann keinen ref-Qualifizierer habeneine Using-Deklaration, die nicht-Member ist, benennt den Konstruktor von %qTNichtelement-Templatedeklaration von %qDEingabe von Nicht-Speicher %d muss im Speicher bleibenNicht-Speicher-Ausgabe %d muss im Speicher bleibennicht geschachtelte Funktion mit variabel modifiziertem TypenNicht-Objekt-Element %qs kann nicht als %<mutable%> deklariert seinNicht-Objective-C-Typ %qT kann nicht aufgefangen werdenNicht-Parameter %qs kann kein Parameterpack seinnicht-rechteckiges %<tile%>Nichtrechteckige Schleifenschachtelung mit nichtkonstanter Schrittweite fÃ¼r %qsNichtrechteckige Schleifen aus generierten Schleifen werden nicht unterstÃ¼tztNicht-Register als LHS von binÃ¤rer OperationNicht-Register als LHS von ternÃ¤rer OperationNicht-Register als LHS von unÃ¤rer Operationnicht-skalares %qsnicht-skalarer Typnichtskalare Variable %qD in bedingter %<lastprivate%>-KlauselNicht-Standard-Suffix an GleitkommakonstanteNicht-Standard-Suffix an Gleitkommakonstante vor C23nicht-statisches const-Element %q#D in Klasse ohne einen Konstruktornicht-statisches konstantes Element %q#D, Standard-Zuweisungsoperator kann nicht verwendet werdennicht-statisches Datenelement %q+D in einer Union darf keinen Referenztypen %qT habennicht-statisches Datenelement %qE als %qs deklariertnicht-statisches Datenelement mit Platzhalter %qT deklariertnicht-statische Initialisierungen fÃ¼r Datenelemente nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarNicht-statische Deklaration von %q+D folgt statischer Deklarationnicht-statische Initialisierung eines flexiblen Arrayelementsnicht-statische Referenz %q#D in Klasse ohne Konstruktornicht-statisches Referenzelement %q#D, Standard-Zuweisungsoperator kann nicht verwendet werdenNicht-Template %qD als Template verwendetNicht-Template-Typ %qT als Template verwendetNicht-Thread-lokale Deklaration von %q#D folgt Thread-lokaler DeklarationNicht-Thread-lokale Deklaration von %q+D folgt Thread-lokaler Deklarationnicht-Top-Level %qsnicht-triviale Umwandlung in %qsnicht-triviale Umwandlung in unÃ¤rer Operationnicht-trivial markierte Initialisierungen nicht unterstÃ¼tztNichttyp-Teilspezialisierung %qE ist nicht erlaubtNichttypen-Templateparameter von Klassentyp sind nur mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarNichttypen-Templateparameter von hergeleitetem Klassentyp sind erst ab %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarNicht-Variable %qD in Deklaration mit mehr als einem Deklarator mit Platzhaltertyp%qs mit Elementen ist kein VektorNicht-Vektoroperanden in Vektorvergleichnichtkonstanter Arrayindex in InitialisierungInterner Fehler: nonempty exits list of loop %d, but exits are not recordedInterner Fehler: nonlocal label %qD is not first in a sequence of labels in bb %ddie linke Seite der nichttemporalen Speicheroperation kann kein Gimple-Register seinArrayindex %qE ist ungleich 0 und wird mit Array %qD vom Typ %qT mit unbekannten Grenzen verwendetArrayindex %qE ist ungleich 0 und wird mit Array vom Typ %qT mit unbekannten Grenzen verwendetNormalisierung kann nicht gleichzeitig mit Skalierung aktiv sein
! Datei fÃ¤ngt nicht mit dem magischen \x7FELF anunerlaubte Typkombination in %qsnicht mit sysroot-Header-Suffix konfiguriertbei der RÃ¼ckkehr von %qD wird das Kopieren nicht eingespartbei der RÃ¼ckkehr in %qD wird das Kopieren nicht eingespartzu wenige DO-Schleifen fÃ¼r Â»%s !$ACC LOOPÂ« bei %Lzu wenige DO-Schleifen fÃ¼r zusammengefallenes %s (Stufe %d) bei %LNicht genug ArgumenteNicht genug Argumente fÃ¼r RÃ¼ckgabenicht genÃ¼gend geschachtelte Schleifenzu wenig TypinformationenZu wenige variable Argumente, um zu einem WÃ¤chter zu passenbinÃ¤rer Operator erwartet denselben Typ fÃ¼r beide Operanden%<#define %E%> wird nicht exportiert, da es ein SchlÃ¼sselwort istPatchbereich wird nicht angelegt, da NOPs nicht unterstÃ¼tzt werdendie Option %<-fpic%> nicht fÃ¼r die v3m-Toolchain unterstÃ¼tzenModul %qs wird aufgrund von Fehlern in TemplaterÃ¼mpfen nicht geschriebenHinweisAnmerkung: Zielzeiger ist NULLNULL-FormatzeichenketteNull-ZeigerDereferenzierung eines NullzeigersNullbarkeits-Angabe %qE kann nicht auf Zeigertyp %qT angewendet werden, da dieser mehrere Ebenen von Zeigern hatNullbarkeits-Angabe %qE ist nur auf Zeigertypen anwendbar, nicht auf %qTZahl muss 0 oder 1 seinAnzahl der Argumente passt nicht zum eingebauten PrototypenAnzahl der Argumente passt nicht zum PrototypenInterner Fehler: number of bb notes in insn chain (%d) != n_basic_blocks (%d)Komponentenanzahl des Vektors ist keine ZweierpotenzAnzahl der ZÃ¤hler in den Profilingdaten fÃ¼r Funktion %qD passt nicht zu deren Profilingdaten (ZÃ¤hler %qs, %i erwartet aber %i gefunden)Anzahl der Listenelemente in der %<interop%>-Klausel (%d) Ã¼bersteigt die Anzahl der %<append_args%>-Elemente (%d) fÃ¼r den %<declare variant%>-Kandidaten %qDAnzahl der Ergebnisse passt nicht zur Anzahl der WerteAnzahl der spekulativen Ziele %i stimmt nicht mit num_speculative_call_targets %i Ã¼bereinAnzahl der Variablen in %qs-Klausel mit %<sink%>-Modifizierer passt nicht zur Anzahl der IterationsvariablenKomponentenanzahl des Vektors %wu Ã¼bersteigt %dKomponentenanzahl des Vektors %wu ist keine Zweierpotenznumerisches Argument des Attributs %qE muss im Bereich von 0 bis 63 liegenobjc++-cpp-output ist veraltet; bitte stattdessen objective-c++-cpp-output verwendenobjc-cpp-output ist veraltet; bitte stattdessen objective-c-cpp-output verwendenObjekt %qE der GrÃ¶ÃŸe %sObjekt ist keine Methodebei Verwendung von %qE fehlt ObjektObjekt der GrÃ¶ÃŸe %s, alloziert durch %qEObjekt-Eigenschaft %qD hat kein Attribut %<assign%>, %<retain%> oder %<copy%>; es wird %<assign%> angenommenObjekttyp %qT passt nicht zum Destruktornamen ~%qTObjekt mit variabel geÃ¤ndertem Typ darf keine Bindung habenMethodendeklaration in Objective-C erwartetObjective-C++ Nachrichtenargument(e) erwartetObjective-C++-NachrichtenempfÃ¤nger erwartetObjective-C++ Methodendeklaration erwartetausgedient in Fortran 95veralteter FPA-Formatcode Â»%cÂ«veralteter Maverick-Formatcode Â»%cÂ«veraltete Option %<-I-%> verwendet, bitte stattdessen %<-iquote%> verwendenveraltete Verwendung einer bestimmten Initialisierung mit %<:%>veraltete Verwendung einer bestimmten Initialisierung ohne %<=%>von hier erhaltenodr-verwendete Inline-Variable %qD ist nicht definiertvon ModulOffload-Compiler %qs nicht gefundenOffload-Compiler %s nicht gefunden (erwÃ¤gen Sie %<-B%>)Auslagerungsdimension %d liegt auÃŸerhalb des WertebereichesOffset %qwi ist auÃŸerhalb der Grenzen der konstanten ZeichenketteOffset Ã¼berschreitet 16 BytesOffset von %qD fÃ¼r %<-std=c++14%> und hÃ¶her Ã¤ndert sich in %<-fabi-version=17%> (GCC 12)Offset von %qD fÃ¼r %<-std=c++20%> und hÃ¶her Ã¤ndert sich in %<-fabi-version=21%> (GCC 16)Offset von %qD ist ABI-unvertrÃ¤glich und kann sich in zukÃ¼nftigen GCC-Versionen Ã¤ndernOffset der Basisklasse %qT fÃ¼r %<-std=c++14%> und hÃ¶her Ã¤ndert sich in %<-fabi-version=17%> (GCC 12)Offset der Basisklasse %qT fÃ¼r %<-std=c++20%> und hÃ¶her Ã¤ndert sich in %<-fabi-version=21%> (GCC 16)Offset des gepackten Bitfeldes %qD hat sich in GCC 4.4 geÃ¤ndertalte Deklaration %q#DFunktionsdefinition im alten StilParameterdeklarationen alten Stils in Prototyp-Funktionsdeklarationdas Weglassen von %<,%> vor Varargs %<...%> ist ab C++26 veraltetausgelassener mittlerer Operand fÃ¼r Operator %<?:%> kann nicht verarbeitet werdenomp_cur_iteration bei %L erfordert %<-1%> als logischen Offsetein Feld ist ein Bitfeld, das andere jedoch nichteins der Argumente fÃ¼r den Initialisierungsaufruf sollte %<&omp_priv%> seineins der Aufrufargumente fÃ¼r die Initialisierung sollte %<omp_priv%> oder %<&omp_priv%> seinein Typ muss konstruiert sein, der andere nichtnur %<distribute%>-, %<parallel%>- und %<loop%>-Regionen dÃ¼rfen innerhalb einer %<teams%>-Region streng geschachtelt seinnur die Schalter %<inbranch%> und %<notinbranch%> sind fÃ¼r das %<__simd__%>-Attribut erlaubtnur die Schalter %<inbranch%> und %<notinbranch%> sind fÃ¼r das %<simd%>-Attribut erlaubtnur %qT oder eine Nullzeigerkonstante kann nach %qT umgewandelt werdennur %u Name fÃ¼r strukturelle Bindung angegebennur %u Namen fÃ¼r strukturelle Bindung angegebennur 0.0 kann als Immediate geladen werdenfÃ¼r den Adressraum %<__regio_symbol%> wird nur der 32-Bit-Zugriff unterstÃ¼tztNur das DWARF-Debugformat ist fÃ¼r Interrupt-Service-Routinen unterstÃ¼tztnur Objective-C-Objekttypen kÃ¶nnen mit Protokoll qualifiziert werdenNur die Attribute %<fallthrough%> oder %<assume%> kÃ¶nnen auf eine leere Anweisung angewendet werdennur Konstruktoren nehmen Elementinitialisierungennur Deklarationen von Konstruktoren und Umwandlungsoperatoren kÃ¶nnen %<explicit%> seinsondern nur hier als %<friend%>nur einfacher RÃ¼ckgabetyp %<auto%> kann zu %<void%> hergeleitet werdennur der erste Parameter einer Memberfunktion kann als expliziter Objektparameter deklariert werdenin einer %<constexpr%>-Funktion in C++20 darf Inline-Assemblercode nur vorkommen, wenn er nicht im Auswertungspfad liegtNur uninitialisierte Variablen kÃ¶nnen in einem %<.bss%>-Abschnitt platziert werdenNur uninitialisierte Variablen kÃ¶nnen im %<.noinit%>-Bereich platziert werdennur die Werte 12 (4 kB) und 16 (64 kB) werden fÃ¼r die WÃ¤chtergrÃ¶ÃŸe unterstÃ¼tzt. Der angegebene Wert %d (%llu kB) liegt auÃŸerhalb des gÃ¼ltigen Bereichsin dieser Konfiguration werden nur schwache Aliase unterstÃ¼tztIn Abschnitt %qs sind nur 0-Initialisierungen erlaubtopake Vektortypen kÃ¶nnen nicht initialisiert werdenopaque-enum-declaration ist hierintransparente Enum-Spezifikation muss einfachen Bezeichner verwendenintransparente Enum-Spezifikation ohne NamenÂ»%sÂ« kann nicht geÃ¶ffnet werden: %s/dev/zero kann nicht geÃ¶ffnet werden: %mLTRANS-Ausgabeliste Â»%sÂ« kann nicht geÃ¶ffnet werden: %mAbhÃ¤ngigkeitsdatei Â»%sÂ« kann nicht geÃ¶ffnet werden: %mAusgabedatei %qs wird geÃ¶ffnet: %sAusgabedatei Â»%sÂ« kann nicht geÃ¶ffnet werden: %mOperandencode %%xn ist fÃ¼r QImode ungÃ¼ltigOperand %d sollte eine vorzeichenlose 3-Bit-Konstante seinOperand %d sollte eine vorzeichenlose 6-Bit-Konstante seinOperand %d sollte eine vorzeichenlose 8-Bit-Konstante seinOperand 1 sollte eine vorzeichenlose 3-Bit-Konstante seinOperand 1 sollte ein vorzeichenloser 3-Bit-Wert sein (I0â€“I7)Operand 2 sollte ein gerader 3-Bit-Wert sein (subreg 0,2,4,6)Operand 2 sollte ein vorzeichenloser 3-Bit-Wert sein (I0â€“I7)Operand 2 sollte ein vorzeichenloser 3-Bit-Wert sein (subreg 0â€“7)Operand 2 sollte ein vorzeichenloser 8-Bit-Wert seinOperand 3 sollte ein vorzeichenloser 3-Bit-Wert sein (I0â€“I7)Operand 3 sollte ein vorzeichenloser 8-Bit-Wert seinOperand 4 sollte ein vorzeichenloser 8-Bit-Wert sein (0â€“255)OperandeneinschrÃ¤nkung enthÃ¤lt falsch positioniertes %<+%> oder %<=%>Operandenbedingungen fÃ¼r %<asm%> unterscheiden sich in der Anzahl der AlternativenOperand ist kein Bedingungscode, ungÃ¼ltiger Operandencode Â»%cÂ«Operand ist kein Bedingungscode, ungÃ¼ltiger Operandencode Â»DÂ«Operand ist kein Bedingungscode, ungÃ¼ltiger Operandencode Â»YÂ«Operand ist keine bestimmte Ganzzahl, ungÃ¼ltiger Operandencode Â»RÂ«Operand ist keine bestimmte Ganzzahl, ungÃ¼ltiger Operandencode Â»rÂ«Operand ist keine Ganzzahl, ungÃ¼ltiger Operandencode Â»KÂ«Operand ist keine Ganzzahl, ungÃ¼ltiger Operandencode Â»RÂ«Operand ist keine ausgleichbare Speicherreferenz, ungÃ¼ltiger Operandencode Â»HÂ«Operandennummer fehlt hinter %%-BuchstabeOperandennummer auÃŸerhalb des WertebereichesOperandennummer auÃŸerhalb des Wertebereiches im FormatOperandennummer fÃ¼r Format ohne Argumente angegebenOperandennummer mit unterdrÃ¼ckter Zuweisung angegebenOperand von %<?:%> wechselt das Vorzeichen von %qT nach %qT, aufgrund der Vorzeichenlosigkeit des anderen OperandenOperand des Faltungsausdrucks hat keine unexpandierten ParameterpackungenOperandentyp %qT ist inkompatibel mit Argument %d von %qEOperandentypen sind %qT und %qTOperanden fÃ¼r %<?:%> haben unterschiedliche Typen %qT und %qTdie Operanden fÃ¼r %<?:%> haben die Typen %qT und %qT, diese Typen haben einen ungeordneten KonvertierungsrangOperanden fÃ¼r %T/%t mÃ¼ssen reg + const_int sein:Operation nicht erlaubt auf Typ %<_Float16%> ohne Option %<-msse2%>Operation nicht erlaubt auf Typ %<__bf16%> ohne Option %<-msse2%>Operation nicht erlaubt auf Typ %<bfloat16_t%>Operation nicht erlaubt auf Typ %<mfloat8_t%>Operation auf %qE kÃ¶nnte undefiniert seines gibt Operationen nach dem nicht-endrekursiven AufrufOperationen auf mehreren Vektoren mÃ¼ssen mit %qs und nicht mit %qs angegeben werdenOperationen auf einzelnen Vektoren mÃ¼ssen mit %qs und nicht mit %qs angegeben werdenOperator %<delete []%> auf unvollstÃ¤ndigem Typ verwendetOperator %<delete%> auf unvollstÃ¤ndigem Typ verwendetOptimierungsattribut von %qD folgt auf die Definition, aber die Attribute passen nicht zusammenFehlzuordnung von OptimierungsstufenattributOptimierung kann Lese- und/oder Schreiboperationen auf Registervariablen entfernenunbegrenzte Wertparameter optimieren, indem sie per Referenz Ã¼bergeben werden, vorausgesetzt, die aufgerufene Prozedur verÃ¤ndert sie nicht.Option %<%s=%s%> ist fÃ¼r die CPU %qs nicht verfÃ¼gbardie Option %<-mdouble=32%> ist nur verfÃ¼gbar, wenn %<--with-double={32|32,64|64,32}%> konfiguriert istdie Option %<-mdouble=64%> ist nur verfÃ¼gbar, wenn %<--with-double={64|64,32|32,64}%> konfiguriert istdie Option %<-mirq-ctrl-saved%> ist nur fÃ¼r ARC-v2-Prozessoren gÃ¼ltigdie Option %<-mlong-double=32%> ist nur verfÃ¼gbar, wenn %<--with-long-double={32|32,64|64,32}%>, oder %<--with-long-double=double%> zusammen mit %<--with-double={32|32,64|64,32}%> konfiguriert istdie Option %<-mlong-double=64%> ist nur verfÃ¼gbar, wenn %<--with-long-double={64|64,32|32,64}%>, oder %<--with-long-double=double%> zusammen mit %<--with-double={64|64,32|32,64}%> konfiguriert istdie Option %<-mrgf-banked-regs%> ist nur fÃ¼r ARC-v2-Prozessoren gÃ¼ltigoption %<-mstructure-size-boundary%> ist veraltetOption %qs wird ignoriert, der Vorgabewert %qs wird fÃ¼r die CPU %qs verwendetOption %qs ist fÃ¼r die CPU %qs nicht verfÃ¼gbarOption %qs ist gÃ¼ltig fÃ¼r %s, aber nicht fÃ¼r %sOption %qs erfordert %<-mlong-double-128%>Option %qs mit abweichenden Werten (%s, %s)Option Â»%sÂ« wird zusammen mit %<-fopenacc%> nicht unterstÃ¼tztOption %s nicht konsistent in allen LTO-Eingabedateien verwendetOption %s mit unterschiedlichen WertenOption fehlt hinter %qsoptionales Argumentoptionaler Klassenparameterder optionale zweite Parameter von %<va_start%> ist nicht das letzte benannte ArgumentOptionen oder Zielarchitekturen=Optionen fehlen hinter %qsInterner Fehler: optype_msgid overflow: %doder ersetzen Sie die Klammern durch geschweifte Klammern, um die Variable als Aggregat zu initialisierenoder ersetzen Sie die Klammern durch geschweifte Klammern, um die Variable mit einem einzelnen Wert zu initialisierenoder verwenden Sie %<auto%> fÃ¼r ein abgekÃ¼rztes Funktionstemplateoder nutzen Sie %<j%> statt %<i%> fÃ¼r das in GNU eingebaute SuffixArgument fÃ¼r %<ordered%> muss ein positiver, ganzzahliger Ausdruck seingeordneter Vergleich von Zeiger mit Ganzzahlnullgeordneter Vergleich von Zeiger mit der Zahl 0 (%qT und %qT)geordneter Vergleich von Zeiger mit Null-Zeigerordnet die Initialisierungen/Finalisierungen fÃ¼r scaffold-static, oder das Binden von Modulen fÃ¼r scaffold-dynamic erzwingenOrdinaltyp erwartetorigin points to a different parentdas ursprÃ¼ngliche %<default%> ist hierursprÃ¼ngliche Deklaration trat hier aufursprÃ¼ngliche Deklaration ist hierursprÃ¼ngliche Deklaration mit weniger VertrÃ¤gen ist hierursprÃ¼ngliche Definition trat hier aufursprÃ¼ngliche Definition ist hierOriginal ist nicht mit zstd komprimiertOriginalgrÃ¶ÃŸe unbekanntursprÃ¼ngliche Deklaration des Templates ist hierwurde ursprÃ¼nglich hier als %<const%> deklariertursprÃ¼nglich hier definiertursprÃ¼nglich indirekter Funktionsaufruf kommt nicht als Â»inlineÂ« in BetrachtursprÃ¼ngliche hier spezifiziertverwaistes %qs-Konstruktandere Fundstelle ist hierandere GrÃ¼ndesollte der virtuellen Methode %qD entsprechen, tut es aber nichtÃ¤uÃŸeres %<__transaction_cancel%> nicht innerhalb des Ã¤uÃŸeren %<__transaction_atomic%>Funktionsaufruf von %<__transaction_cancel%> nicht innerhalb von Ã¤uÃŸerer %<__transaction_atomic%>- oder %<transaction_may_cancel_outer%>-FunktionÃ¤uÃŸerer Block der Region %i ist falschdie Ã¤uÃŸere Iterationsvariable %qD hat einen Summandenausdruck %qE, der nicht ganzzahlig istdie Ã¤uÃŸere Iterationsvariable %qD hat einen Faktorausdruck %qE, der nicht ganzzahlig istdie Ã¤uÃŸere Iterationsvariable %qD, die im Bedingungsausdruck verwendet wird, ist von einem anderen Typen als %qTdie Ã¤uÃŸere Iterationsvariable %qD, die im Initialisierungsausdruck verwendet wird, ist von einem anderen Typen als %qTÃ¤uÃŸere Transaktion in %<transaction_may_cancel_outer%>-FunktionÃ¤uÃŸere Transaktion in %<transaction_safe%>-FunktionÃ¤uÃŸere Transaktion in TransaktionAusgabebedingung %d kann nicht zusammen mit %qs angegeben werdenAusgabebedingung %d muss ein einzelnes Register angebenAusgabeeinschrÃ¤nkung %qc fÃ¼r Operand %d steht nicht am AnfangAusgabedatei %s existiert bereits in Ordner %sName der Ausgabedatei darf nicht leer seinAusgabedatei doppelt angegebenAusgabezahl %d nicht direkt adressierbarAusgabeoperand %d muss %<&%>-Bedingung verwendenEinschrÃ¤nkung des Ausgabeoperanden erfordert %<=%>Ausgabeoperand ist in %<asm%> konstantAusgabeoperand auÃŸerhalb einer Funktion ist nicht konstantAusgaberegister mÃ¼ssen oben auf dem Stapel gruppiert werdenoutput_move_single:Ãœberlauf in ArraygrÃ¶ÃŸeÃœberlauf in Konstanten-AusdruckÃœberlauf in Umwandlung von %qT nach %qT Ã¤ndert den Wert von %qEÃœberlauf in Umwandlung von %qT nach %qT Ã¤ndert den Wert von %qE in %qEÃœberlauf in AufzÃ¤hlungswertenÃœberlauf in AufzÃ¤hlungswerten bei %qDÃœberlauf in impliziter KonstantenkonvertierungÃ¼bergelaufene Ausgabeargumentliste fÃ¼r %qsÃœberlauf in Umwandlung von %qT nach %qT Ã¤ndert den Wert von %qE in %qEÃ¼berlappender Initialisierer fÃ¼r das Feld %qT.%qDÃ¼berladene eingebaute Funktion %qs ist durch die eingebaute Funktion %qs umgesetztÃ¼berladener Funktionsname %qE in Klausel %qsÃ¼berladene Funktion ohne Typinformationen aus KontextÃ¼bersteuerte Funktion ist %q#DÃ¼bersteuerte Funktion ist %q#FÃ¼bersteuerte Funktion ist %qDÃœberschreibsteuerung (override/final) nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarDie standardmÃ¤ÃŸige 64-Bit-Definition von SYSTEM.COFF_T mit dem angegebenen Argument Ã¼bersteuernÃ¼bersteuert %qD, was als %<transaction_safe%> deklariert istgepacktes Expansionsargument fÃ¼r Parameter %qD ohne Â»packÂ« von Alias-Template %qDgepacktes Expansionsargument fÃ¼r Parameter %qD ohne Â»packÂ« von Konzept %qDPack-Expansion in using-Deklaration ist nur mit %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbarPackungsexpansion des Attributs %qEPackindex ist negativPackindex ist keine GanzzahlkonstantePackindex liegt auÃŸerhalb des Bereichs%<pack index%> fehlt%<pack-index%> ist erst mit %<-std=c++2c%> oder %<-std=gnu++2c%> verfÃ¼gbar%<pack init-capture%> ist erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbargepacktes Attribut fÃ¼hrt zu ineffizienter Ausrichtunggepacktes Attribut verursacht ineffiziente Ausrichtung fÃ¼r %q+Dgepacktes Attribut verursacht ineffiziente Ausrichtung fÃ¼r %qEgepacktes Attribut ist unnÃ¶tiggepacktes Attribut ist unnÃ¶tig fÃ¼r %q+Dgepacktes Attribut ist fÃ¼r %qE unnÃ¶tigGepacktes Layoutstruct wird bis zur Ausrichtungsgrenze mit %E Bytes aufgefÃ¼lltstruct wird aufgefÃ¼llt, um %q+D auszurichtenParameter %P hat unvollstÃ¤ndigen Typen %qTParameter %P von %qD hat unvollstÃ¤ndigen Typen %qTParameter %q+D als %<_Noreturn%> deklariertParameter %q+D als %<inline%> deklariertParameter %q+D hat nur eine VorwÃ¤rtsdeklarationParameter %qD als void deklariertParameter %qD hat unvollstÃ¤ndigen TypenParameter %qD bezieht Zeiger auf Feld mit unbekannter Grenze %qT einParameter %qD bezieht Referenz auf Feld mit unbekannter Grenze %qT einParameter %qD deklariert ungÃ¼ltigerweise MethodentypParameter %qD ist initialisiertParameter %qD darf in diesem Kontext nicht auftauchenParameter %qD gesetzt, jedoch nicht verwendetParameter %qP von %qD kÃ¶nnte Kandidat fÃ¼r Formatattribut seinParameter %u (%q+D) hat unvollstÃ¤ndigen TypenParameter %u hat unvollstÃ¤ndigen TypenParameterdeklaration vor Lambdadeklarationsangaben ist erst ab %<-std=c++23%> oder %<-std=gnu++23%> optionalParameterdeklaration vor einer Lambda-Exception-Angabe ist erst ab %<-std=c++23%> oder %<-std=gnu++23%> optionalParameterdeklaration vor einem abschlieÃŸenden RÃ¼ckgabetyp ist erst ab %<-std=c++23%> oder %<-std=gnu++23%> optionalParameterdeklaration vor einem Lambda-Transaktions-Qualifizierer ist erst ab %<-std=c++23%> oder %<-std=gnu++23%> optionalParameterdeklaration ist nicht namensunabhÃ¤ngigParameter als %<auto%> deklariertParameter darf nicht variabel modifizierten Typ %qT habenParameter kÃ¶nnte ein Kandidat fÃ¼r ein Formatattribut seinParametername fehlt in ParameterlisteParameternamen (ohne Typen) in FunktionsdeklarationParameterpack %<__bases%> ist nur in Templatedeklaration gÃ¼ltigParameterpack %q+D muss am Ende der Templateparameterliste seinParameterpack %qD kann kein Standardargument habenArgument %qE fÃ¼r Parameterpack muss am Ende der Templateargumentliste seinArgument %qT fÃ¼r Parameterpack muss am Ende der Templateargumentliste seinParameterpack kann kein Standardargument habenParameterbÃ¼ndel nicht mit %<...%> aufgelÃ¶st:die ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT hat sich %{mit GCC 12.1%} geÃ¤ndertdie ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT hat sich in GCC 13.1 geÃ¤ndertdie ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT hat sich in GCC 14.1 geÃ¤ndertdie ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT hat sich in GCC 7.1 geÃ¤ndertdie ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT hat sich in GCC 9.1 geÃ¤ndertdie ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT hat sich, sofern C++17 aktiviert ist, so geÃ¤ndert, dass es C++14 %{in GCC 10.1%} entsprichtdie ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT mit %<[[no_unique_address]]%>-Elementen hat sich %{in GCC 10.1%} geÃ¤ndertdie ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT mit Bitfeldern der Breite 0 hat sich in GCC 12 geÃ¤ndertParameter fÃ¼r eingebaute Funktion muss Zeichenkettenkonstante oder Literal seinParameter fÃ¼r eingebaute Funktion ist ungÃ¼ltig: %sParameter vom Typ %<va_list%> {auch %qs} werden zu Zeigertypen degradiert und benÃ¶tigen %<va_copy%>, um sie zurÃ¼ck in einen statischen Arraytyp umzuwandelnparametrisiertes abgeleitetes TypargumentEltern-Unterprogramm kann nicht geinlinet werdenKlammern um %qE kÃ¶nnen nicht verwendet werden, einen Zeiger auf Elementfunktion zu erzeugenKlammern mÃ¼ssen weggelassen werden, wenn die Argumentliste des %qE-Attributs leer istKlammern mÃ¼ssen weggelassen werden, wenn die Argumentenliste des Attributs leer istUm dieses zusammengesetzte Literal sind Klammern erforderlich, um Mehrdeutigkeit zu vermeidenKlammern waren mehrdeutig und wurden als Funktionsdeklaration angesehengeklammerte Initialisierung ist in OpenMP-%<for%>-Schleife nicht erlaubtgeklammerte Initialisierung in Array-Â»newÂ«Syntaxfehler in SELECT-RANK-Anweisung bei %CSyntaxfehler in Â»SELECT TYPEÂ«-Anweisung bei %CSyntaxfehler in Templateargumentlistepart-ref mit Zeigerattribut bei %L ist nicht das rechteste part-ref des data-stmt-objectsTeilspezialisierung %q+D spezialisiert keine Templateargumente und ist nicht eingeschrÃ¤nkter als das primÃ¤re Template; um das primÃ¤re Template zu definieren, entfernen Sie die TemplateargumentlisteTeilspezialisierung %q+D spezialisiert keine Templateargumente; um das primÃ¤re Template zu definieren, entfernen Sie die TemplateargumentlisteTeilspezialisierung %qD ist nicht spezialisierter alsTeilspezialisierung %qT als %<friend%> deklariertpartielle Spezialisierung ist nicht nÃ¤her spezialisiert als das ursprÃ¼ngliche Template, da es mehrere Parameter mit einer Â»packÂ«-Erweiterung ersetztteilweise Spezialisierung von %qD nach Instanziierung von %qDInterner Fehler: partition found but function partition flag not setDurchlauf %qs nicht gefunden, wird jedoch von neuem Durchlauf %qs referenziertpass %s does not support cloningpass %s needs a %<set_pass_param%> implementation to handle the extra argument in %<NEXT_PASS%>wird an den PrÃ¤prozessor weitergereicht, wenn Â»-fcppÂ« verwendet wird (interne Option)Ãœbergabe von %qT und %qT an Argumente %d und %d von %qE, das jedoch ein Paar von 64-Bit-Ganzzahlen erwartetDie Ãœbergabe von %qT als %<this%>-Argument streicht QualifiziererÃœbergabe von %qT wÃ¤hlt %qT statt %qTÃœbergabe von %qT anstelle des erwarteten %qT an Argument %d von %qE, nachdem %qT an Argument %d Ã¼bergeben wurdeÃœbergabe von %qT an Argument %d von %qE, aber %qT ist kein gÃ¼ltiger MVE-ElementtypÃœbergabe von %qT an Argument %d von %qE, aber %qT ist kein gÃ¼ltiger SVE-ElementtypÃœbergabe von %qT an Argument %d von %qE, aber Argument %d hatte den Typ %qTÃœbergabe von %qT an Argument %d von %qE, aber Argument %d war ein Tupel von %qTÃœbergabe von %qT an Argument %d von %qE, das jedoch in der %qT-Form keine Skalare akzeptiertÃœbergabe von %qT an Argument %d von %qE, das jedoch in der %qT-Form keine einzelnen Vektoren akzeptiertÃœbergabe von %qT an Argument %d von %qE, aber vorherige Argumente waren vom Typ %qTÃœbergabe von %qT an Argument %d von %qE, das jedoch keine Skalare dieser Kombination von Argumenten akzeptiertÃœbergabe von %qT an Argument %d von %qE, das jedoch %qT erwartetÃœbergabe von %qT an das Argument %d von %qE, das jedoch %qs erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch %qs oder %qs erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen 128-Bit-NEON-Vektortypen erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Ganzzahltyp von 32 oder 64 Bits erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Zeiger auf %qT erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Zeiger auf Elemente erwartet, die 32 oder 64 Bit groÃŸ sindÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Zeigertyp erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch ein skalares Element erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch eine Ganzzahl erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Zeiger auf einen skalaren Typen erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen einzelnen MVE-Vektor statt eines Tupels erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen einzelnen SVE-Vektor statt eines Tupels erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Vektor von Elementen erwartet, die %d Bit groÃŸ sindÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Vektor von Ganzzahlen mit %d Bits erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Vektor von Elementen der GrÃ¶ÃŸe 32 oder 64 Bit erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Vektor von Ganzzahlen mit GrÃ¶ÃŸe 32 oder 64 Bits erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Vektor von Ganzzahlen erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Vektor von vorzeichenbehafteten Ganzzahlen erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Vektor vorzeichenloser Ganzzahlen erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Vektor oder eine Zeiger-Basisadresse erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Vektor oder einen skalaren Typen erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch %qs oder %qs erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen MVE-Tupeltyp erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen MVE-Vektortyp erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen SVE-Typen erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch einen SVE-Typen statt eines skalaren Typen erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch erwartet, dass die Daten 16 Bits oder breiter sindÃœbergabe von %qT an Argument %d von %qE, das jedoch einen Vektor von %d-Bit-Elementen erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch Vektoren von vorzeichenbehafteten Ganzzahlen erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch Vektoren von vorzeichenlosen Ganzzahlen erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch beim Laden von %qT einen Vektor von Ganzzahlen mit %d Bits erwartetÃœbergabe von %qT an Argument %d von %qE, das jedoch beim Speichern von %qT einen Vektor von Ganzzahlen mit %d Bits erwartetÃœbergabe von %wd an Argument %d von %qE, das jedoch entweder %wd, %wd, %wd oder %wd erwartetÃœbergabe von %wd an Argument %d von %qE, das jedoch einen gÃ¼ltigen %qT-Wert erwartetÃœbergabe von %wd an das Argument %d von %qE, das einen Wert im Bereich [%wd, %wd] erwartetÃœbergabe von %wd an das Argument %d von %qE, das einen Wert im Bereich [%wd, %wd] oder %wd erwartetÃœbergabe von %wd an das Argument %d von %qE, das ein Vielfaches von %wd im Bereich [%wd, %wd] erwartetÃœbergabe von %wd an Argument %d von %qE, das jedoch entweder %wd oder %wd erwartetÃœbergabe von %wd an Argument %d von %qE, das jedoch den Wert %wd erwartetÃœbergabe von NULL an Nicht-Zeiger-Argument %P von %qDÃœbergabe des Arguments %d von %qE als %<float%> statt %<double%> aufgrund des PrototypsÃœbergabe des Arguments %d von %qE als %qT statt %qT aufgrund des PrototypsÃœbergabe des Arguments %d von %qE als komplex statt Gleitkomma aufgrund des PrototypsÃœbergabe des Arguments %d von %qE als komplex statt Ganzzahl aufgrund des PrototypsÃœbergabe des Arguments %d von %qE als Gleitkomma statt komplex aufgrund des PrototypsÃœbergabe des Arguments %d von %qE als Gleitkomma statt Ganzzahl aufgrund des PrototypsÃœbergabe des Arguments %d von %qE als Ganzzahl statt komplex aufgrund des PrototypsÃœbergabe des Arguments %d von %qE als Ganzzahl statt Gleitkomma aufgrund des PrototypsÃœbergabe des Arguments %d von %qE als vorzeichenbehaftet aufgrund des PrototypsÃœbergabe des Arguments %d von %qE als vorzeichenlos aufgrund des PrototypsÃœbergabe des Arguments %d von %qE entfernt Kennzeichner %qs von Zeiger-ZieltypÃœbergabe des Arguments %d von %qE entfernt Kennzeichner %qv von Zeiger-Ziel-TypÃœbergabe des Arguments %d von %qE von anderem Objective-C-TypÃœbergabe des Arguments %d von %qE von inkompatiblem ZeigertypÃœbergabe des Arguments %d von %qE von inkompatibler Speicherreihenfolge fÃ¼r SkalareÃœbergabe des Arguments %d von %qE von Zeiger auf nicht eingeschlossenen AdressbereichÃœbergabe des Arguments %d von %qE erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger %q#vÃœbergabe des Arguments %d von %qE wandelt eine Zahl in einen Zeiger um, ohne explizite TypkonvertierungÃœbergabe des Arguments %d von %qE wandelt eine Zahl in einen Zeiger um, ohne explizite TypkonvertierungÃœbergabe des Arguments %d von %qE mit anderer Breite aufgrund des PrototypsArgument %i wird an den mit %qs qualifizierten Parameter Ã¼bergeben, dadurch wird es zum Alias fÃ¼r Argument %ZArgument %i wird an den mit %qs qualifizierten Parameter Ã¼bergeben, dadurch wird es zum Alias fÃ¼r die Argumente %ZArgumente werden an Auslassungspunkte des geerbten Konstruktors %qD Ã¼bergebenÃœbergabe von nicht Ã¼bereinstimmenden Ganzzahltypen %qT und %qT an die Argumente %d und %d von %qEÃœbergabe nicht Ã¼bereinstimmender Tupeltypen %qT und %qT an die Argumente %d und %d von %qEDas Ãœbergeben des nicht trivial-kopierbaren Typs %q#T Ã¼ber %<...%> ist Â»conditionally-supportedÂ« ([expr.call] 5.2.2/7)Ãœbergabe des einzelnen Vektors %qT an Argument %d von %qE, nachdem das Tupel %qT an Argument %d Ã¼bergeben wurdeÃœbergabe von zu groÃŸem Argument auf dem StapelÃœbergabe des Tupels %qT an Argument %d von %qE, nachdem der einzelne Vektor %qT an Argument %d Ã¼bergeben wurdepatchbarer Funktionseintrag %wu Ã¼berschreitet die GrÃ¶ÃŸe %wuPfadabdeckung entfÃ¤llt
  Pfad: %u von %zu Pfaden abgedeckt
! Pfade Ã¼berschreiten den Grenzwert, Pfadabdeckung wird aufgegebenPed. WarnungPed. Warnung: mÃ¶glicherweise fehlt %<#include <coroutine>%>vielleicht hilft ein Zeilenumbruch nach %<import%> oder eine andere Kenntlichmachung, damit dies nicht mehr als Modul-Steuerzeile angesehen wirdvielleicht hilft ein Zeilenumbruch nach %qs oder eine andere Kenntlichmachung, damit dies nicht mehr als Modul-Steuerzeile angesehen wirdvielleicht brauchen Sie explizite Templateargumente im Â»nested-name-specifierÂ«Sie kÃ¶nnten ein explizites %<%T::%> hinzufÃ¼genPerm. FehlerPerm. Fehler: Platzhalter-BeschrÃ¤nkungen nicht erfÃ¼lltPlatzhaltertyp ist in diesem Kontext nicht erlaubtPlacement-New erzeugt ein Array von Objekten vom Typ %qT mit GrÃ¶ÃŸe %qwu in einer Region von Typ %qT mit GrÃ¶ÃŸe %qwiPlacement-New erzeugt ein Array von Objekten vom Typ %qT mit GrÃ¶ÃŸe %qwu in einer Region vom Typ %qT mit MaximalgrÃ¶ÃŸe %qwuPlacement-New erzeugt ein Objekt vom Typ %<%T [%wu]%> mit GrÃ¶ÃŸe %qwu in einer Region von Typ %qT mit GrÃ¶ÃŸe %qwiPlacement-New erzeugt ein Objekt vom Typ %<%T [%wu]%> mit GrÃ¶ÃŸe %qwu in einer Region vom Typ %qT mit MaximalgrÃ¶ÃŸe %qwuPlacement-New erzeugt ein Objekt vom Typ %qT mit GrÃ¶ÃŸe %qwu in einer Region von Typ %qT mit GrÃ¶ÃŸe %qwiPlacement-New erzeugt ein Objekt vom Typ %qT mit GrÃ¶ÃŸe %qwu in einer Region vom Typ %qT mit MaximalgrÃ¶ÃŸe %qwubitte geben Sie den CPU-Namen explizit an. GÃ¼ltige CPU-Namen sind: %sPlugin %qs wurde mit anderen Pfaden angegeben: %qs und %qsPlugin %s ist nicht unter einer GPL-kompatiblen Lizenz lizenziert
! %sPlugin %s ist nicht unter einer GPL-kompatiblen Lizenz lizenziert: %sPlugin %s hat eine Null-Callback-Funktion fÃ¼r Ereignis %s registriertPlugin %s sollte vor %<-fplugin-arg-%s%> in der Kommandozeile angegeben werdenPlugin kann keinen fehlenden Durchlauf registrierenPlugin kann keinen unbenannten Durchlauf registrierenPlugin kann keinen Durchlauf %qs ohne Referenzdurchlaufnamen registrierenPlugin-UnterstÃ¼tzung ist ausgeschaltet; mit %<--enable-plugin%> konfigurierender Typ, auf den gezeigt wird, ist hier deklariertZeigerZeiger %qE wird mÃ¶glicherweise nach %qD verwendetZeiger %qE wird nach %qD verwendetZeigerargumentZeigerarithmetik fÃ¼r Objekte mit Garbage-Collection ist nicht erlaubtZeigerzuweisungZeiger wird mÃ¶glicherweise nach %qD verwendetdas Zeigerelement %q+D wurde hier deklariertZeiger auf Typen %<void *%> in Arithmetik verwendetZeiger des Typs %<void *%> in Subtraktion verwendetZeigeroffset von Symbol kÃ¶nnte falsch seinZeiger oder allozierbares ResultatZeiger-Zieltypen sind in C++ inkompatibelZeiger auf Adressraum %qs muss in %qT konstant seinZeiger auf Adressraum %qs muss in %s %q+D konstant seinZeigerziele in Zuweisung von %qT nach %qT unterscheiden sich im VorzeichenbesitzZeigerziele in Initialisierung von %qT nach %qT unterscheiden sich im VorzeichenbesitzZeigerziele bei Ãœbergabe des Arguments %d von %qE unterscheiden sich im VorzeichenbesitzZeigerziele in RÃ¼ckgabe von %qT aus einer Funktion mit RÃ¼ckgabetyp %qT unterscheiden sich im VorzeichenbesitzZeiger auf %qD ist kein KonstantenausdruckZeiger auf Funktion in Arithmetik verwendetZeiger auf eine Funktion in Subtraktion verwendetZeiger auf Array verliert durch den Bedingungsausdruck QualifiziererZeiger auf Array verliert durch den Bedingungsausdruck Qualifizierer, in ISO C vor C23Zeiger auf Datenmembertyp %qT kann nur mit einem Argument aufgerufen werdenZeiger auf Schnittstellentyp hat keine MethodenUmwandlung in Zeiger auf Element Ã¼ber virtuelle Basis %qTZeiger auf Memberfunktionstyp %qT muss mit mindestens einem Argument aufgerufen werdenZeiger auf Elementtyp %qT mit Objekttyp %qT inkompatibelZeigertyp passt nicht in bedingtem AusdruckZeiger wird nach %qD verwendetZeigerwert verwendet, wo Â»complexÂ« erwartet wurdeZeigerwert verwendet, wo Gleitkommawert erwartet wurdeZeiger auf Elementfunktion %qE kann nicht ohne Objekt aufgerufen werden; verwenden Sie beispielsweise %<.*%> oder %<->*%>Pointer-to-Member-Mapping %qE wird nicht unterstÃ¼tztTyp fÃ¼r Zeiger auf Elementfunktion %qT braucht einen lvalueZeiger-auf-Element-Funktions-Typ %qT braucht vor C++20 einen lvalueTyp fÃ¼r Zeiger auf Elementfunktion %qT braucht einen rvalueZeiger-/Ganzzahltyp passt nicht in bedingtem AusdruckZeiger sind nicht als case-Werte zugelassenZeiger auf den Adressraum %<__regio_symbol%> sind verbotenZeiger auf disjunkte AdressrÃ¤ume in bedingtem Ausdruck verwendetpolymorphes ArgumentPosition plus GrÃ¶ÃŸe Ã¼berschreitet die GrÃ¶ÃŸe des referenzierten Objekts in %qslageunabhÃ¤ngiger Code erfordert %qspositionelle Initialisierung eines Feldes in %<struct%>, die mit dem %<designated_init%>-Attribut deklariert wurdePositive Breite benÃ¶tigt bei %LmÃ¶gliche Behebung: mit %qs dereferenzierenmÃ¶gliche Behebung: die Adresse mit %qs bestimmenmÃ¶gliches Problem bei Aufruf von %<operator delete%> erkanntmÃ¶gliches Problem bei Aufruf des Operators %<delete []%> erkanntmÃ¶glicherweise baumelnde Referenz auf temporÃ¤res ObjektPost-Increment-Adresse ist kein Registerpost-module-declarations mÃ¼ssen zusammenhÃ¤ngend sein%<post-module-declaration%>-Importe dÃ¼rfen nicht aus Header-Einbindung stammen%<post-module-declaration%>-Importe dÃ¼rfen nicht %<include-translated%> seinNachbedingungen kÃ¶nnen keine Anweisungen seinSuffix-%qD muss %<int%> als sein Argument nehmenSuffix-%qD muss %<int%> als sein zweites Argument nehmenSuffix-%qD sollte %qT zurÃ¼ckgebenMÃ¶gliche Dereferenzierung eines Nullzeigerspower9-Zieloption ist mit %<%s=<xxx>%> fÃ¼r <xxx> kleiner als power9 inkompatibelPragma oder Attribut %<target("%s")%> akzeptiert keine ArgumentePragma oder Attribut %<target("%s")%> erlaubt keine negierte FormPragma oder Attribut %<target("%s")%> ist nicht gÃ¼ltigPragma oder Attribut %<target("%s=%s")%> ist nicht gÃ¼ltigpragma(%s) ist nicht implementiertPre-Decrement-Adresse ist kein RegisterPre-Increment-Adresse ist kein RegisterGenauigkeitGenauigkeit im printf-FormatVorbedingungen kÃ¶nnen keine Anweisungen seinvordeklarierter arithmetischer Typ %qT in %<#pragma omp declare reduction%>vordefinierter arithmetischer Typ in %<#pragma omp declare reduction%>bedingter Thumb-Befehlbedingter Befehl in bedingter SequenzPrÃ¤fix-%qD sollte %qT zurÃ¼ckgebenPrÃ¤fix-Attribute vor %<@%D%> werden ignoriertPrÃ¤fixattribute werden fÃ¼r Implementierungen ignoriertPrÃ¤fixattribute werden fÃ¼r Methoden ignoriert<source_filter> vor der Kompilierung vorverarbeitenInterner Fehler: prev_bb of %d should be %d, not %dvorheriges %<#pragma omp declare reduction%>vorherige Deklaration von %<#pragma omp declare reduction%>vorheriger Vertrag hiervorherige Deklarationvorherige Deklaration von %q#Dvorherige Deklaration %qDvorherige Deklaration %qD verwendete %d Template-Parametervorherige Deklaration %qD verwendete %d Template-Parameterbisherige Deklaration als %q#Dvorherige Deklaration hiervorherige Deklaration von %<%c%E%>vorherige Deklaration von %<%c%E%> als %<@optional%>vorherige Deklaration von %<%c%E%> als %<@required%>vorherige Deklaration von %<%c%s%>vorherige Deklaration von %q#Dvorherige Deklaration von %q+Dvorherige Deklaration von %qD vom Typ %qTvorherige Deklaration von %qDvorherige Deklaration von %qD war hiervorherige Deklaration von %qEbisherige Deklaration mit %qL-Bindungvorherige Definition hiervorherige Definition von %q#Tvorherige Definition von %q+D vom Typ %qTvorherige Definition von %qD war hiervorherige implizite Deklaration von %q+D vom Typ %qTvorherige Sprungmarkevorherige Mangelung von %q#Dvorherige Nicht-Prototyp-Definition hiervorherige Angabebisherige Spezifikation in %q+#D hiervorher als %s deklariertwar vorher als %s mit %u unspezifizierten Variablengrenze deklariertwar vorher als %s mit %u unspezifizierten Variablengrenzen deklariertwar vorher als %s mit %u Variablengrenze deklariertwar vorher als %s mit %u Variablengrenzen deklariertwar vorher als %s deklariert, mit Grenze %qswar vorher als %s deklariert, mit Grenzargument %Ewar vorher als Zeiger %s deklariertwar vorher als Array variabler LÃ¤nge %s deklariertwar vorher als Array %s deklariertwar vorher als gewÃ¶hnliches Array %s deklariertvorher hier deklariertvorher hier ohne Export deklariertvorher im globalen Modul deklariertvorher in Modul %qs deklariertvorher hier definiertvorher hier als %s definiertBereits hier verwendetprimÃ¤res Template %qDursprÃ¼ngliches Template hierprivates Element %q#D in anonymer Unionprivate-module-fragment%<private-module-fragment%> ist nur im ZustÃ¤ndigkeitsbereich eines Modulinterfaces oder einer Partition zulÃ¤ssigWahrscheinlichkeit %qE liegt auÃŸerhalb des Bereichs [0.0, 1.0]Wahrscheinlichkeit %qE muss eine konstanter Gleitkommaausdruck seinInterner Fehler: probability of edge %d->%d not initializedInterner Fehler: probability of edge from entry block not initializedwahrscheinlich fehlt davor ein Komma oder ein OperatorProblem beim Erstellen des Zielabbilds fÃ¼r %sProdukt %<%E * %E%> der Argumente %i und %i Ã¼berschreitet %<SIZE_MAX%>Produkt %<%E * %E%> der Argumente %i und %i Ã¼berschreitet maximale ObjektgrÃ¶ÃŸe %EProfildaten fÃ¼r Funktion %u sind beschÃ¤digtProfil fÃ¼r Funktion %qD nicht in Profilingdaten gefundenProfilerunterstÃ¼tzung fÃ¼r VxWorksProfiling von %<-mcmodel=large%> wird mit PIC nicht unterstÃ¼tztProfiling ist fÃ¼r dieses Ziel noch nicht implementiertProfiling wird mit Â»-mgÂ« nicht unterstÃ¼tztProgramme: %s
  weitergegebenes Argument %qD passt nicht zu eingebautem Prototypenweitergegebenes Argument %qD passt nicht zum Prototypendas befÃ¶rderte (promoted) bitweise Komplement eines vorzeichenlosen Wertes ist immer ungleich Null, da die hÃ¶chstwertigen Bits 1 sindEigenschaften fÃ¼r %<simd%>-Selektor dÃ¼rfen nicht in %<metadirective%> angegeben werdenEigenschaften mÃ¼ssen benannt seinin einem %<metadirective%>-Kontext-Selektor dÃ¼rfen Eigenschaften nicht fÃ¼r den %<simd%>-Selektor angegeben werdenEigenschaft %qs ist bereits in %<@dynamic%> festgelegtEigenschaft %qs ist bereits in %<@synthesize%> festgelegtEigenschaft %qs verwendet Instanzvariable %qs unvertrÃ¤glichen TypsEigenschaft %qs verwendet dieselbe Instanzvariable wie die Eigenschaft %qsEigenschaft kann kein Bitfeld seinEigenschaft kann kein Array seinEigenschaftsdeklaration nicht im Kontext von %<@interface%>, %<@protocol%> oder %<category%>Eigenschaft bei %C muss die Nummer eines konformen GerÃ¤ts seinEigenschaft bei %L muss ein konstanter ganzzahliger Ausdruck seinEigenschaft bei %L muss ein konstanter logischer Ausdruck seinEigenschaft bei %L muss ein logischer Ausdruck seinEigenschaft bei %L muss ein ganzzahliger Ausdruck seinEigenschaft muss ein konstanter ganzzahliger Ausdruck seinEigenschaft muss ein konstanter ganzzahliger Ausdruck oder ein Zeichenkettenliteral seinEigenschaft muss ein ganzzahliger Ausdruck seingeschÃ¼tztes Element %q#D in anonymer UniongeschÃ¼tzte Sichtbarkeitsattribute werden in dieser Konfiguration nicht unterstÃ¼tzt; ignoriertProtokoll %qE hat ringfÃ¶rmige AbhÃ¤ngigkeitProtokoll %qE ist veraltetProtokoll %qE ist nicht verfÃ¼gbarProtokoll-Attribute sind in Objective-C 1.0 nicht verfÃ¼gbarPrototyp-DeklarationPrototyp fÃ¼r %q+D deklariert Argument %d mit inkompatiblem TypenPrototyp fÃ¼r %q+D deklariert weniger Argumente als vorherige Definition im alten StilPrototyp fÃ¼r %q+D deklariert mehr Argumente als vorherige Definition im alten StilPrototyp fÃ¼r %q+D folgt einer Nicht-Prototyp-DefinitionPrototyp fÃ¼r Â»%sÂ« hat Pflichtoperanden hinter optionalen OperandenPrototyp fÃ¼r %q#D angegebenfÃ¼r %qD bereitgestelltPseudo-Destruktor wird nicht aufgerufenpure virtuelle %q#D aus Konstruktor heraus aufgerufenpure virtuelle %q#D aus Destruktor heraus aufgerufenpure virtuelle %q#D aus nichtstatischem Datenelement-Initialisierer heraus aufgerufenreiner Spezifizierer bei Funktionsdefinitionq/Q-Modifizierer fÃ¼r Symbolreferenzen ungÃ¼ltigÃœberprÃ¼fung fÃ¼r qsort-Vergleichsfunktion fehlgeschlagenVergleichsfunktion fÃ¼r qsort liefert nicht-negatives Ergebnis fÃ¼r sortierte Ausgabe: %dVergleichsfunktion fÃ¼r qsort ist nicht antisymmetrisch: %d, %dVergleichsfunktion fÃ¼r qsort ist nicht transitiv: %d, %d, %dqualifizierter Name benennt keine Klassequalifizierter Typ %qT passt nicht zum Destruktornamen ~%qTqualified-id in DeklarationQualifizierer sind bei Konstruktordeklarationen nicht erlaubtQualifizierer sind bei Deklaration von %<operator %T%> nicht erlaubtQualifizierer sind bei Deklaration von Herleitungshinweis nicht erlaubtQualifizierer sind bei Destruktordeklarationen nicht erlaubtqualifizierender Typ %qT passt nicht zum Destruktornamen ~%qT%qs innerhalb von AnfÃ¼hrungszeichen im Format%qs-Direktive innerhalb von AnfÃ¼hrungszeichen im Format; verwenden Sie stattdessen %qsr0 muss als aufrufzerstÃ¶rtes Register verfÃ¼gbar seinBereichsklausel muss vom Typ Array, Scheibe, Zeichenkette, Map oder Kanal seinWertebereichsausdrÃ¼cke in switch-Anweisungen sind nicht standardkonformBereichsgrenzen haben nicht denselben Typbereichsbasierter %<for%>-Ausdruck mit Typ %qT hat unvollstÃ¤ndigen TypBereichsbasierte %<for%>-Schleifen sind nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarBereichsbasierte %<for%>-Schleifen mit Initialisierer sind erst mit %<-std=c++20%> oder %<-std=gnu++20%> verfÃ¼gbarRang + Korang von %qs Ã¼bersteigt %d bei %Croher Literaloperator %q#D steht mit literalem Operatortemplate in Konfliktrdynamic wird nicht unterstÃ¼tztReinitialisierung von %qs bei %LErreichbarkeitsdefinition %s ist hierLesen der Export-Daten gescheitertschreibgeschÃ¼tzte Stelle %qE als %<asm%>-Ausgabe verwendetschreibgeschÃ¼tztes Element %qD als %<asm%>-Ausgabe verwendetschreibgeschÃ¼tzter benannter RÃ¼ckgabewert %qD als %<asm%>-Ausgabe verwendetschreibgeschÃ¼tzter Parameter %qD als %<asm%>-Ausgabe verwendetschreibgeschÃ¼tzte Referenz %qD als %<asm%>-Ausgabe verwendetschreibgeschÃ¼tzte Variable %qD als %<asm%>-Ausgabe verwendetCode liest %E Byte aus einer Region der GrÃ¶ÃŸe %ECode liest %E Bytes aus einer Region der GrÃ¶ÃŸe %ECode liest %E oder mehr Bytes aus einer Region der GrÃ¶ÃŸe %ECMI %qs wird gelesenCode liest zwischen %E und %E Bytes aus einer Region der GrÃ¶ÃŸe %Ebeim Lesen der ddoc-Datei Â»%sÂ«: %mEingabedatei wird gelesenLesen Ã¼ber Null-Zeiger (Argument %d)Das Ãœbergeben des nicht trivial-kopierbaren Typs %q#T Ã¼ber %<...%> ist Â»conditionally-supportedÂ« ([expr.call] 5.2.2/7)das angegebene Suffix als Dateiname des Definitionsmoduls erkennendie angegebene Endung als Implementierungs- oder Modul-Dateiname erkennenNeuÃ¼bersetzung mit %<-fcompare-debug%>rekursiver Aufrufrekursive Auswertung des Standardarguments fÃ¼r %q#Drekursives Inliningrekursive Instanziierung von Vorgabeinitialisierer fÃ¼r Element %qDrekursives verzÃ¶gertes Ladenrekursive Referenz %qsrekursiver Typ %qT nicht definiertrekursiv erforderlich durch Ersetzung von %qS
  rekursiv erfordert von %q#D
  rekursiv erfordert von hier
! Redeklaration %qD unterscheidet sich in %qs von vorheriger DeklarationRedeklaration von %<enum %E%>Redeklaration von %<#pragma omp declare reduction%>Redeklaration von %q#DRedeklaration von %q#D hat mÃ¶glicherweise keine Default-ArgumenteRedeklaration von %q#D mit unterschiedlichen EinschrÃ¤nkungenNeudeklaration von %q#D mit unterschiedlichen TemplateparameternRedeklaration von %q+D mit anderer Sichtbarkeit (alte Sichtbarkeit beibehalten)Redeklaration von %q+D ohne BindungRedeklaration von %qD fÃ¼gt ABI-Marke %qE hinzuRedeklaration von %qD mit unterschiedlichen EinschrÃ¤nkungenRedeklaration von %qT als Nicht-TemplateRedeklaration von %qs %<#pragma omp declare reduction%> fÃ¼r Typ %qTRedeklaration des eingebauten C++-Typs %qTRedeklaration der Objective-C-Klasse %qsRedeklaration der AufzÃ¤hlung %qsRedeklaration von AufzÃ¤hlung %q+DRedeklaration des Â»friendÂ« %q#D kann keine Standardtemplateargumente habenRedeklaration der Eigenschaft %qDhier erneut deklarierthier als %q#D redeklariertmit %d Template-Parameter redeklariertmit %d Template-Parametern redeklariertNeudeklaration von %qD in globalem Modul widerspricht dem ImportNeudeklaration von %qD in Modul %qs widerspricht dem Importredefinierte Â»extern inlineÂ«-Funktionen kommen nicht als Â»inlineÂ« in BetrachtNeudefinition von %<CTABLE_ENTRY %wd%>Redefinition von %<struct %E%>Redefinition von %<union %E%>Redefinition von %q#DRedefinition von %q#TRedefinition von %q+DNeudefinition des Standardarguments fÃ¼r %q+#DRedefinition des Parameters %q+DRedefinition von Struktur- oder Vereinigungstyp %qTRedefinition des Struktur- oder Vereinigungstyps %qT mit variabel modifiziertem TypRedefinition des typedef %q+DRedefinition des typedef %q+D mit anderem TypRedefinition des typedef %q+D mit variabel modifiziertem Typredundanter KlassenschlÃ¼ssel %qs in Verweis auf %q#Tredundanter AufzÃ¤hlungsschlÃ¼ssel %<enum%s%> in Bezug auf %q#Tredundantes Verschieben in Initialisierungredundantes Verschieben in RÃ¼ckgabeanweisungredundante Redeklaration von %<constexpr%>static-Datenmember %qDRedundante Redeklaration von %q+Dredundante Redeklaration von %qD im selben GÃ¼ltigkeitsbereichref-Qualifizierer sind nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbar%<dynamic_cast%> auf Referenz fehlgeschlagenReferenz %qD wird mit sich selbst initialisiertdie Referenz %qD ist noch nicht an einen Wert gebunden, wenn sie hier verwendet wirdReferenz %qs kann nicht als %<mutable%> deklariert seinVerweis hat sowohl stmt als auch lto_stmt_uid gesetztReferenz auf %<%T::%D%> ist mehrdeutigReferenz auf %qD ist mehrdeutigReferenz auf %qD ist kein KonstantenausdruckInterner Fehler: reference to dead statementVerweis auf Funktionsparameter im dynamischen Selektorausdruck %<declare variant%>Verweis auf das Label %qD, das innerhalb des Attributausdrucks %<assume%> definiert ist, von auÃŸerhalb des AttributsReferenz auf lokale Variable %qD zurÃ¼ckgegebenReferenztyp %qT in %<#pragma omp declare reduction%>das referenzierte Argument wird hier deklariertdas referenzierte Symbol wird hier deklariertdas verweisende Argument %u vom Typ %qTRegion enthÃ¤lt mit %s partitionierten Code, ist aber nicht mit %s partitioniertRegion ist mit %s partitioniert, enthÃ¤lt aber keinen mit %s partitionierten CodeRegion von lp %i ist falschRegistername %qs ist im Adressraum %<__regio_symbol%> unbekanntRegistername fÃ¼r Nicht-Registervariable %q+D angegebenfÃ¼r %q+D wurde kein Registername angegebenRegisternummer muss bereits zur Kompilierzeit eine Konstante sein. Probieren Sie eine stÃ¤rkere OptimierungsstufeRegister von %qD fÃ¼r mehrere globale Registervariablen verwendetRegister oder Speicherausdruck fÃ¼r Ausgabemodifizierer Â»MÂ« erwartetRegister oder Speicherausdruck fÃ¼r Ausgabemodifizierer Â»NÂ« erwartetfÃ¼r %q+D angegebenes Register ist ein GCC-internes ImplementierungsdetailfÃ¼r %q+D angegebenes Register eignet sich nicht fÃ¼r DatentypRegister-Variable %qD in verschachtelter Funktion verwendetAttribute regparam und thiscall sind nicht vertrÃ¤glichgeschachtelte Funktion mit regparm wird mit %<__builtin_eh_return%> nicht unterstÃ¼tztReimplementation der Klasse %qEentspannte Transaktion in %<transaction_safe%>-Funktionentspannte Transaktion in atomarer Transaktionentfernen Sie den Aufruf von %<std::move%>entfernen Sie die %<{ }%> um den Initialisiererentfernen Sie die Klammernentfernen Sie die Klammern, um stattdessen eine Variable mit ihrem Vorgabewert zu initialisierenentfernen Sie %qsentfernen Sie den KlassenschlÃ¼ssel oder ersetzen Sie ihn durch %qsInterner Fehler: removed loop %d in loop treeSpezifikation wird von %s nach %s umbenannt
  wiederholtes %<@%> vor Objective-C-Zeichenkettewiederholtes %s im Formatersetzen Sie die Klammern durch geschweifte Klammern, um eine Variable zu deklarierenKlassenschlÃ¼ssel durch %qs ersetzenAnfrage zur impliziten fÃ¼r Umwandlung von %qT in %qT ist in C++ nicht erlaubtAbfrage des Elementes %qD in %qE, das vom Nicht-Klassentyp %qT istAnforderung des Elements %qD in %qE, das vom Zeigertyp %qT ist (vielleicht war %<->%> gemeint?)Abfrage des Elementes %qD ist mehrdeutigAbfrage des Elementes %qD ist im Gitter der Mehrfachvererbung mehrdeutigAbfrage des Elementes %qE in Nicht-Klassentyp %qTAnfrage nach Element %qE in etwas, was keine Struktur oder Variante istangeforderte %<init_priority%> %i liegt auÃŸerhalb des Bereichs [0, %i]angeforderte %<init_priority%> %i ist fÃ¼r interne Verwendung reserviertangeforderte %<init_priority%> muss ganzzahlig und konstant seindas angeforderte %qE-Attribut ist kein kommaseparierter Paar von nichtnegativen ganzzahligen Konstanten, oder es ist zu groÃŸ (maximal %d)die angeforderte ABI erfordert %<-march%>, um die %qc-Erweiterung zu ermittelnverlangte Ausrichtung %qE Ã¼bersteigt den HÃ¶chstwert %uverlangte Ausrichtung %qE ist grÃ¶ÃŸer als die maximale DateigrÃ¶ÃŸe %uVerlangte Ausrichtung %qE ist keine positive Zweierpotenzangeforderte Ausrichtung fÃ¼r %q+D ist grÃ¶ÃŸer als die implementierte Ausrichtung von %wuverlangte Ausrichtung ist keine Konstanteverlangte Ausrichtung ist keine ZweierpotenzVerlangte Ausrichtung ist keine GanzzahlkonstanteVerlangte Ausrichtung ist zu groÃŸAngeforderte Position ist kleiner als NullAngeforderte Position ist keine GanzzahlkonstanteZeichenkette erfordert ID-Argumentrequire_atom(): bad atom type requirederforderlich durch Ersetzung von %qS
  erforderlich durch die BeschrÃ¤nkungen von %q#D
  erforderlich, um die BeschrÃ¤nkung zu erfÃ¼llen
*************** gibt KEINE Garantie; auch nicht fÃ¼r MAR
*** 2509,2514 ****
  erfordertÂ»requiresÂ«-Klausel in Deklaration von Nichtfunktionstyp %qTÂ»requiresÂ«-Klausel fÃ¼r RÃ¼ckgabetyprequires-clause an type-idrequires-clause an TypedefAuflÃ¶sungs-Sub-ID %wx nicht in Objekt-DateiInterner Fehler: resolve_function(): bad function typeresolve_intrinsic(): Too many args for intrinsicresolve_operator(): Bad intrinsicresolve_ref(): Bad array referenceresolve_subroutine(): bad function typeAuflÃ¶ser-indirekte Funktion ist hier deklariertdas Ergebnis von %<%wu ^ %wu%> ist %wu; meinten Sie %<1 << %wu%> (%wu)?das Ergebnis von %<%wu ^ %wu%> ist %wu; meinten Sie %<1LL << %wu%>?das Ergebnis von %<%wu ^ %wu%> ist %wu; meinten Sie %<1e%wu%>?das Ergebnis von %<%wu ^ %wu%> ist %wu; meinten Sie Potenzbildung?Ergebnis von %<operator->()%> ergibt Nicht-Zeiger-ErgebnisErgebnis von %qE erfordert %u Bits, aber %qT hat nur %u BitsRÃ¼ckgabetyp ist keine einfache Typ-EinschrÃ¤nkungResultat mit nicht konstanter ZeichenlÃ¤ngeSignieren der RÃ¼ckgabeadresse wird nur fÃ¼r %<-mabi=lp64%> unterstÃ¼tztreturn streicht Qualifizierer %qv von Zeiger-ZieltypInterner Fehler: return edge does not point to exit in bb %dRÃ¼ckgabe von Pointer auf nicht enthaltenen Adressraumreturn erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger %q#vÂ»returnÂ« nicht gefolgt von SperreRÃ¼ckgabetyp %q#T ist unvollstÃ¤ndigRÃ¼ckgabetyp %qT der expliziten Umwandlungsfunktion kann nicht mit QualifizierungsÃ¤nderung in %qT umgewandelt werdenRÃ¼ckgabetyp ist auf %<int%> voreingestelltRÃ¼ckgabetyp ist unvollstÃ¤ndigRÃ¼ckgabetyp kÃ¶nnte Kandidat fÃ¼r Formatattribut seinRÃ¼ckgabetyp von %qD ist nicht %<int%>RÃ¼ckgabetyp von %qD ist nicht %qsRÃ¼ckgabetyp fÃ¼r FunktionAngabe des RÃ¼ckgabetyps fÃ¼r Konstruktor ist ungÃ¼ltigAngabe des RÃ¼ckgabetyps fÃ¼r Destruktor ist ungÃ¼ltigRÃ¼ckgabetyp fÃ¼r %<operator %T%> angegebenRÃ¼ckgabetyp fÃ¼r Herleitungshinweis angegebender RÃ¼ckgabewert wird nach dem Aufruf verÃ¤ndertRÃ¼ckgabewert im SpeicherunvertrÃ¤gliche RÃ¼ckgabetypender RÃ¼ckgabewert wird nach dem Aufruf verwendetRÃ¼ckgabe eines Wertes in Funktion ohne RÃ¼ckgabetypReturn-Anweisung mit Wert, in Funktion mit RÃ¼ckgabetyp %qTReturn-Anweisung ohne Wert, in %qT zurÃ¼ckgebender Funktion%<return-type-requirement%> ist keine Typ-EinschrÃ¤nkungzurÃ¼ckgegeben von %qDzurÃ¼ckgegeben von %qTRÃ¼ckgabe von %e aus einer Funktion mit inkompatiblem RÃ¼ckgabetyp %eRÃ¼ckgabe von %qT aus einer Funktion mit RÃ¼ckgabetyp %qT wandelt einen Zeiger in eine Zahl um, ohne explizite TypkonvertierungRÃ¼ckgabe von %qT aus einer Funktion mit RÃ¼ckgabetyp %qT wandelt eine Zahl in einen Zeiger um, ohne explizite TypkonvertierungRÃ¼ckgabe von %qT von Zeigertyp %qT mit inkompatibler Speicherreihenfolge fÃ¼r SkalareRÃ¼ckgabe eines Wertes von einem KonstruktorWert von Destruktor zurÃ¼ckgegebenInitialisierungsliste wird zurÃ¼ckgegebendas ZurÃ¼ckgeben der lokalen %<initializer_list%>-Variable %qD verlÃ¤ngert nicht die Lebenszeit des zugrundeliegenden ArraysRÃ¼ckgabe von Zeiger auf %qD vom Typ %e aus einer Funktion mit inkompatiblem Typ %eZeiger auf temporÃ¤re Variable wird zurÃ¼ckgegebenReferenz auf temporÃ¤ren Wert wird zurÃ¼ckgegebendas ZurÃ¼ckgeben einer temporÃ¤ren %<initializer_list%> verlÃ¤ngert nicht die Lebenszeit des zugrundeliegenden ArraysZurÃ¼ck auf Los? (siehe https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104552#c26)Interner Fehler: returns_twice call is not first in basic block %dInterner Fehler: returns_twice call is not last in basic block %dumgekehrte Speicherreihenfolge fÃ¼r Gleitkommaskalareumgekehrte Speicherreihenfolge fÃ¼r Skalareumgekehrte Speicherreihenfolge fÃ¼r Â»%smodeÂ«rechter Operand des Komma-Operators kann die Adresse der Ã¼berladenen Funktion nicht auflÃ¶senrechter Operand des Komma-Operators hat keinen Effektrechter Operand des Komma-Operators ist eine Referenz, kein Aufruf, zur Funktion %qErechter Operand des Schiebeausdrucks %q+E ist mindestens so groÃŸ wie die Genauigkeit %wu des linken Operandenrechter Operand des Schiebeausdrucks %q+E ist negativrechte PrÃ¤zisionrechte PrÃ¤zision im strfmon-FormatRechts-Schiebe-Weite >= Breite des TypsRechts-Schiebe-Weite >= Breite des VektorelementsRechts-Schiebe-Weite ist negativrechter Operand des Komma-Ausdrucks hat keinen EffektRotationsanzahl ist negativRundungsmodus fÃ¼r VAX-Floats nicht unterstÃ¼tztRundungsergebnis wird immer 0 seinRundung auf %d Bits hat keinen Effekt fÃ¼r Festkommawert mit %d Bit NachkommaanteilRoutine %qD ist hier deklariertUnterprogrammaufruf verwendet OpenACC-Parallelismus, der von der umgebenden Routine verboten wurdeUnterprogrammaufruf verwendet denselben OpenACC-Parallelismus wie enthaltende Schleiferv32e erfordert die ilp32e-ABIrv64e erfordert lp64e-ABICPU rx100 hat keine FPU-HardwareCPU rx200 hat keine FPU-Hardwareselber kanonischer Typknoten fÃ¼r die unterschiedlichen Typen %qT und %qTselbe Variable wird in %<firstprivate%>- und %<lastprivate%>-Klauseln am %<distribute%>-Konstruktdieselbe Version wurde zuvor hier definiertInterner Fehler: same_comdat_group is not a circular listInterner Fehler: same_comdat_group list across different groupsFehlzuordnung von Attributen der Bereinigungsfunktiondie ErfÃ¼llung der atomaren EinschrÃ¤nkung %qE hÃ¤ngt von sich selbst abder ErfÃ¼llungswert der wurde zuerst hier als %qE ausgewertetder ErfÃ¼llungswert der atomaren EinschrÃ¤nkung %qE Ã¤ndert sich von %qE nach %qEBitbereich der SÃ¤ttigung muss eine direkt angegebene Konstante seinBitbereich der SÃ¤ttigung muss im Bereich [%wd, %wd] liegentemporÃ¤re vorverarbeitete Dateien speichern%d %<template<>%> gefunden, %d werden fÃ¼r Spezialisierung eines Elementfunktionstemplates benÃ¶tigt%<typename %E%> sagen, wenn ein Typ gemeint istskalares Objekt %qD erfordert ein Element in InitialisierungSkalierung muss nichtnegativ seinSkalierung und Normalisierung kÃ¶nnen nicht gleichzeitig aktiv sein; wird Ã¼bersprungen
  scan.o: %sAblauf %<auto%> akzeptiert keinen Parameter %<chunk_size%>Ablauf %<runtime%> akzeptiert keinen Parameter %<chunk_size%>Plan-TeilgrÃ¶ÃŸenausdruck muss bestimmt seinBereich %qT vor %<~%> ist kein Klassennameder GÃ¼ltigkeitsbereich beginnt hierenum %qT mit eingeschrÃ¤nkter Sichtbarkeit wird vor %<-fabi-version=6%> als Typ %qT, spÃ¤ter jedoch als %qT durch %<...%> Ã¼bergebenenums mit GÃ¼ltigkeitsbereich nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarfalsche Zuordnung zwischen innerhalb und auÃŸerhalb eines GÃ¼ltigkeitsbereiches in enum %q#Tdas Score-Argument muss ein konstanter ganzzahliger Ausdruck seindas Score-Argument darf nicht negativ seinzweites Argument muss konstant seinzweites Argument muss eine Scheibe oder Zeichenkette seinzweites Argument von %q+D sollte %<char **%> seinZweites Argument fÃ¼r %<__builtin_call_with_static_chain%> muss ein Zeigertyp seinZweites Argument fÃ¼r %<__builtin_prefetch%> muss eine Konstante seinzweites Argument fÃ¼r %<va_arg%> ist ein Funktionstyp %qTzweites Argument fÃ¼r %<va_arg%> ist vom unvollstÃ¤ndigen Typ %qTzweites Argument fÃ¼r Funktion %qE muss eine konstante Zweierpotenz zwischen %qi und %qu Bits seinder zweite Ausdruck hat den Typ %qTzweiter Operand des bedingten Ausdrucks kann die Adresse der Ã¼berladenen Funktion nicht auflÃ¶senzweiter Operand des bedingten Ausdrucks hat keinen Effektzweiter Operand des bedingten Ausdrucks ist eine Referenz, kein Aufruf, zur Funktion %qEzweiter Operand fÃ¼r Bedingungsoperator ist vom Typ %<void%>, aber der dritte Operand ist weder ein Throw-Ausdruck noch vom Typ %<void%>Zweiter Parameter von %<va_start%> ist nicht letztgenanntes Argumentdas zweite, dritte und vierte Argument mÃ¼ssen konstant seinAbschnitt #%u fehlt oder ist beschÃ¤digtAbschnitt %qs fehlt oder ist beschÃ¤digtAbschnitt existiert bereits: %qsAbschnittsanker mÃ¼ssen ausgeschaltet sein, wenn Toplevel-Neuordnung ausgeschaltet istAbschnittsanker mÃ¼ssen ausgeschaltet sein, wenn Â»unit-at-a-timeÂ« ausgeschaltet istArgument des Abschnittsattributs ist keine ZeichenkettenkonstanteAbschnitts-Attribut kann nicht fÃ¼r lokale Variablen angegeben werdenAbschnitts-Attribut nicht erlaubt fÃ¼r %q+DAbschnitts-Attribute werden fÃ¼r dieses Ziel nicht unterstÃ¼tztAbschnitt von %q+D kann nicht aufgehoben werdenAbschnitt von %q+D in Konflikt mit vorheriger DeklarationAbschnitt des Aliases %q+D muss zum Abschnitt seines Ziels passenAbschnittstypkonflikt fÃ¼r Abschnitt %qsAbschnittstypkonflikt mit %qD in Abschnitt %qssiehe die Dokumentation zur Option %{%<-flto%>%} fÃ¼r weitere InformationenSpeicherzugriffsverletzungSpeicherzugriffsverletzung (Code)die ausgewÃ¤hlten fp16-Optionen sind inkompatibeldie gewÃ¤hlte Funktion ist hier deklariertSelektor %qs akzeptiert keine EigenschaftenSelektor %qs bei %C akzeptiert keine EigenschaftenSelektor %qs mehr als einmal im Satz %qs angegebenWÃ¤hler muss Â»immediateÂ« seinSelektor muss eine Ganzzahlkonstante im Bereich [0, %wi] seinSelektorsatz %qs mehr als einmal angegebenVergleich mit sich selbst ergibt immer Â»falseÂ«Vergleich mit sich selbst ergibt immer Â»trueÂ«Selbsttests sind in diesem Build nicht eingeschaltetSelbsttests sind unvertrÃ¤glich mit %<-E%>Fehlzuordnung von semantischer Einlagerunglegen Sie %qs auf mindestens %d fest, um mehr Details zu sehenalle Ortswerte auf einen bestimmten Wert festlegen (interner Schalter)der Basistyp der Menge muss ein Ordinaltyp seinInterner Fehler: set type cannot be initialized with a %qsInterner Fehler: set type does not take another integer valuesetjmp/longjmp innerhalb %<simd%>-KonstruktsMethodennamen von Settern mÃ¼ssen mit %<:%> aufhÃ¶renKern-DateigrÃ¶ÃŸenlimit kann nicht gesetzt werden: %mverdeckte Deklaration ist hiereingebaute Funktion %q#D wird Ã¼berdecktBibliotheksfunktion %q#D wird Ã¼berdecktvorherige Typdeklaration von %q#D wird Ã¼berschattetGemeinsam genutzte SSA-Namen-Infoshared und mdll sind unvertrÃ¤glichInterner Fehler: shared call_stmt:shared wird nicht unterstÃ¼tztGemeinsames rtxÃœberlauf der Shared-Memory-RegionSchiebeweite ist keine GanzzahlSchiebeausdruck %q+E lÃ¤uft Ã¼berSchiebeoperation eines Nicht-Ganzzahloperandenzu wenig Export-Daten gelesenInterner Fehler: show_array_ref(): Unknown array referenceInterner Fehler: show_array_spec(): Unhandled array shape type.Interner Fehler: show_code_node(): Bad statement codeInterner Fehler: show_expr(): Bad intrinsic in expressionInterner Fehler: show_expr(): Don't know how to show exprInterner Fehler: show_ref(): Bad component codeInterner Fehler: sibcall edges for non-call insn in bb %iSeiteneffekte werden bei %<ADDR_EXPR%>-Ã„nderung nicht neu berechnetside-effects element in no-side-effects CONSTRUCTORNebenwirkungen im Eingabeoperanden auÃŸerhalb einer FunktionNebenwirkungen im Ausgabeoperanden auÃŸerhalb einer FunktionVorzeichenbehaftete Umwandlung von %qT nach %qT Ã¤ndert den Wert von %qEVorzeichenbehaftete Umwandlung von %qT nach %qT Ã¤ndert den Wert von %qE nach %qEVorzeicheneigenschaft des Typen und Maschinenmodus %qs passen nicht zusammeneinfaches IFsimplify_intrinsic_op(): Bad operatorsimplify_min_max(): Bad type in arglisteinzelnes %<target_clones%>-Attribut wird ignoriertGrÃ¶ÃŸe %qE des Arrays %qE Ã¼bersteigt maximale ObjektgrÃ¶ÃŸe %EGrÃ¶ÃŸe %qE des Arrays %qE ist negativGrÃ¶ÃŸe %qE des Arrays Ã¼berschreitet maximale ObjektgrÃ¶ÃŸe %qEGrÃ¶ÃŸe %qE des Arrays ist negativGrÃ¶ÃŸe des Arrays bei Â»newÂ« muss Ganzzahltyp habenGrÃ¶ÃŸe ist zu groÃŸUnpassende GrÃ¶ÃŸe in Argument %d von %qEGrÃ¶ÃŸe von %q+D Ã¼berschreitet mit %E Bytes die maximale ObjektgrÃ¶ÃŸe %wuGrÃ¶ÃŸe von %qD passt nicht zur ursprÃ¼nglichen DeklarationGrÃ¶ÃŸe von %qs (%wd) unterscheidet sich von der deklarierten GrÃ¶ÃŸe (%wd)ArraygrÃ¶ÃŸe von %qD hat nicht-ganzzahligen Typen %qTGrÃ¶ÃŸe des Arrays %qD ist kein konstanter GanzzahlausdruckGrÃ¶ÃŸe des Arrays %qE Ã¼bersteigt maximale ObjektgrÃ¶ÃŸe %EArraygrÃ¶ÃŸe von %qE hat unvollstÃ¤ndigen TypArraygrÃ¶ÃŸe von %qE hat Nicht-GanzzahltypGrÃ¶ÃŸe des Arrays %qE ist negativGrÃ¶ÃŸe des Arrays %qE ist kein konstanter AusdruckArraygrÃ¶ÃŸe von %qE ist zu groÃŸGrÃ¶ÃŸe des Arrayelements ist kein Vielfaches seiner AusrichtungGrÃ¶ÃŸe des Arrays Ã¼bersteigt maximale ObjektgrÃ¶ÃŸe %qEArraygrÃ¶ÃŸe hat nicht-ganzzahligen Typen %qTGrÃ¶ÃŸe des Arrays ist kein konstanter AusdruckGrÃ¶ÃŸe des Arrays ist kein konstanter GanzzahlausdruckArraygrÃ¶ÃŸe ist zu groÃŸInterner Fehler: size of loop %d should be %d, not %dGrÃ¶ÃŸe des RÃ¼ckgabewertes von %q+D ist %u BytesGrÃ¶ÃŸe des RÃ¼ckgabewertes von %q+D ist grÃ¶ÃŸer als %wu BytesGrÃ¶ÃŸe des Zeichenkettenliterals ist zu groÃŸGrÃ¶ÃŸe des Typs %qT ist zu groÃŸ (%qE Bytes)GrÃ¶ÃŸe eines unbenannten Arrays hat unvollstÃ¤ndigen TypGrÃ¶ÃŸe eines unbenannten Arrays hat Nicht-GanzzahltypGrÃ¶ÃŸe des unbenannten Arrays ist negativGrÃ¶ÃŸe des unbenannten Arrays ist zu groÃŸGrÃ¶ÃŸe der Variablen %q+D ist zu hochGrÃ¶ÃŸenbereiche der Option %qs sollten aufsteigend seinsizeof(long double) ist 12.sizeof(long double) ist 16.Ausschnitt kann nur mit nil verglichen werdenjegliche Instanziierung mit nichtleerer Parameterpackung wÃ¤re unzulÃ¤ssigsoft-float und long-double-128 sind unvertrÃ¤glicheinige Kandidaten wurden ausgelassen; verwenden Sie %<-fdiagnostics-all-candidates%>, um sie anzuzeigenEinige Teile des expandierten Makros sind nicht von diesem %qs-Konstrukt erfasstnicht implementiertnicht implementiert: Entschuldigung: Semantik von static-Variable %q#D in inline-Funktion ist falsch (mehrere Kopien wÃ¤ren die Folge)Entschuldigung: Semantik der Inline-Variable %q#D ist falsch (mehrere Kopien wÃ¤ren die Folge)Quelle ist ein Zeiger auf unvollstÃ¤ndigen TypenQuelle ist kein ZeigerQuelle ist kein Zeiger auf KlasseQuelle hat nicht KlassentypenQuelle hat unvollstÃ¤ndigen KlassentypenQuellorte fÃ¼r Funktion %qD haben sich geÃ¤ndert, Profilingdaten mÃ¶glicherweise veraltetQuellobjekt %qE der GrÃ¶ÃŸe %sQuellobjekt wird hier alloziertQuellobjekt ist wahrscheinlich an Adresse nullQuellobjekt der GrÃ¶ÃŸe %s, alloziert durch %qEQuellentyp ist nicht polymorphLeerzeichen zwischen AnfÃ¼hrungszeichen und Suffix ist ab C++23 veraltetLeerzeichen gefolgt von Satzzeichen %<%c%>Spezifikation %qs hat ungÃ¼ltiges %<%%0%c%>Spezifikation %qs hat ungÃ¼ltiges %<%%@%c%>Spezifikation %qs hat ungÃ¼ltiges %<%%W%c%>Spezifikation %qs hat ungÃ¼ltiges %<%%x%c%>Spezifikation %qs ist ungÃ¼ltigSpezifikationsfehler: %<%%*%> wurde nicht durch Mustererkennung initialisiertSpezifikationsfehler: mehr als ein Argument fÃ¼r %<SYSROOT_HEADERS_SUFFIX_SPEC%>Spezifikationsfehler: mehr als ein Argument fÃ¼r %<SYSROOT_SUFFIX_SPEC%>Spezifikationsfehler: nicht erkannte Spezifikationsoption %qcSpezifikationsdatei hat keine Spezifikation zum BindenSpezifikation ist '%s'
  
! aus Spezifikation erzeugtes switch ist nur %<-%>spec_dimen_size(): Bad dimensionSpezialisierung %qT hinter Instanziierung %qTSpezialisierung von %qD nach InstanziierungSpezialisierung von %qD in anderem NamensbereichSpezialisierung von %qD muss im GÃ¼ltigkeitsbereich des Namensbereiches auftretenSpezialisierung von %qT hinter InstanziierungSpezialisierung des Alias-Template %qDSpezialisierung der implizit deklarierten speziellen ElementfunktionSpezialisierung des Variablentemplates %qD als Funktion deklariertspezialisierendes Element %<%T::%E%> erfordert Syntax %<template<>%>angegebene Grenze %E Ã¼berschreitet die GrÃ¶ÃŸe %E des Zielobjektsangegebene Grenze %E Ã¼berschreitet die maximale ObjektgrÃ¶ÃŸe %Eangegebene Grenze %E Ã¼berschreitet die GrÃ¶ÃŸe %E des Quellobjektsangegebene Grenze %E Ã¼berschreitet mÃ¶glicherweise die GrÃ¶ÃŸe %E des Zielobjektsangegebene Grenze %E Ã¼berschreitet mÃ¶glicherweise die maximale ObjektgrÃ¶ÃŸe %Eangegebene Grenze %E Ã¼berschreitet mÃ¶glicherweise die GrÃ¶ÃŸe %E des Quellobjektsangegebene Grenze %wu Ã¼berschreitet %<INT_MAX%>angegebene Grenze %wu Ã¼berschreitet maximale ObjektgrÃ¶ÃŸe %wuangegebene Grenze %wu Ã¼berschreitet die GrÃ¶ÃŸe %wu des Zielobjektsangegebene Grenze [%E, %E] Ã¼berschreitet die GrÃ¶ÃŸe %E des Zielobjektsangegebene Grenze [%E, %E] Ã¼berschreitet die maximale ObjektgrÃ¶ÃŸe %Eangegebene Grenze [%E, %E] Ã¼berschreitet die GrÃ¶ÃŸe %E des Quellobjektsangegebene Grenze [%E, %E] Ã¼berschreitet mÃ¶glicherweise die maximale ObjektgrÃ¶ÃŸe %Eangegebene Grenze [%E, %E] Ã¼berschreitet mÃ¶glicherweise die GrÃ¶ÃŸe %E des Quellobjektsangegebene Bereichsgrenze [%wu, %wu] Ã¼berschreitet %<INT_MAX%>angegebener Modus zu klein fÃ¼r AufzÃ¤hlungswerteOption %qs wurde mehrmals angegebenangegebene GrÃ¶ÃŸe %E Ã¼berschreitet die maximale ObjektgrÃ¶ÃŸe %Eangegebene GrÃ¶ÃŸe %E Ã¼berschreitet mÃ¶glicherweise die maximale ObjektgrÃ¶ÃŸe %Eangegebene GrÃ¶ÃŸe zwischen %E und %E Ã¼berschreitet die maximale ObjektgrÃ¶ÃŸe %Eangegebene GrÃ¶ÃŸe zwischen %E und %E Ã¼berschreitet mÃ¶glicherweise die maximale ObjektgrÃ¶ÃŸe %ESystemregister mit einem kurzem Namen angebenReihenfolge der Bibliotheken kommagetrennt angeben, erlaubte EintrÃ¤ge sind: log,min,pim,iso oder deren entsprechende Verzeichnisnamen m2log,m2min,m2pim,m2iso.Liste der Laufzeitmodule und deren Initialisierungsreihenfolge angebenPrÃ¤fixname fÃ¼r gemangelte Modulnamen angebenden gemangelten PrÃ¤fix fÃ¼r Modulnamen angeben, fÃ¼r alle Module in den folgenden IncludepfadenAngabe von Vektortypen mit %<__attribute__ ((mode))%> ist veraltetspecs %%include-Syntax nach %td Zeichen fehlerhaftspecs %%rename-Syntax nach %td Zeichen fehlerhaftspecs: keine %s-Spezifikation zum Umbenennen gefundenspecs: Datei fehlerhaft nach %td Zeichenspecs: unbekannter %%-Befehl nach %td Zeichenspekulative Kanten sind nicht benachbartfalsches %<>>%>; %<>%> verwenden, um eine Templateargumentliste zu beendenverdÃ¤chtige Folge von Satzzeichen %<%.*s%> am Anfang des FormatsstÃ¶rendes letztes %<%%%> im FormatverdÃ¤chtige Folge von Satzzeichen %<%.*s%> am Ende des FormatsÃ¼berzÃ¤hliges Leerzeichen am Ende des FormatsGrÃ¶ÃŸe des StapelkollisionswÃ¤chters %d muss gleich dem Sondierungsintervall %d seinStapelrahmen muss kleiner als 64k seinInterner Fehler: stack frame not a multiple of 8 bytes: %wdInterner Fehler: stack frame not a multiple of octabyte: %wdStapelrahmen zu groÃŸStapel-Ãœberwachungswert muss eine exakte Zweierpotenz seinAusdruck der Stapelgrenze wird nicht unterstÃ¼tztStapelgrenzen nicht fÃ¼r dieses Ziel unterstÃ¼tztStapelsonde fÃ¼r SVE-RahmenStapel-ÃœberprÃ¼fung erfordert %<-maccumulate-outgoing-args%> fÃ¼r KorrektheitStapel-ÃœberprÃ¼fung erfordert %<target("accumulate-outgoing-args")%> fÃ¼r KorrektheitStapelschutz schÃ¼tzt nicht Funktion: Alle lokalen Arrays sind kleiner als %d BytesStapelschutz schÃ¼tzt nicht lokale Variablen: Puffer variabler GrÃ¶ÃŸeStapelregister fÃ¼r globale Registervariable verwendetStapelgrÃ¶ÃŸe muss eine exakte Zweierpotenz seinStapelgrÃ¶ÃŸe muss grÃ¶ÃŸer als der Stapel-Ãœberwachungswert seinStapelgrÃ¶ÃŸe darf nicht grÃ¶ÃŸer als 64k seinStapelverbrauchsberechnung wird fÃ¼r dieses Ziel nicht unterstÃ¼tztStapelverbrauch ist %wu BytesStapelverbrauch kÃ¶nnte %wu Bytes seinStapelverbrauch mÃ¶glicherweise unbegrenztStapelrahmen zu groÃŸ: %d BytesOpenMP-Â»standaloneÂ«-Direktiven im Attribut %<omp::directive%> kÃ¶nnen nur in einer leeren Anweisung vorkommenStandardattribut %qE kann nur auf Funktionsdeklaratoren oder Typspezifizierer mit Funktionstyp angewendet werdendas Standardattribut %qE bezieht sich nur auf FunktionenStandardattribute inmitten von DeklarationssymbolenStandardattribute mÃ¼ssen vor den Deklarationsspezifizierern stehen, um fÃ¼r die Deklaration zu gelten, oder ihnen folgen, um fÃ¼r den Typ zu geltenStandardattribute fÃ¼r NamensrÃ¤ume mÃ¼ssen vor dem Namen des Namensraums stehenstart of RTL fragment must be on an earlier line than endAnfang der Implied-do-Schleife bei %L konnte nicht zu einem konstanten Wert vereinfacht werdenAnfang/Ende von RTL-Fragment sind in verschiedenen DateienAnweisung kann die Adresse der Ã¼berladenen Funktion nicht auflÃ¶senAnweisung hat keinen EffektAnweisung ist eine Referenz, kein Aufruf, zur Funktion %qEAnweisung ist kein KonstantenausdruckAnweisung inmitten eines Blocks fÃ¼r throw markiertAnweisung fÃ¼r throw markiert, wirft jedoch nichtsAnweisung verwendet freigegebenen SSA-Namenvolatile-Kennzeichen fÃ¼r Anweisung nicht aktuellAnweisung wird niemals ausgefÃ¼hrtAnweisung ohne EffektAnweisungs-AusdrÃ¼cke sind weder auÃŸerhalb von Funktionen noch in Template-Argumenten erlaubtstatische Behauptung gescheitertstatische Assertion fehlgeschlagen: %.*sstatische Behauptung gescheitert: %Estatische Attributdeklaration %qs fÃ¼r %q+D erfordert eine Adressestatische Kette mit Funktion, die keine verwendetstatisches Datenelement %qD in unbenannter Klassestatisches Datenelement %qE als %qs deklariertstatisches Datenelement ist nicht namenunabhÃ¤ngigStatische Deklaration von %q+D folgt nicht-statischer Deklarationstatische Initialisierung der Variablen %q+D in %<.shared%>-Speicher wird nicht unterstÃ¼tztstatic wird auf TPF-OS nicht unterstÃ¼tztstatisches Element %qD kann kein Bitfeld seinstatisches Element %qD als %<register%> deklariertstatische Elementfunktion %q#D mit Typqualifizierern deklariertstatische Elementfunktion %qD kann nicht CV-Qualifizierer habenstatische Elementfunktion %qD kann keinen ref-Qualifizierer habenÂ»staticÂ« oder Typkennzeichner in Nicht-Parameter-Arraydeklaratorstatische strukturierte Bindung ist nicht namenunabhÃ¤ngigder statische Typ %qT des Operanden ist eine nicht Ã¶ffentliche Basisklasse des dynamischen Typs %qTstatische Variable ist nicht namensunabhÃ¤ngigstatisch reservierte Instanz der Objective-C-Klasse %qEAttribute stdcall und cdecl sind nicht vertrÃ¤glichAttribute stdcall und fastcall sind nicht vertrÃ¤glichAttribute stdcall und thiscall sind nicht vertrÃ¤glichAusdruck fÃ¼r die Schrittweite verweist auf Ã¤uÃŸeren Iterator %qDSchritt der Implied-do-Schleife bei %L konnte nicht zu einem konstanten Wert vereinfacht werdenSchrittweite der implied-do-Schleife bei %L darf nicht 0 seinAnweisung (%p) nach Optimierungsdurchgang als geÃ¤ndert markiert: stmt with wrong VUSEInterner Fehler: stmts without blockSpeicherklasse %<__thread%> ungÃ¼ltig fÃ¼r Funktion %qsSpeicherklasse %<auto%> ungÃ¼ltig fÃ¼r Funktion %qsSpeicherklasse %<register%> ungÃ¼ltig fÃ¼r Funktion %qsSpeicherklasse %<thread_local%> ungÃ¼ltig fÃ¼r Funktion %qsSpeicherklasse %qD auf Templateinstanziierung angewendetSpeicherklasse %qs angegebenSpeicherklasse fÃ¼r Parameter %qE angegebenSpeicherklasse fÃ¼r Parameter %qs angegebenSpeicherklasse fÃ¼r Strukturfeld angegebenSpeicherklasse fÃ¼r Strukturfeld %qE angegebenSpeicherklasse fÃ¼r Template-Parameter %qs angegebenSpeicherklasse fÃ¼r Typnamen angegebenSpeicherklasse fÃ¼r unbenannten Parameter angegebenSpeicherklasse in %<sizeof%> angegebenSpeicherklasse in %qE angegebenSpeicherklasse in Typcast angegebenSpeicherklassenangabe in leerer Deklaration mit auf %<enum%> basierendem TypenSpeicherklassenangaben sind in friend-Funktionsdeklarationen ungÃ¼ltigSpeichergrÃ¶ÃŸe von %q+D ist nicht konstantSpeichergrÃ¶ÃŸe von %q+D ist unbekanntSpeichergrÃ¶ÃŸe von %qD wurde nicht aufgelÃ¶stSpeichergrÃ¶ÃŸe von %qD ist nicht konstantSpeichergrÃ¶ÃŸe von %qD ist unbekanntAdresse der lokalen Variable %qD wird in %qE gespeichertMerkwÃ¼rdiger GerÃ¤tename %qs nach %qs: falsches Zeichen %qcStrategiename %qs fÃ¼r Option %qs angegeben, wird jedoch fÃ¼r 32-Bit-Code nicht unterstÃ¼tztÃ¼berflÃ¼ssiges %<,%> am Ende der Elementdeklarationverirrtes %<@%> im Programmverirrtes %<\%o%> im Programmverirrtes %qc im ProgrammÃ¼berflÃ¼ssiges %qs zwischen Objective-C++ Methodenverirrtes %qs im ProgrammStreaming-Funktionen erfordern die ISA-Erweiterung %qsStreaming-Kindprozess fehlgeschlagenDer Streaming-Kindprozess wurde durch ein Signal beendetstrftime-Formate kÃ¶nnen keine Argumente formatierenZeichenkettenlÃ¤nge %qd ist grÃ¶ÃŸer als die LÃ¤nge %qd, die von ISO-C%d-Compilern unterstÃ¼tzt werden mussdas String-Literal darf kein %<\0%> enthaltenZeichenkettenliteral mit nutzerdefiniertem Suffix ist in diesem Kontext ungÃ¼ltigZuweisung mit starker Typumwandlung wurde abgefangenMÃ¶glicherweise wird starke Typumwandlung benÃ¶tigtÂ»structÂ« wurde hier definiertstruct hat keine Elementestruct hat keine benannten ElementeStrukturausrichtung muss eine kleine Zweierpotenz sein, nicht %wuStruktur, die ein flexibles Arrayelement enthÃ¤lt, ist nicht am Ende einer anderen StrukturStrukturfeldGrenze fÃ¼r StrukturgrÃ¶ÃŸe kann nur auf 8 oder 32 gesetzt werdenGrenze fÃ¼r StrukturgrÃ¶ÃŸe kann nur auf 8, 32 oder 64 gesetzt werdendie strukturierte Bindung im Namespace-Bereich ist nicht namenunabhÃ¤ngigstrukturierte Bindungsdeklarationen kÃ¶nnen erst ab %<-std=c++20%> oder %<-std=gnu++20%> %qs seinDeklaration fÃ¼r strukturierte Bindung darf nicht als %qs deklariert werdenDeklaration fÃ¼r strukturierte Bindung darf nicht als %<auto%> (C++98) deklariert werdenDeklaration fÃ¼r strukturierte Bindung darf nicht vom eingeschrÃ¤nkten %<auto%>-Typen %qT seinDeklaration fÃ¼r strukturierte Bindung darf nicht vom Typen %qT seinDeklaration fÃ¼r strukturierte Bindung festgelegt, aber nicht verwendetStrukturierte Bindung hat unvollstÃ¤ndigen Typen %qTStrukturierte Bindung verweist auf unvollstÃ¤ndigen Klassentypen %qTStrukturierte Bindung verweist auf unvollstÃ¤ndigen Typen %qTstrukturierte Bindungen in Bedingungen sind erst mit %<-std=c++2c%> oder %<-std=gnu++2c%> verfÃ¼gbarstrukturierte Bindungen sind nur mit %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbarstrukturierte Bindungen mit attribuierten Bezeichnern sind erst mit %<-std=c++2c%> oder %<-std=gnu++2c%> verfÃ¼gbarUnter-Framework-Include %s steht mit Framework-Include in KonfliktTeilobjekt %qD ist hier deklariertUnterprogramm %q+F nicht als %<Inline%> markiertUnterprogramm %q+F nicht als %<Inline_Always%> markiertIndex fehlt in Arrayreferenzindizierter Wert ist weder ein Array noch ein Zeigerindizierter Wert ist weder Array noch Zeiger noch Vektorindizierter Wert ist Zeiger auf FunktionIndizierung eines als %<register%> deklarierten Arrayswar spÃ¤ter als %s mit %u unspezifizierten Variablengrenze deklariertwar spÃ¤ter als %s mit %u unspezifizierten Variablengrenze deklariertErsetzung der ermittelten Templateargumente fÃ¼hrte zu obigen Fehlerngeschweifte Klammern um leeren KÃ¶rper in %<do%>-Anweisung empfohlengeschweifte Klammern um leeren KÃ¶rper in einer %<else%>-Anweisung empfohlengeschweifte Klammern um leeren KÃ¶rper in einer %<if%>-Anweisung empfohlenes wird empfohlen, explizite geschweifte Klammern um leeren KÃ¶rper in %<do%>-Anweisung zu setzenes wird empfohlen, explizite geschweifte Klammern zu setzen, um mehrdeutiges %<else%> zu vermeidenKlammern um %<&&%> innerhalb von %<||%> empfohlenKlammern um %<+%> in Operand von %<&%> empfohlenKlammern um %<+%> innerhalb von %<<<%> empfohlenKlammern um %<+%> innerhalb von %<>>%> empfohlenKlammern um %<-%> in Operand von %<&%> empfohlenKlammern um %<-%> innerhalb von %<<<%>Klammern um %<-%> innerhalb von %<>>%> empfohlenKlammern um %<>>%>-Ausdruck empfohlenKlammern um Arithmetik in Operand von %<^%> empfohlenKlammern um Arithmetik in Operand von %<|%> empfohlenUm Zuweisung, die als Wahrheitswert verwendet wird, werden Klammern empfohlenKlammern um Vergleich in Operand von %<!=%> empfohlenKlammern um Vergleich in Operand von %<&%> empfohlenKlammern um Vergleich in Operand von %<==%> empfohlenKlammern um Vergleich in Operand von %<^%> empfohlenKlammern um Vergleich in Operand von %<|%> empfohlenKlammern um Operand von %<!%> empfohlen, oder Ã„nderung von %<&%> in %<&&%> oder %<!%> in %<~%>Klammern um Operand von %<!%> empfohlen, oder Ã„nderung von %<|%> in %<||%> oder %<!%> in %<~%>empfohlene Alternative:empfohlene Alternativen:UnterstÃ¼tzung fÃ¼r Modus %qsUnterstÃ¼tzte Kernarchitekturen:%sSchalter %<-mcpu=%s%> steht mit dem Schalter %<-march=%s%> in Konflikt und hat dazu gefÃ¼hrt, dass die Optionen %qs hinzugefÃ¼gt wurdenSchalter %<-mcpu=%s%> steht mit dem Schalter %<-march=%s%> in KonfliktSchalter %qs beginnt nicht mit %<-%>Schalter %qs wird nicht mehr unterstÃ¼tztswitch-Bedingung hat booleschen Wertswitch springt in Anweisungs-Ausdruckswitch springt Ã¼ber OpenMP-%<allocate%>switch springt Ã¼ber VariableninitialisierungDie Standardfallbehandlung in switch fehltswitch-GrÃ¶ÃŸe ist keine Ganzzahlswitch beginnt hierswitch-Anweisung der GrÃ¶ÃŸe %lu EintrÃ¤ge ist zu groÃŸSymbol %qD, das von %qD referenziert wird, wurde hier deklariertSymbol muss definiert sein, um eine Version zu habenZeichen als Immediate-Operand verwendetZeichen sowohl mit Basis- als auch Index-Registern verwendetSymbol mit Offset im PIC-Modus verwendetsymbolische Speicherreferenzen werden nur auf z10 oder neuer unterstÃ¼tztInterner Fehler: symtab_node::verify failedArgument des Attributs Â»symverÂ« muss das Format %<Name@Nodenname%> habenInterner Fehler: symver is not exported with default visibility%<symver%> wird nur auf ELF-Plattformen unterstÃ¼tztInterner Fehler: symver target is not exported with default visibilityerzeugte Methode %qD zuerst hier erfordertSystem-Pfad %qs ist nicht absolutProduktion des Endaufrufs fehlgeschlagenEndrekursion, in dem Akkumulation mit nichtrekursivem musttail-Aufruf vermischt istEndrekursion mit Zeigern darf nur Additionen verwendenAdresse der direkten Funktion %qD wird genommenAdresse des Konstruktors %qD wird genommenAdresse des Destruktors %qD wird genommenAdresse des Ausdrucks des Typs %<void%> wird genommenZugriff auf die Adresse des gepackten Elements von %qT fÃ¼hrt mÃ¶glicherweise zu einem nicht ausgerichteten ZeigerwertAdresse eines Rvalues wird ermitteltden Betrag des vorzeichenlosen Typs %qT zu berechnen, hat keine AuswirkungDas Ermitteln der Adresse einer Marke ist nicht standardkonformZiel und Gastgeber sind %qs:%qs, erwartet werden jedoch %qs:%qsZiel-CPU unterstÃ¼tzt nicht ARM-ModusZiel-CPU unterstÃ¼tzt keine ARMv8-M-Security-ErweiterungenZiel-CPU unterstÃ¼tzt keine THUMB-BefehleZiel-CPU unterstÃ¼tzt keine ZusammenarbeitZiel-CPU unterstÃ¼tzt keine unausgerichteten ZugriffeZiel-Betriebssystem unterstÃ¼tzt keine unausgerichteten ZugriffeZielargumentZiel-Attribut oder Pragma Ã¤ndert GrÃ¶ÃŸe von %<long double%>Ziel-Attribut oder Pragma Ã¤ndert AltiVec ABIZiel-Attribut oder Pragma Ã¤ndert darwin64 ABIZiel unterstÃ¼tzt kein Aktualisieren des atomaren Profils, einfacher Modus wird ausgewÃ¤hltZielsystem unterstÃ¼tzt Funktionsversions-Dispatcher nichtZielformat unterstÃ¼tzt nicht Â»unendlichÂ«das Ziel ist nicht in der Lage, den Aufruf in einen Geschwisteraufruf zu optimierenZiel ist kein Zeiger oder ReferenzZiel ist kein Zeiger oder Referenz auf KlasseZiel ist kein Zeiger oder Referenz auf vollstÃ¤ndigen TypenZiel der Umwandlung kÃ¶nnte Kandidat ein fÃ¼r ein Formatattribut seinZiel der Initialisierung kÃ¶nnte ein Kandidat fÃ¼r Formatattribut seinzielspezifische eingebaute Funktion ist nicht verfÃ¼gbarFehlzuordnung zielspezifischer OptionenZielsystem unterstÃ¼tzt keine TestausgabenZielsystem unterstÃ¼tzt nicht das Testformat %qsZielarchitekturen fehlen hinter %qsTemplate %qD deklariertTemplate %qE in Klausel %qsTemplateargument %d ist ungÃ¼ltigTemplateargument %qE fÃ¼r Typ %qT ist keine Ãœbersetzungszeit-KonstanteHerleitung/Ersetzung von Templateargument gescheitert:Templateargument fÃ¼r %qD verwendet lokalen Typ %qTTemplate-Argument fÃ¼r %<%s %T%> benÃ¶tigtTemplate-Argumente fÃ¼r %qD passen nicht zum ursprÃ¼nglichen Template %qDTemplateklasse ohne NamenTemplate-EinschrÃ¤nkung fÃ¼r %qD fehlgeschlagenTemplatedeklaration von %<typedef%>Templatedeklaration von %q#DTemplate-Definition eines Nicht-Templates %q#DInstanziierungstiefe fÃ¼r Templates Ã¼berschreitet HÃ¶chstwert %d (%<-ftemplate-depth=%> verwenden, um dies zu erhÃ¶hen)Instanziierungstiefe fÃ¼r Templates Ã¼berschreitet HÃ¶chstwert %d beim Instanziieren von %q+D, mÃ¶glicherweise wegen Generierung der virtuellen Tabelle (%<-ftemplate-depth=%> verwenden, um den HÃ¶chstwert zu erhÃ¶hen)Template-Parameter %q+#DTemplateparameter %qD hier deklariertTemplateparameter %qD vom Typ %qT ist in ganzzahligem Konstantenausdruck nicht erlaubt, da er nicht Ganzzahl- oder AufzÃ¤hlungstyp hatTemplateparameterliste in expliziter Instanziierung verwendetangegebene Template-Parameterlisten passen nicht zu Templateparametern von %qDTemplateparameterpack %qD kann kein Standardargument habenTemplateparameterpack kann kein Standardargument habenTemplate-Parameterpacks kÃ¶nnen keine Standardargumente habenTemplate-Parameter-Typ %qT als %<friend%> deklariertTemplate-Parameter kÃ¶nnen keine Â»friendsÂ« seinTemplate-Parameter passen nicht zum Template %qDTemplateparameter nicht in partieller Spezialisierung herleitbar:Templatespezialisierung von %qD durch ISO C++ nicht erlaubtTemplatespezialisierung mit C-Bindung angegebenkeine Templatespezifizierer in Deklaration von %qD angegebenTemplate-Template-Parameter %qT in Deklaration von AbleitungshinweisTemplatetypparameter mÃ¼ssen das SchlÃ¼sselwort %<class%> oder %<typename%> verwendenTemplate mit C-BindungTemplate-ID %qD fÃ¼r %q+D passt zu keiner TemplatedeklarationTemplate-ID %qD als Deklarator verwendetTemplate-ID %qE in Deklaration des ersten Templatestemplate-id ist fÃ¼r Konstruktor in C++20 nicht erlaubttemplate-id fÃ¼r Destruktor ist in C++20 nicht erlaubtTemplate-Parameter-Templates dÃ¼rfen nicht %<virtual%> seinZwischenergebnis des nicht-literalen Typs %qT in konstantem AusdruckternÃ¤rer %<operator?:%>ternÃ¤rer %<operator?:%> in %<%E ? %E : %E%>PrÃ¼fung, ob eine Konzept-ID ein gÃ¼ltiger Ausdruck ist; fÃ¼gen Sie %<requires%> hinzu, um die ErfÃ¼llung zu prÃ¼fendie %<audit%>-Semantik sollte mindestens so stark die die %<default%>-Semantik seindas SchlÃ¼sselwort %<bool%> ist in einer Konzeptdefinition in C++20 nicht erlaubtder %<destroy%>-Ausdruck %qE sollte mit dem %<depobj%>-Argument %qE identisch seinder Ausdruck der %<device%>-Klausel muss den Wert %<1%> habender Ausdruck der %<device%>-Klausel bei %C muss den Wert %<1%> habendie %<device%>-Klausel muss vorhanden sein, wenn die %<interop%>-Klausel mehr als ein Listenelement enthÃ¤ltdas %<interrupt%>-Attribut erfordert einen MIPS32r2-Prozessor oder neuerder %<simd%>-Selektor ist in einem %<begin declare variant%>-Kontextselektor nicht zulÃ¤ssigdas Attribut %qE kann nicht auf einen SVE-Funktionstyp angewendet werdenAttribut %qE erfordert Argumentedie Architektur %qs unterstÃ¼tzt %<-m%s=2008%>die Architektur %qs unterstÃ¼tzt %<-m%s=legacy%> nichtdie Architektur %qs unterstÃ¼tzt %<-mfp32%> nichtdie Architektur %qs unterstÃ¼tzt keine DSP-Befehledie Architektur %qs unterstÃ¼tzt keine Befehle mit Sprungwahrscheinlichkeitdie Architektur %qs unterstÃ¼tzt die Befehle Â»maddÂ« und Â»msubÂ« nichtdie Architektur %qs unterstÃ¼tzt keine ungeraden Register fÃ¼r einfache Genauigkeitdie Architektur %qs unterstÃ¼tzt keine paarweisen Einzel-Befehledie Architektur %qs unterstÃ¼tzt nicht den synci-Befehldie %qs-Klausel bei %L kann nur angegeben werden, wenn der %<dispatch%>-Selektor der Konstruktionsselektormenge in der %<match%>-Klausel vorkommtdie %qs-Klausel kann nur angegeben werden, wenn der %<dispatch%>-Selektor der Konstruktionsselektormenge in der %<match%>-Klausel bei %L vorkommtdie Debug-Informationen %qs kann nicht mit vorkompilierten Headern verwendet werdendas Â» Â«-printf-Kennzeichendas Â»!Â«-strfmon-Kennzeichendas Â»#Â«-printf-Kennzeichendas Â»#Â«-strftime-Kennzeichendas Â»'Â«-printf-Kennzeichendas Â»'Â«-scanf-Kennzeichendas Â»(Â«-strfmon-Kennzeichendas Â»+Â«-printf-Kennzeichendas Â»+Â«-strfmon-Kennzeichendas Â»-Â«-printf-Kennzeichendas Â»-Â«-strfmon-Kennzeichendas Â»-Â«-strftime-Kennzeichendas Â»0Â«-printf-Kennzeichendas Â»0Â«-strftime-Kennzeichender Â»EÂ«-strftime-Modifiziererdas Â»IÂ«-printf-Kennzeichendas Â»IÂ«-scanf-Kennzeichender Â»OÂ«-Modifiziererder Â»OÂ«-strftime-Modifiziererdas Â»^Â«-strfmon-Kennzeichendas Â»^Â«-strftime-Kennzeichendas Â»_Â«-strftime-Kennzeichendas Â»aÂ«-scanf-Kennzeichendas Â»mÂ«-scanf-Kennzeichendas Â»qÂ«-Diagnose-KennzeichenDie Option Â»-sharedÂ« wird derzeit nicht fÃ¼r VAX ELF unterstÃ¼tztdie ABI fÃ¼r die Ãœbergabe eines Wertes, der Felder mit Null-Breite vor einem benachbarten 64-Bit-Gleitkommafeld enthÃ¤lt, wurde %{mit GCC 12.1%} geÃ¤ndertDas ABI der ParameterÃ¼bergabe mit %d-Byte-Ausrichtung hat sich in GCC 4.6 geÃ¤ndertdie ABI fÃ¼r die RÃ¼ckgabe eines Wertes, der Bit-Felder mit der Breite Null enthÃ¤lt, aber ansonsten ein Aggregat mit nur einem oder zwei FlieÃŸkomma-Feldern ist, wurde %{mit GCC 12.1%} geÃ¤ndertdie ABI fÃ¼r die RÃ¼ckgabe eines Wertes, der leere C++17-Basen enthÃ¤lt, aber ansonsten ein Aggregat mit nur einem oder zwei FlieÃŸkomma-Feldern ist, wurde %{mit GCC 12.1%} geÃ¤ndertdas ABI der C-StrukturÃ¼bergabe mit Bitfeldern der Breite 0 hat sich in GCC %{12.1%} geÃ¤ndertDas ABI der Struct-Ãœbergabe mit einem flexiblen Arrayelement hat sich in GCC 4.4 geÃ¤ndertdas ABI der StrukturÃ¼bergabe mit %<complex float%>-Element hat sich in GCC 4.4 geÃ¤ndertdas ABI der Union-Ãœbergabe mit %<long double%> hat sich in GCC 4.4 geÃ¤ndertDie RX100-CPU hat keine FPU-HardwareDie RX200-CPU hat keine FPU-Hardwaredie Adresse %qE ist niemals NULLdie Adresse von %qD ist kein gÃ¼ltiges Templateargumentdie Adresse von %qD ist kein gÃ¼ltiges Templateargument, weil sie keine statische Lebensdauer hatDie Adresse von %qD wird immer zu %<wahr%> auswertendie Adresse von %qD ist niemals %<null%>die Adresse von %qD ist niemals NULLdie Adresse einer Marke kann nicht in einem Konstanten-Ausdruck auftretendie Adresse des %qT-Teilobjekts von %qD ist kein gÃ¼ltiges Templateargumentdas align-Argument fÃ¼r %<__builtin_coro_promise%> muss eine Konstante seindie Ausrichtung von %<_Atomic %T%>-Feldern wurde mit %{GCC 11.1%} geÃ¤ndertdas Argument fÃ¼r %<__builtin_counted_by_ref%> muss ein Array seinDas Argument zum eingebauten %<xabort%> ein 8-Bit-Direktwert seindie Argumente fÃ¼r %qE mÃ¼ssen konstante Zeichenfolgen seindas scanf-Merkmal der ZuweisungsunterdrÃ¼ckungder Aufruf erfordert %<ifunc%>, was von diesem Ziel nicht unterstÃ¼tzt wirddie Aufrufkonvention fÃ¼r %qT Ã¤ndert sich mit %<-fabi-version=13%> (GCC 8.2)die Kombination von %qs und %qs ist mit %qs unvertrÃ¤glichder Vergleich wird zu %qE reduziertder Vergleich wird immer als %<false%> ausgewertet, da die Adresse von %qE niemals NULL sein wirdder Vergleich wird immer als %<false%> ausgewertet, da der Zeigeroperand in %qE nicht NULL sein darfder Vergleich wird immer als %<true%> ausgewertet, da die Adresse von %qE niemals NULL sein wirdder Vergleich wird immer als %<true%> ausgewertet, da der Zeigeroperand in %qE nicht NULL sein darfder Compiler kann davon ausgehen, dass die Adresse von %qD immer zu %<true%> evaluiertder Compiler kann annehmen, dass die Adresse von %qD niemals NULL istder Compiler kann annehmen, dass die Adresse von %qE niemals NULL istDie Komponente %qs ist ein PRIVATE-Typ und kann nicht Komponente von %qs sein, die PUBLIC bei %L istder in Konflikt stehende Typ aus der anderen Ãœbersetzungseinheitdie virtuelle Tabelle des in Konflikt stehenden Typs aus der anderen Ãœbersetzungseinheit ist unterschiedlich groÃŸder in Konflikt stehende Typ aus der anderen Ãœbersetzungseinheit hat virtuelle Tabelle mit unterschiedlichem Inhaltder in Konflikt stehende Typ aus der anderen Ãœbersetzungseinheit hat virtuelle Tabelle mit mehr EintrÃ¤gender in Konflikt stehende Typ aus der anderen Ãœbersetzungseinheit hat unterschiedliche RTTI-Informationder Wert von uninitialisiertem Speicher ist in konstantem Ausdruck nicht verwendbarKontrollfluss der Funktion %qD passt nicht zu ihren Profilingdaten (ZÃ¤hler %qs)der Versprechens-Typ %qT der Koroutine deklariert sowohl %<return_value%> als auch %<return_void%>der ZÃ¤hler sollte nicht kleiner als 0 sein; bitte das intrinsische %qs im Code prÃ¼fender Vorgabewert fÃ¼r die aktuelle CPU-Feineinstellung ist %d Bytesdas Richtungsargument fÃ¼r %<__builtin_coro_promise%> muss eine Konstante seinin Objective-C 1.0 gibt es keine Dot-Syntaxdie Auslassung in %qD wurde nicht vererbtdas Ereignishandle einer %<detach%>-Klausel sollte nicht in einer data-sharing-Klausel seinder Ausdruck %qE wird zu %<false%> ausgewertetder Ausdruck %qE darf keine Exception werfendie zusÃ¤tzliche Basisklasse ist hier definiertfÃ¼nftes Argument muss ein 8-Bit-Immediate seindas erste Argument eines %qs muss von booleschem Vektortyp sein und gleich viele Elemente wie das Ergebnis habender erste Unterschied der entsprechenden Definitionen ist Feld %qDder erste Unterschied der entsprechenden Definitionen ist Methode %qDder erste Parameter von %<operator new%> kann nicht das Standardargument habendas vierte Argument muss eins der AufzÃ¤hlung %qs seindie RahmengrÃ¶ÃŸe von %wu Bytes Ã¼berschreitet %wu BytesDer direkte Argument muss ein 4-Bit-Immediate seinDas direkte Argument muss ein 5-Bit-Immediate seinDas direkte Argument muss ein 8-Bit-Immediate seindie unvereinbare Auswahl wurde durch das ultimative Alias-Ziel %qD bestimmtder inkompatible Typ, der in einer anderen Ãœbersetzungseinheit definiert istder inkompatible Typ ist hier definiertdas Lambda hat keinen Â»capture-defaultÂ«Das letzte Argument muss ein 1-Bit-Immediate seinDas letzte Argument muss ein 2-Bit-Immediate seindas letzte Argument muss ein 3-Bit-Immediate seinDas letzte Argument muss ein 32-Bit-Immediate seinDas letzte Argument muss ein 4-Bit-Immediate seinDas letzte Argument muss ein 5-Bit-Immediate seinDas letzte Argument muss ein 1-Bit-Immediate seinDas letzte Argument muss ein 8-Bit-Immediate seinDas letzte muss Skalierung 1, 2, 4, 8 seinder Wert der Ortsangabe ist beschÃ¤digtder m210 hat keine Little-Endian-UnterstÃ¼tzungdas Makro %qs war noch nicht definiertder gemangelte Name von %qD hat sich zwischen %<%s=%d%> (%qD) und %<%s=%d%> (%qD) geÃ¤ndertder gemangelte Name von %qD Ã¤ndert sich zwischen %<%s=%d%> (%qD) und %<%s=%d%> (%qD)der gemangelte Name von %qD Ã¤ndert sich zwischen %<-fabi-version=%d%> und %<-fabi-version=%d%>der gemangelte Name von %qT hat sich in %<-fabi-version=20%> (GCC 15.1) geÃ¤ndertder gemangelte Name von %qT Ã¤ndert sich in %<-fabi-version=20%> (GCC 15.1)der gemangelte Name eines Thunks fÃ¼r %qD Ã¤ndert sich zwischen %<-fabi-version=%d%> und %<-fabi-version=%d%>der gemangelte Name der InitialisierungswÃ¤chter-Variable fÃ¼r %qD Ã¤ndert sich zwischen %<-fabi-version=%d%> und %<-fabi-version=%d%>der Maximalwert fÃ¼r den letzten GrÃ¶ÃŸenbereich sollte fÃ¼r Option %qs -1 seindie an %<unavailable%> angehÃ¤ngte Nachricht ist keine Zeichenkettedie Initialisierungsreihenfolge der Module wird dynamisch von M2RTS und den AnwendungsabhÃ¤ngigkeiten festgelegtDas vorletzte Argument muss ein 8-Bit-Immediate seinDer ausgelassene mittlere Operand in %<?:%> ist immer %<true%>; ausdrÃ¼cklicher mittlerer Operand wird empfohlender Operand %qE ist nicht erfÃ¼llt, dadas hereingereichte Closureobjekt wird nicht verÃ¤ndert, da es als Wert Ã¼bernommen wirddas Programm sollte auch %qD definierender Wertebereich des ZÃ¤hlers sollte im Bereich 0 bis 16 sein; bitte das intrinsische %qs im Code prÃ¼fender Wertebereich des ZÃ¤hlers sollte im Bereich 0 bis 32 sein; bitte das intrinsische %qs im Code prÃ¼fender Wertebereich des ZÃ¤hlers sollte im Bereich 0 bis 64 sein; bitte das intrinsische %qs im Code prÃ¼fender Wertebereich der Maske ist 0 bis 255der Wertebereich des Selektors sollte 0 bis 1 seinder Wertebereich des Selektors sollte 0 bis 3 seinder Wertebereich des Selektors sollte 0 bis 7 seindas Register %qs kann in %<asm%> fÃ¼r das aktuelle Ziel nicht bestraft werdenfÃ¼r %q+D angegebenes Register kann vom aktuellen Ziel nicht zugegriffen werdenfÃ¼r %q+D angegebenes Register ist nicht allgemein genug, um als eine Registervariable verwendet zu werdender erforderliche Ausdruck %qE ist ungÃ¼ltigder erforderliche Ausdruck %qE ist ungÃ¼ltig, dader erforderliche Typ %qT ist ungÃ¼ltigder erforderliche Typ %qT ist ungÃ¼ltig, dadas Ergebnis des Befehls xxspltidp ist fÃ¼r denormalisierte Eingabewerte undefiniertdas Ergebnis der Umwandlung ist nicht spezifiziert, da %qE auÃŸerhalb des Wertebereichs des Typs %qT liegtdie selben Schleifen-Iterationsvariablen %qD werden in mehreren verknÃ¼pften Schleifen verwendetdieses Ziel unterstÃ¼tzt nicht %<asm goto%> mit Ausgaben in %<asm%>drittes Argument muss ein 8-Bit-Immediate seindas dritte Argument muss eine Vergleichskonstante seinder Typ %qT der %<constexpr%>-Variable %qD ist kein Literalder zerstÃ¶rte Typ ist %qT, aber der Destruktor verweist auf %qTder Typ eines Zeigers auf eine explizite Objekt-Member-Funktion ist ein normaler Funktionszeiger-Typder Typ einer expliziten Objekt-Member-Funktion ist ein normaler Funktionstypder Wert von %qD ist in konstantem Ausdruck nicht verwendbarDer Wert des Stapelzeigers muss nach einer %<asm%>-Anweisung derselbe sein wie vor der Anweisunges gibt keine Argumente fÃ¼r %qD, die von einem Templateparameter abhÃ¤ngen, weshalb eine Deklaration von %qD verfÃ¼gbar sein musses gibt %i Kandidatenes gibt %i Kandidatendrittes Argument von %q+D sollte wahrscheinlich %<char **%> seinDrittes Argument fÃ¼r %<__builtin_prefetch%> muss eine Konstante seinDrittes Argument fÃ¼r Funktion %qE muss eine konstante Ganzzahl seindritter Operand des bedingten Ausdrucks kann die Adresse der Ã¼berladenen Funktion nicht auflÃ¶sendritter Operand des bedingten Ausdrucks hat keinen Effektdritter Operand des bedingten Ausdrucks ist eine Referenz, kein Aufruf, zur Funktion %qEdritter Operand fÃ¼r Bedingungsoperator ist vom Typ %<void%>, aber der zweite Operand ist weder ein Throw-Ausdruck noch vom Typ %<void%>diese %qs-Klausel beschÃ¼tzt nicht â€¦diese eingebaute Funktion ist nur auf dem fr405 und fr450 verfÃ¼gbardiese eingebaute Funktion ist nur auf dem fr450 verfÃ¼gbardiese eingebaute Funktion ist nur auf dem fr500 und fr550 verfÃ¼gbardiese eingebaute Funktion ist nur mit der Toolchain v3f verfÃ¼gbardiese eingebaute Funktion ist nur mit der Toolchain v3s oder v3f verfÃ¼gbardiese eingebaute Funktion wird von der Toolchain v3m nicht unterstÃ¼tztdiese eingebaute Funktion wird auf diesem Ziel nicht unterstÃ¼tztdieser Compiler unterstÃ¼tzt %qs nichtdieser Compiler unterstÃ¼tzt PowerPC nicht (%<arch%>-Option wird ignoriert)dieser Compiler unterstÃ¼tzt x86 nicht (%<-arch%>-Option wird ignoriert)diese Bedingung hat identische Zweigediese Dezimalkonstante ist nur in ISO-C90 vorzeichenlosdiese Dezimalkonstante wÃ¤re in ISO-C90 vorzeichenlosdiese Definition erfordert MVE-Typen, bitte binden Sie %qs eindiese Definition erfordert die MVE-ISA-Erweiterungdiese FlexibilitÃ¤t ist veraltet und wird demnÃ¤chst entferntdies ist ein GCC-Bug; ein Workaround ist, die aufgerufene Funktion mit dem Â»usedÂ«-Attribut zu markierendies ist ein TestDies ist die erste StandardmarkeDies ist der erste Eintrag, der diesen Wert Ã¼berschneidetdies ist der Befehl:diese Medienfunktion ist nur auf dem fr400 und fr550 verfÃ¼gbardiese Medienfunktion ist nur auf dem fr500 verfÃ¼gbardiese Operation erfordert die RVV-ISA-Erweiterungdiese Operation erfordert die SVE-ISA-Erweiterungdiese Anweisung kÃ¶nnte durchfallendieses Ziel definiert keine Spekulationsbarriere; das erzeugte Programm wird trotzdem korrekt laufen, aber irrige Spekulationen sind mÃ¶glicherweise nicht eingeschrÃ¤nktdieses Ziel unterstÃ¼tzt nicht %qsDiese Zielarchitektur ist Â»Little EndianÂ«diese Zielmaschine hat keine verzÃ¶gerten Zweigediese Warnung sollte Ã¼bersprungen werdenThread-lokale COMMON-Daten nicht implementiertThread-lokale Deklaration von %q#D folgt nicht-Thread-lokaler DeklarationThread-lokale Deklaration von %q+D folgt nicht-Thread-lokaler Deklarationthreadprivate Iterationsvariable %qDthreadprivate Variable %qE in Zielregion mit %<order(concurrent)%>-Klausel verwendetthreadprivate Variable %qE in Zielregion verwendetthreadprivate Variable %qE in unverknÃ¼pfter Task verwendetDreiwege-Vergleich von %qD hat den Typ %qT, nicht den Vergleichskategorie-TypDreiwege-Vergleich von %qD ist vom Typ %qT, der sich nicht in %qT umwandeln lÃ¤sstDrei-Wege-Vergleich von Vektorenwirft NULL, was ganzzahlig, aber kein Zeigertyp istthunk-inline wird nur mit %<-mindirect-branch-jump%> unterstÃ¼tztdie zu allozierende Variable ist hier deklariertzur Sicherheit mÃ¼ssen alle vorÃ¼bergehenden Zeiger in Umwandlung von %qT in %qT mit %<const%> qualifiziert seinum AbhÃ¤ngigkeiten zu erzeugen, mÃ¼ssen Sie entweder %<-M%> oder %<-MM%> angebenandere Fundstelle von %qs ist hierum auf ein Typelement eines Templateparameters zu verweisen, %<typename %E%> verwendenToken %u hat %<x-location == %llu%>Token %u hat %<x-location == y-location == %llu%>Token %u hat %<y-location == %llu%>zu wenige Argumente fÃ¼r %%:version-compareZu wenige Argumente fÃ¼r %<__builtin_tgmath%>zu wenige Argumente fÃ¼r eingebaute Funktion %qE, %u erwartetzu wenige Argumente fÃ¼r Konstruktor %q#Dzu wenige Argumente fÃ¼r FunktionZu wenige Argumente fÃ¼r %<va_start%>zu wenige Argumente fÃ¼r Funktion %q#DZu wenige Argumente fÃ¼r Funktion %qEzu wenige Argumente fÃ¼r Funktion %qE; %i erwartet, %i bekommenzu wenige Argumente fÃ¼r Funktion %qE; mindestens %i erwartet, %i bekommenZu wenige Argumente fÃ¼r Elementfunktion %q#Dzu wenige Argumente fÃ¼r Methode %q#Dzu wenige Templateparameterlisten in Deklaration von %qDzu wenige Templateparameterlistentoo large function value type, needs %d registers, have only %d registers for thiszu spÃ¤t fÃ¼r Â»#Â«-Direktive, um Debug-Verzeichnis festzulegenzu viele %<#pragma options align=reset%>zu viele %<...%> in Lambda-Capturezu viele %<always%>-Modifiziererzu viele %<always%>-Modifizierer bei %Lzu viele %<close%>-Modifiziererzu viele %<close%>-Modifizierer bei %Lzu viele %<defaultmap%>-Klauseln mit %qs-Kategoriezu viele %<defaultmap%>-Klauseln mit nicht angegebener Kategoriezu viele %<if%>-Klauselnzu viele %<if%>-Klauseln mit %qs-Modifiziererzu viele %<if%>-Klauseln ohne Modifiziererzu viele %<match%>-Klauselnzu viele %<otherwise%>- oder %<default%>-Klauseln in %<metadirective%>zu viele %<otherwise%>- oder %<default%>-Klauseln in %<metadirective%> bei %Czu viele %<present%>-Modifiziererzu viele %<present%>-Modifizierer bei %Lzu viele %<self%>-Klauselnzu viele %<static%>-Argumentezu viele %qs-Klauselnzu viele %qs-Klauseln an einem Task-Konstruktzu viele Alternativen in %<asm%>zu viele Argumentezu viele Argumente fÃ¼r %%:dumpszu viele Argumente fÃ¼r Formatzu viele Argumente fÃ¼r teilweise Spezialisierung %qTzu viele Argumente, die in SGPR-Registern Ã¼bergeben werdenzu viele Argumente fÃ¼r %%:version-comparezu viele Argumente fÃ¼r %%:compare-debug-self-optzu viele Argumente fÃ¼r %%:version-comparezu viele Argumente fÃ¼r eingebaute Funktion %qE, nur %d erwartetzu viele Argumente fÃ¼r Konstruktor %q#Dzu viele Argumente fÃ¼r Funktionzu viele Argumente fÃ¼r Funktion %q#Dzu viele Argumente fÃ¼r Funktion %qEzu viele Argumente fÃ¼r Funktion %qE; %i erwartet, %i bekommenzu viele Argumente fÃ¼r makezu viele Argumente fÃ¼r Elementfunktion %q#Dzu viele Argumente fÃ¼r Methode %q#Dzu viele Argumente fÃ¼r Methode %qE; %i erwartet, %i bekommenzu viele atomare Klauselnzu viele geschweifte Klammern um Initialisierung fÃ¼r %qTzu viele geschweifte Klammern um skalare Initialisierung fÃ¼r Typ %qTInterner Fehler: too many exception handling edges in bb %izu viele Dateinamen angegeben; geben Sie %<%s %s%> fÃ¼r das Aufrufformat einzu viele Funktionsargumente fÃ¼r eBPFzu viele Initialisierer fÃ¼r %qTzu viele EingabedateienInterner Fehler: too many loop exits recordedzu viele Speicherreihenfolge-Klauselnzu viele Ã¶ffnende KlammernInterner Fehler: too many outgoing branch edges from bb %izu viele GrÃ¶ÃŸenbereiche in Option %qs angegebenzu viele Templateheader fÃ¼r %qD (sollten %d sein)zu viele Templateparameterlisten in Deklaration von %qDzu viele Templateparameterlistenzu viele Werte in RÃ¼ckgabeanweisungzu viele Variablen in Bereichsklausel mit KanalZu viel Stapelspeicher zu entsorgen: %dZu viel Stapelspeicher vorzubereiten: %dKomma-AusdrÃ¼cke auf hÃ¶chster Ebene in einem Arrayindex haben seit C++23 eine andere Bedeutungungeklammerte Komma-AusdrÃ¼cke in Arrayindex-AusdrÃ¼cken sind veraltetDeklaration hÃ¶chster Ebene von %qs gibt %<auto%> anToplevel-Neuordnung muss ausgeschaltet sein, wenn Â»unit-at-a-timeÂ« ausgeschaltet istGesamtgrÃ¶ÃŸe und ElementgrÃ¶ÃŸe mÃ¼ssen direkt angegebene Konstanten sein, beide ungleich nullGesamtgrÃ¶ÃŸe der lokalen Objekte %wu Ã¼berschreitet das Maximum %wuGesamtgrÃ¶ÃŸe der lokalen Objekte Ã¼berschreitet das Maximum %wuGesamtgrÃ¶ÃŸe der lokalen Objekte ist zu hochGesamtgrÃ¶ÃŸe der lokalen Variablen Ã¼bersteigt Grenze der Architekturtp_first_run must be non-negativetraditionelles C bietet keinen separaten Namensraum fÃ¼r Marken an, Bezeichner %qE steht in Konflikttraditionelles C weist Funktionsdefinitionen im ISO-C-Stil zurÃ¼cktraditionelles C lehnt automatische Gesamt-Initialisierung abtraditionelles C lehnt Initialisierung von unions abtraditionelles C weist Zeichenkettenkonstantenverkettung zurÃ¼cktraditionelles C weist den unÃ¤ren Plus-Operator zurÃ¼ckabschlieÃŸendes %<,%> in Argumenten fÃ¼r %<#pragma GCC diagnostic ignored_attributes%>abschlieÃŸendes %<,%> in Argumenten fÃ¼r %<-Wno-attributes=%>das letzte Argument von %<__type_pack_element%> ist kein TypabschlieÃŸendes Array %qT sollte nicht als flexibles Arrayelement verwendet werdenangehÃ¤ngter RÃ¼ckgabetyp %qT den Ableitungshinweises ist keine Spezialisierung von %qTnachgestellter RÃ¼ckgabetyp nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarTrait-Eigenschaft %qs mehr als einmal im %qs-Selektor angegebenTrampolin fÃ¼r geschachtelte Funktion %qD erzeugttransaktionsbasierter Speicher wird von %<-fsanitize=address%> nicht unterstÃ¼tzttransaktionsbasierter Speicher wird von %<-fsanitize=kernel-address%> nicht unterstÃ¼tzttransaktionsbasierter Speicher wird von Nicht-Aufruf-Ausnahmen nicht unterstÃ¼tztTransformierende intrinsische Routine %qs bei %L ist in einem Initialisierungs-Ausdruck nicht erlaubtTrap-Modus fÃ¼r VAX-Floats nicht unterstÃ¼tzttree check: %s, have %s in %s, at %s:%dtree check: accessed elt %d of %<tree_int_cst%> with %d elts in %s, at %s:%dtree check: accessed elt %d of %<tree_vec%> with %d elts in %s, at %s:%dtree check: accessed operand %d of %<omp_clause %s%> with %d operands in %s, at %s:%dtree check: accessed operand %d of %s with %d operands in %s, at %s:%dtree check: did not expect class %qs, have %qs (%s) in %s, at %s:%dtree check: expected %<omp_clause %s%>, have %qs in %s, at %s:%dtree check: expected class %qs, have %qs (%s) in %s, at %s:%dtree check: expected none of %s, have %s in %s, at %s:%dtree check: expected tree that contains %qs structure, have %qs in %s, at %s:%dBaumcode %qs wird in LTO-StrÃ¶men nicht unterstÃ¼tztBaumliste endet bei Tiefe %ies wurde versucht, eine Gleitkommadivision mit Rest an %qT durchzufÃ¼hrenInterner Fehler: true/false edge after a non-GIMPLE_COND in bb %dversuchen Sie, den Operator in eine %<const%>-Memberfunktion umzuwandelnKlammern um die Type-ID sollten entfernt werdenstattdessen %qE verwendenVersuch, %qD in Instanziierung eines generischen Lambdas einzufangenes wird versucht, einen Nicht-Ganzzahltyp als Bitfeld zu kodierenLesen der struct konnte wegen Syntaxfehlern nicht beendet werdenVersuch, die Klasse %qT zu einem Â»friendÂ« des globalen GÃ¼ltigkeitsbereiches zu machenTuning-Zeichenkette fehlt in Option Â»%sÂ«internes Debugging des Compilers fÃ¼r quad,token,line,all einschalten (interner Schalter)internes Debugging des Compilers einschalten (interner Schalter)internes Verfolgen der Prozedur-Zeilennummern einschalten (interner Schalter)alle ÃœberprÃ¼fungen fÃ¼r Division und Modulus durch 0 fÃ¼r ordinale Werte einschaltenalle BereichsprÃ¼fungen fÃ¼r numerische Werte einschaltenalle Software-LaufzeitÃ¼berprÃ¼fungen einschalten (das ist die AbkÃ¼rzung fÃ¼r -fnil -frange -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue)schaltet die KompilierzeitprÃ¼fung der Case-Anweisung ein, wenn ein Ausdruck eines Enumtyps verwendet wird.schaltet die Kompilierzeitanalyse im ersten Basisblock einer Prozedur ein, die den Zugriff auf nicht initialisierte Daten erkennt.schaltet die Kompilierzeitanalyse ein, um den Zugriff auf nicht initialisierte Variablen zu erkennen, die ÃœberprÃ¼fung kann durch known,cond,all angegeben werden.LaufzeitÃ¼berprÃ¼fung fÃ¼r Funktionen einschalten, deren AusfÃ¼hrung nicht mit einer RETURN-Anweisung endetschaltet LaufzeitÃ¼berprÃ¼fung ein, ob eine CASE-Anweisung einen ELSE-Zweig benÃ¶tigt, der jedoch nicht angegeben warLaufzeitÃ¼berprÃ¼fung fÃ¼r Gleitkommazahlen, die den GÃ¼ltigkeitsbereich verlassen, einschaltenLaufzeitÃ¼berprÃ¼fung einschalten fÃ¼r ganze Zahlen, die ihren Wertebereich verlassenLaufzeitÃ¼berprÃ¼fung fÃ¼r versuchten Datenzugriff Ã¼ber NIL-Zeiger einschaltenschaltet LaufzeitÃ¼berprÃ¼fung fÃ¼r Teilabschnitte, Arrayindizes und NIL-Zeiger-Indirektion einzwei aufeinander folgende %<[%> dÃ¼rfen nur ein Attribut einfÃ¼hrenzwei unterschiedliche Ã¤uÃŸere Iterationsvariablen %qD und %qD werden in einer einzigen Schleife verwendetzwei oder mehr Datentypen in Deklaration von %qszwei oder mehr Datentypen in Deklarationzwei oder mehr Abschnitte fÃ¼r %sTyp %<__vector_pair%> erfordert die Option %qsTyp %<__vector_quad%> erfordert die Option %qsArgument vom Typ %q#T wurde an %<delete%> Ã¼bergeben, Zeiger erwartetTyp %qE hat einen benutzerdefinierten KonstruktorTyp %qE hat einen benutzerdefinierten DestruktorTyp %qE hat keinen aufrufbaren Standard-KonstruktorTyp %qE hat virtuelle ElementfunktionenTyp %qT (typedef von %qT) verletzt die One-Definition-Rule von C++Typ %qT (in unbenanntem Namensraum definiert) kann nicht passen (Ã¼ber Grenzen von Ãœbersetzungseinheiten hinaus)Typ %qT (in unbenanntem Namensraum definiert) kann nicht zum Typ %qT passen (Ã¼ber Grenzen von Ãœbersetzungseinheiten hinaus)Typ %qT hat keine bekannte GrÃ¶ÃŸeTyp %qT fÃ¼r explizite Instanziierung %qD passt nicht zum deklarierten Typ %qTTyp %qT ist kein Basistyp fÃ¼r Typ %qTTyp %qT ist keine direkte Basis von %qTTyp %qT ist keine direkte oder virtuelle Basis von %qTTyp %qT ist zu groÃŸTyp %qT verletzt fÃ¼r sich genommen die One-Definition-Rule von C++Typ %qT des Arguments fÃ¼r %<__builtin_launder%> muss ein Objektzeiger seinTyp %qT des Templatearguments %qE hÃ¤ngt von Templateparameter abTyp %qT des Templatearguments %qE hÃ¤ngt von Templateparametern abTyp %qT sollte Typ %qT entsprechenTyp %qT verletzt die One-Definition-Rule von C++Typ %qT ohne Bindung fÃ¼r Funktionsdeklaration %q#D mit Bindung deklariertTyp %qT ohne Bindung verwendet, um Variable %q#D mit Bindung zu deklarierenTyp %qs entspricht nicht dem Protokoll %qETyp %qs ist kein AusdruckTyp %qs verletzt die One-Definition-Rule von C++Typ %s unterscheidet sich durch %<TYPE_ALIGN%>Typ %s unterscheidet sich durch %<TYPE_MODE%>Typ %s unterscheidet sich durch %<TYPE_SIZE%>Typ %s unterscheidet sich durch %<TYPE_USER_ALIGN%>Typ %s ist kein undurchsichtiger AusdruckTyp %s ist nicht im undurchsichtigen ModusTypbehauptung nur gÃ¼ltig fÃ¼r SchnittstellentypenTypattribute ignoriert, nachdem Typ bereits definiert ist%<int%> ist Standardtyp in Deklaration von %qE%<int%> ist Standardtyp in Typ-DeklarationTyp hat keine MethodenTyp ist veraltetTyp ist veraltet: %sInterner Compilerfehler: type is not compatible with its variantTyp ist nicht verfÃ¼gbarTyp ist nicht verfÃ¼gbar: %stype mismatch between an SSA_NAME and its symbolunpassender Typ fÃ¼r Â»caseÂ«-Marke in switch-AnweisungunvertrÃ¤gliche Typen in %qsTypunvertrÃ¤glichkeit in %qs-AusdruckTypunvertrÃ¤glichkeit in %qs-VerweisTyp passt nicht in binÃ¤rem AusdruckTyp passt nicht in bedingtem AusdruckunvertrÃ¤gliche Typen in Parameter %iTyp muss cv-qualifizierter %<auto%> oder Referenz auf cv-qualifizierten %<auto%> seinTypname %qs sollte dem Typnamen %qs entsprechenTypname als Funktion, die eine Funktion zurÃ¼ckgibt, deklariertTypname als Funktion, die ein Array zurÃ¼ckgibt, deklariertTyp des %<asm%>-Operanden %qE konnte nicht ermittelt werdenTyp des %<depobj%>-Ausdrucks ist nicht %<omp_depend_t%>Typ von %qD ist auf %<int%> voreingestelltTyp von %qD passt nicht zur ursprÃ¼nglichen DeklarationTyp von %qE ist unbekanntTyp des Arrays %q+D vervollstÃ¤ndigt UnvertrÃ¤glichkeit mit impliziter InitialisierungTyp des Bitfeldes %qs ist eine Erweiterung des GCCTyp des formalen Parameters %d ist unvollstÃ¤ndigTyp des Iterators %qD verweist auf Ã¤uÃŸeren Iterator %qDTyp der Eigenschaft %qD in Konflikt mit vorheriger Deklarationunpassende PrÃ¤zision fÃ¼r Typ in switch-AnweisungTypumgehung schaltet die Reihenfolge der Skalarspeicherung umTypqualifizierer in leerer Deklaration mit auf %<enum%> basierendem TypenTypkennzeichner an Umwandlungs-RÃ¼ckgabetyp ignoriertTypkennzeichner an Funktions-RÃ¼ckgabewert ignoriertTyp fÃ¼r Vektor-Â»deleteÂ« ist weder Zeiger- noch Arraytyptyptransparentes %q#T kann nicht transparent gemacht werden, weil der Typ des ersten Feldes anderes ABI als gesamte Klasse hattyptransparentes %q#T hat keine Feldertyptransparente Klasse %qT hat Basisklassentyptransparente Klasse %qT hat virtuelle FunktionenInterner Compilerfehler: type variant differs by %sInterner Compilerfehler: type variant has different %<TREE_TYPE%>Interner Compilerfehler: type variant has different %<TYPE_BINFO%>Interner Compilerfehler: type variant has different %<TYPE_FIELDS%>Interner Compilerfehler: type variant has different %<TYPE_SIZE_UNIT%>Interner Compilerfehler: type variant has different %<TYPE_VFIELD%>Interner Compilerfehler: type variant with %<TYPE_ALIAS_SET_KNOWN_P%>Interner Compilerfehler: type variant%'s %<TREE_TYPE%>Interner Compilerfehler: type variant%'s %<TYPE_BINFO%>Interner Compilerfehler: type variant%'s %<TYPE_SIZE_UNIT%>Typ war vorher als %qE deklariertInterner Compilerfehler: type%'s %<TREE_TYPE%>Interner Compilerfehler: type%'s %<TYPE_BINFO%>Interner Compilerfehler: type%'s %<TYPE_SIZE_UNIT%>Type-Punning auf unvollstÃ¤ndigen Typen kann strict-aliasing-Regeln verletzentype-specifier ist in Lambda ungÃ¼ltigTyp/Wert des Arguments %d passt nicht in Template-Parameterliste fÃ¼r %qDtypedef %q+D als %<_Noreturn%> deklarierttypedef %q+D als %<inline%> deklarierttypedef %qD ist initialisiert (verwenden Sie stattdessen lieber %<__typeof__%>)typedef %qD ist initialisiert (stattdessen %qs verwenden)typedef %qD lokal definiert, aber nicht verwendetÂ»typedefÂ«-Deklaration in Parameterdeklaration ungÃ¼ltigÂ»typedefÂ« als %<auto%> deklariertmit %<typedef%> definierte Funktion darf keinen Rumpf %<{ â€¦ }%> habenmit %<typedef%> definierte Elementfunktion darf keinen Rumpf %<{ â€¦ }%> habentypedef-Name darf kein Spezifizierer mit geschachteltem Namen seintypedef-Name %qD als Destruktor-Deklarator verwendetTypen nicht ganz kompatibelTypen unterscheiden sich im VorzeichenbesitzTypen haben unterschiedliche Anzahl von ParameternTypen dÃ¼rfen nicht innerhalb von %<__builtin_classify_type%>-Aufrufen definiert werdenTypen dÃ¼rfen nicht in %<decltype%>-AusdrÃ¼cken definiert werdenTypen dÃ¼rfen nicht in %<noexcept%>-AusdrÃ¼cken definiert werdenTypen dÃ¼rfen nicht in einem %qs-Ausdruck definiert werdenTypen dÃ¼rfen nicht in einem %<typeid%>-Ausdruck definiert werdenTypen dÃ¼rfen nicht in einem Â»conversion-type-idÂ« definiert werdenin einer for-Bereichs-Deklaration dÃ¼rfen keine Typen definiert werdenTypen dÃ¼rfen nicht in einem Â»newÂ«-Ausdruck definiert werdenTypen dÃ¼rfen nicht in einem Â»new-type-idÂ« definiert werdenTypen dÃ¼rfen nicht in Alias-Templatedeklarationen definiert werdenTypen dÃ¼rfen nicht in einer Ausnahmespezifikation definiert werdenTypen dÃ¼rfen nicht in Typumwandlungen definiert werdenTypen dÃ¼rfen nicht in Bedingungen definiert werdenneue Typen dÃ¼rfen nicht in einem RÃ¼ckgabetyp definiert werdenTypen dÃ¼rfen nicht in enum-base definiert werdenTypen dÃ¼rfen nicht in Ausnahmedeklarationen definiert werdenTypen dÃ¼rfen nicht in explicit-specifier definiert werdenTypen dÃ¼rfen nicht in Iteratortyp definiert werdenTypen dÃ¼rfen nicht in Parametertypen definiert werdenin Template-Argumenten dÃ¼rfen keine Typen definiert werdenTypen dÃ¼rfen nicht innerhalb von %<__builtin_offsetof%> definiert werdenTypspezifikation in ALLOCATE bei %LWirkliche Stelle des gestapelten Parameters kann nicht berechnet werden%qT kann nicht aus %qE hergeleitet werdenLambda-RÃ¼ckgabewert von %qE kann nicht hergeleitet werdenDateiname fÃ¼r SARIF-Ausgabe kann nicht ermittelt werden%qs kann nicht emuliert werdenKein Register zum Auslagern gefundenin Klasse %qs konnte kein Register fÃ¼r Ãœberlauf gefunden werdenOperator %qD fÃ¼r Zeichenliterale mit Argument %qT kann nicht gefunden werdennumerischer literaler Operator %qD konnte nicht gefunden werdenliteraler Operator fÃ¼r Zeichenketten %qD mit Argumenten %qT, %qT konnte nicht gefunden werdender Versprechens-Typ fÃ¼r diese Koroutine wurde nicht gefundenNeuladungen fÃ¼r unmÃ¶gliche EinschrÃ¤nkungen konnten nicht generiert werden:Neuladungen konnten nicht generiert werden fÃ¼r:ABI %qs kann nicht mit Befehlssatz %qs implementiert werdenStandard-Linkerscript %qs kann nicht in den Bibliotheks-Suchpfaden gefunden werden%qs fÃ¼r SARIF-Ausgabe kann nicht geÃ¶ffnet werden: %mÂ»%qsÂ« kann nicht geÃ¶ffnet werden: %mÂ»%sÂ« kann nicht zum Lesen geÃ¶ffnet werden: %mÂ»%sÂ« kann nicht zum Schreiben geÃ¶ffnet werden: %mdynamische AbhÃ¤ngigkeit %qs kann nicht geÃ¶ffnet werdenDatei kann nicht geÃ¶ffnet werdenLogdatei %<vtv_class_set_sizes.log%> kann nicht geÃ¶ffnet werden: %mLogdatei %<vtv_count_data.log%> kann nicht geÃ¶ffnet werden: %mLogdatei %<vtv_set_ptr_data.log%> kann nicht geÃ¶ffnet werden: %mInformationen fÃ¼r Plugin %qs kÃ¶nnen nicht registriert werden: Pluginname nicht gefundenweitere importierte Quellencodestellen kÃ¶nnen nicht dargestellt werdendie VorwÃ¤rtsreferenz in der Definition kann nicht aufgelÃ¶st werden%qs kann nicht als PIC-Register verwendet werdennicht verfÃ¼gbare Zeichenkettenoperation zum Inlinen von %qsunausgeglichenes Satzzeichen %<%c%> im Formatunausgeglichenes Satzzeichen %qc im Formatunbegrenzte Verwendung von %<alloca%>unbegrenzte Verwendung von Array mit variabler LÃ¤ngeunbedingtes %2d niemals ausgefÃ¼hrt
  unbedingtes %2d, genommen: %s
! nicht deklarierter Selektor %qEundefiniertes Verhalten, wenn zweiter Parameter von %<va_start%> mit %<register%>-Speicherklasse deklariert wirdbenannter Operand %qs ist nicht definiertzugrunde liegender Typ %qT von %qT muss ein ganzzahliger Typ seinfalsche Zuordnung des zugrunde liegenden Typs in enum %q#TunvollstÃ¤ndig angegebenes %qD wird in seinem Initialisierer referenziert%qE wurde in diesem GÃ¼ltigkeitsbereich bereits deklariert und ist unvollstÃ¤ndig deklariertunexpandierte Parameterpackunge in AufzÃ¤hlungskonstante in Lambdaunexpandiertes Parameterpack in lokaler Klasse in LambdaUnerwarteter Â»!$OMP ATOMICÂ«Ausdruck bei %Lunerwartetes %<:%> bei %Cunerwartetes %<else%> gefundenunerwarteter AST der Art %sUnerwartetes Dateiendeunerwartete rechte Seite in Zuweisungunerwartete Architektur fÃ¼r %<target()%>-Attribut: Fehlerhafte Zeichenfolge %qs gefundenunerwartete Architektur fÃ¼r %<target()%>-Attribut: muss mit + oder rv beginnenunerwartete Architektur fÃ¼r %<target()%>-Attribut: muss mit rv32 beginnen, ist jedoch %qsunerwartete Architektur fÃ¼r %<target()%>-Attribut: muss mit rv64 beginnen, ist jedoch %qsunerwartetes Argumentunerwartetes Argument fÃ¼r %<msp430_select_hwmult_lib%>: %sunerwartetes Attributunerwarteter Basistyp in cris_print_baseunerwartete Angaben im ELF-Headerunerwarteter Fehler beim Ã–ffnen von %<devices.csv%>unexpected expression %qE of kind %sunerwarteter Dateiname %s in Linker-AuflÃ¶sungsdatei. %s erwartetunerwartetes erstes Argument fÃ¼r %<msp430_select_hwmult_lib%>: %sunerwarteter Indextyp in cris_print_indexunerwartetes SchlÃ¼sselwort; entfernen Sie Leerzeichen zwischen AnfÃ¼hrungszeichen und SuffixbezeichnerInterner Fehler: unexpected mapping nodeunerwartete Moduldirektiveunerwarteter multiplikativer Operandunerwarteter Offsetunerwarteter Operandunerwarteter Operand: %dunerwarteter Platzhalter in eingeschrÃ¤nktem ErgebnistypInterner Fehler: unexpected pointer mapping nodeunerwarteter Verweis auf Paketunerwartete Seiteneffekte in Adresseunerwartete Textadresse:unerwarteter Typ fÃ¼r Array-LÃ¤nge: %qsunbehandelte Ausrichtung fÃ¼r %<#pragma nomember_alignment%>unbehandelte Architekturunbehandelte Argumente %qs und %qs fÃ¼r %<msp430_set_driver_var%>unbehandelter Code nach dem Aufrufunbehandelter Ausdruckunbehandelter Ausdruckstypnicht initialisiertes %<const %D%>nicht initialisiertes %<const %qD%> ist in C++ ungÃ¼ltignicht initialisierte Konstante in %<new%> von %q#Tnicht initialisiertes konstantes Element in %q#Tnicht initialisiertes konstantes Element in %q#T verwendet %<new%> ohne new-Initialisierungnicht initialisiertes konstantes Element %qT ist in C++ ungÃ¼ltignicht initialisiertes konstantes Element in Basis %q#T von %q#Tnicht initialisiertes konstantes Element in Basis %q#T von %q#T verwendet %<new%> ohne new-Initialisierungnicht initialisiertes Referenzelement in %q#Tnicht initialisiertes Referenzelement in %q#T verwendet %<new%> ohne new-Initialisierungnicht initialisiertes Referenzelement in Basis %q#T von %q#Tnicht initialisiertes Referenzelement in Basis %q#T von %q#T verwendet %<new%> ohne new-Initialisierungnicht initialisierte Variable %q+D in Programmspeicherbereich platziertuninitialisierte Variable %qD in %<constexpr%>-Kontextuninitialisierte Variable %qD in %<constexpr%>-Funktionunion kann nicht transparent gemacht werdenÂ»unionÂ« wurde hier definiertUnion hat keine ElementeUnion hat keine benannten ElementeUnion-Element %q+D mit nichttrivialem %qDunbekannte Option %qs fÃ¼r %<#pragma GCC aarch64%>unbekannte Option %qs fÃ¼r %<#pragma GCC arm%>unbekanntes Modell %qs fÃ¼r %<#pragma extern_model%>unbekannter Name %qs fÃ¼r %<#pragma member_alignment%>unbekannte Option %qs fÃ¼r %<#pragma riscv intrinsic%>unbekannter Schalter %<-mdebug-%s%>unbekannte Ausgabe %qs des %<asm%>-Schaltersunbekannter C++-Standard %qsunbekannte CRIS-CPU-Versionsangabe in %<-mtune=%>: %sunbekannte CRIS-Versionsangabe in %<-march=%> oder %<-mcpu=%>: %sUnbekannte Schutzstufe %qs fÃ¼r Kontrollflussunbekannter IRA-Algorithmus %qsunbekannte IRA-Region %qsunbekannte LDP/STP-Richtlinie %qsUnbekanntes LTO-Partitionierungs-Modell %qsunbekannte Stufe %qs fÃ¼r Live-Patchingunbekannter OpenMP-Direktiven-Name im Argument des Attributs %qsunbekannter OpenMP-Direktiven-Name im Argument der %qs-Klauselunbekannte SIMD-Erweiterung (%qs ist ausgeschaltet, wÃ¤hrend %qs eingeschaltet ist), SIMD wird ausgeschaltetUnbekannte Stufe %qs fÃ¼r Stapel-Wiederverwendungunbekanntes TLS-Modell %qsunbekannte Aktion %qE fÃ¼r %<#pragma pack%> - ignoriertunbekannte Ausrichtung %qs fÃ¼r Option %qs angegebenUnbekanntes architekturspezifisches SpeichermodellUnbekannte Architekturspezifikation in Speichermodell %wi fÃ¼r %qDunbekannte Einstellung %qs fÃ¼r Arraygrenzenunbekannte ArraygrÃ¶ÃŸe in Â»deleteÂ«unbekanntes Annahme-Klausel %qsunbekanntes Attribut %qEunbekanntes Attribut %qsunbekannte autovec-Einstellung %qsunbekannter Basisblock-Umsortierungs-Algorithmus %qsInterner Fehler: unknown block specifierunbekannter eingebauter direkter Operandentyp fÃ¼r Operand %dunbekanntes Callback-Ereignis von Plugin %s registriertunbekannte Einstellung %qs fÃ¼r PrÃ¼faktionunbekannte kompilierte Modulschnittstelle: %sunbekanntes Konvertierungstyp-Zeichen %qc im FormatUnbekannte Kernarchitektur %qs in %qs angegebenunbekannte CPU %qs fÃ¼r %<-mtune%>unbekannter Crate-Typ: %qsunbekannter Entmangelstil %qsunbekanntes ZielUnbekannte Direktivennameunbekannter Fehler beim Lesen von %s aus %<devices.csv%>unbekannte Art Ã¼berschÃ¼ssiger Genauigkeit %qsunbekanntes Flag wurde in %<-moverride=%s%> Ã¼bergeben (%s)unbekannte Art der Gleitkomma-KÃ¼rzung %qsunbekannter fremder Laufzeit-Bezeichner %qsunbekannter fremder Laufzeit-Bezeichner %qwdunbekannte PrÃ¼fstufe %qs fÃ¼r hardcfr noreturnunbekannte Header-Art %qsunbekannter BefehlsmodusInterner Fehler: unknown internal function %qEunbekannter lam-Typ %qsunbekannte Linkerausgabe %qsUnbekannter Maschinenzustand %qEFalscher Kopierbefehl:unbekannter nativer FPU-Typ %<0x%x%>, %qs fehlgeschlagenunbekannte native Basisarchitektur %<0x%x%>, %qs fehlgeschlagenUnbekannte Offload-ABI %qsunbekannter Operandenbuchstabe: Â»%cÂ«unbekannter Operator %qs in %%:version-compareunbekannte Option %q.*s in %<-fopt-info-%s%>Option hinter %<#pragma GCC diagnostic%> Art unbekanntunbekannte Option fÃ¼r %<%s=%s%>unbekannte Option fÃ¼r %<-mrecip=%s%>unbekannte Panikstrategie %qsUnbekannter Parameter fÃ¼r Option %<-mtune-ctrl%>: %sunbekannter Durchlauf %s in %<-fdisable%> angegebenunbekannter Durchlauf %s in %<-fenable%> angegebenunbekanntes ZeigergrÃ¶ÃŸenmodell %qsunbekannte Prozessor-ID %<0x%x%>, einige Tuning-Parameter werden auf die Standardwerte zurÃ¼ckgesetztUnbekannte Profil-QualitÃ¤tUnbekannte Profil-Reproduzierbarkeitsstufe %qsUnbekannte Profil-Aktualisierungs-Methode %qsunbekannte Eigenschaft %qE des %qs-Selektorsunbekannte Eigenschaft %qs des %qs-Selektorsunbekanntes Eigenschaftsattributunbekanntes Eigenschaftsattribut %<%s%s%>unbekanntes Eigenschaftsattribut %qEunbekanntes Zeichen Â»%cÂ«unbekannter Ranger-Debug-Modus %qsunbekannter Registername %qs in %<asm%>unbekannter Registername: %sunbekannte Adressverschiebungs-Unspecunbekanntes Rust-compile-until %qsunbekannte Rust-Ausgabe %qsunbekannte Rust-Mangling-Option %qsunbekannter Selektor %qs fÃ¼r Kontextselektormenge %qsunbekannter Selektor %qs fÃ¼r Kontext-Selektormenge %qs bei %Cunbekannte Spezifikationsfunktion %qsunbekannte Spezifikation fÃ¼r die Menge der FLT_EVAL_METHOD-Werte, um %qs zu erlaubenunbekannte Angabe %<%qs%> in Attribut %<amdgpu_hsa_kernel%>unbekannte Quelleunbekannter Stapel-ÃœberprÃ¼fungsparameter %qsunbekannter Schalter %<-mlong-double-%s%>Unbekanntes Zielattribut oder -pragma %qsunbekannter Threader-Debug-Modus %qsunbekannte Trampolinimplementierung %qsunbekannte Tuning-Option Â»%sÂ«unbekannter Typ %<%T%> bei Objective-C-Kodierung gefundenunbekannter Typname: %qEUnbekannter Typname %qE; meinten Sie %qs?unbekannter Typname %qE; verwenden Sie das %<enum%>-SchlÃ¼sselwort, um auf den Typ zu verweisenunbekannter Typname %qE; verwenden Sie das %<struct%>-SchlÃ¼sselwort, um auf den Typ zu verweisenunbekannter Typname %qE; verwenden Sie das %<union%>-SchlÃ¼sselwort, um auf den Typ zu verweisenunbekannter Wert %qs fÃ¼r %<-march%>unbekannter Wert %qs fÃ¼r %<-mcpu%>unbekannter Wert %qs fÃ¼r %<-mtune%>unbekannter Wert %qs von %<-mmacosx-version-min%>unbekannter ABI-Typ fÃ¼r Vektorisierungsbibliothek in %<-mveclibabi=%s%>unbekanntes Vektorisierer-Kostenmodell %qsunbekannte InitialisierungsprioritÃ¤t %qs fÃ¼r VTable-VerifikationAlleinstehende FarbrÃ¼cksetz-DirektiveAlleinstehende q-Direktiveunbenannte Klasse wurde hier definiertunbenanntes Feld hat unvollstÃ¤ndigen Typenunbenanntes Feld ist weder eine Funktion noch Elementfunktion; kann nicht als %<friend%> deklariert werdenunbenannte Initialisierung fÃ¼r %qT, das keine Basisklassen hatunbenannte Initialisierung fÃ¼r %qT, das Mehrfachvererbung verwendetunbenanntes Â»enumÂ« mit GÃ¼ltigkeitsbereich ist nicht erlaubtUnbenannte struct/union, die keine Instanzen definiertunbenanntes temporÃ¤res Objekt wird hier definiertunbenannter Typ ohne Bindung wird verwendet, um Funktion %q#D mit Bindung zu deklarierenunbenannter Typ ohne Bindung wird verwendet, um Variable %q#D mit Bindung zu deklarierenunbenannte Variable oder Feld als Â»voidÂ« deklariertunnÃ¶tige Klammern in Deklaration von %qsungeordneter Vergleich mit Nicht-Gleitkomma-Argumentunquote_string(): got bad stringAttribut auÃŸerhalb von AnfÃ¼hrungszeichen im FormatSteuerzeichen %qc auÃŸerhalb von AnfÃ¼hrungszeichen im FormatSteuerzeichen auÃŸerhalb von AnfÃ¼hrungszeichen im FormatBezeichner oder SchlÃ¼sselwort auÃŸerhalb von AnfÃ¼hrungszeichen %<%.*s%> im FormatSchlÃ¼sselwort %<%.*s%> auÃŸerhalb von AnfÃ¼hrungszeichen im FormatName der eingebauten Funktion %<%.*s%> auÃŸerhalb von AnfÃ¼hrungszeichen im Formatnicht-grafisches Zeichen %qc auÃŸerhalb von AnfÃ¼hrungszeichen im Formatnicht-grafische Zeichen auÃŸerhalb von AnfÃ¼hrungszeichen im FormatOperator %<%.*s%> auÃŸerhalb von AnfÃ¼hrungszeichen im FormatOptionsname %<%.*s%> auÃŸerhalb von AnfÃ¼hrungszeichen im FormatVorverarbeitungsdirektive %<%.*s%> auÃŸerhalb von AnfÃ¼hrungszeichen im FormatFolge von %i aufeinanderfolgenden Satzzeichen %q.*s auÃŸerhalb von AnfÃ¼hrungszeichen im Format%i aufeinanderfolgende Leerzeichen auÃŸerhalb von AnfÃ¼hrungszeichen im FormatTypname %<%.*s%> auÃŸerhalb von AnfÃ¼hrungszeichen im FormatLeerzeichen %qc auÃŸerhalb von AnfÃ¼hrungszeichen im FormatNicht erreichbarnicht erkanntes Kommandozeilenargument von Option nicht erkanntes Kommandozeilenargument von Option %<unerkennbarer Befehl:unbekanntes Ziel fÃ¼r %<-mfpu%>: %sunbekanntes Feld %<hwmpy%> in %<hard_msp430_mcu_data[%d]%>: %qdnicht erkanntes %<include_flags 0x%x%> an %<print_specific_help%> weitergegebenunbekanntes Feld %<revision%> in %<hard_msp430_mcu_data[%d]%>: %qdAttribut %qE hat unbekanntes Argument %qsunbekanntes Ziel fÃ¼r %s: %sunbekannter MCU-Name %qs, daher wird angenommen, dass er keine Hardware-Multiplikation kann; verwenden Sie die Option %<-mhwmult%>, um diese explizit einzustellenunbekannter MCU-Name %qs, daher wird angenommen, dass es ein MSP430X ohne Hardware-Multiplikation ist; verwenden Sie die Optionen %<-mcpu%> und %<-mhwmult%>, um diese explizit einzustellenunbekannter MCU-Name %qs, daher wird angenommen, dass er lediglich das MSP430X-ISA unterstÃ¼tzt; verwenden Sie die Option %<-mcpu%>, um dieses explizit einzustellenunerkannte Adressenicht erkanntes Kommandozeilenargument in Option %<-march=%s%>nicht erkanntes Kommandozeilenargument in Option %qsArgument %q.*s fÃ¼r Option %<--help=%> nicht erkanntunbekanntes Argument fÃ¼r Option %<-f%ssanitize%s=%>: %q.*sunbekanntes Argument fÃ¼r Option %<-f%ssanitize%s=%>: %q.*s; meinten Sie %qs?Argument %qs fÃ¼r Option %<-flto=%> nicht erkanntArgument fÃ¼r Option %<-fzero-call-used-regs=%> nicht erkannt: %qsnicht erkannter Initialisierungstyp %qs fÃ¼r automatische VariableUnbekannte BTF-Debugausgabestufe %qsunbekannte Kommandozeilenoption %<-%s%>unbekannte Kommandozeilenoption %<-%s%>; meinten Sie %<-%s%>?nicht erkannte Kommandozeilenoption %<-fdump-%s%>unbekannte Kommandozeilenoption %<-fdump-%s%>; meinten Sie %<-fdump-%s%>?nicht erkannte Kommandozeilenoption %<-fopt-info-%s%>nicht erkannte Kommandozeilenoption %qsUnbekannte Kommandozeilenoption %qs kÃ¶nnte den Zweck haben, bisherige Diagnosemeldungen zu unterdrÃ¼ckenunbekannte Steuerregisternummer %d; %<psw%> wird verwendetUnbekannte Debugausgabestufe %qsunbekannter Kantenschalter: %qsunbekannter enum-Wert: %qsunerkannte FormatangabeGCC-Debuggingoption nicht erkannt: %cunbekanntes Interrupt-Vektor-Argument fÃ¼r Attribut %qEunbekannter ivar-Sichtbarkeitswert %qsunbekannter Operand fÃ¼r %%:%<asm_auto_mfpu%>unbekannter Operand fÃ¼r %%:%<canon_for_mlib%>unbekannte Option %<-fdisable%>unbekannte Option %<-fenable%>unbekannte Option an %%:%<target_mode_check%> weitergegebenunbekannter Registername %qsunbekannter Wert %qs fÃ¼r Speicherreihenfolge von Skalarennicht erkannter Abschnittsname %qEunerkannter Schatten-Adressoffset %qsnicht erkannte Statuszeichenkette %qsunbekanntes Escapezeichen in Zeichenketteunerkannte vermutete Konstanteunbekannter Sichtbarkeitswert %qsnicht erkannte Padding-Bits-Art %qs fÃ¼r Null-Initialisierungnicht behebbarer FehlerungelÃ¶ste Ãœberladung des eingebauten %qFunaufgelÃ¶ste Ã¼berladene eingebaute FunktionuneingeschrÃ¤nkte Â»UnionsÂ« sind nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarunsicherer Funktionsaufruf %qD innerhalb von %<transaction_safe%>-Funktionunsicherer Funktionsaufruf %qD innerhalb von atomarer Transaktionunsicherer Funktionsaufruf %qE innerhalb von %<transaction_safe%>-Funktionunsicherer Funktionsaufruf %qE innerhalb von atomarer Transaktionunsicherer indirekter Funktionsaufruf innerhalb von %<transaction_safe%>-Funktionunsicherer indirekter Funktionsaufruf innerhalb von atomarer Transaktionnicht gesetzte Option %qs wird ignoriert, fÃ¼r CPU %qs ist sie stets eingeschaltetvorzeichenlosVorzeichenlose Umwandlung von %qT nach %qT Ã¤ndert den Wert von %qEVorzeichenlose Umwandlung von %qT nach %qT Ã¤ndert den Wert von %qE nach %qEGleitkommakonstante ohne Suffixnicht unterstÃ¼tzter %<strub%>-Aufruf auf dem Zielsystemnicht unterstÃ¼tzte SVE-VektorgrÃ¶ÃŸenicht unterstÃ¼tztes Argument fÃ¼r %qDnicht unterstÃ¼tzter Argumenttyp %qT fÃ¼r SIMDnicht unterstÃ¼tzter Argumenttyp fÃ¼r eingebaute FunktionCode Â»%cÂ« fÃ¼r Festkomma nicht unterstÃ¼tzt:nicht unterstÃ¼tzte Kombination: %qs %snicht unterstÃ¼tzte Kombination: %qs%s %snicht unterstÃ¼tzte Kombination: %snicht unterstÃ¼tzte konstante Adresse:der Kernel hat einen nicht unterstÃ¼tzten CPU-Namen fÃ¼r %<-mcpu=native%> zurÃ¼ckgegeben: %sFestkommaumwandlung nicht unterstÃ¼tztnicht unterstÃ¼tzter Map-Ausdruck %qEnicht unterstÃ¼tzter Speicherausdruck:nicht unterstÃ¼tzte Nicht-Standard-Verkettung von Zeichenkettenliteralennicht unterstÃ¼tzter Nicht-Standard-Suffix an Gleitkommakonstantenicht unterstÃ¼tzte Anzahl von NOPs vor Funktionsanfang (%u)nicht unterstÃ¼tzter Operandnicht unterstÃ¼tzter Operand %s fÃ¼r Code Â»%cÂ«Operand fÃ¼r Code Â»%cÂ« nicht unterstÃ¼tztnicht unterstÃ¼tzte OperandengrÃ¶ÃŸe fÃ¼r erweitertes RegisterIn booleschem Vektorvergleich ist die Operation oder der Typ nicht unterstÃ¼tztnicht unterstÃ¼tzter RÃ¼ckgabetyp %qT fÃ¼r SIMDnicht unterstÃ¼tzte simdlen %wdnicht unterstÃ¼tzte simdlen %wd (amdgcn)nicht unterstÃ¼tzte GrÃ¶ÃŸe fÃ¼r Ganzzahlregisterunbeendete Assemblerdialekt-Alternativeunbeendete Farbdirektiveunbeendete Formatzeichenketteunbeendetes AnfÃ¼hrungszeichen %<%c%> im Formatunbeendete q-Direktiveunbeendete Zeichenketteunverwendete Argumente in %<$%>-Stil-Formatunverwendeter Name %qEunverwendeter Parameter %qDungenutzte Deklaration fÃ¼r strukturierte Bindungungenutzte %<using%>-Deklaration %qDVariable %q+D wird nicht verwendetVariable %qD wird nicht verwendetAbwicklungstabellen erfordern derzeit entweder einen Rahmenzeiger oder %<-maccumulate-outgoing-args%> fÃ¼r KorrektheitOberer Wert in case-Marken-Bereich Ã¼berschreitet den Maximalwert des Typsverwenden Sie stattdessen %<#include%>stattdessen %<%T::%D%> verwenden%<%T::%D%> statt %<%T::%D%> verwenden, um den Konstruktor mit qualifiziertem Namen zu benennen%<%T::template %D%> verwenden, um dies als Template zu kennzeichnen%<&%s%E%s[0] %s &%s%E%s[0]%> verwenden, um die Adressen zu vergleichen%<-Winvalid-pch%> fÃ¼r weitere Informationen verwendenverwenden Sie %<-faligned-new%>, um die C++17-UnterstÃ¼tzung fÃ¼r Ã¼berausgerichtetes New einzuschaltenverwenden Sie %<-fdiagnostics-all-candidates%>, um die in Frage kommenden Kandidaten anzuzeigenverwenden Sie %<-fext-numeric-literals%>, um weitere eingebaute Suffixe einzuschalten%<-flax-vector-conversions%> verwenden, um Umwandlung zwischen Vektoren mit unterschiedlichen Elementtypen oder Anzahl der Teile zu erlauben%<...%> verwenden, um Argumentpack aufzulÃ¶senverwenden Sie %<__arm_preserves("za")%>, wenn die aufgerufene Funktion ZA beibehÃ¤ltverwenden Sie stattdessen %<__attribute__ ((vector_size))%>verwenden Sie %<__builtin_rx_mvtc (0, ...)%>, um beliebige Werte in PSW zu schreibenverwenden Sie %<alias %s = %s.%s;%>, um eine Ãœberladungsmenge der Basisklasse einzufÃ¼hrenverwenden Sie %<template<>%> fÃ¼r eine explizite Spezialisierungstattdessen %<this->%D%> verwendenverwenden Sie stattdessen %qDverwenden Sie stattdessen %qsISO-Dialekt von Modula-2 verwendenPIM-2-Dialekt von Modula-2 verwendenPIM-3-Dialekt von Modula-2 verwendenPIM-4-Dialekt von Modula-2 verwendenPIM-[234]-Dialekt von Modula-2 verwendennutzen Sie einen Cast auf den erwarteten Typen, um die Mehrdeutigkeit aufzulÃ¶senden C-PrÃ¤prozessor verwenden, um das Modul vorzuverarbeitenVerwenden Sie zum Beispiel %<-Wabi=11%>, um vor Ã„nderungen von GCC 7 zu warnenverwenden Sie stattdessen den expliziten Objektparameter %qsverwenden Sie stattdessen einen fold-Ausdruck im Attributargumentverwenden Sie den Nicht-Referenz-Typ %qT, um das Kopieren explizit zu machen, oder %qT um das Kopieren zu sparenVerwendung von %<alloca%>Verwendung von %<alloca%> innerhalb einer SchleifeVerwendung von %<auto%> in Lambda-Parameterdeklaration ist nur mit %<-std=c++14%> oder %<-std=gnu++14%> verfÃ¼gbarVerwendung von %<auto%> in Umwandlungsoperator von Elementtemplate kann niemals hergeleitet werdenVerwendung von %<auto%> in Parameterdeklaration ist nur mit %<-std=c++14%> oder %<-std=gnu++14%> verfÃ¼gbarVerwendung von %<auto%> in Parameterdeklaration ist erst mit %<-std=c++20%> oder %<-fconcepts%> verfÃ¼gbarVerwendung von %<auto%> in TemplateargumentVerwendung von %<complex%> in AltiVec-Typen ist ungÃ¼ltigVerwendung von %<double%> in AltiVec-Typen ist ohne %qs ungÃ¼ltigVerwendung von %<long double%> in AltiVec-Typen ist ungÃ¼ltigVerwendung von %<long long%> in AltiVec-Typen ist ohne %qs ungÃ¼ltigVerwendung von %<long%> in AltiVec-Typen ist veraltet; %<int%> verwendenVerwendung von %<long%> in AltiVec-Typen ist fÃ¼r 64-Bit-Code ohne %qs ungÃ¼ltigVerwendung von %qDVerwendung von %qD vor Herleitung von %<auto%>Verwendung von %qsVerwendung von %qs in TemplateVerwendung des %qs-LÃ¤ngenmodifizierers mit %qc-Typ-Zeichen hat entweder keine Auswirkung oder undefiniertes Verhaltengleichzeitige Verwendung von %s und %s im Format %sVerwendung von %s und %s zusammen mit Format %<%%%c%> fÃ¼r %sangeforderter Speicher wird in konstantem Ausdruck verwendet, nachdem er wieder freigegeben wurdeVerwendung eines Operanden vom Typ %qT in %<operator++%> ist veraltetVerwendung eines Operanden vom Typ %qT in %<operator++%> ist in C++17 verbotenVerwendung eines Operanden vom Typ %qT in %<operator--%> ist verbotenVerwendung boolescher Typen in AltiVec-Typen ist ungÃ¼ltigVerwendung von eingebautem Parameterpack %qD auÃŸerhalb eines TemplatesVerwendung der eingebauten Eigenschaft %qE in Funktionssignatur; stattdessen sollten Bibliothekseigenschaften verwendet werdenVerwendung der eingebauten Eigenschaft %qT in Funktionssignatur; stattdessen sollten Bibliothekseigenschaften verwendet werdenVerwendung des Klassentemplates %qT als AusdruckVerwendung dezimaler Gleitkommatypen in AltiVec-Typen ist ungÃ¼ltiggelÃ¶schte Funktion %qD wird verwendetgelÃ¶schte Funktion %qD wird verwendet: %sVerwendung des enum %q#D ohne vorherige DeklarationVerwendung der Funktion %qD mit nicht erfÃ¼llten EinschrÃ¤nkungenVerwendung des ungÃ¼ltigen Variablentemplates %qEVerwendung lokaler Variable mit automatischer Speicherklasse aus enthaltender FunktionVerwendung einer multiversionierten Funktion ohne StandardargumentVerwendung einer Typumwandlung nach %q#T im alten StilVerwendung eines Parameters aus enthaltender FunktionVerwendung eines Parameters auÃŸerhalb des FunktionskÃ¶rpersVerwendung von ungetyptem nilfÃ¼r die Anweisung fehlt der Verwendungs-Operanddie Option %<-std=c99%>, %<-std=gnu99%>, %<-std=c11%> oder %<-std=gnu11%> verwenden, um den Code zu Ã¼bersetzenverwenden Sie einen Referenztyp, um das Kopieren zu sparenverwenden Sie die Form %<offset%> statt %<index%> fÃ¼r 8-Bit-Datenverwenden Sie stattdessen die Apostroph-Direktive %qsdas unÃ¤re %<+%> verwenden, das Operanden zu Zeigern oder zu %<&%s%E%s[0] %s &%s%E%s[0]%> degradiert, um die Adressen zu vergleichenArray, das nicht in Zeiger umgewandelt werden kann, anstelle des geforderten Skalars verwendetals umgeschriebener Kandidat fÃ¼r den Vergleich von %qT und %qT verwendethier verwendet mit der Bedeutung %q#DWert eines struct-Typs anstelle des geforderten Skalars verwendetWert eines union-Typs anstelle des geforderten Skalars verwendetVektortyp verwendet, wo Skalars benÃ¶tigt wirdnutzloses %<_Alignas%> in leerer Deklarationnutzloses %qs in leerer Deklarationnutzlose Umwandlung in Typ %q#Tnutzlose Umwandlung in Typ %qTNutzlose Speicherklassenangabe in leerer DeklarationNutzloser Typname in leerer DeklarationNutzloser Typqualifizierer in leerer Deklarationbenutzerdefinierte ReduktionsauflÃ¶sung ist mehrdeutigbenutzerdefinierte Reduktion fÃ¼r %qE nicht gefundenbenutzerdefinierte Reduktion mit Konstruktorinitialisierung fÃ¼r Basisklasse %qTbenutzerdefiniertes %qD wertet immer beide Argumente ausbenutzerdefinierte Literale nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarverwendet %qD, das jedoch keinen Ausrichtungsparameter hat%<%c%s%> wird verwendet%<num_workers (%d)%> wird verwendet, %d wird ignoriert%<vector_length (%d)%> wird verwendet, da eine vektor-partitionierbare Routine aufgerufen wird, %d wird ignoriert%<vector_length (%d)%> wird verwendet, %d wird ignoriert%<vector_length (%d)%> wird verwendet, Laufzeiteinstellung wird ignoriert%<vector_length (64)%> wird verwendet, %d wird ignoriert%<vector_length (64)%> wird verwendet, Laufzeiteinstellung wird ignoriert%qs wird verwendetVerwendung von %qs mit vorzeichenlosem Typ hat keinen Effektbaumelnder Zeiger auf %qD wird verwendetbaumelnder Zeiger auf ein unbenanntes temporÃ¤res Objekt wird verwendetTemplatespezialisierung alias %qT hinter %qs wird verwendetdie Funktion %qD berechnet den Betrag einer komplexen Zahl, bekommt hier jedoch ein Argument vom Gleitkommatyp %qT Ã¼bergebendie Funktion %qD berechnet den Betrag einer komplexen Gleitkommazahl, bekommt hier jedoch ein Argument vom Ganzzahltyp %qT Ã¼bergebenbaumelnder Zeiger %qE auf %qD wird verwendetbaumelnder Zeiger %qE auf ein unbenanntes temporÃ¤res Objekt wird verwendetdarwin64-ABI wird verwendetdie Funktion %qD berechnet den Betrag einer dezimalen Gleitkommazahl, bekommt hier jedoch ein Argument vom komplexen Typ %qT Ã¼bergebendie Funktion %qD berechnet den Betrag einer dezimalen Gleitkommazahl, bekommt hier jedoch ein Argument vom binÃ¤ren Gleitkommatyp %qT Ã¼bergebendie Funktion %qD berechnet den Betrag einer dezimalen Gleitkommazahl, bekommt hier jedoch ein Argument vom Ganzzahltyp %qT Ã¼bergebenschneller VRP-Algorithmus wird verwendet; %d BasisblÃ¶cke Ã¼berschreiten die Grenze %<--param=vrp-block-limit=%d%>die Funktion %qD berechnet den Betrag einer binÃ¤ren Gleitkommazahl, bekommt hier jedoch ein Argument vom komplexen Typ %qT Ã¼bergebendie Funktion %qD berechnet den Betrag einer binÃ¤ren Gleitkommazahl, bekommt hier jedoch ein Argument vom dezimalen Gleitkommatyp %qT Ã¼bergebendie Funktion %qD berechnet den Betrag einer Gleitkommazahl, bekommt hier jedoch ein Argument vom Ganzzahltyp %qT Ã¼bergebendie Funktion %qD berechnet den Betrag einer Ganzzahl, bekommt hier jedoch ein Argument vom komplexen Typ %qT Ã¼bergebendie Funktion %qD berechnet den Betrag einer Ganzzahl, bekommt hier jedoch ein Argument vom Gleitkommatyp %qT Ã¼bergebenungÃ¼ltiges Feld %qD wird verwendetder ltrans-Cache wird ohne UnterstÃ¼tzung von Dateisperren verwendet, das sollte nicht im Parallelmodus erfolgenAltes darwin-ABI wird verwendetErgebnis einer %<void%> zurÃ¼ckgebenden Funktion verwendetRvalue wird als Lvalue verwendet%d LTRANS-AuftrÃ¤ge werden seriell compiliertNach der Registerbelegung wird eine einfache CSE verwendetTemplatetyp-Parameter %qT wird nach %qs verwendetdas Intervall [%E, %E] wird fÃ¼r das Argument der Direktive verwendettypedef-Name %qD wird nach %qs verwendetdie Verwendung des Wertes der Zuweisung mit %<volatile%>-qualifiziertem linken Operand ist veraltet%<using%>-Deklaration fÃ¼r Element auÃŸerhalb des GÃ¼ltigkeitsbereichs der KlasseÂ»usingÂ«-Deklaration fÃ¼r Nicht-Element im GÃ¼ltigkeitsbereich der Klasse%<using%>-Deklaration darf den Namensraum %qD nicht benennengÃ¼ltige Argumente fÃ¼r %<-foffload=%> sind: %sgÃ¼ltige Argumente fÃ¼r %<-foffload=%> sind: %s; meinten Sie %qs?ein gÃ¼ltiges Argument fÃ¼r %<-march=%> ist %qsgÃ¼ltige Argumente sind: %sgÃ¼ltige Argumente sind: %s; meinten Sie %qs?gÃ¼ltige Argumente fÃ¼r %<-march=%> sind: %sgÃ¼ltige Argumente fÃ¼r %<-march=%> sind: %sgÃ¼ltige Argumente fÃ¼r %<-march=%> sind: %s; meinten Sie %qs?gÃ¼ltige Argumente fÃ¼r %<-mtune=%> sind: %sgÃ¼ltige Argumente fÃ¼r %<-mtune=%> sind: %s; meinten Sie %qs?gÃ¼ltige Argumente fÃ¼r %<target("arch=")%> sind: %sgÃ¼ltige Argumente fÃ¼r %<target("arch=")%> sind: %s; meinten Sie %qs?gÃ¼ltige Argumente fÃ¼r %<target("tune=")%> sind: %sgÃ¼ltige Argumente fÃ¼r %<target("tune=")%> sind: %s; meinten Sie %qs?gÃ¼ltige Argumente fÃ¼r %qs sind: %sgÃ¼ltige Argumente fÃ¼r %qs sind: %s; meinten Sie %qs?gÃ¼ltiger expliziter Objektparameter wird hier deklariertgÃ¼ltige Fehler-Modelle sind %qs, %qs, %qs, %qsgÃ¼ltige Featurenamen sind: %sgÃ¼ltige Featurenamen sind: %s; meinten Sie %qs?gÃ¼ltiges Format ist %<ns::attr%> oder %<ns::%>gÃ¼ltige Modelle sind %egÃ¼ltive Werte fÃ¼r eingebautes %qF, Argument %d, sind 64, 128, 256, 512, 1024, 2048, und 4096Wert %qE vom Typ %qT ist kein KonstantenausdruckWert %qs wird von Attribut %<target%> nicht unterstÃ¼tztWertargumentberechneter Wert ist unbenutztWert von %<-mfixed-range%> muss die Form REG1-REG2 habenerneut deklarierter AufzÃ¤hlungswert ist auÃŸerhalb des GÃ¼ltigkeitsbereichs von %qTin %qs Ã¼bergebener Wert ist zu groÃŸWertinitialisierung des Funktionstypen %qTWertinitialisierung des unvollstÃ¤ndigen Typen %qTWertinitialisierung des Referenztypen %qTvar-tracking-assignments Ã¤ndert selektive PlanungVariableVariable %q#D hat Initialisierung, aber unvollstÃ¤ndigen TypVariable %q+D als %<_Noreturn%> deklariertVariable %q+D als %<inline%> deklariertVariablendefinition von %q+D ist als dllimport markiertVariable %q+D kÃ¶nnte von %<longjmp%> oder %<vfork%> zerstÃ¶rt werdenVariable %q+D muss konstant sein, um mit %qs in Nur-Lese-Abschnitt gelegt zu werdenVariable %q+D Teil des Alias-Zyklusvariablen %q+D, die mit dem %qs-Attribut markiert ist, muss im statischen Speicher verortet seindie Variable %q+D mit dem Attribut %qs darf keinen Initialisierer habendynamisch initialisierte Variable %q+D in Programmspeicherbereich platziertVariable %qD angepasst fÃ¼r OpenACC-Privatisierungsgrad: %qsVariable %qD hat FunktionstypVariable %qD hat Initialisierung, aber unvollstÃ¤ndigen Typvariable %qD vom nicht-literalen Typ %qT in %<constexpr%>-Funktion ist erst mit %<-std=c++23%> oder %<-std=gnu++23%> verfÃ¼gbarVariable %qD als Funktion redeklariertVariable %qD gesetzt, aber nicht verwendetVariable %qD wird als Schleifenvariable verwendet, ist aber im dazwischenliegenden Code gebundenVariable %qD wird im Endetest verwendet, ist aber im dazwischenliegenden Code gebundenVariable %qD wird in ErhÃ¶hungsausdruck verwendet, ist aber im dazwischenliegenden Code gebundenVariable %qD wird in einem Initialisierer verwendet, ist aber im dazwischenliegenden Code gebundendie in der %<allocator%>-Klausel verwendete Variable %qD muss vor %qD deklariert werdendie in der %<allocator%>-Klausel verwendete Variable %qD darf zwischen der Deklaration von %qD und der %<allocate%>-Direktive nicht verÃ¤ndert werdenVariable %qD wird in %<#pragma acc declare%> mehr als einmal verwendetVariable %qE in umgebender %<host_data%>-Region deklariertVariable %qE ist keine Iteration der Ã¤uÃŸersten Schleife %d, jedoch %qE erwartetauf Variable %qE des unvollstÃ¤ndigen Typs %qT wird in ErhÃ¶hungsausdruck nicht zugegriffenauf Variable %qE des unvollstÃ¤ndigen Typs %qT wird nicht im linken Operanden des Kommaoperators zugegriffenauf Variable %qE des unvollstÃ¤ndigen Typs %qT wird nicht im rechten Operanden des Kommaoperators zugegriffenauf Variable %qE des unvollstÃ¤ndigen Typs %qT wird nicht im zweiten Operanden des bedingten Ausdrucks zugegriffenauf Variable %qE des unvollstÃ¤ndigen Typs %qT wird in Anweisung nicht zugegriffenauf Variable %qE des unvollstÃ¤ndigen Typs %qT wird nicht im dritten Operanden des bedingten Ausdrucks zugegriffenVariable %qs wurde in ausgelagertem Code referenziert, wurde aber nicht markiert, dass sie im ausgelagerten Code enthalten sein dÃ¼rfteVariable %qs hat bereichsbasierte Destruktion, daher kann kein Funktionsabschluss gebaut werdenvariable im Namensraumbereich ist nicht namenunabhÃ¤ngigVariablenkonzepte werden nicht mehr unterstÃ¼tztArray %qD variabler LÃ¤nge wird verwendetArray variabler GrÃ¶ÃŸe wird verwendetArrays mit variabler LÃ¤nge werden in Koroutinen noch nicht unterstÃ¼tztElementtyp variabler LÃ¤nge in %<reduction%>-Klausel eines ArraysVariable mit demselben Assemblernamen wie die virtuelle Tabelle ist in anderer Ãœbersetzungseinheit definiertVariable oder Feld %qE als Â»voidÂ« deklariertVariable oder Feld als Â»voidÂ« deklariertals %<extern%> redeklarierte Variable war bereits als %<static%> deklariertArgumente variabler GrÃ¶ÃŸeTyp %qT mit variabler LÃ¤nge in %<reduction%>-KlauselTyp %qT mit variabler GrÃ¶ÃŸe in %qs-KlauselInterner Fehler: variable symbol is not variableVariablentemplate hier deklariertBezeichner %qD fÃ¼r Variablentemplate ist geschachteltem Namens-Spezifizierervariable Templates sind nur mit %<-std=c++14%> oder %<-std=gnu++14%> verfÃ¼gbarVariablenverfolgung angefordert, jedoch nicht von diesem Debug-Format unterstÃ¼tztVariablenverfolgung angefordert, jedoch nutzlos ohne Debug-InfoGrenze zur Variablenverfolgung Ã¼berschrittenObere GrÃ¶ÃŸengrenze zur Variablenverfolgung mit %<-fvar-tracking-assignments%> Ã¼berschritten; neuer Versuch ohneArray variabler GrÃ¶ÃŸe von %<auto%>zusammengesetztes Literal variabler GrÃ¶ÃŸeObjekt variabler GrÃ¶ÃŸe darf nicht initialisiert werden, auÃŸer mit einem leeren InitialisiererVariablen im Adressraum %<__regio_symbol%> kÃ¶nnen nicht als %<register%> deklariert werdenVariablen im Adressraum %<__regio_symbol%> kÃ¶nnen keinen Anfangswert habenVariablen im Adressraum %<__regio_symbol%> mÃ¼ssen als %<extern%> deklariert werdenVariablen im Adressraum %<__regio_symbol%> mÃ¼ssen als %<volatile%> deklariert werdenVariablen vom Typ %qT kÃ¶nnen keine thread-lokale Speicherdauer habenvariabel modifiziertes %qE im Dateibereichvariabel modifiziertes Feld im Dateibereichim Â»newÂ«-Ausdruck ist kein variabel modifizierter Typ erlaubtvariadische Friends oder Friend-Type-Deklarationen mit mehreren Typen sind erst ab %<-std=c++2c%> oder %<-std=gnu++2c%> verfÃ¼gbarvariadische Funktionen mÃ¼ssen die AAPCS-Basisvariante verwendenvariadische Templates nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarvariadischer Thunk-AufrufVariante %qD und Basis %qD haben unvertrÃ¤gliche Typendie Variante %qD ist eine eingebauteVariante %qD ist keine FunktionDie Variante %qs und die Basis %qs bei %L haben inkompatible Typen: %sDie Variante %qs bei %L muss eine Funktion oder Unterroutine seindie in OMP BEGIN METADIRECTIVE bei %C verwendete Variantendirektive muss eine entsprechende Enddirektive haben%qs-Element des Vektors ist kein GIMPLE-WertVektor-%qs mit Elementindex, der nicht NULL istVektor-Argument an Funktion ohne Prototyp Ã¼bergebenVektorbedingung wird stÃ¼ckweise ausgeweitetVektor Nummer %d von %q+D liegt auÃŸerhalb des Bereichs 1%s3 fÃ¼r kompakte VektortabelleVektoroperation wird parallel ausgeweitetVektoroperation wird stÃ¼ckweise ausgeweitetVektoroperation wird mit einzelner skalarer Operation ausgeweitetVektorÃ¼berlauf in Ausdruck %qE des Typs %qT ergibt %qEVektorÃ¼berlauf in Ausdruck des Typs %qT ergibt %qEVektorumverteilungsoperation wird stÃ¼ckweise ausgeweitetVektorgrÃ¶ÃŸe kein ganzzahliges Vielfaches der KomponentengrÃ¶ÃŸeVektortypen erwartet in %qsVektortypen erwartet in %qsVektorwert verwendet, wo Gleitkommawert erwartet wurdeVektorisierung fÃ¼r eine SIMD-Schleife nicht durchgefÃ¼hrtVektoren unterschiedlicher Elementanzahl in %qs gefundenverify_bind_c_derived_type(): Given symbol is unexpectedly NULLInterner Fehler: verify_cgraph_node failedInterner Fehler: verify_flow_info failedInterner Fehler: verify_flow_info: Basic block %d succ edge is corruptedInterner Fehler: verify_flow_info: Block %i has loop_father, but there are no loopsInterner Fehler: verify_flow_info: Block %i lacks loop_fatherInterner Fehler: verify_flow_info: Duplicate edge %i->%iInterner Fehler: verify_flow_info: Incorrect blocks for fallthru %i->%iInterner Fehler: verify_flow_info: Incorrect fallthru %i->%iInterner Fehler: verify_flow_info: Missing count of block %iInterner Fehler: verify_flow_info: REG_BR_PROB does not match cfg %i %iInterner Fehler: verify_flow_info: REG_BR_PROB is set but cfg probability is notInterner Fehler: verify_flow_info: Wrong count of block %iInterner Fehler: verify_flow_info: Wrong probability of edge %i->%iInterner Fehler: verify_flow_info: unallocated edge flag set on %d -> %dInterner Fehler: verify_flow_info: unallocated flag set on BB %dverify_gimple failedverify_ssa gescheitertVersionsattribut ist keine ZeichenketteKonfliktmarker fÃ¼r Versionskontrolle in Dateivon %qT geerbte Version ist hier deklariertVersion von %<g%> wird weggelassen, bitte geben Sie die Version fÃ¼r die individuelle Erweiterung andas versionierte Symbol muss %<public%> seinversioniertes Symbol muss standardmÃ¤ÃŸige Sichtbarkeit habenvirt-Spezifikation in %qs ist auÃŸerhalb einer Klassendefinition nicht erlaubtvirtual PHI with argument locationsvirtual SSA name for non-VOP declvirtuelle Basis %qT ist in %qT durch Mehrdeutigkeit unzugÃ¤nglichfÃ¼r Anweisung fehlt virtueller Definitions-Operandvirtual definition is not an SSA namevirtuelle Definition der Anweisung nicht aktuellvirtuelle Funktion %q+D Ã¼bersteuert final-Funktionvirtuelle Funktionen kann keinen hergeleiteten RÃ¼ckgabetyp habendie virtuelle Funktion ist hier deklariertMultiversionierung virtueller Funktionen wird nicht unterstÃ¼tztvirtuelle Funktionen kÃ¶nnen erst mit C++20 %<constexpr%> seinvirtuelle Funktionen kÃ¶nnen keine friends seinvirtuelle Methode %qDvirtuelle Nicht-Klassen-Funktion %qsvirtuelle Tabelle des Typs %qD enthÃ¤lt RTTI-Informationvirtuelle Tabelle des Typs %qD verletzt die One-Definition-RuleZeiger auf Virtuelle Tabelle wird uninitialisiert verwendetvirtuelle Verwendung von Anweisung nicht aktuellfÃ¼r die Anweisung fehlt der virtuelle Verwendungs-OperandSichtbarkeitsargument ist keine ZeichenketteSichtbarkeitsattribute werden in dieser Konfiguration nicht unterstÃ¼tzt; ignoriertvms Â»#pragma __messageÂ« wird ignoriertvoid-Wert nicht ignoriert wie es sein sollteflÃ¼chtiges Argumentvolatile-Funktionstypvtable fÃ¼r Vtable-Verifikation wird in Kombination mit LTO nicht unterstÃ¼tztwaitpid gescheitertWarnung: Warnung: Evtl. mit Â»-staticÂ« linken, da Systembibliotheken mitÂ»%sÂ« wurde erwartetschwaches %q+D kann nicht als %qE definiert werdenschwache Alias-Definitionen werden in dieser Konfiguration nicht unterstÃ¼tztschwache Aliase werden nicht unterstÃ¼tztschwache Deklaration von %q+D wird auf bereits existierende Â»staticÂ«-Definition angewandtschwache Deklaration von %q+D muss Ã¶ffentlich seinschwache Deklaration von %q+D wird nicht unterstÃ¼tztGewichte mÃ¼ssen nichtnegativ seinbeim Speichern von %qT erfordert %qE eine Vektorbasis und einen skalaren Indexbeim Schreiben der Ausgabe nach %s: %mwÃ¤hrend %qT in %E Elemente zerlegt wirdwÃ¤hrend %qT in %wu Element zerlegt wirdwÃ¤hrend %qT in %wu Elemente zerlegt wirdbeim Referenzieren von %qDBreite von %qD Ã¼bersteigt seinen TypenBreite von %qs Ã¼berschreitet dessen TypenBreite des Bit-Feldes %qD hat Nicht-Ganzzahl-Typ %qTmitmit %<ancestor%> dÃ¼rfen nur die Klauseln %<device%>, %<firstprivate%>, %<private%>, %<defaultmap%> und %<map%> in dem Konstrukt erscheineninnerhalb dieser Schleifeohne %<-gdwarf-5%> ist %<-gvariable-location-views=incompat5%> gleichbedeutend mit %<-gvariable-location-views%>arbeitsteilende Region darf nicht innerhalb einer Region eng geschachtelt sein, die arbeitsteilend, %<loop%>, %<critical%>, %<ordered%>, %<master%>, %<masked%>, explizit %<task%> oder %<taskloop%> istSchreiben von %wu Bit Daten auÃŸerhalb der Grenzen des Zielobjekts, Daten wurden auf %wu Bit abgeschnittenwrite_atom(): Trying to write dab atomwrite_symbol(): bad module symbol %qswrite_symtree(): Symbol not writtenCode schreibt %E Byte in eine Region der GrÃ¶ÃŸe %E und bringt dadurch das Zielobjekt zum ÃœberlaufenCode schreibt %E Bytes in eine Region der GrÃ¶ÃŸe %E und bringt dadurch das Zielobjekt zum ÃœberlaufenCode schreibt %E oder mehr Bytes in eine Region der GrÃ¶ÃŸe %E und bringt dadurch die Zielregion zum ÃœberlaufenSchreiben von %wu Byte in eine Region der GrÃ¶ÃŸe %wuSchreiben von %wu Bytes in eine Region der GrÃ¶ÃŸe %wuSchreiben von %wu Byte in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuSchreiben von %wu Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuCMI %qs wird geschriebenCode schreibt zwischen %E und %E Bytes in eine Region der GrÃ¶ÃŸe %E und bringt dadurch das Zielobjekt zum ÃœberlaufenSchreiben von %wu bis %wu Bytes in eine Region der GrÃ¶ÃŸe %wu%wu bis %wu Bytes werden in eine Region der GrÃ¶ÃŸe zwischen %wu und %wu geschriebenSchreiben in konstantes Objekt (Argument %d)ein Byte zu viel wird in eine Region geschrieben, deren GrÃ¶ÃŸe von %<strlen%> abhÃ¤ngtAusgabedatei wird geschriebenbeim Schreiben in Â»%sÂ«: %mSchreiben Ã¼ber Null-Zeiger (Argument %d)beim Schreiben in LTRANS-Ausgabeliste %s: %mSchreibzugriff auf Adressraum %qs wird nicht unterstÃ¼tztInterner Compilerfehler: wrong %<TYPE_CACHED_VALUES%> entryInterner Fehler: wrong amount of branch edges after conditional jump in bb %iInterner Fehler: wrong amount of branch edges after unconditional jump %ifalsches Argument %qs fÃ¼r Option %qsfalsches Argument fÃ¼r ignorierte AttributeFalsche Kante %d->%d fÃ¼r PHI-ArgumentInterner Compilerfehler: wrong entry in %<TYPE_ARG_TYPES%> listFalsche Liste zur sofortigen Verwendungfalscher Befehl in Â»fallthruÂ«-Kantefalsche Liste der verlassenen Schleifen fÃ¼r Kante %d->%dFalsche Anzahl an Argumenten fÃ¼r das Attribut %qE angegebenfalsche Anzahl der Argumente fÃ¼r %%:debug-level-gtfalsche Anzahl von Argumenten fÃ¼r %%:dwarf-version-gtfalsche Anzahl von Argumenten fÃ¼r %<__builtin_addressof%>falsche Anzahl von Argumenten fÃ¼r %<__builtin_assoc_barrier%>falsche Anzahl der Argumente fÃ¼r %<__builtin_call_with_static_chain%>falsche Anzahl der Argumente fÃ¼r %<__builtin_choose_expr%>falsche Anzahl der Argumente fÃ¼r %<__builtin_complex%>falsche Anzahl von Argumenten fÃ¼r %<__builtin_convertvector%>falsche Anzahl von Argumenten fÃ¼r %<__builtin_counted_by_ref%>falsche Anzahl von Argumenten fÃ¼r %<__builtin_launder%>falsche Anzahl der Argumente fÃ¼r %<__builtin_shuffle%>falsche Anzahl der Argumente fÃ¼r %<__builtin_shufflevector%>Falsche Anzahl an Argumenten fÃ¼r das Attribut %<assume%> angegebenfalsche Anzahl an Argumenten fÃ¼r %qsfalsche Anzahl der Argumente fÃ¼r Funktion %<__builtin_next_arg%>falsche Anzahl der Argumente fÃ¼r Funktion %<va_start%>Interner Fehler: wrong number of branch edges after unconditional jump in bb %ifalsche Anzahl der Templateargumente (%d, sollte %d sein)falsche Anzahl der Templateargumente (%d, sollte mindestens %d sein)Interner Fehler: wrong outgoing edge flags at end of bb %dfalscher Strategiename %qs fÃ¼r Option %qs angegebenInterner Compilerfehler: wrong tree in %<TYPE_FIELDS%> listArgument falschen Typs fÃ¼r %sArgument falschen Typs fÃ¼r absfalsches Typargument fÃ¼r Â»absuÂ«Argument falschen Typs fÃ¼r Bit-KomplementArgument falschen Typs fÃ¼r KonjugationArgument falschen Typs fÃ¼r DekrementierungArgument falschen Typs fÃ¼r InkrementierungArgument falschen Typs fÃ¼r unÃ¤res AusrufungszeichenArgument falschen Typs fÃ¼r unÃ¤res MinusArgument falschen Typs fÃ¼r unÃ¤res PlusArgument falschen Typs fÃ¼r Â»%sÂ«x87-RegisterrÃ¼ckgabe mit ausgeschaltetem x87xstormy16_print_operand: unbekannter CodeSie kÃ¶nnen %qs mit der Befehlszeilenoption %<-march%> einschalten, oder mit dem Attribut %<target%> oder PragmaSie kÃ¶nnen RVV mit der Befehlszeilenoption %<-march%>, oder mit dem Attribut %<target%> oder Pragma aktivierenSie kÃ¶nnen SVE mit der Befehlszeilenoption %<-march%>, oder mit dem Attribut %<target%> oder Pragma aktivierenSie kÃ¶nnen mve.fp mit der Befehlszeilenoption %<-march%> oder mit dem Attribut oder Pragma %<target%> einschaltenSie kÃ¶nnen diese Warnung unterdrÃ¼cken, indem Sie eine hexadezimale Konstante verwenden (%wx statt %wd)Sie kÃ¶nnen diesen Wert mit %<--param hardware_destructive_interference_size=%d%> stabilisieren, oder diese Warnung mit %<-Wno-interference-size%> deaktivierenSie kÃ¶nnen stattdessen einen inline-Namensraum verwendendies kann durch das LÃ¶schen der Initialisierung umgangen werdenBei Verwendung der Option %qs kann die Adresse von geschachtelten Funktionen nicht verwendet werdenIhre native CPU-Architektur %qs unterstÃ¼tzt die ABI %qs nicht, stattdessen wird %<-m%s=%s%> verwendetz*inx erfordert ABI ilp32, ilp32e, lp64 oder lp64ez/Architektur.Null als NullzeigerkonstanteArrayabschnitt der LÃ¤nge 0 in %qs-KlauselArraygrÃ¶ÃŸe von %q+D ist null oder negativTyp %qT mit GrÃ¶ÃŸe 0 in %<reduction%>-KlauselTyp %qT mit GrÃ¶ÃŸe 0 in %qs-KlauselVektorgrÃ¶ÃŸe NullBreite Null fÃ¼r Bitfeld %q+DBreite Null fÃ¼r Bitfeld %qsBreite null im Format %sFormat-Zeichenkette %s der LÃ¤nge nullArray %qD der GrÃ¶ÃŸe nullArray %qT der GrÃ¶ÃŸe nullArrayelement %qD mit LÃ¤nge 0 in ansonsten leerem %q#TArrayelement %qD mit LÃ¤nge 0 befindet sich nicht am Ende von %q#T{anonym}{fehlerhaft}
\ No newline at end of file
--- 2480,2485 ----
  erfordertÂ»requiresÂ«-Klausel in Deklaration von Nichtfunktionstyp %qTÂ»requiresÂ«-Klausel fÃ¼r RÃ¼ckgabetyprequires-clause an type-idrequires-clause an TypedefAuflÃ¶sungs-Sub-ID %wx nicht in Objekt-DateiInterner Fehler: resolve_function(): bad function typeresolve_intrinsic(): Too many args for intrinsicresolve_operator(): Bad intrinsicresolve_ref(): Bad array referenceresolve_subroutine(): bad function typeAuflÃ¶ser-indirekte Funktion ist hier deklariertdas Ergebnis von %<%wu ^ %wu%> ist %wu; meinten Sie %<1 << %wu%> (%wu)?das Ergebnis von %<%wu ^ %wu%> ist %wu; meinten Sie %<1LL << %wu%>?das Ergebnis von %<%wu ^ %wu%> ist %wu; meinten Sie %<1e%wu%>?das Ergebnis von %<%wu ^ %wu%> ist %wu; meinten Sie Potenzbildung?Ergebnis von %<operator->()%> ergibt Nicht-Zeiger-ErgebnisErgebnis von %qE erfordert %u Bits, aber %qT hat nur %u BitsRÃ¼ckgabetyp ist keine einfache Typ-EinschrÃ¤nkungResultat mit nicht konstanter ZeichenlÃ¤ngeSignieren der RÃ¼ckgabeadresse wird nur fÃ¼r %<-mabi=lp64%> unterstÃ¼tztreturn streicht Qualifizierer %qv von Zeiger-ZieltypInterner Fehler: return edge does not point to exit in bb %dRÃ¼ckgabe von Pointer auf nicht enthaltenen Adressraumreturn erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger %q#vÂ»returnÂ« nicht gefolgt von SperreRÃ¼ckgabetyp %q#T ist unvollstÃ¤ndigRÃ¼ckgabetyp %qT der expliziten Umwandlungsfunktion kann nicht mit QualifizierungsÃ¤nderung in %qT umgewandelt werdenRÃ¼ckgabetyp ist auf %<int%> voreingestelltRÃ¼ckgabetyp ist unvollstÃ¤ndigRÃ¼ckgabetyp kÃ¶nnte Kandidat fÃ¼r Formatattribut seinRÃ¼ckgabetyp von %qD ist nicht %<int%>RÃ¼ckgabetyp von %qD ist nicht %qsRÃ¼ckgabetyp fÃ¼r FunktionAngabe des RÃ¼ckgabetyps fÃ¼r Konstruktor ist ungÃ¼ltigAngabe des RÃ¼ckgabetyps fÃ¼r Destruktor ist ungÃ¼ltigRÃ¼ckgabetyp fÃ¼r %<operator %T%> angegebenRÃ¼ckgabetyp fÃ¼r Herleitungshinweis angegebender RÃ¼ckgabewert wird nach dem Aufruf verÃ¤ndertRÃ¼ckgabewert im SpeicherunvertrÃ¤gliche RÃ¼ckgabetypender RÃ¼ckgabewert wird nach dem Aufruf verwendetRÃ¼ckgabe eines Wertes in Funktion ohne RÃ¼ckgabetypReturn-Anweisung mit Wert, in Funktion mit RÃ¼ckgabetyp %qTReturn-Anweisung ohne Wert, in %qT zurÃ¼ckgebender Funktion%<return-type-requirement%> ist keine Typ-EinschrÃ¤nkungzurÃ¼ckgegeben von %qDzurÃ¼ckgegeben von %qTRÃ¼ckgabe von %e aus einer Funktion mit inkompatiblem RÃ¼ckgabetyp %eRÃ¼ckgabe von %qT aus einer Funktion mit RÃ¼ckgabetyp %qT wandelt einen Zeiger in eine Zahl um, ohne explizite TypkonvertierungRÃ¼ckgabe von %qT aus einer Funktion mit RÃ¼ckgabetyp %qT wandelt eine Zahl in einen Zeiger um, ohne explizite TypkonvertierungRÃ¼ckgabe von %qT von Zeigertyp %qT mit inkompatibler Speicherreihenfolge fÃ¼r SkalareRÃ¼ckgabe eines Wertes von einem KonstruktorWert von Destruktor zurÃ¼ckgegebenInitialisierungsliste wird zurÃ¼ckgegebendas ZurÃ¼ckgeben der lokalen %<initializer_list%>-Variable %qD verlÃ¤ngert nicht die Lebenszeit des zugrundeliegenden ArraysRÃ¼ckgabe von Zeiger auf %qD vom Typ %e aus einer Funktion mit inkompatiblem Typ %eZeiger auf temporÃ¤re Variable wird zurÃ¼ckgegebenReferenz auf temporÃ¤ren Wert wird zurÃ¼ckgegebendas ZurÃ¼ckgeben einer temporÃ¤ren %<initializer_list%> verlÃ¤ngert nicht die Lebenszeit des zugrundeliegenden ArraysZurÃ¼ck auf Los? (siehe https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104552#c26)Interner Fehler: returns_twice call is not first in basic block %dInterner Fehler: returns_twice call is not last in basic block %dumgekehrte Speicherreihenfolge fÃ¼r Gleitkommaskalareumgekehrte Speicherreihenfolge fÃ¼r Skalareumgekehrte Speicherreihenfolge fÃ¼r Â»%smodeÂ«rechter Operand des Komma-Operators kann die Adresse der Ã¼berladenen Funktion nicht auflÃ¶senrechter Operand des Komma-Operators hat keinen Effektrechter Operand des Komma-Operators ist eine Referenz, kein Aufruf, zur Funktion %qErechter Operand des Schiebeausdrucks %q+E ist mindestens so groÃŸ wie die Genauigkeit %wu des linken Operandenrechter Operand des Schiebeausdrucks %q+E ist negativrechte PrÃ¤zisionrechte PrÃ¤zision im strfmon-FormatRechts-Schiebe-Weite >= Breite des TypsRechts-Schiebe-Weite >= Breite des VektorelementsRechts-Schiebe-Weite ist negativrechter Operand des Komma-Ausdrucks hat keinen EffektRotationsanzahl ist negativRundungsmodus fÃ¼r VAX-Floats nicht unterstÃ¼tztRundungsergebnis wird immer 0 seinRundung auf %d Bits hat keinen Effekt fÃ¼r Festkommawert mit %d Bit NachkommaanteilRoutine %qD ist hier deklariertUnterprogrammaufruf verwendet OpenACC-Parallelismus, der von der umgebenden Routine verboten wurdeUnterprogrammaufruf verwendet denselben OpenACC-Parallelismus wie enthaltende Schleiferv32e erfordert die ilp32e-ABIrv64e erfordert lp64e-ABICPU rx100 hat keine FPU-HardwareCPU rx200 hat keine FPU-Hardwareselber kanonischer Typknoten fÃ¼r die unterschiedlichen Typen %qT und %qTselbe Variable wird in %<firstprivate%>- und %<lastprivate%>-Klauseln am %<distribute%>-Konstruktdieselbe Version wurde zuvor hier definiertInterner Fehler: same_comdat_group is not a circular listInterner Fehler: same_comdat_group list across different groupsFehlzuordnung von Attributen der Bereinigungsfunktiondie ErfÃ¼llung der atomaren EinschrÃ¤nkung %qE hÃ¤ngt von sich selbst abder ErfÃ¼llungswert der wurde zuerst hier als %qE ausgewertetder ErfÃ¼llungswert der atomaren EinschrÃ¤nkung %qE Ã¤ndert sich von %qE nach %qEBitbereich der SÃ¤ttigung muss eine direkt angegebene Konstante seinBitbereich der SÃ¤ttigung muss im Bereich [%wd, %wd] liegentemporÃ¤re vorverarbeitete Dateien speichern%d %<template<>%> gefunden, %d werden fÃ¼r Spezialisierung eines Elementfunktionstemplates benÃ¶tigt%<typename %E%> sagen, wenn ein Typ gemeint istskalares Objekt %qD erfordert ein Element in InitialisierungSkalierung muss nichtnegativ seinSkalierung und Normalisierung kÃ¶nnen nicht gleichzeitig aktiv sein; wird Ã¼bersprungen
  scan.o: %sAblauf %<auto%> akzeptiert keinen Parameter %<chunk_size%>Ablauf %<runtime%> akzeptiert keinen Parameter %<chunk_size%>Plan-TeilgrÃ¶ÃŸenausdruck muss bestimmt seinBereich %qT vor %<~%> ist kein Klassennameder GÃ¼ltigkeitsbereich beginnt hierenum %qT mit eingeschrÃ¤nkter Sichtbarkeit wird vor %<-fabi-version=6%> als Typ %qT, spÃ¤ter jedoch als %qT durch %<...%> Ã¼bergebenenums mit GÃ¼ltigkeitsbereich nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarfalsche Zuordnung zwischen innerhalb und auÃŸerhalb eines GÃ¼ltigkeitsbereiches in enum %q#Tdas Score-Argument muss ein konstanter ganzzahliger Ausdruck seindas Score-Argument darf nicht negativ seinzweites Argument muss konstant seinzweites Argument muss eine Scheibe oder Zeichenkette seinzweites Argument von %q+D sollte %<char **%> seinZweites Argument fÃ¼r %<__builtin_call_with_static_chain%> muss ein Zeigertyp seinZweites Argument fÃ¼r %<__builtin_prefetch%> muss eine Konstante seinzweites Argument fÃ¼r %<va_arg%> ist ein Funktionstyp %qTzweites Argument fÃ¼r %<va_arg%> ist vom unvollstÃ¤ndigen Typ %qTzweites Argument fÃ¼r Funktion %qE muss eine konstante Zweierpotenz zwischen %qi und %qu Bits seinder zweite Ausdruck hat den Typ %qTzweiter Operand des bedingten Ausdrucks kann die Adresse der Ã¼berladenen Funktion nicht auflÃ¶senzweiter Operand des bedingten Ausdrucks hat keinen Effektzweiter Operand des bedingten Ausdrucks ist eine Referenz, kein Aufruf, zur Funktion %qEzweiter Operand fÃ¼r Bedingungsoperator ist vom Typ %<void%>, aber der dritte Operand ist weder ein Throw-Ausdruck noch vom Typ %<void%>Zweiter Parameter von %<va_start%> ist nicht letztgenanntes Argumentdas zweite, dritte und vierte Argument mÃ¼ssen konstant seinAbschnitt #%u fehlt oder ist beschÃ¤digtAbschnitt %qs fehlt oder ist beschÃ¤digtAbschnitt existiert bereits: %qsAbschnittsanker mÃ¼ssen ausgeschaltet sein, wenn Toplevel-Neuordnung ausgeschaltet istAbschnittsanker mÃ¼ssen ausgeschaltet sein, wenn Â»unit-at-a-timeÂ« ausgeschaltet istArgument des Abschnittsattributs ist keine ZeichenkettenkonstanteAbschnitts-Attribut kann nicht fÃ¼r lokale Variablen angegeben werdenAbschnitts-Attribut nicht erlaubt fÃ¼r %q+DAbschnitts-Attribute werden fÃ¼r dieses Ziel nicht unterstÃ¼tztAbschnitt von %q+D kann nicht aufgehoben werdenAbschnitt von %q+D in Konflikt mit vorheriger DeklarationAbschnitt des Aliases %q+D muss zum Abschnitt seines Ziels passenAbschnittstypkonflikt fÃ¼r Abschnitt %qsAbschnittstypkonflikt mit %qD in Abschnitt %qssiehe die Dokumentation zur Option %{%<-flto%>%} fÃ¼r weitere InformationenSpeicherzugriffsverletzungSpeicherzugriffsverletzung (Code)die ausgewÃ¤hlten fp16-Optionen sind inkompatibeldie gewÃ¤hlte Funktion ist hier deklariertSelektor %qs akzeptiert keine EigenschaftenSelektor %qs bei %C akzeptiert keine EigenschaftenSelektor %qs mehr als einmal im Satz %qs angegebenWÃ¤hler muss Â»immediateÂ« seinSelektor muss eine Ganzzahlkonstante im Bereich [0, %wi] seinSelektorsatz %qs mehr als einmal angegebenVergleich mit sich selbst ergibt immer Â»falseÂ«Vergleich mit sich selbst ergibt immer Â»trueÂ«Selbsttests sind in diesem Build nicht eingeschaltetSelbsttests sind unvertrÃ¤glich mit %<-E%>Fehlzuordnung von semantischer Einlagerunglegen Sie %qs auf mindestens %d fest, um mehr Details zu sehenalle Ortswerte auf einen bestimmten Wert festlegen (interner Schalter)der Basistyp der Menge muss ein Ordinaltyp seinInterner Fehler: set type cannot be initialized with a %qsInterner Fehler: set type does not take another integer valuesetjmp/longjmp innerhalb %<simd%>-KonstruktsMethodennamen von Settern mÃ¼ssen mit %<:%> aufhÃ¶renKern-DateigrÃ¶ÃŸenlimit kann nicht gesetzt werden: %mverdeckte Deklaration ist hiereingebaute Funktion %q#D wird Ã¼berdecktBibliotheksfunktion %q#D wird Ã¼berdecktvorherige Typdeklaration von %q#D wird Ã¼berschattetGemeinsam genutzte SSA-Namen-Infoshared und mdll sind unvertrÃ¤glichInterner Fehler: shared call_stmt:shared wird nicht unterstÃ¼tztGemeinsames rtxÃœberlauf der Shared-Memory-RegionSchiebeweite ist keine GanzzahlSchiebeausdruck %q+E lÃ¤uft Ã¼berSchiebeoperation eines Nicht-Ganzzahloperandenzu wenig Export-Daten gelesenInterner Fehler: show_array_ref(): Unknown array referenceInterner Fehler: show_array_spec(): Unhandled array shape type.Interner Fehler: show_code_node(): Bad statement codeInterner Fehler: show_expr(): Bad intrinsic in expressionInterner Fehler: show_expr(): Don't know how to show exprInterner Fehler: show_ref(): Bad component codeInterner Fehler: sibcall edges for non-call insn in bb %iSeiteneffekte werden bei %<ADDR_EXPR%>-Ã„nderung nicht neu berechnetside-effects element in no-side-effects CONSTRUCTORNebenwirkungen im Eingabeoperanden auÃŸerhalb einer FunktionNebenwirkungen im Ausgabeoperanden auÃŸerhalb einer FunktionVorzeichenbehaftete Umwandlung von %qT nach %qT Ã¤ndert den Wert von %qEVorzeichenbehaftete Umwandlung von %qT nach %qT Ã¤ndert den Wert von %qE nach %qEVorzeicheneigenschaft des Typen und Maschinenmodus %qs passen nicht zusammeneinfaches IFsimplify_intrinsic_op(): Bad operatorsimplify_min_max(): Bad type in arglisteinzelnes %<target_clones%>-Attribut wird ignoriertGrÃ¶ÃŸe %qE des Arrays %qE Ã¼bersteigt maximale ObjektgrÃ¶ÃŸe %EGrÃ¶ÃŸe %qE des Arrays %qE ist negativGrÃ¶ÃŸe %qE des Arrays Ã¼berschreitet maximale ObjektgrÃ¶ÃŸe %qEGrÃ¶ÃŸe %qE des Arrays ist negativGrÃ¶ÃŸe des Arrays bei Â»newÂ« muss Ganzzahltyp habenGrÃ¶ÃŸe ist zu groÃŸUnpassende GrÃ¶ÃŸe in Argument %d von %qEGrÃ¶ÃŸe von %q+D Ã¼berschreitet mit %E Bytes die maximale ObjektgrÃ¶ÃŸe %wuGrÃ¶ÃŸe von %qD passt nicht zur ursprÃ¼nglichen DeklarationGrÃ¶ÃŸe von %qs (%wd) unterscheidet sich von der deklarierten GrÃ¶ÃŸe (%wd)ArraygrÃ¶ÃŸe von %qD hat nicht-ganzzahligen Typen %qTGrÃ¶ÃŸe des Arrays %qD ist kein konstanter GanzzahlausdruckGrÃ¶ÃŸe des Arrays %qE Ã¼bersteigt maximale ObjektgrÃ¶ÃŸe %EArraygrÃ¶ÃŸe von %qE hat unvollstÃ¤ndigen TypArraygrÃ¶ÃŸe von %qE hat Nicht-GanzzahltypGrÃ¶ÃŸe des Arrays %qE ist negativGrÃ¶ÃŸe des Arrays %qE ist kein konstanter AusdruckArraygrÃ¶ÃŸe von %qE ist zu groÃŸGrÃ¶ÃŸe des Arrayelements ist kein Vielfaches seiner AusrichtungGrÃ¶ÃŸe des Arrays Ã¼bersteigt maximale ObjektgrÃ¶ÃŸe %qEArraygrÃ¶ÃŸe hat nicht-ganzzahligen Typen %qTGrÃ¶ÃŸe des Arrays ist kein konstanter AusdruckGrÃ¶ÃŸe des Arrays ist kein konstanter GanzzahlausdruckArraygrÃ¶ÃŸe ist zu groÃŸInterner Fehler: size of loop %d should be %d, not %dGrÃ¶ÃŸe des RÃ¼ckgabewertes von %q+D ist %u BytesGrÃ¶ÃŸe des RÃ¼ckgabewertes von %q+D ist grÃ¶ÃŸer als %wu BytesGrÃ¶ÃŸe des Zeichenkettenliterals ist zu groÃŸGrÃ¶ÃŸe des Typs %qT ist zu groÃŸ (%qE Bytes)GrÃ¶ÃŸe eines unbenannten Arrays hat unvollstÃ¤ndigen TypGrÃ¶ÃŸe eines unbenannten Arrays hat Nicht-GanzzahltypGrÃ¶ÃŸe des unbenannten Arrays ist negativGrÃ¶ÃŸe des unbenannten Arrays ist zu groÃŸGrÃ¶ÃŸe der Variablen %q+D ist zu hochGrÃ¶ÃŸenbereiche der Option %qs sollten aufsteigend seinsizeof(long double) ist 12.sizeof(long double) ist 16.Ausschnitt kann nur mit nil verglichen werdenjegliche Instanziierung mit nichtleerer Parameterpackung wÃ¤re unzulÃ¤ssigsoft-float und long-double-128 sind unvertrÃ¤glicheinige Kandidaten wurden ausgelassen; verwenden Sie %<-fdiagnostics-all-candidates%>, um sie anzuzeigenEinige Teile des expandierten Makros sind nicht von diesem %qs-Konstrukt erfasstnicht implementiertnicht implementiert: Entschuldigung: Semantik von static-Variable %q#D in inline-Funktion ist falsch (mehrere Kopien wÃ¤ren die Folge)Entschuldigung: Semantik der Inline-Variable %q#D ist falsch (mehrere Kopien wÃ¤ren die Folge)Quelle ist ein Zeiger auf unvollstÃ¤ndigen TypenQuelle ist kein ZeigerQuelle ist kein Zeiger auf KlasseQuelle hat nicht KlassentypenQuelle hat unvollstÃ¤ndigen KlassentypenQuellorte fÃ¼r Funktion %qD haben sich geÃ¤ndert, Profilingdaten mÃ¶glicherweise veraltetQuellobjekt %qE der GrÃ¶ÃŸe %sQuellobjekt wird hier alloziertQuellobjekt ist wahrscheinlich an Adresse nullQuellobjekt der GrÃ¶ÃŸe %s, alloziert durch %qEQuellentyp ist nicht polymorphLeerzeichen zwischen AnfÃ¼hrungszeichen und Suffix ist ab C++23 veraltetLeerzeichen gefolgt von Satzzeichen %<%c%>Spezifikation %qs hat ungÃ¼ltiges %<%%0%c%>Spezifikation %qs hat ungÃ¼ltiges %<%%@%c%>Spezifikation %qs hat ungÃ¼ltiges %<%%W%c%>Spezifikation %qs hat ungÃ¼ltiges %<%%x%c%>Spezifikation %qs ist ungÃ¼ltigSpezifikationsfehler: %<%%*%> wurde nicht durch Mustererkennung initialisiertSpezifikationsfehler: mehr als ein Argument fÃ¼r %<SYSROOT_HEADERS_SUFFIX_SPEC%>Spezifikationsfehler: mehr als ein Argument fÃ¼r %<SYSROOT_SUFFIX_SPEC%>Spezifikationsfehler: nicht erkannte Spezifikationsoption %qcSpezifikationsdatei hat keine Spezifikation zum BindenSpezifikation ist '%s'
  
! aus Spezifikation erzeugtes switch ist nur %<-%>spec_dimen_size(): Bad dimensionSpezialisierung %qT hinter Instanziierung %qTSpezialisierung von %qD nach InstanziierungSpezialisierung von %qD in anderem NamensbereichSpezialisierung von %qD muss im GÃ¼ltigkeitsbereich des Namensbereiches auftretenSpezialisierung von %qT hinter InstanziierungSpezialisierung des Alias-Template %qDSpezialisierung der implizit deklarierten speziellen ElementfunktionSpezialisierung des Variablentemplates %qD als Funktion deklariertspezialisierendes Element %<%T::%E%> erfordert Syntax %<template<>%>angegebene Grenze %E Ã¼berschreitet die GrÃ¶ÃŸe %E des Zielobjektsangegebene Grenze %E Ã¼berschreitet die maximale ObjektgrÃ¶ÃŸe %Eangegebene Grenze %E Ã¼berschreitet die GrÃ¶ÃŸe %E des Quellobjektsangegebene Grenze %E Ã¼berschreitet mÃ¶glicherweise die GrÃ¶ÃŸe %E des Zielobjektsangegebene Grenze %E Ã¼berschreitet mÃ¶glicherweise die maximale ObjektgrÃ¶ÃŸe %Eangegebene Grenze %E Ã¼berschreitet mÃ¶glicherweise die GrÃ¶ÃŸe %E des Quellobjektsangegebene Grenze %wu Ã¼berschreitet %<INT_MAX%>angegebene Grenze %wu Ã¼berschreitet maximale ObjektgrÃ¶ÃŸe %wuangegebene Grenze %wu Ã¼berschreitet die GrÃ¶ÃŸe %wu des Zielobjektsangegebene Grenze [%E, %E] Ã¼berschreitet die GrÃ¶ÃŸe %E des Zielobjektsangegebene Grenze [%E, %E] Ã¼berschreitet die maximale ObjektgrÃ¶ÃŸe %Eangegebene Grenze [%E, %E] Ã¼berschreitet die GrÃ¶ÃŸe %E des Quellobjektsangegebene Grenze [%E, %E] Ã¼berschreitet mÃ¶glicherweise die maximale ObjektgrÃ¶ÃŸe %Eangegebene Grenze [%E, %E] Ã¼berschreitet mÃ¶glicherweise die GrÃ¶ÃŸe %E des Quellobjektsangegebene Bereichsgrenze [%wu, %wu] Ã¼berschreitet %<INT_MAX%>angegebener Modus zu klein fÃ¼r AufzÃ¤hlungswerteOption %qs wurde mehrmals angegebenangegebene GrÃ¶ÃŸe %E Ã¼berschreitet die maximale ObjektgrÃ¶ÃŸe %Eangegebene GrÃ¶ÃŸe %E Ã¼berschreitet mÃ¶glicherweise die maximale ObjektgrÃ¶ÃŸe %Eangegebene GrÃ¶ÃŸe zwischen %E und %E Ã¼berschreitet die maximale ObjektgrÃ¶ÃŸe %Eangegebene GrÃ¶ÃŸe zwischen %E und %E Ã¼berschreitet mÃ¶glicherweise die maximale ObjektgrÃ¶ÃŸe %ESystemregister mit einem kurzem Namen angebenReihenfolge der Bibliotheken kommagetrennt angeben, erlaubte EintrÃ¤ge sind: log,min,pim,iso oder deren entsprechende Verzeichnisnamen m2log,m2min,m2pim,m2iso.Liste der Laufzeitmodule und deren Initialisierungsreihenfolge angebenPrÃ¤fixname fÃ¼r gemangelte Modulnamen angebenden gemangelten PrÃ¤fix fÃ¼r Modulnamen angeben, fÃ¼r alle Module in den folgenden IncludepfadenAngabe von Vektortypen mit %<__attribute__ ((mode))%> ist veraltetspecs %%include-Syntax nach %td Zeichen fehlerhaftspecs %%rename-Syntax nach %td Zeichen fehlerhaftspecs: keine %s-Spezifikation zum Umbenennen gefundenspecs: Datei fehlerhaft nach %td Zeichenspecs: unbekannter %%-Befehl nach %td Zeichenspekulative Kanten sind nicht benachbartfalsches %<>>%>; %<>%> verwenden, um eine Templateargumentliste zu beendenverdÃ¤chtige Folge von Satzzeichen %<%.*s%> am Anfang des FormatsstÃ¶rendes letztes %<%%%> im FormatverdÃ¤chtige Folge von Satzzeichen %<%.*s%> am Ende des FormatsÃ¼berzÃ¤hliges Leerzeichen am Ende des FormatsGrÃ¶ÃŸe des StapelkollisionswÃ¤chters %d muss gleich dem Sondierungsintervall %d seinStapelrahmen muss kleiner als 64k seinInterner Fehler: stack frame not a multiple of 8 bytes: %wdInterner Fehler: stack frame not a multiple of octabyte: %wdStapelrahmen zu groÃŸStapel-Ãœberwachungswert muss eine exakte Zweierpotenz seinAusdruck der Stapelgrenze wird nicht unterstÃ¼tztStapelgrenzen nicht fÃ¼r dieses Ziel unterstÃ¼tztStapelsonde fÃ¼r SVE-RahmenStapel-ÃœberprÃ¼fung erfordert %<-maccumulate-outgoing-args%> fÃ¼r KorrektheitStapel-ÃœberprÃ¼fung erfordert %<target("accumulate-outgoing-args")%> fÃ¼r KorrektheitStapelschutz schÃ¼tzt nicht Funktion: Alle lokalen Arrays sind kleiner als %d BytesStapelschutz schÃ¼tzt nicht lokale Variablen: Puffer variabler GrÃ¶ÃŸeStapelregister fÃ¼r globale Registervariable verwendetStapelgrÃ¶ÃŸe muss eine exakte Zweierpotenz seinStapelgrÃ¶ÃŸe muss grÃ¶ÃŸer als der Stapel-Ãœberwachungswert seinStapelgrÃ¶ÃŸe darf nicht grÃ¶ÃŸer als 64k seinStapelverbrauchsberechnung wird fÃ¼r dieses Ziel nicht unterstÃ¼tztStapelverbrauch ist %wu BytesStapelverbrauch kÃ¶nnte %wu Bytes seinStapelverbrauch mÃ¶glicherweise unbegrenztStapelrahmen zu groÃŸ: %d BytesOpenMP-Â»standaloneÂ«-Direktiven im Attribut %<omp::directive%> kÃ¶nnen nur in einer leeren Anweisung vorkommenStandardattribut %qE kann nur auf Funktionsdeklaratoren oder Typspezifizierer mit Funktionstyp angewendet werdendas Standardattribut %qE bezieht sich nur auf FunktionenStandardattribute inmitten von DeklarationssymbolenStandardattribute mÃ¼ssen vor den Deklarationsspezifizierern stehen, um fÃ¼r die Deklaration zu gelten, oder ihnen folgen, um fÃ¼r den Typ zu geltenStandardattribute fÃ¼r NamensrÃ¤ume mÃ¼ssen vor dem Namen des Namensraums stehenstart of RTL fragment must be on an earlier line than endAnfang der Implied-do-Schleife bei %L konnte nicht zu einem konstanten Wert vereinfacht werdenAnfang/Ende von RTL-Fragment sind in verschiedenen DateienAnweisung kann die Adresse der Ã¼berladenen Funktion nicht auflÃ¶senAnweisung hat keinen EffektAnweisung ist eine Referenz, kein Aufruf, zur Funktion %qEAnweisung ist kein KonstantenausdruckAnweisung inmitten eines Blocks fÃ¼r throw markiertAnweisung fÃ¼r throw markiert, wirft jedoch nichtsAnweisung verwendet freigegebenen SSA-Namenvolatile-Kennzeichen fÃ¼r Anweisung nicht aktuellAnweisung wird niemals ausgefÃ¼hrtAnweisung ohne EffektAnweisungs-AusdrÃ¼cke sind weder auÃŸerhalb von Funktionen noch in Template-Argumenten erlaubtstatische Behauptung gescheitertstatische Assertion fehlgeschlagen: %.*sstatische Behauptung gescheitert: %Estatische Attributdeklaration %qs fÃ¼r %q+D erfordert eine Adressestatische Kette mit Funktion, die keine verwendetstatisches Datenelement %qD in unbenannter Klassestatisches Datenelement %qE als %qs deklariertstatisches Datenelement ist nicht namenunabhÃ¤ngigStatische Deklaration von %q+D folgt nicht-statischer Deklarationstatische Initialisierung der Variablen %q+D in %<.shared%>-Speicher wird nicht unterstÃ¼tztstatic wird auf TPF-OS nicht unterstÃ¼tztstatisches Element %qD kann kein Bitfeld seinstatisches Element %qD als %<register%> deklariertstatische Elementfunktion %q#D mit Typqualifizierern deklariertstatische Elementfunktion %qD kann nicht CV-Qualifizierer habenstatische Elementfunktion %qD kann keinen ref-Qualifizierer habenÂ»staticÂ« oder Typkennzeichner in Nicht-Parameter-Arraydeklaratorstatische strukturierte Bindung ist nicht namenunabhÃ¤ngigder statische Typ %qT des Operanden ist eine nicht Ã¶ffentliche Basisklasse des dynamischen Typs %qTstatische Variable ist nicht namensunabhÃ¤ngigstatisch reservierte Instanz der Objective-C-Klasse %qEAttribute stdcall und cdecl sind nicht vertrÃ¤glichAttribute stdcall und fastcall sind nicht vertrÃ¤glichAttribute stdcall und thiscall sind nicht vertrÃ¤glichAusdruck fÃ¼r die Schrittweite verweist auf Ã¤uÃŸeren Iterator %qDSchritt der Implied-do-Schleife bei %L konnte nicht zu einem konstanten Wert vereinfacht werdenSchrittweite der implied-do-Schleife bei %L darf nicht 0 seinAnweisung (%p) nach Optimierungsdurchgang als geÃ¤ndert markiert: stmt with wrong VUSEInterner Fehler: stmts without blockSpeicherklasse %<__thread%> ungÃ¼ltig fÃ¼r Funktion %qsSpeicherklasse %<auto%> ungÃ¼ltig fÃ¼r Funktion %qsSpeicherklasse %<register%> ungÃ¼ltig fÃ¼r Funktion %qsSpeicherklasse %<thread_local%> ungÃ¼ltig fÃ¼r Funktion %qsSpeicherklasse %qD auf Templateinstanziierung angewendetSpeicherklasse %qs angegebenSpeicherklasse fÃ¼r Parameter %qE angegebenSpeicherklasse fÃ¼r Parameter %qs angegebenSpeicherklasse fÃ¼r Strukturfeld angegebenSpeicherklasse fÃ¼r Strukturfeld %qE angegebenSpeicherklasse fÃ¼r Template-Parameter %qs angegebenSpeicherklasse fÃ¼r Typnamen angegebenSpeicherklasse fÃ¼r unbenannten Parameter angegebenSpeicherklasse in %<sizeof%> angegebenSpeicherklasse in %qE angegebenSpeicherklasse in Typcast angegebenSpeicherklassenangabe in leerer Deklaration mit auf %<enum%> basierendem TypenSpeicherklassenangaben sind in friend-Funktionsdeklarationen ungÃ¼ltigSpeichergrÃ¶ÃŸe von %q+D ist nicht konstantSpeichergrÃ¶ÃŸe von %q+D ist unbekanntSpeichergrÃ¶ÃŸe von %qD wurde nicht aufgelÃ¶stSpeichergrÃ¶ÃŸe von %qD ist nicht konstantSpeichergrÃ¶ÃŸe von %qD ist unbekanntAdresse der lokalen Variable %qD wird in %qE gespeichertMerkwÃ¼rdiger GerÃ¤tename %qs nach %qs: falsches Zeichen %qcStrategiename %qs fÃ¼r Option %qs angegeben, wird jedoch fÃ¼r 32-Bit-Code nicht unterstÃ¼tztÃ¼berflÃ¼ssiges %<,%> am Ende der Elementdeklarationverirrtes %<@%> im Programmverirrtes %<\%o%> im Programmverirrtes %qc im ProgrammÃ¼berflÃ¼ssiges %qs zwischen Objective-C++ Methodenverirrtes %qs im ProgrammStreaming-Funktionen erfordern die ISA-Erweiterung %qsStreaming-Kindprozess fehlgeschlagenDer Streaming-Kindprozess wurde durch ein Signal beendetstrftime-Formate kÃ¶nnen keine Argumente formatierenZeichenkettenlÃ¤nge %qd ist grÃ¶ÃŸer als die LÃ¤nge %qd, die von ISO-C%d-Compilern unterstÃ¼tzt werden mussdas String-Literal darf kein %<\0%> enthaltenZeichenkettenliteral mit nutzerdefiniertem Suffix ist in diesem Kontext ungÃ¼ltigZuweisung mit starker Typumwandlung wurde abgefangenMÃ¶glicherweise wird starke Typumwandlung benÃ¶tigtÂ»structÂ« wurde hier definiertstruct hat keine Elementestruct hat keine benannten ElementeStrukturausrichtung muss eine kleine Zweierpotenz sein, nicht %wuStruktur, die ein flexibles Arrayelement enthÃ¤lt, ist nicht am Ende einer anderen StrukturStrukturfeldGrenze fÃ¼r StrukturgrÃ¶ÃŸe kann nur auf 8 oder 32 gesetzt werdenGrenze fÃ¼r StrukturgrÃ¶ÃŸe kann nur auf 8, 32 oder 64 gesetzt werdendie strukturierte Bindung im Namespace-Bereich ist nicht namenunabhÃ¤ngigstrukturierte Bindungsdeklarationen kÃ¶nnen erst ab %<-std=c++20%> oder %<-std=gnu++20%> %qs seinDeklaration fÃ¼r strukturierte Bindung darf nicht als %qs deklariert werdenDeklaration fÃ¼r strukturierte Bindung darf nicht als %<auto%> (C++98) deklariert werdenDeklaration fÃ¼r strukturierte Bindung darf nicht vom eingeschrÃ¤nkten %<auto%>-Typen %qT seinDeklaration fÃ¼r strukturierte Bindung darf nicht vom Typen %qT seinDeklaration fÃ¼r strukturierte Bindung festgelegt, aber nicht verwendetStrukturierte Bindung hat unvollstÃ¤ndigen Typen %qTStrukturierte Bindung verweist auf unvollstÃ¤ndigen Klassentypen %qTStrukturierte Bindung verweist auf unvollstÃ¤ndigen Typen %qTstrukturierte Bindungen in Bedingungen sind erst mit %<-std=c++2c%> oder %<-std=gnu++2c%> verfÃ¼gbarstrukturierte Bindungen sind nur mit %<-std=c++17%> oder %<-std=gnu++17%> verfÃ¼gbarstrukturierte Bindungen mit attribuierten Bezeichnern sind erst mit %<-std=c++2c%> oder %<-std=gnu++2c%> verfÃ¼gbarUnter-Framework-Include %s steht mit Framework-Include in KonfliktTeilobjekt %qD ist hier deklariertUnterprogramm %q+F nicht als %<Inline%> markiertUnterprogramm %q+F nicht als %<Inline_Always%> markiertIndex fehlt in Arrayreferenzindizierter Wert ist weder ein Array noch ein Zeigerindizierter Wert ist weder Array noch Zeiger noch Vektorindizierter Wert ist Zeiger auf FunktionIndizierung eines als %<register%> deklarierten Arrayswar spÃ¤ter als %s mit %u unspezifizierten Variablengrenze deklariertwar spÃ¤ter als %s mit %u unspezifizierten Variablengrenze deklariertErsetzung der ermittelten Templateargumente fÃ¼hrte zu obigen Fehlerngeschweifte Klammern um leeren KÃ¶rper in %<do%>-Anweisung empfohlengeschweifte Klammern um leeren KÃ¶rper in einer %<else%>-Anweisung empfohlengeschweifte Klammern um leeren KÃ¶rper in einer %<if%>-Anweisung empfohlenes wird empfohlen, explizite geschweifte Klammern um leeren KÃ¶rper in %<do%>-Anweisung zu setzenes wird empfohlen, explizite geschweifte Klammern zu setzen, um mehrdeutiges %<else%> zu vermeidenKlammern um %<&&%> innerhalb von %<||%> empfohlenKlammern um %<+%> in Operand von %<&%> empfohlenKlammern um %<+%> innerhalb von %<<<%> empfohlenKlammern um %<+%> innerhalb von %<>>%> empfohlenKlammern um %<-%> in Operand von %<&%> empfohlenKlammern um %<-%> innerhalb von %<<<%>Klammern um %<-%> innerhalb von %<>>%> empfohlenKlammern um %<>>%>-Ausdruck empfohlenKlammern um Arithmetik in Operand von %<^%> empfohlenKlammern um Arithmetik in Operand von %<|%> empfohlenUm Zuweisung, die als Wahrheitswert verwendet wird, werden Klammern empfohlenKlammern um Vergleich in Operand von %<!=%> empfohlenKlammern um Vergleich in Operand von %<&%> empfohlenKlammern um Vergleich in Operand von %<==%> empfohlenKlammern um Vergleich in Operand von %<^%> empfohlenKlammern um Vergleich in Operand von %<|%> empfohlenKlammern um Operand von %<!%> empfohlen, oder Ã„nderung von %<&%> in %<&&%> oder %<!%> in %<~%>Klammern um Operand von %<!%> empfohlen, oder Ã„nderung von %<|%> in %<||%> oder %<!%> in %<~%>empfohlene Alternative:empfohlene Alternativen:UnterstÃ¼tzung fÃ¼r Modus %qsUnterstÃ¼tzte Kernarchitekturen:%sSchalter %<-mcpu=%s%> steht mit dem Schalter %<-march=%s%> in Konflikt und hat dazu gefÃ¼hrt, dass die Optionen %qs hinzugefÃ¼gt wurdenSchalter %<-mcpu=%s%> steht mit dem Schalter %<-march=%s%> in KonfliktSchalter %qs beginnt nicht mit %<-%>Schalter %qs wird nicht mehr unterstÃ¼tztswitch-Bedingung hat booleschen Wertswitch springt in Anweisungs-Ausdruckswitch springt Ã¼ber OpenMP-%<allocate%>switch springt Ã¼ber VariableninitialisierungDie Standardfallbehandlung in switch fehltswitch-GrÃ¶ÃŸe ist keine Ganzzahlswitch beginnt hierswitch-Anweisung der GrÃ¶ÃŸe %lu EintrÃ¤ge ist zu groÃŸSymbol %qD, das von %qD referenziert wird, wurde hier deklariertSymbol muss definiert sein, um eine Version zu habenZeichen als Immediate-Operand verwendetZeichen sowohl mit Basis- als auch Index-Registern verwendetSymbol mit Offset im PIC-Modus verwendetsymbolische Speicherreferenzen werden nur auf z10 oder neuer unterstÃ¼tztInterner Fehler: symtab_node::verify failedArgument des Attributs Â»symverÂ« muss das Format %<Name@Knotenname%> habenInterner Fehler: symver is not exported with default visibility%<symver%> wird nur auf ELF-Plattformen unterstÃ¼tztInterner Fehler: symver target is not exported with default visibilityerzeugte Methode %qD zuerst hier erfordertSystem-Pfad %qs ist nicht absolutProduktion des Endaufrufs fehlgeschlagenEndrekursion, in dem Akkumulation mit nichtrekursivem musttail-Aufruf vermischt istEndrekursion mit Zeigern darf nur Additionen verwendenAdresse der direkten Funktion %qD wird genommenAdresse des Konstruktors %qD wird genommenAdresse des Destruktors %qD wird genommenAdresse des Ausdrucks des Typs %<void%> wird genommenZugriff auf die Adresse des gepackten Elements von %qT fÃ¼hrt mÃ¶glicherweise zu einem nicht ausgerichteten ZeigerwertAdresse eines Rvalues wird ermitteltden Betrag des vorzeichenlosen Typs %qT zu berechnen, hat keine AuswirkungDas Ermitteln der Adresse einer Marke ist nicht standardkonformZiel und Gastgeber sind %qs:%qs, erwartet werden jedoch %qs:%qsZiel-CPU unterstÃ¼tzt nicht ARM-ModusZiel-CPU unterstÃ¼tzt keine ARMv8-M-Security-ErweiterungenZiel-CPU unterstÃ¼tzt keine THUMB-BefehleZiel-CPU unterstÃ¼tzt keine ZusammenarbeitZiel-CPU unterstÃ¼tzt keine unausgerichteten ZugriffeZiel-Betriebssystem unterstÃ¼tzt keine unausgerichteten ZugriffeZielargumentZiel-Attribut oder Pragma Ã¤ndert GrÃ¶ÃŸe von %<long double%>Ziel-Attribut oder Pragma Ã¤ndert AltiVec ABIZiel-Attribut oder Pragma Ã¤ndert darwin64 ABIZiel unterstÃ¼tzt kein Aktualisieren des atomaren Profils, einfacher Modus wird ausgewÃ¤hltZielsystem unterstÃ¼tzt Funktionsversions-Dispatcher nichtZielformat unterstÃ¼tzt nicht Â»unendlichÂ«das Ziel ist nicht in der Lage, den Aufruf in einen Geschwisteraufruf zu optimierenZiel ist kein Zeiger oder ReferenzZiel ist kein Zeiger oder Referenz auf KlasseZiel ist kein Zeiger oder Referenz auf vollstÃ¤ndigen TypenZiel der Umwandlung kÃ¶nnte Kandidat ein fÃ¼r ein Formatattribut seinZiel der Initialisierung kÃ¶nnte ein Kandidat fÃ¼r Formatattribut seinzielspezifische eingebaute Funktion ist nicht verfÃ¼gbarFehlzuordnung zielspezifischer OptionenZielsystem unterstÃ¼tzt keine TestausgabenZielsystem unterstÃ¼tzt nicht das Testformat %qsZielarchitekturen fehlen hinter %qsTemplate %qD deklariertTemplate %qE in Klausel %qsTemplateargument %d ist ungÃ¼ltigTemplateargument %qE fÃ¼r Typ %qT ist keine Ãœbersetzungszeit-KonstanteHerleitung/Ersetzung von Templateargument gescheitert:Templateargument fÃ¼r %qD verwendet lokalen Typ %qTTemplate-Argument fÃ¼r %<%s %T%> benÃ¶tigtTemplate-Argumente fÃ¼r %qD passen nicht zum ursprÃ¼nglichen Template %qDTemplateklasse ohne NamenTemplate-EinschrÃ¤nkung fÃ¼r %qD fehlgeschlagenTemplatedeklaration von %<typedef%>Templatedeklaration von %q#DTemplate-Definition eines Nicht-Templates %q#DInstanziierungstiefe fÃ¼r Templates Ã¼berschreitet HÃ¶chstwert %d (%<-ftemplate-depth=%> verwenden, um dies zu erhÃ¶hen)Instanziierungstiefe fÃ¼r Templates Ã¼berschreitet HÃ¶chstwert %d beim Instanziieren von %q+D, mÃ¶glicherweise wegen Generierung der virtuellen Tabelle (%<-ftemplate-depth=%> verwenden, um den HÃ¶chstwert zu erhÃ¶hen)Template-Parameter %q+#DTemplateparameter %qD hier deklariertTemplateparameter %qD vom Typ %qT ist in ganzzahligem Konstantenausdruck nicht erlaubt, da er nicht Ganzzahl- oder AufzÃ¤hlungstyp hatTemplateparameterliste in expliziter Instanziierung verwendetangegebene Template-Parameterlisten passen nicht zu Templateparametern von %qDTemplateparameterpack %qD kann kein Standardargument habenTemplateparameterpack kann kein Standardargument habenTemplate-Parameterpacks kÃ¶nnen keine Standardargumente habenTemplate-Parameter-Typ %qT als %<friend%> deklariertTemplate-Parameter kÃ¶nnen keine Â»friendsÂ« seinTemplate-Parameter passen nicht zum Template %qDTemplateparameter nicht in partieller Spezialisierung herleitbar:Templatespezialisierung von %qD durch ISO C++ nicht erlaubtTemplatespezialisierung mit C-Bindung angegebenkeine Templatespezifizierer in Deklaration von %qD angegebenTemplate-Template-Parameter %qT in Deklaration von AbleitungshinweisTemplatetypparameter mÃ¼ssen das SchlÃ¼sselwort %<class%> oder %<typename%> verwendenTemplate mit C-BindungTemplate-ID %qD fÃ¼r %q+D passt zu keiner TemplatedeklarationTemplate-ID %qD als Deklarator verwendetTemplate-ID %qE in Deklaration des ersten Templatestemplate-id ist fÃ¼r Konstruktor in C++20 nicht erlaubttemplate-id fÃ¼r Destruktor ist in C++20 nicht erlaubtTemplate-Parameter-Templates dÃ¼rfen nicht %<virtual%> seinZwischenergebnis des nicht-literalen Typs %qT in konstantem AusdruckternÃ¤rer %<operator?:%>ternÃ¤rer %<operator?:%> in %<%E ? %E : %E%>PrÃ¼fung, ob eine Konzept-ID ein gÃ¼ltiger Ausdruck ist; fÃ¼gen Sie %<requires%> hinzu, um die ErfÃ¼llung zu prÃ¼fendie %<audit%>-Semantik sollte mindestens so stark die die %<default%>-Semantik seindas SchlÃ¼sselwort %<bool%> ist in einer Konzeptdefinition in C++20 nicht erlaubtder %<destroy%>-Ausdruck %qE sollte mit dem %<depobj%>-Argument %qE identisch seinder Ausdruck der %<device%>-Klausel muss den Wert %<1%> habender Ausdruck der %<device%>-Klausel bei %C muss den Wert %<1%> habendie %<device%>-Klausel muss vorhanden sein, wenn die %<interop%>-Klausel mehr als ein Listenelement enthÃ¤ltdas %<interrupt%>-Attribut erfordert einen MIPS32r2-Prozessor oder neuerder %<simd%>-Selektor ist in einem %<begin declare variant%>-Kontextselektor nicht zulÃ¤ssigdas Attribut %qE kann nicht auf einen SVE-Funktionstyp angewendet werdenAttribut %qE erfordert Argumentedie Architektur %qs unterstÃ¼tzt %<-m%s=2008%>die Architektur %qs unterstÃ¼tzt %<-m%s=legacy%> nichtdie Architektur %qs unterstÃ¼tzt %<-mfp32%> nichtdie Architektur %qs unterstÃ¼tzt keine DSP-Befehledie Architektur %qs unterstÃ¼tzt keine Befehle mit Sprungwahrscheinlichkeitdie Architektur %qs unterstÃ¼tzt die Befehle Â»maddÂ« und Â»msubÂ« nichtdie Architektur %qs unterstÃ¼tzt keine ungeraden Register fÃ¼r einfache Genauigkeitdie Architektur %qs unterstÃ¼tzt keine paarweisen Einzel-Befehledie Architektur %qs unterstÃ¼tzt nicht den synci-Befehldie %qs-Klausel bei %L kann nur angegeben werden, wenn der %<dispatch%>-Selektor der Konstruktionsselektormenge in der %<match%>-Klausel vorkommtdie %qs-Klausel kann nur angegeben werden, wenn der %<dispatch%>-Selektor der Konstruktionsselektormenge in der %<match%>-Klausel bei %L vorkommtdie Debug-Informationen %qs kann nicht mit vorkompilierten Headern verwendet werdendas Â» Â«-printf-Kennzeichendas Â»!Â«-strfmon-Kennzeichendas Â»#Â«-printf-Kennzeichendas Â»#Â«-strftime-Kennzeichendas Â»'Â«-printf-Kennzeichendas Â»'Â«-scanf-Kennzeichendas Â»(Â«-strfmon-Kennzeichendas Â»+Â«-printf-Kennzeichendas Â»+Â«-strfmon-Kennzeichendas Â»-Â«-printf-Kennzeichendas Â»-Â«-strfmon-Kennzeichendas Â»-Â«-strftime-Kennzeichendas Â»0Â«-printf-Kennzeichendas Â»0Â«-strftime-Kennzeichender Â»EÂ«-strftime-Modifiziererdas Â»IÂ«-printf-Kennzeichendas Â»IÂ«-scanf-Kennzeichender Â»OÂ«-Modifiziererder Â»OÂ«-strftime-Modifiziererdas Â»^Â«-strfmon-Kennzeichendas Â»^Â«-strftime-Kennzeichendas Â»_Â«-strftime-Kennzeichendas Â»aÂ«-scanf-Kennzeichendas Â»mÂ«-scanf-Kennzeichendas Â»qÂ«-Diagnose-KennzeichenDie Option Â»-sharedÂ« wird derzeit nicht fÃ¼r VAX ELF unterstÃ¼tztdie ABI fÃ¼r die Ãœbergabe eines Wertes, der Felder mit Null-Breite vor einem benachbarten 64-Bit-Gleitkommafeld enthÃ¤lt, wurde %{mit GCC 12.1%} geÃ¤ndertDas ABI der ParameterÃ¼bergabe mit %d-Byte-Ausrichtung hat sich in GCC 4.6 geÃ¤ndertdie ABI fÃ¼r die RÃ¼ckgabe eines Wertes, der Bit-Felder mit der Breite Null enthÃ¤lt, aber ansonsten ein Aggregat mit nur einem oder zwei FlieÃŸkomma-Feldern ist, wurde %{mit GCC 12.1%} geÃ¤ndertdie ABI fÃ¼r die RÃ¼ckgabe eines Wertes, der leere C++17-Basen enthÃ¤lt, aber ansonsten ein Aggregat mit nur einem oder zwei FlieÃŸkomma-Feldern ist, wurde %{mit GCC 12.1%} geÃ¤ndertdas ABI der C-StrukturÃ¼bergabe mit Bitfeldern der Breite 0 hat sich in GCC %{12.1%} geÃ¤ndertDas ABI der Struct-Ãœbergabe mit einem flexiblen Arrayelement hat sich in GCC 4.4 geÃ¤ndertdas ABI der StrukturÃ¼bergabe mit %<complex float%>-Element hat sich in GCC 4.4 geÃ¤ndertdas ABI der Union-Ãœbergabe mit %<long double%> hat sich in GCC 4.4 geÃ¤ndertDie RX100-CPU hat keine FPU-HardwareDie RX200-CPU hat keine FPU-Hardwaredie Adresse %qE ist niemals NULLdie Adresse von %qD ist kein gÃ¼ltiges Templateargumentdie Adresse von %qD ist kein gÃ¼ltiges Templateargument, weil sie keine statische Lebensdauer hatDie Adresse von %qD wird immer zu %<true%> auswertendie Adresse von %qD ist niemals %<null%>die Adresse von %qD ist niemals NULLdie Adresse einer Marke kann nicht in einem Konstanten-Ausdruck auftretendie Adresse des %qT-Teilobjekts von %qD ist kein gÃ¼ltiges Templateargumentdas align-Argument fÃ¼r %<__builtin_coro_promise%> muss eine Konstante seindie Ausrichtung von %<_Atomic %T%>-Feldern wurde mit %{GCC 11.1%} geÃ¤ndertdas Argument fÃ¼r %<__builtin_counted_by_ref%> muss ein Array seinDas Argument zum eingebauten %<xabort%> ein 8-Bit-Direktwert seindie Argumente fÃ¼r %qE mÃ¼ssen konstante Zeichenfolgen seindas scanf-Merkmal der ZuweisungsunterdrÃ¼ckungder Aufruf erfordert %<ifunc%>, was von diesem Ziel nicht unterstÃ¼tzt wirddie Aufrufkonvention fÃ¼r %qT Ã¤ndert sich mit %<-fabi-version=13%> (GCC 8.2)die Kombination von %qs und %qs ist mit %qs unvertrÃ¤glichder Vergleich wird zu %qE reduziertder Vergleich wird immer als %<false%> ausgewertet, da die Adresse von %qE niemals NULL sein wirdder Vergleich wird immer als %<false%> ausgewertet, da der Zeigeroperand in %qE nicht NULL sein darfder Vergleich wird immer als %<true%> ausgewertet, da die Adresse von %qE niemals NULL sein wirdder Vergleich wird immer als %<true%> ausgewertet, da der Zeigeroperand in %qE nicht NULL sein darfder Compiler darf davon ausgehen, dass die Adresse von %qD immer zu %<true%> evaluiertder Compiler kann annehmen, dass die Adresse von %qD niemals NULL istder Compiler kann annehmen, dass die Adresse von %qE niemals NULL istDie Komponente %qs ist ein PRIVATE-Typ und kann nicht Komponente von %qs sein, die PUBLIC bei %L istder in Konflikt stehende Typ aus der anderen Ãœbersetzungseinheitdie virtuelle Tabelle des in Konflikt stehenden Typs aus der anderen Ãœbersetzungseinheit ist unterschiedlich groÃŸder in Konflikt stehende Typ aus der anderen Ãœbersetzungseinheit hat virtuelle Tabelle mit unterschiedlichem Inhaltder in Konflikt stehende Typ aus der anderen Ãœbersetzungseinheit hat virtuelle Tabelle mit mehr EintrÃ¤gender in Konflikt stehende Typ aus der anderen Ãœbersetzungseinheit hat unterschiedliche RTTI-Informationder Wert von uninitialisiertem Speicher ist in konstantem Ausdruck nicht verwendbarKontrollfluss der Funktion %qD passt nicht zu ihren Profilingdaten (ZÃ¤hler %qs)der Versprechens-Typ %qT der Koroutine deklariert sowohl %<return_value%> als auch %<return_void%>der ZÃ¤hler sollte nicht kleiner als 0 sein; bitte das intrinsische %qs im Code prÃ¼fender Vorgabewert fÃ¼r die aktuelle CPU-Feineinstellung ist %d Bytesdas Richtungsargument fÃ¼r %<__builtin_coro_promise%> muss eine Konstante seinin Objective-C 1.0 gibt es keine Dot-Syntaxdie Auslassung in %qD wurde nicht vererbtdas Ereignishandle einer %<detach%>-Klausel sollte nicht in einer data-sharing-Klausel seinder Ausdruck %qE wird zu %<false%> ausgewertetder Ausdruck %qE darf keine Exception werfendie zusÃ¤tzliche Basisklasse ist hier definiertfÃ¼nftes Argument muss ein 8-Bit-Immediate seindas erste Argument eines %qs muss von booleschem Vektortyp sein und gleich viele Elemente wie das Ergebnis habender erste Unterschied der entsprechenden Definitionen ist Feld %qDder erste Unterschied der entsprechenden Definitionen ist Methode %qDder erste Parameter von %<operator new%> kann nicht das Standardargument habendas vierte Argument muss eins der AufzÃ¤hlung %qs seindie RahmengrÃ¶ÃŸe von %wu Bytes Ã¼berschreitet %wu BytesDer direkte Argument muss ein 4-Bit-Immediate seinDas direkte Argument muss ein 5-Bit-Immediate seinDas direkte Argument muss ein 8-Bit-Immediate seindie unvereinbare Auswahl wurde durch das ultimative Alias-Ziel %qD bestimmtder inkompatible Typ, der in einer anderen Ãœbersetzungseinheit definiert istder inkompatible Typ ist hier definiertdas Lambda hat keinen Â»capture-defaultÂ«Das letzte Argument muss ein 1-Bit-Immediate seinDas letzte Argument muss ein 2-Bit-Immediate seindas letzte Argument muss ein 3-Bit-Immediate seinDas letzte Argument muss ein 32-Bit-Immediate seinDas letzte Argument muss ein 4-Bit-Immediate seinDas letzte Argument muss ein 5-Bit-Immediate seinDas letzte Argument muss ein 1-Bit-Immediate seinDas letzte Argument muss ein 8-Bit-Immediate seinDas letzte muss Skalierung 1, 2, 4, 8 seinder Wert der Ortsangabe ist beschÃ¤digtder m210 hat keine Little-Endian-UnterstÃ¼tzungdas Makro %qs war noch nicht definiertder gemangelte Name von %qD hat sich zwischen %<%s=%d%> (%qD) und %<%s=%d%> (%qD) geÃ¤ndertder gemangelte Name von %qD Ã¤ndert sich zwischen %<%s=%d%> (%qD) und %<%s=%d%> (%qD)der gemangelte Name von %qD Ã¤ndert sich zwischen %<-fabi-version=%d%> und %<-fabi-version=%d%>der gemangelte Name von %qT hat sich in %<-fabi-version=20%> (GCC 15.1) geÃ¤ndertder gemangelte Name von %qT Ã¤ndert sich in %<-fabi-version=20%> (GCC 15.1)der gemangelte Name eines Thunks fÃ¼r %qD Ã¤ndert sich zwischen %<-fabi-version=%d%> und %<-fabi-version=%d%>der gemangelte Name der InitialisierungswÃ¤chter-Variable fÃ¼r %qD Ã¤ndert sich zwischen %<-fabi-version=%d%> und %<-fabi-version=%d%>der Maximalwert fÃ¼r den letzten GrÃ¶ÃŸenbereich sollte fÃ¼r Option %qs -1 seindie an %<unavailable%> angehÃ¤ngte Nachricht ist keine Zeichenkettedie Initialisierungsreihenfolge der Module wird dynamisch von M2RTS und den AnwendungsabhÃ¤ngigkeiten festgelegtDas vorletzte Argument muss ein 8-Bit-Immediate seinDer ausgelassene mittlere Operand in %<?:%> ist immer %<true%>; ausdrÃ¼cklicher mittlerer Operand wird empfohlender Operand %qE ist nicht erfÃ¼llt, dadas hereingereichte Closureobjekt wird nicht verÃ¤ndert, da es als Wert Ã¼bernommen wirddas Programm sollte auch %qD definierender Wertebereich des ZÃ¤hlers sollte im Bereich 0 bis 16 sein; bitte das intrinsische %qs im Code prÃ¼fender Wertebereich des ZÃ¤hlers sollte im Bereich 0 bis 32 sein; bitte das intrinsische %qs im Code prÃ¼fender Wertebereich des ZÃ¤hlers sollte im Bereich 0 bis 64 sein; bitte das intrinsische %qs im Code prÃ¼fender Wertebereich der Maske ist 0 bis 255der Wertebereich des Selektors sollte 0 bis 1 seinder Wertebereich des Selektors sollte 0 bis 3 seinder Wertebereich des Selektors sollte 0 bis 7 seindas Register %qs kann in %<asm%> fÃ¼r das aktuelle Ziel nicht bestraft werdenfÃ¼r %q+D angegebenes Register kann vom aktuellen Ziel nicht zugegriffen werdenfÃ¼r %q+D angegebenes Register ist nicht allgemein genug, um als eine Registervariable verwendet zu werdender erforderliche Ausdruck %qE ist ungÃ¼ltigder erforderliche Ausdruck %qE ist ungÃ¼ltig, dader erforderliche Typ %qT ist ungÃ¼ltigder erforderliche Typ %qT ist ungÃ¼ltig, dadas Ergebnis des Befehls xxspltidp ist fÃ¼r denormalisierte Eingabewerte undefiniertdas Ergebnis der Umwandlung ist nicht spezifiziert, da %qE auÃŸerhalb des Wertebereichs des Typs %qT liegtdie selben Schleifen-Iterationsvariablen %qD werden in mehreren verknÃ¼pften Schleifen verwendetdieses Ziel unterstÃ¼tzt nicht %<asm goto%> mit Ausgaben in %<asm%>drittes Argument muss ein 8-Bit-Immediate seindas dritte Argument muss eine Vergleichskonstante seinder Typ %qT der %<constexpr%>-Variable %qD ist kein Literalder zerstÃ¶rte Typ ist %qT, aber der Destruktor verweist auf %qTder Typ eines Zeigers auf eine explizite Objekt-Member-Funktion ist ein normaler Funktionszeiger-Typder Typ einer expliziten Objekt-Member-Funktion ist ein normaler Funktionstypder Wert von %qD ist in konstantem Ausdruck nicht verwendbarDer Wert des Stapelzeigers muss nach einer %<asm%>-Anweisung derselbe sein wie vor der Anweisunges gibt keine Argumente fÃ¼r %qD, die von einem Templateparameter abhÃ¤ngen, weshalb eine Deklaration von %qD verfÃ¼gbar sein musses gibt %i Kandidatenes gibt %i Kandidatendrittes Argument von %q+D sollte wahrscheinlich %<char **%> seinDrittes Argument fÃ¼r %<__builtin_prefetch%> muss eine Konstante seinDrittes Argument fÃ¼r eingebautes %<crc%> muss eine Konstante seinDrittes Argument fÃ¼r Funktion %qE muss eine konstante Ganzzahl seindritter Operand des bedingten Ausdrucks kann die Adresse der Ã¼berladenen Funktion nicht auflÃ¶sendritter Operand des bedingten Ausdrucks hat keinen Effektdritter Operand des bedingten Ausdrucks ist eine Referenz, kein Aufruf, zur Funktion %qEdritter Operand fÃ¼r Bedingungsoperator ist vom Typ %<void%>, aber der zweite Operand ist weder ein Throw-Ausdruck noch vom Typ %<void%>diese %qs-Klausel beschÃ¼tzt nicht â€¦diese eingebaute Funktion ist nur auf dem fr405 und fr450 verfÃ¼gbardiese eingebaute Funktion ist nur auf dem fr450 verfÃ¼gbardiese eingebaute Funktion ist nur auf dem fr500 und fr550 verfÃ¼gbardiese eingebaute Funktion ist nur mit der Toolchain v3f verfÃ¼gbardiese eingebaute Funktion ist nur mit der Toolchain v3s oder v3f verfÃ¼gbardiese eingebaute Funktion wird von der Toolchain v3m nicht unterstÃ¼tztdiese eingebaute Funktion wird auf diesem Ziel nicht unterstÃ¼tztdieser Compiler unterstÃ¼tzt %qs nichtdieser Compiler unterstÃ¼tzt PowerPC nicht (die Option %<-arch%> wird ignoriert)dieser Compiler unterstÃ¼tzt x86 nicht (%<-arch%>-Option wird ignoriert)diese Bedingung hat identische Zweigediese Dezimalkonstante ist nur in ISO-C90 vorzeichenlosdiese Dezimalkonstante wÃ¤re in ISO-C90 vorzeichenlosdiese Definition erfordert MVE-Typen, bitte binden Sie %qs eindiese Definition erfordert die MVE-ISA-Erweiterungdiese FlexibilitÃ¤t ist veraltet und wird demnÃ¤chst entferntdies ist ein GCC-Bug; ein Workaround ist, die aufgerufene Funktion mit dem Â»usedÂ«-Attribut zu markierendies ist ein TestDies ist die erste StandardmarkeDies ist der erste Eintrag, der diesen Wert Ã¼berschneidetdies ist der Befehl:diese Medienfunktion ist nur auf dem fr400 und fr550 verfÃ¼gbardiese Medienfunktion ist nur auf dem fr500 verfÃ¼gbardiese Operation erfordert die RVV-ISA-Erweiterungdiese Operation erfordert die SVE-ISA-Erweiterungdiese Anweisung kÃ¶nnte durchfallendieses Ziel definiert keine Spekulationsbarriere; das erzeugte Programm wird trotzdem korrekt laufen, aber irrige Spekulationen sind mÃ¶glicherweise nicht eingeschrÃ¤nktdieses Ziel unterstÃ¼tzt nicht %qsDiese Zielarchitektur ist Â»Little EndianÂ«diese Zielmaschine hat keine verzÃ¶gerten Zweigediese Warnung sollte Ã¼bersprungen werdenThread-lokale COMMON-Daten nicht implementiertThread-lokale Deklaration von %q#D folgt nicht-Thread-lokaler DeklarationThread-lokale Deklaration von %q+D folgt nicht-Thread-lokaler Deklarationthreadprivate Iterationsvariable %qDthreadprivate Variable %qE in Zielregion mit %<order(concurrent)%>-Klausel verwendetthreadprivate Variable %qE in Zielregion verwendetthreadprivate Variable %qE in unverknÃ¼pfter Task verwendetDreiwege-Vergleich von %qD hat den Typ %qT, nicht den Vergleichskategorie-TypDreiwege-Vergleich von %qD ist vom Typ %qT, der sich nicht in %qT umwandeln lÃ¤sstDrei-Wege-Vergleich von Vektorenwirft NULL, was ganzzahlig, aber kein Zeigertyp istthunk-inline wird nur mit %<-mindirect-branch-jump%> unterstÃ¼tztdie zu allozierende Variable ist hier deklariertzur Sicherheit mÃ¼ssen alle vorÃ¼bergehenden Zeiger in Umwandlung von %qT in %qT mit %<const%> qualifiziert seinum AbhÃ¤ngigkeiten zu erzeugen, mÃ¼ssen Sie entweder %<-M%> oder %<-MM%> angebenandere Fundstelle von %qs ist hierum auf ein Typelement eines Templateparameters zu verweisen, %<typename %E%> verwendenToken %u hat %<x-location == %llu%>Token %u hat %<x-location == y-location == %llu%>Token %u hat %<y-location == %llu%>zu wenige Argumente fÃ¼r %%:version-compareZu wenige Argumente fÃ¼r %<__builtin_tgmath%>zu wenige Argumente fÃ¼r eingebaute Funktion %qE, %u erwartetzu wenige Argumente fÃ¼r Konstruktor %q#Dzu wenige Argumente fÃ¼r FunktionZu wenige Argumente fÃ¼r %<va_start%>zu wenige Argumente fÃ¼r Funktion %q#DZu wenige Argumente fÃ¼r Funktion %qEzu wenige Argumente fÃ¼r Funktion %qE; %i erwartet, %i bekommenzu wenige Argumente fÃ¼r Funktion %qE; mindestens %i erwartet, %i bekommenZu wenige Argumente fÃ¼r Elementfunktion %q#Dzu wenige Argumente fÃ¼r Methode %q#Dzu wenige Templateparameterlisten in Deklaration von %qDzu wenige Templateparameterlistentoo large function value type, needs %d registers, have only %d registers for thiszu spÃ¤t fÃ¼r Â»#Â«-Direktive, um Debug-Verzeichnis festzulegenzu viele %<#pragma options align=reset%>zu viele %<...%> in Lambda-Capturezu viele %<always%>-Modifiziererzu viele %<always%>-Modifizierer bei %Lzu viele %<close%>-Modifiziererzu viele %<close%>-Modifizierer bei %Lzu viele %<defaultmap%>-Klauseln mit %qs-Kategoriezu viele %<defaultmap%>-Klauseln mit nicht angegebener Kategoriezu viele %<if%>-Klauselnzu viele %<if%>-Klauseln mit %qs-Modifiziererzu viele %<if%>-Klauseln ohne Modifiziererzu viele %<match%>-Klauselnzu viele %<otherwise%>- oder %<default%>-Klauseln in %<metadirective%>zu viele %<otherwise%>- oder %<default%>-Klauseln in %<metadirective%> bei %Czu viele %<present%>-Modifiziererzu viele %<present%>-Modifizierer bei %Lzu viele %<self%>-Klauselnzu viele %<static%>-Argumentezu viele %qs-Klauselnzu viele %qs-Klauseln an einem Task-Konstruktzu viele Alternativen in %<asm%>zu viele Argumentezu viele Argumente fÃ¼r %%:dumpszu viele Argumente fÃ¼r Formatzu viele Argumente fÃ¼r teilweise Spezialisierung %qTzu viele Argumente, die in SGPR-Registern Ã¼bergeben werdenzu viele Argumente fÃ¼r %%:version-comparezu viele Argumente fÃ¼r %%:compare-debug-self-optzu viele Argumente fÃ¼r %%:version-comparezu viele Argumente fÃ¼r eingebaute Funktion %qE, nur %d erwartetzu viele Argumente fÃ¼r Konstruktor %q#Dzu viele Argumente fÃ¼r Funktionzu viele Argumente fÃ¼r Funktion %q#Dzu viele Argumente fÃ¼r Funktion %qEzu viele Argumente fÃ¼r Funktion %qE; %i erwartet, %i bekommenzu viele Argumente fÃ¼r makezu viele Argumente fÃ¼r Elementfunktion %q#Dzu viele Argumente fÃ¼r Methode %q#Dzu viele Argumente fÃ¼r Methode %qE; %i erwartet, %i bekommenzu viele atomare Klauselnzu viele geschweifte Klammern um Initialisierung fÃ¼r %qTzu viele geschweifte Klammern um skalare Initialisierung fÃ¼r Typ %qTInterner Fehler: too many exception handling edges in bb %izu viele Dateinamen angegeben; geben Sie %<%s %s%> fÃ¼r das Aufrufformat einzu viele Funktionsargumente fÃ¼r eBPFzu viele Initialisierer fÃ¼r %qTzu viele EingabedateienInterner Fehler: too many loop exits recordedzu viele Speicherreihenfolge-Klauselnzu viele Ã¶ffnende KlammernInterner Fehler: too many outgoing branch edges from bb %izu viele GrÃ¶ÃŸenbereiche in Option %qs angegebenzu viele Templateheader fÃ¼r %qD (sollten %d sein)zu viele Templateparameterlisten in Deklaration von %qDzu viele Templateparameterlistenzu viele Werte in RÃ¼ckgabeanweisungzu viele Variablen in Bereichsklausel mit KanalZu viel Stapelspeicher zu entsorgen: %dZu viel Stapelspeicher vorzubereiten: %dKomma-AusdrÃ¼cke auf hÃ¶chster Ebene in einem Arrayindex haben seit C++23 eine andere Bedeutungungeklammerte Komma-AusdrÃ¼cke in Arrayindex-AusdrÃ¼cken sind veraltetDeklaration hÃ¶chster Ebene von %qs gibt %<auto%> anToplevel-Neuordnung muss ausgeschaltet sein, wenn Â»unit-at-a-timeÂ« ausgeschaltet istGesamtgrÃ¶ÃŸe und ElementgrÃ¶ÃŸe mÃ¼ssen direkt angegebene Konstanten sein, beide ungleich nullGesamtgrÃ¶ÃŸe der lokalen Objekte %wu Ã¼berschreitet das Maximum %wuGesamtgrÃ¶ÃŸe der lokalen Objekte Ã¼berschreitet das Maximum %wuGesamtgrÃ¶ÃŸe der lokalen Objekte ist zu hochGesamtgrÃ¶ÃŸe der lokalen Variablen Ã¼bersteigt Grenze der Architekturtp_first_run must be non-negativetraditionelles C bietet keinen separaten Namensraum fÃ¼r Marken an, Bezeichner %qE steht in Konflikttraditionelles C weist Funktionsdefinitionen im ISO-C-Stil zurÃ¼cktraditionelles C lehnt automatische Gesamt-Initialisierung abtraditionelles C lehnt Initialisierung von unions abtraditionelles C weist Zeichenkettenkonstantenverkettung zurÃ¼cktraditionelles C weist den unÃ¤ren Plus-Operator zurÃ¼ckabschlieÃŸendes %<,%> in Argumenten fÃ¼r %<#pragma GCC diagnostic ignored_attributes%>abschlieÃŸendes %<,%> in Argumenten fÃ¼r %<-Wno-attributes=%>das letzte Argument von %<__type_pack_element%> ist kein TypabschlieÃŸendes Array %qT sollte nicht als flexibles Arrayelement verwendet werdenangehÃ¤ngter RÃ¼ckgabetyp %qT den Ableitungshinweises ist keine Spezialisierung von %qTnachgestellter RÃ¼ckgabetyp nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarTrait-Eigenschaft %qs mehr als einmal im %qs-Selektor angegebenTrampolin fÃ¼r geschachtelte Funktion %qD erzeugttransaktionsbasierter Speicher wird von %<-fsanitize=address%> nicht unterstÃ¼tzttransaktionsbasierter Speicher wird von %<-fsanitize=kernel-address%> nicht unterstÃ¼tzttransaktionsbasierter Speicher wird von Nicht-Aufruf-Ausnahmen nicht unterstÃ¼tztTransformierende intrinsische Routine %qs bei %L ist in einem Initialisierungs-Ausdruck nicht erlaubtTrap-Modus fÃ¼r VAX-Floats nicht unterstÃ¼tzttree check: %s, have %s in %s, at %s:%dtree check: accessed elt %d of %<tree_int_cst%> with %d elts in %s, at %s:%dtree check: accessed elt %d of %<tree_vec%> with %d elts in %s, at %s:%dtree check: accessed operand %d of %<omp_clause %s%> with %d operands in %s, at %s:%dtree check: accessed operand %d of %s with %d operands in %s, at %s:%dtree check: did not expect class %qs, have %qs (%s) in %s, at %s:%dtree check: expected %<omp_clause %s%>, have %qs in %s, at %s:%dtree check: expected class %qs, have %qs (%s) in %s, at %s:%dtree check: expected none of %s, have %s in %s, at %s:%dtree check: expected tree that contains %qs structure, have %qs in %s, at %s:%dBaumcode %qs wird in LTO-StrÃ¶men nicht unterstÃ¼tztBaumliste endet bei Tiefe %ies wurde versucht, eine Gleitkommadivision mit Rest an %qT durchzufÃ¼hrenInterner Fehler: true/false edge after a non-GIMPLE_COND in bb %dversuchen Sie, den Operator in eine %<const%>-Memberfunktion umzuwandelnKlammern um die Type-ID sollten entfernt werdenstattdessen %qE verwendenVersuch, %qD in Instanziierung eines generischen Lambdas einzufangenes wird versucht, einen Nicht-Ganzzahltyp als Bitfeld zu kodierenLesen der struct konnte wegen Syntaxfehlern nicht beendet werdenVersuch, die Klasse %qT zu einem Â»friendÂ« des globalen GÃ¼ltigkeitsbereiches zu machenTuning-Zeichenkette fehlt in Option Â»%sÂ«internes Debugging des Compilers fÃ¼r quad,token,line,all einschalten (interner Schalter)internes Debugging des Compilers einschalten (interner Schalter)internes Verfolgen der Prozedur-Zeilennummern einschalten (interner Schalter)alle ÃœberprÃ¼fungen fÃ¼r Division und Modulus durch 0 fÃ¼r ordinale Werte einschaltenalle BereichsprÃ¼fungen fÃ¼r numerische Werte einschaltenalle Software-LaufzeitÃ¼berprÃ¼fungen einschalten (das ist die AbkÃ¼rzung fÃ¼r Â»-fnil -frange -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalueÂ«)schaltet die KompilierzeitprÃ¼fung der Case-Anweisung ein, wenn ein Ausdruck eines Enumtyps verwendet wird.schaltet die Kompilierzeitanalyse im ersten Basisblock einer Prozedur ein, die den Zugriff auf nicht initialisierte Daten erkennt.schaltet die Kompilierzeitanalyse ein, um den Zugriff auf nicht initialisierte Variablen zu erkennen, die ÃœberprÃ¼fung kann durch known,cond,all angegeben werden.LaufzeitÃ¼berprÃ¼fung fÃ¼r Funktionen einschalten, deren AusfÃ¼hrung nicht mit einer RETURN-Anweisung endetschaltet LaufzeitÃ¼berprÃ¼fung ein, ob eine CASE-Anweisung einen ELSE-Zweig benÃ¶tigt, der jedoch nicht angegeben warLaufzeitÃ¼berprÃ¼fung fÃ¼r Gleitkommazahlen, die den GÃ¼ltigkeitsbereich verlassen, einschaltenLaufzeitÃ¼berprÃ¼fung einschalten fÃ¼r ganze Zahlen, die ihren Wertebereich verlassenLaufzeitÃ¼berprÃ¼fung fÃ¼r versuchten Datenzugriff Ã¼ber NIL-Zeiger einschaltenschaltet LaufzeitÃ¼berprÃ¼fung fÃ¼r Teilabschnitte, Arrayindizes und NIL-Zeiger-Indirektion einzwei aufeinander folgende %<[%> dÃ¼rfen nur ein Attribut einfÃ¼hrenzwei unterschiedliche Ã¤uÃŸere Iterationsvariablen %qD und %qD werden in einer einzigen Schleife verwendetzwei oder mehr Datentypen in Deklaration von %qszwei oder mehr Datentypen in Deklarationzwei oder mehr Abschnitte fÃ¼r %sTyp %<__vector_pair%> erfordert die Option %qsTyp %<__vector_quad%> erfordert die Option %qsArgument vom Typ %q#T wurde an %<delete%> Ã¼bergeben, Zeiger erwartetTyp %qE hat einen benutzerdefinierten KonstruktorTyp %qE hat einen benutzerdefinierten DestruktorTyp %qE hat keinen aufrufbaren Standard-KonstruktorTyp %qE hat virtuelle ElementfunktionenTyp %qT (typedef von %qT) verletzt die One-Definition-Rule von C++Typ %qT (in unbenanntem Namensraum definiert) kann nicht passen (Ã¼ber Grenzen von Ãœbersetzungseinheiten hinaus)Typ %qT (in unbenanntem Namensraum definiert) kann nicht zum Typ %qT passen (Ã¼ber Grenzen von Ãœbersetzungseinheiten hinaus)Typ %qT hat keine bekannte GrÃ¶ÃŸeTyp %qT fÃ¼r explizite Instanziierung %qD passt nicht zum deklarierten Typ %qTTyp %qT ist kein Basistyp fÃ¼r Typ %qTTyp %qT ist keine direkte Basis von %qTTyp %qT ist keine direkte oder virtuelle Basis von %qTTyp %qT ist zu groÃŸTyp %qT verletzt fÃ¼r sich genommen die One-Definition-Rule von C++Typ %qT des Arguments fÃ¼r %<__builtin_launder%> muss ein Objektzeiger seinTyp %qT des Templatearguments %qE hÃ¤ngt von Templateparameter abTyp %qT des Templatearguments %qE hÃ¤ngt von Templateparametern abTyp %qT sollte Typ %qT entsprechenTyp %qT verletzt die One-Definition-Rule von C++Typ %qT ohne Bindung fÃ¼r Funktionsdeklaration %q#D mit Bindung deklariertTyp %qT ohne Bindung verwendet, um Variable %q#D mit Bindung zu deklarierenTyp %qs entspricht nicht dem Protokoll %qETyp %qs ist kein AusdruckTyp %qs verletzt die One-Definition-Rule von C++Typ %s unterscheidet sich durch %<TYPE_ALIGN%>Typ %s unterscheidet sich durch %<TYPE_MODE%>Typ %s unterscheidet sich durch %<TYPE_SIZE%>Typ %s unterscheidet sich durch %<TYPE_USER_ALIGN%>Typ %s ist kein undurchsichtiger AusdruckTyp %s ist nicht im undurchsichtigen ModusTypbehauptung nur gÃ¼ltig fÃ¼r SchnittstellentypenTypattribute ignoriert, nachdem Typ bereits definiert ist%<int%> ist Standardtyp in Deklaration von %qE%<int%> ist Standardtyp in Typ-DeklarationTyp hat keine MethodenTyp ist veraltetTyp ist veraltet: %sInterner Compilerfehler: type is not compatible with its variantTyp ist nicht verfÃ¼gbarTyp ist nicht verfÃ¼gbar: %stype mismatch between an SSA_NAME and its symbolunpassender Typ fÃ¼r Â»caseÂ«-Marke in switch-AnweisungunvertrÃ¤gliche Typen in %qsTypunvertrÃ¤glichkeit in %qs-AusdruckTypunvertrÃ¤glichkeit in %qs-VerweisTyp passt nicht in binÃ¤rem AusdruckTyp passt nicht in bedingtem AusdruckunvertrÃ¤gliche Typen in Parameter %iTyp muss cv-qualifizierter %<auto%> oder Referenz auf cv-qualifizierten %<auto%> seinTypname %qs sollte dem Typnamen %qs entsprechenTypname als Funktion, die eine Funktion zurÃ¼ckgibt, deklariertTypname als Funktion, die ein Array zurÃ¼ckgibt, deklariertTyp des %<asm%>-Operanden %qE konnte nicht ermittelt werdenTyp des %<depobj%>-Ausdrucks ist nicht %<omp_depend_t%>Typ von %qD ist auf %<int%> voreingestelltTyp von %qD passt nicht zur ursprÃ¼nglichen DeklarationTyp von %qE ist unbekanntTyp des Arrays %q+D vervollstÃ¤ndigt UnvertrÃ¤glichkeit mit impliziter InitialisierungTyp des Bitfeldes %qs ist eine Erweiterung des GCCTyp des formalen Parameters %d ist unvollstÃ¤ndigTyp des Iterators %qD verweist auf Ã¤uÃŸeren Iterator %qDTyp der Eigenschaft %qD in Konflikt mit vorheriger Deklarationunpassende PrÃ¤zision fÃ¼r Typ in switch-AnweisungTypumgehung schaltet die Reihenfolge der Skalarspeicherung umTypqualifizierer in leerer Deklaration mit auf %<enum%> basierendem TypenTypkennzeichner an Umwandlungs-RÃ¼ckgabetyp ignoriertTypkennzeichner an Funktions-RÃ¼ckgabewert ignoriertTyp fÃ¼r Vektor-Â»deleteÂ« ist weder Zeiger- noch Arraytyptyptransparentes %q#T kann nicht transparent gemacht werden, weil der Typ des ersten Feldes anderes ABI als gesamte Klasse hattyptransparentes %q#T hat keine Feldertyptransparente Klasse %qT hat Basisklassentyptransparente Klasse %qT hat virtuelle FunktionenInterner Compilerfehler: type variant differs by %sInterner Compilerfehler: type variant has different %<TREE_TYPE%>Interner Compilerfehler: type variant has different %<TYPE_BINFO%>Interner Compilerfehler: type variant has different %<TYPE_FIELDS%>Interner Compilerfehler: type variant has different %<TYPE_SIZE_UNIT%>Interner Compilerfehler: type variant has different %<TYPE_VFIELD%>Interner Compilerfehler: type variant with %<TYPE_ALIAS_SET_KNOWN_P%>Interner Compilerfehler: type variant%'s %<TREE_TYPE%>Interner Compilerfehler: type variant%'s %<TYPE_BINFO%>Interner Compilerfehler: type variant%'s %<TYPE_SIZE_UNIT%>Typ war vorher als %qE deklariertInterner Compilerfehler: type%'s %<TREE_TYPE%>Interner Compilerfehler: type%'s %<TYPE_BINFO%>Interner Compilerfehler: type%'s %<TYPE_SIZE_UNIT%>Type-Punning auf unvollstÃ¤ndigen Typen kann strict-aliasing-Regeln verletzentype-specifier ist in Lambda ungÃ¼ltigTyp/Wert des Arguments %d passt nicht in Template-Parameterliste fÃ¼r %qDtypedef %q+D als %<_Noreturn%> deklarierttypedef %q+D als %<inline%> deklarierttypedef %qD ist initialisiert (verwenden Sie stattdessen lieber %<__typeof__%>)typedef %qD ist initialisiert (stattdessen %qs verwenden)typedef %qD lokal definiert, aber nicht verwendetÂ»typedefÂ«-Deklaration in Parameterdeklaration ungÃ¼ltigÂ»typedefÂ« als %<auto%> deklariertmit %<typedef%> definierte Funktion darf keinen Rumpf %<{ â€¦ }%> habenmit %<typedef%> definierte Elementfunktion darf keinen Rumpf %<{ â€¦ }%> habentypedef-Name darf kein Spezifizierer mit geschachteltem Namen seintypedef-Name %qD als Destruktor-Deklarator verwendetTypen nicht ganz kompatibelTypen unterscheiden sich im VorzeichenbesitzTypen haben unterschiedliche Anzahl von ParameternTypen dÃ¼rfen nicht innerhalb von %<__builtin_classify_type%>-Aufrufen definiert werdenTypen dÃ¼rfen nicht in %<decltype%>-AusdrÃ¼cken definiert werdenTypen dÃ¼rfen nicht in %<noexcept%>-AusdrÃ¼cken definiert werdenTypen dÃ¼rfen nicht in einem %qs-Ausdruck definiert werdenTypen dÃ¼rfen nicht in einem %<typeid%>-Ausdruck definiert werdenTypen dÃ¼rfen nicht in einem Â»conversion-type-idÂ« definiert werdenin einer for-Bereichs-Deklaration dÃ¼rfen keine Typen definiert werdenTypen dÃ¼rfen nicht in einem Â»newÂ«-Ausdruck definiert werdenTypen dÃ¼rfen nicht in einem Â»new-type-idÂ« definiert werdenTypen dÃ¼rfen nicht in Alias-Templatedeklarationen definiert werdenTypen dÃ¼rfen nicht in einer Ausnahmespezifikation definiert werdenTypen dÃ¼rfen nicht in Typumwandlungen definiert werdenTypen dÃ¼rfen nicht in Bedingungen definiert werdenneue Typen dÃ¼rfen nicht in einem RÃ¼ckgabetyp definiert werdenTypen dÃ¼rfen nicht in enum-base definiert werdenTypen dÃ¼rfen nicht in Ausnahmedeklarationen definiert werdenTypen dÃ¼rfen nicht in explicit-specifier definiert werdenTypen dÃ¼rfen nicht in Iteratortyp definiert werdenTypen dÃ¼rfen nicht in Parametertypen definiert werdenin Template-Argumenten dÃ¼rfen keine Typen definiert werdenTypen dÃ¼rfen nicht innerhalb von %<__builtin_offsetof%> definiert werdenTypspezifikation in ALLOCATE bei %LWirkliche Stelle des gestapelten Parameters kann nicht berechnet werden%qT kann nicht aus %qE hergeleitet werdenLambda-RÃ¼ckgabewert von %qE kann nicht hergeleitet werdenDateiname fÃ¼r SARIF-Ausgabe kann nicht ermittelt werden%qs kann nicht emuliert werdenKein Register zum Auslagern gefundenin Klasse %qs konnte kein Register fÃ¼r Ãœberlauf gefunden werdenOperator %qD fÃ¼r Zeichenliterale mit Argument %qT kann nicht gefunden werdennumerischer literaler Operator %qD konnte nicht gefunden werdenliteraler Operator fÃ¼r Zeichenketten %qD mit Argumenten %qT, %qT konnte nicht gefunden werdender Versprechens-Typ fÃ¼r diese Koroutine wurde nicht gefundenNeuladungen fÃ¼r unmÃ¶gliche EinschrÃ¤nkungen konnten nicht generiert werden:Neuladungen konnten nicht generiert werden fÃ¼r:ABI %qs kann nicht mit Befehlssatz %qs implementiert werdenStandard-Binderscript %qs kann nicht in den Bibliotheks-Suchpfaden gefunden werden%qs fÃ¼r SARIF-Ausgabe kann nicht geÃ¶ffnet werden: %mÂ»%qsÂ« kann nicht geÃ¶ffnet werden: %mÂ»%sÂ« kann nicht zum Lesen geÃ¶ffnet werden: %mÂ»%sÂ« kann nicht zum Schreiben geÃ¶ffnet werden: %mdynamische AbhÃ¤ngigkeit %qs kann nicht geÃ¶ffnet werdenDatei kann nicht geÃ¶ffnet werdenLogdatei %<vtv_class_set_sizes.log%> kann nicht geÃ¶ffnet werden: %mLogdatei %<vtv_count_data.log%> kann nicht geÃ¶ffnet werden: %mLogdatei %<vtv_set_ptr_data.log%> kann nicht geÃ¶ffnet werden: %mInformationen fÃ¼r Plugin %qs kÃ¶nnen nicht registriert werden: Pluginname nicht gefundenweitere importierte Quellencodestellen kÃ¶nnen nicht dargestellt werdendie VorwÃ¤rtsreferenz in der Definition kann nicht aufgelÃ¶st werden%qs kann nicht als PIC-Register verwendet werdennicht verfÃ¼gbare Zeichenkettenoperation zum Inlinen von %qsunausgeglichenes Satzzeichen %<%c%> im Formatunausgeglichenes Satzzeichen %qc im Formatunbegrenzte Verwendung von %<alloca%>unbegrenzte Verwendung von Array mit variabler LÃ¤ngeunbedingtes %2d niemals ausgefÃ¼hrt
  unbedingtes %2d, genommen: %s
! nicht deklarierter Selektor %qEundefiniertes Verhalten, wenn zweiter Parameter von %<va_start%> mit %<register%>-Speicherklasse deklariert wirdbenannter Operand %qs ist nicht definiertzugrunde liegender Typ %qT von %qT muss ein ganzzahliger Typ seinfalsche Zuordnung des zugrunde liegenden Typs in enum %q#TunvollstÃ¤ndig angegebenes %qD wird in seinem Initialisierer referenziert%qE wurde in diesem GÃ¼ltigkeitsbereich bereits deklariert und ist unvollstÃ¤ndig deklariertunexpandierte Parameterpackunge in AufzÃ¤hlungskonstante in Lambdaunexpandiertes Parameterpack in lokaler Klasse in LambdaUnerwarteter Â»!$OMP ATOMICÂ«Ausdruck bei %Lunerwartetes %<:%> bei %Cunerwartetes %<else%> gefundenunerwarteter AST der Art %sUnerwartetes Dateiendeunerwartete rechte Seite in Zuweisungunerwartete Architektur fÃ¼r %<target()%>-Attribut: Fehlerhafte Zeichenfolge %qs gefundenunerwartete Architektur fÃ¼r %<target()%>-Attribut: muss mit + oder rv beginnenunerwartete Architektur fÃ¼r %<target()%>-Attribut: muss mit rv32 beginnen, ist jedoch %qsunerwartete Architektur fÃ¼r %<target()%>-Attribut: muss mit rv64 beginnen, ist jedoch %qsunerwartetes Argumentunerwartetes Argument fÃ¼r %<msp430_select_hwmult_lib%>: %sunerwartetes Attributunerwarteter Basistyp in cris_print_baseunerwartete Angaben im ELF-Headerunerwarteter Fehler beim Ã–ffnen von %<devices.csv%>unexpected expression %qE of kind %sunerwarteter Dateiname %s in Binder-AuflÃ¶sungsdatei. %s erwartetunerwartetes erstes Argument fÃ¼r %<msp430_select_hwmult_lib%>: %sunerwarteter Indextyp in cris_print_indexunerwartetes SchlÃ¼sselwort; entfernen Sie Leerzeichen zwischen AnfÃ¼hrungszeichen und SuffixbezeichnerInterner Fehler: unexpected mapping nodeunerwartete Moduldirektiveunerwarteter multiplikativer Operandunerwarteter Offsetunerwarteter Operandunerwarteter Operand: %dunerwarteter Platzhalter in eingeschrÃ¤nktem ErgebnistypInterner Fehler: unexpected pointer mapping nodeunerwarteter Verweis auf Paketunerwartete Seiteneffekte in Adresseunerwartete Textadresse:unerwarteter Typ fÃ¼r Array-LÃ¤nge: %qsunbehandelte Ausrichtung fÃ¼r %<#pragma nomember_alignment%>unbehandelte Architekturunbehandelte Argumente %qs und %qs fÃ¼r %<msp430_set_driver_var%>unbehandelter Code nach dem Aufrufunbehandelter Ausdruckunbehandelter Ausdruckstypnicht initialisiertes %<const %D%>nicht initialisiertes %<const %D%> ist in C++ ungÃ¼ltignicht initialisierte Konstante in %<new%> von %q#Tnicht initialisiertes konstantes Element in %q#Tnicht initialisiertes konstantes Element in %q#T verwendet %<new%> ohne new-Initialisierungnicht initialisiertes konstantes Element %qT ist in C++ ungÃ¼ltignicht initialisiertes konstantes Element in Basis %q#T von %q#Tnicht initialisiertes konstantes Element in Basis %q#T von %q#T verwendet %<new%> ohne new-Initialisierungnicht initialisiertes Referenzelement in %q#Tnicht initialisiertes Referenzelement in %q#T verwendet %<new%> ohne new-Initialisierungnicht initialisiertes Referenzelement in Basis %q#T von %q#Tnicht initialisiertes Referenzelement in Basis %q#T von %q#T verwendet %<new%> ohne new-Initialisierungnicht initialisierte Variable %q+D in Programmspeicherbereich platziertuninitialisierte Variable %qD in %<constexpr%>-Kontextuninitialisierte Variable %qD in %<constexpr%>-Funktionunion kann nicht transparent gemacht werdenÂ»unionÂ« wurde hier definiertUnion hat keine ElementeUnion hat keine benannten ElementeUnion-Element %q+D mit nichttrivialem %qDunbekannte Option %qs fÃ¼r %<#pragma GCC aarch64%>unbekannte Option %qs fÃ¼r %<#pragma GCC arm%>unbekanntes Modell %qs fÃ¼r %<#pragma extern_model%>unbekannter Name %qs fÃ¼r %<#pragma member_alignment%>unbekannte Option %qs fÃ¼r %<#pragma riscv intrinsic%>unbekannter Schalter %<-mdebug-%s%>unbekannte Ausgabe %qs des %<asm%>-SchaltersInterner Fehler: unknown %<setop_t%> code %dunbekannter C++-Standard %qsunbekannte CRIS-CPU-Versionsangabe in %<-mtune=%>: %sunbekannte CRIS-Versionsangabe in %<-march=%> oder %<-mcpu=%>: %sUnbekannte Schutzstufe %qs fÃ¼r Kontrollflussunbekannter IRA-Algorithmus %qsunbekannte IRA-Region %qsunbekannte LDP/STP-Richtlinie %qsUnbekanntes LTO-Partitionierungs-Modell %qsunbekannte Stufe %qs fÃ¼r Live-Patchingunbekannter OpenMP-Direktiven-Name im Argument des Attributs %qsunbekannter OpenMP-Direktiven-Name im Argument der %qs-Klauselunbekannte SIMD-Erweiterung (%qs ist ausgeschaltet, wÃ¤hrend %qs eingeschaltet ist), SIMD wird ausgeschaltetUnbekannte Stufe %qs fÃ¼r Stapel-Wiederverwendungunbekanntes TLS-Modell %qsunbekannte Aktion %qE fÃ¼r %<#pragma pack%> - ignoriertunbekannte Ausrichtung %qs fÃ¼r Option %qs angegebenUnbekanntes architekturspezifisches SpeichermodellUnbekannte Architekturspezifikation in Speichermodell %wi fÃ¼r %qDunbekannte Einstellung %qs fÃ¼r Arraygrenzenunbekannte ArraygrÃ¶ÃŸe in Â»deleteÂ«unbekanntes Annahme-Klausel %qsunbekanntes Attribut %qEunbekanntes Attribut %qsunbekannte autovec-Einstellung %qsunbekannter Basisblock-Umsortierungs-Algorithmus %qsInterner Fehler: unknown block specifierunbekannter eingebauter direkter Operandentyp fÃ¼r Operand %dunbekanntes Callback-Ereignis von Plugin %s registriertunbekannte Einstellung %qs fÃ¼r PrÃ¼faktionunbekannte kompilierte Modulschnittstelle: %sunbekanntes Konvertierungstyp-Zeichen %qc im FormatUnbekannte Kernarchitektur %qs in %qs angegebenunbekannte CPU %qs fÃ¼r %<-mtune%>unbekannter Crate-Typ: %qsunbekannter Entmangelstil %qsunbekanntes ZielUnbekannte Direktivennameunbekannter Fehler beim Lesen von %s aus %<devices.csv%>unbekannte Art Ã¼berschÃ¼ssiger Genauigkeit %qsunbekanntes Flag wurde in %<-moverride=%s%> Ã¼bergeben (%s)unbekannte Art der Gleitkomma-KÃ¼rzung %qsunbekannter fremder Laufzeit-Bezeichner %qsunbekannter fremder Laufzeit-Bezeichner %qwdunbekannte PrÃ¼fstufe %qs fÃ¼r hardcfr noreturnunbekannte Header-Art %qsunbekannter BefehlsmodusInterner Fehler: unknown internal function %qEunbekannter lam-Typ %qsunbekannte Binderausgabe %qsUnbekannter Maschinenzustand %qEFalscher Kopierbefehl:unbekannter nativer FPU-Typ %<0x%x%>, %qs fehlgeschlagenunbekannte native Basisarchitektur %<0x%x%>, %qs fehlgeschlagenUnbekannte Offload-ABI %qsunbekannter Operandenbuchstabe: Â»%cÂ«unbekannter Operator %qs in %%:version-compareunbekannte Option %q.*s in %<-fopt-info-%s%>Option hinter %<#pragma GCC diagnostic%> Art unbekanntunbekannte Option fÃ¼r %<%s=%s%>unbekannte Option fÃ¼r %<-mrecip=%s%>unbekannte Panikstrategie %qsUnbekannter Parameter fÃ¼r Option %<-mtune-ctrl%>: %sunbekannter Durchlauf %s in %<-fdisable%> angegebenunbekannter Durchlauf %s in %<-fenable%> angegebenunbekanntes ZeigergrÃ¶ÃŸenmodell %qsunbekannte Prozessor-ID %<0x%x%>, einige Tuning-Parameter werden auf die Standardwerte zurÃ¼ckgesetztUnbekannte Profil-QualitÃ¤tUnbekannte Profil-Reproduzierbarkeitsstufe %qsUnbekannte Profil-Aktualisierungs-Methode %qsunbekannte Eigenschaft %qE des %qs-Selektorsunbekannte Eigenschaft %qs des %qs-Selektorsunbekanntes Eigenschaftsattributunbekanntes Eigenschaftsattribut %<%s%s%>unbekanntes Eigenschaftsattribut %qEunbekanntes Zeichen Â»%cÂ«unbekannter Ranger-Debug-Modus %qsunbekannter Registername %qs in %<asm%>unbekannter Registername: %sunbekannte Adressverschiebungs-Unspecunbekanntes Rust-compile-until %qsunbekannte Rust-Ausgabe %qsunbekannte Rust-Mangling-Option %qsunbekannter Selektor %qs fÃ¼r Kontextselektormenge %qsunbekannter Selektor %qs fÃ¼r Kontext-Selektormenge %qs bei %Cunbekannte Spezifikationsfunktion %qsunbekannte Spezifikation fÃ¼r die Menge der FLT_EVAL_METHOD-Werte, um %qs zu erlaubenunbekannte Angabe %<%qs%> in Attribut %<amdgpu_hsa_kernel%>unbekannte Quelleunbekannter Stapel-ÃœberprÃ¼fungsparameter %qsunbekannter Schalter %<-mlong-double-%s%>Unbekanntes Zielattribut oder Pragma %qsunbekannter Threader-Debug-Modus %qsunbekannte Trampolinimplementierung %qsunbekannte Tuning-Option Â»%sÂ«unbekannter Typ %<%T%> bei Objective-C-Kodierung gefundenunbekannter Typname: %qEUnbekannter Typname %qE; meinten Sie %qs?unbekannter Typname %qE; verwenden Sie das %<enum%>-SchlÃ¼sselwort, um auf den Typ zu verweisenunbekannter Typname %qE; verwenden Sie das %<struct%>-SchlÃ¼sselwort, um auf den Typ zu verweisenunbekannter Typname %qE; verwenden Sie das %<union%>-SchlÃ¼sselwort, um auf den Typ zu verweisenunbekannter Wert %qs fÃ¼r %<-march%>unbekannter Wert %qs fÃ¼r %<-mcpu%>unbekannter Wert %qs fÃ¼r %<-mtune%>unbekannter Wert %qs von %<-mmacosx-version-min%>unbekannter ABI-Typ fÃ¼r Vektorisierungsbibliothek in %<-mveclibabi=%s%>unbekanntes Vektorisierer-Kostenmodell %qsunbekannte InitialisierungsprioritÃ¤t %qs fÃ¼r VTable-VerifikationAlleinstehende FarbrÃ¼cksetz-DirektiveAlleinstehende q-Direktiveunbenannte Klasse wurde hier definiertunbenanntes Feld hat unvollstÃ¤ndigen Typenunbenanntes Feld ist weder eine Funktion noch Elementfunktion; kann nicht als %<friend%> deklariert werdenunbenannte Initialisierung fÃ¼r %qT, das keine Basisklassen hatunbenannte Initialisierung fÃ¼r %qT, das Mehrfachvererbung verwendetunbenanntes Â»enumÂ« mit GÃ¼ltigkeitsbereich ist nicht erlaubtUnbenannte struct/union, die keine Instanzen definiertunbenanntes temporÃ¤res Objekt wird hier definiertunbenannter Typ ohne Bindung wird verwendet, um Funktion %q#D mit Bindung zu deklarierenunbenannter Typ ohne Bindung wird verwendet, um Variable %q#D mit Bindung zu deklarierenunbenannte Variable oder Feld als Â»voidÂ« deklariertunnÃ¶tige Klammern in Deklaration von %qsungeordneter Vergleich mit Nicht-Gleitkomma-Argumentunquote_string(): got bad stringAttribut auÃŸerhalb von AnfÃ¼hrungszeichen im FormatSteuerzeichen %qc auÃŸerhalb von AnfÃ¼hrungszeichen im FormatSteuerzeichen auÃŸerhalb von AnfÃ¼hrungszeichen im FormatBezeichner oder SchlÃ¼sselwort auÃŸerhalb von AnfÃ¼hrungszeichen %<%.*s%> im FormatSchlÃ¼sselwort %<%.*s%> auÃŸerhalb von AnfÃ¼hrungszeichen im FormatName der eingebauten Funktion %<%.*s%> auÃŸerhalb von AnfÃ¼hrungszeichen im Formatnicht-grafisches Zeichen %qc auÃŸerhalb von AnfÃ¼hrungszeichen im Formatnicht-grafische Zeichen auÃŸerhalb von AnfÃ¼hrungszeichen im FormatOperator %<%.*s%> auÃŸerhalb von AnfÃ¼hrungszeichen im FormatOptionsname %<%.*s%> auÃŸerhalb von AnfÃ¼hrungszeichen im FormatVorverarbeitungsdirektive %<%.*s%> auÃŸerhalb von AnfÃ¼hrungszeichen im FormatFolge von %i aufeinanderfolgenden Satzzeichen %q.*s auÃŸerhalb von AnfÃ¼hrungszeichen im Format%i aufeinanderfolgende Leerzeichen auÃŸerhalb von AnfÃ¼hrungszeichen im FormatTypname %<%.*s%> auÃŸerhalb von AnfÃ¼hrungszeichen im FormatLeerzeichen %qc auÃŸerhalb von AnfÃ¼hrungszeichen im FormatNicht erreichbarnicht erkanntes Kommandozeilenargument von Option nicht erkanntes Kommandozeilenargument von Option %<unerkennbarer Befehl:unbekanntes Ziel fÃ¼r %<-mfpu%>: %sunbekanntes Feld %<hwmpy%> in %<hard_msp430_mcu_data[%d]%>: %qdnicht erkanntes %<include_flags 0x%x%> an %<print_specific_help%> weitergegebenunbekanntes Feld %<revision%> in %<hard_msp430_mcu_data[%d]%>: %qdAttribut %qE hat unbekanntes Argument %qsunbekanntes Ziel fÃ¼r %s: %sunbekannter MCU-Name %qs, daher wird angenommen, dass er keine Hardware-Multiplikation kann; verwenden Sie die Option %<-mhwmult%>, um diese explizit einzustellenunbekannter MCU-Name %qs, daher wird angenommen, dass es ein MSP430X ohne Hardware-Multiplikation ist; verwenden Sie die Optionen %<-mcpu%> und %<-mhwmult%>, um diese explizit einzustellenunbekannter MCU-Name %qs, daher wird angenommen, dass er lediglich das MSP430X-ISA unterstÃ¼tzt; verwenden Sie die Option %<-mcpu%>, um dieses explizit einzustellenunerkannte Adressenicht erkanntes Kommandozeilenargument in Option %<-march=%s%>nicht erkanntes Kommandozeilenargument in Option %qsArgument %q.*s fÃ¼r Option %<--help=%> nicht erkanntunbekanntes Argument fÃ¼r Option %<-f%ssanitize%s=%>: %q.*sunbekanntes Argument fÃ¼r Option %<-f%ssanitize%s=%>: %q.*s; meinten Sie %qs?Argument %qs fÃ¼r Option %<-flto=%> nicht erkanntArgument fÃ¼r Option %<-fzero-call-used-regs=%> nicht erkannt: %qsnicht erkannter Initialisierungstyp %qs fÃ¼r automatische VariableUnbekannte BTF-Debugausgabestufe %qsunbekannte Kommandozeilenoption %<-%s%>unbekannte Kommandozeilenoption %<-%s%>; meinten Sie %<-%s%>?nicht erkannte Kommandozeilenoption %<-fdump-%s%>unbekannte Kommandozeilenoption %<-fdump-%s%>; meinten Sie %<-fdump-%s%>?nicht erkannte Kommandozeilenoption %<-fopt-info-%s%>nicht erkannte Kommandozeilenoption %qsUnbekannte Kommandozeilenoption %qs kÃ¶nnte den Zweck haben, bisherige Diagnosemeldungen zu unterdrÃ¼ckenunbekannte Steuerregisternummer %d; %<psw%> wird verwendetUnbekannte Debugausgabestufe %qsunbekannter Kantenschalter: %qsunbekannter enum-Wert: %qsunerkannte FormatangabeGCC-Debuggingoption nicht erkannt: %cunbekanntes Interrupt-Vektor-Argument fÃ¼r Attribut %qEunbekannter ivar-Sichtbarkeitswert %qsunbekannter Operand fÃ¼r %%:%<asm_auto_mfpu%>unbekannter Operand fÃ¼r %%:%<canon_for_mlib%>unbekannte Option %<-fdisable%>unbekannte Option %<-fenable%>unbekannte Option an %%:%<target_mode_check%> weitergegebenunbekannter Registername %qsunbekannter Wert %qs fÃ¼r Speicherreihenfolge von Skalarennicht erkannter Abschnittsname %qEunerkannter Schatten-Adressoffset %qsnicht erkannte Statuszeichenkette %qsunbekanntes Escapezeichen in Zeichenketteunerkannte vermutete Konstanteunbekannter Sichtbarkeitswert %qsnicht erkannte Padding-Bits-Art %qs fÃ¼r Null-Initialisierungnicht behebbarer FehlerungelÃ¶ste Ãœberladung des eingebauten %qFunaufgelÃ¶ste Ã¼berladene eingebaute FunktionuneingeschrÃ¤nkte Â»UnionsÂ« sind nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarunsicherer Funktionsaufruf %qD innerhalb von %<transaction_safe%>-Funktionunsicherer Funktionsaufruf %qD innerhalb von atomarer Transaktionunsicherer Funktionsaufruf %qE innerhalb von %<transaction_safe%>-Funktionunsicherer Funktionsaufruf %qE innerhalb von atomarer Transaktionunsicherer indirekter Funktionsaufruf innerhalb von %<transaction_safe%>-Funktionunsicherer indirekter Funktionsaufruf innerhalb von atomarer Transaktionnicht gesetzte Option %qs wird ignoriert, fÃ¼r CPU %qs ist sie stets eingeschaltetvorzeichenlosVorzeichenlose Umwandlung von %qT nach %qT Ã¤ndert den Wert von %qEVorzeichenlose Umwandlung von %qT nach %qT Ã¤ndert den Wert von %qE nach %qEGleitkommakonstante ohne Suffixnicht unterstÃ¼tzter %<strub%>-Aufruf auf dem Zielsystemnicht unterstÃ¼tzte SVE-VektorgrÃ¶ÃŸenicht unterstÃ¼tztes Argument fÃ¼r %qDnicht unterstÃ¼tzter Argumenttyp %qT fÃ¼r SIMDnicht unterstÃ¼tzter Argumenttyp fÃ¼r eingebaute FunktionCode Â»%cÂ« fÃ¼r Festkomma nicht unterstÃ¼tzt:nicht unterstÃ¼tzte Kombination: %qs %snicht unterstÃ¼tzte Kombination: %qs%s %snicht unterstÃ¼tzte Kombination: %snicht unterstÃ¼tzte konstante Adresse:der Kernel hat einen nicht unterstÃ¼tzten CPU-Namen fÃ¼r %<-mcpu=native%> zurÃ¼ckgegeben: %sFestkommaumwandlung nicht unterstÃ¼tztnicht unterstÃ¼tzter Map-Ausdruck %qEnicht unterstÃ¼tzter Speicherausdruck:nicht unterstÃ¼tzte Nicht-Standard-Verkettung von Zeichenkettenliteralennicht unterstÃ¼tzter Nicht-Standard-Suffix an Gleitkommakonstantenicht unterstÃ¼tzte Anzahl von NOPs vor Funktionsanfang (%u)nicht unterstÃ¼tzter Operandnicht unterstÃ¼tzter Operand %s fÃ¼r Code Â»%cÂ«Operand fÃ¼r Code Â»%cÂ« nicht unterstÃ¼tztnicht unterstÃ¼tzte OperandengrÃ¶ÃŸe fÃ¼r erweitertes RegisterIn booleschem Vektorvergleich ist die Operation oder der Typ nicht unterstÃ¼tztnicht unterstÃ¼tzter RÃ¼ckgabetyp %qT fÃ¼r SIMDnicht unterstÃ¼tzte simdlen %wdnicht unterstÃ¼tzte simdlen %wd (amdgcn)nicht unterstÃ¼tzte GrÃ¶ÃŸe fÃ¼r Ganzzahlregisterunbeendete Assemblerdialekt-Alternativeunbeendete Farbdirektiveunbeendete Formatzeichenketteunbeendetes AnfÃ¼hrungszeichen %<%c%> im Formatunbeendete q-Direktiveunbeendete Zeichenketteunverwendete Argumente in %<$%>-Stil-Formatunverwendeter Name %qEunverwendeter Parameter %qDungenutzte Deklaration fÃ¼r strukturierte Bindungungenutzte %<using%>-Deklaration %qDVariable %q+D wird nicht verwendetVariable %qD wird nicht verwendetAbwicklungstabellen erfordern derzeit entweder einen Rahmenzeiger oder %<-maccumulate-outgoing-args%> fÃ¼r KorrektheitOberer Wert in case-Marken-Bereich Ã¼berschreitet den Maximalwert des Typsverwenden Sie stattdessen %<#include%>stattdessen %<%T::%D%> verwenden%<%T::%D%> statt %<%T::%D%> verwenden, um den Konstruktor mit qualifiziertem Namen zu benennen%<%T::template %D%> verwenden, um dies als Template zu kennzeichnen%<&%s%E%s[0] %s &%s%E%s[0]%> verwenden, um die Adressen zu vergleichen%<-Winvalid-pch%> fÃ¼r weitere Informationen verwendenverwenden Sie %<-faligned-new%>, um die C++17-UnterstÃ¼tzung fÃ¼r Ã¼berausgerichtetes New einzuschaltenverwenden Sie %<-fdiagnostics-all-candidates%>, um die in Frage kommenden Kandidaten anzuzeigenverwenden Sie %<-fext-numeric-literals%>, um weitere eingebaute Suffixe einzuschalten%<-flax-vector-conversions%> verwenden, um Umwandlung zwischen Vektoren mit unterschiedlichen Elementtypen oder Anzahl der Teile zu erlauben%<...%> verwenden, um Argumentpack aufzulÃ¶senverwenden Sie %<__arm_preserves("za")%>, wenn die aufgerufene Funktion ZA beibehÃ¤ltverwenden Sie stattdessen %<__attribute__ ((vector_size))%>verwenden Sie %<__builtin_rx_mvtc (0, ...)%>, um beliebige Werte in PSW zu schreibenverwenden Sie %<alias %s = %s.%s;%>, um eine Ãœberladungsmenge der Basisklasse einzufÃ¼hrenverwenden Sie %<template<>%> fÃ¼r eine explizite Spezialisierungstattdessen %<this->%D%> verwendenverwenden Sie stattdessen %qDverwenden Sie stattdessen %qsISO-Dialekt von Modula-2 verwendenPIM-2-Dialekt von Modula-2 verwendenPIM-3-Dialekt von Modula-2 verwendenPIM-4-Dialekt von Modula-2 verwendenPIM-[234]-Dialekt von Modula-2 verwendennutzen Sie einen Cast auf den erwarteten Typen, um die Mehrdeutigkeit aufzulÃ¶senden C-PrÃ¤prozessor verwenden, um das Modul vorzuverarbeitenverwenden Sie stattdessen den expliziten Objektparameter %qsverwenden Sie stattdessen einen fold-Ausdruck im Attributargumentverwenden Sie den Nicht-Referenz-Typ %qT, um das Kopieren explizit zu machen, oder %qT um das Kopieren zu sparenVerwendung von %<alloca%>Verwendung von %<alloca%> innerhalb einer SchleifeVerwendung von %<auto%> in Lambda-Parameterdeklaration ist nur mit %<-std=c++14%> oder %<-std=gnu++14%> verfÃ¼gbarVerwendung von %<auto%> in Umwandlungsoperator von Elementtemplate kann niemals hergeleitet werdenVerwendung von %<auto%> in Parameterdeklaration ist nur mit %<-std=c++14%> oder %<-std=gnu++14%> verfÃ¼gbarVerwendung von %<auto%> in Parameterdeklaration ist erst mit %<-std=c++20%> oder %<-fconcepts%> verfÃ¼gbarVerwendung von %<auto%> in TemplateargumentVerwendung von %<complex%> in AltiVec-Typen ist ungÃ¼ltigVerwendung von %<double%> in AltiVec-Typen ist ohne %qs ungÃ¼ltigVerwendung von %<long double%> in AltiVec-Typen ist ungÃ¼ltigVerwendung von %<long long%> in AltiVec-Typen ist ohne %qs ungÃ¼ltigVerwendung von %<long%> in AltiVec-Typen ist veraltet; %<int%> verwendenVerwendung von %<long%> in AltiVec-Typen ist fÃ¼r 64-Bit-Code ohne %qs ungÃ¼ltigVerwendung von %qDVerwendung von %qD vor Herleitung von %<auto%>Verwendung von %qsVerwendung von %qs in TemplateVerwendung des %qs-LÃ¤ngenmodifizierers mit %qc-Typ-Zeichen hat entweder keine Auswirkung oder undefiniertes Verhaltengleichzeitige Verwendung von %s und %s im Format %sVerwendung von %s und %s zusammen mit Format %<%%%c%> fÃ¼r %sangeforderter Speicher wird in konstantem Ausdruck verwendet, nachdem er wieder freigegeben wurdeVerwendung eines Operanden vom Typ %qT in %<operator++%> ist veraltetVerwendung eines Operanden vom Typ %qT in %<operator++%> ist in C++17 verbotenVerwendung eines Operanden vom Typ %qT in %<operator--%> ist verbotenVerwendung boolescher Typen in AltiVec-Typen ist ungÃ¼ltigVerwendung von eingebautem Parameterpack %qD auÃŸerhalb eines TemplatesVerwendung der eingebauten Eigenschaft %qE in Funktionssignatur; stattdessen sollten Bibliothekseigenschaften verwendet werdenVerwendung der eingebauten Eigenschaft %qT in Funktionssignatur; stattdessen sollten Bibliothekseigenschaften verwendet werdenVerwendung des Klassentemplates %qT als AusdruckVerwendung dezimaler Gleitkommatypen in AltiVec-Typen ist ungÃ¼ltiggelÃ¶schte Funktion %qD wird verwendetgelÃ¶schte Funktion %qD wird verwendet: %sVerwendung des enum %q#D ohne vorherige DeklarationVerwendung der Funktion %qD mit nicht erfÃ¼llten EinschrÃ¤nkungenVerwendung des ungÃ¼ltigen Variablentemplates %qEVerwendung lokaler Variable mit automatischer Speicherklasse aus enthaltender FunktionVerwendung einer multiversionierten Funktion ohne StandardargumentVerwendung einer Typumwandlung nach %q#T im alten StilVerwendung eines Parameters aus enthaltender FunktionVerwendung eines Parameters auÃŸerhalb des FunktionskÃ¶rpersVerwendung von ungetyptem nilfÃ¼r die Anweisung fehlt der Verwendungs-Operanddie Option %<-std=c99%>, %<-std=gnu99%>, %<-std=c11%> oder %<-std=gnu11%> verwenden, um den Code zu Ã¼bersetzenverwenden Sie einen Referenztyp, um das Kopieren zu sparenverwenden Sie die Form %<offset%> statt %<index%> fÃ¼r 8-Bit-Datenverwenden Sie stattdessen die Apostroph-Direktive %qsdas unÃ¤re %<+%> verwenden, das Operanden zu Zeigern oder zu %<&%s%E%s[0] %s &%s%E%s[0]%> degradiert, um die Adressen zu vergleichenArray, das nicht in Zeiger umgewandelt werden kann, anstelle des geforderten Skalars verwendetals umgeschriebener Kandidat fÃ¼r den Vergleich von %qT und %qT verwendethier verwendet mit der Bedeutung %q#DWert eines struct-Typs anstelle des geforderten Skalars verwendetWert eines union-Typs anstelle des geforderten Skalars verwendetVektortyp verwendet, wo Skalars benÃ¶tigt wirdnutzloses %<_Alignas%> in leerer Deklarationnutzloses %qs in leerer Deklarationnutzlose Umwandlung in Typ %q#Tnutzlose Umwandlung in Typ %qTNutzlose Speicherklassenangabe in leerer DeklarationNutzloser Typname in leerer DeklarationNutzloser Typqualifizierer in leerer Deklarationbenutzerdefinierte ReduktionsauflÃ¶sung ist mehrdeutigbenutzerdefinierte Reduktion fÃ¼r %qE nicht gefundenbenutzerdefinierte Reduktion mit Konstruktorinitialisierung fÃ¼r Basisklasse %qTbenutzerdefiniertes %qD wertet immer beide Argumente ausbenutzerdefinierte Literale nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarverwendet %qD, das jedoch keinen Ausrichtungsparameter hat%<%c%s%> wird verwendet%<num_workers (%d)%> wird verwendet, %d wird ignoriert%<vector_length (%d)%> wird verwendet, da eine vektor-partitionierbare Routine aufgerufen wird, %d wird ignoriert%<vector_length (%d)%> wird verwendet, %d wird ignoriert%<vector_length (%d)%> wird verwendet, Laufzeiteinstellung wird ignoriert%<vector_length (64)%> wird verwendet, %d wird ignoriert%<vector_length (64)%> wird verwendet, Laufzeiteinstellung wird ignoriert%qs wird verwendetVerwendung von %qs mit vorzeichenlosem Typ hat keinen Effektbaumelnder Zeiger auf %qD wird verwendetbaumelnder Zeiger auf ein unbenanntes temporÃ¤res Objekt wird verwendetTemplatespezialisierung alias %qT hinter %qs wird verwendetdie Funktion %qD berechnet den Betrag einer komplexen Zahl, bekommt hier jedoch ein Argument vom Gleitkommatyp %qT Ã¼bergebendie Funktion %qD berechnet den Betrag einer komplexen Gleitkommazahl, bekommt hier jedoch ein Argument vom Ganzzahltyp %qT Ã¼bergebenbaumelnder Zeiger %qE auf %qD wird verwendetbaumelnder Zeiger %qE auf ein unbenanntes temporÃ¤res Objekt wird verwendetdarwin64-ABI wird verwendetdie Funktion %qD berechnet den Betrag einer dezimalen Gleitkommazahl, bekommt hier jedoch ein Argument vom komplexen Typ %qT Ã¼bergebendie Funktion %qD berechnet den Betrag einer dezimalen Gleitkommazahl, bekommt hier jedoch ein Argument vom binÃ¤ren Gleitkommatyp %qT Ã¼bergebendie Funktion %qD berechnet den Betrag einer dezimalen Gleitkommazahl, bekommt hier jedoch ein Argument vom Ganzzahltyp %qT Ã¼bergebenschneller VRP-Algorithmus wird verwendet; %d BasisblÃ¶cke Ã¼berschreiten die Grenze %<--param=vrp-block-limit=%d%>die Funktion %qD berechnet den Betrag einer binÃ¤ren Gleitkommazahl, bekommt hier jedoch ein Argument vom komplexen Typ %qT Ã¼bergebendie Funktion %qD berechnet den Betrag einer binÃ¤ren Gleitkommazahl, bekommt hier jedoch ein Argument vom dezimalen Gleitkommatyp %qT Ã¼bergebendie Funktion %qD berechnet den Betrag einer Gleitkommazahl, bekommt hier jedoch ein Argument vom Ganzzahltyp %qT Ã¼bergebendie Funktion %qD berechnet den Betrag einer Ganzzahl, bekommt hier jedoch ein Argument vom komplexen Typ %qT Ã¼bergebendie Funktion %qD berechnet den Betrag einer Ganzzahl, bekommt hier jedoch ein Argument vom Gleitkommatyp %qT Ã¼bergebenungÃ¼ltiges Feld %qD wird verwendetder ltrans-Cache wird ohne UnterstÃ¼tzung von Dateisperren verwendet, das sollte nicht im Parallelmodus erfolgenAltes darwin-ABI wird verwendetErgebnis einer %<void%> zurÃ¼ckgebenden Funktion verwendetRvalue wird als Lvalue verwendet%d LTRANS-AuftrÃ¤ge werden seriell compiliertNach der Registerbelegung wird eine einfache CSE verwendetTemplatetyp-Parameter %qT wird nach %qs verwendetdas Intervall [%E, %E] wird fÃ¼r das Argument der Direktive verwendettypedef-Name %qD wird nach %qs verwendetdie Verwendung des Wertes der Zuweisung mit %<volatile%>-qualifiziertem linken Operand ist veraltet%<using%>-Deklaration fÃ¼r Element auÃŸerhalb des GÃ¼ltigkeitsbereichs der KlasseÂ»usingÂ«-Deklaration fÃ¼r Nicht-Element im GÃ¼ltigkeitsbereich der Klasse%<using%>-Deklaration darf den Namensraum %qD nicht benennengÃ¼ltige Argumente fÃ¼r %<-foffload=%> sind: %sgÃ¼ltige Argumente fÃ¼r %<-foffload=%> sind: %s; meinten Sie %qs?ein gÃ¼ltiges Argument fÃ¼r %<-march=%> ist %qsgÃ¼ltige Argumente sind: %sgÃ¼ltige Argumente sind: %s; meinten Sie %qs?gÃ¼ltige Argumente fÃ¼r %<-march=%> sind: %sgÃ¼ltige Argumente fÃ¼r %<-march=%> sind: %sgÃ¼ltige Argumente fÃ¼r %<-march=%> sind: %s; meinten Sie %qs?gÃ¼ltige Argumente fÃ¼r %<-mtune=%> sind: %sgÃ¼ltige Argumente fÃ¼r %<-mtune=%> sind: %s; meinten Sie %qs?gÃ¼ltige Argumente fÃ¼r %<target("arch=")%> sind: %sgÃ¼ltige Argumente fÃ¼r %<target("arch=")%> sind: %s; meinten Sie %qs?gÃ¼ltige Argumente fÃ¼r %<target("tune=")%> sind: %sgÃ¼ltige Argumente fÃ¼r %<target("tune=")%> sind: %s; meinten Sie %qs?gÃ¼ltige Argumente fÃ¼r %qs sind: %sgÃ¼ltige Argumente fÃ¼r %qs sind: %s; meinten Sie %qs?gÃ¼ltiger expliziter Objektparameter wird hier deklariertgÃ¼ltige Fehler-Modelle sind %qs, %qs, %qs, %qsgÃ¼ltige Featurenamen sind: %sgÃ¼ltige Featurenamen sind: %s; meinten Sie %qs?gÃ¼ltiges Format ist %<ns::attr%> oder %<ns::%>gÃ¼ltige Modelle sind %egÃ¼ltive Werte fÃ¼r eingebautes %qF, Argument %d, sind 64, 128, 256, 512, 1024, 2048, und 4096Wert %qE vom Typ %qT ist kein KonstantenausdruckWert %qs wird von Attribut %<target%> nicht unterstÃ¼tztWertargumentberechneter Wert ist unbenutztWert von %<-mfixed-range%> muss die Form REG1-REG2 habenerneut deklarierter AufzÃ¤hlungswert ist auÃŸerhalb des GÃ¼ltigkeitsbereichs von %qTin %qs Ã¼bergebener Wert ist zu groÃŸWertinitialisierung des Funktionstypen %qTWertinitialisierung des unvollstÃ¤ndigen Typen %qTWertinitialisierung des Referenztypen %qTvar-tracking-assignments Ã¤ndert selektive PlanungVariableVariable %q#D hat Initialisierung, aber unvollstÃ¤ndigen TypVariable %q+D als %<_Noreturn%> deklariertVariable %q+D als %<inline%> deklariertVariablendefinition von %q+D ist als dllimport markiertVariable %q+D kÃ¶nnte von %<longjmp%> oder %<vfork%> zerstÃ¶rt werdenVariable %q+D muss konstant sein, um mit %qs in Nur-Lese-Abschnitt gelegt zu werdenVariable %q+D Teil des Alias-Zyklusvariablen %q+D, die mit dem %qs-Attribut markiert ist, muss im statischen Speicher verortet seindie Variable %q+D mit dem Attribut %qs darf keinen Initialisierer habendynamisch initialisierte Variable %q+D in Programmspeicherbereich platziertVariable %qD angepasst fÃ¼r OpenACC-Privatisierungsgrad: %qsVariable %qD hat FunktionstypVariable %qD hat Initialisierung, aber unvollstÃ¤ndigen Typvariable %qD vom nicht-literalen Typ %qT in %<constexpr%>-Funktion ist erst mit %<-std=c++23%> oder %<-std=gnu++23%> verfÃ¼gbarVariable %qD als Funktion redeklariertVariable %qD gesetzt, aber nicht verwendetVariable %qD wird als Schleifenvariable verwendet, ist aber im dazwischenliegenden Code gebundenVariable %qD wird im Endetest verwendet, ist aber im dazwischenliegenden Code gebundenVariable %qD wird in ErhÃ¶hungsausdruck verwendet, ist aber im dazwischenliegenden Code gebundenVariable %qD wird in einem Initialisierer verwendet, ist aber im dazwischenliegenden Code gebundendie in der %<allocator%>-Klausel verwendete Variable %qD muss vor %qD deklariert werdendie in der %<allocator%>-Klausel verwendete Variable %qD darf zwischen der Deklaration von %qD und der %<allocate%>-Direktive nicht verÃ¤ndert werdenVariable %qD wird in %<#pragma acc declare%> mehr als einmal verwendetVariable %qE in umgebender %<host_data%>-Region deklariertVariable %qE ist keine Iteration der Ã¤uÃŸersten Schleife %d, jedoch %qE erwartetauf Variable %qE des unvollstÃ¤ndigen Typs %qT wird in ErhÃ¶hungsausdruck nicht zugegriffenauf Variable %qE des unvollstÃ¤ndigen Typs %qT wird nicht im linken Operanden des Kommaoperators zugegriffenauf Variable %qE des unvollstÃ¤ndigen Typs %qT wird nicht im rechten Operanden des Kommaoperators zugegriffenauf Variable %qE des unvollstÃ¤ndigen Typs %qT wird nicht im zweiten Operanden des bedingten Ausdrucks zugegriffenauf Variable %qE des unvollstÃ¤ndigen Typs %qT wird in Anweisung nicht zugegriffenauf Variable %qE des unvollstÃ¤ndigen Typs %qT wird nicht im dritten Operanden des bedingten Ausdrucks zugegriffenVariable %qs wurde in ausgelagertem Code referenziert, wurde aber nicht markiert, dass sie im ausgelagerten Code enthalten sein dÃ¼rfteVariable %qs hat bereichsbasierte Destruktion, daher kann kein Funktionsabschluss gebaut werdenvariable im Namensraumbereich ist nicht namenunabhÃ¤ngigVariablenkonzepte werden nicht mehr unterstÃ¼tztArray %qD variabler LÃ¤nge wird verwendetArray variabler GrÃ¶ÃŸe wird verwendetArrays mit variabler LÃ¤nge werden in Koroutinen noch nicht unterstÃ¼tztElementtyp variabler LÃ¤nge in %<reduction%>-Klausel eines ArraysVariable mit demselben Assemblernamen wie die virtuelle Tabelle ist in anderer Ãœbersetzungseinheit definiertVariable oder Feld %qE als Â»voidÂ« deklariertVariable oder Feld als Â»voidÂ« deklariertals %<extern%> redeklarierte Variable war bereits als %<static%> deklariertArgumente variabler GrÃ¶ÃŸeTyp %qT mit variabler LÃ¤nge in %<reduction%>-KlauselTyp %qT mit variabler GrÃ¶ÃŸe in %qs-KlauselInterner Fehler: variable symbol is not variableVariablentemplate hier deklariertBezeichner %qD fÃ¼r Variablentemplate ist geschachteltem Namens-Spezifizierervariable Templates sind nur mit %<-std=c++14%> oder %<-std=gnu++14%> verfÃ¼gbarVariablenverfolgung angefordert, jedoch nicht von diesem Debug-Format unterstÃ¼tztVariablenverfolgung angefordert, jedoch nutzlos ohne Debug-InfoGrenze zur Variablenverfolgung Ã¼berschrittenObere GrÃ¶ÃŸengrenze zur Variablenverfolgung mit %<-fvar-tracking-assignments%> Ã¼berschritten; neuer Versuch ohneArray variabler GrÃ¶ÃŸe von %<auto%>zusammengesetztes Literal variabler GrÃ¶ÃŸeObjekt variabler GrÃ¶ÃŸe darf nicht initialisiert werden, auÃŸer mit einem leeren InitialisiererVariablen im Adressraum %<__regio_symbol%> kÃ¶nnen nicht als %<register%> deklariert werdenVariablen im Adressraum %<__regio_symbol%> kÃ¶nnen keinen Anfangswert habenVariablen im Adressraum %<__regio_symbol%> mÃ¼ssen als %<extern%> deklariert werdenVariablen im Adressraum %<__regio_symbol%> mÃ¼ssen als %<volatile%> deklariert werdenVariablen vom Typ %qT kÃ¶nnen keine thread-lokale Speicherdauer habenvariabel modifiziertes %qE im Dateibereichvariabel modifiziertes Feld im Dateibereichim Â»newÂ«-Ausdruck ist kein variabel modifizierter Typ erlaubtvariadische Friends oder Friend-Type-Deklarationen mit mehreren Typen sind erst ab %<-std=c++2c%> oder %<-std=gnu++2c%> verfÃ¼gbarvariadische Funktionen mÃ¼ssen die AAPCS-Basisvariante verwendenvariadische Templates nur mit %<-std=c++11%> oder %<-std=gnu++11%> verfÃ¼gbarvariadischer Thunk-AufrufVariante %qD und Basis %qD haben unvertrÃ¤gliche Typendie Variante %qD ist eine eingebauteVariante %qD ist keine FunktionDie Variante %qs und die Basis %qs bei %L haben inkompatible Typen: %sDie Variante %qs bei %L muss eine Funktion oder Unterroutine seindie in OMP BEGIN METADIRECTIVE bei %C verwendete Variantendirektive muss eine entsprechende Enddirektive haben%qs-Element des Vektors ist kein GIMPLE-WertVektor-%qs mit Elementindex, der nicht NULL istVektor-Argument an Funktion ohne Prototyp Ã¼bergebenVektorbedingung wird stÃ¼ckweise ausgeweitetVektor Nummer %d von %q+D liegt auÃŸerhalb des Bereichs 1%s3 fÃ¼r kompakte VektortabelleVektoroperation wird parallel ausgeweitetVektoroperation wird stÃ¼ckweise ausgeweitetVektoroperation wird mit einzelner skalarer Operation ausgeweitetVektorÃ¼berlauf in Ausdruck %qE des Typs %qT ergibt %qEVektorÃ¼berlauf in Ausdruck des Typs %qT ergibt %qEVektorumverteilungsoperation wird stÃ¼ckweise ausgeweitetVektorgrÃ¶ÃŸe kein ganzzahliges Vielfaches der KomponentengrÃ¶ÃŸeVektortypen erwartet in %qsVektortypen erwartet in %qsVektorwert verwendet, wo Gleitkommawert erwartet wurdeVektorisierung fÃ¼r eine SIMD-Schleife nicht durchgefÃ¼hrtVektoren unterschiedlicher Elementanzahl in %qs gefundenverify_bind_c_derived_type(): Given symbol is unexpectedly NULLInterner Fehler: verify_cgraph_node failedInterner Fehler: verify_flow_info failedInterner Fehler: verify_flow_info: Basic block %d succ edge is corruptedInterner Fehler: verify_flow_info: Block %i has loop_father, but there are no loopsInterner Fehler: verify_flow_info: Block %i lacks loop_fatherInterner Fehler: verify_flow_info: Duplicate edge %i->%iInterner Fehler: verify_flow_info: Incorrect blocks for fallthru %i->%iInterner Fehler: verify_flow_info: Incorrect fallthru %i->%iInterner Fehler: verify_flow_info: Missing count of block %iInterner Fehler: verify_flow_info: REG_BR_PROB does not match cfg %i %iInterner Fehler: verify_flow_info: REG_BR_PROB is set but cfg probability is notInterner Fehler: verify_flow_info: Wrong count of block %iInterner Fehler: verify_flow_info: Wrong probability of edge %i->%iInterner Fehler: verify_flow_info: unallocated edge flag set on %d -> %dInterner Fehler: verify_flow_info: unallocated flag set on BB %dverify_gimple failedverify_ssa gescheitertVersionsattribut ist keine ZeichenketteKonfliktmarker fÃ¼r Versionskontrolle in Dateivon %qT geerbte Version ist hier deklariertVersion von %<g%> wird weggelassen, bitte geben Sie die Version fÃ¼r die individuelle Erweiterung andas versionierte Symbol muss %<public%> seinversioniertes Symbol muss standardmÃ¤ÃŸige Sichtbarkeit habenvirt-Spezifikation in %qs ist auÃŸerhalb einer Klassendefinition nicht erlaubtvirtual PHI with argument locationsvirtual SSA name for non-VOP declvirtuelle Basis %qT ist in %qT durch Mehrdeutigkeit unzugÃ¤nglichfÃ¼r Anweisung fehlt virtueller Definitions-Operandvirtual definition is not an SSA namevirtuelle Definition der Anweisung nicht aktuellvirtuelle Funktion %q+D Ã¼bersteuert final-Funktionvirtuelle Funktionen kann keinen hergeleiteten RÃ¼ckgabetyp habendie virtuelle Funktion ist hier deklariertMultiversionierung virtueller Funktionen wird nicht unterstÃ¼tztvirtuelle Funktionen kÃ¶nnen erst mit C++20 %<constexpr%> seinvirtuelle Funktionen kÃ¶nnen keine friends seinvirtuelle Methode %qDvirtuelle Nicht-Klassen-Funktion %qsvirtuelle Tabelle des Typs %qD enthÃ¤lt RTTI-Informationvirtuelle Tabelle des Typs %qD verletzt die One-Definition-RuleZeiger auf Virtuelle Tabelle wird uninitialisiert verwendetvirtuelle Verwendung von Anweisung nicht aktuellfÃ¼r die Anweisung fehlt der virtuelle Verwendungs-OperandSichtbarkeitsargument ist keine ZeichenketteSichtbarkeitsattribute werden in dieser Konfiguration nicht unterstÃ¼tzt; ignoriertvms Â»#pragma __messageÂ« wird ignoriertvoid-Wert nicht ignoriert wie es sein sollteflÃ¼chtiges Argumentvolatile-Funktionstypvtable fÃ¼r Vtable-Verifikation wird in Kombination mit LTO nicht unterstÃ¼tztwaitpid gescheitertWarnung: Warnung: Evtl. mit Â»-staticÂ« binden, da Systembibliotheken mitÂ»%sÂ« wurde erwartetschwaches %q+D kann nicht als %qE definiert werdenschwache Alias-Definitionen werden in dieser Konfiguration nicht unterstÃ¼tztschwache Aliase werden nicht unterstÃ¼tztschwache Deklaration von %q+D wird auf bereits existierende Â»staticÂ«-Definition angewandtschwache Deklaration von %q+D muss Ã¶ffentlich seinschwache Deklaration von %q+D wird nicht unterstÃ¼tztGewichte mÃ¼ssen nichtnegativ seinbeim Speichern von %qT erfordert %qE eine Vektorbasis und einen skalaren Indexbeim Schreiben der Ausgabe nach %s: %mwÃ¤hrend %qT in %E Elemente zerlegt wirdwÃ¤hrend %qT in %wu Element zerlegt wirdwÃ¤hrend %qT in %wu Elemente zerlegt wirdbeim Referenzieren von %qDBreite von %qD Ã¼bersteigt seinen TypenBreite von %qs Ã¼berschreitet dessen TypenBreite des Bit-Feldes %qD hat Nicht-Ganzzahl-Typ %qTmitmit %<ancestor%> dÃ¼rfen nur die Klauseln %<device%>, %<firstprivate%>, %<private%>, %<defaultmap%> und %<map%> in dem Konstrukt erscheineninnerhalb dieser Schleifeohne %<-gdwarf-5%> ist %<-gvariable-location-views=incompat5%> gleichbedeutend mit %<-gvariable-location-views%>arbeitsteilende Region darf nicht innerhalb einer Region eng geschachtelt sein, die arbeitsteilend, %<loop%>, %<critical%>, %<ordered%>, %<master%>, %<masked%>, explizit %<task%> oder %<taskloop%> istSchreiben von %wu Bit Daten auÃŸerhalb der Grenzen des Zielobjekts, Daten wurden auf %wu Bit abgeschnittenwrite_atom(): Trying to write dab atomwrite_symbol(): bad module symbol %qswrite_symtree(): Symbol not writtenCode schreibt %E Byte in eine Region der GrÃ¶ÃŸe %E und bringt dadurch das Zielobjekt zum ÃœberlaufenCode schreibt %E Bytes in eine Region der GrÃ¶ÃŸe %E und bringt dadurch das Zielobjekt zum ÃœberlaufenCode schreibt %E oder mehr Bytes in eine Region der GrÃ¶ÃŸe %E und bringt dadurch die Zielregion zum ÃœberlaufenSchreiben von %wu Byte in eine Region der GrÃ¶ÃŸe %wuSchreiben von %wu Bytes in eine Region der GrÃ¶ÃŸe %wuSchreiben von %wu Byte in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuSchreiben von %wu Bytes in eine Region der GrÃ¶ÃŸe zwischen %wu und %wuCMI %qs wird geschriebenCode schreibt zwischen %E und %E Bytes in eine Region der GrÃ¶ÃŸe %E und bringt dadurch das Zielobjekt zum ÃœberlaufenSchreiben von %wu bis %wu Bytes in eine Region der GrÃ¶ÃŸe %wu%wu bis %wu Bytes werden in eine Region der GrÃ¶ÃŸe zwischen %wu und %wu geschriebenSchreiben in konstantes Objekt (Argument %d)ein Byte zu viel wird in eine Region geschrieben, deren GrÃ¶ÃŸe von %<strlen%> abhÃ¤ngtAusgabedatei wird geschriebenbeim Schreiben in Â»%sÂ«: %mSchreiben Ã¼ber Null-Zeiger (Argument %d)beim Schreiben in LTRANS-Ausgabeliste %s: %mSchreibzugriff auf Adressraum %qs wird nicht unterstÃ¼tztInterner Compilerfehler: wrong %<TYPE_CACHED_VALUES%> entryInterner Fehler: wrong amount of branch edges after conditional jump in bb %iInterner Fehler: wrong amount of branch edges after unconditional jump %ifalsches Argument %qs fÃ¼r Option %qsfalsches Argument fÃ¼r ignorierte AttributeFalsche Kante %d->%d fÃ¼r PHI-ArgumentInterner Compilerfehler: wrong entry in %<TYPE_ARG_TYPES%> listFalsche Liste zur sofortigen Verwendungfalscher Befehl in Â»fallthruÂ«-Kantefalsche Liste der verlassenen Schleifen fÃ¼r Kante %d->%dFalsche Anzahl an Argumenten fÃ¼r das Attribut %qE angegebenfalsche Anzahl der Argumente fÃ¼r %%:debug-level-gtfalsche Anzahl von Argumenten fÃ¼r %%:dwarf-version-gtfalsche Anzahl von Argumenten fÃ¼r %<__builtin_addressof%>falsche Anzahl von Argumenten fÃ¼r %<__builtin_assoc_barrier%>falsche Anzahl der Argumente fÃ¼r %<__builtin_call_with_static_chain%>falsche Anzahl der Argumente fÃ¼r %<__builtin_choose_expr%>falsche Anzahl der Argumente fÃ¼r %<__builtin_complex%>falsche Anzahl von Argumenten fÃ¼r %<__builtin_convertvector%>falsche Anzahl von Argumenten fÃ¼r %<__builtin_counted_by_ref%>falsche Anzahl von Argumenten fÃ¼r %<__builtin_launder%>falsche Anzahl der Argumente fÃ¼r %<__builtin_shuffle%>falsche Anzahl der Argumente fÃ¼r %<__builtin_shufflevector%>Falsche Anzahl an Argumenten fÃ¼r das Attribut %<assume%> angegebenfalsche Anzahl an Argumenten fÃ¼r %qsfalsche Anzahl der Argumente fÃ¼r Funktion %<__builtin_next_arg%>falsche Anzahl der Argumente fÃ¼r Funktion %<va_start%>Interner Fehler: wrong number of branch edges after unconditional jump in bb %ifalsche Anzahl der Templateargumente (%d, sollte %d sein)falsche Anzahl der Templateargumente (%d, sollte mindestens %d sein)Interner Fehler: wrong outgoing edge flags at end of bb %dfalscher Strategiename %qs fÃ¼r Option %qs angegebenInterner Compilerfehler: wrong tree in %<TYPE_FIELDS%> listArgument falschen Typs fÃ¼r %sArgument falschen Typs fÃ¼r absfalsches Typargument fÃ¼r Â»absuÂ«Argument falschen Typs fÃ¼r Bit-KomplementArgument falschen Typs fÃ¼r KonjugationArgument falschen Typs fÃ¼r DekrementierungArgument falschen Typs fÃ¼r InkrementierungArgument falschen Typs fÃ¼r unÃ¤res AusrufungszeichenArgument falschen Typs fÃ¼r unÃ¤res MinusArgument falschen Typs fÃ¼r unÃ¤res PlusArgument falschen Typs fÃ¼r Â»%sÂ«x87-RegisterrÃ¼ckgabe mit ausgeschaltetem x87xstormy16_print_operand: unbekannter CodeSie kÃ¶nnen %qs mit der Befehlszeilenoption %<-march%> einschalten, oder mit dem Attribut %<target%> oder PragmaSie kÃ¶nnen RVV mit der Befehlszeilenoption %<-march%>, oder mit dem Attribut %<target%> oder Pragma aktivierenSie kÃ¶nnen SVE mit der Befehlszeilenoption %<-march%>, oder mit dem Attribut %<target%> oder Pragma aktivierenSie kÃ¶nnen mve.fp mit der Befehlszeilenoption %<-march%> oder mit dem Attribut oder Pragma %<target%> einschaltenSie kÃ¶nnen diese Warnung unterdrÃ¼cken, indem Sie eine hexadezimale Konstante verwenden (%wx statt %wd)Sie kÃ¶nnen diesen Wert mit %<--param hardware_destructive_interference_size=%d%> stabilisieren, oder diese Warnung mit %<-Wno-interference-size%> deaktivierenSie kÃ¶nnen stattdessen einen inline-Namensraum verwendendies kann durch das LÃ¶schen der Initialisierung umgangen werdenBei Verwendung der Option %qs kann die Adresse von geschachtelten Funktionen nicht verwendet werdenIhre native CPU-Architektur %qs unterstÃ¼tzt die ABI %qs nicht, stattdessen wird %<-m%s=%s%> verwendetz*inx erfordert ABI ilp32, ilp32e, lp64 oder lp64ez/Architektur.Null als NullzeigerkonstanteArrayabschnitt der LÃ¤nge 0 in %qs-KlauselArraygrÃ¶ÃŸe von %q+D ist null oder negativTyp %qT mit GrÃ¶ÃŸe 0 in %<reduction%>-KlauselTyp %qT mit GrÃ¶ÃŸe 0 in %qs-KlauselVektorgrÃ¶ÃŸe NullBreite Null fÃ¼r Bitfeld %q+DBreite Null fÃ¼r Bitfeld %qsBreite null im Format %sFormat-Zeichenkette %s der LÃ¤nge nullArray %qD der GrÃ¶ÃŸe nullArray %qT der GrÃ¶ÃŸe nullArrayelement %qD mit LÃ¤nge 0 in ansonsten leerem %q#TArrayelement %qD mit LÃ¤nge 0 befindet sich nicht am Ende von %q#T{anonym}{fehlerhaft}
\ No newline at end of file
diff -Nrcpad gcc-15.2.0/gcc/po/de.po gcc-15.3.0/gcc/po/de.po
*** gcc-15.2.0/gcc/po/de.po	Fri Aug  8 06:51:41 2025
--- gcc-15.3.0/gcc/po/de.po	Fri Jun 12 06:09:06 2026
***************
*** 8,17 ****
  # Roland Illig <roland.illig@gmx.de>, 2015, 2017-2025.
  msgid ""
  msgstr ""
! "Project-Id-Version: gcc 15.1.0\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
! "POT-Creation-Date: 2025-04-23 19:27+0000\n"
! "PO-Revision-Date: 2025-04-28 21:45+0200\n"
  "Last-Translator: Roland Illig <roland.illig@gmx.de>\n"
  "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
  "Language: de\n"
--- 8,17 ----
  # Roland Illig <roland.illig@gmx.de>, 2015, 2017-2025.
  msgid ""
  msgstr ""
! "Project-Id-Version: gcc 15.2.0\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
! "POT-Creation-Date: 2025-08-01 17:58+0000\n"
! "PO-Revision-Date: 2025-08-23 14:50+0200\n"
  "Last-Translator: Roland Illig <roland.illig@gmx.de>\n"
  "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
  "Language: de\n"
*************** msgstr ""
*** 20,26 ****
  "Content-Transfer-Encoding: 8bit\n"
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
  "X-Bugs: Report translation errors to the Language-Team address.\n"
! "X-Generator: Poedit 3.6\n"
  "X-Poedit-Bookmarks: -1,-1,-1,6017,-1,-1,-1,-1,-1,-1\n"
  
  #: cif-code.def:39
--- 20,26 ----
  "Content-Transfer-Encoding: 8bit\n"
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
  "X-Bugs: Report translation errors to the Language-Team address.\n"
! "X-Generator: Poedit 3.7\n"
  "X-Poedit-Bookmarks: -1,-1,-1,6017,-1,-1,-1,-1,-1,-1\n"
  
  #: cif-code.def:39
*************** msgstr "Funktion kann nicht Â»inlineÂ« s
*** 45,51 ****
  
  #: cif-code.def:60
  msgid "function body can be overwritten at link time"
! msgstr "FunktionskÃ¶rper kann zum Link-Zeitpunkt Ã¼berschrieben werden"
  
  #: cif-code.def:64
  msgid "function not inline candidate"
--- 45,51 ----
  
  #: cif-code.def:60
  msgid "function body can be overwritten at link time"
! msgstr "FunktionskÃ¶rper kann zum Bindezeitpunkt Ã¼berschrieben werden"
  
  #: cif-code.def:64
  msgid "function not inline candidate"
*************** msgstr "Funktion nicht Â»inlineÂ« deklar
*** 89,95 ****
  
  #: cif-code.def:96
  msgid "mismatched declarations during linktime optimization"
! msgstr "Unpassende Deklarationen wÃ¤hrend Linkzeit-Optimierung"
  
  #: cif-code.def:100
  msgid "variadic thunk call"
--- 89,95 ----
  
  #: cif-code.def:96
  msgid "mismatched declarations during linktime optimization"
! msgstr "Unpassende Deklarationen wÃ¤hrend Bindezeit-Optimierung"
  
  #: cif-code.def:100
  msgid "variadic thunk call"
*************** msgstr "-fuse-linker-plugin wird in dies
*** 258,264 ****
  
  #: gcc.cc:1115
  msgid "cannot specify -static with -fsanitize=address"
! msgstr "Â»-staticÂ« kann nicht mit Â»-fsanitize=AdresseÂ« angegeben werden"
  
  #: gcc.cc:1117
  msgid "cannot specify -static with -fsanitize=hwaddress"
--- 258,264 ----
  
  #: gcc.cc:1115
  msgid "cannot specify -static with -fsanitize=address"
! msgstr "Â»-staticÂ« kann nicht mit Â»-fsanitize=addressÂ« angegeben werden"
  
  #: gcc.cc:1117
  msgid "cannot specify -static with -fsanitize=hwaddress"
*************** msgstr "rdynamic wird nicht unterstÃ¼tzt
*** 343,349 ****
  #: config/dragonfly.h:76 config/i386/freebsd.h:82 config/i386/freebsd64.h:35
  #: config/ia64/freebsd.h:26 config/rs6000/sysv4.h:750 config/sparc/freebsd.h:45
  msgid "consider using '-pg' instead of '-p' with gprof(1)"
! msgstr "evtl. Â»-pgÂ« statt Â»-pÂ« mit gprof(1) verwendet"
  
  #: config/lynx.h:69
  msgid "cannot use mthreads and mlegacy-threads together"
--- 343,349 ----
  #: config/dragonfly.h:76 config/i386/freebsd.h:82 config/i386/freebsd64.h:35
  #: config/ia64/freebsd.h:26 config/rs6000/sysv4.h:750 config/sparc/freebsd.h:45
  msgid "consider using '-pg' instead of '-p' with gprof(1)"
! msgstr "evtl. Â»-pgÂ« statt Â»-pÂ« mit gprof(1) verwenden"
  
  #: config/lynx.h:69
  msgid "cannot use mthreads and mlegacy-threads together"
*************** msgstr "Darwin unterstÃ¼tzt Â»-mfentryÂ«
*** 401,407 ****
  
  #: config/i386/sol2.h:59
  msgid "-mx32 is not supported on Solaris"
! msgstr "%<-mx32%> wird unter Solaris nicht unterstÃ¼tzt"
  
  #: config/mcore/mcore.h:53
  msgid "the m210 does not have little endian support"
--- 401,407 ----
  
  #: config/i386/sol2.h:59
  msgid "-mx32 is not supported on Solaris"
! msgstr "Â»-mx32Â« wird unter Solaris nicht unterstÃ¼tzt"
  
  #: config/mcore/mcore.h:53
  msgid "the m210 does not have little endian support"
*************** msgstr "Â»-mdata-regionÂ« benÃ¶tigt das
*** 430,436 ****
  #: config/pa/pa-hpux11.h:134 config/pa/pa-hpux11.h:137 config/pa/pa64-hpux.h:29
  #: config/pa/pa64-hpux.h:32 config/pa/pa64-hpux.h:41 config/pa/pa64-hpux.h:44
  msgid "warning: consider linking with '-static' as system libraries with"
! msgstr "Warnung: Evtl. mit Â»-staticÂ« linken, da Systembibliotheken mit"
  
  #: config/pa/pa-hpux11.h:135 config/pa/pa-hpux11.h:138 config/pa/pa64-hpux.h:30
  #: config/pa/pa64-hpux.h:33 config/pa/pa64-hpux.h:42 config/pa/pa64-hpux.h:45
--- 430,436 ----
  #: config/pa/pa-hpux11.h:134 config/pa/pa-hpux11.h:137 config/pa/pa64-hpux.h:29
  #: config/pa/pa64-hpux.h:32 config/pa/pa64-hpux.h:41 config/pa/pa64-hpux.h:44
  msgid "warning: consider linking with '-static' as system libraries with"
! msgstr "Warnung: Evtl. mit Â»-staticÂ« binden, da Systembibliotheken mit"
  
  #: config/pa/pa-hpux11.h:135 config/pa/pa-hpux11.h:138 config/pa/pa64-hpux.h:30
  #: config/pa/pa64-hpux.h:33 config/pa/pa64-hpux.h:42 config/pa/pa64-hpux.h:45
*************** msgstr "FÃ¼r gnat2why wird Â»-cÂ« benÃ¶t
*** 497,507 ****
  
  #: ada/gcc-interface/lang-specs.h:67
  msgid "-c required for gnat2scil"
! msgstr "FÃ¼r gnat2scil wird -c benÃ¶tigt"
  
  #: fortran/lang-specs.h:63 fortran/lang-specs.h:81
  msgid "gfortran does not support -E without -cpp"
! msgstr "gfortran unterstÃ¼tzt nicht -E ohne -cpp"
  
  #: objc/lang-specs.h:30 objc/lang-specs.h:41
  msgid "GNU Objective C no longer supports traditional compilation"
--- 497,507 ----
  
  #: ada/gcc-interface/lang-specs.h:67
  msgid "-c required for gnat2scil"
! msgstr "FÃ¼r gnat2scil wird Â»-cÂ« benÃ¶tigt"
  
  #: fortran/lang-specs.h:63 fortran/lang-specs.h:81
  msgid "gfortran does not support -E without -cpp"
! msgstr "gfortran unterstÃ¼tzt Â»-EÂ« nur zusammen mit Â»-cppÂ«"
  
  #: objc/lang-specs.h:30 objc/lang-specs.h:41
  msgid "GNU Objective C no longer supports traditional compilation"
*************** msgstr "Bei Erzeugung temporÃ¤rer Felder
*** 543,550 ****
  #: fortran/lang.opt:214 fortran/lang.opt:547 c-family/c.opt:1692
  #: config/alpha/alpha.opt:31 common.opt:691 common.opt:849 common.opt:1112
  #: common.opt:1116 common.opt:1120 common.opt:1124 common.opt:1876
! #: common.opt:1979 common.opt:2161 common.opt:2165 common.opt:2479
! #: common.opt:2705 common.opt:3472
  #, no-c-format
  msgid "Does nothing. Preserved for backward compatibility."
  msgstr "Tut nichts. FÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤t erhalten."
--- 543,550 ----
  #: fortran/lang.opt:214 fortran/lang.opt:547 c-family/c.opt:1692
  #: config/alpha/alpha.opt:31 common.opt:691 common.opt:849 common.opt:1112
  #: common.opt:1116 common.opt:1120 common.opt:1124 common.opt:1876
! #: common.opt:1979 common.opt:2161 common.opt:2165 common.opt:2476
! #: common.opt:2702 common.opt:3469
  #, no-c-format
  msgid "Does nothing. Preserved for backward compatibility."
  msgstr "Tut nichts. FÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤t erhalten."
*************** msgstr "Unpassende Argumente in Prozedur
*** 697,703 ****
  #: fortran/lang.opt:390
  #, no-c-format
  msgid "Eliminate multiple function invocations also for impure functions."
! msgstr "Mehrere Funktionsaufrufe auch fÃ¼r unreine Funktionen entfernen."
  
  #: fortran/lang.opt:394
  #, no-c-format
--- 697,703 ----
  #: fortran/lang.opt:390
  #, no-c-format
  msgid "Eliminate multiple function invocations also for impure functions."
! msgstr "Mehrfache Funktionsaufrufe auch fÃ¼r unreine Funktionen entfernen."
  
  #: fortran/lang.opt:394
  #, no-c-format
*************** msgstr "Eine literale BOZ-Konstante in e
*** 717,723 ****
  #: fortran/lang.opt:410
  #, no-c-format
  msgid "Do not treat local variables and COMMON blocks as if they were named in SAVE statements."
! msgstr "Lokale Variablen und COMMON-BlÃ¶cke behandeln, als ob sie in SAVE-Anweisungen benannt worden wÃ¤ren."
  
  #: fortran/lang.opt:414
  #, no-c-format
--- 717,723 ----
  #: fortran/lang.opt:410
  #, no-c-format
  msgid "Do not treat local variables and COMMON blocks as if they were named in SAVE statements."
! msgstr "Lokale Variablen und COMMON-BlÃ¶cke nicht so behandeln, als ob sie in SAVE-Anweisungen benannt worden wÃ¤ren."
  
  #: fortran/lang.opt:414
  #, no-c-format
*************** msgstr "Angeben, dass Backslashes in Zei
*** 727,733 ****
  #: fortran/lang.opt:418
  #, no-c-format
  msgid "Produce a backtrace when a runtime error is encountered."
! msgstr "Backtrace erzeugen, wenn Laufzeitfehler auftritt."
  
  #: fortran/lang.opt:422
  #, no-c-format
--- 727,733 ----
  #: fortran/lang.opt:418
  #, no-c-format
  msgid "Produce a backtrace when a runtime error is encountered."
! msgstr "Backtrace erzeugen, wenn ein Laufzeitfehler auftritt."
  
  #: fortran/lang.opt:422
  #, no-c-format
*************** msgstr "C-Prototypen aus BIND(C)-Deklara
*** 757,768 ****
  #: fortran/lang.opt:470
  #, no-c-format
  msgid "Generate C prototypes from non-BIND(C) external procedure definitions."
! msgstr "C-Prototypen aus Nicht-BIND(C)-Deklarationen fÃ¼r externe Prozeduren generieren."
  
  #: fortran/lang.opt:474
  #, no-c-format
  msgid "Ignore 'D' in column one in fixed form."
! msgstr "Â»DÂ« in Spalte eins in statischer Form ignorieren."
  
  #: fortran/lang.opt:478
  #, no-c-format
--- 757,768 ----
  #: fortran/lang.opt:470
  #, no-c-format
  msgid "Generate C prototypes from non-BIND(C) external procedure definitions."
! msgstr "C-Prototypen aus Nicht-BIND(C)-Definitionen fÃ¼r externe Prozeduren generieren."
  
  #: fortran/lang.opt:474
  #, no-c-format
  msgid "Ignore 'D' in column one in fixed form."
! msgstr "Â»DÂ« in Spalte eins in fester Form ignorieren."
  
  #: fortran/lang.opt:478
  #, no-c-format
*************** msgstr "Artspezifische Varianten der int
*** 807,813 ****
  #: fortran/lang.opt:511
  #, no-c-format
  msgid "Enable legacy math intrinsics for compatibility."
! msgstr "Intrinsische Altlasten-Mathematik-Funktionen fÃ¼r KompatibilitÃ¤t einschaltet."
  
  #: fortran/lang.opt:515
  #, no-c-format
--- 807,813 ----
  #: fortran/lang.opt:511
  #, no-c-format
  msgid "Enable legacy math intrinsics for compatibility."
! msgstr "Intrinsische Altlasten-Mathematik-Funktionen fÃ¼r KompatibilitÃ¤t einschalten."
  
  #: fortran/lang.opt:515
  #, no-c-format
*************** msgstr "Dollarzeichen in EntitÃ¤tsnamen
*** 852,858 ****
  #: fortran/lang.opt:551
  #, no-c-format
  msgid "Display the code tree after parsing."
! msgstr "Codebaum nach Analyse anzeigen."
  
  #: fortran/lang.opt:555
  #, no-c-format
--- 852,858 ----
  #: fortran/lang.opt:551
  #, no-c-format
  msgid "Display the code tree after parsing."
! msgstr "Codebaum nach dem Parsen anzeigen."
  
  #: fortran/lang.opt:555
  #, no-c-format
*************** msgstr "Die globale Symboltabelle nach d
*** 867,873 ****
  #: fortran/lang.opt:563
  #, no-c-format
  msgid "Display the code tree after parsing; deprecated option."
! msgstr "Codebaum nach Analyse anzeigen; veraltete Option."
  
  #: fortran/lang.opt:567
  #, no-c-format
--- 867,873 ----
  #: fortran/lang.opt:563
  #, no-c-format
  msgid "Display the code tree after parsing; deprecated option."
! msgstr "Codebaum nach dem Parsen anzeigen; veraltete Option."
  
  #: fortran/lang.opt:567
  #, no-c-format
*************** msgstr "Angeben, dass eine externe BLAS-
*** 879,885 ****
  msgid "Use f2c calling convention."
  msgstr "Die f2c-Aufrufkonvention verwenden."
  
! #: fortran/lang.opt:575 cobol/lang.opt:78
  #, no-c-format
  msgid "Assume that the source file is fixed form."
  msgstr "Annehmen, dass Quelldatei in fester Form vorliegt."
--- 879,885 ----
  msgid "Use f2c calling convention."
  msgstr "Die f2c-Aufrufkonvention verwenden."
  
! #: fortran/lang.opt:575 cobol/lang.opt:83
  #, no-c-format
  msgid "Assume that the source file is fixed form."
  msgstr "Annehmen, dass Quelldatei in fester Form vorliegt."
*************** msgstr "-ffixed-line-length-<n>\tIm fest
*** 912,918 ****
  #: fortran/lang.opt:603
  #, no-c-format
  msgid "Pad shorter fixed form lines to line width with spaces."
! msgstr "KÃ¼rzere feste Formularzeilen mit Leerzeichen auf Zeilenbreite auffÃ¼llen."
  
  #: fortran/lang.opt:607
  #, no-c-format
--- 912,918 ----
  #: fortran/lang.opt:603
  #, no-c-format
  msgid "Pad shorter fixed form lines to line width with spaces."
! msgstr "KÃ¼rzere Zeilen in fester Form mit Leerzeichen auf Zeilenbreite auffÃ¼llen."
  
  #: fortran/lang.opt:607
  #, no-c-format
*************** msgstr "-ffpe-trap=[â€¦]\tBei folgenden
*** 924,930 ****
  msgid "-ffpe-summary=[...]\tPrint summary of floating point exceptions."
  msgstr "-ffpe-summary=[â€¦]\tZusammenfassung fÃ¼r Gleitkommaausnahmen ausgeben."
  
! #: fortran/lang.opt:615 cobol/lang.opt:82
  #, no-c-format
  msgid "Assume that the source file is free form."
  msgstr "Annehmen, dass Quelldatei in freier Form vorliegt."
--- 924,930 ----
  msgid "-ffpe-summary=[...]\tPrint summary of floating point exceptions."
  msgstr "-ffpe-summary=[â€¦]\tZusammenfassung fÃ¼r Gleitkommaausnahmen ausgeben."
  
! #: fortran/lang.opt:615 cobol/lang.opt:87
  #, no-c-format
  msgid "Assume that the source file is free form."
  msgstr "Annehmen, dass Quelldatei in freier Form vorliegt."
*************** msgstr "-fmax-stack-var-size=<n>\tGrÃ¶ÃŸ
*** 1022,1028 ****
  #: fortran/lang.opt:732
  #, no-c-format
  msgid "Put all local arrays on stack."
! msgstr "Alle lokalen Felder Ã¼ber Stapel Ã¼bergeben."
  
  #: fortran/lang.opt:736
  #, no-c-format
--- 1022,1028 ----
  #: fortran/lang.opt:732
  #, no-c-format
  msgid "Put all local arrays on stack."
! msgstr "Alle lokalen Felder auf dem Stapel anlegen."
  
  #: fortran/lang.opt:736
  #, no-c-format
*************** msgstr "Unterstriche an extern sichtbare
*** 1151,1162 ****
  #: config/arc/arc.opt:312 config/arc/arc.opt:317 config/arc/arc.opt:326
  #: config/arc/arc.opt:405 common.opt:649 common.opt:1210 common.opt:1214
  #: common.opt:1218 common.opt:1313 common.opt:1658 common.opt:1740
! #: common.opt:1839 common.opt:2109 common.opt:2256 common.opt:2313
! #: common.opt:2783 common.opt:2819 common.opt:2912 common.opt:2916
! #: common.opt:3025 common.opt:3160 common.opt:3168 common.opt:3176
! #: common.opt:3184 common.opt:3285 common.opt:3345 common.opt:3433
! #: common.opt:3613 common.opt:3617 common.opt:3621 common.opt:3625
! #: common.opt:3699 common.opt:3703 common.opt:3734 common.opt:3738
  #, no-c-format
  msgid "Does nothing.  Preserved for backward compatibility."
  msgstr "Tut nichts. FÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤t erhalten."
--- 1151,1162 ----
  #: config/arc/arc.opt:312 config/arc/arc.opt:317 config/arc/arc.opt:326
  #: config/arc/arc.opt:405 common.opt:649 common.opt:1210 common.opt:1214
  #: common.opt:1218 common.opt:1313 common.opt:1658 common.opt:1740
! #: common.opt:1839 common.opt:2109 common.opt:2256 common.opt:2310
! #: common.opt:2780 common.opt:2816 common.opt:2909 common.opt:2913
! #: common.opt:3022 common.opt:3157 common.opt:3165 common.opt:3173
! #: common.opt:3181 common.opt:3282 common.opt:3342 common.opt:3430
! #: common.opt:3610 common.opt:3614 common.opt:3618 common.opt:3622
! #: common.opt:3696 common.opt:3700 common.opt:3731 common.opt:3735
  #, no-c-format
  msgid "Does nothing.  Preserved for backward compatibility."
  msgstr "Tut nichts. FÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤t erhalten."
*************** msgstr "Metadaten direkt in Objektdateie
*** 1289,1295 ****
  #: rust/lang.opt:152
  #, no-c-format
  msgid "-frust-metadata-output=<path.rox>  Path to output crate metadata"
! msgstr "-frust-metadata-output=<Pfad.rox>  Pfad, in den die Create-Metadaten geschrieben werden"
  
  #: rust/lang.opt:160
  #, no-c-format
--- 1289,1295 ----
  #: rust/lang.opt:152
  #, no-c-format
  msgid "-frust-metadata-output=<path.rox>  Path to output crate metadata"
! msgstr "-frust-metadata-output=<Pfad.rox>  Pfad, in den die Crate-Metadaten geschrieben werden"
  
  #: rust/lang.opt:160
  #, no-c-format
*************** msgstr "-D<Makro>[=<Wert>]\tEin <Makro>
*** 1344,1350 ****
  #: c-family/c.opt:211
  #, no-c-format
  msgid "-F <dir>\tAdd <dir> to the end of the main framework include path."
! msgstr "-F <Verz>\t<Verz> an das Ende des Haupt-EinfÃ¼gepfades des Frameworks anfÃ¼gen."
  
  #: c-family/c.opt:215
  #, no-c-format
--- 1344,1350 ----
  #: c-family/c.opt:211
  #, no-c-format
  msgid "-F <dir>\tAdd <dir> to the end of the main framework include path."
! msgstr "-F <Verz>\t<Verz> an das Ende des Haupt-Framework-Pfads fÃ¼r Includedateien anfÃ¼gen."
  
  #: c-family/c.opt:215
  #, no-c-format
*************** msgstr "Namen der Header-Dateien ausgebe
*** 1359,1375 ****
  #: c-family/c.opt:223
  #, no-c-format
  msgid "-I <dir>\tAdd <dir> to the end of the main include path."
! msgstr "-I <Verz>\t<Verz> an das Ende des HaupteinfÃ¼gepfades anfÃ¼gen."
  
  #: c-family/c.opt:227
  #, no-c-format
  msgid "Generate make dependencies."
! msgstr "Make-AbhÃ¤ngigkeiten erzeugen."
  
  #: c-family/c.opt:231
  #, no-c-format
  msgid "Generate make dependencies and compile."
! msgstr "Make-AbhÃ¤ngigkeiten erzeugen und Code Ã¼bersetzen."
  
  #: c-family/c.opt:235
  #, no-c-format
--- 1359,1375 ----
  #: c-family/c.opt:223
  #, no-c-format
  msgid "-I <dir>\tAdd <dir> to the end of the main include path."
! msgstr "-I <Verz>\t<Verz> an das Ende des Hauptpfades fÃ¼r Includedateien anfÃ¼gen."
  
  #: c-family/c.opt:227
  #, no-c-format
  msgid "Generate make dependencies."
! msgstr "AbhÃ¤ngigkeiten fÃ¼r Â»makeÂ« erzeugen."
  
  #: c-family/c.opt:231
  #, no-c-format
  msgid "Generate make dependencies and compile."
! msgstr "AbhÃ¤ngigkeiten fÃ¼r Â»makeÂ« erzeugen und Code Ã¼bersetzen."
  
  #: c-family/c.opt:235
  #, no-c-format
*************** msgstr "Fehlende Header-Dateien als gene
*** 1384,1395 ****
  #: c-family/c.opt:243
  #, no-c-format
  msgid "Like -M but ignore system header files."
! msgstr "Wie -M, aber System-Header-Dateien ignorieren."
  
  #: c-family/c.opt:247
  #, no-c-format
  msgid "Like -MD but ignore system header files."
! msgstr "Wie -MD, aber System-Header-Dateien ignorieren."
  
  #: c-family/c.opt:251
  #, no-c-format
--- 1384,1395 ----
  #: c-family/c.opt:243
  #, no-c-format
  msgid "Like -M but ignore system header files."
! msgstr "Wie Â»-MÂ«, aber System-Header-Dateien ignorieren."
  
  #: c-family/c.opt:247
  #, no-c-format
  msgid "Like -MD but ignore system header files."
! msgstr "Wie Â»-MDÂ«, aber System-Header-Dateien ignorieren."
  
  #: c-family/c.opt:251
  #, no-c-format
*************** msgstr "Die Warnung Walloca-larger-than=
*** 1529,1535 ****
  #: c-family/c.opt:378
  #, no-c-format
  msgid "Warn if conversion of the result of arithmetic might change the value even though converting the operands cannot."
! msgstr "Warnen, wenn das Ergebnis der arithmetischen Berechnungen einen falschen Wert ergeben kÃ¶nnte, selbst wenn die Operanden korrekt konvertiert werden."
  
  #: c-family/c.opt:386
  #, no-c-format
--- 1529,1535 ----
  #: c-family/c.opt:378
  #, no-c-format
  msgid "Warn if conversion of the result of arithmetic might change the value even though converting the operands cannot."
! msgstr "Warnen, wenn die Umwandlung eines Ergebnisses von arithmetischen Berechnungen einen falschen Wert ergeben kÃ¶nnte, selbst wenn die Operanden korrekt umgewandelt werden."
  
  #: c-family/c.opt:386
  #, no-c-format
*************** msgstr "Bei Merkmalen, die in ISO C23, a
*** 1584,1590 ****
  #: c-family/c.opt:453
  #, no-c-format
  msgid "Deprecated in favor of -Wc11-c23-compat."
! msgstr "Veraltet zugunsten von -Wc11-c23-compat."
  
  #: c-family/c.opt:457
  #, no-c-format
--- 1584,1590 ----
  #: c-family/c.opt:453
  #, no-c-format
  msgid "Deprecated in favor of -Wc11-c23-compat."
! msgstr "Veraltet zugunsten von Â»-Wc11-c23-compatÂ«."
  
  #: c-family/c.opt:457
  #, no-c-format
*************** msgstr "Bei Variablen, die von Â»longjmp
*** 1721,1727 ****
  #: c-family/c.opt:570
  #, no-c-format
  msgid "Warn about uses of a comma operator within a subscripting expression."
! msgstr "Warnen, wenn innerhalb eines Arrayindex ein Komma-Operator verwendet wird."
  
  #: c-family/c.opt:574
  #, no-c-format
--- 1721,1727 ----
  #: c-family/c.opt:570
  #, no-c-format
  msgid "Warn about uses of a comma operator within a subscripting expression."
! msgstr "Warnen, wenn innerhalb eines Arrayindex-Ausdrucks ein Komma-Operator verwendet wird."
  
  #: c-family/c.opt:574
  #, no-c-format
*************** msgstr "Bei mÃ¶glicherweise geschachtelt
*** 1731,1737 ****
  #: c-family/c.opt:578
  #, no-c-format
  msgid "Synonym for -Wcomment."
! msgstr "Synonym fÃ¼r -Wcomment."
  
  #: c-family/c.opt:582
  #, no-c-format
--- 1731,1737 ----
  #: c-family/c.opt:578
  #, no-c-format
  msgid "Synonym for -Wcomment."
! msgstr "Synonym fÃ¼r Â»-WcommentÂ«."
  
  #: c-family/c.opt:582
  #, no-c-format
*************** msgstr "Warnen, wenn eine explizit vorge
*** 1796,1802 ****
  #: c-family/c.opt:639
  #, no-c-format
  msgid "Warn when deleting a pointer to incomplete type."
! msgstr "Warnen, wenn ein Zeiger auf unvollstÃ¤ndigen Typen gelÃ¶scht wird."
  
  #: c-family/c.opt:643
  #, no-c-format
--- 1796,1802 ----
  #: c-family/c.opt:639
  #, no-c-format
  msgid "Warn when deleting a pointer to incomplete type."
! msgstr "Warnen, wenn Â»deleteÂ« mit einem Zeiger auf einen unvollstÃ¤ndigen Typen aufgerufen wird."
  
  #: c-family/c.opt:643
  #, no-c-format
*************** msgstr "Bei Vermischung von enum/integer
*** 1916,1922 ****
  #: c-family/c.opt:746
  #, no-c-format
  msgid "This switch is deprecated; use -Werror=implicit-function-declaration instead."
! msgstr "Dieser Schalter ist veraltet; stattdessen -Werror=implicit-function-declaration verwenden."
  
  #: c-family/c.opt:750
  #, no-c-format
--- 1916,1922 ----
  #: c-family/c.opt:746
  #, no-c-format
  msgid "This switch is deprecated; use -Werror=implicit-function-declaration instead."
! msgstr "Dieser Schalter ist veraltet; stattdessen Â»-Werror=implicit-function-declarationÂ« verwenden."
  
  #: c-family/c.opt:750
  #, no-c-format
*************** msgstr "Bei impliziten Typumwandlungen w
*** 1946,1952 ****
  #: c-family/c.opt:775
  #, no-c-format
  msgid "Warn if testing floating point numbers for equality."
! msgstr "Bei Test von Gleitkommawerten auf Gleichheit warnen."
  
  #: c-family/c.opt:779 c-family/c.opt:834
  #, no-c-format
--- 1946,1952 ----
  #: c-family/c.opt:775
  #, no-c-format
  msgid "Warn if testing floating point numbers for equality."
! msgstr "Bei Tests von Gleitkommawerten auf Gleichheit warnen."
  
  #: c-family/c.opt:779 c-family/c.opt:834
  #, no-c-format
*************** msgstr "Bei Formatstrings, die keine Lit
*** 1976,1982 ****
  #: c-family/c.opt:799
  #, no-c-format
  msgid "Warn about function calls with format strings that write past the end of the destination region.  Same as -Wformat-overflow=1."
! msgstr "Bei Funktionsaufrufen mit Formatzeichenketten warnen, die hinter das Ende der Zielregion schreiben. Entspricht -Wformat-overflow=1."
  
  #: c-family/c.opt:804
  #, no-c-format
--- 1976,1982 ----
  #: c-family/c.opt:799
  #, no-c-format
  msgid "Warn about function calls with format strings that write past the end of the destination region.  Same as -Wformat-overflow=1."
! msgstr "Bei Funktionsaufrufen mit Formatzeichenketten warnen, die hinter das Ende der Zielregion schreiben. Entspricht Â»-Wformat-overflow=1Â«."
  
  #: c-family/c.opt:804
  #, no-c-format
*************** msgstr "Vor Vorzeichenunterschieden mit
*** 1996,2002 ****
  #: c-family/c.opt:817
  #, no-c-format
  msgid "Warn about calls to snprintf and similar functions that truncate output. Same as -Wformat-truncation=1."
! msgstr "Bei Aufrufen von snprintf und Ã¤hnlichen Funktionen warnen, wenn sie die Ausgabe abschneiden. Entspricht -Wformat-truncation=1."
  
  #: c-family/c.opt:822
  #, no-c-format
--- 1996,2002 ----
  #: c-family/c.opt:817
  #, no-c-format
  msgid "Warn about calls to snprintf and similar functions that truncate output. Same as -Wformat-truncation=1."
! msgstr "Bei Aufrufen von snprintf und Ã¤hnlichen Funktionen warnen, wenn sie die Ausgabe abschneiden. Entspricht Â»-Wformat-truncation=1Â«."
  
  #: c-family/c.opt:822
  #, no-c-format
*************** msgstr "Bei Verwendung von std::initiali
*** 2086,2092 ****
  #: c-family/c.opt:905
  #, no-c-format
  msgid "Warn about nonsensical values of --param destructive-interference-size or constructive-interference-size."
! msgstr "Warnung vor unsinnigen Werten von --param destructive-interference-size oder constructive-interference-size."
  
  #: c-family/c.opt:910
  #, no-c-format
--- 2086,2092 ----
  #: c-family/c.opt:905
  #, no-c-format
  msgid "Warn about nonsensical values of --param destructive-interference-size or constructive-interference-size."
! msgstr "Warnung vor unsinnigen Werten von Â»--param destructive-interference-sizeÂ« oder Â»--param constructive-interference-sizeÂ«."
  
  #: c-family/c.opt:910
  #, no-c-format
*************** msgstr "Warnen, wenn der Leerraum am Zei
*** 2141,2147 ****
  #: c-family/c.opt:965
  #, no-c-format
  msgid "Warn when a string or character literal is followed by a ud-suffix which does not begin with an underscore."
! msgstr "Warnen, wenn Zeichenkette oder Zeichenliteral gefolgt von UD-Suffix auftritt, der nicht mit Unterstrich anfÃ¤ngt."
  
  #: c-family/c.opt:969
  #, no-c-format
--- 2141,2147 ----
  #: c-family/c.opt:965
  #, no-c-format
  msgid "Warn when a string or character literal is followed by a ud-suffix which does not begin with an underscore."
! msgstr "Warnen, wenn Zeichenkette oder Zeichenliteral gefolgt von einem benutzerdefinierten Suffix auftritt, der nicht mit Unterstrich anfÃ¤ngt."
  
  #: c-family/c.opt:969
  #, no-c-format
*************** msgstr "Warnen, wenn ein logisches Nicht
*** 2151,2162 ****
  #: c-family/c.opt:973
  #, no-c-format
  msgid "Warn when a logical operator is suspiciously always evaluating to true or false."
! msgstr "Warnen, wenn ein logischer Operator verdÃ¤chtigerweise immer zu Â»wahrÂ« oder Â»falschÂ« auswertet."
  
  #: c-family/c.opt:977
  #, no-c-format
  msgid "Do not warn about using \"long long\" when -pedantic."
! msgstr "Nicht bei Verwendung von Â»long longÂ« mit -pedantic warnen."
  
  #: c-family/c.opt:981
  #, no-c-format
--- 2151,2162 ----
  #: c-family/c.opt:973
  #, no-c-format
  msgid "Warn when a logical operator is suspiciously always evaluating to true or false."
! msgstr "Warnen, wenn ein logischer Operator verdÃ¤chtigerweise immer zu Â»trueÂ« oder Â»falseÂ« auswertet."
  
  #: c-family/c.opt:977
  #, no-c-format
  msgid "Do not warn about using \"long long\" when -pedantic."
! msgstr "Nicht bei Verwendung von Â»long longÂ« mit Â»-pedanticÂ« warnen."
  
  #: c-family/c.opt:981
  #, no-c-format
*************** msgstr "Warnen, wenn eine Klasse neudekl
*** 2196,2202 ****
  #: c-family/c.opt:1019
  #, no-c-format
  msgid "Warn about declarations of entities that may be missing attributes that related entities have been declared with."
! msgstr "Bei Deklarationen von Entitys warnen, in denen Attribute fehlen, die bei verwandten Entitys jedoch angegeben wurden."
  
  #: c-family/c.opt:1024
  #, no-c-format
--- 2196,2202 ----
  #: c-family/c.opt:1019
  #, no-c-format
  msgid "Warn about declarations of entities that may be missing attributes that related entities have been declared with."
! msgstr "Bei Deklarationen von EntitÃ¤ten warnen, in denen Attribute fehlen, die bei verwandten EntitÃ¤ten jedoch angegeben wurden."
  
  #: c-family/c.opt:1024
  #, no-c-format
*************** msgstr "Bei direkter Mehrfachvererbung w
*** 2261,2267 ****
  #: c-family/c.opt:1079
  #, no-c-format
  msgid "Warn about unsafe macros expanding to multiple statements used as a body of a clause such as if, else, while, switch, or for."
! msgstr "Warnen bei unsicheren Makros, die zu mehreren Anweisungen expandiert werden und innerhalb eines if, else, while, switch oder for verwendet werden."
  
  #: c-family/c.opt:1083
  #, no-c-format
--- 2261,2267 ----
  #: c-family/c.opt:1079
  #, no-c-format
  msgid "Warn about unsafe macros expanding to multiple statements used as a body of a clause such as if, else, while, switch, or for."
! msgstr "Warnen bei unsicheren Makros, die zu mehreren Anweisungen expandieren und als KÃ¶rper bei if, else, while, switch oder for verwendet werden."
  
  #: c-family/c.opt:1083
  #, no-c-format
*************** msgstr "Bei Â»externÂ«-Deklarationen auÃ
*** 2281,2287 ****
  #: c-family/c.opt:1095
  #, no-c-format
  msgid "Warn when a noexcept expression evaluates to false even though the expression can't actually throw."
! msgstr "Warnen, wenn ein Â»noexceptÂ«-Ausdruck zu Â»falschÂ« auswertet, obwohl der Ausdruck nicht werfen kann."
  
  #: c-family/c.opt:1099
  #, no-c-format
--- 2281,2287 ----
  #: c-family/c.opt:1095
  #, no-c-format
  msgid "Warn when a noexcept expression evaluates to false even though the expression can't actually throw."
! msgstr "Warnen, wenn ein Â»noexceptÂ«-Ausdruck zu Â»falseÂ« auswertet, obwohl der Ausdruck nicht werfen kann."
  
  #: c-family/c.opt:1099
  #, no-c-format
*************** msgstr "Bei nicht-virtuellen Destruktore
*** 2301,2307 ****
  #: c-family/c.opt:1111
  #, no-c-format
  msgid "Warn about NULL being passed to argument slots marked as requiring non-NULL."
! msgstr "Warnen, wenn NULL an Argumentstellen, die als nicht-NULL erfordernd markiert sind, Ã¼bergeben wird."
  
  #: c-family/c.opt:1127
  #, no-c-format
--- 2301,2307 ----
  #: c-family/c.opt:1111
  #, no-c-format
  msgid "Warn about NULL being passed to argument slots marked as requiring non-NULL."
! msgstr "Warnen, wenn NULL an Parameter, die nicht-NULL erfordern, Ã¼bergeben wird."
  
  #: c-family/c.opt:1127
  #, no-c-format
*************** msgstr "Bei Arithmetik mit Funktionszeig
*** 2406,2412 ****
  #: c-family/c.opt:1239
  #, no-c-format
  msgid "Warn when a pointer differs in signedness in an assignment."
! msgstr "Warnen, wenn sich ein Zeiger im Vorzeichenbesitz in einer Zuweisung unterscheidet."
  
  #: c-family/c.opt:1243
  #, no-c-format
--- 2406,2412 ----
  #: c-family/c.opt:1239
  #, no-c-format
  msgid "Warn when a pointer differs in signedness in an assignment."
! msgstr "Warnen, wenn Zeiger zugewiesen werden, die auf Typen mit unterschiedlichem Vorzeichenbesitz zeigen."
  
  #: c-family/c.opt:1243
  #, no-c-format
*************** msgstr "Warnen, wenn der Compiler Code u
*** 2476,2487 ****
  #: c-family/c.opt:1295
  #, no-c-format
  msgid "Warn when an argument passed to a restrict-qualified parameter aliases with another argument."
! msgstr "Warnen, wenn ein Argument fÃ¼r einen Â»restrictÂ«-Parameter auch in einem anderen Argument vorkommt."
  
  #: c-family/c.opt:1300
  #, no-c-format
  msgid "Warn whenever void-returning functions return a non-void expressions, or a return expression is missing in a function not returning void."
! msgstr "Warnen, wenn Funktionen, die void zurÃ¼ckgeben, einen nicht-void-Ausdruck zurÃ¼ckgeben, oder ein RÃ¼ckgabeausdruck in einer Funktion fehlt, die nicht void zurÃ¼ckgibt."
  
  #: c-family/c.opt:1304
  #, no-c-format
--- 2476,2487 ----
  #: c-family/c.opt:1295
  #, no-c-format
  msgid "Warn when an argument passed to a restrict-qualified parameter aliases with another argument."
! msgstr "Warnen, wenn ein Argument fÃ¼r einen Â»restrictÂ«-Parameter ein anderes Argument Ã¼berlagert."
  
  #: c-family/c.opt:1300
  #, no-c-format
  msgid "Warn whenever void-returning functions return a non-void expressions, or a return expression is missing in a function not returning void."
! msgstr "Warnen, wenn eine Funktion mit RÃ¼ckgabetyp Â»voidÂ« einen nicht-void-Ausdruck zurÃ¼ckgibt, oder wenn eine Funktion mit RÃ¼ckgabetyp ungleich Â»voidÂ« keinen Wert zurÃ¼ckgibt."
  
  #: c-family/c.opt:1304
  #, no-c-format
*************** msgstr "Bei StandardrÃ¼ckgabetyp Â»intÂ«
*** 2491,2497 ****
  #: c-family/c.opt:1308
  #, no-c-format
  msgid "Warn on suspicious constructs involving reverse scalar storage order."
! msgstr "Bei verdÃ¤chtigen Konstrukten waren, an denen die umgekehrte skalare Speicherreihenfolge beteiligt ist."
  
  #: c-family/c.opt:1312
  #, no-c-format
--- 2491,2497 ----
  #: c-family/c.opt:1308
  #, no-c-format
  msgid "Warn on suspicious constructs involving reverse scalar storage order."
! msgstr "Bei verdÃ¤chtigen Konstrukten warnen, an denen die umgekehrte skalare Speicherreihenfolge beteiligt ist."
  
  #: c-family/c.opt:1312
  #, no-c-format
*************** msgstr "Warnen, wenn Schiebe-Anzahl nega
*** 2526,2532 ****
  #: c-family/c.opt:1340
  #, no-c-format
  msgid "Warn if shift count >= width of type."
! msgstr "Warnen, wenn Rechts-Schiebe-Anzahl >= Breite des Typs ist."
  
  #: c-family/c.opt:1344
  #, no-c-format
--- 2526,2532 ----
  #: c-family/c.opt:1340
  #, no-c-format
  msgid "Warn if shift count >= width of type."
! msgstr "Warnen, wenn Schiebe-Anzahl >= Breite des Typs ist."
  
  #: c-family/c.opt:1344
  #, no-c-format
*************** msgstr "Bei impliziten Typumwandlungen z
*** 2546,2552 ****
  #: c-family/c.opt:1360
  #, no-c-format
  msgid "Warn when overload promotes from unsigned to signed."
! msgstr "Warnen, wenn Ãœberladung zur Umwandlung von vorzeichenbehaftet zu vorzeichenlos fÃ¼hrt."
  
  #: c-family/c.opt:1364
  #, no-c-format
--- 2546,2552 ----
  #: c-family/c.opt:1360
  #, no-c-format
  msgid "Warn when overload promotes from unsigned to signed."
! msgstr "Warnen, wenn Ãœberladung zur Umwandlung von vorzeichenlos zu vorzeichenbehaftet fÃ¼hrt."
  
  #: c-family/c.opt:1364
  #, no-c-format
*************** msgstr "Warnen, wenn Deallokationsfunkti
*** 2556,2562 ****
  #: c-family/c.opt:1368
  #, no-c-format
  msgid "Warn about divisions of two sizeof operators when the first one is applied to an array and the divisor does not equal the size of the array element."
! msgstr "Bei Divisionen von zwei %<sizeof%>-Operatoren warnen, wenn der erste auf ein Array angewendet wird und der Divisor nicht die GrÃ¶ÃŸe des Arrayelements ist."
  
  #: c-family/c.opt:1373
  #, no-c-format
--- 2556,2562 ----
  #: c-family/c.opt:1368
  #, no-c-format
  msgid "Warn about divisions of two sizeof operators when the first one is applied to an array and the divisor does not equal the size of the array element."
! msgstr "Bei Divisionen von zwei Â»sizeofÂ«-Operatoren warnen, wenn der erste auf ein Array angewendet wird und der zweite nicht die GrÃ¶ÃŸe des Arrayelements ist."
  
  #: c-family/c.opt:1373
  #, no-c-format
*************** msgstr "Unter der Kontrolle des Object-S
*** 2612,2618 ****
  #: c-family/c.opt:1426
  #, no-c-format
  msgid "Warn about reading past the end of a source array in string manipulation functions like memchr and memcpy."
! msgstr "Warnen, wenn das Quellarray Ã¼ber das Ende hinaus gelesen wird, in Speicherfunktionen wie %<memchr%> und %<memcpy%>."
  
  #: c-family/c.opt:1430
  #, no-c-format
--- 2612,2618 ----
  #: c-family/c.opt:1426
  #, no-c-format
  msgid "Warn about reading past the end of a source array in string manipulation functions like memchr and memcpy."
! msgstr "Warnen, wenn das Quellarray Ã¼ber das Ende hinaus gelesen wird, in Speicherfunktionen wie Â»memchrÂ« und Â»memcpyÂ«."
  
  #: c-family/c.opt:1430
  #, no-c-format
*************** msgstr "Bei simple-template-id in einem
*** 2687,2693 ****
  #: c-family/c.opt:1491
  #, no-c-format
  msgid "Warn about templates naming TU-local entities in a module."
! msgstr "Warnen, wenn Templates TU-lokale Entitys innerhalb eines Moduls benennen."
  
  #: c-family/c.opt:1495
  #, no-c-format
--- 2687,2693 ----
  #: c-family/c.opt:1491
  #, no-c-format
  msgid "Warn about templates naming TU-local entities in a module."
! msgstr "Warnen, wenn Templates TU-lokale EntitÃ¤ten innerhalb eines Moduls benennen."
  
  #: c-family/c.opt:1495
  #, no-c-format
*************** msgstr "Bei Zugriffen auf ein innenliege
*** 2842,2848 ****
  #: c-family/c.opt:1661
  #, no-c-format
  msgid "A synonym for -std=c89 (for C) or -std=c++98 (for C++)."
! msgstr "Ein Synonym fÃ¼r -std=c89 (fÃ¼r C) oder -std=c++98 (fÃ¼r C++)."
  
  #: c-family/c.opt:1669
  #, no-c-format
--- 2842,2848 ----
  #: c-family/c.opt:1661
  #, no-c-format
  msgid "A synonym for -std=c89 (for C) or -std=c++98 (for C++)."
! msgstr "Ein Synonym fÃ¼r Â»-std=c89Â« (fÃ¼r C) oder Â»-std=c++98Â« (fÃ¼r C++)."
  
  #: c-family/c.opt:1669
  #, no-c-format
*************** msgstr "In GCC 15 entfernt. Dieser Schal
*** 2918,2924 ****
  #: c-family/c.opt:1823
  #, no-c-format
  msgid "Specify maximum error replay depth during recursive diagnosis of a constraint satisfaction failure."
! msgstr "Maximale Fehlerwiedergabetiefe wÃ¤hrend der rekursiven Diagnose eines Fehlschlags der Constraint-ErfÃ¼llung an."
  
  #: c-family/c.opt:1827
  #, no-c-format
--- 2918,2924 ----
  #: c-family/c.opt:1823
  #, no-c-format
  msgid "Specify maximum error replay depth during recursive diagnosis of a constraint satisfaction failure."
! msgstr "Maximale Fehlerwiedergabetiefe wÃ¤hrend der rekursiven Diagnose eines Fehlschlags der Constraint-ErfÃ¼llung angeben."
  
  #: c-family/c.opt:1827
  #, no-c-format
*************** msgstr "-fconstexpr-loop-limit=<Anzahl>\
*** 2953,2959 ****
  #: c-family/c.opt:1855
  #, no-c-format
  msgid "-fconstexpr-ops-limit=<number>\tSpecify maximum number of constexpr operations during a single constexpr evaluation."
! msgstr "-fconstexpr-ops-limit=<Anzahl>\tHÃ¶chstzahl der constexpr-Operationen pro einzelner Â»constexprÂ« angeben."
  
  #: c-family/c.opt:1859
  #, no-c-format
--- 2953,2959 ----
  #: c-family/c.opt:1855
  #, no-c-format
  msgid "-fconstexpr-ops-limit=<number>\tSpecify maximum number of constexpr operations during a single constexpr evaluation."
! msgstr "-fconstexpr-ops-limit=<Anzahl>\tHÃ¶chstzahl der constexpr-Operationen pro einzelner Â»constexprÂ«-Auswertung angeben."
  
  #: c-family/c.opt:1859
  #, no-c-format
*************** msgstr "Hierarchische Vergleiche ausgebe
*** 3018,3024 ****
  #: c-family/c.opt:1924
  #, no-c-format
  msgid "Note all candidates during overload resolution failure."
! msgstr "Wenn das AuflÃ¶sen von Ãœberladungen nicht eindeutig ist, alle Kandidaten auflisten."
  
  #: c-family/c.opt:1928
  #, no-c-format
--- 3018,3024 ----
  #: c-family/c.opt:1924
  #, no-c-format
  msgid "Note all candidates during overload resolution failure."
! msgstr "Wenn das AuflÃ¶sen von Ãœberladungen scheitert, alle Kandidaten auflisten."
  
  #: c-family/c.opt:1928
  #, no-c-format
*************** msgstr "-iwithprefixbefore <Verz>\t<Verz
*** 3568,3574 ****
  #: c-family/c.opt:2525
  #, no-c-format
  msgid "Do not search standard system include directories (those specified with -isystem will still be used)."
! msgstr "Standard-System-EinfÃ¼gepfade nicht durchsuchen (die mit -isystem angegebenen werden trotzdem noch verwendet)."
  
  #: c-family/c.opt:2529
  #, no-c-format
--- 3568,3574 ----
  #: c-family/c.opt:2525
  #, no-c-format
  msgid "Do not search standard system include directories (those specified with -isystem will still be used)."
! msgstr "Standard-System-EinfÃ¼gepfade nicht durchsuchen (die mit Â»-isystemÂ« angegebenen werden trotzdem noch verwendet)."
  
  #: c-family/c.opt:2529
  #, no-c-format
*************** msgstr "Mit dem ISO-C++-Standard von 201
*** 3598,3609 ****
  #: c-family/c.opt:2561
  #, no-c-format
  msgid "Deprecated in favor of -std=c++11."
! msgstr "Veraltet zugunsten von -std=c++11."
  
  #: c-family/c.opt:2565
  #, no-c-format
  msgid "Deprecated in favor of -std=c++14."
! msgstr "Veraltet zugunsten von -std=c++14."
  
  #: c-family/c.opt:2569
  #, no-c-format
--- 3598,3609 ----
  #: c-family/c.opt:2561
  #, no-c-format
  msgid "Deprecated in favor of -std=c++11."
! msgstr "Veraltet zugunsten von Â»-std=c++11Â«."
  
  #: c-family/c.opt:2565
  #, no-c-format
  msgid "Deprecated in favor of -std=c++14."
! msgstr "Veraltet zugunsten von Â»-std=c++14Â«."
  
  #: c-family/c.opt:2569
  #, no-c-format
*************** msgstr "Mit dem ISO-C++-Standard von 201
*** 3613,3619 ****
  #: c-family/c.opt:2573
  #, no-c-format
  msgid "Deprecated in favor of -std=c++17."
! msgstr "Veraltet zugunsten von -std=c++17."
  
  #: c-family/c.opt:2577
  #, no-c-format
--- 3613,3619 ----
  #: c-family/c.opt:2573
  #, no-c-format
  msgid "Deprecated in favor of -std=c++17."
! msgstr "Veraltet zugunsten von Â»-std=c++17Â«."
  
  #: c-family/c.opt:2577
  #, no-c-format
*************** msgstr "Mit dem ISO-C-Standard von 2011
*** 3643,3649 ****
  #: c-family/c.opt:2609
  #, no-c-format
  msgid "Deprecated in favor of -std=c11."
! msgstr "Veraltet zugunsten von -std=c11."
  
  #: c-family/c.opt:2613 c-family/c.opt:2617 c-family/c.opt:2771
  #: c-family/c.opt:2775
--- 3643,3649 ----
  #: c-family/c.opt:2609
  #, no-c-format
  msgid "Deprecated in favor of -std=c11."
! msgstr "Veraltet zugunsten von Â»-std=c11Â«."
  
  #: c-family/c.opt:2613 c-family/c.opt:2617 c-family/c.opt:2771
  #: c-family/c.opt:2775
*************** msgstr "Mit dem ISO-C-Standard von 2023
*** 3659,3665 ****
  #: c-family/c.opt:2625
  #, no-c-format
  msgid "Deprecated in favor of -std=c23."
! msgstr "Veraltet zugunsten von -std=c23."
  
  #: c-family/c.opt:2629
  #, no-c-format
--- 3659,3665 ----
  #: c-family/c.opt:2625
  #, no-c-format
  msgid "Deprecated in favor of -std=c23."
! msgstr "Veraltet zugunsten von Â»-std=c23Â«."
  
  #: c-family/c.opt:2629
  #, no-c-format
*************** msgstr "Mit dem ISO-C-Standard von 1999
*** 3679,3685 ****
  #: c-family/c.opt:2645
  #, no-c-format
  msgid "Deprecated in favor of -std=c99."
! msgstr "Veraltet zugunsten von -std=c99."
  
  #: c-family/c.opt:2649 c-family/c.opt:2654
  #, no-c-format
--- 3679,3685 ----
  #: c-family/c.opt:2645
  #, no-c-format
  msgid "Deprecated in favor of -std=c99."
! msgstr "Veraltet zugunsten von Â»-std=c99Â«."
  
  #: c-family/c.opt:2649 c-family/c.opt:2654
  #, no-c-format
*************** msgstr "Mit dem ISO-C++-Standard von 201
*** 3694,3705 ****
  #: c-family/c.opt:2663
  #, no-c-format
  msgid "Deprecated in favor of -std=gnu++11."
! msgstr "Veraltet zugunsten von -std=gnu++11."
  
  #: c-family/c.opt:2667
  #, no-c-format
  msgid "Deprecated in favor of -std=gnu++14."
! msgstr "Veraltet zugunsten von -std=gnu++14."
  
  #: c-family/c.opt:2671
  #, no-c-format
--- 3694,3705 ----
  #: c-family/c.opt:2663
  #, no-c-format
  msgid "Deprecated in favor of -std=gnu++11."
! msgstr "Veraltet zugunsten von Â»-std=gnu++11Â«."
  
  #: c-family/c.opt:2667
  #, no-c-format
  msgid "Deprecated in favor of -std=gnu++14."
! msgstr "Veraltet zugunsten von Â»-std=gnu++14Â«."
  
  #: c-family/c.opt:2671
  #, no-c-format
*************** msgstr "Mit dem ISO-C++-Standard von 201
*** 3709,3715 ****
  #: c-family/c.opt:2675
  #, no-c-format
  msgid "Deprecated in favor of -std=gnu++17."
! msgstr "Veraltet zugunsten von -std=gnu++17."
  
  #: c-family/c.opt:2679
  #, no-c-format
--- 3709,3715 ----
  #: c-family/c.opt:2675
  #, no-c-format
  msgid "Deprecated in favor of -std=gnu++17."
! msgstr "Veraltet zugunsten von Â»-std=gnu++17Â«."
  
  #: c-family/c.opt:2679
  #, no-c-format
*************** msgstr "Mit dem ISO-C-Standard von von 2
*** 3739,3745 ****
  #: c-family/c.opt:2711
  #, no-c-format
  msgid "Deprecated in favor of -std=gnu11."
! msgstr "Veraltet zugunsten von -std=gnu11."
  
  #: c-family/c.opt:2715 c-family/c.opt:2719
  #, no-c-format
--- 3739,3745 ----
  #: c-family/c.opt:2711
  #, no-c-format
  msgid "Deprecated in favor of -std=gnu11."
! msgstr "Veraltet zugunsten von Â»-std=gnu11Â«."
  
  #: c-family/c.opt:2715 c-family/c.opt:2719
  #, no-c-format
*************** msgstr "Mit dem ISO-C-Standard von 2023
*** 3754,3760 ****
  #: c-family/c.opt:2727
  #, no-c-format
  msgid "Deprecated in favor of -std=gnu23."
! msgstr "Veraltet zugunsten von -std=gnu23."
  
  #: c-family/c.opt:2731
  #, no-c-format
--- 3754,3760 ----
  #: c-family/c.opt:2727
  #, no-c-format
  msgid "Deprecated in favor of -std=gnu23."
! msgstr "Veraltet zugunsten von Â»-std=gnu23Â«."
  
  #: c-family/c.opt:2731
  #, no-c-format
*************** msgstr "Mit dem ISO-C-Standard von von 1
*** 3774,3780 ****
  #: c-family/c.opt:2747
  #, no-c-format
  msgid "Deprecated in favor of -std=gnu99."
! msgstr "Veraltet zugunsten von -std=gnu99."
  
  #: c-family/c.opt:2755
  #, no-c-format
--- 3774,3780 ----
  #: c-family/c.opt:2747
  #, no-c-format
  msgid "Deprecated in favor of -std=gnu99."
! msgstr "Veraltet zugunsten von Â»-std=gnu99Â«."
  
  #: c-family/c.opt:2755
  #, no-c-format
*************** msgstr "Mit dem ISO-C-Standard von 1990,
*** 3784,3790 ****
  #: c-family/c.opt:2763
  #, no-c-format
  msgid "Deprecated in favor of -std=iso9899:1999."
! msgstr "Veraltet zugunsten von -std=iso9899:1999."
  
  #: c-family/c.opt:2783
  #, no-c-format
--- 3784,3790 ----
  #: c-family/c.opt:2763
  #, no-c-format
  msgid "Deprecated in favor of -std=iso9899:1999."
! msgstr "Veraltet zugunsten von Â»-std=iso9899:1999Â«."
  
  #: c-family/c.opt:2783
  #, no-c-format
*************** msgstr "-trigraphs\tTrigraphen nach ISO
*** 3806,3877 ****
  msgid "Do not predefine system-specific and GCC-specific macros."
  msgstr "Keine system- oder GCC-spezifischen Makros vordefinieren."
  
! #: cobol/lang.opt:43
  #, no-c-format
  msgid "Accept COBOL constructs used by non-ISO compilers"
  msgstr "COBOL-Konstrukte, die von Nicht-ISO-Compilern verwendet werden, akzeptieren"
  
! #: cobol/lang.opt:62
  #, no-c-format
  msgid "-fcobol-exceptions=<n>\tEnable some exceptions by default"
  msgstr "-fcobol-exceptions=<n>\tEinige Ausnahmen standardmÃ¤ÃŸig aktivieren"
  
! #: cobol/lang.opt:66
  #, no-c-format
  msgid "Define alternative implicit copybook filename extension"
  msgstr "Alternative implizite Kopierbuch-Dateinamenerweiterung definieren"
  
! #: cobol/lang.opt:70
  #, no-c-format
  msgid "Set Working-Storage data items to the supplied value"
  msgstr "Working-Storage-Datenelemente auf den angegebenen Wert setzen"
  
! #: cobol/lang.opt:74
  #, no-c-format
  msgid "Enable Cobol lex debugging"
  msgstr "Cobol-Lex-Debugging einschalten"
  
! #: cobol/lang.opt:86
  #, no-c-format
  msgid "-findicator-column=<n>\tColumn after which Region A begins"
  msgstr "-findicator-column=<n>\tSpalte, nach der Region A beginnt"
  
! #: cobol/lang.opt:90
  #, no-c-format
  msgid "-finternal-ebcdic\tInternal processing is in EBCDIC Code Page 1140"
  msgstr "-finternal-ebcdic\tDie interne Verarbeitung erfolgt in EBCDIC-Codepage 1140"
  
! #: cobol/lang.opt:94
  #, no-c-format
  msgid "Enable/disable static linkage for CALL literals"
  msgstr "Einschalten/Ausschalten der statischen Bindung fÃ¼r CALL-Literale"
  
! #: cobol/lang.opt:98
  #, no-c-format
  msgid "Enable Cobol parser debugging"
  msgstr "Fehlersuche im Cobol-Parser einschalten"
  
! #: cobol/lang.opt:102
  #, no-c-format
  msgid "Enable Cobol yacc debugging"
  msgstr "Fehlersuche im Cobol-Yacc einschalten"
  
! #: cobol/lang.opt:106
  #, no-c-format
  msgid "preprocess <source_filter> before compiling"
  msgstr "<source_filter> vor der Kompilierung vorverarbeiten"
  
! #: cobol/lang.opt:126
  #, no-c-format
  msgid "-main\tThe first program-id in the next source file is called by a generated main() entry point"
  msgstr "-main\tDie erste Programm-ID in der nÃ¤chsten Quelldatei wird von einem generierten main()-Einstiegspunkt aufgerufen"
  
! #: cobol/lang.opt:130
  #, no-c-format
  msgid "-main=<source_file> source_file/PROGRAM-ID is called by the generated main()"
  msgstr "-main=<Quelldatei> Quelldatei/PROGRAMM-ID wird von der generierten main() aufgerufen"
  
! #: cobol/lang.opt:134
  #, no-c-format
  msgid "-nomain\tNo main() function is created from COBOL source files"
  msgstr "-nomain\tEs wird keine main()-Funktion aus COBOL-Quelldateien erstellt"
--- 3806,3877 ----
  msgid "Do not predefine system-specific and GCC-specific macros."
  msgstr "Keine system- oder GCC-spezifischen Makros vordefinieren."
  
! #: cobol/lang.opt:48
  #, no-c-format
  msgid "Accept COBOL constructs used by non-ISO compilers"
  msgstr "COBOL-Konstrukte, die von Nicht-ISO-Compilern verwendet werden, akzeptieren"
  
! #: cobol/lang.opt:67
  #, no-c-format
  msgid "-fcobol-exceptions=<n>\tEnable some exceptions by default"
  msgstr "-fcobol-exceptions=<n>\tEinige Ausnahmen standardmÃ¤ÃŸig aktivieren"
  
! #: cobol/lang.opt:71
  #, no-c-format
  msgid "Define alternative implicit copybook filename extension"
  msgstr "Alternative implizite Kopierbuch-Dateinamenerweiterung definieren"
  
! #: cobol/lang.opt:75
  #, no-c-format
  msgid "Set Working-Storage data items to the supplied value"
  msgstr "Working-Storage-Datenelemente auf den angegebenen Wert setzen"
  
! #: cobol/lang.opt:79
  #, no-c-format
  msgid "Enable Cobol lex debugging"
  msgstr "Cobol-Lex-Debugging einschalten"
  
! #: cobol/lang.opt:91
  #, no-c-format
  msgid "-findicator-column=<n>\tColumn after which Region A begins"
  msgstr "-findicator-column=<n>\tSpalte, nach der Region A beginnt"
  
! #: cobol/lang.opt:95
  #, no-c-format
  msgid "-finternal-ebcdic\tInternal processing is in EBCDIC Code Page 1140"
  msgstr "-finternal-ebcdic\tDie interne Verarbeitung erfolgt in EBCDIC-Codepage 1140"
  
! #: cobol/lang.opt:99
  #, no-c-format
  msgid "Enable/disable static linkage for CALL literals"
  msgstr "Einschalten/Ausschalten der statischen Bindung fÃ¼r CALL-Literale"
  
! #: cobol/lang.opt:103
  #, no-c-format
  msgid "Enable Cobol parser debugging"
  msgstr "Fehlersuche im Cobol-Parser einschalten"
  
! #: cobol/lang.opt:107
  #, no-c-format
  msgid "Enable Cobol yacc debugging"
  msgstr "Fehlersuche im Cobol-Yacc einschalten"
  
! #: cobol/lang.opt:111
  #, no-c-format
  msgid "preprocess <source_filter> before compiling"
  msgstr "<source_filter> vor der Kompilierung vorverarbeiten"
  
! #: cobol/lang.opt:131
  #, no-c-format
  msgid "-main\tThe first program-id in the next source file is called by a generated main() entry point"
  msgstr "-main\tDie erste Programm-ID in der nÃ¤chsten Quelldatei wird von einem generierten main()-Einstiegspunkt aufgerufen"
  
! #: cobol/lang.opt:135
  #, no-c-format
  msgid "-main=<source_file> source_file/PROGRAM-ID is called by the generated main()"
  msgstr "-main=<Quelldatei> Quelldatei/PROGRAMM-ID wird von der generierten main() aufgerufen"
  
! #: cobol/lang.opt:139
  #, no-c-format
  msgid "-nomain\tNo main() function is created from COBOL source files"
  msgstr "-nomain\tEs wird keine main()-Funktion aus COBOL-Quelldateien erstellt"
*************** msgstr "Quellcode-Abdeckungsverpflichtun
*** 3884,3890 ****
  #: ada/gcc-interface/lang.opt:65
  #, no-c-format
  msgid "Synonym of -gnatk8."
! msgstr "Synonym fÃ¼r -gnatk8."
  
  #: ada/gcc-interface/lang.opt:73
  #, no-c-format
--- 3884,3890 ----
  #: ada/gcc-interface/lang.opt:65
  #, no-c-format
  msgid "Synonym of -gnatk8."
! msgstr "Synonym fÃ¼r Â»-gnatk8Â«."
  
  #: ada/gcc-interface/lang.opt:73
  #, no-c-format
*************** msgstr "den C-PrÃ¤prozessor verwenden, u
*** 4314,4320 ****
  #: m2/lang.opt:79 m2/lang.opt:83
  #, no-c-format
  msgid "passed to the preprocessor if -fcpp is used (internal switch)"
! msgstr "wird an den PrÃ¤prozessor weitergereicht, wenn -fcpp verwendet wird (interne Option)"
  
  #: m2/lang.opt:87
  #, no-c-format
--- 4314,4320 ----
  #: m2/lang.opt:79 m2/lang.opt:83
  #, no-c-format
  msgid "passed to the preprocessor if -fcpp is used (internal switch)"
! msgstr "wird an den PrÃ¤prozessor weitergereicht, wenn Â»-fcppÂ« verwendet wird (interne Option)"
  
  #: m2/lang.opt:87
  #, no-c-format
*************** msgstr "erzwingen, dass MOD stets positi
*** 4489,4495 ****
  #: m2/lang.opt:227
  #, no-c-format
  msgid "link against the pthread library (default on)"
! msgstr "mit der pthread-Bibliothek Ã¼bersetzen (Vorgabe: ein)"
  
  #: m2/lang.opt:231
  #, no-c-format
--- 4489,4495 ----
  #: m2/lang.opt:227
  #, no-c-format
  msgid "link against the pthread library (default on)"
! msgstr "mit der pthread-Bibliothek binden (Vorgabe: ein)"
  
  #: m2/lang.opt:231
  #, no-c-format
*************** msgstr "eine gemeinsam genutzte Biblioth
*** 4539,4545 ****
  #: m2/lang.opt:271
  #, no-c-format
  msgid "turns on all software runtime checking (an abbreviation for -fnil -frange -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue)"
! msgstr "alle Software-LaufzeitÃ¼berprÃ¼fungen einschalten (das ist die AbkÃ¼rzung fÃ¼r -fnil -frange -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue)"
  
  #: m2/lang.opt:275
  #, no-c-format
--- 4539,4545 ----
  #: m2/lang.opt:271
  #, no-c-format
  msgid "turns on all software runtime checking (an abbreviation for -fnil -frange -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue)"
! msgstr "alle Software-LaufzeitÃ¼berprÃ¼fungen einschalten (das ist die AbkÃ¼rzung fÃ¼r Â»-fnil -frange -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalueÂ«)"
  
  #: m2/lang.opt:275
  #, no-c-format
*************** msgstr "Funktionen, die Werte zurÃ¼ckgeb
*** 4644,4650 ****
  #: go/lang.opt:90
  #, no-c-format
  msgid "Emit debugging information related to the escape analysis pass when run with -fgo-optimize-allocs."
! msgstr "Debuginformation fÃ¼r den Escape-Analyse-Durchlauf ausgeben, wenn mit -fgo-optimize-allocs aufgerufen."
  
  #: go/lang.opt:94
  #, no-c-format
--- 4644,4650 ----
  #: go/lang.opt:90
  #, no-c-format
  msgid "Emit debugging information related to the escape analysis pass when run with -fgo-optimize-allocs."
! msgstr "Debuginformation fÃ¼r den Escape-Analyse-Durchlauf ausgeben, wenn mit Â»-fgo-optimize-allocsÂ« aufgerufen."
  
  #: go/lang.opt:94
  #, no-c-format
*************** msgstr "Little-Endian-Code erzeugen."
*** 5179,5185 ****
  #: config/mcore/mcore.opt:56 config/fr30/fr30.opt:27
  #, no-c-format
  msgid "Assume that run-time support has been provided, so omit -lsim from the linker command line."
! msgstr "Annehmen, dass LaufzeitunterstÃ¼tzung vorhanden ist, und daher -lsim von Linker-Kommandozeile auslassen."
  
  #: config/mcore/mcore.opt:60
  #, no-c-format
--- 5179,5185 ----
  #: config/mcore/mcore.opt:56 config/fr30/fr30.opt:27
  #, no-c-format
  msgid "Assume that run-time support has been provided, so omit -lsim from the linker command line."
! msgstr "Annehmen, dass LaufzeitunterstÃ¼tzung vorhanden ist, und daher Â»-lsimÂ« von Binder-Kommandozeile auslassen."
  
  #: config/mcore/mcore.opt:60
  #, no-c-format
*************** msgstr "Codeerzeugung von Stummeln fÃ¼r
*** 5349,5355 ****
  #: config/darwin.opt:92
  #, no-c-format
  msgid "-mtarget-linker <version>\tSpecify that ld64 <version> is the toolchain linker for the current invocation."
! msgstr "-mtarget-linker <Version>\tld64 <Version> als Toolchain-Linker fÃ¼r den aktuellen Aufruf festlegen."
  
  #: config/darwin.opt:98
  #, no-c-format
--- 5349,5355 ----
  #: config/darwin.opt:92
  #, no-c-format
  msgid "-mtarget-linker <version>\tSpecify that ld64 <version> is the toolchain linker for the current invocation."
! msgstr "-mtarget-linker <Version>\tld64 <Version> als Toolchain-Binder fÃ¼r den aktuellen Aufruf festlegen."
  
  #: config/darwin.opt:98
  #, no-c-format
*************** msgstr "-client_name <Name>\tErlauben, d
*** 5399,5405 ****
  #: config/darwin.opt:134
  #, no-c-format
  msgid "-compatibility_version <number>\tSet the version for the client interface.  Client programs must record a value less than or equal to <number>, or the binding will fail at runtime."
! msgstr "-compatibility_version <Nummer>\tMinimale Version fÃ¼r das Client-Interface festlegen. Clients mÃ¼ssen diese <Nummer> oder eine grÃ¶ÃŸere angeben, oder das Binden wird zur Laufzeit fehlschlagen."
  
  #: config/darwin.opt:138
  #, no-c-format
--- 5399,5405 ----
  #: config/darwin.opt:134
  #, no-c-format
  msgid "-compatibility_version <number>\tSet the version for the client interface.  Client programs must record a value less than or equal to <number>, or the binding will fail at runtime."
! msgstr "-compatibility_version <Nummer>\tMinimale Version fÃ¼r das Client-Interface festlegen. Clients mÃ¼ssen diese <Nummer> oder eine grÃ¶ÃŸere angeben, oder das Binden wird zur Laufzeit scheitern."
  
  #: config/darwin.opt:138
  #, no-c-format
*************** msgstr "Code und Daten, die unerreichbar
*** 5414,5420 ****
  #: config/darwin.opt:146
  #, no-c-format
  msgid "-dylib_file install_name:file_name\tThis allows linking of a dylib with \"install_name\" but to be found in a different install position \"file_name\""
! msgstr "-dylib_file Installationsname:Dateiname\tDies ermÃ¶glicht die VerknÃ¼pfung einer Dylib mit Â»InstallationsnameÂ«, die aber in einer anderen Installationsposition Â»DateinameÂ« zu finden ist"
  
  #: config/darwin.opt:150
  #, no-c-format
--- 5414,5420 ----
  #: config/darwin.opt:146
  #, no-c-format
  msgid "-dylib_file install_name:file_name\tThis allows linking of a dylib with \"install_name\" but to be found in a different install position \"file_name\""
! msgstr "-dylib_file Installationsname:Dateiname\tDies ermÃ¶glicht das Binden einer Dylib mit Â»InstallationsnameÂ«, die aber in einer anderen Installationsposition Â»DateinameÂ« zu finden ist"
  
  #: config/darwin.opt:150
  #, no-c-format
*************** msgstr "Eine gemeinsam genutzte Mach-O-B
*** 5439,5445 ****
  #: config/darwin.opt:166
  #, no-c-format
  msgid "-exported_symbols_list <filename>\tExport global symbols in <filename> in linked output file; any symbols not mentioned will be treated as \"hidden\"."
! msgstr "-exported_symbols_list <Dateiname>\tGlobale Symbole in <Dateiname> werden aus der gelinkten Ausgabedatei exportiert, alle nicht erwÃ¤hnten Symbole werden als versteckt behandelt."
  
  #: config/darwin.opt:170
  #, no-c-format
--- 5439,5445 ----
  #: config/darwin.opt:166
  #, no-c-format
  msgid "-exported_symbols_list <filename>\tExport global symbols in <filename> in linked output file; any symbols not mentioned will be treated as \"hidden\"."
! msgstr "-exported_symbols_list <Dateiname>\tGlobale Symbole in <Dateiname> werden aus der gebundenen Ausgabedatei exportiert, alle nicht erwÃ¤hnten Symbole werden als versteckt behandelt."
  
  #: config/darwin.opt:170
  #, no-c-format
*************** msgstr "Den normalen zweistufigen Namens
*** 5459,5465 ****
  #: config/darwin.opt:182
  #, no-c-format
  msgid "For the assembler (and linker) permit any architecture sub-variant to be used without error."
! msgstr "Dem Assembler (und Linker) erlauben, jede beliebige Architektur-Untervariante ohne Fehler zu verwenden."
  
  #: config/darwin.opt:186
  #, no-c-format
--- 5459,5465 ----
  #: config/darwin.opt:182
  #, no-c-format
  msgid "For the assembler (and linker) permit any architecture sub-variant to be used without error."
! msgstr "Dem Assembler (und Binder) erlauben, jede beliebige Architektur-Untervariante ohne Fehler zu verwenden."
  
  #: config/darwin.opt:186
  #, no-c-format
*************** msgstr "Das Ausgabeobjekt so festlegen,
*** 5469,5475 ****
  #: config/darwin.opt:190
  #, no-c-format
  msgid "-framework <name>\tThe linker should search for the framework <name> in the framework search path."
! msgstr "-framework <Name>\tDas Framework <Name> im Pfad fÃ¼r Frameworks suchen."
  
  #: config/darwin.opt:198
  #, no-c-format
--- 5469,5475 ----
  #: config/darwin.opt:190
  #, no-c-format
  msgid "-framework <name>\tThe linker should search for the framework <name> in the framework search path."
! msgstr "-framework <Name>\tDer Binder sollte das Framework <Name> im Suchpfad fÃ¼r Frameworks suchen."
  
  #: config/darwin.opt:198
  #, no-c-format
*************** msgstr "-install_name <Name>\tLegt den I
*** 5504,5510 ****
  #: config/darwin.opt:222
  #, no-c-format
  msgid "Usually \"private extern\" (hidden) symbols are made local when linking, this command suppresses that such that they remain exported."
! msgstr "Normalerweise werden Symbole, die Â»private externÂ« (versteckt) sind, beim Linken lokal gemacht. Dieser Befehl unterdrÃ¼ckt das, so dass sie exportiert bleiben."
  
  #: config/darwin.opt:226
  #, no-c-format
--- 5504,5510 ----
  #: config/darwin.opt:222
  #, no-c-format
  msgid "Usually \"private extern\" (hidden) symbols are made local when linking, this command suppresses that such that they remain exported."
! msgstr "Normalerweise werden Symbole, die Â»private externÂ« (versteckt) sind, beim Binden lokal gemacht. Dieser Befehl unterdrÃ¼ckt das, so dass sie exportiert bleiben."
  
  #: config/darwin.opt:226
  #, no-c-format
*************** msgstr "(Obsolet nach 10.4) -multiply_de
*** 5524,5530 ****
  #: config/darwin.opt:238
  #, no-c-format
  msgid "(Obsolete) Current linkers never dead-strip these items, so the option is not needed."
! msgstr "(Obsolet) Aktuelle Linker entfernen diese Elemente nie, daher wird diese Option nicht benÃ¶tigt."
  
  #: config/darwin.opt:242
  #, no-c-format
--- 5524,5530 ----
  #: config/darwin.opt:238
  #, no-c-format
  msgid "(Obsolete) Current linkers never dead-strip these items, so the option is not needed."
! msgstr "(Obsolet) Aktuelle Binder entfernen diese Elemente nie, daher wird diese Option nicht benÃ¶tigt."
  
  #: config/darwin.opt:242
  #, no-c-format
*************** msgstr "Erzeugt eine Mach-O-Datei, die f
*** 5569,5580 ****
  #: config/darwin.opt:291
  #, no-c-format
  msgid "(Obsolete) Allowed linking to proceed with \"-flat_namespace\" when a linked bundle contained a symbol also exported from the main executable."
! msgstr "(Obsolet) Erlaubte das Verlinken mit Â»-flat_namespaceÂ« fortzusetzen, wenn ein verlinktes Bundle ein Symbol enthÃ¤lt, das ebenfalls aus der HauptausfÃ¼hrungsdatei exportiert wurde."
  
  #: config/darwin.opt:298
  #, no-c-format
  msgid "Synonym for \"-export-dynamic\" for linker versions that support it."
! msgstr "Synonym fÃ¼r Â»-export-dynamicÂ« fÃ¼r Linker-Versionen, die dies unterstÃ¼tzen."
  
  #: config/darwin.opt:302
  #, no-c-format
--- 5569,5580 ----
  #: config/darwin.opt:291
  #, no-c-format
  msgid "(Obsolete) Allowed linking to proceed with \"-flat_namespace\" when a linked bundle contained a symbol also exported from the main executable."
! msgstr "(Obsolet) Erlaubte das Binden mit Â»-flat_namespaceÂ« fortzusetzen, wenn ein gebundenes Bundle ein Symbol enthÃ¤lt, das ebenfalls aus der HauptausfÃ¼hrungsdatei exportiert wurde."
  
  #: config/darwin.opt:298
  #, no-c-format
  msgid "Synonym for \"-export-dynamic\" for linker versions that support it."
! msgstr "Synonym fÃ¼r Â»-export-dynamicÂ« fÃ¼r Binder-Versionen, die dies unterstÃ¼tzen."
  
  #: config/darwin.opt:302
  #, no-c-format
*************** msgstr "-seg_addr_table <Datei>\tBasisad
*** 5609,5615 ****
  #: config/darwin.opt:327
  #, no-c-format
  msgid "(Obsolete, ld_classic only) -seg_addr_table_filename <path>."
! msgstr "(Obsolet, nur ld_classic) -seg_addr_table_filename <Pfad>."
  
  #: config/darwin.opt:331
  #, no-c-format
--- 5609,5615 ----
  #: config/darwin.opt:327
  #, no-c-format
  msgid "(Obsolete, ld_classic only) -seg_addr_table_filename <path>."
! msgstr "(Obsolet, nur ld_classic) Â»-seg_addr_table_filename <Pfad>Â«."
  
  #: config/darwin.opt:331
  #, no-c-format
*************** msgstr "-unexported_symbols_list <Datei>
*** 5689,5695 ****
  #: config/darwin.opt:392
  #, no-c-format
  msgid "-weak_framework <framework>\tMake a weak link to the specified framework."
! msgstr "-weak_framework <framework>\tEine schwache VerknÃ¼pfung zu dem angegebenen Rahmenwerk herstellen."
  
  #: config/darwin.opt:396
  #, no-c-format
--- 5689,5695 ----
  #: config/darwin.opt:392
  #, no-c-format
  msgid "-weak_framework <framework>\tMake a weak link to the specified framework."
! msgstr "-weak_framework <framework>\tEine schwache Bindung zu dem angegebenen Rahmenwerk herstellen."
  
  #: config/darwin.opt:396
  #, no-c-format
*************** msgstr "-weak_reference_mismatches <Ausw
*** 5699,5705 ****
  #: config/darwin.opt:400
  #, no-c-format
  msgid "Logs which object files the linker loads."
! msgstr "Die vom Linker geladenen Objektdateien wegschreiben."
  
  #: config/darwin.opt:404
  #, no-c-format
--- 5699,5705 ----
  #: config/darwin.opt:400
  #, no-c-format
  msgid "Logs which object files the linker loads."
! msgstr "Die vom Binder geladenen Objektdateien wegschreiben."
  
  #: config/darwin.opt:404
  #, no-c-format
*************** msgstr "ID-basierte Shared Library einsc
*** 5754,5760 ****
  #: config/bfin/bfin.opt:69
  #, no-c-format
  msgid "Generate code that won't be linked against any other ID shared libraries, but may be used as a shared library."
! msgstr "Code erzeugen, der nicht mit anderen ID-shared Libraries gelinkt werden wÃ¼rde, aber als Shared Library verwendet werden kann."
  
  #: config/bfin/bfin.opt:74 config/m68k/m68k.opt:180
  #, no-c-format
--- 5754,5760 ----
  #: config/bfin/bfin.opt:69
  #, no-c-format
  msgid "Generate code that won't be linked against any other ID shared libraries, but may be used as a shared library."
! msgstr "Code erzeugen, der nicht mit anderen ID-shared Libraries gebunden werden wÃ¼rde, aber als Shared Library verwendet werden kann."
  
  #: config/bfin/bfin.opt:74 config/m68k/m68k.opt:180
  #, no-c-format
*************** msgstr "Erzeugung PC-relativer Aufrufe v
*** 5774,5780 ****
  #: config/bfin/bfin.opt:86
  #, no-c-format
  msgid "Link with the fast floating-point library."
! msgstr "Mit schneller Gleitkomma-Bibliothek linken."
  
  #: config/bfin/bfin.opt:90 config/arm/arm.opt:345 config/frv/frv.opt:130
  #, no-c-format
--- 5774,5780 ----
  #: config/bfin/bfin.opt:86
  #, no-c-format
  msgid "Link with the fast floating-point library."
! msgstr "Mit schneller Gleitkomma-Bibliothek binden."
  
  #: config/bfin/bfin.opt:90 config/arm/arm.opt:345 config/frv/frv.opt:130
  #, no-c-format
*************** msgstr "Annahme, dass ICPLBs zur Laufzei
*** 5819,5835 ****
  #: config/m68k/m68k-tables.opt:25
  #, no-c-format
  msgid "Known M68K CPUs (for use with the -mcpu= option):"
! msgstr "Bekannte M68K-CPUs (fÃ¼r Verwendung mit Option -mcpu=):"
  
  #: config/m68k/m68k-tables.opt:365
  #, no-c-format
  msgid "Known M68K microarchitectures (for use with the -mtune= option):"
! msgstr "Bekannte M68K-Mikroarchitekturen (fÃ¼r Verwendung mit Option -mtune=):"
  
  #: config/m68k/m68k-tables.opt:411
  #, no-c-format
  msgid "Known M68K ISAs (for use with the -march= option):"
! msgstr "Bekannte M68K-ISAs (fÃ¼r Verwendung mit Option -march=):"
  
  #: config/m68k/ieee.opt:24 config/i386/i386.opt:389
  #, no-c-format
--- 5819,5835 ----
  #: config/m68k/m68k-tables.opt:25
  #, no-c-format
  msgid "Known M68K CPUs (for use with the -mcpu= option):"
! msgstr "Bekannte M68K-CPUs (fÃ¼r Verwendung mit der Option Â»-mcpu=Â«):"
  
  #: config/m68k/m68k-tables.opt:365
  #, no-c-format
  msgid "Known M68K microarchitectures (for use with the -mtune= option):"
! msgstr "Bekannte M68K-Mikroarchitekturen (fÃ¼r Verwendung mit der Option Â»-mtune=Â«):"
  
  #: config/m68k/m68k-tables.opt:411
  #, no-c-format
  msgid "Known M68K ISAs (for use with the -march= option):"
! msgstr "Bekannte M68K-ISAs (fÃ¼r Verwendung mit der Option Â»-march=Â«):"
  
  #: config/m68k/ieee.opt:24 config/i386/i386.opt:389
  #, no-c-format
*************** msgstr "-mbranch-cost=N\tSprungkosten au
*** 6057,6063 ****
  #: config/riscv/riscv.opt:38
  #, no-c-format
  msgid "This option is deprecated; use -fplt or -fno-plt instead."
! msgstr "Diese Option ist veraltet; verwenden Sie stattdessen -fplt oder -fno-plt."
  
  #: config/riscv/riscv.opt:42
  #, no-c-format
--- 6057,6063 ----
  #: config/riscv/riscv.opt:38
  #, no-c-format
  msgid "This option is deprecated; use -fplt or -fno-plt instead."
! msgstr "Diese Option ist veraltet; verwenden Sie stattdessen Â»-fpltÂ« oder Â»-fno-pltÂ«."
  
  #: config/riscv/riscv.opt:42
  #, no-c-format
*************** msgstr "Versuch, den Stapel an dieser Po
*** 6072,6078 ****
  #: config/riscv/riscv.opt:50
  #, no-c-format
  msgid "Supported ABIs (for use with the -mabi= option):"
! msgstr "UnterstÃ¼tzte ABIs (fÃ¼r Verwendung mit Option Â»-mabi=Â«):"
  
  #: config/riscv/riscv.opt:78
  #, no-c-format
--- 6072,6078 ----
  #: config/riscv/riscv.opt:50
  #, no-c-format
  msgid "Supported ABIs (for use with the -mabi= option):"
! msgstr "UnterstÃ¼tzte ABIs (fÃ¼r Verwendung mit der Option Â»-mabi=Â«):"
  
  #: config/riscv/riscv.opt:78
  #, no-c-format
*************** msgstr "-march=\tCode fÃ¼r die angegeben
*** 6092,6098 ****
  #: config/riscv/riscv.opt:91
  #, no-c-format
  msgid "-march=help\tPrint supported -march extensions."
! msgstr "-march=help\tUnterstÃ¼tzte -march-Erweiterungen ausgeben."
  
  #: config/riscv/riscv.opt:103 config/mips/mips.opt:426
  #, no-c-format
--- 6092,6098 ----
  #: config/riscv/riscv.opt:91
  #, no-c-format
  msgid "-march=help\tPrint supported -march extensions."
! msgstr "-march=help\tUnterstÃ¼tzte Â»-marchÂ«-Erweiterungen ausgeben."
  
  #: config/riscv/riscv.opt:103 config/mips/mips.opt:426
  #, no-c-format
*************** msgstr "Keine Vektor-Speicherzugriffe mi
*** 6144,6150 ****
  #: config/rs6000/aix64.opt:36 config/rs6000/linux64.opt:32
  #, no-c-format
  msgid "Known code models (for use with the -mcmodel= option):"
! msgstr "Bekannte Codemodelle (fÃ¼r Verwendung mit Option -mcmodel=):"
  
  #: config/riscv/riscv.opt:154
  #, no-c-format
--- 6144,6150 ----
  #: config/rs6000/aix64.opt:36 config/rs6000/linux64.opt:32
  #, no-c-format
  msgid "Known code models (for use with the -mcmodel= option):"
! msgstr "Bekannte Codemodelle (fÃ¼r Verwendung mit der Option Â»-mcmodel=Â«):"
  
  #: config/riscv/riscv.opt:154
  #, no-c-format
*************** msgstr "%reloc()-Operatoren statt Assemb
*** 6154,6160 ****
  #: config/riscv/riscv.opt:158 config/loongarch/loongarch.opt:278
  #, no-c-format
  msgid "Take advantage of linker relaxations to reduce the number of instructions required to materialize symbol addresses."
! msgstr "Linker-Lockerungen ausnutzen, um die Anzahl der Befehle zu reduzieren, die fÃ¼r das Materialisieren von Symboladressen verwendet werden."
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109100
  #: config/riscv/riscv.opt:163
--- 6154,6160 ----
  #: config/riscv/riscv.opt:158 config/loongarch/loongarch.opt:278
  #, no-c-format
  msgid "Take advantage of linker relaxations to reduce the number of instructions required to materialize symbol addresses."
! msgstr "Binder-Lockerungen ausnutzen, um die Anzahl der Befehle zu reduzieren, die fÃ¼r das Materialisieren von Symboladressen verwendet werden."
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109100
  #: config/riscv/riscv.opt:163
*************** msgstr "Die angegebene Datenausrichtung
*** 6181,6187 ****
  #: config/riscv/riscv.opt:199 config/i386/i386.opt:265
  #, no-c-format
  msgid "Known data alignment choices (for use with the -malign-data= option):"
! msgstr "Bekannte Datenausrichtungen (fÃ¼r Verwendung mit Option -malign-data=):"
  
  #: config/riscv/riscv.opt:209 config/aarch64/aarch64.opt:313
  #: config/i386/i386.opt:1021 config/arm/arm.opt:349
--- 6181,6187 ----
  #: config/riscv/riscv.opt:199 config/i386/i386.opt:265
  #, no-c-format
  msgid "Known data alignment choices (for use with the -malign-data= option):"
! msgstr "Bekannte Datenausrichtungen (fÃ¼r Verwendung mit der Option Â»-malign-data=Â«):"
  
  #: config/riscv/riscv.opt:209 config/aarch64/aarch64.opt:313
  #: config/i386/i386.opt:1021 config/arm/arm.opt:349
*************** msgstr "Angegebenen Stapelschutz-WÃ¤chte
*** 6194,6200 ****
  #: config/arm/arm.opt:353 config/rs6000/rs6000.opt:562
  #, no-c-format
  msgid "Valid arguments to -mstack-protector-guard=:"
! msgstr "GÃ¼ltige Argumente fÃ¼r -mstack-protector-guart=:"
  
  #: config/riscv/riscv.opt:223 config/i386/i386.opt:1035
  #: config/rs6000/rs6000.opt:572
--- 6194,6200 ----
  #: config/arm/arm.opt:353 config/rs6000/rs6000.opt:562
  #, no-c-format
  msgid "Valid arguments to -mstack-protector-guard=:"
! msgstr "GÃ¼ltige Argumente fÃ¼r Â»-mstack-protector-guard=Â«:"
  
  #: config/riscv/riscv.opt:223 config/i386/i386.opt:1035
  #: config/rs6000/rs6000.opt:572
*************** msgstr "Angegebenen Offset zur Addressie
*** 6211,6217 ****
  #: config/riscv/riscv.opt:543
  #, no-c-format
  msgid "Supported ISA specs (for use with the -misa-spec= option):"
! msgstr "UnterstÃ¼tzte ISA-Spezifikationen (fÃ¼r Verwendung mit Option Â»-misa-spec=Â«):"
  
  #: config/riscv/riscv.opt:556
  #, no-c-format
--- 6211,6217 ----
  #: config/riscv/riscv.opt:543
  #, no-c-format
  msgid "Supported ISA specs (for use with the -misa-spec= option):"
! msgstr "UnterstÃ¼tzte ISA-Spezifikationen (fÃ¼r Verwendung mit der Option Â»-misa-spec=Â«):"
  
  #: config/riscv/riscv.opt:556
  #, no-c-format
*************** msgstr "-mrvv-max-lmul=<Zeichenkette>\tD
*** 6261,6267 ****
  #: config/riscv/riscv.opt:610
  #, no-c-format
  msgid "Valid arguments to -param=vsetvl-strategy=:"
! msgstr "GÃ¼ltige Argumente fÃ¼r -param=vsetvl-strategy=:"
  
  #: config/riscv/riscv.opt:623
  #, no-c-format
--- 6261,6267 ----
  #: config/riscv/riscv.opt:610
  #, no-c-format
  msgid "Valid arguments to -param=vsetvl-strategy=:"
! msgstr "GÃ¼ltige Argumente fÃ¼r Â»-param=vsetvl-strategy=Â«:"
  
  #: config/riscv/riscv.opt:623
  #, no-c-format
*************** msgstr "-param=riscv-two-source-permutes
*** 6276,6282 ****
  #: config/riscv/riscv.opt:631 config/i386/i386.opt:496
  #, no-c-format
  msgid "Valid arguments to -mstringop-strategy=:"
! msgstr "GÃ¼ltige Arguments fÃ¼r -mstringop-strategy=:"
  
  #: config/riscv/riscv.opt:647
  #, no-c-format
--- 6276,6282 ----
  #: config/riscv/riscv.opt:631 config/i386/i386.opt:496
  #, no-c-format
  msgid "Valid arguments to -mstringop-strategy=:"
! msgstr "GÃ¼ltige Arguments fÃ¼r Â»-mstringop-strategy=Â«:"
  
  #: config/riscv/riscv.opt:647
  #, no-c-format
*************** msgstr "Kleines Speichermodell wÃ¤hlen â
*** 6388,6394 ****
  #: config/msp430/msp430.opt:60
  #, no-c-format
  msgid "Optimize opcode sizes at link time."
! msgstr "OpcodegrÃ¶ÃŸen zur Linkzeit optimieren."
  
  #: config/msp430/msp430.opt:67 config/pru/pru.opt:26
  #, no-c-format
--- 6388,6394 ----
  #: config/msp430/msp430.opt:60
  #, no-c-format
  msgid "Optimize opcode sizes at link time."
! msgstr "OpcodegrÃ¶ÃŸen zur Bindezeit optimieren."
  
  #: config/msp430/msp430.opt:67 config/pru/pru.opt:26
  #, no-c-format
*************** msgstr "FÃ¼r Bitschiebeoperationen mit k
*** 6438,6444 ****
  #: config/aarch64/aarch64.opt:70 config/loongarch/loongarch.opt:248
  #, no-c-format
  msgid "The code model option names for -mcmodel:"
! msgstr "Codemodell-Optionsnamen fÃ¼r -mcmodel:"
  
  #: config/aarch64/aarch64.opt:87 config/i386/i386.opt:1056
  #, no-c-format
--- 6438,6444 ----
  #: config/aarch64/aarch64.opt:70 config/loongarch/loongarch.opt:248
  #, no-c-format
  msgid "The code model option names for -mcmodel:"
! msgstr "Codemodell-Optionsnamen fÃ¼r Â»-mcmodelÂ«:"
  
  #: config/aarch64/aarch64.opt:87 config/i386/i386.opt:1056
  #, no-c-format
*************** msgstr "-moverride=<Zeichenkette>\tNur f
*** 6508,6514 ****
  #: config/aarch64/aarch64.opt:197
  #, no-c-format
  msgid "Known AArch64 ABIs (for use with the -mabi= option):"
! msgstr "Bekannte AArch64-ABIs (fÃ¼r Verwendung mit Option -mabi=):"
  
  #: config/aarch64/aarch64.opt:207
  #, no-c-format
--- 6508,6514 ----
  #: config/aarch64/aarch64.opt:197
  #, no-c-format
  msgid "Known AArch64 ABIs (for use with the -mabi= option):"
! msgstr "Bekannte AArch64-ABIs (fÃ¼r Verwendung mit der Option Â»-mabi=Â«):"
  
  #: config/aarch64/aarch64.opt:207
  #, no-c-format
*************** msgstr "AnnÃ¤herung der reziproken Quadr
*** 6538,6544 ****
  #: config/aarch64/aarch64.opt:238
  #, no-c-format
  msgid "Enable the square root approximation.  Enabling this reduces precision of square root results to about 16 bits for single precision and to 32 bits for double precision. If enabled, it implies -mlow-precision-recip-sqrt."
! msgstr "AnnÃ¤herung der Quadratwurzel einschalten. Dies reduziert die Genauigkeit der Quadratwurzelergebnisse auf etwa 16 Bits fÃ¼r einfache Genauigkeit und 32 Bits fÃ¼r doppelte Genauigkeit. Wenn eingeschaltet, bringt es Â»-mlow-precition-recip-sqrtÂ« mit sich."
  
  #: config/aarch64/aarch64.opt:245
  #, no-c-format
--- 6538,6544 ----
  #: config/aarch64/aarch64.opt:238
  #, no-c-format
  msgid "Enable the square root approximation.  Enabling this reduces precision of square root results to about 16 bits for single precision and to 32 bits for double precision. If enabled, it implies -mlow-precision-recip-sqrt."
! msgstr "AnnÃ¤herung der Quadratwurzel einschalten. Dies reduziert die Genauigkeit der Quadratwurzelergebnisse auf etwa 16 Bits fÃ¼r einfache Genauigkeit und 32 Bits fÃ¼r doppelte Genauigkeit. Wenn eingeschaltet, bringt es Â»-mlow-precision-recip-sqrtÂ« mit sich."
  
  #: config/aarch64/aarch64.opt:245
  #, no-c-format
*************** msgstr "Code fÃ¼r die gegebene CPU plane
*** 6869,6875 ****
  #: config/ia64/ia64.opt:126
  #, no-c-format
  msgid "Known Itanium CPUs (for use with the -mtune= option):"
! msgstr "Bekannte Itanium-CPUs (fÃ¼r Verwendung mit Option -mtune=):"
  
  #: config/ia64/ia64.opt:136
  #, no-c-format
--- 6869,6875 ----
  #: config/ia64/ia64.opt:126
  #, no-c-format
  msgid "Known Itanium CPUs (for use with the -mtune= option):"
! msgstr "Bekannte Itanium-CPUs (fÃ¼r Verwendung mit der Option Â»-mtune=Â«):"
  
  #: config/ia64/ia64.opt:136
  #, no-c-format
*************** msgstr "-mmcu=MCU\tZiel-System-On-Chip-V
*** 7134,7140 ****
  #: config/pru/pru.opt:35
  #, no-c-format
  msgid "Make GCC pass the --no-relax command-line option to the linker instead of the --relax option."
! msgstr "Dem Linker die Befehlszeilenoption Â»--no-relaxÂ« anstelle der Option Â»--relaxÂ« Ã¼bergeben."
  
  #: config/pru/pru.opt:40
  #, no-c-format
--- 7134,7140 ----
  #: config/pru/pru.opt:35
  #, no-c-format
  msgid "Make GCC pass the --no-relax command-line option to the linker instead of the --relax option."
! msgstr "Dem Binder die Befehlszeilenoption Â»--no-relaxÂ« anstelle der Option Â»--relaxÂ« Ã¼bergeben."
  
  #: config/pru/pru.opt:40
  #, no-c-format
*************** msgstr "Angegebenen Assemblerdialekt ver
*** 7347,7353 ****
  #: config/i386/i386.opt:286
  #, no-c-format
  msgid "Known assembler dialects (for use with the -masm= option):"
! msgstr "Bekannte Assemblerdialekte (fÃ¼r Verwendung mit Option Â»-masm=Â«):"
  
  #: config/i386/i386.opt:296
  #, no-c-format
--- 7347,7353 ----
  #: config/i386/i386.opt:286
  #, no-c-format
  msgid "Known assembler dialects (for use with the -masm= option):"
! msgstr "Bekannte Assemblerdialekte (fÃ¼r Verwendung mit der Option Â»-masm=Â«):"
  
  #: config/i386/i386.opt:296
  #, no-c-format
*************** msgstr "Angegebenen Adressierungsmodus v
*** 7372,7378 ****
  #: config/i386/i386.opt:331
  #, no-c-format
  msgid "Known address mode (for use with the -maddress-mode= option):"
! msgstr "Bekannter Adressmodus (fÃ¼r Verwendung mit Option -maddress-mode=):"
  
  #: config/i386/i386.opt:344
  #, no-c-format
--- 7372,7378 ----
  #: config/i386/i386.opt:331
  #, no-c-format
  msgid "Known address mode (for use with the -maddress-mode= option):"
! msgstr "Bekannter Adressmodus (fÃ¼r Verwendung mit der Option Â»-maddress-mode=Â«):"
  
  #: config/i386/i386.opt:344
  #, no-c-format
*************** msgstr "Gleitkommaarithmetik mit gegeben
*** 7397,7403 ****
  #: config/i386/i386.opt:360
  #, no-c-format
  msgid "Valid arguments to -mfpmath=:"
! msgstr "GÃ¼ltige Argumente fÃ¼r -mfpmath=:"
  
  #: config/i386/i386.opt:393
  #, no-c-format
--- 7397,7403 ----
  #: config/i386/i386.opt:360
  #, no-c-format
  msgid "Valid arguments to -mfpmath=:"
! msgstr "GÃ¼ltige Argumente fÃ¼r Â»-mfpmath=Â«:"
  
  #: config/i386/i386.opt:393
  #, no-c-format
*************** msgstr "Gegebenen Thread-lokalen Speiche
*** 7507,7513 ****
  #: config/i386/i386.opt:528
  #, no-c-format
  msgid "Known TLS dialects (for use with the -mtls-dialect= option):"
! msgstr "Bekannte TLS-Dialekte (fÃ¼r Verwendung mit Option -mtls-dialect=):"
  
  #: config/i386/i386.opt:538
  #, no-c-format
--- 7507,7513 ----
  #: config/i386/i386.opt:528
  #, no-c-format
  msgid "Known TLS dialects (for use with the -mtls-dialect= option):"
! msgstr "Bekannte TLS-Dialekte (fÃ¼r Verwendung mit der Option Â»-mtls-dialect=Â«):"
  
  #: config/i386/i386.opt:538
  #, no-c-format
*************** msgstr "Code erzeugen, der zum angegeben
*** 7537,7543 ****
  #: config/i386/i386.opt:565 config/nds32/nds32.opt:51
  #, no-c-format
  msgid "Known ABIs (for use with the -mabi= option):"
! msgstr "Bekannte ABIs (fÃ¼r Verwendung mit Option -mabi=):"
  
  #: config/i386/i386.opt:575
  #, no-c-format
--- 7537,7543 ----
  #: config/i386/i386.opt:565 config/nds32/nds32.opt:51
  #, no-c-format
  msgid "Known ABIs (for use with the -mabi= option):"
! msgstr "Bekannte ABIs (fÃ¼r Verwendung mit der Option Â»-mabi=Â«):"
  
  #: config/i386/i386.opt:575
  #, no-c-format
*************** msgstr "Zu verwendendes Vektorbibliothek
*** 7552,7558 ****
  #: config/i386/i386.opt:583
  #, no-c-format
  msgid "Known vectorization library ABIs (for use with the -mveclibabi= option):"
! msgstr "Bekannte ABIs fÃ¼r Vektorisierungs-Bibliothek (fÃ¼r Verwendung mit Schalter -mveclibabi=):"
  
  #: config/i386/i386.opt:596
  #, no-c-format
--- 7552,7558 ----
  #: config/i386/i386.opt:583
  #, no-c-format
  msgid "Known vectorization library ABIs (for use with the -mveclibabi= option):"
! msgstr "Bekannte ABIs fÃ¼r Vektorisierungs-Bibliothek (fÃ¼r Verwendung mit der Option Â»-mveclibabi=Â«):"
  
  #: config/i386/i386.opt:596
  #, no-c-format
*************** msgstr "Im Autovektorisierer die angegeb
*** 7607,7613 ****
  #: config/i386/i386.opt:639
  #, no-c-format
  msgid "Known preferred register vector length (to use with the -mprefer-vector-width= option):"
! msgstr "Bekannte bevorzugte LÃ¤nge von Registervektoren (fÃ¼r Verwendung mit der Option -mprefer-vector-width=):"
  
  #: config/i386/i386.opt:655
  #, no-c-format
--- 7607,7613 ----
  #: config/i386/i386.opt:639
  #, no-c-format
  msgid "Known preferred register vector length (to use with the -mprefer-vector-width= option):"
! msgstr "Bekannte bevorzugte LÃ¤nge von Registervektoren (fÃ¼r Verwendung mit der Option Â»-mprefer-vector-width=Â«):"
  
  #: config/i386/i386.opt:655
  #, no-c-format
*************** msgstr "Eingebaute PKU-Funktionen und Co
*** 8047,8053 ****
  #: config/i386/i386.opt:1025
  #, no-c-format
  msgid "Known stack protector guard (for use with the -mstack-protector-guard= option):"
! msgstr "Bekannte Stapelschutz-WÃ¤chter (fÃ¼r Verwendung mit Option -mstack-protector-guard=):"
  
  #: config/i386/i386.opt:1049
  #, no-c-format
--- 8047,8053 ----
  #: config/i386/i386.opt:1025
  #, no-c-format
  msgid "Known stack protector guard (for use with the -mstack-protector-guard= option):"
! msgstr "Bekannte Stapelschutz-WÃ¤chter (fÃ¼r Verwendung mit der Option Â»-mstack-protector-guard=Â«):"
  
  #: config/i386/i386.opt:1049
  #, no-c-format
*************** msgstr "FunktionsrÃ¼ckkehr in Aufruf umw
*** 8087,8093 ****
  #: config/i386/i386.opt:1087 config/s390/s390.opt:279
  #, no-c-format
  msgid "Known indirect branch choices (for use with the -mindirect-branch=/-mfunction-return= options):"
! msgstr "Bekannte indirekte Sprungauswahlen (fÃ¼r Verwendung mit den Optionen -mindirect-branch=/-mfunction-return=):"
  
  #: config/i386/i386.opt:1103
  #, no-c-format
--- 8087,8093 ----
  #: config/i386/i386.opt:1087 config/s390/s390.opt:279
  #, no-c-format
  msgid "Known indirect branch choices (for use with the -mindirect-branch=/-mfunction-return= options):"
! msgstr "Bekannte indirekte Sprungauswahlen (fÃ¼r Verwendung mit den Optionen Â»-mindirect-branch=Â« und Â»-mfunction-return=Â«):"
  
  #: config/i386/i386.opt:1103
  #, no-c-format
*************** msgstr "Verlassen von Funktionen mit __f
*** 8127,8133 ****
  #: config/i386/i386.opt:1131
  #, no-c-format
  msgid "Known choices for return instrumentation with -minstrument-return=:"
! msgstr "Bekannte Werte fÃ¼r RÃ¼ckkehr-Instrumentierung mit -minstrument-return=:"
  
  #: config/i386/i386.opt:1144
  #, no-c-format
--- 8127,8133 ----
  #: config/i386/i386.opt:1131
  #, no-c-format
  msgid "Known choices for return instrumentation with -minstrument-return=:"
! msgstr "Bekannte Werte fÃ¼r RÃ¼ckkehr-Instrumentierung mit Â»-minstrument-return=Â«:"
  
  #: config/i386/i386.opt:1144
  #, no-c-format
*************** msgstr "KohÃ¤rente Cachesteuerungs-Hinwe
*** 8423,8429 ****
  #: config/pa/pa.opt:58
  #, no-c-format
  msgid "Disable FP regs.  Equivalent to -msoft-float."
! msgstr "Gleitkommaregister ausschalten. Ã„quivalent zu -msoft-float."
  
  #: config/pa/pa.opt:62
  #, no-c-format
--- 8423,8429 ----
  #: config/pa/pa.opt:58
  #, no-c-format
  msgid "Disable FP regs.  Equivalent to -msoft-float."
! msgstr "Gleitkommaregister ausschalten. Ã„quivalent zu Â»-msoft-floatÂ«."
  
  #: config/pa/pa.opt:62
  #, no-c-format
*************** msgstr "Verwendung der kurzen Ladebefehl
*** 8543,8549 ****
  #: config/v850/v850.opt:71
  #, no-c-format
  msgid "Same as: -mep -mprolog-function."
! msgstr "Das gleiche wie: -mep -mprolog-function."
  
  #: config/v850/v850.opt:75
  #, no-c-format
--- 8543,8549 ----
  #: config/v850/v850.opt:71
  #, no-c-format
  msgid "Same as: -mep -mprolog-function."
! msgstr "Das gleiche wie: Â»-mep -mprolog-functionÂ«."
  
  #: config/v850/v850.opt:75
  #, no-c-format
*************** msgstr "Multi-Threading unterstÃ¼tzen."
*** 8663,8669 ****
  #: config/nvptx/nvptx-gen.opt:24
  #, no-c-format
  msgid "Known PTX ISA target architectures (for use with the -misa= option):"
! msgstr "Bekannte PTX-ISA-Architekturen (fÃ¼r Verwendung mit Option -misa=):"
  
  #: config/nvptx/nvptx.opt:31
  #, no-c-format
--- 8663,8669 ----
  #: config/nvptx/nvptx-gen.opt:24
  #, no-c-format
  msgid "Known PTX ISA target architectures (for use with the -misa= option):"
! msgstr "Bekannte PTX-ISA-Architekturen (fÃ¼r Verwendung mit der Option Â»-misa=Â«):"
  
  #: config/nvptx/nvptx.opt:31
  #, no-c-format
*************** msgstr "Alias:"
*** 8713,8726 ****
  #: config/nvptx/nvptx.opt:125
  #, no-c-format
  msgid "Known PTX ISA versions (for use with the -mptx= option):"
! msgstr "Bekannte PTX-ISA-Versionen (fÃ¼r Verwendung mit Option -mptx=):"
  
! #: config/nvptx/nvptx.opt:156
  #, no-c-format
  msgid "Specify the PTX ISA version to use."
  msgstr "Die Version der PTX-ISA angeben, die verwendet wird."
  
! #: config/nvptx/nvptx.opt:160
  #, no-c-format
  msgid "Initialize ptx registers."
  msgstr "PTX-Register initialisieren."
--- 8713,8726 ----
  #: config/nvptx/nvptx.opt:125
  #, no-c-format
  msgid "Known PTX ISA versions (for use with the -mptx= option):"
! msgstr "Bekannte PTX-ISA-Versionen (fÃ¼r Verwendung mit der Option Â»-mptx=Â«):"
  
! #: config/nvptx/nvptx.opt:159
  #, no-c-format
  msgid "Specify the PTX ISA version to use."
  msgstr "Die Version der PTX-ISA angeben, die verwendet wird."
  
! #: config/nvptx/nvptx.opt:163
  #, no-c-format
  msgid "Initialize ptx registers."
  msgstr "PTX-Register initialisieren."
*************** msgstr "-mfuse-move=<0,23>\tOptimierung.
*** 8897,8926 ****
  
  #: config/avr/avr.opt:169
  #, no-c-format
  msgid "Assume that all data in static storage can be accessed by LDS / STS instructions.  This option is only useful for reduced Tiny devices like ATtiny40."
  msgstr "Annehmen, dass auf alle Daten im statischen Speicher via LDS/STS zugegriffen werden kann. Diese Option ist nur fÃ¼r Reduced-Tiny-GerÃ¤te wie ATtiny40 sinnvoll."
  
! #: config/avr/avr.opt:173
  #, no-c-format
  msgid "-mdouble=<BITS>\tUse <BITS> bits wide double type."
  msgstr "-mdouble=<Bits>\tEinen <Bits> breiten Typ fÃ¼r Â»doubleÂ« verwenden."
  
! #: config/avr/avr.opt:177
  #, no-c-format
  msgid "-mlong-double=<BITS>\tUse <BITS> bits wide long double type."
  msgstr "-mlong-double=<Bits>\tEinen <Bits> breiten Typ fÃ¼r Â»long doubleÂ« verwenden."
  
! #: config/avr/avr.opt:181
  #, no-c-format
  msgid "Do not link against the device-specific library lib<MCU>.a."
  msgstr "Nicht gegen die GerÃ¤te-spezifische Bibliothek lib<MCU>.a binden."
  
! #: config/avr/avr.opt:185
  #, no-c-format
  msgid "Do not use the device-specific specs file device-specs/specs-<MCU>."
  msgstr "Nicht die gerÃ¤tespezifische Specs-Datei Â»device-specs/specs-<MCU>Â« verwenden."
  
! #: config/avr/avr.opt:189
  #, no-c-format
  msgid "Available BITS selections:"
  msgstr "VerfÃ¼gbare Werte fÃ¼r Bits:"
--- 8897,8931 ----
  
  #: config/avr/avr.opt:169
  #, no-c-format
+ msgid "Optimization. Fuse some move insns after insn combine."
+ msgstr "Optimierung. Mehrfache Move-Befehle zusammenschweiÃŸen, nachdem Befehle kombiniert wurden."
+ 
+ #: config/avr/avr.opt:173
+ #, no-c-format
  msgid "Assume that all data in static storage can be accessed by LDS / STS instructions.  This option is only useful for reduced Tiny devices like ATtiny40."
  msgstr "Annehmen, dass auf alle Daten im statischen Speicher via LDS/STS zugegriffen werden kann. Diese Option ist nur fÃ¼r Reduced-Tiny-GerÃ¤te wie ATtiny40 sinnvoll."
  
! #: config/avr/avr.opt:177
  #, no-c-format
  msgid "-mdouble=<BITS>\tUse <BITS> bits wide double type."
  msgstr "-mdouble=<Bits>\tEinen <Bits> breiten Typ fÃ¼r Â»doubleÂ« verwenden."
  
! #: config/avr/avr.opt:181
  #, no-c-format
  msgid "-mlong-double=<BITS>\tUse <BITS> bits wide long double type."
  msgstr "-mlong-double=<Bits>\tEinen <Bits> breiten Typ fÃ¼r Â»long doubleÂ« verwenden."
  
! #: config/avr/avr.opt:185
  #, no-c-format
  msgid "Do not link against the device-specific library lib<MCU>.a."
  msgstr "Nicht gegen die GerÃ¤te-spezifische Bibliothek lib<MCU>.a binden."
  
! #: config/avr/avr.opt:189
  #, no-c-format
  msgid "Do not use the device-specific specs file device-specs/specs-<MCU>."
  msgstr "Nicht die gerÃ¤tespezifische Specs-Datei Â»device-specs/specs-<MCU>Â« verwenden."
  
! #: config/avr/avr.opt:193
  #, no-c-format
  msgid "Available BITS selections:"
  msgstr "VerfÃ¼gbare Werte fÃ¼r Bits:"
*************** msgstr "Alle indirekten RÃ¼cksprÃ¼nge mi
*** 9188,9194 ****
  #: config/s390/s390.opt:295
  #, no-c-format
  msgid "Generate sections .s390_indirect_jump, .s390_indirect_call, .s390_return_reg, and .s390_return_mem to contain the indirect branch locations which have been patched as part of using one of the -mindirect-branch* or -mfunction-return* options.  The sections consist of an array of 32 bit elements. Each entry holds the offset from the entry to the patched location."
! msgstr "Abschnitte .s390_indirect_jump, .s390_indirect_call, .s390_return_reg, und .s390_return_mem erzeugen, in denen die Adressen fÃ¼r indirekte Sprungziele gespeichert werden, die aufgrund der Optionen -mindirect-branch* oder -mfunction-return* gepatcht wurden. Die Abschnitte bestehen aus einem Array von 32-Bit-Elementen. Jedes Element enthÃ¤lt den Offset vom Eintrag zu der gepatchten Adresse."
  
  #: config/s390/s390.opt:304
  #, no-c-format
--- 9193,9199 ----
  #: config/s390/s390.opt:295
  #, no-c-format
  msgid "Generate sections .s390_indirect_jump, .s390_indirect_call, .s390_return_reg, and .s390_return_mem to contain the indirect branch locations which have been patched as part of using one of the -mindirect-branch* or -mfunction-return* options.  The sections consist of an array of 32 bit elements. Each entry holds the offset from the entry to the patched location."
! msgstr "Abschnitte .s390_indirect_jump, .s390_indirect_call, .s390_return_reg, und .s390_return_mem erzeugen, in denen die Adressen fÃ¼r indirekte Sprungziele gespeichert werden, die aufgrund der Optionen Â»-mindirect-branch*Â« oder Â»-mfunction-return*Â« gepatcht wurden. Die Abschnitte bestehen aus einem Array von 32-Bit-Elementen. Jedes Element enthÃ¤lt den Offset vom Eintrag zu der gepatchten Adresse."
  
  #: config/s390/s390.opt:304
  #, no-c-format
*************** msgstr "Alle Register verwenden, dadurch
*** 9233,9239 ****
  #: config/rl78/rl78.opt:54
  #, no-c-format
  msgid "Enable assembler and linker relaxation.  Enabled by default at -Os."
! msgstr "Lockerung des Assemblers und Linkers einschalten. Per Vorgabe eingeschaltet bei -Os."
  
  #: config/rl78/rl78.opt:58
  #, no-c-format
--- 9238,9244 ----
  #: config/rl78/rl78.opt:54
  #, no-c-format
  msgid "Enable assembler and linker relaxation.  Enabled by default at -Os."
! msgstr "Lockerung des Assemblers und Binders einschalten. Per Vorgabe eingeschaltet bei Â»-OsÂ«."
  
  #: config/rl78/rl78.opt:58
  #, no-c-format
*************** msgstr "WÃ¤hlt die Art der Ziel-RL78-Ker
*** 9243,9259 ****
  #: config/rl78/rl78.opt:77
  #, no-c-format
  msgid "Alias for -mcpu=g10."
! msgstr "Alias fÃ¼r --mcpu=g10."
  
  #: config/rl78/rl78.opt:81
  #, no-c-format
  msgid "Alias for -mcpu=g13."
! msgstr "Alias fÃ¼r -mcpu=g13."
  
  #: config/rl78/rl78.opt:85 config/rl78/rl78.opt:89
  #, no-c-format
  msgid "Alias for -mcpu=g14."
! msgstr "Alias fÃ¼r -mcpu=g14."
  
  #: config/rl78/rl78.opt:93
  #, no-c-format
--- 9248,9264 ----
  #: config/rl78/rl78.opt:77
  #, no-c-format
  msgid "Alias for -mcpu=g10."
! msgstr "Alias fÃ¼r Â»-mcpu=g10Â«."
  
  #: config/rl78/rl78.opt:81
  #, no-c-format
  msgid "Alias for -mcpu=g13."
! msgstr "Alias fÃ¼r Â»-mcpu=g13Â«."
  
  #: config/rl78/rl78.opt:85 config/rl78/rl78.opt:89
  #, no-c-format
  msgid "Alias for -mcpu=g14."
! msgstr "Alias fÃ¼r Â»-mcpu=g14Â«."
  
  #: config/rl78/rl78.opt:93
  #, no-c-format
*************** msgstr "Bibliotheken fÃ¼r den Simulator
*** 9273,9289 ****
  #: config/arm/arm-tables.opt:25
  #, no-c-format
  msgid "Known ARM CPUs (for use with the -mcpu= and -mtune= options):"
! msgstr "Bekannte ARM-CPUs (fÃ¼r Verwendung mit Optionen -mcpu= und -mtune=):"
  
  #: config/arm/arm-tables.opt:305
  #, no-c-format
  msgid "Known ARM architectures (for use with the -march= option):"
! msgstr "Bekannte ARM-Architekturen (fÃ¼r Verwendung mit Option -march=):"
  
  #: config/arm/arm-tables.opt:411
  #, no-c-format
  msgid "Known ARM FPUs (for use with the -mfpu= option):"
! msgstr "Bekannte ARM-FPUs (fÃ¼r Verwendung mit Option -mfpu=):"
  
  #: config/arm/arm.opt:35
  #, no-c-format
--- 9278,9294 ----
  #: config/arm/arm-tables.opt:25
  #, no-c-format
  msgid "Known ARM CPUs (for use with the -mcpu= and -mtune= options):"
! msgstr "Bekannte ARM-CPUs (fÃ¼r Verwendung mit der Optionen Â»-mcpu=Â« und Â»-mtune=Â«):"
  
  #: config/arm/arm-tables.opt:305
  #, no-c-format
  msgid "Known ARM architectures (for use with the -march= option):"
! msgstr "Bekannte ARM-Architekturen (fÃ¼r Verwendung mit der Option Â»-march=Â«):"
  
  #: config/arm/arm-tables.opt:411
  #, no-c-format
  msgid "Known ARM FPUs (for use with the -mfpu= option):"
! msgstr "Bekannte ARM-FPUs (fÃ¼r Verwendung mit der Option Â»-mfpu=Â«):"
  
  #: config/arm/arm.opt:35
  #, no-c-format
*************** msgstr "ABI angeben."
*** 9298,9304 ****
  #: config/arm/arm.opt:49
  #, no-c-format
  msgid "Known ARM ABIs (for use with the -mabi= option):"
! msgstr "Bekannte ARM-ABIs (fÃ¼r Verwendung mit Option -mabi=):"
  
  #: config/arm/arm.opt:68
  #, no-c-format
--- 9303,9309 ----
  #: config/arm/arm.opt:49
  #, no-c-format
  msgid "Known ARM ABIs (for use with the -mabi= option):"
! msgstr "Bekannte ARM-ABIs (fÃ¼r Verwendung mit der Option Â»-mabi=Â«):"
  
  #: config/arm/arm.opt:68
  #, no-c-format
*************** msgstr "Angeben, dass der Compiler auf s
*** 9343,9349 ****
  #: config/arm/arm.opt:129 config/csky/csky.opt:77
  #, no-c-format
  msgid "Known floating-point ABIs (for use with the -mfloat-abi= option):"
! msgstr "Bekannte Gleitkomma-ABIs (fÃ¼r Verwendung mit Option -mfloat-abi=):"
  
  #: config/arm/arm.opt:142
  #, no-c-format
--- 9348,9354 ----
  #: config/arm/arm.opt:129 config/csky/csky.opt:77
  #, no-c-format
  msgid "Known floating-point ABIs (for use with the -mfloat-abi= option):"
! msgstr "Bekannte Gleitkomma-ABIs (fÃ¼r Verwendung mit der Option Â»-mfloat-abi=Â«):"
  
  #: config/arm/arm.opt:142
  #, no-c-format
*************** msgstr "Gleitkommaformat __fp16 angeben.
*** 9358,9364 ****
  #: config/arm/arm.opt:150
  #, no-c-format
  msgid "Known __fp16 formats (for use with the -mfp16-format= option):"
! msgstr "Bekannte __fp16-Formate (fÃ¼r Verwendung mit der Option -mfp16-format=):"
  
  #: config/arm/arm.opt:163
  #, no-c-format
--- 9363,9369 ----
  #: config/arm/arm.opt:150
  #, no-c-format
  msgid "Known __fp16 formats (for use with the -mfp16-format= option):"
! msgstr "Bekannte __fp16-Formate (fÃ¼r Verwendung mit der Option Â»-mfp16-format=Â«):"
  
  #: config/arm/arm.opt:163
  #, no-c-format
*************** msgstr "Angeben, wie auf den Threadzeige
*** 9418,9424 ****
  #: config/arm/arm.opt:221
  #, no-c-format
  msgid "Valid arguments to -mtp=:"
! msgstr "GÃ¼ltige Argumente fÃ¼r -mtp=:"
  
  #: config/arm/arm.opt:243
  #, no-c-format
--- 9423,9429 ----
  #: config/arm/arm.opt:221
  #, no-c-format
  msgid "Valid arguments to -mtp=:"
! msgstr "GÃ¼ltige Argumente fÃ¼r Â»-mtp=Â«:"
  
  #: config/arm/arm.opt:243
  #, no-c-format
*************** msgstr "32-Bit-Code erzeugen."
*** 9729,9735 ****
  #: config/rs6000/rs6000-tables.opt:24
  #, no-c-format
  msgid "Known CPUs (for use with the -mcpu= and -mtune= options):"
! msgstr "Bekannte CPUs (fÃ¼r Verwendung mit Optionen -mcpu= und -mtune=):"
  
  #: config/rs6000/476.opt:24
  #, no-c-format
--- 9734,9740 ----
  #: config/rs6000/rs6000-tables.opt:24
  #, no-c-format
  msgid "Known CPUs (for use with the -mcpu= and -mtune= options):"
! msgstr "Bekannte CPUs (fÃ¼r Verwendung mit der Optionen Â»-mcpu=Â« und Â»-mtune=Â«):"
  
  #: config/rs6000/476.opt:24
  #, no-c-format
*************** msgstr "PowerPC V2.06 popcntd-Befehl ver
*** 9829,9835 ****
  #: config/rs6000/rs6000.opt:191
  #, no-c-format
  msgid "Under -ffast-math, generate a FRIZ instruction for (double)(long long) conversions."
! msgstr "Unter -ffast-math einen FRIZ-Befehl fÃ¼r (double)(long long)-Umwandlungen erzeugen."
  
  #: config/rs6000/rs6000.opt:199
  #, no-c-format
--- 9834,9840 ----
  #: config/rs6000/rs6000.opt:191
  #, no-c-format
  msgid "Under -ffast-math, generate a FRIZ instruction for (double)(long long) conversions."
! msgstr "Unter Â»-ffast-mathÂ« einen FRIZ-Befehl fÃ¼r (double)(long long)-Umwandlungen erzeugen."
  
  #: config/rs6000/rs6000.opt:199
  #, no-c-format
*************** msgstr "Alles in regulÃ¤res TOC legen."
*** 9914,9920 ****
  #: config/rs6000/rs6000.opt:305
  #, no-c-format
  msgid "Emit NOPs before global and after local entry point for -fpatchable-function-entry."
! msgstr "NOPs vor dem globalen und nach dem lokalen Einstiegspunkt fÃ¼r -fpatchable-function-entry generieren."
  
  #: config/rs6000/rs6000.opt:309
  #, no-c-format
--- 9919,9925 ----
  #: config/rs6000/rs6000.opt:305
  #, no-c-format
  msgid "Emit NOPs before global and after local entry point for -fpatchable-function-entry."
! msgstr "NOPs vor dem globalen und nach dem lokalen Einstiegspunkt fÃ¼r Â»-fpatchable-function-entryÂ« generieren."
  
  #: config/rs6000/rs6000.opt:309
  #, no-c-format
*************** msgstr "Beim Erzeugen von AltiVec-Code V
*** 9924,9935 ****
  #: config/rs6000/rs6000.opt:313
  #, no-c-format
  msgid "Deprecated option.  Use -mno-vrsave instead."
! msgstr "Veraltete Option. Stattdessen -mno-vrsave verwenden."
  
  #: config/rs6000/rs6000.opt:317
  #, no-c-format
  msgid "Deprecated option.  Use -mvrsave instead."
! msgstr "Veraltete Option. Stattdessen -mvrsave verwenden."
  
  #: config/rs6000/rs6000.opt:321
  #, no-c-format
--- 9929,9940 ----
  #: config/rs6000/rs6000.opt:313
  #, no-c-format
  msgid "Deprecated option.  Use -mno-vrsave instead."
! msgstr "Veraltete Option. Stattdessen Â»-mno-vrsaveÂ« verwenden."
  
  #: config/rs6000/rs6000.opt:317
  #, no-c-format
  msgid "Deprecated option.  Use -mvrsave instead."
! msgstr "Veraltete Option. Stattdessen Â»-mvrsaveÂ« verwenden."
  
  #: config/rs6000/rs6000.opt:321
  #, no-c-format
*************** msgstr "Ausrichtung der Strukturfelder a
*** 10049,10055 ****
  #: config/rs6000/rs6000.opt:453
  #, no-c-format
  msgid "Valid arguments to -malign-:"
! msgstr "GÃ¼ltige Argumente fÃ¼r -malign-:"
  
  #: config/rs6000/rs6000.opt:463
  #, no-c-format
--- 10054,10060 ----
  #: config/rs6000/rs6000.opt:453
  #, no-c-format
  msgid "Valid arguments to -malign-:"
! msgstr "GÃ¼ltige Argumente fÃ¼r Â»-malign-Â«:"
  
  #: config/rs6000/rs6000.opt:463
  #, no-c-format
*************** msgstr "Code fÃ¼r altes ausfÃ¼hrbares BS
*** 10351,10357 ****
  #: config/rs6000/sysv4.opt:165
  #, no-c-format
  msgid "Use inline plt sequences to implement long calls and -fno-plt."
! msgstr "Inline-PLT-Sequenzen verwenden, um lange Aufrufe und -fno-plt zu implementieren."
  
  #: config/rs6000/sysv4.opt:169
  #, no-c-format
--- 10356,10362 ----
  #: config/rs6000/sysv4.opt:165
  #, no-c-format
  msgid "Use inline plt sequences to implement long calls and -fno-plt."
! msgstr "Inline-PLT-Sequenzen verwenden, um lange Aufrufe und Â»-fno-pltÂ« zu implementieren."
  
  #: config/rs6000/sysv4.opt:169
  #, no-c-format
*************** msgstr "Bedingte Kopierbefehle fÃ¼r Glei
*** 10611,10617 ****
  #: config/loongarch/loongarch.opt:206
  #, no-c-format
  msgid "Prevent optimizing block moves, which is also the default behavior of -Os."
! msgstr "Die Optimierung von Blockkopieraktionen verhindern, was auch das Standardverhalten von -Os ist."
  
  #: config/loongarch/loongarch.opt:214
  #, no-c-format
--- 10616,10622 ----
  #: config/loongarch/loongarch.opt:206
  #, no-c-format
  msgid "Prevent optimizing block moves, which is also the default behavior of -Os."
! msgstr "Die Optimierung von Blockkopieraktionen verhindern, was auch das Standardverhalten von Â»-OsÂ« ist."
  
  #: config/loongarch/loongarch.opt:214
  #, no-c-format
*************** msgstr "-mmax-inline-memcpy-size=SIZE\tD
*** 10621,10627 ****
  #: config/loongarch/loongarch.opt:218 config/mips/mips.opt:150
  #, no-c-format
  msgid "The code model option names for -mexplicit-relocs:"
! msgstr "Die Optionsnamen fÃ¼r Codemodelle fÃ¼r -mexplicit-relocs:"
  
  #: config/loongarch/loongarch.opt:231 config/mips/mips.opt:163
  #, no-c-format
--- 10626,10632 ----
  #: config/loongarch/loongarch.opt:218 config/mips/mips.opt:150
  #, no-c-format
  msgid "The code model option names for -mexplicit-relocs:"
! msgstr "Die Optionsnamen fÃ¼r Codemodelle fÃ¼r Â»-mexplicit-relocsÂ«:"
  
  #: config/loongarch/loongarch.opt:231 config/mips/mips.opt:163
  #, no-c-format
*************** msgstr "Die GOT mÃ¶glichst nicht verwend
*** 10646,10652 ****
  #: config/loongarch/loongarch.opt:283
  #, no-c-format
  msgid "Pass -mrelax or -mno-relax option to the assembler."
! msgstr "Die Option -mrelax oder -mno-relax an den Assembler Ã¼bergeben."
  
  #: config/loongarch/loongarch.opt:301
  #, no-c-format
--- 10651,10657 ----
  #: config/loongarch/loongarch.opt:283
  #, no-c-format
  msgid "Pass -mrelax or -mno-relax option to the assembler."
! msgstr "Die Option Â»-mrelaxÂ« oder Â»-mno-relaxÂ« an den Assembler Ã¼bergeben."
  
  #: config/loongarch/loongarch.opt:301
  #, no-c-format
*************** msgstr "FÃ¼r das newlib-Board-spezifisch
*** 10691,10697 ****
  #: config/or1k/elf.opt:32
  #, no-c-format
  msgid "This option is ignored; it is provided for compatibility purposes only.  This used to select linker and preprocessor options for use with newlib."
! msgstr "Diese Option wird ignoriert; sie wird nur zu KompatibilitÃ¤tszwecken bereitgestellt. Sie diente zur Auswahl von Linker- und PrÃ¤prozessor-Optionen fÃ¼r die Verwendung mit der newlib."
  
  #: config/or1k/or1k.opt:29
  #, no-c-format
--- 10696,10702 ----
  #: config/or1k/elf.opt:32
  #, no-c-format
  msgid "This option is ignored; it is provided for compatibility purposes only.  This used to select linker and preprocessor options for use with newlib."
! msgstr "Diese Option wird ignoriert; sie wird nur zu KompatibilitÃ¤tszwecken bereitgestellt. Sie diente zur Auswahl von Binder- und PrÃ¤prozessor-Optionen fÃ¼r die Verwendung mit der newlib."
  
  #: config/or1k/or1k.opt:29
  #, no-c-format
*************** msgstr "Das Codemodell fÃ¼r den Zugriff
*** 10741,10747 ****
  #: config/or1k/or1k.opt:77
  #, no-c-format
  msgid "Known code model types (for use with the -mcmodel= option):"
! msgstr "Bekannte Codemodelle (fÃ¼r Verwendung mit Option -mcmodel=):"
  
  #: config/or1k/or1k.opt:87
  #, no-c-format
--- 10746,10752 ----
  #: config/or1k/or1k.opt:77
  #, no-c-format
  msgid "Known code model types (for use with the -mcmodel= option):"
! msgstr "Bekannte Codemodelle (fÃ¼r Verwendung mit der Option Â»-mcmodel=Â«):"
  
  #: config/or1k/or1k.opt:87
  #, no-c-format
*************** msgstr "Nur fÃ¼r RÃ¼ckwÃ¤rtskompatibilit
*** 10911,10922 ****
  #: config/sol2.opt:32
  #, no-c-format
  msgid "Clear hardware capabilities when linking."
! msgstr "HardwarefÃ¤higkeiten beim Linken lÃ¶schen."
  
  #: config/sol2.opt:36
  #, no-c-format
  msgid "Pass -z text to linker."
! msgstr "Â»-z textÂ« an den Linker Ã¼bergeben."
  
  #: config/moxie/moxie.opt:31
  #, no-c-format
--- 10916,10927 ----
  #: config/sol2.opt:32
  #, no-c-format
  msgid "Clear hardware capabilities when linking."
! msgstr "HardwarefÃ¤higkeiten beim Binden lÃ¶schen."
  
  #: config/sol2.opt:36
  #, no-c-format
  msgid "Pass -z text to linker."
! msgstr "Â»-z textÂ« an den Binder Ã¼bergeben."
  
  #: config/moxie/moxie.opt:31
  #, no-c-format
*************** msgstr "Hardware-Â»prefetchÂ«-Befehle ve
*** 11031,11037 ****
  #: config/microblaze/microblaze.opt:132
  #, no-c-format
  msgid "Data referenced by offset from start of text instead of GOT (with -fPIC/-fPIE)."
! msgstr "Daten werden ausgehend vom Start des Programmcodes statt der GOT adressiert (mit -fPIC/-fPIE)."
  
  #: config/vax/vax.opt:23 config/vax/vax.opt:27
  #, no-c-format
--- 11036,11042 ----
  #: config/microblaze/microblaze.opt:132
  #, no-c-format
  msgid "Data referenced by offset from start of text instead of GOT (with -fPIC/-fPIE)."
! msgstr "Daten werden ausgehend vom Start des Programmcodes statt der GOT adressiert (mit Â»-fPICÂ« oder Â»-fPIEÂ«)."
  
  #: config/vax/vax.opt:23 config/vax/vax.opt:27
  #, no-c-format
*************** msgstr "Ziel-CPU-Typ angeben."
*** 11121,11127 ****
  #: config/frv/frv.opt:73
  #, no-c-format
  msgid "Known FR-V CPUs (for use with the -mcpu= option):"
! msgstr "Bekannte FR-V-CPUs (fÃ¼r Verwendung mit Option -mcpu=):"
  
  #: config/frv/frv.opt:122
  #, no-c-format
--- 11126,11132 ----
  #: config/frv/frv.opt:73
  #, no-c-format
  msgid "Known FR-V CPUs (for use with the -mcpu= option):"
! msgstr "Bekannte FR-V-CPUs (fÃ¼r Verwendung mit der Option Â»-mcpu=Â«):"
  
  #: config/frv/frv.opt:122
  #, no-c-format
*************** msgstr "Gas veranlassen, Tomcat-Statisti
*** 11241,11247 ****
  #: config/frv/frv.opt:233
  #, no-c-format
  msgid "Link with the library-pic libraries."
! msgstr "Mit Library-PIC-Bibliotheken linken."
  
  #: config/frv/frv.opt:237
  #, no-c-format
--- 11246,11252 ----
  #: config/frv/frv.opt:233
  #, no-c-format
  msgid "Link with the library-pic libraries."
! msgstr "Mit Library-PIC-Bibliotheken binden."
  
  #: config/frv/frv.opt:237
  #, no-c-format
*************** msgstr "Strategie zur Adresserzeugung fÃ
*** 11296,11302 ****
  #: config/nds32/nds32-elf.opt:7 config/nds32/nds32-linux.opt:7
  #, no-c-format
  msgid "Known cmodel types (for use with the -mcmodel= option):"
! msgstr "Bekannte Codemodelle (fÃ¼r Verwendung mit Option -mcmodel=):"
  
  #: config/nds32/nds32.opt:29 config/nds32/nds32.opt:89
  #, no-c-format
--- 11301,11307 ----
  #: config/nds32/nds32-elf.opt:7 config/nds32/nds32-linux.opt:7
  #, no-c-format
  msgid "Known cmodel types (for use with the -mcmodel= option):"
! msgstr "Bekannte Codemodelle (fÃ¼r Verwendung mit der Option Â»-mcmodel=Â«):"
  
  #: config/nds32/nds32.opt:29 config/nds32/nds32.opt:89
  #, no-c-format
*************** msgstr "ABI-Art, fÃ¼r die der Code gener
*** 11326,11337 ****
  #: config/nds32/nds32.opt:61
  #, no-c-format
  msgid "Specify use soft floating point ABI which mean alias to -mabi=2."
! msgstr "Software-Gleitkomma-ABI verwenden, gleichbedeutend mit -mabi=2."
  
  #: config/nds32/nds32.opt:65
  #, no-c-format
  msgid "Specify use soft floating point ABI which mean alias to -mabi=2fp+."
! msgstr "Software-Gleitkomma-ABI verwenden, gleichbedeutend mit -mabi=2fp+."
  
  #: config/nds32/nds32.opt:71
  #, no-c-format
--- 11331,11342 ----
  #: config/nds32/nds32.opt:61
  #, no-c-format
  msgid "Specify use soft floating point ABI which mean alias to -mabi=2."
! msgstr "Software-Gleitkomma-ABI verwenden, gleichbedeutend mit Â»-mabi=2Â«."
  
  #: config/nds32/nds32.opt:65
  #, no-c-format
  msgid "Specify use soft floating point ABI which mean alias to -mabi=2fp+."
! msgstr "Software-Gleitkomma-ABI verwenden, gleichbedeutend mit Â»-mabi=2fp+Â«."
  
  #: config/nds32/nds32.opt:71
  #, no-c-format
*************** msgstr "Verhindern, dass $fp wÃ¤hrend de
*** 11361,11367 ****
  #: config/nds32/nds32.opt:101
  #, no-c-format
  msgid "Forbid using $fp to access static and global variables.  This option strictly forbids fp-as-gp optimization regardless of '-mforce-fp-as-gp'."
! msgstr "Verbieten, dass mittels $fp auf statische oder globale Variablen zugegriffen wird. Diese Option verhindert die FP-als-GP-Optimierung, unabhÃ¤ngig von -mforce-fp-as-gp."
  
  #: config/nds32/nds32.opt:105
  #, no-c-format
--- 11366,11372 ----
  #: config/nds32/nds32.opt:101
  #, no-c-format
  msgid "Forbid using $fp to access static and global variables.  This option strictly forbids fp-as-gp optimization regardless of '-mforce-fp-as-gp'."
! msgstr "Verbieten, dass mittels $fp auf statische oder globale Variablen zugegriffen wird. Diese Option verhindert die FP-als-GP-Optimierung, unabhÃ¤ngig von Â»-mforce-fp-as-gpÂ«."
  
  #: config/nds32/nds32.opt:105
  #, no-c-format
*************** msgstr "Strategie zur Adresserzeugung fÃ
*** 11371,11377 ****
  #: config/nds32/nds32.opt:109
  #, no-c-format
  msgid "Known cmodel types (for use with the -mict-model= option):"
! msgstr "Bekannte Codemodelle (fÃ¼r Verwendung mit Option -mict-model=):"
  
  #: config/nds32/nds32.opt:119
  #, no-c-format
--- 11376,11382 ----
  #: config/nds32/nds32.opt:109
  #, no-c-format
  msgid "Known cmodel types (for use with the -mict-model= option):"
! msgstr "Bekannte Codemodelle (fÃ¼r Verwendung mit der Option Â»-mict-model=Â«):"
  
  #: config/nds32/nds32.opt:119
  #, no-c-format
*************** msgstr "16-Bit-Befehle erzeugen."
*** 11416,11422 ****
  #: config/nds32/nds32.opt:151
  #, no-c-format
  msgid "Insert relax hint for linker to do relaxation."
! msgstr "Lockerungs-Hinweis an Linker Ã¼bergeben, um Lockerung durchzufÃ¼hren."
  
  #: config/nds32/nds32.opt:155
  #, no-c-format
--- 11421,11427 ----
  #: config/nds32/nds32.opt:151
  #, no-c-format
  msgid "Insert relax hint for linker to do relaxation."
! msgstr "Lockerungs-Hinweis an Binder Ã¼bergeben, um Lockerung durchzufÃ¼hren."
  
  #: config/nds32/nds32.opt:155
  #, no-c-format
*************** msgstr "Die GrÃ¶ÃŸe jedes Cache-Blocks (
*** 11441,11447 ****
  #: config/nds32/nds32.opt:175
  #, no-c-format
  msgid "Known arch types (for use with the -march= option):"
! msgstr "Bekannte Architekturen (fÃ¼r Verwendung mit Option -march=):"
  
  #: config/nds32/nds32.opt:197
  #, no-c-format
--- 11446,11452 ----
  #: config/nds32/nds32.opt:175
  #, no-c-format
  msgid "Known arch types (for use with the -march= option):"
! msgstr "Bekannte Architekturen (fÃ¼r Verwendung mit der Option Â»-march=Â«):"
  
  #: config/nds32/nds32.opt:197
  #, no-c-format
*************** msgstr "CPU fÃ¼r Pipeline-Modell angeben
*** 11451,11457 ****
  #: config/nds32/nds32.opt:201
  #, no-c-format
  msgid "Known cpu types (for use with the -mcpu= option):"
! msgstr "Bekannte CPU-Typen (fÃ¼r Verwendung mit Option -mcpu=):"
  
  #: config/nds32/nds32.opt:361
  #, no-c-format
--- 11456,11462 ----
  #: config/nds32/nds32.opt:201
  #, no-c-format
  msgid "Known cpu types (for use with the -mcpu= option):"
! msgstr "Bekannte CPU-Typen (fÃ¼r Verwendung mit der Option Â»-mcpu=Â«):"
  
  #: config/nds32/nds32.opt:361
  #, no-c-format
*************** msgstr "FPU-Konfigurationswert von 0 bis
*** 11461,11467 ****
  #: config/nds32/nds32.opt:365
  #, no-c-format
  msgid "Known floating-point number of registers (for use with the -mconfig-fpu= option):"
! msgstr "Bekannte Anzahl der Gleitkomma-Register (fÃ¼r Verwendung mit der Option -mconfig-fpu=):"
  
  #: config/nds32/nds32.opt:393
  #, no-c-format
--- 11466,11472 ----
  #: config/nds32/nds32.opt:365
  #, no-c-format
  msgid "Known floating-point number of registers (for use with the -mconfig-fpu= option):"
! msgstr "Bekannte Anzahl der Gleitkomma-Register (fÃ¼r Verwendung mit der Option Â»-mconfig-fpu=Â«):"
  
  #: config/nds32/nds32.opt:393
  #, no-c-format
*************** msgstr "Konstruktor-/Destruktor-Feature
*** 11481,11487 ****
  #: config/nds32/nds32.opt:429
  #, no-c-format
  msgid "Guide linker to relax instructions."
! msgstr "Linker anweisen, Befehle zu lockern."
  
  #: config/nds32/nds32.opt:433
  #, no-c-format
--- 11486,11492 ----
  #: config/nds32/nds32.opt:429
  #, no-c-format
  msgid "Guide linker to relax instructions."
! msgstr "Binder anweisen, Befehle zu lockern."
  
  #: config/nds32/nds32.opt:433
  #, no-c-format
*************** msgstr "Gleitkommabefehle doppelter Gena
*** 11501,11507 ****
  #: config/nds32/nds32.opt:445
  #, no-c-format
  msgid "Force disable hardware loop, even use -mext-dsp."
! msgstr "Ausschalten der Hardwareschleife erzwingen, selbst wenn -mext-dsp angegeben ist."
  
  #: config/nds32/nds32.opt:449
  #, no-c-format
--- 11506,11512 ----
  #: config/nds32/nds32.opt:445
  #, no-c-format
  msgid "Force disable hardware loop, even use -mext-dsp."
! msgstr "Ausschalten der Hardwareschleife erzwingen, selbst wenn Â»-mext-dspÂ« angegeben ist."
  
  #: config/nds32/nds32.opt:449
  #, no-c-format
*************** msgstr "CPU fÃ¼r Planzwecke angeben."
*** 11536,11542 ****
  #: config/iq2000/iq2000.opt:51
  #, no-c-format
  msgid "Known IQ2000 CPUs (for use with the -mcpu= option):"
! msgstr "Bekannte IQ2000-CPUs (fÃ¼r Verwendung mit Option -mcpu=):"
  
  #: config/iq2000/iq2000.opt:61 config/mips/mips.opt:142
  #, no-c-format
--- 11541,11547 ----
  #: config/iq2000/iq2000.opt:51
  #, no-c-format
  msgid "Known IQ2000 CPUs (for use with the -mcpu= option):"
! msgstr "Bekannte IQ2000-CPUs (fÃ¼r Verwendung mit der Option Â»-mcpu=Â«):"
  
  #: config/iq2000/iq2000.opt:61 config/mips/mips.opt:142
  #, no-c-format
*************** msgstr "Kein voreingestelltes crt0.o."
*** 11551,11557 ****
  #: config/iq2000/iq2000.opt:74 config/mips/mips.opt:442
  #, no-c-format
  msgid "Put uninitialized constants in ROM (needs -membedded-data)."
! msgstr "Uninitialisierte Konstanten im ROM ablegen (benÃ¶tigt -membedded-data)."
  
  #: config/csky/csky.opt:34
  #, no-c-format
--- 11556,11562 ----
  #: config/iq2000/iq2000.opt:74 config/mips/mips.opt:442
  #, no-c-format
  msgid "Put uninitialized constants in ROM (needs -membedded-data)."
! msgstr "Uninitialisierte Konstanten im ROM ablegen (benÃ¶tigt Â»-membedded-dataÂ«)."
  
  #: config/csky/csky.opt:34
  #, no-c-format
*************** msgstr "Planung von Funktionsprolog- und
*** 11686,11707 ****
  #: config/csky/csky_tables.opt:24
  #, no-c-format
  msgid "Known CSKY CPUs (for use with the -mcpu= options):"
! msgstr "Bekannte CSKY-CPUs (fÃ¼r Verwendung mit Option -mcpu=):"
  
  #: config/csky/csky_tables.opt:205
  #, no-c-format
  msgid "Known CSKY architectures (for use with the -march= option):"
! msgstr "Bekannte CSKY-Architekturen (fÃ¼r Verwendung mit Option -march=):"
  
  #: config/csky/csky_tables.opt:227
  #, no-c-format
  msgid "Known CSKY FPUs (for use with the -mfpu= option):"
! msgstr "Bekannte CSKY-FPUs (fÃ¼r Verwendung mit Option -mfpu=):"
  
  #: config/c6x/c6x-tables.opt:24
  #, no-c-format
  msgid "Known C6X ISAs (for use with the -march= option):"
! msgstr "Bekannte C6X ISAs (fÃ¼r Verwendung mit der Option -march=):"
  
  #: config/c6x/c6x.opt:30 config/mips/mips.opt:134
  #, no-c-format
--- 11691,11712 ----
  #: config/csky/csky_tables.opt:24
  #, no-c-format
  msgid "Known CSKY CPUs (for use with the -mcpu= options):"
! msgstr "Bekannte CSKY-CPUs (fÃ¼r Verwendung mit der Option Â»-mcpu=Â«):"
  
  #: config/csky/csky_tables.opt:205
  #, no-c-format
  msgid "Known CSKY architectures (for use with the -march= option):"
! msgstr "Bekannte CSKY-Architekturen (fÃ¼r Verwendung mit der Option Â»-march=Â«):"
  
  #: config/csky/csky_tables.opt:227
  #, no-c-format
  msgid "Known CSKY FPUs (for use with the -mfpu= option):"
! msgstr "Bekannte CSKY-FPUs (fÃ¼r Verwendung mit der Option Â»-mfpu=Â«):"
  
  #: config/c6x/c6x-tables.opt:24
  #, no-c-format
  msgid "Known C6X ISAs (for use with the -march= option):"
! msgstr "Bekannte C6X ISAs (fÃ¼r Verwendung mit der Option Â»-march=Â«):"
  
  #: config/c6x/c6x.opt:30 config/mips/mips.opt:134
  #, no-c-format
*************** msgstr "Methode fÃ¼r sdata-Behandlung au
*** 11721,11727 ****
  #: config/c6x/c6x.opt:46
  #, no-c-format
  msgid "Valid arguments for the -msdata= option:"
! msgstr "GÃ¼ltige Argumente fÃ¼r die Option -msdata=:"
  
  #: config/c6x/c6x.opt:59
  #, no-c-format
--- 11726,11732 ----
  #: config/c6x/c6x.opt:46
  #, no-c-format
  msgid "Valid arguments for the -msdata= option:"
! msgstr "GÃ¼ltige Argumente fÃ¼r die Option Â»-msdata=Â«:"
  
  #: config/c6x/c6x.opt:59
  #, no-c-format
*************** msgstr "PrÃ¼fungen generieren, die bei A
*** 11826,11832 ****
  #: config/cris/cris.opt:188
  #, no-c-format
  msgid "Handle atomic builtins that may be applied to unaligned data by calling library functions. Overrides -mtrap-unaligned-atomic."
! msgstr "Bibliotheksfunktionen aufrufen, wenn atomare eingebaute Operationen auf unausgerichteten Speicher angewendet werden kÃ¶nnen. Hebt -mtrap-unaligned-atomic auf."
  
  #: config/sh/superh.opt:6
  #, no-c-format
--- 11831,11837 ----
  #: config/cris/cris.opt:188
  #, no-c-format
  msgid "Handle atomic builtins that may be applied to unaligned data by calling library functions. Overrides -mtrap-unaligned-atomic."
! msgstr "Bibliotheksfunktionen aufrufen, wenn atomare eingebaute Operationen auf unausgerichteten Speicher angewendet werden kÃ¶nnen. Hebt Â»-mtrap-unaligned-atomicÂ« auf."
  
  #: config/sh/superh.opt:6
  #, no-c-format
*************** msgstr "ELF-FDPIC-Code erzeugen."
*** 12051,12057 ****
  #: config/sh/sh.opt:223
  #, no-c-format
  msgid "Enable the use of 64-bit floating point registers in fmov instructions.  See -mdalign if 64-bit alignment is required."
! msgstr "Verwendung von 64-Bit Gleitkommaregistern in FMOV-Befehlen einschalten. Siehe auch -mdalign, wenn 64-Bit-Ausrichtung benÃ¶tigt wird."
  
  #: config/sh/sh.opt:231 config/sh/sh.opt:269
  #, no-c-format
--- 12056,12062 ----
  #: config/sh/sh.opt:223
  #, no-c-format
  msgid "Enable the use of 64-bit floating point registers in fmov instructions.  See -mdalign if 64-bit alignment is required."
! msgstr "Verwendung von 64-Bit Gleitkommaregistern in FMOV-Befehlen einschalten. Siehe auch Â»-mdalignÂ«, wenn 64-Bit-Ausrichtung benÃ¶tigt wird."
  
  #: config/sh/sh.opt:231 config/sh/sh.opt:269
  #, no-c-format
*************** msgstr "AuswÃ¤hlen, fÃ¼r welche eBPF-ISA
*** 12266,12277 ****
  #: config/bpf/bpf.opt:84
  #, no-c-format
  msgid "Valid ISA versions (for use with the -mcpu= option)"
! msgstr "GÃ¼ltige ISA-Versionen (fÃ¼r Verwendung mit der Option -mcpu=)"
  
  #: config/bpf/bpf.opt:104
  #, no-c-format
  msgid "Known assembler dialects (for use with the -masm= option)"
! msgstr "Bekannte Assemblerdialekte (fÃ¼r Verwendung mit Option Â»-masm=Â«)"
  
  #: config/bpf/bpf.opt:114
  #, no-c-format
--- 12271,12282 ----
  #: config/bpf/bpf.opt:84
  #, no-c-format
  msgid "Valid ISA versions (for use with the -mcpu= option)"
! msgstr "GÃ¼ltige ISA-Versionen (fÃ¼r Verwendung mit der Option Â»-mcpu=Â«)"
  
  #: config/bpf/bpf.opt:104
  #, no-c-format
  msgid "Known assembler dialects (for use with the -masm= option)"
! msgstr "Bekannte Assemblerdialekte (fÃ¼r Verwendung mit der Option Â»-masm=Â«)"
  
  #: config/bpf/bpf.opt:114
  #, no-c-format
*************** msgstr "-mabi=ABI\tCode erzeugen, der zu
*** 12286,12292 ****
  #: config/mips/mips.opt:36
  #, no-c-format
  msgid "Known MIPS ABIs (for use with the -mabi= option):"
! msgstr "Bekannte MIPS-ABIs (fÃ¼r Verwendung mit Option -mabi=):"
  
  #: config/mips/mips.opt:55
  #, no-c-format
--- 12291,12297 ----
  #: config/mips/mips.opt:36
  #, no-c-format
  msgid "Known MIPS ABIs (for use with the -mabi= option):"
! msgstr "Bekannte MIPS-ABIs (fÃ¼r Verwendung mit der Option Â»-mabi=Â«):"
  
  #: config/mips/mips.opt:55
  #, no-c-format
*************** msgstr "-mcode-readable=SETTING\tAngeben
*** 12326,12332 ****
  #: config/mips/mips.opt:91
  #, no-c-format
  msgid "Valid arguments to -mcode-readable=:"
! msgstr "GÃ¼ltige Argumente fÃ¼r -mcode-readable=:"
  
  #: config/mips/mips.opt:104
  #, no-c-format
--- 12331,12337 ----
  #: config/mips/mips.opt:91
  #, no-c-format
  msgid "Valid arguments to -mcode-readable=:"
! msgstr "GÃ¼ltige Argumente fÃ¼r Â»-mcode-readable=Â«:"
  
  #: config/mips/mips.opt:104
  #, no-c-format
*************** msgstr "-mnan=CODIERUNG\tDatencodierung
*** 12456,12462 ****
  #: config/mips/mips.opt:247
  #, no-c-format
  msgid "Known MIPS IEEE 754 settings (for use with the -mabs= and -mnan= options):"
! msgstr "Bekannte MIPS-IEEE-754-Einstellungen (fÃ¼r Verwendung mit Optionen -mabs= und -mnan=):"
  
  #: config/mips/mips.opt:257
  #, no-c-format
--- 12461,12467 ----
  #: config/mips/mips.opt:247
  #, no-c-format
  msgid "Known MIPS IEEE 754 settings (for use with the -mabs= and -mnan= options):"
! msgstr "Bekannte MIPS-IEEE-754-Einstellungen (fÃ¼r Verwendung mit der Optionen Â»-mabs=Â« und Â»-mnan=Â«):"
  
  #: config/mips/mips.opt:257
  #, no-c-format
*************** msgstr "Code erzeugen, der sicher mit MI
*** 12491,12497 ****
  #: config/mips/mips.opt:281
  #, no-c-format
  msgid "An alias for minterlink-compressed provided for backward-compatibility."
! msgstr "Alias fÃ¼r -minterlink-compressed; fÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤t erhalten."
  
  #: config/mips/mips.opt:285
  #, no-c-format
--- 12496,12502 ----
  #: config/mips/mips.opt:281
  #, no-c-format
  msgid "An alias for minterlink-compressed provided for backward-compatibility."
! msgstr "Alias fÃ¼r Â»-minterlink-compressedÂ«; fÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤t erhalten."
  
  #: config/mips/mips.opt:285
  #, no-c-format
*************** msgstr "-mr10k-cache-barrier=EINSTELLUNG
*** 12601,12617 ****
  #: config/mips/mips.opt:369
  #, no-c-format
  msgid "Valid arguments to -mr10k-cache-barrier=:"
! msgstr "GÃ¼ltige Argumente fÃ¼r -mr10k-cache-barrier=:"
  
  #: config/mips/mips.opt:382
  #, no-c-format
  msgid "Try to allow the linker to turn PIC calls into direct calls."
! msgstr "Dem Linker erlauben, PIC-Aufrufe in direkte Aufrufe umzuwandeln."
  
  #: config/mips/mips.opt:386
  #, no-c-format
  msgid "When generating -mabicalls code, make the code suitable for use in shared libraries."
! msgstr "Bei Erzeugung von -mabicalls den Code tauglich fÃ¼r gemeinsam genutzte Bibliotheken machen."
  
  #: config/mips/mips.opt:394
  #, no-c-format
--- 12606,12622 ----
  #: config/mips/mips.opt:369
  #, no-c-format
  msgid "Valid arguments to -mr10k-cache-barrier=:"
! msgstr "GÃ¼ltige Argumente fÃ¼r Â»-mr10k-cache-barrier=Â«:"
  
  #: config/mips/mips.opt:382
  #, no-c-format
  msgid "Try to allow the linker to turn PIC calls into direct calls."
! msgstr "Dem Binder erlauben, PIC-Aufrufe in direkte Aufrufe umzuwandeln."
  
  #: config/mips/mips.opt:386
  #, no-c-format
  msgid "When generating -mabicalls code, make the code suitable for use in shared libraries."
! msgstr "Bei Erzeugung von Â»-mabicallsÂ« den Code tauglich fÃ¼r gemeinsam genutzte Bibliotheken machen."
  
  #: config/mips/mips.opt:394
  #, no-c-format
*************** msgstr "Keinen Code mit unausgerichtetem
*** 12656,12667 ****
  #: config/mips/mips.opt:434
  #, no-c-format
  msgid "Generate code with unaligned load store for R6 (alias of -mno-strict-align)."
! msgstr "Code mit unausgerichtetem load/store fÃ¼r R6 generieren (Alias von -mno-strict-align)."
  
  #: config/mips/mips.opt:438
  #, no-c-format
  msgid "Don't generate code with unaligned load store for R6 (alias of -mstrict-align)."
! msgstr "Keinen Code mit unausgerichtetem load/store fÃ¼r R6 generieren (Alias von -mstrict-align)."
  
  #: config/mips/mips.opt:446
  #, no-c-format
--- 12661,12672 ----
  #: config/mips/mips.opt:434
  #, no-c-format
  msgid "Generate code with unaligned load store for R6 (alias of -mno-strict-align)."
! msgstr "Code mit unausgerichtetem load/store fÃ¼r R6 generieren (Alias von Â»-mno-strict-alignÂ«)."
  
  #: config/mips/mips.opt:438
  #, no-c-format
  msgid "Don't generate code with unaligned load store for R6 (alias of -mstrict-align)."
! msgstr "Keinen Code mit unausgerichtetem load/store fÃ¼r R6 generieren (Alias von Â»-mstrict-alignÂ«)."
  
  #: config/mips/mips.opt:446
  #, no-c-format
*************** msgstr "Loongson-Erweiterungsbefehle R2
*** 12736,12752 ****
  #: config/mips/mips-tables.opt:24
  #, no-c-format
  msgid "Known MIPS CPUs (for use with the -march= and -mtune= options):"
! msgstr "Bekannte MIPS-CPUs (fÃ¼r Verwendung mit Optionen -march= und -mtune=):"
  
  #: config/mips/mips-tables.opt:28
  #, no-c-format
  msgid "Known MIPS ISA levels (for use with the -mips option):"
! msgstr "Bekannte MIPS-ISA-Stufen (fÃ¼r Verwendung mit Option -mips):"
  
  #: config/arc/arc-tables.opt:25
  #, no-c-format
  msgid "Known ARC CPUs (for use with the -mcpu= option):"
! msgstr "Bekannte ARC-CPUs (fÃ¼r Verwendung mit Option -mcpu=):"
  
  #: config/arc/arc.opt:26
  #, no-c-format
--- 12741,12757 ----
  #: config/mips/mips-tables.opt:24
  #, no-c-format
  msgid "Known MIPS CPUs (for use with the -march= and -mtune= options):"
! msgstr "Bekannte MIPS-CPUs (fÃ¼r Verwendung mit der Optionen Â»-march=Â« und Â»-mtune=Â«):"
  
  #: config/mips/mips-tables.opt:28
  #, no-c-format
  msgid "Known MIPS ISA levels (for use with the -mips option):"
! msgstr "Bekannte MIPS-ISA-Stufen (fÃ¼r Verwendung mit der Option Â»-mipsÂ«):"
  
  #: config/arc/arc-tables.opt:25
  #, no-c-format
  msgid "Known ARC CPUs (for use with the -mcpu= option):"
! msgstr "Bekannte ARC-CPUs (fÃ¼r Verwendung mit der Option Â»-mcpu=Â«):"
  
  #: config/arc/arc.opt:26
  #, no-c-format
*************** msgstr "ARCompact-32-Bit-Code fÃ¼r ARC60
*** 12771,12777 ****
  #: config/arc/arc.opt:42
  #, no-c-format
  msgid "Same as -mA6."
! msgstr "Identisch zu -mA6."
  
  #: config/arc/arc.opt:46
  #, no-c-format
--- 12776,12782 ----
  #: config/arc/arc.opt:42
  #, no-c-format
  msgid "Same as -mA6."
! msgstr "Identisch zu Â»-mA6Â«."
  
  #: config/arc/arc.opt:46
  #, no-c-format
*************** msgstr "ARCompact-32-Bit-Code fÃ¼r ARC70
*** 12786,12792 ****
  #: config/arc/arc.opt:54
  #, no-c-format
  msgid "Same as -mA7."
! msgstr "Identisch zu -mA7."
  
  #: config/arc/arc.opt:58
  #, no-c-format
--- 12791,12797 ----
  #: config/arc/arc.opt:54
  #, no-c-format
  msgid "Same as -mA7."
! msgstr "Identisch zu Â»-mA7Â«."
  
  #: config/arc/arc.opt:58
  #, no-c-format
*************** msgstr "-mcpu=CPU\tCode fÃ¼r ARC-Variant
*** 12916,12922 ****
  #: config/arc/arc.opt:238
  #, no-c-format
  msgid "Size optimization level: 0:none 1:opportunistic 2: regalloc 3:drop align, -Os."
! msgstr "GrÃ¶ÃŸenoptimierungsstufe: 0:keine 1:vorteilhaft 2:regalloc 3:drop align, -Os."
  
  #: config/arc/arc.opt:246
  #, no-c-format
--- 12921,12927 ----
  #: config/arc/arc.opt:238
  #, no-c-format
  msgid "Size optimization level: 0:none 1:opportunistic 2: regalloc 3:drop align, -Os."
! msgstr "GrÃ¶ÃŸenoptimierungsstufe: 0:keine 1:vorteilhaft 2:regalloc 3:drop align, Â»-OsÂ«."
  
  #: config/arc/arc.opt:246
  #, no-c-format
*************** msgstr "Erweiterung fÃ¼r 64-Bit-Zeitstem
*** 13016,13037 ****
  #: config/arc/arc.opt:388
  #, no-c-format
  msgid "Pass -EB option through to linker."
! msgstr "Option -EB an den Linker Ã¼bergeben."
  
  #: config/arc/arc.opt:392
  #, no-c-format
  msgid "Pass -EL option through to linker."
! msgstr "Option -EL an den Linker Ã¼bergeben."
  
  #: config/arc/arc.opt:396
  #, no-c-format
  msgid "Pass -marclinux option through to linker."
! msgstr "Option -marclinux an den Linker Ã¼bergeben."
  
  #: config/arc/arc.opt:400
  #, no-c-format
  msgid "Pass -marclinux_prof option through to linker."
! msgstr "Option -marclinux_prof an den Linker Ã¼bergeben."
  
  #: config/arc/arc.opt:409
  #, no-c-format
--- 13021,13042 ----
  #: config/arc/arc.opt:388
  #, no-c-format
  msgid "Pass -EB option through to linker."
! msgstr "Option Â»-EBÂ« an den Binder Ã¼bergeben."
  
  #: config/arc/arc.opt:392
  #, no-c-format
  msgid "Pass -EL option through to linker."
! msgstr "Option Â»-ELÂ« an den Binder Ã¼bergeben."
  
  #: config/arc/arc.opt:396
  #, no-c-format
  msgid "Pass -marclinux option through to linker."
! msgstr "Option Â»-marclinuxÂ« an den Binder Ã¼bergeben."
  
  #: config/arc/arc.opt:400
  #, no-c-format
  msgid "Pass -marclinux_prof option through to linker."
! msgstr "Option Â»-marclinux_profÂ« an den Binder Ã¼bergeben."
  
  #: config/arc/arc.opt:409
  #, no-c-format
*************** msgstr "Die Opcodes ENTER_S und LEAVE_S
*** 13111,13122 ****
  #: config/vxworks-smp.opt:25
  #, no-c-format
  msgid "Select VxWorks SMP C runtimes for linking."
! msgstr "SMP-C-Laufzeiten von VxWorks zum Linken auswÃ¤hlen."
  
  #: lto/lang.opt:50
  #, no-c-format
  msgid "Set linker output type (used internally during LTO optimization)."
! msgstr "Ausgabeart des Linkers festlegen (wird intern wÃ¤hrend der LTO-Optimierung verwendet)."
  
  #: lto/lang.opt:54
  #, no-c-format
--- 13116,13127 ----
  #: config/vxworks-smp.opt:25
  #, no-c-format
  msgid "Select VxWorks SMP C runtimes for linking."
! msgstr "SMP-C-Laufzeiten von VxWorks zum Binden auswÃ¤hlen."
  
  #: lto/lang.opt:50
  #, no-c-format
  msgid "Set linker output type (used internally during LTO optimization)."
! msgstr "Ausgabeart des Binders festlegen (wird intern wÃ¤hrend der LTO-Optimierung verwendet)."
  
  #: lto/lang.opt:54
  #, no-c-format
*************** msgstr "--help=<Klasse>\tBeschreibungen
*** 13226,13232 ****
  #: common.opt:420
  #, no-c-format
  msgid "Display target specific command line options (including assembler and linker options)."
! msgstr "Zielspezifische Befehlszeilenoptionen (einschlieÃŸlich Assembler- und Linker-Optionen) anzeigen."
  
  #: common.opt:472
  #, no-c-format
--- 13231,13237 ----
  #: common.opt:420
  #, no-c-format
  msgid "Display target specific command line options (including assembler and linker options)."
! msgstr "Zielspezifische Befehlszeilenoptionen (einschlieÃŸlich Assembler- und Binder-Optionen) anzeigen."
  
  #: common.opt:472
  #, no-c-format
*************** msgstr "Aggressiv auf GrÃ¶ÃŸe statt Gesc
*** 13256,13262 ****
  #: common.opt:528
  #, no-c-format
  msgid "This switch is deprecated; use -Wextra instead."
! msgstr "Dieser Schalter ist veraltet; stattdessen -Wextra verwenden."
  
  #: common.opt:541
  #, no-c-format
--- 13261,13267 ----
  #: common.opt:528
  #, no-c-format
  msgid "This switch is deprecated; use -Wextra instead."
! msgstr "Dieser Schalter ist veraltet; stattdessen Â»-WextraÂ« verwenden."
  
  #: common.opt:541
  #, no-c-format
*************** msgstr "Warnen, wenn ein Zeiger oder ein
*** 13421,13427 ****
  #: common.opt:706
  #, no-c-format
  msgid "Warn about some C++ One Definition Rule violations during link time optimization."
! msgstr "WÃ¤hrend der Optimierungen zur Linkzeit bei einigen Verletzungen der One-Definition-Rule aus C++ warnen."
  
  #: common.opt:710
  #, no-c-format
--- 13426,13432 ----
  #: common.opt:706
  #, no-c-format
  msgid "Warn about some C++ One Definition Rule violations during link time optimization."
! msgstr "WÃ¤hrend der Optimierungen zur Bindezeit bei einigen Verletzungen der One-Definition-Rule aus C++ warnen."
  
  #: common.opt:710
  #, no-c-format
*************** msgstr "Bei Ãœberlauf in arithmetischen
*** 13431,13437 ****
  #: common.opt:714
  #, no-c-format
  msgid "During link time optimization warn about mismatched types of global declarations."
! msgstr "WÃ¤hrend der Optimierungen zur Linkzeit bei unpassenden Typen von globalen Deklarationen warnen."
  
  #: common.opt:718
  #, no-c-format
--- 13436,13442 ----
  #: common.opt:714
  #, no-c-format
  msgid "During link time optimization warn about mismatched types of global declarations."
! msgstr "WÃ¤hrend der Optimierungen zur Bindezeit bei unpassenden Typen von globalen Deklarationen warnen."
  
  #: common.opt:718
  #, no-c-format
*************** msgstr "Bei RÃ¼ckgabe eines Zeigers/Refe
*** 13456,13462 ****
  #: common.opt:734
  #, no-c-format
  msgid "Warn when one variable shadows another.  Same as -Wshadow=global."
! msgstr "Warnen, wenn eine Variable eine andere Ã¼berdeckt. Entspricht -Wshadow=global."
  
  #: common.opt:738
  #, no-c-format
--- 13461,13467 ----
  #: common.opt:734
  #, no-c-format
  msgid "Warn when one variable shadows another.  Same as -Wshadow=global."
! msgstr "Warnen, wenn eine Variable eine andere Ã¼berdeckt. Entspricht Â»-Wshadow=globalÂ«."
  
  #: common.opt:738
  #, no-c-format
*************** msgstr "Bei virtuellen Methoden in C++ w
*** 13541,13547 ****
  #: common.opt:816
  #, no-c-format
  msgid "Warn about statements between switch's controlling expression and the first case."
! msgstr "Bei Anweisungen warnen, die zwischen Â»switch (...)Â« und dem ersten Â»case:Â« stehen."
  
  #: common.opt:821
  #, no-c-format
--- 13546,13552 ----
  #: common.opt:816
  #, no-c-format
  msgid "Warn about statements between switch's controlling expression and the first case."
! msgstr "Bei Anweisungen warnen, die zwischen Â»switch (â€¦)Â« und dem ersten Â»case:Â« stehen."
  
  #: common.opt:821
  #, no-c-format
*************** msgstr "Warnungen aus System-Headern nic
*** 13551,13557 ****
  #: common.opt:825
  #, no-c-format
  msgid "Warn if a comparison always evaluates to true or false."
! msgstr "Warnen, wenn ein Vergleich immer zu Â»wahrÂ« oder Â»falschÂ« auswertet."
  
  #: common.opt:829
  #, no-c-format
--- 13556,13562 ----
  #: common.opt:825
  #, no-c-format
  msgid "Warn if a comparison always evaluates to true or false."
! msgstr "Warnen, wenn ein Vergleich immer zu Â»trueÂ« oder Â»falseÂ« auswertet."
  
  #: common.opt:829
  #, no-c-format
*************** msgstr "Warnen, wenn ein Trampolin gener
*** 13561,13572 ****
  #: common.opt:833
  #, no-c-format
  msgid "Warn about cases where -ftrivial-auto-var-init cannot initialize an auto variable."
! msgstr "Vor FÃ¤llen warnen, in denen -ftrivial-auto-var-init eine Auto-Variable nicht initialisieren kann."
  
  #: common.opt:837
  #, no-c-format
  msgid "Warn if a comparison is always true or always false due to the limited range of the data type."
! msgstr "Warnen, wenn ein Vergleich durch beschrÃ¤nkten Wertebereich des Datentyps stets Â»wahrÂ« oder Â»unwahrÂ« ist."
  
  #: common.opt:841
  #, no-c-format
--- 13566,13577 ----
  #: common.opt:833
  #, no-c-format
  msgid "Warn about cases where -ftrivial-auto-var-init cannot initialize an auto variable."
! msgstr "Vor FÃ¤llen warnen, in denen Â»-ftrivial-auto-var-initÂ« eine Auto-Variable nicht initialisieren kann."
  
  #: common.opt:837
  #, no-c-format
  msgid "Warn if a comparison is always true or always false due to the limited range of the data type."
! msgstr "Warnen, wenn ein Vergleich durch beschrÃ¤nkten Wertebereich des Datentyps stets Â»trueÂ« oder Â»falseÂ« ist."
  
  #: common.opt:841
  #, no-c-format
*************** msgstr "Bei mÃ¶glicherweise nicht initia
*** 13581,13587 ****
  #: common.opt:853
  #, no-c-format
  msgid "Enable all -Wunused- warnings."
! msgstr "Alle -Wunused- Warnungen einschalten."
  
  #: common.opt:857
  #, no-c-format
--- 13586,13592 ----
  #: common.opt:853
  #, no-c-format
  msgid "Enable all -Wunused- warnings."
! msgstr "Alle Â»-WunusedÂ«-Warnungen einschalten."
  
  #: common.opt:857
  #, no-c-format
*************** msgstr "Warnen, wenn eine Variable nicht
*** 13621,13627 ****
  #: common.opt:885
  #, no-c-format
  msgid "Warn in case profiles in -fprofile-use do not match."
! msgstr "Warnen, wenn Profile in -fprofile-use nicht zueinander passen."
  
  #: common.opt:889
  #, no-c-format
--- 13626,13632 ----
  #: common.opt:885
  #, no-c-format
  msgid "Warn in case profiles in -fprofile-use do not match."
! msgstr "Warnen, wenn Profile in Â»-fprofile-useÂ« nicht zueinander passen."
  
  #: common.opt:889
  #, no-c-format
*************** msgstr "-fpath-coverage-limit=<Anzahl> F
*** 13641,13652 ****
  #: common.opt:903
  #, no-c-format
  msgid "Warn if a function exceeds the number of paths (controlled by -fpath-coverage-limit) and path coverage give up instrumenting the function. The limit is approximate and conservative and coverage might give up even if the actual number is slightly below the limit."
! msgstr "Warnen, wenn eine Funktion die Anzahl der Pfade (gesteuert durch -fpath-coverage-limit) Ã¼berschreitet und die Pfadabdeckung die Instrumentierung der Funktion aufgibt. Der Grenzwert ist annÃ¤hernd und konservativ, und die Abdeckung kÃ¶nnte auch dann aufgeben, wenn die tatsÃ¤chliche Anzahl etwas unter dem Grenzwert liegt."
  
  #: common.opt:910
  #, no-c-format
  msgid "Warn in case profiles in -fprofile-use do not exist."
! msgstr "Warnen, wenn Profile in -fprofile-use nicht existieren."
  
  #: common.opt:914
  #, no-c-format
--- 13646,13657 ----
  #: common.opt:903
  #, no-c-format
  msgid "Warn if a function exceeds the number of paths (controlled by -fpath-coverage-limit) and path coverage give up instrumenting the function. The limit is approximate and conservative and coverage might give up even if the actual number is slightly below the limit."
! msgstr "Warnen, wenn eine Funktion die Anzahl der Pfade (gesteuert durch Â»-fpath-coverage-limitÂ«) Ã¼berschreitet und die Pfadabdeckung die Instrumentierung der Funktion aufgibt. Der Grenzwert ist annÃ¤hernd und konservativ, und die Abdeckung kÃ¶nnte auch dann aufgeben, wenn die tatsÃ¤chliche Anzahl etwas unter dem Grenzwert liegt."
  
  #: common.opt:910
  #, no-c-format
  msgid "Warn in case profiles in -fprofile-use do not exist."
! msgstr "Warnen, wenn Profile in Â»-fprofile-useÂ« nicht existieren."
  
  #: common.opt:914
  #, no-c-format
*************** msgstr "Nach dem Erkennen von undefinier
*** 13751,13757 ****
  #: common.opt:1158
  #, no-c-format
  msgid "This switch is deprecated; use -fsanitize-recover= instead."
! msgstr "Dieser Schalter ist veraltet; stattdessen -fsanitize-recover= verwenden."
  
  #: common.opt:1162
  #, no-c-format
--- 13756,13762 ----
  #: common.opt:1158
  #, no-c-format
  msgid "This switch is deprecated; use -fsanitize-recover= instead."
! msgstr "Dieser Schalter ist veraltet; stattdessen Â»-fsanitize-recover=Â« verwenden."
  
  #: common.opt:1162
  #, no-c-format
*************** msgstr "FÃ¼r das Bereinigen von undefini
*** 13761,13767 ****
  #: common.opt:1172
  #, no-c-format
  msgid "This switch is deprecated; use -fsanitize-trap= instead."
! msgstr "Dieser Schalter ist veraltet; stattdessen -fsanitize-trap= verwenden."
  
  #: common.opt:1176
  #, no-c-format
--- 13766,13772 ----
  #: common.opt:1172
  #, no-c-format
  msgid "This switch is deprecated; use -fsanitize-trap= instead."
! msgstr "Dieser Schalter ist veraltet; stattdessen Â»-fsanitize-trap=Â« verwenden."
  
  #: common.opt:1176
  #, no-c-format
*************** msgstr "Uninitialisierte globale Symbole
*** 13861,13872 ****
  #: common.opt:1281
  #, no-c-format
  msgid "-fcompare-debug[=<opts>]\tCompile with and without e.g. -gtoggle, and compare the final-insns dump."
! msgstr "-fcompare-debug[=<Optionen>]\tMit und ohne z.B. -gtoggle kompilieren, und den Dump der Â»final-insnsÂ« vergleichen."
  
  #: common.opt:1285
  #, no-c-format
  msgid "Run only the second compilation of -fcompare-debug."
! msgstr "Nur die zweite Kompilierung von -fcompare-debug laufen lassen."
  
  #: common.opt:1289
  #, no-c-format
--- 13866,13877 ----
  #: common.opt:1281
  #, no-c-format
  msgid "-fcompare-debug[=<opts>]\tCompile with and without e.g. -gtoggle, and compare the final-insns dump."
! msgstr "-fcompare-debug[=<Optionen>]\tMit und ohne z.B. Â»-gtoggleÂ« kompilieren, und den Dump der Â»final-insnsÂ« vergleichen."
  
  #: common.opt:1285
  #, no-c-format
  msgid "Run only the second compilation of -fcompare-debug."
! msgstr "Nur die zweite Kompilierung von Â»-fcompare-debugÂ« laufen lassen."
  
  #: common.opt:1289
  #, no-c-format
*************** msgstr "Zwei BefehlskombinationsdurchlÃ¤
*** 14318,14327 ****
  msgid "Mark all loops as parallel."
  msgstr "Alle Schleifen als parallel markieren."
  
! #: common.opt:1852 common.opt:1860 common.opt:3249
  #, no-c-format
  msgid "Enable loop nest transforms.  Same as -floop-nest-optimize."
! msgstr "Schleifenschachtelungs-Umwandlungen einschalten. Entspricht -floop-next-optimize."
  
  #: common.opt:1856
  #, no-c-format
--- 14323,14332 ----
  msgid "Mark all loops as parallel."
  msgstr "Alle Schleifen als parallel markieren."
  
! #: common.opt:1852 common.opt:1860 common.opt:3246
  #, no-c-format
  msgid "Enable loop nest transforms.  Same as -floop-nest-optimize."
! msgstr "Schleifenschachtelungs-Umwandlungen einschalten. Entspricht Â»-floop-nest-optimizeÂ«."
  
  #: common.opt:1856
  #, no-c-format
*************** msgstr "-finline-stringops[=memcmp|memcp
*** 14476,14482 ****
  #: common.opt:2058
  #, no-c-format
  msgid "Equivalent to -fcf-protection=full."
! msgstr "Ã„quivalent zu -fcf-protection=full."
  
  #: common.opt:2062
  #, no-c-format
--- 14481,14487 ----
  #: common.opt:2058
  #, no-c-format
  msgid "Equivalent to -fcf-protection=full."
! msgstr "Ã„quivalent zu Â»-fcf-protection=fullÂ«."
  
  #: common.opt:2062
  #, no-c-format
*************** msgstr "Inkrementelle LTO einschalten, m
*** 14678,16089 ****
  msgid "Number of cache entries in incremental LTO after which to prune old entries."
  msgstr "Anzahl der Cache-EintrÃ¤ge in der inkrementellen LTO, nach der alte EintrÃ¤ge gelÃ¶scht werden sollen."
  
! #: common.opt:2304
  #, no-c-format
  msgid "Specify the algorithm to partition symbols and vars at linktime."
! msgstr "Algorithmus, mit dem Symbole und Variablen zur Linkzeit partitioniert werden."
  
! #: common.opt:2309
  #, no-c-format
  msgid "Use zlib/zstd compression level <number> for IL."
  msgstr "Kompressionsstufe <Zahl> fÃ¼r zlib/zstd fÃ¼r IL verwenden."
  
! #: common.opt:2317
  #, no-c-format
  msgid "Report various link-time optimization statistics."
! msgstr "Verschiedene Statistiken Ã¼ber Linkzeit-Optimierung ausgeben."
  
! #: common.opt:2321
  #, no-c-format
  msgid "Report various link-time optimization statistics for WPA only."
! msgstr "Nur in WPA verschiedene Statistiken Ã¼ber Linkzeit-Optimierung ausgeben."
  
! #: common.opt:2325
  #, no-c-format
  msgid "Set errno after built-in math functions."
  msgstr "Nach eingebauten Mathematikfunktionen errno setzen."
  
! #: common.opt:2329
  #, no-c-format
  msgid "-fmax-errors=<number>\tMaximum number of errors to report."
  msgstr "-fmax-errors=<Anzahl>\tHÃ¶chstzahl der zu meldenden Fehler."
  
! #: common.opt:2333
  #, no-c-format
  msgid "Allow removal of malloc and free pairs when allocated block is unused."
  msgstr "Das Entfernen von malloc- und free-Paaren erlauben, wenn der allozierte Block ungenutzt ist."
  
! #: common.opt:2340
  #, no-c-format
  msgid "Report on permanent memory allocation."
  msgstr "Ãœber dauerhafte Speicherreservierung berichten."
  
! #: common.opt:2344
  #, no-c-format
  msgid "Report on permanent memory allocation in WPA only."
  msgstr "Nur in WPA Ã¼ber dauerhafte Speicherreservierung berichten."
  
! #: common.opt:2351
  #, no-c-format
  msgid "Attempt to merge identical constants and constant variables."
  msgstr "Versuchen, identische Konstanten und konstante Variablen zu verschmelzen."
  
! #: common.opt:2355
  #, no-c-format
  msgid "Attempt to merge identical constants across compilation units."
  msgstr "Versuchen, identische Konstanten Ã¼ber Ãœbersetzungseinheiten hinweg zu verschmelzen."
  
! #: common.opt:2359
  #, no-c-format
  msgid "Attempt to merge identical debug strings across compilation units."
  msgstr "Versuchen, identische Zeichenketten zur Fehlersuche Ã¼ber Ãœbersetzungseinheiten hinweg zu verschmelzen."
  
! #: common.opt:2363
  #, no-c-format
  msgid "-fmessage-length=<number>\tLimit diagnostics to <number> characters per line.  0 suppresses line-wrapping."
  msgstr "-fmessage-length=<Anzahl>\tDiagnosemeldungen auf <Anzahl> Zeichen pro Zeile beschrÃ¤nken. 0 unterdrÃ¼ckt Zeilenumbruch."
  
! #: common.opt:2367
  #, no-c-format
  msgid "Align the start of every function."
  msgstr "Die AnfÃ¤nge jeder Funktion ausrichten."
  
! #: common.opt:2371
  #, no-c-format
  msgid "Perform SMS based modulo scheduling before the first scheduling pass."
  msgstr "SMS-basierte modulo-Planung vor erstem Planungsdurchlauf durchfÃ¼hren."
  
! #: common.opt:2375
  #, no-c-format
  msgid "Perform SMS based modulo scheduling with register moves allowed."
  msgstr "SMS-basierte modulo-Planung mit erlaubten Register-Verschiebungen durchfÃ¼hren."
  
! #: common.opt:2379
  #, no-c-format
  msgid "Move loop invariant computations out of loops."
  msgstr "Berechnung der Schleifeninvarianten auÃŸerhalb der Schleifen legen."
  
! #: common.opt:2383
  #, no-c-format
  msgid "Move stores out of loops."
  msgstr "Speicheroperationen aus Schleifen herausverschieben."
  
! #: common.opt:2387
  #, no-c-format
  msgid "Building block for specs-based multilib-aware TFLAGS."
  msgstr "Baustein fÃ¼r specs-basierte multilib-bewusste TFLAGS."
  
! #: common.opt:2391
  #, no-c-format
  msgid "Use the RTL dead code elimination pass."
  msgstr "Den RTL-Durchlauf zur Entfernung toten Codes verwenden."
  
! #: common.opt:2395
  #, no-c-format
  msgid "Use the RTL dead store elimination pass."
  msgstr "Den RTL-Durchlauf zur Entfernung toter Speicherungen verwenden."
  
! #: common.opt:2399
  #, no-c-format
  msgid "Enable/Disable the traditional scheduling in loops that already passed modulo scheduling."
  msgstr "Traditionelle Planung in Schleifen, die bereits Modulo-Planung unterzogen wurden, einschalten/ausschalten."
  
! #: common.opt:2403
  #, no-c-format
  msgid "Support synchronous non-call exceptions."
  msgstr "Synchrone Nicht-Aufruf-Ausnahmen unterstÃ¼tzen."
  
! #: common.opt:2410
  #, no-c-format
  msgid "-foffload-options=<targets>=<options>\tSpecify options for the offloading targets."
  msgstr "-foffload-options=<Ziele>=<Optionen>\tOffloading-Ziele und deren Optionen angeben."
  
! #: common.opt:2414
  #, no-c-format
  msgid "-foffload-abi=[lp64|ilp32]\tSet the ABI to use in an offload compiler."
  msgstr "-foffload-abi=[lp64|ilp32]\tFestlegen, welche ABI in einem Offload-Compiler verwendet wird."
  
! #: common.opt:2427
  #, no-c-format
  msgid "-foffload-abi-host-opts=<options>\tSpecify host ABI options."
  msgstr "-foffload-abi-host-opts=<options>\tHost-ABI-Optionen festlegen."
  
! #: common.opt:2431
  #, no-c-format
  msgid "When possible do not generate stack frames."
  msgstr "Wenn mÃ¶glich, keine Stapelrahmen erzeugen."
  
! #: common.opt:2438
  #, no-c-format
  msgid "Generate SIMD clones for functions with the OpenMP declare target directive."
  msgstr "SIMD-Klone fÃ¼r Funktionen mit OpenMP-Declare-Ziel-Direktive erzeugen."
  
! #: common.opt:2457
  #, no-c-format
  msgid "Enable all optimization info dumps on stderr."
  msgstr "Alle Informationen Ã¼ber Optimierungen auf stderr einschalten."
  
! #: common.opt:2461
  #, no-c-format
  msgid "-fopt-info[-<type>=filename]\tDump compiler optimization details."
  msgstr "-fopt-info[-<Typ>=Dateiname]\tOptimierungsdetails des Compilers ausgeben."
  
! #: common.opt:2465
  #, no-c-format
  msgid "Write a SRCFILE.opt-record.json file detailing what optimizations were performed."
  msgstr "Eine QUELLDATEI.opt-record.json schreiben mit Details, welche Optimierungen durchgefÃ¼hrt wurden."
  
! #: common.opt:2469
  #, no-c-format
  msgid "Detect loops calculating CRC and replace with faster implementation. If the target supports CRC instruction and the CRC loop uses the same polynomial as the one used in the CRC instruction, directly replace with the corresponding CRC instruction. Otherwise, if the target supports carry-less-multiplication instruction, generate CRC using it. If neither case applies, generate table-based CRC."
  msgstr "Schleifen, die CRC berechnen, erkennen und durch eine schnellere Implementierung ersetzen. Wenn das Zielsystem den CRC-Befehl unterstÃ¼tzt und die CRC-Schleife dasselbe Polynom wie der CRC-Befehl verwendet, wird sie direkt durch den entsprechenden CRC-Befehl ersetzt. Wenn das Zielsystem den Befehl zur Ã¼bertragslosen Multiplikation unterstÃ¼tzt, wird die CRC mit diesem Befehl erzeugt. Trifft keiner der beiden FÃ¤lle zu, wird die CRC tabellenbasiert berechnet."
  
! #: common.opt:2483
  #, no-c-format
  msgid "Optimize sibling and tail recursive calls."
  msgstr "Geschwister- und endrekursive Aufrufe optimieren."
  
! #: common.opt:2487
  #, no-c-format
  msgid "Insert path profiling code."
  msgstr "Pfadprofilierungscode einfÃ¼gen."
  
! #: common.opt:2491
  #, no-c-format
  msgid "Perform partial inlining."
  msgstr "Teilweises Inlining durchfÃ¼hren."
  
! #: common.opt:2495 common.opt:2499
  #, no-c-format
  msgid "Report on memory allocation before interprocedural optimization."
  msgstr "Ãœber Speicherbelegung vor zwischenprozeduraler Optimierung berichten."
  
! #: common.opt:2503
  #, no-c-format
  msgid "Pack structure members together without holes."
  msgstr "Strukturelemente ohne LÃ¼cken zusammenpacken."
  
! #: common.opt:2507
  #, no-c-format
  msgid "-fpack-struct=<number>\tSet initial maximum structure member alignment."
  msgstr "-fpack-struct=<Zahl>\tAnfÃ¤ngliche grÃ¶ÃŸte Ausrichtung fÃ¼r Strukturelemente festlegen."
  
! #: common.opt:2511
  #, no-c-format
  msgid "Return small aggregates in memory, not registers."
  msgstr "Kleine Aggregate Ã¼ber Speicher, nicht Register, zurÃ¼ckgeben."
  
! #: common.opt:2515
  #, no-c-format
  msgid "Perform loop peeling."
  msgstr "Schleifen-SchÃ¤lung durchfÃ¼hren."
  
! #: common.opt:2519
  #, no-c-format
  msgid "Enable machine specific peephole optimizations."
  msgstr "Maschinenspezifische Guckloch-Optimierungen einschalten."
  
! #: common.opt:2523
  #, no-c-format
  msgid "Enable an RTL peephole pass before sched2."
  msgstr "Einen RTL-Guckloch-Durchlauf vor sched2 einschalten."
  
! #: common.opt:2527
  #, no-c-format
  msgid "Generate position-independent code if possible (large mode)."
  msgstr "Wenn mÃ¶glich, lageunabhÃ¤ngigen Code erzeugen (large mode)."
  
! #: common.opt:2531
  #, no-c-format
  msgid "Generate position-independent code for executables if possible (large mode)."
  msgstr "Wenn mÃ¶glich, lageunabhÃ¤ngigen Code fÃ¼r ausfÃ¼hrbare Dateien erzeugen (large mode)."
  
! #: common.opt:2535
  #, no-c-format
  msgid "Generate position-independent code if possible (small mode)."
  msgstr "Wenn mÃ¶glich, positionsunabhÃ¤ngigen Code erzeugen (small mode)."
  
! #: common.opt:2539
  #, no-c-format
  msgid "Generate position-independent code for executables if possible (small mode)."
  msgstr "Wenn mÃ¶glich, positionsunabhÃ¤ngigen Code fÃ¼r ausfÃ¼hrbare Dateien erzeugen (small mode)."
  
! #: common.opt:2543
  #, no-c-format
  msgid "Use PLT for PIC calls (-fno-plt: load the address from GOT at call site)."
  msgstr "PLT fÃ¼r PIC-Aufrufe verwenden (-fno-plt: die Adresse beim Aufrufer aus der GOT laden)."
  
! #: common.opt:2547
  #, no-c-format
  msgid "Specify a plugin to load."
  msgstr "Zu ladendes Plugin angeben."
  
! #: common.opt:2551
  #, no-c-format
  msgid "-fplugin-arg-<name>-<key>[=<value>]\tSpecify argument <key>=<value> for plugin <name>."
  msgstr "-fplugin-arg-<Name>-<SchlÃ¼ssel>[=<Wert>]\tArgument <SchlÃ¼ssel>=<Wert> fÃ¼r Plugin <Name> angeben."
  
! #: common.opt:2555
  #, no-c-format
  msgid "Run predictive commoning optimization."
  msgstr "Vorhersehende vereinheitlichende Optimierung durchlaufen."
  
! #: common.opt:2559
  #, no-c-format
  msgid "Generate prefetch instructions, if available, for arrays in loops."
  msgstr "Wenn verfÃ¼gbar, Prefetch-Befehle fÃ¼r Arrays in Schleifen erzeugen."
  
! #: common.opt:2563
  #, no-c-format
  msgid "Enable basic program profiling code."
  msgstr "Einfachen Programm-Profilierungscode einschalten."
  
! #: common.opt:2567
  #, no-c-format
  msgid "Generate absolute source path names for gcov."
  msgstr "Absolute Quellpfade fÃ¼r gcov erzeugen."
  
! #: common.opt:2571
  #, no-c-format
  msgid "Insert arc-based program profiling code."
  msgstr "Arc-basierten Programm-Profilierungscode einfÃ¼gen."
  
! #: common.opt:2575
  #, no-c-format
  msgid "Insert condition coverage profiling code."
  msgstr "Code einfÃ¼gen, um die Bedingungsabdeckung zu messen."
  
! #: common.opt:2579
  #, no-c-format
  msgid "Set the top-level directory for storing the profile data. The default is 'pwd'."
  msgstr "Basisverzeichnis zum Speichern der Profildaten setzen. Vorgabe ist das aktuelle Verzeichnis."
  
! #: common.opt:2584
  #, no-c-format
  msgid "Select the name for storing the profile note file."
  msgstr "Name zum Speichern der Profilingnotizen festlegen."
  
! #: common.opt:2588
  #, no-c-format
  msgid "Enable correction of flow inconsistent profile data input."
  msgstr "Korrektur fluss-unstimmiger Profildateneingabe einschalten."
  
! #: common.opt:2592
  #, no-c-format
  msgid "-fprofile-update=[single|atomic|prefer-atomic]\tSet the profile update method."
  msgstr "-fprofile-update=[single|atomic|prefer-atomic]\tMethode fÃ¼r Profilupdates festlegen."
  
! #: common.opt:2596
  #, no-c-format
  msgid "Instrument only functions from files whose name matches any of the regular expressions (separated by semi-colons)."
  msgstr "Funktionen nur aus Dateien instrumentieren, deren Namen zu einem der regulÃ¤ren AusdrÃ¼cke passen (durch Semikolon getrennt)."
  
! #: common.opt:2600
  #, no-c-format
  msgid "Instrument only functions from files whose name does not match any of the regular expressions (separated by semi-colons)."
  msgstr "Funktionen nur aus Dateien instrumentieren, deren Namen zu keinem der regulÃ¤ren AusdrÃ¼cke passen (durch Semikolon getrennt)."
  
! #: common.opt:2616
  #, no-c-format
  msgid "-fprofile-reproducible=[serial|parallel-runs|multithreaded]\tControl level of reproducibility of profile gathered by -fprofile-generate."
  msgstr "-fprofile-reproducible=[serial|parallel-runs|multithreaded]\tStufe fÃ¼r die Reproduzierbarkeit des mit Â»-fprofile-generateÂ« generierten Profils festlegen."
  
! #: common.opt:2632
  #, no-c-format
  msgid "Remove prefix from absolute path before mangling name for -fprofile-generate= and -fprofile-use=."
  msgstr "PrÃ¤fix von absolutem Pfad abschneiden, bevor dieser Name fÃ¼r Â»-fprofile-generate=Â« und Â»-fprofile-use=Â« gemangelt wird."
  
! #: common.opt:2636
  #, no-c-format
  msgid "-fprofile-prefix-map=<old>=<new>\tMap one directory name to another in GCOV coverage result."
  msgstr "-fprofile-prefix-map=<alt>=<neu>\tIn der Ausgabe von GCOV einen Verzeichnisnamen auf einen anderen abbilden."
  
! #: common.opt:2640
  #, no-c-format
  msgid "Enable common options for generating profile info for profile feedback directed optimizations."
  msgstr "Allgemeine Optionen zum Erzeugen von Profil-Info fÃ¼r Profil-Feedback-gerichtete Optimierungen einschalten."
  
! #: common.opt:2644
  #, no-c-format
  msgid "Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=."
! msgstr "Allgemeine Optionen zum Erzeugen von Profil-Info fÃ¼r Profil-Feedback-gerichtete Optimierungen einschalten, und -fprofile-dir= setzen."
  
! #: common.opt:2648
  #, no-c-format
  msgid "Register the profile information in the .gcov_info section instead of using a constructor/destructor."
  msgstr "Profilinformation im Abschnitt .gcov_info registrieren, statt einen Konstruktor/Destruktor zu verwenden."
  
! #: common.opt:2652
  #, no-c-format
  msgid "Register the profile information in the specified section instead of using a constructor/destructor."
  msgstr "Profilinformation im angegebenen Abschnitt registrieren, statt einen Konstruktor/Destruktor zu verwenden."
  
! #: common.opt:2656
  #, no-c-format
  msgid "Do not assume that functions never executed during the train run are cold."
  msgstr "Nicht annehmen, dass Funktionen, die im Trainingslauf nie ausgefÃ¼hrt wurden, kalt sind."
  
! #: common.opt:2660
  #, no-c-format
  msgid "Enable common options for performing profile feedback directed optimizations."
  msgstr "Allgemeine Optionen zum DurchfÃ¼hren von Profil-Feedback-gerichteten Optimierungen einschalten."
  
! #: common.opt:2664
  #, no-c-format
  msgid "Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=."
! msgstr "Allgemeine Optionen zum DurchfÃ¼hren von Profil-Feedback-gerichteten Optimierungen einschalten, und -fprofile-dir= setzen."
  
! #: common.opt:2668
  #, no-c-format
  msgid "Insert code to profile values of expressions."
  msgstr "Code einfÃ¼gen, um AusdrÃ¼cke zu profilen."
  
! #: common.opt:2672
  #, no-c-format
  msgid "Report on consistency of profile."
  msgstr "Ãœber Konsistenz des Profils berichten."
  
! #: common.opt:2676
  #, no-c-format
  msgid "Enable function reordering that improves code placement."
  msgstr "Funktionen umsortieren, um Codeplatzierung zu verbessern."
  
! #: common.opt:2680
  #, no-c-format
  msgid "Insert NOP instructions at each function entry."
  msgstr "In jedem Funktionsprolog NOP-Befehle erzeugen."
  
! #: common.opt:2687
  #, no-c-format
  msgid "-frandom-seed=<string>\tMake compile reproducible using <string>."
  msgstr "-frandom-seed=<Zeichenkette>\tÃœbersetzung mit <Zeichenkette> reproduzierbar machen."
  
! #: common.opt:2697
  #, no-c-format
  msgid "Record gcc command line switches in the object file."
  msgstr "GCC-Kommandozeilenschalter in Objektdateien aufzeichnen."
  
! #: common.opt:2701
  #, no-c-format
  msgid "Return small aggregates in registers."
  msgstr "Kleine Aggregate Ã¼ber Register zurÃ¼ckgeben."
  
! #: common.opt:2709
  #, no-c-format
  msgid "Tell DSE that the storage for a C++ object is dead when the constructor starts and when the destructor finishes."
  msgstr "DSE mitteilen, dass der Speicher fÃ¼r ein C++-Objekt tot ist, wenn der Konstruktor anfÃ¤ngt und wenn der Destruktor aufhÃ¶rt."
  
! #: common.opt:2723
  #, no-c-format
  msgid "-flive-patching=[inline-only-static|inline-clone]\tControl IPA optimizations to provide a safe compilation for live-patching.  At the same time, provides multiple-level control on the enabled IPA optimizations."
  msgstr "-flive-patching=[inline-only-static|inline-clone]\tFunktionsÃ¼bergreifende Optimierung steuern, um fÃ¼r Live-Patching geeigneten Code zu erzeugen. Bietet gleichzeitig mehrstufige Kontrolle bezÃ¼glich der ausgewÃ¤hlten funktionsÃ¼bergreifenden Optimierungen."
  
! #: common.opt:2738
  #, no-c-format
  msgid "Tell DCE to remove unused C++ allocations."
  msgstr "DCE mitteilen, dass ungenutzte C++-Allokationen entfernt werden."
  
! #: common.opt:2742
  #, no-c-format
  msgid "Relief of register pressure through live range shrinkage."
  msgstr "Entlastung des Registerdrucks durch Live-Bereichs-Schrumpfung."
  
! #: common.opt:2746
  #, no-c-format
  msgid "Perform a register renaming optimization pass."
  msgstr "Einen Optimierungsdurchgang zur Registerumbenennung durchfÃ¼hren."
  
! #: common.opt:2750
  #, no-c-format
  msgid "Perform a target dependent instruction fusion optimization pass."
  msgstr "Einen zielabhÃ¤ngigen Optimierungsdurchgang zur Befehlsfusion durchfÃ¼hren."
  
! #: common.opt:2754
  #, no-c-format
  msgid "Reorder basic blocks to improve code placement."
  msgstr "BasisblÃ¶cke umsortieren, um Codeplatzierung zu verbessern."
  
! #: common.opt:2758
  #, no-c-format
  msgid "-freorder-blocks-algorithm=[simple|stc]\tSet the used basic block reordering algorithm."
  msgstr "-freorder-blocks-algorithm=[simple|stc]\tAlgorithmus zum Umordnen der BasisblÃ¶cke festlegen."
  
! #: common.opt:2771
  #, no-c-format
  msgid "Reorder basic blocks and partition into hot and cold sections."
  msgstr "BasisblÃ¶cke und in heiÃŸe und kalte Abschnitte umordnen und partitionieren."
  
! #: common.opt:2775
  #, no-c-format
  msgid "Reorder functions to improve code placement."
  msgstr "Funktionen umsortieren, um Codeplatzierung zu verbessern."
  
! #: common.opt:2779
  #, no-c-format
  msgid "Add a common subexpression elimination pass after loop optimizations."
  msgstr "Einen Durchlauf zur Entfernung von TeilausdrÃ¼cken nach Schleifenoptimierungen hinzufÃ¼gen."
  
! #: common.opt:2787
  #, no-c-format
  msgid "Disable optimizations that assume default FP rounding behavior."
  msgstr "Optimierungen, die Standard-Rundungsverhalten fÃ¼r Gleitkomma annehmen, ausschalten."
  
! #: common.opt:2791
  #, no-c-format
  msgid "Enable scheduling across basic blocks."
  msgstr "Planung Ã¼ber BasisblÃ¶cke hinaus einschalten."
  
! #: common.opt:2795
  #, no-c-format
  msgid "Enable register pressure sensitive insn scheduling."
  msgstr "Registerdruckempfindliche Befehlsplanung einschalten."
  
! #: common.opt:2799
  #, no-c-format
  msgid "Allow speculative motion of non-loads."
  msgstr "Spekulative Bewegung von Nicht-Lade-Befehlen erlauben."
  
! #: common.opt:2803
  #, no-c-format
  msgid "Allow speculative motion of some loads."
  msgstr "Spekulative Bewegung bei einigen Ladebefehlen erlauben."
  
! #: common.opt:2807
  #, no-c-format
  msgid "Allow speculative motion of more loads."
  msgstr "Spekulative Bewegung bei mehr Ladebefehlen erlauben."
  
! #: common.opt:2811
  #, no-c-format
  msgid "-fsched-verbose=<number>\tSet the verbosity level of the scheduler."
  msgstr "-fsched-verbose=<Stufe>\tStufe der WortfÃ¼lle des Planers angeben."
  
! #: common.opt:2815
  #, no-c-format
  msgid "If scheduling post reload, do superblock scheduling."
  msgstr "Wenn Planung nach dem Neuladen, dann Superblock-Planung."
  
! #: common.opt:2823
  #, no-c-format
  msgid "Reschedule instructions before register allocation."
  msgstr "Befehle vor Registerbelegung neu planen."
  
! #: common.opt:2827
  #, no-c-format
  msgid "Reschedule instructions after register allocation."
  msgstr "Befehle nach Registerbelegung neu planen."
  
! #: common.opt:2834
  #, no-c-format
  msgid "Schedule instructions using selective scheduling algorithm."
  msgstr "Befehle mit selektivem Planungs-Algorithmus einplanen."
  
! #: common.opt:2838
  #, no-c-format
  msgid "Run selective scheduling after reload."
  msgstr "AusgewÃ¤hlte Planung nach Neuladen durchfÃ¼hren."
  
! #: common.opt:2842
  #, no-c-format
  msgid "Run self-tests, using the given path to locate test files."
  msgstr "Selbsttests durchfÃ¼hren, mit dem angegebenen Pfad, um die Testdateien zu finden."
  
! #: common.opt:2846
  #, no-c-format
  msgid "Perform software pipelining of inner loops during selective scheduling."
  msgstr "WÃ¤hrend selektiver Planung Software-Pipelining innerer Schleifen durchfÃ¼hren."
  
! #: common.opt:2850
  #, no-c-format
  msgid "Perform software pipelining of outer loops during selective scheduling."
  msgstr "WÃ¤hrend selektiver Planung Software-Pipelining Ã¤uÃŸerer Schleifen durchfÃ¼hren."
  
! #: common.opt:2854
  #, no-c-format
  msgid "Reschedule pipelined regions without pipelining."
  msgstr "Regionen mit Pipelining ohne Pipelining neu planen."
  
! #: common.opt:2858
  #, no-c-format
  msgid "Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker."
! msgstr "Erlauben, dass der dynamische Linker Funktionen und Variablen mit solchen unterschiedlicher Semantik (oder Initialisierungen) gemischt platzieren darf."
  
! #: common.opt:2864
  #, no-c-format
  msgid "Allow premature scheduling of queued insns."
  msgstr "Nicht ausgereifte Planung von eingereihten Befehlen erlauben."
  
! #: common.opt:2868
  #, no-c-format
  msgid "-fsched-stalled-insns=<number>\tSet number of queued insns that can be prematurely scheduled."
  msgstr "-fsched-stalled-insns=<Anzahl>\tAnzahl der eingereihten Befehle festlegen, die unausgereift geplant werden kÃ¶nnen."
  
! #: common.opt:2876
  #, no-c-format
  msgid "Set dependence distance checking in premature scheduling of queued insns."
  msgstr "PrÃ¼fung der AbhÃ¤ngigkeitsentfernung in nicht ausgereifter Planung von eingereihten Befehlen festlegen."
  
! #: common.opt:2880
  #, no-c-format
  msgid "-fsched-stalled-insns-dep=<number>\tSet dependence distance checking in premature scheduling of queued insns."
  msgstr "-fsched-stalled-insns-dep=<Zahl>\tAbhÃ¤ngigkeitsentfernung fÃ¼r PrÃ¼fung in nicht ausgereifter Planung von eingereihten Befehlen festlegen."
  
! #: common.opt:2884
  #, no-c-format
  msgid "Enable the group heuristic in the scheduler."
  msgstr "Gruppenheuristik im Planer einschalten."
  
! #: common.opt:2888
  #, no-c-format
  msgid "Enable the critical path heuristic in the scheduler."
  msgstr "Critical-Path-Heuristik im Planer einschalten."
  
! #: common.opt:2892
  #, no-c-format
  msgid "Enable the speculative instruction heuristic in the scheduler."
  msgstr "Heuristik fÃ¼r spekulative Befehle im Planer einschalten."
  
! #: common.opt:2896
  #, no-c-format
  msgid "Enable the rank heuristic in the scheduler."
  msgstr "Rang-Heuristik im Planer einschalten."
  
! #: common.opt:2900
  #, no-c-format
  msgid "Enable the last instruction heuristic in the scheduler."
  msgstr "Heuristik fÃ¼r letzte Befehle im Planer einschalten."
  
! #: common.opt:2904
  #, no-c-format
  msgid "Enable the dependent count heuristic in the scheduler."
  msgstr "Heuristik fÃ¼r AbhÃ¤ngigkeits-ZÃ¤hler bei Planung einschalten."
  
! #: common.opt:2908
  #, no-c-format
  msgid "Access data in the same section from shared anchor points."
  msgstr "Auf Daten im gleichen Abschnitt von gemeinsam verwendeten Ankerpunkten zugreifen."
  
! #: common.opt:2920
  #, no-c-format
  msgid "Turn on Redundant Extensions Elimination pass."
  msgstr "Durchlauf fÃ¼r Redundante Erweiterungsentfernung (REE) einschalten."
  
! #: common.opt:2924
  #, no-c-format
  msgid "Show column numbers in diagnostics, when available.  Default on."
  msgstr "Spaltenzahlen in Diagnose zeigen, wenn verfÃ¼gbar. Standard: Ein."
  
! #: common.opt:2928
  #, no-c-format
  msgid "Emit function prologues only before parts of the function that need it, rather than at the top of the function."
  msgstr "Funktionsprologe nur vor Teilen der Funktion erzeugen, die diese benÃ¶tigt, statt am Anfang der Funktion."
  
! #: common.opt:2933
  #, no-c-format
  msgid "Shrink-wrap parts of the prologue and epilogue separately."
  msgstr "Teile des Prologs und Epilogs separat an den nÃ¶tigen Stellen erzeugen."
  
! #: common.opt:2937
  #, no-c-format
  msgid "Disable optimizations observable by IEEE signaling NaNs."
  msgstr "Von IEEE-Signalisierungs-NaNs wahrnehmbare Optimierungen ausschalten."
  
! #: common.opt:2941
  #, no-c-format
  msgid "Disable floating point optimizations that ignore the IEEE signedness of zero."
  msgstr "Gleitkommaoptimierungen ausschalten, die die IEEE-Vorzeichenbehaftung von Null nicht beachten."
  
! #: common.opt:2945
  #, no-c-format
  msgid "Convert floating point constants to single precision constants."
  msgstr "Gleitkommakonstanten in Konstanten einfacher Genauigkeit umwandeln."
  
! #: common.opt:2949
  #, no-c-format
  msgid "Split lifetimes of induction variables when loops are unrolled."
  msgstr "Lebensdauer von Induktionsvariablen aufteilen, wenn Schleifen abgerollt werden."
  
! #: common.opt:2953
  #, no-c-format
  msgid "Generate discontiguous stack frames."
  msgstr "Nicht zusammenhÃ¤ngende Stapelrahmen erzeugen."
  
! #: common.opt:2957
  #, no-c-format
  msgid "Split wide types into independent registers."
  msgstr "Breite Typen in unabhÃ¤ngige Register aufteilen."
  
! #: common.opt:2961
  #, no-c-format
  msgid "Split wide types into independent registers earlier."
  msgstr "Breite Typen bereits frÃ¼her in unabhÃ¤ngige Register aufteilen."
  
! #: common.opt:2965
  #, no-c-format
  msgid "Enable backward propagation of use properties at the SSA level."
  msgstr "RÃ¼ckwÃ¤rtsÃ¼bermittlung von Nutzungseigenschaften auf SSA-Ebene einschalten."
  
! #: common.opt:2969
  #, no-c-format
  msgid "Optimize conditional patterns using SSA PHI nodes."
  msgstr "Bedingte AusdrÃ¼cke mittels SSA-PHI-Knoten optimieren."
  
! #: common.opt:2973
  #, no-c-format
  msgid "Optimize amount of stdarg registers saved to stack at start of function."
  msgstr "Anzahl der stdarg-Register optimieren, die am Anfang einer Funktion auf dem Stapel gespeichert werden."
  
! #: common.opt:2977
  #, no-c-format
  msgid "Apply variable expansion when loops are unrolled."
  msgstr "Variablenerweiterung anwenden, wenn Schleifen abgerollt werden."
  
! #: common.opt:2981
  #, no-c-format
  msgid "-fstack-check=[no|generic|specific]\tInsert stack checking code into the program."
  msgstr "-fstack-check=[no|generic|specific]\tCode zur StapelprÃ¼fung in das Programm einfÃ¼gen."
  
! #: common.opt:2985
  #, no-c-format
  msgid "Insert stack checking code into the program.  Same as -fstack-check=specific."
! msgstr "Code zur StapelprÃ¼fung in das Programm einfÃ¼gen. Dasselbe wie -fstack-check=specific."
  
! #: common.opt:2989
  #, no-c-format
  msgid "Insert code to probe each page of stack space as it is allocated to protect from stack-clash style attacks."
  msgstr "Code einfÃ¼gen, der jede Speicherseite des Stapels bei der Allokation antestet, um vor Angriffen basierend auf Ãœberschneidungen zu schÃ¼tzen."
  
! #: common.opt:2997
  #, no-c-format
  msgid "-fstack-limit-register=<register>\tTrap if the stack goes past <register>."
  msgstr "-fstack-limit-register=<Register>\tWenn der Stapel Ã¼ber <Register> hinausgeht, abfangen (Â»trapÂ«)."
  
! #: common.opt:3001
  #, no-c-format
  msgid "-fstack-limit-symbol=<name>\tTrap if the stack goes past symbol <name>."
  msgstr "-fstack-limit-symbol=<Name>\tWenn der Stapel Ã¼ber das Symbol <Name> hinausgeht, abfangen (Â»trapÂ«)."
  
! #: common.opt:3005
  #, no-c-format
  msgid "Use propolice as a stack protection method."
  msgstr "Propolice als Stapelschutzmethode verwenden."
  
! #: common.opt:3009
  #, no-c-format
  msgid "Use a stack protection method for every function."
  msgstr "Eine Stapelschutzmethode fÃ¼r jede Funktion verwenden."
  
! #: common.opt:3013
  #, no-c-format
  msgid "Use a smart stack protection method for certain functions."
  msgstr "Eine schlaue Stapelschutzmethode fÃ¼r gewisse Funktionen verwenden."
  
! #: common.opt:3017
  #, no-c-format
  msgid "Use stack protection method only for functions with the stack_protect attribute."
  msgstr "Stapelschutzmethode nur fÃ¼r Funktionen mit dem Attribut Â»stack_protectÂ« verwenden."
  
! #: common.opt:3021
  #, no-c-format
  msgid "Output stack usage information on a per-function basis."
  msgstr "Information Ã¼ber Stapelverwendung auf Funktionsbasis ausgeben."
  
! #: common.opt:3033
  #, no-c-format
  msgid "Assume strict aliasing rules apply."
  msgstr "Annehmen, dass strenge Alias-Regeln gelten."
  
! #: common.opt:3037
  #, no-c-format
  msgid "Treat signed overflow as undefined.  Negated as -fwrapv -fwrapv-pointer."
! msgstr "Vorzeichenbehafteten Ãœberlauf als undefiniertes Verhalten behandeln. Wird mit -fwrapv -fwrapv-pointer negiert."
  
! #: common.opt:3041
  #, no-c-format
  msgid "Disable stack scrub entirely, disregarding strub attributes."
  msgstr "Stapelschrubben komplett ausschalten, unabhÃ¤ngig von Strub-Attributen."
  
! #: common.opt:3045
  #, no-c-format
  msgid "Enable stack scrub as per attributes, with strict call checking."
  msgstr "Stapelschrubben gemÃ¤ÃŸ der Attribute einschalten, mit strenger AufrufprÃ¼fung."
  
! #: common.opt:3054
  #, no-c-format
  msgid "Restore default strub mode: as per attributes, with relaxed checking."
  msgstr "Standard-Strub-Modus wiederherstellen: gemÃ¤ÃŸ Attributen, mit lockerer PrÃ¼fung."
  
! #: common.opt:3058
  #, no-c-format
  msgid "Enable stack scrubbing for all viable functions."
  msgstr "Stapelschrubben fÃ¼r alle geeigneten Funktionen einschalten."
  
! #: common.opt:3062
  #, no-c-format
  msgid "Enable at-calls stack scrubbing for all viable functions."
  msgstr "Stapelschrubben fÃ¼r At-Aufrufe fÃ¼r alle geeigneten Funktionen einschalten."
  
! #: common.opt:3066
  #, no-c-format
  msgid "Enable internal stack scrubbing for all viable functions."
  msgstr "Internes Stapelschrubben fÃ¼r alle geeigneten Funktionen einschalten."
  
! #: common.opt:3070
  #, no-c-format
  msgid "Implement __atomic operations via libcalls to legacy __sync functions."
  msgstr "__atomic-Operationen Ã¼ber Bibliotheksaufrufe alter __sync-Funktionen durchfÃ¼hren."
  
! #: common.opt:3074
  #, no-c-format
  msgid "Check for syntax errors, then stop."
  msgstr "Auf Syntaxfehler prÃ¼fen, dann anhalten."
  
! #: common.opt:3078
  #, no-c-format
  msgid "Create data files needed by \"gcov\"."
  msgstr "Von Â»gcovÂ« benÃ¶tigte Dateien anlegen."
  
! #: common.opt:3082
  #, no-c-format
  msgid "Perform jump threading optimizations."
  msgstr "Sprung-Threading-Optimierungen durchfÃ¼hren."
  
! #: common.opt:3086
  #, no-c-format
  msgid "Report the time taken by each compiler pass."
  msgstr "BenÃ¶tigte Zeit fÃ¼r jeden Compilerdurchlauf ausgeben."
  
! #: common.opt:3090
  #, no-c-format
  msgid "Record times taken by sub-phases separately."
  msgstr "Dauer der Teilphasen separat aufzeichnen."
  
! #: common.opt:3094
  #, no-c-format
  msgid "-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\tSet the default thread-local storage code generation model."
  msgstr "-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\tDas standardmÃ¤ÃŸige Codeerzeugungsmodell fÃ¼r Thread-lokalen Speicher angeben."
  
! #: common.opt:3113
  #, no-c-format
  msgid "Reorder top level functions, variables, and asms."
  msgstr "Funktionen, Variablen und asms hÃ¶chster Ebene umordnen."
  
! #: common.opt:3117
  #, no-c-format
  msgid "Perform superblock formation via tail duplication."
  msgstr "Superblockerzeugung Ã¼ber Ende-VervielfÃ¤ltigung durchfÃ¼hren."
  
! #: common.opt:3121
  #, no-c-format
  msgid "For targets that normally need trampolines for nested functions, always generate them instead of using descriptors."
  msgstr "FÃ¼r Ziele, die normalerweise Trampoline fÃ¼r geschachtelte Funktionen benÃ¶tigen, diese stets generieren, statt Deskriptoren zu verwenden."
  
! #: common.opt:3126
  #, no-c-format
  msgid "Whether trampolines are generated in executable memory rather than executable stack."
  msgstr "Ob Trampoline in ausfÃ¼hrbarem Speicher statt in ausfÃ¼hrbarem Stapelspeicher erzeugt werden."
  
! #: common.opt:3144
  #, no-c-format
  msgid "Assume floating-point operations can trap."
  msgstr "Annehmen, dass Gleitkommaoperationen abgefangen werden kÃ¶nnen (Â»trapÂ«)."
  
! #: common.opt:3148
  #, no-c-format
  msgid "Trap for signed overflow in addition, subtraction and multiplication."
  msgstr "Vorzeichenbehafteten Ãœberlauf in Addition, Subtraktion und Multiplikation abfangen (Â»trapÂ«)."
  
! #: common.opt:3152
  #, no-c-format
  msgid "Enable SSA-CCP optimization on trees."
  msgstr "SSA-CCP-Optimierungen auf BÃ¤umen einschalten."
  
! #: common.opt:3156
  #, no-c-format
  msgid "Enable SSA-BIT-CCP optimization on trees."
  msgstr "SSA-BIT-CCP-Optimierungen auf BÃ¤umen einschalten."
  
! #: common.opt:3164
  #, no-c-format
  msgid "Enable loop header copying on trees."
  msgstr "Kopieren des Schleifenkopfes auf BÃ¤umen einschalten."
  
! #: common.opt:3172
  #, no-c-format
  msgid "Enable SSA coalescing of user variables."
  msgstr "Zusammenfassen von nutzersichtbaren Variablen wÃ¤hrend des SSA-Durchlaufs einschalten."
  
! #: common.opt:3180
  #, no-c-format
  msgid "Enable copy propagation on trees."
  msgstr "Kopieweitergabe auf BÃ¤umen einschalten."
  
! #: common.opt:3188
  #, no-c-format
  msgid "Transform condition stores into unconditional ones."
  msgstr "Bedingte Speicherbefehle in unbedingte umwandeln."
  
! #: common.opt:3192
  #, no-c-format
  msgid "Perform conversions of switch initializations."
  msgstr "Umwandlungen von Â»switchÂ«-Initialisierungen durchfÃ¼hren."
  
! #: common.opt:3196
  #, no-c-format
  msgid "Enable SSA dead code elimination optimization on trees."
  msgstr "Beseitigungsoptimierung fÃ¼r toten SSA-Code auf BÃ¤umen einschalten."
  
! #: common.opt:3200
  #, no-c-format
  msgid "Enable dominator optimizations."
  msgstr "Dominator-Optimierungen einschalten."
  
! #: common.opt:3204
  #, no-c-format
  msgid "Enable tail merging on trees."
  msgstr "Enden-Zusammenfassung auf BÃ¤umen einschalten."
  
! #: common.opt:3208
  #, no-c-format
  msgid "Enable dead store elimination."
  msgstr "Entfernung toter Speicherungen einschalten."
  
! #: common.opt:3212
  #, no-c-format
  msgid "Enable forward propagation on trees."
  msgstr "VorwÃ¤rts-Ãœbertragung auf BÃ¤umen einschalten."
  
! #: common.opt:3216
  #, no-c-format
  msgid "Enable Full Redundancy Elimination (FRE) on trees."
  msgstr "VollstÃ¤ndige Redundanzentfernung (FRE) auf BÃ¤umen einschalten."
  
! #: common.opt:3220
  #, no-c-format
  msgid "Enable string length optimizations on trees."
  msgstr "ZeichenkettenlÃ¤ngen-Optimierungen auf BÃ¤umen einschalten."
  
! #: common.opt:3224
  #, no-c-format
  msgid "Detect paths that trigger erroneous or undefined behavior due to dereferencing a null pointer.  Isolate those paths from the main control flow and turn the statement with erroneous or undefined behavior into a trap."
  msgstr "AusfÃ¼hrungspfade erkennen, die durch Dereferenzieren eines Nullzeigers fehlerhaftes oder undefiniertes Verhalten auslÃ¶sen. Solche Pfade werden aus dem Hauptablauf herausgenommen und durch eine Trap ersetzt."
  
! #: common.opt:3230
  #, no-c-format
  msgid "Detect paths that trigger erroneous or undefined behavior due to a null value being used in a way forbidden by a returns_nonnull or nonnull attribute.  Isolate those paths from the main control flow and turn the statement with erroneous or undefined behavior into a trap."
  msgstr "AusfÃ¼hrungspfade erkennen, die ausgelÃ¶st werden, indem ein Nullwert auf eine Weise verwendet wird, die durch ein Â»returns_nonnullÂ«- oder Â»nonnullÂ«-Attribut verboten ist. Solche Pfade werden aus dem Hauptablauf herausgenommen und durch eine Trap ersetzt."
  
! #: common.opt:3237
  #, no-c-format
  msgid "Enable loop distribution on trees."
  msgstr "Schleifenverteilung auf BÃ¤umen einschalten."
  
! #: common.opt:3241
  #, no-c-format
  msgid "Enable loop distribution for patterns transformed into a library call."
  msgstr "Schleifenverteilung fÃ¼r in Bibliotheksaufruf umgewandelte Muster einschalten."
  
! #: common.opt:3245
  #, no-c-format
  msgid "Enable loop invariant motion on trees."
  msgstr "Bewegung der Schleifeninvariante auf BÃ¤umen einschalten."
  
! #: common.opt:3253
  #, no-c-format
  msgid "Create canonical induction variables in loops."
  msgstr "Kanonische Induktionsvariablen in Schleifen erzeugen."
  
! #: common.opt:3257
  #, no-c-format
  msgid "Enable loop optimizations on tree level."
  msgstr "Schleifenoptimierungen auf Baumebene einschalten."
  
! #: common.opt:3261
  #, no-c-format
  msgid "-ftree-parallelize-loops=<number>\tEnable automatic parallelization of loops."
  msgstr "-ftree-parallelize-loops=<Anzahl>\tAutomatische Parallelisierung von Schleifen einschalten."
  
! #: common.opt:3265
  #, no-c-format
  msgid "Enable hoisting loads from conditional pointers."
  msgstr "Herausziehen von Ladeoperationen aus bedingten Zeigern einschalten."
  
! #: common.opt:3269
  #, no-c-format
  msgid "Enable SSA-PRE optimization on trees."
  msgstr "SSA-PRE-Optimierungen auf BÃ¤umen einschalten."
  
! #: common.opt:3273
  #, no-c-format
  msgid "In SSA-PRE optimization on trees, enable partial-partial redundancy elimination."
  msgstr "In SSA-PRE-Optimierungen auf BÃ¤umen Teils-Teils-Redundanz eliminieren."
  
! #: common.opt:3277
  #, no-c-format
  msgid "Perform function-local points-to analysis on trees."
  msgstr "Funktionslokale Analyse von Zeigerzielen auf BÃ¤umen durchfÃ¼hren."
  
! #: common.opt:3281
  #, no-c-format
  msgid "Enable reassociation on tree level."
  msgstr "Neuverbindung auf Baumebene einschalten."
  
! #: common.opt:3289
  #, no-c-format
  msgid "Enable SSA code sinking on trees."
  msgstr "SSA-Codeversenkung auf BÃ¤umen einschalten."
  
! #: common.opt:3293
  #, no-c-format
  msgid "Perform straight-line strength reduction."
  msgstr "Geradlinige StÃ¤rkereduktion durchfÃ¼hren."
  
! #: common.opt:3297
  #, no-c-format
  msgid "Perform scalar replacement of aggregates."
  msgstr "Skalarersetzung von Aggregaten durchfÃ¼hren."
  
! #: common.opt:3301
  #, no-c-format
  msgid "Replace temporary expressions in the SSA->normal pass."
  msgstr "VorÃ¼bergehende AusdrÃ¼cke im SSA->Normal-Durchlauf ersetzen."
  
! #: common.opt:3305
  #, no-c-format
  msgid "Perform live range splitting during the SSA->normal pass."
  msgstr "Lebensdaueraufteilung wÃ¤hrend des Â»SSA -> NormalÂ«-Durchlaufs durchfÃ¼hren."
  
! #: common.opt:3309
  #, no-c-format
  msgid "Perform Value Range Propagation on trees."
  msgstr "Wertebereichsweitergabe auf BÃ¤umen durchfÃ¼hren."
  
! #: common.opt:3313
  #, no-c-format
  msgid "Split paths leading to loop backedges."
  msgstr "Pfade aufteilen, die zu Schleifen-RÃ¼ckkanten fÃ¼hren."
  
! #: common.opt:3317
  #, no-c-format
  msgid "Assume common declarations may be overridden with ones with a larger trailing array."
  msgstr "Annehmen, dass gemeinsame Deklarationen durch solche Ã¼bersteuert werden dÃ¼rfen, die ein lÃ¤ngeres hintangestelltes Array haben."
  
! #: common.opt:3322
  #, no-c-format
  msgid "Compile whole compilation unit at a time."
  msgstr "Ganze Ãœbersetzungseinheit auf einmal Ã¼bersetzen."
  
! #: common.opt:3326
  #, no-c-format
  msgid "Trap on __builtin_unreachable instead of using it for optimization."
  msgstr "Ausnahme bei __builtin_unreachable auslÃ¶sten, statt es fÃ¼r die Optimierung zu verwenden."
  
! #: common.opt:3330
  #, no-c-format
  msgid "Perform loop unrolling when iteration count is known."
  msgstr "Schleifenabwicklung durchfÃ¼hren, wenn Anzahl der Wiederholungen bekannt ist."
  
! #: common.opt:3334
  #, no-c-format
  msgid "Perform loop unrolling for all loops."
  msgstr "Schleifenabwicklung fÃ¼r alle Schleifen durchfÃ¼hren."
  
! #: common.opt:3349
  #, no-c-format
  msgid "Allow optimization for floating-point arithmetic which may change the result of the operation due to rounding."
  msgstr "Optimierung fÃ¼r Gleitkommaarithmetik erlauben, auch wenn durch Runden ein anderes Ergebnis herauskommen kann."
  
! #: common.opt:3354
  #, no-c-format
  msgid "Same as -fassociative-math for expressions which include division."
! msgstr "Das gleiche wie -fassociative-math fÃ¼r AusdrÃ¼cke, die Division enthalten."
  
! #: common.opt:3362
  #, no-c-format
  msgid "Allow math optimizations that may violate IEEE or ISO standards."
  msgstr "Mathematische Optimierungen erlauben, die IEEE- oder ISO-Standards verletzen kÃ¶nnten."
  
! #: common.opt:3366
  #, no-c-format
  msgid "Perform loop unswitching."
  msgstr "Schleifenausschaltung durchfÃ¼hren."
  
! #: common.opt:3370
  #, no-c-format
  msgid "Perform loop splitting."
  msgstr "Schleifen-Aufteilung durchfÃ¼hren."
  
! #: common.opt:3374
  #, no-c-format
  msgid "Version loops based on whether indices have a stride of one."
  msgstr "Schleifen versionieren, je nachdem, ob sie eine Schrittweite von eins haben."
  
! #: common.opt:3378
  #, no-c-format
  msgid "Just generate unwind tables for exception handling."
  msgstr "Einfach Abwicklungstabellen fÃ¼r Ausnahmebehandlung erzeugen."
  
! #: common.opt:3382
  #, no-c-format
  msgid "Use the bfd linker instead of the default linker."
! msgstr "BFD-Linker statt Standardlinker verwenden."
  
! #: common.opt:3386
  #, no-c-format
  msgid "Use the gold linker instead of the default linker."
! msgstr "Gold-Linker statt Standardlinker verwenden."
  
! #: common.opt:3390
  #, no-c-format
  msgid "Use the lld LLVM linker instead of the default linker."
! msgstr "Den LLVM-lld-Linker statt des Standardlinkers verwenden."
  
! #: common.opt:3394
  #, no-c-format
  msgid "Use the Modern linker (MOLD) linker instead of the default linker."
! msgstr "Den Modernen Linker (MOLD) statt des Standardlinkers verwenden."
  
! #: common.opt:3404
  #, no-c-format
  msgid "Perform variable tracking."
  msgstr "Variablenverfolgung durchfÃ¼hren."
  
! #: common.opt:3411
  #, no-c-format
  msgid "Perform variable tracking by annotating assignments."
  msgstr "Variablenverfolgung durch Zuweisungsanmerkungen durchfÃ¼hren."
  
! #: common.opt:3417
  #, no-c-format
  msgid "Toggle -fvar-tracking-assignments."
  msgstr "-fvar-tracking-assignments umschalten."
  
! #: common.opt:3424
  #, no-c-format
  msgid "Perform variable tracking and also tag variables that are uninitialized."
  msgstr "Variablenverfolgung durchfÃ¼hren und auch Variablen markieren, die uninitialisiert sind."
  
! #: common.opt:3429
  #, no-c-format
  msgid "Enable vectorization on trees."
  msgstr "Vektorisierung auf BÃ¤umen einschalten."
  
! #: common.opt:3437
  #, no-c-format
  msgid "Enable loop vectorization on trees."
  msgstr "Schleifenvektorisierung auf BÃ¤umen einschalten."
  
! #: common.opt:3441
  #, no-c-format
  msgid "Enable basic block vectorization (SLP) on trees."
  msgstr "Vektorisierung von BasisblÃ¶cken (SLP) auf BÃ¤umen einschalten."
  
! #: common.opt:3445
  #, no-c-format
  msgid "-fvect-cost-model=[unlimited|dynamic|cheap|very-cheap]\tSpecifies the cost model for vectorization."
  msgstr "-fvect-cost-model=[unlimited|dynamic|cheap|very-cheap]\tKostenmodell fÃ¼r Vektorisierung angeben."
  
! #: common.opt:3449
  #, no-c-format
  msgid "-fsimd-cost-model=[unlimited|dynamic|cheap|very-cheap]\tSpecifies the vectorization cost model for code marked with a simd directive."
  msgstr "-fsimd-cost-model=[unlimited|dynamic|cheap|very-cheap]\tVektorisierungs-Kostenmodell angeben, das fÃ¼r mit einer SIMD-Direktive markierten Code verwendet wird."
  
! #: common.opt:3468
  #, no-c-format
  msgid "Enables the dynamic vectorizer cost model.  Preserved for backward compatibility."
  msgstr "Schaltet das dynamische Vektorisierer-Kostenmodell ein. FÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤t erhalten."
  
! #: common.opt:3476
  #, no-c-format
  msgid "Enable copy propagation of scalar-evolution information."
  msgstr "Kopieweitergabe von Informationen Ã¼ber Skalar-Evolution einschalten."
  
! #: common.opt:3480
  #, no-c-format
  msgid "-ftrivial-auto-var-init=[uninitialized|pattern|zero]\tAdd initializations to automatic variables."
  msgstr "-ftrivial-auto-var-init=[uninitialized|pattern|zero]\tAutomatische Variablen initialisieren."
  
! #: common.opt:3502
  #, no-c-format
  msgid "Add extra commentary to assembler output."
  msgstr "ZusÃ¤tzliche Anmerkungen an Assemblerausgabe anfÃ¼gen."
  
! #: common.opt:3506
  #, no-c-format
  msgid "-fvisibility=[default|internal|hidden|protected]\tSet the default symbol visibility."
  msgstr "-fvisibility=[default|internal|hidden|protected]\tStandard-Symbolsichtbarkeit festlegen."
  
! #: common.opt:3525
  #, no-c-format
  msgid "Validate vtable pointers before using them."
  msgstr "VTable-Zeiger validieren, bevor sie verwendet werden."
  
! #: common.opt:3541
  #, no-c-format
  msgid "Output vtable verification counters."
  msgstr "VerifikationszÃ¤hler fÃ¼r VTables ausgeben."
  
! #: common.opt:3545
  #, no-c-format
  msgid "Output vtable verification pointer sets information."
  msgstr "Informationen Ã¼ber Zeigermengen der VTable-Verifikation ausgeben."
  
! #: common.opt:3549
  #, no-c-format
  msgid "Use expression value profiles in optimizations."
  msgstr "Profile von Ausdruckswerten in Optimierungen verwenden."
  
! #: common.opt:3553
  #, no-c-format
  msgid "Construct webs and split unrelated uses of single variable."
  msgstr "Netze konstruieren und nicht zusammenhÃ¤ngende Verwendungen einzelner Variablen aufteilen."
  
! #: common.opt:3557
  #, no-c-format
  msgid "Enable conditional dead code elimination for builtin calls."
  msgstr "Beseitigung von bedingt totem Code fÃ¼r Aufrufe eingebauter Funktionen einschalten."
  
! #: common.opt:3561
  #, no-c-format
  msgid "Perform whole program optimizations."
  msgstr "Gesamtprogrammoptimierung durchfÃ¼hren."
  
! #: common.opt:3565
  #, no-c-format
  msgid "Assume pointer overflow wraps around."
  msgstr "Annehmen, dass ZeigerÃ¼berlÃ¤ufe Ã¼berschlagen (Wraparound)."
  
! #: common.opt:3569
  #, no-c-format
  msgid "Assume signed arithmetic overflow wraps around."
  msgstr "Annehmen, dass vorzeichenbehaftete arithmetische ÃœberlÃ¤ufe regulÃ¤r Ã¼berschlagen (Wraparound)."
  
! #: common.opt:3573
  #, no-c-format
  msgid "Put zero initialized data in the bss section."
  msgstr "Null-initialisierte Daten in den bss-Abschnitt legen."
  
! #: common.opt:3577
  #, no-c-format
  msgid "Clear call-used registers upon function return."
  msgstr "Register, die beim Funktionsaufruf verwendet wurden, am Ende auf 0 zurÃ¼cksetzen."
  
! #: common.opt:3581
  #, no-c-format
  msgid "-fzero-init-padding-bits=[standard|unions|all]\tZero padding bits in initializers."
  msgstr "-fzero-init-padding-bits=[standard|unions|all]\tAuffÃ¼ll-Bits in Initialisierern ausnullen."
  
! #: common.opt:3597
  #, no-c-format
  msgid "Generate debug information in default format."
  msgstr "Fehlersuchinformationen im Standardformat erzeugen."
  
! #: common.opt:3601
  #, no-c-format
  msgid "Assume assembler support for (DWARF2+) .loc directives."
  msgstr "Assembler-UnterstÃ¼tzung fÃ¼r (DWARF2+-).loc-Direktiven annehmen."
  
! #: common.opt:3605
  #, no-c-format
  msgid "Assume assembler support for view in (DWARF2+) .loc directives."
  msgstr "Assembler-UnterstÃ¼tzung fÃ¼r Ansicht in (DWARF2+-).loc-Direktiven annehmen."
  
! #: common.opt:3609
  #, no-c-format
  msgid "Generate debug information in CodeView format."
  msgstr "Fehlersuchinformationen im CodeView-Format erzeugen."
  
! #: common.opt:3629
  #, no-c-format
  msgid "Record DW_AT_decl_column and DW_AT_call_column in DWARF."
  msgstr "DW_AT_decl_column und DW_AT_call_column in DWARF aufzeichnen."
  
! #: common.opt:3635
  #, no-c-format
  msgid "Generate CTF debug information at default level."
  msgstr "CTF-Debug-Informationen auf Standardniveau erzeugen."
  
! #: common.opt:3639
  #, no-c-format
  msgid "Generate BTF debug information at default level."
  msgstr "BTF-Debug-Informationen auf Standardniveau erzeugen."
  
! #: common.opt:3643
  #, no-c-format
  msgid "Generate pruned BTF when emitting BTF info."
  msgstr "Bereinigtes BTF bei der Ausgabe von BTF-Informationen erzeugen."
  
! #: common.opt:3647
  #, no-c-format
  msgid "Generate debug information in default version of DWARF format."
  msgstr "Fehlersuchinformationen im Standardversion des DWARF-Formats erzeugen."
  
! #: common.opt:3651
  #, no-c-format
  msgid "Generate debug information in DWARF v2 (or later) format."
  msgstr "Fehlersuchinformationen im DWARF-v2-Format (oder neuer) erzeugen."
  
! #: common.opt:3655
  #, no-c-format
  msgid "Use 32-bit DWARF format when emitting DWARF debug information."
  msgstr "Wenn DWARF-Debuginformationen erzeugt werden, dann im 32-Bit-Format."
  
! #: common.opt:3659
  #, no-c-format
  msgid "Use 64-bit DWARF format when emitting DWARF debug information."
  msgstr "Wenn DWARF-Debuginformationen erzeugt werden, dann im 64-Bit-Format."
  
! #: common.opt:3663
  #, no-c-format
  msgid "Generate debug information in default extended format."
  msgstr "Fehlersuchinformationen im erweiterten Standardformat erzeugen."
  
! #: common.opt:3667
  #, no-c-format
  msgid "Generate extended entry point information for inlined functions."
  msgstr "Erweiterte Informationen fÃ¼r Einsprungpunkt fÃ¼r inline-Funktionen erzeugen."
  
! #: common.opt:3671
  #, no-c-format
  msgid "Compute locview reset points based on insn length estimates."
  msgstr "Locview-RÃ¼cksetzpunkte auf Basis der geschÃ¤tzten BefehlslÃ¤ngen berechnen."
  
! #: common.opt:3679
  #, no-c-format
  msgid "Don't generate DWARF pubnames and pubtypes sections."
  msgstr "Keine DWARF-Abschnitte fÃ¼r Pubnames und Pubtypes erzeugen."
  
! #: common.opt:3683
  #, no-c-format
  msgid "Generate DWARF pubnames and pubtypes sections."
  msgstr "DWARF-Abschnitte fÃ¼r Pubnames und Pubtypes erzeugen."
  
! #: common.opt:3687
  #, no-c-format
  msgid "Generate DWARF pubnames and pubtypes sections with GNU extensions."
  msgstr "DWARF-Abschnitte fÃ¼r Pubnames und Pubtypes mit GNU-Erweiterungen erzeugen."
  
! #: common.opt:3691
  #, no-c-format
  msgid "Record gcc command line switches in DWARF DW_AT_producer."
  msgstr "GCC-Kommandozeilenschalter in DWARF DW_AT_producer aufzeichnen."
  
! #: common.opt:3695
  #, no-c-format
  msgid "Generate debug information in separate .dwo files."
  msgstr "Fehlersuchinformationen in separaten .dwo-Dateien erzeugen."
  
! #: common.opt:3707
  #, no-c-format
  msgid "Emit progressive recommended breakpoint locations."
  msgstr "Progressive empfohlene Breakpoint-Stellen ausgeben."
  
! #: common.opt:3711
  #, no-c-format
  msgid "Don't emit DWARF additions beyond selected version."
  msgstr "Keine DWARF-ErgÃ¤nzungen Ã¼ber gewÃ¤hlte Version hinaus erzeugen."
  
! #: common.opt:3715
  #, no-c-format
  msgid "Add description attributes to some DWARF DIEs that have no name attribute."
  msgstr "Beschreibungsattribute zu einigen DWARF-DIEs hinzufÃ¼gen, die kein Namensattribut haben."
  
! #: common.opt:3719
  #, no-c-format
  msgid "Toggle debug information generation."
  msgstr "Erzeugung von Fehlersuchinformationen umschalten."
  
! #: common.opt:3723
  #, no-c-format
  msgid "Augment variable location lists with progressive views."
  msgstr "Adresslisten der Variablen mit progressiven Sichten anreichern."
  
! #: common.opt:3730
  #, no-c-format
  msgid "Generate debug information in VMS format."
  msgstr "Fehlersuchinformationen im VMS-Format erzeugen."
  
! #: common.opt:3759
  #, no-c-format
  msgid "Generate compressed debug sections."
  msgstr "Komprimierte Fehlersuchinformationen erzeugen."
  
! #: common.opt:3763
  #, no-c-format
  msgid "-gz=<format>\tGenerate compressed debug sections in format <format>."
  msgstr "-gz=<Format>\tKomprimierte Debugabschnitte im Format <Format> erzeugen."
  
! #: common.opt:3770
  #, no-c-format
  msgid "-iplugindir=<dir>\tSet <dir> to be the default plugin directory."
  msgstr "-iplugindir=<Verz>\t<Verz> als Standard-Plugin-Verzeichnis festlegen."
  
! #: common.opt:3774
  #, no-c-format
  msgid "-imultiarch <dir>\tSet <dir> to be the multiarch include subdirectory."
  msgstr "-imultiarch <Verzeichnis>\t<Verzeichnis> als Multiarch-include-Verzeichnis festlegen."
  
! #: common.opt:3802
  #, no-c-format
  msgid "-o <file>\tPlace output into <file>."
  msgstr "-o <Datei>\tAusgabe in <Datei> schreiben."
  
! #: common.opt:3806
  #, no-c-format
  msgid "Enable function profiling."
  msgstr "Funktionsprofilierung einschalten."
  
! #: common.opt:3816
  #, no-c-format
  msgid "Like -pedantic but issue errors instead of warnings."
! msgstr "Wie -pedantic, aber Fehler statt Warnungen ausgeben."
  
! #: common.opt:3856
  #, no-c-format
  msgid "Do not display functions compiled or elapsed time."
  msgstr "Ãœbersetzte Funktionen oder verstrichene Zeit nicht ausgeben."
  
! #: common.opt:3888
  #, no-c-format
  msgid "Enable verbose output."
  msgstr "Wortreiche Ausgabe einschalten."
  
! #: common.opt:3892
  #, no-c-format
  msgid "Display the compiler's version."
  msgstr "Compiler-Version anzeigen."
  
! #: common.opt:3896
  #, no-c-format
  msgid "Suppress warnings."
  msgstr "Warnungen unterdrÃ¼cken."
  
! #: common.opt:3906
  #, no-c-format
  msgid "Create a shared library."
  msgstr "Shared Library erzeugen."
  
! #: common.opt:3970
  #, no-c-format
  msgid "Don't create a dynamically linked position independent executable."
  msgstr "Keine dynamisch gebundene, lageunabhÃ¤ngige ausfÃ¼hrbare Datei erzeugen."
  
! #: common.opt:3974
  #, no-c-format
  msgid "Create a dynamically linked position independent executable."
  msgstr "Dynamisch gebundene, lageunabhÃ¤ngige ausfÃ¼hrbare Datei erzeugen."
  
! #: common.opt:3978
  #, no-c-format
  msgid "Create a static position independent executable."
  msgstr "Statische, lageunabhÃ¤ngige ausfÃ¼hrbare Datei erzeugen."
  
! #: common.opt:3985
  #, no-c-format
  msgid "Use caller save register across calls if possible."
  msgstr "Vom Aufrufer zu sichernde Register Ã¼ber Aufrufe hinweg verwenden, wenn mÃ¶glich."
  
! #: common.opt:3989
  #, no-c-format
  msgid "Perform dead code elimination on zero and sign extensions with special dataflow analysis."
  msgstr "Totem Code bei Null- und Vorzeichenerweiterungen mittels spezieller Datenflussanalyse durchfÃ¼hren."
--- 14683,16094 ----
  msgid "Number of cache entries in incremental LTO after which to prune old entries."
  msgstr "Anzahl der Cache-EintrÃ¤ge in der inkrementellen LTO, nach der alte EintrÃ¤ge gelÃ¶scht werden sollen."
  
! #: common.opt:2301
  #, no-c-format
  msgid "Specify the algorithm to partition symbols and vars at linktime."
! msgstr "Algorithmus, mit dem Symbole und Variablen zur Bindezeit partitioniert werden."
  
! #: common.opt:2306
  #, no-c-format
  msgid "Use zlib/zstd compression level <number> for IL."
  msgstr "Kompressionsstufe <Zahl> fÃ¼r zlib/zstd fÃ¼r IL verwenden."
  
! #: common.opt:2314
  #, no-c-format
  msgid "Report various link-time optimization statistics."
! msgstr "Verschiedene Statistiken Ã¼ber Bindezeit-Optimierung ausgeben."
  
! #: common.opt:2318
  #, no-c-format
  msgid "Report various link-time optimization statistics for WPA only."
! msgstr "Nur in WPA verschiedene Statistiken Ã¼ber Bindezeit-Optimierung ausgeben."
  
! #: common.opt:2322
  #, no-c-format
  msgid "Set errno after built-in math functions."
  msgstr "Nach eingebauten Mathematikfunktionen errno setzen."
  
! #: common.opt:2326
  #, no-c-format
  msgid "-fmax-errors=<number>\tMaximum number of errors to report."
  msgstr "-fmax-errors=<Anzahl>\tHÃ¶chstzahl der zu meldenden Fehler."
  
! #: common.opt:2330
  #, no-c-format
  msgid "Allow removal of malloc and free pairs when allocated block is unused."
  msgstr "Das Entfernen von malloc- und free-Paaren erlauben, wenn der allozierte Block ungenutzt ist."
  
! #: common.opt:2337
  #, no-c-format
  msgid "Report on permanent memory allocation."
  msgstr "Ãœber dauerhafte Speicherreservierung berichten."
  
! #: common.opt:2341
  #, no-c-format
  msgid "Report on permanent memory allocation in WPA only."
  msgstr "Nur in WPA Ã¼ber dauerhafte Speicherreservierung berichten."
  
! #: common.opt:2348
  #, no-c-format
  msgid "Attempt to merge identical constants and constant variables."
  msgstr "Versuchen, identische Konstanten und konstante Variablen zu verschmelzen."
  
! #: common.opt:2352
  #, no-c-format
  msgid "Attempt to merge identical constants across compilation units."
  msgstr "Versuchen, identische Konstanten Ã¼ber Ãœbersetzungseinheiten hinweg zu verschmelzen."
  
! #: common.opt:2356
  #, no-c-format
  msgid "Attempt to merge identical debug strings across compilation units."
  msgstr "Versuchen, identische Zeichenketten zur Fehlersuche Ã¼ber Ãœbersetzungseinheiten hinweg zu verschmelzen."
  
! #: common.opt:2360
  #, no-c-format
  msgid "-fmessage-length=<number>\tLimit diagnostics to <number> characters per line.  0 suppresses line-wrapping."
  msgstr "-fmessage-length=<Anzahl>\tDiagnosemeldungen auf <Anzahl> Zeichen pro Zeile beschrÃ¤nken. 0 unterdrÃ¼ckt Zeilenumbruch."
  
! #: common.opt:2364
  #, no-c-format
  msgid "Align the start of every function."
  msgstr "Die AnfÃ¤nge jeder Funktion ausrichten."
  
! #: common.opt:2368
  #, no-c-format
  msgid "Perform SMS based modulo scheduling before the first scheduling pass."
  msgstr "SMS-basierte modulo-Planung vor erstem Planungsdurchlauf durchfÃ¼hren."
  
! #: common.opt:2372
  #, no-c-format
  msgid "Perform SMS based modulo scheduling with register moves allowed."
  msgstr "SMS-basierte modulo-Planung mit erlaubten Register-Verschiebungen durchfÃ¼hren."
  
! #: common.opt:2376
  #, no-c-format
  msgid "Move loop invariant computations out of loops."
  msgstr "Berechnung der Schleifeninvarianten auÃŸerhalb der Schleifen legen."
  
! #: common.opt:2380
  #, no-c-format
  msgid "Move stores out of loops."
  msgstr "Speicheroperationen aus Schleifen herausverschieben."
  
! #: common.opt:2384
  #, no-c-format
  msgid "Building block for specs-based multilib-aware TFLAGS."
  msgstr "Baustein fÃ¼r specs-basierte multilib-bewusste TFLAGS."
  
! #: common.opt:2388
  #, no-c-format
  msgid "Use the RTL dead code elimination pass."
  msgstr "Den RTL-Durchlauf zur Entfernung toten Codes verwenden."
  
! #: common.opt:2392
  #, no-c-format
  msgid "Use the RTL dead store elimination pass."
  msgstr "Den RTL-Durchlauf zur Entfernung toter Speicherungen verwenden."
  
! #: common.opt:2396
  #, no-c-format
  msgid "Enable/Disable the traditional scheduling in loops that already passed modulo scheduling."
  msgstr "Traditionelle Planung in Schleifen, die bereits Modulo-Planung unterzogen wurden, einschalten/ausschalten."
  
! #: common.opt:2400
  #, no-c-format
  msgid "Support synchronous non-call exceptions."
  msgstr "Synchrone Nicht-Aufruf-Ausnahmen unterstÃ¼tzen."
  
! #: common.opt:2407
  #, no-c-format
  msgid "-foffload-options=<targets>=<options>\tSpecify options for the offloading targets."
  msgstr "-foffload-options=<Ziele>=<Optionen>\tOffloading-Ziele und deren Optionen angeben."
  
! #: common.opt:2411
  #, no-c-format
  msgid "-foffload-abi=[lp64|ilp32]\tSet the ABI to use in an offload compiler."
  msgstr "-foffload-abi=[lp64|ilp32]\tFestlegen, welche ABI in einem Offload-Compiler verwendet wird."
  
! #: common.opt:2424
  #, no-c-format
  msgid "-foffload-abi-host-opts=<options>\tSpecify host ABI options."
  msgstr "-foffload-abi-host-opts=<options>\tHost-ABI-Optionen festlegen."
  
! #: common.opt:2428
  #, no-c-format
  msgid "When possible do not generate stack frames."
  msgstr "Wenn mÃ¶glich, keine Stapelrahmen erzeugen."
  
! #: common.opt:2435
  #, no-c-format
  msgid "Generate SIMD clones for functions with the OpenMP declare target directive."
  msgstr "SIMD-Klone fÃ¼r Funktionen mit OpenMP-Declare-Ziel-Direktive erzeugen."
  
! #: common.opt:2454
  #, no-c-format
  msgid "Enable all optimization info dumps on stderr."
  msgstr "Alle Informationen Ã¼ber Optimierungen auf stderr einschalten."
  
! #: common.opt:2458
  #, no-c-format
  msgid "-fopt-info[-<type>=filename]\tDump compiler optimization details."
  msgstr "-fopt-info[-<Typ>=Dateiname]\tOptimierungsdetails des Compilers ausgeben."
  
! #: common.opt:2462
  #, no-c-format
  msgid "Write a SRCFILE.opt-record.json file detailing what optimizations were performed."
  msgstr "Eine QUELLDATEI.opt-record.json schreiben mit Details, welche Optimierungen durchgefÃ¼hrt wurden."
  
! #: common.opt:2466
  #, no-c-format
  msgid "Detect loops calculating CRC and replace with faster implementation. If the target supports CRC instruction and the CRC loop uses the same polynomial as the one used in the CRC instruction, directly replace with the corresponding CRC instruction. Otherwise, if the target supports carry-less-multiplication instruction, generate CRC using it. If neither case applies, generate table-based CRC."
  msgstr "Schleifen, die CRC berechnen, erkennen und durch eine schnellere Implementierung ersetzen. Wenn das Zielsystem den CRC-Befehl unterstÃ¼tzt und die CRC-Schleife dasselbe Polynom wie der CRC-Befehl verwendet, wird sie direkt durch den entsprechenden CRC-Befehl ersetzt. Wenn das Zielsystem den Befehl zur Ã¼bertragslosen Multiplikation unterstÃ¼tzt, wird die CRC mit diesem Befehl erzeugt. Trifft keiner der beiden FÃ¤lle zu, wird die CRC tabellenbasiert berechnet."
  
! #: common.opt:2480
  #, no-c-format
  msgid "Optimize sibling and tail recursive calls."
  msgstr "Geschwister- und endrekursive Aufrufe optimieren."
  
! #: common.opt:2484
  #, no-c-format
  msgid "Insert path profiling code."
  msgstr "Pfadprofilierungscode einfÃ¼gen."
  
! #: common.opt:2488
  #, no-c-format
  msgid "Perform partial inlining."
  msgstr "Teilweises Inlining durchfÃ¼hren."
  
! #: common.opt:2492 common.opt:2496
  #, no-c-format
  msgid "Report on memory allocation before interprocedural optimization."
  msgstr "Ãœber Speicherbelegung vor zwischenprozeduraler Optimierung berichten."
  
! #: common.opt:2500
  #, no-c-format
  msgid "Pack structure members together without holes."
  msgstr "Strukturelemente ohne LÃ¼cken zusammenpacken."
  
! #: common.opt:2504
  #, no-c-format
  msgid "-fpack-struct=<number>\tSet initial maximum structure member alignment."
  msgstr "-fpack-struct=<Zahl>\tAnfÃ¤ngliche grÃ¶ÃŸte Ausrichtung fÃ¼r Strukturelemente festlegen."
  
! #: common.opt:2508
  #, no-c-format
  msgid "Return small aggregates in memory, not registers."
  msgstr "Kleine Aggregate Ã¼ber Speicher, nicht Register, zurÃ¼ckgeben."
  
! #: common.opt:2512
  #, no-c-format
  msgid "Perform loop peeling."
  msgstr "Schleifen-SchÃ¤lung durchfÃ¼hren."
  
! #: common.opt:2516
  #, no-c-format
  msgid "Enable machine specific peephole optimizations."
  msgstr "Maschinenspezifische Guckloch-Optimierungen einschalten."
  
! #: common.opt:2520
  #, no-c-format
  msgid "Enable an RTL peephole pass before sched2."
  msgstr "Einen RTL-Guckloch-Durchlauf vor sched2 einschalten."
  
! #: common.opt:2524
  #, no-c-format
  msgid "Generate position-independent code if possible (large mode)."
  msgstr "Wenn mÃ¶glich, lageunabhÃ¤ngigen Code erzeugen (large mode)."
  
! #: common.opt:2528
  #, no-c-format
  msgid "Generate position-independent code for executables if possible (large mode)."
  msgstr "Wenn mÃ¶glich, lageunabhÃ¤ngigen Code fÃ¼r ausfÃ¼hrbare Dateien erzeugen (large mode)."
  
! #: common.opt:2532
  #, no-c-format
  msgid "Generate position-independent code if possible (small mode)."
  msgstr "Wenn mÃ¶glich, positionsunabhÃ¤ngigen Code erzeugen (small mode)."
  
! #: common.opt:2536
  #, no-c-format
  msgid "Generate position-independent code for executables if possible (small mode)."
  msgstr "Wenn mÃ¶glich, positionsunabhÃ¤ngigen Code fÃ¼r ausfÃ¼hrbare Dateien erzeugen (small mode)."
  
! #: common.opt:2540
  #, no-c-format
  msgid "Use PLT for PIC calls (-fno-plt: load the address from GOT at call site)."
  msgstr "PLT fÃ¼r PIC-Aufrufe verwenden (-fno-plt: die Adresse beim Aufrufer aus der GOT laden)."
  
! #: common.opt:2544
  #, no-c-format
  msgid "Specify a plugin to load."
  msgstr "Zu ladendes Plugin angeben."
  
! #: common.opt:2548
  #, no-c-format
  msgid "-fplugin-arg-<name>-<key>[=<value>]\tSpecify argument <key>=<value> for plugin <name>."
  msgstr "-fplugin-arg-<Name>-<SchlÃ¼ssel>[=<Wert>]\tArgument <SchlÃ¼ssel>=<Wert> fÃ¼r Plugin <Name> angeben."
  
! #: common.opt:2552
  #, no-c-format
  msgid "Run predictive commoning optimization."
  msgstr "Vorhersehende vereinheitlichende Optimierung durchlaufen."
  
! #: common.opt:2556
  #, no-c-format
  msgid "Generate prefetch instructions, if available, for arrays in loops."
  msgstr "Wenn verfÃ¼gbar, Prefetch-Befehle fÃ¼r Arrays in Schleifen erzeugen."
  
! #: common.opt:2560
  #, no-c-format
  msgid "Enable basic program profiling code."
  msgstr "Einfachen Programm-Profilierungscode einschalten."
  
! #: common.opt:2564
  #, no-c-format
  msgid "Generate absolute source path names for gcov."
  msgstr "Absolute Quellpfade fÃ¼r gcov erzeugen."
  
! #: common.opt:2568
  #, no-c-format
  msgid "Insert arc-based program profiling code."
  msgstr "Arc-basierten Programm-Profilierungscode einfÃ¼gen."
  
! #: common.opt:2572
  #, no-c-format
  msgid "Insert condition coverage profiling code."
  msgstr "Code einfÃ¼gen, um die Bedingungsabdeckung zu messen."
  
! #: common.opt:2576
  #, no-c-format
  msgid "Set the top-level directory for storing the profile data. The default is 'pwd'."
  msgstr "Basisverzeichnis zum Speichern der Profildaten setzen. Vorgabe ist das aktuelle Verzeichnis."
  
! #: common.opt:2581
  #, no-c-format
  msgid "Select the name for storing the profile note file."
  msgstr "Name zum Speichern der Profilingnotizen festlegen."
  
! #: common.opt:2585
  #, no-c-format
  msgid "Enable correction of flow inconsistent profile data input."
  msgstr "Korrektur fluss-unstimmiger Profildateneingabe einschalten."
  
! #: common.opt:2589
  #, no-c-format
  msgid "-fprofile-update=[single|atomic|prefer-atomic]\tSet the profile update method."
  msgstr "-fprofile-update=[single|atomic|prefer-atomic]\tMethode fÃ¼r Profilupdates festlegen."
  
! #: common.opt:2593
  #, no-c-format
  msgid "Instrument only functions from files whose name matches any of the regular expressions (separated by semi-colons)."
  msgstr "Funktionen nur aus Dateien instrumentieren, deren Namen zu einem der regulÃ¤ren AusdrÃ¼cke passen (durch Semikolon getrennt)."
  
! #: common.opt:2597
  #, no-c-format
  msgid "Instrument only functions from files whose name does not match any of the regular expressions (separated by semi-colons)."
  msgstr "Funktionen nur aus Dateien instrumentieren, deren Namen zu keinem der regulÃ¤ren AusdrÃ¼cke passen (durch Semikolon getrennt)."
  
! #: common.opt:2613
  #, no-c-format
  msgid "-fprofile-reproducible=[serial|parallel-runs|multithreaded]\tControl level of reproducibility of profile gathered by -fprofile-generate."
  msgstr "-fprofile-reproducible=[serial|parallel-runs|multithreaded]\tStufe fÃ¼r die Reproduzierbarkeit des mit Â»-fprofile-generateÂ« generierten Profils festlegen."
  
! #: common.opt:2629
  #, no-c-format
  msgid "Remove prefix from absolute path before mangling name for -fprofile-generate= and -fprofile-use=."
  msgstr "PrÃ¤fix von absolutem Pfad abschneiden, bevor dieser Name fÃ¼r Â»-fprofile-generate=Â« und Â»-fprofile-use=Â« gemangelt wird."
  
! #: common.opt:2633
  #, no-c-format
  msgid "-fprofile-prefix-map=<old>=<new>\tMap one directory name to another in GCOV coverage result."
  msgstr "-fprofile-prefix-map=<alt>=<neu>\tIn der Ausgabe von GCOV einen Verzeichnisnamen auf einen anderen abbilden."
  
! #: common.opt:2637
  #, no-c-format
  msgid "Enable common options for generating profile info for profile feedback directed optimizations."
  msgstr "Allgemeine Optionen zum Erzeugen von Profil-Info fÃ¼r Profil-Feedback-gerichtete Optimierungen einschalten."
  
! #: common.opt:2641
  #, no-c-format
  msgid "Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=."
! msgstr "Allgemeine Optionen zum Erzeugen von Profil-Info fÃ¼r Profil-Feedback-gerichtete Optimierungen einschalten, und Â»-fprofile-dir=Â« setzen."
  
! #: common.opt:2645
  #, no-c-format
  msgid "Register the profile information in the .gcov_info section instead of using a constructor/destructor."
  msgstr "Profilinformation im Abschnitt .gcov_info registrieren, statt einen Konstruktor/Destruktor zu verwenden."
  
! #: common.opt:2649
  #, no-c-format
  msgid "Register the profile information in the specified section instead of using a constructor/destructor."
  msgstr "Profilinformation im angegebenen Abschnitt registrieren, statt einen Konstruktor/Destruktor zu verwenden."
  
! #: common.opt:2653
  #, no-c-format
  msgid "Do not assume that functions never executed during the train run are cold."
  msgstr "Nicht annehmen, dass Funktionen, die im Trainingslauf nie ausgefÃ¼hrt wurden, kalt sind."
  
! #: common.opt:2657
  #, no-c-format
  msgid "Enable common options for performing profile feedback directed optimizations."
  msgstr "Allgemeine Optionen zum DurchfÃ¼hren von Profil-Feedback-gerichteten Optimierungen einschalten."
  
! #: common.opt:2661
  #, no-c-format
  msgid "Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=."
! msgstr "Allgemeine Optionen zum DurchfÃ¼hren von Profil-Feedback-gerichteten Optimierungen einschalten, und Â»-fprofile-dir=Â« setzen."
  
! #: common.opt:2665
  #, no-c-format
  msgid "Insert code to profile values of expressions."
  msgstr "Code einfÃ¼gen, um AusdrÃ¼cke zu profilen."
  
! #: common.opt:2669
  #, no-c-format
  msgid "Report on consistency of profile."
  msgstr "Ãœber Konsistenz des Profils berichten."
  
! #: common.opt:2673
  #, no-c-format
  msgid "Enable function reordering that improves code placement."
  msgstr "Funktionen umsortieren, um Codeplatzierung zu verbessern."
  
! #: common.opt:2677
  #, no-c-format
  msgid "Insert NOP instructions at each function entry."
  msgstr "In jedem Funktionsprolog NOP-Befehle erzeugen."
  
! #: common.opt:2684
  #, no-c-format
  msgid "-frandom-seed=<string>\tMake compile reproducible using <string>."
  msgstr "-frandom-seed=<Zeichenkette>\tÃœbersetzung mit <Zeichenkette> reproduzierbar machen."
  
! #: common.opt:2694
  #, no-c-format
  msgid "Record gcc command line switches in the object file."
  msgstr "GCC-Kommandozeilenschalter in Objektdateien aufzeichnen."
  
! #: common.opt:2698
  #, no-c-format
  msgid "Return small aggregates in registers."
  msgstr "Kleine Aggregate Ã¼ber Register zurÃ¼ckgeben."
  
! #: common.opt:2706
  #, no-c-format
  msgid "Tell DSE that the storage for a C++ object is dead when the constructor starts and when the destructor finishes."
  msgstr "DSE mitteilen, dass der Speicher fÃ¼r ein C++-Objekt tot ist, wenn der Konstruktor anfÃ¤ngt und wenn der Destruktor aufhÃ¶rt."
  
! #: common.opt:2720
  #, no-c-format
  msgid "-flive-patching=[inline-only-static|inline-clone]\tControl IPA optimizations to provide a safe compilation for live-patching.  At the same time, provides multiple-level control on the enabled IPA optimizations."
  msgstr "-flive-patching=[inline-only-static|inline-clone]\tFunktionsÃ¼bergreifende Optimierung steuern, um fÃ¼r Live-Patching geeigneten Code zu erzeugen. Bietet gleichzeitig mehrstufige Kontrolle bezÃ¼glich der ausgewÃ¤hlten funktionsÃ¼bergreifenden Optimierungen."
  
! #: common.opt:2735
  #, no-c-format
  msgid "Tell DCE to remove unused C++ allocations."
  msgstr "DCE mitteilen, dass ungenutzte C++-Allokationen entfernt werden."
  
! #: common.opt:2739
  #, no-c-format
  msgid "Relief of register pressure through live range shrinkage."
  msgstr "Entlastung des Registerdrucks durch Live-Bereichs-Schrumpfung."
  
! #: common.opt:2743
  #, no-c-format
  msgid "Perform a register renaming optimization pass."
  msgstr "Einen Optimierungsdurchgang zur Registerumbenennung durchfÃ¼hren."
  
! #: common.opt:2747
  #, no-c-format
  msgid "Perform a target dependent instruction fusion optimization pass."
  msgstr "Einen zielabhÃ¤ngigen Optimierungsdurchgang zur Befehlsfusion durchfÃ¼hren."
  
! #: common.opt:2751
  #, no-c-format
  msgid "Reorder basic blocks to improve code placement."
  msgstr "BasisblÃ¶cke umsortieren, um Codeplatzierung zu verbessern."
  
! #: common.opt:2755
  #, no-c-format
  msgid "-freorder-blocks-algorithm=[simple|stc]\tSet the used basic block reordering algorithm."
  msgstr "-freorder-blocks-algorithm=[simple|stc]\tAlgorithmus zum Umordnen der BasisblÃ¶cke festlegen."
  
! #: common.opt:2768
  #, no-c-format
  msgid "Reorder basic blocks and partition into hot and cold sections."
  msgstr "BasisblÃ¶cke und in heiÃŸe und kalte Abschnitte umordnen und partitionieren."
  
! #: common.opt:2772
  #, no-c-format
  msgid "Reorder functions to improve code placement."
  msgstr "Funktionen umsortieren, um Codeplatzierung zu verbessern."
  
! #: common.opt:2776
  #, no-c-format
  msgid "Add a common subexpression elimination pass after loop optimizations."
  msgstr "Einen Durchlauf zur Entfernung von TeilausdrÃ¼cken nach Schleifenoptimierungen hinzufÃ¼gen."
  
! #: common.opt:2784
  #, no-c-format
  msgid "Disable optimizations that assume default FP rounding behavior."
  msgstr "Optimierungen, die Standard-Rundungsverhalten fÃ¼r Gleitkomma annehmen, ausschalten."
  
! #: common.opt:2788
  #, no-c-format
  msgid "Enable scheduling across basic blocks."
  msgstr "Planung Ã¼ber BasisblÃ¶cke hinaus einschalten."
  
! #: common.opt:2792
  #, no-c-format
  msgid "Enable register pressure sensitive insn scheduling."
  msgstr "Registerdruckempfindliche Befehlsplanung einschalten."
  
! #: common.opt:2796
  #, no-c-format
  msgid "Allow speculative motion of non-loads."
  msgstr "Spekulative Bewegung von Nicht-Lade-Befehlen erlauben."
  
! #: common.opt:2800
  #, no-c-format
  msgid "Allow speculative motion of some loads."
  msgstr "Spekulative Bewegung bei einigen Ladebefehlen erlauben."
  
! #: common.opt:2804
  #, no-c-format
  msgid "Allow speculative motion of more loads."
  msgstr "Spekulative Bewegung bei mehr Ladebefehlen erlauben."
  
! #: common.opt:2808
  #, no-c-format
  msgid "-fsched-verbose=<number>\tSet the verbosity level of the scheduler."
  msgstr "-fsched-verbose=<Stufe>\tStufe der WortfÃ¼lle des Planers angeben."
  
! #: common.opt:2812
  #, no-c-format
  msgid "If scheduling post reload, do superblock scheduling."
  msgstr "Wenn Planung nach dem Neuladen, dann Superblock-Planung."
  
! #: common.opt:2820
  #, no-c-format
  msgid "Reschedule instructions before register allocation."
  msgstr "Befehle vor Registerbelegung neu planen."
  
! #: common.opt:2824
  #, no-c-format
  msgid "Reschedule instructions after register allocation."
  msgstr "Befehle nach Registerbelegung neu planen."
  
! #: common.opt:2831
  #, no-c-format
  msgid "Schedule instructions using selective scheduling algorithm."
  msgstr "Befehle mit selektivem Planungs-Algorithmus einplanen."
  
! #: common.opt:2835
  #, no-c-format
  msgid "Run selective scheduling after reload."
  msgstr "AusgewÃ¤hlte Planung nach Neuladen durchfÃ¼hren."
  
! #: common.opt:2839
  #, no-c-format
  msgid "Run self-tests, using the given path to locate test files."
  msgstr "Selbsttests durchfÃ¼hren, mit dem angegebenen Pfad, um die Testdateien zu finden."
  
! #: common.opt:2843
  #, no-c-format
  msgid "Perform software pipelining of inner loops during selective scheduling."
  msgstr "WÃ¤hrend selektiver Planung Software-Pipelining innerer Schleifen durchfÃ¼hren."
  
! #: common.opt:2847
  #, no-c-format
  msgid "Perform software pipelining of outer loops during selective scheduling."
  msgstr "WÃ¤hrend selektiver Planung Software-Pipelining Ã¤uÃŸerer Schleifen durchfÃ¼hren."
  
! #: common.opt:2851
  #, no-c-format
  msgid "Reschedule pipelined regions without pipelining."
  msgstr "Regionen mit Pipelining ohne Pipelining neu planen."
  
! #: common.opt:2855
  #, no-c-format
  msgid "Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker."
! msgstr "Erlauben, dass der dynamische Binder Funktionen und Variablen mit solchen unterschiedlicher Semantik (oder Initialisierungen) gemischt platzieren darf."
  
! #: common.opt:2861
  #, no-c-format
  msgid "Allow premature scheduling of queued insns."
  msgstr "Nicht ausgereifte Planung von eingereihten Befehlen erlauben."
  
! #: common.opt:2865
  #, no-c-format
  msgid "-fsched-stalled-insns=<number>\tSet number of queued insns that can be prematurely scheduled."
  msgstr "-fsched-stalled-insns=<Anzahl>\tAnzahl der eingereihten Befehle festlegen, die unausgereift geplant werden kÃ¶nnen."
  
! #: common.opt:2873
  #, no-c-format
  msgid "Set dependence distance checking in premature scheduling of queued insns."
  msgstr "PrÃ¼fung der AbhÃ¤ngigkeitsentfernung in nicht ausgereifter Planung von eingereihten Befehlen festlegen."
  
! #: common.opt:2877
  #, no-c-format
  msgid "-fsched-stalled-insns-dep=<number>\tSet dependence distance checking in premature scheduling of queued insns."
  msgstr "-fsched-stalled-insns-dep=<Zahl>\tAbhÃ¤ngigkeitsentfernung fÃ¼r PrÃ¼fung in nicht ausgereifter Planung von eingereihten Befehlen festlegen."
  
! #: common.opt:2881
  #, no-c-format
  msgid "Enable the group heuristic in the scheduler."
  msgstr "Gruppenheuristik im Planer einschalten."
  
! #: common.opt:2885
  #, no-c-format
  msgid "Enable the critical path heuristic in the scheduler."
  msgstr "Critical-Path-Heuristik im Planer einschalten."
  
! #: common.opt:2889
  #, no-c-format
  msgid "Enable the speculative instruction heuristic in the scheduler."
  msgstr "Heuristik fÃ¼r spekulative Befehle im Planer einschalten."
  
! #: common.opt:2893
  #, no-c-format
  msgid "Enable the rank heuristic in the scheduler."
  msgstr "Rang-Heuristik im Planer einschalten."
  
! #: common.opt:2897
  #, no-c-format
  msgid "Enable the last instruction heuristic in the scheduler."
  msgstr "Heuristik fÃ¼r letzte Befehle im Planer einschalten."
  
! #: common.opt:2901
  #, no-c-format
  msgid "Enable the dependent count heuristic in the scheduler."
  msgstr "Heuristik fÃ¼r AbhÃ¤ngigkeits-ZÃ¤hler bei Planung einschalten."
  
! #: common.opt:2905
  #, no-c-format
  msgid "Access data in the same section from shared anchor points."
  msgstr "Auf Daten im gleichen Abschnitt von gemeinsam verwendeten Ankerpunkten zugreifen."
  
! #: common.opt:2917
  #, no-c-format
  msgid "Turn on Redundant Extensions Elimination pass."
  msgstr "Durchlauf fÃ¼r Redundante Erweiterungsentfernung (REE) einschalten."
  
! #: common.opt:2921
  #, no-c-format
  msgid "Show column numbers in diagnostics, when available.  Default on."
  msgstr "Spaltenzahlen in Diagnose zeigen, wenn verfÃ¼gbar. Standard: Ein."
  
! #: common.opt:2925
  #, no-c-format
  msgid "Emit function prologues only before parts of the function that need it, rather than at the top of the function."
  msgstr "Funktionsprologe nur vor Teilen der Funktion erzeugen, die diese benÃ¶tigt, statt am Anfang der Funktion."
  
! #: common.opt:2930
  #, no-c-format
  msgid "Shrink-wrap parts of the prologue and epilogue separately."
  msgstr "Teile des Prologs und Epilogs separat an den nÃ¶tigen Stellen erzeugen."
  
! #: common.opt:2934
  #, no-c-format
  msgid "Disable optimizations observable by IEEE signaling NaNs."
  msgstr "Von IEEE-Signalisierungs-NaNs wahrnehmbare Optimierungen ausschalten."
  
! #: common.opt:2938
  #, no-c-format
  msgid "Disable floating point optimizations that ignore the IEEE signedness of zero."
  msgstr "Gleitkommaoptimierungen ausschalten, die die IEEE-Vorzeichenbehaftung von Null nicht beachten."
  
! #: common.opt:2942
  #, no-c-format
  msgid "Convert floating point constants to single precision constants."
  msgstr "Gleitkommakonstanten in Konstanten einfacher Genauigkeit umwandeln."
  
! #: common.opt:2946
  #, no-c-format
  msgid "Split lifetimes of induction variables when loops are unrolled."
  msgstr "Lebensdauer von Induktionsvariablen aufteilen, wenn Schleifen abgerollt werden."
  
! #: common.opt:2950
  #, no-c-format
  msgid "Generate discontiguous stack frames."
  msgstr "Nicht zusammenhÃ¤ngende Stapelrahmen erzeugen."
  
! #: common.opt:2954
  #, no-c-format
  msgid "Split wide types into independent registers."
  msgstr "Breite Typen in unabhÃ¤ngige Register aufteilen."
  
! #: common.opt:2958
  #, no-c-format
  msgid "Split wide types into independent registers earlier."
  msgstr "Breite Typen bereits frÃ¼her in unabhÃ¤ngige Register aufteilen."
  
! #: common.opt:2962
  #, no-c-format
  msgid "Enable backward propagation of use properties at the SSA level."
  msgstr "RÃ¼ckwÃ¤rtsÃ¼bermittlung von Nutzungseigenschaften auf SSA-Ebene einschalten."
  
! #: common.opt:2966
  #, no-c-format
  msgid "Optimize conditional patterns using SSA PHI nodes."
  msgstr "Bedingte AusdrÃ¼cke mittels SSA-PHI-Knoten optimieren."
  
! #: common.opt:2970
  #, no-c-format
  msgid "Optimize amount of stdarg registers saved to stack at start of function."
  msgstr "Anzahl der stdarg-Register optimieren, die am Anfang einer Funktion auf dem Stapel gespeichert werden."
  
! #: common.opt:2974
  #, no-c-format
  msgid "Apply variable expansion when loops are unrolled."
  msgstr "Variablenerweiterung anwenden, wenn Schleifen abgerollt werden."
  
! #: common.opt:2978
  #, no-c-format
  msgid "-fstack-check=[no|generic|specific]\tInsert stack checking code into the program."
  msgstr "-fstack-check=[no|generic|specific]\tCode zur StapelprÃ¼fung in das Programm einfÃ¼gen."
  
! #: common.opt:2982
  #, no-c-format
  msgid "Insert stack checking code into the program.  Same as -fstack-check=specific."
! msgstr "Code zur StapelprÃ¼fung in das Programm einfÃ¼gen. Dasselbe wie Â»-fstack-check=specificÂ«."
  
! #: common.opt:2986
  #, no-c-format
  msgid "Insert code to probe each page of stack space as it is allocated to protect from stack-clash style attacks."
  msgstr "Code einfÃ¼gen, der jede Speicherseite des Stapels bei der Allokation antestet, um vor Angriffen basierend auf Ãœberschneidungen zu schÃ¼tzen."
  
! #: common.opt:2994
  #, no-c-format
  msgid "-fstack-limit-register=<register>\tTrap if the stack goes past <register>."
  msgstr "-fstack-limit-register=<Register>\tWenn der Stapel Ã¼ber <Register> hinausgeht, abfangen (Â»trapÂ«)."
  
! #: common.opt:2998
  #, no-c-format
  msgid "-fstack-limit-symbol=<name>\tTrap if the stack goes past symbol <name>."
  msgstr "-fstack-limit-symbol=<Name>\tWenn der Stapel Ã¼ber das Symbol <Name> hinausgeht, abfangen (Â»trapÂ«)."
  
! #: common.opt:3002
  #, no-c-format
  msgid "Use propolice as a stack protection method."
  msgstr "Propolice als Stapelschutzmethode verwenden."
  
! #: common.opt:3006
  #, no-c-format
  msgid "Use a stack protection method for every function."
  msgstr "Eine Stapelschutzmethode fÃ¼r jede Funktion verwenden."
  
! #: common.opt:3010
  #, no-c-format
  msgid "Use a smart stack protection method for certain functions."
  msgstr "Eine schlaue Stapelschutzmethode fÃ¼r gewisse Funktionen verwenden."
  
! #: common.opt:3014
  #, no-c-format
  msgid "Use stack protection method only for functions with the stack_protect attribute."
  msgstr "Stapelschutzmethode nur fÃ¼r Funktionen mit dem Attribut Â»stack_protectÂ« verwenden."
  
! #: common.opt:3018
  #, no-c-format
  msgid "Output stack usage information on a per-function basis."
  msgstr "Information Ã¼ber Stapelverwendung auf Funktionsbasis ausgeben."
  
! #: common.opt:3030
  #, no-c-format
  msgid "Assume strict aliasing rules apply."
  msgstr "Annehmen, dass strenge Alias-Regeln gelten."
  
! #: common.opt:3034
  #, no-c-format
  msgid "Treat signed overflow as undefined.  Negated as -fwrapv -fwrapv-pointer."
! msgstr "Vorzeichenbehafteten Ãœberlauf als undefiniertes Verhalten behandeln. Wird mit Â»-fwrapv -fwrapv-pointerÂ« negiert."
  
! #: common.opt:3038
  #, no-c-format
  msgid "Disable stack scrub entirely, disregarding strub attributes."
  msgstr "Stapelschrubben komplett ausschalten, unabhÃ¤ngig von Strub-Attributen."
  
! #: common.opt:3042
  #, no-c-format
  msgid "Enable stack scrub as per attributes, with strict call checking."
  msgstr "Stapelschrubben gemÃ¤ÃŸ der Attribute einschalten, mit strenger AufrufprÃ¼fung."
  
! #: common.opt:3051
  #, no-c-format
  msgid "Restore default strub mode: as per attributes, with relaxed checking."
  msgstr "Standard-Strub-Modus wiederherstellen: gemÃ¤ÃŸ Attributen, mit lockerer PrÃ¼fung."
  
! #: common.opt:3055
  #, no-c-format
  msgid "Enable stack scrubbing for all viable functions."
  msgstr "Stapelschrubben fÃ¼r alle geeigneten Funktionen einschalten."
  
! #: common.opt:3059
  #, no-c-format
  msgid "Enable at-calls stack scrubbing for all viable functions."
  msgstr "Stapelschrubben fÃ¼r At-Aufrufe fÃ¼r alle geeigneten Funktionen einschalten."
  
! #: common.opt:3063
  #, no-c-format
  msgid "Enable internal stack scrubbing for all viable functions."
  msgstr "Internes Stapelschrubben fÃ¼r alle geeigneten Funktionen einschalten."
  
! #: common.opt:3067
  #, no-c-format
  msgid "Implement __atomic operations via libcalls to legacy __sync functions."
  msgstr "__atomic-Operationen Ã¼ber Bibliotheksaufrufe alter __sync-Funktionen durchfÃ¼hren."
  
! #: common.opt:3071
  #, no-c-format
  msgid "Check for syntax errors, then stop."
  msgstr "Auf Syntaxfehler prÃ¼fen, dann anhalten."
  
! #: common.opt:3075
  #, no-c-format
  msgid "Create data files needed by \"gcov\"."
  msgstr "Von Â»gcovÂ« benÃ¶tigte Dateien anlegen."
  
! #: common.opt:3079
  #, no-c-format
  msgid "Perform jump threading optimizations."
  msgstr "Sprung-Threading-Optimierungen durchfÃ¼hren."
  
! #: common.opt:3083
  #, no-c-format
  msgid "Report the time taken by each compiler pass."
  msgstr "BenÃ¶tigte Zeit fÃ¼r jeden Compilerdurchlauf ausgeben."
  
! #: common.opt:3087
  #, no-c-format
  msgid "Record times taken by sub-phases separately."
  msgstr "Dauer der Teilphasen separat aufzeichnen."
  
! #: common.opt:3091
  #, no-c-format
  msgid "-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\tSet the default thread-local storage code generation model."
  msgstr "-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\tDas standardmÃ¤ÃŸige Codeerzeugungsmodell fÃ¼r Thread-lokalen Speicher angeben."
  
! #: common.opt:3110
  #, no-c-format
  msgid "Reorder top level functions, variables, and asms."
  msgstr "Funktionen, Variablen und asms hÃ¶chster Ebene umordnen."
  
! #: common.opt:3114
  #, no-c-format
  msgid "Perform superblock formation via tail duplication."
  msgstr "Superblockerzeugung Ã¼ber Ende-VervielfÃ¤ltigung durchfÃ¼hren."
  
! #: common.opt:3118
  #, no-c-format
  msgid "For targets that normally need trampolines for nested functions, always generate them instead of using descriptors."
  msgstr "FÃ¼r Ziele, die normalerweise Trampoline fÃ¼r geschachtelte Funktionen benÃ¶tigen, diese stets generieren, statt Deskriptoren zu verwenden."
  
! #: common.opt:3123
  #, no-c-format
  msgid "Whether trampolines are generated in executable memory rather than executable stack."
  msgstr "Ob Trampoline in ausfÃ¼hrbarem Speicher statt in ausfÃ¼hrbarem Stapelspeicher erzeugt werden."
  
! #: common.opt:3141
  #, no-c-format
  msgid "Assume floating-point operations can trap."
  msgstr "Annehmen, dass Gleitkommaoperationen abgefangen werden kÃ¶nnen (Â»trapÂ«)."
  
! #: common.opt:3145
  #, no-c-format
  msgid "Trap for signed overflow in addition, subtraction and multiplication."
  msgstr "Vorzeichenbehafteten Ãœberlauf in Addition, Subtraktion und Multiplikation abfangen (Â»trapÂ«)."
  
! #: common.opt:3149
  #, no-c-format
  msgid "Enable SSA-CCP optimization on trees."
  msgstr "SSA-CCP-Optimierungen auf BÃ¤umen einschalten."
  
! #: common.opt:3153
  #, no-c-format
  msgid "Enable SSA-BIT-CCP optimization on trees."
  msgstr "SSA-BIT-CCP-Optimierungen auf BÃ¤umen einschalten."
  
! #: common.opt:3161
  #, no-c-format
  msgid "Enable loop header copying on trees."
  msgstr "Kopieren des Schleifenkopfes auf BÃ¤umen einschalten."
  
! #: common.opt:3169
  #, no-c-format
  msgid "Enable SSA coalescing of user variables."
  msgstr "Zusammenfassen von nutzersichtbaren Variablen wÃ¤hrend des SSA-Durchlaufs einschalten."
  
! #: common.opt:3177
  #, no-c-format
  msgid "Enable copy propagation on trees."
  msgstr "Kopieweitergabe auf BÃ¤umen einschalten."
  
! #: common.opt:3185
  #, no-c-format
  msgid "Transform condition stores into unconditional ones."
  msgstr "Bedingte Speicherbefehle in unbedingte umwandeln."
  
! #: common.opt:3189
  #, no-c-format
  msgid "Perform conversions of switch initializations."
  msgstr "Umwandlungen von Â»switchÂ«-Initialisierungen durchfÃ¼hren."
  
! #: common.opt:3193
  #, no-c-format
  msgid "Enable SSA dead code elimination optimization on trees."
  msgstr "Beseitigungsoptimierung fÃ¼r toten SSA-Code auf BÃ¤umen einschalten."
  
! #: common.opt:3197
  #, no-c-format
  msgid "Enable dominator optimizations."
  msgstr "Dominator-Optimierungen einschalten."
  
! #: common.opt:3201
  #, no-c-format
  msgid "Enable tail merging on trees."
  msgstr "Enden-Zusammenfassung auf BÃ¤umen einschalten."
  
! #: common.opt:3205
  #, no-c-format
  msgid "Enable dead store elimination."
  msgstr "Entfernung toter Speicherungen einschalten."
  
! #: common.opt:3209
  #, no-c-format
  msgid "Enable forward propagation on trees."
  msgstr "VorwÃ¤rts-Ãœbertragung auf BÃ¤umen einschalten."
  
! #: common.opt:3213
  #, no-c-format
  msgid "Enable Full Redundancy Elimination (FRE) on trees."
  msgstr "VollstÃ¤ndige Redundanzentfernung (FRE) auf BÃ¤umen einschalten."
  
! #: common.opt:3217
  #, no-c-format
  msgid "Enable string length optimizations on trees."
  msgstr "ZeichenkettenlÃ¤ngen-Optimierungen auf BÃ¤umen einschalten."
  
! #: common.opt:3221
  #, no-c-format
  msgid "Detect paths that trigger erroneous or undefined behavior due to dereferencing a null pointer.  Isolate those paths from the main control flow and turn the statement with erroneous or undefined behavior into a trap."
  msgstr "AusfÃ¼hrungspfade erkennen, die durch Dereferenzieren eines Nullzeigers fehlerhaftes oder undefiniertes Verhalten auslÃ¶sen. Solche Pfade werden aus dem Hauptablauf herausgenommen und durch eine Trap ersetzt."
  
! #: common.opt:3227
  #, no-c-format
  msgid "Detect paths that trigger erroneous or undefined behavior due to a null value being used in a way forbidden by a returns_nonnull or nonnull attribute.  Isolate those paths from the main control flow and turn the statement with erroneous or undefined behavior into a trap."
  msgstr "AusfÃ¼hrungspfade erkennen, die ausgelÃ¶st werden, indem ein Nullwert auf eine Weise verwendet wird, die durch ein Â»returns_nonnullÂ«- oder Â»nonnullÂ«-Attribut verboten ist. Solche Pfade werden aus dem Hauptablauf herausgenommen und durch eine Trap ersetzt."
  
! #: common.opt:3234
  #, no-c-format
  msgid "Enable loop distribution on trees."
  msgstr "Schleifenverteilung auf BÃ¤umen einschalten."
  
! #: common.opt:3238
  #, no-c-format
  msgid "Enable loop distribution for patterns transformed into a library call."
  msgstr "Schleifenverteilung fÃ¼r in Bibliotheksaufruf umgewandelte Muster einschalten."
  
! #: common.opt:3242
  #, no-c-format
  msgid "Enable loop invariant motion on trees."
  msgstr "Bewegung der Schleifeninvariante auf BÃ¤umen einschalten."
  
! #: common.opt:3250
  #, no-c-format
  msgid "Create canonical induction variables in loops."
  msgstr "Kanonische Induktionsvariablen in Schleifen erzeugen."
  
! #: common.opt:3254
  #, no-c-format
  msgid "Enable loop optimizations on tree level."
  msgstr "Schleifenoptimierungen auf Baumebene einschalten."
  
! #: common.opt:3258
  #, no-c-format
  msgid "-ftree-parallelize-loops=<number>\tEnable automatic parallelization of loops."
  msgstr "-ftree-parallelize-loops=<Anzahl>\tAutomatische Parallelisierung von Schleifen einschalten."
  
! #: common.opt:3262
  #, no-c-format
  msgid "Enable hoisting loads from conditional pointers."
  msgstr "Herausziehen von Ladeoperationen aus bedingten Zeigern einschalten."
  
! #: common.opt:3266
  #, no-c-format
  msgid "Enable SSA-PRE optimization on trees."
  msgstr "SSA-PRE-Optimierungen auf BÃ¤umen einschalten."
  
! #: common.opt:3270
  #, no-c-format
  msgid "In SSA-PRE optimization on trees, enable partial-partial redundancy elimination."
  msgstr "In SSA-PRE-Optimierungen auf BÃ¤umen Teils-Teils-Redundanz eliminieren."
  
! #: common.opt:3274
  #, no-c-format
  msgid "Perform function-local points-to analysis on trees."
  msgstr "Funktionslokale Analyse von Zeigerzielen auf BÃ¤umen durchfÃ¼hren."
  
! #: common.opt:3278
  #, no-c-format
  msgid "Enable reassociation on tree level."
  msgstr "Neuverbindung auf Baumebene einschalten."
  
! #: common.opt:3286
  #, no-c-format
  msgid "Enable SSA code sinking on trees."
  msgstr "SSA-Codeversenkung auf BÃ¤umen einschalten."
  
! #: common.opt:3290
  #, no-c-format
  msgid "Perform straight-line strength reduction."
  msgstr "Geradlinige StÃ¤rkereduktion durchfÃ¼hren."
  
! #: common.opt:3294
  #, no-c-format
  msgid "Perform scalar replacement of aggregates."
  msgstr "Skalarersetzung von Aggregaten durchfÃ¼hren."
  
! #: common.opt:3298
  #, no-c-format
  msgid "Replace temporary expressions in the SSA->normal pass."
  msgstr "VorÃ¼bergehende AusdrÃ¼cke im SSA->Normal-Durchlauf ersetzen."
  
! #: common.opt:3302
  #, no-c-format
  msgid "Perform live range splitting during the SSA->normal pass."
  msgstr "Lebensdaueraufteilung wÃ¤hrend des Â»SSA -> NormalÂ«-Durchlaufs durchfÃ¼hren."
  
! #: common.opt:3306
  #, no-c-format
  msgid "Perform Value Range Propagation on trees."
  msgstr "Wertebereichsweitergabe auf BÃ¤umen durchfÃ¼hren."
  
! #: common.opt:3310
  #, no-c-format
  msgid "Split paths leading to loop backedges."
  msgstr "Pfade aufteilen, die zu Schleifen-RÃ¼ckkanten fÃ¼hren."
  
! #: common.opt:3314
  #, no-c-format
  msgid "Assume common declarations may be overridden with ones with a larger trailing array."
  msgstr "Annehmen, dass gemeinsame Deklarationen durch solche Ã¼bersteuert werden dÃ¼rfen, die ein lÃ¤ngeres hintangestelltes Array haben."
  
! #: common.opt:3319
  #, no-c-format
  msgid "Compile whole compilation unit at a time."
  msgstr "Ganze Ãœbersetzungseinheit auf einmal Ã¼bersetzen."
  
! #: common.opt:3323
  #, no-c-format
  msgid "Trap on __builtin_unreachable instead of using it for optimization."
  msgstr "Ausnahme bei __builtin_unreachable auslÃ¶sten, statt es fÃ¼r die Optimierung zu verwenden."
  
! #: common.opt:3327
  #, no-c-format
  msgid "Perform loop unrolling when iteration count is known."
  msgstr "Schleifenabwicklung durchfÃ¼hren, wenn Anzahl der Wiederholungen bekannt ist."
  
! #: common.opt:3331
  #, no-c-format
  msgid "Perform loop unrolling for all loops."
  msgstr "Schleifenabwicklung fÃ¼r alle Schleifen durchfÃ¼hren."
  
! #: common.opt:3346
  #, no-c-format
  msgid "Allow optimization for floating-point arithmetic which may change the result of the operation due to rounding."
  msgstr "Optimierung fÃ¼r Gleitkommaarithmetik erlauben, auch wenn durch Runden ein anderes Ergebnis herauskommen kann."
  
! #: common.opt:3351
  #, no-c-format
  msgid "Same as -fassociative-math for expressions which include division."
! msgstr "Das gleiche wie Â»-fassociative-mathÂ« fÃ¼r AusdrÃ¼cke, die Division enthalten."
  
! #: common.opt:3359
  #, no-c-format
  msgid "Allow math optimizations that may violate IEEE or ISO standards."
  msgstr "Mathematische Optimierungen erlauben, die IEEE- oder ISO-Standards verletzen kÃ¶nnten."
  
! #: common.opt:3363
  #, no-c-format
  msgid "Perform loop unswitching."
  msgstr "Schleifenausschaltung durchfÃ¼hren."
  
! #: common.opt:3367
  #, no-c-format
  msgid "Perform loop splitting."
  msgstr "Schleifen-Aufteilung durchfÃ¼hren."
  
! #: common.opt:3371
  #, no-c-format
  msgid "Version loops based on whether indices have a stride of one."
  msgstr "Schleifen versionieren, je nachdem, ob sie eine Schrittweite von eins haben."
  
! #: common.opt:3375
  #, no-c-format
  msgid "Just generate unwind tables for exception handling."
  msgstr "Einfach Abwicklungstabellen fÃ¼r Ausnahmebehandlung erzeugen."
  
! #: common.opt:3379
  #, no-c-format
  msgid "Use the bfd linker instead of the default linker."
! msgstr "BFD-Binder statt Standardlinker verwenden."
  
! #: common.opt:3383
  #, no-c-format
  msgid "Use the gold linker instead of the default linker."
! msgstr "Gold-Binder statt Standardlinker verwenden."
  
! #: common.opt:3387
  #, no-c-format
  msgid "Use the lld LLVM linker instead of the default linker."
! msgstr "Den LLVM-lld-Binder statt des Standardlinkers verwenden."
  
! #: common.opt:3391
  #, no-c-format
  msgid "Use the Modern linker (MOLD) linker instead of the default linker."
! msgstr "Den Modernen Binder (MOLD) statt des Standardlinkers verwenden."
  
! #: common.opt:3401
  #, no-c-format
  msgid "Perform variable tracking."
  msgstr "Variablenverfolgung durchfÃ¼hren."
  
! #: common.opt:3408
  #, no-c-format
  msgid "Perform variable tracking by annotating assignments."
  msgstr "Variablenverfolgung durch Zuweisungsanmerkungen durchfÃ¼hren."
  
! #: common.opt:3414
  #, no-c-format
  msgid "Toggle -fvar-tracking-assignments."
  msgstr "-fvar-tracking-assignments umschalten."
  
! #: common.opt:3421
  #, no-c-format
  msgid "Perform variable tracking and also tag variables that are uninitialized."
  msgstr "Variablenverfolgung durchfÃ¼hren und auch Variablen markieren, die uninitialisiert sind."
  
! #: common.opt:3426
  #, no-c-format
  msgid "Enable vectorization on trees."
  msgstr "Vektorisierung auf BÃ¤umen einschalten."
  
! #: common.opt:3434
  #, no-c-format
  msgid "Enable loop vectorization on trees."
  msgstr "Schleifenvektorisierung auf BÃ¤umen einschalten."
  
! #: common.opt:3438
  #, no-c-format
  msgid "Enable basic block vectorization (SLP) on trees."
  msgstr "Vektorisierung von BasisblÃ¶cken (SLP) auf BÃ¤umen einschalten."
  
! #: common.opt:3442
  #, no-c-format
  msgid "-fvect-cost-model=[unlimited|dynamic|cheap|very-cheap]\tSpecifies the cost model for vectorization."
  msgstr "-fvect-cost-model=[unlimited|dynamic|cheap|very-cheap]\tKostenmodell fÃ¼r Vektorisierung angeben."
  
! #: common.opt:3446
  #, no-c-format
  msgid "-fsimd-cost-model=[unlimited|dynamic|cheap|very-cheap]\tSpecifies the vectorization cost model for code marked with a simd directive."
  msgstr "-fsimd-cost-model=[unlimited|dynamic|cheap|very-cheap]\tVektorisierungs-Kostenmodell angeben, das fÃ¼r mit einer SIMD-Direktive markierten Code verwendet wird."
  
! #: common.opt:3465
  #, no-c-format
  msgid "Enables the dynamic vectorizer cost model.  Preserved for backward compatibility."
  msgstr "Schaltet das dynamische Vektorisierer-Kostenmodell ein. FÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤t erhalten."
  
! #: common.opt:3473
  #, no-c-format
  msgid "Enable copy propagation of scalar-evolution information."
  msgstr "Kopieweitergabe von Informationen Ã¼ber Skalar-Evolution einschalten."
  
! #: common.opt:3477
  #, no-c-format
  msgid "-ftrivial-auto-var-init=[uninitialized|pattern|zero]\tAdd initializations to automatic variables."
  msgstr "-ftrivial-auto-var-init=[uninitialized|pattern|zero]\tAutomatische Variablen initialisieren."
  
! #: common.opt:3499
  #, no-c-format
  msgid "Add extra commentary to assembler output."
  msgstr "ZusÃ¤tzliche Anmerkungen an Assemblerausgabe anfÃ¼gen."
  
! #: common.opt:3503
  #, no-c-format
  msgid "-fvisibility=[default|internal|hidden|protected]\tSet the default symbol visibility."
  msgstr "-fvisibility=[default|internal|hidden|protected]\tStandard-Symbolsichtbarkeit festlegen."
  
! #: common.opt:3522
  #, no-c-format
  msgid "Validate vtable pointers before using them."
  msgstr "VTable-Zeiger validieren, bevor sie verwendet werden."
  
! #: common.opt:3538
  #, no-c-format
  msgid "Output vtable verification counters."
  msgstr "VerifikationszÃ¤hler fÃ¼r VTables ausgeben."
  
! #: common.opt:3542
  #, no-c-format
  msgid "Output vtable verification pointer sets information."
  msgstr "Informationen Ã¼ber Zeigermengen der VTable-Verifikation ausgeben."
  
! #: common.opt:3546
  #, no-c-format
  msgid "Use expression value profiles in optimizations."
  msgstr "Profile von Ausdruckswerten in Optimierungen verwenden."
  
! #: common.opt:3550
  #, no-c-format
  msgid "Construct webs and split unrelated uses of single variable."
  msgstr "Netze konstruieren und nicht zusammenhÃ¤ngende Verwendungen einzelner Variablen aufteilen."
  
! #: common.opt:3554
  #, no-c-format
  msgid "Enable conditional dead code elimination for builtin calls."
  msgstr "Beseitigung von bedingt totem Code fÃ¼r Aufrufe eingebauter Funktionen einschalten."
  
! #: common.opt:3558
  #, no-c-format
  msgid "Perform whole program optimizations."
  msgstr "Gesamtprogrammoptimierung durchfÃ¼hren."
  
! #: common.opt:3562
  #, no-c-format
  msgid "Assume pointer overflow wraps around."
  msgstr "Annehmen, dass ZeigerÃ¼berlÃ¤ufe Ã¼berschlagen (Wraparound)."
  
! #: common.opt:3566
  #, no-c-format
  msgid "Assume signed arithmetic overflow wraps around."
  msgstr "Annehmen, dass vorzeichenbehaftete arithmetische ÃœberlÃ¤ufe regulÃ¤r Ã¼berschlagen (Wraparound)."
  
! #: common.opt:3570
  #, no-c-format
  msgid "Put zero initialized data in the bss section."
  msgstr "Null-initialisierte Daten in den bss-Abschnitt legen."
  
! #: common.opt:3574
  #, no-c-format
  msgid "Clear call-used registers upon function return."
  msgstr "Register, die beim Funktionsaufruf verwendet wurden, am Ende auf 0 zurÃ¼cksetzen."
  
! #: common.opt:3578
  #, no-c-format
  msgid "-fzero-init-padding-bits=[standard|unions|all]\tZero padding bits in initializers."
  msgstr "-fzero-init-padding-bits=[standard|unions|all]\tAuffÃ¼ll-Bits in Initialisierern ausnullen."
  
! #: common.opt:3594
  #, no-c-format
  msgid "Generate debug information in default format."
  msgstr "Fehlersuchinformationen im Standardformat erzeugen."
  
! #: common.opt:3598
  #, no-c-format
  msgid "Assume assembler support for (DWARF2+) .loc directives."
  msgstr "Assembler-UnterstÃ¼tzung fÃ¼r (DWARF2+-).loc-Direktiven annehmen."
  
! #: common.opt:3602
  #, no-c-format
  msgid "Assume assembler support for view in (DWARF2+) .loc directives."
  msgstr "Assembler-UnterstÃ¼tzung fÃ¼r Ansicht in (DWARF2+-).loc-Direktiven annehmen."
  
! #: common.opt:3606
  #, no-c-format
  msgid "Generate debug information in CodeView format."
  msgstr "Fehlersuchinformationen im CodeView-Format erzeugen."
  
! #: common.opt:3626
  #, no-c-format
  msgid "Record DW_AT_decl_column and DW_AT_call_column in DWARF."
  msgstr "DW_AT_decl_column und DW_AT_call_column in DWARF aufzeichnen."
  
! #: common.opt:3632
  #, no-c-format
  msgid "Generate CTF debug information at default level."
  msgstr "CTF-Debug-Informationen auf Standardniveau erzeugen."
  
! #: common.opt:3636
  #, no-c-format
  msgid "Generate BTF debug information at default level."
  msgstr "BTF-Debug-Informationen auf Standardniveau erzeugen."
  
! #: common.opt:3640
  #, no-c-format
  msgid "Generate pruned BTF when emitting BTF info."
  msgstr "Bereinigtes BTF bei der Ausgabe von BTF-Informationen erzeugen."
  
! #: common.opt:3644
  #, no-c-format
  msgid "Generate debug information in default version of DWARF format."
  msgstr "Fehlersuchinformationen im Standardversion des DWARF-Formats erzeugen."
  
! #: common.opt:3648
  #, no-c-format
  msgid "Generate debug information in DWARF v2 (or later) format."
  msgstr "Fehlersuchinformationen im DWARF-v2-Format (oder neuer) erzeugen."
  
! #: common.opt:3652
  #, no-c-format
  msgid "Use 32-bit DWARF format when emitting DWARF debug information."
  msgstr "Wenn DWARF-Debuginformationen erzeugt werden, dann im 32-Bit-Format."
  
! #: common.opt:3656
  #, no-c-format
  msgid "Use 64-bit DWARF format when emitting DWARF debug information."
  msgstr "Wenn DWARF-Debuginformationen erzeugt werden, dann im 64-Bit-Format."
  
! #: common.opt:3660
  #, no-c-format
  msgid "Generate debug information in default extended format."
  msgstr "Fehlersuchinformationen im erweiterten Standardformat erzeugen."
  
! #: common.opt:3664
  #, no-c-format
  msgid "Generate extended entry point information for inlined functions."
  msgstr "Erweiterte Informationen fÃ¼r Einsprungpunkt fÃ¼r inline-Funktionen erzeugen."
  
! #: common.opt:3668
  #, no-c-format
  msgid "Compute locview reset points based on insn length estimates."
  msgstr "Locview-RÃ¼cksetzpunkte auf Basis der geschÃ¤tzten BefehlslÃ¤ngen berechnen."
  
! #: common.opt:3676
  #, no-c-format
  msgid "Don't generate DWARF pubnames and pubtypes sections."
  msgstr "Keine DWARF-Abschnitte fÃ¼r Pubnames und Pubtypes erzeugen."
  
! #: common.opt:3680
  #, no-c-format
  msgid "Generate DWARF pubnames and pubtypes sections."
  msgstr "DWARF-Abschnitte fÃ¼r Pubnames und Pubtypes erzeugen."
  
! #: common.opt:3684
  #, no-c-format
  msgid "Generate DWARF pubnames and pubtypes sections with GNU extensions."
  msgstr "DWARF-Abschnitte fÃ¼r Pubnames und Pubtypes mit GNU-Erweiterungen erzeugen."
  
! #: common.opt:3688
  #, no-c-format
  msgid "Record gcc command line switches in DWARF DW_AT_producer."
  msgstr "GCC-Kommandozeilenschalter in DWARF DW_AT_producer aufzeichnen."
  
! #: common.opt:3692
  #, no-c-format
  msgid "Generate debug information in separate .dwo files."
  msgstr "Fehlersuchinformationen in separaten .dwo-Dateien erzeugen."
  
! #: common.opt:3704
  #, no-c-format
  msgid "Emit progressive recommended breakpoint locations."
  msgstr "Progressive empfohlene Breakpoint-Stellen ausgeben."
  
! #: common.opt:3708
  #, no-c-format
  msgid "Don't emit DWARF additions beyond selected version."
  msgstr "Keine DWARF-ErgÃ¤nzungen Ã¼ber gewÃ¤hlte Version hinaus erzeugen."
  
! #: common.opt:3712
  #, no-c-format
  msgid "Add description attributes to some DWARF DIEs that have no name attribute."
  msgstr "Beschreibungsattribute zu einigen DWARF-DIEs hinzufÃ¼gen, die kein Namensattribut haben."
  
! #: common.opt:3716
  #, no-c-format
  msgid "Toggle debug information generation."
  msgstr "Erzeugung von Fehlersuchinformationen umschalten."
  
! #: common.opt:3720
  #, no-c-format
  msgid "Augment variable location lists with progressive views."
  msgstr "Adresslisten der Variablen mit progressiven Sichten anreichern."
  
! #: common.opt:3727
  #, no-c-format
  msgid "Generate debug information in VMS format."
  msgstr "Fehlersuchinformationen im VMS-Format erzeugen."
  
! #: common.opt:3756
  #, no-c-format
  msgid "Generate compressed debug sections."
  msgstr "Komprimierte Fehlersuchinformationen erzeugen."
  
! #: common.opt:3760
  #, no-c-format
  msgid "-gz=<format>\tGenerate compressed debug sections in format <format>."
  msgstr "-gz=<Format>\tKomprimierte Debugabschnitte im Format <Format> erzeugen."
  
! #: common.opt:3767
  #, no-c-format
  msgid "-iplugindir=<dir>\tSet <dir> to be the default plugin directory."
  msgstr "-iplugindir=<Verz>\t<Verz> als Standard-Plugin-Verzeichnis festlegen."
  
! #: common.opt:3771
  #, no-c-format
  msgid "-imultiarch <dir>\tSet <dir> to be the multiarch include subdirectory."
  msgstr "-imultiarch <Verzeichnis>\t<Verzeichnis> als Multiarch-include-Verzeichnis festlegen."
  
! #: common.opt:3799
  #, no-c-format
  msgid "-o <file>\tPlace output into <file>."
  msgstr "-o <Datei>\tAusgabe in <Datei> schreiben."
  
! #: common.opt:3803
  #, no-c-format
  msgid "Enable function profiling."
  msgstr "Funktionsprofilierung einschalten."
  
! #: common.opt:3813
  #, no-c-format
  msgid "Like -pedantic but issue errors instead of warnings."
! msgstr "Wie Â»-pedanticÂ«, aber Fehler statt Warnungen ausgeben."
  
! #: common.opt:3853
  #, no-c-format
  msgid "Do not display functions compiled or elapsed time."
  msgstr "Ãœbersetzte Funktionen oder verstrichene Zeit nicht ausgeben."
  
! #: common.opt:3885
  #, no-c-format
  msgid "Enable verbose output."
  msgstr "Wortreiche Ausgabe einschalten."
  
! #: common.opt:3889
  #, no-c-format
  msgid "Display the compiler's version."
  msgstr "Compiler-Version anzeigen."
  
! #: common.opt:3893
  #, no-c-format
  msgid "Suppress warnings."
  msgstr "Warnungen unterdrÃ¼cken."
  
! #: common.opt:3903
  #, no-c-format
  msgid "Create a shared library."
  msgstr "Shared Library erzeugen."
  
! #: common.opt:3967
  #, no-c-format
  msgid "Don't create a dynamically linked position independent executable."
  msgstr "Keine dynamisch gebundene, lageunabhÃ¤ngige ausfÃ¼hrbare Datei erzeugen."
  
! #: common.opt:3971
  #, no-c-format
  msgid "Create a dynamically linked position independent executable."
  msgstr "Dynamisch gebundene, lageunabhÃ¤ngige ausfÃ¼hrbare Datei erzeugen."
  
! #: common.opt:3975
  #, no-c-format
  msgid "Create a static position independent executable."
  msgstr "Statische, lageunabhÃ¤ngige ausfÃ¼hrbare Datei erzeugen."
  
! #: common.opt:3982
  #, no-c-format
  msgid "Use caller save register across calls if possible."
  msgstr "Vom Aufrufer zu sichernde Register Ã¼ber Aufrufe hinweg verwenden, wenn mÃ¶glich."
  
! #: common.opt:3986
  #, no-c-format
  msgid "Perform dead code elimination on zero and sign extensions with special dataflow analysis."
  msgstr "Totem Code bei Null- und Vorzeichenerweiterungen mittels spezieller Datenflussanalyse durchfÃ¼hren."
*************** msgstr "RÃ¼ckruffunktionen statt inline-
*** 16126,16132 ****
  #: params.opt:55
  #, no-c-format
  msgid "Prefix calls to memcpy, memset and memmove with __asan_ or __hwasan_ for -fsanitize=kernel-address or -fsanitize=kernel-hwaddress."
! msgstr "Aufrufen von memcpy, memset und memmove ein __asan_ oder __hwasan_ voranstellen, fÃ¼r -fsanitize=kernel-address oder -fsanitize=kernel-hwaddress."
  
  #: params.opt:59
  #, no-c-format
--- 16131,16137 ----
  #: params.opt:55
  #, no-c-format
  msgid "Prefix calls to memcpy, memset and memmove with __asan_ or __hwasan_ for -fsanitize=kernel-address or -fsanitize=kernel-hwaddress."
! msgstr "Aufrufen von memcpy, memset und memmove ein __asan_ oder __hwasan_ voranstellen, fÃ¼r Â»-fsanitize=kernel-addressÂ« oder Â»-fsanitize=kernel-hwaddressÂ«."
  
  #: params.opt:59
  #, no-c-format
*************** msgstr "Wahrscheinlichkeit, dass die COM
*** 16211,16217 ****
  #: params.opt:123
  #, no-c-format
  msgid "Maximum number of namespaces to search for alternatives when name lookup fails."
! msgstr "HÃ¶chstzahl der NamensrÃ¤ume, in denen alternativ gesucht wird, wenn Nachschlagen eines Namens fehlschlÃ¤gt."
  
  #: params.opt:127
  #, no-c-format
--- 16216,16222 ----
  #: params.opt:123
  #, no-c-format
  msgid "Maximum number of namespaces to search for alternatives when name lookup fails."
! msgstr "HÃ¶chstzahl der NamensrÃ¤ume, in denen alternativ gesucht wird, wenn Nachschlagen eines Namens scheitert."
  
  #: params.opt:127
  #, no-c-format
*************** msgstr "Die Anzahl der AusfÃ¼hrungen ein
*** 16286,16292 ****
  #: params.opt:186
  #, no-c-format
  msgid "Whether codegen errors should be ICEs when -fchecking."
! msgstr "Ob bei -fchecking Fehler im Codegenerator als interne Compilerfehler behandelt werden sollen."
  
  #: params.opt:190
  #, no-c-format
--- 16291,16297 ----
  #: params.opt:186
  #, no-c-format
  msgid "Whether codegen errors should be ICEs when -fchecking."
! msgstr "Ob bei Â»-fcheckingÂ« Fehler im Codegenerator als interne Compilerfehler behandelt werden sollen."
  
  #: params.opt:190
  #, no-c-format
*************** msgstr "HÃ¶chstzahl der Parameter in ein
*** 16301,16312 ****
  #: params.opt:198
  #, no-c-format
  msgid "Maximum number of blocks for -fharden-control-flow-redundancy."
! msgstr "Maximale Blockanzahl fÃ¼r -fharden-control-flow-redundancy."
  
  #: params.opt:202
  #, no-c-format
  msgid "Maximum number of blocks for in-line -fharden-control-flow-redundancy."
! msgstr "Maximale Blockanzahl fÃ¼r in-line -fharden-control-flow-redundancy."
  
  #: params.opt:206
  #, no-c-format
--- 16306,16317 ----
  #: params.opt:198
  #, no-c-format
  msgid "Maximum number of blocks for -fharden-control-flow-redundancy."
! msgstr "Maximale Blockanzahl fÃ¼r Â»-fharden-control-flow-redundancyÂ«."
  
  #: params.opt:202
  #, no-c-format
  msgid "Maximum number of blocks for in-line -fharden-control-flow-redundancy."
! msgstr "Maximale Blockanzahl fÃ¼r in-line Â»-fharden-control-flow-redundancyÂ«."
  
  #: params.opt:206
  #, no-c-format
*************** msgstr "HÃ¶chstzahl der LTO-Partitionen,
*** 16626,16632 ****
  #: params.opt:466
  #, no-c-format
  msgid "Minimal size of a partition for LTO (in estimated instructions)."
! msgstr "Kleinste GrÃ¶ÃŸe einer Partition fÃ¼r Linkzeitoptimierung (in geschÃ¤tzten Befehlen)."
  
  #: params.opt:470
  #, no-c-format
--- 16631,16637 ----
  #: params.opt:466
  #, no-c-format
  msgid "Minimal size of a partition for LTO (in estimated instructions)."
! msgstr "Kleinste GrÃ¶ÃŸe einer Partition fÃ¼r Bindezeitoptimierung (in geschÃ¤tzten Befehlen)."
  
  #: params.opt:470
  #, no-c-format
*************** msgstr "Maximale GrÃ¶ÃŸe eines einzelnen
*** 17296,17302 ****
  #: params.opt:1088
  #, no-c-format
  msgid "Maximum number of instruction distance that a small store forwarded to a larger load may stall. Value '0' disables the cost checks for the avoid-store-forwarding pass."
! msgstr "Maximaler Abstand von Befehlen, die eine kleine Speicheroperation, der an eine grÃ¶ÃŸere Ladeoperation weitergeleitet wird, blockieren kann. Der Wert 0 deaktiviert die KostenÃ¼berprÃ¼fungen fÃ¼r den \"avoid-store-forwarding\"-Durchgang."
  
  #: params.opt:1092
  #, no-c-format
--- 17301,17307 ----
  #: params.opt:1088
  #, no-c-format
  msgid "Maximum number of instruction distance that a small store forwarded to a larger load may stall. Value '0' disables the cost checks for the avoid-store-forwarding pass."
! msgstr "Maximaler Abstand von Befehlen, die eine kleine Speicheroperation, der an eine grÃ¶ÃŸere Ladeoperation weitergeleitet wird, blockieren kann. Der Wert 0 deaktiviert die KostenÃ¼berprÃ¼fungen fÃ¼r den Â»avoid-store-forwardingÂ«-Durchgang."
  
  #: params.opt:1092
  #, no-c-format
*************** msgstr "Maximale Anzahl der PrÃ¤dikate,
*** 17416,17525 ****
  
  #: params.opt:1194
  #, no-c-format
  msgid "Instruction accounted for function prologue, epilogue and other overhead."
  msgstr "Anzahl der Maschinenbefehle, die fÃ¼r Funktionsprolog, -Epilog und sonstigen Overhead veranschlagt werden."
  
! #: params.opt:1198
  #, no-c-format
  msgid "Time accounted for function prologue, epilogue and other overhead."
  msgstr "Zeit, die fÃ¼r Funktionsprolog, -Epilog und sonstigen Overhead veranschlagt wird."
  
! #: params.opt:1202
  #, no-c-format
  msgid "Instruction accounted for function thunk overhead."
  msgstr "Anzahl der Maschinenbefehle, die fÃ¼r Thunk-Overhead in Funktionen veranschlagt werden."
  
! #: params.opt:1206
  #, no-c-format
  msgid "Time accounted for function thunk overhead."
  msgstr "Zeit, die fÃ¼r Thunk-Overhead in Funktionen veranschlagt wird."
  
! #: params.opt:1210
  #, no-c-format
  msgid "The denominator n of fraction 1/n of the number of profiled runs of the entire program below which the execution count of a basic block must be in order for the basic block to be considered unlikely."
  msgstr "Der Nenner n des Bruchteils 1/n der Anzahl der profilierten DurchlÃ¤ufe des gesamten Programms, unter dem die AusfÃ¼hrungszahl eines Grundblocks liegen muss, damit der Grundblock als unwahrscheinlich angesehen wird."
  
! #: params.opt:1214
  #, no-c-format
  msgid "Maximum unroll factor for the unroll-and-jam transformation."
  msgstr "Maximaler Entrollfaktor fÃ¼r die Â»unroll-and-jamÂ«-Transformation."
  
! #: params.opt:1218
  #, no-c-format
  msgid "Minimum percentage of memrefs that must go away for unroll-and-jam to be considered profitable."
  msgstr "Mindestprozentsatz der Memrefs, die fÃ¼r unroll-and-jam verschwinden mÃ¼ssen, damit es profitabel ist."
  
! #: params.opt:1222
  #, no-c-format
  msgid "Use direct poisoning/unpoisoning instructions for variables smaller or equal to this number."
  msgstr "Direkt vergiftende/entgiftende Befehle fÃ¼r Variablen verwenden, die maximal die angegebene GrÃ¶ÃŸe haben."
  
! #: params.opt:1226
  #, no-c-format
  msgid "Whether to use canonical types."
  msgstr "Ob kanonische Typen zu verwenden sind."
  
! #: params.opt:1230
  #, no-c-format
  msgid "Enable loop epilogue vectorization using smaller vector size."
  msgstr "Vektorisierung des Schleifen-Epilogs mit kleinerer VektorgrÃ¶ÃŸe einschalten."
  
! #: params.opt:1234
  #, no-c-format
  msgid "Maximum number of possible vector layouts (such as permutations) to consider when optimizing to-be-vectorized code."
  msgstr "Maximale Anzahl der mÃ¶glichen Vektorlayouts (zum Beispiel Permutationen), die beim Optimieren von mÃ¶glicherweise vektorisierbarem Code probiert werden."
  
! #: params.opt:1238
  #, no-c-format
  msgid "Maximum number of loop peels to enhance alignment of data references in a loop."
  msgstr "HÃ¶chstzahl der SchleifenschÃ¤lungen, um Ausrichtung von Datenreferenzen in einer Schleife zu verbessern."
  
! #: params.opt:1242
  #, no-c-format
  msgid "Bound on number of runtime checks inserted by the vectorizer's loop versioning for alias check."
  msgstr "Schranke fÃ¼r Anzahl der LaufzeitprÃ¼fungen, die von Schleifenversionierung des Vektorisierers fÃ¼r AliasprÃ¼fung eingefÃ¼gt werden."
  
! #: params.opt:1246
  #, no-c-format
  msgid "Bound on number of runtime checks inserted by the vectorizer's loop versioning for alignment check."
  msgstr "Schranke fÃ¼r Anzahl der LaufzeitprÃ¼fungen, die von Schleifenversionierung des Vektorisierers fÃ¼r AusrichtungsprÃ¼fung eingefÃ¼gt werden."
  
! #: params.opt:1250
  #, no-c-format
  msgid "Controls how loop vectorizer uses partial vectors.  0 means never, 1 means only for loops whose need to iterate can be removed, 2 means for all loops.  The default value is 2."
  msgstr "Steuert, wie der Schleifenvektorisierer partielle Vektoren verwendet. 0 bedeutet nie, 1 bedeutet nur fÃ¼r Schleifen, die nicht unbedingt vektorisiert werden mÃ¼ssen, 2 bedeutet fÃ¼r alle Schleifen. Voreinstellung ist 2."
  
! #: params.opt:1254
  #, no-c-format
  msgid "The maximum factor which the loop vectorizer applies to the cost of statements in an inner loop relative to the loop being vectorized."
  msgstr "Der maximale Faktor, den der Schleifenvektorisierer auf die Kosten der Anweisungen in einer inneren Schleife im VerhÃ¤ltnis zur vektorisierten Schleife anwendet."
  
! #: params.opt:1258
  #, no-c-format
  msgid "Enable loop vectorization of floating point inductions."
  msgstr "Schleifenvektorisierung von Gleitkommabefehlen einschalten."
  
! #: params.opt:1262
  #, no-c-format
  msgid "Force the use of SLP when vectorizing, fail if not possible."
! msgstr "Die Verwendung von SLP bei der Vektorisierung erzwingen; fehlschlagen, wenn dies nicht mÃ¶glich ist."
  
! #: params.opt:1266
  #, no-c-format
  msgid "Maximum number of basic blocks before VRP switches to a fast model with less memory requirements."
  msgstr "Maximale Anzahl von BasisblÃ¶cken, bevor VRP auf ein schnelles Modell mit geringerem Speicherbedarf umschaltet."
  
! #: params.opt:1270
  #, no-c-format
  msgid "Maximum number of basic blocks before VRP uses a sparse bitmap cache."
  msgstr "HÃ¶chstzahl der Basis-BlÃ¶cke, bevor VRP einen spÃ¤rlich gefÃ¼llten Bitmap-Cache verwendet."
  
! #: params.opt:1274
  #, no-c-format
  msgid "Maximum number of outgoing edges in a switch before VRP will not process it."
  msgstr "HÃ¶chstzahl der ausgehenden Kanten in einem Switch, bevor VRP sie nicht mehr verarbeitet."
  
! #: params.opt:1278
  #, no-c-format
  msgid "Maximum number of basic blocks for VRP to use a basic cache vector."
  msgstr "HÃ¶chstzahl der Basis-BlÃ¶cke, bevor VRP einen grundlegenden Cachevektor verwendet."
--- 17421,17535 ----
  
  #: params.opt:1194
  #, no-c-format
+ msgid "Maximum amount of work done to prune paths where the variable is always initialized."
+ msgstr "Maximaler Arbeitsaufwand fÃ¼r das Bereinigen von Pfaden, bei denen die Variable immer initialisiert ist."
+ 
+ #: params.opt:1198
+ #, no-c-format
  msgid "Instruction accounted for function prologue, epilogue and other overhead."
  msgstr "Anzahl der Maschinenbefehle, die fÃ¼r Funktionsprolog, -Epilog und sonstigen Overhead veranschlagt werden."
  
! #: params.opt:1202
  #, no-c-format
  msgid "Time accounted for function prologue, epilogue and other overhead."
  msgstr "Zeit, die fÃ¼r Funktionsprolog, -Epilog und sonstigen Overhead veranschlagt wird."
  
! #: params.opt:1206
  #, no-c-format
  msgid "Instruction accounted for function thunk overhead."
  msgstr "Anzahl der Maschinenbefehle, die fÃ¼r Thunk-Overhead in Funktionen veranschlagt werden."
  
! #: params.opt:1210
  #, no-c-format
  msgid "Time accounted for function thunk overhead."
  msgstr "Zeit, die fÃ¼r Thunk-Overhead in Funktionen veranschlagt wird."
  
! #: params.opt:1214
  #, no-c-format
  msgid "The denominator n of fraction 1/n of the number of profiled runs of the entire program below which the execution count of a basic block must be in order for the basic block to be considered unlikely."
  msgstr "Der Nenner n des Bruchteils 1/n der Anzahl der profilierten DurchlÃ¤ufe des gesamten Programms, unter dem die AusfÃ¼hrungszahl eines Grundblocks liegen muss, damit der Grundblock als unwahrscheinlich angesehen wird."
  
! #: params.opt:1218
  #, no-c-format
  msgid "Maximum unroll factor for the unroll-and-jam transformation."
  msgstr "Maximaler Entrollfaktor fÃ¼r die Â»unroll-and-jamÂ«-Transformation."
  
! #: params.opt:1222
  #, no-c-format
  msgid "Minimum percentage of memrefs that must go away for unroll-and-jam to be considered profitable."
  msgstr "Mindestprozentsatz der Memrefs, die fÃ¼r unroll-and-jam verschwinden mÃ¼ssen, damit es profitabel ist."
  
! #: params.opt:1226
  #, no-c-format
  msgid "Use direct poisoning/unpoisoning instructions for variables smaller or equal to this number."
  msgstr "Direkt vergiftende/entgiftende Befehle fÃ¼r Variablen verwenden, die maximal die angegebene GrÃ¶ÃŸe haben."
  
! #: params.opt:1230
  #, no-c-format
  msgid "Whether to use canonical types."
  msgstr "Ob kanonische Typen zu verwenden sind."
  
! #: params.opt:1234
  #, no-c-format
  msgid "Enable loop epilogue vectorization using smaller vector size."
  msgstr "Vektorisierung des Schleifen-Epilogs mit kleinerer VektorgrÃ¶ÃŸe einschalten."
  
! #: params.opt:1238
  #, no-c-format
  msgid "Maximum number of possible vector layouts (such as permutations) to consider when optimizing to-be-vectorized code."
  msgstr "Maximale Anzahl der mÃ¶glichen Vektorlayouts (zum Beispiel Permutationen), die beim Optimieren von mÃ¶glicherweise vektorisierbarem Code probiert werden."
  
! #: params.opt:1242
  #, no-c-format
  msgid "Maximum number of loop peels to enhance alignment of data references in a loop."
  msgstr "HÃ¶chstzahl der SchleifenschÃ¤lungen, um Ausrichtung von Datenreferenzen in einer Schleife zu verbessern."
  
! #: params.opt:1246
  #, no-c-format
  msgid "Bound on number of runtime checks inserted by the vectorizer's loop versioning for alias check."
  msgstr "Schranke fÃ¼r Anzahl der LaufzeitprÃ¼fungen, die von Schleifenversionierung des Vektorisierers fÃ¼r AliasprÃ¼fung eingefÃ¼gt werden."
  
! #: params.opt:1250
  #, no-c-format
  msgid "Bound on number of runtime checks inserted by the vectorizer's loop versioning for alignment check."
  msgstr "Schranke fÃ¼r Anzahl der LaufzeitprÃ¼fungen, die von Schleifenversionierung des Vektorisierers fÃ¼r AusrichtungsprÃ¼fung eingefÃ¼gt werden."
  
! #: params.opt:1254
  #, no-c-format
  msgid "Controls how loop vectorizer uses partial vectors.  0 means never, 1 means only for loops whose need to iterate can be removed, 2 means for all loops.  The default value is 2."
  msgstr "Steuert, wie der Schleifenvektorisierer partielle Vektoren verwendet. 0 bedeutet nie, 1 bedeutet nur fÃ¼r Schleifen, die nicht unbedingt vektorisiert werden mÃ¼ssen, 2 bedeutet fÃ¼r alle Schleifen. Voreinstellung ist 2."
  
! #: params.opt:1258
  #, no-c-format
  msgid "The maximum factor which the loop vectorizer applies to the cost of statements in an inner loop relative to the loop being vectorized."
  msgstr "Der maximale Faktor, den der Schleifenvektorisierer auf die Kosten der Anweisungen in einer inneren Schleife im VerhÃ¤ltnis zur vektorisierten Schleife anwendet."
  
! #: params.opt:1262
  #, no-c-format
  msgid "Enable loop vectorization of floating point inductions."
  msgstr "Schleifenvektorisierung von Gleitkommabefehlen einschalten."
  
! #: params.opt:1266
  #, no-c-format
  msgid "Force the use of SLP when vectorizing, fail if not possible."
! msgstr "Die Verwendung von SLP bei der Vektorisierung erzwingen; scheitern, wenn dies nicht mÃ¶glich ist."
  
! #: params.opt:1270
  #, no-c-format
  msgid "Maximum number of basic blocks before VRP switches to a fast model with less memory requirements."
  msgstr "Maximale Anzahl von BasisblÃ¶cken, bevor VRP auf ein schnelles Modell mit geringerem Speicherbedarf umschaltet."
  
! #: params.opt:1274
  #, no-c-format
  msgid "Maximum number of basic blocks before VRP uses a sparse bitmap cache."
  msgstr "HÃ¶chstzahl der Basis-BlÃ¶cke, bevor VRP einen spÃ¤rlich gefÃ¼llten Bitmap-Cache verwendet."
  
! #: params.opt:1278
  #, no-c-format
  msgid "Maximum number of outgoing edges in a switch before VRP will not process it."
  msgstr "HÃ¶chstzahl der ausgehenden Kanten in einem Switch, bevor VRP sie nicht mehr verarbeitet."
  
! #: params.opt:1282
  #, no-c-format
  msgid "Maximum number of basic blocks for VRP to use a basic cache vector."
  msgstr "HÃ¶chstzahl der Basis-BlÃ¶cke, bevor VRP einen grundlegenden Cachevektor verwendet."
*************** msgstr "der Aufgerufene kehrt zweimal zu
*** 17552,17600 ****
  msgid "callee does not return"
  msgstr "der Aufgerufene kehrt nicht zurÃ¼ck"
  
! #: calls.cc:2585
  msgid "volatile function type"
  msgstr "volatile-Funktionstyp"
  
! #: calls.cc:2604
  msgid "nested function"
  msgstr "geschachtelte Funktion"
  
! #: calls.cc:2615
  msgid "callee required more stack slots than the caller"
  msgstr "der Angerufene benÃ¶tigt mehr Stack-Slots als der Aufrufer"
  
! #: calls.cc:2629
  msgid "inconsistent number of popped arguments"
  msgstr "inkonsistente Anzahl von Argumenten, die vom Stack entfernt wurden"
  
! #: calls.cc:2636
  msgid "frontend does not support sibling call"
  msgstr "das Frontend unterstÃ¼tzt keine Geschwisteraufrufe"
  
! #: calls.cc:2692
  msgid "other reasons"
  msgstr "andere GrÃ¼nde"
  
! #: calls.cc:3066
  msgid "inside another call"
  msgstr "innerhalb eines anderen Aufrufs"
  
! #: calls.cc:3075
  msgid "variable size arguments"
  msgstr "Argumente variabler GrÃ¶ÃŸe"
  
! #: calls.cc:3099
  msgid "hidden string length argument passed on stack"
  msgstr "verstecktes StringlÃ¤ngenargument auf dem Stack Ã¼bergeben"
  
! #: calls.cc:3148
  msgid "caller and callee disagree in promotion of function return value"
  msgstr "Aufrufer und Aufgerufener sind sich nicht einig Ã¼ber die Promotion des RÃ¼ckgabewerts der Funktion"
  
  #. Ideally we'd emit a message for all of the ways that it could
  #. have failed.
! #: calls.cc:4060
  msgid "tail call production failed"
  msgstr "Produktion des Endaufrufs fehlgeschlagen"
  
--- 17562,17610 ----
  msgid "callee does not return"
  msgstr "der Aufgerufene kehrt nicht zurÃ¼ck"
  
! #: calls.cc:2586
  msgid "volatile function type"
  msgstr "volatile-Funktionstyp"
  
! #: calls.cc:2605
  msgid "nested function"
  msgstr "geschachtelte Funktion"
  
! #: calls.cc:2616
  msgid "callee required more stack slots than the caller"
  msgstr "der Angerufene benÃ¶tigt mehr Stack-Slots als der Aufrufer"
  
! #: calls.cc:2630
  msgid "inconsistent number of popped arguments"
  msgstr "inkonsistente Anzahl von Argumenten, die vom Stack entfernt wurden"
  
! #: calls.cc:2637
  msgid "frontend does not support sibling call"
  msgstr "das Frontend unterstÃ¼tzt keine Geschwisteraufrufe"
  
! #: calls.cc:2693
  msgid "other reasons"
  msgstr "andere GrÃ¼nde"
  
! #: calls.cc:3067
  msgid "inside another call"
  msgstr "innerhalb eines anderen Aufrufs"
  
! #: calls.cc:3076
  msgid "variable size arguments"
  msgstr "Argumente variabler GrÃ¶ÃŸe"
  
! #: calls.cc:3100
  msgid "hidden string length argument passed on stack"
  msgstr "verstecktes StringlÃ¤ngenargument auf dem Stack Ã¼bergeben"
  
! #: calls.cc:3149
  msgid "caller and callee disagree in promotion of function return value"
  msgstr "Aufrufer und Aufgerufener sind sich nicht einig Ã¼ber die Promotion des RÃ¼ckgabewerts der Funktion"
  
  #. Ideally we'd emit a message for all of the ways that it could
  #. have failed.
! #: calls.cc:4061
  msgid "tail call production failed"
  msgstr "Produktion des Endaufrufs fehlgeschlagen"
  
*************** msgstr ""
*** 17746,17752 ****
  msgid "Please submit a full bug report, with preprocessed source (by using -freport-bug).\n"
  msgstr ""
  "Bitte senden Sie einen vollstÃ¤ndigen Fehlerbericht auf Englisch ein;\n"
! "inclusive vorverarbeitetem Quellcode (siehe -freport-bug).\n"
  
  #: diagnostic.cc:976
  #, c-format
--- 17756,17762 ----
  msgid "Please submit a full bug report, with preprocessed source (by using -freport-bug).\n"
  msgstr ""
  "Bitte senden Sie einen vollstÃ¤ndigen Fehlerbericht auf Englisch ein;\n"
! "inclusive vorverarbeitetem Quellcode (siehe Â»-freport-bugÂ«).\n"
  
  #: diagnostic.cc:976
  #, c-format
*************** msgstr "Â»%%lÂ«-Operand ist keine Marke"
*** 17824,17835 ****
  #. PRINT_OPERAND must handle them.
  #. We can't handle floating point constants;
  #. TARGET_PRINT_OPERAND must handle them.
! #: final.cc:3738 config/arc/arc.cc:6311 config/i386/i386.cc:12799
  #, c-format
  msgid "floating constant misused"
  msgstr "Gleitkommakonstante falsch verwendet"
  
! #: final.cc:3796 config/arc/arc.cc:6408 config/i386/i386.cc:12890
  #: config/pdp11/pdp11.cc:1872
  #, c-format
  msgid "invalid expression as operand"
--- 17834,17845 ----
  #. PRINT_OPERAND must handle them.
  #. We can't handle floating point constants;
  #. TARGET_PRINT_OPERAND must handle them.
! #: final.cc:3738 config/arc/arc.cc:6311 config/i386/i386.cc:12801
  #, c-format
  msgid "floating constant misused"
  msgstr "Gleitkommakonstante falsch verwendet"
  
! #: final.cc:3796 config/arc/arc.cc:6408 config/i386/i386.cc:12892
  #: config/pdp11/pdp11.cc:1872
  #, c-format
  msgid "invalid expression as operand"
*************** msgstr "  --help                   Diese
*** 17913,17919 ****
  
  #: gcc.cc:3742
  msgid "  --target-help            Display target specific command line options (including assembler and linker options).\n"
! msgstr "  --target-help            Zielspezifische Kommandozeilenoptionen (inklusive Assembler- und Linkeroptionen) anzeigen.\n"
  
  #: gcc.cc:3744
  msgid "  --help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...].\n"
--- 17923,17929 ----
  
  #: gcc.cc:3742
  msgid "  --target-help            Display target specific command line options (including assembler and linker options).\n"
! msgstr "  --target-help            Zielspezifische Kommandozeilenoptionen (inklusive Assembler- und Binderoptionen) anzeigen.\n"
  
  #: gcc.cc:3744
  msgid "  --help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...].\n"
*************** msgstr "  -Wp,<Optionen>           Die d
*** 18005,18011 ****
  
  #: gcc.cc:3769
  msgid "  -Wl,<options>            Pass comma-separated <options> on to the linker.\n"
! msgstr "  -Wl,<Optionen>           Die durch Kommata getrennten <Optionen> an den Linker Ã¼bergeben.\n"
  
  #: gcc.cc:3770
  msgid "  -Xassembler <arg>        Pass <arg> on to the assembler.\n"
--- 18015,18021 ----
  
  #: gcc.cc:3769
  msgid "  -Wl,<options>            Pass comma-separated <options> on to the linker.\n"
! msgstr "  -Wl,<Optionen>           Die durch Kommata getrennten <Optionen> an den Binder Ã¼bergeben.\n"
  
  #: gcc.cc:3770
  msgid "  -Xassembler <arg>        Pass <arg> on to the assembler.\n"
*************** msgstr "  -Xpreprocessor <Arg>     <Arg>
*** 18017,18023 ****
  
  #: gcc.cc:3772
  msgid "  -Xlinker <arg>           Pass <arg> on to the linker.\n"
! msgstr "  -Xlinker <Arg>           <Arg> an den Linker Ã¼bergeben.\n"
  
  #: gcc.cc:3773
  msgid "  -save-temps              Do not delete intermediate files.\n"
--- 18027,18033 ----
  
  #: gcc.cc:3772
  msgid "  -Xlinker <arg>           Pass <arg> on to the linker.\n"
! msgstr "  -Xlinker <Arg>           <Arg> an den Binder Ã¼bergeben.\n"
  
  #: gcc.cc:3773
  msgid "  -save-temps              Do not delete intermediate files.\n"
*************** msgstr ""
*** 18079,18089 ****
  msgid "  -E                       Preprocess only; do not compile, assemble or link.\n"
  msgstr ""
  "  -E                       Nur den PrÃ¤prozessor ausfÃ¼hren, nicht Compiler, Assembler oder\n"
! "                           Linker.\n"
  
  #: gcc.cc:3789
  msgid "  -S                       Compile only; do not assemble or link.\n"
! msgstr "  -S                       Nur kompilieren, nicht assemblieren oder linken.\n"
  
  #: gcc.cc:3790
  msgid "  -c                       Compile and assemble, but do not link.\n"
--- 18089,18099 ----
  msgid "  -E                       Preprocess only; do not compile, assemble or link.\n"
  msgstr ""
  "  -E                       Nur den PrÃ¤prozessor ausfÃ¼hren, nicht Compiler, Assembler oder\n"
! "                           Binder.\n"
  
  #: gcc.cc:3789
  msgid "  -S                       Compile only; do not assemble or link.\n"
! msgstr "  -S                       Nur kompilieren, nicht assemblieren oder binden.\n"
  
  #: gcc.cc:3790
  msgid "  -c                       Compile and assemble, but do not link.\n"
*************** msgid ""
*** 18098,18105 ****
  "  -pie                     Create a dynamically linked position independent\n"
  "                           executable.\n"
  msgstr ""
! "  -pie                     Eine ausfÃ¼hrbare Datei mit positionsunabhÃ¤ngigem\n"
! "                           Code erzeugen.\n"
  
  #: gcc.cc:3794
  msgid "  -shared                  Create a shared library.\n"
--- 18108,18115 ----
  "  -pie                     Create a dynamically linked position independent\n"
  "                           executable.\n"
  msgstr ""
! "  -pie                     Eine dynamisch gebundene ausfÃ¼hrbare Datei mit\n"
! "                           positionsunabhÃ¤ngigem Code erzeugen.\n"
  
  #: gcc.cc:3794
  msgid "  -shared                  Create a shared library.\n"
*************** msgid ""
*** 18126,18135 ****
  " other options on to these processes the -W<letter> options must be used.\n"
  msgstr ""
  "\n"
! "Optionen, die mit -g, -f, -m, -O, -W, oder --param beginnen, werden automatisch\n"
! " an die verschiedenen Subprozesse, die von %s aufgerufen werden, Ã¼bergeben.\n"
! " Um weitere Optionen an diese Prozesse zu Ã¼bergeben, mÃ¼ssen die Optionen\n"
! " -W<Buchstabe> verwendet werden.\n"
  
  #: gcc.cc:6948
  #, c-format
--- 18136,18146 ----
  " other options on to these processes the -W<letter> options must be used.\n"
  msgstr ""
  "\n"
! "Optionen, die mit Â»-gÂ«, Â»-fÂ«, Â»-mÂ«, Â»-OÂ«, Â»-WÂ«, oder Â»--paramÂ« beginnen,\n"
! " werden automatisch an die verschiedenen Subprozesse, die von %s aufgerufen\n"
! " werden, Ã¼bergeben.\n"
! " Um andere Optionen an diese Prozesse zu Ã¼bergeben, mÃ¼ssen die Optionen\n"
! " Â»-W<Buchstabe>Â« verwendet werden.\n"
  
  #: gcc.cc:6948
  #, c-format
*************** msgid ""
*** 18243,18249 ****
  "\n"
  msgstr ""
  "\n"
! "Linkeroptionen\n"
  "==============\n"
  "\n"
  
--- 18254,18260 ----
  "\n"
  msgstr ""
  "\n"
! "Binderoptionen\n"
  "==============\n"
  "\n"
  
*************** msgid ""
*** 18253,18259 ****
  "Use \"-Wl,OPTION\" to pass \"OPTION\" to the linker.\n"
  "\n"
  msgstr ""
! "Â»-Wl,OPTIONÂ« verwenden, um Â»OPTIONÂ« an den Linker zu Ã¼bergeben.\n"
  "\n"
  
  #: gcc.cc:10689
--- 18264,18270 ----
  "Use \"-Wl,OPTION\" to pass \"OPTION\" to the linker.\n"
  "\n"
  msgstr ""
! "Â»-Wl,OPTIONÂ« verwenden, um Â»OPTIONÂ« an den Binder zu Ã¼bergeben.\n"
  "\n"
  
  #: gcc.cc:10689
*************** msgstr "Diese Option ist undokumentiert.
*** 19066,19128 ****
  msgid "Uses of this option are diagnosed."
  msgstr "Die Verwendung dieser Option wird diagnostiziert."
  
! #: opts.cc:1723
  #, c-format
  msgid "Same as %s%s (or, in negated form, %s%s)."
  msgstr "Dasselbe wie %s%s (oder, in negierter Form, %s%s)."
  
! #: opts.cc:1728
  #, c-format
  msgid "Same as %s%s."
  msgstr "Dasselbe wie %s%s."
  
! #: opts.cc:1733
  #, c-format
  msgid "Same as %s."
  msgstr "Dasselbe wie %s."
  
! #: opts.cc:1741
  #, c-format
  msgid "%s  Same as %s."
  msgstr "%s ist identisch mit %s."
  
! #: opts.cc:1804
  msgid "[available in "
  msgstr "[verfÃ¼gbar in "
  
! #: opts.cc:1836
  msgid "[default]"
  msgstr "[Standard]"
  
! #: opts.cc:1845
  #, c-format
  msgid "%llu bytes"
  msgstr "%llu Bytes"
  
! #: opts.cc:1882
  msgid "[enabled]"
  msgstr "[eingeschaltet]"
  
! #: opts.cc:1884
  msgid "[disabled]"
  msgstr "[ausgeschaltet]"
  
! #: opts.cc:1920
  #, c-format
  msgid " No options with the desired characteristics were found\n"
  msgstr " Keine Optionen mit den gewÃ¼nschten Eigenschaften gefunden\n"
  
! #: opts.cc:1929
  #, c-format
  msgid " None found.  Use --help=%s to show *all* the options supported by the %s front-end.\n"
  msgstr " Nichts gefunden. Bitte verwenden Sie Â»--help=%sÂ«, um *alle* vom Frontend %s unterstÃ¼tzten Optionen anzuzeigen\n"
  
! #: opts.cc:1935
  #, c-format
  msgid " All options with the desired characteristics have already been displayed\n"
  msgstr " Alle Optionen mit den gewÃ¼nschten Eigenschaften wurden bereits angezeigt\n"
  
! #: opts.cc:1980
  #, c-format
  msgid ""
  "  Known valid arguments for %s option:\n"
--- 19077,19139 ----
  msgid "Uses of this option are diagnosed."
  msgstr "Die Verwendung dieser Option wird diagnostiziert."
  
! #: opts.cc:1721
  #, c-format
  msgid "Same as %s%s (or, in negated form, %s%s)."
  msgstr "Dasselbe wie %s%s (oder, in negierter Form, %s%s)."
  
! #: opts.cc:1726
  #, c-format
  msgid "Same as %s%s."
  msgstr "Dasselbe wie %s%s."
  
! #: opts.cc:1731
  #, c-format
  msgid "Same as %s."
  msgstr "Dasselbe wie %s."
  
! #: opts.cc:1739
  #, c-format
  msgid "%s  Same as %s."
  msgstr "%s ist identisch mit %s."
  
! #: opts.cc:1802
  msgid "[available in "
  msgstr "[verfÃ¼gbar in "
  
! #: opts.cc:1834
  msgid "[default]"
  msgstr "[Standard]"
  
! #: opts.cc:1843
  #, c-format
  msgid "%llu bytes"
  msgstr "%llu Bytes"
  
! #: opts.cc:1880
  msgid "[enabled]"
  msgstr "[eingeschaltet]"
  
! #: opts.cc:1882
  msgid "[disabled]"
  msgstr "[ausgeschaltet]"
  
! #: opts.cc:1918
  #, c-format
  msgid " No options with the desired characteristics were found\n"
  msgstr " Keine Optionen mit den gewÃ¼nschten Eigenschaften gefunden\n"
  
! #: opts.cc:1927
  #, c-format
  msgid " None found.  Use --help=%s to show *all* the options supported by the %s front-end.\n"
  msgstr " Nichts gefunden. Bitte verwenden Sie Â»--help=%sÂ«, um *alle* vom Frontend %s unterstÃ¼tzten Optionen anzuzeigen\n"
  
! #: opts.cc:1933
  #, c-format
  msgid " All options with the desired characteristics have already been displayed\n"
  msgstr " Alle Optionen mit den gewÃ¼nschten Eigenschaften wurden bereits angezeigt\n"
  
! #: opts.cc:1978
  #, c-format
  msgid ""
  "  Known valid arguments for %s option:\n"
*************** msgstr ""
*** 19131,19177 ****
  "  Bekannte gÃ¼ltige Argumente fÃ¼r Option Â»%sÂ«:\n"
  "   "
  
! #: opts.cc:2030
  msgid "The following options are target specific"
  msgstr "Die folgenden Optionen sind zielspezifisch"
  
! #: opts.cc:2033
  msgid "The following options control compiler warning messages"
  msgstr "Die folgenden Optionen steuern Warnmeldungen des Compilers"
  
! #: opts.cc:2036
  msgid "The following options control optimizations"
  msgstr "Die folgenden Optionen steuern Optimierungen"
  
! #: opts.cc:2039 opts.cc:2079
  msgid "The following options are language-independent"
  msgstr "Die folgenden Optionen sind sprachunabhÃ¤ngig"
  
! #: opts.cc:2042
  msgid "The following options control parameters"
  msgstr "Die folgenden Optionen steuern Parameter"
  
! #: opts.cc:2048
  msgid "The following options are specific to just the language "
  msgstr "Die folgenden Optionen sind nur spezifisch fÃ¼r die Sprache "
  
! #: opts.cc:2050
  msgid "The following options are supported by the language "
  msgstr "Die folgenden Optionen werden von der Sprache unterstÃ¼tzt "
  
! #: opts.cc:2061
  msgid "The following options are not documented"
  msgstr "Die folgenden Optionen sind nicht dokumentiert"
  
! #: opts.cc:2063
  msgid "The following options take separate arguments"
  msgstr "Die folgenden Optionen verwenden separate Argumente"
  
! #: opts.cc:2065
  msgid "The following options take joined arguments"
  msgstr "Die folgenden Optionen verwenden gemeinsame Argumente"
  
! #: opts.cc:2077
  msgid "The following options are language-related"
  msgstr "Die folgenden Optionen sind sprachbezogen"
  
--- 19142,19188 ----
  "  Bekannte gÃ¼ltige Argumente fÃ¼r Option Â»%sÂ«:\n"
  "   "
  
! #: opts.cc:2028
  msgid "The following options are target specific"
  msgstr "Die folgenden Optionen sind zielspezifisch"
  
! #: opts.cc:2031
  msgid "The following options control compiler warning messages"
  msgstr "Die folgenden Optionen steuern Warnmeldungen des Compilers"
  
! #: opts.cc:2034
  msgid "The following options control optimizations"
  msgstr "Die folgenden Optionen steuern Optimierungen"
  
! #: opts.cc:2037 opts.cc:2077
  msgid "The following options are language-independent"
  msgstr "Die folgenden Optionen sind sprachunabhÃ¤ngig"
  
! #: opts.cc:2040
  msgid "The following options control parameters"
  msgstr "Die folgenden Optionen steuern Parameter"
  
! #: opts.cc:2046
  msgid "The following options are specific to just the language "
  msgstr "Die folgenden Optionen sind nur spezifisch fÃ¼r die Sprache "
  
! #: opts.cc:2048
  msgid "The following options are supported by the language "
  msgstr "Die folgenden Optionen werden von der Sprache unterstÃ¼tzt "
  
! #: opts.cc:2059
  msgid "The following options are not documented"
  msgstr "Die folgenden Optionen sind nicht dokumentiert"
  
! #: opts.cc:2061
  msgid "The following options take separate arguments"
  msgstr "Die folgenden Optionen verwenden separate Argumente"
  
! #: opts.cc:2063
  msgid "The following options take joined arguments"
  msgstr "Die folgenden Optionen verwenden gemeinsame Argumente"
  
! #: opts.cc:2075
  msgid "The following options are language-related"
  msgstr "Die folgenden Optionen sind sprachbezogen"
  
*************** msgid "%s%sGGC heuristics: --param ggc-m
*** 19272,19278 ****
  msgstr "%s%sGGC-Heuristik: --param ggc-min-expand=%d --param ggc-min-heapsize=%d\n"
  
  #: tree-diagnostic.cc:100 tree-logical-location.cc:92 c/c-decl.cc:6607
! #: c/c-typeck.cc:9013 cp/error.cc:1301 c-family/c-pretty-print.cc:447
  #, gcc-internal-format
  msgid "<anonymous>"
  msgstr "<anonym>"
--- 19283,19289 ----
  msgstr "%s%sGGC-Heuristik: --param ggc-min-expand=%d --param ggc-min-heapsize=%d\n"
  
  #: tree-diagnostic.cc:100 tree-logical-location.cc:92 c/c-decl.cc:6607
! #: c/c-typeck.cc:9014 cp/error.cc:1301 c-family/c-pretty-print.cc:447
  #, gcc-internal-format
  msgid "<anonymous>"
  msgstr "<anonym>"
*************** msgstr "der Aufrufer verwendet alloca"
*** 19289,19295 ****
  msgid "caller uses sjlj exceptions"
  msgstr "der Aufrufer verwendet sjlj-Ausnahmen"
  
! #: tree-tailcall.cc:197 tree-tailcall.cc:723
  msgid "caller uses setjmp"
  msgstr "der Aufrufer verwendet setjmp"
  
--- 19300,19306 ----
  msgid "caller uses sjlj exceptions"
  msgstr "der Aufrufer verwendet sjlj-Ausnahmen"
  
! #: tree-tailcall.cc:197 tree-tailcall.cc:853
  msgid "caller uses setjmp"
  msgstr "der Aufrufer verwendet setjmp"
  
*************** msgstr "der Aufrufer verwendet setjmp"
*** 19297,19363 ****
  msgid "caller uses __builtin_eh_return"
  msgstr "der Aufrufer verwendet __builtin_eh_return"
  
! #: tree-tailcall.cc:633
  msgid "memory reference or volatile after call"
  msgstr "Speicherverweis oder volatile-Zugriff nach dem Aufruf"
  
! #: tree-tailcall.cc:690
  msgid "address of caller arguments taken"
  msgstr "die Adresse von Argumenten des Aufrufers wird verwendet"
  
! #: tree-tailcall.cc:717
  msgid "return value in memory"
  msgstr "RÃ¼ckgabewert im Speicher"
  
! #: tree-tailcall.cc:734
  msgid "code between call and return"
  msgstr "Code zwischen dem Aufruf und der RÃ¼ckkehr"
  
! #: tree-tailcall.cc:747
  msgid "call may throw exception that does not propagate"
  msgstr "der Aufruf wirft mÃ¶glicherweise eine Ausnahme, die nicht propagiert"
  
! #: tree-tailcall.cc:760 tree-tailcall.cc:1166
  msgid "call may throw exception caught locally or perform cleanups"
  msgstr "der Aufruf wirft mÃ¶glicherweise eine lokal gefangene Ausnahme oder rÃ¤umt auf"
  
! #: tree-tailcall.cc:795
  msgid "return value used after call"
  msgstr "der RÃ¼ckgabewert wird nach dem Aufruf verwendet"
  
! #: tree-tailcall.cc:893 tree-tailcall.cc:921
  msgid "call invocation refers to locals"
  msgstr "der Aufruf des Funktionsaufrufs verweist auf lokale Variablen"
  
! #: tree-tailcall.cc:1001
  msgid "unhandled code after call"
  msgstr "unbehandelter Code nach dem Aufruf"
  
! #: tree-tailcall.cc:1011
  msgid "return value changed after call"
  msgstr "der RÃ¼ckgabewert wird nach dem Aufruf verÃ¤ndert"
  
! #: tree-tailcall.cc:1060
  msgid "internal call"
  msgstr "interner Aufruf"
  
! #: tree-tailcall.cc:1068 tree-tailcall.cc:1139
  msgid "call and return value are different"
  msgstr "der Wert bei Aufruf und RÃ¼ckkehr unterscheiden sich"
  
! #: tree-tailcall.cc:1149
  msgid "operations after non tail recursive call"
  msgstr "es gibt Operationen nach dem nicht-endrekursiven Aufruf"
  
! #: tree-tailcall.cc:1157
  msgid "tail recursion with pointers can only use additions"
  msgstr "Endrekursion mit Zeigern darf nur Additionen verwenden"
  
! #: tree-tailcall.cc:1170
  msgid "exception cleanups omit __tsan_func_exit call"
  msgstr "Ausnahmebereinigungen lassen den Aufruf von __tsan_func_exit weg"
  
! #: tree-tailcall.cc:1672
  msgid "tail recursion with accumulation mixed with musttail non-recursive call"
  msgstr "Endrekursion, in dem Akkumulation mit nichtrekursivem musttail-Aufruf vermischt ist"
  
--- 19308,19374 ----
  msgid "caller uses __builtin_eh_return"
  msgstr "der Aufrufer verwendet __builtin_eh_return"
  
! #: tree-tailcall.cc:746
  msgid "memory reference or volatile after call"
  msgstr "Speicherverweis oder volatile-Zugriff nach dem Aufruf"
  
! #: tree-tailcall.cc:820
  msgid "address of caller arguments taken"
  msgstr "die Adresse von Argumenten des Aufrufers wird verwendet"
  
! #: tree-tailcall.cc:847
  msgid "return value in memory"
  msgstr "RÃ¼ckgabewert im Speicher"
  
! #: tree-tailcall.cc:864
  msgid "code between call and return"
  msgstr "Code zwischen dem Aufruf und der RÃ¼ckkehr"
  
! #: tree-tailcall.cc:877
  msgid "call may throw exception that does not propagate"
  msgstr "der Aufruf wirft mÃ¶glicherweise eine Ausnahme, die nicht propagiert"
  
! #: tree-tailcall.cc:890 tree-tailcall.cc:1385
  msgid "call may throw exception caught locally or perform cleanups"
  msgstr "der Aufruf wirft mÃ¶glicherweise eine lokal gefangene Ausnahme oder rÃ¤umt auf"
  
! #: tree-tailcall.cc:925
  msgid "return value used after call"
  msgstr "der RÃ¼ckgabewert wird nach dem Aufruf verwendet"
  
! #: tree-tailcall.cc:1023 tree-tailcall.cc:1051
  msgid "call invocation refers to locals"
  msgstr "der Aufruf des Funktionsaufrufs verweist auf lokale Variablen"
  
! #: tree-tailcall.cc:1220
  msgid "unhandled code after call"
  msgstr "unbehandelter Code nach dem Aufruf"
  
! #: tree-tailcall.cc:1230
  msgid "return value changed after call"
  msgstr "der RÃ¼ckgabewert wird nach dem Aufruf verÃ¤ndert"
  
! #: tree-tailcall.cc:1279
  msgid "internal call"
  msgstr "interner Aufruf"
  
! #: tree-tailcall.cc:1287 tree-tailcall.cc:1358
  msgid "call and return value are different"
  msgstr "der Wert bei Aufruf und RÃ¼ckkehr unterscheiden sich"
  
! #: tree-tailcall.cc:1368
  msgid "operations after non tail recursive call"
  msgstr "es gibt Operationen nach dem nicht-endrekursiven Aufruf"
  
! #: tree-tailcall.cc:1376
  msgid "tail recursion with pointers can only use additions"
  msgstr "Endrekursion mit Zeigern darf nur Additionen verwenden"
  
! #: tree-tailcall.cc:1389
  msgid "exception cleanups omit __tsan_func_exit call"
  msgstr "Ausnahmebereinigungen lassen den Aufruf von __tsan_func_exit weg"
  
! #: tree-tailcall.cc:1892
  msgid "tail recursion with accumulation mixed with musttail non-recursive call"
  msgstr "Endrekursion, in dem Akkumulation mit nichtrekursivem musttail-Aufruf vermischt ist"
  
*************** msgid "length modifier in strfmon format
*** 19634,19655 ****
  msgstr "LÃ¤ngenmodifizierer im strfmon-Format"
  
  #. Handle deferred options from command-line.
! #: c-family/c-opts.cc:1656 fortran/cpp.cc:630
  msgid "<command-line>"
  msgstr "<Kommandozeile>"
  
! #: config/aarch64/aarch64.cc:12298 config/loongarch/loongarch.cc:6280
  #, c-format
  msgid "unsupported operand for code '%c'"
  msgstr "Operand fÃ¼r Code Â»%cÂ« nicht unterstÃ¼tzt"
  
! #: config/aarch64/aarch64.cc:12307 config/aarch64/aarch64.cc:12320
! #: config/aarch64/aarch64.cc:12332 config/aarch64/aarch64.cc:12343
! #: config/aarch64/aarch64.cc:12359 config/aarch64/aarch64.cc:12373
! #: config/aarch64/aarch64.cc:12393 config/aarch64/aarch64.cc:12475
! #: config/aarch64/aarch64.cc:12486 config/aarch64/aarch64.cc:12500
! #: config/aarch64/aarch64.cc:12726 config/aarch64/aarch64.cc:12739
! #: config/aarch64/aarch64.cc:12756 config/pru/pru.cc:1824
  #: config/pru/pru.cc:1835 config/pru/pru.cc:1917 config/riscv/riscv.cc:7037
  #: config/riscv/riscv.cc:7053 config/riscv/riscv.cc:7069
  #: config/riscv/riscv.cc:7085 config/riscv/riscv.cc:7118
--- 19645,19666 ----
  msgstr "LÃ¤ngenmodifizierer im strfmon-Format"
  
  #. Handle deferred options from command-line.
! #: c-family/c-opts.cc:1658 fortran/cpp.cc:630
  msgid "<command-line>"
  msgstr "<Kommandozeile>"
  
! #: config/aarch64/aarch64.cc:12313 config/loongarch/loongarch.cc:6280
  #, c-format
  msgid "unsupported operand for code '%c'"
  msgstr "Operand fÃ¼r Code Â»%cÂ« nicht unterstÃ¼tzt"
  
! #: config/aarch64/aarch64.cc:12322 config/aarch64/aarch64.cc:12335
! #: config/aarch64/aarch64.cc:12347 config/aarch64/aarch64.cc:12358
! #: config/aarch64/aarch64.cc:12374 config/aarch64/aarch64.cc:12388
! #: config/aarch64/aarch64.cc:12408 config/aarch64/aarch64.cc:12490
! #: config/aarch64/aarch64.cc:12501 config/aarch64/aarch64.cc:12515
! #: config/aarch64/aarch64.cc:12741 config/aarch64/aarch64.cc:12754
! #: config/aarch64/aarch64.cc:12771 config/pru/pru.cc:1824
  #: config/pru/pru.cc:1835 config/pru/pru.cc:1917 config/riscv/riscv.cc:7037
  #: config/riscv/riscv.cc:7053 config/riscv/riscv.cc:7069
  #: config/riscv/riscv.cc:7085 config/riscv/riscv.cc:7118
*************** msgstr "Operand fÃ¼r Code Â»%cÂ« nicht u
*** 19659,19666 ****
  msgid "invalid operand for '%%%c'"
  msgstr "ungÃ¼ltiger Operand fÃ¼r Â»%%%cÂ«"
  
! #: config/aarch64/aarch64.cc:12411 config/aarch64/aarch64.cc:12422
! #: config/aarch64/aarch64.cc:12586 config/aarch64/aarch64.cc:12597
  #: config/riscv/riscv.cc:6933 config/riscv/riscv.cc:6941
  #: config/riscv/riscv.cc:6948 config/riscv/riscv.cc:6952
  #: config/riscv/riscv.cc:6994 config/riscv/riscv.cc:7012
--- 19670,19677 ----
  msgid "invalid operand for '%%%c'"
  msgstr "ungÃ¼ltiger Operand fÃ¼r Â»%%%cÂ«"
  
! #: config/aarch64/aarch64.cc:12426 config/aarch64/aarch64.cc:12437
! #: config/aarch64/aarch64.cc:12601 config/aarch64/aarch64.cc:12612
  #: config/riscv/riscv.cc:6933 config/riscv/riscv.cc:6941
  #: config/riscv/riscv.cc:6948 config/riscv/riscv.cc:6952
  #: config/riscv/riscv.cc:6994 config/riscv/riscv.cc:7012
*************** msgstr "ungÃ¼ltiger Operand fÃ¼r Â»%%%cÂ
*** 19668,19808 ****
  msgid "invalid vector constant"
  msgstr "ungÃ¼ltige Vektorkonstante"
  
! #: config/aarch64/aarch64.cc:12436
  #, c-format
  msgid "incompatible floating point / vector register operand for '%%%c'"
  msgstr "unvertrÃ¤glicher Gleitkomma- / Vektorregisteroperand fÃ¼r Â»%%%cÂ«"
  
! #: config/aarch64/aarch64.cc:12448
  #, c-format
  msgid "incompatible operand for '%%%c'"
  msgstr "unvertrÃ¤glicher Operand fÃ¼r Â»%%%cÂ«"
  
! #: config/aarch64/aarch64.cc:12468
  #, c-format
  msgid "incompatible register operand for '%%%c'"
  msgstr "unvertrÃ¤glicher Registeroperand fÃ¼r Â»%%%cÂ«"
  
! #: config/aarch64/aarch64.cc:12533 config/arm/arm.cc:24916
  #, c-format
  msgid "missing operand"
  msgstr "fehlender Operand"
  
! #: config/aarch64/aarch64.cc:12623
  #, c-format
  msgid "invalid constant"
  msgstr "ungÃ¼ltige Konstante"
  
! #: config/aarch64/aarch64.cc:12626
  #, c-format
  msgid "invalid operand"
  msgstr "ungÃ¼ltiger Operand"
  
! #: config/aarch64/aarch64.cc:12764 config/aarch64/aarch64.cc:12769
  #, c-format
  msgid "invalid operand prefix '%%%c'"
  msgstr "ungÃ¼ltiger OperandenprÃ¤fix Â»%%%cÂ«"
  
! #: config/aarch64/aarch64.cc:12789
  #, c-format
  msgid "invalid address mode"
  msgstr "ungÃ¼ltiger Adressierungsmodus"
  
! #: config/aarch64/aarch64.cc:22760
  msgid "invalid conversion from type %<mfloat8_t%>"
  msgstr "ungÃ¼ltige Umwandlung von Typ %<mfloat8_t%>"
  
! #: config/aarch64/aarch64.cc:22762
  msgid "invalid conversion to type %<mfloat8_t%>"
  msgstr "ungÃ¼ltige Umwandlung in Typ %<mfloat8_t%>"
  
! #: config/aarch64/aarch64.cc:29725 config/aarch64/aarch64.cc:29748
  msgid "operation not permitted on type %<mfloat8_t%>"
  msgstr "Operation nicht erlaubt auf Typ %<mfloat8_t%>"
  
! #: config/aarch64/aarch64.cc:29743
  msgid "cannot combine GNU and SVE vectors in a binary operation"
  msgstr "GNU- und SVE-Vektoren kÃ¶nnen nicht in einer binÃ¤ren Operation kombiniert werden"
  
! #: config/alpha/alpha.cc:5783 config/i386/i386.cc:14075
  #: config/rs6000/rs6000.cc:14674 config/sparc/sparc.cc:9400
  #, c-format
  msgid "'%%&' used without any local dynamic TLS references"
  msgstr "Â»%%&Â« ohne lokale dynamische TLS-Referenzen verwendet"
  
! #: config/alpha/alpha.cc:5841 config/bfin/bfin.cc:1428
  #, c-format
  msgid "invalid %%J value"
  msgstr "ungÃ¼ltiger %%J-Wert"
  
! #: config/alpha/alpha.cc:5871 config/ia64/ia64.cc:5592 config/or1k/or1k.cc:1252
  #, c-format
  msgid "invalid %%r value"
  msgstr "ungÃ¼ltiger %%r-Wert"
  
! #: config/alpha/alpha.cc:5881 config/ia64/ia64.cc:5546
  #: config/rs6000/rs6000.cc:14369 config/xtensa/xtensa.cc:3144
  #, c-format
  msgid "invalid %%R value"
  msgstr "ungÃ¼ltiger %%R-Wert"
  
! #: config/alpha/alpha.cc:5887 config/rs6000/rs6000.cc:14289
  #: config/xtensa/xtensa.cc:3117
  #, c-format
  msgid "invalid %%N value"
  msgstr "ungÃ¼ltiger %%N-Wert"
  
! #: config/alpha/alpha.cc:5895 config/rs6000/rs6000.cc:14317
  #, c-format
  msgid "invalid %%P value"
  msgstr "ungÃ¼ltiger %%P-Wert"
  
! #: config/alpha/alpha.cc:5903
  #, c-format
  msgid "invalid %%h value"
  msgstr "ungÃ¼ltiger %%h-Wert"
  
! #: config/alpha/alpha.cc:5911 config/xtensa/xtensa.cc:3137
  #, c-format
  msgid "invalid %%L value"
  msgstr "ungÃ¼ltiger %%L-Wert"
  
! #: config/alpha/alpha.cc:5930
  #, c-format
  msgid "invalid %%m value"
  msgstr "ungÃ¼ltiger %%m-Wert"
  
! #: config/alpha/alpha.cc:5936
  #, c-format
  msgid "invalid %%M value"
  msgstr "ungÃ¼ltiger %%M-Wert"
  
! #: config/alpha/alpha.cc:5973
  #, c-format
  msgid "invalid %%U value"
  msgstr "ungÃ¼ltiger %%U-Wert"
  
! #: config/alpha/alpha.cc:5981 config/rs6000/rs6000.cc:14377
  #, c-format
  msgid "invalid %%s value"
  msgstr "ungÃ¼ltiger %%s-Wert"
  
! #: config/alpha/alpha.cc:5992
  #, c-format
  msgid "invalid %%C value"
  msgstr "ungÃ¼ltiger %%C-Wert"
  
! #: config/alpha/alpha.cc:6029 config/rs6000/rs6000.cc:14153
  #, c-format
  msgid "invalid %%E value"
  msgstr "ungÃ¼ltiger %%E-Wert"
  
! #: config/alpha/alpha.cc:6054 config/alpha/alpha.cc:6104
  #, c-format
  msgid "unknown relocation unspec"
  msgstr "unbekannte Adressverschiebungs-Unspec"
  
! #: config/alpha/alpha.cc:6063 config/gcn/gcn.cc:7341 config/gcn/gcn.cc:7350
  #: config/gcn/gcn.cc:7408 config/gcn/gcn.cc:7416 config/gcn/gcn.cc:7432
  #: config/gcn/gcn.cc:7450 config/gcn/gcn.cc:7501 config/gcn/gcn.cc:7620
  #: config/gcn/gcn.cc:7733 config/rs6000/rs6000.cc:14679
--- 19679,19819 ----
  msgid "invalid vector constant"
  msgstr "ungÃ¼ltige Vektorkonstante"
  
! #: config/aarch64/aarch64.cc:12451
  #, c-format
  msgid "incompatible floating point / vector register operand for '%%%c'"
  msgstr "unvertrÃ¤glicher Gleitkomma- / Vektorregisteroperand fÃ¼r Â»%%%cÂ«"
  
! #: config/aarch64/aarch64.cc:12463
  #, c-format
  msgid "incompatible operand for '%%%c'"
  msgstr "unvertrÃ¤glicher Operand fÃ¼r Â»%%%cÂ«"
  
! #: config/aarch64/aarch64.cc:12483
  #, c-format
  msgid "incompatible register operand for '%%%c'"
  msgstr "unvertrÃ¤glicher Registeroperand fÃ¼r Â»%%%cÂ«"
  
! #: config/aarch64/aarch64.cc:12548 config/arm/arm.cc:24916
  #, c-format
  msgid "missing operand"
  msgstr "fehlender Operand"
  
! #: config/aarch64/aarch64.cc:12638
  #, c-format
  msgid "invalid constant"
  msgstr "ungÃ¼ltige Konstante"
  
! #: config/aarch64/aarch64.cc:12641
  #, c-format
  msgid "invalid operand"
  msgstr "ungÃ¼ltiger Operand"
  
! #: config/aarch64/aarch64.cc:12779 config/aarch64/aarch64.cc:12784
  #, c-format
  msgid "invalid operand prefix '%%%c'"
  msgstr "ungÃ¼ltiger OperandenprÃ¤fix Â»%%%cÂ«"
  
! #: config/aarch64/aarch64.cc:12804
  #, c-format
  msgid "invalid address mode"
  msgstr "ungÃ¼ltiger Adressierungsmodus"
  
! #: config/aarch64/aarch64.cc:22775
  msgid "invalid conversion from type %<mfloat8_t%>"
  msgstr "ungÃ¼ltige Umwandlung von Typ %<mfloat8_t%>"
  
! #: config/aarch64/aarch64.cc:22777
  msgid "invalid conversion to type %<mfloat8_t%>"
  msgstr "ungÃ¼ltige Umwandlung in Typ %<mfloat8_t%>"
  
! #: config/aarch64/aarch64.cc:29806 config/aarch64/aarch64.cc:29829
  msgid "operation not permitted on type %<mfloat8_t%>"
  msgstr "Operation nicht erlaubt auf Typ %<mfloat8_t%>"
  
! #: config/aarch64/aarch64.cc:29824
  msgid "cannot combine GNU and SVE vectors in a binary operation"
  msgstr "GNU- und SVE-Vektoren kÃ¶nnen nicht in einer binÃ¤ren Operation kombiniert werden"
  
! #: config/alpha/alpha.cc:5780 config/i386/i386.cc:14077
  #: config/rs6000/rs6000.cc:14674 config/sparc/sparc.cc:9400
  #, c-format
  msgid "'%%&' used without any local dynamic TLS references"
  msgstr "Â»%%&Â« ohne lokale dynamische TLS-Referenzen verwendet"
  
! #: config/alpha/alpha.cc:5838 config/bfin/bfin.cc:1428
  #, c-format
  msgid "invalid %%J value"
  msgstr "ungÃ¼ltiger %%J-Wert"
  
! #: config/alpha/alpha.cc:5868 config/ia64/ia64.cc:5592 config/or1k/or1k.cc:1252
  #, c-format
  msgid "invalid %%r value"
  msgstr "ungÃ¼ltiger %%r-Wert"
  
! #: config/alpha/alpha.cc:5878 config/ia64/ia64.cc:5546
  #: config/rs6000/rs6000.cc:14369 config/xtensa/xtensa.cc:3144
  #, c-format
  msgid "invalid %%R value"
  msgstr "ungÃ¼ltiger %%R-Wert"
  
! #: config/alpha/alpha.cc:5884 config/rs6000/rs6000.cc:14289
  #: config/xtensa/xtensa.cc:3117
  #, c-format
  msgid "invalid %%N value"
  msgstr "ungÃ¼ltiger %%N-Wert"
  
! #: config/alpha/alpha.cc:5892 config/rs6000/rs6000.cc:14317
  #, c-format
  msgid "invalid %%P value"
  msgstr "ungÃ¼ltiger %%P-Wert"
  
! #: config/alpha/alpha.cc:5900
  #, c-format
  msgid "invalid %%h value"
  msgstr "ungÃ¼ltiger %%h-Wert"
  
! #: config/alpha/alpha.cc:5908 config/xtensa/xtensa.cc:3137
  #, c-format
  msgid "invalid %%L value"
  msgstr "ungÃ¼ltiger %%L-Wert"
  
! #: config/alpha/alpha.cc:5927
  #, c-format
  msgid "invalid %%m value"
  msgstr "ungÃ¼ltiger %%m-Wert"
  
! #: config/alpha/alpha.cc:5933
  #, c-format
  msgid "invalid %%M value"
  msgstr "ungÃ¼ltiger %%M-Wert"
  
! #: config/alpha/alpha.cc:5970
  #, c-format
  msgid "invalid %%U value"
  msgstr "ungÃ¼ltiger %%U-Wert"
  
! #: config/alpha/alpha.cc:5978 config/rs6000/rs6000.cc:14377
  #, c-format
  msgid "invalid %%s value"
  msgstr "ungÃ¼ltiger %%s-Wert"
  
! #: config/alpha/alpha.cc:5989
  #, c-format
  msgid "invalid %%C value"
  msgstr "ungÃ¼ltiger %%C-Wert"
  
! #: config/alpha/alpha.cc:6026 config/rs6000/rs6000.cc:14153
  #, c-format
  msgid "invalid %%E value"
  msgstr "ungÃ¼ltiger %%E-Wert"
  
! #: config/alpha/alpha.cc:6051 config/alpha/alpha.cc:6101
  #, c-format
  msgid "unknown relocation unspec"
  msgstr "unbekannte Adressverschiebungs-Unspec"
  
! #: config/alpha/alpha.cc:6060 config/gcn/gcn.cc:7341 config/gcn/gcn.cc:7350
  #: config/gcn/gcn.cc:7408 config/gcn/gcn.cc:7416 config/gcn/gcn.cc:7432
  #: config/gcn/gcn.cc:7450 config/gcn/gcn.cc:7501 config/gcn/gcn.cc:7620
  #: config/gcn/gcn.cc:7733 config/rs6000/rs6000.cc:14679
*************** msgstr "unbekannte Adressverschiebungs-U
*** 19810,19816 ****
  msgid "invalid %%xn code"
  msgstr "ungÃ¼ltiger %%xn-Code"
  
! #: config/alpha/alpha.cc:6169
  #, c-format
  msgid "invalid operand address"
  msgstr "ungÃ¼ltige Operandenadresse"
--- 19821,19827 ----
  msgid "invalid %%xn code"
  msgstr "ungÃ¼ltiger %%xn-Code"
  
! #: config/alpha/alpha.cc:6166
  #, c-format
  msgid "invalid operand address"
  msgstr "ungÃ¼ltige Operandenadresse"
*************** msgstr "nicht unterstÃ¼tzter Operand"
*** 20102,20110 ****
  #: config/cris/cris.cc:783 config/ft32/ft32.cc:110 config/moxie/moxie.cc:108
  #: cobol/dts.h:71 final.cc:3194 final.cc:3196 fold-const.cc:347 gcc.cc:6299
  #: gcc.cc:6313 rtl-error.cc:101 toplev.cc:322 cobol/gcobolspec.cc:366
! #: cobol/gcobolspec.cc:440 cobol/gcobolspec.cc:450 cobol/gcobolspec.cc:525
! #: cp/logic.cc:311 cp/logic.cc:313 cp/typeck.cc:7836 d/d-convert.cc:237
! #: go/go-gcc-diagnostics.cc:28 go/go-gcc-diagnostics.cc:37
  #: go/go-gcc-diagnostics.cc:45 go/go-gcc-diagnostics.cc:53
  #: lto/lto-object.cc:180 lto/lto-object.cc:277 lto/lto-object.cc:334
  #: lto/lto-object.cc:358 m2/gm2-gcc/m2linemap.cc:183
--- 20113,20121 ----
  #: config/cris/cris.cc:783 config/ft32/ft32.cc:110 config/moxie/moxie.cc:108
  #: cobol/dts.h:71 final.cc:3194 final.cc:3196 fold-const.cc:347 gcc.cc:6299
  #: gcc.cc:6313 rtl-error.cc:101 toplev.cc:322 cobol/gcobolspec.cc:366
! #: cobol/gcobolspec.cc:440 cobol/gcobolspec.cc:450 cobol/gcobolspec.cc:534
! #: cobol/genutil.cc:1268 cp/logic.cc:311 cp/logic.cc:313 cp/typeck.cc:7952
! #: d/d-convert.cc:237 go/go-gcc-diagnostics.cc:28 go/go-gcc-diagnostics.cc:37
  #: go/go-gcc-diagnostics.cc:45 go/go-gcc-diagnostics.cc:53
  #: lto/lto-object.cc:180 lto/lto-object.cc:277 lto/lto-object.cc:334
  #: lto/lto-object.cc:358 m2/gm2-gcc/m2linemap.cc:183
*************** msgstr "ungÃ¼ltige Gleitkomma-Konstante"
*** 20348,20468 ****
  msgid "Expected register or constant integer."
  msgstr "Register oder konstante Ganzzahl erwartet."
  
! #: config/i386/i386.cc:12884
  #, c-format
  msgid "invalid UNSPEC as operand"
  msgstr "ungÃ¼ltiges UNSPEC als Operand"
  
! #: config/i386/i386.cc:13423
  #, c-format
  msgid "invalid use of register '%s'"
  msgstr "UngÃ¼ltige Verwendung von Register Â»%sÂ«"
  
! #: config/i386/i386.cc:13428
  #, c-format
  msgid "invalid use of asm flag output"
  msgstr "ungÃ¼ltige Verwendung der asm-Schalter-Ausgabe"
  
! #: config/i386/i386.cc:13662
  #, c-format
  msgid "invalid operand size for operand code 'O'"
  msgstr "ungÃ¼ltige OperandengrÃ¶ÃŸe fÃ¼r Operandencode Â»OÂ«"
  
! #: config/i386/i386.cc:13697
  #, c-format
  msgid "invalid operand size for operand code 'z'"
  msgstr "ungÃ¼ltige OperandengrÃ¶ÃŸe fÃ¼r Operandencode Â»zÂ«"
  
! #: config/i386/i386.cc:13772
  #, c-format
  msgid "invalid operand type used with operand code '%c'"
  msgstr "ungÃ¼ltiger Operandentyp mit Operandencode Â»%cÂ« verwendet"
  
! #: config/i386/i386.cc:13777
  #, c-format
  msgid "invalid operand size for operand code '%c'"
  msgstr "ungÃ¼ltige OperandengrÃ¶ÃŸe fÃ¼r Operandencode Â»%cÂ«"
  
! #: config/i386/i386.cc:13855
  #, c-format
  msgid "operand is not a condition code, invalid operand code 'Y'"
  msgstr "Operand ist kein Bedingungscode, ungÃ¼ltiger Operandencode Â»YÂ«"
  
! #: config/i386/i386.cc:13934
  #, c-format
  msgid "operand is not a condition code, invalid operand code 'D'"
  msgstr "Operand ist kein Bedingungscode, ungÃ¼ltiger Operandencode Â»DÂ«"
  
! #: config/i386/i386.cc:13952
  #, c-format
  msgid "operand is not a condition code, invalid operand code '%c'"
  msgstr "Operand ist kein Bedingungscode, ungÃ¼ltiger Operandencode Â»%cÂ«"
  
! #: config/i386/i386.cc:13973
  #, c-format
  msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
  msgstr "Operand ist keine ausgleichbare Speicherreferenz, ungÃ¼ltiger Operandencode Â»HÂ«"
  
! #: config/i386/i386.cc:13988
  #, c-format
  msgid "operand is not an integer, invalid operand code 'K'"
  msgstr "Operand ist keine Ganzzahl, ungÃ¼ltiger Operandencode Â»KÂ«"
  
! #: config/i386/i386.cc:14016
  #, c-format
  msgid "operand is not a specific integer, invalid operand code 'r'"
  msgstr "Operand ist keine bestimmte Ganzzahl, ungÃ¼ltiger Operandencode Â»rÂ«"
  
! #: config/i386/i386.cc:14034
  #, c-format
  msgid "operand is not an integer, invalid operand code 'R'"
  msgstr "Operand ist keine Ganzzahl, ungÃ¼ltiger Operandencode Â»RÂ«"
  
! #: config/i386/i386.cc:14057
  #, c-format
  msgid "operand is not a specific integer, invalid operand code 'R'"
  msgstr "Operand ist keine bestimmte Ganzzahl, ungÃ¼ltiger Operandencode Â»RÂ«"
  
! #: config/i386/i386.cc:14150
  #, c-format
  msgid "invalid operand code '%c'"
  msgstr "ungÃ¼ltiger Operandencode Â»%cÂ«"
  
! #: config/i386/i386.cc:14212 config/i386/i386.cc:14601
  #, c-format
  msgid "invalid constraints for operand"
  msgstr "ungÃ¼ltige Bedingungen fÃ¼r Operand"
  
! #: config/i386/i386.cc:14313
  #, c-format
  msgid "invalid vector immediate"
  msgstr "ungÃ¼ltiger Vektordirektwert"
  
! #: config/i386/i386.cc:17483
  msgid "unknown insn mode"
  msgstr "unbekannter Befehlsmodus"
  
! #: config/i386/i386.cc:24021
  msgid "invalid conversion from type %<__bf16%> without option %<-msse2%>"
  msgstr "ungÃ¼ltige Umwandlung von Typ %<__bf16%> ohne Option %<-msse2%>"
  
! #: config/i386/i386.cc:24024
  msgid "invalid conversion from type %<_Float16%> without option %<-msse2%>"
  msgstr "ungÃ¼ltige Umwandlung von Typ %<_Float16%> ohne Option %<-msse2%>"
  
! #: config/i386/i386.cc:24027
  msgid "invalid conversion to type %<__bf16%> without option %<-msse2%>"
  msgstr "ungÃ¼ltige Umwandlung in Typ %<__bf16%> ohne Option %<-msse2%>"
  
! #: config/i386/i386.cc:24030
  msgid "invalid conversion to type %<_Float16%> without option %<-msse2%>"
  msgstr "ungÃ¼ltige Umwandlung in Typ %<_Float16%> ohne Option %<-msse2%>"
  
! #: config/i386/i386.cc:24068 config/i386/i386.cc:24093
  msgid "operation not permitted on type %<__bf16%> without option %<-msse2%>"
  msgstr "Operation nicht erlaubt auf Typ %<__bf16%> ohne Option %<-msse2%>"
  
! #: config/i386/i386.cc:24071 config/i386/i386.cc:24097
  msgid "operation not permitted on type %<_Float16%> without option %<-msse2%>"
  msgstr "Operation nicht erlaubt auf Typ %<_Float16%> ohne Option %<-msse2%>"
  
--- 20359,20479 ----
  msgid "Expected register or constant integer."
  msgstr "Register oder konstante Ganzzahl erwartet."
  
! #: config/i386/i386.cc:12886
  #, c-format
  msgid "invalid UNSPEC as operand"
  msgstr "ungÃ¼ltiges UNSPEC als Operand"
  
! #: config/i386/i386.cc:13425
  #, c-format
  msgid "invalid use of register '%s'"
  msgstr "UngÃ¼ltige Verwendung von Register Â»%sÂ«"
  
! #: config/i386/i386.cc:13430
  #, c-format
  msgid "invalid use of asm flag output"
  msgstr "ungÃ¼ltige Verwendung der asm-Schalter-Ausgabe"
  
! #: config/i386/i386.cc:13664
  #, c-format
  msgid "invalid operand size for operand code 'O'"
  msgstr "ungÃ¼ltige OperandengrÃ¶ÃŸe fÃ¼r Operandencode Â»OÂ«"
  
! #: config/i386/i386.cc:13699
  #, c-format
  msgid "invalid operand size for operand code 'z'"
  msgstr "ungÃ¼ltige OperandengrÃ¶ÃŸe fÃ¼r Operandencode Â»zÂ«"
  
! #: config/i386/i386.cc:13774
  #, c-format
  msgid "invalid operand type used with operand code '%c'"
  msgstr "ungÃ¼ltiger Operandentyp mit Operandencode Â»%cÂ« verwendet"
  
! #: config/i386/i386.cc:13779
  #, c-format
  msgid "invalid operand size for operand code '%c'"
  msgstr "ungÃ¼ltige OperandengrÃ¶ÃŸe fÃ¼r Operandencode Â»%cÂ«"
  
! #: config/i386/i386.cc:13857
  #, c-format
  msgid "operand is not a condition code, invalid operand code 'Y'"
  msgstr "Operand ist kein Bedingungscode, ungÃ¼ltiger Operandencode Â»YÂ«"
  
! #: config/i386/i386.cc:13936
  #, c-format
  msgid "operand is not a condition code, invalid operand code 'D'"
  msgstr "Operand ist kein Bedingungscode, ungÃ¼ltiger Operandencode Â»DÂ«"
  
! #: config/i386/i386.cc:13954
  #, c-format
  msgid "operand is not a condition code, invalid operand code '%c'"
  msgstr "Operand ist kein Bedingungscode, ungÃ¼ltiger Operandencode Â»%cÂ«"
  
! #: config/i386/i386.cc:13975
  #, c-format
  msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
  msgstr "Operand ist keine ausgleichbare Speicherreferenz, ungÃ¼ltiger Operandencode Â»HÂ«"
  
! #: config/i386/i386.cc:13990
  #, c-format
  msgid "operand is not an integer, invalid operand code 'K'"
  msgstr "Operand ist keine Ganzzahl, ungÃ¼ltiger Operandencode Â»KÂ«"
  
! #: config/i386/i386.cc:14018
  #, c-format
  msgid "operand is not a specific integer, invalid operand code 'r'"
  msgstr "Operand ist keine bestimmte Ganzzahl, ungÃ¼ltiger Operandencode Â»rÂ«"
  
! #: config/i386/i386.cc:14036
  #, c-format
  msgid "operand is not an integer, invalid operand code 'R'"
  msgstr "Operand ist keine Ganzzahl, ungÃ¼ltiger Operandencode Â»RÂ«"
  
! #: config/i386/i386.cc:14059
  #, c-format
  msgid "operand is not a specific integer, invalid operand code 'R'"
  msgstr "Operand ist keine bestimmte Ganzzahl, ungÃ¼ltiger Operandencode Â»RÂ«"
  
! #: config/i386/i386.cc:14152
  #, c-format
  msgid "invalid operand code '%c'"
  msgstr "ungÃ¼ltiger Operandencode Â»%cÂ«"
  
! #: config/i386/i386.cc:14214 config/i386/i386.cc:14603
  #, c-format
  msgid "invalid constraints for operand"
  msgstr "ungÃ¼ltige Bedingungen fÃ¼r Operand"
  
! #: config/i386/i386.cc:14315
  #, c-format
  msgid "invalid vector immediate"
  msgstr "ungÃ¼ltiger Vektordirektwert"
  
! #: config/i386/i386.cc:17485
  msgid "unknown insn mode"
  msgstr "unbekannter Befehlsmodus"
  
! #: config/i386/i386.cc:24023
  msgid "invalid conversion from type %<__bf16%> without option %<-msse2%>"
  msgstr "ungÃ¼ltige Umwandlung von Typ %<__bf16%> ohne Option %<-msse2%>"
  
! #: config/i386/i386.cc:24026
  msgid "invalid conversion from type %<_Float16%> without option %<-msse2%>"
  msgstr "ungÃ¼ltige Umwandlung von Typ %<_Float16%> ohne Option %<-msse2%>"
  
! #: config/i386/i386.cc:24029
  msgid "invalid conversion to type %<__bf16%> without option %<-msse2%>"
  msgstr "ungÃ¼ltige Umwandlung in Typ %<__bf16%> ohne Option %<-msse2%>"
  
! #: config/i386/i386.cc:24032
  msgid "invalid conversion to type %<_Float16%> without option %<-msse2%>"
  msgstr "ungÃ¼ltige Umwandlung in Typ %<_Float16%> ohne Option %<-msse2%>"
  
! #: config/i386/i386.cc:24070 config/i386/i386.cc:24095
  msgid "operation not permitted on type %<__bf16%> without option %<-msse2%>"
  msgstr "Operation nicht erlaubt auf Typ %<__bf16%> ohne Option %<-msse2%>"
  
! #: config/i386/i386.cc:24073 config/i386/i386.cc:24099
  msgid "operation not permitted on type %<_Float16%> without option %<-msse2%>"
  msgstr "Operation nicht erlaubt auf Typ %<_Float16%> ohne Option %<-msse2%>"
  
*************** msgstr "Falsche Adresse"
*** 20583,20618 ****
  msgid "lo_sum not of register"
  msgstr "lo_sum nicht von einem Register"
  
! #: config/microblaze/microblaze.cc:2299
  #, c-format
  msgid "unknown punctuation '%c'"
  msgstr "unbekanntes Zeichen Â»%cÂ«"
  
! #: config/microblaze/microblaze.cc:2308
  #, c-format
  msgid "null pointer"
  msgstr "Null-Zeiger"
  
! #: config/microblaze/microblaze.cc:2343
  #, c-format
  msgid "PRINT_OPERAND, invalid insn for %%C"
  msgstr "PRINT_OPERAND, ungÃ¼ltiger Befehl fÃ¼r %%C"
  
! #: config/microblaze/microblaze.cc:2372
  #, c-format
  msgid "PRINT_OPERAND, invalid insn for %%N"
  msgstr "PRINT_OPERAND, ungÃ¼ltiger Befehl fÃ¼r %%N"
  
! #: config/microblaze/microblaze.cc:2392 config/microblaze/microblaze.cc:2568
  msgid "insn contains an invalid address !"
  msgstr "Befehl enthÃ¤lt eine ungÃ¼ltige Adresse!"
  
! #: config/microblaze/microblaze.cc:2408 config/microblaze/microblaze.cc:2638
  #: config/xtensa/xtensa.cc:3240
  msgid "invalid address"
  msgstr "ungÃ¼ltige Adresse"
  
! #: config/microblaze/microblaze.cc:2511
  #, c-format
  msgid "letter %c was found & insn was not CONST_INT"
  msgstr "Buchstabe %c gefunden und Befehl war nicht CONST_INT"
--- 20594,20629 ----
  msgid "lo_sum not of register"
  msgstr "lo_sum nicht von einem Register"
  
! #: config/microblaze/microblaze.cc:2303
  #, c-format
  msgid "unknown punctuation '%c'"
  msgstr "unbekanntes Zeichen Â»%cÂ«"
  
! #: config/microblaze/microblaze.cc:2312
  #, c-format
  msgid "null pointer"
  msgstr "Null-Zeiger"
  
! #: config/microblaze/microblaze.cc:2347
  #, c-format
  msgid "PRINT_OPERAND, invalid insn for %%C"
  msgstr "PRINT_OPERAND, ungÃ¼ltiger Befehl fÃ¼r %%C"
  
! #: config/microblaze/microblaze.cc:2376
  #, c-format
  msgid "PRINT_OPERAND, invalid insn for %%N"
  msgstr "PRINT_OPERAND, ungÃ¼ltiger Befehl fÃ¼r %%N"
  
! #: config/microblaze/microblaze.cc:2396 config/microblaze/microblaze.cc:2572
  msgid "insn contains an invalid address !"
  msgstr "Befehl enthÃ¤lt eine ungÃ¼ltige Adresse!"
  
! #: config/microblaze/microblaze.cc:2412 config/microblaze/microblaze.cc:2642
  #: config/xtensa/xtensa.cc:3240
  msgid "invalid address"
  msgstr "ungÃ¼ltige Adresse"
  
! #: config/microblaze/microblaze.cc:2515
  #, c-format
  msgid "letter %c was found & insn was not CONST_INT"
  msgstr "Buchstabe %c gefunden und Befehl war nicht CONST_INT"
*************** msgstr "Unerlaubtes Mischen von IEEE-128
*** 20908,20938 ****
  msgid "AltiVec argument passed to unprototyped function"
  msgstr "AltiVec-Argument an Funktion ohne Prototyp Ã¼bergeben"
  
! #: config/rs6000/rs6000.cc:28020
  msgid "Could not generate addis value for fusion"
  msgstr "Addis-Wert fÃ¼r Fusion kann nicht erzeugt werden"
  
! #: config/rs6000/rs6000.cc:28089
  msgid "Unable to generate load/store offset for fusion"
  msgstr "Lade-/Speicheroffset fÃ¼r Fusion kann nicht generiert werden"
  
! #: config/rs6000/rs6000.cc:28165
  msgid "Bad GPR fusion"
  msgstr "Falsche GPR-Fusion"
  
! #: config/rs6000/rs6000.cc:28767
  msgid "invalid conversion from type %<__vector_quad%>"
  msgstr "ungÃ¼ltige Umwandlung von Typ %<__vector_quad%>"
  
! #: config/rs6000/rs6000.cc:28769
  msgid "invalid conversion to type %<__vector_quad%>"
  msgstr "ungÃ¼ltige Umwandlung in Typ %<__vector_quad%>"
  
! #: config/rs6000/rs6000.cc:28771
  msgid "invalid conversion from type %<__vector_pair%>"
  msgstr "ungÃ¼ltige Umwandlung von %<__vector_pair%>"
  
! #: config/rs6000/rs6000.cc:28773
  msgid "invalid conversion to type %<__vector_pair%>"
  msgstr "ungÃ¼ltige Umwandlung in %<__vector_pair%>"
  
--- 20919,20949 ----
  msgid "AltiVec argument passed to unprototyped function"
  msgstr "AltiVec-Argument an Funktion ohne Prototyp Ã¼bergeben"
  
! #: config/rs6000/rs6000.cc:28023
  msgid "Could not generate addis value for fusion"
  msgstr "Addis-Wert fÃ¼r Fusion kann nicht erzeugt werden"
  
! #: config/rs6000/rs6000.cc:28092
  msgid "Unable to generate load/store offset for fusion"
  msgstr "Lade-/Speicheroffset fÃ¼r Fusion kann nicht generiert werden"
  
! #: config/rs6000/rs6000.cc:28168
  msgid "Bad GPR fusion"
  msgstr "Falsche GPR-Fusion"
  
! #: config/rs6000/rs6000.cc:28770
  msgid "invalid conversion from type %<__vector_quad%>"
  msgstr "ungÃ¼ltige Umwandlung von Typ %<__vector_quad%>"
  
! #: config/rs6000/rs6000.cc:28772
  msgid "invalid conversion to type %<__vector_quad%>"
  msgstr "ungÃ¼ltige Umwandlung in Typ %<__vector_quad%>"
  
! #: config/rs6000/rs6000.cc:28774
  msgid "invalid conversion from type %<__vector_pair%>"
  msgstr "ungÃ¼ltige Umwandlung von %<__vector_pair%>"
  
! #: config/rs6000/rs6000.cc:28776
  msgid "invalid conversion to type %<__vector_pair%>"
  msgstr "ungÃ¼ltige Umwandlung in %<__vector_pair%>"
  
*************** msgstr "ungÃ¼ltiger Ausdruck fÃ¼r Ausgab
*** 21016,21034 ****
  msgid "vector argument passed to unprototyped function"
  msgstr "Vektor-Argument an Funktion ohne Prototyp Ã¼bergeben"
  
! #: config/s390/s390.cc:17350
  msgid "types differ in signedness"
  msgstr "Typen unterscheiden sich im Vorzeichenbesitz"
  
! #: config/s390/s390.cc:17360
  msgid "binary operator does not support two vector bool operands"
  msgstr "binÃ¤rer Operator unterstÃ¼tzt keine zwei bool-Vektor-Operanden"
  
! #: config/s390/s390.cc:17363
  msgid "binary operator does not support vector bool operand"
  msgstr "BinÃ¤rer Operator unterstÃ¼tzt Boolean-Vektor-Argument nicht"
  
! #: config/s390/s390.cc:17371
  msgid "binary operator does not support mixing vector bool with floating point vector operands"
  msgstr "binÃ¤rer Operator unterstÃ¼tzt nicht, dass bool-Vektor mit Gleitkommavektor vermischt wird"
  
--- 21027,21045 ----
  msgid "vector argument passed to unprototyped function"
  msgstr "Vektor-Argument an Funktion ohne Prototyp Ã¼bergeben"
  
! #: config/s390/s390.cc:17377
  msgid "types differ in signedness"
  msgstr "Typen unterscheiden sich im Vorzeichenbesitz"
  
! #: config/s390/s390.cc:17387
  msgid "binary operator does not support two vector bool operands"
  msgstr "binÃ¤rer Operator unterstÃ¼tzt keine zwei bool-Vektor-Operanden"
  
! #: config/s390/s390.cc:17390
  msgid "binary operator does not support vector bool operand"
  msgstr "BinÃ¤rer Operator unterstÃ¼tzt Boolean-Vektor-Argument nicht"
  
! #: config/s390/s390.cc:17398
  msgid "binary operator does not support mixing vector bool with floating point vector operands"
  msgstr "binÃ¤rer Operator unterstÃ¼tzt nicht, dass bool-Vektor mit Gleitkommavektor vermischt wird"
  
*************** msgstr "{fehlerhaft}"
*** 21199,21205 ****
  msgid "aka"
  msgstr "alias"
  
! #: c/c-objc-common.cc:385 c/c-typeck.cc:7714
  msgid "({anonymous})"
  msgstr "({anonym})"
  
--- 21210,21216 ----
  msgid "aka"
  msgstr "alias"
  
! #: c/c-objc-common.cc:385 c/c-typeck.cc:7715
  msgid "({anonymous})"
  msgstr "({anonym})"
  
*************** msgstr "({anonym})"
*** 21212,21249 ****
  #. ;
  #. <~~~~~~~~~ declaration ~~~~~~~~~~>
  #. Use c_parser_require to get an error with a fix-it hint.
! #: c/c-parser.cc:3089 c/c-parser.cc:3279 c/c-parser.cc:3293 c/c-parser.cc:7502
! #: c/c-parser.cc:8356 c/c-parser.cc:8934 c/c-parser.cc:9126 c/c-parser.cc:9159
! #: c/c-parser.cc:9457 c/c-parser.cc:14304 c/c-parser.cc:14339
! #: c/c-parser.cc:14370 c/c-parser.cc:14417 c/c-parser.cc:14598
! #: c/c-parser.cc:15431 c/c-parser.cc:15506 c/c-parser.cc:15549
! #: c/c-parser.cc:23037 c/c-parser.cc:23117 c/c-parser.cc:23446
! #: c/c-parser.cc:23472 c/c-parser.cc:23495 c/c-parser.cc:24181
! #: c/c-parser.cc:24224 c/c-parser.cc:25491 c/gimple-parser.cc:454
  #: c/gimple-parser.cc:495 c/gimple-parser.cc:504 c/gimple-parser.cc:723
  #: c/gimple-parser.cc:2437 c/gimple-parser.cc:2474 c/gimple-parser.cc:2553
! #: c/gimple-parser.cc:2580 c/c-parser.cc:4141 c/c-parser.cc:4332
! #: c/c-parser.cc:4367 c/c-parser.cc:14591 c/gimple-parser.cc:2244
! #: c/gimple-parser.cc:2256 cp/parser.cc:16475 cp/parser.cc:34635
! #: cp/parser.cc:35274
  #, gcc-internal-format
  msgid "expected %<;%>"
  msgstr "%<;%> erwartet"
  
! #: c/c-parser.cc:3251 c/c-parser.cc:9417
  #, gcc-internal-format
  msgid "expected %<:%> or %<)%>"
  msgstr "%<:%> oder %<)%> erwartet"
  
! #: c/c-parser.cc:3790 c/c-parser.cc:4943 c/c-parser.cc:5135 c/c-parser.cc:5193
! #: c/c-parser.cc:5251 c/c-parser.cc:5635 c/c-parser.cc:5658 c/c-parser.cc:5667
! #: c/c-parser.cc:5718 c/c-parser.cc:5727 c/c-parser.cc:10892
! #: c/c-parser.cc:10978 c/c-parser.cc:11552 c/c-parser.cc:11578
! #: c/c-parser.cc:11612 c/c-parser.cc:11825 c/c-parser.cc:12697
! #: c/c-parser.cc:14705 c/c-parser.cc:17345 c/c-parser.cc:18080
! #: c/c-parser.cc:18139 c/c-parser.cc:18194 c/c-parser.cc:20053
! #: c/c-parser.cc:20173 c/c-parser.cc:22130 c/c-parser.cc:23537
! #: c/c-parser.cc:24189 c/c-parser.cc:28016 c/c-parser.cc:28098
  #: c/gimple-parser.cc:238 c/gimple-parser.cc:241 c/gimple-parser.cc:589
  #: c/gimple-parser.cc:623 c/gimple-parser.cc:628 c/gimple-parser.cc:807
  #: c/gimple-parser.cc:904 c/gimple-parser.cc:1175 c/gimple-parser.cc:1201
--- 21223,21260 ----
  #. ;
  #. <~~~~~~~~~ declaration ~~~~~~~~~~>
  #. Use c_parser_require to get an error with a fix-it hint.
! #: c/c-parser.cc:3134 c/c-parser.cc:3324 c/c-parser.cc:3338 c/c-parser.cc:7547
! #: c/c-parser.cc:8401 c/c-parser.cc:8979 c/c-parser.cc:9171 c/c-parser.cc:9204
! #: c/c-parser.cc:9502 c/c-parser.cc:14349 c/c-parser.cc:14384
! #: c/c-parser.cc:14415 c/c-parser.cc:14462 c/c-parser.cc:14643
! #: c/c-parser.cc:15476 c/c-parser.cc:15551 c/c-parser.cc:15594
! #: c/c-parser.cc:23082 c/c-parser.cc:23162 c/c-parser.cc:23491
! #: c/c-parser.cc:23517 c/c-parser.cc:23540 c/c-parser.cc:24226
! #: c/c-parser.cc:24269 c/c-parser.cc:25536 c/gimple-parser.cc:454
  #: c/gimple-parser.cc:495 c/gimple-parser.cc:504 c/gimple-parser.cc:723
  #: c/gimple-parser.cc:2437 c/gimple-parser.cc:2474 c/gimple-parser.cc:2553
! #: c/gimple-parser.cc:2580 c/c-parser.cc:4186 c/c-parser.cc:4377
! #: c/c-parser.cc:4412 c/c-parser.cc:14636 c/gimple-parser.cc:2244
! #: c/gimple-parser.cc:2256 cp/parser.cc:16479 cp/parser.cc:34694
! #: cp/parser.cc:35333
  #, gcc-internal-format
  msgid "expected %<;%>"
  msgstr "%<;%> erwartet"
  
! #: c/c-parser.cc:3296 c/c-parser.cc:9462
  #, gcc-internal-format
  msgid "expected %<:%> or %<)%>"
  msgstr "%<:%> oder %<)%> erwartet"
  
! #: c/c-parser.cc:3835 c/c-parser.cc:4988 c/c-parser.cc:5180 c/c-parser.cc:5238
! #: c/c-parser.cc:5296 c/c-parser.cc:5680 c/c-parser.cc:5703 c/c-parser.cc:5712
! #: c/c-parser.cc:5763 c/c-parser.cc:5772 c/c-parser.cc:10937
! #: c/c-parser.cc:11023 c/c-parser.cc:11597 c/c-parser.cc:11623
! #: c/c-parser.cc:11657 c/c-parser.cc:11870 c/c-parser.cc:12742
! #: c/c-parser.cc:14750 c/c-parser.cc:17390 c/c-parser.cc:18125
! #: c/c-parser.cc:18184 c/c-parser.cc:18239 c/c-parser.cc:20098
! #: c/c-parser.cc:20218 c/c-parser.cc:22175 c/c-parser.cc:23582
! #: c/c-parser.cc:24234 c/c-parser.cc:28062 c/c-parser.cc:28144
  #: c/gimple-parser.cc:238 c/gimple-parser.cc:241 c/gimple-parser.cc:589
  #: c/gimple-parser.cc:623 c/gimple-parser.cc:628 c/gimple-parser.cc:807
  #: c/gimple-parser.cc:904 c/gimple-parser.cc:1175 c/gimple-parser.cc:1201
*************** msgstr "%<:%> oder %<)%> erwartet"
*** 21251,21400 ****
  #: c/gimple-parser.cc:1592 c/gimple-parser.cc:1608 c/gimple-parser.cc:1664
  #: c/gimple-parser.cc:1691 c/gimple-parser.cc:1721 c/gimple-parser.cc:1747
  #: c/gimple-parser.cc:1954 c/gimple-parser.cc:2166 c/gimple-parser.cc:2186
! #: c/gimple-parser.cc:2347 c/gimple-parser.cc:2510 c/c-parser.cc:3242
! #: c/c-parser.cc:9409 c/c-parser.cc:20746 cp/parser.cc:35322 cp/parser.cc:43032
  #, gcc-internal-format
  msgid "expected %<)%>"
  msgstr "%<)%> erwartet"
  
! #: c/c-parser.cc:5029 c/c-parser.cc:5778 c/c-parser.cc:6138 c/c-parser.cc:6156
! #: c/c-parser.cc:6157 c/c-parser.cc:6660 c/c-parser.cc:6704 c/c-parser.cc:9508
! #: c/c-parser.cc:11816 c/c-parser.cc:13270 c/c-parser.cc:13642
! #: c/c-parser.cc:16667 c/gimple-parser.cc:1930 cp/parser.cc:35286
  #, gcc-internal-format
  msgid "expected %<]%>"
  msgstr "%<]%> erwartet"
  
! #: c/c-parser.cc:5231
  msgid "expected %<;%>, %<,%> or %<)%>"
  msgstr "%<;%>, %<,%> oder %<)%> erwartet"
  
  #. Look for the two `(' tokens.
! #: c/c-parser.cc:5687 c/c-parser.cc:5692 c/c-parser.cc:17328
! #: c/c-parser.cc:18169 c/c-parser.cc:20554 c/c-parser.cc:20653
! #: c/c-parser.cc:26832 c/c-parser.cc:27136 c/c-parser.cc:27824
! #: c/c-parser.cc:28041 c/gimple-parser.cc:223 c/gimple-parser.cc:536
  #: c/gimple-parser.cc:575 c/gimple-parser.cc:607 c/gimple-parser.cc:874
  #: c/gimple-parser.cc:1169 c/gimple-parser.cc:1195 c/gimple-parser.cc:1322
  #: c/gimple-parser.cc:1457 c/gimple-parser.cc:1582 c/gimple-parser.cc:1687
  #: c/gimple-parser.cc:1705 c/gimple-parser.cc:1740 c/gimple-parser.cc:2135
  #: c/gimple-parser.cc:2146 c/gimple-parser.cc:2152 c/gimple-parser.cc:2335
! #: c/gimple-parser.cc:2507 c/c-parser.cc:17109 cp/parser.cc:35277
  #, gcc-internal-format
  msgid "expected %<(%>"
  msgstr "%<(%> erwartet"
  
! #: c/c-parser.cc:6134 c/c-parser.cc:6136 c/c-parser.cc:16572 cp/parser.cc:35289
! #: cp/parser.cc:39179 go/gofrontend/embed.cc:440
  #, gcc-internal-format
  msgid "expected %<[%>"
  msgstr "%<[%> erwartet"
  
! #: c/c-parser.cc:6964 c/c-parser.cc:14934 c/c-parser.cc:20630
! #: c/c-parser.cc:23012 c/c-parser.cc:23098 c/c-parser.cc:23859
! #: c/c-parser.cc:24999 c/c-parser.cc:29820 c/gimple-parser.cc:447
! #: c/gimple-parser.cc:2513 c/c-parser.cc:4128 c/c-parser.cc:4356
! #: c/c-parser.cc:14486 cp/parser.cc:22203 cp/parser.cc:35283
  #: go/gofrontend/embed.cc:371
  #, gcc-internal-format
  msgid "expected %<{%>"
  msgstr "%<{%> erwartet"
  
! #: c/c-parser.cc:7914 c/c-parser.cc:7923 c/c-parser.cc:9957 c/c-parser.cc:11136
! #: c/c-parser.cc:14698 c/c-parser.cc:15095 c/c-parser.cc:15159
! #: c/c-parser.cc:16649 c/c-parser.cc:17760 c/c-parser.cc:17997
! #: c/c-parser.cc:18550 c/c-parser.cc:18653 c/c-parser.cc:19194
! #: c/c-parser.cc:19630 c/c-parser.cc:19706 c/c-parser.cc:19823
! #: c/c-parser.cc:19895 c/c-parser.cc:20868 c/c-parser.cc:26702
! #: c/c-parser.cc:27881 c/c-parser.cc:27940 c/c-parser.cc:29142
! #: c/gimple-parser.cc:630 c/gimple-parser.cc:943 c/gimple-parser.cc:2561
! #: c/gimple-parser.cc:2588 c/c-parser.cc:9416 c/c-parser.cc:17253
! #: c/c-parser.cc:18658 cp/parser.cc:35316 cp/parser.cc:37023 cp/parser.cc:40119
! #: cp/parser.cc:41012 go/gofrontend/embed.cc:404
  #, gcc-internal-format
  msgid "expected %<:%>"
  msgstr "%<:%> erwartet"
  
! #: c/c-parser.cc:8910 cp/parser.cc:35203
  #, gcc-internal-format
  msgid "expected %<while%>"
  msgstr "%<while%> erwartet"
  
! #: c/c-parser.cc:10855 c/c-parser.cc:11085 c/c-parser.cc:11602
! #: c/c-parser.cc:11647 c/c-parser.cc:11740 c/c-parser.cc:11887
! #: c/c-parser.cc:12687 c/c-parser.cc:18174 c/c-parser.cc:19775
  #: c/gimple-parser.cc:1172 c/gimple-parser.cc:1198 c/gimple-parser.cc:1326
  #: c/gimple-parser.cc:1329 c/gimple-parser.cc:1709 c/gimple-parser.cc:1715
! #: cp/parser.cc:34633 cp/parser.cc:35292
  #, gcc-internal-format
  msgid "expected %<,%>"
  msgstr "%<,%> erwartet"
  
! #: c/c-parser.cc:11496
  msgid "expected %<.%>"
  msgstr "%<.%> erwartet"
  
! #: c/c-parser.cc:14157 c/c-parser.cc:14189 c/c-parser.cc:14429
! #: cp/parser.cc:37597 cp/parser.cc:37618
  #, gcc-internal-format
  msgid "expected %<@end%>"
  msgstr "%<@end%> erwartet"
  
! #: c/c-parser.cc:14847 c/gimple-parser.cc:1497 cp/parser.cc:35301
  #, gcc-internal-format
  msgid "expected %<>%>"
  msgstr "%<>%> erwartet"
  
! #: c/c-parser.cc:18748 c/c-parser.cc:20191 c/c-parser.cc:20617
! #: cp/parser.cc:35325 cp/parser.cc:42883
  #, gcc-internal-format
  msgid "expected %<,%> or %<)%>"
  msgstr "%<,%> oder %<)%> erwartet"
  
  #. All following cases are statements with LHS.
! #: c/c-parser.cc:19622 c/c-parser.cc:22907 c/c-parser.cc:22952
! #: c/c-parser.cc:23109 c/c-parser.cc:23456 c/c-parser.cc:24168
! #: c/c-parser.cc:25374 c/c-parser.cc:26880 c/c-parser.cc:28082
! #: c/gimple-parser.cc:798 c/c-parser.cc:6727 c/c-parser.cc:23029
! #: c/c-parser.cc:23252 cp/parser.cc:35304 cp/parser.cc:44578 cp/parser.cc:44751
  #, gcc-internal-format
  msgid "expected %<=%>"
  msgstr "%<=%> erwartet"
  
! #: c/c-parser.cc:20767 c/c-parser.cc:27145 c/c-parser.cc:27166
! #: c/c-parser.cc:16707 c/c-parser.cc:16719 c/c-parser.cc:20747
! #: cp/parser.cc:43033 cp/parser.cc:43060 cp/parser.cc:50600 cp/parser.cc:50611
  #, gcc-internal-format
  msgid "expected %<)%> or %<,%>"
  msgstr "%<)%> oder %<,%> erwartet"
  
! #: c/c-parser.cc:23040 c/c-parser.cc:23120 c/c-parser.cc:23473
! #: c/c-parser.cc:23928 c/gimple-parser.cc:1763 c/gimple-parser.cc:1795
! #: c/gimple-parser.cc:1805 c/gimple-parser.cc:2598 cp/parser.cc:35280
! #: cp/parser.cc:37807
  #, gcc-internal-format
  msgid "expected %<}%>"
  msgstr "%<}%> erwartet"
  
! #: c/c-parser.cc:23133 cp/parser.cc:44676
  #, gcc-internal-format
  msgid "expected %<else%>"
  msgstr "%<else%> erwartet"
  
! #: c/c-parser.cc:25046 c/c-parser.cc:25035 cp/parser.cc:47606
  #, gcc-internal-format
  msgid "expected %<#pragma omp section%> or %<}%>"
  msgstr "%<#pragma omp section%> oder %<}%> erwartet"
  
! #: c/c-parser.cc:28760 cp/parser.cc:52554
  msgid "<message unknown at compile time>"
  msgstr "<Meldung nicht zur Compilierzeit bekannt>"
  
! #: c/c-typeck.cc:9863
  msgid "(anonymous)"
  msgstr "(anonym)"
  
! #: c/gimple-parser.cc:1486 cp/parser.cc:19538 cp/parser.cc:35298
  #, gcc-internal-format
  msgid "expected %<<%>"
  msgstr "%<<%> erwartet"
--- 21262,21412 ----
  #: c/gimple-parser.cc:1592 c/gimple-parser.cc:1608 c/gimple-parser.cc:1664
  #: c/gimple-parser.cc:1691 c/gimple-parser.cc:1721 c/gimple-parser.cc:1747
  #: c/gimple-parser.cc:1954 c/gimple-parser.cc:2166 c/gimple-parser.cc:2186
! #: c/gimple-parser.cc:2347 c/gimple-parser.cc:2510 c/c-parser.cc:3287
! #: c/c-parser.cc:9454 c/c-parser.cc:20791 cp/parser.cc:35381 cp/parser.cc:43091
  #, gcc-internal-format
  msgid "expected %<)%>"
  msgstr "%<)%> erwartet"
  
! #: c/c-parser.cc:5074 c/c-parser.cc:5823 c/c-parser.cc:6183 c/c-parser.cc:6201
! #: c/c-parser.cc:6202 c/c-parser.cc:6705 c/c-parser.cc:6749 c/c-parser.cc:9553
! #: c/c-parser.cc:11861 c/c-parser.cc:13315 c/c-parser.cc:13687
! #: c/c-parser.cc:16712 c/gimple-parser.cc:1930 cp/parser.cc:35345
  #, gcc-internal-format
  msgid "expected %<]%>"
  msgstr "%<]%> erwartet"
  
! #: c/c-parser.cc:5276
  msgid "expected %<;%>, %<,%> or %<)%>"
  msgstr "%<;%>, %<,%> oder %<)%> erwartet"
  
  #. Look for the two `(' tokens.
! #: c/c-parser.cc:5732 c/c-parser.cc:5737 c/c-parser.cc:17373
! #: c/c-parser.cc:18214 c/c-parser.cc:20599 c/c-parser.cc:20698
! #: c/c-parser.cc:26875 c/c-parser.cc:27182 c/c-parser.cc:27870
! #: c/c-parser.cc:28087 c/gimple-parser.cc:223 c/gimple-parser.cc:536
  #: c/gimple-parser.cc:575 c/gimple-parser.cc:607 c/gimple-parser.cc:874
  #: c/gimple-parser.cc:1169 c/gimple-parser.cc:1195 c/gimple-parser.cc:1322
  #: c/gimple-parser.cc:1457 c/gimple-parser.cc:1582 c/gimple-parser.cc:1687
  #: c/gimple-parser.cc:1705 c/gimple-parser.cc:1740 c/gimple-parser.cc:2135
  #: c/gimple-parser.cc:2146 c/gimple-parser.cc:2152 c/gimple-parser.cc:2335
! #: c/gimple-parser.cc:2507 c/c-parser.cc:17154 cp/parser.cc:35336
  #, gcc-internal-format
  msgid "expected %<(%>"
  msgstr "%<(%> erwartet"
  
! #: c/c-parser.cc:6179 c/c-parser.cc:6181 c/c-parser.cc:16617 cp/parser.cc:35348
! #: cp/parser.cc:39238 go/gofrontend/embed.cc:440
  #, gcc-internal-format
  msgid "expected %<[%>"
  msgstr "%<[%> erwartet"
  
! #: c/c-parser.cc:7009 c/c-parser.cc:14979 c/c-parser.cc:20675
! #: c/c-parser.cc:23057 c/c-parser.cc:23143 c/c-parser.cc:23904
! #: c/c-parser.cc:25044 c/c-parser.cc:29863 c/gimple-parser.cc:447
! #: c/gimple-parser.cc:2513 c/c-parser.cc:4173 c/c-parser.cc:4401
! #: c/c-parser.cc:14531 cp/parser.cc:22207 cp/parser.cc:35342
  #: go/gofrontend/embed.cc:371
  #, gcc-internal-format
  msgid "expected %<{%>"
  msgstr "%<{%> erwartet"
  
! #: c/c-parser.cc:7959 c/c-parser.cc:7968 c/c-parser.cc:10002
! #: c/c-parser.cc:11181 c/c-parser.cc:14743 c/c-parser.cc:15140
! #: c/c-parser.cc:15204 c/c-parser.cc:16694 c/c-parser.cc:17805
! #: c/c-parser.cc:18042 c/c-parser.cc:18595 c/c-parser.cc:18698
! #: c/c-parser.cc:19239 c/c-parser.cc:19675 c/c-parser.cc:19751
! #: c/c-parser.cc:19868 c/c-parser.cc:19940 c/c-parser.cc:20913
! #: c/c-parser.cc:26747 c/c-parser.cc:27927 c/c-parser.cc:27986
! #: c/c-parser.cc:29185 c/gimple-parser.cc:630 c/gimple-parser.cc:943
! #: c/gimple-parser.cc:2561 c/gimple-parser.cc:2588 c/c-parser.cc:9461
! #: c/c-parser.cc:17298 c/c-parser.cc:18703 cp/parser.cc:35375
! #: cp/parser.cc:37082 cp/parser.cc:40178 cp/parser.cc:41071
! #: go/gofrontend/embed.cc:404
  #, gcc-internal-format
  msgid "expected %<:%>"
  msgstr "%<:%> erwartet"
  
! #: c/c-parser.cc:8955 cp/parser.cc:35262
  #, gcc-internal-format
  msgid "expected %<while%>"
  msgstr "%<while%> erwartet"
  
! #: c/c-parser.cc:10900 c/c-parser.cc:11130 c/c-parser.cc:11647
! #: c/c-parser.cc:11692 c/c-parser.cc:11785 c/c-parser.cc:11932
! #: c/c-parser.cc:12732 c/c-parser.cc:18219 c/c-parser.cc:19820
  #: c/gimple-parser.cc:1172 c/gimple-parser.cc:1198 c/gimple-parser.cc:1326
  #: c/gimple-parser.cc:1329 c/gimple-parser.cc:1709 c/gimple-parser.cc:1715
! #: cp/parser.cc:34692 cp/parser.cc:35351
  #, gcc-internal-format
  msgid "expected %<,%>"
  msgstr "%<,%> erwartet"
  
! #: c/c-parser.cc:11541
  msgid "expected %<.%>"
  msgstr "%<.%> erwartet"
  
! #: c/c-parser.cc:14202 c/c-parser.cc:14234 c/c-parser.cc:14474
! #: cp/parser.cc:37656 cp/parser.cc:37677
  #, gcc-internal-format
  msgid "expected %<@end%>"
  msgstr "%<@end%> erwartet"
  
! #: c/c-parser.cc:14892 c/gimple-parser.cc:1497 cp/parser.cc:35360
  #, gcc-internal-format
  msgid "expected %<>%>"
  msgstr "%<>%> erwartet"
  
! #: c/c-parser.cc:18793 c/c-parser.cc:20236 c/c-parser.cc:20662
! #: cp/parser.cc:35384 cp/parser.cc:42942
  #, gcc-internal-format
  msgid "expected %<,%> or %<)%>"
  msgstr "%<,%> oder %<)%> erwartet"
  
  #. All following cases are statements with LHS.
! #: c/c-parser.cc:19667 c/c-parser.cc:22952 c/c-parser.cc:22997
! #: c/c-parser.cc:23154 c/c-parser.cc:23501 c/c-parser.cc:24213
! #: c/c-parser.cc:25419 c/c-parser.cc:26923 c/c-parser.cc:28128
! #: c/gimple-parser.cc:798 c/c-parser.cc:6772 c/c-parser.cc:23074
! #: c/c-parser.cc:23297 cp/parser.cc:35363 cp/parser.cc:44637 cp/parser.cc:44810
  #, gcc-internal-format
  msgid "expected %<=%>"
  msgstr "%<=%> erwartet"
  
! #: c/c-parser.cc:20812 c/c-parser.cc:27191 c/c-parser.cc:27212
! #: c/c-parser.cc:16752 c/c-parser.cc:16764 c/c-parser.cc:20792
! #: cp/parser.cc:43092 cp/parser.cc:43119 cp/parser.cc:50659 cp/parser.cc:50670
  #, gcc-internal-format
  msgid "expected %<)%> or %<,%>"
  msgstr "%<)%> oder %<,%> erwartet"
  
! #: c/c-parser.cc:23085 c/c-parser.cc:23165 c/c-parser.cc:23518
! #: c/c-parser.cc:23973 c/gimple-parser.cc:1763 c/gimple-parser.cc:1795
! #: c/gimple-parser.cc:1805 c/gimple-parser.cc:2598 cp/parser.cc:35339
! #: cp/parser.cc:37866
  #, gcc-internal-format
  msgid "expected %<}%>"
  msgstr "%<}%> erwartet"
  
! #: c/c-parser.cc:23178 cp/parser.cc:44735
  #, gcc-internal-format
  msgid "expected %<else%>"
  msgstr "%<else%> erwartet"
  
! #: c/c-parser.cc:25091 c/c-parser.cc:25080 cp/parser.cc:47665
  #, gcc-internal-format
  msgid "expected %<#pragma omp section%> or %<}%>"
  msgstr "%<#pragma omp section%> oder %<}%> erwartet"
  
! #: c/c-parser.cc:28806 cp/parser.cc:52607
  msgid "<message unknown at compile time>"
  msgstr "<Meldung nicht zur Compilierzeit bekannt>"
  
! #: c/c-typeck.cc:9880
  msgid "(anonymous)"
  msgstr "(anonym)"
  
! #: c/gimple-parser.cc:1486 cp/parser.cc:19542 cp/parser.cc:35357
  #, gcc-internal-format
  msgid "expected %<<%>"
  msgstr "%<<%> erwartet"
*************** msgstr "%<<%> erwartet"
*** 21405,21414 ****
  msgid "expected label"
  msgstr "Sprungmarke erwartet"
  
! #: cobol/gcobolspec.cc:544
  #, c-format
! msgid "Driving: (%ld)\n"
! msgstr "AusfÃ¼hren: (%ld)\n"
  
  #: cp/call.cc:4225
  #, c-format
--- 21417,21426 ----
  msgid "expected label"
  msgstr "Sprungmarke erwartet"
  
! #: cobol/gcobolspec.cc:554
  #, c-format
! msgid "Driving: ("
! msgstr "Angesteuert: ("
  
  #: cp/call.cc:4225
  #, c-format
*************** msgstr "Kandidat %i:"
*** 21419,21425 ****
  msgid "  after user-defined conversion:"
  msgstr "  nach benutzerdefinierter Umwandlung:"
  
! #: cp/call.cc:8724 cp/pt.cc:2064 cp/pt.cc:26956
  msgid "candidate is:"
  msgid_plural "candidates are:"
  msgstr[0] "Kandidat ist:"
--- 21431,21437 ----
  msgid "  after user-defined conversion:"
  msgstr "  nach benutzerdefinierter Umwandlung:"
  
! #: cp/call.cc:8724 cp/pt.cc:2064 cp/pt.cc:26986
  msgid "candidate is:"
  msgid_plural "candidates are:"
  msgstr[0] "Kandidat ist:"
*************** msgstr "<Template-Parameter-Fehler>"
*** 21519,21525 ****
  msgid "<statement>"
  msgstr "<Anweisung>"
  
! #: cp/error.cc:2381 cp/error.cc:3503 c-family/c-pretty-print.cc:2694
  #, gcc-internal-format
  msgid "<unknown>"
  msgstr "<unbekannt>"
--- 21531,21537 ----
  msgid "<statement>"
  msgstr "<Anweisung>"
  
! #: cp/error.cc:2381 cp/error.cc:3524 c-family/c-pretty-print.cc:2694
  #, gcc-internal-format
  msgid "<unknown>"
  msgstr "<unbekannt>"
*************** msgstr "<lambda>"
*** 21546,21560 ****
  msgid "*this"
  msgstr "*this"
  
! #: cp/error.cc:3227
  msgid "<expression error>"
  msgstr "<Ausdrucksfehler>"
  
! #: cp/error.cc:3242
  msgid "<unknown operator>"
  msgstr "<unbekannter Operator>"
  
! #: cp/error.cc:3732
  msgid "At global scope:"
  msgstr "Im globalen GÃ¼ltigkeitsbereich:"
  
--- 21558,21572 ----
  msgid "*this"
  msgstr "*this"
  
! #: cp/error.cc:3248
  msgid "<expression error>"
  msgstr "<Ausdrucksfehler>"
  
! #: cp/error.cc:3263
  msgid "<unknown operator>"
  msgstr "<unbekannter Operator>"
  
! #: cp/error.cc:3753
  msgid "At global scope:"
  msgstr "Im globalen GÃ¼ltigkeitsbereich:"
  
*************** msgstr "Im globalen GÃ¼ltigkeitsbereich:
*** 21562,21649 ****
  msgid "candidates are:"
  msgstr "Kandidaten sind:"
  
! #: cp/rtti.cc:588
  msgid "target is not pointer or reference to class"
  msgstr "Ziel ist kein Zeiger oder Referenz auf Klasse"
  
! #: cp/rtti.cc:593
  msgid "target is not pointer or reference to complete type"
  msgstr "Ziel ist kein Zeiger oder Referenz auf vollstÃ¤ndigen Typen"
  
! #: cp/rtti.cc:599
  msgid "target is not pointer or reference"
  msgstr "Ziel ist kein Zeiger oder Referenz"
  
! #: cp/rtti.cc:615
  msgid "source is not a pointer"
  msgstr "Quelle ist kein Zeiger"
  
! #: cp/rtti.cc:620
  msgid "source is not a pointer to class"
  msgstr "Quelle ist kein Zeiger auf Klasse"
  
! #: cp/rtti.cc:625
  msgid "source is a pointer to incomplete type"
  msgstr "Quelle ist ein Zeiger auf unvollstÃ¤ndigen Typen"
  
! #: cp/rtti.cc:638
  msgid "source is not of class type"
  msgstr "Quelle hat nicht Klassentypen"
  
! #: cp/rtti.cc:643
  msgid "source is of incomplete class type"
  msgstr "Quelle hat unvollstÃ¤ndigen Klassentypen"
  
! #: cp/rtti.cc:654
  msgid "conversion casts away constness"
  msgstr "Umformung verwirft Konstantheit"
  
! #: cp/rtti.cc:816
  msgid "source type is not polymorphic"
  msgstr "Quellentyp ist nicht polymorph"
  
! #: cp/typeck.cc:7524 c/c-typeck.cc:5303
  #, gcc-internal-format
  msgid "wrong type argument to unary minus"
  msgstr "Argument falschen Typs fÃ¼r unÃ¤res Minus"
  
! #: cp/typeck.cc:7525 c/c-typeck.cc:5289
  #, gcc-internal-format
  msgid "wrong type argument to unary plus"
  msgstr "Argument falschen Typs fÃ¼r unÃ¤res Plus"
  
! #: cp/typeck.cc:7552 c/c-typeck.cc:5348
  #, gcc-internal-format
  msgid "wrong type argument to bit-complement"
  msgstr "Argument falschen Typs fÃ¼r Bit-Komplement"
  
! #: cp/typeck.cc:7572 c/c-typeck.cc:5356
  #, gcc-internal-format
  msgid "wrong type argument to abs"
  msgstr "Argument falschen Typs fÃ¼r abs"
  
! #: cp/typeck.cc:7584 c/c-typeck.cc:5378
  #, gcc-internal-format
  msgid "wrong type argument to conjugation"
  msgstr "Argument falschen Typs fÃ¼r Konjugation"
  
! #: cp/typeck.cc:7608
  msgid "in argument to unary !"
  msgstr "in Argument fÃ¼r unÃ¤res !"
  
! #: cp/typeck.cc:7657
  msgid "no pre-increment operator for type"
  msgstr "kein PrÃ¤inkrementoperator fÃ¼r Typ"
  
! #: cp/typeck.cc:7659
  msgid "no post-increment operator for type"
  msgstr "kein Postinkrementoperator fÃ¼r Typ"
  
! #: cp/typeck.cc:7661
  msgid "no pre-decrement operator for type"
  msgstr "kein PrÃ¤dekrementoperator fÃ¼r Typ"
  
! #: cp/typeck.cc:7663
  msgid "no post-decrement operator for type"
  msgstr "kein Postdekrementoperator fÃ¼r Typ"
  
--- 21574,21661 ----
  msgid "candidates are:"
  msgstr "Kandidaten sind:"
  
! #: cp/rtti.cc:589
  msgid "target is not pointer or reference to class"
  msgstr "Ziel ist kein Zeiger oder Referenz auf Klasse"
  
! #: cp/rtti.cc:594
  msgid "target is not pointer or reference to complete type"
  msgstr "Ziel ist kein Zeiger oder Referenz auf vollstÃ¤ndigen Typen"
  
! #: cp/rtti.cc:600
  msgid "target is not pointer or reference"
  msgstr "Ziel ist kein Zeiger oder Referenz"
  
! #: cp/rtti.cc:616
  msgid "source is not a pointer"
  msgstr "Quelle ist kein Zeiger"
  
! #: cp/rtti.cc:621
  msgid "source is not a pointer to class"
  msgstr "Quelle ist kein Zeiger auf Klasse"
  
! #: cp/rtti.cc:626
  msgid "source is a pointer to incomplete type"
  msgstr "Quelle ist ein Zeiger auf unvollstÃ¤ndigen Typen"
  
! #: cp/rtti.cc:639
  msgid "source is not of class type"
  msgstr "Quelle hat nicht Klassentypen"
  
! #: cp/rtti.cc:644
  msgid "source is of incomplete class type"
  msgstr "Quelle hat unvollstÃ¤ndigen Klassentypen"
  
! #: cp/rtti.cc:655
  msgid "conversion casts away constness"
  msgstr "Umformung verwirft Konstantheit"
  
! #: cp/rtti.cc:817
  msgid "source type is not polymorphic"
  msgstr "Quellentyp ist nicht polymorph"
  
! #: cp/typeck.cc:7640 c/c-typeck.cc:5304
  #, gcc-internal-format
  msgid "wrong type argument to unary minus"
  msgstr "Argument falschen Typs fÃ¼r unÃ¤res Minus"
  
! #: cp/typeck.cc:7641 c/c-typeck.cc:5290
  #, gcc-internal-format
  msgid "wrong type argument to unary plus"
  msgstr "Argument falschen Typs fÃ¼r unÃ¤res Plus"
  
! #: cp/typeck.cc:7668 c/c-typeck.cc:5349
  #, gcc-internal-format
  msgid "wrong type argument to bit-complement"
  msgstr "Argument falschen Typs fÃ¼r Bit-Komplement"
  
! #: cp/typeck.cc:7688 c/c-typeck.cc:5357
  #, gcc-internal-format
  msgid "wrong type argument to abs"
  msgstr "Argument falschen Typs fÃ¼r abs"
  
! #: cp/typeck.cc:7700 c/c-typeck.cc:5379
  #, gcc-internal-format
  msgid "wrong type argument to conjugation"
  msgstr "Argument falschen Typs fÃ¼r Konjugation"
  
! #: cp/typeck.cc:7724
  msgid "in argument to unary !"
  msgstr "in Argument fÃ¼r unÃ¤res !"
  
! #: cp/typeck.cc:7773
  msgid "no pre-increment operator for type"
  msgstr "kein PrÃ¤inkrementoperator fÃ¼r Typ"
  
! #: cp/typeck.cc:7775
  msgid "no post-increment operator for type"
  msgstr "kein Postinkrementoperator fÃ¼r Typ"
  
! #: cp/typeck.cc:7777
  msgid "no pre-decrement operator for type"
  msgstr "kein PrÃ¤dekrementoperator fÃ¼r Typ"
  
! #: cp/typeck.cc:7779
  msgid "no post-decrement operator for type"
  msgstr "kein Postdekrementoperator fÃ¼r Typ"
  
*************** msgstr ""
*** 21746,21752 ****
  "\n"
  "\n"
  "/* WARNUNG: Wegen abweichender Argumente fÃ¼r eine externe\n"
! "   Prozedur ist diese Header-Datei nicht kompatibel mit -std=c23.\n"
  "\n"
  "   Verwenden Sie eine andere -std-Option zum Kompilieren. */\n"
  
--- 21758,21764 ----
  "\n"
  "\n"
  "/* WARNUNG: Wegen abweichender Argumente fÃ¼r eine externe\n"
! "   Prozedur ist diese Header-Datei nicht kompatibel mit Â»-std=c23Â«.\n"
  "\n"
  "   Verwenden Sie eine andere -std-Option zum Kompilieren. */\n"
  
*************** msgstr "GelÃ¶schte Funktion:"
*** 21794,21800 ****
  msgid "Unsigned:"
  msgstr "Vorzeichenlos:"
  
! #: fortran/expr.cc:3856
  msgid "array assignment"
  msgstr "Array-Zuweisung"
  
--- 21806,21812 ----
  msgid "Unsigned:"
  msgstr "Vorzeichenlos:"
  
! #: fortran/expr.cc:3960
  msgid "array assignment"
  msgstr "Array-Zuweisung"
  
*************** msgstr "Unstimmige Arraygrenzen fÃ¼r Dim
*** 21825,21831 ****
  msgid "Driving:"
  msgstr "Angesteuert:"
  
! #: fortran/interface.cc:3905 fortran/intrinsic.cc:4662
  msgid "actual argument to INTENT = OUT/INOUT"
  msgstr "effektives Argument fÃ¼r INTENT = OUT/INOUT"
  
--- 21837,21843 ----
  msgid "Driving:"
  msgstr "Angesteuert:"
  
! #: fortran/interface.cc:3926 fortran/intrinsic.cc:4662
  msgid "actual argument to INTENT = OUT/INOUT"
  msgstr "effektives Argument fÃ¼r INTENT = OUT/INOUT"
  
*************** msgstr "fÃ¼r RÃ¼ckwÃ¤rtskompatibilitÃ¤t"
*** 21873,21890 ****
  msgid "unsigned"
  msgstr "vorzeichenlos"
  
! #: fortran/io.cc:1873
  #, c-format
  msgid "%s tag"
  msgstr "%s-Symbol"
  
! #: fortran/io.cc:3364
  msgid "internal unit in WRITE"
  msgstr "interne Einheit in WRITE"
  
  #. For INQUIRE, all tags except FILE, ID and UNIT are variable definition
  #. contexts.  Thus, use an extended RESOLVE_TAG macro for that.
! #: fortran/io.cc:4725
  #, c-format
  msgid "%s tag with INQUIRE"
  msgstr "%s-Symbol mit INQUIRE"
--- 21885,21902 ----
  msgid "unsigned"
  msgstr "vorzeichenlos"
  
! #: fortran/io.cc:1875
  #, c-format
  msgid "%s tag"
  msgstr "%s-Symbol"
  
! #: fortran/io.cc:3366
  msgid "internal unit in WRITE"
  msgstr "interne Einheit in WRITE"
  
  #. For INQUIRE, all tags except FILE, ID and UNIT are variable definition
  #. contexts.  Thus, use an extended RESOLVE_TAG macro for that.
! #: fortran/io.cc:4727
  #, c-format
  msgid "%s tag with INQUIRE"
  msgstr "%s-Symbol mit INQUIRE"
*************** msgstr "Block-IF"
*** 21991,22001 ****
  msgid "implied END DO"
  msgstr "impliziertes END DO"
  
! #: fortran/parse.cc:2523 fortran/resolve.cc:13586
  msgid "assignment"
  msgstr "Zuweisung"
  
! #: fortran/parse.cc:2526 fortran/resolve.cc:13652 fortran/resolve.cc:13655
  msgid "pointer assignment"
  msgstr "Zeigerzuweisung"
  
--- 22003,22013 ----
  msgid "implied END DO"
  msgstr "impliziertes END DO"
  
! #: fortran/parse.cc:2523 fortran/resolve.cc:13576
  msgid "assignment"
  msgstr "Zuweisung"
  
! #: fortran/parse.cc:2526 fortran/resolve.cc:13642 fortran/resolve.cc:13645
  msgid "pointer assignment"
  msgstr "Zeigerzuweisung"
  
*************** msgstr "Zeigerzuweisung"
*** 22003,22140 ****
  msgid "simple IF"
  msgstr "einfaches IF"
  
! #: fortran/resolve.cc:2464 fortran/resolve.cc:2659
  msgid "elemental procedure"
  msgstr "Elementares Unterprogramm"
  
! #: fortran/resolve.cc:2562
  msgid "allocatable argument"
  msgstr "allozierbares Argument"
  
! #: fortran/resolve.cc:2567
  msgid "asynchronous argument"
  msgstr "asynchrones Argument"
  
! #: fortran/resolve.cc:2572
  msgid "optional argument"
  msgstr "optionales Argument"
  
! #: fortran/resolve.cc:2577
  msgid "pointer argument"
  msgstr "Zeigerargument"
  
! #: fortran/resolve.cc:2582
  msgid "target argument"
  msgstr "Zielargument"
  
! #: fortran/resolve.cc:2587
  msgid "value argument"
  msgstr "Wertargument"
  
! #: fortran/resolve.cc:2592
  msgid "volatile argument"
  msgstr "flÃ¼chtiges Argument"
  
! #: fortran/resolve.cc:2597
  msgid "assumed-shape argument"
  msgstr "Argument mit angenommener Form"
  
! #: fortran/resolve.cc:2602
  msgid "assumed-rank argument"
  msgstr "Argument mit angenommenem Rang"
  
! #: fortran/resolve.cc:2607
  msgid "coarray argument"
  msgstr "Coarray-Argument"
  
! #: fortran/resolve.cc:2612
  msgid "parametrized derived type argument"
  msgstr "parametrisiertes abgeleitetes Typargument"
  
! #: fortran/resolve.cc:2617
  msgid "polymorphic argument"
  msgstr "polymorphes Argument"
  
! #: fortran/resolve.cc:2622
  msgid "NO_ARG_CHECK attribute"
  msgstr "NO_ARG_CHECK-Attribut"
  
  #. As assumed-type is unlimited polymorphic (cf. above).
  #. See also TS 29113, Note 6.1.
! #: fortran/resolve.cc:2629
  msgid "assumed-type argument"
  msgstr "Argument von angenommenem Typ"
  
! #: fortran/resolve.cc:2640
  msgid "array result"
  msgstr "Arrayergebnis"
  
! #: fortran/resolve.cc:2645
  msgid "pointer or allocatable result"
  msgstr "Zeiger oder allozierbares Resultat"
  
! #: fortran/resolve.cc:2652
  msgid "result with non-constant character length"
  msgstr "Resultat mit nicht konstanter ZeichenlÃ¤nge"
  
! #: fortran/resolve.cc:2664
  msgid "bind(c) procedure"
  msgstr "bind(c)-Prozedur"
  
! #: fortran/resolve.cc:8002
  msgid "Loop variable"
  msgstr "Schleifenvariable"
  
! #: fortran/resolve.cc:8006
  msgid "iterator variable"
  msgstr "Iteratorvariable"
  
! #: fortran/resolve.cc:8010
  msgid "Start expression in DO loop"
  msgstr "Anfangs-Ausdruck in DO-Schleife"
  
! #: fortran/resolve.cc:8014
  msgid "End expression in DO loop"
  msgstr "End-Ausdruck in DO-Schleife"
  
! #: fortran/resolve.cc:8018
  msgid "Step expression in DO loop"
  msgstr "Schrittausdruck in DO-Schleife"
  
! #: fortran/resolve.cc:8636 fortran/resolve.cc:8639
  msgid "DEALLOCATE object"
  msgstr "DEALLOCATE Objekt"
  
! #: fortran/resolve.cc:9063 fortran/resolve.cc:9066
  msgid "ALLOCATE object"
  msgstr "ALLOCATE Objekt"
  
! #: fortran/resolve.cc:9303 fortran/resolve.cc:11450 fortran/resolve.cc:11571
  msgid "STAT variable"
  msgstr "STAT-Variable"
  
! #: fortran/resolve.cc:9354 fortran/resolve.cc:11462 fortran/resolve.cc:11583
  msgid "ERRMSG variable"
  msgstr "ERRMSG-Variable"
  
! #: fortran/resolve.cc:11258
  msgid "item in READ"
  msgstr "Element in READ"
  
! #: fortran/resolve.cc:11474
  msgid "ACQUIRED_LOCK variable"
  msgstr "Variable ACQUIRED_LOCK"
  
! #: fortran/trans-array.cc:2058
  #, c-format
  msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
  msgstr "Unterschiedliche CHARACTER-LÃ¤ngen (%ld/%ld) in Feldkonstruktor"
  
! #: fortran/trans-array.cc:6629
  msgid "Integer overflow when calculating the amount of memory to allocate"
  msgstr "GanzzahlÃ¼berlauf bei der Berechnung des zu reservierenden Speichers"
  
! #: fortran/trans-array.cc:10933
  #, c-format
  msgid "The value of the PDT LEN parameter '%s' does not agree with that in the dummy declaration"
  msgstr "Der Wert des Parameters PDT LEN Â»%sÂ« stimmt nicht mit dem in der Dummy-Deklaration Ã¼berein"
--- 22015,22152 ----
  msgid "simple IF"
  msgstr "einfaches IF"
  
! #: fortran/resolve.cc:2465 fortran/resolve.cc:2660
  msgid "elemental procedure"
  msgstr "Elementares Unterprogramm"
  
! #: fortran/resolve.cc:2563
  msgid "allocatable argument"
  msgstr "allozierbares Argument"
  
! #: fortran/resolve.cc:2568
  msgid "asynchronous argument"
  msgstr "asynchrones Argument"
  
! #: fortran/resolve.cc:2573
  msgid "optional argument"
  msgstr "optionales Argument"
  
! #: fortran/resolve.cc:2578
  msgid "pointer argument"
  msgstr "Zeigerargument"
  
! #: fortran/resolve.cc:2583
  msgid "target argument"
  msgstr "Zielargument"
  
! #: fortran/resolve.cc:2588
  msgid "value argument"
  msgstr "Wertargument"
  
! #: fortran/resolve.cc:2593
  msgid "volatile argument"
  msgstr "flÃ¼chtiges Argument"
  
! #: fortran/resolve.cc:2598
  msgid "assumed-shape argument"
  msgstr "Argument mit angenommener Form"
  
! #: fortran/resolve.cc:2603
  msgid "assumed-rank argument"
  msgstr "Argument mit angenommenem Rang"
  
! #: fortran/resolve.cc:2608
  msgid "coarray argument"
  msgstr "Coarray-Argument"
  
! #: fortran/resolve.cc:2613
  msgid "parametrized derived type argument"
  msgstr "parametrisiertes abgeleitetes Typargument"
  
! #: fortran/resolve.cc:2618
  msgid "polymorphic argument"
  msgstr "polymorphes Argument"
  
! #: fortran/resolve.cc:2623
  msgid "NO_ARG_CHECK attribute"
  msgstr "NO_ARG_CHECK-Attribut"
  
  #. As assumed-type is unlimited polymorphic (cf. above).
  #. See also TS 29113, Note 6.1.
! #: fortran/resolve.cc:2630
  msgid "assumed-type argument"
  msgstr "Argument von angenommenem Typ"
  
! #: fortran/resolve.cc:2641
  msgid "array result"
  msgstr "Arrayergebnis"
  
! #: fortran/resolve.cc:2646
  msgid "pointer or allocatable result"
  msgstr "Zeiger oder allozierbares Resultat"
  
! #: fortran/resolve.cc:2653
  msgid "result with non-constant character length"
  msgstr "Resultat mit nicht konstanter ZeichenlÃ¤nge"
  
! #: fortran/resolve.cc:2665
  msgid "bind(c) procedure"
  msgstr "bind(c)-Prozedur"
  
! #: fortran/resolve.cc:7975
  msgid "Loop variable"
  msgstr "Schleifenvariable"
  
! #: fortran/resolve.cc:7979
  msgid "iterator variable"
  msgstr "Iteratorvariable"
  
! #: fortran/resolve.cc:7983
  msgid "Start expression in DO loop"
  msgstr "Anfangs-Ausdruck in DO-Schleife"
  
! #: fortran/resolve.cc:7987
  msgid "End expression in DO loop"
  msgstr "End-Ausdruck in DO-Schleife"
  
! #: fortran/resolve.cc:7991
  msgid "Step expression in DO loop"
  msgstr "Schrittausdruck in DO-Schleife"
  
! #: fortran/resolve.cc:8609 fortran/resolve.cc:8612
  msgid "DEALLOCATE object"
  msgstr "DEALLOCATE Objekt"
  
! #: fortran/resolve.cc:9053 fortran/resolve.cc:9056
  msgid "ALLOCATE object"
  msgstr "ALLOCATE Objekt"
  
! #: fortran/resolve.cc:9293 fortran/resolve.cc:11440 fortran/resolve.cc:11561
  msgid "STAT variable"
  msgstr "STAT-Variable"
  
! #: fortran/resolve.cc:9344 fortran/resolve.cc:11452 fortran/resolve.cc:11573
  msgid "ERRMSG variable"
  msgstr "ERRMSG-Variable"
  
! #: fortran/resolve.cc:11248
  msgid "item in READ"
  msgstr "Element in READ"
  
! #: fortran/resolve.cc:11464
  msgid "ACQUIRED_LOCK variable"
  msgstr "Variable ACQUIRED_LOCK"
  
! #: fortran/trans-array.cc:2061
  #, c-format
  msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
  msgstr "Unterschiedliche CHARACTER-LÃ¤ngen (%ld/%ld) in Feldkonstruktor"
  
! #: fortran/trans-array.cc:6631
  msgid "Integer overflow when calculating the amount of memory to allocate"
  msgstr "GanzzahlÃ¼berlauf bei der Berechnung des zu reservierenden Speichers"
  
! #: fortran/trans-array.cc:10935
  #, c-format
  msgid "The value of the PDT LEN parameter '%s' does not agree with that in the dummy declaration"
  msgstr "Der Wert des Parameters PDT LEN Â»%sÂ« stimmt nicht mit dem in der Dummy-Deklaration Ã¼berein"
*************** msgstr "Effektive ZeichenkettenlÃ¤nge pa
*** 22149,22160 ****
  msgid "Actual string length is shorter than the declared one for dummy argument '%s' (%ld/%ld)"
  msgstr "Effektive ZeichenkettenlÃ¤nge ist kÃ¼rzer als die deklarierte fÃ¼r Scheinargument Â»%sÂ« (%ld/%ld)"
  
! #: fortran/trans-expr.cc:11373
  #, c-format
  msgid "Target of rank remapping is too small (%ld < %ld)"
  msgstr "Ziel fÃ¼r neue Rangabbildung ist zu klein (%ld < %ld)"
  
! #: fortran/trans-expr.cc:13068
  msgid "Assignment of scalar to unallocated array"
  msgstr "Zuweisung von Skalar zu unalloziertem Array"
  
--- 22161,22172 ----
  msgid "Actual string length is shorter than the declared one for dummy argument '%s' (%ld/%ld)"
  msgstr "Effektive ZeichenkettenlÃ¤nge ist kÃ¼rzer als die deklarierte fÃ¼r Scheinargument Â»%sÂ« (%ld/%ld)"
  
! #: fortran/trans-expr.cc:11386
  #, c-format
  msgid "Target of rank remapping is too small (%ld < %ld)"
  msgstr "Ziel fÃ¼r neue Rangabbildung ist zu klein (%ld < %ld)"
  
! #: fortran/trans-expr.cc:13081
  msgid "Assignment of scalar to unallocated array"
  msgstr "Zuweisung von Skalar zu unalloziertem Array"
  
*************** msgstr "Zuweisung von Skalar zu unallozi
*** 22163,22243 ****
  msgid "Unequal character lengths (%ld/%ld) in %s"
  msgstr "Ungleiche ZeichenlÃ¤ngen (%ld/%ld) in %s"
  
! #: fortran/trans-intrinsic.cc:6387
  #, c-format
  msgid "POS argument (%ld) out of range 0:%ld in intrinsic BTEST"
  msgstr "POS-Argument (%ld) auÃŸerhalb des Bereichs 0:%ld in intrinsischem BTEST"
  
! #: fortran/trans-intrinsic.cc:6674
  #, c-format
  msgid "POS argument (%ld) out of range 0:%ld in intrinsic %s"
  msgstr "POS-Argument (%ld) auÃŸerhalb des Bereichs 0:%ld in intrinsischem Â»%sÂ«"
  
! #: fortran/trans-intrinsic.cc:6722
  #, c-format
  msgid "POS argument (%ld) out of range 0:%ld in intrinsic IBITS"
  msgstr "POS-Argument (%ld) auÃŸerhalb des Bereichs 0:%ld in intrinsischem IBITS"
  
! #: fortran/trans-intrinsic.cc:6732
  #, c-format
  msgid "LEN argument (%ld) out of range 0:%ld in intrinsic IBITS"
  msgstr "LEN-Argument (%ld) auÃŸerhalb des Bereichs 0:%ld in intrinsischem IBITS"
  
! #: fortran/trans-intrinsic.cc:6739
  #, c-format
  msgid "POS(%ld)+LEN(%ld)>BIT_SIZE(%ld) in intrinsic IBITS"
  msgstr "POS(%ld)+LEN(%ld)>BIT_SIZE(%ld) in intrinsischem IBITS"
  
! #: fortran/trans-intrinsic.cc:6831
  #, c-format
  msgid "SHIFT argument (%ld) out of range 0:%ld in intrinsic %s"
  msgstr "SHIFT-Argument (%ld) auÃŸerhalb des Bereichs 0:%ld in intrinsischem Â»%sÂ«"
  
! #: fortran/trans-intrinsic.cc:6899
  #, c-format
  msgid "SHIFT argument (%ld) out of range -%ld:%ld in intrinsic ISHFT"
  msgstr "SHIFT-Argument (%ld) auÃŸerhalb des Bereichs -%ld:%ld in intrinsischem ISHFT"
  
! #: fortran/trans-intrinsic.cc:6979
  #, c-format
  msgid "SIZE argument (%ld) out of range 1:%ld in intrinsic ISHFTC"
  msgstr "SIZE-Argument (%ld) auÃŸerhalb des Bereichs 1:%ld in intrinsischem ISHFTC"
  
! #: fortran/trans-intrinsic.cc:6987 fortran/trans-intrinsic.cc:7032
  #, c-format
  msgid "SHIFT argument (%ld) out of range -%ld:%ld in intrinsic ISHFTC"
  msgstr "SIZE-Argument (%ld) auÃŸerhalb des Bereichs -%ld:%ld in intrinsischem ISHFTC"
  
! #: fortran/trans-intrinsic.cc:9383
  #, c-format
  msgid "Argument NCOPIES of REPEAT intrinsic is negative (its value is %ld)"
  msgstr "Argument NCOPIES des intrinsischen REPEAT ist negativ (sein Wert ist %ld)"
  
! #: fortran/trans-intrinsic.cc:9415
  msgid "Argument NCOPIES of REPEAT intrinsic is too large"
  msgstr "Argument NCOPIES des intrinsischen REPEAT ist zu groÃŸ"
  
! #: fortran/trans-intrinsic.cc:12882
  #, c-format
  msgid "FROMPOS argument (%ld) out of range 0:%d in intrinsic MVBITS"
  msgstr "FROMPOS-Argument (%ld) auÃŸerhalb des Bereichs 0:%d in intrinsischem MVBITS"
  
! #: fortran/trans-intrinsic.cc:12894
  #, c-format
  msgid "LEN argument (%ld) out of range 0:%d in intrinsic MVBITS"
  msgstr "LEN-Argument (%ld) auÃŸerhalb des Bereichs 0:%d in intrinsischem MVBITS"
  
! #: fortran/trans-intrinsic.cc:12906
  #, c-format
  msgid "TOPOS argument (%ld) out of range 0:%d in intrinsic MVBITS"
  msgstr "TOPOS-Argument (%ld) auÃŸerhalb des Bereichs 0:%d in intrinsischem MVBITS"
  
! #: fortran/trans-intrinsic.cc:12918
  #, c-format
  msgid "FROMPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsic MVBITS"
  msgstr "FROMPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsischem MVBITS"
  
! #: fortran/trans-intrinsic.cc:12926
  #, c-format
  msgid "TOPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsic MVBITS"
  msgstr "TOPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsischem MVBITS"
--- 22175,22255 ----
  msgid "Unequal character lengths (%ld/%ld) in %s"
  msgstr "Ungleiche ZeichenlÃ¤ngen (%ld/%ld) in %s"
  
! #: fortran/trans-intrinsic.cc:6366
  #, c-format
  msgid "POS argument (%ld) out of range 0:%ld in intrinsic BTEST"
  msgstr "POS-Argument (%ld) auÃŸerhalb des Bereichs 0:%ld in intrinsischem BTEST"
  
! #: fortran/trans-intrinsic.cc:6653
  #, c-format
  msgid "POS argument (%ld) out of range 0:%ld in intrinsic %s"
  msgstr "POS-Argument (%ld) auÃŸerhalb des Bereichs 0:%ld in intrinsischem Â»%sÂ«"
  
! #: fortran/trans-intrinsic.cc:6701
  #, c-format
  msgid "POS argument (%ld) out of range 0:%ld in intrinsic IBITS"
  msgstr "POS-Argument (%ld) auÃŸerhalb des Bereichs 0:%ld in intrinsischem IBITS"
  
! #: fortran/trans-intrinsic.cc:6711
  #, c-format
  msgid "LEN argument (%ld) out of range 0:%ld in intrinsic IBITS"
  msgstr "LEN-Argument (%ld) auÃŸerhalb des Bereichs 0:%ld in intrinsischem IBITS"
  
! #: fortran/trans-intrinsic.cc:6718
  #, c-format
  msgid "POS(%ld)+LEN(%ld)>BIT_SIZE(%ld) in intrinsic IBITS"
  msgstr "POS(%ld)+LEN(%ld)>BIT_SIZE(%ld) in intrinsischem IBITS"
  
! #: fortran/trans-intrinsic.cc:6810
  #, c-format
  msgid "SHIFT argument (%ld) out of range 0:%ld in intrinsic %s"
  msgstr "SHIFT-Argument (%ld) auÃŸerhalb des Bereichs 0:%ld in intrinsischem Â»%sÂ«"
  
! #: fortran/trans-intrinsic.cc:6878
  #, c-format
  msgid "SHIFT argument (%ld) out of range -%ld:%ld in intrinsic ISHFT"
  msgstr "SHIFT-Argument (%ld) auÃŸerhalb des Bereichs -%ld:%ld in intrinsischem ISHFT"
  
! #: fortran/trans-intrinsic.cc:6958
  #, c-format
  msgid "SIZE argument (%ld) out of range 1:%ld in intrinsic ISHFTC"
  msgstr "SIZE-Argument (%ld) auÃŸerhalb des Bereichs 1:%ld in intrinsischem ISHFTC"
  
! #: fortran/trans-intrinsic.cc:6966 fortran/trans-intrinsic.cc:7011
  #, c-format
  msgid "SHIFT argument (%ld) out of range -%ld:%ld in intrinsic ISHFTC"
  msgstr "SIZE-Argument (%ld) auÃŸerhalb des Bereichs -%ld:%ld in intrinsischem ISHFTC"
  
! #: fortran/trans-intrinsic.cc:9362
  #, c-format
  msgid "Argument NCOPIES of REPEAT intrinsic is negative (its value is %ld)"
  msgstr "Argument NCOPIES des intrinsischen REPEAT ist negativ (sein Wert ist %ld)"
  
! #: fortran/trans-intrinsic.cc:9394
  msgid "Argument NCOPIES of REPEAT intrinsic is too large"
  msgstr "Argument NCOPIES des intrinsischen REPEAT ist zu groÃŸ"
  
! #: fortran/trans-intrinsic.cc:12861
  #, c-format
  msgid "FROMPOS argument (%ld) out of range 0:%d in intrinsic MVBITS"
  msgstr "FROMPOS-Argument (%ld) auÃŸerhalb des Bereichs 0:%d in intrinsischem MVBITS"
  
! #: fortran/trans-intrinsic.cc:12873
  #, c-format
  msgid "LEN argument (%ld) out of range 0:%d in intrinsic MVBITS"
  msgstr "LEN-Argument (%ld) auÃŸerhalb des Bereichs 0:%d in intrinsischem MVBITS"
  
! #: fortran/trans-intrinsic.cc:12885
  #, c-format
  msgid "TOPOS argument (%ld) out of range 0:%d in intrinsic MVBITS"
  msgstr "TOPOS-Argument (%ld) auÃŸerhalb des Bereichs 0:%d in intrinsischem MVBITS"
  
! #: fortran/trans-intrinsic.cc:12897
  #, c-format
  msgid "FROMPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsic MVBITS"
  msgstr "FROMPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsischem MVBITS"
  
! #: fortran/trans-intrinsic.cc:12905
  #, c-format
  msgid "TOPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsic MVBITS"
  msgstr "TOPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsischem MVBITS"
*************** msgstr "numerischer Typ erwartet"
*** 22349,22356 ****
  msgid "expected boolean type"
  msgstr "boolescher Typ erwartet"
  
! #: go/gofrontend/expressions.cc:5610 c/c-parser.cc:19534 c/c-parser.cc:19541
! #: cp/parser.cc:41864 cp/parser.cc:41871
  #, gcc-internal-format
  msgid "expected integer"
  msgstr "Ganzzahl erwartet"
--- 22361,22368 ----
  msgid "expected boolean type"
  msgstr "boolescher Typ erwartet"
  
! #: go/gofrontend/expressions.cc:5610 c/c-parser.cc:19579 c/c-parser.cc:19586
! #: cp/parser.cc:41923 cp/parser.cc:41930
  #, gcc-internal-format
  msgid "expected integer"
  msgstr "Ganzzahl erwartet"
*************** msgstr "Nicht genug Argumente"
*** 22415,22421 ****
  #: go/gofrontend/expressions.cc:11749 go/gofrontend/expressions.cc:11844
  #: go/gofrontend/expressions.cc:14020 go/gofrontend/expressions.cc:14149
  #: go/gofrontend/expressions.cc:14163 go/gofrontend/expressions.cc:14184
! #: cp/pt.cc:9466
  #, gcc-internal-format
  msgid "too many arguments"
  msgstr "zu viele Argumente"
--- 22427,22433 ----
  #: go/gofrontend/expressions.cc:11749 go/gofrontend/expressions.cc:11844
  #: go/gofrontend/expressions.cc:14020 go/gofrontend/expressions.cc:14149
  #: go/gofrontend/expressions.cc:14163 go/gofrontend/expressions.cc:14184
! #: cp/pt.cc:9471
  #, gcc-internal-format
  msgid "too many arguments"
  msgstr "zu viele Argumente"
*************** msgstr "ProfilerunterstÃ¼tzung fÃ¼r VxWo
*** 22810,22816 ****
  msgid "target OS does not support unaligned accesses"
  msgstr "Ziel-Betriebssystem unterstÃ¼tzt keine unausgerichteten Zugriffe"
  
! #: config/c6x/c6x.h:346 config/nvptx/nvptx.h:193
  #, gcc-internal-format
  msgid "profiling is not yet implemented for this architecture"
  msgstr "Profiling ist fÃ¼r dieses Ziel noch nicht implementiert"
--- 22822,22828 ----
  msgid "target OS does not support unaligned accesses"
  msgstr "Ziel-Betriebssystem unterstÃ¼tzt keine unausgerichteten Zugriffe"
  
! #: config/c6x/c6x.h:346 config/nvptx/nvptx.h:194
  #, gcc-internal-format
  msgid "profiling is not yet implemented for this architecture"
  msgstr "Profiling ist fÃ¼r dieses Ziel noch nicht implementiert"
*************** msgstr "%<-m%s%> wird in dieser Konfigur
*** 23043,23069 ****
  msgid "%<-mrelax%> is only supported for RTP PIC"
  msgstr "%<-mrelax%> wird nur fÃ¼r RTP PIC unterstÃ¼tzt"
  
! #: cobol/parse_ante.h:1728
  #, gcc-internal-format, gfc-internal-format
! msgid "Global declarative %s for %s"
! msgstr "Global deklarative %s fÃ¼r %s"
  
! #: cobol/parse_ante.h:2456 cobol/genapi.cc:5784
  #, gcc-internal-format, gfc-internal-format
! msgid "%s:%d: invalid symbol_type_t %d"
! msgstr "%s:%d: ungÃ¼ltiger symbol_type_t %d"
  
! #: cobol/parse_ante.h:2798
! #, gcc-internal-format, gfc-internal-format
! msgid "%s:%d: no symbol '%s' found"
! msgstr "%s:%d: kein Symbol Â»%sÂ« gefunden"
  
! #: cobol/parse_util.h:351
! #, gcc-internal-format, gfc-internal-format
! msgid "%s: intrinsic function  %s not found"
! msgstr "%s: intrinsische Funktion Â»%sÂ« nicht gefunden"
  
! #: cobol/parse_util.h:383
  #, gcc-internal-format, gfc-internal-format
  msgid "%s: invalid function descr type '%c'"
  msgstr "%s: ungÃ¼ltiger Funktionsbeschreibungstyp Â»%cÂ«"
--- 23055,23082 ----
  msgid "%<-mrelax%> is only supported for RTP PIC"
  msgstr "%<-mrelax%> wird nur fÃ¼r RTP PIC unterstÃ¼tzt"
  
! #: cobol/exceptg.h:80
  #, gcc-internal-format, gfc-internal-format
! msgid "CDF: exception '%s'"
! msgstr "CDF: Ausnahme Â»%sÂ«"
  
! #: cobol/parse_ante.h:1592
  #, gcc-internal-format, gfc-internal-format
! msgid "Global declarative %s for %s"
! msgstr "Global deklarative %s fÃ¼r %s"
  
! #: cobol/parse_ante.h:2385 cobol/symbols.h:134 cobol/genapi.cc:6470
! #: cobol/util.cc:288 cobol/util.cc:337 cobol/util.cc:637
! #, gcc-internal-format
! msgid "%s:%d: invalid %<symbol_type_t%> %d"
! msgstr "%s:%d: ungÃ¼ltiger %<symbol_type_t%> %d"
  
! #: cobol/parse_util.h:360
! #, gcc-internal-format
! msgid "%s: intrinsic function %qs not found"
! msgstr "%s: intrinsische Funktion %qs nicht gefunden"
  
! #: cobol/parse_util.h:392
  #, gcc-internal-format, gfc-internal-format
  msgid "%s: invalid function descr type '%c'"
  msgstr "%s: ungÃ¼ltiger Funktionsbeschreibungstyp Â»%cÂ«"
*************** msgid "scan.o: %s"
*** 23074,23080 ****
  msgstr "scan.o: %s"
  
  #. A general purpose syntax error.
! #: fortran/gfortran.h:3560 fortran/io.cc:3727 fortran/io.cc:4413
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in %s statement at %C"
  msgstr "Syntaxfehler in Anweisung %s bei %C"
--- 23087,23093 ----
  msgstr "scan.o: %s"
  
  #. A general purpose syntax error.
! #: fortran/gfortran.h:3563 fortran/io.cc:3729 fortran/io.cc:4415
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in %s statement at %C"
  msgstr "Syntaxfehler in Anweisung %s bei %C"
*************** msgstr "Makroname fehlt hinter %qs"
*** 23164,23170 ****
  #: c-family/c.opt:89 c-family/c.opt:185 c-family/c.opt:188 c-family/c.opt:230
  #: c-family/c.opt:234 c-family/c.opt:246 c-family/c.opt:2482
  #: c-family/c.opt:2490 config/darwin.opt:30 common.opt:329 common.opt:332
! #: common.opt:429 common.opt:3801
  #, gcc-internal-format
  msgid "missing filename after %qs"
  msgstr "fehlender Dateiname hinter %qs"
--- 23177,23183 ----
  #: c-family/c.opt:89 c-family/c.opt:185 c-family/c.opt:188 c-family/c.opt:230
  #: c-family/c.opt:234 c-family/c.opt:246 c-family/c.opt:2482
  #: c-family/c.opt:2490 config/darwin.opt:30 common.opt:329 common.opt:332
! #: common.opt:429 common.opt:3798
  #, gcc-internal-format
  msgid "missing filename after %qs"
  msgstr "fehlender Dateiname hinter %qs"
*************** msgstr "unbekannter ivar-Sichtbarkeitswe
*** 23257,23263 ****
  msgid "unrecognized scalar storage order value %qs"
  msgstr "unbekannter Wert %qs fÃ¼r Speicherreihenfolge von Skalaren"
  
! #: cobol/lang.opt:46
  #, gcc-internal-format
  msgid "Unrecognized COBOL dialect name: %qs"
  msgstr "Nicht erkannter COBOL-Dialektname: %qs"
--- 23270,23276 ----
  msgid "unrecognized scalar storage order value %qs"
  msgstr "unbekannter Wert %qs fÃ¼r Speicherreihenfolge von Skalaren"
  
! #: cobol/lang.opt:51
  #, gcc-internal-format
  msgid "Unrecognized COBOL dialect name: %qs"
  msgstr "Nicht erkannter COBOL-Dialektname: %qs"
*************** msgstr "%<-mfused-madd%> ist veraltet; s
*** 23360,23371 ****
  #: config/microblaze/microblaze.opt:87
  #, gcc-internal-format
  msgid "%qs is deprecated; use -fstack-check"
! msgstr "%qs ist veraltet; stattdessen -fstack-check verwenden"
  
  #: config/microblaze/microblaze.opt:95
  #, gcc-internal-format
  msgid "%qs is deprecated; use -fno-zero-initialized-in-bss"
! msgstr "%qs ist veraltet; stattdessen -fno-zero-initialized-in-bss verwenden"
  
  #: config/arc/arc.opt:169 config/arc/arc.opt:333 config/arc/arc.opt:337
  #: config/arc/arc.opt:341 config/arc/arc.opt:348 config/arc/arc.opt:352
--- 23373,23384 ----
  #: config/microblaze/microblaze.opt:87
  #, gcc-internal-format
  msgid "%qs is deprecated; use -fstack-check"
! msgstr "%qs ist veraltet; stattdessen %<-fstack-check%> verwenden"
  
  #: config/microblaze/microblaze.opt:95
  #, gcc-internal-format
  msgid "%qs is deprecated; use -fno-zero-initialized-in-bss"
! msgstr "%qs ist veraltet; stattdessen %<-fno-zero-initialized-in-bss%> verwenden"
  
  #: config/arc/arc.opt:169 config/arc/arc.opt:333 config/arc/arc.opt:337
  #: config/arc/arc.opt:341 config/arc/arc.opt:348 config/arc/arc.opt:352
*************** msgstr "%qs ist veraltet"
*** 23378,23384 ****
  #: lto/lang.opt:28
  #, gcc-internal-format
  msgid "unknown linker output %qs"
! msgstr "unbekannte Linkerausgabe %qs"
  
  #: common.opt:1689
  #, gcc-internal-format
--- 23391,23397 ----
  #: lto/lang.opt:28
  #, gcc-internal-format
  msgid "unknown linker output %qs"
! msgstr "unbekannte Binderausgabe %qs"
  
  #: common.opt:1689
  #, gcc-internal-format
*************** msgstr "unbekannte IRA-Region %qs"
*** 23430,23506 ****
  msgid "unknown LTO partitioning model %qs"
  msgstr "Unbekanntes LTO-Partitionierungs-Modell %qs"
  
! #: common.opt:2406
  #, gcc-internal-format
  msgid "targets missing after %qs"
  msgstr "Zielarchitekturen fehlen hinter %qs"
  
! #: common.opt:2409
  #, gcc-internal-format
  msgid "options or targets=options missing after %qs"
  msgstr "Optionen oder Zielarchitekturen=Optionen fehlen hinter %qs"
  
! #: common.opt:2417
  #, gcc-internal-format
  msgid "unknown offload ABI %qs"
  msgstr "Unbekannte Offload-ABI %qs"
  
! #: common.opt:2426
  #, gcc-internal-format
  msgid "option missing after %qs"
  msgstr "Option fehlt hinter %qs"
  
! #: common.opt:2603
  #, gcc-internal-format
  msgid "unknown profile reproducibility method %qs"
  msgstr "Unbekannte Profil-Reproduzierbarkeitsstufe %qs"
  
! #: common.opt:2619
  #, gcc-internal-format
  msgid "unknown profile update method %qs"
  msgstr "Unbekannte Profil-Aktualisierungs-Methode %qs"
  
! #: common.opt:2728
  #, gcc-internal-format
  msgid "unknown Live-Patching Level %qs"
  msgstr "unbekannte Stufe %qs fÃ¼r Live-Patching"
  
! #: common.opt:2761
  #, gcc-internal-format
  msgid "unknown basic block reordering algorithm %qs"
  msgstr "unbekannter Basisblock-Umsortierungs-Algorithmus %qs"
  
! #: common.opt:3097
  #, gcc-internal-format
  msgid "unknown TLS model %qs"
  msgstr "unbekanntes TLS-Modell %qs"
  
! #: common.opt:3130
  #, gcc-internal-format
  msgid "unknown trampoline implementation %qs"
  msgstr "unbekannte Trampolinimplementierung %qs"
  
! #: common.opt:3452
  #, gcc-internal-format
  msgid "unknown vectorizer cost model %qs"
  msgstr "unbekanntes Vektorisierer-Kostenmodell %qs"
  
! #: common.opt:3483
  #, gcc-internal-format
  msgid "unrecognized automatic variable initialization type %qs"
  msgstr "nicht erkannter Initialisierungstyp %qs fÃ¼r automatische Variable"
  
! #: common.opt:3509
  #, gcc-internal-format
  msgid "unrecognized visibility value %qs"
  msgstr "unbekannter Sichtbarkeitswert %qs"
  
! #: common.opt:3528
  #, gcc-internal-format
  msgid "unknown vtable verify initialization priority %qs"
  msgstr "unbekannte InitialisierungsprioritÃ¤t %qs fÃ¼r VTable-Verifikation"
  
! #: common.opt:3584
  #, gcc-internal-format
  msgid "unrecognized zero init padding bits kind %qs"
  msgstr "nicht erkannte Padding-Bits-Art %qs fÃ¼r Null-Initialisierung"
--- 23443,23519 ----
  msgid "unknown LTO partitioning model %qs"
  msgstr "Unbekanntes LTO-Partitionierungs-Modell %qs"
  
! #: common.opt:2403
  #, gcc-internal-format
  msgid "targets missing after %qs"
  msgstr "Zielarchitekturen fehlen hinter %qs"
  
! #: common.opt:2406
  #, gcc-internal-format
  msgid "options or targets=options missing after %qs"
  msgstr "Optionen oder Zielarchitekturen=Optionen fehlen hinter %qs"
  
! #: common.opt:2414
  #, gcc-internal-format
  msgid "unknown offload ABI %qs"
  msgstr "Unbekannte Offload-ABI %qs"
  
! #: common.opt:2423
  #, gcc-internal-format
  msgid "option missing after %qs"
  msgstr "Option fehlt hinter %qs"
  
! #: common.opt:2600
  #, gcc-internal-format
  msgid "unknown profile reproducibility method %qs"
  msgstr "Unbekannte Profil-Reproduzierbarkeitsstufe %qs"
  
! #: common.opt:2616
  #, gcc-internal-format
  msgid "unknown profile update method %qs"
  msgstr "Unbekannte Profil-Aktualisierungs-Methode %qs"
  
! #: common.opt:2725
  #, gcc-internal-format
  msgid "unknown Live-Patching Level %qs"
  msgstr "unbekannte Stufe %qs fÃ¼r Live-Patching"
  
! #: common.opt:2758
  #, gcc-internal-format
  msgid "unknown basic block reordering algorithm %qs"
  msgstr "unbekannter Basisblock-Umsortierungs-Algorithmus %qs"
  
! #: common.opt:3094
  #, gcc-internal-format
  msgid "unknown TLS model %qs"
  msgstr "unbekanntes TLS-Modell %qs"
  
! #: common.opt:3127
  #, gcc-internal-format
  msgid "unknown trampoline implementation %qs"
  msgstr "unbekannte Trampolinimplementierung %qs"
  
! #: common.opt:3449
  #, gcc-internal-format
  msgid "unknown vectorizer cost model %qs"
  msgstr "unbekanntes Vektorisierer-Kostenmodell %qs"
  
! #: common.opt:3480
  #, gcc-internal-format
  msgid "unrecognized automatic variable initialization type %qs"
  msgstr "nicht erkannter Initialisierungstyp %qs fÃ¼r automatische Variable"
  
! #: common.opt:3506
  #, gcc-internal-format
  msgid "unrecognized visibility value %qs"
  msgstr "unbekannter Sichtbarkeitswert %qs"
  
! #: common.opt:3525
  #, gcc-internal-format
  msgid "unknown vtable verify initialization priority %qs"
  msgstr "unbekannte InitialisierungsprioritÃ¤t %qs fÃ¼r VTable-Verifikation"
  
! #: common.opt:3581
  #, gcc-internal-format
  msgid "unrecognized zero init padding bits kind %qs"
  msgstr "nicht erkannte Padding-Bits-Art %qs fÃ¼r Null-Initialisierung"
*************** msgstr "Attribut %qE steht mit Attribut
*** 23537,23543 ****
  
  #: attribs.cc:538 c-family/c-attribs.cc:1053 c-family/c-attribs.cc:2762
  #: c-family/c-attribs.cc:3318 c-family/c-attribs.cc:5282
! #: c-family/c-attribs.cc:5375 cp/decl.cc:17061 cp/decl.cc:17112
  #: cp/friend.cc:319 cp/tree.cc:5394
  #, gcc-internal-format
  msgid "previous declaration here"
--- 23550,23556 ----
  
  #: attribs.cc:538 c-family/c-attribs.cc:1053 c-family/c-attribs.cc:2762
  #: c-family/c-attribs.cc:3318 c-family/c-attribs.cc:5282
! #: c-family/c-attribs.cc:5375 cp/decl.cc:17059 cp/decl.cc:17110
  #: cp/friend.cc:319 cp/tree.cc:5394
  #, gcc-internal-format
  msgid "previous declaration here"
*************** msgstr "Attribut-Direktive %qE ignoriert
*** 23555,23561 ****
  msgid "%<%E::%E%> scoped attribute directive ignored"
  msgstr "Attribut-Direktive im Bereich %<%E::%E%> ignoriert"
  
! #: attribs.cc:761 c/c-parser.cc:2144 cp/cp-gimplify.cc:3704
  #, gcc-internal-format
  msgid "wrong number of arguments specified for %qE attribute"
  msgstr "Falsche Anzahl an Argumenten fÃ¼r das Attribut %qE angegeben"
--- 23568,23574 ----
  msgid "%<%E::%E%> scoped attribute directive ignored"
  msgstr "Attribut-Direktive im Bereich %<%E::%E%> ignoriert"
  
! #: attribs.cc:761 c/c-parser.cc:2189 cp/cp-gimplify.cc:3709
  #, gcc-internal-format
  msgid "wrong number of arguments specified for %qE attribute"
  msgstr "Falsche Anzahl an Argumenten fÃ¼r das Attribut %qE angegeben"
*************** msgstr "Falsche Anzahl an Argumenten fÃ¼
*** 23565,23571 ****
  msgid "expected %i or more, found %i"
  msgstr "%i oder mehr erwartet, %i gefunden"
  
! #: attribs.cc:767 c/c-parser.cc:2147 cp/cp-gimplify.cc:3706
  #, gcc-internal-format, gfc-internal-format
  msgid "expected %i, found %i"
  msgstr "%i erwartet, %i gefunden"
--- 23578,23584 ----
  msgid "expected %i or more, found %i"
  msgstr "%i oder mehr erwartet, %i gefunden"
  
! #: attribs.cc:767 c/c-parser.cc:2192 cp/cp-gimplify.cc:3711
  #, gcc-internal-format, gfc-internal-format
  msgid "expected %i, found %i"
  msgstr "%i erwartet, %i gefunden"
*************** msgstr "Typattribute ignoriert, nachdem
*** 23632,23653 ****
  #: c-family/c-attribs.cc:6073 c-family/c-attribs.cc:6105
  #: c-family/c-attribs.cc:6147 c-family/c-attribs.cc:6163
  #: c-family/c-attribs.cc:6335 c-family/c-attribs.cc:6347
! #: c-family/c-common.cc:6235 c-family/c-common.cc:6238 config/darwin.cc:2208
  #: config/arm/arm.cc:7515 config/arm/arm.cc:7542 config/arm/arm.cc:7559
  #: config/avr/avr.cc:11304 config/csky/csky.cc:6498 config/csky/csky.cc:6519
  #: config/h8300/h8300.cc:4972 config/h8300/h8300.cc:4996
  #: config/i386/i386-options.cc:3774 config/i386/i386-options.cc:3932
  #: config/i386/i386-options.cc:4164 config/i386/i386-options.cc:4194
  #: config/ia64/ia64.cc:799 config/loongarch/loongarch.cc:8197
! #: config/rs6000/rs6000.cc:20745 ada/gcc-interface/utils.cc:6900
! #: ada/gcc-interface/utils.cc:6916 ada/gcc-interface/utils.cc:7013
! #: ada/gcc-interface/utils.cc:7030 ada/gcc-interface/utils.cc:7047
! #: ada/gcc-interface/utils.cc:7062 ada/gcc-interface/utils.cc:7078
! #: ada/gcc-interface/utils.cc:7104 ada/gcc-interface/utils.cc:7173
! #: ada/gcc-interface/utils.cc:7200 ada/gcc-interface/utils.cc:7245
! #: ada/gcc-interface/utils.cc:7266 ada/gcc-interface/utils.cc:7314
! #: ada/gcc-interface/utils.cc:7330 ada/gcc-interface/utils.cc:7364
! #: c/c-decl.cc:4952 c/c-decl.cc:4955 c/c-decl.cc:4982 c/c-parser.cc:6097
  #: cp/tree.cc:5062 cp/tree.cc:5561 d/d-attribs.cc:483 d/d-attribs.cc:702
  #: d/d-attribs.cc:723 d/d-attribs.cc:739 d/d-attribs.cc:756 d/d-attribs.cc:788
  #: d/d-attribs.cc:917 d/d-attribs.cc:976 d/d-attribs.cc:992 d/d-attribs.cc:1008
--- 23645,23666 ----
  #: c-family/c-attribs.cc:6073 c-family/c-attribs.cc:6105
  #: c-family/c-attribs.cc:6147 c-family/c-attribs.cc:6163
  #: c-family/c-attribs.cc:6335 c-family/c-attribs.cc:6347
! #: c-family/c-common.cc:6256 c-family/c-common.cc:6259 config/darwin.cc:2208
  #: config/arm/arm.cc:7515 config/arm/arm.cc:7542 config/arm/arm.cc:7559
  #: config/avr/avr.cc:11304 config/csky/csky.cc:6498 config/csky/csky.cc:6519
  #: config/h8300/h8300.cc:4972 config/h8300/h8300.cc:4996
  #: config/i386/i386-options.cc:3774 config/i386/i386-options.cc:3932
  #: config/i386/i386-options.cc:4164 config/i386/i386-options.cc:4194
  #: config/ia64/ia64.cc:799 config/loongarch/loongarch.cc:8197
! #: config/rs6000/rs6000.cc:20745 ada/gcc-interface/utils.cc:6902
! #: ada/gcc-interface/utils.cc:6918 ada/gcc-interface/utils.cc:7015
! #: ada/gcc-interface/utils.cc:7032 ada/gcc-interface/utils.cc:7049
! #: ada/gcc-interface/utils.cc:7064 ada/gcc-interface/utils.cc:7080
! #: ada/gcc-interface/utils.cc:7106 ada/gcc-interface/utils.cc:7175
! #: ada/gcc-interface/utils.cc:7202 ada/gcc-interface/utils.cc:7247
! #: ada/gcc-interface/utils.cc:7268 ada/gcc-interface/utils.cc:7316
! #: ada/gcc-interface/utils.cc:7332 ada/gcc-interface/utils.cc:7366
! #: c/c-decl.cc:4952 c/c-decl.cc:4955 c/c-decl.cc:4982 c/c-parser.cc:6142
  #: cp/tree.cc:5062 cp/tree.cc:5561 d/d-attribs.cc:483 d/d-attribs.cc:702
  #: d/d-attribs.cc:723 d/d-attribs.cc:739 d/d-attribs.cc:756 d/d-attribs.cc:788
  #: d/d-attribs.cc:917 d/d-attribs.cc:976 d/d-attribs.cc:992 d/d-attribs.cc:1008
*************** msgstr "Attribut %qE wird ignoriert"
*** 23669,23676 ****
  msgid "missing %<target%> attribute for multi-versioned %qD"
  msgstr "Attribut %<target%> fehlt fÃ¼r multiversioniertes %qD"
  
! #: attribs.cc:1224 cp/decl.cc:1359 cp/decl.cc:2371 cp/decl.cc:2419
! #: cp/decl.cc:2435 cp/decl.cc:3134 cp/decl.cc:3586
  #, gcc-internal-format
  msgid "previous declaration of %qD"
  msgstr "vorherige Deklaration von %qD"
--- 23682,23689 ----
  msgid "missing %<target%> attribute for multi-versioned %qD"
  msgstr "Attribut %<target%> fehlt fÃ¼r multiversioniertes %qD"
  
! #: attribs.cc:1224 cp/decl.cc:1357 cp/decl.cc:2369 cp/decl.cc:2417
! #: cp/decl.cc:2433 cp/decl.cc:3132 cp/decl.cc:3584
  #, gcc-internal-format
  msgid "previous declaration of %qD"
  msgstr "vorherige Deklaration von %qD"
*************** msgstr "Funktionsprofil aus %s kann nich
*** 23777,23783 ****
  msgid "offset %qwi outside bounds of constant string"
  msgstr "Offset %qwi ist auÃŸerhalb der Grenzen der konstanten Zeichenkette"
  
! #: builtins.cc:707 cp/name-lookup.cc:6938
  #, gcc-internal-format
  msgid "%qE declared here"
  msgstr "%qE ist hier deklariert"
--- 23790,23796 ----
  msgid "offset %qwi outside bounds of constant string"
  msgstr "Offset %qwi ist auÃŸerhalb der Grenzen der konstanten Zeichenkette"
  
! #: builtins.cc:707 cp/name-lookup.cc:6941
  #, gcc-internal-format
  msgid "%qE declared here"
  msgstr "%qE ist hier deklariert"
*************** msgstr "Nicht konstantes Argument 0 fÃ¼r
*** 23880,23945 ****
  msgid "illegal argument 0 to %qs"
  msgstr "ungÃ¼ltiges Argument 0 fÃ¼r %qs"
  
  #. All valid uses of __builtin_va_arg_pack () are removed during
  #. inlining.
! #: builtins.cc:8084 expr.cc:12464
  #, gcc-internal-format
  msgid "invalid use of %<__builtin_va_arg_pack ()%>"
  msgstr "ungÃ¼ltige Verwendung von %<__builtin_va_arg_pack ()%>"
  
  #. All valid uses of __builtin_va_arg_pack_len () are removed during
  #. inlining.
! #: builtins.cc:8090
  #, gcc-internal-format
  msgid "invalid use of %<__builtin_va_arg_pack_len ()%>"
  msgstr "ungÃ¼ltige Verwendung von %<__builtin_va_arg_pack_len ()%>"
  
! #: builtins.cc:8379
  #, gcc-internal-format
  msgid "%<__builtin_longjmp%> second argument must be 1"
  msgstr "Zweites Argument fÃ¼r %<__builtin_longjmp%> muss 1 sein"
  
! #: builtins.cc:9343
  #, gcc-internal-format
  msgid "target format does not support infinity"
  msgstr "Zielformat unterstÃ¼tzt nicht Â»unendlichÂ«"
  
! #: builtins.cc:11402
  #, gcc-internal-format
  msgid "%<va_start%> used in function with fixed arguments"
  msgstr "%<va_start%> in Funktion mit fester Parameteranzahl verwendet"
  
! #: builtins.cc:11410
  #, gcc-internal-format
  msgid "wrong number of arguments to function %<va_start%>"
  msgstr "falsche Anzahl der Argumente fÃ¼r Funktion %<va_start%>"
  
! #: builtins.cc:11425
  #, gcc-internal-format
  msgid "%<__builtin_next_arg%> called without an argument"
  msgstr "%<__builtin_next_arg%> ohne Argument gerufen"
  
! #: builtins.cc:11430
  #, gcc-internal-format
  msgid "wrong number of arguments to function %<__builtin_next_arg%>"
  msgstr "falsche Anzahl der Argumente fÃ¼r Funktion %<__builtin_next_arg%>"
  
! #: builtins.cc:11463
  #, gcc-internal-format
  msgid "second parameter of %<va_start%> not last named argument"
  msgstr "Zweiter Parameter von %<va_start%> ist nicht letztgenanntes Argument"
  
! #: builtins.cc:11476 c/c-parser.cc:11669
  #, gcc-internal-format
  msgid "undefined behavior when second parameter of %<va_start%> is declared with %<register%> storage"
  msgstr "undefiniertes Verhalten, wenn zweiter Parameter von %<va_start%> mit %<register%>-Speicherklasse deklariert wird"
  
! #: builtins.cc:11505
  #, gcc-internal-format
  msgid "first argument of %qD must be a pointer, second integer constant"
  msgstr "erstes Argument von %qD muss ein Zeiger, das zweite eine Ganzzahlkonstante sein"
  
! #: builtins.cc:11518
  #, gcc-internal-format
  msgid "last argument of %qD is not integer constant between 0 and 3"
  msgstr "letztes Argument von %qD ist keine Ganzzahlkonstante zwischen 0 und 3"
--- 23893,23963 ----
  msgid "illegal argument 0 to %qs"
  msgstr "ungÃ¼ltiges Argument 0 fÃ¼r %qs"
  
+ #: builtins.cc:7806 internal-fn.cc:4030
+ #, gcc-internal-format
+ msgid "third argument to %<crc%> builtins must be a constant"
+ msgstr "Drittes Argument fÃ¼r eingebautes %<crc%> muss eine Konstante sein"
+ 
  #. All valid uses of __builtin_va_arg_pack () are removed during
  #. inlining.
! #: builtins.cc:8090 expr.cc:12464
  #, gcc-internal-format
  msgid "invalid use of %<__builtin_va_arg_pack ()%>"
  msgstr "ungÃ¼ltige Verwendung von %<__builtin_va_arg_pack ()%>"
  
  #. All valid uses of __builtin_va_arg_pack_len () are removed during
  #. inlining.
! #: builtins.cc:8096
  #, gcc-internal-format
  msgid "invalid use of %<__builtin_va_arg_pack_len ()%>"
  msgstr "ungÃ¼ltige Verwendung von %<__builtin_va_arg_pack_len ()%>"
  
! #: builtins.cc:8385
  #, gcc-internal-format
  msgid "%<__builtin_longjmp%> second argument must be 1"
  msgstr "Zweites Argument fÃ¼r %<__builtin_longjmp%> muss 1 sein"
  
! #: builtins.cc:9349
  #, gcc-internal-format
  msgid "target format does not support infinity"
  msgstr "Zielformat unterstÃ¼tzt nicht Â»unendlichÂ«"
  
! #: builtins.cc:11408
  #, gcc-internal-format
  msgid "%<va_start%> used in function with fixed arguments"
  msgstr "%<va_start%> in Funktion mit fester Parameteranzahl verwendet"
  
! #: builtins.cc:11416
  #, gcc-internal-format
  msgid "wrong number of arguments to function %<va_start%>"
  msgstr "falsche Anzahl der Argumente fÃ¼r Funktion %<va_start%>"
  
! #: builtins.cc:11431
  #, gcc-internal-format
  msgid "%<__builtin_next_arg%> called without an argument"
  msgstr "%<__builtin_next_arg%> ohne Argument gerufen"
  
! #: builtins.cc:11436
  #, gcc-internal-format
  msgid "wrong number of arguments to function %<__builtin_next_arg%>"
  msgstr "falsche Anzahl der Argumente fÃ¼r Funktion %<__builtin_next_arg%>"
  
! #: builtins.cc:11469
  #, gcc-internal-format
  msgid "second parameter of %<va_start%> not last named argument"
  msgstr "Zweiter Parameter von %<va_start%> ist nicht letztgenanntes Argument"
  
! #: builtins.cc:11482 c/c-parser.cc:11714
  #, gcc-internal-format
  msgid "undefined behavior when second parameter of %<va_start%> is declared with %<register%> storage"
  msgstr "undefiniertes Verhalten, wenn zweiter Parameter von %<va_start%> mit %<register%>-Speicherklasse deklariert wird"
  
! #: builtins.cc:11511
  #, gcc-internal-format
  msgid "first argument of %qD must be a pointer, second integer constant"
  msgstr "erstes Argument von %qD muss ein Zeiger, das zweite eine Ganzzahlkonstante sein"
  
! #: builtins.cc:11524
  #, gcc-internal-format
  msgid "last argument of %qD is not integer constant between 0 and 3"
  msgstr "letztes Argument von %qD ist keine Ganzzahlkonstante zwischen 0 und 3"
*************** msgstr "letztes Argument von %qD ist kei
*** 23950,23961 ****
  msgid "cannot tail-call: %s"
  msgstr "Tail-Call nicht mÃ¶glich: %s"
  
! #: calls.cc:2818
  #, gcc-internal-format
  msgid "function call has aggregate value"
  msgstr "Funktionsaufruf hat zusammengesetzten Wert"
  
! #: calls.cc:3561
  #, gcc-internal-format
  msgid "passing too large argument on stack"
  msgstr "Ãœbergabe von zu groÃŸem Argument auf dem Stapel"
--- 23968,23979 ----
  msgid "cannot tail-call: %s"
  msgstr "Tail-Call nicht mÃ¶glich: %s"
  
! #: calls.cc:2819
  #, gcc-internal-format
  msgid "function call has aggregate value"
  msgstr "Funktionsaufruf hat zusammengesetzten Wert"
  
! #: calls.cc:3562
  #, gcc-internal-format
  msgid "passing too large argument on stack"
  msgstr "Ãœbergabe von zu groÃŸem Argument auf dem Stapel"
*************** msgstr "Ãœbergabe von zu groÃŸem Argumen
*** 23966,24080 ****
  msgid "%<verify_marked_backedges%> failed"
  msgstr "%<verify_marked_backedges%> failed"
  
! #: cfgexpand.cc:2128
  #, gcc-internal-format
  msgid "total size of local objects is too large"
  msgstr "GesamtgrÃ¶ÃŸe der lokalen Objekte ist zu hoch"
  
! #: cfgexpand.cc:2131 function.cc:1016 varasm.cc:2539
  #, gcc-internal-format
  msgid "size of variable %q+D is too large"
  msgstr "GrÃ¶ÃŸe der Variablen %q+D ist zu hoch"
  
! #: cfgexpand.cc:2143
  #, gcc-internal-format
  msgid "cannot allocate stack for variable %q+D, naked function"
  msgstr "Stapelspeicher fÃ¼r Variable %q+D kann nicht angefordert werden, nackte Funktion"
  
! #: cfgexpand.cc:3241
  #, gcc-internal-format
  msgid "too many alternatives in %<asm%>"
  msgstr "zu viele Alternativen in %<asm%>"
  
! #: cfgexpand.cc:3248
  #, gcc-internal-format
  msgid "operand constraints for %<asm%> differ in number of alternatives"
  msgstr "Operandenbedingungen fÃ¼r %<asm%> unterscheiden sich in der Anzahl der Alternativen"
  
! #: cfgexpand.cc:3270
  #, gcc-internal-format
  msgid "%<asm%> specifier for variable %qE conflicts with %<asm%> clobber list"
  msgstr "%<asm%>-Spezifizierer fÃ¼r Variable %qE steht in Konflikt mit %<asm%>-Bestrafungs-Liste"
  
  #. ??? Diagnose during gimplification?
! #: cfgexpand.cc:3301
  #, gcc-internal-format
  msgid "PIC register clobbered by %qs in %<asm%>"
  msgstr "PIC-Register durch %qs in %<asm%> zerstÃ¶rt"
  
  #. ??? Diagnose during gimplification?
! #: cfgexpand.cc:3308
  #, gcc-internal-format
  msgid "the register %qs cannot be clobbered in %<asm%> for the current target"
  msgstr "das Register %qs kann in %<asm%> fÃ¼r das aktuelle Ziel nicht bestraft werden"
  
! #: cfgexpand.cc:3321
  #, gcc-internal-format
  msgid "listing the stack pointer register %qs in a clobber list is deprecated"
  msgstr "Es ist veraltet, das Stapelzeiger-Register %qs in einer Ãœberschreibungsliste anzugeben"
  
! #: cfgexpand.cc:3323
  #, gcc-internal-format
  msgid "the value of the stack pointer after an %<asm%> statement must be the same as it was before the statement"
  msgstr "Der Wert des Stapelzeigers muss nach einer %<asm%>-Anweisung derselbe sein wie vor der Anweisung"
  
! #: cfgexpand.cc:3393 varasm.cc:1718
  #, gcc-internal-format
  msgid "more than %d operands in %<asm%>"
  msgstr "mehr als %d Operanden in %<asm%>"
  
  #. ??? Diagnose during gimplification?
! #: cfgexpand.cc:3446
  #, gcc-internal-format
  msgid "unknown register name %qs in %<asm%>"
  msgstr "unbekannter Registername %qs in %<asm%>"
  
! #: cfgexpand.cc:3518
  #, gcc-internal-format
  msgid "invalid hard register usage between output operands"
  msgstr "ungÃ¼ltige Verwendung von festen Registern zwischen Ausgabeoperanden"
  
! #: cfgexpand.cc:3545
  #, gcc-internal-format
  msgid "invalid hard register usage between output operand and matching constraint operand"
  msgstr "ungÃ¼ltige Verwendung von festen Registern zwischen Ausgabeoperanden und dem zugehÃ¶rigen Constraint-Operanden"
  
! #: cfgexpand.cc:3553
  #, gcc-internal-format
  msgid "invalid hard register usage between earlyclobber operand and input operand"
  msgstr "ungÃ¼ltige Verwendung von festen Registern zwischen earlyclobber-Operand und Eingabeoperand"
  
! #: cfgexpand.cc:3638 varasm.cc:1757
  #, gcc-internal-format, gfc-internal-format
  msgid "output number %d not directly addressable"
  msgstr "Ausgabezahl %d nicht direkt adressierbar"
  
! #: cfgexpand.cc:3734 varasm.cc:1810
  #, gcc-internal-format
  msgid "%<asm%> operand %d probably does not match constraints"
  msgstr "%<asm%>-Operand %d passt wahrscheinlich nicht zu den Bedingungen"
  
! #: cfgexpand.cc:3927
  #, gcc-internal-format
  msgid "%<asm%> clobber conflict with output operand"
  msgstr "%<asm%>-Konflikt mit Ausgabeoperand"
  
! #: cfgexpand.cc:3932
  #, gcc-internal-format
  msgid "%<asm%> clobber conflict with input operand"
  msgstr "%<asm%>-Konflikt mit Eingabeoperand"
  
! #: cfgexpand.cc:7029
  #, gcc-internal-format
  msgid "stack protector not protecting local variables: variable length buffer"
  msgstr "Stapelschutz schÃ¼tzt nicht lokale Variablen: Puffer variabler GrÃ¶ÃŸe"
  
! #: cfgexpand.cc:7033
  #, gcc-internal-format, gfc-internal-format
  msgid "stack protector not protecting function: all local arrays are less than %d bytes long"
  msgstr "Stapelschutz schÃ¼tzt nicht Funktion: Alle lokalen Arrays sind kleiner als %d Bytes"
  
! #: cfgexpand.cc:7322
  #, gcc-internal-format
  msgid "patchable function entry %wu exceeds size %wu"
  msgstr "patchbarer Funktionseintrag %wu Ã¼berschreitet die GrÃ¶ÃŸe %wu"
--- 23984,24098 ----
  msgid "%<verify_marked_backedges%> failed"
  msgstr "%<verify_marked_backedges%> failed"
  
! #: cfgexpand.cc:2129
  #, gcc-internal-format
  msgid "total size of local objects is too large"
  msgstr "GesamtgrÃ¶ÃŸe der lokalen Objekte ist zu hoch"
  
! #: cfgexpand.cc:2132 function.cc:1016 varasm.cc:2539
  #, gcc-internal-format
  msgid "size of variable %q+D is too large"
  msgstr "GrÃ¶ÃŸe der Variablen %q+D ist zu hoch"
  
! #: cfgexpand.cc:2144
  #, gcc-internal-format
  msgid "cannot allocate stack for variable %q+D, naked function"
  msgstr "Stapelspeicher fÃ¼r Variable %q+D kann nicht angefordert werden, nackte Funktion"
  
! #: cfgexpand.cc:3242
  #, gcc-internal-format
  msgid "too many alternatives in %<asm%>"
  msgstr "zu viele Alternativen in %<asm%>"
  
! #: cfgexpand.cc:3249
  #, gcc-internal-format
  msgid "operand constraints for %<asm%> differ in number of alternatives"
  msgstr "Operandenbedingungen fÃ¼r %<asm%> unterscheiden sich in der Anzahl der Alternativen"
  
! #: cfgexpand.cc:3271
  #, gcc-internal-format
  msgid "%<asm%> specifier for variable %qE conflicts with %<asm%> clobber list"
  msgstr "%<asm%>-Spezifizierer fÃ¼r Variable %qE steht in Konflikt mit %<asm%>-Bestrafungs-Liste"
  
  #. ??? Diagnose during gimplification?
! #: cfgexpand.cc:3302
  #, gcc-internal-format
  msgid "PIC register clobbered by %qs in %<asm%>"
  msgstr "PIC-Register durch %qs in %<asm%> zerstÃ¶rt"
  
  #. ??? Diagnose during gimplification?
! #: cfgexpand.cc:3309
  #, gcc-internal-format
  msgid "the register %qs cannot be clobbered in %<asm%> for the current target"
  msgstr "das Register %qs kann in %<asm%> fÃ¼r das aktuelle Ziel nicht bestraft werden"
  
! #: cfgexpand.cc:3322
  #, gcc-internal-format
  msgid "listing the stack pointer register %qs in a clobber list is deprecated"
  msgstr "Es ist veraltet, das Stapelzeiger-Register %qs in einer Ãœberschreibungsliste anzugeben"
  
! #: cfgexpand.cc:3324
  #, gcc-internal-format
  msgid "the value of the stack pointer after an %<asm%> statement must be the same as it was before the statement"
  msgstr "Der Wert des Stapelzeigers muss nach einer %<asm%>-Anweisung derselbe sein wie vor der Anweisung"
  
! #: cfgexpand.cc:3394 varasm.cc:1718
  #, gcc-internal-format
  msgid "more than %d operands in %<asm%>"
  msgstr "mehr als %d Operanden in %<asm%>"
  
  #. ??? Diagnose during gimplification?
! #: cfgexpand.cc:3447
  #, gcc-internal-format
  msgid "unknown register name %qs in %<asm%>"
  msgstr "unbekannter Registername %qs in %<asm%>"
  
! #: cfgexpand.cc:3519
  #, gcc-internal-format
  msgid "invalid hard register usage between output operands"
  msgstr "ungÃ¼ltige Verwendung von festen Registern zwischen Ausgabeoperanden"
  
! #: cfgexpand.cc:3546
  #, gcc-internal-format
  msgid "invalid hard register usage between output operand and matching constraint operand"
  msgstr "ungÃ¼ltige Verwendung von festen Registern zwischen Ausgabeoperanden und dem zugehÃ¶rigen Constraint-Operanden"
  
! #: cfgexpand.cc:3554
  #, gcc-internal-format
  msgid "invalid hard register usage between earlyclobber operand and input operand"
  msgstr "ungÃ¼ltige Verwendung von festen Registern zwischen earlyclobber-Operand und Eingabeoperand"
  
! #: cfgexpand.cc:3639 varasm.cc:1757
  #, gcc-internal-format, gfc-internal-format
  msgid "output number %d not directly addressable"
  msgstr "Ausgabezahl %d nicht direkt adressierbar"
  
! #: cfgexpand.cc:3735 varasm.cc:1810
  #, gcc-internal-format
  msgid "%<asm%> operand %d probably does not match constraints"
  msgstr "%<asm%>-Operand %d passt wahrscheinlich nicht zu den Bedingungen"
  
! #: cfgexpand.cc:3928
  #, gcc-internal-format
  msgid "%<asm%> clobber conflict with output operand"
  msgstr "%<asm%>-Konflikt mit Ausgabeoperand"
  
! #: cfgexpand.cc:3933
  #, gcc-internal-format
  msgid "%<asm%> clobber conflict with input operand"
  msgstr "%<asm%>-Konflikt mit Eingabeoperand"
  
! #: cfgexpand.cc:7085
  #, gcc-internal-format
  msgid "stack protector not protecting local variables: variable length buffer"
  msgstr "Stapelschutz schÃ¼tzt nicht lokale Variablen: Puffer variabler GrÃ¶ÃŸe"
  
! #: cfgexpand.cc:7089
  #, gcc-internal-format, gfc-internal-format
  msgid "stack protector not protecting function: all local arrays are less than %d bytes long"
  msgstr "Stapelschutz schÃ¼tzt nicht Funktion: Alle lokalen Arrays sind kleiner als %d Bytes"
  
! #: cfgexpand.cc:7378
  #, gcc-internal-format
  msgid "patchable function entry %wu exceeds size %wu"
  msgstr "patchbarer Funktionseintrag %wu Ã¼berschreitet die GrÃ¶ÃŸe %wu"
*************** msgstr "Interner Fehler: basic blocks no
*** 24604,24910 ****
  msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)"
  msgstr "Interner Fehler: number of bb notes in insn chain (%d) != n_basic_blocks (%d)"
  
! #: cgraph.cc:3266
  #, gcc-internal-format
  msgid "caller edge count invalid"
  msgstr "Interner Fehler: caller edge count invalid"
  
! #: cgraph.cc:3363
  #, gcc-internal-format
  msgid "missing indirect call in speculative call sequence"
  msgstr "fehlender indirekter Aufruf in der Folge der spekulativen Aufrufe"
  
! #: cgraph.cc:3368
  #, gcc-internal-format
  msgid "indirect call in speculative call sequence has no speculative flag"
  msgstr "indirekter Aufruf in der Folge der spekulativen Aufrufe hat kein Spekulationsflag"
  
! #: cgraph.cc:3398
  #, gcc-internal-format
  msgid "speculative edges are not adjacent"
  msgstr "spekulative Kanten sind nicht benachbart"
  
! #: cgraph.cc:3404
  #, gcc-internal-format, gfc-internal-format
  msgid "direct call to %s in speculative call sequence has no speculative flag"
  msgstr "der direkte Aufruf von %s in der Folge der spekulativen Aufrufe hat kein Spekulationsflag"
  
! #: cgraph.cc:3410 cgraph.cc:3440
  #, gcc-internal-format, gfc-internal-format
  msgid "direct call to %s in speculative call sequence has speculative_id %i out of range"
  msgstr "der direkte Aufruf von %s in der Folge der spekulativen Aufrufe hat speculative_id %i auÃŸerhalb des Bereichs"
  
! #: cgraph.cc:3417
  #, gcc-internal-format, gfc-internal-format
  msgid "duplicate direct call to %s in speculative call sequence with speculative_id %i"
  msgstr "doppelter direkter Aufruf von %s in der Folge der spekulativen Aufrufe mit speculative_id %i"
  
! #: cgraph.cc:3428
  #, gcc-internal-format
  msgid "call stmt hash does not point to first direct edge of speculative call sequence"
  msgstr "der Hash der Aufrufanweisung zeigt nicht auf die erste direkte Kante der Folge von spekulativen Aufrufen"
  
! #: cgraph.cc:3447
  #, gcc-internal-format, gfc-internal-format
  msgid "duplicate reference %s in speculative call sequence with speculative_id %i"
  msgstr "doppelter Verweis %s in der Folge der spekulativen Aufrufe mit speculative_id %i"
  
! #: cgraph.cc:3460
  #, gcc-internal-format, gfc-internal-format
  msgid "missing direct call for speculation %i"
  msgstr "missing direct call for speculation %i"
  
! #: cgraph.cc:3465
  #, gcc-internal-format, gfc-internal-format
  msgid "missing ref for speculation %i"
  msgstr "missing ref for speculation %i"
  
! #: cgraph.cc:3474
  #, gcc-internal-format, gfc-internal-format
  msgid "number of speculative targets %i mismatched with num_speculative_call_targets %i"
  msgstr "Anzahl der spekulativen Ziele %i stimmt nicht mit num_speculative_call_targets %i Ã¼berein"
  
! #: cgraph.cc:3503
  #, gcc-internal-format, gfc-internal-format
  msgid "aux field set for edge %s->%s"
  msgstr "Interner Fehler: aux field set for edge %s->%s"
  
! #: cgraph.cc:3510
  #, gcc-internal-format
  msgid "cgraph count invalid"
  msgstr "Interner Fehler: cgraph count invalid"
  
! #: cgraph.cc:3515
  #, gcc-internal-format
  msgid "inline clone in same comdat group list"
  msgstr "Interner Fehler: inline clone in same comdat group list"
  
! #: cgraph.cc:3520
  #, gcc-internal-format
  msgid "inline clone count is not compatible"
  msgstr "inline clone count is not compatible"
  
! #: cgraph.cc:3527
  #, gcc-internal-format
  msgid "tp_first_run must be non-negative"
  msgstr "tp_first_run must be non-negative"
  
! #: cgraph.cc:3532
  #, gcc-internal-format
  msgid "local symbols must be defined"
  msgstr "Interner Fehler: local symbols must be defined"
  
! #: cgraph.cc:3537
  #, gcc-internal-format
  msgid "externally visible inline clone"
  msgstr "Interner Fehler: externally visible inline clone"
  
! #: cgraph.cc:3542
  #, gcc-internal-format
  msgid "inline clone with address taken"
  msgstr "Interner Fehler: inline clone with address taken"
  
! #: cgraph.cc:3547
  #, gcc-internal-format
  msgid "inline clone is forced to output"
  msgstr "Interner Fehler: inline clone is forced to output"
  
! #: cgraph.cc:3554
  #, gcc-internal-format
  msgid "calls_comdat_local is set outside of a comdat group"
  msgstr "calls_comdat_local wird auÃŸerhalb einer comdat-Gruppe gesetzt"
  
! #: cgraph.cc:3559
  #, gcc-internal-format
  msgid "invalid calls_comdat_local flag"
  msgstr "ungÃ¼ltiger Schalter Â»calls_comdat_localÂ«"
  
! #: cgraph.cc:3566
  #, gcc-internal-format
  msgid "malloc attribute should be used for a function that returns a pointer"
  msgstr "Attribut %<malloc%> ist nur an Funktionen sinnvoll, die einen Zeiger zurÃ¼ckgeben"
  
! #: cgraph.cc:3578
  #, gcc-internal-format
  msgid "semantic interposition mismatch"
  msgstr "Fehlzuordnung von semantischer Einlagerung"
  
! #: cgraph.cc:3585
  #, gcc-internal-format, gfc-internal-format
  msgid "aux field set for indirect edge from %s"
  msgstr "Interner Fehler: aux field set for indirect edge from %s"
  
! #: cgraph.cc:3591 cgraph.cc:3651
  #, gcc-internal-format
  msgid "edge count is not compatible with function count"
  msgstr "edge count is not compatible with function count"
  
! #: cgraph.cc:3599
  #, gcc-internal-format, gfc-internal-format
  msgid "An indirect edge from %s is not marked as indirect or has associated indirect_info, the corresponding statement is: "
  msgstr "Interner Fehler: An indirect edge from %s is not marked as indirect or has associated indirect_info, the corresponding statement is: "
  
! #: cgraph.cc:3607 cgraph.cc:3679
  #, gcc-internal-format
  msgid "edge has both call_stmt and lto_stmt_uid set"
  msgstr "Kante hat sowohl call_stmt als auch lto_stmt_uid gesetzt"
  
! #: cgraph.cc:3619
  #, gcc-internal-format, gfc-internal-format
  msgid "comdat-local function called by %s outside its comdat"
  msgstr "Interner Fehler: comdat-local function called by %s outside its comdat"
  
! #: cgraph.cc:3629
  #, gcc-internal-format
  msgid "inlined_to pointer is wrong"
  msgstr "Interner Fehler: inlined_to pointer is wrong"
  
! #: cgraph.cc:3634
  #, gcc-internal-format
  msgid "multiple inline callers"
  msgstr "Interner Fehler: multiple inline callers"
  
! #: cgraph.cc:3641
  #, gcc-internal-format
  msgid "inlined_to pointer set for noninline callers"
  msgstr "Interner Fehler: inlined_to pointer set for noninline callers"
  
! #: cgraph.cc:3669
  #, gcc-internal-format
  msgid "caller edge count does not match BB count"
  msgstr "Interner Fehler: caller edge count does not match BB count"
  
! #: cgraph.cc:3700
  #, gcc-internal-format
  msgid "indirect call count does not match BB count"
  msgstr "Interner Fehler: indirect call count does not match BB count"
  
! #: cgraph.cc:3717
  #, gcc-internal-format
  msgid "reference has both stmt and lto_stmt_uid set"
  msgstr "Verweis hat sowohl stmt als auch lto_stmt_uid gesetzt"
  
! #: cgraph.cc:3728
  #, gcc-internal-format
  msgid "inlined_to pointer is set but no predecessors found"
  msgstr "Interner Fehler: inlined_to pointer is set but no predecessors found"
  
! #: cgraph.cc:3733
  #, gcc-internal-format
  msgid "inlined_to pointer refers to itself"
  msgstr "Interner Fehler: inlined_to pointer refers to itself"
  
! #: cgraph.cc:3744
  #, gcc-internal-format
  msgid "cgraph_node has wrong clone_of"
  msgstr "Interner Fehler: cgraph_node has wrong clone_of"
  
! #: cgraph.cc:3757
  #, gcc-internal-format
  msgid "cgraph_node has wrong clone list"
  msgstr "Interner Fehler: cgraph_node has wrong clone list"
  
! #: cgraph.cc:3763
  #, gcc-internal-format
  msgid "cgraph_node is in clone list but it is not clone"
  msgstr "Interner Fehler: cgraph_node is in clone list but it is not clone"
  
! #: cgraph.cc:3768
  #, gcc-internal-format
  msgid "cgraph_node has wrong prev_clone pointer"
  msgstr "Interner Fehler: cgraph_node has wrong prev_clone pointer"
  
! #: cgraph.cc:3773
  #, gcc-internal-format
  msgid "double linked list of clones corrupted"
  msgstr "Interner Fehler: double linked list of clones corrupted"
  
! #: cgraph.cc:3785
  #, gcc-internal-format
  msgid "Alias has call edges"
  msgstr "Interner Fehler: Alias has call edges"
  
! #: cgraph.cc:3791
  #, gcc-internal-format
  msgid "Alias has non-alias reference"
  msgstr "Interner Fehler: Alias has non-alias reference"
  
! #: cgraph.cc:3796
  #, gcc-internal-format
  msgid "Alias has more than one alias reference"
  msgstr "Interner Fehler: Alias has more than one alias reference"
  
! #: cgraph.cc:3803
  #, gcc-internal-format
  msgid "Analyzed alias has no reference"
  msgstr "Interner Fehler: Analyzed alias has no reference"
  
! #: cgraph.cc:3812
  #, gcc-internal-format
  msgid "No edge out of thunk node"
  msgstr "Interner Fehler: No edge out of thunk node"
  
! #: cgraph.cc:3817
  #, gcc-internal-format
  msgid "More than one edge out of thunk node"
  msgstr "Interner Fehler: More than one edge out of thunk node"
  
! #: cgraph.cc:3822
  #, gcc-internal-format
  msgid "Thunk is not supposed to have body"
  msgstr "Interner Fehler: Thunk is not supposed to have body"
  
! #: cgraph.cc:3858
  #, gcc-internal-format
  msgid "shared call_stmt:"
  msgstr "Interner Fehler: shared call_stmt:"
  
! #: cgraph.cc:3866
  #, gcc-internal-format
  msgid "edge points to wrong declaration:"
  msgstr "Interner Fehler: edge points to wrong declaration:"
  
! #: cgraph.cc:3875
  #, gcc-internal-format
  msgid "an indirect edge with unknown callee corresponding to a call_stmt with a known declaration:"
  msgstr "Interner Fehler: an indirect edge with unknown callee corresponding to a call_stmt with a known declaration:"
  
! #: cgraph.cc:3885
  #, gcc-internal-format
  msgid "missing callgraph edge for call stmt:"
  msgstr "Interner Fehler: missing callgraph edge for call stmt:"
  
! #: cgraph.cc:3895
  #, gcc-internal-format
  msgid "reference to dead statement"
  msgstr "Interner Fehler: reference to dead statement"
  
! #: cgraph.cc:3908
  #, gcc-internal-format, gfc-internal-format
  msgid "edge %s->%s has no corresponding call_stmt"
  msgstr "Interner Fehler: edge %s->%s has no corresponding call_stmt"
  
! #: cgraph.cc:3920
  #, gcc-internal-format, gfc-internal-format
  msgid "an indirect edge from %s has no corresponding call_stmt"
  msgstr "Interner Fehler: an indirect edge from %s has no corresponding call_stmt"
  
! #: cgraph.cc:3939 cgraph.cc:3952
  #, gcc-internal-format
  msgid "missing origin for a node in a nested list"
  msgstr "fehlender Ursprung fÃ¼r einen Knoten in einer verschachtelten Liste"
  
! #: cgraph.cc:3944
  #, gcc-internal-format
  msgid "origin points to a different parent"
  msgstr "origin points to a different parent"
  
! #: cgraph.cc:3960
  #, gcc-internal-format
  msgid "verify_cgraph_node failed"
  msgstr "Interner Fehler: verify_cgraph_node failed"
  
! #: cgraph.cc:4082 varpool.cc:304
  #, gcc-internal-format, gfc-internal-format
  msgid "%s: section %s.%d is missing"
  msgstr "%s: section %s.%d is missing"
--- 24622,24928 ----
  msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)"
  msgstr "Interner Fehler: number of bb notes in insn chain (%d) != n_basic_blocks (%d)"
  
! #: cgraph.cc:3279
  #, gcc-internal-format
  msgid "caller edge count invalid"
  msgstr "Interner Fehler: caller edge count invalid"
  
! #: cgraph.cc:3376
  #, gcc-internal-format
  msgid "missing indirect call in speculative call sequence"
  msgstr "fehlender indirekter Aufruf in der Folge der spekulativen Aufrufe"
  
! #: cgraph.cc:3381
  #, gcc-internal-format
  msgid "indirect call in speculative call sequence has no speculative flag"
  msgstr "indirekter Aufruf in der Folge der spekulativen Aufrufe hat kein Spekulationsflag"
  
! #: cgraph.cc:3411
  #, gcc-internal-format
  msgid "speculative edges are not adjacent"
  msgstr "spekulative Kanten sind nicht benachbart"
  
! #: cgraph.cc:3417
  #, gcc-internal-format, gfc-internal-format
  msgid "direct call to %s in speculative call sequence has no speculative flag"
  msgstr "der direkte Aufruf von %s in der Folge der spekulativen Aufrufe hat kein Spekulationsflag"
  
! #: cgraph.cc:3423 cgraph.cc:3453
  #, gcc-internal-format, gfc-internal-format
  msgid "direct call to %s in speculative call sequence has speculative_id %i out of range"
  msgstr "der direkte Aufruf von %s in der Folge der spekulativen Aufrufe hat speculative_id %i auÃŸerhalb des Bereichs"
  
! #: cgraph.cc:3430
  #, gcc-internal-format, gfc-internal-format
  msgid "duplicate direct call to %s in speculative call sequence with speculative_id %i"
  msgstr "doppelter direkter Aufruf von %s in der Folge der spekulativen Aufrufe mit speculative_id %i"
  
! #: cgraph.cc:3441
  #, gcc-internal-format
  msgid "call stmt hash does not point to first direct edge of speculative call sequence"
  msgstr "der Hash der Aufrufanweisung zeigt nicht auf die erste direkte Kante der Folge von spekulativen Aufrufen"
  
! #: cgraph.cc:3460
  #, gcc-internal-format, gfc-internal-format
  msgid "duplicate reference %s in speculative call sequence with speculative_id %i"
  msgstr "doppelter Verweis %s in der Folge der spekulativen Aufrufe mit speculative_id %i"
  
! #: cgraph.cc:3473
  #, gcc-internal-format, gfc-internal-format
  msgid "missing direct call for speculation %i"
  msgstr "missing direct call for speculation %i"
  
! #: cgraph.cc:3478
  #, gcc-internal-format, gfc-internal-format
  msgid "missing ref for speculation %i"
  msgstr "missing ref for speculation %i"
  
! #: cgraph.cc:3487
  #, gcc-internal-format, gfc-internal-format
  msgid "number of speculative targets %i mismatched with num_speculative_call_targets %i"
  msgstr "Anzahl der spekulativen Ziele %i stimmt nicht mit num_speculative_call_targets %i Ã¼berein"
  
! #: cgraph.cc:3516
  #, gcc-internal-format, gfc-internal-format
  msgid "aux field set for edge %s->%s"
  msgstr "Interner Fehler: aux field set for edge %s->%s"
  
! #: cgraph.cc:3523
  #, gcc-internal-format
  msgid "cgraph count invalid"
  msgstr "Interner Fehler: cgraph count invalid"
  
! #: cgraph.cc:3528
  #, gcc-internal-format
  msgid "inline clone in same comdat group list"
  msgstr "Interner Fehler: inline clone in same comdat group list"
  
! #: cgraph.cc:3533
  #, gcc-internal-format
  msgid "inline clone count is not compatible"
  msgstr "inline clone count is not compatible"
  
! #: cgraph.cc:3540
  #, gcc-internal-format
  msgid "tp_first_run must be non-negative"
  msgstr "tp_first_run must be non-negative"
  
! #: cgraph.cc:3545
  #, gcc-internal-format
  msgid "local symbols must be defined"
  msgstr "Interner Fehler: local symbols must be defined"
  
! #: cgraph.cc:3550
  #, gcc-internal-format
  msgid "externally visible inline clone"
  msgstr "Interner Fehler: externally visible inline clone"
  
! #: cgraph.cc:3555
  #, gcc-internal-format
  msgid "inline clone with address taken"
  msgstr "Interner Fehler: inline clone with address taken"
  
! #: cgraph.cc:3560
  #, gcc-internal-format
  msgid "inline clone is forced to output"
  msgstr "Interner Fehler: inline clone is forced to output"
  
! #: cgraph.cc:3567
  #, gcc-internal-format
  msgid "calls_comdat_local is set outside of a comdat group"
  msgstr "calls_comdat_local wird auÃŸerhalb einer comdat-Gruppe gesetzt"
  
! #: cgraph.cc:3572
  #, gcc-internal-format
  msgid "invalid calls_comdat_local flag"
  msgstr "ungÃ¼ltiger Schalter Â»calls_comdat_localÂ«"
  
! #: cgraph.cc:3579
  #, gcc-internal-format
  msgid "malloc attribute should be used for a function that returns a pointer"
  msgstr "Attribut %<malloc%> ist nur an Funktionen sinnvoll, die einen Zeiger zurÃ¼ckgeben"
  
! #: cgraph.cc:3591
  #, gcc-internal-format
  msgid "semantic interposition mismatch"
  msgstr "Fehlzuordnung von semantischer Einlagerung"
  
! #: cgraph.cc:3598
  #, gcc-internal-format, gfc-internal-format
  msgid "aux field set for indirect edge from %s"
  msgstr "Interner Fehler: aux field set for indirect edge from %s"
  
! #: cgraph.cc:3604 cgraph.cc:3664
  #, gcc-internal-format
  msgid "edge count is not compatible with function count"
  msgstr "edge count is not compatible with function count"
  
! #: cgraph.cc:3612
  #, gcc-internal-format, gfc-internal-format
  msgid "An indirect edge from %s is not marked as indirect or has associated indirect_info, the corresponding statement is: "
  msgstr "Interner Fehler: An indirect edge from %s is not marked as indirect or has associated indirect_info, the corresponding statement is: "
  
! #: cgraph.cc:3620 cgraph.cc:3692
  #, gcc-internal-format
  msgid "edge has both call_stmt and lto_stmt_uid set"
  msgstr "Kante hat sowohl call_stmt als auch lto_stmt_uid gesetzt"
  
! #: cgraph.cc:3632
  #, gcc-internal-format, gfc-internal-format
  msgid "comdat-local function called by %s outside its comdat"
  msgstr "Interner Fehler: comdat-local function called by %s outside its comdat"
  
! #: cgraph.cc:3642
  #, gcc-internal-format
  msgid "inlined_to pointer is wrong"
  msgstr "Interner Fehler: inlined_to pointer is wrong"
  
! #: cgraph.cc:3647
  #, gcc-internal-format
  msgid "multiple inline callers"
  msgstr "Interner Fehler: multiple inline callers"
  
! #: cgraph.cc:3654
  #, gcc-internal-format
  msgid "inlined_to pointer set for noninline callers"
  msgstr "Interner Fehler: inlined_to pointer set for noninline callers"
  
! #: cgraph.cc:3682
  #, gcc-internal-format
  msgid "caller edge count does not match BB count"
  msgstr "Interner Fehler: caller edge count does not match BB count"
  
! #: cgraph.cc:3713
  #, gcc-internal-format
  msgid "indirect call count does not match BB count"
  msgstr "Interner Fehler: indirect call count does not match BB count"
  
! #: cgraph.cc:3730
  #, gcc-internal-format
  msgid "reference has both stmt and lto_stmt_uid set"
  msgstr "Verweis hat sowohl stmt als auch lto_stmt_uid gesetzt"
  
! #: cgraph.cc:3741
  #, gcc-internal-format
  msgid "inlined_to pointer is set but no predecessors found"
  msgstr "Interner Fehler: inlined_to pointer is set but no predecessors found"
  
! #: cgraph.cc:3746
  #, gcc-internal-format
  msgid "inlined_to pointer refers to itself"
  msgstr "Interner Fehler: inlined_to pointer refers to itself"
  
! #: cgraph.cc:3757
  #, gcc-internal-format
  msgid "cgraph_node has wrong clone_of"
  msgstr "Interner Fehler: cgraph_node has wrong clone_of"
  
! #: cgraph.cc:3770
  #, gcc-internal-format
  msgid "cgraph_node has wrong clone list"
  msgstr "Interner Fehler: cgraph_node has wrong clone list"
  
! #: cgraph.cc:3776
  #, gcc-internal-format
  msgid "cgraph_node is in clone list but it is not clone"
  msgstr "Interner Fehler: cgraph_node is in clone list but it is not clone"
  
! #: cgraph.cc:3781
  #, gcc-internal-format
  msgid "cgraph_node has wrong prev_clone pointer"
  msgstr "Interner Fehler: cgraph_node has wrong prev_clone pointer"
  
! #: cgraph.cc:3786
  #, gcc-internal-format
  msgid "double linked list of clones corrupted"
  msgstr "Interner Fehler: double linked list of clones corrupted"
  
! #: cgraph.cc:3798
  #, gcc-internal-format
  msgid "Alias has call edges"
  msgstr "Interner Fehler: Alias has call edges"
  
! #: cgraph.cc:3804
  #, gcc-internal-format
  msgid "Alias has non-alias reference"
  msgstr "Interner Fehler: Alias has non-alias reference"
  
! #: cgraph.cc:3809
  #, gcc-internal-format
  msgid "Alias has more than one alias reference"
  msgstr "Interner Fehler: Alias has more than one alias reference"
  
! #: cgraph.cc:3816
  #, gcc-internal-format
  msgid "Analyzed alias has no reference"
  msgstr "Interner Fehler: Analyzed alias has no reference"
  
! #: cgraph.cc:3825
  #, gcc-internal-format
  msgid "No edge out of thunk node"
  msgstr "Interner Fehler: No edge out of thunk node"
  
! #: cgraph.cc:3830
  #, gcc-internal-format
  msgid "More than one edge out of thunk node"
  msgstr "Interner Fehler: More than one edge out of thunk node"
  
! #: cgraph.cc:3835
  #, gcc-internal-format
  msgid "Thunk is not supposed to have body"
  msgstr "Interner Fehler: Thunk is not supposed to have body"
  
! #: cgraph.cc:3871
  #, gcc-internal-format
  msgid "shared call_stmt:"
  msgstr "Interner Fehler: shared call_stmt:"
  
! #: cgraph.cc:3879
  #, gcc-internal-format
  msgid "edge points to wrong declaration:"
  msgstr "Interner Fehler: edge points to wrong declaration:"
  
! #: cgraph.cc:3888
  #, gcc-internal-format
  msgid "an indirect edge with unknown callee corresponding to a call_stmt with a known declaration:"
  msgstr "Interner Fehler: an indirect edge with unknown callee corresponding to a call_stmt with a known declaration:"
  
! #: cgraph.cc:3898
  #, gcc-internal-format
  msgid "missing callgraph edge for call stmt:"
  msgstr "Interner Fehler: missing callgraph edge for call stmt:"
  
! #: cgraph.cc:3908
  #, gcc-internal-format
  msgid "reference to dead statement"
  msgstr "Interner Fehler: reference to dead statement"
  
! #: cgraph.cc:3921
  #, gcc-internal-format, gfc-internal-format
  msgid "edge %s->%s has no corresponding call_stmt"
  msgstr "Interner Fehler: edge %s->%s has no corresponding call_stmt"
  
! #: cgraph.cc:3933
  #, gcc-internal-format, gfc-internal-format
  msgid "an indirect edge from %s has no corresponding call_stmt"
  msgstr "Interner Fehler: an indirect edge from %s has no corresponding call_stmt"
  
! #: cgraph.cc:3952 cgraph.cc:3965
  #, gcc-internal-format
  msgid "missing origin for a node in a nested list"
  msgstr "fehlender Ursprung fÃ¼r einen Knoten in einer verschachtelten Liste"
  
! #: cgraph.cc:3957
  #, gcc-internal-format
  msgid "origin points to a different parent"
  msgstr "origin points to a different parent"
  
! #: cgraph.cc:3973
  #, gcc-internal-format
  msgid "verify_cgraph_node failed"
  msgstr "Interner Fehler: verify_cgraph_node failed"
  
! #: cgraph.cc:4095 varpool.cc:304
  #, gcc-internal-format, gfc-internal-format
  msgid "%s: section %s.%d is missing"
  msgstr "%s: section %s.%d is missing"
*************** msgstr "Attribut %<weakref%> ignoriert,
*** 24986,24997 ****
  
  #. include_self=
  #. TODO: Add OPT_Wundefined-inline.
! #: cgraphunit.cc:1112 c/c-decl.cc:13593
  #, gcc-internal-format
  msgid "%q+F used but never defined"
  msgstr "%q+F verwendet, aber nirgendwo definiert"
  
! #: cgraphunit.cc:1114 c/c-decl.cc:13603
  #, gcc-internal-format
  msgid "%q+F declared %<static%> but never defined"
  msgstr "%q+F als %<static%> deklariert, aber nirgendwo definiert"
--- 25004,25015 ----
  
  #. include_self=
  #. TODO: Add OPT_Wundefined-inline.
! #: cgraphunit.cc:1112 c/c-decl.cc:13597
  #, gcc-internal-format
  msgid "%q+F used but never defined"
  msgstr "%q+F verwendet, aber nirgendwo definiert"
  
! #: cgraphunit.cc:1114 c/c-decl.cc:13607
  #, gcc-internal-format
  msgid "%q+F declared %<static%> but never defined"
  msgstr "%q+F als %<static%> deklariert, aber nirgendwo definiert"
*************** msgstr "Umgebungsvariable %<COLLECT_LTO_
*** 25122,25128 ****
  msgid "ld returned %d exit status"
  msgstr "ld gab %d als Ende-Status zurÃ¼ck"
  
! #: collect2.cc:916 gcc.cc:8378 config/nvptx/mkoffload.cc:640
  #, gcc-internal-format
  msgid "atexit failed"
  msgstr "atexit gescheitert"
--- 25140,25146 ----
  msgid "ld returned %d exit status"
  msgstr "ld gab %d als Ende-Status zurÃ¼ck"
  
! #: collect2.cc:916 gcc.cc:8378 config/nvptx/mkoffload.cc:646
  #, gcc-internal-format
  msgid "atexit failed"
  msgstr "atexit gescheitert"
*************** msgstr "IntervallÃ¼berlappung von %<-fdb
*** 25388,25394 ****
  #: dbgcnt.cc:157
  #, gcc-internal-format
  msgid "%<-fdbg-cnt=%s:%d-%d%> has smaller upper limit than the lower"
! msgstr "%<-fdbg-cnt=%s:%d:%d%> hat kleinere obere als untere Grenze"
  
  #: dbgcnt.cc:169
  #, gcc-internal-format
--- 25406,25412 ----
  #: dbgcnt.cc:157
  #, gcc-internal-format
  msgid "%<-fdbg-cnt=%s:%d-%d%> has smaller upper limit than the lower"
! msgstr "%<-fdbg-cnt=%s:%d-%d%> hat kleinere obere als untere Grenze"
  
  #: dbgcnt.cc:169
  #, gcc-internal-format
*************** msgstr "Aufruf von %qs mit Attributwarnu
*** 25631,25639 ****
  #: expr.cc:13544
  #, gcc-internal-format
  msgid "assuming signed overflow does not occur when simplifying %<X - Y %s 0%> to %<X %s Y%>"
! msgstr "der Compiler geht davon aus, dass kein vorzeichenbehafteter Ãœberlauf auftritt, und vereinfacht daher %<X - Y %s 0%> zu %<X %s 0%>"
  
! #: ext-dce.cc:1115
  #, gcc-internal-format
  msgid "ext-dce disabled: %d basic blocks and %d registers; increase %<--param max-gcse-memory%> above %wu"
  msgstr "ext-dce ausgeschaltet: %d BasisblÃ¶cke und %d Register; erhÃ¶hen Sie %<--param max-gcse-memory%> auf mehr als %wu"
--- 25649,25657 ----
  #: expr.cc:13544
  #, gcc-internal-format
  msgid "assuming signed overflow does not occur when simplifying %<X - Y %s 0%> to %<X %s Y%>"
! msgstr "der Compiler geht davon aus, dass kein vorzeichenbehafteter Ãœberlauf auftritt, und vereinfacht daher %<X - Y %s 0%> zu %<X %s Y%>"
  
! #: ext-dce.cc:1202
  #, gcc-internal-format
  msgid "ext-dce disabled: %d basic blocks and %d registers; increase %<--param max-gcse-memory%> above %wu"
  msgstr "ext-dce ausgeschaltet: %d BasisblÃ¶cke und %d Register; erhÃ¶hen Sie %<--param max-gcse-memory%> auf mehr als %wu"
*************** msgstr "%qs ist eine unbekannte Option f
*** 25854,25860 ****
  #: gcc.cc:5062
  #, gcc-internal-format
  msgid "linker hardening options not enabled by %<-fhardened%> because other link options were specified on the command line"
! msgstr "linker-HÃ¤rtungsoptionen nicht durch %<-fhardened%> aktiviert, da andere Link-Optionen auf der Kommandozeile angegeben wurden"
  
  #: gcc.cc:5086 toplev.cc:717
  #, gcc-internal-format
--- 25872,25878 ----
  #: gcc.cc:5062
  #, gcc-internal-format
  msgid "linker hardening options not enabled by %<-fhardened%> because other link options were specified on the command line"
! msgstr "Binder-HÃ¤rtungsoptionen nicht durch %<-fhardened%> aktiviert, da andere Binder-Optionen auf der Kommandozeile angegeben wurden"
  
  #: gcc.cc:5086 toplev.cc:717
  #, gcc-internal-format
*************** msgstr "%<-x %s%> hinter letzter Eingabe
*** 25879,25885 ****
  #: gcc.cc:5767
  #, gcc-internal-format
  msgid "unable to locate default linker script %qs in the library search paths"
! msgstr "Standard-Linkerscript %qs kann nicht in den Bibliotheks-Suchpfaden gefunden werden"
  
  #: gcc.cc:5974
  #, gcc-internal-format
--- 25897,25903 ----
  #: gcc.cc:5767
  #, gcc-internal-format
  msgid "unable to locate default linker script %qs in the library search paths"
! msgstr "Standard-Binderscript %qs kann nicht in den Bibliotheks-Suchpfaden gefunden werden"
  
  #: gcc.cc:5974
  #, gcc-internal-format
*************** msgstr "%<-fuse-linker-plugin%>, aber %s
*** 26053,26059 ****
  #: gcc.cc:9301
  #, gcc-internal-format, gfc-internal-format
  msgid "%s: linker input file unused because linking not done"
! msgstr "%s: Eingabedatei des Linkers unbenutzt, da das Linken nicht durchgefÃ¼hrt wird"
  
  #. This is can be an indication the user specifed an errorneous
  #. separated option value, (or used the wrong prefix for an
--- 26071,26077 ----
  #: gcc.cc:9301
  #, gcc-internal-format, gfc-internal-format
  msgid "%s: linker input file unused because linking not done"
! msgstr "%s: Eingabedatei des Binders unbenutzt, da das Binden nicht durchgefÃ¼hrt wird"
  
  #. This is can be an indication the user specifed an errorneous
  #. separated option value, (or used the wrong prefix for an
*************** msgstr "%s: Eingabedatei des Linkers unb
*** 26061,26067 ****
  #: gcc.cc:9307
  #, gcc-internal-format
  msgid "%s: linker input file not found: %m"
! msgstr "%s: Linker-Eingabedatei nicht gefunden: %m"
  
  #: gcc.cc:9379 c-family/c-opts.cc:852
  #, gcc-internal-format
--- 26079,26085 ----
  #: gcc.cc:9307
  #, gcc-internal-format
  msgid "%s: linker input file not found: %m"
! msgstr "%s: Binder-Eingabedatei nicht gefunden: %m"
  
  #: gcc.cc:9379 c-family/c-opts.cc:852
  #, gcc-internal-format
*************** msgstr "%qD angegebene Grenze %E ist gen
*** 26388,26394 ****
  msgid "flexible array member %qD does not have well defined padding bits for %qs"
  msgstr "flexibles Arrayelement %qD hat keine wohldefinierten Paddingbits fÃ¼r %qs"
  
! #: gimple-fold.cc:4970 cp/constexpr.cc:5103
  #, gcc-internal-format
  msgid "PDP11 bit-field handling unsupported in %qs"
  msgstr "PDP11-Bitfeld-Verarbeitung wird in %qs nicht unterstÃ¼tzt"
--- 26406,26412 ----
  msgid "flexible array member %qD does not have well defined padding bits for %qs"
  msgstr "flexibles Arrayelement %qD hat keine wohldefinierten Paddingbits fÃ¼r %qs"
  
! #: gimple-fold.cc:4970 cp/constexpr.cc:5115
  #, gcc-internal-format
  msgid "PDP11 bit-field handling unsupported in %qs"
  msgstr "PDP11-Bitfeld-Verarbeitung wird in %qs nicht unterstÃ¼tzt"
*************** msgstr "%s wird fÃ¼r Aggregattypen mit v
*** 26403,26409 ****
  msgid "%s not supported on this target"
  msgstr "%s wird auf diesem Ziel nicht unterstÃ¼tzt"
  
! #: gimple-fold.cc:8578 gimple-fold.cc:8607
  #, gcc-internal-format, gfc-internal-format
  msgid "comparison is always %d"
  msgstr "Vergleich ist immer %d"
--- 26421,26427 ----
  msgid "%s not supported on this target"
  msgstr "%s wird auf diesem Ziel nicht unterstÃ¼tzt"
  
! #: gimple-fold.cc:8582 gimple-fold.cc:8611
  #, gcc-internal-format, gfc-internal-format
  msgid "comparison is always %d"
  msgstr "Vergleich ist immer %d"
*************** msgstr "%qD hat mehr als %u BlÃ¶cke, das
*** 26428,26434 ****
  msgid "reference to label %qD defined inside of %<assume%> attribute expression from outside of the attribute"
  msgstr "Verweis auf das Label %qD, das innerhalb des Attributausdrucks %<assume%> definiert ist, von auÃŸerhalb des Attributs"
  
! #: gimple-low.cc:112 cp/name-lookup.cc:9308
  #, gcc-internal-format
  msgid "%qD defined here"
  msgstr "%qD hier definiert"
--- 26446,26452 ----
  msgid "reference to label %qD defined inside of %<assume%> attribute expression from outside of the attribute"
  msgstr "Verweis auf das Label %qD, das innerhalb des Attributausdrucks %<assume%> definiert ist, von auÃŸerhalb des Attributs"
  
! #: gimple-low.cc:112 cp/name-lookup.cc:9311
  #, gcc-internal-format
  msgid "%qD defined here"
  msgstr "%qD hier definiert"
*************** msgstr "Dereferenzierung eines Nullzeige
*** 26448,26470 ****
  msgid "function may return address of local variable"
  msgstr "Funktion liefert mÃ¶glicherweise Adresse einer lokalen Variablen zurÃ¼ck"
  
! #: gimple-ssa-isolate-paths.cc:422 c/c-typeck.cc:12879
  #, gcc-internal-format
  msgid "function returns address of local variable"
  msgstr "Funktion liefert Adresse einer lokalen Variablen zurÃ¼ck"
  
  #: gimple-ssa-isolate-paths.cc:425 gimple-ssa-warn-access.cc:2075
  #: gimple-ssa-warn-access.cc:3729 tree.cc:12615 tree.cc:12652 tree.cc:12693
! #: tree.cc:12726 c/c-decl.cc:10781 c/c-parser.cc:22345 c/c-parser.cc:22486
! #: c/c-typeck.cc:3673 c/c-typeck.cc:3769 c/c-typeck.cc:3781 c/c-typeck.cc:6512
! #: c/c-typeck.cc:12780 c/c-typeck.cc:12797 c/gimple-parser.cc:2660
  #: c/gimple-parser.cc:2668 cp/call.cc:8391 cp/call.cc:8474 cp/call.cc:8493
! #: cp/call.cc:10729 cp/class.cc:9468 cp/constexpr.cc:889 cp/constexpr.cc:1348
! #: cp/constexpr.cc:4511 cp/constexpr.cc:6205 cp/constexpr.cc:6584
! #: cp/cvt.cc:1110 cp/cvt.cc:1150 cp/decl.cc:9605 cp/decl2.cc:6351
! #: cp/decl2.cc:6400 cp/lambda.cc:639 cp/method.cc:1240 cp/parser.cc:23073
! #: cp/pt.cc:9266 cp/pt.cc:9936 cp/semantics.cc:2753 cp/semantics.cc:5290
! #: cp/typeck.cc:2164 cp/typeck.cc:2385 cp/typeck.cc:4570 cp/typeck.cc:10793
  #: rust/backend/rust-constexpr.cc:4407 rust/backend/rust-tree.cc:621
  #: rust/backend/rust-tree.cc:3800
  #, gcc-internal-format
--- 26466,26488 ----
  msgid "function may return address of local variable"
  msgstr "Funktion liefert mÃ¶glicherweise Adresse einer lokalen Variablen zurÃ¼ck"
  
! #: gimple-ssa-isolate-paths.cc:422 c/c-typeck.cc:12896
  #, gcc-internal-format
  msgid "function returns address of local variable"
  msgstr "Funktion liefert Adresse einer lokalen Variablen zurÃ¼ck"
  
  #: gimple-ssa-isolate-paths.cc:425 gimple-ssa-warn-access.cc:2075
  #: gimple-ssa-warn-access.cc:3729 tree.cc:12615 tree.cc:12652 tree.cc:12693
! #: tree.cc:12726 c/c-decl.cc:10785 c/c-parser.cc:22390 c/c-parser.cc:22531
! #: c/c-typeck.cc:3673 c/c-typeck.cc:3769 c/c-typeck.cc:3781 c/c-typeck.cc:6513
! #: c/c-typeck.cc:12797 c/c-typeck.cc:12814 c/gimple-parser.cc:2660
  #: c/gimple-parser.cc:2668 cp/call.cc:8391 cp/call.cc:8474 cp/call.cc:8493
! #: cp/call.cc:10729 cp/class.cc:9502 cp/constexpr.cc:889 cp/constexpr.cc:1348
! #: cp/constexpr.cc:4511 cp/constexpr.cc:6220 cp/constexpr.cc:6600
! #: cp/cvt.cc:1110 cp/cvt.cc:1150 cp/decl.cc:9603 cp/decl2.cc:6379
! #: cp/decl2.cc:6428 cp/lambda.cc:639 cp/method.cc:1240 cp/parser.cc:23077
! #: cp/pt.cc:9271 cp/pt.cc:9941 cp/semantics.cc:2753 cp/semantics.cc:5290
! #: cp/typeck.cc:2164 cp/typeck.cc:2385 cp/typeck.cc:4686 cp/typeck.cc:10909
  #: rust/backend/rust-constexpr.cc:4407 rust/backend/rust-tree.cc:621
  #: rust/backend/rust-tree.cc:3800
  #, gcc-internal-format
*************** msgstr "baumelnder Zeiger auf %qD wird v
*** 27571,27582 ****
  #: gimple-ssa-warn-access.cc:3981 gimple-ssa-warn-access.cc:4629
  #: gimple-ssa-warn-access.cc:4632 gimple-ssa-warn-restrict.cc:1830
  #: tree-ssa-uninit.cc:924 tree-ssa-uninit.cc:1123 c/c-decl.cc:4101
! #: c/c-decl.cc:4391 c/c-typeck.cc:10377 c/c-typeck.cc:13597 cp/call.cc:8808
  #: cp/call.cc:8819 cp/class.cc:1722 cp/class.cc:3543 cp/constexpr.cc:1071
! #: cp/decl.cc:4687 cp/decl.cc:13468 cp/decl.cc:14071 cp/decl.cc:14081
! #: cp/decl.cc:15081 cp/friend.cc:407 cp/friend.cc:417 cp/init.cc:2948
  #: cp/parser.cc:3860 cp/parser.cc:4006 cp/parser.cc:4058 cp/parser.cc:7428
! #: cp/parser.cc:25737 cp/typeck.cc:5069
  #, gcc-internal-format
  msgid "%qD declared here"
  msgstr "%qD ist hier deklariert"
--- 27589,27600 ----
  #: gimple-ssa-warn-access.cc:3981 gimple-ssa-warn-access.cc:4629
  #: gimple-ssa-warn-access.cc:4632 gimple-ssa-warn-restrict.cc:1830
  #: tree-ssa-uninit.cc:924 tree-ssa-uninit.cc:1123 c/c-decl.cc:4101
! #: c/c-decl.cc:4391 c/c-typeck.cc:10394 c/c-typeck.cc:13614 cp/call.cc:8808
  #: cp/call.cc:8819 cp/class.cc:1722 cp/class.cc:3543 cp/constexpr.cc:1071
! #: cp/decl.cc:4685 cp/decl.cc:13466 cp/decl.cc:14069 cp/decl.cc:14079
! #: cp/decl.cc:15079 cp/friend.cc:407 cp/friend.cc:417 cp/init.cc:2948
  #: cp/parser.cc:3860 cp/parser.cc:4006 cp/parser.cc:4058 cp/parser.cc:7428
! #: cp/parser.cc:25741 cp/typeck.cc:5185
  #, gcc-internal-format
  msgid "%qD declared here"
  msgstr "%qD ist hier deklariert"
*************** msgstr "Name %qs wird in einer anderen Ã
*** 28723,28734 ****
  msgid "mismatching definition"
  msgstr "abweichende Definition"
  
! #: ipa-fnsummary.cc:4845
  #, gcc-internal-format
  msgid "invalid fnsummary in LTO stream"
  msgstr "ungÃ¼ltige Â»fnsummaryÂ« in LTO-Datenstrom"
  
! #: ipa-fnsummary.cc:4946
  #, gcc-internal-format
  msgid "ipa inline summary is missing in input file"
  msgstr "IPA-Inline-Zusammenfassung fehlt in Eingabedatei"
--- 28741,28752 ----
  msgid "mismatching definition"
  msgstr "abweichende Definition"
  
! #: ipa-fnsummary.cc:4860
  #, gcc-internal-format
  msgid "invalid fnsummary in LTO stream"
  msgstr "ungÃ¼ltige Â»fnsummaryÂ« in LTO-Datenstrom"
  
! #: ipa-fnsummary.cc:4961
  #, gcc-internal-format
  msgid "ipa inline summary is missing in input file"
  msgstr "IPA-Inline-Zusammenfassung fehlt in Eingabedatei"
*************** msgstr "IPA-Inline-Zusammenfassung fehlt
*** 28738,28744 ****
  msgid "IPA modref summary is missing in input file"
  msgstr "IPA-modref-Zusammenfassung fehlt in Eingabedatei"
  
! #: ipa-prop.cc:4991 ipa-prop.cc:5035 ipa-prop.cc:5115 ipa-prop.cc:5167
  #, gcc-internal-format
  msgid "invalid jump function in LTO stream"
  msgstr "ungÃ¼ltige Sprungfunktion in LTO-Datenstrom"
--- 28756,28762 ----
  msgid "IPA modref summary is missing in input file"
  msgstr "IPA-modref-Zusammenfassung fehlt in Eingabedatei"
  
! #: ipa-prop.cc:5019 ipa-prop.cc:5063 ipa-prop.cc:5143 ipa-prop.cc:5195
  #, gcc-internal-format
  msgid "invalid jump function in LTO stream"
  msgstr "ungÃ¼ltige Sprungfunktion in LTO-Datenstrom"
*************** msgstr "Zugriff Ã¼berschneidet sich mit
*** 28783,28794 ****
  msgid "IPA-SRA access verification failed"
  msgstr "IPA-SRA-Zugriffs-Verifikation fehlgeschlagen"
  
! #: ipa-sra.cc:2751
  #, gcc-internal-format
  msgid "function %qs, parameter %u, has IPA-SRA accesses which overlap"
  msgstr "Die Funktion %qs, Parameter %u, hat IPA-SRA-Zugriffe, die sich Ã¼berlappen"
  
! #: ipa-sra.cc:2754
  #, gcc-internal-format
  msgid "function %qs, parameter %u, is used but does not have any certain IPA-SRA access"
  msgstr "Funktion %qs, Parameter %u, wird verwendet, hat aber keinen bestimmten IPA-SRA-Zugriff"
--- 28801,28812 ----
  msgid "IPA-SRA access verification failed"
  msgstr "IPA-SRA-Zugriffs-Verifikation fehlgeschlagen"
  
! #: ipa-sra.cc:2757
  #, gcc-internal-format
  msgid "function %qs, parameter %u, has IPA-SRA accesses which overlap"
  msgstr "Die Funktion %qs, Parameter %u, hat IPA-SRA-Zugriffe, die sich Ã¼berlappen"
  
! #: ipa-sra.cc:2760
  #, gcc-internal-format
  msgid "function %qs, parameter %u, is used but does not have any certain IPA-SRA access"
  msgstr "Funktion %qs, Parameter %u, wird verwendet, hat aber keinen bestimmten IPA-SRA-Zugriff"
*************** msgstr "nicht unterstÃ¼tzter Modus %2$qs
*** 29175,29181 ****
  msgid "tree code %qs is not supported in LTO streams"
  msgstr "Baumcode %qs wird in LTO-StrÃ¶men nicht unterstÃ¼tzt"
  
! #: lto-streamer-out.cc:2554
  #, gcc-internal-format
  msgid "LTO streaming of toplevel extended %<asm%> unimplemented"
  msgstr "LTO-Streaming des erweiterten %<asm%> auf oberster Ebene nicht implementiert"
--- 29193,29199 ----
  msgid "tree code %qs is not supported in LTO streams"
  msgstr "Baumcode %qs wird in LTO-StrÃ¶men nicht unterstÃ¼tzt"
  
! #: lto-streamer-out.cc:2555
  #, gcc-internal-format
  msgid "LTO streaming of toplevel extended %<asm%> unimplemented"
  msgstr "LTO-Streaming des erweiterten %<asm%> auf oberster Ebene nicht implementiert"
*************** msgstr "nicht konstante Iterationszahl b
*** 29475,29491 ****
  msgid "%<allocate%> clause must specify an allocator here"
  msgstr "%<allocate%>-Klausel muss hier einen Allozierer angeben"
  
! #: omp-low.cc:2774 omp-offload.cc:1518
  #, gcc-internal-format
  msgid "%<seq%> overrides other OpenACC loop specifiers"
  msgstr "%<seq%> Ã¼bersteuert andere OpenACC-Schleifenspezifizierer"
  
! #: omp-low.cc:2777 omp-offload.cc:1519
  #, gcc-internal-format
  msgid "%<auto%> conflicts with other OpenACC loop specifiers"
  msgstr "%<auto%> steht in Konflikt mit anderen OpenACC-Schleifenspezifizierern"
  
! #: omp-low.cc:2781 omp-offload.cc:1553
  #, gcc-internal-format
  msgid "inner loop uses same OpenACC parallelism as containing loop"
  msgstr "innere Schleife verwendet denselben OpenACC-Parallelismus wie enthaltende Schleife"
--- 29493,29509 ----
  msgid "%<allocate%> clause must specify an allocator here"
  msgstr "%<allocate%>-Klausel muss hier einen Allozierer angeben"
  
! #: omp-low.cc:2774 omp-offload.cc:1519
  #, gcc-internal-format
  msgid "%<seq%> overrides other OpenACC loop specifiers"
  msgstr "%<seq%> Ã¼bersteuert andere OpenACC-Schleifenspezifizierer"
  
! #: omp-low.cc:2777 omp-offload.cc:1520
  #, gcc-internal-format
  msgid "%<auto%> conflicts with other OpenACC loop specifiers"
  msgstr "%<auto%> steht in Konflikt mit anderen OpenACC-Schleifenspezifizierern"
  
! #: omp-low.cc:2781 omp-offload.cc:1554
  #, gcc-internal-format
  msgid "inner loop uses same OpenACC parallelism as containing loop"
  msgstr "innere Schleife verwendet denselben OpenACC-Parallelismus wie enthaltende Schleife"
*************** msgstr "%qs wird noch nicht unterstÃ¼tzt
*** 29800,29871 ****
  msgid "shared-memory region overflow"
  msgstr "Ãœberlauf der Shared-Memory-Region"
  
! #: omp-offload.cc:316
  #, gcc-internal-format
  msgid "%qD specified both in declare target %<link%> and implicitly in %<to%> clauses"
  msgstr "%qD ist sowohl in %<declare target link%>- als auch implizit in %<to%>-Klauseln angegeben"
  
! #: omp-offload.cc:929
  #, gcc-internal-format
  msgid "%<-fopenacc-dim%> operand is malformed at %qs"
  msgstr "Operand fÃ¼r %<-fopenacc-dim%> bei %qs ist falsch"
  
! #: omp-offload.cc:981
  #, gcc-internal-format, gfc-internal-format
  msgid "region contains %s partitioned code but is not %s partitioned"
  msgstr "Region enthÃ¤lt mit %s partitionierten Code, ist aber nicht mit %s partitioniert"
  
! #: omp-offload.cc:987
  #, gcc-internal-format, gfc-internal-format
  msgid "region is %s partitioned but does not contain %s partitioned code"
  msgstr "Region ist mit %s partitioniert, enthÃ¤lt aber keinen mit %s partitionierten Code"
  
! #: omp-offload.cc:1477
  #, gcc-internal-format
  msgid "gang reduction on an orphan loop"
  msgstr "Bandenreduzierung in einer verwaisten Schleife"
  
! #: omp-offload.cc:1551
  #, gcc-internal-format
  msgid "routine call uses same OpenACC parallelism as containing loop"
  msgstr "Unterprogrammaufruf verwendet denselben OpenACC-Parallelismus wie enthaltende Schleife"
  
! #: omp-offload.cc:1555 omp-offload.cc:1587
  #, gcc-internal-format
  msgid "containing loop here"
  msgstr "enthaltende Schleife ist hier"
  
! #: omp-offload.cc:1560
  #, gcc-internal-format
  msgid "routine call uses OpenACC parallelism disallowed by containing routine"
  msgstr "Unterprogrammaufruf verwendet OpenACC-Parallelismus, der von der umgebenden Routine verboten wurde"
  
! #: omp-offload.cc:1562
  #, gcc-internal-format
  msgid "loop uses OpenACC parallelism disallowed by containing routine"
  msgstr "Schleife verwendet OpenACC-Parallelismus, der von der umgebenden Routine verboten wurde"
  
! #: omp-offload.cc:1567
  #, gcc-internal-format
  msgid "routine %qD declared here"
  msgstr "Routine %qD ist hier deklariert"
  
! #: omp-offload.cc:1580
  #, gcc-internal-format
  msgid "incorrectly nested OpenACC loop parallelism"
  msgstr "falsch geschachtelter OpenACC-Schleifenparallelismus"
  
! #: omp-offload.cc:1721
  #, gcc-internal-format
  msgid "insufficient partitioning available to parallelize element loop"
  msgstr "unzureichende Partitionierung verfÃ¼gbar, um die Elementschleife zu parallelisieren"
  
! #: omp-offload.cc:1729
  #, gcc-internal-format
  msgid "insufficient partitioning available to parallelize tile loop"
  msgstr "unzureichende Partitionierung verfÃ¼gbar, um die Kachelschleife zu parallelisieren"
  
! #: omp-offload.cc:1731
  #, gcc-internal-format
  msgid "insufficient partitioning available to parallelize loop"
  msgstr "unzureichende Partitionierung verfÃ¼gbar, um Schleife zu parallelisieren"
--- 29818,29889 ----
  msgid "shared-memory region overflow"
  msgstr "Ãœberlauf der Shared-Memory-Region"
  
! #: omp-offload.cc:317
  #, gcc-internal-format
  msgid "%qD specified both in declare target %<link%> and implicitly in %<to%> clauses"
  msgstr "%qD ist sowohl in %<declare target link%>- als auch implizit in %<to%>-Klauseln angegeben"
  
! #: omp-offload.cc:930
  #, gcc-internal-format
  msgid "%<-fopenacc-dim%> operand is malformed at %qs"
  msgstr "Operand fÃ¼r %<-fopenacc-dim%> bei %qs ist falsch"
  
! #: omp-offload.cc:982
  #, gcc-internal-format, gfc-internal-format
  msgid "region contains %s partitioned code but is not %s partitioned"
  msgstr "Region enthÃ¤lt mit %s partitionierten Code, ist aber nicht mit %s partitioniert"
  
! #: omp-offload.cc:988
  #, gcc-internal-format, gfc-internal-format
  msgid "region is %s partitioned but does not contain %s partitioned code"
  msgstr "Region ist mit %s partitioniert, enthÃ¤lt aber keinen mit %s partitionierten Code"
  
! #: omp-offload.cc:1478
  #, gcc-internal-format
  msgid "gang reduction on an orphan loop"
  msgstr "Bandenreduzierung in einer verwaisten Schleife"
  
! #: omp-offload.cc:1552
  #, gcc-internal-format
  msgid "routine call uses same OpenACC parallelism as containing loop"
  msgstr "Unterprogrammaufruf verwendet denselben OpenACC-Parallelismus wie enthaltende Schleife"
  
! #: omp-offload.cc:1556 omp-offload.cc:1588
  #, gcc-internal-format
  msgid "containing loop here"
  msgstr "enthaltende Schleife ist hier"
  
! #: omp-offload.cc:1561
  #, gcc-internal-format
  msgid "routine call uses OpenACC parallelism disallowed by containing routine"
  msgstr "Unterprogrammaufruf verwendet OpenACC-Parallelismus, der von der umgebenden Routine verboten wurde"
  
! #: omp-offload.cc:1563
  #, gcc-internal-format
  msgid "loop uses OpenACC parallelism disallowed by containing routine"
  msgstr "Schleife verwendet OpenACC-Parallelismus, der von der umgebenden Routine verboten wurde"
  
! #: omp-offload.cc:1568
  #, gcc-internal-format
  msgid "routine %qD declared here"
  msgstr "Routine %qD ist hier deklariert"
  
! #: omp-offload.cc:1581
  #, gcc-internal-format
  msgid "incorrectly nested OpenACC loop parallelism"
  msgstr "falsch geschachtelter OpenACC-Schleifenparallelismus"
  
! #: omp-offload.cc:1722
  #, gcc-internal-format
  msgid "insufficient partitioning available to parallelize element loop"
  msgstr "unzureichende Partitionierung verfÃ¼gbar, um die Elementschleife zu parallelisieren"
  
! #: omp-offload.cc:1730
  #, gcc-internal-format
  msgid "insufficient partitioning available to parallelize tile loop"
  msgstr "unzureichende Partitionierung verfÃ¼gbar, um die Kachelschleife zu parallelisieren"
  
! #: omp-offload.cc:1732
  #, gcc-internal-format
  msgid "insufficient partitioning available to parallelize loop"
  msgstr "unzureichende Partitionierung verfÃ¼gbar, um Schleife zu parallelisieren"
*************** msgstr "Fehler beim SchlieÃŸen der Datei
*** 29915,29921 ****
  msgid "command-line option %qs is not supported by this configuration"
  msgstr "Kommandozeilenoption %qs wird von dieser Konfiguration nicht unterstÃ¼tzt"
  
! #: opts-common.cc:1463 opts.cc:2612
  #, gcc-internal-format
  msgid "missing argument to %qs"
  msgstr "fehlendes Argument fÃ¼r %qs"
--- 29933,29939 ----
  msgid "command-line option %qs is not supported by this configuration"
  msgstr "Kommandozeilenoption %qs wird von dieser Konfiguration nicht unterstÃ¼tzt"
  
! #: opts-common.cc:1463 opts.cc:2610
  #, gcc-internal-format
  msgid "missing argument to %qs"
  msgstr "fehlendes Argument fÃ¼r %qs"
*************** msgstr "%<-fstack-protector-strong%> wir
*** 30137,30143 ****
  #: opts.cc:1231
  #, gcc-internal-format
  msgid "%<-fno-fat-lto-objects%> are supported only with linker plugin"
! msgstr "%<-fno-fat-lto-objects%> werden nur mit Linker-Plugin unterstÃ¼tzt"
  
  #: opts.cc:1239
  #, gcc-internal-format
--- 30155,30161 ----
  #: opts.cc:1231
  #, gcc-internal-format
  msgid "%<-fno-fat-lto-objects%> are supported only with linker plugin"
! msgstr "%<-fno-fat-lto-objects%> werden nur mit Binder-Plugin unterstÃ¼tzt"
  
  #: opts.cc:1239
  #, gcc-internal-format
*************** msgstr "%<-gsplit-dwarf%> wird nicht zus
*** 30149,30386 ****
  msgid "%<-fsplit-stack%> is not supported by this compiler configuration"
  msgstr "%<-fsplit-stack%> wird von dieser Compilerkonfiguration nicht unterstÃ¼tzt"
  
! #: opts.cc:1284
  #, gcc-internal-format
  msgid "%<-fsanitize=pointer-compare%> must be combined with %<-fsanitize=address%> or %<-fsanitize=kernel-address%>"
  msgstr "%<-fsanitize=pointer-compare%> muss mit %<-fsanitize=address%> oder %<-fsanitize=kernel-address%> kombiniert werden"
  
! #: opts.cc:1288
  #, gcc-internal-format
  msgid "%<-fsanitize=pointer-subtract%> must be combined with %<-fsanitize=address%> or %<-fsanitize=kernel-address%>"
  msgstr "%<-fsanitize=pointer-subtract%> muss mit %<-fsanitize=address%> oder %<-fsanitize=kernel-address%> kombiniert werden"
  
! #: opts.cc:1315
  #, gcc-internal-format
  msgid "%<-fsanitize-recover=%s%> is not supported"
  msgstr "%<-fsanitize-recover=%s%> wird nicht unterstÃ¼tzt"
  
! #: opts.cc:1327 opts.cc:2324
  #, gcc-internal-format
  msgid "%<-fsanitize-trap=%s%> is not supported"
  msgstr "%<-fsanitize-trap=%s%> wird nicht unterstÃ¼tzt"
  
! #: opts.cc:1354
  #, gcc-internal-format
  msgid "%<-fsanitize-address-use-after-scope%> requires %<-fstack-reuse=none%> option"
  msgstr "%<-fsanitize-address-use-after-scope%> erfordert %<-fstack-reuse=none%>"
  
! #: opts.cc:1361
  #, gcc-internal-format
  msgid "transactional memory is not supported with %<-fsanitize=address%>"
  msgstr "transaktionsbasierter Speicher wird von %<-fsanitize=address%> nicht unterstÃ¼tzt"
  
! #: opts.cc:1364
  #, gcc-internal-format
  msgid "transactional memory is not supported with %<-fsanitize=kernel-address%>"
  msgstr "transaktionsbasierter Speicher wird von %<-fsanitize=kernel-address%> nicht unterstÃ¼tzt"
  
! #: opts.cc:1369
  #, gcc-internal-format
  msgid "live patching (with %qs) is not supported with LTO"
  msgstr "Livepatchen (mit %qs) wird in Kombination mit LTO nicht unterstÃ¼tzt"
  
! #: opts.cc:1374
  #, gcc-internal-format
  msgid "vtable verification is not supported with LTO"
  msgstr "Vtable-Verifikation wird in Kombination mit LTO nicht unterstÃ¼tzt"
  
! #: opts.cc:1449
  #, gcc-internal-format
  msgid "variable tracking requested, but useless unless producing debug info"
  msgstr "Variablenverfolgung angefordert, jedoch nutzlos ohne Debug-Info"
  
! #: opts.cc:1453
  #, gcc-internal-format
  msgid "variable tracking requested, but not supported by this debug format"
  msgstr "Variablenverfolgung angefordert, jedoch nicht von diesem Debug-Format unterstÃ¼tzt"
  
! #: opts.cc:1482
  #, gcc-internal-format
  msgid "var-tracking-assignments changes selective scheduling"
  msgstr "var-tracking-assignments Ã¤ndert selektive Planung"
  
! #: opts.cc:1495
  #, gcc-internal-format
  msgid "%<-Wstrict-flex-arrays%> is ignored when %<-fstrict-flex-arrays%> is not present"
  msgstr "%<-Wstrict-flex-arrays%> wird ignoriert, wenn %<-fstrict-flex-arrays%> nicht angegeben wurde"
  
! #: opts.cc:1525 config/darwin.cc:3484
  #, gcc-internal-format
  msgid "%<-freorder-blocks-and-partition%> does not work with exceptions on this architecture"
  msgstr "%<-freorder-blocks-and-partition%> funktioniert auf dieser Architektur nicht mit Ausnahmen"
  
! #: opts.cc:1541
  #, gcc-internal-format
  msgid "%<-freorder-blocks-and-partition%> does not support unwind info on this architecture"
  msgstr "%<-freorder-blocks-and-partition%> unterstÃ¼tzt auf dieser Architektur nicht Unwind-Info"
  
! #: opts.cc:1559 config/pa/pa.cc:580
  #, gcc-internal-format
  msgid "%<-freorder-blocks-and-partition%> does not work on this architecture"
  msgstr "%<-freorder-blocks-and-partition%> funktioniert auf dieser Architektur nicht"
  
! #: opts.cc:2068
  #, gcc-internal-format
  msgid "unrecognized %<include_flags 0x%x%> passed to %<print_specific_help%>"
  msgstr "nicht erkanntes %<include_flags 0x%x%> an %<print_specific_help%> weitergegeben"
  
! #: opts.cc:2303
  #, gcc-internal-format
  msgid "%<-fsanitize=all%> option is not valid"
  msgstr "%<-fsanitize=all%> ist ungÃ¼ltig"
  
! #: opts.cc:2358
  #, gcc-internal-format
  msgid "unrecognized argument to %<-f%ssanitize%s=%> option: %q.*s; did you mean %qs?"
  msgstr "unbekanntes Argument fÃ¼r Option %<-f%ssanitize%s=%>: %q.*s; meinten Sie %qs?"
  
! #: opts.cc:2364
  #, gcc-internal-format
  msgid "unrecognized argument to %<-f%ssanitize%s=%> option: %q.*s"
  msgstr "unbekanntes Argument fÃ¼r Option %<-f%ssanitize%s=%>: %q.*s"
  
! #: opts.cc:2399
  #, gcc-internal-format
  msgid "%qs attribute directive ignored"
  msgstr "Attribut-Direktive %qs ignoriert"
  
! #: opts.cc:2423
  #, gcc-internal-format
  msgid "unrecognized argument to %<-fzero-call-used-regs=%>: %qs"
  msgstr "Argument fÃ¼r Option %<-fzero-call-used-regs=%> nicht erkannt: %qs"
  
! #: opts.cc:2447
  #, gcc-internal-format
  msgid "invalid arguments for %<-falign-%s%> option: %qs"
  msgstr "ungÃ¼ltige Argumente fÃ¼r Option %<-falign-%s%>: %qs"
  
! #: opts.cc:2462
  #, gcc-internal-format
  msgid "invalid number of arguments for %<-falign-%s%> option: %qs"
  msgstr "Falsche Anzahl der Argumente fÃ¼r Option %<-falign-%s%>: %qs"
  
! #: opts.cc:2471
  #, gcc-internal-format
  msgid "%<-falign-%s%> is not between 0 and %d"
  msgstr "%<-falign-%s%> ist nicht zwischen 0 und %d"
  
! #: opts.cc:2530
  #, gcc-internal-format
  msgid "invalid arguments for %<-fpatchable-function-entry%>"
  msgstr "ungÃ¼ltige Argumente fÃ¼r %<-fpatchable-function-entry%>"
  
! #: opts.cc:2667
  #, gcc-internal-format
  msgid "%<--help%> argument %q.*s is ambiguous, please be more specific"
  msgstr "Argument %q.*s fÃ¼r %<--help%> ist mehrdeutig, bitte prÃ¤zisieren"
  
! #: opts.cc:2678
  #, gcc-internal-format
  msgid "unrecognized argument to %<--help=%> option: %q.*s"
  msgstr "Argument %q.*s fÃ¼r Option %<--help=%> nicht erkannt"
  
! #: opts.cc:2858
  #, gcc-internal-format
  msgid "arguments ignored for %<-Wattributes=%>; use %<-Wno-attributes=%> instead"
  msgstr "Argumente fÃ¼r %<-Wattributes=%> ignoriert; verwenden Sie stattdessen %<-Wno-attributes=%>"
  
! #: opts.cc:2864
  #, gcc-internal-format
  msgid "trailing %<,%> in arguments for %<-Wno-attributes=%>"
  msgstr "abschlieÃŸendes %<,%> in Argumenten fÃ¼r %<-Wno-attributes=%>"
  
! #: opts.cc:3110
  #, gcc-internal-format
  msgid "%qs option can be specified only for offload compiler"
  msgstr "die Option %qs kann nur fÃ¼r Offload-Compiler angegeben werden"
  
! #: opts.cc:3119
  #, gcc-internal-format
  msgid "structure alignment must be a small power of two, not %wu"
  msgstr "Strukturausrichtung muss eine kleine Zweierpotenz sein, nicht %wu"
  
! #: opts.cc:3240
  #, gcc-internal-format
  msgid "unknown stack check parameter %qs"
  msgstr "unbekannter Stapel-ÃœberprÃ¼fungsparameter %qs"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90141
! #: opts.cc:3292
  #, gcc-internal-format
  msgid "%<-gdwarf%s%> is ambiguous; use %<-gdwarf-%s%> for DWARF version or %<-gdwarf%> %<-g%s%> for debug level"
! msgstr "%<-gdwarf=%s%> ist mehrdeutig; verwenden Sie %<-gdwarf-%s%> fÃ¼r die DWARF-Version und %<-gdwarf -g%s%> fÃ¼r die Debugstufe"
  
! #: opts.cc:3303
  #, gcc-internal-format
  msgid "dwarf version %wu is not supported"
  msgstr "Dwarf-Version %wu wird nicht unterstÃ¼tzt"
  
! #: opts.cc:3340
  #, gcc-internal-format
  msgid "unrecognized argument to %<-flto=%> option: %qs"
  msgstr "Argument %qs fÃ¼r Option %<-flto=%> nicht erkannt"
  
! #: opts.cc:3540
  #, gcc-internal-format
  msgid "target system does not support debug output"
  msgstr "Zielsystem unterstÃ¼tzt keine Testausgaben"
  
! #: opts.cc:3579
  #, gcc-internal-format
  msgid "debug format %qs conflicts with prior selection"
  msgstr "Debugformat %qs steht in Konflikt mit vorheriger Auswahl"
  
! #: opts.cc:3603
  #, gcc-internal-format
  msgid "unrecognized debug output level %qs"
  msgstr "Unbekannte Debugausgabestufe %qs"
  
! #: opts.cc:3605
  #, gcc-internal-format
  msgid "debug output level %qs is too high"
  msgstr "Debugausgabestufe %qs ist zu groÃŸ"
  
! #: opts.cc:3617
  #, gcc-internal-format
  msgid "unrecognized btf debug output level %qs"
  msgstr "Unbekannte BTF-Debugausgabestufe %qs"
  
! #: opts.cc:3634
  #, gcc-internal-format
  msgid "getting core file size maximum limit: %m"
  msgstr "Kern-DateigrÃ¶ÃŸenlimit kann nicht geholt werden: %m"
  
! #: opts.cc:3638
  #, gcc-internal-format
  msgid "setting core file size limit to maximum: %m"
  msgstr "Kern-DateigrÃ¶ÃŸenlimit kann nicht gesetzt werden: %m"
  
! #: opts.cc:3683
  #, gcc-internal-format, gfc-internal-format
  msgid "unrecognized gcc debugging option: %c"
  msgstr "GCC-Debuggingoption nicht erkannt: %c"
  
! #: opts.cc:3712
  #, gcc-internal-format
  msgid "%<-W%serror=%s%>: no option %<-%s%>; did you mean %<-%s%>?"
  msgstr "%<-W%serror=%s%>: unbekannte Option %<-%s%>; meinten Sie %<-%s%>?"
  
! #: opts.cc:3716
  #, gcc-internal-format
  msgid "%<-W%serror=%s%>: no option %<-%s%>"
  msgstr "%<-W%serror=%s%>: Keine Option %<-%s%>"
  
! #: opts.cc:3720
  #, gcc-internal-format
  msgid "%<-Werror=%s%>: %<-%s%> is not an option that controls warnings"
  msgstr "%<-Werror=%s%>: %<-%s%> ist keine Option, die Warnungen steuert"
--- 30167,30404 ----
  msgid "%<-fsplit-stack%> is not supported by this compiler configuration"
  msgstr "%<-fsplit-stack%> wird von dieser Compilerkonfiguration nicht unterstÃ¼tzt"
  
! #: opts.cc:1282
  #, gcc-internal-format
  msgid "%<-fsanitize=pointer-compare%> must be combined with %<-fsanitize=address%> or %<-fsanitize=kernel-address%>"
  msgstr "%<-fsanitize=pointer-compare%> muss mit %<-fsanitize=address%> oder %<-fsanitize=kernel-address%> kombiniert werden"
  
! #: opts.cc:1286
  #, gcc-internal-format
  msgid "%<-fsanitize=pointer-subtract%> must be combined with %<-fsanitize=address%> or %<-fsanitize=kernel-address%>"
  msgstr "%<-fsanitize=pointer-subtract%> muss mit %<-fsanitize=address%> oder %<-fsanitize=kernel-address%> kombiniert werden"
  
! #: opts.cc:1313
  #, gcc-internal-format
  msgid "%<-fsanitize-recover=%s%> is not supported"
  msgstr "%<-fsanitize-recover=%s%> wird nicht unterstÃ¼tzt"
  
! #: opts.cc:1325 opts.cc:2322
  #, gcc-internal-format
  msgid "%<-fsanitize-trap=%s%> is not supported"
  msgstr "%<-fsanitize-trap=%s%> wird nicht unterstÃ¼tzt"
  
! #: opts.cc:1352
  #, gcc-internal-format
  msgid "%<-fsanitize-address-use-after-scope%> requires %<-fstack-reuse=none%> option"
  msgstr "%<-fsanitize-address-use-after-scope%> erfordert %<-fstack-reuse=none%>"
  
! #: opts.cc:1359
  #, gcc-internal-format
  msgid "transactional memory is not supported with %<-fsanitize=address%>"
  msgstr "transaktionsbasierter Speicher wird von %<-fsanitize=address%> nicht unterstÃ¼tzt"
  
! #: opts.cc:1362
  #, gcc-internal-format
  msgid "transactional memory is not supported with %<-fsanitize=kernel-address%>"
  msgstr "transaktionsbasierter Speicher wird von %<-fsanitize=kernel-address%> nicht unterstÃ¼tzt"
  
! #: opts.cc:1367
  #, gcc-internal-format
  msgid "live patching (with %qs) is not supported with LTO"
  msgstr "Livepatchen (mit %qs) wird in Kombination mit LTO nicht unterstÃ¼tzt"
  
! #: opts.cc:1372
  #, gcc-internal-format
  msgid "vtable verification is not supported with LTO"
  msgstr "Vtable-Verifikation wird in Kombination mit LTO nicht unterstÃ¼tzt"
  
! #: opts.cc:1447
  #, gcc-internal-format
  msgid "variable tracking requested, but useless unless producing debug info"
  msgstr "Variablenverfolgung angefordert, jedoch nutzlos ohne Debug-Info"
  
! #: opts.cc:1451
  #, gcc-internal-format
  msgid "variable tracking requested, but not supported by this debug format"
  msgstr "Variablenverfolgung angefordert, jedoch nicht von diesem Debug-Format unterstÃ¼tzt"
  
! #: opts.cc:1480
  #, gcc-internal-format
  msgid "var-tracking-assignments changes selective scheduling"
  msgstr "var-tracking-assignments Ã¤ndert selektive Planung"
  
! #: opts.cc:1493
  #, gcc-internal-format
  msgid "%<-Wstrict-flex-arrays%> is ignored when %<-fstrict-flex-arrays%> is not present"
  msgstr "%<-Wstrict-flex-arrays%> wird ignoriert, wenn %<-fstrict-flex-arrays%> nicht angegeben wurde"
  
! #: opts.cc:1523 config/darwin.cc:3484
  #, gcc-internal-format
  msgid "%<-freorder-blocks-and-partition%> does not work with exceptions on this architecture"
  msgstr "%<-freorder-blocks-and-partition%> funktioniert auf dieser Architektur nicht mit Ausnahmen"
  
! #: opts.cc:1539
  #, gcc-internal-format
  msgid "%<-freorder-blocks-and-partition%> does not support unwind info on this architecture"
  msgstr "%<-freorder-blocks-and-partition%> unterstÃ¼tzt auf dieser Architektur nicht Unwind-Info"
  
! #: opts.cc:1557 config/pa/pa.cc:580
  #, gcc-internal-format
  msgid "%<-freorder-blocks-and-partition%> does not work on this architecture"
  msgstr "%<-freorder-blocks-and-partition%> funktioniert auf dieser Architektur nicht"
  
! #: opts.cc:2066
  #, gcc-internal-format
  msgid "unrecognized %<include_flags 0x%x%> passed to %<print_specific_help%>"
  msgstr "nicht erkanntes %<include_flags 0x%x%> an %<print_specific_help%> weitergegeben"
  
! #: opts.cc:2301
  #, gcc-internal-format
  msgid "%<-fsanitize=all%> option is not valid"
  msgstr "%<-fsanitize=all%> ist ungÃ¼ltig"
  
! #: opts.cc:2356
  #, gcc-internal-format
  msgid "unrecognized argument to %<-f%ssanitize%s=%> option: %q.*s; did you mean %qs?"
  msgstr "unbekanntes Argument fÃ¼r Option %<-f%ssanitize%s=%>: %q.*s; meinten Sie %qs?"
  
! #: opts.cc:2362
  #, gcc-internal-format
  msgid "unrecognized argument to %<-f%ssanitize%s=%> option: %q.*s"
  msgstr "unbekanntes Argument fÃ¼r Option %<-f%ssanitize%s=%>: %q.*s"
  
! #: opts.cc:2397
  #, gcc-internal-format
  msgid "%qs attribute directive ignored"
  msgstr "Attribut-Direktive %qs ignoriert"
  
! #: opts.cc:2421
  #, gcc-internal-format
  msgid "unrecognized argument to %<-fzero-call-used-regs=%>: %qs"
  msgstr "Argument fÃ¼r Option %<-fzero-call-used-regs=%> nicht erkannt: %qs"
  
! #: opts.cc:2445
  #, gcc-internal-format
  msgid "invalid arguments for %<-falign-%s%> option: %qs"
  msgstr "ungÃ¼ltige Argumente fÃ¼r Option %<-falign-%s%>: %qs"
  
! #: opts.cc:2460
  #, gcc-internal-format
  msgid "invalid number of arguments for %<-falign-%s%> option: %qs"
  msgstr "Falsche Anzahl der Argumente fÃ¼r Option %<-falign-%s%>: %qs"
  
! #: opts.cc:2469
  #, gcc-internal-format
  msgid "%<-falign-%s%> is not between 0 and %d"
  msgstr "%<-falign-%s%> ist nicht zwischen 0 und %d"
  
! #: opts.cc:2528
  #, gcc-internal-format
  msgid "invalid arguments for %<-fpatchable-function-entry%>"
  msgstr "ungÃ¼ltige Argumente fÃ¼r %<-fpatchable-function-entry%>"
  
! #: opts.cc:2665
  #, gcc-internal-format
  msgid "%<--help%> argument %q.*s is ambiguous, please be more specific"
  msgstr "Argument %q.*s fÃ¼r %<--help%> ist mehrdeutig, bitte prÃ¤zisieren"
  
! #: opts.cc:2676
  #, gcc-internal-format
  msgid "unrecognized argument to %<--help=%> option: %q.*s"
  msgstr "Argument %q.*s fÃ¼r Option %<--help=%> nicht erkannt"
  
! #: opts.cc:2856
  #, gcc-internal-format
  msgid "arguments ignored for %<-Wattributes=%>; use %<-Wno-attributes=%> instead"
  msgstr "Argumente fÃ¼r %<-Wattributes=%> ignoriert; verwenden Sie stattdessen %<-Wno-attributes=%>"
  
! #: opts.cc:2862
  #, gcc-internal-format
  msgid "trailing %<,%> in arguments for %<-Wno-attributes=%>"
  msgstr "abschlieÃŸendes %<,%> in Argumenten fÃ¼r %<-Wno-attributes=%>"
  
! #: opts.cc:3108
  #, gcc-internal-format
  msgid "%qs option can be specified only for offload compiler"
  msgstr "die Option %qs kann nur fÃ¼r Offload-Compiler angegeben werden"
  
! #: opts.cc:3117
  #, gcc-internal-format
  msgid "structure alignment must be a small power of two, not %wu"
  msgstr "Strukturausrichtung muss eine kleine Zweierpotenz sein, nicht %wu"
  
! #: opts.cc:3238
  #, gcc-internal-format
  msgid "unknown stack check parameter %qs"
  msgstr "unbekannter Stapel-ÃœberprÃ¼fungsparameter %qs"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90141
! #: opts.cc:3290
  #, gcc-internal-format
  msgid "%<-gdwarf%s%> is ambiguous; use %<-gdwarf-%s%> for DWARF version or %<-gdwarf%> %<-g%s%> for debug level"
! msgstr "%<-gdwarf%s%> ist mehrdeutig; verwenden Sie %<-gdwarf-%s%> fÃ¼r die DWARF-Version und %<-gdwarf -g%s%> fÃ¼r die Debugstufe"
  
! #: opts.cc:3301
  #, gcc-internal-format
  msgid "dwarf version %wu is not supported"
  msgstr "Dwarf-Version %wu wird nicht unterstÃ¼tzt"
  
! #: opts.cc:3338
  #, gcc-internal-format
  msgid "unrecognized argument to %<-flto=%> option: %qs"
  msgstr "Argument %qs fÃ¼r Option %<-flto=%> nicht erkannt"
  
! #: opts.cc:3538
  #, gcc-internal-format
  msgid "target system does not support debug output"
  msgstr "Zielsystem unterstÃ¼tzt keine Testausgaben"
  
! #: opts.cc:3577
  #, gcc-internal-format
  msgid "debug format %qs conflicts with prior selection"
  msgstr "Debugformat %qs steht in Konflikt mit vorheriger Auswahl"
  
! #: opts.cc:3601
  #, gcc-internal-format
  msgid "unrecognized debug output level %qs"
  msgstr "Unbekannte Debugausgabestufe %qs"
  
! #: opts.cc:3603
  #, gcc-internal-format
  msgid "debug output level %qs is too high"
  msgstr "Debugausgabestufe %qs ist zu groÃŸ"
  
! #: opts.cc:3615
  #, gcc-internal-format
  msgid "unrecognized btf debug output level %qs"
  msgstr "Unbekannte BTF-Debugausgabestufe %qs"
  
! #: opts.cc:3632
  #, gcc-internal-format
  msgid "getting core file size maximum limit: %m"
  msgstr "Kern-DateigrÃ¶ÃŸenlimit kann nicht geholt werden: %m"
  
! #: opts.cc:3636
  #, gcc-internal-format
  msgid "setting core file size limit to maximum: %m"
  msgstr "Kern-DateigrÃ¶ÃŸenlimit kann nicht gesetzt werden: %m"
  
! #: opts.cc:3681
  #, gcc-internal-format, gfc-internal-format
  msgid "unrecognized gcc debugging option: %c"
  msgstr "GCC-Debuggingoption nicht erkannt: %c"
  
! #: opts.cc:3710
  #, gcc-internal-format
  msgid "%<-W%serror=%s%>: no option %<-%s%>; did you mean %<-%s%>?"
  msgstr "%<-W%serror=%s%>: unbekannte Option %<-%s%>; meinten Sie %<-%s%>?"
  
! #: opts.cc:3714
  #, gcc-internal-format
  msgid "%<-W%serror=%s%>: no option %<-%s%>"
  msgstr "%<-W%serror=%s%>: Keine Option %<-%s%>"
  
! #: opts.cc:3718
  #, gcc-internal-format
  msgid "%<-Werror=%s%>: %<-%s%> is not an option that controls warnings"
  msgstr "%<-Werror=%s%>: %<-%s%> ist keine Option, die Warnungen steuert"
*************** msgstr "mehr als eine Â»crtlÂ«-Direktive
*** 30697,30720 ****
  msgid "unrecognized enum value: %qs"
  msgstr "unbekannter enum-Wert: %qs"
  
! #: read-rtl-function.cc:1145 read-rtl-function.cc:1204
  #, gcc-internal-format, gfc-internal-format
  msgid "was expecting `%s'"
  msgstr "Â»%sÂ« wurde erwartet"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79873
! #: read-rtl-function.cc:1598
  #, gcc-internal-format, gfc-internal-format
  msgid "duplicate insn UID: %i"
  msgstr "duplicate insn UID: %i"
  
! #: read-rtl-function.cc:1659
  #, gcc-internal-format
  msgid "start/end of RTL fragment are in different files"
  msgstr "Anfang/Ende von RTL-Fragment sind in verschiedenen Dateien"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79873
! #: read-rtl-function.cc:1665
  #, gcc-internal-format
  msgid "start of RTL fragment must be on an earlier line than end"
  msgstr "start of RTL fragment must be on an earlier line than end"
--- 30715,30738 ----
  msgid "unrecognized enum value: %qs"
  msgstr "unbekannter enum-Wert: %qs"
  
! #: read-rtl-function.cc:1148 read-rtl-function.cc:1207
  #, gcc-internal-format, gfc-internal-format
  msgid "was expecting `%s'"
  msgstr "Â»%sÂ« wurde erwartet"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79873
! #: read-rtl-function.cc:1601
  #, gcc-internal-format, gfc-internal-format
  msgid "duplicate insn UID: %i"
  msgstr "duplicate insn UID: %i"
  
! #: read-rtl-function.cc:1662
  #, gcc-internal-format
  msgid "start/end of RTL fragment are in different files"
  msgstr "Anfang/Ende von RTL-Fragment sind in verschiedenen Dateien"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79873
! #: read-rtl-function.cc:1668
  #, gcc-internal-format
  msgid "start of RTL fragment must be on an earlier line than end"
  msgstr "start of RTL fragment must be on an earlier line than end"
*************** msgstr "ungÃ¼ltiger regulÃ¤rer Ausdruck
*** 32584,32610 ****
  msgid "target does not support atomic profile update, single mode is selected"
  msgstr "Ziel unterstÃ¼tzt kein Aktualisieren des atomaren Profils, einfacher Modus wird ausgewÃ¤hlt"
  
! #: tree-ssa-alias.cc:4125
  #, gcc-internal-format, gfc-internal-format
  msgid "invalid fn spec attribute \"%s\""
  msgstr "invalid fn spec attribute \"%s\""
  
! #: tree-ssa-alias.cc:4164
  #, gcc-internal-format, gfc-internal-format
  msgid "invalid fn spec attribute \"%s\" arg %i"
  msgstr "invalid fn spec attribute \"%s\" arg %i"
  
! #: tree-ssa-ccp.cc:4595 c-family/c-common.cc:5992
  #, gcc-internal-format
  msgid "%qs pointer is null"
  msgstr "Zeiger %qs ist null"
  
! #: tree-ssa-ccp.cc:4598 c-family/c-common.cc:5995
  #, gcc-internal-format
  msgid "in a call to non-static member function %qD"
  msgstr "in einem Aufruf der nicht-statischen Elementfunktion %qD"
  
! #: tree-ssa-ccp.cc:4604 c-family/c-common.cc:6010
  #, gcc-internal-format, gfc-internal-format
  msgid "argument %u null where non-null expected"
  msgstr "Argument %u ist null, aber nichtnull wird erwartet"
--- 32602,32628 ----
  msgid "target does not support atomic profile update, single mode is selected"
  msgstr "Ziel unterstÃ¼tzt kein Aktualisieren des atomaren Profils, einfacher Modus wird ausgewÃ¤hlt"
  
! #: tree-ssa-alias.cc:4127
  #, gcc-internal-format, gfc-internal-format
  msgid "invalid fn spec attribute \"%s\""
  msgstr "invalid fn spec attribute \"%s\""
  
! #: tree-ssa-alias.cc:4166
  #, gcc-internal-format, gfc-internal-format
  msgid "invalid fn spec attribute \"%s\" arg %i"
  msgstr "invalid fn spec attribute \"%s\" arg %i"
  
! #: tree-ssa-ccp.cc:4595 c-family/c-common.cc:6013
  #, gcc-internal-format
  msgid "%qs pointer is null"
  msgstr "Zeiger %qs ist null"
  
! #: tree-ssa-ccp.cc:4598 c-family/c-common.cc:6016
  #, gcc-internal-format
  msgid "in a call to non-static member function %qD"
  msgstr "in einem Aufruf der nicht-statischen Elementfunktion %qD"
  
! #: tree-ssa-ccp.cc:4604 c-family/c-common.cc:6031
  #, gcc-internal-format, gfc-internal-format
  msgid "argument %u null where non-null expected"
  msgstr "Argument %u ist null, aber nichtnull wird erwartet"
*************** msgstr "Argument %u ist null, aber nicht
*** 32614,32625 ****
  msgid "in a call to built-in function %qD"
  msgstr "in einem Aufruf der eingebauten Funktion %qD"
  
! #: tree-ssa-ccp.cc:4614 tree-ssa-ccp.cc:4671 c-family/c-common.cc:6014
  #, gcc-internal-format
  msgid "in a call to function %qD declared %qs"
  msgstr "in einem Aufruf der Funktion %qD, die als %qs deklariert ist"
  
! #: tree-ssa-ccp.cc:4660 c-family/c-common.cc:6002
  #, gcc-internal-format, gfc-internal-format
  msgid "argument %u null where non-null expected because argument %u is nonzero"
  msgstr "Argument %u ist null, aber nichtnull wird erwartet, da das Argument %u nicht 0 ist"
--- 32632,32643 ----
  msgid "in a call to built-in function %qD"
  msgstr "in einem Aufruf der eingebauten Funktion %qD"
  
! #: tree-ssa-ccp.cc:4614 tree-ssa-ccp.cc:4671 c-family/c-common.cc:6035
  #, gcc-internal-format
  msgid "in a call to function %qD declared %qs"
  msgstr "in einem Aufruf der Funktion %qD, die als %qs deklariert ist"
  
! #: tree-ssa-ccp.cc:4660 c-family/c-common.cc:6023
  #, gcc-internal-format, gfc-internal-format
  msgid "argument %u null where non-null expected because argument %u is nonzero"
  msgstr "Argument %u ist null, aber nichtnull wird erwartet, da das Argument %u nicht 0 ist"
*************** msgstr "Anweisung (%p) nach Optimierungs
*** 33033,33049 ****
  msgid "verify_ssa failed"
  msgstr "verify_ssa gescheitert"
  
! #: tree-streamer-in.cc:347
  #, gcc-internal-format
  msgid "machine independent builtin code out of range"
  msgstr "maschinenunabhÃ¤ngiger eingebauter Code auÃŸerhalb des Wertebereiches"
  
! #: tree-streamer-in.cc:353
  #, gcc-internal-format
  msgid "target specific builtin not available"
  msgstr "zielspezifische eingebaute Funktion ist nicht verfÃ¼gbar"
  
! #: tree-streamer-in.cc:726
  #, gcc-internal-format
  msgid "degree of %<poly_int%> exceeds %<NUM_POLY_INT_COEFFS%>"
  msgstr "Grad von %<poly_int%> Ã¼berschreitet %<NUM_POLY_INT_COEFFS%>"
--- 33051,33067 ----
  msgid "verify_ssa failed"
  msgstr "verify_ssa gescheitert"
  
! #: tree-streamer-in.cc:348
  #, gcc-internal-format
  msgid "machine independent builtin code out of range"
  msgstr "maschinenunabhÃ¤ngiger eingebauter Code auÃŸerhalb des Wertebereiches"
  
! #: tree-streamer-in.cc:354
  #, gcc-internal-format
  msgid "target specific builtin not available"
  msgstr "zielspezifische eingebaute Funktion ist nicht verfÃ¼gbar"
  
! #: tree-streamer-in.cc:736
  #, gcc-internal-format
  msgid "degree of %<poly_int%> exceeds %<NUM_POLY_INT_COEFFS%>"
  msgstr "Grad von %<poly_int%> Ã¼berschreitet %<NUM_POLY_INT_COEFFS%>"
*************** msgstr "Die Adresse der automatischen Va
*** 33073,33089 ****
  msgid "address of local variable passed to %<musttail%> call argument"
  msgstr "Adresse einer lokalen Variable wird an das Argument des %<musttail%>-Aufrufs Ã¼bergeben"
  
! #: tree-tailcall.cc:885 tree-tailcall.cc:914
  #, gcc-internal-format
  msgid "address of local variable can escape to %<musttail%> call"
  msgstr "Adresse einer lokalen Variable kann zu einem %<musttail%>-Aufruf entwischen"
  
! #: tree-tailcall.cc:909
  #, gcc-internal-format
  msgid "address of automatic variable %qD can escape to %<musttail%> call"
  msgstr "Adresse der lokalen Variable %qD kann zu einem %<musttail%>-Aufruf entwischen"
  
! #: tree-tailcall.cc:939
  #, gcc-internal-format
  msgid "address of parameter %qD can escape to %<musttail%> call"
  msgstr "Adresse des Parameters %qD kann zu einem %<musttail%>-Aufruf entwischen"
--- 33091,33107 ----
  msgid "address of local variable passed to %<musttail%> call argument"
  msgstr "Adresse einer lokalen Variable wird an das Argument des %<musttail%>-Aufrufs Ã¼bergeben"
  
! #: tree-tailcall.cc:1015 tree-tailcall.cc:1044
  #, gcc-internal-format
  msgid "address of local variable can escape to %<musttail%> call"
  msgstr "Adresse einer lokalen Variable kann zu einem %<musttail%>-Aufruf entwischen"
  
! #: tree-tailcall.cc:1039
  #, gcc-internal-format
  msgid "address of automatic variable %qD can escape to %<musttail%> call"
  msgstr "Adresse der lokalen Variable %qD kann zu einem %<musttail%>-Aufruf entwischen"
  
! #: tree-tailcall.cc:1069
  #, gcc-internal-format
  msgid "address of parameter %qD can escape to %<musttail%> call"
  msgstr "Adresse des Parameters %qD kann zu einem %<musttail%>-Aufruf entwischen"
*************** msgstr "Vektorbedingung wird stÃ¼ckweise
*** 33113,33119 ****
  msgid "vector shuffling operation will be expanded piecewise"
  msgstr "Vektorumverteilungsoperation wird stÃ¼ckweise ausgeweitet"
  
! #: tree-vect-loop.cc:5115
  #, gcc-internal-format
  msgid "vectorization did not happen for a simd loop"
  msgstr "Vektorisierung fÃ¼r eine SIMD-Schleife nicht durchgefÃ¼hrt"
--- 33131,33137 ----
  msgid "vector shuffling operation will be expanded piecewise"
  msgstr "Vektorumverteilungsoperation wird stÃ¼ckweise ausgeweitet"
  
! #: tree-vect-loop.cc:5116
  #, gcc-internal-format
  msgid "vectorization did not happen for a simd loop"
  msgstr "Vektorisierung fÃ¼r eine SIMD-Schleife nicht durchgefÃ¼hrt"
*************** msgstr "Thread-lokale COMMON-Daten nicht
*** 33678,33684 ****
  msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
  msgstr "angeforderte Ausrichtung fÃ¼r %q+D ist grÃ¶ÃŸer als die implementierte Ausrichtung von %wu"
  
! #: varasm.cc:2513 c/c-decl.cc:5971 c/c-parser.cc:1969 m2/gm2-gcc/m2type.cc:1248
  #, gcc-internal-format
  msgid "storage size of %q+D isn%'t known"
  msgstr "SpeichergrÃ¶ÃŸe von %q+D ist unbekannt"
--- 33696,33702 ----
  msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
  msgstr "angeforderte Ausrichtung fÃ¼r %q+D ist grÃ¶ÃŸer als die implementierte Ausrichtung von %wu"
  
! #: varasm.cc:2513 c/c-decl.cc:5971 c/c-parser.cc:2014 m2/gm2-gcc/m2type.cc:1248
  #, gcc-internal-format
  msgid "storage size of %q+D isn%'t known"
  msgstr "SpeichergrÃ¶ÃŸe von %q+D ist unbekannt"
*************** msgstr "%qs-Symbol %q+D zielt letztendli
*** 33753,33759 ****
  msgid "%qs symbol %q+D must have static linkage"
  msgstr "%qs-Symbol %q+D muss statische Bindung haben"
  
! #: varasm.cc:6609 config/nvptx/nvptx.cc:7758
  #, gcc-internal-format
  msgid "alias definitions not supported in this configuration"
  msgstr "Alias-Definitionen werden in dieser Konfiguration nicht unterstÃ¼tzt"
--- 33771,33777 ----
  msgid "%qs symbol %q+D must have static linkage"
  msgstr "%qs-Symbol %q+D muss statische Bindung haben"
  
! #: varasm.cc:6609 config/nvptx/nvptx.cc:7764
  #, gcc-internal-format
  msgid "alias definitions not supported in this configuration"
  msgstr "Alias-Definitionen werden in dieser Konfiguration nicht unterstÃ¼tzt"
*************** msgid "%qE attribute ignored for field o
*** 33925,33951 ****
  msgstr "Attribut %qE ignoriert fÃ¼r Feld vom Typ %qT"
  
  #: c-family/c-attribs.cc:1452 c-family/c-attribs.cc:3650
! #: c-family/c-attribs.cc:6271 ada/gcc-interface/utils.cc:7461
  #, gcc-internal-format
  msgid "%qE argument not a string"
  msgstr "Argument %qE ist keine Zeichenkette"
  
! #: c-family/c-attribs.cc:1627 ada/gcc-interface/utils.cc:6947
  #, gcc-internal-format
  msgid "%qE attribute ignored because of argument %qE"
  msgstr "Attribut %qE wird wegen des Arguments %qE ignoriert"
  
! #: c-family/c-attribs.cc:1648 ada/gcc-interface/utils.cc:6968
  #, gcc-internal-format
  msgid "ignoring attribute %qE because of excess arguments starting at %qE"
  msgstr "Attribut %qE wird wegen Ã¼berzÃ¤hliger Argumente, die mit %qE beginnen, ignoriert"
  
! #: c-family/c-attribs.cc:1662 ada/gcc-interface/utils.cc:6982
  #, gcc-internal-format
  msgid "attribute %qE does not apply to elements of non-scalar type %qT"
  msgstr "das Attribut %qE gilt nicht fÃ¼r Elemente des nicht skalaren Typs %qT"
  
! #: c-family/c-attribs.cc:1667 ada/gcc-interface/utils.cc:6987
  #, gcc-internal-format
  msgid "attribute %qE does not apply to fields of aggregate type %qT"
  msgstr "Attribut %qE gilt nicht fÃ¼r Felder des Aggregattyps %qT"
--- 33943,33969 ----
  msgstr "Attribut %qE ignoriert fÃ¼r Feld vom Typ %qT"
  
  #: c-family/c-attribs.cc:1452 c-family/c-attribs.cc:3650
! #: c-family/c-attribs.cc:6271 ada/gcc-interface/utils.cc:7463
  #, gcc-internal-format
  msgid "%qE argument not a string"
  msgstr "Argument %qE ist keine Zeichenkette"
  
! #: c-family/c-attribs.cc:1627 ada/gcc-interface/utils.cc:6949
  #, gcc-internal-format
  msgid "%qE attribute ignored because of argument %qE"
  msgstr "Attribut %qE wird wegen des Arguments %qE ignoriert"
  
! #: c-family/c-attribs.cc:1648 ada/gcc-interface/utils.cc:6970
  #, gcc-internal-format
  msgid "ignoring attribute %qE because of excess arguments starting at %qE"
  msgstr "Attribut %qE wird wegen Ã¼berzÃ¤hliger Argumente, die mit %qE beginnen, ignoriert"
  
! #: c-family/c-attribs.cc:1662 ada/gcc-interface/utils.cc:6984
  #, gcc-internal-format
  msgid "attribute %qE does not apply to elements of non-scalar type %qT"
  msgstr "das Attribut %qE gilt nicht fÃ¼r Elemente des nicht skalaren Typs %qT"
  
! #: c-family/c-attribs.cc:1667 ada/gcc-interface/utils.cc:6989
  #, gcc-internal-format
  msgid "attribute %qE does not apply to fields of aggregate type %qT"
  msgstr "Attribut %qE gilt nicht fÃ¼r Felder des Aggregattyps %qT"
*************** msgid "%qE attribute has no effect on un
*** 33961,33972 ****
  msgstr "Attribut %qE wirkt sich nicht auf einheits-lokale Funktionen aus"
  
  #: c-family/c-attribs.cc:1993 c-family/c-attribs.cc:3633
! #: ada/gcc-interface/utils.cc:7217
  #, gcc-internal-format
  msgid "%qE attribute ignored because %qD is not a variable"
  msgstr "Attribut %qE ignoriert, da %qD keine Variable ist"
  
! #: c-family/c-attribs.cc:1999 ada/gcc-interface/utils.cc:7223
  #, gcc-internal-format
  msgid "%qE attribute ignored because %qD is not a local variable"
  msgstr "Attribut %qE ignoriert, da %qD keine lokale Variable ist"
--- 33979,33990 ----
  msgstr "Attribut %qE wirkt sich nicht auf einheits-lokale Funktionen aus"
  
  #: c-family/c-attribs.cc:1993 c-family/c-attribs.cc:3633
! #: ada/gcc-interface/utils.cc:7219
  #, gcc-internal-format
  msgid "%qE attribute ignored because %qD is not a variable"
  msgstr "Attribut %qE ignoriert, da %qD keine Variable ist"
  
! #: c-family/c-attribs.cc:1999 ada/gcc-interface/utils.cc:7225
  #, gcc-internal-format
  msgid "%qE attribute ignored because %qD is not a local variable"
  msgstr "Attribut %qE ignoriert, da %qD keine lokale Variable ist"
*************** msgstr "Argument des Attributs %<symver%
*** 34231,34237 ****
  #: c-family/c-attribs.cc:3148 d/d-attribs.cc:1126
  #, gcc-internal-format
  msgid "symver attribute argument must have format %<name@nodename%>"
! msgstr "Argument des Attributs Â»symverÂ« muss das Format %<Name@Nodenname%> haben"
  
  #: c-family/c-attribs.cc:3149 d/d-attribs.cc:1127
  #, gcc-internal-format
--- 34249,34255 ----
  #: c-family/c-attribs.cc:3148 d/d-attribs.cc:1126
  #, gcc-internal-format
  msgid "symver attribute argument must have format %<name@nodename%>"
! msgstr "Argument des Attributs Â»symverÂ« muss das Format %<Name@Knotenname%> haben"
  
  #: c-family/c-attribs.cc:3149 d/d-attribs.cc:1127
  #, gcc-internal-format
*************** msgid "weak %q+D cannot be defined %qE"
*** 34249,34255 ****
  msgstr "schwaches %q+D kann nicht als %qE definiert werden"
  
  #: c-family/c-attribs.cc:3209 c-family/c-attribs.cc:4198
! #: ada/gcc-interface/utils.cc:7288 jit/dummy-frontend.cc:883
  #, gcc-internal-format
  msgid "attribute %qE argument not a string"
  msgstr "Attributargument von %qE ist keine Zeichenkette"
--- 34267,34273 ----
  msgstr "schwaches %q+D kann nicht als %qE definiert werden"
  
  #: c-family/c-attribs.cc:3209 c-family/c-attribs.cc:4198
! #: ada/gcc-interface/utils.cc:7290 jit/dummy-frontend.cc:883
  #, gcc-internal-format
  msgid "attribute %qE argument not a string"
  msgstr "Attributargument von %qE ist keine Zeichenkette"
*************** msgstr "Argument %qE muss eins von %qs,
*** 34357,34363 ****
  
  #: c-family/c-attribs.cc:3685 c-family/c-attribs.cc:4281
  #: c-family/c-attribs.cc:6236 c-family/c-attribs.cc:6263
! #: config/m32c/m32c.cc:2942 ada/gcc-interface/utils.cc:7447
  #, gcc-internal-format
  msgid "%qE attribute applies only to functions"
  msgstr "Attribut %qE kann nur auf Funktionen angewandt werden"
--- 34375,34381 ----
  
  #: c-family/c-attribs.cc:3685 c-family/c-attribs.cc:4281
  #: c-family/c-attribs.cc:6236 c-family/c-attribs.cc:6263
! #: config/m32c/m32c.cc:2942 ada/gcc-interface/utils.cc:7449
  #, gcc-internal-format
  msgid "%qE attribute applies only to functions"
  msgstr "Attribut %qE kann nur auf Funktionen angewandt werden"
*************** msgstr "Attributargument %qE mit Wert %E
*** 34453,34459 ****
  msgid "%qE attribute argument %E is not in the range [0, %wu]"
  msgstr "Argument %2$E von Attribut %1$qE liegt nicht im Bereich [0, %3$wu]"
  
! #: c-family/c-attribs.cc:4211 ada/gcc-interface/utils.cc:7301
  #, gcc-internal-format
  msgid "only %<inbranch%> and %<notinbranch%> flags are allowed for %<__simd__%> attribute"
  msgstr "nur die Schalter %<inbranch%> und %<notinbranch%> sind fÃ¼r das %<__simd__%>-Attribut erlaubt"
--- 34471,34477 ----
  msgid "%qE attribute argument %E is not in the range [0, %wu]"
  msgstr "Argument %2$E von Attribut %1$qE liegt nicht im Bereich [0, %3$wu]"
  
! #: c-family/c-attribs.cc:4211 ada/gcc-interface/utils.cc:7303
  #, gcc-internal-format
  msgid "only %<inbranch%> and %<notinbranch%> flags are allowed for %<__simd__%> attribute"
  msgstr "nur die Schalter %<inbranch%> und %<notinbranch%> sind fÃ¼r das %<__simd__%>-Attribut erlaubt"
*************** msgstr "%qD ist mit %qD unvertrÃ¤glich"
*** 34503,34509 ****
  msgid "%qE argument is not a function"
  msgstr "Argument %qE ist keine Funktion"
  
! #: c-family/c-attribs.cc:4635 cp/name-lookup.cc:6573
  #, gcc-internal-format
  msgid "deprecated message is not a string"
  msgstr "Veraltete Meldung ist keine Zeichenkette"
--- 34521,34527 ----
  msgid "%qE argument is not a function"
  msgstr "Argument %qE ist keine Funktion"
  
! #: c-family/c-attribs.cc:4635 cp/name-lookup.cc:6576
  #, gcc-internal-format
  msgid "deprecated message is not a string"
  msgstr "Veraltete Meldung ist keine Zeichenkette"
*************** msgstr "Attributargument %qE mit Wert %q
*** 34533,34544 ****
  msgid "%qE attribute argument value %qE exceeds %wu"
  msgstr "Attributargument %qE mit Wert %qE Ã¼bersteigt %wu"
  
! #: c-family/c-attribs.cc:4876 ada/gcc-interface/utils.cc:4436
  #, gcc-internal-format
  msgid "vector size not an integral multiple of component size"
  msgstr "VektorgrÃ¶ÃŸe kein ganzzahliges Vielfaches der KomponentengrÃ¶ÃŸe"
  
! #: c-family/c-attribs.cc:4882 ada/gcc-interface/utils.cc:4443
  #, gcc-internal-format
  msgid "zero vector size"
  msgstr "VektorgrÃ¶ÃŸe Null"
--- 34551,34562 ----
  msgid "%qE attribute argument value %qE exceeds %wu"
  msgstr "Attributargument %qE mit Wert %qE Ã¼bersteigt %wu"
  
! #: c-family/c-attribs.cc:4876 ada/gcc-interface/utils.cc:4438
  #, gcc-internal-format
  msgid "vector size not an integral multiple of component size"
  msgstr "VektorgrÃ¶ÃŸe kein ganzzahliges Vielfaches der KomponentengrÃ¶ÃŸe"
  
! #: c-family/c-attribs.cc:4882 ada/gcc-interface/utils.cc:4445
  #, gcc-internal-format
  msgid "zero vector size"
  msgstr "VektorgrÃ¶ÃŸe Null"
*************** msgstr "Attribut %qE benÃ¶tigt Prototype
*** 34710,34726 ****
  msgid "%qE attribute only applies to variadic functions"
  msgstr "Attribut %qE gilt nur fÃ¼r variadische Funktionen"
  
! #: c-family/c-attribs.cc:6031 ada/gcc-interface/utils.cc:6848
  #, gcc-internal-format
  msgid "requested position is not an integer constant"
  msgstr "Angeforderte Position ist keine Ganzzahlkonstante"
  
! #: c-family/c-attribs.cc:6039 ada/gcc-interface/utils.cc:6855
  #, gcc-internal-format
  msgid "requested position is less than zero"
  msgstr "Angeforderte Position ist kleiner als Null"
  
! #: c-family/c-attribs.cc:6088 ada/gcc-interface/utils.cc:7344
  #: d/d-attribs.cc:771 jit/dummy-frontend.cc:799
  #, gcc-internal-format
  msgid "empty string in attribute %<target%>"
--- 34728,34744 ----
  msgid "%qE attribute only applies to variadic functions"
  msgstr "Attribut %qE gilt nur fÃ¼r variadische Funktionen"
  
! #: c-family/c-attribs.cc:6031 ada/gcc-interface/utils.cc:6850
  #, gcc-internal-format
  msgid "requested position is not an integer constant"
  msgstr "Angeforderte Position ist keine Ganzzahlkonstante"
  
! #: c-family/c-attribs.cc:6039 ada/gcc-interface/utils.cc:6857
  #, gcc-internal-format
  msgid "requested position is less than zero"
  msgstr "Angeforderte Position ist kleiner als Null"
  
! #: c-family/c-attribs.cc:6088 ada/gcc-interface/utils.cc:7346
  #: d/d-attribs.cc:771 jit/dummy-frontend.cc:799
  #, gcc-internal-format
  msgid "empty string in attribute %<target%>"
*************** msgstr "Leere Zeichenkette in Attribut %
*** 34734,34740 ****
  msgid "%qE attribute argument not a string constant"
  msgstr "Argument des Attributs %qE ist keine Zeichenkettenkonstante"
  
! #: c-family/c-attribs.cc:6288 ada/gcc-interface/utils.cc:7478
  #, gcc-internal-format
  msgid "unrecognized %qE attribute argument %qs"
  msgstr "Attribut %qE hat unbekanntes Argument %qs"
--- 34752,34758 ----
  msgid "%qE attribute argument not a string constant"
  msgstr "Argument des Attributs %qE ist keine Zeichenkettenkonstante"
  
! #: c-family/c-attribs.cc:6288 ada/gcc-interface/utils.cc:7480
  #, gcc-internal-format
  msgid "unrecognized %qE attribute argument %qs"
  msgstr "Attribut %qE hat unbekanntes Argument %qs"
*************** msgstr "UngÃ¼ltige Operanden fÃ¼r binÃ¤r
*** 34926,34937 ****
  #: c-family/c-common.cc:3227
  #, gcc-internal-format
  msgid "comparison is always false due to limited range of data type"
! msgstr "Vergleich ist durch beschrÃ¤nkten Wertebereich des Datentyps stets Â»unwahrÂ«"
  
  #: c-family/c-common.cc:3230
  #, gcc-internal-format
  msgid "comparison is always true due to limited range of data type"
! msgstr "Vergleich ist durch beschrÃ¤nkten Wertebereich des Datentyps stets Â»wahrÂ«"
  
  #: c-family/c-common.cc:3332
  #, gcc-internal-format
--- 34944,34955 ----
  #: c-family/c-common.cc:3227
  #, gcc-internal-format
  msgid "comparison is always false due to limited range of data type"
! msgstr "Vergleich ist durch beschrÃ¤nkten Wertebereich des Datentyps stets Â»falseÂ«"
  
  #: c-family/c-common.cc:3230
  #, gcc-internal-format
  msgid "comparison is always true due to limited range of data type"
! msgstr "Vergleich ist durch beschrÃ¤nkten Wertebereich des Datentyps stets Â»trueÂ«"
  
  #: c-family/c-common.cc:3332
  #, gcc-internal-format
*************** msgstr "Zeiger auf Typen %<void *%> in A
*** 34953,35466 ****
  msgid "pointer to a function used in arithmetic"
  msgstr "Zeiger auf Funktion in Arithmetik verwendet"
  
! #: c-family/c-common.cc:3610
  #, gcc-internal-format
  msgid "enum constant in boolean context"
  msgstr "enum-Konstante in booleschem Zusammenhang"
  
! #: c-family/c-common.cc:3640 d/d-convert.cc:149
  #, gcc-internal-format
  msgid "the address of %qD will always evaluate as %<true%>"
! msgstr "Die Adresse von %qD wird immer zu %<wahr%> auswerten"
  
! #: c-family/c-common.cc:3685
  #, gcc-internal-format
  msgid "%<*%> in boolean context, suggest %<&&%> instead"
  msgstr "%<*%> in booleschem Kontext, stattdessen ist %<&&%> empfohlen"
  
! #: c-family/c-common.cc:3698
  #, gcc-internal-format
  msgid "%<<<%> in boolean context, did you mean %<<%>?"
  msgstr "%<<<%> in booleschem Kontext, meinten Sie %<<%>?"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93857
! #: c-family/c-common.cc:3714
  #, gcc-internal-format
  msgid "%<?:%> using integer constants in boolean context, the expression will always evaluate to %<true%>"
  msgstr "%<?:%> mit Ganzzahlkonstanten in booleschem Zusammenhang; der Ausdruck evaluiert immer zu %<true%>"
  
! #: c-family/c-common.cc:3723
  #, gcc-internal-format
  msgid "%<?:%> using integer constants in boolean context"
  msgstr "%<?:%> mit Ganzzahlkonstanten in booleschem Kontext"
  
! #: c-family/c-common.cc:3759
  #, gcc-internal-format
  msgid "the compiler can assume that the address of %qD will always evaluate to %<true%>"
! msgstr "der Compiler kann davon ausgehen, dass die Adresse von %qD immer zu %<true%> evaluiert"
  
! #: c-family/c-common.cc:3795 cp/semantics.cc:1030
  #, gcc-internal-format
  msgid "suggest parentheses around assignment used as truth value"
  msgstr "Um Zuweisung, die als Wahrheitswert verwendet wird, werden Klammern empfohlen"
  
! #: c-family/c-common.cc:3882 c/c-decl.cc:5028 c/c-decl.cc:7694
! #: c/c-parser.cc:4001 c/c-typeck.cc:17908
  #, gcc-internal-format
  msgid "invalid use of %<restrict%>"
  msgstr "UngÃ¼ltige Verwendung von %<restrict%>"
  
! #: c-family/c-common.cc:3958
  #, gcc-internal-format
  msgid "invalid application of %<sizeof%> to a function type"
  msgstr "UngÃ¼ltige Anwendung von %<sizeof%> auf einen Funktionstypen"
  
! #: c-family/c-common.cc:3968
  #, gcc-internal-format
  msgid "ISO C++ does not permit %<alignof%> applied to a function type"
  msgstr "ISO-C++ erlaubt kein auf Funktionstypen angewendetes %<alignof%>"
  
! #: c-family/c-common.cc:3971
  #, gcc-internal-format
  msgid "ISO C does not permit %<_Alignof%> applied to a function type"
  msgstr "ISO-C erlaubt kein auf Funktionstypen angewendetes %<_Alignof%>"
  
! #: c-family/c-common.cc:3982 cp/typeck.cc:2085
  #, gcc-internal-format
  msgid "invalid application of %qs to a void type"
  msgstr "UngÃ¼ltige Anwendung von %qs auf einen void-Typen"
  
! #: c-family/c-common.cc:3993
  #, gcc-internal-format
  msgid "invalid application of %qs to incomplete type %qT"
  msgstr "UngÃ¼ltige Anwendung von %qs auf unvollstÃ¤ndigen Typen %qT"
  
! #: c-family/c-common.cc:4001
  #, gcc-internal-format
  msgid "invalid application of %qs to array type %qT of incomplete element type"
  msgstr "UngÃ¼ltige Anwendung von %qs auf Arraytyp %qT mit unvollstÃ¤ndigem Elementtyp"
  
! #: c-family/c-common.cc:4053
  #, gcc-internal-format
  msgid "%<__alignof%> applied to a bit-field"
  msgstr "%<__alignof%> auf Bitfeld angewandt"
  
! #: c-family/c-common.cc:4878
  #, gcc-internal-format
  msgid "first argument to %<va_arg%> not of type %<va_list%>"
  msgstr "Erstes Argument fÃ¼r %<va_arg%> nicht vom Typ %<va_list%>"
  
! #: c-family/c-common.cc:4998
  #, gcc-internal-format
  msgid "cannot disable built-in function %qs"
  msgstr "Eingebaute Funktion %qs kann nicht abgeschaltet werden"
  
! #: c-family/c-common.cc:5190
  #, gcc-internal-format
  msgid "pointers are not permitted as case values"
  msgstr "Zeiger sind nicht als case-Werte zugelassen"
  
! #: c-family/c-common.cc:5199
  #, gcc-internal-format
  msgid "range expressions in switch statements are non-standard"
  msgstr "WertebereichsausdrÃ¼cke in switch-Anweisungen sind nicht standardkonform"
  
! #: c-family/c-common.cc:5204 c-family/c-common.cc:5208
! #: c-family/c-common.cc:5213
  #, gcc-internal-format
  msgid "ISO C does not support range expressions in switch statements before C2Y"
  msgstr "ISO-C unterstÃ¼tzt BereichsausdrÃ¼cke in Â»switchÂ«-Anweisungen erst ab C2Y"
  
! #: c-family/c-common.cc:5227 c-family/c-common.cc:5244
  #, gcc-internal-format
  msgid "conversion of %qE to %qT in range expression changes value to %qE"
  msgstr "Umwandlung von %qE nach %qT in Bereichsausdruck Ã¤ndert den Wert zu %qE"
  
! #: c-family/c-common.cc:5263
  #, gcc-internal-format
  msgid "empty range specified"
  msgstr "Leerer Wertebereich angegeben"
  
! #: c-family/c-common.cc:5317
  #, gcc-internal-format
  msgid "duplicate (or overlapping) case value"
  msgstr "Doppelte (oder sich Ã¼berschneidende) case-Werte"
  
! #: c-family/c-common.cc:5319
  #, gcc-internal-format
  msgid "this is the first entry overlapping that value"
  msgstr "Dies ist der erste Eintrag, der diesen Wert Ã¼berschneidet"
  
! #: c-family/c-common.cc:5323
  #, gcc-internal-format
  msgid "duplicate case value"
  msgstr "Doppelter case-Wert"
  
! #: c-family/c-common.cc:5324 c-family/c-warn.cc:2662
  #, gcc-internal-format
  msgid "previously used here"
  msgstr "Bereits hier verwendet"
  
! #: c-family/c-common.cc:5328
  #, gcc-internal-format
  msgid "multiple default labels in one switch"
  msgstr "Mehrere Standardmarken in einem Â»switchÂ«"
  
! #: c-family/c-common.cc:5330
  #, gcc-internal-format
  msgid "this is the first default label"
  msgstr "Dies ist die erste Standardmarke"
  
! #: c-family/c-common.cc:5442
  #, gcc-internal-format
  msgid "taking the address of a label is non-standard"
  msgstr "Das Ermitteln der Adresse einer Marke ist nicht standardkonform"
  
! #: c-family/c-common.cc:5627
  #, gcc-internal-format
  msgid "requested alignment is not an integer constant"
  msgstr "Verlangte Ausrichtung ist keine Ganzzahlkonstante"
  
! #: c-family/c-common.cc:5635 c-family/c-common.cc:5645
  #, gcc-internal-format
  msgid "requested alignment %qE is not a positive power of 2"
  msgstr "Verlangte Ausrichtung %qE ist keine positive Zweierpotenz"
  
! #: c-family/c-common.cc:5655
  #, gcc-internal-format
  msgid "requested alignment %qE exceeds object file maximum %u"
  msgstr "verlangte Ausrichtung %qE ist grÃ¶ÃŸer als die maximale DateigrÃ¶ÃŸe %u"
  
! #: c-family/c-common.cc:5663
  #, gcc-internal-format
  msgid "requested alignment %qE exceeds maximum %u"
  msgstr "verlangte Ausrichtung %qE Ã¼bersteigt den HÃ¶chstwert %u"
  
! #: c-family/c-common.cc:5858
  #, gcc-internal-format
  msgid "not enough variable arguments to fit a sentinel"
  msgstr "Zu wenige variable Argumente, um zu einem WÃ¤chter zu passen"
  
! #: c-family/c-common.cc:5873
  #, gcc-internal-format
  msgid "missing sentinel in function call"
  msgstr "WÃ¤chter in Funktionsaufruf fehlt"
  
! #: c-family/c-common.cc:6112 c-family/c-common.cc:6165 d/d-attribs.cc:837
  #: d/d-attribs.cc:887
  #, gcc-internal-format
  msgid "bad option %qs to attribute %<optimize%>"
  msgstr "schlechte Option %qs fÃ¼r Attribut %<optimize%>"
  
! #: c-family/c-common.cc:6116 c-family/c-common.cc:6170
  #, gcc-internal-format
  msgid "bad option %qs to pragma %<optimize%>"
  msgstr "schlechte Option %qs fÃ¼r Pragma %<optimize%>"
  
! #: c-family/c-common.cc:6219
  #, gcc-internal-format
  msgid "attribute %<fallthrough%> specified multiple times"
  msgstr "Attribut %<fallthrough%> ist mehrfach angegeben"
  
! #: c-family/c-common.cc:6223
  #, gcc-internal-format
  msgid "%<fallthrough%> attribute specified with a parameter"
  msgstr "%<fallthrough%>-Attribut mit einem Parameter angegeben"
  
! #: c-family/c-common.cc:6412 c-family/c-common.cc:7430
! #: c-family/c-common.cc:7478 c-family/c-common.cc:7560
! #: c-family/c-common.cc:7646 c-family/c-common.cc:8315
  #: config/aarch64/aarch64-sve-builtins.cc:3001
  #: config/arm/arm-mve-builtins.cc:1714
  #, gcc-internal-format
  msgid "too few arguments to function %qE"
  msgstr "Zu wenige Argumente fÃ¼r Funktion %qE"
  
! #: c-family/c-common.cc:6418 c-family/c-common.cc:7485
! #: c-family/c-common.cc:7673 c-family/c-common.cc:8317
  #: config/aarch64/aarch64-sve-builtins.cc:3003
  #: config/arm/arm-mve-builtins.cc:1716
  #, gcc-internal-format
  msgid "too many arguments to function %qE"
  msgstr "zu viele Argumente fÃ¼r Funktion %qE"
  
! #: c-family/c-common.cc:6462
  #, gcc-internal-format
  msgid "third argument to function %qE must be a constant integer"
  msgstr "Drittes Argument fÃ¼r Funktion %qE muss eine konstante Ganzzahl sein"
  
! #: c-family/c-common.cc:6488
  #, gcc-internal-format
  msgid "second argument to function %qE must be a constant integer power of 2 between %qi and %qu bits"
  msgstr "zweites Argument fÃ¼r Funktion %qE muss eine konstante Zweierpotenz zwischen %qi und %qu Bits sein"
  
! #: c-family/c-common.cc:6512 c-family/c-common.cc:6568
  #, gcc-internal-format
  msgid "non-floating-point argument in call to function %qE"
  msgstr "Nicht-Gleitkomma-Argument in Aufruf von Funktion %qE"
  
! #: c-family/c-common.cc:6541
  #, gcc-internal-format
  msgid "non-floating-point arguments in call to function %qE"
  msgstr "Nicht-Gleitkomma-Argumente in Aufruf von Funktion %qE"
  
! #: c-family/c-common.cc:6558
  #, gcc-internal-format
  msgid "non-const integer argument %u in call to function %qE"
  msgstr "Nicht-konstantes Ganzzahl-Argument %u in Aufruf von Funktion %qE"
  
! #: c-family/c-common.cc:6587
  #, gcc-internal-format
  msgid "non-integer argument 3 in call to function %qE"
  msgstr "Nicht-Ganzzahl-Argument 3 in Aufruf von Funktion %qE"
  
! #: c-family/c-common.cc:6607 c-family/c-common.cc:6673
! #: c-family/c-common.cc:6757 c-family/c-common.cc:6784
  #, gcc-internal-format
  msgid "argument %u in call to function %qE does not have integral type"
  msgstr "Argument %u in Aufruf von %qE muss ein Ganzzahltyp sein"
  
! #: c-family/c-common.cc:6617
  #, gcc-internal-format
  msgid "argument 3 in call to function %qE does not have pointer to integral type"
  msgstr "Argument 3 in Aufruf von %qE muss Zeiger auf Ganzzahltyp sein"
  
! #: c-family/c-common.cc:6626
  #, gcc-internal-format
  msgid "argument 3 in call to function %qE has pointer to enumerated type"
  msgstr "Argument 3 in Aufruf von %qE darf kein Zeiger auf enum-Typ sein"
  
! #: c-family/c-common.cc:6635
  #, gcc-internal-format
  msgid "argument 3 in call to function %qE has pointer to boolean type"
  msgstr "Argument 3 in Aufruf von %qE darf kein Zeiger auf booleschen Typ sein"
  
! #: c-family/c-common.cc:6644 c-family/c-common.cc:6653
! #: c-family/c-common.cc:6725 c-family/c-common.cc:6734
  #, gcc-internal-format
  msgid "argument %u in call to function %qE has pointer to %qs type (%qT)"
  msgstr "Argument %u in Aufruf von %qE darf kein Zeiger auf %qs sein (%qT)"
  
! #: c-family/c-common.cc:6682 c-family/c-common.cc:6793
  #, gcc-internal-format
  msgid "argument %u in call to function %qE has enumerated type"
  msgstr "Argument %u in Aufruf von %qE hat AufzÃ¤hlungstyp"
  
! #: c-family/c-common.cc:6691 c-family/c-common.cc:6802
  #, gcc-internal-format
  msgid "argument %u in call to function %qE has boolean type"
  msgstr "Argument %u in Aufruf von %qE ist ein boolescher Typ sein"
  
! #: c-family/c-common.cc:6707
  #, gcc-internal-format
  msgid "argument %u in call to function %qE does not have pointer type"
  msgstr "Argument %u in Aufruf von %qE muss ein Zeigertyp sein"
  
! #: c-family/c-common.cc:6716
  #, gcc-internal-format
  msgid "argument %u in call to function %qE points to incomplete type"
  msgstr "Argument %u in Aufruf von %qE muss auf einen vollstÃ¤ndigen Typ zeigen"
  
! #: c-family/c-common.cc:6770
  #, gcc-internal-format
  msgid "argument %u in call to function %qE does not have %<int%> type"
  msgstr "Argument %u in Aufruf von %qE hat nicht den Typ %<int%>"
  
! #: c-family/c-common.cc:6814
  #, gcc-internal-format
  msgid "argument 1 in call to function %qE has unsigned type"
  msgstr "Argument 1 in Aufruf von %qE hat einen vorzeichenlosen Typen"
  
! #: c-family/c-common.cc:6824
  #, gcc-internal-format
  msgid "argument 1 in call to function %qE has signed type"
  msgstr "Argument 1 in Aufruf von %qE hat einen vorzeichenbehafteten Typen"
  
! #: c-family/c-common.cc:7089 rust/backend/rust-tree.cc:3588
  #, gcc-internal-format
  msgid "cannot apply %<offsetof%> to static data member %qD"
  msgstr "%<offsetof%> kann nicht auf statisches Datenelement %qD angewendet werden"
  
! #: c-family/c-common.cc:7094 rust/backend/rust-tree.cc:3593
  #, gcc-internal-format
  msgid "cannot apply %<offsetof%> when %<operator[]%> is overloaded"
  msgstr "%<offsetof%> kann nicht angewandt werden, wenn %<operator[]%> Ã¼berladen ist"
  
! #: c-family/c-common.cc:7101 rust/backend/rust-tree.cc:3600
  #, gcc-internal-format
  msgid "cannot apply %<offsetof%> to a non constant address"
  msgstr "%<offsetof%> kann nicht auf nicht-konstante Adresse angewandt werden"
  
! #: c-family/c-common.cc:7114 rust/backend/rust-tree.cc:3613
  #, gcc-internal-format
  msgid "attempt to take address of bit-field structure member %qD"
  msgstr "Versuch, die Adresse des Bitfeldstrukturelements %qD zu ermitteln"
  
! #: c-family/c-common.cc:7167 rust/backend/rust-tree.cc:3665
  #, gcc-internal-format
  msgid "index %E denotes an offset greater than size of %qT"
  msgstr "Index %E markiert einen Offset grÃ¶ÃŸer als die GrÃ¶ÃŸe von %qT"
  
! #: c-family/c-common.cc:7344
  #, gcc-internal-format
  msgid "size of array is too large"
  msgstr "ArraygrÃ¶ÃŸe ist zu groÃŸ"
  
! #: c-family/c-common.cc:7460 c-family/c-common.cc:7604
  #, gcc-internal-format
  msgid "operand type %qT is incompatible with argument %d of %qE"
  msgstr "Operandentyp %qT ist inkompatibel mit Argument %d von %qE"
  
! #: c-family/c-common.cc:7496
  #, gcc-internal-format
  msgid "expecting argument of type pointer or of type integer for argument 1"
  msgstr "als Argument 1 wurde entweder ein Zeigertyp oder ein Ganzzahltyp erwartet"
  
! #: c-family/c-common.cc:7513
  #, gcc-internal-format
  msgid "both arguments must be compatible"
  msgstr "die beiden Argumente mÃ¼ssen kompatibel sein"
  
! #: c-family/c-common.cc:7749
  #, gcc-internal-format
  msgid "incorrect number of arguments to function %qE"
  msgstr "Falsche Anzahl der Argumente fÃ¼r Funktion %qE"
  
! #: c-family/c-common.cc:7765
  #, gcc-internal-format
  msgid "argument 1 of %qE must be a non-void pointer type"
  msgstr "Argument 1 von %qE muss ein Nicht-Void-Zeigertyp sein"
  
! #: c-family/c-common.cc:7773
  #, gcc-internal-format
  msgid "argument 1 of %qE must be a pointer to a complete type"
  msgstr "Argument 1 von %qE muss ein Zeiger auf einen vollstÃ¤ndigen Typen sein"
  
! #: c-family/c-common.cc:7783
  #, gcc-internal-format
  msgid "argument 1 of %qE must be a pointer to a constant size type"
  msgstr "Argument 1 von %qE muss ein Zeiger auf Typen konstanter GrÃ¶ÃŸe sein"
  
! #: c-family/c-common.cc:7795
  #, gcc-internal-format
  msgid "argument 1 of %qE must be a pointer to a nonzero size object"
  msgstr "Argument 1 von %qE muss ein Zeiger auf Objekt breiter als Null sein"
  
! #: c-family/c-common.cc:7817
  #, gcc-internal-format
  msgid "argument %d of %qE must be a pointer type"
  msgstr "Argument %d von %qE muss eine Zeigertyp sein"
  
! #: c-family/c-common.cc:7827
  #, gcc-internal-format
  msgid "argument %d of %qE must be a pointer to a constant size type"
  msgstr "Argument %d von %qE muss ein Zeiger auf Typen konstanter GrÃ¶ÃŸe sein"
  
! #: c-family/c-common.cc:7836
  #, gcc-internal-format
  msgid "argument %d of %qE must not be a pointer to a function"
  msgstr "Argument %d von %qE darf kein Zeiger auf eine Funktion sein"
  
! #: c-family/c-common.cc:7846
  #, gcc-internal-format
  msgid "size mismatch in argument %d of %qE"
  msgstr "Unpassende GrÃ¶ÃŸe in Argument %d von %qE"
  
! #: c-family/c-common.cc:7861
  #, gcc-internal-format
  msgid "argument %d of %qE must not be a pointer to a %<const%> type"
  msgstr "Argument %d von %qE darf kein Zeiger auf einen %<const%>-Typen sein"
  
! #: c-family/c-common.cc:7867
  #, gcc-internal-format
  msgid "argument %d of %qE discards %<const%> qualifier"
  msgstr "Argument %d von %qE entfernt Kennzeichner %<const%>"
  
! #: c-family/c-common.cc:7878
  #, gcc-internal-format
  msgid "argument %d of %qE must not be a pointer to a %<volatile%> type"
  msgstr "Argument %d von %qE darf kein Zeiger auf einen %<volatile%>-Typen sein"
  
! #: c-family/c-common.cc:7884
  #, gcc-internal-format
  msgid "argument %d of %qE discards %<volatile%> qualifier"
  msgstr "Argument %d von %qE entfernt Kennzeichner %<volatile%>"
  
! #: c-family/c-common.cc:7898
  #, gcc-internal-format
  msgid "non-integer memory model argument %d of %qE"
  msgstr "Nicht-Ganzzahlargument %d fÃ¼r Speichermodell von %qE"
  
! #: c-family/c-common.cc:7913
  #, gcc-internal-format
  msgid "invalid memory model argument %d of %qE"
  msgstr "ungÃ¼ltiges Argument %d fÃ¼r Speichermodell von %qE"
  
! #: c-family/c-common.cc:8554
  #, gcc-internal-format
  msgid "this target does not define a speculation barrier; your program will still execute correctly, but incorrect speculation may not be restricted"
  msgstr "dieses Ziel definiert keine Spekulationsbarriere; das erzeugte Programm wird trotzdem korrekt laufen, aber irrige Spekulationen sind mÃ¶glicherweise nicht eingeschrÃ¤nkt"
  
! #: c-family/c-common.cc:9252
  #, gcc-internal-format
  msgid "index value is out of bound"
  msgstr "Indexwert ist auÃŸerhalb der Grenzen"
  
! #: c-family/c-common.cc:9298 c-family/c-common.cc:9347
! #: c-family/c-common.cc:9363
  #, gcc-internal-format
  msgid "conversion of scalar %qT to vector %qT involves truncation"
  msgstr "Umwandlung von Skalar %qT in Vektor %qT fÃ¼hrt zum Abschneiden"
  
  #. Reject arguments that are built-in functions with
  #. no library fallback.
! #: c-family/c-common.cc:9451 d/intrinsics.cc:1459
  #: rust/backend/rust-tree.cc:3484
  #, gcc-internal-format
  msgid "built-in function %qE must be directly called"
  msgstr "eingebaute Funktion %qE muss direkt aufgerufen werden"
  
! #: c-family/c-common.cc:9471
  #, gcc-internal-format
  msgid "size of array %qE is not a constant expression"
  msgstr "GrÃ¶ÃŸe des Arrays %qE ist kein konstanter Ausdruck"
  
! #: c-family/c-common.cc:9474
  #, gcc-internal-format
  msgid "size of array is not a constant expression"
  msgstr "GrÃ¶ÃŸe des Arrays ist kein konstanter Ausdruck"
  
! #: c-family/c-common.cc:9478
  #, gcc-internal-format
  msgid "size %qE of array %qE is negative"
  msgstr "GrÃ¶ÃŸe %qE des Arrays %qE ist negativ"
  
! #: c-family/c-common.cc:9481
  #, gcc-internal-format
  msgid "size %qE of array is negative"
  msgstr "GrÃ¶ÃŸe %qE des Arrays ist negativ"
  
! #: c-family/c-common.cc:9486
  #, gcc-internal-format
  msgid "size %qE of array %qE exceeds maximum object size %qE"
  msgstr "GrÃ¶ÃŸe %qE des Arrays %qE Ã¼bersteigt maximale ObjektgrÃ¶ÃŸe %E"
  
! #: c-family/c-common.cc:9489
  #, gcc-internal-format
  msgid "size %qE of array exceeds maximum object size %qE"
  msgstr "GrÃ¶ÃŸe %qE des Arrays Ã¼berschreitet maximale ObjektgrÃ¶ÃŸe %qE"
  
! #: c-family/c-common.cc:9494
  #, gcc-internal-format
  msgid "size of array %qE exceeds maximum object size %qE"
  msgstr "GrÃ¶ÃŸe des Arrays %qE Ã¼bersteigt maximale ObjektgrÃ¶ÃŸe %E"
  
! #: c-family/c-common.cc:9497
  #, gcc-internal-format
  msgid "size of array exceeds maximum object size %qE"
  msgstr "GrÃ¶ÃŸe des Arrays Ã¼bersteigt maximale ObjektgrÃ¶ÃŸe %qE"
  
! #: c-family/c-common.cc:9568
  #, gcc-internal-format
  msgid "environment variable %qs must expand to a non-negative integer less than or equal to %wd"
  msgstr "Umgebungsvariable %qs muss ganzzahlig sein und zwischen 0 und %wd liegen"
  
! #: c-family/c-common.cc:9855
  #, gcc-internal-format
  msgid "possible fix: take the address with %qs"
  msgstr "mÃ¶gliche Behebung: die Adresse mit %qs bestimmen"
  
! #: c-family/c-common.cc:9865
  #, gcc-internal-format
  msgid "possible fix: dereference with %qs"
  msgstr "mÃ¶gliche Behebung: mit %qs dereferenzieren"
--- 34971,35484 ----
  msgid "pointer to a function used in arithmetic"
  msgstr "Zeiger auf Funktion in Arithmetik verwendet"
  
! #: c-family/c-common.cc:3631
  #, gcc-internal-format
  msgid "enum constant in boolean context"
  msgstr "enum-Konstante in booleschem Zusammenhang"
  
! #: c-family/c-common.cc:3661 d/d-convert.cc:149
  #, gcc-internal-format
  msgid "the address of %qD will always evaluate as %<true%>"
! msgstr "Die Adresse von %qD wird immer zu %<true%> auswerten"
  
! #: c-family/c-common.cc:3706
  #, gcc-internal-format
  msgid "%<*%> in boolean context, suggest %<&&%> instead"
  msgstr "%<*%> in booleschem Kontext, stattdessen ist %<&&%> empfohlen"
  
! #: c-family/c-common.cc:3719
  #, gcc-internal-format
  msgid "%<<<%> in boolean context, did you mean %<<%>?"
  msgstr "%<<<%> in booleschem Kontext, meinten Sie %<<%>?"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93857
! #: c-family/c-common.cc:3735
  #, gcc-internal-format
  msgid "%<?:%> using integer constants in boolean context, the expression will always evaluate to %<true%>"
  msgstr "%<?:%> mit Ganzzahlkonstanten in booleschem Zusammenhang; der Ausdruck evaluiert immer zu %<true%>"
  
! #: c-family/c-common.cc:3744
  #, gcc-internal-format
  msgid "%<?:%> using integer constants in boolean context"
  msgstr "%<?:%> mit Ganzzahlkonstanten in booleschem Kontext"
  
! #: c-family/c-common.cc:3780
  #, gcc-internal-format
  msgid "the compiler can assume that the address of %qD will always evaluate to %<true%>"
! msgstr "der Compiler darf davon ausgehen, dass die Adresse von %qD immer zu %<true%> evaluiert"
  
! #: c-family/c-common.cc:3816 cp/semantics.cc:1030
  #, gcc-internal-format
  msgid "suggest parentheses around assignment used as truth value"
  msgstr "Um Zuweisung, die als Wahrheitswert verwendet wird, werden Klammern empfohlen"
  
! #: c-family/c-common.cc:3903 c/c-decl.cc:5028 c/c-decl.cc:7694
! #: c/c-parser.cc:4046 c/c-typeck.cc:17925
  #, gcc-internal-format
  msgid "invalid use of %<restrict%>"
  msgstr "UngÃ¼ltige Verwendung von %<restrict%>"
  
! #: c-family/c-common.cc:3979
  #, gcc-internal-format
  msgid "invalid application of %<sizeof%> to a function type"
  msgstr "UngÃ¼ltige Anwendung von %<sizeof%> auf einen Funktionstypen"
  
! #: c-family/c-common.cc:3989
  #, gcc-internal-format
  msgid "ISO C++ does not permit %<alignof%> applied to a function type"
  msgstr "ISO-C++ erlaubt kein auf Funktionstypen angewendetes %<alignof%>"
  
! #: c-family/c-common.cc:3992
  #, gcc-internal-format
  msgid "ISO C does not permit %<_Alignof%> applied to a function type"
  msgstr "ISO-C erlaubt kein auf Funktionstypen angewendetes %<_Alignof%>"
  
! #: c-family/c-common.cc:4003 cp/typeck.cc:2085
  #, gcc-internal-format
  msgid "invalid application of %qs to a void type"
  msgstr "UngÃ¼ltige Anwendung von %qs auf einen void-Typen"
  
! #: c-family/c-common.cc:4014
  #, gcc-internal-format
  msgid "invalid application of %qs to incomplete type %qT"
  msgstr "UngÃ¼ltige Anwendung von %qs auf unvollstÃ¤ndigen Typen %qT"
  
! #: c-family/c-common.cc:4022
  #, gcc-internal-format
  msgid "invalid application of %qs to array type %qT of incomplete element type"
  msgstr "UngÃ¼ltige Anwendung von %qs auf Arraytyp %qT mit unvollstÃ¤ndigem Elementtyp"
  
! #: c-family/c-common.cc:4074
  #, gcc-internal-format
  msgid "%<__alignof%> applied to a bit-field"
  msgstr "%<__alignof%> auf Bitfeld angewandt"
  
! #: c-family/c-common.cc:4899
  #, gcc-internal-format
  msgid "first argument to %<va_arg%> not of type %<va_list%>"
  msgstr "Erstes Argument fÃ¼r %<va_arg%> nicht vom Typ %<va_list%>"
  
! #: c-family/c-common.cc:5019
  #, gcc-internal-format
  msgid "cannot disable built-in function %qs"
  msgstr "Eingebaute Funktion %qs kann nicht abgeschaltet werden"
  
! #: c-family/c-common.cc:5211
  #, gcc-internal-format
  msgid "pointers are not permitted as case values"
  msgstr "Zeiger sind nicht als case-Werte zugelassen"
  
! #: c-family/c-common.cc:5220
  #, gcc-internal-format
  msgid "range expressions in switch statements are non-standard"
  msgstr "WertebereichsausdrÃ¼cke in switch-Anweisungen sind nicht standardkonform"
  
! #: c-family/c-common.cc:5225 c-family/c-common.cc:5229
! #: c-family/c-common.cc:5234
  #, gcc-internal-format
  msgid "ISO C does not support range expressions in switch statements before C2Y"
  msgstr "ISO-C unterstÃ¼tzt BereichsausdrÃ¼cke in Â»switchÂ«-Anweisungen erst ab C2Y"
  
! #: c-family/c-common.cc:5248 c-family/c-common.cc:5265
  #, gcc-internal-format
  msgid "conversion of %qE to %qT in range expression changes value to %qE"
  msgstr "Umwandlung von %qE nach %qT in Bereichsausdruck Ã¤ndert den Wert zu %qE"
  
! #: c-family/c-common.cc:5284
  #, gcc-internal-format
  msgid "empty range specified"
  msgstr "Leerer Wertebereich angegeben"
  
! #: c-family/c-common.cc:5338
  #, gcc-internal-format
  msgid "duplicate (or overlapping) case value"
  msgstr "Doppelte (oder sich Ã¼berschneidende) case-Werte"
  
! #: c-family/c-common.cc:5340
  #, gcc-internal-format
  msgid "this is the first entry overlapping that value"
  msgstr "Dies ist der erste Eintrag, der diesen Wert Ã¼berschneidet"
  
! #: c-family/c-common.cc:5344
  #, gcc-internal-format
  msgid "duplicate case value"
  msgstr "Doppelter case-Wert"
  
! #: c-family/c-common.cc:5345 c-family/c-warn.cc:2662
  #, gcc-internal-format
  msgid "previously used here"
  msgstr "Bereits hier verwendet"
  
! #: c-family/c-common.cc:5349
  #, gcc-internal-format
  msgid "multiple default labels in one switch"
  msgstr "Mehrere Standardmarken in einem Â»switchÂ«"
  
! #: c-family/c-common.cc:5351
  #, gcc-internal-format
  msgid "this is the first default label"
  msgstr "Dies ist die erste Standardmarke"
  
! #: c-family/c-common.cc:5463
  #, gcc-internal-format
  msgid "taking the address of a label is non-standard"
  msgstr "Das Ermitteln der Adresse einer Marke ist nicht standardkonform"
  
! #: c-family/c-common.cc:5648
  #, gcc-internal-format
  msgid "requested alignment is not an integer constant"
  msgstr "Verlangte Ausrichtung ist keine Ganzzahlkonstante"
  
! #: c-family/c-common.cc:5656 c-family/c-common.cc:5666
  #, gcc-internal-format
  msgid "requested alignment %qE is not a positive power of 2"
  msgstr "Verlangte Ausrichtung %qE ist keine positive Zweierpotenz"
  
! #: c-family/c-common.cc:5676
  #, gcc-internal-format
  msgid "requested alignment %qE exceeds object file maximum %u"
  msgstr "verlangte Ausrichtung %qE ist grÃ¶ÃŸer als die maximale DateigrÃ¶ÃŸe %u"
  
! #: c-family/c-common.cc:5684
  #, gcc-internal-format
  msgid "requested alignment %qE exceeds maximum %u"
  msgstr "verlangte Ausrichtung %qE Ã¼bersteigt den HÃ¶chstwert %u"
  
! #: c-family/c-common.cc:5879
  #, gcc-internal-format
  msgid "not enough variable arguments to fit a sentinel"
  msgstr "Zu wenige variable Argumente, um zu einem WÃ¤chter zu passen"
  
! #: c-family/c-common.cc:5894
  #, gcc-internal-format
  msgid "missing sentinel in function call"
  msgstr "WÃ¤chter in Funktionsaufruf fehlt"
  
! #: c-family/c-common.cc:6133 c-family/c-common.cc:6186 d/d-attribs.cc:837
  #: d/d-attribs.cc:887
  #, gcc-internal-format
  msgid "bad option %qs to attribute %<optimize%>"
  msgstr "schlechte Option %qs fÃ¼r Attribut %<optimize%>"
  
! #: c-family/c-common.cc:6137 c-family/c-common.cc:6191
  #, gcc-internal-format
  msgid "bad option %qs to pragma %<optimize%>"
  msgstr "schlechte Option %qs fÃ¼r Pragma %<optimize%>"
  
! #: c-family/c-common.cc:6240
  #, gcc-internal-format
  msgid "attribute %<fallthrough%> specified multiple times"
  msgstr "Attribut %<fallthrough%> ist mehrfach angegeben"
  
! #: c-family/c-common.cc:6244
  #, gcc-internal-format
  msgid "%<fallthrough%> attribute specified with a parameter"
  msgstr "%<fallthrough%>-Attribut mit einem Parameter angegeben"
  
! #: c-family/c-common.cc:6433 c-family/c-common.cc:7451
! #: c-family/c-common.cc:7499 c-family/c-common.cc:7581
! #: c-family/c-common.cc:7667 c-family/c-common.cc:8336
  #: config/aarch64/aarch64-sve-builtins.cc:3001
  #: config/arm/arm-mve-builtins.cc:1714
  #, gcc-internal-format
  msgid "too few arguments to function %qE"
  msgstr "Zu wenige Argumente fÃ¼r Funktion %qE"
  
! #: c-family/c-common.cc:6439 c-family/c-common.cc:7506
! #: c-family/c-common.cc:7694 c-family/c-common.cc:8338
  #: config/aarch64/aarch64-sve-builtins.cc:3003
  #: config/arm/arm-mve-builtins.cc:1716
  #, gcc-internal-format
  msgid "too many arguments to function %qE"
  msgstr "zu viele Argumente fÃ¼r Funktion %qE"
  
! #: c-family/c-common.cc:6483
  #, gcc-internal-format
  msgid "third argument to function %qE must be a constant integer"
  msgstr "Drittes Argument fÃ¼r Funktion %qE muss eine konstante Ganzzahl sein"
  
! #: c-family/c-common.cc:6509
  #, gcc-internal-format
  msgid "second argument to function %qE must be a constant integer power of 2 between %qi and %qu bits"
  msgstr "zweites Argument fÃ¼r Funktion %qE muss eine konstante Zweierpotenz zwischen %qi und %qu Bits sein"
  
! #: c-family/c-common.cc:6533 c-family/c-common.cc:6589
  #, gcc-internal-format
  msgid "non-floating-point argument in call to function %qE"
  msgstr "Nicht-Gleitkomma-Argument in Aufruf von Funktion %qE"
  
! #: c-family/c-common.cc:6562
  #, gcc-internal-format
  msgid "non-floating-point arguments in call to function %qE"
  msgstr "Nicht-Gleitkomma-Argumente in Aufruf von Funktion %qE"
  
! #: c-family/c-common.cc:6579
  #, gcc-internal-format
  msgid "non-const integer argument %u in call to function %qE"
  msgstr "Nicht-konstantes Ganzzahl-Argument %u in Aufruf von Funktion %qE"
  
! #: c-family/c-common.cc:6608
  #, gcc-internal-format
  msgid "non-integer argument 3 in call to function %qE"
  msgstr "Nicht-Ganzzahl-Argument 3 in Aufruf von Funktion %qE"
  
! #: c-family/c-common.cc:6628 c-family/c-common.cc:6694
! #: c-family/c-common.cc:6778 c-family/c-common.cc:6805
  #, gcc-internal-format
  msgid "argument %u in call to function %qE does not have integral type"
  msgstr "Argument %u in Aufruf von %qE muss ein Ganzzahltyp sein"
  
! #: c-family/c-common.cc:6638
  #, gcc-internal-format
  msgid "argument 3 in call to function %qE does not have pointer to integral type"
  msgstr "Argument 3 in Aufruf von %qE muss Zeiger auf Ganzzahltyp sein"
  
! #: c-family/c-common.cc:6647
  #, gcc-internal-format
  msgid "argument 3 in call to function %qE has pointer to enumerated type"
  msgstr "Argument 3 in Aufruf von %qE darf kein Zeiger auf enum-Typ sein"
  
! #: c-family/c-common.cc:6656
  #, gcc-internal-format
  msgid "argument 3 in call to function %qE has pointer to boolean type"
  msgstr "Argument 3 in Aufruf von %qE darf kein Zeiger auf booleschen Typ sein"
  
! #: c-family/c-common.cc:6665 c-family/c-common.cc:6674
! #: c-family/c-common.cc:6746 c-family/c-common.cc:6755
  #, gcc-internal-format
  msgid "argument %u in call to function %qE has pointer to %qs type (%qT)"
  msgstr "Argument %u in Aufruf von %qE darf kein Zeiger auf %qs sein (%qT)"
  
! #: c-family/c-common.cc:6703 c-family/c-common.cc:6814
  #, gcc-internal-format
  msgid "argument %u in call to function %qE has enumerated type"
  msgstr "Argument %u in Aufruf von %qE hat AufzÃ¤hlungstyp"
  
! #: c-family/c-common.cc:6712 c-family/c-common.cc:6823
  #, gcc-internal-format
  msgid "argument %u in call to function %qE has boolean type"
  msgstr "Argument %u in Aufruf von %qE ist ein boolescher Typ sein"
  
! #: c-family/c-common.cc:6728
  #, gcc-internal-format
  msgid "argument %u in call to function %qE does not have pointer type"
  msgstr "Argument %u in Aufruf von %qE muss ein Zeigertyp sein"
  
! #: c-family/c-common.cc:6737
  #, gcc-internal-format
  msgid "argument %u in call to function %qE points to incomplete type"
  msgstr "Argument %u in Aufruf von %qE muss auf einen vollstÃ¤ndigen Typ zeigen"
  
! #: c-family/c-common.cc:6791
  #, gcc-internal-format
  msgid "argument %u in call to function %qE does not have %<int%> type"
  msgstr "Argument %u in Aufruf von %qE hat nicht den Typ %<int%>"
  
! #: c-family/c-common.cc:6835
  #, gcc-internal-format
  msgid "argument 1 in call to function %qE has unsigned type"
  msgstr "Argument 1 in Aufruf von %qE hat einen vorzeichenlosen Typen"
  
! #: c-family/c-common.cc:6845
  #, gcc-internal-format
  msgid "argument 1 in call to function %qE has signed type"
  msgstr "Argument 1 in Aufruf von %qE hat einen vorzeichenbehafteten Typen"
  
! #: c-family/c-common.cc:7110 rust/backend/rust-tree.cc:3588
  #, gcc-internal-format
  msgid "cannot apply %<offsetof%> to static data member %qD"
  msgstr "%<offsetof%> kann nicht auf statisches Datenelement %qD angewendet werden"
  
! #: c-family/c-common.cc:7115 rust/backend/rust-tree.cc:3593
  #, gcc-internal-format
  msgid "cannot apply %<offsetof%> when %<operator[]%> is overloaded"
  msgstr "%<offsetof%> kann nicht angewandt werden, wenn %<operator[]%> Ã¼berladen ist"
  
! #: c-family/c-common.cc:7122 rust/backend/rust-tree.cc:3600
  #, gcc-internal-format
  msgid "cannot apply %<offsetof%> to a non constant address"
  msgstr "%<offsetof%> kann nicht auf nicht-konstante Adresse angewandt werden"
  
! #: c-family/c-common.cc:7135 rust/backend/rust-tree.cc:3613
  #, gcc-internal-format
  msgid "attempt to take address of bit-field structure member %qD"
  msgstr "Versuch, die Adresse des Bitfeldstrukturelements %qD zu ermitteln"
  
! #: c-family/c-common.cc:7188 rust/backend/rust-tree.cc:3665
  #, gcc-internal-format
  msgid "index %E denotes an offset greater than size of %qT"
  msgstr "Index %E markiert einen Offset grÃ¶ÃŸer als die GrÃ¶ÃŸe von %qT"
  
! #: c-family/c-common.cc:7365
  #, gcc-internal-format
  msgid "size of array is too large"
  msgstr "ArraygrÃ¶ÃŸe ist zu groÃŸ"
  
! #: c-family/c-common.cc:7481 c-family/c-common.cc:7625
  #, gcc-internal-format
  msgid "operand type %qT is incompatible with argument %d of %qE"
  msgstr "Operandentyp %qT ist inkompatibel mit Argument %d von %qE"
  
! #: c-family/c-common.cc:7517
  #, gcc-internal-format
  msgid "expecting argument of type pointer or of type integer for argument 1"
  msgstr "als Argument 1 wurde entweder ein Zeigertyp oder ein Ganzzahltyp erwartet"
  
! #: c-family/c-common.cc:7534
  #, gcc-internal-format
  msgid "both arguments must be compatible"
  msgstr "die beiden Argumente mÃ¼ssen kompatibel sein"
  
! #: c-family/c-common.cc:7770
  #, gcc-internal-format
  msgid "incorrect number of arguments to function %qE"
  msgstr "Falsche Anzahl der Argumente fÃ¼r Funktion %qE"
  
! #: c-family/c-common.cc:7786
  #, gcc-internal-format
  msgid "argument 1 of %qE must be a non-void pointer type"
  msgstr "Argument 1 von %qE muss ein Nicht-Void-Zeigertyp sein"
  
! #: c-family/c-common.cc:7794
  #, gcc-internal-format
  msgid "argument 1 of %qE must be a pointer to a complete type"
  msgstr "Argument 1 von %qE muss ein Zeiger auf einen vollstÃ¤ndigen Typen sein"
  
! #: c-family/c-common.cc:7804
  #, gcc-internal-format
  msgid "argument 1 of %qE must be a pointer to a constant size type"
  msgstr "Argument 1 von %qE muss ein Zeiger auf Typen konstanter GrÃ¶ÃŸe sein"
  
! #: c-family/c-common.cc:7816
  #, gcc-internal-format
  msgid "argument 1 of %qE must be a pointer to a nonzero size object"
  msgstr "Argument 1 von %qE muss ein Zeiger auf Objekt breiter als Null sein"
  
! #: c-family/c-common.cc:7838
  #, gcc-internal-format
  msgid "argument %d of %qE must be a pointer type"
  msgstr "Argument %d von %qE muss eine Zeigertyp sein"
  
! #: c-family/c-common.cc:7848
  #, gcc-internal-format
  msgid "argument %d of %qE must be a pointer to a constant size type"
  msgstr "Argument %d von %qE muss ein Zeiger auf Typen konstanter GrÃ¶ÃŸe sein"
  
! #: c-family/c-common.cc:7857
  #, gcc-internal-format
  msgid "argument %d of %qE must not be a pointer to a function"
  msgstr "Argument %d von %qE darf kein Zeiger auf eine Funktion sein"
  
! #: c-family/c-common.cc:7867
  #, gcc-internal-format
  msgid "size mismatch in argument %d of %qE"
  msgstr "Unpassende GrÃ¶ÃŸe in Argument %d von %qE"
  
! #: c-family/c-common.cc:7882
  #, gcc-internal-format
  msgid "argument %d of %qE must not be a pointer to a %<const%> type"
  msgstr "Argument %d von %qE darf kein Zeiger auf einen %<const%>-Typen sein"
  
! #: c-family/c-common.cc:7888
  #, gcc-internal-format
  msgid "argument %d of %qE discards %<const%> qualifier"
  msgstr "Argument %d von %qE entfernt Kennzeichner %<const%>"
  
! #: c-family/c-common.cc:7899
  #, gcc-internal-format
  msgid "argument %d of %qE must not be a pointer to a %<volatile%> type"
  msgstr "Argument %d von %qE darf kein Zeiger auf einen %<volatile%>-Typen sein"
  
! #: c-family/c-common.cc:7905
  #, gcc-internal-format
  msgid "argument %d of %qE discards %<volatile%> qualifier"
  msgstr "Argument %d von %qE entfernt Kennzeichner %<volatile%>"
  
! #: c-family/c-common.cc:7919
  #, gcc-internal-format
  msgid "non-integer memory model argument %d of %qE"
  msgstr "Nicht-Ganzzahlargument %d fÃ¼r Speichermodell von %qE"
  
! #: c-family/c-common.cc:7934
  #, gcc-internal-format
  msgid "invalid memory model argument %d of %qE"
  msgstr "ungÃ¼ltiges Argument %d fÃ¼r Speichermodell von %qE"
  
! #: c-family/c-common.cc:8575
  #, gcc-internal-format
  msgid "this target does not define a speculation barrier; your program will still execute correctly, but incorrect speculation may not be restricted"
  msgstr "dieses Ziel definiert keine Spekulationsbarriere; das erzeugte Programm wird trotzdem korrekt laufen, aber irrige Spekulationen sind mÃ¶glicherweise nicht eingeschrÃ¤nkt"
  
! #: c-family/c-common.cc:9273
  #, gcc-internal-format
  msgid "index value is out of bound"
  msgstr "Indexwert ist auÃŸerhalb der Grenzen"
  
! #: c-family/c-common.cc:9319 c-family/c-common.cc:9368
! #: c-family/c-common.cc:9384
  #, gcc-internal-format
  msgid "conversion of scalar %qT to vector %qT involves truncation"
  msgstr "Umwandlung von Skalar %qT in Vektor %qT fÃ¼hrt zum Abschneiden"
  
  #. Reject arguments that are built-in functions with
  #. no library fallback.
! #: c-family/c-common.cc:9472 d/intrinsics.cc:1459
  #: rust/backend/rust-tree.cc:3484
  #, gcc-internal-format
  msgid "built-in function %qE must be directly called"
  msgstr "eingebaute Funktion %qE muss direkt aufgerufen werden"
  
! #: c-family/c-common.cc:9492
  #, gcc-internal-format
  msgid "size of array %qE is not a constant expression"
  msgstr "GrÃ¶ÃŸe des Arrays %qE ist kein konstanter Ausdruck"
  
! #: c-family/c-common.cc:9495
  #, gcc-internal-format
  msgid "size of array is not a constant expression"
  msgstr "GrÃ¶ÃŸe des Arrays ist kein konstanter Ausdruck"
  
! #: c-family/c-common.cc:9499
  #, gcc-internal-format
  msgid "size %qE of array %qE is negative"
  msgstr "GrÃ¶ÃŸe %qE des Arrays %qE ist negativ"
  
! #: c-family/c-common.cc:9502
  #, gcc-internal-format
  msgid "size %qE of array is negative"
  msgstr "GrÃ¶ÃŸe %qE des Arrays ist negativ"
  
! #: c-family/c-common.cc:9507
  #, gcc-internal-format
  msgid "size %qE of array %qE exceeds maximum object size %qE"
  msgstr "GrÃ¶ÃŸe %qE des Arrays %qE Ã¼bersteigt maximale ObjektgrÃ¶ÃŸe %E"
  
! #: c-family/c-common.cc:9510
  #, gcc-internal-format
  msgid "size %qE of array exceeds maximum object size %qE"
  msgstr "GrÃ¶ÃŸe %qE des Arrays Ã¼berschreitet maximale ObjektgrÃ¶ÃŸe %qE"
  
! #: c-family/c-common.cc:9515
  #, gcc-internal-format
  msgid "size of array %qE exceeds maximum object size %qE"
  msgstr "GrÃ¶ÃŸe des Arrays %qE Ã¼bersteigt maximale ObjektgrÃ¶ÃŸe %E"
  
! #: c-family/c-common.cc:9518
  #, gcc-internal-format
  msgid "size of array exceeds maximum object size %qE"
  msgstr "GrÃ¶ÃŸe des Arrays Ã¼bersteigt maximale ObjektgrÃ¶ÃŸe %qE"
  
! #: c-family/c-common.cc:9589
  #, gcc-internal-format
  msgid "environment variable %qs must expand to a non-negative integer less than or equal to %wd"
  msgstr "Umgebungsvariable %qs muss ganzzahlig sein und zwischen 0 und %wd liegen"
  
! #: c-family/c-common.cc:9876
  #, gcc-internal-format
  msgid "possible fix: take the address with %qs"
  msgstr "mÃ¶gliche Behebung: die Adresse mit %qs bestimmen"
  
! #: c-family/c-common.cc:9886
  #, gcc-internal-format
  msgid "possible fix: dereference with %qs"
  msgstr "mÃ¶gliche Behebung: mit %qs dereferenzieren"
*************** msgstr "Ganzzahlkonstante ist zu groÃŸ f
*** 36067,36073 ****
  msgid "integer constant is too large for %<_BitInt(%d)%> type"
  msgstr "Ganzzahlkonstante ist zu groÃŸ fÃ¼r %<_BitInt(%d)%>-Typ"
  
! #: c-family/c-lex.cc:1093 c/c-decl.cc:12949
  #, gcc-internal-format
  msgid "%<_BitInt(%d)%> is not supported on this target"
  msgstr "%<_BitInt(%d)%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt"
--- 36085,36091 ----
  msgid "integer constant is too large for %<_BitInt(%d)%> type"
  msgstr "Ganzzahlkonstante ist zu groÃŸ fÃ¼r %<_BitInt(%d)%>-Typ"
  
! #: c-family/c-lex.cc:1093 c/c-decl.cc:12953
  #, gcc-internal-format
  msgid "%<_BitInt(%d)%> is not supported on this target"
  msgstr "%<_BitInt(%d)%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt"
*************** msgstr "Gleitkommakonstante auf Null abg
*** 36137,36153 ****
  msgid "repeated %<@%> before Objective-C string"
  msgstr "wiederholtes %<@%> vor Objective-C-Zeichenkette"
  
! #: c-family/c-lex.cc:1655 c/c-parser.cc:9675
  #, gcc-internal-format
  msgid "unsupported non-standard concatenation of string literals"
  msgstr "nicht unterstÃ¼tzte Nicht-Standard-Verkettung von Zeichenkettenliteralen"
  
! #: c-family/c-lex.cc:1691 c/c-parser.cc:9696
  #, gcc-internal-format
  msgid "traditional C rejects string constant concatenation"
  msgstr "traditionelles C weist Zeichenkettenkonstantenverkettung zurÃ¼ck"
  
! #: c-family/c-omp.cc:131 cp/pt.cc:19623
  #, gcc-internal-format
  msgid "%<#pragma omp critical%> with %<hint%> clause requires a name, except when %<omp_sync_hint_none%> is used"
  msgstr "%<#pragma omp critical%> mit %<hint%>-Klausel erfordert einen Namen, auÃŸer wenn %<omp_sync_hint_none%> verwendet wird"
--- 36155,36171 ----
  msgid "repeated %<@%> before Objective-C string"
  msgstr "wiederholtes %<@%> vor Objective-C-Zeichenkette"
  
! #: c-family/c-lex.cc:1655 c/c-parser.cc:9720
  #, gcc-internal-format
  msgid "unsupported non-standard concatenation of string literals"
  msgstr "nicht unterstÃ¼tzte Nicht-Standard-Verkettung von Zeichenkettenliteralen"
  
! #: c-family/c-lex.cc:1691 c/c-parser.cc:9741
  #, gcc-internal-format
  msgid "traditional C rejects string constant concatenation"
  msgstr "traditionelles C weist Zeichenkettenkonstantenverkettung zurÃ¼ck"
  
! #: c-family/c-omp.cc:131 cp/pt.cc:19652
  #, gcc-internal-format
  msgid "%<#pragma omp critical%> with %<hint%> clause requires a name, except when %<omp_sync_hint_none%> is used"
  msgstr "%<#pragma omp critical%> mit %<hint%>-Klausel erfordert einen Namen, auÃŸer wenn %<omp_sync_hint_none%> verwendet wird"
*************** msgstr "ungÃ¼ltiger %<task%>-Reduktionsm
*** 36333,36350 ****
  msgid "%<inscan%> %<reduction%> clause on construct other than %<for%>, %<simd%>, %<for simd%>, %<parallel for%>, %<parallel for simd%>"
  msgstr "%<inscan%>-%<reduction%>-Klausel bei Konstruktion auÃŸer %<for%>, %<simd%>, %<for simd%>, %<parallel for%>, %<parallel for simd%>"
  
! #: c-family/c-omp.cc:3072 c/c-typeck.cc:17691 cp/semantics.cc:10162
  #, gcc-internal-format
  msgid "%qD specified in %<allocate%> clause but not in an explicit privatization clause"
  msgstr "%qD ist in %<allocate%>-Klausel angegeben, aber nicht in einer expliziten Privatisierungs-Klausel"
  
! #: c-family/c-omp.cc:3164 c-family/c-omp.cc:3179 c/c-parser.cc:27067
! #: cp/parser.cc:50503
  #, gcc-internal-format
  msgid "%qD is not a function argument"
  msgstr "%qD ist kein Funktionsargument"
  
! #: c-family/c-omp.cc:3460 c/c-typeck.cc:16778 cp/semantics.cc:8752
  #, gcc-internal-format
  msgid "bit-field %qE in %qs clause"
  msgstr "Bitfeld %qE in %qs-Klausel"
--- 36351,36368 ----
  msgid "%<inscan%> %<reduction%> clause on construct other than %<for%>, %<simd%>, %<for simd%>, %<parallel for%>, %<parallel for simd%>"
  msgstr "%<inscan%>-%<reduction%>-Klausel bei Konstruktion auÃŸer %<for%>, %<simd%>, %<for simd%>, %<parallel for%>, %<parallel for simd%>"
  
! #: c-family/c-omp.cc:3072 c/c-typeck.cc:17708 cp/semantics.cc:10162
  #, gcc-internal-format
  msgid "%qD specified in %<allocate%> clause but not in an explicit privatization clause"
  msgstr "%qD ist in %<allocate%>-Klausel angegeben, aber nicht in einer expliziten Privatisierungs-Klausel"
  
! #: c-family/c-omp.cc:3164 c-family/c-omp.cc:3179 c/c-parser.cc:27113
! #: cp/parser.cc:50562
  #, gcc-internal-format
  msgid "%qD is not a function argument"
  msgstr "%qD ist kein Funktionsargument"
  
! #: c-family/c-omp.cc:3460 c/c-typeck.cc:16795 cp/semantics.cc:8752
  #, gcc-internal-format
  msgid "bit-field %qE in %qs clause"
  msgstr "Bitfeld %qE in %qs-Klausel"
*************** msgstr "Bitfeld %qE in %qs-Klausel"
*** 36354,36361 ****
  msgid "%qE does not have a mappable type in %qs clause"
  msgstr "%qE in %qs-Klausel hat keinen zuordenbaren Typ"
  
! #: c-family/c-omp.cc:3476 c/c-typeck.cc:15178 c/c-typeck.cc:16867
! #: c/c-typeck.cc:17055
  #, gcc-internal-format
  msgid "%<_Atomic%> %qE in %qs clause"
  msgstr "%<_Atomic%>-Ausdruck %qE in %qs-Klausel"
--- 36372,36379 ----
  msgid "%qE does not have a mappable type in %qs clause"
  msgstr "%qE in %qs-Klausel hat keinen zuordenbaren Typ"
  
! #: c-family/c-omp.cc:3476 c/c-typeck.cc:15195 c/c-typeck.cc:16884
! #: c/c-typeck.cc:17072
  #, gcc-internal-format
  msgid "%<_Atomic%> %qE in %qs clause"
  msgstr "%<_Atomic%>-Ausdruck %qE in %qs-Klausel"
*************** msgstr "%<-Wformat-security%> wird ohne
*** 36435,36531 ****
  msgid "%<-fabi-compat-version=1%> is not supported, using =2"
  msgstr "%<-fabi-compat-version=1%> wird nicht unterstÃ¼tzt; stattdessen wird Â»=2Â« verwendet"
  
! #: c-family/c-opts.cc:1108
! #, gcc-internal-format
! msgid "%<-Wabi%> won%'t warn about anything"
! msgstr "%<-Wabi%> wird vor nichts warnen"
! 
! #: c-family/c-opts.cc:1110
! #, gcc-internal-format
! msgid "%<-Wabi%> warns about differences from the most up-to-date ABI, which is also used by default"
! msgstr "%<-Wabi%> warnt vor Abweichungen von der aktuellsten ABI, die ebenfalls standardmÃ¤ÃŸig verwendet wird"
! 
! #: c-family/c-opts.cc:1113
  #, gcc-internal-format
! msgid "use e.g. %<-Wabi=11%> to warn about changes from GCC 7"
! msgstr "Verwenden Sie zum Beispiel %<-Wabi=11%>, um vor Ã„nderungen von GCC 7 zu warnen"
  
! #: c-family/c-opts.cc:1198
  #, gcc-internal-format
  msgid "external TLS initialization functions not supported on this target"
  msgstr "externe Funktionen zur TLS-Initialisierung werden auf diesem Ziel nicht unterstÃ¼tzt"
  
! #: c-family/c-opts.cc:1226
  #, gcc-internal-format
  msgid "too many filenames given; type %<%s %s%> for usage"
  msgstr "zu viele Dateinamen angegeben; geben Sie %<%s %s%> fÃ¼r das Aufrufformat ein"
  
! #: c-family/c-opts.cc:1240
  #, gcc-internal-format
  msgid "opening output file %s: %m"
  msgstr "Ausgabedatei Â»%sÂ« kann nicht geÃ¶ffnet werden: %m"
  
! #: c-family/c-opts.cc:1258
  #, gcc-internal-format
  msgid "the %qs debug info cannot be used with pre-compiled headers"
  msgstr "die Debug-Informationen %qs kann nicht mit vorkompilierten Headern verwendet werden"
  
! #: c-family/c-opts.cc:1424 c-family/c-opts.cc:1445
  #, gcc-internal-format
  msgid "opening dependency file %s: %m"
  msgstr "AbhÃ¤ngigkeitsdatei Â»%sÂ« kann nicht geÃ¶ffnet werden: %m"
  
! #: c-family/c-opts.cc:1449
  #, gcc-internal-format
  msgid "%<-MF%> and %<-fdeps-file=%> cannot share an output file %s: %m"
  msgstr "%<-MF%> und %<-fdeps-file=%> kÃ¶nnen sich die Ausgabedatei %<%s%> nicht teilen: %m"
  
! #: c-family/c-opts.cc:1459
  #, gcc-internal-format
  msgid "closing dependency file %s: %m"
  msgstr "AbhÃ¤ngigkeitsdatei Â»%sÂ« kann nicht geschlossen werden: %m"
  
! #: c-family/c-opts.cc:1462
  #, gcc-internal-format
  msgid "when writing output to %s: %m"
  msgstr "beim Schreiben der Ausgabe nach %s: %m"
  
! #: c-family/c-opts.cc:1540
  #, gcc-internal-format
  msgid "to generate dependencies you must specify either %<-M%> or %<-MM%>"
  msgstr "um AbhÃ¤ngigkeiten zu erzeugen, mÃ¼ssen Sie entweder %<-M%> oder %<-MM%> angeben"
  
! #: c-family/c-opts.cc:1564
  #, gcc-internal-format
  msgid "%<-MG%> may only be used with %<-M%> or %<-MM%>"
  msgstr "%<-MG%> darf nur mit %<-M%> oder %<-MM%> verwendet werden"
  
! #: c-family/c-opts.cc:1597
  #, gcc-internal-format
  msgid "%<-fdirectives-only%> is incompatible with %<-Wunused-macros%>"
  msgstr "%<-fdirectives-only%> ist mit %<-Wunused-macros%> unvertrÃ¤glich"
  
! #: c-family/c-opts.cc:1600
  #, gcc-internal-format
  msgid "%<-fdirectives-only%> is incompatible with %<-traditional%>"
  msgstr "%<-fdirectives-only%> ist mit %<-traditional%> unvertrÃ¤glich"
  
! #: c-family/c-opts.cc:1702
  #, gcc-internal-format
  msgid "%<_FORTIFY_SOURCE%> is not enabled by %<-fhardened%> because optimizations are turned off"
  msgstr "%<_FORTIFY_SOURCE%> wird von %<-fhardened%> nicht eingeschaltet, da die Optimierungen ausgeschaltet sind"
  
! #: c-family/c-opts.cc:1706
  #, gcc-internal-format
  msgid "%<_FORTIFY_SOURCE%> is not enabled by %<-fhardened%> because it was specified in %<-D%> or %<-U%>"
  msgstr "%<_FORTIFY_SOURCE%> wird von %<-fhardened%> nicht eingeschaltet, da es in %<-D%> oder %<-U%> angegeben wurde"
  
! #: c-family/c-opts.cc:1712
  #, gcc-internal-format
  msgid "%<_GLIBCXX_ASSERTIONS%> is not enabled by %<-fhardened%> because it was specified in %<-D%> or %<-U%>"
  msgstr "%<_GLIBCXX_ASSERTIONS%> wird von %<-fhardened%> nicht eingeschaltet, da es in %<-D%> oder %<-U%> angegeben wurde"
  
! #: c-family/c-opts.cc:1836
  #, gcc-internal-format
  msgid "too late for # directive to set debug directory"
  msgstr "zu spÃ¤t fÃ¼r Â»#Â«-Direktive, um Debug-Verzeichnis festzulegen"
--- 36453,36539 ----
  msgid "%<-fabi-compat-version=1%> is not supported, using =2"
  msgstr "%<-fabi-compat-version=1%> wird nicht unterstÃ¼tzt; stattdessen wird Â»=2Â« verwendet"
  
! #: c-family/c-opts.cc:1094
  #, gcc-internal-format
! msgid "%<-fabi-version=%d%> is not supported, using =%d"
! msgstr "%<-fabi-version=%d%> wird nicht unterstÃ¼tzt; stattdessen wird Â»=%dÂ« verwendet"
  
! #: c-family/c-opts.cc:1200
  #, gcc-internal-format
  msgid "external TLS initialization functions not supported on this target"
  msgstr "externe Funktionen zur TLS-Initialisierung werden auf diesem Ziel nicht unterstÃ¼tzt"
  
! #: c-family/c-opts.cc:1228
  #, gcc-internal-format
  msgid "too many filenames given; type %<%s %s%> for usage"
  msgstr "zu viele Dateinamen angegeben; geben Sie %<%s %s%> fÃ¼r das Aufrufformat ein"
  
! #: c-family/c-opts.cc:1242
  #, gcc-internal-format
  msgid "opening output file %s: %m"
  msgstr "Ausgabedatei Â»%sÂ« kann nicht geÃ¶ffnet werden: %m"
  
! #: c-family/c-opts.cc:1260
  #, gcc-internal-format
  msgid "the %qs debug info cannot be used with pre-compiled headers"
  msgstr "die Debug-Informationen %qs kann nicht mit vorkompilierten Headern verwendet werden"
  
! #: c-family/c-opts.cc:1426 c-family/c-opts.cc:1447
  #, gcc-internal-format
  msgid "opening dependency file %s: %m"
  msgstr "AbhÃ¤ngigkeitsdatei Â»%sÂ« kann nicht geÃ¶ffnet werden: %m"
  
! #: c-family/c-opts.cc:1451
  #, gcc-internal-format
  msgid "%<-MF%> and %<-fdeps-file=%> cannot share an output file %s: %m"
  msgstr "%<-MF%> und %<-fdeps-file=%> kÃ¶nnen sich die Ausgabedatei %<%s%> nicht teilen: %m"
  
! #: c-family/c-opts.cc:1461
  #, gcc-internal-format
  msgid "closing dependency file %s: %m"
  msgstr "AbhÃ¤ngigkeitsdatei Â»%sÂ« kann nicht geschlossen werden: %m"
  
! #: c-family/c-opts.cc:1464
  #, gcc-internal-format
  msgid "when writing output to %s: %m"
  msgstr "beim Schreiben der Ausgabe nach %s: %m"
  
! #: c-family/c-opts.cc:1542
  #, gcc-internal-format
  msgid "to generate dependencies you must specify either %<-M%> or %<-MM%>"
  msgstr "um AbhÃ¤ngigkeiten zu erzeugen, mÃ¼ssen Sie entweder %<-M%> oder %<-MM%> angeben"
  
! #: c-family/c-opts.cc:1566
  #, gcc-internal-format
  msgid "%<-MG%> may only be used with %<-M%> or %<-MM%>"
  msgstr "%<-MG%> darf nur mit %<-M%> oder %<-MM%> verwendet werden"
  
! #: c-family/c-opts.cc:1599
  #, gcc-internal-format
  msgid "%<-fdirectives-only%> is incompatible with %<-Wunused-macros%>"
  msgstr "%<-fdirectives-only%> ist mit %<-Wunused-macros%> unvertrÃ¤glich"
  
! #: c-family/c-opts.cc:1602
  #, gcc-internal-format
  msgid "%<-fdirectives-only%> is incompatible with %<-traditional%>"
  msgstr "%<-fdirectives-only%> ist mit %<-traditional%> unvertrÃ¤glich"
  
! #: c-family/c-opts.cc:1704
  #, gcc-internal-format
  msgid "%<_FORTIFY_SOURCE%> is not enabled by %<-fhardened%> because optimizations are turned off"
  msgstr "%<_FORTIFY_SOURCE%> wird von %<-fhardened%> nicht eingeschaltet, da die Optimierungen ausgeschaltet sind"
  
! #: c-family/c-opts.cc:1708
  #, gcc-internal-format
  msgid "%<_FORTIFY_SOURCE%> is not enabled by %<-fhardened%> because it was specified in %<-D%> or %<-U%>"
  msgstr "%<_FORTIFY_SOURCE%> wird von %<-fhardened%> nicht eingeschaltet, da es in %<-D%> oder %<-U%> angegeben wurde"
  
! #: c-family/c-opts.cc:1714
  #, gcc-internal-format
  msgid "%<_GLIBCXX_ASSERTIONS%> is not enabled by %<-fhardened%> because it was specified in %<-D%> or %<-U%>"
  msgstr "%<_GLIBCXX_ASSERTIONS%> wird von %<-fhardened%> nicht eingeschaltet, da es in %<-D%> oder %<-U%> angegeben wurde"
  
! #: c-family/c-opts.cc:1838
  #, gcc-internal-format
  msgid "too late for # directive to set debug directory"
  msgstr "zu spÃ¤t fÃ¼r Â»#Â«-Direktive, um Debug-Verzeichnis festzulegen"
*************** msgid "wrong type argument to %s"
*** 36943,36949 ****
  msgstr "Argument falschen Typs fÃ¼r %s"
  
  #: c-family/c-warn.cc:60 c-family/c-warn.cc:73 cp/constexpr.cc:3715
! #: cp/constexpr.cc:7709 m2/gm2-gcc/m2expr.cc:965
  #: rust/backend/rust-constexpr.cc:1908 rust/backend/rust-constexpr.cc:4331
  #, gcc-internal-format
  msgid "overflow in constant expression"
--- 36951,36957 ----
  msgstr "Argument falschen Typs fÃ¼r %s"
  
  #: c-family/c-warn.cc:60 c-family/c-warn.cc:73 cp/constexpr.cc:3715
! #: cp/constexpr.cc:7725 m2/gm2-gcc/m2expr.cc:965
  #: rust/backend/rust-constexpr.cc:1908 rust/backend/rust-constexpr.cc:4331
  #, gcc-internal-format
  msgid "overflow in constant expression"
*************** msgstr "logisches %<und%> auf nicht-bool
*** 37022,37033 ****
  #: c-family/c-warn.cc:307
  #, gcc-internal-format
  msgid "logical %<or%> of collectively exhaustive tests is always true"
! msgstr "logisches %<oder%> bei gemeinsam erschÃ¶pfenden Tests ist immer Â»wahrÂ«"
  
  #: c-family/c-warn.cc:311
  #, gcc-internal-format
  msgid "logical %<and%> of mutually exclusive tests is always false"
! msgstr "logisches %<und%> bei sich gegenseitig ausschlieÃŸenden Tests ist immer Â»falschÂ«"
  
  #: c-family/c-warn.cc:321
  #, gcc-internal-format
--- 37030,37041 ----
  #: c-family/c-warn.cc:307
  #, gcc-internal-format
  msgid "logical %<or%> of collectively exhaustive tests is always true"
! msgstr "logisches %<oder%> bei gemeinsam erschÃ¶pfenden Tests ist immer Â»trueÂ«"
  
  #: c-family/c-warn.cc:311
  #, gcc-internal-format
  msgid "logical %<and%> of mutually exclusive tests is always false"
! msgstr "logisches %<und%> bei sich gegenseitig ausschlieÃŸenden Tests ist immer Â»falseÂ«"
  
  #: c-family/c-warn.cc:321
  #, gcc-internal-format
*************** msgstr "Verringerung der Funktion %qD"
*** 37430,37448 ****
  msgid "function %qD used as %<asm%> output"
  msgstr "Funktion %qD als %<asm%>-Ausgabe verwendet"
  
! #: c-family/c-warn.cc:1914 c/c-typeck.cc:5841
  #: rust/checks/errors/rust-readonly-check.cc:103
  #, gcc-internal-format
  msgid "assignment of read-only location %qE"
  msgstr "Zuweisung der schreibgeschÃ¼tzten Speicherstelle %qE"
  
! #: c-family/c-warn.cc:1915 c/c-typeck.cc:5844
  #: rust/checks/errors/rust-readonly-check.cc:104
  #, gcc-internal-format
  msgid "increment of read-only location %qE"
  msgstr "ErhÃ¶hung der schreibgeschÃ¼tzten Speicherstelle %qE"
  
! #: c-family/c-warn.cc:1916 c/c-typeck.cc:5847
  #: rust/checks/errors/rust-readonly-check.cc:105
  #, gcc-internal-format
  msgid "decrement of read-only location %qE"
--- 37438,37456 ----
  msgid "function %qD used as %<asm%> output"
  msgstr "Funktion %qD als %<asm%>-Ausgabe verwendet"
  
! #: c-family/c-warn.cc:1914 c/c-typeck.cc:5842
  #: rust/checks/errors/rust-readonly-check.cc:103
  #, gcc-internal-format
  msgid "assignment of read-only location %qE"
  msgstr "Zuweisung der schreibgeschÃ¼tzten Speicherstelle %qE"
  
! #: c-family/c-warn.cc:1915 c/c-typeck.cc:5845
  #: rust/checks/errors/rust-readonly-check.cc:104
  #, gcc-internal-format
  msgid "increment of read-only location %qE"
  msgstr "ErhÃ¶hung der schreibgeschÃ¼tzten Speicherstelle %qE"
  
! #: c-family/c-warn.cc:1916 c/c-typeck.cc:5848
  #: rust/checks/errors/rust-readonly-check.cc:105
  #, gcc-internal-format
  msgid "decrement of read-only location %qE"
*************** msgid_plural "passing argument %i to %qs
*** 37709,37715 ****
  msgstr[0] "Argument %i wird an den mit %qs qualifizierten Parameter Ã¼bergeben, dadurch wird es zum Alias fÃ¼r Argument %Z"
  msgstr[1] "Argument %i wird an den mit %qs qualifizierten Parameter Ã¼bergeben, dadurch wird es zum Alias fÃ¼r die Argumente %Z"
  
! #: c-family/c-warn.cc:2934 c/c-typeck.cc:6465 cp/call.cc:6527
  #, gcc-internal-format
  msgid "this condition has identical branches"
  msgstr "diese Bedingung hat identische Zweige"
--- 37717,37723 ----
  msgstr[0] "Argument %i wird an den mit %qs qualifizierten Parameter Ã¼bergeben, dadurch wird es zum Alias fÃ¼r Argument %Z"
  msgstr[1] "Argument %i wird an den mit %qs qualifizierten Parameter Ã¼bergeben, dadurch wird es zum Alias fÃ¼r die Argumente %Z"
  
! #: c-family/c-warn.cc:2934 c/c-typeck.cc:6466 cp/call.cc:6527
  #, gcc-internal-format
  msgid "this condition has identical branches"
  msgstr "diese Bedingung hat identische Zweige"
*************** msgstr "unbekannter Operand fÃ¼r %%:%<ca
*** 38055,38076 ****
  msgid "unrecognized operand to %%:%<asm_auto_mfpu%>"
  msgstr "unbekannter Operand fÃ¼r %%:%<asm_auto_mfpu%>"
  
! #: common/config/avr/avr-common.cc:94
  #, gcc-internal-format
  msgid "option %<-mdouble=64%> is only available if configured %<--with-double={64|64,32|32,64}%>"
  msgstr "die Option %<-mdouble=64%> ist nur verfÃ¼gbar, wenn %<--with-double={64|64,32|32,64}%> konfiguriert ist"
  
! #: common/config/avr/avr-common.cc:102
  #, gcc-internal-format
  msgid "option %<-mdouble=32%> is only available if configured %<--with-double={32|32,64|64,32}%>"
  msgstr "die Option %<-mdouble=32%> ist nur verfÃ¼gbar, wenn %<--with-double={32|32,64|64,32}%> konfiguriert ist"
  
! #: common/config/avr/avr-common.cc:118
  #, gcc-internal-format
  msgid "option %<-mlong-double=64%> is only available if configured %<--with-long-double={64|64,32|32,64}%>, or %<--with-long-double=double%> together with %<--with-double={64|64,32|32,64}%>"
  msgstr "die Option %<-mlong-double=64%> ist nur verfÃ¼gbar, wenn %<--with-long-double={64|64,32|32,64}%>, oder %<--with-long-double=double%> zusammen mit %<--with-double={64|64,32|32,64}%> konfiguriert ist"
  
! #: common/config/avr/avr-common.cc:127
  #, gcc-internal-format
  msgid "option %<-mlong-double=32%> is only available if configured %<--with-long-double={32|32,64|64,32}%>, or %<--with-long-double=double%> together with %<--with-double={32|32,64|64,32}%>"
  msgstr "die Option %<-mlong-double=32%> ist nur verfÃ¼gbar, wenn %<--with-long-double={32|32,64|64,32}%>, oder %<--with-long-double=double%> zusammen mit %<--with-double={32|32,64|64,32}%> konfiguriert ist"
--- 38063,38084 ----
  msgid "unrecognized operand to %%:%<asm_auto_mfpu%>"
  msgstr "unbekannter Operand fÃ¼r %%:%<asm_auto_mfpu%>"
  
! #: common/config/avr/avr-common.cc:95
  #, gcc-internal-format
  msgid "option %<-mdouble=64%> is only available if configured %<--with-double={64|64,32|32,64}%>"
  msgstr "die Option %<-mdouble=64%> ist nur verfÃ¼gbar, wenn %<--with-double={64|64,32|32,64}%> konfiguriert ist"
  
! #: common/config/avr/avr-common.cc:103
  #, gcc-internal-format
  msgid "option %<-mdouble=32%> is only available if configured %<--with-double={32|32,64|64,32}%>"
  msgstr "die Option %<-mdouble=32%> ist nur verfÃ¼gbar, wenn %<--with-double={32|32,64|64,32}%> konfiguriert ist"
  
! #: common/config/avr/avr-common.cc:119
  #, gcc-internal-format
  msgid "option %<-mlong-double=64%> is only available if configured %<--with-long-double={64|64,32|32,64}%>, or %<--with-long-double=double%> together with %<--with-double={64|64,32|32,64}%>"
  msgstr "die Option %<-mlong-double=64%> ist nur verfÃ¼gbar, wenn %<--with-long-double={64|64,32|32,64}%>, oder %<--with-long-double=double%> zusammen mit %<--with-double={64|64,32|32,64}%> konfiguriert ist"
  
! #: common/config/avr/avr-common.cc:128
  #, gcc-internal-format
  msgid "option %<-mlong-double=32%> is only available if configured %<--with-long-double={32|32,64|64,32}%>, or %<--with-long-double=double%> together with %<--with-double={32|32,64|64,32}%>"
  msgstr "die Option %<-mlong-double=32%> ist nur verfÃ¼gbar, wenn %<--with-long-double={32|32,64|64,32}%>, oder %<--with-long-double=double%> zusammen mit %<--with-double={32|32,64|64,32}%> konfiguriert ist"
*************** msgstr "%<-mcpu=%s%> ist nicht gÃ¼ltig"
*** 38090,38136 ****
  msgid "%<-mcpu=%s%> has invalid silicon revision"
  msgstr "%<-mcpu=%s%> hat ungÃ¼ltige Silizium-Revision"
  
! #: common/config/i386/i386-common.cc:1994
  #, gcc-internal-format
  msgid "%<-malign-loops%> is obsolete, use %<-falign-loops%>"
  msgstr "%<-malign-loops%> ist veraltet, Ersatz: %<-falign-loops%>"
  
! #: common/config/i386/i386-common.cc:1997
  #, gcc-internal-format
  msgid "%<-malign-loops=%d%> is not between 0 and %d"
  msgstr "%<-malign-loops=%d%> liegt nicht zwischen 0 und %d"
  
! #: common/config/i386/i386-common.cc:2004
  #, gcc-internal-format
  msgid "%<-malign-jumps%> is obsolete, use %<-falign-jumps%>"
  msgstr "%<-malign-jumps%> ist veraltet, Ersatz: %<-falign-jumps%>"
  
! #: common/config/i386/i386-common.cc:2007
  #, gcc-internal-format
  msgid "%<-malign-jumps=%d%> is not between 0 and %d"
  msgstr "%<-malign-jumps=%d%> liegt nicht zwischen 0 und %d"
  
! #: common/config/i386/i386-common.cc:2015
  #, gcc-internal-format
  msgid "%<-malign-functions%> is obsolete, use %<-falign-functions%>"
  msgstr "%<-malign-functions%> ist veraltet, Ersatz: %<-falign-functions%>"
  
! #: common/config/i386/i386-common.cc:2018
  #, gcc-internal-format
  msgid "%<-malign-functions=%d%> is not between 0 and %d"
  msgstr "%<-malign-functions=%d%> liegt nicht zwischen 0 und %d"
  
! #: common/config/i386/i386-common.cc:2027
  #, gcc-internal-format
  msgid "%<-mbranch-cost=%d%> is not between 0 and 5"
  msgstr "%<-mbranch-cost=%d%> liegt nicht zwischen 0 und 5"
  
! #: common/config/i386/i386-common.cc:2091 common/config/s390/s390-common.cc:141
  #, gcc-internal-format
  msgid "%<-fsplit-stack%> currently only supported on GNU/Linux"
  msgstr "%<-fsplit-stack%> wird derzeit nur auf GNU/Linux unterstÃ¼tzt"
  
! #: common/config/i386/i386-common.cc:2101
  #, gcc-internal-format
  msgid "%<-fsplit-stack%> requires assembler support for CFI directives"
  msgstr "%<-fsplit-stack%> erfordert AssemblerunterstÃ¼tzung fÃ¼r CFI-Direktiven"
--- 38098,38144 ----
  msgid "%<-mcpu=%s%> has invalid silicon revision"
  msgstr "%<-mcpu=%s%> hat ungÃ¼ltige Silizium-Revision"
  
! #: common/config/i386/i386-common.cc:1993
  #, gcc-internal-format
  msgid "%<-malign-loops%> is obsolete, use %<-falign-loops%>"
  msgstr "%<-malign-loops%> ist veraltet, Ersatz: %<-falign-loops%>"
  
! #: common/config/i386/i386-common.cc:1996
  #, gcc-internal-format
  msgid "%<-malign-loops=%d%> is not between 0 and %d"
  msgstr "%<-malign-loops=%d%> liegt nicht zwischen 0 und %d"
  
! #: common/config/i386/i386-common.cc:2003
  #, gcc-internal-format
  msgid "%<-malign-jumps%> is obsolete, use %<-falign-jumps%>"
  msgstr "%<-malign-jumps%> ist veraltet, Ersatz: %<-falign-jumps%>"
  
! #: common/config/i386/i386-common.cc:2006
  #, gcc-internal-format
  msgid "%<-malign-jumps=%d%> is not between 0 and %d"
  msgstr "%<-malign-jumps=%d%> liegt nicht zwischen 0 und %d"
  
! #: common/config/i386/i386-common.cc:2014
  #, gcc-internal-format
  msgid "%<-malign-functions%> is obsolete, use %<-falign-functions%>"
  msgstr "%<-malign-functions%> ist veraltet, Ersatz: %<-falign-functions%>"
  
! #: common/config/i386/i386-common.cc:2017
  #, gcc-internal-format
  msgid "%<-malign-functions=%d%> is not between 0 and %d"
  msgstr "%<-malign-functions=%d%> liegt nicht zwischen 0 und %d"
  
! #: common/config/i386/i386-common.cc:2026
  #, gcc-internal-format
  msgid "%<-mbranch-cost=%d%> is not between 0 and 5"
  msgstr "%<-mbranch-cost=%d%> liegt nicht zwischen 0 und 5"
  
! #: common/config/i386/i386-common.cc:2090 common/config/s390/s390-common.cc:141
  #, gcc-internal-format
  msgid "%<-fsplit-stack%> currently only supported on GNU/Linux"
  msgstr "%<-fsplit-stack%> wird derzeit nur auf GNU/Linux unterstÃ¼tzt"
  
! #: common/config/i386/i386-common.cc:2100
  #, gcc-internal-format
  msgid "%<-fsplit-stack%> requires assembler support for CFI directives"
  msgstr "%<-fsplit-stack%> erfordert AssemblerunterstÃ¼tzung fÃ¼r CFI-Direktiven"
*************** msgstr "Unter-Framework-Include %s steht
*** 38382,38439 ****
  msgid "unknown value %qs of %<-mmacosx-version-min%>"
  msgstr "unbekannter Wert %qs von %<-mmacosx-version-min%>"
  
! #: config/darwin-driver.cc:147
  #, gcc-internal-format
  msgid "%<sysctl%> for %<kern.osversion%> failed: %m"
  msgstr "Fehler bei %<sysctl%> fÃ¼r %<kern.osversion%>: %m"
  
! #: config/darwin-driver.cc:186
  #, gcc-internal-format
  msgid "could not understand %<kern.osversion%> %q.*s"
  msgstr "unverstÃ¤ndlicher Wert %q.*s von %<kern.osversion%>"
  
! #: config/darwin-driver.cc:226
  #, gcc-internal-format
  msgid "could not understand version %qs"
  msgstr "unverstÃ¤ndliche Version %qs"
  
! #: config/darwin-driver.cc:300
  #, gcc-internal-format
  msgid "this compiler does not support %qs"
  msgstr "dieser Compiler unterstÃ¼tzt %qs nicht"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93861
! #: config/darwin-driver.cc:326
  #, gcc-internal-format
  msgid "%qs is not valid for %<-mmacosx-version-min%>"
  msgstr "ungÃ¼ltiger Wert %qs fÃ¼r %<-mmacosx-version-min%>"
  
! #: config/darwin-driver.cc:377
  #, gcc-internal-format
  msgid "this compiler does not support PowerPC (%<-arch%> option ignored)"
! msgstr "dieser Compiler unterstÃ¼tzt PowerPC nicht (%<arch%>-Option wird ignoriert)"
  
! #: config/darwin-driver.cc:384
  #, gcc-internal-format
  msgid "%qs conflicts with %<-arch i386%> (%qs ignored)"
  msgstr "%qs widerspricht %<-arch i386%> (%qs wird ignoriert)"
  
! #: config/darwin-driver.cc:393
  #, gcc-internal-format
  msgid "%<-m32%> conflicts with %<-arch x86_64%> (%<-m32%> ignored)"
  msgstr "%<-m32%> widerspricht %<-arch x86_64%> (%<-m32%> wird ignoriert)"
  
! #: config/darwin-driver.cc:400
  #, gcc-internal-format
  msgid "this compiler does not support x86 (%<-arch%> option ignored)"
  msgstr "dieser Compiler unterstÃ¼tzt x86 nicht (%<-arch%>-Option wird ignoriert)"
  
! #: config/darwin-driver.cc:407
  #, gcc-internal-format
  msgid "%qs conflicts with %<-arch ppc%> (%qs ignored)"
  msgstr "%qs widerspricht %<-arch ppc%> (%qs wird ignoriert)"
  
! #: config/darwin-driver.cc:416
  #, gcc-internal-format
  msgid "%<-m32%> conflicts with %<-arch ppc64%> (%<-m32%> ignored)"
  msgstr "%<-m32%> widerspricht %<-arch ppc64%> (%<-m32%> wird ignoriert)"
--- 38390,38447 ----
  msgid "unknown value %qs of %<-mmacosx-version-min%>"
  msgstr "unbekannter Wert %qs von %<-mmacosx-version-min%>"
  
! #: config/darwin-driver.cc:148
  #, gcc-internal-format
  msgid "%<sysctl%> for %<kern.osversion%> failed: %m"
  msgstr "Fehler bei %<sysctl%> fÃ¼r %<kern.osversion%>: %m"
  
! #: config/darwin-driver.cc:188
  #, gcc-internal-format
  msgid "could not understand %<kern.osversion%> %q.*s"
  msgstr "unverstÃ¤ndlicher Wert %q.*s von %<kern.osversion%>"
  
! #: config/darwin-driver.cc:228
  #, gcc-internal-format
  msgid "could not understand version %qs"
  msgstr "unverstÃ¤ndliche Version %qs"
  
! #: config/darwin-driver.cc:302
  #, gcc-internal-format
  msgid "this compiler does not support %qs"
  msgstr "dieser Compiler unterstÃ¼tzt %qs nicht"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93861
! #: config/darwin-driver.cc:328
  #, gcc-internal-format
  msgid "%qs is not valid for %<-mmacosx-version-min%>"
  msgstr "ungÃ¼ltiger Wert %qs fÃ¼r %<-mmacosx-version-min%>"
  
! #: config/darwin-driver.cc:379
  #, gcc-internal-format
  msgid "this compiler does not support PowerPC (%<-arch%> option ignored)"
! msgstr "dieser Compiler unterstÃ¼tzt PowerPC nicht (die Option %<-arch%> wird ignoriert)"
  
! #: config/darwin-driver.cc:386
  #, gcc-internal-format
  msgid "%qs conflicts with %<-arch i386%> (%qs ignored)"
  msgstr "%qs widerspricht %<-arch i386%> (%qs wird ignoriert)"
  
! #: config/darwin-driver.cc:395
  #, gcc-internal-format
  msgid "%<-m32%> conflicts with %<-arch x86_64%> (%<-m32%> ignored)"
  msgstr "%<-m32%> widerspricht %<-arch x86_64%> (%<-m32%> wird ignoriert)"
  
! #: config/darwin-driver.cc:402
  #, gcc-internal-format
  msgid "this compiler does not support x86 (%<-arch%> option ignored)"
  msgstr "dieser Compiler unterstÃ¼tzt x86 nicht (%<-arch%>-Option wird ignoriert)"
  
! #: config/darwin-driver.cc:409
  #, gcc-internal-format
  msgid "%qs conflicts with %<-arch ppc%> (%qs ignored)"
  msgstr "%qs widerspricht %<-arch ppc%> (%qs wird ignoriert)"
  
! #: config/darwin-driver.cc:418
  #, gcc-internal-format
  msgid "%<-m32%> conflicts with %<-arch ppc64%> (%<-m32%> ignored)"
  msgstr "%<-m32%> widerspricht %<-arch ppc64%> (%<-m32%> wird ignoriert)"
*************** msgstr "%<-gsplit-dwarf%> wird fÃ¼r dies
*** 38486,38492 ****
  #: config/darwin.cc:3449
  #, gcc-internal-format
  msgid "%<-g3%> is not supported by the debug linker in use (set to 2)"
! msgstr "%<-g3%> wird nicht vom verwendeten Debugginglinker unterstÃ¼tzt (wird auf 2 gesetzt)"
  
  #: config/darwin.cc:3541
  #, gcc-internal-format
--- 38494,38500 ----
  #: config/darwin.cc:3449
  #, gcc-internal-format
  msgid "%<-g3%> is not supported by the debug linker in use (set to 2)"
! msgstr "%<-g3%> wird nicht vom verwendeten Debuggingbinder unterstÃ¼tzt (wird auf 2 gesetzt)"
  
  #: config/darwin.cc:3541
  #, gcc-internal-format
*************** msgstr "PIC wird nur fÃ¼r RTPs unterstÃ¼
*** 38604,38611 ****
  msgid "ACLE function %qD requires ISA extension %qs"
  msgstr "ACLE-Funktion %qD erfordert ISA-Erweiterung %qs"
  
! #: config/aarch64/aarch64-builtins.cc:2540 config/aarch64/aarch64.cc:11462
! #: config/aarch64/aarch64.cc:18764 config/aarch64/aarch64.cc:19379
  #, gcc-internal-format
  msgid "you can enable %qs using the command-line option %<-march%>, or by using the %<target%> attribute or pragma"
  msgstr "Sie kÃ¶nnen %qs mit der Befehlszeilenoption %<-march%> einschalten, oder mit dem Attribut %<target%> oder Pragma"
--- 38612,38619 ----
  msgid "ACLE function %qD requires ISA extension %qs"
  msgstr "ACLE-Funktion %qD erfordert ISA-Erweiterung %qs"
  
! #: config/aarch64/aarch64-builtins.cc:2540 config/aarch64/aarch64.cc:11477
! #: config/aarch64/aarch64.cc:18779 config/aarch64/aarch64.cc:19394
  #, gcc-internal-format
  msgid "you can enable %qs using the command-line option %<-march%>, or by using the %<target%> attribute or pragma"
  msgstr "Sie kÃ¶nnen %qs mit der Befehlszeilenoption %<-march%> einschalten, oder mit dem Attribut %<target%> oder Pragma"
*************** msgstr "der SVE-Typ %qT ist in der %<tar
*** 39154,39468 ****
  msgid "SVE type %qT not allowed in %<target%> device clauses"
  msgstr "der SVE-Typ %qT ist in %<target%>-GerÃ¤teklauseln nicht erlaubt"
  
! #: config/aarch64/aarch64.cc:649
  #, gcc-internal-format
  msgid "the arguments to %qE must be constant strings"
  msgstr "die Argumente fÃ¼r %qE mÃ¼ssen konstante Zeichenfolgen sein"
  
! #: config/aarch64/aarch64.cc:657
  #, gcc-internal-format
  msgid "unrecognized state string %qs"
  msgstr "nicht erkannte Statuszeichenkette %qs"
  
! #: config/aarch64/aarch64.cc:741
  #, gcc-internal-format
  msgid "the %qE attribute cannot be applied to an SVE function type"
  msgstr "das Attribut %qE kann nicht auf einen SVE-Funktionstyp angewendet werden"
  
! #: config/aarch64/aarch64.cc:768
  #, gcc-internal-format
  msgid "cannot create a new %qs scope since %qs is shared with callers"
  msgstr "kann keinen neuen GÃ¼ltigkeitsbereich %qs erstellen, da %qs mit Aufrufern geteilt wird"
  
! #: config/aarch64/aarch64.cc:784
  #, gcc-internal-format
  msgid "%qE attribute applies only to function definitions"
  msgstr "Attribut %qE kann nur auf Funktionsdefinitionen angewandt werden"
  
! #: config/aarch64/aarch64.cc:830
  #, gcc-internal-format
  msgid "inconsistent attributes for state %qs"
  msgstr "inkonsistente Attribute fÃ¼r den Zustand %qs"
  
! #: config/aarch64/aarch64.cc:1327
  #, gcc-internal-format
  msgid "%qs is incompatible with the use of floating-point types"
  msgstr "%qs vertrÃ¤gt sich nicht mit der Verwendung von Gleitkommatypen"
  
! #: config/aarch64/aarch64.cc:1330
  #, gcc-internal-format
  msgid "%qs is incompatible with the use of vector types"
  msgstr "%qs vertrÃ¤gt sich nicht mit der Verwendung von Vektortypen"
  
! #: config/aarch64/aarch64.cc:1334
  #, gcc-internal-format
  msgid "%qs feature modifier is incompatible with the use of floating-point types"
  msgstr "Feature-Modifizierer %qs vertrÃ¤gt sich nicht mit der Verwendung von Gleitkommatypen"
  
! #: config/aarch64/aarch64.cc:1337
  #, gcc-internal-format
  msgid "%qs feature modifier is incompatible with the use of vector types"
  msgstr "Feature-Modifizierer %qs vertrÃ¤gt sich nicht mit der Verwendung von Vektortypen"
  
! #: config/aarch64/aarch64.cc:1353
  #, gcc-internal-format
  msgid "this operation requires the SVE ISA extension"
  msgstr "diese Operation erfordert die SVE-ISA-Erweiterung"
  
! #: config/aarch64/aarch64.cc:1354
  #, gcc-internal-format
  msgid "you can enable SVE using the command-line option %<-march%>, or by using the %<target%> attribute or pragma"
  msgstr "Sie kÃ¶nnen SVE mit der Befehlszeilenoption %<-march%>, oder mit dem Attribut %<target%> oder Pragma aktivieren"
  
  #. We can't gracefully recover at this point, so make this a
  #. fatal error.
! #: config/aarch64/aarch64.cc:6685
  #, gcc-internal-format
  msgid "arguments of type %qT require the SVE ISA extension"
  msgstr "Argumente vom Typ %qT erfordern die SVE-ISA-Erweiterung"
  
! #: config/aarch64/aarch64.cc:7162
  #, gcc-internal-format
  msgid "SVE type %qT cannot be passed to an unprototyped function"
  msgstr "der SVE-Typ %qT kann nur an prototypisierte Funktionen Ã¼bergeben werden"
  
! #: config/aarch64/aarch64.cc:7303 config/aarch64/aarch64.cc:7382
! #: config/aarch64/aarch64.cc:21640
  #, gcc-internal-format
  msgid "parameter passing for argument of type %qT changed in GCC 13.1"
  msgstr "die ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT hat sich in GCC 13.1 geÃ¤ndert"
  
! #: config/aarch64/aarch64.cc:7310 config/aarch64/aarch64.cc:7389
! #: config/aarch64/aarch64.cc:21647
  #, gcc-internal-format
  msgid "parameter passing for argument of type %qT changed in GCC 14.1"
  msgstr "die ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT hat sich in GCC 14.1 geÃ¤ndert"
  
! #: config/aarch64/aarch64.cc:7321 config/aarch64/aarch64.cc:7399
! #: config/aarch64/aarch64.cc:21655 config/arm/arm.cc:7338
  #: config/arm/arm.cc:7368 config/arm/arm.cc:29593
  #, gcc-internal-format
  msgid "parameter passing for argument of type %qT changed in GCC 9.1"
  msgstr "die ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT hat sich in GCC 9.1 geÃ¤ndert"
  
! #: config/aarch64/aarch64.cc:7526
  #, gcc-internal-format
  msgid "%qE requires the SVE ISA extension"
  msgstr "%qE benÃ¶tigt die SVE-ISA-Erweiterung"
  
! #: config/aarch64/aarch64.cc:7529
  #, gcc-internal-format
  msgid "calls to functions of type %qT require the SVE ISA extension"
  msgstr "Aufrufe von Funktionen vom Typ %qT erfordern die SVE-ISA-Erweiterung"
  
! #: config/aarch64/aarch64.cc:7717
  #, gcc-internal-format
  msgid "stack probes for SVE frames"
  msgstr "Stapelsonde fÃ¼r SVE-Rahmen"
  
! #: config/aarch64/aarch64.cc:11460
  #, gcc-internal-format
  msgid "calling a streaming function requires the ISA extension %qs"
  msgstr "der Aufruf einer Streaming-Funktion erfordert die ISA-Erweiterung %qs"
  
! #: config/aarch64/aarch64.cc:11469 config/aarch64/aarch64.cc:11473
  #, gcc-internal-format
  msgid "call to a function that shares %qs state from a function that has no %qs state"
  msgstr "Aufruf einer Funktion, die den %qs-Zustand teilt, aus einer Funktion, die keinen %qs-Zustand hat"
  
! #: config/aarch64/aarch64.cc:11476
  #, gcc-internal-format
  msgid "call to a function that shares SME state from a function that has no SME state"
  msgstr "Aufruf einer Funktion, die den SME-Status teilt, aus einer Funktion, die keinen SME-Status hat"
  
! #: config/aarch64/aarch64.cc:11534
  #, gcc-internal-format
  msgid "call to a function that shares state other than %qs from a function that has %qs state"
  msgstr "Aufruf einer Funktion, die einen anderen Status als %qs hat, aus einer Funktion, die den Status %qs hat"
  
! #: config/aarch64/aarch64.cc:11536
  #, gcc-internal-format
  msgid "use %<__arm_preserves(\"za\")%> if the callee preserves ZA"
  msgstr "verwenden Sie %<__arm_preserves(\"za\")%>, wenn die aufgerufene Funktion ZA beibehÃ¤lt"
  
! #: config/aarch64/aarch64.cc:18382
  #, gcc-internal-format
  msgid "unknown flag passed in %<-moverride=%s%> (%s)"
  msgstr "unbekanntes Flag wurde in %<-moverride=%s%> Ã¼bergeben (%s)"
  
! #: config/aarch64/aarch64.cc:18426
  #, gcc-internal-format
  msgid "%qs string ill-formed"
  msgstr "Zeichenkette %qs ist falsch geformt"
  
! #: config/aarch64/aarch64.cc:18482
  #, gcc-internal-format
  msgid "invalid format for %<sve_width%>"
  msgstr "ungÃ¼ltiges Format fÃ¼r %<sve_width%>"
  
! #: config/aarch64/aarch64.cc:18494
  #, gcc-internal-format
  msgid "invalid %<sve_width%> value: %d"
  msgstr "ungÃ¼ltiger Wert fÃ¼r %<sve_width%>: %d"
  
! #: config/aarch64/aarch64.cc:18514
  #, gcc-internal-format, gfc-internal-format
  msgid "tuning string missing in option (%s)"
  msgstr "Tuning-Zeichenkette fehlt in Option Â»%sÂ«"
  
! #: config/aarch64/aarch64.cc:18532
  #, gcc-internal-format, gfc-internal-format
  msgid "unknown tuning option (%s)"
  msgstr "unbekannte Tuning-Option Â»%sÂ«"
  
! #: config/aarch64/aarch64.cc:18719 config/arm/arm.cc:3223
! #: config/riscv/riscv.cc:10776
  #, gcc-internal-format
  msgid "incompatible options %<-mstack-protector-guard=global%> and %<-mstack-protector-guard-offset=%s%>"
  msgstr "die Optionen %<-mstack-protector-guard=global%> und %<-mstack-protector-guard-offset=%s%> sind unvertrÃ¤glich"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90153
! #: config/aarch64/aarch64.cc:18728 config/riscv/riscv.cc:10785
  #, gcc-internal-format
  msgid "both %<-mstack-protector-guard-offset%> and %<-mstack-protector-guard-reg%> must be used with %<-mstack-protector-guard=sysreg%>"
  msgstr "wenn %<-mstack-protector-guard=sysreg%> angegeben ist, mÃ¼ssen sowohl %<-mstack-protector-guard-offset%> als auch %<-mstack-protector-guard-reg%> angegeben werden"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90154
! #: config/aarch64/aarch64.cc:18736
  #, gcc-internal-format
  msgid "specify a system register with a small string length"
  msgstr "Systemregister mit einem kurzem Namen angeben"
  
! #: config/aarch64/aarch64.cc:18746 config/arm/arm.cc:3235
! #: config/riscv/riscv.cc:10814 config/rs6000/rs6000.cc:4518
  #, gcc-internal-format
  msgid "%qs is not a valid offset in %qs"
  msgstr "%qs ist in %qs kein gÃ¼ltiger Offset"
  
! #: config/aarch64/aarch64.cc:18753
  #, gcc-internal-format
  msgid "%<-fsanitize=shadow-call-stack%> requires %<-ffixed-x18%>"
  msgstr "%<-fsanitize=shadow-call-stack%> erfordert %<-ffixed-x18%>"
  
! #: config/aarch64/aarch64.cc:18760
  #, gcc-internal-format
  msgid "streaming functions require the ISA extension %qs"
  msgstr "Streaming-Funktionen erfordern die ISA-Erweiterung %qs"
  
! #: config/aarch64/aarch64.cc:18762
  #, gcc-internal-format
  msgid "functions with SME state require the ISA extension %qs"
  msgstr "Funktionen mit SME-Zustand erfordern die ISA-Erweiterung %qs"
  
! #: config/aarch64/aarch64.cc:18858
  #, gcc-internal-format
  msgid "only values 12 (4 KB) and 16 (64 KB) are supported for guard size.  Given value %d (%llu KB) is out of range"
  msgstr "nur die Werte 12 (4 kB) und 16 (64 kB) werden fÃ¼r die WÃ¤chtergrÃ¶ÃŸe unterstÃ¼tzt. Der angegebene Wert %d (%llu kB) liegt auÃŸerhalb des gÃ¼ltigen Bereichs"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90155
! #: config/aarch64/aarch64.cc:18874 config/riscv/riscv.cc:10834
  #, gcc-internal-format
  msgid "stack clash guard size %<%d%> must be equal to probing interval %<%d%>"
  msgstr "GrÃ¶ÃŸe des StapelkollisionswÃ¤chters %d muss gleich dem Sondierungsintervall %d sein"
  
! #: config/aarch64/aarch64.cc:18902
  #, gcc-internal-format
  msgid "no support for %qs without %qs"
  msgstr "keine UnterstÃ¼tzung fÃ¼r %qs ohne %qs"
  
! #: config/aarch64/aarch64.cc:18955
  #, gcc-internal-format
  msgid "invalid argument given to %<-mharden-sls=%>"
  msgstr "ungÃ¼ltiges Argument fÃ¼r %<-mharden-sls=%>"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99291
! #: config/aarch64/aarch64.cc:18966
  #, gcc-internal-format
  msgid "%qs must be by itself for %<-mharden-sls=%>"
  msgstr "%qs muss fÃ¼r sich allein stehen, fÃ¼r %<-mharden-sls=%>"
  
! #: config/aarch64/aarch64.cc:18971
  #, gcc-internal-format
  msgid "invalid argument %qs for %<-mharden-sls=%>"
  msgstr "ungÃ¼ltiges Argument %qs fÃ¼r %<-mharden-sls=%>"
  
! #: config/aarch64/aarch64.cc:19127
  #, gcc-internal-format
  msgid "switch %<-mcpu=%s%> conflicts with %<-march=%s%> switch and resulted in options %qs being added"
  msgstr "Schalter %<-mcpu=%s%> steht mit dem Schalter %<-march=%s%> in Konflikt und hat dazu gefÃ¼hrt, dass die Optionen %qs hinzugefÃ¼gt wurden"
  
! #: config/aarch64/aarch64.cc:19194
  #, gcc-internal-format
  msgid "assembler does not support %<-mabi=ilp32%>"
  msgstr "Assembler unterstÃ¼tzt %<-mabi=ilp32%> nicht"
  
! #: config/aarch64/aarch64.cc:19197
  #, gcc-internal-format
  msgid "%<-mabi=ilp32%> is deprecated"
  msgstr "%<-mabi=ilp32%> ist veraltet"
  
! #: config/aarch64/aarch64.cc:19203
  #, gcc-internal-format
  msgid "return address signing is only supported for %<-mabi=lp64%>"
  msgstr "Signieren der RÃ¼ckgabeadresse wird nur fÃ¼r %<-mabi=lp64%> unterstÃ¼tzt"
  
! #: config/aarch64/aarch64.cc:19276
  #, gcc-internal-format
  msgid "code model %qs with %<-f%s%>"
  msgstr "Codemodell %qs mit %<-f%s%>"
  
! #: config/aarch64/aarch64.cc:19279
  #, gcc-internal-format
  msgid "code model %qs not supported in ilp32 mode"
  msgstr "Codemodell %qs wird im ilp32-Modus nicht unterstÃ¼tzt"
  
! #: config/aarch64/aarch64.cc:19377
  #, gcc-internal-format
  msgid "functions with %qs state require the ISA extension %qs"
  msgstr "Funktionen mit dem Status %qs erfordern die ISA-Erweiterung %qs"
  
! #: config/aarch64/aarch64.cc:19482
  #, gcc-internal-format
  msgid "missing name in %<target(\"arch=\")%> pragma or attribute"
  msgstr "fehlender Name fÃ¼r Pragma oder Attribut %<target(\"arch=\")%>"
  
! #: config/aarch64/aarch64.cc:19485
  #, gcc-internal-format
  msgid "invalid name %qs in %<target(\"arch=\")%> pragma or attribute"
  msgstr "ungÃ¼ltiger Name %qs fÃ¼r Pragma oder Attribut %<target(\"arch=\")%>"
  
! #: config/aarch64/aarch64.cc:19489
  #, gcc-internal-format
  msgid "invalid feature modifier %s of value %qs in %<target()%> pragma or attribute"
  msgstr "ungÃ¼ltiger Featuremodifizierer %qs mit Wert %qs in Pragma oder Attribut %<target()%>"
  
! #: config/aarch64/aarch64.cc:19524
  #, gcc-internal-format
  msgid "missing name in %<target(\"cpu=\")%> pragma or attribute"
  msgstr "fehlender Name fÃ¼r Pragma oder Attribut %<target(\"cpu=\")%>"
  
! #: config/aarch64/aarch64.cc:19527
  #, gcc-internal-format
  msgid "invalid name %qs in %<target(\"cpu=\")%> pragma or attribute"
  msgstr "ungÃ¼ltiger Name %qs fÃ¼r Pragma oder Attribut %<target(\"cpu=\")%>"
  
! #: config/aarch64/aarch64.cc:19531 config/aarch64/aarch64.cc:19615
  #, gcc-internal-format
  msgid "invalid feature modifier %qs of value %qs in %<target()%> pragma or attribute"
  msgstr "ungÃ¼ltiger Featuremodifizierer %qs mit Wert %qs in Pragma oder Attribut %<target()%>"
  
! #: config/aarch64/aarch64.cc:19570
  #, gcc-internal-format
  msgid "invalid name %qs in %<target(\"tune=\")%> pragma or attribute"
  msgstr "ungÃ¼ltiger Name %qs fÃ¼r Pragma oder Attribut %<target(\"tune=\")%>"
  
! #: config/aarch64/aarch64.cc:19611
  #, gcc-internal-format
  msgid "missing value in %<target()%> pragma or attribute"
  msgstr "fehlender Wert fÃ¼r Pragma oder Attribut %<target()%>"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79868
! #: config/aarch64/aarch64.cc:19669 config/aarch64/aarch64.cc:19846
  #: config/loongarch/loongarch-target-attr.cc:144
  #: config/loongarch/loongarch-target-attr.cc:309
  #, gcc-internal-format
--- 39162,39476 ----
  msgid "SVE type %qT not allowed in %<target%> device clauses"
  msgstr "der SVE-Typ %qT ist in %<target%>-GerÃ¤teklauseln nicht erlaubt"
  
! #: config/aarch64/aarch64.cc:650
  #, gcc-internal-format
  msgid "the arguments to %qE must be constant strings"
  msgstr "die Argumente fÃ¼r %qE mÃ¼ssen konstante Zeichenfolgen sein"
  
! #: config/aarch64/aarch64.cc:658
  #, gcc-internal-format
  msgid "unrecognized state string %qs"
  msgstr "nicht erkannte Statuszeichenkette %qs"
  
! #: config/aarch64/aarch64.cc:742
  #, gcc-internal-format
  msgid "the %qE attribute cannot be applied to an SVE function type"
  msgstr "das Attribut %qE kann nicht auf einen SVE-Funktionstyp angewendet werden"
  
! #: config/aarch64/aarch64.cc:769
  #, gcc-internal-format
  msgid "cannot create a new %qs scope since %qs is shared with callers"
  msgstr "kann keinen neuen GÃ¼ltigkeitsbereich %qs erstellen, da %qs mit Aufrufern geteilt wird"
  
! #: config/aarch64/aarch64.cc:785
  #, gcc-internal-format
  msgid "%qE attribute applies only to function definitions"
  msgstr "Attribut %qE kann nur auf Funktionsdefinitionen angewandt werden"
  
! #: config/aarch64/aarch64.cc:831
  #, gcc-internal-format
  msgid "inconsistent attributes for state %qs"
  msgstr "inkonsistente Attribute fÃ¼r den Zustand %qs"
  
! #: config/aarch64/aarch64.cc:1328
  #, gcc-internal-format
  msgid "%qs is incompatible with the use of floating-point types"
  msgstr "%qs vertrÃ¤gt sich nicht mit der Verwendung von Gleitkommatypen"
  
! #: config/aarch64/aarch64.cc:1331
  #, gcc-internal-format
  msgid "%qs is incompatible with the use of vector types"
  msgstr "%qs vertrÃ¤gt sich nicht mit der Verwendung von Vektortypen"
  
! #: config/aarch64/aarch64.cc:1335
  #, gcc-internal-format
  msgid "%qs feature modifier is incompatible with the use of floating-point types"
  msgstr "Feature-Modifizierer %qs vertrÃ¤gt sich nicht mit der Verwendung von Gleitkommatypen"
  
! #: config/aarch64/aarch64.cc:1338
  #, gcc-internal-format
  msgid "%qs feature modifier is incompatible with the use of vector types"
  msgstr "Feature-Modifizierer %qs vertrÃ¤gt sich nicht mit der Verwendung von Vektortypen"
  
! #: config/aarch64/aarch64.cc:1354
  #, gcc-internal-format
  msgid "this operation requires the SVE ISA extension"
  msgstr "diese Operation erfordert die SVE-ISA-Erweiterung"
  
! #: config/aarch64/aarch64.cc:1355
  #, gcc-internal-format
  msgid "you can enable SVE using the command-line option %<-march%>, or by using the %<target%> attribute or pragma"
  msgstr "Sie kÃ¶nnen SVE mit der Befehlszeilenoption %<-march%>, oder mit dem Attribut %<target%> oder Pragma aktivieren"
  
  #. We can't gracefully recover at this point, so make this a
  #. fatal error.
! #: config/aarch64/aarch64.cc:6686
  #, gcc-internal-format
  msgid "arguments of type %qT require the SVE ISA extension"
  msgstr "Argumente vom Typ %qT erfordern die SVE-ISA-Erweiterung"
  
! #: config/aarch64/aarch64.cc:7163
  #, gcc-internal-format
  msgid "SVE type %qT cannot be passed to an unprototyped function"
  msgstr "der SVE-Typ %qT kann nur an prototypisierte Funktionen Ã¼bergeben werden"
  
! #: config/aarch64/aarch64.cc:7304 config/aarch64/aarch64.cc:7383
! #: config/aarch64/aarch64.cc:21655
  #, gcc-internal-format
  msgid "parameter passing for argument of type %qT changed in GCC 13.1"
  msgstr "die ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT hat sich in GCC 13.1 geÃ¤ndert"
  
! #: config/aarch64/aarch64.cc:7311 config/aarch64/aarch64.cc:7390
! #: config/aarch64/aarch64.cc:21662
  #, gcc-internal-format
  msgid "parameter passing for argument of type %qT changed in GCC 14.1"
  msgstr "die ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT hat sich in GCC 14.1 geÃ¤ndert"
  
! #: config/aarch64/aarch64.cc:7322 config/aarch64/aarch64.cc:7400
! #: config/aarch64/aarch64.cc:21670 config/arm/arm.cc:7338
  #: config/arm/arm.cc:7368 config/arm/arm.cc:29593
  #, gcc-internal-format
  msgid "parameter passing for argument of type %qT changed in GCC 9.1"
  msgstr "die ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT hat sich in GCC 9.1 geÃ¤ndert"
  
! #: config/aarch64/aarch64.cc:7527
  #, gcc-internal-format
  msgid "%qE requires the SVE ISA extension"
  msgstr "%qE benÃ¶tigt die SVE-ISA-Erweiterung"
  
! #: config/aarch64/aarch64.cc:7530
  #, gcc-internal-format
  msgid "calls to functions of type %qT require the SVE ISA extension"
  msgstr "Aufrufe von Funktionen vom Typ %qT erfordern die SVE-ISA-Erweiterung"
  
! #: config/aarch64/aarch64.cc:7718
  #, gcc-internal-format
  msgid "stack probes for SVE frames"
  msgstr "Stapelsonde fÃ¼r SVE-Rahmen"
  
! #: config/aarch64/aarch64.cc:11475
  #, gcc-internal-format
  msgid "calling a streaming function requires the ISA extension %qs"
  msgstr "der Aufruf einer Streaming-Funktion erfordert die ISA-Erweiterung %qs"
  
! #: config/aarch64/aarch64.cc:11484 config/aarch64/aarch64.cc:11488
  #, gcc-internal-format
  msgid "call to a function that shares %qs state from a function that has no %qs state"
  msgstr "Aufruf einer Funktion, die den %qs-Zustand teilt, aus einer Funktion, die keinen %qs-Zustand hat"
  
! #: config/aarch64/aarch64.cc:11491
  #, gcc-internal-format
  msgid "call to a function that shares SME state from a function that has no SME state"
  msgstr "Aufruf einer Funktion, die den SME-Status teilt, aus einer Funktion, die keinen SME-Status hat"
  
! #: config/aarch64/aarch64.cc:11549
  #, gcc-internal-format
  msgid "call to a function that shares state other than %qs from a function that has %qs state"
  msgstr "Aufruf einer Funktion, die einen anderen Status als %qs hat, aus einer Funktion, die den Status %qs hat"
  
! #: config/aarch64/aarch64.cc:11551
  #, gcc-internal-format
  msgid "use %<__arm_preserves(\"za\")%> if the callee preserves ZA"
  msgstr "verwenden Sie %<__arm_preserves(\"za\")%>, wenn die aufgerufene Funktion ZA beibehÃ¤lt"
  
! #: config/aarch64/aarch64.cc:18397
  #, gcc-internal-format
  msgid "unknown flag passed in %<-moverride=%s%> (%s)"
  msgstr "unbekanntes Flag wurde in %<-moverride=%s%> Ã¼bergeben (%s)"
  
! #: config/aarch64/aarch64.cc:18441
  #, gcc-internal-format
  msgid "%qs string ill-formed"
  msgstr "Zeichenkette %qs ist falsch geformt"
  
! #: config/aarch64/aarch64.cc:18497
  #, gcc-internal-format
  msgid "invalid format for %<sve_width%>"
  msgstr "ungÃ¼ltiges Format fÃ¼r %<sve_width%>"
  
! #: config/aarch64/aarch64.cc:18509
  #, gcc-internal-format
  msgid "invalid %<sve_width%> value: %d"
  msgstr "ungÃ¼ltiger Wert fÃ¼r %<sve_width%>: %d"
  
! #: config/aarch64/aarch64.cc:18529
  #, gcc-internal-format, gfc-internal-format
  msgid "tuning string missing in option (%s)"
  msgstr "Tuning-Zeichenkette fehlt in Option Â»%sÂ«"
  
! #: config/aarch64/aarch64.cc:18547
  #, gcc-internal-format, gfc-internal-format
  msgid "unknown tuning option (%s)"
  msgstr "unbekannte Tuning-Option Â»%sÂ«"
  
! #: config/aarch64/aarch64.cc:18734 config/arm/arm.cc:3223
! #: config/riscv/riscv.cc:10785
  #, gcc-internal-format
  msgid "incompatible options %<-mstack-protector-guard=global%> and %<-mstack-protector-guard-offset=%s%>"
  msgstr "die Optionen %<-mstack-protector-guard=global%> und %<-mstack-protector-guard-offset=%s%> sind unvertrÃ¤glich"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90153
! #: config/aarch64/aarch64.cc:18743 config/riscv/riscv.cc:10794
  #, gcc-internal-format
  msgid "both %<-mstack-protector-guard-offset%> and %<-mstack-protector-guard-reg%> must be used with %<-mstack-protector-guard=sysreg%>"
  msgstr "wenn %<-mstack-protector-guard=sysreg%> angegeben ist, mÃ¼ssen sowohl %<-mstack-protector-guard-offset%> als auch %<-mstack-protector-guard-reg%> angegeben werden"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90154
! #: config/aarch64/aarch64.cc:18751
  #, gcc-internal-format
  msgid "specify a system register with a small string length"
  msgstr "Systemregister mit einem kurzem Namen angeben"
  
! #: config/aarch64/aarch64.cc:18761 config/arm/arm.cc:3235
! #: config/riscv/riscv.cc:10823 config/rs6000/rs6000.cc:4518
  #, gcc-internal-format
  msgid "%qs is not a valid offset in %qs"
  msgstr "%qs ist in %qs kein gÃ¼ltiger Offset"
  
! #: config/aarch64/aarch64.cc:18768
  #, gcc-internal-format
  msgid "%<-fsanitize=shadow-call-stack%> requires %<-ffixed-x18%>"
  msgstr "%<-fsanitize=shadow-call-stack%> erfordert %<-ffixed-x18%>"
  
! #: config/aarch64/aarch64.cc:18775
  #, gcc-internal-format
  msgid "streaming functions require the ISA extension %qs"
  msgstr "Streaming-Funktionen erfordern die ISA-Erweiterung %qs"
  
! #: config/aarch64/aarch64.cc:18777
  #, gcc-internal-format
  msgid "functions with SME state require the ISA extension %qs"
  msgstr "Funktionen mit SME-Zustand erfordern die ISA-Erweiterung %qs"
  
! #: config/aarch64/aarch64.cc:18873
  #, gcc-internal-format
  msgid "only values 12 (4 KB) and 16 (64 KB) are supported for guard size.  Given value %d (%llu KB) is out of range"
  msgstr "nur die Werte 12 (4 kB) und 16 (64 kB) werden fÃ¼r die WÃ¤chtergrÃ¶ÃŸe unterstÃ¼tzt. Der angegebene Wert %d (%llu kB) liegt auÃŸerhalb des gÃ¼ltigen Bereichs"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90155
! #: config/aarch64/aarch64.cc:18889 config/riscv/riscv.cc:10843
  #, gcc-internal-format
  msgid "stack clash guard size %<%d%> must be equal to probing interval %<%d%>"
  msgstr "GrÃ¶ÃŸe des StapelkollisionswÃ¤chters %d muss gleich dem Sondierungsintervall %d sein"
  
! #: config/aarch64/aarch64.cc:18917
  #, gcc-internal-format
  msgid "no support for %qs without %qs"
  msgstr "keine UnterstÃ¼tzung fÃ¼r %qs ohne %qs"
  
! #: config/aarch64/aarch64.cc:18970
  #, gcc-internal-format
  msgid "invalid argument given to %<-mharden-sls=%>"
  msgstr "ungÃ¼ltiges Argument fÃ¼r %<-mharden-sls=%>"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99291
! #: config/aarch64/aarch64.cc:18981
  #, gcc-internal-format
  msgid "%qs must be by itself for %<-mharden-sls=%>"
  msgstr "%qs muss fÃ¼r sich allein stehen, fÃ¼r %<-mharden-sls=%>"
  
! #: config/aarch64/aarch64.cc:18986
  #, gcc-internal-format
  msgid "invalid argument %qs for %<-mharden-sls=%>"
  msgstr "ungÃ¼ltiges Argument %qs fÃ¼r %<-mharden-sls=%>"
  
! #: config/aarch64/aarch64.cc:19142
  #, gcc-internal-format
  msgid "switch %<-mcpu=%s%> conflicts with %<-march=%s%> switch and resulted in options %qs being added"
  msgstr "Schalter %<-mcpu=%s%> steht mit dem Schalter %<-march=%s%> in Konflikt und hat dazu gefÃ¼hrt, dass die Optionen %qs hinzugefÃ¼gt wurden"
  
! #: config/aarch64/aarch64.cc:19209
  #, gcc-internal-format
  msgid "assembler does not support %<-mabi=ilp32%>"
  msgstr "Assembler unterstÃ¼tzt %<-mabi=ilp32%> nicht"
  
! #: config/aarch64/aarch64.cc:19212
  #, gcc-internal-format
  msgid "%<-mabi=ilp32%> is deprecated"
  msgstr "%<-mabi=ilp32%> ist veraltet"
  
! #: config/aarch64/aarch64.cc:19218
  #, gcc-internal-format
  msgid "return address signing is only supported for %<-mabi=lp64%>"
  msgstr "Signieren der RÃ¼ckgabeadresse wird nur fÃ¼r %<-mabi=lp64%> unterstÃ¼tzt"
  
! #: config/aarch64/aarch64.cc:19291
  #, gcc-internal-format
  msgid "code model %qs with %<-f%s%>"
  msgstr "Codemodell %qs mit %<-f%s%>"
  
! #: config/aarch64/aarch64.cc:19294
  #, gcc-internal-format
  msgid "code model %qs not supported in ilp32 mode"
  msgstr "Codemodell %qs wird im ilp32-Modus nicht unterstÃ¼tzt"
  
! #: config/aarch64/aarch64.cc:19392
  #, gcc-internal-format
  msgid "functions with %qs state require the ISA extension %qs"
  msgstr "Funktionen mit dem Status %qs erfordern die ISA-Erweiterung %qs"
  
! #: config/aarch64/aarch64.cc:19497
  #, gcc-internal-format
  msgid "missing name in %<target(\"arch=\")%> pragma or attribute"
  msgstr "fehlender Name fÃ¼r Pragma oder Attribut %<target(\"arch=\")%>"
  
! #: config/aarch64/aarch64.cc:19500
  #, gcc-internal-format
  msgid "invalid name %qs in %<target(\"arch=\")%> pragma or attribute"
  msgstr "ungÃ¼ltiger Name %qs fÃ¼r Pragma oder Attribut %<target(\"arch=\")%>"
  
! #: config/aarch64/aarch64.cc:19504
  #, gcc-internal-format
  msgid "invalid feature modifier %s of value %qs in %<target()%> pragma or attribute"
  msgstr "ungÃ¼ltiger Featuremodifizierer %qs mit Wert %qs in Pragma oder Attribut %<target()%>"
  
! #: config/aarch64/aarch64.cc:19539
  #, gcc-internal-format
  msgid "missing name in %<target(\"cpu=\")%> pragma or attribute"
  msgstr "fehlender Name fÃ¼r Pragma oder Attribut %<target(\"cpu=\")%>"
  
! #: config/aarch64/aarch64.cc:19542
  #, gcc-internal-format
  msgid "invalid name %qs in %<target(\"cpu=\")%> pragma or attribute"
  msgstr "ungÃ¼ltiger Name %qs fÃ¼r Pragma oder Attribut %<target(\"cpu=\")%>"
  
! #: config/aarch64/aarch64.cc:19546 config/aarch64/aarch64.cc:19630
  #, gcc-internal-format
  msgid "invalid feature modifier %qs of value %qs in %<target()%> pragma or attribute"
  msgstr "ungÃ¼ltiger Featuremodifizierer %qs mit Wert %qs in Pragma oder Attribut %<target()%>"
  
! #: config/aarch64/aarch64.cc:19585
  #, gcc-internal-format
  msgid "invalid name %qs in %<target(\"tune=\")%> pragma or attribute"
  msgstr "ungÃ¼ltiger Name %qs fÃ¼r Pragma oder Attribut %<target(\"tune=\")%>"
  
! #: config/aarch64/aarch64.cc:19626
  #, gcc-internal-format
  msgid "missing value in %<target()%> pragma or attribute"
  msgstr "fehlender Wert fÃ¼r Pragma oder Attribut %<target()%>"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79868
! #: config/aarch64/aarch64.cc:19684 config/aarch64/aarch64.cc:19861
  #: config/loongarch/loongarch-target-attr.cc:144
  #: config/loongarch/loongarch-target-attr.cc:309
  #, gcc-internal-format
*************** msgid "malformed %<target()%> pragma or
*** 39470,39662 ****
  msgstr "falsch geformtes Pragma oder Attribut %<target()%>"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79868
! #: config/aarch64/aarch64.cc:19715
  #, gcc-internal-format
  msgid "pragma or attribute %<target(\"%s\")%> does not accept an argument"
  msgstr "Pragma oder Attribut %<target(\"%s\")%> akzeptiert keine Argumente"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79868
! #: config/aarch64/aarch64.cc:19723 config/i386/i386-options.cc:1315
  #: config/loongarch/loongarch-target-attr.cc:181
  #, gcc-internal-format
  msgid "pragma or attribute %<target(\"%s\")%> does not allow a negated form"
  msgstr "Pragma oder Attribut %<target(\"%s\")%> erlaubt keine negierte Form"
  
! #: config/aarch64/aarch64.cc:19777
  #: config/loongarch/loongarch-target-attr.cc:221
  #, gcc-internal-format
  msgid "pragma or attribute %<target(\"%s=%s\")%> is not valid"
  msgstr "Pragma oder Attribut %<target(\"%s=%s\")%> ist nicht gÃ¼ltig"
  
! #: config/aarch64/aarch64.cc:19834 config/arm/arm.cc:33836
  #: config/loongarch/loongarch-target-attr.cc:297
  #: config/riscv/riscv-target-attr.cc:431 config/rs6000/rs6000.cc:24714
! #: config/s390/s390.cc:16661
  #, gcc-internal-format
  msgid "attribute %<target%> argument not a string"
  msgstr "Argument fÃ¼r Attribut %<target%> ist keine Zeichenkette"
  
! #: config/aarch64/aarch64.cc:19871
  #, gcc-internal-format
  msgid "arch extension %qs should be prefixed by %<+%>"
  msgstr "der Arch-Erweiterung %qs sollte ein %<+%> vorangestellt werden"
  
! #: config/aarch64/aarch64.cc:19874
  #, gcc-internal-format
  msgid "pragma or attribute %<target(\"%s\")%> is not valid"
  msgstr "Pragma oder Attribut %<target(\"%s\")%> ist nicht gÃ¼ltig"
  
! #: config/aarch64/aarch64.cc:19883
  #: config/loongarch/loongarch-target-attr.cc:332
  #, gcc-internal-format
  msgid "malformed %<target(\"%s\")%> pragma or attribute"
  msgstr "falsch geformtes Pragma oder Attribut %<target(\"%s\")%>"
  
! #: config/aarch64/aarch64.cc:20101
  #, gcc-internal-format
  msgid "Function Multi Versioning support is experimental, and the behavior is likely to change"
  msgstr "Die UnterstÃ¼tzung von Â»Function Multi VersioningÂ« ist experimentell, und das Verhalten wird sich wahrscheinlich noch Ã¤ndern"
  
! #: config/aarch64/aarch64.cc:20110 config/riscv/riscv-target-attr.cc:497
  #, gcc-internal-format
  msgid "attribute %<target_version%> has multiple values"
  msgstr "das Attribut %<target_version%> hat mehrere Werte"
  
! #: config/aarch64/aarch64.cc:20118 config/riscv/riscv-target-attr.cc:505
  #, gcc-internal-format
  msgid "attribute %<target_version%> argument not a string"
  msgstr "das Argument des Attributs %<target_version%> ist keine Zeichenkette"
  
! #: config/aarch64/aarch64.cc:20140
  #, gcc-internal-format
  msgid "missing value in %<target_version%> attribute"
  msgstr "im Attribut %<target_version%> fehlt der Wert"
  
! #: config/aarch64/aarch64.cc:20144
  #, gcc-internal-format
  msgid "invalid feature modifier %qs of value %qs in %<target_version%> attribute"
  msgstr "ungÃ¼ltiger Featuremodifizierer %qs mit Wert %qs in Attribut %<target_version%>"
  
! #: config/aarch64/aarch64.cc:20150
  #, gcc-internal-format
  msgid "duplicate feature modifier %qs of value %qs in %<target_version%> attribute"
  msgstr "doppelter Featuremodifizierer %qs mit Wert %qs in Attribut %<target_version%>"
  
! #: config/aarch64/aarch64.cc:20736 config/i386/i386-features.cc:3911
! #: config/i386/i386-features.cc:4180 config/riscv/riscv.cc:13694
  #, gcc-internal-format
  msgid "virtual function multiversioning not supported"
  msgstr "Multiversionierung virtueller Funktionen wird nicht unterstÃ¼tzt"
  
! #: config/aarch64/aarch64.cc:20857 config/i386/i386-features.cc:4044
! #: config/riscv/riscv.cc:13819 config/rs6000/rs6000.cc:25404
  #, gcc-internal-format
  msgid "multiversioning needs %<ifunc%> which is not supported on this target"
  msgstr "Multiversionierung erfordert %<ifunc%>, was auf diesem Ziel nicht unterstÃ¼tzt wird"
  
! #: config/aarch64/aarch64.cc:22409 config/arm/arm.cc:6686
  #: config/rs6000/rs6000-call.cc:366 config/s390/s390.cc:12993
  msgid "parameter passing for argument of type %qT with %<[[no_unique_address]]%> members changed %{in GCC 10.1%}"
  msgstr "die ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT mit %<[[no_unique_address]]%>-Elementen hat sich %{in GCC 10.1%} geÃ¤ndert"
  
! #: config/aarch64/aarch64.cc:22414 config/arm/arm.cc:6691
  #: config/rs6000/rs6000-call.cc:361 config/s390/s390.cc:12988
  msgid "parameter passing for argument of type %qT when C++17 is enabled changed to match C++14 %{in GCC 10.1%}"
  msgstr "die ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT hat sich, sofern C++17 aktiviert ist, so geÃ¤ndert, dass es C++14 %{in GCC 10.1%} entspricht"
  
! #: config/aarch64/aarch64.cc:22419 config/arm/arm.cc:6696
  msgid "parameter passing for argument of type %qT changed %{in GCC 12.1%}"
  msgstr "die ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT hat sich %{mit GCC 12.1%} geÃ¤ndert"
  
! #: config/aarch64/aarch64.cc:23825 config/aarch64/aarch64.cc:23828
  #, gcc-internal-format
  msgid "lane %wd out of range %wd - %wd"
  msgstr "Spur %wd ist auÃŸerhalb des Wertebereiches %wd bis %wd"
  
! #: config/aarch64/aarch64.cc:29341 config/i386/i386.cc:25621
! #: config/i386/i386.cc:25752
  #, gcc-internal-format
  msgid "unsupported simdlen %wd"
  msgstr "nicht unterstÃ¼tzte simdlen %wd"
  
! #: config/aarch64/aarch64.cc:29355
  #, gcc-internal-format
  msgid "GCC does not currently support return type %qT for simd"
  msgstr "GCC bietet derzeit keine UnterstÃ¼tzung fÃ¼r RÃ¼ckgabetyp %qT fÃ¼r SIMD-Funktionen"
  
! #: config/aarch64/aarch64.cc:29359 config/i386/i386.cc:25643
  #, gcc-internal-format
  msgid "unsupported return type %qT for simd"
  msgstr "nicht unterstÃ¼tzter RÃ¼ckgabetyp %qT fÃ¼r SIMD"
  
! #: config/aarch64/aarch64.cc:29393
  #, gcc-internal-format
  msgid "GCC does not currently support argument type %qT for simd"
  msgstr "GCC bietet derzeit keine UnterstÃ¼tzung fÃ¼r Parametertyp %qT fÃ¼r SIMD-Funktionen"
  
! #: config/aarch64/aarch64.cc:29397 config/i386/i386.cc:25674
  #, gcc-internal-format
  msgid "unsupported argument type %qT for simd"
  msgstr "nicht unterstÃ¼tzter Argumenttyp %qT fÃ¼r SIMD"
  
! #: config/aarch64/aarch64.cc:29468
  #, gcc-internal-format
  msgid "GCC does not currently support simdlen %wd for type %qT"
  msgstr "GCC unterstÃ¼tzt derzeit %<simdlen %wd%> fÃ¼r Typ %qT nicht"
  
! #: config/aarch64/aarch64.cc:29488
  #, gcc-internal-format
  msgid "GCC does not currently support a simdclone with simdlens %wd and %wd for these types."
  msgstr "GCC unterstÃ¼tzt derzeit kein simdclone mit simdlens %wd und %wd fÃ¼r diese Typen."
  
! #: config/aarch64/aarch64.cc:29676
  #, gcc-internal-format
  msgid "cannot apply attribute %qs to %q+D after the function has been defined"
  msgstr "das Attribut %qs kann nicht auf %q+D angewendet werden, nachdem die Funktion definiert worden ist"
  
! #: config/aarch64/aarch64.cc:29678
  #, gcc-internal-format
  msgid "%q+D defined here"
  msgstr "%q+D hier definiert"
  
! #: config/aarch64/aarch64.cc:30158
  #, gcc-internal-format
  msgid "non-local gotos in functions with SME state"
  msgstr "nichtlokale Gotos in Funktionen mit SME-Zustand"
  
! #: config/aarch64/aarch64.cc:30467
  #, gcc-internal-format
  msgid "catching non-call exceptions in functions with SME state"
  msgstr "Abfangen von Nicht-Aufruf-Ausnahmen in Funktionen mit SME-Zustand"
  
! #: config/aarch64/aarch64.cc:31107 config/arm/arm-mve-builtins.cc:634
  #: config/riscv/riscv-vector-builtins.cc:4493
  #, gcc-internal-format
  msgid "argument %d of %qE must be an integer constant expression"
  msgstr "Argument %d von %qE muss ein konstanter ganzzahliger Ausdruck sein"
  
! #: config/aarch64/aarch64.cc:31120
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects the value %wd"
  msgstr "Ãœbergabe von %wd an Argument %d von %qE, das jedoch den Wert %wd erwartet"
  
! #: config/aarch64/aarch64.cc:31123 config/arm/arm-mve-builtins.cc:646
  #: config/riscv/riscv-vector-builtins.cc:4507
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects a value in the range [%wd, %wd]"
  msgstr "Ãœbergabe von %wd an das Argument %d von %qE, das einen Wert im Bereich [%wd, %wd] erwartet"
  
! #: config/aarch64/aarch64.cc:31136
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects either %wd or %wd"
  msgstr "Ãœbergabe von %wd an Argument %d von %qE, das jedoch entweder %wd oder %wd erwartet"
  
! #: config/aarch64/aarch64.cc:31150 config/arm/arm-mve-builtins.cc:685
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects %wd, %wd, %wd or %wd"
  msgstr "Ãœbergabe von %wd an Argument %d von %qE, das jedoch entweder %wd, %wd, %wd oder %wd erwartet"
  
! #: config/aarch64/aarch64.cc:31162 config/arm/arm-mve-builtins.cc:672
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects a valid %qT value"
  msgstr "Ãœbergabe von %wd an Argument %d von %qE, das jedoch einen gÃ¼ltigen %qT-Wert erwartet"
--- 39478,39670 ----
  msgstr "falsch geformtes Pragma oder Attribut %<target()%>"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79868
! #: config/aarch64/aarch64.cc:19730
  #, gcc-internal-format
  msgid "pragma or attribute %<target(\"%s\")%> does not accept an argument"
  msgstr "Pragma oder Attribut %<target(\"%s\")%> akzeptiert keine Argumente"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79868
! #: config/aarch64/aarch64.cc:19738 config/i386/i386-options.cc:1315
  #: config/loongarch/loongarch-target-attr.cc:181
  #, gcc-internal-format
  msgid "pragma or attribute %<target(\"%s\")%> does not allow a negated form"
  msgstr "Pragma oder Attribut %<target(\"%s\")%> erlaubt keine negierte Form"
  
! #: config/aarch64/aarch64.cc:19792
  #: config/loongarch/loongarch-target-attr.cc:221
  #, gcc-internal-format
  msgid "pragma or attribute %<target(\"%s=%s\")%> is not valid"
  msgstr "Pragma oder Attribut %<target(\"%s=%s\")%> ist nicht gÃ¼ltig"
  
! #: config/aarch64/aarch64.cc:19849 config/arm/arm.cc:33836
  #: config/loongarch/loongarch-target-attr.cc:297
  #: config/riscv/riscv-target-attr.cc:431 config/rs6000/rs6000.cc:24714
! #: config/s390/s390.cc:16688
  #, gcc-internal-format
  msgid "attribute %<target%> argument not a string"
  msgstr "Argument fÃ¼r Attribut %<target%> ist keine Zeichenkette"
  
! #: config/aarch64/aarch64.cc:19886
  #, gcc-internal-format
  msgid "arch extension %qs should be prefixed by %<+%>"
  msgstr "der Arch-Erweiterung %qs sollte ein %<+%> vorangestellt werden"
  
! #: config/aarch64/aarch64.cc:19889
  #, gcc-internal-format
  msgid "pragma or attribute %<target(\"%s\")%> is not valid"
  msgstr "Pragma oder Attribut %<target(\"%s\")%> ist nicht gÃ¼ltig"
  
! #: config/aarch64/aarch64.cc:19898
  #: config/loongarch/loongarch-target-attr.cc:332
  #, gcc-internal-format
  msgid "malformed %<target(\"%s\")%> pragma or attribute"
  msgstr "falsch geformtes Pragma oder Attribut %<target(\"%s\")%>"
  
! #: config/aarch64/aarch64.cc:20116
  #, gcc-internal-format
  msgid "Function Multi Versioning support is experimental, and the behavior is likely to change"
  msgstr "Die UnterstÃ¼tzung von Â»Function Multi VersioningÂ« ist experimentell, und das Verhalten wird sich wahrscheinlich noch Ã¤ndern"
  
! #: config/aarch64/aarch64.cc:20125 config/riscv/riscv-target-attr.cc:497
  #, gcc-internal-format
  msgid "attribute %<target_version%> has multiple values"
  msgstr "das Attribut %<target_version%> hat mehrere Werte"
  
! #: config/aarch64/aarch64.cc:20133 config/riscv/riscv-target-attr.cc:505
  #, gcc-internal-format
  msgid "attribute %<target_version%> argument not a string"
  msgstr "das Argument des Attributs %<target_version%> ist keine Zeichenkette"
  
! #: config/aarch64/aarch64.cc:20155
  #, gcc-internal-format
  msgid "missing value in %<target_version%> attribute"
  msgstr "im Attribut %<target_version%> fehlt der Wert"
  
! #: config/aarch64/aarch64.cc:20159
  #, gcc-internal-format
  msgid "invalid feature modifier %qs of value %qs in %<target_version%> attribute"
  msgstr "ungÃ¼ltiger Featuremodifizierer %qs mit Wert %qs in Attribut %<target_version%>"
  
! #: config/aarch64/aarch64.cc:20165
  #, gcc-internal-format
  msgid "duplicate feature modifier %qs of value %qs in %<target_version%> attribute"
  msgstr "doppelter Featuremodifizierer %qs mit Wert %qs in Attribut %<target_version%>"
  
! #: config/aarch64/aarch64.cc:20751 config/i386/i386-features.cc:3911
! #: config/i386/i386-features.cc:4180 config/riscv/riscv.cc:13703
  #, gcc-internal-format
  msgid "virtual function multiversioning not supported"
  msgstr "Multiversionierung virtueller Funktionen wird nicht unterstÃ¼tzt"
  
! #: config/aarch64/aarch64.cc:20872 config/i386/i386-features.cc:4044
! #: config/riscv/riscv.cc:13828 config/rs6000/rs6000.cc:25404
  #, gcc-internal-format
  msgid "multiversioning needs %<ifunc%> which is not supported on this target"
  msgstr "Multiversionierung erfordert %<ifunc%>, was auf diesem Ziel nicht unterstÃ¼tzt wird"
  
! #: config/aarch64/aarch64.cc:22424 config/arm/arm.cc:6686
  #: config/rs6000/rs6000-call.cc:366 config/s390/s390.cc:12993
  msgid "parameter passing for argument of type %qT with %<[[no_unique_address]]%> members changed %{in GCC 10.1%}"
  msgstr "die ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT mit %<[[no_unique_address]]%>-Elementen hat sich %{in GCC 10.1%} geÃ¤ndert"
  
! #: config/aarch64/aarch64.cc:22429 config/arm/arm.cc:6691
  #: config/rs6000/rs6000-call.cc:361 config/s390/s390.cc:12988
  msgid "parameter passing for argument of type %qT when C++17 is enabled changed to match C++14 %{in GCC 10.1%}"
  msgstr "die ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT hat sich, sofern C++17 aktiviert ist, so geÃ¤ndert, dass es C++14 %{in GCC 10.1%} entspricht"
  
! #: config/aarch64/aarch64.cc:22434 config/arm/arm.cc:6696
  msgid "parameter passing for argument of type %qT changed %{in GCC 12.1%}"
  msgstr "die ParameterÃ¼bergabe fÃ¼r das Argument vom Typ %qT hat sich %{mit GCC 12.1%} geÃ¤ndert"
  
! #: config/aarch64/aarch64.cc:23889 config/aarch64/aarch64.cc:23892
  #, gcc-internal-format
  msgid "lane %wd out of range %wd - %wd"
  msgstr "Spur %wd ist auÃŸerhalb des Wertebereiches %wd bis %wd"
  
! #: config/aarch64/aarch64.cc:29422 config/i386/i386.cc:25619
! #: config/i386/i386.cc:25750
  #, gcc-internal-format
  msgid "unsupported simdlen %wd"
  msgstr "nicht unterstÃ¼tzte simdlen %wd"
  
! #: config/aarch64/aarch64.cc:29436
  #, gcc-internal-format
  msgid "GCC does not currently support return type %qT for simd"
  msgstr "GCC bietet derzeit keine UnterstÃ¼tzung fÃ¼r RÃ¼ckgabetyp %qT fÃ¼r SIMD-Funktionen"
  
! #: config/aarch64/aarch64.cc:29440 config/i386/i386.cc:25641
  #, gcc-internal-format
  msgid "unsupported return type %qT for simd"
  msgstr "nicht unterstÃ¼tzter RÃ¼ckgabetyp %qT fÃ¼r SIMD"
  
! #: config/aarch64/aarch64.cc:29474
  #, gcc-internal-format
  msgid "GCC does not currently support argument type %qT for simd"
  msgstr "GCC bietet derzeit keine UnterstÃ¼tzung fÃ¼r Parametertyp %qT fÃ¼r SIMD-Funktionen"
  
! #: config/aarch64/aarch64.cc:29478 config/i386/i386.cc:25672
  #, gcc-internal-format
  msgid "unsupported argument type %qT for simd"
  msgstr "nicht unterstÃ¼tzter Argumenttyp %qT fÃ¼r SIMD"
  
! #: config/aarch64/aarch64.cc:29549
  #, gcc-internal-format
  msgid "GCC does not currently support simdlen %wd for type %qT"
  msgstr "GCC unterstÃ¼tzt derzeit %<simdlen %wd%> fÃ¼r Typ %qT nicht"
  
! #: config/aarch64/aarch64.cc:29569
  #, gcc-internal-format
  msgid "GCC does not currently support a simdclone with simdlens %wd and %wd for these types."
  msgstr "GCC unterstÃ¼tzt derzeit kein simdclone mit simdlens %wd und %wd fÃ¼r diese Typen."
  
! #: config/aarch64/aarch64.cc:29757
  #, gcc-internal-format
  msgid "cannot apply attribute %qs to %q+D after the function has been defined"
  msgstr "das Attribut %qs kann nicht auf %q+D angewendet werden, nachdem die Funktion definiert worden ist"
  
! #: config/aarch64/aarch64.cc:29759
  #, gcc-internal-format
  msgid "%q+D defined here"
  msgstr "%q+D hier definiert"
  
! #: config/aarch64/aarch64.cc:30239
  #, gcc-internal-format
  msgid "non-local gotos in functions with SME state"
  msgstr "nichtlokale Gotos in Funktionen mit SME-Zustand"
  
! #: config/aarch64/aarch64.cc:30548
  #, gcc-internal-format
  msgid "catching non-call exceptions in functions with SME state"
  msgstr "Abfangen von Nicht-Aufruf-Ausnahmen in Funktionen mit SME-Zustand"
  
! #: config/aarch64/aarch64.cc:31188 config/arm/arm-mve-builtins.cc:634
  #: config/riscv/riscv-vector-builtins.cc:4493
  #, gcc-internal-format
  msgid "argument %d of %qE must be an integer constant expression"
  msgstr "Argument %d von %qE muss ein konstanter ganzzahliger Ausdruck sein"
  
! #: config/aarch64/aarch64.cc:31201
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects the value %wd"
  msgstr "Ãœbergabe von %wd an Argument %d von %qE, das jedoch den Wert %wd erwartet"
  
! #: config/aarch64/aarch64.cc:31204 config/arm/arm-mve-builtins.cc:646
  #: config/riscv/riscv-vector-builtins.cc:4507
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects a value in the range [%wd, %wd]"
  msgstr "Ãœbergabe von %wd an das Argument %d von %qE, das einen Wert im Bereich [%wd, %wd] erwartet"
  
! #: config/aarch64/aarch64.cc:31217
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects either %wd or %wd"
  msgstr "Ãœbergabe von %wd an Argument %d von %qE, das jedoch entweder %wd oder %wd erwartet"
  
! #: config/aarch64/aarch64.cc:31231 config/arm/arm-mve-builtins.cc:685
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects %wd, %wd, %wd or %wd"
  msgstr "Ãœbergabe von %wd an Argument %d von %qE, das jedoch entweder %wd, %wd, %wd oder %wd erwartet"
  
! #: config/aarch64/aarch64.cc:31243 config/arm/arm-mve-builtins.cc:672
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects a valid %qT value"
  msgstr "Ãœbergabe von %wd an Argument %d von %qE, das jedoch einen gÃ¼ltigen %qT-Wert erwartet"
*************** msgstr "L%d Cache-Wartezeit unbekannt fÃ
*** 39716,39722 ****
  msgid "bad value %qs for %<-mmemory-latency%>"
  msgstr "falscher Wert %qs fÃ¼r %<-mmemory-latency%>"
  
! #: config/alpha/alpha.cc:7360 config/alpha/alpha.cc:7363 config/arc/arc.cc:6981
  #: config/arc/arc.cc:7255 config/s390/s390.cc:942
  #, gcc-internal-format
  msgid "bad builtin fcode"
--- 39724,39730 ----
  msgid "bad value %qs for %<-mmemory-latency%>"
  msgstr "falscher Wert %qs fÃ¼r %<-mmemory-latency%>"
  
! #: config/alpha/alpha.cc:7357 config/alpha/alpha.cc:7360 config/arc/arc.cc:6981
  #: config/arc/arc.cc:7255 config/s390/s390.cc:942
  #, gcc-internal-format
  msgid "bad builtin fcode"
*************** msgstr "Argument des Attributes %qE ist
*** 39845,39851 ****
  #: config/i386/i386-options.cc:3906 config/i386/i386-options.cc:3962
  #: config/i386/i386-options.cc:4013 config/i386/i386-options.cc:4050
  #: config/m68k/m68k.cc:804 config/mcore/mcore.cc:3070
! #: config/nvptx/nvptx.cc:5895 config/riscv/riscv.cc:6533
  #: config/rl78/rl78.cc:821 config/rl78/rl78.cc:890
  #: config/rs6000/rs6000.cc:20642 config/rx/rx.cc:2727 config/rx/rx.cc:2753
  #: config/s390/s390.cc:1157 config/s390/s390.cc:1247 config/sh/sh.cc:8442
--- 39853,39859 ----
  #: config/i386/i386-options.cc:3906 config/i386/i386-options.cc:3962
  #: config/i386/i386-options.cc:4013 config/i386/i386-options.cc:4050
  #: config/m68k/m68k.cc:804 config/mcore/mcore.cc:3070
! #: config/nvptx/nvptx.cc:5901 config/riscv/riscv.cc:6533
  #: config/rl78/rl78.cc:821 config/rl78/rl78.cc:890
  #: config/rs6000/rs6000.cc:20642 config/rx/rx.cc:2727 config/rx/rx.cc:2753
  #: config/s390/s390.cc:1157 config/s390/s390.cc:1247 config/sh/sh.cc:8442
*************** msgid "argument of %qE attribute ignored
*** 39983,40004 ****
  msgstr "Argument des Attributs %qE wird ignoriert"
  
  #: config/arc/arc.cc:11004 config/avr/avr.cc:11384 config/bfin/bfin.cc:4818
! #: config/mingw/winnt.cc:63 config/nvptx/nvptx.cc:5918
  #, gcc-internal-format
  msgid "%qE attribute only applies to variables"
  msgstr "Attribut %qE bezieht sich nur auf Variablen"
  
! #: config/arm/aarch-common.cc:553 config/i386/i386.cc:24288
  #, gcc-internal-format
  msgid "alternatives not allowed in %<asm%> flag output"
  msgstr "Alternativen sind in %<asm%>-Flag-Ausgabe nicht erlaubt"
  
! #: config/arm/aarch-common.cc:614 config/i386/i386.cc:24352
  #, gcc-internal-format
  msgid "unknown %<asm%> flag output %qs"
  msgstr "unbekannte Ausgabe %qs des %<asm%>-Schalters"
  
! #: config/arm/aarch-common.cc:624 config/i386/i386.cc:24381
  #, gcc-internal-format
  msgid "invalid type for %<asm%> flag output"
  msgstr "ungÃ¼ltiger Typ fÃ¼r %<asm%>-Schalter-Ausgabe"
--- 39991,40012 ----
  msgstr "Argument des Attributs %qE wird ignoriert"
  
  #: config/arc/arc.cc:11004 config/avr/avr.cc:11384 config/bfin/bfin.cc:4818
! #: config/mingw/winnt.cc:63 config/nvptx/nvptx.cc:5924
  #, gcc-internal-format
  msgid "%qE attribute only applies to variables"
  msgstr "Attribut %qE bezieht sich nur auf Variablen"
  
! #: config/arm/aarch-common.cc:553 config/i386/i386.cc:24290
  #, gcc-internal-format
  msgid "alternatives not allowed in %<asm%> flag output"
  msgstr "Alternativen sind in %<asm%>-Flag-Ausgabe nicht erlaubt"
  
! #: config/arm/aarch-common.cc:614 config/i386/i386.cc:24354
  #, gcc-internal-format
  msgid "unknown %<asm%> flag output %qs"
  msgstr "unbekannte Ausgabe %qs des %<asm%>-Schalters"
  
! #: config/arm/aarch-common.cc:624 config/i386/i386.cc:24383
  #, gcc-internal-format
  msgid "invalid type for %<asm%> flag output"
  msgstr "ungÃ¼ltiger Typ fÃ¼r %<asm%>-Schalter-Ausgabe"
*************** msgstr "%<-fstack-check=specific%> fÃ¼r
*** 40497,40503 ****
  #: config/arm/arm.cc:33865
  #, gcc-internal-format
  msgid "invalid fpu for target attribute or pragma %qs"
! msgstr "ungÃ¼ltige FPU fÃ¼r Zielattribut oder -pragma %qs"
  
  #. This doesn't really make sense until we support
  #. general dynamic selection of the architecture and all
--- 40505,40511 ----
  #: config/arm/arm.cc:33865
  #, gcc-internal-format
  msgid "invalid fpu for target attribute or pragma %qs"
! msgstr "ungÃ¼ltige FPU fÃ¼r Zielattribut oder Pragma %qs"
  
  #. This doesn't really make sense until we support
  #. general dynamic selection of the architecture and all
*************** msgstr "automatische FPU-Auswahl ist hie
*** 40510,40521 ****
  #: config/arm/arm.cc:33886
  #, gcc-internal-format
  msgid "invalid architecture for target attribute or pragma %qs"
! msgstr "UngÃ¼ltige Architektur fÃ¼r Zielattribut oder -pragma %qs"
  
  #: config/arm/arm.cc:33900
  #, gcc-internal-format
  msgid "unknown target attribute or pragma %qs"
! msgstr "Unbekanntes Zielattribut oder -pragma %qs"
  
  #: config/arm/arm.cc:36137
  #, gcc-internal-format
--- 40518,40529 ----
  #: config/arm/arm.cc:33886
  #, gcc-internal-format
  msgid "invalid architecture for target attribute or pragma %qs"
! msgstr "UngÃ¼ltige Architektur fÃ¼r Zielattribut oder Pragma %qs"
  
  #: config/arm/arm.cc:33900
  #, gcc-internal-format
  msgid "unknown target attribute or pragma %qs"
! msgstr "Unbekanntes Zielattribut oder Pragma %qs"
  
  #: config/arm/arm.cc:36137
  #, gcc-internal-format
*************** msgstr "%qs erwartet einen Ganzzahlwert
*** 40572,40578 ****
  msgid "supported core architectures:%s"
  msgstr "UnterstÃ¼tzte Kernarchitekturen:%s"
  
! #: config/avr/avr-passes.cc:4907
  #, gcc-internal-format
  msgid "failed to split insn"
  msgstr "Befehl konnte nicht aufgeteilt werden"
--- 40580,40586 ----
  msgid "supported core architectures:%s"
  msgstr "UnterstÃ¼tzte Kernarchitekturen:%s"
  
! #: config/avr/avr-passes.cc:5038
  #, gcc-internal-format
  msgid "failed to split insn"
  msgstr "Befehl konnte nicht aufgeteilt werden"
*************** msgstr "%<-fpie%> wird nicht unterstÃ¼tz
*** 40606,40617 ****
  msgid "%<-fPIE%> is not supported"
  msgstr "%<-fPIE%> wird nicht unterstÃ¼tzt"
  
! #: config/avr/avr.cc:954 config/avr/avr.cc:959 config/riscv/riscv.cc:11234
  #, gcc-internal-format
  msgid "function attributes %qs and %qs are mutually exclusive"
  msgstr "Funktionsattribute %qs und %qs schlieÃŸen sich gegenseitig aus"
  
! #: config/avr/avr.cc:981 config/riscv/riscv.cc:11246
  #, gcc-internal-format
  msgid "%qs function cannot have arguments"
  msgstr "Funktion %qs kann keine Argumente haben"
--- 40614,40625 ----
  msgid "%<-fPIE%> is not supported"
  msgstr "%<-fPIE%> wird nicht unterstÃ¼tzt"
  
! #: config/avr/avr.cc:954 config/avr/avr.cc:959 config/riscv/riscv.cc:11243
  #, gcc-internal-format
  msgid "function attributes %qs and %qs are mutually exclusive"
  msgstr "Funktionsattribute %qs und %qs schlieÃŸen sich gegenseitig aus"
  
! #: config/avr/avr.cc:981 config/riscv/riscv.cc:11255
  #, gcc-internal-format
  msgid "%qs function cannot have arguments"
  msgstr "Funktion %qs kann keine Argumente haben"
*************** msgstr "Funktion %qs kann keine Argument
*** 40621,40627 ****
  msgid "method %qs has an implicit %<this%> argument"
  msgstr "die Methode %qs hat ein implizites Argument %<this%>"
  
! #: config/avr/avr.cc:987 config/riscv/riscv.cc:11243
  #, gcc-internal-format
  msgid "%qs function cannot return a value"
  msgstr "Funktion %qs kann keinen Wert zurÃ¼ckgeben"
--- 40629,40635 ----
  msgid "method %qs has an implicit %<this%> argument"
  msgstr "die Methode %qs hat ein implizites Argument %<this%>"
  
! #: config/avr/avr.cc:987 config/riscv/riscv.cc:11252
  #, gcc-internal-format
  msgid "%qs function cannot return a value"
  msgstr "Funktion %qs kann keinen Wert zurÃ¼ckgeben"
*************** msgstr "%qs ist in der AVR-LibC ein rese
*** 40645,40651 ****
  #: config/avr/avr.cc:1022
  #, gcc-internal-format
  msgid "%qs is a deprecated identifier in AVR-LibC.  Consider %<#include <avr/interrupt.h>%> or %<#include <compat/deprecated.h>%> before using the %qs macro"
! msgstr "%qs ist in der AVR-LibC ein veralteter Bezeichner. ErwÃ¤gen Sie %<#include <avr/interrupt.h>%> oder %<#include <compat&deprecated.h>%> vor der Benutzung des Makros %qs"
  
  #: config/avr/avr.cc:1244
  #, gcc-internal-format
--- 40653,40659 ----
  #: config/avr/avr.cc:1022
  #, gcc-internal-format
  msgid "%qs is a deprecated identifier in AVR-LibC.  Consider %<#include <avr/interrupt.h>%> or %<#include <compat/deprecated.h>%> before using the %qs macro"
! msgstr "%qs ist in der AVR-LibC ein veralteter Bezeichner. ErwÃ¤gen Sie %<#include <avr/interrupt.h>%> oder %<#include <compat/deprecated.h>%> vor der Benutzung des Makros %qs"
  
  #: config/avr/avr.cc:1244
  #, gcc-internal-format
*************** msgstr "%q+D hat unvertrÃ¤gliche Attribu
*** 40787,40818 ****
  msgid "architecture %qs supported for assembler only"
  msgstr "Architektur %qs wird nur fÃ¼r Assemblierung unterstÃ¼tzt"
  
! #: config/avr/avr.cc:15093
  #, gcc-internal-format
  msgid "conversion from address space %qs to address space %qs"
  msgstr "Umwandlung von Adressraum %qs in Adressraum %qs"
  
! #: config/avr/avr.cc:16261 config/avr/avr.cc:16274
  #, gcc-internal-format, gfc-internal-format
  msgid "%s expects a compile time integer constant"
  msgstr "%s erwartet eine Ganzzahlkonstante zur Kompilierzeit"
  
! #: config/avr/avr.cc:16289
  #, gcc-internal-format, gfc-internal-format
  msgid "%s expects a compile time integer constant of 0x01, 0x7f, 0x80 or 0xfe as first argument"
  msgstr "%s erwartet eine Ganzzahlkonstante mit dem Wert 0x01, 0x7f, 0x80 oder 0xfe als erstes Argument"
  
! #: config/avr/avr.cc:16304
  #, gcc-internal-format, gfc-internal-format
  msgid "%s expects a compile time long integer constant as first argument"
  msgstr "%s erwartet eine Long-Ganzzahlkonstante als erstes Argument zur Kompilierzeit"
  
! #: config/avr/avr.cc:16332
  #, gcc-internal-format, gfc-internal-format
  msgid "rounding to %d bits has no effect for fixed-point value with %d fractional bits"
  msgstr "Rundung auf %d Bits hat keinen Effekt fÃ¼r Festkommawert mit %d Bit Nachkommaanteil"
  
! #: config/avr/avr.cc:16341
  #, gcc-internal-format
  msgid "rounding result will always be 0"
  msgstr "Rundungsergebnis wird immer 0 sein"
--- 40795,40826 ----
  msgid "architecture %qs supported for assembler only"
  msgstr "Architektur %qs wird nur fÃ¼r Assemblierung unterstÃ¼tzt"
  
! #: config/avr/avr.cc:15107
  #, gcc-internal-format
  msgid "conversion from address space %qs to address space %qs"
  msgstr "Umwandlung von Adressraum %qs in Adressraum %qs"
  
! #: config/avr/avr.cc:16275 config/avr/avr.cc:16288
  #, gcc-internal-format, gfc-internal-format
  msgid "%s expects a compile time integer constant"
  msgstr "%s erwartet eine Ganzzahlkonstante zur Kompilierzeit"
  
! #: config/avr/avr.cc:16303
  #, gcc-internal-format, gfc-internal-format
  msgid "%s expects a compile time integer constant of 0x01, 0x7f, 0x80 or 0xfe as first argument"
  msgstr "%s erwartet eine Ganzzahlkonstante mit dem Wert 0x01, 0x7f, 0x80 oder 0xfe als erstes Argument"
  
! #: config/avr/avr.cc:16318
  #, gcc-internal-format, gfc-internal-format
  msgid "%s expects a compile time long integer constant as first argument"
  msgstr "%s erwartet eine Long-Ganzzahlkonstante als erstes Argument zur Kompilierzeit"
  
! #: config/avr/avr.cc:16346
  #, gcc-internal-format, gfc-internal-format
  msgid "rounding to %d bits has no effect for fixed-point value with %d fractional bits"
  msgstr "Rundung auf %d Bits hat keinen Effekt fÃ¼r Festkommawert mit %d Bit Nachkommaanteil"
  
! #: config/avr/avr.cc:16355
  #, gcc-internal-format
  msgid "rounding result will always be 0"
  msgstr "Rundungsergebnis wird immer 0 sein"
*************** msgstr "%<vector_length (64)%> wird verw
*** 41250,41256 ****
  msgid "using %<vector_length (64)%>, ignoring runtime setting"
  msgstr "%<vector_length (64)%> wird verwendet, Laufzeiteinstellung wird ignoriert"
  
! #: config/gcn/gcn.cc:6351 config/nvptx/nvptx.cc:6748
  #, gcc-internal-format
  msgid "using %<num_workers (%d)%>, ignoring %d"
  msgstr "%<num_workers (%d)%> wird verwendet, %d wird ignoriert"
--- 41258,41264 ----
  msgid "using %<vector_length (64)%>, ignoring runtime setting"
  msgstr "%<vector_length (64)%> wird verwendet, Laufzeiteinstellung wird ignoriert"
  
! #: config/gcn/gcn.cc:6351 config/nvptx/nvptx.cc:6754
  #, gcc-internal-format
  msgid "using %<num_workers (%d)%>, ignoring %d"
  msgstr "%<num_workers (%d)%> wird verwendet, %d wird ignoriert"
*************** msgstr "Offload-Compiler %qs nicht gefun
*** 41311,41322 ****
  msgid "unrecognizable argument of option %<"
  msgstr "nicht erkanntes Kommandozeilenargument von Option %<"
  
! #: config/gcn/mkoffload.cc:1033 config/nvptx/mkoffload.cc:722
  #, gcc-internal-format
  msgid "%<-foffload-abi-host-opts%> specified multiple times"
  msgstr "%<-foffload-abi-host-opts%> ist mehrfach angegeben"
  
! #: config/gcn/mkoffload.cc:1090 config/nvptx/mkoffload.cc:757
  #, gcc-internal-format
  msgid "either %<-fopenacc%> or %<-fopenmp%> must be set"
  msgstr "entweder %<-fopenacc%> oder %<-fopenmp%> muss angegeben sein"
--- 41319,41330 ----
  msgid "unrecognizable argument of option %<"
  msgstr "nicht erkanntes Kommandozeilenargument von Option %<"
  
! #: config/gcn/mkoffload.cc:1033 config/nvptx/mkoffload.cc:728
  #, gcc-internal-format
  msgid "%<-foffload-abi-host-opts%> specified multiple times"
  msgstr "%<-foffload-abi-host-opts%> ist mehrfach angegeben"
  
! #: config/gcn/mkoffload.cc:1090 config/nvptx/mkoffload.cc:763
  #, gcc-internal-format
  msgid "either %<-fopenacc%> or %<-fopenmp%> must be set"
  msgstr "entweder %<-fopenacc%> oder %<-fopenmp%> muss angegeben sein"
*************** msgstr "unbehandelte Architektur"
*** 41331,41342 ****
  msgid "cannot open %qs"
  msgstr "%qs kann nicht geÃ¶ffnet werden"
  
! #: config/gcn/mkoffload.cc:1327 config/nvptx/mkoffload.cc:850
  #, gcc-internal-format
  msgid "cannot open omp_requires file %qs"
  msgstr "Fehler beim Ã–ffnen der omp_requires-Datei %qs"
  
! #: config/gcn/mkoffload.cc:1331 config/nvptx/mkoffload.cc:854
  #, gcc-internal-format
  msgid "cannot read omp_requires file %qs"
  msgstr "Fehler beim Lesen der omp_requires-Datei %qs"
--- 41339,41350 ----
  msgid "cannot open %qs"
  msgstr "%qs kann nicht geÃ¶ffnet werden"
  
! #: config/gcn/mkoffload.cc:1327 config/nvptx/mkoffload.cc:856
  #, gcc-internal-format
  msgid "cannot open omp_requires file %qs"
  msgstr "Fehler beim Ã–ffnen der omp_requires-Datei %qs"
  
! #: config/gcn/mkoffload.cc:1331 config/nvptx/mkoffload.cc:860
  #, gcc-internal-format
  msgid "cannot read omp_requires file %qs"
  msgstr "Fehler beim Lesen der omp_requires-Datei %qs"
*************** msgstr "%qs ist kein gÃ¼ltiges Basisregi
*** 41990,41997 ****
  msgid "%<-fcf-protection=full%> is not enabled by %<-fhardened%> because it was specified on the command line"
  msgstr "%<-fcf-protection=full%> wird von %<-fhardened%> nicht aktiviert, da es in der Befehlszeile angegeben wurde"
  
! #: config/i386/i386-options.cc:3277 config/riscv/riscv.cc:10651
! #: config/riscv/riscv.cc:10655
  #, gcc-internal-format
  msgid "%<-fcf-protection%> is not compatible with this target"
  msgstr "%<-fcf-protection%> ist nicht mit diesem Ziel kompatibel"
--- 41998,42005 ----
  msgid "%<-fcf-protection=full%> is not enabled by %<-fhardened%> because it was specified on the command line"
  msgstr "%<-fcf-protection=full%> wird von %<-fhardened%> nicht aktiviert, da es in der Befehlszeile angegeben wurde"
  
! #: config/i386/i386-options.cc:3277 config/riscv/riscv.cc:10660
! #: config/riscv/riscv.cc:10664
  #, gcc-internal-format
  msgid "%<-fcf-protection%> is not compatible with this target"
  msgstr "%<-fcf-protection%> ist nicht mit diesem Ziel kompatibel"
*************** msgstr "%<-fsplit-stack%> unterstÃ¼tzt n
*** 42316,42387 ****
  msgid "%<-fsplit-stack%> does not support 3 register parameters"
  msgstr "%<-fsplit-stack%> unterstÃ¼tzt nicht 3 Registerparameter"
  
! #: config/i386/i386.cc:13437
  #, gcc-internal-format
  msgid "%<V%> modifier on non-integer register"
  msgstr "%<V%>-Modifikator an nicht-ganzzahligem Register"
  
! #: config/i386/i386.cc:13448 config/i386/i386.cc:13462
  #, gcc-internal-format
  msgid "unsupported size for integer register"
  msgstr "nicht unterstÃ¼tzte GrÃ¶ÃŸe fÃ¼r Ganzzahlregister"
  
! #: config/i386/i386.cc:13494
  #, gcc-internal-format
  msgid "extended registers have no high halves"
  msgstr "erweiterte Register haben keine oberen HÃ¤lften"
  
! #: config/i386/i386.cc:13509
  #, gcc-internal-format
  msgid "unsupported operand size for extended register"
  msgstr "nicht unterstÃ¼tzte OperandengrÃ¶ÃŸe fÃ¼r erweitertes Register"
  
! #: config/i386/i386.cc:13707 config/i386/i386.cc:13709
  #, gcc-internal-format
  msgid "non-integer operand used with operand code %<z%>"
  msgstr "Nicht-Ganzzahl-Operand mit Operandencode %<z%> verwendet"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90164
! #: config/i386/i386.cc:17917
  #, gcc-internal-format
  msgid "empty class %qT parameter passing ABI changes in %<-fabi-version=12%> (GCC 8)"
  msgstr "das ABI zum Ãœbergeben von leeren Klassen (%qT) als Parametern hat sich mit %<-fabi-version=12%> (GCC 8) geÃ¤ndert"
  
! #: config/i386/i386.cc:23148
  msgid "the alignment of %<_Atomic %T%> fields changed in %{GCC 11.1%}"
  msgstr "die Ausrichtung von %<_Atomic %T%>-Feldern wurde mit %{GCC 11.1%} geÃ¤ndert"
  
! #: config/i386/i386.cc:23235
  #, gcc-internal-format
  msgid "no register available for profiling %<-mcmodel=large%s%>"
  msgstr "kein Register fÃ¼r die Profilerstellung von %<-mcmodel=large%s%> verfÃ¼gbar"
  
! #: config/i386/i386.cc:23331
  #, gcc-internal-format
  msgid "profiling %<-mcmodel=large%> with PIC is not supported"
  msgstr "Profiling von %<-mcmodel=large%> wird mit PIC nicht unterstÃ¼tzt"
  
! #: config/i386/i386.cc:24046
  #, gcc-internal-format
  msgid "%<__bfloat16%> is redefined from typedef %<short%> to real %<__bf16%> since GCC 13.1, be careful of implicit conversion between %<__bf16%> and %<short%>; an explicit bitcast may be needed here"
  msgstr "%<__bfloat16%> ist seit GCC 13.1 von typedef %<short%> zum echten %<__bf16%> umdefiniert, Vorsicht bei impliziter Konvertierung zwischen %<__bf16%> und %<short%>; hier kann ein explizites Bitcast nÃ¶tig sein"
  
! #: config/i386/i386.cc:25580
  #, gcc-internal-format
  msgid "unknown architecture specific memory model"
  msgstr "Unbekanntes architekturspezifisches Speichermodell"
  
! #: config/i386/i386.cc:25587
  #, gcc-internal-format
  msgid "%<HLE_ACQUIRE%> not used with %<ACQUIRE%> or stronger memory model"
  msgstr "%<HLE_ACQUIRE%> wird mit %<ACQUIRE%> oder stÃ¤rkerem Speichermodell nicht verwendet"
  
! #: config/i386/i386.cc:25594
  #, gcc-internal-format
  msgid "%<HLE_RELEASE%> not used with %<RELEASE%> or stronger memory model"
  msgstr "%<HLE_RELEASE%> wird mit %<RELEASE%> oder stÃ¤rkerem Speichermodell nicht verwendet"
  
! #: config/i386/i386.cc:26281
  #, gcc-internal-format
  msgid "%<-fexcess-precision=16%> is not compatible with %<-mfpmath=387%>"
  msgstr "%<-fexcess-precision=16%> ist nicht mit %<-mfpmath=387%> kompatibel"
--- 42324,42395 ----
  msgid "%<-fsplit-stack%> does not support 3 register parameters"
  msgstr "%<-fsplit-stack%> unterstÃ¼tzt nicht 3 Registerparameter"
  
! #: config/i386/i386.cc:13439
  #, gcc-internal-format
  msgid "%<V%> modifier on non-integer register"
  msgstr "%<V%>-Modifikator an nicht-ganzzahligem Register"
  
! #: config/i386/i386.cc:13450 config/i386/i386.cc:13464
  #, gcc-internal-format
  msgid "unsupported size for integer register"
  msgstr "nicht unterstÃ¼tzte GrÃ¶ÃŸe fÃ¼r Ganzzahlregister"
  
! #: config/i386/i386.cc:13496
  #, gcc-internal-format
  msgid "extended registers have no high halves"
  msgstr "erweiterte Register haben keine oberen HÃ¤lften"
  
! #: config/i386/i386.cc:13511
  #, gcc-internal-format
  msgid "unsupported operand size for extended register"
  msgstr "nicht unterstÃ¼tzte OperandengrÃ¶ÃŸe fÃ¼r erweitertes Register"
  
! #: config/i386/i386.cc:13709 config/i386/i386.cc:13711
  #, gcc-internal-format
  msgid "non-integer operand used with operand code %<z%>"
  msgstr "Nicht-Ganzzahl-Operand mit Operandencode %<z%> verwendet"
  
  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90164
! #: config/i386/i386.cc:17919
  #, gcc-internal-format
  msgid "empty class %qT parameter passing ABI changes in %<-fabi-version=12%> (GCC 8)"
  msgstr "das ABI zum Ãœbergeben von leeren Klassen (%qT) als Parametern hat sich mit %<-fabi-version=12%> (GCC 8) geÃ¤ndert"
  
! #: config/i386/i386.cc:23150
  msgid "the alignment of %<_Atomic %T%> fields changed in %{GCC 11.1%}"
  msgstr "die Ausrichtung von %<_Atomic %T%>-Feldern wurde mit %{GCC 11.1%} geÃ¤ndert"
  
! #: config/i386/i386.cc:23237
  #, gcc-internal-format
  msgid "no register available for profiling %<-mcmodel=large%s%>"
  msgstr "kein Register fÃ¼r die Profilerstellung von %<-mcmodel=large%s%> verfÃ¼gbar"
  
! #: config/i386/i386.cc:23333
  #, gcc-internal-format
  msgid "profiling %<-mcmodel=large%> with PIC is not supported"
  msgstr "Profiling von %<-mcmodel=large%> wird mit PIC nicht unterstÃ¼tzt"
  
! #: config/i386/i386.cc:24048
  #, gcc-internal-format
  msgid "%<__bfloat16%> is redefined from typedef %<short%> to real %<__bf16%> since GCC 13.1, be careful of implicit conversion between %<__bf16%> and %<short%>; an explicit bitcast may be needed here"
  msgstr "%<__bfloat16%> ist seit GCC 13.1 von typedef %<short%> zum echten %<__bf16%> umdefiniert, Vorsicht bei impliziter Konvertierung zwischen %<__bf16%> und %<short%>; hier kann ein explizites Bitcast nÃ¶tig sein"
  
! #: config/i386/i386.cc:25578
  #, gcc-internal-format
  msgid "unknown architecture specific memory model"
  msgstr "Unbekanntes architekturspezifisches Speichermodell"
  
! #: config/i386/i386.cc:25585
  #, gcc-internal-format
  msgid "%<HLE_ACQUIRE%> not used with %<ACQUIRE%> or stronger memory model"
  msgstr "%<HLE_ACQUIRE%> wird mit %<ACQUIRE%> oder stÃ¤rkerem Speichermodell nicht verwendet"
  
! #: config/i386/i386.cc:25592
  #, gcc-internal-format
  msgid "%<HLE_RELEASE%> not used with %<RELEASE%> or stronger memory model"
  msgstr "%<HLE_RELEASE%> wird mit %<RELEASE%> oder stÃ¤rkerem Speichermodell nicht verwendet"
  
! #: config/i386/i386.cc:26279
  #, gcc-internal-format
  msgid "%<-fexcess-precision=16%> is not compatible with %<-mfpmath=387%>"
  msgstr "%<-fexcess-precision=16%> ist nicht mit %<-mfpmath=387%> kompatibel"
*************** msgstr "keine Multilib-fÃ¤hige ABI %qs k
*** 42556,42562 ****
  #: config/loongarch/loongarch-opts.cc:533
  #, gcc-internal-format
  msgid "ABI %qs is not enabled at configure-time, the linker might report an error"
! msgstr "ABI %qs ist zur Konfigurationszeit nicht aktiviert, der Linker meldet mÃ¶glicherweise einen Fehler"
  
  #: config/loongarch/loongarch-opts.cc:536
  #, gcc-internal-format, gfc-internal-format
--- 42564,42570 ----
  #: config/loongarch/loongarch-opts.cc:533
  #, gcc-internal-format
  msgid "ABI %qs is not enabled at configure-time, the linker might report an error"
! msgstr "ABI %qs ist zur Konfigurationszeit nicht aktiviert, der Binder meldet mÃ¶glicherweise einen Fehler"
  
  #: config/loongarch/loongarch-opts.cc:536
  #, gcc-internal-format, gfc-internal-format
*************** msgstr "Codemodell %qs ist inkompatibel
*** 42578,42585 ****
  msgid "%qs cannot be used for compiling a shared library"
  msgstr "%qs kann nicht zum Ãœbersetzen einer gemeinsam genutzten Bibliothek verwendet werden"
  
! #: config/loongarch/loongarch-target-attr.cc:246 config/s390/s390.cc:16727
! #: config/s390/s390.cc:16777 config/s390/s390.cc:16794
  #, gcc-internal-format
  msgid "attribute %<target%> argument %qs is unknown"
  msgstr "beim Attribut %<target%> ist das Argument %qs unbekannt"
--- 42586,42593 ----
  msgid "%qs cannot be used for compiling a shared library"
  msgstr "%qs kann nicht zum Ãœbersetzen einer gemeinsam genutzten Bibliothek verwendet werden"
  
! #: config/loongarch/loongarch-target-attr.cc:246 config/s390/s390.cc:16754
! #: config/s390/s390.cc:16804 config/s390/s390.cc:16821
  #, gcc-internal-format
  msgid "attribute %<target%> argument %qs is unknown"
  msgstr "beim Attribut %<target%> ist das Argument %qs unbekannt"
*************** msgstr "%<interrupt_thread%> ist nur auf
*** 42700,42706 ****
  msgid "stack limit expression is not supported"
  msgstr "Ausdruck der Stapelgrenze wird nicht unterstÃ¼tzt"
  
! #: config/m68k/m68k.cc:7175 config/s390/s390.cc:17417
  #, gcc-internal-format
  msgid "%<-fexcess-precision=16%> is not supported on this target"
  msgstr "%<-fexcess-precision=16%> wird auf diesem Ziel nicht unterstÃ¼tzt"
--- 42708,42714 ----
  msgid "stack limit expression is not supported"
  msgstr "Ausdruck der Stapelgrenze wird nicht unterstÃ¼tzt"
  
! #: config/m68k/m68k.cc:7175 config/s390/s390.cc:17444
  #, gcc-internal-format
  msgid "%<-fexcess-precision=16%> is not supported on this target"
  msgstr "%<-fexcess-precision=16%> wird auf diesem Ziel nicht unterstÃ¼tzt"
*************** msgstr "%<-fexcess-precision=16%> wird a
*** 42710,42741 ****
  msgid "initialized variable %q+D is marked dllimport"
  msgstr "initialisierte Variable %q+D ist als Â»dllimportÂ« markiert"
  
! #: config/microblaze/microblaze.cc:1760
  #, gcc-internal-format
  msgid "%<-fPIC%>/%<-fpic%> not supported for this target"
  msgstr "%<-fPIC%>/%<-fpic%> werden fÃ¼r dieses Ziel nicht unterstÃ¼tzt"
  
! #: config/microblaze/microblaze.cc:1772
  #, gcc-internal-format
  msgid "%qs is an invalid argument to %<-mcpu=%>"
  msgstr "%qs ist ein ungÃ¼ltiges Argument fÃ¼r %<-mcpu=%>"
  
! #: config/microblaze/microblaze.cc:1821
  #, gcc-internal-format
  msgid "%<-mxl-multiply-high%> can be used only with %<-mcpu=v6.00.a%> or greater"
  msgstr "%<-mxl-multiply-high%> kann nur mit %<-mcpu=v6.00.a%> oder hÃ¶her verwendet werden"
  
! #: config/microblaze/microblaze.cc:1838
  #, gcc-internal-format
  msgid "%<-mxl-reorder%> can be used only with %<-mcpu=v8.30.a%> or greater"
  msgstr "%<-mxl-reorder%> kann nur mit %<-mcpu=v8.30.a%> oder hÃ¶her verwendet werden"
  
! #: config/microblaze/microblaze.cc:1845
  #, gcc-internal-format
  msgid "%<-mxl-reorder%> requires %<-mxl-pattern-compare%> for %<-mcpu=v8.30.a%>"
  msgstr "%<-mxl-reorder%> erfordert %<-mxl-pattern-compare%> fÃ¼r %<-mcpu=v8.30.a%>"
  
! #: config/microblaze/microblaze.cc:1851
  #, gcc-internal-format
  msgid "%<-mxl-multiply-high%> requires %<-mno-xl-soft-mul%>"
  msgstr "%<-mxl-multiply-high%> erfordert %<-mno-xl-soft-mul%>"
--- 42718,42749 ----
  msgid "initialized variable %q+D is marked dllimport"
  msgstr "initialisierte Variable %q+D ist als Â»dllimportÂ« markiert"
  
! #: config/microblaze/microblaze.cc:1764
  #, gcc-internal-format
  msgid "%<-fPIC%>/%<-fpic%> not supported for this target"
  msgstr "%<-fPIC%>/%<-fpic%> werden fÃ¼r dieses Ziel nicht unterstÃ¼tzt"
  
! #: config/microblaze/microblaze.cc:1776
  #, gcc-internal-format
  msgid "%qs is an invalid argument to %<-mcpu=%>"
  msgstr "%qs ist ein ungÃ¼ltiges Argument fÃ¼r %<-mcpu=%>"
  
! #: config/microblaze/microblaze.cc:1825
  #, gcc-internal-format
  msgid "%<-mxl-multiply-high%> can be used only with %<-mcpu=v6.00.a%> or greater"
  msgstr "%<-mxl-multiply-high%> kann nur mit %<-mcpu=v6.00.a%> oder hÃ¶her verwendet werden"
  
! #: config/microblaze/microblaze.cc:1842
  #, gcc-internal-format
  msgid "%<-mxl-reorder%> can be used only with %<-mcpu=v8.30.a%> or greater"
  msgstr "%<-mxl-reorder%> kann nur mit %<-mcpu=v8.30.a%> oder hÃ¶her verwendet werden"
  
! #: config/microblaze/microblaze.cc:1849
  #, gcc-internal-format
  msgid "%<-mxl-reorder%> requires %<-mxl-pattern-compare%> for %<-mcpu=v8.30.a%>"
  msgstr "%<-mxl-reorder%> erfordert %<-mxl-pattern-compare%> fÃ¼r %<-mcpu=v8.30.a%>"
  
! #: config/microblaze/microblaze.cc:1855
  #, gcc-internal-format
  msgid "%<-mxl-multiply-high%> requires %<-mno-xl-soft-mul%>"
  msgstr "%<-mxl-multiply-high%> erfordert %<-mno-xl-soft-mul%>"
*************** msgstr "Datei %s kann nicht gelÃ¶scht we
*** 43515,43561 ****
  msgid "malformed ptx file"
  msgstr "kaputte PTX-Datei"
  
! #: config/nvptx/mkoffload.cc:336
  #, gcc-internal-format
  msgid "%<omp requires reverse_offload%> requires at least %<sm_35%> for %<-foffload-options=nvptx-none=-march=%> - disabling offload-code generation for this device type"
  msgstr "%<omp requires reverse_offload%> erfordert mindestens %<sm_35%> fÃ¼r %<-foffload-options=nvptx-none=-march=%> â€“ fÃ¼r diesen GerÃ¤tetyp wird die Offload-Codegenerierung ausgeschaltet"
  
! #: config/nvptx/mkoffload.cc:420 config/nvptx/mkoffload.cc:492
  #, gcc-internal-format
  msgid "Cannot find function declaration for %qs"
  msgstr "Funktionsdeklaration fÃ¼r %qs kann nicht gefunden werden"
  
! #: config/nvptx/mkoffload.cc:592
  #, gcc-internal-format
  msgid "environment variable COLLECT_GCC_OPTIONS must be set"
  msgstr "Umgebungsvariable COLLECT_GCC_OPTIONS muss gesetzt sein"
  
! #: config/nvptx/mkoffload.cc:613
  #, gcc-internal-format
  msgid "%<-foffload-abi-host-opts%> not specified."
  msgstr "%<-foffload-abi-host-opts%> ist nicht angegeben."
  
! #: config/nvptx/mkoffload.cc:644
  #, gcc-internal-format
  msgid "COLLECT_GCC must be set."
  msgstr "COLLECT_GCC muss gesetzt sein."
  
! #: config/nvptx/mkoffload.cc:692
  #, gcc-internal-format
  msgid "offload compiler %s not found (consider using %<-B%>)"
  msgstr "Offload-Compiler %s nicht gefunden (erwÃ¤gen Sie %<-B%>)"
  
! #: config/nvptx/mkoffload.cc:715
  #, gcc-internal-format
  msgid "unrecognizable argument of option "
  msgstr "nicht erkanntes Kommandozeilenargument von Option "
  
! #: config/nvptx/mkoffload.cc:804
  #, gcc-internal-format, gfc-internal-format
  msgid "cannot open '%s'"
  msgstr "Â»%sÂ« kann nicht geÃ¶ffnet werden"
  
! #: config/nvptx/mkoffload.cc:860
  #, gcc-internal-format
  msgid "cannot open intermediate ptx file"
  msgstr "zwischenzeitliche ptx-Datei kann nicht geÃ¶ffnet werden"
--- 43523,43569 ----
  msgid "malformed ptx file"
  msgstr "kaputte PTX-Datei"
  
! #: config/nvptx/mkoffload.cc:339
  #, gcc-internal-format
  msgid "%<omp requires reverse_offload%> requires at least %<sm_35%> for %<-foffload-options=nvptx-none=-march=%> - disabling offload-code generation for this device type"
  msgstr "%<omp requires reverse_offload%> erfordert mindestens %<sm_35%> fÃ¼r %<-foffload-options=nvptx-none=-march=%> â€“ fÃ¼r diesen GerÃ¤tetyp wird die Offload-Codegenerierung ausgeschaltet"
  
! #: config/nvptx/mkoffload.cc:426 config/nvptx/mkoffload.cc:498
  #, gcc-internal-format
  msgid "Cannot find function declaration for %qs"
  msgstr "Funktionsdeklaration fÃ¼r %qs kann nicht gefunden werden"
  
! #: config/nvptx/mkoffload.cc:598
  #, gcc-internal-format
  msgid "environment variable COLLECT_GCC_OPTIONS must be set"
  msgstr "Umgebungsvariable COLLECT_GCC_OPTIONS muss gesetzt sein"
  
! #: config/nvptx/mkoffload.cc:619
  #, gcc-internal-format
  msgid "%<-foffload-abi-host-opts%> not specified."
  msgstr "%<-foffload-abi-host-opts%> ist nicht angegeben."
  
! #: config/nvptx/mkoffload.cc:650
  #, gcc-internal-format
  msgid "COLLECT_GCC must be set."
  msgstr "COLLECT_GCC muss gesetzt sein."
  
! #: config/nvptx/mkoffload.cc:698
  #, gcc-internal-format
  msgid "offload compiler %s not found (consider using %<-B%>)"
  msgstr "Offload-Compiler %s nicht gefunden (erwÃ¤gen Sie %<-B%>)"
  
! #: config/nvptx/mkoffload.cc:721
  #, gcc-internal-format
  msgid "unrecognizable argument of option "
  msgstr "nicht erkanntes Kommandozeilenargument von Option "
  
! #: config/nvptx/mkoffload.cc:810
  #, gcc-internal-format, gfc-internal-format
  msgid "cannot open '%s'"
  msgstr "Â»%sÂ« kann nicht geÃ¶ffnet werden"
  
! #: config/nvptx/mkoffload.cc:866
  #, gcc-internal-format
  msgid "cannot open intermediate ptx file"
  msgstr "zwischenzeitliche ptx-Datei kann nicht geÃ¶ffnet werden"
*************** msgstr "zwischenzeitliche ptx-Datei kann
*** 43565,43646 ****
  msgid "option %s is not supported together with %<-fopenacc%>"
  msgstr "Option Â»%sÂ« wird zusammen mit %<-fopenacc%> nicht unterstÃ¼tzt"
  
! #: config/nvptx/nvptx.cc:342
  #, gcc-internal-format
  msgid "PTX version (%<-mptx%>) needs to be at least %s to support selected %<-misa%> (sm_%s)"
  msgstr "PTX-Version %<-mptx%> muss mindestens %s sein, um die ausgewÃ¤hlte %<-misa%> (sm_%s) zu unterstÃ¼tzen"
  
! #: config/nvptx/nvptx.cc:359
  #, gcc-internal-format
  msgid "%<-march=%> must be specified"
  msgstr "%<-march=%> muss angegeben werden"
  
! #: config/nvptx/nvptx.cc:382
  #, gcc-internal-format
  msgid "not generating patch area, nops not supported"
  msgstr "Patchbereich wird nicht angelegt, da NOPs nicht unterstÃ¼tzt werden"
  
! #: config/nvptx/nvptx.cc:479
  #, gcc-internal-format
  msgid "static initialization of variable %q+D in %<.shared%> memory is not supported"
  msgstr "statische Initialisierung der Variablen %q+D in %<.shared%>-Speicher wird nicht unterstÃ¼tzt"
  
! #: config/nvptx/nvptx.cc:2409
  #, gcc-internal-format
  msgid "cannot emit unaligned pointers in ptx assembly"
  msgstr "in PTX-Assembler kÃ¶nnen keine unausgerichteten Zeiger erzeugt werden"
  
! #: config/nvptx/nvptx.cc:2659
  #, gcc-internal-format
  msgid "PTX does not support weak declarations (only weak definitions)"
  msgstr "PTX unterstÃ¼tzt keine schwachen Deklarationen (nur schwache Definitionen)"
  
! #: config/nvptx/nvptx.cc:5900
  #, gcc-internal-format
  msgid "%qE attribute requires a void return type"
  msgstr "Attribut %qE erfordert den RÃ¼ckgabetyp Â»voidÂ«"
  
! #: config/nvptx/nvptx.cc:5923
  #, gcc-internal-format
  msgid "%qE attribute not allowed with auto storage class"
  msgstr "Attribut %qE nicht mit Speicherklasse Â»autoÂ« erlaubt"
  
! #: config/nvptx/nvptx.cc:6368
  #, gcc-internal-format
  msgid "barrier value must be within [0,15]"
  msgstr "Barrierenwert muss im Bereich [0, 15] liegen"
  
! #: config/nvptx/nvptx.cc:6381
  #, gcc-internal-format
  msgid "complement argument must be constant"
  msgstr "Komplement-Argument muss eine Konstante sein"
  
! #: config/nvptx/nvptx.cc:6721
  #, gcc-internal-format
  msgid "using %<vector_length (%d)%> due to call to vector-partitionable routine, ignoring %d"
  msgstr "%<vector_length (%d)%> wird verwendet, da eine vektor-partitionierbare Routine aufgerufen wird, %d wird ignoriert"
  
! #: config/nvptx/nvptx.cc:6729
  #, gcc-internal-format
  msgid "using %<vector_length (%d)%>, ignoring runtime setting"
  msgstr "%<vector_length (%d)%> wird verwendet, Laufzeiteinstellung wird ignoriert"
  
! #: config/nvptx/nvptx.cc:6743
  #, gcc-internal-format
  msgid "using %<vector_length (%d)%>, ignoring %d"
  msgstr "%<vector_length (%d)%> wird verwendet, %d wird ignoriert"
  
! #: config/nvptx/nvptx.cc:7629
  #, gcc-internal-format
  msgid "variable %qD adjusted for OpenACC privatization level: %qs"
  msgstr "Variable %qD angepasst fÃ¼r OpenACC-Privatisierungsgrad: %qs"
  
! #: config/nvptx/nvptx.cc:7768
  #, gcc-internal-format
  msgid "weak alias definitions not supported in this configuration"
  msgstr "schwache Alias-Definitionen werden in dieser Konfiguration nicht unterstÃ¼tzt"
  
! #: config/nvptx/nvptx.cc:7781
  #, gcc-internal-format
  msgid "non-function alias definitions not supported in this configuration"
  msgstr "Alias-Definitionen werden in dieser Konfiguration nur fÃ¼r Funktionen unterstÃ¼tzt"
--- 43573,43654 ----
  msgid "option %s is not supported together with %<-fopenacc%>"
  msgstr "Option Â»%sÂ« wird zusammen mit %<-fopenacc%> nicht unterstÃ¼tzt"
  
! #: config/nvptx/nvptx.cc:348
  #, gcc-internal-format
  msgid "PTX version (%<-mptx%>) needs to be at least %s to support selected %<-misa%> (sm_%s)"
  msgstr "PTX-Version %<-mptx%> muss mindestens %s sein, um die ausgewÃ¤hlte %<-misa%> (sm_%s) zu unterstÃ¼tzen"
  
! #: config/nvptx/nvptx.cc:365
  #, gcc-internal-format
  msgid "%<-march=%> must be specified"
  msgstr "%<-march=%> muss angegeben werden"
  
! #: config/nvptx/nvptx.cc:388
  #, gcc-internal-format
  msgid "not generating patch area, nops not supported"
  msgstr "Patchbereich wird nicht angelegt, da NOPs nicht unterstÃ¼tzt werden"
  
! #: config/nvptx/nvptx.cc:485
  #, gcc-internal-format
  msgid "static initialization of variable %q+D in %<.shared%> memory is not supported"
  msgstr "statische Initialisierung der Variablen %q+D in %<.shared%>-Speicher wird nicht unterstÃ¼tzt"
  
! #: config/nvptx/nvptx.cc:2415
  #, gcc-internal-format
  msgid "cannot emit unaligned pointers in ptx assembly"
  msgstr "in PTX-Assembler kÃ¶nnen keine unausgerichteten Zeiger erzeugt werden"
  
! #: config/nvptx/nvptx.cc:2665
  #, gcc-internal-format
  msgid "PTX does not support weak declarations (only weak definitions)"
  msgstr "PTX unterstÃ¼tzt keine schwachen Deklarationen (nur schwache Definitionen)"
  
! #: config/nvptx/nvptx.cc:5906
  #, gcc-internal-format
  msgid "%qE attribute requires a void return type"
  msgstr "Attribut %qE erfordert den RÃ¼ckgabetyp Â»voidÂ«"
  
! #: config/nvptx/nvptx.cc:5929
  #, gcc-internal-format
  msgid "%qE attribute not allowed with auto storage class"
  msgstr "Attribut %qE nicht mit Speicherklasse Â»autoÂ« erlaubt"
  
! #: config/nvptx/nvptx.cc:6374
  #, gcc-internal-format
  msgid "barrier value must be within [0,15]"
  msgstr "Barrierenwert muss im Bereich [0, 15] liegen"
  
! #: config/nvptx/nvptx.cc:6387
  #, gcc-internal-format
  msgid "complement argument must be constant"
  msgstr "Komplement-Argument muss eine Konstante sein"
  
! #: config/nvptx/nvptx.cc:6727
  #, gcc-internal-format
  msgid "using %<vector_length (%d)%> due to call to vector-partitionable routine, ignoring %d"
  msgstr "%<vector_length (%d)%> wird verwendet, da eine vektor-partitionierbare Routine aufgerufen wird, %d wird ignoriert"
  
! #: config/nvptx/nvptx.cc:6735
  #, gcc-internal-format
  msgid "using %<vector_length (%d)%>, ignoring runtime setting"
  msgstr "%<vector_length (%d)%> wird verwendet, Laufzeiteinstellung wird ignoriert"
  
! #: config/nvptx/nvptx.cc:6749
  #, gcc-internal-format
  msgid "using %<vector_length (%d)%>, ignoring %d"
  msgstr "%<vector_length (%d)%> wird verwendet, %d wird ignoriert"
  
! #: config/nvptx/nvptx.cc:7635
  #, gcc-internal-format
  msgid "variable %qD adjusted for OpenACC privatization level: %qs"
  msgstr "Variable %qD angepasst fÃ¼r OpenACC-Privatisierungsgrad: %qs"
  
! #: config/nvptx/nvptx.cc:7774
  #, gcc-internal-format
  msgid "weak alias definitions not supported in this configuration"
  msgstr "schwache Alias-Definitionen werden in dieser Konfiguration nicht unterstÃ¼tzt"
  
! #: config/nvptx/nvptx.cc:7787
  #, gcc-internal-format
  msgid "non-function alias definitions not supported in this configuration"
  msgstr "Alias-Definitionen werden in dieser Konfiguration nur fÃ¼r Funktionen unterstÃ¼tzt"
*************** msgstr "%<target()%>-Attribut: tune ersc
*** 43810,43816 ****
  #: config/riscv/riscv-target-attr.cc:228
  #, gcc-internal-format
  msgid "%<target()%> attribute: unknown TUNE %qs"
! msgstr "%<Ziel()%>-Attribut: unbekanntes TUNE %qs"
  
  #: config/riscv/riscv-target-attr.cc:241
  #, gcc-internal-format
--- 43818,43824 ----
  #: config/riscv/riscv-target-attr.cc:228
  #, gcc-internal-format
  msgid "%<target()%> attribute: unknown TUNE %qs"
! msgstr "%<target()%>-Attribut: unbekanntes TUNE %qs"
  
  #: config/riscv/riscv-target-attr.cc:241
  #, gcc-internal-format
*************** msgstr "%qs erfordert eine konstante Gan
*** 44049,44144 ****
  msgid "invalid RVV vector size %qd, expected size is %qd based on LMUL of type and %qs"
  msgstr "ungÃ¼ltige RVV-VektorgrÃ¶ÃŸe %qd, erwartete GrÃ¶ÃŸe ist %qd basierend auf LMUL des Typs und %qs"
  
! #: config/riscv/riscv.cc:10571
  #, gcc-internal-format
  msgid "%<-mdiv%> requires %<-march%> to subsume the %<M%> extension"
  msgstr "%<-mdiv%> erfordert %<-march%>, um die %<M%>-Erweiterung zu ermitteln"
  
! #: config/riscv/riscv.cc:10576
  #, gcc-internal-format
  msgid "Currently the %<V%> implementation requires the %<M%> extension"
  msgstr "Derzeit erfordert die %<V%>-Implementierung die %<M%>-Erweiterung"
  
! #: config/riscv/riscv.cc:10636
  #, gcc-internal-format
  msgid "Current RISC-V GCC does not support VLEN greater than 4096bit for 'V' Extension"
  msgstr "Der aktuelle RISC-V-GCC unterstÃ¼tzt keine VLEN grÃ¶ÃŸer als 4096bit fÃ¼r die Erweiterung Â»VÂ«"
  
! #: config/riscv/riscv.cc:10642
  #, gcc-internal-format
  msgid "Current RISC-V GCC does not support RVV in big-endian mode"
  msgstr "Der aktuelle RISC-V-GCC unterstÃ¼tzt RVV im Big-Endian-Modus nicht"
  
! #: config/riscv/riscv.cc:10682 config/riscv/riscv.cc:10685
  #, gcc-internal-format
  msgid "code model %qs with %qs"
  msgstr "Codemodell %qs mit %qs"
  
! #: config/riscv/riscv.cc:10714
  #, gcc-internal-format
  msgid "requested ABI requires %<-march%> to subsume the %qc extension"
  msgstr "die angeforderte ABI erfordert %<-march%>, um die %qc-Erweiterung zu ermitteln"
  
! #: config/riscv/riscv.cc:10721
  #, gcc-internal-format
  msgid "rv32e requires ilp32e ABI"
  msgstr "rv32e erfordert die ilp32e-ABI"
  
! #: config/riscv/riscv.cc:10723
  #, gcc-internal-format
  msgid "rv64e requires lp64e ABI"
  msgstr "rv64e erfordert lp64e-ABI"
  
! #: config/riscv/riscv.cc:10728
  #, gcc-internal-format
  msgid "ILP32E ABI does not support the %qc extension"
  msgstr "ILP32E ABI unterstÃ¼tzt die %qc-Erweiterung nicht"
  
! #: config/riscv/riscv.cc:10733
  #, gcc-internal-format
  msgid "LP64E ABI is marked for deprecation in GCC"
  msgstr "das LP64E-ABI ist im GCC als veraltet gekennzeichnet"
  
! #: config/riscv/riscv.cc:10734
  msgid "if you need LP64E please notify the GCC project via %{PR116152%}"
  msgstr "wenn Sie LP64E benÃ¶tigen, benachrichtigen Sie bitte das GCC-Projekt Ã¼ber %{PR116152%}"
  
! #: config/riscv/riscv.cc:10742
  #, gcc-internal-format
  msgid "z*inx requires ABI ilp32, ilp32e, lp64 or lp64e"
  msgstr "z*inx erfordert ABI ilp32, ilp32e, lp64 oder lp64e"
  
! #: config/riscv/riscv.cc:10746
  #, gcc-internal-format
  msgid "ABI requires %<-march=rv%d%>"
  msgstr "ABI erfordert %<-march=rv%d%>"
  
! #: config/riscv/riscv.cc:10756
  #, gcc-internal-format
  msgid "%<-mpreferred-stack-boundary=%d%> must be between %d and %d"
  msgstr "%<-mpreferred-stack-boundary=%d%> muss zwischen %d und %d liegen"
  
! #: config/riscv/riscv.cc:10769
  #, gcc-internal-format
  msgid "%<-mriscv-attribute%> RISC-V ELF attribute requires GNU as 2.32 [%<-mriscv-attribute%>]"
  msgstr "%<-mriscv-attribute%> RISC-V-ELF-Attribut erfordert GNU as 2.32 [%<-mriscv-attribute%>]"
  
! #: config/riscv/riscv.cc:10796 config/rs6000/rs6000.cc:4530
  #, gcc-internal-format
  msgid "%qs is not a valid base register in %qs"
  msgstr "%qs ist in %qs kein gÃ¼ltiges Basisregister"
  
! #: config/riscv/riscv.cc:10810 config/rs6000/rs6000.cc:4513
  #, gcc-internal-format
  msgid "%qs is not a valid number in %qs"
  msgstr "%qs ist in %qs keine gÃ¼ltige Zahl"
  
! #: config/riscv/riscv.cc:11305
  #, gcc-internal-format
  msgid "%qs function cannot have different interrupt type"
  msgstr "%qs-Funktion kann keine andere Interrupt-Art haben"
  
! #: config/riscv/riscv.cc:11880
  #, gcc-internal-format
  msgid "cannot allocate vl register for %qs on this target"
  msgstr "vl-Register fÃ¼r %qs kann auf diesem Ziel nicht alloziert werden"
--- 44057,44152 ----
  msgid "invalid RVV vector size %qd, expected size is %qd based on LMUL of type and %qs"
  msgstr "ungÃ¼ltige RVV-VektorgrÃ¶ÃŸe %qd, erwartete GrÃ¶ÃŸe ist %qd basierend auf LMUL des Typs und %qs"
  
! #: config/riscv/riscv.cc:10580
  #, gcc-internal-format
  msgid "%<-mdiv%> requires %<-march%> to subsume the %<M%> extension"
  msgstr "%<-mdiv%> erfordert %<-march%>, um die %<M%>-Erweiterung zu ermitteln"
  
! #: config/riscv/riscv.cc:10585
  #, gcc-internal-format
  msgid "Currently the %<V%> implementation requires the %<M%> extension"
  msgstr "Derzeit erfordert die %<V%>-Implementierung die %<M%>-Erweiterung"
  
! #: config/riscv/riscv.cc:10645
  #, gcc-internal-format
  msgid "Current RISC-V GCC does not support VLEN greater than 4096bit for 'V' Extension"
  msgstr "Der aktuelle RISC-V-GCC unterstÃ¼tzt keine VLEN grÃ¶ÃŸer als 4096bit fÃ¼r die Erweiterung Â»VÂ«"
  
! #: config/riscv/riscv.cc:10651
  #, gcc-internal-format
  msgid "Current RISC-V GCC does not support RVV in big-endian mode"
  msgstr "Der aktuelle RISC-V-GCC unterstÃ¼tzt RVV im Big-Endian-Modus nicht"
  
! #: config/riscv/riscv.cc:10691 config/riscv/riscv.cc:10694
  #, gcc-internal-format
  msgid "code model %qs with %qs"
  msgstr "Codemodell %qs mit %qs"
  
! #: config/riscv/riscv.cc:10723
  #, gcc-internal-format
  msgid "requested ABI requires %<-march%> to subsume the %qc extension"
  msgstr "die angeforderte ABI erfordert %<-march%>, um die %qc-Erweiterung zu ermitteln"
  
! #: config/riscv/riscv.cc:10730
  #, gcc-internal-format
  msgid "rv32e requires ilp32e ABI"
  msgstr "rv32e erfordert die ilp32e-ABI"
  
! #: config/riscv/riscv.cc:10732
  #, gcc-internal-format
  msgid "rv64e requires lp64e ABI"
  msgstr "rv64e erfordert lp64e-ABI"
  
! #: config/riscv/riscv.cc:10737
  #, gcc-internal-format
  msgid "ILP32E ABI does not support the %qc extension"
  msgstr "ILP32E ABI unterstÃ¼tzt die %qc-Erweiterung nicht"
  
! #: config/riscv/riscv.cc:10742
  #, gcc-internal-format
  msgid "LP64E ABI is marked for deprecation in GCC"
  msgstr "das LP64E-ABI ist im GCC als veraltet gekennzeichnet"
  
! #: config/riscv/riscv.cc:10743
  msgid "if you need LP64E please notify the GCC project via %{PR116152%}"
  msgstr "wenn Sie LP64E benÃ¶tigen, benachrichtigen Sie bitte das GCC-Projekt Ã¼ber %{PR116152%}"
  
! #: config/riscv/riscv.cc:10751
  #, gcc-internal-format
  msgid "z*inx requires ABI ilp32, ilp32e, lp64 or lp64e"
  msgstr "z*inx erfordert ABI ilp32, ilp32e, lp64 oder lp64e"
  
! #: config/riscv/riscv.cc:10755
  #, gcc-internal-format
  msgid "ABI requires %<-march=rv%d%>"
  msgstr "ABI erfordert %<-march=rv%d%>"
  
! #: config/riscv/riscv.cc:10765
  #, gcc-internal-format
  msgid "%<-mpreferred-stack-boundary=%d%> must be between %d and %d"
  msgstr "%<-mpreferred-stack-boundary=%d%> muss zwischen %d und %d liegen"
  
! #: config/riscv/riscv.cc:10778
  #, gcc-internal-format
  msgid "%<-mriscv-attribute%> RISC-V ELF attribute requires GNU as 2.32 [%<-mriscv-attribute%>]"
  msgstr "%<-mriscv-attribute%> RISC-V-ELF-Attribut erfordert GNU as 2.32 [%<-mriscv-attribute%>]"
  
! #: config/riscv/riscv.cc:10805 config/rs6000/rs6000.cc:4530
  #, gcc-internal-format
  msgid "%qs is not a valid base register in %qs"
  msgstr "%qs ist in %qs kein gÃ¼ltiges Basisregister"
  
! #: config/riscv/riscv.cc:10819 config/rs6000/rs6000.cc:4513
  #, gcc-internal-format
  msgid "%qs is not a valid number in %qs"
  msgstr "%qs ist in %qs keine gÃ¼ltige Zahl"
  
! #: config/riscv/riscv.cc:11314
  #, gcc-internal-format
  msgid "%qs function cannot have different interrupt type"
  msgstr "%qs-Funktion kann keine andere Interrupt-Art haben"
  
! #: config/riscv/riscv.cc:11889
  #, gcc-internal-format
  msgid "cannot allocate vl register for %qs on this target"
  msgstr "vl-Register fÃ¼r %qs kann auf diesem Ziel nicht alloziert werden"
*************** msgstr "das Attribut %<target_clones%> e
*** 44708,44724 ****
  msgid "Virtual function multiversioning not supported"
  msgstr "Multiversionierung virtueller Funktionen wird nicht unterstÃ¼tzt"
  
! #: config/rs6000/rs6000.cc:28798
  #, gcc-internal-format
  msgid "the result for the xxspltidp instruction is undefined for subnormal input values"
  msgstr "das Ergebnis des Befehls xxspltidp ist fÃ¼r denormalisierte Eingabewerte undefiniert"
  
! #: config/rs6000/rs6000.cc:29276
  #, gcc-internal-format
  msgid "type %<__vector_quad%> requires the %qs option"
  msgstr "Typ %<__vector_quad%> erfordert die Option %qs"
  
! #: config/rs6000/rs6000.cc:29281
  #, gcc-internal-format
  msgid "type %<__vector_pair%> requires the %qs option"
  msgstr "Typ %<__vector_pair%> erfordert die Option %qs"
--- 44716,44732 ----
  msgid "Virtual function multiversioning not supported"
  msgstr "Multiversionierung virtueller Funktionen wird nicht unterstÃ¼tzt"
  
! #: config/rs6000/rs6000.cc:28801
  #, gcc-internal-format
  msgid "the result for the xxspltidp instruction is undefined for subnormal input values"
  msgstr "das Ergebnis des Befehls xxspltidp ist fÃ¼r denormalisierte Eingabewerte undefiniert"
  
! #: config/rs6000/rs6000.cc:29279
  #, gcc-internal-format
  msgid "type %<__vector_quad%> requires the %qs option"
  msgstr "Typ %<__vector_quad%> erfordert die Option %qs"
  
! #: config/rs6000/rs6000.cc:29284
  #, gcc-internal-format
  msgid "type %<__vector_pair%> requires the %qs option"
  msgstr "Typ %<__vector_pair%> erfordert die Option %qs"
*************** msgstr "die ParameterÃ¼bergabe fÃ¼r das
*** 44947,45070 ****
  msgid "nested functions cannot be profiled with %<-mfentry%> on s390"
  msgstr "auf s390 kÃ¶nnen geschachtelte Funktionen mit %<-mfentry%> nicht im Profiling verwendet werden"
  
! #: config/s390/s390.cc:16296
  #, gcc-internal-format
  msgid "64-bit ABI not supported in ESA/390 mode"
  msgstr "64-Bit-ABI nicht unterstÃ¼tzt im ESA/390-Modus"
  
! #: config/s390/s390.cc:16303
  #, gcc-internal-format
  msgid "thunk-inline is only supported with %<-mindirect-branch-jump%>"
  msgstr "thunk-inline wird nur mit %<-mindirect-branch-jump%> unterstÃ¼tzt"
  
! #: config/s390/s390.cc:16338
  #, gcc-internal-format, gfc-internal-format
  msgid "hardware vector support not available on %s"
  msgstr "Hardware-VektorunterstÃ¼tzung ist auf %s nicht verfÃ¼gbar"
  
! #: config/s390/s390.cc:16341
  #, gcc-internal-format
  msgid "hardware vector support not available with %<-msoft-float%>"
  msgstr "Hardware-VektorunterstÃ¼tzung ist mit %<-msoft-float%> nicht verfÃ¼gbar"
  
! #: config/s390/s390.cc:16370
  #, gcc-internal-format, gfc-internal-format
  msgid "hardware decimal floating-point instructions not available on %s"
  msgstr "Dezimale Hardware-Gleitkommabefehle sind auf %s nicht verfÃ¼gbar"
  
! #: config/s390/s390.cc:16374
  #, gcc-internal-format
  msgid "hardware decimal floating-point instructions not available in ESA/390 mode"
  msgstr "Dezimale Hardware-Gleitkommabefehle sind im ESA/390-Modus nicht verfÃ¼gbar"
  
! #: config/s390/s390.cc:16386
  #, gcc-internal-format
  msgid "%<-mhard-dfp%> cannot be used in conjunction with %<-msoft-float%>"
  msgstr "%<-mhard-dfp%> kann nicht in Verbindung mit %<-msoft-float%> verwendet werden"
  
! #: config/s390/s390.cc:16395
  #, gcc-internal-format
  msgid "%<-mbackchain%> %<-mpacked-stack%> %<-mhard-float%> are not supported in combination"
  msgstr "die Kombination aus %<-mbackchain%>, %<-mpacked-stack%> und %<-mhard-float%> wird nicht unterstÃ¼tzt"
  
! #: config/s390/s390.cc:16401
  #, gcc-internal-format
  msgid "stack size must be greater than the stack guard value"
  msgstr "StapelgrÃ¶ÃŸe muss grÃ¶ÃŸer als der Stapel-Ãœberwachungswert sein"
  
! #: config/s390/s390.cc:16403
  #, gcc-internal-format
  msgid "stack size must not be greater than 64k"
  msgstr "StapelgrÃ¶ÃŸe darf nicht grÃ¶ÃŸer als 64k sein"
  
! #: config/s390/s390.cc:16406
  #, gcc-internal-format
  msgid "%<-mstack-guard%> implies use of %<-mstack-size%>"
  msgstr "%<-mstack-guard%> bringt %<-mstack-size%> mit sich"
  
! #: config/s390/s390.cc:16419
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-prologue-check%> requires integer in range 0-4095"
  msgstr "%<-mtpf-trace-hook-prologue-check%> erfordert eine Ganzzahl im Bereich von 0 bis 4095"
  
! #: config/s390/s390.cc:16422
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-prologue-target%> requires integer in range 0-4095"
  msgstr "%<-mtpf-trace-hook-prologue-target%> erfordert eine Ganzzahl im Bereich von 0 bis 4095"
  
! #: config/s390/s390.cc:16425
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-epilogue-check%> requires integer in range 0-4095"
  msgstr "%<-mtpf-trace-hook-epilogue-check%> erfordert eine Ganzzahl im Bereich von 0 bis 4095"
  
! #: config/s390/s390.cc:16428
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-epilogue-target%> requires integer in range 0-4095"
  msgstr "%<-mtpf-trace-hook-epilogue-target%> erfordert eine Ganzzahl im Bereich von 0 bis 4095"
  
! #: config/s390/s390.cc:16492
  #, gcc-internal-format
  msgid "%<-mfentry%> is supported only for 64-bit CPUs"
  msgstr "%<-mfentry%> wird nur auf 64-Bit-CPUs unterstÃ¼tzt"
  
  #. argument is not a plain number
! #: config/s390/s390.cc:16528
  #, gcc-internal-format
  msgid "arguments to %qs should be non-negative integers"
  msgstr "Argumente von %qs sollten nicht-negative Ganzzahlen sein"
  
! #: config/s390/s390.cc:16535
  #, gcc-internal-format
  msgid "argument to %qs is too large (max. %d)"
  msgstr "Argument fÃ¼r %qs ist zu groÃŸ (max. %d)"
  
! #: config/s390/s390.cc:16566
  #, gcc-internal-format
  msgid "%<-mno-pic-data-is-text-relative%> cannot be used without %<-fpic%>/%<-fPIC%>"
  msgstr "%<-mno-pic-data-is-text-relative%> kann nur zusammen mit %<-fpic%>/%<-fPIC%> verwendet werden"
  
  #. Value is not allowed for the target attribute.
! #: config/s390/s390.cc:16733
  #, gcc-internal-format
  msgid "value %qs is not supported by attribute %<target%>"
  msgstr "Wert %qs wird von Attribut %<target%> nicht unterstÃ¼tzt"
  
! #: config/s390/s390.cc:17792
  #, gcc-internal-format
  msgid "invalid cc output constraint: %qs"
  msgstr "ungÃ¼ltige cc-AusgabebeschrÃ¤nkung: %qs"
  
! #: config/s390/s390.cc:17797
  #, gcc-internal-format
  msgid "multiple cc output constraints not supported"
  msgstr "mehrere cc-AusgabebeschrÃ¤nkungen nicht unterstÃ¼tzt"
  
! #: config/s390/s390.cc:17802
  #, gcc-internal-format
  msgid "%<asm%> specifier for cc output conflicts with %<asm%> clobber list"
  msgstr "%<asm%>-Spezifizierer fÃ¼r cc-Ausgabe steht in Konflikt mit %<asm%>-Clobber-Liste"
  
! #: config/s390/s390.cc:17808
  #, gcc-internal-format
  msgid "invalid type for cc output constraint"
  msgstr "ungÃ¼ltiger Typ fÃ¼r cc-AusgabebeschrÃ¤nkung"
--- 44955,45078 ----
  msgid "nested functions cannot be profiled with %<-mfentry%> on s390"
  msgstr "auf s390 kÃ¶nnen geschachtelte Funktionen mit %<-mfentry%> nicht im Profiling verwendet werden"
  
! #: config/s390/s390.cc:16323
  #, gcc-internal-format
  msgid "64-bit ABI not supported in ESA/390 mode"
  msgstr "64-Bit-ABI nicht unterstÃ¼tzt im ESA/390-Modus"
  
! #: config/s390/s390.cc:16330
  #, gcc-internal-format
  msgid "thunk-inline is only supported with %<-mindirect-branch-jump%>"
  msgstr "thunk-inline wird nur mit %<-mindirect-branch-jump%> unterstÃ¼tzt"
  
! #: config/s390/s390.cc:16365
  #, gcc-internal-format, gfc-internal-format
  msgid "hardware vector support not available on %s"
  msgstr "Hardware-VektorunterstÃ¼tzung ist auf %s nicht verfÃ¼gbar"
  
! #: config/s390/s390.cc:16368
  #, gcc-internal-format
  msgid "hardware vector support not available with %<-msoft-float%>"
  msgstr "Hardware-VektorunterstÃ¼tzung ist mit %<-msoft-float%> nicht verfÃ¼gbar"
  
! #: config/s390/s390.cc:16397
  #, gcc-internal-format, gfc-internal-format
  msgid "hardware decimal floating-point instructions not available on %s"
  msgstr "Dezimale Hardware-Gleitkommabefehle sind auf %s nicht verfÃ¼gbar"
  
! #: config/s390/s390.cc:16401
  #, gcc-internal-format
  msgid "hardware decimal floating-point instructions not available in ESA/390 mode"
  msgstr "Dezimale Hardware-Gleitkommabefehle sind im ESA/390-Modus nicht verfÃ¼gbar"
  
! #: config/s390/s390.cc:16413
  #, gcc-internal-format
  msgid "%<-mhard-dfp%> cannot be used in conjunction with %<-msoft-float%>"
  msgstr "%<-mhard-dfp%> kann nicht in Verbindung mit %<-msoft-float%> verwendet werden"
  
! #: config/s390/s390.cc:16422
  #, gcc-internal-format
  msgid "%<-mbackchain%> %<-mpacked-stack%> %<-mhard-float%> are not supported in combination"
  msgstr "die Kombination aus %<-mbackchain%>, %<-mpacked-stack%> und %<-mhard-float%> wird nicht unterstÃ¼tzt"
  
! #: config/s390/s390.cc:16428
  #, gcc-internal-format
  msgid "stack size must be greater than the stack guard value"
  msgstr "StapelgrÃ¶ÃŸe muss grÃ¶ÃŸer als der Stapel-Ãœberwachungswert sein"
  
! #: config/s390/s390.cc:16430
  #, gcc-internal-format
  msgid "stack size must not be greater than 64k"
  msgstr "StapelgrÃ¶ÃŸe darf nicht grÃ¶ÃŸer als 64k sein"
  
! #: config/s390/s390.cc:16433
  #, gcc-internal-format
  msgid "%<-mstack-guard%> implies use of %<-mstack-size%>"
  msgstr "%<-mstack-guard%> bringt %<-mstack-size%> mit sich"
  
! #: config/s390/s390.cc:16446
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-prologue-check%> requires integer in range 0-4095"
  msgstr "%<-mtpf-trace-hook-prologue-check%> erfordert eine Ganzzahl im Bereich von 0 bis 4095"
  
! #: config/s390/s390.cc:16449
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-prologue-target%> requires integer in range 0-4095"
  msgstr "%<-mtpf-trace-hook-prologue-target%> erfordert eine Ganzzahl im Bereich von 0 bis 4095"
  
! #: config/s390/s390.cc:16452
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-epilogue-check%> requires integer in range 0-4095"
  msgstr "%<-mtpf-trace-hook-epilogue-check%> erfordert eine Ganzzahl im Bereich von 0 bis 4095"
  
! #: config/s390/s390.cc:16455
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-epilogue-target%> requires integer in range 0-4095"
  msgstr "%<-mtpf-trace-hook-epilogue-target%> erfordert eine Ganzzahl im Bereich von 0 bis 4095"
  
! #: config/s390/s390.cc:16519
  #, gcc-internal-format
  msgid "%<-mfentry%> is supported only for 64-bit CPUs"
  msgstr "%<-mfentry%> wird nur auf 64-Bit-CPUs unterstÃ¼tzt"
  
  #. argument is not a plain number
! #: config/s390/s390.cc:16555
  #, gcc-internal-format
  msgid "arguments to %qs should be non-negative integers"
  msgstr "Argumente von %qs sollten nicht-negative Ganzzahlen sein"
  
! #: config/s390/s390.cc:16562
  #, gcc-internal-format
  msgid "argument to %qs is too large (max. %d)"
  msgstr "Argument fÃ¼r %qs ist zu groÃŸ (max. %d)"
  
! #: config/s390/s390.cc:16593
  #, gcc-internal-format
  msgid "%<-mno-pic-data-is-text-relative%> cannot be used without %<-fpic%>/%<-fPIC%>"
  msgstr "%<-mno-pic-data-is-text-relative%> kann nur zusammen mit %<-fpic%>/%<-fPIC%> verwendet werden"
  
  #. Value is not allowed for the target attribute.
! #: config/s390/s390.cc:16760
  #, gcc-internal-format
  msgid "value %qs is not supported by attribute %<target%>"
  msgstr "Wert %qs wird von Attribut %<target%> nicht unterstÃ¼tzt"
  
! #: config/s390/s390.cc:17819
  #, gcc-internal-format
  msgid "invalid cc output constraint: %qs"
  msgstr "ungÃ¼ltige cc-AusgabebeschrÃ¤nkung: %qs"
  
! #: config/s390/s390.cc:17824
  #, gcc-internal-format
  msgid "multiple cc output constraints not supported"
  msgstr "mehrere cc-AusgabebeschrÃ¤nkungen nicht unterstÃ¼tzt"
  
! #: config/s390/s390.cc:17829
  #, gcc-internal-format
  msgid "%<asm%> specifier for cc output conflicts with %<asm%> clobber list"
  msgstr "%<asm%>-Spezifizierer fÃ¼r cc-Ausgabe steht in Konflikt mit %<asm%>-Clobber-Liste"
  
! #: config/s390/s390.cc:17835
  #, gcc-internal-format
  msgid "invalid type for cc output constraint"
  msgstr "ungÃ¼ltiger Typ fÃ¼r cc-AusgabebeschrÃ¤nkung"
*************** msgstr "Eltern-Unterprogramm kann nicht
*** 45429,45493 ****
  msgid "subprogram %q+F not marked %<Inline%>"
  msgstr "Unterprogramm %q+F nicht als %<Inline%> markiert"
  
! #: ada/gcc-interface/utils.cc:4427
  #, gcc-internal-format
  msgid "invalid element type for attribute %qs"
  msgstr "ungÃ¼ltiger Elementtyp fÃ¼r Attribut %qs"
  
! #: ada/gcc-interface/utils.cc:4451
  #, gcc-internal-format
  msgid "number of components of vector not a power of two"
  msgstr "Komponentenanzahl des Vektors ist keine Zweierpotenz"
  
! #: ada/gcc-interface/utils.cc:6705 ada/gcc-interface/utils.cc:6883
! #: ada/gcc-interface/utils.cc:7123
  #, gcc-internal-format
  msgid "%qs attribute ignored"
  msgstr "Attribut %qs wird ignoriert"
  
! #: ada/gcc-interface/utils.cc:6760
  #, gcc-internal-format
  msgid "%qs attribute without arguments on a non-prototype"
  msgstr "Attribut %qs ohne Argumente fÃ¼r einen Nicht-Prototyp"
  
! #: ada/gcc-interface/utils.cc:6775
  #, gcc-internal-format
  msgid "%qs argument has invalid operand number (argument %lu)"
  msgstr "Argument %qs hat ungÃ¼ltige Operandennummer (Argument %lu)"
  
! #: ada/gcc-interface/utils.cc:6797
  #, gcc-internal-format
  msgid "%qs argument with out-of-range operand number (argument %lu, operand %lu)"
  msgstr "Argument %qs mit Operandennummer auÃŸerhalb des Wertebereiches (Argument %lu, Operand %lu)"
  
! #: ada/gcc-interface/utils.cc:6806
  #, gcc-internal-format
  msgid "%qs argument references non-pointer operand (argument %lu, operand %lu)"
  msgstr "Argument %qs referenziert Nicht-Zeiger-Operanden (Argument %lu, Operand %lu)"
  
! #: ada/gcc-interface/utils.cc:6827
  #, gcc-internal-format
  msgid "%qs attribute requires prototypes with named arguments"
  msgstr "Attribut %qs benÃ¶tigt Prototypen mit benannten Argumenten"
  
! #: ada/gcc-interface/utils.cc:6836
  #, gcc-internal-format
  msgid "%qs attribute only applies to variadic functions"
  msgstr "Attribut %qs gilt nur fÃ¼r variadische Funktionen"
  
! #: ada/gcc-interface/utils.cc:7083 d/d-attribs.cc:362 d/d-attribs.cc:488
  #: rust/rust-attribs.cc:176
  #, gcc-internal-format
  msgid "%qE attribute has no effect"
  msgstr "Attribut %qE hat keinen Effekt"
  
! #: ada/gcc-interface/utils.cc:7418
  #, gcc-internal-format
  msgid "attribute %qs applies to array types only"
  msgstr "Attribut %qs bezieht sich nur auf Arraytypen"
  
! #: c/c-convert.cc:104 c/c-typeck.cc:2730 c/c-typeck.cc:14860 cp/typeck.cc:2520
! #: cp/typeck.cc:9603 cp/typeck.cc:10396 d/d-convert.cc:262
  #, gcc-internal-format
  msgid "void value not ignored as it ought to be"
  msgstr "void-Wert nicht ignoriert wie es sein sollte"
--- 45437,45501 ----
  msgid "subprogram %q+F not marked %<Inline%>"
  msgstr "Unterprogramm %q+F nicht als %<Inline%> markiert"
  
! #: ada/gcc-interface/utils.cc:4429
  #, gcc-internal-format
  msgid "invalid element type for attribute %qs"
  msgstr "ungÃ¼ltiger Elementtyp fÃ¼r Attribut %qs"
  
! #: ada/gcc-interface/utils.cc:4453
  #, gcc-internal-format
  msgid "number of components of vector not a power of two"
  msgstr "Komponentenanzahl des Vektors ist keine Zweierpotenz"
  
! #: ada/gcc-interface/utils.cc:6707 ada/gcc-interface/utils.cc:6885
! #: ada/gcc-interface/utils.cc:7125
  #, gcc-internal-format
  msgid "%qs attribute ignored"
  msgstr "Attribut %qs wird ignoriert"
  
! #: ada/gcc-interface/utils.cc:6762
  #, gcc-internal-format
  msgid "%qs attribute without arguments on a non-prototype"
  msgstr "Attribut %qs ohne Argumente fÃ¼r einen Nicht-Prototyp"
  
! #: ada/gcc-interface/utils.cc:6777
  #, gcc-internal-format
  msgid "%qs argument has invalid operand number (argument %lu)"
  msgstr "Argument %qs hat ungÃ¼ltige Operandennummer (Argument %lu)"
  
! #: ada/gcc-interface/utils.cc:6799
  #, gcc-internal-format
  msgid "%qs argument with out-of-range operand number (argument %lu, operand %lu)"
  msgstr "Argument %qs mit Operandennummer auÃŸerhalb des Wertebereiches (Argument %lu, Operand %lu)"
  
! #: ada/gcc-interface/utils.cc:6808
  #, gcc-internal-format
  msgid "%qs argument references non-pointer operand (argument %lu, operand %lu)"
  msgstr "Argument %qs referenziert Nicht-Zeiger-Operanden (Argument %lu, Operand %lu)"
  
! #: ada/gcc-interface/utils.cc:6829
  #, gcc-internal-format
  msgid "%qs attribute requires prototypes with named arguments"
  msgstr "Attribut %qs benÃ¶tigt Prototypen mit benannten Argumenten"
  
! #: ada/gcc-interface/utils.cc:6838
  #, gcc-internal-format
  msgid "%qs attribute only applies to variadic functions"
  msgstr "Attribut %qs gilt nur fÃ¼r variadische Funktionen"
  
! #: ada/gcc-interface/utils.cc:7085 d/d-attribs.cc:362 d/d-attribs.cc:488
  #: rust/rust-attribs.cc:176
  #, gcc-internal-format
  msgid "%qE attribute has no effect"
  msgstr "Attribut %qE hat keinen Effekt"
  
! #: ada/gcc-interface/utils.cc:7420
  #, gcc-internal-format
  msgid "attribute %qs applies to array types only"
  msgstr "Attribut %qs bezieht sich nur auf Arraytypen"
  
! #: c/c-convert.cc:104 c/c-typeck.cc:2730 c/c-typeck.cc:14877 cp/typeck.cc:2520
! #: cp/typeck.cc:9719 cp/typeck.cc:10512 d/d-convert.cc:262
  #, gcc-internal-format
  msgid "void value not ignored as it ought to be"
  msgstr "void-Wert nicht ignoriert wie es sein sollte"
*************** msgstr "Typ des Arrays %q+D vervollstÃ¤n
*** 45562,45569 ****
  msgid "underspecified declaration of %qE, which is already declared in this scope"
  msgstr "%qE wurde in diesem GÃ¼ltigkeitsbereich bereits deklariert und ist unvollstÃ¤ndig deklariert"
  
! #: c/c-decl.cc:1732 c/c-decl.cc:7925 c/c-decl.cc:8924 c/c-decl.cc:9859
! #: c/c-decl.cc:9865 c/c-decl.cc:10092
  #, gcc-internal-format
  msgid "originally defined here"
  msgstr "ursprÃ¼nglich hier definiert"
--- 45570,45577 ----
  msgid "underspecified declaration of %qE, which is already declared in this scope"
  msgstr "%qE wurde in diesem GÃ¼ltigkeitsbereich bereits deklariert und ist unvollstÃ¤ndig deklariert"
  
! #: c/c-decl.cc:1732 c/c-decl.cc:7925 c/c-decl.cc:8924 c/c-decl.cc:9862
! #: c/c-decl.cc:9868 c/c-decl.cc:10096
  #, gcc-internal-format
  msgid "originally defined here"
  msgstr "ursprÃ¼nglich hier definiert"
*************** msgstr "%qE nicht deklariert (erste Verw
*** 45870,45876 ****
  msgid "each undeclared identifier is reported only once for each function it appears in"
  msgstr "jeder nicht deklarierte Bezeichner wird nur einmal fÃ¼r jede Funktion, in der er vorkommt, gemeldet"
  
! #: c/c-decl.cc:4055 cp/decl.cc:3632
  #, gcc-internal-format
  msgid "label %qE referenced outside of any function"
  msgstr "Marke %qE auÃŸerhalb einer Funktion referenziert"
--- 45878,45884 ----
  msgid "each undeclared identifier is reported only once for each function it appears in"
  msgstr "jeder nicht deklarierte Bezeichner wird nur einmal fÃ¼r jede Funktion, in der er vorkommt, gemeldet"
  
! #: c/c-decl.cc:4055 cp/decl.cc:3630
  #, gcc-internal-format
  msgid "label %qE referenced outside of any function"
  msgstr "Marke %qE auÃŸerhalb einer Funktion referenziert"
*************** msgstr "Sprung in Anweisungs-Ausdruck"
*** 45905,45911 ****
  msgid "duplicate label declaration %qE"
  msgstr "Doppelte Markendeklaration %qE"
  
! #: c/c-decl.cc:4278 cp/decl.cc:4135
  #, gcc-internal-format
  msgid "duplicate label %qD"
  msgstr "doppelte Marke %qD"
--- 45913,45919 ----
  msgid "duplicate label declaration %qE"
  msgstr "Doppelte Markendeklaration %qE"
  
! #: c/c-decl.cc:4278 cp/decl.cc:4133
  #, gcc-internal-format
  msgid "duplicate label %qD"
  msgstr "doppelte Marke %qD"
*************** msgstr "nutzloses %<_Alignas%> in leerer
*** 46074,46080 ****
  msgid "invalid use of attributes in empty declaration"
  msgstr "ungÃ¼ltige Verwendung von Attributen in leerer Deklaration"
  
! #: c/c-decl.cc:5264 c/c-parser.cc:2513
  #, gcc-internal-format
  msgid "empty declaration"
  msgstr "Leere Deklaration"
--- 46082,46088 ----
  msgid "invalid use of attributes in empty declaration"
  msgstr "ungÃ¼ltige Verwendung von Attributen in leerer Deklaration"
  
! #: c/c-decl.cc:5264 c/c-parser.cc:2558
  #, gcc-internal-format
  msgid "empty declaration"
  msgstr "Leere Deklaration"
*************** msgstr "ISO-C90 unterstÃ¼tzt %<[*]%>-Arr
*** 46092,46103 ****
  #. C99 6.7.5.2p4
  #. A function definition isn't function prototype scope C99 6.2.1p4.
  #. C99 6.7.5.2p4
! #: c/c-decl.cc:5346 c/c-decl.cc:8448 c/c-decl.cc:10986
  #, gcc-internal-format
  msgid "%<[*]%> not allowed in other than function prototype scope"
  msgstr "%<[*]%> auÃŸerhalb des Bereichs des Funktionsprototypen nicht erlaubt"
  
! #: c/c-decl.cc:5539 cp/decl2.cc:1960 cp/name-lookup.cc:8993
  #, gcc-internal-format
  msgid "%<omp::%s%> not allowed to be specified in this context"
  msgstr "%<omp::%s%> darf in diesem Kontext nicht angegeben werden"
--- 46100,46111 ----
  #. C99 6.7.5.2p4
  #. A function definition isn't function prototype scope C99 6.2.1p4.
  #. C99 6.7.5.2p4
! #: c/c-decl.cc:5346 c/c-decl.cc:8448 c/c-decl.cc:10990
  #, gcc-internal-format
  msgid "%<[*]%> not allowed in other than function prototype scope"
  msgstr "%<[*]%> auÃŸerhalb des Bereichs des Funktionsprototypen nicht erlaubt"
  
! #: c/c-decl.cc:5539 cp/decl2.cc:1960 cp/name-lookup.cc:8996
  #, gcc-internal-format
  msgid "%<omp::%s%> not allowed to be specified in this context"
  msgstr "%<omp::%s%> darf in diesem Kontext nicht angegeben werden"
*************** msgstr "%<omp::%s%> darf in diesem Konte
*** 46107,46113 ****
  msgid "%q+D is usually a function"
  msgstr "%q+D ist Ã¼blicherweise eine Funktion"
  
! #: c/c-decl.cc:5627 c/c-decl.cc:10816 cp/decl.cc:18580
  #, gcc-internal-format
  msgid "no previous declaration for %qD"
  msgstr "keine vorherige Deklaration fÃ¼r %qD"
--- 46115,46121 ----
  msgid "%q+D is usually a function"
  msgstr "%q+D ist Ã¼blicherweise eine Funktion"
  
! #: c/c-decl.cc:5627 c/c-decl.cc:10820 cp/decl.cc:18578
  #, gcc-internal-format
  msgid "no previous declaration for %qD"
  msgstr "keine vorherige Deklaration fÃ¼r %qD"
*************** msgstr "Objekt mit volatile-Feld kann ni
*** 46181,46189 ****
  #: c/c-decl.cc:6163
  #, gcc-internal-format
  msgid "uninitialized %<const %D%> is invalid in C++"
! msgstr "nicht initialisiertes %<const %qD%> ist in C++ ungÃ¼ltig"
  
! #: c/c-decl.cc:6178 cp/decl.cc:9535
  #, gcc-internal-format
  msgid "%q+D in declare target directive does not have mappable type"
  msgstr "%q+D in Â»declare targetÂ«-Direktive hat keinen zuordenbaren Typ"
--- 46189,46197 ----
  #: c/c-decl.cc:6163
  #, gcc-internal-format
  msgid "uninitialized %<const %D%> is invalid in C++"
! msgstr "nicht initialisiertes %<const %D%> ist in C++ ungÃ¼ltig"
  
! #: c/c-decl.cc:6178 cp/decl.cc:9533
  #, gcc-internal-format
  msgid "%q+D in declare target directive does not have mappable type"
  msgstr "%q+D in Â»declare targetÂ«-Direktive hat keinen zuordenbaren Typ"
*************** msgstr "doppeltes %<_Atomic%>"
*** 46328,46334 ****
  msgid "conflicting named address spaces (%s vs %s)"
  msgstr "in Konflikt stehende benannte AdressrÃ¤ume (%s und %s)"
  
! #: c/c-decl.cc:7080 c/c-parser.cc:3794
  #, gcc-internal-format
  msgid "%<_Atomic%>-qualified array type"
  msgstr "%<_Atomic%>-qualifizierter Arraytyp"
--- 46336,46342 ----
  msgid "conflicting named address spaces (%s vs %s)"
  msgstr "in Konflikt stehende benannte AdressrÃ¤ume (%s und %s)"
  
! #: c/c-decl.cc:7080 c/c-parser.cc:3839
  #, gcc-internal-format
  msgid "%<_Atomic%>-qualified array type"
  msgstr "%<_Atomic%>-qualifizierter Arraytyp"
*************** msgstr "Speicherklasse fÃ¼r Parameter %q
*** 46373,46379 ****
  msgid "storage class specified for unnamed parameter"
  msgstr "Speicherklasse fÃ¼r unbenannten Parameter angegeben"
  
! #: c/c-decl.cc:7141 cp/decl.cc:13709
  #, gcc-internal-format
  msgid "storage class specified for typename"
  msgstr "Speicherklasse fÃ¼r Typnamen angegeben"
--- 46381,46387 ----
  msgid "storage class specified for unnamed parameter"
  msgstr "Speicherklasse fÃ¼r unbenannten Parameter angegeben"
  
! #: c/c-decl.cc:7141 cp/decl.cc:13707
  #, gcc-internal-format
  msgid "storage class specified for typename"
  msgstr "Speicherklasse fÃ¼r Typnamen angegeben"
*************** msgstr "Typname als Funktion, die ein Ar
*** 46541,46553 ****
  msgid "function definition has qualified void return type"
  msgstr "Funktionsdefinition hat qualifizierten void-RÃ¼ckgabetypen"
  
! #: c/c-decl.cc:7684 cp/decl.cc:14134
  #, gcc-internal-format
  msgid "type qualifiers ignored on function return type"
  msgstr "Typkennzeichner an Funktions-RÃ¼ckgabewert ignoriert"
  
  #: c/c-decl.cc:7723 c/c-decl.cc:7891 c/c-decl.cc:7945 c/c-decl.cc:8039
! #: c/c-decl.cc:8161 c/c-parser.cc:3796
  #, gcc-internal-format
  msgid "%<_Atomic%>-qualified function type"
  msgstr "%<_Atomic%>-qualifizierter Funktionstyp"
--- 46549,46561 ----
  msgid "function definition has qualified void return type"
  msgstr "Funktionsdefinition hat qualifizierten void-RÃ¼ckgabetypen"
  
! #: c/c-decl.cc:7684 cp/decl.cc:14132
  #, gcc-internal-format
  msgid "type qualifiers ignored on function return type"
  msgstr "Typkennzeichner an Funktions-RÃ¼ckgabewert ignoriert"
  
  #: c/c-decl.cc:7723 c/c-decl.cc:7891 c/c-decl.cc:7945 c/c-decl.cc:8039
! #: c/c-decl.cc:8161 c/c-parser.cc:3841
  #, gcc-internal-format
  msgid "%<_Atomic%>-qualified function type"
  msgstr "%<_Atomic%>-qualifizierter Funktionstyp"
*************** msgstr "ISO-C verbietet const- oder vola
*** 46668,46674 ****
  msgid "a member of a structure or union cannot have a variably modified type"
  msgstr "Ein Element einer Struktur oder Union kann nicht variabel modifizierten Typ haben"
  
! #: c/c-decl.cc:7979 cp/decl.cc:12576
  #, gcc-internal-format
  msgid "variable or field %qE declared void"
  msgstr "Variable oder Feld %qE als Â»voidÂ« deklariert"
--- 46676,46682 ----
  msgid "a member of a structure or union cannot have a variably modified type"
  msgstr "Ein Element einer Struktur oder Union kann nicht variabel modifizierten Typ haben"
  
! #: c/c-decl.cc:7979 cp/decl.cc:12574
  #, gcc-internal-format
  msgid "variable or field %qE declared void"
  msgstr "Variable oder Feld %qE als Â»voidÂ« deklariert"
*************** msgstr "Funktion, die bereits als %<stat
*** 46738,46749 ****
  msgid "%<constexpr%> object has variably modified type"
  msgstr "%<constexpr%>-Objekt hat variabel geÃ¤nderten Typ"
  
! #: c/c-decl.cc:8263 c/c-parser.cc:13368
  #, gcc-internal-format
  msgid "invalid qualifiers for %<constexpr%> object"
  msgstr "ungÃ¼ltige Qualifizierer fÃ¼r %<constexpr%>-Objekt"
  
! #: c/c-decl.cc:8269 c/c-parser.cc:13371
  #, gcc-internal-format
  msgid "invalid qualifiers for field of %<constexpr%> object"
  msgstr "ungÃ¼ltige Qualifizierer fÃ¼r Feld eines %<constexpr%>-Objekts"
--- 46746,46757 ----
  msgid "%<constexpr%> object has variably modified type"
  msgstr "%<constexpr%>-Objekt hat variabel geÃ¤nderten Typ"
  
! #: c/c-decl.cc:8263 c/c-parser.cc:13413
  #, gcc-internal-format
  msgid "invalid qualifiers for %<constexpr%> object"
  msgstr "ungÃ¼ltige Qualifizierer fÃ¼r %<constexpr%>-Objekt"
  
! #: c/c-decl.cc:8269 c/c-parser.cc:13416
  #, gcc-internal-format
  msgid "invalid qualifiers for field of %<constexpr%> object"
  msgstr "ungÃ¼ltige Qualifizierer fÃ¼r Feld eines %<constexpr%>-Objekts"
*************** msgstr "nicht geschachtelte Funktion mit
*** 46773,46779 ****
  msgid "object with variably modified type must have no linkage"
  msgstr "Objekt mit variabel geÃ¤ndertem Typ darf keine Bindung haben"
  
! #: c/c-decl.cc:8454 c/c-decl.cc:10790
  #, gcc-internal-format
  msgid "function declaration isn%'t a prototype"
  msgstr "Funktionsdeklaration ist kein Prototyp"
--- 46781,46787 ----
  msgid "object with variably modified type must have no linkage"
  msgstr "Objekt mit variabel geÃ¤ndertem Typ darf keine Bindung haben"
  
! #: c/c-decl.cc:8454 c/c-decl.cc:10794
  #, gcc-internal-format
  msgid "function declaration isn%'t a prototype"
  msgstr "Funktionsdeklaration ist kein Prototyp"
*************** msgstr "Verschachtelte Redefinition von
*** 46858,46874 ****
  msgid "nested redefinition of %<struct %E%>"
  msgstr "Verschachtelte Redefinition von %<struct %E%>"
  
! #: c/c-decl.cc:8966 c/c-decl.cc:10120
  #, gcc-internal-format
  msgid "defining type in %qs expression is invalid in C++"
  msgstr "Typdefinition in Ausdruck %qs ist in C++ ungÃ¼ltig"
  
! #: c/c-decl.cc:8972 c/c-decl.cc:10126
  #, gcc-internal-format
  msgid "%qT defined in underspecified object initializer"
  msgstr "%qT wurde in unvollstÃ¤ndig angegebenem Objektinitialisierer definiert"
  
! #: c/c-decl.cc:9036 cp/decl.cc:5719 cp/parser.cc:28813
  #, gcc-internal-format
  msgid "declaration does not declare anything"
  msgstr "Deklaration deklariert nichts"
--- 46866,46882 ----
  msgid "nested redefinition of %<struct %E%>"
  msgstr "Verschachtelte Redefinition von %<struct %E%>"
  
! #: c/c-decl.cc:8966 c/c-decl.cc:10124
  #, gcc-internal-format
  msgid "defining type in %qs expression is invalid in C++"
  msgstr "Typdefinition in Ausdruck %qs ist in C++ ungÃ¼ltig"
  
! #: c/c-decl.cc:8972 c/c-decl.cc:10130
  #, gcc-internal-format
  msgid "%qT defined in underspecified object initializer"
  msgstr "%qT wurde in unvollstÃ¤ndig angegebenem Objektinitialisierer definiert"
  
! #: c/c-decl.cc:9036 cp/decl.cc:5717 cp/parser.cc:28867
  #, gcc-internal-format
  msgid "declaration does not declare anything"
  msgstr "Deklaration deklariert nichts"
*************** msgstr "struct hat keine benannten Eleme
*** 46928,46934 ****
  msgid "struct has no members"
  msgstr "struct hat keine Elemente"
  
! #: c/c-decl.cc:9640 cp/decl.cc:15166
  #, gcc-internal-format
  msgid "flexible array member in union is a GCC extension"
  msgstr "flexibles Arrayelement in Union ist eine GCC-Erweiterung"
--- 46936,46942 ----
  msgid "struct has no members"
  msgstr "struct hat keine Elemente"
  
! #: c/c-decl.cc:9640 cp/decl.cc:15164
  #, gcc-internal-format
  msgid "flexible array member in union is a GCC extension"
  msgstr "flexibles Arrayelement in Union ist eine GCC-Erweiterung"
*************** msgstr "flexibles Arrayelement nicht am
*** 46943,47548 ****
  msgid "flexible array member in a struct with no named members is a GCC extension"
  msgstr "flexibles Arrayelement in einer Struktur ohne benannte Elemente ist eine GCC-Erweiterung"
  
! #: c/c-decl.cc:9684
  #, gcc-internal-format
  msgid "structure containing a flexible array member is not at the end of another structure"
  msgstr "Struktur, die ein flexibles Arrayelement enthÃ¤lt, ist nicht am Ende einer anderen Struktur"
  
! #: c/c-decl.cc:9711
  #, gcc-internal-format
  msgid "type %qT is too large"
  msgstr "Typ %qT ist zu groÃŸ"
  
! #: c/c-decl.cc:9775
  #, gcc-internal-format
  msgid "type punning toggles scalar storage order"
  msgstr "Typumgehung schaltet die Reihenfolge der Skalarspeicherung um"
  
! #: c/c-decl.cc:9842
  #, gcc-internal-format
  msgid "union cannot be made transparent"
  msgstr "union kann nicht transparent gemacht werden"
  
! #: c/c-decl.cc:9856
  #, gcc-internal-format
  msgid "redefinition of struct or union %qT with variably modified type"
  msgstr "Redefinition des Struktur- oder Vereinigungstyps %qT mit variabel modifiziertem Typ"
  
! #: c/c-decl.cc:9863
  #, gcc-internal-format
  msgid "redefinition of struct or union %qT"
  msgstr "Redefinition von Struktur- oder Vereinigungstyp %qT"
  
! #: c/c-decl.cc:10042
  #, gcc-internal-format
  msgid "nested redefinition of %<enum %E%>"
  msgstr "Verschachtelte Redefinition von %<enum %E%>"
  
! #: c/c-decl.cc:10090
  #, gcc-internal-format
  msgid "redeclaration of %<enum %E%>"
  msgstr "Redeklaration von %<enum %E%>"
  
! #: c/c-decl.cc:10102
  #, gcc-internal-format
  msgid "%<enum%> declared with but defined without fixed underlying type"
  msgstr "%<enum%> deklariert aber ohne festen zugrundeliegenden Typen definiert"
  
! #: c/c-decl.cc:10189 cp/decl.cc:17838 m2/gm2-gcc/m2type.cc:2088
  #, gcc-internal-format
  msgid "specified mode too small for enumerated values"
  msgstr "angegebener Modus zu klein fÃ¼r AufzÃ¤hlungswerte"
  
! #: c/c-decl.cc:10208
  #, gcc-internal-format
  msgid "enumeration values exceed range of largest integer"
  msgstr "AufzÃ¤hlungswerte Ã¼berschreiten Wertebereich des grÃ¶ÃŸten Ganzzahltypen"
  
! #: c/c-decl.cc:10217
  #, gcc-internal-format
  msgid "enumeration values exceed range of %qs"
  msgstr "AufzÃ¤hlungswerte Ã¼berschreiten Wertebereich von %qs"
  
! #: c/c-decl.cc:10330
  #, gcc-internal-format
  msgid "conflicting redefinition of enum %qT"
  msgstr "widersprÃ¼chliche Redefinition des AufzÃ¤hlungstyps %qT"
  
! #: c/c-decl.cc:10363 c/c-decl.cc:10379
  #, gcc-internal-format
  msgid "enumerator value for %qE is not an integer constant"
  msgstr "AufzÃ¤hlungswert fÃ¼r %qE ist keine Ganzzahlkonstante"
  
! #: c/c-decl.cc:10374
  #, gcc-internal-format
  msgid "enumerator value for %qE is not an integer constant expression"
  msgstr "AufzÃ¤hlungswert fÃ¼r %qE ist kein Ganzzahlkonstantenausdruck"
  
! #: c/c-decl.cc:10398
  #, gcc-internal-format
  msgid "overflow in enumeration values"
  msgstr "Ãœberlauf in AufzÃ¤hlungswerten"
  
! #: c/c-decl.cc:10405
  #, gcc-internal-format
  msgid "enumerator value outside the range of underlying type"
  msgstr "AufzÃ¤hlungswert ist auÃŸerhalb des GÃ¼ltigkeitsbereichs des zugrundeliegenden Typen"
  
! #: c/c-decl.cc:10422
  #, gcc-internal-format
  msgid "value of redeclared enumerator outside the range of %qT"
  msgstr "erneut deklarierter AufzÃ¤hlungswert ist auÃŸerhalb des GÃ¼ltigkeitsbereichs von %qT"
  
! #: c/c-decl.cc:10450
  #, gcc-internal-format
  msgid "enumerator value outside the range of %qs"
  msgstr "AufzÃ¤hlungswert ist auÃŸerhalb des GÃ¼ltigkeitsbereichs von %qs"
  
! #: c/c-decl.cc:10456
  #, gcc-internal-format
  msgid "ISO C restricts enumerator values to range of %<int%> before C23"
  msgstr "ISO C vor C23 beschrÃ¤nkt AufzÃ¤hlungswerte auf den Bereich von %<int%>"
  
! #: c/c-decl.cc:10664 cp/decl.cc:6053 cp/decl.cc:18438
  #, gcc-internal-format
  msgid "inline function %qD given attribute %qs"
  msgstr "der inline-Funktion %qD wurde das Attribut %qs gegeben"
  
! #: c/c-decl.cc:10683
  #, gcc-internal-format
  msgid "return type is an incomplete type"
  msgstr "RÃ¼ckgabetyp ist unvollstÃ¤ndig"
  
! #: c/c-decl.cc:10695
  #, gcc-internal-format
  msgid "return type defaults to %<int%>"
  msgstr "RÃ¼ckgabetyp ist auf %<int%> voreingestellt"
  
! #: c/c-decl.cc:10723
  #, gcc-internal-format
  msgid "%q+D defined as variadic function without prototype"
  msgstr "%q+D ist als variadische Funktion ohne Prototyp definiert"
  
! #: c/c-decl.cc:10776
  #, gcc-internal-format
  msgid "ISO C23 does not allow defining parameters for function %qE declared without parameters"
  msgstr "ISO C23 erlaubt es nicht, Parameter fÃ¼r die Funktion %qE zu definieren, die ohne Parameter deklariert ist"
  
! #: c/c-decl.cc:10799
  #, gcc-internal-format
  msgid "no previous prototype for %qD"
  msgstr "kein vorheriger Prototyp fÃ¼r %qD"
  
! #: c/c-decl.cc:10808
  #, gcc-internal-format
  msgid "%qD was used with no prototype before its definition"
  msgstr "%qD wurde vor seiner Definition ohne Prototyp verwendet"
  
! #: c/c-decl.cc:10826
  #, gcc-internal-format
  msgid "%qD was used with no declaration before its definition"
  msgstr "%qD wurde vor seiner Definition ohne Deklaration verwendet"
  
! #: c/c-decl.cc:10845
  #, gcc-internal-format
  msgid "return type of %qD is not %<int%>"
  msgstr "RÃ¼ckgabetyp von %qD ist nicht %<int%>"
  
! #: c/c-decl.cc:10847
  #, gcc-internal-format
  msgid "%<_Atomic%>-qualified return type of %qD"
  msgstr "%<_Atomic%>-qualifizierter RÃ¼ckgabetyp von %qD"
  
! #: c/c-decl.cc:10854
  #, gcc-internal-format
  msgid "%qD is normally a non-static function"
  msgstr "%qD ist normalerweise eine nicht-statische Funktion"
  
! #: c/c-decl.cc:10905
  #, gcc-internal-format
  msgid "old-style parameter declarations in prototyped function definition"
  msgstr "Parameterdeklarationen alten Stils in Prototyp-Funktionsdeklaration"
  
! #: c/c-decl.cc:10921
  #, gcc-internal-format
  msgid "traditional C rejects ISO C style function definitions"
  msgstr "traditionelles C weist Funktionsdefinitionen im ISO-C-Stil zurÃ¼ck"
  
! #: c/c-decl.cc:10938
  #, gcc-internal-format
  msgid "ISO C does not support omitting parameter names in function definitions before C23"
  msgstr "ISO-C unterstÃ¼tzt das Weglassen von Parameternamen in Funktionsdefinitionen erst ab C23"
  
! #: c/c-decl.cc:10978 c/c-decl.cc:10982
  #, gcc-internal-format
  msgid "old-style function definition"
  msgstr "Funktionsdefinition im alten Stil"
  
! #: c/c-decl.cc:10995
  #, gcc-internal-format
  msgid "parameter name missing from parameter list"
  msgstr "Parametername fehlt in Parameterliste"
  
! #: c/c-decl.cc:11011
  #, gcc-internal-format
  msgid "%qD declared as a non-parameter"
  msgstr "%qD als Nicht-Parameter deklariert"
  
! #: c/c-decl.cc:11019
  #, gcc-internal-format
  msgid "multiple parameters named %qD"
  msgstr "mehrere Parameter wurden %qD genannt"
  
! #: c/c-decl.cc:11028
  #, gcc-internal-format
  msgid "parameter %qD declared with void type"
  msgstr "Parameter %qD als void deklariert"
  
! #: c/c-decl.cc:11057 c/c-decl.cc:11062
  #, gcc-internal-format
  msgid "type of %qD defaults to %<int%>"
  msgstr "Typ von %qD ist auf %<int%> voreingestellt"
  
! #: c/c-decl.cc:11082
  #, gcc-internal-format
  msgid "parameter %qD has incomplete type"
  msgstr "Parameter %qD hat unvollstÃ¤ndigen Typen"
  
! #: c/c-decl.cc:11089
  #, gcc-internal-format
  msgid "declaration for parameter %qD but no such parameter"
  msgstr "Deklaration fÃ¼r nicht vorhandenen Parameter %qD"
  
! #: c/c-decl.cc:11142
  #, gcc-internal-format
  msgid "number of arguments doesn%'t match built-in prototype"
  msgstr "Anzahl der Argumente passt nicht zum eingebauten Prototypen"
  
! #: c/c-decl.cc:11153
  #, gcc-internal-format
  msgid "number of arguments doesn%'t match prototype"
  msgstr "Anzahl der Argumente passt nicht zum Prototypen"
  
! #: c/c-decl.cc:11156 c/c-decl.cc:11203 c/c-decl.cc:11217
  #, gcc-internal-format
  msgid "prototype declaration"
  msgstr "Prototyp-Deklaration"
  
! #: c/c-decl.cc:11195
  #, gcc-internal-format
  msgid "promoted argument %qD doesn%'t match built-in prototype"
  msgstr "weitergegebenes Argument %qD passt nicht zu eingebautem Prototypen"
  
! #: c/c-decl.cc:11200
  #, gcc-internal-format
  msgid "promoted argument %qD doesn%'t match prototype"
  msgstr "weitergegebenes Argument %qD passt nicht zum Prototypen"
  
! #: c/c-decl.cc:11210
  #, gcc-internal-format
  msgid "argument %qD doesn%'t match built-in prototype"
  msgstr "Argument %qD passt nicht zu eingebautem Prototypen"
  
! #: c/c-decl.cc:11215
  #, gcc-internal-format
  msgid "argument %qD doesn%'t match prototype"
  msgstr "Argument %qD passt nicht zum Prototypen"
  
! #: c/c-decl.cc:11473 cp/decl.cc:19361
  #, gcc-internal-format
  msgid "no return statement in function returning non-void"
  msgstr "keine return-Anweisung in nicht void zurÃ¼ckgebender Funktion"
  
! #: c/c-decl.cc:11492 cp/decl.cc:19432
  #, gcc-internal-format
  msgid "parameter %qD set but not used"
  msgstr "Parameter %qD gesetzt, jedoch nicht verwendet"
  
! #: c/c-decl.cc:11589
  #, gcc-internal-format
  msgid "%<for%> loop initial declarations are only allowed in C99 or C11 mode"
  msgstr "Anfangsdeklarationen in %<for%>-Schleifen sind nur im C99- oder C11-Modus erlaubt"
  
! #: c/c-decl.cc:11594
  #, gcc-internal-format
  msgid "use option %<-std=c99%>, %<-std=gnu99%>, %<-std=c11%> or %<-std=gnu11%> to compile your code"
  msgstr "die Option %<-std=c99%>, %<-std=gnu99%>, %<-std=c11%> oder %<-std=gnu11%> verwenden, um den Code zu Ã¼bersetzen"
  
! #: c/c-decl.cc:11601
  #, gcc-internal-format
  msgid "ISO C90 does not support %<for%> loop initial declarations"
  msgstr "Deklarationen im Initialisierungsteil einer %<for%>-Schleife werden von ISO C90 nicht unterstÃ¼tzt; ab ISO C99 geht es"
  
! #: c/c-decl.cc:11635
  #, gcc-internal-format
  msgid "declaration of static variable %qD in %<for%> loop initial declaration"
  msgstr "Deklaration der Â»staticÂ«-Variablen %qD in Anfangsdeklaration einer %<for%>-Schleife"
  
! #: c/c-decl.cc:11639
  #, gcc-internal-format
  msgid "declaration of %<extern%> variable %qD in %<for%> loop initial declaration"
  msgstr "Deklaration der %<extern%>-Variablen %qD in Anfangsdeklaration einer %<for%>-Schleife"
  
! #: c/c-decl.cc:11646
  #, gcc-internal-format
  msgid "%<struct %E%> declared in %<for%> loop initial declaration"
  msgstr "%<struct %E%> in Anfangsdeklaration einer %<for%>-Schleife deklariert"
  
! #: c/c-decl.cc:11651
  #, gcc-internal-format
  msgid "%<union %E%> declared in %<for%> loop initial declaration"
  msgstr "%<union %E%> in Anfangsdeklaration einer %<for%>-Schleife deklariert"
  
! #: c/c-decl.cc:11657
  #, gcc-internal-format
  msgid "%<enum %E%> declared in %<for%> loop initial declaration"
  msgstr "%<enum %E%> in Anfangsdeklaration einer %<for%>-Schleife deklariert"
  
! #: c/c-decl.cc:11661
  #, gcc-internal-format
  msgid "declaration of non-variable %qD in %<for%> loop initial declaration"
  msgstr "Deklaration der Nicht-Variablen %qD in Anfangsdeklaration einer %<for%>-Schleife"
  
! #: c/c-decl.cc:11961
  #, gcc-internal-format
  msgid "incompatible address space qualifiers %qs and %qs"
  msgstr "Inkompatible Adressraumkennzeichen %qs und %qs"
  
! #: c/c-decl.cc:12020 c/c-decl.cc:12027
  #, gcc-internal-format
  msgid "duplicate %qE declaration specifier"
  msgstr "Doppelter Deklarationsspezifizierer %qE"
  
! #: c/c-decl.cc:12055 c/c-decl.cc:13176
  #, gcc-internal-format
  msgid "multiple storage classes in declaration specifiers"
  msgstr "mehrere Speicherklassen in Deklaration"
  
! #: c/c-decl.cc:12057
  #, gcc-internal-format
  msgid "%qs used with %<auto%>"
  msgstr "%qs mit %<auto%> verwendet"
  
  #. auto may only be used with another storage class specifier,
  #. such as constexpr, if the type is inferred.
! #: c/c-decl.cc:12062
  #, gcc-internal-format
  msgid "%<auto%> used with %<constexpr%>"
  msgstr "%<auto%> mit %<constexpr%> verwendet"
  
! #: c/c-decl.cc:12075 c/c-decl.cc:12513 c/c-decl.cc:12971
  #, gcc-internal-format
  msgid "two or more data types in declaration specifiers"
  msgstr "zwei oder mehr Datentypen in Deklaration"
  
! #: c/c-decl.cc:12087 cp/parser.cc:35091
  #, gcc-internal-format
  msgid "%<long long long%> is too long for GCC"
  msgstr "%<long long long%> ist fÃ¼r GCC zu lang"
  
! #: c/c-decl.cc:12100
  #, gcc-internal-format
  msgid "ISO C90 does not support %<long long%>"
  msgstr "ISO-C90 unterstÃ¼tzt nicht %<long long%>"
  
! #: c/c-decl.cc:12353 c/c-parser.cc:12542
  #, gcc-internal-format
  msgid "ISO C90 does not support complex types"
  msgstr "ISO-C90 unterstÃ¼tzt keine komplexen Typen"
  
! #: c/c-decl.cc:12407
  #, gcc-internal-format
  msgid "ISO C does not support saturating types"
  msgstr "ISO-C unterstÃ¼tzt keine sÃ¤ttigenden Typen"
  
! #: c/c-decl.cc:12486 c/c-decl.cc:13111 c/c-decl.cc:13170
  #, gcc-internal-format
  msgid "duplicate %qE"
  msgstr "doppeltes %qE"
  
! #: c/c-decl.cc:12503
  #, gcc-internal-format
  msgid "%qs cannot be defined via %<typedef%>"
  msgstr "%qs kann nicht mittels %<typedef%> definiert werden"
  
! #: c/c-decl.cc:12507
  #, gcc-internal-format
  msgid "%qs cannot be used here"
  msgstr "Â»%sÂ« kann hier nicht verwendet werden"
  
! #: c/c-decl.cc:12560
  #, gcc-internal-format
  msgid "ISO C does not support %<__int%d%> types"
  msgstr "ISO-C unterstÃ¼tzt die Typen %<__int%d%> nicht"
  
! #: c/c-decl.cc:12582
  #, gcc-internal-format
  msgid "%<__int%d%> is not supported on this target"
  msgstr "%<__int%d%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt"
  
! #: c/c-decl.cc:12625
  #, gcc-internal-format
  msgid "ISO C90 does not support boolean types"
  msgstr "ISO-C90 unterstÃ¼tzt keine booleschen Typen"
  
! #: c/c-decl.cc:12744
  #, gcc-internal-format
  msgid "ISO C does not support the %<_Float%d%s%> type before C23"
  msgstr "ISO-C unterstÃ¼tzt den Typen %<_Float%d%s%> erst ab C23"
  
! #: c/c-decl.cc:12795 cp/parser.cc:20889
  #, gcc-internal-format
  msgid "%<_Float%d%s%> is not supported on this target"
  msgstr "%<_Float%d%s%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt"
  
! #: c/c-decl.cc:12871
  #, gcc-internal-format
  msgid "ISO C does not support decimal floating-point before C23"
  msgstr "ISO-C unterstÃ¼tzt dezimale Gleitkommazahlen erst ab C23"
  
! #: c/c-decl.cc:12895 c/c-decl.cc:13272 c/c-parser.cc:11443
  #, gcc-internal-format
  msgid "fixed-point types not supported for this target"
  msgstr "Festkommatypen werden fÃ¼r dieses Ziel nicht unterstÃ¼tzt"
  
! #: c/c-decl.cc:12897
  #, gcc-internal-format
  msgid "ISO C does not support fixed-point types"
  msgstr "ISO-C unterstÃ¼tzt keine Ganzzahltypen"
  
! #: c/c-decl.cc:12926
  #, gcc-internal-format
  msgid "%<_BitInt%> argument is not an integer constant expression"
  msgstr "%<_BitInt%>-Argument ist kein konstanter Ganzzahlausdruck"
  
! #: c/c-decl.cc:12932
  #, gcc-internal-format
  msgid "%<_BitInt%> argument %qE is not a positive integer constant expression"
  msgstr "%<_BitInt%>-Argument %qE ist kein positiver konstanter Ganzzahlausdruck"
  
! #: c/c-decl.cc:12939
  #, gcc-internal-format
  msgid "%<_BitInt%> argument %qE is larger than %<BITINT_MAXWIDTH%> %qd"
  msgstr "%<_BitInt%>-Argument %qE ist grÃ¶ÃŸer als %<BITINT_MAXWIDTH%> %qd"
  
! #: c/c-decl.cc:12987
  #, gcc-internal-format
  msgid "C++ lookup of %qD would return a field, not a type"
  msgstr "Nachschlagen von %qD wÃ¼rde in C++ ein Feld, keinen Typen zurÃ¼ckgeben"
  
! #: c/c-decl.cc:13000
  #, gcc-internal-format
  msgid "%qE fails to be a typedef or built in type"
  msgstr "%qE ist kein typedef oder eingebauter Typ"
  
! #: c/c-decl.cc:13055
  #, gcc-internal-format
  msgid "%qE is not at beginning of declaration"
  msgstr "%qE ist nicht am Anfang einer Deklaration"
  
  #. auto may only be used with another storage class specifier,
  #. such as constexpr, if the type is inferred.
! #: c/c-decl.cc:13076 c/c-decl.cc:13153
  #, gcc-internal-format
  msgid "%qE used with %<auto%>"
  msgstr "%qE mit %<auto%> verwendet"
  
! #: c/c-decl.cc:13078
  #, gcc-internal-format
  msgid "%qE used with %<register%>"
  msgstr "%qE mit %<register%> verwendet"
  
! #: c/c-decl.cc:13080 c/c-decl.cc:13149
  #, gcc-internal-format
  msgid "%qE used with %<typedef%>"
  msgstr "%qE mit %<typedef%> verwendet"
  
! #: c/c-decl.cc:13082 c/c-decl.cc:13119
  #, gcc-internal-format
  msgid "%qE used with %<constexpr%>"
  msgstr "%qE mit %<constexpr%> verwendet"
  
! #: c/c-decl.cc:13096 c/c-parser.cc:3320 c/c-parser.cc:4691 c/c-parser.cc:10707
  #, gcc-internal-format
  msgid "ISO C99 does not support %qE"
  msgstr "ISO-C99 unterstÃ¼tzt nicht %qE"
  
! #: c/c-decl.cc:13099 c/c-parser.cc:3323 c/c-parser.cc:4694 c/c-parser.cc:10710
  #, gcc-internal-format
  msgid "ISO C90 does not support %qE"
  msgstr "ISO-C90 unterstÃ¼tzt nicht %qE"
  
! #: c/c-decl.cc:13125
  #, gcc-internal-format
  msgid "%<__thread%> before %<extern%>"
  msgstr "%<__thread%> vor %<extern%>"
  
! #: c/c-decl.cc:13134
  #, gcc-internal-format
  msgid "%<__thread%> before %<static%>"
  msgstr "%<__thread%> vor %<static%>"
  
! #: c/c-decl.cc:13140
  #, gcc-internal-format
  msgid "%<typedef%> used with %<auto%>"
  msgstr "%<typedef%> mit %<auto%> verwendet"
  
! #: c/c-decl.cc:13147
  #, gcc-internal-format
  msgid "%qE used with %<extern%>"
  msgstr "%qE mit %<extern%> verwendet"
  
! #: c/c-decl.cc:13155
  #, gcc-internal-format
  msgid "%qE used with %qs"
  msgstr "%qE mit %qs verwendet"
  
! #: c/c-decl.cc:13168
  #, gcc-internal-format
  msgid "duplicate %<_Thread_local%> or %<__thread%>"
  msgstr "doppeltes %<_Thread_local%> oder %<__thread%>"
  
! #: c/c-decl.cc:13184
  #, gcc-internal-format
  msgid "%qs used with %qE"
  msgstr "%qs mit %qE verwendet"
  
! #: c/c-decl.cc:13192
  #, gcc-internal-format
  msgid "%<constexpr%> used with %qE"
  msgstr "%<constexpr%> mit %qE verwendet"
  
! #: c/c-decl.cc:13269
  #, gcc-internal-format
  msgid "%<_Sat%> is used without %<_Fract%> or %<_Accum%>"
  msgstr "%<_Sat%> ohne %<_Fract%> oder %<_Accum%> verwendet"
  
! #: c/c-decl.cc:13284
  #, gcc-internal-format
  msgid "ISO C does not support plain %<complex%> meaning %<double complex%>"
  msgstr "ISO-C unterstÃ¼tzt nicht %<double complex%> bedeutendes einfaches %<complex%>"
  
! #: c/c-decl.cc:13295
  #, gcc-internal-format
  msgid "ISO C does not support %<auto%> type deduction before C23"
  msgstr "ISO C unterstÃ¼tzt %<auto%>-Typinferenz erst ab C23"
  
! #: c/c-decl.cc:13324
  #, gcc-internal-format
  msgid "%<__auto_type%> followed by %<[[]]%> attributes"
  msgstr "%<__auto_type%> gefolgt von %<[[]]%>-Attributen"
  
! #: c/c-decl.cc:13350 c/c-decl.cc:13366 c/c-decl.cc:13392
  #, gcc-internal-format
  msgid "ISO C does not support complex integer types"
  msgstr "ISO-C unterstÃ¼tzt keine komplexen Ganzzahltypen"
  
! #: c/c-decl.cc:13538
  #, gcc-internal-format
  msgid "%<signed _BitInt%> argument must be at least 2"
  msgstr "Argument fÃ¼r %<signed _BitInt%> muss mindestens 2 sein"
  
! #: c/c-decl.cc:13547
  #, gcc-internal-format
  msgid "ISO C does not support %<%s_BitInt(%d)%> before C23"
  msgstr "ISO-C unterstÃ¼tzt %<%s_BitInt(%d)%> erst ab C23"
  
! #: c/c-decl.cc:13847 cp/semantics.cc:6784
  #, gcc-internal-format
  msgid "%<#pragma omp declare reduction%> combiner refers to variable %qD which is not %<omp_out%> nor %<omp_in%>"
  msgstr "%<#pragma omp declare reduction%>-Kombinierer verweist auf Variable %qD, die weder %<omp_out%> noch %<omp_in%> ist"
  
! #: c/c-decl.cc:13851 cp/semantics.cc:6788
  #, gcc-internal-format
  msgid "%<#pragma omp declare reduction%> initializer refers to variable %qD which is not %<omp_priv%> nor %<omp_orig%>"
  msgstr "%<#pragma omp declare reduction%>-Initialisierung verweist auf Variable %qD, die weder %<omp_priv%> noch %<omp_orig%> ist"
  
! #: c/c-decl.cc:13975
  #, gcc-internal-format
  msgid "ISO C does not support %qs statement with an identifier operand before C2Y"
  msgstr "ISO C unterstÃ¼tzt eine %qs-Anweisung mit einem Bezeichner als Operanden erst ab C2Y"
  
! #: c/c-decl.cc:14027
  #, gcc-internal-format
  msgid "%<break%> statement operand %qE does not refer to a named loop or %<switch%>; did you mean %qs?"
  msgstr "der Operand %qE der %<break%>-Anweisung bezieht sich nicht auf eine benannte Schleife oder eine %<switch%>-Anweisung; meinten Sie %qs?"
  
! #: c/c-decl.cc:14031
  #, gcc-internal-format
  msgid "%<continue%> statement operand %qE does not refer to a named loop; did you mean %qs?"
  msgstr "der Operand %qE der %<continue%>-Anweisung bezieht sich nicht auf eine benannte Schleife; meinten Sie %qs?"
  
! #: c/c-decl.cc:14036
  #, gcc-internal-format
  msgid "%<break%> statement operand %qE does not refer to a named loop or %<switch%>"
  msgstr "der Operand der %<break%>-Anweisung %qE bezieht sich nicht auf eine benannte Schleife oder eine %<switch%>-Anweisung"
  
! #: c/c-decl.cc:14039
  #, gcc-internal-format
  msgid "%<continue%> statement operand %qE does not refer to a named loop"
  msgstr "der Operand %qE der %<continue%>-Anweisung bezieht sich nicht auf eine benannte Schleife"
  
! #: c/c-decl.cc:14045
  #, gcc-internal-format
  msgid "%<continue%> statement operand %qE refers to a named %<switch%>"
  msgstr "der Operand %qE der %<continue%>-Anweisung bezieht sich auf eine benannte %<switch%>-Anweisung"
  
! #: c/c-decl.cc:14047 c/c-decl.cc:14064
  #, gcc-internal-format
  msgid "%<switch%> name defined here"
  msgstr "der %<switch%>-Name ist hier definiert"
  
! #: c/c-decl.cc:14055
  #, gcc-internal-format
  msgid "%qs statement operand %qE refers to a loop outside of its body"
  msgstr "der Operand %2$qE der %1$qs Anweisung bezieht sich auf eine Schleife auÃŸerhalb ihres KÃ¶rpers"
  
! #: c/c-decl.cc:14057
  #, gcc-internal-format
  msgid "loop name defined here"
  msgstr "der Schleifenname ist hier definiert"
  
! #: c/c-decl.cc:14061
  #, gcc-internal-format
  msgid "%<break%> statement operand %qE refers to a %<switch%> outside of its body"
  msgstr "der Operand %qE der %<break%>-Anweisung bezieht sich auf eine %<switch%>-Anweisung auÃŸerhalb des Anweisungsrumpfs"
--- 46951,47556 ----
  msgid "flexible array member in a struct with no named members is a GCC extension"
  msgstr "flexibles Arrayelement in einer Struktur ohne benannte Elemente ist eine GCC-Erweiterung"
  
! #: c/c-decl.cc:9687
  #, gcc-internal-format
  msgid "structure containing a flexible array member is not at the end of another structure"
  msgstr "Struktur, die ein flexibles Arrayelement enthÃ¤lt, ist nicht am Ende einer anderen Struktur"
  
! #: c/c-decl.cc:9714
  #, gcc-internal-format
  msgid "type %qT is too large"
  msgstr "Typ %qT ist zu groÃŸ"
  
! #: c/c-decl.cc:9778
  #, gcc-internal-format
  msgid "type punning toggles scalar storage order"
  msgstr "Typumgehung schaltet die Reihenfolge der Skalarspeicherung um"
  
! #: c/c-decl.cc:9845
  #, gcc-internal-format
  msgid "union cannot be made transparent"
  msgstr "union kann nicht transparent gemacht werden"
  
! #: c/c-decl.cc:9859
  #, gcc-internal-format
  msgid "redefinition of struct or union %qT with variably modified type"
  msgstr "Redefinition des Struktur- oder Vereinigungstyps %qT mit variabel modifiziertem Typ"
  
! #: c/c-decl.cc:9866
  #, gcc-internal-format
  msgid "redefinition of struct or union %qT"
  msgstr "Redefinition von Struktur- oder Vereinigungstyp %qT"
  
! #: c/c-decl.cc:10046
  #, gcc-internal-format
  msgid "nested redefinition of %<enum %E%>"
  msgstr "Verschachtelte Redefinition von %<enum %E%>"
  
! #: c/c-decl.cc:10094
  #, gcc-internal-format
  msgid "redeclaration of %<enum %E%>"
  msgstr "Redeklaration von %<enum %E%>"
  
! #: c/c-decl.cc:10106
  #, gcc-internal-format
  msgid "%<enum%> declared with but defined without fixed underlying type"
  msgstr "%<enum%> deklariert aber ohne festen zugrundeliegenden Typen definiert"
  
! #: c/c-decl.cc:10193 cp/decl.cc:17836 m2/gm2-gcc/m2type.cc:2088
  #, gcc-internal-format
  msgid "specified mode too small for enumerated values"
  msgstr "angegebener Modus zu klein fÃ¼r AufzÃ¤hlungswerte"
  
! #: c/c-decl.cc:10212
  #, gcc-internal-format
  msgid "enumeration values exceed range of largest integer"
  msgstr "AufzÃ¤hlungswerte Ã¼berschreiten Wertebereich des grÃ¶ÃŸten Ganzzahltypen"
  
! #: c/c-decl.cc:10221
  #, gcc-internal-format
  msgid "enumeration values exceed range of %qs"
  msgstr "AufzÃ¤hlungswerte Ã¼berschreiten Wertebereich von %qs"
  
! #: c/c-decl.cc:10334
  #, gcc-internal-format
  msgid "conflicting redefinition of enum %qT"
  msgstr "widersprÃ¼chliche Redefinition des AufzÃ¤hlungstyps %qT"
  
! #: c/c-decl.cc:10367 c/c-decl.cc:10383
  #, gcc-internal-format
  msgid "enumerator value for %qE is not an integer constant"
  msgstr "AufzÃ¤hlungswert fÃ¼r %qE ist keine Ganzzahlkonstante"
  
! #: c/c-decl.cc:10378
  #, gcc-internal-format
  msgid "enumerator value for %qE is not an integer constant expression"
  msgstr "AufzÃ¤hlungswert fÃ¼r %qE ist kein Ganzzahlkonstantenausdruck"
  
! #: c/c-decl.cc:10402
  #, gcc-internal-format
  msgid "overflow in enumeration values"
  msgstr "Ãœberlauf in AufzÃ¤hlungswerten"
  
! #: c/c-decl.cc:10409
  #, gcc-internal-format
  msgid "enumerator value outside the range of underlying type"
  msgstr "AufzÃ¤hlungswert ist auÃŸerhalb des GÃ¼ltigkeitsbereichs des zugrundeliegenden Typen"
  
! #: c/c-decl.cc:10426
  #, gcc-internal-format
  msgid "value of redeclared enumerator outside the range of %qT"
  msgstr "erneut deklarierter AufzÃ¤hlungswert ist auÃŸerhalb des GÃ¼ltigkeitsbereichs von %qT"
  
! #: c/c-decl.cc:10454
  #, gcc-internal-format
  msgid "enumerator value outside the range of %qs"
  msgstr "AufzÃ¤hlungswert ist auÃŸerhalb des GÃ¼ltigkeitsbereichs von %qs"
  
! #: c/c-decl.cc:10460
  #, gcc-internal-format
  msgid "ISO C restricts enumerator values to range of %<int%> before C23"
  msgstr "ISO C vor C23 beschrÃ¤nkt AufzÃ¤hlungswerte auf den Bereich von %<int%>"
  
! #: c/c-decl.cc:10668 cp/decl.cc:6051 cp/decl.cc:18436
  #, gcc-internal-format
  msgid "inline function %qD given attribute %qs"
  msgstr "der inline-Funktion %qD wurde das Attribut %qs gegeben"
  
! #: c/c-decl.cc:10687
  #, gcc-internal-format
  msgid "return type is an incomplete type"
  msgstr "RÃ¼ckgabetyp ist unvollstÃ¤ndig"
  
! #: c/c-decl.cc:10699
  #, gcc-internal-format
  msgid "return type defaults to %<int%>"
  msgstr "RÃ¼ckgabetyp ist auf %<int%> voreingestellt"
  
! #: c/c-decl.cc:10727
  #, gcc-internal-format
  msgid "%q+D defined as variadic function without prototype"
  msgstr "%q+D ist als variadische Funktion ohne Prototyp definiert"
  
! #: c/c-decl.cc:10780
  #, gcc-internal-format
  msgid "ISO C23 does not allow defining parameters for function %qE declared without parameters"
  msgstr "ISO C23 erlaubt es nicht, Parameter fÃ¼r die Funktion %qE zu definieren, die ohne Parameter deklariert ist"
  
! #: c/c-decl.cc:10803
  #, gcc-internal-format
  msgid "no previous prototype for %qD"
  msgstr "kein vorheriger Prototyp fÃ¼r %qD"
  
! #: c/c-decl.cc:10812
  #, gcc-internal-format
  msgid "%qD was used with no prototype before its definition"
  msgstr "%qD wurde vor seiner Definition ohne Prototyp verwendet"
  
! #: c/c-decl.cc:10830
  #, gcc-internal-format
  msgid "%qD was used with no declaration before its definition"
  msgstr "%qD wurde vor seiner Definition ohne Deklaration verwendet"
  
! #: c/c-decl.cc:10849
  #, gcc-internal-format
  msgid "return type of %qD is not %<int%>"
  msgstr "RÃ¼ckgabetyp von %qD ist nicht %<int%>"
  
! #: c/c-decl.cc:10851
  #, gcc-internal-format
  msgid "%<_Atomic%>-qualified return type of %qD"
  msgstr "%<_Atomic%>-qualifizierter RÃ¼ckgabetyp von %qD"
  
! #: c/c-decl.cc:10858
  #, gcc-internal-format
  msgid "%qD is normally a non-static function"
  msgstr "%qD ist normalerweise eine nicht-statische Funktion"
  
! #: c/c-decl.cc:10909
  #, gcc-internal-format
  msgid "old-style parameter declarations in prototyped function definition"
  msgstr "Parameterdeklarationen alten Stils in Prototyp-Funktionsdeklaration"
  
! #: c/c-decl.cc:10925
  #, gcc-internal-format
  msgid "traditional C rejects ISO C style function definitions"
  msgstr "traditionelles C weist Funktionsdefinitionen im ISO-C-Stil zurÃ¼ck"
  
! #: c/c-decl.cc:10942
  #, gcc-internal-format
  msgid "ISO C does not support omitting parameter names in function definitions before C23"
  msgstr "ISO-C unterstÃ¼tzt das Weglassen von Parameternamen in Funktionsdefinitionen erst ab C23"
  
! #: c/c-decl.cc:10982 c/c-decl.cc:10986
  #, gcc-internal-format
  msgid "old-style function definition"
  msgstr "Funktionsdefinition im alten Stil"
  
! #: c/c-decl.cc:10999
  #, gcc-internal-format
  msgid "parameter name missing from parameter list"
  msgstr "Parametername fehlt in Parameterliste"
  
! #: c/c-decl.cc:11015
  #, gcc-internal-format
  msgid "%qD declared as a non-parameter"
  msgstr "%qD als Nicht-Parameter deklariert"
  
! #: c/c-decl.cc:11023
  #, gcc-internal-format
  msgid "multiple parameters named %qD"
  msgstr "mehrere Parameter wurden %qD genannt"
  
! #: c/c-decl.cc:11032
  #, gcc-internal-format
  msgid "parameter %qD declared with void type"
  msgstr "Parameter %qD als void deklariert"
  
! #: c/c-decl.cc:11061 c/c-decl.cc:11066
  #, gcc-internal-format
  msgid "type of %qD defaults to %<int%>"
  msgstr "Typ von %qD ist auf %<int%> voreingestellt"
  
! #: c/c-decl.cc:11086
  #, gcc-internal-format
  msgid "parameter %qD has incomplete type"
  msgstr "Parameter %qD hat unvollstÃ¤ndigen Typen"
  
! #: c/c-decl.cc:11093
  #, gcc-internal-format
  msgid "declaration for parameter %qD but no such parameter"
  msgstr "Deklaration fÃ¼r nicht vorhandenen Parameter %qD"
  
! #: c/c-decl.cc:11146
  #, gcc-internal-format
  msgid "number of arguments doesn%'t match built-in prototype"
  msgstr "Anzahl der Argumente passt nicht zum eingebauten Prototypen"
  
! #: c/c-decl.cc:11157
  #, gcc-internal-format
  msgid "number of arguments doesn%'t match prototype"
  msgstr "Anzahl der Argumente passt nicht zum Prototypen"
  
! #: c/c-decl.cc:11160 c/c-decl.cc:11207 c/c-decl.cc:11221
  #, gcc-internal-format
  msgid "prototype declaration"
  msgstr "Prototyp-Deklaration"
  
! #: c/c-decl.cc:11199
  #, gcc-internal-format
  msgid "promoted argument %qD doesn%'t match built-in prototype"
  msgstr "weitergegebenes Argument %qD passt nicht zu eingebautem Prototypen"
  
! #: c/c-decl.cc:11204
  #, gcc-internal-format
  msgid "promoted argument %qD doesn%'t match prototype"
  msgstr "weitergegebenes Argument %qD passt nicht zum Prototypen"
  
! #: c/c-decl.cc:11214
  #, gcc-internal-format
  msgid "argument %qD doesn%'t match built-in prototype"
  msgstr "Argument %qD passt nicht zu eingebautem Prototypen"
  
! #: c/c-decl.cc:11219
  #, gcc-internal-format
  msgid "argument %qD doesn%'t match prototype"
  msgstr "Argument %qD passt nicht zum Prototypen"
  
! #: c/c-decl.cc:11477 cp/decl.cc:19359
  #, gcc-internal-format
  msgid "no return statement in function returning non-void"
  msgstr "keine return-Anweisung in nicht void zurÃ¼ckgebender Funktion"
  
! #: c/c-decl.cc:11496 cp/decl.cc:19430
  #, gcc-internal-format
  msgid "parameter %qD set but not used"
  msgstr "Parameter %qD gesetzt, jedoch nicht verwendet"
  
! #: c/c-decl.cc:11593
  #, gcc-internal-format
  msgid "%<for%> loop initial declarations are only allowed in C99 or C11 mode"
  msgstr "Anfangsdeklarationen in %<for%>-Schleifen sind nur im C99- oder C11-Modus erlaubt"
  
! #: c/c-decl.cc:11598
  #, gcc-internal-format
  msgid "use option %<-std=c99%>, %<-std=gnu99%>, %<-std=c11%> or %<-std=gnu11%> to compile your code"
  msgstr "die Option %<-std=c99%>, %<-std=gnu99%>, %<-std=c11%> oder %<-std=gnu11%> verwenden, um den Code zu Ã¼bersetzen"
  
! #: c/c-decl.cc:11605
  #, gcc-internal-format
  msgid "ISO C90 does not support %<for%> loop initial declarations"
  msgstr "Deklarationen im Initialisierungsteil einer %<for%>-Schleife werden von ISO C90 nicht unterstÃ¼tzt; ab ISO C99 geht es"
  
! #: c/c-decl.cc:11639
  #, gcc-internal-format
  msgid "declaration of static variable %qD in %<for%> loop initial declaration"
  msgstr "Deklaration der Â»staticÂ«-Variablen %qD in Anfangsdeklaration einer %<for%>-Schleife"
  
! #: c/c-decl.cc:11643
  #, gcc-internal-format
  msgid "declaration of %<extern%> variable %qD in %<for%> loop initial declaration"
  msgstr "Deklaration der %<extern%>-Variablen %qD in Anfangsdeklaration einer %<for%>-Schleife"
  
! #: c/c-decl.cc:11650
  #, gcc-internal-format
  msgid "%<struct %E%> declared in %<for%> loop initial declaration"
  msgstr "%<struct %E%> in Anfangsdeklaration einer %<for%>-Schleife deklariert"
  
! #: c/c-decl.cc:11655
  #, gcc-internal-format
  msgid "%<union %E%> declared in %<for%> loop initial declaration"
  msgstr "%<union %E%> in Anfangsdeklaration einer %<for%>-Schleife deklariert"
  
! #: c/c-decl.cc:11661
  #, gcc-internal-format
  msgid "%<enum %E%> declared in %<for%> loop initial declaration"
  msgstr "%<enum %E%> in Anfangsdeklaration einer %<for%>-Schleife deklariert"
  
! #: c/c-decl.cc:11665
  #, gcc-internal-format
  msgid "declaration of non-variable %qD in %<for%> loop initial declaration"
  msgstr "Deklaration der Nicht-Variablen %qD in Anfangsdeklaration einer %<for%>-Schleife"
  
! #: c/c-decl.cc:11965
  #, gcc-internal-format
  msgid "incompatible address space qualifiers %qs and %qs"
  msgstr "Inkompatible Adressraumkennzeichen %qs und %qs"
  
! #: c/c-decl.cc:12024 c/c-decl.cc:12031
  #, gcc-internal-format
  msgid "duplicate %qE declaration specifier"
  msgstr "Doppelter Deklarationsspezifizierer %qE"
  
! #: c/c-decl.cc:12059 c/c-decl.cc:13180
  #, gcc-internal-format
  msgid "multiple storage classes in declaration specifiers"
  msgstr "mehrere Speicherklassen in Deklaration"
  
! #: c/c-decl.cc:12061
  #, gcc-internal-format
  msgid "%qs used with %<auto%>"
  msgstr "%qs mit %<auto%> verwendet"
  
  #. auto may only be used with another storage class specifier,
  #. such as constexpr, if the type is inferred.
! #: c/c-decl.cc:12066
  #, gcc-internal-format
  msgid "%<auto%> used with %<constexpr%>"
  msgstr "%<auto%> mit %<constexpr%> verwendet"
  
! #: c/c-decl.cc:12079 c/c-decl.cc:12517 c/c-decl.cc:12975
  #, gcc-internal-format
  msgid "two or more data types in declaration specifiers"
  msgstr "zwei oder mehr Datentypen in Deklaration"
  
! #: c/c-decl.cc:12091 cp/parser.cc:35150
  #, gcc-internal-format
  msgid "%<long long long%> is too long for GCC"
  msgstr "%<long long long%> ist fÃ¼r GCC zu lang"
  
! #: c/c-decl.cc:12104
  #, gcc-internal-format
  msgid "ISO C90 does not support %<long long%>"
  msgstr "ISO-C90 unterstÃ¼tzt nicht %<long long%>"
  
! #: c/c-decl.cc:12357 c/c-parser.cc:12587
  #, gcc-internal-format
  msgid "ISO C90 does not support complex types"
  msgstr "ISO-C90 unterstÃ¼tzt keine komplexen Typen"
  
! #: c/c-decl.cc:12411
  #, gcc-internal-format
  msgid "ISO C does not support saturating types"
  msgstr "ISO-C unterstÃ¼tzt keine sÃ¤ttigenden Typen"
  
! #: c/c-decl.cc:12490 c/c-decl.cc:13115 c/c-decl.cc:13174
  #, gcc-internal-format
  msgid "duplicate %qE"
  msgstr "doppeltes %qE"
  
! #: c/c-decl.cc:12507
  #, gcc-internal-format
  msgid "%qs cannot be defined via %<typedef%>"
  msgstr "%qs kann nicht mittels %<typedef%> definiert werden"
  
! #: c/c-decl.cc:12511
  #, gcc-internal-format
  msgid "%qs cannot be used here"
  msgstr "Â»%sÂ« kann hier nicht verwendet werden"
  
! #: c/c-decl.cc:12564
  #, gcc-internal-format
  msgid "ISO C does not support %<__int%d%> types"
  msgstr "ISO-C unterstÃ¼tzt die Typen %<__int%d%> nicht"
  
! #: c/c-decl.cc:12586
  #, gcc-internal-format
  msgid "%<__int%d%> is not supported on this target"
  msgstr "%<__int%d%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt"
  
! #: c/c-decl.cc:12629
  #, gcc-internal-format
  msgid "ISO C90 does not support boolean types"
  msgstr "ISO-C90 unterstÃ¼tzt keine booleschen Typen"
  
! #: c/c-decl.cc:12748
  #, gcc-internal-format
  msgid "ISO C does not support the %<_Float%d%s%> type before C23"
  msgstr "ISO-C unterstÃ¼tzt den Typen %<_Float%d%s%> erst ab C23"
  
! #: c/c-decl.cc:12799 cp/parser.cc:20893
  #, gcc-internal-format
  msgid "%<_Float%d%s%> is not supported on this target"
  msgstr "%<_Float%d%s%> wird fÃ¼r dieses Ziel nicht unterstÃ¼tzt"
  
! #: c/c-decl.cc:12875
  #, gcc-internal-format
  msgid "ISO C does not support decimal floating-point before C23"
  msgstr "ISO-C unterstÃ¼tzt dezimale Gleitkommazahlen erst ab C23"
  
! #: c/c-decl.cc:12899 c/c-decl.cc:13276 c/c-parser.cc:11488
  #, gcc-internal-format
  msgid "fixed-point types not supported for this target"
  msgstr "Festkommatypen werden fÃ¼r dieses Ziel nicht unterstÃ¼tzt"
  
! #: c/c-decl.cc:12901
  #, gcc-internal-format
  msgid "ISO C does not support fixed-point types"
  msgstr "ISO-C unterstÃ¼tzt keine Ganzzahltypen"
  
! #: c/c-decl.cc:12930
  #, gcc-internal-format
  msgid "%<_BitInt%> argument is not an integer constant expression"
  msgstr "%<_BitInt%>-Argument ist kein konstanter Ganzzahlausdruck"
  
! #: c/c-decl.cc:12936
  #, gcc-internal-format
  msgid "%<_BitInt%> argument %qE is not a positive integer constant expression"
  msgstr "%<_BitInt%>-Argument %qE ist kein positiver konstanter Ganzzahlausdruck"
  
! #: c/c-decl.cc:12943
  #, gcc-internal-format
  msgid "%<_BitInt%> argument %qE is larger than %<BITINT_MAXWIDTH%> %qd"
  msgstr "%<_BitInt%>-Argument %qE ist grÃ¶ÃŸer als %<BITINT_MAXWIDTH%> %qd"
  
! #: c/c-decl.cc:12991
  #, gcc-internal-format
  msgid "C++ lookup of %qD would return a field, not a type"
  msgstr "Nachschlagen von %qD wÃ¼rde in C++ ein Feld, keinen Typen zurÃ¼ckgeben"
  
! #: c/c-decl.cc:13004
  #, gcc-internal-format
  msgid "%qE fails to be a typedef or built in type"
  msgstr "%qE ist kein typedef oder eingebauter Typ"
  
! #: c/c-decl.cc:13059
  #, gcc-internal-format
  msgid "%qE is not at beginning of declaration"
  msgstr "%qE ist nicht am Anfang einer Deklaration"
  
  #. auto may only be used with another storage class specifier,
  #. such as constexpr, if the type is inferred.
! #: c/c-decl.cc:13080 c/c-decl.cc:13157
  #, gcc-internal-format
  msgid "%qE used with %<auto%>"
  msgstr "%qE mit %<auto%> verwendet"
  
! #: c/c-decl.cc:13082
  #, gcc-internal-format
  msgid "%qE used with %<register%>"
  msgstr "%qE mit %<register%> verwendet"
  
! #: c/c-decl.cc:13084 c/c-decl.cc:13153
  #, gcc-internal-format
  msgid "%qE used with %<typedef%>"
  msgstr "%qE mit %<typedef%> verwendet"
  
! #: c/c-decl.cc:13086 c/c-decl.cc:13123
  #, gcc-internal-format
  msgid "%qE used with %<constexpr%>"
  msgstr "%qE mit %<constexpr%> verwendet"
  
! #: c/c-decl.cc:13100 c/c-parser.cc:3365 c/c-parser.cc:4736 c/c-parser.cc:10752
  #, gcc-internal-format
  msgid "ISO C99 does not support %qE"
  msgstr "ISO-C99 unterstÃ¼tzt nicht %qE"
  
! #: c/c-decl.cc:13103 c/c-parser.cc:3368 c/c-parser.cc:4739 c/c-parser.cc:10755
  #, gcc-internal-format
  msgid "ISO C90 does not support %qE"
  msgstr "ISO-C90 unterstÃ¼tzt nicht %qE"
  
! #: c/c-decl.cc:13129
  #, gcc-internal-format
  msgid "%<__thread%> before %<extern%>"
  msgstr "%<__thread%> vor %<extern%>"
  
! #: c/c-decl.cc:13138
  #, gcc-internal-format
  msgid "%<__thread%> before %<static%>"
  msgstr "%<__thread%> vor %<static%>"
  
! #: c/c-decl.cc:13144
  #, gcc-internal-format
  msgid "%<typedef%> used with %<auto%>"
  msgstr "%<typedef%> mit %<auto%> verwendet"
  
! #: c/c-decl.cc:13151
  #, gcc-internal-format
  msgid "%qE used with %<extern%>"
  msgstr "%qE mit %<extern%> verwendet"
  
! #: c/c-decl.cc:13159
  #, gcc-internal-format
  msgid "%qE used with %qs"
  msgstr "%qE mit %qs verwendet"
  
! #: c/c-decl.cc:13172
  #, gcc-internal-format
  msgid "duplicate %<_Thread_local%> or %<__thread%>"
  msgstr "doppeltes %<_Thread_local%> oder %<__thread%>"
  
! #: c/c-decl.cc:13188
  #, gcc-internal-format
  msgid "%qs used with %qE"
  msgstr "%qs mit %qE verwendet"
  
! #: c/c-decl.cc:13196
  #, gcc-internal-format
  msgid "%<constexpr%> used with %qE"
  msgstr "%<constexpr%> mit %qE verwendet"
  
! #: c/c-decl.cc:13273
  #, gcc-internal-format
  msgid "%<_Sat%> is used without %<_Fract%> or %<_Accum%>"
  msgstr "%<_Sat%> ohne %<_Fract%> oder %<_Accum%> verwendet"
  
! #: c/c-decl.cc:13288
  #, gcc-internal-format
  msgid "ISO C does not support plain %<complex%> meaning %<double complex%>"
  msgstr "ISO-C unterstÃ¼tzt nicht %<double complex%> bedeutendes einfaches %<complex%>"
  
! #: c/c-decl.cc:13299
  #, gcc-internal-format
  msgid "ISO C does not support %<auto%> type deduction before C23"
  msgstr "ISO C unterstÃ¼tzt %<auto%>-Typinferenz erst ab C23"
  
! #: c/c-decl.cc:13328
  #, gcc-internal-format
  msgid "%<__auto_type%> followed by %<[[]]%> attributes"
  msgstr "%<__auto_type%> gefolgt von %<[[]]%>-Attributen"
  
! #: c/c-decl.cc:13354 c/c-decl.cc:13370 c/c-decl.cc:13396
  #, gcc-internal-format
  msgid "ISO C does not support complex integer types"
  msgstr "ISO-C unterstÃ¼tzt keine komplexen Ganzzahltypen"
  
! #: c/c-decl.cc:13542
  #, gcc-internal-format
  msgid "%<signed _BitInt%> argument must be at least 2"
  msgstr "Argument fÃ¼r %<signed _BitInt%> muss mindestens 2 sein"
  
! #: c/c-decl.cc:13551
  #, gcc-internal-format
  msgid "ISO C does not support %<%s_BitInt(%d)%> before C23"
  msgstr "ISO-C unterstÃ¼tzt %<%s_BitInt(%d)%> erst ab C23"
  
! #: c/c-decl.cc:13851 cp/semantics.cc:6784
  #, gcc-internal-format
  msgid "%<#pragma omp declare reduction%> combiner refers to variable %qD which is not %<omp_out%> nor %<omp_in%>"
  msgstr "%<#pragma omp declare reduction%>-Kombinierer verweist auf Variable %qD, die weder %<omp_out%> noch %<omp_in%> ist"
  
! #: c/c-decl.cc:13855 cp/semantics.cc:6788
  #, gcc-internal-format
  msgid "%<#pragma omp declare reduction%> initializer refers to variable %qD which is not %<omp_priv%> nor %<omp_orig%>"
  msgstr "%<#pragma omp declare reduction%>-Initialisierung verweist auf Variable %qD, die weder %<omp_priv%> noch %<omp_orig%> ist"
  
! #: c/c-decl.cc:13979
  #, gcc-internal-format
  msgid "ISO C does not support %qs statement with an identifier operand before C2Y"
  msgstr "ISO C unterstÃ¼tzt eine %qs-Anweisung mit einem Bezeichner als Operanden erst ab C2Y"
  
! #: c/c-decl.cc:14031
  #, gcc-internal-format
  msgid "%<break%> statement operand %qE does not refer to a named loop or %<switch%>; did you mean %qs?"
  msgstr "der Operand %qE der %<break%>-Anweisung bezieht sich nicht auf eine benannte Schleife oder eine %<switch%>-Anweisung; meinten Sie %qs?"
  
! #: c/c-decl.cc:14035
  #, gcc-internal-format
  msgid "%<continue%> statement operand %qE does not refer to a named loop; did you mean %qs?"
  msgstr "der Operand %qE der %<continue%>-Anweisung bezieht sich nicht auf eine benannte Schleife; meinten Sie %qs?"
  
! #: c/c-decl.cc:14040
  #, gcc-internal-format
  msgid "%<break%> statement operand %qE does not refer to a named loop or %<switch%>"
  msgstr "der Operand der %<break%>-Anweisung %qE bezieht sich nicht auf eine benannte Schleife oder eine %<switch%>-Anweisung"
  
! #: c/c-decl.cc:14043
  #, gcc-internal-format
  msgid "%<continue%> statement operand %qE does not refer to a named loop"
  msgstr "der Operand %qE der %<continue%>-Anweisung bezieht sich nicht auf eine benannte Schleife"
  
! #: c/c-decl.cc:14049
  #, gcc-internal-format
  msgid "%<continue%> statement operand %qE refers to a named %<switch%>"
  msgstr "der Operand %qE der %<continue%>-Anweisung bezieht sich auf eine benannte %<switch%>-Anweisung"
  
! #: c/c-decl.cc:14051 c/c-decl.cc:14068
  #, gcc-internal-format
  msgid "%<switch%> name defined here"
  msgstr "der %<switch%>-Name ist hier definiert"
  
! #: c/c-decl.cc:14059
  #, gcc-internal-format
  msgid "%qs statement operand %qE refers to a loop outside of its body"
  msgstr "der Operand %2$qE der %1$qs Anweisung bezieht sich auf eine Schleife auÃŸerhalb ihres KÃ¶rpers"
  
! #: c/c-decl.cc:14061
  #, gcc-internal-format
  msgid "loop name defined here"
  msgstr "der Schleifenname ist hier definiert"
  
! #: c/c-decl.cc:14065
  #, gcc-internal-format
  msgid "%<break%> statement operand %qE refers to a %<switch%> outside of its body"
  msgstr "der Operand %qE der %<break%>-Anweisung bezieht sich auf eine %<switch%>-Anweisung auÃŸerhalb des Anweisungsrumpfs"
*************** msgstr "der Operand %qE der %<break%>-An
*** 47552,47588 ****
  msgid "%qs is a keyword with %qs onwards"
  msgstr "%qs ist ab %qs ein SchlÃ¼sselwort"
  
! #: c/c-fold.cc:392 c/c-typeck.cc:14134 cp/typeck.cc:5803
  #, gcc-internal-format
  msgid "left shift of negative value"
  msgstr "left shift of negative value"
  
! #: c/c-fold.cc:405 c/c-typeck.cc:14143 cp/typeck.cc:5811
  #, gcc-internal-format
  msgid "left shift count is negative"
  msgstr "Links-Schiebe-Weite ist negativ"
  
! #: c/c-fold.cc:406 c/c-typeck.cc:14070 cp/typeck.cc:5750
  #, gcc-internal-format
  msgid "right shift count is negative"
  msgstr "Rechts-Schiebe-Weite ist negativ"
  
! #: c/c-fold.cc:416 c/c-typeck.cc:14162 cp/typeck.cc:5819
  #, gcc-internal-format
  msgid "left shift count >= width of type"
  msgstr "Links-Schiebe-Weite >= Breite des Typs"
  
! #: c/c-fold.cc:417 c/c-typeck.cc:14094 cp/typeck.cc:5761
  #, gcc-internal-format
  msgid "right shift count >= width of type"
  msgstr "Rechts-Schiebe-Weite >= Breite des Typs"
  
! #: c/c-fold.cc:424 c/c-typeck.cc:14154
  #, gcc-internal-format
  msgid "left shift count >= width of vector element"
  msgstr "Links-Schiebe-Weite >= Breite des Vektorelements"
  
! #: c/c-fold.cc:425 c/c-typeck.cc:14081
  #, gcc-internal-format
  msgid "right shift count >= width of vector element"
  msgstr "Rechts-Schiebe-Weite >= Breite des Vektorelements"
--- 47560,47596 ----
  msgid "%qs is a keyword with %qs onwards"
  msgstr "%qs ist ab %qs ein SchlÃ¼sselwort"
  
! #: c/c-fold.cc:392 c/c-typeck.cc:14151 cp/typeck.cc:5919
  #, gcc-internal-format
  msgid "left shift of negative value"
  msgstr "left shift of negative value"
  
! #: c/c-fold.cc:405 c/c-typeck.cc:14160 cp/typeck.cc:5927
  #, gcc-internal-format
  msgid "left shift count is negative"
  msgstr "Links-Schiebe-Weite ist negativ"
  
! #: c/c-fold.cc:406 c/c-typeck.cc:14087 cp/typeck.cc:5866
  #, gcc-internal-format
  msgid "right shift count is negative"
  msgstr "Rechts-Schiebe-Weite ist negativ"
  
! #: c/c-fold.cc:416 c/c-typeck.cc:14179 cp/typeck.cc:5935
  #, gcc-internal-format
  msgid "left shift count >= width of type"
  msgstr "Links-Schiebe-Weite >= Breite des Typs"
  
! #: c/c-fold.cc:417 c/c-typeck.cc:14111 cp/typeck.cc:5877
  #, gcc-internal-format
  msgid "right shift count >= width of type"
  msgstr "Rechts-Schiebe-Weite >= Breite des Typs"
  
! #: c/c-fold.cc:424 c/c-typeck.cc:14171
  #, gcc-internal-format
  msgid "left shift count >= width of vector element"
  msgstr "Links-Schiebe-Weite >= Breite des Vektorelements"
  
! #: c/c-fold.cc:425 c/c-typeck.cc:14098
  #, gcc-internal-format
  msgid "right shift count >= width of vector element"
  msgstr "Rechts-Schiebe-Weite >= Breite des Vektorelements"
*************** msgstr "Konfliktmarker fÃ¼r Versionskont
*** 47602,47731 ****
  msgid "to match this %qs"
  msgstr "andere Fundstelle von %qs ist hier"
  
! #: c/c-parser.cc:1431 cp/parser.cc:35328
  #, gcc-internal-format
  msgid "expected end of line"
  msgstr "Zeilenende erwartet"
  
! #: c/c-parser.cc:1950
  #, gcc-internal-format
  msgid "ISO C forbids an empty translation unit"
  msgstr "ISO-C verbietet eine leere Quelldatei"
  
! #: c/c-parser.cc:1976 c/c-parser.cc:1985 c/c-parser.cc:27770 cp/parser.cc:51250
  #: cp/semantics.cc:4007 cp/semantics.cc:4016
  #, gcc-internal-format
  msgid "%qs without corresponding %qs"
  msgstr "%qs ohne entsprechendes %qs"
  
! #: c/c-parser.cc:2081 c/c-parser.cc:14533
  #, gcc-internal-format
  msgid "ISO C does not allow extra %<;%> outside of a function"
  msgstr "ISO-C erlaubt kein zusÃ¤tzliches %<;%> auÃŸerhalb einer Funktion"
  
! #: c/c-parser.cc:2165
  #, gcc-internal-format
  msgid "%<assume%> attribute at top level"
  msgstr "%<assume%>-Attribut auf hÃ¶chster Ebene"
  
! #: c/c-parser.cc:2364
  #, gcc-internal-format
  msgid "unknown type name %qE; use %<struct%> keyword to refer to the type"
  msgstr "unbekannter Typname %qE; verwenden Sie das %<struct%>-SchlÃ¼sselwort, um auf den Typ zu verweisen"
  
! #: c/c-parser.cc:2372
  #, gcc-internal-format
  msgid "unknown type name %qE; use %<union%> keyword to refer to the type"
  msgstr "unbekannter Typname %qE; verwenden Sie das %<union%>-SchlÃ¼sselwort, um auf den Typ zu verweisen"
  
! #: c/c-parser.cc:2380
  #, gcc-internal-format
  msgid "unknown type name %qE; use %<enum%> keyword to refer to the type"
  msgstr "unbekannter Typname %qE; verwenden Sie das %<enum%>-SchlÃ¼sselwort, um auf den Typ zu verweisen"
  
! #: c/c-parser.cc:2393 c/c-parser.cc:3588 c/c-parser.cc:5295
  #, gcc-internal-format
  msgid "unknown type name %qE; did you mean %qs?"
  msgstr "Unbekannter Typname %qE; meinten Sie %qs?"
  
! #: c/c-parser.cc:2397 c/c-parser.cc:3592 c/c-parser.cc:5299
  #, gcc-internal-format
  msgid "unknown type name %qE"
  msgstr "unbekannter Typname: %qE"
  
! #: c/c-parser.cc:2424 c/c-parser.cc:15911 c/c-parser.cc:24927
! #: c/c-parser.cc:25670 c/c-parser.cc:26256 cp/parser.cc:48093
! #: cp/parser.cc:53871
  #, gcc-internal-format
  msgid "expected declaration specifiers"
  msgstr "Deklarationsspezifizierer erwartet"
  
! #: c/c-parser.cc:2448
  #, gcc-internal-format
  msgid "%qT declared in underspecified object declaration"
  msgstr "%qT ist in unvollstÃ¤ndig angegebener Objektdeklaration deklariert"
  
! #: c/c-parser.cc:2453
  #, gcc-internal-format
  msgid "%qT defined in underspecified object declaration"
  msgstr "%qT ist in unvollstÃ¤ndig angegebener Objektdeklaration definiert"
  
! #: c/c-parser.cc:2489
  #, gcc-internal-format
  msgid "%qs in empty declaration"
  msgstr "%qs in leerer Deklaration"
  
! #: c/c-parser.cc:2503
  #, gcc-internal-format
  msgid "%<fallthrough%> attribute at top level"
  msgstr "%<fallthrough%>-Attribut auf hÃ¶chster Ebene"
  
! #: c/c-parser.cc:2541 c/c-parser.cc:8296
  #, gcc-internal-format
  msgid "attribute %<musttail%> mixed with other attributes on %<return%> statement"
  msgstr "in der %<return%>-Anweisung ist das Attribut %<musttail%> mit anderen Attributen vermischt"
  
! #: c/c-parser.cc:2557 c/c-parser.cc:4483
  #, gcc-internal-format
  msgid "expected %<;%>, identifier or %<(%>"
  msgstr "%<;%>, Bezeichner oder %<(%> erwartet"
  
! #: c/c-parser.cc:2575 cp/parser.cc:37586 cp/parser.cc:37658
  #, gcc-internal-format
  msgid "prefix attributes are ignored for methods"
  msgstr "PrÃ¤fixattribute werden fÃ¼r Methoden ignoriert"
  
! #: c/c-parser.cc:2610
  #, gcc-internal-format
  msgid "prefix attributes are ignored for implementations"
  msgstr "PrÃ¤fixattribute werden fÃ¼r Implementierungen ignoriert"
  
! #: c/c-parser.cc:2631
  #, gcc-internal-format
  msgid "unexpected attribute"
  msgstr "unerwartetes Attribut"
  
! #: c/c-parser.cc:2641 c/c-parser.cc:8316 cp/parser.cc:13359 cp/parser.cc:13620
  #, gcc-internal-format
  msgid "%<fallthrough%> attribute not followed by %<;%>"
  msgstr "%<fallthrough%>-Attribut ohne darauffolgendes %<;%>"
  
! #: c/c-parser.cc:2644 c/c-parser.cc:8283 cp/cp-gimplify.cc:3684
  #, gcc-internal-format
  msgid "%<assume%> attribute not followed by %<;%>"
  msgstr "%<assume%>-Attribut ohne darauffolgendes %<;%>"
  
! #: c/c-parser.cc:2694
  #, gcc-internal-format
  msgid "%<__auto_type%> requires a plain identifier as declarator"
  msgstr "%<__auto_type%> erfordert einen einfachen Bezeichner als Deklarator"
  
! #: c/c-parser.cc:2707
  #, gcc-internal-format
  msgid "%<auto%> requires a plain identifier, possibly with attributes, as declarator"
  msgstr "%<auto%> erfordert einen einfachen Bezeichner, optional mit Attributen, als Deklarator"
  
! #: c/c-parser.cc:2733
  #, gcc-internal-format
  msgid "data definition has no type or storage class"
  msgstr "Datendefinition hat keinen Typ oder Speicherklasse"
--- 47610,47739 ----
  msgid "to match this %qs"
  msgstr "andere Fundstelle von %qs ist hier"
  
! #: c/c-parser.cc:1476 cp/parser.cc:35387
  #, gcc-internal-format
  msgid "expected end of line"
  msgstr "Zeilenende erwartet"
  
! #: c/c-parser.cc:1995
  #, gcc-internal-format
  msgid "ISO C forbids an empty translation unit"
  msgstr "ISO-C verbietet eine leere Quelldatei"
  
! #: c/c-parser.cc:2021 c/c-parser.cc:2030 c/c-parser.cc:27816 cp/parser.cc:51309
  #: cp/semantics.cc:4007 cp/semantics.cc:4016
  #, gcc-internal-format
  msgid "%qs without corresponding %qs"
  msgstr "%qs ohne entsprechendes %qs"
  
! #: c/c-parser.cc:2126 c/c-parser.cc:14578
  #, gcc-internal-format
  msgid "ISO C does not allow extra %<;%> outside of a function"
  msgstr "ISO-C erlaubt kein zusÃ¤tzliches %<;%> auÃŸerhalb einer Funktion"
  
! #: c/c-parser.cc:2210
  #, gcc-internal-format
  msgid "%<assume%> attribute at top level"
  msgstr "%<assume%>-Attribut auf hÃ¶chster Ebene"
  
! #: c/c-parser.cc:2409
  #, gcc-internal-format
  msgid "unknown type name %qE; use %<struct%> keyword to refer to the type"
  msgstr "unbekannter Typname %qE; verwenden Sie das %<struct%>-SchlÃ¼sselwort, um auf den Typ zu verweisen"
  
! #: c/c-parser.cc:2417
  #, gcc-internal-format
  msgid "unknown type name %qE; use %<union%> keyword to refer to the type"
  msgstr "unbekannter Typname %qE; verwenden Sie das %<union%>-SchlÃ¼sselwort, um auf den Typ zu verweisen"
  
! #: c/c-parser.cc:2425
  #, gcc-internal-format
  msgid "unknown type name %qE; use %<enum%> keyword to refer to the type"
  msgstr "unbekannter Typname %qE; verwenden Sie das %<enum%>-SchlÃ¼sselwort, um auf den Typ zu verweisen"
  
! #: c/c-parser.cc:2438 c/c-parser.cc:3633 c/c-parser.cc:5340
  #, gcc-internal-format
  msgid "unknown type name %qE; did you mean %qs?"
  msgstr "Unbekannter Typname %qE; meinten Sie %qs?"
  
! #: c/c-parser.cc:2442 c/c-parser.cc:3637 c/c-parser.cc:5344
  #, gcc-internal-format
  msgid "unknown type name %qE"
  msgstr "unbekannter Typname: %qE"
  
! #: c/c-parser.cc:2469 c/c-parser.cc:15956 c/c-parser.cc:24972
! #: c/c-parser.cc:25715 c/c-parser.cc:26301 cp/parser.cc:48152
! #: cp/parser.cc:53924
  #, gcc-internal-format
  msgid "expected declaration specifiers"
  msgstr "Deklarationsspezifizierer erwartet"
  
! #: c/c-parser.cc:2493
  #, gcc-internal-format
  msgid "%qT declared in underspecified object declaration"
  msgstr "%qT ist in unvollstÃ¤ndig angegebener Objektdeklaration deklariert"
  
! #: c/c-parser.cc:2498
  #, gcc-internal-format
  msgid "%qT defined in underspecified object declaration"
  msgstr "%qT ist in unvollstÃ¤ndig angegebener Objektdeklaration definiert"
  
! #: c/c-parser.cc:2534
  #, gcc-internal-format
  msgid "%qs in empty declaration"
  msgstr "%qs in leerer Deklaration"
  
! #: c/c-parser.cc:2548
  #, gcc-internal-format
  msgid "%<fallthrough%> attribute at top level"
  msgstr "%<fallthrough%>-Attribut auf hÃ¶chster Ebene"
  
! #: c/c-parser.cc:2586 c/c-parser.cc:8341
  #, gcc-internal-format
  msgid "attribute %<musttail%> mixed with other attributes on %<return%> statement"
  msgstr "in der %<return%>-Anweisung ist das Attribut %<musttail%> mit anderen Attributen vermischt"
  
! #: c/c-parser.cc:2602 c/c-parser.cc:4528
  #, gcc-internal-format
  msgid "expected %<;%>, identifier or %<(%>"
  msgstr "%<;%>, Bezeichner oder %<(%> erwartet"
  
! #: c/c-parser.cc:2620 cp/parser.cc:37645 cp/parser.cc:37717
  #, gcc-internal-format
  msgid "prefix attributes are ignored for methods"
  msgstr "PrÃ¤fixattribute werden fÃ¼r Methoden ignoriert"
  
! #: c/c-parser.cc:2655
  #, gcc-internal-format
  msgid "prefix attributes are ignored for implementations"
  msgstr "PrÃ¤fixattribute werden fÃ¼r Implementierungen ignoriert"
  
! #: c/c-parser.cc:2676
  #, gcc-internal-format
  msgid "unexpected attribute"
  msgstr "unerwartetes Attribut"
  
! #: c/c-parser.cc:2686 c/c-parser.cc:8361 cp/parser.cc:13361 cp/parser.cc:13622
  #, gcc-internal-format
  msgid "%<fallthrough%> attribute not followed by %<;%>"
  msgstr "%<fallthrough%>-Attribut ohne darauffolgendes %<;%>"
  
! #: c/c-parser.cc:2689 c/c-parser.cc:8328 cp/cp-gimplify.cc:3689
  #, gcc-internal-format
  msgid "%<assume%> attribute not followed by %<;%>"
  msgstr "%<assume%>-Attribut ohne darauffolgendes %<;%>"
  
! #: c/c-parser.cc:2739
  #, gcc-internal-format
  msgid "%<__auto_type%> requires a plain identifier as declarator"
  msgstr "%<__auto_type%> erfordert einen einfachen Bezeichner als Deklarator"
  
! #: c/c-parser.cc:2752
  #, gcc-internal-format
  msgid "%<auto%> requires a plain identifier, possibly with attributes, as declarator"
  msgstr "%<auto%> erfordert einen einfachen Bezeichner, optional mit Attributen, als Deklarator"
  
! #: c/c-parser.cc:2778
  #, gcc-internal-format
  msgid "data definition has no type or storage class"
  msgstr "Datendefinition hat keinen Typ oder Speicherklasse"
*************** msgstr "Datendefinition hat keinen Typ o
*** 47733,47764 ****
  #. This means there is an attribute specifier after
  #. the declarator in a function definition.  Provide
  #. some more information for the user.
! #: c/c-parser.cc:2748
  #, gcc-internal-format
  msgid "attributes should be specified before the declarator in a function definition"
  msgstr "Attribute sollten in einer Funktionsdefinition vor dem Deklarator angegeben werden"
  
! #: c/c-parser.cc:2787
  #, gcc-internal-format
  msgid "%<__auto_type%> used with a bit-field initializer"
  msgstr "%<__auto_type%> wird mit einem Bitfeld-Initialisierer verwendet"
  
! #: c/c-parser.cc:2899 c/c-parser.cc:3044
  #, gcc-internal-format
  msgid "%qs requires an initialized data declaration"
  msgstr "%qs benÃ¶tigt eine initialisierte Datendeklaration"
  
! #: c/c-parser.cc:2999
  #, gcc-internal-format
  msgid "%qs may only be used with a single declarator"
  msgstr "%qs kann nur mit einem einzelnen Deklarator verwendet werden"
  
! #: c/c-parser.cc:3031 cp/parser.cc:16635
  #, gcc-internal-format
  msgid "expected %<,%> or %<;%>"
  msgstr "%<,%> oder %<;%> erwartet"
  
! #: c/c-parser.cc:3036
  #, gcc-internal-format
  msgid "declaration in condition can only declare a single object"
  msgstr "Deklaration in Bedingung kann nur ein einziges Objekt deklarieren"
--- 47741,47772 ----
  #. This means there is an attribute specifier after
  #. the declarator in a function definition.  Provide
  #. some more information for the user.
! #: c/c-parser.cc:2793
  #, gcc-internal-format
  msgid "attributes should be specified before the declarator in a function definition"
  msgstr "Attribute sollten in einer Funktionsdefinition vor dem Deklarator angegeben werden"
  
! #: c/c-parser.cc:2832
  #, gcc-internal-format
  msgid "%<__auto_type%> used with a bit-field initializer"
  msgstr "%<__auto_type%> wird mit einem Bitfeld-Initialisierer verwendet"
  
! #: c/c-parser.cc:2944 c/c-parser.cc:3089
  #, gcc-internal-format
  msgid "%qs requires an initialized data declaration"
  msgstr "%qs benÃ¶tigt eine initialisierte Datendeklaration"
  
! #: c/c-parser.cc:3044
  #, gcc-internal-format
  msgid "%qs may only be used with a single declarator"
  msgstr "%qs kann nur mit einem einzelnen Deklarator verwendet werden"
  
! #: c/c-parser.cc:3076 cp/parser.cc:16639
  #, gcc-internal-format
  msgid "expected %<,%> or %<;%>"
  msgstr "%<,%> oder %<;%> erwartet"
  
! #: c/c-parser.cc:3081
  #, gcc-internal-format
  msgid "declaration in condition can only declare a single object"
  msgstr "Deklaration in Bedingung kann nur ein einziges Objekt deklarieren"
*************** msgstr "Deklaration in Bedingung kann nu
*** 47766,48132 ****
  #. This can appear in many cases looking nothing like a
  #. function definition, so we don't give a more specific
  #. error suggesting there was one.
! #: c/c-parser.cc:3055 c/c-parser.cc:3097
  #, gcc-internal-format
  msgid "expected %<=%>, %<,%>, %<;%>, %<asm%> or %<__attribute__%>"
  msgstr "%<=%>, %<,%>, %<;%>, %<asm%> oder %<__attribute__%> erwartet"
  
! #: c/c-parser.cc:3064
  #, gcc-internal-format
  msgid "ISO C forbids nested functions"
  msgstr "ISO-C verbietet verschachtelte Funktionen"
  
! #: c/c-parser.cc:3346 c/c-parser.cc:9636 c/c-parser.cc:15984
! #: c/c-parser.cc:20710 cp/parser.cc:42983
  #, gcc-internal-format
  msgid "expected string literal"
  msgstr "Zeichenkettenliteral erwartet"
  
! #: c/c-parser.cc:3355
  #, gcc-internal-format
  msgid "ISO C11 does not support omitting the string in %qE"
  msgstr "das Weglassen der Zeichenkette in %qE wird von ISO C11 nicht unterstÃ¼tzt"
  
! #: c/c-parser.cc:3361
  #, gcc-internal-format
  msgid "expression in static assertion is not an integer"
  msgstr "Ausdruck in statischer Behauptung ist keine Ganzzahl"
  
! #: c/c-parser.cc:3370
  #, gcc-internal-format
  msgid "expression in static assertion is not an integer constant expression"
  msgstr "Ausdruck in statischer Behauptung ist kein konstanter Ganzzahlausdruck"
  
! #: c/c-parser.cc:3375
  #, gcc-internal-format
  msgid "expression in static assertion is not constant"
  msgstr "Ausdruck in statischer Behauptung ist nicht konstant"
  
! #: c/c-parser.cc:3382
  #, gcc-internal-format
  msgid "static assertion failed: %E"
  msgstr "statische Behauptung gescheitert: %E"
  
! #: c/c-parser.cc:3384 cp/semantics.cc:12469
  #, gcc-internal-format
  msgid "static assertion failed"
  msgstr "statische Behauptung gescheitert"
  
! #: c/c-parser.cc:3764
  #, gcc-internal-format
  msgid "%<_Atomic%> in Objective-C"
  msgstr "%<_Atomic%> in Objective-C"
  
! #: c/c-parser.cc:3767
  #, gcc-internal-format
  msgid "ISO C99 does not support the %<_Atomic%> qualifier"
  msgstr "ISO-C99 unterstÃ¼tzt den %<_Atomic%>-Qualifizierer nicht"
  
! #: c/c-parser.cc:3770
  #, gcc-internal-format
  msgid "ISO C90 does not support the %<_Atomic%> qualifier"
  msgstr "ISO-C90 unterstÃ¼tzt den %<_Atomic%>-Qualifizierer nicht"
  
! #: c/c-parser.cc:3798
  #, gcc-internal-format
  msgid "%<_Atomic%> applied to a qualified type"
  msgstr "%<_Atomic%> auf einen qualifizierten Typen angewandt"
  
! #: c/c-parser.cc:3828
  #, gcc-internal-format
  msgid "%<__GIMPLE%> only valid with %<-fgimple%>"
  msgstr "%<__GIMPLE%> ist nur mit %<-fgimple%> gÃ¼ltig"
  
! #: c/c-parser.cc:3865
  #, gcc-internal-format
  msgid "empty enum is invalid"
  msgstr "Leeres Enum ist ungÃ¼ltig"
  
! #: c/c-parser.cc:3876
  #, gcc-internal-format
  msgid "cannot use keyword %qs as enumeration constant"
  msgstr "das SchlÃ¼sselwort %qs kann nicht als AufzÃ¤hlungskonstante verwendet werden"
  
  #. Otherwise, a more generic error message.
! #: c/c-parser.cc:3888 c/c-parser.cc:5120 c/c-parser.cc:5978 c/c-parser.cc:5995
! #: c/c-parser.cc:6580 c/c-parser.cc:7489 c/c-parser.cc:9503 c/c-parser.cc:9586
! #: c/c-parser.cc:10566 c/c-parser.cc:10881 c/c-parser.cc:10890
! #: c/c-parser.cc:11503 c/c-parser.cc:11791 c/c-parser.cc:11822
! #: c/c-parser.cc:13189 c/c-parser.cc:13763 c/c-parser.cc:13801
! #: c/c-parser.cc:14115 c/c-parser.cc:14166 c/c-parser.cc:14326
! #: c/c-parser.cc:14356 c/c-parser.cc:14364 c/c-parser.cc:14393
! #: c/c-parser.cc:14406 c/c-parser.cc:14712 c/c-parser.cc:14836
! #: c/c-parser.cc:15421 c/c-parser.cc:15474 c/c-parser.cc:15490
! #: c/c-parser.cc:15536 c/c-parser.cc:16557 c/c-parser.cc:16602
! #: c/c-parser.cc:19478 c/c-parser.cc:19615 c/c-parser.cc:20481
! #: c/c-parser.cc:23540 c/c-parser.cc:26738 c/c-parser.cc:26924
! #: c/gimple-parser.cc:1981 c/gimple-parser.cc:2028 cp/parser.cc:9871
! #: cp/parser.cc:35331 cp/parser.cc:38563 cp/parser.cc:41808 cp/parser.cc:42000
! #: cp/parser.cc:49790 cp/parser.cc:53098
  #, gcc-internal-format
  msgid "expected identifier"
  msgstr "Bezeichner erwartet"
  
! #: c/c-parser.cc:3961
  #, gcc-internal-format
  msgid "ISO C does not support specifying %<enum%> underlying types before C23"
  msgstr "ISO C unterstÃ¼tzt die Angabe eines Basistyps fÃ¼r %<enum%> erst ab C23"
  
! #: c/c-parser.cc:3970
  #, gcc-internal-format
  msgid "%<enum%> declared both with and without fixed underlying type"
  msgstr "%<enum%> wurde sowohl mit als auch ohne zugrundeliegendem festen Typ deklariert"
  
! #: c/c-parser.cc:3993
  #, gcc-internal-format
  msgid "no %<enum%> underlying type specified"
  msgstr "kein zugrundeliegender Typ fÃ¼r %<enum%> angegeben"
  
! #: c/c-parser.cc:3997
  #, gcc-internal-format
  msgid "invalid %<enum%> underlying type"
  msgstr "ungÃ¼ltiger Basistyp fÃ¼r %<enum%>"
  
! #: c/c-parser.cc:4027
  #, gcc-internal-format
  msgid "%<enum%> underlying type incompatible with previous declaration"
  msgstr "der auf %<enum%> basierende Typ ist zu der vorherigen Deklaration inkompatibel"
  
! #: c/c-parser.cc:4103 cp/parser.cc:22433
  #, gcc-internal-format
  msgid "comma at end of enumerator list"
  msgstr "Komma am Ende der AufzÃ¤hlungsliste"
  
! #: c/c-parser.cc:4109 c/c-parser.cc:20758 cp/parser.cc:43046
  #: go/gofrontend/embed.cc:424
  #, gcc-internal-format
  msgid "expected %<,%> or %<}%>"
  msgstr "%<,%> oder %<}%> erwartet"
  
! #: c/c-parser.cc:4152
  #, gcc-internal-format
  msgid "ISO C forbids forward references to %<enum%> types"
  msgstr "ISO-C verbietet VorwÃ¤rts-Referenzen auf %<enum%>-Typen"
  
! #: c/c-parser.cc:4277
  #, gcc-internal-format
  msgid "expected class name"
  msgstr "Klassenname erwartet"
  
! #: c/c-parser.cc:4299
  #, gcc-internal-format
  msgid "extra semicolon in struct or union specified"
  msgstr "zusÃ¤tzliches Semikolon in Â»structÂ« oder Â»unionÂ« angegeben"
  
! #: c/c-parser.cc:4328
  #, gcc-internal-format
  msgid "no semicolon at end of struct or union"
  msgstr "kein Semikolon am Ende von Â»structÂ« oder Â»unionÂ«"
  
! #: c/c-parser.cc:4445 c/c-parser.cc:6320
  #, gcc-internal-format
  msgid "expected specifier-qualifier-list"
  msgstr "Spezifizierer-Qualifizierer-Liste erwartet"
  
! #: c/c-parser.cc:4456
  #, gcc-internal-format
  msgid "ISO C forbids member declarations with no members"
  msgstr "ISO-C verbietet Elementdeklarationen ohne Elemente"
  
! #: c/c-parser.cc:4550
  #, gcc-internal-format
  msgid "expected %<,%>, %<;%> or %<}%>"
  msgstr "%<,%>, %<;%> oder %<}%> erwartet"
  
! #: c/c-parser.cc:4557
  #, gcc-internal-format
  msgid "expected %<:%>, %<,%>, %<;%>, %<}%> or %<__attribute__%>"
  msgstr "%<:%>, %<,%>, %<;%>, %<}%> oder %<__attribute__%> erwartet"
  
! #: c/c-parser.cc:4629
  #, gcc-internal-format
  msgid "%<typeof%> applied to a bit-field"
  msgstr "%<typeof%> auf ein Bitfeld angewandt"
  
! #: c/c-parser.cc:4951
  #, gcc-internal-format
  msgid "expected identifier or %<(%>"
  msgstr "Bezeichner oder %<(%> erwartet"
  
! #: c/c-parser.cc:5013
  #, gcc-internal-format
  msgid "%<static%> may not be used with an unspecified variable length array size"
  msgstr "%<static%> darf nicht verwendet werden, wenn die variable ArraylÃ¤nge nicht angegeben ist"
  
! #: c/c-parser.cc:5021
  #, gcc-internal-format
  msgid "%<static%> may not be used without an array size"
  msgstr "%<static%> darf ohne eine ArraygrÃ¶ÃŸe nicht verwendet werden"
  
! #: c/c-parser.cc:5181
  #, gcc-internal-format
  msgid "ISO C requires a named argument before %<...%> before C23"
  msgstr "ISO-C erfordert ein benanntes Argument vor %<...%>, vor C23"
  
! #: c/c-parser.cc:5306
  #, gcc-internal-format
  msgid "expected declaration specifiers or %<...%>"
  msgstr "Deklarationsspezifizierer oder %<...%> erwartet"
  
! #: c/c-parser.cc:5536
  #, gcc-internal-format
  msgid "parentheses must be omitted if attribute argument list is empty"
  msgstr "Klammern mÃ¼ssen weggelassen werden, wenn die Argumentenliste des Attributs leer ist"
  
! #: c/c-parser.cc:5824 cp/parser.cc:30738
  #, gcc-internal-format
  msgid "expected OpenMP directive name"
  msgstr "Name einer OpenMP-Direktive erwartet"
  
! #: c/c-parser.cc:5871 cp/parser.cc:30794
  #, gcc-internal-format
  msgid "expected %<directive%> or %<sequence%>"
  msgstr "%<directive%> oder %<sequence%> erwartet"
  
! #: c/c-parser.cc:6016 cp/parser.cc:30962
  #, gcc-internal-format
  msgid "%<omp::%E%> attribute requires argument"
  msgstr "Attribut %<omp::%E%> erfordert Argument"
  
! #: c/c-parser.cc:6032 cp/parser.cc:30978
  #, gcc-internal-format
  msgid "%qE attribute does not take any arguments"
  msgstr "Attribut %qE akzeptiert keine Argumente"
  
! #: c/c-parser.cc:6153
  #, gcc-internal-format
  msgid "ISO C does not support %<[[]]%> attributes before C23"
  msgstr "ISO-C unterstÃ¼tzt %<[[]]%>-Attribute erst ab C23"
  
! #: c/c-parser.cc:6397 c/c-parser.cc:6463 c/c-typeck.cc:9642
  #, gcc-internal-format
  msgid "variable-sized object may not be initialized except with an empty initializer"
  msgstr "Objekt variabler GrÃ¶ÃŸe darf nicht initialisiert werden, auÃŸer mit einem leeren Initialisierer"
  
! #: c/c-parser.cc:6455
  #, gcc-internal-format
  msgid "ISO C forbids empty initializer braces before C23"
  msgstr "ISO-C unterstÃ¼tzt leere Initialisierungsklammern erst ab C23"
  
! #: c/c-parser.cc:6544
  #, gcc-internal-format
  msgid "obsolete use of designated initializer with %<:%>"
  msgstr "veraltete Verwendung einer bestimmten Initialisierung mit %<:%>"
  
! #: c/c-parser.cc:6700
  #, gcc-internal-format
  msgid "ISO C forbids specifying range of elements to initialize"
  msgstr "ISO-C verbietet die Angabe eines zu initialisierenden Elementebereiches"
  
! #: c/c-parser.cc:6712
  #, gcc-internal-format
  msgid "ISO C90 forbids specifying subobject to initialize"
  msgstr "ISO-C90 verbietet die Angabe von zu initialisierenden Unterobjekten"
  
! #: c/c-parser.cc:6720
  #, gcc-internal-format
  msgid "obsolete use of designated initializer without %<=%>"
  msgstr "veraltete Verwendung einer bestimmten Initialisierung ohne %<=%>"
  
! #: c/c-parser.cc:7007 cp/parser.cc:13742
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested in %<#pragma acc loop%>"
  msgstr "innere Schleifen mÃ¼ssen in %<#pragma acc loop%> perfekt geschachtelt sein"
  
! #: c/c-parser.cc:7014 cp/parser.cc:13749
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested with %<ordered%> clause"
  msgstr "innere Schleifen mÃ¼ssen mit der %<ordered%>-Klausel perfekt geschachtelt sein"
  
! #: c/c-parser.cc:7021 cp/parser.cc:13756
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested with %<reduction%> %<inscan%> clause"
  msgstr "innere Schleifen mÃ¼ssen mit der %<reduction%>-%<inscan%>-Klausel perfekt verschachtelt sein"
  
! #: c/c-parser.cc:7028
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested in %<pragma omp tile%>"
  msgstr "innere Schleifen mÃ¼ssen in %<#pragma omp tile%> perfekt geschachtelt sein"
  
! #: c/c-parser.cc:7084 c/c-parser.cc:7239 cp/parser.cc:12633 cp/parser.cc:12783
! #: cp/parser.cc:50777
  #, gcc-internal-format
  msgid "mixing OpenMP directives with attribute and pragma syntax on the same statement"
  msgstr "Vermischung von OpenMP-Direktiven mit Attribut- und Pragma-Syntax in ein und derselben Anweisung"
  
! #: c/c-parser.cc:7092 cp/parser.cc:12641
  #, gcc-internal-format
  msgid "OpenMP %<omp::decl%> attribute on a statement"
  msgstr "OpenMP-Attribut %<omp::decl%> an einer Anweisung"
  
! #: c/c-parser.cc:7116 c/c-parser.cc:7337 c/c-parser.cc:27447 cp/parser.cc:12665
! #: cp/parser.cc:50757 cp/parser.cc:50896
  #, gcc-internal-format
  msgid "unknown OpenMP directive name in %qs attribute argument"
  msgstr "unbekannter OpenMP-Direktiven-Name im Argument des Attributs %qs"
  
! #: c/c-parser.cc:7208 cp/parser.cc:12752
  #, gcc-internal-format
  msgid "OpenMP construct among %<omp::directive%> attributes requires all %<omp::directive%> attributes on the same statement to be in the same %<omp::sequence%>"
  msgstr "OpenMP-Konstrukt inmitten der %<omp::directive%>-Attribute erfordert, dass alle %<omp::directive%>-Attribute derselben Anweisung in derselben %<omp::sequence%> liegen"
  
! #: c/c-parser.cc:7216 cp/parser.cc:12760
  #, gcc-internal-format
  msgid "multiple OpenMP standalone directives among %<omp::directive%> attributes must be all within the same %<omp::sequence%>"
  msgstr "mehrere OpenMP-Â»standaloneÂ«-Direktiven unter den %<omp::directive%>-Attributen mÃ¼ssen sich alle innerhalb derselben %<omp::sequence%> befinden"
  
! #: c/c-parser.cc:7228 cp/parser.cc:12772
  #, gcc-internal-format
  msgid "standalone OpenMP directives in %<omp::directive%> attribute can only appear on an empty statement"
  msgstr "OpenMP-Â»standaloneÂ«-Direktiven im Attribut %<omp::directive%> kÃ¶nnen nur in einer leeren Anweisung vorkommen"
  
! #: c/c-parser.cc:7349 cp/parser.cc:12902
  #, gcc-internal-format
  msgid "mixing OpenMP directives with attribute and pragma syntax on the same declaration"
  msgstr "Vermischung von OpenMP-Direktiven mit Attribut- und Pragma-Syntax in derselben Deklaration"
  
! #: c/c-parser.cc:7407 cp/parser.cc:15356
  #, gcc-internal-format
  msgid "%qs attribute does not take any arguments"
  msgstr "Attribut %qs akzeptiert keine Argumente"
  
! #: c/c-parser.cc:7504
  #, gcc-internal-format
  msgid "ISO C forbids label declarations"
  msgstr "ISO-C verbietet Markendeklarationen"
  
! #: c/c-parser.cc:7510 c/c-parser.cc:7702 c/c-parser.cc:7728
  #: c/gimple-parser.cc:467
  #, gcc-internal-format
  msgid "expected declaration or statement"
  msgstr "Deklaration oder Anweisung erwartet"
  
! #: c/c-parser.cc:7629
  #, gcc-internal-format
  msgid "a label can only be part of a statement and a declaration is not a statement"
  msgstr "eine Marke kann nur Teil einer Anweisung sein, und eine Deklaration ist keine Anweisung"
  
! #: c/c-parser.cc:7649 c/c-parser.cc:7692
  #, gcc-internal-format
  msgid "ISO C90 forbids mixed declarations and code"
  msgstr "ISO-C90 verbietet gemischte Deklarationen und Code"
  
! #: c/c-parser.cc:7736
  #, gcc-internal-format
  msgid "expected %<}%> before %<else%>"
  msgstr "%<}%> vor %<else%> erwartet"
  
! #: c/c-parser.cc:7741 cp/parser.cc:13809
  #, gcc-internal-format
  msgid "%<else%> without a previous %<if%>"
  msgstr "%<else%> ohne vorheriges %<if%>"
  
! #: c/c-parser.cc:7776
  #, gcc-internal-format
  msgid "label at end of compound statement"
  msgstr "Marke am Ende einer Verbundanweisung"
--- 47774,48140 ----
  #. This can appear in many cases looking nothing like a
  #. function definition, so we don't give a more specific
  #. error suggesting there was one.
! #: c/c-parser.cc:3100 c/c-parser.cc:3142
  #, gcc-internal-format
  msgid "expected %<=%>, %<,%>, %<;%>, %<asm%> or %<__attribute__%>"
  msgstr "%<=%>, %<,%>, %<;%>, %<asm%> oder %<__attribute__%> erwartet"
  
! #: c/c-parser.cc:3109
  #, gcc-internal-format
  msgid "ISO C forbids nested functions"
  msgstr "ISO-C verbietet verschachtelte Funktionen"
  
! #: c/c-parser.cc:3391 c/c-parser.cc:9681 c/c-parser.cc:16029
! #: c/c-parser.cc:20755 cp/parser.cc:43042
  #, gcc-internal-format
  msgid "expected string literal"
  msgstr "Zeichenkettenliteral erwartet"
  
! #: c/c-parser.cc:3400
  #, gcc-internal-format
  msgid "ISO C11 does not support omitting the string in %qE"
  msgstr "das Weglassen der Zeichenkette in %qE wird von ISO C11 nicht unterstÃ¼tzt"
  
! #: c/c-parser.cc:3406
  #, gcc-internal-format
  msgid "expression in static assertion is not an integer"
  msgstr "Ausdruck in statischer Behauptung ist keine Ganzzahl"
  
! #: c/c-parser.cc:3415
  #, gcc-internal-format
  msgid "expression in static assertion is not an integer constant expression"
  msgstr "Ausdruck in statischer Behauptung ist kein konstanter Ganzzahlausdruck"
  
! #: c/c-parser.cc:3420
  #, gcc-internal-format
  msgid "expression in static assertion is not constant"
  msgstr "Ausdruck in statischer Behauptung ist nicht konstant"
  
! #: c/c-parser.cc:3427
  #, gcc-internal-format
  msgid "static assertion failed: %E"
  msgstr "statische Behauptung gescheitert: %E"
  
! #: c/c-parser.cc:3429 cp/semantics.cc:12469
  #, gcc-internal-format
  msgid "static assertion failed"
  msgstr "statische Behauptung gescheitert"
  
! #: c/c-parser.cc:3809
  #, gcc-internal-format
  msgid "%<_Atomic%> in Objective-C"
  msgstr "%<_Atomic%> in Objective-C"
  
! #: c/c-parser.cc:3812
  #, gcc-internal-format
  msgid "ISO C99 does not support the %<_Atomic%> qualifier"
  msgstr "ISO-C99 unterstÃ¼tzt den %<_Atomic%>-Qualifizierer nicht"
  
! #: c/c-parser.cc:3815
  #, gcc-internal-format
  msgid "ISO C90 does not support the %<_Atomic%> qualifier"
  msgstr "ISO-C90 unterstÃ¼tzt den %<_Atomic%>-Qualifizierer nicht"
  
! #: c/c-parser.cc:3843
  #, gcc-internal-format
  msgid "%<_Atomic%> applied to a qualified type"
  msgstr "%<_Atomic%> auf einen qualifizierten Typen angewandt"
  
! #: c/c-parser.cc:3873
  #, gcc-internal-format
  msgid "%<__GIMPLE%> only valid with %<-fgimple%>"
  msgstr "%<__GIMPLE%> ist nur mit %<-fgimple%> gÃ¼ltig"
  
! #: c/c-parser.cc:3910
  #, gcc-internal-format
  msgid "empty enum is invalid"
  msgstr "Leeres Enum ist ungÃ¼ltig"
  
! #: c/c-parser.cc:3921
  #, gcc-internal-format
  msgid "cannot use keyword %qs as enumeration constant"
  msgstr "das SchlÃ¼sselwort %qs kann nicht als AufzÃ¤hlungskonstante verwendet werden"
  
  #. Otherwise, a more generic error message.
! #: c/c-parser.cc:3933 c/c-parser.cc:5165 c/c-parser.cc:6023 c/c-parser.cc:6040
! #: c/c-parser.cc:6625 c/c-parser.cc:7534 c/c-parser.cc:9548 c/c-parser.cc:9631
! #: c/c-parser.cc:10611 c/c-parser.cc:10926 c/c-parser.cc:10935
! #: c/c-parser.cc:11548 c/c-parser.cc:11836 c/c-parser.cc:11867
! #: c/c-parser.cc:13234 c/c-parser.cc:13808 c/c-parser.cc:13846
! #: c/c-parser.cc:14160 c/c-parser.cc:14211 c/c-parser.cc:14371
! #: c/c-parser.cc:14401 c/c-parser.cc:14409 c/c-parser.cc:14438
! #: c/c-parser.cc:14451 c/c-parser.cc:14757 c/c-parser.cc:14881
! #: c/c-parser.cc:15466 c/c-parser.cc:15519 c/c-parser.cc:15535
! #: c/c-parser.cc:15581 c/c-parser.cc:16602 c/c-parser.cc:16647
! #: c/c-parser.cc:19523 c/c-parser.cc:19660 c/c-parser.cc:20526
! #: c/c-parser.cc:23585 c/c-parser.cc:26783 c/c-parser.cc:26970
! #: c/gimple-parser.cc:1981 c/gimple-parser.cc:2028 cp/parser.cc:9873
! #: cp/parser.cc:35390 cp/parser.cc:38622 cp/parser.cc:41867 cp/parser.cc:42059
! #: cp/parser.cc:49849 cp/parser.cc:53151
  #, gcc-internal-format
  msgid "expected identifier"
  msgstr "Bezeichner erwartet"
  
! #: c/c-parser.cc:4006
  #, gcc-internal-format
  msgid "ISO C does not support specifying %<enum%> underlying types before C23"
  msgstr "ISO C unterstÃ¼tzt die Angabe eines Basistyps fÃ¼r %<enum%> erst ab C23"
  
! #: c/c-parser.cc:4015
  #, gcc-internal-format
  msgid "%<enum%> declared both with and without fixed underlying type"
  msgstr "%<enum%> wurde sowohl mit als auch ohne zugrundeliegendem festen Typ deklariert"
  
! #: c/c-parser.cc:4038
  #, gcc-internal-format
  msgid "no %<enum%> underlying type specified"
  msgstr "kein zugrundeliegender Typ fÃ¼r %<enum%> angegeben"
  
! #: c/c-parser.cc:4042
  #, gcc-internal-format
  msgid "invalid %<enum%> underlying type"
  msgstr "ungÃ¼ltiger Basistyp fÃ¼r %<enum%>"
  
! #: c/c-parser.cc:4072
  #, gcc-internal-format
  msgid "%<enum%> underlying type incompatible with previous declaration"
  msgstr "der auf %<enum%> basierende Typ ist zu der vorherigen Deklaration inkompatibel"
  
! #: c/c-parser.cc:4148 cp/parser.cc:22437
  #, gcc-internal-format
  msgid "comma at end of enumerator list"
  msgstr "Komma am Ende der AufzÃ¤hlungsliste"
  
! #: c/c-parser.cc:4154 c/c-parser.cc:20803 cp/parser.cc:43105
  #: go/gofrontend/embed.cc:424
  #, gcc-internal-format
  msgid "expected %<,%> or %<}%>"
  msgstr "%<,%> oder %<}%> erwartet"
  
! #: c/c-parser.cc:4197
  #, gcc-internal-format
  msgid "ISO C forbids forward references to %<enum%> types"
  msgstr "ISO-C verbietet VorwÃ¤rts-Referenzen auf %<enum%>-Typen"
  
! #: c/c-parser.cc:4322
  #, gcc-internal-format
  msgid "expected class name"
  msgstr "Klassenname erwartet"
  
! #: c/c-parser.cc:4344
  #, gcc-internal-format
  msgid "extra semicolon in struct or union specified"
  msgstr "zusÃ¤tzliches Semikolon in Â»structÂ« oder Â»unionÂ« angegeben"
  
! #: c/c-parser.cc:4373
  #, gcc-internal-format
  msgid "no semicolon at end of struct or union"
  msgstr "kein Semikolon am Ende von Â»structÂ« oder Â»unionÂ«"
  
! #: c/c-parser.cc:4490 c/c-parser.cc:6365
  #, gcc-internal-format
  msgid "expected specifier-qualifier-list"
  msgstr "Spezifizierer-Qualifizierer-Liste erwartet"
  
! #: c/c-parser.cc:4501
  #, gcc-internal-format
  msgid "ISO C forbids member declarations with no members"
  msgstr "ISO-C verbietet Elementdeklarationen ohne Elemente"
  
! #: c/c-parser.cc:4595
  #, gcc-internal-format
  msgid "expected %<,%>, %<;%> or %<}%>"
  msgstr "%<,%>, %<;%> oder %<}%> erwartet"
  
! #: c/c-parser.cc:4602
  #, gcc-internal-format
  msgid "expected %<:%>, %<,%>, %<;%>, %<}%> or %<__attribute__%>"
  msgstr "%<:%>, %<,%>, %<;%>, %<}%> oder %<__attribute__%> erwartet"
  
! #: c/c-parser.cc:4674
  #, gcc-internal-format
  msgid "%<typeof%> applied to a bit-field"
  msgstr "%<typeof%> auf ein Bitfeld angewandt"
  
! #: c/c-parser.cc:4996
  #, gcc-internal-format
  msgid "expected identifier or %<(%>"
  msgstr "Bezeichner oder %<(%> erwartet"
  
! #: c/c-parser.cc:5058
  #, gcc-internal-format
  msgid "%<static%> may not be used with an unspecified variable length array size"
  msgstr "%<static%> darf nicht verwendet werden, wenn die variable ArraylÃ¤nge nicht angegeben ist"
  
! #: c/c-parser.cc:5066
  #, gcc-internal-format
  msgid "%<static%> may not be used without an array size"
  msgstr "%<static%> darf ohne eine ArraygrÃ¶ÃŸe nicht verwendet werden"
  
! #: c/c-parser.cc:5226
  #, gcc-internal-format
  msgid "ISO C requires a named argument before %<...%> before C23"
  msgstr "ISO-C erfordert ein benanntes Argument vor %<...%>, vor C23"
  
! #: c/c-parser.cc:5351
  #, gcc-internal-format
  msgid "expected declaration specifiers or %<...%>"
  msgstr "Deklarationsspezifizierer oder %<...%> erwartet"
  
! #: c/c-parser.cc:5581
  #, gcc-internal-format
  msgid "parentheses must be omitted if attribute argument list is empty"
  msgstr "Klammern mÃ¼ssen weggelassen werden, wenn die Argumentenliste des Attributs leer ist"
  
! #: c/c-parser.cc:5869 cp/parser.cc:30792
  #, gcc-internal-format
  msgid "expected OpenMP directive name"
  msgstr "Name einer OpenMP-Direktive erwartet"
  
! #: c/c-parser.cc:5916 cp/parser.cc:30848
  #, gcc-internal-format
  msgid "expected %<directive%> or %<sequence%>"
  msgstr "%<directive%> oder %<sequence%> erwartet"
  
! #: c/c-parser.cc:6061 cp/parser.cc:31016
  #, gcc-internal-format
  msgid "%<omp::%E%> attribute requires argument"
  msgstr "Attribut %<omp::%E%> erfordert Argument"
  
! #: c/c-parser.cc:6077 cp/parser.cc:31032
  #, gcc-internal-format
  msgid "%qE attribute does not take any arguments"
  msgstr "Attribut %qE akzeptiert keine Argumente"
  
! #: c/c-parser.cc:6198
  #, gcc-internal-format
  msgid "ISO C does not support %<[[]]%> attributes before C23"
  msgstr "ISO-C unterstÃ¼tzt %<[[]]%>-Attribute erst ab C23"
  
! #: c/c-parser.cc:6442 c/c-parser.cc:6508 c/c-typeck.cc:9659
  #, gcc-internal-format
  msgid "variable-sized object may not be initialized except with an empty initializer"
  msgstr "Objekt variabler GrÃ¶ÃŸe darf nicht initialisiert werden, auÃŸer mit einem leeren Initialisierer"
  
! #: c/c-parser.cc:6500
  #, gcc-internal-format
  msgid "ISO C forbids empty initializer braces before C23"
  msgstr "ISO-C unterstÃ¼tzt leere Initialisierungsklammern erst ab C23"
  
! #: c/c-parser.cc:6589
  #, gcc-internal-format
  msgid "obsolete use of designated initializer with %<:%>"
  msgstr "veraltete Verwendung einer bestimmten Initialisierung mit %<:%>"
  
! #: c/c-parser.cc:6745
  #, gcc-internal-format
  msgid "ISO C forbids specifying range of elements to initialize"
  msgstr "ISO-C verbietet die Angabe eines zu initialisierenden Elementebereiches"
  
! #: c/c-parser.cc:6757
  #, gcc-internal-format
  msgid "ISO C90 forbids specifying subobject to initialize"
  msgstr "ISO-C90 verbietet die Angabe von zu initialisierenden Unterobjekten"
  
! #: c/c-parser.cc:6765
  #, gcc-internal-format
  msgid "obsolete use of designated initializer without %<=%>"
  msgstr "veraltete Verwendung einer bestimmten Initialisierung ohne %<=%>"
  
! #: c/c-parser.cc:7052 cp/parser.cc:13744
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested in %<#pragma acc loop%>"
  msgstr "innere Schleifen mÃ¼ssen in %<#pragma acc loop%> perfekt geschachtelt sein"
  
! #: c/c-parser.cc:7059 cp/parser.cc:13751
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested with %<ordered%> clause"
  msgstr "innere Schleifen mÃ¼ssen mit der %<ordered%>-Klausel perfekt geschachtelt sein"
  
! #: c/c-parser.cc:7066 cp/parser.cc:13758
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested with %<reduction%> %<inscan%> clause"
  msgstr "innere Schleifen mÃ¼ssen mit der %<reduction%>-%<inscan%>-Klausel perfekt verschachtelt sein"
  
! #: c/c-parser.cc:7073
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested in %<pragma omp tile%>"
  msgstr "innere Schleifen mÃ¼ssen in %<#pragma omp tile%> perfekt geschachtelt sein"
  
! #: c/c-parser.cc:7129 c/c-parser.cc:7284 cp/parser.cc:12635 cp/parser.cc:12785
! #: cp/parser.cc:50836
  #, gcc-internal-format
  msgid "mixing OpenMP directives with attribute and pragma syntax on the same statement"
  msgstr "Vermischung von OpenMP-Direktiven mit Attribut- und Pragma-Syntax in ein und derselben Anweisung"
  
! #: c/c-parser.cc:7137 cp/parser.cc:12643
  #, gcc-internal-format
  msgid "OpenMP %<omp::decl%> attribute on a statement"
  msgstr "OpenMP-Attribut %<omp::decl%> an einer Anweisung"
  
! #: c/c-parser.cc:7161 c/c-parser.cc:7382 c/c-parser.cc:27493 cp/parser.cc:12667
! #: cp/parser.cc:50816 cp/parser.cc:50955
  #, gcc-internal-format
  msgid "unknown OpenMP directive name in %qs attribute argument"
  msgstr "unbekannter OpenMP-Direktiven-Name im Argument des Attributs %qs"
  
! #: c/c-parser.cc:7253 cp/parser.cc:12754
  #, gcc-internal-format
  msgid "OpenMP construct among %<omp::directive%> attributes requires all %<omp::directive%> attributes on the same statement to be in the same %<omp::sequence%>"
  msgstr "OpenMP-Konstrukt inmitten der %<omp::directive%>-Attribute erfordert, dass alle %<omp::directive%>-Attribute derselben Anweisung in derselben %<omp::sequence%> liegen"
  
! #: c/c-parser.cc:7261 cp/parser.cc:12762
  #, gcc-internal-format
  msgid "multiple OpenMP standalone directives among %<omp::directive%> attributes must be all within the same %<omp::sequence%>"
  msgstr "mehrere OpenMP-Â»standaloneÂ«-Direktiven unter den %<omp::directive%>-Attributen mÃ¼ssen sich alle innerhalb derselben %<omp::sequence%> befinden"
  
! #: c/c-parser.cc:7273 cp/parser.cc:12774
  #, gcc-internal-format
  msgid "standalone OpenMP directives in %<omp::directive%> attribute can only appear on an empty statement"
  msgstr "OpenMP-Â»standaloneÂ«-Direktiven im Attribut %<omp::directive%> kÃ¶nnen nur in einer leeren Anweisung vorkommen"
  
! #: c/c-parser.cc:7394 cp/parser.cc:12904
  #, gcc-internal-format
  msgid "mixing OpenMP directives with attribute and pragma syntax on the same declaration"
  msgstr "Vermischung von OpenMP-Direktiven mit Attribut- und Pragma-Syntax in derselben Deklaration"
  
! #: c/c-parser.cc:7452 cp/parser.cc:15358
  #, gcc-internal-format
  msgid "%qs attribute does not take any arguments"
  msgstr "Attribut %qs akzeptiert keine Argumente"
  
! #: c/c-parser.cc:7549
  #, gcc-internal-format
  msgid "ISO C forbids label declarations"
  msgstr "ISO-C verbietet Markendeklarationen"
  
! #: c/c-parser.cc:7555 c/c-parser.cc:7747 c/c-parser.cc:7773
  #: c/gimple-parser.cc:467
  #, gcc-internal-format
  msgid "expected declaration or statement"
  msgstr "Deklaration oder Anweisung erwartet"
  
! #: c/c-parser.cc:7674
  #, gcc-internal-format
  msgid "a label can only be part of a statement and a declaration is not a statement"
  msgstr "eine Marke kann nur Teil einer Anweisung sein, und eine Deklaration ist keine Anweisung"
  
! #: c/c-parser.cc:7694 c/c-parser.cc:7737
  #, gcc-internal-format
  msgid "ISO C90 forbids mixed declarations and code"
  msgstr "ISO-C90 verbietet gemischte Deklarationen und Code"
  
! #: c/c-parser.cc:7781
  #, gcc-internal-format
  msgid "expected %<}%> before %<else%>"
  msgstr "%<}%> vor %<else%> erwartet"
  
! #: c/c-parser.cc:7786 cp/parser.cc:13811
  #, gcc-internal-format
  msgid "%<else%> without a previous %<if%>"
  msgstr "%<else%> ohne vorheriges %<if%>"
  
! #: c/c-parser.cc:7821
  #, gcc-internal-format
  msgid "label at end of compound statement"
  msgstr "Marke am Ende einer Verbundanweisung"
*************** msgstr "Marke am Ende einer Verbundanwei
*** 48135,49632 ****
  #. c_parser_skip_until_found stops at a closing nesting
  #. delimiter without consuming it, but here we need to consume
  #. it to proceed further.
! #: c/c-parser.cc:7833 c/c-parser.cc:7837 c/c-parser.cc:8345
! #: c/gimple-parser.cc:716 c/gimple-parser.cc:2520